diff --git a/.DS_Store b/.DS_Store deleted file mode 100644 index aba0c60f0..000000000 Binary files a/.DS_Store and /dev/null differ diff --git a/.gitignore b/.gitignore index 1e436d398..dd4a6aca2 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ src/*.o */.DS_Store .DS_Store pro/.DS_Store +*.pyc diff --git a/Makefile b/Makefile index 2baa87b9e..01627a02e 100644 --- a/Makefile +++ b/Makefile @@ -44,8 +44,9 @@ all : # Used to (re)make the documentation files # doc : - $(MAKE) -C doc clean - $(MAKE) -C doc all + $(MAKE) -C $(MAKE) -C docs/sphinx/ clean + $(MAKE) -C $(MAKE) -C docs/sphinx/ html singlehtml latexpdf + $(MAKE) -C $(MAKE) -C docs/sphinx/ clean_tmp # # Install things in their proper places in $(INSTALL_DIR) # diff --git a/RELEASE_NOTES b/RELEASE_NOTES deleted file mode 100644 index fbb1fa849..000000000 --- a/RELEASE_NOTES +++ /dev/null @@ -1,5796 +0,0 @@ -v5_11_0 -Tag for final eBOSS pipeline -JEB (2018-09-24) - -Removing exposure 258988 of plate 9438 mjd 58125 because of trail in data -- pro/spec2d/spplan2d.pro - -Added iterative sky-subtraction. Basically we just perform the -sky subtraction two times. This reduces the average sky residuals. -Added nskyiter option to spreduce2d.pro -- pro/spec2d/spreduce2d.pro -- pro/spec2d/spreduce.pro -- pro/spec2d/extract_object.pro -- pro/spec2d/skysubtract_iter.pro - -Fixed bug on the djs_median calls where the reflect option was -not correctly implemented. This was causing some extra residuals -near the edges of the spectra. -- spflux_v5.pro -- spcoadd_v5.pro -- skysubtract.pro -- extract_bundle_image.pro -- combine1fiber.pro - - -------------------------------------------------------------------------------- -v5_10_11 -JEB (2018-07-24) - -Implemented DESI stellar templates for flux calibration -- pro/spec2d/spflux_read_desi.pro (new) -- pro/spec2d/spflux_v5.pro -Tests on this change are documented in -https://trac.sdss.org/attachment/wiki/eBOSS/Pipeline/desi_stars_in_eboss.pdf - - -JEB( 2018-07-09) - -Increased by one digit EXPID header keywords to solve -issue with plate 6138-56598 which contains more than 100 frames -- bolton_biasgen.pro -- spbiasgen.pro -- spcoadd_v5.pro -- spflatgen.pro -- spflatten2.pro -- bin/reformat_spectra.py - -------------------------------------------------------------------------------- -v5_10_10 -JEB (2018-04-15) - -Fixed bug (nPoly was still set to 2 while it should be 0 for the new -extraction) -- pro/spec2d/spcalib.pro - -Fixed MAG field in eboss23 ELG plates with FIBER2MAG from DECals data. -This modification happened directly in $SPECLOG_DIR. - - -------------------------------------------------------------------------------- -v5_10_9 - -JEB (2018-03-02) - -Implementation of background fit in extraction provided by Julien Guy. -The background contribution is removed from the full 2D image using -the flux between bundles. -- pro/spec2d/extract_bundle_image.pro -- pro/spec2d/extract_bundle_row.pro -- pro/spec2d/extract_object.pro - -Modified algorithm to compute plate S/N for ELGs. We are doing similar than -the SOS, using z-band fluxes free of emission lines. -We did not implement the artificial scaling of S/N values for the offline -reductions. -- pro/spec2d/platesn.pro - -This version will require use of version 1_29 of SPECFLAT -- etc/idlspec2d.module - -------------------------------------------------------------------------------- -v5_10_8 - -VM (2018-01-23) -Modifications for RM plates to have the original depth of B=10 and R=22 -Hardcoded plateids !! - -Changes in the following routines --pro/apo2d/quickextract.pro : Multiplied SN2 values by a scale factor=0.8 --pro/apo2d/apo_plotsn.pro : For RM plates, use plotsn_rm.pro - -Adding: --pro/spec2d/plotsn_rm.pro : Hardcoded scale factor = 0.8 -------------------------------------------------------------------------------- - -v5_10_7 - -VM (2017-10-30) --pro/spec2d/sdssproc.pro : Change in sdssproc_badformat routine to take care - of the shift in R2 camera transient location after electronics change on MJD 58055 - -JEB -- pro/spec2d/sdssproc.pro: updated gain values for all cameras - -------------------------------------------------------------------------------- -v5_10_6 - -VM (2017-10-03) --examples/opLimits.par : new SN2 thresholds 8 and 18 for blue and red cameras respectively. --pro/apo2d/quickextract_elg.pro : new ELG scalefactor 2.11 instead of 2.58 to match the new depth of 18 in red cameras --pro/spec2d/plotsn_elg.pro : new ELG scalefactor 2.11 instead of 2.58 to match the new eboss depth of 18 in red cameras - -JEB (2017-05-05) -- etc/lamphgcdne.dat : using MANGA list of lines that excludes faint ones. - - -JEB (2017-03-03) -- pro/spec2d/spcalib.pro: check if traces are too close only over valid pixels [#317] -- pro/spec2d/trace320crude.pro: use mpfitfun instead of djs_polyfit as suggested by David Law [#2068] - -VM(2016-12-21) Updating XMID & WAVEMID ranges for spectrograph 2 in examples/opLimits.par - -------------------------------------------------------------------------------- -v5_10_3 -VM (2016-11-19) SoS modifications --changed the scale factor in quickextract_elg.pro and plotsn_elg.pro - -JEB -- bin/fluxcorr_prior.py: fixed a bug (removing '.gz' from the framefile name) -- bin/reformat_spectra_daily: changed mkdir for makedirs to create spectra/full and spectra/lite -- bin/reformat_spectra_batch: changed mkdir for makedirs to create spectra/full and spectra/lite - -------------------------------------------------------------------------------- -v5_10_2 -VM (2016-09-09) SoS modifications to handle the ELG plates --Based on keyword 'programname' in plugmap files, ELG plates will be treated differently for SN2- - measurements. Use sky free wavelengths in z-band to measure meansn2. --Included a scale factor in quickextract_elg.pro and plotsn_elg.pro to tune the ELG depth. --Included a constant (=0.083 corresponding to the scalefactor) in the equation on SN plots; plotsn_elg.pro --Updated opSNlimits.par to include z-band with a slope 0.6 --Updated new gain measurements post 2016 Summer shutdown --Updated plotsn to exclude objtype='NA' - -Adding: -- pro/apo2d/quickextract_elg.pro -- pro/spec2d/plotsn_elg.pro - -Updating: -- pro/apo2d/aporeduce.pro -- pro/apo2d/quicktrace.pro -- pro/apo2d/apo_plotsn.pro -- pro/spec2d/sdssproc.pro -- opfiles/opSNlimits.par - -------------------------------------------------------------------------------- -v5_10_1 -JEB (2016-06-17) Post DR14 tag for daily reductions - -- Few bugs fixed after DR14 run - -------------------------------------------------------------------------------- -v5_10_0 - -JEB (2017-01-19) Fix for DR14 tag -- pro/spec1d/spreduce1d.pro: change of specobjid type from LONG64 to ULONG64 -- pro/spec1d/readspec.pro: adding /unsigned keyword to get correct values for SPECOBJID in zans structure -- bin/reformat_spectra.py: replace fitsio by astropy.io.fits (fitsio crashes with uint64 values) in tables - -JEB (2016-05-24) Tag for DR14. -New python fluxcorr code to avoid biases for low S/N spectra (by Stephen Bailey) -IDL code to perform ADR corrections on individual exposures (by Daniel Margala, S. Bailey and J. Bautista) - -Adding: -- bin/fluxcorr_prior.py -- pro/spec2d/xythrucorr.pro -- pro/spec2d/fiberfraction.pro -Updating: -- pro/spec2d/spcoadd_v5.pro -- pro/spec2d/spcombine_v5.pro -- pro/spec2d/spflux_v5.pro -- pro/spec2d/spfluxcorr_v5.pro -- pro/spec2d/spframe_read.pro - -- etc/idlspec2d.module : adding platedesign and yannytools modules, required by the new changes. - - VM (2016-02-29) --pro/apo2d/quicktrace.pro : Hack to avoid resetting the magnitudes to 0 for OBJTYE = NA for ELG test plates (8954 to 8959) - - -------------------------------------------------------------------------------- -v5_9_1 -Tag for post-DR13 daily runs - -VM (2015-11-13) --pro/apo2d/quicktrace.pro : Hack to avoid resetting the magnitudes to 0 for OBJTYE = NA for QSO test plates (8788 to 8793) --bin/guidermon_checkin.sh : updated the script to point to correct SPECLOG directory -v5_9_0 (2015-11-05) -Fix of the previous v5_9_0 for DR13 - - -JEB (2015-10-12) - -- pro/plate/plate_to_string.pro: - Correcting plate number definition for plates >= 10k -- pro/spec1d/platemerge.pro: - Correcting trailing blank spaces when generating spAll for some programs - -------------------------------------------------------------------------------- -v5_9_0 -Tag for DR13 - -JEB (2015-09-24) - -- bin/reformat_spectra_daily: - Script to generate spec files after the daily reductions -- bin/uurundaily_script: - Added reformat_spectra_daily command -- bin/reformat_spectra.py: - If update option on, look for existing spec files per plate-mjd-fiber - (not per plate only) -- bin/reformat_spectra_batch: - Include --update option for catch up of missing plates using the utah cluster -- pro/spec2d/spplan2d.pro: - Add dr13 keyword to exclude eboss plates and some RM plates. - -------------------------------------------------------------------------------- -v5_8_2 -Test tag for DR13 - -JEB (2015-09-18) - -platelist.pro: adding eBOSS LRGs and ELGs to the N_gal column and eBOSS quasars - to N_QSO column in platelist. - Added eBOSS LRGs to %LRG1 column in platequality. - Added eBOSS quasars to %QSO column in platequality. - Added a %ELG column in platequality. - - -JEB (2015-09-05) 6-digit plate number armaggedon fixed, but not tested yet with a - problematic plate - Added pro/plate/plate_to_string.pro to translate plate numbers into - strings. - -------------------------------------------------------------------------------- - -VM : v5_8_1 (2015-08-11) -Adding bin/speclog_svn_update.sh : script called by the cronjob to auto update the $SPECLOG_DIR every morning -Changes in the following files : -bin/sos_apostart : disabled the ssh agent -bin/sos_runnerd.py : disabled doBookKeeping -examples/opLimits.par : updated WAVEMID values post 2015 summershutdown -------------------------------------------------------------------------------- - -v5_8_0 (2015-06-12) -== New extraction algorithm by Julien Guy == - -For details, see notes on the new extraction on -https://trac.sdss.org/wiki/eBOSS/Pipeline/v5_8_0 - -sdssproc.pro : - - transmit the rdnoise vector - -extract_object.pro : - - reject highrej=4 lowrej=4 - -extract_bundle_image : - - new argument :use_image_ivar=use_image_ivar - - saves chi2pdf - - rejection of pixels based on chi2pdf per spectrum - -extract_bundle_row : - - new args rdnoise, chi2pdf=chi2pdf, use_image_ivar=use_image_ivar - - lots of changes (see notes) - -skysubtract.pro : - - create model of ivar (complex) - - fit - - put back variane - - compute error on sky model - -combine1fiber.pro : - - create model of ivar (simple) - - fit - - put back variane - - compute error on sky model - -spflux_v5.pro : - - outlier rejection when combining several exposures of std star - -spfluxcorr_v5.pro : - - don't fit spfluxcorr if very few valid data - -spcalib.pro : - - highrej = 100 lowrej = 100 (100 sigma!!) - - use_image_ivar=1 ; JG more robust to trace offsets for arcs - -=== New S/N calculations for plates == -Mode details on : -https://trac.sdss.org/wiki/eBOSS/Pipeline/PlateSN - -fitsn_jb: - - new formula that applies for a wider magnitude range - -general_sn: - - implementation of formula above S/N = a*flux/ sqrt( flux + b) - -plotsn_jb: - - modified to deal with new S/N fits - -opSNlimits.par: - - new magnitude limits: [16., 24.] for all bands - - - -------------------------------------------------------------------------------- -v5_7_13 (2015-05-08) JEB - -spreduce1d: fixed bug in the delta redshift to velocity conversion - - -------------------------------------------------------------------------------- -v5_7_12 - -VM 2015-04-21: -opLimits.par : Changed b1 camera XSIGMA/WSIGMA tolerances to >1.25 (yellow) and >1.30 (red) - -SJB 2015-04-13: -apofix: correct logic when SOS logfile doesn't exist and print more - helpful status/error messages. - -VM 2015-03-23: -quicktrace : hack to ignore OBJTYPE="NA" only for plateid > 7517 (eboss) - -------------------------------------------------------------------------------- -v5_7_9 (2015-03-10) JEB - -uuplotspec: improvements for visual inspection, new database. - People can now login with trac.sdss.org username and password and - save inspections. - We did this to visual inspect LRGs and obtain n(z). - -plotsn: coeffs keyword to recover fitsn results for each spectro and each band -plotsn: use dereddened magnitudes in all fits -platesn: same as plotsn - -opSnlimits: new slopes derived from the median distribution of slopes, when these were - let free in a test sample. The slopes are still fixed. - -VM 2015-02-23 -opSnlimits : g and i band sn fitting slope changed to -0.32 and -0.36 - - -QUICKTRACE: Hack to ignore the OBJTYPE='NA' targets to address ticket #2184. - -------------------------------------------------------------------------------- -v5_7_6 (2014-11-05) JEB - -VM 2014-12-06: -quickextract : adding 'splitsky' to r1 camera for MJD ge 56858 and r2 ge 55300 -readplugmap : edit for new extinctiion coefficients (Shalfy 2011) -reject_science : removed the last override 'qbad = 0' - -JEB 2014-11-05: -spreduce1d: change redshift range for eboss and sequels plates: - from [-0.01,1.] to [-0.01,2.] -spreduce2d: adding splitsky to r1 camera for MJD ge 56858 due to strange - behaviour -platemerge: added eBOSS mask bits -plotspec: added eBOSS mask bits -uuplotspec: added eBOSS mask bits - -uubatchpbs: added stderr in each plate folder in addition to stdout - -SJB+JEB 2014-10-25: -sdssproc: updated r1 gain for CCD that was replaced summer 2014. - -------------------------------------------------------------------------------- -v5_7_5 (2014-10-10) SJB -Missing one commit to trunk for yet another sdss3 -> sdss4 change. -Committing that and tagging again. - -------------------------------------------------------------------------------- -v5_7_4 (2014-10-10) SJB -Tag for SOS - -SJB 2014-09-22: -sos_runnerd: make robust to blank PLATETYP keyword for bias and darks. -guidermon_checkin: observer@sos3 -> eboss@sdss4-eboss changes; not yet working -loadSN2Value: BOSS -> eBOSS - -SJB 2014-08-28: -sos_runnerd: make more robust if munged data is missing NAME keyword. - -SJB 2014-08-25: -platelist: fix bug when creating platelist with multiple run2d -platemerge: (re)add ability to write a single spAll file with multiple RUN2D - versions in it. -reformat_spectra.py : add --mjd option - -------------------------------------------------------------------------------- -v5_7_3 (2014-08-26) SJB -Tag for new season of daily eBOSS data processing. - -SJB 2014-08-25: -loadSN2Value : update for new platedb connection methods. -apofix : change /not_sos option to /force, and check for eboss@sdss4-eboss - rather than checking for running on sos or sos3.apo.nmsu.edu - -DJS 2014-08-24 -apod: only reduce eBOSS files, not MaNGA. (This is the very much simplified -script for running SOS, without connecting to platedb or svn.) - -------------------------------------------------------------------------------- -v5_7_2 (2014-07-23 ?) SJB -Tag for final DR12 run of post-BOSS data - -JCR 2014-07-23: -extract_object: Looks up file spSplitSky.par in $SPECLOG_DIR/opfiles for -plate and camera to determine if splitsky should occur. If plate and -camera are in that file, then splitsky does not occur. - -SJB 2014-05-23: -spreduce1d: fix parsing bug when spPlate files have a different prefix -or plateids that have more than 4 digits. regex to the rescue. - -SJB 2014-04-28: -rundaily_riemann_script: make sure to svn update speclog and platelist trunk, -not some tagged version - -------------------------------------------------------------------------------- -v5_7_1 (2014-04-24) SJB -Tag for continuing with daily processing post BOSS LSS DR12. -Code is identical except addition of spx_to_sdss.pro - -DJS 2014-04-22: -spec1d/spx_to_sdss.pro : converter of spectroperfectionism output -to spPlate format for testing. - -------------------------------------------------------------------------------- -v5_7_0 (2014-04-10) SJB -Tag for BOSS main survey DR12 - -SJB 2014-04-09: -SPPLAN2D: typo! Exclude 'test' exposures. Only 'excellent'. Smithers. -SPHDRFIX: Include exposure number in the splog line when changing something. -SDSS_PLATE_SORT (ticket 1896): - - Don't propagate upstream bug where failed position matches could still - have thing_id>0. Replace with thing_id=-1. Photo data already 0. - - Replace ra,dec of failed matches with plug_ra, plug_dec. - - Final result: - thing_id=-1 means failed match and photo data=0 for those. - ra,dec = position match if successful, otherwise plug_ra,plug_dec - -SJB 2014-04-08: -SPPLAN2D: check PLATETYP keyword to reject non-BOSS non-EBOSS data. -bin/getPlugmap : update call to catPlPlugMapM to keep freaking SqlAlchemy - warning messages out of our plugmap files. - -------------------------------------------------------------------------------- -v5_6_12 (2014-04-04) SJB -Second pre-DR12 tag. - -BATCHMERGE: re-enabled pngs with a /makepng option - -------------------------------------------------------------------------------- -v5_6_11 (2014-04-24) SJB -Tag for pre-DR12 testing. Will move to v5_7_x series when we think we are -ready to go for real. - -SJB 2014-04-04: -PLATEMERGE: removing re-reading plugmap hack for propagating eboss_target0, - in preparation for pre-DR12 testing. -SPCOADD_V5: allow missing spectrographs. Missing data have flux=ivar=0 - but still have valid plugmap propagated. -ZCOMPUTE: if all ivar=0, don't bother trying to compute a redshift -SPREDUCE1D: if all ivar=0, flag ZWARNING with NODATA -PLUG2TSOBJ: bug fix in determining indir - -SJB 2014-04-01: -SPPLAN2D: tweaks to give more informative warning messages. - -SJB 2014-03-27: -opfiles/washers.par, spec2d/readplugmap.pro : -Added final entries for washer usage at the end of BOSS. - -SJB 2014-03-25: -SDSSPROC: refactor to separate options for pixflat from badpix mask. -Change default to using both. Use /nopixflat and /nopixmask to turn -them off. Updated multiple other codes to handle changed defaults. -apo2d/*.pro : start using pixflat and pixmask for apo2d routines. ---> Not yet tested with end-to-end pipeline run - -SJB 2014-03-25: -pro/testsuite/check_cmass_changes.scr.pro -Added hooks for comparing two productions for how many targets changed -from good to bad, etc. - -SJB 2014-02-06: -PLATELIST: added hooks for updating interactive platelist website. - -MDO 2014-02-05 - -COMBSMALLCOLLIMATE: Updated offsets from data on 56691 , second test, in both comsmallcollimate and in sosactor - for the record (offsets are now stored in Hartmann.__init__(),specifically the "fudge" dictionary that is defined at line 73. - https://trac.sdss3.org/browser/repo/ops/actors/sosActor/trunk/python - /sosActor/utils/boss_collimate.py (MDO) - - -SJB 2014-02-02: -sos_runnerd.py : add check for MaNGA plates and skip them for SOS. - -Make sure to run against a new version of specflat that includes badpixel mask and pixbias for r2 holiday 2013 problems (56649) MDO - -SJB 2014-01-22: -READPLUGMAP, PLATEMERGE : Added hooks to propagate eboss_target0 flags from - plateHoles files. Includes code in platemerge to override plugmap in - spPlate -- this should be removed for the DR12 tag. - -COMBSMALLCOLLIMATE: Updated offsets from data on 56528 for the record (offsets - are now stored in Hartmann.__init__(),specifically the "fudge" - dictionary that is defined at line 100. - https://trac.sdss3.org/browser/repo/ops/actors/sopActor/trunk/python - /sopActor/utils/boss_collimate.py (MDO) - -PLUGHISTORY: Report for cart #18, and don't crash when trying to read - data for MANGA data (ie, plate 6655 on cart 1). - Only do SDSS-I/II and BOSS plates by looking at "platetype". - Report fibers plugged less than 95% of the time. -READPLUGMAP: Fix typo in #906 PSF/fiber2flux corrections (CPL) -SPECTRO_SUMMARY: Merged with version in boss/papers/OneDee. Added entries - from DR9 publications which weren't calculated here. (SJB) -SPFLUX_V5: Wrote new SPFLUX_BALMERFIX routine to address ticket #1958 - in simplest possible manner. Called on line 1054 of main routine. - Comment that out to restore previous behavior. (ASB, 2014-Jan-17) - -------------------------------------------------------------------------------- -v5_6_5 (2013-06-24) ASB -Candidate tag for DR11 galaxy LSS analysis -Built against: - elodie/v1_3 - specflat/v1_20 - idlutils/v5_5_10 - -BOLTON_BIASSUB, SDSSPROC: New code to deal with r2 power-supply bias - instability over MJD range [56352, 56371] (Ticket #1759). -COMBSMALLCOLLIMATE: Change offsets because focus ring changes on 56434 (MDO) -PLATELIST: exclude LITTLE_COVERAGE, UNPLUGGED, and BAD_TARGET fibers from - statistics for platelist. Ticket #1727. -SPREDUCE1D: Add ability to override default redshift-fitting range for - galaxy templates by using a file $SPECLOG_DIR/opfiles/spPlateZrange.par - (ticket #1084). - -templates/spEigenGal-56436.fits: Copy of galaxy templates pEigenGal-55740.fits - with an extrapolation further to the red to logwave=3.0730, such that - these can be used to z=2. - -------------------------------------------------------------------------------- -v5_6_4 (2013-01-22) SJB -New tag for SOS for high read noise warning. - -FINDSPEC: Fix to work with new behaviour of PLATELIST looking in RUN2D - subdir names for the platelist.fits file -RDNOISE_HISTORY: Skip hartmanns -SDSSPROC: Add warning for high read noise in addition to low read noise. -SOS_LOGS_CONCAT, SOS_LOGS_PLOTSKY: New procs for looking at summary - SOS log statistics - -------------------------------------------------------------------------------- -v5_6_3 (2013-01-22) MDO -Changed collimate offsets and r1 focus to minimize xsig/wsig - -MDO 2013-01-21: -collimate.pro: add offset for r1 so focus includes minimizing -xsig+wsig in regions used for SOS -combsmallcollimate.pro: change offsets for xsig/wsig problems -from temperature and focus ring changes - -BAW 2013-01-16: -bin/knownMissing.py: script to search for missing files in $SPECTRO_REDUX. - -SJB 2012-01-11: -rundaily_riemann_script: always use trunk for platelist. -Turn off platemerge to reduce load on master node; this is -now done in the morning batchmerge job. - -SJB 2012-01-10: -PLATELIST: Added /alldirs option to call to get_mjd_dir when using it -to get a list of possible run2d and run1d dirs. This is required because -of recent change to get_mjd_dir to by default only return numeric subdirs. - -------------------------------------------------------------------------------- -v5_6_2 (2012-12-28) Tag for SoS with new offset values for XMID and WAVEMID - -MDO 2012-12-18: -combsmallcollimate: change offsets from tests on 12-12 and 12-13 due to temperature and focus ring changes. - -ASB 2012-12-17: -SPECTRO_SUMMARY: exclude BAD_TARGET spectra from effective Nspectra count. - -SJB 2012-12-17: -PLATEMERGE: gzip spAll*.dat file for faster downloads. Leave fits file as is. - -SJB 2012-12-05: -SPREDUCE1D : allow RUN1D strings which don't match vX_Y_Z. - -PLATELIST: Added columns PROGRAMNAME and TILEID to platelist.txt and .html - --> resolves ticket 1716. -PLATEMERGE: Don't include public bad plates in spAll (e.g. 3698). - -------------------------------------------------------------------------------- -v5_6_1 (2012-11-29) Tag for SoS to ignore cart<10 data - -SJB 2012-11-29: -bin/reformat_spectra.py: fix COEFF0 keyword when trimming ivar=0 leading - pixels. Back propagate by hand into v5_5_12. -bin/copy_spPlan.py : refactor to only copy plans for good plate-mjd - unless --bad option -BATCHPBS: if topdir option is used to override BOSS_SPECTRO_REDUX, - put that into the batch script as well. - -SJB 2012-11-28: -bin/sos_filesequencer: don't process arc/flat/science for cart<10 - to protect BOSS from MaNGA tests. Process dark/bias from any cart - to allow afternoon checkout tests while APOGEE carts are loaded. - -------------------------------------------------------------------------------- -v5_6_0 (2012-11-16) Tag to reprocess all data; starts a new season toward DR11 - -ASB 2012-11-15: Added MATCH_SPALL (routine) and - CHECK_CMASS_CHANGES (script) in pro/testsuite - -SJB 2012-11-02: - SDSSPROC : Added warning for readnoise<1.0 which could mean - CCD voltages are wrong - -SJB 2012-10-28: reformat_spectra.py - Added x column to exp HDUs of spec files. - -------------------------------------------------------------------------------- -v5_5_12 (2012-10-23) -- DR10 release candidate - -SJB 2012-10-23: -SPREDUCE2D: add photolog_version to log output -SPCOADD_V5: add EXTNAME keywords to spCFrame and spPlate files - -JB 2012-10-22: -PLATEMERGE, SPREDUCE1D: Add CAS-styled specobjid to spreduce1d output - -ASB 2012-10-20: -FLUX_DISTORTION, SPREDUCE1D: call SDSS_ASTROMBAD rather than looking -for CALIB_STATUS bit to flag bad fields. (Ticket #1583). - -MDO 2012-10-09: -SDSSPROC: add case to check if saturated pixel occurs within 3 pixels of top and bottom of image. (Ticket $1424) - -opfiles/washers.par: Remove duplicate entry 3537-55116 - -------------------------------------------------------------------------------- -v5_5_11 (2012-10-04) -- dry run for DR10 - -BATCHPBS: Added /skip1d option -BBSPEC_EXTRACT: bbspec ymodel moved to HDU 6 in extracted spectra. -BOSSLOG: New proc. -COMBINE1FIBER: only set NODATA in AND_MASK if there really is no data - on any input spectrum; resolves ticket 1301. -COMBINEBPM: updated hand edited bad columns (ticket 1424, MDO) -FLUX_DISTORTION: mask CALIB_STATUS->ASTROMBAD fluxes - (ticket #1583, ASB) -PLATELIST: Change defult input/output location to be in RUN2D subdir - to make it easier to work with multiple versions. Can be overriden - with TOPDIR and OUTDIR options, and multiple RUN2D versions can - still be combined into a single platelist using RUN2D='*' or - RUN2D=[x, y, z], in which case the platelist is written to - $BOSS_SPECTRO_REDUX (not in the RUN2D subdir). - Resolves ticket 1659. -PLATEMERGE: removed Z_PERSON, CLASS_PERSON, Z_CONF_PERSON, - COMMENTS_PERSON from spAll so that quasar catalogs can proceed on - timescale indepdenent of pipeline. DRxQ will be authoritative - source of FPG scans rather than also propagating to spAll. -PLATEMERGE: Added BOSSPRIMARY tag to replicate SPECPRIMARY but to be - immune from downstream modification; changed SPECOBJ_ID to - BOSS_SPECOBJ_ID (Ticket #1634). -READPLUGMAP: append CALIB_STATUS when /calibobj is passed - (ticket #1583, ASB) -SDSS_PLATE_SORT: Adding ERROR to error messages for easier grepping -SDSSPROC: added masking for hotpixel trails (MDO) -SN_MEDIAN: Added "sn_all" keyword for median S/N across all bands - (ticket #1634, ASB) -SPECTRO_SUMMARY: removed N_QSO_SCANNED, N_LYA_INCOMP, and N_LYA_IMPURE - statistics. -SPREDUCE1D: push CALIB_STATUS->ASTROMBAD to ZWARNING->BAD_TARGET - (ticket #1583, ASB) -SPREDUCE1D: Added SN_MEDIAN_ALL (median S/N across all bands) to - output structure (ticket #1634, ASB). -SPREDUCE1D: Added ZNUM_NOQSO (Brownstein) - -bin/copy_spPlan.py - New (SJB) - -------------------------------------------------------------------------------- -v5_5_10 (2012-08-21) - -BOLTON_BIASSUB: Bug fix for CRs in row-by-row kluge-processed overscan - region of wonky b2 quadrant (ASB, ticket #1651). -QUICKTRACE: Bug fix for SOS reductions, which now need to pass cartID - as a keyword to TRACE320CRUDE to be consistent with recent changes - (ticket #1656). - -------------------------------------------------------------------------------- -v5_5_9 (2012-08-15) -Tag for electronics bias drift on b2 UR quadrant. -Built against elodie/v1_3, specflat/v1_19, idlutils/v5_4_28+. - -APO_CHECKLIMITS: Bug fix to test against values of exactly zero, - although this wouldn't have been triggered. -BAD_BOSSFORMAT: Print mean and 95% of each sub-image. -BOLTON_BIASSUB: Adding kluge to do row-by-row bias subtraction for - upper right quadrant of b2 post-Summer 2012, due to crazy bias - phenomenon that has appeared there (ASB, 2012-Aug-15). -FITFLATWIDTH,SPCALIB,SPREDUCE,TRACE320CRUDE: Minor changes to use a - different number of traces for the SDSS-I spectra (ticket #541). -PLATELIST: Remove %Main from the HTML file, since those targets do - not exist in BOSS. -OPFIBER_GENERATE: Bug fix to work for SDSS-I plates with plate # < 1000 - and read traces from spFlat files for the old data model. -READPLUGMAP : reads opfiles/washer.par to get override status for - ZOFFSET. (SJB 2012-08-07) -SDSS_PLATE_SORT: The photoMatch,photoPlate,photoMatch files for the SDSS-I - plates are alread sorted to a particular plugging, and have MJD - in their names. Rather than assume these are sorted, take the first - matching file for a plate and re-sort, as we do for the BOSS files. -SPECTRO_SUMMARY: Summarize BOSS spectro totals from spAll file. - (ASB: motivated by DR9.) - -opfiles/opFibers.par: Add trace positions for SDSS-I spectra using - the following cart+plate+MJDs, but then edited to start at MJD=50000 - in this file: - 1 414 51901 - 2 400 51820 - 3 404 51877 - 4 418 51884 - 5 406 51869 - 6 431 51877 - 7 412 51931 - 8 410 51816 - 9 401 51788 - -------------------------------------------------------------------------------- -v5_5_8 (2012-04-05, ASB) -Tag for spectrophoto bug fix (Ticket #1509), as well as -various SOS-related changes, file cleanups, bug fixes, etc. -Built against elodie/v1_3, specflat/v1_18, idlutils/v5_4_28. - -Documentation: Fixed the formatting for IDL documentation in a number of files: - pro/spec1d/bandpassfilter.pro - pro/spec1d/filter_check_chi2.pro - pro/spec1d/filter_solve.pro - pro/spec1d/filter_check.pro - pro/spec1d/filter_select.pro - pro/spec1d/hogg_extinction.pro - pro/spec1d/bolton_mlpca.pro - pro/spec2d/extract_object.pro - pro/spec2d/bolton_sn_fit.pro - pro/spec2d/gausspix.pro - pro/spec2d/bbspec_test.pro - pro/spec2d/trace_sparse_crude.pro - pro/spec2d/smooth_halo.pro - pro/spec2d/smooth_halo2d.pro - pro/inspect/inspectgen.pro - pro/templates/pca_qso_dev.pro - pro/templates/pca_gal_dev.pro - pro/templates/mlpca_star.pro - pro/templates/align_rest.pro - pro/templates/mlpca_cvstar.pro -Fixing some files that don't need to be executable - examples/opECalib-51430.par - examples/opECalib-blank.par - examples/opECalib-51577.par - examples/opECalib-55026.par - -DECOLLIDE,RANDOM_DECOLLIDE: Fixed problem with duplicate function names. -EXTRACT_OBJECT: Commented out dispset in calls to SKYSUBSTRACT. - (ticket #1475, JCR). -GAMA_TO_SDSS: New proc for converting 2dF GAMA spectra files to spPlate - format for redshift-fitting with Spectro-1D. -PCA_QSO: Add /allatonce keyword. -SPFLUXCORR_V5: changed multiplicative polynomial fit parameters and - changed fit to depend on index of refraction of air (ASB, ticket #1509) - -Makefile (top-level): make doc is now not part of default install -Makefile (lower-level): All unnecessary Makefiles (that only did make install) - are removed. -.cvsignore: Removed unnecessary .cvsignore files -bin/idlspec2d_version: Change from bash to sh. -doc/mk_doc: Removed, document generation now handled directly by doc/Makefile -etc/emlines.par: The H_gamma line fit width was accidentally tied to the - forbidden lines rather than the Balmer lines. Fixed. -examples/opECalib-*.par: Removed executable tags on some files. -examples/opLimits.par: increased limits on r1 wsig by 0.05. - b1 xsig goes high for high fibers at middle pixel numbers but after - collimator swap still within old limits so didn't change - r1 wsig goes high for middle fibers at high pixel numbers -include/export.h: Remove old export.h and link to $IDL_DIR/external/export.h - This is the same as what is done in the idlutils product. -ups/idlspec2d.table: Remove explicit version dependency idlutils v5_4_26. - Remove outdated notation. - -------------------------------------------------------------------------------- -v5_5_7 (2012-01-18) ---> Installed at APO - -APO_PLOTSN: Line 92 changed to address ticket #1506: SOS not plotting - data from very low S/N exposures. - -bin/updatePluggingStatus: Remove to avoid conflict with version in - the platedb product. -ups/idlspec2d.table: Force explicit version dependency idlutils v5_4_26. - -------------------------------------------------------------------------------- -v5_5_4 - v5_5_6 (2012-1-10) -[several busted tag iterations sorting out dependencies] ---> Never installed at APO; skip to v5_5_7 - -BATCHPBS: Turned off calls to plate_spec_image: post-DR9 one should use - plotspec or the spectrawebapp for casual browsing of spectra. -BBSPEC_EXTRACT,FITSCATTER: Implement a naive scattered light model for - the bbspec extraction. -QUICKEXTRACT: Bug fix to sky-subtract in 25 bundles, not just 16. - Use 2-D sky-subtraction with NPOLY=3 in call to SKYSUBTRACT. -SKYSUBTRACT: Cleaned up use of DISPSET argument; needs test (ticket #1475). -VDISPFIT: Change to flatten probability in optional redshift marginalization, - may or may not be retained (ASB) -VDISP_PLATEFIT: New routine to facilitate re-batching of vdisp fitting code - (ASB) - -------------------------------------------------------------------------------- -v5_5_3 (2011-11-14) ---> Installed at APO -Tag for SOS with small changes after b2 triplet replacement. -Built against elodie/v1_3, specflat/v1_16, idlutils/v5_4_24. - -BOLTON_BIASSUB: add code to handle subarray readout bias subtraction - gracefully (ASB, re: ticket #1466) -COMBINEBPM : Added bad columns for 55800-55850 on r1. After putting the set - temperature for this CCD higher by 5 deg C, r1 looks good with no bad cols. -COMBSMALLCOLLIMATE: Changed offsets for b2 after triplet swap -SDSS_PLATE_SORT : Add MOD 360 to match_ra to prevent crashes on match_ra>360 - in photoMatchPlate files (affects plates 4405 and 4277). -SDSS_SPEC_IMAGE, PLATE_SPEC_IMAGE : Added /silent hooks - -bin/rundaily_cron, rundaily_riemann_script, rundaily_riemann: - Added silent hooks for sdss_spec_image and plate_spec_image - -------------------------------------------------------------------------------- -v5_5_2 (2010-10-19) -Tag for SOS bug fixes. -Built against elodie/v1_3, specflat/v1_16, idlutils/v5_4_24. - -COMBSMALLCOLLIMATE: Correctly apply offsets. -examples/opLimits.par: Tweaks to all XMID,WAVEMID values for year 3 (KSD). - -------------------------------------------------------------------------------- -v5_5_1 (2011-09-17) -Tag for SOS bug fixes. -Built against elodie/v1_3, specflat/v1_16, idlutils/v5_4_24. - -COMBSMALLCOLLIMATE: Update offsets using all hartmanns from 55800-817 - -examples/opLimits.par: Switch incorrectly-swapped the values for WAVEMID - for r1 & b1. Set error for EXPTIME < 300 sec. - Set error for SN2 less than 0.2. - -------------------------------------------------------------------------------- -v5_5_0 (2011-09-09) -Tag for full reductions using replacement r1 CCD. -Built against elodie/v1_3, specflat/v1_16, idlutils/v5_4_24. - -COLLIMATE: Add test keyword to help find offsets with SMALLCOLLIMATE. -COMBSMALLCOLLIMATE: Update offsets and add /TEST keyword. -PLATECOMPARE: Fix to work with change from SNMEDIAN from vector to array. -PLOTSPEC, UUPLOTSPEC: Show 3 digits after decimal in rchi2 (ASB) -SDSSPROC: Added new r1 CCD gains to sdssproc for data after MJD 55800: - amps 0-4 gains [1.9253, 1.5122, 1.4738, 1.5053] - -bin/reformat_spectra.py: New proc to reformat spectra into one-file-per-object - format (basically ticket #837) -bin/sos_apocommand : updatePluggingStatus no longer accepts -d -v options, - so remove them from the call. -bin/updatePluggingStatus - this has been replaced by - PLATEDB_DIR/bin/updatePluggingStatus. Rename this copy to .._old just - in case we need to get to it again. After next APO install, if things are - running smoothly and we don't need this, we can delete it for good (history - will still be in svn) - -------------------------------------------------------------------------------- -v5_4_45 (2011-08-27, ASB) -Bug fixes for DR9 data release. -Built against elodie/v1_3, specflat/v1_16, idlutils/v5_4_24. - -BUNDLETHRU: New proc to measure relative throughput of fiber bundles from - flat-fields -PLATESN,PLOTSN: Bug fix(es) for new calling sequence to FITSN, where we no - longer are passing the plugmap but instead the redden values. - -------------------------------------------------------------------------------- -v5_4_44 (2011-08-26, ASB) -Tag to catch that last change -If good, this tag will be the DR9 tag. -Built against elodie/v1_3, specflat/v1_16, idlutils/v5_4_24. - -EXTRACT_OBJECT: Compute the SKYCHI2 output in the science frame headers - only for good pixels (ticket #712) - -------------------------------------------------------------------------------- -v5_4_43 (2011-08-25, ASB) -Tag to clean up a bunch of bugs and straggler tickets. -If good, this tag will be the DR9 tag. -Built against elodie/v1_3, specflat/v1_16, idlutils/v5_4_24. - -BOLTON_BIASSUB, SDSSPROC: Fix to make use of SDSSPROC_BADFORMAT - image corrections (ASB, re: ticket # 1408) -CONFIGURATION__DEFINE: Remove some deprecated functions. -EXTRACT_BUNDLE_ROW, EXTRACT_BUNDLE_IMAGE: documentation cleanup - to reflect the bundle-wise extraction mods (ASB) -EXTRACT_OBJECT,SPCALIB,QUICKWAVE: Remove call to getDetectorFormat and - determine the image size from the image. -EXTRACT_OBJECT,FITSN,SPREDUCE: Pass the median reddening values for - the plate from the plugmap file (as "reddeningMed" in the header) - as a set of "REDDEN*" keywords in the output science frames. - Use these values for evaluating the reddening-corrected S/N values - in FITSN. (ticket #879) -FITSN: If there are fewer than 10 points in the mag fit range, - then extend that range to all brighter magnitudes. This will - not effect any proper survey plates. But it allows the S/N fit - to occur for some special plates, such as 5017-5019 which have - much fainter targets. For those plates, then the spectro-photo - stars are selected for the fit. (ticket #1351) -PLATEMERGE: Add DIMS0,DIMS1 keywords to spAllLine file (ticket #1031) -SDSSPROC: Add option to return CCDMASK pixel mask that sets the 'NODATA' - bit for regions of the BOSS CCD that are unused. This should allow - the option of including more mask bits at this stage to propogate - through the pipeline, such as CR masks. -SPBIASGEN: Add /NOPROC option for generating average bias frames - without overscan-trimming, etc. -SPCALIB: Remove some clutter of commented-out code. -SPECLINEFIT,LINEBACKFIT: Add new CONTRANGE keyword for setting the region - for the continuum-fitting for each line. A mean (unweighted) continuum - is evaluated in the blueward and redward bands, and then the average of - those two bands. This is used at a range of [300,600] km/s for stars - and galaxies. QSOs retain the default of selecting the continuum level - at the mid-point of the line, which is actually equivalent since the - background terms are all straight lines for QSOs. (ticket #1243) -SPREDUCE1D: Fix spurious "broadline" subclassing (ASB, ticket #1316) -SPREDUCE,EXTRACT_OBJECT: Make use of the CCDMASK from SDSSPROC, - and include those mask values through the pixel mask. A 'NODATA' - value is currently inherited from the initial SDSSPROC. - Erase several of the bits in the 'NODATA' regions: - ['NEARBADPIXEL','LOWFLAT','SCATTEREDLIGHT','NOSKY']. - This partially addresses ticket #1301. - -bin/loadSN2Value : fix platedb database connection method. -bin/sos_apostart: Correct instructions about which password to use for ssh - daemon. - -------------------------------------------------------------------------------- -v5_4_42 (2011-08-18, ASB) -Tag to fix 8000ang break feature with discontinuous sky model. -If good, this tag will be the DR9 tag. -Built against elodie/v1_3, specflat/v1_16, idlutils/v5_4_24. - -EXTRACT_OBJECT, SPREDUCE, SPREDUCE2D: Enabling split sky model between - spatial halves (ASB, chasing ticket #1388) - -Changed RAWDATA_DIR to BOSS_SPECTRO_DATA in 40 files (Ticket #1067). - Script that did this is in misc/rawdata2bossdata (ASB) - -------------------------------------------------------------------------------- -v5_4_41 (2011-08-08, ASB) -Tag for new bias recipe, new pixflats, misc 1d changes, misc 2d bugfixes. -Built against elodie/v1_3, specflat/v1_16, idlutils/v5_4_24. - -BOLTON_BIASGEN: Minimum-chi^2 master bias model-building routine (ASB) -BOLTON_BIASSUB: Bias-subtraction using bolton_biasgen outputs (ASB) -FITVACSET: Added handling of 2-phase discontinuity info (ASB) -SDSSPROC: Add measured readnoise for each amp as fits header keywords - RDNOISE0/1/2/3. We might want that info some day for noise modeling. -PLATEMERGE: Set SPECPRIMARY for GALAXY targets now based upon - ZWARNING_NOQSO (if present) rather than ZWARNING (ASB, ticket #1389) -PLATEMERGE: Test for inheritance of Z_NOQSO & related before computing - (see SPREDUCE1D changes) (ASB, ticket #1385). -SDSSPROC: Change to use BOLTON_BIASSUB for BOSS MJD >= 55170 (ASB) - (Will require coordinated tag with specflat.) -SPADD_GUIDERINFO: Limit reporting of seeing to in-focal-plane fibers only - (ticket #1391). -SPREDUCE1D: Compute Z_NOQSO and related values here, rather than in - PLATEMERGE (ASB, ticket #1385). - Also compute redshift-marginalized vdisp likelihood curves - with the Shu et al. 2011 parameter settings. -VDISPFIT: Subtract the # of invvar=0 pixels from vdispdof (ASB). - -------------------------------------------------------------------------------- -v5_4_40 (2011-07-05, ASB) -Tag for new bad-pixel masks, against specflat v1_14 - -COMBINEBPM: Update using bad pixel masks (for tickets 1363, 1368, 1369). -PLATEMERGE: Improved handling of best non-QSO redshifts (ASB) - No longer include the *NOQSO* entries unless /CALC_NOQSO is set. -SDSSPROC: When using /applypixflat, the (new) badpixel masks are applied - immediately after reading in the pixflat (ticket #1369). - -------------------------------------------------------------------------------- -v5_4_39 (2011-06-28, ASB) -Tag for a few 1D fiddles - -VDISPFIT: Bug fix when marginalizing over redshifts with new DZPIX keyword. -ZFIND: Change to disallow negative-model fits for single-component - template sets (i.e., most stars) upstream of ZWARNINGs (ASB) - -templates/spEigenGal-55740.fits: - Yanmei Chen's latest galaxy redshift templates, renamed to match - wildcarding, covering 1800 to 10500 Ang (ASB). - -------------------------------------------------------------------------------- -v5_4_38 (2011-06-21, ASB) -Tag for testing new redshift templates - -ATVSPEC: Add /verbose option. -BBSPEC_EXTRACT: New proc to act as wrapper to bbspec extraction code. - This first implementation only does a small sub-image for a single - fiber at a time. -BBSPEC_PIXPSF: Initial check-in for code that generates a pixelated PSF - from an arc frame. -EXTRACT_OBJECT: Add /bbspec option, and if set call BBSPEC_EXTRACT to replace - fluxes and errors. -FITDISPERSION: Change quadrupole region for /QUICK option for reporting - MEDWIDTH for different regions on the CCD (ticket #822). This - option used by QUICKWAVE. -FITFLATWIDTH: At least half the points should be good to fit the median - value within a bundle. -PCA_CVSTAR_BOSS: New version of PCA_CVSTAR for generating BOSS CV star templates -PCA_STAR_BOSS: New version of PCA_STAR for stellar templates - based upon extended/patched Indo-US archetypes resampled for BOSS, - plus some empirically derived templates of oddball stars from BOSS - spectroscopy (ASB). -PSOLVE: Initial check-in of routines used by BBSPEC_PIXPSF. -SDSSPROC: Remove the VARFILE option, and write the inverse variance - as HDU #1 of OUTFILE instead. Define a default naming scheme for OUTFILE. -SHIFT_TRACE: Remove this deprecated routine. -SPCALIB: Add /bbspec option, and if set then extract the flat-field with - the 2D PSF. -SPREDUCE: Add /bbspec option, and if set then generated sdProc and - spBasisPSFfiles for the best arc image. Pass keyword to EXTRACT_OBJECT. -SPREDUCE1D: Default for CHOP_DATA changed from [3650,9200] to [3600,10400] - (ticket #539). - Restore old NPOLY choices of 3 for galaxies, QSOs, CV stars, and - 4 for stars (ticket #851). - Change wildcard-matching for template files to explicitly have - a 5-digit MJD string. -SPREDUCE2D: Propogate all the test keywords to the recursive calling of - this routine. - Add /bbspec option. - -opfiles/lamplines.par: New file for lamp lines in bbspec PSF fitting. -templates/spArchIndoUS.fits,eigeninput_star_boss.dat,spEigenStar-55734.fits: - New stellar template files as input and output by PCA_STAR_BOSS. -templates/eigeninput_qso_boss.dat,spEigenQSO-55732.fits: - New QSO PCA redshift templates for BOSS (ASB) -templates/eigeninput_cvstar_boss.dat,spEigenCVstar-55734.fits: - New CV PCA redshift templates for BOSS (ASB). -templates/spEigenGal-55686.fits: - New GALAXY PCA redshift templates for BOSS, including - type II QSOs. Generated by BAW; checked in by ASB: -ups/idlspec2d.table: Add optional dependency on bbspec product. - -------------------------------------------------------------------------------- -v5_4_37 (2011-06-13) -Another tag for SOS addressing ticket #822. - -examples/opLimits.par: Switch the values for WSIGMA,XSIGMA - since those were in error (ticket #822). - -------------------------------------------------------------------------------- -v5_4_36 (2011-05-17) -Tag for SOS addressing ticket #822. - -etc/opLimits.par: Changed red and yellow limits on xsig,wsig for r1; - corrected order of r1 b1. - -------------------------------------------------------------------------------- -v5_4_35 (2011-04-22 by ASB) -Tag for further test of bundle-wise extraction and other fixes -Built against specflat v1_13, elodie v1_3, idlutils v5_4_23. - -CONFIGURATION__DEFINE: Increased ncoeff used for BOSS linewidth fits - to 5 (red) or 4 (blue) (ASB). -EXTRACT_ROW, EXTRACT_BUNDLE_ROW: moved separation check below "ngood" - check, to avoid pointless warnings on fully invvar=0 rows - (goes to ticket 1209) (ASB). -FITDISPERSION: Added maxdev=0.2 in traceset fit (ASB). -PLUGMAP_DIFF: New proc to find instances where the plPlugMapM file in - the speclog file differs from what was used in the reductions. - Used to see which fibers changed when fixing tickets #819,1262. -SPCALIB: new definition of "inmask" for trace-position fits, and - new value for "maxdev" (goes to ticket #1269) (ASB). -SPREDUCE1D: Force the SPEC2_* values in the ZANS structure to always - be type float (ticket #1290). - -------------------------------------------------------------------------------- -v5_4_34 (2011-04-21) -Tag for SOS errors/warnings. -Built against specflat v1_13, elodie v1_3, idlutils v5_4_23. - -APOREDUCE: Look for INFO as well as ABORT,WARNING messages in log file -COMBSMALLCOLLIMATE: Change default values of badres from 5 to 6 deg - (related to ticket #1266). -FITDISPERSION: Add /QUICK option for reporting MEDWIDTH for different - regions on the CCD (ticket #822). This option used by QUICKWAVE. -FITFLATWIDTH: Add /QUICK option to trim to the central region of CCD - and report MEDWIDTH in different regions. This option used by - QUICKTRACE (for flats) and QUICKEXTRACT (for science frames). -GAUSSPIX: New routine for pixel-integrated gaussians, similar to but - not to be confused with GAUSSPIX1D. -PLATEMERGE: Add XFOCAL,YFOCAL to spAll file (ticket #1271). - Change PLATE from an optional input to an optional keyword to allow spAll - generation for a subset of plates. -PLUGMAP_REPLACE: New proc for replacing plPlugMapM files in the speclog - product with new versions from re-running EVILREMAP on the mapper movies. -QUICKEXTRACT,QUICKTRACE: Use /QUICK flag in call to FITFLATWIDTH. -QUICKWAVE: Change reporting of dispersion warning messages to be consistent - with that reported by FITDISPERSION. Use /QUICK flag to FITDISPERSION. -READPLUGMAP: MOD the range of values for PLUG_RA to fall strictly in - the range [0,360) deg (tickets #1131, #1255). -SPADD_GUIDERINFO: Exclude NaN,Inf in guiderMon files when calculating - guider statistics (ticket #1276). -SPCALIB,EXTRACT_OBJECT,EXTRACT_BUNDLE_IMAGE,EXTRACT_BUNDLE_ROW: Replace calls - to EXTRACT_IMAGE with the newly-written bundle-by-bundle IDL extraction - code (ASB). -WRITESPEC, WRITE_UROS: Format file names for 1000-fiber (4 digit) fibers - (ticket #1275). - -bin/riemann_redux_snapshot: New script to make a snapshot of the BOSS - reductions of the platelist*,spAll* files. -examples/opLimits.par: Change red thresholds on XSIGMA from - 1.15,1.20,1.25,1.30 to 1.20,1.20,1.25,1.25 (with yellow lower by 0.05). - This is to be consistent with the changes to FITFLATWIDTH. - Change red thresholds on WSIGMA from 1.35,1.35,1.25,1.25 to - 1.25,1.30,1.20,1.25 (with yellow lower by 0.05) to be consistent - with changes in FITDISPERSION. -templates/eigeninput_typeIIqso.dat: Type II QSO training sample drawn - from BOSS galaxy targets, for GALAXY redshift templates (ticket #633). - Not yet used. - -------------------------------------------------------------------------------- -v5_4_33 (2011-03-30 by ASB) -Tag for testing bundle-wise IDL extraction -Built against specflat v1_13, elodie v1_3, idlutils v5_4_23. - -BATCHPBS: Change back to the original directory at end of proc. -EXTRACT_BUNDLE_ROW, EXTRACT_BUNDLE_IMAGE, GAUSSPIX (ASB, U. Utah): - Routines to enable pure IDL extraction, chunked up bundle-wise. -EXTRACT_OBJECT, SPCALIB (ASB, U. Utah): - Switched to pure IDL bundle-wise extraction. - Also addresses ticket #781, removing a redundant extraction step. -PLATEMERGE: The setting of SPECPRIMARY needs to address SN_MEDIAN - as a 5-element array rather than a scalar. Select based upon - this S/N in r-band. -READPLUGMAP: MOD the range of values for PLUG_RA to fall strictly in - the range [0,360) deg (ticket #1255). -VDISPFIT: Enable more sophisticated redshift-error marginalization. - Add DZPIX keyword. - -------------------------------------------------------------------------------- -v5_4_32 (2011-03-18) -Tag for testing spectrophotometry fixes. -Built against specflat v1_13, elodie v1_3, idlutils v5_4_23. - -BATCHPBS: Added -G -t GAL to runz_BOSS.sh call (ticket #1251). -CONFIGURATION__DEFINE,FITDISPERSION,QUICKWAVE,SPCALIB,TRACE320CRUDE: - Remove some unnecessary definitions from the configuration__define proc. -FITDISPERSION: In the call to XY2TRACESET, pass a mask of the badly - measured individual widths such that they do not throw the fits - (ticket #822). -FLUX_DISTORTION: For determining if this is a multiple-pointing plate, - don't look at missing plugmap entries. This change necessary for - the change with SPCOADD_V5 to include all zeros for a missing spectrograph. -PLATEMERGE: Modified to include minimal info on best non-QSO and - best non-galaxy redshifts and classifications by default. -SPCOADD_V5: Always set the number of output fibers as 2X the number on - a single spectrograph. Otherwise, if data from one BOSS spectrograph - is missing, then previous reductions made output files with 500 instead - of 1000 objects. Related to ticket #764. -SPFLUX_V5: In the internal function spflux_mratio_flatten, do a fit with - outlier rejection when fitting each star's mratio to the mean - (ticket #1249 and #1252). -SPPLAN2D: For any frames that are 'bad', enter them as 'UNKNOWN' - in the plan files so that we don't attempt to reduce them (ticket #764). - -etc/lamphgcdne.dat: Remove the Hg I lines at 4105 Ang, as it was the - culpret for ticket #822 (although the fix to FITDISPERSION should - make SOS robust to that anyway). -examples/opLimits.par: Change the S/N limits to be consistent with - the numbers hard-wired in PLATELIST. - Add yellow/red limits for %LRG1, %LRG2. - -------------------------------------------------------------------------------- -v5_4_31 (2011-03-02) -Tag for production 2D reductions. -Built against specflat v1_13, elodie v1_3, idlutils v5_4_23. - -BATCHPBS: Don't print run1d and run2d multiple times. -LOGSHEET: Also look for files that might be .fits instead of .fit, - as some were during the early BOSS commissioning. -PLATECOMPARE: Add support for RUN2D,RUN1D kewyords for comparing - different version reductions of the same plates. -PLATELIST: DeRedSN^2 -> DEREDSN2 in column name. - Shorten the SN2 column names for the html output. -SDSSPROC: The header values for the recently-added TWOPHASE keyword - were not properly boolian values, with the result that the blue CCDs - were having the 2-phase wavelength-correction accidentally applied - (ticket #1238). -SPFLUX_V5: Add another digit to fiber number (for printing fiber #1000). - -------------------------------------------------------------------------------- -v5_4_30 (2011-02-16) -Built against specflat v1_13, elodie v1_3, idlutils v5_4_23. - -BOLTON_STD_THROUGHPUT: new function to compute end-to-end - throughput on standard stars. -EXTRACT_OBJECT: Add DEREDSN2 keyword to spFrame output. -FITSN: If plugmap is provided, fill in dered_sn2 as dereddened - version of sn2 output (ticket #879). -PLATELIST: Output dered_sn2_* values to spAll files, using - those values instead of sn2_* for determining plate quality. - New keyword RAWSN2 to revert to previous behaviour. -PLATEMERGE: Make directory-concatenation OS-independent, and remove - undocumented use of a "spAll" subdir. - Optional keyword INDIR added. - Add DREDSN2 to the output file. -PLATESN: Add SN2EXT* keywords to spPlate output (ticket #879). -PLOTSN: Pass through dered_snplate from fitsn dered_sn2 output -SDSSPROC,SPCALIB: Move hard-coded logic of when the BOSS red CCDs switched - from 1-phase to 2-phase readout to be inside the SDSSPROC routine. -SN_MEDIAN: New proc to compute median spectroscopic S/N in the SDSS filters - (ticket #976). -SPREDUCE1D: Add call to SN_MEDIAN. -TRACE320CRUDE: Added condition on minimum fraction of traces for - application of polyfitw (ticket #1025) [ASB] - -bin/rundaily_riemann_script: Email Stephen instead of Gary when things go wrong - -------------------------------------------------------------------------------- -v5_4_29 (2011-02-01) -Built against specflat v1_12, elodie v1_3, idlutils v5_4_23. -Attempts by ASB to fix UPS dependencies. - -------------------------------------------------------------------------------- -v5_4_28 (2011-01-29) -Built against specflat v1_12, elodie v1_3, idlutils v5_4_23. -Attempts by ASB to fix UPS dependencies. - -------------------------------------------------------------------------------- -v5_4_27 (2011-01-29) -Tag for ticket #880. -Built against specflat v1_12, elodie v1_3, idlutils v5_4_23. - -SPCALIB, FITARCIMAGE: - Added code to handle 2-phase red-side BOSS readout discontinuity. - Coordinated with changes to XY2TRACESET, TRACESET2XY, TRACESET2PIX - in idlutils product, so need to update that dependent product. - Addresses ticket #880. - -------------------------------------------------------------------------------- -v5_4_26 (2011-01-20) - -COMBSMALLCOLLIMATE: Added offsets for focus ring moves from COLLIMATE - and COMBSMALLCOLLIMATE. - -------------------------------------------------------------------------------- -v5_4_25 (2011-01-20) -Tag for SOS collimation. - -BATCHPBS: Fix bug when passing plate numbers as a number rather than string. - Add /NOSUBMIT option. - Print name of script being submitted for later logfile grepping. - Change "script-XXX" to "redux-XXX" to fit within qstat display length. - Added plate_spec_image calls. -CCDTILT: Fix crash condition for /DOPLOT option. -COMBSMALLCOLLIMATE: Refine offsets to gives same results as - COLLIMATE using full Hartmanns taken from MJD 55440 to 55511 and tests - of -10000,0,10000 step offset and more tests from 55581. - b1 offset created using collimate, not collimate,/debug. - Setting slope equal to 1 for offset between collimate and - combsmallcollimate. - Minor change on b residual output -FINDSPEC: Works with SDSS-I,II data as well as BOSS data - Add /SDSS option that is hard-wired to run2d='26' -OPFIBER_GENERATE: New proc for generating the opFibers.par file - used for trace-finding in TRACE320CRUDE. -PLATELIST: Add option for SKIPCART to skip problematic carts (like the - current problems with cart 15). - Change S/N^2 thresholds to > 10 in B and > 22 in R. - Add function get_lastline to read the last line of log files rather - than making a call to SPAWN. -PLATEMERGE: Put spAll files into RUN2D subdirs instead of leaving at top - level $BOSS_SPECTRO_REDUX. -QUICKTRACE,SPCALIB,TRACE_CEN,TRACE320CEN: Changes to use new trace - parameters stored in the file opFibers.par . Ticket #817. -QUICKTRACE: Changes made to region used for quick_extract for - BOSS exposures to help with xsig. - Bug fix from hdr=flathdr to flathdr=flathdr in call to TRACE320CRUDE. -RUN_SDSSPROC: New proc for running SDSSPROC over many sdR files and - saving resulting image and invvar data to new files. -SDSSGUIDE: Guider images looks like they changed dimensions slightly - on MJD 55425. -UUBATCHPBS: Modified version of BATCHPBS to put many plates in a single job. -VDISPFIT: Fix bug for zobj=0. case - Add redshift marginalization and chi^2 map return options using - DZPIX and RETURN_CHISQ keywords. Do not use yet as default - behaviours for SPREDUCE1D. - -opfiles/opFibers.par: New file with trace parameters, generated by - OPFIBER_GENERATE and to be used by TRACE320CRUDE. - -------------------------------------------------------------------------------- -v5_4_20 (2010-10-27) -Tag for SOS S/N changes (ticket #1116). -Built against specflat v1_12, elodie v1_3, idlutils v5_4_19. - -TRACE320CRUDE: Added lines to ignore rows with invvar all zero (ticket #1025) - -bin/sos_apospammer: Added Stephen Bailey to SOS log spam list. -bin/updatePluggingStatus: Update help message. -examples/opLimts.par: Change S/N^2 limits to 10 (blue) and 22 (red cameras), - as per ticket #1116. - -------------------------------------------------------------------------------- -v5_4_19 (2010-09-13) -Tag to fix a number of bugs, esp. ticket #1043 -Built against specflat v1_12, elodie v1_3, idlutils v5_4_19. - -APO_APPENDLOG: Use COPY_STRUCT_INX to copy into an existing data structure, - rather than an assignment that could fail if structures are different. -APOD: Fix logic for re-reducing good arcs that precede good flats. -APOREDUCE: Last tag replaced one instance of 'gs' with '/usr/bin/convert', but - do the second instance too. - Print the stdout and sterr from the call to convert. -QUICKBIAS,QUICKEXTRACT,QUICKTRACE,QUICKWAVE: Explicitly set types of all - output structure elements, which may help address ticket #1043. -QUICKEXTRACT: Force data type of EXPTIME and SKYLEVEL to be floating-point. - The ICC changes can result in an EXPTIME that is either float or double, - and that gets propogated through and can result in a data-type mismatch - (ticket #1043). - to type double. It appears this is the variable that is k -READSPEC: Restore ability to read SDSS spectra, particularly the SDSS-I - photoPosPlate files. -SDSSPROC: Failed on line 363 if passing this routine an array of filenames, - even a 1-element array. Internally recast INFILE as a scalar to - protect against that case (although never encountered in the pipeline). - -bin/sos_apocontrol: stopKill now kills all child processes when called. This - will (hopefully) kill any stuck idl jobs. - -------------------------------------------------------------------------------- -v5_4_18 (Sep 11, 2010) idlspec2d -Tag for SOS critical bug (ticket #1034). -Built against specflat v1_12, elodie v1_3, idlutils v5_4_19. - -APO_APPENDLOG: Change timeout to 200 sec (was accidentally 400 sec). -APOREDUCE: Use 'convert' instead of 'gs' to convert PostScript plots - into JPEGs. Write to a JPEG file that is uniquely named per - exposure+camera, and then rename with a call to "mv" to make it - atomic and prevent 4 jobs from writing to the same JPEG file at once. - Put that job in the background instead of waiting for it to complete. - -------------------------------------------------------------------------------- -v5_4_17 (Sep 7, 2010) idlspec2d -Tag for SOS bugs (tickets #636, 797, 1017, 1022 addressed at some level). -Built against specflat v1_12, elodie v1_3, idlutils v5_4_19. - -APO_APPENDLOG: Timeout after 200 sec, at which point a frame might be - reduced but it will not be added to the log file or plots. - This might help address tickets #1017, #797, or at least provide - more info in the SOS logs about a possible problem. -APOD: Search for gzipped sdR files. - Add logic to reduce an arc preceding a flat (untested). -COMBSMALLCOLLIMATE: Remove test lines that accidentally changed the offsets. - Apodize the top and bottom of the image to be robust against an arc - line fallling near the edge of the active region. (Ticket #1022). - -bin/rundaily: Wait for the current MJD to show up in $DAILY_RAWDATA_DIR -bin/rundaily_riemann_script: Use environment variables RUN2D,RUN1D. -examples/opLimits.par: Define XMID to 2036 2045 2043 2044 based upon - Kaike Pan's posting on 7 Sep 2010 to be more consistent between - the blue and red cameras (ticket #636). - -------------------------------------------------------------------------------- -v5_4_16 (Sep 6, 2010) idlspec2d -Tag for critical bug fix for SOS (ticket #1012). -Built against specflat v1_12, elodie v1_3, idlutils v5_4_19. - -bin/loadSN2Value,updatePluggingStatus: Back out to previous version, - since changes were made for a new version of platedb that does - not yet exist. - -------------------------------------------------------------------------------- -v5_4_15 (Sep 4, 2010) idlspec2d -Tag for critical bug fix for SOS (ticket #1005). -Built against specflat v1_12, elodie v1_3, idlutils v5_4_19. - -APOALL,APOREDUCE,QUICKBIAS,QUICKEXTRACT,QUICKREDUCE,QUICKTRACE,QUICKWAVE: - Allow APOALL to run without generating lock files in the raw data - directories. Pass this as a /NO_LOCK keyword to APOREDUCE, and then - pass /DO_LOCK to the subroutines. -APOREDUCE: Do not send any Hartmann exposures (full frame or subarray) - to the QUICKWAVE routine. This is to address the problems - in ticket #1008. -COLLIMATE,COMBSMALLCOLLIMATE: Change offsets to gives same results as - COLLIMATE using data taken on MJD 55440 -COMBSMALLCOLLIMATE: Include calls to FITS_WAIT() before reading the file - to make sure that they're completely written (ticket #1005). - Test every 5 sec, and timeout after 30 sec. -SPCOMBINE_V5: Remove reading RUN2D from the spPlancomb file, since it - is unused. -QUICKEXTRACT: Increase the tolerance at which to report a flexure error - message from 0.5 pix to 1.0 pix. Ticket #1009. -ZPLOT: Change to work for BOSS targets. - -bin/loadSN2Value,updatePluggingStatus: Update to use the new version of platedb -examples/opLimits.par: Change the WAVEMID value for r2 from 8071 to 8053, - to better fit what Kaike Pan found to be consistent with b2 position. - -------------------------------------------------------------------------------- -v5_4_14 (Aug 26, 2010) idlspec2d -Tag for testing new galaxy templates in Spectro-1D. -Built against specflat v1_12, elodie v1_3, idlutils v5_4_19. - -SPREDUCE1D: changed back to NPOLY=3, optimal for new galaxy templates. -templates/spEigenGal-boss_v0_new1.fits: - New BOSS-based tempaltes from Yanmei Chen -INSPECTGEN: Update to be consistent with the suggested Data Model, which - is what is tested with INSPECT_VERIFY. -loadSN2Value, updatePlugginStatus: update to use new version of platedb -UPDATE_PLATELIST: The auto-generated "platequality" is used for plates - being added if they didn't already have a quality in the file. - -------------------------------------------------------------------------------- -v5_4_13 (Aug 5, 2010) idlspec2d -Tag for testing patches to Spectro-2D and npoly changes to Spectro-1D. -Built against specflat v1_12, elodie v1_3, idlutils v5_4_19. - -AESTHETICS: New routine for filling in bad values for COMBINE1FIBER. -ATVSPEC: New proc for displaying cutouts of raw images around specified - wavelengths. -COMBINE1FIBER: Call new routine AESTHETICS, but no change in default behaviour. -CONFIGURATION__DEFINE: Change spcalib_xy2traceset_ncoeff from 4 to 7 - for the polynomimial order of fitting the traces in the call - to XY2TRACESET in SPCALIB (ticket #845). - Change the initial guess for the sigma of the optimal extraction - in the spatial direction from 1.4 pix to 1.0 pix (spcalib_sigmaguess). - This is because there is only 1 iteration on this fitting, so it may - not otherwise converge to the correct result. - Change spcalib_sigmaguess to 1.15, a compromise BOSS value since - range is approx. 0.85 to 1.35. -FLUX_DISTORTION: Use only standard stars for the flux-distortion maps, - requiring at least 10 objects (instead of 50). This will not work - with SDSS-I data, but will remove the strangeness of using galaxies - on BOSS plates. - Increase the number of iterations in MPFIT from 50 to 200 (ticket #938). -GUIDERPLAY: Wrapper for IDL guider to simply allow play-back of images - for a specified night. -IDLSPEC2D_VERSION: Back out to the previous version, since this does not - report the svn version number in the case of untagged code. - For that, we call the idlspec2d_version bash script (with a spawn). -INSPECT_VERIFY: New proc for testing the format of spInspect files. -LOGSHEET: Add /COLLIMATOR option to print the collimator motor positions. -PCA_GAL: Call AESTHETICS for filling in bad values. - Add a table of input spectra to the eigenspectra files. -PLATEMERGE: Added EXCLUDE_CLASS and SKIP_LINE functionality. -PLOTSPEC: Fixing Ticket #926 /ALLEXP bug and odd feature. -PLUGHISTORY: Plot out to fiber #1000 for BOSS cartridges. -READPLUGMAP: Change PSF/fiber flux ratios from computed numbers to - fixed constants. For 2 arcsec fiber fluxes, these constants - are [2.085, 2.085, 2.116, 2.134, 3.135]. For 3 arcsec fiber - fluxes, they are [1.343, 1.336, 1.354, 1.363, 1.367]. Ticket #906. -SDSS_SPEC_IMAGE: Ignore greater than 1 micron for plot limits. -SPCALIB: Fix a bug introduced in v5_4_7 with the re-write of FITARCIMAGE, - where bad lines (marked as such in REJLINE) were passed along - to FITDISPERSION. This fixes ticket #823. - Change MAXDEV from 0.15 pix to 1.0 pix inthe call to TRACE320CRUDE. - This fixes ticket #845. -SPCOMBINE_V5: Modify the fix implemented in v5_4_8, and discard all data - from a given spectrograph if there is a camera with no good files. - This retains the behaviour of discarding sp2 data for MJD 55290-55299 - when r2 was dead (ticket #764). But it retains sp2 for plate - 3817/55276 when only two images are missing (ticket #787). -SPREDUCE1D: Lowered NPOLY from 3 to 0 for galaxies, and 3 to 0 for QSOs, - and 4 to 1 for stars. - Commented out MANY_OUTLIERS flag setting (ticket 955). - -bin/sos_runnerd.py: Write a version string a file so the running version - can be determined -opfiles/boss_cartridge15_gaps.txt: added file with measured bundle gaps - for BOSS cartridge 15 (see ticket #817). -opfiles/spInspect-0000-00000.par: Template for spInspect files. -templates/spEigenGal-boss_v0_new1.fits: Add Yanmei Chen's BOSS galaxy - eigentemplates -templates/spEigenGalNew-55399-baw-mean.fits: Test template file using the 'mean' - setting of aesthetics.pro. - Changed filename (from spEigenGal-55399-baw-mean.fits) so as not to - not be found automatically by the wildcarding in the 1D code. - -------------------------------------------------------------------------------- -v5_4_12 (May 31, 2010) idlspec2d -Tag for new S/N fits for SOS, and revert to SDSS-I templates in Spectro-2D. -Built against specflat v1_11, elodie v1_3, idlutils v5_4_13. - -APOALL,SLITHISTORY,SPECDB_CREATE,SPPLAN2D: Change references to - the now-defunct $ASTROLOG_DIR directory to $SPECLOG_DIR. -BOLTON_SN_FIT: new low-level routine for (hopefully) robust - estimation of exposure SN. -FITSN: Another major change to how the S/N lines are fit. Force the fit - to be a line with a fixed slope (as specified in opSNlimits.par), - and choose the offset such that half the points are below and half - above in the fitting magnitude range. Call this a "median line." - This addresses ticket #754, but really continues ticket #750. -PLATE_SPEC_IMAGE: Smoothly die if zans is missing. -PLOTSN: Sort the points randomly, such that not all the spec2 points - are plotted on top of the spec1 points, and make the points smaller. -PLUG2TSOBJ: Read photoPosPlate files instead of photoPlate files. - This addresses ticke #809. -QUICKWAVE: Always generate the fiber-flat vectors for the corresponding - flat-field image, even if that fiber-flat already exists. If it - exists, it gets over-written. This is confusing behaviour, and - might do bad things in some cases, but addresses ticket #831. -SDREPORTMAKE: Remove this now-unused piece of code. -SPCOADD_V5: Delete QUALITY,REQTIME keywords (ticket #789). -SPREDUCE1D: Back out last change to use Bolton's new spMLpca templates - and change the default of chop_data back. -TRACE_SPARSE_CRUDE: New semi-crude, semi-robust sparse flat tracing routine. - -opfiles/opSNlimits.par: Changes to be consistent with FITSN. Remove - the fiducial_coeff field which was unused. Add a slope which is - set to -0.30 for all cases. The fitting mag range is set to be - the range [snmag-1,snmag] for the new, median-line fits. - -------------------------------------------------------------------------------- -v5_4_11 (May 16, 2010) idlspec2d -Tag to test spMLpca templates (bug fixes to last tag) -Built against specflat v1_11, elodie v1_3, idlutils v5_4_13. - -BATCHPBS: Fix typo on naming script files with /skip2d option. -SDSS_SPEC_IMAGE: Change flat to target. -SPREDUCE1D: Modify to test Bolton's new spMLpca templates, and change - default of chop_data to 3600 to 10000 Ang. - -------------------------------------------------------------------------------- -v5_4_10 (May 15, 2010) idlspec2d -Tag to test spMLpca templates -Built against specflat v1_11, elodie v1_3, idlutils v5_4_13. - -BATCHPBS: Add /SKIP2D option. -BOLTON_MLPCA,BOLTON_MLPCA_DEMO: New proc with Bolton's maximum-likelihood PCA. -COMBSMALLCOLLIMATE: Document explicitly outputs (with /SIMPLE) to be read by - telescope control SOP code. -PLATE_SPEC_IMAGE,SDSS_SPEC_IMAGE: New code for making JPGs of spectra (Blanton). -PLOTSPEC: Along with printing the target flags, print whether it is 'SKY'. -PLUGHISTORY: Update to work with BOSS cartridges 10-17 with 1000 fibers. -SPTHROUGHPUT: Return correct number of vectors if INDX not set. -UUPLOTSPEC: Modified version of PLOTSPEC for interfacing with an online - database at http://boss.astro.utah.edu (Brownstein). - -pro/Makefile: Add templates directory. -pro/templates: Files (code + data files) for generating Bolton's new templates, - but need to clean this up. -templates/spMLpcaCVstar-55332.fits,spMLpcaQSO-55332.fits, - spMLpcaGal-55332.fits,spMLpcaStar-55332.fits: New templates - to test from Bolton. Galaxies span [1800,10020] Ang, QSOs [580,9963] Ang, - stars [3580,10318] Ang, CV stars [3581,10315] Ang. - -------------------------------------------------------------------------------- -v5_4_9c (May 5, 2010) idlspec2d -Tag for SOS with gzipped files. - -APOFIX: Remove references to $ASTROLOG_DIR, instead using $SPECLOG_DIR. - New keyword SOS_DIR? Put back in code to edit the logsheet-$MJD.fits - file when the quality of an exposure is changed. -APOREDUCE: Report "WARNING" message if the HARTMANN header keyword is - set to either "Left" or "Right". Note that this creates a lot - of unnecessary warning messages on the SOS web page. -BESTFOCUS: Allow images where the shift was more than 2.5 pix (those were - intentionally ignored previously). -COLLIMATE: Call COMBSMALLCOLLIMATE if the SUBFRAME keyword exists in - the header. -COMBSMALLCOLLIMATE: New fast collimate routine to focus - sp1 and sp2, uses subarray readouts, single region, and splits the - difference between red and blue offsets. Called by "sop doHartmann" - as part of the new field acquisition. -SMALLCOLLIMATE: New routine. Don't know how this differs from the other - collimation routines? - -bin/filecheck.py, sos_redorunner, sxpar.py: Read gz files -bin/getPlugmap: Get plugmaps for multiple-pointing plates, assume "A" - pointing if not specified. -bin/putils.py: Add openRead to open a normal or gz file for reading. -bin/run_collimate.csh: Print more blank lines. -bin/rundaily_riemann: Bug fix (typo). -bin/rundaily_riemann_script: Bug fix for env variables (typo). -bin/sos_apocommand: Add quality type to error message. Add directory - as well as files. -bin/sos_apocontrol: Added print statement of options. -bin/sos_aporedo,sos_apostart: Work with gz files and filesequencer -bin/sos_filesequencer: Handle cases where files need to go into aporeduce not - in the order the come out of the icc. Right now it special cases - arcs and flats. Then changed the code to allow all arcs, but switch - the order if the arc comes in before the flat. -bin/sos_runnerd.py: Display output of svn commands to log. -bin/sxpar.py: Work with gz files. -examples/opLimits.par: Enlarge all the ranges for XMID and WAVEMID. - Further analysis reveals that the scatter in wavemid is larger than - the original constraints and producing a lot of warnings that are being - ignored. Following figures from David Harris that show scatter, change - limits to have center at WAVEMID= 4908 4995 7987 8071 - Issue warning if more than 10 Ang from these best values, and error if - more than 20 Ang (red) and 15 Ang (blue). - -------------------------------------------------------------------------------- -v5_4_9a (Apr 30, 2010) idlspec2d -Tag before SOS changes for gzipped files. - -APOFIX: What changed ??? -BATCHPBS: Add QUEUE keyword to specify the queue for qsub -PCA_GAL: Add /FLUX and /REPLACE keywords. The /FLUX option loads in - a save set from a previous call with this option??? -PCA_SOLVE: Added FLUX keyword -PLATELIST: Tiny html fix. -PLATEMERGE: Target flags should be 64-bit (type LONG64). - Bug fix to select correct RUN2Ds when several exist in the platelist file. -SPCALIB, SPREDUCE, SPREDUCE2D: Add /writeflatflatmodel to call to - SPREDUCE2D to add the model image for flat-fields to the spFlat files. - -bin/filecheck.py: Test for quality=test|excellent fits files. Fixed bug - if there is no keyword. -bin/loadSN2Value,updatePluggingStatus: Now update quality on --update -bin/putils.py: Change method of executing commands and handling svn. - Now command output is displayed as the command executes, not all - when it finishes. Files are not added to svn as they are created, - but right before check-in. -bin/rundaily: Send output of getWikiMJD to the bitbucket. -bin/rundaily_riemann_script: Use env variables that are set in .bashrc . -bin/sos_apocommand: Skip all non-excellent images and test exposures. - (But not actually done, see ticket #684). -bin/sos_apocontrol: Run a status after start. -bin/sos_aporedo: Outout b1 in real time and wait for all processes to complete. -bin/sos_runnerd.py: Changed method of executing commands and handling svn. - Now command output is displayed as the command executes, not all - when it finishes. Files are not added to svn as they are created, - but right before check-in. - -------------------------------------------------------------------------------- -v5_4_9 (Apr 16, 2010) idlspec2d tested on IDL 7.0 - 7.1 -Tag to fix install problem. -Built against specflat v1_11, elodie v1_3, idlutils v5_4_13. - -opfiles/Makefile: Need Makefile for install. - -------------------------------------------------------------------------------- -v5_4_8 (Apr 16, 2010) idlspec2d tested on IDL 7.0 - 7.1 -Substantial bug fixes to SOS scripts. -Spectro-2D uses photoPlate files in new directory tree. -Built against specflat v1_10, elodie v1_3, idlutils v5_4_13. - -APO_LOG2HTML,APO_PLOTSN,APOREDUCE: Replace "APO Spectro" with "BOSS Spectro". -APO_PLOTSN,EXTRACT_OBJECT,FITSN,PLATESN,PLOTSN,QUICKEXTRACT: - Consolidate all the fitting magnitudes into one parameter file, - and use FITSN to reference that file. This is to address ticket #750 - and ticket #749. -APOFIX: Bug fix. Add /EXCELLENT keyword. -APOREDUCE: Copy the single-exposure S/N plot to the COPYDIR directory - (ticket #675). -BATCH1D,BATCH2D,DOSCATFIT,EXTRACT_ROW_SAFE,FIT_TSET,FITARCIMAGE_OLD, - FLATINTERP,FUNCCHEB,GAUSS_SMOOTH,LOCATESKYLINES_TEST,MONSTER, - MYFLUXCALIB,READ2DOUT,READSMEAR,SPCOADD_FRAMES,SPCOMBINE,SPFLUX,USHIFT: - Remove unused code. -BATCHPBS: Call new proc SDSS_PLATE_SORT to generate the photoPlate files. -FINDSPEC: Allow this to work with different plugmap structures by - just explicitly using fiberid,ra,dec. - Trim whitespace on run2d,run1d. -FITFLATWIDTH: Assume bundles have 20 fibers, and get rid of numbundles keyword. -LEDFLAT: Major changes to loop through each pixel, computing statistics - using a subset of the best images for each pixel. -PCA_GAL: Add headers and other minor fixes. -PLATELIST: Exclude runz subdirs from searches for run1d files. -PLOTSN: On right-hand plots, only plot the objects used in the fit range - and not all the faint, noisy points. - Add SNMIN keyword, and default to 0.5, to exclude all the very - low-signal fibers from the fitting. Addresses ticket #754, although - with the a simple solution rather than a well-motivated one. - Show the fit line for each spectrograph. -PLUG2TSOBJ: Only look for photoPlate files in plate redux directory, - and not in subdirectories. -QUICKEXTRACT: No need for config. - Issue flexure warning only if larger than 0.5 pix, not 0.25 pix. -QUICKTRACE: Remove "Argon in flats" message until its triggering can be - tracked down (ticket #755). -SDSS_PLATE_SORT: New proc for sorting photoPlate files to be the same - as a given plugmap. This addresses ticket #721. -SDSSPROC: Remove CHECKSUM,DATASUM keywords from headers so that they are - not propogated to downstream files (ticket #756). - Measure gain values for the new r2 CCD from LED flats #113197-113198, - to be used starting on MJD 55300 (13/14 April 2010). - The exact location, width, and counts of the serial transients - appear to be different on the new r2 CCD as compared to the old - r2 CCD. These values have been appropriately updated in - SDSSPROC->SDSSPROC_BADFORMAT for starting on MJD 55300 (ticket #766). -SPCALIB: Remove deprecated keyword in FITFLATWIDTH. -SPCOMBINE_V5,SPFLUX_V5,SPFLUXCORR_V5,SPCOADD_V5: Clean up code to not - pass the number of pixels in images, but compute based on the images. -SPCOMBINE_V5: Hack to limit the combine to either b1+r1 or b2+r2 in the - case where any images from one of the cameras is missing. - This addresses ticket #764, but in an inelegant way. -SPPLAN1D: Get rid of unused file name definitions. -SPREDUCE: Look for photoPlate files in current reduction directory, - rather than using env variables to determine. -SPTHROUGHPUT: Remove hard-wired number of fibers. - -bin/loadSN2Value,updatePluggingStatus: Better db error-handling. -bin/sos_aporedo,sos_redorunner,sos_runnerd.py: - Results have an option to now go into - http://sdss3.apo.nmsu.edu/~observer/sosredo/logfile-current.html and - /data/boss/sosredo. -etc/BG14.txt,FG3.txt,altbg14.txt,blue.bkpts,brg.08.gk.01,f8v.ab,f8vspline.dat, - fluxcorr.bkpts,intrinsic1.dat,intrinsicF2.dat,red.bkpts: - Remove unused files. -Makefile: Add opfiles subdirectory. -examples/opLimits.par: Increase the values for XSIGMA based upon the - best achievable on MJD 55300. Yellow at 1.10 1.15 1.10 1.25 (b1 b2 r1 r2) - and red if 0.05 worse than tose values. Decrease the values for - WSIGMA to yellow at 1.05 in all cameras, red at 1.15. -opfiles/opSNlimits.par: New file for tracking the S/N-fitting magnitudes. - -------------------------------------------------------------------------------- -v5_4_7 (Mar 31, 2010) idlspec2d tested on IDL 7.0 - 7.1 -Substantial changes to SOS scripts. -New Spectro-2D with rewrite of wavelength fits and use BOSS pixel flats. -Built against specflat v1_9, elodie v1_3, idlutils v5_4_13. - -APOD: New cheat script for running SOS at Apache Point (not documented). -APOFIX: Update default astrolog_dir. Remove all of the code to edit - the APO logfile, and instead spawn a call to sos_aporedo. -APO_LOG2HTML: Include links to S/N plot for each individual exposure. -APO_LOG2HTML,APOREDUCE: Include cartid in the last HDU of the logfile, - and display on the web page. This does change the data model for - the logfile, meaning that we cannot have this and the previous - version of SOS writing to the same file. -APO_PLOTSN,APOREDUCE: Generate S/N plots for individual exposures as well - as for the full plate. -ARCFIT_GUESS, EXTRACT_IMAGE, GEN_SCATTER, MYFLUXCORR, SKYSUBTRACT, -SMOOTH_HALO2D, SPFLUX_READ_KURUCZ, VDISPFIT, ZCOMPUTE, ZCOMPUTE_QSO: - Commented out some print updates that were making the PBS log files - large (all those with string(13b)). -APO2D,QUICKTRACE,SPREDUCE: Simplified call to READPLUGMAP, and remove - call to SORTPLUGMAP. -APOREDUCE: Get airtemp from the MC1TEMDN or MC2TEMDN keyword for BOSS, - since the AIRTEMP keyword does not exist. -APOREDUCE,APO_PLOTSN: No need to use the configuration file to determine - the number of fibers. -BATCHPBS: Add option to join stderr and stdout in log file (kushner) - Create a set of files per MJD observed, even though they should be - identical. -COLLIMATE: Report failure if Hartmann's not in proper sequence - KD -COMBINEBPM,FLATFIELD: New routines for generating BOSS pixel flats from LED - images (Olmstead). -CONFIGURATION__DEFINE: Increase spcalib_trace320cen_deltax by a small - amount for the r1 camera to be consistent with the median solution. -FIND_RESOLVE: Bug fix for 3-digit plate numbers. Deprecate, putting the - logic internal to PLUG2TSOBJ, which is the only place this was called. -FINDSPEC: Make consistent with platelist files. -FITARCIMAGE: Major changes to the iteration of the fitting and the - tracking of rejected arc lines. Iterate the full fits, rejecting at - most 1 arc line per iteration. Track the reason for rejecting lines - and return in REJLINE. Final fits are done where the higher-order - terms in the trace-set are replaced with polynomials (cubics). - Those final fits use the actual centroid locations + errors, rather - than the "replaced" positions (as was done in the last version of this - code). Using the actual centroids should be fine with the smoothed - higher-order terms. - Warning message if Cd I 3610 lamp not good (ticket #641). - Issue warning about big wavelength gap is bigger than log10=0.05 - instead of 0.04, such that a gap between 3650-4046 is barely OK. - Comment back in the failure if log10>0.10. - The fits were sometimes being effected by a fiber with very bad - fits, where loglam would be nonsense values. The floating point - precision was then making the fits to all of the fibers much noisier. - An example of this was on palte 3651/55246 on the frame - sdR-b2-00108656.fit . For such bad fibers, always interpolate over - those fiber coeffs before calling traceset2xy. -FLUX_DISTORTION: Bug fix where some values of 320 that represented the - plate radius in mm were replaced with the number of fibers. - Change those numbers to 325 mm to avoid future mis-interpretations. - Change MINFLUX to a 5-element array, with the minimum flux reduced - from 5,5,5 nmy in gri-bands to 2.5 nmy in r-band. -IDLSPEC2D_VERSION: Replace spawn to shell script bin/idlspec2d_version with IDL - (Weaver). -LEDFLAT: New proc for making pixel flats from Natalie's LED flats. -LOGSHEET: Print timestamp from TAI-BEG in header, since TAI keyword no - longer exists. -PCA_GAL: Updates from Weaver. Add optional BINSZ keyword. -PLATELIST: Include all of the GAL_CMASS* flags for the high-z LRGs. -PLATELIST,UPDATE_PLATELIST,UPDATE_PLATE_RELEASE: Move the spPlateList.par - files from this product to the speclog product. -PLATEMERGE: Changes to the outputs in the ASCII file, make shorter aliases - for some of those ASCII headers, and trim unneccessary whitespace - from the string values. - Include manual redshifts and comments from spInspect files. - Include more values from the new plugmaps (lambda_eff,bluefiber,zoffset). - Make the new target flags 64-bit (bug fix). - Add /INCLUDE_BAD option. -PLATESN,PLOTSN: Make the fiducial magnitudes all brigher by 0.80 mag, so that - one is analyzing w.r.t. the same magnitudes as SOS. PSF magnitudes - are used for stars here, whereas fiberflux2 are used for SOS. -PLOTSPEC: Smooth flux values for /allexp option. -PLUG2TSOBJ,READPLUGMAP,SPREDUCE: Fix and simplify finding photoPlate files, - insisting that one exist for each plate+MJD that a plate is observed. -QAPLOT_ARCLINE: Plot rejected arc lines (in red). Make sure all arc lines - show up in the lower plot by at least putting a point near the location. -QAPLOT_SKYSUB: Plot median |chi| rather than chi^2, and compare to Gaussian. -READONESPEC: Work with either the 2048-row SDSS-I spectra or the 4128-row - BOSS spectra (but still assume same number of rows in blue or red). -READPLUGMAP: Do the sorting internal to this routine, rather than a later - call to SORTPLUGMAP. Include SPECTROGRAPHID,FIBERMASK to call. - Fix crash condition in ticket #604. - Demand that FIBERMASK is not already set. -READSPEC: Add optional output ZMANUAL. - For cases where the data files cannot be found, default to either 640 - or 1000 blank rows in the outputs based upon MJD, with 1000 fibers - assumed for data starting on MJD 55025. (One-line change at line 206.) -SDSSPROC: Bug fix for ticket #610 in identifying the pixel shifts. - There was a bug in defining one of the overscan transients in the b2 CCD - (line 144). Aside from that, the transient is not always easily detected - in all rows. The somewhat hacky solution is to apply the same shift - (or no shift) to any row where the transient is not easily measured. - Re-organize to call much of the code, like bias and flat-subtraction, - for either SDSS or BOSS data. - Look for compressed pixel bias or pixel flat images. -SORTPLUGMAP: Remove this routine, and make it internal to READPLUGMAP. -SPADD_GUIDERINFO: If this is an old SDSS-I file, then the timstamps are all - offset and need correcting; if BOSS, then no corrections. - Test that FWHM values are not NaN. -SPCALIB: Print proftype. -SPCALIB,SPREDUCE: Add REJLINE to the ARCSTRUCT structure, allowing one to - include rejected arc lines in the QA plots. -SPCALIB,QUICKWAVE: Remove numberBundles in call to FITARCIMAGE. -SPCOADD_V5: Remove unneccesary keyword to FLUX_DISTORTION call. -SPMANUAL: New function to read manual inspection files (spInspect). -SPREDUCE1D: Replace spawn of Unix mkdir command with FILE_MKDIR. -SPTHROUGHPUT: Fix directory structure for BOSS. -SUPERFLAT: Change min + max wavelength ranges such that it spans the range - that includes at least one good pix. Bug fix in computing the - flux scaling between the fibers. - -bin/sos_apocommand: Process all images, even non-BOSS images -bin/rundaily, rundaily, rundaily_riemann_script: Always exit zero so as - not to upset cron. -bin/sos_redorunner, sos_aporedo, sos_aporedomakecmd: New re-do command -bin/sos_apostart: Don't sued nuce. -bin/rundaily_riemann_script: Added /zcode. -bin/sos_runnerd.py: Only do svn ci durring bookeeping. -bin/sos_runnerd.py, sos_classes.py: Add exposure number option. -bin/loadSN2Value, updatePluggingStatus: New code to load S/N^2 values - into platedb. -doc/www/spectroSOS.html: Update SOS stop / restart instructions. - Document warning message pertaining to ticket #641. -etc/lamphgcdne.par: Add back in the lines as 3650+3654 and do not mark - as blends, so that the 3650 line can be used when the 3610 line - is too faint (ticket #644). Also add back in 6506, 8408, 9313 lines - since the code is more robust against bad lines now. Add new - lines at 9657, 9784 (both faint Ar I lines). -etc/spPlateList.par: Move this file to $SPECLOG_DIR/opfiles. -examples/opLimits.par: Update WAVEMID values for sp2 to center up - the new collimator masks (ticket #636). -pro/Makefile: Add specflat subdirectory. -src/Makefile: Make compatible with GNU make (Weaver). -ups/idlspec2d.table: Added setupOptional("platedb") - -------------------------------------------------------------------------------- -v5_4_6 (Feb 9, 2010) idlspec2d tested on IDL 7.0 - 7.1 -Tagged to fix critical ticket #600 on SOS. -Built against specflat v1_8, elodie v1_3, idlutils v5_4_12. - -Major environment change: Global replace of SPECTRO_DATA -> BOSS_SPECTRO_REDUX -(B. A. Weaver, 2010-01-26) - -BATCHPBS: Typo fix for making match files. Add /ZCODE option to setup up - and run Zcode. -BESTFOCUS: Dawson and Olmstead code for solving for CCD focal plane. -CCDTILT: New proc to measure CCD tilt from a whole sequence of Hartmanns, - based upon the COLLIMATE routine. -CHUNKINFO: Read info from $PLATELIST_DIR/platePlans.par file. -FINDSPEC: Warning message for missing files. -PLATELIST: Fix bug finding the spDiagcomb file. - Fix umask for the PBS log files (Weaver). - Add interpretation of the BOSS target flags, and include - %LRG1,%LRG2 in the outputs. - Include SURVEY, PROGRAMNAME, CHUNK and remove PROGNAME,CHUNKNAME. - Also included are TILE, RACEN, DECCEN, EPOCH from platePlans.par - since those are probably more trusted than other sources. - Include N_TOTAL as total number of objects (640 or 1000). -PLATEMERGE: Optional calling sequence with RUN2D rather than with PUBLIC. - Read all input data from READSPEC instead of other various wrappers. -PLUG2TSOBJ: Simplify to only support photoPlate and calibPlateP files. - Remove PLUGMAP option and add RUN2D option. -READSPEC: Small changes to support change to PLUG2TSOBJ. -SPREDUCE: Read TILEID from the plugmap file, since it is no longer - in the sdR file headers (ticket #562). -TRACE320CRUDE: Bug fix for when only a few good pixels exist in a row - (ticket #600). - -bin/rundaily, rundaily, rundaily_riemann_script: Scripts for after daily - data transfers. -bin/sos_apospammer: Updated to roll log and reset error messages. -etc/spChunkList.par: Remove file, as this is deprecated by - $PLATELIST_DIR/platePlans.par -examples/opLimits.par: Remove the warnings for SUCCESS_QSO in the platelist. - -------------------------------------------------------------------------------- -v5_4_5 (Jan 23, 2010) idlspec2d tested on IDL 7.0 - 7.1 -Tagged to fix batch processing of BOSS data. -Built against specflat v1_8, elodie v1_3, idlutils v5_4_12. - -APO_CHECKLIMITS: Different font formatting (Weaver). -BATCHPBS: Add automatic plate matching (Weaver), but adds dependency - on the sas product. -EXTRACT_OBJECT: Fix bug where FRAMESN2 was being set to 1 instead of 0 - when there was no flux on an exposure. -GET_MJD_DIR: Use FILE_SEARCH() instead of calls to SPAWN, and only - return directories and not file names. -PLATELIST: Support new RUN2D,RUN1D directory structures. - Put RUN2D,RUN1D in the html files rather than PROG,CHUNK. - Switch from html to xthml (Weaver). - Only mark plates as 'bad' or 'good', not 'marginal' (too confusing). -PLOTSPEC,READSPEC,READONESPEC: Add support for RUN2D,RUN1D. -READPLUGMAP: Remove PSFFLUX*,FIBERFLUX*,FIBER2FLUX*, since those appear - to all be zeros in the platelist files. -SPCOMBINE_V5: Accidentally had removed setting the name of one plot file. -SPREDUCE2D: Fix mis-formatted names for output log and PostScript files. - -bin/sos_apostart,sos_apocontrol: Added a delete for the socket file. - Created more descriptive error and warning messages -bin/sos_apocontrol: Update stop messages. -pro/Makefile: Include all the pro/science subdirs. - -------------------------------------------------------------------------------- -v5_4_4 (Jan 18, 2010) idlspec2d tested on IDL 7.0 - 7.1 -Tagged to allow batch processing of BOSS data. -Built against specflat v1_8, elodie v1_3, idlutils v5_4_10. - -pro/Makefile: Turn this into a common makefile for all subdirs. -pro/*/Makefile: Remove these old makefiles. - -------------------------------------------------------------------------------- -v5_4_3 (Jan 17, 2010) idlspec2d tested on IDL 7.0 - 7.1 -Tagged to allow batch processing of BOSS data (but crashes). -Built against specflat v1_8, elodie v1_3, idlutils v5_4_10. - -BATCHPBS: Remove accidental return before calling qsub. -SPREDUCE2D,SPCOMBINE_V5: Fix typos. - -------------------------------------------------------------------------------- -v5_4_2 (Jan 17, 2010) idlspec2d tested on IDL 7.0 - 7.1 -Tagged to allow batch processing of BOSS data (but crashes). -Built against specflat v1_8, elodie v1_3, idlutils v5_4_10. - -READSPEC,SPREDUCE1D,READONESPEC,SPCOMBINE_V5,SPPLAN1D,SPREDUCE, - SPPLAN2D,SPREDUCE2D: Implement new data model for directory - structure that makes use of $RUN2D and $RUN1D subdirectories. - Remove some of the file name declarations in the plan files - in preference to generating those just based upon plate+MJD. -APO_COLOR2HEX: Change the yellow color from a bright yellow that's hard - to see to a darker yellow. -APO_LOG2HTML,APOREDUCE: Generate a JPEG file instead of a GIF. -APO_PLOTSN: Change fit magnitudes passed to PLOTSN from 20.33 to 22.0 in g-band - and from 20.06 to 20.0 in i-band, and set the other unused bands to zero. -APOREDUCE: Create output directory if it does not exist. -ARCFIT_GUESS: Allow more than 4 coefficients in initial wavelength solution. -BAD_BOSSFORMAT: New routine to search for shifted rows in raw images, - like on MJD 55176 exp #104648,104652 -BATCHPBS: New proc for batching both Spectro-2D and Spectro-1D with PBS. -BOSS_GAIN: New proc for computing gains on BOSS CCDs. -COLLIMATE: Display specific commands for observers to cut & paste. - Simplify the basic call to this routine to compute the Y offsets - in a hard-wired region in the center of each CCD. The offset maps - are produced only if the /DOPLOT option is set. - Tested against BOSS data on MJD 55113, and SDSS-I data on MJD 54932. - Changed calibrations that convert from pixel shifts to offsets. - Test for proper values of FFS, NE, HGCD in headers. -CORRECT_CROSSTALK: Include crosstalk correction in the spec2d processing chain -EXTRACT_OBJECT: Evaluate the S/N at fainter mags: change from g,i=20.2,19.9 - to 22.0,20.0. -FITARCIMAGE: Filtering of initial crude centroids was done with xy2traceset - with only 3 coefficients, which is too few for BOSS. Change to - using the value of NCOEFF (line 224). - Add more traceset fits at the end, rejecting arc lines that are too - noisy or too far offset from the solution. Do the final fit by - weighting each line by its scatter from the previous solution. -FITSN: Change magnitudes to fainter values. -FITDISPERSION,FITFLATWIDTH: Return the medians in each quadrant - excluding masked portions of the CCD. -FITFLATWIDTH: Generate a mask that is the same within each bundle - before sending the width to the trace-set fitting. This fixes a - crash condition on plate 3538/55124-r1, where there was a fiber - with only a few unmasked pixels that was getting a crazy fit. - For the case of no input mask (INMASK), then generate a mask - to use only good pixels. -GUIDERMONFILE: New procedure to create guiderMon file using proc-gimg files. -IDLSPEC2D_VERSION: Now have this just call the shell script idlspec2d_version. -LOCATESKYLINES: Do not use any sky lines that don't have at least 80% - good centroids. This mattered for 3790/55208-b1, where the line - at 6363 Ang was only being well-fit in a few fibers. -LOGSHEET: Default to 'b1' only. -PLATESN: Change fiducial mags from [20.2, 20.25, 19.9] to [22.0, 21.0, 21.0]. -PLOTSN: Change fiducial mags from [20.0, 20.2, 20.25, 19.9, 19.0] - to [20.0, 22.0, 21.0, 21.0, 20.0]. - Plotting range to include FITMAG and SNMAG. -PLOTSPEC: Add option to do on-the-fly template fits with "z". -PLUGMAP_VERIFY: New code to run some sanity checks on plate designs - (plPlugMapP files). -QUICKBIAS: Reject if >40% pixels bad, not 10%, since we are currently - masking 31% of the blue images and 12% of the red that are beyond - the useful wavelength ranges. -QUICKEXTRACT: Include more calling parameters to fitflatwidth. - Change mangitudes at which to evaluate S/N from 20.33 to 22.0 in g-band - and from 20.06 to 21.0 in i-band. - Remove the code that would issue the warning messages - to the SOS web page about bad chi^2 residuals. - No longer pass SKYCHI2SET to SKYSUBTRACT routine, and do not output - to the FITS file. - Trigger flexure warning message at 0.25 pix instead of 0.15. - Include the raw data header in the output FITS (sci-*) file, - including the "FRAMESN2" keyword. -QUICKTRACE: Fix typo. Include more calling params to trace320crude. - Consider a fiber bad only if any of the following mask bits are set, - but specifically not if BADTRACE is set. -QUICKTRACE,SPCALIB: Change call to XY2TRACESET to ignore values that - fall on bad parts of the CCD. -QUICKWAVE: Include more calling params to fiberflat and fitarcimage. -RDNOISE_HISTORY: New proc for computing read noise history of BOSS CCDs. -SDSSGUIDE: Comment-out the parts of code that reads the plugmap files - and that computes the telescope offsets. - Remove the camera offsets that were used by the old camera hardware; - the code will presently only work with the new camera. -SDSSPROC: Images are rotated 180 deg starting on MJD 55113. - So we no longer need to rotate those images. The gains have - been remapped, and the masked regions, to these rotated coordinates. - Declare Hartmann exposures (Left or Right) to be 'test'. - Update BOSS gain values based upon outputs of BOSS_GAIN flat-field tests. - Add keyword /APPLYCROSSTALK and call to cross-talk fixing code. - Pass /SILENT option to SPHDRFIX. - Only call WARN_DAYTIME if not called silently. - Saddlebags swapped between r1 and r2 on MJD 55132. This changes - the gain on both CCDs. The high noise on the lower-left of r1 - is now fixed, and we've moved a higher noise on r2 (but not as bad). - Measure gain from LED flats on MJD 55142 on exposures 103065+103066. - No longer splice in columns to the center of b1+b2 from the edges; - the central columns were supposedly fixed on MJD 55141, and data - predating that actually looks like it shouldn't have two extra - columns in there either. - Only call WARN_DAYTIME for science exposures. - Remove BZERO,BSCALE from the headers. These appear newly in - the BOSS headers, and otherwise propogate to the reductions. - This is ticket #400. - New internal proc SDSSPROC_BADFORMAT to identify and fix shifted - rows in the raw image (ticket #423). - Cache the code versions, since they involve calls to spawn that - are very slow. -SKYSUBTRACT: Only call REDMONSTER routine if RELCHI2SET keyword is passed, - thus disabling those error messages from appearing on the SOS - web page. -SORTPLUGMAP: Bug fix assigning dead fibers (as with plate 3674/55153). -SPADD_GUIDERINFO: Interpret the new guiderMon files generated by - GUIDERMONFILE, while being backwards-compatible with the old ones. - Guider offsets measured for all enabled fibers, and FWHM measured - from only those where focusoffset is <100 microns (in-focus fibers). -SPFLUX_V5: Fix plotting limits. -SPHDRFIX: Add /SILENT option. -SPREDUCE1D: Force the use of /CHOP_DATA until we fix the templates. -SUPERFLAT: Fix plotting range. - Better selection of which fibers to use (otherwise fails - on plate 3604/55146-b1), not getting thrown by a few fibers. -TRACE_CEN: In intial fit, explore a small range of fiberspace around - the nominal, as well as the cross-correlation. That scale range - is +/- 0.5%. - -Makefile: Add config to install directories. -bin/aporsync_alllog.sh, aporsync_blue.sh, aporsync_logs.sh, aporsync_red.sh, - data_rsync.sh, killdata.sh, sos.sh, sos_redo, sos_start, sos_status, - sos_stop, spamdup, spreduce_batch, spsyncrobot.sh, spsyncrobot_start, - spsyncrobot_stop, startapo.sh: Remove all these deprecated routines -bin/fb_classes.py, getPlugmap, sos_apoclog, sos_apocontrol, sos_apostart, - sos_batchd, sos_classes.py, sos_runnerd, sos_runnerd_processlist, - sxpar.py: New routines for Son-of-Spectro -bin/idlspec2d_version: Script to return SVN version of the idlspec2d product. - This is to replace the IDL version of this. -bin/run_collimate.csh: Script to run collimate in parallel processing (Dawson). -bin/sos_README: Updated documentation for Son-of-Spectro -doc/www/spectroSOS.html: Include warning message about "Electronics shifted". -examples/cartridgeInfo.par: Add entries for cartridges 10-17, with the - same values for all of them. This is for SDSSGUIDE. -examples/lamphgcdne.dat: Remove the Ne I line at 8118 Ang, since the - arc line at 8115 was being called 8118. - Remove the line 7943 which appears to get incorrectly identified. -examples/opLimits.par: Define the XMID,WAVEMID to be those observed - with plate 3552/55142 on cartridge 11. - Set S/N^2 limits as 16 in blue and 26 in red for "good", and - 13 + 22 as "marginal" (yellow). The red limits are based upon - an analysis posted by Peter Brown on Nov 30. -examples/plPlugMapP-verify.par: Data file of header keywords to check - using the PLUGMAP_VERIFY code. - -------------------------------------------------------------------------------- -v5_4_1 (Sep 25, 2009) idlspec2d running on IDL 5.4 - 7.1 -Tagged to begin development for BOSS spectrographs, backing -out SEGUE-specific development. -Built against specflat v1_8, elodie v1_3, idlutils v5_4_4. - -APOREDUCE,QUICKTRACE,QUICKWAVE: Use BOSS configuration. -CALCSCATIMAGE: Fix for non-square images! -COLLIMATE: Update to work on the BOSS data. Simplify the code to - only look for offsets in Y, and do so by looking at subpixel - shifts rather than fitting to the shift from integer-pixel shifts. - The calibration for the collimator and focus rings will be - different for BOSS, because the CCD pixels are smaller by 15/24. - Add /PRINT option to print the table of values used for the figure. -CONFIGURATION__DEFINE: Configuration file to set pipeline parameters - for either SDSS-I or BOSS. -EXTRACT_OBJECT: Simplify call to CALCSCATIMAGE. - Make calls to DIVIDEFLAT less verbose. - Bad columns only if 30% of pixels (not 10% previously for SDSS-I). -EXTRACT_ROW: Hack to keep the C code from failing, by setting masked - pixels to have values of invvar slightly above zero. - This is ticket 298. -FITARCIMAGE: Pass parameters (ACOEFF,DCOEFF) to ARCFIT_GUESS using _EXTRA. - New input keyword WRANGE to explicitly limit the wavelength range - of the arc lines used. - New input keyword NUMBERBUNDLES. - Get rid of /STICKY in all to XY2TRACESET, since that rejects too - many arc lines. -GET_TAI: Work if only TAI_BEG and EXPTIME are defined (which is all we - seem to have for BOSS commissioning). -PLOTSPEC: Support for plotting BOSS files with different numbers of fibers. - Print old or new target names. -QAPLOT_ARCLINE: Minor plot changes. -QUICKTRACE: - Call to XY2TRACESET using errors, which is much slower (by 10X), - but prevents crashes from extrapolating the traces to bad positions. -READPLUGMAP: Read the plateHoles file and append some tags to the plugmap - structure. -READSPEC: Support for reading BOSS files with different numbers of - fibers per plate. This should be backwards compatible, except - with different behaviour if one tries to read non-existent files. - Previous behaviour was to return 640-length vectors of zeros. - Now return 1-length vectors of zeros, since we in general don't - know how many objects there are per plate. - Optional return value of NFIBER to tell the number of fibers per plate. -SDSSPROC: Hack for reading the first BOSS test data on MJD 55052, - which are not yet properly-formatted images. -SKYSUBTRACT: Change calls to bspline_iterfit to pass all double-precision. -SPCALIB,SPCOMBINE_V5,SFLUX_V5,SPFLUXCORR_V5,SPCOADD_V5: - Changes to use Alex's new configuration definitions for SDSS-I/BOSS. -SPCALIB: Pass configuration values to FITARCIMAGE. -SMOOTH_SUPERFLAT: Return zeros for the returned image outside of the - wavelength range used for the fit. Also don't include the - crazy values outside the fit region in the plots. -SPECHEADERS: New routine for consolodating all of the spectro FITS headers - into a single FITS binary table. -SPPLAN1D,SPPLAN2D,SPREDUCE1D,SPREDUCE2D,SDSSPROC, - SPCOADD_FRAMES,SPCOMBINE,SPCOMBINE_V5: Use the /noshell option - for some calls to spawn (except for mkdir,uname,ls). -SPPLAN_FINDRAWDATA: Look for .fits files as well as .fit, since such - files were written on MJD 55052. -SPREDUCE1D: Add CHOP_DATA keyword for reducing the new BOSS spectra with - the old SDSS templates that do not have sufficient wavelength range. -SUPERFLAT: QA plot now only plots percentiles of the fiber values at - each wavelength, rather than a very large number of points. -TRACE_CEN: New routine for finding the initial X positions of the traces, - to replace TRACE320CEN. The logic is based upon the new code - in the fiber-mapper. -TRACE320CEN,TRACE320CRUDE: Fix error in guessing the position of the - first fiber. Add new keyword MTHRESHFACTOR, defined in configuration. -TRACE320CRUDE,SPCALIB: Use TRACE_CEN instead of TRACE320CEN. -ZFIND: Add /mask_emission option (Vaishali), although should this be - done external to this routine? - -etc/lamphgcdne.dat: New lines and their fluxes added in the UV - and the near-IR for the BOSS detectors. Remove the line - at 6506 Ang from the list because it gets confused with - a line at 2nd-order in the b1 spectrograph. -examples/opLimits.par: New parameters for BOSS. Not made to be - backwards-compatable with SDSS-I. -examples/opConfig-55025.par,opECalib-55025.par: CCD parameter - files for Lauren's original simulations. -examples/opConfig-55026.par,opECalib-55026.par: CCD parameter - files for real BOSS data based upon Gunn's document - "Arrangement of Serial Data for BOSS CCD Images Into Images". - We don't yet use these for real data, but use all the hacks - within SDSSPROC instead. -ups/idlspec2d.table: Add optional dependence on the platelist product, - which is used to add information from the plateHoles files to the - plPlugMapM files. - -------------------------------------------------------------------------------- -v5_4_0 (June 19, 2009) idlspec2d running on IDL 5.4 - 7.0 -Tagged to begin development for BOSS spectrographs, backing -out SEGUE-specific development. -Built against specflat v1_7, elodie v1_3, idlutils v5_4_2. - -ARCFIT_GUESS: For the red camera, extend the range of the last - polynomial term, which is necessary for some test data taken - where the wavelength ranges were shifted by large amounts. -BATCH1D,BATCH2D,NEBULAR_BATCH: Fix the priority option to call - '/bin/nice -19' rather than '/bin/nice -n 19' (for example). -CALCSCATIMAGE: Change default break points to NSCATBKPTS=16 (from 40). -EXTRACT_ASYMBOX: Variant of the boxcar-extraction routine that allows - for asymmetric and/or variable windows (Burles). -EXTRACT_BOXCAR: New /IDL keyword to call pure IDL boxcar extraction (Burles). -EXTRACT_OBJECT: Roll back to using RA,DEC from the headers, and try to fix - that upstream of this if it's ever a problem. - Don't return SIGMA from call to FITSN (since it's not used). - Output X structure as HDU #7 to be complient with data model. - Output superflat as HDU #8 (which is used by SPTHROUGHPUT). - Remove HDUs after that unless/until added to the data model. -FIBERFLAT: Fix test as to whether B-spline fit failed. -FLUX2MAGGIE: New simple wrapper for FILTER_THRU. -GET_PLATECENTER: Remove since we'll want this functionality upstream - if needed. -GUIDERMOVIE,GUIDERMPEG: Update to use the dark frames for the original - SDSS guide camera that are now checked into the etc directory, - rather than a hard-wired file name that only existed at sdsshost.apo. -PLUG2TSOBJ: Remove undocumented PLUGFILE keyword. -READSPEC_FOOTPRINT: New routine for reading all spectro objects - within the footprint of a specified plate. -SDSSGUIDE: New IDL guider for the Sloan Telescope. -SOLVEFILTER: Update to use current photometry files. -SPCOADD_V5: Re-remove the synthetic magnitude HDU and the S/N HDU - that should have never been at the end of the spPlate files. - Add superflat as HDU #8. -SPFLUX_V5,SPCOMBINE_V5: Revert to v5_2_0 version until we document - and go through v5_3 branch changes. -SPFLUX_BASESPLINE,SPFLUX_BYEXP,SPFLUX_FITTEMPLATES, - SPFLUX_MAKETELLURICTEMPLATES,SPFLUX_MASKLINES: - Remove from the main-line, and we'll presumably merge back in from v5_3. -SPFLUX_BASESPLINE: Bug fixes in case the wavelength range is 10s of Ang - away from the canonical setup. Our blue throughput tests on - plate 2587/54137 was such a case, where this code crashed. -SPPLAN2D: Get the plate ID from the final output structure, which has - excluded bad files. - Only define code versions once, since it involved a slow spawn command. - Crash if the output directory cannot be created or written to. -SUPERFLAT: Print warning message and return 0 if the wavelength mapping makes - no sense (this could have crashed before, and did for UV test data). - -bin/speclog_update: add -forcecvs option, to help recover from nights - which were copied in, but had CVS problems. -doc/www/spectro_home.html: Add instructions for downloading DR6. - Update Data Model for spCFrame files for superflat in HDU #8. -etc/dark-??-*.fits: Dark frames from the original SDSS guide camera, - copied from sdsshost.apo.nmsu.edu:/data/spectro/guiderDarks. - These files are now used by GUIDERMOVIE,GUIDERMPEG. -etc/emlines.par: Add 2 more nebular lines of interest to Andrew West: - [N_II] 5755 and He_I 5876. -etc/spChunkList.par: Add chunks 162-167,168,169-172. - Chunks 99, 99A and 100A should have been "main" rather than "special". - Add chunks 173-192 and 34A. -etc/spPlateList.par: Update from 2005 through summer 2007 shutdown - (MJD 54275). This adds a total of 226 new plates to the list, and two - plates have had their MJDs changed: 1026/52534 and 1028/52562 are - removed from the list and replaced with 1026/52532 and 1028/52559. - Denote 349 plates as DR6 plates, including 22 that are marked as bad - in the v5_1 reductions. There is just one inconsistency in MJDs on - the sdss.org web site, which is they include plate 1135/53018 instead - of 1135/53024 (which has one exposure from that later date). - This DR6 plate list is from http://www.sdss.org/dr6/coverage/alldr6spectro.par -examples/cartridgeInfo.par: Data file for SDSSGUIDE copied out of the IOP/SOP - product. - -------------------------------------------------------------------------------- -v5_2_0 (February 1, 2007) idlspec2d running on IDL 5.4 - 6.3 -Built against specflat v1_7, elodie v1_1, idlutils v5_2_0. - - Merge from v5_2_test branch, with the following changes: - -ELODIE_FILELIST, PCA_ELODIE: Handle v1_1 and later elodie products - with a template list and blue cutoff.par file. Handle Elodie v3 - catalogs, even though we don't use them. Update - spEigenElodie.fits to match. [This was mostly in by v5_1_7, but - there have been some bugfixes since. ] -PLUG2TSOBJ, BATHCH2D, READPLUMAP: If the TSOBJMAPROOT environment - variable is set, read Survey $TSOBJMAPROOT/tObj-$PLATE files - instead of $SPECTRO_DATA/calibObj/calibPlateP-$PLATE files. -CALCSCATIMAGE, EXTRACT_OBJECT, SPCALIB, DOSCATFIT, -DOSCATTER, GEN_SCATTER, examples/scattering-CAM-MJD.fits: Add - per-camera scattering models; modify spcalib and extract_object - to call doscatter to generate them. -SPFLUX_MASKLINES: Move out of splux_f5. Add /o2 and /h2o options. -SPFLUX_MAKETELLURICTEMPLATES, examples/spFluxTemplates-CAM.fits: - Create telluric template files. -SPFLUX_V5, SPFLUX_BASESPLINE, SPFLUX_BYEXP, SPFLUX_FITTEMPLATES: - Generate flux calibration vectors based on per-exposure - low-order splines plus scaled telluric templates. -FITARCIMAGE: Add /dofirst option to allow getting crude results from sparse - plates, etc. -SPCOADD_V5: Re-add the deprecated synthetic magnitude HDU and the - (ugh) S/N HDU. Appended to end of spPlate.fits - -doc/spphoto.ps: Added JEG notes on spectro-photometry. - -------------------------------------------------------------------------------- -v5_1_8 (January 9, 2007) idlspec2d running on IDL 5.4 - 6.3 -Tagged for Son-of-Spectro. -Built against specflat v1_7, elodie v1_0, idlutils v5_1_7. - -APOPLOT: Bug fix -- use the implied wavelength limits from fcalib_default - -------------------------------------------------------------------------------- -v5_1_7 (January 5, 2007) idlspec2d running on IDL 5.4 - 6.3 -Tagged for Son-of-Spectro. -Built against specflat v1_7, elodie v1_0, idlutils v5_1_7. - -ARCFIT_GUESS: Change search range for the central wavelength from - 0.05 in log-wavelength to 0.15 in log-wavelength. This is - for UV throughput tests that we want to do (see PR #7190). - Until now, the search would only cover +/-200 Ang from 3800 Ang - on the blue side. This is the default DCOEFF[0]=0.05. - The default DCOEFF[0] has been increased to 0.15, for a search - of approx 3200-4520 Ang for the blue side of the blue CCDs. -DESIGN_SDSS3TEST: New proc to design test plates for SDSS-3. -DESIGN_PLATE: Modified to not use most of the dumb TCL scripts in the - "plate" product. -ELODIE_BEST,PCA_ELODIE: Small change to call the new function ELODIE_FILELIST, - and pass MINLOGLAMCLIP to READ_ELODIE. -ELODIE_FILELIST: New function for returning only good Elodie files (Loomis). -EXTRACT_OBJECT,SPCOADD_V5,SPFRAME_READ: Add the spatial traces to the - spFrame and spCFrame files as the last HDU (#7), as per the request - of PR #7137. -EXTRACT_ROW: Catch divide by 0 in reduced chi^2. -LINEBACKFIT: Fix crash condition for when no BACKGROUND vectors are set. - Add /SILENT option. Add BACKGUESS keyword. - Make all loop variables type long (2 places where this could matter). -READ_ELODIE: Updates for the new Elodie-3 catalog. Add keyword MINLOGLAMCLIP - and an internal spline-interpolation over masked pixels. The code - should still return exactly the same results for Elodie-2. -READ1SPEC: Remove this deprecated routine. -READONESPEC: Add optional EXPNUM return value. Add support for reading - the spatial traces (XIMG) from the new outputs. -SIMPLE_PLATE: This is essentially a re-write of DESIGN_PLATE that - still calls all the dumb TCL scripts in the "plate" product. -SPREDUCE1D: Comment-out the STAR_DVELOCITY code for the time being, - since it is not yet debugged but takes many CPU cycles. -ZCOMPUTE: Add FIXED_TEMPLATE as optional input, and ZANS_FIXED output. -ZFIND: Add optional ZANS_FIXED return keyword from ZCOMPUTE. - -bin/spsyncrobot_start: Insist that the SSH keys we were told about can - actually do what we need them to (Loomis). -doc/www/spectro_home.html: Update for DR5. Add info to data model about - spatial traces (XIMG) for spCFrame files. -doc/www/specroSOS.html: Add warning message corresponding to the fix - for PR #6840: "Wrong number of elements for reddeningMed", - which was fixed in v5_1_2. -etc/emlines.par: Add 8 more nebular lines of interest to Andrew West: - [Ne_III] 3868, [Ne_III] 3970, H_epsilon, He_II 4685, He_II 5411, - [O_I] 5577, [S_III] 6312, [Ar_III] 7135 -etc/spChunkList.par: Add chunks 148-157, 153A, 158-162. -examples/opECalib-50000.par,opECalib-51430.par,opECalib-51577.par: - Raise the full well limit to 65535 from 35000, as the detectors - are not showing signs of saturation. - Make the (unused) linearity adjustements 1.0, just for clarity. - PR #6592 discusses these issues in detail. -lib/Makefile: Correctly copy built libraries for platforms other than Linux. - -------------------------------------------------------------------------------- -v5_1_4 (May 31, 2006) idlspec2d running on IDL 5.4 - 6.2 -Built against specflat v1_6, elodie v1_0, idlutils v5_1_4 - -EXTRACT_OBJECT: Print a WARNING statement if either RA or DEC are - missing from the header, since that will result in an invalid - AIRMASS calculation (see PR #6953). Also, report AIRMASS=0 - in the header if RA, DEC or TAI are zero. -FITARCIMAGE: Detector wavelength limits were not being accounted for - when checking for big wavelength gaps (Loomis). -LRGMODEL_SPECTRA: New routine, split out of LRGMODEL_PHOTOZ and/or LRGSIM, - for generating the LRG model spectra. -PLATELIST: Fix the bit of code that finds all input plate files to be - more robust to large number of plates, since a dumb use of - the FINDFILE() function will overflow. Instead, first get the - list of all directories, and then search within each of those. -PLOTSPECQA: Wrapper to PLOTSPEC to select only standard stars or skies. -SDSSPROC: In response to PR #6893 against Son-of-Spectro, don't print - any error messages if the spawn of 'speclog_version' fails. - That bash script only exists in the speclog product, which is - not required for Son-of-Spectro. -SKYSPEC_PARANAL: New function to return the sky spectrum at Paranal. -SKYSUBTRACT: The rescaling of the errors with RELCHI2FIT seems to fail - in the case where all sky fibers but 4 have been rejected. - This happened on plate 2333/53679 exposure b1-00034582, - which is a bright SEGUE plate with all sorts of S/N problems. -SPFRAME_READ: Add option to read superflat vectors from spFrame files. -SPFLUX_V5: We were writing calibration vectors in HDU #0 of the spFluxcalib - files that were double-precision. Recast those to single precision. -SPFLUXCORR_V5: Allow a range of 0.1-10 for the flux correction vectors, - which had been 0.2-5. There were perverse cases (like for plate 321, - c.f. PR #6774) where these large flux correction vectors were - necessary, although the correct solution in that case was to - reject three bad exposures. Also, print a Warning message if the - flux-correction vector is out-of-bounds and then ignored. -SPTEMPLATE_REBIN: New function to read and optionally rebin spectral - templates. This is for use for Monte Carlo simulations of - a spectroscopic survey at different resolutions. -SPTHROUGHPUT: New function to return the throughput and efficiency for - a given plate+camera+exposure - -bin/sprobot_start,sprobot_stop,sprobot.sh: Remove these scripts that - loaded the Spectro cron robot, which have now been split off - into the rsync and reduce cron jobs started with spsynrobot_start - and spredrobot_start. -bin/spsyncrobot_start,spsyncrobot_stop,spsyncrobot.sh, - spredrobot_start,spredrobot_stop,spredrobot.sh: - Split sprobot.sh script into an rsync task that will - be run as a cron job by the "dssdata" user, and a processing task - that will be run as a cron job by "dssrun" user. The intent is to - match the photoop userid logic, where data is copied as one - user and reduced as another. -doc/www/idlspec2d_install.html,spectro_inspect.html: The CVS repository - has been changed from spectro.princeton.edu to - sdsscvs.astro.princeton.edu . -etc/spChunkList.par: Add chunks 139-142, 143-144, 145-147. -examples/opECalib-blank.par: Files with gain, bias, linearity, set to 1,0,1 - to make it a bit easier to investigate raw frames with the standard - tools (Loomis). -examples/opHdrFix.par: Reject some exposures on plate 321 (M67) where the - telescope was clearly not guiding. This addresses PR #6957. -templates/bc03_padova1994_chab_z*_ssp.fit.gz: These are 4 FITS files with - the full BC03 SP unnormalized grids (ages in years, wavelengths - in Angstroms, and fluxes). These files came from Christy Tremonti - on 14 Feb 2006 with the following notes: "The ages are kind of - oddly spaced -- I'm not really sure why, that's just how they come. - Note that the wavelengths are not uniformly spaced outside of the - optical and extend to from 90 A - 1600000 A. (If you quickly plot - wave vs flux, you won't see anything b/c the optical is compressed - at the left edge of the plot!) I created these FITS files using - a handy IDL BC03 reader "im__read_bc03.pro". It was written by - John Moustakas." -templates/fluxed_sky_*.fits: These files contain fluxed sky spectra - from Paranal, all in units of 1e-16 erg/sec/cm^2/A/arcsec^2. - From http://www.eso.info/observing/dfo/quality/UVES/pipeline/sky_spectrum.html - -------------------------------------------------------------------------------- -v5_1_3 (Feb 14, 2006 idlspec2d running on IDL 5.4 - 6.2 -Built against specflat v1_6, elodie v1_0, idlutils v5_1_3 -for bug fix in fluxing. - -FLUX_DISTORTION: Add MAXDPERSTEP keyword with a default value of 0.03, - which is the maximum peak deviation in flux distortion image - allowed per iteration from a change in any one parameter. - This prevents the fit from jumping to crazy solutions with - high order quadratic terms (PR #6774). Note that an update - to the MPFIT code was also necessary for the correct behaviour - of the MPMAXSTEP parameter. -PLATEMERGE: Add EXCEPT_TAGS keyword, and default to excluding tags - with the name '*COVAR', since those are typically large - covariance matrices that I've added recently to the ZANS structure. -QUICKEXTRACT: Bug fix in print statement "Whopping fiber #..." - -etc/spChunkList.par: Add chunks 135-137. - -------------------------------------------------------------------------------- -v5_1_2 (Feb 2, 2006 idlspec2d running on IDL 5.4 - 6.2 -Built against specflat v1_6, elodie v1_0, idlutils v5_1_2 -improving robustness of B-spline routines. - -APOFLUXCALIB: Generalize this routine to work from any plates, and fix - to work with the Spectro v5 outputs. -APOPLOT: Break the flux-calibration code out into the FCALIB_DEFAULT function. -CALCSCATIMAGE,COMBINE1FIBER,FIBERFLAT,MYFLUXCALIB,SKYSUBTRACT, - SMOOTH_SUPERFLAT,SPFLATTEN2,SPFLUX_V5,SUPERFLAT,TELLURIC_CORR: - Include specification of REQUIREN in call to the B-spline - fitting code (BSPLINE_ITERFIT) for robustness, often just - setting this to 1 or 2. -FCALIB_DEFAULT: Function for default flux-calibration vectors, where this - code is based upon what was internal to APOPLOT. -FIND_NMINIMA: Recast some arguments as double-precision. -GET_TAI: Fix a WARNING message that was always spuriously triggered. -LINEBACKFIT: Fix crash condition when not specifing the background terms. - Add options ZLIMITS and SIGLIMITS. -PLATEMERGE: Bug fix whereby the SPECPRIMARY flag was not being set properly - for any object observed multiple times, as pointed out by Hennawi - in PR #6841. -READONESPEC: Add the CAMERAS option for specifying only blue or red CCDs. - Set default return values to zero. Make robust to missing Spectro-1D - reductions, and just return vectors zeros for SYNFLUX in those cases. - Propogate the /SILENT flag everywhere. - Add option to read LINEFLUX, resampled to the output wavelengths. -READPLUGMAP: Make robust to "reddeningMed" in the plug-map file header - being either missing or not having 5 elements, as happened with - the Orion plate 1245 on MJD 53742. -SPCOADD_V5: Print the dynamic range off the flux distortion image, and - print a warning and disable the correction in the dynamic range - exceeds 100. -SPCOMBINE_V5: Change some print statements (use PRELOG in SPLOG command). -SPFLUX_V5: Print statements. -SPFLUXCORR_V5: If flux-calibration failed (for ex, if no standard stars), - then issue a warning message and then use FCALIB_DEFAULT() to - apply a default flux-calibration vector. -SPREDUCE: If plug-map file not found, then print an ABORT message and return. - -etc/spChunkList.par: Add chunks 133-134. -examples/spFluxcalib-b1.fits,spFluxcalib-b2.fits, - spFluxcalib-r1.fits,spFluxcalib-r2.fits: Update thse default flux- - calibration vectors with the v5 reductions of plate 406/51817 - generated by APOFLUXCALIB. -lib/.cvsignore: Add appropriate files to ignore by "cvs update". - -------------------------------------------------------------------------------- -v5_1_0 (Dec 19, 2005 idlspec2d running on IDL 5.4 - 6.2 -Built against specflat v1_6, elodie v1_0, idlutils v5_1_0 for upgrading SOS; -fix double-precision on OSX and Linux64. - -ARCFIT_GUESS: Change the FIX() functions to LONG(), though I don't believe - this was causing any trouble. -APO_LOG2HTML,APOREDUCE,BATCH1D,BATCH2D,CATPLOT,SDSSPROC, -APO_PLOTSN,PLOTSN: There was a problem long ago whereby the fiber magnitudes - from photo changed, and we decided to change the magnitude at which - Son-of-Spectro computes the S/N for each exposure. This was fixed - in Oct 2003 as documented in PR #5642 and sdss-obs/4029. However, - the S/N plots from SOS still use the old magnitudes. I've changed - those g,r magnitude limits from 20.20,19.90 -> 20.33,20.06 to be - consistent with the SOS tables. Note that the old limits will still - be used by the full Spectro-2D reductions (since those are now tied - to PSF magnitudes in newly-generated calibObj files). -ATVRAWSPEC: Plot a red column over every bad column, not just a box around - each bad region. For ex, the 4 bad columns (1112-1115) on r1 will - not appear with a 4 red lines. -BATCH2D: Allow PLATENUMS to be integer-valued, in which case they are - recaste as zero-padded strings that are 4 characters long - (such that they match the directory names). -CHECKSN,MAKE2DMERGE,SPALLCOMBINE,SPALLREDUCE,SPMULTI,SPPLANCOMB,SPPLAN: - These are all deprecated Fermi-only routines that would no - longer work with the v5 versions of this code, so remove them. -COMBINE1FIBER: Make robust to the B-spline code failing (and return zeros). - Fix a rare crash condition that happened on plate 321: It is - possible for NUMINSIDE to be zero (on the inner loop), if the - input data points span an extremely small wavelength range, - within which there are no output wavelengths. -COMPUTECHI2: Add optional outputs COVAR,VAR. - Explicitly do all arithmetic in double-precision, due to the change - in behaviour of IDL on the Mac and 64-bit Linux where matrix multiplies - have less precision (as described in PR #6754). If the change is - only made here, then there is alot of recasting of arrays that - will slow the code. Therefore, in practice we'll want to recast - these arrays in the calling routines (like in ZCOMPUTE). - Fix the computation of VAR and COVAR in the case of one template - vector in AMATRIX. -ELODIE_BEST: Trim to stars not labelled as binary or triple stars, according - to the Q_VR keyword in the Elodie FITS headers. Rockosi brought - this to my attention on Sep 20, 2004. -ELODIE_BEST,FITREDSHIFT,FITMEANX,FITWITHMX,MYFLUXCALIB,SDSSPROC,TRACE_FIT: - Add /double keyword to STDDEV() call, such the behaviour will be - the same on 32-bit or 64-bit machines. -EXTRACT_BOXCAR,EXTRACT_PROFILE,EXTRACT_ROW,SSHIFTVEC: - Call IDLUTILS_SO_EXT() to get the suffix for dynamically - loaded libraries (rather than assuming ".so"). -EXTRACT_OBJECT: Write as HDU #8 an image of the relative chi^2, or an - image of all 1's if no such structure was ever made in the SKYSUBTRACT - code. Note that these values are not truncated to be >=1, as they - are when we re-scale the sky errors. - If there is a telluric image (which we've deprecated for the v5 code), - then it is now in HDU #9. -FIBERFLAT: Replace the /EACHGROUP keyword in BSPLINE_ITERFIT with appropriate - GROUPSIZE keywords. The former was a holdover from the days - of the Fortran Slatec code. -FIND_NMINIMA: Catch the status from calling MPFITPEAK, and deal with it - appropriately if the fit failed. -FINDSPEC: Complete re-write to match against long lists of objects quickly, - rather than the slow loop over one object at a time. Also, address - PR #6583 to deal with the crazy possibility of the same object (with - the same RA+DEC) appearing on the same plate. -FITARCIMAGE: Print the wavelengths of any rejected arc lines. -FITREDSHIFT,QAPLOT_FCALIBVEC,SOLVEFILTER,SPREDUCE1D,VELDISP, - FLUX_DISTORTION,SDSSPROC: Change calls from the deprecated STDEV() - to STDDEV(). -FITSN: If fewer than 20 good points within the default fitting mag range, - then redefine that fitting range to be [0,+1] mag from the median - of good magnitudes. This makes the plots look better from Spectro-2D - and from SOS. It should also help address PR #6325, by choosing - more reasonable fit ranges for SEGUE plates with bright stars. -FLUX_DISTORTION: There was a bug in the way objects were being rejected - in the main iteration loop. Basically, objects were being rejected, - but then had chi=0 in the next iteration, and then were put back - in the fits. I now have a /nomask option in flux_distort_fn() - that allows me to compute chi even for rejected points. - Also, always start the fitting routine with tiny values for - the coefficients. This is to prevent us from "walking away" from - the correction solution in the case where some initially bad points - effect the fit. - Add two more terms, which are quadratics in the wavelength parameter - (one for each spectrograph). This takes out curvature in the spectra - which I otherwise couldn't fit out -- though if the AB zeropoints are - not correct, then these terms enforce consistency but are not correct. - Add the functionality to have multiple offset pointings on the same - plate, which is true for SEGUE plates 2247 and 2255 (the latter was - already observed). Do the standard flux-distortion corrections from - the first offset (where OFFSETID=1). If there are repeated objects - between that offset and others (as determined by matching RA,Dec), - then solve for the mean flux-correction vector between those offsets. - Otherwise, scale the fluxes according to SCI_EXPTIME in the plugmap. - When fitting for the ratio vectors, use THISIVAR internally instead - of OBJIVAR (the former masks out bad sky-subtraction regions). -LINEBACKFIT: The calculation of LINEEW_ERR was incorrect, as noted in PR #6235. -LRGMODEL_PHOTOZ: Optionally compute and return FITFLUX. -PCA_CVSTAR,PCA_GAL,PCA_QSO: Insist that all requested spectra exist. -PCA_GAL: Make plots. -PCA_SOLVE: Make loop variables long ints. - Make the internal arrays double-precision instead of floats - before calling COMPUTECHI2 due to round-off errors on some - platforms (PR #6754). -PLATELIST: Use FINDFILE() function to see if files exist before calling - MRDFITS(); this should be a slight speed-improvement. - Since the v5 version of this code will combine data with as few as - 1 exposure in a given camera, set the plate quality to 'bad' if there - is only 1 exposure, or 'mariginal' if only 2 exposures in any given CCD. - Allow INFILE to be an array. -PLATEMERGE: Add the fields CALIBFLUX,CALIBFLUX_IVAR which are explicitly - copied over from the plug-map structures. - Get rid of the ZFILE option in place of the PLATE,MJD options. - Make robust to the spZLine structures being different for - different plates, for ex. if different code versions were used. - Re-write the bit of code that matches objects. This was necessary - to address PR #6583, since there are now some bizarre, special - plates where the same object appears twice. Note that this also - fixes the bug whereby some objects are not matched if the plate list - has incorrect central RA,DEC positions (such as plate 1274 on MJD 52995 - where those values are NaNs). The new implementation uses SPHEREGROUP. - Also, the logic for setting SPECPRIMARY was slightly changed. -PLOTSN: Choose which objects are "good" on a filter-by-filter basis, - to avoid stars with crazy magnitudes (like 0 or -9999) from - throwing the plots (for example, on SEGUE plate 2255). - Trivial bug fixes to prevent crashes when making plots with - a single point. -PLOTSPEC: Add capability to plot reconstructed frames (added by Blanton). - Fix units on Y axis to /cm^2 instead of /cm (was fixed in v4_9_13 - when plotting to files, but not when to the terminal). - Break out call to displaying photo images with a call to - the new routine PLOTSPEC_IMAGE. -PLOTSPEC_IMAGE: New routine called by PLOTSPEC for displaying images - with calls to the photoop product. -PLUGMAP_TYCHO: New proc for plotting bright Tycho stars on a plate. -QAPLOT_FCALIBVEC: Put plots for each spectrograph on its own page, and - put offsets between the plots for all objects, F stars, and QSOs - so that we can see the plots more easily. Also, smooth the plots - a little bit after the median-filtering. -QUICKEXTRACT: Remove the end of the warning message for "Whopping fiber" - which used to say "(may have adverse afffect on S/N)". This was - being interpreted as chaning the S/N on the whole plate, when in - fact it usually just affects a few fibers. - For the warning message "Large flexure...", append the shift - number to the message (in response to PR #6239). - Only print the fiber numbers for the first 5 whopping fibers. - Change cod to be consistent with SKYSUBTRACT, which now returns - RELCHI2SET rather than RELCHI2STRUCT. -READPLUGMAP: Fix bug when replacing unknown fluxes in the calibObj - structure with old values in the plug-map file. - Add OFFSETID and SCI_EXPTIME to the output structures, which - are obtained from an optional PLUGMAPTARG structure in the - plPlugMapM file. The plate where I've added that is SEGUE plate 2255, - which has multiple offsets in the same exposure. - Do not use magnitudes in the input file not in the range [0,50], - in order to avoid overflows when magnitudes are set to crazy - values like -999. - Add missing iobj, so that the call from QUICKTRACE with the /DEREDDEN - option works. - Add HDR return keyword, which is used by SPREDUCE routine. -READONESPEC: Return all headers in FRAMEHDR. -READSPEC: Change how the internal procedure READSPEC1 works, such that - arrays of zeros are returned if data is missing. This allows us - to return a good one-to-one list of objects from an input list - of plate,mjd,fiberid. However, I'm not positive that this is always - the desired behaviour. For ex, requesting a non-existent plate - will now return 640-element arrays of zeros. - Make this routine robust to missing data when reading in structures, - such as plugmap, zline, tsobj. -REDMONSTER: Make robust to the perverse case of the number of (good) pixels - in the spectrum being less than the median filter size of 25 pixels. - This happened for saturated data on plate 2333, but does not happen - on any other plates. -REDUCE_PLATE: Removed (old code). -SDSSPROC: Re-enable the call to 'speclog_version'. - Add call to FITS_PURGE_NANS in order to address PR #6032, 6084, - whereby the DA has written invalid FITS header keywords. - Use the measured read noise (rather than the value in the op file) - for constructing the inverse variance image. - Add three more possible warning messages from testing the statistics - of the bias region: - "expected read noise = ..., measured = ... DN", - and - "bias region difference at xxx-th-percentile =... DN", - and - "Amp #... way too many pixels (xxx%) below bias-5*sigma=... DN." - This replaces the warning message: - "Std. dev. in bias region for amp#... is ... DN (5-sig clip)". - These tests should be more robustly sensitive to PR #2335 - (when r2 was randomly flipping bits on 22/23 Aug 2000), and - the more recent PR #6143 (r2 electronics problems in Aug 2004). -SKYSUBTRACT: Return the trace-set RELCHI2SET instead of RELCHI2STRUCT, - for use by the EXTRACT_OBJECT code. - Fix a bug, where the "airmass_correction" term was not squared - when applied to the sky variance (on line 285). - Apply a ratio of "number of sky pixels in a breakpoint bin" to the - number of degrees of freedom in the fit to the correction to - local chi^2. - Recast "fullfit" to floating-point to avoid returning a double- - precision sky array. This was happening due to same changes to - the B-spline code to support double-precision. - Replace the /EACHGROUP keyword in BSPLINE_ITERFIT with appropriate - GROUPSIZE keywords. The former was a holdover from the days - of the Fortran Slatec code. -SLITHISTORY: Do not plot missing measurements (zeros). -SMOOTH_SUPERFLAT: Bug fix, whereby we could trigger a warning message when - the ends of the wavelength range did not have any good data points. - In such a case, the fits are meaningless, and any value could result. - This was triggering false warning messages on plate 1053/52468 in r2, - plate 1051/52468 on r2, etc. This should now be fixed by setting - the internal variable RATIO=1 for bad points. -SPBIASAVE,SPFLATAVE: Fix bug where filename matching is off-by-1. -SPBIASGEN: Trivial bug fix to mask bad pixels. -SPCALIB: Change call from SMOOTH_HALO() to SMOOTH_HALO2D() for fitting - the scattered light background. This should do a more proper treatment - of the scattering, but in practice does not seem to make much - difference. -SPCOADD_V5: Apply the flux-distortion image to the sky vectors, as well - as to OBJFLUX,OBJIVAR. - Match objects between exposures by XFOCAL,YFOCAL in the plugmap - rather than using RA,DEC. This is because there are the bizarre - plates like SEGUE plate 2255 that has the same object several times. - Add keywords NEXP_B1,NEXP_B2,NEXP_R1,NEXP_R2 to output header. -SPCOMBINE_V5: Make the (dangerous!) change of setting the minimum score - for an exposure to a S/N value of >0 rather than >1. This is - necessary for some SEGUE plates, but is dangerous for main survey - plates if some data is not marked bad. Hopefully, we'll track - all those bad data down with PR #6722. -SPFLATGEN: Discard exposures where the quality keyword is set to 'bad'. -SPFLATTEN2: Recast an internal variable to float to prevent double-precision - output files. -SPFLUX_READ_KURUCZ: This function was pulled out of SPFLUX_V5. -SPFLUX_V5: Pull out the SPFLUX_READ_KURUCZ() code as a separate function. - Comment-out the median/mean rescaling factor in SPFLUX_MRATIO_FLATTEN(), - since I think that could potentially be mis-matched between the blue - and red sides. For rejecting the F stars, start by rejecting any - stars with more than 20% bad points in any image. (This fixes a - problem with plate 662/52147 where a bad star throws the fits.) - Rescale the per-fiber plots of the spectro-photo vectors using - the FLATARR such that they should all lie on top of one another. - The "Flux-calib" plot for spectro-2 incorrectly listed fiber numbers - between 1 and 320 instead of 321 and 640 -- fixed. - Only select spectro-photo stars from OFFSETID=1, which will deal - with multiple-offset plates like SEGUE plate 2255. -SPFLUXCORR_V5: Return chi instead of sqrt(chi2) from the function FCORR_CHI_FN. - Add INPARAMS option to SPFLUXCORR_SOLVE2() function. - In the final loop, first do a fit using the SPFLUXCORR_SOLVE() code - that does not rescale the errors, then use those fits as the starting - point when calling SPFLUXCORR_SOLVE2(). - Test all solutions up to MAXPOLY terms, not necessarily stopping - when there is no improvement to chi^2. This is because one could - imaging that going from 1->2 terms is very little improvment, but - then 2->3 is substantial improvment. - Generalize the internal routines SPFLUXCORR_SOLVE,SPFLUXCORR_SOLVE2 - and rename it to SOLVE_POLY_RATIO in the idlutils product. -SPGAIN: Revamp this code, trying to measure the gain from a set of flats - taken on MJD 53114 for this purpose. -SPPLAN1D,SPPLAN_FINDRAWDATA: - Replace calls to the obsolete function RSTRPOS() - with STRPOS(/REVERSE_SEARCH). -SPREDUCE: Pass exposure time to READPLUGMAP, which now uses that for - multiple-offset plates (like SEGUE plate 2255). - Return plugmap-header from call to READPLUGMAP(), since it is - used to get the CARTID for the output files. -SPREDUCE1D: (Use the B-spline spectra for QSO-fitting). - When computing FRACNSIGMA,FRACNSIGHI,FRACNSIGLO, ignore points - blueward of rest-frame 1216 Ang, since these numbers would then - be dominated by LyA absorption in QSOs. (This is PR #2703.) - Add call to STAR_DVELOCITY, but only for stars, even though in - principle it should work for any objects. -SSHIFT,SSHIFT2D: Remove these routines that are in the idlutils product. -STAR_DVELOCITY: New proc to solve for velocity shifts between multiple - exposures. -SYNTHSPEC,ZFIND: If the eigenspectrum file does not contain in image in HDU #0, - then look for a B-spline in HDU #1 and assume that it describes - a B-spline. (This is what we're trying to use for QSOs now.) -TRACE320CRUDE: This routine was not actually setting the default value - of RADIUS, but was getting it from an internal call to TRACE_CRUDE. - This has been fixed (necessarily, after a similar fix to TRACE_CRUDE). -ZTWEAK_STAR: Add optional keywords. -ZCOMPUTE_QSO: A version of ZCOMPUTE that is basically the same code, but - using a B-spline composite spectrum that must be evaluated at each - redshift. Because there are multiplicative polynomials rather than - additive polynomial terms, this may fail to find weak em-line QSOs. -ZCOMPUTE,ZCOMPUTE_CHI2: Recast the fluxes and models in double-precision - before calling COMPUTECHI2 due to round-off errors on some - platforms (PR #6754). -ZCOMPUTE: Add THETA_COVAR to the output structure. Instead of storing all - of the coefficients for the fits at all lags, add a final call - to COMPUTECHI2 at the end to compute THETA and THETA_COVAR. - These changes relate to PR #6757. -ZFIND: Mask any pixels on the templates where the first template contains zeros. - This is useful, in particular, where the stellar templates have zeros - at the beginning or end of the spectral range due lack of wavelength - coverage. This is done by setting the STARMASK parameter that is - passed to ZCOMPUTE. This should fix PR #5903. - Return THETA_COVAR as computed by ZCOMPUTE (see PR #6757). -bin/aporsync_alllog.sh, aporsync_blue.sh, aporsync_logs.sh, aporsync_red.sh, - killdata.sh, sos_start: Pull the data (sdR files and log files) - from the machine specified by the environment variable - $RAWDATA_HOST rather than from the hardwired sdsshost.apo.nmsu.edu. - Set the default value to sdssfiles1.apo.nmsu.edu in the sos_start - script. -bin/aporsync_alllog.sh, aporsync_blue.sh, aporsync_logs.sh, aporsync_red.sh: - Remove the "--rsync-path" option to these scripts, which was used - to point to the only working version of rsync on sdsshost.apo. - Now that the IRIX machine sdsshost.apo has been replaced with - a Linux machine, that is no longer necessary. -bin/spreduce_batch: Script to batch a single Spectro-2D or Spectro-1D job. -bin/sprobotlist.sh: Only run the PLATEMERGE command for all data, but - not all the subsets such as DR1, etc. No need to recreate those - every day! -doc/www/idlspec2d_reduce.html,spectro_home.html: The machine alias name - sdssdata.princeton.edu should really be sdssdata.astro.princeton.edu -doc/www/spectro_home.html: Add info for downloading DR4. -etc/lamplist.dat: Remove this file, since we use "lamphgcdne.dat" instead. -etc/spChunkList.par: Add chunks 91 through 107, 99A, 100A, 108, 109, - 110, 111, 112, 113, 114, 115-118, 119, 120, 121, 122, 123, 124, 125, - 126, 127, 128, 129, 123A, 131. -etc/spPlateList.par: Add 436 new plates, through MJD 53360 (Dec 21, 2004). - Add the DR4 public plates, consistent with sdss-archive/2374. - (I posted some inconsistencies about these plate lists to - sdss-archive/2376.) Note that I have all the same plates being - marked as public, except there are four plates from the EDR - the FNAL has dropped from their lists: 314/51641, 357/51813, - 362/51999, 412/51871. - The following plates are public, but bad: - 504 52316 DR2 bad Bad spectrograph collimation - 704 52205 DR4 bad Bad spectrograph collimation - 721 52228 DR2 bad Bad spectrograph collimation - 761 52266 DR2 bad Bad spectrograph collimation - 769 52282 DR2 bad Bad spectrograph collimation - 770 52282 DR2 bad Bad spectrograph collimation - 775 52295 DR2 bad Bad spectrograph collimation - 778 52337 DR2 bad Bad spectrograph collimation - List each plate in one and only one data release (the first time - it is released). - The most recent list from Fermi (from March 15, 2005; - pointed to in sdss-archive/2439) misses the following plates - that I have in my list from earlier e-mails. All of these are - repeats of other observations of the same plates: - 293 51689 EDR - 352 51694 EDR - 360 51780 DR1 - 412 51931 EDR - 476 52027 DR4 - 496 51973 DR4 - 525 52029 DR4 - 574 52347 DR4 - 574 52366 DR4 - 581 52353 DR4 - 641 52176 DR4 - 722 52206 DR4 - 903 52385 DR4 - 1296 52738 DR4 - Add another 233 plates through MJD 53566 (July 14, 2005). - Marked plates for DR5, according to sdss-archive/2661 (226 plates) and - sdss-archive/2684 (89 plates). Note that I already had the following - two plates in DR4: 712/52179 and 1664/52965, and will keep them there. - I've also added 1138/53228 and 1144/53238 to DR5, since the Spectro v5 - reductions turn these plates into 'marginal' rather than 'bad. - Note that the following 18 'good' or 'marginal' plates could be - included (c.f. sdss-archive/26744): - 230 52251 special - 231 52221 special - 1244 52674 special - 1247 52677 special - 1250 52930 special - 1251 52964 special - 1252 52970 special - 1253 52974 special - 1254 52972 special - 1256 52902 special - 1257 52944 special - 1259 52931 special - 1637 52992 special - 1638 52999 special - 1641 53032 special - 1907 53265 special - 1913 53295 special - 1917 53295 special - Remove the plates 521/52325 and 574/52337, which were only - partial reductions that should not be in this list. -examples/opBC-50000.par,opBC-51809.par,opBC-51813.par: Added a partial - bad column on the b2 CCD that is responsible for some of the absorption - glitches seen in fibers 343+344 (c.f. PR #3681). -examples/opECalib-51577.par: Update the gains based upon work by Eric Switzer - and a more careful look at a recent set of identical flats taken - on the night MJD 53114. I've updated the numbers as follows for - the two gain and two read noise values per CCD: - b1: 1.13 1.13 3.9 3.3 -> 1.10 1.05 3.86 3.24 - b2: 1.32 1.32 3.7 3.26 -> 1.23 1.26 3.88 3.38 - r1: 1.15 1.00 3.7 3.7 -> 1.09 1.00 4.08 4.04 - r2: 1.00 1.05 3.7 3.7 -> 1.05 1.05 4.32 4.12 - Note that this is the opECalib file used for the vast majority of data. -include/export.h: New export.h file in the IDL 6.2 beta distribution. -lib/Makefile: For "make clean", also remove ".a" and ".dylib" files. -pro/Makefile: Remove reference to pro/fplan directory, since all those - deprecated routines have been removed. -pro/photoz/Makefile: Add this Makefile. -templates/eigeninput_star.par: - Shift all of the normal stellar templates (O through M) to - agree with the Elodie redshifts in the v5_0_0 reductions. - Shift the CarbonWD and Carbon star templates by +65 km/sec. - No change to the WD or WDmagnetic velocities (out of ignorance). -templates/spBsplineQSO-53115.fits: Fist attempt at a B-spline composite - for QSO spectra as a fn. of redshift (made by Burles). -templates/spEigenCVstar-53724.fits,spEigenGal-53724.fits,spEigenQSO-53724.fits, - spEigenStar-53724.fits: Rebuilt these templates using an untagged - version of the reductions essentially equivalent to v5_1_0, such - that the spectrophotometry will be improved. Note that we still - mean to improve these templates at some later date by improving - the lists of input objects, especially for stars. -templates/wfEigen*.fits: Add WFCCD templates from Prochaska - -------------------------------------------------------------------------------- -v5_0_0 (Feb 19, 2004 idlspec2d running on IDL 5.4 - 6.0 -Built against specflat v1_5, elodie v1_0, idlutils v5_0_0. -The speclog product was also tagged at v1_3, valid through MJD=53054 (today). - -Next major release of Spectro-2D, with the "Version 5" data model. -Only minimal changes to P-1D, but search galaxy redshifts to z=1. - -APO_PLOTSN,QUICKTRACE: Need the /APOTAGS in the call to READPLUGMAP(), - which has been re-written to be used by the full 2D reductions too. -BADFMAGS: Find bad F star photometry that might get used by Spectro-2D. -BADFSTARS: Find bad F stars used for spectro-photometry in the Spectro-2D. -BATCH2D: Call SPCOMBINE_V5 instead of SPCOMBINE. - Update the list of output files to correspond to the new v5 outputs. -COMBINE1FIBER: Add the skies by inputting SKYFLUX and outputting NEWSKY. - The skies are combined in the same simplistic manner as the - dispersion pixel map. - Make loop variables type long. - In this case of no good points, set the NODATA bit everywhere. - Also, if NOPLUG is set in the first input bit-mask, assume it - should be set everywhere in the output bit masks. No other mask bits - are set in this case of no data. This should address PR #3690. -DJS_FLUXCORR,FLUXCORR: Remove these deprecated routines, which are now - replaced with FLUXCORR_NEW (if using SPCOMBINE) or SPFLUXCORR_V5 - (if using SPCOMBINE_V5). -EXTRACT_OBJECT: Turn off telluric-corrections by default, which must now - be enabled with the /DO_TELLURIC keyword. Also, delete some old code. - Compress (with gzip) the output file. -FIBER_ROLLCALL: This code has been broken out of PLATESN. -FILTER_THRU: SDSS filter curves are now in the idlutils products under - the subdirectory data/filters. -FIND_NMINIMA: Fix bug when plotting. -FLUX_DISTORTION: New function for computing the overall flux-distortion - on an entire plate using the spectrophotometry compared to the - fluxes in the plug-map structure. -FSTARS_PLOT: New code to make color-color plots of spectro-photometric stars - as compared to the stellar locus and BD+17. This code actually dates - back to Sep 2002, but was never checked in. -GET_TAI: Report warning about exposures less than 2 minutes only - for science or smear exposures. -JEG_SPHOTO_COEF: Christy's spectrophotometry code using Jim Gunn's functional - form to correct using the PHOTO magnitudes. -KURUCZ_FITSFILE: New proc for generating a single FITS file from a list - of ASCII-formatted Kurucz models. -LINEBACKFIT: Consolodate some of the print statements from MPFIT onto 1 line. -LRGMODEL_TRAIN: Calling script for training the Bruzual-Charlot models - for photo-z's. -PCA_GAL: Set the starting wavelength to 1850 Ang so that we can go to z=1.0; - it was 2300 Ang, which only let us fit out to z=0.6. -PCA_STAR: Interpolate over bad pixels in the middle of any spectra, - but still set any bad end pixels to zero (as before), which should - make those pixels be ignored in the redshift-fitting code. -PLATELIST: Get rid of the SMEARUSE entry, since it is now deprecated. - Include any public plates in the default output file; this is - because there are some DR1,DR2 plates that are called 'bad', but - we probably still want them in the full merge files. - Read the spectro-photometry keywords [GRI]OFFSTD,[GRI]OFFRMS, etc. -PLATESN: Remove the code that adds the spectro-photometry keywords to - the output headers, since P-1D does this more carefully. - Split out the fiber "roll call" code into FIBER_ROLLCALL. - Add a bunch of spectro-photometry keywords to the FITS header, - such as GOFFSTD,GRMSSTD,... -- These will be read by PLATELIST. -PLOTSIGNAL: New routine for making diagnostic plots of the signal seen - by the spectrographs, unlike most of our routines that show S/N. -PLOTSN: Re-write of the code that makes all the plots beyond the first - page of S/N plots. Compare the spectro-photometry to the CALIBFLUX - entries in the plug-map structure if they exist. -PLOTSPEC: Add the /SKY option for over-plotting the sky. - Add the /ALLEXP option for plotting the fluxes from all exposures, - rather than the co-added spectrum. -PLUG2TSOBJ: Add /SILENT option. -PLUGFILE_RELABEL: Relabel the OBJTYPE's for specified objects in all - plPlugMapM files. -READONESPEC: New proc for reading single exposure spectra (from spCFrame files). -READPLUGMAP: Many changes to this code, which is now used by both SOS - and by Spectro-2D. Options /APOTAGS,/DEREDDEN are for the SOS code. - Option /CALIBOBJ is for the Spectro-2D reductions, and re-calibrates - the photometry to the Princeton calibObj files. - Also read SFD_EBV (reddening values) with the /CALIBOBJ option. -READSPEC: Add support for reading the sky (SKY=) from HDU #6 of the spPlate - files. - No longer name the returned plug-map structure, since we may be - adding tags to this structure, and I believe structures no longer - need to be named in order to concatenate them in IDL. -SKYSUBTRACT: Fix possible crash condition, whereby the re-fit to the - supersky is not done if the first fit failed and FULLBKPT does - not exist (line 243). -SPBIASGEN,SPFLATTEN2: In the output headers, start numbering the EXPID - keywords at EXPID01 instead of 00. Also, drop MJD from that string. - This makes it consistent with the keywords in the spPlate files, for ex. -SPCALIB: Change the way we spawn the gzip command. -SPCOADD_FLUXED_FRAMES: Christy's code that now de-reddens the spectra; - definitely do not use! -SPCOADD_FRAMES: Get rid of some unused lines of code. - Get rid of returned synthetic mags + S/N values from PLATESN, - since I've excised that code, and don't write the undocumented - last two HDUs to the spPlate files. -SPCOADD_FRAMES,SPCOADD_V5: For the EXPIDxx keywords in the output spPlate file, - start the numbering with EXPID01 (instead of 00) because that's more - like the FITS standard, and SXPAR('EXPID*') can then be used. - Also, drop the MJD from this identifying string, so that the first - 11 characters can be used to directly determine the names of the - individual spFrame or spCFrame files. - Call FIBER_ROLLCALL from this routine, rather than doing it in PLATESN. -SPCOADD_V5: New code to replace SPCOADD_FRAMES for version 5 outputs. - The sky vectors are now combined in some semi-rational way, - and output as HDU #6. -SPCOMBINE: Pass all arguments if this proc is called recursively. -SPCOMBINE_V5: New code to replace SPCOMBINE for version 5 outputs. - Add call to FLUX_DISTORTION to compute the 2-D spectro-photometric - corrections. This modifies the fluxes both in the spCFrame and - the spPlate files. This is a fairly major change, in that the - spectro-phometry is now explicitly tied to the plugmap-structure - magnitudes and colors (at least in the mean). - We currently hard-wire the rejection of all smears, all exposures - with any CCDs with (S/N)^2 < 1, and any with (S/N)^2 less than 20% of - the best exposure. -SPFLUX_V5: New code to replace SPFLUX for version 5 outputs. This computes - the spectro-photometry vectors on an exposure-by-exposure basis - (though doing the fit on all exposures at once). The low-order - per-object flux-correction vectors that used to be handled - (through a call to FLUCORR_NEW) must now be handled separately, - and *after* the call to this routine. -SPFLUXCORR_V5: New code to replace FLUXCORR_NEW. This will be called - by SPCOMBINE_V5. -SPFRAME_READ: Routine for reading specified HDUs and fibers from either spFrame - or spCFrame files. -SPREDUCE: Abort and return from this procedure if no good flats exist. - Call READPLUGMAP() to read the plug-map file, and get the photometric - calibrations from the calibObj files. -SPREDUCE1D: Dispose of COUNTS_SPECTRO,COUNTS_SYNTH in favour of the fields - SPECTROFLUX,SPECTROSYNFLUX which are in nano-maggies (1e9 larger). - Also compute SPECTROSKYFLUX,SPECTROFLUX_IVAR,SPECTROSYNFLUX_IVAR - from the sky vectors, which are now in the new spPlate files. - Log peak memory usage. - Fit galaxy redshifts out to z=1.0 (instead of 0.6). - Add the /verbose option to the zfind() function for the main loop - finding galaxy redshifts and QSO redshifts, since those are the two - loops where this code spends most of its time. -SPREDUCE2D: Report peak memory usage. -SPREDUCE,SPREDUCE2D: Pass the optional /DO_TELLURIC along to EXTRACT_IMAGE. -UPDATE_PLATE_RELEASE: Code to mark the DR2 plates (for example) from - the "etc/dr2spectro.par" file into "etc/spPlateList.par". -VDISPFIT: Change the SPLOG of "Using previously cached..." to a simple - print statement so it doesn't go in the log files so many times. -ZCOMPUTE: Do not be so verbose (printing a line to the log for every fit) - unless a /verbose keyword is set. This is because the log files - were being dominated by this one line! - -etc/dr2spectro.par: List of DR2 plates from the web site - "http://www.sdss.org/dr2/coverage/dr2spectro.par". -etc/spChunkList.par: Add chunks 87-89. -etc/spPlateList.par: Add list of DR2 plates. -etc/sdss_*.dat: Remove these SDSS filter curves, which are now in the - idlutils products under the subdirectory data/filters. -etc/skylines.par: Updates many of the sky lines to agree with the NIST 2.0 - database at "http://physics.nist.gov/cgi-bin/AtData/main_asd". - The changes are very minor. This does not update any of the OH lines. - Change the HgI 5460.74 wavelength to 5460.94 Ang; this is completely - ad hoc, simply because it *looks* like the line always ends up there - (c.f. PR #3259). This may be the actual centroid of the line since - it is pressure-broadened in a funny way, but this should definitely - be checked (the PR will not be closed). -include/export.h: Change to be consistent with the file by the same name - in the idlutils product. This has two minor changes for SGI 64-bit. -templates/eigeninput_star.par: Remove the 3 objects labelled Carbon_DQred, - since those were actually BAL quasars (c.f. PR #3953). - Also, rename the "Carbon_DQ" objects as "CarbonWD". -templates/kurucz_stds_raw_v5.fits: FITS file with Kurucz templates - generated by KURUCZ_FITSFILE. This is simply the set of Kurucz - ASCII files collapsed into a single FITS file, which is then - used by SPFLUX_V5. -templates/spEigenCVstar-53054.fits, spEigenGal-53054.fits, - spEigenQSO-53054.fits, spEigenStar-53054.fits: - These are a new set of templates built from almost exactly the - same list of objects as before, but using preliminary v5 reductions. - Also, some mis-classified stars removed from the star list. - -------------------------------------------------------------------------------- -v4_11 branch + v4_11_0 (Feb 6, 2004) - -This branch was created by Lupton for FNAL operations. -The branch point was v4_10_7 == v4_11_0, with the following changes: - -Four files copied from the mainline as they were on this date -which was a tag on the mainline called RHL-create-v4_11): - pro/fluxfix/jeg_sphoto_coef.pro : New routine - pro/fluxfix/spcoadd_fluxed_frames.pro : Only changed by Tremonti - pro/spec2d/platesn.pro : Only changed by Tremonti - pro/spec2d/plotsn.pro : Bug fixes by DJS and later changes by Tremonti. - -------------------------------------------------------------------------------- -v4_10_7 (Dec 11, 2003 idlspec2d running on IDL 5.3 - 5.6 -Built against specflat v1_5, elodie v1_0, idlutils v4_10_7. -Tagged for fixing SOS PR #5735. - -COLLIMATE: Since the DJS_SVDFIT() function was removed in v4_10_1, - explicitly compute the chi^2 minimum with a matrix inversion. -FIND_NMINIMA: If the fit value of YPEAK is less than zero, then change - it to zero. This code is always used for chi^2 minimization, - and a negative value for the chi^2 would not make sense. -LRG_PHOTOZ: New simple photo-z finder for LRGs using a single template. -LRG_PHOTOZ_TEMPLATE: Code to tweak the photo-z template used by LRG_PHOTOZ(). -LRG_PHOTOZ_TEST: Code to test the photo-z's. -LRGMODEL_PHOTOZ: Photo-z finder using Bruzual-Charlot elliptical galaxy models. -LRGMODEL_TWEAK_TEMPLATE: Code to tweak the Bruzual-Charlot model parameters - used for the templates in LRGMODEL_PHOTOZ(). -NEWSPCOMBINE: Christy's code: changed so that if one frame does not make - the S/N cut then all 4 frames of that exposure are rejected. -PLATELINKS: Call SPAWN with the /noshell option to greatly increase - the speed of this procedure. -PLATEMERGE: Major re-write to use less memory. All of the ZANS structures - are read into memory at once, but not all of the TSOBJ structures. - The output file are written one plate at a time, with the TSOBJ - structure for that plate read only when it is needed. - Functionally, the outputs are exactly identical. -PLOTSN: Christy's last page of plots calls GAUSSFIT(), which can crash - with too few points. This happened on the special plate 1180 - on MJD 52974. I've changed this to using DJS_ITERSTAT. -QUICKEXTRACT: The logic to trim away extra sky fibers when there are - more than 20 appeared to be incorrect, and could trim away most - or all sky fibers. I fixed this, and also now choose 40 skies - in the case of many skies. -SDSSPROC: Don't print bias noise level if /silent is set. -SPREDUCE2D: Print the version of "speclog". - -bin/sprobot_start: Insist that the cvs version of speclog be set up - for running this robot. -doc/www/idlspec2d_install.html: Change instructions to installing with EvilUPS. -doc/www/spectro_home.html: Include instructions to download EDR and DR1 - using wget. -etc/spChunkList.par: Add chunks 80-84, 85-86. -pro/Makefile: Add photoz directory -templates/spLRG-52928.fits: LRG templates for LRG_PHOTOZ function. - -------------------------------------------------------------------------------- -v4_10_6 (Oct 15, 2003 idlspec2d running on IDL 5.3 - 5.6 -Built against specflat v1_5, elodie v1_0, idlutils v4_10_6. - -ATMDISP_COR -DJS_SFIT_ITER -DR1_SPPLATE_COR (removed) -FLUXCALIB_RESID (removed) -FLUX_STANDARD (removed) -FRAME_FLUX_CALIB -FRAME_FLUX_TWEAK -KURUCZ_RESTORE -NEWSPCOMBINE, -PCA_FLUX_STANDARD -PLATE_FLUX_RECAL (removed) -RECTIFY -SMEAR_COMPARE -SPCOADD_FLUXED_FRAMES -SPDATA2MODEL_RATIO -SPHOTO_CALIB -SPMEDIAN_REBIN -SPPLATE_CORRECT (removed) -SPREAD_FRAMES -STYPE_STANDARD: More development by Christy. -UNDO_SMEAR (removed) -ZEROPT_COR (removed) - -APOPLOTGEOM: This is a plotting routine to visualize the geometry of the - arc lines on the CCD from the Son-of-Spectro outputs. It was - written in Nov 2002, but never checked in. -COMPUTECHI2: Do the chi^2 computation in double-precision. -DAYTIME_TEST: Proc to look for spectro exposures taken during the day - and not marked as test. -DR1LIST_BEST: Proc to determine which plates *should* have been in DR1 - that match the tiles of those actually chosen. -FILTER_THRU: Make silent in call to xy2traceset. -FIND_UNPLUGGED: Proc to find all unplugged fibers that still seemed - to get a spectrum in the reduced data. -FITSN: Changed call to the obsolete function POLYFITW, to the newer - but worse POLY_FIT. - Apply a work-around to the apparent change in PHOTO fiber-mags, - as discussed in sdss-obs/4029 and PR #5642. Shift the blue - and red fit magnitudes from: - [18.20,19.70] -> [18.33,19.83] in blue - [17.90,19.40] -> [18.06,19.56] in red -LISTEXPTIME: New simple proc for listing all exposure times. -PCA_SOLVE: Added /quiet keyword. -PHOTO_LOADER: New proc to write PHOTO outputs from SDSS_READOBJ() to an - ASCII stream for direct input into Postgres; written by Hogg - and Schlegel. -PLATECEN_TEST: Proc to check the consistency of the RA,DEC positions in - the output spPlate file headers. -PLATESN: New header keywords ROFFSET & RSIGMA store the offset and standard - deviation of the r-band difference in the spectro and photo mags. - GIOFF and GISIGMA store the offset and scatter in the (g-i) color. - Changed (g-i) to (g-r). -PLOTSN: Fixed histogram scales, changed colors for histograms. - Changed (g-i) to (g-r). - Tremonti has added return values for ROFFSET,RSIGMA,GROFFSET,GRSIGMA, - but these are not documented. Also, ignore objects with PLUG.MAG[2] - <= 0 (but what would those be?). Plotting ranges changed. - A 3rd set of plots for histograms. - (Revert this code back to v4_10_1 if need be.) -PLUGFILE_UNMAPPED: Proc to list which fibers in a plPlugMapM file are unmapped, - and the info that might help decide where those fibers should be. -QUICKEXTRACT: Apply a work-around to the apparent change in PHOTO fiber-mags, - as discussed in sdss-obs/4029 and PR #5642. Shift the mags at - which to evaluate the S/N from: - mag=20.20 -> 20.33 in blue - mag=19.90 -> 20.06 in red -SDSSPROC: Compute the standard deviation in the bias region again, - but using a weaker 5-sigma clipping. This is done solely - for the purpose of identifying any electronics problems, - such as that on the left half of r2 on MJD 51779. - Trigger a warning message if above 10 ADU. - This addresses PR #3700. -SMEARTIMES: Proc to list the TAI timestamps of 'smear' exposures in a log file. - The purpose of this is to get an exact list of times and determine - from the TPM logs whether the telescope moved in the way that it - was supposed to during these 'smear' exposures. -SPREDUCE1D: Add the "UNPLUGGED" value to the ZWARNING flag. - Add the fields SPECTROFLUX,SPECTROSYNTHFLUX,SPECTROSKYFLUX - which are the same as the COUNTS* fields but in nanomaggies - instead of maggies, which are the same units as our imaging outputs. -UPDATE_PLATELIST: Proc for easily updating the spPlateList.par file. - -doc/spectroSOS.html: Add the warning message about "Std. dev. in bias region". -etc/atmdisp_vec_am1.1.see2.0.fit - Tremonti's atmos. dispersion corrrection? -etc/atmdisp_vec_am1.2.see2.0.fit - Tremonti's atmos. dispersion corrrection? -etc/atmdisp_vec_am1.3.see2.0.fit - Tremonti's atmos. dispersion corrrection? -etc/atmdisp_vec_am1.4.see2.0.fit - Tremonti's atmos. dispersion corrrection? -etc/atmdisp_vec_am1.5.see2.0.fit - Tremonti's atmos. dispersion corrrection? -etc/emlines.par: The [O_II] lines were updated from Peter van Hoof's web - site at: http://www.pa.uky.edu/~peter/atomic/ -etc/kurucz_stds_v5.fit: Made with new SPECTRUM code. Use white dwarf - correction to colors. -etc/kurucz_model_fix.fit (removed) -etc/kurucz_stds_interp.fit (removed) -etc/spChunkList.par: Add chunks 28A, 71, 68A. Chunk 62 should be "special", - not "main". Add chunks 77,78,79. -etc/spPlateList.par: Update from 20 Nov 2002 to 11 Sep 2003. -pro/Makefile: Add the plan subdirectory. -ups/idlspec2d.table: Get rid of all the $UPS_PROD_FLAVOR references for - dependent products. - -------------------------------------------------------------------------------- -v4_10_2-2003/8/13 -This is an untested version of the code with the files in some -state between v4_10_1 and v4_10_6. It was created retro-actively -by RHL on 18 March 2004 to tag the code as is stood on 13 Aug 2003. - -------------------------------------------------------------------------------- -v4_10_1 (Jun 18, 2003 idlspec2d running on IDL 5.3 - 5.5 -Built against specflat v1_5, elodie v1_0, idlutils v4_10_1. - -Builds spAll summary files using Princeton calibObj files. - -DJS_SVDFIT: This proc removed, since it was a temporary fix to - be called for solving a singular matrix from FIND_NMINIMA. -FIND_NMINIMA: Remove use of DJS_SVDFIT (which didn't work on the Mac - anyway). Re-write the fitting to exactly three points - with an explicit solution of the quadratic equation. - Add another error code (-7L) for the case where all of the Y - values are identical, in which case the fit is impossible. -FINDSPEC: Rationalize the calling sequence to be more consistent - with SDSS_FINDIMAGE. Get rid of /DUPLICATE keyword, and - add /BEST keyword. Allow matching multiple objects per plate - if the search radius is large. -FITMEANX: Add MINSDEV and INMASK optional keywords. Both these are - used by LOCATESKYLINES to prevent the S/N of some lines getting - infinitely large. This happened for the r1+r2 exposures on - plate 336/51999, where the first sky line was off the edge - of the plate for most of the lines. -GET_TAI: Add /SILENT option. -LOCATESKYLINES: Change MAXSHIFT from 2.0 pixels to 3.5 pixels. The worst- - case real arc->science flexure that we've seen is 3.2 pix - for the r2 camera on plate 192 MJD 51461. - Use the INMASK keyword in the call of FITMEANX(). -PLATELIST: Use PLUG_RA,PLUG_DEC to match duplicate observations of - individual objects, rather than RA,DEC (which can be zeros - if there was no match to the photometry). -PLATEMERGE: Small changes to allow using the (new) calibObj files - instead of the (old) tsObj files. - For the ASCII output, write MODELFLUX instead of COUNTS_MODEL. - In call to PLUG2TSOBJ, pass PLUGMAP so that warnings of unmatched - sky fibers are not printed. - Add SPECOBJ_ID and NSPECOBS to the output structure. -PLUG2TSOBJ: Small changes to allow reading of the (new) calibObj files. - For now, assume these files are in $SPECTRO_DATA/calibobj. - Print a warning message for non-matched objects only if they - are not skies. -READSPEC: Add internal function RSPEC_ZLINE_APPEND() for appending two - zline structures, even if they are different structures or - have different number of lines measured. -SDSSPROC: Call the new proc WARN_DAYTIME. -SPCALIB: The correct TSET structure was not always being written - to the spFlat files (though those files aren't actually - used for anything), nor the FIBERMASK array. - Write those files directly from the FLATSTRUCT,ARCSTRUCT - structures instead. Also, gzip those two output files. -SPPLAN2D: Exclude files where the plate number does not match that - in the map name. This happens, for ex, for exp #14970 on - MJD 52405, which has the MAPNAME for plate 802 but a PLATEID - of 9999. -SPREDUCE: Major change to how the flat+arc calibrations are chosen. - Now choose the flat that is good and nearest in time to - the midpoint of all the science exposures. Select the arc - that was used for that flat (regardless of whether it was - the best arc). Previouly, we chose the flat that was nearest - in time to each exposure, and we chose the best arc regardless - of the time it was taken. This had the potential to choose - an arc taken during the afternoon (as happened for plate 820 - on MJD 52405, c.f., PR #3966) if it is not explicitly marked - as a test exposure. -WARN_DAYTIME: New proc to print a warning if an excellent-quality exposure - taken with the Sun up. For example, this is how the bad arc - exposure got in to ruin plate 820/52405 (PR #3966). - -bin/speclog_update: New bash script to update the "speclog" product for one - or more MJDs from the astrolog directory. -bin/sprobot_start: Put the environment variable $CVS_RSH into the cron file, - for use by the "speclog_update" script. - No longer set $SPECLOG_DIR=$ASTROLOG_DIR, since now they - really are different. -bin/sprobot.sh: After copying the astrolog files, call the "speclog_update" - script to make a CVS-versioned copy from $ASTROLOG_DIR->$SPECLOG_DIR. -doc/www/spectroSOS.html: Add warning message for "Sun above horizon." -examples/opHdrFix.par: Go through all the headers looking for flat, arc, - or science exposures taken while the sun was up. Discard them - in this file, which takes care of all corrections through - MJD 52426 (1-Jun-03), after which the sdHdrFix-$MJD.par files - are used. -ups/idlspec2d.table: Add dependency on "speclog" product. -ups/Makefile - Get rid of the confusing dependency on - $(SDSSTOOLS_DIR)/bin/install_ups_table. - -------------------------------------------------------------------------------- -v4_10_0 (Apr 8, 2003 idlspec2d running on IDL 5.3 - 5.5 -Built against specflat v1_5, elodie v1_0, idlutils v4_10_0. - -Test against new idlutils. - -APOHEADER: Allow an optional keyword MJD (to speed things up). -CREATE_LINESTRUCT,LINEBACKFIT,SPREDUCE1D: Replace LINENPIX with the number - of pixels to the left and right of the line center, LINENPIXLEFT - and LINENPIXRIGHT. Use both of those to trigger the warning - NEGATIVE_EMISSION from quasars, which was triggered sometimes - when there were only pixels to one side of the line center - (PR #3797). -FLUX_STANDARD: Added empirical correction to SPECTRUM-Kurucz models. - Then got rid of them! -GET_TAI: Trigger a Warning if (TAI-END) - (TAI-BEG) < EXPTIME + 20 sec. -PLATECOMPARE: Also plot any objects that have ZWARNING set to zero - in one observation and non-zero in another. -PLATELINKS: New proc for generating symbolic links to either all of the - interesting files in the $SPECTRO_DATA tree, or one of the - public subsets (e.g., "EDR" or "DR1"). -PLATEMERGE: Create spAllLine files. Allow PUBLIC to be a keyword specifying - any of the public subsets (e.g., "EDR" or "DR1"). -PLOTSPEC: Fix trivial bug (had "EXTRA" instead of "_EXTRA") in passing - additional plotting keywords to plots. Also, pass those - keywords along to the XYOUTS commands. -PLOTSN: The last plot was accidentally showing i-band residuals instead - of r-band. -SPHDRFIX: Test if the opHdrFix file (or the directory!) even exist at all. - Otherwise, if the directory does not exist, we'll get stuck in - an infinite loop. -READSPEC: Fix minor bug that would truncate the wavelength mapping - when spectra are read from multiple plates and /ALIGN not used. -SPPLATE_CORRECT: Fixed small bug so that it works with the smear left in. -SPREDUCE1D: In setting the NEGATIVE_EMISSION flag for QSOs, demand that - the line be negative by at least 3-sigma. -STYPE_STANDARD: Fixed error in smoothing box size. -ZEROPT_COR: Added range checks to get rid of seg faults. - -bin/sprobot.sh: Instead of looking for "/data/spectro/$MJD" to get - an MJD list, look for "/data/spectro/astrolog/$MJD". - This will get the log files for MJDs where there are no - spectroscopic data. -bin/sprobotlist.sh: Add calls to PLATEMERGE for the EDR and DR1 subsets. -etc/kurucz_model_fix.fit - New file for empirical corrections to - SPECTRUM-Kurucz models, used by FLUX_STANDARD. -examples/opHdrFix.par: More updates, in an attempt to identify - all exposures with wrong exposure times in their headers - due to various SOP and DA bugs. - Flag a bunch of old data as bad, where I've specifically searched - for short science exposures. - Change all FLAVOR='unknown' entries to QUALITY='bad'. -pro/fluxfix/Makefile - Forget to add this Makefile, which is needed - to prevent the "make install" from crashing on an IRIX platform. -ups/idlspec2d.table: Change flavor to "ANY". - -In idlutils: - -DUST_SDSSFILTER: New proc to integrate the extinction curve over - a selection of representative source function and the SDSS filters. -DUST_INTFILTER: New proc to integrate the extinction curve over a - given source function + filter curve. -GSC_READ_TABLE: New proc to read one table from the Guide Star Catalog. -HOGG_SCATTERPLOT: New proc to plot greyscale scatterplot with contours. -MWRFITS_CHUNKS - Do not always create a new file (unless /CREATE is set). -NONNEG_MULT_UPDATE,NONNEG_MULT_UPDATE_SOLVE: New code from M. Blanton - for non-negative least-squares solving. This is a special - case of box constraints in quadratic programming, as suggested - by Sha, Saul, & Lee (2002), "Multiplicative updates for - nonnegative quadratic programming in support vector machines" - (UPenn Tech Report MS-CIS-02-19) -STRUCT_PRINT: If /NO_HEAD is set, do not increase the width of a column - to occomodate the column name. New FORMATCODES option. -STRUCT_TRIMTAGS: Would not have worked if only the very 1st tag were selected. -YANNY_WRITE: New options /ALIGN and FORMATCODES, even though these options - make it possible to write invalid Yanny files. - -Various astrometric routines have been moved from the hoggpt product -into pro/astrom. The USNO routines have been modified for reading -the USNO-B1.0 catalog (as well as USNO-A1,USNO-A2). -LL2UV -USNO_CONE -USNO_READ -USNO_READZONE -USNOB10_EXTRACT -UV2LL - -Various "mangle" utilities added by M. Blanton in pro/mangle. - -evilinstall: Moved to the photoop product. -evilmake: Turn on optimization for all platforms except IRIX. - Previously, we tried to set -O3 on IRIX, which crashes - builds on the machine sdsshost.apo. -src/spheregroup/chunks.c - Minor bug fixed. -ups/idlutils.table: Change flavor to "ANY". - -------------------------------------------------------------------------------- -v4_9_13 (Nov 24, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_4. - -Support for Mac OS X platform. New features + minor fixes for SOS. -First check-in of Tremonti's flux-calibration code, though not integrated. -Check-in of dust map code. Re-write of YANNY_READ. - -APO_LOG2HTML: Default link to GIF plot, with another link to PostScript. -APOPLOTARC: New proc for plotting arc spectra from the Son-of-Spectro outputs. -APOPLOTSKY: New proc for plotting sky spectra from the Son-of-Spectro outputs. -APOREDUCE: Convert the PostScript plot to GIF format using "pstogif", - which is in idlutils. -EXTRACT_ROW: Be sure to pass "whoppingct" as type LONG to the C code. - If not, then it fails on the Mac OS X platform. -FIND_NMINIMA: Fix tiny bug for optional plots. -FINDSPEC: Add the optional keyword SEARCHRAD. -GUIDERMOVIE: The format for the date in the header of the guider images - has changed. This code should now comptabably read the old - or new date format. -HELIOCENTRIC: Moved to idlutils product. -LINEBACKFIT: Change how the error on equiv. width (LINEEW_ERR) is computed. - I believe it was incorrect before, and should simply be - computed from LINEAREA_ERR,LINECONTLEVEL_ERR. -PLATELIST: Replace the plate center RA,DEC with that of the object - closest to the center for those cases in which the spPlate - headers got the wrong coordinates (see PR #2419). When - these are replaced, print a WARNING statement. - Be more silent when calling MRDFITS(),HEADFITS(). -PLATEMERGE: Search for overlaps in plates with a somewhat larger radius, - just to be somewhat immune to errors in listed plate centers - (for ex, see PR #2419). Also, print some more informational - messages. -PLOTSPEC: Bug fix to allow one to specify the output file name with PSFILE=. - Fix units on Y axis to /cm^2 instead of /cm. -QUICKEXTRACT: Change print statement for whopping fibers to one per line. - Write SSET,RELCHI2STRUCT to the output "sci-" file. -READ_ELODIE: Use INTERPOL() instead of POPULATE_IMAGE for interpolating - the high-resolution Elodie spectra onto the log-wavelength binning. - I'm still uncertain as to the absolute units of the spectra. -READSPEC: Add PATH option, which can override TOPDIR. - Determine the MJD dynamically if set equal to 0. -SDSSPROC: Fix silly bug trying to set QUALITY='excellent' when undefined. -SLITHISTORY: New proc to plot history of spectro slit-head positions - based upon the (new) plSlitps files from the mapper. -SOLVEFILTER: New proc to determine the 2.5-m filters from the spectra. -SKYSUBTRACT: Optionally return SSET, which is the B-spline structure - for the supersky. This will be used by APOPLOTSKY. -SPCOADD_FRAMES: Change BUNIT header keywords in output files to have - the comment '1E-17 erg/cm^2/s/Ang' instead of the incorrect - comment '10E-17 erg/cm/s/Ang'. -WRITE_UROS: Add Flatvec,Rnois to output files. - -New procs from Tremonti in pro/fluxfix: - -DR1_SPPLATE_COR: Modify a list of spPlate files for improved spectrophotometry. -FLUX_STANDARD: Solve the flux-calib vectors for a single camera+spectrograph. -PLATE_FLUX_RECAL: Called by SPPLATE_CORRECT. -SPPLATE_CORRECT: Correct the flux calibration of the spPlate files for DR1. -STYPE_STANDARD: Spectral type the standard stars and save the result as - a FITS file. (This should probably be changed to return the result). -UNDO_SMEAR: Create correction vectors for 1 plate which can be used to - remove the the effects of "smear" from the spectra. -ZEROPT_COR: Compute a zeropoint correction to the flux calibration. - -aporsync_alllog.sh: New shell script for copying all of the log files - from sdsshost.apo:/astrolog/$MJD to the sos.apo machine. - This will be done once per day at 7:45. This rsync must - follow symbolic links on sdsshost.apo, since it now looks - like quite a few of the files there are now symbolic links. - (That's crazy, but what's a guy to do?) Copy the last 7 nights - of logs, whether or not there was spectroscopy. -aporsync_logs.sh: The last line of the first rsync command was accidentally - dropped in this last version - fix. Also, only copy sdHdrFix file - if it exists. This addresses PR #3968. - Also copy plSlitpos*.par,plPlugMap*.log files. -export.h: Update this file to agree with the IDL 5.5beta for Mac OS X. -Makefile: Support for new "fluxfix" subdirectory. -opHdrFix.par: Fix the RA,DEC positions in the raw file headers to fix - some remaining problems for PR #3009. Specifically, the following - plates were getting the wrong RA,DEC in the platelist files: - 351/51780, 355/51788, 356/51779, 360/51780, 385/51783, 391/51782, - 395/51783. - Discard exposures 14967-8 for plate 820/52404. -sos_start,sprobot_start: If the environment variable PATH has more than 1020 - characters than abort. This is because the PATH appears to be - truncated beyond that point on certain Linux systems. - Run the mail program at 8:10 in the morning, rather than 7:20. - This addresses PR #4194. -spEigenElodie.fits: Recreate with fixed READ_ELODIE(). New first eigenspectrum - now looks like a normal stellar spectrum. -sprobot_start: Fix tiny typo (extra quotation on line 141). - Start the main job at 10:30am instead of 10:00am. -sprobot.sh: Change the name of the astrolog directory on sos.apo.nmsu.edu - from /astrolog -> /data/spectro/astrolog (they changed it!) -sprobot.sh,sprobot1d.sh,sprobot2d.sh,sprobotlist.sh: - Output the environment variables $IDLSPEC2D_DIR,$IDLUTILS_DIR. -spChunkList.par: Added chunks 48-55. -spPlateList.par: Change yet again to agree with the latest posting from JEG - of 291 plates. About a dozen have changed since the Annis list - dated 13 Oct 02. - -In idlutils: - -BSPLINE_BKPTS: Integer roll-over bug fixed by DPF for more than 2^30 - data points (doesn't matter for SDSS pipelines, but it - does for DEIMOS). -DFPSPLOT: Added optional XSIZE keyword. -DJS_BATCH: Add optional keyword SELECTHOST. This will be used - for the HoggPT processing of 2.5-m data. - The inputs LOCALFILE,OUTFILE are now optional. -DJS_LOCKFILE: Add /append option. -DJS_LOCKFILE,DJS_UNLOCKFILE: These routines had a small chance that - more than one process could lock a file at once. This - small chance is now eliminated on Unix platforms running - IDL 5.4 or later by building a symbolic link as the lock file. -DJS_SFIT: New proc for surface fitting to tabulated data with errors. -EXT_CCM,EXT_ODONNELL: Move these old dust-related routines here since - they are general-purpose. They were not previously in any - repository. -FITS_WAIT: Allow DELTAT,TMAX to be zero. -HELIOCENTRIC: Moved from idlspec2d product, since this is of general use. -HOGG_ITERLINFIT: General-purpose sigma-clipping linear fitting routine - copied over from the hoggpt product. -HOGG_STRSPLIT: New support proc for YANNY_READ. -LOOKFORGZIP: Also look for ".Z" file if others not found. -POLY_ITER: Change "LT" logic to "LE" to handle case where residual - is 0 (e.g., a perfect fit) -POPULATE_IMAGE: Fix possible crash condition under Mac OS X when IMAGE - is 1-dimensional (and NY was not type LONG in the call to C-code). -RADEC_GREATCIRLCE: New proc to solve for the great circle for a set - of RA,DEC positions at a set of times. -SPLOT: Bug fix in the autoscale code (splot_autoscale_x) that crashed - on Mac OS X. -YANNY_READ: Make use of Hogg's procedure HOGG_STRSPLIT, which should be more - robust for parsing strings and speed things up. Not yet thoroughly - tested. - Pre-allocate a large array of length MAXLEN for each structure. - This should save a huge amount of time when reading large files, - since we used to concatenate structures with a=[a,b] every time - a new line was read. - Add support for compressed files, with file names ending with - either '.gz' or '.Z'. This is somewhat complicated by the fact - that we need to start by getting the number of lines in the file. - Return an errcode of 0 in the case of no file, which conforms - to the behaviour of previous versions of this code. -YANNY_READONE: New proc; wrapper for YANNY_READ. -YANNY_WRITE: Default to having the variable names in the typedef's in - lower-case (not that it matters). - -The pro/djsphot directory has been moved from the hoggpt product. -This includes: - -DJS_NEFF -DJS_PHOT -DJS_PHOTCEN -DJS_PHOTFRAC -DJS_PHOTSKY -FIND_SIMPLE -QUICK_PHOTFRAC -SQUAREPHOT - -These SFD dust routines have been moved here: -BH_RDFORT -DJS_PLANCK -DUST_GETVAL - And modified to read I12, I25, I60 maps also. -FAC_TEMP2FLUX -FAC_FLUX2TEMP -PLANCKCORR -PREDICT_SYNC -PREDICT_THERMAL -SETLOG -WCS_COORD2PIX -WCS_GETVAL - -Various astrometric routines have been moved from the hoggpt product -into pro/astrom: -ANGLE_FROM_PAIRS -ASTROM_ENGINE -ASTROM_TWEAK -OFFSET_FROM_PAIRS - -evilmake: Add "Darwin" (Mac OS X) as a possible platform. - Export F77=g77 for the platform. - This doesn't work yet for Blanton's spheregroup code or Fortran. -export.h: Update this file to agree with the IDL 5.5beta for Mac OS X. - (There are actually 5 copies of this file in this product!) -sprobot.sh: Comment-out the code that exits if there is no new data. - This way, we still launch BATCH2D,BATCH1D even if no new data - has been copied over from Apache Point. - -------------------------------------------------------------------------------- -v4_9_12 (Jun 26, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_4. - -Minor enhancements for SOS. For P-1D, now able to generate larger summary -files and improvements to the web site. - -APO_LOG2HTML: Change link from SOS web pages to new location at - "http://sdsshost.apo.nmsu.edu/idlspec2d/spectroSOS.html". - For the total S/N^2 on a plate, only include exposures - where quality='excellent', as per PR #3898. -CATPLOT: New proc. Modified version of SPLOT by Tremonti for inspecting spectra. -COLLIMATE: Clarify the output text to say "RMS across CCD", rather - than implying this is a measurement error (with "+/-"). -LINEBACKFIT: Fix typo for setting default value for SIGGUESS. -MAKE_SKYINVVAR: New proc. First attempt to reconstruct the sky background - with a v4 spPlate file. -PLATEHIST: Select "good" plates based upon "platequality" field - from PLATELIST. -PLATELIST: Use manually-assigned platequality from "spPlateList.par" - file when it exists. - Add fields N_TARGET_MAIN,N_TARGET_LRG,N_TARGET_QSO. - Add fields SUCCESS_MAIN,SUCCESS_LRG,SUCCESS_QSO. - Use STRUCT_PRINT to print all ASCII and HTML files. - Use APO_CHECKLIMITS() to check limits of tabulated values - and color-code them in the HTML files. -PLATEMERGE: Use MWRFITS_CHUNKS to allow us to write bigger files - (approximately up to your memory size). - Add PROGNAME,SPECPRIMARY to ASCII output. - If SUBCLASS contains several words, then use a plus sign between - the words in the ASCII file rather than a space (so that awk will - work). -PLOTSPEC: Added option to use Blanton + Hogg's java viewer (Blanton). -PLUG2TSOBJ: Slight change to find Blanton's files which are now named - tsObjPlate-*.fits rather than tsObj-*.fit. -SDSSPROC: If MJD <= 51813, then set QUALITY=excellent unless this is - over-written by SPHDRFIX. This is because for the early data, - this keyword was arbitrarily set to 'unknown', 'bad', - 'acceptable', or 'excellent'. Note that because of this, - early data will not have their plan files built properly for - versions v4_9_10 or v4_9_11. -WRITE_UROS: New proc to generate ASCII files of individual exposures - on spectra for Uros Seljak -ZPLOT: Change "brg" names to "lrg". - -aporsync_logs.sh: Add an rsync command to copy the "sdHdrFix*.par" file - from the sos.apo machine to sdsshost.apo. Do *not* rsync - this file from sdsshost.apo -> sos.apo. -mailhtml.sh: Make archival copies of the SOS log file (sos.log), naming - them sos.log.1dayold, sos.log.2dayold, .... -make_room.sh: Simple script to remove old MJD data directories on sos.apo - in order to bring free space to above 5%. Not called by any - other scripts -- could be dangerous! -opLimits.par: Use the SKYPERSEC limit for either science or smear exposures. - Add limits for use by the PLATELIST procedure. -spPlateList.par: Update to data through MJD 52413 (19 May 2002). - Add PLATEQUALITY,QUALCOMMENTS to Yanny structure. - Remove the following (bad) plates from public data releases: - 266/51602 (Internal LEDs), 360/51780 (b1 CCD warmed up). -sprobotlist.sh: Call the IDL commands ZPLOT and PLATEHIST each night - from the Spectro-Robot. -sprobot_start: Add a line to the cron job to run at 12:59 am that - copies the sprobot.log file to sprobot.log.1dayold and - sprobot.log.2dayold. - -In idlutils: - -FLOATCOMPRESS: Handle Infs and NaNs. -MWRFITS_CHUNKS: New proc to write a FITS binary table in chunks - (used by PLATEMERGE). -REPSTR: Change loop indices to type long, which was necessary to the - call from PLATEMERGE. We should be sure that this gets - into Landsman's code version. -STRUCT_PRINT: Add options TARRAY, /NO_HEAD, /HTML, FDIDIT, DDIGIT, ALIAS. -STRUCT_TRIMTAGS: New procedure. -SXASCII_READ: Fixes for sxascii_read, I think it might actually work?! -YANNY_READ: Hacked by Christy to fix the bug to allow semi-colons - within quotes. This adds the internal function YANNY_INQUOTES(). - I suspect there may be a better way to do this using REGEXP(). - If someone ever figures that out, the version before this was 1.31 - (which appeared in v4_9_10,v4_9_11). - -evilinstall: One line change to do one more check for proper sdsstools. - -------------------------------------------------------------------------------- -v4_9_11 (May 31, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_4. - -Fix "make install" bugs and crash condition for P-1D. - -LINEBACKFIT: Fix crash condition just introduced (testing for return - status from MPFITFUN). -LOGSHEET: Include UT time, NAME, CARTID, and QUALITY in outputs. - -doc/Makefile: Remove invalid copy line. -etc/Makefile: Change copy of "*" to "*.*" so the "make install" does - not crash on IRIX+6 platforms. -pro/Makefile: Remove invalid copy line. -pro/inspect/Makefile: Added this makefile. -pro/science/qso/Makefile: Fix Makefile. -templates/Makefile: Change copy of "*" to "*.*" so the "make install" does - not crash on IRIX+6 platforms. -spectroSOS.html: More comments on the QUALITY keyword. - -In idlutils: - -MJD2DATELIST: Make MJEND optional, so that this can convert one date - into a string. - -evilinstall: Use "awk" instead of "head -1c" so that this script will - run on an IRIX+6 platform. -bin/Makefile: For the "make install", explicitly copy file names - rather than just "*". Using the wildcard tries to copy - the CVS directory on an IRIX+6 platform, which then - crashes the install. -goddard/text/Makefile: We were missing this Makefile. -src/math/Makefile: Comment-out the build of the code that Hogg - just added but doesn't build: idl_nnls,nnls,diff,g1,g2,h12. - -------------------------------------------------------------------------------- -v4_9_10 (May 28, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_4. - -New version for Son-of-Spectro with more development work. - -APO_CHECKLIMITS,opLimits.par: Allow text limits in the opLimits.par file, - and allow the use of wildcards for flavor,field,camera. -APOFIX: Use QUALITY header keyword to declare exposures bad (as specified - by PR #3687). Enclose any string in single-quotes, so that - the SPHDRFIX routine can desriminate between strings and numbers. - Add lots of explicit checks for valid values for each keyword, - and only allow the modification of a small list of keywords. - Also add /test option. If the QUALITY card is edited, then - go through the logfile (logsheet-$MJD.fits) and explicitly - change the QUALITY fields in those FITS tables (but don't - regenerate the HTML table?). -APOHEADER: Use SDSSHEAD() instead of HEADFITS() to read the headers, such - that this printout includes any observer edits to the headers. - Also fix so that this proc works if both a ".fit" and ".fit.gz" - file exist on disk. - Also list the QUALITY keyword. -APOREDUCE: Add the following to the output structure: QUALITY,NAME,OBSCOMM - RADEG,DECDEG,AIRMASS. -APOREDUCE,QUICKBIAS,QUICKEXTRACT,QUICKTRACE,QUICKWAVE,REMOVE2REDO: Make - use of /do_lock keyword when calling SDSSHEAD() or SDSSPROC. -APO_LOG2HTML: Add QUALITY column to output table. -GET_MJD_DIR: Comment-out test that MJD directories contain files, since - that's so bloody slow. -GUIDERMOVIE,GUIDERMPEG: New procs for looking at the spectroscopic guider - images for a night. -INSPECFILES,INSPECTGEN: New routines for generating prototype files - for manual inspection. -LOGSHEET: Do not include both uncompressed and compressed files in a listing. - Remove the INDIR option, and add MJD and CAMERA keywords. -PLATEHIST: Use call to MJD2DATELIST. -PLATEMERGE: Include logic for setting the SPECPRIMARY field in the outputs. - Speed this up by pre-generating the exact output structure, - and use structure assignments rather than copy_struct_inx. - Exclude some tags from the output structure, spec. ROSAT*,FIRST*. -PLOTSPEC: Some major re-organizing of the main routine to allow PLATE,MJD - to be passed as vectors. Add optional ZHDR return value. - Add /RESTFRAME option. -QUICKEXTRACT: Add warning messages for "Median sky-residual chi2" - and "Max sky-residual chi2". -QUICKTRACE,QUICKWAVE: Do not write the tsetfile or wsetfile if the - quality of the exposure in not 'excellent' (and remove any - such file for that exposure if it already exists). -READSPEC: Fix the re-sorting of the ZLINE output structure, which is - complicated by being a multi-dimensional structure. -REMOVE2REDO: Only allow this proc to run on a machine named "sos", - unless /not_sos is set. This is the same logic used by APOFIX. -SDSSPROC: If the OBSCOMM keyword contains the words "dithered" or "focus", - then assume this is test data (set QUALITY='test'). -SDSSHEAD,SDSSPROC,SPHDRFIX: Add /do_lock option to lock the sdHdrFix files when - running Son-of-Spectro, which can dynamically alter those files. -SPPLAN2D: Exclude all files where the QUALITY header keyword is not 'excellent' - (as per change requested by PR 3687). -SPREDUCE1D: The output FRACNSIGLO was being computed completely wrong -- Fixed. -ZFIND: Bug fix for when NPOLY=0. - -aporsync_logs.sh: Include the "sdHdrFix*.par" files as the first ones - to copy over from sdsshost.apo -> sos.apo. -data_rsync.sh,killdata.sh: Two minor fixes: (1) gives proper syntax to - remove files in spectrolog directories, and (2) excludes - uncompressed guider files from being rsync-ed to rawcopy. -idlspec2d.table: Add optional dependency on "spinspect" product. -pullspectra: New bash script for pulling SDSS spectra from Princeton - to other institutions. -opHdrFix.par: Update through MJD 52413 (May 2002 dark run). -opLimits.par: Change exposure time limits to [599,1804] sec, in response - to PR #3653. -spectro_apodisplay.html: Include more links to spectro.princeton web site. -spectro_inspect.html: New file for instructions on manual inspection of spectra. -spectroSOS.html: Include more links to spectro.princeton web site. - Update to include comments regarding freeing up disk space (PR 3675). - Update to include changes to declaring exposures bad (PR 3687). - -In idlutils: - -BSPLINE_ITERFIT: Added /double to computation of INVVAR (line 107). -DJS_BATCH: Fix invalid return codes in a sub-proc. -NNLS: New non-negative least-squares fitting code from Hogg. -POPULATE_IMAGE: Do not recast if image already float (speeds up 4x) - -diff.f,g1.f,g2.f,h12.f,idl_nnls.c,nnls.f: C+Fortran code for NNLS proc. - -------------------------------------------------------------------------------- -v4_9_9 (Apr 26, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_4. - -New version for Son-of-Spectro with added functionality. - -APO_LOG2HTML: Add columns for EXPTIME and AIRTEMP to web page tables. - Comment-out lines that set FONT SIZE="+4", since that shows up - as huge on the mozilla web browser. -APOALL,APOREDUCE: Add the /no_diskcheck option. -APOHEADER: New proc for the observers' to print the subset of interesting - header keywords from the raw sdR files. -APOFIX: New proc for declaring exposures bad, or fixing other header files, - by using sdHdrFix-$MJD.par files (a new file type). -APOPLOT: Bug fix to prevent crash when specifying EXPNUM. -APOREDUCE: Add CARTID,AIRTEMP,CCDTEMP to all output structures. -BATCH1D: Add spZline file to list of output files. -EXTRACT_OBJECT: Mitigate possible crash condition if relchi2struct not set. -LINEBACKFIT: Fix crash condition if there is at least 1 data point, but - too few points to fit. When this happens, MPFITFUN() returns - with STATUS=0 and does not set PERROR, etc. This crashed - plate 230/52251. -PLATELIST: Add NGUIDE,FBADPIX,FBADPIX1,FBADPIX2 to structure. - No longer compute airmass from TAI, since TAI is now an average - time and may even correspond to the middle of the day if a plate - is observed over two nights. Trust the average airmass in the - spPlate header. Add PLATESN2,PLATEQUALITY fields. -PLATEMERGE: Limit output file to only 'good' or 'marginal' plates. - Get rid of /QSURVEY option. Add the following columns to - the output FITS file: progname, chunkname, platequality, - platesn2, specprimary (not using that last field yet). -QAPLOT_SKYSUB: Don't crash even in the case of a single sky fiber - (as for plate 218/51461). -QUICKEXTRACT: Return the relchi2struct from SKYSUBTRACT, and put SKYCHI2 - in the output structure. - For the warning message "Whopping", report the fiber numbers - as 1 to 640, rather than the 0-indexed fibers on each spectrograph. -SKYSUBTRACT: Merely clean out some commented-out code and update internal - comments. Avoid a possible crash condition in the case of - all (or most?) bad sky fibers. Version v4_9_8 would still crash - on the bad data for plate 296/51578 on exposure b2-00002076. - Insist that if we use "everyn" keyword for b-spline fits, - that it's >=1. -SPHEADERFIX: Use the new file "sdHdrFix-$MJD.par" that can be written - by the observers' at APO using APOFIX, rather than using the - same mechanism through the sdReport file (which was never used). - -opHdrFix.par: Declare exposures #14537,14571,14638,14653 bad, which were - previously declared bad in the sdReport files. But we're no - longer using the sdReport files for reductions. -opLimits.par: Impose limits on EXPTIME for bias,arc,flat,smear. - Impose limits on (S/N)^2 for smear exposures. -spChunkList.par: Add chunks 40-42. -spPlateList.par: Update to include list of DR1 plates. -spectroSOS.html: Document the new procs APOHEADER,APOFIX. -sprobotlist.sh: Get rid of "platemerge, /qsurvey" since that option - no longer exists. - -In idlutils: - -BSPLINE_FIT: The YFIT vector was not always being computed, depending upon - how this routine completed. Also, some Schlegelization of the code. -DJS_BATCH: Quit if REMOTEHOST is not set, or if any entries are null strings. - This allows us to disable the Spectro robots by commenting out - all lines in the batch2d.par,batch1d.par files. -DJS_MEDIAN: Allow ARRAY to be a vector, and pass DIMENSION=1; this is the - degenerate case where a scalar is returned. -FITSDIR,MRDFITS,MWRFITS,READFITS,SXADDPAR: Fink merged the latest bug fixes - from Goddard. -FITS_READ: This Goddard routine seems to have had a bug introduced, - whereby MESSAGE is not always set when reading a partially-written - FITS file. I *think* this is fixed, but should see what Landsman - says about this change. -FITS_WAIT: Add _EXTRA keyword for passing options to FITS_READ, such - as /HEADER_ONLY or EXTEN=. -HOGG_OPLOT_COVAR: New ellipse plotting routine. -YANNY_READ: No need to read the data in this file (only the header - and structure definitions) if PDATA is not to be returned. - Get the ABORT statement all on one line. -YANNY_WRITE: Put quotes around empty strings. Otherwise, this is not - a valid Yanny file. Bug fix for when passing STNAMES. - -build_links: Over-write existing links, since that's what I'm usually doing. -pstogif: Perl script for converting PostScript to GIF; copied from /usr/bin - on sos.apo. -export.h: Put a copy of this file in src/slatec and src/trace, though - perhaps we should really just have an /include subdirectory? - -------------------------------------------------------------------------------- -v4_9_8 (Apr 12, 2002 idlspec2d only) running on IDL 5.3 - 5.5 -Built against idlutils v4_9_7, specflat v1_4. - -Finish development work for 2D and P-1D before big reprocessing. - -EXTRACT_OBJECT: Clean up the calls to SKYSUBTRACT, and only modify - the pixelmask in the final call to SKYSUBTRACT (when we - do the 2-D sky-subtraction). -PLOTSPEC: Bug fix to label emission lines with /ZLINE. -REDMONSTER,SKYSUBTRACT: Change threshhold for flagging both the BADSKYCHI - and REDMONSTER mask bits to a relative chi^2 of 4.0, which is - what we have traditionally used (except in the last tagged version). -SKYSUBTRACT: Do not modify the input PIXELMASK, but make a copy NEWMASK - which is modified and returned. This allows several calls to - SKYSUBTRACT from EXTRACT_OBJECT, where only the last call - actually modifies this mask. -SPREDUCE1D: Identify subclasses for galaxies and quasars based upon - emission lines. Currently set the following possible subclasses: - AGN, STARFORMING, STARBURST, BROADLINE. - -sprobot_start: Fix trivial bug in setting DISPLAY environment variable. - -------------------------------------------------------------------------------- -v4_9_7 (Apr 10, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_4. - -More development work for 2D and P-1D. -Traceset routines moved from idlspec2d -> idlutils product. - -COMBINE1FIBER: Bug fix to get the NODATA bad pixel set in the ANDMASK - where-ever it is set in the ORMASK. -ELODIE_BEST: Add FITINDX keyword. Expand default fitting range to +/-1000 km/s. -EXTRACT_OBJECT: Add "OPTCHI2" keyword to output header, recording the - mean chi^2 of the optimal extraction. - Add "SKYCHI2" keyword to output header, recording the mean chi^2 - of the sky-subtraction. -MYFLUXCALIB: Put the plate+MJD+camname in the plot titles. -PIXELMASK_BITS: Now simply call the new function SDSS_FLAGVAL(). -PCA_SOLVE: Allow OBJLOGLAM to either be a vector or an array - (now passing only a vector from PCA_STAR). -PCA_STAR: Now read the Yanny file "eigeninput_star.par", and use cz. - Clean up the code, always using the same wavelength mapping - for both input and output spectra -- this allows us to do - away with the internal procedure SPAPPEND. -PLATELIST: Make consistent with changes to spChunklist.par. - Add the elements: WSIG(MA,MIN,MAX), XSIG(MA,MIN,MAX), - XCHI2(,MIN,MAX),SKYCHI2,SCHI2(MIN,MAX). -PLATESN: For the roll call, output both the number of bad fibers for - fiber masks, and the fraction of bad pixels for pixel masks. -PLOTSPEC: Added /ORMASK, /ANDMASK keywords. Plot text for the zwarning flags. - Use /normal coordinates for plot labels, so they stay on - the plot even when zoomming in and out. -QUICKEXTRACT: Do not issue warning message for spatial widths on smear exposures - since S/N can be so low. This addresses PR #3511. -READSPEC,SPEC_APPEND: Add the /ALIGN option for aligning all the spectra - in wavelength. Also, fix a bug whereby reading objects from - multiple could get mis-aligned if the OBJHDR keyword was specified - (this bug was just introduced in the last version). -REDMONSTER,SKYSUBTRACT: Lower threshhold for flagging both the BADSKYCHI - and REDMONSTER mask bits from a relative chi^2 of 4.0 to 3.0. -SDSS_FLAGNAME: Re-write to include many more types of mask bits - from the file "spMaskbits.par". -SDSS_FLAGVAL: New function, which is the inverse of SDSS_FLAGNAME(). -SKYMASK: Remove the rejection of andmask/BRIGHTSKY, and add rejection for - ormask/BADSKYCHI. Now we reject based upon that and - ormask/REDMONSTER. For good plates, this will be rejecting fewer - points. For the recent horrible data (like plate 889/52346), - many more points are rejected since the sky chi^2 are so horrible. - This change will need some real testing. -SKYSUBTRACT: Fix stupid bug where sky-fits are rejected if the mean - sky is negative, though that only happens rarely. This did - cause all the b1 exposures on plate 283/51584 to get rejected - (one of at least several such examples). - Fix another rare indexing bug triggered on plate 318/51580-r2, - and clean up the code that re-selected the sky break points - based upon the S/N as a function of wavelength. - Do not set BADSKYCHI mask bit when NOSKY is already set. - Raise the threshhold for setting the BRIGHTSKY mask bit from - 1.25 * (median sky) to 2.0. -SPCALIB: Save "medwidth" from call to FITDISPERSION in the arcstruct. - Save "medwidth" from call to FITFLATWIDTH in the flatstruct. -SPCOADD_FRAMES: Average keywords XCHI2,SKYCHI2,XSIGMA,WSIGMA in output header. - Add output keywords XCHI2MIN,XCHI2MAX,SCHI2MIN,SCHI2MAX, - XSIGMIN,XSIGMAX,WSIGMIN,WSIGMAX. - Compute the fraction of bad pixels in total, and on each - spectrograph. Bad pixels are any with SKYMASK(INVVAR)=0, - excluding those where the NODATA bit is set in the pixel mask. - Then set the header keywords FBADPIX,FBADPIX1,FBADPIX2. -SPREDUCE: Add XSIGMA,WSIGMA to output headers. -SPREDUCE1D: Use SDSS_FLAGVAL() to set the zwarning mask bits. - Make consistent with changes to line names in "emlines.par" file - when setting the NEGATIVE_EMISSION mask bit. - Call ELODIE_BEST() for stars, and append to spZbest output structure. -TELLURIC_CORR: Center the plot title. -ZTWEAK_STAR: New proc for getting the zero-point of the stellar - templates by matching to the Elodie spectra. - -eigeninput_star.par: Version of "eigeninput_star.dat" as a Yanny file. - Add more Carbon_DQ stars. Use cz instead of z. - For stellar types O through late K, change the classifications - to agree with Elodie (hopefully the fit from 4100-6800 Ang - is good enough for this), and tweak the redshifts of those - stars also (using ZTWEAK_STAR). -emlines.par: Couple the N_II emission line ratios at 1:3. - Append the wavelength to the LINENAME structure element for clarity - in the output files. -spChunkList.par: Remove verstarg from structure, and add progname. -spEigenStar-52373.fits: New stellar eigentemplates based upon - eigeninput_star.par. -spMaskbits.par: Heavily modified file to include many more types of mask bits. -sprobot_start: Set the environment variable "DISPLAY=" so that any - IDL jobs launched from these scripts don't use any additional - IDL licenses. - -In idlutils: - -EX_MAX_PLOT: Added panel features. -HOGG_USERSYM: New symbol-making routine. -SXCOMBINEPAR: Add optional _EXTRA keywords to pass to SXADDPAR. - -goddard/Makefile: Remove tape_io from the subdir list, since this causes it to - crash when building under IRIX+6. - -The following IDL routines were moved from the "idlspec2d" product: -pro/trace/fchebyshev.pro - fchebyshev_split.pro - flegendre.pro - fpoly.pro - func_fit.pro - trace_crude.pro - trace_fweight.pro - trace_gweight.pro - traceset2pix.pro - traceset2xy.pro - xy2traceset.pro -The following C code was moved from the "idlspec2d" product: -src/trace/Makefile - evilmath.c - evilmath.h - trace_crude.c - trace_fweight.c - trace_gweight.c - -------------------------------------------------------------------------------- -v4_9_6 (Mar 29, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_4. - -Son-of-Spectro procs for spectrograph focus; changes in SOS data format. -More development work for 2D and P-1D. - -APO_CHECKLIMITS: Default to returning the strings '','yellow',or 'red', - and only turn into an HTML color if /HTML is set. -APO_LOG2HTML: Add FLAT/XSIGMA and ARC/DISPSIGMA to output tables. - Remove the line of Java-script from the HTML file that - does the auto-refresh (we'll only put that line in the - file "logfile-current.html", as created by APOREDUCE). -APOALL: Major updating of this calling script to conform with current - environment variables ASTROLOG_DIR,RAWDATA_DIR,SPECTROLOG_DIR. - Also, reduce bias,dark,smear exposures. -APOREDUCE: No longer do the test in the beginning of this procedure that - the FITS file should exist, since FITS_WAIT() will do that test - and repeatably look for the file for several minutes. - Log the versions of IDL,idlspec2d,idlutils into the log file. - When copying the HTML file to "logfile-current.html", add - the line of Java-script that does the auto-refresh. -BATCH1D,BATCH2D: Set the DISPLAY environment variable on remote machines - to always be "", so that only one IDL license on each - remote machine. Also, pipe the commands through the bash shell - on the remote machine, which means the UPS environment must - be set up in the .bashrc file on the remote machine. -COLLIMATE: New proc for collimating the spectrographs. -CREATE_LINESTRUCT: Make the LINEWAVE element double-precision. -ELODIE_BEST: New function in development for finding best-fit Elodie spectrum. -EXTRACT_IMAGE: The values in XSKY are noisy measurements, so replace them with - the predicted positions based upon the arc solution when making - the call to SKYLINE_DISPERSION() -- otherwise, it can crash - because the positions may not even be properly sorted! -EXTRACT_OBJECT: Remove call to QAPLOT_SKYDEV, since that QA plot contains - no more information than QAPLOT_SKYSHIFT. -FINDOPFILE: Add /silent option. -FITARCIMAGE: List the (0-indexed) fiber numbers that in which - any or all arc centroids are fixed. -FITDISPERSION: Re-organization of this code Add support for SIGMA being - a scalar, vector, or array. Optional MEDWIDTH output. - Output warning messages if out-of-focus. -FITFLATWIDTH: Re-organization of this code Add support for SIGMA being - a scalar, vector, or array. Optional MEDWIDTH output. - Output warning messages if out-of-focus. -FOCUSHISTORY: First stab at a proc for plotting the spectrograph focus - as a function of time. Simply use the wavelength dispersions - from the arcs, which we have in the spPlate files. -LINEBACKFIT: Force the output sigmas to be non-negative (which also - prevents a bug later in the code that assumes this is true - when measuring the chi^2 of each line, as pointed out by - John Moustakes). - Remove any lines where LINENPIX=0 by setting its AREA,EW to zero - and their errors to negative error codes, and remove from YFIT. - Evaluate YFIT even at points not included in the fit (if INVVAR=0). - Add SIGGUESS option, and allow SIGGUESS and ZGUESS to be either - scalars or vectors (one per line fit). -PLATECOMPARE: Fix 1-character typo preventing selecting the MJD - when using the TOPDIR keyword also. - Pass TOPDIR to READSPEC rather than explicitly resetting - the $SPECTRO_DATA environment variable. -PLOTSPEC: Add options /ZLINE, /NOSYN, /NOERR, TOPDIR. -QAPLOT_SKYLINE: Divide the skyline flux values by the airmass, since those - lines basically scale with airmass. -QUICKEXTRACT: Make call to FITFLATWIDTH, and trigger warning messages if - the spatial widths are too large, indicating that the spectrographs - may be out-of-focus (see PR #3462). - Add XSIGMA_QUADRANT,XSIGMA to output structure. -QUICKTRACE: Call the optimal-extraction code EXTRACT_IMAGE for the sole - purpose of measuring the spatial profile widths, then use - FITFLATWIDTH to trigger any warning messages if the spectrographs - appear out of focus (PR #3462). - Add XSIGMA_QUADRANT,XSIGMA to output structure. -QUICKWAVE: Call to FITDISPERSION to trigger warnings in the spectrographs - look out-of-focus in the wavelength dimension. - Add DISPSIGMA_QUADRANT,DISPSIGMA to output structure. -READ_ELODIE: Optionally return the Elodie header in HDR. -READSPEC: Add TOPDIR input keyword and ZLINE,LINEFLUX outputs. - Use DIMS0 keyword in primary header of spZall,spZline files - if it exists to determine the dimensions of [NPER,NOBJECT] - multi-dimensional arrays. - Option to return OBJHDR. -SDSSPROC: Add /silent option. -SKYSUBTRACT: Trigger a warning if the airmass exceeds 2.5 (note this proc - is also called by SoS). -SPADD_GUIDERINFO: Fix crash condition when very little guiding info - and indexing goes negative. Add NGUIDE to header. -SPCOADD_FRAMES: Total the NGUIDE header keywords. -SPECLINEFIT: Major re-organization of this procedure, allowing one to either - pass a plate file name, or all the input arrays (as is now done - from SPREDUCE1D). Now fit to emission lines for all object - types, not just galaxies. - Pass only those lines within the wavelength range of the spectrum - (+/- 6000 km/sec) to the line-fitting engine. This saves CPU - time that would otherwise be spent determining that these lines - cannot be fit. -SPPLAN2D,SPPLAN1D: Add more informational messages. -SPPLAN2D: If $SPECLOG_DIR is not set, then use $ASTROLOG_DIR. -SPREDUCE1D: Simply overwrite any existing spZ files, rather than - using cpbackup to save old ones. - Call SPECLINEFIT from the end of the code, since it now fits - emission lines for all types of objects (not just galaxies). - Add another ZWARNING flag for QSOs with negative emission lines. -SPREDUCE2D: Output the version of the specflat product at the start of the log. -SDSSPROC: Add "WARNING" to the warning messages about invalid or - missing BC files. -SKYLINE_DISPERSION: Re-write to get the indexing correct. The first version - was not comparing the skyline widths to the correct arcline widths. - The measurement should mean something now. -SKYSUBTRACT: Some cleaning up of the code and catch crash conditions - for when all the sky fibers are bad (as happened for - exposure #10965 of plate 644/52173). For most cases, - the code should be functionally equivalent. -TRACE320CRUDE: Fix a bug just introduced in v4_9_5 that would cause - the code to crash if ystart at any trace falls off the - left or right edge of the CCD. This caused the - plate 0179/51580 (and some others) to crash. -ZFIND: Make EIGENFILE an optional input, so that STARFLUX,STARLOGLAM0 - can be specified directly instead of passing a file name. - -emlines.dat: Add Ly_alpha,N_V,C_IV,He_II,C_III] for QSOs. - Let the widths for the Balmer series be independent from - those of other emission lines, but still constrain the Balmer - lines and other lines to have the same redshift. One such - example where the Balmer lines have a different (narrower!) - width is 406/52238-362. -idlspec2d.table: Added optional dependence upon "elodie" product. -opBC-50000.par,opBC-51809.par,opBC-51813.par: Extended two bad columns - in r1 to the top of the CCD (cols 1201+1586). -opHdrFix.par: Declare data bad on MJD 52336-52337 due to spectrograph - mechanicals problems, and other problems from 52312-52337. -opLimits.par: Add error values for FLAT/XSIGMA and ARC/DISPSIGMA. -mailhtml.sh: Comment out the rm lines (as in 1.18) and leave to killdata.sh -spChunkList.par: Add chunks 36-39. -spectroSOS.html: New warning messages if the flats or science frames - appear out-of-focus according to their spatial profile widths - (will only appear in v4_9_6 and later). - New warning messages if arcs appear out-of-focus according - to their dispersion profiles. - Add FLAT/XSIGMA and ARC/DISPSIGMA to output tables. -sprobot.sh: Add more time stamps to the robot log file. - Change the ssh command that retrieves the MJD directory list - from the remote machine -- it appears that something about the - sed command no longer works the same. -sprobot_start: Comment-out "spamdup" job in the cron file, since we don't - seem to need that hack any more to keep the NSF-automounts alive. - Set $SPECLOG_DIR=$ASTROLOG_DIR for the purposes the the Spectro - robot. - -In idlutils: -ASINH2: Better asinh (from Blanton for PROFINTERP procedure). -BSPLINE_ITERFIT: Always reset OUTMASK so that the input value does not matter. - Set YFIT to all zeros in the case that the fit fails. -EX_MAX_PLOT: Moved from /math to /plot. -FAST_FIT_SERSIC: New proc. -FIT_SERSIC,PROFINTERP,SERSIC: Bug fixes, and use ASINH2. -HOGG_INTERVAL: New proc. -MAGGIES2LUPS: New proc. -MJD2DATELIST: New proc to construct a list of MJDs and date strings - spanning a range of MJDs (useful for plot limits). -PPMTOMPEG: New proc. Wrapper for ppmtompeg, the open-source UNIX mpeg writer. -RADEC_TO_FIELDS: Configurable option allfieldfile. -SEEING_RADIAL: New proc. -SERSIC_PARAMS: New proc. -SPLOG: Add /NO_STDOUT keyword. -SXPAR: Landsman fixed to handle CRVALn of different type properly -YANNY_READ: If reading a Yanny file aborts, then log the file name, - the line number of the failure, and the line itself. - Small speed improvement made in internal proc YANNY_READSTRING. -src/spheregroup/chunks.c: Roundoff error problem fixed. -eviltarball: Comment out the reference to sdsscvs. -evilinstall: Use UPS_PROD_FLAVOR environment variable (not UPS_FLAVOR). - -In specflat: - -First set of global biases (pixbiasave-*.fits) from many nights of data. -Pixel flats now based on more nights of data. -specflat.table: Added "Flavor=Linux" - -------------------------------------------------------------------------------- -v4_9_5 (Mar 1, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_3. - -Minor bug fixes for SOS. - -APO_LOG2HTML: Generate the HTML file name even if the FITS file has a path - in the name, as happens when being called from REMOVE2REDO. -BATCH2D: Include 'smear' exposures when generating list of output files. - (Not doing this caused a crash for plates w/ only smears). -FLUXCORR_NEW: Provide a better test of valid smear correction, fixes PR #2478. -QUICKTRACE: Reverted to doing full trace for flats. Time saving by only - tracing part of the flat image introduces a risk not worth the gain. -REMOVE2REDO: Fix possible crash condition, and change calling sequence to - DJS_MODFITS in the case that an HDU should become empty. - If files have been removed, then update the HTML file so that the - files to be re-reduced are removed from the web page until then. -SPCOADD_FRAMES: set BADFLUXFACTOR only for extreme smear corrections=20x median -TRACE320CRUDE: Fix bug dependent on invvar being set. - Small change to note number of goodrows in xmask, non-critical. - -aporsync_logs.sh: Re-order the files copied so that we get the sdReport - file first. -opLimits.par: Change the good limits for bias counts from [0,20] to [0,15]. -sprobot_start: No longer reference $BATCH2DFILE,$BATCH1DFILE, which are - no longer used. -sprobot_start,sprobot.sh: Added optional $SPROBOT_RSH environment variable - for specifying the protocol for copying the raw data. -sprobotcopy.sh: Deleted. -sprobotlist.sh: Trimmed version of "sprobotcopy.sh", which only creates - the plate list and summary files once per day. - -In idlutils: -DJS_MODFITS: Added /DELETE_DATA keyword, which is functionality needed - for sos_redo (the REMOVE2REDO procedure). -------------------------------------------------------------------------------- -v4_9_4 (Feb 28, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_3. - -More development of 2D. -Minor bug fixes for SOS. -Runnable version for P-1D. - -APOREDUCE: Check how full the disks are for both the input files (sdR images), - and the outputs. Issue a warning message if either is >95% full. -ATVRAWSPEC: Display a 2D spectroscopic image with bad columns marked in red. - This is useful to see that all bad columns have been masked, - especially when looking at the 2D pixel flats. -BATCH1D,BATCH2D: Look for the parameter file batch1d.par,batch2d.par - in the TOPDIR directory rather than reading environment - variables $BATCH1DFILE,$BATCH2DFILE. -CREATE_LINESTRUCT(): Function broken out of LINEBACKFIT so that it - can be called by SPECLINEFIT. -EXTRACT_OBJECT: Added call to skyline_dispersion (for increasing the - instrumental response width to agree with the width of sky - lines), but correction is not implemented because the measurement - appears to be very noisy. Check invvar with whopping fibers. -FINDOPFILE: Find the op file corresponding to a specified MJD. - This function is broken out of SDSSPROC so that it can - be used by other procs (like ATVRAWSPEC). -FITDISPERSION: Mask regions not neighboring lines of interest. - Simplifies extraction of line widths. - Minor tweaks, npoly=10 no longer valid -> changed to npoly=5. -LINEBACKFIT: Fix possible crash condition when computing LINENPIX if - the line width is unphysically narrow and no pixels fall - within the region of an emission line. -MATCH_TRACE: Added keyword radius, and set default to 2 (rather than 3). - This seems to fix PR #2626 (Large bad regions not large enough - w/LOWFLAT) and PR #2063 (Extraction problem fibers 321-400 on - Plate 401/51788), both of which were due to some traces being - slightly off. -PLATECOMPARE: New TOPDIR optional keyword for comparing different - reductions of the same data. -PLOTSPEC: Optional /ZWARNING flag. Report error if FIBERID out of range. -PLUGHISTORY: Plot the history of unplugged fibers based upon plPlugMapM files. -QAPLOT_FCALIBVEC: Generate QA plot of apparent flux-calibration errors - by comparing spectra to synthetic (e.g., best-fit) spectra. - This proc is called at the end of SPREDUCE1D, and generates - figures and warning messages if the min/max apparent fluxing - errors are large (more than 10% anywhere). -QUICKEXTRACT: Call REJECT_SCIENCE() to decide if a science exposure is bad - due to lamps being turned on, too many saturated pixels, etc. - If number of sky fibers > 20, then select one good sky fiber - from each of the 16 bundles. Assumes 20 fibers per bundle. - This addresses PR #3238. - Fix bug whereby bad pixels can trigger whopping fibers. - Bad pixels can trigger whopping fibers. -READSPEC: Don't fail when asking for SYNFLUX, but the spZ file doesn't exist. - (This prevented PLOTSPEC from plotting anything in that case.) -REJECT_SCIENCE: Check in the header that all the flat-field screens are - open and that all the FF,NE,HGCD lamps are turned off. - With this check, exposure #11504 of plate 727/52207 would - have been automatically rejected for having the FF lamps - turned on (see PR #3169). - For now, never actually reject science frames. -SDSS_FLAGNAME: Change some of the target names to agree with what's been - changed in the target code in the past year or so. Note that - I had already updated the target names in spectro_home.html. -SDSSPROC: Change to select which op file to use based upon the MJD in the - file name rather than the MJD in the header of a Yanny param file. - Make the MJD selection of the op files a bit more clear. - Issue a warning message if there is no op file with an MJD - equal to or less than the image's MJD. - The function FINDOPFILE is broken out into its own file. -SKYLINE_DISPERSION: Function similar to fitdispersion which measures - gaussian line widths of sky lines given arc line dispersion set - as initial guess. Indices of sky fibers can be specified to - restrict width measurements to these fibers only. - The measured widths and corrections are logged to the log file - with the following info: - xpos = X position on CCD - ngood = number of good measurements (<= number of sky fibers) - flux = flux of this sky line - arc = the dispersion width measured in the arc lines - min, max, median = a sample of the distribution of widths (in - pixels) for each skyline - med_diff = the median quadrature difference: width^2 - arc^2 - stddev = the scatter in the quadrature difference for that line -SPBIASAVE: New proc to average together a set (or all!) 2D pixel biases. - This proc is modelled on SPFLATAVE. -SPCOADD_FRAMES: Remove the following keywords from the spPlate file: - PIXBIAS,FLATFILE,ARCFILE,OBJFILE. - Issue a warning message if any object fibers have OBJTYPE=NA, - which should be impossible, but the special plate 673 and - possibly others had some such fibers. - Add UNAME keyword which is the result of 'uname -n'. -SPECLINEFIT: Fixed dumb mistake on indexing that could crash. - Always create an NLINE x NOBJ output structure, with blank - entries where we do not measure lines (currently, only - measuring for GALAXY objects). -SPFLATAVE: Add comments to output header to track which files were used; - change default for input directory to current. -SPFLATTEN2: Undo the last change of using the opBC-empty.par file, since - we do want to ignore bad columns when tracing fibers, etc. -SPREDUCE: No longer issue an abort message in this proc if the science - exposure is declared bad, but issue those messages from within - the REJECT_SCIENCE() function. -SPREDUCE1D: The warning message for S/N > 200 pixels has been fixed, - and another warning added for any pixels w/ flux < -10 * noise - (e.g., unphysically low values). - Mask out points that are unphysically negative (10-sigma negatives), - and mask the neighboring 2 pixels in each direction. - Call new procedure QAPLOT_FCALIBVEC to measure flux-calib errors. -TRACE320CRUDE: Add replacement code section for traces with - bad columns near starting position. - -idlspec2d.table: Added "Flavor=Linux" -eigeninput_star.dat, spEigenStar-52333.fits: Update of stellar templates. - Use many A stars, Carbon stars, Carbon_DQ stars, WD stars - instead of just 1 for building eigentemplates. - Many more K stars, with subtypes Kearly,Kmid,Klate. - No changes to F stars yet (or even checks of their velocities). -mailhtml.sh: Grep for the "APO Spectro" from the HTML file to get the - subject line for mail; I had changed this HTML title string, - which then gave a missing subject line in the e-mail (PR #3200). -opBC-50000.par,opBC-51809.par,opBC-51813.par: Add a small trap on r2 - at 1168,1339; extend the b1 badcols 1762-1673 to the top of - the CCD by 10 more rows; extend the r2 badcol 1585 to the top - of the CCD by 908 more rows. Re-order some of the entries - for clarity. Make opBC-51809 identical to the others except - for the 4 additional entries on b1 and 1 additional on r1. -opConfig-50000.par,opECalib-50000.par: Renamed copies of opConfig.par - and opECalib.par with an MJD in their names. -opHdrFix.par: Declare bad aborted smears for plate 601 and 803. - Declare bad exposure on plate 866. - Don't include test data from MJD 52318. - Declare all r2 exposures on MJD 51779 bad due to electronics - problems (PR #2335), only effecting plate 356. - Remove bad data for plate 727 on MJD 52207. - Remove bad data for plate 724 on MJD 52240. - Remove bad smear for plate 860 on MJD 52319. -spectroSOS.html: Update to reflect new warning messages. -sprobot.sh: Bug fix where we were rsync-ing all of sos.apo:/data/spectro/$MJD - on the line where we only wanted to get the guider directory! - -In idlutils: -New procedures in pro/coord for various SDSS coordinate transformations. -Many of these were in the hoggpt product: - ATBOUND - ATBOUND2 - ETA_TO_STRIPE - ETALAMBDA_TO_STRIPE - ETALAMBDA_TO_MUNU - MUNU_TO_RADEC - RADEC_TO_FIELDS - RADEC_TO_MUNU - STRIPE_TO_ETA - STRIPE_TO_INCL -ATV: Add "R" and "C" features for overplotting rows and columns. -COMDIS: Minor bug fix, making loop variable type long. -GAUSS_KERNEL: sigma should have been sigma^2 (This proc is used - by SKYSUBTRACT,SMOOTH_HALO,RLINE_FINDEW in idlspec2d). -SPHEREMATCH,chunks.c: Bug fix for wrap. -YANNY_DIFF: New proc to compare two Yanny files, optionally copying values - from one to another. -YANNY_READ: Read lines up to 2047 characters long (instead of 1023) - without resorting to the /QUICK option. -YANNY_WRITE: Add STNAMES keyword if writing out Yanny files that were - read with YANNY_READ(/ANONYMOUS). -evilinstall: Now with all the messy confusion at Fermi, it is no longer - possible to auto-detect Linux flavors using the $SETUP_UPS - environment. It is best to first set an environment variable, ie.: - UPS_FLAVOR=Linux+2 - to over-ride the auto-detected flavor on Linux boxes, which now - always appears to come up as Linux+2.4, which no one actually uses. - -idlutils.table: Added "Flavor=Linux" - -------------------------------------------------------------------------------- -v4_9_3 (Feb 12, 2002 idlspec2d only) running on IDL 5.3 - 5.5 -Built against idlutils v4_9_2, specflat v1_3. - -Trivial fix to Makefiles for install. -Still a buggy version for P-1D. - -------------------------------------------------------------------------------- -v4_9_2 (Feb 12, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_3. - -This tagged version is for running Spectro-2D. -It also addresses some rsync bugs for Son-of-Spectro. -Re-write of velocity dispersion + line-fitting for P-1D, but a buggy version. - -APO_CHECKLIMITS: Wasn't matching on flavor. Fixed. -APO_LOG2HTML: Mistakenly was listing times as hr:sec instead of hr:min! - Remove the first word from each warning or abort message line - (which is the name of the IDL proc that generated the message, - and confuses the observers; we sill have the proc name in the - original FITS file from which the HTML is generated). -APOPLOT,PLOTSPEC: Change the http address for Kent's image server to - its new location at http://sdssmosaic.fnal.gov:8015/. -APOREDUCE: Added warning if disk space is nearly full where output - directory resides (if 'df' command reports more than 95% full). - (But not nessarily testing the directory where the raw FITS - files are copied.) -DJS_SVDFIT: This is a modified version of SVDFIT from IDL 5.3, since the version - in IDL 5.4.1 crashes when the matrix is singular!! - Presently, this is called by FIND_NMINIMA(). -FIND_NMINIMA: Add /DEBUG keyword; small changes to plotting. - Call DJS_SVDFIT instead of the IDL library function SVDFIT(), - since it looks like they broke the latter in IDL 5.4.1. -FINDCHI2MIN: Clean up this code some. - This routine used to be used by VDISPFIT, but is no longer. -FLUXCORR_NEW: Return all zeros in fluxcorr image if - "WARNING: No spectrophoto with high S/N" - No longer required checking of "Bad" values for medium S/N. -GET_TAI: A short proc to determine, beginning, mid-point, and ending - timestamps for sdR exposures. Uses TAI-BEG,TAI-END in header - if they exist; otherwise compute from TAI and EXPTIME. - This is now called from the following procs: EXTRACT_OBJECT, - SDREPORTMAKE, SPADD_GUIDERINFO, SPBIASGEN, SPCALIB. - Note that version v4_9_1 would not reduce the early data since - we had changed to using TAI-BEG, which did not exist for the - early data. -LINEBACKFIT: New generic proc for fitting emission lines + linear background - terms. -PCA_ELODIE,READ_ELODIE(): New routines for reading the Elodie eschelle - spectra and generating eigenvectors for velocity dispersion fits. -REMOVE2REDO: Never consider the compressed (sdR*.fit.gz) files for removal, - since those are our archived copies of the raw data. Only remove - the *.fit files. That way, if the data gets removed from - sdsshost.apo and we run this proc, we don't delete all copies - of the data on sos.apo! -SPADD_GUIDERINFO: New routine to compute seeing and average guider offsets - from the guiderMon param file, and add those results to a FITS - header. -SPBIASGEN,SPFLATTEN2: Use an empty bad column file (opBC-empty.par) when - generating the 2D pixel flats and bias images. -SPCOADD_FRAMES: Combine a whole bunch of header cards from the individual - input exposure for the output exposure. Specifically, this was - to address PR 2174 to average the weather data. The cards effected: - 'AZ', 'ALT', 'TAI', 'WTIME', 'AIRTEMP', 'DEWPOINT', - 'DEWDEP', 'DUSTA', 'DUSTB', 'DUSTC', 'DUSTD', 'GUSTS', 'HUMIDITY', - 'HUMIDOUT', 'PRESSURE', 'WINDD', 'WINDS', 'TEMP01', 'TEMP02', - 'TEMP03', 'TEMP04', 'HELIO_RV', 'SEEING20', 'SEEING50', 'SEEING80', - 'RMSOFF20', 'RMSOFF50', 'RMSOFF80' - We also take the min of all 'TAI-BEG' cards, and the max of - all 'TAI-END' cards. - Don't alter incoming file list, copy to internal variable list - of filenames. -SPCOMBINE: Set default value of MINSN2 to 0.2 instead of 0.0. This is a - work-around for the moment to prevent one bad exposure (#6808) - from corrupting the combine of plate 358/51818. - Also, go back to not including the smear exposures in the combine, - unless one explicitly sets the /SMEARINCLUDE keyword. - Exclude fluxcorr images with entire image = 0 -- that's now a - possible result from running FLUXCORR_NEW where the signal is - so low that we can't compute the flux-correction vectors w.r.t. - the smear exposure. -SPECLINEFIT: First calling script for line-fitting code, modelled after - SPREDUCE1D. This can be stand-alone, or called at the end - of SPREDUCE1D. For the time being, only do these fits for - objects of type GALAXY. -SPREDUCE1D: Set the ZWARNING=8 flag (synthetic spectrum is negative) only - for stars, not for QSO's any more since we use several eigen- - components to fit QSO's now, nor for CV stars for the same reason. - Use the file 'spEigenElodie.fits' for computing velocity dispersions. - Write out the best-fit velocity-dispersion spectrum as HDU#3. - Make consistent with changes to VDISPFIT. - Add CHI68P to output structure, for the 68-th percentile value - of abs(chi). - Call SPECLINEFIT at the end of this proc. -TRACE320CRUDE: Threshold to set 'BADTRACE' is now 45% bad pixels, whereas - it used to be 20%. -VDISPFIT: Option to return the best fit with YFIT keyword. - Mask out +/- 6 pix from emission lines instead of only 4 pix. - Option to pass EIGENFILE,EIGENDIR rather than use default file. - Use FIND_NMINIMA instead of FINCHI2MIN to find the minimum, - since the latter did a spline fit that could wiggle in - unconstrained ways. - In cases of bad fits, return error codes as negative VDISP_ERR. - Return a code of -4L if there is no wavelength overlap. - Insist that convolution kernel have odd number of elements, and - convolve with /CENTER keyword. - Only cache over-sampled templates if the template file name - is unchanged between calls. - Make this routine a function that returns a structure. - Also return VDISPCHI2,VDISPNPIX,VDISPDOF in output structure. -ZFIND: Add fields to the output structure needed for velocity dispersions. - -aporsync_logs.sh : - Changed the syntax to just copy these type of files in astrolog - (which we *thought* we were doing, but wasn't quite working): - Unplugged*.ps - exposureLog*.par - fiberScan*.par - guiderMon*.par - op*.par - plPlugMap*.par - sdReport*.par -sprobot.sh: Fix syntax bug when passing $upsversion to BATCH1D,BATCH2D. -killdata.sh,mailhtml.sh: Spectrolog cleanup is now done +25 MJDs afterwards, - which will allow for sos_redo, apoplot and debugging to have - a buffer. Enable the call to data_rsync.sh again for copying - the *.gz files locally from /data/spectro/$MJD to - /data/spectro/rawcopy/$MJD. -sprobot.sh: Copy the guider image directory. We mistakenly lost this copying - when we went to explicitly copying only the sdR*.fit.gz files. -sos.sh,startapo.sh: Forget to switch to UT time in a couple of instances. -opBC-5000.par,opBC-51813.par: New bad column masks, somewhat circular dependence - on pixflats. Make opBC-50000.par identical to opBC-51813.par, so - that the only different bad column masks are for the few nights from - MJD=51809->51812 as stored in opBC-51809.par. - For r2 (camcol=2), now mask all of columns 370-371 instead of parts. - For r2 (camcol=2), add mask for column 1068. - For r1 (camcol=4), mask only cols 1112-1115, not cols 1112-1117. -opBC-empty.par: New file with no bad columns for use when generating the - 2D pixel flats and bias images with SPFLATTEN2 and SPBIASGEN. -opLimits.par: Bug introduced when I reformatted the TOTAL/TOTALSN2 entries - (done to address PR #2562 to differentiate between bias and - dark current levels). This fix closes PR #3185. -spEigenElodie.fits: First 70 eigen-components of the 700-ish Elodie spectra, - generated at Sloan resolution using PCA_ELODIE. - -In idlutils: -DJS_MEDIAN: Bug fix for crash condition when WIDTH is greater than - the number of elements in the array. -DJS_REJECT : Major bug in /groupbadpix option, should now work as intended -BSPLINE_ITERFIT: Fix major bug with /GROUPBADPIX option which is used - by COMBINE1FIBER. -SPLOT: For gaussian line fitting, display the Area (not the peak height), - and try fitting absorption lines as well as emission lines. - Still not always a good fit, since I'm using the IDL build-in - CURVEFIT() rather than MPFITFUN, which would be better. -SXCOMBINEPAR: New proc to combine values of specified header cards from - many FITS headers. (This option used by SPCOADD_FRAMES.) - -------------------------------------------------------------------------------- -v4_9_1 (Jan 24, 2002 idlspec2d+idlutils) running on IDL 5.3 - 5.5 -Built against specflat v1_3. - -This tagged version is for running Son-of-Spectro; not viable for Spectro-2D. -Bug fixes to run on IDL 5.5. -Changes to how the SOS robot launches the rsync jobs and fix other SOS bugs. -Bias-subtraction now implemented (bias images in the "specflat" product). -New set of templates for P-1D; QSO's now use 4 eigentemplates. - -APO_LOG2HTML,APOREDUCE: Switch from saving the Mountain standard time (MST) - string to only storing TAI time, and computing UT on-the-fly. -APO_LOG2HTML: Compare the exposure "flavor" when looking at the operational - limits (in the "opLimits.par" file). This allows us to - differentiate between bias and dark levels (PR #2562). -APO_CHECKLIMITS,APO_COLOR2HEX: These functions broken out of APO_LOG2HTML - since they are now used by APO_PLOTSN too. -APO_PLOTBIAS: Remove ROOT_DIR keyword, but look at $RAWDATA_DIR environ - variable instead. Look for uncompressed or compressed raw files. -APO_PLOTSN,APO_LOG2HTML: Only add (S/N)^2 that is not flagged as anything - bad in the opLimits file (currently anything < 2.0 is bad). - This should be true for both the HTML table and for the S/N plots. -APOFLUXCALIB: Procedure for generating a canonical set of flux-calibration - vectors (including the superflat) for on-the-mountain plotting - of spectra using APOPLOT. -APOALL,APOREDUCE: Allow setting MINEXP to 0 sec. Change default of MINEXP - to 0 sec, so that any exposure with non-negative exposure time - is reduced by Son-of-Spectro. -APOPLOT: New proc for plotting spectra from the Son-of-Spectro outputs at APO. -APOPLOT,LOGSHEET,PLOTSPEC: Set the !QUIET option for procedures where it is - annoying to see all the IDL messages. -BATCH1D,BATCH2D: Allow NICE to be set to zero. Add UPSVERSION keyword to do - a "setup idlspec2d $UPSVERSION" on the remote machine before - executing the IDL job. This allows you to batch jobs using a - version other than that which is declared current under UPS. -BATCH2D: At the end of a batch job, spawn the following: - spawn, 'rm -f spArc*.fits* spFlat*.fits* spSky*.fits*' - in order to remove files that eat up too much disk space right now. -COMBINE1FIBER: Use the /GROUPBADPIX keyword for rejection in B-spline fits. -DANVB_CONVERT,DANVB_QSOLIST: Procs for generating a list of input - QSO's from Dan van den Berk's EDR list "plateEDR.summ" - for generating QSO eigenvectors. The output file - "eigeninput_qso.dat" is then used by PCA_QSO. -DIVIDEFLAT: Make INVVAR an optional keyword instead of an input for DIVIDEFLAT. - Change the procedures that call this. -EXTRACT_OBJECT,SPBIASGEN,SPCALIB,SPREDUCE: For TAI time, use the midpoint - of the observation as determined by TAI-BEG + 0.5 * EXPTIME - from the header. -EXTRACT_OBJECT,SPREDUCE: No longer write the sky vectors to a different file, - but write them to the spFrame files. Also, always write the - telluric-correction array, which will simply be an empty HDU - for the blue CCDs. -FIND_NMINIMA: Retain each peak only if it is at least MINSEP from all - previous peaks. -FINDSPEC: Crash if the plate list file is missing w/ an informative message. - Do not crash if spPlate files missing for some plates. -FITARCIMAGE: Bug fix to prevent IDL 5.5 from crashing. -FITSN: The logic for choosing fitting limits for all possible bands - has been moved to this function. This function will now - choose the full mag range [0,23] to fit if there are fewer - than 20 points in the default ranges and at least 3 good points. - This function is called by the following routes in Son-of-Spectro: - APO_PLOTSN -> PLOTSN -> FITSN - QUICKEXTRACT -> FITSN - This function is called by the following routes in Spectro-2D: - PLATESN -> PLOTSN -> FITSN - EXTRACT_OBJECT -> FITSN -MULTISYNTHSPEC,SYNTHSPEC: Bug fix for when wavelength spacing is different - between the template and the requested synthetic spectrum. -PCA_CVSTAR: New proc for generating eigen-spectra for CV stars. -PCA_QSO: Major re-write now that we're trying to use the eigen-spectra - from this routine for the redshift-finding code, rather - than using the single QSO template that we've used to date. - Solve for 4 eigencomponents in rest-frame [460,9300] Ang. - Try solving for one eigen-component at a time. When I tried - solving for them all simultaneously, this resulted in an - unphysical 1st eigencomponent, probably because each spectrum - only covers a small range of rest wavelength. - Also, make some plots. -PCA_SOLVE: Add NRETURN keyword for returning a different number of - eigen-components from the number used (NKEEP) for replacing - bad and noisy data points. Optionally return NEWFLUX,NEWIVAR. -PCA_STAR: Major changes to read stellar classes and subclasses, - then generate the 2-component PCA solution for all M stars - (for example) and reconstruct types M1 through M9. -PLATECOMPARE: Add /PSFILE option. -PLATELIST: Add NEXP,EXPT_B1,EXPT_B2,EXPT_R1,EXPT_R2,SMEARUSE,TAI_BEG,TAI_END, - SEEING*,RMSOFF*,AIRTEMP,CARTID to output struct. - Now show the status of 2D and Combine separately, which will make it - obvious when this problem occurs. When it happens, Status2D - might still be "Running" even though StatusCombine is "Done". - That case would mean that one of the night's of 2D data - probably crashed, and we combined from whatever subset of data - did run through from other nights. This addressed PR #2993. - Add the /KILLPARTIAL option for deleting data from partially- - combined nights, which only happens from the Spectro-Robot - operating in real-time. -PLOTSN: Changed auto-scaling of fitted magnitudes, when less than 20 objects - are in the desired range. Now the fitting range will expand to - [10.0, snmag + 1.0]. So in case of g' [10.0, 21.2], this should - work much better for the photo-z S/N estimates. -PLOTSPEC: New keyword option /NETIMAGE to plot corresponding PHOTO images - in a Netscape window using Steve Kent's web tool. -QAPLOT_SKYSUB: Don't be quite so severe with warning messages. If a single - sky fiber has bad flux levels, report as a "Warning" instead - of a "WARNING". Trigger the "WARNING" about "Max sky-residual - chi" at 5.0 instead of 4.0. -QUICKBIAS: Remove message which preempts logging. Instead, return a - set of precentiles that are all -9999, which shows up as **** - in the HTML file. -QUICKEXTRACT: Put exposure time dependence in scattered light warning. - It is the same limit as we had before for 900-sec exposures, - the same limit for shorter exposures, and a (scaled) higher - limit for longer exposures. - Include FIBERMAG in the output structure, where we use MAG[1] for - any blue frames, and MAG[3] for any red frames. -REDMONSTER: Change the warning message to "Bad sky residuals...", - and only send the message "Red Monster at..." if it - is around 6400-6600 Ang, where we think the problem may - be due to the hand-paddle LED. This change is for the - benefit of the observers (from Son-of-Spectro warnings). - Also output the peak chi. -REDMONSTERLIST: New procedure: List of number of galaxies and quasars per - plate, the number of redshifts that differ from prior reductions, - and the fraction of various 2D flags set. -REMOVE2REDO: Make more robust, and give more descriptive messages. - Another attempt to fix errors in remove2redo. It might now - work with plate argument: "sos_redo plate=665", but should - definitely work with simple invocation: "sos_redo". - --> Now a re-write of this, allowing either PLATE or EXPNUM - keywords (but not both) as of 8 Jan 2002. -RLINE_FINDPEAKS: Updated to demand minimum separation, and commented. -SDSS_FLAGS: Add "SOUTHERN_SURVEY" flags for TARGET and TTARGET. - Also, return a warning message for any bits that are set - but whose meaning is unknown. Previously, a wrong answer - would just be given in that case. -SDSSPROC: Reverted to calls to specflat_version,speclog_version that work. - New option /APPLYBIAS to bias-subtract. This fixes PR #2595, - subtracting the bias-induced flux at 3800-4600 Ang flux (b1) in - fibers 17+18. -SLATEC_EFC (in idutils): Call FILL_BSPLINE() instead of EFC2D(). -SPBIASAVE: New routine to average biases already generated with SPBIASGEN. -SPCOMBINE: Bug fix for dealing with missing spFrame files (as for plate - 204/51455, where this proc would crash). -SPPLAN2D: Change the default of MINEXP to 1 sec, so that special plates - like the M67 plate (#321) will be reduced. - Make a plan file if either science or smear exposures exist - (before it required the existence of science exposures). - Get the MJD from the directory name $RAWDATA_DIR/$MJD, not - from the header of the 1st file which may be wrong. This - happened on MJD 52247, where there was a bias taken on MJD 52246 - which messed up the plan file for plate 766 on MJD 52247. - But I will at least issue a warning in the proc if there is an - MJD that appears incorrect in one of the headers, as in this case. -SMOOTH_SUPERFLAT: Located the spurious WARNING, changed to Warning, and - upped the threshold. It was not the critical one of the two - smooth_superflat warnings. -SPBIASGEN: New routine for generating mean biases for a night. -SPCALIB,SPFLATTEN2,SPREDUCE: Use /APPLYBIAS option in call to SDSSPROC. -SPCOADD_FRAMES: Convert dispersion vectors to log-lambda units (1.0d-4, PR 1870) - When combining fibers, we used to use MAXITER=20. Now use - MAXITER=50, MAXREJ=1. - Bug fix for SMEARUSE keyword in header, which was incorrectly - always set to 'F'. -SPCOMBINE: New optional keyword MINSN2 to set the minimum S/N to include - in co-adding; default to 0.0 for the time being (see PR 1901). - Otherwise, special plates that have all bright objects will not - get combined (since the extrapolated S/N at 20th mag is so low). - Include 'smear' exposures as well as 'science' in the co-adds, - which should let us recover some spectra that are otherwise - saturated in 15 min exposures. -SPFLATGEN: Add optional keywords EXPNUM,EXPSTART,EXPEND. -SPHDRFIX: Add support for editing raw frame (sdR-*) headers by putting - OPHDRFIX entries in the sdReport-$MJD.par files, of the - same form as that used in the file "opHdrFix.par". - We've changed the structure name SPECHDRFIX to OPHDRFIX, since - we can use exactly the same thing for PT or 2.5-m data. -SPREDUCE1D, ZFIND, ZCOMPUTE, FIND_NMINIMA: Plotting and debugging - tools added with the /DOPLOT, /DEBUG keywords. -SPREDUCE1D: Change flag for small chi^2 difference to be triggered - when RCHI2DIFF < 0.01 or when RCHI2DIFF < 0.01 * RCHI2. - This means that the difference in reduced chi^2 should be at - least 0.01 if chi^2/DOF=1, or at least 0.10 if chi^2/DOF=10. - Print the versions of idlspec2d,idlutils in the log file. - If the outputs spZall,spZbest files already exist, then rename - those files rather than destructively over-writing them (using - CPBACKUP). - Added search for CV's using the eigenfile 'spEigenCVstar-*.fits'. - Search for QSO's out to z=7.0, but this will require templates - that span [525,9300] Ang. - For the moment, disable setting the 32L flag for ZWARNING, - since this seems to usually be erroneously set (when it is set) - in the 2nd pass through the ZFIND routine. I'll have to track - that down later. - Fix bug that SN_MEDIAN wasn't positive definite. - Add FRACNSIGHI,FRACNSIGLO to outputs. Trigger ZWARNING=16 from - only high outliers (FRACSIGHI) for QSO's, whereas we trigger - based upon FRACNSIGMA for all other objects. -ZCOMPUTE, FIND_NMINIMA: Return a (negative-valued) error code - from FIND_NMINIMA, which ZCOMPUTE stuffs into Z_ERR. -ZFIND: If fewer than NFIND peaks are found, then return blank structures - for the remaining (NFIND-NPEAK). Previously, some of those - fields (such as TFILE,TCOLUMN) were filled with information. - -aporsync.sh: Keep archiving guider images (gzipped). -aporsync.sh: Only copy the following select set of files: - Unplugged*.ps, fiberScan*.par, guiderMon*.par, op*.par, - plPlugMap*.par, sdReport*.par -aporsync.sh, sprobot.sh, sprobot1d.sh, sprobot2d.sh: - Log the UID and PPID (parent process ID) to the file "sos.log", - and record the timestamp both when this script is launched - and finishes. -aporsync_logs.sh, aporsync_blue.sh, aporsync_red.sh: - New scripts called from "sos.sh" instead of "aporsync.sh". - This should be more robust, and prevent the logging+guider - files from hanging up the whole system. -sos.sh, sos_status, startapo.sh: Use the new aporync scripts. -sos_start: Set defaults for RAWDATA_DIR and ASTROLOG_DIR appropriate for - the machine sos.apo. -eigeninput_cvstar.dat: New file for PCA_CVSTAR. -eigeninput_star.dat: Many more M stars added for implementing changes - to PCA_STAR. -opHdrFix.par: Correct some values for TILEID,RADEG,DECDEG for the early plates - 187, 202 and 214. -spFluxcalib-*.fits: A canonical set of flux-calibration vectors produced - by APOFLUXCALIB and used by APOPLOT. -sos_redo: Don't allow this to be run from the machine sdsshost! - --> Now a re-write of this, allowing either PLATE or EXPNUM - keywords (but not both) as of 8 Jan 2002. -sprobot_start: Copy the data over starting at 10am Princeton time, - which will be after "mailhtml.sh" is run at APO (at 7:20 am). -sprobot.sh: Run the same version of the idlspec2d product as is set up - for this script. For example, even if v4_9 is declared current, - run v4_8 if that is what's set up when this script is run. - So, you should run "sprobot_start" from the version of the code - that you want to reduce the data. The only exception is if the - current version is not a UPS version, but just NOCVS; in that - case, the version declared current on each remote host is used. - -Combine all of the install instructions into one place, -in the file "idlspec2d_install.html". The instructions -from "spectroSOS.html" have been moved there. -Add header card info to the "spectroSOS.html" document. - -In idlutils: - -All Goddard libraries updated to the versions as of 3 January 2002 from -the web site "http://idlastro.gsfc.nasa.gov/homepage.html". It looks like -the last time I did any updates was exactly two years ago, on 5 Jan 2000. -The most notable update is to MRDFITS, which Wayne Landsman modified in -Dec 2001 following suggestions from Finkbeiner & Schlegel. It explicitly -handles more data types (like UINTs, BITPIX=8, BITPIX=64) and deals with -null strings when writing structures to FITS binary tables (w/out crashing, -as it did before). -The following procedures moved within the Goddard repository: - astro/oploterr.pro (moved from /jhuapl) -The following duplicate procedure was removed from the Goddard repository: - misc/ydn2md.pro (other copy is in /plot) -All of the procedures in pro/tape_io have been removed from Goddard. -The following procedures are new to the Goddard repository: - astro/cosmo_param.pro - astro/galage.pro - astro/lumdist.pro - astro/observatory.pro - astro/planet_coords.pro - astro/gal_uvw.pro - astro/calz_unred.pro - astro/jplephinterp.pro - astro/jplephread.pro - astro/tdb2tdt.pro - astro/jplephtest.pro - astro/lsf_rotate.pro - fits/fxmove.pro - idlphot/pixwt.pro - math/meanclip.pro - math/minf_parabol_d.pro - math/value_locate.pro - math/asinh.pro - misc/fstring.pro - misc/n_bytes.pro - misc/checksum32.pro - plot/vsym.pro -Files in goddard/data and goddard/text have also been added+deleted+modified. - -BSPLINE_ITERFIT: Properly passing INMASK to allow for recouping lost data - points. Small cosmetic changes to work clearly with INMASK - and OUTMASK. -DJS_REJECT: Added GROW option to mask neighboring pixels. - Added /GROUPBADPIX option, which probably fails with multi- - dimensional data (Scott thinks). - Also some small changes to the way grouping works. -EFCMN: Small change declaring a loop index as a long int. -EXTAST: Allow GSSS coordinate systems other than RA,DEC. Specifically, - allow the use of 'GLON-GSS' and 'GLAT-GSS' which we use - in the PT image headers. This means that our version of this - code is currently branched from Wayne Landsman's Goddard version. -RMFILE: Bug fix for the case that one element of the filename array is blank. -YANNY_FREE: Don't crash if PDATA is not set. -YANNY_READ: If there are too few words on a line for a structure entry, - then set ERRCODE=-1 and return PDATA=0. - Also, increase the allowed line-length to 1023 characters - (was 255). The file can still have longer lines by using - the back-slash as a continuation. And one can still use - the /QUICK option for lines with more than 1023 characters, - but that option fails if continuation characters are used. - Add the STNAMES keyword to return the names of structures - for when /ANONYMOUS must be used. - Special-case the replacement of {{}} with "", since it seems - that some bonehead used the former to denote blank strings in - the idReport files. -vector_avsigclip_mask: Fix a bug in the C code vector_avsigclip_mask - that could potentially affect the IDL proc DJS_AVSIGCLIP - in the case when a mask is used but all points are rejected. -evilinstall: If unable to check-out or install the code, - then do not declare it current in the UPS table! - Print "ABORT" for any failures in the install. -evilmake: Turn optimization flags back on, which we commented - out some time ago because it failed on an OSF platform. - Still might not work under OSF as far as we know, but who cares? - We'll pick up 20% in speed for Spectro-2D under Linux by optimizing. - -------------------------------------------------------------------------------- -v4_9_0 (Nov 10, 2001 idlutils only) running on IDL 5.3 - 5.5 -Built against specflat v1_2. - -YANNY_PAR (in idlutils): Add INDX keyword, and fix bug in returned COUNT. - Support for KEYNAME input as an array. -evilinstall (in idlutils): If $CVSROOT is not set, then set it either - by setting up the "sdsscvs" product or explicitly setting to the - Fermi CVS location. This allows the option of installing from a - different repository (i.e., Princeton or NYU) by setting $CVSROOT - first. - -------------------------------------------------------------------------------- -v4_8_4 (Aug 29, 2001 idlspec2d+idlutils) running on IDL 5.3 - 5.4 -Built against specflat v1_2. - -Minor fix to 2D-combining code for running plates 214,340,270 which failed. - -MYFLUXCALIB: Fix bug whereby the PCA spectrum could be negative. - (The routine PCA_SOLVE() can return a negative-valued spectrum even - if all the input spectra are positive-valued.) This crashed plate 340. -PCA_SOLVE: Forgot to return optional outputs OUTMASK, USEMASK in the case - of only a single spectrum being passed. This happened in the - combining of plate 214 in MYFLUXCALIB, and crashed. -SDSSPROC: Prevent dividing-by-zero when using /APPLYPIXFLAT, - though the resulting NaN's had been caught and replaced anyway. -SPREDUCE1D: The outputs ANYANDMASK,ANYORMASK were not being constructed - properly, and were simply wrong. Should be fixed now. -sprobot,sprobot_start: Scripts now use the environment variables - SPROBOT_HOST,SPROBOT_LOCALDISKS for telling which machine to copy - the raw data from, and which local disks to write to. - These scripts are now generalized to the point where they can - be run from anywhere by just setting up environment variables. -spChunkList.par: Update chunk list for chunks 20-25 (up to plate 769). - -BSPLINE_BKPTS (in idlutils): Do not crash even in the case of very few - data points. But untested whether this actually does what we want - in that case. -BSPLINE_ITERFIT (in idlutils): Return cleanly in the case of no un-masked - data points. -eviltarball (in idlutils): New script to export a version of a code - and build a tar file for distribution. - -------------------------------------------------------------------------------- -v4_8_3 (Aug 24, 2001 idlspec2d+idlutils) running on IDL 5.3 - 5.4 -Built against specflat v1_2. - -Cut version for running P-1D, improving the redshift fits + errors. - -BATCH1D,BATCH2D: Added /CLOBBER option to reduce all specified plates, - over-writing any previous reductions. -BATCH2D: Enabled keywords PLATESTART,PLATEEND,MJD,MJSTART,MJEND. - Change the logical link to the raw data directory to be - topdir+'/rawdata' rather than simply '../rawdata'. - The latter would fail when outputs for some plates were - in other linked directories, and then '../rawdata' did not - resolve to anything. -FIND_NMINIMA: Replacement code for FIND_NPEAKS, for solving the chi^2 - minima for redshifts. This routine will fit a quadratic - if there are only 3 points, and a gaussian plus a constant - if there are more than 3 points. - If there is an error in the fit, return an error code as a - negative integer in XERR. -GET_MJD_DIR: Make leading zeros significant. This was necessary to fix - the bug that '5*' would match 500 but also 050 and 150. -MJD_MATCH: New routine split out of SPPLAN1D. -READSPEC: Minor change to prevent crashing if data for some objects - does not exist. Specifically, if structures for some objects - (e.g., ZANS or TSOBJ) did not exist, this routine could crash. - Read the synthetic spectrum from the Zbest file if ZNUM is not set. - This is much faster than regenerating the spectrum. -SPEC_APPEND: Minor change to prevent crashing if data for some objects - does not exist. (This routine is used by READSPEC). -SPPLAN1D: Now call MJD_MATCH(). -SPREDUCE1D: Change the width in velocity space for fitting the chi^2 - minima in the redshift-finding. These widths can be broader - now that we'll be fitting with gaussians rather than quadratic. - (The quadratic fits were not a good approximation when fitting - more than a few points.) Now always use at least 5 points. - Add another ZWARNING flag: Set the 32L bit if the redshift-error - warning flag is set to -1, which means that the chi^2 minimum - was at the edge of the redshift-fitting range. -VDISPFIT: Increase chi^2 computation from [0,475] to [0,600]. -ZCOMPUTE: Replace call to FIND_NPEAKS() with FIND_NMINIMA(). -ZFIND: Do not modify any errors that are less than zero, since those - can be used as just warning flags from the fit. - Increase to search lags (as specified by PMIN,PMAX) according to - the values of both PWIDTH and WIDTH. -ZFITMAX: Replace call to POLY_FIT with SVDFIT such that this routine - behaves the same under either IDL 5.3 or 5.4. It was the - case that the errors were improperly computed using the re- - write of POLY_FIT in IDL 5.4. - -New template files spEigenGal-52146.fits,spEigenStar-52146.fits -based upon v4_8_1 reductions, though using the same input list of -spectra that we've been using for ages. - -In idlutils, added MPFIT routines from Craig Markwardt. These will -be used for the redshift-finding code (specifically, FIND_NMINIMA). - -build_links (in idlutils): Do not build a link for any file if the link - name already exists. - -------------------------------------------------------------------------------- -v4_8_2 (Aug 16, 2001 idlspec2d+idlutils) running on IDL 5.3 - 5.4 -Built against specflat v1_2. - -Trivial changes for running this version at Fermi. - -SPALLREDUCE: SPECFLAT_DIR is not set now, if SPECFLAT product exists and - is specified (this proc only used at Fermi). - -PLATECOMPARE: New proc for interactive comparison of descrepant redshifts. -PLATELIST: Added /PURGE2D, /PURGE1D options. -PLOTSPEC: Added /NOERASE keyword. Minor fix to Y plotting range. - -RMFILE (in idlutils): Add support for deleting a list of files. -SPLOT (in idlutils): Minor bug fix to avoid plotting the axes twice. -evilinstall (in idlutils): Syntax changes to work with bash on spectro. - -------------------------------------------------------------------------------- -v4_8_1 (Aug 9, 2001 idlspec2d+idlutils) running on IDL 5.3 - 5.4 -Built against specflat v1_2. - -Cut version for re-running Spectro-2D on all data. - -EXTRACT_OBJECT,SMOOTH_SUPERFLAT: Better working smooth_superflat (with a QA - plot). Added "Area" to plot anything above 0.01 gives a warning. -FILTER_THRU: Fix failure mode when only a 1-d WAVEIMG is passed. -PLATELIST: Add EXPTIME to output files. -PLOTSPEC: Major re-write to allow flipping through many plots on a plate - and change plotting parameters. Or, send plots to PostScript files. - Usage of ZNUM changed -- see READSPEC for new usage. - Plot labels in green for legibility in the plot window, and - include the ZWARNING flag in the label if it is nonzero. -READSPEC: Return successfully even if redshift files not found. - Change usage of ZNUM such that ZNUM=1 is best fit, ZNUM=2 is 2nd best. -SPCOADD_FRAMES: Set keyword SMEARUSE to T or F. -SPFLATAVE, SPFLATTEN2: Handle edge effects better. In SPFLATTEN2, set - any pixels more than 2 pixels from the left/right of the first/last - fiber equal to zero. Then, in SPFLATAVE, any edge pixels that are - zero from all nights are set to unity. -VDISPFIT: Bug fix for objects with negative velocities. -idlspec2d.table: Make an optional dependence upon the "specflat" product. -sprobot.sh: Copy only the compressed ("sdR-*.fit.gz") files from - sos.apo.nmsu.edu, instead of the raw files from sdsshost.apo. - -evilinstall (in idlutils): Minor syntax changes to work with RH7.1 on spectro. -ATV (in idlutils): Handle unsupported CTYPE, CTYPE reversal gracefully; - left click on apphot (Imexam) prints coords -SPHEREMATCH (in idlutils): New code to match two lists of RA,DEC. - -------------------------------------------------------------------------------- -v4_8_0 (Jul 17, 2001 idlspec2d+idlutils) running on IDL 5.3 - 5.4 -Built against specflat v1_1. - -First cut of v4_8 with many major changes. Not yet tested for prime time. - -******MAJOR CHANGE: spFrame output is now normalized with superflat, - to correct for small scale features which cannot be removed - by standard star correction. - HDU 6 now contains the superfit in spFrame - Telluric correction has been moved to HDU 7. - The B-spline break-points in the files blue.bkpts, red.bkpts - have been changed. - -SKYSUBTRACT: Increased rejection limit for 1d fit. This should be more robust - anyway, and tighter rejection was masking out real PSF variations - which led to very big sky residuals in 2d fit. - Also decreased the number of blue side breakpoints to 1024. - -FITVACSET : keyword "airset" which return air wavelength solution with - no heliocentric correction (required to properly sample superflat - shifted to skyline frame) -FIBERFLAT : keyword superflatset to return normalized superflat fit -DIVIDEFLAT: removed all traces of fibermask -EXTRACT_OBJECT, SKYSUBTRACT, SPCALIB: Implement 2D-splining for sky- - subtraction, now set to do quadratic PSF fit. - Also, first attempt to put in airmass correction to the sky - brightness by dividing all the sky vectors by the airmass of - each fiber, then fitting for the supersky, then multiplying - back in the airmass terms. - New limits to mask in pixelflat 0.8 < flat < 1.2. - old values: 0.5 < flat < 1.5 - -EXTRACT_OBJECT: Set the "NEARWHOPPER" mask bits only for fibers within 2 - fibers of a bright fiber, but not the bright fiber itself. - For the bright fibers, add the bit "WHOPPER" (added to the - param file spMaskbits.par). - Changed the rejection thresholds yet again, and also uncommented - 2-D sky subtraction to test. -EXTRACT_OBJECT, SKYSUBTRACT: Exit gracefully in the case of no good sky - fibers. In that case, issue an "ABORT" log message, return - SKYSTRUCT=0 from SKYSUBTRACT, then do not write an spFrame file. -EXTRACT_ROW: Do not correct rejection levels in relative mode if chi^2 < 1.0. - This means that we can boost the errors to be larger than the - expected Poisson errors, but not smaller. -FIBERFLAT: Update to call SUPERFLAT() as a function instead of a proc, - though should not be functionally different yet. -FILTER_THRU: Switch to the newly-measured filtered curves, "sdss_jun2001*.dat". - Use the Goddard routine LINTERP instead of the IDL built-in - INTERPOL. Also, correct the integrations for the pixel size. -FITMEANX: Make robust to no good sky lines for tweaking wavelength solution. - In that case, the routine LOCATESKYLINES will return SKYSHIFT=0. -FPOLY, FUNC_FIT, TRACESET2PIX, TRACESET2XY, XY2TRACESET: - Added "poly" as one of the functions for trace sets. -LOCATESKYLINES: Test that the sky line file is successfully read. -MYFLUXCALIB: Fairly major changes: Do a pre-filtering of the spectra that - go into the PCA-fitting of the flux-calibration vector, and - mask out the most deviant points. Run the PCA-fitting with - more iterations to ensure convergence. Also, finally comment - this code. -PCA_SOLVE: Construct the USEMASK from the output mask (OUTMASK) instead of - from NEWIVAR. This is equivalent to TOTAL(OUTMASK,2). - This should make the flux-calibration vectors produced by - the proc MYFLUXCALIB more robust, since it rejects pixels in - the solution based upon USEMASK. -PLATELIST: Read MJDLIST keyword from the spPlate files, which will only exist - with future reductions. - Include a computation of the airmass in the FITS version of the - platelist file. -PLATESN: Pass a plot title to PLOTSN. -PLOTSN: For the 2nd page of plots with Synthesized mags. vs. PHOTO fiber mags., - make these residual plots. Also, use plot titles. -QAPLOT_SKYLINE: Plot skyline strength residuals as a function of airmass, - which in fact is exactly what they are correlated with! - Issue a warning message if the computed airmasses are out of the - range [1,3]. -REJECT_SCIENCE: New proc to reject science exposures if they are blatantly - bad (typically, if they are saturated). We have already been - doing this for arc + flat exposures. This proc is called - by SPREDUCE, and will issue an "ABORT" log message if a - science frame is rejected. -SDSSPROC: Add VERSLOG, VERSFLAT keywords to specify versions of the - products SPECLOG, SPECFLAT. - First search for files "pixflatave-*.fits", and if not found then - look for "pixflat-*.fits". -SDSSPROC, SPCALIB, SPREDUCE, SPREDUCE2D: No longer pass the name of the pixel - flat between all these files. Instead, just let SDSSPROC find the - correct one in the "specflat" product, in $SPECLOG_DIR/flats. -SMOOTH_HALO: A new version of smooth halo, which should be closer to the truth. -SORTPLUGMAP: Fill in unplugged fibers with arbitrary entries, and assign - them a FIBERID. For spectrograph #1, we assign the unplugged fibers - from the beginning of the plugmap, and for #2 from the end. - This should result in the unplugged objects being uniquely placed - on only one of the spectrographs. This addressed PR #2487. -SPCOADD_FRAMES: Include MJDLIST keyword in spPlate header, which will be - the list of all MJD's used in an SPCOMBINE. - Add BUNIT keyword for the flux, inverse variance, and - dispersion HDU's. -SPFLATAVE: New routine to average together a set (or all!) pixel flats - in the SPECFLAT directory. -SPFLATGEN: New routine. Wrapper for SPFLATTEN2 for generating pixel-to-pixel - flat-fields. -SPFLATTEN2: Major changes! Now call the 2-dimensional B-spline code when - generating the superflats. However, there seem to be problems - with this code for some combinations of NORD and NPOLY. I have - set NORD=3, NPOLY=4 which seems to be a combination that works. - (A PR has been filed against idlutils.) - Subtract the scattered light image before dividing by the super- - flat evaluations -- w/out doing this, we had bad residuals where - the scattered light contribution was large compared to the signal - (particularly in the UV). - Also, small changes to how directory names are parsed, and retain - the header from the file ALLFLATS[0] for the output file. -SUPERFLAT: Pass X2, NORD and NPOLY keywords to support fitting 2-dimensional - B-splines in the call to BSPLINE_ITERFIT(). At the moment, - this will only be implemented for the proc SPFLATTEN2, not for - FIBERFLAT. (So this shouldn't effect the spectro reductions - except for updated pixel flats.) - Also, make this a function instead of a proc. -TELLURIC_CORR: Fixed horrible bug in using fibermask to reject bad fibers - (fixes PR #2162). Also, when fitting the local continuum - around a single telluric band for a single star with a - polynomial, do the fit with weighted points and iterated - rejections using DJS_REJECT(). -THROUGHPUT_CALIB: New proc for assessing total system throughput using - the intermediate files "spFluxcalib*.fits". -TRACE320CRUDE: Added call to DJS_MASKINTERP() in the beginning to prevent - hot columns from throwing the initial trace (which does - not use the errors at all). -zplot: Quick-and-dirty script for finding and plotting a spectrum (at Princeton) - w/out setting up any path variables or SDSS products. - -f8v.abs: Increase flux-calibrating mask around H-alpha by 50%, now - masking +/- 1500 km/s (+/- 32.8 Ang). -opBC-51813.par: One extra bad column [370,1800:2047] on r2. - There are a few extra additions to match the new pixflatave-00000 files. - Instead of flagging all of the "pits", these are not included, but - can be rejected using minflat/maxflat = 0.8/1.2 - -BSPLINE_ACTION, INTRV (in idlutils): Bug fixes for 2-D spline fitting. - Include 'poly1' function in BSPLINE_ACTION(), and set the function - properly in BSPLINE_ITERFIT. -BSPLINE_FIT, BSPLINE_ITERFIT (in idlutils): - Remove MASK keyword, since it is too confusing with INMASK, OUTMASK - already used in BSPLINE_ITERFIT(). It didn't look like it was - actually used anyway! -DJS_REJECT (in idlutils): Add the GROUPDIM keyword, and allow GROUPDIM, - MAXREJ and GROUPSIZE to be vectors for several limits in the - rejection algorithm. These were some major changes, and hopefully - are completely backwards-compatable. -SPLOT (in idlutils): Changed interactive gaussfit (g) so amplitude is correct. -YANNY_READ (in idlutils): Try to make backwards-compatable with IDL 5.2 - by replacing calls to STRSPLIT() with calls to STR_SEP. -build_links (in idlutils): New script for building links between directories. -evilinstall (in idlutils): Add another option for location of sdssfue - scripts (for the installation on sos.apo), and also set the - CVS locations to the default at Fermi if not set up with - "setup sdsscvs". - -------------------------------------------------------------------------------- -v4_7_6 (Jun 9, 2001 idlspec2d only) - -data_rysnc.sh: Bug fixes in SOS copy, and adaptation to sos.apo.nmsu.edu - (i.e. ps -elf does not work, and scp1 does not exist). - -------------------------------------------------------------------------------- -v4_7_5 (Jun 8, 2001 idlspec2d only) - -data_rsync.sh: SOS should now attempt to archive data with gzip and move - offsite in the morning. -killdata.sh, mailhtml.sh, sos.sh, startapo.sh, APOREDUCE: - Adapted to work on sos.apo.nmsu.edu, and fixed file transfer - bugs. For APOREDUCE, changed spawn of "scp1" to "scp", since - the former did not exist on the new machine sos.apo. - -sprobot_start: Remove "sprobotcopy" from the cron jobs, since copying - reduced data to Fermi always fails. - Set SPECLOG_DIR=$ASTROLOG_DIR for the Spectro-Robot. - -------------------------------------------------------------------------------- -v4_7_4 (May 10, 2001 idlspec2d+idlutils) - -COPY_STRUCT, COPY_STRUCT_INX (in idlutils): - These routines didn't work properly for structures with more - than 32768 elements, because of using only 2-byte integers. - This resulted in READSPEC not working properly for large lists, - and other dependent routines such as ZPLOT (where I noticed it!). -READSPEC: Bug fix when reading one range of fiber numbers for a FITS - binary table, i.e. "READSPEC, 301, [1,2,3], ZANS=ZANS" was not - returning the correct values. -ZPLOT: Include MJD in call to READSPEC. - -spPlateList.par: Enlarge list of EDR plates to include multiple pluggings, - and other plates that should have been in the list according to van - den Berk's mail to sdss-spectro/665 on 2 May 2001. The list now - includes 136 plates, many of which are repeat observations. - -Spectro-Robot scripts: - Let the scripts "sprobot2d.sh" and "sprobot1d.sh" test whether they - are already running, and quit if they are. - Update the syntax to "ps" commands as per RHL's suggestions. - From sprobot.sh: Batch process 2D first, wait for it to complete, - then batch process 1D in the background. - -------------------------------------------------------------------------------- -v4_7_3 (Apr 30, 2001 idlspec2d+idlutils) - -PLATESN: Typo introduced on April 13th that crashes SPCOMBINE -- fixed! -SDREPORTMAKE: New proc for generating sdReport files from raw idR files. - -In idlutils: -YANNY_READ: Add optional /ANONYMOUS flag to avoid conflicts in structure - types, in the event that named structures actually change - between calls (will be used by SDREPORTMAKE). - Split lines with semi-colons, for when reading early sdReport - files with SDREPORTMAKE; however, this may introduce bugs - elsewhere because it was not done totally generally. - -In the Spectro-Robot bash scripts, change the top-level directory for -the plug-map files from $SPECLOG_DIR to $ASTROLOG_DIR. Use the $SPECLOG_DIR -only for re-running with cut versions of everything, including the "speclog" -product. - -------------------------------------------------------------------------------- -v4_7_2 (Apr 27, 2001 idlspec2d only) - -PLATELIST: Use the "spPlateList.par" file to determine which data are public. - Add a PUB column to denote if a plate is in a public data release. -PLATEMERGE: Add the /PUBLIC option to trim only to public data. - -More updates to "opHdrFix.par" file. -Makefile in /bin did not copy all executables when installing; now it does. -Update the batch files to use the wire machines as a default. -Update spectro home page to reflect v4_7 reductions. - -------------------------------------------------------------------------------- -v4_7_1 (Apr 9, 2001 idlspec2d+idlutils) - -FILTER_THRU: Add new Doi filter curves (CCD+atmosphere+telescope), and - add /TOAIR flag to convert from vacuum to air wavelengths. - (But not yet called by 2D or 1D). -PCA_SOLVE, COMPUTECHI2: Make robust to one or all of the template spectra - (e.g., the STARFLUX vectors) being identically zero. - The routine PCA_SOLVE could crash w/out special-casing this - due to an apparent bug in the built-in routine PCOMP(). -SPCOMBINE, SPCOADD_FRAMES: Optionally allow spFrame files to be g-zipped. -READSPEC, SPREDUCE1D: Allow spPlate, spZ files to be g-zipped. -READSPEC: Major changes to speed up the code when reading a sparse number - of fibers per plate. It used to read all the fibers between the - smallest and largest fiber number. Now it divides up the requested - fibers into contiguous chunks, and reads in only those chunks. - (The plate file is still only opened once, and the header is only - read once.) - -Add new mask bit: NEARWHOPPER. This effects the following routines: - EXTRACT_OBJECT, FLUXCORR_NEW, MYFLUXCALIB, TELLURIC_CORR. - These fibers are also implicitly ignored by sky-subtraction - because the sky-fiber selection implicitly assumes all fiber- - mask bits are fatal (in EXTRACT_OBJECT). - -Son-of-Spectro changes: -New executable, "sos_redo" to re-run SOS on failed reductions. -APO_APPENDLOG: Now overwrite entries in the file "logfile-$MJD.fits" if an - exposure is re-reduced (e.g., with "sos_redo"). -APO_LOG2HTML: Placed a lower limit of (S/N)^2 > 2.0 to count towards total - in each camera -QUICKEXTRACT: Change message about post-cabibs from "REQUIRED" to merely - "recommended." - Slightly loosened constraints on match_trace to +/- 0.15 pixels. -QUICKTRACE: Tweak test for putative Argon lines in flats to be a less - sensitive trigger. -REMOVE2REDO: (New proc) Checks for missing entries in logfile*fits and - removes corresponding raw data; called by script "sos_redo". -The routine FIND_WHOPPING is moved out of EXTRACT_OBJECT so that it can - be called by QUICKEXTRACT. -Changed SOS signal-to-noise warning to a yellow warning below S/N=15/pix, - and S/N=13/pix. -More entries in "opHdrFix.par" to fix all the incorrect plugmap files - known to date. However, we still need to get the correct - files copied into the /astrolog directories. - -------------------------------------------------------------------------------- -v4_7_0 (Mar 16, 2001 idlspec2d+idlutils) - -FLUXCORR_NEW: Replace deviant fluxcorr coefficients with the median - Attempt to mask large positive deviations in inverse variance - (PR #2040) -SPCOMBINE: combinedir is now a keyword for spcoadd_frames. - SPFLUX and SPCOADD_FRAMES utilize directory keywords as well. - Start by zeroing-out the 4 mask bits set by combining step. -FIBERFLAT: Simple check to exclude extrema (PR #2123) -COMBINE1FIBER: Replace the lines which errantly set NODATA with a check for the - extrema wavelengths which have no signal. (PR #1939) -SPPLANCOMB, -SPALLCOMBINE: Fixed Bug to combine a specific MJD - -BSPLINE_ITERFIT (in idlutils): Modified to avoid crashing SPREDUCE1D. - Two changes: (1) Return a valid solution even in the case where the variance - of the y-vector is zero. (2) In the case where there are too few points to - fit, still return a valid solution of all zeros. -FINDSPEC: New routine for finding SDSS spectra that match a given RA, DEC. -MULTISYNTHSPEC: New routine that is sometimes faster than SYNTHSPEC, but - I would not recommend using this yet. -MYFLUXCALIB: Make robust to degenerate case of only 1 input spectro-photo std. -PLATELIST: Lower (S/N)^2 cutoff to 13 for all G,I bands (from 15 previously). - If ZWARNING flag exists in 1D outputs, use that to determine - number of UNKNOWN or SKY identifications. -PLOTSPEC: Add ZNUM option (also new to READSPEC). -READSPEC: Add option to generate the synthetic spectra. - Add ZNUM option to get fits other than the best fit. -REDMONSTER: New routine for looking for Red Monster (large regions of - bad sky residuals, which, for example happens when the hand-paddle - light is on at the telescope). Flag these pixels with the - REDMONSTER mask bit. This routine replaces MONSTER. -SPREDUCE1D: Search for stars at velocities to +/- 1200 km/s (was 600 km/s). - No longer identify objects as UNKNOWN, but rather set bits - in a ZWARNING flag. - Add outputs ZWARNING, SN_MEDIAN, FRACNSIGMA, - COUNTS_SPECTRO, COUNTS_SYNTH, COUNTS_SKY (not used yet), - VDISP, VDISP_ERR, ANYANDMASK, ANYORMASK. - Compute velocity dispersions using real-space method (VDISPFIT). - Slightly increase width for re-fitting galaxy redshifts from - PWIDTH=5 to 7. This may fix PR #1938. - Speed up computation of FRACNSIGMA by calling FILTER_THRU() - for the whole plate at once. - Output SYNFLUX as a 2nd HDU in the spZbest*.fits file. -SYNTHSPEC: Calling sequence now allows for returning an array of spectra. -TELLURIC_CORR: If a telluric star is deemded bad, then reject all of - its FITFLUX pixels from the global fit. Previously, we were - only rejecting the pixels INDT, but still allowing bad continuum - pixels into the fit. This fixes PR #2028. -YANNY_PAR (in idlutils): If several lines have the same keyword name, - then return all of those values as an array. This makes this - routine backwards-compatable with Yanny files written previously - with SPPLAN2D. -ZFIND: Get rid of SIGMA2,SIGMA2_ERR and add VDISP,VDISP_ERR. - -Add new mask bits: BADSKYCHI, REDMONSTER, SMEARIMAGE, SMEARHIGHSN, SMEARMEDSN. - -New installation script "evilinstall" in the idlutils product. - -Add a line to the cron tables from "sos_start" and "sprobot_start" to -keep the disk auto-mount points alive at Princeton (or anywhere using an -amd daemon). - -------------------------------------------------------------------------------- -v4_6_2 (Feb 14, 2001) - -For the Fermi calling script SPALLREDUCE, add an NCOMBINE keyword -to limit the number of exposures combined. Default to a maximum of 7. - -------------------------------------------------------------------------------- -v4_6_1 (Feb 14, 2001) - -SPCOMBINE: Reverting to adderr=0.03 to prevent rejections in high S/N regions -SKYSUBTRACT: The "fix" in the previous version didn't properly check the - bad mask bits, and in fact could make things worse. Now fixed. - -------------------------------------------------------------------------------- -v4_6_0 (Feb 9, 2001) - -EXTRACT_OBJECT: Reverted to Gaussian Profile, more robust flat field - interpolation, still 3% are fluctuations when - NEARBADPIXEL is set. -FIBERFLAT: Fiber is flagged BADFLAT is more than 30% of pixels are masked. -FLATINTERP: Remove call to this code. -SPCALIB: Back to original flat field rejection levels matches object extraction. -SKYSUBTRACT: Check for NEARBADPIXEL and LOWFLAT bit as well in pixelmask. - -Add BADFLUXFACTOR mask bit when applying flux-calibration and flux-correction -vectors. - -Fixed DJS_BATCH to work properly on remote but cross-mounted CPU's. - -Plan files (spPlancomb*.par) written by SPPLAN1D now puts all the "planfile2d" -entries on the same line to be consistent with how YANNY_PAR() works now. - -Fix the spike in memory usage at the end of SPCOMBINE. - -Major changes to PLATELIST routine to return more info, and make a FITS -binary table. - -------------------------------------------------------------------------------- -v4_5_0 (Jan 31, 2001) - -Edits to raw frame headers now possible with SPHDRFIX procedure, which -reads the list of changes from opHdrFix.par file. In particular, this -allows us to edit wrong headers in some of the earliest data. - -The F-star flux-calibration vectors are generated with a PCA analysis -that now allows several rejection iterations. - -More iterations added to the arc-line centroiding in FITARCIMAGE -(addresses PR #874). - -Son-of-Spectro now tests for the Red Monster (light at 6400-6550 Ang in -science frames), and tests for argon lines in the flat-fields. The Red -Monster is presumably from the handpaddle being left plugged in. - -SPREDUCE1D: If an object is fit by a negative STAR or negative QSO, then - re-classify it as UNKNOWN. - -------------------------------------------------------------------------------- -v4_4_0 (Jan 23, 2001) - -Remove any telluric-correction beyond 8250 Ang, since we don't believe -any of it there. In fact, it looks like we were multiplying-in features -that are F-star absorption lines at 8540 and 8660 Ang. But what about -the broad feature at 8665 Ang -- is that a telluric-band, or an intrinsic -F-star feature?? - -Keyword CARTID added to headers to track cartridge ID's. - -Spectro robot scripts included in /bin directory (sprobot_start, etc.) - -For Son-of-Spectro, the WARNING and ABORT messages are now saved in HDU #5 -of the FITS log file, rather than as an element of the other HDU's. - -For Son-of-Spectro, now only copies astrolog directory of existing -/data/spectro/$MJD data directory, since from now on the astrolog directory -will never be purged. - -------------------------------------------------------------------------------- -v4_3_1 (Dec 10, 2000) - -This version of "idlspec2d" has the following enhancements for -Son-of-Spectro (SOS): - -(1) The hard-wired user/machine/version dependencies have been removed. - SOS can now be run by any user on any machine, which we may want to - do to avoid conflicts with the fiber-mapper. Though for now, this - will continue to be run from "observer@plate-mapper". -(2) Starting+stopping SOS is now done with the commands - sos_start - sos_status - sos_stop - which will start-up whichever version of the code has been either - declared or set up. Backing out of versions is now straight-forward. -(3) The code can now be managed remotely. For example, from "sdsshost" - you can type: - setup idlspec2d - sos_status observer@plate-mapper - to check the status of SOS. -(4) SOS delays execution when the fiber-mapper is being run. -(5) More logging information is kept. -(6) Identified and removed Y2022 bugs which would have stopped SOS from - working at MJD=60000. It should now work until the year 2132. -(6) Documentation is now complete, and updated to reflect all above changes. - The relevant documentation is also in the "sdssProcedures" product. - -------------------------------------------------------------------------------- -v4_3_0 (Dec 6, 2000) - -The changes are primarily to the Son-of-Spectro (SoS) code, specifically: - -(1) The FITS log files have been re-structured to significantly speed - up reading these files. This was the bottleneck that slowed SoS - down towards the end of a night, since each instance of reading these - files locked out other processes. Our hope is that now SoS will - keep up during the night. -(2) Bias and dark exposures are now analyzed, and the 98th percentile - of all values in these images are reported to SoS. For example, - if 98% of the pixels in a bias are below 8 ADU, then PERCENTILE98 = 8. -(3) The operational limits file has been edited so that SoS values - that appear in red should definitely be considered very bad. - For example, if the number of arc lines found (NLAMPS) is red, then - that arc exposure should be considered bad and another should be - taken until a good number are found. - In practice, we expect it to be rare that anything falls out of spec. - -------------------------------------------------------------------------------- -v4_2_0 (Nov 28, 2000?) - -1) Skip low S/N smear images in flux correction (previously aborted) - -2) Added bad columns to opBC.par - -3) Fixed bug in sdssproc when dealing with shifted rows between - MJD 51578 AND 51580 inclusive. - -4) Changed structure of spMerge2d to have [flux,err] as image - in HDU 0, and [andmask, ormask, dispersion] as binary table in HDU 1. - -5) Added headers cards to HDU's 1-5 in spPlate*fits to include wavelength - information. - -6) Fixed bug to work on sdR*gz files. - - -------------------------------------------------------------------------------- -v4_1_0 (Oct 20, 2000?) - -The following lists the highlights/lowlights -of the new 2d version: - -Here is a catalog of the raw 2d output: - - spFrame-cc-xxxxxxxx.fits Object Frame extraction - - HDU0 : "Flattened" counts per pixel Float 2048x320 - HDU1 : Inverse variance of HDU0 Float 2048x320 - HDU2 : Pixelmask (see below) Long 2048x320 - HDU3 : Wavelength coefficients Structure - HDU4 : Dispersion coefficients Structure - HDU5 : plPlugMapP for 320 fibers Structure - HDU6 : Telluric correction image Float 2048x320 (only for red) - - spSky-cc-xxxxxxxx.fits 2048x320 Subtracted sky image - spFlat-cc-xxxxxxxx.fits 2048x320 flat field vectors - spArc-cc-xxxxxxxx.fits 2048x320 Arc spectra extractions + - HDU1: inverse variance - spDiag2d-pppp-mmmmm.ps - spDiag2d-pppp-mmmmm.log - -Legend: - -xxxxxxxx Frame number -pppp Plate number -mmmmm MJD -cc camera -s spectrograph - -Just before combining 2 or more exposures into fully merged spectra -we perform two flux calibration steps. The outputs are: - - spFluxcalib-xxxxxxxx-s.fits Bspline structure to convert - flattened counts to 10^-17 ergs/s/cm^2/A - - spFluxcorr-xxxxxxxx-s.fits Polynomial coefficients to correct - science frames to smear frame - -The final coaddition uses spFrame, spFluxcalib, and spFluxcorr to create - - spPlate-pppp-mmmmm.fits Fully calibrated final 2d output - - HDU0 : Fluxed log-linear spectra Float npix x 640 where npix ~3900 - units of 10^(-17) ergs/s/cm^2/A - - HDU1 : Inverse variance of HDU0 - HDU2 : Pixelmask (Intersection aka AND mask) LONG npix x 640 - HDU3 : Pixelmask (Union aka OR mask) LONG npix x 640 - HDU4 : Dispersion Image (sigma of arc lines) - in units of 1.0e-4 log10 lambda - HDU5 : plPlugMapP STRUCTURE - -After the final coaddition, the data will be restructured into -individual files, one for each fiber: - - spMerge2d-pppp-mmmmm-fff.fits (fff is fiber number 1 through 640) - - HDU0 : Flux and err Float npix x 2 - HDU1 : Pixelmask AND,OR LONG npix x 2 - HDU2 : Dipsersion image Float npix x 1 - - -!!!!!Notice: Multiple MJDs with the same plugging will be combined!!!!! - into single outputs, but will be labeled with the - highest MJD of the group. - - Bad data which should not be combined - with subsequent data should be deleted before the subsequent - data is run through 2d. - -New features of v4_1_0: - - Major New Features: - - 1) Spectrophotometry: - - a) Flux calibrate with all available SPECTROPHOTO_STD and - REDDEN_STD stars. Use PCA to derive first and second - eigenspectra. Compare directly with SDSS Fundamentals to - calibrate each smear exposure. - - b) Flux correct each science frame with throughput and color - terms to match spectrophoto solution of smear image for - each fiber. Use SPECTROPHOTO_STD solution to low S/N fibers. - - 2) Correct for Near Infrared Scattering (see msg from jeg) and - possible optical scattering. The scattered light background - is estimated from a model profile of the full 2048x2048 image. - - 3) New maskbits: - - Each individual frame extracted by 2d has the following maskbits - possibly set for each pixel: (found in idlspec2d/etc/spMaskbits.par) - - # The following mask bits are for the fiber, set in FIBERMASK_BITS() -maskbits 0 NOPLUG # Fiber not listed in plugmap file -maskbits 1 BADTRACE # Bad trace from routine TRACE320CRUDE -maskbits 2 BADFLAT # Low counts in fiberflat -maskbits 3 BADARC # Bad arc solution -maskbits 4 MANYBADCOLUMNS # >10% pixels are bad columns -maskbits 5 MANYREJECTED # >10% pixels are rejected in extraction -maskbits 6 LARGESHIFT # Large spatial shift between flat and object pos'n -maskbits 7 BADSKYFIBER # Sky Fiber shows extreme residuals - -# The following mask bits are for a pixel, set in PIXELMASK_BITS() -maskbits 16 NEARBADPIXEL # Bad pixel within 3 pixels of trace -maskbits 17 LOWFLAT # Flat field less than 0.5 -maskbits 18 FULLREJECT # Pixel fully rejected in extraction (INVVAR=0) -maskbits 19 PARTIALREJECT # Some pixels rejected in extraction -maskbits 20 SCATTEREDLIGHT # Scattered light significant -maskbits 21 CROSSTALK # Cross-talk significant -maskbits 22 NOSKY # Sky level unknown at this wavelength (INVVAR=0) -maskbits 23 BRIGHTSKY # Sky level > flux + 10*(flux-error) -maskbits 24 NODATA # No data available in combine B-spline (INVVAR=0) -maskbits 25 COMBINEREJ # Rejected in combine B-spline - - Maskbits 0 through 7 apply to the full set of 2048 pixels on - blue or red spectra. - - The combined spectra found in spPlate*fits or spMerge2d*fits - have two masks: - AND mask: the bit is set if all overlapping pixels is set. - OR mask: " any overlapping pixel bit is set. - -Minor changes: - - 1) Lower limit to variance in raw image, - equivalent to S/N < 100 per pixel. - - 2) New optimal extraction profile: 0.5 * exp(-x^2) + 0.5*exp(-|x|^3) - (proftype 3) - - 3) Restricted wavelength range in telluric correction - - 4) Tighter rejection limits, more stringent cosmic rejection - limits: +- 4 sigma - - 5) Sign has been corrected in heliocentric velocity - - 6) The header has the following changes: - - CALID* has been deleted - UNSIGNED has been deleted - - FRAMESN2 S/N^2 for each frame, does not apply to merged - spectra - EXPID can accomodate more than 10 exposures - PIXFLAT: 2d pixel flat used - OPBC: bad pixel file applied - OPECALIB: opEcalib file applied - OPCONFIG: opConfig file applied - - SPEC1_G, SPEC1_R, SPEC1_I - SPEC2_G, SPEC2_R, SPEC2_I : Fiducial S/N across spectrographs - - MAG_G, MAG_R, MAG_I : Synthetic magnitude after - spectrophotometry - - - 7) Bspline package no longer requires slatec library - - 8) Sky fibers with significant extra flux are rejected - - 9) Number of bad fibers with given bits set are tabulated at end - - 10) pipeline can run and use .fit.gz gzipped raw data files, - saving about 40% of space required by raw spectro data - - 11) Spectral Resolution is output in the final merged spectra. - - 12) Use a better algorithm to tweak flat field trace to match object - trace. - - 13) Fixes in to account for electronics problem in August - -------------------------------------------------------------------------------- -v3c (May 12, 2000?) - -It still requires idlutils v3b to run. -It is tagged on the branch, v3branch, and includes the following -improvements to the 2d pipeline: - -- Auto-generation of S/N plot at conclusion of spectra merging. -- Increased number of supersky breakpoints to achieve better sky subtraction -- Added entries to opBC.par file, this will remove most of the remaining - glitches. -- Added a new routine, "spmulti", which can combine multiple MJDs - with the same plugmap file -- Heliocentric correction is now done on an exposure by exposure basis in 2d. -- Removed header cards which are no longer pertinent, and added some - extras requested by Andy. - Ones to note are NGOOD (number of good pixels in final spectrum) - SN_G, SN_R, SN_I (3 measures of S/N) -- Dispersion and spatial widths are output as a function of fiber - fiber number & pixel (in spArcInfo and spFlatInfo respectively) - diff --git a/bin/.DS_Store b/bin/.DS_Store deleted file mode 100644 index 5008ddfcf..000000000 Binary files a/bin/.DS_Store and /dev/null differ diff --git a/bin/BOSS_log b/bin/BOSS_log new file mode 100755 index 000000000..9886b1103 --- /dev/null +++ b/bin/BOSS_log @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +from boss_drp.sos.BOSS_log import build_log +from boss_drp.utils import jdate +import os +import sys +import argparse +import datetime +import astropy.time +import platform + + +if __name__ == '__main__' : + """ + Build BOSS Exposure Log + """ + parser = argparse.ArgumentParser( + prog=os.path.basename(sys.argv[0]), + description='Build BOSS Exposure Log') + + parser.add_argument('-m', '--mjd', type=str, help='MJD',required=False, default=None) + parser.add_argument('-y', '--yesterday', default=False, action='store_true', help='current mjd-1') + if 'sdss5' not in platform.node(): + parser.add_argument('-o', '--observatory', '--obs', default=None, help='Manually set observatory', type=str.lower, choices=['apo', 'lco']) + parser.add_argument('-l', '--long', default=False, action='store_true', help='Long/detailed version of log') + parser.add_argument('--new_ref', default= False, action='store_true', help='Calculate new reference values in fratio and w_shift and show in place of fratio and w_shift (edit to code to save new value is required)') + parser.add_argument('-c', '--hide_hart', '--hide_hartmann', default= False, action='store_true', help='Hide cleaned version of Hartmann Logs as a table') + parser.add_argument('-r', '--hart_raw', default = False, action='store_true', help='Print raw form (instead of table form) of Hartmann Logs') + parser.add_argument('-e', '--hide_error', default=False, action='store_true', help='Hide SOS Error and Workings') + parser.add_argument('-s', '--hide_summary', default=False, action='store_true', help='Hide data summary table') + args = parser.parse_args() + + if 'sdss5' in platform.node(): + args.observatory = None + + try: + obs = os.getenv('OBSERVATORY').lower() + if args.observatory is not None: + obs = args.observatory + except: + if args.observatory is None: + obs = input('Enter Observatory {apo,lco} ') + obs = obs.lower() + else: + obs = args.observatory.lower() + #obs = input('Enter Observatory {apo,lco}') + #obs = obs.lower() + if obs not in ['apo', 'lco']: + print('Invalid observatory') + exit() + if args.mjd is None: + args.mjd = jdate.obs(obs).astype(str) + if args.yesterday is True: args.mjd = str(int(args.mjd)-1) + if 'sdss5' in platform.node(): + datadir = '/data/spectro/' + sos_dir = '/data/boss/sos/' + else: + args.hart = False + if obs == 'apo': + datadir = os.getenv('BOSS_SPECTRO_DATA_N') + sos_dir = os.getenv('BOSS_SOS_N') + else: + datadir = os.getenv('BOSS_SPECTRO_DATA_S') + sos_dir = os.getenv('BOSS_SOS_S') + if args.hart_raw is True: + args.hide_hart = False + build_log(args.mjd, obs, Datadir=datadir, long_log = args.long, new_ref = args.new_ref, + hart=not args.hide_hart, hart_table = not args.hart_raw, hide_error=args.hide_error, + hide_summary=args.hide_summary, sos_dir = sos_dir) + diff --git a/bin/GetconfSummary.py b/bin/GetconfSummary.py deleted file mode 100644 index 2e548e767..000000000 --- a/bin/GetconfSummary.py +++ /dev/null @@ -1,109 +0,0 @@ -#!/usr/bin/env python3 - -from sdss_access.path import Path -from sdss_access import Access -from os import getenv, environ -from astropy.table import Table -from pydl.pydlutils.yanny import read_table_yanny, yanny, write_table_yanny -import os.path as ptt -from glob import glob - - -def find_plPlugMapM(mjd, plate, mapname, splog=None, release='sdsswork'): - if getenv('SPECLOG_DIR') is None: - splog.info('ERROR: SPECLOG_DIR must be defined') - exit() - fibermap_file = ptt.join(getenv('SPECLOG_DIR'),str(mjd),'plPlugMapM-'+mapname+'.par') - fibermap_file_list = glob(fibermap_file) - if len(fibermap_file_list) == 0: - splog.info('plPlugMapM file '+fibermap_file+' does not exists') - return(None) - else: - return(fibermap_file_list[0]) - -# -# path = Path(release='release', preserve_envvars=True) -# print(path.lookup_names()) -# path_ops = {'mjd': mjd, 'plateid': int(plate)} -# fibermap_file = path.full('plPlugMapM', **path_ops) -# if path.exists('plPlugMapM', **path_ops): -# pass -# elif path.exists('plPlugMapM', **path_ops, remote=True): -# access = Access(release='release') -# access.remote() -# access.add('plPlugMapM', **path_ops) -# access.set_stream() -# valid = access.commit() -# if valid is False: -# splog.log('plPlugMapM file '+fibermap_file+' does not exists') -# return(None) -# return(fibermap_file) - - -def find_confSummary(confid, obs=None, no_remote=False, splog=None, release='sdsswork'): - path = Path(release=release, preserve_envvars=True) - - if obs is None: - obs = getenv('OBSERVATORY').lower() - path_ops = {'configid': confid, 'obs': obs.lower()} - fibermap_file = None - #print(path.full('confSummaryF_test', **path_ops)) - if path.exists('confSummaryF_test', **path_ops): - #local confSummaryF file exists - fibermap_file = path.full('confSummaryF_test', **path_ops) - elif (not no_remote): - access = Access(release=release) - if (path.exists('confSummaryF_test', **path_ops, remote=True)): - #Remote confSummaryF file exists - fibermap_file = path.full('confSummaryF_test', **path_ops) - access.remote() - access.add('confSummaryF_test', **path_ops) - access.set_stream() - valid = access.commit() - if valid is False: - fibermap_file = None - if fibermap_file is None: - if path.exists('confSummary_test', **path_ops): - #Local confSummary file exists - fibermap_file = path.full('confSummary_test', **path_ops) - elif (not no_remote): - access = Access(release=release) - if (path.exists('confSummary_test', **path_ops, remote=True)): - #Remote confSummary file exists - fibermap_file = path.full('confSummary_test', **path_ops) - access.remote() - access.add('confSummary_test', **path_ops) - access.set_stream() - valid = access.commit() - if valid is False: - if splog is None: - print('confSummary file '+fibermap_file+' does not exists') - else: - splog.info('confSummary file '+fibermap_file+' does not exists') - return None - if fibermap_file is None: - #No confSummary file exists - fibermap_file = path.full('confSummary', **path_ops) - if splog is None: - print('confSummary file '+fibermap_file+' does not exists') - else: - splog.info('confSummary file '+fibermap_file+' does not exists') - return None - return fibermap_file - - - -def get_confSummary(confid, obs=None, no_remote=False, splog=None, - release='sdsswork', sort=False, filter=False): - fibermap_file = find_confSummary(confid, obs=obs, no_remote=no_remote, - splog=splog, release=release) - - if fibermap_file is None: - return(Table()) - confSummary=read_table_yanny(fibermap_file,'FIBERMAP') - if filter is True: - confSummary=confSummary[np.where(confSummary['fiberType'] == 'BOSS')] - if sort is True: - confSummary.sort('fiberId') - - return(confSummary) diff --git a/bin/SOS b/bin/SOS index 4671622a2..f66344cb7 100755 --- a/bin/SOS +++ b/bin/SOS @@ -1,629 +1,13 @@ #!/usr/bin/env python3 -import sos_classes,putils, sxpar -import argparse, sys, logging, logging.handlers -import subprocess, time,os, re, glob, copy -import numpy as np -from astropy.io.fits import getheader -from multiprocessing import Process -from readfibermaps import readfibermaps +import argparse from argparse import ArgumentTypeError -import re - -#### -class fs_Config: - """file sequencer Config Info""" - - def __init__(self): - self.fitname = "" - self.fitdir = "" - self.plugname = "" - self.plugdir = "" - self.sosdir = "" - self.mjd = "" - self.fps = "T" - self.nocal = "F" - self.nodb = "F" - self.no_reject= "F" - self.sdssv_sn2= "F" - - def __str__(self): - return ("fitname: " + self.fitname + "\n" + - "fitdir: " + self.fitdir + "\n" + - "plugname: " + self.plugname + "\n" + - "plugdir: " + self.plugdir + "\n" + - "sosdir: " + self.sosdir + "\n" + - "mjd: " + self.mjd + "\n" + - "fps: " + self.fps + "\n" + - "nocal: " + self.nocal + "\n" + - "nodb: " + self.nodb + "\n" + - "no_reject:" + self.no_reject + "\n" + - "sdssv_sn2:" + self.sdssv_sn2); - -def updateMJD(workers, cfg, log): - """Check to see if a new MJD exists""" - - regex = sos_classes.Consts().MJDGlob; - try: - MJD = ls(cfg.fitsDir, regex)[-1][-5:] - if (MJD == cfg.MJD): - return - - cfg.MJD = MJD[-5:] - for worker in workers: - worker.fileCount = 0 - - log.info("Latest updated MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) - except: - log.critical("Could not find latest MJD in " + cfg.fitsDir) - log.critical("GOODBYE!") - sys.exit(1) - -def flavor(cfg): - """return the flavor of the fits file""" - return sxpar.sxparRetry(os.path.join(cfg.fitdir,cfg.fitname), "flavor", retries = 5)[0].lower() - -def plugging(cfg): - """return the plugging of the fits file""" - return sxpar.sxparRetry(os.path.join(cfg.fitdir,cfg.fitname), "CONFID", retries = 5)[0].lower() - - -def previousExposure(cfg, log): - """return a config for the previous exposure""" - - # Parse: sdR-b1-00114186.fit.gz - left = cfg.fitname[:7] - right = cfg.fitname[15:] - exp = (str(int(cfg.fitname[7:15]) - 1)).zfill(8) - - prevcfg = copy.copy(cfg) - prevcfg.fitname = left + exp + right - log.info("previous cfg:\n" + str(prevcfg)) - return prevcfg - - -def rule1(cfg, log): - """Handle arc/flat ordering""" - prevcfg = previousExposure(cfg, log) - log.info("Exposure Flavor: " + flavor(cfg)) - prvfitsExist = os.path.exists(os.path.join(prevcfg.fitdir, prevcfg.fitname)) - log.info("Previous exposure exists: " + str(prvfitsExist)) - if prvfitsExist: - log.info("Previous Flavor: " + flavor(prevcfg)) - log.info("Same Plugging: " + str(plugging(cfg) == plugging(prevcfg))) - - # Handle flats -- process, and arc if was previous - if flavor(cfg) == "flat": - log.info("Exposure is a flat") - processFile(cfg, log, "flat") - if prvfitsExist and flavor(prevcfg) == "arc": - log.info("Processing previous arc") - processFile(prevcfg, log, "arc") - return True - return False - - -#### -def processFile(cfg, log, flavor=""): - """call sos_apocommand on the file. Will exit with error code if the command failts.""" - - cmd = "sos_apocommand" - cmd += " -f " + cfg.fitname - cmd += " -i " + cfg.fitdir - cmd += " -p " + cfg.plugname - cmd += " -l " + cfg.plugdir - cmd += " -s " + cfg.sosdir - cmd += " -m " + cfg.mjd - if cfg.fps == "T": - cmd += " -e " - if cfg.nocal == "T": - cmd += " -a " - if cfg.nodb == "T": - cmd += " -n " - if cfg.no_reject == "T": - cmd += " -r " - if cfg.sdssv_sn2 == "T": - cmd += " -v " - prefix = "sos_apocommand(" + flavor + "): " - - i = 0 - while i < 5: - if i > 0: - sleep(2) - log.info("Trying again to get idl license") - log.info("executing: " + cmd) - rv = putils.runCommand(cmd, echo=False, prefix=prefix, logCmd=log.info) - if rv[0] != 0: - log.info("\nCommand failed with rc = " + str(rv[0]) + "\n") - sys.exit(1) - if 'Failed to acquire license.' not in rv[1]: break - - - -def sos_filesequencer(fitname, fitpath, plugname, plugpath, - sosdir, mjd, fps='T', nocal='T', log=None, - nodb='F', no_reject='F', sdssv_sn2='F' ): - """ - Checks if processing a flat if there was an arc before the flat, - then process the after the flat - Otherwise process the fits file - """ - - - config = fs_Config() - config.fitname = fitname - config.fitdir = fitpath - config.plugname = plugname - config.plugdir = plugpath - config.sosdir = sosdir - config.mjd = mjd - config.fps = fps - config.nocal = nocal - config.nodb = nodb - config.no_reject= no_reject - config.sdssv_sn2= sdssv_sn2 - # Rules return true if they processed the file and processing should stop - # process rule - - log.info("Checking Rule 1") - if not rule1(config, log): - log.info("Passed Rules; let's go!") - processFile(config, log, flavor(config)) - -#### -def processNewBOSSFiles(worker, files, cfg, log): - """ Process new fits files - - Get the plugmap name and then add the appropiate APO command to the - correctly numbered process list. - - Before the files are processed, they are sorted by name. We really want the files - sorted by time, but because of the sequence number, name is the same as time for any - given camera. - - """ - - # Sort files by name to get into the right time order - files.sort() - log.info("Sorted file list" + str(files)) - - for file in files: - log.info("processing new file: " + file) - - #- Get platetype from header (missing=BOSS) - hdr = getheader(file) - - if 'FLAVOR' not in hdr: - log.info("Skipping exposure with missing FLAVOR keyword.") - return - else: - flavor = hdr['FLAVOR'] - - if 'PLATETYP' in hdr: - platetype = hdr['PLATETYP'].upper() - else: - platetype = 'BHM&MWM' - - #- always process bias and darks, regardless of PLATETYP - #- for other exposure types, only process BOSS and EBOSS exposures - if flavor in ('bias', 'dark') or platetype in ('BHM', 'BHM&MWM'): - plugpath = getPlugMap(file, cfg, log) - - SOS_opts = {'confSummary':plugpath,'ccd':os.path.basename(file).split('-')[1], 'mjd':cfg.MJD, - 'log':True, 'log_dir': os.path.join(cfg.sosdir,str(cfg.MJD))} - readfibermaps(topdir=os.path.join(cfg.sosdir,str(cfg.MJD)), SOS=True, SOS_opts=SOS_opts, - logger=log, clobber=cfg.clobber_fibermap) - - qf = os.path.abspath(file) - fitname = os.path.basename(qf) - fitpath = os.path.dirname(qf) - - plugPath = os.path.abspath(plugpath) - plugname = os.path.basename(plugPath) - plugpath = os.path.dirname(plugPath) - - sos_filesequencer(fitname, fitpath, plugname, plugpath, - cfg.sosdir, cfg.MJD, fps=cfg.fps, - nocal=cfg.nocal, log=log, nodb=cfg.nodb, - no_reject=cfg.no_reject, sdssv_sn2=cfg.sdssv_sn2) - else: - #- Don't crash if hdr is mangled and doesn't have EXPOSURE - if 'EXPOSURE' in hdr: - log.info("Skipping %s exposure %d." % (platetype, hdr['EXPOSURE'])) - else: - log.info("Skipping %s exposure." % platetype) - return - -def writeVersionInfo(cfg, log): - """Write a version string to a file""" - - verFile = os.path.join(cfg.controlDir, sos_classes.Consts().versionFile) - rc = subprocess.getstatusoutput("idlspec2d_version") - f = open(verFile, "w") - f.write(time.ctime() + " " + rc[1] + "\n") - f.close() - log.info("Version is %s" % rc[1]) - log.info("IDLSPEC2D Module is %s" % os.getenv('IDLSPEC2D_VER')) - -#### -def getPlugMap(file, cfg, log): - """ - Returns the fully qualified name of the plugmap file - """ - - speclogDir = cfg.plugDir - - - try: - obs = os.environ['OBSERVATORY'].lower() - except: - log.critical('Not running at APO or LCO, set OBS environmental variable to run') - return "" - plugmapDir = os.path.join(speclogDir, obs, 'summary_files') - - # Get plugmap used by file - try: - plugmapFullId = sxpar.sxparRetry(file, "CONFID", retries = 5)[0] - except TypeError as t: - log.critical("\nCould not parse " + file + "\n ->" + str(t)) - return "" - except IndexError: - log.critical("\nKeyword CONFID not found in " + file) - return "" - try: - if int(plugmapFullId) == -999: - plugmapFullId = '0' - except: - plugmapFullId = '0' -# try: -# plugmapDir = os.path.join(plugmapDir, str(int(np.floor(int(plugmapFullId)/100))).zfill(4)+'XX') -# except: -# plugmapDir = os.path.join(plugmapDir, str(int(np.floor(int(0)))).zfill(4)+'XX') - try: - plugmapDir = os.path.join(plugmapDir, str(int(np.floor(int(plugmapFullId)/1000))).zfill(3)+'XXX', - str(int(np.floor(int(plugmapFullId)/100))).zfill(4)+'XX') - except: - plugmapDir = os.path.join(plugmapDir, str(int(np.floor(int(0)/1000))).zfill(3)+'XXX', - str(int(np.floor(int(0)/100))).zfill(4)+'XX') - log.info("Current confSummary directory is " + plugmapDir) - - # Parse plugmap name - plugmapName = "confSummaryF-" + plugmapFullId + ".par" - plugParse = plugmapFullId.split("-") - plugmapId = plugmapFullId #plugParse[1] - log.debug(file + " uses confSummaryF " + plugmapFullId + " with Id " + plugmapId) - log.debug(" full name of confSummaryF file is " + plugmapName) - log.debug("confId=" + plugmapId)# + ", pMJD=" + plugmapMJD) - - # Check if the file exists, if not get it and add it to svn - plugpath = os.path.join(plugmapDir, plugmapName) - if os.path.isfile(plugpath): - log.info("Found existing confSummaryF file: " + plugpath) - else: - plugmapName = "confSummary-" + plugmapFullId + ".par" - plugParse = plugmapFullId.split("-") - plugmapId = plugmapFullId #plugParse[1] - log.info("No confSummaryF file: " + plugpath) - log.debug(file + " uses confSummary " + plugmapFullId + " with Id " + plugmapId) - log.debug(" full name of confSummary file is " + plugmapName) - log.debug("confId=" + plugmapId)# + ", pMJD=" + plugmapMJD) - - plugpath = os.path.join(plugmapDir, plugmapName) - - if os.path.isfile(plugpath): - log.info("Found existing confSummary file: " + plugpath) - else: log.critical("Could not get confSummary for Id " + plugmapId) - return os.path.abspath(plugpath) - -def initializePollWorkers(workers, cfg, log): - """Initialize poll workers with latest file counts""" - - for worker in workers: - worker.fileCount = len(glob.glob(os.path.join(cfg.fitsDir, cfg.MJD, worker.glob))) - log.debug("\nInitialized PollWorker:\n" + str(worker)) - -def initializeMJD(cfg, log): - """Find the correct MJD to start looking for new files. If the user specifies an MJD just test - to see if it exists, otherwise, use the latest MJD.""" - - # First check for user specified - if cfg.MJD != "0": - path = os.path.join(cfg.fitsDir, cfg.MJD) - if not os.path.isdir(path): - log.critical("Could not find user specified MJD path: " + path) - log.critical("GOODBYE!") - log.info("Using user specified MJD " + path) - else: - regex = sos_classes.Consts().MJDGlob; - try: - log.debug("Looking for initial MJD in " + cfg.fitsDir) - cfg.MJD = ls(cfg.fitsDir, regex)[-1][-5:] - log.info("Latest initial MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) - except: - log.critical("Could not find the latest MJD path: " + cfg.fitsDir) - log.critical("GOODBYE!") - -def createPollWorkers(cfg, log): - """Create poll workers""" - - workers = [] - - num = 1 - for glob in cfg.globs: - p = sos_classes.PollWorker() - p.glob = glob - p.workerNumber = num - num += 1 - workers.append(p) - log.debug("\nnew PollWorker:\n" + str(p)) - - return workers - - -def initializeLogger(cfg): - """Startup logging and set the level""" - - lname = os.path.join(cfg.logDir, sos_classes.Consts().logName) - if cfg.iname != "": - lname += "-" + cfg.iname - print("Starting to log to " + lname) - - log = logging.getLogger(sos_classes.Consts().logName) - h = logging.handlers.TimedRotatingFileHandler(lname, 'midnight', 1, 5) - hc = logging.handlers.TimedRotatingFileHandler(lname + "-error", 'midnight', 1, 5) - f = logging.Formatter("%(asctime)s-%(levelname)s: %(message)s") - h.setFormatter(f) - hc.setFormatter(f) - h.setLevel(cfg.logLevel) - hc.setLevel(logging.ERROR) - log.setLevel(cfg.logLevel) - log.addHandler(h) - log.addHandler(hc) - - log.info("Hello. " + sys.argv[0] + " started.") - log.info("Startup Configuration is: \n\n" + str(cfg) + "\n\n") - - return log - -def closeLogger(log): - handlers = log.handlers[:] - for handler in handlers: - log.removeHandler(handler) - handler.close() - -def ls(dir, regex="*"): - """return a name sorted list of files in dir""" - - files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] - files.sort() - - return files - -def lsltr(dir, regex="*"): - """return a modification-time sorted list of files in dir""" - - files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] - files.sort(key=lambda tm: os.path.getmtime(tm)) - files1 = [f for f in files if len(f.split('.'))==3] - - return files1 - - -def redo(workers, cfg, log): - """Redo the command for files in the specified MJD""" - - # Get files - for worker in workers: - files = lsltr(os.path.join(cfg.fitsDir, cfg.MJD), worker.glob) - if cfg.exposure != None: - allfiles = files - files = [] - # should only be one, but I do it this way to be sure things are working. - # also, I do the numeric check to avoid worrying about leading zeroes. - for file in allfiles: - log.info("Checking exposure number of: " + file) - exp = re.search("sdR\-..-(\d{8})\.fit.*$", file) - if exp != None: - if int(exp.group(1)) == int(cfg.exposure): - log.info("correct exposure number") - files.append(file) - new = len(files) - log.info("Found " + str(new) + " files in " + - os.path.join(cfg.fitsDir, cfg.MJD, worker.glob)) - processNewBOSSFiles(worker, files, cfg, log) - - -def runner(pollWorkers, config, log): - """ - Run the check for fits files and processes it - """ - # Create poll workers and initialize file counts - initializePollWorkers(pollWorkers, config, logger) - # Watch for new files. Forever... Unless there are exceptions. Then - # try up to 3 times to get it working. But mostly... Forever! - crashes = 3 - while crashes > 0: - try: - watch(pollWorkers, config, logger) - except SystemExit: - raise - except: - crashes = crashes - 1 - if crashes > 0: - logger.exception("!!! Uncaught exception in watch() !!! Will Retry !!!") - else: - logger.exception("!!! TOO MANY Uncaught exceptions in watch() !!!") - raise - - -def lock(cfg, log, file): - """Only one instance of this daemon should be running a file.""" - - lockFile = os.path.join(cfg.controlDir, sos_classes.Consts().lockFileBase) - lockFile += "-" + file - lockFile += ".lock" - - lock = open(lockFile, 'w') - try: - fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB) - except IOError as xxx_todo_changeme: - (errno, errstr) = xxx_todo_changeme.args - log.info("File running with another instance") - return lock - -def unlock(cfg, file, lock): - """Unlocks a locked fits file""" - lockFile = os.path.join(cfg.controlDir, sos_classes.Consts().lockFileBase) - lockFile += "-" + file - lockFile += ".lock" - lock.close() - if os.path.exists(lockFile): - os.remove(filePath) - -def watch(workers, cfg, log): - """ Watch for new files - - When a new file comes in read the header to look for the plugmap and then check to see - if the plugmap file exists. If it doesn't, get the plugmap from the database and put it - into the proper MJD directory. Create the proper MJD directory for the plugmap if needed. - - Next, check to see if a newer MJD has been created. If there are no new files and no new - MJD then sleep for cfg.pollDelay. - - Note that only the latest MJD is ever checked, so once a new MJD is created only that MJD - will be checked. - """ - - while True: - pause = True - # First check for new files - for worker in workers: - files = lsltr(os.path.join(cfg.fitsDir, cfg.MJD), worker.glob) - if len(files) != worker.fileCount: - pause = False - new = len(files) - worker.fileCount - log.info("Found " + str(new) + " new files in " + - os.path.join(cfg.fitsDir, cfg.MJD, worker.glob)) - # File could get deleted... - if new > 0: - #locks=[] - #for file in files[-1 * new:]: - # locks.append(lock(cfg, log, file)) - processNewBOSSFiles(worker, files[-1 * new:], cfg, log) - #for i, file in enumerate(files[-1 * new:]): - # unlock(cfg, file, lock[i]) - worker.fileCount = len(files) - - # Next check for a new MJD. Don't wait if there's a new MJD - if updateMJD(workers, cfg, log): pause = False - - # Pause if asked - if pause: - log.info("Sleeping for " + str(cfg.pollDelay) + " seconds.") - time.sleep(cfg.pollDelay) - - - -def setup(CCD, cfg, exp=None, mjd=None, catchup=False, redoMode=False, systemd=False, - nodb=False, no_gz=False, no_reject=False, clobber_fibermap=False, sdssv_sn2=False): - - """ - Setup runner configuration - """ - globs = [] # fill in the command line globs - verbose = 0 - - - cfg.plugDir=os.getenv('SDSSCORE_DIR') #'/home/sdss5/software/sdsscore/main' - cfg.fitsDir='/data/spectro' - cfg.controlDir='/home/sdss5/boss/sos/control' - verbose = 6 - cfg.logDir='/home/sdss5/boss/sos/logs' - cfg.pollDelay=2 - if no_gz: - cfg.globs=["sdR-"+CCD+"-*.fit.gz","sdR-"+CCD+"-*.fit"] - else: - cfg.globs=["sdR-"+CCD+"-*.fit.gz"] - cfg.fps= 'T' - cfg.nosvn = True - cfg.bookkeep = False - cfg.nocal = 'T' - cfg.iname = CCD - cfg.clobber_fibermap = clobber_fibermap - if systemd: - redoMode=False - catchup=False - exp=None - mjd=None - if redoMode: - cfg.sosdir='/data/boss/sosredo' - cfg.iname = CCD+'_redo' - else: - cfg.sosdir='/data/boss/sos' - if catchup: - cfg.iname = CCD+'_catchup' - if catchup or redoMode: - args.nice=True - cfg.redo=True - else: - cfg.iname = CCD - #for file in glob.glob(os.path.join(cfg.controlDir,'sos_runner*.lock) - # os.remove(file) - cfg.platedb =False - if nodb: - cfg.nodb = 'T' - if no_reject: - cfg.no_reject = 'T' - if sdssv_sn2: - cfg.sdssv_sn2 = 'T' - if exp is not None: - cfg.exposure = str(exp) - cfg.iname = cfg.iname+'_'+str(exp).zfill(8) - if mjd is not None: - cfg.MJD = mjd - cfg.iname = cfg.iname+'_'+str(mjd) - # Any globs override default - if (len(globs) != 0): - cfg.globs = globs - # Don't want to apply -v on each call, so always start with a base - if (verbose > 0): - cfg.logLevel = max(1, sos_classes.Config().logLevel - verbose * 10) - return(cfg) - - -def SOS(CCD, exp=None, mjd=None, catchup=False, redoMode=False,systemd=False, nodb=False, - no_gz=False, no_reject=False, clobber_fibermap=False, sdssv_sn2=False): - """ - The SOS controller for both manual runs and systemd tasks - """ - global logger - for ex in exp: - config = sos_classes.Config(); - config = setup(CCD, config, exp=ex, mjd=mjd, catchup=catchup, - redoMode=redoMode,systemd=systemd,nodb=nodb, - no_gz=no_gz, no_reject=no_reject, - clobber_fibermap = clobber_fibermap, - sdssv_sn2=sdssv_sn2) - logger = initializeLogger(config) - writeVersionInfo(config, logger) - - # Find correct MJD to start on - initializeMJD(config, logger) - # Create poll workers and initialize file counts - pollWorkers = createPollWorkers(config, logger) - if catchup or redoMode: redo(pollWorkers, config, logger) - else: runner(pollWorkers, config, logger) - closeLogger(logger) - -def parseNumList(string): - m = re.match(r'(\d+)(?:-(\d+))?$', string) - # ^ (or use .split('-'). anyway you like.) - if not m: - raise ArgumentTypeError("'" + string + "' is not a range of number. Expected forms like '0-5' or '2'.") - start = m.group(1) - end = m.group(2) or start - return list(range(int(start,10), int(end,10)+1)) +import sys +import os +from multiprocessing import Process +from boss_drp.sos.SOS import SOS +from boss_drp.sos.SOS import parseNumList if __name__ == '__main__' : """ @@ -641,19 +25,38 @@ if __name__ == '__main__' : group = parser.add_mutually_exclusive_group(required=True) group.add_argument('-c', '--catchup', default=False, action='store_true', help='Run Catchup on the night or (MJD)') group.add_argument('-t', '--redoMode', default=False, action='store_true', help='Save outputs of MJD or exposure to sosredo') + group.add_argument('-d', '--test', default=False,action='store_true', help='Save outputs and logs to sosredo/dev') + group.add_argument('--utah', default=False,action='store_true', help=argparse.SUPPRESS) group.add_argument('--systemd', default=False, action='store_true', help=argparse.SUPPRESS) #parser.add_argument('-e', '--exp', type=str, help='exposure id (with or without leading zeros', default=None) parser.add_argument('-e', '--exp', type=parseNumList,help='exposure id (or range of exp id 500-510) (with or without leading zeros)', default=[None]) - parser.add_argument('-m', '--mjd', type=str, help='MJD', default=None) + parser.add_argument('-m', '--mjd', type=str, nargs='*', help='MJD', default=None) + parser.add_argument('--apo', default=False, action='store_true', help=argparse.SUPPRESS) + parser.add_argument('--lco', default=False, action='store_true', help=argparse.SUPPRESS) parser.add_argument('--nodb', default=False, action='store_true', help="skip opsdb load") parser.add_argument('--no_gz', default=False, action='store_true', help="Overrides the requirement for '.gz' compressed files (experimental)") parser.add_argument('--no_reject', default=False, action='store_true', help="Overrides the Calibration rejection (use with caution)") parser.add_argument('--clobber_fibermap', '-f', default=False, action='store_true', help="Clobbers the existing spfibermap files") - parser.add_argument('--no_sdssv_sn2', default=False, action='store_true', help="Skip reporting a second set of SN2 values with updated fit parameters") + parser.add_argument('--no_sdssv_sn2', default=True, action='store_false',dest='sdssv_sn2', + help="Skip reporting a second set of SN2 values with updated fit parameters") + parser.add_argument('--sdssv_sn2', default=True, action='store_true', help=argparse.SUPPRESS) + parser.add_argument('--no_sn2_15', default=True, action='store_false', dest='sn2_15', + help="Skip reporting a set of SN2 values with a fiducial mag of 15") + parser.add_argument('--sn2_15', default=True, action='store_true', help=argparse.SUPPRESS) + + parser.add_argument('-n','--no_arc2trace', default=True, action='store_false', dest='arc2trace', help="Skip Utilizing arc2trace refinements") + parser.add_argument('-a','--arc2trace', default=True, action='store_true', help=argparse.SUPPRESS) + parser.add_argument('-o','--forcea2t', default=False, action='store_true', help="Force arc2trace for all fields (even if flat exists for field)") + parser.add_argument('-v','--verbose', default=False, action='store_true', help="prints the only (or red if joint) active SOS process to terminal") args = parser.parse_args() + if args.apo: + os.environ['OBSERVATORY'] = 'APO' + if args.lco: + os.environ['OBSERVATORY'] = 'LCO' + OBSERVATORY = os.getenv('OBSERVATORY') if OBSERVATORY.upper() == 'APO': blue = 'b1' @@ -666,15 +69,42 @@ if __name__ == '__main__' : elif args.red is True: CCDs = [red] elif args.blue is True: CCDs = [blue] - proc={} - for i, CCD in enumerate(CCDs): - proc[i]=Process(target=SOS, args=(CCD,), - kwargs={"exp":args.exp, "mjd":args.mjd, - "catchup":args.catchup,"redoMode":args.redoMode, - "systemd":args.systemd,'nodb':args.nodb, - 'no_reject':args.no_reject, - 'clobber_fibermap':args.clobber_fibermap, - 'sdssv_sn2':(not args.no_sdssv_sn2)}) - proc[i].start() - for i, CCD in enumerate(CCDs): - proc[i].join() + + if args.mjd is None: + args.mjd = [None] + for mjd in args.mjd: + proc={} + for i, CCD in enumerate(CCDs): + if args.red: + pause = False + verbose = args.verbose + elif args.blue: + pause = False + verbose = args.verbose + elif CCD == red: + pause = True + verbose = True if args.verbose else False + else: + pause = False + verbose = False + + kwrds = {"exp":args.exp, "mjd":mjd, + "catchup":args.catchup,"redoMode":args.redoMode, + "systemd":args.systemd,'nodb':args.nodb, + 'no_reject':args.no_reject, + 'clobber_fibermap':args.clobber_fibermap, + 'sdssv_sn2':(args.sdssv_sn2), + 'sn2_15':(args.sn2_15), + 'arc2trace':(args.arc2trace), + 'forcea2t':args.forcea2t, + 'pause': pause, 'test':args.test, + 'utah':args.utah, 'termverbose':verbose} + if len(CCDs) == 1: + SOS(CCD, **kwrds) + else: + proc[i]=Process(target=SOS, args=(CCD,), + kwargs=kwrds) + proc[i].start() + if len(CCDs) > 1: + for i, CCD in enumerate(CCDs): + proc[i].join() diff --git a/bin/__pycache__/putils.cpython-37.pyc b/bin/__pycache__/putils.cpython-37.pyc deleted file mode 100644 index 7519b4cb4..000000000 Binary files a/bin/__pycache__/putils.cpython-37.pyc and /dev/null differ diff --git a/bin/__pycache__/sos_classes.cpython-37.pyc b/bin/__pycache__/sos_classes.cpython-37.pyc deleted file mode 100644 index 95ccea86c..000000000 Binary files a/bin/__pycache__/sos_classes.cpython-37.pyc and /dev/null differ diff --git a/bin/__pycache__/sos_runnerd.cpython-37.pyc b/bin/__pycache__/sos_runnerd.cpython-37.pyc deleted file mode 100644 index 7e2f6971c..000000000 Binary files a/bin/__pycache__/sos_runnerd.cpython-37.pyc and /dev/null differ diff --git a/bin/__pycache__/sxpar.cpython-37.pyc b/bin/__pycache__/sxpar.cpython-37.pyc deleted file mode 100644 index bbd24afec..000000000 Binary files a/bin/__pycache__/sxpar.cpython-37.pyc and /dev/null differ diff --git a/bin/__pycache__/yanny.cpython-37.pyc b/bin/__pycache__/yanny.cpython-37.pyc deleted file mode 100644 index 1a609011b..000000000 Binary files a/bin/__pycache__/yanny.cpython-37.pyc and /dev/null differ diff --git a/bin/boss_arcs_to_traces b/bin/boss_arcs_to_traces index 7d4e7e8d5..9465abbe8 100755 --- a/bin/boss_arcs_to_traces +++ b/bin/boss_arcs_to_traces @@ -1,29 +1,84 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 +from boss_drp.sos.arc_to_trace_soshtml import soshtml +from boss_drp.sos.report_err import report +from boss_drp.utils.grep import grep +from boss_drp.sos.arc2tracelogger import Logger +from boss_drp.utils.hash import create_hash + +from pyvista import boss + import argparse -import numpy as np import matplotlib import numpy as np -import copy +import traceback import os -import pdb -import matplotlib.pyplot as plt - -from pyvista import boss +import os.path as ptt +import sys +import time if __name__ == "__main__": descr = "Routine to transfer trace locations from an initial arc/flat pair given subsequent arc frames only" - parser = argparse.ArgumentParser(description=descr, - usage="boss_arcs MJD") + parser = argparse.ArgumentParser(description=descr, usage="boss_arcs_to_traces MJD") parser.add_argument("--mjd", type=int, help="MJD to process",required=True) parser.add_argument("--outdir", type=str, help="output directory") parser.add_argument("--obs", type=str, help="observatory (lco|apo)",default='lco') parser.add_argument("--vers", type=str, help="BOSS_SPECTRO_REDUX version",default='master') parser.add_argument("--threads", type=int, help="number of threads",default=8) parser.add_argument("--nskip", type=int, help="use every nskip line",default=40) - parser.add_argument("--clobber", action="store_true", - required=False, help="clobber?") + parser.add_argument("--cams", type=str, help="Supply the camera for operation with SOS files", default=None) + parser.add_argument("--fitsname", type=str, help="Supply the FitsName for SOS error reporting", default=None) + parser.add_argument("--sosdir", type=str, help="Base SOS output directory", default=None) + parser.add_argument("--clobber", action="store_true", required=False, help="clobber?") + parser.add_argument('--no_hash', default=False, action='store_true', help='Skip updating the file hash') args = parser.parse_args() - + + if args.vers.lower() == 'sos': + args.vers = '' + sos = True + if args.sosdir is not None: + os.environ["BOSS_SPECTRO_REDUX"] = ptt.join(f'{args.sosdir}',f'{args.mjd}') + else: + sos = False + matplotlib.use('Agg') - boss.arc_transform(args.mjd, obs=args.obs, clobber=args.clobber, threads=args.threads, - outdir=args.outdir, vers=args.vers) + if not sos: + try: + boss.arc_transform(args.mjd, obs=args.obs, clobber=args.clobber, threads=args.threads, + outdir=args.outdir, vers=args.vers, cams=args.cams) + except Exception as e: + print(type(e).__name__, ":", e) + exit() + print(f'Successful completion of boss_arcs_to_trace for mjd {args.mjd} obs {args.obs} at {time.ctime()}') + else: + logfile = ptt.splitext(ptt.splitext(ptt.basename(args.fitsname))[0])[0]+'.log' + logfile = logfile.replace('sdR', 'spTraceTab') + logfile = ptt.join(f'{args.sosdir}',f'{args.mjd}','trace',f'{args.mjd}',logfile) + log = Logger(logfile) + log.start(cmd = sys.argv) + cmd = sys.argv + cmd[0] = ptt.basename(cmd[0]) + try: + boss.arc_transform(args.mjd, obs=args.obs, clobber=args.clobber, threads=args.threads, + outdir=args.outdir, vers=args.vers, cams=args.cams) + except Exception as e: + print(type(e).__name__, ":", e) + + fitsname_base = ptt.splitext(ptt.splitext(ptt.basename(args.fitsname))[0])[0] + log.stop() + log.start() + try: + if grep(logfile, f'error with {fitsname_base}'): + message = f"BOSS_ARCS_TO_TRACES: {args.fitsname}: ABORT: Failure in Fitting Arc to Traces (Please retake calibrations for this field)" + print(message) + report(args.fitsname, args.cams, args.obs, args.mjd, message) + + soshtml(args.mjd, args.obs, args.sosdir) + except Exception as e: + print(type(e).__name__, ":", e) + log.stop() + if not args.no_hash: + test = create_hash(ptt.join(args.sosdir,str(args.mjd))) + if test: + print("\nsha1sum is locked") + sys.exit(0) + diff --git a/bin/build_combined_html b/bin/build_combined_html new file mode 100755 index 000000000..3fc3c4734 --- /dev/null +++ b/bin/build_combined_html @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 + +from boss_drp.sos.build_combined_html import build_combine_html +import argparse + + +if __name__ == '__main__': + """ + Build sos/combined/index.html + """ + parser = argparse.ArgumentParser(description="build SOS combine index page") + parser.add_argument("sosdir", type=str, help="Base SOS output directory", default='/data/boss/sos') + parser.add_argument("--force", help="Force update", action='store_true') + args = parser.parse_args() + + build_combine_html(args.sosdir, force=args.force) diff --git a/bin/build_combined_html.py b/bin/build_combined_html.py deleted file mode 100755 index ebb97dfa7..000000000 --- a/bin/build_combined_html.py +++ /dev/null @@ -1,42 +0,0 @@ -#!/usr/bin/env python3 -from glob import glob -import os.path as ptt -from os import rename -import time -def get_mjd(html): - filename = ptt.splitext(ptt.basename(html))[0] - int_part = filename.split('-')[1] - return(int(int_part)) - -def build_combine_html(): - directory = '/data/boss/sos/combined/' - if ptt.exists(ptt.join(directory,'index.html')): - file_time = ptt.getmtime(ptt.join(directory,'index.html')) - if time.time()-file_time < 3600*15: - print('No update required') - return - with open(ptt.join(directory,'index.html.tmp'), 'w') as f: - f.write('\n') - f.write(' \n') - f.write(' BOSS Spectro Analysis\n') - f.write(' \n') - f.write(' \n') - f.write(' \n') - f.write(' \n') - f.write(' \n') - f.write('

BOSS Spectro Analysis

\n') - f.write('
\n') - f.write(' \n') - f.write('
  • logfile-current.html
  • \n') - for html in sorted(glob(ptt.join(directory,'logfile-?????.html')),key=get_mjd,reverse=True): - f.write('
  • '+ptt.basename(html)+'
  • \n') - - f.write(' \n') - f.write(' \n') - f.write('\n') - rename(ptt.join(directory,'index.html.tmp'), ptt.join(directory,'index.html')) -if __name__ == '__main__': - """ - Build sos/combined/index.html - """ - build_combine_html() diff --git a/bin/catalogdb_ev b/bin/catalogdb_ev deleted file mode 100755 index f4c3d86e1..000000000 --- a/bin/catalogdb_ev +++ /dev/null @@ -1,23 +0,0 @@ -#!/usr/bin/env python -import sys -import numpy as np -import warnings -warnings.filterwarnings("ignore") -catid=np.long(sys.argv[1]) -#from sdssdb.peewee.sdss5db import catalogdb -#print(catalogdb.database.set_profile('operations')) -from sdssdb.peewee.sdss5db.catalogdb import database -database.set_profile('operations') -try: - from sdssdb.peewee.sdss5db.catalogdb import CatalogToAllWise, AllWise - from sdssdb.peewee.sdss5db.catalogdb import CatalogToGLIMPSE, TwoMassPSC - wise_best=AllWise.select().join(CatalogToAllWise).where(CatalogToAllWise.catalogid == catid).where(AllWise.designation == CatalogToAllWise.target.designation)#.switch(AllWise).join(TwoMassPSC) - #glipse_best=GLIMPSE.select().join(CatalogToGLIMPSE).where(CatalogToGLIMPSE.catalogid == catid).where(GLIMPSE.designation == CatalogToGLIMPSE.target.designation)#.switch(GLIMPSE).join(TwoMassPSC) - #tmass_best=TwoMassPSC.select().where(TwoMassPSC.designation == glipse_best[0].tmass_designation) - if len(wise_best) > 0: - EB=0.918 * (float(wise_best[0].h_m_2mass)-float(wise_best[0].w2mpro) - 0.05)/0.302 - else: - EB=-100. -except: - EB=-100. -print(EB) diff --git a/bin/catalogdb_photo b/bin/catalogdb_photo deleted file mode 100755 index 359a9e75d..000000000 --- a/bin/catalogdb_photo +++ /dev/null @@ -1,91 +0,0 @@ -#!/usr/bin/env python -import sys -import numpy as np -import warnings -warnings.filterwarnings("ignore") -ra=np.float(sys.argv[1]) -dec=np.float(sys.argv[2]) -#from sdssdb.peewee.sdss5db import catalogdb -#print(catalogdb.database.set_profile('operations')) -from sdssdb.peewee.sdss5db.catalogdb import database -database.set_profile('operations') -try: - from sdssdb.peewee.sdss5db.catalogdb import AllWise - wise_best=AllWise.select(AllWise.ra,AllWise.dec,AllWise.w1mpro,AllWise.w2mpro,AllWise.w3mpro,AllWise.w4mpro,AllWise.j_m_2mass,AllWise.h_m_2mass,AllWise.k_m_2mass) - tp=wise_best.where(AllWise.cone_search(ra, dec, 2.0/3600.0)) - if len(tp) > 0: - w1mpro=float(tp[0].w1mpro) - w2mpro=float(tp[0].w2mpro) - w3mpro=float(tp[0].w3mpro) - w4mpro=float(tp[0].w4mpro) - try: - j2mass=float(tp[0].j_m_2mass) - h2mass=float(tp[0].h_m_2mass) - k2mass=float(tp[0].k_m_2mass) - except: - j2mass=-100. - h2mass=-100. - k2mass=-100. - else: - w1mpro=-100. - w2mpro=-100. - w3mpro=-100. - w4mpro=-100. - j2mass=-100. - h2mass=-100. - k2mass=-100. -except: - w1mpro=-100. - w2mpro=-100. - w3mpro=-100. - w4mpro=-100. - j2mass=-100. - h2mass=-100. - k2mass=-100. -#try: -# from sdssdb.peewee.sdss5db.catalogdb import TwoMassPSC, Gaia_DR2, GUVCat -# twomass_best=TwoMassPSC.select(TwoMassPSC.ra,TwoMassPSC.decl,TwoMassPSC.j_m,TwoMassPSC.h_m,TwoMassPSC.k_m) -# tp=twomass_best.where(TwoMassPSC.cone_search(ra, dec, 2.0/3600.0,dec_col='decl')) -# if len(tp) > 0: -# j2mass=float(tp[0].j_m) -# h2mass=float(tp[0].h_m) -# k2mass=float(tp[0].k_m) -# else: -# j2mass=-100. -# h2mass=-100. -# k2mass=-100. -#except: -# j2mass=-100. -# h2mass=-100. -# k2mass=-100. -try: - from sdssdb.peewee.sdss5db.catalogdb import Gaia_DR2 - gaia_best=Gaia_DR2.select(Gaia_DR2.ra,Gaia_DR2.dec,Gaia_DR2.parallax,Gaia_DR2.pmra,Gaia_DR2.pmdec) - tp=gaia_best.where(Gaia_DR2.cone_search(ra, dec, 2.0/3600.0)) - if len(tp) > 0: - parallax=float(tp[0].parallax) - pmra=float(tp[0].pmra) - pmdec=float(tp[0].pmdec) - else: - parallax=-100. - pmra=-100. - pmdec=-100. -except: - parallax=-100. - pmra=-100. - pmdec=-100. -try: - from sdssdb.peewee.sdss5db.catalogdb import GUVCat - guvcat_best=GUVCat.select(GUVCat.ra,GUVCat.dec,GUVCat.fuv_mag,GUVCat.nuv_mag) - tp=guvcat_best.where(GUVCat.cone_search(ra, dec, 2.0/3600.0)) - if len(tp) > 0: - fuv=float(tp[0].fuv_mag) - nuv=float(tp[0].nuv_mag) - else: - fuv=-100. - nuv=-100. -except: - fuv=-100. - nuv=-100. - -print(w1mpro,w2mpro,w3mpro,w4mpro,j2mass,h2mass,k2mass,fuv,nuv,parallax,pmra,pmdec) diff --git a/bin/catalogdb_photo_file b/bin/catalogdb_photo_file deleted file mode 100755 index f3bda0aa6..000000000 --- a/bin/catalogdb_photo_file +++ /dev/null @@ -1,103 +0,0 @@ -#!/usr/bin/env python -import sys -import numpy as np -import warnings -warnings.filterwarnings("ignore") -infile = sys.argv[1] -#ra=np.float(sys.argv[1]) -#dec=np.float(sys.argv[2]) -#from sdssdb.peewee.sdss5db import catalogdb -#print(catalogdb.database.set_profile('operations')) -from sdssdb.peewee.sdss5db.catalogdb import database -database.set_profile('operations') - -from sdssdb.peewee.sdss5db.catalogdb import AllWise -wise_best=AllWise.select(AllWise.ra,AllWise.dec,AllWise.w1mpro,AllWise.w2mpro,AllWise.w3mpro,AllWise.w4mpro,AllWise.j_m_2mass,AllWise.h_m_2mass,AllWise.k_m_2mass) -from sdssdb.peewee.sdss5db.catalogdb import Gaia_DR2 -gaia_best=Gaia_DR2.select(Gaia_DR2.ra,Gaia_DR2.dec,Gaia_DR2.parallax,Gaia_DR2.pmra,Gaia_DR2.pmdec) -from sdssdb.peewee.sdss5db.catalogdb import GUVCat -guvcat_best=GUVCat.select(GUVCat.ra,GUVCat.dec,GUVCat.fuv_mag,GUVCat.nuv_mag) - -ras=[81.809271]*5 -decs=[-2.1386296]*5 - -fp=open(infile) - -lines = fp.readlines() -for line in lines : - ra=line.split()[0] - dec=line.split()[1] - try: - tp=wise_best.where(AllWise.cone_search(ra, dec, 2.0/3600.0)) - if len(tp) > 0: - w1mpro=float(tp[0].w1mpro) - w2mpro=float(tp[0].w2mpro) - w3mpro=float(tp[0].w3mpro) - w4mpro=float(tp[0].w4mpro) - try: - j2mass=float(tp[0].j_m_2mass) - h2mass=float(tp[0].h_m_2mass) - k2mass=float(tp[0].k_m_2mass) - except: - j2mass=-100. - h2mass=-100. - k2mass=-100. - else: - w1mpro=-100. - w2mpro=-100. - w3mpro=-100. - w4mpro=-100. - j2mass=-100. - h2mass=-100. - k2mass=-100. - except: - w1mpro=-100. - w2mpro=-100. - w3mpro=-100. - w4mpro=-100. - j2mass=-100. - h2mass=-100. - k2mass=-100. -#try: -# from sdssdb.peewee.sdss5db.catalogdb import TwoMassPSC, Gaia_DR2, GUVCat -# twomass_best=TwoMassPSC.select(TwoMassPSC.ra,TwoMassPSC.decl,TwoMassPSC.j_m,TwoMassPSC.h_m,TwoMassPSC.k_m) -# tp=twomass_best.where(TwoMassPSC.cone_search(ra, dec, 2.0/3600.0,dec_col='decl')) -# if len(tp) > 0: -# j2mass=float(tp[0].j_m) -# h2mass=float(tp[0].h_m) -# k2mass=float(tp[0].k_m) -# else: -# j2mass=-100. -# h2mass=-100. -# k2mass=-100. -#except: -# j2mass=-100. -# h2mass=-100. -# k2mass=-100. - try: - tp=gaia_best.where(Gaia_DR2.cone_search(ra, dec, 2.0/3600.0)) - if len(tp) > 0: - parallax=float(tp[0].parallax) - pmra=float(tp[0].pmra) - pmdec=float(tp[0].pmdec) - else: - parallax=-100. - pmra=-100. - pmdec=-100. - except: - parallax=-100. - pmra=-100. - pmdec=-100. - try: - tp=guvcat_best.where(GUVCat.cone_search(ra, dec, 2.0/3600.0)) - if len(tp) > 0: - fuv=float(tp[0].fuv_mag) - nuv=float(tp[0].nuv_mag) - else: - fuv=-100. - nuv=-100. - except: - fuv=-100. - nuv=-100. - - print(w1mpro,w2mpro,w3mpro,w4mpro,j2mass,h2mass,k2mass,fuv,nuv,parallax,pmra,pmdec) diff --git a/bin/clean_run b/bin/clean_run new file mode 100755 index 000000000..df015fa4d --- /dev/null +++ b/bin/clean_run @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 + +from boss_drp.utils.clean import clean_fmjd +from boss_drp.field import field_to_string + +import argparse +import sys +import os.path as ptt +from os import getenv +from tqdm import tqdm + +if __name__ == '__main__' : + parser = argparse.ArgumentParser( + prog=ptt.basename(sys.argv[0]), + description='Clean BOSS DRP Run') + parser.add_argument('--clean_type','--clean', required=True, + choices=['all','spec2d','comb','spec1d','post', + 'merge','reformat','spcalib'], + help='Pipeline Step to start the cleaning') + parser.add_argument('--topdir', type=str, help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX', + default = getenv('BOSS_SPECTRO_REDUX')) + parser.add_argument('--run1d', type=str, help='Optional override value for the enviro variable $RUN1D', + default=getenv('RUN1D')) + parser.add_argument('--run2d', type=str, help='Optional override value for the enviro variable $RUN2D', + default=getenv('RUN2D')) + parser.add_argument('--epoch', action='store_true', help='Clean up epoch run') + parser.add_argument('--reset', action='store_true', help='if clean_type == all, then remove plans and redux') + parser.add_argument('--remove_redux', action='store_true', help='if clean_type == all, then remove redux') + parser.add_argument('--dry', action='store_true', help='Print Files to be removed rather then remove') + parser.add_argument('--verbose', action='store_true', help='Print Files paths (with wildcards) to be removed') + parser.add_argument('--field', '-f', type=str,default = field_to_string('*'), help='Run for a single Field') + parser.add_argument('--mjd', '-m', type=str,default = '?????', help='Run for a single MJD') + parser.add_argument('--fmjd', nargs='*', help='List of Field-MJDs to clean', default=None) + + args = parser.parse_args() + + if args.fmjd is None: + args.fmjd = [f'{args.field}-{args.mjd}'] + for fmjd in tqdm(args.fmjd, leave=False, disable=args.verbose): + clean_fmjd(args.topdir, args.run2d, args.run1d, fmjd.split('-')[0],fmjd.split('-')[1], + epoch=args.epoch, dry=args.dry, clean_type=args.clean_type, reset=args.reset, + remove_redux = args.remove_redux, verbose = args.verbose ) diff --git a/bin/copy_spPlan.py b/bin/copy_spPlan.py deleted file mode 100755 index 97b799c06..000000000 --- a/bin/copy_spPlan.py +++ /dev/null @@ -1,147 +0,0 @@ -#!/usr/bin/env python - -""" -Utility script to copy the spPlan* files from one production to another -while updating the RUN2D entries appropriately. - -Stephen Bailey, LBL -Fall 2012 -""" - -import sys -import os -import os.path -import random -from glob import glob -import pyfits - -#- copy spPlan file while updating the RUN2D entry -def copyplan(inplan, outplan, run2d): - finput = open(inplan) - foutput = open(outplan, 'w') - for line in finput: - if line.startswith('RUN2D'): - xx = line.split(None, 2) #- RUN2D VER [# Comment] - xx[1] = run2d #- replace RUN2D - line = " ".join(xx) + '\n' #- put back together with newline - - foutput.write(line) - - finput.close() - foutput.close() - -#------------------------------------------------------------------------- -import optparse -parser = optparse.OptionParser(usage = "%prog [options]", -description="""Copy spPlan files from one redux version to another while replacing RUN2D. -""") -parser.add_option("-i", "--input", type="string", help="input directory [default $BOSS_SPECTRO_REDUX/$RUN2D/]") -parser.add_option("-o", "--output", type="string", help="output directory") -parser.add_option("--run2d", type="string", help="output RUN2D version") -parser.add_option("--minmjd", type="int", help="min MJD to include", default=0) -parser.add_option("--maxmjd", type="int", help="max MJD to include", default=100000) -parser.add_option("-n", "--numplates", type="int", help="number of plates to copy [default all good ones]") -parser.add_option("-R", "--randseed", type="int", default=0, help="random seed [default 0]") -### parser.add_option("--run1d", type="string", help="output RUN1D version") -parser.add_option("-b", "--bad", help="also copy bad quality plans, not just good ones", action="store_true") -parser.add_option("-p", "--platelist", help="override platelist location [default input/platelist.fits]") -parser.add_option("--platestart", type="int", default=None, help="Start of range of plates.") -parser.add_option("--plateend", type="int", default=None, help="End of range of plates.") -opts, args = parser.parse_args() - -#- Set random seed so that results are reproducible -random.seed(opts.randseed) - -#- Default input directory $BOSS_SPECTRO_REDUX/$RUN2D/ -if opts.input is None: - opts.input = os.environ['BOSS_SPECTRO_REDUX'] + "/" + os.environ['RUN2D'] - -#- required options -if opts.output is None: - print >> sys.stderr, 'ERROR: you must specify -o/--output directory' - print >> sys.stderr, 'To see all options, run copy_spPlan.py -h' - sys.exit(1) - -#- choose run2d based upon output name if needed -if opts.run2d is None: - opts.run2d = os.path.basename(opts.output) - if opts.run2d in (None, '', '.'): - opts.run2d = os.path.basename(os.path.dirname(opts.output)) - if opts.run2d in (None, '', '.'): - print "ERROR: Unable to derive RUN2D from path", opts.output - print "ERROR: use --run2d instead" - sys.exit(2) - - print "Using RUN2D="+opts.run2d - -#- Create output directory if needed -if not os.path.isdir(opts.output): - os.makedirs(opts.output) - -#- Find platelist file -if opts.platelist is None: - opts.platelist = opts.input + '/platelist.fits' - print opts.platelist -if not os.path.exists(opts.platelist): - print >> sys.stderr, "ERROR: if no platelist.fits in input dir, you must specify a platelist" - sys.exit(1) - -#- Create set of plates with at least one good plugging within the -#- desired MJD range and platerange -p = pyfits.getdata(opts.platelist, 1) -goodplates = set() -for plate, mjd, quality in zip(p['PLATE'], p['MJD'], p['PLATEQUALITY']): - if (quality.strip() == 'good' or opts.bad): - if opts.minmjd <= mjd <= opts.maxmjd: - if opts.platestart is not None: - if opts.plateend is not None: - if opts.platestart <= plate <= opts.plateend: - goodplates.add(plate) - else: - if opts.platestart <= plate: - goodplates.add(plate) - elif opts.plateend is not None: - if plate <= opts.plateend: - goodplates.add(plate) - else: - goodplates.add(plate) - -#- Randomly subsample -if opts.numplates is not None: - goodplates = set( random.sample(goodplates, opts.numplates) ) - -#- Make matching list of good pluggings for those plates -goodplugs = set() -for plate, mjd, quality in zip(p['PLATE'], p['MJD'], p['PLATEQUALITY']): - if plate in goodplates and (quality.strip() == 'good' or opts.bad): - goodplugs.add( (plate, mjd) ) - -#- Loop over plates, copying the plan files -ncopied = 0 -for plate in sorted(goodplates): - platedir = os.path.join(opts.input, str(plate)) - print '\rPlate', plate, - sys.stdout.flush() - - #- Copy all the plan2d files since they may be needed for the coadd - #- even if they aren't in platelist - plan2dfiles = glob(platedir + '/spPlan2d*.par') - for planfile in plan2dfiles: - outdir = opts.output + "/" + str(plate) - if not os.path.isdir(outdir): - os.makedirs(outdir) - - outplan = outdir + '/' + os.path.basename(planfile) - copyplan(planfile, outplan, opts.run2d) - - #- Copy only the good plate-mjd plancomb files - plancombfiles = glob(platedir + '/spPlancomb*.par') - for planfile in plancombfiles: - mjd = int(os.path.basename(planfile).split('-')[2][0:5]) - if (plate, mjd) in goodplugs: - outplan = outdir + '/' + os.path.basename(planfile) - copyplan(planfile, outplan, opts.run2d) - -#- final blank line print to get CR since we were being fancy with '\r...' -print - diff --git a/bin/cronplot_QA.bash b/bin/cronplot_QA.bash new file mode 100755 index 000000000..7be0e9020 --- /dev/null +++ b/bin/cronplot_QA.bash @@ -0,0 +1,92 @@ +#!/usr/bin/env bash +# +# cronplot_QA.bash +# +# Designed to load the correct module and execute the QA plotting script +# +# usage: cronplot_QA.bash module [options] +# +# Created by Sean Morrison on 13 Aug 2024 + +function usage { + local execName=$(basename "$0") + cat <&2 +Usage: $execName module [options] + +Description: + Load the correct module and execute the QA plotting script. + +Options: + -l Use LCO observations (default is APO). + -c Include the --clobber_lists option. + -n Disable linking (default is False). + -e Include the --epoch option. + -w Generate HTML output (default is False). + -h Display this help message and exit. + +Example: + $execName myModule -l -c -n -e -w "test.html" + +EOF + exit 1 +} + +if [ $# -lt 1 ]; then + usage +fi + +mod="$1" +shift + +if [[ $mod == '-h' ]]; then + usage +fi + +lco="" +tests="-t False" +obs='APO' +clobber='' +nolink='F' +epoch='' +html='' +html_name='' +while getopts lcnewhu: flag; do + case "${flag}" in + l) + lco="--lco" + obs='LCO' + ;; + c) clobber='--clobber_lists' ;; + n) nolink='T' ;; + e) epoch="--epoch" ;; + w) html="T" ;; + u) html_name="--html_name ${OPTARG}" ;; + h) usage ;; + *) usage ;; # Catch invalid options + esac +done + +# Load the specified module +module purge +module load "$mod" +module list + +# Check if BOSS_QA_DIR is set +if [ -z "$BOSS_QA_DIR" ]; then + echo "BOSS_QA_DIR is not set or is empty. Exiting." + exit 1 +fi + +# Run the plot QA script +plot_qa --run2d "$RUN2D" $tests $lco $clobber $epoch --cron + +# Handle linking and HTML output +if [[ $html == 'T' ]]; then + plot_qa --run2d "$RUN2D" $tests $lco $clobber $epoch --cron --html $html_name +fi +if [[ $nolink == 'F' ]]; then + rm -f "${BOSS_QA_DIR}/QA_$obs.png" + ln -s "${BOSS_SPECTRO_REDUX}/$RUN2D/spCalib_QA-$RUN2D-$obs.png" "${BOSS_QA_DIR}/QA_$obs.png" + rm -f "${BOSS_QA_DIR}/SN2_$obs.png" + ln -s "${BOSS_SPECTRO_REDUX}/$RUN2D/SN2-$RUN2D-$obs.png" "${BOSS_QA_DIR}/SN2_$obs.png" +fi diff --git a/bin/cronrun.bash b/bin/cronrun.bash new file mode 100755 index 000000000..87c8f3b1d --- /dev/null +++ b/bin/cronrun.bash @@ -0,0 +1,54 @@ +#!/usr/bin/env bash + +# cronrun.bash +# +# Designed to load the correct module and execute the daily commands +# +# usage: cronrun.bash module "script" +# +# Created by Sean Morrison on 2/20/24. + +function usage { + local execName=$(basename $0) + ( + echo "usage: $execName module 'script'" + echo " " + ) >&2 + exit 1 +} + +# Check for the -h flag +while getopts "h" flag; do + case "$flag" in + h) usage ;; + esac +done + +# Extract the module and script from the arguments +ARG1=${@:$OPTIND:1} +ARG2=${@:$OPTIND+1:1} + +# Ensure both arguments are provided +if [ -z "$ARG1" ] || [ -z "$ARG2" ]; then + usage +fi + +# Load the specified module and execute the script +module purge +module load "$ARG1" +module list + + +# Run the command and capture its output +JDATE=$(jdate) +# Check if the output is empty +if [ -z "$JDATE" ]; then + # Set to default value if no output is found + JDATE="0" +fi + +export JDATE="$JDATE" + + +export MODULE="$ARG1" +eval "$ARG2" diff --git a/bin/daily_log b/bin/daily_log new file mode 100755 index 000000000..b06d0c033 --- /dev/null +++ b/bin/daily_log @@ -0,0 +1,122 @@ +#!/usr/bin/env python3 + +from boss_drp.utils.daily_log import (daily_log_email, daily_log_to_file, + daily_log_index) +from boss_drp.utils import jdate +from boss_drp.field import field_dir +from boss_drp import daily_dir +import argparse +import glob +import os +import os.path as ptt + +jdate = jdate.astype(int) + +if __name__ == '__main__' : + """ + Build Daily Status emails/htmls + """ + parser = argparse.ArgumentParser( description='Build/load BOSS Pipeline Status Pages') + + + parser.add_argument('--obs', type=str, help='Observatory for status update', + nargs='+', default=['apo','lco']) + parser.add_argument('--mjd', type=int, help = 'Update these MJDs', nargs='*') + parser.add_argument('--mjdstart', type=int, help = 'Starting MJD') + parser.add_argument('--mjdend', type=int, help = 'Ending MJD') + parser.add_argument('--epoch', action='store_true', help = 'Run for epoch Coadds') + parser.add_argument('--custom', type=str, help='Name of custom Coadd', default=None) + + parser.add_argument('--topdir', type=str, default = os.getenv('BOSS_SPECTRO_REDUX'), + help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX') + parser.add_argument('--run1d', type=str, default = os.getenv('RUN1D'), + help='Optional override value for the enviro variable $RUN1D') + parser.add_argument('--run2d', type=str, default = os.getenv('RUN2D'), + help='Optional override value for the enviro variable $RUN2D') + + parser.add_argument('--email', action='store_true', help='Send each mjd status as email') + parser.add_argument('--fast', action='store_true', help='Skip updating index until end') + parser.add_argument('--refresh', action='store_true', help='Refresh all the existing Status logs for obs') + parser.add_argument('--force', action='store_true', help='Refresh Summaries pages') + args = parser.parse_args() + + if args.run2d is not None: + if args.run1d is None: + args.run1d = args.run2d + + if args.epoch: + dir_ = 'epoch' + elif args.custom is not None: + dir_ = args.custom + else: + dir_ = 'daily' + + if args.refresh: + for obs in args.obs: + mjds = glob.glob(ptt.join(daily_dir, 'logs', 'Status', dir_, + args.run2d, f'?????-{obs.upper()}.html')) + + mjds = [int(ptt.basename(x).split('-')[0]) for x in mjds] + obs = obs.lower() + for mjd in mjds: + print(args.run2d, mjd, obs) + daily_log_to_file(obs, mjd, topdir=args.topdir, run2d=args.run2d, + run1d=args.run1d, redux=None, html_log=None, + summary=(not args.fast), epoch=args.epoch, + custom = args.custom) + else: + if args.mjd is None: + if args.custom is None: + if args.mjdend is None and args.mjdstart is None: + args.mjd = [jdate-1, jdate] + elif args.mjdend is None and args.mjdstart is not None: + args.mjd = range(args.mjdstart, jdate+1) + elif args.mjdstart is None and args.mjdend is not None: + args.mjd = [args.mjdend] + else: + args.mjd = range(args.mjdstart, args.mjdend+1) + else: + fd = field_dir(ptt.join(args.topdir, args.run2d), + '{custom}_{obs}', custom = True) + fd = ptt.join(fd, 'redux_{custom}_{obs}-?????') + redux = glob.glob(fd.format(custom=args.custom, obs='apo')) + + redux.extend(glob.glob(fd.format(custom=args.custom, obs='lco'))) + args.mjd = [int(x.split('-')[-1]) for x in redux] + + + for mjd in args.mjd: + if args.custom is None: + it_obs = args.obs + else: + it_obs = [ptt.basename(x).split('-')[-2].split('_')[-1] for x in glob.glob(fd.format(custom=args.custom, obs='???').replace('?????',str(mjd)))] + it_obs = [x for x in it_obs if x in args.obs] + for obs in it_obs: + obs = obs.lower() + print(args.run2d, mjd, obs) + if args.email: + if args.epoch: + subject = f'Epoch Status: {mjd} {obs}' + else: + subject = f'Status: {mjd} {obs}' + daily_log_email(subject, None, None, obs, mjd, content=None, + email_file = ptt.join(daily_dir, 'etc','emails'), + topdir=args.topdir, run2d=args.run2d, run1d=args.run1d, + from_domain="chpc.utah.edu", redux = None, epoch=args.epoch, + custom=args.custom) + else: + daily_log_to_file(obs, mjd, topdir=args.topdir, run2d=args.run2d, + run1d=args.run1d, redux=None, html_log=None, + summary=(not args.fast), epoch=args.epoch, + custom = args.custom) + if args.force: + args.mjd = None + if args.fast or args.force: + daily_log_index(ptt.join(daily_dir, 'logs', 'Status', dir_, args.run2d), args.run2d, + epoch=args.epoch, custom=args.custom, fast_mjds = args.mjd) + fmjds = args.mjd + else: + fmjds = None + daily_log_index(ptt.join(daily_dir, 'logs', 'Status', dir_, args.run2d), args.run2d, + epoch=args.epoch, custom=args.custom, flag_noSci=True, fast_mjds = fmjds) + diff --git a/bin/dust_3d_map.py b/bin/dust_3d_map.py deleted file mode 100755 index 5aa7c9f2e..000000000 --- a/bin/dust_3d_map.py +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env python -import warnings -warnings.filterwarnings("ignore") -from astropy.coordinates import SkyCoord -import astropy.units as units -from dustmaps.bayestar import BayestarWebQuery -from dustmaps.bayestar import BayestarQuery -import numpy as np -import sys - -import os - -class HiddenPrints: - def __enter__(self): - self._original_stdout = sys.stdout - sys.stdout = open(os.devnull, 'w') - - def __exit__(self, exc_type, exc_val, exc_tb): - sys.stdout.close() - sys.stdout = self._original_stdout - -sys.argv=list(filter(None,sys.argv)) -ll=np.float(sys.argv[1]) -bb=np.float(sys.argv[2]) -rr=np.float(sys.argv[3]) -#bayestar = BayestarWebQuery(version='bayestar2015') -with HiddenPrints(): - bayestar = BayestarQuery(version='bayestar2015') - coords = SkyCoord(ll*units.deg, bb*units.deg,distance=rr*units.pc, frame='galactic') - reddening = bayestar(coords, mode='median')#'percentile',pct=70.)#mode='median') -#reddening1 = bayestar(coords, mode='percentile',pct=70.) -#reddening2 = bayestar(coords, mode='percentile',pct=30.) -#reddening=(reddening1+reddening2)/2.0 -#reddening=reddening/3.1 -if rr <= 00.0: - reddening=np.nan -print(reddening) diff --git a/bin/dust_3d_map_arr.py b/bin/dust_3d_map_arr.py deleted file mode 100755 index 092bc1644..000000000 --- a/bin/dust_3d_map_arr.py +++ /dev/null @@ -1,49 +0,0 @@ -#!/usr/bin/env python -import warnings -warnings.filterwarnings("ignore") -from astropy.coordinates import SkyCoord -import astropy.units as units -#from dustmaps.bayestar import BayestarWebQuery -from dustmaps.bayestar import BayestarQuery -import numpy as np -import sys - -import os - -class HiddenPrints: - def __enter__(self): - self._original_stdout = sys.stdout - sys.stdout = open(os.devnull, 'w') - - def __exit__(self, exc_type, exc_val, exc_tb): - sys.stdout.close() - sys.stdout = self._original_stdout - - -sys.argv=list(filter(None,sys.argv)) -ll=np.array(sys.argv[1].replace("[", "").replace("]","").split(",")).astype(np.float).tolist() -bb=np.array(sys.argv[2].replace("[", "").replace("]","").split(",")).astype(np.float).tolist() -rr=np.array(sys.argv[3].replace("[", "").replace("]","").split(",")).astype(np.float).tolist() - -#ll=np.float(sys.argv[1]) -#bb=np.float(sys.argv[2]) -#rr=np.float(sys.argv[3]) -#bayestar = BayestarWebQuery(version='bayestar2015') -#bayestar = BayestarWebQuery(version='bayestar2015') -with HiddenPrints(): - try: - bayestar = BayestarQuery(version='bayestar2015') - except FileNotFoundError: - import dustmaps.bayestar - dustmaps.bayestar.fetch(version='bayestar2015') - bayestar = BayestarQuery(version='bayestar2015') - coords = SkyCoord(ll*units.deg, bb*units.deg,distance=rr*units.pc, frame='galactic') - reddening = bayestar(coords, mode='median')#'percentile',pct=70.)#mode='median') -#reddening1 = bayestar(coords, mode='percentile',pct=70.) -#reddening2 = bayestar(coords, mode='percentile',pct=30.) -#reddening=(reddening1+reddening2)/2.0 -#reddening=reddening/3.1 -#if rr <= 00.0: -# reddening=np.nan -reddening[np.where(np.asarray(reddening)<=0.0)[0].tolist()]=np.nan -print(reddening) diff --git a/bin/dust_3d_map_old.py b/bin/dust_3d_map_old.py deleted file mode 100755 index 9436b9da3..000000000 --- a/bin/dust_3d_map_old.py +++ /dev/null @@ -1,14 +0,0 @@ -from astropy.coordinates import SkyCoord -import astropy.units as units -from dustmaps.bayestar import BayestarWebQuery -import numpy as np -import sys - -sys.argv=filter(None,sys.argv) -ll=np.float(sys.argv[1]) -bb=np.float(sys.argv[2]) -rr=np.float(sys.argv[3]) -bayestar = BayestarWebQuery(version='bayestar2017') -coords = SkyCoord(90.*units.deg, 30.*units.deg,distance=100.*units.pc, frame='galactic') -reddening = bayestar(coords, mode='median') -print reddening \ No newline at end of file diff --git a/bin/fb_classes.py b/bin/fb_classes.py deleted file mode 100644 index 7375e648b..000000000 --- a/bin/fb_classes.py +++ /dev/null @@ -1,84 +0,0 @@ -#!/usr/bin/env python - -import os, sys, fcntl - -""" Miscellaneous classes for FemtoBatch programs """ - -#### -class Consts: - """Holds various constants use by the FemtoBatch programs""" - - def __init__(self): - self.logName = "fb_log" - self.configName = "fb_config.conf" - self.processListName = "fb_plist" - - def __repr__(self): - return self.__str__() - - def __str__(self): - return ("Consts:\n" + - "logName: " + self.logName + "\n" + - "configName: " + self.configName + "\n" + - "plist: " + self.processListName); - - - -#### -class Config: - """Holds the configuration information read from the command line or ini""" - - def __init__(self): - self.controlDir = "." - self.logDir = "." - self.logLevel = 30 - self.pollDelay = 60 - self.name = "" - self.nice = False - - def __repr__(self): - return self.__str__() - - def __str__(self): - return ("Config:\n" + - "controlDir: " + self.controlDir + "\n" + - "logDir: " + self.logDir + "\n" + - "logLevel: " + str(self.logLevel) + "\n" + - "pollDelay: " + str(self.pollDelay) + "\n" + - "name: " + self.name + "\n" + - "nice: " + str(self.nice)) - - -class ProcessList: - """Manipulate the process files""" - - def __init__(self, filename): - self.filename = filename - - def append(self, item): - """Add an item to the process file""" - if len(item.rstrip()) < 1: return - if item[-1] != '\n': item += ('\n') - - f = open(self.filename, 'a') - fcntl.flock(f, fcntl.LOCK_EX) - f.write(item) - f.close - - def pop(self): - """Return an item from the process file or None""" - item = None - - if os.path.isfile(self.filename): - f = open(self.filename, "r+") - fcntl.flock(f, fcntl.LOCK_EX) - items = f.readlines() - if len(items) > 0: - item = items[0].rstrip() - items = items[1:] - f.seek(0) - f.truncate() - f.writelines(items) - f.close() - - return item diff --git a/bin/fieldlist b/bin/fieldlist new file mode 100755 index 000000000..f63f2220a --- /dev/null +++ b/bin/fieldlist @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 + +import argparse +import sys +import os.path as ptt +from os import getenv + +from boss_drp.post.fieldlist import fieldlist + +if __name__ == '__main__' : + """ + Build/load Fieldlist + """ + parser = argparse.ArgumentParser( + prog=ptt.basename(sys.argv[0]), + description='Build/load BOSS Fieldlist') + + parser.add_argument('--create', '-c', action='store_true', help='Create Fieldlist') + parser.add_argument('--topdir', type=str, help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX', default = getenv('BOSS_SPECTRO_REDUX')) + parser.add_argument('--run1d', type=str, help='Optional override value for the enviro variable $RUN1D', nargs='*', default=[getenv('RUN1D')]) + parser.add_argument('--run2d', type=str, help='Optional override value for the enviro variable $RUN2D', nargs='*', default=[getenv('RUN2D')]) + parser.add_argument('--outdir', type=str, help='Optional output directory (defaults to topdir/$RUN2D)', default=None) + parser.add_argument('--skipcart', type=str, help='Option list of cartridges to skip', nargs='*', default=None) + parser.add_argument('--epoch', action='store_true', help='Produce FieldList for epoch coadds') + parser.add_argument('--basehtml', type=str, help='html path for figure (defaults to relative from topdir)') + parser.add_argument('--logfile', type=str, help='Manually Set logfile (including path)', default=None) + parser.add_argument('--debug', action='store_true', help='Overrides the logger of the simplified error messages and prints standard python errors') + parser.add_argument('--noplot', action='store_true', help='Skips updating the sky plots') + args = parser.parse_args() + + Field_list = fieldlist(**vars(args)) diff --git a/bin/fieldmerge b/bin/fieldmerge new file mode 100755 index 000000000..626f818b1 --- /dev/null +++ b/bin/fieldmerge @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +import argparse +import sys +import os.path as ptt +from os import getenv +from boss_drp.post.fieldmerge import fieldmerge +import astropy.time +from datetime import date + +if __name__ == '__main__' : + """ + build spAll + """ + parser = argparse.ArgumentParser( + prog=ptt.basename(sys.argv[0]), + description='Build BOSS spAll Summary File') + + parser.add_argument('--run2d', type=str, help='Optional override value for the enviro variable $RUN2D', default=getenv('RUN2D')) + parser.add_argument('--indir', type=str, help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX', default = getenv('BOSS_SPECTRO_REDUX')) + + + parser.add_argument('--skip_line', action='store_true', help='skip the generation of spAllLine.fits') + parser.add_argument('--include_bad', action='store_true', help='include bad fields') + parser.add_argument('--legacy', action='store_true', help='Include columns used by SDSS-IV and depreciated in SDSS-V') + parser.add_argument('--skip_specprimary', action='store_true', help='Skip creation of specprimary and associated columns') + parser.add_argument('--update_specprimary', action='store_true', + help='Keep existing specprimary and associated columns and only update new row (and their secondaries)') + parser.add_argument('--lite', action='store_true', help='Produce lite version of spAll file') + parser.add_argument('--XCSAO', action='store_true', help='Include XCSAO columns') + parser.add_argument('--field', '-f', type=str, help='Run for a single Field', default=None) + parser.add_argument('--mjd', '-m', type=str, help='Run for a single MJD', default=None) + parser.add_argument('--clobber', action='store_true', help='Clobber all spAll-field-mjd files') + parser.add_argument('--bkup', action='store_true', help='Backup existing spAll files') + parser.add_argument('--verbose', action='store_true', help='Log columns not saved') + parser.add_argument('--logfile', type=str, help='Manually set logfile') + parser.add_argument('--epoch', action='store_true', help='Produce spAll for epoch coadds') + parser.add_argument('--dev', action='store_true', help=argparse.SUPPRESS) + parser.add_argument('--programs', nargs='*', help='List of programs to include') + parser.add_argument('--datamodel', type=str, help='Supply a spAll datamodel file (defaults to $IDLSPEC2D/datamodel/spall_dm.par') + parser.add_argument('--line_datamodel', type=str, help='Supply a spline datamodel file (defaults to $IDLSPEC2D/datamodel/spzline_dm.par') + parser.add_argument('--outroot', type=str, help='Path and root of filename for output (defaults to spectra/full or summary)') + parser.add_argument('--remerge_fmjd', '-r',type=str, help='Field-MJD to replace in spAll') + parser.add_argument('--remerge_mjd', type=str, help='MJD to replace in spAll') + parser.add_argument('--merge_only', '-o', action='store_true', help='Skip Building new spAll-Field-MJD files and just merge existing') + parser.add_argument('--allsky', action='store_true', help='Build spAll for Allsky Custom Coadd') + parser.add_argument('--custom', type=str, help='Name of Custom Coadd') + parser.add_argument('--run1d', type=str, help='Optional override value for the enviro variable $RUN1D (only for custom allsky coadds)', default=getenv('RUN1D')) + parser.add_argument('--limit', type=int, help='Limit number of Field-MJD spAll files to read before save', default = None) + parser.add_argument('--ndays', type=int, help='Limit update to last ndays', default = None, dest='mjdstart') + + args = parser.parse_args() + + if args.mjdstart is not None: + todaymjd = int(float(astropy.time.Time( str(date.today())).jd)-2400000.5) + args.mjdstart = todaymjd-args.mjdstart + + fieldmerge(**vars(args)) diff --git a/bin/filecheck b/bin/filecheck new file mode 100755 index 000000000..6bf6a3209 --- /dev/null +++ b/bin/filecheck @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 + +import os +import sys +import argparse +from boss_drp.sos.filecheck import filecheck +""" +filecheck: + +filecheck checks some attribute of a file and returns "true" or "false" based +on if the attribute is... true or false. + +This file it pretty much a grab bag of hacks. To do these tests correctly would +either require adding dependencies just for these simple tests or duplicating lots +of code. + +The input files can be either normal or gz files. + +Written by Gary Kushner (LBL). Dec 2009. + +""" + +#### + +if __name__ == '__main__' : + parser = argparse.ArgumentParser( + prog=os.path.basename(sys.argv[0]), + description=""" + Check File (uncompressed or gz) favor/instrument/quality + + science: + return "true" if the fits file is a science frame. This + is determined by flavor=science in the header. If flavor + is not in the header, "false" is returned. + + test: + return "true" if the fits file is a test frame. This is + determined by quality=test in the header. If quality + is not in the header, "false" is returned + + excellent: + return "true" if the fits file is a excellent frame. This is + determined by quality=excellent in the header. If quality + is not in the header, "true" is returned + + boss: + return "true" if the plPlugMapM file is a boss frame. + this is determined by instrument=boss in the header. + If instrument is not in the header, "false" is returned. + """, formatter_class=argparse.RawTextHelpFormatter) + parser.add_argument('cmd', type=str, help='file check command') + parser.add_argument('file', type=str, help='fits file') + args = parser.parse_args() + + filecheck(args.cmd, args.file) + diff --git a/bin/filecheck.py b/bin/filecheck.py deleted file mode 100755 index b930bdc27..000000000 --- a/bin/filecheck.py +++ /dev/null @@ -1,133 +0,0 @@ -#!/usr/bin/env python - -import os, sys -import sxpar, putils - -""" -filecheck.py: - -filecheck.py checks some attribute of a file and returns "true" or "false" based -on if the attribute is... true or false. - -This file it pretty much a grab bag of hacks. To do these tests correctly would -either require adding dependencies just for these simple tests or duplicating lots -of code. - -The input files can be either normal or gz files. - -Written by Gary Kushner (LBL). Dec 2009. - -""" - -#### -## Globals Block. -#### - -# - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print(usageCMD + "\n\nusage: science|boss|test file") - print(""" - science: - return "true" if the fits file is a science frame. This - is determined by flavor=science in the header. If flavor - is not in the header, "false" is returned. - - test: - return "true" if the fits file is a test frame. This is - determined by quality=test in the header. If quality - is not in the header, "false" is returned - - excellent: - return "true" if the fits file is a excellent frame. This is - determined by quality=excellent in the header. If quality - is not in the header, "true" is returned - - boss: - return "true" if the plPlugMapM file is a boss frame. - this is determined by instrument=boss in the header. - If instrument is not in the header, "false" is returned. - - File can be uncompressed or gz. - """) - sys.exit(1) - - -#### -def science(fits): - """return True if the fits file is a science frame""" - v = sxpar.sxparRetry(fits, "flavor", retries = 60) - if len(v) == 0: - return False - return v[0].lower() == "science" - - - -#### -def excellent(fits): - """return True if the fits file is an excellent frame""" - v = sxpar.sxparRetry(fits, "quality", retries = 60) - if len(v) == 0: - return True - return v[0].lower() == "excellent" - - -#### -def boss(fits): - """return True if the plugmap file is for a boss frame""" - - key = "instruments" - keyl = len(key) - value = "boss" - - lines = putils.openRead(fits).readlines(); - for line in lines: - if line[0:keyl].lower() == key: - return line.lower().count(value) > 0 - return False - -#### -def test(fits): - """return True if the fits file is a test frame""" - - v = sxpar.sxparRetry(fits, "quality", retries = 60) - if len(v) == 0: - return False - return v[0].lower() == "test" - - -#### -def main(argv): - """Check a fits file and display 'true' or 'false'""" - - if len(argv) != 2: - usage() - cmd = argv[0] - fits = argv[1] - - if cmd == "science": - rv = science(fits) - elif cmd == "test": - rv = test(fits) - elif cmd == "excellent": - rv = excellent(fits) - elif cmd == "boss": - rv = boss(fits) - else: - usage() - - if rv == True: - print("true") - else: - print("false") - -### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) - diff --git a/bin/flatlib b/bin/flatlib new file mode 100755 index 000000000..f429a8d78 --- /dev/null +++ b/bin/flatlib @@ -0,0 +1,169 @@ +#!/usr/bin/env python3 +from boss_drp.Flatlib import analysis, build, plot, reduce, read_fiberAssignments + + +import argparse +import sys +import os.path as ptt +from os import getenv, environ +import glob + + +class FullHelpAction(argparse.Action): + def __init__(self, option_strings, dest=argparse.SUPPRESS, default=argparse.SUPPRESS, help=None): + super(FullHelpAction, self).__init__(option_strings=option_strings, dest=dest, default=default, nargs=0, help=help) + + def __call__(self, parser, namespace, values, option_string=None): + print_full_help(parser) + sys.exit() + +def print_full_help(parser): + """Print full help including all subparsers.""" + parser.print_help() + for action in parser._actions: + if isinstance(action, argparse._SubParsersAction): + for choice, subparser in action.choices.items(): + print(f"\nSubparser '{choice}' help:") + subparser_help = subparser.format_help() + print(''.join(' '*4 + line for line in subparser_help.splitlines(True))) + sys.exit() + +if __name__ == '__main__' : + """ + build, analyze flatlib + """ + + parser = argparse.ArgumentParser( + prog=ptt.basename(sys.argv[0]), + description='Build and analyze a library of flats to check for Fiber throughput Issues', add_help=False) + parser.add_argument('--help','-h', action=FullHelpAction, help='show this help message and exit') + subparser = parser.add_subparsers(dest='command', help='Sub-command help') + + parser_reduce = subparser.add_parser('reduce', help='Reduce the spFlats') + parser_reduce.add_argument('--dir', '-d', help='Flat Library Directory', required=False, default=None) + parser_reduce.add_argument('--run2d', help='Override $RUN2D', required=False, default=None) + parser_reduce.add_argument('--mjd', '-m', nargs='*', required=False, help='MJDs to Run') + parser_reduce.add_argument('--link', action='store_true', required=False, help='Link Pre-existing spFlat Files') + parser_reduce.add_argument('--deep', action='store_true', required=False, help='Check Pre-existing plans for completion') + parser_reduce.add_argument('--lco', '-l', action='store_true', required=False, help='Run for LCO data') + parser_reduce.add_argument('--plates', action='store_true', required=False, help='Catch up Plates') + parser_reduce.add_argument('--legacy', action='store_true', required=False, help='Catch up Legacy') + parser_reduce.add_argument('--fps', action='store_true', required=False, help='Catch up FPS') + parser_reduce.add_argument('--nodes', type=int, default= None, help='Number of nodes to use') + parser_reduce.add_argument('--nosubmit', action='store_true', required=False, help='Dont submit the job') + parser_reduce.add_argument('--no_run', action='store_true', required=False, help='Just link (if set), but do not run new spFlat files') + parser_reduce.add_argument('--link_all', action='store_true', required=False, help='Link all spFlat files regardless of spPlanTrace file') + + parser_build = subparser.add_parser('build',help='Build the flat library') + parser_build.add_argument('--dir','-d', help='Flat Library Directory', required=False, default=None) + parser_build.add_argument('--run2d', help='Override $RUN2D', required=False, default=None) + parser_build.add_argument('--lco', '-l', action='store_true', required=False, help='Run for LCO data') + + parser_plot = subparser.add_parser('plot', help='Plot Raw and Reduced Flat') + parser_plot.add_argument('--dir', '-d', help='Flat Library Directory', required=False, default=None) + parser_plot.add_argument('--run2d', help='Override $RUN2D', required=False, default=None) + parser_plot.add_argument('--save', '-s', help='Save Directory', required=False, default=None) + parser_plot.add_argument('--mjd', '-m', help='List of mjds to plot', required=False, default=None, nargs="+") + parser_plot.add_argument('--lco', '-l', action='store_true', required=False, help='Run for LCO data') + parser_plot.add_argument('--flats', '-f', help='List of reduced flats to plot (overrides mjd and obs)', required=False, default=None, nargs="+") + + parser_analysis= subparser.add_parser('analyze', help='') + parser_analysis.add_argument('--dir', '-d', help='Flat Library Directory', required=False, default=None) + parser_analysis.add_argument('--run2d', help='Override $RUN2D', required=False, default=None) + parser_analysis.add_argument('--lco', '-l', action='store_true', required=False, help='Run for LCO data') + parser_analysis.add_argument('--mjd', '-m', help='List of mjds to plot alone', required=False, default=None, nargs="+") + parser_analysis.add_argument('--noplot', help='Plot Flat',action='store_true',required=False) + + parser_lowfiber = subparser.add_parser('lowfiber',help='Check for Low fibers') + parser_lowfiber.add_argument('--dir', '-d', help='Flat Library Directory', required=False, default=None) + parser_lowfiber.add_argument('--run2d', help='Override $RUN2D', required=False, default=None) + parser_lowfiber.add_argument('--lco', '-l', action='store_true', required=False, help='Run for LCO data') + parser_lowfiber.add_argument('--mjd', '-m', help='List of mjds to plot alone', required=False, default=None, nargs="+") + parser_lowfiber.add_argument('--threshold', '-t', type=float, help='Threshold to flag lowfibers', default=0.8) + + parser_csv = subparser.add_parser('csv',help='Export CSV only') + parser_csv.add_argument('--dir', '-d', help='Flat Library Directory', required=False, default=None) + parser_csv.add_argument('--run2d', help='Override $RUN2D', required=False, default=None) + parser_csv.add_argument('--lco', '-l', action='store_true', required=False, help='Run for LCO data') + #parser_csv.add_argument('--mjd', '-m', help='List of mjds to plot alone', required=False, default=None, nargs="+") + + parser_ts = subparser.add_parser('timeSeries',help='Plot Throughout Time Series only') + parser_ts.add_argument('--dir', '-d', help='Flat Library Directory', required=False, default=None) + parser_ts.add_argument('--run2d', help='Override $RUN2D', required=False, default=None) + parser_ts.add_argument('--lco', '-l', action='store_true', required=False, help='Run for LCO data') + parser_ts.add_argument('--mjd', '-m', help='List of mjds to plot alone', required=False, default=None, nargs="+") + parser_ts.add_argument('--TraceIDs','-t', action='store_true',required=False, help='Label with Trace FiberIDs rather then slit FiberIDs') + + + args = parser.parse_args() + + if args.command is not None: + if args.run2d is not None: + environ['RUN2D'] = args.run2d + if args.dir is None: + args.dir = ptt.join(getenv('BOSS_QA_DIR', default='BOSS_SPECTRO_REDUX'),'BOSSFLATLIB',getenv('RUN2D')) + if args.command == 'reduce': + reduce(args.dir, args.mjd, link=args.link, deep = args.deep, lco=args.lco, + plates=args.plates, legacy=args.legacy, fps=args.fps, link_all=args.link_all, + nosubmit=args.nosubmit, nodes=args.nodes, no_run=args.no_run) + + elif args.command == 'build': + obs = ['lco'] if args.lco else ['apo'] + build(args.dir, obs) + + elif args.command == 'plot': + obs = ['lco'] if args.lco else ['apo'] + + + if args.mjd is not None: + if np.isscalar(args.mjd): args.mjd=[args.mjd] + else: + args.mjd=[] + for ob in obs: + args.mjd.extend([ptt.basename(x) for x in glob.glob(ptt.join(args.dir, 'calibs', ob.lower(),'*'))]) + args.mjd = list(set(args.mjd)) + + assigns={} + for ob in obs: + assigns[ob]=read_fiberAssignments(ptt.join(args.dir,'fiberAssignments',ob,'fiberAssignments.csv')) + + if args.flats is not None: + flats=[] + for flat in args.flats: + flats.extend(glob.glob(ptt.join(args.dir,'calibs',ob.lower(),'*',flat))) + else: + flats=[] + for mjd in args.mjd: + flats.extend(glob.glob(ptt.join(args.dir,'calibs',ob.lower(),mjd,'spFlat*.fits*'))) + + if not args.save: + save = ptt.join(args.dir,'plots',ob) + else: + save = args.save + for flat in flats: + plot(args.dir, flat, savedir =args.save, assigns=assigns) + + elif args.command in ['analyze', 'lowfiber','csv','timeSeries']: + obs = 'lco' if args.lco else 'apo' + parms = { 'obs':obs} + if args.command == 'csv': + args.mjd = None + if args.command == 'analyze': + parms['run'] = 'all' + parms['noplot'] = args.noplot + if args.command in ['lowfiber','csv','timeSeries']: + parms['run'] = args.command + if args.command == 'lowfiber': + parms['lowFiber'] = args.threshold + if args.command == 'timeSeries': + parms['TraceIDs'] = args.TraceIDs + + if args.mjd is not None: + if np.isscalar(args.mjd): + args.mjd=[args.mjd] + for mjd in args.mjd: + analysis(args.dir, getenv('RUN2D'), mjd=mjd, **parms) + else: analysis(args.dir, getenv('RUN2D'),**parms) + + else: + print_full_help(parser) diff --git a/bin/fluxcorr_prior b/bin/fluxcorr_prior new file mode 100755 index 000000000..de768c254 --- /dev/null +++ b/bin/fluxcorr_prior @@ -0,0 +1,18 @@ +#!/usr/bin/env python3 + +import os.path +import sys +import argparse +from boss_drp.spec1d.fluxcorr_prior import fluxcorr_prior + + +if __name__ == '__main__' : + parser = argparse.ArgumentParser( + prog=os.path.basename(sys.argv[0]), + description='Try solving with a prior that fluxcorr = 1') + + parser.add_argument('planfile', type=str, help='name of the plan file') + parser.add_argument('--xythrucorr', action='store_true', help='Apply XY throughput Correction') + args = parser.parse_args() + + fluxcorr_prior(args.planfile, xythrucorr=args.xythrucorr) diff --git a/bin/getPlugmap b/bin/getPlugmap deleted file mode 100755 index 88650361f..000000000 --- a/bin/getPlugmap +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env python - -import os, sys, fcntl, time, commands, getopt -import subprocess -import sxpar - -""" -getPlugmap - -Given a fits file, getPlugmap will display the associated plugmap name and optionally get it using platedb. - -Written by Gary Kushner (LBL). Oct 2009. - -""" - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print usageCMD + " [-w] fits-file" - print ' -w writes the plugmap file. Need to "setup platedb"' - - sys.exit(1) - -#### -def setupPlateDb(): - """Setup plateDb. Do nothing on failure.""" - - try: - import eups - #- Old eups calling methods - ### Eups = eups.Eups(verbose=0) - ### cmds = eups.setup(Eups, "platedb", eups.Current()) - ### cmds = eups.setup(Eups, "platedb") - - #- New way to setup with eups - cmds = eups.setup("platedb") - except: - pass - - -#### -def parseCmdLine(argv): - """Parse command line arguments. Returns (fits name, write-plugmap)""" - - writePlugmap = False - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(argv, "w") - except: - usage() - - if len(pargs) != 1: - usage() - - # Fill in the config - for (opt, value) in opts: - if opt == "-w": - writePlugmap = True - - - return pargs[0], writePlugmap - -def runcommand(cmd): - """Run cmd and return (exitcode, stdout) tuple""" - pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - stdout = ''.join(pipe.stdout.readlines()) - stderr = ''.join(pipe.stderr.readlines()) - exitcode = pipe.wait() - return (exitcode, stdout, stderr) - -#### -def plugmap(file, writePlugmap): - """Display the plugmap file and optionally write it""" - - # Get plugmap used by file - plugmapFullId = sxpar.sxpar(file, "NAME")[0] - - # Parse plugmap name - plugmapName = "plPlugMapM-" + plugmapFullId + ".par" - - plugParse = plugmapFullId.split("-") - plugmapId = plugParse[0] - plugmapMJD = plugParse[1] - plugmapMapId = str(int(plugParse[2][0:2])) - plugmapPtg = "A" - if len(plugParse[2]) == 3: - plugmapPtg = plugParse[2][2] - - - print "The plugmap used is " + plugmapName - - if writePlugmap: - setupPlateDb() - cmd = ["catPlPlugMapM", ] - cmd += ["-m", plugmapMJD, "-f", plugmapMapId] - if plugmapPtg != None: - cmd += ["-p", plugmapPtg] - cmd += [plugmapId,] - print "executing " + ' '.join(cmd) - ### exitcode, output = commands.getstatusoutput(cmd) - exitcode, stdout, stderr = runcommand(cmd) - if exitcode != 0: - print >> sys.stderr, stderr+ "\n\n" - print >> sys.stderr, stdout+ "\n\n" - print >> sys.stderr, 'Could not get plugmap file. Try "setup platedb"' - sys.exit(1) - f = open(plugmapName, "w") - f.write(stdout) - f.close() - print "Created " + plugmapName - - - - -### Start of script - -(fits, write) = parseCmdLine(sys.argv[1:]) -plugmap(fits, write) diff --git a/bin/guidermon_checkin.sh b/bin/guidermon_checkin.sh deleted file mode 100755 index 8276cc32f..000000000 --- a/bin/guidermon_checkin.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# -# Extract the night's guider data (seeing, etc.) from the processed guider -# files and put the result in a .par file based on the MJD. Then check -# that file in to the speclog product. -# -# Must be run as eboss@sdss4-eboss, designed for crontab. -# -# Requires ~eboss/bin/sjd.py and guidermonfile.pro from idlspec2d. - -function run_and_test { - "$@" - status=$? - if [ $status -ne 0 ]; then - # useful to have the full error on both stderr and stdout - echo "Error with $@" | tee /dev/stderr - fi - return $status -} - -# Need to be able to find the ssh agent in order for svn checkins to work. -#export SSH_AUTH_SOCK=/home/eboss/sos/control/agent.socket - -# cronjobs need the idlspec2d product -source /home/sdss4/products/eups/bin/setups.sh -setup idlspec2d trunk -#module use /home/eboss/software/svn.sdss.org/repo/modulefiles -#module use /home/eboss/software/svn.sdss.org/data/modulefiles -#module load idl idlspec2d - - -# for password-less ssh -#export SVN_SSH="ssh -i /home/eboss/.ssh/id_dsa-sos" - -if [ $# == 0 ] ; then - export MJD=`/home/eboss/bin/sjd.py` -else - export MJD=$1 -fi -export GUIDE_DIR='/data/gcam/' -export SPECLOG_DIR='/home/eboss/software/svn.sdss.org/data/sdss/speclog/trunk' -export SVN_MESSAGE="committing guiderMon for $MJD" - -# guidermonfile writes the output .par to $SPECLOG_DIR/$MJD -echo "Running: guidermonfile for $MJD" -# Sadly, IDL sends its startup junk to stderr, so we have to redirect that -# and can't reliably watch IDL's stderr for actual error messages. -{ -idl -e "guidermonfile, mjd=getenv('MJD')" -} 2>&1 - -#echo "SVN commit message:" $SVN_MESSAGE -#cd $SPECLOG_DIR/$MJD -#run_and_test /usr/bin/svn add guiderMon-$MJD.par -#run_and_test /usr/bin/svn commit -m "$SVN_MESSAGE" guiderMon-$MJD.par - -exit 0 diff --git a/bin/idlspec2d_version b/bin/idlspec2d_version index 12470e3f1..11e0d8a77 100755 --- a/bin/idlspec2d_version +++ b/bin/idlspec2d_version @@ -1,59 +1,18 @@ -#!/bin/sh -#------------------------------------------------------------------------------ -# Script to return GIT version of the idlspec2d product. -# -# -# Written by C. Loomis, Princeton; Modified by Gary Kushner and Ben Weaver -# Modified by Hector Ibarra to use GITH -#------------------------------------------------------------------------------ -# -# This will inhibit glob processing, just in case regexes have lots of * in -# them -# -set -o noglob -# -# The trailing part of this executable's filename, with respect to the product root. -# CHANGE THIS LINE -myName='bin/idlspec2d_version' -# -# Compute the value of $TEMPLATE_DIR based on the name -# -myEnv=$(echo "${myName}" | cut -d/ -f2 | sed 's/version/dir/' | tr '[:lower:]' '[:upper:]') -eval "myDir=\$${myEnv}" -# -# The following line will include an URL name after the colon -# for any SVN version. -# -##svnURL='$HeadURL: https://svn.sdss.org/repo/bhm/idlspec2d/tags/v6_0_0/bin/idlspec2d_version $' -# -# Special case the trunk, which we want to recognize as a version named "trunk" -# -##svnTag=$(echo "${svnURL}" | sed 's,^$HeadURL: .*/trunk/,trunk/,; s, \$$,,' | sed "s,/${myName},,") -##svnVersion=$(svnversion "${myDir}/bin") -gitVersion=$(git --git-dir=${myDir}/.git tag) -gitVersion=( $gitVersion ) -gitVersion=${gitVersion[-1]} -##if test "${svnTag}" = "trunk"; then -## echo "trunk ${svnVersion}" -## exit 0 -##fi -# -# Look for the tag name -# -# To change output to "tag $tag" and "branch $branch" change "\3" to "\1 \3" -##svnTag=$(perl -pe 's{^\$HeadURL: .*/(tag|branch)(s|es)/(.*)/'"${myName}"' \$$}{\3}' <<< "${svnURL}") -##if test -z "${svnTag}" || $(echo "${svnTag}" | grep -s -q '/') ; then -## # Noisy failure: -## echo "NOTAG: unparseable ${svnVersion} ${svnURL}" -## # Quiet failure: -## # echo "NOTAG: unparseable" -## exit 1 -##fi -## -# Print the tag & exit nicely. -# -echo ${gitVersion} -##echo ${svnTag} -##echo 'v6_0_1' -exit 0 +#!/usr/bin/env python3 +import os +import sys +import argparse +try: + from boss_drp import __version__ +except: + from sdsstools import get_package_version + __version__ = get_package_version(__file__, 'boss_drp') or 'dev' + +if __name__ == '__main__' : + parser = argparse.ArgumentParser( + prog=os.path.basename(sys.argv[0]), + description="Prints the IDLspec2D BOSS_DRP version") + args = parser.parse_args() + + print(__version__) diff --git a/bin/killAndChildren.py b/bin/killAndChildren.py deleted file mode 100755 index 693f871f2..000000000 --- a/bin/killAndChildren.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env python - -import os, sys, subprocess, time - -""" -killChildren: - -Something of a quick hack to kill the children of a process. One problem is that -if processes are creating new processes as we are kill them, not everything will be -cleaned up. - -Written by Gary Kushner (LBL). Sept 2010. - -""" - - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print("usage: "+ usageCMD + " pid") - - sys.exit(1) - - - -def kill(pid): - # A bit of recursion will happen here - killChildren(pid) - - # Try SIGINT - print("Sending SIGINT to process %d ..." % pid) - sys.stdout.flush() - try: - os.kill(int(pid), 2) - except: - pass - - # If still running, sleep and check again - rc = subprocess.getstatusoutput("ps ax -o pid | grep %d" % pid) - if len(rc[1]) != 0: - time.sleep(5) - - # SIGKILL if still alive - rc = subprocess.getstatusoutput("ps ax -o pid | grep %d" % pid) - if len(rc[1]) != 0: - print("Sending SIGKILL to process %d..." % pid) - sys.stdout.flush() - try: - os.kill(pid, 9) - except: - pass - - # If still running, sleep and check again - rc = subprocess.getstatusoutput("ps ax -o pid | grep %d" % pid) - if len(rc[1]) != 0: - time.sleep(5) - rc = subprocess.getstatusoutput("ps ax -o pid | grep %d" % pid) - if len(rc[1]) != 0: - print("** Could not kill process %d **" % pid) - - -def killChildren(pid): - # Get children - rc = subprocess.getstatusoutput("ps ax -o pid,ppid | grep %d | awk \"{ if ( \$2 == %d ) { print \$1 }}\"" % (pid,pid)) - if len(rc[1]) == 0: - print("No children of %d" % pid) - return - - pids = rc[1].split("\n") - print("Killing children of %d: %s" % (pid, str(pids))) - for p in pids: - kill(int(p)) - - -#### -def main(argv): - if len(argv) != 1: - usage() - pid = int(argv[0]) - - kill(pid) - -### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) - print(os.path.basename(sys.argv[0]) + " finished running!") - - diff --git a/bin/knownMissing.py b/bin/knownMissing.py deleted file mode 100755 index 76b961f20..000000000 --- a/bin/knownMissing.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python2.7 -# -*- coding: utf-8 -*- -# -# $Id: knownMissing.py 50436 2013-01-16 20:06:24Z weaver $ -# -"""Finds files that should be present but are not. -""" -# -# Imports -# - -#import numpy as np -import pyfits -import argparse -import os -import os.path -import sys -# -# Top-level definitions -# -__author__ = 'Benjamin Alan Weaver ' -__version__ = '$Revision: 50436 $'.split(': ')[1].split()[0] -__docformat__ = 'restructuredtext en' -# -# Functions -# -def version(headurl="$HeadURL: https://svn.sdss.org/repo/eboss/idlspec2d/tags/v5_11_0/bin/knownMissing.py $"): - """Returns a version string based on the value of the svn HeadURL keyword. - - Parameters - ---------- - headurl : str, optional - A HeadURL string set by svn. - - Returns - ------- - myversion : str - A version string. - - Examples - -------- - >>> transfer.common.version() - trunk - """ - if headurl.find('$HeadURL:') < 0: - raise ValueError("The input does not appear to be a HeadURL string!") - if headurl.find('trunk') > 0: - myversion = 'trunk' - elif headurl.find('tags') > 0: - myversion = headurl[headurl.find('tags')+5:].split('/')[0] - elif headurl.find('branches') > 0: - myversion = headurl[headurl.find('branches')+9:].split('/')[0] - else: - myversion = 'unknown' - return myversion -# -# -# -def main(): - """Main program. - """ - # - # Get options - # - parser = argparse.ArgumentParser(description=__doc__,prog=os.path.basename(sys.argv[0])) - parser.add_argument('-V','--version',action='version', - version=("%(prog)s {0}".format(version())), - help='Print version information and exit.') - parser.add_argument('-v', '--verbose', action='store_true', dest='verbose', - help='Print extra information.') - #parser.add_argument('-t', '--test', action='store_true', dest='test', - # help='Do not actually run commands (implies --verbose).') - parser.add_argument('-m', '--marginal', action='store_true', dest='marginal', - help='Analyze marginal plates instead of good plates.') - parser.add_argument('-r', '--release', action='store', dest='release', - default=9, type=int, help='Assume this data release.', - metavar='RELEASE') - options = parser.parse_args() - # - # Read the plates file. - # - platesfile = os.path.join(os.getenv('SPECTRO_REDUX'),'plates-SDSS-dr{0:d}.fits'.format(options.release)) - p = pyfits.open(platesfile) - plates = p[1].data - if options.marginal: - goodplates = plates['PLATEQUALITY'] == 'marginal' - else: - goodplates = plates['PLATEQUALITY'] == 'good' - for run2d,plate,mjd in zip(plates['RUN2D'][goodplates],plates['PLATE'][goodplates],plates['MJD'][goodplates]): - pmjd = "{0:04d}-{1:05d}".format(int(plate),int(mjd)) - files1 = [os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'{0}-{1}.fits'.format(f,pmjd)) for f in ('spFluxdistort','spPlate','spZall','spZbest','spZline')] - for f in files1: - if not os.path.isfile(f): - print("{0} MISSING!".format(f)) - if options.verbose: - print("Examining {0}...".format(files1[1])) - sp = pyfits.open(files1[1]) - hdr = sp[0].header - expid = list() - while "EXPID{0:02d}".format(len(expid)+1) in hdr: - foo = hdr["EXPID{0:02d}".format(len(expid)+1)] - expid.append(foo) - sp.close() - for e in expid: - ee = e.split('-') - arc = os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'spArc-{0}-{1}.fits.gz'.format(ee[0],ee[3])) - if not os.path.isfile(arc): - print("{0} MISSING!".format(arc)) - cframe = os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'spCFrame-{0}-{1}.fits'.format(ee[0],ee[1])) - if not os.path.isfile(cframe): - print("{0} MISSING!".format(cframe)) - flat = os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'spFlat-{0}-{1}.fits.gz'.format(ee[0],ee[2])) - if not os.path.isfile(flat): - print("{0} MISSING!".format(flat)) - files2 = [os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'{0}-{1}-{2}.fits.gz'.format(f,ee[0],ee[1])) for f in ('spFluxcalib','spFluxcorr','spFrame')] - for f in files2: - if not os.path.isfile(f): - print("{0} MISSING!".format(f)) - p.close() - return -# -# -# -if __name__ == '__main__': - main() diff --git a/bin/knownMissing.py.bak b/bin/knownMissing.py.bak deleted file mode 100755 index 254a01692..000000000 --- a/bin/knownMissing.py.bak +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python2.7 -# -*- coding: utf-8 -*- -# -# $Id: knownMissing.py 50436 2013-01-16 20:06:24Z weaver $ -# -"""Finds files that should be present but are not. -""" -# -# Imports -# -from __future__ import print_function -#import numpy as np -import pyfits -import argparse -import os -import os.path -import sys -# -# Top-level definitions -# -__author__ = 'Benjamin Alan Weaver ' -__version__ = '$Revision: 50436 $'.split(': ')[1].split()[0] -__docformat__ = 'restructuredtext en' -# -# Functions -# -def version(headurl="$HeadURL: https://svn.sdss.org/repo/eboss/idlspec2d/tags/v5_11_0/bin/knownMissing.py $"): - """Returns a version string based on the value of the svn HeadURL keyword. - - Parameters - ---------- - headurl : str, optional - A HeadURL string set by svn. - - Returns - ------- - myversion : str - A version string. - - Examples - -------- - >>> transfer.common.version() - trunk - """ - if headurl.find('$HeadURL:') < 0: - raise ValueError("The input does not appear to be a HeadURL string!") - if headurl.find('trunk') > 0: - myversion = 'trunk' - elif headurl.find('tags') > 0: - myversion = headurl[headurl.find('tags')+5:].split('/')[0] - elif headurl.find('branches') > 0: - myversion = headurl[headurl.find('branches')+9:].split('/')[0] - else: - myversion = 'unknown' - return myversion -# -# -# -def main(): - """Main program. - """ - # - # Get options - # - parser = argparse.ArgumentParser(description=__doc__,prog=os.path.basename(sys.argv[0])) - parser.add_argument('-V','--version',action='version', - version=("%(prog)s {0}".format(version())), - help='Print version information and exit.') - parser.add_argument('-v', '--verbose', action='store_true', dest='verbose', - help='Print extra information.') - #parser.add_argument('-t', '--test', action='store_true', dest='test', - # help='Do not actually run commands (implies --verbose).') - parser.add_argument('-m', '--marginal', action='store_true', dest='marginal', - help='Analyze marginal plates instead of good plates.') - parser.add_argument('-r', '--release', action='store', dest='release', - default=9, type=int, help='Assume this data release.', - metavar='RELEASE') - options = parser.parse_args() - # - # Read the plates file. - # - platesfile = os.path.join(os.getenv('SPECTRO_REDUX'),'plates-SDSS-dr{0:d}.fits'.format(options.release)) - p = pyfits.open(platesfile) - plates = p[1].data - if options.marginal: - goodplates = plates['PLATEQUALITY'] == 'marginal' - else: - goodplates = plates['PLATEQUALITY'] == 'good' - for run2d,plate,mjd in zip(plates['RUN2D'][goodplates],plates['PLATE'][goodplates],plates['MJD'][goodplates]): - pmjd = "{0:04d}-{1:05d}".format(int(plate),int(mjd)) - files1 = [os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'{0}-{1}.fits'.format(f,pmjd)) for f in ('spFluxdistort','spPlate','spZall','spZbest','spZline')] - for f in files1: - if not os.path.isfile(f): - print("{0} MISSING!".format(f)) - if options.verbose: - print("Examining {0}...".format(files1[1])) - sp = pyfits.open(files1[1]) - hdr = sp[0].header - expid = list() - while hdr.has_key("EXPID{0:02d}".format(len(expid)+1)): - foo = hdr["EXPID{0:02d}".format(len(expid)+1)] - expid.append(foo) - sp.close() - for e in expid: - ee = e.split('-') - arc = os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'spArc-{0}-{1}.fits.gz'.format(ee[0],ee[3])) - if not os.path.isfile(arc): - print("{0} MISSING!".format(arc)) - cframe = os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'spCFrame-{0}-{1}.fits'.format(ee[0],ee[1])) - if not os.path.isfile(cframe): - print("{0} MISSING!".format(cframe)) - flat = os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'spFlat-{0}-{1}.fits.gz'.format(ee[0],ee[2])) - if not os.path.isfile(flat): - print("{0} MISSING!".format(flat)) - files2 = [os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'{0}-{1}-{2}.fits.gz'.format(f,ee[0],ee[1])) for f in ('spFluxcalib','spFluxcorr','spFrame')] - for f in files2: - if not os.path.isfile(f): - print("{0} MISSING!".format(f)) - p.close() - return -# -# -# -if __name__ == '__main__': - main() diff --git a/bin/loadSN2Value b/bin/loadSN2Value index c448312b0..b1d482f55 100755 --- a/bin/loadSN2Value +++ b/bin/loadSN2Value @@ -1,328 +1,24 @@ #!/usr/bin/env python3 +from boss_drp.sos.loadSN2Value import loadSN2Values -from astropy.io import fits -import os import sys -import time -import getopt -from astropy.time import Time -from sdssdb.peewee.sdss5db import opsdb, targetdb -import sdssdb -print('sdssdb version:'+sdssdb.__version__) - -#### -class Config: - """Config Info""" - - def __init__(self): - self.verbose = False - self.update = False - self.fits = None - self.confSum = None - self.confID = None - self.design = None - self.sdssv_sn2 = False - def __str__(self): - if self.sdssv_sn2 is True: - return ("Verbose: " + str(self.verbose) + "\n" + - "Update: " + str(self.update) + "\n" + - "fits: " + self.fits + "\n" + - "confSummary: " + self.confSum + "\n" + - "confid: " + self.confID+ "\n" + - "design: " + self.design+ "\n" + - "sdssv_sn2: " + self.sdssv_sn2+ "\n"); - else: - return ("Verbose: " + str(self.verbose) + "\n" + - "Update: " + str(self.update) + "\n" + - "fits: " + self.fits + "\n" + - "confSummary: " + self.confSum + "\n" + - "confid: " + self.confID+ "\n" + - "design: " + self.design+ "\n"); - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print("usage:") - print("\t%s [--update] [-v] fits-file confSummary-file" % usageCMD) - print(" ") - print("The fits file is the science frame output from apo-reduce.") - print(" ") - print("An error will occur if the exposure has already been processed, unless") - print("--update is specified.") - print(" ") - print("Add -v for verbose output") - - sys.exit(1) - - -#### -def parseCmdLine(args): - """Parse command line arguments and return a Config""" - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(sys.argv[1:], "v", ["update", "sdssv_sn2"]) - except: - usage() - - if len(pargs) != 2: - print("wrong number of files.\n") - usage() - - cfg = Config() - cfg.fits = pargs[0] - cfg.confSum = os.path.basename(pargs[1]) - cfg.confID = getConfig(cfg) - cfg.design = getDesign(cfg) - - # Fill in the config - for (opt, value) in opts: - if opt == "-v": - cfg.verbose = True - if opt == "--update": - cfg.update = True - if opt == "sdssv_sn2": - cfg.sdssv_sn2 = True - # Display config values if verbose - if (cfg.verbose): - print("Config values: \n" + str(cfg)) - - return cfg - - -#### -def getSN2(cfg): - """Return the sn2 of the fits file as a string. The SN2 is stored in FRAMESN2""" - - try: sn2list = str(fits.getval(cfg.fits, 'FRAMESN2')) - except: - print("WARNING: " + cfg.fits + " does not contain the header keyword FRAMESN2.") - return 0.0; - if cfg.sdssv_sn2: - try: sn2list_v2 = str(fits.getval(cfg.fits, 'FSN2_v2')) - except: - print("WARNING: " + cfg.fits + " does not contain the header keyword FSN2_v2.") - return 0.0; - - if cfg.verbose: - print("(s/n)^2 is " + sn2list) - if cfg.sdssv_sn2 is True: - print("(s/n)^2 is " + sn2list_v2) - - if cfg.sdssv_sn2 is False: - return sn2list - else: - return [sn2list, sn2list_v2] - - -#### -def getMJD(cfg): - """Return the MJD of the fits file as a string. The MJD is taken from the fits header""" - - try: mjdlist = str(fits.getval(cfg.fits, 'MJD')) - except: - print("WARNING: " + cfg.fits + " does not contain the header keyword MJD.") - return "00000" - - if cfg.verbose: - print("MJD is " + mjdlist) - - return mjdlist - - -#### -def getStartTime(cfg): - """Return the start time of the fits file as a string. The start time is taken from the fits header""" - - try: start2list = str(fits.getval(cfg.fits, 'TAI-BEG')) - except: - print("WARNING: " + cfg.fits + " does not contain the header keyword TAI-BEG.") - return "0000000000.0" - - if cfg.verbose: - print("TAI-BEG is " + start2list) - start2list=str(float(start2list)/(24.0*3600.0)) - return start2list - - -#### -def getExposureTime(cfg): - """Return the exposure time of the fits file as a string. The exposure time is taken from the fits header""" - - try: exptime2list = str(fits.getval(cfg.fits, 'EXPTIME')) - except: - print("WARNING: " + cfg.fits + " does not contain the header keyword EXPTIME.") - return "0000.00" - - if cfg.verbose: - print("EXPTIME is " + exptime2list) - - return exptime2list - -def getConfig(cfg): - try: cfid = str(fits.getval(cfg.fits, 'CONFID')) - except: - print("WARNING: " + cfg.fits + " does not contain the header keyword CONFID.") - return("000000") - if cfg.verbose: - print("CONFID is " + cfid) - return cfid - -def getDesign(cfg): - try: dsid = str(fits.getval(cfg.fits, 'DESIGNID')) - except: - print("WARNING: " + cfg.fits + " does not contain the header keyword DESIGNID.") - return("00000") - if cfg.verbose: - print("EXPTIME is " + cfid) - return dsid - -#### -def getFitsInfo(cfg): - """Return the (exposure number, camera name) of the fits file (as strings)""" - - # Parse science frame name. e.g. sci-3690-b1-00105034.fits - sciParse = os.path.basename(cfg.fits).split("-") - sciConf = str(sciParse[1]) - sciCamera = str(sciParse[2]) - sciExposure = str(sciParse[3].split(".")[0]) - - if cfg.verbose: - print(("science exposure # " + sciExposure + " for configureID # " + sciConf + - " for camera " + sciCamera)) - - return (sciExposure, sciCamera) - - -#### -def addOrUpdateExposure(cfg): - """Add or update an exposure record with the (s/n)^2""" - - try: - db_config = opsdb.Configuration.get_or_create(configuration_id=cfg.confID, design=cfg.design)[0] - except: - db_config = opsdb.Configuration.create(design=cfg.design) - - - useTime = Time(float(getStartTime(cfg)),format="mjd").datetime #getMJD(cfg) - - - # In order to deal with the exposure we need some keys into other tables - try: - (expNum, camName) = getFitsInfo(cfg) - camera = opsdb.Camera.get(label=camName) - db_flavor = opsdb.ExposureFlavor.get(pk=1) # science -# survey = session.query(Survey).filter_by(label="BHM").one() - except: - print("Could not retrieve camera, survey or instrument\n\n") - raise - - # Check to see if the exposure exists - - try: - db_exp = opsdb.Exposure.get_or_none(configuration=db_config, - #start_time=getStartTime(cfg), -# survey = survey - exposure_no = expNum) - # start_time=useTime, - # exposure_time = getExposureTime(cfg), - # exposure_flavor=db_flavor) - except: - print("Problem querying for Exposure! \n\n") - raise - else: - # We don't do updates unless asked! - if not cfg.update: - print("Exposure record already exists!") - print("Use '--update' to update the (s/n)^2 entry of an existing record\n\n") - raise LookupError("Exposure record already exists. Use --update to update") - if cfg.verbose: - if db_exp is None: print("Found an existing exposure record") - if db_exp is None: - if cfg.verbose: - print("Creating new Exposure record.") - db_exp = opsdb.Exposure.create(configuration=db_config, - start_time=useTime, -# survey = survey - exposure_no = expNum, - comment = "", - exposure_time = getExposureTime(cfg), - exposure_flavor=db_flavor) - -# We always update the quality (it can change) -# exposure.exposure_status_pk = getQualityPK(cfg) -# depreciated with FPS - - # Check to see if the camera-frame exists - cframe = None - try: - cframe = opsdb.CameraFrame.get_or_none(exposure=db_exp, - camera=camera) - - except: - print("Problem querying for CameraFrame! \n\n") - raise - else: - # We don't do updates unless asked! - if not cfg.update: - print("CameraFrame record already exists!") - print("Use '--update' to update the (s/n)^2 entry of an existing record\n\n") - raise LookupError("CameraFrame record already exists. Use --update to update") - if cfg.verbose: - if cframe is not None: print("Found an existing CameraFrame record") - - # Create an CameraFrame if needed - - sn2val=getSN2(cfg) - if cfg.sdssv_sn2 is True: - sn2val_2 = sn2val[1] - sn2val = sn2val[0] - comment = f"{int(time.time())}({sn2val},{sn2val_2})" - else: - comment = f"{int(time.time())}({sn2val})" - #comment = str(int(time.time()))+"("+str(sn2val)+")" - if cframe is None: - if cfg.verbose: - print("Creating new CameraFrame record.") -# cframe = opsdb.CameraFrame.create(exposure=db_exp, camera=camera, -# sn2=sn2val,sn2_v2=sn2val_2, comment = comment) - cframe = opsdb.CameraFrame.create(exposure=db_exp, camera=camera, - sn2=sn2val, comment = comment) - else: - cframe.comment = comment + "," + cframe.comment -# cframe.sn2_v2 = sn2val_2 - cframe.sn2 = sn2val - cframe.save() - - - -#### -def main(args): - """Handle database connection and call the main script""" - - session = None - config = None - - try: - config = parseCmdLine(sys.argv[1:]) - if config.confID == '000000': return - if config.design == '00000': return - #(expNum, camName) = getFitsInfo(config) - #camera = opsdb.Camera.get(label=camName) - #print(camera) - #db_flavor = opsdb.ExposureFlavor.get(pk=1) - #print(db_flavor) - addOrUpdateExposure(config) - except: - return +import argparse +import os - #### Start of script if __name__=='__main__': - main(sys.argv[1:]) + parser = argparse.ArgumentParser( + prog=os.path.basename(sys.argv[0]), + description='Load SOS SN2 values into OpsDB') + parser.add_argument('fits',help='The fits file is the science frame output from sos-reduce') + parser.add_argument('confSum',help='confSummary-file') + parser.add_argument('-v','--verbose', action='store_true', help='verbose') + parser.add_argument('-u','--update', action='store_true', help='update (An error will occur if the exposure has already been processed, unless set)') + parser.add_argument('--sdssv_sn2', action='store_true', help='Load sdssv_sn2') + args = parser.parse_args() + + loadSN2Values(args.fits, args.confSum, verbose=args.verbose, + update=args.update, sdssv_sn2=args.sdssv_sn2) + diff --git a/bin/load_module.py b/bin/load_module.py deleted file mode 100755 index 367fee752..000000000 --- a/bin/load_module.py +++ /dev/null @@ -1,28 +0,0 @@ -import os.path as ptt -from os import getenv -import importlib -import sys - - -def import_module(path = '/uufs/chpc.utah.edu/sys/pkg/modules/init/python3'): - spec = importlib.util.spec_from_loader(ptt.basename(path), - importlib.machinery.SourceFileLoader(ptt.basename(path), path)) - pymodule = importlib.util.module_from_spec(spec) - spec.loader.exec_module(pymodule) - sys.modules[ptt.basename(path)] = pymodule - return(pymodule) - -def load_env(key, default=None): - val = getenv(key) - if val is None: - val = default - if val is None: - print('ERROR: '+key+' is not set') - exit() - return(val) - - -def load_module(): - mod = import_module(path = '/uufs/chpc.utah.edu/sys/pkg/modules/init/python3') - return(mod.module) - diff --git a/bin/mailhtml.sh b/bin/mailhtml.sh deleted file mode 100755 index 1d63ff0e2..000000000 --- a/bin/mailhtml.sh +++ /dev/null @@ -1,84 +0,0 @@ -#! /bin/sh -#------------------------------------------------------------------------------ -# This is a cron job that should run once per day from -# plate-mapper.apo.nmsu.edu, currently at 7:20 am. -# -# Look for all MJD directories, "$SPECTROLOG_DIR/[56789]*". -# Loop through each such directory. If a file "logfile*html" exists, then -# construct a message to send to the SDSS mailing list at: -# sdss-speclog.princeton.edu -# This message is a 1-line text message that links to the HTML file, which in -# turn links to any PostScript plots that were also in that same directory. -# -# S. Burles, APO, 4 May 2000 -#------------------------------------------------------------------------------ - -if [ -z "$SPECTROLOG_DIR" ] ; then - echo "Abort: SPECTROLOG_DIR not set!" - exit -fi -SOSLOG=$SPECTROLOG_DIR/sos.log - -## -# First, send data offsite, and then create mail messages. -## (Don't do this now, everybody gets the data themselves) -## (Need to at least move to rawcopy) -data_rsync.sh - -logs=`find $SPECTROLOG_DIR/[56789]* -name "logfile*html" -print | grep -v current` - -# The variable $thislog is the name of the HTML file with its full path. -# The variable $filename has the path stripped off. - -for thislog in $logs -do - dir=`echo $thislog | sed -n 's/\/[^\/]*$//p'` - filename=`echo $thislog | sed -n 's/\/.*\///p'` - mailfile=`echo $thislog | sed -n 's/logfile/mail/p'` - - if [ ! -f $mailfile ] - then - subject=`grep "APO Spectro" $thislog | grep TITLE | sed -n 's/<.[A-Z]*>//pg'` - echo $subject - echo "" > $mailfile - echo ''$filename'' >> $mailfile - echo "" >> $mailfile - - echo '!'"$filename<> $mailfile - cat $thislog | sed -e 's///' >> $mailfile - echo "EOT" >> $mailfile - - sn=`find $dir -name "snplot*ps" -print` -# sn=`ls $dir | grep snplot | grep ps` - for thissn in $sn - do - echo MAILHTML: SNFILE $thissn - snname=`echo $thissn | sed -n 's/\/.*\///p'` - echo '!'"$snname <> $mailfile - cat $thissn >> $mailfile - echo "EOT" >> $mailfile - done - - mail -s "$subject" sdss-speclog@astro.princeton.edu < $mailfile - -# Kill almost everything in the log directory -# rm -f $dir/fflat*.fits -# rm -f $dir/sci*.fits -# rm -f $dir/tset*.fits -# rm -f $dir/wset*.fits -# rm -f $dir/*.ps -# rm -f $dir/logfile*.fits -# rm -f $dir/logfile*.html - fi -done - -killdata.sh - -\mv $SOSLOG.6dayold $SOSLOG.7dayold -\mv $SOSLOG.5dayold $SOSLOG.6dayold -\mv $SOSLOG.4dayold $SOSLOG.5dayold -\mv $SOSLOG.3dayold $SOSLOG.4dayold -\mv $SOSLOG.2dayold $SOSLOG.3dayold -\mv $SOSLOG.1dayold $SOSLOG.2dayold -\mv $SOSLOG $SOSLOG.1dayold - diff --git a/bin/make_room.sh b/bin/make_room.sh deleted file mode 100755 index 369d28757..000000000 --- a/bin/make_room.sh +++ /dev/null @@ -1,65 +0,0 @@ -#! /bin/sh - -#------------------------------------------------------------------------------ -# Remove until 95% full or less -# -# S. Burles, APO, 7 June 2001 -#------------------------------------------------------------------------------ - -if [ -n "$BOSS_SPECTRO_DATA" ] -then - rawdata_dir=$BOSS_SPECTRO_DATA -fi - -if [ -n "$ASTROLOG_DIR" ] -then - speclog_dir=$ASTROLOG_DIR -fi - -if [ $1 ] -then - rawdata_dir=$1 -fi - -if [ $2 ] -then - speclog_dir=$2 -fi - -# Quit if rawdata is not specified - -if [ ! $rawdata_dir ] -then - exit -fi - -destdisk=`df $rawdata_dir | \ - awk '{if (FNR>1 && $5 * 1>95) {print $5 $6}}' | head -1` - -echo $destdisk - -if [ $destdisk ] -then - -# first get last directory - - dir=`ls $rawdata_dir | grep -e "[5-9][0-9][0-9][0-9][0-9]" | sort | head -1` - echo $dir - - echo rm -rf $rawdata_dir/$dir - rm -rf $rawdata_dir/$dir - - if [ $speclog_dir ] - then - echo rm -rf $speclog_dir/$dir - rm -rf $speclog_dir/$dir - fi - -# Recursively call itself to check again - - $0 $1 $2 - -fi - - - diff --git a/bin/manage_coadd_Schema b/bin/manage_coadd_Schema new file mode 100755 index 000000000..ec8801160 --- /dev/null +++ b/bin/manage_coadd_Schema @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 + +import os.path as ptt +import sys +import argparse + +from boss_drp.prep.manage_coadd_Schema import manage_coadd_Schema + +if __name__ == '__main__': + + parser = argparse.ArgumentParser( + prog = ptt.basename(sys.argv[0]), + description = 'Manage Custom Coadds') + + parser.add_argument('--coaddfile', '-f', default = None, help = 'File to store Coadding Schema (Default: {topdir}/{run2d}/fields/SDSSV_BHM_COADDS.par)') + parser.add_argument('--topdir', help = 'Override value for the environment variable $BOSS_SPECTRO_REDUX.', required=False) + parser.add_argument('--run2d', help = 'Override value for the environment variable $RUN2D', required=False) + parser.add_argument('--name', help = 'Name of Custom Coadd') + parser.add_argument('--DR', action = 'store_true', help = 'DR/IPL Coadding') + parser.add_argument('--rerun1d', '-r', action = 'store_true', help = 'Provides flag for coadd to be rerun though 1D analysis') + parser.add_argument('--active', '-a', action = 'store_true', help = 'Activate (or deactivate) a Coadding Schema') + parser.add_argument('--carton', '-c', nargs='*', help = "list of cartons") + parser.add_argument('--SDSSIDS', '-i', nargs='*', help = "list of SDSS_IDS (or CatalogIDs if use_catid is set)") + parser.add_argument('--program', '-p', nargs='*', help = "list of programs") + parser.add_argument('--legacy', '-l', nargs='*', help = "list of Legacy Tags to include") + parser.add_argument('--use_catid', '-u', action = 'store_true', help = "Use CatalogIDs rather then SDSS_IDs") + parser.add_argument('--use_firstcarton', action = 'store_true', help = "Use Firstcarton only for carton match (dont look at db)") + parser.add_argument('--cadence', '-t', help = 'Number of days between coadd epochs', default = 0.0) + parser.add_argument('--show', '-s', help = 'Show Configurations',action = 'store_true') + parser.add_argument('--mjd', help = 'Use data from these MJDs.', nargs='*') + args = parser.parse_args() + + + + manage_coadd_Schema(args.name, topdir=args.topdir, run2d=args.run2d, DR=args.DR, CARTON=args.carton, CATID=args.SDSSIDS, + PROGRAM=args.program, RERUN1D=args.rerun1d, CADENCE=args.cadence, MJD=args.mjd, ACTIVE=args.active, + legacy = args.legacy, coaddfile=args.coaddfile, show=args.show, use_catid=args.use_catid, + use_firstcarton=args.use_firstcarton) + + diff --git a/bin/parse_runtime b/bin/parse_runtime new file mode 100755 index 000000000..9ec3bfefa --- /dev/null +++ b/bin/parse_runtime @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 +import argparse +from boss_drp.sos import parse_runtime + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Process log file to calculate elapsed times for SOS.') + parser.add_argument('file_path', type=str, nargs='+', help='Path to the log file') + parser.add_argument('-a', '--all', action='store_true', help='Combine all daily logs of this format') + parser.add_argument('-s', '--stamp', action='store_true', help='Add Date stamp to output file') + args = parser.parse_args() + + parse_runtime(args.file_path, all=args.all, stamp=args.stamp) diff --git a/bin/plot_qa b/bin/plot_qa new file mode 100755 index 000000000..b80c5dbee --- /dev/null +++ b/bin/plot_qa @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 + +from boss_drp.post import plot_QA + +import argparse +import os + +def str2bool(v): + if isinstance(v, bool): + return v + if v.lower() in ('yes', 'true', 't', 'y', '1'): + return True + elif v.lower() in ('no', 'false', 'f', 'n', '0'): + return False + else: + raise argparse.ArgumentTypeError('Boolean value expected.') + +def str2none(v): + if v.lower() in ('none', 'null'): + return None + return v + + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Plot QA') + parser.add_argument('-r','--run2d', required=False, default = [os.getenv('RUN2D')], + nargs="*", help='List of run2ds') + parser.add_argument('-t','--test', required=False, default = [False], type=str2bool, + nargs="*", help='List of True/False test run2d (corresponding to run2d)') + parser.add_argument('--test_path', required=False, default='/test/sean/', + help='test Run2d path modification') + parser.add_argument('--mjds_low', required=False, default = [None], nargs="*", type=str2none, + help='List of mjd lower limits - use None for no limit (corresponding to run2d)') + parser.add_argument('--mjds_high', required=False, default = [None], nargs="*", type=str2none, + help='List of mjd upper limits - use None for no limit (corresponding to run2d)') + parser.add_argument('--clobber_lists', required=False, action='store_true', + help='Clobber list of fieldIDs') + parser.add_argument('--apo', required=False, action='store_false', + default=False,dest='lco', help=argparse.SUPPRESS) + parser.add_argument('--lco', required=False, action='store_true', + help='Flag for LCO vs APO') + parser.add_argument('--publish', required=False, action='store_true', + help='create publication version of plot') + parser.add_argument('--html', required=False, action='store_true', + help='Produces Plotly interactive HTML versions of the plots') + parser.add_argument('--html_name', required=False, default = None, + help='Name of HTML file (default = BOSS_QA-{obs}.html)') + parser.add_argument('--fast_opsdb','-f', required=False, action='store_true', + help='Skips OpsDB queries for SOS SN2 (and uses cached if available)') + parser.add_argument('--epoch','-e', required=False, action='store_true', + help='produce plots for epoch coadds') + parser.add_argument('--cron','-c', required=False, action='store_true', + help='Produce cronlogs') + args = parser.parse_args() + mjds={} + + for i, run2d in enumerate(args.run2d): + print(i,run2d) + if args.mjds_high[i] == 'None': + args.mjds_high[i] = None + elif args.mjds_high[i] is None: + args.mjds_high[i] = None + else: + args.mjds_high[i] = int(args.mjds_high[i]) + if args.mjds_low[i] == 'None': + args.mjds_low[i] = None + elif args.mjds_low[i] is None: + args.mjds_low[i] = None + else: + args.mjds_low[i] = int(args.mjds_low[i]) + mjds[run2d] = [args.mjds_low[i], args.mjds_high[i]] + obs='LCO' if args.lco is True else 'APO' + + if len(args.test) != len(args.run2d): + args.test.extend( [False] * (len(args.run2d)-len(args.test))) + + plot_QA(args.run2d, args.test, mjds=mjds, obs=obs, testp=args.test_path, + clobber_lists=args.clobber_lists, publish= args.publish, + epoch=args.epoch, html_name=args.html_name, html=args.html, + fast_opsdb = args.fast_opsdb, cron = args.cron) diff --git a/bin/plot_sdss_sky b/bin/plot_sdss_sky deleted file mode 100755 index 15d7419df..000000000 --- a/bin/plot_sdss_sky +++ /dev/null @@ -1,217 +0,0 @@ -#!/usr/bin/env python -# Based on the code of Jake VanderPlas -import numpy as np -import matplotlib -matplotlib.use('agg') -from matplotlib import pyplot as plt -from astropy.visualization import hist -from astropy.io import fits as pyf -import os -from astropy.table import Table -matplotlib.style.use('default') -import warnings -warnings.filterwarnings("ignore") -#------------------------------------------------------------ -# plot the RA/DEC in an area-preserving projection - -run2d = os.getenv('RUN2D') -redux = os.getenv('BOSS_SPECTRO_REDUX') - -file_c=redux+'/'+run2d+'/fieldlist-'+run2d+'.fits' -if os.path.exists(file_c): - hdu_list = pyf.open(file_c) - table_hdu = hdu_list[1] - table_data = table_hdu.data -else: table_data=Table(names=('RACEN','DECCEN', 'PROGRAMNAME')) -RA=table_data.field('RACEN') -DEC=table_data.field('DECCEN') -prog=table_data.field('PROGRAMNAME') -PROG_N=np.zeros(len(prog)) -PROG_C=[] -for i in range(0, len(prog)): - if 'RM' in prog[i]: - PROG_N[i]=1.0 - PROG_C.extend(['blue']) - elif 'MWM' in prog[i]: - PROG_N[i]=2.0 - PROG_C.extend(['red']) - elif 'AQMES-Medium' in prog[i]: - PROG_N[i]=3.0 - PROG_C.extend(['pink']) - elif 'AQMES-Wide' in prog[i]: - PROG_N[i]=4.0 - PROG_C.extend(['orange']) - elif 'AQMES-Bonus' in prog[i]: - PROG_N[i]=5.0 - PROG_C.extend(['magenta']) - elif 'eFEDS' in prog[i]: - PROG_N[i]=6.0 - PROG_C.extend(['green']) - elif 'OFFSET' in prog[i]: - PROG_N[i]=7.0 - PROG_C.extend(['black']) - else: - PROG_N[i]=0.0 - PROG_C.extend(['saddlebrown']) - - -PROG_C=np.array(PROG_C) -c1=0 -c2=0 -c3=0 -c4=0 -c5=0 -c6=0 -c7=0 -c0=0 - -# convert coordinates to degrees -RA *= np.pi / 180 -DEC *= np.pi / 180 -fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.0)) -ax = plt.axes(projection='mollweide') -plt.grid(True) -plt.title('SDSS-V plate/field locations') -phi = np.linspace(0, 2.*np.pi, 36) #36 points -for i in range(0, len(RA)): - r = np.radians(1.5) - if RA[i] < np.pi: - x = RA[i] + r*np.cos(phi) - else: - x = RA[i] + r*np.cos(phi)-2*np.pi - y = DEC[i] + r*np.sin(phi) - if PROG_C[i] == 'blue' and c1== 0: - ax.plot(x, y, color=PROG_C[i],label='RM') - c1=1 - elif PROG_C[i] == 'red' and c2== 0: - ax.plot(x, y, color=PROG_C[i],label='MWM') - c2=1 - elif PROG_C[i] == 'pink' and c3== 0: - ax.plot(x, y, color=PROG_C[i],label='AQMES-Medium') - c3=1 - elif PROG_C[i] == 'orange' and c4== 0: - ax.plot(x, y, color=PROG_C[i],label='AQMES-Wide') - c4=1 - elif PROG_C[i] == 'magenta' and c5== 0: - ax.plot(x, y, color=PROG_C[i],label='AQMES-Bonus') - c5=1 - elif PROG_C[i] == 'green' and c6== 0: - ax.plot(x, y, color=PROG_C[i],label='eFEDS') - c6=1 - elif PROG_C[i] == 'black' and c7==0: - ax.plot(x, y, color=PROG_C[i],label='Offset') - else: - ax.plot(x, y, color=PROG_C[i]) -plt.legend(loc=1,fontsize=10) -xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] -ax.set_xticklabels(xlab) -fig.tight_layout() -plt.savefig(redux+'/'+run2d+'/SDSSV_s.png',dpi=50) -plt.close() - -c1=0 -c2=0 -c3=0 -c4=0 -c5=0 -c6=0 -c7=0 -c0=0 - -fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.0)) -ax = plt.axes(projection='mollweide') -plt.grid(True) -plt.title('SDSS-V plate/field locations') -phi = np.linspace(0, 2.*np.pi, 36) #36 points -for i in range(0, len(RA)): - r = np.radians(1.5) - if RA[i] < np.pi: - x = RA[i] + r*np.cos(phi) - else: - x = RA[i] + r*np.cos(phi)-2*np.pi - y = DEC[i] + r*np.sin(phi) - if PROG_C[i] == 'blue' and c1== 0: - ax.plot(x, y, color=PROG_C[i],label='RM') - c1=1 - elif PROG_C[i] == 'red' and c2== 0: - ax.plot(x, y, color=PROG_C[i],label='MWM') - c2=1 - elif PROG_C[i] == 'pink' and c3== 0: - ax.plot(x, y, color=PROG_C[i],label='AQMES-Medium') - c3=1 - elif PROG_C[i] == 'orange' and c4== 0: - ax.plot(x, y, color=PROG_C[i],label='AQMES-Wide') - c4=1 - elif PROG_C[i] == 'magenta' and c5== 0: - ax.plot(x, y, color=PROG_C[i],label='AQMES-Bonus') - c5=1 - elif PROG_C[i] == 'green' and c6== 0: - ax.plot(x, y, color=PROG_C[i],label='eFEDS') - c6=1 - elif PROG_C[i] == 'black' and c7== 0: - ax.plot(x, y, color=PROG_C[i],label='eFEDS') - c7=1 - else: - ax.plot(x, y, color=PROG_C[i]) -plt.legend(loc=1,fontsize=10) -xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] -ax.set_xticklabels(xlab) -fig.tight_layout() -plt.savefig(redux+'/'+run2d+'/SDSSV.png',dpi=500) -plt.close() - -file_c=redux+'/'+run2d+'/spAll-'+run2d.replace('/','-')+'.fits' -if os.path.exists(file_c): - hdu_list = pyf.open(file_c) - table_hdu = hdu_list[1] - table_data = table_hdu.data -else: table_data=Table(names=('PLUG_RA','PLUG_DEC', 'PROGRAMNAME','NSPECOBS')) -try:RA1=table_data.field('PLUG_RA') -except: - try:RA1=table_data.field('FIBER_RA') - except:RA1=table_data.field('RACAT') -try:DEC1=table_data.field('PLUG_DEC') -except: - try:DEC1=table_data.field('FIBER_DEC') - except:DEC1=table_data.field('DECCAT') -prog1=table_data.field('PROGRAMNAME') -try:Nobs=table_data.field('NSPECOBS') -except: Nobs=np.zeros_like(DEC1) -RA1 *= np.pi / 180 -DEC1 *= np.pi / 180 -for i in range(0, len(RA1)): - if RA1[i] >= np.pi: - RA1[i]=RA1[i]-2*np.pi - -fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.0)) -ax = plt.axes(projection='mollweide') -plt.scatter(RA1, DEC1, s=2, c=Nobs, cmap=plt.cm.jet, - edgecolors='none', linewidths=0) -plt.grid(True) -plt.title('SDSS-V plate/field locations') -cb = plt.colorbar(cax=plt.axes([0.05, 0.1, 0.9, 0.05]), - orientation='horizontal')#, - #ticks=np.linspace(0, 0.05, 6)) -xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] -ax.set_xticklabels(xlab) -cb.set_label('Nobs') -fig.tight_layout() -plt.savefig(redux+'/'+run2d+'/SDSSV2_s.png',dpi=50) -plt.close() - -fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.0)) -ax = plt.axes(projection='mollweide') -plt.scatter(RA1, DEC1, s=0.5, c=Nobs, cmap=plt.cm.jet, - edgecolors='none', linewidths=0) -plt.grid(True) -plt.title('SDSS-V plate/field locations') -cb = plt.colorbar(cax=plt.axes([0.05, 0.1, 0.9, 0.05]), - orientation='horizontal')#, - #ticks=np.linspace(0, 0.05, 6)) -xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] -ax.set_xticklabels(xlab) -cb.set_label('Nobs') -fig.tight_layout() -plt.savefig(redux+'/'+run2d+'/SDSSV2.png',dpi=500) -plt.close() - diff --git a/bin/pullspectra b/bin/pullspectra deleted file mode 100755 index 4810f8f01..000000000 --- a/bin/pullspectra +++ /dev/null @@ -1,101 +0,0 @@ -#!/bin/bash -#------------------------------------------------------------------------------ -# Script to pull the SDSS spectra from Princeton to a local machine. -# This script uses the Unix "rsync" command, which will only copy over -# files that have been created or modified since the last time you -# ran this script. This lets you run this script each day in order to -# keep your data up-to-date. -# -# Syntax: -# pullspectra -# or -# pullspectra /my/directory -# -# Assume that the data comes from: -# alfred@spectro.princeton.edu:$BOSS_SPECTRO_REDUX -# Assume that the data goes to the local machine at the destination -# given by the first argument to this command, or, if not set, then to: -# $BOSS_SPECTRO_REDUX -# These defaults can be over-written by changing the appropriate lines -# in this script. For example, if you are copying the "test" reductions -# from Princeton, you would use this line: -# topremote=/u/dss/spectro_test -# -# This script is written to copy the following summary files: -# platelist* -# spAll* -# For each plate, the following files are copied: -# "*.ps *.log *.par spPlate* spZ*" -# If you really want to copy everything, including the intermediate outputs, -# then change the --include line below to: -# --include "*" -# -# Make sure that you have plenty of disk space! -# The spectra + 1D outputs fill ~125 Gb as of May 2002. -# The full set of outputs fills ~250 Gb as of May 2002. -# -# Rsync flags are as follows: -# -c always checksum -# -r recurse into directories -# -t preserve times -# -u update only (don´t overwrite newer files) -# -v increase verbosity -#------------------------------------------------------------------------------ - -remotehost=alfred@spectro.princeton.edu - -# Exit if this process is already running. - -n=`\ps -elf | grep pullspectra | grep -v grep | wc -l` -if [ X"$n" != X"" -a "$n" -gt 2 ]; then - echo "pullspectra already running at "`date` - exit -fi -exit - -# Use the first argument to this command as the local destination directory. -# Otherwise, use the environment variable $BOSS_SPECTRO_REDUX. - -if [ $# -ge 1 ] ; then - toplocal=$1 -else - toplocal=$BOSS_SPECTRO_REDUX -fi -if [ -z "$toplocal" ] ; then - echo "Environment variable BOSS_SPECTRO_REDUX is not set on local machine" - exit -fi - -# Use the environment variable $BOSS_SPECTRO_REDUX on the remote machine -# as the path for the spectroscopic data. - -topremote=`ssh1 $remotehost "echo $BOSS_SPECTRO_REDUX"` -if [ -z "$topremote" ] ; then - echo "Environment variable BOSS_SPECTRO_REDUX is not set on remote machine" - exit -fi - -echo Copy from $remotehost:$topremote -echo Copy to $toplocal - -exit -# Copy the summary files - -rsync -tuv --rsh="ssh1" $remotehost:$topremote/"platelist*" $toplocal -rsync -tuv --rsh="ssh1" $remotehost:$topremote/"spAll*" $toplocal - -# Loop through each plate, create the local directory for that plate, -# then copy the requested files. - -allplate=`ssh1 $remotehost "cd $topremote; ls -1d [0-9][0-9][0-9][0-9]"` -for thisplate in $allplate ; do - echo Working on plate=$thisplate - mkdir $toplocal/$thisplate - rsync -tuv --rsh="ssh1" \ - --include "*.ps *.log *.par spPlate* spZ*" \ - --exclude "*" \ - $remotehost:$topremote/$thisplate/"*" $toplocal/$thisplate -done - -exit -#------------------------------------------------------------------------------ diff --git a/bin/pushguider b/bin/pushguider deleted file mode 100755 index 149bc3bbc..000000000 --- a/bin/pushguider +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash -# Script to push the guider directories from sos.apo -> spectro.princeton - -cd /data/spectro/rawcopy -allmjd=`ls -d *` -for thismjd in $allmjd ; do - echo - echo Working on $thismjd - echo Copy from /data/spectro/rawcopy/$thismjd/guider - echo Copy to spectro.princeton.edu:/scr0/data/rawdata/$thismjd - rsync -arv --rsh="ssh" /data/spectro/rawcopy/$thismjd/guider \ - spectro.princeton.edu:/scr0/data/rawdata/$thismjd -done - diff --git a/bin/putils.py b/bin/putils.py deleted file mode 100644 index 65d2e5789..000000000 --- a/bin/putils.py +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env python - -import sys, os, os, subprocess -import string, imp, time, shlex -import gzip - -""" -putils is a set of miscellaneous python tools. - -Written by Gary Kushner (LBL). Nov 2009. Latest update April 2010. -""" - -def searchPath(name, paths): - """Search a path for a name (file, direcory, link, etc). Return the absolute - path to the found file or None""" - for path in paths: - if os.path.exists(os.path.join(path, name)): - return os.path.abspath(os.path.join(path, name)) - return None - -def loadModuleRaw(module): - """import a python module using a raw file name (doesn't need to end in .py)""" - path = searchPath(module, sys.path) - if path == None: - raise ImportError("No module named " + module) - return imp.load_source(module, path) - -def runCommand(cmd, echo=False, logCmd=None, prefix="", shell=False): - """Run a command with the option to asynchronously display or log output. - - If shell=False, the cmd needs to be a list, but if you pass in a string - it will be parsed into a list. - - echo will echo output to stdout. - - logCmd is a function pointer to use to put the output into a log. - - Returns (return code, output).""" - #prefix=prefix.encode() - output = ""#.encode() - - # Handle the command parsing - if isinstance(cmd, str) and not shell: - cmd = [c for c in shlex.split(cmd)] - - # Call the process - p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, - shell=shell) - - # Process output until process dies - while True: - l = p.stdout.readline().decode("utf-8") - if not l: break - output += l - l = l[:-1] # yea, only safe on unix... - if echo: - print(prefix + l) - if logCmd != None: - logCmd(prefix + l) - - return (p.wait(), output) - -def openRead(filename, mode = "r"): - """Open a gzip or normal file for text reading. Valid modes are 'r' and 'rb'""" - - gzSig = b'\x1f\x8b' - - if mode != 'r' and mode != 'rb': - raise ValueError("Illegal mode: " + mode) - - f = open(filename, mode) - - try: - if (f.read(2) == gzSig): - f = gzip.open(filename, mode) - finally: - f.seek(0) - - return f - - - - diff --git a/bin/putils.pyc b/bin/putils.pyc deleted file mode 100644 index 6850e0457..000000000 Binary files a/bin/putils.pyc and /dev/null differ diff --git a/bin/read_sos b/bin/read_sos new file mode 100755 index 000000000..757bf05be --- /dev/null +++ b/bin/read_sos @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 + +import os.path as ptt +import argparse +import sys +from boss_drp.sos.read_sos import read_SOS + +if __name__ == '__main__' : + parser = argparse.ArgumentParser( + prog=ptt.basename(sys.argv[0]), + description='Create Fiber info Summary for SOS') + parser.add_argument('directory', type=str, help='SOS Directory') + parser.add_argument('mjd', type=str, help='mjd') + parser.add_argument('--exp', '-e', type=str, help='Exposure Name', default=None) + parser.add_argument('--nocopy', '-n', default=False, action='store_true', help='Prevent copy to combined Directory') + parser.add_argument('--no_hash', default=False, action='store_true', help='Skip updating the file hash') + args = parser.parse_args() + + read_SOS(args.directory, args.mjd, args.exp, nocopy=args.nocopy, update_hash=(not args.no_hash)) + diff --git a/bin/readfibermaps b/bin/readfibermaps new file mode 100755 index 000000000..555f33954 --- /dev/null +++ b/bin/readfibermaps @@ -0,0 +1,75 @@ +#!/usr/bin/env python3 + +try: + from sdss_access import Access +except: + pass +import os.path as ptt +import os +import argparse +import platform +import sys + +from boss_drp.prep.readfibermaps import readfibermaps + + +if __name__ == "__main__": + + parser = argparse.ArgumentParser(description='Produces spfibermap file corresponding to a spplan2d (or single confSummary file for SOS)') + parser.add_argument('-p', '--spplan2d',required=False, help='spplan2d file for idlspec2d run') + parser.add_argument('--topdir', required=False, help='Alternative output directory (defaults to location of spplan2d file or '+ptt.join('/data', 'boss', 'sos', '{mjd}')+' for SOS)') + parser.add_argument('-c', '--clobber', required=False, help='overwrites previous spfibermap file', action='store_true') + if ('sdss5-bhm' in platform.node()): + parser.add_argument('-n', '--no_db', required=False, help='bypasses SDSSDB access and utilizes MOS target files from SDSS-V DR', action='store_true') + else: + parser.add_argument('-n', '--no_db', required=False, help=argparse.SUPPRESS,action='store_true') + parser.add_argument('--fast', required=False, help='When using --no_db, streamlines process and only gets parallax from MOS target files',action='store_true') + parser.add_argument('--datamodel', required=False, help='Supply a datamodel file (defaults to $IDLSPEC2D/datamodel/spfibermap_dm.par or $IDLSPEC2D/datamodel/spfibermap_sos_dm.par for SOS)') + parser.add_argument('-s', '--SOS', required=False, help='produces spfibermap for SOS', action='store_true') ### need SOS drivers??? does not use spplan2d + parser.add_argument('--release', required=False, help='sdss_access data release (defaults to sdsswork), required if you do not have proprietary access, otherwise see https://sdss-access.readthedocs.io/en/latest/auth.html#auth', default='sdsswork') + parser.add_argument('--remote', help='allow for remote access to data using sdss-access', action='store_true') + parser.add_argument('--dr19', help='Limit targeting flags to DR19 cartons', action='store_true') + + SOS = parser.add_argument_group(title='SOS', description='Options of use with SOS only') + SOS.add_argument('--confSummary', required=False, help='confSummary file for SOS (required for with --SOS)') + SOS.add_argument('--ccd', required=False, help='CCD for SOS', choices=['b2','r2','b1','r1']) + SOS.add_argument('--mjd', required=False, help='MJD of observation', type=str) + SOS.add_argument('--log', required=False, help='creates log file in topdir', action='store_true') + SOS.add_argument('--lco', required=False, help=argparse.SUPPRESS, action='store_true') + args = parser.parse_args() + args.SOS_log_dir = args.topdir #'/sdss5/boss/sos/logs/' + + if args.lco: + os.environ["OBSERVATORY"] = 'LCO' + + + if args.release != 'sdsswork': + if args.release not in Access().get_available_releases(): + parser.exit(status=0, message='ERORR: '+args.release+' is not a valid release') + else: + if args.remote: + try: + Access().remote() + except: + parser.exit(status=0, message='ERORR: No netrc file found. see https://sdss-access.readthedocs.io/en/latest/auth.html#auth') + + if args.SOS: + if (args.confSummary is None) or (args.ccd is None) or (args.mjd is None): + parser.print_help() + parser.exit(status=0, message='\n -----------------------------------------------------\n'+ + 'ERORR: --confSummary, --ccd, and --mjd are required with the --SOS option') + + SOS_opts = {'confSummary':args.confSummary, 'ccd':args.ccd, 'mjd':args.mjd, 'log':args.log, 'log_dir':args.SOS_log_dir} + else: + SOS_opts = None + if args.spplan2d is None: + parser.print_help() + parser.exit(status=0, message='\n -----------------------------------------------------\n'+ + 'ERORR: --spplan2d is required without the --SOS option') + readfibermaps(spplan2d=args.spplan2d, topdir=args.topdir, clobber=args.clobber, SOS=args.SOS, + no_db=args.no_db, fast=args.fast, datamodel = args.datamodel, SOS_opts=SOS_opts, + release = args.release, remote = args.remote, dr19=args.dr19) + + + + diff --git a/bin/reformat_sdss_spectra.py b/bin/reformat_sdss_spectra.py deleted file mode 100755 index afeec257f..000000000 --- a/bin/reformat_sdss_spectra.py +++ /dev/null @@ -1,673 +0,0 @@ -#!/usr/bin/env python - -""" -Reformat spectra into a single fits file per object, combining all necessary -pieces from spPlate, spCFrame, spFrame, spFlat, and spZbest - -Stephen Bailey, Summer 2011 - -Bugs/Features: - - Assumes RUN1D=RUN2D, and gets them from specObj (not env vars), assuming - that specObj has one and only one RUN2D. -""" - -import sys -import os -import os.path -from glob import glob #- File pattern globbing (spFrame*.fits) -import re #- Regular expressions -from time import asctime -import numpy as N -import pyfits -import fitsio - -NFIBER = 640 - -def write_readme(filename, header=None, allexp=True): - """ - Write a file explaining the directory structure and file format. - - Optional inputs: - header : prepend this header string - allexp : if True, also describe per-exposure HDUs - """ - import time - fx = open(filename, 'w') - print >> fx, "Spectra repackaging generated on " + time.asctime() - if header is not None: - print >> fx - print >> fx, header - - print >> fx, """ -For each object, there is one file per plugging (plate-mjd-fiber), -containing both the coadded spectrum and optionally the individual exposure -frames. This groups the information from spFrame, spCFrame, spFlat, spPlate, -spZbest, spZline, and specObj so that for each object you only need to read -one file. - - HDU 0 : Header info - HDU 1 : Coadded spectrum - HDU 2 : Summary metadata copied from specObj - HDU 3 : Line fitting metadata from spZline - HDU 4+ : [Optional] Individual frame spectra [B, R for each exposure] - -These are grouped in subdirectories by plate, e.g.: - - README.txt : this file - specObj-XXX.fits : subset of specObj*.fits (e.g. qso, star, gal) - 4080/ : dir for objects on plate 4080 - spec-4080-55368-0487.fits : spec-PLATE-MJD-FIBER - spec-4080-55471-0485.fits : different plugging, same plate - ... - -Note that the same THING_ID may have been observed on more than -one plate. Use the THING_ID, PLATE, MJD, FIBERID metadata in -specObj to find the files you need. - -The format of each spec file is: - -HDU 0 : - Header : from input spPlate with additional keywords from specObj: - - Keyword specObjColumn Comment - ------- ----------- ------- - [*] PLUG_RA PLUG_RA RA of object [deg] - [*] PLUG_DEC PLUG_DEC dec of object [deg] - THING_ID THING_ID Unique object identifier - FIBERID FIBERID Fiber number (1-%d) - - [*] Note that RA and DEC already exist in the spPlate headers - but they are the telescope boresite RA and DEC, not the - RA and DEC of the object. - - Keywords that spPlate inherited from a single exposure have - been removed from the primary HDU. Other keywords like NEXP - have been changed to reflect the actual exposures which went - into this file (e.g. not including the exposures for fibers - on a different spectrograph) - - Data : None - -HDU 1 : Coadded Spectrum - Header : Minimum to define table - Data : Binary table with columns taken from spPlate and spZbest: - flux : flux in 10^-17 ergs/s/cm^2/A - loglam : log10(lambda[A]) - ivar : inverse variance - and_mask : mask bits which affect every spectrum in coadd - or_mask : mask bits which affect at least one spectrum in coadd - wdisp : wavelength dispersion in dloglam units - sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A - model : best fit model for classification & redshift (from spZbest) - -HDU 2 : Copy of row for this object from specObj table - http://data.sdss3.org/datamodel/files/SPECTRO_REDUX/specObj.html - -HDU 3 : Copy of rows for this object from spZline table - http://data.sdss3.org/datamodel/files/SPECTRO_REDUX/RUN2D/PLATE4/RUN1D/spZline.html""" % NFIBER - - #- Continue with explanation of per-exposure HDUs if included - if allexp: - print >> fx, """ -HDU 4 .. n+4 : Individual frames. - For each exposure there is one HDU for the red camera and one for the blue. - These are in the order of the EXPIDnn keywords in the HDU 0 header, and - their EXTNAME keywords match the EXPIDnn keywords from HDU 0. - - Header: Taken from HDU0 of individual spCFrame files - Keyword YPIX0 defines the y-pixel location of the first flux bin. - - Data: Binary table with columns taken from spCFrame files: - flux - loglam - ivar - mask - wdisp - sky - calib : conversion between flux and electrons: flux = electrons*calib - x : x-pixel location of trace on CCD - -How to convert flux, sky, and ivar back to extracted photons (electrons): - - obj_photons = flux / calib - sky_photons = sky / calib - ivar_photons = ivar * calib^2 - (includes variance from all sources: object, sky, read noise, etc) - -You can approximately estimate the non-photon variance with: - - photons = (flux + sky) / calib - var_photons = 1.0 / (ivar * calib^2) - var_extra_photons = var_photons - photons - var_extra_flux = var_extra_photons * calib - -""" - else: - print >> fx, "\nIndividual exposures are not included in these files" - - fx.close() - -class CFrame(object): - """ - Convenience wrapper class for spCFrame, spFrame, and spFlat data - - Derives spFrame dir/name from spCFrame, and assumes that it is gzipped. - """ - def __init__(self, cframefile): - - #- Load original framefile and find out original dimensions - ### print cframefile - framefile = cframefile.replace('spCFrame', 'spFrame') + '.gz' - if not os.path.exists(framefile): - framefile = cframefile.replace('spCFrame', 'spFrame') - - eflux = pyfits.getdata(framefile, 0) - nfiber, npix = eflux.shape - - #- Load spCFrame file; trim arrays back to original size - fx = pyfits.open(cframefile) - self.header = fx[0].header - self.flux = fx[0].data[:, 0:npix] - self.ivar = fx[1].data[:, 0:npix] - self.mask = fx[2].data[:, 0:npix] - self.loglam = fx[3].data[:, 0:npix] - self.wdisp = fx[4].data[:, 0:npix] - self.sky = fx[6].data[:, 0:npix] - - #- Load superflat spCFrame[8] and fiberflat spFlat[0] - filedir, basename = os.path.split(cframefile) - ### superflat = fx[8].data[:, 0:npix] - superflat = fx[7].data[:, 0:npix] #- Can this be trusted ??? - flatfile = fx[0].header['FLATFILE'].replace('sdR', 'spFlat') - flatfile = flatfile.replace('.fit', '.fits.gz') - flatfile = os.path.join(filedir, flatfile) - fiberflat = pyfits.getdata(flatfile, 0) - - #- Calculate calibration vector: flux = electrons * calib - electrons = eflux * fiberflat * superflat - ii = N.where(electrons != 0.0) - self.calib = N.zeros(self.flux.shape) - self.calib[ii] = self.flux[ii] / electrons[ii] - - fx.close() - -def load_spCFrame_files(platedir): - """ - Load all spCFrame files in a given directory. - Return a dictionary of CFrame objects, keyed by camera-expid string - """ - print "loading spCFrame files from " + platedir - cframes = dict() - for filename in glob(os.path.join(platedir, 'spCFrame-*.fits')): - framefile = filename.replace('spCFrame', 'spFrame') - framefilegz = framefile + '.gz' - if not os.path.exists(filename): - print >> sys.stderr, "ERROR: missing %s" % os.path.basename(filename) - elif not os.path.exists(framefile) and not os.path.exists(framefilegz): - print >> sys.stderr, "ERROR: missing %s" % os.path.basename(framefile) - else: - print ' ', os.path.basename(filename), asctime() - expid = get_expid(filename) - try: - cframes[expid] = CFrame(filename) - except ValueError: - print "ERROR: problem loading %s" % os.path.basename(filename) - - return cframes - -def good_ivar(ivar, fiber=-1, expid='coadd'): - """ - return indices of for array from first non-zero ivar to the last - non-zero ivar. i.e. trim off leading and trailing contiguously zero ivars. - - If all ivar==0, return indices for full array since code might get - grumpy with completely blank arrays. - - Input fiber number is optional, used only for printing warning. - """ - if N.all(ivar == 0): - print 'WARNING: All ivar==0 for fiber %d exp %s' % (fiber, expid) - return N.arange(len(ivar)) - - ivar_good = N.where(ivar > 0.0)[0] - return N.arange(ivar_good[0], ivar_good[-1]+1) - -def get_expid(filename): - """parse /path/to/spBlat-b1-00123456.fits.gz into b1-00123456""" - try: - return re.search('-([br][12]-\d{8}).fits', filename).group(1) - except AttributeError: #- search failed - return None - -def process_plate(datadir, code_version, outdir, plate, mjd, fibers, specObj, allexp=True): - """ - Process a plate's worth of objects - - Inputs - datadir : input base directory, e.g. $SPECTRO_REDUX/v5_4_40/ - outdir : output base directory - plate : plate to process - mjd : mjd to process - fibers : *array* of fibers on this plate-mjd to process - specObj : metadata from specObj which includes these spectra - allexp : if False, don't write individual exposures (default True) - - Outputs: - writes files to outdir/plate/spec-plate-mjd-fiber.fits - """ - #- Load all C/Frame files for this plate - platedir = '%s/%s/%04d/' % (datadir, code_version, plate) - if allexp: - cframes = load_spCFrame_files(platedir) - - #- Open spPlate, spZbest, and spZline files - spPlateFile = '%s/spPlate-%04d-%05d.fits' % (platedir, plate, mjd) - print 'Processing', os.path.basename(spPlateFile) - FXplate = pyfits.open(spPlateFile, memmap=True) - - spZbestFile = '%s/spZbest-%04d-%05d.fits' % \ - (platedir, plate, mjd) - FXzbest = pyfits.open(spZbestFile, memmap=True) - - spZlineFile = '%s/spZline-%04d-%05d.fits' % \ - (platedir, plate, mjd) - if os.path.exists(spZlineFile): - zline = pyfits.getdata(spZlineFile, 1) - else: - print >> sys.stderr, "ERROR: missing %s" % spZlineFile - zline = None - - #- HDU0 will be a modified copy of the spPlate header - plate_hdu = pyfits.PrimaryHDU(header=FXplate[0].header) - - #- Track missing exposures but print error only once - missing_exps = set() - - #- Loop over fibers on this plate on this MJD - for fiber in fibers: - #- HDU1 : binary table of coadd flux, log(lambda), ivar, etc. - flux = FXplate[0].data[fiber-1] - c0 = FXplate[0].header['COEFF0'] - c1 = FXplate[0].header['COEFF1'] - loglam = c0 + c1*N.arange(len(flux)) - ivar = FXplate[1].data[fiber-1] - and_mask = FXplate[2].data[fiber-1] - or_mask = FXplate[3].data[fiber-1] - wdisp = FXplate[4].data[fiber-1] - sky = FXplate[6].data[fiber-1] - model = FXzbest[2].data[fiber-1] - - #- trim off leading and trailing ivar=0 bins, - #- but keep ivar=0 bins in the middle of the spectrum - igood = good_ivar(ivar, fiber) - - #- Create coadded spectrum table for HDU 1 - cols = list() - cols.append( pyfits.Column(name='flux', format='E', array=flux[igood]) ) - cols.append( pyfits.Column(name='loglam', format='E', array=loglam[igood]) ) - cols.append( pyfits.Column(name='ivar', format='E', array=ivar[igood]) ) - cols.append( pyfits.Column(name='and_mask', format='J', array=and_mask[igood]) ) - cols.append( pyfits.Column(name='or_mask', format='J', array=or_mask[igood]) ) - cols.append( pyfits.Column(name='wdisp', format='E', array=wdisp[igood]) ) - cols.append( pyfits.Column(name='sky', format='E', array=sky[igood]) ) - cols.append( pyfits.Column(name='model', format='E', array=model[igood]) ) - - cols = pyfits.ColDefs(cols) - coadd_hdu = pyfits.new_table(cols) - - #- HDU 2: copy of specObj row - hdux = [plate_hdu, coadd_hdu] - ispec = N.where( (specObj.PLATE == plate) & \ - (specObj.MJD == mjd) & \ - (specObj.FIBERID == fiber) )[0][0] - - hdux.append( pyfits.BinTableHDU(data=specObj[ispec:ispec+1]) ) - - #- HDU 3: copy of rows from spZline - if zline is not None: - ii = N.where(zline.FIBERID == fiber)[0] - hdux.append( pyfits.BinTableHDU(data=zline[ii]) ) - else: - hdux.append( pyfits.BinTableHDU(data=None) ) - - #- HDU 4 .. 4+n : spectra from individual exposures - #- Loop over individual exposures. Do this even if we aren't - #- writing those HDUs, so that we can update the headers with - #- which exposures went into the coadd - nexp = 0 - fullexpids = list() - for iexp in range(1, 100): - key = 'EXPID%02d' % iexp - if key not in FXplate[0].header: - break - - expid = FXplate[0].header[key][0:11] #- e.g. b1-00123456 - - #- check camera for this fiber - camera = expid[0:2] - if fiber <= NFIBER/2 and camera in ('b2', 'r2'): - continue - elif fiber > NFIBER/2 and camera in ('b1', 'r1'): - continue - - #- If we already know this is missing, just move on - if expid in missing_exps: - continue - - if allexp and expid not in cframes: - ### raise IOError, 'Exposure %s not found' % expid - print 'ERROR: Fiber %s Exposure %s not found' % (fiber, expid) - missing_exps.add(expid) - continue - - #- If we got this far, we're going to use this exposure - fullexpids.append(FXplate[0].header[key]) - nexp += 1 - - if allexp: - nfiber = cframes[expid].header['NAXIS2'] - ifib = (fiber-1) % nfiber - d = cframes[expid] - - #- trim off leading and trailing ivar=0 bins, - #- but keep ivar=0 bins in the middle of the spectrum - igood = good_ivar(d.ivar[ifib], fiber, expid) - - cols = list() - cols.append( pyfits.Column(name='flux', format='E', array=d.flux[ifib][igood]) ) - cols.append( pyfits.Column(name='loglam', format='E', array=d.loglam[ifib][igood]) ) - cols.append( pyfits.Column(name='ivar', format='E', array=d.ivar[ifib][igood]) ) - cols.append( pyfits.Column(name='mask', format='J', array=d.mask[ifib][igood]) ) - cols.append( pyfits.Column(name='wdisp', format='E', array=d.wdisp[ifib][igood]) ) - cols.append( pyfits.Column(name='sky', format='E', array=d.sky[ifib][igood]) ) - cols.append( pyfits.Column(name='calib', format='E', array=d.calib[ifib][igood]) ) - - #- Place holder - someday we may want to calculate and include - #- the "extra" variance which isn't proportional to the signal. - ### n = len(d.flux[ifib]) - ### cols.append( pyfits.Column(name='var_extra', format='E', array=N.zeros(n) ) ) - - cols = pyfits.ColDefs(cols) - hdux.append( pyfits.new_table(cols, header=d.header) ) - - #- Convert to pyfits HDUList - hdux = pyfits.HDUList( hdux ) - - #- Change some keyword headers which don't make sense when - #- converting a plate header into a single object header - - #- HDU 0 is now a blank image, so fitsverify doesn't like CRPIX1 etc. - hdr = hdux[0].header - del hdr['CRPIX1'] - del hdr['CRVAL1'] - del hdr['CTYPE1'] - del hdr['CD1_1'] - - #- Remove original expid list which has both SP1 and SP2 - nexp_orig = hdr['NEXP'] - del hdr['NEXP'] - for iexp in range(nexp_orig): - expid = "EXPID%02d" % (iexp+1, ) - del hdr[expid] - - #- Add new NEXP, EXPID list for just the exposures in this file - #- Update EXTNAME of individual exposure HDUs with this expid - hdr.update('NEXP', nexp, 'Number of individual exposures') - for iexp, expid in enumerate(fullexpids): - key = "EXPID%02d" % (iexp+1, ) - hdr.update(key, expid) - if allexp: - ### print "Setting EXTNAME for %d to %s" % (4+iexp, expid) - hdux[4+iexp].update_ext_name(expid) - - #- Remove mention of the other spectrograph - #- sp1 - if fiber <= NFIBER: #- sp1 - del hdr['NEXP_B2'] - del hdr['NEXP_R2'] - del hdr['EXPT_B2'] - del hdr['EXPT_R2'] - else: #- sp2 - del hdr['NEXP_B1'] - del hdr['NEXP_R1'] - del hdr['EXPT_B1'] - del hdr['EXPT_R1'] - - #- Delete a bunch of per-exposure keywords which came along for - #- the ride in the spPlate header - for keyword in """ - NGUIDE - SEEING20 SEEING50 SEEING80 - RMSOFF20 RMSOFF50 RMSOFF80 AZ ALT AIRMASS - DAQVER CAMDAQ SUBFRAME ERRCNT SYNCERR SLINES - PIXERR PLINES PFERR DIDFLUSH TAI-BEG TAI-END - DATE-OBS OBJSYS ROTTYPE ROTPOS BOREOFF ARCOFFX ARCOFFY - OBJOFFX OBJOFFY CALOFFX CALOFFY CALOFFR GUIDOFFX GUIDEOFFY - GUIDOFFR FOCUS - M2PISTON M2XTILT M2YTILT M2XTRAN M2YTRAN - M1PISTON M1XTILT M1YTILT M1XTRAN M1YTRAN - SCALE POINTING GUIDER1 SLITID1 SLIDID2 GUIDERN - COLLA COLLB COLLC - HARTMANN MC1HUMHT MC1HUMCO MC1TEMDN MC1THT MC1TRCB MC1TRCT - MC1TBCB MC1TBCT AUTHOR TWOPHASE XSIGMA XSIGMIN XSIGMAX - WSIGMA WSIGMIN WSIGMAX LAMPLIST SKYLIST UNAME - """.split(): - del hdr[keyword] - - #- Add some additional header keywords - hdr.update('PLUG_RA', specObj.PLUG_RA[ispec], 'RA of object [deg]') - hdr.update('PLUG_DEC', specObj.PLUG_DEC[ispec], 'dec of object [deg]') - hdr.update('SPEC_ID', specObj.SPECOBJID[ispec], 'Unique object identifier') - hdr.update('FIBERID', specObj.FIBERID[ispec], 'Fiber number (1-%d)' % NFIBER) - - #- Update other headers with useful comments - hdux[1].header.add_comment('Coadded spectrum') - hdux[1].update_ext_name('COADD') - hdux[2].header.add_comment('Metadata from specObj row') - hdux[2].update_ext_name('specObj') - if zline is not None: - hdux[3].header.add_comment('Line fits from spZline') - else: - hdux[3].header.add_comment('spZline information missing; blank HDU') - hdux[3].update_ext_name('SPZLINE') - - #- BUNIT is invalid for binary table HDUs - for i in range(1, len(hdux)): - if 'BUNIT' in hdux[i].header: - del hdux[i].header['BUNIT'] - - #- Write final file - outfile = '%s/spec-%04d-%05d-%04d.fits' % (outdir, plate, mjd, fiber) - ### print mjd, os.path.basename(outfile) - try: - hdux.writeto(outfile, clobber=True, output_verify="fix") - except pyfits.core.VerifyError, e: - print "FATAL: Unable to write %s" % outfile - raise e - - #- Done with this plate-mjd; close input files - FXplate.close() - FXzbest.close() - -def get_selection_doc(opts): - """ - Return a documentation string about which data cuts were applied. - """ - doc = list() - doc.append("Object selection criteria:") - if opts.plates is not None: - if opts.subset == "ALL": - doc.append(" All plates") - else: - doc.append(" Plates: " + ", ".join(map(str, opts.plates)) ) - if opts.fibers is not None: - doc.append(" Fibers: " + opts.fibers_orig ) - else: - if opts.subset == "ALL": - doc.append(" All objects kept") - doc.append(" Optional specObj-XXX subsets defined by") - doc.append(" qso:") - doc.append(" - Targetted as QSOs") - doc.append(" - Targetted as GALAXY but CLASS=QSO") - doc.append(" - FPG scan IDed as QSO") - doc.append(" - QSO ancillary programs") - doc.append(" gal: OBJTYPE=GALAXY or CLASS=GALAXY") - doc.append(" star: OBJTYPE=SPECTROPHOTO_STD or CLASS=STAR") - doc.append(" std: OBJTYPE=SPECTROPHOTO_STD") - doc.append(" sky: OBJTYPE=SKY") - elif opts.subset == 'QSO': - doc.append(" Only quasar targets:") - doc.append(" - Targetted as QSOs") - doc.append(" - Targetted as GALAXY but CLASS=QSO") - doc.append(" - FPG scan IDed as QSO") - doc.append(" - QSO ancillary programs") - elif opts.subset == 'GALAXY': - doc.append(" Only galaxies: OBJTYPE=GALAXY or CLASS=GALAXY") - elif opts.subset == 'STAR': - doc.append(" Only stars: OBJTYPE=SPECTROPHOTO_STD or CLASS=STAR") - elif opts.subset in ('STD', 'SPECTROPHOTO_STD'): - doc.append(" Only SpecPhoto standard stars: OBJTYPE=SPECTROPHOTO_STD") - elif opts.subset == 'SKY': - doc.append(" Only sky fibers: OBJTYPE=SKY") - - return "\n".join(doc) - -def write_file_list(filename, spectra): - FX = open(filename, 'w') - for plate, mjd, fiber in sorted( zip(spectra.PLATE, spectra.MJD, spectra.FIBERID) ): - specfile = "%04d/spec-%04d-%05d-%04d.fits" % (plate, plate, mjd, fiber) - print >> FX, specfile - - FX.close() - -def parse_string_range(s): - """ - e.g. "1,2,5-8,20" -> [1,2,5,6,7,8,20] - - modified from Sven Marnach, - http://stackoverflow.com/questions/5704931/parse-string-of-integer-sets-with-intervals-to-list - - Feature/Bug: Only works with positive numbers - """ - ranges = (x.split("-") for x in s.split(",")) - x = [i for r in ranges for i in range(int(r[0]), int(r[-1]) + 1)] - return x - -def check_options(opts, args): - """Sanity check options""" - if opts.specObj is None: - parser.print_help() - print "You must specify --specObj" - sys.exit(1) - - if opts.outdir is None: - parser.print_help() - print "You must specify --outdir" - sys.exit(1) - - if opts.fibers is not None: - if opts.plates is None or len(opts.plates) != 1: - print "If you specify fibers, you must specify one and only one plate" - sys.exit(1) - -#----------------------------------------------------------------------------- -#- Parse command line options and call subroutines - -import optparse - -parser = optparse.OptionParser(usage = "%prog [options]") -parser.add_option("-s", "--specObj", type="string", help="input specObj file") -parser.add_option("-i", "--indir", type="string", help="input directory [$SPECTRO_REDUX/$RUN2D/]") -parser.add_option("-o", "--outdir", type="string", help="output directory") -### parser.add_option("-m", "--meta", action='store_true', help="only write top level metadata (README, spSome)") -### parser.add_option("-u", "--update", action='store_true', help="update missing plates; don't overwrite others") -parser.add_option("-p", "--plates", type="string", help="plates to process (comma separated, no spaces) default to all plates") -parser.add_option("-c", "--coadd", action='store_true', help="Only write coadded spectrum (no individual exposures)") -parser.add_option("-f", "--fibers", type="string", help="Comma separated list of fibers") -### parser.add_option("-S", "--subset", type="string", default='ALL', help="Subset of objects to process [ALL, QSO, GALAXY, STAR, STD, or SKY]") - -opts, args = parser.parse_args() - -#- Expand comma separated lists into arrays of integers -if opts.plates is not None: - opts.plates = [int(x) for x in opts.plates.split(',')] -if opts.fibers is not None: - opts.fibers_orig = opts.fibers - opts.fibers = parse_string_range(opts.fibers) - -#- Sanity check -check_options(opts, args) - -if not os.path.isdir(opts.outdir): - os.makedirs(opts.outdir) - -#- Load specObj File -print "Reading specObj file", asctime() -try: - # spectra = pyfits.getdata(opts.specObj).view(N.recarray) - spectra = fitsio.read(opts.specObj, 1).view(N.recarray) -except MemoryError: - print "ERROR: Not enough memory to read the specObj file." - print "If you are on riemann, try again from an interactive batch job:" - print " qsub -I -q fast -X -V" - sys.exit(1) - -#- Default input directory is SPECTRO_REDUX/RUN2D, -#- with RUN2D from specObj - -if opts.indir is None: - opts.indir = os.environ['SPECTRO_REDUX'] - -#- If plates aren't specified, use all of them -if opts.plates is None: - opts.plates = sorted(set(spectra.PLATE)) - print "Using all %d plates" % len(opts.plates) -else: - ii = (spectra.PLATE == opts.plates[0]) - for plate in opts.plates[1:]: - ii |= (spectra.PLATE == opts.plates[0]) - spectra = spectra[ii] - -#- Keep only target type subset -if opts.fibers is not None: - print "Fibers specified; not trimming by target type" - ii = N.zeros(len(spectra), dtype='bool') - for fiber in opts.fibers: - ii |= (spectra.FIBERID == fiber) - spectra = spectra[ii] - -#- Write README -# if opts.meta: -# print "Writing README.txt" -# header = "Input data from:\n %s\n" % datadir -# header += get_selection_doc(opts) -# write_readme(opts.outdir + '/README.txt', header=header) - -#- For efficiency, process one plate at a time -print "Starting plate processing", asctime() -for plate in sorted(set(opts.plates)): - print 'Plate %d : %s' % (plate, asctime()) - - #- find MJDs for this plate - ii = N.where(spectra.PLATE == plate)[0] - plate_mjds = sorted(set(spectra.MJD[ii])) - - for mjd in plate_mjds: - #- Process fibers for just this PLATE-MJD - ii = N.where((spectra.PLATE == plate) & (spectra.MJD == mjd)) - fibers = spectra.FIBERID[ii] - if len(set(spectra.RUN2D[ii])) > 1: - print >> sys.stderr, "ERROR: plate %d MJD %d has more than one RUN2D" % (plate, mjd) - print >> sys.stderr, set(spectra.RUN2D[ii]) - sys.exit(0) - - run2d = spectra.RUN2D[ii][0].strip() - outdir = '%s/%s/spectra/%04d/' % (opts.outdir, run2d, plate) - if not os.path.isdir(outdir): - os.makedirs(outdir) - process_plate(opts.indir, run2d, outdir, plate, mjd, fibers, spectra, allexp=not opts.coadd) - -print "Wrote files to " + opts.outdir -print "Done", asctime() - - diff --git a/bin/reformat_spectra.py b/bin/reformat_spectra.py deleted file mode 100755 index db3c505dc..000000000 --- a/bin/reformat_spectra.py +++ /dev/null @@ -1,784 +0,0 @@ -#!/usr/bin/env python - -""" -Reformat spectra into a single fits file per object, combining all necessary -pieces from spPlate, spCFrame, spFrame, spFlat, and spZbest - -Stephen Bailey, Summer 2011 - -Bugs/Features: - - Assumes RUN1D=RUN2D, and gets them from spAll (not env vars), assuming - that spAll has one and only one RUN2D. - -Julien Guy, Sept. 2015 : - add option --tpcorr to include spectro-photometric corrections from fibers positioned at LAMBDA_EFF=4000A -""" - -import sys -import os -import os.path -from glob import glob #- File pattern globbing (spFrame*.fits) -import re #- Regular expressions -from time import asctime -import numpy as N -import pyfits -from astropy.io import fits -import h5py #- Needed to read spectro-photometric calibration correction file - -def write_readme(filename, header=None, allexp=True): - """ - Write a file explaining the directory structure and file format. - - Optional inputs: - header : prepend this header string - allexp : if True, also describe per-exposure HDUs - """ - import time - fx = open(filename, 'w') - print >> fx, "Spectra repackaging generated on " + time.asctime() - if header is not None: - print >> fx - print >> fx, header - - print >> fx, """ -For each object, there is one file per plugging (plate-mjd-fiber), -containing both the coadded spectrum and optionally the individual exposure -frames. This groups the information from spFrame, spCFrame, spFlat, spPlate, -spZbest, spZline, and spAll so that for each object you only need to read -one file. - - HDU 0 : Header info - HDU 1 : Coadded spectrum - HDU 2 : Summary metadata copied from spAll - HDU 3 : Line fitting metadata from spZline - HDU 4+ : [Optional] Individual frame spectra [B, R for each exposure] - -These are grouped in subdirectories by plate, e.g.: - - README.txt : this file - spAll-XXX.fits : subset of spAll*.fits (e.g. qso, star, gal) - 4080/ : dir for objects on plate 4080 - spec-4080-55368-0487.fits : spec-PLATE-MJD-FIBER - spec-4080-55471-0485.fits : different plugging, same plate - ... - -Note that the same THING_ID may have been observed on more than -one plate. Use the THING_ID, PLATE, MJD, FIBERID metadata in -spAll to find the files you need. - -The format of each spec file is: - -HDU 0 : - Header : from input spPlate with additional keywords from spAll: - - Keyword spAllColumn Comment - ------- ----------- ------- - [*] PLUG_RA PLUG_RA RA of object [deg] - [*] PLUG_DEC PLUG_DEC dec of object [deg] - THING_ID THING_ID Unique object identifier - FIBERID FIBERID Fiber number (1-1000) - - [*] Note that RA and DEC already exist in the spPlate headers - but they are the telescope boresite RA and DEC, not the - RA and DEC of the object. - - Keywords that spPlate inherited from a single exposure have - been removed from the primary HDU. Other keywords like NEXP - have been changed to reflect the actual exposures which went - into this file (e.g. not including the exposures for fibers - on a different spectrograph) - - Data : None - -HDU 1 : Coadded Spectrum - Header : Minimum to define table - Data : Binary table with columns taken from spPlate and spZbest: - flux : flux in 10^-17 ergs/s/cm^2/A - loglam : log10(lambda[A]) - ivar : inverse variance - and_mask : mask bits which affect every spectrum in coadd - or_mask : mask bits which affect at least one spectrum in coadd - wdisp : wavelength dispersion in dloglam units - sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A - model : best fit model for classification & redshift (from spZbest) - calib_corr : (optional) : spectro-photometric correction for fibers positioned at LAMBDA_EFF=4000 - -HDU 2 : Copy of row for this object from spAll table - http://data.sdss3.org/datamodel/files/BOSS_SPECTRO_REDUX/spAll.html - -HDU 3 : Copy of rows for this object from spZline table - http://data.sdss3.org/datamodel/files/BOSS_SPECTRO_REDUX/RUN2D/PLATE4/RUN1D/spZline.html""" - - #- Continue with explanation of per-exposure HDUs if included - if allexp: - print >> fx, """ -HDU 4 .. n+4 : Individual frames. - For each exposure there is one HDU for the red camera and one for the blue. - These are in the order of the EXPIDnnn keywords in the HDU 0 header, and - their EXTNAME keywords match the EXPIDnnn keywords from HDU 0. - - Header: Taken from HDU0 of individual spCFrame files - Keyword YPIX0 defines the y-pixel location of the first flux bin. - - Data: Binary table with columns taken from spCFrame files: - flux - loglam - ivar - mask - wdisp - sky - calib : conversion between flux and electrons: flux = electrons*calib - x : x-pixel location of trace on CCD - -How to convert flux, sky, and ivar back to extracted photons (electrons): - - obj_photons = flux / calib - sky_photons = sky / calib - ivar_photons = ivar * calib^2 - (includes variance from all sources: object, sky, read noise, etc) - -You can approximately estimate the non-photon variance with: - - photons = (flux + sky) / calib - var_photons = 1.0 / (ivar * calib^2) - var_extra_photons = var_photons - photons - var_extra_flux = var_extra_photons * calib - -""" - else: - print >> fx, "\nIndividual exposures are not included in these files" - - fx.close() - -class CFrame(object): - """ - Convenience wrapper class for spCFrame, spFrame, and spFlat data - - Derives spFrame dir/name from spCFrame, and assumes that it is gzipped. - """ - def __init__(self, cframefile): - - #- Load original framefile and find out original dimensions - ### print cframefile - framefile = cframefile.replace('spCFrame', 'spFrame') + '.gz' - eflux = fits.getdata(framefile, 0) - nfiber, npix = eflux.shape - - #- Load spCFrame file; trim arrays back to original size - fx = fits.open(cframefile) - self.flux = fx[0].data[:, 0:npix] - self.ivar = fx[1].data[:, 0:npix] - self.mask = fx[2].data[:, 0:npix] - self.loglam = fx[3].data[:, 0:npix] - self.wdisp = fx[4].data[:, 0:npix] - self.sky = fx[6].data[:, 0:npix] - self.x = fx[7].data[:, 0:npix] - self.header = fx[0].header - - #- Load superflat spCFrame[8] and fiberflat spFlat[0] - filedir, basename = os.path.split(cframefile) - superflat = fx[8].data[:, 0:npix] - flatfile = fx[0].header['FLATFILE'].replace('sdR', 'spFlat') - flatfile = flatfile.replace('.fit', '.fits.gz') - flatfile = os.path.join(filedir, flatfile) - fiberflat = fits.getdata(flatfile, 0) - - #- Calculate calibration vector: flux = electrons * calib - electrons = eflux * fiberflat * superflat - ii = N.where(electrons != 0.0) - self.calib = N.zeros(self.flux.shape) - self.calib[ii] = self.flux[ii] / electrons[ii] - - fx.close() - -def load_spCFrame_files(platedir): - """ - Load all spCFrame files in a given directory. - Return a dictionary of CFrame objects, keyed by camera-expid string - """ - print "loading spCFrame files from " + platedir - cframes = dict() - for filename in glob(os.path.join(platedir, 'spCFrame-*.fits')): - print ' ', os.path.basename(filename), asctime() - expid = get_expid(filename) - cframes[expid] = CFrame(filename) - - return cframes - -def good_ivar(ivar, fiber=None): - """ - return indices of for array from first non-zero ivar to the last - non-zero ivar. i.e. trim off leading and trailing contiguously zero ivars. - - If all ivar==0, return indices for full array since code might get - grumpy with completely blank arrays. - """ - if N.all(ivar == 0): - if fiber is not None: - print 'WARNING: All ivar==0 for fiber', fiber - else: - print 'WARNING: All ivar==0' - return N.arange(len(ivar)) - - ivar_good = N.where(ivar > 0.0)[0] - return N.arange(ivar_good[0], ivar_good[-1]+1) - -def get_expid(filename): - """parse /path/to/spBlat-b1-00123456.fits.gz into b1-00123456""" - try: - return re.search('-([br][12]-\d{8}).fits', filename).group(1) - except AttributeError: #- search failed - return None - -def plate_to_string(plate): - - if plate<10000: - return "%04d"%plate - else: - return "%d"%plate - -def process_plate(datadir, outdir, plate, mjd, fibers, spAll, allexp=True, tpcorr_h5=None, plate_f=False, legacy=False): - """ - Process a plate's worth of objects - - Inputs - datadir : input base directory, e.g. $BOSS_SPECTRO_REDUX/v5_4_40/ - outdir : output base directory - plate : plate to process - mjd : mjd to process - fibers : *array* of fibers on this plate-mjd to process - spAll : metadata from spAll which includes these spectra - allexp : if False, don't write individual exposures (default True) - tpcorr_h5 : if not None, add a column with spectro-photometric correction (not 1 for fibers positionned at LAMBDA_EFF=4000) - - Outputs: - writes files to outdir/plate/spec-plate-mjd-fiber.fits - """ - #- Load all C/Frame files for this plate - platestr = plate_to_string(plate) - if plate_f or legacy: - platedir = '%s/%s/' % (datadir, platestr+'p') - else: - platedir = '%s/%s/' % (datadir, platestr) - if allexp: - cframes = load_spCFrame_files(platedir) - - #- Open spPlate, spZbest, and spZline files - #spPlateFile = '%s/spPlate-%s-%d.fits' % (platedir, platestr, mjd) - spPlateFile = '%s/spField-%s-%d.fits' % (platedir, platestr, mjd) - print 'Processing', os.path.basename(spPlateFile) - FXplate = fits.open(spPlateFile, memmap=True) - - #- Remove spurious EXPID** if needed - if 'EXPID**' in FXplate[0].header: - FXplate[0].header.remove('EXPID**') - - code_version = FXplate[0].header['RUN2D'] - - spZbestFile = '%s/%s/spZbest-%s-%d.fits' % \ - (platedir, code_version, platestr, mjd) - FXzbest = fits.open(spZbestFile, memmap=True) - - spZlineFile = '%s/%s/spZline-%s-%d.fits' % \ - (platedir, code_version, platestr, mjd) - zline = fits.getdata(spZlineFile, 1) - - #- HDU0 will be a modified copy of the spPlate header - plate_hdu = fits.PrimaryHDU(header=FXplate[0].header) - - #- if tpcorr exist, get wavelength and compute loglam for interpolation - if tpcorr_h5 is not None : - tpcorr_loglam = N.log10(tpcorr_h5['wave'].value) - - #- Loop over fibers on this plate on this MJD - for fiber in fibers: - #- HDU1 : binary table of coadd flux, log(lambda), ivar, etc. - flux = FXplate[0].data[fiber-1] - c0 = FXplate[0].header['COEFF0'] - c1 = FXplate[0].header['COEFF1'] - loglam = c0 + c1*N.arange(len(flux)) - ivar = FXplate[1].data[fiber-1] - and_mask = FXplate[2].data[fiber-1] - or_mask = FXplate[3].data[fiber-1] - wdisp = FXplate[4].data[fiber-1] - sky = FXplate[6].data[fiber-1] - model = FXzbest[2].data[fiber-1] - calibcorr = None - #- get spectro-photometric calibration correction if required - if tpcorr_h5 is not None : - tpcorr_key = '%s/%s/%s' % (plate, mjd, fiber) - entry=tpcorr_h5.get(tpcorr_key) - if entry is None : - #print "didn't find correction for %s"%tpcorr_key - calibcorr=N.ones((flux.size)) - else : - #print "FOUND correction for %s"%tpcorr_key - calibcorr=N.interp(loglam,tpcorr_loglam,entry.value) - - #- trim off leading and trailing ivar=0 bins, - #- but keep ivar=0 bins in the middle of the spectrum - igood = good_ivar(ivar, fiber=fiber) - new_coeff0 = round(float(loglam[igood[0]]),4) #- fix float32 rounding - - #- Create coadded spectrum table for HDU 1 - cols = list() - cols.append( fits.Column(name='flux', format='E', array=flux[igood]) ) - cols.append( fits.Column(name='loglam', format='E', array=loglam[igood]) ) - cols.append( fits.Column(name='ivar', format='E', array=ivar[igood]) ) - cols.append( fits.Column(name='and_mask', format='J', array=and_mask[igood]) ) - cols.append( fits.Column(name='or_mask', format='J', array=or_mask[igood]) ) - cols.append( fits.Column(name='wdisp', format='E', array=wdisp[igood]) ) - cols.append( fits.Column(name='sky', format='E', array=sky[igood]) ) - cols.append( fits.Column(name='model', format='E', array=model[igood]) ) - if tpcorr_h5 is not None : - cols.append( fits.Column(name='calib_corr', format='E', array=calibcorr[igood]) ) - - cols = fits.ColDefs(cols) - coadd_hdu = fits.BinTableHDU.from_columns(cols) - - #- HDU 2: copy of spAll row - hdux = [plate_hdu, coadd_hdu] - ispec = N.where( (spAll.FIELD == plate) & \ - (spAll.MJD == mjd) & \ - (spAll.FIBERID == fiber) )[0][0] - - hdux.append( fits.BinTableHDU(data=spAll[ispec:ispec+1]) ) - - #- HDU 3: copy of rows from spZline - ii = N.where(zline.FIBERID == fiber)[0] - hdux.append( fits.BinTableHDU(data=zline[ii]) ) - - #- HDU 4 .. 4+n : spectra from individual exposures - #- Loop over individual exposures. Do this even if we aren't - #- writing those HDUs, so that we can update the headers with - #- which exposures went into the coadd - nexp = 0 - fullexpids = list() - for iexp in range(1, 100): - key = 'EXPID%03d' % iexp - if key not in FXplate[0].header: - break - - expid = FXplate[0].header[key][0:11] #- e.g. b1-00123456 - - #- check camera for this fiber - camera = expid[0:2] - if fiber <= 500 and camera in ('b2', 'r2'): - continue - elif fiber > 500 and camera in ('b1', 'r1'): - continue - - if allexp and expid not in cframes: - raise IOError, '%s not found' % expid - - #- If we got this far, we're going to use this exposure - fullexpids.append(FXplate[0].header[key]) - nexp += 1 - - if allexp: - nfiber = cframes[expid].header['NAXIS2'] - ifib = (fiber-1) % nfiber - d = cframes[expid] - - #- trim off leading and trailing ivar=0 bins, - #- but keep ivar=0 bins in the middle of the spectrum - igood = good_ivar(d.ivar[ifib], fiber='%s %d' % (expid, fiber)) - - cols = list() - cols.append( fits.Column(name='flux', format='E', array=d.flux[ifib][igood]) ) - cols.append( fits.Column(name='loglam', format='E', array=d.loglam[ifib][igood]) ) - cols.append( fits.Column(name='ivar', format='E', array=d.ivar[ifib][igood]) ) - cols.append( fits.Column(name='mask', format='J', array=d.mask[ifib][igood]) ) - cols.append( fits.Column(name='wdisp', format='E', array=d.wdisp[ifib][igood]) ) - cols.append( fits.Column(name='sky', format='E', array=d.sky[ifib][igood]) ) - cols.append( fits.Column(name='calib', format='E', array=d.calib[ifib][igood]) ) - cols.append( fits.Column(name='x', format='E', array=d.x[ifib][igood]) ) - - #- Place holder - someday we may want to calculate and include - #- the "extra" variance which isn't proportional to the signal. - ### n = len(d.flux[ifib]) - ### cols.append( fits.Column(name='var_extra', format='E', array=N.zeros(n) ) ) - - cols = fits.ColDefs(cols) - hdux.append( fits.BinTableHDU.from_columns(cols, header=d.header) ) - - #- Convert to fits HDUList - hdux = fits.HDUList( hdux ) - - #- Change some keyword headers which don't make sense when - #- converting a plate header into a single object header - - #- HDU 0 is now a blank image, so fitsverify doesn't like CRPIX1 etc. - hdr = hdux[0].header - for key in ['CRPIX1', 'CRVAL1', 'CTYPE1', 'CD1_1']: - if key in hdr: - hdr.remove(key) - - #- We trimmed leading/trailing ivar=0 pixels, so update COEFF0 - hdr['COEFF0']= new_coeff0 - - #- Remove original expid list which has both SP1 and SP2 - nexp_orig = hdr['NEXP'] - del hdr['NEXP'] - for iexp in range(nexp_orig): - expid = "EXPID%03d" % (iexp+1, ) - if expid in hdr: - del hdr[expid] - - #- Add new NEXP, EXPID list for just the exposures in this file - #- Update EXTNAME of individual exposure HDUs with this expid - hdr['NEXP']= (nexp, 'Number of individual exposures') - for iexp, expid in enumerate(fullexpids): - key = "EXPID%03d" % (iexp+1, ) - hdr[key] = expid - if allexp: - ### print "Setting EXTNAME for %d to %s" % (4+iexp, expid) - hdux[4+iexp].name = expid - - #- Remove mention of the other spectrograph - #- sp1 - if legacy: - if fiber <= 500: #- sp1 - for key in ['NEXP_B2', 'NEXP_R2', 'EXPT_B2','EXPT_R2']: - if key in hdr: - hdr.remove(key) - else: #- sp2 - for key in ['NEXP_B1', 'NEXP_R1', 'EXPT_B1','EXPT_R1']: - if key in hdr: - hdr.remove(key) - else: - for key in ['NEXP_B1', 'NEXP_R1', 'EXPT_B1','EXPT_R1']: - if key in hdr: - hdr.remove(key) - - #- Delete a bunch of per-exposure keywords which came along for - #- the ride in the spPlate header - for keyword in """ - NGUIDE - SEEING20 SEEING50 SEEING80 - RMSOFF20 RMSOFF50 RMSOFF80 AZ ALT AIRMASS - DAQVER CAMDAQ SUBFRAME ERRCNT SYNCERR SLINES - PIXERR PLINES PFERR DIDFLUSH TAI-BEG TAI-END - DATE-OBS OBJSYS ROTTYPE ROTPOS BOREOFF ARCOFFX ARCOFFY - OBJOFFX OBJOFFY CALOFFX CALOFFY CALOFFR GUIDOFFX GUIDEOFFY - GUIDOFFR FOCUS - M2PISTON M2XTILT M2YTILT M2XTRAN M2YTRAN - M1PISTON M1XTILT M1YTILT M1XTRAN M1YTRAN - SCALE POINTING GUIDER1 SLITID1 SLIDID2 GUIDERN - COLLA COLLB COLLC - HARTMANN MC1HUMHT MC1HUMCO MC1TEMDN MC1THT MC1TRCB MC1TRCT - MC1TBCB MC1TBCT AUTHOR TWOPHASE XSIGMA XSIGMIN XSIGMAX - WSIGMA WSIGMIN WSIGMAX LAMPLIST SKYLIST UNAME - """.split(): - try: - del hdr[keyword] - except: - pass - - #- Add some additional header keywords - hdr['PLUG_RA'] = (spAll.PLUG_RA[ispec], 'RA of object [deg]') - hdr['PLUG_DEC'] = (spAll.PLUG_DEC[ispec], 'dec of object [deg]') - hdr['THING_ID'] = (spAll.THING_ID[ispec], 'Unique object identifier') - hdr['FIBERID'] = (spAll.FIBERID[ispec], 'Fiber number (1-1000)') - - #- Update other headers with useful comments - hdux[1].header.add_comment('Coadded spectrum') - hdux[1].name = 'COADD' - hdux[2].header.add_comment('Metadata from spAll row') - hdux[2].name = 'SPALL' - hdux[3].header.add_comment('Line fits from spZline') - hdux[3].name = 'SPZLINE' - - #- BUNIT is invalid for binary table HDUs - for i in range(1, len(hdux)): - if 'BUNIT' in hdux[i].header: - del hdux[i].header['BUNIT'] - - #- Write final file - outfile = '%s/spec-%s-%d-%04d.fits' % (outdir, platestr, mjd, fiber) - ### print mjd, os.path.basename(outfile) - try: - hdux.writeto(outfile, overwrite=True, output_verify='fix') - except fits.VerifyError, err: - print "Unable to write %s" % outfile - raise err - - #- Done with this plate-mjd; close input files - FXplate.close() - FXzbest.close() - -def get_selection_doc(opts): - """ - Return a documentation string about which data cuts were applied. - """ - doc = list() - doc.append("Object selection criteria:") - if opts.plates is not None: - if opts.subset == "ALL": - doc.append(" All plates") - else: - doc.append(" Plates: " + ", ".join(map(str, opts.plates)) ) - if opts.fibers is not None: - doc.append(" Fibers: " + opts.fibers_orig ) - else: - if opts.subset == "ALL": - doc.append(" All objects kept") - doc.append(" Optional spAll-XXX subsets defined by") - doc.append(" qso:") - doc.append(" - Targetted as QSOs") - doc.append(" - Targetted as GALAXY but CLASS=QSO") - doc.append(" - FPG scan IDed as QSO") - doc.append(" - QSO ancillary programs") - doc.append(" gal: OBJTYPE=GALAXY or CLASS=GALAXY") - doc.append(" star: OBJTYPE=SPECTROPHOTO_STD or CLASS=STAR") - doc.append(" std: OBJTYPE=SPECTROPHOTO_STD") - doc.append(" sky: OBJTYPE=SKY") - elif opts.subset == 'QSO': - doc.append(" Only quasar targets:") - doc.append(" - Targetted as QSOs") - doc.append(" - Targetted as GALAXY but CLASS=QSO") - doc.append(" - FPG scan IDed as QSO") - doc.append(" - QSO ancillary programs") - elif opts.subset == 'GALAXY': - doc.append(" Only galaxies: OBJTYPE=GALAXY or CLASS=GALAXY") - elif opts.subset == 'STAR': - doc.append(" Only stars: OBJTYPE=SPECTROPHOTO_STD or CLASS=STAR") - elif opts.subset in ('STD', 'SPECTROPHOTO_STD'): - doc.append(" Only SpecPhoto standard stars: OBJTYPE=SPECTROPHOTO_STD") - elif opts.subset == 'SKY': - doc.append(" Only sky fibers: OBJTYPE=SKY") - - return "\n".join(doc) - -def write_file_list(filename, spectra): - FX = open(filename, 'w') - for plate, mjd, fiber in sorted( zip(spectra.FIELD, spectra.MJD, spectra.FIBERID) ): - platestr = plate_to_string(plate) - specfile = "%s/spec-%s-%05d-%04d.fits" % (platestr, platestr, mjd, fiber) - print >> FX, specfile - - FX.close() - -def parse_string_range(s): - """ - e.g. "1,2,5-8,20" -> [1,2,5,6,7,8,20] - - modified from Sven Marnach, - http://stackoverflow.com/questions/5704931/parse-string-of-integer-sets-with-intervals-to-list - - Feature/Bug: Only works with positive numbers - """ - ranges = (x.split("-") for x in s.split(",")) - x = [i for r in ranges for i in range(int(r[0]), int(r[-1]) + 1)] - return x - -def check_options(opts, args): - """Sanity check options""" - if opts.spall is None: - parser.print_help() - print "You must specify --spall" - sys.exit(1) - - if opts.outdir is None: - parser.print_help() - print "You must specify --outdir" - sys.exit(1) - - if opts.fibers is not None: - if opts.plates is None or len(opts.plates) != 1: - print "If you specify fibers, you must specify one and only one plate" - sys.exit(1) - -#----------------------------------------------------------------------------- -#- Parse command line options and call subroutines - -import optparse - -parser = optparse.OptionParser(usage = "%prog [options]") -parser.add_option("-s", "--spall", type="string", help="input spAll file") -parser.add_option("-i", "--indir", type="string", help="input directory [$BOSS_SPECTRO_REDUX/$RUN2D/]") -parser.add_option("-o", "--outdir", type="string", help="output directory") -parser.add_option("-m", "--meta", action='store_true', help="only write top level metadata (README, spSome)") -parser.add_option("-u", "--update", action='store_true', help="update missing plates; don't overwrite others") -parser.add_option("-p", "--plates", type="string", help="plates to process (comma separated, no spaces) default to all plates") -parser.add_option("-M", "--mjd", type="string", help="mjds to process (comma separated, no spaces)") -parser.add_option("-c", "--coadd", action='store_true', help="Only write coadded spectrum (no individual exposures)") -parser.add_option("-f", "--fibers", type="string", help="Comma separated list of fibers") -parser.add_option("-S", "--subset", type="string", default='ALL', help="Subset of objects to process [ALL, QSO, GALAXY, STAR, STD, or SKY]") -parser.add_option("-C", "--tpcorr", type="string", default=None, help="add a column with the spectrophotometric calibration correction for targets with LAMBDA_EFF=4000A, argument is the path to the tpcorr.hdf5 file, see http://darkmatter.ps.uci.edu/tpcorr/") -parser.add_option("-P", "--platef", action='store_true', help="set the plate format input") -parser.add_option("-L", "--legacy", action='store_true', help="set the sdss legacy format input") - -opts, args = parser.parse_args() - -#- Expand comma separated lists into arrays of integers -if opts.plates is not None: - opts.plates = [int(x) for x in opts.plates.split(',')] -if opts.mjd is not None: - opts.mjd = [int(x) for x in opts.mjd.split(',')] -if opts.fibers is not None: - opts.fibers_orig = opts.fibers - opts.fibers = parse_string_range(opts.fibers) - -#- Open tpcorr file is option is set -tpcorr_h5=None -if opts.tpcorr is not None: - print "Reading spectro-photometric calibration correction file",opts.tpcorr - if not os.path.isfile(opts.tpcorr) : - print "ERROR: cannot open",opts.tpcorr - sys.exit(1) - tpcorr_h5 = h5py.File(opts.tpcorr, 'r') - - -#- Sanity check -check_options(opts, args) - -if not os.path.isdir(opts.outdir): - os.makedirs(opts.outdir) - -#- Load spAllFile -print "Reading spAll file", asctime() -try: - # spectra = fits.getdata(opts.spall).view(N.recarray) - spectra = fits.open(opts.spall)[1].data -except MemoryError: - print "ERROR: Not enough memory to read the spAll file." - print "If you are on riemann, try again from an interactive batch job:" - print " qsub -I -q fast -X -V" - sys.exit(1) - -#- Default input directory is BOSS_SPECTRO_REDUX/RUN2D, -#- with RUN2D from spAll (*not* environment variable) -#- Assumes spAll has one and only one RUN2D -if len(set(spectra.RUN2D)) == 1: - run2d = spectra.RUN2D[0] -else: - print >> sys.stderr, "ERROR: spAll file has more than one RUN2D." - print >> sys.stderr, set(spectra.RUN2D) - sys.exit(2) - -if opts.indir is None: - datadir = os.path.join(os.environ['BOSS_SPECTRO_REDUX'], run2d) -else: - datadir = opts.indir - -#- If plates aren't specified, use all of them -if opts.plates is None: - opts.plates = sorted(set(spectra.FIELD)) - print "Using all %d plates" % len(opts.plates) - -QSO_A1 = QSO_A2 = 0 -QSO_A1 |= 2**22 # QSO_AAL -QSO_A1 |= 2**23 # QSO_AALS -QSO_A1 |= 2**24 # QSO_IAL -QSO_A1 |= 2**25 # QSO_RADIO -QSO_A1 |= 2**26 # QSO_RADIO_AAL -QSO_A1 |= 2**27 # QSO_RADIO_IAL -QSO_A1 |= 2**28 # QSO_NOAALS -QSO_A1 |= 2**29 # QSO_GRI -QSO_A1 |= 2**30 # QSO_HIZ -QSO_A1 |= 2**31 # QSO_RIZ -QSO_A2 |= 2**3 # QSO_VAR -QSO_A2 |= 2**4 # QSO_VAR_FPG -QSO_A2 |= 2**5 # RADIO_2LOBE_QSO -QSO_A2 |= 2**7 # QSO_SUPPZ -QSO_A2 |= 2**8 # QSO_VAR_SDSS -QSO_A2 |= 2**9 # QSO_WISE_SUPP - -#- Keep only target type subset -if opts.fibers is None: - if opts.subset == 'ALL': - print "Keeping all objects" - elif opts.subset == 'QSO': - print "Trimming to just QSO targets" - ii = (spectra.OBJTYPE == 'QSO') - ii |= ((spectra.OBJTYPE == 'GALAXY') & (spectra.CLASS == 'QSO')) - ii |= (spectra.CLASS_PERSON == 3) # 3 == FPG IDed as QSO # key doesn't exist? - #- Ancillary QSO programs - ii |= (spectra.ANCILLARY_TARGET1 & QSO_A1) - ii |= (spectra.ANCILLARY_TARGET2 & QSO_A2) - spectra = spectra[ii] - elif opts.subset == 'GALAXY' or opts.subset == 'GAL': - opts.subset = 'GAL' - print "Trimming to just GALAXY targets" - ii = (spectra.OBJTYPE == 'GALAXY') - ii |= (spectra.CLASS == 'GALAXY') - spectra = spectra[ii] - elif opts.subset == 'STAR': - print "Trimming to just STAR targets" - ii = (spectra.OBJTYPE == 'SPECTROPHOTO_STD') - ii |= (spectra.CLASS == 'STAR') - spectra = spectra[ii] - elif opts.subset in ('STD', 'SPECTROPHOTO_STD'): - print "Trimming to just spectro-photometric standard stars" - ii = (spectra.OBJTYPE == 'SPECTROPHOTO_STD') - spectra = spectra[ii] - elif opts.subset == 'SKY': - print "Trimming to just SKY fibers (!)" - ii = (spectra.OBJTYPE == 'SKY') - spectra = spectra[ii] - elif opts.subset is not None: - print "FATAL: subclass must be ALL, QSO, GALAXY, STAR, STD, or SKY" - sys.exit(1) -else: - print "Fibers specified; not trimming by target type" - ii = N.zeros(len(spectra), dtype='bool') - for fiber in opts.fibers: - ii |= (spectra.FIBERID == fiber) - spectra = spectra[ii] - -#- Write README and spSome files -if opts.meta: - print "Writing README.txt" - header = "Input data from:\n %s\n" % datadir - header += get_selection_doc(opts) - write_readme(opts.outdir + '/README.txt', header=header) - if opts.subset != "ALL": - spSomeName = opts.outdir+'/spAll-%s-%s.fits' % \ - (opts.subset.lower(), run2d) - print "Writing", os.path.basename(spSomeName) - fits.writeto(spSomeName, spectra, overwrite=True) - filelist = opts.outdir+'/specfiles-%s-%s.txt' % \ - (opts.subset.lower(), run2d) - print "Writing", os.path.basename(filelist) - write_file_list(filelist, spectra) - else: - import shutil - shutil.copy(opts.spall, opts.outdir+'/spAll-%s.fits' % run2d) - sys.exit(0) - -#- For efficiency, process one plate at a time -print "Starting plate processing", asctime() -for plate in sorted(set(opts.plates)): - print 'Plate %d : %s' % (plate, asctime()) - platestr = plate_to_string(plate) - outdir = '%s/%s/' % (opts.outdir, platestr) - - #- find MJDs for this plate - ii = N.where(spectra.FIELD == plate)[0] - plate_mjds = sorted(set(spectra.MJD[ii])) - - #- Filter by mjd option if given - if opts.mjd is not None: - plate_mjds = sorted(set(plate_mjds) & set(opts.mjd)) - - #- Create output directory if needed - if not os.path.isdir(outdir): - os.makedirs(outdir) - - for mjd in plate_mjds: - #- Process fibers for just this PLATE-MJD - ii = N.where((spectra.FIELD == plate) & (spectra.MJD == mjd)) - fibers = spectra.FIBERID[ii] - #- If --update option is True, select only fibers where there is no spec files - if opts.update: - fibers = [f for f in fibers if not os.path.exists(os.path.join(outdir, 'spec-%s-%d-%04d.fits'%(platestr, mjd, f)))] - fibers = N.array(fibers) - print "Updating only missing files. %d fibers found for this plate" % fibers.size - - process_plate(datadir, outdir, plate, mjd, fibers, spectra, allexp=not opts.coadd,tpcorr_h5=tpcorr_h5, plate_f=opts.platef, legacy=opts.legacy) - -print "Wrote files to " + opts.outdir -print "Done", asctime() - - diff --git a/bin/reformat_spectra_batch b/bin/reformat_spectra_batch deleted file mode 100755 index 69e4084ad..000000000 --- a/bin/reformat_spectra_batch +++ /dev/null @@ -1,55 +0,0 @@ -#!/usr/bin/env python -from os import environ, mkdir, makedirs -from os.path import join, exists, basename -from glob import iglob, glob -from argparse import ArgumentParser - -try: topdir = environ['BOSS_SPECTRO_REDUX'] -except: topdir = None - -try: run2d = environ['RUN2D'] -except: run2d = None - -parser = ArgumentParser() -parser.add_argument("-l", "--lite", help="pass in the coadd option for lite spectra",action="store_true") -parser.add_argument("-u", "--update", action='store_true', help="update missing plates; don't overwrite others") -arg = parser.parse_args() - -reduxdir = join(topdir,run2d) if topdir and run2d else None -spall = join(reduxdir,'spAll-%s.fits' % run2d) if reduxdir and run2d else None -spectradir = join(reduxdir, 'spectra') -if arg.lite: - spectradir = join(spectradir, 'lite') -else: - spectradir = join(spectradir, 'full') - -plates = [] -if exists(reduxdir): - spall = join(reduxdir,'spAll-%s.fits' % run2d) - if exists(spall): - for dir in iglob(join(reduxdir,'*')): - try: - platestr = basename(dir) - plate = int(platestr) - if len( glob( join(dir, 'spPlate-%s-*.fits'%platestr)))>0 : plates.append(plate) - except: pass - info = {'spall':spall,'spectradir':spectradir} - else: print "Cannot find spall file at %r" % spall -else: print "Please load the correct eboss module" - -if plates: - if not exists(spectradir): - makedirs(spectradir) - print "CREATE %s" % spectradir - from pbs import queue - queue = queue() - queue.verbose = True - queue.create(label='eboss_spectra',nodes=9,ppn=16,walltime='336:00:00',alloc='sdss-kp') - for plate in plates: - info['plate'] = plate - info['coadd'] = '--coadd' if arg.lite else '' - info['update'] = '-u' if arg.update else '' - script = "reformat_spectra.py -p %(plate)i --spall %(spall)s %(coadd)s --outdir %(spectradir)s %(update)s" % info - print script - queue.append(script) - queue.commit(hard=True,submit=True) diff --git a/bin/reformat_spectra_daily b/bin/reformat_spectra_daily deleted file mode 100755 index 6d25495c6..000000000 --- a/bin/reformat_spectra_daily +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env python -from os import environ, mkdir, makedirs -from os.path import join, exists, basename -from glob import iglob -from argparse import ArgumentParser -from subprocess import call - -try: topdir = environ['BOSS_SPECTRO_REDUX'] -except: topdir = None - -try: run2d = environ['RUN2D'] -except: run2d = None - -parser = ArgumentParser() -parser.add_argument("-l", "--lite", help="pass in the coadd option for lite spectra",action="store_true") -parser.add_argument("-M", "--mjd", help="mjd from which we reformat_spectra", type=int) -parser.add_argument("-L", "--legacy", help="use legacy data",action="store_true") -parser.add_argument("-P", "--plate_f", help="use palte data",action="store_true") -arg = parser.parse_args() - -reduxdir = join(topdir,run2d) if topdir and run2d else None -spall = join(reduxdir,'spAll-%s.fits' % run2d) if reduxdir and run2d else None -spectradir = join(reduxdir, 'spectra') -if arg.lite: - spectradir = join(spectradir, 'lite') -else: - spectradir = join(spectradir, 'full') -print spectradir -print reduxdir -plates = [] -if exists(reduxdir): - spall = join(reduxdir,'spAll-%s.fits' % run2d) - if exists(spall): - for dir in iglob(join(reduxdir,'*')): - try: - platestr = basename(dir) - if arg.legacy or arg.plate_f: - plate = int(platestr.replace('p','')) - else: - plate = int(platestr) - #if not exists(join(spectradir,str(plate))): plates.append(plate) - if exists(join(dir,'spField-%s-%d.fits'%(platestr.replace('p',''), arg.mjd))): plates.append(plate) - #print plates - #print join(dir,'spField-%s-%d.fits'%(platestr, arg.mjd)) - except: pass - info = {'spall':spall,'spectradir':spectradir} - else: print "Cannot find spall file at %r" % spall -else: print "Please load the correct eboss module" - -if plates: - if not exists(spectradir): - makedirs(spectradir) - print "CREATE %s" % spectradir - for plate in plates: - info['plate'] = plate - info['mjd'] = arg.mjd - info['coadd'] = '--coadd' if arg.lite else '' - if arg.legacy: - script = "reformat_spectra.py -p %(plate)i -M %(mjd)i --spall %(spall)s %(coadd)s --outdir %(spectradir)s -L" % info - elif arg.plate_f: - script = "reformat_spectra.py -p %(plate)i -M %(mjd)i --spall %(spall)s %(coadd)s --outdir %(spectradir)s -P" % info - else: - script = "reformat_spectra.py -p %(plate)i -M %(mjd)i --spall %(spall)s %(coadd)s --outdir %(spectradir)s " % info - print script - call([script], shell=True) - diff --git a/bin/riemann_redux_snapshot b/bin/riemann_redux_snapshot deleted file mode 100755 index 4745bc2bc..000000000 --- a/bin/riemann_redux_snapshot +++ /dev/null @@ -1,35 +0,0 @@ -#!/bin/bash - -#- Make a snapshot of the BOSS redux on riemann -#- Stephen Bailey, LBNL -#- 2011-04-19 - -#- Only do it for real if "-g" (go!) is given -if [ $# -ne 1 ] || [ "$1" != "-g" ] ; then - echo "generate snapshot of platelist, spAll, and spAllLine" - echo '"redux_snapshot -g" to really go and do it' - exit 1 -fi - -export DATETAG=`date '+%Y-%m-%d'` - -#- Check if any files are missing before copying any of them -cd $BOSS_SPECTRO_REDUX -for filename in "platelist.fits" "spAll-${RUN2D}.fits" "spAll-${RUN2D}.dat" "spAllLine-${RUN2D}.fits" ; do - if [ ! -e "$filename" ] ; then - echo "ERROR: Missing $filename" - exit 1 - fi -done - -#- Good to go! -mkdir -p snapshots/${DATETAG}/ -cp platelist.fits snapshots/${DATETAG}/platelist_${DATETAG}.fits -cp spAll-${RUN2D}.fits snapshots/${DATETAG}/spAll-${RUN2D}_${DATETAG}.fits -cp spAll-${RUN2D}.dat snapshots/${DATETAG}/spAll-${RUN2D}_${DATETAG}.dat -cp spAllLine-${RUN2D}.fits snapshots/${DATETAG}/spAllLine-${RUN2D}_${DATETAG}.fits - -echo "Files copied to \$BOSS_SPECTRO_REDUX/snapshots/${DATETAG}/" -echo "Don't forget to update https://trac.sdss3.org/wiki/BOSS/data_access" - - diff --git a/bin/run_PyXCSAO b/bin/run_PyXCSAO new file mode 100755 index 000000000..7dfab00dd --- /dev/null +++ b/bin/run_PyXCSAO @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +import os +import argparse +import sys +from boss_drp.spec1d.run_PyXCSAO import run_PyXCSAO + +""" +run_PyXCSAO: + +run_PyXCSAO runs PyXCSAO for a full spField-*****-*****.fits file using the phoenix_full1 template grid +The input files can be either normal or gz files. +""" + + +if __name__ == '__main__' : + + parser = argparse.ArgumentParser( + prog=os.path.basename(sys.argv[0]), + description='Runs pyXCSAO to determine RVs') + + parser.add_argument('fitsfile', type=str, help='fits file') + parser.add_argument('--run1d', '-r', type=str, help='run1d name', + default=os.getenv('RUN1D')) + parser.add_argument('--epoch', help='run for epoch Coadds', action='store_true') + args = parser.parse_args() + + run_PyXCSAO(args.fitsfile, run1d = args.run1d, epoch = False) diff --git a/bin/run_collimate.sh b/bin/run_collimate.sh deleted file mode 100755 index 2d50b9be5..000000000 --- a/bin/run_collimate.sh +++ /dev/null @@ -1,30 +0,0 @@ -#!/bin/bash - -# Test that an exposure number is given as an argument -if [ $# = 0 ] ; then - echo "Must specify exposure number" - exit -fi - -# Launch all 4 cameras as separate processes, then wait for completion -echo "collimate,$1,docams='b1'" | idl 2> /dev/null & -echo "collimate,$1,docams='b2'" | idl 2> /dev/null & -echo "collimate,$1,docams='r1'" | idl 2> /dev/null & -echo "collimate,$1,docams='r2'" | idl 2> /dev/null & -wait - -# If the log files exist, then print the last lines of each -files=`find . -name "Collimate-*$1.log" -print` - - echo "" - echo "" - echo "" - echo "" - -if [ -n "$files" ] ; then - tail -n 12 Collimate-*$1.log -else - echo "Nothing computed" -fi -exit - diff --git a/bin/run_fieldmerge b/bin/run_fieldmerge deleted file mode 100755 index 8f919d78c..000000000 --- a/bin/run_fieldmerge +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -cd $HOME/daily/logs -set -o verbose -echo 'fieldmerge, /include_bad, /XCSAO, /skip_specprimary, /lite' | idl - diff --git a/bin/run_plugmap_supplements.py b/bin/run_plugmap_supplements.py deleted file mode 100755 index bb8bc9420..000000000 --- a/bin/run_plugmap_supplements.py +++ /dev/null @@ -1,389 +0,0 @@ -#!/usr/bin/env python -import sys -import numpy as np -import os -import warnings -warnings.filterwarnings("ignore") -from astropy.coordinates import SkyCoord -import astropy.units as units -import pandas as pd -from pathlib import Path -import argparse -from astropy.table import Table - -try: from dustmaps.bayestar import BayestarQuery -except: print('ERROR: dustmaps is not installed') - -try: from dustmaps.sfd import SFDQuery -except: print('ERROR: dustmaps is not installed') - -from sdssdb.peewee.sdss5db.targetdb import database -import sdssdb -database.set_profile('operations') - - -SDSSDBVersion=sdssdb.__version__ - - -class HiddenPrints: - def __enter__(self): - self._original_stdout = sys.stdout - sys.stdout = open(os.devnull, 'w') - - def __exit__(self, exc_type, exc_val, exc_tb): - sys.stdout.close() - sys.stdout = self._original_stdout - -def get_FieldCadence(designID, rs_plan): - try: - from sdssdb.peewee.sdss5db.targetdb import Design, Field, Version - from sdssdb.peewee.sdss5db.targetdb import DesignToField as d2f - - field = Field.select().join(d2f).join(Design).switch(Field)\ - .join(Version).where(Design.design_id == designID)\ - .where(Version.plan==rs_plan) - - print([(('Fieldid', 'Version_pk', 'RS_tag', 'RS_plan'), - (t.field_id, t.version.pk, t.version.tag, t.version.plan)) for t in field]) - if len(field) > 0: return(field[0].cadence.label) - else: return('') - except: return('') - return('') - -def get_CartonInfo(row): - try: - from sdssdb.peewee.sdss5db.targetdb import CartonToTarget, Carton - except: return(row) - tp = CartonToTarget.select().join(Carton).where(CartonToTarget.pk == int(row.carton_to_target_pk)) - if len(tp) > 0: - try: row.program = tp[0].carton.program - except: pass - try: row.carton = tp[0].carton.carton - except: pass - try: row.CatVersion = tp[0].carton.version.plan #0.5.0 - except: pass - try: row.mapper = tp[0].carton.mapper.label #"BHM"/"MWM" - except: - if row.program == 'open_fiber': row.mapper = 'open_fiber' - elif 'ops' in row.program: row.mapper = 'ops' - else: row.mapper = '' - return (row) - - -def get_ra_dec(row, legacy = False, field=None, mjd=None): - if not legacy: - try: - from sdssdb.peewee.sdss5db.catalogdb import Catalog - tp = Catalog.select().where(Catalog.catalogid == row.catid) - if len(tp) > 0: - row.racat = tp[0].ra - row.deccat = tp[0].dec - row.CatVersion = tp[0].version.plan - row.catcoord = 1 - except: - pass - return(row) - else: - try: - from sdssdb.peewee.sdss5db.catalogdb import CatalogToSDSS_DR16_SpecObj - from sdssdb.peeqee.sdss5db.catalogdb import SDSS_DR16_SpecObj as DR16 - tp = CatalogToSDSS_DR16_SpecObj.select().join(DR16).select().where(DR16.plate == field and DR16.mjd == mjd and DR16.fiberid == row.fiberid) - idx = None - if len(tp) == 1: - idx = 0 - elif len(tp) > 1: - idx = [] - for t in tp: - idx.append(t.version.id) - idx = np.argmin(np.asarray(idx)) - if idx is not None: - row.catid = tp[idx].catalogid - row.racat = tp[idx].ra - row.deccat = tp[idx].dec - row.CatVersion = tp[idx].version.plan - row.catcoord = 1 - row.updatedCatID = 1 - except: - pass - return(row) - -def corrections(row): - try: - from sdssdb.peewee.sdss5db.targetdb import RevisedMagnitude as v05_rev_mag - except: return(row) - tp = v05_rev_mag.select().where(v05_rev_mag.carton_to_target_pk == int(row.carton_to_target_pk)) - - if len(tp) == 1: - row.mag_g = tp[0].g - row.mag_r = tp[0].r - row.mag_i = tp[0].i - row.mag_z = tp[0].z - row.mag_j = tp[0].j - row.mag_h = tp[0].h - row.mag_k = tp[0].k - row.gaia_g = tp[0].gaia_g - row.gaia_bp = tp[0].bp - row.gaia_rp = tp[0].rp - row.optical_prov = tp[0].optical_prov - row.v05_rev_mag = 1 - return(row) - -def get_mags(row, mags=True, astr=True, gaia_id=True): - try: - from sdssdb.peewee.sdss5db.catalogdb import CatalogToGUVCat, GUVCat - from sdssdb.peewee.sdss5db.catalogdb import CatalogToAllWise, AllWise - - from sdssdb.peewee.sdss5db.catalogdb import CatalogToTIC_v8 - from sdssdb.peewee.sdss5db.catalogdb import TIC_v8, Gaia_DR2 - - wise_best=AllWise.select(AllWise.ra,AllWise.dec,AllWise.w1mpro,AllWise.w2mpro, AllWise.w3mpro,AllWise.w4mpro,AllWise.j_m_2mass,AllWise.h_m_2mass, AllWise.k_m_2mass) - gaia_best=Gaia_DR2.select(Gaia_DR2.ra,Gaia_DR2.dec,Gaia_DR2.parallax, Gaia_DR2.pmra,Gaia_DR2.pmdec,Gaia_DR2.source_id) - guvcat_best=GUVCat.select(GUVCat.ra,GUVCat.dec,GUVCat.fuv_mag,GUVCat.nuv_mag) - ra=row.ra - dec=row.dec - if mags is True: - - try: - tp = wise_best.join(CatalogToAllWise).where(CatalogToAllWise.catalogid == row.catid) - if len(tp) == 0: - tp = wise_best.where(AllWise.cone_search(ra, dec, 2.0/3600.0)) - if len(tp) > 0: - row.w1mpro=float(tp[0].w1mpro) - row.w2mpro=float(tp[0].w2mpro) - row.w3mpro=float(tp[0].w3mpro) - row.w4mpro=float(tp[0].w4mpro) - try: - row.j2mass=float(tp[0].j_m_2mass) - row.h2mass=float(tp[0].h_m_2mass) - row.k2mass=float(tp[0].k_m_2mass) - except: pass - else: pass - except: pass - try: - tp = guvcat_best.join(CatalogToGUVCat).where(CatalogToGUVCat.catalogid == row.catid) - if len(tp) == 0: - tp=guvcat_best.where(GUVCat.cone_search(ra, dec, 2.0/3600.0)) - if len(tp) > 0: - row.fuv=float(tp[0].fuv_mag) - row.nuv=float(tp[0].nuv_mag) - else: pass - except: pass - if astr is True: - try: - tp = TIC_v8.select().join(CatalogToTIC_v8).where(CatalogToTIC_v8.catalogid == row.catid)\ - .join(Gaia_DR2, on=(TIC_v8.gaia == Gaia_DR2.source_id)).switch(Gaia_DR2) - - if len(tp) == 0: - tp=gaia_best.where(Gaia_DR2.cone_search(ra, dec, 2.0/3600.0)) - else: - tp = [tp[0].gaia] - if len(tp) > 0: - row.parallax=float(tp[0].parallax) - row.pmra=float(tp[0].pmra) - row.pmdec=float(tp[0].pmdec) - if gaia_id is True: - row.gaia_id = tp[0].source_id - else: pass - except: pass - elif gaia_id is True: - try: - tp = TIC_v8.select().join(CatalogToTIC_v8).where(CatalogToTIC_v8.catalogid == row.catid)\ - .join(Gaia_DR2, on=(TIC_v8.gaia == Gaia_DR2.source_id)).switch(Gaia_DR2) - - if len(tp) == 0: - tp=gaia_best.where(Gaia_DR2.cone_search(ra, dec, 2.0/3600.0)) - else: - tp = [tp[0].gaia] - if len(tp) > 0: - row.gaia_id = tp[0].source_id - else: pass - except: pass - except: pass - return(row) - - - -def get_RJCE_ext(row): - try: - from sdssdb.peewee.sdss5db.catalogdb import CatalogToAllWise, AllWise - catid=np.long(row.catid) - wise_best=AllWise.select().join(CatalogToAllWise)\ - .where(CatalogToAllWise.catalogid == catid)\ - .where(AllWise.designation == CatalogToAllWise.target.designation) - if len(wise_best) > 0: - row.EB_rjce=0.918 * (float(wise_best[0].h_m_2mass)-float(wise_best[0].w2mpro) - 0.05)/0.302 - else: pass - except: pass - return(row) - -def get_gaia_red(data, calc_dist = False): - ll = data.ll.values - bb = data.bb.values - - if calc_dist is False: - PARALLAX = data.parallax.values - PARALLAX[np.where(PARALLAX <= -999.0)[0]] = 0 - PARALLAX[np.where(np.isnan(PARALLAX))[0]] = 0 - dist_std=1.0/np.abs((PARALLAX-0.0)*1e-3) #zero point parallax - dist_std[np.where(PARALLAX <= -999.0)[0]] = 0 - dist_std[np.where(np.isnan(PARALLAX))[0]] = 0 - rr = dist_std - else: - rr = data.rr.values - - - with HiddenPrints(): - try: - bayestar = BayestarQuery(version='bayestar2015') - except FileNotFoundError: - try: - import dustmaps.bayestar - dustmaps.bayestar.fetch(version='bayestar2015') - bayestar = BayestarQuery(version='bayestar2015') - except ImportError: return(data) - coords = SkyCoord(ll*units.deg, bb*units.deg,distance=rr*units.pc, frame='galactic') - reddening = bayestar(coords, mode='median') - - reddening[np.where(np.asarray(rr)<=0.0)[0].tolist()]=np.nan - data.reddening_gaia=reddening - return(data) - - -def get_sfd_red(data): - ll = data.ll.values - bb = data.bb.values - with HiddenPrints(): - try: - sfd = SFDQuery() - except ImportError: - return(data) - coords = SkyCoord(ll*units.deg, bb*units.deg, frame='galactic') - reddening = sfd(coords) - - data.EBV_sfd=reddening - return(data) - - - -def run_plugmap_supplements(catalogfile, log=None, lco=False, mags=False, - astrometry=False, rjce=False, gaia=False, - sfd=False, gaia_id=False, no_db=False, - cart=False, designID=None, rs_plan=None, legacy=False, - field=None, mjd=False): - - fp=open(catalogfile) - lines = fp.readlines() - if designID is not None and rs_plan is not None: - logstr= "Obtaining Field Cadence" - print(logstr) - if log is not None: os.system('echo "'+logstr+'" >> '+log) - fieldCadence = get_FieldCadence(designID, rs_plan) - fps = True - else: - fieldCadence = '' - fps = False - - data=pd.DataFrame() - cols=pd.Series({'w1mpro':np.NaN,'w2mpro':np.NaN,'w3mpro':np.NaN,'w4mpro':np.NaN,'j2mass':np.NaN, - 'h2mass':np.NaN,'k2mass':np.NaN,'fuv':np.NaN,'nuv':np.NaN,'parallax':np.NaN, - 'pmra':np.NaN,'pmdec':np.NaN, 'gaia_id':-1, - 'EBV_rjce':np.NaN,'reddening_gaia':np.NaN,'EBV_sfd':0, - 'program':'', 'carton':'', 'CatVersion':'', 'mapper':'', 'fieldCadence':fieldCadence, - 'mag_g':np.NaN,'mag_r':np.NaN, 'mag_i':np.NaN,'mag_z':np.NaN, - 'mag_j':np.NaN,'mag_h':np.NaN, 'mag_k':np.NaN, - 'gaia_g':np.NaN,'gaia_bp':np.NaN,'gaia_rp':np.NaN,'optical_prov':'', 'v05_rev_mag':0, - 'racat':np.NaN,'deccat':np.NaN, 'catcoord':0, 'updatedCatID':0 - }) - - for line in lines : - row=pd.Series({'ra':float(line.split()[0]), - 'dec':float(line.split()[1]), - 'catid':line.split()[2], - 'carton_to_target_pk':int(line.split()[3]), - 'stdflag':int(line.split()[4]), - 'll':float(line.split()[5]), - 'bb':float(line.split()[6]), - 'rr':float(line.split()[7]), - 'fiberid':int(line.split()[8]) - }) - row=pd.concat([row,cols]) - - data=data.append(row, ignore_index=True) - - - if fps is False: - logstr = "Obtaining Catalog Information" - print(logstr) - if log is not None: os.system('echo "'+logstr+'" >> '+log) - data = data.apply(get_ra_dec, axis=1, legacy = legacy, field=field, mjd=mjd) - - if cart is True: - logstr = "Obtaining the Carton Meta Data" - print(logstr) - if log is not None: os.system('echo "'+logstr+'" >> '+log) - data=data.apply(get_CartonInfo, axis=1) - - if mags is True: - if astrometry is True: logstr= "Obtaining the WISE, TWOMASS, GUVCAT Mag and GAIA ID, parallax and pm" - else: logstr = "Obtaining the WISE, TWOMASS, and GUVCAT Mag" - print(logstr) - if log is not None: os.system('echo "'+logstr+'" >> '+log) - data=data.apply(get_mags,axis=1,mags=mags, astr=astrometry, gaia_id=gaia_id) - elif astrometry is True: - logstr = "Obtaining Gaia ID, parallex and pm" - print(logstr) - if log is not None: os.system('echo "'+logstr+'" >> '+log) - data=data.apply(get_mags,axis=1,mags=mags, astr=astrometry, gaia_id=gaia_id) - elif gaia_id is True: - logstr = "Obtaining Gaia ID" - print(logstr) - if log is not None: os.system('echo "'+logstr+'" >> '+log) - data=data.apply(get_mags,axis=1,mags=mags, astr=astrometry, gaia_id=gaia_id) - - if rjce is True: - logstr = "Defining the Extintion using the RJCE extintion method" - print(logstr) - if log is not None: os.system('echo "'+logstr+'" >> '+log) - data=data.apply(get_RJCE_ext,axis=1) - if gaia is True: - logstr = "Defining the Extintion using the Bayestar 3D dust extintion maps" - print(logstr) - if log is not None: os.system('echo "'+logstr+'" >> '+log) - data=get_gaia_red(data, calc_dist=fps) - if sfd is True: - logstr = "Defining the Extintion using the SFD dust extintion maps" - print(logstr) - if log is not None: os.system('echo "'+logstr+'" >> '+log) - data=get_sfd_red(data) - - data = data.apply(corrections, axis=1) - filename = Path(Path(catalogfile).stem+'_supp') - - t = Table.from_pandas(data) - t.write(filename.with_suffix('.fits'), overwrite=True) - print("run_plugmap_supplements Complete") - - - -if __name__ == '__main__' : - parser = argparse.ArgumentParser(prog=os.path.basename(sys.argv[0]), - description='Runs Plugmap Suppliments') - parser.add_argument('catalogfile', type=str, help='Catalog file') - parser.add_argument('--log', '-l', help='log file', type=str) - parser.add_argument('--lco', help='LCO Observatory', action='store_true', default=False) - parser.add_argument('--mags', '-m', help='Extra Magnitudes', action='store_true', default=False) - parser.add_argument('--astrometry', help='Gaia astrometry', action='store_true', default=False) - parser.add_argument('--id_gaia', '-i',help='Get Gaia ID', action='store_true', default=False) - parser.add_argument('--rjce', '-r', help='RJCE extintion method', action='store_true', default=False) - parser.add_argument('--gaia', '-g', help='GAIA extintion method', action='store_true', default=False) - parser.add_argument('--sfd', '-s', help='SFD extintion method', action='store_true', default=False) - parser.add_argument('--cart', '-c', help='Get Carton Meta Data', action='store_true', default=False) - parser.add_argument('--designID', '-d', help='SDSS-V DesignID', type=int, default=None) - parser.add_argument('--rs_plan', help='Robostrategy Plan', type=str, default=None) - - args = parser.parse_args() - - run_plugmap_supplements(args.catalogfile, log=args.log, lco=args.lco, mags=args.mags, - astrometry=args.astrometry, rjce=args.rjce, gaia=args.gaia, - gaia_id=args.id_gaia, sfd=args.sfd, - cart=args.cart, designID= args.designID, rs_plan=args.rs_plan) diff --git a/bin/rundaily b/bin/rundaily deleted file mode 100755 index db2cf418e..000000000 --- a/bin/rundaily +++ /dev/null @@ -1,201 +0,0 @@ -#!/usr/bin/env python - -import os, os.path, sys, time, getopt -import sxpar -from glob import glob - -""" -rundaily: - -Written by Gary Kushner (LBL). Jan 2010. -""" - -#### -def usage(): - """Display usage and exit""" - - print("usage:") - print("rundaily -m path -s path -p path -l -i") - print(" ") - print(""" - rundaily is meant to be run on rieman via cron. It will wait until the next MJD is - downloaded and then run a script. It will output the status or errors to stdout. - - Note : you must "setup trac" before running this script. Also, anything the - given script might need. - - The parameters are: - - -m path to file to store next mjd to look for - -s path to file to exec on new mjd. The file will be run like this "file $MJD" - -p path to getWikiMJD password file - -l run lco - -d run Daily - - NOTE: To avoid upsetting cron, rundaily always exists with zero. -""") - - sys.exit(0) - - -#### -def screamAndDie(msg): - """Print a message to stdout and then exit""" - - print(msg) - sys.exit(0) - -#### -def parseCmdLine(args): - """Parse command line arguments and return a (mjdFile, scriptFile, pwFile)""" - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(args, "m:s:p:ld") - except: - usage() - - if len(pargs) != 0: - print("wrong number of command line arguments.\n") - usage() - - mjdFile = "" - scriptFile = "" - pwFile = "" - lco = False - daily = False - - # Fill in the config - for (opt, value) in opts: - if opt == "-m": mjdFile = value - if opt == "-s": scriptFile = value - if opt == "-p": pwFile = value - if opt == "-l": lco = True - if opt == "-d": daily = True - if mjdFile == "" or scriptFile == "" or pwFile == "": - usage() - - return (mjdFile, scriptFile, pwFile, lco, daily) - - -def get_emails(mjdFile): - """Return list of emails for logs""" - return(open(os.path.join(os.path.dirname(mjdFile),'emails')).read().splitlines()) - -#### -def getMJD(mjdFile): - """Return the single number stored in the given file""" - - return int(open(mjdFile).read()) - -def getLastMJD(lco,verbose=True): - if lco: DAILY_BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_S' - else: DAILY_BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_N' - - path = os.path.join(os.getenv(DAILY_BOSS_SPECTRO_DATA), '?????') - def get_key(fp): - if not os.path.isdir(fp): return(0) - filename = os.path.basename(fp) - int_part = filename.split()[0] - return(int(int_part)) - files = sorted(glob(path),key=get_key) - mjd = os.path.basename(files[-1]) - if verbose: - print('Latest MJD %s' % mjd, ' at %s' % files[-1]) - return mjd - - -#### -def incrementMJD(mjdFile): - """Increment the single number in the given file by one""" - - f = open(mjdFile, "r+") - mjd = int(f.read()) + 1 - f.seek(0) - f.write(str(mjd)) - f.truncate() - f.close() - - print("Next MJD to wait for will be " + str(int(mjd))) - -#### -def runScript(scriptFile, mjd, lco, daily): - """Run the script 'scriptFile $MJD'""" - - cmd = [scriptFile, '-m', str(mjd)] - msg = "Running script " + scriptFile + " " + str(mjd) - if lco: - cmd.append('-l') - msg+=" for LCO data" - if daily: - cmd.append('-d') - msg+=" for DAIlY" - - print(msg) - os.spawnv(os.P_NOWAIT, scriptFile, cmd) - -#### -def nextMJD(mjd, pwFile, lco): - """Return true if the given MJD has been transfered""" - - if lco: DAILY_BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_S' - else: DAILY_BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_N' - - path = os.path.join(os.getenv(DAILY_BOSS_SPECTRO_DATA), str(mjd)) - print("Looking for %s" % path) - return os.path.isdir(path) - -#### -def skipMJD(lco, daily, formsg, mjdFile, testmjd, scriptFile): - while( int(testmjd) > int(getMJD(mjdFile))): - for email in get_emails(mjdFile): - if len(email) == 0: continue - os.spawnv(os.P_WAIT, '/usr/bin/mail', - ['/usr/bin/mail', '-s', '"UUBATCHPBS Skipping '+str(getMJD(mjdFile))+formsg+'"', - email] ) - print("Skipping MJD"+formsg+": " + str(getMJD(mjdFile))) - incrementMJD(mjdFile) - testmjd = getLastMJD(lco,verbose=False) - mjd = getMJD(mjdFile) - if nextMJD(getMJD(mjdFile), '', lco): - print("New MJD"+formsg+" transfered: " + str(mjd) + ".") - incrementMJD(mjdFile) - runScript(scriptFile, mjd, lco, daily) - return(testmjd) - return(testmjd) - -#### -def main(args): - (mjdFile, scriptFile, pwFile, lco, daily) = parseCmdLine(args) - - # Some early sanity checks - if not os.path.exists(mjdFile): - screamAndDie("Can not find MJD file: " + mjdFile) - if not os.path.exists(scriptFile): - screamAndDie("Can not find script file: " + scriptFile) - if not os.path.exists(pwFile): - screamAndDie("Can not find password file: " + pwFile) - - # Is the next MJD here? - mjd = getMJD(mjdFile) - formsg='' - if lco: formsg += ' lco' - if daily: formsg += ' DAILY' - if len(formsg) > 0: formsg=' for'+formsg - if nextMJD(mjd, pwFile, lco): - print("New MJD"+formsg+" transfered: " + str(mjd) + ".") - incrementMJD(mjdFile) - runScript(scriptFile, mjd, lco, daily) - else: - testmjd = getLastMJD(lco) - if int(testmjd) > int(mjd): - mjd = skipMJD(lco, daily, formsg, mjdFile, testmjd, scriptFile) - else: - print("MJD"+formsg+" "+ str(mjd) + " is not here yet.") - - -#### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) - diff --git a/bin/rundaily_cron b/bin/rundaily_cron deleted file mode 100755 index 125e1138e..000000000 --- a/bin/rundaily_cron +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - - -#### crontab: -## SHELL=/bin/bash -## BASH_ENV=/home/boss/.bashrc -## -## */15 * * * * /home/boss/daily/cmd/rundaily_cron -#### - -#### -# Suggested installation is to create a ln -s from this file to ~boss/daily/cmd -#### - - -### Start logging - -LOGDIR=/home/boss/daily/logs -exec >>$LOGDIR/daily.log 2<&1 - -#source /home/boss/.bashrc -export PATH=$PATH:/usr/local/bin - -### Use this to temporarily turn off script -#exec echo "turned off at $(date)" - -### Start Script - -date=$(date) -echo "Hello from dailyrun at $date" - -## echo "HOME is $HOME" -## echo "PATH is $PATH" -## echo "IDL_PATH is $IDL_PATH" -## export IDL_PATH=+/clusterfs/riemann/software/itt/idl70/lib:$IDL_PATH -## idl -e 'platelist' - -setup idlspec2d trunk -/home/boss/products/Linux/idlspec2d/trunk/bin/rundaily_riemann -g -echo "Goodbye from dailyrun started at $date" diff --git a/bin/rundaily_riemann b/bin/rundaily_riemann deleted file mode 100755 index c6d2254be..000000000 --- a/bin/rundaily_riemann +++ /dev/null @@ -1,107 +0,0 @@ -#!/usr/bin/env bash -# -# Setup the riemann environment to run dailyrun in either cron mode or daemon mode -# from the /home/boss account. -# -# Written by Gary Kushner (LBL). Feb 2010. - -function usage -{ - local execName=$(basename $0) - ( - echo "usage: $execName -e -t" - echo - echo " -d run in quasi-daemon mode, sleeping 10 minutes (default) between invocations" - echo " -s Don't setup products" - echo " -h this help" - echo " -p poll delay in seconds (default 600)" - echo " " - echo " -g go. Go must be specified. This is to prevent accidentally running $execName." - ) >&2 - exit 1 -} - -function screamAndDie -{ - echo "Failed: $*" - - echo "Goodbye!" - exit 1 -} - -function printAndRun -{ - echo "$*" - -# if "$dryMode"; then -# return -# fi - - # Silently do nothing - if test "_$*" = "_"; then - return - fi - - eval "$@" - if test $? -ne 0; then - screamAndDie "failed running $*" - fi -} - - -### -### Start of script -### - -### Parse Options - -delay=600 -daemon=false -pwfile="" -skipSetups=false -go=false - -while getopts "sdgp:" argname; do - case $argname in - d) daemon=true ;; - s) skipSetups=true ;; - g) go=true ;; - p) delay=$OPTARG ;; - *) usage - esac -done -shift $((OPTIND-1)) - -### Good to go? -if ! "$go"; then - usage -fi - -### Say hello Gracie - -echo "Hello from rundaily_riemann at $(date)" - -### Setup eups products - -if ! "$skipSetups"; then -# printAndRun "setup idlspec2d" - printAndRun "setup idlspec2d trunk" - printAndRun "setup trac" -fi - - -### Setup python options -export PYTHONUNBUFFERED=1 - - -### If not daemon mode, run once and exit -if ! "$daemon"; then - exec rundaily -m /home/boss/daily/etc/nextmjd -s $IDLSPEC2D_DIR/bin/rundaily_riemann_script -p /home/boss/daily/etc/wiki -fi - -### Run in daemonish mode -while true; do - rundaily -m /home/boss/daily/etc/nextmjd -s $IDLSPEC2D_DIR/bin/rundaily_riemann_script -p /home/boss/daily/etc/wiki - echo "Sleeping for $delay seconds at $(date)" - sleep $delay -done diff --git a/bin/rundaily_riemann_script b/bin/rundaily_riemann_script deleted file mode 100755 index e74e14c58..000000000 --- a/bin/rundaily_riemann_script +++ /dev/null @@ -1,221 +0,0 @@ -#!/usr/bin/env bash -# -# Start the daily BOSS spectro pipeline. This script is called from rundaily using -# "rundaily_script $MJD" where $MJD is the mjd to process. -# -# Written by Gary Kushner (LBL). Jan 2010. - -function usage -{ - local execName=$(basename $0) - ( - echo "usage: $execName \$MJD" - ) >&2 - exit 1 -} - -function screamAndDie -{ - echo "!! Failed: $*" | tee -a $LOGDIR/$MJD.warning - - echo "Goodbye from rundaily_riemann_script!" - - # Make it easy to see the failure - echo "Failed!" >>$LOGDIR/$MJD.failed - - ### This hack is too ugly, need to change it ### - echo "Mailing Error Report" - mail -s "$MJD failed" StephenBailey@lbl.gov,jonathan.richards@utah.edu < $LOGDIR/$MJD.warning - - exit 1 -} - -function printAndRun -{ - echo "Checkpoint at $(date)" - echo "$*" - -# if "$dryMode"; then -# return -# fi - - # Silently do nothing - if test "_$*" = "_"; then - return - fi - - eval "$@" - if test $? -ne 0; then - screamAndDie "failed running $*" - fi -} - - -function tryAndRun -{ - echo "$*" - -# if "$dryMode"; then -# return -# fi - - # Silently do nothing - if test "_$*" = "_"; then - return - fi - - eval "$@" -} - -function svnUp -{ - echo "Attempting to svn up $1" - - tryAndRun "svn up $1" - if test $? == 0; then - return - fi - - echo "svn up $1 failed. Going to try a cleanup." | tee -a $LOGDIR/$MJD.warning - tryAndRun "sleep 600" - tryAndRun "svn cleanup $1" - printAndRun "svn up $1" -} - -# -### Start of script -# - -### Parse command line - -if ! test $# == 1; then - echo "Wrong number of parameters" - echo " " - usage -fi -if ! test -z $(perl -n -e 'print "not" unless /^[0-9]{5}$/' <<< $1); then - echo "First parameter must be an MJD not $1" - echo " " - usage -fi - -MJD=$1 - -### Start logging - -LOGDIR=/home/boss/daily/logs -exec >>$LOGDIR/$MJD.log 2>&1 -echo "Hello at $(date), processing $MJD" - - -### Sanity Checks - -if test -z $IDLSPEC2D_DIR; then - screamAndDie "idlspec2d must be setup" -fi -if test -z $PHOTOOP_DIR; then - screamAndDie "photoop must be setup" -fi - - - -### Tell ssh to use the autoboss key - -export SVN_SSH="ssh -i /home/boss/.ssh/id_dsa-autoboss" - -### (Optionally) Setup or Specify eups products and versions and configuration options -### that we want to use. - -#printAndRun "setup idlspec2d v5_4_11" -#printAndRun "setup photoop" -#printAndRun "setup runz" -#UPS1D=,upsvers1d=\"v5_4_9\" -#UPS2D=,upsvers2d=\"v5_4_9\" -UPS1D=,upsvers1d=\"$DAILY_UPSVERS1D\" -UPS2D=,upsvers2d=\"$DAILY_UPSVERS2D\" -ZCODE=",/zcode" - -echo UPS1D=$UPS1D, UPS2D=$UPS2D, ZCODE=$ZCODE - -### Setup environment variables - -export BOSS_SPECTRO_REDUX=$DAILY_BOSS_SPECTRO_REDUX -export PHOTO_DATA=$DAILY_PHOTO_DATA -export PHOTO_REDUX=$DAILY_PHOTO_REDUX -export PHOTOPLATE_DIR=$DAILY_PHOTOPLATE_DIR -export PHOTO_SWEEP=$DAILY_PHOTO_SWEEP -export PHOTO_RESOLVE=$DAILY_PHOTO_RESOLVE -export PHOTO_CALIB=$DAILY_PHOTO_CALIB -export BOSS_SPECTRO_DATA=$DAILY_BOSS_SPECTRO_DATA - -# Uncomment the next line to run in test mode -#export BOSS_SPECTRO_REDUX=/home/boss/testdata - -echo "BOSS_SPECTRO_REDUX=$BOSS_SPECTRO_REDUX" -echo "PHOTO_DATA=$PHOTO_DATA" -echo "PHOTO_REDUX=$PHOTO_REDUX" -echo "PHOTOPLATE_DIR=$PHOTOPLATE_DIR" -echo "PHOTO_SWEEP=$PHOTO_SWEEP" -echo "PHOTO_RESOLVE=$PHOTO_RESOLVE" -echo "PHOTO_CALIB=$PHOTO_CALIB" -echo "BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA" - -# Determine idlspec2d version and set -spec2d=$(perl -p -e 's{.*/(.*)$}{\1}' <<< $IDLSPEC2D_DIR) -echo "Using idlspec2d version $spec2d" -export RUN1D=${spec2d} -export RUN2D=${spec2d} -# Override RUN1D and/or RUN2D if UPS1D or UPS2D is defined -if ! test -z $UPS1D; then - export RUN1D=$(perl -p -e 's{.*="(.*)"$}{\1}' <<< $UPS1D) -fi -if ! test -z $UPS2D; then - export RUN2D=$(perl -p -e 's{.*="(.*)"$}{\1}' <<< $UPS2D) -fi -RUN1DKEY=,run1d=\"$RUN1D\" -RUN2DKEY=,run2d=\"$RUN2D\" -# -echo RUN1D=$RUN1D, RUN2D=$RUN2D -echo RUN1DKEY=$RUN1DKEY, RUN2DKEY=$RUN2DKEY - - -### -### Start of main processing -### - -echo "Processing svn updates" -setup speclog trunk -setup platelist trunk -svnUp $PLATELIST_DIR -svnUp $SPECLOG_DIR -### svnUp $SPINSPECT_DIR - -echo "Running IDL code" - -#- Always use trunk for platelist, then switch back -setup idlspec2d trunk -printAndRun "idl -e 'platelist, /create $RUN1DKEY $RUN2DKEY'" - -setup idlspec2d $RUN2D -printAndRun "idl -e 'spplan2d, MJD=$MJD $RUN2DKEY'" -printAndRun "idl -e 'spplan1d, MJD=$MJD $RUN2DKEY'" -#printAndRun "idl -e 'batchpbs, QUEUE=\"high_pri\", MJD=$MJD $UPS1D $UPS2D $ZCODE'" -printAndRun "idl -e 'batchpbs, queue=\"fast\", MJD=$MJD $UPS1D $UPS2D $ZCODE'" - -#- Use trunk for latest tweaks to platelist and platemerge -setup idlspec2d trunk -printAndRun "idl -e 'platelist, /create $RUN1DKEY $RUN2DKEY'" - -#- Mail subset of report to get a heartbeat that jobs were submitted0 -echo "Mailing Report" -grep 'Submitting redux' $LOGDIR/$MJD.log | mail -s "redux $MJD" StephenBailey@lbl.gov,jonathan.richards@utah.edu - -#- Don't run platemerge as part of cron job -- too long -#- It runs as part of batchmerge job each morning now -### printAndRun "idl -e 'platemerge $RUN2DKEY'" - -### All Done -echo "Goodbye at $(date)" - - - diff --git a/bin/sdR_hdrfix.py b/bin/sdR_hdrfix similarity index 63% rename from bin/sdR_hdrfix.py rename to bin/sdR_hdrfix index 240cfb703..b0b3b3b26 100755 --- a/bin/sdR_hdrfix.py +++ b/bin/sdR_hdrfix @@ -1,108 +1,42 @@ -#!/usr/bin/env python - -from pathlib import Path -from pydl.pydlutils import yanny -from astropy.table import Table, vstack -from os import getenv, environ, remove +#!/usr/bin/env python3 +from boss_drp.sos.sdR_hdrfix import fixhdr, getLastMJD +from os import getenv from os import path as ptt from sys import argv import argparse -from astropy.table import Table, Column, unique -from glob import glob -from collections import OrderedDict -import numpy as np -from multiprocessing import Process -import subprocess -from astropy.time import Time -import time import platform -from termcolor import colored - -def getLastMJD(silent=True): - if 'sdss5' not in platform.node(): - print('mjd is required when not running at observatories') - exit() - else: - path = ptt.join('/','data','spectro', '?????') - def get_key(fp): - if not ptt.isdir(fp): return(0) - filename = ptt.basename(fp) - int_part = filename.split()[0] - return(int(int_part)) - files = sorted(glob(path),key=get_key) - mjd = ptt.basename(files[-1]) - if silent is not True: - print('Latest MJD %s' % mjd) - return mjd - -def read_sdHdrFix(sdHdrFix_file): - try: - return(yanny.read_table_yanny(sdHdrFix_file, 'OPHDRFIX')) - except: - return(None) - - -def fixhdr(expid, hdrcards, mjd=None, obs=getenv('OBSERVATORY'), clobber=False, cameras='??'): - if mjd is None: mjd = getLastMJD() - - sdHdrFix_file = ptt.join(getenv('SDHDRFIX_DIR'), obs.lower(), 'sdHdrfix', 'sdHdrFix-'+str(mjd)+'.par') - - updates= None - - if clobber is not True: - updates = read_sdHdrFix(sdHdrFix_file) - if updates is None: - updates = Table(names=('fileroot', 'keyword', 'value'), - descriptions = ('Root of file name, without any ".fit" suffix', 'Keyword name', 'Keyword value (as a string)'), - dtype = ('S20', 'S9', 'S80')) - - updates.meta = OrderedDict({'MJD': str(mjd) +" # Modified Julian Date for sdHdrFix file", - 'OBS': str(obs) +" # Observatory" }) - - for key in hdrcards.keys(): - updates.add_row(('sdR-'+cameras+'-'+str(expid).zfill(8), key.upper(), hdrcards[key])) - updates = unique(updates, keys=['fileroot','keyword'], keep='last') - - print(sdHdrFix_file) - print(updates) - - if ptt.exists(sdHdrFix_file): - remove(sdHdrFix_file) - yanny.write_ndarray_to_yanny(sdHdrFix_file, updates, structnames='OPHDRFIX',hdr=updates.meta, comments=None) - - -class Range(object): - def __init__(self, start, end): - self.start = start - self.end = end - def __eq__(self, other): - return self.start <= other <= self.end - def __repr__(self): - return '{{{0} - {1}}}'.format(self.start, self.end) +try: + from termcolor import colored +except: + def colored(text,color): + return(text) if __name__ == '__main__' : - msg = "\n "+colored("At current only use if still exposing or don't run SOS after (skip and note in Night Log (and/or email) if uncertain)",'red') + msg = "\n "+colored("At current only use if still exposing or don't run SOS after\n (skip and note in Night Log (and/or email) if uncertain)",'red') + msg2 = "\n "+colored("At current only use if still exposing or don't run SOS after for Science Frames\n (skip and note in Night Log (and/or email) if uncertain)",'red') formatter = lambda prog: argparse.HelpFormatter(prog,max_help_position=60) parser = argparse.ArgumentParser( prog=ptt.basename(argv[0]), - description='', + description='Create the files used by the pipeline to fix the header meta data of the BOSS exposures', formatter_class=formatter, epilog='one or more update options are required') parser.add_argument('expid', help='Exposure ID') - parser.add_argument('--mjd', '-m', help = 'mjd of file (default: '+str(getLastMJD(silent=True))+')', required=False, default = getLastMJD(silent=True)) + parser.add_argument('--mjd', '-m', help = 'mjd of file (default: latest MJD)', required=False, default = None) if 'sdss5' not in platform.node(): - if getenv('OBSERVATORY') is None: + if getenv('OBSERVATORY') is None: obs_req = True req = parser.add_argument_group('Required arguments') req.add_argument('--obs', help = 'Set Observatory', required=True, choices=['APO','LCO']) - else: + else: obs_req = False parser.add_argument('--obs', help = 'Set Observatory (default:'+getenv('OBSERVATORY')+')', default=getenv('OBSERVATORY'), required=False, choices=['APO','LCO']) + else: + parser.add_argument('--obs', help=argparse.SUPPRESS) parser.add_argument('--clobber', help='clobber sdHdrFix file', action='store_true') @@ -115,7 +49,7 @@ def __repr__(self): parser.add_argument('--cameras', type=str.lower, choices=cam, default='??', help='Cameras for hdr update (?? for all cameras) [default:??]') - qualgroup = parser.add_argument_group("Optional Quality Update (exclusive)"+msg) + qualgroup = parser.add_argument_group("Optional Quality Update (exclusive)"+msg2) qualgroup.add_argument('--bad', '-b', help = 'flag as quality=bad', action = 'store_true') qualgroup.add_argument('--test', '-t', help = 'flag as quality=test', action = 'store_true') @@ -135,10 +69,10 @@ def __repr__(self): lampgroup.add_argument('--flat', help = 'short cut to set FF = 1 1 1 1 & FFS = 1 1 1 1 1 1 1 1 ', action = 'store_true') lampgroup.add_argument('--hartmann',type=str.capitalize, choices = ['Out', 'Right', 'Left', 'Closed'], help='Hartmann Door Status') - commongroup = parser.add_argument_group("Optional Common keys to Update"+msg) + commongroup = parser.add_argument_group("Optional Common keys to Update"+msg2) commongroup.add_argument('--quality', type=str.lower, choices=['excellent', 'test', 'bad'], help = 'Set Quality flat of exposures') - specialgroup = parser.add_argument_group("Optional Specialized Keys to Update \n "+colored(" Only use if still exposing or don't run SOS after (skip and note in Night Log (and/or email) if uncertain)",'red')) + specialgroup = parser.add_argument_group("Optional Specialized Keys to Update "+msg) specialgroup.add_argument('--flavor', type=str.lower, choices=['bias','dark','flat','arc','science','smear'], help='Type/Flavor of exposure') specialgroup.add_argument('--exptime', type=float, help='Exposure length (s)') specialgroup.add_argument('--tai-beg', type=float, help='Starting time (tai) of exposure') @@ -147,12 +81,15 @@ def __repr__(self): specialgroup.add_argument('--confid', type=int, metavar='CONFIGID', help="ConfigureID") specialgroup.add_argument('--designid',type=int, metavar='DESIGNID', help='DesignID') - keygroup = parser.add_argument_group("Manually update a key \n "+colored(" Only use if still exposing or don't run SOS after (skip and note in Night Log (and/or email) if uncertain)",'red')) + keygroup = parser.add_argument_group("Manually update a key "+msg) keygroup.add_argument('--key', '-k', help = 'header keyword to update (required if value is set)', default=None) keygroup.add_argument('--value', '-v', help = 'updated header keyword value (required if key is set)', default=None) args = parser.parse_args() + if args.mjd is None: + args.mjd = str(getLastMJD(silent=True)) + if 'sdss5' in platform.node(): args.obs = getenv('OBSERVATORY') @@ -172,24 +109,24 @@ def __repr__(self): if args.key is not None: if args.key.upper in ['EXPOSURE', 'MJD']: print('ERROR: Invalid Keys. Exiting') - exit() + exit() - updates = {} + updates = {} - if args.bad: + if args.bad: updates = {'quality': 'bad'} elif args.test: updates = {'quality': 'test'} else: for key in vars(args).keys(): - if key in ['expid', 'mjd', 'obs', 'clobber', 'bad', 'test', 'key', + if key in ['expid', 'mjd', 'obs', 'clobber', 'bad', 'test', 'key', 'value','rerun', 'cameras', 'observer', 'arc', 'flat']: continue if vars(args)[key] is None: continue if type(vars(args)[key]) == list: updates[key] = ' '.join(vars(args)[key]) - else: + else: updates[key] = str(vars(args)[key]) - if args.key is not None and args.value is not None: + if args.key is not None and args.value is not None: updates[args.key] = args.value @@ -199,14 +136,14 @@ def __repr__(self): while confirm.lower() != 'y': confirm = input('Do you really want to edit '+key+'? (y/[n]) ') if confirm.lower() == '': confirm = 'n' - if confirm.lower() == 'n': + if confirm.lower() == 'n': updates.pop(key) print('Skipping '+key) break - if len(updates) == 0: - parser.print_help() + if len(updates) == 0: + parser.print_help() else: - fixhdr(args.expid, updates, mjd = args.mjd, obs = args.obs, clobber=args.clobber, + fixhdr(args.expid, updates, mjd = args.mjd, obs = args.obs, clobber=args.clobber, cameras=args.cameras) diff --git a/bin/slurm_Summary b/bin/slurm_Summary new file mode 100755 index 000000000..37bb4d881 --- /dev/null +++ b/bin/slurm_Summary @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 +from boss_drp.run.slurm_Summary import slurm_Summary + +import argparse +import os + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Create daily field merge slurm job') + parser.add_argument('--module', '-m', default = None, help = 'module file to use (ex bhm/master[default] or bhm/v6_0_9)') + parser.add_argument('--topdir', default = None, help = 'Boss Spectro Redux base directory') + parser.add_argument('--run2d', default = None, help = 'Run2d') + parser.add_argument('--run1d', default = None, help = 'Run1d') + parser.add_argument('--walltime', '-w', default = '40:00:00', help = 'Job wall time (format hh:mm:ss) default = "40:00:00"') + parser.add_argument('--fast', action='store_true' , help = 'use fast allocation') + parser.add_argument('--mem', default = 240000, help = 'memory in bytes') + parser.add_argument('--daily', action = 'store_true', help = 'only run if daily run has been run today') + parser.add_argument('--epoch', action = 'store_true', help = 'run for the epoch coadds') + parser.add_argument('--custom', help='Name of custom Coadd') + parser.add_argument('--full', action='store_true', help='Use a full cluster node') + parser.add_argument('--monitor', action='store_true', help='Monitor job and send email at completion with the logs') + parser.add_argument('--no_submit', action='store_true', help='Create slurm job but do not submit it') + parser.add_argument('--merge_only', action='store_true', help='Run fieldmerge in merge_only mode') + parser.add_argument('--no_fieldlist', action='store_true', help='Skip Running Fieldlist') + parser.add_argument('--backup', default= None, help = 'Number of backups to keep, or None to not create backup', type= int) + parser.add_argument('--limit', default= None, help = 'Limit number of new field-mjds to update', type= int) + parser.add_argument('--n_iter', default= None, help = 'number of iterations of field merge to run', type= int) + parser.add_argument('--ndays', type=int, help='Limit spAll update to last ndays', default = None, dest='ndays') + parser.add_argument('--email_start', action='store_true', help='Send email at start of run') + parser.add_argument('--skip_specprimary', action='store_true', help='Skip building specprimary in fieldmerge') + parser.add_argument('--update_specprimary', action='store_true', + help='Keep existing specprimary and associated columns and only update new row (and their secondaries)') + parser.add_argument('--verbose', action='store_true', help='Run Fieldmerge with verbose') + parser.add_argument('--defaults',action='store_true', help='Sets --full --merge_only --backup 3 --monitor --update_specprimary') + args = parser.parse_args() + + if args.module is None: + args.module = os.getenv('MODULE', default=None) + if args.module is None: + args.module = os.getenv('RUN2D', default=None) + if args.module is None: + args.moduel = 'bhm/master' + + if args.defaults: + args.full = True + args.merge_only = True + if args.backup is None: + args.backup = 3 + args.monitor = True + args.update_specprimary = True + if args.ndays is None: + args.ndays = 10 + + + if args.backup == 0: + arg.backup = None + + if args.topdir is None: + args.topdir = os.getenv('BOSS_SPECTRO_REDUX') + if args.run2d is None: + args.run2d = os.getenv('RUN2D') + if args.run1d is None: + args.run1d = os.getenv('RUN1D') + slurm_Summary(args.topdir, args.run2d, run1d= args.run1d, module = args.module, + walltime = args.walltime, fast = args.fast, + mem = args.mem, daily = args.daily, + epoch = args.epoch, custom = args.custom, no_fieldlist=args.no_fieldlist, + full = args.full, monitor = args.monitor, email_start= args.email_start, + no_submit = args.no_submit, merge_only = args.merge_only, + backup = args.backup, limit = args.limit, verbose = args.verbose, + n_iter = args.n_iter, skip_specprimary = args.skip_specprimary, + update_specprimary = args.update_specprimary, ndays=args.ndays) + + + diff --git a/bin/slurm_fieldmerge.py b/bin/slurm_fieldmerge.py deleted file mode 100755 index aa54b22f8..000000000 --- a/bin/slurm_fieldmerge.py +++ /dev/null @@ -1,144 +0,0 @@ -#!/usr/bin/env python3 - -from slurm import queue -import argparse -from os import getenv, makedirs, popen, chdir, getcwd -import os.path as ptt -from datetime import date -import astropy.time -import subprocess -import io -import sys -import pandas as pd -from load_module import load_module, load_env -from dailylogger import * -import logging -from pydl.pydlutils.yanny import yanny -from astropy.io import fits -from astropy.table import Table -import numpy as np -import time -import re - - -queue = queue() -mjd = str(int(float(astropy.time.Time(str(date.today())).jd) - 2400000.5)) - -#def load_env(key,log): -# val = getenv(key) -# if val is None: -# log.info('ERROR: '+key+' is not set') -# exit() -# return(val) - -def read_mod(mod,log): - module = load_module() - module('purge') - module('load', mod) - boss_spectro_redux = load_env('BOSS_SPECTRO_REDUX',log) - run2d = load_env('RUN2D',log) - scratch_dir = load_env('SLURM_SCRATCH_DIR',log) - return(boss_spectro_redux,run2d,scratch_dir) - -def check_daily(mod, daily_dir, mjd, log): - nextmjds = yanny(ptt.join(daily_dir, 'etc', 'nextmjd.par')) - mods = np.char.lower(nextmjds["NEXTMJD"]['module'].astype(str)) - indx = np.where(mods == mod.lower())[0] - if len(indx) == 0: - return(False) - else: - return(nextmjds['NEXTMJD']['mjd'][indx].max() > mjd) - -def check_fieldlist(boss_spectro_redux, run2d, spall_mjd): - flist = Table(fits.getdata(ptt.join(boss_spectro_redux, run2d, 'fieldlist-'+run2d+'.fits'),1)) - r = re.compile('Done[\w]*', re.IGNORECASE) - idx = [i for i, x in enumerate(flist['STATUS1D'].data ) if r.search(x)] - flist = flist[idx] - latest_redux = max(flist['MJD']) - return(latest_redux > spall_mjd) - -def slurm_fieldmerge(module='bhm/master', walltime = '40:00:00', fast = True, mem = 32000, daily=False): - - daily_dir = getenv('DAILY_DIR') - if daily_dir is None: daily_dir = ptt.join(getenv('HOME'), "daily") - - makedirs(ptt.join(daily_dir, "logs", "fieldmerge", 'control'), exist_ok = True) - filelog = logging.FileHandler(ptt.join(daily_dir, 'logs', 'fieldmerge', 'control', str(mjd)+'.log')) - filelog.setLevel(logging.DEBUG) - filelog.setFormatter(Formatter()) - - logger = logging.getLogger() - elog = emailLogger() - emaillog = elog.log_handler - emaillog.setLevel(logging.DEBUG) - emaillog.setFormatter(Formatter()) - console = logging.StreamHandler() - console.setLevel(logging.DEBUG) - console.setFormatter(Formatter()) - logger.addHandler(console) - logger.addHandler(emaillog) - logger.addHandler(filelog) - logger.setLevel(logging.DEBUG) - - logger.info('===============================================') - logger.debug(time.ctime()) - queue.verbose = True - if fast is True: - alloc = 'sdss-np-fast' - else: - alloc = 'sdss-np' - boss_spectro_redux, run2d, slurm_dir = read_mod(module, logger) - - if daily is True: - with fits.open(ptt.join(boss_spectro_redux, run2d, 'spAll-'+run2d+'.fits')) as ff: - tf = Table(ff[1].data) - latest_mjd = tf['MJD'].max() - - if not check_daily(module, daily_dir, latest_mjd, logger): - logger.debug('Skipping run') - elog.send('fieldmerge '+run2d +' MJD='+str(mjd), ptt.join(daily_dir, 'etc','emails'), logger) - return() - if not check_fieldlist(boss_spectro_redux, run2d, latest_mjd): - logger.debug('SpAll-'+run2d+' up to date') - elog.send('fieldmerge '+run2d +' MJD='+str(mjd), ptt.join(daily_dir, 'etc','emails'), logger) - return() - log = ptt.join(daily_dir, "logs", "fieldmerge", run2d, "fieldmerge_"+mjd) - - pdargs = pd.Series({"module":module, - "walltime":walltime, - "fast":fast, - "mem":mem, - "run2d":run2d}) - logger.info(pdargs.to_string()) - - old_stdout = sys.stdout - new_stdout = io.StringIO() - sys.stdout = new_stdout - - makedirs(ptt.join(daily_dir, "logs", "fieldmerge", run2d), exist_ok = True) - title = 'fieldmerge_'+run2d - queue.create(label = title, nodes = 1, ppn = 1, walltime = walltime, alloc=alloc, qos = 'sdss', partition = 'sdss-np', - mem_per_cpu = mem, shared = True) - - queue.append("module purge ; module load "+module+" ; source "+ptt.join(daily_dir, "cmd", 'run_fieldmerge'), - outfile = log+".o.log", errfile = log+".e.log") - queue.commit(submit=True) - - output = new_stdout.getvalue() - sys.stdout = old_stdout - logger.info(output) - - subject = 'fieldmerge '+module +' MJD='+str(mjd) - elog.send(subject, ptt.join(daily_dir, 'etc','emails'), logger) - logger.removeHandler(emaillog) - emaillog.close() - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description='Create daily field merge slurm job') - parser.add_argument('--module', '-m', default = 'bhm/master', help = 'module file to use (ex bhm/master[default] or bhm/v6_0_9)') - parser.add_argument('--walltime', '-w', default = '40:00:00', help = 'Job wall time (format hh:mm:ss) default = "40:00:00"') - parser.add_argument('--fast', action='store_true' , help = 'use fast allocation') - parser.add_argument('--mem', default = 32000, help = 'memory in bytes') - parser.add_argument('--daily', action = 'store_true', help = 'only run if daily run has been run today') - args = parser.parse_args() - slurm_fieldmerge(module=args.module, walltime = args.walltime, fast = args.fast, mem = args.mem, daily = args.daily) diff --git a/bin/slurm_readfibermap b/bin/slurm_readfibermap new file mode 100755 index 000000000..5496b7403 --- /dev/null +++ b/bin/slurm_readfibermap @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 + +import argparse +from boss_drp.run.slurm_readfibermap import slurm_readfibermap +from boss_drp.utils import load_env + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Create daily field merge slurm job. Without access to the SDSS Slurm package, it prints the commands for manual execution') + parser.add_argument('--topdir', default = None, help = 'Boss Spectro Redux base directory') + parser.add_argument('--run2d', default = None, help = 'Run2d') + + parser.add_argument('--clobber', action='store_true', help='Clobber spfibermaps') + parser.add_argument('--apo', action='store_true', help='run apo') + parser.add_argument('--lco', action='store_true', help='run lco') + parser.add_argument('--dr19', action='store_true', help='Limit targeting flags to DR19 cartons') + + mjdgroup = parser.add_argument_group('Select MJDs') + mjdgroup.add_argument('--mjd', nargs='*', help='MJD dates to reduce; default="*"', type=int) + mjdgroup.add_argument('--mjdstart', help='Starting MJD', default=None, type=int) + mjdgroup.add_argument('--mjdend', help='Ending MJD', default=None, type=int) + + slurmgroup = parser.add_argument_group('Slurm Options') + slurmgroup.add_argument('--mem_per_cpu', help='Memory allocated per CPU', type=str) + slurmgroup.add_argument('--walltime', help='Wall time in hours', type=str) + slurmgroup.add_argument('--ppn', help='Number of processors per node', type=int) + slurmgroup.add_argument('--nbundle', help='Number of jobs to bundle', type=int, default= None) + + args = parser.parse_args() + + obs = [] + if args.apo: + obs.append('apo') + if args.lco: + obs.append('lco') + if len(obs)== 0: + obs = ['apo','lco'] + + + if args.run2d is None: + args.run2d = load_env('RUN2D') + if args.topdir is None: + args.topdir = load_env('BOSS_SPECTRO_REDUX') + + slurm_readfibermap(boss_spectro_redux = args.topdir, run2d = args.run2d, + walltime = args.walltime, mem = args.mem_per_cpu, + mjd=args.mjd, mjdstart = args.mjdstart, + mjdend = args.mjdend, obs = obs, ppn = args.ppn, clobber =args.clobber, + dr19 = args.dr19, nbundle= args.nbundle) diff --git a/bin/slurm_runfix b/bin/slurm_runfix new file mode 100755 index 000000000..60e855cac --- /dev/null +++ b/bin/slurm_runfix @@ -0,0 +1,74 @@ +#!/usr/bin/env python3 + +from boss_drp.run.slurm_runfix import slurm_runfix +from boss_drp.utils import jdate +from boss_drp.field import field_dir + +import argparse +import glob +import os +import os.path as ptt + +jdate = jdate.astype(int) + +if __name__ == '__main__' : + """ + Build Daily Status emails/htmls + """ + parser = argparse.ArgumentParser( description='Check for failed runs and setup the runs to clean and rerun the crashed field-mjds') + + + parser.add_argument('--obs', type=str, help='Observatory for status update', + nargs='+', default=['apo','lco']) + parser.add_argument('--mjd', type=int, help = 'Update these MJDs', nargs='*') + parser.add_argument('--mjdstart', type=int, help = 'Starting MJD') + parser.add_argument('--mjdend', type=int, help = 'Ending MJD') + parser.add_argument('--epoch', action='store_true', help = 'Run for epoch Coadds') + #parser.add_argument('--custom', type=str, help='Name of custom Coadd', default=None) + + parser.add_argument('--topdir', type=str, default = os.getenv('BOSS_SPECTRO_REDUX'), + help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX') + parser.add_argument('--run1d', type=str, default = os.getenv('RUN1D'), + help='Optional override value for the enviro variable $RUN1D') + parser.add_argument('--run2d', type=str, default = os.getenv('RUN2D'), + help='Optional override value for the enviro variable $RUN2D') + + parser.add_argument('--full', action='store_true', help='Rerun full pipeline regardless of crashed step') + parser.add_argument('--running', action='store_true', help='Select Field-MJDs with ') + parser.add_argument('--nosubmit', action='store_true', help='Build, but not submit redux files') + parser.add_argument('--nbundle', help='Number of jobs to bundle', type=int, default= None) + parser.add_argument('--nodes', default=1, help='Number of Nodes', type=int) + parser.add_argument('--shared', action='store_true', help='Node sharing', default=False) + parser.add_argument('--no_write', action='store_true', help='skip writing and submitting job') + parser.add_argument('--walltime', help='Wall time in hours', type=str, default='24:00:00') + + args = parser.parse_args() + args.custom = None + + if args.run2d is not None: + if args.run1d is None: + args.run1d = args.run2d + + if args.mjd is None: + if args.custom is None: + if args.mjdend is None and args.mjdstart is None: + args.mjd = [jdate-1, jdate] + elif args.mjdend is None and args.mjdstart is not None: + args.mjd = range(args.mjdstart, jdate+1) + elif args.mjdstart is None and args.mjdend is not None: + args.mjd = [args.mjdend] + else: + args.mjd = range(args.mjdstart, args.mjdend+1) + else: + fd = field_dir(ptt.join(args.topdir, args.run2d), + '{custom}_{obs}', custom = True) + redux = glob.glob(fd.format(custom=custom, obs='apo')) + redux.extend(glob.glob(fd.format(custom=custom, obs='lco'))) + args.mjd = [int(x.split('-')[-1]) for x in redux] + + slurm_runfix(args.topdir, args.run2d, args.run1d, args.mjd, args.obs, + full=args.full, epoch=args.epoch, custom=args.custom, + running=args.running, nosubmit = args.nosubmit, + nbundle = args.nbundle, nodes = args.nodes, + shared=args.shared, walltime = args.walltime, + no_write=args.no_write) diff --git a/bin/slurm_sos b/bin/slurm_sos new file mode 100755 index 000000000..810f17569 --- /dev/null +++ b/bin/slurm_sos @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +import argparse +from boss_drp.run.slurm_sos import slurm_SOS + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Create SOS slurm job. Without access to the SDSS Slurm package, it prints the commands for manual execution') + parser.add_argument('--apo', action='store_true', help='run apo') + parser.add_argument('--lco', action='store_true', help='run lco') + + mjdgroup = parser.add_argument_group('Select MJDs') + mjdgroup.add_argument('--mjd', nargs='*', help='MJD dates to reduce; default=Today', type=int) + mjdgroup.add_argument('--mjdstart', help='Starting MJD', default=None, type=int) + mjdgroup.add_argument('--mjdend', help='Ending MJD', default=None, type=int) + + sosgroup = parser.add_argument_group('SOS Options') + sosgroup.add_argument('--no_reject', default=False, action='store_true', help="Overrides the Calibration rejection (use with caution)") + sosgroup.add_argument('--clobber_fibermap', '-f', default=False, action='store_true', help="Clobbers the existing spfibermap files") + sosgroup.add_argument('--no_sdssv_sn2', default=False, action='store_true', help="Skip reporting a second set of SN2 values with updated fit parameters") + sosgroup.add_argument('-n','--no_arc2trace', default=False, action='store_true', help="Skip Utilizing arc2trace refinements") + sosgroup.add_argument('-o','--forcea2t', default=False, action='store_true', help="Force arc2trace for all fields (even if flat exists for field)") + + slurmgroup = parser.add_argument_group('Slurm Options') + slurmgroup.add_argument('--mem_per_cpu', help='Memory allocated per CPU', type=str) + slurmgroup.add_argument('--walltime', help='Wall time in hours', type=str) + slurmgroup.add_argument('--nodes', help='Number of nodes to use; default=1', type=int, default=1) + slurmgroup.add_argument('--ppn', help='Number of processors per node', type=int) + slurmgroup.add_argument('--no_submit', help="Skip submitting process to queue", action='store_true') + slurmgroup.add_argument('--nbundle', help='Number of jobs to bundle', type=int, default= None) + args = parser.parse_args() + + + obs = [] + if args.apo: + obs.append('apo') + if args.lco: + obs.append('lco') + if len(obs)== 0: + obs = ['apo','lco'] + + + slurm_SOS(walltime = args.walltime, mem = args.mem_per_cpu, + mjd=args.mjd, mjdstart = args.mjdstart, nodes=args.nodes, + mjdend = args.mjdend, obs = obs, ppn = args.ppn, no_submit = args.no_submit, + no_reject = args.no_reject, clobber_fibermap = args.clobber_fibermap, + no_sdssv_sn2 = args.no_sdssv_sn2, no_arc2trace = args.no_arc2trace, + forcea2t = args.forcea2t, bundle = args.bundle) diff --git a/bin/slurm_spTrace b/bin/slurm_spTrace new file mode 100755 index 000000000..fc9eba2a5 --- /dev/null +++ b/bin/slurm_spTrace @@ -0,0 +1,47 @@ +#!/usr/bin/env python3 +from boss_drp.run.slurm_spTrace import run_spTrace +from boss_drp.utils import load_env +from boss_drp.utils import jdate +import argparse + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Create spTrace slurm jobs. Without access to the SDSS Slurm package, it prints the commands for manual execution.') + parser.add_argument('--topdir', default = None, help = 'Boss Spectro Redux base directory') + parser.add_argument('--run2d', default = None, help = 'Run2d') + parser.add_argument('--mjd', type=int, required=False, nargs='*',help = 'Use data from these MJDs.') + parser.add_argument('--daily', action='store_true', help='Run in daily mode (only use MJDs specified)') + parser.add_argument('--mjdstart', type=int, required=False,help = 'Starting MJD') + parser.add_argument('--mjdend', type=int, required=False, help = 'Ending MJD') + parser.add_argument('--lco', action = 'store_true',help='Build Run files for LCO') + parser.add_argument('--apo', action = 'store_true', help=argparse.SUPPRESS) + parser.add_argument('--clobber', action='store_true', help='Clobber the existing Plan files') + parser.add_argument('--debug', action='store_true', help='Run in debug mode') + parser.add_argument('--skip_plan', action='store_true', help='Skip creating plans and use currently existing plans') + parser.add_argument('--nodes', type=int, default=1, help= 'Number of nodes to use to run arc2trace') + parser.add_argument('--nbundle', help='Number of jobs to bundle', type=int, default= None) + parser.add_argument('--walltime', help='Wall time in hours (default=72:00:00)', type=str, default='72:00:00') + parser.add_argument('--maxjobs', help='Max Number of Parallel jobs per node', type=int, default=None) + + args = parser.parse_args() + + + if args.mjd is None: + if args.mjdstart is None: + args.mjdstart = jdate.astype(int) + if args.mjdend is None: + args.mjdend = jdate.astype(int) + args.mjd = list(range(args.mjdstart, args.mjdend+1)) + + if args.run2d is None: + args.run2d = load_env('RUN2D') + + if args.topdir is None: + args.topdir = load_env('BOSS_SPECTRO_REDUX') + + alloc = load_env('SLURM_ALLOC') + obs = 'lco' if args.lco else 'apo' + + run_spTrace(args.mjd, obs, args.run2d, args.topdir, nodes=args.nodes, + clobber=args.clobber, alloc= alloc, debug= args.debug, + skip_plan=args.skip_plan, nbundle=args.nbundle, + walltime = args.walltime, maxjobs = args.maxjobs) diff --git a/bin/sos_README b/bin/sos_README deleted file mode 100644 index 941adaf39..000000000 --- a/bin/sos_README +++ /dev/null @@ -1,194 +0,0 @@ -This file includes a description of the files, processes and procedures used by sos. - -Contents: - Files - Processes - Procedures - -************* -*** Files *** -************* - -Here is a list of the sos files, what the do, and, options: - -* sos_runnerd * - -sos_runnerd is the front end executable for sos_runnerd.py. - -* sos_runnerd.py * - -sos_runnerd.py is a daemon that looks for new files from the icc, gets plugmaps, and -updates and commits speclog. Each instance of runnerd can look for one more glob of files. -runnerd can optionally run a command on new files. Originally runnerd was written to be -general purpose, but with the addition of pulling plugmaps and committing them that isn't -that case anymore. If we need another polling daemon, it would be easy to make the sos -specific parts optional. Currently, four instances are run on sos3, one per camera and for -each new file the aporeduce command is called. - -There are many options to sos_runnerd that can be listed by specifying "-?". It would be very unusual to ever start sos_runnerd directly. Normally either sos_apostart or sos_apocontrol would be used. sos_apocontrol is the normal method and sos_apostart can be used if some nonstandard options need to be specified. - -The log files are stored in observer@sos3.apo.nmsu.edu:sos/sos-logs. There are two log files per camera per day. One is all of the messages and the other is just for error messages. The log files are kept for four days. The stdout and stderr for each process is also stored in the same location as b1.out, etc, but unless there's a problem these shouldn't be useful--exceptions and errors should be in the error log file. - -* sos_apocontrol * - -sos_apocontrol is the normal method for controlling the sos daemons on sos3. It has the following commands: - -start : will use sos_apostart to start four daemon processes, one per camera. This is the normal way to start the sos process. - -stop : this will create a 'die' file that will tell the daemons to exit. They will all exit within 2 minutes. As long as that file is present, the daemons will not start. The start command automatically deletes the 'die' file. - -stopWait : will execute the stop command and wait for the daemons to quit. If they don't quit, this command will never return--hit ^c. - -status : will display the running sos_runnerd processes. If everything is running correctly, there should be 4. If everything is stopped, there should be 0. - -allow: allow deletes the 'die' file so that sos_apostart can be used to start the daemons with custom options. - -* sos_apostart * - -sos_apostart will start the sos processes at apo. Use -? for the complete options. - -This will start the four sos daemons with the correct options to run at APO. Normally -sos_apostart it not called directly, but indirectly via sos_apocontrol. There are a few options which might be useful in some circumstances. If calling directly, make sure to execute "sos_apocontrol allow" first. - -Normally the sos_runnerd daemons need to be run under an ssh-agent daemon in order to process svn commands. sos_apostart will normally try to connect to an ssh-agent session, or if one is not running, then start a new session. If it needs to start a new ssh-agent session, then the user will need to know the password of observer@sos3.apo.nmsu.edu:id_dsa-sos. sos_apostart will store the agent info in the file observer@sos3.apo.nmsu.edu:sos/control/agent.info. The agent socket will be observer@sos3.apo.nmsu.edu:sos/control/agent.socket. - -The options are: - --x : Start the daemons so that they do not -most- process svn commands. Normally, -the daemons update and commit the speclog product during the processing of plugmap files. With this option, the daemons will still "svn add" the plugmap files and directories but will but commit or update the speclog product. If -x is not specified, then sos_apostart will attempt to confirm that an ssh-agent daemon is connected so that the svn commands will succeed. - --a : In order to process svn commands, the daemons will normally be running configured to use an ssh-agent daemon. sos_apostart will normally either connect to an existing ssh-agent or start one--this option prevents that from happening. There are two cases where this can be useful. The first is if the -x option is specified. The second is if you wish to use custom ssh-agent handling. If -a is specified, but not -x, then sos_apostart will still insure that sos_runnerd can execute ssh commands via some ssh_agent. - --s : Unless -s is specified, sos_apostart will try and setup the idlspec2d and platedb products. This switch allows you to run the sos_runnerd daemons under non current versions of these products. - --t : Start up the 4 daemons in test mode using directories under /tmp/sos. - --e : Will start sos_runnerd in a "mini redo" mode. This is a special case, usually use the sos_aporedo command to redo processing. Normally, sos_runnerd will start processing 'new' files--that means any files added to the /data/speclog/$MJD directory after starting. When -e is specified, sos_runnerd will process all of the existing files in the 'current' $MJD first and then look for new files (see -e for info on the current MJD). This is useful if the process wasn't started until after observing has already started for the night. - --m : Specify the MJD to start processing. Without this switch, sos_runnerd will look for the latest MJD in /data/spectro and start there. With this switch, sos_runnerd will start with the given MJD and then go to the LATEST MJD--it will not go to the NEXT MJD. This switch is only useful with the -e switch. Specifying the -e switch and the -m switch together will result in MJD files specified by the -m switch getting reprocessed. Normally, it is better to use the sos_aporedo command. - --d : Print the command that would be executed, but don't execute them. - --g : GO. sos_apostart will not run without the go switch. This is prevent someone typing sos_apostart in the hopes of getting usage. - - -* sos_aporedo * - -sos_aporedo will manually run or rerun aporeduce on a given set of files or directories. - -This command will run aporeduce on all the files in a given MJD. It will not wait for new files or move on to a different MJD. sos_aporedo will start 4 sos_redorunner commands, one per camera. Four log files will be written to the current directory. - -options are: - --m : the MJD to process - --X : Normally sos_redo will only add new plugmap files, it will not commit or update the speclog product. With the -X command, sos_redo will commit the plugmap files. - --A : Normally sos_redo doesn't do any svn processing that needs authentication and so doesn't need to be connected to an ssh-agent process. If you specify -X you should specify -A, or manually insure that sos_aporedo is running under an ssh-agent daemon. - --t : Start up the 4 process in test mode using directories under /tmp/sos. - --d : Print the command that would be executed, but don't execute them. - --g : GO. sos_aporedo will not run without the go switch. This is prevent someone typing sos_aporedo in the hopes of getting usage. - -* sxpar.py * - -sxpar.py ia a module that can be called from the command line to parse and display a fits header. - -The syntax is sxpar.py -v fits-file [keyword]. The option -v displays all of the keyword records just as they are stored in the fits header. If no keyword is given, all keyword value pairs will be displayed. - -getPlugmap : a command line utility to display and optionally get a plugmap file associated with a fits file. - -* sos_redorunner * - -sos_redorunner is the program to process or reprocess a files from a specific MJD. Normally this program is called via sos_aporedo and it would be unusual to call this program directly. If you want to reprocess some files manually it is generally better to call aporeduce from IDL directly. - - -* sos_runnerd_processlist * - -sos_runnerd_processlist is a version of sos_runnerd that puts all the aporeduce commands into a general queue managed by sos_batchd instead of processing them itself. This can be very efficient, but breaks the required file ordering. This file will be removed and archived soon. - -* sos_classes.py * - -sos_classes.py contains classes used internally by sos_runnerd.py and programs that interface to it. - -* sos_batchd * - -sos_batchd is the "femto batch" runner. It allows other processes to submit jobs and then -it runs them. You can run multiple instances and that many concurrent jobs will run. A -normal configuration is one instance per cpu. Like a real batch system, this allows many processes to add jobs to a queue that will be parceled out to the next free core. It can be configured in many ways, for example, one queue for all cores, or some percentage of cores dedicated to a particular task. - -* This is not currently being used * because the original design did not take into account that aporeduce needed the files to arrive in a specific order. Sending all the files to a batch system messed that up. It's left here because it works and maybe it will be used for something else. We can move it or remove it as desired. - -* fb_classes.py * - -fb_classes.py contains classes used internally by sos_batchd and programs that interface to it. - -***************** -*** Processes *** -***************** - -* sos_runnerd * - -Four instances of sos_runnerd--one per camera--should always be running on sos3. These processes are normally started using sos_apocontrol. - -* ssh-agent * - -There should be a long lived ssh-agent used be sos_runnerd to execute svn commands. It is usually started by sos_apostart which is called from sos_apocontrol. The agent info file is observer@sos3:sos/control/agent.info and the socket file is observer@sos3:sos/control/agent.socket. - - -****************** -*** Procedures *** -****************** - -=== All commands are executed from observer@sos3 === -=== All commands assume that idlspec2d is setup === - -* Confirm SOS Processes are Running * - -$ sos_apocontrol status -There should be four instances of sos_runnerd displayed, one per camera. The first line will be "Running", the last line will be "Done". Between those lines should be four instances of sos_runnerd. Each instance will be a long line separated by a blank line. - -If you do not see see four processes running, stop the processes and then start the processes. - - -* Confirm the SOS Process are Not Running * - -$ sos_apocontrol status -There should be zero instances of sos_runnerd displayed. The first line will be "Running", the last line will be "Done". There should be nothing between those two lines. - - -* Start SOS Processes * - -$ sos_apocontrol start -Then confirm the sos processes are running. - - -* Start SOS Processes After Observing Has Started For the Night * - -$ sos_apocontrol allow -$ sos_apostart -e -Then confirm the sos processes are running. - -* Stop SOS Processes * - -$ sos_apocontrol stopWait -Then confirm the sos processes are not running. - - -* Reprocess a Nights Worth of Spectro * - -$ sos_aporedo -w -g -m 00000 (Where 00000 is the MJD to reprocess) -The output files are stored in ~/sos/redo. cat ~/sos/redo/redo-b1.out for the output of the reprocessing of the b1 camera. - - -* Confirm that the ssh-agent Process Used by sos_runnerd is Running * - -$ ps ax | grep ssh-agent -This line should be present: -"ssh-agent -a /home/observer/sos/control/agent.socket" - -If it is not, then stop the sos processes and restart them. - - diff --git a/bin/sos_apoclog b/bin/sos_apoclog deleted file mode 100755 index b71c86619..000000000 --- a/bin/sos_apoclog +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -# -# Dump the current critical logs of all four cameras - -cat /home/eboss/sos/logs/sos_log-??-error | less diff --git a/bin/sos_apocontrol b/bin/sos_apocontrol deleted file mode 100644 index 0ad6dc397..000000000 --- a/bin/sos_apocontrol +++ /dev/null @@ -1,174 +0,0 @@ -#!/usr/bin/env python3 - -import os, sys, subprocess, time -import sos_classes, killAndChildren - -""" -sos_apocontrol: - -sos_apocontrol controls the running of the sos daemon. Everything is hard coded to APO--no -comfort is given as a general purpose configurable control program. - -Written by Gary Kushner (LBL). Oct 2009. - -""" - -#### -## Globals Block. -#### - -#CONTROLDIR = "/tmp/sos/control" -#STARTCMD = "sos_apostart -t -x -s" -#CONTROLDIR = "/home/eboss/sos/control" -CONTROLDIR = "/home/sdss5/boss/sos/control" -STARTCMD = "sos_apostart -g -f" -DIEFILE = os.path.join(CONTROLDIR, sos_classes.Consts().dieFileName) - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print(usageCMD + "\n\nusage: start|allow|stopWait|stop|status|stopKill") - print(""" - start: - delete the die file and run sos_apostart - - allow: - delete the die file but don't start the daemons - - stop: - touch the die file. With the die file, the daemon will not run even if restarted - manually or via cron. - - stopWait: - touch the die file. With the die file, the daemon will not run even if restarted - manually or via cron. stopWait will not return to the shell until all the - processes are stopped. Normally, stopWait will return in less than 5 minutes, - however, if an idl process is active, stopWait can take more time. - - stopKill: - touch the die file. With the die file, the daemon will not run even if restarted - manually or via cron. stopKill will then kill all the processes by sending them - a SIGINT, sleeping, and then sending any stragglers a SIGKILL. It is best to try - stopWait first. - - status: - use ps to display running sos_runnerd processes - - preferred sequence upon failure of one or more runnerd processes: - sos_apocontrol status --- if processes not running then - sos_apocontrol stopWait - sos_apocontrol status --- check that zero processes are running - sos_apocontrol start - - """) - sys.exit(1) - - -#### -def start(): - if os.path.isfile(DIEFILE): - os.unlink(DIEFILE) - rc = os.system(STARTCMD) - if rc != 0: - print("sos_apostart failed: " + str(rc), file=sys.stderr) - time.sleep(5) - print(" ") - print("Running status now. There should be 2 processes running.") - status() - -#### -def allow(): - if os.path.isfile(DIEFILE): - os.unlink(DIEFILE) - print("die file removed -- sos_runnerd allowed to run.") - - -#### -def stop(): - open(DIEFILE, 'w').close() - print("die file created -- processes should stop. If an idl command is") - print("executing, it will be allowed to finish before the process stops.") - - -#### -def stopWait(): - open(DIEFILE, 'w').close() - print("die file created -- processes should stop. If an idl command is") - print("executing, it will be allowed to finish before the process stops.") - print("Waiting . . .", end=' ') - while True: - sys.stdout.flush() - rc = subprocess.getstatusoutput("ps ax | grep runnerd | grep -v grep | grep -Eo sos_runnerd.*$ | sed G") - if len(rc[1]) == 0: - break - time.sleep(5) - print(".", end=' ') - - -#### -def stopKill(): - open(DIEFILE, 'w').close() - print("die file created -- processes should stop. Pausing one minute to check...") - time.sleep(70) - - rc = subprocess.getstatusoutput("ps ax -o pid,args | grep runnerd | grep -v grep | grep -Eo ^.*python | grep -Eo [0-9]+") - if len(rc[1]) != 0: - print("Killing sos and associated idl processes...") - sys.stdout.flush() - pids = rc[1].split("\n") - for pid in pids: - killAndChildren.kill(int(pid)) - - rc = subprocess.getstatusoutput("ps ax -o pid,args | grep runnerd | grep -v grep | grep -Eo ^.*python | grep -Eo [0-9]+") - if len(rc[1]) != 0: - print("** Could not kill processes **") - else: - print("No processes running.") - sys.stdout.flush() - -#### -def status(): - ps_sos_daemons = "ps ax | grep runnerd | grep -v grep | grep -v 'svn commit' | grep -Eo sos_runnerd.*$ | sed G" - rc = subprocess.getstatusoutput(ps_sos_daemons) - if len(rc[1]) == 0: - print("No processes running!") - return - print(str(rc[1].count("sos_runnerd")) + " processes running:\n") - os.system(ps_sos_daemons) - - - -#### -def main(argv): - """control the apo sos daemon""" - - if len(argv) != 1: - usage() - cmd = argv[0] - - if cmd == "start": - start() - elif cmd == "allow": - allow() - elif cmd == "stop": - stop() - elif cmd == "stopWait": - stopWait() - elif cmd == "stopKill": - stopKill() - elif cmd == "status": - status() - else: - usage() - -### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) - print(os.path.basename(sys.argv[0]) + " finished running!") - - diff --git a/bin/sos_aporedo b/bin/sos_aporedo deleted file mode 100644 index 32bd4f3fa..000000000 --- a/bin/sos_aporedo +++ /dev/null @@ -1,262 +0,0 @@ -#!/usr/bin/env bash -# -# Redo the SOS command on the given MJD - -### -### Functions -### - -function usage -{ - local execName=$(basename $0) - ( - echo "usage: $execName -g [-m] [-z] [-t|-r|-h] [-X] [-A] [-w] [-d] [-f] [-n]" - echo - echo " -m Specify string to use as current MJD." - echo " -z Specify string to use as exposure number" - echo " -t Start in test mode using directories in /tmp." - echo " -h Start in test mode in UTHA" - echo " Until fixed, test mode still updates plateDb so it should be avoided!" - echo " -r Start in redo mode where the output files go to a special redo" - echo " directory hierarchy." - echo " -w Wait until redo commands complete (default now)" - echo " -d Dry run." - echo " -f FPS mode (default false)" - echo " -n No_cal mode (uses any calibration from the night)" - echo " " - echo " -g go. Go must be specified. This is to prevent accidentally running $execName." - ) >&2 - exit 1 -} - -function screamAndDie -{ - echo "Failed: $*" - - echo "Goodbye!" - exit 1 -} - -function printAndRun -{ - echo "$*" - - if "$dryMode"; then - return - fi - - # Silently do nothing - if test "_$*" = "_"; then - return - fi - - eval "$@" - if test $? -ne 0; then - screamAndDie "failed running $*" - fi -} - - -# Make the commands to execute -# Arg $1 - the camera name -# Arg $2 - extra commands to sos_redurunner -# -# Uses all the directory variables and svnMode and testMode and setMJD -# and setExposure -# -# echos the command so use $(makeCommand b1) -function makeCommand -{ -# echo "sos_redorunner $2 $svnMode $setMJD $setExposure -n -i $1 -g \"sdR-$1-*.fit*\" -c \"sos_apocommand -f '%%f' -i '%%pf' -p '%%p' -l '%%pp' -s '$SOSDIR' -m '%%m'\" -d $pause -o $CONTROLDIR -r $RAWDIR -p $PLUGDIR -n $platedb -v -v -v -v -v -v" - echo "sos_redorunner $2 $svnMode $setMJD $setExposure -n -i $1 -g \"sdR-$1-*.fit*\" -c \"sos_filesequencer -f '%%f' -i '%%pf' -p '%%p' -l '%%pp' -s '$SOSDIR' -m '%%m' -e '%%ef' -a '%%en'\" -d $pause -o $CONTROLDIR -r $RAWDIR -s $FPSmod -p $PLUGDIR -n $platedb -a $nocal -v -v -v -v -v -v" -} - -# Insure that this shell can access svn -# -# Uses PLUGDIR -function doSVNCheck -{ - echo "Checking SVN Access. If you get asked for a password, type ^C to abort the script." - printAndRun "svn log "$PLUGDIR" >/dev/null" -} - -# Start or connect to ssh-agent -# -# Uses CONTROLDIR, sets SSH_AUTH_SOCK -function sshagent -{ - startAgent=true - - socket=$CONTROLDIR/agent.socket - info=$CONTROLDIR/agent.info - - # We're going to end up with this in the end anyway, and it is handy - # to do it here even though it isn't true yet. - export SSH_AUTH_SOCK=$socket - - # See if there is an existing agent we can connect to, if not start it up and add key! - echo "Checking for agent file $info" - if [ -e $info ]; then - echo "Found agent file" - agentpid=$(grep PID $info | perl -pe "s{^.*PID=([0-9]+);.*$}{\1}") - if ! test -z "$agentpid"; then - echo "Checking agent pid $agentpid" - kill -0 $agentpid &>/dev/null - if test $? -eq 0; then - echo "Agent still running. Will use existing agent." - startAgent=false - else - echo "Agent has stopped running" - fi - else - echo "Can't parse agent file" - fi - else - echo "Could not find agent file" - fi - - if "$startAgent"; then - echo "Starting new agent." - printAndRun "ssh-agent -a $socket" ">$info" - echo "About to add the private key sos uses, please enter the password" - printAndRun ssh-add ~/.ssh/id_dsa-sos - fi -} - - -### -### Parse Options -### - -testMode=false -testUTHAMode=false -svnMode="-x" -svnCheck=false -agentCheck=false -dryMode=false -redoMode=false -setMJD="" -setExposure="" -pause=60 -doWait=true -go=false -FPSmod="T" -nocal="F" - -while getopts "wthrdfm:z:ng" argname; do - case $argname in - w) doWait=true ;; -# X) svnMode=""; svnCheck=true ;; -# A) agentCheck=true ;; - t) testMode=true; pause=20 ;; - h) testUTHAMode=true; pause=20 ;; - r) redoMode=true ;; - d) dryMode=true ;; - m) setMJD="-m $OPTARG" ;; - z) setExposure="-z $OPTARG" ;; - g) go=true ;; - f) FPSmod="T" ;; - n) nocal="T" ;; - *) usage - esac -done -shift $((OPTIND-1)) - -### Good to go? -if ! "$go"; then - usage -fi - -### -### Setup Directories -### - -if "$redoMode"; then - SOSDIR=/data/boss/sosredo - #CONTROLDIR=/home/eboss/sos/control - CONTROLDIR=/home/sdss5/boss/sos/control - RAWDIR=/data/spectro - #PLUGDIR=/home/eboss/software/svn.sdss.org/data/sdss/speclog/trunk - PLUGDIR=/home/sdss5/software/sdsscore/main - #PLUGDIR=/home/sdss5/boss/speclog/trunk -# LOGDIR=/home/eboss/sos/logs -elif "$testMode"; then - SOSDIR=/tmp/sos/out - CONTROLDIR=/tmp/sos/control - RAWDIR=/tmp/sos/spectro - PLUGDIR=/tmp/sos/plugdir -# LOGDIR=/tmp/sos/logs - - if ! "$dryMode"; then - if [ ! -d ${SOSDIR} ]; then mkdir -p ${SOSDIR}; fi - if [ ! -d ${CONTROLDIR} ]; then mkdir -p ${CONTROLDIR}; fi - if [ ! -d ${RAWDIR} ]; then mkdir -p ${RAWDIR}; fi - if [ ! -d ${PLUGDIR} ]; then mkdir -p ${PLUGDIR}; fi -# if [ ! -d ${LOGDIR} ]; then mkdir -p ${LOGDIR}; fi - fi -elif "$testUTHAMode"; then - SOSDIR=$SPECTROLOG_DIR - CONTROLDIR=$SPECTROLOG_DIR/control - RAWDIR=$BOSS_SPECTRO_DATA - PLUGDIR=$SPECLOG_DIR -#/tmp/sos/plugdir -# LOGDIR=/tmp/sos/logs - - if ! "$dryMode"; then - if [ ! -d ${SOSDIR} ]; then mkdir -p ${SOSDIR}; fi - if [ ! -d ${CONTROLDIR} ]; then mkdir -p ${CONTROLDIR}; fi -# if [ ! -d ${RAWDIR} ]; then mkdir -p ${RAWDIR}; fi -# if [ ! -d ${PLUGDIR} ]; then mkdir -p ${PLUGDIR}; fi -# if [ ! -d ${LOGDIR} ]; then mkdir -p ${LOGDIR}; fi - fi -else - # SOSDIR=/data/boss/sos - SOSDIR=/data/boss/sos - #CONTROLDIR=/home/eboss/sos/control - CONTROLDIR=/home/sdss5/boss/sos/control - RAWDIR=/data/spectro - #PLUGDIR=/home/eboss/software/svn.sdss.org/data/sdss/speclog/trunk - PLUGDIR=/home/sdss5/software/sdsscore/main - #PLUGDIR=/home/sdss5/boss/speclog/trunk -# LOGDIR=/home/eboss/sos/logs -fi -echo "SOS output directory is $SOSDIR" - -### Setup python options -export PYTHONUNBUFFERED=1 -# -# -### Run the redo -# -echo " " -# -# -if [[ $OBSERVATORY == "APO" ]]; -then - printAndRun $(makeCommand b1 -k) "&>redo-b1.out" "&" - # - # - printAndRun $(makeCommand r1) "&>redo-r1.out" "&" -elif [[ $OBSERVATORY == "LCO" ]]; -then - printAndRun $(makeCommand b2) "&>redo-b2.out" "&" - # - # - printAndRun $(makeCommand r2) "&>redo-r2.out" "&" -fi -### Wait if asked -if "$doWait"; then - echo " " - echo "ONLY THE Blue CAMERA'S OUTPUT IS SENT TO THE CONSOLE. LOOK AT THE .OUT FILES FOR" - echo "THE OTHER CAMERAS" - echo " " - sleep 5 - if [[ $OBSERVATORY == "APO" ]]; then - tail -f -n 9999 --pid=$! redo-b1.out - elif [[ $OBSERVATORY == "LCO" ]]; - then - tail -f -n 9999 --pid=$! redo-b2.out - fi -# echo "Waiting for jobs to complete!" - wait # in case all the jobs aren't finished -fi diff --git a/bin/sos_aporedomakecmd b/bin/sos_aporedomakecmd deleted file mode 100755 index 29ccfaf05..000000000 --- a/bin/sos_aporedomakecmd +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env python3 - -import sys, os, re - -""" -sos_apomakeredocmd - -print bash a script file that will run redo for a given range of mjds. - -The output script will link the current log to ../redo-b1.out. This allows another -window to "tail -F redo-b1.out" to follow the whole process. - -Written by Gary Kushner (LBL). Mar 2010. - -""" - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print("usage:", file=sys.stderr) - print("\t%s MJD_start MJD_end" % usageCMD, file=sys.stderr) - print(" ", file=sys.stderr) - print("will output the script file to stdout", file=sys.stderr) - - sys.exit(1) - -#### - - -#### -def main(argv): - """Parse arguments and generate a script file""" - - # Check params - if len(argv) != 2: - usage() - - if re.match("^5[56]\d\d\d$", argv[0]) == None: - print(argv[0] + " is not a valid mjd [55000, 56999].", file=sys.stderr) - print(" ", file=sys.stderr) - usage() - - if re.match("^5[56]\d\d\d$", argv[1]) == None: - print(argv[1] + " is not a valid mjd [55000, 56999].", file=sys.stderr) - print(" ", file=sys.stderr) - usage() - - - # Make it bash and echo commands to make debugging easier -# print "#!/bin/bash -x" - print("#!/usr/bin/env bash") - print("set -o verbose") - - for mjd in range(int(argv[0]), int(argv[1]) + 1): - print("mkdir -p redo-out-" + str(mjd)) - print("ln -s -f redo-out-" + str(mjd) + "/redo-b1.out redo-b1.out ") - print("cd redo-out-" + str(mjd)) - print("sos_aporedo -g -w -m " + str(mjd)) - print("cd ..") - -if __name__=='__main__': - main(sys.argv[1:]) - - - diff --git a/bin/sos_apospammer b/bin/sos_apospammer deleted file mode 100755 index f67da5bbb..000000000 --- a/bin/sos_apospammer +++ /dev/null @@ -1,25 +0,0 @@ -#!/usr/bin/env bash -# -# This is a highly technical and subtle script. Edit at your own risk! -# -# Generally this should be run via the crontab line: -# 0 12 * * * /abs/path/to/file/sos_apospammer -# -# Written by Gary Kushner (LBL). Jan 2010. - -#- If there is any message other than just "Log Rolled", send an email -if [ "`cat /home/eboss/sos/logs/sos_log-b1-error`" != "Log Rolled" ] ; then - mail StephenBailey@lbl.gov,jonathan.richards@utah.edu -s "SOS Critical Error Log" < /home/eboss/sos/logs/sos_log-b1-error -fi - -# -### The python logger doesn't roll over the log unless it writes to it. So unless -### there is a critical error, the same log will be sent over and over. This is a -### hack to roll them manually to the email makes more sense -# - -cp /home/eboss/sos/logs/sos_log-b1-error-2 /home/eboss/sos/logs/sos_log-b1-error-3 -cp /home/eboss/sos/logs/sos_log-b1-error-1 /home/eboss/sos/logs/sos_log-b1-error-2 -cp /home/eboss/sos/logs/sos_log-b1-error /home/eboss/sos/logs/sos_log-b1-error-1 - -cat >/home/eboss/sos/logs/sos_log-b1-error <<< "Log Rolled" diff --git a/bin/sos_apostart b/bin/sos_apostart deleted file mode 100644 index 8bf50542c..000000000 --- a/bin/sos_apostart +++ /dev/null @@ -1,266 +0,0 @@ -#!/usr/bin/env bash -# -# Startup SOS daemon at APO with options -# -# Written by Gary Kushner (LBL). Oct 2009. - -### -### Functions -### - -function usage -{ - local execName=$(basename $0) - ( - echo "usage: $execName -e -t" - echo - echo " -e Redo latest or given MJD. Good for use in a crash or if starting after observing starts." - echo " -m Specify string to use as current MJD. Useful only with -e." - echo " -t Start in test mode using directories in /tmp." - echo " -x No svn processing" - echo " -a No agent processing" - echo " -s Don't do eups setups (--eups setup is currently disabled!--)" - echo " -d Dry run." - echo " -f FPS mode (default false)" - echo " " - echo " -g go. Go must be specified. This is to prevent accidentally running $execName." - echo " " - echo "Normally don't call $execName directly, but use sos_apocontrol." - ) >&2 - exit 1 -} - -function screamAndDie -{ - echo "Failed: $*" - - echo "Goodbye!" - exit 1 -} - -function printAndRun -{ - echo "$*" - - if "$dryMode"; then - return - fi - - # Silently do nothing - if test "_$*" = "_"; then - return - fi - - eval "$@" - if test $? -ne 0; then - screamAndDie "failed running $*" - fi -} - - -# Make the commands to execute -# Arg $1 - the camera name -# Arg $2 - extra commands to sos_runnerd -# -# Uses all the directory variables and redoMode and svnMode and testMode and setMJD -# -# echos the command so use $(makeCommand b1) -function makeCommand -{ - if ! "$testMode"; then - platedb="-b" - fi -# echo "sos_runnerd $2 $redoMode $svnMode $setMJD -i $1 -g \"sdR-$1-*.fit\" -c \"idl -e \\\"aporeduce, '%%f', indir='%%pf', plugfile='%%p', outdir='$SOSDIR/%%m', copydir='$SOSDIR/combined', plugdir='%%pp'\\\"\" -d $pause -o $CONTROLDIR -r $RAWDIR -p $PLUGDIR -l ${LOGDIR} -n $platedb -v -v -v -v -v -v" -# echo "sos_runnerd $2 $redoMode $svnMode $setMJD -i $1 -g \"sdR-$1-*.fit*\" -d $pause -o $CONTROLDIR -r $RAWDIR -p $PLUGDIR -l ${LOGDIR} $platedb -v -v -v -v -v -v -c \"sos_apocommand -f '%%f' -i '%%pf' -p '%%p' -l '%%pp' -s '$SOSDIR' -m '%%m'\"" - echo "sos_runnerd $2 $redoMode $svnMode $setMJD -i $1 -g \"sdR-$1-*.fit\" -g \"sdR-$1-*.fit.gz\" -d $pause -o $CONTROLDIR -r $RAWDIR -s $FPSmod -a $nocalmode -p $PLUGDIR -l ${LOGDIR} $platedb -v -v -v -v -v -v -c \"sos_filesequencer -f '%%f' -i '%%pf' -p '%%p' -l '%%pp' -s '$SOSDIR' -m '%%m' -e '%%ef' -a '%%en'\"" - -} - -# Insure that this shell can access svn -# -# Uses PLUGDIR -function doSVNCheck -{ - echo " " - echo "Checking SVN access..." - echo " " - echo "If you get asked for a password, type ^C to abort the script!" - echo " " - echo "This is a final check to avoid authentication problems which will trigger" - echo "LBL to block sos3 from accessing svn. DO NOT try to type in the password." - echo "This is a test which must succeed without the need to type in a password." - echo "Only type ^C to abort the script." - echo " " - printAndRun "svn log "$PLUGDIR" >/dev/null" -} - -# Start or connect to ssh-agent -# -# Uses CONTROLDIR, sets SSH_AUTH_SOCK -function sshagent -{ - startAgent=true - - socket=$CONTROLDIR/agent.socket - info=$CONTROLDIR/agent.info - - # We're going to end up with this in the end anyway, and it is handy - # to do it here even though it isn't true yet. - export SSH_AUTH_SOCK=$socket - - # See if there is an existing agent we can connect to, if not start it up and add key! - echo "Checking for agent file $info" - if [ -e $info ]; then - echo "Found agent file" - agentpid=$(grep PID $info | perl -pe "s{^.*PID=([0-9]+);.*$}{\1}") - if ! test -z "$agentpid"; then - echo "Checking agent pid $agentpid" - kill -0 $agentpid &>/dev/null - if test $? -eq 0; then - echo "Agent still running. Will use existing agent." - startAgent=false - else - echo "Agent has stopped running" - fi - else - echo "Can't parse agent file" - fi - else - echo "Could not find agent file" - fi - - if "$startAgent"; then - echo "Starting new agent." - rm $socket &>/dev/null - rm $info &>/dev/null - printAndRun "ssh-agent -a $socket" ">$info" - echo " " - echo "Adding the ssh key that SOS uses for svn access." - echo "Enter the original SDSS collaboration password (hint: how many CCDs?)." - echo " " - printAndRun ssh-add ~/.ssh/id_dsa-sos - fi -} - - -### -### Parse Options -### - - -testMode=false -redoMode="" -svnMode="" -svnCheck=false -agentCheck=false -dryMode=false -skipSetups=false -pause=30 -setMJD="" -go=false -FPSmod="T" -nocalmode="T" - -while getopts "aetxdsm:n:gf" argname; do - case $argname in - e) redoMode="-e" ;; - x) svnMode="-x"; svnCheck=false ;; - a) agentCheck=false ;; - t) testMode=true; pause=20 ;; - d) dryMode=true ;; - s) skipSetups=true ;; - m) setMJD="-m $OPTARG" ;; - g) go=true ;; - f) FPSmod="T" ;; - n) nocalmode="T" ;; - *) usage - esac -done -shift $((OPTIND-1)) - -### Good to go? -if ! "$go"; then - usage -fi - -### -### Setup Directories -### - -if ! "$testMode"; then - SOSDIR=/data/boss/sos - #CONTROLDIR=/home/eboss/sos/control - CONTROLDIR=/home/sdss5/boss/sos/control - RAWDIR=/data/spectro - #PLUGDIR=/home/eboss/software/svn.sdss.org/data/sdss/speclog/trunk - PLUGDIR=/home/sdss5/software/sdsscore/main - #PLUGDIR=/home/sdss5/boss/speclog/trunk - #LOGDIR=/home/eboss/sos/logs - LOGDIR=/home/sdss5/boss/sos/logs -else - SOSDIR=/tmp/sos/out - CONTROLDIR=/tmp/sos/control - RAWDIR=/tmp/sos/spectro - PLUGDIR=/tmp/sos/plugdir - LOGDIR=/tmp/sos/logs - - if ! "$dryMode"; then - if [ ! -d ${SOSDIR} ]; then mkdir -p ${SOSDIR}; fi - if [ ! -d ${CONTROLDIR} ]; then mkdir -p ${CONTROLDIR}; fi - if [ ! -d ${RAWDIR} ]; then mkdir -p ${RAWDIR}; fi - if [ ! -d ${PLUGDIR} ]; then mkdir -p ${PLUGDIR}; fi - if [ ! -d ${LOGDIR} ]; then mkdir -p ${LOGDIR}; fi - fi -fi - -### Setup eups products -# -######### -#if ! "$skipSetups"; then -# printAndRun "setup idlspec2d" -# printAndRun "setup platedb" -#fi -######## -# -# -### Setup python options -export PYTHONUNBUFFERED=1 -# -# -### Connect to or startup agent -if "$agentCheck"; then - sshagent - echo SSH_AUTH_SOCK=$SSH_AUTH_SOCK - if test -z "$SSH_AUTH_SOCK"; then screamAndDie "Did not correctly setup ssh-agent"; fi -fi -# -# -### Confirm SVN access -if "$svnCheck"; then - doSVNCheck -fi -# -# -# Run from Control directory -cd ${CONTROLDIR} -# -# -if [[ $OBSERVATORY == "APO" ]]; -then - printAndRun $(makeCommand b1 -k) "2>&1 >> ${LOGDIR}/b1.out" "&" - if ! "$dryMode"; then disown -h $!; fi - # - # - sleep 15 - printAndRun $(makeCommand r1) "2>&1 >> ${LOGDIR}/r1.out" "&" - if ! "$dryMode"; then disown -h $!; fi -elif [[ $OBSERVATORY == "LCO" ]]; -then - printAndRun $(makeCommand b2) "2>&1 >>${LOGDIR}/b2.out" "&" - if ! "$dryMode"; then disown -h $!; fi - # - # - sleep 15 - printAndRun $(makeCommand r2) "2>&1 >> ${LOGDIR}/r2.out" "&" - if ! "$dryMode"; then disown -h $!; fi -fi diff --git a/bin/sos_batchd b/bin/sos_batchd deleted file mode 100755 index f46d2bb66..000000000 --- a/bin/sos_batchd +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/env python3 - -import os, sys, time, subprocess -import logging, logging.handlers, getopt -import fb_classes - -""" -sos_batchd (femto batch): - -sos_batchd reads jobs from a process queue and executes them. You can run as many instances of sos_batchd -as you'd like, for example, one per cpu. - -Notes to run: - In order to run, the environment must be setup: - -Written by Gary Kushner (LBL). Oct 2009. - -""" - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print(""" -Parameters and fb_config.ini names are: - -nice (-n) : false : run commands via nice -pollDelay (-d) : default 60 seconds : Seconds to wait before interrogating directing -logDir (-l) : default . : Place to place log files -logLevel (-v) : default 30 : 30 = WARNING; -v = 20 = INFO; -v -v = 10 = DEBUG -controlDir (-o) : default . : Place to find config file and place process lists -name (-i) : default "" : Name sent to logger to identify instance # or something - """) - - sys.exit(1) - - -#### -def screamAndDie(msg): - """Log a message and then exit""" - - log = logging.getLogger(sos_classes.Consts().logName) - log.critical(msg) - log.critical("GOODBYE!") - sys.exit(1) - - -#### -def parseConfigFile(cfg): - """Parse the config file""" - - -#### -def parseCmdLine(cfg): - """Parse command line arguments""" - - verbose = 0 - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(sys.argv[1:], "d:l:vo:i:n") - except: - usage() - - if len(pargs) != 0: - usage() - - # Fill in the config - for (opt, value) in opts: - if opt == "-d": - cfg.pollDelay= int(value) - if opt == "-l": - cfg.logDir = value - if opt == "-v": - verbose += 1 - if opt == "-o": - cfg.controlDir = value - if opt == "-i": - cfg.name = value - if opt == "-n": - cfg.nice = True - - # Don't want to apply -v on each call, so always start with a base - if (verbose > 0): - cfg.logLevel = max(1, fb_classes.Config().logLevel - verbose * 10) - - # Display config values on any verbosity - if (verbose > 1): - print("Config values: \n" + str(cfg)) - - -#### -def initializeParms(): - """Initialize all the parameters.""" - cfg = fb_classes.Config(); - - # Parse command line to get config.ini information - parseCmdLine(cfg) - # Parse config.ini to get new defaults - parseConfigFile(cfg) - # Parse command line again to give command line precedence - parseCmdLine(cfg) - - return cfg - - -#### -def initializeLogger(cfg): - """Startup logging and set the level""" - - lname = os.path.join(cfg.logDir, fb_classes.Consts().logName) - print("Starting to log to " + lname) - - log = logging.getLogger(fb_classes.Consts().logName) - h = logging.handlers.RotatingFileHandler(lname, maxBytes=1024*1024, backupCount=3) - f = logging.Formatter("%(asctime)s-%(levelname)s: %(message)s") - h.setFormatter(f) - h.setLevel(cfg.logLevel) - log.setLevel(cfg.logLevel) - log.addHandler(h) - - log.critical("Hello from " + cfg.name + ". " + sys.argv[0] + " started.") - log.critical(cfg.name + ": Startup Configuration is: \n\n" + str(cfg) + "\n\n") - - return log - - -#### -def watch(cfg, log): - """ Watch for new process commands. When when comes in, execute it. """ - - plist = fb_classes.ProcessList(os.path.join(cfg.controlDir, fb_classes.Consts().processListName)) - - while True: - pause = True - - # Check for new commands - cmd = plist.pop() - if cmd != None: - pause = False - if cfg.nice: - cmd = "nice " + cmd - log.info(cfg.name + " executing: " + cmd) - rc = subprocess.getstatusoutput(cmd) - log.info(cfg.name + " -> rc = " + str(rc[0])) - log.debug(cfg.name + " -> output:\n" + rc[1]) - - # Pause if asked - if pause: - log.debug(cfg.name + " sleeping for " + str(cfg.pollDelay) + " seconds.") - time.sleep(cfg.pollDelay) - - -#### -def main(): - """The program""" - - config = fb_classes.Config(); - logger = None - - # A cry for help? - if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "-?"): - usage() - sys.exit(100) - - # Initialize - config = initializeParms() - logger = initializeLogger(config) - - # Watch for new commands. Forever... - watch(config, logger) - - - -### Start of script - -if __name__=='__main__': - main() - - diff --git a/bin/sos_classes.py b/bin/sos_classes.py deleted file mode 100644 index 75775e5f7..000000000 --- a/bin/sos_classes.py +++ /dev/null @@ -1,106 +0,0 @@ -#!/usr/bin/env python - -import os, sys - -""" Miscellaneous classes for sos programs """ - -#### -class Consts: - """Holds various constants use by the sos programs""" - - def __init__(self): - self.lockFileBase = "sos_runner" - self.dieFileName = "sos_die.die.die" - self.logName = "sos_log" - self.configName = "sos_config.conf" - self.MJDGlob = "[0-9]"*5 - self.versionFile = "sos_version" - - def __repr__(self): - return self.__str__() - - def __str__(self): - return ("Consts:\n" + - "lockFile: " + self.lockFileBase + "\n" + - "dieFile: " + self.dieFileName + "\n" + - "logName: " + self.logName + "\n" + - "configName: " + self.configName + "\n" + - "versionFile: " + self.versionFile + "\n" + - "MJDGlob: " + self.MJDGlob); - - - -#### -class Config: - """Holds the configuration information read from the command line or ini""" - - def __init__(self): - self.MJD = "0" - self.fps = "T" - self.exposure = None - self.fitsDir = "." - self.plugDir = "." - self.controlDir = "." - self.logDir = "." - self.logLevel = 40 - self.iname = "" - self.globs = ["*"] - self.command = "" - self.pollDelay = 30 - self.nosvn = False - self.bookkeep = False - self.nice = False - self.platedb = False - self.redo = False - self.nocal = "T" - self.nodb = "F" - self.no_reject = "F" - self.clobber_fibermap = False - self.sdssv_sn2 = "F" - def __repr__(self): - return self.__str__() - - def __str__(self): - return ("Config:\n" + - "MJD: " + self.MJD + "\n" + - "FPSMode: " + self.fps + "\n" + - "Exposure " + str(self.exposure) + "\n" + - "fitsDir: " + self.fitsDir + "\n" + - "plugDir: " + self.plugDir + "\n" + - "controlDir: " + self.controlDir + "\n" + - "logDir: " + self.logDir + "\n" + - "logLevel: " + str(self.logLevel) + "\n" + - "iname: " + self.iname + "\n" + - "glob: " + str(self.globs) + "\n" + - "command: " + self.command + "\n" + - "pollDelay: " + str(self.pollDelay) + "\n" + - "nice: " + str(self.nice) + "\n" + - "plateDb: " + str(self.platedb) + "\n" + - "redo: " + str(self.redo) + "\n" + - "bookkeep: " + str(self.bookkeep) + "\n" + - "NoSvn: " + str(self.nosvn) + "\n" + - "noDB: " + str(self.nodb) + "\n" + - "no_reject: " + str(self.no_reject) + "\n" + - "clobber_fibermap: " + str(self.clobber_fibermap)+ "\n" + - "sdssv_sn2: " + str(self.sdssv_sn2)); - - -#### -class PollWorker: - """Holds information for each poller""" - - def __init__(self): - self.workerNumber = 0 - self.glob = "*" - self.fileCount = 0 - - - def __repr__(self): - return self.__str__() - - def __str__(self): - return ("PollWorker:\n" + - "workerNumber: " + str(self.workerNumber) + "\n" + - "glob: " + self.glob + "\n" + - "fileCount: " + str(self.fileCount)); - diff --git a/bin/sos_classes.pyc b/bin/sos_classes.pyc deleted file mode 100644 index e6422df5c..000000000 Binary files a/bin/sos_classes.pyc and /dev/null differ diff --git a/bin/sos_apocommand b/bin/sos_command similarity index 67% rename from bin/sos_apocommand rename to bin/sos_command index bc1802297..86a1a095e 100755 --- a/bin/sos_apocommand +++ b/bin/sos_command @@ -5,7 +5,7 @@ # # Check to make sure the file is a BOSS exposure. Return if not. [STEP SKIPPED] # Check to make sure the file is no a test expose. Return if it is. -# Call IDL aporeduce +# Call IDL sosreduce # Check if exposure is a science exposure. Return if not. # Call script to get S/N # Call script to update plateDb @@ -45,7 +45,7 @@ function screamAndDie { echo "Failed: $*" - echo "Goodbye from sos_apocommand!" + echo "Goodbye from sos_command!" exit 0 } @@ -53,7 +53,7 @@ function die { echo $* - echo "Goodbye from sos_apocommand." + echo "Goodbye from sos_command." exit 0 } @@ -77,55 +77,51 @@ function printAndRun } -# Make the IDL aporeduce command to execute +# Make the IDL sosreduce command to execute # # Uses: fitsName, inDir, plugName, plugDir, MJD, SOSDir # # echos the command so use $(makeCommand b1) function makeSOSCommand { - if "$fpsMode"; then - if "$nocalMode"; then - echo "idl -e \"aporeduce, '$fitsName', $noreject $sdssv_sn2 /fps, /nocal, indir='$inDir', plugfile='$plugName', outdir='$SOSDir/$MJD', copydir='$SOSDir/combined', plugdir='$plugDir'\"" - else - echo "idl -e \"aporeduce, '$fitsName', $noreject $sdssv_sn2 /fps, indir='$inDir', plugfile='$plugName', outdir='$SOSDir/$MJD', copydir='$SOSDir/combined', plugdir='$plugDir'\"" - fi - else - echo "idl -e \"aporeduce, '$fitsName', $noreject $sdssv_sn2 indir='$inDir', plugfile='$plugName', outdir='$SOSDir/$MJD', copydir='$SOSDir/combined', plugdir='$plugDir'\"" - fi + echo "idl -e \"sosreduce, '$fitsName', $noreject $sdssv_sn2 $sn2_15 $fpsMode $nocalMode $arc2trace $nolock $diskcheck $forcea2t indir='$inDir', plugfile='$plugName', outdir='$SOSDir/$MJD', copydir='$SOSDir/combined', plugdir='$plugDir'\"" } -# Turn a fits science frame name into an aporeduce output file name. For example +# Turn a fits science frame name into an sosreduce output file name. For example # sdR-b1-00104994.fit -> sci-3587-b1-00104994.fits # In order to do this, it must read the fits science frame to get the plugid. # # Input : $1 - fits file name # -# Output : echo : aporeduce science output name +# Output : echo : sosreduce science output name function getSOSSciName { fname=$(basename $1) confID=$(sxpar.py $1 CONFID) -# confID=$(printf %06.0f $confID) if (( 1000000 > $confID)); then confID=$(printf %06.0f $confID) fi fieldid=$(sxpar.py $1 FIELDID) - #plateId=$(sxpar.py $1 PLATEID) camera=${fname: 4:2} exposure=${fname: 7:8} echo sci-$confID-$camera-$exposure.fits } +function getCamera +{ + fname=$(basename $1) + camera=${fname: 4:2} + echo $camera +} ### ### Parse Options ### dryMode=false -fpsMode=false -nocalMode=true +fpsMode="" +nocalMode="" fitsName="" inDir="" plugName="" @@ -135,7 +131,14 @@ SOSDir="" nodb=false noreject="" sdssv_sn2="" -while getopts "f:i:p:l:s:m:adenrv" argname; do +sn2_15="" +arc2trace="" +a2t=false +forcea2t="" +diskcheck="" +pause='0' +nolock="" +while getopts "f:i:p:l:s:m:adenrbvtoj:cuh" argname; do case $argname in f) fitsName=$OPTARG ;; i) inDir=$OPTARG ;; @@ -144,11 +147,25 @@ while getopts "f:i:p:l:s:m:adenrv" argname; do s) SOSDir=$OPTARG ;; m) MJD=$OPTARG ;; d) dryMode=true ;; - e) fpsMode=true ;; - a) nocalMode=true ;; + e) fpsMode=" /fps, " ;; + a) nocalMode=" /nocal, " ;; n) nodb=true ;; r) noreject=" /noreject," ;; v) sdssv_sn2=" /sdssv_sn2, " ;; + b) sn2_15=" /sn2_15, " ;; + t) + arc2trace=" /arc2trace, " + a2t=true + ;; + o) + arc2trace=" /arc2trace, " + a2t=true + forcea2t=" /forcea2t, " + ;; + c) diskcheck=" /no_diskcheck, " ;; + j) pause=$OPTARG ;; + u) nolock=" /no_lock, " ;; + h) usage ;; *) usage esac done @@ -168,27 +185,28 @@ fi ### Here is the SOS Command ! ### -# If this isn't a boss file, we're done -#if [ "$(filecheck.py boss $plugDir/$plugName)" == "false" ]; then -# die "$plugDir/$plugName is not a boss plugmap file." -#fi - # If this is not an excellend file, we're done -if [ "$(filecheck.py excellent $inDir/$fitsName)" == "false" ]; then +if [ "$(filecheck excellent $inDir/$fitsName)" == "false" ]; then die "$inDir/$fitsName is not an excellent exposure ($(sxpar.py $inDir/$fitsName quality))." fi echo "$inDir/$fitsName is excellent" -# Call aporeduce -if [[ "$fitsName" == *"r1"* ]] || [[ "$fitsName" == *"r2"* ]]; then - echo "Sleeping for 5s before starting red camera reduction due to IDL License" - sleep 5s +# Call sosreduce +if [[ $pause != '0' ]]; then + echo "Sleeping for $pause sec before starting $fitsName reduction due to IDL License" + sleep $pause fi printAndRun $(makeSOSCommand) # If this isn't a science file, we're done -if [ "$(filecheck.py science $inDir/$fitsName)" == "false" ]; then +if [ "$(filecheck science $inDir/$fitsName)" == "false" ]; then echo "$inDir/$fitsName is not a science frame." + if "$a2t"; then + if [ "$(filecheck arc $inDir/$fitsName)" == "true" ]; then + export BOSS_SPECTRO_REDUX=${SOSDir}/${MJD} + printAndRun boss_arcs_to_traces --mjd ${MJD} --no_hash --obs ${OBSERVATORY~~} --cams $(getCamera $inDir/$fitsName) --vers sos --threads 0 --sosdir ${SOSDir} --fitsname ${fitsName} + fi + fi else echo "$inDir/$fitsName is a science frame" @@ -203,8 +221,8 @@ else # printAndRun loadSN2Value --update --sdssv_sn2 -v ${SOSDir}/${MJD}/$(getSOSSciName $inDir/$fitsName) ${plugDir}/${plugName} #fi fi - printAndRun read_sos.py ${SOSDir} ${MJD} --exp $(getSOSSciName $inDir/$fitsName) + printAndRun read_sos ${SOSDir} ${MJD} --no_hash --exp $(getSOSSciName $inDir/$fitsName) fi if [[ "$fitsName" == *"b1"* ]] || [[ "$fitsName" == *"b2"* ]]; then - printAndRun build_combined_html.py + printAndRun build_combined_html ${SOSDir} fi diff --git a/bin/sos_filesequencer b/bin/sos_filesequencer deleted file mode 100755 index 73fa78bc2..000000000 --- a/bin/sos_filesequencer +++ /dev/null @@ -1,255 +0,0 @@ -#!/usr/bin/env python3 - -import os, sys -import copy, getopt -import putils -from sxpar import sxpar - -""" -sos_filesequencer: - -Originally it was a requirement that the files go into aporeduce in exactly the -order they came from the icc. We now need to pass the files in in a slightly -different order. This file is a *hack* to accomplish that. - -Currently there is one rule: - -1. - -#commented out# a) If arc, was the previous a flat? If yes: processes arc. If no: ignore. -b) If flat, was the previous a arc? If yes: process flat, then process arc. If no: process flat. - -a) & b) check to make sure the arc and flats are from the same plugging - - -Written by Gary Kushner (LBL). May 2010. - -""" - - - -#### -def usage(): - """Display usage and exit""" - - print(""" - usage: sos_filesequencer -f name -i path -p name -l path -s path -m 00000 -e T - - -f Fits file name - -i Fits file directory path - -p Plugmap file name - -l Plugmap file directory path - -s SOS Directory - -m MJD - -e FPS mode (T for true, F for false) - -a no cal mode (T for true, F for false) - """) - sys.exit(1) - - -#### -class Config: - """Config Info""" - - def __init__(self): - self.fitname = "" - self.fitdir = "" - self.plugname = "" - self.plugdir = "" - self.sosdir = "" - self.mjd = "" - self.fps = "T" - self.nocal = "F" - - def __str__(self): - return ("fitname: " + self.fitname + "\n" + - "fitdir: " + self.fitdir + "\n" + - "plugname: " + self.plugname + "\n" + - "plugdir: " + self.plugdir + "\n" + - "sosdir: " + self.sosdir + "\n" + - "mjd: " + self.mjd + "\n" + - "fps: " + self.fps + "\n" + - "nocal: " + self.nocal); - - - -#### -def parseCmdLine(args): - """Parse command line arguments""" - - cfg = Config() - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(args, "f:i:p:l:s:m:e:a:") - except Exception as e: - print("Illegal option specified.") - print(" ") - print(str(e)) - print(" ") - usage() - - if len(pargs) != 0: - print("All arguments should be parameters (start with '-')") - print("found " + str(pargs)) - usage() - - # Fill in the config - for (opt, value) in opts: - if opt == "-f": - cfg.fitname = value - if opt == "-i": - cfg.fitpath = value - if opt == "-p": - cfg.plugname = value - if opt == "-l": - cfg.plugpath = value - if opt == "-s": - cfg.sosdir = value - if opt == "-m": - cfg.mjd = value - if opt == "-e": - cfg.fps = value - if opt == "-a": - cfg.nocal = value - print("Config values: \n" + str(cfg)) - - return cfg - - -#### -def flavor(cfg): - """return the flavor of the fits file""" - return sxpar(os.path.join(cfg.fitpath,cfg.fitname), "flavor")[0].lower() - -#### -def cart(cfg): - """return the cart of the fits file""" - # return int(sxpar(os.path.join(cfg.fitpath,cfg.fitname), "cartid")[0]) - #return sxpar(os.path.join(cfg.fitpath,cfg.fitname), "cartid")[0] #### SSM need to replace when updated traces for FPS-N - return '9' - -#### -def plugging(cfg): - """return the plugging of the fits file""" - return sxpar(os.path.join(cfg.fitpath,cfg.fitname), "CONFID")[0].lower() - -#### -def samePlugging(cfg1, cfg2): - """returns True if the fits files use the same plugging""" - return plugging(cfg1) == plugging(cfg2) - -#### -def fitsExist(cfg): - """Return true if the fits file exists""" - return os.path.exists(os.path.join(cfg.fitpath, cfg.fitname)) - - -#### -def previousExposure(cfg): - """return a config for the previous exposure""" - - # Parse: sdR-b1-00114186.fit.gz - left = cfg.fitname[:9] - right = cfg.fitname[15:] - exp = str(int(cfg.fitname[9:15]) - 1) - - prevcfg = copy.copy(cfg) - prevcfg.fitname = left + exp + right - print("previous cfg:\n" + str(prevcfg)) - - return prevcfg - - -#### -def processFile(cfg, flavor=""): - """call sos_apocommand on the file. Will exit with error code if the command failts.""" - - cmd = "sos_apocommand" - cmd += " -f " + cfg.fitname - cmd += " -i " + cfg.fitpath - cmd += " -p " + cfg.plugname - cmd += " -l " + cfg.plugpath - cmd += " -s " + cfg.sosdir - cmd += " -m " + cfg.mjd - if cfg.fps == "T": - cmd += " -e " - if cfg.nocal == "T": - cmd += " -a " - - prefix = "sos_apocommand(" + flavor + "): " - - print("executing: " + cmd) - rv = putils.runCommand(cmd, echo=True, prefix=prefix) - if rv[0] != 0: - print("\nCommand failed with rc = " + str(rv[0]) + "\n") - sys.exit(1) - - -#### -def rule1(cfg): - """Handle arc/flat ordering""" - prevcfg = previousExposure(cfg) - - print("Exposure Flavor: " + flavor(cfg)) - print("Previous exposure exists: " + str(fitsExist(prevcfg))) - if fitsExist(prevcfg): - print("Previous Flavor: " + flavor(prevcfg)) - print("Same Plugging: " + str(samePlugging(cfg, prevcfg))) - - # Handle flats -- process, and arc if was previous - if flavor(cfg) == "flat": - print("Exposure is a flat") - processFile(cfg, "flat") - #if fitsExist(prevcfg) and samePlugging(cfg, prevcfg) and flavor(prevcfg) == "arc": - if fitsExist(prevcfg) and flavor(prevcfg) == "arc": - print("Processing previous arc") - processFile(prevcfg, "arc") - return True - # Not one of ours - return False - -#### -def rule2(cfg): - """Don't process arc/flat/science from non-BOSS carts""" - - thisflavor = flavor(cfg) - thiscart = cart(cfg) -# if thisflavor in ('arc', 'flat', 'science') and \ -# (thiscart.casefold() == ('FPS-N).casefold() OR \ -# (thiscart.casefold() == ('FPS-S).casefold()) - if thisflavor in ('arc', 'flat', 'science') and thiscart != '9':#10: This need change, this number is for testing only - print("Skipping %s exposure for non-BOSS cart %d file %s" % (thisflavor, thiscart, cfg.fitname)) - return True - else: - return False - -#### -def main(args): - """The program""" - - # Initialize - config = parseCmdLine(args) - - # Rules return true if they processed the file and processing should stop - - # process rules - # Rule2 checks for arc/flat/science on non-BOSS cart; check this - # first so that it doesn't trigger arc/flat pre-exp logic in rule 1 - # which can call processFile before returning. - print("Checking Rule 2") - if rule2(config): - return - - print("Checking Rule 1") - if rule1(config): - return - - print("Passed Rules; let's go!") - processFile(config, flavor(config)) - - -#### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) diff --git a/bin/sos_plot b/bin/sos_plot new file mode 100755 index 000000000..e461ff506 --- /dev/null +++ b/bin/sos_plot @@ -0,0 +1,20 @@ +#!/usr/bin/env python3 +import argparse +from boss_drp.sos import plot +import os + +obs = os.getenv('OBSERVATORY') +ccd = ['b2','r2'] if obs == 'LCO' else ['b1','r1'] +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Plot the Science frame for SOS') + + parser.add_argument('mjd', help='MJD of reduction', type=str) + parser.add_argument('expid', help='Exposure ID to plot', type=str) + parser.add_argument('--ccd', nargs = '+', help=f'CCDs to plot; default={str(ccd)}', default=ccd) + parser.add_argument('--redo', action='store_true', help='If set use sosredo rather then sos reductions') + parser.add_argument('--mask_end', action='store_true', help='Mask end of the spectra during plotting') + parser.add_argument('--outdir', action='store_true', help='Where to save the figure (default: /data/boss/sos/tests/)', default='/data/boss/sos/tests/') + + args = parser.parse_args() + for ccd in args.ccd: + plot(args.mjd, args.expid, ccd, redo=args.redo, outdir = args.outdir, mask_end=args.mask_end) diff --git a/bin/sos_redorunner b/bin/sos_redorunner deleted file mode 100755 index d6da4c65a..000000000 --- a/bin/sos_redorunner +++ /dev/null @@ -1,158 +0,0 @@ -#!/usr/bin/env python3 - -#import os, sys, fcntl, time, commands -#import logging, logging.handlers, getopt, glob, random -#import sos_classes, fb_classes, sxpar - -import sys, logging, os, re -import sos_runnerd, sos_classes - -""" -sos_redorunnerd: - -sos_redorunnerd is used to rerun aporeduce (or any command) on a group files specified by a -glob and in the directory root/$MJD. Once the files in that given subdirectory specified by -the $MJD are processed, sos_redorunnerd exists. - -Many globs can be specified, and any file matching any specified glob will be processed. Many -instances of sos_redorunnerd can be running, for example one per camera. It is important that -only instance be looking for a particular kind of file or else files will be processed more -than once, things will get overwritten, your hair will fall out and all sorts of bad things -will happen. - -Note that like sos_runnerd, sos_redorunnerd does svn processing and plugmap -processing by default -- turn it off if you don't want it. I think sos_aporedo -will turn it off by default. - -Written by Gary Kushner (LBL). Nov 2009. - -""" - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print( """ -Parameters are: - -iname (-i) : defaut "" : instance name. Appended to logfiles and other things that need - to not clash. Use the camera name. -glob (-g) : default * : glob to look for. Can have many. Each glob will preserve order - processing of files -nosvn (-x) : default not set : Run without doing any svn processing -command (-c) : default echo-to-log : Command to run on found files. -logLevel (-v) : default 60 : 40 = ERROR; -v = 30 = WARNING; -v -v = 20 = INFO; -v -v -v = 10 = DEBUG -fitsDir (-r) : default . : Where to look for new files in MJD subdirectories -plugDir (-p) : default . : Where to look for and put plugmap files in MJD subdirs -nice (-n) : default False : Run commands with nice -platedb (-b) : default False : Exit if can't setup platedb -initialMJD (-m) : default latest : MJD to start looking for new files. Note: With the -e option, - this option will process files and in the specified MJD and then - go to the newest MJD, NOT the next one. -exposureNumber (-z) : default None : if specified, then only that exposure will be redone. -FPSmode (-s) : default True : Turns on/off the FPS mode -nocal (-a) : No assocaited calibration but uses other cals from that night -For the command, the following substitutions can be made: - %%f for the globbed (fits) file name w/o path information - %%qf for the fully qualified globbed (fits) file name. - %%pf for the path to the globbed (fits) file. - %%p for the plugmap file w/o path information - %%qp for the fully qualified plugmap file name - %%pp for the path to the plugmap file. - %%m for the current mjd - %%ef for the FPS mode - %%en for the nocal mode - """) - - sys.exit(1) - - -#### -def initializeLogger(cfg): - """Startup logging and set the level""" - - lname = sos_classes.Consts().logName - if cfg.iname != "": - lname += "-" + cfg.iname -# print "Starting to log to " + lname - - log = logging.getLogger(sos_classes.Consts().logName) - h = logging.StreamHandler() -# hf = logging.FileHandler(lname) - f = logging.Formatter("%(asctime)s-%(levelname)s: %(message)s") - h.setFormatter(f) -# hf.setFormatter(f) - h.setLevel(cfg.logLevel) -# hf.setLevel(cfg.logLevel) - log.setLevel(cfg.logLevel) - log.addHandler(h) -# log.addHandler(hf) - - log.critical("Hello. " + sys.argv[0] + " started.") - log.info("Startup Configuration is: \n\n" + str(cfg) + "\n\n") - - return log - - -#### -def redo(workers, cfg, log): - """Redo the command for files in the specified MJD""" - - # Get files - for worker in workers: - files = sos_runnerd.lsltr(os.path.join(cfg.fitsDir, cfg.MJD), worker.glob) - if cfg.exposure != None: - allfiles = files - files = [] - # should only be one, but I do it this way to be sure things are working. - # also, I do the numeric check to avoid worrying about leading zeroes. - for file in allfiles: - log.info("Checking exposure number of: " + file) - exp = re.search("sdR\-..-(\d{8})\.fit.*$", file) - if exp != None: - if int(exp.group(1)) == int(cfg.exposure): - log.info("correct exposure number") - files.append(file) - new = len(files) - log.info("Found " + str(new) + " files in " + - os.path.join(cfg.fitsDir, cfg.MJD, worker.glob)) - sos_runnerd.processNewBOSSFiles(worker, files, cfg, log) - - -#### -def main(): - """The program""" - - global logger - - config = sos_classes.Config(); - logger = None - - # A cry for help? - if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "-?"): - usage() - sys.exit(100) - - # Initialize - config = sos_runnerd.initializeParms() - logger = initializeLogger(config) - - # Find correct MJD to start on - sos_runnerd.initializeMJD(config, logger) - - # Create poll workers and initialize file counts - pollWorkers = sos_runnerd.createPollWorkers(config, logger) - - redo(pollWorkers, config, logger) - - -### Start of script - - -if __name__=='__main__': - main() - - diff --git a/bin/sos_runnerd b/bin/sos_runnerd deleted file mode 100755 index ea31d9a13..000000000 --- a/bin/sos_runnerd +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/env python3 - -import sos_runnerd - -""" -sos_runnerd: - -This is the front end for sos_runnerd.py - -Written by Gary Kushner (LBL). Nov 2009. - -""" - -try: - sos_runnerd.main() -except SystemExit: - raise -except: - sos_runnerd.logger.exception("Uncaught Exception -- program terminating !!!") - raise - - diff --git a/bin/sos_runnerd.py b/bin/sos_runnerd.py deleted file mode 100755 index 9876f8a38..000000000 --- a/bin/sos_runnerd.py +++ /dev/null @@ -1,877 +0,0 @@ -#!/usr/bin/env python3 - -import os, sys, fcntl, time, subprocess -import logging, logging.handlers, getopt, glob, random -import sos_classes, sxpar, putils -import socket -import numpy as np -#import pyfits -from astropy.io.fits import getheader -#import fb_classes -import time - -""" -sos_runnerd.py: - -sos_runnerd polls a directory structure looking for new files matching a glob and running a command on those -matching files. The directory structure to look for files is root/$MJD. By default, when run sos_runnerd goes to -the latest MDJ and starts looking for new files. - -Many globs can be specified, and any file matching any specified glob will be processed. Many instances of -sos_runnerd can be running, for example one per camera. It is important that only instance be looking for a -particular kind of file or else files will be processed more than once, things will get overwritten, your -hair will fall out and all sorts of bad things will happen. - -sos_runnerd is smart enough not to let two instances with EXACTLY the same globs, specified in EXACTLY the -same order run concurrently. If you try to start a new instance with exactly the same globs in order then the -process will exit(0). The only real use of this is to allow chron to start the process as a keep-alive. The -lock file to implement this is stored in the control directory. - -Everytime the sos_runnerd looks for a new file, if it doesn't find one, it will also look for a later MJD. If it -finds one, it will start looking there for new files. sos_runnerd never looks at previous MJDs and will only look -at one MJD at a time. - -sos_runnerd look at command line arguments and a configuration file named sos_config.ini. Command line arguments -always have precedence. Parameters and sos_config.ini names are defined in usage(). Configuration files are -not currently supported and probably never will be unless someone asks. - -Notes to run: - In order to run, the environment must be setup: - setup platedb - ssh-agent a key that can commit svn - - setting up platedb is optional. runnerd will try and do it automatically, but it - requires a late version of eups to work and the correct version of platedb must be - setup as current. - -Written by Gary Kushner (LBL). Oct 2009. - -""" - - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print(""" -Parameters and sos_config.ini names are: - - -iname (-i) : defaut "" : instance name. Appended to logfiles and other things that need - to not clash. Use the camera name. -glob (-g) : default * : glob to look for. Can have many. Each glob will preserve order - processing of files -nosvn (-x) : default not set : Run without doing any svn processing -bookkeep (-k) : default not set : Run bookkeeping every 60 minutes (svn up & ci) -command (-c) : default echo-to-log : Command to run on found files. -pollDelay (-d) : default 60 seconds : Seconds to wait before interrogating directing -logDir (-l) : default . : Place to place log files -logLevel (-v) : default 60 : 40 = ERROR; -v = 30 = WARNING; -v -v = 20 = INFO; -v -v -v = 10 = DEBUG -controlDir (-o) : default . : Place to find config file and place lock file -fitsDir (-r) : default . : Where to look for new files in MJD subdirectories -plugDir (-p) : default . : Where to look for and put plugmap files in MJD subdirs -nice (-n) : default False : Run commands with nice -platedb (-b) : default False : Exit if can't setup platedb -initialMJD (-m) : default latest : MJD to start looking for new files. Note: With the -e option, - this option will process files and in the specified MJD and then - go to the newest MJD, NOT the next one. -redo (-e) : default not set : Start with existing the files in the latest or given MJD. Normally only - new files are processed. Usefull for starting runnerd after observing - has started, or along with -m for a poor man's redo. -FPSmode (-s) : default True : Turns on/off the FPS mode - -For the command, the following substitutions can be made: - %%f for the globbed (fits) file name w/o path information - %%qf for the fully qualified globbed (fits) file name. - %%pf for the path to the globbed (fits) file. - %%p for the plugmap file w/o path information - %%qp for the fully qualified plugmap file name - %%pp for the path to the plugmap file. - %%m for the current mjd - %%ef for the FPS mode - """) - sys.exit(1) - - -#### -def screamAndDie(msg): - """Log a message and then exit""" - - log = logging.getLogger(sos_classes.Consts().logName) - log.critical(msg) - log.critical("GOODBYE!") - - # These lines may cause an exception if running headless. But at this point... so what. - print(msg, file=sys.stderr) - print("GOODBYE!", file=sys.stderr) - sys.exit(1) - -#### -def globsToString(cfg): - """Return a string representation of all the globs - - Currently the string is just a concatinated list of the globs give. This gives lots of - characters that are fine for Linux and Darwin but not so much every OS. This could easily - be changed to a hash code or translated string if needed. - """ - - s = "" - for g in cfg.globs: - s += g - - return s - - -#### -def oneInstanceCheck(cfg, log): - """Only one instance of this daemon should be running. The normal setup is to have chron try - and start it every so often and if it is still running, then this procedure will abort. It - writes a message to stdout, but that usually should be shipped to >dev/null""" - - lockFile = os.path.join(cfg.controlDir, sos_classes.Consts().lockFileBase) - lockFile += "-" + globsToString(cfg) - lockFile += ".lock" - - log.info("Lock file is " + lockFile) - - lock = open(lockFile, 'w') - try: - fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB) - except IOError as xxx_todo_changeme: - (errno, errstr) = xxx_todo_changeme.args - log.info("oneInstanceCheck failed gracefully.") - print("oneInstanceCheck failed gracefully.", file=sys.stderr) - sys.exit(0) - - return lock - - -#### -def writeVersionInfo(cfg, log): - """Write a version string to a file""" - - verFile = os.path.join(cfg.controlDir, sos_classes.Consts().versionFile) - rc = subprocess.getstatusoutput("idlspec2d_version") - f = open(verFile, "w") - f.write(time.ctime() + " " + rc[1] + "\n") - f.close() - log.info("Version is %s" % rc[1]) - - - -#### -def isitTimeToDie(cfg, log): - """check dirFileName to see if it is time to gracefully give up the ghost""" - - dieFile = os.path.join(cfg.controlDir, sos_classes.Consts().dieFileName) - - if os.path.isfile(dieFile): - log.critical("Time to die.") - log.critical("GOODBYE!") - sys.exit(0) - -#### -def setupPlateDbAndIdlspec2d(cfg): - """Setup plateDb. By Default do nothing on failure because older versions of eups don't work this way.""" - - try: - import eups - Eups = eups.Eups(verbose=0) - cmds = eups.setup(Eups, "platedb", eups.Current()) - if 'false' in cmds and cfg.platedb: - screamAndDie("Could not setup platedb") -# idlspec2d needs to already be setup or we wouldn't be running... -# cmds = eups.setup(Eups, "idlspec2d", eups.Current()) -# if 'false' in cmds and cfg.platedb: -# screamAndDie("Could not setup idlspec2d") - except: - if cfg.platedb: - screamAndDie("Could not setup platedb and/or idlspec2d (except)") - -#### -def parseConfigFile(cfg): - """Parse the config file""" - - -#### -def parseCmdLine(cfg): - """Parse command line arguments""" - - globs = [] # fill in the command line globs - verbose = 0 - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(sys.argv[1:], "i:g:c:d:l:vc:p:r:m:s:a:z:o:xnbek") - except Exception as e: - print("Illegal option specified.") - print(" ") - print(str(e)) - print(" ") - usage() - - if len(pargs) != 0: - print("All arguments should be parameters (start with '-')") - print("found " + str(pargs)) - usage() - - # Fill in the config - for (opt, value) in opts: - if opt == "-i": - cfg.iname = value - if opt == "-g": - globs.append(value) - if opt == "-c": - cfg.command = value - if opt == "-d": - cfg.pollDelay= int(value) - if opt == "-l": - cfg.logDir = value - if opt == "-v": - verbose += 1 - if opt == "-o": - cfg.controlDir = value - if opt == "-r": - cfg.fitsDir = value - if opt == "-p": - cfg.plugDir = value - if opt == "-m": - cfg.MJD = value; - if opt == "-s": - cfg.fps = value; #FPS turning off/on the FPS mode - if opt == "-a": - cfg.nocal = value; #Use non-associated cals from the same night - if opt == "-z": - cfg.exposure = value - if opt == "-x": - cfg.nosvn = True - if opt == "-k": - cfg.bookkeep = False # Force turning off book keeping as there is a separate cronjob doing this - if opt == "-n": - cfg.nice = True - if opt == "-b": - cfg.platedb = True - if opt == "-e": - cfg.redo = True - - # Any globs override default - if (len(globs) != 0): - cfg.globs = globs - # Don't want to apply -v on each call, so always start with a base - if (verbose > 0): - cfg.logLevel = max(1, sos_classes.Config().logLevel - verbose * 10) - - # Display config values on any verbosity - if (verbose > 1): - print("Config values: \n" + str(cfg)) - - -#### -def initializeParms(): - """Initialize all the parameters.""" - cfg = sos_classes.Config(); - - # Parse command line to get config.ini information - parseCmdLine(cfg) - # Parse config.ini to get new defaults - parseConfigFile(cfg) - # Parse command line again to give command line precedence - parseCmdLine(cfg) - - return cfg - - -#### -def initializeLogger(cfg): - """Startup logging and set the level""" - - lname = os.path.join(cfg.logDir, sos_classes.Consts().logName) - if cfg.iname != "": - lname += "-" + cfg.iname - print("Starting to log to " + lname) - - log = logging.getLogger(sos_classes.Consts().logName) - h = logging.handlers.TimedRotatingFileHandler(lname, 'midnight', 1, 5) - hc = logging.handlers.TimedRotatingFileHandler(lname + "-error", 'midnight', 1, 5) -# h = logging.handlers.RotatingFileHandler(lname, maxBytes=1024*1024 * 25, backupCount=3) - f = logging.Formatter("%(asctime)s-%(levelname)s: %(message)s") - h.setFormatter(f) - hc.setFormatter(f) - h.setLevel(cfg.logLevel) - hc.setLevel(logging.ERROR) - log.setLevel(cfg.logLevel) - log.addHandler(h) - log.addHandler(hc) - - log.critical("Hello. " + sys.argv[0] + " started.") - log.info("Startup Configuration is: \n\n" + str(cfg) + "\n\n") - - return log - - -#### -def createPollWorkers(cfg, log): - """Create poll workers""" - - workers = [] - - num = 1 - for glob in cfg.globs: - p = sos_classes.PollWorker() - p.glob = glob - p.workerNumber = num - num += 1 - workers.append(p) - log.debug("\nnew PollWorker:\n" + str(p)) - - return workers - - -#### -def resetPollWorkers(workers, cfg, log): - """Reset the file count on all the workers""" - - log.info("Resetting fileCount on all workers.") - for w in workers: - w.fileCount = 0 - -#### -def initializePollWorkers(workers, cfg, log): - """Initialize poll workers with latest file counts""" - - for worker in workers: - worker.fileCount = len(glob.glob(os.path.join(cfg.fitsDir, cfg.MJD, worker.glob))) - log.debug("\nInitialized PollWorker:\n" + str(worker)) - - - -#### -def lsltr(dir, regex="*"): - """return a modification-time sorted list of files in dir""" - - files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] - files.sort(key=lambda tm: os.path.getmtime(tm)) - files1 = [f for f in files if len(f.split('.'))==3] - - return files1 - - -#### -def ls(dir, regex="*"): - """return a name sorted list of files in dir""" - - files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] - files.sort() - - return files - - - - -#### -def initializeMJD(cfg, log): - """Find the correct MJD to start looking for new files. If the user specifies an MJD just test - to see if it exists, otherwise, use the latest MJD.""" - - # First check for user specified - if cfg.MJD != "0": - path = os.path.join(cfg.fitsDir, cfg.MJD) - if not os.path.isdir(path): - screamAndDie("Could not find user specified MJD path: " + path) - log.info("Using user specified MJD " + path) - else: - regex = sos_classes.Consts().MJDGlob; - try: - log.debug("Looking for initial MJD in " + cfg.fitsDir) - cfg.MJD = ls(cfg.fitsDir, regex)[-1][-5:] - log.info("Latest initial MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) - except: - screamAndDie("Could not find latest MJD in " + cfg.fitsDir) - - -#### -def updateMJD(workers, cfg, log): - """Check to see if a new MJD exists""" - - regex = sos_classes.Consts().MJDGlob; - try: - MJD = ls(cfg.fitsDir, regex)[-1][-5:] - if (MJD == cfg.MJD): - return - - cfg.MJD = MJD[-5:] - for worker in workers: - worker.fileCount = 0 - - log.info("Latest updated MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) - except: - screamAndDie("Could not find latest MJD in " + cfg.fitsDir) - - -#### -#def svnAdd(uri, cfg, log): -# """Add a file or dir to svn""" -# -## Even if svn processing is turned off, we should add the file! -## if cfg.nosvn: -## return -#### -# -# log.info("svn adding " + uri) -# rc = subprocess.getstatusoutput("svn add " + uri) -# log.info(" -> output:\n" + rc[1]) -# if rc[0] != 0: -# log.critical("\nCould not add to svn: " + uri + "\n" + rc[1]) -# -#def svnCommit(uri, cfg, log): -# """Run commit on a dir""" -# -# if cfg.nosvn: -# return -# -# log.info("svn committing " + uri) -# rc = subprocess.getstatusoutput("svn commit " + uri + " -m 'committed by sos_runnerd'") -# log.info(" -> output:\n" + rc[1]) -# if rc[0] != 0: -# log.critical("\nCommit failed on " + uri + "\n" + rc[1]) -# log.critical("Trying to do a cleanup") -# svnCleanup(uri, cfg,log) -# -#def svnUp(uri, cfg, log): -# """Update a dir""" -# -# if cfg.nosvn: -# return -# -# log.info("svn updating " + uri) -# rc = subprocess.getstatusoutput("svn up " + uri) -# log.info(" -> output:\n" + rc[1]) -# if rc[0] != 0: -# log.critical("\nUpdate failed on " + uri + "\n" + rc[1]) -# -# -#def svnCheck(uri, cfg, log): -# """Check that we can access the log of the file. Return False on not able to access.""" -# -# if cfg.nosvn: -# return True -# -# log.info("Checking svn access to " + uri) -# rc = subprocess.getstatusoutput("svn log " + uri) -# return rc[0] == 0 -# -#def svnCleanup(uri, cfg, log): -# """Do a cleanup on an SVN dir""" -# -# if cfg.nosvn: -# return -# -# log.info("svn cleanup " + uri) -# rc = subprocess.getstatusoutput("svn cleanup " + uri) -# log.info(" -> output:\n" + rc[1]) -# if rc[0] != 0: -# log.critical("\nCleanup failed on " + uri + "\n" + rc[1]) -# -#### -def checkPlugMap(file, cfg, log): - """ - Get a plugmap file from the database if needed. Uses the platedb command catPlPlugMapM so - make sure platedb is setup! - - Returns the fully qualified name of the plugmap file - """ - - dirty = False # svn dirty bit - speclogDir = cfg.plugDir - - Host=socket.gethostbyaddr(socket.gethostname())[0] - log.info(Host) - if 'apo' in Host: obs='apo' - elif 'lco' in Host: obs='lco' - else: - try: obs = os.environ['OBSERVATORY'].lower() - except: - log.critical('Not running at APO or LCO, set OBS environmental variable to run') - return "" - plugmapDir = os.path.join(speclogDir, obs, 'summary_files') - - # Get plugmap used by file - - try: - plugmapFullId = sxpar.sxparRetry(file, "CONFID", retries = 5)[0] - except TypeError as t: - log.critical("\nCould not parse " + file + "\n ->" + str(t)) - return "" - except IndexError: - log.critical("\nKeyword CONFID not found in " + file) - return "" - print(plugmapFullId) - try:plugmapDir = os.path.join(plugmapDir, str(int(np.floor(int(plugmapFullId)/100))).zfill(4)+'XX') - except: os.path.join(plugmapDir, str(int(np.floor(int(0)))).zfill(4)+'XX') - log.info("Current confSummary directory is " + plugmapDir) - - # Parse plugmap name - plugmapName = "confSummaryF-" + plugmapFullId + ".par" - plugParse = plugmapFullId.split("-") - plugmapId = plugmapFullId #plugParse[1] - #plugmapMJD = plugParse[1] - - log.debug(file + " uses confSummaryF " + plugmapFullId + " with Id " + plugmapId) - log.debug(" full name of confSummaryF file is " + plugmapName) - log.debug("confId=" + plugmapId)# + ", pMJD=" + plugmapMJD) - #plugmapName = "plPlugMapM-" + plugmapFullId + ".par" - #plugParse = plugmapFullId.split("-") - #plugmapId = plugParse[0] - #plugmapMJD = plugParse[1] - #plugmapMapId = str(int(plugParse[2][0:2])) - #plugmapPtg = "A" - #if len(plugParse[2]) == 3: - # plugmapPtg = plugParse[2][2] - #log.debug(file + " uses plugmap " + plugmapFullId + " with Id " + plugmapId) - #log.debug(" full name of plugmap file is " + plugmapName) - #log.debug("pId=" + plugmapId + ", pMJD=" + plugmapMJD + ", pMapId=" + plugmapMapId + ", pPointing=" + str(plugmapPtg)) - - # See if the plugmap $MJD dir exists, if not create it and add it to svn - if os.path.isdir(plugmapDir): - log.info("Found existing directory: " + plugmapDir) - else: - log.info("Creating " + plugmapDir) - # We let an error happen here because there is a race condition where all the runnerd processes - # fight to create the directory. If the directory really didn't get created, we'll get - # a real error below. - try: - os.mkdir(plugmapDir) - # svnAdd(plugmapDir, cfg, log) - dirty = True - log.info("Created " + plugmapDir) - except: - pass - - - # Check if the file exists, if not get it and add it to svn - plugpath = os.path.join(plugmapDir, plugmapName) - if os.path.isfile(plugpath): - log.info("Found existing confSummaryF file: " + plugpath) - else: - plugmapName = "confSummary-" + plugmapFullId + ".par" - plugParse = plugmapFullId.split("-") - plugmapId = plugmapFullId #plugParse[1] - log.info("No confSummaryF file: " + plugpath) - log.debug(file + " uses confSummary " + plugmapFullId + " with Id " + plugmapId) - log.debug(" full name of confSummary file is " + plugmapName) - log.debug("confId=" + plugmapId)# + ", pMJD=" + plugmapMJD) - - plugpath = os.path.join(plugmapDir, plugmapName) - - if os.path.isfile(plugpath): - log.info("Found existing confSummary file: " + plugpath) - else: - log.critical("Could not get confSummary for Id " + plugmapId) - return "" - - -# log.info("Getting from platdb: " + plugmapName) -# cmd = "catPlPlugMapM"; -# cmd += " -m " + plugmapMJD -# cmd += " -f " + plugmapMapId -# if plugmapPtg != None: -# cmd += " -p " + plugmapPtg -# cmd += " " + plugmapId -# log.debug("Getting plugmap using: " + cmd) -# rc = subprocess.getstatusoutput(cmd) -# if rc[0] != 0: -# log.critical("Could not get plugmap for Id " + plugmapId + "\nOutput:\n" + rc[1]) -# else: -# # The file will probably get written multiple times, but at least it won't be corrupted -# flock = open(plugpath, 'a') -# fcntl.flock(flock, fcntl.LOCK_EX) -# f = open(plugpath, "w") -# f.write(rc[1]) -# f.close() -# flock.close() -# log.info("Created " + plugpath) -# # svnAdd(plugpath, cfg, log) -# # svnCommit(plugmapDir, cfg, log) [going to move to only doing commit during bookkeeping] - - return os.path.abspath(plugpath) - - -#### -def createCMD(fglob, plugPath, cfg): - """Create command with substitutions - - %%f for the globbed (fits) file name w/o path information - %%qf for the fully qualified globbed (fits) file name. - %%pf for the path to the globbed (fits) file. - %%p for the plugmap file w/o path information - %%qp for the fully qualified plugmap file name - %%pp for the path to the plugmap file. - %%m for the current MJD - %%ef for the fps mode - %%en for the no cal mode - """ - - qf = os.path.abspath(fglob) - f = os.path.basename(qf) - pf = os.path.dirname(qf) - - qp = os.path.abspath(plugPath) - p = os.path.basename(qp) - pp = os.path.dirname(qp) - - cmd = cfg.command - - cmd = cmd.replace("%%f", f) - cmd = cmd.replace("%%qf", qf) - cmd = cmd.replace("%%pf", pf) - cmd = cmd.replace("%%pp", pp) # this line needs to be before %%p - cmd = cmd.replace("%%p", p) - cmd = cmd.replace("%%qp", qp) - cmd = cmd.replace("%%m", cfg.MJD) - cmd = cmd.replace("%%ef", cfg.fps) - cmd = cmd.replace("%%en", cfg.nocal) - - return cmd - - -#### -def executeCommand(cmd, cfg, log): - """Execute command""" - - if cfg.nice: - cmd = "nice " + cmd - - log.info("Running: " + cmd) -# rc = commands.getstatusoutput(cmd) -# log.info(" -> rc = " + str(rc[0])) -# log.debug(" -> output:\n" + rc[1]) - prefix = "cmd: " - try: - if cfg.nice: - i = 1 - else: - i = 0 - prefix = cmd.split()[i] + ": " - except: - pass - - (rc, output) = putils.runCommand(cmd, logCmd=log.debug, prefix=prefix) - log.info(" -> rc = " + str(rc)) -# log.debug(" -> output:\n" + output) - if rc != 0: - log.critical("Command Failed(" + str(rc) + "): " + cmd) - log.critical("Output:\n" + output)#.decode("utf-8")) - - -#### -def processNewBOSSFiles(worker, files, cfg, log): - """ Process new fits files - - Check to see if the plugmap file exists in the correct location, if it does not then - create it (get it from the database). Then add the appropiate APO command to the - correctly numbered process list. - - Before the files are processed, they are sorted by name. We really want the files - sorted by time, but because of the sequence number, name is the same as time for any - given camera. - - """ - - # Sort files by name to get into the right time order - files.sort() - log.info("Sorted file list" + str(files)) - - for f in files: - log.info("processing new file: " + f) - - #- Get platetype from header (missing=BOSS) - i = 0 - while True: - try: - hdr = getheader(f) - break - except: - log.critical('Error reading '+f+' header - Empty of corrupt FITS file') - i+=1 - time.sleep(1) - if i == 30: - log.critcal('Skipping exposure '+f) - hdr = None - break - if hdr is None: continue - if 'FLAVOR' not in hdr: - log.info("Skipping exposure with missing FLAVOR keyword.") - continue - else: - flavor = hdr['FLAVOR'] - - if 'PLATETYP' in hdr: - platetype = hdr['PLATETYP'].upper() - else: - platetype = 'BHM'#'BOSS' - - #- always process bias and darks, regardless of PLATETYP - #- for other exposure types, only process BOSS and EBOSS exposures - if flavor in ('bias', 'dark') or platetype in ('BHM', 'BHM&MWM'):#'BOSS','EBOSS' - # Pull plugmap from the db if needed - plugpath = checkPlugMap(f, cfg, log) - if len(plugpath) == 0: - continue - # Create the command and execute it - cmd = createCMD(f, plugpath, cfg) - # plname = fb_classes.Consts().processListName - # plname = os.path.join(cfg.controlDir, plname) + str(worker.workerNumber) - executeCommand(cmd, cfg, log) - - else: - #- Don't crash if hdr is mangled and doesn't have EXPOSURE - if 'EXPOSURE' in hdr: - log.info("Skipping %s exposure %d." % (platetype, hdr['EXPOSURE'])) - else: - log.info("Skipping %s exposure." % platetype) - return - - - -#### -def doBookKeeping(cfg, log): - """Do SVN Book Keeping. Command are not retried.""" - - speclogDir = cfg.plugDir - - #log.info("Doing a bookkeeping svn update on $SPECLOG_DIR: " + speclogDir) - #svnUp(speclogDir, cfg, log) - #log.info("Doing a bookkeeping svn add on $SPECLOG_DIR: "+ speclogDir) - #svnAdd(os.path.join(speclogDir, cfg.MJD), cfg, log) - #svnAdd(os.path.join(speclogDir, cfg.MJD, "*"), cfg, log) - #log.info("Doing a bookkeeping svn commit on $SPECLOG_DIR: " + speclogDir) - #svnCommit(speclogDir, cfg, log) - - - -#### -def watch(workers, cfg, log): - """ Watch for new files - - When a new file comes in read the header to look for the plugmap and then check to see - if the plugmap file exists. If it doesn't, get the plugmap from the database and put it - into the proper MJD directory. Create the proper MJD directory for the plugmap if needed. - - Next, check to see if a newer MJD has been created. If there are no new files and no new - MJD then sleep for cfg.pollDelay. - - Note that only the latest MJD is ever checked, so once a new MJD is created only that MJD - will be checked. - """ - - # We do some book keeping every 60 minutes. Calculate the number of pauses between book keeping - # Add a random factor so all instances don't try and do it at the same time. - bookKeepingPauses = 60 * 60 / cfg.pollDelay -# bookKeepingPauses += int(random.random() * bookKeepingPauses * .2) # only one bookkeeper for now - bookKeepingCount = bookKeepingPauses - log.info("Setting bookKeepingPauses to " + str(bookKeepingPauses)) - - - # Do an initial bookeeping to make svn is up to date before we start - if cfg.bookkeep: - log.info("Entering initial bookkeeping mode") - doBookKeeping(cfg, log) - - while True: - pause = True - - # Have we been nicely asked to kill ourselves? - # Do we have an outstanding die signal - isitTimeToDie(cfg, log) - - # First check for new files - for worker in workers: - files = lsltr(os.path.join(cfg.fitsDir, cfg.MJD), worker.glob) - if len(files) != worker.fileCount: - pause = False - new = len(files) - worker.fileCount - log.info("Found " + str(new) + " new files in " + - os.path.join(cfg.fitsDir, cfg.MJD, worker.glob)) - # File could get deleted... - if new > 0: - processNewBOSSFiles(worker, files[-1 * new:], cfg, log) - worker.fileCount = len(files) - - # Next check for a new MJD. Don't wait if there's a new MJD - if updateMJD(workers, cfg, log): pause = False - - # Pause if asked - if pause: - if cfg.bookkeep: - bookKeepingCount -= 1 - if bookKeepingCount < 1: - log.info("Entering book keeping mode") - bookKeepingCount = bookKeepingPauses - doBookKeeping(cfg, log) - else: - log.info("Bookkeeping in " + str(bookKeepingCount) + " sleeps.") - log.info("Sleeping for " + str(cfg.pollDelay) + " seconds.") - time.sleep(cfg.pollDelay) - - -#### -def main(): - """The program""" - - # Make the logger global so we use it for exception handling - global logger - - config = sos_classes.Config(); - logger = None - - # A cry for help? - if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "-?"): - usage() - sys.exit(100) - - # Initialize - config = initializeParms() - logger = initializeLogger(config) - writeVersionInfo(config, logger) -# setupPlateDbAndIdlspec2d(config) - - # Do we have an outstanding die signal - isitTimeToDie(config, logger) - - # Make sure we're the only copy running with our globs. If we're not, then exit cleanly - lock = oneInstanceCheck(config, logger) - - # Check svn access -# if not svnCheck(config.plugDir, config, logger): -# logger.critical("Could not svn access " + config.plugDir) -# print("Could not svn access " + config.plugDir) -# print("Could not svn access " + config.plugDir, file=sys.stderr) - - # Find correct MJD to start on - initializeMJD(config, logger) - - # Create poll workers and initialize file counts - pollWorkers = createPollWorkers(config, logger) - initializePollWorkers(pollWorkers, config, logger) - if config.redo: - resetPollWorkers(pollWorkers, config, logger) - - # Watch for new files. Forever... Unless there are exceptions. Then - # try up to 3 times to get it working. But mostly... Forever! - - crashes = 3 - while crashes > 0: - try: - watch(pollWorkers, config, logger) - except SystemExit: - raise - except: - crashes = crashes - 1 - if crashes > 0: - logger.exception("!!! Uncaught exception in watch() !!! Will Retry !!!") - else: - logger.exception("!!! TOO MANY Uncaught exceptions in watch() !!!") - raise diff --git a/bin/sos_runnerd.pyc b/bin/sos_runnerd.pyc deleted file mode 100644 index 8b33ef42a..000000000 Binary files a/bin/sos_runnerd.pyc and /dev/null differ diff --git a/bin/sos_runnerd_processlist b/bin/sos_runnerd_processlist deleted file mode 100755 index b3a09bec8..000000000 --- a/bin/sos_runnerd_processlist +++ /dev/null @@ -1,562 +0,0 @@ -#!/usr/bin/env python3 - -import os, sys, fcntl, time, subprocess -import logging, logging.handlers, getopt, glob -import sos_classes, fb_classes, sxpar - -""" -sos_runnerd: - -sos_runnerd polls a directory structure looking for new files matching a glob and appending them to a process list. -The directory structure is root/$MJD. By default, when run sos_runnerd goes to the latest MDJ and starts looking -for new files. Many globs can be specified. - -Each glob will go into its own process queue numbered 1 .. n, n being the number of globs specified. Exactly one -sos_batchd process must be run per glob. Each sos_batchd process must specifiy which numbered process queue it should -service. This is a bit of hack and not that flixible, but the original design didn't take into account that the files -needed to be processed sequentially by glob, so this is what we have. - -Everytime the sos_runnerd looks for a new file, if it doesn't find one, it will also look for a later MJD. If it -finds one, it will start looking there for new files. sos_runnerd never looks at previous MJDs and will only look -at one MJD at a time. - -sos_runnerd look at command line arguments and a configuration file named sos_config.ini. Command line arguments -always have precedence. Parameters and sos_config.ini names are defined in usage(). - -Notes to run: - In order to run, the environment must be setup: - setup platedb - ssh-agent a key that can commit svn - - setting up platedb is optional. runnerd will try and do it automatically, but it - requires a late version of eups to work and isn't guaranteed to work. - -Written by Gary Kushner (LBL). Oct 2009. - -""" - -#### -## Globals Block. -#### - - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print(""" -Parameters and sos_config.ini names are: - - -glob (-g) : default * : glob to look for. Can have many. Each glob will preserve order - processing of files -nosvn (-x) : default not set : Run without doing any svn processing -command (-c) : default echo-to-log : Command to run on found files. -pollDelay (-d) : default 60 seconds : Seconds to wait before interrogating directing -logDir (-l) : default . : Place to place log files -logLevel (-v) : default 30 : 30 = WARNING; -v = 20 = INFO; -v -v = 10 = DEBUG -controlDir (-o) : default . : Place to find config file and place process lists -fitsDir (-r) : default $FITSFILES : Where to look for new files in MJD subdirectories -plugDir (-p) : default $SPECLOG_DIR : Where to look for and put plugmap files in MJD subdirs -initialMJD (-m) : default now : MJD to start looking for new files. Can't imagine why it wouldn't - be the current mjd. (Not Implemented) - -For the command, the following substitutions can be made: - %%f for the globbed (fits) file name w/o path information - %%qf for the fully qualified globbed (fits) file name. - %%pf for the path to the globbed (fits) file. - %%p for the plugmap file w/o path information - %%qp for the fully qualified plugmap file name - %%pp for the path to the plugmap file. - %%m for the current mjd - """) - sys.exit(1) - - -#### -def screamAndDie(msg): - """Log a message and then exit""" - - print(msg, file=sys.stderr) - print("GOODBYE!", file=sys.stderr) - log = logging.getLogger(sos_classes.Consts().logName) - log.critical(msg) - log.critical("GOODBYE!") - sys.exit(1) - -#### -def oneInstanceCheck(): - """Only one instance of this daemon should be running. The normal setup is to have chron try - and start it every so often and if it is still running, then this procedure will abort. It - writes a message to stdout, but that usually should be shipped to >dev/null""" - - lock = open(sos_classes.Consts().runnerLockFile, 'w') - try: - fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB) - except IOError as xxx_todo_changeme: - (errno, errstr) = xxx_todo_changeme.args - if errno != 35: raise - print("oneInstanceCheck failed gracefully.", file=sys.stderr) - sys.exit(0) - - return lock - - -#### -def setupPlateDb(): - """Setup plateDb. Do nothing on failure.""" - - try: - import eups - Eups = eups.Eups(verbose=0) - cmds = eups.setup(Eups, "platedb", eups.Current()) - except: - pass - -#### -def parseConfigFile(cfg): - """Parse the config file""" - - -#### -def parseCmdLine(cfg): - """Parse command line arguments""" - - globs = [] # fill in the command line globs - verbose = 0 - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(sys.argv[1:], "g:c:d:l:vc:p:r:m:o:x") - except: - usage() - - if len(pargs) != 0: - usage() - - # Fill in the config - for (opt, value) in opts: - if opt == "-g": - globs.append(value) - if opt == "-c": - cfg.command = value - if opt == "-d": - cfg.pollDelay= int(value) - if opt == "-l": - cfg.logDir = value - if opt == "-v": - verbose += 1 - if opt == "-o": - cfg.controlDir = value - if opt == "-r": - cfg.fitsDir = value - if opt == "-p": - cfg.plugDir = value - if opt == "-m": - cfg.MJD = value; - if opt == "-x": - cfg.nosvn = True - - # Any globs override default - if (len(globs) != 0): - cfg.glob = globs - # Don't want to apply -v on each call, so always start with a base - if (verbose > 0): - cfg.logLevel = max(1, sos_classes.Config().logLevel - verbose * 10) - - # Display config values on any verbosity - if (verbose > 1): - print("Config values: \n" + str(cfg)) - - -#### -def initializeParms(): - """Initialize all the parameters.""" - cfg = sos_classes.Config(); - - # Parse command line to get config.ini information - parseCmdLine(cfg) - # Parse config.ini to get new defaults - parseConfigFile(cfg) - # Parse command line again to give command line precedence - parseCmdLine(cfg) - - return cfg - - -#### -def initializeLogger(cfg): - """Startup logging and set the level""" - - lname = os.path.join(cfg.logDir, sos_classes.Consts().logName) - print("Starting to log to " + lname) - - log = logging.getLogger(sos_classes.Consts().logName) - h = logging.handlers.RotatingFileHandler(lname, maxBytes=1024*1024, backupCount=3) - f = logging.Formatter("%(asctime)s-%(levelname)s: %(message)s") - h.setFormatter(f) - h.setLevel(cfg.logLevel) - log.setLevel(cfg.logLevel) - log.addHandler(h) - - log.critical("Hello. " + sys.argv[0] + " started.") - log.critical("Startup Configuration is: \n\n" + str(cfg) + "\n\n") - - return log - - -#### -def createPollWorkers(cfg, log): - """Create poll workers""" - - workers = [] - - num = 1 - for glob in cfg.glob: - p = sos_classes.PollWorker() - p.glob = glob - p.workerNumber = num - num += 1 - workers.append(p) - log.debug("\nnew PollWorker:\n" + str(p)) - - return workers - - -#### -def initializePollWorkers(workers, cfg, log): - """Initialize poll workers with latest file counts""" - - for worker in workers: - worker.fileCount = len(glob.glob(os.path.join(cfg.fitsDir, cfg.MJD, worker.glob))) - log.debug("\nInitialized PollWorker:\n" + str(worker)) - - - -#### -def lsltr(dir, regex="*"): - """return a modification-time sorted list of files in dir""" - - files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] - files.sort(key=lambda tm: os.path.getmtime(tm)) - - return files - - -#### -def ls(dir, regex="*"): - """return a name sorted list of files in dir""" - - files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] - files.sort() - - return files - - - - -#### -def initializeMJD(cfg, log): - """Find the correct MJD to start looking for new files. If the user specifies an MJD just test - to see if it exists, otherwise, use the latest MJD.""" - - # First check for user specified - if cfg.MJD != "0": - path = os.path.join(cfg.fitsDir, cfg.MJD) - if not os.path.isdir(path): - screamAndDie("Could not find user specified MJD path: " + path) - log.info("Using user specified MJD " + path) - else: - regex = sos_classes.Consts().MJDGlob; - try: - log.debug("Looking for initial MJD in " + cfg.fitsDir) - cfg.MJD = ls(cfg.fitsDir, regex)[-1][-5:] - log.info("Latest initial MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) - except: - screamAndDie("Could not find latest MJD in " + cfg.fitsDir) - - -#### -def updateMJD(workers, cfg, log): - """Check to see if a new MJD exists""" - - regex = sos_classes.Consts().MJDGlob; - try: - MJD = ls(cfg.fitsDir, regex)[-1][-5:] - if (MJD == cfg.MJD): - return - - cfg.MJD = MJD[-5:] - for worker in workers: - worker.fileCount = 0 - - log.info("Latest updated MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) - except: - screamAndDie("Could not find latest MJD in " + cfg.fitsDir) - - -#### -def svnAdd(uri, cfg, log): - """Add a file to svn""" - - if cfg.nosvn: - return - - log.info("svn adding " + uri + " to svn") - rc = subprocess.getstatusoutput("svn add " + uri) - if rc[0] != 0: - log.critical("\nCould not add to svn: " + uri + "\n" + rc[1]) - -def svnCommit(uri, cfg, log): - """Run commit on a dir""" - - if cfg.nosvn: - return - - log.info("svn committing " + uri) - rc = subprocess.getstatusoutput("svn commit " + uri + " -m 'committed by sos_runnerd'") - if rc[0] != 0: - log.critical("\nCommit failed on " + uri + "\n" + rc[1]) - -def svnUp(uri, cfg, log): - """Update a dir""" - - if cfg.nosvn: - return - - log.info("svn updating " + uri) - rc = subprocess.getstatusoutput("svn up " + uri) - if rc[0] != 0: - log.critical("\nUpdate failed on " + uri + "\n" + rc[1]) - - -def svnCheck(uri, cfg, log): - """Check that we can access the log of the file. Return False on not able to access.""" - - if cfg.nosvn: - return True - - log.info("Checking svn access to " + uri) - rc = subprocess.getstatusoutput("svn log " + uri) - return rc[0] == 0 - - -#### -def checkPlugMan(file, cfg, log): - """ - Get a plugmap file from the database if needed. Uses the platedb command catPlPlugMapM so - make sure platedb is setup! - - Returns the fully qualified name of the plugmap file - """ - - dirty = False # svn dirty bit - speclogDir = cfg.plugDir - plugmapDir = os.path.join(speclogDir, cfg.MJD) - - log.debug("Current plugmap directory is " + plugmapDir) - - # Get plugmap used by file - try: - plugmapFullId = sxpar.sxpar(file, "NAME")[0] - except TypeError as t: - log.critical("\nCould not parse " + file + "\n ->" + str(t)) - return "" - - - # Parse plugmap name - plugmapName = "plPlugMapM-" + plugmapFullId + ".par" - plugmapId = plugmapFullId.split("-")[0] - log.debug(file + " uses plugmap " + plugmapFullId + " with Id " + plugmapId) - log.debug(" full name of plugmap file is " + plugmapName) - - # See if the plugmap $MJD dir exists, if not create it and add it to svn - if not os.path.isdir(plugmapDir): - log.info("Creating " + plugmapDir) - os.mkdir(plugmapDir) - svnAdd(plugmapDir, cfg, log) - dirty = True - - # Check if the file exists, if not get it and add it to svn - plugpath = os.path.join(plugmapDir, plugmapName) - if not os.path.isfile(plugpath): - log.info("Getting from platdb: " + plugmapName) - rc = subprocess.getstatusoutput("catPlPlugMapM " + plugmapId) - if rc[0] != 0: - log.critical("Could not get plugmap for Id " + plugmapId) - else: - f = open(plugpath, "w") - f.write(rc[1]) - f.close() - log.info("Created " + plugpath) - svnAdd(plugpath, cfg, log) - svnCommit(speclogDir, cfg, log) - - return os.path.abspath(plugpath) - - - -#### -def createCMD(fglob, plugPath, cfg): - """Create command with substitutions - - %%f for the globbed (fits) file name w/o path information - %%qf for the fully qualified globbed (fits) file name. - %%pf for the path to the globbed (fits) file. - %%p for the plugmap file w/o path information - %%qp for the fully qualified plugmap file name - %%pp for the path to the plugmap file. - %%m for the current MJD - """ - - qf = os.path.abspath(fglob) - f = os.path.basename(qf) - pf = os.path.dirname(qf) - - qp = os.path.abspath(plugPath) - p = os.path.basename(qp) - pp = os.path.dirname(qp) - - cmd = cfg.command - - cmd = cmd.replace("%%f", f) - cmd = cmd.replace("%%qf", qf) - cmd = cmd.replace("%%pf", pf) - cmd = cmd.replace("%%pp", pp) # this line needs to be before %%p - cmd = cmd.replace("%%p", p) - cmd = cmd.replace("%%qp", qp) - cmd = cmd.replace("%%m", cfg.MJD) - - return cmd - - - -#### -def processNewBOSSFiles(worker, files, cfg, log): - """ Process new fits files - - Check to see if the plugmap file exists in the correct location, if it does not then - create it (get it from the database). Then add the appropiate APO command to the - correctly numbered process list. """ - - for f in files: - log.info("processing new file: " + f) - - # Pull plugmap from the db if needed - plugpath = checkPlugMan(f, cfg, log) - - # Create the command and add to batch queue - cmd = createCMD(f, plugpath, cfg) - plname = fb_classes.Consts().processListName - plname = os.path.join(cfg.controlDir, plname) + str(worker.workerNumber) - fb_classes.ProcessList(plname).append(cmd) - log.info("\nAdding command to process list:\n ->" + cmd) - - -#### -def doBookKeeping(cfg, log): - """Do SVN Book Keeping. Command are not retried.""" - - speclogDir = cfg.plugDir - - #log.info("Doing a bookkeeping svn update on $SPECLOG_DIR: " + speclogDir) - #svnUp(speclogDir, cfg, log) - #log.info("Doing a bookkeeping svn commit on $SPECLOG_DIR: " + speclogDir) - #svnCommit(speclogDir, cfg, log) - - - -#### -def watch(workers, cfg, log): - """ Watch for new files - - When a new file comes in read the header to look for the plugmap and then check to see - if the plugmap file exists. If it doesn't, get the plugmap from the database and put it - into the proper MJD directory. Create the proper MJD directory for the plugmap if needed. - - Next, check to see if a newer MJD has been created. If there are no new files and no new - MJD then sleep for cfg.pollDelay. - - Note that only the latest MJD is ever checked, so once a new MJD is created only that MJD - will be checked. """ - - # We do some book keeping every 30 minutes, calculate the number of pauses between book keeping -# bookKeepingPauses = 30 * 60 / cfg.pollDelay - bookKeepingPauses = 5 * 60 / cfg.pollDelay - bookKeepingCount = bookKeepingPauses - - while True: - pause = True - - # First check for new files - for worker in workers: - files = lsltr(os.path.join(cfg.fitsDir, cfg.MJD), worker.glob) - if len(files) != worker.fileCount: - pause = False - new = len(files) - worker.fileCount - log.info("Found " + str(new) + " new files in " + - os.path.join(cfg.fitsDir, cfg.MJD, worker.glob)) - # File could get deleted... - if new > 0: - processNewBOSSFiles(worker, files[-1 * new:], cfg, log) - worker.fileCount = len(files) - - # Next check for a new MJD. Don't wait if there's a new MJD - if updateMJD(workers, cfg, log): pause = False - - # Pause if asked - if pause: - bookKeepingCount -= 1 - if bookKeepingCount < 1: - log.info("Entering book keeping mode") - bookKeepingCount = bookKeepingPauses - doBookKeeping(cfg, log) - log.debug("Sleeping for " + str(cfg.pollDelay) + " seconds. Bookkeeping in " + str(bookKeepingCount) + " pauses.") - time.sleep(cfg.pollDelay) - - -#### -def main(): - """The program""" - - # Make sure we're the only copy running. If we're not, then exit cleanly - lock = oneInstanceCheck() - - config = sos_classes.Config(); - logger = None - - # A cry for help? - if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "-?"): - usage() - sys.exit(100) - - # Initialize - setupPlateDb() - config = initializeParms() - logger = initializeLogger(config) - - # Check svn access - if not svnCheck(config.plugDir): - screamAndDie("Could not svn access " + config.plugDir) - - # Find correct MJD to start on - initializeMJD(config, logger) - - # Create poll workers and initialize file counts - pollWorkers = createPollWorkers(config, logger) - initializePollWorkers(pollWorkers, config, logger) - - # Watch for new files. Forever... - watch(pollWorkers, config, logger) - - - -### Start of script - -if __name__=='__main__': - main() - - diff --git a/bin/spSpec_reformat b/bin/spSpec_reformat new file mode 100755 index 000000000..1b507454b --- /dev/null +++ b/bin/spSpec_reformat @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +from boss_drp.post.spSpec_reformat import spSpec_reformat + +import os.path as ptt +from os import getenv +import argparse +import sys + + + +if __name__ == '__main__' : + """ + build spec files + """ + parser = argparse.ArgumentParser( + prog=ptt.basename(sys.argv[0]), + description='Build Spec Files') + parser.add_argument('--field', '-f', type=str, help='Run for a single Field', required=True) + parser.add_argument('--mjd', '-m', type=str, help='Run for a single MJD', required=True) + parser.add_argument('--topdir', type=str, help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX', default = getenv('BOSS_SPECTRO_REDUX')) + parser.add_argument('--run2d', type=str, help='Optional override value for the enviro variable $RUN2D', default=getenv('RUN2D')) + parser.add_argument('--run1d', type=str, help='Optional override value for the enviro variable $RUN2D', default=getenv('RUN1D')) + parser.add_argument('--custom', type=str, help='Name of Custom Coadd schema') + parser.add_argument('--plot', '-p', action='store_true', help='Create spec plots') + parser.add_argument('--epoch', '-e', action='store_true', help='Run for epoch Coadds') + parser.add_argument('--lsdr10', action='store_true', help='Include Legacy Survey DR10 links on HTML') + parser.add_argument('--allsky', action='store_true', help='Reformat for Allsky Custom Coadd') + + args = parser.parse_args() + spSpec_reformat(args.topdir, args.run2d, args.run1d, args.field, args.mjd, + plot=args.plot, epoch=args.epoch, lsdr10=args.lsdr10, + allsky=args.allsky, custom=args.custom) + + diff --git a/bin/spamd_start b/bin/spamd_start deleted file mode 100755 index 0515426bd..000000000 --- a/bin/spamd_start +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/bash -f -#------------------------------------------------------------------------------ -# Script to run "spamd" as a cron job. -# -# D. Schlegel, Princeton, 8 Mar 2001 -#------------------------------------------------------------------------------ - -#------------------------------------------------------------------------------ -# Set file names used internally in this script. - -cronfile=/tmp/$USER.spamd.cron - -#------------------------------------------------------------------------------ -# Test that certain environment variables are already set. - -if [ -z "$IDLSPEC2D_DIR" ] ; then - echo "IDLSPEC2D_DIR must be set!" - exit -fi - -if [ -z "$IDLUTILS_DIR" ] ; then - echo "IDLUTILS_DIR must be set!" - exit -fi - -if [ -z "$IDL_DIR" ] ; then - echo "IDL_DIR must be set!" - exit -fi - -if [ -z "$IDL_PATH" ] ; then - echo "IDL_PATH must be set!" - exit -fi - -if [ -z "$ASTROLOG_DIR" ] ; then - echo "ASTROLOG_DIR must be set!" - exit -fi - -if [ -z "$SPECLOG_DIR" ] ; then - echo "SPECLOG_DIR must be set!" - exit -fi - -if [ -z "$SPECFLAT_DIR" ] ; then - echo "SPECFLAT_DIR must be set!" - exit -fi - -if [ -z "$BOSS_SPECTRO_DATA" ] ; then - echo "BOSS_SPECTRO_DATA must be set!" - exit -fi - -if [ -z "$BOSS_SPECTRO_REDUX" ] ; then - echo "BOSS_SPECTRO_REDUX must be set!" - exit -fi - -#------------------------------------------------------------------------------ -# Test to see if the cron job is already loaded. If so, then quit. - -qrun=`crontab -l | awk 'BEGIN{begin = 0; end = 0}{if ($2 == "SPAMD" && $3 == "BEGIN") {begin = 1}; if ($2 == "SPAMD" && $3 == "END" && begin == 1) {end = 1}}END{if (begin == 1 && end == 1){print "1"} else {print "0"}}'` -if [ $qrun = 1 ] ; then - echo "The Spectro-AMD cron job is already running." - exit -fi - -#------------------------------------------------------------------------------ -# Decide what the current version of idlspec2d is. - -# vers=`echo $SETUP_IDLSPEC2D | awk '{print $2}'` -vers=`echo "print,idlspec2d_version()" | idl 2> /dev/null` - -#------------------------------------------------------------------------------ -# Construct the cron file to be loaded. Start with the existing cron file, -# then append more to it. - -# Print the cron tab w/out the first 3 lines and w/out the SPAMD lines. -crontab -l | awk 'BEGIN{doprint = 1}{if ($2 == "SPAMD" && $3 == "BEGIN") {doprint = 0}; if (NR > 3 && doprint == 1) {print $0}; if ($2 == "SPAMD" && $3 == "END") {doprint = 1} }' > $cronfile - -echo "# SPAMD BEGIN "$vers >> $cronfile -echo "PATH=$PATH" >> $cronfile -echo "IDLSPEC2D_DIR=$IDLSPEC2D_DIR" >> $cronfile -echo "IDLUTILS_DIR=$IDLUTILS_DIR" >> $cronfile -echo "IDL_DIR=$IDL_DIR" >> $cronfile -echo "IDL_PATH=$IDL_PATH" >> $cronfile -echo "ASTROLOG_DIR=$ASTROLOG_DIR" >> $cronfile -echo "SPECLOG_DIR=$SPECLOG_DIR" >> $cronfile -echo "SPECFLAT_DIR=$SPECFLAT_DIR" >> $cronfile -echo "BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA" >> $cronfile -echo "BOSS_SPECTRO_REDUX=$BOSS_SPECTRO_REDUX" >> $cronfile -echo "# This job will run every 10 minutes to keep the disk automounter up." >> $cronfile -echo "*/10 * * * * spamdup 2> /dev/null" >> $cronfile -echo "# SPAMD END" >> $cronfile - -#------------------------------------------------------------------------------ -# Load this new cron file. - -crontab $cronfile -echo "Now running Spectro-AMD version "$vers"." - -\rm $cronfile - -#------------------------------------------------------------------------------ diff --git a/bin/spamd_stop b/bin/spamd_stop deleted file mode 100755 index dc1460044..000000000 --- a/bin/spamd_stop +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash -f -#------------------------------------------------------------------------------ -# Script to stop Spectro-AMD (e.g., un-load the cron job). -# -# D. Schlegel, Princeton, 8 Mar 2001 -#------------------------------------------------------------------------------ - -#------------------------------------------------------------------------------ -# Test to see if the cron job is not loaded. If not, then quit. - -echo -qrun=`crontab -l | awk 'BEGIN{begin = 0; end = 0}{if ($2 == "SPAMD" && $3 == "BEGIN") {begin = 1}; if ($2 == "SPAMD" && $3 == "END" && begin == 1) {end = 1}}END{if (begin == 1 && end == 1){print "1"} else {print "0"}}'` -if [ $qrun = 0 ] ; then - echo "The Spectro-AMD cron job is not running." - exit -fi - -#------------------------------------------------------------------------------ -# Construct the cron file to be loaded. Use the existing cron file, -# but deleting the lines for SPAMD. - -cronfile=/tmp/$USER.spamd.cron -# Print the cron tab w/out the first 3 lines and w/out the SPAMD lines. -crontab -l | awk 'BEGIN{doprint = 1}{if ($2 == "SPAMD" && $3 == "BEGIN") {doprint = 0}; if (NR > 3 && doprint == 1) {print $0}; if ($2 == "SPAMD" && $3 == "END") {doprint = 1} }' > $cronfile - -#------------------------------------------------------------------------------ -# Load this new cron file - -crontab $cronfile -echo "Spectro-AMD stopped." - -\rm $cronfile - -#------------------------------------------------------------------------------ diff --git a/bin/speclog_svn_update.sh b/bin/speclog_svn_update.sh deleted file mode 100644 index 42aaabbe0..000000000 --- a/bin/speclog_svn_update.sh +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -thistime="eBOSS cron autocommit on "`date` - -echo $SPECLOG_DIR -if [ -z "$SPECLOG_DIR" ] ; then - export SPECLOG_DIR='/home/eboss/software/svn.sdss.org/data/sdss/speclog/trunk' -fi -echo $SPECLOG_DIR -cd $SPECLOG_DIR -tmp_mjd=$(ls -ltr $SPECLOG_DIR | grep '^d' | tail -1) -mjd=$(echo $tmp_mjd | rev | cut -d' ' -f1 |rev) - -svn update -svn add $mjd -svn commit -m "$thistime" diff --git a/bin/speclog_update b/bin/speclog_update deleted file mode 100755 index 6193c8763..000000000 --- a/bin/speclog_update +++ /dev/null @@ -1,106 +0,0 @@ -#!/bin/sh -#------------------------------------------------------------------------------ -# Script to update the "speclog" product for one or more MJDs -# from the astrolog directory. Files of interest are copied from -# $ASTROLOG_DIR/$MJD to $SPECLOG_DIR/$MJD. Then a "cvs add" and "cvs commit" -# are performed in the $SPECLOG_DIR directory. -# -# Examples: -# Update the relevant log files from $ASTROLOG_DIR/52780 to $SPECLOG_DIR/52780: -# % speclog_update 52780 -# Do the same for the next three MJDs: -# % speclog_update 52781 52782 52783 -# -# D. Schlegel, Princeton, 18 Jun 2003 -# -# Added a "-forcecvs" option. CPL 2008-05-30 -# -#------------------------------------------------------------------------------ - -#------------------------------------------------------------------------------ -# Test that certain environment variables are already set. - -echo Begin SPECLOG_UPDATE at `date` - -if [ -z "$ASTROLOG_DIR" ] ; then - echo "ASTROLOG_DIR must be set!" - exit -fi - -if [ -z "$SPECLOG_DIR" ] ; then - echo "SPECLOG_DIR must be set!" - exit -fi - -if [ -z "$CVS_RSH" ] ; then - echo "CVS_RSH must be set!" - exit -fi - -if [ $ASTROLOG_DIR == $SPECLOG_DIR ] ; then - echo "ASTROLOG_DIR and SPECLOG_DIR are identical, so do not do anything" - exit -fi - -if [ ! -d $SPECLOG_DIR/CVS ] ; then - echo "Directory $SPECLOG_DIR/CVS not found, so do not do anything" - exit -fi - -datestring=`date` - -# Allow -forcecvs as a 1st argument, to recover from situations where the files -# were copied but were not added to CVS. -if test "$1" == "-forcecvs"; then - forcecvs=yes - shift 1 -fi - -thismjd=$1 -while [ -n "$thismjd" ] ; do - echo Working on MJD=$thismjd - indir=$ASTROLOG_DIR/$thismjd - outdir=$SPECLOG_DIR/$thismjd - - if [ -d $indir ] ; then - # First find the files that we want to copy - files=`( \cd $indir; \ls guiderMon-$thismjd.par idWeather-$thismjd.par plPlugMapM-*.par sdHdrFix-$thismjd.par 2> /dev/null)` - - # Only continue if there are any files of interest in this directory. - if [ -n "$files" ] ; then - - # Create the output directory, if not already there - if [ ! -d $outdir -o "$forcecvs" == "yes" ] ; then - if [ ! -d $outdir ]; then - echo Make directory $outdir - \mkdir $outdir - fi - (cd $SPECLOG_DIR; cvs add $thismjd) - (cd $SPECLOG_DIR; cvs commit -m "Auto-added on $datestring" $thismjd) - else - echo Dir already exists $outdir - fi - - for thisfile in $files; do - if [ ! -e "$outdir/$thisfile" -o "$forcecvs" == "yes" ] ; then - if [ ! -e "$outdir/$thisfile" ]; then - echo Adding file $outdir/$thisfile - \cp $indir/$thisfile $outdir/$thisfile - fi - (cd $outdir; cvs add $thisfile) - (cd $outdir; cvs commit -m "Auto-added on $datestring" $thisfile) - else - echo File already exists $outdir/$thisfile - fi - done - else - echo No files of interest in dir=$indir - fi - fi - shift 1 - thismjd=$1 -done - -echo End SPECLOG_UPDATE at `date` - -#------------------------------------------------------------------------------ diff --git a/bin/spplan b/bin/spplan new file mode 100755 index 000000000..09e6ea218 --- /dev/null +++ b/bin/spplan @@ -0,0 +1,94 @@ +#!/usr/bin/env python3 +from boss_drp.prep.spplan import spplan2d, spplan1d +from boss_drp.utils import load_env + +from sdss_access import Access +import argparse + + +if __name__ == "__main__": + + parser = argparse.ArgumentParser(description='Produce the spPlan2d and spPlancomb files for the pipeline run') + + + General = parser.add_argument_group(title='General', description='General Setup Options') + General.add_argument('--skip2d', help='Skip spplan2d', action='store_true') + General.add_argument('--skip1d', help='Skip spplan1d', action='store_true') + General.add_argument('--topdir', help='Base run2d directory to BOSS_SPECTRO_REDUX environmental variable') + General.add_argument('--run2d', help='Run2d to environmental variable') + General.add_argument('--lco', help='Build Run files for LCO', action='store_true') + General.add_argument('--apo', help=argparse.SUPPRESS, action='store_true') + General.add_argument('--logfile', help='Optional logfile (Including path)') + General.add_argument('--verbose', help='Provide information about nonutlized frames') + General.add_argument('-c', '--clobber', help='overwrites previous plan file', action='store_true') + General.add_argument('--release', help='sdss_access data release (defaults to sdsswork), required if you do not have proprietary access, otherwise see https://sdss-access.readthedocs.io/en/latest/auth.html#auth', default='sdsswork') + General.add_argument('--remote', help='allow for remote access to data using sdss-access', action='store_true') + General.add_argument('--override_manual',help='Override/clobber manually edited plan', action='store_true') + + + Filter_grp = parser.add_argument_group(title='MJD/Field Filtering', description='MJD/Field Filtering Options') + Filter_grp.add_argument('--mjd', nargs='*', help = 'Use data from these MJDs.') + Filter_grp.add_argument('--mjdstart', help = 'Starting MJD') + Filter_grp.add_argument('--mjdend', help = 'Ending MJD') + + Filter_grp.add_argument('--field', nargs='*', help = 'Use data from these fields.') + Filter_grp.add_argument('--fieldstart', help = 'Starting Field') + Filter_grp.add_argument('--fieldend', help = 'Ending Field') + + Filter_grp.add_argument('--legacy', help = 'Include legacy (BOSS/eBOSS) plates', action='store_true') + Filter_grp.add_argument('--plates', help = 'Include SDSS-V plates', action='store_true') + Filter_grp.add_argument('--fps', help = 'Include FPS Fields', action='store_true') + Filter_grp.add_argument('--sdssv', help = 'Include both SDSS-V Fields & Plates', action='store_true') + Filter_grp.add_argument('--no_commissioning', help = 'Exclude SDSS-V FPS Commission Fields', action='store_true') + Filter_grp.add_argument('--no_dither', help = 'Exclude Dither fields', action='store_true') + + + + run2d_grp = parser.add_argument_group(title='RUN2D', description='spPlan2d Setup Options') + run2d_grp.add_argument('--matched_flats', help = 'Require Flat from a field/plate', action='store_true') + run2d_grp.add_argument('--nomatched_arcs', help = 'Allow Arc from another field/plate', action='store_true') + run2d_grp.add_argument('--minexp', help = 'Min Science Exposures in Plan (default=1)', default=1) + #run2d_grp.add_argument('--single_flat', help = 'Only find the closest flat calibration frame', action='store_true') + run2d_grp.add_argument('--multiple_flat', help = 'Find all possible flat calibration frames', action='store_true') + run2d_grp.add_argument('--multiple_arc', help = 'Find all possible arc calibration frames', action='store_true') + run2d_grp.add_argument('--manual_noarc', help = 'if nomatched_arcs is False, builds spplan with unmatched arcs and mark as manual', action='store_true') + + + run1d_grp = parser.add_argument_group(title='RUN1D', description='spPlancomb Setup Options') + run1d_grp.add_argument('--plate_epoch', help = 'Use a variable max epoch length for plate coadd', action='store_true') + run1d_grp.add_argument('--quick', help = 'Use the list of new spPlan2d as a filter for fields', action='store_true') + + args = parser.parse_args() + + if args.apo: + args.lco = False + + if args.sdssv: + args.fps = True + args.plates = True + + if args.release != 'sdsswork': + if args.release not in Access().get_available_releases(): + parser.exit(status=0, message='ERORR: '+args.release+' is not a valid release') + else: + if args.remote is True: + try: + Access().remote() + except: + parser.exit(status=0, message='ERROR: No netrc file found. see https://sdss-access.readthedocs.io/en/latest/auth.html#auth') + + if args.run2d is None: + args.run2d = load_env('RUN2D') + if args.topdir is None: + args.topdir = load_env('BOSS_SPECTRO_REDUX') + + args.no_remote = not args.remote + args.single_arc = not args.multiple_arc + args.single_flat = not args.multiple_flat + + if not args.skip2d: + plans2d = spplan2d(returnlist=args.quick, **vars(args)) + if not args.skip1d: + if not args.quick: + plans2d = None + spplan1d(plans = plans2d, **vars(args)) diff --git a/bin/spplan_epoch b/bin/spplan_epoch new file mode 100755 index 000000000..e909cfa93 --- /dev/null +++ b/bin/spplan_epoch @@ -0,0 +1,72 @@ +#!/usr/bin/env python3 +from boss_drp.prep.spplan_epoch import spplancombin +from boss_drp.utils import load_env + +from sdss_access import Access + + +import argparse +from os import getenv, environ +import os.path as ptt +from sys import argv + + + +if __name__ == '__main__' : + parser = argparse.ArgumentParser( + prog=ptt.basename(argv[0]), + description='Builds the spPlancombepoch files') + parser.add_argument('--topdir', help = 'Override value for the environment variable $BOSS_SPECTRO_REDUX.', required=False) + parser.add_argument('--run2d', help = 'Override value for the environment variable $RUN2D', required=False) + parser.add_argument('--run1d', help = 'Override value for the environment variable $RUN1D', required=False) + parser.add_argument('--mjd', help = 'Use data from these MJDs.', required=False) + parser.add_argument('--mjdstart', help = 'Starting MJD', required=False) + parser.add_argument('--mjdend', help = 'Ending MJD', required=False) + parser.add_argument('--field', help = "Look for the input data files in topdir/fieldid; default to search all subdirectories. Note that this need not be integer-valued, but could be for example '0306_test'.", required=False) + parser.add_argument('--fieldst', help = "Starting fieldid", required=False, dest='fieldstart') + parser.add_argument('--fieldstart', help = argparse.SUPPRESS) + parser.add_argument('--fieldend', help = "Ending fieldid", required=False) + parser.add_argument('--fps', help="Only produce epoch coadds for FPS Fields (Fields>16000)",action='store_true') + parser.add_argument('--sdssv', help="Only produce epoch coadds for SDSS-V Fields (Fields>15000)",action='store_true') + parser.add_argument('--clobber', help = "If set, then over-write conflicting plan files", action='store_true', required=False) + parser.add_argument('--minexp', help = "Set minimum number of Science Frames for plan creation", required=False, default= 1) + parser.add_argument('--lco', help = "Create Plans for LCO", required=False, action='store_true') + parser.add_argument('--apo', help = argparse.SUPPRESS, required=False, action='store_true') + parser.add_argument('--logfile', '-l', help="File for logging") + parser.add_argument('--abandoned',action='store_true', help="Create plans for abandoned epochs") + parser.add_argument('--started',action='store_true', help="Create plans for started epochs (including unfinished)") + parser.add_argument('--min_epoch_len', help="minimum length of epoch required to produce plan", type=int, default = 0) + parser.add_argument('--release', required=False, help='sdss_access data release (defaults to sdsswork), required if you do not have proprietary access, otherwise see https://sdss-access.readthedocs.io/en/latest/auth.html#auth', default='sdsswork') + parser.add_argument('--remote', help='allow for remote access to data using sdss-access', action='store_true') + + args = parser.parse_args() + + + if args.fps is True: + if args.fieldstart is None: + args.fieldstart = 16000 + if args.sdssv: + if args.fieldstart is None: + args.fieldstart = 15000 + + if args.release != 'sdsswork': + if args.release not in Access().get_available_releases(): + parser.exit(status=0, message='ERORR: '+args.release+' is not a valid release') + else: + if args.remote is True: + try: + Access().remote() + except: + parser.exit(status=0, message='ERROR: No netrc file found. see https://sdss-access.readthedocs.io/en/latest/auth.html#auth') + + if args.run2d is None: + args.run2d = load_env('RUN2D') + if args.topdir is None: + args.topdir = load_env('BOSS_SPECTRO_REDUX') + + + args.no_remote = not args.remote + + spplancombin(**vars(args)) + + diff --git a/bin/spplan_target b/bin/spplan_target new file mode 100755 index 000000000..cddb63924 --- /dev/null +++ b/bin/spplan_target @@ -0,0 +1,77 @@ +#!/usr/bin/env python3 +from boss_drp.prep.spplan_target import batch, CustomCoadd +from boss_drp.utils import load_env + +from os import getenv, makedirs +import os.path as ptt +import sys +import argparse + +######################## +if __name__ == '__main__' : + + parser = argparse.ArgumentParser( + prog=ptt.basename(sys.argv[0]), + description='Build CatalogID Combine Plan') + + group = parser.add_mutually_exclusive_group(required=True) + group.add_argument('--manual', help = 'Manaully run a Coadd Schema (from coaddfile if only name is set)', action ='store_true') + group.add_argument('--batch', help = 'Batch run all active Coadd Schema in batch file located {topdir}/{run2d}/{name}', action='store_true') + + parser.add_argument('--name', help = 'Name of Custom Coadd') + parser.add_argument('--coaddfile', default = None, help = 'File of store Coadding Schema') + + parser.add_argument('--topdir', help = 'Override value for the environment variable $BOSS_SPECTRO_REDUX.', required=False) + parser.add_argument('--run2d', help = 'Override value for the environment variable $RUN2D', required=False) + parser.add_argument('--run1d', help = 'Override value for the environment variable $RUN1D', required=False) + parser.add_argument('--clobber', help = "If set, then over-write conflicting plan files", action='store_true', required=False) + parser.add_argument('--logfile', help="File for logging") + + parser.add_argument('--DR', action = 'store_true', help = 'DR/IPL Batch Coadding') + parser.add_argument('--cartons', nargs='*', help = "list of cartons") + parser.add_argument('--catalogids', nargs='*', help = "list of sdss_ids (or catalogids)") + parser.add_argument('--program', nargs='*', help = 'list of programs') + parser.add_argument('--mjd', help = 'Use data from these MJDs.', nargs='*', required=False) + parser.add_argument('--mjdstart', help = 'Starting MJD', required=False) + parser.add_argument('--mjdend', help = 'Ending MJD', required=False) + parser.add_argument('--coadd_mjdstart', help = 'First Coadd MJD to include', required=False) + parser.add_argument('--rerun1d', action = 'store_true', help = 'Provides flag for coadd to be rerun though 1D analysis') + parser.add_argument('--use_catid', '-u', action = 'store_true', help='Uses CatalogID rather then sdss_id') + parser.add_argument('--use_firstcarton', action = 'store_true', help='Use Firstcarton only for carton match (dont look at db)') + parser.add_argument('--useDB', action = 'store_true', help='Use sdss targetdb instead of the Semaphore targeting flag (if not use_firstcarton)') + parser.add_argument('--lco', help = "Create Plans for LCO", required=False, action='store_true') + parser.add_argument('--apo', help = "Create Plans for APO", required=False, action='store_true') + + args = parser.parse_args() + + + if args.lco: + obs = 'lco' + elif args.apo: + obs = 'apo' + else: + obs = None + + + if args.run2d is None: + args.run2d = load_env('RUN2D') + if args.topdir is None: + args.topdir = load_env('BOSS_SPECTRO_REDUX') + + if args.batch is True: + batch(args.topdir, args.run2d, args.run1d, DR = args.DR, clobber=args.clobber, logfile=args.logfile, obs=obs, + coaddfile=args.coaddfile, name=args.name, use_catid=args.use_catid, use_firstcarton=args.use_firstcarton, + coadd_mjdstart = args.coadd_mjdstart, usedb=args.useDB) + else: + if ((args.DR is False) & (args.cartons is None) & (args.mjd is None) & (args.mjdstart is None) & + (args.mjdend is None) & (args.rerun1d is False) & (args.program is None)) : + batch(args.topdir, args.run2d, args.run1d, DR = False, clobber=args.clobber, logfile=args.logfile, obs=obs, + coaddfile=args.coaddfile, name=args.name, use_catid=args.use_catid, use_firstcarton=args.use_firstcarton, + coadd_mjdstart = args.coadd_mjdstart, usedb=args.useDB) + else: + CustomCoadd(args.name, args.topdir, args.run2d, args.run1d, cartons=args.cartons, catalogids=args.catalogids, obs=obs, + clobber=args.clobber, logfile=args.logfile, mjd=args.mjd, mjdstart=args.mjdstart, mjdend=args.mjdend, + program=args.program,rerun1d=args.rerun1d, use_catid=args.use_catid, use_firstcarton=args.use_firstcarton, + coadd_mjdstart = args.coadd_mjdstart, usedb=args.useDB) + + diff --git a/bin/spplan_trace b/bin/spplan_trace new file mode 100755 index 000000000..c22151086 --- /dev/null +++ b/bin/spplan_trace @@ -0,0 +1,56 @@ +#!/usr/bin/env python3 +from boss_drp.utils import load_env +from boss_drp.prep.spplan_trace import spplanTrace + +from sdss_access import Access + +import argparse + +if __name__ == "__main__": + + parser = argparse.ArgumentParser(description='Produces spPlanTrace') + + General = parser.add_argument_group(title='General', description='General Setup Options') + General.add_argument('--topdir', help='Topdir to override the BOSS_SPECTRO_REDUX environmental variable') + General.add_argument('--run2d', help='Run2d to environmental variable') + General.add_argument('--mjd_plans', help='Only build plans for MJDs with spPlan2d',action='store_true') + General.add_argument('--lco', help='Build Run files for LCO', action='store_true') + General.add_argument('--apo', help=argparse.SUPPRESS, action='store_true') + General.add_argument('--logfile', help='Optional logfile (Including path)') + General.add_argument('--verbose', help='Provide information about nonutlized frames',action='store_true') + General.add_argument('-c', '--clobber', help='overwrites previous plan file', action='store_true') + General.add_argument('--release', help='sdss_access data release (defaults to sdsswork), required if you do not have proprietary access, otherwise see https://sdss-access.readthedocs.io/en/latest/auth.html#auth', default='sdsswork') + General.add_argument('--remote', help='allow for remote access to data using sdss-access', action='store_true') + General.add_argument('--override_manual',help='Override/clobber manually edited plan', action='store_true') + + + + Filter_grp = parser.add_argument_group(title='MJD/Field Filtering', description='MJD/Field Filtering Options') + Filter_grp.add_argument('--mjd', nargs='*', help = 'Use data from these MJDs.') + Filter_grp.add_argument('--mjdstart', help = 'Starting MJD') + Filter_grp.add_argument('--mjdend', help = 'Ending MJD') + + args = parser.parse_args() + + if args.apo: + args.lco = False + + if args.release != 'sdsswork': + if args.release not in Access().get_available_releases(): + parser.exit(status=0, message='ERORR: '+args.release+' is not a valid release') + else: + if args.remote is True: + try: + Access().remote() + except: + parser.exit(status=0, message='ERROR: No netrc file found. see https://sdss-access.readthedocs.io/en/latest/auth.html#auth') + + + if args.run2d is None: + args.run2d = load_env('RUN2D') + if args.topdir is None: + args.topdir = load_env('BOSS_SPECTRO_REDUX') + + args.no_remote = not args.remote + + spplanTrace(**vars(args)) diff --git a/bin/spredrobot.sh b/bin/spredrobot.sh deleted file mode 100644 index e6aead7eb..000000000 --- a/bin/spredrobot.sh +++ /dev/null @@ -1,98 +0,0 @@ -#! /bin/sh -#------------------------------------------------------------------------------ -# Script to reduce new spectro data, as reported by the rsync robot. -# -# Once the data is copied over, build plan files under the directories -# $BOSS_SPECTRO_REDUX/$PLATE -# then launch "batch2d" and "batch1d" to reduce them. Run the same version -# of the idlspec2d product as is set up for this script. For example, even -# if v4_9 is declared current, run v4_8 if that is what's set up when this -# script is run. So, you should run "sprobot_start" from the version of -# the code that you want to reduce the data. -# -# D. Schlegel, Princeton, 19 Dec 2000 -#------------------------------------------------------------------------------ -# Set file names. - -astrologdir=$ASTROLOG_DIR -toprawdir=$BOSS_SPECTRO_DATA -topoutdir=$BOSS_SPECTRO_REDUX - -copiedMJDs=$toprawdir/copiedMJDs.list -plannedMJDs=$topoutdir/plannedMJDs.list - -#------------------------------------------------------------------------------ -# Test that certain environment variables are already set. - -if [ -z "$BOSS_SPECTRO_DATA" ] ; then - echo "BOSS_SPECTRO_DATA must be set!" - exit -fi - -#------------------------------------------------------------------------------ -# If $topoutdir is not defined, then exit. - -if [ -z "$topoutdir" ] ; then - echo "SPREDROBOT: TOPOUTDIR must be set!" - exit -fi - -echo "" -echo "-------------------------------------------------------------------------------" -echo "SPREDROBOT: Launched at "`date` UID=$UID PPID=$PPID -echo "IDLSPEC2D_DIR="$IDLSPEC2D_DIR -echo "IDLUTILS_DIR="$IDLUTILS_DIR - -#------------------------------------------------------------------------------ -# Find copied mjds which have not been reduced - -mjds=`fgrep -v -f $plannedMJDs $copiedMJDs | sort -n | uniq` -mjdlist=`echo $mjds | perl -ane 'print join(",",split())'` - -#------------------------------------------------------------------------------ -# Build the plan files if there is new data. -# We might be called fairly often, so short circuit if we can - -if [ ! "$mjds" ] ; then - echo "SPREDROBOT: Exited at "`date` UID=$UID PPID=$PPID - exit 0 -fi - -echo SPREDROBOT: MJDLIST=$mjdlist -echo "" -echo SPREDROBOT: "spplan2d, topoutdir='$topoutdir', mjd=["$mjdlist"]" -echo "spplan2d, topoutdir='$topoutdir', mjd=["$mjdlist"]" | idl -echo "" -echo SPREDROBOT: "spplan1d, topindir='$topoutdir', mjd=["$mjdlist"]" -echo "spplan1d, topindir='$topoutdir', mjd=["$mjdlist"]" | idl - - -# Register that we have consumed some mjds. -for m in $mjds; do - echo $m >> $plannedMJDs -done - -#------------------------------------------------------------------------------ -# Decide what the current version of idlspec2d is, and run that version -# if it is a UPS-declared version. - -vers=`echo "print,idlspec2d_version()" | idl 2> /dev/null` -if [ ${vers:0:5} != NOCVS ] ; then upsversion=$vers ; fi - -#------------------------------------------------------------------------------ -# Batch process 2D first, wait for it to complete, then batch process 1D -# in the background. The calls to the 2d and 1d scripts will exit if -# those scripts are already running. - - echo "SPREDROBOT: Current time "`date` UID=$UID PPID=$PPID - sprobot2d.sh ",topdir='$topoutdir', upsversion='$upsversion', nice=19" - cd $BOSS_SPECTRO_REDUX - echo "platelist, /create" | idl - sprobot1d.sh ",topdir='$topoutdir', upsversion='$upsversion', nice=19" & - -#------------------------------------------------------------------------------ - -echo "SPREDROBOT: Finished at "`date` UID=$UID PPID=$PPID - -exit -#------------------------------------------------------------------------------ diff --git a/bin/spredrobot_start b/bin/spredrobot_start deleted file mode 100755 index 1ccc8b47b..000000000 --- a/bin/spredrobot_start +++ /dev/null @@ -1,180 +0,0 @@ -#!/bin/bash -f -#------------------------------------------------------------------------------ -# Script to start the processing part of the Spectro-Robot (as a cron job). -# Logging information is written to the file "$BOSS_SPECTRO_REDUX/sprobot.log". -# -# For ssh to work, you need the environment variables SSH_AUTH_SOCK -# and SSH_AGENT_PID set. -# -# Note that the same version of idlspec2d used to start this script is -# used to reduce all the data (passed throught the UPSVERSION keyword -# from the "sprobot.sh" script). The only exception is if the current -# version is not a UPS version, but just NOCVS; in that case, the version -# declared current on each remote host is used. -# -# D. Schlegel, Princeton, 20 Dec 2000 -#------------------------------------------------------------------------------ -# If a second argument is give, such as "sprobot_start plate-mapper", or -# "sprobot_start observer@plate-mapper.apo.nmsu.edu", then run this command -# remotely on the machine "plate-mapper". - -if [ $# = 1 ] ; then - ssh $1 spredrobot_start - exit -fi - -#------------------------------------------------------------------------------ -# Set file names used internally in this script. - -cronfile=/tmp/$USER.spredrobot.cron -SPRLOG=$BOSS_SPECTRO_REDUX/spredrobot.log - -#------------------------------------------------------------------------------ -# Test that certain environment variables are already set. - -if [ -z "$SSH_AUTH_SOCK" ] ; then - echo "SSH_AUTH_SOCK must be set!" - exit -fi - -if [ -z "$SSH_AGENT_PID" ] ; then - echo "SSH_AGENT_PID must be set!" - exit -fi - -if [ -z "$IDLSPEC2D_DIR" ] ; then - echo "IDLSPEC2D_DIR must be set!" - exit -fi - -if [ -z "$IDLUTILS_DIR" ] ; then - echo "IDLUTILS_DIR must be set!" - exit -fi - -if [ -z "$IDL_DIR" ] ; then - echo "IDL_DIR must be set!" - exit -fi - -if [ -z "$IDL_PATH" ] ; then - echo "IDL_PATH must be set!" - exit -fi - -if [ -z "$ASTROLOG_DIR" ] ; then - echo "ASTROLOG_DIR must be set!" - exit -fi - -if [ -z "$SPECLOG_DIR" ] ; then - echo "SPECLOG_DIR must be set!" - exit -fi - -if [ -z "$SPECFLAT_DIR" ] ; then - echo "SPECFLAT_DIR must be set!" - exit -fi - -if [ -z "$BOSS_SPECTRO_DATA" ] ; then - echo "BOSS_SPECTRO_DATA must be set!" - exit -fi - -if [ -z "$BOSS_SPECTRO_REDUX" ] ; then - echo "BOSS_SPECTRO_REDUX must be set!" - exit -fi - -# If the PATH is too long, then abort. -if [ `echo $PATH | wc -c` -gt 1020 ] ; then - echo "PATH is too long (more than 1020 characters)" - exit -fi - -# Make sure someone can hear cron scream. -if [ -z "$MAILTO" ] ; then - echo "MAILTO must be set!" - exit -fi - -#------------------------------------------------------------------------------ -# Insist that we have set up the cvs version of speclog. This is because -# these scripts automatically check in new files to that product. - -echo - -if [ "`speclog_version`" != "NOCVS: cvs" ] ; then - echo "The cvs version of speclog must be set up!" - exit -fi - -#------------------------------------------------------------------------------ -# Don't allow this to be run from the machine "sdsshost"! - -echo - -if [ `uname -n` = "sdsshost" ] ; then - echo "You are not allowed to launch Spectro-Robot from sdsshost!" - exit -fi - -#------------------------------------------------------------------------------ -# Test to see if the cron job is already loaded. If so, then quit. - -qrun=`crontab -l | awk 'BEGIN{begin = 0; end = 0}{if ($2 == "SPREDROBOT" && $3 == "BEGIN") {begin = 1}; if ($2 == "SPREDROBOT" && $3 == "END" && begin == 1) {end = 1}}END{if (begin == 1 && end == 1){print "1"} else {print "0"}}'` -if [ $qrun = 1 ] ; then - echo "The Spectro-Robot cron job is already running." - exit -fi - -#------------------------------------------------------------------------------ -# Decide what the current version of idlspec2d is. - -# vers=`echo $SETUP_IDLSPEC2D | awk '{print $2}'` -vers=`echo "print,idlspec2d_version()" | idl 2> /dev/null` - -#------------------------------------------------------------------------------ -# Construct the cron file to be loaded. Start with the existing cron file, -# then append more to it. - -# Print the cron tab w/out the first 3 lines and w/out the SPREDROBOT lines. -crontab -l | awk 'BEGIN{doprint = 1}{if ($2 == "SPREDROBOT" && $3 == "BEGIN") {doprint = 0}; if (NR > 3 && doprint == 1) {print $0}; if ($2 == "SPREDROBOT" && $3 == "END") {doprint = 1} }' > $cronfile - -echo "# SPREDROBOT BEGIN "$vers >> $cronfile -echo "MAILTO=$MAILTO" >> $cronfile -echo "PATH=$PATH" >> $cronfile -echo "SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> $cronfile -echo "SSH_AGENT_PID=$SSH_AGENT_PID" >> $cronfile -echo "IDLSPEC2D_DIR=$IDLSPEC2D_DIR" >> $cronfile -echo "IDLUTILS_DIR=$IDLUTILS_DIR" >> $cronfile -echo "IDL_DIR=$IDL_DIR" >> $cronfile -echo "IDL_PATH=$IDL_PATH" >> $cronfile -echo "ASTROLOG_DIR=$ASTROLOG_DIR" >> $cronfile -echo "SPECLOG_DIR=$SPECLOG_DIR" >> $cronfile -echo "SPECFLAT_DIR=$SPECFLAT_DIR" >> $cronfile -echo "BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA" >> $cronfile -echo "BOSS_SPECTRO_REDUX=$BOSS_SPECTRO_REDUX" >> $cronfile -echo "# This job will run at 12:59 am every day." >> $cronfile -echo "59 0 * * * \mv $SPRLOG.1dayold $SPRLOG.2dayold; \mv $SPRLOG $SPRLOG.1dayold" >> $cronfile -echo "# This job will run at 1:00 am every day." >> $cronfile -echo "0 1 * * * sprobotlist.sh >> $SPRLOG 2>&1" >> $cronfile -echo "# This job will run every 30 minutes." >> $cronfile -echo "*/30 * * * * spredrobot.sh >> $SPRLOG 2>&1" >> $cronfile -# echo "# This job will run at 45 minutes past each hour." >> $cronfile -# if [ ${vers:0:5} != NOCVS ] ; then upsversion=$vers ; fi -# echo "45 * * * * sprobot1d.sh \",topdir=\'$BOSS_SPECTRO_REDUX\', upsversion=\`$upsversion\`, nice=19\" >> $SPRLOG 2>&1" >> $cronfile -echo "# This job will run every 10 minutes to keep the disk automounter up." >> $cronfile -# echo "*/10 * * * * spamdup 2> /dev/null" >> $cronfile -echo "# SPREDROBOT END" >> $cronfile - -#------------------------------------------------------------------------------ -# Load this new cron file. - -crontab $cronfile -echo "Now running Spectro-Robot version "$vers"." - -\rm $cronfile - -#------------------------------------------------------------------------------ diff --git a/bin/spredrobot_stop b/bin/spredrobot_stop deleted file mode 100755 index 2df1f1e41..000000000 --- a/bin/spredrobot_stop +++ /dev/null @@ -1,44 +0,0 @@ -#!/bin/bash -f -#------------------------------------------------------------------------------ -# Script to stop the processing half of Spectro-Robot (e.g., un-load the cron job). -# -# D. Schlegel, Princeton, 20 Dec 2000 -#------------------------------------------------------------------------------ - -#------------------------------------------------------------------------------ -# If a second argument is give, such as "spredrobot_stop plate-mapper", or -# "spredrobot_stop observer@plate-mapper.apo.nmsu.edu", then run this command -# remotely on the machine "plate-mapper". - -if [ $# = 1 ] ; then - ssh $1 spredrobot_stop - exit -fi - -#------------------------------------------------------------------------------ -# Test to see if the cron job is not loaded. If not, then quit. - -echo -qrun=`crontab -l | awk 'BEGIN{begin = 0; end = 0}{if ($2 == "SPREDROBOT" && $3 == "BEGIN") {begin = 1}; if ($2 == "SPREDROBOT" && $3 == "END" && begin == 1) {end = 1}}END{if (begin == 1 && end == 1){print "1"} else {print "0"}}'` -if [ $qrun = 0 ] ; then - echo "The Spectro-Robot cron job is not running." - exit -fi - -#------------------------------------------------------------------------------ -# Construct the cron file to be loaded. Use the existing cron file, -# but deleting the lines for SPREDROBOT. - -cronfile=/tmp/$USER.spredrobot.cron -# Print the cron tab w/out the first 3 lines and w/out the SPREDROBOT lines. -crontab -l | awk 'BEGIN{doprint = 1}{if ($2 == "SPREDROBOT" && $3 == "BEGIN") {doprint = 0}; if (NR > 3 && doprint == 1) {print $0}; if ($2 == "SPREDROBOT" && $3 == "END") {doprint = 1} }' > $cronfile - -#------------------------------------------------------------------------------ -# Load this new cron file - -crontab $cronfile -echo "Spectro-Robot stopped." - -\rm $cronfile - -#------------------------------------------------------------------------------ diff --git a/bin/sprobot1d.sh b/bin/sprobot1d.sh deleted file mode 100755 index 273c07bca..000000000 --- a/bin/sprobot1d.sh +++ /dev/null @@ -1,31 +0,0 @@ -#! /bin/sh -#------------------------------------------------------------------------------ -# Script to start the Spectro-1D processing. -# -# This script takes one argument, which contains the command-line arguments -# for the BATCH1D procedure. For example: -# sprobot1d.sh ",topdir='/u/dss/spectro',upsvers='v4_10_0', nice=19" -# -# D. Schlegel, Princeton, 19 Dec 2000 -#------------------------------------------------------------------------------ - -# Exit if this process is already running. - -n=`\ps -elf | grep sprobot1d.sh | grep -v grep | wc -l` -if [ X"$n" != X"" -a "$n" -gt 2 ]; then - echo "SPROBOT1D: BATCH1D already running at "`date` - exit -fi -echo "SPROBOT1D: Launched at "`date` UID=$UID PPID=$PPID -echo "IDLUTILS_DIR="$IDLUTILS_DIR - -# Do not put this in the background, because we search for the "sprobot1d.sh" -# process to determine if this is already running! - -echo SPROBOT1D: batch1d $1 -echo batch1d $1 | idl - -echo "SPROBOT1D: Finished at "`date` UID=$UID PPID=$PPID - -exit -#------------------------------------------------------------------------------ diff --git a/bin/sprobot2d.sh b/bin/sprobot2d.sh deleted file mode 100755 index b98d3265f..000000000 --- a/bin/sprobot2d.sh +++ /dev/null @@ -1,32 +0,0 @@ -#! /bin/sh -#------------------------------------------------------------------------------ -# Script to start the Spectro-2D processing. -# -# This script takes one argument, which contains the command-line arguments -# for the BATCH2D procedure. For example: -# sprobot2d.sh ",topdir='/home/data/2d_v4', nice=10" -# -# D. Schlegel, Princeton, 19 Dec 2000 -#------------------------------------------------------------------------------ - -# Exit if this process is already running. - -n=`\ps -elf | grep sprobot2d.sh | grep -v grep | wc -l` -if [ X"$n" != X"" -a "$n" -gt 2 ]; then - echo "SPROBOT2D: BATCH2D already running at "`date` - exit -fi -echo "SPROBOT2D: Launched at "`date` UID=$UID PPID=$PPID -echo "IDLSPEC2D_DIR="$IDLSPEC2D_DIR -echo "IDLUTILS_DIR="$IDLUTILS_DIR - -# Do not put this in the background, because we search for the "sprobot2d.sh" -# process to determine if this is already running! - -echo SPROBOT2D: batch2d $1 -echo batch2d $1 | idl - -echo "SPROBOT2D: Finished at "`date` UID=$UID PPID=$PPID - -exit -#------------------------------------------------------------------------------ diff --git a/bin/sprobot_status b/bin/sprobot_status deleted file mode 100755 index 58b8e5476..000000000 --- a/bin/sprobot_status +++ /dev/null @@ -1,31 +0,0 @@ -#!/bin/bash -f -#------------------------------------------------------------------------------ -# Script to check the status of Spectro-Robot. -# -# D. Schlegel, Princeton, 20 Dec 2000 -#------------------------------------------------------------------------------ - -#------------------------------------------------------------------------------ -# If a second argument is give, such as "sprobot_status plate-mapper", or -# "sprobot_status observer@plate-mapper.apo.nmsu.edu", then run this command -# remotely on the machine "plate-mapper". - -if [ $# = 1 ] ; then - ssh $1 sprobot_status - exit -fi - -#------------------------------------------------------------------------------ -# Test to see if the cron job is already loaded. - -echo -vers=`crontab -l | awk 'BEGIN{begin = 0; end = 0}{if ($2 == "SPROBOT" && $3 == "BEGIN") {begin = 1; vers = $4}; if ($2 == "SPROBOT" && $3 == "END" && begin == 1) {end = 1}}END{if (begin == 1 && end == 1){print vers} else {print "0"}}'` -machine=`uname -n` -if [ $vers != "0" ] ; then - echo "Spectro-Robot cron IS running for USER="$USER" MACHINE="$machine"." - echo "Loaded version="$vers"." -else - echo "The Spectro-Robot cron job is NOT running for USER="$USER" MACHINE="$machine"." -fi - -#------------------------------------------------------------------------------ diff --git a/bin/sprobotlist.sh b/bin/sprobotlist.sh deleted file mode 100755 index 1d0baa9db..000000000 --- a/bin/sprobotlist.sh +++ /dev/null @@ -1,28 +0,0 @@ -#! /bin/bash -#------------------------------------------------------------------------------ -# Script to create plate list and summary files once per day. -# -# D. Schlegel, Princeton, 1 Mar 2002 -#------------------------------------------------------------------------------ -# Generate summary files. - -echo "" -echo "-------------------------------------------------------------------------------" -echo "SPROBOTLIST: Started at "`date` -echo "IDLSPEC2D_DIR="$IDLSPEC2D_DIR -echo "IDLUTILS_DIR="$IDLUTILS_DIR - -cd $BOSS_SPECTRO_REDUX -echo "platelist, /create" | idl -echo "platemerge" | idl 2> /dev/null -#echo "platemerge, /public" | idl 2> /dev/null -#echo "platemerge, public='EDR'" | idl 2> /dev/null -#echo "platemerge, public='DR1'" | idl 2> /dev/null -#echo "platemerge, public='DR2'" | idl 2> /dev/null -#echo "platemerge, public='DR3'" | idl 2> /dev/null -#echo "platemerge, public='DR4'" | idl 2> /dev/null -#echo "platemerge, public='DR5'" | idl 2> /dev/null -echo "zplot" | idl 2> /dev/null -echo "platehist" | idl 2> /dev/null - -#------------------------------------------------------------------------------ diff --git a/bin/sxpar.py b/bin/sxpar.py index 71f456325..00f61d4ad 100755 --- a/bin/sxpar.py +++ b/bin/sxpar.py @@ -1,7 +1,9 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 +from boss_drp.utils.sxpar import sxpar +import argparse +import sys +import os -import sys, os, getopt, time -import putils """ sxpar: @@ -14,110 +16,18 @@ """ -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print("usage:") - print("\t%s [-v] fits-file [keyword]" % usageCMD) - - sys.exit(1) - -#### -def sxparRetry(fitsfile, keyword = None, verbose = False, retries = 0): - """call sxpar with retries. To see if the fits wasn't finished writing.""" - while True: - try: - return sxpar(fitsfile, keyword, verbose) - except: - if retries < 0: - raise - retries = retries - 1 - time.sleep(1) - -#### -def sxpar(fitsfile, keyword = None, verbose = False): - """Parse fits header and return output list""" - - isFits = False - output = [] - - if keyword != None: - keyword = keyword.upper() - - f = putils.openRead(fitsfile, mode='rb') - i = 0 - while True: - i += 1 - line = f.read(80).decode("utf-8") - - key = line.split("=")[0].strip() - - if key == "SIMPLE": - isFits = True - continue - if key == "END": - break - - if i > 40 and not isFits: - raise TypeError(fitsfile + " Doesn't look like a fits file -- did not find 'SIMPLE'") - - if keyword == None or key == keyword: - values = line.partition("=")[2].partition("/") -# comment = values[2].strip() - value = values[0].strip().strip("'").strip() - - if verbose: - output.append(line) - elif keyword == None: - output.append(key + " = " + value) - else: - output.append(value) - #fi - - return output - - -#### -def main(argv): - """Parse arguments and run the script""" - - fitsfile = None - verbose = False - keyword = None - - if len(argv) == 0: - usage() - - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(argv, "v") - except: - usage() - - if len(pargs) == 0: - usage() - - for (opt, value) in opts: - if opt == "-v": - verbose = True - - fitsfile = pargs[0] - if len(pargs) > 1: - keyword = pargs[1] - - output = sxpar(fitsfile, keyword, verbose) - - for l in output: - print(l) - - - + if __name__=='__main__': - main(sys.argv[1:]) - - - + parser = argparse.ArgumentParser( + prog=os.path.basename(sys.argv[0]), + description='Simply parse a fits header') + parser.add_argument('fitsfile',help='The fits file to read') + parser.add_argument('keyword',help='Header keyword to parse') + parser.add_argument('-v','--verbose', action='store_true', help='verbose') + args = parser.parse_args() + + output = sxpar(args.fitsfile, args.keyword, args.verbose) + for l in output: + print(l) + + diff --git a/bin/sxpar.pyc b/bin/sxpar.pyc deleted file mode 100644 index c30b521ee..000000000 Binary files a/bin/sxpar.pyc and /dev/null differ diff --git a/bin/sxpar_retry.py b/bin/sxpar_retry.py index a3c368edb..cfaa9d9d3 100755 --- a/bin/sxpar_retry.py +++ b/bin/sxpar_retry.py @@ -1,68 +1,28 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 +from boss_drp.utils.sxpar import sxparRetry -import sys, os, getopt, time -import putils -from sxpar import * -""" +import argparse +import sys +import os +""" sxpar: Simply parse a fits header. Copied from perl "sxpar by D. Finkbeiner 2001 Dec 20". -Can read uncompressed or gz files. - -Written by Gary Kushner (LBL). Oct 2009. """ -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print("usage:") - print("\t%s [-v] fits-file [keyword]" % usageCMD) - - sys.exit(1) - -#### -def main(argv): - """Parse arguments and run the script""" - - fitsfile = None - verbose = False - keyword = None - - if len(argv) == 0: - usage() - - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(argv, "v") - except: - usage() - - if len(pargs) == 0: - usage() - - for (opt, value) in opts: - if opt == "-v": - verbose = True - - fitsfile = pargs[0] - if len(pargs) > 1: - keyword = pargs[1] - - output = sxparRetry(fitsfile, keyword, verbose, retry = 60) - - for l in output: - print(l) - - - + if __name__=='__main__': - main(sys.argv[1:]) - - - + parser = argparse.ArgumentParser( + prog=os.path.basename(sys.argv[0]), + description='Simply parse a fits header, retrying if failed') + parser.add_argument('fitsfile',help='The fits file to read') + parser.add_argument('keyword',help='Header keyword to parse') + parser.add_argument('-v','--verbose', action='store_true', help='verbose') + args = parser.parse_args() + + output = sxparRetry(args.fitsfile, args.keyword, args.verbose, retry = 60) + for l in output: + print(l) + diff --git a/bin/updatePluggingStatus_old b/bin/updatePluggingStatus_old deleted file mode 100755 index ee544a727..000000000 --- a/bin/updatePluggingStatus_old +++ /dev/null @@ -1,340 +0,0 @@ -#!/usr/bin/env python - -import os, os.path, sys, time, getopt, decimal, re -import sxpar - -""" -updatePluggingStatus: - -Interface with plateDb to calculate if a plugging is done with respect to (s/n)^2. It -will optionally load the status values into plateDb. - -The details of the algorithm can be found in the BOSS note "PlateDbDone-v3" which is -located in the "doc" directory of idlspec2d. - -This code could be so much cleaner, if I had more than two days to spend on it. - -Written by Gary Kushner (LBL). March 2010. - -""" - -try: - from platedb.APODatabaseConnection import db - from platedb.db_connection import engine, metadata, Session - from platedb.ModelClasses import * - from sqlalchemy import between - import sqlalchemy -except: - print '\nMake sure to "setup platedb" before running !!!' - print '\n\n' - raise - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print "DEPRECATED -- Use $PLATEDB_DIR/bin/updatePluggingStatus instead\n" - print "usage:" - print "\t%s -t MJD_start-MJD_end -p plugging -d" % usageCMD - print " " - print " -t : Update all the pluggings that had exposures between the give dates." - print " -t 55000-55100" - print " -p : Update the given plugging (e.g. 3874-55278-01)." - print " -d : update plateDb with the new status." - print " -v : verbose output" - - sys.exit(1) - - -#### -class Config: - """Config Info""" - - def __init__(self): - self.cameras = ['b1', 'b2', 'r1', 'r2'] - self.updateDb = False - self.plugging = None - self.mjdStart = None - self.mjdEnd = None - self.verbose = False - - def __str__(self): - return ("cameras " + str(self.cameras) + "\n" + - "UpdateDb: " + str(self.updateDb) + "\n" + - "plugging: " + str(self.plugging) + "\n" + - "mjdStart: " + str(self.mjdStart) + "\n" + - "mjdEnd: " + str(self.mjdEnd) + "\n" + - "self.verbose: " + str(self.verbose)); - - -#### -def parseCmdLine(args): - """Parse command line arguments and return a Config""" - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(sys.argv[1:], "t:p:dv") - except: - print "Illegal option.\n" - usage() - - if len(pargs) != 0: - print "All parameters need to be given using an option switch.\n" - usage() - - cfg = Config() - - # Fill in the config - for (opt, value) in opts: - if opt == "-t": - cfg.mjdStart = value.split("-")[0] - cfg.mjdEnd = value.split("-")[1] - if re.match("^5[56]\d\d\d$", cfg.mjdStart) == None: - print cfg.mjdStart + " is not a valid mjd [55000, 56999].\n" - usage() - if re.match("^5[56]\d\d\d$", cfg.mjdEnd) == None: - print cfg.mjdEnd + " is not a valid mjd [55000, 56999].\n" - usage() - if opt == "-p": # e.g. 3874-55278-01 - cfg.plugging = value - if re.match("^\d{4}-\d{5}-\d\d$", cfg.plugging) == None: - print cfg.plugging + " is not a valid plugging." - print "They look like this 3874-55278-01.\n" - usage() - if opt == "-d": - cfg.updateDb = True - if opt == "-v": - cfg.verbose = True - - # Display config values if verbose - print "Config values: \n" + str(cfg) - - return cfg - - -#### -def findPluggings(session, cfg): - """Find all the plugging objects to deal with""" - - pluggings = [] - - # if we have an mjd range, find all the pluggings with exposures between the range - if cfg.mjdStart != None: - try: - tai_start = int(cfg.mjdStart) * 86400 - tai_end = int(cfg.mjdEnd) * 86400 - if cfg.verbose: - print "TAI_START:TAI_END: " + str(tai_start) + ":" + str(tai_end) - pluggings = session.query(Plugging).with_lockmode('update').join(Observation, Exposure).filter(between(Exposure.start_time, tai_start, tai_end)).all() - except sqlalchemy.orm.exc.NoResultFound: - print "WARNING: No pluggings found in given MJD range !" - pass - except: - print "Error looking for pluggings in MJD Range!" - raise - - # if we have a specific plugging, add that (plPlugMapM-3874-55278-01.par) - if cfg.plugging != None: - try: - p = session.query(Plugging).with_lockmode('update').join(PlPlugMapM).filter(PlPlugMapM.filename=="plPlugMapM-"+cfg.plugging+".par").one() - if not p in pluggings: - pluggings.append(p) - except sqlalchemy.orm.exc.NoResultFound: - print "Warning: Could not find plugging: " + cfg.plugging - pass - except: - print "Error looking for plugging " + cfg.plugging - raise - - return pluggings - - -#### -def getExposures(session, cfg, plugging): - """Find all the Exposure objects for the given plugging""" - - exposures = [] - - try: - exposures = session.query(Exposure).join(Observation).filter(Observation.plugging==plugging).all() - except sqlalchemy.orm.exc.NoResultFound: - print "Could not find any Exposures (CameraFrames) for the pluggings!" - raise - except: - print "Error trying to get Exposures (CameraFrames) for the pluggings!" - raise - - return exposures - -#### -def calculateFlag(session, cfg, plugging, exposures): - """Calculate plugging flag using sum(sn2) and other criteria""" - - # Define some constants - exposureExcellent = 1 - exposureBad = 2 - exposureTest = 3 - exposureText = ["", "Excellent", "Bad", "Test"] - - # Load information that applies to all camera (The values are hard coded to pk) - try: - flagAuto = session.query(PluggingStatus).filter_by(pk=0).one() - flagGood = session.query(PluggingStatus).filter_by(pk=1).one() - flagIncomplete = session.query(PluggingStatus).filter_by(pk=2).one() - flagOverGood = session.query(PluggingStatus).filter_by(pk=3).one() - flagOverIncomplete = session.query(PluggingStatus).filter_by(pk=4).one() - except sqlalchemy.orm.exc.MultipleResultsFound: - print "More than one plugging status value found. Expecting only one! \n\n" - raise - except sqlalchemy.orm.exc.NoResultFound: - print "Could not load a plugging status flag." - raise - except KeyError: # Why do I sometimes get a key error on record not found? Ask SQLAlchemy!! - print "Could not load a plugging status flag. (KeyError)" - raise - except: - print "Problem loading a plugging status flag \n\n" - raise - - if cfg.verbose: - print "Initial plugging status is " + plugging.status.label - - # If the plugging is in an overridden state, then there is nothing for us to do - if plugging.status == flagOverGood or plugging.status == flagOverIncomplete: - return plugging.status - - # Loop over all the cameras - for camName in cfg.cameras: - if cfg.verbose: - print "starting camera " + camName - - # First get some variables from the database - try: - camera = session.query(Camera).filter_by(label=camName).one() - sn2Thresh = session.query(BossSN2Threshold).filter_by(camera=camera).one() - - # Calculate the SN2 - sumsn2 = 0 - goodExposures = 0 - for exposure in exposures: - if exposure.status.pk != exposureExcellent: - if cfg.verbose: - print "exposure " + str(exposure.exposure_no) + " is " + exposureText[exposure.status.pk] - continue - else: - goodExposures += 1 - - if cfg.verbose: - print "exposure " + str(exposure.exposure_no) + " " + camera.label +" sn2 is ", - - try: - cframe = session.query(CameraFrame).filter_by(exposure=exposure).filter_by(camera=camera).one() - # cframe = [x for x in exposure.cameraFrames if x.camera == camera][0] - sn2 = cframe.sn2 - if sn2 > sn2Thresh.sn2_min: - sumsn2 += sn2 - if cfg.verbose: - print str(sn2) + "; sum is " + str(sumsn2) - except sqlalchemy.orm.exc.MultipleResultsFound: - print " " - print "More than one CameraFrame found. Expecting only one! \n\n" - raise - # Why do I sometimes get a key error on record not found? Ask SQLAlchemy!! - except (sqlalchemy.orm.exc.NoResultFound, KeyError): - print "!WARNING: Could not get sn2 from platedb" - pass - except: - print " " - print "Problem loading CameraFrame \n\n" - raise - - # If we don't have enough sn2, the plugging is incomplete - if cfg.verbose: - print "final sumsn2 is " + str(sumsn2) - if sumsn2 < sn2Thresh.sn2_threshold: - return flagIncomplete - - # If we don't have enough exposures, the plugging is incomplete - if cfg.verbose: - print "number of exposures: " + str(len(exposures)) - print "number of good exposures: " + str(goodExposures) - if goodExposures < sn2Thresh.min_exposures: - return flagIncomplete - except: - print "Problem calculating sumsn2.\n" - raise - - # If we get here, then the plugging is done in all cameras - return flagGood - - -#### -def updateFlag(session, cfg, plugging, flag): - """Update plateDb with the flag""" - - try: - plugging.status = flag - except: - print "Error updating plugging flag" - raise - - -#### -def processFlags(session, cfg): - """Main Script""" - - pluggings = findPluggings(session, cfg) - print " " - print "Pluggings Found in plateDb:" - for p in pluggings: - print str(p.plate.plate_id) + "-" + str(p.fscan_mjd) + "-" + str(p.fscan_id) - - for plugging in pluggings: - if cfg.verbose: - print "Starting plugging " + str(plugging.plate.plate_id) + "-" + str(plugging.fscan_mjd) + "-" + str(plugging.fscan_id) - exposures = getExposures(session, cfg, plugging) - if cfg.verbose: - print "Found " + str(len(exposures)) + " exposures" - - flag = calculateFlag(session, cfg, plugging, exposures) - print "Plugging " + str(plugging.plate.plate_id) + "-" + str(plugging.fscan_mjd) + "-" + str(plugging.fscan_id) + " is " + flag.label - - if cfg.updateDb: - print "Updating plateDb with flag" - updateFlag(session, cfg, plugging, flag) - - print "Goodbye!" - - - -#### -def main(argv): - """Handle database connection and call main script""" - - session = None - config = None - - try: - config = parseCmdLine(sys.argv[1:]) - session = Session() - processFlags(session, config) - session.commit() - except: - if session != None: - session.rollback() - - raise - finally: - if session != None: - session.close() - engine.dispose() - - - -#### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) diff --git a/bin/update_flags b/bin/update_flags new file mode 100755 index 000000000..a11a18e27 --- /dev/null +++ b/bin/update_flags @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 +from boss_drp.post.update_flags import update_Targeting_flags +from boss_drp.utils import load_env + +import argparse + + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description='Update SDSSV Targeting flats inn the summary files') + parser.add_argument('--run2d', type=str, help='idlspec2d Run2d version') + parser.add_argument('--topdir', type=str, help='idlspec2d Run2d topdir') + parser.add_argument('--clobber', action='store_true', help='Clobber spTargeting file') + parser.add_argument('--custom', nargs='*', help='List of name of custom coadd schema') + parser.add_argument('--nobackup', action='store_true', help='Skip backup of existing') + args = parser.parse_args() + + + if args.run2d is None: + run2d = load_env('RUN2D') + else: + run2d = args.run2d + if args.topdir is None: + boss_spectro_redux = load_env('BOSS_SPECTRO_REDUX') + else: + boss_spectro_redux = args.topdir + + update_Targeting_flags(run2d, boss_spectro_redux, schema=args.custom, clobber=args.clobber, + nobackup=args.nobackup) diff --git a/bin/update_flags.py b/bin/update_flags.py deleted file mode 100644 index b3644314f..000000000 --- a/bin/update_flags.py +++ /dev/null @@ -1,136 +0,0 @@ -#!/usr/bin/env python3 - - -try: - from load_module import load_module, load_env -except: - from load_module import load_module - def load_env(key, default=None): - val = getenv(key) - if val is None: - val = default - if val is None: - print('ERROR: '+key+' is not set') - exit() - return(val) -import argparse -from sdssdb.peewee.sdss5db.targetdb import database - -test = database.set_profile('pipelines') - -from sdssdb.peewee.sdss5db.targetdb import CartonToTarget, Carton, Version, Mapper, Target -from astropy.table import Table, Column -from astropy.io import fits -from os import getenv, remove -import os.path as ptt -from glob import glob -import numpy as np -from tqdm.auto import tqdm -import time -from readfibermaps import get_targetflags -from splog import Splog -import shutil - -splog = Splog() -def get_Targeting_file(run2d, boss_spectro_redux=getenv('BOSS_SPECTRO_REDUX')): - return(ptt.join(boss_spectro_redux, run2d, f'spTargeting-{run2d}.fits.gz')) - - -def update_Targeting_flags(run2d, boss_spectro_redux, schema = None, clobber=False, - nobackup=False): - spall_file = ptt.join(boss_spectro_redux, run2d, f'spAll-lite-{run2d}.fits.gz') - Targeting_file = get_Targeting_file(run2d, boss_spectro_redux=boss_spectro_redux) - - if clobber: - splog.info('Determining Updated Flags') - spall = fits.getdata(spall_file, 1) - sdssids = np.unique(spall['SDSS_ID'].data) - sdssids = np.setdiff1d(sdssids,np.array([-999,0])) - search_table = Table([sdssids], names = ['SDSS_ID']) - search_table, _junk= get_targetflags(search_table, None) - for col in ['SDSS5_TARGET_FLAGS','SDSSC2BV']: - search_table[col].fill_value = 0 - #search_table[col][search_table[col].data.astype(object) == ''] = 0 - - try: - data = search_table[col].data.filled() - except: - data = search_table[col].data - search_table[col] = data.astype('uint8') - search_table.write(get_Targeting_file(run2d, boss_spectro_redux), overwrite=True) - else: - if ptt.exists(Targeting_file): - splog.info('Reading: '+Targeting_file) - search_table = Table.read(Targeting_file) - else: - raise Exception(Targeting_file+' is missing') - - run2d_dir = ptt.join(boss_spectro_redux, run2d) - files = ['spAll-lite-{run2d}{schema}.fits.gz','spAll-{run2d}{schema}.fits.gz'] - if schema is not None: - custom = schema - schema = [None] - schema.extend(custom) - else: - schema = [None] - for epoch in ['','epoch']: - for sc in schema: - sc = '' if sc is None else '-'+sc - for f in files: - ff = ptt.join(run2d_dir,epoch,f.format(run2d=run2d, schema = sc)) - if ptt.exists(ff): - if not nobackup: - if ptt.exists(ff+'.bak'): - splog.info(f'Removing {ptt.basename(ff)}.bak') - remove(ff+'.bak') - try: - splog.info(f'Saving a backup of {ff} to {ff}.bak') - shutil.copy(ff,ff+'.bak') - except OSError as exc: - raise OSError(f"Failed to save backup to destination {ff}") from exc - with fits.open(ff, mode='update', lazy_load_hdus=True, save_backup=False) as hdul: - splog.info(f'Updating {ff}') - idx = np.searchsorted(search_table['SDSS_ID'],hdul[1].data['SDSS_ID']) - nf = np.where(hdul[1].data['SDSS_ID'] != -999)[0] - - spall_shape = hdul[1].data['SDSS5_TARGET_FLAGS'].shape[1] - update_shape = search_table['SDSS5_TARGET_FLAGS'].shape[1] - if spall_shape < update_shape: - splog.info(f'Padding SDSS5_TARGET_FLAGS in {ptt.basename(ff)}') - coldat = hdul[1].data['SDSS5_TARGET_FLAGS'] - pad = update_shape - spall_shape -# hdul[1].data['SDSS5_TARGET_FLAGS'] = np.pad(coldat,[(0,0),(pad,0)], mode = 'constant', constant_values= 0) -# hdul[1].data['SDSS5_TARGET_FLAGS'] = fits.Column(name='SDSS5_TARGET_FLAGS', format=f'{update_shape}B', -# array=np.pad(coldat,[(0,0),(pad,0)], mode = 'constant', constant_values= 0)) - new_col = fits.Column(name='SDSS5_TARGET_FLAGS', format=f'{update_shape}B', - array=np.pad(coldat,[(0,0),(pad,0)], mode = 'constant', constant_values= 0)) - new_col = fits.ColDefs([new_col]) - old_cols = hdul[1].columns - colidx = np.where(np.asarray(old_cols.names) == 'SDSS5_TARGET_FLAGS')[0][0] - - hdul[1] = fits.BinTableHDU.from_columns(old_cols[0:colidx-1]+new_col+old_cols[colidx+1:], - header=hdul[1].header) - hdul[1].data['SDSS5_TARGET_FLAGS'][nf] = search_table['SDSS5_TARGET_FLAGS'][idx][nf] - #hdul[1].data['SDSSC2BV'] = search_table['SDSSC2BV'][idx][nf] - hdul[0].header['SDSSC2BV'] = search_table['SDSSC2BV'][0] - - - - - -if __name__ == "__main__": - parser = argparse.ArgumentParser(description='Plot QA') - parser.add_argument('-m','--mod', required=False, help='bhm module to run', default = 'bhm/master',) - parser.add_argument('--clobber', action='store_true', help='Clobber spTargeting file') - parser.add_argument('--custom', nargs='*', help='List of name of custom coadd schema') - parser.add_argument('--nobackup', action='store_true', help='Skip backup of existing') - args = parser.parse_args() - - module = load_module() - module('purge') - module('load', args.mod) - run2d = load_env('RUN2D') - boss_spectro_redux = load_env('BOSS_SPECTRO_REDUX') - - update_Targeting_flags(run2d, boss_spectro_redux, schema=args.custom, clobber=args.clobber, - nobackup=args.nobackup) diff --git a/bin/uubatchpbs b/bin/uubatchpbs new file mode 100755 index 000000000..52223f999 --- /dev/null +++ b/bin/uubatchpbs @@ -0,0 +1,147 @@ +#!/usr/bin/env python3 +from boss_drp.run.uubatchpbs import uubatchpbs +from boss_drp.utils import load_env + +import argparse +from os import getenv +import os.path as ptt +import sys + + +if __name__ == '__main__' : + """ + Batch process Spectro-2D and Spectro-1D reductions based upon already-built plan files + """ + parser = argparse.ArgumentParser( + prog=ptt.basename(sys.argv[0]), + description='Build idlspec2d redux and submit to slurm. Without access to the SDSS Slurm package, it prints the commands for manual execution') + + + shortgroup = parser.add_argument_group('Short cuts') + shortgroup.add_argument('--sdssv', action='store_true', help='--mwm --no_merge_spall --no_reject --shared') + shortgroup.add_argument('--sdssv_fast', action='store_true', help='--sdssv --fast --shared') + shortgroup.add_argument('--sdssv_noshare', action='store_true', help='--sdssv (without --shared)') + shortgroup.add_argument('--apo', action = 'store_true', help='Run apo only') + shortgroup.add_argument('--lco', action = 'store_true', help='Run lco only') + shortgroup.add_argument('--bay15', action='store_true', help='Set map3d to bayestar15 model') +# shortgroup.add_argument('--eden23', action='store_true', help='Set map3d to edenhofer2023 model') + shortgroup.add_argument('--merge3d', action='store_true', help='Set map3d to best 3d model') + + rungroup = parser.add_argument_group('idlspec2d Run options') + rungroup.add_argument('--obs', help='Observatory {apo,lco}', nargs='*', default=['apo','lco'], type=str.lower) + rungroup.add_argument('--topdir', type=str, help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX', + default = getenv('BOSS_SPECTRO_REDUX')) + rungroup.add_argument('--run1d', type=str, help='Optional override value for the enviro variable $RUN1D', default=getenv('RUN2D')) + rungroup.add_argument('--run2d', type=str, help='Optional override value for the enviro variable $RUN2D', default=getenv('RUN1D')) + rungroup.add_argument('--idlutils_1d', type=str, help='idlutils override version of spec1d', default=None) + rungroup.add_argument('--no_reject', action='store_true', help='Deactivate Rejection in Coadd') + rungroup.add_argument('--MWM_fluxer','--mwm', action='store_true', help='') + rungroup.add_argument('--map3d',type=str.lower,default=None, + help='Name of 3d dustmap to use with MWM_fluxer (default=None)', + choices = ['bayestar15','bay15','merge3d']) #['bayestar15','bay15','edenhofer2023','eden23','merge3d']) + rungroup.add_argument('--no_healpix','--nohp', action='store_true', help='Turn off copy to healpix') + rungroup.add_argument('--noxcsao', action='store_true', help='Skip pyXCSAO') + rungroup.add_argument('--skip_specprimary', action='store_true', help='Skip Calculation of Specprimary') + rungroup.add_argument('--no_merge_spall', action='store_true', help='Skip building full SpAll File') + rungroup.add_argument('--skip2d', action='store_true', help='Skip spreduce2d') + rungroup.add_argument('--only1d', action='store_true', help='run spec1d step only (eg. spreduce1d_empca, XCSAO)') + rungroup.add_argument('--onestep_coadd', action='store_true', help='Use legacy one step version of coadd') + rungroup.add_argument('--fibermap_clobber', action='store_true', help='Clobber spfibermap fits file') + rungroup.add_argument('--saveraw', action='store_true', help='Save sdssproc outputs') + rungroup.add_argument('--debug', action='store_true', help='Save extraction debug files') + rungroup.add_argument('--no_db', action='store_true', help='skip Database operations') + rungroup.add_argument('--fast_no_db', required=False, + help='When using --no_db, streamlines process and only gets parallax from MOS target files') + rungroup.add_argument('--release', required=False, + help='sdss_access data release (defaults to sdsswork), required if you do not have proprietary access, '+ + 'otherwise see https://sdss-access.readthedocs.io/en/latest/auth.html#auth', default=None) + rungroup.add_argument('--dr19', help='Limit targeting flags to DR19 cartons', action='store_true') + rungroup.add_argument('--a2t', help='Force Use of Arc2Trace', action='store_true') + + fieldgroup = parser.add_argument_group('Select Fields') + fieldgroup.add_argument('--field', '-f', nargs='*', help='Plate/Field numbers to reduce default="*"', type=str) + fieldgroup.add_argument('--fieldstart', help='Starting Field/Plate number', default=None, type=str) + fieldgroup.add_argument('--fieldend', help='End Field/Plate number', default=None, type=str) + + mjdgroup = parser.add_argument_group('Select MJDs') + mjdgroup.add_argument('--mjd', '-m', nargs='*', help='MJD dates to reduce; default="*"', type=str) + mjdgroup.add_argument('--mjdstart', help='Starting MJD', default=None, type=str) + mjdgroup.add_argument('--mjdend', help='Ending MJD', default=None, type=str) + + slurmgroup = parser.add_argument_group('Slurm Options') + slurmgroup.add_argument('--no_write', action='store_true', help='skip writing and submitting job') + slurmgroup.add_argument('--shared', action='store_true', help='Node sharing', default=False) + slurmgroup.add_argument('--fast', action='store_true', help='Use SDSS fast queue') + slurmgroup.add_argument('--mem_per_cpu', help='Memory allocated per CPU', type=str) + slurmgroup.add_argument('--walltime', help='Wall time in hours', type=str) + slurmgroup.add_argument('--nodes', default=None, help='Number of Nodes', type=int) + slurmgroup.add_argument('--ppn', help='Number of processors per node', type=int) + slurmgroup.add_argument('--nosubmit', action='store_true', help='Build, but not submit redux files') + slurmgroup.add_argument('--clobber', action='store_true', help='Clobber redux') + slurmgroup.add_argument('--nbundle', help='Number of jobs to bundle', type=int, default= None) + customgroup = parser.add_argument_group('Custom Coadd Options') + customgroup.add_argument('--epoch', action='store_true', help = 'Epoch Coadds') + customgroup.add_argument('--custom', help = 'Name of custom Coadd Schema', type=str) + customgroup.add_argument('--allsky', action='store_true', help = 'All Sky Coadds') + customgroup.add_argument('--coadd_only', action='store_true', help= 'Run spspec_target_merge only', dest = 'custom_coadd_only') + customgroup.add_argument('--1dpost', action='store_true', help= 'Run 1d analysis and post processing only', dest='custom_1dpost') + + emailgroup = parser.add_argument_group('Email outputs') + emailgroup.add_argument('--email', action='store_true', help='Email log using $DAILY_DIR/etc/emails') + + args = parser.parse_args() + + + + + if args.bay15: + args.map3d = 'bayestar15' +# if args.eden23: +# args.map3d = 'edenhofer2023' + if args.merge3d: + args.map3d = 'merge3d' + if (args.sdssv is True) or (args.sdssv_fast is True) or (args.sdssv_noshare is True) : + args.MWM_fluxer = True + args.no_reject = True + args.no_merge_spall = True + if args.mjdstart is None and args.mjd is None: + args.mjdstart = 59146 + if args.field is None and args.fieldstart is None: + args.fieldstart = 15000 + if args.walltime is None: + args.walltime = '40:00:00' + if not args.sdssv_noshare: + args.shared = True + if args.mem_per_cpu is None: + args.mem_per_cpu = '7500' + else: + if args.mem_per_cpu is None: + args.mem = '125000' + + + if args.sdssv_fast is True: + args.fast = True + + if args.walltime is None: + args.walltime = '40:00:00' + if args.mem_per_cpu is None: + args.mem_per_cpu = '7500' + + + if args.custom is not None: + args.skip2d = True + + + if args.lco is True: + args.obs = ['lco'] + elif args.apo is True: + args.obs = ['apo'] + + + args_dic = vars(args) + for key in ['sdssv','lco','apo','sdssv_fast', 'bay15', 'sdssv_noshare', 'merge3d']: #,'eden23']: + args_dic.pop(key) + + queue = uubatchpbs(**args_dic) + + diff --git a/bin/uubatchpbs.py b/bin/uubatchpbs.py deleted file mode 100755 index 7e41c4ac7..000000000 --- a/bin/uubatchpbs.py +++ /dev/null @@ -1,763 +0,0 @@ -#!/usr/bin/env python3 - -from slurm import queue -import argparse -from os import getenv, makedirs, popen, chdir, getcwd, popen -import os.path as ptt -from glob import glob -from pydl.pydlutils.yanny import yanny, read_table_yanny -import sys -import numpy as np -import io -import datetime -import astropy.time -import pandas as pd -import logging -from dailylogger import * -import time - -if getenv('SLURM_VERS') == 'notchpeak': - share = True -else: - share = False -jdate = int(float(astropy.time.Time(datetime.datetime.utcnow()).jd)-2400000.5) - -def get_dirs(basedir, val=None, start=None, end=None, format = '??????', numeric=True): - dirs = glob(ptt.join(basedir, format)) - valid_dirs = [] - if val is not None: - for i,v in enumerate(val): - val[i] = str(v).zfill(len(format)) - - for fd in dirs: - if numeric is True: - if not ptt.basename(fd).isnumeric(): - continue - if val is not None: - if ptt.basename(fd) not in val: - continue - if start is not None: - if int(ptt.basename(fd)) < int(start): - continue - if end is not None: - if int(ptt.basename(fd)) > int(end): - continue - valid_dirs.append(fd) - - return(valid_dirs) - -def mjd_match(thismjd, mjd=None, mjdstart=None, mjdend=None): - if mjd is not None: - if int(thismjd) not in np.atleast_1d(np.asarray(mjd)).astype(int).tolist(): - return(False) - if mjdstart is not None: - if int(thismjd) < int(mjdstart): - return(False) - if mjdend is not None: - if int(thismjd) > int(mjdend): - return(False) - return(True) - - -def build_cmd(topdir=None,run2d=None,run1d=None,idlutils_1d=None, - no_reject=False, MWM_fluxer=False, map3d='bayestar15', - noxcsao=False, skip_specprimary=False, - no_merge_spall=False, skip2d=False, onestep_coadd=False, - fibermap_clobber=False, lco=False, plan2d=None, plancomb=None, - fieldmjd=None, post_idl=False, only1d=False, daily=False, module="", - custom=None, allsky=False, epoch=False, saveraw=False, debug=False, - sdss_access_release = None, sdss_access_remote = False, - no_db=False, fast_no_db=False,no_healpix=False, dr19=False, - custom_coadd_only=False, custom_1dpost=False, redux=None, **kwargs): - - field = fieldmjd.split('-')[-2] - mjd = fieldmjd.split('-')[-1] - - cmd = [] - cmd.append('# Auto-generated batch file '+datetime.datetime.now().strftime("%c")) - if daily: - cmd.append(f"module purge ; module load {module}") - cmd.append('') - - if epoch is False: - if custom is None: - cmd.append('cd '+ptt.join(topdir,run2d,field)) - else: - if allsky is False: - cmd.append('cd '+ptt.join(topdir,run2d,custom,field)) - fieldmjd = custom+'-'+mjd - else: - cmd.append('cd '+ptt.join(topdir,run2d,custom)) - fieldmjd = custom+'-'+mjd - else: - if custom is None: - cmd.append('cd '+ptt.join(topdir,run2d,field,'epoch')) - else: - if allsky is False: - cmd.append('cd '+ptt.join(topdir,run2d,custom,field,'epoch')) - fieldmjd = custom+'-'+mjd - else: - cmd.append('cd '+ptt.join(topdir,run2d,custom,'epoch')) - fieldmjd = custom+'-'+mjd - if not allsky: - if lco: - cmd.append('export BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_S') - cmd.append('export GCAM_DATA=$GCAM_DATA_S') - else: - cmd.append('export BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_N') - cmd.append('export GCAM_DATA=$GCAM_DATA_N') - - cmd.append('') - cmd.append("#- Echo commands to make debugging easier") - cmd.append("set -o verbose") - - spreduce2d_keys='' - rm_combine_keys='/xyfit, /loaddesi,' - spec1d_keys='' - xcsao_keys='' - - spcalib_keywords = '' - if post_idl: - reformat_keywords = '' - conflist_keywords = ' /create,' - fieldmerge_keywords = ' /include_bad,' - image_keywords = '' - else: - spSpecRef_key = "" # " --lsdr10" - flist_key = "" - fmerge_key = " --include_bad" - if run2d.lower() == 'master': - spSpecRef_key =" --lsdr10" - - if epoch: - spSpecRef_key = spSpecRef_key + " --epoch" - flist_key = flist_key + " --epoch" - fmerge_key = fmerge_key + " --epoch" - rm_combine_keys = rm_combine_keys + " /epoch," - spec1d_keys = spec1d_keys + " /epoch," - xcsao_keys = xcsao_keys + " --epoch" - spcalib_keywords = spcalib_keywords + " /epoch," - - fmap_keywords = '' - if fibermap_clobber: - fmap_keywords = fmap_keywords + " --clobber" - if no_db: - fmap_keywords = fmap_keywords + " --no_db" - if fast_no_db: - fmap_keywords = fmap_keywords + " --fast" - if sdss_access_release is not None: - fmap_keywords = fmap_keywords + " --release "+sdss_access_release - if sdss_access_remote is not None: - fmap_keywords = fmap_keywords + " --remote" - - if MWM_fluxer: - spreduce2d_keys = spreduce2d_keys + ' /MWM_fluxer,' - rm_combine_keys = rm_combine_keys + ' /MWM_fluxer,' - spreduce2d_keys = spreduce2d_keys + f' map3d={map3d},' - if saveraw: - spreduce2d_keys = spreduce2d_keys + ' /saveraw,' - if debug: - spreduce2d_keys = spreduce2d_keys + ' /debug,' - if no_reject: - rm_combine_keys = rm_combine_keys + ' /no_reject,' - if onestep_coadd: - rm_combine_keys = rm_combine_keys + ' /onestep_coadd,' - - - if post_idl: - if not noxcsao: - reformat_keywords = reformat_keywords+' /XCSAO,' - fieldmerge_keywords = fieldmerge_keywords+' /XCSAO,' - if skip_specprimary: - fieldmerge_keywords = fieldmerge_keywords+' /skip_specprimary, ' - else: - if not noxcsao: - fmerge_key = fmerge_key +" --XCSAO" - if skip_specprimary: - fmerge_key = fmerge_key +" --skip_specprimary" - - - if custom is not None: - customkey = ' custom='+custom+',' - pycustomkey = ' --custom '+custom - if allsky: - customkey = customkey + ' /allsky,' - pycustomkey = ' --allsky' - spcalib_keywords = spcalib_keywords + ' /allsky,' - - rm_combine_keys = rm_combine_keys + customkey - spec1d_keys = spec1d_keys + customkey - #xcsao_keys = xcsao_keys + pycustomkey - if post_idl: - reformat_keywords = reformat_keywords + customkey - conflist_keywords = conflist_keywords + customkey - fieldmerge_keywords = fieldmerge_keywords + customkey - image_keywords = image_keywords + customkey - else: - fmerge_key = fmerge_key + pycustomkey - flist_key = flist_key + pycustomkey - spSpecRef_key = spSpecRef_key + pycustomkey - - if epoch: - skip2d = True - if only1d: - skip2d = True - cmd.append('') - cmd.append('#- The real work') - - - if not skip2d: - for plan in plan2d: - plan = plan.strip("'") - if not dr19: - cmd.append(f"readfibermaps.py --spplan2d {plan}") - else: - cmd.append(f"readfibermaps.py --spplan2d {plan} --dr19") - cmd.append('touch '+plan.replace('.par', '.started').replace('spPlan2d','spec2d')) - cmd.append("echo 'spreduce2d,"+spreduce2d_keys+' "'+plan+'"'+"' | idl") - cmd.append('touch '+plan.replace('.par', '.done').replace('spPlan2d','spec2d')) - if not custom_1dpost: - if custom is not None: - for plan in plan2d: - plan = plan.strip("'") - cmd.append('touch '+plan.replace('.par', '.started').replace('spPlanCustom','specombine')) - cmd.append("echo 'spspec_target_merge, "+' "'+plan+'"'+"' | idl") - cmd.append('touch '+plan.replace('.par', '.done').replace('spPlanCustom','specombine')) - if custom_coadd_only: - return(cmd) - - if not only1d: - if epoch: - cmd.append('touch spPlancombepoch-'+fieldmjd+'.started') - cmd.append("echo 'rm_combine_script, "+'"spPlancombepoch-'+fieldmjd+'.par",'+rm_combine_keys+' run2d="'+run2d+'"'+"' |idl") - cmd.append('touch spPlancombepoch-'+fieldmjd+'.done') - elif custom is None: - cmd.append('touch specombine-'+fieldmjd+'.started') - cmd.append("echo 'rm_combine_script, "+'"spPlancomb-'+fieldmjd+'.par",'+rm_combine_keys+' run2d="'+run2d+'"'+"' |idl") - cmd.append('touch specombine-'+fieldmjd+'.done') - - - if run1d is None: - run1d=run2d - if run2d != run1d: - cmd.append('module switch idlspec2d idlspec2d/'+run1d) - if idlutils_1d is not None: - cmd.append('module switch idlutils idlutils/'+idlutils_1d) - - if allsky is False: - cmd.append('touch spec1d-'+fieldmjd+'.started') - cmd.append("echo 'spreduce1d_empca, "+'"spField-'+fieldmjd+'.fits",'+spec1d_keys+' run1d="'+run1d+'"'+"' |idl") - if not noxcsao: - cmd.append('run_PyXCSAO.py spField-'+fieldmjd+'.fits'+xcsao_keys+' --run1d "'+run1d+'"') - cmd.append('touch spec1d-'+fieldmjd+'.done') - else: - global plancomb_last - global EPOCH_COMBINE - if 'plancomb_last' not in globals(): - plancomb_last = '' - if plancomb != plancomb_last: - cplan = read_table_yanny(plancomb, 'COADDPLAN') - EPOCH_COMBINE = np.sort(np.unique(cplan['EPOCH_COMBINE'])) - plancomb_last = plancomb - for mjec in EPOCH_COMBINE: - if custom_1dpost: - test_mjec = redux.split('_')[-1] - if str(mjec) != test_mjec: - continue - fmjd = custom+'-'+str(mjec) - cmd.append('touch spec1d-'+fmjd+'.started') - cmd.append("echo 'spreduce1d_empca, "+'"spFullsky-'+fmjd+'.fits",'+spec1d_keys+' run1d="'+run1d+'"'+"' |idl") - if not noxcsao: - cmd.append('run_PyXCSAO.py spFullsky-'+fmjd+'.fits'+xcsao_keys+' --run1d "'+run1d+'"') - cmd.append('touch spec1d-'+fmjd+'.done') - - - if not only1d: - if post_idl: - cmd.append('') - cmd.append('#- Make final spectra files') - cmd.append("echo 'reformat_spec, "+'"spField-'+fieldmjd+'.fits",'+reformat_keywords+' run1d="'+run1d+'"'+"' |idl") - cmd.append("echo 'conflist,"+conflist_keywords[:-1]+"' |idl") - cmd.append("echo 'fieldmerge, field="+field+", mjd="+mjd+","+fieldmerge_keywords[:-1]+"' |idl") - cmd.append("echo 'reformat_spec, "+'"spField-'+fieldmjd+'.fits", /lite,'+reformat_keywords+' run1d="'+run1d+'"'+"' |idl") - - cmd.append('') - cmd.append('#- Make Spectro-Photometric Calibration QA Figures') - cmd.append("echo 'spcalib_qa, fieldid="+field+", mjd="+mjd+', '+spcalib_keywords+' run2d="'+run2d+'"'+"' |idl") - - cmd.append('') - cmd.append('#- Make pretty pictures') - cmd.append("echo 'plate_spec_image, "+field+", mjd="+mjd+', '+image_keywords+' run1d="'+run1d+'", run2d="'+run2d+'"'+"' |idl") - - if not no_merge_spall: - cmd.append('#- update spAll file') - cmd.append("echo 'fieldmerge, "+fieldmerge_keywords[:-1]+"' |idl") - - else: - if allsky is False: - fmjd = [fieldmjd] - else: - fmjd = [] - for mjec in EPOCH_COMBINE: - if custom_1dpost: - test_mjec = redux.split('_')[-1] - if str(mjec) != test_mjec: - continue - fmjd.append( custom+'-'+str(mjec)) - for fm in fmjd: - field, mjd = fm.split('-') - if allsky is False: - cmd.append('') - cmd.append('#- Make Field List') - cmd.append(f"fieldlist.py --create --run1d {run1d} --run2d {run2d} {flist_key} --logfile fieldlist-{field}-{mjd}.log") - - cmd.append('') - cmd.append('#- Make Field spAll file') - cmd.append(f"fieldmerge.py {fmerge_key} --clobber --run2d {run2d} --field {field} --mjd {mjd}") - else: - cmd.append('') - cmd.append('#- Make Field spAll file') - cmd.append(f"fieldmerge.py {fmerge_key} --clobber --run2d {run2d} --custom {field} --run1d {run1d} --mjd {mjd}") - cmd.append('') - cmd.append('#- Make final spectra files') - cmd.append(f"spSpec_reformat.py --field {field} --mjd {mjd} -p --run1d {run1d} --run2d {run2d} {spSpecRef_key}") - - if allsky is False: - cmd.append('') - cmd.append('#- Make Spectro-Photometric Calibration QA Figures') - cmd.append("echo 'spcalib_qa, fieldid="+field+", mjd="+mjd+','+spcalib_keywords+' run2d="'+run2d+'"'+"' |idl") - - if not no_merge_spall: - cmd.append('') - cmd.append('#- Making Summary Files') - if allsky is False: - cmd.append(f"fieldlist.py --create --run1d {run1d} --run2d {run2d} {flist_key}") - cmd.append(f"fieldmerge.py --lite {fmerge_key} --run2d {run2d} --remerge_fmjd {field}-{mjd}") - else: - cmd.append(f"fieldmerge.py --lite {fmerge_key} --custom {field} --run1d {run1d} --run2d {run2d} --remerge_fmjd {field}-{mjd}") - - if custom is None: - if not no_healpix: - cmd.append('#- Make the healpix links') - cmd.append('sas_mwm_healpix --spectro boss --mjd '+mjd+' --telescope apo25m --drpver '+run2d+' -v') - - return(cmd) - -def uubatchpbs(obs = ['apo', 'lco'], topdir = getenv('BOSS_SPECTRO_REDUX'), - run1d = getenv('RUN1D'), run2d = getenv('RUN2D'), idlutils_1d = None, - no_reject = False, MWM_fluxer = True, map3d='bayestar15', - noxcsao = False, skip_specprimary = False, - no_merge_spall = False, skip2d = False, onestep_coadd = False, - fibermap_clobber = False, - include_bad = False, xyfit = False, loaddesi = False, only1d = False, - fieldids = None, fieldstart = None, fieldend = None, - mjd = None, mjdstart = None, mjdend = None, saveraw=False, - no_write = False, kingspeak = False, shared = share, fast = False, - mem_per_cpu = getenv('SLURM_MEM_PER_CPU'), walltime = '336:00:00', - nodes = None, ppn = None, nosubmit = False, daily=False, module="", - debug=False, no_db=False, dr19=False, - clobber = False, custom= None, allsky = False, epoch = False, no_healpix=False, - email = False, logger=None, fast_no_db=False, - sdss_access_remote = False, sdss_access_release=None, - custom_coadd_only=False, custom_1dpost=False): - - - elog = emailLogger() - emaillog = elog.log_handler - emaillog.setLevel(logging.DEBUG) - emaillog.setFormatter(Formatter()) - - - if logger is None: - logger = logging.getLogger() - console = logging.StreamHandler() - console.setLevel(logging.DEBUG) - console.setFormatter(Formatter()) - logger.addHandler(console) - logger.addHandler(emaillog) - logger.setLevel(logging.DEBUG) - else: - logger.addHandler(emaillog) - logger.setLevel(logging.DEBUG) - - if kingspeak: - shared=False - - cmdinputs = locals() - fullinputs = cmdinputs.copy() - cmdinputs.pop('topdir') - cmdinputs.pop('no_write') - cmdinputs.pop('logger') - cmdinputs.pop('daily') - try: - cmdinputs.pop('console') - except: - pass - cmdinputs.pop('elog') - cmdinputs.pop('emaillog') - if cmdinputs['custom'] is None: - cmdinputs.pop('allsky') - for key in list(cmdinputs.keys()): - if cmdinputs[key] is None: - cmdinputs.pop(key) - error = False - - if not ptt.isdir(topdir): - logger.warning('topdir (BOSS_SPECTRO_REDUX) is invalid') - error = True - else: - logger.info('topdir '+topdir) - logger.info(pd.Series(cmdinputs).to_string()) - - topdir2d = ptt.join(topdir, run2d) - if custom is not None: - topdir2d = ptt.join(topdir2d, custom) - if not allsky: - fielddirs = get_dirs(topdir2d, val = fieldids, start=fieldstart, end=fieldend) - if len(fielddirs) == 0: - logger.warning('No Directories Found') - error = True - else: - fielddirs = [''] - - if error: - logger.removeHandler(emaillog) - emaillog.close() - return() - - redux_list = [] - skipped = 0 - - if epoch is False: - if custom is None: - plan_str = 'spPlancomb-*.par' - else: - plan_str = 'spPlanCustom-'+custom+'-*.par' - else: - if custom is None: - plan_str = 'spPlancombepoch-*.par' - else: - plan_str = 'spPlancombepoch_'+custom+'-*.par' - - for fielddir in fielddirs: - if epoch is False: - if custom is None: - planfile = glob(ptt.join(topdir2d, fielddir, plan_str)) - else: - planfile = glob(ptt.join(topdir2d, fielddir, plan_str)) - else: - if custom is None: - planfile = glob(ptt.join(topdir2d, fielddir, 'epoch', plan_str)) - else: - planfile = glob(ptt.join(topdir2d, custom, fielddir,'epoch', plan_str)) - ifile = len(planfile) - for plan in planfile: - yplan = yanny(plan) - hdr = yplan.new_dict_from_pairs() - thismjd = hdr['MJD'] - if 'OBS' in hdr.keys(): - thisobs = hdr['OBS'].lower() - else: - thisobs = 'apo' - if thisobs.lower() not in obs: - continue - if not mjd_match(thismjd, mjd=mjd, mjdstart=mjdstart, mjdend=mjdend): - continue - #fieldmjd = hdr['fieldid']+'-'+hdr['MJD'] - if thisobs.lower() == 'lco': - lco = True - else: - lco = False - - if epoch is False: - if custom is None: - fieldmjd = hdr['fieldid']+'-'+hdr['MJD'] - redux = ptt.join(topdir2d, fielddir, 'redux-'+fieldmjd) - else: - if allsky: - fieldmjd = custom+'-'+hdr['CreateMJD'] - else: - fieldmjd = custom+'-'+hdr['fieldid']+'-'+hdr['CreateMJD'] - if not custom_1dpost: - redux = ptt.join(topdir2d, fielddir, 'redux_'+fieldmjd) - else: - redux = [] - cplan = read_table_yanny(plan, 'COADDPLAN') - EPOCH_COMBINE = np.sort(np.unique(cplan['EPOCH_COMBINE'])) - for mjec in EPOCH_COMBINE: - redux.append(ptt.abspath(ptt.join(topdir2d, fielddir,'redux_'+fieldmjd+'_'+str(mjec)))) - else: - if custom is None: - fieldmjd = hdr['fieldid']+'-'+hdr['MJD'] - redux = ptt.join(topdir2d, fielddir,'epoch','redux-'+fieldmjd) - custom_1dpost = False - else: - if allsky: - fieldmjd = custom+'-'+hdr['CreateMJD'] - else: - fieldmjd = custom+'-'+hdr['fieldid']+'-'+hdr['CreateMJD'] - if not custom_1dpost: - redux = ptt.join(topdir2d, fielddir,'epoch','redux_'+fieldmjd) - else: - redux = [] - cplan = read_table_yanny(plan, 'COADDPLAN') - EPOCH_COMBINE = np.sort(np.unique(cplan['EPOCH_COMBINE'])) - for mjec in EPOCH_COMBINE: - redux.append(ptt.abspath(ptt.join(topdir2d, fielddir,'epoch','redux_'+fieldmjd+'_'+str(mjec)))) - print(redux[-1]) - if not custom_1dpost: - redux = [ptt.abspath(redux)] - - if custom is None: - plan2d = hdr['planfile2d'].split(' ') - else: - plan2d = [ptt.basename(plan)] - - - for redux1 in redux: - if (not ptt.exists(redux1)) or (clobber is True): - cmd = build_cmd(**fullinputs, plan2d=plan2d, plancomb=plan, fieldmjd=fieldmjd, lco=lco, redux=redux1) - if not no_write: - with open(redux1,'w') as r: - for c in cmd: - r.write(c+'\n') - redux_list.append(redux1) - else: - skipped += 1 - if len(redux_list) > 25: - fast=False - logger.info('') - logger.info('---------------------------------------------------') - logger.info('boss_redux: #BOSS Field-MJDs Done = '+str(skipped)) - logger.info(' #BOSS Field-MJDs To Do = '+str(len(redux_list))) - logger.info('---------------------------------------------------') - logger.info('') - - if len(redux_list) == 0: - logger.removeHandler(emaillog) - emaillog.close() - return None - - - if kingspeak is False: - qos = 'sdss' - alloc = 'sdss-np' - if fast is True: alloc = alloc+'-fast' - partition = 'sdss-np' - max_c = 64 - if ppn is None: ppn= np.min([64, np.max([len(redux_list),2])]) - else: - qos = 'sdss' - alloc = 'sdss-kp' - partition = 'sdss-kp' - shared=False - max_c = 16 - if ppn is None: ppn= np.min([16, np.max([len(redux_list),2])]) - - if daily is True: - if nodes is None and len(redux_list) > ppn: - nodes = int(np.ceil(len(redux_list)/max_c)) - else: - nodes = 1 - obsstr = '_'.join(obs) - if custom is None: - if not epoch: - label = run2d + '_' + obsstr - else: - label = run2d + '_epoch_' + obsstr - else: - if not epoch: - label = run2d + '_' + obsstr + '_'+custom - else: - label = run2d + '_epoch_' + obsstr + '_'+custom - - old_stdout = sys.stdout - new_stdout = io.StringIO() - sys.stdout = new_stdout - if not no_write: - queue1 = queue(key=None, verbose=True) - queue1.create(label=label, nodes=str(nodes), ppn=str(ppn), partition = partition, - alloc=alloc, shared=shared, walltime=walltime, mem_per_cpu=mem_per_cpu) - else: - queue1 = None - for i in range(len(redux_list)): - cmd, log, err = make_run_cmd(redux_list[0]) - redux_list.pop(0) - if not no_write: - queue1.append(cmd, outfile = log, errfile = err) - else: - logger.info(cmd) - if not no_write: - queue1.commit(hard=True, submit=(not nosubmit)) - output = new_stdout.getvalue() - sys.stdout = old_stdout - logger.info(output) - - if email is True: - if daily: - jdate = mjd[0] - else: - jdate = int(float(astropy.time.Time(datetime.datetime.utcnow()).jd)-2400000.5) - elog.send('UUBATCH '+run2d +' MJD='+str(jdate) +' OBS='+','.join(obs), ptt.join(getenv('HOME'), 'daily', 'etc','emails'), logger) - logger.removeHandler(emaillog) - emaillog.close() - - return(queue1) - -def make_run_cmd(redux): - cmd = 'source '+redux - log = redux+'.o' - err = redux+'.e' - return(cmd, log, err) - - - - -if __name__ == '__main__' : - """ - Batch process Spectro-2D and Spectro-1D reductions based upon already-built plan files - """ - parser = argparse.ArgumentParser( - prog=ptt.basename(sys.argv[0]), - description='Build idlspec2d redux and submit to slurm') - - - shortgroup = parser.add_argument_group('Short cuts') - shortgroup.add_argument('--sdssv', action='store_true', help='--mwm, --no_merge_spall, --no_reject') - shortgroup.add_argument('--sdssv_fast', action='store_true') - shortgroup.add_argument('--sdssv_noshare', action='store_true') - shortgroup.add_argument('--apo', action = 'store_true') - shortgroup.add_argument('--lco', action = 'store_true') - shortgroup.add_argument('--bay15', action='store_true', help='Set map3d to bayestar15 model') -# shortgroup.add_argument('--eden23', action='store_true', help='Set map3d to edenhofer2023 model') - shortgroup.add_argument('--merge3d', action='store_true', help='Set map3d to best 3d model') - - rungroup = parser.add_argument_group('idlspec2d Run options') - rungroup.add_argument('--obs', help='Observatory {apo,lco}', nargs='*', default=['apo','lco'], type=str.lower) - rungroup.add_argument('--topdir', type=str, help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX', - default = getenv('BOSS_SPECTRO_REDUX')) - rungroup.add_argument('--run1d', type=str, help='Optional override value for the enviro variable $RUN1D', default=getenv('RUN1D')) - rungroup.add_argument('--run2d', type=str, help='Optional override value for the enviro variable $RUN2D', default=getenv('RUN2D')) - rungroup.add_argument('--idlutils_1d', type=str, help='idlutils override version of spec1d', default=None) - rungroup.add_argument('--no_reject', action='store_true', help='Deactivate Rejection in Coadd') - rungroup.add_argument('--MWM_fluxer','--mwm', action='store_true', help='') - rungroup.add_argument('--map3d',type=str.lower,default='bayestar15', - help='Name of 3d dustmap to use with MWM_fluxer (default=bayestar15)', - choices = ['bayestar15','bay15','merge3d']) #['bayestar15','bay15','edenhofer2023','eden23','merge3d']) - rungroup.add_argument('--no_healpix','--nohp', action='store_true', help='Turn off copy to healpix') - rungroup.add_argument('--noxcsao', action='store_true', help='Skip pyXCSAO') - rungroup.add_argument('--skip_specprimary', action='store_true', help='Skip Calculation of Specprimary') - rungroup.add_argument('--no_merge_spall', action='store_true', help='Skip building full SpAll File') - rungroup.add_argument('--skip2d', action='store_true', help='Skip spreduce2d') - rungroup.add_argument('--only1d', action='store_true', help='run spec1d step only (eg. spreduce1d_empca, XCSAO)') - rungroup.add_argument('--onestep_coadd', action='store_true', help='Use legacy one step version of coadd') - rungroup.add_argument('--fibermap_clobber', action='store_true', help='Clobber spfibermap fits file') - rungroup.add_argument('--saveraw', action='store_true', help='Save sdssproc outputs') - rungroup.add_argument('--debug', action='store_true', help='Save extraction debug files') - rungroup.add_argument('--no_db', action='store_true', help='skip Database operations') - rungroup.add_argument('--fast_no_db', required=False, - help='When using --no_db, streamlines process and only gets parallax from MOS target files') - rungroup.add_argument('--sdss_access_release', required=False, - help='sdss_access data release (defaults to sdsswork), required if you do not have proprietary access, '+ - 'otherwise see https://sdss-access.readthedocs.io/en/latest/auth.html#auth', default='sdsswork') - rungroup.add_argument('--sdss_access_remote', help='allow for remote access to data using sdss-access', action='store_true') - rungroup.add_argument('--dr19', help='Limit targeting flags to DR19 cartons', action='store_true') - - - fieldgroup = parser.add_argument_group('Select Fields') - fieldgroup.add_argument('--fieldids', '-f', nargs='*', help='Plate/Field numbers to reduce default="*"', type=str) - fieldgroup.add_argument('--fieldstart', help='Starting Field/Plate number', default=None, type=str) - fieldgroup.add_argument('--fieldend', help='End Field/Plate number', default=None, type=str) - - mjdgroup = parser.add_argument_group('Select MJDs') - mjdgroup.add_argument('--mjd', '-m', nargs='*', help='MJD dates to reduce; default="*"', type=str) - mjdgroup.add_argument('--mjdstart', help='Starting MJD', default=None, type=str) - mjdgroup.add_argument('--mjdend', help='Ending MJD', default=None, type=str) - - slurmgroup = parser.add_argument_group('Slurm Options') - slurmgroup.add_argument('--no_write', action='store_true', help='skip writing and submitting job') - slurmgroup.add_argument('--kingspeak', action='store_true', help='Use kingspeak rather then notchpeak') - slurmgroup.add_argument('--shared', action='store_true', help='Node sharing', default=share) - slurmgroup.add_argument('--fast', action='store_true', help='Use SDSS fast queue') - slurmgroup.add_argument('--mem_per_cpu', help='Memory allocated per CPU', type=str) - slurmgroup.add_argument('--walltime', help='Wall time in hours', type=str) - slurmgroup.add_argument('--nodes', default=1, help='Number of Nodes', type=int) - slurmgroup.add_argument('--ppn', help='Number of processors per node', type=int) - slurmgroup.add_argument('--nosubmit', action='store_true', help='Build, but not submit redux files') - slurmgroup.add_argument('--clobber', action='store_true', help='Clobber redux') - - customgroup = parser.add_argument_group('Custom Coadd Options') - customgroup.add_argument('--epoch', action='store_true', help = 'Epoch Coadds') - customgroup.add_argument('--custom', help = 'Name of custom Coadd Schema', type=str) - customgroup.add_argument('--allsky', action='store_true', help = 'All Sky Coadds') - customgroup.add_argument('--coadd_only', action='store_true', help= 'Run spspec_target_merge only', dest = 'custom_coadd_only') - customgroup.add_argument('--1dpost', action='store_true', help= 'Run 1d analysis and post processing only', dest='custom_1dpost') - - emailgroup = parser.add_argument_group('Email outputs') - emailgroup.add_argument('--email', action='store_true', help='Email log using $HOME/daily/etc/emails') - - args = parser.parse_args() - - if args.bay15: - args.map3d = 'bayestar15' -# if args.eden23: -# args.map3d = 'edenhofer2023' - if args.merge3d: - args.map3d = 'merge3d' - if (args.sdssv is True) or (args.sdssv_fast is True) or (args.sdssv_noshare is True) : - args.MWM_fluxer = True - args.no_reject = True - args.no_merge_spall = True - if args.mjdstart is None and args.mjd is None: - args.mjdstart = 59146 - if args.fieldids is None and args.fieldstart is None: - args.fieldstart = 15000 - if args.walltime is None: - args.walltime = '40:00:00' - if not args.sdssv_noshare: - args.shared = True - if not args.kingspeak is True: - if args.mem_per_cpu is None: - args.mem_per_cpu = '7500' - else: - if args.mem_per_cpu is None: - args.mem_per_cpu = '3750' - else: - if args.mem_per_cpu is None: - args.mem_per_cpu = '125000' - - - if args.sdssv_fast is True: - args.fast = True - - if args.walltime is None: - args.walltime = '40:00:00' - if not args.kingspeak is True: - if args.mem_per_cpu is None: - args.mem_per_cpu = '7500' - else: - if args.mem_per_cpu is None: - args.mem_per_cpu = '3750' - - if args.custom is not None: - args.skip2d = True - - args.include_bad = True - args.xyfit = True - args.loaddesi = True - - - if args.lco is True: - args.obs = ['lco'] - elif args.apo is True: - args.obs = ['apo'] - if args.kingspeak is True: - args.shared = False - - args_dic = vars(args) - for key in ['sdssv','lco','apo','sdssv_fast', 'bay15', 'sdssv_noshare', 'merge3d']: #,'eden23']: - args_dic.pop(key) - - queue = uubatchpbs(**args_dic) - - diff --git a/bin/uurundaily b/bin/uurundaily index 4d2a3316b..d4b41db35 100755 --- a/bin/uurundaily +++ b/bin/uurundaily @@ -1,144 +1,143 @@ -#!/usr/bin/env bash -# -# Setup the environment to run dailyrun in either cron mode or daemon mode -# -# Written by Gary Kushner (LBL). Feb 2010. - -function usage -{ - local execName=$(basename $0) - ( - echo "usage: $execName -e -t" - echo - echo " -d run in quasi-daemon mode, sleeping 10 minutes (default) between invocations" - echo " -s Don't setup products" - echo " -h this help" - echo " -p poll delay in seconds (default 600)" - echo " " - echo " -g go. Go must be specified. This is to prevent accidentally running $execName." - echo " -t run daily tagged version" - echo " -l run for LCO" - ) >&2 - exit 1 -} - -function screamAndDie -{ - echo "Failed: $*" - - echo "Goodbye!" - exit 1 -} - -function printAndRun -{ - echo "$*" - -# if "$dryMode"; then -# return -# fi - - # Silently do nothing - if test "_$*" = "_"; then - return - fi - - eval "$@" - if test $? -ne 0; then - screamAndDie "failed running $*" - fi -} - - -### -### Start of script -### - -### Parse Options - -delay=600 -daemon=false -pwfile="" -skipSetups=true -go=false -daily=false -lco=false -run2d='' - -while getopts "sdgtlp:r:" argname; do - case $argname in - d) daemon=true ;; - s) skipSetups=true ;; - g) go=true ;; - p) delay=$OPTARG ;; - l) lco=true ;; - t) daily=true ;; - r) run2d=$OPTARG ;; - *) usage - esac -done -shift $((OPTIND-1)) - -### Good to go? -if ! "$go"; then - usage -fi - -### Say hello Gracie - -echo "UURUNDAILY: Starting at $(date)" - -### Setup eups products - -#if ! "$skipSetups"; then -# printAndRun "module purge" -# printAndRun "module load bhm/master" -# printAndRun "module switch bhm bhm/master" -# printAndRun "module load trac" -#fi - -if "$daily"; then - daily_log="_daily" - daily_cmd=" -d" -else - daily_log="" - daily_cmd="" -fi - -if "$lco"; then - lco_log="_lco" - lco_cmd=" -l" -else - lco_log="" - lco_cmd="" -fi - -if [ $run2d != "" ]; then - run2d_log="_"$run2d -else - run2d_log="" -fi - -### Setup python options -export PYTHONUNBUFFERED=1 -#export DAILY_BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA - - -### If not daemon mode, run once and exit -if ! "$daemon"; then - export DAILY_BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_N - exec $HOME/daily/cmd/rundaily -m $HOME/daily/etc/nextmjd${daily_log}${lco_log}${run2d_log} -s $HOME/daily/cmd/uurundaily_script -p $HOME/daily/etc/wiki $lco_cmd $daily_cmd - echo "Sleeping for $delay seconds at $(date)" - sleep $delay -fi - -### Run in daemonish mode -while true; do - export DAILY_BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_N - $HOME/daily/cmd/rundaily -m $HOME/daily/etc/nextmjd${daily_log}${lco_log}${run2d_log} -s $HOME/daily/cmd/uurundaily_script -p $HOME/daily/etc/wiki $lco_cmd $daily_cmd - echo "Sleeping for $delay seconds at $(date)" - sleep $delay -done - -echo "UURUNDAILY: Completing at $(date)" - +#!/usr/bin/env python3 +from boss_drp.run.uurundaily import uurundaily, parseNumList + +try: + from slurm import queue + hasslurm=True +except: + hasslurm=False +import argparse +import os.path as ptt +import sys +import os + +class SkipPlanAction(argparse.Action): + def __call__(self, parser, namespace, values, option_string=None): + if values is None: + setattr(namespace, self.dest, True) + elif values == 'all': + setattr(namespace, self.dest, True) + else: + setattr(namespace, self.dest, values) + + +if __name__ == '__main__' : + """ + Batch process Spectro-2D and Spectro-1D reductions + """ + parser = argparse.ArgumentParser( + prog=ptt.basename(sys.argv[0]), + description='Process the BOSS data for a single MJD end-to-end (including plan files)') + fmjd_group = parser.add_argument_group('Field-MJD Selection', 'Arguments to control the Field-MJD Selection to run') + Step_group = parser.add_argument_group('Pipeline Steps', 'Arguments to control which steps of the full pipeline are run') + debug_group = parser.add_argument_group('Debug', 'Arguments to saving of optional debugging files') + opt_group = parser.add_argument_group('Pipeline Options', 'Arguments to set the misc pipeline options') + + parser.add_argument('--module', type=str, help='Module for daily run', default=None) + + + fmjd_group.add_argument('--apo', action = 'store_true', help='Run for APO Only') + fmjd_group.add_argument('--lco', action = 'store_true', help='Run for LCO Only') + fmjd_group.add_argument('--mjd', type=int, help='Manually run for a single/list of mjd (does not update nextmjd.par)', nargs='*') + fmjd_group.add_argument('--range_mjd', type=parseNumList, help='Manually run for a range of mjds (does not update nextmjd.par)') + fmjd_group.add_argument('--no_dither', action='store_true', help='Skip Dither Engineering Fields') + fmjd_group.add_argument('--epoch', action='store_true', help='Run Epoch Coadds') + + parser.add_argument('--no_merge3d', action='store_false',dest='merge3d', help='Skip using prototype 3D Dustmap (in merge mode)') + parser.add_argument('--merge3d', action='store_true', help=argparse.SUPPRESS) + + Step_group.add_argument('--summary', action='store_true', help='Build Summary Files') + Step_group.add_argument('--no_traceflat', action='store_false', dest='traceflat', help='Skip Building and using TraceFlats') + Step_group.add_argument('--traceflat', action='store_true', help=argparse.SUPPRESS) + Step_group.add_argument('--no_prep', action='store_true', help='Skip building TraceFlats and spfibermaps before pipeline run') + Step_group.add_argument('--no_fibermap', action='store_true', help='Skip Pre-Run of readfibermap') + Step_group.add_argument('--skip_plan', nargs='?', const=True, choices=['pipe', 'trace', True, 'all'], + action=SkipPlanAction, default=False, + help="Skip the given plan {pipe,trace,all (flagging --skip_plan with no name will default to all)}") + Step_group.add_argument('--clobber', nargs='*', choices=['spPlans','fibermap', 'trace', True, 'all'], + default=False, + help=("Clobber uubatchpbs + a combo of spPlan, fibermap, and TraceFlat run "+ + "{fibermap,trace, all (flagging --clobber with name will default to all)}")) + Step_group.add_argument('--no_healpix', action='store_true', help='Skip linking of spec files to the MWM_HEALPIX Directory') + + + debug_group.add_argument('--saveraw', action='store_true', help='save sdssproc outputs') + debug_group.add_argument('--debug', action='store_true', help='save extraction debug files') + + + opt_group.add_argument('--tagged', action='store_true', help='sets --merge3d --no_dither --monitor --allemail') + opt_group.add_argument('--daily', action='store_true', help='sets --merge3d --fast --monitor --allemail') + opt_group.add_argument('--dev', action='store_true', help='sets --merge3d --fast --monitor --no_healpix') + + + opt_group.add_argument('--fast', action='store_true', help='turn on fast user for slurm') + opt_group.add_argument('--nosubmit', action='store_true', help='Skip submitting uubatch job (ideal for allowing editting of plans)') + opt_group.add_argument('--noslurm', action='store_true', help='Skip creating uubatch job') + opt_group.add_argument('--batch', action='store_true', help='run for multiple mjds in a single batch') + opt_group.add_argument('--nodb', action='store_true', help='skip Database operations') + opt_group.add_argument('--monitor', action='store_true', help='Monitors pipeline status') + opt_group.add_argument('--allemail', action='store_true', help='Email intermediate log using all emails in $DAILY_DIR/etc/emails (defaults to first email only)') + opt_group.add_argument('--pause', type=int, help='Pause time (s) in status updates', default=15*60) + opt_group.add_argument('--walltime', help='Wall time in hours', type=str, default='40:00:00') + opt_group.add_argument('--mem_per_cpu', help='Memory allocated per CPU', type=str, default=8000) + opt_group.add_argument('--nbundle', help='Number of jobs to bundle', type=int, default= None) + + args = parser.parse_args() + if not hasslurm: + exit() + + if args.tagged: + args.merge3d = True + args.no_dither = True + args.monitor = True + args.allemail = True + elif args.daily: + args.merge3d = True + args.fast = True + args.monitor = True + args.allemail = True + elif args.dev: + args.merge3d = True + args.no_dither = True + args.monitor = True + args.no_healpix = True + + if args.lco is True: + args.obs = ['lco'] + if args.apo is True: + args.obs = ['apo'] + if args.range_mjd is not None: + if args.mjd is not None: + args.mjd.extend(args.range_mjd) + else: + args.mjd = args.range_mjd + + if args.clobber == []: + args.clobber = True + elif type(args.clobber) is bool: + pass + elif 'all' in args.clobber: + args.clobber = True + + if args.module is None: + args.module = os.getenv('MODULE', default=None) + if args.module is None: + args.module = os.getenv('RUN2D', default=None) + if args.module is None: + args.module = 'bhm/master' + elif args.dev: + args.module = f'work/{args.module}' + else: + args.module = f'bhm/{args.module}' + + + uurundaily(args.module, args.obs, mjd=args.mjd, clobber=args.clobber, fast = args.fast, + saveraw=args.saveraw, skip_plan=args.skip_plan, nosubmit=args.nosubmit, + batch=args.batch, noslurm=args.noslurm, debug=args.debug, + nodb= args.nodb, epoch = args.epoch, build_summary = args.summary, + pause = args.pause, monitor=args.monitor, merge3d=args.merge3d, + no_dither=args.no_dither, from_domain="chpc.utah.edu", + traceflat = args.traceflat, no_prep = args.no_prep, + no_fibermap = args.no_fibermap, walltime=args.walltime, + mem_per_cpu = args.mem_per_cpu, allemail=args.allemail, + nbundle = args.nbundle, no_healpix=args.no_healpix) diff --git a/bin/uurundaily.py b/bin/uurundaily.py deleted file mode 100755 index 4bb9a16db..000000000 --- a/bin/uurundaily.py +++ /dev/null @@ -1,504 +0,0 @@ -#!/usr/bin/env python3 -import argparse -from slurm import queue -from os import getenv, makedirs, popen, chdir, getcwd -import os.path as ptt -from pathlib import Path -from uubatchpbs import uubatchpbs -from dailylogger import * -from spplan import spplan1d, spplan2d -from load_module import load_module, load_env -from pydl.pydlutils.yanny import yanny, write_table_yanny -import numpy as np -from astropy.table import Table -import logging -import datetime -import astropy.time -import time -import sys -from glob import glob -import re - -jdate = str(int(float(astropy.time.Time(datetime.datetime.utcnow()).jd) - 2400000.5)) - - -def printAndRun(log, cmd, idlspec2d_dir): - log.info('Running '+cmd) - cmd.replace('spplan', idlspec2d_dir+'/pro/spec2d/spplan') - stream = popen(cmd) - log.info(stream.read()) - log.info('') - - -def read_module(mod): - module = load_module() - module('purge') - module('load', mod) - run2d = load_env('RUN2D') - run1d = load_env('RUN1D') - boss_spectro_redux = load_env('BOSS_SPECTRO_REDUX') - boss_spectro_data_N =load_env('BOSS_SPECTRO_DATA_N') - idlspec2d_dir =load_env('IDLSPEC2D_DIR') - return(run2d, run1d, boss_spectro_redux, boss_spectro_data_N,idlspec2d_dir) - -def get_nextmjd(mod, obs, nextmjd_file = ptt.join(getenv('HOME'),'daily','etc','nextmjd.par')): - try: - nextmjds = yanny(nextmjd_file) - except: - nextmjds = {} - nextmjds["NEXTMJD"] = Table(names=('module', 'mjd', 'obs'), dtype=('S30', int, 'S3')) - obss = np.char.upper(nextmjds["NEXTMJD"]['obs'].astype(str)) - mods = np.char.lower(nextmjds["NEXTMJD"]['module'].astype(str)) - indx = np.where((obss == obs.upper()) & (mods == mod.lower()))[0] - if len(indx) == 0: - nextmjd = jdate - else: - nextmjd = nextmjds["NEXTMJD"]['mjd'][indx][0] - return(nextmjd) - -def check_complete(mod, obs, flag_file = ptt.join(getenv('HOME'),'daily','etc','completemjd.par')): - try: - nextmjds = yanny(nextmjd_file) - except: - nextmjds = {} - nextmjds["COMPLETEMJD"] = Table(names=('module', 'mjd', 'obs'), dtype=('S30', int, 'S3')) - obss = np.char.upper(nextmjds["COMPLETEMJD"]['obs'].astype(str)) - mods = np.char.lower(nextmjds["COMPLETEMJD"]['module'].astype(str)) - indx = np.where((obss == obs.upper()) & (mods == mod.lower()))[0] - if len(indx) == 0: - nextmjd = jdate - else: - nextmjd = nextmjds["COMPLETEMJD"]['mjd'][indx][0] - return(nextmjd) - -def increment_nextmjd(logger, mod, obs, nextmjd, nextmjd_file = ptt.join(getenv('HOME'),'daily','etc','nextmjd.par')): - try: - nextmjds = yanny(nextmjd_file) - except: - nextmjds = {} - nextmjds["NEXTMJD"] = Table(names=('module', 'mjd', 'obs'), dtype=('S30', int, 'S3')) - obss = np.char.upper(nextmjds["NEXTMJD"]['obs'].astype(str)) - mods = np.char.lower(nextmjds["NEXTMJD"]['module'].astype(str)) - indx = np.where((obss == obs.upper()) & (mods == mod.lower()))[0] - if len(indx) != 0: nextmjds["NEXTMJD"]['mjd'][indx] = nextmjd - tab_nextmjds = Table(nextmjds["NEXTMJD"]) - if len(indx) == 0: tab_nextmjds.add_row([mod, nextmjd, obs]) - write_table_yanny(tab_nextmjds, nextmjd_file, tablename = "NEXTMJD", overwrite = True) - logger.info("Next MJD to wait for will be "+str(nextmjd)) - -def flag_complete(logger, mod, mjd, obs, flag_file = ptt.join(getenv('HOME'),'daily','etc','completemjd.par')): - try: - nextmjds = yanny(flag_file) - except: - nextmjds = {} - pass - if len(nextmjds) == 0: - nextmjds = {} - nextmjds["COMPLETEMJD"] = Table(names=('module', 'mjd', 'obs'), dtype=('S30', int, 'S3')) - - obss = np.char.upper(nextmjds["COMPLETEMJD"]['obs'].astype(str)) - mods = np.char.lower(nextmjds["COMPLETEMJD"]['module'].astype(str)) - indx = np.where((obss == obs.upper()) & (mods == mod.lower()))[0] - if len(indx) != 0: nextmjds["COMPLETEMJD"]['mjd'][indx] = mjd - tab_nextmjds = Table(nextmjds["COMPLETEMJD"]) - if len(indx) == 0: tab_nextmjds.add_row([mod, mjd, obs]) - write_table_yanny(tab_nextmjds, flag_file, tablename = "COMPLETEMJD", overwrite = True) - -def get_MJD(logger, boss_spectro_data, mod, obs, run2d, epoch = False, - nextmjd_file = ptt.join(getenv('HOME'),'daily','etc','nextmjd.par'), - flag_file = ptt.join(getenv('HOME'),'daily','etc','completemjd.par'), - from_domain="chpc.utah.edu"): - - nextmjd = get_nextmjd(mod, obs, nextmjd_file = nextmjd_file) - - if epoch: - completemjd = check_complete(mod, obs, nextmjd_file = nextmjd_file) - if completemjd < nextmjd: - logger.info('Daily MJD '+str(nextmjd)+' for run2d='+run2d+' OBS='+obs+' is not complete yet') - return([]) - logger.info("Looking for MJDs of or after "+str(nextmjd)) - path = ptt.join(boss_spectro_data, '?????') - def get_key(fp): - if not ptt.isdir(fp): return(0) - filename = ptt.basename(fp) - int_part = filename.split()[0] - return(int(int_part)) - files = sorted(glob(path),key=get_key) - lastmjd = int(ptt.basename(files[-1])) - if epoch is True: - mjd = [lastmjd] - else: - mjd = [] - while lastmjd >= int(nextmjd): - if ptt.isdir(path.replace('?????', str(lastmjd))): - mjd.append(lastmjd) - else: - logger.info('skipping '+str(lastmjd)+' for '+mod+' obs='+obs) - send_email('skipping '+str(lastmjd)+' for '+mod+' obs='+obs, - ptt.join(getenv('HOME'), 'daily', 'etc','emails'), None, logger, from_domain=from_domain) - #email(subj = 'skipping '+str(lastmjd)+' for '+mod+' obs='+obs) - lastmjd = lastmjd - 1 - if len(mjd) == 0: - logger.info('MJD '+str(nextmjd)+' for run2d='+run2d+' OBS='+obs+' is not here yet') - else: - logger.info('MJDs for run2d='+run2d+' OBS='+obs+ ' transfered: '+str(nextmjd)) - return mjd - - -def dailysummary(queue1, obs, run2d, run1d, module, logger, epoch = False, build=False, pause=300): - - lcoflag = ' --lco' if obs[0].upper() == 'LCO' else '' - epochflag = ' --epoch' if epoch else '' - - running = True - q2start = False - q3start = False - q1done = False - q2done = False - percomppost = 0 - percomp1 = 0 - while running: - - if queue1 is not None and not q1done: - if queue1.get_job_status() is None: - logger.info('Failure in slurm queue') - return('Failure '+run2d +' MJD='+str(jdate) +' OBS='+','.join(obs), None) - - t_percomp1 = queue1.get_percent_complete() if not q1done else 100 - if t_percomp1 != percomp1: - percomp1 = t_percomp1 - logger.info(f'uubatch {percomp1}% complete at {datetime.datetime.today().ctime()}') - elif not q1done: - percomp1 = 100 - logger.info(f'uubatch not submitted at {datetime.datetime.today().ctime()}') - return('uubatch not submitted '+run2d +' MJD='+str(jdate) +' OBS='+','.join(obs), None) - - if percomp1 == 100 and not q1done: - q1done=True - logger.info('Finished uubatach ') - - if q1done and not q2start: - queue1 = None - ### TODO: Post processing - q2start = True - if build: - queue2 = queue(verbose=True) - - if not epoch: - cores = 2 - fmerge_cmd = ptt.join(getenv('HOME'),'daily','cmd',f'run_pyfieldmerge_{run2d}') - - else: - cores = 2 - fmerge_cmd = ptt.join(getenv('HOME'),'daily','cmd','run_pyfieldmerge_epoch_{run2d}') - - queue2.create(label = f"BOSS_Summary_{'-'.join(obs)}_{run2d}", nodes = 1, ppn = 64, walltime = "24:00:00", - alloc='sdss-np', qos = 'sdss', partition = 'sdss-np', mem_per_cpu = 7500, shared = False) - - if not ptt.exists(fmerge_cmd): - makedirs(ptt.join(getenv('HOME'),'daily','cmd'),exist_ok=True) - cmd = [''] - cmd.append('#!/usr/bin/env bash') - cmd.append('') - cmd.append('cd $HOME/daily/logs') - cmd.append(f"module purge ; module load {module}") - cmd.append('set -o verbose') - cmd.append(f"fieldlist.py --create --run1d {run1d} --run2d {run2d} {epochflag}") - cmd.append(f"fieldmerge.py --lite --include_bad --XCSAO {epochflag}") - - - with open(fmerge_cmd,'w') as r: - for c in cmd: - r.write(c+'\n') - - - makedirs(ptt.join(getenv('HOME'),'daily', "logs", "fieldmerge", run2d, f"{'-'.join(obs)}"),exist_ok=True) - fmerge_log = ptt.join(getenv('HOME'),'daily', "logs", "fieldmerge", run2d, f"{'-'.join(obs)}","fieldmerge_"+str(jdate)) - queue2.append(f"module purge ; module load {module} ; source {fmerge_cmd}", - outfile = fmerge_log+".o.log", errfile = fmerge_log+".e.log") - #if not epoch: - queue2.append(f"module purge ; module load {module} ; plot_QA.py --run2d {run2d} {lcoflag} {epochflag} ; ")#+ - #f"plot_QA_v2.py --run2d {run2d} --cron {lcoflag} {epochflag}") - queue2.commit(hard=True, submit=True) - else: - percomppost = 100 - elif q1done: - if queue2.get_job_status() is None: - logger.info('Failure in slurm queue') - return('Failure '+run2d +' MJD='+str(jdate) +' OBS='+','.join(obs), None) - - t_percomppost = queue2.get_percent_complete() if not q2done else 100 - if t_percomppost != percomppost: - percomppost = t_percomppost - logger.info(f"BOSS_Summary_{'-'.join(obs)}_{run2d} {percomppost}% complete at {datetime.datetime.today().ctime()}") - - if percomp1 == 100 and percomppost == 100: - running=False - logger.info('exiting code') - if build: - attachments = [fmerge_log+".o.log", fmerge_log+".e.log"] - else: - attachments = None - return('Complete '+run2d +' MJD='+str(jdate) +' OBS='+','.join(obs), attachments)#[fmerge_log+".o.log", fmerge_log+".e.log"] ) - time.sleep(pause) - return (None, None) - -def monitor_job(queue1, pause = 300, jobname = ''): - percomp1 = 0 - q1done=False - while percomp1 < 100: - if queue1 is not None and not q1done: - if queue1.get_job_status() is None: - logger.info(f'Failure in slurm queue for {jobname}') - t_percomp1 = queue1.get_percent_complete() if not q1done else 100 - if t_percomp1 != percomp1: - percomp1 = t_percomp1 - logger.info(f'{jobname} {percomp1}% complete at {datetime.datetime.today().ctime()}') - elif not q1done: - percomp1 = 100 - logger.info(f'{jobname} not submitted at {datetime.datetime.today().ctime()}') - if percomp1 == 100 and not q1done: - q1done=True - logger.info(f'Finished {jobname} ') - time.sleep(pause) - return - - -def build_run(skip_plan, logdir, obs, mj, run2d, run1d, idlspec2d_dir, options, topdir, today, - module, plates = False, epoch=False, build_summary = False, pause=300, - monitor=False, noslurm=False, no_dither=False, from_domain="chpc.utah.edu", ): - flags = '' - flags1d = '' - if plates is True: - flags = flags + ', /plate_s' - flags1d = flags1d + ', /plates' - if obs[0].upper() == 'LCO': - flags = flags + ', /lco' - flags1d = flags1d + ', /lco' - es = '' if not epoch else '_epoch' - if len(mj) == 1: - mjfile = ptt.join(logdir, str(mj[0])+es+'.log') - else: - mjfile = ptt.join(logdir, str(mj[0])+'-'+str(mj[-1])+es+'.log') - mjfilelog = logging.FileHandler(mjfile) - mjfilelog.setLevel(logging.DEBUG) - mjfilelog.setFormatter(Formatter()) - mjconsole = logging.StreamHandler() - mjconsole.setLevel(logging.DEBUG) - mjconsole.setFormatter(Formatter()) - - logf = 'uurundaily-'+today+'.log' if not epoch else 'uurunepoch-'+today+'.log' - rootfilelog = logging.FileHandler(ptt.join(logdir, logf)) - rootfilelog.setLevel(logging.DEBUG) - rootfilelog.setFormatter(Formatter()) - logger = logging.getLogger(str(mj)) - logger.addHandler(rootfilelog) - logger.addHandler(mjfilelog) - logger.addHandler(mjconsole) - logger.setLevel(logging.DEBUG) - if not skip_plan: - lco = True if obs[0].upper() == 'LCO' else False - try: - plans2d = spplan2d(topdir=topdir, run2d=run2d, mjd=mj, lco=lco, plates=plates, - splog=logger, no_dither=no_dither, returnlist=True) - spplan1d(topdir=topdir, run2d=run2d, mjd=mj, lco=lco, plates=plates, daily=True, splog=logger) - except Exception as e: # work on python 3.x - logger.error('Failure in building spPlans: '+ str(e)) - if monitor: - logger.removeHandler(mjconsole) - logger.removeHandler(mjfilelog) - mjfilelog.close() - mjconsole.close() - send_email('Failure '+run2d +' MJD='+str(jdate) +' OBS='+','.join(obs), - ptt.join(getenv('HOME'), 'daily', 'etc','emails'), None, logger, from_domain=from_domain) - logger.removeHandler(rootfilelog) - rootfilelog.close() - exit - #for mjd in mj: - # printAndRun(logger, "idl -e 'spplan2d"+flags+", MJD="+str(mjd)+"'",idlspec2d_dir) - # printAndRun(logger, "idl -e 'spplan1d"+flags1d+", MJD="+str(mjd)+"'",idlspec2d_dir) - else: - logger.info('Using old spplan files') - fast_msg = '_fast' if options['fast'] else '' - - es = '' if not epoch else ' --epoch' - - logger.info('Running uubatchpbs.py --run2d '+run2d+' --obs '+obs[0]+' --sdssv'+fast_msg+' --email'+ - ' --topdir '+topdir+ ' --run1d '+run1d+ es + - ' --mjd '+' '.join(np.asarray(mj).astype(str).tolist())) - logger.info('') - queue1 = uubatchpbs(**options, obs=obs, run2d = run2d, run1d = run1d, topdir = topdir, mjd=mj, logger=logger) - - if monitor and not noslurm: - subj, attachments = dailysummary(queue1, obs, run2d, run1d, module, logger, epoch = epoch, build=build_summary, pause=pause) - - logger.removeHandler(mjconsole) - logger.removeHandler(mjfilelog) - mjfilelog.close() - mjconsole.close() - - if monitor and not noslurm: - if attachments is not None: attachments.append(mjfile) - else: attachments = mjfile - send_email(subj, ptt.join(getenv('HOME'), 'daily', 'etc','emails'), attachments, logger, from_domain=from_domain) - logger.removeHandler(rootfilelog) - rootfilelog.close() - return - - - -def uurundaily(module, obs, mjd = None, clobber=False, fast = False, saveraw=False, skip_plan=False, - pause=300, nosubmit=False, noslurm=False, batch=False, debug=False, nodb=False, epoch=False, - build_summary=False, monitor=False, merge3d=False, no_dither=False, from_domain="chpc.utah.edu"): - run2d, run1d, topdir, boss_spectro_data, idlspec2d_dir = read_module(module) - if not epoch: - nextmjd_file = ptt.join(getenv('HOME'),'daily','etc','nextmjd.par') - flag_file = ptt.join(getenv('HOME'),'daily','etc','completemjd.par') - else: - nextmjd_file = ptt.join(getenv('HOME'),'daily','etc','nextmjd_epoch.par') - flag_file = ptt.join(getenv('HOME'),'daily','etc','completemjd.par') - - today = datetime.datetime.today().strftime("%m%d%Y") - logdir = ptt.join(getenv("HOME"), "daily", "logs", obs[0].upper(),run2d.upper()) - - - makedirs(logdir,exist_ok=True) - rootlogger = logging.getLogger('root') - - logf = 'uurundaily-'+today+'.log' if not epoch else 'uurunepoch-'+today+'.log' - filelog = logging.FileHandler(ptt.join(logdir, logf)) - filelog.setLevel(logging.DEBUG) - filelog.setFormatter(Formatter()) - console = logging.StreamHandler() - console.setLevel(logging.DEBUG) - console.setFormatter(Formatter()) - - rootlogger.addHandler(filelog) - rootlogger.addHandler(console) - rootlogger.setLevel(logging.DEBUG) - - - rootlogger.debug('========================================') - rootlogger.debug('Starting at '+datetime.datetime.today().ctime()) - - - if obs[0].lower() != 'apo': - boss_spectro_data = boss_spectro_data.replace('apo', obs[0].lower()) - - if mjd is not None: - manual=True - else: - mjd = get_MJD(rootlogger, boss_spectro_data, module, obs[0].upper(), run2d, - nextmjd_file = nextmjd_file, flag_file = flag_file, - epoch=epoch, from_domain=from_domain) - manual=False - if len(mjd) > 0: - if manual is False: - increment_nextmjd(rootlogger, module, obs[0].upper(), max(mjd)+1, - nextmjd_file = nextmjd_file) - dmap = 'bayestar15' if not merge3d else 'merge3d' - options = {'MWM_fluxer' : True, - 'map3d' : dmap, - 'no_reject' : True, - 'no_merge_spall' : True, - 'walltime' : '40:00:00', - 'include_bad' : True, - 'xyfit' : True, - 'loaddesi' : True, - 'shared' : True, - 'mem_per_cpu' : '7500 ', - 'fast' : fast, - 'email' : True, - 'nosubmit' : nosubmit, - 'daily' : True, - 'module' : module, - 'clobber' : clobber, - 'saveraw' : saveraw, - 'debug' : debug, - 'no_db' : nodb, - 'no_write' : noslurm, - 'epoch' : epoch, - } - rootlogger.info('') - if batch is True: - mjd = np.asarray(mjd) - plate_mjds = mjd[np.where(mjd < 59540)[0]] - if len(plate_mjds) >0: - build_run(skip_plan, logdir, obs, plate_mjds.tolist(), run2d, run1d, idlspec2d_dir, options, - topdir, today, module, plates = True, epoch=epoch, build_summary=build_summary, - pause=pause, monitor=monitor, noslurm=noslurm, no_dither=no_dither, from_domain=from_domain) - fps_mjds = mjd[np.where(mjd >= 59540)[0]] - if len(fps_mjds) > 0: - build_run(skip_plan, logdir, obs, fps_mjds.tolist(), run2d, run1d, idlspec2d_dir, options, - topdir, today, module, plates = False, epoch=epoch, build_summary=build_summary, - pause=pause, monitor=monitor, noslurm=noslurm, no_dither=no_dither, from_domain=from_domain) - else: - for mj in mjd: - if mj < 59540: - plates = True - else: - plates = False - build_run(skip_plan, logdir, obs, [mj], run2d, run1d, idlspec2d_dir, options, - topdir, today, module, pause=pause, plates = plates, epoch=epoch, - build_summary=build_summary, monitor=monitor, noslurm=noslurm, - no_dither=no_dither, from_domain=from_domain) - - if (not manual) and monitor: - flag_complete(rootlogger, module, mjd, obs[0].upper(), flag_file = flag_file) - rootlogger.debug('Completed at '+datetime.datetime.today().ctime()) - - -def parseNumList(string): - m = re.match(r'(\d+)(?:-(\d+))?$', string) - # ^ (or use .split('-'). anyway you like.) - if not m: - raise ArgumentTypeError("'" + string + "' is not a range of number. Expected forms like '0-5' or '2'.") - start = m.group(1) - end = m.group(2) or start - return list(range(int(start), int(end)+1)) - -if __name__ == '__main__' : - """ - Batch process Spectro-2D and Spectro-1D reductions based upon already-built plan files - """ - parser = argparse.ArgumentParser( - prog=ptt.basename(sys.argv[0]), - description='Build Exposure Log') - - parser.add_argument('--apo', action = 'store_true') - parser.add_argument('--lco', action = 'store_true') - parser.add_argument('--module', type=str, help='Module for daily run', default='bhm/master') - parser.add_argument('--mjd', type=int, help='Manually run for a single/list of mjd (does not update nextmjd.par)', nargs='*') - parser.add_argument('--range_mjd', type=parseNumList, help='Manually run for a range of mjds (does not update nextmjd.par)') - parser.add_argument('--clobber', action='store_true', help="clobber uubatchpbs run") - parser.add_argument('--fast', action='store_true', help='turn on fast user for slurm') - parser.add_argument('--saveraw', action='store_true', help='save sdssproc outputs') - parser.add_argument('--debug', action='store_true', help='save extraction debug files') - parser.add_argument('--skip_plan', action='store_true', help='Skip createing spplan files') - parser.add_argument('--nosubmit', action='store_true', help='Skip submitting uubatch job (ideal for allowing editting of plans)') - parser.add_argument('--noslurm', action='store_true', help='Skip creating uubatch job') - parser.add_argument('--batch', action='store_true', help='run for multiple mjds in a single batch') - parser.add_argument('--nodb', action='store_true', help='skip Database operations') - parser.add_argument('--epoch', action='store_true', help='Run Epoch Coadds') - parser.add_argument('--summary', action='store_true', help='Build Summary Files') - parser.add_argument('--monitor', action='store_true', help='Monitors pipeline status') - parser.add_argument('--pause', type=int, help='Pause time (s) in status updates', default=15*60) - parser.add_argument('--merge3d', action='store_true', help='Use prototype 3D Dustmap (in merge mode)') - parser.add_argument('--no_dither', action='store_true', help='Skip Dither Engineering Fields') - #parser.add_argument( ### no email - args = parser.parse_args() - - if args.lco is True: - args.obs = ['lco'] - if args.apo is True: - args.obs = ['apo'] - if args.range_mjd is not None: - if args.mjd is not None: - args.mjd.extend(args.range_mjd) - else: - args.mjd = args.range_mjd - - uurundaily(args.module, args.obs, mjd=args.mjd, clobber=args.clobber, fast = args.fast, saveraw=args.saveraw, skip_plan=args.skip_plan, - nosubmit=args.nosubmit, batch=args.batch, noslurm=args.noslurm, debug=args.debug, nodb= args.nodb, epoch = args.epoch, - build_summary = args.summary, pause = args.pause, monitor=args.monitor, merge3d=args.merge3d, no_dither=args.no_dither, - from_domain="chpc.utah.edu") diff --git a/bin/uurundaily_cron b/bin/uurundaily_cron deleted file mode 100755 index 104eeae05..000000000 --- a/bin/uurundaily_cron +++ /dev/null @@ -1,72 +0,0 @@ -#!/bin/bash - - -#### crontab: -## SHELL=/bin/bashSHELL=/bin/bash -## BASH_ENV=/uufs/chpc.utah.edu/common/home/eboss/crontab/.bashrc -## MAILTO=eboss-user@sdss.org -## -## */15 * * * * /uufs/chpc.utah.edu/common/home/eboss/daily/cmd/uurundaily_cron -#### - -#### -# Suggested installation is to create a ln -s from this file to ~eboss/daily/cmd -#### - - -daily=false -lco=false -run2d='' -while getopts "tlr:" argname; do - case $argname in - l) lco=true ;; - t) daily=true ;; - r) run2d=$OPTARG ;; - *) usage ;; - esac -done - -if $daily; then - ver_log='/DAILY'$run2d - ver_flag=' -t' -else - ver_log='/MASTER' - ver_flag='' -fi -if $lco; then - obs_log='/LCO' - obs_flag=' -l' -else - obs_log='/APO' - obs_flag='' -fi - -if [ $run2d != '' ]; then - run_flag=' -r '$run2d -else - run_flag='' -fi - -if [ -d $HOME/daily ]; then - ### Start logging - - timestamp=`date "+%m%d%Y"` - LOGDIR=$HOME/daily/logs${obs_log}${ver_log} - LOGFILE=$LOGDIR/daily$timestamp.log - exec >>$LOGFILE 2<&1 - - ### Use this to temporarily turn off script - #exec echo "turned off at $(date)" - - ### Start Script - - date=$(date) - echo "UURUNDAILY_CRON: ========================================" - echo "UURUNDAILY_CRON: Starting at $date" - $HOME/daily/cmd/uurundaily -g $ver_flag $obs_flag $run_flag - date=$(date) - echo "UURUNDAILY_CRON: Completing at $date" - -else - echo "UURUNDAILY_CRON: Aborting! User $USER does not have a daily directory" -fi diff --git a/bin/uurundaily_script b/bin/uurundaily_script deleted file mode 100644 index 69278de0e..000000000 --- a/bin/uurundaily_script +++ /dev/null @@ -1,190 +0,0 @@ -#!/usr/bin/env bash -# -# Start the daily BOSS spectro pipeline. This script is passed onto rundaily by -# uurundaily_cron using "uurundaily_script $MJD" where $MJD is the mjd to process. -# -# Written by Gary Kushner (LBL). Jan 2010. - -function usage -{ - local execName=$(basename $0) - ( - echo "UURUNDAILY_SCRIPT: usage $execName \$MJD [noupdate] [observatory]" - ) >&2 - exit 1 -} - -function screamAndDie -{ - echo "UURUNDAILY_SCRIPT: Failed $*" | tee -a $LOGDIR/$MJD.warning - - echo "UURUNDAILY_SCRIPT: Failing" - - # Make it easy to see the failure - echo "UURUNDAILY_SCRIPT: Failed!" >>$LOGDIR/$MJD.failed - - ### This hack is too ugly, need to change it ### - echo "UURUNDAILY_SCRIPT: Mailing Error Report" - while IFS= read -r line || [[ -n "$line" ]]; do - if [[ `expr length "$line"` == "0" ]] ; then break ; fi - mail -s "$MJD${lco_l}${daily_l} failed" < $LOGDIR/$MJD.warning - done < "$HOME/daily/etc/emails" -# mail -s "$MJD${lco_l}${daily_l} failed" hjibarram@gmail.com < $LOGDIR/$MJD.warning -# mail -s "$MJD${lco_l}${daily_l} failed" smorris0@illinois.edu < $LOGDIR/$MJD.warning - exit 1 -} - -function printAndRun -{ - echo "UURUNDAILY_SCRIPT: Checkpoint at $(date)" - echo UURUNDAILY_SCRIPT: "$@" - -# if "$dryMode"; then -# return -# fi - - # Silently do nothing - if test "_$*" = "_"; then - return - fi - eval "$@" - - if test $? -ne 0; then - screamAndDie "failed running $*" - fi -} - - -function tryAndRun -{ - echo "$*" - -# if "$dryMode"; then -# return -# fi - - # Silently do nothing - if test "_$*" = "_"; then - return - fi - - eval "$@" -} - -function svnUp -{ - echo "UURUNDAILY_SCRIPT: Attempting to svn " - - tryAndRun "svn up $1" - if test $? == 0; then - return - fi - echo "UURUNDAILY_SCRIPT: ssh-add -l" - ssh-add -l - echo "UURUNDAILY_SCRIPT: svn up $1 failed. Going to try a cleanup." | tee -a $LOGDIR/$MJD.warning - tryAndRun "sleep 600" - tryAndRun "svn cleanup $1" - printAndRun "svn up $1" -} - -function sdss3rsync -{ - echo "UURUNDAILY_SCRIPT: Attempting to rsync MIRROR" - - tryAndRun "rsync -aLrvz --password-file $SDSS3_PASSWD_FILE $1" - if test $? == 0; then - return - fi - echo "UURUNDAILY_SCRIPT: rsync MIRROR failed. Attempting to rsync MAIN" | tee -a $LOGDIR/$MJD.warning - printAndRun "rsync -aLrvz --password-file $SDSS3_PASSWD_FILE $2" -} - -# -### Start of script -# - -### Parse command line - -update=true -lco=false -daily=false - -while getopts "ldnm:" argname; do - case $argname in - n) update=false ;; - l) lco=true ;; - d) daily=true ;; - m) MJD=${OPTARG};; - *) usage - esac -done - -if $lco; then - lco_l="/LCO" -else - lco_l="/APO" -fi - -if $daily; then - daily_l="/DAILY" -else - daily_l="/MASTER" -fi - -### Start logging - -LOGDIR=$HOME/daily/logs${lco_l}${daily_l} -exec >>$LOGDIR/$MJD.log 2>&1 -echo "UURUNDAILY_SCRIPT: Starting at $(date), processing $MJD" - -#if $daily; then -# module switch bhm bhm/daily -#else -# module switch bhm bhm/master -#fi -#module list -shopt -s expand_aliases - -### Sanity Checks - -if test -z $IDLSPEC2D_DIR; then - screamAndDie "idlspec2d must be setup" -fi - -### Setup environment variables - -# Determine idlspec2d version and set -spec2d=$(perl -p -e 's{.*/(.*)$}{\1}' <<< $IDLSPEC2D_DIR) -echo "UURUNDAILY_SCRIPT: Using idlspec2d version $spec2d" - -### -### Start of main processing -### - -echo "UURUNDAILY_SCRIPT: Running IDL Pipeline" -flag_obs="" -if $lco; then - flag_obs=", /lco" -fi -flag_plate="" -if [ "$MJD" -lt 59450 ]; then - flag_plate=", /plate_s" -fi -printAndRun "idl -e 'spplan2d$flag_plate$flag_obs, MJD=$MJD '" -printAndRun "idl -e 'spplan1d$flag_plate$flag_obs, MJD=$MJD '" -UUBATCHPBS="uubatchpbs, /slurm, /daily,/no_merge_spall, /verbose, /MWM_fluxer$flag_plate$flag_obs, /skip_specprimary, /no_reject, qos='-fast', pbs_walltime='40:00:00', pbs_nodes=1, MJD=$MJD " -printAndRun 'idl -e "$UUBATCHPBS" ' - - - -### All Done -echo "UURUNDAILY_SCRIPT: Completing at $(date)" - -### This is a TEMPORARY hack just to make sure things are looking ok! hibarram@illinois.edu -#grep 'UUBATCHPBS' $LOGDIR/$MJD.log | mail -s "$UUBATCHPBS" hjibarram@gmail.com -while IFS= read -r line || [[ -n "$line" ]]; do - if [[ `expr length "$line"` == "0" ]] ; then break ; fi - grep 'UUBATCHPBS' $LOGDIR/$MJD.log | mail -s "$UUBATCHPBS" "$line" -done < "$HOME/daily/etc/emails" - -#grep 'UUBATCHPBS' $LOGDIR/$MJD.log | mail -s "$UUBATCHPBS" smorris0@illinois.edu diff --git a/bin/yanny.py b/bin/yanny.py deleted file mode 100644 index b21e653dc..000000000 --- a/bin/yanny.py +++ /dev/null @@ -1,1075 +0,0 @@ -# -# yanny.py -# -# Python library for reading & writing yanny files. -# -# B. A. Weaver, NYU, 2008-10-20 -# -# $Id: yanny.py 141452 2012-12-18 00:12:50Z weaver $ -# -"""Python library for reading & writing yanny files. - -yanny is an object-oriented interface to FTCL/yanny data files following -these specifications_. - -The format of the returned object is similar to that returned by -``read_yanny()`` in the efftickle perl package (in the yannytools product). - -Currently multidimensional arrays are only supported for type ``char``, but a -close reading of the specifications indicates that multidimensional arrays -were only ever intended to be supported for type ``char``. - -.. _specifications: http://www.sdss3.org/dr8/software/par.php -""" - -__author__ = 'Benjamin Weaver ' - -__version__ = '$Revision: 141452 $'.split(': ')[1].split()[0] - -__all__ = [ 'yanny', 'read_yanny', 'write_yanny', 'write_yanny_append' ] - -__docformat__ = "restructuredtext en" - -# -# Modules -# -import re -import os -import os.path -import datetime -import numpy -# -# Classes -# -class yanny(dict): - """An object interface to a yanny file. - - Most users will use the convenience functions defined in this package, but - this object provides a somewhat more powerful way of reading & - writing the data in a yanny file. - - Attributes - ---------- - np : bool - If True, data in a yanny file will be converted into a NumPy record - array. - debug : bool - If True, some simple debugging statements will be turned on. - _filename : str - The name of a yanny parameter file. - _contents : str - The complete contents of a yanny parameter file. - _struct_type_caches : dict - A dictionary of dictionaries, one dictionary for every structure - definition in a yanny parameter file. Contains the types of - each column - _struct_isarray_caches : dict - A dictionary of dictionaries, one dictionary for every structure - definition in a yanny parameter file. Contains a boolean value - for every column. - _enum_cache : dict - Initially ``None``, this attribute is initialized the first time - the ``isenum()`` method is called. The keyword is the name of the - enum type, the value is a list of the possible values of that type. - - Parameters - ---------- - filename : str - The name of a yanny file. - np : bool, optional - If True, data in a yanny file will be converted into a NumPy record - array. Default is False - debug : bool, optional - If True, some simple debugging statements will be turned on. Default - is False. - """ - # - # - # - @staticmethod - def get_token(string): - """Removes the first 'word' from string. - - If the 'word' is enclosed in double quotes, it returns the - contents of the double quotes. If the 'word' is enclosed in - braces, it returns the contents of the braces, but does not - attempt to split the array. If the 'word' is the last word of the - string, remainder is set equal to the empty string. This is - basically a wrapper on some convenient regular expressions. - - Parameters - ---------- - string : str - A string containing words. - - Returns - ------- - get_token : tuple - A tuple containing the first word and the remainder of the string. - - Examples - -------- - >>> yanny.yanny.get_token("The quick brown fox") - ('The','quick brown fox') - """ - if string[0] == '"': - (word, remainder) = re.search(r'^"([^"]*)"\s*(.*)', - string).groups() - elif string[0] == '{': - (word, remainder) = re.search(r'^\{\s*([^}]*)\s*\}\s*(.*)', - string).groups() - else: - try: - (word, remainder) = re.split(r'\s+',string,1) - except ValueError: - (word, remainder) = (string, '') - if remainder is None: - remainder = '' - return (word,remainder) - # - # - # - @staticmethod - def protect(x): - """Used to appropriately quote string that might contain whitespace. - - This method is mostly for internal use by the yanny object. - - Parameters - ---------- - x : str - The data to protect. - - Returns - ------- - protect : str - The data with white space protected by quotes. - - Examples - -------- - >>> yanny.yanny.protect('This string contains whitespace.') - '"This string contains whitespace."' - """ - s = str(x) - if len(s) == 0 or re.search(r'\s+',s) is not None: - return '"' + s + '"' - else: - return s - # - # - # - @staticmethod - def dtype_to_struct(dt,structname='mystruct',enums=dict()): - """Convert a NumPy dtype object describing a record array to - a typedef struct statement. - - The second argument is the name of the structure. - If any of the columns are enum types, enums must - be a dictionary with the keys the column names, and the values - are a tuple containing the name of the enum type as the first item - and a tuple or list of possible values as the second item. - - Parameters - ---------- - dt : numpy.dtype - The dtype of a NumPy record array. - structname : str, optional - The name to give the structure in the yanny file. Defaults to 'MYSTRUCT'. - enums : dict, optional - A dictionary containing enum information. See details above. - - Returns - ------- - dtype_to_struct : dict - A dictionary suitable for setting the 'symbols' dictionary of a new - yanny object. - - Examples - -------- - """ - dtmap = {'i2':'short','i4':'int','i8':'long','f4':'float', - 'f8':'double'} - returnenums = list() - for e in enums: - lines = list() - lines.append('typedef enum {') - for n in enums[e][1]: - lines.append(" {0},".format(n)) - lines[-1] = lines[-1].strip(',') - lines.append('}} {0};'.format(enums[e][0].upper())) - returnenums.append("\n".join(lines)) - #lines.append('') - lines = list() - lines.append('typedef struct {') - for c in dt.names: - if dt[c].kind == 'V': - t = dt[c].subdtype[0].str[1:] - l = dt[c].subdtype[1][0] - s = dt[c].subdtype[0].itemsize - else: - t = dt[c].str[1:] - l = 0 - s = dt[c].itemsize - line = ' ' - if t[0] == 'S': - if c in enums: - line += enums[c][0].upper() - else: - line += 'char' - else: - line += dtmap[t] - line += ' {0}'.format(c) - if l > 0: - line += "[{0:d}]".format(l) - if t[0] == 'S' and c not in enums: - line += "[{0:d}]".format(s) - line += ';' - lines.append(line) - lines.append('}} {0};'.format(structname.upper())) - return {structname.upper():list(dt.names),'enum':returnenums,'struct':["\n".join(lines)]} - # - # - # - def __init__(self,filename=None,np=False,debug=False): - """Create a yanny object using a yanny file. - - Create a yanny object using a yanny file, filename. If the file exists, - it is read, & the dict structure of the object will be basically the - same as that returned by ``read_yanny()`` in the efftickle package. - - If the file does not exist, or if no filename is given, a blank - structure is returned. Other methods allow for subsequent writing - to the file. - """ - # - # The symbol hash is inherited from the old read_yanny - # - self['symbols'] = dict() - # - # Create special attributes that contain the internal status of the object - # this should prevent overlap with keywords in the data files - # - self._filename = '' - self._contents = '' - # - # Since the re is expensive, cache the structure types keyed by the field. - # Create a dictionary for each structure found. - # - self._struct_type_caches = dict() - self._struct_isarray_caches = dict() - self._enum_cache = None - # - # Optionally convert numeric data into NumPy arrays - # - self.np = np - # - # Turn on simple debugging - # - self.debug = debug - # - # If the file exists, read it - # - if filename is not None: - if os.access(filename,os.R_OK): - self._filename = filename - with open(filename,'r') as f: - self._contents = f.read() - self._parse() - return - # - # - # - def __str__(self): - """Implement the ``str()`` function for yanny objects. - - Simply prints the current contents of the yanny file. - """ - return self._contents - # - # - # - def __eq__(self,other): - """Test two yanny objects for equality. - - Two yanny objects are assumed to be equal if their contents are equal. - """ - if isinstance(other,yanny): - return str(other) == str(self) - return NotImplemented - # - # - # - def __ne__(self,other): - """Test two yanny objects for inequality. - - Two yanny objects are assumed to be unequal if their contents are unequal. - """ - if isinstance(other,yanny): - return str(other) != str(self) - return NotImplemented - # - # - # - def __nonzero__(self): - """Give a yanny object a definite truth value. - - A yanny object is considered ``True`` if its contents are non-zero. - """ - return len(self._contents) > 0 - # - # - # - def type(self,structure,variable): - """Returns the type of a variable defined in a structure. - - Returns ``None`` if the structure or the variable is undefined. - """ - if structure not in self: - return None - if variable not in self.columns(structure): - return None - defl = list(filter(lambda x: x.find(structure.lower()) > 0, - self['symbols']['struct'])) - defu = list(filter(lambda x: x.find(structure.upper()) > 0, - self['symbols']['struct'])) - if len(defl) != 1 and len(defu) != 1: - return None - elif len(defl) == 1: - definition = defl - else: - definition = defu - # - # Added code to cache values to speed up parsing large files. - # 2009.05.11 / Demitri Muna, NYU - # Find (or create) the cache for this structure. - # - try: - cache = self._struct_type_caches[structure] - except KeyError: - self._struct_type_caches[structure] = dict() - cache = self._struct_type_caches[structure] # cache for one struct type - # - # Lookup (or create) the value for this variable - # - try: - var_type = cache[variable] - except KeyError: - if self.debug: - print(variable) - typere = re.compile(r'(\S+)\s+{0}([[<].*[]>]|);'.format(variable)) - (typ,array) = typere.search(definition[0]).groups() - var_type = typ + array.replace('<','[').replace('>',']') - cache[variable] = var_type - return var_type - # - # - # - def basetype(self,structure,variable): - """Returns the bare type of a variable, stripping off any array - information.""" - typ = self.type(structure,variable) - if self.debug: - print(variable, typ) - try: - return typ[0:typ.index('[')] - except ValueError: - return typ - # - # - # - def isarray(self,structure,variable): - """Returns True if the variable is an array type. - - For character types, this means a two-dimensional array, - *e.g.*: ``char[5][20]``. - """ - try: - cache = self._struct_isarray_caches[structure] - except KeyError: - self._struct_isarray_caches[structure] = dict() - cache = self._struct_isarray_caches[structure] - try: - result = cache[variable] - except KeyError: - typ = self.type(structure,variable) - character_array = re.compile(r'char[[<]\d*[]>][[<]\d*[]>]') - if ((character_array.search(typ) is not None) or - (typ.find('char') < 0 and (typ.find('[') >= 0 - or typ.find('<') >= 0))): - cache[variable] = True - else: - cache[variable] = False - result = cache[variable] - return result - # - # - # - def isenum(self,structure,variable): - """Returns true if a variable is an enum type. - """ - if self._enum_cache is None: - self._enum_cache = dict() - if 'enum' in self['symbols']: - for e in self['symbols']['enum']: - m = re.search(r'typedef\s+enum\s*\{([^}]+)\}\s*(\w+)\s*;',e).groups() - self._enum_cache[m[1]] = re.split(r',\s*',m[0].strip()) - else: - return False - return self.basetype(structure,variable) in self._enum_cache - # - # - # - def array_length(self,structure,variable): - """Returns the length of an array type or 1 if the variable is not - an array. - - For character types, this is the length of a two-dimensional - array, *e.g.*, ``char[5][20]`` has length 5. - """ - if self.isarray(structure,variable): - typ = self.type(structure,variable) - return int(typ[typ.index('[')+1:typ.index(']')]) - else: - return 1 - # - # - # - def char_length(self,structure,variable): - """Returns the length of a character field. - - *e.g.* ``char[5][20]`` is an array of 5 strings of length 20. - Returns ``None`` if the variable is not a character type. If the - length is not specified, *i.e.* ``char[]``, it returns the length of - the largest string. - """ - typ = self.type(structure,variable) - if typ.find('char') < 0: - return None - try: - return int(typ[typ.rfind('[')+1:typ.rfind(']')]) - except ValueError: - if self.isarray(structure,variable): - return max([max(map(len,r)) for r in self[structure][variable]]) - else: - return max(map(len,self[structure][variable])) - # - # - # - def dtype(self,structure): - """Returns a NumPy dtype object suitable for describing a table as - a record array. - - Treats enums as string, which is what the IDL reader does. - """ - dt = list() - dtmap = {'short':'i2', 'int':'i4', 'long':'i8', 'float':'f', - 'double':'d' } - for c in self.columns(structure): - typ = self.basetype(structure,c) - if typ == 'char': - d = "S{0:d}".format(self.char_length(structure,c)) - elif self.isenum(structure,c): - d = "S{0:d}".format(max(map(len,self._enum_cache[typ]))) - else: - d = dtmap[typ] - if self.isarray(structure,c): - dt.append((c,d,(self.array_length(structure,c),))) - else: - dt.append((c,d)) - dt = numpy.dtype(dt) - return dt - # - # - # - def convert(self,structure,variable,value): - """Converts value into the appropriate (Python) type. - - * ``short`` & ``int`` are converted to Python ``int``. - * ``long`` is converted to Python ``long``. - * ``float`` & ``double`` are converted to Python ``float``. - * Other types are not altered. - - There may be further conversions into NumPy types, but this is the - first stage. - """ - typ = self.basetype(structure,variable) - if (typ == 'short' or typ == 'int'): - if self.isarray(structure,variable): - return map(int, value) - else: - return int(value) - if typ == 'long': - if self.isarray(structure,variable): - return map(long, value) - else: - return long(value) - if (typ == 'float' or typ == 'double'): - if self.isarray(structure,variable): - return map(float, value) - else: - return float(value) - return value - # - # - # - def tables(self): - """Returns a list of all the defined structures. - - This is just the list of keys of the object with the 'internal' - keys removed. - """ - foo = self['symbols'].keys() - foo.remove('struct') - foo.remove('enum') - return foo - # - # - # - def columns(self,table): - """Returns an ordered list of column names associated with a particular - table. - - The order is the same order as they are defined in the yanny file. - """ - foo = list() - if table in self['symbols']: - return self['symbols'][table] - return foo - # - # - # - def size(self,table): - """Returns the number of rows in a table. - """ - foo = self.columns(table) - return len(self[table][foo[0]]) - # - # - # - def pairs(self): - """Returns a list of keys to keyword/value pairs. - - Equivalent to doing ``self.keys()``, but with all the data tables & - other control structures stripped out. - """ - p = list() - foo = self.tables() - for k in self.keys(): - if k == 'symbols' or k in foo: - continue - p.append(k) - return p - # - # - # - def row(self,table,index): - """Returns a list containing a single row from a specified table in column order - - If index is out of range, it returns an empty list. - - If the yanny object instance is set up for NumPy record arrays, then - a single row can be obtained with:: - - >>> row0 = par['TABLE'][0] - """ - datarow = list() - if table in self and index >= 0 and index < self.size(table): - for c in self.columns(table): - datarow.append(self[table][c][index]) - return datarow - # - # - # - def set_filename(self,newfile): - """Updates the filename associated with the yanny object. - - Use this if the object was created with no filename. - """ - self._filename = newfile - return - # - # - # - def list_of_dicts(self, table): - """Construct a list of dictionaries. - - Takes a table from the yanny object and constructs a list object - containing one row per entry. Each item in the list is a dictionary - keyed by the struct value names. - - If the yanny object instance is set up for NumPy record arrays, then - the same functionality can be obtained with:: - - >>> foo = par['TABLE'][0]['column'] - """ - return_list = list() - d = dict() - struct_fields = self.columns(table) # I'm assuming these are in order... - for i in range(self.size(table)): - one_row = self.row(table, i) # one row as a list - j = 0 - for key in struct_fields: - d[key] = one_row[j] - j = j + 1 - return_list.append(dict(d)) # append a new dict (copy of d) - return return_list - # - # - # - def new_dict_from_pairs(self): - """Returns a new dictionary of keyword/value pairs. - - The new dictionary (*i.e.*, not a yanny object) contains the keys - that ``self.pairs()`` returns. There are two reasons this is convenient: - - * the key 'symbols' that is part of the yanny object will not be present - * a simple yanny file can be read with no further processing - - Example - ------- - - Read a yanny file and return only the pairs:: - - >>> new_dict = yanny.yanny(file).new_dict_from_pairs() - - added: Demitri Muna, NYU 2009-04-28 - """ - new_dictionary = dict() - for key in self.pairs(): - new_dictionary[key] = self[key] - return new_dictionary - # - # - # - def write(self,*args): - """Write a yanny object to a file. - - This assumes that the filename used to create the object was not that - of a pre-existing file. If a file of the same name is detected, - this method will *not* attempt to overwrite it, but will print a warning. - This also assumes that the special 'symbols' key has been properly - created. This will not necessarily make the file very human-readable, - especially if the data lines are long. If the name of a new file is - given, it will write to the new file (assuming it doesn't exist). - If the writing is successful, the data in the object will be updated. - """ - if len(args) > 0: - newfile = args[0] - else: - if len(self._filename) > 0: - newfile = self._filename - else: - raise ValueError("No filename specified!") - basefile = os.path.basename(newfile) - timestamp = datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S UTC') - contents = "#\n# {0}\n#\n# Created by yanny.py\n#\n# {1}\n#\n".format(basefile,timestamp) - # - # Print any key/value pairs - # - for key in self.pairs(): - contents += "{0} {1}\n".format(key,self[key]) - # - # Print out enum definitions - # - if len(self['symbols']['enum']) > 0: - contents += "\n" + "\n\n".join(self['symbols']['enum']) + "\n" - # - # Print out structure definitions - # - if len(self['symbols']['struct']) > 0: - contents += "\n" + "\n\n".join(self['symbols']['struct']) + "\n" - contents += "\n" - # - # Print out the data tables - # - for sym in self.tables(): - columns = self.columns(sym) - for k in range(self.size(sym)): - line = list() - line.append(sym) - for col in columns: - if self.isarray(sym,col): - datum = '{' + ' '.join(map(self.protect,self[sym][col][k])) + '}' - else: - datum = self.protect(self[sym][col][k]) - line.append(datum) - contents += "{0}\n".format(' '.join(line)) - # - # Actually write the data to file - # - if os.access(newfile,os.F_OK): - print("{0} exists, aborting write!".format(newfile)) - print("For reference, here's what would have been written:") - print(contents) - else: - with open(newfile,'w') as f: - f.write(contents) - self._contents = contents - self._filename = newfile - self._parse() - return - # - # - # - def append(self,datatable): - """Appends data to an existing FTCL/yanny file. - - Tries as much as possible to preserve the ordering & format of the - original file. The datatable should adhere to the format of the - yanny object, but it is not necessary to reproduce the 'symbols' - dictionary. It will not try to append data to a file that does not - exist. If the append is successful, the data in the object will be updated. - """ - if len(self._filename) == 0: - raise ValueError("No filename is set for this object. Use the set_filename method to set the filename!") - if type(datatable) != dict: - raise ValueError("Data to append is not of the correct type. Use a dict!") - timestamp = datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S UTC') - contents = '' - # - # Print any key/value pairs - # - for key in datatable.keys(): - if key.upper() in self.tables() or key == 'symbols': - continue - contents += "{0} {1}\n".format(key, datatable[key]) - # - # Print out the data tables - # - for sym in self.tables(): - if sym.lower() in datatable: - datasym = sym.lower() - else: - datasym = sym - if datasym in datatable: - columns = self.columns(sym) - for k in range(len(datatable[datasym][columns[0]])): - line = list() - line.append(sym) - for col in columns: - if self.isarray(sym,col): - datum = '{' + ' '.join(map(self.protect,datatable[datasym][col][k])) + '}' - else: - datum = self.protect(datatable[datasym][col][k]) - line.append(datum) - contents += "{0}\n".format(' '.join(line)) - # - # Actually write the data to file - # - if len(contents) > 0: - contents = ("# Appended by yanny.py at {0}.\n".format(timestamp)) + contents - if os.access(self._filename,os.W_OK): - with open(self._filename,'a') as f: - f.write(contents) - self._contents += contents - self._parse() - else: - print("{0} does not exist, aborting append!".format(self._filename)) - print("For reference, here's what would have been written:") - print(contents) - else: - print("Nothing to be appended!") - return - # - # - # - def _parse(self): - """Converts text into tables that users can use. - - This method is for use internally by the yanny object. It is not - meant to be called by users. - - Parsing proceeds in this order: - - #. Lines that end with a backslash character ``\`` are reattached - to following lines. - #. Structure & enum definitions are identified, saved into the - 'symbols' dictionary & stripped from the contents. - #. Structure definitions are interpreted. - #. At this point, the remaining lines of the original file can only - contain these things: - - * 'blank' lines, including lines that only contain comments - * keyword/value pairs - * structure rows - - #. The remaining lines are scanned sequentially. - - #. 'Blank' lines are identified & ignored. - #. Whitespace & comments are stripped from non-blank lines. - #. Empty double braces ``{{}}`` are converted into empty double - quotes ``""``. - #. If the first word on a line matches the name of a structure, - the line is broken up into tokens & each token or set of tokens - (for arrays) is converted to the appropriate Python type. - #. If the first word on a line does not match the name of a - structure, it must be a keyword, so this line is interpreted - as a keyword/value pair. No further processing is done to - the value. - - #. At the conclusion of parsing, if ``self.np`` is ``True``, the - structures are converted into NumPy record arrays. - """ - # - # there are five things we might find - # 1. 'blank' lines including comments - # 2. keyword/value pairs (which may have trailing comments) - # 3. enumeration definitions - # 4. structure definitions - # 5. data - # - lines = self._contents - # - # Reattach lines ending with \ - # - lines = re.sub(r'\\\s*\n',' ',lines) - # - # Find structure & enumeration definitions & strip them out - # - self['symbols']['struct'] = re.findall(r'typedef\s+struct\s*\{[^}]+\}\s*\w+\s*;',lines) - self['symbols']['enum'] = re.findall(r'typedef\s+enum\s*\{[^}]+\}\s*\w+\s*;',lines) - lines = re.sub(r'typedef\s+struct\s*\{[^}]+\}\s*\w+\s*;','',lines) - lines = re.sub(r'typedef\s+enum\s*\{[^}]+\}\s*\w+\s*;','',lines) - # - # Interpret the structure definitions - # - typedefre = re.compile(r'typedef\s+struct\s*\{([^}]+)\}\s*(\w*)\s*;') - for typedef in self['symbols']['struct']: - typedefm = typedefre.search(typedef) - (definition,name) = typedefm.groups() - self[name.upper()] = dict() - self['symbols'][name.upper()] = list() - definitions = re.findall(r'\S+\s+\S+;',definition) - for d in definitions: - d = d.replace(';','') - (datatype,column) = re.split(r'\s+',d) - column = re.sub(r'[[<].*[]>]$','',column) - self['symbols'][name.upper()].append(column) - self[name.upper()][column] = list() - comments = re.compile(r'^\s*#') # Remove lines containing only comments - blanks = re.compile(r'^\s*$') # Remove lines containing only whitespace - trailing_comments = re.compile(r'\s*\#.*$') # Remove trailing comments - double_braces = re.compile(r'\{\s*\{\s*\}\s*\}') # Double empty braces get replaced with empty quotes - if len(lines) > 0: - for line in lines.split('\n'): - if self.debug: - print(line) - if len(line) == 0: - continue - if comments.search(line) is not None: - continue - if blanks.search(line) is not None: - continue - # - # Remove leading & trailing blanks & comments - # - line = line.strip() - line = trailing_comments.sub('',line) - line = double_braces.sub('""',line) - # - # Now if the first word on the line does not match a - # structure definition it is a keyword/value pair - # - (key, value) = self.get_token(line) - uckey = key.upper() - if uckey in self['symbols'].keys(): - # - # Structure data - # - for column in self['symbols'][uckey]: - if len(value) > 0 and blanks.search(value) is None: - (data,value) = self.get_token(value) - if self.isarray(uckey,column): - # - # An array value - # if it's character data, it won't be - # delimited by {} unless it is a multidimensional - # string array. It may or may not be delimited - # by double quotes - # - # Note, we're assuming here that the only - # multidimensional arrays are string arrays - # - arraydata = list() - while len(data) > 0: - (token, data) = self.get_token(data) - arraydata.append(token) - self[uckey][column].append( - self.convert(uckey,column,arraydata)) - else: - # - # A single value - # - self[uckey][column].append( - self.convert(uckey,column,data)) - else: - break - else: - # - # Keyword/value pair - # - self[key] = value - # - # If self.np is True, convert tables into NumPy record arrays - # - if self.np: - for t in self.tables(): - record = numpy.zeros((self.size(t),),dtype=self.dtype(t)) - for c in self.columns(t): - record[c] = self[t][c] - self[t] = record - return -# -# Functions -# -def read_yanny(filename): - """Reads the contents of an FTCL/yanny file & returns the data in a dictionary. - - This is just a convenience wrapper on a yanny object, for use when a - user is not interested in changing the contents of a yanny object. - - Parameters - ---------- - filename : str - The name of a parameter file. - - Returns - ------- - par : dict - A copy of the yanny object. - - Examples - -------- - """ - par = yanny(filename) - return par.copy() -# -# -# -def write_yanny(filename,datatable): - """Writes the contents of a dictionary to an FTCL/yanny file. - - Ideally used in conjunction with read_yanny() to create an initial - dictionary of the appropriate format. - - Parameters - ---------- - filename : str - The name of a parameter file. - datatable : dict - A dictionary containing data that can be copied into a yanny object. - - Returns - ------- - par : yanny.yanny - The yanny object resulting from writing the file. - - Examples - -------- - """ - par = yanny(filename) - for key in datatable: - par[key] = datatable[key] - par.write(filename) - return par -# -# -# -def write_yanny_append(filename,datatable): - """Appends the contents of a dictionary to an existing FTCL/yanny file. - - Ideally used in conjunction with read_yanny() to create an initial - dictionary of the appropriate format. - - Parameters - ---------- - filename : str - The name of a parameter file. - datatable : dict - A dictionary containing data that can be copied into a yanny object. - - Returns - ------- - par : yanny.yanny - The yanny object resulting from appending the file. - - Examples - -------- - """ - par = yanny(filename) - par.append(datatable) - return par -# -# -# -def write_ndarray_to_yanny(filename,datatable,structname='mystruct',enums=dict(),hdr=dict()): - """Converts a NumPy record array into a new FTCL/yanny file. - - Returns a new yanny object corresponding to the file. - - Parameters - ---------- - filename : str - The name of a parameter file. - datatable : numpy.ndarray - A NumPy record array containing data that can be copied into a yanny object. - structname : str, optional - The name to give the structure in the yanny file. Defaults to 'MYSTRUCT'. - enums : dict, optional - A dictionary containing enum information. See details above. - hdr : dict, optional - A dictionary containing keyword/value pairs for the 'header' of the yanny file. - - Returns - ------- - par : yanny.yanny - The yanny object resulting from writing the file. - - Examples - -------- - """ - par = yanny(filename,np=True,debug=True) - par['symbols'] = par.dtype_to_struct(datatable.dtype,structname=structname,enums=enums) - par[structname.upper()] = datatable - for key in hdr: - par[key] = hdr[key] - par.write(filename) - return par -# -# -# -def main(): - """Used to test the yanny class. - """ - par = yanny(os.path.join(os.getenv('YANNYTOOLS_DIR'),'data','test.par'), - np=True,debug=True) - print(par.pairs()) - for p in par.pairs(): - print("{0} => {1}".format(p, par[p])) - print(par.keys()) - print(par['symbols'].keys()) - print(par['symbols']['struct']) - print(par['symbols']['enum']) - print(par.tables()) - for t in par.tables(): - print(par.dtype(t)) - print("{0}: {1:d} entries".format(t,par.size(t))) - print(par.columns(t)) - for c in par.columns(t): - print("{0}: type {1}".format(c,par.type(t,c))) - print(par[t][c]) - if par.isenum('MYSTRUCT','new_flag'): - print(par._enum_cache) - par.write() # This should fail, since test.par already exists. - datatable = {'status_update': {'state':['SUCCESS', 'SUCCESS'], - 'timestamp':['2008-06-22 01:27:33','2008-06-22 01:27:36']}, - 'new_keyword':'new_value'} - par.set_filename(os.path.join(os.getenv('YANNYTOOLS_DIR'),'data','test_append.par')) - par.append(datatable) # This should also fail, because test_append.par does not exist - return -# -# Testing purposes -# -if __name__ == '__main__': - main() - diff --git a/bin/yanny.pyc b/bin/yanny.pyc deleted file mode 100644 index 1eefb98eb..000000000 Binary files a/bin/yanny.pyc and /dev/null differ diff --git a/bin/zplot b/bin/zplot deleted file mode 100755 index 0c49a5d19..000000000 --- a/bin/zplot +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash -f -#------------------------------------------------------------------------------ -# The following script finds an SDSS spectrum based upon RA,DEC position. -# It prints the plate, MJD and fiber of all matches, then plots the first -# match. -# -# This script is hard-wired to work at Princeton w/out adding anything -# to your path. -# -# Example: zplot 37.9069 -7.4818 -#------------------------------------------------------------------------------ -if [ $# = 0 ] ; then - echo Must specify RA and DEC on command line, e.g. "zplot 37.9069 -7.4818" - exit -fi -TMPFILE=zplot.idl -#------------------------------------------------------------------------------ -PATH=/usr/bin:/bin:/usr/peyton/bin:/usr/X11R6/bin:.:/usr/openwin/bin:/usr/peyton/pgi/linux86/bin -export IDLSPEC2D_DIR=/u/schlegel/idlspec2d -export IDLUTILS_DIR=/u/schlegel/idlutils -export IDL_DIR=/usr/peyton/common/licensed/idl_5.4 -export IDL_PATH=+/u/schlegel/idlspec2d/pro:+/u/schlegel/idlutils/pro:+/u/schlegel/idlutils/goddard/pro:.:+/usr/peyton/common/licensed/idl_5.4/lib -export BOSS_SPECTRO_REDUX=/u/dss/spectro -export RA=$1 -export DEC=$2 -echo Looking for $RA $DEC -echo !quiet=1 > $TMPFILE -echo "findspec,getenv('RA'),getenv('DEC'),slist=slist" >> $TMPFILE -echo "if (slist.plate EQ 0) then print,'No matches found. Exiting.'" >> $TMPFILE -echo "if (slist.plate EQ 0) then exit" >> $TMPFILE -echo "help,slist,/st" >> $TMPFILE -echo "plotspec,slist.plate,slist.fiberid,mjd=slist.mjd" >> $TMPFILE -echo "print,'Type exit to quit'" >> $TMPFILE -idl $TMPFILE -\rm -f $TMPFILE -#------------------------------------------------------------------------------ diff --git a/branches b/branches deleted file mode 100644 index 4e49bafad..000000000 --- a/branches +++ /dev/null @@ -1,84 +0,0 @@ -This file is used to describe the branch structure of idlspec2d - -Fri Feb 6 12:09:54 EST 2004 RHL - cvs rtag -r v4_10_7 v4_11_0 idlspec2d - cvs rtag -r v4_11_0 -b v4_11 idlspec2d - cvs rtag RHL-create-v4_11 idlspec2d - - cvs co -r v4_11 idlspec2d - (check which files Christy modified, and (if DLS modified them) - that the changes were in comments, or preceded a CAT checkin) - - cp ~/idlspec2d-MAIN/pro/fluxfix/jeg_sphoto_coef.pro pro/fluxfix - cp ~/idlspec2d-MAIN/pro/fluxfix/spcoadd_fluxed_frames.pro pro/fluxfix - cp ~/idlspec2d-MAIN/pro/spec2d/plotsn.pro pro/spec2d - cp ~/idlspec2d-MAIN/pro/spec2d/platesn.pro pro/spec2d - - cvs rtag -r v4_11 v4_11_1 idlspec2d - -Thu Mar 18 13:37:58 CST 2004 - Add a retro-active v4_10_2 tag, "v4_10_2-2003/8/13" - cvs rtag -D 2003/8/13 v4_10_2-2003/8/13 idlspec2d - -Wed Mar 24 16:20:34 EST 2004 - Create v4_10 branch - cvs rtag -r v4_10_0 -b v4_10 idlspec2d - - Move changes onto v4_10 branch, preserving state at known tags - - cd ~/sss; cvs co -r v4_10 idlspec2d; mv idlspec2d idlspec2d-v4_10 - cd ~/sss/idlspec2d-v4_10 - cvs update -j v4_10_0 -j v4_10_1 - - cd ~/idlspec2d - cvs update -r v4_10_1 - diff -rc ~/sss/idlspec2d-v4_10 ~/idlspec2d - (only $Name$ and CVS directories are different) - - cd ~/sss/idlspec2d-v4_10 - cvs ci - cvs rtag -r v4_10 VV4_10_1 idlspec2d - - cvs update -j v4_10_1 -j v4_10_2-2003/8/13 - - cd ~/idlspec2d - cvs update -r v4_10_2-2003/8/13 - diff -rc ~/sss/idlspec2d-v4_10 ~/idlspec2d - (only $Name$ and CVS directories are different) - - cd ~/sss/idlspec2d-v4_10 - cvs ci - cvs rtag -r v4_10 VV4_10_2 idlspec2d - - Brian says: - Create v4_10_2f as of 2003/8/13, but with - pro/fluxfix/newspcombine.pro as of 2003/10/29 - OK: - cvs rtag -D 2003/8/13 VV4_10_3 idlspec2d - cd ~/SSS; cvs co idlspec2d/pro/fluxfix/newspcombine.pro - cd idlspec2d - cvs tag -F -D 2003/10/29 VV4_10_3 pro/fluxfix/newspcombine.pro - cd ..; cvs -Q release -d idlspec2d - - This tag is on the mainline; drat; I wanted to call mainline - tags v4_10_3: - cvs rtag -r VV4_10_3 v4_10_3 idlspec2d - cvs rtag -d VV4_10_3 idlspec2d - - cd ~/sss/idlspec2d-v4_10 - cvs update -j v4_10_2-2003/8/13 -j v4_10_3 - - cd ~/idlspec2d - cvs update -r v4_10_3 - diff -rc ~/sss/idlspec2d-v4_10 ~/idlspec2d - (only $Name$ and CVS directories are different) - - cd ~/sss/idlspec2d-v4_10 - cvs ci - cvs rtag -r v4_10 VV4_10_3 idlspec2d - - OK, make vv tags for other pre-existing v4_10_? tags: - - cd ~/sss/idlspec2d-v4_10 - cvs update -j v4_10_3 -j v4_10_6 - diff --git a/datamodel/fieldList_dm.par b/datamodel/fieldList_dm.par index 73efa9773..f97916dae 100644 --- a/datamodel/fieldList_dm.par +++ b/datamodel/fieldList_dm.par @@ -55,7 +55,7 @@ EXT1 PROGRAMNAME A "" "" "Program name within a give #EXT1 PLOTSN A "" "" "" #EXT1 DATA A "" "" "" #EXT1 PLOTS A "" "" "" -EXT1 FIELDQUALITY A "" "" "" +EXT1 FIELDQUALITY A "" "" "Characterization of Field quality" EXT1 FIELDSN2 E "" "" "Overall (S/N)^2 for field; min of cameras" EXT1 DEREDSN2 E "" "" "Overall Dereddened (S/N)^2 for field" EXT1 QSURVEY K "" -1 "1 for an survey quality plate, 0 otherwise" @@ -147,6 +147,8 @@ EXT1 STATUS2D A "" "missing" "Status of 2d extraction" EXT1 STATUSCOMBINE A "" "missing" "Status of 1d combine" EXT1 STATUS1D A "" "missing" "Status of 1d analysis" EXT1 FIELD_CADENCE A "" "" "Planned Cadence of Observations" +EXT1 DESIGN_VERS A "" "" "robostrategy Run or platedesign version" +EXT1 DESIGN_MODE A "" "" "SDSS-V Design Mode" EXT1 PUBLIC A "" "" "Is this Plate Public" EXT1 QUALCOMMENTS A "" "" "Comments of Field Quality" EXT1 MOON_FRAC E "" "" "Mean Moon phase of the Coadded Spectra" diff --git a/datamodel/spall_dm.par b/datamodel/spall_dm.par index 91a5928c6..bbaaf7169 100644 --- a/datamodel/spall_dm.par +++ b/datamodel/spall_dm.par @@ -35,7 +35,7 @@ typedef struct{ EXT1 FIELD K "" 0 "SDSS FieldID (plateID for plate era data)" -EXT1 MJD K "" 0 "Modified Julian date of combined Spectra" +EXT1 MJD K "" -999 "Modified Julian date of combined Spectra" EXT1 OBS A "" "" "Observatory of Observation" EXT1 MJD_FINAL D "" "" "Mean MJD of the Coadded Spectra" EXT1 MJD_LIST A "" "" "List of MJD of each included exposures" @@ -44,7 +44,7 @@ EXT1 RUN2D A "" "" "Spectro-2D reduction na EXT1 RUN1D A "" "" "Spectro-1D reduction name" EXT1 DESIGNS A "" "" "List of Included Designs" EXT1 CONFIGS A "" "" "List of Included Configurations" -EXT1 NEXP I "" 0 "Number of Included Exposures" +EXT1 NEXP I "" -999 "Number of Included Exposures" EXT1 EXPTIME E "s" "" "Total Exposure time of Coadded Spectra" EXT1 TARGET_INDEX K "" -1 "Index of target on combined spField" EXT1 FIBERID_LIST A "" "" "List of FiberIDs contributing to Stack" @@ -60,13 +60,14 @@ EXT1 SDSS5_TARGET_FLAGS B "" "" "Targeting Flags for SSDSV #EXT1 SECTARGET K "" 0 "Secondary target flags" #EXT1 CHUNK A "" "" "Name of tiling chunk" EXT1 OBJTYPE A "" "" "Why this object was targetted. QSO=SCIENCE" +EXT1 TOO A "" "" "the fiber is allocated to a TOO" EXT1 CATALOGID K "" -999 "SDSS-V CatalogID used in naming" EXT1 CATALOGID_V0 K "" -999 "SDSS-V CatalogID from Catalog v0" EXT1 CATALOGID_V0P5 K "" -999 "SDSS-V CatalogID from Catalog v0.5" -#EXT1 CATALOGID_V1 K "" -999 "SDSS-V CatalogID from Catalog v1" -EXT1 SDSS_ID K "" -999 "Unified SDSS Target Indentifier" -EXT1 SPECOBJID K "" -1 "Unique ID based on Field, MJD, FIBERID, RUN2D" +EXT1 CATALOGID_V1 K "" -999 "SDSS-V CatalogID from Catalog v1" +EXT1 SDSS_ID K "" -999 "Unified SDSS Target Identifier" +EXT1 SPECOBJID A "" "" "Unique ID from SDSSID, Field, MJD, Coadd, RUN2D" EXT1 CALIBFLUX 5E "" "" "Broad-band flux in SDSS-{ugriz} from PSFmag" EXT1 CALIBFLUX_IVAR 5E "" "" "Inverse var flux SDSS-{ugriz} from PSFmag" @@ -79,7 +80,7 @@ EXT1 GAIA_G_MAG E "" "" "Gaia G magnitude" EXT1 GRI_GAIA_TRANSFORM K "" 0 "provenance of photometry in SDSS-V plate design" EXT1 BP_MAG E "" "" "Gaia BP magnitude" EXT1 RP_MAG E "" "" "Gaia RP magnitude" -EXT1 GAIA_ID K "" 0 "Gaia DR3 SourceID" +EXT1 GAIA_ID K "" -999 "Gaia DR3 SourceID" EXT1 WISE_MAG 4E "" "" "WISE [W1, W2, W3, W4] band magnitudes" EXT1 TWOMASS_MAG 3E "" "" "2MASS [J, H, Ks] band magnitudes" EXT1 GUVCAT_MAG 2E "" "" "GALEX [FUV, NUV] band magnitudes" @@ -136,12 +137,12 @@ EXT1 ASSIGNED A "" "" "Whether this fibre was EXT1 ON_TARGET A "" "" "Whether this fibre is on target" EXT1 VALID A "" "" "alpha and beta angles are valid" EXT1 DECOLLIDED A "" "" "this positioner had to be moved to decollide it" -EXT1 ANYANDMASK K "" 0 "For each bit, any pixel has bit set in ANDMASK" -EXT1 ANYORMASK K "" 0 "For each bit, any pixel has bit set in ORMASK" -EXT1 SPECPRIMARY K "" 0 "Best version of spectrum at this location" -EXT1 SPECBOSS K "" 0 "Best version of spectrum at this location" -EXT1 BOSS_SPECOBJ_ID K "" 0 "ID of spectrum location on sky" -EXT1 NSPECOBS K "" 0 "Number of spectral observations" +EXT1 ANYANDMASK K "" -999 "For each bit, any pixel has bit set in ANDMASK" +EXT1 ANYORMASK K "" -999 "For each bit, any pixel has bit set in ORMASK" +EXT1 SPECPRIMARY K "" -999 "Best version of spectrum at this location" +EXT1 SPECBOSS K "" -999 "Best version of spectrum at this location" +EXT1 BOSS_SPECOBJ_ID K "" -999 "ID of spectrum location on sky" +EXT1 NSPECOBS K "" -999 "Number of spectral observations" EXT1 SPECTROFLUX 5E "" "" "Spectrum projected onto SDSS-{ugriz} filter" EXT1 SPECTROFLUX_IVAR 5E "" "" "Inverse variance of SPECTROFLUX" EXT1 SPECTROSYNFLUX 5E "" "" "Best-fit template projected onto SDSS-{ugriz}" @@ -175,8 +176,8 @@ EXT1 FRACNSIGHI 10E "" "" "Fraction of pixels high EXT1 FRACNSIGLO 10E "" "" "Fraction of pixels low by >{1-10} sigma" EXT1 Z_NOQSO E "" "" "Redshift of the best-fit non-QSO model" EXT1 Z_ERR_NOQSO E "" "" "Formal one-sigma error on Z_NOQSO" -EXT1 ZNUM_NOQSO K "" 0 "Best fit z/class index excluding QSO; 1-indexed" -EXT1 ZWARNING_NOQSO K "" 0 "Redshift warning flag for Z_NOQSO" +EXT1 ZNUM_NOQSO K "" -999 "Best fit z/class index excluding QSO; 1-indexed" +EXT1 ZWARNING_NOQSO K "" -999 "Redshift warning flag for Z_NOQSO" EXT1 CLASS_NOQSO A "" "" "Spectro class of best-fit non-QSO model" EXT1 SUBCLASS_NOQSO A "" "" "Spectro sub-class of best-fit non-QSO model" EXT1 RCHI2DIFF_NOQSO E "" "" "Reduced chi^2 diff to next-best non-QSO model" @@ -200,12 +201,12 @@ typedef struct{ }EXTLITE; EXTLITE FIELD K "" 0 "SDSS FieldID (plateID for plate era data)" -EXTLITE MJD K "" 0 "Modified Julian date of combined Spectra" +EXTLITE MJD K "" -999 "Modified Julian date of combined Spectra" EXTLITE MJD_FINAL D "" "" "Mean MJD of the Coadded Spectra" EXTLITE OBS A "" "" "Observatory of Observation" EXTLITE RUN2D A "" "" "Spectro-2D reduction name" EXTLITE RUN1D A "" "" "Spectro-1D reduction name" -EXTLITE NEXP K "" 0 "Number of Included Exposures" +EXTLITE NEXP K "" -999 "Number of Included Exposures" EXTLITE EXPTIME E "s" "" "Total Exposure time of Coadded Spectra" EXTLITE TARGET_INDEX K "" -1 "Index of target on combined spField" EXTLITE SPEC_FILE A "" "" "Name of spec file (in SAS)" @@ -220,13 +221,14 @@ EXTLITE SDSS5_TARGET_FLAGS B "" "" "Targeting Flags for SS #EXTLITE SECTARGET K "" 0 "Secondary target flags" #EXTLITE CHUNK A "" "" "Name of tiling chunk" EXTLITE OBJTYPE A "" "" "Why this object was targetted. QSO=SCIENCE" +EXTLITE TOO K "" -999 "the fiber is allocated to a TOO" EXTLITE CATALOGID K "" -999 "SDSS-V CatalogID used in naming" EXTLITE CATALOGID_V0 K "" -999 "SDSS-V CatalogID from Catalog v0" EXTLITE CATALOGID_V0P5 K "" -999 "SDSS-V CatalogID from Catalog v0.5" -#EXTLITE CATALOGID_V1 K "" -999 "SDSS-V CatalogID from Catalog v1" -EXTLITE SDSS_ID K "" -999 "Unified SDSS Target Indentifier" -EXTLITE SPECOBJID K "" -1 "Unique ID based on Field, MJD, FIBERID, RUN2D" +EXTLITE CATALOGID_V1 K "" -999 "SDSS-V CatalogID from Catalog v1" +EXTLITE SDSS_ID K "" -999 "Unified SDSS Target Identifier" +EXTLITE SPECOBJID A "" "" "Unique ID from SDSSID, Field, MJD, Coadd, RUN2D" EXTLITE CALIBFLUX 5E "" "" "Broad-band flux in SDSS-{ugriz} from PSFmag" EXTLITE CALIBFLUX_IVAR 5E "" "" "Inverse var flux SDSS-{ugriz} from PSFmag" @@ -239,7 +241,7 @@ EXTLITE GAIA_G_MAG E "" "" "Gaia G magnitude" EXTLITE GRI_GAIA_TRANSFORM K "" -999 "provenance of photometry in SDSS-V plate design" EXTLITE BP_MAG E "" "" "Gaia BP magnitude" EXTLITE RP_MAG E "" "" "Gaia RP magnitude" -EXTLITE GAIA_ID K "" 0 "Gaia DR3 SourceID" +EXTLITE GAIA_ID K "" -999 "Gaia DR3 SourceID" EXTLITE WISE_MAG 4E "" "" "WISE [W1, W2, W3, W4] band magnitudes" EXTLITE TWOMASS_MAG 3E "" "" "2MASS [J, H, Ks] band magnitudes" EXTLITE GUVCAT_MAG 2E "" "" "GALEX [FUV, NUV] band magnitudes" @@ -291,11 +293,11 @@ EXTLITE ANYORMASK K "" -999 "For each bit, any pi EXTLITE SPECPRIMARY K "" -999 "Best version of spectrum at this location" EXTLITE SPECBOSS K "" -999 "Best version of spectrum at this location" EXTLITE BOSS_SPECOBJ_ID K "" -999 "Same as SPECPRIMARY" -EXTLITE NSPECOBS K "" 0 "Number of spectral observations" +EXTLITE NSPECOBS K "" -999 "Number of spectral observations" EXTLITE SPECTROFLUX 5E "" "" "Spectrum projected onto SDSS-{ugriz} filter" -EXTLITE SPECTROFLUX_IVAR 5E "" "" "Inverse variance of SPECTROFLUX" +EXTLITE SPECTROFLUX_IVAR 5E "" "" "Inverse variance of SPECTROFLUX_{ugriz}" EXTLITE SPECTROSYNFLUX 5E "" "" "Best-fit template projected onto SDSS-{ugriz}" -EXTLITE SPECTROSYNFLUX_IVAR 5E "" "" "Inverse variance of SPECTROSYNFLUX" +EXTLITE SPECTROSYNFLUX_IVAR 5E "" "" "Inverse variance of SPECTROSYNFLUX_{ugriz}" EXTLITE SPECTROSKYFLUX 5E "" "" "Sky spectrum projected onto SDSS-{ugriz} filter" EXTLITE WAVEMIN E "AA" "" "Minimum observed (vacuum) wavelength for target" EXTLITE WAVEMAX E "AA" "" "Maximum observed (vacuum) wavelength for target" @@ -319,7 +321,7 @@ EXTLITE VDISPDOF K "" -1 "DOF for best-fit vel EXTLITE CHI68P E "" "" "68% of abs(chi) of synthetic to actual spectrum" EXTLITE Z_NOQSO E "" "" "Redshift of the best-fit non-QSO model" EXTLITE Z_ERR_NOQSO E "" "" "Formal one-sigma error on Z_NOQSO" -EXTLITE ZNUM_NOQSO K "" 0 "Best fit z/class index excluding QSO; 1-indexed" +EXTLITE ZNUM_NOQSO K "" -999 "Best fit z/class index excluding QSO; 1-indexed" EXTLITE ZWARNING_NOQSO K "" -999 "Redshift warning flag for Z_NOQSO" EXTLITE CLASS_NOQSO A "" "" "Spectro class of best-fit non-QSO model" EXTLITE SUBCLASS_NOQSO A "" "" "Spectro sub-class of best-fit non-QSO model" diff --git a/datamodel/spfibermap_SOS_dm.par b/datamodel/spfibermap_SOS_dm.par index d6d5d5e9e..c474da5a2 100644 --- a/datamodel/spfibermap_SOS_dm.par +++ b/datamodel/spfibermap_SOS_dm.par @@ -39,26 +39,26 @@ typedef struct{ EXT1 EXTNAME A "" "" "Name of extension for plugmap/confSummary" EXT1 PLUGDIR A "" "" "path to confSummary or plugmap file" EXT1 CONFIGURATION_ID A "" "" "FPS configuration ID" -EXT1 ROBOSTRATEGY_RUN A "" "" "Run of Robostrategy for this FPS design, 'manual' for a manual design." +EXT1 ROBOSTRATEGY_RUN A "" "" "Run of Robostrategy for this FPS design" EXT1 FPS_CALIBRATIONS_VERSION A "" "" "Version of FPS calibrations used." EXT1 JAEGER_VERSION A "" "" "Version of Jaeger used for this configuration" EXT1 COORDIO_VERSION A "" "" "Version of coordIO used for this configuration" EXT1 KAIJU_VERSION A "" "" "Version of Kaiju used for this configuration" -EXT1 DESIGN_ID A "" "" "The FPS design ID associated with this configuration" +EXT1 DESIGN_ID A "" "" "FPS design ID associated with configuration" EXT1 FIELD_ID A "" "" "The field ID that defines the pointing" EXT1 FOCAL_SCALE A "" "" "" EXT1 INSTRUMENTS A "" "" "Instruments used (always APOGEE and BOSS)" EXT1 EPOCH A "" "" "JD at which the configuration was generated" EXT1 OBSTIME A "" "" "TAI date of the observation (matches epoch)" EXT1 MJD A "" "" "MJD of the observation in the SDSS style" -EXT1 OBSERVATORY A "" "" "Observatory where this configuration was generated" +EXT1 OBSERVATORY A "" "" "Observatory for this configuration" EXT1 TEMPERATURE A "" "" "Temperature at the time of the FPS observation" EXT1 RACEN A "" "" "FPS Field centre Right Ascension" EXT1 DECCEN A "" "" "FPS Field centre Declination" EXT1 PA A "" "" "FPS Field centre Position Angle" -EXT1 IS_DITHERED A "" "" "Whether this is a dithered FPSconfiguration from a base configuration" -EXT1 PARENT_CONFIGURATION A "" "" "If is_dithered=1 the parent configuration used to generate the dither." -EXT1 DITHER_RADIUS A "mm" "" "If is_dithered=1 the radius, for the uniform distribution around parent" +EXT1 IS_DITHERED A "" "" "Is this a dithered FPS configuration" +EXT1 PARENT_CONFIGURATION A "" "" "parent configuration of the dither." +EXT1 DITHER_RADIUS A "mm" "" "radius for uniform distribution around parent" EXT1 CLONED_FROM A "" "" "" EXT1 ROTATOR_ANGLE A "" "" "" EXT1 FVC_CENTROID_METHOD A "" "" "" @@ -85,15 +85,16 @@ typedef struct{ EXTX POSITIONERID K "" -999 "FPS Positioner identifier" EXTX HOLEID A "" "" "Hole ID in which the positioner is sitting" -EXTX FIBERID K "" -999 "Fiber ID for the spectrograph to which the fibre is assigned" +EXTX FIBERID K "" -999 "Fiber ID for the spectrograph" EXTX CONFFIBERID K "" -999 "Raw Slithead FiberIDs" -EXTX FIBERTYPE A "" "" "Type of fibre in this entry (APOGEE, BOSS, or Metrology)" -EXTX ASSIGNED K "" -999 "Whether this fibre was assigned to a target in the design" -EXTX ON_TARGET K "" -999 "Whether this fibre is on target." -EXTX VALID K "" -999 "Whether the alpha and beta angles are valid. Do not use with valid=0" -EXTX DECOLLIDED K "" -999 "Whether this positioner had to be moved to decollide it." +EXTX FIBERTYPE A "" "" "Type of fibre (APOGEE, BOSS, or Metrology)" +EXTX ASSIGNED K "" -999 "Whether this fibre was assigned to a target" +EXTX ON_TARGET K "" -999 "Whether this fibre is on target" +EXTX VALID K "" -999 "alpha and beta angles are valid" +EXTX DECOLLIDED K "" -999 "this positioner had to be moved to decollide it" +EXTX TOO K "" -999 "the fiber is allocated to a TOO" EXTX FIBERMASK K "" -999 "Fiber level bitmasks (maps to SPPIXMASK)" -EXTX BADSTDMASK K "" -999 "Standard Initially rejected due to magnitude range of the plate design" +EXTX BADSTDMASK K "" -999 "Standard rejected by magnitude range of design" EXTX ALPHA D "" "" "The alpha angles of the positioner arms." EXTX BETA D "" "" "The beta angles of the positioner arms." EXTX XWOK D "" "" "The X value in the FPS WOK coordinates" @@ -101,16 +102,20 @@ EXTX YWOK D "" "" "The Y value in the FPS WOK coordinates" EXTX ZWOK D "" "" "The X value in the FPS WOK coordinates" EXTX XFOCAL D "" "" "The X value in focal plane coordinates." EXTX YFOCAL D "" "" "The Y value in focal plane coordinates." -EXTX RACAT D "" "" "RA in ICRS coordinates at 'coord_epoch' for the target assigned" -EXTX DECCAT D "" "" "Dec in ICRS coordinates at 'coord_epoch' for the target assigned" +EXTX RACAT D "" "" "Catalog RA in ICRS coordinates at coord_epoch" +EXTX DECCAT D "" "" "Catalog Dec in ICRS coordinates at coord_epoch" EXTX COORD_EPOCH D "" "" "Epoch of the catalogue coordinates." EXTX PMRA D "mas" "" "Proper motion in RA (pmra is a true angle)" EXTX PMDEC D "mas" "" "Proper motion in Dec" EXTX PARALLAX D "mas" "" "Parallax" -EXTX RA D "" "" "Calculated RA of the *fiber* on the sky (including delta_RA)" -EXTX DEC D "" "" "Calculated Dec of the *fiber* on the sky (including delta_DEC)" +EXTX RA D "" "" "Calculated on sky fiber RA including delta_RA" +EXTX DEC D "" "" "Calculated on sky fiber Dec including delta_DEC" EXTX DELTA_RA D "" "" "The amount in RA this fiber has been offset" EXTX DELTA_DEC D "" "" "The amount in Dec this fiber has been offset" +EXTX RA_OBSERVED D "" "" "" +EXTX DEC_OBSERVED D "" "" "" +EXTX ALT_OBSERVED D "" "" "" +EXTX AZ_OBSERVED D "" "" "" EXTX FIBER_OFFSET K "" -999 "Flag identifying the fiber was offset by design" EXTX LAMBDA_EFF D "" "" "Wavelength used for coordinate transformations" EXTX SPECTROGRAPHID K "" "-1" "Spectrograph to which the fibre is assigned." # (SDSS-V: 1 = BOSS, 2 = APOGEE) or (SDSS-IV: 1=BOSS SP1, 2=BOSS SP2)" @@ -118,17 +123,17 @@ EXTX OPTICAL_PROV A "" "" "The source of the optical magnitudes" EXTX MAG 5D "" "" "[u, g, r, i, z] optical magnitudes" EXTX PSFMAG 5D "" "" "[u, g, r, i, z] optical PSF magnitudes" EXTX FIBER2MAG 5D "" "" "[u, g, r, i, z] optical Fiber2 magnitudes" -EXTX CATDB_MAG 5D "" "" "[u, g, r, i, z] Raw TargetDB magnitudes (paired with OPTICAL_PROV)" +EXTX CATDB_MAG 5D "" "" "[u, g, r, i, z] Raw TargetDB magnitudes" EXTX GAIA_G_MAG D "" "" "Gaia G magnitude" EXTX BP_MAG D "" "" "Gaia BP magnitude" EXTX RP_MAG D "" "" "Gaia RP magnitude" EXTX H_MAG D "" "" "2MASS H magnitude" EXTX CALIBFLUX 5D "" "" "SDSS band [u,g,r,i,z] target calibration flux" -EXTX CALIBFLUX_IVAR 5D "" "" "SDSS band [u,g,r,i,z] target calibration flux inverse variance" +EXTX CALIBFLUX_IVAR 5D "" "" "target calibration flux inverse variance" EXTX CATEGORY A "" "" "Category for 'firstcarton'" -EXTX OBJTYPE A "" "" "Why this object was targetted. (QSO = Science Target)" -EXTX OFFSETID K "" -999 "which plate offset this target is associated with; 0 = primary pointing" -EXTX CATALOGID A "" "" "SDSS-V CatalogID of Target or uHHMMSS.S+DDMMSS.S for unassigned fibers" +EXTX OBJTYPE A "" "" "Why this object was targetted. (QSO = Science)" +EXTX OFFSETID K "" -999 "plate offset associated; 0 = primary pointing" +EXTX CATALOGID A "" "" "CatalogID or uHHMMSS.S+DDMMSS.S for unassigned" EXTX ICATALOGID K "" -999 "Raw SDSS-V CatalogID" EXTX CARTON_TO_TARGET_PK K "" -999 "SDSS-V Carton_to_Target primary key for SDSSDB" EXTX SDSSV_BOSS_TARGET0 K "" -999 "Targeting bitmask for SDSSV-BOSS" diff --git a/datamodel/spfibermap_dm.par b/datamodel/spfibermap_dm.par index b2cc12ffc..5c1a019c2 100644 --- a/datamodel/spfibermap_dm.par +++ b/datamodel/spfibermap_dm.par @@ -45,6 +45,7 @@ EXT1 JAEGER_VERSION A "" "" "Version of Jaeger used for this configuration" EXT1 COORDIO_VERSION A "" "" "Version of coordIO used for this configuration" EXT1 KAIJU_VERSION A "" "" "Version of Kaiju used for this configuration" EXT1 DESIGN_ID A "" "" "FPS design ID associated with configuration" +EXT1 DESIGN_MODE A "" "" "SDSS-V DesignMode Mode" EXT1 FIELD_ID A "" "" "The field ID that defines the pointing" EXT1 FOCAL_SCALE A "" "" "" EXT1 INSTRUMENTS A "" "" "Instruments used (always APOGEE and BOSS)" @@ -81,7 +82,7 @@ EXT1 PROGRAMNAME A "" "" "" EXT1 TEMP A "" "" "Temperature of plate design (deg C)" EXT1 DESIGN_PLATESCALE_ALT A "mm/deg" "" "effective plate scale of design in altitude" EXT1 DESIGN_PLATESCALE_AZ A "mm/deg" "" "effective plate scale of design in azimuth" -EXT1 DESIGN_PARALLACTIC_ANGLE A "" "" "plate parallactic angle (deg E of N)" +EXT1 DESIGN_PARALLACTIC_ANGLE A "deg" "" "plate parallactic angle (deg E of N)" EXT1 LOCATIONID A "" "" "" EXT1 NPOINTINGS A "" "" "num of designed pointings of plate; 1+ exp" EXT1 NOFFSETS A "" "" "number of offsets within each exposure" @@ -164,6 +165,7 @@ EXTX ASSIGNED K "" -999 "Whether this fibre was assigned to a target" EXTX ON_TARGET K "" -999 "Whether this fibre is on target" EXTX VALID K "" -999 "alpha and beta angles are valid" EXTX DECOLLIDED K "" -999 "this positioner had to be moved to decollide it" +EXTX TOO K "" -999 "the fiber is allocated to a TOO" EXTX FIBERMASK K "" -999 "Fiber level bitmasks (maps to SPPIXMASK)" EXTX BADSTDMASK K "" -999 "Standard rejected by magnitude range of design" EXTX THROUGHPUT K "" -999 "Plate Fiber throughput (0-65535, 0=no light)" @@ -174,6 +176,9 @@ EXTX BETA D "" "" "The beta angles of the positioner arms." EXTX XWOK D "" "" "The X value in the FPS WOK coordinates" EXTX YWOK D "" "" "The Y value in the FPS WOK coordinates" EXTX ZWOK D "" "" "The X value in the FPS WOK coordinates" +EXTX XWOK_PRE D "" "" "The XWOK pre FVC Loop" +EXTX YWOK_PRE D "" "" "The YWOK coordinates" +EXTX ZWOK_PRE D "" "" "The ZWOK coordinates" EXTX XFOCAL D "" "" "The X value in focal plane coordinates." EXTX YFOCAL D "" "" "The Y value in focal plane coordinates." EXTX ZOFFSET D "micron" "" "backstopping offset distance (from washers)" @@ -185,9 +190,15 @@ EXTX PMDEC D "mas" "" "Proper motion in Dec" EXTX PARALLAX D "mas" "" "Parallax" EXTX RA D "" "" "Calculated on sky fiber RA including delta_RA" EXTX DEC D "" "" "Calculated on sky fiber Dec including delta_DEC" -EXTX DELTA_RA D "" "" "The amount in RA this fiber has been offset" -EXTX DELTA_DEC D "" "" "The amount in Dec this fiber has been offset" +EXTX DELTA_RA D "arcsec" "" "The amount in RA this fiber has been offset" +EXTX DELTA_DEC D "arcsec" "" "The amount in Dec this fiber has been offset" +EXTX RA_OBSERVED D "deg" "" "RA with correction for atmospheric refraction" +EXTX DEC_OBSERVED D "deg" "" "dec with correction for atmospheric refraction" +EXTX ALT_OBSERVED D "deg" "" "alt with correction for atmospheric refraction" +EXTX AZ_OBSERVED D "deg" "" "Az with correction for atmospheric refraction" EXTX FIBER_OFFSET K "" -999 "Flag identifying the fiber was offset by design" +EXTX MEASUREDOFFSET D "arcsec" "" "Measured offset between Fiber & Catalog Coord" +EXTX WOKOFFSET D "mm" "" "Measured offset in the Wok Coordinates" EXTX LAMBDA_EFF D "" "" "Wavelength used for coordinate transformations" EXTX SPECTROGRAPHID K "" "-1" "Spectrograph to which the fibre is assigned." # (SDSS-V: 1 = BOSS, 2 = APOGEE) or (SDSS-IV: 1=BOSS SP1, 2=BOSS SP2)" EXTX OPTICAL_PROV A "" "" "The source of the CATDB_MAG optical magnitudes" @@ -199,7 +210,7 @@ EXTX V05_REV_MAG K "" -999 "1: revised with RevisedMagnitude Table, 0: raw" EXTX GAIA_G_MAG D "" "" "Gaia G magnitude" EXTX BP_MAG D "" "" "Gaia BP magnitude" EXTX RP_MAG D "" "" "Gaia RP magnitude" -EXTX GAIA_ID K "" -999 "Gaia-DR2 ID" +EXTX GAIA_ID K "" -999 "Gaia-DR3 ID" EXTX H_MAG D "" "" "2MASS H magnitude" EXTX WISE_MAG 4D "" "" "WISE [W1, W2, W3, W4] band magnitudes" EXTX TWOMASS_MAG 3D "" "" "2MASS [J, H, Ks] band magnitudes" @@ -224,6 +235,9 @@ EXTX OBJID 5K "" 0 "Unique object id from SDSS imaging" #(run,rerun,camCol, EXTX CATALOGID A "" "" "CatalogID or uHHMMSS.S+DDMMSS.S for unassigned" EXTX ICATALOGID K "" -999 "Raw SDSS-V CatalogID" EXTX SDSS_ID K "" -999 "SDSS_ID of Target" +EXTX CATALOGID_V0 K "" -999 "V0 (Plate) Crossmatch CatalogID from SDSS_ID" +EXTX CATALOGID_V0P5 K "" -999 "V0.5 (FPS) Crossmatch CatalogID from SDSS_ID" +EXTX CATALOGID_V1 K "" -999 "V1 (FPS) Crossmatch CatalogID from SDSS_ID" EXTX CATVERSION A "" "" "Catalog Version of SDSS-V CatalogID" EXTX CARTON_TO_TARGET_PK K "" -999 "SDSS-V Carton_to_Target primary key for SDSSDB" EXTX FIRSTCARTON A "" "" "Main carton from which this carton was drawn" @@ -256,3 +270,5 @@ EXTX FIELD K "" -999 "SDSS imaging field, for SDSS imaging targets" EXTX ID K "" -999 "SDSS imaging id, for SDSS imaging targets" EXTX FIELDCADENCE A "" "" "SDSS-V FPS Field Cadence" EXTX CADENCE A "" "" "SDSS-V FPS target Cadence" +EXTX DESIGN_VERS A "" "" "robostrategy Run or platedesign version" +EXTX DESIGN_MODE A "" "" "SDSS-V DesignMode Mode" diff --git a/datamodel/spzline_dm.par b/datamodel/spzline_dm.par index eed72e8ea..ce9502797 100644 --- a/datamodel/spzline_dm.par +++ b/datamodel/spzline_dm.par @@ -42,11 +42,11 @@ typedef struct{ char description[80]; }EXT1; -EXT1 FIELD K "" 0 "FieldID" +EXT1 FIELD K "" 0 "SDSS FieldID (plateID for plate era data)" EXT1 MJD K "" 0 "Modified Julian date of observation" EXT1 TARGET_INDEX K "" -1 "Target Index (1 to number of targets)" EXT1 CATALOGID K "" -999 "SDSS-V CatalogID used in naming" -EXT1 SDSS_ID K "" -999 "Unified SDSS Target Indentifier" +EXT1 SDSS_ID K "" -999 "Unified SDSS Target Identifier" EXT1 LINENAME A "" "" "Line name" EXT1 LINEWAVE D "AA" "" "Catalog wavelength of line in vacuum Angstroms" EXT1 LINEZ E "" "" "Redshift" @@ -55,7 +55,7 @@ EXT1 LINESIGMA E "km/s" "" "Gaussian width in km/sec" EXT1 LINESIGMA_ERR E "" "" "Gaussian width error (<0 for invalid fit)" EXT1 LINEAREA E "" "" "Area in gaussian fit [(flux-units) * Ang]" EXT1 LINEAREA_ERR E "" "" "Flux error (negative for invalid fit)" -EXT1 LINEEW E "AA" "" "quivalent width" +EXT1 LINEEW E "AA" "" "equivalent width" EXT1 LINEEW_ERR E "AA" "" "Equivalent width error (<0 for invalid fit)" EXT1 LINECONTLEVEL E "" "" "Continuum level at line center" EXT1 LINECONTLEVEL_ERR E "" "" "Error in continuum level at line center" diff --git a/doc/.DS_Store b/doc/.DS_Store deleted file mode 100644 index 4bec33235..000000000 Binary files a/doc/.DS_Store and /dev/null differ diff --git a/doc/IR_scattering.txt b/doc/IR_scattering.txt deleted file mode 100644 index 27c33555c..000000000 --- a/doc/IR_scattering.txt +++ /dev/null @@ -1,388 +0,0 @@ -From jeg@astro.princeton.edu Thu Jun 1 08:36 EDT 2000 -Received: from minos.Princeton.EDU (jeg@minos [128.112.24.49]) - by astro.princeton.edu (8.9.3/8.9.3) with ESMTP id IAA08032; - Thu, 1 Jun 2000 08:36:17 -0400 (EDT) -Received: (from jeg@localhost) - by minos.Princeton.EDU (8.9.3/8.9.3) id IAA14474; - Thu, 1 Jun 2000 08:36:16 -0400 (EDT) -Date: Thu, 1 Jun 2000 08:36:16 -0400 (EDT) -Message-Id: <200006011236.IAA14474@minos.Princeton.EDU> -From: jeg@astro.Princeton.EDU -To: hogg@sns.ias.edu, schlegel@astro.Princeton.EDU -Content-Type: text -Content-Length: 19093 -Status: O - - - - THE NEAR-IR SCATTERING PHENOMENON IN THINNED SITe CCDs - - J. E. Gunn - 20 July 1997 - - -Some time ago Don York was told about an alarming result discovered by -Rich Reed at NOAO during tests of thinned SITe CCDs like ours for STIS. -In these tests, Reed saw extended scattering wings in the near infrared, -which he attributed to light going through the thinned device and -scattering from the indium solder interface behind the translucent -ceramic substrate which supports the thinned membrane in these chips. -In what follows we shall call this phenomenon, whatever the cause, rear -scattering (because it is certainly associated with the return of flux -from the rear of the device.) - -Reed kindly sent me his data in graphical form, and I have finally -gotten around to analyzing it in the context of the SDSS. It would -appear that the data are well described by the phenomenon which Reed -proposed; light scattering in a translucent medium is attenuated by a -factor 1/r due to the 2-dimensional geometry and by an exponential -optical depth factor due to scattering and losses (into the ccd or -absorption by the indium or the ceramic). The data are well fit by -the radial function - -Bs/F = (f/2*pi*r0) * exp(-r/r0)/r, - -where Bs is the surface brightness of the scattering wing, F is the -total flux, and f is the fraction of the total which is scattered. Reed -studied the phenomenon at several wavelengths using what was essentially -a line source, and his curves are well represented by the projection of this -function in one dimension. - -The parameters f and r0 are reasonably well represented by the -interpolation formulae - -r0 = 50 lam^2, lam = wavelength in microns - -f = exp(11.51*(lam-1.05)), lam < 1.05 - 1 lam > 1.05 - -representative values are - - lam r0(pix) f - - 6000 18 .006 - 7000 25 .016 - 8000 34 .065 - 9000 41 .18 - 10000 48 .56 - -Here r0 is in pixels for the 24u pixel device; it presumably scales with -the inverse of the pixel size and in some complex way which depends on -the exact details of the transport upon the thickness and opacity of the -ceramic substrate, the thickness of the silicon membrane, the -reflectivity of the indium film, and the efficiency of the -antireflection coating on the CCD. The scattered fraction f presumably -goes to unity at the wavelength of the bandgap of silicon, about 10500 A -(at which wavelength the quantum efficiency goes essentially to zero -anyway.) and the behavior, in which the log of f is almost linear with -wavelength, supports this conjecture. It is perhaps curious that the -relation is more nearly exponential with wavelength than frequency, and -the interpolation formula for it is to be regarded as just that. There -in reality will be a small thermal tail extension to 1-f to longer -wavelengths, which we ignore here. - -As one can see from the table, at 1 micron the effect is catastrophic, -with nearly 60 percent of the flux in the scattering halo; by 9000, the -fraction is still 18 percent, 8000, six percent, and 7000, only 1.6 -percent. The effective wavelengths of the Sloan filters for this effect -are considerably longer than the flux effective wavelengths because of -the very strong wavelength dependence; the effective wavelengths, -scattering lengths, and scattered flux fractions are approximately - - fil lameff(u) r0 f - - r' 0.64 20 .009 - i' 0.78 32 .049 - z' 0.95 44 .31 - -The photometric camera is, of course, not using thin chips in the z -band, but the monitor telescope is. The effect is likely to be worse, -in fact, for the MT chip because its UV-optimized coating is less -efficient in the red and infrared than the normal vis-AR coatings and -more reflective for the scattered flux returning to the device from -below. Preliminary estimates for the MT throughput confirm this, with -the u', g', r', and i' efficiencies pretty close to the estimates, but -the z' efficiency about a factor of 2 low. This will not be a problem -provided the effect is sufficiently uniform over the chip. This is, in -fact, likely to be the case, because the primary QE is not dependent on -the effect, but if the rear scattering is not uniform one must be very -careful in the interpretation of flat fields for calibration, which -measure in effect the total PSF including the rear scattering wings. It -may be necessary to use stars to calibrate the "flat field" in z' with -the MT, and perhaps in i' as well, though probably not. The use of -aperture magnitudes for the MT, necessary because of the undersampling, -makes the operational consequences of the phenomenon negligible; the -measurement of fluxes can proceed exactly as it is being done now. - -The consequences for the survey imaging data are a little more severe -and may have some software impact. The z' chips are not affected at -all, since they are thick. In u' and g' the effect of rear scattering -is negligible; in r', the small-angle scattering wings of the PSF -generated by the atmosphere and optics dominates the wings of the PSF -everywhere, but if the amplitude of the rear scattering is as Reed -measured it, the wings are significantly modified at radii of 20 pixels -or so. In i' the rear scattering dominates the PSF from 10 to over 100 -pixels radius, and the simple power-law model for the PSF wings which -the pipeline uses currently will not work. This has little or no impact -for photometry, but severly affects the subtraction of the wings of -bright stars; in brightness, the range is from about 5.e-4 to 3.e-7 of -the central intensity; the flux, again, is about 5 percent of the total. - -In the following table is presented some expected radial profiles of -stars including Kolmogorov seeing and observed small-angle scattering, -and the rear scattering wings as calculated here. The first column is -the radius in units of the half width at half maximum, here assumed to -be 1.25 pixels (0.5 arcsec); the next column, kolpsf, is the Kolmogorov -seeing psf of unit central intensity, including observed small-angle -scattering wings (from Racine). The next three columns, rscatt, iscatt, -and zscatt, are the expected rear-scattering wings in r', i', and z', -respectively, for a thinned device in this seeing. These wings are to -be compared with the Kolmogorov psf decreased by the unscattered -fraction, 0.99, 0.95, and 0.68, respectively, for the parameters -discussed here. The pixel scale assumed here is that for the imaging -camera with 1 arcsecond seeing, and so the z' column is of academic -interest only, but the severity of the effect we would have to live with -had we chosen thin chips for the z' band is properly frightening. - - r kpsf r'scatt i'scatt z'scatt - - 0.100 9.909e-001 1.542e-003 5.260e-003 2.501e-002 - 0.126 9.870e-001 1.533e-003 5.231e-003 2.488e-002 - 0.158 9.807e-001 1.519e-003 5.188e-003 2.468e-002 - 0.200 9.705e-001 1.498e-003 5.122e-003 2.438e-002 - 0.251 9.543e-001 1.468e-003 5.025e-003 2.393e-002 - 0.316 9.295e-001 1.424e-003 4.882e-003 2.327e-002 - 0.398 8.920e-001 1.362e-003 4.677e-003 2.231e-002 - 0.501 8.358e-001 1.276e-003 4.394e-003 2.098e-002 - 0.631 7.541e-001 1.165e-003 4.024e-003 1.924e-002 - 0.794 6.423e-001 1.030e-003 3.572e-003 1.711e-002 - 1.000 5.014e-001 8.793e-004 3.063e-003 1.470e-002 - 1.259 3.435e-001 7.248e-004 2.540e-003 1.223e-002 - 1.585 1.973e-001 5.797e-004 2.047e-003 9.888e-003 - 1.995 9.173e-002 4.529e-004 1.615e-003 7.836e-003 - 2.512 3.505e-002 3.481e-004 1.256e-003 6.129e-003 - 3.162 1.237e-002 2.642e-004 9.682e-004 4.756e-003 - 3.981 4.668e-003 1.983e-004 7.407e-004 3.671e-003 - 5.012 1.943e-003 1.470e-004 5.625e-004 2.818e-003 - 6.310 8.743e-004 1.073e-004 4.232e-004 2.150e-003 - 7.943 4.082e-004 7.675e-005 3.146e-004 1.626e-003 - 10.000 1.964e-004 5.352e-005 2.302e-004 1.216e-003 - 12.589 9.713e-005 3.612e-005 1.651e-004 8.966e-004 - 15.849 4.929e-005 2.339e-005 1.154e-004 6.488e-004 - 19.953 2.557e-005 1.437e-005 7.803e-005 4.584e-004 - 25.119 1.352e-005 8.260e-006 5.064e-005 3.143e-004 - 31.623 7.257e-006 4.369e-006 3.120e-005 2.075e-004 - 39.811 3.942e-006 2.080e-006 1.799e-005 1.306e-004 - 50.119 2.161e-006 8.675e-007 9.555e-006 7.741e-005 - 63.096 1.193e-006 3.062e-007 4.572e-006 4.253e-005 - 79.433 6.621e-007 8.761e-008 1.918e-006 2.124e-005 - 100.000 3.687e-007 1.924e-008 6.823e-007 9.404e-006 - -For the MT pixel scale, the star image is more concentrated than in the -case of the camera, so the effect on the psf is somewhat smaller; the -fraction of light lost to scattering is the same, but it is spread out -over a much larger area compared to the star image (though the profile -of the scattered light is the same in PIXELS, modulo a trivial change in -convolution due to seeing). The table above for the MT becomes (the -unit of radius is still 0.5 arcsec) : - - - r kpsf r'scatt i'scatt z'scatt - - 0.100 9.909e-001 3.794e-004 1.294e-003 5.960e-003 - 0.126 9.870e-001 3.771e-004 1.287e-003 5.929e-003 - 0.158 9.807e-001 3.737e-004 1.276e-003 5.882e-003 - 0.200 9.705e-001 3.686e-004 1.260e-003 5.810e-003 - 0.251 9.543e-001 3.612e-004 1.236e-003 5.703e-003 - 0.316 9.295e-001 3.504e-004 1.201e-003 5.545e-003 - 0.398 8.920e-001 3.350e-004 1.151e-003 5.317e-003 - 0.501 8.358e-001 3.140e-004 1.081e-003 5.001e-003 - 0.631 7.541e-001 2.867e-004 9.899e-004 4.586e-003 - 0.794 6.423e-001 2.535e-004 8.787e-004 4.077e-003 - 1.000 5.014e-001 2.163e-004 7.536e-004 3.504e-003 - 1.259 3.435e-001 1.783e-004 6.249e-004 2.914e-003 - 1.585 1.973e-001 1.426e-004 5.036e-004 2.357e-003 - 1.995 9.173e-002 1.114e-004 3.973e-004 1.867e-003 - 2.512 3.505e-002 8.564e-005 3.091e-004 1.461e-003 - 3.162 1.237e-002 6.500e-005 2.382e-004 1.133e-003 - 3.981 4.668e-003 4.878e-005 1.822e-004 8.748e-004 - 5.012 1.943e-003 3.616e-005 1.384e-004 6.716e-004 - 6.310 8.743e-004 2.639e-005 1.041e-004 5.124e-004 - 7.943 4.082e-004 1.888e-005 7.740e-005 3.876e-004 - 10.000 1.964e-004 1.317e-005 5.664e-005 2.899e-004 - 12.589 9.713e-005 8.886e-006 4.061e-005 2.137e-004 - 15.849 4.929e-005 5.753e-006 2.838e-005 1.546e-004 - 19.953 2.557e-005 3.534e-006 1.920e-005 1.093e-004 - 25.119 1.352e-005 2.032e-006 1.246e-005 7.491e-005 - 31.623 7.257e-006 1.075e-006 7.675e-006 4.946e-005 - 39.811 3.942e-006 5.117e-007 4.427e-006 3.113e-005 - 50.119 2.161e-006 2.134e-007 2.351e-006 1.845e-005 - 63.096 1.193e-006 7.533e-008 1.125e-006 1.013e-005 - 79.433 6.621e-007 2.155e-008 4.719e-007 5.061e-006 - 100.000 3.687e-007 4.734e-009 1.679e-007 2.241e-006 - -It is seen here that scattering has little effect on the psfs except in -z', dominating only between about 30 and 60 pixels in i' and even so not -dominating by very much. In z', the scattering dominates beyond about 8 -units, 4 arcsec, 5 pixels, radius. For a just saturated star, the -annulus between 12.5 and 25 pixels (10 and 20 arcsec) has a signal which -is enhanced by 14 and 5 DN, respectively, at its inner and outer -boundaries. Using such an annulus for the sky signal would depress the -measured flux by about 2.5 percent; it happens that about 2.5 percent of -the flux is also scattered within 5 pixels, so the net result of using a -disk of 5 pixels radius for the stellar aperture and determining the sky -from an annulus with inner and outer radius 12 and 25, which is a -reasonable set, is that the scattering roughly cancels, and leaves one -measuring the unscattered fraction, about 70 percent of the total. - -Recall that it would appear from the preliminary MT data that the -UV-coated chip suffers rather more than these parameters would indicate -in z', but until better data are available, detailed calculations of the -form of the psf and the effect on the shape of the z' band cannot be -done. We CAN calculate the effects if the current paramters were -correct, and in that case the 'vital statistics' of the MT passbands -are, with no scattering, (these are slightly different from those last -distributed because the MT mirror coatings have changed since then to -bare aluminum on the secondary and a quartz-overcoated aluminum film on -the primary.) - -MT FILTER QUANTITIES, NO ATMOSPHERE 1 bare 1 230nm SiO2, no rear scatt. - fil lbar wid qt qtdll sig efwhm - u' 3505 630 1.919e-001 3.220e-002 0.0569 469 - g' 4744 1415 4.348e-001 1.207e-001 0.0899 1003 - r' 6217 1385 4.945e-001 1.065e-001 0.0653 955 - i' 7626 1533 4.406e-001 7.921e-002 0.0588 1055 - z' 9061 1392 2.396e-001 3.689e-002 0.0573 1221 - -MT FILTER QUANTITIES, 1.2 AIRMASSES 1 bare 1 230nm SiO2 no rear scatt. - fil lbar wid qt qtdll sig efwhm - u' 3547 584 9.758e-002 1.513e-002 0.0536 447 - g' 4772 1379 3.619e-001 9.458e-002 0.0885 994 - r' 6227 1374 4.495e-001 9.412e-002 0.0649 951 - i' 7629 1530 4.079e-001 7.161e-002 0.0591 1061 - z' 9038 984 2.254e-001 3.175e-002 0.0584 1242 - -MT FILTER QUANTITIES, NO ATMOSPHERE 1 bare 1 230nm SiO2, 'std' rear scatt. - fil lbar wid qt qtdll sig efwhm - u' 3505 630 1.919e-001 3.220e-002 0.0569 469 - g' 4744 1415 4.338e-001 1.205e-001 0.0899 1003 - r' 6216 1384 4.911e-001 1.057e-001 0.0652 954 - i' 7616 1522 4.304e-001 7.584e-002 0.0585 1048 - z' 8955 1194 2.100e-001 2.818e-002 0.0506 1067 - -MT FILTER QUANTITIES, 1.2 AIRMASSES 1 bare 1 230nm SiO2 'std' rear scatt. - fil lbar wid qt qtdll sig efwhm - u' 3547 584 9.758e-002 1.513e-002 0.0536 447 - g' 4772 1380 3.610e-001 9.443e-002 0.0885 993 - r' 6225 1374 4.449e-001 9.334e-002 0.0649 951 - i' 7618 1519 3.993e-001 6.855e-002 0.0588 1054 - z' 8927 968 1.980e-001 2.435e-002 0.0506 1063 - -For contrast, the quantities for the photometric camera are - -DSS FILTER QUANTITIES, NO ATMOSPHERE 2 shiles Al bare, 'std' rear scatt. - fil lbar wid qt qtdll sig efwhm - u' 3501 619 2.394e-001 3.956e-002 0.0564 464 - g' 4741 1419 5.425e-001 1.508e-001 0.0902 1006 - r' 6220 1385 6.110e-001 1.318e-001 0.0653 955 - i' 7613 1519 5.267e-001 9.258e-002 0.0585 1047 - z' 9150 1348 1.374e-001 2.166e-002 0.0640 1377 - -DSS FILTER QUANTITIES, 1.2 AIRMASSES 2 shiles Al bare, 'std' rear scatt. - fil lbar wid qt qtdll sig efwhm - u' 3543 567 1.237e-001 1.853e-002 0.0530 442 - g' 4770 1387 4.501e-001 1.181e-001 0.0887 996 - r' 6229 1373 5.569e-001 1.164e-001 0.0649 952 - i' 7615 1513 4.924e-001 8.370e-002 0.0588 1053 - z' 9134 950 1.291e-001 1.867e-002 0.0659 1417 - -Note that though the bands for the MT and the camera match very well for -u', g', r', and i', the z bands do not match well; this was always the -case, but the mismatch now is much worse than before; there was roughly -a 100A mismatch in the effective wavelengths before, and with scattering -taken into account the mismatch is 200 A. The calculated effect on the -total throughput, qtdll, is a bit smaller than we estimated, about 25 -percent vs 31, doubtless because of the extreme assymetry of the z' -passband. - -The z' response (system DQE, in these tables with no atmosphere) with -wavelength for the camera, MT with no scattering and MT with scattering, -with the scattering model employed here, is - - DSS z' response functions - lam camera MT_noscatt MT - - 7800 0.00001 0.00001 0.00001 - 7900 0.00009 0.00019 0.00018 - 8000 0.00073 0.00158 0.00149 - 8100 0.00447 0.00973 0.00912 - 8200 0.01856 0.04024 0.03739 - 8300 0.04607 0.09775 0.08998 - 8400 0.07862 0.16013 0.14585 - 8500 0.10580 0.20480 0.18430 - 8600 0.12359 0.22716 0.20166 - 8700 0.13326 0.23310 0.20374 - 8800 0.13715 0.23044 0.19787 - 8900 0.13639 0.22408 0.18855 - 9000 0.13266 0.21609 0.17764 - 9100 0.12671 0.20614 0.16499 - 9200 0.11904 0.19429 0.15078 - 9300 0.11021 0.18105 0.13555 - 9400 0.10047 0.16632 0.11943 - 9500 0.09021 0.15027 0.10274 - 9600 0.08001 0.13345 0.08609 - 9700 0.07039 0.11668 0.07022 - 9800 0.06171 0.10028 0.05548 - 9900 0.05428 0.08437 0.04208 -10000 0.04773 0.06876 0.03009 -10100 0.04174 0.05384 0.01987 -10200 0.03596 0.04002 0.01168 -10300 0.03008 0.02779 0.00572 -10400 0.02411 0.01820 0.00198 -10500 0.01846 0.01159 0.00000 -10600 0.01344 0.00722 0.00000 -10700 0.00943 0.00433 0.00000 -10800 0.00675 0.00249 0.00000 -10900 0.00527 0.00141 0.00000 -11000 0.00463 0.00075 0.00000 - -The systematic shift to the blue is seen clearly in this set -of tables. - -Thus it would appear that the net result of the effect is that we will -be driven to complicate the form of the model psf used for fitting for -purposes of star subtraction in the photometric pipeline in i' and -perhaps in r' as well, and may have to complicate the flat-fielding -calibration for the MT in z' and perhaps i'. Parenthetically, it would -appear that the choice of thick chips for z', which was an entirely -economically driven one, was fortuitously the best one as well; the real -quantum efficiency (for stars) of the thick chips is roughly as high as -that for the thinned ones and the lost light does not wander to other -places in the device. It is also unfortunately the case that the -dependence of quantum efficiency on wavelength through the z' band has -been grossly incorrectly measured, because the measurements include both -the primary (which is all that is relevant for stars) and rear-scattered -components and the rear-scattered fraction is large and very -wavelength-dependent. To calculate the correct effective stellar -passband for the MT in z' will require observations of bright stars with -the telescope to determine the scattering amplitude. - -The already large and now larger difference between the MT and the -camera passbands in z' raises the issue of how the z' magnitude should -be defined; for the other bands there should be no systematic -differences of any important magnitude, but in z' it would appear that -it might be best to define a synthetic z' magnitude which fits the -instrumental response of the camera better, so that z' and i' images -from the camera will have measured flux ratios which are on the -`system'. The lever arm in i'-z' for the camera is about 1500A, and for -the MT is about 1300A, so a color - -(i' - z')_syn = 1.15(i'-z')_MT - -would approximately match the camera instrumental colors for -not-too-complex spectra. - -I would like to thank Rich Reed for access to the rear scattering data -and some very helpful information on its quantitative properties and -method of acquisition. - diff --git a/doc/Makefile b/doc/Makefile deleted file mode 100644 index 7475f88e6..000000000 --- a/doc/Makefile +++ /dev/null @@ -1,36 +0,0 @@ -############################################################################### -# Sloan Digital Sky Survey III (SDSS-III) -- 2D spectroscopic reduction code -# Code for product: idlspec2d -# -# S. Burles & D. Schlegel -# -# This Makefile & all Makefiles in this product are GNU make compliant. -# Please help keep them that way. See -# http://www.gnu.org/software/make/manual/make.html -# -# $Id: Makefile 50212 2012-02-10 21:40:00Z weaver $ -# -############################################################################### -# -# This line helps prevent make from getting confused in the case where you -# have a file named 'clean'. -# -.PHONY : clean -# -# This should compile all code prior to it being installed. -# -all : www/idlspec2d_doc.html - -# -# Replace mk_doc -# -www/idlspec2d_doc.html : - idl -e 'make_html_help, getenv("IDLSPEC2D_DIR")+"/pro/*/", "www/idlspec2d_doc.html", /strict, title="IDL Help for IDLSPEC2D", /verbose, version="idlspec2d"' - -# -# GNU make pre-defines $(RM). The - in front of $(RM) causes make to -# ignore any errors produced by $(RM). -# -clean : - - $(RM) www/idlspec2d_doc.html - diff --git a/doc/PlateDbDone-v3.pdf b/doc/PlateDbDone-v3.pdf deleted file mode 100644 index b894314d2..000000000 Binary files a/doc/PlateDbDone-v3.pdf and /dev/null differ diff --git a/doc/algorithms/algorithms.tex b/doc/algorithms/algorithms.tex deleted file mode 100644 index 563e52b69..000000000 --- a/doc/algorithms/algorithms.tex +++ /dev/null @@ -1,151 +0,0 @@ -\title{idlspec2d dataflow} -\author{Stephen Bailey, Julian Bautista, David Schlegel} -\date{\today} - -\documentclass[12pt]{article} - -\usepackage{amsmath} - -\begin{document} -\maketitle - -\abstract{ -This note documents the idlspec2d algorithm dataflow. -The majority of the code was written by David Schlegel; -the purpose of this document is to succinctly describe each of the steps. -} - -%------------------------------------------------------------------------- -\section{Overview} - -BOSS has 2 spectrographs with 500 fibers each, grouped in 25 bundles of 20 -fibers each. The light is split into a blue channel and a red channel, for -a total of 4 CCD images per exposure. The CCD $y$ coordinate is the spectral -dispersion direction (larger $y$ is larger $\lambda$) and -larger $x$ is larger fiber number, though the spectral ``traces'' in -$y$~{\it vs.}~$x$ are curved and do not exactly align with CCD columns. - -{\it Raw electrons} are extracted from the CCD images using row-by-row extractions similar to Horne~1986 by fitting Gaussians plus a polynomial -background to each CCD row for each bundle of 20 fibers. - -{\it Fiber flats} correct for fiber-to-fiber variations by comparing the -differences between fibers equally illuminated by a smooth flat lamp spectrum. - -{\it Sky model} is derived from flat fielded electrons of sky fibers and then -interpolated to the locations of every science fiber and subtracted. - -{\it Flux calibration} vectors model the instrument and atmospheric throughput -per exposure by comparing standard star spectra to a set of models of known -flux. - -{\it Flux correction} vectors adjust for flux mis-calibrations with low-order -polynomials per-fiber per-exposure to make different exposures of the same object consistent with each other. - -{\it Flux distortion} vectors model variations in the throughput -across the focal plane. - -Putting these together --- \newline -``flat fielded sky subtracted electrons'' in spFrame: -\begin{equation} -F_e = \mathrm{electrons} / (\mathrm{superflat} \cdot \mathrm{fiberflat}) - - \mathrm{skymodel} -\end{equation} -become the ``calibrated flux'' in spCFrame: -\begin{equation} -F = (F_e / \mathrm{calib}) \cdot - \mathrm{fluxcorr} \cdot \mathrm{fluxdistort} -\end{equation} - -The following sections describe each of these steps in detail. - -%------------------------------------------------------------------------- -\section{Extracted electrons to calibrated flux} - -\subsection{Extraction} - -\subsection{Fiber flats and trace locations} - -\subsection{Wavelength solution and PSF shape} - -\subsection{Sky subtraction} - -\subsection{Flux calibration} - -\subsection{Flux correction} - -Individual exposures are initially flux calibrated with no constraint that the same object has the same flux across different exposures. Emperical ``fluxcorr'' vectors are broadband corrections to bring the different exposures into alignment for each object prior to coaddition. In DR13 and prior, these were implemented for each spectrum by minimizing -\begin{equation} - \chi^2_i = \sum_\lambda { - (f_{i\lambda} - f_{\mathrm{ref},\lambda} / a_{i\lambda} )^2 \over - (\sigma_{i\lambda}^2 - \sigma_{\mathrm{ref},\lambda}^2 / a_{i\lambda}^2) - } -\end{equation} -where $f_{i\lambda}$ is the flux of exposure $i$ at wavelength $\lambda$; -$f_{\mathrm{ref},\lambda}$ is the flux of the selected reference exposure; -and $a_{i\lambda}$ are low order Legendre polynomials. -%--- If you want more detail: - The number of polynomial terms is dynamic, up to - a maximum of 5 terms. Higher order terms are added only if they improve - the $\chi^2$ by 5 compared to one less term. -This approach is biased toward small $a_{i\lambda}$ since that inflates the denominator to reduce the $\chi^2$. - -For DR14, we solve the fluxcorr vectors relative to a common weighted coadd $F_\lambda$ which is treated as noiseless compared to the individual exposures. -\begin{equation} - \chi^2_i = \sum_\lambda { - (f_{i\lambda} - F_\lambda / a_{i\lambda})^2 \over - \sigma_{i\lambda}^2 - } -\end{equation} -We additionally include an emperically tuned prior that $a_{i\lambda} \sim 1$ to avoid large excursions in the solution for very low signal-to-noise data. - - The DR14 fluxcorr terms are Chebychev polynomials instead of Legendre for no - good reason. We actually solve for $((f - F a)/\sigma)^2$ and then return $1/a$. - The prior is weighted by the data weights such that the relative strength of - the prior vs. the data is approximately independent of S/N. I'm not convinced - that is the best thing to do but it worked better than having a fixed - strength prior. - - -\subsection{Flux distortion} - -The {\it flux distortion} vectors are parameterized in terms of magnitude -(i.e.~log-flux) that are achromatic with $x$, $y$, $x^2$, $y^2$, $xy$, -where those are linear coordinates XFOCAL,YFOCAL from the plugmap. -There are also chromatic terms that scale as -$\tilde \lambda = 1-(5070/\lambda)^2$, -since that function gives an equal effect between 3900 and 5070~\AA\ -as between 5070 ang 9000~\AA. -There are also magnitude offsets as a function of spectrograph ID, -and a chromatic offset as a function of spectrograph ID. The 13 parameters are: -\begin{equation} -\begin{split} - F_\mathrm{new} &= F_\mathrm{orig} - \left(1 + a_0 s_1 + a_1 s_2 \right) \mathrm{exp} \left( \right. \\ -& a_2 x + a_3 y + a_4 x y + a_5 x^2 + a_6 y^2 + \\ -& a_7 \tilde \lambda x + a_8 \tilde \lambda y + \\ -& a_9 \tilde \lambda s_1 + a_{10} \tilde \lambda s_2 + - a_{11} \tilde \lambda^2 s_1 + a_{12} \tilde \lambda^2 s_2 - \left. \right) -\end{split} -\end{equation} -where $s_1$=1 if specid=1 else 0 and $s_2$=1 if specid=2 else 0. - -Only \textsc{SPECTROPHOTO\_STD} or \textsc{REDDEN\_STD} objects are used to compute the flux distortion. The procedure minimizes differences between spectro-flux and photometry (CALIBFLUX). For now, only g, r and i-bands are used. - -%------------------------------------------------------------------------- -\section{Coaddition} - -%------------------------------------------------------------------------- -\section{Code} - -\begin{tabular}{lp{30mm}p{30mm}} -Code & Inputs & Outputs \\ -\hline -spreduce2d & spPlan2d & \\ -\hline - spreduce & sdR \newline plPlugMapM & \\ -\hline - spcalib & & spArc \newline spFlat \newline spFrame \\ -\end{tabular} - -\end{document} diff --git a/doc/spphoto.ps b/doc/spphoto.ps deleted file mode 100644 index d17d4e9c4..000000000 Binary files a/doc/spphoto.ps and /dev/null differ diff --git a/doc/www/idlspec2d_install.html b/doc/www/idlspec2d_install.html deleted file mode 100644 index 604895fa9..000000000 --- a/doc/www/idlspec2d_install.html +++ /dev/null @@ -1,230 +0,0 @@ - -SDSS Spectro (idlspec2d) Installation - - - -

    SDSS Spectro (idlspec2d) Installation

    - -

    -This document explains how to install the idlutils,idlspec2d,specflat products -needed for reducing SDSS spectroscopic data. The current (Nov 2003) versions -of the code are: -

    -  idlutils v5_3_0
    -  specflat v1_5
    -  idlspec2d v5_2_0
    -
    - -

    -In this document: -

    - -

    CVS install w/UPS and EvilUPS

    - -
      -
    1. -You must have "idl" in your path, and the IDL_PATH -environment variable should already be set. At Princeton, you would type -the following for C-shell: -
      -  source /usr/peyton/common/licensed/idl/bin/idl_setup
      -  setenv IDL_PATH         .:+{$IDL_DIR}/lib
      -
      -or the following for Bourne shell: -
      -  IDL_DIR=/usr/peyton/common/licensed/idl 
      -  IDL_PATH=.:+{$IDL_DIR}/lib
      -  alias idl=$IDL_DIR/bin/idl
      -
      -
    2. - -
    3. -The code is in a world-readable Princeton CVS repository. -You will need the environment variables CVS_RSH and CVSROOT set. -If you are using C-shell: -
      -  % setenv CVS_RSH ssh
      -  % setenv CVSROOT :pserver:anonymous@sdsscvs.astro.princeton.edu:/usr/local/cvsroot
      -
      -If you are using Borne-shell: -
      -  % CVS_RSH=ssh
      -  % CVSROOT=:pserver:anonymous@sdsscvs.astro.princeton.edu:/usr/local/cvsroot
      -
      -The above definitions could be put in your ~/.cshrc file (for C-shell -users) or ~/.bashrc file (for Borne-shell users). -
    4. -To access this repository, you will need to generate a ~/.cvspass -file as follows: -
      -  cvs login
      -    (hit a carriage return when it asks for the "CVS password")
      -
      - -
    5. -Install the "evilups" product, which is a set of scripts written by Nikhil -Padmanabhan for managing different versions of software. The example below -puts the code in the directory $HOME/products: -
      -  cvs export -d evilups-temp -r v0_7_14 evilups
      -  setenv PROD_DIR_PREFIX $HOME/products
      -  setenv PRODUCTS $PROD_DIR_PREFIX/ups_db
      -  setenv EUPS_DIR $PROD_DIR_PREFIX/evilups
      -  cd evilups-temp
      -  make clean
      -  make install
      -  setenv EUPS_FLAVOR `/bin/uname`
      -  source $EUPS_DIR/bin/setups.csh
      -
      -
    6. - -
    7. -The idlutils code is in a world-readable SVN repository at Berkeley Lab. -
      -  % svn co https://projects.lbl.gov/svn/idlutils/tags/v5_3_0 $HOME/products/idlutils/$EUPS_FLAVOR/v5_3_0
      -  % cd $HOME/products/$EUPS_FLAVOR/idlutils/v5_3_0
      -  % bin/evilmake
      -  % eups_declare -f $EUPS_FLAVOR -r $EUPS_PATH/$EUPS_FLAVOR/idlutils/v5_3_0 -c idlutils v5_3_0
      -
      -
    8. - -
    9. -Now install the remaining code, installing first "specflat" and -then "idlspec2d". Installing in this order gets the dependencies right, -since the UPS database needs to know that idlspec2d depends upon particular -versions of those other products. An install would then look something like: -
      -  % evilinstall specflat v1_5 ; setup specflat
      -  % evilinstall idlspec2d v4_10_6 ; setup idlspec2d
      -
      - -
    - -

    -That's it! Note that "evilinstall" should work for any survey code, -not just the Spectro products. - - -

    CVS install w/out EvilUPS

    - -These steps are to check out tagged verions of -the "specflat", "idlutils" and "idlspec2d" products using CVS. -The examples below check out and build the code into your home directory. - -
      -
    1. -For the example that follows, I have assumed you -are using the Bourne-shell. If you normally use C-shell, you can get -the Bourne-shell prompt with: -
      -  % bash
      -
      - -
    2. -IDL must be installed on your system, and -the environment variables IDL_DIR and IDL_PATH must already be set. - -
    3. -The idlutils code is in a world-readable SVN repository at Berkeley Lab. -
      -  svn co https://projects.lbl.gov/svn/idlutils/tags/v5_3_0 idlutils
      -
      -
    4. - -
    5. -The other code is in a world-readable Princeton CVS repository. -To access this repository, you will first need to generate a ~/.cvspass -file as follows: -
      -  % cvs -d :pserver:anonymous@sdsscvs.astro.princeton.edu:/usr/local/cvsroot login
      -
      -When the above asks for a password, just hit Enter. -You will also need the environment variables CVS_RSH and CVSROOT set. -If you are using Borne-shell: -
      -  % CVS_RSH=ssh
      -  % CVSROOT=:pserver:anonymous@sdsscvs.astro.princeton.edu:/usr/local/cvsroot
      -
      -The above definitions could be put in your ~/.cshrc file (for C-shell -users) or ~/.bashrc file (for Borne-shell users). - -
    6. -Check out tagged versions of "idlutils", "specflat" and "idlspec2d". -Put them into your home directory (for this example). -
      -  % cvs co -r v1_5 specflat
      -  % cvs co -r v5_2_0 idlspec2d
      -
      - -
    7. -Set the environment variables. From the Bourne-shell: -
      -  % IDLUTILS_DIR=$HOME/idlutils
      -  % SPECFLAT_DIR=$HOME/specflat
      -  % IDLSPEC2D_DIR=$HOME/idlspec2d
      -  % PATH=$IDLUTILS_DIR/bin:$SPECFLAT_DIR/bin:$IDLSPEC2D_DIR/bin:$PATH
      -  % IDL_PATH=+$IDLUTILS_DIR/goddard/pro:$IDL_PATH
      -  % IDL_PATH=+$IDLUTILS_DIR/pro:$IDL_PATH
      -  % IDL_PATH=+$IDLSPEC2D_DIR/pro:$IDL_PATH
      -
      -You may wish to add the above lines to your ~/.bashrc file -(or the equivalent setenv commands to your ~/.cshrc file). - -
    8. -Build the code: -
      -  % cd $IDLUTILS_DIR
      -  % evilmake all
      -  % cd $SPECFLAT_DIR
      -  % evilmake all
      -  % cd $IDLSPEC2D_DIR
      -  % evilmake all
      -
      - -
    - -

    Installing from a tar file

    - -These steps are to check out tagged verions of -the "specflat", "idlutils" and "idlspec2d" products using CVS. -The examples below check out and build the code into your home directory. - -
      -
    1. -IDL must be installed on your system, and -the environment variables IDL_DIR and IDL_PATH must already be set. - -
    2. -Grab the tar files from the web site: -http://spectro.princeton.edu/tarballs -To download the tar files, press shift-(left-mouse) on the link to each file. - -
    3. -Unpack the tar files for "idlutils", "specflat" and "idlspec2d": -
      -  % tar xvf idlutils*.tar
      -  % tar xvf specflat*.tar
      -  % tar xvf idlspec2d*.tar
      -
      - -
    4. -Continue from step 5 of the instructions -for "Installing w/out EvilUPS". - -
    - -
    - -
    Maintained by -David Schlegel -at Princeton University, Dept. of Astrophysics, Peyton Hall, Princeton NJ 08544 -
    - - - - diff --git a/doc/www/idlspec2d_reduce.html b/doc/www/idlspec2d_reduce.html deleted file mode 100644 index a93804cab..000000000 --- a/doc/www/idlspec2d_reduce.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - -Reducing Raw SDSS Specroscopic Data - - - - -

    Reducing Raw SDSS Specroscopic Data

    - -

    These are the instructions for running the spectroscopic pipeline on -the raw SDSS data. You must first install -the IDL code, which are the three products: idlspec2d, idlutils, -specflat.

    -
    - -

    The Directory Structure

    - -

    The directory stucture for spectroscopic data is described by environment -variables as follows:

    -
    -$BOSS_SPECTRO_DATA/mmmmm - The raw image, "sdR-cc-eeeeeeee.fit"
    -$SPECLOG_DIR/mmmmm - The plug-map files, "plPlugMapM-pppp-mmmmm-rr.par"
    -
    -

    where mmmmm refers to an MJD (such as 51690), cc refers -to a camera name (such as b1 for blue-1), pppp refers to a plate -number (such as 0306), eeeeeeee refers to an exposure number -(such as 00003974), and rr refers to a fiber-mapper re-run number -(such as 01).

    -

    At Princeton, these paths would be set as follows:

    -
    -BOSS_SPECTRO_DATA=/u/dss/rawdata
    -SPECLOG_DIR=/u/dss/astrolog
    -
    -

    To re-run a plate through the spectro pipeline, you need all of these files. -Both paths must be set appropriately.

    - -

    Obtaining the Raw Data

    - -

    The raw images for a particular night ($MJD) can be found at:

    -
    -sdssdata.astro.princeton.edu:/u/dss/rawdata/$MJD/sdR*.fit
    -
    -

    The plug-map files for a particular night ($MJD) can be found at:

    -
    -sdssdata.astro.princeton.edu:/u/dss/astrolog/$MJD/plPlugMapM*.par
    -
    -

    These are also available from the CVS product "speclog".

    - -

    Generating Plan Files

    - -

    My convention is to put the reduced data in a directory separate from -the data where the top-level directory is $BOSS_SPECTRO_REDUX. At Princeton, -this would be set to

    -
    -BOSS_SPECTRO_REDUX=/u/dss/spectro
    -
    -

    Each plate is put in its own subdirectory, so the reductions of plate 306 -would be in "/u/dss/spectro/0306".

    -

    Before running the spectro pipeline, you need to build plan files for -each plate. Create the output directory $BOSS_SPECTRO_REDUX. From there, -build the plan files...

    -
    -IDL> spplan2d
    -IDL> spplan1d
    -
    -

    This could take an hour to build plan files for all the data taken to date. -However, you can limit this to particular nights of data by setting -keywords to these procedures (see the full documentation).

    -

    The spplan2d command builds the files "spPlan2d-pppp-mmmmm.par". -There is one such file for each night a plate is observed.

    -

    The spplan1d command builds the files "spPlancomb-pppp-mmmmm.par". -This file merges exposures from multiple nights of observations of the same -plate if those observations were taken without re-plugging the plate. -If the plate was re-plugged between nights, then a given fiber will correspond -to different objects in each night, and those nights' data shouldn't be -combined with "spcombine".

    -

    Note that these plan files are ASCII files (in something called a Yanny -parameter format) which can be hand-edited. That way, you can exclude -particular exposures from a reduction by commenting-out lines with hash -marks (#).

    - -

    Running from the IDL Prompt

    - -

    It takes approximately 3.5 hours to run one plate through Spectro-2D on -a 1-GHz Pentium-III, and another 8 hours to run Princeton-1D.

    -

    In each output plate directory, you can run the following three commands -from the IDL prompt:

    -
    -IDL> spreduce2d
    -IDL> spcombine
    -IDL> spreduce1d
    -
    -

    The spreduce2d command reduces individual exposures to -"spFrame-cc-eeeeeeee.fits" files.

    -

    The spcombine command combines those exposures into the reduced plate -file, "spPlate-pppp-mmmmm.fits".

    -

    The spreduce1d command finds the redshifts, and generates the file -"spZbest-pppp-mmmmm.fits".

    -

    A number of other supplementary files are also produced. The history -of the reductions are written to log files named "spDiag*.log", and -some PostScript plots are written to "spDiag*.ps".

    - -

    Running in the Background

    - -

    For example, to reduce plate 306 from the command line,

    -
    -echo "spreduce2d, 'spPlan2d-0306-51690.par'" | idl >& /dev/null &
    -
    - -

    Reducing Data Automatically with the Spectro Robot

    - -

    We use an IDL script BATCH2D -for batch processing many plates at once, which in turn calls -DJS_BATCH:This script will run -jobs across local or remote networks using rsh -or ssh protocols. For a remote machine, the raw data files are shipped -across the network, the plate is reduced, then the reductions are shipped -back. Presumably, this would work just fine on the Fermi farms. The plan -files need to be built before running this script. Also make certain -that the remote machines have their UPS environment and the idlspec2d -product set up from the ".bashrc" file, since the remote commands are -launched from the bash shell.

    -

    There is a Spectro-Robot that automatically fetches data, builds plan files, -and reduces it on a day-by-day basis. The command "sprobot_start" loads -the cron job. The raw data is copied to the first disk with space listed -in the SPROBOT_LOCALDISKS environment variable, then a link is built from -$BOSS_SPECTRO_DATA/$MJD to that directory. At Princeton, the disk list is -something like:

    -
    -SPROBOT_LOCALDISKS='/scr/spectro1/data/rawdata /scr/spectro2/data/rawdata'
    -
    - -

    Other environment variables that need to be set for the Spectro-Robot:

    -
      -
    • SPROBOT_LOCALDISKS -- List of local disks to which to copy the data.
    • -
    • SPROBOT_HOST -- Remote host name for copying the raw data; I currently -use "sos.apo.nmsu.edu".
    • -
    • SPROBOT_RSH -- Optional environment variable setting protocol for copying -data from the remote host $SPROBOT_HOST; default to "ssh" -if not set, but I currently use "ssh1".
    • -
    • BOSS_SPECTRO_DATA -- Root directory for links to raw data directories, which -then live in $BOSS_SPECTRO_DATA/$MJD
    • -
    • ASTROLOG_DIR -- Root directory for astrolog files, which then live in -$ASTROLOG_DIR/$MJD.
    • -
    • SPECLOG_DIR -- This can be identical to $ASTROLOG_DIR, or set by speclog -product
    • -
    • BOSS_SPECTRO_REDUX -- Root directory for output files, which then live in -$BOSS_SPECTRO_REDUX/$RUN2D/$PLATE.
    • -
    • IDL_DIR -- Path set by IDL
    • -
    • IDLUTILS_DIR -- Path set by idlutils product
    • -
    • IDLSPEC2D_DIR -- Path set by idlspec2d product
    • -
    • SPECFLAT_DIR -- Path set by specflat product
    • -
    -

    If any of the above variables are not set, then -"sprobot_start" will issue an error message and fail to load. A log file -is written to the file "$BOSS_SPECTRO_DATA/sprobot.log".

    -

    There are two Yanny parameter files that list the computer names and protocols -to use. There are default files in "$IDLSPEC2D_DIR/examples/batch2d.par" -and "$IDLSPEC2D_DIR/examples/batch1d.par" for use with Spectro-2D and P-1D -respectively. You can over-ride these default files by putting files with -the same names in the directory $BOSS_SPECTRO_REDUX.

    -

    The Spectro-Robot commands:

    -
    -sprobot_start   -- Start the Spectro-Robot.
    -sprobot_status  -- See if the Spectro-Robot is running.
    -sprobot_stop    -- Stop the Spectro-Robot.
    -
    -

    Finally, if one wished to *not* run Princeton-1D, then the line containing -"sprobot1d.sh" would have to be removed from the file "sprobot.sh".

    -
    -
    Maintained by -David Schlegel -at Princeton University, Dept. of Astrophysics, Peyton Hall, Princeton NJ 08544 -
    - - diff --git a/doc/www/pathall.ps b/doc/www/pathall.ps deleted file mode 100644 index bd474bd27..000000000 Binary files a/doc/www/pathall.ps and /dev/null differ diff --git a/doc/www/platehist.ps b/doc/www/platehist.ps deleted file mode 100644 index 52544c64f..000000000 Binary files a/doc/www/platehist.ps and /dev/null differ diff --git a/doc/www/platelist.txt b/doc/www/platelist.txt deleted file mode 100644 index 6241ee308..000000000 --- a/doc/www/platelist.txt +++ /dev/null @@ -1,222 +0,0 @@ -PLATE MJD RA DEC SN2_G1 SN2_I1 SN2_G2 SN2_I2 Ngal Nqso Nsta Nunk Nsky ------ ----- ----- ----- ------ ------ ------ ------ ---- ---- ---- ---- ---- - 182 51703 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 188 51457 358.8 0.0 22.1 14.8 11.1 13.2 402 61 74 53 50 - 190 51457 2.5 0.0 25.1 16.3 13.4 9.0 431 56 54 49 50 - 187 51454 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 192 51461 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 194 51462 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 198 51433 21.4 0.1 8.4 5.6 14.1 16.3 442 34 56 58 50 - 202 51441 30.3 0.2 6.0 5.1 7.8 3.2 412 64 43 71 50 - 203 51456 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 204 51455 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 209 51462 46.6 0.0 20.8 14.1 11.2 4.7 436 42 70 42 50 - 213 51578 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 191 51456 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 218 51461 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 231 51456 60.0 0.0 23.8 10.8 19.3 13.1 66 43 172 319 40 - 235 51462 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 260 51612 65.2 0.1 4.0 3.9 4.4 2.6 329 22 63 194 32 - 265 51602 80.1 0.0 23.6 12.3 9.9 6.9 370 31 151 56 32 - 266 51602 145.9 0.1 27.1 20.2 18.3 11.9 492 38 57 21 32 - 266 51630 145.9 0.1 32.6 33.3 33.2 34.4 504 44 54 6 32 - 267 51608 147.7 -0.0 23.5 22.7 30.9 24.5 535 23 37 13 32 - 268 51633 149.1 0.1 32.2 26.7 33.8 29.1 542 20 46 0 32 - 269 51581 150.6 0.0 17.3 16.8 15.1 10.6 499 34 63 12 32 - 269 51910 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 270 51909 152.4 -0.1 29.6 26.8 25.4 26.1 0 0 0 0 0 - 271 51879 154.3 0.1 12.4 8.5 11.7 7.7 504 45 42 17 32 - 271 51883 154.3 0.1 27.1 23.9 29.0 22.0 510 45 45 8 32 - 275 51910 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 276 51909 163.4 -0.0 46.7 39.3 39.9 39.0 0 0 0 0 0 - 277 51908 165.2 0.1 26.9 25.0 28.4 25.6 0 0 0 0 0 - 278 51899 167.0 0.0 18.9 11.0 15.8 15.9 516 43 35 14 32 - 278 51900 167.0 0.0 48.1 34.4 40.8 42.5 0 0 0 0 0 - 279 51608 168.9 -0.0 19.3 14.6 18.6 15.5 520 39 38 11 32 - 280 51612 170.4 0.1 40.1 37.2 42.8 38.6 534 24 41 9 32 - 281 51614 171.8 0.1 31.3 25.2 39.5 37.3 472 40 80 16 32 - 282 51630 173.8 -0.0 11.6 17.9 18.7 16.1 392 58 118 40 32 - 282 51658 173.8 -0.0 33.7 30.7 40.6 31.2 418 63 121 6 32 - 283 51584 176.0 -0.0 12.1 9.5 8.1 4.7 451 52 66 39 32 - 283 51660 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 284 51662 178.0 -0.1 14.2 13.9 13.4 11.6 510 47 43 8 32 - 285 51663 179.6 -0.0 15.0 11.6 14.5 16.3 515 28 52 13 32 - 291 51660 190.7 -0.0 19.1 16.0 16.0 18.3 525 30 43 10 32 - 292 51609 192.5 -0.0 21.2 18.6 23.4 18.4 469 56 75 8 32 - 293 51689 194.4 0.0 21.5 25.9 19.3 24.1 429 74 94 11 32 - 295 51580 198.1 0.0 2.4 2.0 1.4 0.8 426 25 41 116 32 - 295 51585 198.1 0.0 10.5 6.0 18.2 10.5 494 35 35 44 32 - 296 51578 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 296 51665 199.8 0.1 17.2 14.9 14.5 12.4 534 35 36 3 32 - 297 51663 201.6 0.0 15.0 17.9 18.0 18.4 526 29 45 8 32 - 298 51662 203.5 0.0 14.3 8.6 14.5 12.5 452 48 95 13 32 - 299 51671 205.4 -0.0 32.2 27.3 28.0 26.7 471 39 89 9 32 - 300 51666 207.2 0.0 23.8 20.6 20.3 19.2 456 54 90 8 32 - 301 51641 209.6 -0.0 19.9 21.9 20.7 20.3 429 65 109 5 32 - 302 51616 211.7 0.0 1.6 1.2 1.7 1.4 419 36 58 95 32 - 302 51688 211.7 0.0 23.8 21.4 24.7 23.3 486 52 67 4 31 - 303 51615 213.4 -0.0 24.4 23.1 27.8 23.2 526 34 46 2 32 - 304 51609 214.6 -0.0 19.1 16.8 23.3 21.0 457 34 114 4 31 - 305 51613 216.3 0.0 25.0 26.1 29.4 30.6 472 36 94 6 32 - 306 51637 217.9 -0.0 30.8 29.5 29.7 30.9 506 45 54 3 32 - 306 51690 217.9 -0.0 20.1 25.3 21.3 27.1 505 46 53 4 32 - 307 51663 219.7 -0.0 23.0 22.2 21.1 22.0 458 44 97 9 32 - 308 51662 221.6 -0.1 27.7 23.7 29.2 26.0 418 64 113 13 32 - 309 51666 223.7 0.0 21.6 14.4 21.3 15.0 432 58 104 14 32 - 310 51616 225.9 0.0 10.7 10.4 13.3 12.9 429 59 100 20 32 - 311 51665 227.4 0.0 22.4 20.2 22.4 19.4 528 29 47 4 32 - 312 51689 229.1 0.0 20.3 25.3 22.5 27.8 500 46 60 2 32 - 313 51673 230.9 0.0 22.6 22.8 22.1 19.2 489 40 69 10 32 - 314 51641 232.7 0.1 16.1 17.8 21.3 17.0 530 27 47 4 32 - 315 51663 234.6 0.1 18.8 15.9 18.6 22.1 504 42 49 13 32 - 318 51580 132.8 11.8 0.0 0.0 0.0 0.0 29 284 198 97 32 - 318 51614 132.8 11.8 0.0 0.0 0.0 0.0 89 329 22 168 32 - 318 51629 132.8 11.8 0.0 0.0 0.0 0.0 237 46 226 99 32 - 323 51615 183.0 0.0 37.2 162.7 51.2 141.1 38 2 568 0 32 - 324 51616 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 324 51666 183.0 -0.1 20.6 18.8 21.3 30.2 14 5 588 1 32 - 338 51694 194.4 -2.3 23.2 23.9 21.8 24.2 490 40 66 11 33 - 339 51692 196.3 -2.6 25.4 26.8 24.1 19.8 466 45 84 13 32 - 340 51691 198.1 -2.2 22.6 23.9 19.1 20.9 441 42 114 11 32 - 341 51690 200.1 -2.3 25.3 23.4 21.2 25.6 480 41 76 10 33 - 342 51691 236.9 0.1 20.6 19.9 25.6 29.0 422 45 126 14 33 - 343 51692 239.0 -0.1 25.0 27.5 22.8 21.2 442 43 111 12 32 - 344 51693 240.7 0.1 17.7 22.4 20.8 22.1 429 31 118 29 33 - 345 51690 242.4 -0.1 20.8 22.8 21.9 27.2 455 39 96 17 33 - 346 51693 244.3 0.0 19.0 23.2 21.8 24.5 407 42 141 17 33 - 347 51701 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 348 51671 248.6 0.1 28.6 23.7 26.0 28.3 374 25 204 5 32 - 348 51696 248.6 0.1 19.8 32.6 17.1 28.2 367 25 211 5 32 - 349 51699 254.2 63.7 48.4 56.2 44.7 54.3 434 38 119 16 33 - 350 51691 258.6 65.1 21.9 26.7 25.6 28.7 260 292 44 12 32 - 351 51695 255.8 61.6 18.9 23.1 20.0 21.1 455 50 81 22 32 - 351 51780 255.8 61.6 22.1 23.1 16.9 17.4 455 50 82 21 32 - 352 51694 260.2 63.0 21.1 22.8 26.4 27.2 441 42 119 6 32 - 352 51789 260.2 63.0 24.4 24.3 21.6 22.3 442 39 120 7 32 - 353 51703 257.5 59.6 36.5 38.0 35.5 38.4 475 47 76 10 32 - 354 51792 261.3 60.9 15.6 19.3 14.7 20.7 371 83 130 24 32 - 355 51788 258.9 57.5 28.2 28.7 22.9 25.5 467 40 89 12 32 - 356 51779 262.4 58.8 18.9 20.0 14.2 4.7 387 77 122 22 32 - 357 51813 260.3 55.4 35.2 36.0 26.1 30.3 384 57 150 17 32 - 358 51818 263.4 56.7 26.5 27.6 26.2 27.6 424 75 98 11 32 - 359 51821 261.3 53.3 11.3 13.4 10.7 13.7 318 72 123 43 84 - 360 51780 264.4 54.6 19.9 22.0 12.4 17.2 405 82 108 12 33 - 360 51816 264.4 54.6 20.7 21.5 19.8 20.1 408 82 107 10 33 - 373 51788 331.8 0.0 25.2 28.5 21.5 20.5 413 47 138 10 32 - 374 51791 333.7 -0.0 18.9 16.0 19.2 16.2 439 48 105 16 32 - 379 51789 343.4 0.1 18.6 17.2 17.9 15.5 513 35 51 9 32 - 380 51792 345.4 -0.1 26.9 18.6 24.6 18.0 422 65 108 11 34 - 381 51811 347.4 0.0 28.1 27.4 27.1 26.2 388 109 99 10 34 - 382 51816 349.2 0.1 26.6 22.1 20.3 20.7 392 97 108 11 32 - 383 51818 351.3 0.1 28.8 22.6 28.8 25.7 450 63 89 5 33 - 384 51821 353.3 -0.0 25.4 25.8 26.4 26.2 497 41 62 8 32 - 385 51783 355.4 0.0 28.8 31.8 27.8 28.5 449 65 86 8 32 - 385 51877 355.4 0.0 52.1 34.9 43.4 33.4 451 65 86 6 32 - 386 51788 357.7 0.1 16.4 21.2 24.3 19.8 421 70 103 14 32 - 387 51791 359.7 0.1 35.3 25.6 30.0 26.5 507 43 49 9 32 - 388 51793 1.8 -0.0 18.4 17.2 18.4 16.3 515 38 48 7 32 - 389 51795 3.6 -0.0 25.7 36.6 26.5 33.5 507 47 49 4 33 - 390 51816 5.2 -0.1 22.3 20.1 23.8 21.5 517 36 46 9 32 - 390 51885 5.2 -0.1 7.6 14.9 10.2 19.1 452 23 40 93 32 - 391 51782 7.0 0.1 18.4 22.2 20.6 22.1 524 29 49 6 32 - 392 51793 8.8 0.0 26.5 27.1 25.7 30.7 499 46 58 5 32 - 393 51794 10.9 0.0 23.8 25.5 24.2 24.6 507 45 46 10 32 - 394 51812 12.8 -0.0 39.1 28.4 40.7 31.2 509 42 47 10 32 - 394 51876 12.8 -0.0 25.6 19.1 27.2 22.5 513 43 44 8 32 - 394 51901 12.8 -0.0 42.7 33.8 42.7 36.4 512 42 47 7 32 - 394 51902 12.8 -0.0 63.8 48.1 65.1 54.6 511 43 47 7 32 - 395 51783 14.6 0.1 21.2 18.6 21.1 23.6 520 37 41 7 35 - 396 51816 16.5 0.1 30.4 30.7 24.2 26.0 525 38 42 3 32 - 397 51794 18.3 -0.0 28.7 31.3 27.0 35.4 522 41 44 1 32 - 398 51789 19.8 0.0 25.9 30.3 33.8 28.3 525 38 40 4 33 - 399 51817 21.7 0.1 28.5 32.8 25.8 32.6 527 32 45 4 32 - 400 51820 23.6 0.1 24.7 26.1 23.3 22.7 512 48 45 3 32 - 401 51788 25.8 -0.1 23.3 20.0 24.9 23.8 501 45 51 11 32 - 402 51793 28.0 0.0 27.9 29.3 27.7 30.7 530 38 36 4 32 - 403 51871 29.8 -0.0 24.8 21.7 26.2 24.2 503 46 44 13 34 - 404 51812 31.6 -0.0 25.5 24.5 26.1 20.9 526 27 50 4 33 - 404 51877 31.6 -0.0 25.0 26.5 20.5 18.0 524 28 52 3 33 - 405 51816 33.7 -0.1 20.0 24.3 23.2 22.6 463 51 76 18 32 - 406 51817 35.9 0.1 30.7 32.5 30.2 29.4 436 73 91 7 33 - 406 51869 35.9 0.1 43.6 33.6 39.1 34.0 433 72 91 11 33 - 406 51876 35.9 0.1 30.2 31.5 27.9 29.9 436 72 90 9 33 - 406 51900 35.9 0.1 34.5 27.2 30.8 26.6 437 71 89 10 33 - 407 51820 37.8 -0.1 30.2 26.9 26.1 24.7 438 62 95 12 33 - 408 51821 39.8 0.1 25.8 24.0 25.6 24.8 376 123 85 24 32 - 409 51871 42.0 0.0 35.7 25.5 27.2 25.9 471 55 77 5 32 - 410 51816 43.9 -0.0 20.2 21.0 20.9 20.6 395 98 98 17 32 - 410 51877 43.9 -0.0 26.0 22.7 31.0 24.4 408 101 91 8 32 - 411 51817 45.9 -0.1 28.8 29.6 27.3 24.7 524 43 39 0 34 - 411 51873 45.9 -0.1 25.7 25.1 26.1 20.8 522 43 39 2 34 - 412 51871 47.7 0.1 20.7 21.2 19.1 17.3 508 41 49 9 33 - 413 51821 49.7 0.0 24.2 23.0 19.7 21.4 451 56 94 7 32 - 414 51869 51.6 -0.0 6.1 6.1 5.4 4.2 433 54 70 50 33 - 414 51876 51.6 -0.0 10.2 5.5 1.3 2.3 407 34 48 118 33 - 414 51885 51.6 -0.0 7.0 10.0 6.7 15.0 412 46 61 88 33 - 414 51898 51.6 -0.0 29.1 18.0 18.2 25.9 471 58 69 9 33 - 415 51810 53.5 0.1 26.1 32.3 28.3 30.2 461 57 77 13 32 - 415 51879 53.5 0.1 25.3 28.1 24.4 21.8 463 57 76 12 32 - 416 51811 55.4 0.1 28.8 30.3 26.1 28.0 435 91 72 9 33 - 416 51885 55.4 0.1 8.0 23.4 8.1 19.3 392 52 59 104 33 - 417 51821 7.5 15.0 25.8 30.6 26.8 28.0 311 52 52 11 214 - 418 51817 9.5 15.0 27.9 40.3 32.3 33.2 431 95 72 10 32 - 418 51884 9.5 15.0 9.4 20.3 12.4 16.5 400 49 60 99 32 - 419 51812 11.2 14.9 26.6 27.9 29.6 24.3 415 95 84 14 32 - 419 51868 11.2 14.9 39.0 28.9 37.0 25.1 417 95 83 13 32 - 419 51879 11.2 14.9 39.5 32.0 41.1 29.4 416 98 83 11 32 - 420 51871 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 421 51821 15.2 14.7 28.7 29.8 26.0 28.1 512 56 35 5 32 - 422 51811 17.3 14.6 27.9 24.3 27.9 27.0 533 34 31 10 32 - 422 51878 17.3 14.6 30.2 23.7 30.0 24.4 532 34 38 4 32 - 423 51821 19.0 14.5 29.1 28.2 24.9 24.6 522 45 38 3 32 - 425 51884 22.9 14.3 14.7 22.4 15.7 27.2 389 70 70 79 32 - 425 51898 22.9 14.3 30.9 23.3 26.0 27.4 403 115 80 10 32 - 426 51879 24.7 14.1 5.3 4.4 5.3 4.3 381 74 78 75 32 - 426 51882 24.7 14.1 28.8 18.1 39.5 14.1 267 152 34 155 32 - 427 51899 30.6 13.6 9.4 5.1 9.2 6.3 364 72 85 85 34 - 427 51900 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 428 51883 32.8 13.3 21.7 25.9 25.7 25.8 443 42 111 12 32 - 429 51820 26.7 14.0 58.7 52.9 51.0 48.5 524 43 38 3 32 - 430 51877 28.6 13.8 24.0 24.8 21.8 20.1 515 47 38 8 32 - 431 51877 113.5 37.8 30.3 30.6 34.4 29.5 355 79 159 15 32 - 432 51884 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 433 51873 116.7 38.2 39.2 37.1 43.2 26.5 389 61 148 9 33 - 434 51885 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 435 51879 118.8 40.3 15.2 14.3 19.1 13.1 345 107 139 17 32 - 435 51882 118.8 40.3 27.4 23.7 46.8 32.5 348 112 139 9 32 - 436 51883 119.1 44.9 33.2 34.2 35.8 27.5 476 44 84 4 32 - 437 51869 120.4 42.7 28.2 28.3 32.4 29.1 362 94 138 14 32 - 437 51876 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 438 51884 121.3 47.1 36.8 31.2 40.4 26.8 477 53 71 7 32 - 439 51877 122.6 44.7 29.8 28.9 32.2 27.3 398 57 148 5 32 - 440 51885 123.3 49.1 41.2 30.3 38.1 35.7 504 46 51 7 32 - 441 51868 124.9 46.8 23.1 26.1 29.8 23.1 455 51 94 8 32 - 442 51882 125.7 50.9 22.0 19.8 19.4 16.9 510 50 40 8 32 - 443 51873 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 444 51883 128.0 52.7 30.6 30.7 27.5 24.2 491 65 44 8 32 - 445 51873 129.5 50.5 26.2 30.4 33.0 26.5 515 51 36 6 32 - 446 51899 130.6 54.5 33.2 24.9 36.2 25.0 511 43 43 11 32 - 447 51877 132.0 52.1 35.4 28.7 32.9 25.6 506 60 37 5 32 - 448 51900 133.2 56.2 37.6 32.6 38.7 35.9 509 57 37 5 32 - 449 51900 134.5 53.9 34.2 30.0 30.0 25.7 515 47 37 8 33 - 450 51907 137.3 55.3 26.9 24.2 25.4 21.6 514 50 35 9 32 - 450 51908 137.3 55.3 56.0 24.2 50.4 21.6 0 0 0 0 0 - 451 51902 140.6 56.6 15.2 11.0 14.0 10.0 437 75 79 17 32 - 452 51911 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 453 51911 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 454 51902 36.9 -8.6 4.5 3.9 4.1 3.8 428 65 67 48 32 - 455 51909 39.1 -8.3 26.4 28.8 28.1 26.6 0 0 0 0 0 - 456 51910 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 457 51901 43.8 -7.9 26.0 23.8 22.1 23.7 410 107 72 18 33 - 461 51910 53.0 -6.8 22.4 23.4 20.8 24.2 0 0 0 0 0 - 462 51909 55.2 -6.6 28.1 24.7 25.4 27.9 0 0 0 0 0 - 463 51908 57.5 -6.1 25.8 20.0 21.1 22.7 0 0 0 0 0 - 464 51902 59.7 -5.7 25.8 19.2 27.9 26.1 500 63 37 8 32 - 465 51909 62.0 -5.6 20.5 17.1 23.2 22.7 0 0 0 0 0 - 465 51910 62.0 -5.6 34.1 24.6 37.3 35.5 0 0 0 0 0 - 467 51901 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 - 481 51908 148.1 1.6 36.5 25.6 38.2 26.3 0 0 0 0 0 - 483 51902 134.4 57.0 40.9 26.7 36.7 21.9 377 103 112 16 32 - 484 51907 138.0 58.4 29.7 22.9 26.9 18.2 410 104 84 10 32 - 485 51909 141.4 60.0 25.3 31.7 22.3 20.2 0 0 0 0 0 - 486 51910 0.0 0.0 0.0 0.0 0.0 0.0 0 0 0 0 0 diff --git a/doc/www/spEigenStar-52374.ps b/doc/www/spEigenStar-52374.ps deleted file mode 100644 index f8a2d3636..000000000 Binary files a/doc/www/spEigenStar-52374.ps and /dev/null differ diff --git a/doc/www/spectroSOS.html b/doc/www/spectroSOS.html deleted file mode 100644 index f79c6ba57..000000000 --- a/doc/www/spectroSOS.html +++ /dev/null @@ -1,1036 +0,0 @@ - - - - Son-of-Spectro Documentation - - - -

    Son-of-Spectro (SOS) Documentation

    - -This document desribes the real-time reductions of spectroscopic data -taken with the SDSS 2.5-m. These reductions are robotically posted -to the - - -SOS web page and archived at the - -Princeton mailing list. - -

    -In this document: -

    - -

    -Related documents: -

    - - -

    Overview of Son-of-Spectro

    - -

    Son-of-spectro is a set of daemon jobs that runs from the observer account on -sos3.apo.nmsu.edu. The actual processes are named sos_runnerd.py and there will be four -instances running, one per camera. Although sos_runnerd.py can be started manually, users -will seldom if ever start the process using this command. Instead, there are two user -commands that know about the setup at APO. They are sos_apocontrol and sos_apostart. -sos_apocontrol is the highest level command and should be used most often. sos_apocontrol -allows for the starting, stopping and monitoring of the daemon processes using the -standard APO options. In order to start the processes, sos_apocontrol calls sos_apostart. -sos_apostart can be called manually and allows more flexibility. Each of those commands -will start four instances of sos_runnerd, one per camera, with the correct parameters for -APO.

    - -At APO the log files are stored in ~observer/sos/sos-logs and there is one log file per -camera for all commands and one log file per camera that only stores errors. It is a -good idea to periodically check the error log. Each log file is rotated out daily and -saved for four days.

    - -The sos daemon processes can not be automatically started at boot because they need a -password to be manually entered in order to access svn. Because of this, starting the -sos daemons should be part of the SOS3 boot procedures document.

    - -There is also a redo command, sos_aporedo that allows one nights of data to be manually -rerun trough aporeduce. Again, sos_aporedo will start four processes, one per camera, -to reprocess the images.

    - -For more information be sure and read the sos daemon -readme -file. Also, each command has usage information via the '-?' option. Finally, for even -more information each source file has a document header at the beginning of the file -with implementation details.

    - -

    Procedures for Son-of-Spectro

    - -=== All commands are executed from observer@sos3 ===
    -=== All commands assume that idlspec2d is setup ===
    -=== Read the readme file for more information on the commands.

    - -

    Confirm SOS Processes are Running

    - -
    -$ sos_apocontrol status -

    - -There should be four instances of sos_runnerd -displayed, one per camera. The first line will be "N processes running", -the last line will be "sos_apocontrol finished running!". -Between those lines should be four instances of sos_runnerd. Each instance will be a long -line separated by a blank line.

    - -If you do not see see four processes running, stop the processes and then start the -processes.

    - -

    Stop SOS Processes

    - -
    -$ sos_apocontrol stopWait -

    - -If sos is processing an image, this command will allow the current idl process to finish -before stopping sos. If this command does not return after some time (~5 min), then -^C to kill the process and use the following command: - -

    -$ sos_apocontrol stopKill -

    - -Then confirm the sos processes are not running.

    - -

    Confirm the SOS Process are Not Running

    - -
    -$ sos_apocontrol status -

    - -There should be zero instances of sos_runnerd displayed. The first line will be -"0 processes running", -the last line will be "sos_apocontrol finished running!". -There should be nothing between those two lines.

    - -

    Start SOS Processes

    - -
    -$ sos_apocontrol start -
    - -

    -When sos_apocontrol is run it will check to make sure that there is an ssh-agent that -it can connect to for svn access. If there is not, it will ask for the password of -the key it uses. The password is the same as is used for the sdss3 data access web site. -

    - -

    This password request is OK:

    -
    -Checking for agent file /home/observer/sos/control/agent.info
    -Found agent file
    -Checking agent pid 5142
    -Agent has stopped running
    -Starting new agent.
    -ssh-agent -a /home/observer/sos/control/agent.socket >/home/observer/sos/control/agent.info
    -
    -About to add the private key sos uses, please enter the key password.
    -It is the old SDSS password, not the new SDSS3 password.
    -
    -ssh-add /home/observer/.ssh/id_dsa-sos
    -Enter passphrase for /home/observer/.ssh/id_dsa-sos: 
    -
    - -

    -One the agent is running, it should not require further passwords. -If you get the following message and a prompt for a password, exit -with control-C -

    -

    This password request is NOT OK:

    -
    -This is a final check to avoid authentication problems which will trigger
    -LBL to block sos3 from accessing svn.  DO NOT try to type in the password.
    -This is a test which must succeed without the need to type in a password.
    -Only type ^C to abort the script.
    -
    -svn log /home/sdss3/products/NULL/speclog/trunk >/dev/null
    -Enter passphrase for key '/home/observer/.ssh/id_dsa-sos': 
    -
    - -

    -If you get that password request, type control-c as it instructs, and -see the troubleshooting section below. -

    - -

    When the command finishes, confirm the sos processes are running.

    -
    -$ sos_apocontrol status -
    - -

    Start SOS Processes After Observing Has Started For the Night

    - -

    -Use this command if the sos process was not started until after observing has started -for the night. This procedure will process all images already present for the current -MJD.

    - -
    -$ sos_apocontrol allow
    -$ sos_apostart -g -e -

    - -Then confirm the sos processes are running.

    - -

    Reprocess a Single Exposure

    - -

    -This command must be run in a directory with write permissions, e.g. -/home/observer/sos/sos-logs/. -

    - -To reprocess exposure EXPIDXX on MJD MJDXX -
    -$ cd /home/observer/sos/sos-logs/
    -$ sos_aporedo -g -m MJDXX -z EXPIDXX -
    -The output files will be stored in the directory you run this command in, -with names like redo-b1.out. - -

    Reprocess a Nights Worth of Spectro

    - -
    -$ cd /home/observer/sos/sos-logs/
    -$ sos_aporedo -w -g -m 00000 (Where 00000 is the MJD to reprocess) -

    - -The output files are stored in ~/sos/redo. cat ~/sos/redo/redo-b1.out for the output of -the reprocessing of the b1 camera.

    - -

    Confirm that the ssh-agent Process Used by sos_runnerd is Running

    - -
    -$ ps ax | grep ssh-agent -

    - -This line should be present:

    -

    -"ssh-agent -a /home/observer/sos/control/agent.socket" -

    - -If it is not, then stop the sos processes and restart them.

    - -

    Backing out to an older version

    - -You can run a different version of Son-of-Spectro by setting up -the relevant version of idlspec2d before you launch it with "sos_apocontrol". -This should be done from the "observer" account on "sos3.apo.nmsu.edu".

    - -For example, to stop the current version, set up v5_4_15, then re-start: -

    -$ sos_apocontrol stopWait
    -$ sos_apocontrol status
    - --> should say "No processes running!"
    -$ setup idlspec2d v5_4_15
    -$ sos_apocontrol start
    -$ sos_apocontrol status
    - --> should show 4 "sos_runnerd" processes running
    -
    -If "sos_apocontrol stopWait" hangs, then hit control-C and -use "sos_apocontrol stopKill". - -

    Installing a new version

    - -SOS is part of the idlspec2d package and uses the normal sdss3 install procedures -including being eups compliant and installed via sdss3install in the sdss3tools package. A -good place for more information is -BOSS Software Install -Instructions. - -

    -At APO, install both on the SOS machine (currently sos3.apo), and -on sdsshost.apo. This is because the documentation on the sdsshost.apo -procedures web page is linked to the installed version on that machine. - -

    -Now you are ready to launch this new version of the code. - -

    How Son-of-Spectro Works

    - -

    -Son-of-Spectro is a daemon job that runs from the "observer" account -on "sos3.apo.nmsu.edu". This daemon job monitors files written to /data/spectro/$MJD and -then launches a package of shell scripts and IDL commands to reduce -the data one frame at a time. It is part of the idlspec2d data product. - -

    There are actually four daemon processes that run, one for each camera. We did -this so that both processors on the computer can be utilized. All 4 cameras should be -reduced for an exposure within a few minutes. - -

    -The output directors are: -

    -	/data/boss/sos/combined   - Copy of aporeduce output for the web site
    -	/data/boss/sos/$MJD       - Output of aporeduce for that night
    -	$SPECLOG_DIR/$MJD         - plugmap files used for running aporeduce
    -	platedb database          - (s/n)^2 for each science frame reduced
    -
    - -

    -The data reduction is not the same as the full-up spectroscopic pipeline. -A number of shortcuts are taken to speed up the reductions and make them -very robust. For example, boxcar extraction of the spectra is used instead -of optimal extraction. - -

    -Files like the following can be found in the /data/boss/sos/$MJD directory: -

    -  splog-b1-00006541.log              - Text history of exp #6541 reduction
    -  tset-51795-0389-00006541-b1.fits   - Fiber traces (from flat exposure #6541)
    -  wset-51795-0389-00006542-r1.fits   - Wavelength solution (from arc exp #6542)
    -  fflat-51795-0389-00006542-b1.fits  - Flat-field vectors (w/ arc exp #6542)
    -  sci-0389-b2-00006546.fits          - Science spectra for plate 389 (exp #6546)
    -  logfile-51795.fits                 - Summary info for night in FITS format
    -  logfile-51795.html                 - Summary info for night in HTML format
    -  snplot-51795-0389.ps               - Signal-to-noise plot for nplate 389
    -
    -If a particular frame does not get reduced and appear on the Son-of-Spectro -web site, then you can look at its log file (splog*.log). If the file -does not end with the line "Finished at", then that exposure must have -crashed. - -

    -The HTML files and S/N plots for the web page are copied into the directory: -

    -  /data/boss/sos/combined
    -
    -The most recent HTML file has a second copy as the file "logfile-current.html". -This is the file pointed to by the - -SOS web page. - -

    FITS header cards (and how to change them)

    - -

    Required FITS header cards

    - -

    -The following FITSheader cards are required to be correct for either -Son-of-Spectro or Spectro-2D to reduce the data properly. -The AIRMASS is not read from the header, but computed from RADEG,DECDEG -and the TAI-BEG,TAI-END keywords. -

    -EXPOSURE= Exposure number.  We always override the value of this keyword
    -          with the exposure number in the file name.
    -CAMERAS = Camera name, e.g. "b1".  We always override the value of this keyword
    -          with the exposure number in the file name.
    -FLAVOR  = The flavor of the observation, which can be "bias", "dark",
    -          "arc", "flat", and "science" or "target".  Files with other
    -          flavors, such as "unknown", are not reduced.
    -MJD     = MJD of observation, which must agree with the directory in which
    -          the file resides, "/data/spectro/$MJD".
    -PLATEID = The plate ID, which must match that in the NAME header card.
    -NAME    = Plug name, e.g. "0328-52277-01" for plate 328, plugged on 52277
    -          with a plugging ID of 01.  We assume that there is a plug-map
    -          file at APO with the name "/astrolog/$MJD/plPlugMapM-$NAME.par".
    -EXPTIME = The exposure time, which is used along with TAI-BEG to compute
    -          the airmass.  It is also used to determine whether the sky
    -          brightness or scattered light is larger than tolerances.
    -TAI-BEG = The TAI time for the beginning of the exposure, which is used
    -          to compute the airmass and sky-brightness gradients for sky-
    -          subtraction.  If this keyword is missing, we guess it from
    -          EXPTIME and TAI.
    -TAI-END = Used with TAI-BEG.  If this keyword is missing, we guess it from
    -          EXPTIME and TAI.
    -TAI     = This keyword is used if TAI-BEG,TAI-END are missing.
    -FFS     = Flat-field screen positions, which should be
    -          "0 0 0 0 0 0 0 0" for science exposures (all petals open)
    -          "1 1 1 1 1 1 1 1" for flat or arc exposures (all petals closed)
    -FF      = Flat-field (quartz) lamp status, which should be
    -          "0 0 0 0" for science or arc exposures (all off)
    -          "1 1 1 1" for flat exposures (all on)
    -NE      = Neon lamp status, which should be
    -          "0 0 0 0" for science or flat exposures (all off)
    -          "1 1 1 1" for arc exposures (all on)
    -HGCD    = HgCd lamp status, which should be
    -          "0 0 0 0" for science or flat exposures (all off)
    -          "1 1 1 1" for arc exposures (all on)
    -OBSCOMM = This keyword is used to identify the dithered flat sequence
    -          taken in the Monthly Checkout with the "specFlats" script in SOP.
    -          The flats in this sequence must have OBSCOMM="{dithered flats-flat}".
    -          The arcs in this sequence must have OBSCOMM="{dithered flats-arc}".
    -          This keyword also identifies the Hartmann focus exposures, with
    -          the entries OBSCOMM="{focus, hartmann l}" or "{focus, hartmann r}".
    -          Science exposures all have OBSCOMM="science ".
    -QUALITY = The observer-input quality for an exposure: "excellent", "test",
    -          or "bad".  Exposures are declared "test" or "bad" using the
    -          APOFIX procedure.
    -
    - -

    Informational FITS header cards

    - -

    -The following FITS header cards are informational. We would very much -appreciate the observers to correct errors in these keywords so that -our book-keeping of survey progress is done properly: -

    -TILEID  = Tile ID for this plate from the plug-map file
    -CARTID  = Cartridge ID number (1 through 9)
    -RA      = Right ascension of telescope boresight (in degrees)
    -DEC     = Declination of telescope boresight (in degrees)
    -RADEG   = Right ascension of plate center for plug-map file (in degrees)
    -DECDEG  = Declination of plate center for plug-map file (in degrees)
    -AIRTEMP = Temperature (deg C)
    -
    - -

    How to change FITS header cards

    - -

    -Incorrect FITS header cards for the raw spectro sdR files can be -corrected by adding entries in the sdHdrFix file -"/astrolog/$MJD/sdHdrFix-$MJD.par". The interesting header cards -from these files can be listed with the -APOHEADER -procedure run from the IDL prompt on sos.apo. The proc -APOFIX -can be used to add entries to the sdHdrFix file to denote edits. - -

    -This structure should have the following definition in the sdHdrFix file: -

    -   typedef struct {
    -     char fileroot;    # Root of file name, without any ".fit" suffix
    -     char keyword;     # Keyword name
    -     char value;       # Keyword value (as a string)
    -   } ophdrfix;
    -
    - -

    -Following are some examples of what should appear in the sdHdrFix files -in order to correct faulty headers. (The typedef struct above must -also be in the file.) -

      -
    • -Example 1: The exposure time is in the file sdR-b1-00001142.fit should be -60 seconds: -
      -   ophdrfix sdR-b1-00001142 EXPTIME  60
      -
      -
    • -Example 2: Exposure number 1234 was bad, and should be given an 'unkown' -flavor for all cameras: -
      -   ophdrfix sdR-??-00001234 FLAVOR  "unknown"
      -
      -
    • -Example 3: The mapping name for all cameras of exposures 1137-1139 -should be '0198-51433-01': -
      -   ophdrfix sdR-??-0000113[7-9] NAME     "0198-51433-01"
      -
      -
    • -Example 4: Telescope status information is missing for the pre-flat -exposure 10850: -
      -   ophdrfix sdR-??-00010850  FFS   "1 1 1 1 1 1 1 1"
      -   ophdrfix sdR-??-00010850  FF    "1 1 1 1 "
      -   ophdrfix sdR-??-00010850  NE    "0 0 0 0 "
      -   ophdrfix sdR-??-00010850  HGCD  "0 0 0 0 "
      -
      -
    - -

    -If you have edited the sdHdrFix file and need to re-reduce an exposure, -you can do so with the sos_redo command. -When Son-of-Spectro reads in the raw FITS files, it then patches the -headers with the information in the ophdrfix entries of the sdHdrFix file. -But note that the one piece of information that cannot be patched this -way is MJD, since we need the MJD in order to find the correct sdHdrFix file!! - -

    Son-of-Spectro Outputs

    - -

    Tabulated values

    - -

    -Son-of-Spectro reduces four flavors of observations: -bias/dark, flat, arc, & science/smear. Select information is tabulated -for each of these types of observation. These values are tabulated in -yellow -if they are going out of spec, and in -red -if they are very much out of spec. - -

    -The values reported are: -

      -
    • BIAS/DARK PERCENTILE98
      - The value in electrons of the 98-th percentile on the (overscan-corrected) - image. For example, if this is 8, then 98% of the pixels are below 8 - electrons. Bad regions on the CCD and saturated pixels are excluded - from this evaluation. - The CCDs can also accumulate charge during the day that may need several - bias exposures to completely flush. If this does not work, then the - CCD is probably warm. -
    • FLAT NGOODFIBER
      - The number of illuminated fibers. This should be 320 if all the - fibers are plugged and unbroken. Note that fibers that fall on particularly - bad parts of the CCD can also be excluded from the good fiber list - (the red CCDs have some of these cases). If this number is less than - about 315, then you should be suspicious that some fibers have dropped out. -
    • FLAT XMIN (XMAX)
      - The minimum (maximum) X position of the spectra on the CCD. If this is - less than 0 (greater than 2047), then some of the spectra fall off the - left (right) side of the CCD. This probably means that no one ran - the Spectro Monthly Checkout. If it is off by more than 5 pix or so, - you should probably run the Monthly Checkout. -
    • FLAT XSIGMA
      - The profiles in the spatial (X) dimension have a gaussian fit with - a width of this sigma. The median of this width is taken independently in - each of 4 quadrants on a CCD, and the maximum of those 4 values reported. - If the spectrographs are in focus, then this value should be about 1.0 pix. - If it is larger, then the spectrographs may be out-of-focus, or the - slit-heads may not be properly latched. -
    • ARC WAVEMIN (WAVEMAX)
      - The minimum (maximum) wavelength (in Angstroms) of any spectra on this CCD. - Because of the optical distortions, this is always for the central - fiber. The edge fibers have less wavelength coverage. - This probably means that no one ran - the Spectro Monthly Checkout. If it is off by more than 5 pix or so, - you should probably run the Monthly Checkout. -
    • ARC BESTCORR
      - The linear correlation coefficient between the arc spectra and a template - arc spectrum. If they agree perfectly, then this is 1. The value of - this correlation is typically 0.80. If it drops too much lower, then - the arc spectra do not look as they should. This could happen if - the arcs did not turn on, the flat field screens did not close, or some - of the arc lines are missing -- if, for example, the Hg lamps all failed. - If the correlation is less than 0.5 or so, then it's even possible that - the code has found the incorrect wavelength solution. -
    • ARC NLAMPS
      - The number of arc lines used to generate the wavelength solution. - There are many more on the red CCD's because neon has many more lines - there. If this drops to too few lines, then some of the lamps have not - turned on properly, have not warmed up, or have warmed up too much. -
    • ARC WSIGMA
      - The arc-line profiles in the wavelength (Y) dimension have a gaussian - fit with a width of this sigma. The median of this width is taken - independently in each of 4 quadrants on a CCD, and the maximum of - those 4 values reported. - If the spectrographs are in focus, then this value should be about 1.0 pix. - If it is larger, then the spectrographs may be out-of-focus, or the - slit-heads may not be properly latched. - (One would expect that both XSIGMA and WSIGMA would go out-of-focus - at the same time.) -
    • SCIENCE/SMEAR SKY/SEC
      - The median sky counts in electrons per pixel. - If this is too large, then there must be a light source near the - telescope, or the night sky (the moon) is bright, or the CCD's are - warming up and generating dark current. -
    • SCIENCE/SMEAR (S/N)^2
      - The signal-to-noise squared for objects at the fiducial magnitude limit. - We choose (S/N)^2 because it is an additive quantity with additional - integration time. When all the cameras reach a total (S/N)^2 of 15, - then all these entries turn from red to black, and - we can declare a plate done. Exactly how this quantity is - measured is described below. -
    • EXPTIME
      - The exposure time (EXPTIME) header keyword from the first camera - of this exposure to be reduced. The assumption is that all 4 cameras - have the same EXPTIME. -
    • AIRTEMP
      - The air temperature (AIRTEMP) header keyword from the first camera - of this exposure to be reduced. The assumption is that all 4 cameras - have the same AIRTEMP. We think this is the temperature from - the galileo weather station. -
    • UT
      - The UT time computed from TAI in the header from the first camera - of this exposure to be reduced. -
    • QUALITY
      - This is the observer-input quality for this exposure. - It can be set independently for each of the 4 cameras, but only one - camera value (the first reduced frame) is reported in this table. - The default value is "excellent" for everything except for dithered - flats or spectro focus frames which are "test". The observers have - the option of declaring exposures "excellent", "test", or "bad" - using the APOFIX command. -
    - -

    -The exact values of these yellow/red limits and further explanation can -be found in the "idlspec2d" product in the file "examples/opLimits.par". - -

    WARNING and ABORT messages

    - -

    -There are a number of -WARNING -and -ABORT -messages that can appear if the pipeline runs into trouble when processing -a frame. These messages appear at the bottom of each table. -Each one-line message begins with the relevant file name, WARNING or ABORT, -then a brief plain-text message. - -

    -Note that a single problem may cascade into a large number of warning -messages. For example, an out-of-focus spectrograph will first produce -the "Median spatial widths" message, probably followed by warnings about -bad sky-residuals. - -

    -The following messages may appear: -

      -
    • bias exploding in b2 crazy quadrant
      - This indicates a hardware electronics problem with the b2 bias levels. - Keep observing, but note this prominently in the night log. - The SOS b2 (S/N)^2 values might be crazy -- if they look unusual, use - the other channels to determine plate doneness, and note this in the - log. -
    • -
    • Error reading sdHdrFix file
      - The sdHdrFix file (sdHdrFix-$MJD.par) in sos.apo:/data/spectro/astrolog/$MJD - exists but is not a valid Yanny parameter file. This file is written - by the IDL procedure - APOFIX - if the observers' have run that proc on sos.apo, but can also be edited - by hand. If the file is invalid, you should edit it to be valid, - or delete it. If the - APOFIX - command somehow generated an invalid file, then file a PR against sospectro. -
    • Exposure number in header disagrees w/filename
      - This means that IOP/SOP is in a very confused state, and it - is putting a different exposure number in the header (EXPOSURE - keyword) from what is being used to generate file names. - You should probably exit SOP, re-start SOP, then issue a "goStare -init". -
    • Sun above the horizon by ... deg for non-test exposure
      - This warning message is to trap flat, arc, or science exposures taken - during the day that have not been marked as either "test" or "bad" data. - If these are test data, be sure to mark them as such. This is to prevent - such data from being used later in the full reductions. -
    • Amp #... expected read noise = ..., measured = ... DN
      - The number reported is the standard deviation in the bias region - for either amplifier #2 (left side) or amplifier #3 (right side). - This calculation is done clipping the half-percent of lowest and - highest values. We trigger this warning if the value is ever 1.0 DN - above the expected value. This can happen - if there are a huge number of cosmic rays (if you've been integrating - for hours), or if there is an electronics problem. This would pick - up the problem seen on 22/23 Aug 2000 (MJD 51779) when the left amplifier - on r2 was randomly flipping bits (c.f., PR #2335). Or, the problems - seen in Aug 2004 (PR #6143), when r2 was digitally mixing bits between the - left and right amplifiers. -
    • Amp #... bias region difference at xxx-th-percentile =... DN
      - This measures another statistic of the bias region for either - amplifier #2 (left side) or amplifier #3 (right side). - This measures the difference between the 16th-percentile and - 84th-percentile, which should be equal to twice the read noise - (e.g., 1-sigma). This test is done at the 68.2-percentile (1 sigma), - 95.4-percentile (2 sigma), and 99.7-percentile (3 sigma). - A warning is reported if this difference is either significantly too - small or too large, as compared to what gaussian statistics dictate. - This should catch the same sorts of electronics problems as listed - for the above warning message. -
    • Amp #... way too many pixels (xxx%) below bias-5*sigma=... DN
      - This test looks for anomolously low pixel values in the data region - of the CCD. There should essentially never be any pixel values below - 5-sigma less than the bias level, unless there is something wrong with - the electronics. This did happen in Aug 2004 (see PR #6143). -
    • Fixing shifted rows (from electronics)
      - This is very, very bad. This is indicative of an electronics problem - that we first saw on MJD=51578 to 51580 (3 to 5 Feb 2000). - The raw images have rows shifted to the right, sometimes by - many pixels. Call Connie immediately. -
    • Fixing dropped-pixel rows (from electronics)
      - This is very bad. This is indicative of an electronics problem - that we first saw on MJD=51688 (23 May 2000). - The raw images actually have some rows shifted by 1 or 2 pixels, - usually more so near the bottom of the CCD (the first rows to be read). - Call Connie immediately. -
    • Electronics shifted xxx rows by 2 pix
      - This is indicative of an electronics problem - with the BOSS electronics that shifts all or some of the rows in the - raw images in all 4 amplifiers (ticket 423). -
    • More than 10% of the image is rejected
      - This is very bad. This can probably only happen if most of the CCD - has saturated pixels, which probably means you're observing during - twilight, the CCDs are warm, or the dome lights are on. -
    • Flat-field screens not closed
      - The "FFS" keyword in the header indicates that at least one of the - flat-field petals was not closed. When this happens, the flat or arc - is not reduced. -
    • Flat-field lamps not turned on
      - The "FF" keyword in the header indicates that at least one of the four - flat-field lamps was not turned on. - When this happens, the flat is not reduced. -
    • Reject flat (or arc) ... % bad pixels
      - This condition is triggered when more than 2% of the non-masked pixels - on the image are bad (saturated). - When this happens, the flat (or arc) is not reduced. - This probably happens if the CCDs are warm, the dome lights are on, - or if for some reason the shutters were open too long. -
    • Reject flat (or arc) ... saturated rows
      - This condition is triggered when there are more than 100 saturated rows - on the image. - When this happens, the flat (or arc) is not reduced. - This probably happens if the CCDs are warm, the dome lights are on, - or if for some reason the shutters were open too long. -
    • Reject flat as too faint
      - This condition is triggered when the 80-th percentile of the image - is less than 1000 electrons. - When this happens, the flat is not reduced. - Either the flat field screens were not closed, the lamps were not - turned on, or the shutter didn't open. -
    • Reject science ...
      - A science exposure can be rejected if the header keywords indicate - that the flat-field petals are closed, any flat-field or arc lamps - are turned on, too many pixels are bad or saturated, or if the - 25-th percentile of the image too large. -
    • Possible Argon lines in superflat
      - Emission lines are present in the quartz-halogen flat-field images, - which are supposed to be featureless. When a number follows this message, - that is a measure of the line strength -- the trigger is set to 0.01, - but we usually see it as 0.1 to 0.5 when present. - We have identified these rogue lines as argon. - JEG's best guess is that these - contaminating lines come from trace amounts of argon in the HgCd lamps, - which must still have current running through them when they are supposed - to be off. We can still reduce the data with these lines, but you should - re-open PR 1859 if this problem is seen again. -
    • Arc lamps not turned on
      - The "NE" and "HGCD" keywords in the header indicates that either the - neon or HgCd lamps are not fully turned on. - When this happens, the arc is not reduced. -
    • Best arc correlation = ...
      - The cross-correlation of the arc spectrum with the template arc spectrum - was bad. This problem also triggers BESTCORR as bad in the table (see - above). This may be due to too little signal in the lamps, e.g. if - the flat field petals did not close or the lamps did not turn on. - If those are not the problems, then look at the raw image. -
    • Big wavelength gap
      - Some arc lines were not found in the arc spectra, and there is a large - gap in wavelength space without any lines. This will produce a poor - wavelength solution. More arcs should be taken until this message - does not appear. -
    • Cd I 3610 line missing
      - This particular arc line is the tie-down of the UV wavelength calibration - and is either missing or has a poor fit. This is likely due to the HgCd - lamps not being sufficiently warm before the exposure start. -
    • Scattered light
      - There was a high baseline count rate on the CCD, and appears even - between fibers. This can most obviously occur if there are light - sources in the CCD (such as the LED's we had for some time), or - if the CCD's are warming up and generating dark current. - There can also be a scattered light contribution just from a very - bright sky, or if there are super-bright objects on some fibers that - are scattering or bleeding light across the CCD. - It's best to carefully inspect the raw images for problems - (see Displaying Spectra at APO). -
    • Median spatial widths = ...
      - The spatial (X) widths of the fibers typically are gaussians with a - sigma of 0.85 to 1.05 pixels. If the sigma is larger than 1.10 pixels - in any of the 4 quadrants of a CCD (lower-left, lower-right, upper-left, - upper-right), then this warning is triggered. It means - that either the spectrographs are out of focus, or the slit-heads are - not properly latched. Note that these widths are computed for both - the flat and science exposures (but not for arcs -- we compute the - widths in the dispersion dimension for arcs, and not for smears since - they have low S/N). -
    • Median wavelength widths = ...
      - The widths of the arc lines in the dispersion (Y) dimension typically - are gaussians with a sigma of 0.90 to 1.10 pixels. - If the sigma is larger than 1.10 pixels - in any of the 4 quadrants of a CCD (lower-left, lower-right, upper-left, - upper-right), then this warning is triggered. It means - that either the spectrographs are out of focus, or the slit-heads are - not properly latched. -
    • Too few sky fibers to model sky-sub variance
      - There are not enough good sky fibers on the CCD. This will only happen - if for some reason there were far fewer than the mandated 16 sky fibers - on a CCD, or most of those fibers just happened to be dead fibers. - You should never see this message. If you do, the data is un-reducable. - You could try one more exposure, but something is probably horribly - wrong with this plate. -
    • Airmass range = ...
      - This warning is triggered if the airmass exceeds 2.5. At such large - airmasses, the atmospheric refraction terms are getting large and the - sky background is bright. The data is still perfectly usable, it's - just not as good as taking data at lower airmass. Keep observing if - you must, but the airmass will rapidly approach infinity! -
    • Large flexure flat<->science
      - There is a large shift (more than 1.00 pix) between the flat-field and - the science exposure, presumably from flexure in the spectrographs. - When this happens, another set of flat-fields (post-calibs) is - recommended. (However, don't bother to take a set of calibrations - on a different night. The Spectro-2D reductions never use calibrations - from one night for science exposures on another.) -
    • Whopping fiber ....
      - The fibers listed have very bright objects that affect their neighbors - on the CCD. If the objects are bright enough (12th mag?), then this can - trigger other warnings such as "scattered light". I think it's safe - to say that whopping fibers only show up when there has been a mistake - made in the plate designs -- this is already recorded in PR 2471. - You should check that this object does not saturate (> 30,000 ADU) - the raw sdR image - (see Displaying Spectra at APO). - Should it be saturating, reduce the exposure time to prevent saturation - or move on to the next plate. -
    • Wrong number of elements for REDDEN_MED
      - This is a warning that the reddening vector for this plate (reddeningMed - in the plPlugMapM file) is not a 5-element vector, as expected). - In this case, reddening values of zero are assumed. This means that - the plate will not be observed as deep as it would have if non-zero - reddening values were provided. -
    • SOS disk is ...% full
      - The specified disk on sos.apo is more than 95% full. This could be - either the disk used to copy the raw sdR images from sdsshost.apo, - or the disk used for SOS outputs (/data/spectro/spectrologs/$MJD). - If you must clean out old data, do not delete files from sos.apo - whose original copies still exist on sdsshost.apo or they will be - re-rsynced and re-reduced - (see How Son-of-Spectro Works). - You could delete files from a previous night first on sdsshost.apo, - then from sos.apo. -
    -The following warning messages are all based upon the quality of -the sky-subtraction. Typically, we are able to model the sky spectrum -(from the 16 sky fibers on each spectrograph) with a relative chi^2 -of around unity. At very bright sky lines, like 5577 Ang, the relative -chi^2 may be as large at 25. If the relative chi^2 is large at -other wavelengths, this means that there is excess light down the fibers -that varies across the plate. This could be due to a light source near the -telescope, or possibly a bright, non-uniform sky. Strong auroral activity -is something that can do this, since the O I lines at 6300 and 6366 Ang -are resolved on the sky. -
      -
    • Median sky-residual chi2 = ... at ... Ang
      - The median reduced chi^2 for sky-subtraction is always around unity. - If it is greater than 2, this message is triggered. If this message - appears and you are not observing during twilight or with warm CCDs, - then there must be a serious problem. Seriously out-of-focus - spectrographs might trigger this, or lights on near the telescope. -
    • Max sky-residual chi2 = ... at ... Ang (ignoring 5577)
      - This is an informational message triggered if the reduced chi^2 is - greater than 100 anywhere other than at the 5577 Ang sky line. - If there is auroral activity, then this could be triggered at a few - specific lines like O I at 6300 and 6366 Ang. These O I lines has - reduced chi^2 values of about 100 on MJD 51999 during a solar storm - (i.e. plate 336/51999). - The Spectro-2D pipeline will automatically mask these wavelengths - for any down-stream analyses. -
    • Bad sky residuals at ....
      - This warning is triggered if there is a range of at least 25 Angstroms - with a reduced chi in the sky-subtraction worse than 2. - This could be due to a light source near the telescope, a bright, - non-uniform sky, a warm CCD, scattered light, or out-of-focus spectrographs. - For most of those cases, there should be other relevant warning messages - preceding this one (like a warm CCD message). - This message should be ignored at the edges of the CCDs - wavelength coverage -- near 3800 or 6200 Ang for b1,b2 or near - 5800 or 9200 Ang for r1,r2 (c.f. PR 3656). - If none of the above explanations apply, then there is some real problem. - I would look at the images and/or spectra to look for any obvious problems, - and file a PR against sospectro - (see Displaying Spectra at APO). - Might as well keep observing? -
    • Red Monster at ....
      - This warning is triggered if we see bad sky residuals (above) that - is specifically in the wavelength range of about 6400-6600 Ang. - We think this happens when the handpaddle is still plugged in, - in which case the observers should unplug it immediately. - The treshhold is set at reduced chi=2, and the worst that we have ever seen - is at about the level chi=6. The last time we definitively saw this was on - plate 426 on 3/4 Dec 2000 (MJD 51882). - You should be able to see a bump in the extracted spectra, especially - for the sky fibers - (see Displaying Spectra at APO). - If you cannot find the source - of the excess light, keep observing but file a PR against sospectro. -
    - -

    Log files

    - -

    -If the reduction of an exposure is catastrophically bad, it may not -appear at all in the Son-of-Spectro table. However, there should still -be a log file for this exposure on the sos.apo computer: -

    -    /data/spectro/spectrologs/$MJD/splog-$CAMERA-$EXPOSURE.log
    -    
    -Reading this file should tell you what failed. The first and last lines -of these files should contain "Started at" and "Finished at" -followed by timestamps. - -

    S/N figures

    - -

    -A median signal-to-noise is computed for each object in the -wavelength ranges [4000,5500] Angstroms (synthetic g-band) -and [6910,8500] Angstroms (synthetic i-band). -We plot these S/N values versus the PHOTO fiber magnitudes, which were -measured in approximately a 3-arcsec diameter aperature (the same size -as our fibers). If everything is working perfectly, then our S/N values -should correlate very well with these PHOTO magnitudes. - -

    -We determine whether a plate is "done" based upon the signal-to-noise -of the fainter objects on the plate. We do this by fitting a line to -the (S/N)-vs.-magnitude plot in a specified wavelength range, then evaluating -this fit at g=20.2 mag (blue CCDs), and i=19.9 mag (red CCDs). -Approximately 10% of the main galaxy sample, 60% of the BRG's and 15% of -the QSO's are fainter than g=20.2. Very few objects (1, 1, and 5%) are -fainter than i=19.9. - -

    -When the sky level is higher, we gain S/N more slowly at -the fainter magnitudes where we are sky-limited rather than photon-limited. -Without moon, we have typically found: -

    -  log(S/N_g) = (zeropoint) - 0.31 * g
    -  log(S/N_i) = (zeropoint) - 0.31 * i
    -
    -With partial moon, the slope steepens to -0.34 or worse. - -

    -The fitting regions are denoted on the plot with vertical dotted lines. -Arrows point to the evaluation of the fit on each of the 4 cameras, with -the top panels corresponding to the blue CCD's (synthetic g-band) and -the bottom panels corresponding to the red (synthetic r-band). -The thick blue line on the figure is only a meaningless, fixed reference line. - -

    -The right-hand figures plot the residuals of each object from the fit. -Symbol sizes on those right-hand plots indicate the magnitude of the -deviation from the fit line. Symbol color is the same on the left -as on the right, so -green -objects have more flux and -red -ones less. -If the scale of the telescope is wrong, then you will see a radial drop-off -in flux (red points on the edge of the plate). -If you are observing too far over in air mass, then typically you correct -to first order with a scale change, but a quadropole is left in these -residuals. -If one spectrograph has problems, then this will show up as red points -in half of one of these figures. - -

    -Note that the (S/N)^2 totals listed in the table and the figure might -not exactly agree. This is because the fitting to (S/N)-vs.-magnitude -is done on individual frames for the table, but on the summed S/N over -all frames for the figure. The tabulated values are the ones we use -to declare a plate done. - -

    Trouble-shooting Son-of-Spectro

    - -

    -The historic Son-of-Spectro (SOS) reduction robot has proven to be quite robust. -However, if it appears to not be working one could check the following: -

    -
      -
    1. "sos_apocontrol start" asks for a password when trying to connect to LBL
      -
        -
      • Check if LBL may have blocked APO: Can you see - sdss3.org and - data.sdss3.org?
      • - If not, call experts for help. - -
      • Kill old SOS ssh-agents and try again: - Run "ps aux | grep ssh-agent" and look for entries which include - "ssh-agent -a /home/observer/sos/control/agent.socket". Then kill - that agent with "kill PID" where "PID" is the number in the second - column. Then try "sos_apocontrol start" again. If that doesn't work, - call experts for help. -
      • -
      - -
    2. Has a "loadCartridge" command been issued?
      - If this has not been done from SOP, then there is no PLATE entry - in the images. This prevents SOS from reducing anything but bias - and dark frames. -
    3. Is the daemon running?
      - Log into "observer@sos3.apo.nmsu.edu", and issue a "sos_apocontrol status" - command. This should report that SOS is running. - If not, then restart the daemons. -
    4. Is the data being copied over?
      - The raw data files should be copied from "sdsshost" to "sos3.apo" - in the /data/spectro/$MJD directory. If it is not, then the disk - may be full (see SOS disk is full warning message). - Or, the rsync command may not be working. - This could be due to a rogue - "aporsync" process sitting around. The "sos_status" command will - report any such processes. If you suspect this as the - problem, just kill that process. It's a harmless thing to do, since - SOS will just start it up again within a minute. -
    5. Are there old "lock" files sitting around?
      - SOS generates "lock" files to prevent multiple processes from changing - these files simultaneously. The "sos_status" command will report - all "lock" files and their last modification times. - If any have been sitting around for several minutes or more, - then something is wrong. You should delete the file ending with ".lock". - However, this could result in a corrupted "logfile*.fits". -
    6. Is the IDL license manager running?
      - You can issue the following command to check that the IDL license - manager is indeed running: -
      -    % $IDL_DIR/bin/lmstat -a
      -    
      - This should display the number of licenses available, and the current - number in use. The server running on galileo.apo has 110 licenses, - each IDL session uses 6, so there can be at most 18 IDL sessions - running concurrently. Note that Son-of-Spectro, the fiber mapper, - and HoggPT all use IDL licenses. -
    7. Is anything amiss with running the scripts?
      - Perhaps there is a communication problem between sdsshost.apo and sos3.apo, - or a problem running the code on sos3.apo. The daemon logs are in - /home/observer/sos/sos-logs/ . Check those for problems. - -
    - -
    - -

    This is from version $Name$ of procedures.

    - -

    Maintained by -David Schlegel -and Scott Burles -
    - - - diff --git a/doc/www/spectro_apodisplay.html b/doc/www/spectro_apodisplay.html deleted file mode 100644 index ddd558c0b..000000000 --- a/doc/www/spectro_apodisplay.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - Displaying Spectra at APO - - - -

    Displaying Spectra at APO

    - -This document desribes ways of displaying raw spectro images -and SOS-extracted spectra at Apache Point. - -

    -In this document: -

    - -

    Displaying Images From SOP

    - -

    -The fSAO display tool can be used to display the raw spectro images. -This can only display the raw images, without overscan-correction. -This means that there will be a baseline value of between 500 and 1250 ADU -on each of the amplifiers. You will clearly see the split in overscan -values between the left and right amplifiers. - -

    -From within SOP (or IOP), type the following (substituting for $MJD -and $filename as appropriate): -

    -  sop> cd /data/spectro/$MJD
    -  sop> set img [ regReadAsFits [regNew] $filename ]
    -  sop> saoDisplay $img
    -
    -The default scaling will be for the full range of pixel values, which -is usually not desirable. If you wish to display only in the range -of 1000 to 1300 ADU, -
    -  sop> saoDisplay $img "-min 1000 -max 1300"
    -
    - -

    Displaying Images From IDL

    - -

    -I've set up IDL on sdsshost.apo (and on sos.apo, plate-mapper.apo), -for use in displaying spectro images. Note that since all the spectro -data is automatically copied to sos.apo (by the Son-of-Spectro cron job), -you can display images on either machine. - -

    -First, set up IDL and the idlspec2d product, and start up IDL: -

    -  % setup idlspec2d
    -  % idl
    -
    - -

    -Move into the directory for MJD 51886 and display the first image: -

    -  IDL> cd,'/data/spectro/51886'
    -  IDL> img=rdss_fits('sdR-b1-00007538.fit')
    -  IDL> atv,img
    -
    -A display widget, ATV, will then pop up. It functions much like SAOimage. -There's a "Help" pull-down if you want to read what it does. But typically, -you'll want to change the display limits in the "Min=" and "Max=" windows -to be something reasonable - say, 0 to 20 for a bias. Row and column -plots can be made by hitting the "r" and "c" keys. - -

    -There is another tool built on top of ATV that will overplot the bad -column mask in red: -

    -  IDL> atvrawspec,'sdR-b1-00007538.fit'
    -  IDL> atvrawspec,'sdR-b1-00007538.fit',min=0, max=20  ; <-- Force display range
    -
    - -

    -To read in a raw image and median-filter before displaying, -

    -  IDL> img=rdss_fits('sdR-b1-00007538.fit') ; <-- Read a raw image
    -  IDL> sdssproc,'sdR-b1-00007538.fit',img   ; <-- Or read + overscan-correct
    -  IDL> atvmedian(img,9)
    -
    - -

    -Another useful command is -

    -  IDL> logsheet
    -
    -which will list select header information for the images in your current -directory. - -

    Displaying SOS-Reduced Spectra

    - -

    -The SOS-extracted spectra can be displayed using IDL tools on -the computer sos.apo. For the full documentation, see -http://spectro.princeton.edu/idlspec2d_doc.html#APOPLOT. - -

    -You must be logged onto sos.apo (or whichever machine is -running Son-of-Spectro). Set up the idlspec2d product and start IDL with: -

    -setup idlspec2d
    -idl
    -
    - -
      -
    • Example: Display plate 401, fiber 100 (if you are in the middle -of the night that this plate was observed): -
      -IDL> apoplot, 401, 100
      -
      -A very rough flux-calibration is done. The spectrum from each -exposure (both blue + red) is drawn in a different color. -The mouse buttons will zoom in (left), recenter (center), or zoom out (right). -The frame can be saved as a PostScript file by selecting File->WriteEPS -from the left-hand corner. - -
    • -Example: Make the same plot, but median-filter the spectrum: -
      -IDL> apoplot, 401, 100, nmed=9
      -
      - -
    • -Example: Plot all fibers for plate 401 from the brightest object to -the faintest, and pull up the PHOTO image from Steve Kent's web site -(you must already have a Netscape window open for this to work): -
      -IDL> apoplot, 401, /magsort, /netimage
      -
      - -
    • -Example: Plot data from an earlier night (for example, 52282): -
      -IDL> apoplot, 401, 100, mjd=52282
      -
      - -
    • -Example: Loop through all the fibers for the same plate by not specifying -the fiber number: -
      -IDL> apoplot, 401
      -
      - -
    - -

    -Quitting IDL: -

    -IDL> exit
    -
    - -

    Analyzing Bias+Dark Frames

    - -

    -There's another useful (but slow!) command for analyzing bias and dark frames. -This is the APO_PLOTBIAS procedure. It takes as its only argument -a spectroscopic exposure number, then plots a histogram of bias values -for all 4 cameras of that exposure: -

    -IDL> apo_plotbias, 7538
    -
    -This plot can optionally be written to a PostScript file with: -
    -IDL> apo_plotbias, 7538, plotfile='bias.ps'
    -
    -Bad regions on the CCD and saturated pixels are excluded from these -histograms. -The four histograms should be very near the fiducial, thick blue line. -If not, you have a problem. The dark frames may show an increase -in the tail of large values due to cosmic rays (though again, saturated -cosmics are exluded from the plot). - -

    -After making its plot, the APO_PLOTBIAS procedure prints out a select -number of percentiles. The 2-percentile is the value at which only 2% -of the pixels are below, the 50-percentile is the value at which 50% -of the pixels are below (e.g., the median), etc. - -

    -I find the typical percentiles for a bias to be: -

    -Filename          02%   05%   10%   50%   90%   95%   98%
    -----------------  ----  ----  ----- ----  ----  ----- ----
    -sdR-any-exposure   -8    -5    -3     1     7     9    11
    -
    -15-minute dark frames should have very similar values, since the saturated -cosmics are excluded. - -
    - -
    Maintained by -David Schlegel -and Scott Burles -
    - - - diff --git a/doc/www/spectro_home.html b/doc/www/spectro_home.html deleted file mode 100644 index e7d15e545..000000000 --- a/doc/www/spectro_home.html +++ /dev/null @@ -1,1782 +0,0 @@ - - -Princeton/MIT SDSS Spectroscopy Home Page - - - - - - -

    Princeton/MIT SDSS Spectroscopy Home Page

    -
    (Link to imaging data.)
    - - -

    -This page should get anyone started using the SDSS spectra within minutes. -There are instructions for anyone to get the -publicly-available data, -or for SDSS collaborators to get the -still-proprietary data. -This page describes tools to view, query and use these data using IDL, -SuperMongo or IRAF. There are also summary ASCII files -that contain positions, magnitudes, classification information, and redshifts. - -

    -

    -David Schlegel, -schlegel@astro.princeton.edu -
    - -
    - -

    -In this document: -

    - -

    -Related documents: -

    - -

    -Science web sites: -

    - -

    -Technical web sites: -

    - -

    -Technical mailing lists (restricted access): -

    - -
    - -

    Some Nifty Plots

    - -

    -Plot of the cumulative number of survey-quality -spectra. - -

    -Here are some nifty plots of only those objects within 2 degrees of the -equatorial plane: -

      -
    1. Pie diagram to z=0.15 -
    2. Pie diagram to z=0.6 -
    3. Pie diagram to z=5 -
    4. Logarithmically-spaced pie diagram -
    -(On a PostScript previewer, turn off State->Antialias.) -The Milky Way is masked with dashed lines. The MAIN galaxy sample are -black points, the luminous red galaxies (LRGs) that are not in MAIN are red, -and quasars are blue. Specifically, these plots are made with all -good plates whose centers are within 0.25 deg of the plane. - -

    Getting the Reduced Data

    - -

    Which Plates Are Reduced?

    - -

    -The SDSS will observe approximately 2000 plates by the end of -its 5 year survey. Each plate is physically an aluminum disk 60 cm -in diameter that subtends 3 degrees on the sky. -640 fibers are plugged into each plate at the location of objects chosen from -the photometric survey, allowing us to spectroscopically observe 640 -objects at time. Typically, we integrate for 45 minutes on each plate. - -

    -Since plates are occasionally re-observed, the plate number plus the -observation date uniquely identifies an observation. We track the -date with modified Julian date (MJD). In these re-observations, -the optical fibers may be plugged into different holes, so fiber #1 on -plate 306 won't be the same on the MJD=51637 observation as on MJD=51690. - -

    -Therefore, PLATE + MJD + FIBERID uniquely determines a single observation -of a single object. The TILE number uniquely determines a position on the -sky, and there are a few instances where two PLATEs are drilled for one TILE. - -

    -This list of plates is auto-updated each day based upon which reductions -have completed. It is available in the following formats: -

    -As of 31 May 2002, we have observed 621 "good" plates and 22 -"marginal" plates for a total of 643 * 640 = 411,520 spectra. - -

    -Aside from PLATE, TILE and MJD, this list contains the following: -

    -RA       = Right ascension of plate center [J2000 degrees].
    -DEC      = Declination of plate center [J2000 degrees].
    -MAPNAME  = Mapping name for this plate; data with the same mapping name
    -           are always combined into one plate file, even if taken on
    -           different nights.
    -VERSLOG  = Version of speclog product (spectroscopic log files).
    -VERSUTIL = Version of idlutils product.
    -VERSFLAT = Version of specflat product (spectroscopic pixel flats).
    -VERSREAD = Version of Spectro-2D code for pre-processing raw data.
    -VERS2D   = Version of Spectro-2D code to reduce the individual frames.
    -VERSCOMB = Version of Spectro-2D code to combine frames into a plate file.
    -VERS1D   = Version of Princeton-1D code to measure redshifts.
    -VERSTARG = Version of Target code for selecting the objects on this plate.
    -CHUNKNAME= The name of the Target and tiling run which produced this plate.
    -NEXP     = Total number of frames from all cameras used in the co-adding;
    -           since there are 4 cameras, NEXP=12 would typically mean that there
    -           were 3 exposures in each camera.
    -NEXP_B1  = Number of exposures in b1 camera.
    -NEXP_B2  = Number of exposures in b2 camera.
    -NEXP_R1  = Number of exposures in r1 camera.
    -NEXP_R2  = Number of exposures in r2 camera.
    -EXPT_B1  = Total exposure time in b1 camera.
    -EXPT_B2  = Total exposure time in b2 camera.
    -EXPT_R1  = Total exposure time in r1 camera.
    -EXPT_R2  = Total exposure time in r2 camera.
    -SN2_G1   = (S/N)^2 per pixel at g=20.2 on spectrograph #1.
    -SN2_G2   = (S/N)^2 per pixel at g=20.2 on spectrograph #2.
    -SN2_R1   = (S/N)^2 per pixel at r=20.25 on spectrograph #1.
    -SN2_R2   = (S/N)^2 per pixel at r=20.25 on spectrograph #2.
    -SN2_I1   = (S/N)^2 per pixel at i=19.9 on spectrograph #1.
    -SN2_I2   = (S/N)^2 per pixel at i=19.9 on spectrograph #2.
    -N_GALAXY = The number of objects Princeton-1D called a galaxy.
    -N_QSO    = The number of objects Princeton-1D called a QSO.
    -N_STAR   = The number of objects Princeton-1D called a star.
    -N_UNKNOWN= The number of objects Princeton-1D declared spectroscopically 
    -           unknown (a ZWARNING flag is set)
    -N_SKY    = The number of sky fibers (almost always exactly 32)
    -N_TARGET_MAIN = Number of objects targetted for the main galaxy survey.
    -N_TARGET_LRG  = Number of objects targetted for the LRG galaxy survey.
    -N_TARGET_QSO  = Number of objects targetted for the QSO survey.
    -SUCCESS_MAIN = Percentage success rate for objects targetted as "main" galaxies
    -           and spectroscopically classified as either "GALAXY" or "QSO".
    -SUCCESS_LRG  = Percentage success rate for objects targetted as LRG galaxies
    -           and spectroscopically classified as "GALAXY".
    -SUCCESS_QSO  = Percentage success rate for objects targetted as QSOs
    -           and spectroscopically classified as "QSO".
    -STATUS2D = Status of Spectro-2D pipeline for reducing individual exposures;
    -           "Done" if done.
    -STATUSCOMBINE = Status of Spectro-2D pipeline for combining individual
    -           exposures into the spPlate files; "Done" if done.
    -STATUS1D = Status of Princeton-1D pipeline; "Done" if done.
    -QSURVEY  = Status flag set to 1 for the best observation of any tile on the sky
    -           that satisfies the following: (S/N)^2 > 13.0 for G1,G2,I1,I2, and
    -           the target version cannot be "special" or "devel".
    -PUBLIC   = Name of public data release; presently plates are either not public,
    -           or part of the Early Data Release (EDR) or Data Release 1 (DR1).
    -
    - -

    -The values of SN2 give an estimate of the signal-to-noise (per pixel) of a plate -at a fiducial magnitude. The fiducials are set to g=20.2, r=20.25, i=19.9. -The measurement is of the signal-to-noise squared, per pixel, for an object -at that magnitude. -All these values must be > 13 for a plate to be "marginal". -All these values must be > 15 for a plate to be "good". - -

    Avoiding Duplicate Objects

    - -

    -The best effort to avoid duplicate objects is to make use of -the SPECPRIMARY field in the spAll summary file. -That selects the best observation of any given object. - -

    -Selecting only those plates with QSURVEY=1 will yield non-duplicate -observations of tiles on the sky that meet the survey requirements -for signal-to-noise. There still may be a few duplicate objects, -as some objects are put on multiple tiles for "quality assurance". -These duplicates can be identified with OBJTYPE="QA". That OBJTYPE -column exists either in HDU #5 of the spPlate files, -or in a column by that name in the spAll summary files. - -

    -Note that the above statements are almost but not exactly true. -There were some target-selection errors that resulted in duplicated -targets not labelled as "QA" (notably in runs 94 and 125; see -sdss-spectro/710). -The following IDL commands can be used to select a truly unique set -of objects: -

    -  IDL> columns = ['PLATE','FIBER','MJD','OBJTYPE','PLUG_RA','PLUG_DEC']
    -  IDL> spall = hogg_mrdfits('spAll-qsurvey.fits',1,columns=columns)
    -  IDL> spall = spall[where(strmatch(spall.objtype, 'QA*') EQ 0)]
    -  IDL> junk = djs_angle_group(spall.plug_ra, spall.plug_dec, 1./3600, $
    -       gindx=gindx, gstart=gstart, gcount=gcount)
    -  IDL> spall = spall[gindx[gstart]]
    -
    -The above removes "QA" objects, then selects the first instance of any -remaining duplicates. The procedure DJS_ANGLE_GROUP() is not speedy, -and may take about an hour. - -

    What Version of the Code Was Used?

    - -

    -The version of the code used in the reductions is specified in the -header keywords VERS2D, VERSCOMB, VERS1D as described in the -data model. - -

    -All these reductions were done using versions of the code tagged v4_9_8 -through v4_10_6, which represents a fairly homogeneous set of reductions. - -

    Copying the Princeton Reductions of the Public Data

    - -

    -The Princeton re-reductions of the "public release" data is available -from this web site. The data are grouped into disjoint samples of when -the data became available: -the Early Data Release (EDR) with 139 plates (88,960 spectra), -Data Release 1 (DR1) adds to this 192 plates (122,880 spectra), -Data Release 2 (DR2) adds to this 279 plates (178,560 spectra), -Data Release 3 (DR3) adds to this 252 plates (161,280 spectra), -Data Release 4 (DR4) adds to this 479 plates (306,560 spectra), -Data Release 5 (DR5) adds to this 324 plates (207,360 spectra), -and Data Release 6 (DR6) adds to this 349 plates (223,360 spectra). - -

    -To download the 14 Gb of EDR data -(including the spAll-EDR summary file; -if you only want the spAll file, then remove -"--accept *.fits" from the command): -

    - wget --dot-style=mega --quota=0 --no-host-directories \
    -   --no-parent --non-verbose --recursive --retr-symlinks \
    -   --accept "*.fits" --accept "spAll*" \
    -   http://spectro.princeton.edu/spectro_EDR/
    -
    -To download the 18 Gb of data new to DR1 -(including the spAll-DR1 summary file): -
    - wget --dot-style=mega --quota=0 --no-host-directories \
    -   --no-parent --non-verbose --recursive --retr-symlinks \
    -   --accept "*.fits" --accept "spAll*" \
    -   http://spectro.princeton.edu/spectro_DR1/
    -
    -To download the 27 Gb of data new to DR2 -(including the spAll-DR2 summary file): -
    - wget --dot-style=mega --quota=0 --no-host-directories \
    -   --no-parent --non-verbose --recursive --retr-symlinks \
    -   --accept "*.fits" --accept "spAll*" \
    -   http://spectro.princeton.edu/spectro_DR2/
    -
    -To download the 24 Gb of data new to DR3 -(including the spAll-DR3 summary file): -
    - wget --dot-style=mega --quota=0 --no-host-directories \
    -   --no-parent --non-verbose --recursive --retr-symlinks \
    -   --accept "*.fits" --accept "spAll*" \
    -   http://spectro.princeton.edu/spectro_DR3/
    -
    -To download the 46 Gb of data new to DR4 -(including the spAll-DR4 summary file): -
    - wget --dot-style=mega --quota=0 --no-host-directories \
    -   --no-parent --non-verbose --recursive --retr-symlinks \
    -   --accept "*.fits" --accept "spAll*" \
    -   http://spectro.princeton.edu/spectro_DR4/
    -
    -To download the 31 Gb of data new to DR5 -(including the spAll-DR5 summary file): -
    - wget --dot-style=mega --quota=0 --no-host-directories \
    -   --no-parent --non-verbose --recursive --retr-symlinks \
    -   --accept "*.fits" --accept "spAll*" \
    -   http://spectro.princeton.edu/spectro_DR5/
    -
    -To download the 34 Gb of data new to DR6 -(including the spAll-DR6 summary file): -
    - wget --dot-style=mega --quota=0 --no-host-directories \
    -   --no-parent --non-verbose --recursive --retr-symlinks \
    -   --accept "*.fits" --accept "spAll*" \
    -   http://spectro.princeton.edu/spectro_DR6/
    -
    -For members of the SDSS collaboration only, -once DR7 is available, it can be downloaded with the following command -(after substituting the usual username and password): -
    - wget --dot-style=mega --quota=0 --no-host-directories \
    -   --no-parent --non-verbose --recursive --retr-symlinks \
    -   --accept "*.fits" --accept "spAll*" \
    -   http://www.astro.princeton.edu:81/spectro_DR7/ \
    -   --http-user=??? --http-passwd=???
    -
    - -

    -Note that these reductions are not identical to the "official SDSS -data release", but have several improvements and include our redshift fits, -spectral classifications, velocity dispersions for galaxies, -and emission line fits. - -

    Copying the Proprietary Reductions from Princeton (alfred account)

    - -

    -The spectroscopic data is reduced at Princeton, typically within 12 hours -of the data being taken. These reductions are available directly from -Princeton as described below. - -

    -At Princeton, the top-level directory for the reduced data is: -

    -/u/dss/spectro
    -
    -Older reductions exist at: -
    -/u/dss/spectro_v4_8
    -
    - -

    -To obtain the data from Princeton you will need access to the "alfred" -account. Send your SSH public key (in the file ".ssh/identity.pub") to -schlegel@astro.princeton.edu. -(See Mike Blanton's -notes on generating ssh keys.) -Once you have been added to the authorized_keys list for user "alfred", -then you can copy the data with "rsync" or "scp". - -

    -Each plate has the following files associated with it: -

    -$BOSS_SPECTRO_REDUX/$PLATE/spPlate-$PLATE-$MJD.fits
    -$BOSS_SPECTRO_REDUX/$PLATE/spZbest-$PLATE-$MJD.fits
    -$BOSS_SPECTRO_REDUX/$PLATE/spZline-$PLATE-$MJD.fits
    -$BOSS_SPECTRO_REDUX/$PLATE/spZall-$PLATE-$MJD.fits
    -
    -where $BOSS_SPECTRO_REDUX refers to the top-level directory (spectro), and $PLATE -refers to a subdirectory with the plate name (e.g., 0301), and $MJD refers -to the date of observation (e.g., 52000). -There are also some intermediate output files (e.g., spCFrame files) -that can be ignored by most users. - -

    -Most people will only want the summary files, combined spectra and 1D outputs -(redshifts). These total about 125 Gb for 1300 plates as of Feb 2004. -The following command will copy that entire list of files (eventually). -Should the copy be interrupted, the "rsync" command can be invoked again -to successfully copy the remainder of the data. -

    -   rsync -arv --rsh="ssh1" --copy-unsafe-links \
    -    --include "*/" \
    -    --include "platelist*" --include "spAll*" \ 
    -    --include "*spZ*.fits" --include "spPlate*.fits" \ 
    -    --exclude "*" \
    -    alfred@sdssdata.astro.princeton.edu:/u/dss/spectro/ .
    -
    - - -

    How to Keep Your Data Up-to-Date

    - -

    -These spectroscopic reductions are completely automated with the -Spectro Robot. As data are taken at Apache Point, the data are copied -to Princeton, plan files are built that describe how to reduce the -data, and the reductions are batched on local and remote CPU's. -You can expect all spectroscopic observations to be reduced within 24 hours. - -

    -An efficient way to keep your copy of these reductions current is to use -the Unix "rsync" command as described above. A cleaner implementation -of this is to use the -pullspectra -script from the "idlspec2d" product. -If you run "rsync" or "pullspectra" each day or each week, it will only -copy files that have been changed or added. This is a convenient way -to keep your data up-to-date without re-copying everything en-masse. -Note that you need "ssh" to work without asking for a -pass-phrase for "rsync" to work as a cron job (see below) -- see your system -admin if you need help with that. - -

    -Finally, you could set up a "cron" job to update your copy of the data on -a daily basis. This would be done by creating a cron table file (call it -"cron.table" in this example). If you want to copy the typical set of -spectroscopic outputs every day at 3:15 am, this file would look something -like this: -

    -15 3 * * * /my/directory/bin/pullspectra /my/data
    -
    -replacing "/my/directory/bin" with your local path to the "pullspectra" -command, and replacing "/my/data" with your data directory. -Note that "cron" jobs do not inheret your environment variables, so -it is necessary to use explicit paths. -Then load this "cron" job by typing: -
    -crontab cron.table
    -
    -This example will update your copy of the data at 3:15am every morning. -To stop this updating, unload the cron table with: -
    -crontab -r
    -
    - -

    "Special" Plates

    - -

    There are a number of "special" plates, designed for commissioning -either the hardware or target selection for the survey. These plates are: -

      -
    • Plate 125-134, 160, 161 : Coma plates
      - See - - Aaron Merrelli's web page.
      - These data were taken when the spectrographs were just being put - together. Only one spectrograph was on the telescope (with 320 fibers), - and there was significant light contamination from LED's inside the - instrument.
      - Plate 133 was observed. -
    • Plate 135-159 : Early data plates
      - These plates have the same caveats as for the Coma plate above. - Descriptions of these early data and how to obtain raw and reduced - spectra, can be found at:
      - - http://www-sdss.fnal.gov:8000/spectrodoc/doc/www/spectra/list.html -
    • Plates 162-185 : FASST plates
      - These are test plates with astrometric stars. Only engineering data - was taken with these plates. -
    • Plates 229-231 : Reddening plate
      - Plate 231 was observed in marginal conditions on MJD 51455+51456, and - again on MJD 52221. Plate 230 was observed on MJD 52251. -
    • Plates 318,319 : Faint M67 plates
      - These plates were designed by Brian Yanny (318) and David Schlegel (319). - See - - sdss-spcommish msg/149 - and - - sdss-spcommish msg/159.
      - Plate 318 was observed on several occasions; plate 319 was never observed. - Since the SPECTROPHOTO standards were really just random positions on - the sky, the current reductions are probably garbage. -
    • Plate 320 : Faint QSO plate
      - See - - sdss-spcommish msg/206
      - This plate has not been observed. -
    • Plate 321 : M67 velocity standards
      - See - - sdss-spcommish msg/206
      - This plate was observed and used to test the precision of measuring - velocities. -
    • Plates 322-324 : Stellar locus plates
      - See - - sdss-spcommish msg/206
      - The two fainter plates, 323 and 324, have been observed. -
    • Plates 669-672 : Photo-z plates
      - These are designed to target high-redshift, non-red galaxies. - See - Istvan Csabai's web site.
      -
    • Plates 673-714 : Southern Survey plates
      - See the - Southern Survey mailing list. All primary targets (non-sky, non-standard, - etc.) have 0-indexed bit #31 set in their - PRIMTARGET target flag. -
    • Plate 715 : Bright Stars test plate
      -
    • Plate 797 : Faint F subdwarf plate
      - This was designed by Brian Yanny from the imaging runs 125 and 752, - and selects F stars in the magnitude range g=[19,20.5] at RA=4.5 hrs. -
    • Plates 798-801 : Star cluster plates
      - See the sdss-spectro/766. - The clusters are Praesepe (798), Pleiades (799), N752 (800), N1817 (801). - These plates have several tiles (pointings per plate), and require - special instructions for observing. -
    • Plates 802-806 : Galaxy cluster plates?
      - These plates were designed by Jim Annis. -
    • Plates 807-810 : Szalay photo-z plates
      - These plates were designed by Alex Szalay. -
    • Plate 811 : Loveday photo-z plate
      - This plate was designed by Jon Loveday. -
    • Plates 1021-1037 : Annis low-z galaxies + Eisenstein LRGs
      - The only information we have on these plates was posted to - sdss-target/670. -
    • Plates 1062-1117 : Complete samples
      - The following Southern-sky programs: complete untargetted MAIN objects; - u-band selected galaxies; FIRST double-lobed sources; faint Southern - QSOs; spectra of everything. -
    • Plates 1118-1132 : Munn thick/thin disk
      -
    • Plates 1133-1148 : Rockosi main-sequence turnoff
      -
    • Plates 1149-1155 : Yanny F stars
      -
    • Plates 1156-1157 : Annis low-z galaxies + Eisenstein LRGs
      -
    • Plates 1179-1183 : Heckman aperature bias
      -
    • Plates 1243-1243 : Low-z + deep LRG
      -
    • Plates 1244-1249 : McGehee low-mass stars in Orion
      -
    • Plates 1250-1262 : Reddening in Taurus + Orion
      -
    • Plates 1468-1472 : F stars near M31
      -
    • Plates 1473-1529 : Merged Southern program
      -
    • Plates 1530-1566 : Low-z + BCG + Deep LRG
      -
    • Plates 1629-1636 : Szalay photo-z
      -
    • Plates 1637-1637 : Munn Haydes multi-pointing
      -
    • Plates 1638-1641 : Taurus low-mass stars
      -
    • Plates 1660-1664 : SEGUE tests
      -
    • Plates 1665-1666 : Perseus-Pisces (Yanny,Kent)
      -
    - -

    Summary Files

    - -

    -We generated one monstrous file with all the spectroscopic -and photometric outputs (but not the actual images, spectra -or spectroscopic line fits). These files are FITS binary tables. -The photometric information is from the best-available -``uber-calibration'' of the imaging data as of April 2005. -The details of the photometric information can be found here: - http://photo.astro.princeton.edu/#data_model . -These files include matches to to the FIRST radio catalog, -the 2MASS catalog, and the USNO-B astrometric catalog. -The following files exist: -

      -
    1. spAll.fits - All spectroscopic data taken to date - from 'marginal' or 'good' plates - (see PLATEQUALITY in the platelist file) -
    2. spAll-EDR.fits - spAll generated from only those plates - in the Early Data Release (EDR) -
    3. spAll-DR1.fits - spAll generated from only those plates - new to Data Release 1 (DR1) -
    4. spAll-DR2.fits - spAll generated from only those plates - new to Data Release 2 (DR2) -
    5. spAll-DR3.fits - spAll generated from only those plates - new to Data Release 3 (DR3) -
    6. spAll-DR4.fits - spAll generated from only those plates - new to Data Release 4 (DR4) -
    7. spAll-public.fits - spAll generated from EDR+DR1+DR2+DR3+DR4 -
    -Although these files are quite large, most FITS readers will allow -you to read such files piece-wise. -There are corresponding ASCII versions of these files, i.e. spAll.dat, -that contain a subset of the information. - -

    -The following information is compiled for each object: - -
    PROGNAME Spectroscopic program: 'main' for the SDSS main survey, - 'southern' for the SDSS Southern survey, and - 'devel', 'special', 'photoz' for other assorted programs -
    CHUNKNAME Targetting chunk name (this is a numeric value for - all plates in the 'main' or 'southern' survey) -
    PLATEQUALITY Quality of plate from platelist file: 'bad', 'marginal', or 'good' -
    PLATESN2 Signal-of-noise measure of the plate (the worst of the 4 cameras) -
    SPECPRIMARY 1 for the best spectroscopic observation of each object, 0 otherwise -
    SPECOBJ_ID Unique ID for spectroscopic objects, starting with 1; objects at - the same coordinates have the same ID, with only one being SPECPRIMARY -
    NSPECOBS Number of spectroscopic observations of this object -
    ZANS ZANS structure from spZbest file - with spectroscopic classifications (CLASS), redshifts (Z), etc. -
    calibObj calibObj structure with all imaging parameters; - fluxes are in units of nano-maggies, so MAG=22.5-2.5*log10(FLUX) -
    - -

    -In addition, we've also made ASCII files with the most relevant quantities -that one may wish to search on. These files are "spAll*.dat", and are basically -a stripped-down version of "spAll*.fits" for those FITS-challenged astronomers. -I have made some small changes to the ASCII file to make it more convenient -with Unix commands such as "awk" that want to index based upon word number: -(1) blank strings have been replaced with double-quotes, and -(2) spaces within strings have been replaced with plus signs -(i.e., replacing "BROADLINE STARBURST" with "BROADLINE+STARBURST"). - -

    -These photometric outputs are from the Princeton PHOTO reductions. - -

    -If you have access to the Princeton computers, -these trimmed calibObj files can be found at: -

    -  sdssdata.astro.princeton.edu:/u/dss/spectro/calibobj
    -
    - -

    Summary Files: Selecting Complete Samples

    - -

    -The summary files make it convenient to select complete samples. -There are three complete samples that one can generate from the SDSS spectra: -the "main" galaxy sample, the Luminous Red galaxy sample (LRGs), and QSOs. -For complete samples, one should only use those plates that are for -the PROGNAME="main" survey (not "southern", "photoz", etc.) and the -primary observations of each object (SPECPRIMARY=1). - -

    -The main galaxy survey is selected from the -target flags being set -to GALAXY, GALAXY_BIG, or GALAXY_BRIGHT_CORE. -The following bit of IDL code will select a unique list of objects targetted -by the main galaxy survey that have been spectroscopically confirmed -as galaxies or QSOs: -

    -IDL> columns = ['PLATE','FIBER','MJD','OBJTYPE','PLUG_RA','PLUG_DEC', $
    -      'PROGNAME','SPECPRIMARY','PRIMARGET','SECTARGET','CLASS','Z','ZWARNING']
    -IDL> spall = hogg_mrdfits('spAll.fits',1,columns=columns)
    -IDL> imain = where(spall.specprimary EQ 1 $
    -      AND strmatch(spall.progname,'main*') $
    -      AND (spall.primtarget AND 2L^6 + 2L^7 + 2L^8) NE 0 $
    -      AND (strmatch(spall.class,'GALAXY*') OR strmatch(spall.class,'QSO*')) $
    -      AND spall.zwarning EQ 0)
    -
    -The Luminous Red Galaxy survey is selected from the -target flags being set -to GALAXY_RED or GALAXY_RED_II. -The following bit of IDL code will select a unique list of objects targetted -by the LRG galaxy survey that have been spectroscopically confirmed -as galaxies: -
    -IDL> columns = ['PLATE','FIBER','MJD','OBJTYPE','PLUG_RA','PLUG_DEC', $
    -      'PROGNAME','SPECPRIMARY','PRIMARGET','SECTARGET','CLASS','Z','ZWARNING']
    -IDL> spall = hogg_mrdfits('spAll.fits',1,columns=columns)
    -IDL> ilrg = where(spall.specprimary EQ 1 $
    -      AND strmatch(spall.progname,'main*') $
    -      AND (spall.primtarget AND 2L^5 + 2L^26) NE 0 $
    -      AND strmatch(spall.class,'GALAXY*') $
    -      AND spall.zwarning EQ 0)
    -
    -The QSO survey is selected from the -target flags being set -to QSO_HIZ, QSO_CAP, QSO_SKIRT, QSO_FIRST_CAP or QSO_FIRST_SKIRT. -(The flags QSO_MAG_OUTLIER and QSO_REJECT do not define a complete sample). -The following bit of IDL code will select a unique list of objects targetted -by the QSO survey that have been spectroscopically confirmed -as QSOs: -
    -IDL> columns = ['PLATE','FIBER','MJD','OBJTYPE','PLUG_RA','PLUG_DEC', $
    -      'PROGNAME','SPECPRIMARY','PRIMARGET','SECTARGET','CLASS','Z','ZWARNING']
    -IDL> spall = hogg_mrdfits('spAll.fits',1,columns=columns)
    -IDL> iqso = where(spall.specprimary EQ 1 $
    -      AND strmatch(spall.progname,'main*') $
    -      AND (spall.primtarget AND 2L^0 + 2L^1 + 2L^2 +2L^3 + 2L^4) NE 0 $
    -      AND strmatch(spall.class,'QSO*') $
    -      AND spall.zwarning EQ 0)
    -
    - -

    -These same selections can be made from the ASCII version of the spAll -summary files using the Unix "awk" command. -To select the main sample of galaxies (the following must all be on one line): -

    -% awk '{if (($22==1) && ($21=="main") && (and($19,2^6+2^7+2^8) != 0)
    -   && ($4=="GALAXY" || $4=="QSO") && ($8==0)) {print $0}}' spAll.dat > galaxies.dat
    -
    -To select the LRG sample of galaxies (the following must all be on one line): -
    -% awk '{if (($22==1) && ($21=="main") && (and($19,2^5+2^26) != 0)
    -   && ($4=="GALAXY") && ($8==0)) {print $0}}' spAll.dat > lrgs.dat
    -
    -To select the QSO sample (the following must all be on one line): -
    -% awk '{if (($22==1) && ($21=="main") && (and($19,2^0+2^1+2^2+2^3+2^4) != 0)
    -   && ($4=="QSO") && ($8==0)) {print $0}}' spAll.dat > qsos.dat
    -
    - -

    -As of 31 May 2002, the above would select complete samples of -185,899 galaxies, 51,417 LRGs, and 22,245 QSOs. - -

    Looking at the Data

    - -

    -Since standard FITS files are used, there are many ways to access these -data. Below are descriptions of specially-written IDL, SM, and IRAF code for -looking at the data. -If you write any such tools, it would be useful to make them available -to the collaboration by posting them on this site. - -

    -The absolute simplest way to look at the data is to use ATV, SAOimage or XIMTOOL -to display the plate images (spPlate*.fits), which will show you all 640 -spectra on a plate at once. - -

    Setting Up IDL Tools

    - -

    -You must have "idl" in your path, and the IDL_PATH -environment variable should already be set. At Princeton, you would type -the following for C-shell: -

    -  source /usr/peyton/common/licensed/idl/bin/idl_setup
    -  setenv IDL_PATH         .:+{$IDL_DIR}/lib
    -
    -or the following for Bourne shell: -
    -  IDL_DIR=/usr/peyton/common/licensed/idl
    -  IDL_PATH=.:+{$IDL_DIR}/lib
    -  alias idl=$IDL_DIR/bin/idl
    -
    - -

    -If you have someone maintaining survey code at your institution -(i.e., at Princeton using a Linux box), you can set up the tools -by simply typing the following for C-shell: -

    -  setenv EUPS_FLAVOR Linux
    -  source /u/dss/products/evilups/bin/setups.csh  # If you are using C-shell
    -  setup idlspec2d
    -
    -or the following for Bourne-shell: -
    -  export SHELL=/bin/bash
    -  export EUPS_FLAVOR=Linux
    -  source /u/dss/products/evilups/bin/setups.sh  # If you are using Bourne-shell
    -  setup idlspec2d
    -
    - -

    -If you need to install the code yourself, you need two products: -"idlutils", and "idlspec2d". If you wish to reduce the raw data -from scratch, you will also need a third product called "specflat". -See the instructions for installing this code at: -

    -  http://spectro.princeton.edu/idlspec2d_install.html
    -
    -Included are the instructions for installing from a tar file. -The tar files are available at: - http://spectro.princeton.edu/tarballs. -The code will work on any platform (Linux, SGI, Solaris, Mac OS, etc) as long as -you also have an IDL license. - -

    -Extensive documentation exists for the commands described below, in -the file: -

    -$IDLSPEC2D_DIR/doc/www/idlspec2d_doc.html
    -
    - -

    Displaying the Spectra From IDL

    - -

    -First, set up the "idlutils" and "idlspec2d" software, as described above. - -

    -You need to set an environment variable that points to the top-level -directory of the data. At Princeton, this would be: -

    -setenv BOSS_SPECTRO_REDUX /u/dss/spectro
    -
    - -

    -Start IDL with: -

    -idl
    -
    - -

    -Then from within IDL, you can display individual spectra as following. -To display plate 401, fiber 100: -

    -IDL> plotspec, 401, 100
    -
    -The spectrum is shown in white, the errors in red (except masked points -are set to zero), and the best-fit eigenspectrum in blue. -The mouse buttons will zoom in (left), recenter (center), or zoom out (right). -The frame can be saved as a PostScript file by selecting File->WriteEPS -from the left-hand corner. - -

    -Make the same plot, but boxcar-smooth the spectrum: -

    -IDL> plotspec, 401, 100, nsmooth=10
    -
    - -

    -Some plates are observed on multiple nights. To select one of the two -observations of plate 306: -

    -IDL> plotspec, 306, 20, mjd=51690
    -
    - -

    -You can write the spectrum to an ASCII file as follows: -

    -IDL> writespec, 401, 100
    -
    -The default file name will be "spec-0401-51788-100.dat". This can -be changed by setting the FILENAME keyword: -
    -IDL> writespec, 401, 100, filename='junk.dat'
    -
    - -

    -Quitting IDL: -

    -IDL> exit
    -
    - -

    -For IDL pundits, the general-purpose routine for reading the -the coadded spectra is -READSPEC, -or SPFRAME_READ for reading -the spectra from a single exposure. - -

    Displaying the Spectra From SM

    - -

    -The SM tools were written by Michael Strauss, Vijay Narayanan, and Robert -Lupton. -

    -Problems and suggestions should be reported to Michael Strauss -(strauss@astro.princeton.edu). - -

    -You will need a version of SM which supports FITS extensions -(version SM2_4_8 or later). If you have a valid SM license, -you or your system admin should be able to install this (see the bottom of -Michael's README file. - -

    -At Princeton, you could type the following to display plate 306 fiber 100, -then overplot the best-fit template: -

    -setenv BOSS_SPECTRO_REDUX /u/dss/spectro
    -setenv IDLSPEC2D_DIR /u/schlegel/idlspec2d
    -cd ~strauss/spectro_sm/release
    -sm
    -dev x11
    -input_new spectro.sm
    -define idl 1
    -plotspec 306 100
    -   t
    -
    - -

    Displaying the Spectra From IRAF

    - -

    -Described below is the most basic method of plotting the spectra from IRAF. -Better tools will be posted on this page as they are available. - -

    -Use the splot task in the noao.onedspec package. For example: - -

    -cl> noao
    -no> onedspec
    -on> splot spPlate-0311-51665.fits[0][*,1]   # plot fiber 1's flux
    -on> splot spPlate-0311-51665.fits[1][*,1]   # plot fiber 1's inverse variance **
    -on> splot spPlate-0311-51665.fits[0]        # interactively plot fluxes:
    -Image line/aperture to plot (0:) (1): 65    # start w/fiber 65; use # to choose
    -        # a new fiber, or ( and ) to move down and up by 1 in number; q to quit
    -on> phelp splot                             # for detailed help on splot
    -on> phelp onedspec                          # for summary of other tasks, e.g.:
    -on> specplot spPlate-0311-51665.fits[0][*,1],spPlate-0311-51665.fits[0][*,2]
    -        # stack and plot fibers 1 and 2 without overlapping
    -
    - -

    Pat Hall's IRAF SDSS Tasks

    - -

    -Pat Hall has written an IRAF package, PHIST, for displaying SDSS spectra. -It does not have all the functionality of the IDL tools, but does have -some complementary functions. The task list is as follows: -

    - dec2seg - convert decimal coordinates to sexigesimal
    -   doigi - run existing IGI script
    -hexprint - convert a decimal number to hexadecimal
    -  ionlte - calculate LTE ratios of MgI-III,AlI-IV,FeI-IV for given n_e,T ranges
    -  lplots - overplot wavelengths of emission / absorption lines for given z
    - lplots2 - 2-panel lplots
    -mkfitsobs - make coadded FITS and text spectrum
    -   mkobs - make text spectrum from FITS spectrum
    -   sbqgr - sample task for converting GR's SX .tbl output to formatted ASCII
    -   sbqsx - sample task for converting SX .tbl output to formatted ASCII
    -  sbqsx2 - another task for converting SX .tbl output to formatted ASCII
    - seg2dec - convert sexigesimal coordinates to decimal
    -  spdata - get objid,mags,ra,dec,objtype from spectrum (plate,mjd,fiber)
    -   splat - interactively SPLOT a specific observation (plate+mjd+fiber) 
    -   splet - non-interactively SPECPLOT an observation and its error spectrum 
    -unredden - deredden spectrum using SMC or LMC extinction curve
    -   vcalc - calculate velocity offset in quasar rest frame
    -   vplot - overplot wavelengths of emission / absorption lines in velocity space
    -  vplots - multiple vplot
    -   wcalc - calculate vacuum wavelength from air wavelength
    -   zplot - plot spectrum in the rest frame at the specified z
    -
    - -Here's the README file on how to retrieve & install the package -for version v.2 (December 2001): - -
    -        PHIST -- Pat Hall's IRAF SDSS Tasks
    -
    -v.2     011207  Read "phist.hlp" ("phelp phist opt=sys" in IRAF) for an
    -        introduction.  Entire package available as a compressed tarfile
    -        from http://astro.princeton.edu/~pathall/phist2.tar.gz
    -        To install, enter the proper pathnames in "phist.cl" and
    -        "phist.hd", load the IRAF "softools" package, and type
    -        "mkhelpdb root.hd helpdb.mip", deleting the old helpdb.mip
    -        if necessary.  See "phist.hlp" for how to include
    -        the package in your default IRAF startup.
    -
    - -

    What Is the Data Model?

    - -Intermediate outputs: - - -Final, co-added spectra: - - -Spectroscopic classifications, redshifts, and line fitting: - - -

    spCFrame-cc-eeeeeeee.fits

    - -

    -This file contains the extracted spectra for a single CCD of -a single exposure. In general, each object has several blue exposures -and several red exposures. These spectra are still in the native -wavelength mapping, which is neither linear in wavelength nor log-wavelength. -However, the spectra are flux-calibrated, and deviant pixels are rejected -in the pixel mask (from the comparison with the other exposures). - -

    -The spCFrame file contains the following:
    -

    -HDU #0 = Flux in units of 10^(-17) erg/s/cm^2/Ang [FLOAT]
    -HDU #1 = Inverse variance (1/sigma^2) for the above [FLOAT]
    -HDU #2 = Pixel mask [32-bit INT]
    -HDU #3 = Wavelength solution in log-10 Angstroms (vacuum) [FLOAT]
    -HDU #4 = Wavelength dispersion in units of (10^(-4) log-10 wavelength)^(-1) [FLOAT]
    -         (these are the same units as in the combined-spectrum spPlate file)
    -HDU #5 = Plug-map structure from plPlugMapM file [BINARY FITS TABLE]
    -HDU #6 = Sky flux in units of 10^(-17) erg/s/cm^2/Ang [FLOAT]
    -HDU #7 = X position on the CCD [FLOAT]
    -HDU #8 = Superflat image [FLOAT]
    -
    - -

    spDiag2d-pppp-mmmmm.log

    - -

    -The log file from running SPREDUCE2D for one night of data for one plate. - -

    spDiag2d-pppp-mmmmm.ps

    - -

    -The PostScript plots associated with the -spDiag2d-pppp-mmmmm.log file. - -

    spPlate-pppp-mmmmm.fits

    - -

    -This file contains the combined spectra for all exposures -(potentially spanning multiple nights) for a given mapped plate. -The first 5 HDU's contain NPIX by 640 images, where NPIX is the -number of wavelengths. The pixel scale is exactly 1e-4 in -log-wavelength (any units), which corresponds to 1e-4 * c * ln(10) -= 69.029765 km/sec. - -

    -The spPlate file contains the following:
    -

    -HDU #0 = Flux in units of 10^(-17) erg/s/cm^2/Ang [FLOAT]
    -HDU #1 = Inverse variance (1/sigma^2) for the above [FLOAT]
    -HDU #2 = AND mask [32-bit INT]
    -HDU #3 = OR mask [32-fit INT]
    -HDU #4 = Wavelength dispersion in pixels [FLOAT]
    -HDU #5 = Plug-map structure from plPlugMapM file [BINARY FITS TABLE]
    -HDU #6 = Average sky flux in units of 10^(-17) erg/s/cm^2/Ang [FLOAT]
    -
    - -

    -The following header keywords are of interest (in HDU #0):
    -

    -PLATEID = Plate ID
    -TILEID  = Tile ID
    -MJD     = Modified Julian date for first night of observation
    -MJDLIST = Modified Julian date for all nights of observation
    -MAPID   = Fiber mapper ID
    -CARTID  = Fiber cartridge used at the telescope
    -NAME    = Name of target: Plate ID, MJD, Fiber mapper rerun
    -COEFF0  = Central wavelength (log10-Angstroms) of first pixel
    -COEFF1  = Wavelength range of each pixel (log-10 Angstroms)
    -CRVAL1  = (Same as COEFF0)
    -CD1_1   = (Same as COEFF1)
    -RADEG   = Right ascension of plate center (J2000 degrees)
    -DECDEG  = Declination of plate center (J2000 degrees)
    -AIRMASS = Airmass for mid-point of observation
    -RA      = Right ascension of where the telescope thinks it is pointing
    -DEC     = Declination of where the telescope thinks it is pointing
    -AZ      = Azimuth of the telescope (degrees)
    -ALT     = Altitude of the telescope (degrees)
    -NEXP    = Total number of frames from all cameras used in the co-adding;
    -          since there are 4 cameras, NEXP=12 would typically mean that there
    -          were 3 exposures in each camera.
    -EXPT_B1 = b1 camera exposure time (seconds)
    -EXPT_B2 = b2 camera exposure time (seconds)
    -EXPT_R1 = r1 camera exposure time (seconds)
    -EXPT_R2 = r2 camera exposure time (seconds)
    -EXPTIME = Minimum of exposure times for all cameras
    -SPEC1_G = (S/N)^2 per pixel at g=20.2 on spectrograph #1
    -SPEC2_G = (S/N)^2 per pixel at g=20.2 on spectrograph #2
    -SPEC1_R = (S/N)^2 per pixel at r=20.25 on spectrograph #1
    -SPEC2_R = (S/N)^2 per pixel at r=20.25 on spectrograph #2
    -SPEC1_I = (S/N)^2 per pixel at i=19.9 on spectrograph #1
    -SPEC2_I = (S/N)^2 per pixel at i=19.9 on spectrograph #2
    -GOFFSTD = Median spectrophotometry minus photo mag for standard stars in g-band
    -ROFFSTD = Median spectrophotometry minus photo mag for standard stars in r-band
    -IOFFSTD = Median spectrophotometry minus photo mag for standard stars in i-band
    -GOFFRMS = RMS of spectrophotometry minus photo mag for standard stars in g-band
    -ROFFRMS = RMS of spectrophotometry minus photo mag for standard stars in r-band
    -IOFFRMS = RMS of spectrophotometry minus photo mag for standard stars in i-band
    -GOFFGAL = Median spectrophotometry minus photo mag for "main" galaxies in g-band
    -ROFFGAL = Median spectrophotometry minus photo mag for "main" galaxies in r-band
    -IOFFGAL = Median spectrophotometry minus photo mag for "main" galaxies in i-band
    -GOFFGAL = RMS of spectrophotometry minus photo mag for "main" galaxies in g-band
    -ROFFGAL = RMS of spectrophotometry minus photo mag for "main" galaxies in r-band
    -IOFFGAL = RMS of spectrophotometry minus photo mag for "main" galaxies in i-band
    -BESTEXP = Exposure number for the "best" exposure (all 4 cameras)
    -EXPIDxx = Identifier for the each invididual exposure+CCD used in this combine,
    -          for ex. 'b1-00006853-00006857-00006858' refers to the b1 CCD,
    -          exposure #6853, using flat #6857 and arc #6858
    -TAI     = Number of seconds since Nov 17 1858 for mid-point of observation
    -TAI-BEG = Number of seconds since Nov 17 1858 for beginning of observation
    -TAI-END = Number of seconds since Nov 17 1858 for end of observation
    -SEEING20= 20th-percentile of seeing during exposure (arcsec)
    -SEEING50= 50th-percentile of seeing during exposure (arcsec)
    -SEEING80= 80th-percentile of seeing during exposure (arcsec)
    -RMSOFF20= 20th-percentile of RMS offset of guide fibers (arcsec)
    -RMSOFF50= 50th-percentile of RMS offset of guide fibers (arcsec)
    -RMSOFF80= 80th-percentile of RMS offset of guide fibers (arcsec)
    -VERSIDL = Version of IDL
    -VERS2D  = Version of idlspec2d for 2D reduction
    -VERSCOMB= Version of idlspec2d for combining multiple spectra
    -VERSFLAT= Version of specflat for spectroscopic flat-fields
    -VERS1D  = Version of idlspec2d for 1D reduction
    -HELIO_RV= Barycentric velocity correction (km/sec)
    -
    - -

    -There are two masks, an "AND" mask and an "OR" mask. The spectra -are constructed from 3 or more 15-minute observations, and the "AND" mask -bits are set if that bit is set for each and every input observation. -The "OR" mask bits are set if that bit is set for any of the observations. -Usually, I only look at the "AND" mask. - -

    -The mask bits are set as follows:
    -

    - 0 NOPLUG          Fiber not listed in plugmap file
    - 1 BADTRACE        Bad trace from routine TRACE320CRUDE
    - 2 BADFLAT         Low counts in fiberflat
    - 3 BADARC          Bad arc solution
    - 4 MANYBADCOLUMNS  >10% pixels are bad columns
    - 5 MANYREJECTED    >10% pixels are rejected in extraction
    - 6 LARGESHIFT      Large spatial shift between flat and object pos'n
    - 7 BADSKYFIBER     Sky Fiber shows extreme residuals
    - 8 NEARWHOPPER     Within 2 fibers of a whopping fiber (inclusive)
    -10 SMEARIMAGE      Smear available for red and blue cameras (deprecated)
    -11 SMEARHIGHSN     S/N sufficient for full smear fit (deprecated)
    -12 SMEARMEDSN      S/N only sufficient for scaled median fit (deprecated)
    -16 NEARBADPIXEL    Bad pixel within 3 pixels of trace
    -17 LOWFLAT         Flat field less than 0.5
    -18 FULLREJECT      Pixel fully rejected in extraction (INVVAR=0)
    -19 PARTIALREJECT   Some pixels rejected in extraction
    -20 SCATTEREDLIGHT  Scattered light significant
    -21 CROSSTALK       Cross-talk significant
    -22 NOSKY           Sky level unknown at this wavelength (INVVAR=0)
    -23 BRIGHTSKY       Sky level > flux + 10*(flux error)
    -                   AND sky > 2.0 * median(sky,99 pixels)
    -24 NODATA          No data available in combine B-spline (INVVAR=0)
    -25 COMBINEREJ      Rejected in combine B-spline
    -26 BADFLUXFACTOR   Low flux-calibration or flux-correction factor
    -27 BADSKYCHI       Relative chi^2 > 3 in sky residuals at this wavelength
    -28 REDMONSTER      Contiguous region of bad chi^2 in sky residuals
    -                   (with threshhold of relative chi^2 > 3)
    -
    - -

    -When low numbered bits (<16) are set, those will be set for half -of the spectra -- either the blue or red spectrograph. The higher-numbered -bits (>=16) are set for individual pixels. - -

    -Which mask bits are important? The conditions that are considered -very bad are already used to set the errors to infinity for the -effected pixels (specifically, the inverse variance is set to zero). -The most useful mask bit to look at is BRIGHTSKY, which indicates -when the sky is so bright relative to the object that perhaps one -shouldn't trust any of the object flux there. Our reported errors -are meant to include sky-subtraction errors, but there are instances -(particularly around 5577) where these errors may be untrustworthy. - -

    -Dispersion and sky: The dispersion per pixel and the sky flux -are computed at each pixel by re-weighting the individual spectra -at each pixel according to their formal errors. This re-weighting -is only approximate. - -

    -Sky wavelengths: Note that the sky lines are slightly shifted -in the reductions because we transform the velocities to the barycenter -of the solar system. Each exposure that contributes to the co-added -spectra will have slightly different barycenter correction, so the -"average sky" contains a superposition of these slightly-offset sky lines. -These shifts keep the object spectra as-measured at the barycenter, -regardless of the time of year or the Earth's rotation relative to -the spectroscopic targets. - -

    spDiagcomb-pppp-mmmmm.log

    - -The log file from running SPCOMBINE for one plate (possibly combining -data from multiple nights if the fibers have the same plugging). - -

    spDiagcomb-pppp-mmmmm.ps

    - -The PostScript plots associated with the -spDiagcomb-pppp-mmmmm.log file. - -

    spZbest-pppp-mmmmm.fits

    - -

    -This file contains the spectroscopic classifications and redshifts -from the Princeton-1D code. -Ths first HDU is the FITS binary table described below. -The 2nd HDU is the best-fit eigen-spectrum for each object. -These can be regenerated from the tabular information, but for -convenience I've explicitly computed them. - -

    -The columns in the first HDU are as follows:
    -

    -PLATE      Plate number
    -TILE       Tile number
    -MJD        Modified Julian date of observation
    -FIBERID    Fiber ID (1 to 640)
    -OBJID      4-element PHOTO ID of targetted object: run, re-run, column, ID
    -OBJTYPE    Why this object was targetted.  Note that if this field says QSO,
    -           it could be the case that this object would have been targetted
    -           as a GALAXY or any number of other categories as well.  The
    -           PRIMTARGET and SECTARGET flags in the plug-map structure (in the
    -           spPlate file) gives this full information.
    -PLUG_RA    Object RA (drilled fiber position) [J2000 degrees].
    -PLUG_DEC   Object DEC (drilled fiber position) [J2000 degrees].
    -CLASS      Spectro classification: GALAXY, QSO, STAR; reductions prior to
    -           version v4_7 will also use SKY and UNKNOWN; later versions set
    -           the ZWARNING flags
    -SUBCLASS   Spectro sub-classification.  Galaxies and QSO's can be given
    -             sub-classifications based upon their emission lines.
    -             This text includes the word "AGN" if:
    -               log10(OIII/Hbeta) > 0.7 - 1.2 * (log10(NII/Halpha) - 0.4)
    -             This text includes the word "STARFORMING" if:
    -               log10(OIII/Hbeta) < 0.7 - 1.2 * (log10(NII/Halpha) - 0.4)
    -             If the H_alpha E.W. > 500 Ang, then upgrade "STARFORMING" to
    -             "STARBURST."
    -             In all cases for AGN, STARFORMING, and STARBURST, the 4 emission
    -             lines used for that sub-classification must have well-measured
    -             errors (e.g., LINEAREA_ERR > 0).
    -             If any galaxies or quasars have lines detected at the 10-sigma
    -             level with sigmas > 200 km/sec at the 5-sigma level, call them
    -             "BROADLINE".
    -           For stars, the following subclassifications are in use:
    -             O, OB, B6, B9, A0, A0p, F2, F5, F9, G0, G2, G5, K1, K3, K5, K7,
    -             M0V, M2V,M1, M2, M3, M4, M5, M6, M7, M8, L0, L1, L2, L3, L4, L5,
    -             L5.5, L9, T2, Carbon, Carbon_lines, CarbonWD, CV.
    -Z          Redshift; if the ZWARNING flag is nonzero, then assume that this
    -           redshift is incorrect
    -Z_ERR      Redshift error based upon fit to chi^2 minimum; negative for
    -           invalid fit
    -RCHI2      Reduced chi^2 for best fit
    -DOF        Degrees of freedom for best fit
    -RCHI2DIFF  Difference in reduced chi^2 of best solution to 2nd best solution
    -TFILE      Template file in $IDLSPEC2D_DIR/templates
    -TCOLUMN    Columns to use in template file (0-indexed); unused values set to -1
    -NPOLY      Number of polynomial terms used in conjunction with TFILE
    -THETA      Eigenvalue coefficients for each column in template file + each polynomial term
    -THETA_COVAR  Covariance matrix for THETA, where the square root of the
    -           diagonal elements gives the formal 1-sigma statistical errors
    -VDISP      Velocity dispersion, only computed for galaxies (km/sec)
    -           and explicitly masking emission line regions
    -VDISP_ERR  Error in VDISP (km/sec); negative for invalid fit
    -VDISPZ     Redshift for best-fit velocity dispersion
    -VDISP_ERR  Error in VDISPZ
    -VDISPCHI2  Chi^2 for best-fit velocity dispersion
    -VDISPNPIX  Number of pixels overlapping the templates used in the
    -           velocity dispersion fit
    -VDISPDOF   Degrees of freedom for best-fit velocity dispersion, equal to
    -           VDISPNPIX minus the number of templates minus the number of
    -           polynomial terms minus 1 (the last 1 is for the velocity dispersion)
    -WAVEMIN    Minimum observed (vacuum) wavelength for this object (Angstroms)
    -WAVEMAX    Maximum observed (vacuum) wavelength for this object (Angstroms)
    -WCOVERAGE  Amount of wavelength coverage in log-10(Angstroms)
    -ZWARNING   A flag set for bad redshift fits in place of calling CLASS=UNKNOWN.
    -           The following bits may be set:
    -           0 = Sky fiber
    -           1 = Too little wavelength coverage (WCOVERAGE < 0.18)
    -           2 = Chi^2 is too close to chi^2 for the next best fit (within 0.01
    -               in the reduced chi^2)
    -           3 = Synthetic spectrum is negative (only set for stars and QSO's)
    -           4 = Fraction of points above 5 sigma is too large (> 5%)
    -           5 = Chi^2 minimum was at the edge of the redshift-fitting range,
    -               resulting in Z_ERR being set to -1
    -           6 = Negative emission in a QSO line, triggered only in QSO spectra
    -               iff C_IV, C_III, Mg_II, H_beta, or H_alpha has
    -               LINEAREA + 3 * LINEAREA_ERR < 0
    -           7 = Unplugged fiber
    -SN_MEDIAN  Median S/N for all good pixels
    -CHI68P     68-th percentile value of abs(chi) of the best-fit synthetic
    -           spectrum to the actual spectrum, which would be 1.0 for a good fit
    -           if the errors are properly normalized.
    -FRACNSIGMA Fraction of pixels deviant by more than N sigma, where N=[1,2,...10]
    -           (igorning all points blueward of rest-frame 1216 Ang)
    -FRACNSIGHI Fraction of pixels high by more than N sigma, where N=[1,2,...10]
    -           (igorning all points blueward of rest-frame 1216 Ang)
    -FRACNSIGLO Fraction of pixels low by more than N sigma, where N=[1,2,...10]
    -           (igorning all points blueward of rest-frame 1216 Ang)
    -           (incorrectly computed for versions of the code before v4_9_10)
    -SPECTROFLUX 5-element array of integrated flux in each of the 5 SDSS imaging
    -            filters (ugriz); the units are nanomaggies, which is 1 at 22.5
    -            magnitude; convert to magnitudes with
    -              22.5 - 2.5 * LOG_10(SPECTROFLUX);
    -            the u-band and z-band counts should not be used
    -SPECTROFLUX_IVAR: The approximate error (inverse variance) in SPECTROFLUX
    -            as measured by the sky fibers; we assign identical errors
    -            in linear flux units to all fibers on a plate.
    -SPECTROSYNFLUX: Same as SPECTROFLUX, but measured using the best-fit
    -                synthetic eigen-spectrum rather than the actual data points
    -SPECTROSYNFLUX_IVAR: The approximate error (inverse variance) in SPECTROSYNFLUX
    -            as measured by the sky fibers; we assign identical errors
    -            in linear flux units to all fibers on a plate.
    -SPECTROSKYFLUX: 5-element array of the sky flux in each of the 5 SDSS imaging
    -                filters
    -ANYANDMASK Mask bits which are set if any pixels for an object's ANDMASK
    -           have that bit set (these fields incorrect in current reductions)
    -ANYORMASK  Mask bits which are set if any pixels for an object's ORMASK
    -           have that bit set (these fields incorrect in current reductions)
    -SPEC1_G    (S/N)^2 at g=20.20 for spectrograph #1 (same value for 320 fibers)
    -SPEC1_R    (S/N)^2 at r=20.25 for spectrograph #1 (same value for 320 fibers)
    -SPEC1_I    (S/N)^2 at i=19.90 for spectrograph #1 (same value for 320 fibers)
    -SPEC2_G    (S/N)^2 at g=20.20 for spectrograph #2 (same value for 320 fibers)
    -SPEC2_R    (S/N)^2 at r=20.25 for spectrograph #2 (same value for 320 fibers)
    -SPEC2_I    (S/N)^2 at i=19.90 for spectrograph #2 (same value for 320 fibers)
    -ELODIE_FILENAME   File name for best-fit Elodie star
    -ELODIE_OBJECT     Star name (mostly Henry Draper names)
    -ELODIE_SPTYPE     Spectral type
    -ELODIE_BV         (B-V) color
    -ELODIE_TEFF       Effective temperature
    -ELODIE_LOGG       Log10(gravity)
    -ELODIE_FEH        [Fe/H]
    -ELODIE_Z          Redshift
    -ELODIE_Z_ERR      Redshift error; negative for invalid fit
    -ELODIE_Z_MODELERR The standard deviation in redshift amongst the 12
    -                  best-fit stars
    -ELODIE_RCHI2      Reduced chi^2
    -ELODIE_DOF        Degrees of freedom for fit
    -VELOCITY_TAI      Timestamp for each exposure [sec]
    -VELOCITY          Velocity for each exposure [km/s], where the first exposure
    -                  should be zero within roundoff
    -VELOCITY_ERR      Error in VELOCITY [km/s]
    -VELOCITY_COVAR    Covariance matrix for VELOCITY, where the square root of the
    -                  diagonal elements gives the formal 1-sigma statistical errors
    -
    - -

    spZline-pppp-mmmmm.fits

    - -

    -This file contains the line fits from from the Princeton-1D code. - -

    -The columns in the first HDU are as follows:
    -

    -PLATE      Plate number
    -MJD        Modified Julian date of observation
    -FIBERID    Fiber ID (1 to 640)
    -LINENAME   Line name
    -LINEWAVE   Catalog wavelength for this line in vacuum Angstroms
    -LINEZ          Redshift
    -LINEZ_ERR      Redshift error (negative for invalid fit)
    -LINESIGMA      Gaussian width in km/sec
    -LINESIGMA_ERR  Error in gaussian width (negative for invalid fit)
    -LINEAREA       Area in gaussian fit where units are (flux-units) * Ang
    -LINEAREA_ERR   Flux error (negative for invalid fit)
    -LINEEW         Equivalent width (Angstroms)
    -LINEEW_ERR     Equivalent width error (negative for invalid fit)
    -LINECONTLEVEL      Continuum level at line center
    -LINECONTLEVEL_ERR  Error in continuum level at line center
    -LINENPIX           Number of good pixels within +/- 3 sigma of the line center
    -LINEDOF            Degrees of freedom in fit, approximated as LINENPIX minus
    -                   the number of terms fit for that line, which can be
    -                   fractional if one parameter if fixed betwen several lines
    -LINECHI2           Chi^2 for all points within +/- 3 sigma of the line center
    -                   (negative if no such points)
    -
    - -

    -The following lines are fit. Lines with the same ZINDEX are constrained to -have the same redshift. Lines with the same WINDEX are constrained to have -the same gaussian width. The flux ratios of [O_III] and [N_II] are are -constrained to be 1:3. - -
    LINEWAVE LINENAME ZINDEX WINDEX Flux ratio -
    1215.67 Ly_alpha z_lya w_ly_a -
    1240.81 N_V 1240 zemission w_n_v -
    1549.48 C_IV 1549 zemission wemission -
    1640.42 He_II 1640 zemission wemission -
    1908.734 C_III] 1908 zemission wemission -
    2799.49 Mg_II 2799 zemission wemission -
    3726.032 [O_II] 3725 zemission wemission -
    3728.815 [O_II] 3727 zemission wemission -
    3868.75 [Ne_III] 3868 zemission wemission -
    3889.049 H_epsilon zemission w_balmer -
    3970.00 [Ne_III] 3970 zemission wemission -
    4101.734 H_delta zemission w_balmer -
    4340.464 H_gamma zemission wemission -
    4363.209 [O_III] 4363 zemission wemission -
    4685.68 He_II 4685 zemission wemission -
    4861.325 H_beta zemission w_balmer -
    4958.911 [O_III] 4959 zemission wemission -
    5006.843 [O_III] 5007 zemission wemission 3 * ([O_III] 4959) -
    5411.52 He_II 5411 zemission wemission -
    5577.339 [O_I] 5577 zemission wemission -
    6300.304 [O_I] 6300 zemission wemission -
    6363.776 [O_I] 6363 zemission wemission -
    6548.05 [N_II] 6548 zemission wemission -
    6562.801 H_alpha zemission w_balmer -
    6583.45 [N_II] 6583 zemission wemission 3 * ([N_II] 6548) -
    6716.44 [S_II] 6716 zemission wemission -
    6730.82 [S_II] 6730 zemission wemission -
    7135.790 [Ar_III] 7135 zemission wemission -
    - -

    spZall-pppp-mmmmm.fits

    - -

    -This file is a FITS binary table identical in form to the spZbest file, -but with all the fits ever done to each object. This includes 5 -possible galaxy redshifts, 5 possible QSO redshifts, and 1 for each -of many types of stars. They are rank-sorted for each object, -letting you go through and keep asking "but what's the next best fit?". -This is what the IDL procedure -plotspec -uses when the ZNUM keyword is specified. -For example, ZNUM=2 will over-plot the 2nd-best fit eigenspectrum. - -

    -For the v4_9_8 through v5_0_0 reductions, NAXIS2=33280 in HDU#1 -for the spZall files, meaning there are fits for 33280/640 = 52 -sets of eigentemplates per object. Most of those are single-eigenspectra -stars. - -

    -Not all of the parameters in the spZbest file are computed for -the spZall file. For example, the SDSS filter convolutions are not done. - -

    spDiag1d-pppp-mmmmm.log

    - -

    -The log file from running the Princeton-1D reduction code (SPREDUCE1D) -on a plate. - -

    spDiag1d-pppp-mmmmm.ps

    - -

    -The PostScript plots associated with the -spDiag1d-pppp-mmmmm.log file. - -

    What Are the Target Flags?

    - -

    -The target selection sets bits in two flags called PRIMTARGET and SECTARGET. -An object can have multiple bits set. For example, if the target selection -code determined that an object was both a QSO_SKIRT and a STAR_WHITE_DWARF, -then two bits will be set. The value of PRIMTARGET in this example will -be 2^4 + 2^19 = 524304. - -

    -Let's say you want to find all objects either targetted as a carbon star, -or spectroscopically classified as one. All this information is in the -summary file "spAll.fits". From IDL, one could search for these objects -and print their PLATE, MJD, and FIBERID as follows: -

    -IDL> a = mrdfits('spAll.fits',1) ; This file should be in your current directory
    -IDL> i = where((a.primtarget AND 2L^14) NE 0)
    -IDL> print, transpose([[a[i].plate],[a[i].mjd],[a[i].fiberid]])
    -
    -     [ Prints list of objects targetted as a Carbon star.]
    -
    -IDL> i = where(strmatch(a.subclass, 'Carbon*') AND a.zwarning EQ 0)
    -IDL> print, transpose([[a[i].plate],[a[i].mjd],[a[i].fiberid]])
    -
    -     [ Prints list of objects spectroscopically called a Carbon star.]
    -
    - -

    -Now plot all of the objects found above: -

    -IDL> i=0 & plotspec, a.plate, a.fiberid, mjd=a.mjd
    -
    - -

    -The PRIMTARGET bit values are as follows (in hex and decimal): -

    -  QSO_HIZ           = 0x1          = bit # 0 =        1
    -  QSO_CAP           = 0x2          = bit # 1 =        2
    -  QSO_SKIRT         = 0x4          = bit # 2 =        4
    -  QSO_FIRST_CAP     = 0x8          = bit # 3 =        8
    -  QSO_FIRST_SKIRT   = 0x10         = bit # 4 =       16
    -  QSO_MAG_OUTLIER   = 0x2000000    = bit #25 = 33554432
    -  QSO_REJECT        = 0x20000000   = bit #29 =536870912
    -  GALAXY_RED        = 0x20         = bit # 5 =       32
    -  GALAXY_RED_II     = 0x4000000    = bit #26 = 67108864
    -  GALAXY            = 0x40         = bit # 6 =       64
    -  GALAXY_BIG        = 0x80         = bit # 7 =      128
    -  GALAXY_BRIGHT_CORE= 0x100        = bit # 8 =      256
    -  ROSAT_A           = 0x200        = bit # 9 =      512
    -  ROSAT_B           = 0x400        = bit #10 =     1024
    -  ROSAT_C           = 0x800        = bit #11 =     2048
    -  ROSAT_D           = 0x1000       = bit #12 =     4096
    -  ROSAT_E           = 0x8000000    = bit #27 =134217728
    -  STAR_BHB          = 0x2000       = bit #13 =     8192
    -  STAR_CARBON       = 0x4000       = bit #14 =    16384
    -  STAR_BROWN_DWARF  = 0x8000       = bit #15 =    32768
    -  STAR_SUB_DWARF    = 0x10000      = bit #16 =    65536
    -  STAR_CATY_VAR     = 0x20000      = bit #17 =   131072
    -  STAR_RED_DWARF    = 0x40000      = bit #18 =   262144
    -  STAR_WHITE_DWARF  = 0x80000      = bit #19 =   524288
    -  STAR_PN           = 0x10000000   = bit #28 =268435456
    -  SERENDIP_BLUE     = 0x100000     = bit #20 =  1048576
    -  SERENDIP_FIRST    = 0x200000     = bit #21 =  2097152
    -  SERENDIP_RED      = 0x400000     = bit #22 =  4194304
    -  SERENDIP_DISTANT  = 0x800000     = bit #23 =  8388608
    -  SERENDIP_MANUAL   = 0x100000     = bit #24 = 16777216
    -  QSO_MAG_OUTLIER   = 0x200000     = bit #25 = 33554432
    -  GALAXY_RED_II     = 0x400000     = bit #26 = 67108864
    -  ROSAT_E           = 0x800000     = bit #27 =134217728
    -  STAR_PN           = 0x1000000    = bit #28 =268435456
    -  QSO_REJECT        = 0x2000000    = bit #29 =536870912
    -  SOUTHERN_SURVEY   = 0x8000000    = bit #31 =-2147483648
    -
    - -

    -The SECTARGET bit values are as follows (in hex and decimal): -

    -  LIGHT_TRAP        = 0x1          = bit # 0 =        1
    -  REDDEN_STD        = 0x2          = bit # 1 =        2
    -  TEST_TARGET       = 0x4          = bit # 2 =        4
    -  QA                = 0x8          = bit # 3 =        8
    -  SKY               = 0x10         = bit # 4 =       16
    -  SPECTROPHOTO_STD  = 0x20         = bit # 5 =       32
    -  GUIDE_STAR        = 0x40         = bit # 6 =       64
    -  BUNDLE_HOLE       = 0x80         = bit # 7 =      128
    -  QUALITY_HOLE      = 0x100        = bit # 8 =      256
    -  HOT_STD           = 0x200        = bit # 9 =      512
    -  SOUTHERN_SURVEY   = 0x8000000    = bit #31 =-2147483648
    -
    - -

    -These flag values were copied from the "target" module files -"common/arTargetType.h" and "etc/diags.tcl". (There doesn't actually -appear to be any single file that tracks all of these flags!) - -

    The Wavelengths Are in Vacuum!!??

    - -

    -Yes, the data are stored using vacuum wavelengths. This makes sense -for quasologists. But most optical astronomers know the wavelengths of -transitions as measured at S.T.P., which is how the CRC lists them for -any transitions redward of 2000 Angstroms. - -

    -The IAU standard for conversion from air to vacuum wavelengths is given -in Morton (1991, ApJS, 77, 119). For vacuum wavelengths (VAC) in Angstroms, -convert to air wavelength (AIR) via:
    -

    -  AIR = VAC / (1.0 + 2.735182E-4 + 131.4182 / VAC^2 + 2.76249E8 / VAC^4)
    -
    - -

    -Below, I've listed the vacuum wavelength of some transitions: -

    - Air       Vacuum
    - --------  --------
    - 4861.363  4862.721  H_beta
    - 4958.911  4960.295  [O III]
    - 5006.843  5008.239  [O III]
    - 6548.05   6549.86   [N II]
    - 6562.801  6564.614  H_alpha
    - 6583.45   6585.27   [N II]
    - 6716.44   6718.29   [S II]
    - 6730.82   6732.68   [S II]
    -
    - -

    -Note that the wavelengths are also shifted such that measured velocities -will be relative to barycentric at the mid-point -of each 15-minute exposure (using TAI-BEG + 0.5 * EXPTIME from the header). -

    Problems

    - -

    Known Problems

    - -

    -Here is a list of the most offensive known problems in either the -data or in the Spectro-2D reduction code as of version v4_9_11 (31 May 2002): -

    -Plate 0187/51455 has no good b2 arc on the first night of data 51454.
    -                 This plate has severe scattered light problems.  The r2 camera
    -                 is completely flagged as REDMONSTER in the ORMASK, and is
    -                 therefore ignored by the redshift-finding code.  For that
    -                 reason, the synthetic spectra do not match the spectra
    -                 at all for the red side of fibers 321-640.
    -Plate 0192/51461 has severe scattered light problems.
    -Plate 0202/51441 has the Red Monster light at 6400-6550 Ang in the last
    -                 2 of 4 exposures (exp #1367,1368).
    -                 This results in some wrong z=4.3 QSOs (fibers 601,639).
    -                 Apparently 2 of the b1 science exposures saturated
    -                 (exp #1366,1367).  See PR #1890.
    -Plate 0214/51441 has the Red Monster light at 6400-6550 Ang in the first
    -                 3 of 4 exposures (exp #1356-1368).  See PR #1890.
    -Plate 0231/51456 has no good r1 arc on the first night of data 51455.
    -Plate 0260/51612 looks like funny fluxing in the blue below 4000 Ang,
    -                 probably due to very low S/N.
    -Plate 0354/51792 taken during moon
    -Plate 0360/51780 had the b1 CCD warm up during exposures 6193,6194,6199
    -                 resulting in apparent scattered light in 6193,6194 and
    -                 rejection of frame 6199.  See PR #2170.
    -Plate 0426/51882 has the Red Monster light at 6400-6550 Ang in exp #7366-7367.
    -                 See PR #1890.
    -Plate 0541/51959 has bad extraction chi^2 and sky-subtraction, especially in r1.
    -Plate 0644/52149 has bad extraction chi^2 and sky-subtraction.  Is this the same
    -                 problem as for plate 0541/51959?
    -
    -The following list of plates were rejected because of out-of-collimation -spectrographs (c.f., sdss-spectro/873): -
    -Plate 0504/52316 - Many rejected pixels
    -Plate 0704/52205 - Many rejected pixels
    -Plate 0721/52228 - Many rejected pixels
    -Plate 0736/52210 - Many rejected pixels
    -Plate 0756/52237 - Badly out-of-focus
    -Plate 0761/52266 - Many rejected pixels
    -Plate 0769/52282 - Many rejected pixels
    -Plate 0770/52282 - Many rejected pixels
    -Plate 0775/52295 - Many rejected pixels
    -Plate 0778/52337 - Many rejected pixels
    -Plate 0790/52346 - Badly out-of-focus night
    -Plate 0791/52347 - Badly out-of-focus
    -Plate 0873/52347 - Badly out-of-focus
    -Plate 0876/52346 - Badly out-of-focus night
    -Plate 0889/52346 - Badly out-of-focus night; many rejected pixels
    -
    - -

    Failed Plates

    - -
    -Plates 0179,0182 are FASTT plates with 12th mag stars and no sky fibers;
    -                 these data are not reducable.
    -Plate 0204/51455 has no good b1,b2,r2 arcs
    -Plate 0209/51462 has too many saturated rows in r2 for the modern reduction code
    -Plate 0213/51578 has no good b2 arc
    -Plate 0218/51461 has no good b2 arc
    -Plate 0235/51462 has no good b2 arc (saturated)
    -Plate 0260/51612 has only 2 science exposures, so will not combine
    -Plate 0284/51934 has no good arcs (flat-field screen was not closed for arcs);
    -                 no plan file even built
    -Plate 0296/51578 has no good b2 arc
    -Plate 0317/51589 has no flats or arcs; no plan file even built
    -Plate 0318 special plate needs edited plug-map files in order to run
    -Plate 0324/51616 only has one science exposure, so won't combine
    -Plate 0347/51701 has 1 saturated exposure on 51694, and 1 good one on 51701
    -Plate 0560/52045 only has one science exposure, so will not combine
    -
    - -

    Dates and Plates to Remember

    - -
    -MJD -> 51569 (->25 Jan 2000): Shutter open during readout!
    -                   Definitely compromises data for plates 187,188,190,191,
    -                   192,194,198,202,203,217,231.
    -MJD -> 51605 (->2 Mar 2000): Scattered light from internal LED's contaminate
    -                   all these data.  After this date, we went through several
    -                   work-arounds that basically eliminated the problem.
    -                   Definitely compromises data for plates 187,188,190,191,
    -                   192,194,198,202,203,214,217,231,265,266,269,283,295.
    -MJD 51578 - 55580 (3-5 Feb 2000): Severe "shifted row" electronics problem.
    -                   This only effects plate 295/51580.
    -MJD 51584,51585,51608,51614,51615,51629,51630: Raw images are the wrong size!
    -                   Unsure what this actually does to the data.
    -                   Potentially effects plates 266,267,279,281,282,283,295,303.
    -MJD 51688 - 51703 (22 May 2000): Electronics "dropped pixel" problem
    -                   on cameras b2,r2.  Potentially effects plates 312,338,339,
    -                   343,344,346,348,349,351,353.
    -MJD 51779 only (22 Aug 2000): Terrible electronics problem on r2.
    -                   This only effects plate 356/51779.
    -MJD 51789 - today: (2 Sep 2000): Smear implemented for most plates.
    -MJD 52220 - 52266, 52312 - 52356 (Nov-Dec 2001, Feb-Mar 2002) Spectrograph
    -                  slit-head latch problems.  The kinematic mounts for the
    -                  slit-heads were not always engaged, resulting in out-of-focus
    -                  exposures on the instrument.  The optimal extraction code
    -                  works quite poorly on these data, as does the sky-subtraction
    -                  which shows large relative chi^2 (MJD 52346 is the worst,
    -                  plates 790, 876, 889).
    -MJD 52899 - today: Noise source in right amplifier of r2 adding ~30 DN of noise
    -                  to ~5% of the pixels.  See sdss-obs/4425 and other e-mail
    -                  traffic after 20 March 2004.
    -MJD 52988,52991: LED from telephone causing red spotlight on plate 1489/52991.
    -                  See sdss-spectro/1245 and sdss-spectro/1246.
    -MJD 53053 (18 Feb 2004): A fiber bundle on cartridge #9 spectro-1 detached
    -                  while observing plate 1372.
    -MJD 53670-53676 (26-28 Oct 2005): Condensation inside the b1 camera
    -                  make the data useless on plates 2264/53673, 2333/53676,
    -                  2338/53676 (c.f. PR #6713).  The data on 2265/53674 and
    -                  2266/53675 appears surprisingly OK.
    -
    -Plates   1 - 431: Tiling bug resulted in larger color range for SPECTROPHOTO
    -                  standards, which must compromise spectro-photometry
    -                  at some level.
    -Plates 371 - 416: Bad QSO selection due to bug in target v2_7 (chunk 8),
    -                  resulting in a very low success rate for quasars.
    -
    - -

    How to Report Problems

    - -

    -Problems can be reported via the bug database at: -

    -
    -http://spectro.princeton.edu/cgi-bin/gnatsweb.pl
    -
    -File bugs about the extracted spectra against the category "idlspec2d", -and about the redshifts or template-fitting against "specBS". -Before filing a problem report (PR), first look at the -Known Problems section above and -search the bug database to make sure no one else has already reported -the problem. - -
    - -

    Acknowledgements

    - -

    Funding for the creation and distribution of the SDSS Archive has -been provided by the Alfred P. Sloan Foundation, the Participating -Institutions, the National Aeronautics and Space Administration, the -National Science Foundation, the U.S. Department of Energy, the Japanese -Monbukagakusho, and the Max Planck Society. The SDSS Web site is -http://www.sdss.org/. -

    - -

    The SDSS is managed by the Astrophysical Research Consortium (ARC) for the -Participating Institutions. The Participating Institutions are The University of Chicago, -Fermilab, the Institute for Advanced Study, the Japan Participation -Group, The Johns Hopkins University, Los Alamos National Laboratory, -the Max-Planck-Institute for -Astronomy (MPIA), the Max-Planck-Institute for Astrophysics (MPA), New -Mexico State University, Princeton University, the United States Naval -Observatory, and the University of Washington.

    - -
    -
    -David Schlegel, -schlegel@astro.princeton.edu -
    - - - - diff --git a/doc/www/spectro_inspect.html b/doc/www/spectro_inspect.html deleted file mode 100644 index c4108deb4..000000000 --- a/doc/www/spectro_inspect.html +++ /dev/null @@ -1,347 +0,0 @@ - - -SDSS Spectroscopy Manual Inspection - - - - - - - - -

    SDSS Spectroscopy Manual Inspection

    - -

    -In this document: -

    - -

    -Related documents: -

    - -

    Overview

    - -

    -Currently, the new reductions exist at Princeton in: -

    -  spectro.princeton.edu:/u/dss/spectro_test
    -
    -The goal is to have at least 2 trusted people inspect each of the 388 -DR1 plates. - -

    -Inspection will be done using plain text files in a central repository where -all SDSS folks have access. Template files have been auto-generated with -the redshifts and classifications from the pipelines. Alternatively, -Michael's SM scripts or my IDL code can be used to generate these simple -files on-the-fly. - -

    -When someone inspects a plate, these files are edited and imported back -into this repository. - -

    CVS "spinspect" Product

    - -

    -There is a new product called "spinspect", which can be downloaded -(checked-out) or modified (checked-in) by a list of users that includes -the "alfred" account at Princeton. If you have access from your -Princeton account: -

    -  % bash
    -  % CVSROOT=sdsscvs.astro.princeton.edu:/usr/local/cvsprivate
    -  % CVS_RSH=ssh
    -  % cvs co spinspect
    -
    -If you have access through the "alfred" account: -
    -  % bash
    -  % CVSROOT=alfred@sdsscvs.astro.princeton.edu:/usr/local/cvsprivate
    -  % CVS_RSH=ssh
    -  % cvs co spinspect
    -
    -Once you have this product in your home directory, you can update with -other people's changes with: -
    -  % cd ~/spinspect
    -  % cvs update
    -
    - -

    -The template files can be found in -

    -  spinspect/prototype/spInspect-$plate-$mjd.par
    -
    -Once a plate has been inspected, that data is imported in files -
    -  spinspect/data/$inspector/spInspect-$plate-$mjd-$inspector.par
    -
    -Currently, only folks with a Princeton account and belonging to -group dss have check-in permission for this product. Users from -the alfred account only have check-out access, and will have to -ask someone else to check-in their files -- sorry, but this is -a computer security issue. - -

    -There is also a mechanism for folks to submit a random set of objects from -multiple plates. Such a list can be put in files by the name: -

    -  spinspect/data/$inspector/spInspect-0000-00000-$inspector.par
    -
    - -

    -From these files, we will be able to auto-generate files/web-pages with wrong -redshifts or interesting objects, and compare different people's ID's. -We can even auto-generate the contradiction lists and ask folks to -resolve conflicting ID's. - -

    Importing Into "spinspect" Product

    - -

    -If this is your first import and your name is "knapp", you need -to create your directory and add it to the "spinspect" product: -

    -  cd spinspect/data
    -  mkdir knapp
    -  cvs add knapp
    -  cvs commit -m "Creating my data directory" knapp
    -
    -Once you put your files in this directory, they can be imported as follows: -
    -  cd spinspect/data/knapp
    -  cvs add spInspect-0400-51820-knapp.par
    -  cvs commit -m "I have inspected this" spInspect-0400-51820-knapp.par
    -
    - -

    The Rules of Inspection

    - -
      -
    1. The Yanny header should be modified to list your name as the "inspector", - and the file name should also contain your name (lower-case, please). -
    2. The fields plate,mjd,fiberid,class,subclass,z are from the 2D+1D code - corresponding to the version numbers in the header of the file. - Sky fibers will always be called "SKY". Non-sky objects with the ZWARNING - flag set will be called "UNKNOWN". For both the case of SKY and UNKNOWN, - the best-fit redshift is put in the "z" field just for convenience. -
    3. No entries in the "manual" fields is an implicit declaration that the ID - is correct. -
    4. The manual_class field can have the following values: -
        -
      • GALAXY -
      • QSO -
      • STAR -
      • SKY -
      • NOOBJECT - There is no object at this position on the sky, which - can happen for example if a satellite track or blead trail - has been targetted. -
      • UNKNOWN - Objects not identifiable from their spectra should - have this value. This includes spectra with bad artifacts, in - which case the word "Glitch" or "Artifact" should be included in the - comments field. If an object is truly not identifiable from - the spectrum, then "UNKNOWN" **is** the correct answer. - If you cannot classify this object, but think it is some - truly interesting unclassifiable object, then the word "Weird" - or "TrulyWeird" should be put in the comments field. -
      • *? - If you don't have the confidence that an ID is correct, - then put "?" in the manual_class field. This will be interpreted - to say that you have not inspected that particular object or have - low confidence. You could use "GALAXY?" or just "?". -
      -
    5. The value manual_z=0 is special, and means the redshift should be - unchanged. If you need to change the redshift, it should be set to - some non-zero value, even if that is 0.0000001. -
    6. If the redshift appears to be correct, then the manual_comments - field could be edited. This allows anyone the option - to use agreed-upon comments or their own codes for tracking types - of objects, i.e. "E+A" for E+A galaxies. See - Adding Comments section for more details. -
    7. The manual_subclass field is mostly used for sub-classifying stars. -
    8. Deleting an object from this file is equivalent to saying CLASS="?", - e.g. you either have not inspected the object or do not know what it is. -
    - -

    Syntax Rules

    - -The rules for these Yanny files are as follows: -
      -
    1. Empty fields should be denoted by double-quotes. -
    2. Strings that contain whitespace should be enclosed in quotes (but can - be in quotes even if a single word.) -
    3. Strings should not contain either single- or double-quotes within - the string. -
    4. Non-quoted whitespace is ignored. -
    5. Lines can be very long, or can be continued with a backslash, even - within a quoted string. -
    - -

    Adding Comments

    - -The "comments" field should mostly use agreed-upon words. These words -should be case-sensitive. Multiple comments should be semi-colon separated. -There is no point in adding comments like "Carbon star" when an object -is already classified as such (if it is not, then the manual_subclass -field should be edited). -
      -
    • Featureless = featureless spectrum, as so many FIRST sources seem to be -
    • Weird = The object was classified as UNKNOWN, but you think it's an - interesting object. -
    • TrulyWeird = This object isn't just weird, but you think it - is a truly interesting object. -
    • Blend = Superposition of objects; the second object should have - its information put in a SPECBLEND structure -
    • Supernova = supernova on spectrum -
    • Artifact = bad artifact in the spectrum, whether or not it should - be classified as UNKNOWN -
    • Glitch = An artifact that effects only a small number of pixels -
    • Badskysub = Bad sky-subtraction (probably related to PR 3399). -
    • PR xxxx = Reference to a Problem Report number, for example "PR 1234". -
    • BAL = BAL QSO; Pat Hall suggests using any BAL subtypes as long as - they include "BAL" in the string, i.e. HiBAL, LoBAL, FeLoBAL, - mntBAL, otBAL, redBAL, fe3BAL. -
    • E+A = E+A galaxy -
    • BLLac = BL Lac -
    • BEMstar = Dwarf stars w/strong broad cyclotron emission -
    • MgIIabs = MgII absorption system in the spectrum -
    • WDmagnetic = Magnetic white dwarf -
    • NearBrightStar = Scattered light from a bright star, - i.e. 387/51791-185 has a 7th mag K star 25 arcsec to the SE -
    - -

    Adding Long Comments (Text)

    - -Long comments should be put in the SPECTEXT structure, as in the -example below. There are no restrictions on this text, other than -it conform to the syntax rules. - -

    Superpositions of Objects

    - -Superpositions of objects can be identified by putting information for -the dominant object in the SPECINSPECT structure, and any secondary objects -in SPECBLEND structures. See example below. - -

    Problems in the Spectra

    - -

    -The following set of problems are well-known. Problem reports already -exist for these problems, but you could reference the PR numbers in -the "comments" field of the inspection files. -

      -
    1. Some plates are just down-right bad. These are excluded from - the DR1 plate list. More details of bad plates can be found on - the Plate - Quality List or at - http://spectro.princeton.edu/#problems_known -
    2. Spectro-photometry can have coherent +/- 5% errors, especially - near the dichroic (PR 2528). For each plate, these errors can be seen - in the plots "spDiag1d-$plate-$MJD.ps". There is no point in commenting - on these errors, unless they result in the mis-classification by the - pipelines. -
    3. Very occasionally, a small wavelength-calibration error results - in bad sky-subtraction (PR 3399). Note that the BRIGHTSKY mask bit - should be set in these cases. -
    4. Galaxies with redshifts >0.6 not found (PR 3155). - The P-1D pipeline currently does not search for galaxies at high redshift. -
    5. Some good QSO fits are incorrectly rejected with the NEGATIVE_EMSSION - bit set in the ZWARNING flag (PR 3797). - Examples are plate 400/51820, fibers 21, 512, 632. -
    - -

    -New problems should be filed in the Bug Database -against the idlspec2d product for problems in the spectra, -or against specBS for problems in the classifications, redshifts, -or other measured quantities. - -

    Example Files

    - -

    -For plate 400/51820, I edited the following 5 lines -in the file "spInspect-0400-51820-schlegel.par": -

    -SPECINSPECT 400 51820 21 UNKNOWN BROADLINE 1.44154 schlegel "QSO" "" 1.44154 "PR 3797"
    -SPECINSPECT 400 51820 193 UNKNOWN BROADLINE 0.997749 schlegel "QSO" "" 0.997749 "PR 3797"
    -SPECINSPECT 400 51820 512 UNKNOWN BROADLINE 0.399743 schlegel "QSO" "" 0.399743 "PR 3797"
    -SPECINSPECT 400 51820 632 UNKNOWN BROADLINE 1.49835 schlegel "QSO" "" 1.49835 "PR 3797"
    -SPECINSPECT 400 51820 640 UNKNOWN "" 0.442294 schlegel "GALAXY" "" 0.442294 "Badskysub; PR 3399"
    -
    - -Below is the beginnings of a fake example file, with entries for -superpositions, etc: - -
    -plate 400
    -mjd 51820
    -vers2d v4_9_8
    -verscomb v4_9_8
    -vers1d v4_9_8
    -inspector knapp
    -
    -typedef struct {
    -  int plate;
    -  int mjd;
    -  int fiberid;
    -  char class[40];
    -  char subclass[40];
    -  float z;
    -  char inspector[20];
    -  char manual_class[40];
    -  char manual_subclass[40];
    -  float manual_z;
    -  char manual_comments[80];
    -} SPECINSPECT;
    -
    -typedef struct {
    -  int plate;
    -  int mjd;
    -  int fiberid;
    -  char inspector[20];
    -  char manual_text[800];
    -} SPECTEXT
    -
    -typedef struct {
    -  int plate;
    -  int mjd;
    -  int fiberid;
    -  char inspector[20];
    -  char manual_class[40];
    -  char manual_subclass[40];
    -  float manual_z;
    -  char manual_comments[80];
    -} SPECBLEND
    -
    -specinspect 400 51820 1 GALAXY  "" 0.100000 knapp GALAXY "" 0.200 "Blend: galaxy+star"
    -specinspect 400 51820 2 UNKNOWN "" 0.123456 knapp "" "" 0 ""
    -specinspect 400 51820 3 SKY     "" 0.654321 knapp "" "" 0 ""
    -specinspect 400 51820 4 STAR    F2 0.000010 knapp "" G5 0 ""
    -specinspect 400 51820 5 GALAXY  "" 0.100000 knapp ? "" 0 ""
    -specinspect 400 51820 6 GALAXY  "" 0.100000 knapp UNKNOWN "" 0 "Artifact; Glitch at 5000 Ang"
    -...
    -
    -specblend 400 51820 1 GALAXY  "" 0.100000 knapp STAR M 0.00001 ""
    -
    -specinspect 400 51820 6 knapp "This is the craziest \
    -  object that I have ever seen in my life.  Someone \
    -  should really use a few nights of Keck time and see."
    -
    - -
    -David Schlegel, -schlegel@astro.princeton.edu - - - - diff --git a/doc/www/zplot-brg.ps b/doc/www/zplot-brg.ps deleted file mode 100644 index 65efb4bec..000000000 Binary files a/doc/www/zplot-brg.ps and /dev/null differ diff --git a/doc/www/zplot-log.ps b/doc/www/zplot-log.ps deleted file mode 100644 index 1d69ddd63..000000000 Binary files a/doc/www/zplot-log.ps and /dev/null differ diff --git a/doc/www/zplot-main.ps b/doc/www/zplot-main.ps deleted file mode 100644 index eac9b8630..000000000 Binary files a/doc/www/zplot-main.ps and /dev/null differ diff --git a/doc/www/zplot-qso.ps b/doc/www/zplot-qso.ps deleted file mode 100644 index e71bc8eae..000000000 Binary files a/doc/www/zplot-qso.ps and /dev/null differ diff --git a/docs/build_doc.py b/docs/build_doc.py new file mode 100644 index 000000000..676a3788a --- /dev/null +++ b/docs/build_doc.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python3 + +import glob +import subprocess +import os.path as ptt +from os import environ, getenv +import argparse +import sys +import time + +environ['DATABASE_PROFILE'] = 'READTHEDOCS' +if getenv('IDLUTILS_DIR') is None: + environ['IDLUTILS_DIR'] = ptt.join(getenv('READTHEDOCS_VIRTUALENV_PATH'),'idlutils') + + +try: + from pkg_resources import resource_filename + bindir = resource_filename('boss_drp','../../bin/') + prodir = resource_filename('boss_drp','../../pro/') + docdir = resource_filename('boss_drp','../../docs/sphinx/') +except: + file_path = ptt.realpath(__file__) + print(file_path) + bindir = ptt.join(ptt.dirname(ptt.dirname(file_path)),'bin/') + prodir = ptt.join(ptt.dirname(ptt.dirname(file_path)),'pro/') + docdir = ptt.join(ptt.dirname(ptt.dirname(file_path)),'docs/sphinx/') + +mask = '\n.. _{name}:\n\n{name}\n{fmt}\n::\n \n {doc}\n' + + +def headline(text, adorn='='): + return text + '\n' + adorn*len(text) + +def sec(out, sec_hdr, data, typestr): + out.write(headline(sec_hdr, adorn='-')+'\n\n') + + out.write('.. contents::\n') + out.write(' :depth: 3'+'\n') + out.write(' :local:\n') + out.write(' :class: this-will-duplicate-information-and-it-is-still-useful-here\n') + out.write(' :backlinks: none\n\n') + + for cmd in data: + cmd['doc'] = cmd['doc'].replace('\n','\n ') + out.write(mask.format(type='typestr', fmt = '^'*len(cmd['name']), **cmd)) + out.write('\n') + return(out) + +def build_docs(): + def filter(test,docstr): + if test in docstr: + dss = [] + for ds in docstr.split('\n'): + if test not in ds: dss.append(ds) + docstr = '\n'.join(dss) + return(docstr) + + docs = {} + + docs['cmd'] = [] + for command in sorted(glob.glob(bindir+'/*'), key=ptt.basename): + docstr = subprocess.getoutput(command+' -h') + + docstr = filter('Overriding default configuration',docstr) + docstr = filter('PyFITSDeprecationWarning',docstr) + docstr = filter('PyFITS is deprecated', docstr) + docstr = filter('pyautogui does not seem to be available',docstr) + docstr = filter('esutil not available!',docstr) + docstr = filter('No slurm package installed:',docstr) + docstr = filter('ERROR: dustmaps is not installed',docstr) + docstr = filter('Environmental Varable IDLUTILS_DIR must be set',docstr) + docstr = filter('WARNING: No SDSSDB access',docstr) + docstr = filter('ERROR: No SDSSDB access',docstr) + docstr = filter('No slurm package',docstr) + docstr = filter('no gaiaxpy...!',docstr) + docs['cmd'].append({'name':ptt.basename(command), 'doc': docstr}) + + docs['idl'] = [] + for command in ['spreduce2d.pro','rm_combine_script.pro', + 'spreduce1d_empca.pro','spcalib_qa.pro', + 'spspec_target_merge.pro']: + pf = glob.glob(prodir+'/*/'+command) + if len(pf) == 0: continue + docstr = [] + with open(pf[0],'r') as prof: + docstr = prof.read() + dss = [] + for ds in docstr.split('\n'): + if ';------------------' in ds: + break + if len(ds.strip()) == 0: + continue + dss.append(ds) + docstr = '\n'.join(dss) + docs['idl'].append({'name':command, 'doc': docstr}) + + with open(docdir+'doc.rst', 'w') as out: + out.write(':tocdepth: 2\n\n') + out.write('.. highlight:: none\n\n') + out.write(headline('Full Command Documention') + '\n') + out.write('Documented below are the primary commands used to run the BOSS Data Reduction Pipeline. However, there are numerous other routines included in this package, which are called by these commands and have their own internal documentation.\n\n') + sec_hdr ='Full Bash and Python Command Usage' + out = sec(out, sec_hdr, docs['cmd'], 'bin') + + sec_hdr ='IDL Command Usage' + out = sec(out, sec_hdr, docs['idl'], 'idl') + + out.write('\n.. highlight:: defaults\n\n') + + out.write('\n.. End of document\n') + +if __name__ == '__main__' : + """ + Build BOSS DRP Documention + """ + build_docs() diff --git a/docs/sphinx/Dependencies.rst b/docs/sphinx/Dependencies.rst new file mode 100644 index 000000000..3a5e3a6e2 --- /dev/null +++ b/docs/sphinx/Dependencies.rst @@ -0,0 +1,87 @@ +.. title:: IDLspec2D: Dependencies + +Pipeline Dependencies +===================== + +Setup Requirements +------------------- + +A number of system environmental variables and paths are required to run the BOSS DRP. + +Running at the University of Utah CHPC +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +At Utah, modules (`github.com/sdss/sdss_modules `_) are used to maintain the the required packages and paths. For the BOSS pipeline, the bhm modules are used to manage these for the BOSS pipeline. + +Environmental Variables +^^^^^^^^^^^^^^^^^^^^^^^ +:: + + export DATABASE_PROFILE="pipelines" + export RUN2D="|idlspec2d_version|" + export RUN1D="|idlspec2d_version|" + export BOSS_SPECTRO_REDUX="/uufs/chpc.utah.edu/common/home/sdss50/sdsswork/bhm/boss/spectro/redux" + export BOSS_SPECTRO_DATA_N="/uufs/chpc.utah.edu/common/home/sdss50/sdsswork/bhm/boss/spectro/apo" + export BOSS_SPECTRO_DATA_S="/uufs/chpc.utah.edu/common/home/sdss50/sdsswork/bhm/boss/spectro/lco" + export SDHDRFIX_DIR="/uufs/chpc.utah.edu/common/home/sdss50/software/git/sdss/sdsscore_test/main" + export IDLSPEC2D_DIR="/uufs/chpc.utah.edu/common/home/sdss50/software/git/sdss/idlspec2d/$RUN2D" + export SDSSCORE_DIR="/uufs/chpc.utah.edu/common/home/sdss50/software/git/sdss/sdsscore_test/main" + export DAILY_DIR='$HOME/daily/ + export BOSS_QA_DIR='$BOSS_SPECTRO_REDUX' + +.. _Paths: + +Paths +^^^^^ +:: + + export IDL_PATH="$IDL_PATH:$IDLSPEC2D_DIR" + export PATH="$PATH:$IDLSPEC2D_DIR/bin" + export PYTHONPATH="$PYTHONPATH:$IDLSPEC2D_DIR/python" + +Compiling Internal Functions +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +The idlspec2d package contains a shared object library and C scripts. If you have issues with these, you can run ``evilmake all`` within the main idlspec2d directory ($IDLSPEC2D_DIR). ``evilmake`` is included within idlutils, so follow the directions on (`sdss.org/dr18/software/packages/idlutils/ `_) to install idlutils first. + +Compiling Internal Documentation +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +This documentation can be compiled locally by navigating to ``$IDLSPEC2D_DIR/docs/sphinx`` and run ``make all`` (This can also be run with ``evilmake all`` in the same directory or ``evilmake doc`` within ``$IDLSPEC2D_DIR``). This will compile the html, singlehtml, and pdf forms of the documentation within the associated subdirectoires of ``$IDLSPEC2D_DIR/docs/sphinx/_build``. + +Dependencies +------------------- + +* idl +* python(3.7-3.11) +* SDSS Collaboration Package Dependencies + * `idlutils `_: idlutils is a collection of IDL functions and routines used by a variety of SDSS software. + * `sdssdb `_: sdssdb contains the source catalogs, targeting catalogs, and operational databases. + * `semaphore `_: provides codes and reference files to decode and understand the sdss_target_flags + * `sdss-tree `_: provides environment variables to manage paths for SDSS data as they organized on the Science Archive Server (SAS) + * `sdss_access `_: provides a convenient way of navigating local and remote file system paths from the Science Archive Server (SAS) + * `pyVista `_: + * `SDSS Slurm `_: Required for use of uurundaily at Utah, all other command can be manually (at Utah or elsewhere) run without access to the slurm manager provided by this package + * `sdsstools `_: +* SDSS Product Dependencies + * `sdsscore `_: sdsscore is an SDSS-V product that contains the FPS fiber configuration files and header correction files to change the header exposure values (sdHdrFix-{mjd}.par) + * `elodie `_: A database of high and medium-resolution stellar spectra (Prugniel+, 2001) used by spec1d to classify spectra and determine stellar parameters. + * `dust `_: A catalog of dust extinction models, including the SFD model. + * `speclog `_: speclog is an SDSS product that contains information about SDSS BOSS plate operations including seeing measured by the guides (guiderMon-{MJD}.par, plate plug maps (plPlugMapM-{plateid}-{mjd}-{plugid}.par, and plate header correction files to change the header exposure values (sdHdrFix-{mjd}.par) + * `platelist `_: platelist is an SDSS product that contains information on the plate designs and plugging. The plateHoles files include additional metadata associated with the targets on a plate + * `specflat `_: specflat is an SDSS product that contains master calibration frames and bad pixel masks for use in the idlspec2d pipeline. + * `gaia/dr2 `_: idlspec2d utilizes gaia_source/csv to calculate the distance to standard stars from GAIA DR2 proper motion. +* External Dependencies + * `pyDL `_: a package that consists of python replacements for IDL function, both built-in and from external astronomical libraries + * `dustmaps `_: provides a unified interface for several 2D and 3D maps of interstellar dust reddening and extinction. idlspec2d makes use of the Bayestar 2015 dustmaps (`Green, Schlafly, Finkbeiner et al. 2015 `_) + * `PyXCSAO `_: a python package designed to replicate the functionality of `IRAF XCSAO `_. + * `numpy `_: a standard Python package for arrays and high-level mathematical functions + * `astropy `_: a collection of astronomy packages written in Python + * `matplotlib `_: a python plotting library + * `healpy `_: a Python package based on the Hierarchical Equal Area isoLatitude Pixelization (HEALPix) scheme + * `tqdm `_: a progress bar for Python + * `pandas `_: a python package designed for data manipulation and analysis + * `h5py `_: a python interface between numpy and HDF5 data + * `scipy `_: a python package for scientific and technical computing + * `pillow `_: a python image file processing library + * `jinja2 `_: a python templating engine used to build the HTMLs produced by the pipeline + * `termcolor `_: a python package for color formatting of terminal outputs (not required but recommended) + * `plotly `_: a python package for interactive plots (not required for the core pipeline but used by some of the supplementary tools) + diff --git a/docs/sphinx/Makefile b/docs/sphinx/Makefile new file mode 100644 index 000000000..33a76ff59 --- /dev/null +++ b/docs/sphinx/Makefile @@ -0,0 +1,58 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = python -msphinx +SPHINXPROJ = BMO +SOURCEDIR = . +BUILDDIR = _build +SKIP_BUILD_DOC = # Set this to '1' to skip `python ../build_doc.py` + +# Put it first so that "make" without argument is like "make help". +help: + #@python ../build_doc.py + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile clean all local clean_tmp + + +# Collect the targets as tags +TAGS = $(subst html,html,$(subst singlehtml,singlehtml,$(subst latexpdf,pdf,$(subst epub,epub,$(subst man,man,$(filter-out Makefile,$(MAKECMDGOALS))))))) + + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @if [ -z "$(SKIP_BUILD_DOC)" ]; then python ../build_doc.py; fi + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) $(addprefix -t ,$(TAGS)) + +clean: + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) $(addprefix -t ,$(TAGS)) + @find "../../python/" -type d -name "__pycache__" -print0 2>/dev/null | xargs -0 rm -rf + +all: + @if [ -z "$(SKIP_BUILD_DOC)" ]; then python ../build_doc.py; fi + @$(SPHINXBUILD) -M html "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -t html + @$(SPHINXBUILD) -M singlehtml "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -t singlehtml + @$(SPHINXBUILD) -M latexpdf "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -t pdf + @$(MAKE) clean_tmp + +local: + @if [ -z "$(SKIP_BUILD_DOC)" ]; then python ../build_doc.py; fi + @$(SPHINXBUILD) -M singlehtml "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -t singlehtml + @$(SPHINXBUILD) -M latexpdf "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) -t pdf + @$(MAKE) clean_tmp + +clean_tmp: + @find "$(BUILDDIR)"/epub/ -type f ! -name "*.epub" -print0 2>/dev/null | xargs -0 rm -f + @find "$(BUILDDIR)"/epub/ -type d -empty -print0 2>/dev/null | xargs -0 rmdir + @find "$(BUILDDIR)"/latex/ -type f ! -name "*.pdf" -print0 2>/dev/null | xargs -0 rm -f + @find "$(BUILDDIR)"/latex/ -type d -empty -print0 2>/dev/null | xargs -0 rmdir + @rm -rf "$(BUILDDIR)"/doctrees + @find "../../python/" -type d -name "__pycache__" -print0 2>/dev/null | xargs -0 rm -fr + +sos: + @$(MAKE) local + @cp -rf "$(BUILDDIR)"/latex/*.pdf /data/boss/sos/docs/ + @cp -rf "$(BUILDDIR)"/singlehtml/ /data/boss/sos/docs/ diff --git a/docs/sphinx/_static/custom.css b/docs/sphinx/_static/custom.css new file mode 100644 index 000000000..9ea0f783d --- /dev/null +++ b/docs/sphinx/_static/custom.css @@ -0,0 +1,43 @@ +/* This is the custom CSS for alabaster. The theme does not allow for it to be set differently. */ + +.red { + color: red; +} + +.green { + color: green; +} + +.pink { + color: pink; +} + +.orange { + color: orange; +} + +.purple { + color: purple; +} + +a.reference > em { + font-style: normal !important; +} + +a.reference > code { + font-weight: inherit !important; + color: inherit; + background-color: inherit; +} + +ul, ol { + margin: 0px 0 0px 30px; +} + +a.reference { + border-bottom: 0px; +} + +td.field-body > ul > li > em { + font-style: normal !important; +} diff --git a/docs/sphinx/_static/custom_bootstrap.css b/docs/sphinx/_static/custom_bootstrap.css new file mode 100644 index 000000000..c40072804 --- /dev/null +++ b/docs/sphinx/_static/custom_bootstrap.css @@ -0,0 +1,107 @@ +body { color: #444444 !important; font-size: 14px} + +div.custom-warning { + background-color: #f7c589; + border-color: #f7c589; +} + +div.custom-warning { + background-color: #f7c589; + border-color: #f7c589; +} + +.red { + color: red; +} + +.green { + color: green; +} + +.pink { + color: pink; +} + +.orange { + color: orange; +} + +.purple { + color: purple; +} + +dl.attribute, dl.method { + display: block; + margin-left: 50px; +} + +footer a{ + + color: #4c72b0 !important; +} +a.reference { + color: #4c72b0 !important; +} + +blockquote p { + font-size: 14px !important; +} + +blockquote { + padding-top: 4px !important; + padding-bottom: 4px !important; + margin: 0 0 0px !important; +} + +code { + color: #49759c !important; + background-color: #ffffff !important; +} + +.alert-info { + background-color: #adb8cb !important; + border-color: #adb8cb !important; + color: #2c3e50 !important; +} + +code.descname, code.descclassname { + color: #c42850 !important; +} + +code.descclassname + code.descname { + margin-left: -4px; + padding-left: 0px; +} + +span.sig-paren ~ em { + font-weight: 600; + font-family: sans-serif; + font-size: 9.5pt; +} + +em.property { + font-weight: 600; + font-family: sans-serif; + font-size: 9.5pt; +} + +/* .function dt { + padding-top: 150px; + margin-top: -150px; + -webkit-background-clip: content-box; + background-clip: content-box; +} */ + +.rubric > .class-header-no-toc { + font-size: 240%; + font-weight: 400; + /* padding-bottom: 20px; */ + display: inline-block; +} + +h1 { font-size: 240%; } +h2 { font-size: 180%; } +h3 { font-size: 150%; } +h4 { font-size: 120%; } +h5 { font-size: 90%; } +h6 { font-size: 80%; } diff --git a/docs/sphinx/_static/favicon_sdssv.ico b/docs/sphinx/_static/favicon_sdssv.ico new file mode 100644 index 000000000..61c5d4f6b Binary files /dev/null and b/docs/sphinx/_static/favicon_sdssv.ico differ diff --git a/docs/sphinx/_static/pygments.css b/docs/sphinx/_static/pygments.css new file mode 100644 index 000000000..0fa0beaa2 --- /dev/null +++ b/docs/sphinx/_static/pygments.css @@ -0,0 +1,77 @@ +.highlight .hll { background-color: #ffffcc } +.highlight { background: #f8f8f8; } +.highlight .c { color: #8f5902; font-style: italic } /* Comment */ +.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */ +.highlight .g { color: #000000 } /* Generic */ +.highlight .k { color: #204a87; font-weight: bold } /* Keyword */ +.highlight .l { color: #000000 } /* Literal */ +.highlight .n { color: #000000 } /* Name */ +.highlight .o { color: #ce5c00; font-weight: bold } /* Operator */ +.highlight .x { color: #000000 } /* Other */ +.highlight .p { color: #000000; font-weight: bold } /* Punctuation */ +.highlight .ch { color: #8f5902; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */ +.highlight .cpf { color: #8f5902; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */ +.highlight .gd { color: #a40000 } /* Generic.Deleted */ +.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */ +.highlight .gr { color: #ef2929 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #000000; font-style: italic } /* Generic.Output */ +.highlight .gp { color: #8f5902 } /* Generic.Prompt */ +.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */ +.highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */ +.highlight .ld { color: #000000 } /* Literal.Date */ +.highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */ +.highlight .s { color: #4e9a06 } /* Literal.String */ +.highlight .na { color: #c4a000 } /* Name.Attribute */ +.highlight .nb { color: #204a87 } /* Name.Builtin */ +.highlight .nc { color: #000000 } /* Name.Class */ +.highlight .no { color: #000000 } /* Name.Constant */ +.highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #ce5c00 } /* Name.Entity */ +.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */ +.highlight .nf { color: #000000 } /* Name.Function */ +.highlight .nl { color: #f57900 } /* Name.Label */ +.highlight .nn { color: #000000 } /* Name.Namespace */ +.highlight .nx { color: #000000 } /* Name.Other */ +.highlight .py { color: #000000 } /* Name.Property */ +.highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #000000 } /* Name.Variable */ +.highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */ +.highlight .mb { color: #0000cf; font-weight: bold } /* Literal.Number.Bin */ +.highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */ +.highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */ +.highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */ +.highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */ +.highlight .sa { color: #4e9a06 } /* Literal.String.Affix */ +.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */ +.highlight .sc { color: #4e9a06 } /* Literal.String.Char */ +.highlight .dl { color: #4e9a06 } /* Literal.String.Delimiter */ +.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */ +.highlight .se { color: #4e9a06 } /* Literal.String.Escape */ +.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */ +.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */ +.highlight .sx { color: #4e9a06 } /* Literal.String.Other */ +.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */ +.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */ +.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */ +.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #000000 } /* Name.Function.Magic */ +.highlight .vc { color: #000000 } /* Name.Variable.Class */ +.highlight .vg { color: #000000 } /* Name.Variable.Global */ +.highlight .vi { color: #000000 } /* Name.Variable.Instance */ +.highlight .vm { color: #000000 } /* Name.Variable.Magic */ +.highlight .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */ diff --git a/docs/sphinx/_static/sdssv_logo.png b/docs/sphinx/_static/sdssv_logo.png new file mode 100644 index 000000000..d220594de Binary files /dev/null and b/docs/sphinx/_static/sdssv_logo.png differ diff --git a/docs/sphinx/_static/sdssv_logo_small.png b/docs/sphinx/_static/sdssv_logo_small.png new file mode 100644 index 000000000..ea25558a4 Binary files /dev/null and b/docs/sphinx/_static/sdssv_logo_small.png differ diff --git a/docs/sphinx/_templates/fulltoc.html b/docs/sphinx/_templates/fulltoc.html new file mode 100644 index 000000000..a30aeaf29 --- /dev/null +++ b/docs/sphinx/_templates/fulltoc.html @@ -0,0 +1,2 @@ + +{{ toctree(collapse=False) }} diff --git a/docs/sphinx/_templates/layout.html b/docs/sphinx/_templates/layout.html new file mode 100644 index 000000000..56464bebe --- /dev/null +++ b/docs/sphinx/_templates/layout.html @@ -0,0 +1,5 @@ +{# layout.html #} +{# Import the theme's layout. #} +{% extends "!layout.html" %} + +{% set css_files = css_files + ['_static/custom.css', '_static/pygments.css'] %} diff --git a/docs/sphinx/_templates/sidebar/navigation.html b/docs/sphinx/_templates/sidebar/navigation.html new file mode 100644 index 000000000..8ae46acdd --- /dev/null +++ b/docs/sphinx/_templates/sidebar/navigation.html @@ -0,0 +1,3 @@ + diff --git a/docs/sphinx/catchup.rst b/docs/sphinx/catchup.rst new file mode 100644 index 000000000..50edfb372 --- /dev/null +++ b/docs/sphinx/catchup.rst @@ -0,0 +1,138 @@ +Running a BOSS DRP Catchup Run +============================== + +Daily Coadds +^^^^^^^^^^^^ +.. note:: + Several of the commands contain options to bundle the slurm jobs (nbundle). This is suggested if you have a large number of tasks, as each task gets added as a row to the slurm database. If bundeling is used, each bundle gets added instead. e.g. 10,000 tasks would take a while to load 10,000 rows appended to the task table, but if you set nbundle=10 then it will only create 1000 rows in the database, and each bundled set of task would then be treated as a single task in slurm. The main disadvantage of this option is that it coarse-grains the percent complete reported while monitoring the run, so it is best to keep nubundle small to prevent gross coarse graining of the percent complete. + +build the spplan files +"""""""""""""""""""""" +The BOSS pipeline operation centers on a set of plan files built with the command. :: + + spplan --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --sdssv --no_dither --quick --apo --log apo_plan.log + spplan --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --sdssv --no_dither --quick --lco --log lco_plan.log + +.. admonition:: Edit manual plans + There are some situations where the automated proceedure to build the spplan2d files fails to build an optimal or function plan. + In which case running the following command on within the ``$BOSS_SPECTRO_REDUX/$RUN2D`` of the previous RUN2D version will supply the list of manually edited files + + :: + + grep -i "manual T # Manually edited plan file (T: True, F: False)" */spPlan2d* fields/*/*/spPlan2d* + + +build fibermap files (*optional but recommended*) +""""""""""""""""""""""""""""""""""""""""""""""""" +During observations confSummary (FPS) or plPlugMapM (plates) files are created that map the targets to the BOSS spectrograph fibers. This step (:ref:`readfibermaps`; :ref:`slurm_readfibermap`) reads the two types of files, converts them to a uniform format, and adds additional meta data (either from files or the SDSS5 internal database). If this step is skipped then they will be built with redux from uubatchpbs, but due to db connection limits it works better to prerun them. + +.. note:: + if you are rerunning the pipeline of released data, you are encouraged to download the spfibermap files from the released data as this step uses the internal SDSSV Database. + +:: + + slurm_readfibermap --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --ppn 32 --apo + slurm_readfibermap --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --ppn 32 --lco + +build spTraceTab files +"""""""""""""""""""""" +In the FPS operations era of SDSSV, a large emphasis was put on minimizing overheads. As part of this effort, the number of calibration frames has been reduced. In order to ensure proper tracing of the spectra, in light of observered flexure, the arc frames taken with each field are correlated with the arcs taken concurrently with trace flats at the start of evening observations. This step (:ref:`slurm_spTrace`) builds plan files of the calibration frames, traces the flat, and then builds the trace table (spTraceTab) files that are used by the pipelines inplace of the raw flat traces. :: + + + spplan_trace --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --mjd_plans --mjdstart 59560 --apo --logfile apo_trace_plan.log + spplan_trace --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --mjd_plans --mjdstart 60187 --lco --logfile lco_trace_plan.log + + slurm_spTrace --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --mjdstart 59560 --apo --skip_plan + slurm_spTrace --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --mjdstart 60187 --lco --skip_plan + +Run Daily Coadd +""""""""""""""" +This step (:ref:`uubatchpbs`) takes the plan files built by :ref:`spplan` and builds the redux-field-mjd script files. It then (if running at Utah) submits these redux-field-mjd scripts to the slurm queue. These scripts produce all of the field-mjd files. :: + + uubatchpbs --sdssv --obs apo --walltime "335:00:00" --nodes 7 --ppn 64 --merge3d + uubatchpbs --sdssv --obs lco --walltime "335:00:00" --nodes 7 --ppn 64 --merge3d + +Build Daily Summary Files +""""""""""""""""""""""""" +The final step of the pipeline is to take the individual field-mjd summary files and merge them in to final summary files. + +:: + + slurm_Summary --module bhm/|idlspec2d_version| --full --walltime "335:00:00" + +Field Epoch Coadds +^^^^^^^^^^^^^^^^^^ +build the spplan files +"""""""""""""""""""""" +Due to the nature of scheduling, weather, and engineering constraints, epochs are often split over several nights. In plate operations the epochs were typically defined by a single plugging of plate (with some additional constrains for specialed fields such as the RM fields). In the FPS operations, the epochs have a much more complicated defintion that rely on the cadences defined in the SDSSV internal database, where an epoch is defined by a set of designs with a defined maximum length between the first and last design. This step (:ref:`spplan_epoch`) determines the exposures within an epoch and builds a plan file detailing the exposures to combine. + +.. note:: + If you are rerunning the pipeline of released data, you are encouraged to download the spPlancombepoch files from the released data as this step uses the internal SDSSV Database. + +:: + + spplan_epoch --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --sdssv --apo --abandoned --logfile apo_epoch.log + spplan_epoch --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --sdssv --lco --abandoned --logfile lco_epoch.log + +.. note:: + If the run is being done for an IPL/DR Freeze include the "--started" flag to include epochs that have been started but not completed + +:: + + spplan_epoch --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --sdssv --apo --abandoned --logfile apo_epoch.log --started + spplan_epoch --topdir $BOSS_SPECTRO_REDUX --run2d $RUN2D --sdssv --lco --abandoned --logfile lco_epoch.log --started + + +Run the epoch Coadd +""""""""""""""""""" +This step (:ref:`uubatchpbs`) takes the plan files built by :ref:`spplan_epoch` and builds the redux-field-mjd script files. It then (if running at Utah) submits these redux-field-mjd scripts to the slurm queue. These scripts produce all of the field-mjd files. The biggest difference between this and the daily version, is that the epoch redux scripts skip the initial extraction and calibration of the individual frames and uses those produced by the daily reduction. :: + + uubatchpbs --sdssv --walltime "335:00:00" --epoch --obs lco --nodes 5 --ppn 64 + uubatchpbs --sdssv --walltime "335:00:00" --epoch --obs apo --nodes 5 --ppn 64 + +Build Epoch Summary Files +""""""""""""""""""""""""" +The final step of the epoch pipeline is to take the individual field-mjd epoch summary files and merge them in to final summary files. + +:: + + slurm_Summary --module bhm/|idlspec2d_version| --full --epoch --walltime "335:00:00" + +Custom Coadds (eg. "allepoch") +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +In SDSSV the variety of science programs (often sharing the same designs) required the development of an addition type of coadded spectra. In DR18 (v6_0_4), an early implementation of this was produced for the eFeds plates, where all of these plates, irregardless of the field centers and mjd were coadded together by running them through the full pipeline. In v6_1_1+ this strategy received a significant overhaul. Instead of reprocessing full plates from the start, we focus the effort on individual targets matching certain criteria and use the intermediate daily *spSpec* files (which includes the coadds of each each target on an exposure level) and produces an analogous to the spField files called spFullsky (because the original fields are not maintained). These files are then run through the 1d analysis and post production steps. + +Managing the schema +""""""""""""""""""" +This step (:ref:`manage_coadd_Schema`) is to build the coadd schema model for the custom coadds. :: + + manage_coadd_Schema --name allepoch --DR -r -c '*spiders*' '*bhm_gua*' '*bhm_csc*' '*mwm_erosita*' '*bhm_colr_galaxies*' -a + +build the spplan files +"""""""""""""""""""""" +Due to the nature of the FPS field designs, and the different requirements of different science programs, some coadding is needed on a target level. This step (:ref:`spplan_target`) uses the daily run summary file to determine the field and mjds of all observations of the selected targets, with the targets and cadences defined by the schema files (see :ref:`manage_coadd_Schema`). It then builds the a target level plan file. The coadded "MJD" is defined as the final observed MJD of each target and targets with the same "MJD" are grouped together for processing and analysis. If a "MJD" has less then 10 targets, they are grouped with the next largest MJD for operational efficiency. :: + + spplan_target --batch --DR --logfile lco_target_coadd_60280.log --lco + spplan_target --batch --DR --logfile apo_target_coadd_60280.log --apo + +Build the spFullSky files +""""""""""""""""""""""""" +This step (:ref:`uubatchpbs`), similarly to the daily and epoch coadds, produces the redux script files and runs them. However, for the Custom Coadds, it initially only produces the spFullSky files, with the remaining steps run in the next step. :: + + uubatchpbs --sdssv --obs lco --nodes 1 --custom allepoch --allsky --coadd_only + uubatchpbs --sdssv --obs apo --nodes 1 --custom allepoch --allsky --coadd_only + +run 1d analysis and post processing steps +""""""""""""""""""""""""""""""""""""""""" +This step (:ref:`uubatchpbs`), produces the redux script files and runs them for the 1D analysis and post processing steps. :: + + uubatchpbs --sdssv --obs lco --nodes 2 --custom allepoch --allsky --1dpost + uubatchpbs --sdssv --obs apo --nodes 1 --custom allepoch --allsky --1dpost + +Build Custom Coadd Summary Files +"""""""""""""""""""""""""""""""" +The final step of the epoch pipeline is to take the individual Custom Coadded MJD summary files and merge them in to final summary files. + +:: + + slurm_Summary --module bhm/|idlspec2d_version| --full --custom allepoch --walltime "335:00:00" diff --git a/docs/sphinx/conf.py b/docs/sphinx/conf.py new file mode 100644 index 000000000..dde605c68 --- /dev/null +++ b/docs/sphinx/conf.py @@ -0,0 +1,417 @@ +# -*- coding: utf-8 -*- +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +# type: ignore + +import os +import sys +from pkg_resources import parse_version + + +try: + from boss_drp import __version__ +except ModuleNotFoundError: + from sdsstools import get_package_version + __version__ = get_package_version(__file__, 'boss_drp') or 'dev' + + +# Are we building in RTD? +on_rtd = os.environ.get('READTHEDOCS') == 'True' + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinx.ext.autosummary", + "sphinx.ext.todo", + "sphinx.ext.viewcode", + "sphinx.ext.mathjax", + "sphinx.ext.intersphinx", + "sphinx_click", + "sphinx-jsonschema", + #"myst_parser", + "sphinx_copybutton", +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# source_parsers = {'.md': 'recommonmark.parser.CommonMarkParser'} +source_suffix = ['.rst', '.md'] +# source_suffix = '.rst' + +# source_parsers = { +# '.md': 'recommonmark.parser.CommonMarkParser', +# } + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'IDLSPEC2D' +copyright = u'2024, SDSS Collaboration' +author = 'Sean Morrison, Hector Ibarra, Yue Shen, Jon Holtzmann' +author = author+' and SDSS-I,-II,-III,-IV IDLSPEC2D Pipeline Teams' +#author = u"""Sean Morrison and Hector Ibarra, Yue Shen, Jon Holtzman, Joel Brownstein, +# David Schlegel, Kyle Dawson, +# Julian Bautista, Scott Burles, Matthew Olmstead, +# Vivek M., Christy Tremonti, Mike Blanton, +# W. Landsman, Nikhil Padmanabhan, Doug Finkbeiner, +# Adam Bolton, A. Kim,Erin Scott Sheldon?, +# David Hogg, A. West, Mariangela Bernardi, +# Daniel Eisenstein, C. Steinhardt, Julien Guy, +# Yiping Shu, J. Richards, Benjamin Alan Weaver, +# Daniel Margala, Gary Kushner, et al.""" + + +# The short X.Y version. +try: + version = parse_version(__version__).base_version +except: + try: + if __version__[0] == 'v': + version = 'v'+parse_version(__version__.replace('_','.')).base_version.replace('.','_') + else: + version = parse_version(__version__.replace('_','.')).base_version.replace('.','_') + except: + version = __version__ +# The full version, including alpha/beta/rc tags. +release = __version__ + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = "en" + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This patterns also effect to html_static_path and html_extra_path + +if 'html' in sys.argv and on_rtd: + tags.add('nosos') + +exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store'] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +default_role = 'py:obj' + +# If true, '()' will be appended to :func: etc. cross-reference text. +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +# show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +# modindex_common_prefix = [] + +# If true, keep warnings as "system message" paragraphs in the built documents. +# keep_warnings = False + +# If true, `todo` and `todoList` produce output, else they produce nothing. +todo_include_todos = False + +# Intersphinx mappings +intersphinx_mapping = { + "python": ("https://docs.python.org/", None), + "numpy": ("http://docs.scipy.org/doc/numpy/", None), + "clu": ("http://clu.readthedocs.io/en/latest/", None), + "archon": ("http://sdss-archon.readthedocs.io/en/latest/", None), +} + +autodoc_mock_imports = ["_tkinter"] +autodoc_member_order = "groupwise" +autodoc_typehints = "description" + +napoleon_use_rtype = False +napoleon_use_ivar = True + +copybutton_prompt_text = r">>> |\$ " +copybutton_prompt_is_regexp = True + +rst_epilog = f""" +.. |numpy_array| replace:: Numpy array +.. |HDUList| replace:: :class:`~astropy.io.fits.HDUList` +.. |idlspec2d_version| replace:: {__version__} +.. |SOS_user| replace:: sdss5 +.. |SOS_HOST| replace:: sdss5-bhm +.. |Contact| replace:: Sean Morrison +""" + + + + +def ultimateReplace(app, docname, source): + result = source[0] + for key in app.config.ultimate_replacements: + result = result.replace(key, app.config.ultimate_replacements[key]) + source[0] = result + +ultimate_replacements = { + "|idlspec2d_version|" : __version__, + "|SOS_user|" : 'sdss5', + "|SOS_HOST|" : 'sdss5-bhm' +} + +# The registration function +def setup_sidebarTOC(app, pagename, templatename, context, doctree): + # The template function + def sidebarTOC(context: Dict[str, Any]) -> str: + # The navigation tree, generated from the sphinx-provided ToC tree. + if "toctree" in context: + toctree = context["toctree"] + toctree_html = toctree( + collapse=False, + titles_only=True, + maxdepth=-1, + includehidden=False, + ) + else: + toctree_html = "" + print(toctree_html) + toctree_html = toctree_html.split('\n') + if 'nosos' in tags: + toctree_html = [x for x in toctree_html if 'sos.html' not in x] + seen = set() + unique_lst = [] + last = '' + for item in toctree_html: + print(item) + if item not in seen: + unique_lst.append(item) + if item not in ['
      ','
    ','
      ']: + seen.add(item) + elif '
        ' in last or '
          ' in last: + unique_lst = unique_lst[:-2] + last = item + toctree_html = '\n'.join(unique_lst) + print(toctree_html) + return toctree_html + context['sidebarTOC'] = sidebarTOC(context) + + +def setup(app): + app.add_config_value('ultimate_replacements', {}, True) + app.connect('source-read', ultimateReplace) + app.connect("html-page-context", setup_sidebarTOC) + + +highlight_options = {'stripall': True} + + +# -- Options for HTML output ---------------------------------------------- + +html_css_files = [] + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +sphinx_template = 'furo' +if sphinx_template == 'sphinx-bootstrap': + import sphinx_bootstrap_theme + + + html_theme = 'bootstrap' + + html_sidebars = {} + + # Theme options are theme-specific and customize the look and feel of a theme + # further. For a list of options available for each theme, see the + # documentation. + html_theme_options = { + # Navigation bar title. (Default: ``project`` value) + 'navbar_title': "SDSS: {0}".format(project), + + # Tab name for entire site. (Default: "Site") + 'navbar_site_name': "Site", + + # A list of tuples containing pages or urls to link to. + # Valid tuples should be in the following forms: + # (name, page) # a link to a page + # (name, "/aa/bb", 1) # a link to an arbitrary relative url + # (name, "http://example.com", True) # arbitrary absolute url + # Note the "1" or "True" value above as the third argument to indicate + # an arbitrary url. + 'navbar_links': [ + ], + + # Render the next and previous page links in navbar. (Default: true) + 'navbar_sidebarrel': False, + + # Render the current pages TOC in the navbar. (Default: true) + 'navbar_pagenav': False, + + # Tab name for the current pages TOC. (Default: "Page") + 'navbar_pagenav_name': "Page", + + # Global TOC depth for "site" navbar tab. (Default: 1) + # Switching to -1 shows all levels. + 'globaltoc_depth': 2, + + # Include hidden TOCs in Site navbar? + # + # Note: If this is "false", you cannot have mixed ``:hidden:`` and + # non-hidden ``toctree`` directives in the same page, or else the build + # will break. + # + # Values: "true" (default) or "false" + 'globaltoc_includehidden': "true", + + # HTML navbar class (Default: "navbar") to attach to
          element. + # For black navbar, do "navbar navbar-inverse" + 'navbar_class': "navbar", + + # Fix navigation bar to top of page? + # Values: "true" (default) or "false" + 'navbar_fixed_top': "true", + + # Location of link to source. + # Options are "nav" (default), "footer" or anything else to exclude. + 'source_link_position': "", + + # Bootswatch (http://bootswatch.com/) theme. + # + # Options are nothing (default) or the name of a valid theme + # such as "amelia" or "cosmo". + 'bootswatch_theme': "paper", + + # Choose Bootstrap version. + # Values: "3" (default) or "2" (in quotes) + 'bootstrap_version': "3", + } + + # Add any paths that contain custom themes here, relative to this directory. + html_theme_path = sphinx_bootstrap_theme.get_html_theme_path() + + html_logo = '_static/sdssv_logo_small.png' + + html_css_files += ["custom_bootstrap.css"] + + html_sidebars = {'**': ['localtoc.html']} + +elif sphinx_template == 'alabaster': + + html_theme = 'alabaster' + + html_theme_options = { + 'logo': 'sdssv_logo.png', + 'github_user': 'sdss', + 'github_repo': project, + 'github_button': True, + 'github_type': 'star', + 'sidebar_collapse': True, + 'page_width': '80%' + } + + html_sidebars = { + '**': [ + 'about.html', + 'navigation.html', + 'relations.html', + 'searchbox.html', + ] + } + + html_css_files += ["custom.css"] +elif sphinx_template == 'furo': + html_theme = "furo" +html_title = "{0}'s Documentation".format(project) +html_logo = "_static/sdssv_logo.png" +html_favicon = "./_static/favicon_sdssv.ico" + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". + +# See https://github.com/rtfd/readthedocs.org/issues/1776 for why we do this +if on_rtd: + html_static_path = [] +else: + html_static_path = ["_static"] + + +# -- Options for HTMLHelp output ------------------------------------------ + +# Output file base name for HTML help builder. +htmlhelp_basename = "{0}pdoc".format("idlspec2d") + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + ( + master_doc, + "{0}.tex".format(project), + "{0} Documentation".format(project), + #author.replace(', ', '\\and ').replace(' and ', '\\and and '), + author.replace(' and ', '\\and and '), + "manual", + ), +] + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [(master_doc, project, "{0} Documentation".format(project), [author], 1)] + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ( + master_doc, + project, + "{0} Documentation".format(project), + author, + project, + "One line description of project.", + "Miscellaneous", + ), +] diff --git a/docs/sphinx/daily.rst b/docs/sphinx/daily.rst new file mode 100644 index 000000000..b9f703f42 --- /dev/null +++ b/docs/sphinx/daily.rst @@ -0,0 +1,100 @@ + +Running a BOSS DRP Daily Run +============================ + + +Daily Run +--------- +In addition to running large batches of MJDs in one go, the pipeline is also designed to be run on a daily basis. + +Crontab at Utah +^^^^^^^^^^^^^^^ +The `crontab `_ below has been designed so that two of these tasks can been written to allow for multiple version os the pipeline to be run in parallel (eg Master and |idlspec2d_version|). This is to ensure a stable reduction (only updated with new tags) and a development branch that will contain the leading edge developments, but will not contain a uniform reduction. In this mode, every time :ref:`uurundaily` runs, it checks for a new MJD in the $BOSS_SPECTRO_DATA_N/S directories and if a new mjd exists, it updates the $daily_dir/etc/nextmjd.par file and starts run that mjd through the full pipeline. The numbers and asterisk, in the crontab below, before the command are when the script will run: + +============ ===================== +field allowed values +============ ===================== +minute 0-59 +hour 0-23 +day of month 1-31 +month 1-12 +day of week 0-7 (0 or 7 is Sunday +============ ===================== + +.. admonition:: Master/main Daily Run + + :: + + IDLSPEC2D_BASE="/uufs/chpc.utah.edu/common/home/sdss50/software/git/sdss/idlspec2d/" + TMOD="master" + 0,30 * * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/$TMOD "uurundaily --apo --daily" + 5,35 * * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/$TMOD "uurundaily --lco --daily" + 0 1 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/$TMOD "slurm_Summary --defaults" + 3 * * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/$TMOD "daily_log" + 0 22 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronplot_QA.bash bhm/$TMOD -n + 0 20 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronplot_QA.bash bhm/$TMOD -l -n + + +.. admonition:: Tagged Daily Run + + :: + + IDLSPEC2D_BASE="/uufs/chpc.utah.edu/common/home/sdss50/software/git/sdss/idlspec2d/" + TMOD="|idlspec2d_version|" + 0,30 * * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/$TMOD "uurundaily --apo --tagged" + 5,35 * * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/$TMOD "uurundaily --lco --tagged" + 0 1 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/$TMOD "slurm_Summary --defaults" + 3 * * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/$TMOD "daily_log" + 0 22 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronplot_QA.bash bhm/$TMOD -n + 0 20 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronplot_QA.bash bhm/$TMOD -l -n + + +.. admonition:: Development Daily Run + + :: + + IDLSPEC2D_BASE="/uufs/chpc.utah.edu/common/home/sdss50/software/git/sdss/idlspec2d/" + TMOD="|idlspec2d_version|_alpha" + 0,30 * * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash work/$TMOD "uurundaily --apo --dev" + 5,35 * * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash work/$TMOD "uurundaily --lco --dev" + 0 1 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash work/$TMOD "slurm_Summary --defaults" + 3 * * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash work/$TMOD "daily_log" + 0 20 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronplot_QA.bash work/$TMOD -n + 0 20 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronplot_QA.bash work/$TMOD -l -n + + +.. admonition:: Run QA Plots for two run2ds at once + + :: + + 55 23 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/|idlspec2d_version| "plot_qa --run2d master |idlspec2d_version| --mjds_low 60403 None --mjds_high None 60402 --lco" + 25 20 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/|idlspec2d_version| "plot_qa --run2d master |idlspec2d_version| --mjds_low 60403 None --mjds_high None 60402 --lco --html" + 35 22 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/|idlspec2d_version| "plot_qa --run2d master |idlspec2d_version| --mjds_low 60447 None --mjds_high None 60446" + 30 23 * * * $IDLSPEC2D_BASE/$TRUN2D/bin/cronrun.bash bhm/|idlspec2d_version| "plot_qa --run2d master |idlspec2d_version| --mjds_low 60447 None --mjds_high None 60446 --html" + + + +Manual Using uurundaily at Utah +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +To manually use (:ref:`uurundaily`) (which runs the full pipeline end-to-end), one of versions of the command below can be used. The ``--daily``, ``--tagged``, and ``--dev`` tags can also be used, but the examples below give the explicite options. + +Run for any new MJDS (if a module/paths are preloaded) +"""""""""""""""""""""""""""""""""""""""""""""""""""""" + +:: + + uurundaily --lco --module bhm/|idlspec2d_version| --fast --merge3d --no_dither --monitor + uurundaily --apo --module bhm/|idlspec2d_version| --fast --merge3d --no_dither --monitor + +Run for a set MJD (if a module/paths are preloaded) +"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" + +.. note:: + This method does not update $daily_dir/etc/nextmjd.par + +:: + + uurundaily --lco --module bhm/|idlspec2d_version| --fast --merge3d --no_dither --monitor --mjd 60000 + uurundaily --apo --module bhm/|idlspec2d_version| --fast --merge3d --no_dither --monitor --mjd 60000 + + diff --git a/docs/sphinx/doc.rst b/docs/sphinx/doc.rst new file mode 100644 index 000000000..b6b3e8be3 --- /dev/null +++ b/docs/sphinx/doc.rst @@ -0,0 +1,1606 @@ +:tocdepth: 2 + +.. highlight:: none + +Full Command Documention +======================== +Documented below are the primary commands used to run the BOSS Data Reduction Pipeline. However, there are numerous other routines included in this package, which are called by these commands and have their own internal documentation. + +Full Bash and Python Command Usage +---------------------------------- + +.. contents:: + :depth: 3 + :local: + :class: this-will-duplicate-information-and-it-is-still-useful-here + :backlinks: none + + +.. _BOSS_log: + +BOSS_log +^^^^^^^^ +:: + + usage: BOSS_log [-h] [-m MJD] [-y] [-o {apo,lco}] [-l] [--new_ref] [-c] [-r] + [-e] [-s] + + Build BOSS Exposure Log + + optional arguments: + -h, --help show this help message and exit + -m MJD, --mjd MJD MJD + -y, --yesterday current mjd-1 + -o {apo,lco}, --observatory {apo,lco}, --obs {apo,lco} + Manually set observatory + -l, --long Long/detailed version of log + --new_ref Calculate new reference values in fratio and w_shift + and show in place of fratio and w_shift (edit to code + to save new value is required) + -c, --hide_hart, --hide_hartmann + Hide cleaned version of Hartmann Logs as a table + -r, --hart_raw Print raw form (instead of table form) of Hartmann + Logs + -e, --hide_error Hide SOS Error and Workings + -s, --hide_summary Hide data summary table + +.. _SOS: + +SOS +^^^ +:: + + usage: SOS [-h] (-r | -b | -j) (-c | -t | -d) [-e EXP] [-m [MJD [MJD ...]]] + [--nodb] [--no_gz] [--no_reject] [--clobber_fibermap] + [--no_sdssv_sn2] [--no_sn2_15] [-n] [-o] [-v] + + SOS process for reducing BOSS data on the Moutain + + optional arguments: + -h, --help show this help message and exit + -r, --red Red Camera Process + -b, --blue Blue Camera Process + -j, --joint Both Camera Processes + -c, --catchup Run Catchup on the night or (MJD) + -t, --redoMode Save outputs of MJD or exposure to sosredo + -d, --test Save outputs and logs to sosredo/dev + -e EXP, --exp EXP exposure id (or range of exp id 500-510) (with or + without leading zeros) + -m [MJD [MJD ...]], --mjd [MJD [MJD ...]] + MJD + --nodb skip opsdb load + --no_gz Overrides the requirement for '.gz' compressed files + (experimental) + --no_reject Overrides the Calibration rejection (use with caution) + --clobber_fibermap, -f + Clobbers the existing spfibermap files + --no_sdssv_sn2 Skip reporting a second set of SN2 values with updated + fit parameters + --no_sn2_15 Skip reporting a set of SN2 values with a fiducial mag + of 15 + -n, --no_arc2trace Skip Utilizing arc2trace refinements + -o, --forcea2t Force arc2trace for all fields (even if flat exists + for field) + -v, --verbose prints the only (or red if joint) active SOS process + to terminal + +.. _boss_arcs_to_traces: + +boss_arcs_to_traces +^^^^^^^^^^^^^^^^^^^ +:: + + Traceback (most recent call last): + File "/Users/smorrison/Documents/Scripts/SDSSV_idlspec2D/TraceTweakClean/python/boss_drp/../../bin/boss_arcs_to_traces", line 7, in + from pyvista import boss + ModuleNotFoundError: No module named 'pyvista' + +.. _build_combined_html: + +build_combined_html +^^^^^^^^^^^^^^^^^^^ +:: + + usage: build_combined_html [-h] [--force] sosdir + + build SOS combine index page + + positional arguments: + sosdir Base SOS output directory + + optional arguments: + -h, --help show this help message and exit + --force Force update + +.. _cronrun.bash: + +cronrun.bash +^^^^^^^^^^^^ +:: + + usage: cronrun.bash module 'script' + + +.. _daily_log: + +daily_log +^^^^^^^^^ +:: + + usage: daily_log [-h] [--obs OBS [OBS ...]] [--mjd [MJD [MJD ...]]] + [--mjdstart MJDSTART] [--mjdend MJDEND] [--epoch] + [--custom CUSTOM] [--topdir TOPDIR] [--run1d RUN1D] + [--run2d RUN2D] [--email] [--fast] + + Build/load BOSS Pipeline Status Pages + + optional arguments: + -h, --help show this help message and exit + --obs OBS [OBS ...] Observatory for status update + --mjd [MJD [MJD ...]] + Update these MJDs + --mjdstart MJDSTART Starting MJD + --mjdend MJDEND Ending MJD + --epoch Run for epoch Coadds + --custom CUSTOM Name of custom Coadd + --topdir TOPDIR Optional override value for the environment variable + $BOSS_SPECTRO_REDUX + --run1d RUN1D Optional override value for the enviro variable $RUN1D + --run2d RUN2D Optional override value for the enviro variable $RUN2D + --email Send each mjd status as email + --fast Skip updating index until end + +.. _fieldlist: + +fieldlist +^^^^^^^^^ +:: + + usage: fieldlist [-h] [--create] [--topdir TOPDIR] + [--run1d [RUN1D [RUN1D ...]]] [--run2d [RUN2D [RUN2D ...]]] + [--outdir OUTDIR] [--skipcart [SKIPCART [SKIPCART ...]]] + [--epoch] [--basehtml BASEHTML] [--logfile LOGFILE] [--debug] + [--noplot] + + Build/load BOSS Fieldlist + + optional arguments: + -h, --help show this help message and exit + --create, -c Create Fieldlist + --topdir TOPDIR Optional override value for the environment variable + $BOSS_SPECTRO_REDUX + --run1d [RUN1D [RUN1D ...]] + Optional override value for the enviro variable $RUN1D + --run2d [RUN2D [RUN2D ...]] + Optional override value for the enviro variable $RUN2D + --outdir OUTDIR Optional output directory (defaults to topdir/$RUN2D) + --skipcart [SKIPCART [SKIPCART ...]] + Option list of cartridges to skip + --epoch Produce FieldList for epoch coadds + --basehtml BASEHTML html path for figure (defaults to relative from + topdir) + --logfile LOGFILE Manually Set logfile (including path) + --debug Overrides the logger of the simplified error messages + and prints standard python errors + --noplot Skips updating the sky plots + +.. _fieldmerge: + +fieldmerge +^^^^^^^^^^ +:: + + usage: fieldmerge [-h] [--run2d RUN2D] [--indir INDIR] [--skip_line] + [--include_bad] [--legacy] [--skip_specprimary] [--lite] + [--XCSAO] [--field FIELD] [--mjd MJD] [--clobber] [--bkup] + [--verbose] [--logfile LOGFILE] [--epoch] + [--programs [PROGRAMS [PROGRAMS ...]]] + [--datamodel DATAMODEL] [--line_datamodel LINE_DATAMODEL] + [--outroot OUTROOT] [--remerge_fmjd REMERGE_FMJD] + [--remerge_mjd REMERGE_MJD] [--merge_only] [--allsky] + [--custom CUSTOM] [--run1d RUN1D] [--limit LIMIT] + [--ndays MJDSTART] + + Build BOSS spAll Summary File + + optional arguments: + -h, --help show this help message and exit + --run2d RUN2D Optional override value for the enviro variable $RUN2D + --indir INDIR Optional override value for the environment variable + $BOSS_SPECTRO_REDUX + --skip_line skip the generation of spAllLine.fits + --include_bad include bad fields + --legacy Include columns used by SDSS-IV and depreciated in + SDSS-V + --skip_specprimary Skip creation of specprimary and associated columns + --lite Produce lite version of spAll file + --XCSAO Include XCSAO columns + --field FIELD, -f FIELD + Run for a single Field + --mjd MJD, -m MJD Run for a single MJD + --clobber Clobber all spAll-field-mjd files + --bkup Backup existing spAll files + --verbose Log columns not saved + --logfile LOGFILE Manually set logfile + --epoch Produce spAll for epoch coadds + --programs [PROGRAMS [PROGRAMS ...]] + List of programs to include + --datamodel DATAMODEL + Supply a spAll datamodel file (defaults to + $IDLSPEC2D/datamodel/spall_dm.par + --line_datamodel LINE_DATAMODEL + Supply a spline datamodel file (defaults to + $IDLSPEC2D/datamodel/spzline_dm.par + --outroot OUTROOT Path and root of filename for output (defaults to + spectra/full or summary) + --remerge_fmjd REMERGE_FMJD, -r REMERGE_FMJD + Field-MJD to replace in spAll + --remerge_mjd REMERGE_MJD + MJD to replace in spAll + --merge_only, -o Skip Building new spAll-Field-MJD files and just merge + existing + --allsky Build spAll for Allsky Custom Coadd + --custom CUSTOM Name of Custom Coadd + --run1d RUN1D Optional override value for the enviro variable $RUN1D + (only for custom allsky coadds) + --limit LIMIT Limit number of Field-MJD spAll files to read before + save + --ndays MJDSTART Limit update to last ndays + +.. _filecheck: + +filecheck +^^^^^^^^^ +:: + + usage: filecheck [-h] cmd file + + Check File (uncompressed or gz) favor/instrument/quality + + science: + return "true" if the fits file is a science frame. This + is determined by flavor=science in the header. If flavor + is not in the header, "false" is returned. + + test: + return "true" if the fits file is a test frame. This is + determined by quality=test in the header. If quality + is not in the header, "false" is returned + + excellent: + return "true" if the fits file is a excellent frame. This is + determined by quality=excellent in the header. If quality + is not in the header, "true" is returned + + boss: + return "true" if the plPlugMapM file is a boss frame. + this is determined by instrument=boss in the header. + If instrument is not in the header, "false" is returned. + + + positional arguments: + cmd file check command + file fits file + + optional arguments: + -h, --help show this help message and exit + +.. _fluxcorr_prior: + +fluxcorr_prior +^^^^^^^^^^^^^^ +:: + + usage: fluxcorr_prior [-h] [--xythrucorr] planfile + + Try solving with a prior that fluxcorr = 1 + + positional arguments: + planfile name of the plan file + + optional arguments: + -h, --help show this help message and exit + --xythrucorr Apply XY throughput Correction + +.. _idlspec2d_version: + +idlspec2d_version +^^^^^^^^^^^^^^^^^ +:: + + usage: idlspec2d_version [-h] + + Prints the IDLspec2D BOSS_DRP version + + optional arguments: + -h, --help show this help message and exit + +.. _loadSN2Value: + +loadSN2Value +^^^^^^^^^^^^ +:: + + usage: loadSN2Value [-h] [-v] [-u] [--sdssv_sn2] fits confSum + + Load SOS SN2 values into OpsDB + + positional arguments: + fits The fits file is the science frame output from sos-reduce + confSum confSummary-file + + optional arguments: + -h, --help show this help message and exit + -v, --verbose verbose + -u, --update update (An error will occur if the exposure has already been + processed, unless set) + --sdssv_sn2 Load sdssv_sn2 + +.. _manage_coadd_Schema: + +manage_coadd_Schema +^^^^^^^^^^^^^^^^^^^ +:: + + usage: manage_coadd_Schema [-h] [--coaddfile COADDFILE] [--topdir TOPDIR] + [--run2d RUN2D] [--name NAME] [--DR] [--rerun1d] + [--active] [--carton [CARTON [CARTON ...]]] + [--SDSSIDS [SDSSIDS [SDSSIDS ...]]] + [--program [PROGRAM [PROGRAM ...]]] + [--legacy [LEGACY [LEGACY ...]]] [--use_catid] + [--use_firstcarton] [--cadence CADENCE] [--show] + [--mjd [MJD [MJD ...]]] + + Manage Custom Coadds + + optional arguments: + -h, --help show this help message and exit + --coaddfile COADDFILE, -f COADDFILE + File to store Coadding Schema (Default: + {topdir}/{run2d}/fields/SDSSV_BHM_COADDS.par) + --topdir TOPDIR Override value for the environment variable + $BOSS_SPECTRO_REDUX. + --run2d RUN2D Override value for the environment variable $RUN2D + --name NAME Name of Custom Coadd + --DR DR/IPL Coadding + --rerun1d, -r Provides flag for coadd to be rerun though 1D analysis + --active, -a Activate (or deactivate) a Coadding Schema + --carton [CARTON [CARTON ...]], -c [CARTON [CARTON ...]] + list of cartons + --SDSSIDS [SDSSIDS [SDSSIDS ...]], -i [SDSSIDS [SDSSIDS ...]] + list of SDSS_IDS (or CatalogIDs if use_catid is set) + --program [PROGRAM [PROGRAM ...]], -p [PROGRAM [PROGRAM ...]] + list of programs + --legacy [LEGACY [LEGACY ...]], -l [LEGACY [LEGACY ...]] + list of Legacy Tags to include + --use_catid, -u Use CatalogIDs rather then SDSS_IDs + --use_firstcarton Use Firstcarton only for carton match (dont look at + db) + --cadence CADENCE, -t CADENCE + Number of days between coadd epochs + --show, -s Show Configurations + --mjd [MJD [MJD ...]] + Use data from these MJDs. + +.. _parse_runtime: + +parse_runtime +^^^^^^^^^^^^^ +:: + + usage: parse_runtime [-h] [-a] [-s] file_path [file_path ...] + + Process log file to calculate elapsed times for SOS. + + positional arguments: + file_path Path to the log file + + optional arguments: + -h, --help show this help message and exit + -a, --all Combine all daily logs of this format + -s, --stamp Add Date stamp to output file + +.. _plot_qa: + +plot_qa +^^^^^^^ +:: + + usage: plot_qa [-h] [-r [RUN2D [RUN2D ...]]] [-t [TEST [TEST ...]]] + [--test_path TEST_PATH] [--mjds_low [MJDS_LOW [MJDS_LOW ...]]] + [--mjds_high [MJDS_HIGH [MJDS_HIGH ...]]] [--clobber_lists] + [--lco] [--publish] [-e] + + Plot QA + + optional arguments: + -h, --help show this help message and exit + -r [RUN2D [RUN2D ...]], --run2d [RUN2D [RUN2D ...]] + List of run2ds + -t [TEST [TEST ...]], --test [TEST [TEST ...]] + List of True/False test run2d (corresponding to run2d) + --test_path TEST_PATH + test Run2d path modification + --mjds_low [MJDS_LOW [MJDS_LOW ...]] + List of mjd lower limits - use None for no limit + (corresponding to run2d) + --mjds_high [MJDS_HIGH [MJDS_HIGH ...]] + List of mjd upper limits - use None for no limit + (corresponding to run2d) + --clobber_lists Clobber list of fieldIDs + --lco Flag for LCO vs APO + --publish create publication version of plot + -e, --epoch produce plots for epoch coadds + +.. _read_sos: + +read_sos +^^^^^^^^ +:: + + usage: read_sos [-h] [--exp EXP] [--nocopy] directory mjd + + Create Fiber info Summary for SOS + + positional arguments: + directory SOS Directory + mjd mjd + + optional arguments: + -h, --help show this help message and exit + --exp EXP, -e EXP Exposure Name + --nocopy, -n Prevent copy to combined Directory + +.. _readfibermaps: + +readfibermaps +^^^^^^^^^^^^^ +:: + + usage: readfibermaps [-h] [-p SPPLAN2D] [--topdir TOPDIR] [-c] [--fast] + [--datamodel DATAMODEL] [-s] [--release RELEASE] + [--remote] [--dr19] [--confSummary CONFSUMMARY] + [--ccd {b2,r2,b1,r1}] [--mjd MJD] [--log] + + Produces spfibermap file corresponding to a spplan2d (or single confSummary + file for SOS) + + optional arguments: + -h, --help show this help message and exit + -p SPPLAN2D, --spplan2d SPPLAN2D + spplan2d file for idlspec2d run + --topdir TOPDIR Alternative output directory (defaults to location of + spplan2d file or /data/boss/sos/{mjd} for SOS) + -c, --clobber overwrites previous spfibermap file + --fast When using --no_db, streamlines process and only gets + parallax from MOS target files + --datamodel DATAMODEL + Supply a datamodel file (defaults to + $IDLSPEC2D/datamodel/spfibermap_dm.par or + $IDLSPEC2D/datamodel/spfibermap_sos_dm.par for SOS) + -s, --SOS produces spfibermap for SOS + --release RELEASE sdss_access data release (defaults to sdsswork), + required if you do not have proprietary access, + otherwise see https://sdss- + access.readthedocs.io/en/latest/auth.html#auth + --remote allow for remote access to data using sdss-access + --dr19 Limit targeting flags to DR19 cartons + + SOS: + Options of use with SOS only + + --confSummary CONFSUMMARY + confSummary file for SOS (required for with --SOS) + --ccd {b2,r2,b1,r1} CCD for SOS + --mjd MJD MJD of observation + --log creates log file in topdir + +.. _run_PyXCSAO: + +run_PyXCSAO +^^^^^^^^^^^ +:: + + WARNING: pyxcsao is not installed + usage: run_PyXCSAO [-h] [--run1d RUN1D] [--epoch] fitsfile + + Runs pyXCSAO to determine RVs + + positional arguments: + fitsfile fits file + + optional arguments: + -h, --help show this help message and exit + --run1d RUN1D, -r RUN1D + run1d name + --epoch run for epoch Coadds + +.. _sdR_hdrfix: + +sdR_hdrfix +^^^^^^^^^^ +:: + + usage: sdR_hdrfix [-h] [--mjd MJD] --obs {APO,LCO} [--clobber] + [--cameras {b1,b2,r1,r2,??}] [--bad] [--test] + [--FF {0,1} {0,1} {0,1} {0,1}] + [--FFS {0,1} {0,1} {0,1} {0,1} {0,1} {0,1} {0,1} {0,1}] + [--NE {0,1} {0,1} {0,1} {0,1}] + [--HGCD {0,1} {0,1} {0,1} {0,1}] + [--HEAR {0,1} {0,1} {0,1} {0,1}] [--arc] [--flat] + [--hartmann {Out,Right,Left,Closed}] + [--quality {excellent,test,bad}] + [--flavor {bias,dark,flat,arc,science,smear}] + [--exptime EXPTIME] [--tai-beg TAI_BEG] + [--cartid {FPS-S,FPS-N}] [--fieldid FIELDID] + [--confid CONFIGID] [--designid DESIGNID] [--key KEY] + [--value VALUE] + expid + + Create the files used by the pipeline to fix the header meta data of the BOSS + exposures + + positional arguments: + expid Exposure ID + + optional arguments: + -h, --help show this help + message and exit + --mjd MJD, -m MJD mjd of file (default: + latest MJD) + --clobber clobber sdHdrFix file + --cameras {b1,b2,r1,r2,??} Cameras for hdr + update (?? for all + cameras) [default:??] + + Required arguments: + --obs {APO,LCO} Set Observatory + + Optional Quality Update (exclusive) + At current only use if still exposing or don't run SOS after for Science Frames + (skip and note in Night Log (and/or email) if uncertain): + --bad, -b flag as quality=bad + --test, -t flag as quality=test + + Optional lamp/screen keys to Update (1:on, 0:off): + --FF {0,1} {0,1} {0,1} {0,1} Flat Field Lamp + --FFS {0,1} {0,1} {0,1} {0,1} {0,1} {0,1} {0,1} {0,1} Flat Field Screen + --NE {0,1} {0,1} {0,1} {0,1} Ne arc lamp + --HGCD {0,1} {0,1} {0,1} {0,1} HeCd arc Lamp + --HEAR {0,1} {0,1} {0,1} {0,1} HeAr arc Lamp + --arc short cut to set all + relevant arc lamps to + 1 1 1 1 + --flat short cut to set FF = + 1 1 1 1 & FFS = 1 1 1 + 1 1 1 1 1 + --hartmann {Out,Right,Left,Closed} Hartmann Door Status + + Optional Common keys to Update + At current only use if still exposing or don't run SOS after for Science Frames + (skip and note in Night Log (and/or email) if uncertain): + --quality {excellent,test,bad} Set Quality flat of + exposures + + Optional Specialized Keys to Update + At current only use if still exposing or don't run SOS after + (skip and note in Night Log (and/or email) if uncertain): + --flavor {bias,dark,flat,arc,science,smear} Type/Flavor of + exposure + --exptime EXPTIME Exposure length (s) + --tai-beg TAI_BEG Starting time (tai) + of exposure + --cartid {FPS-S,FPS-N} Cartridge Mounted + --fieldid FIELDID FieldID + --confid CONFIGID ConfigureID + --designid DESIGNID DesignID + + Manually update a key + At current only use if still exposing or don't run SOS after + (skip and note in Night Log (and/or email) if uncertain): + --key KEY, -k KEY header keyword to + update (required if + value is set) + --value VALUE, -v VALUE updated header + keyword value + (required if key is + set) + + one or more update options are required + +.. _slurm_Summary: + +slurm_Summary +^^^^^^^^^^^^^ +:: + + usage: slurm_Summary [-h] [--module MODULE] [--topdir TOPDIR] [--run2d RUN2D] + [--run1d RUN1D] [--walltime WALLTIME] [--fast] + [--mem MEM] [--daily] [--epoch] [--custom CUSTOM] + [--full] [--monitor] [--no_submit] [--merge_only] + [--no_fieldlist] [--backup BACKUP] [--limit LIMIT] + [--n_iter N_ITER] [--log2daily] [--email_start] + [--skip_specprimary] [--verbose] + + Create daily field merge slurm job + + optional arguments: + -h, --help show this help message and exit + --module MODULE, -m MODULE + module file to use (ex bhm/master[default] or + bhm/v6_0_9) + --topdir TOPDIR Boss Spectro Redux base directory + --run2d RUN2D Run2d + --run1d RUN1D Run1d + --walltime WALLTIME, -w WALLTIME + Job wall time (format hh:mm:ss) default = "40:00:00" + --fast use fast allocation + --mem MEM memory in bytes + --daily only run if daily run has been run today + --epoch run for the epoch coadds + --custom CUSTOM Name of custom Coadd + --full Use a full cluster node + --monitor Monitor job and send email at completion with the logs + --no_submit Create slurm job but do not submit it + --merge_only Run fieldmerge in merge_only mode + --no_fieldlist Skip Running Fieldlist + --backup BACKUP Number of backups to keep, or None to not create + backup + --limit LIMIT Limit number of new field-mjds to update + --n_iter N_ITER number of iterations of field merge to run + --log2daily Save Logs to $DAILY_DIR/logs/Summary/ + --email_start Send email at start of run + --skip_specprimary Skip building specprimary in fieldmerge + --verbose Run Fieldmerge with verbose + +.. _slurm_readfibermap: + +slurm_readfibermap +^^^^^^^^^^^^^^^^^^ +:: + + usage: slurm_readfibermap [-h] [--module MODULE] [--topdir TOPDIR] + [--run2d RUN2D] [--clobber] [--apo] [--lco] [--dr19] + [--mjd [MJD [MJD ...]]] [--mjdstart MJDSTART] + [--mjdend MJDEND] [--mem_per_cpu MEM_PER_CPU] + [--walltime WALLTIME] [--ppn PPN] + + Create daily field merge slurm job. Without access to the SDSS Slurm package, + it prints the commands for manual execution + + optional arguments: + -h, --help show this help message and exit + --module MODULE, -m MODULE + module file to use (ex bhm/master or bhm/v6_0_9) + --topdir TOPDIR Boss Spectro Redux base directory + --run2d RUN2D Run2d + --clobber Clobber spfibermaps + --apo run apo + --lco run lco + --dr19 Limit targeting flags to DR19 cartons + + Select MJDs: + --mjd [MJD [MJD ...]] + MJD dates to reduce; default="*" + --mjdstart MJDSTART Starting MJD + --mjdend MJDEND Ending MJD + + Slurm Options: + --mem_per_cpu MEM_PER_CPU + Memory allocated per CPU + --walltime WALLTIME Wall time in hours + --ppn PPN Number of processors per node + +.. _slurm_sos: + +slurm_sos +^^^^^^^^^ +:: + + usage: slurm_sos [-h] [--apo] [--lco] [--mjd [MJD [MJD ...]]] + [--mjdstart MJDSTART] [--mjdend MJDEND] [--no_reject] + [--clobber_fibermap] [--no_sdssv_sn2] [-n] [-o] + [--mem_per_cpu MEM_PER_CPU] [--walltime WALLTIME] + [--nodes NODES] [--ppn PPN] [--no_submit] + + Create SOS slurm job. Without access to the SDSS Slurm package, it prints the + commands for manual execution + + optional arguments: + -h, --help show this help message and exit + --apo run apo + --lco run lco + + Select MJDs: + --mjd [MJD [MJD ...]] + MJD dates to reduce; default=Today + --mjdstart MJDSTART Starting MJD + --mjdend MJDEND Ending MJD + + SOS Options: + --no_reject Overrides the Calibration rejection (use with caution) + --clobber_fibermap, -f + Clobbers the existing spfibermap files + --no_sdssv_sn2 Skip reporting a second set of SN2 values with updated + fit parameters + -n, --no_arc2trace Skip Utilizing arc2trace refinements + -o, --forcea2t Force arc2trace for all fields (even if flat exists + for field) + + Slurm Options: + --mem_per_cpu MEM_PER_CPU + Memory allocated per CPU + --walltime WALLTIME Wall time in hours + --nodes NODES Number of nodes to use; default=1 + --ppn PPN Number of processors per node + --no_submit Skip submitting process to queue + +.. _slurm_spTrace: + +slurm_spTrace +^^^^^^^^^^^^^ +:: + + usage: slurm_spTrace [-h] [--module MODULE] [--topdir TOPDIR] [--run2d RUN2D] + [--mjd [MJD [MJD ...]]] [--mjdstart MJDSTART] + [--mjdend MJDEND] [--lco] [--clobber] [--debug] + [--skip_plan] [--nodes NODES] + + Create spTrace slurm jobs. Without access to the SDSS Slurm package, it prints + the commands for manual execution. + + optional arguments: + -h, --help show this help message and exit + --module MODULE, -m MODULE + module file to use (ex bhm/master or bhm/v6_0_9) + --topdir TOPDIR Boss Spectro Redux base directory + --run2d RUN2D Run2d + --mjd [MJD [MJD ...]] + Use data from these MJDs. + --mjdstart MJDSTART Starting MJD + --mjdend MJDEND Ending MJD + --lco Build Run files for LCO + --clobber Clobber the existing Plan files + --debug Run in debug mode + --skip_plan Skip creating plans and use currently existing plans + --nodes NODES Number of nodes to use to run arc2trace + +.. _sos_command: + +sos_command +^^^^^^^^^^^ +:: + + usage: sos_command -f name -i path -p name -l path -s path -m 00000 [-d -e] + + -f Fits file name + -i Fits file directory path + -p Plugmap file name + -l Plugmap file directory path + -s SOS Directory + -m MJD + + -d Dry run. + -e FPS mode + -a no cal mode + -n no OpsDB upload + -v calculate SN2_v2 (SDSS-V) + + All parameters except -d, -a, and -e are required, FPS mode is set by default. + Normally sos_command will be called by sos_runnerd. + +.. _spSpec_reformat: + +spSpec_reformat +^^^^^^^^^^^^^^^ +:: + + usage: spSpec_reformat [-h] --field FIELD --mjd MJD [--topdir TOPDIR] + [--run2d RUN2D] [--run1d RUN1D] [--custom CUSTOM] + [--plot] [--epoch] [--lsdr10] [--allsky] + + Build Spec Files + + optional arguments: + -h, --help show this help message and exit + --field FIELD, -f FIELD + Run for a single Field + --mjd MJD, -m MJD Run for a single MJD + --topdir TOPDIR Optional override value for the environment variable + $BOSS_SPECTRO_REDUX + --run2d RUN2D Optional override value for the enviro variable $RUN2D + --run1d RUN1D Optional override value for the enviro variable $RUN2D + --custom CUSTOM Name of Custom Coadd schema + --plot, -p Create spec plots + --epoch, -e Run for epoch Coadds + --lsdr10 Include Legacy Survey DR10 links on HTML + --allsky Reformat for Allsky Custom Coadd + +.. _spplan: + +spplan +^^^^^^ +:: + + usage: spplan [-h] [--skip2d] [--skip1d] [--module MODULE] [--topdir TOPDIR] + [--run2d RUN2D] [--lco] [--logfile LOGFILE] [--verbose VERBOSE] + [-c] [--release RELEASE] [--remote] [--override_manual] + [--mjd [MJD [MJD ...]]] [--mjdstart MJDSTART] [--mjdend MJDEND] + [--field [FIELD [FIELD ...]]] [--fieldstart FIELDSTART] + [--fieldend FIELDEND] [--legacy] [--plates] [--fps] [--sdssv] + [--no_commissioning] [--no_dither] [--matched_flats] + [--nomatched_arcs] [--minexp MINEXP] [--single_flat] + [--multiple_arc] [--manual_noarc] [--plate_epoch] [--quick] + + Produce the spPlan2d and spPlancomb files for the pipeline run + + optional arguments: + -h, --help show this help message and exit + + General: + General Setup Options + + --skip2d Skip spplan2d + --skip1d Skip spplan1d + --module MODULE Module file to load for run + --topdir TOPDIR Base run2d directory to override module or + environmental variable + --run2d RUN2D Run2d to override module or environmental variable + --lco Build Run files for LCO + --logfile LOGFILE Optional logfile (Including path) + --verbose VERBOSE Provide information about nonutlized frames + -c, --clobber overwrites previous plan file + --release RELEASE sdss_access data release (defaults to sdsswork), + required if you do not have proprietary access, + otherwise see https://sdss- + access.readthedocs.io/en/latest/auth.html#auth + --remote allow for remote access to data using sdss-access + --override_manual Override/clobber manually edited plan + + MJD/Field Filtering: + MJD/Field Filtering Options + + --mjd [MJD [MJD ...]] + Use data from these MJDs. + --mjdstart MJDSTART Starting MJD + --mjdend MJDEND Ending MJD + --field [FIELD [FIELD ...]] + Use data from these fields. + --fieldstart FIELDSTART + Starting Field + --fieldend FIELDEND Ending Field + --legacy Include legacy (BOSS/eBOSS) plates + --plates Include SDSS-V plates + --fps Include FPS Fields + --sdssv Include both SDSS-V Fields & Plates + --no_commissioning Exclude SDSS-V FPS Commission Fields + --no_dither Exclude Dither fields + + RUN2D: + spPlan2d Setup Options + + --matched_flats Require Flat from a field/plate + --nomatched_arcs Allow Arc from another field/plate + --minexp MINEXP Min Science Exposures in Plan (default=1) + --single_flat Only find the closest flat calibration frame + --multiple_arc Find all possible arc calibration frames + --manual_noarc if nomatched_arcs is False, builds spplan with + unmatched arcs and mark as manual + + RUN1D: + spPlancomb Setup Options + + --plate_epoch Use a variable max epoch length for plate coadd + --quick Use the list of new spPlan2d as a filter for fields + +.. _spplan_epoch: + +spplan_epoch +^^^^^^^^^^^^ +:: + + usage: spplan_epoch [-h] [--module MODULE] [--topdir TOPDIR] [--run2d RUN2D] + [--run1d RUN1D] [--mjd MJD] [--mjdstart MJDSTART] + [--mjdend MJDEND] [--field FIELD] [--fieldst FIELDSTART] + [--fieldend FIELDEND] [--fps] [--sdssv] [--clobber] + [--minexp MINEXP] [--lco] [--logfile LOGFILE] + [--abandoned] [--started] [--min_epoch_len MIN_EPOCH_LEN] + [--release RELEASE] [--remote] + + Builds the spPlancombepoch files + + optional arguments: + -h, --help show this help message and exit + --module MODULE Module file to load for run + --topdir TOPDIR Override value for the environment variable + $BOSS_SPECTRO_REDUX. + --run2d RUN2D Override value for the environment variable $RUN2D + --run1d RUN1D Override value for the environment variable $RUN1D + --mjd MJD Use data from these MJDs. + --mjdstart MJDSTART Starting MJD + --mjdend MJDEND Ending MJD + --field FIELD Look for the input data files in topdir/fieldid; + default to search all subdirectories. Note that this + need not be integer-valued, but could be for example + '0306_test'. + --fieldst FIELDSTART Starting fieldid + --fieldend FIELDEND Ending fieldid + --fps Only produce epoch coadds for FPS Fields + (Fields>16000) + --sdssv Only produce epoch coadds for SDSS-V Fields + (Fields>15000) + --clobber If set, then over-write conflicting plan files + --minexp MINEXP Set minimum number of Science Frames for plan creation + --lco Create Plans for LCO + --logfile LOGFILE, -l LOGFILE + File for logging + --abandoned Create plans for abandoned epochs + --started Create plans for started epochs (including unfinished) + --min_epoch_len MIN_EPOCH_LEN + minimum length of epoch required to produce plan + --release RELEASE sdss_access data release (defaults to sdsswork), + required if you do not have proprietary access, + otherwise see https://sdss- + access.readthedocs.io/en/latest/auth.html#auth + --remote allow for remote access to data using sdss-access + +.. _spplan_target: + +spplan_target +^^^^^^^^^^^^^ +:: + + usage: spplan_target [-h] (--manual | --batch) [--module MODULE] [--name NAME] + [--coaddfile COADDFILE] [--topdir TOPDIR] [--run2d RUN2D] + [--run1d RUN1D] [--clobber] [--logfile LOGFILE] [--DR] + [--cartons [CARTONS [CARTONS ...]]] + [--catalogids [CATALOGIDS [CATALOGIDS ...]]] + [--program [PROGRAM [PROGRAM ...]]] + [--mjd [MJD [MJD ...]]] [--mjdstart MJDSTART] + [--mjdend MJDEND] [--coadd_mjdstart COADD_MJDSTART] + [--rerun1d] [--use_catid] [--use_firstcarton] [--useDB] + [--lco] [--apo] + + Build CatalogID Combine Plan + + optional arguments: + -h, --help show this help message and exit + --manual Manaully run a Coadd Schema (from coaddfile if only + name is set) + --batch Batch run all active Coadd Schema in batch file + located {topdir}/{run2d}/{name} + --module MODULE Module file to load for run + --name NAME Name of Custom Coadd + --coaddfile COADDFILE + File of store Coadding Schema + --topdir TOPDIR Override value for the environment variable + $BOSS_SPECTRO_REDUX. + --run2d RUN2D Override value for the environment variable $RUN2D + --run1d RUN1D Override value for the environment variable $RUN1D + --clobber If set, then over-write conflicting plan files + --logfile LOGFILE File for logging + --DR DR/IPL Batch Coadding + --cartons [CARTONS [CARTONS ...]] + list of cartons + --catalogids [CATALOGIDS [CATALOGIDS ...]] + list of sdss_ids (or catalogids) + --program [PROGRAM [PROGRAM ...]] + list of programs + --mjd [MJD [MJD ...]] + Use data from these MJDs. + --mjdstart MJDSTART Starting MJD + --mjdend MJDEND Ending MJD + --coadd_mjdstart COADD_MJDSTART + First Coadd MJD to include + --rerun1d Provides flag for coadd to be rerun though 1D analysis + --use_catid, -u Uses CatalogID rather then sdss_id + --use_firstcarton Use Firstcarton only for carton match (dont look at + db) + --useDB Use sdss targetdb instead of the Semaphore targeting + flag (if not use_firstcarton) + --lco Create Plans for LCO + --apo Create Plans for APO + +.. _spplan_trace: + +spplan_trace +^^^^^^^^^^^^ +:: + + usage: spplan_trace [-h] [--module MODULE] [--topdir TOPDIR] [--run2d RUN2D] + [--lco] [--logfile LOGFILE] [--verbose] [-c] + [--release RELEASE] [--remote] [--override_manual] + [--mjd [MJD [MJD ...]]] [--mjdstart MJDSTART] + [--mjdend MJDEND] + + Produces spPlanTrace + + optional arguments: + -h, --help show this help message and exit + + General: + General Setup Options + + --module MODULE Module file to load for run + --topdir TOPDIR + --run2d RUN2D Run2d to override module or environmental variable + --lco Build Run files for LCO + --logfile LOGFILE Optional logfile (Including path) + --verbose Provide information about nonutlized frames + -c, --clobber overwrites previous plan file + --release RELEASE sdss_access data release (defaults to sdsswork), + required if you do not have proprietary access, + otherwise see https://sdss- + access.readthedocs.io/en/latest/auth.html#auth + --remote allow for remote access to data using sdss-access + --override_manual Override/clobber manually edited plan + + MJD/Field Filtering: + MJD/Field Filtering Options + + --mjd [MJD [MJD ...]] + Use data from these MJDs. + --mjdstart MJDSTART Starting MJD + --mjdend MJDEND Ending MJD + +.. _sxpar.py: + +sxpar.py +^^^^^^^^ +:: + + usage: sxpar.py [-h] [-v] fitsfile keyword + + Simply parse a fits header + + positional arguments: + fitsfile The fits file to read + keyword Header keyword to parse + + optional arguments: + -h, --help show this help message and exit + -v, --verbose verbose + +.. _sxpar_retry.py: + +sxpar_retry.py +^^^^^^^^^^^^^^ +:: + + usage: sxpar_retry.py [-h] [-v] fitsfile keyword + + Simply parse a fits header, retrying if failed + + positional arguments: + fitsfile The fits file to read + keyword Header keyword to parse + + optional arguments: + -h, --help show this help message and exit + -v, --verbose verbose + +.. _update_flags: + +update_flags +^^^^^^^^^^^^ +:: + + usage: update_flags [-h] [--run2d RUN2D] [--topdir TOPDIR] [--clobber] + [--custom [CUSTOM [CUSTOM ...]]] [--nobackup] + + Update SDSSV Targeting flats inn the summary files + + optional arguments: + -h, --help show this help message and exit + --run2d RUN2D idlspec2d Run2d version + --topdir TOPDIR idlspec2d Run2d topdir + --clobber Clobber spTargeting file + --custom [CUSTOM [CUSTOM ...]] + List of name of custom coadd schema + --nobackup Skip backup of existing + +.. _uubatchpbs: + +uubatchpbs +^^^^^^^^^^ +:: + + usage: uubatchpbs [-h] [--sdssv] [--sdssv_fast] [--sdssv_noshare] [--apo] + [--lco] [--bay15] [--merge3d] [--obs [OBS [OBS ...]]] + [--topdir TOPDIR] [--run1d RUN1D] [--run2d RUN2D] + [--idlutils_1d IDLUTILS_1D] [--no_reject] [--MWM_fluxer] + [--map3d {bayestar15,bay15,merge3d}] [--no_healpix] + [--noxcsao] [--skip_specprimary] [--no_merge_spall] + [--skip2d] [--only1d] [--onestep_coadd] [--fibermap_clobber] + [--saveraw] [--debug] [--no_db] [--fast_no_db FAST_NO_DB] + [--release RELEASE] [--dr19] [--a2t] + [--field [FIELD [FIELD ...]]] [--fieldstart FIELDSTART] + [--fieldend FIELDEND] [--mjd [MJD [MJD ...]]] + [--mjdstart MJDSTART] [--mjdend MJDEND] [--no_write] + [--shared] [--fast] [--mem_per_cpu MEM_PER_CPU] + [--walltime WALLTIME] [--nodes NODES] [--ppn PPN] + [--nosubmit] [--clobber] [--epoch] [--custom CUSTOM] + [--allsky] [--coadd_only] [--1dpost] [--email] + + Build idlspec2d redux and submit to slurm. Without access to the SDSS Slurm + package, it prints the commands for manual execution + + optional arguments: + -h, --help show this help message and exit + + Short cuts: + --sdssv --mwm --no_merge_spall --no_reject --shared + --sdssv_fast --sdssv --fast --shared + --sdssv_noshare --sdssv (without --shared) + --apo Run apo only + --lco Run lco only + --bay15 Set map3d to bayestar15 model + --merge3d Set map3d to best 3d model + + idlspec2d Run options: + --obs [OBS [OBS ...]] + Observatory {apo,lco} + --topdir TOPDIR Optional override value for the environment variable + $BOSS_SPECTRO_REDUX + --run1d RUN1D Optional override value for the enviro variable $RUN1D + --run2d RUN2D Optional override value for the enviro variable $RUN2D + --idlutils_1d IDLUTILS_1D + idlutils override version of spec1d + --no_reject Deactivate Rejection in Coadd + --MWM_fluxer, --mwm + --map3d {bayestar15,bay15,merge3d} + Name of 3d dustmap to use with MWM_fluxer + (default=None) + --no_healpix, --nohp Turn off copy to healpix + --noxcsao Skip pyXCSAO + --skip_specprimary Skip Calculation of Specprimary + --no_merge_spall Skip building full SpAll File + --skip2d Skip spreduce2d + --only1d run spec1d step only (eg. spreduce1d_empca, XCSAO) + --onestep_coadd Use legacy one step version of coadd + --fibermap_clobber Clobber spfibermap fits file + --saveraw Save sdssproc outputs + --debug Save extraction debug files + --no_db skip Database operations + --fast_no_db FAST_NO_DB + When using --no_db, streamlines process and only gets + parallax from MOS target files + --release RELEASE sdss_access data release (defaults to sdsswork), + required if you do not have proprietary access, + otherwise see https://sdss- + access.readthedocs.io/en/latest/auth.html#auth + --dr19 Limit targeting flags to DR19 cartons + --a2t Force Use of Arc2Trace + + Select Fields: + --field [FIELD [FIELD ...]], -f [FIELD [FIELD ...]] + Plate/Field numbers to reduce default="*" + --fieldstart FIELDSTART + Starting Field/Plate number + --fieldend FIELDEND End Field/Plate number + + Select MJDs: + --mjd [MJD [MJD ...]], -m [MJD [MJD ...]] + MJD dates to reduce; default="*" + --mjdstart MJDSTART Starting MJD + --mjdend MJDEND Ending MJD + + Slurm Options: + --no_write skip writing and submitting job + --shared Node sharing + --fast Use SDSS fast queue + --mem_per_cpu MEM_PER_CPU + Memory allocated per CPU + --walltime WALLTIME Wall time in hours + --nodes NODES Number of Nodes + --ppn PPN Number of processors per node + --nosubmit Build, but not submit redux files + --clobber Clobber redux + + Custom Coadd Options: + --epoch Epoch Coadds + --custom CUSTOM Name of custom Coadd Schema + --allsky All Sky Coadds + --coadd_only Run spspec_target_merge only + --1dpost Run 1d analysis and post processing only + + Email outputs: + --email Email log using $DAILY_DIR/etc/emails + +.. _uurundaily: + +uurundaily +^^^^^^^^^^ +:: + + usage: uurundaily [-h] [--module MODULE] [--apo] [--lco] + [--mjd [MJD [MJD ...]]] [--range_mjd RANGE_MJD] + [--no_dither] [--epoch] [--no_merge3d] [--summary] + [--no_traceflat] [--no_prep] [--no_fibermap] + [--skip_plan [{pipe,trace,True,all}]] + [--clobber [{spPlans,fibermap,trace,True,all} [{spPlans,fibermap,trace,True,all} ...]]] + [--saveraw] [--debug] [--fast] [--nosubmit] [--noslurm] + [--batch] [--nodb] [--monitor] [--allemail] [--pause PAUSE] + [--walltime WALLTIME] [--mem_per_cpu MEM_PER_CPU] + + Process the BOSS data for a single MJD end-to-end (including plan files) + + optional arguments: + -h, --help show this help message and exit + --module MODULE Module for daily run + --no_merge3d Skip using prototype 3D Dustmap (in merge mode) + + Field-MJD Selection: + Arguments to control the Field-MJD Selection to run + + --apo Run for APO Only + --lco Run for LCO Only + --mjd [MJD [MJD ...]] + Manually run for a single/list of mjd (does not update + nextmjd.par) + --range_mjd RANGE_MJD + Manually run for a range of mjds (does not update + nextmjd.par) + --no_dither Skip Dither Engineering Fields + --epoch Run Epoch Coadds + + Pipeline Steps: + Arguments to control which steps of the full pipeline are run + + --summary Build Summary Files + --no_traceflat Skip Building and using TraceFlats + --no_prep Skip building TraceFlats and spfibermaps before + pipeline run + --no_fibermap Skip Pre-Run of readfibermap + --skip_plan [{pipe,trace,True,all}] + Skip the given plan {pipe,trace,all (flagging + --skip_plan with name will default to all)} + --clobber [{spPlans,fibermap,trace,True,all} [{spPlans,fibermap,trace,True,all} ...]] + Clobber uubatchpbs + a combo of spPlan, fibermap, and + TraceFlat run {fibermap,trace, all (flagging --clobber + with name will default to all)} + + Debug: + Arguments to saving of optional debugging files + + --saveraw save sdssproc outputs + --debug save extraction debug files + + Pipeline Options: + Arguments to set the misc pipeline options + + --fast turn on fast user for slurm + --nosubmit Skip submitting uubatch job (ideal for allowing + editting of plans) + --noslurm Skip creating uubatch job + --batch run for multiple mjds in a single batch + --nodb skip Database operations + --monitor Monitors pipeline status + --allemail Email intermediate log using all emails in + $DAILY_DIR/etc/emails (defaults to first email only) + --pause PAUSE Pause time (s) in status updates + --walltime WALLTIME Wall time in hours + --mem_per_cpu MEM_PER_CPU + Memory allocated per CPU + +IDL Command Usage +----------------- + +.. contents:: + :depth: 3 + :local: + :class: this-will-duplicate-information-and-it-is-still-useful-here + :backlinks: none + + +.. _spreduce2d.pro: + +spreduce2d.pro +^^^^^^^^^^^^^^ +:: + + ;+ + ; NAME: + ; spreduce2d + ; + ; PURPOSE: + ; Calling script for SPREDUCE that reduces a night of data according + ; to a plan file. + ; + ; CALLING SEQUENCE: + ; spreduce2d, [ planfile, docams=, /do_telluric, /xdisplay, $ + ; /writeflatmodel, /writearcmodel, /bbspec ] + ; + ; INPUTS: + ; + ; OPTIONAL INPUTS: + ; planfile - Name(s) of output plan file; default to reducing all + ; plan files matching 'spPlan2d*.par' + ; docams - Cameras to reduce; default to ['b1', 'b2', 'r1', 'r2'] + ; do_telluric- Passed to EXTRACT_OBJECT + ; xdisplay - Send plots to X display rather than to plot file + ; writeflatmodel - passed to SPCALIB via SPREDUCE to trigger writing + ; out of flat model info to file. + ; writearcmodel - passed to SPCALIB via SPREDUCE to trigger writing + ; out of arc model info to file. + ; bbspec - use bbspec extraction code + ; noreject - Override Bad calibration rejection (use with caution) + ; + ; Optional Keywords: + ; MWM_fluxer - Utilize MWM optional settings (ie gaia reddening and different S/N cuts) + ; + ; + ; OUTPUT: + ; + ; COMMENTS: + ; The following environment variables must be set: + ; BOSS_SPECTRO_DATA + ; SDSSCORE + ; SPECFLAT_DIR + ; Look for raw FITS data files in BOSS_SPECTRO_DATA/MJD. + ; Look for obsSummary files in SDSSCORE/MJD. + ; Look for spectroscopic flat files in SPECFLAT_DIR. + ; + ; EXAMPLES: + ; + ; BUGS: + ; This routine spawns the Unix command 'mkdir'. + ; + ; PROCEDURES CALLED: + ; cpbackup + ; idlspec2d_version() + ; idlutils_version() + ; splog + ; spreduce + ; yanny_free + ; yanny_par() + ; yanny_read + ; + ; INTERNAL SUPPORT ROUTINES: + ; + ; REVISION HISTORY: + ; 02-Nov-1999 Written by David Schlegel, Princeton. + ; Apr-2010 Added "write[flat,arc]model" pass-through (A. Bolton, Utah) + ; 15-Aug-2011 Added pass-through for spatial split of sky model (A. Bolton, Utah) + ; 15-Nov-2018: Modified for use only one spectrograph for the BHM (HJIM) + ;- + +.. _rm_combine_script.pro: + +rm_combine_script.pro +^^^^^^^^^^^^^^^^^^^^^ +:: + + ;+ + ; NAME: + ; rm_combine_script + ; + ; PURPOSE: + ; Script to process epochs with the xyfit custom flux calibration + ; + ; CALLING SEQUENCE: + ; + ; INPUTS: + ; planfile - Name(s) of output plan file + ; + ; OPTIONAL INPUTS: + ; run2d - Name of the run2d + ; finaldir - Additional subdirectory for output + ; xyfit - Compute 2d flux corrections in the xy focal plane + ; bscore - Fraction of best exposure score to use as a threshold for discarding exposures + ; minsn2 - Minimum S/N^2 to include science frame in coadd; default + ; to 0 to only include those with S/N > 0. + ; Note that all exposures with a score less than 0.2 times + ; the score of the best exposure are discarded; for those + ; purposes, the score used is the worst of all 4 cameras. + ; + ; + ; Optional Keywords: + ; MWM_fluxer - Utilize MWM optional settings (ie gaia reddening and different S/N cuts) + ; nofcorr - Skip the step to generate and use the spFluxcorr* files + ; nodist - Skip the step to generate and use the spFluxdistort* files + ; radec_coadd - Coadd using ra-dec matching rather then catalogID matching + ; no_reject - Turns off rejection in the coadding + ; onestep_coadd - Legacy algorithm for coadd. Coadding blue+red and all exposures + ; at the the same time. + ; epoch - Epoch Coadd flag for input and outputs + ; legacy - Flag for Pre-SDSSV 2 Spectrograph data at APO + ; plates - Flat for SDSSV 1 Spectrograph plate data at APO + ; loaddesi - Load the DESI (JG) models for fluxing + ; skipfluxing - Skip the step to generate spFluxcalib* files + ; skipfcorr - Skip creation of flux-correction vectors and use prexisting spFluxcorr* files + ; + ; OUTPUT: + ; + ; COMMENTS: + ; EXAMPLES: + ; + ; BUGS: + ; This routine spawns the Unix command 'mkdir'. + ; + ; PROCEDURES CALLED: + ; get_field_dir + ; djs_filepath + ; rm_spcombine_v5 + ; + ; + +.. _spreduce1d_empca.pro: + +spreduce1d_empca.pro +^^^^^^^^^^^^^^^^^^^^ +:: + + ;+ + ; NOTE: same as spreduce1d, but uses different QSO PCA templates + ; NAME: + ; spreduce1d + ; + ; PURPOSE: + ; 1-D reduction of spectra from 1 plate + ; + ; CALLING SEQUENCE: + ; spreduce1d, [ platefile, fiberid=, run1d=, /doplot, /debug, chop_data= ] + ; + ; INPUTS: + ; + ; OPTIONAL INPUTS: + ; platefile - Plate file(s) from spectro-2D; default to all files + ; matching 'spPlate*.fits' + ; fiberid - If specified, then only reduce these fiber numbers; + ; this must be a vector with unique values between 1 and + ; the number of fibers in the plate file + ; run1d - Optional override value for the environment variable $RUN1D + ; doplot - If set, then generate plots. Send plots to a PostScript + ; file spDiagDebug1d-$PLATE-$MJD.ps unless /DEBUG is set. + ; debug - If set, then send plots to the X display and wait for + ; a keystroke after each plot; setting /DEBUG forces /DOPLOT. + ; chop_data - If set, then trim wavelength range to the specified range + ; in vacuum Ang (if a 2-element array), or to a default + ; trim range of [3600,10400] Ang. + ; + ; OUTPUTS: + ; + ; OPTIONAL OUTPUTS: + ; + ; COMMENTS: + ; Input files are read from the current directory. + ; Output files are written to the subdirectory $RUN1D. + ; + ; Names of output files are derived from PLATEFILE. + ; For example, if PLATEFILE='spPlate-0306-51690.fits', then + ; ZALLFILE = 'spZall-0306-51690.fits' + ; ZBESTFILE = 'spZbest-0306-51690.fits' + ; ZLINEFILE = 'spZline-0306-51690.fits' + ; + ; EXAMPLES: + ; + ; BUGS: + ; + ; DATA FILES: + ; $IDLSPEC2D_DIR/templates/TEMPLATEFILES + ; + ; PROCEDURES CALLED: + ; cpbackup + ; dfpsclose + ; dfpsplot + ; djs_filepath() + ; elodie_best() + ; fileandpath() + ; filter_thru() + ; mrdfits() + ; mwrfits + ; qaplot_fcalibvec + ; splog + ; skymask() + ; speclinefit + ; star_dvelocity() + ; struct_addtags() + ; sxaddpar + ; sxdelpar + ; sxpar() + ; synthspec() + ; vdispfit + ; zfind() + ; zrefind() + ; + ; REVISION HISTORY: + ; 28-Jun-2000 Written by D. Schlegel, Princeton + ; 2010-2011: various template-related tweaks and Z_NOQSO, A. Bolton, Utah + ; 01-Oct-2012: Adding ZNUM_NOQSO to the Z_NOQSO section, Joel Brownstein, Utah + +.. _spcalib_qa.pro: + +spcalib_qa.pro +^^^^^^^^^^^^^^ +:: + + ; NAME: + ; spcalib_qa + ; + ; PURPOSE: + ; Compare photometric accuracy of standards + ; + ; CALLING SEQUENCE: + ; SpCalib_QA, [run2d=, fieldid=, mjd=] + ; + ; INPUTS: + ; + ; OPTIONAL INPUTS: + ; field - field to include + ; mjd - MJD to include + ; run2d - RUN2D version of reduction + ; + ; OUTPUTS: + ; + ; OPTIONAL OUTPUTS: + ; + ; COMMENTS: + ; Depends on the spAll files (either full run2d version or field-mjd version) + ; + ; EXAMPLES: + ; + ; BUGS: + ; + ; DATA FILES: + ; + ; Function Called: + ; mpfitfun + ; field_to_string + ; djs_filepath + ; mrdfits + ; sdss_flagval + ; + ; External PROCEDURES CALLED: + ; plot + ; XYOUTS + ; cpbackup + ; + ; Internal PROCEDURES CALLED: + ; std_hist + ; + ; REVISION HISTORY: + ; 21-June-2022 Written by S. Morrison (UIUC) + +.. _spspec_target_merge.pro: + +spspec_target_merge.pro +^^^^^^^^^^^^^^^^^^^^^^^ +:: + + ;+ + ; NAME: + ; spspec_target_merge + ; + ; PURPOSE: + ; To create spSpec and spFullsky target level coadds (independent of field-mjd) + ; + ; CALLING SEQUENCE: + ; + ; INPUTS: + ; customplan - The spPlanCustom file for the coadd + ; + ; OPTIONAL KEYWORDS: + ; topdir - the daily coadd base directory + ; + ; OUTPUTS: + ; + ; OPTIONAL OUTPUTS: + ; + ; COMMENTS: + ; + ; EXAMPLES: + ; + ; BUGS: + ; + ; PROCEDURES CALLED: + ; + ; REVISION HISTORY: + ; + ;- + + +.. highlight:: defaults + + +.. End of document diff --git a/docs/sphinx/index.rst b/docs/sphinx/index.rst new file mode 100644 index 000000000..1fd9cd474 --- /dev/null +++ b/docs/sphinx/index.rst @@ -0,0 +1,52 @@ +.. title:: IDLspec2D: The SDSS BOSS Data Reduction Pipeline + +Welcome to BOSS BOSS Data Reduction Pipeline (idlspec2d) documentation! +======================================================================= +This is the Sphinx documentation for the SDSS product idlspec2d + +Contents +^^^^^^^^ + +.. only:: not nosos + + .. toctree:: + :titlesonly: + + intro + Running the BOSS DRP Catchup + Running the BOSS DRP Daily + Fixing Raw Fits Headers + sos + Dependencies + doc + +.. only:: nosos + + .. toctree:: + :titlesonly: + + intro + Running the BOSS DRP Catchup + Running the BOSS DRP Daily + Fixing Raw Headers + Dependencies + doc + +.. toctree:: + :caption: Development + :maxdepth: 2 + :titlesonly: + + GitHub Repository + +.. toctree:: + :caption: Support + :maxdepth: 2 + :titlesonly: + + SDSS HOME + SDSS Helpdesk + SDSS SVN + SDSS GitHub + SDSS SAS + SDSS-Access diff --git a/docs/sphinx/intro.rst b/docs/sphinx/intro.rst new file mode 100644 index 000000000..73eba3617 --- /dev/null +++ b/docs/sphinx/intro.rst @@ -0,0 +1,14 @@ +.. title:: IDLspec2D: The SDSS BOSS Data Reduction Pipeline + +IDLspec2D: The SDSS BOSS Data Reduction Pipeline +================================================ + +The BOSS DRP (officially known as `idlspec2d `_) is really a series of steps run in sequence. There are some initial steps to produce the plans and supplementary information required. After which, uubatchpbs is used to produce the redux scripts. These scripts are really a wrapper script designed to run each of the individual steps on a field-mjd basis by the slurm manager at CHPC (Utah) or manually on any computer. Starting with the v6_2_x version of the pipeline, the internal python commands have been organized into a boss_drp package within the IDLspec2D GitHub repo. + +The Pipeline can be run in various ways, where the catchup method is designed to run a large number of MJDs in a short time and the daily run method is designed to run for 1 (or a few) MJDs. + + +Major changes since version v6_1_X +---------------------------------- + +The idlspec2d package received a cleanup of old unused scripts and reorganized the internal python functions into an internal boss_drp python package. The scripts and files removed from the newer versions can be found in earlier tags on the `github repo ` or `svn repo ` diff --git a/docs/sphinx/requirements.txt b/docs/sphinx/requirements.txt new file mode 100644 index 000000000..2cc82918a --- /dev/null +++ b/docs/sphinx/requirements.txt @@ -0,0 +1,21 @@ + +sdsstools>=1.0.0 +sphinx>=4.0.0 +sphinx-click>=2.6.0 +sphinx-jsonschema>=1.16.7 +myst-parser>=0.14.0 +furo>=2021.6.18-beta.36 +sphinx-autobuild>=2021.3.14 +sphinx-copybutton>=0.3.3 +jinja2==3.1.4 +pydl>=1.0.0 +matplotlib>=3.6.0 +pandas>=2.0.0 +sdss_semaphore>=0.2.4 +healpy>=1.16.2 +sdss_access>=3.0.3 +pyxcsao>=0.2 +git+https://github.com/holtzmanjon/pyvista.git@devel +scikit-image +jinja2 +plotly diff --git a/docs/sphinx/sdR_hdrfix.rst b/docs/sphinx/sdR_hdrfix.rst new file mode 100644 index 000000000..04069facd --- /dev/null +++ b/docs/sphinx/sdR_hdrfix.rst @@ -0,0 +1,21 @@ + +Fixing Raw Fits Headers +======================= + + +At times the raw fits headers have to be updated after the data is taken. As the raw frames are immediatly frozen in their initial state, this is is handled via alternative yanny sdHdrfix-.par files. In the era of plate operations, these files were stored in the `speclog `_ data product, while in FPS operations, these are stored in the `sdsscore `_ data product. The files are read in as part of the pipeline and can be used to correct individual values, or to flag exposures as bad or test, which are then excluded by the pipeline from proceessing. + +sdR_hdrfix +------------- +The :ref:`sdR_hdrfix` command is used by the observers and pipeline team to create the sdHdrfix yanny files. After the script is run, the created (or appended) sdHdrfix-.par files should be manually added the `sdsscore ` repo. The can be done by navigating to $SDHDRFIX_DIR//sdHdrfix and `git add .`. + + +sphdrfix.pro +------------ +The `sphdrfix.pro` command is used internally by the pipeline and contains internal documentation if one should desire to run it manually, but it can be simply run with `sphdrfix, filename, hdr` within idl, supplying the filename and raw fits header, and it returns the modified header. + + +Sphdrfix.py +----------- +`Sphdrfix.py` contains the `Sphdrfix` Python class that is used by the Python portions of pipeline, where the class is initialized with the MJD (and observatory) of the interest (and other other optional parameters). The class instance function of `sphdrfix.fix(filename, hdr)`, supplying the filename and raw fits header, can be used to which returns the modified header. + diff --git a/docs/sphinx/sos.rst b/docs/sphinx/sos.rst new file mode 100644 index 000000000..608d2ea92 --- /dev/null +++ b/docs/sphinx/sos.rst @@ -0,0 +1,316 @@ +.. title:: SOS: The BOSS on Mountain Pipeline + +Son-of-spectro (SOS): The BOSS on Mountain Pipeline +=================================================== +At APO (LCO) the log files are stored in |SOS_user|-hub.apo.nmsu.edu/data/boss/sos/ (|SOS_user|-hub.lco.cl/data/boss/sos/) with the logs file stored in /home/|SOS_user|/boss/sos/logs. + +The sos systemctl process is currently started automatically at boot. + +The python help for this command can be found with SOS -h. + + +SOS as a systemctl process +-------------------------- +SOS is designed to run as a pair of systemctl processes (1 for red and 1 for blue) at the observatories. They are controlled indepednetly, so that if one crashes it can be restared while leaving the other running. In |SOS_user| they are run by the |SOS_user| users on the |SOS_HOST| machines at each observatory. To start/restart/stop each of these processes, they can be controlled via :: + + systemctl --user start|restart|stop SOS + systemctl --user start|restart|stop SOS_red + +or as a joint command :: + + systemctl --user start|restart|stop SOS SOS_red + +Backing out to an Older Version +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +If errors in a recent update prevent SOS from functioning properly, older versions of SOS can be loaded instead. As the SOS version is managed by the idlspec2d modules on the mountains, this can be done by issuing the following commands as the |SOS_user| user on |SOS_HOST| :: + + systemctl --user stop SOS SOS_red + cd /home/|SOS_user|/software/modulefiles/idlspec2d + unlink default + ln -s v6_0_9 default + systemctl --user start SOS SOS_red + +where v6_0_9 can be replaced by the latest functional version installed. + +Troubleshooting SOS +^^^^^^^^^^^^^^^^^^^ +The Son-of-Spectro (SOS) reduction has proven to be quite robust. However, if it appears to not be working one could check the following: + +* Is the system process running? Log into "|SOS_user|@|SOS_HOST|", and issue :code:`systemctl --user status SOS SOS_red` command to check if both processes are still running. If not then :code:`systemctl --user restart SOS SOS_red` (you can just to SOS or SOS_red if only 1 crashed). Then use the catchup commands to rerun any missed exposures and note in the night logs. If both processes are running, then just try the catchup command without restarting the processes (please note these exposures as well). If the reduction still fails then try emailing or slacking |Contact| + +* Are there old "lock" files sitting around? SOS generates "lock" files to prevent multiple processes from changing these files simultaneously. If any have been sitting around for several minutes or more, then something is wrong. You should delete the file ending with ".lock". However, this could result in a corrupted "logfile*.fits". + +The three places that could have a lockfile are :: + + /data/boss/sos/{mjd}/*.lock + /data/boss/sos/combined/*.lock + /data/boss/sos/{mjd}/trace/{mjd}/*.lock + /home/sdss5/software/sdsscore/main/*/sdHdrfix/*.lock + +It is normal for lock files to be there temporarily (for a few minutes); if code appears hung or the lockfiles are from a few days ago, then something is wrong. The lockfiles are links to the file they are locking, e.g. :: + + + -rw-rw-r-- 1 sdss5 sdss5 542 Mar 9 01:17 sdHdrFix-57090.par + lrwxrwxrwx 1 sdss5 sdss5 18 Mar 9 18:17 sdHdrFix-57090.par.lock -> sdHdrFix-57090.par + +.. warning :: + If you need to remove a lock, it is very important to remove the lock and not the file to which it is pointing. In the example above, remove the file with extension .par.lock, not .par file. i.e. issue :code:`rm $SDSSCORE_DIR/$OBSERVATORY/sdHdrfix/sdHdrFix-57090.par.lock`. DON'T issue :code:`rm $SDSSCORE_DIR/$OBSERVATORY/sdHdrfix/sdHdrFix-57090.par`. + + +Re-Reducing Data with SOS +------------------------- +In cases where data nees to be re-reduced, this can be done manually (using the |SOS_user| user on |SOS_HOST|) after loading the idlspec2d module. To reduce the blue and red channels independently :: + + SOS -b -c -m MJDXX -e EXPIDXX + SOS -r -c -m MJDXX -e EXPIDXX + +or jointly using :: + + SOS -r -c -m MJDXX -e EXPIDXX + +the MJD can be negelected if the data is for the current MJD and the EXPID can be a single exposure ID or a range of exposure IDs. + +.. note :: + If the S/N in one of the BOSS cameras does not appear in Kronos, you can run this command to re-reduce an exposure using this command. You can check the log files at /home/|SOS_user|/boss/sos/logs/sos_log-b1-error or (sos_log-r1-error). tail -n 150 sos_log-b1-error will show the last 150 lines of the error long and should show enough of the log to determine if the current exposure crashed due to "Failed to acquire license." + + +Frequently Used Commands +------------------------ +.. note:: + All commands are executed from |SOS_user| on |SOS_HOST|. All commands assume that idlspec2d is set up :code:`module load idlspec2d`. + +Start SOS Processes After Observing Has Started For the Night: +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Use this command if the SOS process was not started until after observing has started for the night or an issue is identified later in the night. This procedure will process all images already present for the current MJD (or when utilizing the --mjd flag for the specified MJD). This can be combined with a --exp to reprocess a single exposure or range of exposures. Unlike the older version of sos, this command is designed to be run in parallel to the systemd processes allowing for reprocessing of the earlier data while new data is still being taken and processed. :: + + module load idlspec2d + SOS -b -c + SOS -r -c + +these logs have _catchup added to the file names + +Other flag +"""""""""" + +In addition to the catchup mode, SOS has other options that can either be added to the -c option or run in place of the -c option + +-e XXXXXXX (--exp) rerun a single or range of exposures (eg 100-110) exposure (works with -c, -m, or -t) + +-m XXXXX (--mjd) rerun for an MJD (these logs have _{mjd} added to the filename) (can be combined with -c to reprocess a night in the sos folder or -t in the sosredo folder) + +-t (--redoMode) rerun and save in (these logs have _redo added to the filename) (in place of -c) -This mode is primarily for testing and not designed for use by the observers. + +-j (--joint) will run both red and blue in parallel (overrides -r or -b, and can be run with any of the other options) + +--no_reject will override the calibration rejection codes (to force a faint calibration through) - This is a last resort if the lamp dies during the night and replacement is not an option, since it will likely cause difficulties in the main pipeline that require trial & error and hand holding to reduce. SOS will still provide the same warnings but will produce output for calibration (note the override in the night logs). This should NOT be forced if flat 80% < 200 (as reported by SOS) or 2 lamps are out. If the outage of a single lamp happens at the start or early in the night (or multiple lamps burn out), then immediate replacement (either then or at the end of that field) is highly preferred. + + +SOS Outputs +----------- +Tabulated Values +^^^^^^^^^^^^^^^^ + +Son-of-Spectro reduces four flavors of observations: bias/dark, flat, arc, & science. Select information is tabulated for each of these types of observations. These values are tabulated in yellow if they are going out of spec, and in red if they are very much out of spec. The values reported are: + +`BIAS/DARK PERCENTILE98`: The value in electrons of the 98-th percentile on the (overscan-corrected) image. For example, if this is 8, then 98% of the pixels are below 8 electrons. Bad regions on the CCD and saturated pixels are excluded from this evaluation. The CCDs can also accumulate charge during the day that may need several bias exposures to completely flush. If this does not work, then the CCD is probably warm. + +`FLAT NGOODFIBER`: The number of illuminated fibers. This should be 320 if all the fibers are plugged and unbroken. Note that fibers that fall on particularly bad parts of the CCD can also be excluded from the good fiber list (the red CCDs have some of these cases). If this number is less than about 315, then you should be suspicious that some fibers have dropped out. + +`FLAT XMIN (XMAX)`: The minimum (maximum) X position of the spectra on the CCD. If this is less than 0 (greater than 2047), then some of the spectra fall off the left (right) side of the CCD. This probably means that no one ran the Spectro Monthly Checkout. If it is off by more than 5 pix or so, you should probably run the Monthly Checkout (if it has been run contact |Contact| to reduce and update the specflat product) + +`FLAT XSIGMA`: The profiles in the spatial (X) dimension have a gaussian fit with a width of this sigma. The median of this width is taken independently in each of 4 quadrants on a CCD, and the maximum of those 4 values reported. If the spectrographs are in focus, then this value should be about 1.0 pix. If it is larger, then the spectrographs may be out-of-focus, or the slit-heads may not be properly latched. + +`ARC WAVEMIN (WAVEMAX)`: The minimum (maximum) wavelength (in Angstroms) of any spectra on this CCD. Because of the optical distortions, this is always for the central fiber. The edge fibers have less wavelength coverage. This probably means that no one ran the Spectro Monthly Checkout. If it is off by more than 5 pix or so, you should probably run the Monthly Checkout. (if it has been run contact |Contact| to reduce and update the specflat product) + +`ARC BESTCORR`: The linear correlation coefficient between the arc spectra and a template arc spectrum. If they agree perfectly, then this is 1. The value of this correlation is typically 0.80. If it drops too much lower, then the arc spectra do not look as they should. This could happen if the arcs did not turn on, the flat field screens did not close, or some of the arc lines are missing -- if, for example, the Hg lamps all failed. If the correlation is less than 0.5 or so, then it's even possible that the code has found the incorrect wavelength solution. + +`ARC NLAMPS`: The number of arc lines used to generate the wavelength solution. There are many more on the red CCD's because neon has many more lines there. If this drops to too few lines, then some of the lamps have not turned on properly, have not warmed up, or have warmed up too much. + +`ARC WSIGMA`: The arc-line profiles in the wavelength (Y) dimension have a gaussian fit with a width of this sigma. The median of this width is taken independently in each of 4 quadrants on a CCD, and the maximum of those 4 values reported. If the spectrographs are in focus, then this value should be about 1.0 pix. If it is larger, then the spectrographs may be out-of-focus, or the slit-heads may not be properly latched. (One would expect that both XSIGMA and WSIGMA would go out-of-focus at the same time.) + +`SCIENCE SKY/SEC`: The median sky counts in electrons per pixel. If this is too large, then there must be a light source near the telescope, or the night sky (the moon) is bright, or the CCD's are warming up and generating dark current. + +`SCIENCE (S/N)2`: The signal-to-noise squared for objects at the fiducial magnitude limit. We choose (S/N)2 because it is an additive quantity with additional integration time. Exactly how this quantity is measured is described below. + +`SCIENCE (S/N)2_v2`: The signal-to-noise squared for objects at a fiducial magnitude limit. We choose (S/N)2 because it is an additive quantity with additional integration time. Exactly how this quantity is measured is described below. + +`SCIENCE Mag15 (S/N)2`: The signal-to-noise squared for objects at a fiducial magnitude of 15 limit. We choose (S/N)2 because it is an additive quantity with additional integration time. Exactly how this quantity is measured is described below. + +`EXPTIME`: The exposure time (EXPTIME) header keyword from the first camera of this exposure to be reduced. The assumption is that all 2 cameras have the same EXPTIME. + +`AIRTEMP`: The air temperature (AIRTEMP) header keyword from the first camera of this exposure to be reduced. The assumption is that all 2 cameras have the same AIRTEMP. + +`UT`: The UT time computed from TAI in the header from the first camera of this exposure to be reduced. + +`QUALITY`: This is the observer-input quality for this exposure. It can be set independently for each of the 2 cameras, but only one camera value (the first reduced frame) is reported in this table. The default value is "excellent" for everything except for dithered flats or spectro focus frames which are "test". The observers have the option of declaring exposures "excellent", "test", or "bad" using the sdr_hdrfix.py command. + +The exact values of these yellow/red limits and further explanation can be found in the "idlspec2d" product in the file "examples/opLimits.par". + +WARNING and ABORT messages +^^^^^^^^^^^^^^^^^^^^^^^^^^ +There are a number of WARNING and ABORT messages that can appear if the pipeline runs into trouble when processing a frame. These messages appear at the bottom of each table. Each one-line message begins with the relevant file name, WARNING or ABORT, then a brief plain-text message. + +Note that a single problem may cascade into a large number of warning messages. For example, an out-of-focus spectrograph will first produce the "Median spatial widths" message, probably followed by warnings about bad sky-residuals. + + + +General Frame Messages (valid for flats/arcs/Science) +""""""""""""""""""""""""""""""""""""""""""""""""""""" +`bias exploding in b2 crazy quadrant`: This indicates a hardware electronics problem with the b2 bias levels. Keep observing, but note this prominently in the night log. The SOS b2 (S/N)2 values might be crazy -- if they look unusual, use the other channels to determine plate doneness, and note this in the log. + +`Amp #... expected read noise = ..., measured = ... DN`: The number reported is the standard deviation in the bias region for either amplifier #2 (left side) or amplifier #3 (right side). This calculation is done clipping the half-percent of lowest and highest values. We trigger this warning if the value is ever 1.0 DN above the expected value. This can happen if there are a huge number of cosmic rays (if you've been integrating for hours), or if there is an electronics problem. + +`Amp #... bias region difference at xxx-th-percentile =... DN:` This measures another statistic of the bias region for either amplifier #2 (left side) or amplifier #3 (right side). This measures the difference between the 16th-percentile and 84th-percentile, which should be equal to twice the read noise (e.g., 1-sigma). This test is done at the 68.2-percentile (1 sigma), 95.4-percentile (2 sigma), and 99.7-percentile (3 sigma). A warning is reported if this difference is either significantly too small or too large, as compared to what gaussian statistics dictate. This should catch the same sorts of electronics problems as listed for the above warning message. + +`Amp #... way too many pixels (xxx%) below bias-5*sigma=... DN`: This test looks for anomalously low pixel values in the data region of the CCD. There should essentially never be any pixel values below 5-sigma less than the bias level, unless there is something wrong with the electronics. + +`Fixing shifted rows (from electronics)`: This is very, very bad. The raw images have rows shifted to the right, sometimes by many pixels. Call José immediately. + +`Fixing dropped-pixel rows (from electronics)`: This is very bad. The raw images actually have some rows shifted by 1 or 2 pixels, usually more so near the bottom of the CCD (the first rows to be read). Call José immediately. + +`Electronics shifted xxx rows by 2 pix`: This is indicative of an electronics problem with the BOSS electronics that shifts all or some of the rows in the raw images in all 4 amplifiers + +`More than 10% of the image is rejected`: This is very bad. This can probably only happen if most of the CCD has saturated pixels, which probably means you're observing during twilight, the CCDs are warm, or the dome lights are on. + +Science Frame Messages +"""""""""""""""""""""" +* Unable to reduce science exposure: + + `Unable to reduce this science exposure (need flat)`: A valid reduced flat field frame is required for processing + + `Unable to reduce this science exposure (need arc)`: A valid reduced arc lamp frame is required for processing + + `Reject science ...`: A science exposure can be rejected if the header keywords indicate that the flat-field petals are closed, any flat-field or arc lamps are turned on, too many pixels are bad or saturated, or if the 25-th percentile of the image too large. + + `Reject science: Flat-field screens are closed!` + + `Reject science: Flat-field lamps turned on!` + + `Reject science as too bright: 25-th-percentile = ....` + + `Scattered light`: There was a high baseline count rate on the CCD, and appears even between fibers. This can most obviously occur if there are light sources in the CCD (such as the LED's we had for some time), or if the CCD's are warming up and generating dark current. There can also be a scattered light contribution just from a very bright sky, or if there are super-bright objects on some fibers that are scattering or bleeding light across the CCD. It's best to carefully inspect the raw images for problems. + + `Large flexure flat<->science`: There is a large shift (more than 1.00 pix) between the flat-field and the science exposure, presumably from flexure in the spectrographs. When this happens, another set of flat-fields (post-calibs) is recommended. (However, don't bother to take a set of calibrations on a different night. The Spectro-2D reductions never use calibrations from one night for science exposures on another.) + + `Whopping fiber ....`: The fibers listed have very bright objects that affect their neighbors on the CCD. If the objects are bright enough (12th mag?), then this can trigger other warnings such as "scattered light". I think it's safe to say that whopping fibers only show up when there has been a mistake made in the plate designs -- this is already recorded in PR 2471. You should check that this object does not saturate (> 30,000 ADU) the raw sdR image. Should it be saturating, reduce the exposure time to prevent saturation or move on to the next plate. + + +* The following warning messages are all based upon the quality of the sky-subtraction. Typically, we are able to model the sky spectrum (from the 16 sky fibers on each spectrograph) with a relative chi2 of around unity. At very bright sky lines, like 5577 Ang, the relative chi2 may be as large at 25. If the relative chi2 is large at other wavelengths, this means that there is excess light down the fibers that vary across the plate. This could be due to a light source near the telescope, or possibly a bright, non-uniform sky. Strong auroral activity is something that can do this, since the O I lines at 6300 and 6366 Ang are resolved on the sky. + + `Too few sky fibers to model sky-sub variance`: There are not enough good sky fibers on the CCD. This will only happen if for some reason there were far fewer than the mandated 16 sky fibers on a CCD, or most of those fibers just happened to be dead fibers. You should never see this message. If you do, the data is un-reducable. You could try one more exposure, but something is probably horribly wrong with this plate. + + `Median sky-residual chi2 = ... at ... Ang`: The median reduced chi2 for sky-subtraction is always around unity. If it is greater than 2, this message is triggered. If this message appears and you are not observing during twilight or with warm CCDs, then there must be a serious problem. Seriously out-of-focus spectrographs might trigger this, or lights on near the telescope. + + `Max sky-residual chi2 = ... at ... Ang (ignoring 5577)`: This is an informational message triggered if the reduced chi2 is greater than 100 anywhere other than at the 5577 Ang sky line. If there is auroral activity, then this could be triggered at a few specific lines like O I at 6300 and 6366 Ang. These O I lines has reduced chi2 values of about 100 on MJD 51999 during a solar storm (i.e. plate 336/51999). The Spectro-2D pipeline will automatically mask these wavelengths for any downstream analyses. + + `Bad sky residuals at ....`: This warning is triggered if there is a range of at least 25 Angstroms with a reduced chi in the sky-subtraction worse than 2. This could be due to a light source near the telescope, a bright, non-uniform sky, a warm CCD, scattered light, or out-of-focus spectrographs. For most of those cases, there should be other relevant warning messages preceding this one (like a warm CCD message). This message should be ignored at the edges of the CCDs wavelength coverage -- near 3800 or 6200 Ang for b1,b2 or near 5800 or 9200 Ang for r1,r2. If none of the above explanations apply, then there is some real problem. + + `Red Monster at ....`: This warning is triggered if we see bad sky residuals (above) that is specifically in the wavelength range of about 6400-6600 Ang. We think this happens when the handpaddle is still plugged in, in which case the observers should unplug it immediately. The threshold is set at reduced chi=2, and the worst that we have ever seen is at about the level chi=6. ii You should be able to see a bump in the extracted spectra, especially for the sky fibers. + +Flat Frame Messages +""""""""""""""""""" +`Flat-field screens not closed`: The "FFS" keyword in the header indicates that at least one of the flat-field petals was not closed. When this happens, the flat or arc is not reduced. + +`Flat-field lamps not turned on`: The "FF" keyword in the header indicates that at least one of the four flat-field lamps was not turned on. When this happens, the flat is not reduced. + +`Reject flat (or arc) ... % bad pixels`: This condition is triggered when more than 2% of the non-masked pixels on the image are bad (saturated). When this happens, the flat (or arc) is not reduced. This probably happens if the CCDs are warm, the dome lights are on, or if for some reason the shutters were open too long. + +`Reject flat (or arc) ... saturated rows`: This condition is triggered when there are more than 100 saturated rows on the image. When this happens, the flat (or arc) is not reduced. This probably happens if the CCDs are warm, the dome lights are on, or if for some reason the shutters were open too long. + +`Reject flat as too faint`: This condition is triggered when the 80-th percentile of the image is less than 1000 electrons. When this happens, the flat is not reduced. Either the flat field screens were not closed, the lamps were not turned on, or the shutter didn't open. + +`Possible Argon lines in superflat`: Emission lines are present in the quartz-halogen flat-field images, which are supposed to be featureless. When a number follows this message, that is a measure of the line strength -- the trigger is set to 0.01, but we usually see it as 0.1 to 0.5 when present. We have identified these rogue lines as argon. best guess is that these contaminating lines come from trace amounts of argon in the HgCd lamps, which must still have current running through them when they are supposed to be off. + +`Median spatial widths = ...`: The spatial (X) widths of the fibers typically are gaussians with a sigma of 0.85 to 1.05 pixels. If the sigma is larger than 1.10 pixels in any of the 4 quadrants of a CCD (lower-left, lower-right, upper-left, upper-right), then this warning is triggered. It means that either the spectrographs are out of focus, or the slit-heads are not properly latched. Note that these widths are computed for both the flat and science exposures (but not for arcs -- we compute the widths in the dispersion dimension for arcs). + +`Unable to reduce this flat exposure (need plug-map)`: There is something wrong with the plug-map or confSummary file (You should not see this in the FPS era, but if you do contact José) + +`All centroids rejecte`d`: Something went significantly wrong with the tracing. Try taking another flat and if this error appears again contact the |Contact| Immediately + +Arc Frame Messages +"""""""""""""""""" +`Flat-field screens not closed`: The "FFS" keyword in the header indicates that at least one of the flat-field petals was not closed. When this happens, the flat or arc is not reduced. + +`Reject flat (or arc) ... % bad pixels`: This condition is triggered when more than 2% of the non-masked pixels on the image are bad (saturated). When this happens, the flat (or arc) is not reduced. This probably happens if the CCDs are warm, the dome lights are on, or if for some reason the shutters were open too long. + +`Reject flat (or arc) ... saturated rows`: This condition is triggered when there are more than 100 saturated rows on the image. When this happens, the flat (or arc) is not reduced. This probably happens if the CCDs are warm, the dome lights are on, or if for some reason the shutters were open too long. + +`X/4 .... Arc lamps are off`: The "NE", "HGCD", "HEAR" keywords in the header indicates that either the NE, HeAr, or HgCd lamps are not fully turned on. When this happens, the arc is not reduced. + +`Arc lamps not turned on`: The "NE", "HGCD", "HEAR" keywords in the header indicates that either the NE, HeAr, or HgCd lamps are not fully turned on. When this happens, the arc is not reduced. (replaced by the message above) + +`Neither Ne nor HeAR (HgCd) lamps turned on!`: The "NE", "HGCD", "HEAR" keywords in the header indicates that either the NE, HeAr, or HgCd lamps are not fully turned on. When this happens, the arc is not reduced. + +`Best arc correlation = ...`: The cross-correlation of the arc spectrum with the template arc spectrum was bad. This problem also triggers BESTCORR as bad in the table (see above). This may be due to too little signal in the lamps, e.g. if the flat field petals did not close or the lamps did not turn on. If those are not the problems, then look at the raw image. + +`Big wavelength gap`: Some arc lines were not found in the arc spectra, and there is a large gap in wavelength space without any lines. This will produce a poor wavelength solution. More arcs should be taken until this message does not appear. + +`Median wavelength widths = ...`: The widths of the arc lines in the dispersion (Y) dimension typically are gaussians with a sigma of 0.90 to 1.10 pixels. If the sigma is larger than 1.10 pixels in any of the 4 quadrants of a CCD (lower-left, lower-right, upper-left, upper-right), then this warning is triggered. It means that either the spectrographs are out of focus, or the slit-heads are not properly latched. + +`Arc exposure, waiting for flat before reducing`: Take a flat, and if that flat is valid then arc should be reduced, if not, then take another arc (or use SOS -j -c -e XXXX where XXXX is the exposure number to re-reduce the arc after getting the flat) + +`Reject arc image too few lines`: The lamps were not properly on or warmed up. Take an additional Arc + +`Cd I 3610 line missing (lamps not warm?)`: This particular arc line is the tie-down of the UV wavelength calibration and is either missing or has a poor fit. This is likely due to the HgCd lamps not being sufficiently warm before the exposure start. (depreciated) + +`Wavelength mapping makes no sense!`: Something has going significantly wrong. Try taking another arc, if you get this again, visually check the arc to look for artifacts and the lamp status, and then check the focus. If all seems in order contact |Contact| for further investigation. + +`Spline fit failed`: Something has gone wrong with the flat-arc pair. Try taking another pair of flat and arc. + +Misc messages +""""""""""""" +`Airmass range = ...`: This warning is triggered if the airmass exceeds 2.5. At such large airmasses, the atmospheric refraction terms are getting large and the sky background is bright. The data is still perfectly usable, it's just not as good as taking data at lower airmass. Keep observing if you must, but the airmass will rapidly approach infinity! + +`SOS disk is ...% full`: The specified disk is more than 95% full. Contact operations list to have Pipeline/Data teams clean out old data + +`Sun above the horizon by ... deg for non-test exposure`: This warning message is to trap flat, arc, or science exposures taken during the day that have not been marked as either "test" or "bad" data. If these are test data, be sure to mark them as such. This is to prevent such data from being used later in the full reductions. + +`Exposure number in header disagrees w/ filename`: This means that something is in a very confused state, and it is putting a different exposure number in the header (EXPOSURE keyword) from what is being used to generate file names. You should probably contact restart the BOSS(APO) or YAO(LCO) actors and contact José + +`Error reading sdHdrFix file`: The sdHdrFix file (sdHdrFix-$MJD.par) in /home/sdss5/software/sdsscore/main/\*/sdHdrfix/ exists but is not a valid Yanny parameter file. This file is written by the procedure sdr_hdrfix.py if the observers have run that proc on any of the sdss5 machines, but can also be edited by hand. If the file is invalid, you should edit it to be valid, or delete it. + +`Wrong number of elements for REDDEN_MED`: This is a warning that the reddening vector for this plate (reddeningMed in the plPlugMapM file) is not a 5-element vector, as expected). In this case, reddening values of zero are assumed. This means that the plate will not be observed as deep as it would have if non-zero reddening values were provided. (depreciated) + + +S/N Figures +^^^^^^^^^^^ +A median signal-to-noise is computed for each object in the wavelength ranges [4000,5500] Angstroms (synthetic g-band) and [6910,8500] Angstroms (synthetic i-band). We plot these S/N values versus the PHOTO fiber magnitudes, which were measured in approximately a 3-arcsec diameter aperature (the same size as our fibers). If everything is working perfectly, then our S/N values should correlate very well with these PHOTO magnitudes. + +We determine whether a plate is "done" based upon the signal-to-noise of the fainter objects on the plate. We do this by fitting a line to the (S/N)-vs.-magnitude plot in a specified wavelength range, then evaluating this fit at g=22.0 mag (blue CCDs), and i=21.0 mag (red CCDs). For the v2 S/N estimates the fits are evaluated at g=19 and r=19, and for the mag 15 S/N estimates the fits are evaluated at g=15 and r=15. + +When the sky level is higher, we gain S/N more slowly at the fainter magnitudes where we are sky-limited rather than photon-limited. + +Without moon, we have historically found :: + + log(S/N_g) = (zeropoint) - 0.31 * g + log(S/N_i) = (zeropoint) - 0.31 * i + +With partial moon, the slope steepens to -0.34 or worse. + +However, in practice in SDSS-V we utilize :: + + log(S/N_g) = (zeropoint) - 0.32 * g + log(S/N_i) = (zeropoint) - 0.36 * i + +The fitting regions are denoted on the plot with vertical dotted lines. Arrows point to the evaluation of the fit on each of the 4 cameras, with the top panels corresponding to the blue CCD's (synthetic g-band) and the bottom panels corresponding to the red (synthetic r-band). In SDSS-V FPS, if less then 10 targets have magnitudes within the fit range, the fit range bright limit is extened to include all target. + +The right-hand figures plot the residuals of each object from the fit. Symbol sizes on those right-hand plots indicate the magnitude of the deviation from the fit line. Symbol color is the same on the left as on the right, so green objects have more flux and red ones less. If the scale of the telescope is wrong, then you will see a radial drop-off in flux (red points on the edge of the plate). If you are observing too far over in air mass, then typically you correct to first order with a scale change, but a quadropole is left in these residuals. If one spectrograph has problems, then this will show up as red points in half of one of these figures. + +Note that the (S/N)2 totals listed in the table and the figure might not exactly agree. This is because the fitting to (S/N)-vs.-magnitude is done on individual frames for the table, but on the summed S/N over all frames for the figure. The tabulated values are the ones we use to declare a plate done. + + +Throughput Summary Analysis Figures +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +In the FPS era we added additional throughput analysis figures (linked via the SOS Summary Plots link at the top of the page). These figures show flux and S/N^2 as a functions of fiberid and magnitude. The Mag to Flux and Mag to S/N^2 figures include reference lines measured from a typically SDSS-IV/V plate to help understand throughput loss due to FPS fiber placements. This is also expressed in the x-focal vs y-focal vs log(ref_plate_flux/flux), which can be useful as a quick check of the overall fiber placement scale factors. The final panel is the extracted 1d spectra (though typically the scaling makes this figure hard to read). + +Arc To Trace QA Figures +^^^^^^^^^^^^^^^^^^^^^^^ +In the FPS era we have added the ability to use arc frames to tweak the traces as measured at the start of night operations. If this option is active, QA figures are produced of the trace shifts and linked via the Arc Shift Plots link at the top of the page. In the figures with 4 panels shows the original meaured shifts. The additional 3 panels shows the various transformations. Red vectors in the plots show discard points in the transformations. In the figure with 2 panels the top shows the net shift per fiber along the traces. And the bottom panel shows (if a trace flat is also taken for the field of the arc) the difference between the arc tweaked traces and the traces as measured by the flat for that field. In the lower panel, the dashed tails are portions of traces that are not used for the science frames. + +Log Files +^^^^^^^^^ +If the reduction of an exposure is catastrophically bad, it may not appear at all in the Son-of-Spectro table. However, there should still be a log file for this exposure on the data drive: /data/boss/sos/$MJD/splog-$CAMERA-$EXPOSURE.log + +Reading this file should tell you what failed. The first and last lines of these files should contain "Started at" and "Finished at" followed by timestamps. If this does not provide you with any information you can check the latest process logs for the camera in /home/|SOS_user|/boss/sos/logs. + diff --git a/etc/atmdisp_vec_am1.1see2.0.fit b/etc/atmdisp_vec_am1.1see2.0.fit deleted file mode 100644 index 9b1bf2334..000000000 Binary files a/etc/atmdisp_vec_am1.1see2.0.fit and /dev/null differ diff --git a/etc/atmdisp_vec_am1.2see2.0.fit b/etc/atmdisp_vec_am1.2see2.0.fit deleted file mode 100644 index 020bc2bbc..000000000 Binary files a/etc/atmdisp_vec_am1.2see2.0.fit and /dev/null differ diff --git a/etc/atmdisp_vec_am1.3see2.0.fit b/etc/atmdisp_vec_am1.3see2.0.fit deleted file mode 100644 index ed29dc836..000000000 Binary files a/etc/atmdisp_vec_am1.3see2.0.fit and /dev/null differ diff --git a/etc/atmdisp_vec_am1.4see2.0.fit b/etc/atmdisp_vec_am1.4see2.0.fit deleted file mode 100644 index 826ac5137..000000000 Binary files a/etc/atmdisp_vec_am1.4see2.0.fit and /dev/null differ diff --git a/etc/atmdisp_vec_am1.5see2.0.fit b/etc/atmdisp_vec_am1.5see2.0.fit deleted file mode 100644 index fe9ff0d39..000000000 Binary files a/etc/atmdisp_vec_am1.5see2.0.fit and /dev/null differ diff --git a/etc/config.ini b/etc/config.ini deleted file mode 100644 index ad01336b4..000000000 --- a/etc/config.ini +++ /dev/null @@ -1,9 +0,0 @@ -# -# This configuration file provides options to sdss4install specific to this product -# - -[sdss4install] -evilmake = True -no_python_package = True - - diff --git a/etc/dark-10-54664.fits b/etc/dark-10-54664.fits deleted file mode 100644 index 70686846a..000000000 Binary files a/etc/dark-10-54664.fits and /dev/null differ diff --git a/etc/dark-15-54713.fits b/etc/dark-15-54713.fits deleted file mode 100644 index e821adc95..000000000 Binary files a/etc/dark-15-54713.fits and /dev/null differ diff --git a/etc/dark-20-54713.fits b/etc/dark-20-54713.fits deleted file mode 100644 index 84e33b6f4..000000000 Binary files a/etc/dark-20-54713.fits and /dev/null differ diff --git a/etc/dark-30-53611.fits b/etc/dark-30-53611.fits deleted file mode 100644 index 8733d2b25..000000000 Binary files a/etc/dark-30-53611.fits and /dev/null differ diff --git a/etc/dark-30-54235.fits b/etc/dark-30-54235.fits deleted file mode 100644 index 1fff2e7f6..000000000 Binary files a/etc/dark-30-54235.fits and /dev/null differ diff --git a/etc/dark-30-54327.fits b/etc/dark-30-54327.fits deleted file mode 100644 index 7d486d33f..000000000 Binary files a/etc/dark-30-54327.fits and /dev/null differ diff --git a/etc/dark-30-54514.fits b/etc/dark-30-54514.fits deleted file mode 100644 index 9c291dac7..000000000 Binary files a/etc/dark-30-54514.fits and /dev/null differ diff --git a/etc/dark-30-54757.fits b/etc/dark-30-54757.fits deleted file mode 100644 index 8dab9eed9..000000000 Binary files a/etc/dark-30-54757.fits and /dev/null differ diff --git a/etc/dark-30-54814.fits b/etc/dark-30-54814.fits deleted file mode 100644 index ab2908d25..000000000 Binary files a/etc/dark-30-54814.fits and /dev/null differ diff --git a/etc/idlspec2d.module b/etc/idlspec2d.module deleted file mode 100644 index 730d9df01..000000000 --- a/etc/idlspec2d.module +++ /dev/null @@ -1,81 +0,0 @@ -#%Module1.0 -# The first line of this file tells Modules that this is a module file. -# DO NOT ALTER IT! -# -# ABOUT THIS FILE -# -# This file is designed to be processed by Python. Specifically, this file -# will be read into a string, and the .format() method will be applied to it. -# This file is not a valid module file on its own. -# -# METADATA AND DOCUMENTATION SECTION -# -# This function is part of the Modules help system. You can modify -# the second line if needed, but most products should -# leave this alone. -# -proc ModulesHelp {{ }} {{ - global product version - puts stderr "This module adds $product/$version to your environment." -}} -# -# These variables are used below. The product variable should be set to -# the name of the product and never changed. The version variable will -# be set at install time, so it should be left alone. -# -set product {name} -set version {version} -# -# The line below is another part of the Modules help system. You can -# modify the part in quotes if you really need to, but most products should -# leave this alone. -# -module-whatis "Sets up $product/$version in your environment." -# -# DEPENDENCIES SECTION -# -# If your product requires other software to function, that should be declared -# here. There are two types of dependencies: mandatory and optional. -# A mandatory dependency is a module load command followed by a prereq -# command. An optional dependency is not followed by a prereq statement. -# -module load bbspec -module load dust -module load elodie -module load spinspect -module unload specflat -module load specflat/v1_31 -module unload speclog -module load speclog/trunk -module load platelist -module load platedb -module load photolog/dr10 -module unload idlutils -module load idlutils/v5_5_17 -prereq idlutils/v5_5_17 -module load photoop -module load platedesign -module load yannytools - -# -# ENVIRONMENT SECTION -# -# The PRODUCT_ROOT and PRODUCT_DIR variables are used to set other -# environment variables, exported to the actual environment, by sdss4install -# -set PRODUCT_ROOT {root} -set PRODUCT_DIR $PRODUCT_ROOT/$product/$version -# -# This line creates an environment variable pointing to the install -# directory of your product. -# -setenv [string toupper $product]_DIR $PRODUCT_DIR -setenv [string toupper $product]_VER $version -# -# The lines below set various other environment variables. They assume the -# template product layout. These will be set or commented as needed by the -# sdss4install script. -# -{needs_idl}prepend-path IDL_PATH +$PRODUCT_DIR/pro -{needs_bin}prepend-path PATH $PRODUCT_DIR/bin -{needs_trunk_python}prepend-path PYTHONPATH $PRODUCT_DIR/python diff --git a/etc/regress1d_all.chicago b/etc/regress1d_all.chicago deleted file mode 100644 index ae73662b5..000000000 --- a/etc/regress1d_all.chicago +++ /dev/null @@ -1,6401 +0,0 @@ -#PLATE MJD FIBER Z CLASS PRIMTARGET SECTARGET COMMENTS - 300 51666 1 0.00007 UNKNOWN 64 0 - 300 51666 2 0.00478 GALAXY 96 0 - 300 51666 3 0.14045 GALAXY 64 0 - 300 51666 4 0.15152 GALAXY 64 0 - 300 51666 5 0.14121 GALAXY 64 0 - 300 51666 6 0.00044 STAR 1 0 - 300 51666 7 0.14709 GALAXY 64 0 - 300 51666 8 0.15353 GALAXY 64 0 - 300 51666 9 0.14771 GALAXY 64 0 - 300 51666 10 0.00015 STAR 524288 0 - 300 51666 11 0.25054 GALAXY 96 0 - 300 51666 12 0.00000 UNKNOWN 0 16 - 300 51666 13 0.15053 GALAXY 64 0 - 300 51666 14 0.99112 QSO 4 0 - 300 51666 15 0.33292 GALAXY 32 0 - 300 51666 16 0.08966 GALAXY 64 0 - 300 51666 17 0.11582 GALAXY 64 0 - 300 51666 18 0.14147 GALAXY 64 0 - 300 51666 19 0.15040 GALAXY 64 0 - 300 51666 20 0.14170 GALAXY 64 0 - 300 51666 21 0.11681 GALAXY 64 0 - 300 51666 22 2.41975 QSO 1048580 0 - 300 51666 23 0.03243 GALAXY 64 0 - 300 51666 24 0.00000 UNKNOWN 0 16 - 300 51666 25 0.10429 GALAXY 64 0 - 300 51666 26 0.00019 STAR 1048580 0 - 300 51666 27 0.29335 GALAXY 4096 0 - 300 51666 28 1.22432 QSO 1048596 0 - 300 51666 29 0.11482 GALAXY 64 0 - 300 51666 30 0.18885 GALAXY 64 0 - 300 51666 31 0.08258 GALAXY 64 0 - 300 51666 32 0.11640 GALAXY 64 0 - 300 51666 33 0.26532 GALAXY 4 0 - 300 51666 34 1.41697 QSO 64 0 - 300 51666 35 0.35904 GALAXY 2097184 0 - 300 51666 36 0.00031 STAR 0 96 - 300 51666 37 0.11644 GALAXY 4704 0 - 300 51666 38 0.08328 GALAXY 96 0 - 300 51666 39 0.14011 GALAXY 64 0 - 300 51666 40 0.11689 GALAXY 64 0 - 300 51666 41 0.09348 GALAXY 64 0 - 300 51666 42 0.05386 GALAXY 64 0 - 300 51666 43 0.14804 GALAXY 64 0 - 300 51666 44 0.39936 GALAXY 32 0 - 300 51666 45 0.00028 STAR 1048580 0 - 300 51666 46 0.07911 GALAXY 64 0 - 300 51666 47 0.15183 GALAXY 64 0 - 300 51666 48 0.00038 STAR 8196 0 - 300 51666 49 0.40178 GALAXY 32 0 - 300 51666 50 0.14132 GALAXY 96 0 - 300 51666 51 0.00015 STAR 0 32 - 300 51666 52 0.40157 GALAXY 32 0 - 300 51666 53 1.24444 QSO 1048580 0 - 300 51666 54 0.00000 UNKNOWN 0 16 - 300 51666 55 0.14743 GALAXY 64 0 - 300 51666 56 0.15036 GALAXY 4 0 - 300 51666 57 0.06214 GALAXY 64 0 - 300 51666 58 4.02834 QSO 33554433 0 - 300 51666 59 0.42218 GALAXY 32 0 - 300 51666 60 0.08942 GALAXY 64 0 - 300 51666 61 0.15258 GALAXY 4 0 - 300 51666 62 1.42677 QSO 4 0 - 300 51666 63 0.00014 STAR 8196 0 - 300 51666 64 0.00012 STAR 42991616 0 - 300 51666 65 0.14842 GALAXY 64 0 - 300 51666 66 0.12615 GALAXY 64 0 - 300 51666 67 0.12620 GALAXY 64 0 - 300 51666 68 0.14967 GALAXY 64 0 - 300 51666 69 0.10769 GALAXY 64 0 - 300 51666 70 0.10320 GALAXY 64 0 - 300 51666 71 0.12824 GALAXY 64 0 - 300 51666 72 0.12657 GALAXY 64 0 - 300 51666 73 0.12459 GALAXY 4160 0 - 300 51666 74 0.42838 GALAXY 32 0 - 300 51666 75 1.43880 QSO 1048580 0 - 300 51666 76 0.00000 UNKNOWN 0 16 - 300 51666 77 0.02341 GALAXY 64 0 - 300 51666 78 0.14846 GALAXY 64 0 - 300 51666 79 0.25091 GALAXY 64 0 - 300 51666 80 0.15084 GALAXY 64 0 - 300 51666 81 -0.00023 STAR 42991616 0 - 300 51666 82 0.00038 STAR 1056772 0 - 300 51666 83 0.00045 STAR 8192 0 - 300 51666 84 0.26067 GALAXY 32 0 - 300 51666 85 1.64829 QSO 1 0 - 300 51666 86 0.07861 GALAXY 64 0 - 300 51666 87 0.08304 GALAXY 64 0 - 300 51666 88 1.47973 QSO 4 0 - 300 51666 89 0.00000 UNKNOWN 0 16 - 300 51666 90 0.00091 STAR 9445376 0 - 300 51666 91 0.00000 MISSING 0 0 - 300 51666 92 0.00007 UNKNOWN 64 0 - 300 51666 93 0.08493 GALAXY 64 0 - 300 51666 94 0.08946 GALAXY 64 0 - 300 51666 95 0.41673 GALAXY 32 0 - 300 51666 96 0.29293 GALAXY 96 0 - 300 51666 97 4.41741 QSO 41943041 0 - 300 51666 98 0.07486 GALAXY 64 0 - 300 51666 99 0.12303 GALAXY 64 0 - 300 51666 100 -0.00028 STAR 8192 0 - 300 51666 101 1.44664 QSO 4 0 - 300 51666 102 0.42680 GALAXY 32 0 - 300 51666 103 0.43089 GALAXY 32 0 - 300 51666 104 0.35623 GALAXY 32 0 - 300 51666 105 0.02363 GALAXY 96 0 - 300 51666 106 0.00009 STAR 1056768 0 - 300 51666 107 0.35991 GALAXY 2097152 0 - 300 51666 108 0.14932 GALAXY 64 0 - 300 51666 109 0.14986 GALAXY 64 0 - 300 51666 110 0.07528 GALAXY 64 0 - 300 51666 111 0.14752 GALAXY 64 0 - 300 51666 112 0.08316 GALAXY 64 0 - 300 51666 113 0.19356 GALAXY 64 0 - 300 51666 114 0.15069 GALAXY 64 0 - 300 51666 115 0.26383 GALAXY 32 0 - 300 51666 116 0.15004 GALAXY 64 0 - 300 51666 117 0.15006 GALAXY 64 0 - 300 51666 118 0.00000 UNKNOWN 0 16 - 300 51666 119 0.52366 QSO 2097152 0 - 300 51666 120 0.14876 GALAXY 64 0 - 300 51666 121 0.07752 GALAXY 64 0 - 300 51666 122 0.21185 GALAXY 4 0 - 300 51666 123 0.14873 GALAXY 64 0 - 300 51666 124 0.08485 GALAXY 96 0 - 300 51666 125 0.15014 GALAXY 64 0 - 300 51666 126 0.00000 UNKNOWN 0 16 - 300 51666 127 0.14925 GALAXY 64 0 - 300 51666 128 0.00043 STAR 1056768 0 - 300 51666 129 0.00011 STAR 4194304 0 - 300 51666 130 0.30984 QSO 1 0 - 300 51666 131 0.05319 GALAXY 4 0 - 300 51666 132 0.52223 UNKNOWN 67108896 0 - 300 51666 133 0.14301 GALAXY 64 0 - 300 51666 134 0.09303 GALAXY 64 0 - 300 51666 135 0.60010 QSO 7680 0 - 300 51666 136 0.07877 GALAXY 64 0 - 300 51666 137 1.25229 QSO 16 0 - 300 51666 138 -0.00065 STAR 1 0 - 300 51666 139 0.12768 GALAXY 64 0 - 300 51666 140 0.51508 QSO 1055748 0 - 300 51666 141 0.18678 GALAXY 68 0 - 300 51666 142 0.31770 GALAXY 32 0 - 300 51666 143 0.12708 GALAXY 64 0 - 300 51666 144 0.35933 GALAXY 32 0 - 300 51666 145 0.03078 GALAXY 64 0 - 300 51666 146 0.41126 GALAXY 32 0 - 300 51666 147 0.00036 STAR 8192 0 - 300 51666 148 0.02672 GALAXY 64 0 - 300 51666 149 0.91238 QSO 4 0 - 300 51666 150 0.26059 GALAXY 32 0 - 300 51666 151 0.19853 GALAXY 64 0 - 300 51666 152 0.26159 GALAXY 32 0 - 300 51666 153 0.00000 UNKNOWN 0 16 - 300 51666 154 0.10215 GALAXY 64 0 - 300 51666 155 0.42945 GALAXY 32 0 - 300 51666 156 1.57795 QSO 34603008 0 - 300 51666 157 0.20292 GALAXY 64 0 - 300 51666 158 0.10256 GALAXY 64 0 - 300 51666 159 0.42663 GALAXY 32 0 - 300 51666 160 0.10190 GALAXY 64 0 - 300 51666 161 0.08544 GALAXY 64 0 - 300 51666 162 0.07489 GALAXY 64 0 - 300 51666 163 0.59763 UNKNOWN 2097152 0 - 300 51666 164 0.00000 UNKNOWN 0 16 - 300 51666 165 0.14896 GALAXY 64 0 - 300 51666 166 -0.00007 STAR 33554433 0 - 300 51666 167 0.55481 QSO 1048580 0 - 300 51666 168 0.10207 GALAXY 96 0 - 300 51666 169 0.11562 GALAXY 64 0 - 300 51666 170 0.00090 STAR 1056772 0 - 300 51666 171 -0.00014 STAR 8192 0 - 300 51666 172 0.08339 GALAXY 64 0 - 300 51666 173 0.27003 QSO 4 0 - 300 51666 174 0.50169 QSO 34603009 0 - 300 51666 175 0.14773 GALAXY 64 0 - 300 51666 176 0.17038 GALAXY 64 0 - 300 51666 177 0.00016 STAR 16777216 0 - 300 51666 178 0.45908 GALAXY 32 0 - 300 51666 179 0.25199 GALAXY 32 0 - 300 51666 180 0.08529 GALAXY 64 0 - 300 51666 181 0.73967 QSO 1048580 0 - 300 51666 182 0.00007 UNKNOWN 4 0 - 300 51666 183 0.08573 GALAXY 64 0 - 300 51666 184 0.16654 GALAXY 64 0 - 300 51666 185 0.12753 GALAXY 64 0 - 300 51666 186 0.00000 UNKNOWN 0 16 - 300 51666 187 0.17099 GALAXY 64 0 - 300 51666 188 0.32324 GALAXY 32 0 - 300 51666 189 0.06184 GALAXY 64 0 - 300 51666 190 0.08923 GALAXY 64 0 - 300 51666 191 -0.00032 STAR 5 0 - 300 51666 192 0.12748 GALAXY 64 0 - 300 51666 193 1.21050 QSO 1048580 0 - 300 51666 194 0.10183 GALAXY 64 0 - 300 51666 195 0.55331 QSO 4 0 - 300 51666 196 0.07197 GALAXY 64 0 - 300 51666 197 0.10183 GALAXY 64 0 - 300 51666 198 0.09221 GALAXY 64 0 - 300 51666 199 0.46751 GALAXY 67108896 0 - 300 51666 200 0.07216 GALAXY 64 0 - 300 51666 201 0.00000 UNKNOWN 0 16 - 300 51666 202 -0.00026 STAR 0 2 - 300 51666 203 0.08556 GALAXY 64 0 - 300 51666 204 0.00015 STAR 34611200 0 - 300 51666 205 0.00020 STAR 0 2 - 300 51666 206 0.14963 GALAXY 64 0 - 300 51666 207 0.07639 GALAXY 64 0 - 300 51666 208 0.00049 STAR 1056768 0 - 300 51666 209 0.16619 GALAXY 2097248 0 - 300 51666 210 0.00007 STAR 4194304 0 - 300 51666 211 0.36146 GALAXY 32 0 - 300 51666 212 0.02634 GALAXY 64 0 - 300 51666 213 0.11502 GALAXY 64 0 - 300 51666 214 0.14737 GALAXY 64 0 - 300 51666 215 -0.00029 STAR 1056772 0 - 300 51666 216 0.21147 GALAXY 64 0 - 300 51666 217 0.20984 GALAXY 64 0 - 300 51666 218 0.00008 STAR 42991616 512 - 300 51666 219 0.23436 GALAXY 2097220 0 - 300 51666 220 0.00048 STAR 1056768 0 - 300 51666 221 2.04826 QSO 16 0 - 300 51666 222 0.14421 GALAXY 64 0 - 300 51666 223 0.24243 GALAXY 64 0 - 300 51666 224 0.07104 GALAXY 64 0 - 300 51666 225 0.07691 GALAXY 96 0 - 300 51666 226 0.07667 GALAXY 64 0 - 300 51666 227 0.21870 GALAXY 32 0 - 300 51666 228 0.10177 GALAXY 64 0 - 300 51666 229 0.22014 GALAXY 64 0 - 300 51666 230 0.00063 STAR 42991616 512 - 300 51666 231 0.27907 GALAXY 32 0 - 300 51666 232 0.00017 GALAXY 4194304 0 - 300 51666 233 0.08974 GALAXY 64 0 - 300 51666 234 0.48490 GALAXY 16777216 0 - 300 51666 235 0.14625 GALAXY 64 0 - 300 51666 236 0.07761 GALAXY 64 0 - 300 51666 237 0.25235 GALAXY 96 0 - 300 51666 238 0.00034 STAR 8396800 0 - 300 51666 239 0.14909 GALAXY 64 0 - 300 51666 240 0.00000 UNKNOWN 0 16 - 300 51666 241 0.39733 GALAXY 67108896 0 - 300 51666 242 0.07659 GALAXY 68 0 - 300 51666 243 0.00041 STAR 34611200 0 - 300 51666 244 0.00038 STAR 8196 0 - 300 51666 245 0.00017 STAR 9437184 0 - 300 51666 246 0.21586 GALAXY 96 0 - 300 51666 247 0.08919 GALAXY 64 0 - 300 51666 248 0.07703 GALAXY 64 0 - 300 51666 249 0.13209 GALAXY 64 0 - 300 51666 250 0.00000 UNKNOWN 64 0 - 300 51666 251 0.39858 GALAXY 32 0 - 300 51666 252 0.00045 STAR 0 34 - 300 51666 253 0.13248 GALAXY 64 0 - 300 51666 254 0.07639 GALAXY 64 0 - 300 51666 255 0.13307 GALAXY 64 0 - 300 51666 256 0.07342 GALAXY 64 0 - 300 51666 257 0.04759 GALAXY 64 0 - 300 51666 258 0.11521 GALAXY 64 0 - 300 51666 259 0.00000 UNKNOWN 0 16 - 300 51666 260 0.13266 GALAXY 64 0 - 300 51666 261 0.02295 GALAXY 64 0 - 300 51666 262 0.08751 GALAXY 64 0 - 300 51666 263 0.08812 GALAXY 96 0 - 300 51666 264 0.11412 GALAXY 64 0 - 300 51666 265 0.35928 GALAXY 32 0 - 300 51666 266 0.07725 GALAXY 64 0 - 300 51666 267 0.38173 GALAXY 32 0 - 300 51666 268 1.53853 QSO 4 0 - 300 51666 269 0.00000 UNKNOWN 0 16 - 300 51666 270 0.08781 GALAXY 64 0 - 300 51666 271 0.08838 GALAXY 64 0 - 300 51666 272 0.08714 GALAXY 64 0 - 300 51666 273 0.14894 GALAXY 64 0 - 300 51666 274 0.38145 GALAXY 32 0 - 300 51666 275 0.33003 GALAXY 32 0 - 300 51666 276 0.04782 GALAXY 64 0 - 300 51666 277 0.00113 STAR 1056768 0 - 300 51666 278 0.24489 GALAXY 1055748 0 - 300 51666 279 0.08887 GALAXY 64 0 - 300 51666 280 0.08803 GALAXY 64 0 - 300 51666 281 0.07746 GALAXY 64 0 - 300 51666 282 0.14698 GALAXY 4 0 - 300 51666 283 0.08831 GALAXY 64 0 - 300 51666 284 1.44226 QSO 1048580 0 - 300 51666 285 0.07630 GALAXY 64 0 - 300 51666 286 0.16703 GALAXY 64 0 - 300 51666 287 0.49559 GALAXY 4096 0 - 300 51666 288 0.00008 STAR 9437188 0 - 300 51666 289 0.14907 GALAXY 96 0 - 300 51666 290 0.07357 GALAXY 64 0 - 300 51666 291 0.38812 GALAXY 32 0 - 300 51666 292 0.08909 GALAXY 64 0 - 300 51666 293 0.00111 STAR 1056768 0 - 300 51666 294 2.10548 QSO 64 0 - 300 51666 295 0.07617 GALAXY 64 0 - 300 51666 296 0.07664 GALAXY 64 0 - 300 51666 297 0.08988 GALAXY 64 0 - 300 51666 298 0.11380 GALAXY 64 0 - 300 51666 299 0.00000 UNKNOWN 0 16 - 300 51666 300 0.44568 GALAXY 16777216 0 - 300 51666 301 0.21271 GALAXY 64 0 - 300 51666 302 0.08911 GALAXY 64 0 - 300 51666 303 0.17628 GALAXY 64 0 - 300 51666 304 0.62332 QSO 35651584 0 - 300 51666 305 0.10207 GALAXY 64 0 - 300 51666 306 -0.00009 STAR 64 0 - 300 51666 307 -0.00026 STAR 0 2 - 300 51666 308 0.28248 GALAXY 32 0 - 300 51666 309 0.10168 GALAXY 96 0 - 300 51666 310 0.00042 STAR 8192 0 - 300 51666 311 0.07334 GALAXY 68 0 - 300 51666 312 0.08904 GALAXY 64 0 - 300 51666 313 0.00043 STAR 1 0 - 300 51666 314 0.00059 STAR 8192 0 - 300 51666 315 0.14599 GALAXY 64 0 - 300 51666 316 1.09769 QSO 4 0 - 300 51666 317 0.00000 UNKNOWN 0 16 - 300 51666 318 0.08784 GALAXY 64 0 - 300 51666 319 0.00025 STAR 0 34 - 300 51666 320 0.07824 GALAXY 64 0 - 300 51666 321 0.00093 STAR 8192 0 - 300 51666 322 0.18611 GALAXY 64 0 - 300 51666 323 0.00013 STAR 0 2 - 300 51666 324 0.23679 GALAXY 64 0 - 300 51666 325 0.06633 GALAXY 96 0 - 300 51666 326 0.32366 GALAXY 32 0 - 300 51666 327 1.67097 QSO 36700160 0 - 300 51666 328 0.00000 UNKNOWN 0 16 - 300 51666 329 0.42909 GALAXY 32 0 - 300 51666 330 0.18046 GALAXY 64 0 - 300 51666 331 0.00015 STAR 4096 0 - 300 51666 332 0.52826 UNKNOWN 2097152 0 - 300 51666 333 0.03367 GALAXY 64 0 - 300 51666 334 0.20915 GALAXY 64 0 - 300 51666 335 0.08877 GALAXY 64 0 - 300 51666 336 0.16454 GALAXY 96 0 - 300 51666 337 0.40813 GALAXY 1 0 - 300 51666 338 0.40301 GALAXY 32 0 - 300 51666 339 1.76668 QSO 1048580 0 - 300 51666 340 0.16452 GALAXY 64 0 - 300 51666 341 0.07758 GALAXY 64 0 - 300 51666 342 -0.00007 STAR 8192 0 - 300 51666 343 0.07735 GALAXY 64 0 - 300 51666 344 0.00000 UNKNOWN 1048580 0 - 300 51666 345 0.11024 GALAXY 64 0 - 300 51666 346 0.14427 GALAXY 96 0 - 300 51666 347 0.07712 GALAXY 64 0 - 300 51666 348 0.07716 GALAXY 64 0 - 300 51666 349 0.00003 STAR 0 2 - 300 51666 350 0.00079 STAR 1056768 0 - 300 51666 351 0.00073 STAR 8192 0 - 300 51666 352 0.07226 GALAXY 96 0 - 300 51666 353 0.00049 STAR 8192 0 - 300 51666 354 0.18596 GALAXY 64 0 - 300 51666 355 0.47368 UNKNOWN 4096 0 - 300 51666 356 0.00000 UNKNOWN 0 16 - 300 51666 357 0.00103 STAR 34611200 0 - 300 51666 358 -0.00002 STAR 4194304 0 - 300 51666 359 0.07178 GALAXY 64 0 - 300 51666 360 0.00045 STAR 8192 0 - 300 51666 361 0.00041 STAR 34611200 0 - 300 51666 362 1.43345 QSO 4 0 - 300 51666 363 0.15149 GALAXY 64 0 - 300 51666 364 0.08906 GALAXY 64 0 - 300 51666 365 0.41500 GALAXY 32 0 - 300 51666 366 0.15981 GALAXY 64 0 - 300 51666 367 0.16489 GALAXY 64 0 - 300 51666 368 0.42274 GALAXY 32 0 - 300 51666 369 0.00022 STAR 0 34 - 300 51666 370 0.50641 UNKNOWN 67108896 0 - 300 51666 371 0.02804 GALAXY 64 0 - 300 51666 372 0.15232 GALAXY 64 0 - 300 51666 373 0.28704 GALAXY 32 0 - 300 51666 374 0.15136 GALAXY 64 0 - 300 51666 375 0.15033 GALAXY 64 0 - 300 51666 376 0.15081 GALAXY 64 0 - 300 51666 377 0.08936 GALAXY 64 0 - 300 51666 378 0.15203 GALAXY 64 0 - 300 51666 379 0.00046 STAR 9445376 0 - 300 51666 380 0.00000 UNKNOWN 0 16 - 300 51666 381 0.14497 GALAXY 64 0 - 300 51666 382 0.15893 GALAXY 64 0 - 300 51666 383 0.08897 GALAXY 64 0 - 300 51666 384 0.08915 GALAXY 64 0 - 300 51666 385 0.00117 STAR 1056768 0 - 300 51666 386 0.96358 QSO 42991616 0 - 300 51666 387 0.48823 GALAXY 67108896 0 - 300 51666 388 0.00027 STAR 4 0 - 300 51666 389 0.08977 GALAXY 96 0 - 300 51666 390 0.13236 GALAXY 64 0 - 300 51666 391 0.08982 GALAXY 96 0 - 300 51666 392 0.13546 GALAXY 64 0 - 300 51666 393 0.08919 GALAXY 64 0 - 300 51666 394 0.08985 GALAXY 64 0 - 300 51666 395 0.00000 UNKNOWN 0 16 - 300 51666 396 0.08961 GALAXY 64 0 - 300 51666 397 0.08847 GALAXY 64 0 - 300 51666 398 0.08951 GALAXY 64 0 - 300 51666 399 0.08995 GALAXY 64 0 - 300 51666 400 0.24238 GALAXY 32 0 - 300 51666 401 0.00029 STAR 1056768 0 - 300 51666 402 0.09023 GALAXY 64 0 - 300 51666 403 0.08988 GALAXY 64 0 - 300 51666 404 0.08949 GALAXY 64 0 - 300 51666 405 0.00000 UNKNOWN 0 16 - 300 51666 406 0.08907 GALAXY 64 0 - 300 51666 407 0.69295 QSO 1048580 0 - 300 51666 408 0.11588 GALAXY 64 0 - 300 51666 409 0.09144 GALAXY 96 0 - 300 51666 410 0.14461 GALAXY 64 0 - 300 51666 411 0.25914 GALAXY 4 0 - 300 51666 412 0.07109 GALAXY 64 0 - 300 51666 413 0.69910 QSO 42998784 0 - 300 51666 414 0.00000 MISSING 0 0 - 300 51666 415 0.96162 QSO 1048580 0 - 300 51666 416 0.06593 GALAXY 64 0 - 300 51666 417 0.47075 QSO 4 0 - 300 51666 418 0.08909 GALAXY 96 0 - 300 51666 419 0.07183 GALAXY 64 0 - 300 51666 420 0.16815 GALAXY 64 0 - 300 51666 421 0.08959 GALAXY 64 0 - 300 51666 422 0.04810 GALAXY 64 0 - 300 51666 423 0.00000 UNKNOWN 0 16 - 300 51666 424 0.27616 GALAXY 96 0 - 300 51666 425 0.15064 GALAXY 96 0 - 300 51666 426 2.50454 QSO 1048580 0 - 300 51666 427 0.09062 GALAXY 64 0 - 300 51666 428 0.16667 GALAXY 64 0 - 300 51666 429 0.08810 GALAXY 64 0 - 300 51666 430 0.08771 GALAXY 64 0 - 300 51666 431 0.00112 STAR 8196 0 - 300 51666 432 0.08926 GALAXY 64 0 - 300 51666 433 0.00015 STAR 64 0 - 300 51666 434 0.08822 GALAXY 96 0 - 300 51666 435 0.09028 GALAXY 64 0 - 300 51666 436 0.14994 GALAXY 64 0 - 300 51666 437 0.14648 GALAXY 64 0 - 300 51666 438 0.08941 GALAXY 64 0 - 300 51666 439 0.48053 GALAXY 67108896 0 - 300 51666 440 0.00025 STAR 9445376 0 - 300 51666 441 0.17438 GALAXY 64 0 - 300 51666 442 1.54582 QSO 128 0 - 300 51666 443 0.07114 GALAXY 64 0 - 300 51666 444 0.64777 QSO 1048580 0 - 300 51666 445 0.08865 GALAXY 96 0 - 300 51666 446 0.04816 GALAXY 64 0 - 300 51666 447 0.09031 GALAXY 96 0 - 300 51666 448 0.08955 GALAXY 96 0 - 300 51666 449 0.00036 STAR 1056772 0 - 300 51666 450 -0.00020 STAR 6144 0 - 300 51666 451 0.08945 GALAXY 64 0 - 300 51666 452 0.12455 GALAXY 64 0 - 300 51666 453 0.28376 GALAXY 96 0 - 300 51666 454 0.17093 GALAXY 64 0 - 300 51666 455 0.09053 GALAXY 64 0 - 300 51666 456 0.00000 UNKNOWN 0 16 - 300 51666 457 0.00041 STAR 1056768 0 - 300 51666 458 0.00040 STAR 9437184 0 - 300 51666 459 0.00082 STAR 0 2 - 300 51666 460 0.42286 GALAXY 32 0 - 300 51666 461 3.60097 QSO 524289 0 - 300 51666 462 0.11582 GALAXY 96 0 - 300 51666 463 0.11579 GALAXY 64 0 - 300 51666 464 0.08606 GALAXY 64 0 - 300 51666 465 0.08808 GALAXY 64 0 - 300 51666 466 0.18011 GALAXY 64 0 - 300 51666 467 0.00000 UNKNOWN 0 16 - 300 51666 468 0.17985 GALAXY 4 0 - 300 51666 469 0.00013 STAR 64 0 - 300 51666 470 0.00015 STAR 0 2 - 300 51666 471 0.50219 GALAXY 67108896 0 - 300 51666 472 4.29072 QSO 1 0 - 300 51666 473 0.00034 STAR 0 34 - 300 51666 474 0.12931 GALAXY 64 0 - 300 51666 475 0.49828 GALAXY 67108896 0 - 300 51666 476 0.06279 GALAXY 64 0 - 300 51666 477 0.25869 GALAXY 96 0 - 300 51666 478 0.08691 GALAXY 64 0 - 300 51666 479 0.07113 GALAXY 64 0 - 300 51666 480 0.04606 GALAXY 64 0 - 300 51666 481 0.18031 GALAXY 64 0 - 300 51666 482 0.12915 GALAXY 64 0 - 300 51666 483 0.07077 GALAXY 64 0 - 300 51666 484 0.18044 GALAXY 64 0 - 300 51666 485 0.04599 GALAXY 64 0 - 300 51666 486 0.00000 UNKNOWN 0 16 - 300 51666 487 0.14807 GALAXY 64 0 - 300 51666 488 1.08298 QSO 7172 0 - 300 51666 489 0.43216 GALAXY 32 0 - 300 51666 490 0.10043 GALAXY 64 0 - 300 51666 491 0.94688 QSO 1048580 0 - 300 51666 492 0.11179 GALAXY 64 0 - 300 51666 493 0.08596 GALAXY 64 0 - 300 51666 494 0.14772 GALAXY 64 0 - 300 51666 495 0.14731 GALAXY 64 0 - 300 51666 496 0.14763 GALAXY 64 0 - 300 51666 497 1.55732 QSO 1 0 - 300 51666 498 0.42393 GALAXY 32 0 - 300 51666 499 0.00077 STAR 8192 0 - 300 51666 500 0.14728 GALAXY 64 0 - 300 51666 501 0.06250 GALAXY 64 0 - 300 51666 502 0.00057 STAR 0 34 - 300 51666 503 0.14702 GALAXY 64 0 - 300 51666 504 0.17057 GALAXY 64 0 - 300 51666 505 0.08553 GALAXY 64 0 - 300 51666 506 0.10006 GALAXY 64 0 - 300 51666 507 0.13025 GALAXY 64 0 - 300 51666 508 0.11056 GALAXY 64 0 - 300 51666 509 0.09938 GALAXY 64 0 - 300 51666 510 0.00047 STAR 42999808 0 - 300 51666 511 0.00112 STAR 1056768 0 - 300 51666 512 0.00090 STAR 1056768 0 - 300 51666 513 0.45319 GALAXY 32 0 - 300 51666 514 0.14580 GALAXY 64 0 - 300 51666 515 0.14613 GALAXY 64 0 - 300 51666 516 0.19664 GALAXY 64 0 - 300 51666 517 0.14727 GALAXY 64 0 - 300 51666 518 0.04826 GALAXY 64 0 - 300 51666 519 0.00000 UNKNOWN 0 16 - 300 51666 520 0.00022 STAR 1056772 0 - 300 51666 521 0.08881 GALAXY 64 0 - 300 51666 522 0.11455 UNKNOWN 34611200 0 - 300 51666 523 0.26618 GALAXY 32 0 - 300 51666 524 0.37529 GALAXY 32 0 - 300 51666 525 0.08831 GALAXY 64 0 - 300 51666 526 0.08896 GALAXY 96 0 - 300 51666 527 0.14553 GALAXY 96 0 - 300 51666 528 0.18064 GALAXY 64 0 - 300 51666 529 0.14590 GALAXY 96 0 - 300 51666 530 0.17514 GALAXY 64 0 - 300 51666 531 0.37517 GALAXY 32 0 - 300 51666 532 0.26420 GALAXY 96 0 - 300 51666 533 0.31851 GALAXY 32 0 - 300 51666 534 0.40519 QSO 128 0 - 300 51666 535 0.18935 GALAXY 64 0 - 300 51666 536 0.00000 UNKNOWN 0 16 - 300 51666 537 0.35151 GALAXY 32 0 - 300 51666 538 0.43178 GALAXY 32 0 - 300 51666 539 0.35115 GALAXY 32 0 - 300 51666 540 0.26588 GALAXY 96 0 - 300 51666 541 0.03031 GALAXY 64 0 - 300 51666 542 0.00019 STAR 64 0 - 300 51666 543 3.69642 QSO 1 0 - 300 51666 544 -0.00011 STAR 1056768 0 - 300 51666 545 0.13610 GALAXY 4 0 - 300 51666 546 0.14826 GALAXY 64 0 - 300 51666 547 -0.00049 STAR 1056768 0 - 300 51666 548 0.03033 GALAXY 96 0 - 300 51666 549 1.12969 GALAXY 67108896 0 - 300 51666 550 0.17118 GALAXY 64 0 - 300 51666 551 0.11531 GALAXY 64 0 - 300 51666 552 0.45734 GALAXY 16777216 0 - 300 51666 553 0.19666 GALAXY 2097216 0 - 300 51666 554 1.55573 QSO 4 0 - 300 51666 555 0.00000 UNKNOWN 0 16 - 300 51666 556 0.15703 GALAXY 4 0 - 300 51666 557 0.14704 GALAXY 64 0 - 300 51666 558 0.14686 GALAXY 64 0 - 300 51666 559 0.20054 GALAXY 4 0 - 300 51666 560 1.82931 QSO 1048580 0 - 300 51666 561 0.11575 GALAXY 64 0 - 300 51666 562 0.76244 GALAXY 64 0 - 300 51666 563 0.19625 GALAXY 64 0 - 300 51666 564 0.26430 GALAXY 96 0 - 300 51666 565 0.13618 GALAXY 64 0 - 300 51666 566 0.00009 STAR 1056768 0 - 300 51666 567 0.07213 GALAXY 64 0 - 300 51666 568 0.07096 GALAXY 64 0 - 300 51666 569 0.37545 GALAXY 32 0 - 300 51666 570 0.11675 GALAXY 96 0 - 300 51666 571 0.08791 GALAXY 64 0 - 300 51666 572 1.08605 QSO 7172 0 - 300 51666 573 0.18140 GALAXY 64 0 - 300 51666 574 0.08786 GALAXY 64 0 - 300 51666 575 0.07149 GALAXY 64 0 - 300 51666 576 0.18204 GALAXY 64 0 - 300 51666 577 0.18985 GALAXY 96 0 - 300 51666 578 0.00000 UNKNOWN 0 16 - 300 51666 579 0.09931 GALAXY 64 0 - 300 51666 580 0.13782 GALAXY 64 0 - 300 51666 581 0.00000 UNKNOWN 0 16 - 300 51666 582 0.00007 UNKNOWN 64 0 - 300 51666 583 0.32271 GALAXY 32 0 - 300 51666 584 1.51839 QSO 64 0 - 300 51666 585 0.04565 GALAXY 96 0 - 300 51666 586 0.10226 GALAXY 96 0 - 300 51666 587 0.12975 GALAXY 64 0 - 300 51666 588 0.04833 GALAXY 64 0 - 300 51666 589 0.00022 STAR 4 0 - 300 51666 590 0.10220 GALAXY 64 0 - 300 51666 591 0.00049 STAR 8192 0 - 300 51666 592 0.16614 GALAXY 64 0 - 300 51666 593 0.14030 GALAXY 64 0 - 300 51666 594 0.11568 GALAXY 64 0 - 300 51666 595 0.12673 GALAXY 64 0 - 300 51666 596 0.13924 GALAXY 64 0 - 300 51666 597 0.47058 GALAXY 67108896 0 - 300 51666 598 0.10284 GALAXY 64 0 - 300 51666 599 0.12714 GALAXY 64 0 - 300 51666 600 0.16358 GALAXY 67108896 0 - 300 51666 601 1.53464 QSO 64 0 - 300 51666 602 0.00007 UNKNOWN 96 0 - 300 51666 603 0.11637 GALAXY 64 0 - 300 51666 604 0.11591 GALAXY 96 0 - 300 51666 605 0.00000 UNKNOWN 0 16 - 300 51666 606 0.32262 QSO 1 0 - 300 51666 607 0.14825 GALAXY 64 0 - 300 51666 608 0.07158 GALAXY 64 0 - 300 51666 609 0.14664 GALAXY 64 0 - 300 51666 610 0.14664 GALAXY 64 0 - 300 51666 611 0.15109 GALAXY 64 0 - 300 51666 612 0.08769 GALAXY 96 0 - 300 51666 613 0.10276 GALAXY 96 0 - 300 51666 614 0.33950 QSO 1048580 0 - 300 51666 615 0.04863 GALAXY 64 0 - 300 51666 616 0.14831 GALAXY 64 0 - 300 51666 617 0.00007 UNKNOWN 64 0 - 300 51666 618 0.00012 STAR 0 2 - 300 51666 619 0.07178 GALAXY 96 0 - 300 51666 620 0.00020 STAR 0 34 - 300 51666 621 0.48529 QSO 4 0 - 300 51666 622 0.20501 GALAXY 64 0 - 300 51666 623 0.41078 GALAXY 32 0 - 300 51666 624 0.11547 GALAXY 64 0 - 300 51666 625 0.11546 GALAXY 64 0 - 300 51666 626 0.14691 GALAXY 64 0 - 300 51666 627 0.00000 UNKNOWN 0 16 - 300 51666 628 0.12824 GALAXY 64 0 - 300 51666 629 0.48184 GALAXY 32 0 - 300 51666 630 0.11626 GALAXY 64 0 - 300 51666 631 0.11433 GALAXY 64 0 - 300 51666 632 0.14786 GALAXY 64 0 - 300 51666 633 0.11648 GALAXY 64 0 - 300 51666 634 0.03055 GALAXY 64 0 - 300 51666 635 0.11610 GALAXY 64 0 - 300 51666 636 0.48095 GALAXY 67108896 0 - 300 51666 637 0.11513 GALAXY 64 0 - 300 51666 638 0.11567 GALAXY 64 0 - 300 51666 639 0.11499 GALAXY 64 0 - 300 51666 640 0.02993 GALAXY 64 0 - 301 51641 1 -0.00008 UNKNOWN 64 0 - 301 51641 2 0.02439 GALAXY 64 0 - 301 51641 3 0.14565 GALAXY 64 0 - 301 51641 4 0.11478 GALAXY 64 0 - 301 51641 5 0.10632 GALAXY 64 0 - 301 51641 6 0.18540 GALAXY 64 0 - 301 51641 7 -0.00008 UNKNOWN 64 0 - 301 51641 8 0.02537 GALAXY 64 0 - 301 51641 9 0.00000 UNKNOWN 0 16 - 301 51641 10 0.05417 GALAXY 64 0 - 301 51641 11 0.16383 GALAXY 64 0 - 301 51641 12 0.10509 GALAXY 64 0 - 301 51641 13 0.02913 GALAXY 64 0 - 301 51641 14 0.14472 GALAXY 64 0 - 301 51641 15 0.43563 GALAXY 32 0 - 301 51641 16 0.16043 GALAXY 64 0 - 301 51641 17 1.59160 QSO 1048580 0 - 301 51641 18 -0.00002 STAR 0 2 - 301 51641 19 0.16924 GALAXY 96 0 - 301 51641 20 0.10603 GALAXY 64 0 - 301 51641 21 1.74312 QSO 34603008 0 - 301 51641 22 0.18504 GALAXY 64 0 - 301 51641 23 -0.00008 STAR 1056772 0 - 301 51641 24 -0.00006 STAR 5 0 - 301 51641 25 0.10547 GALAXY 64 0 - 301 51641 26 1.48478 QSO 64 0 - 301 51641 27 0.18390 GALAXY 64 0 - 301 51641 28 0.02460 GALAXY 96 0 - 301 51641 29 0.44514 GALAXY 32 0 - 301 51641 30 0.07044 GALAXY 64 0 - 301 51641 31 0.02438 GALAXY 64 0 - 301 51641 32 0.18349 GALAXY 64 0 - 301 51641 33 0.44098 GALAXY 67108896 0 - 301 51641 34 0.43329 GALAXY 32 0 - 301 51641 35 0.33716 QSO 41943040 0 - 301 51641 36 0.00000 MISSING 0 0 - 301 51641 37 0.04790 GALAXY 64 0 - 301 51641 38 0.00000 UNKNOWN 0 16 - 301 51641 39 -0.00002 STAR 8192 0 - 301 51641 40 0.17442 GALAXY 64 0 - 301 51641 41 0.16517 GALAXY 96 0 - 301 51641 42 0.07376 GALAXY 64 0 - 301 51641 43 0.35075 QSO 4 0 - 301 51641 44 0.00000 UNKNOWN 0 16 - 301 51641 45 0.44461 GALAXY 32 0 - 301 51641 46 0.44182 GALAXY 32 0 - 301 51641 47 0.14426 GALAXY 64 0 - 301 51641 48 0.43396 GALAXY 32 0 - 301 51641 49 0.07818 GALAXY 64 0 - 301 51641 50 0.40204 GALAXY 32 0 - 301 51641 51 3.42359 QSO 9437188 0 - 301 51641 52 0.00000 STAR 8192 0 - 301 51641 53 1.20592 QSO 1048580 0 - 301 51641 54 0.40010 GALAXY 32 0 - 301 51641 55 0.09252 GALAXY 64 0 - 301 51641 56 0.13163 GALAXY 64 0 - 301 51641 57 -0.00006 STAR 1048580 0 - 301 51641 58 0.00030 STAR 8192 0 - 301 51641 59 0.00003 STAR 0 32 - 301 51641 60 2.50759 QSO 1048580 0 - 301 51641 61 0.00008 STAR 0 34 - 301 51641 62 -0.00003 STAR 1056768 0 - 301 51641 63 0.43418 GALAXY 32 0 - 301 51641 64 0.43458 GALAXY 32 0 - 301 51641 65 0.92205 QSO 32 0 - 301 51641 66 0.16185 GALAXY 64 0 - 301 51641 67 0.43560 GALAXY 32 0 - 301 51641 68 0.12213 GALAXY 64 0 - 301 51641 69 0.43999 GALAXY 69206048 0 - 301 51641 70 0.18525 GALAXY 64 0 - 301 51641 71 0.04428 GALAXY 96 0 - 301 51641 72 0.11507 GALAXY 64 0 - 301 51641 73 0.14427 GALAXY 64 0 - 301 51641 74 0.05426 GALAXY 64 0 - 301 51641 75 0.00000 UNKNOWN 0 16 - 301 51641 76 0.10519 GALAXY 64 0 - 301 51641 77 0.18413 GALAXY 64 0 - 301 51641 78 -0.00024 STAR 42999808 0 - 301 51641 79 0.39538 GALAXY 32 0 - 301 51641 80 0.08184 GALAXY 64 0 - 301 51641 81 0.14695 GALAXY 64 0 - 301 51641 82 0.14457 GALAXY 64 0 - 301 51641 83 0.02478 GALAXY 96 0 - 301 51641 84 0.10628 GALAXY 64 0 - 301 51641 85 0.16746 GALAXY 64 0 - 301 51641 86 0.00018 STAR 1 0 - 301 51641 87 0.35331 GALAXY 32 0 - 301 51641 88 0.00024 STAR 8192 0 - 301 51641 89 0.00000 UNKNOWN 0 16 - 301 51641 90 0.18825 GALAXY 4096 0 - 301 51641 91 0.00000 MISSING 0 0 - 301 51641 92 -0.00008 UNKNOWN 9445376 0 - 301 51641 93 0.00035 STAR 8192 0 - 301 51641 94 0.14548 GALAXY 4 0 - 301 51641 95 0.02424 GALAXY 4 0 - 301 51641 96 0.10622 GALAXY 64 0 - 301 51641 97 -0.00004 STAR 16777216 0 - 301 51641 98 2.06025 QSO 1048580 512 - 301 51641 99 0.10616 GALAXY 64 0 - 301 51641 100 0.34852 GALAXY 32 0 - 301 51641 101 0.13191 GALAXY 64 0 - 301 51641 102 0.09348 GALAXY 64 0 - 301 51641 103 0.02475 GALAXY 96 0 - 301 51641 104 -0.00085 STAR 1056768 0 - 301 51641 105 -0.00020 STAR 1056768 0 - 301 51641 106 0.00014 STAR 5 0 - 301 51641 107 0.10904 GALAXY 4 0 - 301 51641 108 0.01144 GALAXY 64 0 - 301 51641 109 0.00000 UNKNOWN 0 16 - 301 51641 110 0.18824 GALAXY 64 0 - 301 51641 111 0.00103 STAR 8192 0 - 301 51641 112 -0.00014 STAR 8192 0 - 301 51641 113 0.35890 GALAXY 32 0 - 301 51641 114 0.00034 STAR 16 0 - 301 51641 115 0.13188 GALAXY 64 0 - 301 51641 116 0.16497 GALAXY 64 0 - 301 51641 117 1.86426 QSO 4 0 - 301 51641 118 0.13147 GALAXY 64 0 - 301 51641 119 0.16288 GALAXY 64 0 - 301 51641 120 0.08173 GALAXY 64 0 - 301 51641 121 0.13031 GALAXY 64 0 - 301 51641 122 1.96901 QSO 1048580 0 - 301 51641 123 0.11500 GALAXY 96 0 - 301 51641 124 0.03004 GALAXY 64 0 - 301 51641 125 0.10514 GALAXY 64 0 - 301 51641 126 0.00000 UNKNOWN 0 16 - 301 51641 127 0.19170 GALAXY 64 0 - 301 51641 128 0.19774 GALAXY 64 0 - 301 51641 129 0.11511 GALAXY 64 0 - 301 51641 130 -0.00021 STAR 2097168 0 - 301 51641 131 0.13143 GALAXY 64 0 - 301 51641 132 1.77029 QSO 4 0 - 301 51641 133 0.17237 GALAXY 64 0 - 301 51641 134 0.16918 GALAXY 64 0 - 301 51641 135 0.18705 GALAXY 64 0 - 301 51641 136 0.08906 GALAXY 64 0 - 301 51641 137 0.00051 STAR 1 0 - 301 51641 138 0.02430 GALAXY 64 0 - 301 51641 139 0.40541 QSO 7172 0 - 301 51641 140 0.02951 GALAXY 68 0 - 301 51641 141 0.00044 STAR 8196 0 - 301 51641 142 0.00000 STAR 4 0 - 301 51641 143 0.15916 GALAXY 64 0 - 301 51641 144 0.10608 GALAXY 64 0 - 301 51641 145 1.55425 QSO 1048580 0 - 301 51641 146 0.16138 GALAXY 96 0 - 301 51641 147 0.35877 GALAXY 32 0 - 301 51641 148 0.35754 GALAXY 32 0 - 301 51641 149 1.21937 QSO 35127296 0 - 301 51641 150 0.00011 STAR 9437188 0 - 301 51641 151 0.16354 GALAXY 5188 0 - 301 51641 152 0.07876 GALAXY 64 0 - 301 51641 153 0.22171 GALAXY 64 0 - 301 51641 154 1.38755 QSO 1048580 0 - 301 51641 155 0.18646 GALAXY 64 0 - 301 51641 156 0.18987 GALAXY 64 0 - 301 51641 157 0.16555 GALAXY 64 0 - 301 51641 158 0.16525 GALAXY 64 0 - 301 51641 159 0.00000 UNKNOWN 0 16 - 301 51641 160 0.09933 QSO 2097152 0 - 301 51641 161 0.10541 GALAXY 64 0 - 301 51641 162 0.02751 GALAXY 64 0 - 301 51641 163 0.13141 GALAXY 64 0 - 301 51641 164 0.10475 GALAXY 64 0 - 301 51641 165 0.06950 GALAXY 96 0 - 301 51641 166 0.32840 GALAXY 32 0 - 301 51641 167 -0.00002 STAR 4 0 - 301 51641 168 0.13158 GALAXY 96 0 - 301 51641 169 0.50938 GALAXY 33554433 0 - 301 51641 170 0.32750 GALAXY 32 0 - 301 51641 171 0.32660 GALAXY 32 0 - 301 51641 172 0.00000 UNKNOWN 0 16 - 301 51641 173 0.19695 GALAXY 64 0 - 301 51641 174 0.10804 GALAXY 64 0 - 301 51641 175 0.15695 GALAXY 64 0 - 301 51641 176 0.02951 GALAXY 64 0 - 301 51641 177 0.18904 GALAXY 64 0 - 301 51641 178 0.14383 GALAXY 64 0 - 301 51641 179 0.07885 GALAXY 64 0 - 301 51641 180 0.02916 GALAXY 64 0 - 301 51641 181 0.28008 GALAXY 1 0 - 301 51641 182 -0.00008 UNKNOWN 64 0 - 301 51641 183 0.14343 GALAXY 64 0 - 301 51641 184 0.16077 GALAXY 64 0 - 301 51641 185 0.15454 GALAXY 64 0 - 301 51641 186 0.16715 GALAXY 64 0 - 301 51641 187 -0.00032 STAR 8196 0 - 301 51641 188 0.07017 GALAXY 64 0 - 301 51641 189 0.15705 GALAXY 64 0 - 301 51641 190 0.08941 GALAXY 64 0 - 301 51641 191 0.16661 GALAXY 64 0 - 301 51641 192 0.10592 GALAXY 64 0 - 301 51641 193 0.15557 GALAXY 64 0 - 301 51641 194 0.00000 UNKNOWN 0 16 - 301 51641 195 0.14327 GALAXY 96 0 - 301 51641 196 0.29113 GALAXY 32 0 - 301 51641 197 0.06988 GALAXY 64 0 - 301 51641 198 0.00009 STAR 42999808 0 - 301 51641 199 0.10507 GALAXY 64 0 - 301 51641 200 0.16700 GALAXY 96 0 - 301 51641 201 0.08880 GALAXY 64 0 - 301 51641 202 0.18816 GALAXY 64 0 - 301 51641 203 0.40070 GALAXY 32 0 - 301 51641 204 0.08683 GALAXY 64 0 - 301 51641 205 0.15039 GALAXY 64 0 - 301 51641 206 0.19005 GALAXY 64 0 - 301 51641 207 0.39896 GALAXY 32 0 - 301 51641 208 0.19913 GALAXY 64 0 - 301 51641 209 -0.00011 STAR 0 34 - 301 51641 210 0.18852 GALAXY 64 0 - 301 51641 211 0.14737 GALAXY 64 0 - 301 51641 212 0.19564 GALAXY 64 0 - 301 51641 213 0.16324 GALAXY 64 0 - 301 51641 214 0.06920 GALAXY 64 0 - 301 51641 215 -0.00031 STAR 1 0 - 301 51641 216 0.15072 GALAXY 64 0 - 301 51641 217 0.00000 UNKNOWN 0 16 - 301 51641 218 0.39573 GALAXY 2097184 0 - 301 51641 219 0.03039 GALAXY 64 0 - 301 51641 220 0.16195 GALAXY 64 0 - 301 51641 221 0.07907 GALAXY 64 0 - 301 51641 222 -0.00024 STAR 34603008 0 - 301 51641 223 0.17903 UNKNOWN 1048580 0 - 301 51641 224 0.06955 GALAXY 64 0 - 301 51641 225 0.16787 GALAXY 64 0 - 301 51641 226 0.00020 STAR 4 0 - 301 51641 227 0.19598 GALAXY 64 0 - 301 51641 228 0.11823 GALAXY 64 0 - 301 51641 229 0.15092 GALAXY 64 0 - 301 51641 230 0.00010 STAR 1056768 0 - 301 51641 231 -0.00017 STAR 0 96 - 301 51641 232 0.01215 UNKNOWN 42991616 0 - 301 51641 233 0.03011 GALAXY 64 0 - 301 51641 234 0.16306 GALAXY 64 0 - 301 51641 235 0.06914 GALAXY 64 0 - 301 51641 236 0.14335 GALAXY 64 0 - 301 51641 237 0.03020 GALAXY 64 0 - 301 51641 238 0.35712 GALAXY 32 0 - 301 51641 239 0.00000 UNKNOWN 0 16 - 301 51641 240 0.19609 GALAXY 64 0 - 301 51641 241 0.10304 GALAXY 64 0 - 301 51641 242 0.19081 GALAXY 64 0 - 301 51641 243 0.11453 GALAXY 64 0 - 301 51641 244 0.00001 STAR 9437184 0 - 301 51641 245 0.00003 STAR 4 0 - 301 51641 246 0.06884 GALAXY 64 0 - 301 51641 247 0.10693 GALAXY 64 0 - 301 51641 248 0.89637 QSO 4 0 - 301 51641 249 0.11564 GALAXY 64 0 - 301 51641 250 0.00000 UNKNOWN 0 16 - 301 51641 251 0.00007 STAR 8192 0 - 301 51641 252 0.24729 GALAXY 4 0 - 301 51641 253 -0.00012 STAR 1056772 0 - 301 51641 254 0.09121 GALAXY 64 0 - 301 51641 255 1.88437 QSO 4 0 - 301 51641 256 0.16188 GALAXY 64 0 - 301 51641 257 0.14690 GALAXY 64 0 - 301 51641 258 0.24834 GALAXY 96 0 - 301 51641 259 1.93286 QSO 4 0 - 301 51641 260 0.11790 GALAXY 64 0 - 301 51641 261 0.08793 GALAXY 64 0 - 301 51641 262 0.20101 GALAXY 64 0 - 301 51641 263 1.98348 QSO 4 0 - 301 51641 264 0.93457 QSO 2097172 0 - 301 51641 265 0.19492 GALAXY 64 0 - 301 51641 266 2.33237 QSO 4 0 - 301 51641 267 0.08940 GALAXY 64 0 - 301 51641 268 0.42520 GALAXY 32 0 - 301 51641 269 0.00000 UNKNOWN 0 16 - 301 51641 270 0.10481 GALAXY 64 0 - 301 51641 271 0.14609 GALAXY 64 0 - 301 51641 272 0.22586 GALAXY 64 0 - 301 51641 273 0.14272 GALAXY 64 0 - 301 51641 274 0.14257 GALAXY 64 0 - 301 51641 275 0.14665 GALAXY 64 0 - 301 51641 276 0.07201 GALAXY 64 0 - 301 51641 277 0.00001 STAR 1 0 - 301 51641 278 0.10605 GALAXY 64 0 - 301 51641 279 0.14323 GALAXY 64 0 - 301 51641 280 1.79233 QSO 1048580 0 - 301 51641 281 0.11688 GALAXY 64 0 - 301 51641 282 0.14889 GALAXY 64 0 - 301 51641 283 0.15118 GALAXY 64 0 - 301 51641 284 0.00000 UNKNOWN 0 16 - 301 51641 285 0.14826 GALAXY 64 0 - 301 51641 286 0.15095 GALAXY 64 0 - 301 51641 287 2.00415 QSO 4 0 - 301 51641 288 0.19241 GALAXY 64 0 - 301 51641 289 0.02673 GALAXY 64 0 - 301 51641 290 0.14258 GALAXY 64 0 - 301 51641 291 0.14697 GALAXY 64 0 - 301 51641 292 0.14717 GALAXY 64 0 - 301 51641 293 0.14959 GALAXY 96 0 - 301 51641 294 0.14644 GALAXY 64 0 - 301 51641 295 0.14292 GALAXY 4160 0 - 301 51641 296 0.14939 GALAXY 64 0 - 301 51641 297 0.14744 GALAXY 64 0 - 301 51641 298 0.14627 GALAXY 96 0 - 301 51641 299 0.14260 GALAXY 64 0 - 301 51641 300 0.19838 GALAXY 64 0 - 301 51641 301 -0.00000 STAR 4194304 0 - 301 51641 302 0.29004 GALAXY 32 0 - 301 51641 303 -0.00003 STAR 1056768 0 - 301 51641 304 0.03757 GALAXY 64 0 - 301 51641 305 0.13914 QSO 16384 0 - 301 51641 306 1.35737 QSO 1048580 0 - 301 51641 307 4.40566 QSO 33554433 0 - 301 51641 308 1.66633 QSO 36700160 0 - 301 51641 309 0.16313 GALAXY 64 0 - 301 51641 310 0.31750 GALAXY 2097152 0 - 301 51641 311 0.08227 GALAXY 64 0 - 301 51641 312 0.18863 GALAXY 64 0 - 301 51641 313 0.10461 GALAXY 64 0 - 301 51641 314 0.42668 GALAXY 32 0 - 301 51641 315 0.00000 UNKNOWN 0 16 - 301 51641 316 0.00007 STAR 1048580 0 - 301 51641 317 0.10399 GALAXY 64 0 - 301 51641 318 0.11726 GALAXY 64 0 - 301 51641 319 1.51195 QSO 3153408 0 - 301 51641 320 0.00002 STAR 0 2 - 301 51641 321 0.13585 GALAXY 64 0 - 301 51641 322 0.00011 STAR 4 0 - 301 51641 323 0.06242 GALAXY 64 0 - 301 51641 324 -0.00023 STAR 1056768 0 - 301 51641 325 0.36456 QSO 1 0 - 301 51641 326 -0.00021 STAR 42991616 0 - 301 51641 327 0.11850 GALAXY 64 0 - 301 51641 328 0.19670 GALAXY 96 0 - 301 51641 329 0.17673 GALAXY 64 0 - 301 51641 330 0.11658 GALAXY 96 0 - 301 51641 331 0.00000 UNKNOWN 0 16 - 301 51641 332 0.10296 GALAXY 64 0 - 301 51641 333 0.00053 STAR 1056768 0 - 301 51641 334 0.10218 GALAXY 64 0 - 301 51641 335 0.20552 GALAXY 64 0 - 301 51641 336 1.62051 QSO 1048580 0 - 301 51641 337 0.11481 GALAXY 64 0 - 301 51641 338 0.02987 GALAXY 64 0 - 301 51641 339 0.07019 GALAXY 96 0 - 301 51641 340 -0.00024 STAR 0 2 - 301 51641 341 0.02437 GALAXY 96 0 - 301 51641 342 0.11719 GALAXY 64 0 - 301 51641 343 0.02482 GALAXY 64 0 - 301 51641 344 0.01477 GALAXY 68 0 - 301 51641 345 0.01477 GALAXY 33554496 0 - 301 51641 346 0.11528 GALAXY 64 0 - 301 51641 347 0.00000 UNKNOWN 0 16 - 301 51641 348 0.11569 GALAXY 4096 0 - 301 51641 349 0.11608 GALAXY 64 0 - 301 51641 350 0.00047 STAR 8192 0 - 301 51641 351 0.00052 STAR 1056768 0 - 301 51641 352 0.11496 GALAXY 64 0 - 301 51641 353 0.11224 GALAXY 64 0 - 301 51641 354 0.11370 GALAXY 64 0 - 301 51641 355 0.01517 GALAXY 33554496 0 - 301 51641 356 0.02999 GALAXY 96 0 - 301 51641 357 0.11544 GALAXY 96 0 - 301 51641 358 0.13920 GALAXY 64 0 - 301 51641 359 0.11615 GALAXY 64 0 - 301 51641 360 1.64573 QSO 64 0 - 301 51641 361 -0.00041 STAR 8196 0 - 301 51641 362 0.02350 GALAXY 64 0 - 301 51641 363 0.16710 GALAXY 64 0 - 301 51641 364 0.08656 GALAXY 64 0 - 301 51641 365 -0.00008 STAR 4 0 - 301 51641 366 0.00000 UNKNOWN 0 16 - 301 51641 367 0.12980 GALAXY 64 0 - 301 51641 368 0.17653 GALAXY 64 0 - 301 51641 369 0.39844 GALAXY 4096 0 - 301 51641 370 0.47853 GALAXY 67108896 0 - 301 51641 371 -0.00009 STAR 42991616 0 - 301 51641 372 0.18053 GALAXY 64 0 - 301 51641 373 0.15350 GALAXY 64 0 - 301 51641 374 0.11764 GALAXY 64 0 - 301 51641 375 0.02959 GALAXY 64 0 - 301 51641 376 0.12784 GALAXY 64 0 - 301 51641 377 1.16807 QSO 1048580 0 - 301 51641 378 0.19549 GALAXY 64 0 - 301 51641 379 1.21203 QSO 4 0 - 301 51641 380 1.97680 QSO 1048580 512 - 301 51641 381 0.14674 GALAXY 64 0 - 301 51641 382 -0.00011 STAR 9437184 0 - 301 51641 383 0.06885 GALAXY 64 0 - 301 51641 384 0.12767 GALAXY 64 0 - 301 51641 385 1.80884 QSO 1048580 0 - 301 51641 386 0.00002 STAR 5 0 - 301 51641 387 0.35510 GALAXY 32 0 - 301 51641 388 2.51080 QSO 1048580 0 - 301 51641 389 0.12809 GALAXY 64 0 - 301 51641 390 -0.00064 STAR 0 2 - 301 51641 391 0.25128 GALAXY 32 0 - 301 51641 392 0.02976 GALAXY 96 0 - 301 51641 393 0.00000 UNKNOWN 0 16 - 301 51641 394 0.07004 GALAXY 96 0 - 301 51641 395 0.07024 GALAXY 64 0 - 301 51641 396 0.11320 GALAXY 96 0 - 301 51641 397 0.06992 GALAXY 96 0 - 301 51641 398 0.08259 GALAXY 96 0 - 301 51641 399 0.00000 STAR 34611200 0 - 301 51641 400 0.26250 GALAXY 96 0 - 301 51641 401 0.00000 UNKNOWN 0 16 - 301 51641 402 0.00028 STAR 8192 0 - 301 51641 403 -0.00114 STAR 1048580 0 - 301 51641 404 0.19596 GALAXY 4 0 - 301 51641 405 0.14427 GALAXY 64 0 - 301 51641 406 0.13614 GALAXY 64 0 - 301 51641 407 0.10372 GALAXY 64 0 - 301 51641 408 -0.00009 STAR 42991616 0 - 301 51641 409 1.58147 QSO 34603008 0 - 301 51641 410 0.13620 GALAXY 64 0 - 301 51641 411 0.10376 GALAXY 3145748 0 - 301 51641 412 0.04868 GALAXY 64 0 - 301 51641 413 0.13653 GALAXY 64 0 - 301 51641 414 0.46678 QSO 1 0 - 301 51641 415 0.47887 GALAXY 32 0 - 301 51641 416 0.89834 QSO 20 0 - 301 51641 417 0.16649 GALAXY 96 0 - 301 51641 418 1.51999 QSO 64 0 - 301 51641 419 0.16626 GALAXY 64 0 - 301 51641 420 -0.00021 STAR 8192 0 - 301 51641 421 0.14620 GALAXY 64 0 - 301 51641 422 -0.00017 STAR 1 0 - 301 51641 423 0.13388 GALAXY 64 0 - 301 51641 424 0.06954 GALAXY 64 0 - 301 51641 425 0.10386 GALAXY 64 0 - 301 51641 426 0.03023 GALAXY 64 0 - 301 51641 427 1.56683 QSO 1048580 0 - 301 51641 428 -0.00015 STAR 9445376 0 - 301 51641 429 0.35986 GALAXY 32 0 - 301 51641 430 0.14648 GALAXY 64 0 - 301 51641 431 1.52710 QSO 1048580 0 - 301 51641 432 0.49394 GALAXY 9437184 512 - 301 51641 433 0.06868 GALAXY 64 0 - 301 51641 434 0.25110 GALAXY 32 0 - 301 51641 435 0.07143 GALAXY 64 0 - 301 51641 436 -0.00011 STAR 1 0 - 301 51641 437 -0.00009 STAR 8196 0 - 301 51641 438 0.00000 UNKNOWN 0 16 - 301 51641 439 0.00003 UNKNOWN 2097152 0 - 301 51641 440 0.45911 QSO 4 0 - 301 51641 441 0.00000 MISSING 0 0 - 301 51641 442 -0.00003 STAR 42991616 0 - 301 51641 443 0.16790 GALAXY 64 0 - 301 51641 444 0.16810 GALAXY 64 0 - 301 51641 445 0.08507 GALAXY 64 0 - 301 51641 446 0.03454 GALAXY 64 0 - 301 51641 447 0.16661 GALAXY 96 0 - 301 51641 448 0.40669 QSO 4 0 - 301 51641 449 -0.00042 STAR 0 34 - 301 51641 450 0.00011 STAR 0 2 - 301 51641 451 0.00000 UNKNOWN 0 16 - 301 51641 452 0.13808 GALAXY 64 0 - 301 51641 453 0.00002 STAR 8196 0 - 301 51641 454 0.16036 GALAXY 64 0 - 301 51641 455 0.00015 STAR 8196 0 - 301 51641 456 0.13788 GALAXY 64 0 - 301 51641 457 -0.00003 STAR 34611200 0 - 301 51641 458 0.24283 GALAXY 1055748 0 - 301 51641 459 0.08272 GALAXY 64 0 - 301 51641 460 0.13799 GALAXY 64 0 - 301 51641 461 0.12946 GALAXY 64 0 - 301 51641 462 -0.00034 STAR 5 0 - 301 51641 463 0.26079 GALAXY 32 0 - 301 51641 464 0.28276 GALAXY 4096 0 - 301 51641 465 0.66109 QSO 16 0 - 301 51641 466 0.02465 GALAXY 64 0 - 301 51641 467 0.11624 GALAXY 96 0 - 301 51641 468 0.03163 GALAXY 64 0 - 301 51641 469 0.12188 GALAXY 64 0 - 301 51641 470 0.18867 GALAXY 64 0 - 301 51641 471 0.12204 GALAXY 64 0 - 301 51641 472 -0.00041 STAR 524288 0 - 301 51641 473 0.00000 UNKNOWN 0 16 - 301 51641 474 1.74939 QSO 1048580 0 - 301 51641 475 0.07993 GALAXY 64 0 - 301 51641 476 -0.00002 STAR 16 0 - 301 51641 477 0.00031 STAR 8192 0 - 301 51641 478 0.07968 GALAXY 64 0 - 301 51641 479 0.14286 GALAXY 64 0 - 301 51641 480 1.01128 QSO 1048580 0 - 301 51641 481 0.16644 GALAXY 64 0 - 301 51641 482 0.16596 GALAXY 96 0 - 301 51641 483 0.19697 GALAXY 96 0 - 301 51641 484 0.00003 STAR 4 0 - 301 51641 485 0.47748 GALAXY 67108896 0 - 301 51641 486 0.12050 GALAXY 4096 0 - 301 51641 487 0.03245 GALAXY 64 0 - 301 51641 488 0.03489 GALAXY 96 0 - 301 51641 489 0.13434 GALAXY 96 0 - 301 51641 490 0.13020 GALAXY 64 0 - 301 51641 491 0.00014 STAR 1056768 0 - 301 51641 492 0.23627 GALAXY 64 0 - 301 51641 493 0.03267 GALAXY 64 0 - 301 51641 494 0.16554 GALAXY 64 0 - 301 51641 495 0.00000 UNKNOWN 0 16 - 301 51641 496 0.15171 GALAXY 64 0 - 301 51641 497 -0.00003 STAR 8196 0 - 301 51641 498 0.03316 GALAXY 64 0 - 301 51641 499 0.00012 STAR 4 0 - 301 51641 500 -0.00005 STAR 4 0 - 301 51641 501 0.25662 GALAXY 4 0 - 301 51641 502 0.16566 GALAXY 64 0 - 301 51641 503 0.35826 GALAXY 32 0 - 301 51641 504 0.16083 GALAXY 64 0 - 301 51641 505 0.18136 GALAXY 64 0 - 301 51641 506 0.00000 UNKNOWN 0 16 - 301 51641 507 0.08059 GALAXY 64 0 - 301 51641 508 0.14633 GALAXY 64 0 - 301 51641 509 0.21763 GALAXY 64 0 - 301 51641 510 0.08100 GALAXY 64 0 - 301 51641 511 0.03368 GALAXY 68 0 - 301 51641 512 0.16702 GALAXY 64 0 - 301 51641 513 1.24911 QSO 4 0 - 301 51641 514 0.14273 GALAXY 64 0 - 301 51641 515 0.03277 GALAXY 64 0 - 301 51641 516 0.13058 GALAXY 64 0 - 301 51641 517 0.21755 GALAXY 96 0 - 301 51641 518 0.13037 GALAXY 64 0 - 301 51641 519 0.16678 GALAXY 64 0 - 301 51641 520 0.16288 QSO 1048580 0 - 301 51641 521 -0.00011 STAR 42991616 0 - 301 51641 522 0.00000 UNKNOWN 0 16 - 301 51641 523 0.66925 GALAXY 1056768 0 - 301 51641 524 0.08106 GALAXY 64 0 - 301 51641 525 0.12091 GALAXY 1048580 0 - 301 51641 526 0.04865 GALAXY 64 0 - 301 51641 527 0.43464 GALAXY 32 0 - 301 51641 528 0.07880 GALAXY 64 0 - 301 51641 529 0.14519 GALAXY 64 0 - 301 51641 530 0.14318 GALAXY 64 0 - 301 51641 531 0.49405 QSO 1048580 0 - 301 51641 532 0.25437 GALAXY 64 0 - 301 51641 533 0.16627 GALAXY 64 0 - 301 51641 534 0.05432 GALAXY 4 0 - 301 51641 535 0.03206 GALAXY 64 0 - 301 51641 536 -0.00005 STAR 8192 0 - 301 51641 537 0.16602 GALAXY 64 0 - 301 51641 538 0.04893 GALAXY 96 0 - 301 51641 539 0.03299 GALAXY 64 0 - 301 51641 540 0.00026 STAR 1 0 - 301 51641 541 0.16703 GALAXY 96 0 - 301 51641 542 -0.00031 STAR 8196 0 - 301 51641 543 0.16520 GALAXY 64 0 - 301 51641 544 0.16710 GALAXY 64 0 - 301 51641 545 0.18830 GALAXY 64 0 - 301 51641 546 0.25751 GALAXY 96 0 - 301 51641 547 0.15248 GALAXY 64 0 - 301 51641 548 -0.00002 STAR 5 0 - 301 51641 549 0.25310 GALAXY 96 0 - 301 51641 550 0.25816 GALAXY 1048580 0 - 301 51641 551 0.14257 GALAXY 64 0 - 301 51641 552 0.00000 UNKNOWN 0 16 - 301 51641 553 0.05405 GALAXY 64 0 - 301 51641 554 0.18812 GALAXY 96 0 - 301 51641 555 0.47453 GALAXY 67108896 0 - 301 51641 556 0.14535 GALAXY 64 0 - 301 51641 557 0.00006 STAR 8192 0 - 301 51641 558 0.36142 GALAXY 32 0 - 301 51641 559 0.22259 GALAXY 64 0 - 301 51641 560 -0.00050 STAR 9445376 0 - 301 51641 561 0.08238 GALAXY 64 0 - 301 51641 562 0.75949 QSO 36700160 0 - 301 51641 563 0.43014 GALAXY 32 0 - 301 51641 564 0.66461 QSO 1056276 0 - 301 51641 565 0.03329 GALAXY 64 0 - 301 51641 566 0.24387 GALAXY 64 0 - 301 51641 567 0.35961 GALAXY 32 0 - 301 51641 568 0.02460 GALAXY 64 0 - 301 51641 569 0.00029 STAR 0 2 - 301 51641 570 0.12788 GALAXY 64 0 - 301 51641 571 1.62012 QSO 1048580 0 - 301 51641 572 0.36154 QSO 4 0 - 301 51641 573 0.04304 GALAXY 64 0 - 301 51641 574 0.16672 GALAXY 64 0 - 301 51641 575 0.03282 GALAXY 64 0 - 301 51641 576 0.16708 GALAXY 64 0 - 301 51641 577 0.14600 GALAXY 64 0 - 301 51641 578 0.36441 GALAXY 32 0 - 301 51641 579 0.60031 GALAXY 4 0 - 301 51641 580 0.00000 UNKNOWN 0 16 - 301 51641 581 0.16565 GALAXY 64 0 - 301 51641 582 -0.00008 UNKNOWN 4 0 - 301 51641 583 0.00000 MISSING 0 0 - 301 51641 584 -0.00056 STAR 4 0 - 301 51641 585 1.94736 QSO 1048580 0 - 301 51641 586 0.47233 UNKNOWN 67108896 0 - 301 51641 587 0.18287 GALAXY 64 0 - 301 51641 588 -0.00016 STAR 0 2 - 301 51641 589 0.00015 STAR 42991616 0 - 301 51641 590 0.16771 GALAXY 64 0 - 301 51641 591 0.00000 UNKNOWN 0 16 - 301 51641 592 0.02818 GALAXY 64 0 - 301 51641 593 0.08490 GALAXY 64 0 - 301 51641 594 -0.00041 STAR 0 96 - 301 51641 595 0.08131 GALAXY 64 0 - 301 51641 596 0.23870 GALAXY 96 0 - 301 51641 597 0.08210 GALAXY 64 0 - 301 51641 598 0.79485 UNKNOWN 2097152 0 - 301 51641 599 0.08485 GALAXY 64 0 - 301 51641 600 0.18759 GALAXY 64 0 - 301 51641 601 0.74387 GALAXY 34603008 0 - 301 51641 602 -0.00008 UNKNOWN 1048580 0 - 301 51641 603 0.00000 UNKNOWN 0 16 - 301 51641 604 0.08216 GALAXY 64 0 - 301 51641 605 -0.00008 UNKNOWN 64 0 - 301 51641 606 0.31956 GALAXY 32 0 - 301 51641 607 0.02406 GALAXY 64 0 - 301 51641 608 0.19042 GALAXY 64 0 - 301 51641 609 0.13956 GALAXY 64 0 - 301 51641 610 -0.00048 STAR 4 0 - 301 51641 611 -0.00035 STAR 8192 0 - 301 51641 612 0.00041 UNKNOWN 42991616 0 - 301 51641 613 0.00000 MISSING 0 0 - 301 51641 614 0.16669 GALAXY 64 0 - 301 51641 615 -0.00028 STAR 0 34 - 301 51641 616 0.14553 GALAXY 64 0 - 301 51641 617 -0.00008 UNKNOWN 64 0 - 301 51641 618 0.16644 GALAXY 64 0 - 301 51641 619 -0.00048 STAR 0 2 - 301 51641 620 0.35970 GALAXY 32 0 - 301 51641 621 0.18244 GALAXY 64 0 - 301 51641 622 0.00005 STAR 8192 0 - 301 51641 623 0.03414 GALAXY 64 0 - 301 51641 624 0.18269 GALAXY 64 0 - 301 51641 625 0.04778 GALAXY 96 0 - 301 51641 626 0.08472 GALAXY 64 0 - 301 51641 627 0.04284 GALAXY 64 0 - 301 51641 628 0.18794 GALAXY 64 0 - 301 51641 629 0.00016 STAR 9445376 0 - 301 51641 630 0.05928 GALAXY 64 0 - 301 51641 631 0.04572 GALAXY 64 0 - 301 51641 632 0.00002 STAR 5 0 - 301 51641 633 -0.00007 STAR 0 512 - 301 51641 634 0.08194 GALAXY 64 0 - 301 51641 635 0.00000 UNKNOWN 0 16 - 301 51641 636 0.08147 GALAXY 64 0 - 301 51641 637 0.18433 GALAXY 64 0 - 301 51641 638 0.14106 GALAXY 64 0 - 301 51641 639 0.18437 GALAXY 96 0 - 301 51641 640 -0.00013 STAR 0 34 - 302 51688 1 0.00040 STAR 8192 0 - 302 51688 2 0.08743 GALAXY 64 0 - 302 51688 3 0.14035 GALAXY 64 0 - 302 51688 4 0.02581 GALAXY 96 0 - 302 51688 5 0.00000 UNKNOWN 0 16 - 302 51688 6 1.40538 QSO 64 0 - 302 51688 7 0.17375 GALAXY 64 0 - 302 51688 8 0.12778 GALAXY 64 0 - 302 51688 9 0.09845 GALAXY 64 0 - 302 51688 10 0.12749 GALAXY 64 0 - 302 51688 11 0.11584 GALAXY 64 0 - 302 51688 12 0.00038 STAR 16 0 - 302 51688 13 0.12765 GALAXY 64 0 - 302 51688 14 0.05434 GALAXY 96 0 - 302 51688 15 0.08333 GALAXY 64 0 - 302 51688 16 0.16171 GALAXY 64 0 - 302 51688 17 0.05470 GALAXY 96 0 - 302 51688 18 0.05445 GALAXY 64 0 - 302 51688 19 0.02549 GALAXY 64 0 - 302 51688 20 0.05439 GALAXY 64 0 - 302 51688 21 0.04798 GALAXY 64 0 - 302 51688 22 0.09795 GALAXY 64 0 - 302 51688 23 1.62745 QSO 1048580 0 - 302 51688 24 0.13991 GALAXY 64 0 - 302 51688 25 0.02505 GALAXY 68 0 - 302 51688 26 0.13854 GALAXY 64 0 - 302 51688 27 0.11773 GALAXY 64 0 - 302 51688 28 -0.00014 STAR 1 0 - 302 51688 29 0.83376 QSO 4 0 - 302 51688 30 0.11679 GALAXY 64 0 - 302 51688 31 0.13883 GALAXY 64 0 - 302 51688 32 1.63506 QSO 1048580 0 - 302 51688 33 0.27313 GALAXY 64 0 - 302 51688 34 0.13916 GALAXY 64 0 - 302 51688 35 0.02531 GALAXY 64 0 - 302 51688 36 0.14685 GALAXY 64 0 - 302 51688 37 0.12886 GALAXY 64 0 - 302 51688 38 0.00000 UNKNOWN 0 16 - 302 51688 39 0.00012 STAR 0 34 - 302 51688 40 0.01760 GALAXY 64 0 - 302 51688 41 0.11773 GALAXY 64 0 - 302 51688 42 0.18291 GALAXY 96 0 - 302 51688 43 0.00010 STAR 64 0 - 302 51688 44 0.63860 QSO 4 0 - 302 51688 45 0.11578 GALAXY 64 0 - 302 51688 46 0.02489 GALAXY 64 0 - 302 51688 47 0.08342 GALAXY 64 0 - 302 51688 48 0.08341 GALAXY 64 0 - 302 51688 49 1.29150 QSO 1048580 0 - 302 51688 50 0.07148 GALAXY 64 0 - 302 51688 51 0.00000 UNKNOWN 0 16 - 302 51688 52 0.10735 GALAXY 64 0 - 302 51688 53 0.17336 GALAXY 64 0 - 302 51688 54 0.52065 GALAXY 67108896 0 - 302 51688 55 0.27917 GALAXY 96 0 - 302 51688 56 0.11501 GALAXY 64 0 - 302 51688 57 0.04970 GALAXY 64 0 - 302 51688 58 0.07018 GALAXY 4 0 - 302 51688 59 0.00042 STAR 0 2 - 302 51688 60 0.08311 GALAXY 64 0 - 302 51688 61 0.11709 GALAXY 64 0 - 302 51688 62 0.00048 STAR 8196 0 - 302 51688 63 0.14733 GALAXY 64 0 - 302 51688 64 0.13709 GALAXY 64 0 - 302 51688 65 0.00011 STAR 4194304 0 - 302 51688 66 0.13894 GALAXY 64 0 - 302 51688 67 0.16883 GALAXY 64 0 - 302 51688 68 0.14029 GALAXY 64 0 - 302 51688 69 0.08952 QSO 1048577 0 - 302 51688 70 0.11791 GALAXY 68 0 - 302 51688 71 0.05487 GALAXY 64 0 - 302 51688 72 0.02536 GALAXY 64 0 - 302 51688 73 0.02609 GALAXY 64 0 - 302 51688 74 0.00000 UNKNOWN 0 16 - 302 51688 75 0.08282 GALAXY 64 0 - 302 51688 76 0.35997 GALAXY 32 0 - 302 51688 77 0.10703 GALAXY 64 0 - 302 51688 78 0.18130 GALAXY 64 0 - 302 51688 79 0.11774 GALAXY 4 0 - 302 51688 80 0.13803 GALAXY 64 0 - 302 51688 81 0.19543 GALAXY 4 0 - 302 51688 82 0.08321 GALAXY 64 0 - 302 51688 83 1.94185 QSO 1048580 0 - 302 51688 84 0.00537 GALAXY 96 0 - 302 51688 85 1.48029 QSO 1048580 0 - 302 51688 86 0.05503 GALAXY 96 0 - 302 51688 87 0.08345 GALAXY 64 0 - 302 51688 88 0.00023 STAR 0 34 - 302 51688 89 0.17460 GALAXY 4 0 - 302 51688 90 0.08335 GALAXY 64 0 - 302 51688 91 0.05606 GALAXY 64 0 - 302 51688 92 0.08793 GALAXY 64 0 - 302 51688 93 0.00030 STAR 4194304 0 - 302 51688 94 0.05226 GALAXY 64 0 - 302 51688 95 0.11145 GALAXY 64 0 - 302 51688 96 0.11548 GALAXY 64 0 - 302 51688 97 0.17530 GALAXY 64 0 - 302 51688 98 0.46674 GALAXY 67108896 0 - 302 51688 99 0.07964 GALAXY 64 0 - 302 51688 100 0.00000 UNKNOWN 0 16 - 302 51688 101 0.00018 STAR 67108896 0 - 302 51688 102 0.10382 GALAXY 64 0 - 302 51688 103 0.00000 UNKNOWN 0 16 - 302 51688 104 1.68341 QSO 1048580 0 - 302 51688 105 0.08334 GALAXY 64 0 - 302 51688 106 1.53282 QSO 68 0 - 302 51688 107 1.86443 QSO 1048580 0 - 302 51688 108 0.05461 GALAXY 64 0 - 302 51688 109 0.08337 GALAXY 96 0 - 302 51688 110 0.02590 GALAXY 64 0 - 302 51688 111 0.08227 GALAXY 64 0 - 302 51688 112 1.53151 QSO 64 0 - 302 51688 113 0.08311 GALAXY 68 0 - 302 51688 114 0.25167 GALAXY 4 0 - 302 51688 115 0.08351 GALAXY 64 0 - 302 51688 116 0.09697 GALAXY 64 0 - 302 51688 117 0.05466 GALAXY 64 0 - 302 51688 118 0.00013 STAR 4 0 - 302 51688 119 0.07073 GALAXY 64 0 - 302 51688 120 0.76906 GALAXY 20 0 - 302 51688 121 0.00000 UNKNOWN 0 16 - 302 51688 122 0.05286 GALAXY 64 0 - 302 51688 123 0.05537 GALAXY 96 0 - 302 51688 124 0.38342 GALAXY 4 0 - 302 51688 125 0.05413 GALAXY 96 0 - 302 51688 126 0.05430 GALAXY 64 0 - 302 51688 127 0.40429 GALAXY 32 0 - 302 51688 128 0.07956 GALAXY 64 0 - 302 51688 129 0.14141 GALAXY 64 0 - 302 51688 130 0.02612 GALAXY 64 0 - 302 51688 131 0.00022 STAR 0 34 - 302 51688 132 0.05183 GALAXY 64 0 - 302 51688 133 0.10486 GALAXY 64 0 - 302 51688 134 0.05556 GALAXY 64 0 - 302 51688 135 0.05506 GALAXY 64 0 - 302 51688 136 0.16034 GALAXY 96 0 - 302 51688 137 0.05339 GALAXY 64 0 - 302 51688 138 0.05224 GALAXY 64 0 - 302 51688 139 0.16008 GALAXY 64 0 - 302 51688 140 0.00097 STAR 1048580 0 - 302 51688 141 0.05319 GALAXY 64 0 - 302 51688 142 0.07116 GALAXY 64 0 - 302 51688 143 0.11343 GALAXY 64 0 - 302 51688 144 0.14374 GALAXY 64 0 - 302 51688 145 0.14754 GALAXY 64 0 - 302 51688 146 0.07684 GALAXY 64 0 - 302 51688 147 0.46517 GALAXY 67108896 0 - 302 51688 148 0.14554 GALAXY 64 0 - 302 51688 149 0.23937 GALAXY 96 0 - 302 51688 150 0.05440 GALAXY 64 0 - 302 51688 151 1.62648 QSO 4 0 - 302 51688 152 0.05230 GALAXY 64 0 - 302 51688 153 0.23903 GALAXY 64 0 - 302 51688 154 0.00000 UNKNOWN 0 16 - 302 51688 155 0.17241 GALAXY 64 0 - 302 51688 156 0.09585 GALAXY 68 0 - 302 51688 157 0.09364 GALAXY 64 0 - 302 51688 158 0.09303 GALAXY 64 0 - 302 51688 159 0.05444 GALAXY 64 0 - 302 51688 160 0.08330 GALAXY 64 0 - 302 51688 161 0.05280 GALAXY 64 0 - 302 51688 162 0.05263 GALAXY 64 0 - 302 51688 163 0.16768 GALAXY 4160 0 - 302 51688 164 2.20572 QSO 1048580 0 - 302 51688 165 0.00445 GALAXY 4 0 - 302 51688 166 0.05281 GALAXY 64 0 - 302 51688 167 0.00025 STAR 8192 0 - 302 51688 168 0.11335 GALAXY 64 0 - 302 51688 169 -0.00013 STAR 8192 0 - 302 51688 170 0.05241 GALAXY 64 0 - 302 51688 171 0.02531 GALAXY 64 0 - 302 51688 172 0.76858 QSO 1048580 0 - 302 51688 173 0.00009 UNKNOWN 96 0 - 302 51688 174 0.23246 QSO 64 0 - 302 51688 175 0.05402 GALAXY 64 0 - 302 51688 176 0.05360 GALAXY 64 0 - 302 51688 177 0.08347 GALAXY 64 0 - 302 51688 178 0.00000 UNKNOWN 0 16 - 302 51688 179 0.05292 GALAXY 96 0 - 302 51688 180 0.42537 GALAXY 32 0 - 302 51688 181 0.10906 GALAXY 64 0 - 302 51688 182 0.16644 GALAXY 64 0 - 302 51688 183 0.05299 GALAXY 64 0 - 302 51688 184 0.00082 STAR 1056772 0 - 302 51688 185 1.94703 QSO 1048580 0 - 302 51688 186 0.02519 GALAXY 64 0 - 302 51688 187 0.00020 STAR 8192 0 - 302 51688 188 0.10552 GALAXY 64 0 - 302 51688 189 0.00040 STAR 32 0 - 302 51688 190 0.08007 GALAXY 64 0 - 302 51688 191 -0.00016 STAR 0 2 - 302 51688 192 0.00000 MISSING 0 0 - 302 51688 193 0.00058 STAR 1056768 0 - 302 51688 194 0.16251 GALAXY 64 0 - 302 51688 195 0.21156 GALAXY 64 0 - 302 51688 196 0.21239 GALAXY 4096 0 - 302 51688 197 0.03002 QSO 4 0 - 302 51688 198 0.05339 GALAXY 96 0 - 302 51688 199 0.08312 GALAXY 64 0 - 302 51688 200 0.26153 GALAXY 96 0 - 302 51688 201 0.17577 GALAXY 64 0 - 302 51688 202 0.00012 STAR 4194304 0 - 302 51688 203 0.00014 STAR 6144 0 - 302 51688 204 1.47501 QSO 64 0 - 302 51688 205 0.00000 UNKNOWN 0 16 - 302 51688 206 0.02616 GALAXY 96 0 - 302 51688 207 0.14266 GALAXY 64 0 - 302 51688 208 2.42100 QSO 3145728 0 - 302 51688 209 1.94111 QSO 4 0 - 302 51688 210 0.05933 GALAXY 64 0 - 302 51688 211 0.14684 GALAXY 64 0 - 302 51688 212 0.05120 GALAXY 64 0 - 302 51688 213 0.11000 GALAXY 64 0 - 302 51688 214 0.08266 GALAXY 64 0 - 302 51688 215 0.05340 GALAXY 96 0 - 302 51688 216 0.05371 GALAXY 64 0 - 302 51688 217 1.50763 QSO 3153428 0 - 302 51688 218 0.11007 GALAXY 64 0 - 302 51688 219 0.02981 GALAXY 64 0 - 302 51688 220 0.05508 GALAXY 64 0 - 302 51688 221 -0.00033 STAR 8192 0 - 302 51688 222 0.10558 GALAXY 96 0 - 302 51688 223 0.00039 STAR 16 0 - 302 51688 224 0.62267 GALAXY 32768 0 - 302 51688 225 0.11324 GALAXY 64 0 - 302 51688 226 0.07050 GALAXY 64 0 - 302 51688 227 0.10654 GALAXY 1 0 - 302 51688 228 0.11349 GALAXY 64 0 - 302 51688 229 0.11298 GALAXY 64 0 - 302 51688 230 0.08285 GALAXY 96 0 - 302 51688 231 -0.00024 STAR 8192 0 - 302 51688 232 0.45772 GALAXY 67108896 0 - 302 51688 233 0.00000 UNKNOWN 0 16 - 302 51688 234 0.11160 GALAXY 64 0 - 302 51688 235 0.10554 GALAXY 64 0 - 302 51688 236 0.05959 GALAXY 96 0 - 302 51688 237 1.59972 QSO 64 0 - 302 51688 238 0.11270 GALAXY 64 0 - 302 51688 239 0.09025 GALAXY 64 0 - 302 51688 240 0.02477 GALAXY 64 0 - 302 51688 241 0.05468 GALAXY 96 0 - 302 51688 242 0.05358 GALAXY 64 0 - 302 51688 243 0.05517 GALAXY 64 0 - 302 51688 244 0.07419 GALAXY 64 0 - 302 51688 245 0.14718 GALAXY 64 0 - 302 51688 246 0.07056 GALAXY 64 0 - 302 51688 247 0.07042 GALAXY 64 0 - 302 51688 248 0.01584 GALAXY 64 0 - 302 51688 249 0.28306 GALAXY 4 0 - 302 51688 250 0.05437 GALAXY 64 0 - 302 51688 251 0.04953 GALAXY 64 0 - 302 51688 252 0.08439 GALAXY 64 0 - 302 51688 253 0.10510 GALAXY 64 0 - 302 51688 254 0.09486 GALAXY 64 0 - 302 51688 255 0.00009 UNKNOWN 96 0 - 302 51688 256 0.14420 GALAXY 64 0 - 302 51688 257 0.09493 GALAXY 64 0 - 302 51688 258 2.30202 QSO 4 0 - 302 51688 259 0.04951 GALAXY 64 0 - 302 51688 260 0.00000 UNKNOWN 0 16 - 302 51688 261 0.07946 GALAXY 64 0 - 302 51688 262 0.07066 GALAXY 64 0 - 302 51688 263 0.02471 GALAXY 96 0 - 302 51688 264 0.08968 GALAXY 64 0 - 302 51688 265 0.03264 GALAXY 33554496 0 - 302 51688 266 0.24288 GALAXY 96 0 - 302 51688 267 0.08972 GALAXY 64 0 - 302 51688 268 0.30378 QSO 1048580 0 - 302 51688 269 0.07444 GALAXY 64 0 - 302 51688 270 0.02491 GALAXY 96 0 - 302 51688 271 0.03257 GALAXY 68 0 - 302 51688 272 0.02510 GALAXY 64 0 - 302 51688 273 0.07022 GALAXY 64 0 - 302 51688 274 0.00000 UNKNOWN 0 16 - 302 51688 275 0.13897 GALAXY 64 0 - 302 51688 276 0.10591 GALAXY 64 0 - 302 51688 277 0.07066 GALAXY 64 0 - 302 51688 278 0.98802 QSO 4 0 - 302 51688 279 1.51111 QSO 64 0 - 302 51688 280 0.11036 GALAXY 64 0 - 302 51688 281 0.10622 GALAXY 64 0 - 302 51688 282 0.02504 GALAXY 96 0 - 302 51688 283 0.09393 GALAXY 64 0 - 302 51688 284 0.03261 GALAXY 64 0 - 302 51688 285 0.16414 GALAXY 64 0 - 302 51688 286 0.16955 GALAXY 96 0 - 302 51688 287 0.16341 GALAXY 64 0 - 302 51688 288 0.15217 GALAXY 64 0 - 302 51688 289 0.02548 GALAXY 64 0 - 302 51688 290 0.07857 GALAXY 64 0 - 302 51688 291 0.42193 GALAXY 32 0 - 302 51688 292 0.14957 GALAXY 96 0 - 302 51688 293 0.00021 STAR 0 2 - 302 51688 294 0.02501 GALAXY 96 0 - 302 51688 295 0.19510 GALAXY 4 0 - 302 51688 296 0.10639 GALAXY 64 0 - 302 51688 297 0.00000 UNKNOWN 0 16 - 302 51688 298 0.14890 GALAXY 64 0 - 302 51688 299 0.02725 GALAXY 96 0 - 302 51688 300 0.10704 GALAXY 64 0 - 302 51688 301 0.00000 UNKNOWN 0 16 - 302 51688 302 0.02466 GALAXY 64 0 - 302 51688 303 0.44525 GALAXY 32 0 - 302 51688 304 0.05435 GALAXY 64 0 - 302 51688 305 0.18523 GALAXY 64 0 - 302 51688 306 0.05975 GALAXY 96 0 - 302 51688 307 0.04784 GALAXY 64 0 - 302 51688 308 0.00034 STAR 0 34 - 302 51688 309 0.07953 GALAXY 64 0 - 302 51688 310 0.02478 GALAXY 64 0 - 302 51688 311 0.02574 GALAXY 64 0 - 302 51688 312 0.08236 GALAXY 64 0 - 302 51688 313 0.13179 GALAXY 64 0 - 302 51688 314 0.00000 MISSING 0 0 - 302 51688 315 0.00032 STAR 0 2 - 302 51688 316 0.71074 QSO 36700160 0 - 302 51688 317 0.00046 STAR 8192 0 - 302 51688 318 1.22185 QSO 20 0 - 302 51688 319 0.18485 GALAXY 64 0 - 302 51688 320 0.00128 STAR 1056768 0 - 302 51688 321 0.63425 QSO 4 0 - 302 51688 322 0.16675 GALAXY 64 0 - 302 51688 323 0.00045 STAR 0 2 - 302 51688 324 0.00016 STAR 1 0 - 302 51688 325 0.02525 GALAXY 64 0 - 302 51688 326 0.19042 GALAXY 96 0 - 302 51688 327 0.24164 GALAXY 96 0 - 302 51688 328 0.04284 GALAXY 64 0 - 302 51688 329 0.04323 GALAXY 64 0 - 302 51688 330 0.39754 GALAXY 32 0 - 302 51688 331 0.16808 GALAXY 64 0 - 302 51688 332 0.07044 GALAXY 64 0 - 302 51688 333 0.53767 QSO 33554433 0 - 302 51688 334 0.08915 GALAXY 64 0 - 302 51688 335 0.45319 GALAXY 32 0 - 302 51688 336 0.04328 GALAXY 64 0 - 302 51688 337 0.00002 STAR 4 0 - 302 51688 338 0.00015 STAR 0 2 - 302 51688 339 0.04303 GALAXY 64 0 - 302 51688 340 0.00000 UNKNOWN 0 16 - 302 51688 341 0.18385 GALAXY 64 0 - 302 51688 342 0.45948 GALAXY 32 0 - 302 51688 343 0.00000 UNKNOWN 0 16 - 302 51688 344 0.07402 GALAXY 64 0 - 302 51688 345 0.18305 GALAXY 64 0 - 302 51688 346 0.22344 GALAXY 64 0 - 302 51688 347 0.14591 GALAXY 64 0 - 302 51688 348 0.04326 GALAXY 96 0 - 302 51688 349 0.00085 STAR 8396800 0 - 302 51688 350 0.08131 GALAXY 64 0 - 302 51688 351 0.08230 GALAXY 68 0 - 302 51688 352 0.18249 GALAXY 64 0 - 302 51688 353 0.14108 GALAXY 64 0 - 302 51688 354 0.18901 GALAXY 64 0 - 302 51688 355 0.18379 GALAXY 64 0 - 302 51688 356 0.18589 GALAXY 96 0 - 302 51688 357 0.18334 GALAXY 64 0 - 302 51688 358 0.00038 STAR 1056768 0 - 302 51688 359 0.13140 GALAXY 64 0 - 302 51688 360 0.00016 STAR 0 2 - 302 51688 361 0.45095 GALAXY 32 0 - 302 51688 362 0.14587 GALAXY 64 0 - 302 51688 363 0.13016 GALAXY 64 0 - 302 51688 364 0.00000 UNKNOWN 0 16 - 302 51688 365 0.12412 GALAXY 64 0 - 302 51688 366 0.12486 GALAXY 64 0 - 302 51688 367 0.00018 STAR 8192 0 - 302 51688 368 0.18132 GALAXY 64 0 - 302 51688 369 0.16749 GALAXY 64 0 - 302 51688 370 0.35706 GALAXY 32 0 - 302 51688 371 0.06971 GALAXY 68 0 - 302 51688 372 0.40168 GALAXY 32 0 - 302 51688 373 0.11362 GALAXY 64 0 - 302 51688 374 0.45199 GALAXY 32 0 - 302 51688 375 0.02481 GALAXY 64 0 - 302 51688 376 0.18020 GALAXY 64 0 - 302 51688 377 0.18088 GALAXY 96 0 - 302 51688 378 0.12344 GALAXY 64 0 - 302 51688 379 0.39889 GALAXY 32 0 - 302 51688 380 0.03184 GALAXY 64 0 - 302 51688 381 0.04507 GALAXY 64 0 - 302 51688 382 0.16316 QSO 1048580 0 - 302 51688 383 0.18739 GALAXY 64 0 - 302 51688 384 0.18779 GALAXY 64 0 - 302 51688 385 1.15780 QSO 1048580 0 - 302 51688 386 0.46257 GALAXY 32 0 - 302 51688 387 2.42638 QSO 1 0 - 302 51688 388 0.00036 STAR 0 34 - 302 51688 389 0.32493 QSO 1048580 0 - 302 51688 390 0.28333 GALAXY 32 0 - 302 51688 391 0.00000 UNKNOWN 0 16 - 302 51688 392 0.00020 STAR 1 0 - 302 51688 393 0.46346 GALAXY 67108896 0 - 302 51688 394 0.02565 GALAXY 64 0 - 302 51688 395 0.54178 QSO 4 0 - 302 51688 396 0.10582 GALAXY 64 0 - 302 51688 397 0.16514 GALAXY 64 0 - 302 51688 398 0.00096 STAR 1 0 - 302 51688 399 -0.00008 STAR 64 0 - 302 51688 400 0.04702 GALAXY 64 0 - 302 51688 401 0.00038 STAR 4 0 - 302 51688 402 0.12495 GALAXY 64 0 - 302 51688 403 0.00033 STAR 4 0 - 302 51688 404 0.00090 STAR 8192 0 - 302 51688 405 0.39496 GALAXY 32 0 - 302 51688 406 0.04785 GALAXY 64 0 - 302 51688 407 0.11320 GALAXY 64 0 - 302 51688 408 0.24060 GALAXY 96 0 - 302 51688 409 0.45706 GALAXY 32 0 - 302 51688 410 0.14486 GALAXY 64 0 - 302 51688 411 -0.00009 STAR 64 0 - 302 51688 412 0.07209 GALAXY 64 0 - 302 51688 413 0.00000 UNKNOWN 0 16 - 302 51688 414 0.02503 GALAXY 64 0 - 302 51688 415 0.45087 GALAXY 2097184 0 - 302 51688 416 0.12992 GALAXY 64 0 - 302 51688 417 0.23625 GALAXY 2097156 0 - 302 51688 418 0.43408 GALAXY 32 0 - 302 51688 419 1.57155 QSO 1048580 0 - 302 51688 420 0.00084 STAR 8192 0 - 302 51688 421 0.00032 STAR 1056768 0 - 302 51688 422 1.56463 QSO 4 0 - 302 51688 423 0.05392 GALAXY 68 0 - 302 51688 424 0.00010 STAR 34611200 0 - 302 51688 425 0.00031 STAR 64 0 - 302 51688 426 0.11233 GALAXY 1 0 - 302 51688 427 0.45955 GALAXY 67108896 0 - 302 51688 428 0.00000 UNKNOWN 0 16 - 302 51688 429 0.07709 GALAXY 64 0 - 302 51688 430 0.16503 GALAXY 64 0 - 302 51688 431 0.11223 GALAXY 64 0 - 302 51688 432 0.44324 GALAXY 32 0 - 302 51688 433 0.07567 GALAXY 64 0 - 302 51688 434 0.16573 GALAXY 64 0 - 302 51688 435 0.04800 GALAXY 96 0 - 302 51688 436 0.02489 GALAXY 64 0 - 302 51688 437 0.13253 GALAXY 64 0 - 302 51688 438 0.13973 GALAXY 524288 0 - 302 51688 439 0.37443 GALAXY 32 0 - 302 51688 440 0.11270 GALAXY 64 0 - 302 51688 441 0.10844 GALAXY 64 0 - 302 51688 442 0.11585 GALAXY 64 0 - 302 51688 443 -0.00004 STAR 0 34 - 302 51688 444 0.45970 GALAXY 67108896 0 - 302 51688 445 1.22047 QSO 4 0 - 302 51688 446 0.00046 STAR 0 2 - 302 51688 447 0.45168 GALAXY 67108896 0 - 302 51688 448 0.17705 GALAXY 4 0 - 302 51688 449 3.07831 QSO 4 0 - 302 51688 450 0.04788 GALAXY 96 0 - 302 51688 451 0.13004 GALAXY 64 0 - 302 51688 452 0.00000 UNKNOWN 0 16 - 302 51688 453 0.18380 GALAXY 64 0 - 302 51688 454 0.04894 GALAXY 64 0 - 302 51688 455 0.23364 GALAXY 64 0 - 302 51688 456 0.07706 GALAXY 64 0 - 302 51688 457 0.04835 GALAXY 64 0 - 302 51688 458 0.03481 GALAXY 64 0 - 302 51688 459 -0.00008 STAR 1056772 0 - 302 51688 460 0.08331 GALAXY 64 0 - 302 51688 461 0.08333 GALAXY 64 0 - 302 51688 462 0.00000 UNKNOWN 0 16 - 302 51688 463 0.10567 GALAXY 64 0 - 302 51688 464 0.11386 GALAXY 64 0 - 302 51688 465 0.00002 STAR 1056772 0 - 302 51688 466 0.42754 GALAXY 32 0 - 302 51688 467 0.11360 GALAXY 64 0 - 302 51688 468 0.00009 STAR 16 0 - 302 51688 469 0.16600 GALAXY 64 0 - 302 51688 470 0.07680 GALAXY 64 0 - 302 51688 471 0.10717 GALAXY 64 0 - 302 51688 472 0.25774 GALAXY 32 0 - 302 51688 473 0.16541 GALAXY 64 0 - 302 51688 474 0.00013 STAR 1179652 512 - 302 51688 475 0.25851 GALAXY 32 0 - 302 51688 476 0.10578 GALAXY 64 0 - 302 51688 477 0.10701 GALAXY 64 0 - 302 51688 478 0.25285 GALAXY 32 0 - 302 51688 479 0.00029 STAR 9437188 0 - 302 51688 480 0.42699 GALAXY 32 0 - 302 51688 481 1.66949 QSO 36700160 0 - 302 51688 482 0.10790 GALAXY 64 0 - 302 51688 483 0.13400 GALAXY 64 0 - 302 51688 484 0.13882 GALAXY 64 0 - 302 51688 485 0.00000 UNKNOWN 0 16 - 302 51688 486 3.72124 QSO 1 0 - 302 51688 487 0.08543 GALAXY 64 0 - 302 51688 488 0.11369 GALAXY 64 0 - 302 51688 489 0.08573 GALAXY 64 0 - 302 51688 490 2.05349 UNKNOWN 42991616 0 - 302 51688 491 0.11375 GALAXY 64 0 - 302 51688 492 0.02571 GALAXY 64 0 - 302 51688 493 0.00097 STAR 1056772 0 - 302 51688 494 0.17361 GALAXY 64 0 - 302 51688 495 0.08565 GALAXY 64 0 - 302 51688 496 0.08596 GALAXY 2097216 0 - 302 51688 497 0.05342 GALAXY 68 0 - 302 51688 498 0.08542 GALAXY 64 0 - 302 51688 499 0.13832 GALAXY 64 0 - 302 51688 500 0.10566 GALAXY 64 0 - 302 51688 501 0.53408 QSO 1048580 0 - 302 51688 502 0.13701 GALAXY 64 0 - 302 51688 503 0.00000 UNKNOWN 0 16 - 302 51688 504 0.13576 GALAXY 64 0 - 302 51688 505 0.12933 GALAXY 64 0 - 302 51688 506 0.05441 GALAXY 64 0 - 302 51688 507 0.02531 GALAXY 64 0 - 302 51688 508 0.05392 GALAXY 64 0 - 302 51688 509 0.33817 GALAXY 2097184 0 - 302 51688 510 0.13616 GALAXY 64 0 - 302 51688 511 0.42346 GALAXY 32 0 - 302 51688 512 0.00021 STAR 1056772 0 - 302 51688 513 0.05470 GALAXY 64 0 - 302 51688 514 0.13522 GALAXY 64 0 - 302 51688 515 0.08304 GALAXY 96 0 - 302 51688 516 0.13636 GALAXY 64 0 - 302 51688 517 0.13540 GALAXY 64 0 - 302 51688 518 0.05380 GALAXY 64 0 - 302 51688 519 0.47076 GALAXY 32 0 - 302 51688 520 0.00000 UNKNOWN 4 0 - 302 51688 521 0.11611 GALAXY 64 0 - 302 51688 522 0.00059 STAR 1056772 0 - 302 51688 523 0.05797 GALAXY 64 0 - 302 51688 524 0.12443 GALAXY 64 0 - 302 51688 525 0.37282 GALAXY 32 0 - 302 51688 526 1.44888 QSO 1048580 0 - 302 51688 527 0.00000 UNKNOWN 0 16 - 302 51688 528 0.17760 GALAXY 96 0 - 302 51688 529 0.37683 GALAXY 32 0 - 302 51688 530 0.14284 GALAXY 64 0 - 302 51688 531 0.02569 GALAXY 64 0 - 302 51688 532 0.12484 GALAXY 64 0 - 302 51688 533 0.44211 QSO 4 0 - 302 51688 534 0.11459 GALAXY 64 0 - 302 51688 535 1.99770 QSO 4 0 - 302 51688 536 0.11425 GALAXY 64 0 - 302 51688 537 1.02403 QSO 1048580 0 - 302 51688 538 0.00035 STAR 64 0 - 302 51688 539 0.12425 GALAXY 64 0 - 302 51688 540 0.11364 GALAXY 64 0 - 302 51688 541 0.10535 GALAXY 64 0 - 302 51688 542 0.00000 UNKNOWN 0 16 - 302 51688 543 0.05323 GALAXY 64 0 - 302 51688 544 0.02687 GALAXY 64 0 - 302 51688 545 0.10575 GALAXY 96 0 - 302 51688 546 0.05334 GALAXY 64 0 - 302 51688 547 0.15014 GALAXY 64 0 - 302 51688 548 0.14898 GALAXY 64 0 - 302 51688 549 0.00132 STAR 1056772 0 - 302 51688 550 1.71716 QSO 20 0 - 302 51688 551 0.17878 GALAXY 96 0 - 302 51688 552 0.13543 GALAXY 64 0 - 302 51688 553 0.02944 GALAXY 64 0 - 302 51688 554 0.30157 QSO 2097152 0 - 302 51688 555 0.14944 GALAXY 64 0 - 302 51688 556 0.14134 GALAXY 64 0 - 302 51688 557 0.13687 GALAXY 64 0 - 302 51688 558 0.10683 GALAXY 64 0 - 302 51688 559 0.49735 GALAXY 67108896 0 - 302 51688 560 1.74292 QSO 4 0 - 302 51688 561 0.14703 GALAXY 64 0 - 302 51688 562 0.18022 GALAXY 64 0 - 302 51688 563 0.11443 GALAXY 64 0 - 302 51688 564 1.51009 QSO 4 0 - 302 51688 565 0.02566 GALAXY 96 0 - 302 51688 566 0.11478 GALAXY 64 0 - 302 51688 567 0.20137 GALAXY 64 0 - 302 51688 568 0.18056 GALAXY 64 0 - 302 51688 569 0.00000 UNKNOWN 0 16 - 302 51688 570 0.00002 STAR 0 34 - 302 51688 571 0.17991 GALAXY 64 0 - 302 51688 572 0.02569 GALAXY 64 0 - 302 51688 573 0.14504 GALAXY 64 0 - 302 51688 574 0.13586 GALAXY 64 0 - 302 51688 575 0.02575 GALAXY 4 0 - 302 51688 576 0.09546 GALAXY 64 0 - 302 51688 577 0.12505 GALAXY 64 0 - 302 51688 578 0.16505 GALAXY 64 0 - 302 51688 579 0.14622 GALAXY 64 0 - 302 51688 580 0.17774 GALAXY 64 0 - 302 51688 581 1.03064 QSO 4 0 - 302 51688 582 0.26226 GALAXY 96 0 - 302 51688 583 0.14745 GALAXY 96 0 - 302 51688 584 0.14735 GALAXY 64 0 - 302 51688 585 0.00036 STAR 32 0 - 302 51688 586 0.05487 GALAXY 96 0 - 302 51688 587 0.14503 GALAXY 64 0 - 302 51688 588 0.13128 GALAXY 64 0 - 302 51688 589 0.10590 GALAXY 64 0 - 302 51688 590 0.00027 STAR 0 32 - 302 51688 591 0.05326 GALAXY 64 0 - 302 51688 592 0.05414 GALAXY 96 0 - 302 51688 593 0.14745 GALAXY 64 0 - 302 51688 594 0.14678 GALAXY 64 0 - 302 51688 595 0.11450 GALAXY 64 0 - 302 51688 596 0.05475 GALAXY 64 0 - 302 51688 597 0.05318 GALAXY 64 0 - 302 51688 598 0.05583 GALAXY 96 0 - 302 51688 599 0.00000 UNKNOWN 0 16 - 302 51688 600 0.00043 STAR 4 0 - 302 51688 601 0.76387 GALAXY 64 0 - 302 51688 602 0.02539 GALAXY 64 0 - 302 51688 603 0.12505 GALAXY 64 0 - 302 51688 604 0.00000 UNKNOWN 0 16 - 302 51688 605 1.83796 QSO 1048580 0 - 302 51688 606 0.20067 GALAXY 64 0 - 302 51688 607 0.12664 GALAXY 64 0 - 302 51688 608 0.12562 GALAXY 64 0 - 302 51688 609 0.12478 GALAXY 64 0 - 302 51688 610 0.12488 GALAXY 64 0 - 302 51688 611 0.00009 UNKNOWN 64 0 - 302 51688 612 0.00009 UNKNOWN 64 0 - 302 51688 613 0.15683 GALAXY 64 0 - 302 51688 614 0.10566 GALAXY 64 0 - 302 51688 615 0.17566 GALAXY 64 0 - 302 51688 616 0.12457 GALAXY 96 0 - 302 51688 617 0.05330 GALAXY 64 0 - 302 51688 618 0.07873 GALAXY 64 0 - 302 51688 619 1.22383 QSO 3145748 0 - 302 51688 620 0.50494 GALAXY 67108896 0 - 302 51688 621 0.09602 GALAXY 64 0 - 302 51688 622 0.00000 MISSING 0 0 - 302 51688 623 0.05427 GALAXY 64 0 - 302 51688 624 0.12791 GALAXY 64 0 - 302 51688 625 0.05505 GALAXY 64 0 - 302 51688 626 0.05510 GALAXY 68 0 - 302 51688 627 0.12688 GALAXY 64 0 - 302 51688 628 0.05405 GALAXY 96 0 - 302 51688 629 0.10567 GALAXY 64 0 - 302 51688 630 0.00059 STAR 1056768 0 - 302 51688 631 0.05509 GALAXY 96 0 - 302 51688 632 0.18705 GALAXY 96 0 - 302 51688 633 0.12784 GALAXY 96 0 - 302 51688 634 0.00000 UNKNOWN 0 16 - 302 51688 635 0.09592 GALAXY 96 0 - 302 51688 636 0.05476 GALAXY 64 0 - 302 51688 637 0.15151 GALAXY 64 0 - 302 51688 638 0.05456 GALAXY 64 0 - 302 51688 639 0.12725 GALAXY 64 0 - 302 51688 640 0.12515 GALAXY 64 0 - 303 51615 1 0.00000 UNKNOWN 64 0 - 303 51615 2 0.09527 GALAXY 64 0 - 303 51615 3 0.14785 GALAXY 64 0 - 303 51615 4 0.04975 GALAXY 64 0 - 303 51615 5 0.12564 GALAXY 64 0 - 303 51615 6 0.04869 GALAXY 96 0 - 303 51615 7 0.14129 GALAXY 64 0 - 303 51615 8 0.00055 STAR 8192 0 - 303 51615 9 0.08577 GALAXY 64 0 - 303 51615 10 0.19753 GALAXY 64 0 - 303 51615 11 0.08073 GALAXY 64 0 - 303 51615 12 0.00000 UNKNOWN 0 16 - 303 51615 13 1.09169 QSO 4 0 - 303 51615 14 0.12553 GALAXY 64 0 - 303 51615 15 0.18689 GALAXY 2097216 0 - 303 51615 16 0.18156 GALAXY 64 0 - 303 51615 17 -0.00006 STAR 4194304 0 - 303 51615 18 0.13956 GALAXY 64 0 - 303 51615 19 0.18645 GALAXY 64 0 - 303 51615 20 0.12743 GALAXY 64 0 - 303 51615 21 0.08527 GALAXY 64 0 - 303 51615 22 0.18125 GALAXY 64 0 - 303 51615 23 0.40589 GALAXY 32 0 - 303 51615 24 0.13259 GALAXY 64 0 - 303 51615 25 0.03624 GALAXY 64 0 - 303 51615 26 0.18145 GALAXY 96 0 - 303 51615 27 0.00000 UNKNOWN 0 16 - 303 51615 28 0.87916 QSO 4 0 - 303 51615 29 0.05108 GALAXY 64 0 - 303 51615 30 1.52714 QSO 4 0 - 303 51615 31 -0.00014 STAR 1056772 0 - 303 51615 32 0.13449 GALAXY 64 0 - 303 51615 33 0.16865 GALAXY 64 0 - 303 51615 34 0.12071 GALAXY 64 0 - 303 51615 35 0.12074 GALAXY 64 0 - 303 51615 36 0.08476 GALAXY 64 0 - 303 51615 37 0.05134 GALAXY 68 0 - 303 51615 38 0.13877 GALAXY 64 0 - 303 51615 39 0.14709 GALAXY 64 0 - 303 51615 40 0.12035 GALAXY 4 0 - 303 51615 41 0.08597 GALAXY 64 0 - 303 51615 42 0.18437 GALAXY 96 0 - 303 51615 43 0.07653 GALAXY 64 0 - 303 51615 44 0.14983 GALAXY 64 0 - 303 51615 45 0.14885 GALAXY 64 0 - 303 51615 46 0.55182 QSO 1048580 0 - 303 51615 47 0.14926 GALAXY 64 0 - 303 51615 48 -0.00013 STAR 16 0 - 303 51615 49 0.14991 GALAXY 64 0 - 303 51615 50 0.12529 GALAXY 64 0 - 303 51615 51 0.13771 GALAXY 64 0 - 303 51615 52 0.14768 GALAXY 64 0 - 303 51615 53 0.00000 UNKNOWN 0 16 - 303 51615 54 0.38038 QSO 5124 0 - 303 51615 55 0.12696 GALAXY 64 0 - 303 51615 56 0.14407 GALAXY 64 0 - 303 51615 57 -0.00042 STAR 1048580 0 - 303 51615 58 0.14927 GALAXY 96 0 - 303 51615 59 0.04843 GALAXY 64 0 - 303 51615 60 -0.00019 STAR 9437184 512 - 303 51615 61 0.00032 STAR 4 0 - 303 51615 62 0.12912 GALAXY 64 0 - 303 51615 63 0.08216 GALAXY 64 0 - 303 51615 64 0.12341 GALAXY 64 0 - 303 51615 65 0.12283 GALAXY 64 0 - 303 51615 66 0.12575 GALAXY 64 0 - 303 51615 67 0.05148 GALAXY 64 0 - 303 51615 68 1.91719 QSO 1048580 0 - 303 51615 69 0.00000 UNKNOWN 0 16 - 303 51615 70 0.12345 GALAXY 64 0 - 303 51615 71 0.04958 GALAXY 64 0 - 303 51615 72 0.12987 GALAXY 64 0 - 303 51615 73 0.14793 GALAXY 96 0 - 303 51615 74 0.08261 GALAXY 64 0 - 303 51615 75 0.08244 GALAXY 64 0 - 303 51615 76 0.12300 GALAXY 64 0 - 303 51615 77 0.12564 GALAXY 2097216 0 - 303 51615 78 0.16881 GALAXY 64 0 - 303 51615 79 0.12575 GALAXY 64 0 - 303 51615 80 0.37886 GALAXY 4 0 - 303 51615 81 0.07685 GALAXY 96 0 - 303 51615 82 0.14660 GALAXY 64 0 - 303 51615 83 0.12449 GALAXY 64 0 - 303 51615 84 0.08761 GALAXY 64 0 - 303 51615 85 0.00017 STAR 1 0 - 303 51615 86 0.12510 GALAXY 64 0 - 303 51615 87 0.14901 GALAXY 64 0 - 303 51615 88 0.13968 GALAXY 64 0 - 303 51615 89 0.12485 GALAXY 64 0 - 303 51615 90 0.14838 GALAXY 64 0 - 303 51615 91 0.00000 MISSING 0 0 - 303 51615 92 0.00000 UNKNOWN 64 0 - 303 51615 93 0.13689 GALAXY 64 0 - 303 51615 94 0.67316 QSO 33554433 0 - 303 51615 95 0.14914 GALAXY 64 0 - 303 51615 96 0.28984 GALAXY 32 0 - 303 51615 97 0.12761 GALAXY 64 0 - 303 51615 98 0.37979 GALAXY 67108896 0 - 303 51615 99 0.14837 GALAXY 64 0 - 303 51615 100 0.03795 GALAXY 64 0 - 303 51615 101 0.08364 GALAXY 64 0 - 303 51615 102 0.18422 GALAXY 64 0 - 303 51615 103 0.13732 GALAXY 64 0 - 303 51615 104 0.13850 QSO 64 0 - 303 51615 105 0.07810 GALAXY 64 0 - 303 51615 106 0.00000 UNKNOWN 0 16 - 303 51615 107 0.07685 GALAXY 64 0 - 303 51615 108 0.14878 GALAXY 64 0 - 303 51615 109 0.07739 GALAXY 96 0 - 303 51615 110 0.12866 GALAXY 64 0 - 303 51615 111 0.13907 GALAXY 64 0 - 303 51615 112 0.10294 GALAXY 64 0 - 303 51615 113 0.15049 GALAXY 64 0 - 303 51615 114 0.12755 GALAXY 64 0 - 303 51615 115 0.13998 GALAXY 64 0 - 303 51615 116 0.00000 UNKNOWN 0 16 - 303 51615 117 0.07718 GALAXY 64 0 - 303 51615 118 0.18458 GALAXY 64 0 - 303 51615 119 0.12665 GALAXY 64 0 - 303 51615 120 0.08359 GALAXY 64 0 - 303 51615 121 0.13818 GALAXY 64 0 - 303 51615 122 0.04967 GALAXY 64 0 - 303 51615 123 0.00000 UNKNOWN 0 16 - 303 51615 124 -0.00016 STAR 4 0 - 303 51615 125 0.03949 GALAXY 64 0 - 303 51615 126 0.11951 GALAXY 96 0 - 303 51615 127 0.17649 GALAXY 64 0 - 303 51615 128 0.30345 GALAXY 32 0 - 303 51615 129 0.46682 GALAXY 67108896 0 - 303 51615 130 0.11849 GALAXY 64 0 - 303 51615 131 0.14805 GALAXY 4 0 - 303 51615 132 0.03841 GALAXY 96 0 - 303 51615 133 0.12205 GALAXY 64 0 - 303 51615 134 0.12114 GALAXY 64 0 - 303 51615 135 0.03820 GALAXY 96 0 - 303 51615 136 0.14107 GALAXY 64 0 - 303 51615 137 0.12292 GALAXY 64 0 - 303 51615 138 0.11819 GALAXY 96 0 - 303 51615 139 0.22611 GALAXY 64 0 - 303 51615 140 0.07168 GALAXY 68 0 - 303 51615 141 0.14593 GALAXY 64 0 - 303 51615 142 0.14645 GALAXY 64 0 - 303 51615 143 0.13734 GALAXY 64 0 - 303 51615 144 0.12697 GALAXY 64 0 - 303 51615 145 0.13913 GALAXY 64 0 - 303 51615 146 0.13472 GALAXY 4 0 - 303 51615 147 1.15553 QSO 4 0 - 303 51615 148 0.12651 GALAXY 64 0 - 303 51615 149 0.18449 GALAXY 64 0 - 303 51615 150 0.14027 GALAXY 64 0 - 303 51615 151 0.13886 GALAXY 96 0 - 303 51615 152 0.08651 GALAXY 4 0 - 303 51615 153 0.13677 GALAXY 64 0 - 303 51615 154 0.12623 GALAXY 64 0 - 303 51615 155 0.18136 GALAXY 64 0 - 303 51615 156 0.35517 GALAXY 32 0 - 303 51615 157 0.12483 GALAXY 64 0 - 303 51615 158 0.12492 GALAXY 64 0 - 303 51615 159 0.08465 GALAXY 96 0 - 303 51615 160 0.00000 UNKNOWN 0 16 - 303 51615 161 0.13823 GALAXY 64 0 - 303 51615 162 0.18566 GALAXY 64 0 - 303 51615 163 0.13953 GALAXY 64 0 - 303 51615 164 0.14008 GALAXY 64 0 - 303 51615 165 0.13870 GALAXY 64 0 - 303 51615 166 0.13752 GALAXY 64 0 - 303 51615 167 0.14310 GALAXY 64 0 - 303 51615 168 0.14624 GALAXY 64 0 - 303 51615 169 0.14430 GALAXY 64 0 - 303 51615 170 0.14288 GALAXY 64 0 - 303 51615 171 0.13638 GALAXY 64 0 - 303 51615 172 0.38219 GALAXY 32 0 - 303 51615 173 0.14625 GALAXY 64 0 - 303 51615 174 0.13981 GALAXY 64 0 - 303 51615 175 0.00000 UNKNOWN 0 16 - 303 51615 176 0.13890 GALAXY 96 0 - 303 51615 177 0.03853 QSO 64 0 - 303 51615 178 0.00000 UNKNOWN 0 16 - 303 51615 179 0.14002 GALAXY 64 0 - 303 51615 180 0.13819 GALAXY 64 0 - 303 51615 181 0.18485 GALAXY 64 0 - 303 51615 182 0.00000 UNKNOWN 64 0 - 303 51615 183 0.18515 GALAXY 96 0 - 303 51615 184 0.09695 GALAXY 64 0 - 303 51615 185 0.08360 GALAXY 64 0 - 303 51615 186 0.13778 GALAXY 64 0 - 303 51615 187 0.08305 GALAXY 64 0 - 303 51615 188 0.14806 GALAXY 64 0 - 303 51615 189 0.08777 GALAXY 64 0 - 303 51615 190 0.13786 GALAXY 64 0 - 303 51615 191 0.30427 GALAXY 32 0 - 303 51615 192 0.13824 GALAXY 64 0 - 303 51615 193 0.08700 GALAXY 64 0 - 303 51615 194 0.14108 GALAXY 64 0 - 303 51615 195 0.18590 GALAXY 64 0 - 303 51615 196 0.03835 GALAXY 96 0 - 303 51615 197 0.13716 GALAXY 64 0 - 303 51615 198 0.13796 GALAXY 64 0 - 303 51615 199 0.14069 GALAXY 64 0 - 303 51615 200 0.13844 GALAXY 64 0 - 303 51615 201 0.02561 GALAXY 64 0 - 303 51615 202 0.12045 GALAXY 64 0 - 303 51615 203 0.12262 GALAXY 64 0 - 303 51615 204 0.18730 GALAXY 64 0 - 303 51615 205 0.07011 GALAXY 64 0 - 303 51615 206 0.17683 GALAXY 64 0 - 303 51615 207 0.06975 GALAXY 64 0 - 303 51615 208 0.12060 GALAXY 64 0 - 303 51615 209 0.00000 UNKNOWN 0 16 - 303 51615 210 0.07680 GALAXY 96 0 - 303 51615 211 0.12172 GALAXY 64 0 - 303 51615 212 0.15979 GALAXY 64 0 - 303 51615 213 4.19082 QSO 33554433 0 - 303 51615 214 0.12634 GALAXY 64 0 - 303 51615 215 0.12238 GALAXY 64 0 - 303 51615 216 0.11936 GALAXY 4 0 - 303 51615 217 0.11604 GALAXY 64 0 - 303 51615 218 0.07016 GALAXY 64 0 - 303 51615 219 0.11976 GALAXY 64 0 - 303 51615 220 0.12200 GALAXY 64 0 - 303 51615 221 0.14004 GALAXY 64 0 - 303 51615 222 0.08276 GALAXY 96 0 - 303 51615 223 0.14409 GALAXY 64 0 - 303 51615 224 0.14325 GALAXY 64 0 - 303 51615 225 0.13591 GALAXY 64 0 - 303 51615 226 0.13832 GALAXY 64 0 - 303 51615 227 0.13979 GALAXY 64 0 - 303 51615 228 -0.00005 STAR 1048580 0 - 303 51615 229 0.12175 GALAXY 64 0 - 303 51615 230 0.13944 GALAXY 64 0 - 303 51615 231 0.14066 GALAXY 64 0 - 303 51615 232 0.12430 GALAXY 64 0 - 303 51615 233 0.12844 GALAXY 64 0 - 303 51615 234 0.12459 GALAXY 64 0 - 303 51615 235 0.00000 UNKNOWN 0 16 - 303 51615 236 0.14367 GALAXY 64 0 - 303 51615 237 0.12362 GALAXY 64 0 - 303 51615 238 0.14610 GALAXY 64 0 - 303 51615 239 0.14157 GALAXY 64 0 - 303 51615 240 0.13929 GALAXY 64 0 - 303 51615 241 0.12036 GALAXY 64 0 - 303 51615 242 -0.00024 STAR 4 0 - 303 51615 243 0.19361 GALAXY 64 0 - 303 51615 244 0.05375 GALAXY 64 0 - 303 51615 245 0.05436 GALAXY 64 0 - 303 51615 246 0.18643 GALAXY 64 0 - 303 51615 247 0.05385 GALAXY 64 0 - 303 51615 248 0.03244 GALAXY 64 0 - 303 51615 249 0.06999 GALAXY 64 0 - 303 51615 250 1.07235 QSO 33554433 0 - 303 51615 251 0.11867 GALAXY 64 0 - 303 51615 252 0.18116 GALAXY 2097216 0 - 303 51615 253 0.00000 UNKNOWN 0 16 - 303 51615 254 0.05361 GALAXY 64 0 - 303 51615 255 0.02584 GALAXY 68 0 - 303 51615 256 0.02600 GALAXY 64 0 - 303 51615 257 0.13596 GALAXY 64 0 - 303 51615 258 0.18184 GALAXY 64 0 - 303 51615 259 0.03238 GALAXY 64 0 - 303 51615 260 0.18664 GALAXY 96 0 - 303 51615 261 0.44580 GALAXY 32 0 - 303 51615 262 0.12849 GALAXY 64 0 - 303 51615 263 0.22764 GALAXY 64 0 - 303 51615 264 0.18716 GALAXY 64 0 - 303 51615 265 0.14405 GALAXY 64 0 - 303 51615 266 0.12585 GALAXY 64 0 - 303 51615 267 0.14016 GALAXY 64 0 - 303 51615 268 0.12656 GALAXY 64 0 - 303 51615 269 0.00000 UNKNOWN 0 16 - 303 51615 270 0.13965 GALAXY 64 0 - 303 51615 271 0.12903 GALAXY 64 0 - 303 51615 272 0.12020 GALAXY 64 0 - 303 51615 273 0.14031 GALAXY 64 0 - 303 51615 274 0.12156 GALAXY 64 0 - 303 51615 275 0.12560 GALAXY 4 0 - 303 51615 276 0.13228 GALAXY 64 0 - 303 51615 277 0.12655 GALAXY 64 0 - 303 51615 278 0.08332 GALAXY 64 0 - 303 51615 279 0.12056 GALAXY 64 0 - 303 51615 280 0.16066 GALAXY 64 0 - 303 51615 281 0.02401 GALAXY 64 0 - 303 51615 282 0.85638 QSO 1048580 0 - 303 51615 283 0.00066 STAR 4 0 - 303 51615 284 0.27879 GALAXY 32 0 - 303 51615 285 0.13800 GALAXY 64 0 - 303 51615 286 0.18233 GALAXY 64 0 - 303 51615 287 2.33785 QSO 4 0 - 303 51615 288 -0.00018 STAR 0 34 - 303 51615 289 0.19474 GALAXY 64 0 - 303 51615 290 0.11707 GALAXY 64 0 - 303 51615 291 0.00014 STAR 1 0 - 303 51615 292 0.14998 GALAXY 64 0 - 303 51615 293 0.07891 GALAXY 64 0 - 303 51615 294 0.00004 STAR 5 0 - 303 51615 295 0.84132 QSO 1048580 0 - 303 51615 296 0.00000 UNKNOWN 0 16 - 303 51615 297 0.00502 GALAXY 96 0 - 303 51615 298 0.07705 GALAXY 64 0 - 303 51615 299 0.35208 GALAXY 32 0 - 303 51615 300 -0.00014 STAR 0 32 - 303 51615 301 0.00000 UNKNOWN 0 16 - 303 51615 302 0.12692 GALAXY 68 0 - 303 51615 303 0.13819 GALAXY 64 0 - 303 51615 304 0.02552 GALAXY 96 0 - 303 51615 305 0.37939 GALAXY 32 0 - 303 51615 306 0.13810 GALAXY 96 0 - 303 51615 307 0.09731 GALAXY 64 0 - 303 51615 308 0.13563 GALAXY 64 0 - 303 51615 309 0.37866 GALAXY 32 0 - 303 51615 310 0.09600 GALAXY 4 0 - 303 51615 311 0.12921 GALAXY 64 0 - 303 51615 312 0.08055 GALAXY 64 0 - 303 51615 313 -0.00002 STAR 0 34 - 303 51615 314 0.35973 GALAXY 32 0 - 303 51615 315 0.13089 GALAXY 64 0 - 303 51615 316 0.13860 GALAXY 64 0 - 303 51615 317 0.11593 QSO 64 0 - 303 51615 318 0.05466 GALAXY 64 0 - 303 51615 319 0.00035 STAR 0 34 - 303 51615 320 0.13856 GALAXY 64 0 - 303 51615 321 0.34881 GALAXY 67108896 0 - 303 51615 322 0.62665 QSO 4 0 - 303 51615 323 0.00000 UNKNOWN 0 16 - 303 51615 324 2.13226 QSO 69206048 0 - 303 51615 325 0.10518 GALAXY 64 0 - 303 51615 326 0.10671 GALAXY 64 0 - 303 51615 327 0.17708 GALAXY 64 0 - 303 51615 328 0.95396 QSO 1048580 0 - 303 51615 329 0.14311 GALAXY 96 0 - 303 51615 330 0.15937 GALAXY 64 0 - 303 51615 331 -0.00006 STAR 4096 0 - 303 51615 332 0.02462 GALAXY 64 0 - 303 51615 333 0.14310 GALAXY 64 0 - 303 51615 334 0.14887 GALAXY 64 0 - 303 51615 335 0.14873 GALAXY 64 0 - 303 51615 336 0.09342 GALAXY 64 0 - 303 51615 337 0.00013 STAR 1056768 0 - 303 51615 338 0.17769 GALAXY 64 0 - 303 51615 339 0.14599 GALAXY 64 0 - 303 51615 340 0.02506 GALAXY 96 0 - 303 51615 341 -0.00007 STAR 0 32 - 303 51615 342 0.00027 STAR 0 2 - 303 51615 343 0.05292 GALAXY 96 0 - 303 51615 344 0.05458 GALAXY 64 0 - 303 51615 345 0.00008 STAR 0 2 - 303 51615 346 0.37620 GALAXY 32 0 - 303 51615 347 0.47650 GALAXY 32 0 - 303 51615 348 0.14966 GALAXY 64 0 - 303 51615 349 0.25520 GALAXY 32 0 - 303 51615 350 0.17961 GALAXY 64 0 - 303 51615 351 0.00008 STAR 0 2 - 303 51615 352 0.00019 STAR 0 34 - 303 51615 353 0.00000 UNKNOWN 0 16 - 303 51615 354 0.16110 GALAXY 64 0 - 303 51615 355 0.12826 GALAXY 64 0 - 303 51615 356 0.12942 GALAXY 64 0 - 303 51615 357 0.05495 GALAXY 64 0 - 303 51615 358 0.13825 GALAXY 64 0 - 303 51615 359 0.00011 STAR 4 0 - 303 51615 360 0.00039 STAR 0 2 - 303 51615 361 0.02496 GALAXY 64 0 - 303 51615 362 0.00000 UNKNOWN 0 16 - 303 51615 363 0.87852 QSO 4 0 - 303 51615 364 0.09466 GALAXY 64 0 - 303 51615 365 0.09438 GALAXY 64 0 - 303 51615 366 0.04622 GALAXY 64 0 - 303 51615 367 0.05273 GALAXY 68 0 - 303 51615 368 0.12304 GALAXY 64 0 - 303 51615 369 0.10561 GALAXY 64 0 - 303 51615 370 0.26040 GALAXY 32 0 - 303 51615 371 0.05272 GALAXY 64 0 - 303 51615 372 0.56365 QSO 4 0 - 303 51615 373 0.14424 GALAXY 64 0 - 303 51615 374 0.22629 GALAXY 64 0 - 303 51615 375 0.20042 GALAXY 4 0 - 303 51615 376 0.26171 GALAXY 96 0 - 303 51615 377 0.05383 GALAXY 64 0 - 303 51615 378 0.40648 GALAXY 32 0 - 303 51615 379 0.08437 GALAXY 64 0 - 303 51615 380 0.14683 GALAXY 64 0 - 303 51615 381 0.20679 GALAXY 64 0 - 303 51615 382 0.14269 GALAXY 64 0 - 303 51615 383 0.12437 GALAXY 64 0 - 303 51615 384 0.26329 GALAXY 32 0 - 303 51615 385 0.14199 GALAXY 64 0 - 303 51615 386 0.13824 GALAXY 64 0 - 303 51615 387 0.34916 GALAXY 32 0 - 303 51615 388 0.00000 UNKNOWN 0 16 - 303 51615 389 0.00000 UNKNOWN 8196 0 - 303 51615 390 0.00000 UNKNOWN 64 0 - 303 51615 391 0.46777 UNKNOWN 67108896 0 - 303 51615 392 0.13999 GALAXY 64 0 - 303 51615 393 0.17975 GALAXY 64 0 - 303 51615 394 0.05454 GALAXY 64 0 - 303 51615 395 0.12311 GALAXY 64 0 - 303 51615 396 0.18770 GALAXY 64 0 - 303 51615 397 0.12757 GALAXY 64 0 - 303 51615 398 0.12548 GALAXY 64 0 - 303 51615 399 0.12555 GALAXY 64 0 - 303 51615 400 0.26812 QSO 33554433 0 - 303 51615 401 0.96681 QSO 1048580 0 - 303 51615 402 0.14278 GALAXY 1048580 0 - 303 51615 403 0.13824 GALAXY 64 0 - 303 51615 404 0.12316 GALAXY 64 0 - 303 51615 405 0.00000 UNKNOWN 0 16 - 303 51615 406 0.38759 GALAXY 32 0 - 303 51615 407 0.00036 STAR 0 2 - 303 51615 408 0.05437 GALAXY 64 0 - 303 51615 409 0.23341 GALAXY 96 0 - 303 51615 410 0.17944 GALAXY 64 0 - 303 51615 411 0.05307 GALAXY 64 0 - 303 51615 412 0.16374 GALAXY 64 0 - 303 51615 413 0.29846 GALAXY 32 0 - 303 51615 414 0.56806 QSO 1048580 0 - 303 51615 415 0.47806 GALAXY 67108896 0 - 303 51615 416 0.00035 STAR 0 2 - 303 51615 417 0.17954 GALAXY 64 0 - 303 51615 418 0.05349 GALAXY 64 0 - 303 51615 419 0.04799 GALAXY 68 0 - 303 51615 420 0.05277 GALAXY 64 0 - 303 51615 421 0.12371 GALAXY 64 0 - 303 51615 422 0.12361 GALAXY 64 0 - 303 51615 423 0.12334 GALAXY 64 0 - 303 51615 424 0.13979 GALAXY 64 0 - 303 51615 425 0.14415 GALAXY 64 0 - 303 51615 426 0.14098 GALAXY 64 0 - 303 51615 427 0.05431 GALAXY 64 0 - 303 51615 428 0.12195 GALAXY 64 0 - 303 51615 429 0.19232 GALAXY 64 0 - 303 51615 430 0.12509 GALAXY 64 0 - 303 51615 431 0.17950 GALAXY 96 0 - 303 51615 432 0.12672 GALAXY 64 0 - 303 51615 433 0.12357 GALAXY 64 0 - 303 51615 434 0.18911 GALAXY 64 0 - 303 51615 435 0.18094 GALAXY 4 0 - 303 51615 436 0.18013 GALAXY 64 0 - 303 51615 437 0.13522 GALAXY 64 0 - 303 51615 438 0.00000 UNKNOWN 0 16 - 303 51615 439 0.10386 GALAXY 64 0 - 303 51615 440 0.12335 GALAXY 64 0 - 303 51615 441 0.00000 UNKNOWN 0 16 - 303 51615 442 0.07764 GALAXY 64 0 - 303 51615 443 0.12338 GALAXY 64 0 - 303 51615 444 0.26327 GALAXY 96 0 - 303 51615 445 0.12251 GALAXY 64 0 - 303 51615 446 0.05386 GALAXY 64 0 - 303 51615 447 0.18058 GALAXY 64 0 - 303 51615 448 0.12346 GALAXY 64 0 - 303 51615 449 0.12331 GALAXY 64 0 - 303 51615 450 1.04096 QSO 1048580 0 - 303 51615 451 0.26478 GALAXY 96 0 - 303 51615 452 0.26388 GALAXY 32 0 - 303 51615 453 0.10636 GALAXY 64 0 - 303 51615 454 0.11381 GALAXY 96 0 - 303 51615 455 0.07711 GALAXY 64 0 - 303 51615 456 0.11429 GALAXY 64 0 - 303 51615 457 0.12530 GALAXY 96 0 - 303 51615 458 0.38428 GALAXY 32 0 - 303 51615 459 0.26511 GALAXY 32 0 - 303 51615 460 0.11425 GALAXY 64 0 - 303 51615 461 0.14396 GALAXY 64 0 - 303 51615 462 0.19128 GALAXY 64 0 - 303 51615 463 0.18357 GALAXY 64 0 - 303 51615 464 1.26341 QSO 3145748 0 - 303 51615 465 0.12700 GALAXY 96 0 - 303 51615 466 0.00019 STAR 4 0 - 303 51615 467 0.03861 GALAXY 64 0 - 303 51615 468 -0.00010 STAR 64 0 - 303 51615 469 0.07709 GALAXY 64 0 - 303 51615 470 0.12394 GALAXY 96 0 - 303 51615 471 1.93617 QSO 1048580 512 - 303 51615 472 0.13507 GALAXY 64 0 - 303 51615 473 0.00000 UNKNOWN 0 16 - 303 51615 474 0.04740 GALAXY 64 0 - 303 51615 475 0.38421 GALAXY 32 0 - 303 51615 476 0.25720 GALAXY 64 0 - 303 51615 477 1.68141 QSO 1 0 - 303 51615 478 0.16772 GALAXY 64 0 - 303 51615 479 0.13634 GALAXY 64 0 - 303 51615 480 0.18504 GALAXY 64 0 - 303 51615 481 0.08441 GALAXY 64 0 - 303 51615 482 0.12819 GALAXY 64 0 - 303 51615 483 0.12616 GALAXY 4160 0 - 303 51615 484 0.12758 GALAXY 64 0 - 303 51615 485 0.12623 GALAXY 64 0 - 303 51615 486 0.11640 GALAXY 64 0 - 303 51615 487 0.12991 GALAXY 64 0 - 303 51615 488 0.00000 UNKNOWN 0 16 - 303 51615 489 0.11879 QSO 1048580 0 - 303 51615 490 0.13549 GALAXY 64 0 - 303 51615 491 0.11970 GALAXY 64 0 - 303 51615 492 0.05318 GALAXY 64 0 - 303 51615 493 0.12401 GALAXY 96 0 - 303 51615 494 0.35248 GALAXY 32 0 - 303 51615 495 1.52949 QSO 64 0 - 303 51615 496 0.18065 GALAXY 64 0 - 303 51615 497 0.12581 GALAXY 64 0 - 303 51615 498 0.12469 GALAXY 64 0 - 303 51615 499 0.14231 GALAXY 64 0 - 303 51615 500 0.18358 GALAXY 64 0 - 303 51615 501 0.07715 GALAXY 64 0 - 303 51615 502 0.05272 GALAXY 96 0 - 303 51615 503 0.07731 GALAXY 64 0 - 303 51615 504 0.43542 GALAXY 32 0 - 303 51615 505 0.05237 GALAXY 96 0 - 303 51615 506 0.35376 GALAXY 32 0 - 303 51615 507 0.02563 GALAXY 96 0 - 303 51615 508 0.14406 GALAXY 64 0 - 303 51615 509 0.19105 GALAXY 64 0 - 303 51615 510 0.12483 GALAXY 64 0 - 303 51615 511 0.05279 GALAXY 64 0 - 303 51615 512 0.16798 GALAXY 64 0 - 303 51615 513 0.00000 UNKNOWN 0 16 - 303 51615 514 0.00008 STAR 0 2 - 303 51615 515 0.05149 GALAXY 64 0 - 303 51615 516 0.12475 GALAXY 64 0 - 303 51615 517 0.96759 QSO 1048580 0 - 303 51615 518 1.56477 QSO 5124 0 - 303 51615 519 0.13420 GALAXY 64 0 - 303 51615 520 0.12334 GALAXY 64 0 - 303 51615 521 0.16445 GALAXY 96 0 - 303 51615 522 0.08423 GALAXY 64 0 - 303 51615 523 0.17477 GALAXY 64 0 - 303 51615 524 0.18756 GALAXY 64 0 - 303 51615 525 0.18505 GALAXY 64 0 - 303 51615 526 0.12008 GALAXY 64 0 - 303 51615 527 0.42605 GALAXY 67108896 0 - 303 51615 528 0.08408 GALAXY 64 0 - 303 51615 529 0.39416 GALAXY 32 0 - 303 51615 530 0.44827 GALAXY 67108896 0 - 303 51615 531 0.12294 GALAXY 64 0 - 303 51615 532 0.00005 STAR 0 34 - 303 51615 533 0.35707 GALAXY 32 0 - 303 51615 534 0.06943 GALAXY 64 0 - 303 51615 535 0.02546 GALAXY 64 0 - 303 51615 536 1.04201 QSO 1572868 0 - 303 51615 537 0.00000 UNKNOWN 0 16 - 303 51615 538 0.18399 GALAXY 64 0 - 303 51615 539 0.05328 GALAXY 64 0 - 303 51615 540 -0.00006 STAR 0 34 - 303 51615 541 0.00000 UNKNOWN 0 16 - 303 51615 542 0.43010 GALAXY 32 0 - 303 51615 543 0.00015 STAR 1 0 - 303 51615 544 0.05340 GALAXY 64 0 - 303 51615 545 0.04994 GALAXY 96 0 - 303 51615 546 0.05032 GALAXY 64 0 - 303 51615 547 0.05328 GALAXY 64 0 - 303 51615 548 0.36108 GALAXY 32 0 - 303 51615 549 0.05454 GALAXY 96 0 - 303 51615 550 0.04802 GALAXY 96 0 - 303 51615 551 0.05310 GALAXY 96 0 - 303 51615 552 0.05278 GALAXY 64 0 - 303 51615 553 0.05339 GALAXY 96 0 - 303 51615 554 0.05088 GALAXY 64 0 - 303 51615 555 0.09703 GALAXY 64 0 - 303 51615 556 0.04964 GALAXY 64 0 - 303 51615 557 0.05017 GALAXY 64 0 - 303 51615 558 0.00041 STAR 0 2 - 303 51615 559 0.05365 UNKNOWN 64 0 - 303 51615 560 0.05283 GALAXY 64 0 - 303 51615 561 0.11438 GALAXY 4 0 - 303 51615 562 0.05452 GALAXY 64 0 - 303 51615 563 0.05347 GALAXY 96 0 - 303 51615 564 -0.00015 STAR 1 0 - 303 51615 565 0.25452 GALAXY 64 0 - 303 51615 566 0.05045 GALAXY 64 0 - 303 51615 567 0.00000 UNKNOWN 0 16 - 303 51615 568 0.35780 GALAXY 32 0 - 303 51615 569 0.12614 GALAXY 64 0 - 303 51615 570 0.05424 GALAXY 64 0 - 303 51615 571 0.05030 GALAXY 64 0 - 303 51615 572 0.07746 GALAXY 96 0 - 303 51615 573 0.17386 GALAXY 64 0 - 303 51615 574 0.16799 GALAXY 64 0 - 303 51615 575 0.12897 GALAXY 64 0 - 303 51615 576 1.97282 QSO 1048580 0 - 303 51615 577 0.17400 GALAXY 96 0 - 303 51615 578 0.05344 GALAXY 64 0 - 303 51615 579 0.00000 UNKNOWN 64 0 - 303 51615 580 0.17858 GALAXY 64 0 - 303 51615 581 0.00000 UNKNOWN 64 0 - 303 51615 582 0.00000 UNKNOWN 64 0 - 303 51615 583 0.05425 GALAXY 64 0 - 303 51615 584 0.12497 GALAXY 64 0 - 303 51615 585 0.05262 GALAXY 68 0 - 303 51615 586 0.04974 GALAXY 64 0 - 303 51615 587 0.05296 GALAXY 64 0 - 303 51615 588 -0.00018 STAR 1048580 0 - 303 51615 589 0.05324 GALAXY 64 0 - 303 51615 590 0.05025 GALAXY 64 0 - 303 51615 591 0.10004 GALAXY 64 0 - 303 51615 592 0.10019 GALAXY 64 0 - 303 51615 593 0.13632 GALAXY 68 0 - 303 51615 594 0.05333 GALAXY 64 0 - 303 51615 595 0.00000 UNKNOWN 0 16 - 303 51615 596 0.05339 GALAXY 64 0 - 303 51615 597 0.05259 GALAXY 64 0 - 303 51615 598 0.07292 GALAXY 64 0 - 303 51615 599 0.65370 GALAXY 64 0 - 303 51615 600 0.15076 GALAXY 64 0 - 303 51615 601 1.53008 QSO 64 0 - 303 51615 602 0.00000 UNKNOWN 64 0 - 303 51615 603 0.00000 UNKNOWN 0 16 - 303 51615 604 0.12014 GALAXY 64 0 - 303 51615 605 0.00000 UNKNOWN 64 0 - 303 51615 606 0.02590 GALAXY 64 0 - 303 51615 607 0.12880 GALAXY 68 0 - 303 51615 608 0.02589 GALAXY 64 0 - 303 51615 609 0.34337 GALAXY 32 0 - 303 51615 610 0.18761 GALAXY 64 0 - 303 51615 611 0.11822 GALAXY 64 0 - 303 51615 612 0.05283 GALAXY 64 0 - 303 51615 613 0.05324 GALAXY 64 0 - 303 51615 614 0.12202 GALAXY 64 0 - 303 51615 615 0.02534 GALAXY 64 0 - 303 51615 616 1.52928 QSO 64 0 - 303 51615 617 0.00000 UNKNOWN 64 0 - 303 51615 618 0.25687 GALAXY 96 0 - 303 51615 619 0.10079 GALAXY 64 0 - 303 51615 620 0.35021 GALAXY 32 0 - 303 51615 621 0.05323 GALAXY 96 0 - 303 51615 622 -0.00015 STAR 1 0 - 303 51615 623 0.00009 STAR 1 0 - 303 51615 624 0.09694 GALAXY 64 0 - 303 51615 625 0.00000 UNKNOWN 0 16 - 303 51615 626 0.12056 GALAXY 64 0 - 303 51615 627 0.08411 GALAXY 64 0 - 303 51615 628 1.71344 QSO 1048580 0 - 303 51615 629 0.33956 GALAXY 32 0 - 303 51615 630 0.09712 GALAXY 64 0 - 303 51615 631 0.48143 GALAXY 1 0 - 303 51615 632 0.05330 GALAXY 64 0 - 303 51615 633 0.12287 GALAXY 64 0 - 303 51615 634 0.05231 GALAXY 64 0 - 303 51615 635 -0.00006 STAR 1 0 - 303 51615 636 1.54472 QSO 1048580 0 - 303 51615 637 0.00006 STAR 1 0 - 303 51615 638 -0.00016 STAR 1 0 - 303 51615 639 -0.00006 STAR 1 0 - 303 51615 640 0.06001 GALAXY 64 0 - 304 51609 1 0.08459 GALAXY 64 0 - 304 51609 2 0.19198 GALAXY 64 0 - 304 51609 3 0.27845 GALAXY 96 0 - 304 51609 4 -0.00008 UNKNOWN 64 0 - 304 51609 5 -0.00032 STAR 69 0 - 304 51609 6 0.36525 QSO 1048580 0 - 304 51609 7 0.00000 UNKNOWN 0 16 - 304 51609 8 -0.00013 STAR 4 0 - 304 51609 9 -0.00045 STAR 4 0 - 304 51609 10 0.89147 GALAXY 32 0 - 304 51609 11 0.38161 GALAXY 67108896 0 - 304 51609 12 0.08440 GALAXY 64 0 - 304 51609 13 0.20834 GALAXY 64 0 - 304 51609 14 0.13052 GALAXY 64 0 - 304 51609 15 0.13892 GALAXY 64 0 - 304 51609 16 0.91114 QSO 1048580 0 - 304 51609 17 0.12680 GALAXY 64 0 - 304 51609 18 0.67936 QSO 1048580 0 - 304 51609 19 0.38259 GALAXY 32 0 - 304 51609 20 0.03151 GALAXY 64 0 - 304 51609 21 0.00024 STAR 1048580 0 - 304 51609 22 0.05426 GALAXY 64 0 - 304 51609 23 -0.00027 STAR 64 0 - 304 51609 24 0.07231 GALAXY 64 0 - 304 51609 25 0.05476 GALAXY 64 0 - 304 51609 26 0.00031 STAR 69 0 - 304 51609 27 0.16898 GALAXY 64 0 - 304 51609 28 0.18032 GALAXY 64 0 - 304 51609 29 0.05489 GALAXY 64 0 - 304 51609 30 -0.00019 STAR 64 0 - 304 51609 31 -0.00022 STAR 64 0 - 304 51609 32 0.12706 GALAXY 64 0 - 304 51609 33 0.12676 GALAXY 64 0 - 304 51609 34 0.10550 GALAXY 1048580 0 - 304 51609 35 -0.00010 STAR 64 0 - 304 51609 36 0.00014 STAR 4 0 - 304 51609 37 0.07327 GALAXY 64 0 - 304 51609 38 -0.00022 STAR 64 0 - 304 51609 39 0.00004 STAR 64 0 - 304 51609 40 0.05423 GALAXY 4 0 - 304 51609 41 0.12686 GALAXY 64 0 - 304 51609 42 -0.00043 STAR 4 0 - 304 51609 43 -0.00024 STAR 68 0 - 304 51609 44 -0.00021 STAR 64 0 - 304 51609 45 -0.00015 STAR 69 0 - 304 51609 46 0.05520 GALAXY 64 0 - 304 51609 47 -0.00030 STAR 64 0 - 304 51609 48 -0.00008 STAR 64 0 - 304 51609 49 0.12993 GALAXY 64 0 - 304 51609 50 0.00000 UNKNOWN 0 16 - 304 51609 51 0.20114 GALAXY 64 0 - 304 51609 52 0.19142 GALAXY 64 0 - 304 51609 53 -0.00048 STAR 69 0 - 304 51609 54 -0.00017 STAR 64 0 - 304 51609 55 -0.00000 STAR 0 34 - 304 51609 56 -0.00023 STAR 64 0 - 304 51609 57 0.32337 GALAXY 96 0 - 304 51609 58 0.13096 GALAXY 64 0 - 304 51609 59 -0.00023 STAR 4 0 - 304 51609 60 -0.00018 STAR 64 0 - 304 51609 61 0.00000 MISSING 0 0 - 304 51609 62 0.05479 GALAXY 96 0 - 304 51609 63 0.20075 GALAXY 96 0 - 304 51609 64 1.53878 QSO 4 0 - 304 51609 65 0.05034 GALAXY 64 0 - 304 51609 66 0.10224 GALAXY 64 0 - 304 51609 67 0.00000 UNKNOWN 0 16 - 304 51609 68 0.08452 GALAXY 64 0 - 304 51609 69 0.19150 GALAXY 64 0 - 304 51609 70 0.10253 GALAXY 64 0 - 304 51609 71 0.08400 GALAXY 64 0 - 304 51609 72 0.12522 GALAXY 64 0 - 304 51609 73 -0.00015 STAR 1048580 0 - 304 51609 74 0.19059 GALAXY 64 0 - 304 51609 75 0.00000 UNKNOWN 0 16 - 304 51609 76 -0.00016 STAR 1056772 0 - 304 51609 77 0.08265 GALAXY 64 0 - 304 51609 78 0.10136 GALAXY 64 0 - 304 51609 79 0.10287 GALAXY 96 0 - 304 51609 80 0.15610 GALAXY 64 0 - 304 51609 81 2.69898 QSO 1 0 - 304 51609 82 0.00000 UNKNOWN 0 16 - 304 51609 83 0.00526 GALAXY 96 0 - 304 51609 84 0.13954 GALAXY 64 0 - 304 51609 85 0.11958 GALAXY 64 0 - 304 51609 86 1.56549 QSO 1048580 0 - 304 51609 87 0.12763 GALAXY 64 0 - 304 51609 88 0.12598 GALAXY 64 0 - 304 51609 89 1.52913 QSO 64 0 - 304 51609 90 0.05083 GALAXY 64 0 - 304 51609 91 0.07357 GALAXY 64 0 - 304 51609 92 0.12783 GALAXY 64 0 - 304 51609 93 0.16112 GALAXY 64 0 - 304 51609 94 0.14973 GALAXY 64 0 - 304 51609 95 0.05416 GALAXY 64 0 - 304 51609 96 0.13864 GALAXY 64 0 - 304 51609 97 0.13103 GALAXY 64 0 - 304 51609 98 0.05391 GALAXY 64 0 - 304 51609 99 0.13978 GALAXY 64 0 - 304 51609 100 0.08357 GALAXY 64 0 - 304 51609 101 0.15473 GALAXY 64 0 - 304 51609 102 0.02909 GALAXY 64 0 - 304 51609 103 0.12571 GALAXY 64 0 - 304 51609 104 0.12833 GALAXY 64 0 - 304 51609 105 -0.00033 STAR 4 0 - 304 51609 106 0.00000 UNKNOWN 0 16 - 304 51609 107 -0.00020 STAR 1 0 - 304 51609 108 0.12684 GALAXY 64 0 - 304 51609 109 0.12965 GALAXY 2097216 0 - 304 51609 110 1.45108 QSO 4 0 - 304 51609 111 0.12696 GALAXY 64 0 - 304 51609 112 0.12821 GALAXY 64 0 - 304 51609 113 0.16917 GALAXY 64 0 - 304 51609 114 0.19246 GALAXY 64 0 - 304 51609 115 0.12610 GALAXY 64 0 - 304 51609 116 0.05437 GALAXY 64 0 - 304 51609 117 0.08362 GALAXY 64 0 - 304 51609 118 0.19392 GALAXY 64 0 - 304 51609 119 0.10181 GALAXY 68 0 - 304 51609 120 0.37140 GALAXY 32 0 - 304 51609 121 0.05295 GALAXY 64 0 - 304 51609 122 0.05181 GALAXY 64 0 - 304 51609 123 0.16072 GALAXY 4 0 - 304 51609 124 0.10160 GALAXY 64 0 - 304 51609 125 0.30751 GALAXY 32 0 - 304 51609 126 0.10165 GALAXY 64 0 - 304 51609 127 0.35684 GALAXY 32 0 - 304 51609 128 0.10160 GALAXY 64 0 - 304 51609 129 0.13811 GALAXY 64 0 - 304 51609 130 0.13712 GALAXY 64 0 - 304 51609 131 0.35725 GALAXY 32 0 - 304 51609 132 0.15330 GALAXY 1 0 - 304 51609 133 0.00000 UNKNOWN 0 16 - 304 51609 134 0.38646 GALAXY 32 0 - 304 51609 135 0.45303 QSO 33554433 0 - 304 51609 136 0.05186 GALAXY 64 0 - 304 51609 137 0.05244 GALAXY 4 0 - 304 51609 138 0.05180 GALAXY 96 0 - 304 51609 139 -0.00010 STAR 524288 0 - 304 51609 140 0.27610 GALAXY 32 0 - 304 51609 141 0.13850 GALAXY 64 0 - 304 51609 142 1.47456 QSO 64 0 - 304 51609 143 0.15142 GALAXY 64 0 - 304 51609 144 0.00000 UNKNOWN 0 16 - 304 51609 145 0.10205 GALAXY 64 0 - 304 51609 146 0.00000 MISSING 0 0 - 304 51609 147 0.13842 GALAXY 64 0 - 304 51609 148 0.12612 GALAXY 64 0 - 304 51609 149 0.32013 GALAXY 32 0 - 304 51609 150 0.00001 STAR 0 2 - 304 51609 151 0.13894 GALAXY 64 0 - 304 51609 152 0.06321 GALAXY 33554496 0 - 304 51609 153 0.51683 QSO 1048580 0 - 304 51609 154 0.05119 GALAXY 68 0 - 304 51609 155 0.13806 GALAXY 64 0 - 304 51609 156 0.13185 GALAXY 64 0 - 304 51609 157 0.05158 GALAXY 64 0 - 304 51609 158 0.31942 GALAXY 32 0 - 304 51609 159 0.08410 GALAXY 64 0 - 304 51609 160 0.05109 GALAXY 64 0 - 304 51609 161 0.08406 GALAXY 64 0 - 304 51609 162 0.96869 QSO 1048580 0 - 304 51609 163 0.12005 GALAXY 64 0 - 304 51609 164 0.08090 GALAXY 64 0 - 304 51609 165 0.12586 GALAXY 64 0 - 304 51609 166 0.35577 GALAXY 32 0 - 304 51609 167 0.18506 GALAXY 64 0 - 304 51609 168 0.00014 STAR 0 2 - 304 51609 169 0.03924 GALAXY 64 0 - 304 51609 170 0.13848 GALAXY 64 0 - 304 51609 171 0.12359 GALAXY 64 0 - 304 51609 172 0.07705 GALAXY 64 0 - 304 51609 173 0.35809 GALAXY 32 0 - 304 51609 174 0.14745 GALAXY 64 0 - 304 51609 175 0.13224 GALAXY 64 0 - 304 51609 176 0.00000 UNKNOWN 0 16 - 304 51609 177 0.13776 GALAXY 64 0 - 304 51609 178 0.13193 GALAXY 64 0 - 304 51609 179 -0.00017 STAR 64 0 - 304 51609 180 -0.00008 STAR 42991616 0 - 304 51609 181 -0.00030 STAR 1 0 - 304 51609 182 0.08292 GALAXY 64 0 - 304 51609 183 0.14542 GALAXY 64 0 - 304 51609 184 0.14033 GALAXY 64 0 - 304 51609 185 -0.00018 STAR 1 0 - 304 51609 186 0.00000 UNKNOWN 0 16 - 304 51609 187 0.08176 GALAXY 64 0 - 304 51609 188 0.10112 GALAXY 4 0 - 304 51609 189 -0.00009 STAR 1 0 - 304 51609 190 0.20048 GALAXY 64 0 - 304 51609 191 0.14095 GALAXY 64 0 - 304 51609 192 1.29588 QSO 2097168 0 - 304 51609 193 0.00036 STAR 4 0 - 304 51609 194 0.08373 GALAXY 96 0 - 304 51609 195 1.93702 QSO 1048580 0 - 304 51609 196 0.32206 GALAXY 32 0 - 304 51609 197 0.08334 GALAXY 64 0 - 304 51609 198 0.11980 GALAXY 64 0 - 304 51609 199 0.10121 GALAXY 64 0 - 304 51609 200 0.08325 GALAXY 68 0 - 304 51609 201 0.08406 GALAXY 64 0 - 304 51609 202 0.15401 GALAXY 64 0 - 304 51609 203 0.13755 GALAXY 64 0 - 304 51609 204 0.08282 GALAXY 64 0 - 304 51609 205 0.18151 GALAXY 64 0 - 304 51609 206 0.08441 GALAXY 64 0 - 304 51609 207 0.13868 GALAXY 64 0 - 304 51609 208 0.19801 GALAXY 64 0 - 304 51609 209 0.16909 GALAXY 64 0 - 304 51609 210 0.00000 UNKNOWN 0 16 - 304 51609 211 0.13980 GALAXY 64 0 - 304 51609 212 -0.00017 STAR 9437184 0 - 304 51609 213 0.08372 GALAXY 64 0 - 304 51609 214 0.07756 GALAXY 64 0 - 304 51609 215 0.04357 GALAXY 64 0 - 304 51609 216 0.16841 GALAXY 64 0 - 304 51609 217 0.12255 GALAXY 64 0 - 304 51609 218 0.13829 GALAXY 64 0 - 304 51609 219 -0.00016 STAR 1048580 0 - 304 51609 220 0.04299 GALAXY 64 0 - 304 51609 221 0.08209 GALAXY 96 0 - 304 51609 222 -0.00063 STAR 0 34 - 304 51609 223 0.25337 GALAXY 4 0 - 304 51609 224 -0.00026 STAR 0 34 - 304 51609 225 0.13949 GALAXY 64 0 - 304 51609 226 -0.00012 STAR 16777216 0 - 304 51609 227 0.08175 GALAXY 4 0 - 304 51609 228 0.08212 GALAXY 96 0 - 304 51609 229 0.14113 GALAXY 64 0 - 304 51609 230 1.60772 QSO 1048580 0 - 304 51609 231 0.04952 GALAXY 64 0 - 304 51609 232 0.08466 GALAXY 96 0 - 304 51609 233 0.05007 GALAXY 96 0 - 304 51609 234 0.15024 GALAXY 96 0 - 304 51609 235 0.04819 GALAXY 64 0 - 304 51609 236 0.08498 GALAXY 64 0 - 304 51609 237 0.00043 STAR 1 0 - 304 51609 238 0.15094 GALAXY 64 0 - 304 51609 239 0.00000 UNKNOWN 0 16 - 304 51609 240 0.08229 GALAXY 64 0 - 304 51609 241 0.18385 GALAXY 96 0 - 304 51609 242 0.12756 GALAXY 64 0 - 304 51609 243 0.37910 GALAXY 67108896 0 - 304 51609 244 0.14080 GALAXY 64 0 - 304 51609 245 0.14238 GALAXY 64 0 - 304 51609 246 0.14527 GALAXY 64 0 - 304 51609 247 0.13793 GALAXY 64 0 - 304 51609 248 0.14353 GALAXY 64 0 - 304 51609 249 0.13964 GALAXY 64 0 - 304 51609 250 0.13837 GALAXY 64 0 - 304 51609 251 0.07694 GALAXY 64 0 - 304 51609 252 0.08332 GALAXY 96 0 - 304 51609 253 0.12570 GALAXY 64 0 - 304 51609 254 -0.00015 STAR 0 34 - 304 51609 255 0.00000 UNKNOWN 0 16 - 304 51609 256 0.14230 GALAXY 96 0 - 304 51609 257 0.12921 GALAXY 64 0 - 304 51609 258 0.14036 GALAXY 64 0 - 304 51609 259 0.14504 GALAXY 96 0 - 304 51609 260 0.13624 GALAXY 64 0 - 304 51609 261 0.12472 GALAXY 64 0 - 304 51609 262 0.12590 GALAXY 64 0 - 304 51609 263 0.14979 GALAXY 64 0 - 304 51609 264 -0.00021 STAR 16384 0 - 304 51609 265 0.00034 STAR 1 0 - 304 51609 266 0.12723 GALAXY 64 0 - 304 51609 267 0.08640 GALAXY 64 0 - 304 51609 268 0.00000 UNKNOWN 0 16 - 304 51609 269 -0.00038 STAR 64 0 - 304 51609 270 0.12694 GALAXY 64 0 - 304 51609 271 0.04857 GALAXY 64 0 - 304 51609 272 0.66879 QSO 4 0 - 304 51609 273 -0.00026 STAR 16384 0 - 304 51609 274 0.18628 GALAXY 64 0 - 304 51609 275 -0.00011 STAR 4 0 - 304 51609 276 0.12725 GALAXY 64 0 - 304 51609 277 0.14939 GALAXY 64 0 - 304 51609 278 0.08345 GALAXY 64 0 - 304 51609 279 0.18472 GALAXY 96 0 - 304 51609 280 -0.00029 STAR 16384 0 - 304 51609 281 0.13790 GALAXY 64 0 - 304 51609 282 0.03852 GALAXY 64 0 - 304 51609 283 0.13977 GALAXY 96 0 - 304 51609 284 0.13796 GALAXY 4 0 - 304 51609 285 0.12894 GALAXY 64 0 - 304 51609 286 0.13817 GALAXY 64 0 - 304 51609 287 0.13724 GALAXY 64 0 - 304 51609 288 -0.00041 STAR 32768 0 - 304 51609 289 0.12125 GALAXY 64 0 - 304 51609 290 0.18444 GALAXY 64 0 - 304 51609 291 0.12589 GALAXY 64 0 - 304 51609 292 0.13590 GALAXY 96 0 - 304 51609 293 0.12279 GALAXY 64 0 - 304 51609 294 0.00000 UNKNOWN 0 16 - 304 51609 295 0.13629 GALAXY 64 0 - 304 51609 296 0.14580 GALAXY 64 0 - 304 51609 297 0.00019 STAR 9437188 0 - 304 51609 298 0.11617 GALAXY 64 0 - 304 51609 299 0.05279 GALAXY 64 0 - 304 51609 300 0.03830 GALAXY 64 0 - 304 51609 301 0.00039 UNKNOWN 6144 0 - 304 51609 302 0.18664 GALAXY 64 0 - 304 51609 303 0.11974 GALAXY 64 0 - 304 51609 304 0.07743 GALAXY 96 0 - 304 51609 305 0.14760 GALAXY 64 0 - 304 51609 306 0.14760 GALAXY 64 0 - 304 51609 307 0.12134 GALAXY 64 0 - 304 51609 308 0.82037 QSO 1048580 0 - 304 51609 309 0.15004 GALAXY 64 0 - 304 51609 310 0.03762 GALAXY 64 0 - 304 51609 311 0.00000 UNKNOWN 0 16 - 304 51609 312 0.37930 GALAXY 32 0 - 304 51609 313 0.14789 GALAXY 64 0 - 304 51609 314 0.13895 GALAXY 64 0 - 304 51609 315 -0.00039 STAR 1048580 0 - 304 51609 316 0.11822 GALAXY 64 0 - 304 51609 317 0.15241 GALAXY 64 0 - 304 51609 318 1.35256 GALAXY 32 0 - 304 51609 319 0.12080 GALAXY 64 0 - 304 51609 320 0.08254 GALAXY 64 0 - 304 51609 321 0.12507 QSO 64 0 - 304 51609 322 0.04731 GALAXY 96 0 - 304 51609 323 0.08248 GALAXY 64 0 - 304 51609 324 0.00000 UNKNOWN 0 16 - 304 51609 325 0.37433 GALAXY 32 0 - 304 51609 326 -0.00007 STAR 4194304 0 - 304 51609 327 0.05377 GALAXY 64 0 - 304 51609 328 0.12646 GALAXY 64 0 - 304 51609 329 0.00000 MISSING 0 0 - 304 51609 330 0.12388 GALAXY 64 0 - 304 51609 331 0.12280 GALAXY 64 0 - 304 51609 332 0.18089 GALAXY 96 0 - 304 51609 333 0.18485 GALAXY 64 0 - 304 51609 334 0.12679 GALAXY 64 0 - 304 51609 335 0.10376 GALAXY 64 0 - 304 51609 336 0.12494 GALAXY 64 0 - 304 51609 337 0.07721 GALAXY 96 0 - 304 51609 338 0.13771 GALAXY 64 0 - 304 51609 339 0.02561 GALAXY 64 0 - 304 51609 340 -0.00024 STAR 0 2 - 304 51609 341 -0.00044 STAR 0 34 - 304 51609 342 0.26552 GALAXY 1048580 0 - 304 51609 343 -0.00004 STAR 0 2 - 304 51609 344 0.05428 GALAXY 64 0 - 304 51609 345 0.00001 STAR 4 0 - 304 51609 346 0.05460 GALAXY 64 0 - 304 51609 347 0.05426 GALAXY 64 0 - 304 51609 348 0.07752 GALAXY 64 0 - 304 51609 349 0.15498 GALAXY 64 0 - 304 51609 350 0.00000 UNKNOWN 0 16 - 304 51609 351 0.26709 GALAXY 32 0 - 304 51609 352 0.17414 GALAXY 64 0 - 304 51609 353 0.09686 GALAXY 64 0 - 304 51609 354 0.14381 GALAXY 64 0 - 304 51609 355 0.26563 GALAXY 32 0 - 304 51609 356 0.07726 GALAXY 64 0 - 304 51609 357 0.08386 GALAXY 64 0 - 304 51609 358 0.11354 GALAXY 64 0 - 304 51609 359 0.12421 GALAXY 64 0 - 304 51609 360 0.00006 STAR 0 34 - 304 51609 361 0.12581 GALAXY 64 0 - 304 51609 362 -0.00005 STAR 4096 0 - 304 51609 363 -0.00005 STAR 4 0 - 304 51609 364 0.00000 UNKNOWN 0 16 - 304 51609 365 -0.00017 STAR 0 2 - 304 51609 366 0.17877 GALAXY 96 0 - 304 51609 367 0.07718 GALAXY 96 0 - 304 51609 368 -0.00008 UNKNOWN 64 0 - 304 51609 369 -0.00005 STAR 0 34 - 304 51609 370 -0.00008 UNKNOWN 8192 0 - 304 51609 371 0.05258 GALAXY 96 0 - 304 51609 372 0.08343 GALAXY 64 0 - 304 51609 373 0.05337 GALAXY 96 0 - 304 51609 374 0.05413 GALAXY 64 0 - 304 51609 375 0.12597 GALAXY 96 0 - 304 51609 376 0.12539 GALAXY 64 0 - 304 51609 377 0.14341 GALAXY 64 0 - 304 51609 378 0.35795 GALAXY 32 0 - 304 51609 379 0.12764 GALAXY 96 0 - 304 51609 380 0.02532 GALAXY 64 0 - 304 51609 381 2.39826 QSO 1 0 - 304 51609 382 0.38360 GALAXY 32 0 - 304 51609 383 -0.00012 STAR 540672 0 - 304 51609 384 0.00020 STAR 524288 0 - 304 51609 385 0.34537 GALAXY 32 0 - 304 51609 386 0.17247 GALAXY 64 0 - 304 51609 387 0.34130 GALAXY 32 0 - 304 51609 388 0.34323 GALAXY 32 0 - 304 51609 389 0.02565 GALAXY 33554496 0 - 304 51609 390 0.34457 GALAXY 32 0 - 304 51609 391 0.00000 UNKNOWN 0 16 - 304 51609 392 0.02541 GALAXY 64 0 - 304 51609 393 0.05359 GALAXY 96 0 - 304 51609 394 0.11858 GALAXY 64 0 - 304 51609 395 0.35794 GALAXY 32 0 - 304 51609 396 -0.00010 STAR 0 2 - 304 51609 397 0.05411 GALAXY 64 0 - 304 51609 398 -0.00022 STAR 4 0 - 304 51609 399 0.00018 STAR 8192 0 - 304 51609 400 0.11783 GALAXY 64 0 - 304 51609 401 -0.00045 STAR 1 0 - 304 51609 402 0.09688 GALAXY 68 0 - 304 51609 403 0.05032 GALAXY 64 0 - 304 51609 404 0.34595 GALAXY 32 0 - 304 51609 405 0.05261 GALAXY 64 0 - 304 51609 406 0.11794 GALAXY 64 0 - 304 51609 407 0.05253 GALAXY 96 0 - 304 51609 408 0.05200 GALAXY 96 0 - 304 51609 409 -0.00018 STAR 8454145 0 - 304 51609 410 -0.00028 STAR 1 0 - 304 51609 411 0.03607 GALAXY 96 0 - 304 51609 412 0.05302 GALAXY 64 0 - 304 51609 413 0.05321 GALAXY 64 0 - 304 51609 414 -0.00025 STAR 1 0 - 304 51609 415 1.44241 QSO 1048580 0 - 304 51609 416 0.05326 GALAXY 64 0 - 304 51609 417 0.33828 GALAXY 32 0 - 304 51609 418 0.04805 GALAXY 64 0 - 304 51609 419 -0.00022 STAR 1 0 - 304 51609 420 0.00000 MISSING 0 0 - 304 51609 421 0.11791 GALAXY 64 0 - 304 51609 422 0.05542 GALAXY 64 0 - 304 51609 423 0.05348 GALAXY 64 0 - 304 51609 424 0.11230 GALAXY 64 0 - 304 51609 425 0.00000 UNKNOWN 0 16 - 304 51609 426 0.16757 GALAXY 1 0 - 304 51609 427 0.12709 GALAXY 64 0 - 304 51609 428 0.12637 GALAXY 64 0 - 304 51609 429 0.00793 GALAXY 64 0 - 304 51609 430 0.16910 GALAXY 96 0 - 304 51609 431 0.11863 GALAXY 64 0 - 304 51609 432 0.12659 GALAXY 64 0 - 304 51609 433 0.11254 GALAXY 64 0 - 304 51609 434 0.00004 STAR 0 2 - 304 51609 435 0.11925 GALAXY 64 0 - 304 51609 436 0.12873 GALAXY 64 0 - 304 51609 437 0.11274 GALAXY 64 0 - 304 51609 438 1.12301 QSO 4 0 - 304 51609 439 0.00025 STAR 6144 0 - 304 51609 440 0.33842 GALAXY 32 0 - 304 51609 441 0.93072 QSO 4 0 - 304 51609 442 -0.00043 STAR 1 0 - 304 51609 443 0.12066 GALAXY 64 0 - 304 51609 444 0.06557 GALAXY 64 0 - 304 51609 445 0.13099 GALAXY 64 0 - 304 51609 446 0.35470 GALAXY 32 0 - 304 51609 447 0.12603 GALAXY 64 0 - 304 51609 448 0.05271 GALAXY 64 0 - 304 51609 449 0.00000 UNKNOWN 0 16 - 304 51609 450 1.25582 QSO 4 0 - 304 51609 451 0.05248 GALAXY 64 0 - 304 51609 452 0.06384 GALAXY 64 0 - 304 51609 453 0.13928 GALAXY 64 0 - 304 51609 454 0.00016 STAR 1 0 - 304 51609 455 0.05476 GALAXY 64 0 - 304 51609 456 0.13743 GALAXY 64 0 - 304 51609 457 1.83964 QSO 4 0 - 304 51609 458 0.13633 GALAXY 64 0 - 304 51609 459 0.13121 GALAXY 64 0 - 304 51609 460 0.08473 GALAXY 64 0 - 304 51609 461 0.11865 GALAXY 64 0 - 304 51609 462 0.00000 UNKNOWN 0 16 - 304 51609 463 0.15163 GALAXY 64 0 - 304 51609 464 0.15050 GALAXY 64 0 - 304 51609 465 0.12090 GALAXY 64 0 - 304 51609 466 -0.00033 STAR 8196 0 - 304 51609 467 0.09725 GALAXY 64 0 - 304 51609 468 1.59642 QSO 1048580 0 - 304 51609 469 0.15146 GALAXY 68 0 - 304 51609 470 1.15748 QSO 1048580 0 - 304 51609 471 0.14601 GALAXY 64 0 - 304 51609 472 2.18994 QSO 1048580 0 - 304 51609 473 0.12352 GALAXY 64 0 - 304 51609 474 -0.00024 STAR 4 0 - 304 51609 475 0.12617 GALAXY 64 0 - 304 51609 476 0.27720 GALAXY 32 0 - 304 51609 477 0.05197 GALAXY 64 0 - 304 51609 478 0.12307 GALAXY 64 0 - 304 51609 479 0.10180 GALAXY 64 0 - 304 51609 480 1.49377 QSO 4 0 - 304 51609 481 -0.00001 STAR 64 0 - 304 51609 482 0.12222 GALAXY 64 0 - 304 51609 483 0.23564 GALAXY 96 0 - 304 51609 484 0.02896 GALAXY 64 0 - 304 51609 485 -0.00028 STAR 1 0 - 304 51609 486 0.09743 GALAXY 64 0 - 304 51609 487 0.06527 GALAXY 64 0 - 304 51609 488 0.12480 GALAXY 64 0 - 304 51609 489 0.13268 GALAXY 64 0 - 304 51609 490 0.21132 GALAXY 64 0 - 304 51609 491 0.38577 GALAXY 32 0 - 304 51609 492 0.03161 GALAXY 64 0 - 304 51609 493 -0.00020 STAR 64 0 - 304 51609 494 0.00000 UNKNOWN 0 16 - 304 51609 495 0.15016 GALAXY 64 0 - 304 51609 496 0.46890 GALAXY 67108896 0 - 304 51609 497 0.12130 GALAXY 64 0 - 304 51609 498 0.14029 GALAXY 64 0 - 304 51609 499 0.27748 GALAXY 96 0 - 304 51609 500 0.14070 GALAXY 64 0 - 304 51609 501 0.16892 GALAXY 64 0 - 304 51609 502 0.32987 GALAXY 32 0 - 304 51609 503 0.05476 GALAXY 64 0 - 304 51609 504 0.08375 GALAXY 64 0 - 304 51609 505 0.50734 GALAXY 67108896 0 - 304 51609 506 0.12676 GALAXY 64 0 - 304 51609 507 0.16956 GALAXY 64 0 - 304 51609 508 0.12689 GALAXY 64 0 - 304 51609 509 0.10219 GALAXY 64 0 - 304 51609 510 1.17509 QSO 4 0 - 304 51609 511 0.12627 GALAXY 64 0 - 304 51609 512 0.16948 GALAXY 64 0 - 304 51609 513 0.17048 GALAXY 96 0 - 304 51609 514 2.18814 QSO 3145748 0 - 304 51609 515 0.12553 GALAXY 64 0 - 304 51609 516 0.10250 GALAXY 64 0 - 304 51609 517 0.00000 UNKNOWN 0 16 - 304 51609 518 0.12621 GALAXY 64 0 - 304 51609 519 0.11814 GALAXY 64 0 - 304 51609 520 0.33062 GALAXY 32 0 - 304 51609 521 -0.00043 STAR 64 0 - 304 51609 522 0.00003 STAR 68 0 - 304 51609 523 0.16695 GALAXY 64 0 - 304 51609 524 -0.00088 STAR 65 0 - 304 51609 525 -0.00041 STAR 64 0 - 304 51609 526 0.15359 GALAXY 64 0 - 304 51609 527 -0.00027 STAR 64 0 - 304 51609 528 -0.00057 STAR 64 0 - 304 51609 529 0.16695 GALAXY 96 0 - 304 51609 530 -0.00020 STAR 64 0 - 304 51609 531 0.00000 UNKNOWN 0 16 - 304 51609 532 0.39397 GALAXY 32 0 - 304 51609 533 0.27661 GALAXY 32 0 - 304 51609 534 0.05433 GALAXY 64 0 - 304 51609 535 0.00001 STAR 64 0 - 304 51609 536 1.08140 QSO 1048580 0 - 304 51609 537 1.85559 QSO 1048580 512 - 304 51609 538 0.13085 GALAXY 64 0 - 304 51609 539 0.12442 GALAXY 64 0 - 304 51609 540 0.10266 GALAXY 64 0 - 304 51609 541 -0.00008 UNKNOWN 96 0 - 304 51609 542 -0.00021 STAR 4 0 - 304 51609 543 0.00002 STAR 8196 0 - 304 51609 544 0.34549 GALAXY 32 0 - 304 51609 545 0.16859 GALAXY 64 0 - 304 51609 546 0.10307 GALAXY 64 0 - 304 51609 547 0.11724 GALAXY 64 0 - 304 51609 548 0.16948 GALAXY 64 0 - 304 51609 549 0.08471 GALAXY 64 0 - 304 51609 550 0.00000 UNKNOWN 0 16 - 304 51609 551 0.31458 GALAXY 32 0 - 304 51609 552 0.12641 GALAXY 64 0 - 304 51609 553 0.05466 GALAXY 96 0 - 304 51609 554 0.12655 GALAXY 64 0 - 304 51609 555 0.12593 GALAXY 64 0 - 304 51609 556 0.16968 GALAXY 64 0 - 304 51609 557 0.07488 GALAXY 64 0 - 304 51609 558 0.00002 STAR 42991616 512 - 304 51609 559 0.08398 GALAXY 64 0 - 304 51609 560 0.05385 GALAXY 64 0 - 304 51609 561 -0.00017 STAR 64 0 - 304 51609 562 0.00042 STAR 64 0 - 304 51609 563 0.14036 GALAXY 64 0 - 304 51609 564 -0.00023 STAR 64 0 - 304 51609 565 0.13977 GALAXY 96 0 - 304 51609 566 -0.00021 STAR 64 0 - 304 51609 567 0.13234 GALAXY 64 0 - 304 51609 568 0.38402 GALAXY 32 0 - 304 51609 569 0.00005 STAR 64 0 - 304 51609 570 -0.00024 STAR 64 0 - 304 51609 571 0.13948 GALAXY 64 0 - 304 51609 572 0.07842 GALAXY 64 0 - 304 51609 573 0.05493 GALAXY 64 0 - 304 51609 574 0.13420 GALAXY 96 0 - 304 51609 575 -0.00025 STAR 69 0 - 304 51609 576 0.00000 UNKNOWN 0 16 - 304 51609 577 0.13945 GALAXY 64 0 - 304 51609 578 0.09881 GALAXY 64 0 - 304 51609 579 0.14122 GALAXY 64 0 - 304 51609 580 0.17367 GALAXY 64 0 - 304 51609 581 0.16909 GALAXY 64 0 - 304 51609 582 0.11709 GALAXY 64 0 - 304 51609 583 0.13285 GALAXY 4 0 - 304 51609 584 0.07803 GALAXY 64 0 - 304 51609 585 0.05467 GALAXY 64 0 - 304 51609 586 0.07724 GALAXY 64 0 - 304 51609 587 0.00000 UNKNOWN 0 16 - 304 51609 588 0.16726 GALAXY 64 0 - 304 51609 589 0.16723 GALAXY 64 0 - 304 51609 590 0.16889 GALAXY 64 0 - 304 51609 591 0.16959 GALAXY 64 0 - 304 51609 592 0.34654 GALAXY 32 0 - 304 51609 593 0.05430 GALAXY 96 0 - 304 51609 594 0.04002 GALAXY 96 0 - 304 51609 595 0.27840 GALAXY 32 0 - 304 51609 596 0.12648 GALAXY 64 0 - 304 51609 597 0.16972 GALAXY 64 0 - 304 51609 598 0.14622 GALAXY 96 0 - 304 51609 599 0.07769 GALAXY 64 0 - 304 51609 600 0.12613 GALAXY 64 0 - 304 51609 601 0.16719 GALAXY 64 0 - 304 51609 602 0.32215 GALAXY 32 0 - 304 51609 603 -0.00005 STAR 64 0 - 304 51609 604 -0.00065 STAR 68 0 - 304 51609 605 -0.00025 STAR 64 0 - 304 51609 606 0.38446 GALAXY 67108896 0 - 304 51609 607 -0.00004 STAR 69 0 - 304 51609 608 -0.00012 STAR 64 0 - 304 51609 609 -0.00007 STAR 64 0 - 304 51609 610 -0.00021 STAR 64 0 - 304 51609 611 0.06154 GALAXY 64 0 - 304 51609 612 0.32106 GALAXY 32 0 - 304 51609 613 1.13636 QSO 4 0 - 304 51609 614 -0.00038 STAR 0 32 - 304 51609 615 0.12644 GALAXY 64 0 - 304 51609 616 0.32359 GALAXY 32 0 - 304 51609 617 0.00053 STAR 1 0 - 304 51609 618 -0.00009 STAR 64 0 - 304 51609 619 0.00000 UNKNOWN 0 16 - 304 51609 620 0.14137 GALAXY 64 0 - 304 51609 621 -0.00029 STAR 64 0 - 304 51609 622 -0.00071 STAR 1048580 0 - 304 51609 623 0.12655 GALAXY 64 0 - 304 51609 624 0.05398 GALAXY 96 0 - 304 51609 625 -0.00025 STAR 4 0 - 304 51609 626 -0.00017 STAR 64 0 - 304 51609 627 0.12687 GALAXY 64 0 - 304 51609 628 0.03979 GALAXY 64 0 - 304 51609 629 0.12609 GALAXY 64 0 - 304 51609 630 2.14596 QSO 1048580 0 - 304 51609 631 0.15172 GALAXY 64 0 - 304 51609 632 0.16420 GALAXY 64 0 - 304 51609 633 0.12692 GALAXY 64 0 - 304 51609 634 0.05471 GALAXY 64 0 - 304 51609 635 0.03578 GALAXY 64 0 - 304 51609 636 -0.00010 STAR 64 0 - 304 51609 637 0.14489 QSO 1 0 - 304 51609 638 0.15133 GALAXY 64 0 - 304 51609 639 0.00000 UNKNOWN 0 16 - 304 51609 640 -0.00024 STAR 64 0 - 305 51613 1 0.07260 GALAXY 64 0 - 305 51613 2 0.12337 GALAXY 64 0 - 305 51613 3 0.13615 GALAXY 64 0 - 305 51613 4 -0.00002 UNKNOWN 64 0 - 305 51613 5 0.13112 GALAXY 64 0 - 305 51613 6 0.13523 GALAXY 64 0 - 305 51613 7 1.58660 QSO 68 0 - 305 51613 8 0.00000 UNKNOWN 0 16 - 305 51613 9 0.09328 GALAXY 96 0 - 305 51613 10 0.12393 GALAXY 64 0 - 305 51613 11 0.10313 GALAXY 64 0 - 305 51613 12 0.10260 GALAXY 4 0 - 305 51613 13 0.06394 GALAXY 64 0 - 305 51613 14 0.08734 GALAXY 64 0 - 305 51613 15 0.29034 GALAXY 32 0 - 305 51613 16 0.13251 GALAXY 64 0 - 305 51613 17 0.10567 GALAXY 64 0 - 305 51613 18 0.10936 GALAXY 64 0 - 305 51613 19 0.10369 GALAXY 64 0 - 305 51613 20 0.18409 GALAXY 64 0 - 305 51613 21 0.07657 QSO 4 0 - 305 51613 22 0.13160 GALAXY 64 0 - 305 51613 23 0.14869 GALAXY 64 0 - 305 51613 24 0.09886 GALAXY 64 0 - 305 51613 25 0.13337 GALAXY 64 0 - 305 51613 26 0.07333 GALAXY 64 0 - 305 51613 27 0.13151 GALAXY 64 0 - 305 51613 28 0.02934 GALAXY 64 0 - 305 51613 29 0.07340 GALAXY 64 0 - 305 51613 30 0.05482 GALAXY 64 0 - 305 51613 31 0.08263 GALAXY 96 0 - 305 51613 32 0.00000 UNKNOWN 0 16 - 305 51613 33 0.07947 GALAXY 96 0 - 305 51613 34 -0.00034 STAR 0 2 - 305 51613 35 0.13085 GALAXY 64 0 - 305 51613 36 0.06043 GALAXY 64 0 - 305 51613 37 0.21994 GALAXY 4096 0 - 305 51613 38 0.13173 GALAXY 64 0 - 305 51613 39 0.45900 QSO 33554433 0 - 305 51613 40 0.31847 GALAXY 32 0 - 305 51613 41 0.14228 GALAXY 64 0 - 305 51613 42 0.33491 GALAXY 32 0 - 305 51613 43 0.33446 GALAXY 32 0 - 305 51613 44 0.08601 GALAXY 96 0 - 305 51613 45 0.08300 GALAXY 64 0 - 305 51613 46 -0.00038 STAR 0 2 - 305 51613 47 0.13562 GALAXY 64 0 - 305 51613 48 0.03480 GALAXY 64 0 - 305 51613 49 0.08566 GALAXY 64 0 - 305 51613 50 0.13745 GALAXY 64 0 - 305 51613 51 0.13168 GALAXY 64 0 - 305 51613 52 0.00000 UNKNOWN 0 16 - 305 51613 53 0.33478 GALAXY 32 0 - 305 51613 54 0.00504 GALAXY 64 0 - 305 51613 55 0.43892 GALAXY 32 0 - 305 51613 56 0.03503 GALAXY 64 0 - 305 51613 57 0.10465 GALAXY 64 0 - 305 51613 58 0.08579 GALAXY 64 0 - 305 51613 59 0.03439 GALAXY 64 0 - 305 51613 60 0.13700 GALAXY 64 0 - 305 51613 61 0.00000 MISSING 0 0 - 305 51613 62 1.80422 QSO 1048580 512 - 305 51613 63 0.31666 GALAXY 32 0 - 305 51613 64 0.08347 GALAXY 64 0 - 305 51613 65 0.07282 GALAXY 64 0 - 305 51613 66 -0.00010 STAR 0 2 - 305 51613 67 0.00000 UNKNOWN 0 16 - 305 51613 68 0.05121 GALAXY 64 0 - 305 51613 69 0.13183 GALAXY 96 0 - 305 51613 70 0.09921 GALAXY 64 0 - 305 51613 71 0.09881 GALAXY 64 0 - 305 51613 72 2.28581 QSO 1048580 0 - 305 51613 73 0.07276 GALAXY 64 0 - 305 51613 74 0.03518 GALAXY 64 0 - 305 51613 75 0.05354 GALAXY 96 0 - 305 51613 76 0.26685 GALAXY 32 0 - 305 51613 77 0.17603 GALAXY 64 0 - 305 51613 78 0.13303 GALAXY 64 0 - 305 51613 79 0.16211 GALAXY 64 0 - 305 51613 80 -0.00019 STAR 0 32 - 305 51613 81 0.35584 GALAXY 32 0 - 305 51613 82 0.16135 GALAXY 64 0 - 305 51613 83 0.00000 UNKNOWN 0 16 - 305 51613 84 0.13157 GALAXY 64 0 - 305 51613 85 0.10342 GALAXY 96 0 - 305 51613 86 0.13652 GALAXY 64 0 - 305 51613 87 0.28890 GALAXY 32 0 - 305 51613 88 0.27914 GALAXY 32 0 - 305 51613 89 0.07953 GALAXY 64 0 - 305 51613 90 0.41974 QSO 4 0 - 305 51613 91 -0.00017 STAR 4 0 - 305 51613 92 0.14175 GALAXY 64 0 - 305 51613 93 0.05300 GALAXY 64 0 - 305 51613 94 0.33222 QSO 4 0 - 305 51613 95 0.14771 GALAXY 64 0 - 305 51613 96 -0.00012 STAR 5 0 - 305 51613 97 0.16230 GALAXY 64 0 - 305 51613 98 0.18418 GALAXY 64 0 - 305 51613 99 0.08433 GALAXY 64 0 - 305 51613 100 -0.00006 STAR 1 0 - 305 51613 101 0.03053 GALAXY 64 0 - 305 51613 102 -0.00005 STAR 1056772 0 - 305 51613 103 0.10344 GALAXY 64 0 - 305 51613 104 0.08316 GALAXY 64 0 - 305 51613 105 0.01355 GALAXY 64 0 - 305 51613 106 0.00000 UNKNOWN 0 16 - 305 51613 107 0.05514 GALAXY 64 0 - 305 51613 108 0.05159 GALAXY 64 0 - 305 51613 109 0.05516 GALAXY 96 0 - 305 51613 110 0.10290 GALAXY 64 0 - 305 51613 111 0.10289 GALAXY 64 0 - 305 51613 112 0.05542 GALAXY 64 0 - 305 51613 113 0.56677 QSO 4 0 - 305 51613 114 0.00004 STAR 64 0 - 305 51613 115 -0.00023 STAR 1 0 - 305 51613 116 0.05332 GALAXY 64 0 - 305 51613 117 0.10041 GALAXY 64 0 - 305 51613 118 0.05507 GALAXY 64 0 - 305 51613 119 0.07357 GALAXY 64 0 - 305 51613 120 0.10362 GALAXY 64 0 - 305 51613 121 0.15058 GALAXY 64 0 - 305 51613 122 1.35424 QSO 4 0 - 305 51613 123 0.05347 GALAXY 64 0 - 305 51613 124 0.13540 GALAXY 64 0 - 305 51613 125 0.16312 GALAXY 64 0 - 305 51613 126 0.13547 GALAXY 64 0 - 305 51613 127 0.05283 GALAXY 64 0 - 305 51613 128 0.05268 GALAXY 64 0 - 305 51613 129 0.32051 GALAXY 32 0 - 305 51613 130 0.30639 GALAXY 96 0 - 305 51613 131 0.15993 GALAXY 64 0 - 305 51613 132 0.30597 QSO 4 0 - 305 51613 133 0.16261 GALAXY 4704 0 - 305 51613 134 -0.00053 STAR 9437184 512 - 305 51613 135 0.16156 GALAXY 4096 0 - 305 51613 136 0.16310 GALAXY 96 0 - 305 51613 137 0.00000 UNKNOWN 0 16 - 305 51613 138 0.35493 GALAXY 32 0 - 305 51613 139 0.03036 GALAXY 64 0 - 305 51613 140 0.30632 GALAXY 32 0 - 305 51613 141 1.52299 QSO 64 0 - 305 51613 142 1.06645 QSO 4 0 - 305 51613 143 0.10319 GALAXY 64 0 - 305 51613 144 0.13818 GALAXY 96 0 - 305 51613 145 0.05515 GALAXY 64 0 - 305 51613 146 0.15067 GALAXY 64 0 - 305 51613 147 0.07314 GALAXY 64 0 - 305 51613 148 0.25326 GALAXY 64 0 - 305 51613 149 0.13606 GALAXY 64 0 - 305 51613 150 0.13615 GALAXY 64 0 - 305 51613 151 0.00000 UNKNOWN 33554433 0 - 305 51613 152 0.35557 GALAXY 32 0 - 305 51613 153 0.12902 GALAXY 64 0 - 305 51613 154 0.25437 GALAXY 96 0 - 305 51613 155 0.13631 GALAXY 64 0 - 305 51613 156 0.12866 GALAXY 64 0 - 305 51613 157 0.00000 UNKNOWN 0 16 - 305 51613 158 0.07881 GALAXY 64 0 - 305 51613 159 0.12844 GALAXY 64 0 - 305 51613 160 0.28466 GALAXY 32 0 - 305 51613 161 0.05524 GALAXY 64 0 - 305 51613 162 0.16892 GALAXY 64 0 - 305 51613 163 0.12965 GALAXY 64 0 - 305 51613 164 0.07316 GALAXY 64 0 - 305 51613 165 0.10286 GALAXY 64 0 - 305 51613 166 0.00000 UNKNOWN 0 16 - 305 51613 167 0.10325 GALAXY 64 0 - 305 51613 168 0.05489 GALAXY 64 0 - 305 51613 169 0.10797 GALAXY 64 0 - 305 51613 170 0.03081 GALAXY 64 0 - 305 51613 171 0.12781 GALAXY 64 0 - 305 51613 172 0.12888 GALAXY 64 0 - 305 51613 173 3.07357 QSO 32 0 - 305 51613 174 0.19055 GALAXY 64 0 - 305 51613 175 0.16741 GALAXY 64 0 - 305 51613 176 0.10215 GALAXY 64 0 - 305 51613 177 0.17568 GALAXY 64 0 - 305 51613 178 -0.00030 STAR 0 34 - 305 51613 179 0.15097 GALAXY 64 0 - 305 51613 180 0.16533 GALAXY 64 0 - 305 51613 181 0.05545 GALAXY 64 0 - 305 51613 182 0.10291 GALAXY 64 0 - 305 51613 183 0.08438 GALAXY 64 0 - 305 51613 184 0.16990 GALAXY 64 0 - 305 51613 185 0.00000 UNKNOWN 0 16 - 305 51613 186 1.15685 QSO 1048580 0 - 305 51613 187 0.13796 GALAXY 64 0 - 305 51613 188 -0.00051 STAR 0 34 - 305 51613 189 0.10399 GALAXY 64 0 - 305 51613 190 0.05494 GALAXY 96 0 - 305 51613 191 0.10376 GALAXY 64 0 - 305 51613 192 -0.00066 STAR 1056768 0 - 305 51613 193 0.20490 GALAXY 96 0 - 305 51613 194 0.13324 GALAXY 64 0 - 305 51613 195 0.17185 GALAXY 64 0 - 305 51613 196 0.10292 GALAXY 64 0 - 305 51613 197 -0.00122 STAR 1048580 0 - 305 51613 198 0.08282 GALAXY 64 0 - 305 51613 199 0.17008 GALAXY 64 0 - 305 51613 200 0.32114 QSO 1 0 - 305 51613 201 0.00000 UNKNOWN 0 16 - 305 51613 202 0.07887 GALAXY 68 0 - 305 51613 203 0.07267 GALAXY 64 0 - 305 51613 204 0.17397 GALAXY 96 0 - 305 51613 205 0.31796 QSO 1055748 0 - 305 51613 206 0.05449 GALAXY 64 0 - 305 51613 207 0.13649 GALAXY 64 0 - 305 51613 208 0.08400 GALAXY 64 0 - 305 51613 209 0.15813 GALAXY 64 0 - 305 51613 210 -0.00018 STAR 1048580 0 - 305 51613 211 1.37541 QSO 1048580 0 - 305 51613 212 0.30836 GALAXY 32 0 - 305 51613 213 0.10163 GALAXY 64 0 - 305 51613 214 0.17354 GALAXY 64 0 - 305 51613 215 0.12915 GALAXY 64 0 - 305 51613 216 0.45953 GALAXY 67108896 0 - 305 51613 217 0.13907 GALAXY 64 0 - 305 51613 218 0.32173 GALAXY 32 0 - 305 51613 219 0.31655 GALAXY 32 0 - 305 51613 220 0.10338 GALAXY 64 0 - 305 51613 221 0.00869 GALAXY 96 0 - 305 51613 222 -0.00017 STAR 64 0 - 305 51613 223 0.04999 GALAXY 64 0 - 305 51613 224 0.13488 GALAXY 64 0 - 305 51613 225 1.48842 QSO 1 0 - 305 51613 226 2.13028 QSO 1048580 0 - 305 51613 227 0.12792 GALAXY 64 0 - 305 51613 228 0.13378 GALAXY 64 0 - 305 51613 229 0.00006 STAR 69 0 - 305 51613 230 0.12753 GALAXY 64 0 - 305 51613 231 0.13581 GALAXY 64 0 - 305 51613 232 0.10181 GALAXY 64 0 - 305 51613 233 0.10215 GALAXY 64 0 - 305 51613 234 0.05221 GALAXY 64 0 - 305 51613 235 0.03104 GALAXY 64 0 - 305 51613 236 0.10179 GALAXY 64 0 - 305 51613 237 0.13334 GALAXY 64 0 - 305 51613 238 0.17688 GALAXY 2097248 0 - 305 51613 239 0.00000 UNKNOWN 0 16 - 305 51613 240 0.11919 GALAXY 64 0 - 305 51613 241 0.00000 UNKNOWN 0 16 - 305 51613 242 0.19130 GALAXY 96 0 - 305 51613 243 -0.00038 STAR 1056768 0 - 305 51613 244 0.45507 GALAXY 67108896 0 - 305 51613 245 0.05038 GALAXY 96 0 - 305 51613 246 0.35761 GALAXY 32 0 - 305 51613 247 0.13828 GALAXY 64 0 - 305 51613 248 0.17545 GALAXY 64 0 - 305 51613 249 0.15683 GALAXY 64 0 - 305 51613 250 0.04959 UNKNOWN 1 0 - 305 51613 251 0.17349 GALAXY 64 0 - 305 51613 252 0.13463 GALAXY 64 0 - 305 51613 253 0.16898 GALAXY 64 0 - 305 51613 254 0.17503 GALAXY 64 0 - 305 51613 255 0.08400 GALAXY 4 0 - 305 51613 256 0.15000 GALAXY 4096 0 - 305 51613 257 0.08384 GALAXY 64 0 - 305 51613 258 0.17397 GALAXY 64 0 - 305 51613 259 0.14962 GALAXY 64 0 - 305 51613 260 0.06600 GALAXY 64 0 - 305 51613 261 0.00003 STAR 64 0 - 305 51613 262 0.00012 STAR 69 0 - 305 51613 263 0.20280 GALAXY 64 0 - 305 51613 264 0.00000 STAR 64 0 - 305 51613 265 0.00008 STAR 64 0 - 305 51613 266 -0.00010 STAR 65 0 - 305 51613 267 -0.00061 STAR 64 0 - 305 51613 268 0.00005 STAR 64 0 - 305 51613 269 0.13774 GALAXY 96 0 - 305 51613 270 0.00013 STAR 68 0 - 305 51613 271 -0.00009 STAR 69 0 - 305 51613 272 0.00008 STAR 64 0 - 305 51613 273 -0.00014 STAR 64 0 - 305 51613 274 0.00002 STAR 64 0 - 305 51613 275 -0.00010 STAR 68 0 - 305 51613 276 -0.00034 STAR 64 0 - 305 51613 277 -0.00020 STAR 64 0 - 305 51613 278 0.05446 GALAXY 64 0 - 305 51613 279 0.00000 UNKNOWN 0 16 - 305 51613 280 0.05514 GALAXY 64 0 - 305 51613 281 0.19238 GALAXY 64 0 - 305 51613 282 0.48418 GALAXY 67108896 0 - 305 51613 283 0.00000 UNKNOWN 0 16 - 305 51613 284 0.13858 GALAXY 64 0 - 305 51613 285 0.00007 STAR 0 34 - 305 51613 286 0.19283 GALAXY 64 0 - 305 51613 287 0.13678 GALAXY 64 0 - 305 51613 288 0.15864 GALAXY 64 0 - 305 51613 289 0.70632 QSO 4 0 - 305 51613 290 0.05210 GALAXY 64 0 - 305 51613 291 0.05251 GALAXY 96 0 - 305 51613 292 1.28405 QSO 1048580 0 - 305 51613 293 2.18354 QSO 36700160 0 - 305 51613 294 0.00033 STAR 69 0 - 305 51613 295 0.19611 GALAXY 64 0 - 305 51613 296 -0.00014 STAR 524288 0 - 305 51613 297 0.13057 GALAXY 64 0 - 305 51613 298 0.00012 STAR 69 0 - 305 51613 299 0.00009 STAR 64 0 - 305 51613 300 -0.00007 STAR 0 2 - 305 51613 301 -0.00009 STAR 64 0 - 305 51613 302 -0.00025 STAR 64 0 - 305 51613 303 -0.00020 STAR 64 0 - 305 51613 304 -0.00011 STAR 64 0 - 305 51613 305 -0.00054 UNKNOWN 16384 0 - 305 51613 306 0.00000 UNKNOWN 0 16 - 305 51613 307 0.10146 GALAXY 64 0 - 305 51613 308 -0.00011 STAR 64 0 - 305 51613 309 -0.00024 STAR 64 0 - 305 51613 310 0.00013 STAR 64 0 - 305 51613 311 -0.00020 STAR 64 0 - 305 51613 312 0.11925 GALAXY 64 0 - 305 51613 313 0.00009 STAR 69 0 - 305 51613 314 -0.00011 STAR 524288 34 - 305 51613 315 0.00004 STAR 69 0 - 305 51613 316 -0.00068 STAR 64 0 - 305 51613 317 -0.00016 STAR 64 0 - 305 51613 318 0.00038 STAR 65 0 - 305 51613 319 0.71615 QSO 68 0 - 305 51613 320 0.03862 GALAXY 64 0 - 305 51613 321 0.66853 GALAXY 68 0 - 305 51613 322 0.00006 STAR 64 0 - 305 51613 323 0.00023 STAR 64 0 - 305 51613 324 0.05373 GALAXY 64 0 - 305 51613 325 -0.00008 STAR 524288 0 - 305 51613 326 0.10298 GALAXY 64 0 - 305 51613 327 0.00001 STAR 64 0 - 305 51613 328 0.00030 STAR 64 0 - 305 51613 329 0.00000 MISSING 0 0 - 305 51613 330 0.08539 GALAXY 64 0 - 305 51613 331 0.00000 UNKNOWN 0 16 - 305 51613 332 0.03849 GALAXY 64 0 - 305 51613 333 0.15790 GALAXY 64 0 - 305 51613 334 -0.00034 STAR 524288 0 - 305 51613 335 -0.00019 STAR 64 0 - 305 51613 336 3.78785 QSO 1 0 - 305 51613 337 0.14070 GALAXY 64 0 - 305 51613 338 0.14574 GALAXY 64 0 - 305 51613 339 0.05352 GALAXY 64 0 - 305 51613 340 0.16997 GALAXY 64 0 - 305 51613 341 0.11839 GALAXY 64 0 - 305 51613 342 0.00000 UNKNOWN 0 16 - 305 51613 343 -0.00022 STAR 65 0 - 305 51613 344 0.10193 GALAXY 64 0 - 305 51613 345 -0.00037 STAR 64 0 - 305 51613 346 0.11741 GALAXY 64 0 - 305 51613 347 0.05398 GALAXY 64 0 - 305 51613 348 0.05486 GALAXY 64 0 - 305 51613 349 0.11924 GALAXY 64 0 - 305 51613 350 -0.00066 STAR 64 0 - 305 51613 351 0.11676 GALAXY 64 0 - 305 51613 352 0.05454 GALAXY 64 0 - 305 51613 353 0.15159 GALAXY 64 0 - 305 51613 354 0.00015 STAR 64 0 - 305 51613 355 -0.00008 STAR 0 34 - 305 51613 356 0.05487 GALAXY 64 0 - 305 51613 357 0.11733 GALAXY 64 0 - 305 51613 358 -0.00044 STAR 524288 32 - 305 51613 359 0.18979 GALAXY 64 0 - 305 51613 360 -0.00014 STAR 64 0 - 305 51613 361 0.03145 GALAXY 68 0 - 305 51613 362 0.00049 STAR 1056772 0 - 305 51613 363 0.13426 GALAXY 64 0 - 305 51613 364 0.10293 GALAXY 64 0 - 305 51613 365 0.32234 GALAXY 96 0 - 305 51613 366 0.13090 GALAXY 2097216 0 - 305 51613 367 0.12376 GALAXY 64 0 - 305 51613 368 -0.00002 UNKNOWN 64 0 - 305 51613 369 0.13573 GALAXY 64 0 - 305 51613 370 -0.00002 UNKNOWN 96 0 - 305 51613 371 0.16658 GALAXY 64 0 - 305 51613 372 0.15970 GALAXY 64 0 - 305 51613 373 0.12501 GALAXY 64 0 - 305 51613 374 0.38836 GALAXY 1 0 - 305 51613 375 0.00000 UNKNOWN 0 16 - 305 51613 376 0.09458 GALAXY 64 0 - 305 51613 377 0.10311 GALAXY 64 0 - 305 51613 378 0.15048 GALAXY 64 0 - 305 51613 379 2.18364 QSO 1 0 - 305 51613 380 0.12488 GALAXY 96 0 - 305 51613 381 0.00004 STAR 65 0 - 305 51613 382 0.12626 GALAXY 96 0 - 305 51613 383 0.03997 GALAXY 96 0 - 305 51613 384 -0.00018 STAR 65 0 - 305 51613 385 -0.00017 STAR 64 0 - 305 51613 386 0.15916 GALAXY 64 0 - 305 51613 387 -0.00012 STAR 64 0 - 305 51613 388 -0.00016 STAR 1 0 - 305 51613 389 0.00007 STAR 64 0 - 305 51613 390 0.00020 STAR 64 0 - 305 51613 391 -0.00011 STAR 65 0 - 305 51613 392 0.00016 STAR 64 0 - 305 51613 393 0.11927 GALAXY 64 0 - 305 51613 394 0.40819 GALAXY 32 0 - 305 51613 395 0.04000 GALAXY 64 0 - 305 51613 396 -0.00021 STAR 65 0 - 305 51613 397 0.11721 GALAXY 96 0 - 305 51613 398 -0.00053 STAR 68 0 - 305 51613 399 0.10361 GALAXY 64 0 - 305 51613 400 -0.00023 STAR 64 0 - 305 51613 401 0.11234 GALAXY 64 0 - 305 51613 402 0.13430 GALAXY 96 0 - 305 51613 403 0.08424 GALAXY 64 0 - 305 51613 404 0.08453 GALAXY 96 0 - 305 51613 405 0.09353 GALAXY 64 0 - 305 51613 406 0.13335 GALAXY 64 0 - 305 51613 407 0.12637 GALAXY 96 0 - 305 51613 408 0.13340 GALAXY 64 0 - 305 51613 409 0.00000 UNKNOWN 0 16 - 305 51613 410 0.10830 GALAXY 64 0 - 305 51613 411 0.32556 GALAXY 32 0 - 305 51613 412 0.13337 GALAXY 64 0 - 305 51613 413 0.13446 GALAXY 64 0 - 305 51613 414 0.08526 GALAXY 64 0 - 305 51613 415 0.13320 GALAXY 64 0 - 305 51613 416 0.19762 GALAXY 96 0 - 305 51613 417 0.19663 GALAXY 64 0 - 305 51613 418 0.12604 GALAXY 64 0 - 305 51613 419 0.05185 GALAXY 64 0 - 305 51613 420 0.00000 MISSING 0 0 - 305 51613 421 -0.00025 STAR 0 2 - 305 51613 422 1.05704 QSO 1048580 0 - 305 51613 423 0.07400 GALAXY 64 0 - 305 51613 424 0.12604 GALAXY 64 0 - 305 51613 425 0.03776 GALAXY 64 0 - 305 51613 426 0.03794 GALAXY 96 0 - 305 51613 427 0.00003 STAR 2097168 0 - 305 51613 428 0.00000 UNKNOWN 0 16 - 305 51613 429 0.03816 GALAXY 64 0 - 305 51613 430 0.21592 GALAXY 64 0 - 305 51613 431 0.03955 GALAXY 64 0 - 305 51613 432 0.29515 GALAXY 4 0 - 305 51613 433 0.38612 GALAXY 32 0 - 305 51613 434 0.05513 GALAXY 64 0 - 305 51613 435 -0.00029 STAR 0 34 - 305 51613 436 0.15114 GALAXY 64 0 - 305 51613 437 0.00000 UNKNOWN 0 16 - 305 51613 438 0.03874 GALAXY 96 0 - 305 51613 439 0.09741 GALAXY 64 0 - 305 51613 440 0.09455 GALAXY 64 0 - 305 51613 441 0.11520 GALAXY 64 0 - 305 51613 442 0.08441 GALAXY 64 0 - 305 51613 443 0.47315 GALAXY 67108896 0 - 305 51613 444 0.89896 QSO 9437188 0 - 305 51613 445 0.12856 GALAXY 64 0 - 305 51613 446 0.08404 GALAXY 64 0 - 305 51613 447 0.08528 GALAXY 64 0 - 305 51613 448 0.05530 GALAXY 96 0 - 305 51613 449 0.00000 UNKNOWN 0 16 - 305 51613 450 0.20358 GALAXY 96 0 - 305 51613 451 0.05427 GALAXY 64 0 - 305 51613 452 0.13094 GALAXY 64 0 - 305 51613 453 0.12569 GALAXY 96 0 - 305 51613 454 0.19060 GALAXY 64 0 - 305 51613 455 0.08401 GALAXY 64 0 - 305 51613 456 0.14191 GALAXY 64 0 - 305 51613 457 0.13277 GALAXY 64 0 - 305 51613 458 0.13452 GALAXY 64 0 - 305 51613 459 0.12892 GALAXY 64 0 - 305 51613 460 0.32573 QSO 3153428 0 - 305 51613 461 0.13069 GALAXY 64 0 - 305 51613 462 0.00027 STAR 0 32 - 305 51613 463 0.13241 GALAXY 64 0 - 305 51613 464 0.08419 GALAXY 64 0 - 305 51613 465 0.24237 GALAXY 64 0 - 305 51613 466 0.29585 GALAXY 32 0 - 305 51613 467 0.38167 GALAXY 32 0 - 305 51613 468 0.33304 GALAXY 32 0 - 305 51613 469 0.33735 GALAXY 32 0 - 305 51613 470 0.12793 GALAXY 64 0 - 305 51613 471 0.11051 GALAXY 64 0 - 305 51613 472 0.14942 GALAXY 64 0 - 305 51613 473 0.00003 STAR 4 0 - 305 51613 474 0.08446 GALAXY 64 0 - 305 51613 475 1.26193 QSO 4 0 - 305 51613 476 3.69603 QSO 1 0 - 305 51613 477 0.14924 GALAXY 64 0 - 305 51613 478 0.45532 GALAXY 69206048 0 - 305 51613 479 2.89059 QSO 4 0 - 305 51613 480 0.00000 UNKNOWN 0 16 - 305 51613 481 0.12902 GALAXY 64 0 - 305 51613 482 -0.00035 STAR 64 0 - 305 51613 483 0.10357 GALAXY 64 0 - 305 51613 484 0.13525 GALAXY 64 0 - 305 51613 485 0.13353 GALAXY 64 0 - 305 51613 486 0.05661 GALAXY 64 0 - 305 51613 487 0.12612 GALAXY 64 0 - 305 51613 488 0.00022 STAR 9437188 0 - 305 51613 489 0.00502 GALAXY 64 0 - 305 51613 490 0.13540 GALAXY 64 0 - 305 51613 491 0.13412 GALAXY 64 0 - 305 51613 492 0.00000 UNKNOWN 0 16 - 305 51613 493 -0.00007 STAR 0 2 - 305 51613 494 0.12908 GALAXY 64 0 - 305 51613 495 0.10139 GALAXY 64 0 - 305 51613 496 0.10505 GALAXY 64 0 - 305 51613 497 0.28999 GALAXY 32 0 - 305 51613 498 0.12950 GALAXY 64 0 - 305 51613 499 0.11467 GALAXY 64 0 - 305 51613 500 0.12531 GALAXY 64 0 - 305 51613 501 0.09570 GALAXY 64 0 - 305 51613 502 0.09716 GALAXY 64 0 - 305 51613 503 0.15814 GALAXY 64 0 - 305 51613 504 0.15803 GALAXY 64 0 - 305 51613 505 0.14207 GALAXY 64 0 - 305 51613 506 0.08438 GALAXY 64 0 - 305 51613 507 0.08597 GALAXY 64 0 - 305 51613 508 0.11724 GALAXY 64 0 - 305 51613 509 0.03936 GALAXY 96 0 - 305 51613 510 0.30422 GALAXY 96 0 - 305 51613 511 0.30153 GALAXY 32 0 - 305 51613 512 0.00001 STAR 42991616 0 - 305 51613 513 0.05461 GALAXY 64 0 - 305 51613 514 0.00001 STAR 42991616 512 - 305 51613 515 0.15753 GALAXY 64 0 - 305 51613 516 0.32593 GALAXY 32 0 - 305 51613 517 0.00000 UNKNOWN 0 16 - 305 51613 518 -0.00030 STAR 1048580 0 - 305 51613 519 0.12465 GALAXY 64 0 - 305 51613 520 0.12521 GALAXY 64 0 - 305 51613 521 0.12714 GALAXY 64 0 - 305 51613 522 0.00000 UNKNOWN 0 16 - 305 51613 523 0.05544 GALAXY 64 0 - 305 51613 524 0.05640 GALAXY 96 0 - 305 51613 525 0.21205 GALAXY 4 0 - 305 51613 526 0.05638 GALAXY 64 0 - 305 51613 527 0.03021 GALAXY 64 0 - 305 51613 528 0.12335 GALAXY 64 0 - 305 51613 529 0.05575 GALAXY 64 0 - 305 51613 530 0.16578 GALAXY 64 0 - 305 51613 531 0.05571 GALAXY 64 0 - 305 51613 532 0.08903 GALAXY 64 0 - 305 51613 533 0.13760 GALAXY 64 0 - 305 51613 534 0.05367 GALAXY 64 0 - 305 51613 535 0.05541 GALAXY 64 0 - 305 51613 536 0.18398 GALAXY 64 0 - 305 51613 537 0.05455 GALAXY 64 0 - 305 51613 538 0.08677 GALAXY 64 0 - 305 51613 539 0.15586 GALAXY 1 0 - 305 51613 540 0.05633 GALAXY 64 0 - 305 51613 541 1.68406 QSO 64 0 - 305 51613 542 0.12719 GALAXY 64 0 - 305 51613 543 0.00000 UNKNOWN 0 16 - 305 51613 544 0.12618 GALAXY 96 0 - 305 51613 545 0.12473 GALAXY 64 0 - 305 51613 546 0.12686 GALAXY 64 0 - 305 51613 547 0.28046 GALAXY 32 0 - 305 51613 548 0.47584 GALAXY 67108896 0 - 305 51613 549 0.14522 GALAXY 64 0 - 305 51613 550 0.21924 GALAXY 4 0 - 305 51613 551 0.14424 GALAXY 64 0 - 305 51613 552 0.03175 GALAXY 64 0 - 305 51613 553 0.08380 GALAXY 64 0 - 305 51613 554 0.12670 GALAXY 64 0 - 305 51613 555 0.12707 GALAXY 64 0 - 305 51613 556 1.32883 QSO 1048580 0 - 305 51613 557 0.12614 GALAXY 96 0 - 305 51613 558 0.47502 GALAXY 67108896 0 - 305 51613 559 0.09695 GALAXY 64 0 - 305 51613 560 0.32582 GALAXY 32 0 - 305 51613 561 0.13589 GALAXY 64 0 - 305 51613 562 0.05372 GALAXY 64 0 - 305 51613 563 0.10316 GALAXY 64 0 - 305 51613 564 0.09187 GALAXY 64 0 - 305 51613 565 0.05358 GALAXY 64 0 - 305 51613 566 0.12994 GALAXY 64 0 - 305 51613 567 0.03432 GALAXY 64 0 - 305 51613 568 0.13027 GALAXY 64 0 - 305 51613 569 0.05382 GALAXY 64 0 - 305 51613 570 0.05463 GALAXY 64 0 - 305 51613 571 0.10232 GALAXY 64 0 - 305 51613 572 -0.00031 STAR 0 2 - 305 51613 573 0.05589 GALAXY 64 0 - 305 51613 574 0.08627 GALAXY 64 0 - 305 51613 575 0.09608 GALAXY 64 0 - 305 51613 576 0.05589 GALAXY 64 0 - 305 51613 577 0.00000 UNKNOWN 0 16 - 305 51613 578 0.02617 GALAXY 64 0 - 305 51613 579 -0.00010 STAR 0 2 - 305 51613 580 0.05530 GALAXY 64 0 - 305 51613 581 0.02555 GALAXY 96 0 - 305 51613 582 0.29126 GALAXY 32 0 - 305 51613 583 0.30475 GALAXY 32 0 - 305 51613 584 1.30699 QSO 1 0 - 305 51613 585 0.02808 GALAXY 4 0 - 305 51613 586 0.84141 QSO 1048580 0 - 305 51613 587 0.34512 GALAXY 32 0 - 305 51613 588 0.00000 UNKNOWN 0 16 - 305 51613 589 0.29096 GALAXY 32 0 - 305 51613 590 0.30667 GALAXY 32 0 - 305 51613 591 0.12380 GALAXY 64 0 - 305 51613 592 0.12462 GALAXY 64 0 - 305 51613 593 1.29439 QSO 1048580 0 - 305 51613 594 0.05230 GALAXY 68 0 - 305 51613 595 0.02558 GALAXY 64 0 - 305 51613 596 0.14325 GALAXY 64 0 - 305 51613 597 0.11654 GALAXY 64 0 - 305 51613 598 0.10196 GALAXY 64 0 - 305 51613 599 0.11076 GALAXY 64 0 - 305 51613 600 0.12555 GALAXY 64 0 - 305 51613 601 1.04451 GALAXY 4 0 - 305 51613 602 0.13558 GALAXY 64 0 - 305 51613 603 0.79057 GALAXY 4194304 0 - 305 51613 604 0.01331 GALAXY 64 0 - 305 51613 605 0.13254 GALAXY 96 0 - 305 51613 606 0.14788 GALAXY 64 0 - 305 51613 607 0.12889 GALAXY 64 0 - 305 51613 608 0.13046 GALAXY 96 0 - 305 51613 609 0.05427 GALAXY 64 0 - 305 51613 610 0.09551 GALAXY 96 0 - 305 51613 611 0.08685 GALAXY 64 0 - 305 51613 612 0.13174 GALAXY 64 0 - 305 51613 613 0.13194 GALAXY 64 0 - 305 51613 614 0.05519 GALAXY 64 0 - 305 51613 615 0.33671 GALAXY 32 0 - 305 51613 616 1.84690 QSO 1048580 0 - 305 51613 617 0.11860 GALAXY 64 0 - 305 51613 618 0.05639 GALAXY 68 0 - 305 51613 619 0.13215 GALAXY 64 0 - 305 51613 620 0.00000 UNKNOWN 0 16 - 305 51613 621 0.11295 GALAXY 64 0 - 305 51613 622 0.40830 GALAXY 67108896 0 - 305 51613 623 0.10205 GALAXY 64 0 - 305 51613 624 0.00000 UNKNOWN 0 16 - 305 51613 625 0.31925 GALAXY 32 0 - 305 51613 626 0.13859 GALAXY 64 0 - 305 51613 627 0.30626 QSO 33554433 0 - 305 51613 628 0.05475 GALAXY 64 0 - 305 51613 629 0.11424 GALAXY 64 0 - 305 51613 630 0.05430 GALAXY 96 0 - 305 51613 631 0.08685 GALAXY 64 0 - 305 51613 632 2.14915 QSO 4 0 - 305 51613 633 0.12239 GALAXY 64 0 - 305 51613 634 0.11239 GALAXY 64 0 - 305 51613 635 0.12602 GALAXY 64 0 - 305 51613 636 0.13588 GALAXY 64 0 - 305 51613 637 0.03680 GALAXY 64 0 - 305 51613 638 0.32227 GALAXY 32 0 - 305 51613 639 0.12599 GALAXY 64 0 - 305 51613 640 0.03664 GALAXY 64 0 - 306 51690 1 0.10606 GALAXY 64 0 - 306 51690 2 0.03853 GALAXY 64 0 - 306 51690 3 0.21480 GALAXY 96 0 - 306 51690 4 0.00000 UNKNOWN 0 16 - 306 51690 5 0.14975 GALAXY 64 0 - 306 51690 6 2.04934 QSO 1048580 0 - 306 51690 7 0.18029 GALAXY 64 0 - 306 51690 8 0.09040 GALAXY 64 0 - 306 51690 9 0.08137 GALAXY 64 0 - 306 51690 10 0.03791 GALAXY 64 0 - 306 51690 11 0.18112 GALAXY 64 0 - 306 51690 12 0.10788 GALAXY 64 0 - 306 51690 13 0.24428 GALAXY 32 0 - 306 51690 14 0.25684 GALAXY 96 0 - 306 51690 15 0.21524 GALAXY 96 0 - 306 51690 16 0.28213 GALAXY 32 0 - 306 51690 17 0.10767 GALAXY 64 0 - 306 51690 18 -0.00001 STAR 1056772 0 - 306 51690 19 0.10658 GALAXY 64 0 - 306 51690 20 -0.00068 STAR 1048580 0 - 306 51690 21 0.91439 QSO 1048580 0 - 306 51690 22 0.14084 GALAXY 64 0 - 306 51690 23 0.13512 GALAXY 64 0 - 306 51690 24 0.32531 QSO 68 0 - 306 51690 25 0.10553 GALAXY 64 0 - 306 51690 26 0.08220 GALAXY 64 0 - 306 51690 27 0.03711 GALAXY 64 0 - 306 51690 28 0.12254 GALAXY 64 0 - 306 51690 29 0.00066 STAR 1056772 0 - 306 51690 30 0.08235 GALAXY 64 0 - 306 51690 31 0.10553 GALAXY 64 0 - 306 51690 32 0.13700 GALAXY 64 0 - 306 51690 33 0.46075 GALAXY 67108896 0 - 306 51690 34 0.00000 UNKNOWN 0 16 - 306 51690 35 0.28557 GALAXY 32 0 - 306 51690 36 0.03827 GALAXY 96 0 - 306 51690 37 0.10562 GALAXY 64 0 - 306 51690 38 0.13746 GALAXY 64 0 - 306 51690 39 0.08196 GALAXY 96 0 - 306 51690 40 0.10625 GALAXY 64 0 - 306 51690 41 0.08922 GALAXY 64 0 - 306 51690 42 0.22495 GALAXY 64 0 - 306 51690 43 -0.00005 STAR 64 0 - 306 51690 44 0.22867 GALAXY 96 0 - 306 51690 45 0.02538 GALAXY 64 0 - 306 51690 46 0.18018 GALAXY 64 0 - 306 51690 47 0.00035 STAR 8196 0 - 306 51690 48 0.52731 GALAXY 67108896 0 - 306 51690 49 0.24484 GALAXY 96 0 - 306 51690 50 0.13122 GALAXY 64 0 - 306 51690 51 0.16292 GALAXY 64 0 - 306 51690 52 0.21899 GALAXY 64 0 - 306 51690 53 1.55514 QSO 64 0 - 306 51690 54 0.00000 UNKNOWN 0 16 - 306 51690 55 0.21913 GALAXY 96 0 - 306 51690 56 0.04785 GALAXY 64 0 - 306 51690 57 0.10649 GALAXY 64 0 - 306 51690 58 0.21902 GALAXY 96 0 - 306 51690 59 0.46156 GALAXY 1 0 - 306 51690 60 0.38752 GALAXY 32 0 - 306 51690 61 0.32628 GALAXY 32 0 - 306 51690 62 0.10701 GALAXY 64 0 - 306 51690 63 0.10746 GALAXY 64 0 - 306 51690 64 0.00000 UNKNOWN 0 16 - 306 51690 65 0.10716 GALAXY 64 0 - 306 51690 66 0.28807 GALAXY 32 0 - 306 51690 67 0.08109 GALAXY 64 0 - 306 51690 68 0.21883 GALAXY 96 0 - 306 51690 69 0.10582 GALAXY 96 0 - 306 51690 70 0.10705 GALAXY 64 0 - 306 51690 71 0.13713 GALAXY 64 0 - 306 51690 72 0.13971 GALAXY 64 0 - 306 51690 73 0.02934 GALAXY 64 0 - 306 51690 74 0.09292 GALAXY 64 0 - 306 51690 75 0.13521 GALAXY 64 0 - 306 51690 76 0.96783 QSO 4 0 - 306 51690 77 0.21837 GALAXY 96 0 - 306 51690 78 0.05695 GALAXY 64 0 - 306 51690 79 0.13838 GALAXY 64 0 - 306 51690 80 0.13994 GALAXY 64 0 - 306 51690 81 0.02965 GALAXY 64 0 - 306 51690 82 0.01390 GALAXY 64 0 - 306 51690 83 0.08110 GALAXY 64 0 - 306 51690 84 0.08183 GALAXY 64 0 - 306 51690 85 0.22889 GALAXY 64 0 - 306 51690 86 0.05649 GALAXY 64 0 - 306 51690 87 0.05611 GALAXY 64 0 - 306 51690 88 0.05593 GALAXY 64 0 - 306 51690 89 0.05612 GALAXY 64 0 - 306 51690 90 0.13272 GALAXY 64 0 - 306 51690 91 0.32631 GALAXY 32 0 - 306 51690 92 0.13396 GALAXY 64 0 - 306 51690 93 0.00000 UNKNOWN 0 16 - 306 51690 94 0.14831 GALAXY 64 0 - 306 51690 95 0.16337 GALAXY 64 0 - 306 51690 96 0.08911 GALAXY 96 0 - 306 51690 97 0.05575 GALAXY 64 0 - 306 51690 98 0.08219 GALAXY 64 0 - 306 51690 99 0.13118 GALAXY 64 0 - 306 51690 100 0.24934 GALAXY 32 0 - 306 51690 101 0.13759 GALAXY 64 0 - 306 51690 102 0.10687 GALAXY 64 0 - 306 51690 103 0.10634 GALAXY 64 0 - 306 51690 104 0.12939 GALAXY 64 0 - 306 51690 105 0.10604 GALAXY 64 0 - 306 51690 106 0.22116 GALAXY 64 0 - 306 51690 107 0.85710 QSO 4 0 - 306 51690 108 0.10708 GALAXY 64 0 - 306 51690 109 0.00000 UNKNOWN 0 16 - 306 51690 110 1.55420 QSO 1048580 0 - 306 51690 111 1.17678 QSO 4 0 - 306 51690 112 0.16174 GALAXY 64 0 - 306 51690 113 0.00606 GALAXY 64 0 - 306 51690 114 0.00030 STAR 0 96 - 306 51690 115 0.21105 GALAXY 32 0 - 306 51690 116 0.12339 GALAXY 64 0 - 306 51690 117 -0.00009 STAR 0 2 - 306 51690 118 0.15199 GALAXY 64 0 - 306 51690 119 0.12269 GALAXY 64 0 - 306 51690 120 0.13930 GALAXY 64 0 - 306 51690 121 0.12172 GALAXY 64 0 - 306 51690 122 0.12221 GALAXY 64 0 - 306 51690 123 0.11629 GALAXY 4 0 - 306 51690 124 0.00000 UNKNOWN 0 16 - 306 51690 125 0.26313 GALAXY 32 0 - 306 51690 126 0.05475 GALAXY 64 0 - 306 51690 127 0.65814 QSO 4 0 - 306 51690 128 0.71607 QSO 20 0 - 306 51690 129 1.02701 QSO 3153428 0 - 306 51690 130 0.13709 GALAXY 64 0 - 306 51690 131 0.12212 GALAXY 64 0 - 306 51690 132 0.21718 GALAXY 64 0 - 306 51690 133 0.36217 QSO 4 0 - 306 51690 134 1.32855 QSO 4 0 - 306 51690 135 0.13331 QSO 4 0 - 306 51690 136 0.15087 GALAXY 64 0 - 306 51690 137 0.05481 GALAXY 64 0 - 306 51690 138 0.00006 STAR 1 0 - 306 51690 139 0.00016 STAR 64 0 - 306 51690 140 0.05532 GALAXY 64 0 - 306 51690 141 0.02982 GALAXY 64 0 - 306 51690 142 0.13714 GALAXY 64 0 - 306 51690 143 0.00000 UNKNOWN 0 16 - 306 51690 144 0.12302 GALAXY 64 0 - 306 51690 145 0.13668 GALAXY 64 0 - 306 51690 146 0.08890 GALAXY 64 0 - 306 51690 147 0.00078 STAR 8196 0 - 306 51690 148 0.05621 GALAXY 64 0 - 306 51690 149 0.08899 GALAXY 64 0 - 306 51690 150 0.13707 GALAXY 64 0 - 306 51690 151 0.08393 GALAXY 64 0 - 306 51690 152 0.14775 GALAXY 64 0 - 306 51690 153 0.03590 GALAXY 64 0 - 306 51690 154 0.40237 GALAXY 32 0 - 306 51690 155 0.10632 GALAXY 64 0 - 306 51690 156 0.13679 GALAXY 4 0 - 306 51690 157 -0.00062 STAR 0 2 - 306 51690 158 0.00023 STAR 4 0 - 306 51690 159 1.66636 QSO 64 0 - 306 51690 160 0.10389 GALAXY 64 0 - 306 51690 161 0.45014 GALAXY 32 0 - 306 51690 162 0.21251 GALAXY 64 0 - 306 51690 163 0.00024 STAR 1056772 0 - 306 51690 164 0.00066 STAR 0 2 - 306 51690 165 1.82461 QSO 1 0 - 306 51690 166 0.21805 GALAXY 64 0 - 306 51690 167 0.25766 GALAXY 32 0 - 306 51690 168 0.05561 GALAXY 64 0 - 306 51690 169 0.10515 GALAXY 64 0 - 306 51690 170 2.06534 QSO 4 0 - 306 51690 171 0.50887 QSO 1 0 - 306 51690 172 0.08828 GALAXY 64 0 - 306 51690 173 0.13098 GALAXY 96 0 - 306 51690 174 0.00000 UNKNOWN 0 16 - 306 51690 175 0.10496 GALAXY 64 0 - 306 51690 176 0.12376 GALAXY 64 0 - 306 51690 177 0.09319 GALAXY 64 0 - 306 51690 178 0.08840 GALAXY 64 0 - 306 51690 179 0.10459 GALAXY 64 0 - 306 51690 180 0.51814 GALAXY 67108896 0 - 306 51690 181 -0.00013 STAR 0 2 - 306 51690 182 0.12476 GALAXY 64 0 - 306 51690 183 0.13638 GALAXY 64 0 - 306 51690 184 0.12266 GALAXY 64 0 - 306 51690 185 0.13486 GALAXY 64 0 - 306 51690 186 0.09431 GALAXY 64 0 - 306 51690 187 0.00000 UNKNOWN 0 16 - 306 51690 188 0.00018 STAR 0 512 - 306 51690 189 0.56515 QSO 4 0 - 306 51690 190 0.12318 GALAXY 64 0 - 306 51690 191 1.34653 QSO 1048580 0 - 306 51690 192 0.13694 GALAXY 64 0 - 306 51690 193 0.00042 STAR 1048580 0 - 306 51690 194 0.09310 GALAXY 64 0 - 306 51690 195 0.08837 GALAXY 64 0 - 306 51690 196 0.09312 GALAXY 64 0 - 306 51690 197 0.08780 GALAXY 64 0 - 306 51690 198 0.09294 GALAXY 64 0 - 306 51690 199 0.28151 GALAXY 32 0 - 306 51690 200 0.22035 GALAXY 96 0 - 306 51690 201 0.40155 GALAXY 32 0 - 306 51690 202 0.03518 GALAXY 64 0 - 306 51690 203 0.08272 GALAXY 64 0 - 306 51690 204 0.40202 GALAXY 32 0 - 306 51690 205 0.00000 UNKNOWN 0 16 - 306 51690 206 0.07251 GALAXY 64 0 - 306 51690 207 0.40212 GALAXY 32 0 - 306 51690 208 0.36208 GALAXY 32 0 - 306 51690 209 0.08224 GALAXY 64 0 - 306 51690 210 0.40330 GALAXY 32 0 - 306 51690 211 2.19969 QSO 1048580 0 - 306 51690 212 0.13203 GALAXY 64 0 - 306 51690 213 0.33327 QSO 4 0 - 306 51690 214 0.14131 GALAXY 64 0 - 306 51690 215 0.39660 GALAXY 32 0 - 306 51690 216 0.00032 STAR 1 0 - 306 51690 217 0.00013 STAR 0 32 - 306 51690 218 0.25905 GALAXY 96 0 - 306 51690 219 0.13334 GALAXY 64 0 - 306 51690 220 0.10434 GALAXY 64 0 - 306 51690 221 0.12345 GALAXY 64 0 - 306 51690 222 0.32079 GALAXY 32 0 - 306 51690 223 0.44026 GALAXY 32 0 - 306 51690 224 0.00000 UNKNOWN 0 16 - 306 51690 225 2.53333 QSO 1 0 - 306 51690 226 0.13167 GALAXY 64 0 - 306 51690 227 0.10821 GALAXY 64 0 - 306 51690 228 0.13223 GALAXY 64 0 - 306 51690 229 0.20751 QSO 33554433 0 - 306 51690 230 0.13156 GALAXY 64 0 - 306 51690 231 0.13419 GALAXY 64 0 - 306 51690 232 0.44060 GALAXY 32 0 - 306 51690 233 0.13704 GALAXY 64 0 - 306 51690 234 0.10866 GALAXY 64 0 - 306 51690 235 0.12232 GALAXY 64 0 - 306 51690 236 0.00037 STAR 0 34 - 306 51690 237 0.03048 GALAXY 64 0 - 306 51690 238 0.12402 GALAXY 64 0 - 306 51690 239 -0.00023 STAR 1056772 0 - 306 51690 240 0.13765 GALAXY 64 0 - 306 51690 241 0.33037 GALAXY 32 0 - 306 51690 242 0.12128 GALAXY 64 0 - 306 51690 243 0.00000 UNKNOWN 0 16 - 306 51690 244 0.35781 GALAXY 32 0 - 306 51690 245 0.01373 QSO 20 0 - 306 51690 246 0.60516 QSO 1048580 0 - 306 51690 247 0.07304 GALAXY 64 0 - 306 51690 248 0.13755 GALAXY 64 0 - 306 51690 249 0.08000 GALAXY 64 0 - 306 51690 250 0.00010 STAR 524288 0 - 306 51690 251 0.12351 GALAXY 96 0 - 306 51690 252 0.10435 GALAXY 64 0 - 306 51690 253 0.02991 GALAXY 64 0 - 306 51690 254 0.00039 STAR 4 0 - 306 51690 255 0.40317 GALAXY 32 0 - 306 51690 256 0.08805 GALAXY 64 0 - 306 51690 257 0.12319 GALAXY 64 0 - 306 51690 258 1.49996 QSO 2097168 0 - 306 51690 259 0.08255 GALAXY 64 0 - 306 51690 260 0.31757 QSO 64 0 - 306 51690 261 -0.00003 STAR 4 0 - 306 51690 262 0.08329 GALAXY 64 0 - 306 51690 263 0.13176 GALAXY 96 0 - 306 51690 264 0.03015 GALAXY 64 0 - 306 51690 265 0.35473 QSO 1 0 - 306 51690 266 0.81063 QSO 1048580 0 - 306 51690 267 0.11841 GALAXY 64 0 - 306 51690 268 0.32024 GALAXY 32 0 - 306 51690 269 0.22099 GALAXY 64 0 - 306 51690 270 0.13668 GALAXY 96 0 - 306 51690 271 0.00000 UNKNOWN 0 16 - 306 51690 272 0.08533 GALAXY 64 0 - 306 51690 273 0.08616 GALAXY 64 0 - 306 51690 274 -0.00031 STAR 8196 0 - 306 51690 275 0.03019 GALAXY 96 0 - 306 51690 276 0.18463 GALAXY 64 0 - 306 51690 277 0.15820 GALAXY 64 0 - 306 51690 278 0.03034 GALAXY 64 0 - 306 51690 279 1.55604 QSO 1048580 0 - 306 51690 280 1.66719 QSO 4 0 - 306 51690 281 0.13087 GALAXY 64 0 - 306 51690 282 0.00000 UNKNOWN 0 16 - 306 51690 283 0.13223 GALAXY 64 0 - 306 51690 284 0.10436 GALAXY 64 0 - 306 51690 285 0.00034 STAR 0 96 - 306 51690 286 0.03019 GALAXY 68 0 - 306 51690 287 0.03052 GALAXY 96 0 - 306 51690 288 0.39896 GALAXY 67108896 0 - 306 51690 289 0.32015 GALAXY 4096 0 - 306 51690 290 0.13426 GALAXY 64 0 - 306 51690 291 0.13725 GALAXY 64 0 - 306 51690 292 0.21827 GALAXY 96 0 - 306 51690 293 0.07341 GALAXY 64 0 - 306 51690 294 0.07937 GALAXY 64 0 - 306 51690 295 0.04832 GALAXY 64 0 - 306 51690 296 1.52280 QSO 64 0 - 306 51690 297 0.80911 QSO 1048580 0 - 306 51690 298 0.07268 GALAXY 96 0 - 306 51690 299 0.05531 GALAXY 96 0 - 306 51690 300 0.07327 GALAXY 64 0 - 306 51690 301 0.16029 GALAXY 64 0 - 306 51690 302 0.62829 QSO 4 0 - 306 51690 303 0.00000 UNKNOWN 0 16 - 306 51690 304 0.12703 GALAXY 64 0 - 306 51690 305 0.13637 GALAXY 64 0 - 306 51690 306 0.33572 GALAXY 32 0 - 306 51690 307 1.14773 QSO 4 0 - 306 51690 308 2.63993 QSO 1 0 - 306 51690 309 0.13095 GALAXY 64 0 - 306 51690 310 0.07333 GALAXY 96 0 - 306 51690 311 0.75332 QSO 42991616 0 - 306 51690 312 0.28396 GALAXY 32 0 - 306 51690 313 0.22184 GALAXY 5124 0 - 306 51690 314 0.16473 GALAXY 64 0 - 306 51690 315 0.07951 GALAXY 64 0 - 306 51690 316 0.13125 GALAXY 64 0 - 306 51690 317 0.28484 GALAXY 32 0 - 306 51690 318 0.10446 GALAXY 64 0 - 306 51690 319 0.13504 GALAXY 64 0 - 306 51690 320 1.32371 GALAXY 4096 0 - 306 51690 321 0.11390 GALAXY 64 0 - 306 51690 322 0.31993 GALAXY 32 0 - 306 51690 323 0.11488 GALAXY 64 0 - 306 51690 324 0.12590 GALAXY 64 0 - 306 51690 325 0.11057 GALAXY 64 0 - 306 51690 326 0.09863 GALAXY 64 0 - 306 51690 327 0.10148 GALAXY 64 0 - 306 51690 328 0.02592 GALAXY 96 0 - 306 51690 329 0.14489 GALAXY 64 0 - 306 51690 330 0.37320 GALAXY 16384 0 - 306 51690 331 0.00011 STAR 1056772 0 - 306 51690 332 0.12405 GALAXY 64 0 - 306 51690 333 0.00000 UNKNOWN 0 16 - 306 51690 334 0.11515 GALAXY 64 0 - 306 51690 335 0.15065 GALAXY 64 0 - 306 51690 336 0.10210 GALAXY 64 0 - 306 51690 337 0.17042 GALAXY 64 0 - 306 51690 338 0.05250 GALAXY 64 0 - 306 51690 339 0.16147 GALAXY 96 0 - 306 51690 340 0.00013 STAR 65536 0 - 306 51690 341 0.33545 GALAXY 32 0 - 306 51690 342 0.08551 GALAXY 96 0 - 306 51690 343 0.05710 GALAXY 64 0 - 306 51690 344 0.11487 GALAXY 64 0 - 306 51690 345 -0.00010 STAR 16777216 0 - 306 51690 346 0.00008 STAR 64 0 - 306 51690 347 0.12899 GALAXY 64 0 - 306 51690 348 0.13593 GALAXY 64 0 - 306 51690 349 0.08524 GALAXY 64 0 - 306 51690 350 0.29547 GALAXY 32 0 - 306 51690 351 0.00011 STAR 0 2 - 306 51690 352 0.00000 UNKNOWN 0 16 - 306 51690 353 0.02416 GALAXY 64 0 - 306 51690 354 0.33303 GALAXY 32 0 - 306 51690 355 0.13498 GALAXY 64 0 - 306 51690 356 0.08474 GALAXY 64 0 - 306 51690 357 -0.00031 STAR 64 0 - 306 51690 358 0.08501 GALAXY 64 0 - 306 51690 359 0.08480 GALAXY 64 0 - 306 51690 360 0.22948 GALAXY 32 0 - 306 51690 361 0.11357 GALAXY 64 0 - 306 51690 362 0.21247 GALAXY 96 0 - 306 51690 363 0.15226 GALAXY 64 0 - 306 51690 364 0.42328 GALAXY 32 0 - 306 51690 365 0.00034 STAR 1056772 0 - 306 51690 366 0.12328 GALAXY 64 0 - 306 51690 367 0.00000 UNKNOWN 0 16 - 306 51690 368 0.12206 GALAXY 4 0 - 306 51690 369 0.19060 GALAXY 64 0 - 306 51690 370 0.12365 GALAXY 64 0 - 306 51690 371 0.12368 GALAXY 64 0 - 306 51690 372 0.02992 GALAXY 96 0 - 306 51690 373 0.02972 GALAXY 68 0 - 306 51690 374 0.00026 STAR 1056772 0 - 306 51690 375 0.33238 UNKNOWN 33554433 0 - 306 51690 376 0.48044 GALAXY 67108896 0 - 306 51690 377 0.32944 GALAXY 32 0 - 306 51690 378 0.08675 GALAXY 64 0 - 306 51690 379 0.32397 GALAXY 32 0 - 306 51690 380 0.15605 GALAXY 64 0 - 306 51690 381 0.05139 GALAXY 64 0 - 306 51690 382 0.05398 GALAXY 64 0 - 306 51690 383 0.05541 GALAXY 64 0 - 306 51690 384 0.36408 GALAXY 32 0 - 306 51690 385 0.05584 GALAXY 96 0 - 306 51690 386 0.05624 GALAXY 64 0 - 306 51690 387 0.05589 GALAXY 64 0 - 306 51690 388 0.10283 GALAXY 96 0 - 306 51690 389 0.43058 UNKNOWN 42991616 0 - 306 51690 390 0.05715 GALAXY 64 0 - 306 51690 391 0.00041 STAR 8192 0 - 306 51690 392 0.11427 GALAXY 64 0 - 306 51690 393 0.12960 GALAXY 96 0 - 306 51690 394 0.10235 GALAXY 64 0 - 306 51690 395 0.10476 GALAXY 64 0 - 306 51690 396 0.13822 GALAXY 64 0 - 306 51690 397 0.10559 GALAXY 64 0 - 306 51690 398 0.00000 UNKNOWN 0 16 - 306 51690 399 0.05472 GALAXY 64 0 - 306 51690 400 0.00020 STAR 4 0 - 306 51690 401 0.13312 GALAXY 64 0 - 306 51690 402 0.00111 STAR 8196 0 - 306 51690 403 0.13642 GALAXY 96 0 - 306 51690 404 0.03023 GALAXY 96 0 - 306 51690 405 0.02626 GALAXY 96 0 - 306 51690 406 0.12433 GALAXY 64 0 - 306 51690 407 0.13356 GALAXY 64 0 - 306 51690 408 0.03042 GALAXY 64 0 - 306 51690 409 0.13652 GALAXY 64 0 - 306 51690 410 0.03027 GALAXY 64 0 - 306 51690 411 0.13297 GALAXY 64 0 - 306 51690 412 0.08740 GALAXY 64 0 - 306 51690 413 0.13713 GALAXY 64 0 - 306 51690 414 0.15087 GALAXY 64 0 - 306 51690 415 0.29930 GALAXY 32 0 - 306 51690 416 0.20559 GALAXY 64 0 - 306 51690 417 0.00000 UNKNOWN 0 16 - 306 51690 418 0.06847 GALAXY 64 0 - 306 51690 419 0.13194 GALAXY 64 0 - 306 51690 420 0.13772 GALAXY 64 0 - 306 51690 421 0.05594 GALAXY 64 0 - 306 51690 422 0.05448 GALAXY 96 0 - 306 51690 423 0.15125 GALAXY 64 0 - 306 51690 424 0.14800 GALAXY 64 0 - 306 51690 425 0.08661 GALAXY 64 0 - 306 51690 426 0.13013 GALAXY 64 0 - 306 51690 427 0.13680 GALAXY 64 0 - 306 51690 428 0.19016 GALAXY 4 0 - 306 51690 429 0.05502 GALAXY 64 0 - 306 51690 430 0.05610 GALAXY 64 0 - 306 51690 431 0.05649 GALAXY 96 0 - 306 51690 432 0.10347 GALAXY 64 0 - 306 51690 433 1.26408 QSO 4 0 - 306 51690 434 0.08685 GALAXY 64 0 - 306 51690 435 0.00000 UNKNOWN 0 16 - 306 51690 436 0.11826 GALAXY 64 0 - 306 51690 437 1.99520 QSO 1048580 0 - 306 51690 438 0.10321 GALAXY 64 0 - 306 51690 439 0.05468 GALAXY 96 0 - 306 51690 440 0.10252 GALAXY 64 0 - 306 51690 441 0.07836 GALAXY 64 0 - 306 51690 442 0.08127 GALAXY 64 0 - 306 51690 443 0.33620 GALAXY 32 0 - 306 51690 444 0.48094 GALAXY 67108896 0 - 306 51690 445 0.39976 GALAXY 32 0 - 306 51690 446 0.11764 GALAXY 64 0 - 306 51690 447 1.09092 QSO 1048580 0 - 306 51690 448 0.00000 UNKNOWN 0 16 - 306 51690 449 0.14444 GALAXY 64 0 - 306 51690 450 0.10898 GALAXY 64 0 - 306 51690 451 0.03009 GALAXY 64 0 - 306 51690 452 -0.00019 STAR 0 32 - 306 51690 453 0.47184 GALAXY 67108896 0 - 306 51690 454 0.07156 GALAXY 64 0 - 306 51690 455 0.22265 GALAXY 64 0 - 306 51690 456 0.12729 GALAXY 64 0 - 306 51690 457 0.09513 GALAXY 64 0 - 306 51690 458 0.15105 GALAXY 96 0 - 306 51690 459 0.15039 GALAXY 64 0 - 306 51690 460 0.40984 QSO 32 0 - 306 51690 461 0.09531 GALAXY 64 0 - 306 51690 462 0.13588 GALAXY 64 0 - 306 51690 463 0.09539 GALAXY 64 0 - 306 51690 464 0.00000 UNKNOWN 0 16 - 306 51690 465 0.29964 GALAXY 32 0 - 306 51690 466 0.37428 GALAXY 4 0 - 306 51690 467 0.13569 GALAXY 64 0 - 306 51690 468 0.13627 GALAXY 64 0 - 306 51690 469 0.16282 GALAXY 64 0 - 306 51690 470 0.13072 GALAXY 64 0 - 306 51690 471 0.13063 GALAXY 64 0 - 306 51690 472 0.13174 GALAXY 64 0 - 306 51690 473 0.05502 GALAXY 64 0 - 306 51690 474 0.05608 GALAXY 64 0 - 306 51690 475 0.05383 GALAXY 64 0 - 306 51690 476 0.07921 GALAXY 64 0 - 306 51690 477 0.03528 GALAXY 64 0 - 306 51690 478 1.07730 QSO 35127296 0 - 306 51690 479 0.08777 GALAXY 64 0 - 306 51690 480 0.13076 GALAXY 96 0 - 306 51690 481 0.13018 GALAXY 64 0 - 306 51690 482 1.94747 QSO 1048580 0 - 306 51690 483 0.09530 GALAXY 64 0 - 306 51690 484 0.00012 STAR 64 0 - 306 51690 485 0.05472 GALAXY 96 0 - 306 51690 486 0.05276 GALAXY 96 0 - 306 51690 487 1.12019 GALAXY 64 0 - 306 51690 488 0.03476 GALAXY 64 0 - 306 51690 489 0.13102 GALAXY 64 0 - 306 51690 490 0.12106 GALAXY 96 0 - 306 51690 491 0.29000 GALAXY 32 0 - 306 51690 492 0.13657 GALAXY 64 0 - 306 51690 493 0.05569 GALAXY 64 0 - 306 51690 494 0.09949 GALAXY 64 0 - 306 51690 495 0.00029 STAR 9437188 0 - 306 51690 496 0.09384 GALAXY 64 0 - 306 51690 497 0.00000 UNKNOWN 0 16 - 306 51690 498 0.13055 GALAXY 64 0 - 306 51690 499 0.40524 GALAXY 32 0 - 306 51690 500 0.00010 STAR 0 2 - 306 51690 501 0.44638 GALAXY 67108896 0 - 306 51690 502 0.13035 GALAXY 64 0 - 306 51690 503 0.05493 GALAXY 4 0 - 306 51690 504 0.03430 GALAXY 96 0 - 306 51690 505 0.00554 GALAXY 64 0 - 306 51690 506 0.12197 GALAXY 64 0 - 306 51690 507 0.15710 GALAXY 4 0 - 306 51690 508 0.09309 GALAXY 64 0 - 306 51690 509 0.02612 GALAXY 64 0 - 306 51690 510 0.14854 GALAXY 64 0 - 306 51690 511 0.03118 GALAXY 64 0 - 306 51690 512 0.00000 UNKNOWN 0 16 - 306 51690 513 0.00044 STAR 1056772 0 - 306 51690 514 0.07212 GALAXY 64 0 - 306 51690 515 0.00012 STAR 1 0 - 306 51690 516 0.47415 GALAXY 67108896 0 - 306 51690 517 0.12836 GALAXY 64 0 - 306 51690 518 0.00008 STAR 16777216 0 - 306 51690 519 1.71572 QSO 1 0 - 306 51690 520 0.03531 GALAXY 64 0 - 306 51690 521 0.11971 GALAXY 64 0 - 306 51690 522 0.06864 GALAXY 64 0 - 306 51690 523 1.63088 QSO 64 0 - 306 51690 524 2.75956 QSO 1 0 - 306 51690 525 0.00000 UNKNOWN 0 16 - 306 51690 526 0.12668 GALAXY 64 0 - 306 51690 527 0.15046 GALAXY 64 0 - 306 51690 528 0.10891 GALAXY 64 0 - 306 51690 529 0.13788 GALAXY 64 0 - 306 51690 530 0.11464 GALAXY 64 0 - 306 51690 531 0.19954 QSO 4 0 - 306 51690 532 0.07818 GALAXY 64 0 - 306 51690 533 0.07874 GALAXY 64 0 - 306 51690 534 0.15624 GALAXY 64 0 - 306 51690 535 0.03432 GALAXY 96 0 - 306 51690 536 0.15098 GALAXY 64 0 - 306 51690 537 0.12445 GALAXY 96 0 - 306 51690 538 0.13700 GALAXY 64 0 - 306 51690 539 0.00025 STAR 2097168 0 - 306 51690 540 0.17557 GALAXY 64 0 - 306 51690 541 0.43164 GALAXY 32 0 - 306 51690 542 0.12505 GALAXY 64 0 - 306 51690 543 0.12597 GALAXY 64 0 - 306 51690 544 0.93572 QSO 16777216 0 - 306 51690 545 0.07837 GALAXY 64 0 - 306 51690 546 0.07894 GALAXY 64 0 - 306 51690 547 0.45648 GALAXY 67108896 0 - 306 51690 548 0.15518 GALAXY 64 0 - 306 51690 549 -0.00000 STAR 4 0 - 306 51690 550 0.00003 STAR 0 34 - 306 51690 551 0.07967 GALAXY 64 0 - 306 51690 552 0.11957 GALAXY 64 0 - 306 51690 553 0.02894 GALAXY 64 0 - 306 51690 554 0.11873 GALAXY 64 0 - 306 51690 555 0.00000 UNKNOWN 0 16 - 306 51690 556 0.43295 GALAXY 32 0 - 306 51690 557 0.07840 GALAXY 96 0 - 306 51690 558 2.73670 QSO 34611201 0 - 306 51690 559 0.12854 GALAXY 64 0 - 306 51690 560 0.05252 GALAXY 64 0 - 306 51690 561 0.00000 UNKNOWN 0 16 - 306 51690 562 0.34026 GALAXY 32 0 - 306 51690 563 0.07004 GALAXY 64 0 - 306 51690 564 0.11936 GALAXY 96 0 - 306 51690 565 0.11467 GALAXY 64 0 - 306 51690 566 0.13766 GALAXY 64 0 - 306 51690 567 0.09376 GALAXY 64 0 - 306 51690 568 0.07900 GALAXY 96 0 - 306 51690 569 0.03045 GALAXY 64 0 - 306 51690 570 0.05063 GALAXY 4 0 - 306 51690 571 0.11984 GALAXY 96 0 - 306 51690 572 0.12841 GALAXY 64 0 - 306 51690 573 0.11986 GALAXY 64 0 - 306 51690 574 0.09410 GALAXY 64 0 - 306 51690 575 0.11568 GALAXY 64 0 - 306 51690 576 0.11606 GALAXY 64 0 - 306 51690 577 0.13297 GALAXY 64 0 - 306 51690 578 0.12767 GALAXY 64 0 - 306 51690 579 0.50153 GALAXY 67108896 0 - 306 51690 580 0.11555 GALAXY 64 0 - 306 51690 581 0.03065 GALAXY 96 0 - 306 51690 582 0.03009 GALAXY 64 0 - 306 51690 583 0.27968 GALAXY 96 0 - 306 51690 584 0.22253 GALAXY 96 0 - 306 51690 585 0.03073 GALAXY 64 0 - 306 51690 586 0.11863 GALAXY 64 0 - 306 51690 587 0.07859 GALAXY 64 0 - 306 51690 588 0.11747 GALAXY 33554496 0 - 306 51690 589 0.03534 GALAXY 64 0 - 306 51690 590 -0.00013 STAR 2097168 0 - 306 51690 591 0.13694 GALAXY 64 0 - 306 51690 592 0.03476 GALAXY 64 0 - 306 51690 593 0.00000 UNKNOWN 0 16 - 306 51690 594 0.12082 GALAXY 64 0 - 306 51690 595 -0.00006 STAR 0 32 - 306 51690 596 0.12798 GALAXY 64 0 - 306 51690 597 0.42562 UNKNOWN 67108896 0 - 306 51690 598 0.05655 GALAXY 64 0 - 306 51690 599 0.02678 GALAXY 64 0 - 306 51690 600 0.12180 GALAXY 64 0 - 306 51690 601 0.76194 GALAXY 1048580 0 - 306 51690 602 0.07809 GALAXY 96 0 - 306 51690 603 0.12490 GALAXY 64 0 - 306 51690 604 0.00034 STAR 4 0 - 306 51690 605 0.12504 GALAXY 64 0 - 306 51690 606 0.13755 GALAXY 64 0 - 306 51690 607 0.11877 GALAXY 64 0 - 306 51690 608 0.07820 GALAXY 64 0 - 306 51690 609 0.00000 UNKNOWN 0 16 - 306 51690 610 0.12652 GALAXY 64 0 - 306 51690 611 0.12851 GALAXY 64 0 - 306 51690 612 0.03018 GALAXY 64 0 - 306 51690 613 0.13769 GALAXY 64 0 - 306 51690 614 0.12844 GALAXY 64 0 - 306 51690 615 0.11868 GALAXY 64 0 - 306 51690 616 0.00006 STAR 0 34 - 306 51690 617 0.13617 GALAXY 64 0 - 306 51690 618 0.12890 GALAXY 64 0 - 306 51690 619 0.12624 GALAXY 64 0 - 306 51690 620 0.12062 GALAXY 64 0 - 306 51690 621 0.13689 GALAXY 96 0 - 306 51690 622 0.02970 GALAXY 64 0 - 306 51690 623 0.02943 GALAXY 96 0 - 306 51690 624 0.14985 GALAXY 64 0 - 306 51690 625 0.10546 GALAXY 64 0 - 306 51690 626 0.10566 GALAXY 96 0 - 306 51690 627 0.14038 GALAXY 7172 0 - 306 51690 628 1.26687 QSO 4 0 - 306 51690 629 1.86240 QSO 1048580 0 - 306 51690 630 0.21038 GALAXY 64 0 - 306 51690 631 0.13700 GALAXY 64 0 - 306 51690 632 0.00022 STAR 0 2 - 306 51690 633 0.07859 GALAXY 64 0 - 306 51690 634 0.10845 GALAXY 64 0 - 306 51690 635 0.10884 GALAXY 64 0 - 306 51690 636 0.00006 STAR 0 2 - 306 51690 637 0.00025 STAR 32768 0 - 306 51690 638 0.12372 GALAXY 64 0 - 306 51690 639 0.00000 UNKNOWN 0 16 - 306 51690 640 0.05607 GALAXY 96 0 - 307 51663 1 0.13822 QSO 64 0 - 307 51663 2 2.08188 QSO 34603008 0 - 307 51663 3 0.14468 GALAXY 64 0 - 307 51663 4 0.14519 GALAXY 64 0 - 307 51663 5 0.14381 GALAXY 64 0 - 307 51663 6 0.14422 GALAXY 64 0 - 307 51663 7 0.00000 UNKNOWN 0 16 - 307 51663 8 0.00035 STAR 42991616 512 - 307 51663 9 0.00037 STAR 1 0 - 307 51663 10 0.14307 GALAXY 64 0 - 307 51663 11 2.21717 QSO 4 0 - 307 51663 12 0.14236 GALAXY 64 0 - 307 51663 13 0.10918 GALAXY 64 0 - 307 51663 14 0.14908 GALAXY 64 0 - 307 51663 15 0.10849 GALAXY 64 0 - 307 51663 16 0.14674 GALAXY 64 0 - 307 51663 17 0.14173 GALAXY 64 0 - 307 51663 18 0.14878 GALAXY 64 0 - 307 51663 19 0.08030 GALAXY 64 0 - 307 51663 20 -0.00027 STAR 0 96 - 307 51663 21 0.37009 GALAXY 32 0 - 307 51663 22 0.99563 QSO 64 0 - 307 51663 23 -0.00003 STAR 0 34 - 307 51663 24 0.08009 GALAXY 64 0 - 307 51663 25 1.81508 QSO 4 0 - 307 51663 26 0.00000 UNKNOWN 0 16 - 307 51663 27 0.29093 GALAXY 32 0 - 307 51663 28 0.14844 GALAXY 64 0 - 307 51663 29 0.15239 GALAXY 64 0 - 307 51663 30 0.15069 GALAXY 64 0 - 307 51663 31 0.15025 GALAXY 4 0 - 307 51663 32 0.19907 GALAXY 64 0 - 307 51663 33 0.00577 GALAXY 64 0 - 307 51663 34 0.00006 STAR 0 34 - 307 51663 35 0.17437 GALAXY 64 0 - 307 51663 36 0.07331 GALAXY 64 0 - 307 51663 37 0.14125 GALAXY 64 0 - 307 51663 38 0.24023 GALAXY 96 0 - 307 51663 39 0.29154 GALAXY 32 0 - 307 51663 40 0.05794 GALAXY 64 0 - 307 51663 41 0.05715 GALAXY 64 0 - 307 51663 42 0.15301 GALAXY 64 0 - 307 51663 43 0.18166 GALAXY 64 0 - 307 51663 44 0.32302 GALAXY 32 0 - 307 51663 45 0.13270 GALAXY 64 0 - 307 51663 46 0.13279 GALAXY 64 0 - 307 51663 47 0.13900 GALAXY 64 0 - 307 51663 48 0.00023 STAR 42991616 0 - 307 51663 49 0.14376 GALAXY 64 0 - 307 51663 50 0.32462 GALAXY 32 0 - 307 51663 51 0.13287 GALAXY 64 0 - 307 51663 52 -0.00082 STAR 9445376 0 - 307 51663 53 0.00040 STAR 1056768 0 - 307 51663 54 0.07225 GALAXY 64 0 - 307 51663 55 0.00000 UNKNOWN 0 16 - 307 51663 56 0.15069 GALAXY 64 0 - 307 51663 57 0.18363 GALAXY 64 0 - 307 51663 58 0.32353 GALAXY 32 0 - 307 51663 59 0.32342 GALAXY 32 0 - 307 51663 60 0.08045 GALAXY 64 0 - 307 51663 61 0.17991 GALAXY 64 0 - 307 51663 62 0.14877 GALAXY 96 0 - 307 51663 63 0.07195 GALAXY 64 0 - 307 51663 64 0.14929 GALAXY 64 0 - 307 51663 65 0.37216 GALAXY 32 0 - 307 51663 66 0.00000 UNKNOWN 0 16 - 307 51663 67 0.07997 GALAXY 64 0 - 307 51663 68 0.00589 GALAXY 96 0 - 307 51663 69 0.11531 GALAXY 64 0 - 307 51663 70 0.14940 GALAXY 64 0 - 307 51663 71 0.14928 GALAXY 64 0 - 307 51663 72 0.07993 GALAXY 64 0 - 307 51663 73 0.58415 GALAXY 1048580 0 - 307 51663 74 0.19387 GALAXY 64 0 - 307 51663 75 0.28756 GALAXY 32 0 - 307 51663 76 0.14942 GALAXY 64 0 - 307 51663 77 0.20129 GALAXY 64 0 - 307 51663 78 0.08008 GALAXY 64 0 - 307 51663 79 0.14755 GALAXY 64 0 - 307 51663 80 0.34646 GALAXY 32 0 - 307 51663 81 0.00025 STAR 34611200 0 - 307 51663 82 0.13769 GALAXY 64 0 - 307 51663 83 0.00000 UNKNOWN 0 16 - 307 51663 84 0.36685 GALAXY 32 0 - 307 51663 85 0.00049 STAR 34611200 0 - 307 51663 86 0.11539 GALAXY 64 0 - 307 51663 87 0.17670 GALAXY 64 0 - 307 51663 88 0.32290 GALAXY 32 0 - 307 51663 89 1.82111 QSO 4 0 - 307 51663 90 0.00029 STAR 4 0 - 307 51663 91 0.59033 QSO 1048580 0 - 307 51663 92 0.11604 GALAXY 64 0 - 307 51663 93 0.10730 GALAXY 64 0 - 307 51663 94 0.11603 GALAXY 64 0 - 307 51663 95 0.11617 GALAXY 64 0 - 307 51663 96 0.07211 GALAXY 96 0 - 307 51663 97 0.17896 GALAXY 64 0 - 307 51663 98 0.07236 GALAXY 64 0 - 307 51663 99 0.00609 GALAXY 64 0 - 307 51663 100 0.15178 GALAXY 64 0 - 307 51663 101 0.11281 GALAXY 64 0 - 307 51663 102 0.08082 GALAXY 64 0 - 307 51663 103 0.11553 GALAXY 64 0 - 307 51663 104 0.00600 GALAXY 64 0 - 307 51663 105 0.08152 GALAXY 64 0 - 307 51663 106 0.14925 GALAXY 64 0 - 307 51663 107 0.13807 GALAXY 64 0 - 307 51663 108 0.00000 UNKNOWN 0 16 - 307 51663 109 0.14039 GALAXY 4 0 - 307 51663 110 0.00000 MISSING 0 0 - 307 51663 111 0.00685 GALAXY 64 0 - 307 51663 112 0.37135 GALAXY 32 0 - 307 51663 113 0.00061 STAR 0 2 - 307 51663 114 -0.00017 STAR 1056772 0 - 307 51663 115 0.14049 GALAXY 64 0 - 307 51663 116 1.40881 QSO 1048580 0 - 307 51663 117 0.09383 GALAXY 64 0 - 307 51663 118 0.10395 GALAXY 64 0 - 307 51663 119 0.10873 GALAXY 64 0 - 307 51663 120 0.14936 GALAXY 64 0 - 307 51663 121 0.13832 GALAXY 64 0 - 307 51663 122 0.21774 GALAXY 96 0 - 307 51663 123 0.00045 STAR 8192 0 - 307 51663 124 0.13837 GALAXY 64 0 - 307 51663 125 0.14007 GALAXY 64 0 - 307 51663 126 0.21687 GALAXY 96 0 - 307 51663 127 0.07226 GALAXY 64 0 - 307 51663 128 0.57099 QSO 4 0 - 307 51663 129 0.00019 STAR 42991616 0 - 307 51663 130 0.07236 GALAXY 33554496 0 - 307 51663 131 0.14468 GALAXY 64 0 - 307 51663 132 0.00000 UNKNOWN 0 16 - 307 51663 133 0.33040 GALAXY 32 0 - 307 51663 134 0.19403 GALAXY 64 0 - 307 51663 135 0.18052 GALAXY 64 0 - 307 51663 136 0.21745 GALAXY 96 0 - 307 51663 137 0.13897 GALAXY 96 0 - 307 51663 138 0.10731 GALAXY 64 0 - 307 51663 139 0.13777 GALAXY 64 0 - 307 51663 140 0.07220 GALAXY 64 0 - 307 51663 141 0.21402 GALAXY 68 0 - 307 51663 142 0.00032 STAR 1056768 0 - 307 51663 143 0.29774 GALAXY 32 0 - 307 51663 144 0.14885 GALAXY 96 0 - 307 51663 145 0.13870 GALAXY 64 0 - 307 51663 146 0.00000 UNKNOWN 0 16 - 307 51663 147 0.13737 GALAXY 64 0 - 307 51663 148 0.08411 GALAXY 64 0 - 307 51663 149 -0.00007 STAR 8196 0 - 307 51663 150 0.13786 GALAXY 64 0 - 307 51663 151 0.00032 STAR 4 0 - 307 51663 152 0.35831 GALAXY 32 0 - 307 51663 153 0.10514 GALAXY 64 0 - 307 51663 154 0.18107 GALAXY 64 0 - 307 51663 155 0.11527 GALAXY 96 0 - 307 51663 156 0.35119 QSO 4 0 - 307 51663 157 0.00636 GALAXY 64 0 - 307 51663 158 -0.00129 STAR 42991616 0 - 307 51663 159 0.18248 GALAXY 64 0 - 307 51663 160 0.30266 GALAXY 32 0 - 307 51663 161 0.03359 GALAXY 68 0 - 307 51663 162 0.14926 GALAXY 64 0 - 307 51663 163 0.00029 STAR 34611200 0 - 307 51663 164 0.13975 GALAXY 64 0 - 307 51663 165 0.00000 UNKNOWN 0 16 - 307 51663 166 0.10400 GALAXY 5184 0 - 307 51663 167 0.10930 GALAXY 64 0 - 307 51663 168 0.18015 GALAXY 64 0 - 307 51663 169 0.10530 GALAXY 64 0 - 307 51663 170 0.03707 GALAXY 96 0 - 307 51663 171 0.10992 GALAXY 96 0 - 307 51663 172 0.12918 GALAXY 64 0 - 307 51663 173 0.00000 UNKNOWN 64 0 - 307 51663 174 0.07340 GALAXY 64 0 - 307 51663 175 1.83595 QSO 42991616 0 - 307 51663 176 0.09403 GALAXY 4 0 - 307 51663 177 0.24723 GALAXY 96 0 - 307 51663 178 0.14064 GALAXY 64 0 - 307 51663 179 0.12918 GALAXY 64 0 - 307 51663 180 0.12178 GALAXY 64 0 - 307 51663 181 -0.00000 STAR 4096 0 - 307 51663 182 0.08145 GALAXY 64 0 - 307 51663 183 0.17959 GALAXY 64 0 - 307 51663 184 0.14110 GALAXY 96 0 - 307 51663 185 0.00650 GALAXY 64 0 - 307 51663 186 0.13657 GALAXY 64 0 - 307 51663 187 0.13392 GALAXY 64 0 - 307 51663 188 0.18029 GALAXY 96 0 - 307 51663 189 0.14042 GALAXY 64 0 - 307 51663 190 0.05712 GALAXY 64 0 - 307 51663 191 0.13505 GALAXY 64 0 - 307 51663 192 0.17970 GALAXY 96 0 - 307 51663 193 0.13528 GALAXY 64 0 - 307 51663 194 0.13701 GALAXY 96 0 - 307 51663 195 0.13814 GALAXY 96 0 - 307 51663 196 0.11596 GALAXY 64 0 - 307 51663 197 0.14487 GALAXY 64 0 - 307 51663 198 0.13765 GALAXY 96 0 - 307 51663 199 0.13832 GALAXY 64 0 - 307 51663 200 0.00000 UNKNOWN 0 16 - 307 51663 201 0.28495 GALAXY 32 0 - 307 51663 202 0.15131 GALAXY 64 0 - 307 51663 203 0.35878 GALAXY 32 0 - 307 51663 204 1.80290 QSO 33554433 0 - 307 51663 205 0.10583 GALAXY 64 0 - 307 51663 206 0.13978 GALAXY 64 0 - 307 51663 207 0.01422 UNKNOWN 64 0 - 307 51663 208 0.05085 GALAXY 64 0 - 307 51663 209 0.14904 GALAXY 64 0 - 307 51663 210 0.00017 STAR 524288 0 - 307 51663 211 0.29182 GALAXY 32 0 - 307 51663 212 0.21083 GALAXY 4 0 - 307 51663 213 0.00012 STAR 0 34 - 307 51663 214 0.14835 GALAXY 96 0 - 307 51663 215 0.00000 UNKNOWN 0 16 - 307 51663 216 0.12134 GALAXY 64 0 - 307 51663 217 0.00021 STAR 8196 0 - 307 51663 218 -0.00035 STAR 8192 0 - 307 51663 219 0.28566 GALAXY 4 0 - 307 51663 220 0.13963 GALAXY 64 0 - 307 51663 221 0.33742 GALAXY 32 0 - 307 51663 222 0.00000 UNKNOWN 0 16 - 307 51663 223 1.76820 QSO 34603008 0 - 307 51663 224 0.18072 GALAXY 64 0 - 307 51663 225 -0.00003 STAR 1 0 - 307 51663 226 0.33519 GALAXY 32 0 - 307 51663 227 0.17863 GALAXY 96 0 - 307 51663 228 -0.00038 STAR 1048580 0 - 307 51663 229 0.33636 GALAXY 32 0 - 307 51663 230 0.13824 GALAXY 2097216 0 - 307 51663 231 0.13924 GALAXY 64 0 - 307 51663 232 0.08106 GALAXY 64 0 - 307 51663 233 0.33682 GALAXY 32 0 - 307 51663 234 0.14051 GALAXY 64 0 - 307 51663 235 0.13789 GALAXY 64 0 - 307 51663 236 0.13543 GALAXY 96 0 - 307 51663 237 0.10654 GALAXY 64 0 - 307 51663 238 0.05698 GALAXY 64 0 - 307 51663 239 0.14134 GALAXY 64 0 - 307 51663 240 0.32521 GALAXY 32 0 - 307 51663 241 0.00000 UNKNOWN 0 16 - 307 51663 242 0.21638 GALAXY 64 0 - 307 51663 243 1.67558 QSO 1048580 0 - 307 51663 244 0.10630 GALAXY 64 0 - 307 51663 245 0.10631 GALAXY 64 0 - 307 51663 246 0.10639 GALAXY 64 0 - 307 51663 247 0.00044 STAR 8192 0 - 307 51663 248 0.10663 GALAXY 64 0 - 307 51663 249 0.00026 STAR 5 0 - 307 51663 250 0.10618 GALAXY 96 0 - 307 51663 251 0.13873 GALAXY 64 0 - 307 51663 252 0.15136 GALAXY 1 0 - 307 51663 253 -0.00012 STAR 8192 0 - 307 51663 254 0.07232 GALAXY 64 0 - 307 51663 255 0.21407 GALAXY 64 0 - 307 51663 256 0.10626 GALAXY 64 0 - 307 51663 257 0.00014 STAR 33554433 0 - 307 51663 258 1.27337 QSO 4 0 - 307 51663 259 0.10534 GALAXY 64 0 - 307 51663 260 0.00033 STAR 1056772 0 - 307 51663 261 0.10713 GALAXY 96 0 - 307 51663 262 -0.00034 STAR 1056768 0 - 307 51663 263 0.14192 GALAXY 96 0 - 307 51663 264 0.34089 GALAXY 32 0 - 307 51663 265 0.10587 GALAXY 64 0 - 307 51663 266 0.08417 GALAXY 64 0 - 307 51663 267 -0.00013 STAR 1056768 0 - 307 51663 268 0.05709 GALAXY 64 0 - 307 51663 269 0.10479 GALAXY 64 0 - 307 51663 270 0.15199 GALAXY 64 0 - 307 51663 271 0.10549 GALAXY 64 0 - 307 51663 272 0.37005 GALAXY 32 0 - 307 51663 273 1.51341 QSO 4 0 - 307 51663 274 0.00013 STAR 8192 0 - 307 51663 275 0.13966 GALAXY 64 0 - 307 51663 276 0.00035 STAR 32 0 - 307 51663 277 0.13721 GALAXY 64 0 - 307 51663 278 0.05613 GALAXY 64 0 - 307 51663 279 0.00000 UNKNOWN 0 16 - 307 51663 280 0.13238 GALAXY 64 0 - 307 51663 281 0.28629 GALAXY 96 0 - 307 51663 282 0.19464 GALAXY 64 0 - 307 51663 283 0.00016 STAR 1056768 0 - 307 51663 284 -0.00036 STAR 8192 0 - 307 51663 285 0.00000 UNKNOWN 0 16 - 307 51663 286 0.25715 GALAXY 32 0 - 307 51663 287 1.52647 QSO 1048580 0 - 307 51663 288 0.10523 GALAXY 64 0 - 307 51663 289 0.12219 GALAXY 64 0 - 307 51663 290 0.00020 STAR 4194304 0 - 307 51663 291 0.34775 GALAXY 32 0 - 307 51663 292 0.08991 GALAXY 64 0 - 307 51663 293 0.28359 GALAXY 32 0 - 307 51663 294 0.10653 GALAXY 64 0 - 307 51663 295 0.13793 GALAXY 64 0 - 307 51663 296 0.10629 GALAXY 64 0 - 307 51663 297 0.25568 GALAXY 32 0 - 307 51663 298 0.10572 GALAXY 64 0 - 307 51663 299 0.18114 GALAXY 64 0 - 307 51663 300 0.21595 GALAXY 96 0 - 307 51663 301 0.12287 GALAXY 64 0 - 307 51663 302 0.13737 GALAXY 64 0 - 307 51663 303 0.22210 GALAXY 32 0 - 307 51663 304 -0.00009 STAR 8192 0 - 307 51663 305 0.00002 STAR 1 0 - 307 51663 306 0.25502 GALAXY 96 0 - 307 51663 307 0.29061 GALAXY 4 0 - 307 51663 308 1.37786 QSO 1048580 0 - 307 51663 309 0.12367 GALAXY 64 0 - 307 51663 310 0.00025 STAR 8196 0 - 307 51663 311 0.22066 GALAXY 96 0 - 307 51663 312 0.10610 GALAXY 64 0 - 307 51663 313 0.00074 STAR 8192 0 - 307 51663 314 0.13017 GALAXY 64 0 - 307 51663 315 0.21985 GALAXY 96 0 - 307 51663 316 0.00007 UNKNOWN 1056772 0 - 307 51663 317 -0.00004 STAR 1056768 0 - 307 51663 318 0.00028 STAR 34611200 0 - 307 51663 319 2.23946 QSO 3145748 0 - 307 51663 320 0.00000 UNKNOWN 0 16 - 307 51663 321 0.11869 GALAXY 64 0 - 307 51663 322 0.33982 GALAXY 32 0 - 307 51663 323 0.13773 GALAXY 64 0 - 307 51663 324 0.13831 GALAXY 64 0 - 307 51663 325 0.11131 GALAXY 64 0 - 307 51663 326 0.10916 GALAXY 64 0 - 307 51663 327 0.35414 GALAXY 32 0 - 307 51663 328 0.12510 GALAXY 64 0 - 307 51663 329 0.01316 UNKNOWN 42991616 0 - 307 51663 330 0.11846 GALAXY 64 0 - 307 51663 331 0.00000 UNKNOWN 0 16 - 307 51663 332 0.00049 STAR 1056768 0 - 307 51663 333 0.12842 GALAXY 96 0 - 307 51663 334 0.48114 GALAXY 67108896 0 - 307 51663 335 0.42829 GALAXY 32 0 - 307 51663 336 -0.00014 STAR 1056768 0 - 307 51663 337 0.12686 GALAXY 64 0 - 307 51663 338 0.01421 GALAXY 96 0 - 307 51663 339 0.43302 GALAXY 67108896 0 - 307 51663 340 0.12909 GALAXY 64 0 - 307 51663 341 0.12933 GALAXY 64 0 - 307 51663 342 0.00000 UNKNOWN 0 16 - 307 51663 343 0.00024 STAR 1056768 0 - 307 51663 344 0.03176 GALAXY 64 0 - 307 51663 345 0.43150 GALAXY 32 0 - 307 51663 346 0.16184 GALAXY 64 0 - 307 51663 347 0.03148 GALAXY 64 0 - 307 51663 348 0.07867 GALAXY 64 0 - 307 51663 349 0.07958 GALAXY 64 0 - 307 51663 350 0.03028 GALAXY 67108896 0 - 307 51663 351 -0.00005 STAR 8192 0 - 307 51663 352 0.00000 MISSING 0 0 - 307 51663 353 0.12026 GALAXY 64 0 - 307 51663 354 0.00016 STAR 8192 0 - 307 51663 355 0.00027 STAR 0 2 - 307 51663 356 -0.00017 STAR 8192 0 - 307 51663 357 0.15513 GALAXY 64 0 - 307 51663 358 0.13352 GALAXY 64 0 - 307 51663 359 0.97979 QSO 1048580 0 - 307 51663 360 0.16162 GALAXY 64 0 - 307 51663 361 0.12401 GALAXY 64 0 - 307 51663 362 0.07812 GALAXY 64 0 - 307 51663 363 0.00000 UNKNOWN 0 16 - 307 51663 364 0.49037 GALAXY 67108896 0 - 307 51663 365 0.12848 GALAXY 64 0 - 307 51663 366 0.00080 STAR 8192 0 - 307 51663 367 -0.00003 STAR 0 32 - 307 51663 368 0.12597 QSO 1048580 0 - 307 51663 369 0.13758 GALAXY 96 0 - 307 51663 370 0.22269 GALAXY 96 0 - 307 51663 371 0.00002 STAR 8192 0 - 307 51663 372 0.38249 GALAXY 32 0 - 307 51663 373 0.10813 GALAXY 64 0 - 307 51663 374 0.15805 GALAXY 64 0 - 307 51663 375 0.13726 GALAXY 64 0 - 307 51663 376 0.05635 GALAXY 64 0 - 307 51663 377 0.07254 GALAXY 64 0 - 307 51663 378 2.16351 QSO 33554433 0 - 307 51663 379 0.12898 GALAXY 64 0 - 307 51663 380 0.12817 GALAXY 64 0 - 307 51663 381 0.10806 GALAXY 64 0 - 307 51663 382 0.00010 STAR 0 2 - 307 51663 383 0.17754 GALAXY 64 0 - 307 51663 384 0.16196 GALAXY 64 0 - 307 51663 385 0.05721 GALAXY 64 0 - 307 51663 386 0.00024 UNKNOWN 1 0 - 307 51663 387 0.07216 GALAXY 64 0 - 307 51663 388 0.21641 GALAXY 96 0 - 307 51663 389 0.00012 STAR 64 0 - 307 51663 390 0.10809 GALAXY 64 0 - 307 51663 391 0.00017 STAR 0 32 - 307 51663 392 1.30751 QSO 1048580 0 - 307 51663 393 1.47929 QSO 64 0 - 307 51663 394 0.00000 UNKNOWN 0 16 - 307 51663 395 0.12255 GALAXY 64 0 - 307 51663 396 0.27979 GALAXY 96 0 - 307 51663 397 0.00008 STAR 1 0 - 307 51663 398 0.43197 GALAXY 16777216 0 - 307 51663 399 0.17836 GALAXY 64 0 - 307 51663 400 0.08629 GALAXY 4 0 - 307 51663 401 0.00025 STAR 34603008 0 - 307 51663 402 0.03072 GALAXY 96 0 - 307 51663 403 0.12336 GALAXY 64 0 - 307 51663 404 0.08326 GALAXY 64 0 - 307 51663 405 0.07883 GALAXY 64 0 - 307 51663 406 0.00073 STAR 42991616 0 - 307 51663 407 0.00000 UNKNOWN 0 16 - 307 51663 408 0.07899 GALAXY 64 0 - 307 51663 409 0.07786 GALAXY 64 0 - 307 51663 410 0.34170 GALAXY 32 0 - 307 51663 411 0.07804 GALAXY 64 0 - 307 51663 412 0.07817 GALAXY 64 0 - 307 51663 413 0.07874 GALAXY 64 0 - 307 51663 414 0.13082 GALAXY 64 0 - 307 51663 415 0.40061 GALAXY 32 0 - 307 51663 416 0.12329 GALAXY 64 0 - 307 51663 417 0.12940 GALAXY 64 0 - 307 51663 418 0.41497 GALAXY 32 0 - 307 51663 419 0.00005 STAR 5 0 - 307 51663 420 0.03050 GALAXY 64 0 - 307 51663 421 0.13870 GALAXY 64 0 - 307 51663 422 0.33780 GALAXY 32 0 - 307 51663 423 0.00020 STAR 33554433 0 - 307 51663 424 0.00000 UNKNOWN 0 16 - 307 51663 425 0.07243 GALAXY 96 0 - 307 51663 426 0.10978 GALAXY 64 0 - 307 51663 427 0.10940 GALAXY 64 0 - 307 51663 428 0.28298 GALAXY 32 0 - 307 51663 429 0.00016 STAR 9437184 512 - 307 51663 430 0.32761 QSO 42991616 0 - 307 51663 431 0.08172 GALAXY 64 0 - 307 51663 432 0.13965 GALAXY 64 0 - 307 51663 433 0.10961 GALAXY 64 0 - 307 51663 434 0.02991 GALAXY 64 0 - 307 51663 435 0.05561 GALAXY 64 0 - 307 51663 436 0.58215 QSO 34603008 0 - 307 51663 437 0.03474 GALAXY 64 0 - 307 51663 438 0.19734 GALAXY 4 0 - 307 51663 439 -0.00007 STAR 4096 0 - 307 51663 440 0.10481 GALAXY 64 0 - 307 51663 441 0.12905 GALAXY 64 0 - 307 51663 442 0.13477 GALAXY 64 0 - 307 51663 443 0.15799 UNKNOWN 1048580 0 - 307 51663 444 0.15007 GALAXY 64 0 - 307 51663 445 1.84776 QSO 1048580 0 - 307 51663 446 0.22876 GALAXY 64 0 - 307 51663 447 0.12331 GALAXY 64 0 - 307 51663 448 0.03081 GALAXY 64 0 - 307 51663 449 0.27995 GALAXY 64 0 - 307 51663 450 0.25989 GALAXY 32 0 - 307 51663 451 0.19534 GALAXY 4 0 - 307 51663 452 0.00009 STAR 9437184 0 - 307 51663 453 0.31192 GALAXY 32 0 - 307 51663 454 0.31228 GALAXY 32 0 - 307 51663 455 0.08283 GALAXY 64 0 - 307 51663 456 0.08291 GALAXY 64 0 - 307 51663 457 0.12301 GALAXY 64 0 - 307 51663 458 0.12743 GALAXY 64 0 - 307 51663 459 0.00030 STAR 0 512 - 307 51663 460 0.00000 UNKNOWN 0 16 - 307 51663 461 0.00015 STAR 0 2 - 307 51663 462 0.00023 STAR 0 34 - 307 51663 463 0.03341 GALAXY 64 0 - 307 51663 464 1.96397 QSO 1048580 0 - 307 51663 465 0.00064 STAR 9445376 0 - 307 51663 466 0.30255 GALAXY 2097152 0 - 307 51663 467 1.26112 QSO 1048580 0 - 307 51663 468 -0.00022 STAR 64 0 - 307 51663 469 0.13025 GALAXY 4 0 - 307 51663 470 0.12088 GALAXY 4194304 0 - 307 51663 471 0.08210 GALAXY 64 0 - 307 51663 472 0.13870 GALAXY 64 0 - 307 51663 473 -0.00033 STAR 42991616 512 - 307 51663 474 0.10611 GALAXY 64 0 - 307 51663 475 0.00000 MISSING 0 0 - 307 51663 476 0.21078 GALAXY 68 0 - 307 51663 477 0.13456 GALAXY 64 0 - 307 51663 478 1.58206 QSO 1048580 0 - 307 51663 479 0.00000 UNKNOWN 0 16 - 307 51663 480 0.00035 STAR 8196 0 - 307 51663 481 0.14117 GALAXY 64 0 - 307 51663 482 0.00000 UNKNOWN 0 16 - 307 51663 483 0.10540 GALAXY 64 0 - 307 51663 484 0.15000 GALAXY 64 0 - 307 51663 485 0.15036 GALAXY 96 0 - 307 51663 486 0.08243 GALAXY 64 0 - 307 51663 487 0.03337 GALAXY 64 0 - 307 51663 488 0.03380 GALAXY 64 0 - 307 51663 489 0.15133 GALAXY 64 0 - 307 51663 490 0.19554 GALAXY 64 0 - 307 51663 491 0.33954 QSO 2097152 0 - 307 51663 492 0.14992 GALAXY 64 0 - 307 51663 493 1.40565 QSO 4 0 - 307 51663 494 0.14745 GALAXY 64 0 - 307 51663 495 0.13347 GALAXY 64 0 - 307 51663 496 0.10524 GALAXY 64 0 - 307 51663 497 0.13327 GALAXY 64 0 - 307 51663 498 0.05158 GALAXY 64 0 - 307 51663 499 0.15034 GALAXY 64 0 - 307 51663 500 0.15019 GALAXY 64 0 - 307 51663 501 0.13785 GALAXY 64 0 - 307 51663 502 0.14996 GALAXY 64 0 - 307 51663 503 0.27986 GALAXY 96 0 - 307 51663 504 0.11470 GALAXY 64 0 - 307 51663 505 -0.00066 STAR 1056772 0 - 307 51663 506 0.11637 GALAXY 96 0 - 307 51663 507 0.19752 GALAXY 64 0 - 307 51663 508 0.11670 GALAXY 64 0 - 307 51663 509 0.08273 GALAXY 64 0 - 307 51663 510 0.00000 UNKNOWN 0 16 - 307 51663 511 1.50194 QSO 2097168 0 - 307 51663 512 0.25611 GALAXY 96 0 - 307 51663 513 0.13275 GALAXY 64 0 - 307 51663 514 0.30180 GALAXY 32 0 - 307 51663 515 0.00551 GALAXY 64 0 - 307 51663 516 0.16376 GALAXY 64 0 - 307 51663 517 0.14023 GALAXY 64 0 - 307 51663 518 0.20312 GALAXY 64 0 - 307 51663 519 0.16387 GALAXY 64 0 - 307 51663 520 -0.00012 STAR 1 0 - 307 51663 521 0.13462 GALAXY 64 0 - 307 51663 522 0.00000 UNKNOWN 0 16 - 307 51663 523 0.11589 GALAXY 64 0 - 307 51663 524 0.31492 GALAXY 32 0 - 307 51663 525 0.13272 GALAXY 64 0 - 307 51663 526 0.34288 GALAXY 32 0 - 307 51663 527 0.14778 GALAXY 64 0 - 307 51663 528 0.28001 GALAXY 32 0 - 307 51663 529 0.00056 STAR 8192 0 - 307 51663 530 0.00071 STAR 9445376 0 - 307 51663 531 0.34377 GALAXY 32 0 - 307 51663 532 0.08262 GALAXY 64 0 - 307 51663 533 0.25962 GALAXY 32 0 - 307 51663 534 0.27737 GALAXY 2097152 0 - 307 51663 535 0.08238 GALAXY 64 0 - 307 51663 536 0.03445 GALAXY 64 0 - 307 51663 537 0.00033 STAR 0 512 - 307 51663 538 0.25890 GALAXY 4 0 - 307 51663 539 0.08277 GALAXY 96 0 - 307 51663 540 0.31294 GALAXY 32 0 - 307 51663 541 0.03730 GALAXY 64 0 - 307 51663 542 0.16597 GALAXY 64 0 - 307 51663 543 0.14838 GALAXY 64 0 - 307 51663 544 0.05023 GALAXY 64 0 - 307 51663 545 0.48443 QSO 34603008 0 - 307 51663 546 0.00000 UNKNOWN 0 16 - 307 51663 547 0.00029 STAR 42991616 0 - 307 51663 548 0.11030 GALAXY 64 0 - 307 51663 549 0.56390 GALAXY 4 0 - 307 51663 550 0.10891 GALAXY 64 0 - 307 51663 551 0.16385 GALAXY 64 0 - 307 51663 552 0.17966 GALAXY 96 0 - 307 51663 553 0.00616 GALAXY 64 0 - 307 51663 554 0.64197 QSO 1 0 - 307 51663 555 0.40114 GALAXY 32 0 - 307 51663 556 0.00023 STAR 1048580 0 - 307 51663 557 0.08562 GALAXY 64 0 - 307 51663 558 0.10907 GALAXY 64 0 - 307 51663 559 0.34577 GALAXY 32 0 - 307 51663 560 0.00043 STAR 4194304 0 - 307 51663 561 0.00016 STAR 0 32 - 307 51663 562 0.00028 STAR 1048576 512 - 307 51663 563 0.00028 STAR 4194304 0 - 307 51663 564 0.00015 STAR 64 0 - 307 51663 565 0.07835 GALAXY 64 0 - 307 51663 566 0.13214 GALAXY 64 0 - 307 51663 567 0.13007 GALAXY 64 0 - 307 51663 568 0.00007 UNKNOWN 64 0 - 307 51663 569 0.07779 GALAXY 64 0 - 307 51663 570 0.34331 GALAXY 32 0 - 307 51663 571 0.00034 STAR 64 0 - 307 51663 572 0.15025 GALAXY 64 0 - 307 51663 573 0.11602 GALAXY 64 0 - 307 51663 574 0.25928 GALAXY 96 0 - 307 51663 575 2.13926 QSO 1048580 0 - 307 51663 576 0.11566 GALAXY 64 0 - 307 51663 577 0.03443 GALAXY 64 0 - 307 51663 578 0.08242 GALAXY 64 0 - 307 51663 579 0.11683 GALAXY 64 0 - 307 51663 580 0.00000 UNKNOWN 0 16 - 307 51663 581 0.14994 GALAXY 64 0 - 307 51663 582 0.10934 GALAXY 64 0 - 307 51663 583 0.17089 GALAXY 96 0 - 307 51663 584 0.00000 UNKNOWN 0 16 - 307 51663 585 0.10266 GALAXY 64 0 - 307 51663 586 0.00014 STAR 4 0 - 307 51663 587 0.10381 GALAXY 64 0 - 307 51663 588 1.57797 QSO 4 0 - 307 51663 589 0.17859 GALAXY 64 0 - 307 51663 590 0.10889 GALAXY 64 0 - 307 51663 591 0.10240 GALAXY 64 0 - 307 51663 592 0.17675 GALAXY 96 0 - 307 51663 593 0.10342 GALAXY 64 0 - 307 51663 594 0.00093 STAR 1056772 0 - 307 51663 595 0.00016 STAR 42991616 0 - 307 51663 596 0.24096 GALAXY 2097152 0 - 307 51663 597 0.32142 GALAXY 32 0 - 307 51663 598 0.10389 GALAXY 64 0 - 307 51663 599 0.17867 GALAXY 96 0 - 307 51663 600 0.00643 GALAXY 64 0 - 307 51663 601 0.62626 GALAXY 2097153 0 - 307 51663 602 0.03396 GALAXY 96 0 - 307 51663 603 0.04956 GALAXY 64 0 - 307 51663 604 0.00015 STAR 32 0 - 307 51663 605 0.00000 MISSING 0 0 - 307 51663 606 0.37337 GALAXY 32 0 - 307 51663 607 0.04969 GALAXY 96 0 - 307 51663 608 0.03365 GALAXY 96 0 - 307 51663 609 0.00000 UNKNOWN 0 16 - 307 51663 610 0.03341 GALAXY 96 0 - 307 51663 611 0.15027 GALAXY 64 0 - 307 51663 612 0.00020 STAR 34611200 0 - 307 51663 613 0.03355 GALAXY 64 0 - 307 51663 614 0.17667 GALAXY 64 0 - 307 51663 615 0.24266 GALAXY 4 0 - 307 51663 616 0.17995 GALAXY 64 0 - 307 51663 617 0.60367 QSO 4 0 - 307 51663 618 0.00004 STAR 0 2 - 307 51663 619 0.00128 STAR 4 0 - 307 51663 620 0.35897 GALAXY 32 0 - 307 51663 621 0.02855 GALAXY 64 0 - 307 51663 622 0.30537 GALAXY 32 0 - 307 51663 623 0.10324 GALAXY 64 0 - 307 51663 624 0.10126 GALAXY 64 0 - 307 51663 625 0.34437 GALAXY 32 0 - 307 51663 626 0.00022 STAR 0 2 - 307 51663 627 0.00022 STAR 0 2 - 307 51663 628 0.29487 GALAXY 32 0 - 307 51663 629 0.33052 GALAXY 32 0 - 307 51663 630 0.17811 GALAXY 64 0 - 307 51663 631 0.00010 STAR 1179652 512 - 307 51663 632 0.14884 GALAXY 64 0 - 307 51663 633 0.00011 STAR 0 2 - 307 51663 634 0.13866 GALAXY 64 0 - 307 51663 635 0.02913 GALAXY 96 0 - 307 51663 636 0.30347 GALAXY 32 0 - 307 51663 637 0.03397 GALAXY 64 0 - 307 51663 638 0.00000 UNKNOWN 0 16 - 307 51663 639 0.07338 GALAXY 64 0 - 307 51663 640 0.63071 QSO 4 0 - 308 51662 1 1.44499 QSO 64 0 - 308 51662 2 0.04278 GALAXY 64 0 - 308 51662 3 0.04323 GALAXY 64 0 - 308 51662 4 -0.00011 STAR 1 0 - 308 51662 5 -0.00027 STAR 1056768 0 - 308 51662 6 1.61337 QSO 1048580 0 - 308 51662 7 0.11955 GALAXY 64 0 - 308 51662 8 0.11946 GALAXY 96 0 - 308 51662 9 0.11872 GALAXY 64 0 - 308 51662 10 0.00000 UNKNOWN 0 16 - 308 51662 11 0.08313 GALAXY 64 0 - 308 51662 12 0.32303 GALAXY 32 0 - 308 51662 13 0.02661 GALAXY 96 0 - 308 51662 14 1.71368 QSO 34603008 0 - 308 51662 15 0.08330 GALAXY 64 0 - 308 51662 16 0.50931 GALAXY 67108896 0 - 308 51662 17 1.71414 QSO 34603008 0 - 308 51662 18 0.21731 GALAXY 96 0 - 308 51662 19 0.13338 UNKNOWN 9437188 0 - 308 51662 20 0.02686 GALAXY 64 0 - 308 51662 21 0.13939 GALAXY 64 0 - 308 51662 22 0.04337 GALAXY 96 0 - 308 51662 23 0.08334 GALAXY 64 0 - 308 51662 24 0.57096 UNKNOWN 33554433 0 - 308 51662 25 0.04350 GALAXY 33554496 0 - 308 51662 26 0.43525 GALAXY 32 0 - 308 51662 27 0.04310 GALAXY 64 0 - 308 51662 28 -0.00032 STAR 8192 0 - 308 51662 29 -0.00015 STAR 5 0 - 308 51662 30 0.08426 UNKNOWN 35651584 0 - 308 51662 31 0.00000 MISSING 0 0 - 308 51662 32 0.04355 GALAXY 64 0 - 308 51662 33 0.31602 GALAXY 32 0 - 308 51662 34 0.04454 GALAXY 64 0 - 308 51662 35 0.17138 GALAXY 64 0 - 308 51662 36 0.04318 GALAXY 96 0 - 308 51662 37 0.00000 UNKNOWN 0 16 - 308 51662 38 0.00007 STAR 5 0 - 308 51662 39 0.04615 GALAXY 64 0 - 308 51662 40 0.09976 GALAXY 64 0 - 308 51662 41 0.14963 GALAXY 64 0 - 308 51662 42 0.14399 GALAXY 64 0 - 308 51662 43 0.25240 GALAXY 1048596 0 - 308 51662 44 0.00000 UNKNOWN 0 16 - 308 51662 45 0.47357 GALAXY 67108896 0 - 308 51662 46 0.04340 GALAXY 64 0 - 308 51662 47 0.11924 GALAXY 64 0 - 308 51662 48 0.21883 GALAXY 4 0 - 308 51662 49 0.04314 GALAXY 96 0 - 308 51662 50 -0.00024 STAR 1056772 0 - 308 51662 51 0.00027 STAR 0 34 - 308 51662 52 0.00100 STAR 42991616 0 - 308 51662 53 0.14250 GALAXY 64 0 - 308 51662 54 0.00009 STAR 42991616 0 - 308 51662 55 0.14695 GALAXY 64 0 - 308 51662 56 0.02761 GALAXY 64 0 - 308 51662 57 0.31280 GALAXY 32 0 - 308 51662 58 0.81908 QSO 42991616 0 - 308 51662 59 0.08221 GALAXY 64 0 - 308 51662 60 0.04346 GALAXY 64 0 - 308 51662 61 0.02671 GALAXY 64 0 - 308 51662 62 0.00000 UNKNOWN 0 16 - 308 51662 63 0.09967 GALAXY 4 0 - 308 51662 64 0.07905 GALAXY 64 0 - 308 51662 65 -0.00015 STAR 64 0 - 308 51662 66 0.11060 GALAXY 64 0 - 308 51662 67 0.14630 GALAXY 96 0 - 308 51662 68 0.11070 GALAXY 64 0 - 308 51662 69 0.04214 GALAXY 64 0 - 308 51662 70 2.06097 QSO 1048580 0 - 308 51662 71 0.04263 GALAXY 96 0 - 308 51662 72 0.13997 GALAXY 64 0 - 308 51662 73 0.37698 QSO 16 0 - 308 51662 74 0.07946 GALAXY 64 0 - 308 51662 75 1.56876 QSO 34603008 0 - 308 51662 76 0.04335 GALAXY 64 0 - 308 51662 77 0.00050 STAR 8196 0 - 308 51662 78 0.04318 GALAXY 96 0 - 308 51662 79 0.04319 GALAXY 64 0 - 308 51662 80 -0.00035 STAR 0 32 - 308 51662 81 0.02737 GALAXY 64 0 - 308 51662 82 0.55697 UNKNOWN 2097152 0 - 308 51662 83 0.00034 STAR 4 0 - 308 51662 84 0.14905 GALAXY 64 0 - 308 51662 85 2.06972 QSO 4 0 - 308 51662 86 0.14777 GALAXY 64 0 - 308 51662 87 0.14714 GALAXY 96 0 - 308 51662 88 0.10853 GALAXY 64 0 - 308 51662 89 0.14655 GALAXY 64 0 - 308 51662 90 0.15002 GALAXY 64 0 - 308 51662 91 0.00035 STAR 34603008 0 - 308 51662 92 0.14546 GALAXY 4 0 - 308 51662 93 0.00046 STAR 1056768 0 - 308 51662 94 0.03439 GALAXY 64 0 - 308 51662 95 0.00000 UNKNOWN 0 16 - 308 51662 96 0.14415 GALAXY 64 0 - 308 51662 97 0.14300 GALAXY 64 0 - 308 51662 98 0.52558 GALAXY 67108896 0 - 308 51662 99 0.14412 GALAXY 64 0 - 308 51662 100 3.78888 QSO 1 0 - 308 51662 101 0.32749 QSO 32 0 - 308 51662 102 0.04065 GALAXY 64 0 - 308 51662 103 0.25136 GALAXY 96 0 - 308 51662 104 0.02743 GALAXY 64 0 - 308 51662 105 0.00000 UNKNOWN 0 16 - 308 51662 106 0.04094 GALAXY 64 0 - 308 51662 107 0.02631 GALAXY 64 0 - 308 51662 108 0.25179 GALAXY 96 0 - 308 51662 109 0.00082 STAR 4 0 - 308 51662 110 0.14047 GALAXY 64 0 - 308 51662 111 0.04300 GALAXY 96 0 - 308 51662 112 0.04275 GALAXY 64 0 - 308 51662 113 -0.00002 STAR 1056772 0 - 308 51662 114 0.04325 GALAXY 64 0 - 308 51662 115 0.13836 GALAXY 68 0 - 308 51662 116 0.04346 GALAXY 64 0 - 308 51662 117 0.11221 GALAXY 64 0 - 308 51662 118 0.04385 GALAXY 64 0 - 308 51662 119 0.04447 GALAXY 64 0 - 308 51662 120 0.25210 GALAXY 96 0 - 308 51662 121 0.21261 GALAXY 64 0 - 308 51662 122 0.04955 GALAXY 64 0 - 308 51662 123 0.14506 GALAXY 96 0 - 308 51662 124 0.14851 GALAXY 64 0 - 308 51662 125 0.14395 GALAXY 64 0 - 308 51662 126 0.08302 GALAXY 64 0 - 308 51662 127 4.16248 QSO 1 0 - 308 51662 128 0.14296 GALAXY 64 0 - 308 51662 129 0.10984 GALAXY 64 0 - 308 51662 130 0.02894 GALAXY 4 0 - 308 51662 131 1.79680 QSO 20 0 - 308 51662 132 0.07670 GALAXY 64 0 - 308 51662 133 0.04142 GALAXY 64 0 - 308 51662 134 -0.00035 STAR 0 34 - 308 51662 135 0.17684 GALAXY 64 0 - 308 51662 136 0.13191 GALAXY 64 0 - 308 51662 137 0.14854 GALAXY 64 0 - 308 51662 138 0.35018 GALAXY 32 0 - 308 51662 139 0.13777 GALAXY 64 0 - 308 51662 140 0.00000 UNKNOWN 0 16 - 308 51662 141 0.31915 QSO 7172 0 - 308 51662 142 0.14162 GALAXY 64 0 - 308 51662 143 0.04242 GALAXY 96 0 - 308 51662 144 0.04284 GALAXY 64 0 - 308 51662 145 0.00000 UNKNOWN 1048580 0 - 308 51662 146 0.02743 GALAXY 64 0 - 308 51662 147 -0.00020 STAR 0 2 - 308 51662 148 -0.00012 STAR 0 2 - 308 51662 149 0.00003 STAR 1056768 0 - 308 51662 150 1.47718 QSO 64 0 - 308 51662 151 0.05618 GALAXY 64 0 - 308 51662 152 0.00000 UNKNOWN 0 16 - 308 51662 153 0.08285 GALAXY 64 0 - 308 51662 154 0.04287 GALAXY 64 0 - 308 51662 155 0.02804 GALAXY 64 0 - 308 51662 156 0.21402 GALAXY 64 0 - 308 51662 157 0.13068 GALAXY 64 0 - 308 51662 158 0.00018 STAR 8192 0 - 308 51662 159 0.13009 GALAXY 64 0 - 308 51662 160 0.07525 GALAXY 64 0 - 308 51662 161 0.08001 GALAXY 64 0 - 308 51662 162 0.20974 GALAXY 64 0 - 308 51662 163 -0.00033 STAR 42991616 0 - 308 51662 164 0.13837 GALAXY 64 0 - 308 51662 165 0.21708 GALAXY 1048580 0 - 308 51662 166 0.05647 GALAXY 64 0 - 308 51662 167 0.14183 GALAXY 64 0 - 308 51662 168 0.03433 GALAXY 96 0 - 308 51662 169 0.34990 GALAXY 2097152 0 - 308 51662 170 1.24192 QSO 1048580 0 - 308 51662 171 0.12366 GALAXY 64 0 - 308 51662 172 -0.00006 STAR 34611200 0 - 308 51662 173 0.08419 GALAXY 64 0 - 308 51662 174 0.34647 UNKNOWN 32 0 - 308 51662 175 0.04245 GALAXY 4 0 - 308 51662 176 -0.00029 STAR 1 0 - 308 51662 177 0.04252 GALAXY 64 0 - 308 51662 178 0.17504 GALAXY 96 0 - 308 51662 179 0.00000 UNKNOWN 0 16 - 308 51662 180 0.21058 GALAXY 96 0 - 308 51662 181 0.69917 QSO 1048580 0 - 308 51662 182 0.28742 GALAXY 96 0 - 308 51662 183 -0.00005 STAR 0 34 - 308 51662 184 0.05657 GALAXY 64 0 - 308 51662 185 2.77145 QSO 1 0 - 308 51662 186 1.07714 GALAXY 4194304 0 - 308 51662 187 0.00000 UNKNOWN 0 16 - 308 51662 188 0.20511 GALAXY 64 0 - 308 51662 189 0.04163 GALAXY 96 0 - 308 51662 190 1.25416 QSO 1048580 0 - 308 51662 191 0.00554 GALAXY 96 0 - 308 51662 192 1.77465 QSO 1048580 512 - 308 51662 193 0.30909 GALAXY 32 0 - 308 51662 194 0.53579 GALAXY 2097152 0 - 308 51662 195 0.00029 STAR 42991616 0 - 308 51662 196 0.07999 GALAXY 64 0 - 308 51662 197 0.34192 GALAXY 32 0 - 308 51662 198 0.08266 GALAXY 64 0 - 308 51662 199 -0.00041 STAR 1056768 0 - 308 51662 200 0.34231 GALAXY 32 0 - 308 51662 201 0.39243 GALAXY 32 0 - 308 51662 202 0.04336 GALAXY 64 0 - 308 51662 203 0.34828 GALAXY 32 0 - 308 51662 204 0.13088 GALAXY 64 0 - 308 51662 205 0.14694 GALAXY 64 0 - 308 51662 206 0.04166 GALAXY 64 0 - 308 51662 207 1.59166 QSO 36700160 0 - 308 51662 208 0.14773 GALAXY 64 0 - 308 51662 209 0.39120 GALAXY 32 0 - 308 51662 210 0.13185 GALAXY 64 0 - 308 51662 211 0.14539 GALAXY 64 0 - 308 51662 212 0.14880 GALAXY 64 0 - 308 51662 213 0.39939 GALAXY 32 0 - 308 51662 214 0.10313 GALAXY 64 0 - 308 51662 215 0.00000 UNKNOWN 0 16 - 308 51662 216 0.18690 GALAXY 64 0 - 308 51662 217 0.10294 GALAXY 64 0 - 308 51662 218 0.14753 GALAXY 64 0 - 308 51662 219 0.14473 GALAXY 64 0 - 308 51662 220 0.04143 GALAXY 96 0 - 308 51662 221 0.05753 GALAXY 64 0 - 308 51662 222 -0.00021 STAR 1056768 0 - 308 51662 223 0.13129 GALAXY 96 0 - 308 51662 224 1.63007 QSO 1048580 0 - 308 51662 225 0.14895 GALAXY 64 0 - 308 51662 226 0.14628 GALAXY 96 0 - 308 51662 227 0.30554 GALAXY 32 0 - 308 51662 228 0.05741 GALAXY 64 0 - 308 51662 229 0.10234 GALAXY 64 0 - 308 51662 230 0.19415 GALAXY 64 0 - 308 51662 231 0.26235 GALAXY 32 0 - 308 51662 232 0.37583 GALAXY 32 0 - 308 51662 233 0.48182 UNKNOWN 2097152 0 - 308 51662 234 0.03989 GALAXY 64 0 - 308 51662 235 0.34768 GALAXY 32 0 - 308 51662 236 0.00000 UNKNOWN 0 16 - 308 51662 237 0.29156 GALAXY 32 0 - 308 51662 238 0.10243 GALAXY 64 0 - 308 51662 239 0.00549 GALAXY 64 0 - 308 51662 240 -0.00019 STAR 4 0 - 308 51662 241 0.14957 GALAXY 64 0 - 308 51662 242 0.14799 GALAXY 64 0 - 308 51662 243 0.14345 GALAXY 64 0 - 308 51662 244 0.37731 GALAXY 32 0 - 308 51662 245 0.00000 UNKNOWN 0 16 - 308 51662 246 0.44721 GALAXY 67108896 0 - 308 51662 247 0.00000 MISSING 0 0 - 308 51662 248 0.04160 GALAXY 64 0 - 308 51662 249 0.14869 GALAXY 64 0 - 308 51662 250 0.13572 GALAXY 64 0 - 308 51662 251 0.14712 GALAXY 64 0 - 308 51662 252 0.34431 GALAXY 32 0 - 308 51662 253 0.11005 GALAXY 64 0 - 308 51662 254 0.37400 GALAXY 32 0 - 308 51662 255 -0.00039 STAR 1056768 0 - 308 51662 256 0.00029 STAR 8388608 0 - 308 51662 257 0.14442 GALAXY 64 0 - 308 51662 258 0.18101 GALAXY 64 0 - 308 51662 259 0.56307 QSO 1048580 0 - 308 51662 260 0.00004 STAR 1 0 - 308 51662 261 1.37262 QSO 36700160 0 - 308 51662 262 0.14664 GALAXY 64 0 - 308 51662 263 0.15207 GALAXY 64 0 - 308 51662 264 0.15026 GALAXY 64 0 - 308 51662 265 0.14400 GALAXY 64 0 - 308 51662 266 0.14404 GALAXY 64 0 - 308 51662 267 0.14705 GALAXY 64 0 - 308 51662 268 0.04509 GALAXY 64 0 - 308 51662 269 0.14285 GALAXY 64 0 - 308 51662 270 0.00000 UNKNOWN 0 16 - 308 51662 271 0.14403 GALAXY 64 0 - 308 51662 272 0.10892 GALAXY 64 0 - 308 51662 273 0.14994 GALAXY 96 0 - 308 51662 274 0.00578 GALAXY 33554496 0 - 308 51662 275 0.28203 GALAXY 42991616 0 - 308 51662 276 0.14167 GALAXY 64 0 - 308 51662 277 0.14279 GALAXY 64 0 - 308 51662 278 0.17967 GALAXY 64 0 - 308 51662 279 1.81407 QSO 4 0 - 308 51662 280 0.14851 GALAXY 64 0 - 308 51662 281 0.04436 GALAXY 64 0 - 308 51662 282 1.06789 QSO 1048580 0 - 308 51662 283 0.21708 GALAXY 64 0 - 308 51662 284 0.14744 GALAXY 64 0 - 308 51662 285 0.30602 GALAXY 32 0 - 308 51662 286 0.10839 GALAXY 64 0 - 308 51662 287 0.14954 GALAXY 64 0 - 308 51662 288 0.14896 GALAXY 64 0 - 308 51662 289 0.14963 GALAXY 64 0 - 308 51662 290 0.14432 GALAXY 64 0 - 308 51662 291 0.04979 GALAXY 64 0 - 308 51662 292 0.08240 GALAXY 68 0 - 308 51662 293 0.00000 UNKNOWN 0 16 - 308 51662 294 0.00018 STAR 9437184 0 - 308 51662 295 0.14924 GALAXY 64 0 - 308 51662 296 0.29126 GALAXY 4 0 - 308 51662 297 1.72767 QSO 34603008 0 - 308 51662 298 1.93211 QSO 1048580 0 - 308 51662 299 0.00017 STAR 0 2 - 308 51662 300 0.10765 GALAXY 68 0 - 308 51662 301 0.37024 GALAXY 32 0 - 308 51662 302 0.07990 GALAXY 64 0 - 308 51662 303 0.10899 GALAXY 64 0 - 308 51662 304 0.00039 STAR 8192 0 - 308 51662 305 -0.00023 STAR 4194304 0 - 308 51662 306 0.14752 GALAXY 64 0 - 308 51662 307 -0.00009 STAR 9437184 512 - 308 51662 308 0.00000 UNKNOWN 0 16 - 308 51662 309 0.11851 GALAXY 64 0 - 308 51662 310 0.14001 GALAXY 64 0 - 308 51662 311 0.14633 GALAXY 64 0 - 308 51662 312 0.19890 GALAXY 64 0 - 308 51662 313 0.14188 GALAXY 96 0 - 308 51662 314 0.00539 GALAXY 64 0 - 308 51662 315 0.17886 GALAXY 64 0 - 308 51662 316 0.13931 GALAXY 64 0 - 308 51662 317 0.20453 GALAXY 64 0 - 308 51662 318 0.00022 STAR 4 0 - 308 51662 319 0.40067 GALAXY 32 0 - 308 51662 320 -0.00021 STAR 1 0 - 308 51662 321 -0.00017 STAR 0 34 - 308 51662 322 -0.00062 STAR 1056772 0 - 308 51662 323 0.34875 GALAXY 32 0 - 308 51662 324 0.04940 GALAXY 64 0 - 308 51662 325 0.04977 GALAXY 64 0 - 308 51662 326 0.00617 GALAXY 33554496 0 - 308 51662 327 0.10891 GALAXY 64 0 - 308 51662 328 -0.00005 STAR 96 0 - 308 51662 329 0.13755 GALAXY 64 0 - 308 51662 330 -0.00006 STAR 524288 0 - 308 51662 331 0.62396 UNKNOWN 35651584 0 - 308 51662 332 1.17334 QSO 4 0 - 308 51662 333 0.00001 STAR 1 0 - 308 51662 334 -0.00017 STAR 8388608 0 - 308 51662 335 0.00007 STAR 34611200 0 - 308 51662 336 0.03352 GALAXY 96 0 - 308 51662 337 0.15755 GALAXY 64 0 - 308 51662 338 0.05038 GALAXY 64 0 - 308 51662 339 0.00000 UNKNOWN 0 16 - 308 51662 340 1.03306 QSO 35127296 0 - 308 51662 341 0.29550 GALAXY 2097152 0 - 308 51662 342 0.14844 GALAXY 64 0 - 308 51662 343 -0.00036 STAR 8192 0 - 308 51662 344 1.84298 QSO 34603008 0 - 308 51662 345 0.00003 STAR 0 512 - 308 51662 346 0.34672 GALAXY 32 0 - 308 51662 347 -0.00030 STAR 8192 0 - 308 51662 348 0.71012 QSO 1048580 0 - 308 51662 349 0.14984 GALAXY 96 0 - 308 51662 350 0.00000 UNKNOWN 0 16 - 308 51662 351 -0.00001 STAR 5 0 - 308 51662 352 0.34505 GALAXY 32 0 - 308 51662 353 0.00039 STAR 34603008 0 - 308 51662 354 0.15141 GALAXY 64 0 - 308 51662 355 0.19498 GALAXY 64 0 - 308 51662 356 0.00001 STAR 1056768 0 - 308 51662 357 0.00003 STAR 9437184 0 - 308 51662 358 0.36362 GALAXY 32 0 - 308 51662 359 0.00029 STAR 0 2 - 308 51662 360 0.44879 GALAXY 67108896 0 - 308 51662 361 0.00082 STAR 1056768 0 - 308 51662 362 0.02798 GALAXY 64 0 - 308 51662 363 0.10236 GALAXY 4 0 - 308 51662 364 0.00015 STAR 8192 0 - 308 51662 365 0.22164 GALAXY 2097216 0 - 308 51662 366 -0.00035 STAR 4 0 - 308 51662 367 0.04930 GALAXY 64 0 - 308 51662 368 0.57045 QSO 34603008 0 - 308 51662 369 0.00047 STAR 8192 0 - 308 51662 370 0.32838 QSO 1 0 - 308 51662 371 0.13041 GALAXY 64 0 - 308 51662 372 0.02600 GALAXY 64 0 - 308 51662 373 1.40774 QSO 64 0 - 308 51662 374 1.08728 QSO 4 0 - 308 51662 375 -0.00006 STAR 9437184 0 - 308 51662 376 0.00017 STAR 4194304 0 - 308 51662 377 0.14892 GALAXY 64 0 - 308 51662 378 0.00000 UNKNOWN 0 16 - 308 51662 379 0.10212 GALAXY 64 0 - 308 51662 380 1.33985 QSO 1048580 0 - 308 51662 381 0.07348 GALAXY 64 0 - 308 51662 382 0.00016 STAR 4194304 0 - 308 51662 383 0.02829 GALAXY 64 0 - 308 51662 384 0.14128 GALAXY 64 0 - 308 51662 385 0.20750 GALAXY 64 0 - 308 51662 386 0.29146 GALAXY 32 0 - 308 51662 387 0.02820 GALAXY 64 0 - 308 51662 388 0.17645 GALAXY 64 0 - 308 51662 389 0.37119 GALAXY 32 0 - 308 51662 390 0.00000 UNKNOWN 0 16 - 308 51662 391 0.17698 GALAXY 64 0 - 308 51662 392 0.17909 GALAXY 64 0 - 308 51662 393 0.32996 QSO 2097152 0 - 308 51662 394 -0.00016 STAR 8192 0 - 308 51662 395 0.03413 GALAXY 33554496 0 - 308 51662 396 0.19808 GALAXY 64 0 - 308 51662 397 -0.00020 STAR 1056772 0 - 308 51662 398 -0.00018 STAR 2097168 0 - 308 51662 399 1.70354 QSO 34603008 0 - 308 51662 400 0.48967 GALAXY 67108896 0 - 308 51662 401 0.20944 GALAXY 64 0 - 308 51662 402 0.08282 GALAXY 64 0 - 308 51662 403 0.07320 GALAXY 68 0 - 308 51662 404 0.14411 GALAXY 4 0 - 308 51662 405 0.03540 GALAXY 64 0 - 308 51662 406 0.00057 STAR 4 0 - 308 51662 407 0.07052 GALAXY 64 0 - 308 51662 408 0.00000 UNKNOWN 0 16 - 308 51662 409 0.73166 QSO 1048580 0 - 308 51662 410 -0.00018 STAR 0 2 - 308 51662 411 0.28239 GALAXY 4096 0 - 308 51662 412 0.20588 GALAXY 35127296 0 - 308 51662 413 -0.00037 STAR 4 0 - 308 51662 414 1.73845 QSO 2097152 0 - 308 51662 415 0.41340 UNKNOWN 32 0 - 308 51662 416 -0.00019 STAR 1056768 0 - 308 51662 417 0.16861 GALAXY 64 0 - 308 51662 418 0.00006 STAR 9437184 0 - 308 51662 419 0.29593 GALAXY 32 0 - 308 51662 420 0.05819 GALAXY 64 0 - 308 51662 421 0.29446 GALAXY 32 0 - 308 51662 422 0.29666 GALAXY 96 0 - 308 51662 423 0.03691 GALAXY 64 0 - 308 51662 424 0.26186 GALAXY 1048580 0 - 308 51662 425 0.03371 GALAXY 64 0 - 308 51662 426 -0.00041 STAR 8192 0 - 308 51662 427 0.00017 STAR 1048580 0 - 308 51662 428 0.16901 GALAXY 96 0 - 308 51662 429 0.20611 UNKNOWN 2097152 0 - 308 51662 430 0.03107 UNKNOWN 3145748 0 - 308 51662 431 0.15645 GALAXY 64 0 - 308 51662 432 0.02897 GALAXY 96 0 - 308 51662 433 -0.00009 STAR 1 0 - 308 51662 434 0.00005 STAR 8192 0 - 308 51662 435 0.00000 UNKNOWN 0 16 - 308 51662 436 0.00003 STAR 4 0 - 308 51662 437 0.00007 STAR 0 2 - 308 51662 438 0.19793 GALAXY 64 0 - 308 51662 439 0.00006 STAR 0 34 - 308 51662 440 0.00058 STAR 1056768 0 - 308 51662 441 0.02876 GALAXY 64 0 - 308 51662 442 0.17116 GALAXY 64 0 - 308 51662 443 0.04951 GALAXY 64 0 - 308 51662 444 -0.00008 STAR 16 0 - 308 51662 445 2.08712 QSO 2097152 0 - 308 51662 446 0.00011 STAR 4 0 - 308 51662 447 -0.00075 STAR 1056768 0 - 308 51662 448 0.00012 STAR 1056768 0 - 308 51662 449 0.17112 GALAXY 64 0 - 308 51662 450 0.09558 GALAXY 64 0 - 308 51662 451 0.16957 GALAXY 64 0 - 308 51662 452 1.05126 QSO 4 0 - 308 51662 453 0.00000 UNKNOWN 0 16 - 308 51662 454 0.07347 GALAXY 96 0 - 308 51662 455 0.29220 QSO 20 0 - 308 51662 456 0.13706 GALAXY 64 0 - 308 51662 457 -0.00015 STAR 0 2 - 308 51662 458 0.17244 GALAXY 64 0 - 308 51662 459 0.00003 STAR 64 0 - 308 51662 460 0.11846 GALAXY 64 0 - 308 51662 461 0.34311 GALAXY 32 0 - 308 51662 462 -0.00025 STAR 1056768 0 - 308 51662 463 0.11809 GALAXY 64 0 - 308 51662 464 0.17652 GALAXY 64 0 - 308 51662 465 0.02872 GALAXY 64 0 - 308 51662 466 0.34451 GALAXY 32 0 - 308 51662 467 0.17336 GALAXY 64 0 - 308 51662 468 0.10953 GALAXY 64 0 - 308 51662 469 0.10977 GALAXY 64 0 - 308 51662 470 0.17123 GALAXY 64 0 - 308 51662 471 0.00000 UNKNOWN 0 16 - 308 51662 472 0.19976 GALAXY 64 0 - 308 51662 473 0.03788 GALAXY 64 0 - 308 51662 474 0.50385 GALAXY 1 0 - 308 51662 475 -0.00014 STAR 1056768 0 - 308 51662 476 0.39276 GALAXY 2097152 0 - 308 51662 477 0.62532 QSO 4 0 - 308 51662 478 0.61162 QSO 4 0 - 308 51662 479 0.00040 STAR 8192 0 - 308 51662 480 1.01533 QSO 4 0 - 308 51662 481 0.17145 GALAXY 64 0 - 308 51662 482 -0.00056 STAR 8192 0 - 308 51662 483 -0.00042 STAR 4 0 - 308 51662 484 -0.00014 STAR 33554433 0 - 308 51662 485 0.09577 GALAXY 64 0 - 308 51662 486 0.07452 GALAXY 64 0 - 308 51662 487 0.05549 GALAXY 64 0 - 308 51662 488 0.10079 GALAXY 64 0 - 308 51662 489 0.42523 GALAXY 32 0 - 308 51662 490 0.94441 QSO 1048580 0 - 308 51662 491 0.12000 GALAXY 96 0 - 308 51662 492 0.09542 GALAXY 4 0 - 308 51662 493 0.09146 GALAXY 64 0 - 308 51662 494 0.17155 GALAXY 64 0 - 308 51662 495 0.00000 UNKNOWN 0 16 - 308 51662 496 0.02329 GALAXY 64 0 - 308 51662 497 0.08575 GALAXY 64 0 - 308 51662 498 0.00013 STAR 4 0 - 308 51662 499 0.12075 GALAXY 64 0 - 308 51662 500 -0.00021 STAR 0 34 - 308 51662 501 0.03445 GALAXY 64 0 - 308 51662 502 0.83084 QSO 1048580 0 - 308 51662 503 -0.00013 STAR 4 0 - 308 51662 504 1.26378 QSO 524288 0 - 308 51662 505 0.44014 GALAXY 32 0 - 308 51662 506 -0.00015 STAR 8192 0 - 308 51662 507 0.11635 GALAXY 64 0 - 308 51662 508 0.03455 GALAXY 64 0 - 308 51662 509 0.44209 GALAXY 32 0 - 308 51662 510 1.21848 QSO 1048580 0 - 308 51662 511 0.02672 GALAXY 64 0 - 308 51662 512 0.08606 GALAXY 64 0 - 308 51662 513 1.64999 QSO 4 0 - 308 51662 514 0.14668 GALAXY 64 0 - 308 51662 515 0.36040 GALAXY 32 0 - 308 51662 516 0.08425 GALAXY 64 0 - 308 51662 517 0.21601 GALAXY 64 0 - 308 51662 518 0.00048 STAR 9445376 0 - 308 51662 519 0.00000 UNKNOWN 0 16 - 308 51662 520 0.44027 GALAXY 67108896 0 - 308 51662 521 0.16917 GALAXY 4096 0 - 308 51662 522 0.34191 QSO 4 0 - 308 51662 523 0.29631 QSO 4 0 - 308 51662 524 0.13743 GALAXY 64 0 - 308 51662 525 0.29778 GALAXY 32 0 - 308 51662 526 0.04960 GALAXY 64 0 - 308 51662 527 0.03576 GALAXY 64 0 - 308 51662 528 0.09555 GALAXY 64 0 - 308 51662 529 0.02856 GALAXY 64 0 - 308 51662 530 1.62996 QSO 3145748 0 - 308 51662 531 0.16934 GALAXY 96 0 - 308 51662 532 -0.00021 STAR 8192 0 - 308 51662 533 0.39233 GALAXY 32 0 - 308 51662 534 0.07061 GALAXY 64 0 - 308 51662 535 0.17214 GALAXY 64 0 - 308 51662 536 -0.00006 STAR 1056768 0 - 308 51662 537 0.00000 UNKNOWN 0 16 - 308 51662 538 0.21127 GALAXY 64 0 - 308 51662 539 0.17210 GALAXY 96 0 - 308 51662 540 1.89169 QSO 1048580 0 - 308 51662 541 -0.00022 STAR 2097168 0 - 308 51662 542 0.14063 GALAXY 64 0 - 308 51662 543 0.04116 GALAXY 64 0 - 308 51662 544 -0.00003 STAR 33554433 0 - 308 51662 545 0.00000 UNKNOWN 0 16 - 308 51662 546 0.08048 GALAXY 64 0 - 308 51662 547 -0.00017 STAR 4 0 - 308 51662 548 0.15268 GALAXY 64 0 - 308 51662 549 0.97186 QSO 3145748 0 - 308 51662 550 -0.00034 STAR 1 0 - 308 51662 551 0.11299 GALAXY 64 0 - 308 51662 552 -0.00000 STAR 64 0 - 308 51662 553 0.17541 GALAXY 96 0 - 308 51662 554 0.31426 UNKNOWN 2097152 0 - 308 51662 555 0.11255 GALAXY 64 0 - 308 51662 556 0.05609 GALAXY 64 0 - 308 51662 557 0.13846 GALAXY 64 0 - 308 51662 558 1.75723 QSO 1048580 0 - 308 51662 559 0.44058 QSO 1048580 0 - 308 51662 560 0.03982 GALAXY 96 0 - 308 51662 561 0.08717 GALAXY 64 0 - 308 51662 562 0.37496 GALAXY 32 0 - 308 51662 563 0.15236 GALAXY 64 0 - 308 51662 564 0.11966 GALAXY 64 0 - 308 51662 565 0.03573 GALAXY 64 0 - 308 51662 566 0.11272 GALAXY 64 0 - 308 51662 567 0.11959 GALAXY 64 0 - 308 51662 568 0.00043 STAR 42991616 0 - 308 51662 569 0.17232 GALAXY 64 0 - 308 51662 570 0.11239 GALAXY 64 0 - 308 51662 571 0.00047 STAR 4 0 - 308 51662 572 -0.00049 STAR 1 0 - 308 51662 573 0.00000 UNKNOWN 0 16 - 308 51662 574 0.00012 STAR 8192 0 - 308 51662 575 -0.00001 STAR 0 2 - 308 51662 576 0.42330 GALAXY 32 0 - 308 51662 577 0.00000 MISSING 0 0 - 308 51662 578 -0.00003 STAR 64 0 - 308 51662 579 0.00000 MISSING 0 0 - 308 51662 580 0.45044 GALAXY 32 0 - 308 51662 581 0.13063 GALAXY 64 0 - 308 51662 582 0.00011 STAR 1056772 0 - 308 51662 583 0.03943 GALAXY 96 0 - 308 51662 584 0.15420 GALAXY 64 0 - 308 51662 585 0.17004 GALAXY 64 0 - 308 51662 586 0.04149 GALAXY 64 0 - 308 51662 587 -0.00001 STAR 2097168 2 - 308 51662 588 0.00000 UNKNOWN 0 16 - 308 51662 589 1.96367 QSO 1048596 0 - 308 51662 590 0.04042 GALAXY 64 0 - 308 51662 591 0.03974 GALAXY 64 0 - 308 51662 592 0.44659 GALAXY 32 0 - 308 51662 593 -0.00019 STAR 64 0 - 308 51662 594 0.04341 GALAXY 64 0 - 308 51662 595 1.07904 QSO 1048580 0 - 308 51662 596 0.02316 GALAXY 96 0 - 308 51662 597 0.06905 GALAXY 64 0 - 308 51662 598 0.03966 GALAXY 64 0 - 308 51662 599 0.06360 GALAXY 64 0 - 308 51662 600 0.02905 GALAXY 64 0 - 308 51662 601 0.11982 GALAXY 4 0 - 308 51662 602 0.21172 GALAXY 96 0 - 308 51662 603 0.42109 GALAXY 32 0 - 308 51662 604 0.14045 GALAXY 64 0 - 308 51662 605 0.37327 GALAXY 32 0 - 308 51662 606 0.37437 GALAXY 32 0 - 308 51662 607 0.20241 GALAXY 64 0 - 308 51662 608 0.09935 GALAXY 64 0 - 308 51662 609 0.00050 STAR 8196 0 - 308 51662 610 0.14566 GALAXY 64 0 - 308 51662 611 0.00018 STAR 0 34 - 308 51662 612 0.21206 GALAXY 96 0 - 308 51662 613 0.15302 GALAXY 64 0 - 308 51662 614 0.06445 GALAXY 64 0 - 308 51662 615 0.07511 GALAXY 96 0 - 308 51662 616 0.04272 GALAXY 64 0 - 308 51662 617 0.06350 GALAXY 64 0 - 308 51662 618 0.13082 GALAXY 64 0 - 308 51662 619 0.90897 QSO 42991616 0 - 308 51662 620 0.00000 UNKNOWN 0 16 - 308 51662 621 0.51946 GALAXY 1 0 - 308 51662 622 0.14688 GALAXY 64 0 - 308 51662 623 0.42289 GALAXY 32 0 - 308 51662 624 0.39527 GALAXY 1 0 - 308 51662 625 0.18778 GALAXY 64 0 - 308 51662 626 0.48402 GALAXY 67108896 0 - 308 51662 627 0.14655 GALAXY 64 0 - 308 51662 628 0.04261 GALAXY 64 0 - 308 51662 629 0.25137 GALAXY 32 0 - 308 51662 630 0.00000 UNKNOWN 0 16 - 308 51662 631 0.80492 GALAXY 1048580 512 - 308 51662 632 0.18902 GALAXY 96 0 - 308 51662 633 0.36438 GALAXY 32 0 - 308 51662 634 0.06400 GALAXY 64 0 - 308 51662 635 0.06387 GALAXY 64 0 - 308 51662 636 0.14333 GALAXY 64 0 - 308 51662 637 0.18917 GALAXY 64 0 - 308 51662 638 0.14702 GALAXY 64 0 - 308 51662 639 0.24762 QSO 32 0 - 308 51662 640 0.09934 GALAXY 64 0 - 309 51666 1 0.21688 GALAXY 64 0 - 309 51666 2 0.36827 GALAXY 32 0 - 309 51666 3 0.00000 UNKNOWN 0 16 - 309 51666 4 0.00008 STAR 0 2 - 309 51666 5 0.29678 GALAXY 32 0 - 309 51666 6 0.32107 GALAXY 1056768 0 - 309 51666 7 0.64692 GALAXY 64 0 - 309 51666 8 0.99486 QSO 67108896 0 - 309 51666 9 2.60844 QSO 1048580 0 - 309 51666 10 0.13711 UNKNOWN 8388608 512 - 309 51666 11 0.16015 GALAXY 64 0 - 309 51666 12 -0.00013 STAR 67108896 0 - 309 51666 13 1.60080 QSO 4 0 - 309 51666 14 0.08635 GALAXY 64 0 - 309 51666 15 0.11054 GALAXY 64 0 - 309 51666 16 0.15914 GALAXY 64 0 - 309 51666 17 0.00004 STAR 64 0 - 309 51666 18 0.28763 GALAXY 41943041 0 - 309 51666 19 0.33484 GALAXY 32 0 - 309 51666 20 0.46092 GALAXY 64 0 - 309 51666 21 0.10934 GALAXY 64 0 - 309 51666 22 0.33569 GALAXY 32 0 - 309 51666 23 0.43427 GALAXY 32 0 - 309 51666 24 0.43736 GALAXY 2097184 0 - 309 51666 25 0.00000 UNKNOWN 0 16 - 309 51666 26 0.00001 STAR 16 0 - 309 51666 27 0.13431 GALAXY 64 0 - 309 51666 28 0.40355 UNKNOWN 32 0 - 309 51666 29 2.00816 QSO 1048580 0 - 309 51666 30 0.43976 GALAXY 67108896 0 - 309 51666 31 0.07624 GALAXY 64 0 - 309 51666 32 1.64949 QSO 4 0 - 309 51666 33 0.37655 GALAXY 32 0 - 309 51666 34 0.09918 GALAXY 64 0 - 309 51666 35 0.43795 GALAXY 32 0 - 309 51666 36 0.08730 GALAXY 64 0 - 309 51666 37 0.03120 GALAXY 64 0 - 309 51666 38 0.20134 GALAXY 32 0 - 309 51666 39 0.09832 GALAXY 64 0 - 309 51666 40 0.11708 GALAXY 64 0 - 309 51666 41 0.04150 GALAXY 64 0 - 309 51666 42 2.22628 QSO 7172 0 - 309 51666 43 0.07486 GALAXY 68 0 - 309 51666 44 -0.00035 STAR 0 2 - 309 51666 45 0.09937 GALAXY 96 0 - 309 51666 46 0.09968 GALAXY 64 0 - 309 51666 47 0.10002 GALAXY 96 0 - 309 51666 48 0.08738 GALAXY 64 0 - 309 51666 49 0.28104 GALAXY 32 0 - 309 51666 50 0.14988 GALAXY 96 0 - 309 51666 51 0.00000 UNKNOWN 0 16 - 309 51666 52 1.32406 QSO 36700160 0 - 309 51666 53 0.08683 GALAXY 64 0 - 309 51666 54 1.22299 QSO 4 0 - 309 51666 55 0.06695 GALAXY 64 0 - 309 51666 56 0.10044 GALAXY 64 0 - 309 51666 57 0.08667 GALAXY 64 0 - 309 51666 58 0.00018 STAR 1056772 0 - 309 51666 59 0.08654 GALAXY 64 0 - 309 51666 60 0.10015 GALAXY 64 0 - 309 51666 61 0.08743 GALAXY 64 0 - 309 51666 62 0.23842 GALAXY 96 0 - 309 51666 63 0.09825 GALAXY 64 0 - 309 51666 64 0.19730 GALAXY 64 0 - 309 51666 65 0.18827 GALAXY 64 0 - 309 51666 66 0.17304 GALAXY 64 0 - 309 51666 67 0.46817 GALAXY 67108896 0 - 309 51666 68 0.00008 STAR 0 2 - 309 51666 69 -0.00014 STAR 0 34 - 309 51666 70 -0.00000 STAR 1 0 - 309 51666 71 0.23568 GALAXY 96 0 - 309 51666 72 0.00013 STAR 4 0 - 309 51666 73 0.37574 GALAXY 32 0 - 309 51666 74 0.00047 STAR 8196 0 - 309 51666 75 0.18783 GALAXY 96 0 - 309 51666 76 0.04183 GALAXY 64 0 - 309 51666 77 0.06765 GALAXY 68 0 - 309 51666 78 0.17287 GALAXY 64 0 - 309 51666 79 0.18686 GALAXY 4 0 - 309 51666 80 0.00000 UNKNOWN 0 16 - 309 51666 81 0.10010 GALAXY 64 0 - 309 51666 82 0.28441 GALAXY 32 0 - 309 51666 83 0.09964 GALAXY 64 0 - 309 51666 84 0.00000 UNKNOWN 1048580 0 - 309 51666 85 0.00026 STAR 16 0 - 309 51666 86 0.10135 GALAXY 64 0 - 309 51666 87 0.00000 UNKNOWN 0 16 - 309 51666 88 0.00071 STAR 4 0 - 309 51666 89 0.17025 UNKNOWN 67108896 0 - 309 51666 90 0.00028 STAR 1 0 - 309 51666 91 1.94128 QSO 36700160 0 - 309 51666 92 0.00620 GALAXY 64 0 - 309 51666 93 1.75962 QSO 34603008 0 - 309 51666 94 0.14247 GALAXY 64 0 - 309 51666 95 -0.00004 STAR 1056772 0 - 309 51666 96 0.17235 GALAXY 64 0 - 309 51666 97 0.09931 GALAXY 96 0 - 309 51666 98 -0.00033 STAR 8192 0 - 309 51666 99 0.03517 GALAXY 64 0 - 309 51666 100 1.54503 QSO 33554496 0 - 309 51666 101 0.11036 GALAXY 64 0 - 309 51666 102 0.00007 STAR 1 0 - 309 51666 103 0.23840 GALAXY 64 0 - 309 51666 104 -0.00018 STAR 4194304 0 - 309 51666 105 0.11110 GALAXY 64 0 - 309 51666 106 0.13856 GALAXY 64 0 - 309 51666 107 0.37723 GALAXY 32 0 - 309 51666 108 0.10538 GALAXY 64 0 - 309 51666 109 0.17276 GALAXY 64 0 - 309 51666 110 0.11039 GALAXY 64 0 - 309 51666 111 0.08234 GALAXY 64 0 - 309 51666 112 0.14990 GALAXY 64 0 - 309 51666 113 0.17252 GALAXY 64 0 - 309 51666 114 0.09865 GALAXY 64 0 - 309 51666 115 0.10441 GALAXY 64 0 - 309 51666 116 0.89554 GALAXY 7172 0 - 309 51666 117 0.00000 UNKNOWN 0 16 - 309 51666 118 0.08254 GALAXY 64 0 - 309 51666 119 0.10551 GALAXY 64 0 - 309 51666 120 1.50471 QSO 64 0 - 309 51666 121 -0.00053 STAR 34611200 0 - 309 51666 122 0.08403 GALAXY 64 0 - 309 51666 123 0.09947 GALAXY 64 0 - 309 51666 124 0.08384 GALAXY 96 0 - 309 51666 125 0.00000 UNKNOWN 0 16 - 309 51666 126 -0.00061 STAR 4 0 - 309 51666 127 0.00060 STAR 1 0 - 309 51666 128 0.60145 UNKNOWN 34611200 0 - 309 51666 129 0.31437 GALAXY 32 0 - 309 51666 130 0.08376 GALAXY 64 0 - 309 51666 131 0.08545 GALAXY 68 0 - 309 51666 132 0.16298 GALAXY 64 0 - 309 51666 133 0.57652 QSO 1048580 0 - 309 51666 134 0.07651 GALAXY 64 0 - 309 51666 135 1.37389 QSO 4 0 - 309 51666 136 0.35885 GALAXY 32 0 - 309 51666 137 0.08387 GALAXY 96 0 - 309 51666 138 0.07650 GALAXY 68 0 - 309 51666 139 0.21694 GALAXY 64 0 - 309 51666 140 0.08375 GALAXY 64 0 - 309 51666 141 0.13648 GALAXY 64 0 - 309 51666 142 0.08739 GALAXY 64 0 - 309 51666 143 0.08422 GALAXY 64 0 - 309 51666 144 0.04215 GALAXY 64 0 - 309 51666 145 0.00000 UNKNOWN 0 16 - 309 51666 146 0.08381 GALAXY 96 0 - 309 51666 147 0.08600 GALAXY 64 0 - 309 51666 148 0.08339 GALAXY 64 0 - 309 51666 149 0.08326 GALAXY 96 0 - 309 51666 150 0.08331 GALAXY 64 0 - 309 51666 151 0.23634 GALAXY 4 0 - 309 51666 152 0.07765 GALAXY 64 0 - 309 51666 153 0.08261 GALAXY 64 0 - 309 51666 154 0.08400 GALAXY 64 0 - 309 51666 155 0.11136 GALAXY 64 0 - 309 51666 156 0.13336 GALAXY 64 0 - 309 51666 157 0.00013 STAR 4 0 - 309 51666 158 1.40360 QSO 1048580 0 - 309 51666 159 0.08379 GALAXY 64 0 - 309 51666 160 0.08268 GALAXY 64 0 - 309 51666 161 0.08483 GALAXY 64 0 - 309 51666 162 -0.00010 STAR 67108896 0 - 309 51666 163 0.08433 GALAXY 64 0 - 309 51666 164 0.22959 GALAXY 64 0 - 309 51666 165 0.37422 GALAXY 32 0 - 309 51666 166 0.00029 STAR 8192 0 - 309 51666 167 0.14236 GALAXY 64 0 - 309 51666 168 0.37464 GALAXY 32 0 - 309 51666 169 0.08324 GALAXY 64 0 - 309 51666 170 0.08433 GALAXY 64 0 - 309 51666 171 0.14095 GALAXY 64 0 - 309 51666 172 0.08352 GALAXY 68 0 - 309 51666 173 0.33931 GALAXY 3145748 0 - 309 51666 174 0.00000 UNKNOWN 0 16 - 309 51666 175 0.37530 UNKNOWN 32 0 - 309 51666 176 0.37831 QSO 32 0 - 309 51666 177 0.14108 GALAXY 64 0 - 309 51666 178 0.08392 GALAXY 4 0 - 309 51666 179 0.14918 GALAXY 64 0 - 309 51666 180 0.08448 GALAXY 64 0 - 309 51666 181 0.28162 GALAXY 32 0 - 309 51666 182 1.51947 QSO 64 0 - 309 51666 183 0.46854 GALAXY 32 0 - 309 51666 184 0.00010 STAR 1056768 0 - 309 51666 185 1.57828 QSO 1048580 0 - 309 51666 186 0.38578 GALAXY 32 0 - 309 51666 187 0.36914 GALAXY 32 0 - 309 51666 188 0.06874 GALAXY 64 0 - 309 51666 189 1.50814 QSO 1048580 0 - 309 51666 190 0.42913 GALAXY 32 0 - 309 51666 191 0.06590 GALAXY 64 0 - 309 51666 192 0.00000 MISSING 0 0 - 309 51666 193 0.00000 UNKNOWN 0 16 - 309 51666 194 0.14834 GALAXY 64 0 - 309 51666 195 -0.00008 STAR 5 0 - 309 51666 196 0.04397 GALAXY 64 0 - 309 51666 197 0.13862 GALAXY 64 0 - 309 51666 198 0.04311 GALAXY 64 0 - 309 51666 199 0.23548 GALAXY 96 0 - 309 51666 200 0.00017 STAR 34611200 0 - 309 51666 201 0.29657 GALAXY 32 0 - 309 51666 202 0.16700 GALAXY 64 0 - 309 51666 203 0.08314 GALAXY 64 0 - 309 51666 204 0.05487 GALAXY 64 0 - 309 51666 205 0.00072 STAR 9445376 0 - 309 51666 206 0.02321 GALAXY 64 0 - 309 51666 207 0.06572 GALAXY 64 0 - 309 51666 208 0.00000 UNKNOWN 0 16 - 309 51666 209 0.10395 GALAXY 64 0 - 309 51666 210 0.19409 GALAXY 64 0 - 309 51666 211 0.29855 GALAXY 32 0 - 309 51666 212 0.24007 GALAXY 64 0 - 309 51666 213 0.42207 GALAXY 67108896 0 - 309 51666 214 0.08368 GALAXY 64 0 - 309 51666 215 0.21753 GALAXY 96 0 - 309 51666 216 0.37759 GALAXY 32 0 - 309 51666 217 0.07579 GALAXY 64 0 - 309 51666 218 0.18563 GALAXY 4 0 - 309 51666 219 1.09403 QSO 42991616 0 - 309 51666 220 0.08435 GALAXY 64 0 - 309 51666 221 0.00004 STAR 9437184 0 - 309 51666 222 0.10065 GALAXY 64 0 - 309 51666 223 0.00000 UNKNOWN 0 16 - 309 51666 224 0.00071 STAR 42999808 0 - 309 51666 225 0.04449 GALAXY 64 0 - 309 51666 226 0.16930 GALAXY 64 0 - 309 51666 227 0.31397 GALAXY 32 0 - 309 51666 228 0.04482 GALAXY 64 0 - 309 51666 229 0.07565 GALAXY 64 0 - 309 51666 230 0.00002 STAR 8192 0 - 309 51666 231 0.14688 UNKNOWN 64 0 - 309 51666 232 0.00099 STAR 8192 0 - 309 51666 233 0.09995 GALAXY 64 0 - 309 51666 234 0.04392 GALAXY 96 0 - 309 51666 235 0.04197 GALAXY 64 0 - 309 51666 236 0.00075 STAR 1056768 0 - 309 51666 237 0.16963 GALAXY 64 0 - 309 51666 238 0.21777 GALAXY 96 0 - 309 51666 239 0.13873 GALAXY 64 0 - 309 51666 240 0.16936 GALAXY 64 0 - 309 51666 241 1.34680 QSO 1048580 0 - 309 51666 242 0.06741 GALAXY 64 0 - 309 51666 243 -0.00035 STAR 0 34 - 309 51666 244 0.31462 GALAXY 32 0 - 309 51666 245 0.42970 GALAXY 32 0 - 309 51666 246 0.27679 GALAXY 32 0 - 309 51666 247 0.31367 GALAXY 32 0 - 309 51666 248 0.00000 UNKNOWN 0 16 - 309 51666 249 0.17707 GALAXY 64 0 - 309 51666 250 1.80588 QSO 4 0 - 309 51666 251 0.07735 GALAXY 64 0 - 309 51666 252 0.07747 GALAXY 96 0 - 309 51666 253 0.00022 STAR 42991616 0 - 309 51666 254 1.52769 QSO 64 0 - 309 51666 255 -0.00002 UNKNOWN 64 0 - 309 51666 256 0.07762 GALAXY 64 0 - 309 51666 257 0.07874 GALAXY 64 0 - 309 51666 258 0.08425 GALAXY 64 0 - 309 51666 259 0.07746 GALAXY 64 0 - 309 51666 260 0.00014 STAR 4 0 - 309 51666 261 0.43522 GALAXY 67108896 0 - 309 51666 262 -0.00039 STAR 34611200 0 - 309 51666 263 -0.00014 STAR 4 0 - 309 51666 264 -0.00036 STAR 8192 0 - 309 51666 265 0.06387 GALAXY 64 0 - 309 51666 266 0.09927 GALAXY 96 0 - 309 51666 267 0.07839 GALAXY 64 0 - 309 51666 268 0.04253 GALAXY 64 0 - 309 51666 269 0.31512 GALAXY 32 0 - 309 51666 270 0.00000 UNKNOWN 0 16 - 309 51666 271 0.09977 GALAXY 64 0 - 309 51666 272 0.09963 GALAXY 64 0 - 309 51666 273 0.00009 STAR 1 0 - 309 51666 274 0.02862 UNKNOWN 2097152 0 - 309 51666 275 -0.00015 STAR 5 0 - 309 51666 276 0.12297 GALAXY 64 0 - 309 51666 277 0.09961 GALAXY 64 0 - 309 51666 278 0.04408 GALAXY 64 0 - 309 51666 279 0.00008 STAR 1 0 - 309 51666 280 0.46470 UNKNOWN 67108896 0 - 309 51666 281 0.00406 QSO 1048580 0 - 309 51666 282 0.04308 GALAXY 4 0 - 309 51666 283 0.11019 GALAXY 64 0 - 309 51666 284 -0.00011 STAR 0 34 - 309 51666 285 0.31434 GALAXY 32 0 - 309 51666 286 0.03496 GALAXY 68 0 - 309 51666 287 0.14989 GALAXY 64 0 - 309 51666 288 0.28635 GALAXY 32 0 - 309 51666 289 0.09929 GALAXY 64 0 - 309 51666 290 0.00000 UNKNOWN 0 16 - 309 51666 291 0.07703 GALAXY 64 0 - 309 51666 292 0.36777 GALAXY 32 0 - 309 51666 293 0.26362 GALAXY 32 0 - 309 51666 294 0.00009 STAR 64 0 - 309 51666 295 0.11060 GALAXY 64 0 - 309 51666 296 0.31529 GALAXY 32 0 - 309 51666 297 2.10881 QSO 4 0 - 309 51666 298 0.18516 GALAXY 64 0 - 309 51666 299 0.10000 GALAXY 64 0 - 309 51666 300 0.55477 UNKNOWN 2097152 0 - 309 51666 301 0.08596 GALAXY 64 0 - 309 51666 302 -0.00027 STAR 0 32 - 309 51666 303 1.26927 QSO 9961476 0 - 309 51666 304 0.04333 GALAXY 64 0 - 309 51666 305 0.25242 GALAXY 96 0 - 309 51666 306 0.51423 QSO 1048580 0 - 309 51666 307 0.09033 GALAXY 64 0 - 309 51666 308 1.19564 QSO 1048580 0 - 309 51666 309 0.13870 GALAXY 64 0 - 309 51666 310 0.04263 GALAXY 64 0 - 309 51666 311 0.00000 UNKNOWN 0 16 - 309 51666 312 0.04298 GALAXY 64 0 - 309 51666 313 -0.00008 STAR 64 0 - 309 51666 314 0.04318 GALAXY 64 0 - 309 51666 315 0.08360 GALAXY 64 0 - 309 51666 316 0.11228 GALAXY 4 0 - 309 51666 317 0.04316 GALAXY 96 0 - 309 51666 318 0.00013 STAR 9445376 0 - 309 51666 319 0.02320 GALAXY 96 0 - 309 51666 320 0.12520 GALAXY 4194304 0 - 309 51666 321 0.11604 GALAXY 64 0 - 309 51666 322 0.21137 GALAXY 96 0 - 309 51666 323 -0.00033 STAR 8192 0 - 309 51666 324 0.20008 GALAXY 64 0 - 309 51666 325 1.30138 QSO 1048580 0 - 309 51666 326 0.00123 STAR 8192 0 - 309 51666 327 0.39098 GALAXY 32 0 - 309 51666 328 1.08390 QSO 1048580 0 - 309 51666 329 0.39166 GALAXY 32 0 - 309 51666 330 0.08683 GALAXY 64 0 - 309 51666 331 0.37361 GALAXY 32 0 - 309 51666 332 0.42138 GALAXY 32 0 - 309 51666 333 0.14577 GALAXY 64 0 - 309 51666 334 0.02714 GALAXY 64 0 - 309 51666 335 0.47297 UNKNOWN 33554433 0 - 309 51666 336 0.09872 GALAXY 64 0 - 309 51666 337 0.00013 STAR 33554433 0 - 309 51666 338 0.18486 GALAXY 64 0 - 309 51666 339 0.00054 STAR 8192 0 - 309 51666 340 0.00000 UNKNOWN 0 16 - 309 51666 341 0.05587 GALAXY 64 0 - 309 51666 342 1.70211 QSO 4 0 - 309 51666 343 0.00000 UNKNOWN 0 16 - 309 51666 344 -0.00006 STAR 64 0 - 309 51666 345 0.00021 STAR 9445376 0 - 309 51666 346 0.17510 GALAXY 64 0 - 309 51666 347 0.03453 GALAXY 64 0 - 309 51666 348 0.17480 GALAXY 96 0 - 309 51666 349 0.00036 STAR 1056768 0 - 309 51666 350 0.13908 GALAXY 64 0 - 309 51666 351 0.03976 GALAXY 64 0 - 309 51666 352 0.06407 GALAXY 64 0 - 309 51666 353 0.04052 GALAXY 96 0 - 309 51666 354 -0.00020 STAR 8192 0 - 309 51666 355 1.63263 QSO 4 0 - 309 51666 356 0.04283 GALAXY 96 0 - 309 51666 357 0.44110 QSO 1048580 0 - 309 51666 358 0.00020 STAR 4194304 0 - 309 51666 359 0.04245 UNKNOWN 64 0 - 309 51666 360 0.00032 STAR 8192 0 - 309 51666 361 0.19266 GALAXY 64 0 - 309 51666 362 0.19373 GALAXY 64 0 - 309 51666 363 0.00006 STAR 8196 0 - 309 51666 364 0.33721 GALAXY 32 0 - 309 51666 365 0.37331 GALAXY 32 0 - 309 51666 366 0.37594 GALAXY 32 0 - 309 51666 367 0.14157 GALAXY 64 0 - 309 51666 368 0.38583 GALAXY 32 0 - 309 51666 369 0.37668 GALAXY 32 0 - 309 51666 370 0.11171 GALAXY 64 0 - 309 51666 371 0.21200 GALAXY 64 0 - 309 51666 372 0.00000 UNKNOWN 0 16 - 309 51666 373 0.09833 GALAXY 96 0 - 309 51666 374 0.13169 GALAXY 64 0 - 309 51666 375 0.11953 GALAXY 64 0 - 309 51666 376 0.04337 GALAXY 64 0 - 309 51666 377 0.13180 GALAXY 64 0 - 309 51666 378 0.19604 GALAXY 64 0 - 309 51666 379 0.04328 GALAXY 64 0 - 309 51666 380 0.00034 STAR 0 2 - 309 51666 381 0.04624 GALAXY 64 0 - 309 51666 382 0.19230 GALAXY 64 0 - 309 51666 383 0.30453 GALAXY 64 0 - 309 51666 384 0.33431 QSO 2097152 0 - 309 51666 385 -0.00012 STAR 524288 0 - 309 51666 386 0.00025 STAR 0 2 - 309 51666 387 0.31944 GALAXY 32 0 - 309 51666 388 0.47954 GALAXY 67108896 0 - 309 51666 389 0.00026 STAR 0 34 - 309 51666 390 0.55092 QSO 34603008 0 - 309 51666 391 0.45761 QSO 1048580 0 - 309 51666 392 0.00004 STAR 42991616 0 - 309 51666 393 0.02780 GALAXY 64 0 - 309 51666 394 0.00009 STAR 0 2 - 309 51666 395 0.18884 GALAXY 64 0 - 309 51666 396 2.00976 QSO 1048580 512 - 309 51666 397 -0.00004 STAR 4 0 - 309 51666 398 2.53674 QSO 34603008 0 - 309 51666 399 0.00000 UNKNOWN 0 16 - 309 51666 400 0.00007 STAR 5 0 - 309 51666 401 0.14130 GALAXY 96 0 - 309 51666 402 0.39848 UNKNOWN 33554433 0 - 309 51666 403 0.31553 GALAXY 32 0 - 309 51666 404 0.06567 GALAXY 64 0 - 309 51666 405 0.14732 GALAXY 64 0 - 309 51666 406 1.26080 QSO 1048580 0 - 309 51666 407 0.11907 GALAXY 64 0 - 309 51666 408 0.21166 GALAXY 4 0 - 309 51666 409 0.00056 STAR 0 96 - 309 51666 410 0.11917 GALAXY 64 0 - 309 51666 411 0.06917 GALAXY 64 0 - 309 51666 412 0.37714 GALAXY 32 0 - 309 51666 413 -0.00023 STAR 1179652 0 - 309 51666 414 0.37665 GALAXY 32 0 - 309 51666 415 0.14799 GALAXY 64 0 - 309 51666 416 0.14745 GALAXY 64 0 - 309 51666 417 0.00000 UNKNOWN 0 16 - 309 51666 418 0.14854 GALAXY 64 0 - 309 51666 419 0.11903 GALAXY 64 0 - 309 51666 420 0.00074 STAR 1 0 - 309 51666 421 0.64391 QSO 35651584 0 - 309 51666 422 1.85969 QSO 1048580 0 - 309 51666 423 2.15377 QSO 4 0 - 309 51666 424 0.62594 UNKNOWN 1 0 - 309 51666 425 0.17146 GALAXY 64 0 - 309 51666 426 0.24841 GALAXY 96 0 - 309 51666 427 2.52721 QSO 4 0 - 309 51666 428 0.00000 UNKNOWN 0 16 - 309 51666 429 0.04478 GALAXY 64 0 - 309 51666 430 0.09187 GALAXY 96 0 - 309 51666 431 0.04320 GALAXY 64 0 - 309 51666 432 -0.00008 STAR 0 2 - 309 51666 433 0.04256 GALAXY 64 0 - 309 51666 434 -0.00010 STAR 8192 0 - 309 51666 435 0.04212 GALAXY 64 0 - 309 51666 436 0.47290 UNKNOWN 67108896 0 - 309 51666 437 0.04478 GALAXY 64 0 - 309 51666 438 0.04404 GALAXY 96 0 - 309 51666 439 0.09866 GALAXY 64 0 - 309 51666 440 0.31421 GALAXY 32 0 - 309 51666 441 -0.00000 STAR 524288 0 - 309 51666 442 0.16305 GALAXY 64 0 - 309 51666 443 0.00007 STAR 2097168 0 - 309 51666 444 0.00000 UNKNOWN 0 16 - 309 51666 445 0.07985 GALAXY 64 0 - 309 51666 446 0.08153 GALAXY 64 0 - 309 51666 447 0.00032 STAR 8192 0 - 309 51666 448 0.24686 GALAXY 32 0 - 309 51666 449 0.14919 GALAXY 64 0 - 309 51666 450 0.03497 GALAXY 96 0 - 309 51666 451 0.18859 GALAXY 64 0 - 309 51666 452 0.08001 GALAXY 64 0 - 309 51666 453 0.13197 GALAXY 64 0 - 309 51666 454 0.08131 GALAXY 68 0 - 309 51666 455 0.03301 GALAXY 64 0 - 309 51666 456 0.04244 GALAXY 64 0 - 309 51666 457 0.09183 GALAXY 64 0 - 309 51666 458 0.61434 QSO 1 0 - 309 51666 459 0.00025 STAR 4 0 - 309 51666 460 0.04354 GALAXY 64 0 - 309 51666 461 0.04604 GALAXY 64 0 - 309 51666 462 -0.00013 STAR 8192 0 - 309 51666 463 0.00012 STAR 34611200 0 - 309 51666 464 1.44162 QSO 4 0 - 309 51666 465 0.70258 QSO 1048580 0 - 309 51666 466 0.32033 GALAXY 32 0 - 309 51666 467 1.50228 QSO 64 0 - 309 51666 468 0.08335 GALAXY 64 0 - 309 51666 469 0.39682 QSO 4 0 - 309 51666 470 2.64246 QSO 1056769 0 - 309 51666 471 0.44209 GALAXY 32 0 - 309 51666 472 0.25965 GALAXY 32 0 - 309 51666 473 0.06653 UNKNOWN 2097152 0 - 309 51666 474 0.00000 UNKNOWN 0 16 - 309 51666 475 0.00072 STAR 4 0 - 309 51666 476 0.11621 GALAXY 64 0 - 309 51666 477 0.42493 GALAXY 32 0 - 309 51666 478 0.13239 GALAXY 68 0 - 309 51666 479 0.00003 STAR 42991616 512 - 309 51666 480 1.70634 QSO 4 0 - 309 51666 481 0.11100 GALAXY 64 0 - 309 51666 482 0.00000 UNKNOWN 0 16 - 309 51666 483 0.04406 GALAXY 64 0 - 309 51666 484 0.07520 GALAXY 4 0 - 309 51666 485 0.04372 GALAXY 64 0 - 309 51666 486 2.01105 QSO 4 0 - 309 51666 487 0.04361 GALAXY 96 0 - 309 51666 488 0.00021 STAR 1056768 0 - 309 51666 489 0.03494 GALAXY 64 0 - 309 51666 490 0.04352 GALAXY 64 0 - 309 51666 491 -0.00026 STAR 64 0 - 309 51666 492 0.00007 STAR 4 0 - 309 51666 493 0.49921 GALAXY 67108896 0 - 309 51666 494 0.06708 GALAXY 64 0 - 309 51666 495 0.18569 GALAXY 64 0 - 309 51666 496 0.00073 STAR 8192 0 - 309 51666 497 0.06686 GALAXY 64 0 - 309 51666 498 0.14112 GALAXY 64 0 - 309 51666 499 1.91256 QSO 1048580 0 - 309 51666 500 0.00054 STAR 4 0 - 309 51666 501 0.13591 GALAXY 64 0 - 309 51666 502 0.17167 GALAXY 64 0 - 309 51666 503 0.00007 STAR 1 0 - 309 51666 504 -0.00052 STAR 8192 0 - 309 51666 505 0.60172 QSO 1048580 0 - 309 51666 506 0.00000 UNKNOWN 0 16 - 309 51666 507 0.17647 GALAXY 64 0 - 309 51666 508 0.13927 GALAXY 64 0 - 309 51666 509 0.08268 GALAXY 64 0 - 309 51666 510 0.08744 GALAXY 64 0 - 309 51666 511 0.04288 GALAXY 64 0 - 309 51666 512 0.00003 STAR 8192 0 - 309 51666 513 0.18500 GALAXY 64 0 - 309 51666 514 0.43391 QSO 4 0 - 309 51666 515 1.83634 QSO 36700160 0 - 309 51666 516 0.03500 GALAXY 64 0 - 309 51666 517 0.07782 GALAXY 64 0 - 309 51666 518 0.07767 GALAXY 64 0 - 309 51666 519 0.08486 GALAXY 96 0 - 309 51666 520 0.00013 STAR 1056768 0 - 309 51666 521 0.27748 GALAXY 32 0 - 309 51666 522 1.50553 QSO 64 0 - 309 51666 523 0.08774 GALAXY 64 0 - 309 51666 524 0.23478 GALAXY 32 0 - 309 51666 525 -0.00015 STAR 4096 0 - 309 51666 526 0.06750 GALAXY 64 0 - 309 51666 527 0.00566 GALAXY 64 0 - 309 51666 528 0.04367 GALAXY 64 0 - 309 51666 529 0.00018 STAR 1048580 0 - 309 51666 530 0.11010 GALAXY 64 0 - 309 51666 531 0.04373 GALAXY 64 0 - 309 51666 532 0.31550 GALAXY 96 0 - 309 51666 533 0.31930 GALAXY 32 0 - 309 51666 534 0.08746 GALAXY 64 0 - 309 51666 535 0.04379 GALAXY 96 0 - 309 51666 536 0.04297 GALAXY 64 0 - 309 51666 537 -0.00001 STAR 524288 0 - 309 51666 538 0.00024 STAR 524288 0 - 309 51666 539 0.00000 UNKNOWN 0 16 - 309 51666 540 0.04351 GALAXY 64 0 - 309 51666 541 0.48509 GALAXY 67108896 0 - 309 51666 542 2.38677 QSO 1056772 0 - 309 51666 543 0.23830 GALAXY 96 0 - 309 51666 544 1.48070 QSO 32 0 - 309 51666 545 0.07811 GALAXY 64 0 - 309 51666 546 0.08378 GALAXY 64 0 - 309 51666 547 0.10703 GALAXY 64 0 - 309 51666 548 0.07805 GALAXY 64 0 - 309 51666 549 0.00000 MISSING 0 0 - 309 51666 550 0.18278 GALAXY 64 0 - 309 51666 551 0.00042 STAR 0 2 - 309 51666 552 0.08396 GALAXY 64 0 - 309 51666 553 -0.00030 STAR 8192 0 - 309 51666 554 0.21562 GALAXY 64 0 - 309 51666 555 0.00016 STAR 4 0 - 309 51666 556 0.43998 GALAXY 67108896 0 - 309 51666 557 0.10228 GALAXY 64 0 - 309 51666 558 0.18616 GALAXY 68 0 - 309 51666 559 0.00000 UNKNOWN 0 16 - 309 51666 560 0.10654 GALAXY 64 0 - 309 51666 561 0.15100 UNKNOWN 42991616 512 - 309 51666 562 0.03499 GALAXY 96 0 - 309 51666 563 0.08036 GALAXY 64 0 - 309 51666 564 0.41533 GALAXY 1 0 - 309 51666 565 0.43840 GALAXY 67108896 0 - 309 51666 566 0.14105 GALAXY 64 0 - 309 51666 567 0.13974 GALAXY 64 0 - 309 51666 568 0.00042 STAR 8196 0 - 309 51666 569 0.75194 UNKNOWN 35651585 0 - 309 51666 570 0.04325 GALAXY 64 0 - 309 51666 571 0.04414 GALAXY 96 0 - 309 51666 572 0.00650 GALAXY 64 0 - 309 51666 573 0.16122 GALAXY 64 0 - 309 51666 574 0.04365 GALAXY 64 0 - 309 51666 575 0.04304 GALAXY 64 0 - 309 51666 576 0.03530 GALAXY 64 0 - 309 51666 577 0.00000 UNKNOWN 0 16 - 309 51666 578 0.04436 GALAXY 64 0 - 309 51666 579 0.04292 GALAXY 64 0 - 309 51666 580 0.11000 GALAXY 64 0 - 309 51666 581 0.10406 GALAXY 64 0 - 309 51666 582 0.11877 GALAXY 64 0 - 309 51666 583 2.75373 QSO 4 0 - 309 51666 584 0.10381 GALAXY 64 0 - 309 51666 585 -0.00032 STAR 42991616 0 - 309 51666 586 2.01877 QSO 20 0 - 309 51666 587 0.08445 GALAXY 64 0 - 309 51666 588 1.49374 QSO 4 0 - 309 51666 589 0.16518 GALAXY 96 0 - 309 51666 590 1.88758 QSO 1048580 0 - 309 51666 591 1.12486 QSO 1048580 0 - 309 51666 592 1.58131 QSO 1048580 0 - 309 51666 593 0.11898 GALAXY 64 0 - 309 51666 594 0.11559 GALAXY 64 0 - 309 51666 595 0.10653 GALAXY 64 0 - 309 51666 596 -0.00008 STAR 1 0 - 309 51666 597 0.30505 GALAXY 32 0 - 309 51666 598 0.44045 GALAXY 32 0 - 309 51666 599 0.00000 UNKNOWN 0 16 - 309 51666 600 0.17725 GALAXY 64 0 - 309 51666 601 0.00000 MISSING 0 0 - 309 51666 602 0.00623 GALAXY 64 0 - 309 51666 603 0.04223 GALAXY 64 0 - 309 51666 604 0.16605 GALAXY 64 0 - 309 51666 605 0.27044 GALAXY 32 0 - 309 51666 606 0.09748 GALAXY 64 0 - 309 51666 607 0.00000 UNKNOWN 0 16 - 309 51666 608 0.08027 GALAXY 96 0 - 309 51666 609 0.07264 UNKNOWN 1 0 - 309 51666 610 0.40250 GALAXY 32 0 - 309 51666 611 0.08336 GALAXY 64 0 - 309 51666 612 -0.00002 UNKNOWN 0 34 - 309 51666 613 0.08323 GALAXY 64 0 - 309 51666 614 0.07993 GALAXY 64 0 - 309 51666 615 0.09673 GALAXY 64 0 - 309 51666 616 0.15991 GALAXY 64 0 - 309 51666 617 0.09685 GALAXY 64 0 - 309 51666 618 0.49199 UNKNOWN 67108896 0 - 309 51666 619 0.16496 GALAXY 64 0 - 309 51666 620 0.68846 GALAXY 1056768 0 - 309 51666 621 0.06793 GALAXY 64 0 - 309 51666 622 0.00000 MISSING 0 0 - 309 51666 623 -0.00051 STAR 8192 0 - 309 51666 624 0.37638 GALAXY 32 0 - 309 51666 625 0.18148 GALAXY 64 0 - 309 51666 626 0.00014 STAR 0 34 - 309 51666 627 0.09782 GALAXY 64 0 - 309 51666 628 0.04117 GALAXY 96 0 - 309 51666 629 0.10286 GALAXY 64 0 - 309 51666 630 0.10575 GALAXY 64 0 - 309 51666 631 0.09739 GALAXY 64 0 - 309 51666 632 -0.00025 STAR 4 0 - 309 51666 633 0.08641 GALAXY 64 0 - 309 51666 634 0.00000 UNKNOWN 0 16 - 309 51666 635 0.37359 GALAXY 32 0 - 309 51666 636 0.21125 GALAXY 64 0 - 309 51666 637 0.23440 GALAXY 96 0 - 309 51666 638 0.03115 GALAXY 64 0 - 309 51666 639 0.32278 QSO 2097152 0 - 309 51666 640 0.11731 GALAXY 64 0 diff --git a/etc/regress1d_all.dat b/etc/regress1d_all.dat deleted file mode 100644 index 60513352d..000000000 --- a/etc/regress1d_all.dat +++ /dev/null @@ -1,6401 +0,0 @@ -#PLATE MJD FIBER Z CLASS PRIMTARGET SECTARGET COMMENTS - 300 51666 1 0.00007 UNKNOWN 64 0 - 300 51666 2 0.00478 GALAXY 96 0 - 300 51666 3 0.14045 GALAXY 64 0 - 300 51666 4 0.15152 GALAXY 64 0 - 300 51666 5 0.14121 GALAXY 64 0 - 300 51666 6 0.00044 STAR 1 0 - 300 51666 7 0.14709 GALAXY 64 0 - 300 51666 8 0.15353 GALAXY 64 0 - 300 51666 9 0.14771 GALAXY 64 0 - 300 51666 10 0.00015 STAR 524288 0 - 300 51666 11 0.25054 GALAXY 96 0 - 300 51666 12 0.00000 UNKNOWN 0 16 - 300 51666 13 0.15053 GALAXY 64 0 - 300 51666 14 0.99112 QSO 4 0 - 300 51666 15 0.33292 GALAXY 32 0 - 300 51666 16 0.08966 GALAXY 64 0 - 300 51666 17 0.11582 GALAXY 64 0 - 300 51666 18 0.14147 GALAXY 64 0 - 300 51666 19 0.15040 GALAXY 64 0 - 300 51666 20 0.14170 GALAXY 64 0 - 300 51666 21 0.11681 GALAXY 64 0 - 300 51666 22 2.41975 QSO 1048580 0 - 300 51666 23 0.03243 GALAXY 64 0 - 300 51666 24 0.00000 UNKNOWN 0 16 - 300 51666 25 0.10429 GALAXY 64 0 - 300 51666 26 0.00019 STAR 1048580 0 - 300 51666 27 0.29335 GALAXY 4096 0 - 300 51666 28 1.22432 QSO 1048596 0 - 300 51666 29 0.11482 GALAXY 64 0 - 300 51666 30 0.18885 GALAXY 64 0 - 300 51666 31 0.08258 GALAXY 64 0 - 300 51666 32 0.11640 GALAXY 64 0 - 300 51666 33 0.26532 GALAXY 4 0 - 300 51666 34 1.41697 QSO 64 0 - 300 51666 35 0.35904 GALAXY 2097184 0 - 300 51666 36 0.00031 STAR 0 96 - 300 51666 37 0.11644 GALAXY 4704 0 - 300 51666 38 0.08328 GALAXY 96 0 - 300 51666 39 0.14011 GALAXY 64 0 - 300 51666 40 0.11689 GALAXY 64 0 - 300 51666 41 0.09348 GALAXY 64 0 - 300 51666 42 0.05386 GALAXY 64 0 - 300 51666 43 0.14804 GALAXY 64 0 - 300 51666 44 0.39936 GALAXY 32 0 - 300 51666 45 0.00028 STAR 1048580 0 - 300 51666 46 0.07911 GALAXY 64 0 - 300 51666 47 0.15183 GALAXY 64 0 - 300 51666 48 0.00038 STAR 8196 0 - 300 51666 49 0.40178 GALAXY 32 0 - 300 51666 50 0.14132 GALAXY 96 0 - 300 51666 51 0.00015 STAR 0 32 - 300 51666 52 0.40157 GALAXY 32 0 - 300 51666 53 1.24444 QSO 1048580 0 - 300 51666 54 0.00000 UNKNOWN 0 16 - 300 51666 55 0.14743 GALAXY 64 0 - 300 51666 56 0.15036 GALAXY 4 0 - 300 51666 57 0.06214 GALAXY 64 0 - 300 51666 58 4.02834 QSO 33554433 0 - 300 51666 59 0.42218 GALAXY 32 0 - 300 51666 60 0.08942 GALAXY 64 0 - 300 51666 61 0.15258 GALAXY 4 0 - 300 51666 62 1.42677 QSO 4 0 - 300 51666 63 0.00014 STAR 8196 0 - 300 51666 64 0.00012 STAR 42991616 0 - 300 51666 65 0.14842 GALAXY 64 0 - 300 51666 66 0.12615 GALAXY 64 0 - 300 51666 67 0.12620 GALAXY 64 0 - 300 51666 68 0.14967 GALAXY 64 0 - 300 51666 69 0.10769 GALAXY 64 0 - 300 51666 70 0.10320 GALAXY 64 0 - 300 51666 71 0.12824 GALAXY 64 0 - 300 51666 72 0.12657 GALAXY 64 0 - 300 51666 73 0.12459 GALAXY 4160 0 - 300 51666 74 0.42838 GALAXY 32 0 - 300 51666 75 1.43880 QSO 1048580 0 - 300 51666 76 0.00000 UNKNOWN 0 16 - 300 51666 77 0.02341 GALAXY 64 0 - 300 51666 78 0.14846 GALAXY 64 0 - 300 51666 79 0.25091 GALAXY 64 0 - 300 51666 80 0.15084 GALAXY 64 0 - 300 51666 81 -0.00023 STAR 42991616 0 - 300 51666 82 0.00038 STAR 1056772 0 - 300 51666 83 0.00045 STAR 8192 0 - 300 51666 84 0.26067 GALAXY 32 0 - 300 51666 85 1.64829 QSO 1 0 - 300 51666 86 0.07861 GALAXY 64 0 - 300 51666 87 0.08304 GALAXY 64 0 - 300 51666 88 1.47973 QSO 4 0 - 300 51666 89 0.00000 UNKNOWN 0 16 - 300 51666 90 0.00091 STAR 9445376 0 - 300 51666 91 0.00000 MISSING 0 0 - 300 51666 92 0.00007 UNKNOWN 64 0 - 300 51666 93 0.08493 GALAXY 64 0 - 300 51666 94 0.08946 GALAXY 64 0 - 300 51666 95 0.41673 GALAXY 32 0 - 300 51666 96 0.29293 GALAXY 96 0 - 300 51666 97 4.41741 QSO 41943041 0 - 300 51666 98 0.07486 GALAXY 64 0 - 300 51666 99 0.12303 GALAXY 64 0 - 300 51666 100 -0.00028 STAR 8192 0 - 300 51666 101 1.44664 QSO 4 0 - 300 51666 102 0.42680 GALAXY 32 0 - 300 51666 103 0.43089 GALAXY 32 0 - 300 51666 104 0.35623 GALAXY 32 0 - 300 51666 105 0.02363 GALAXY 96 0 - 300 51666 106 0.00009 STAR 1056768 0 - 300 51666 107 0.35991 GALAXY 2097152 0 - 300 51666 108 0.14932 GALAXY 64 0 - 300 51666 109 0.14986 GALAXY 64 0 - 300 51666 110 0.07528 GALAXY 64 0 - 300 51666 111 0.14752 GALAXY 64 0 - 300 51666 112 0.08316 GALAXY 64 0 - 300 51666 113 0.19356 GALAXY 64 0 - 300 51666 114 0.15069 GALAXY 64 0 - 300 51666 115 0.26383 GALAXY 32 0 - 300 51666 116 0.15004 GALAXY 64 0 - 300 51666 117 0.15006 GALAXY 64 0 - 300 51666 118 0.00000 UNKNOWN 0 16 - 300 51666 119 0.52366 QSO 2097152 0 - 300 51666 120 0.14876 GALAXY 64 0 - 300 51666 121 0.07752 GALAXY 64 0 - 300 51666 122 0.21185 GALAXY 4 0 - 300 51666 123 0.14873 GALAXY 64 0 - 300 51666 124 0.08485 GALAXY 96 0 - 300 51666 125 0.15014 GALAXY 64 0 - 300 51666 126 0.00000 UNKNOWN 0 16 - 300 51666 127 0.14925 GALAXY 64 0 - 300 51666 128 0.00043 STAR 1056768 0 - 300 51666 129 0.00011 STAR 4194304 0 - 300 51666 130 0.30984 QSO 1 0 - 300 51666 131 0.05319 GALAXY 4 0 - 300 51666 132 0.52223 UNKNOWN 67108896 0 - 300 51666 133 0.14301 GALAXY 64 0 - 300 51666 134 0.09303 GALAXY 64 0 - 300 51666 135 0.60010 QSO 7680 0 - 300 51666 136 0.07877 GALAXY 64 0 - 300 51666 137 1.25229 QSO 16 0 - 300 51666 138 -0.00065 STAR 1 0 - 300 51666 139 0.12768 GALAXY 64 0 - 300 51666 140 0.51508 QSO 1055748 0 - 300 51666 141 0.18678 GALAXY 68 0 - 300 51666 142 0.31770 GALAXY 32 0 - 300 51666 143 0.12708 GALAXY 64 0 - 300 51666 144 0.35933 GALAXY 32 0 - 300 51666 145 0.03078 GALAXY 64 0 - 300 51666 146 0.41126 GALAXY 32 0 - 300 51666 147 0.00036 STAR 8192 0 - 300 51666 148 0.02672 GALAXY 64 0 - 300 51666 149 0.91238 QSO 4 0 - 300 51666 150 0.26059 GALAXY 32 0 - 300 51666 151 0.19853 GALAXY 64 0 - 300 51666 152 0.26159 GALAXY 32 0 - 300 51666 153 0.00000 UNKNOWN 0 16 - 300 51666 154 0.10215 GALAXY 64 0 - 300 51666 155 0.42945 GALAXY 32 0 - 300 51666 156 1.57795 QSO 34603008 0 - 300 51666 157 0.20292 GALAXY 64 0 - 300 51666 158 0.10256 GALAXY 64 0 - 300 51666 159 0.42663 GALAXY 32 0 - 300 51666 160 0.10190 GALAXY 64 0 - 300 51666 161 0.08544 GALAXY 64 0 - 300 51666 162 0.07489 GALAXY 64 0 - 300 51666 163 0.59763 UNKNOWN 2097152 0 - 300 51666 164 0.00000 UNKNOWN 0 16 - 300 51666 165 0.14896 GALAXY 64 0 - 300 51666 166 -0.00007 STAR 33554433 0 - 300 51666 167 0.55481 QSO 1048580 0 - 300 51666 168 0.10207 GALAXY 96 0 - 300 51666 169 0.11562 GALAXY 64 0 - 300 51666 170 0.00090 STAR 1056772 0 - 300 51666 171 -0.00014 STAR 8192 0 - 300 51666 172 0.08339 GALAXY 64 0 - 300 51666 173 0.27003 QSO 4 0 - 300 51666 174 0.50169 QSO 34603009 0 - 300 51666 175 0.14773 GALAXY 64 0 - 300 51666 176 0.17038 GALAXY 64 0 - 300 51666 177 0.00016 STAR 16777216 0 - 300 51666 178 0.45908 GALAXY 32 0 - 300 51666 179 0.25199 GALAXY 32 0 - 300 51666 180 0.08529 GALAXY 64 0 - 300 51666 181 0.73967 QSO 1048580 0 - 300 51666 182 0.00007 UNKNOWN 4 0 - 300 51666 183 0.08573 GALAXY 64 0 - 300 51666 184 0.16654 GALAXY 64 0 - 300 51666 185 0.12753 GALAXY 64 0 - 300 51666 186 0.00000 UNKNOWN 0 16 - 300 51666 187 0.17099 GALAXY 64 0 - 300 51666 188 0.32324 GALAXY 32 0 - 300 51666 189 0.06184 GALAXY 64 0 - 300 51666 190 0.08923 GALAXY 64 0 - 300 51666 191 -0.00032 STAR 5 0 - 300 51666 192 0.12748 GALAXY 64 0 - 300 51666 193 1.21050 QSO 1048580 0 - 300 51666 194 0.10183 GALAXY 64 0 - 300 51666 195 0.55331 QSO 4 0 - 300 51666 196 0.07197 GALAXY 64 0 - 300 51666 197 0.10183 GALAXY 64 0 - 300 51666 198 0.09221 GALAXY 64 0 - 300 51666 199 0.46751 GALAXY 67108896 0 - 300 51666 200 0.07216 GALAXY 64 0 - 300 51666 201 0.00000 UNKNOWN 0 16 - 300 51666 202 -0.00026 STAR 0 2 - 300 51666 203 0.08556 GALAXY 64 0 - 300 51666 204 0.00015 STAR 34611200 0 - 300 51666 205 0.00020 STAR 0 2 - 300 51666 206 0.14963 GALAXY 64 0 - 300 51666 207 0.07639 GALAXY 64 0 - 300 51666 208 0.00049 STAR 1056768 0 - 300 51666 209 0.16619 GALAXY 2097248 0 - 300 51666 210 0.00007 STAR 4194304 0 - 300 51666 211 0.36146 GALAXY 32 0 - 300 51666 212 0.02634 GALAXY 64 0 - 300 51666 213 0.11502 GALAXY 64 0 - 300 51666 214 0.14737 GALAXY 64 0 - 300 51666 215 -0.00029 STAR 1056772 0 - 300 51666 216 0.21147 GALAXY 64 0 - 300 51666 217 0.20984 GALAXY 64 0 - 300 51666 218 0.00008 STAR 42991616 512 - 300 51666 219 0.23436 GALAXY 2097220 0 - 300 51666 220 0.00048 STAR 1056768 0 - 300 51666 221 2.04826 QSO 16 0 - 300 51666 222 0.14421 GALAXY 64 0 - 300 51666 223 0.24243 GALAXY 64 0 - 300 51666 224 0.07104 GALAXY 64 0 - 300 51666 225 0.07691 GALAXY 96 0 - 300 51666 226 0.07667 GALAXY 64 0 - 300 51666 227 0.21870 GALAXY 32 0 - 300 51666 228 0.10177 GALAXY 64 0 - 300 51666 229 0.22014 GALAXY 64 0 - 300 51666 230 0.00063 STAR 42991616 512 - 300 51666 231 0.27907 GALAXY 32 0 - 300 51666 232 0.00017 GALAXY 4194304 0 - 300 51666 233 0.08974 GALAXY 64 0 - 300 51666 234 0.48490 GALAXY 16777216 0 - 300 51666 235 0.14625 GALAXY 64 0 - 300 51666 236 0.07761 GALAXY 64 0 - 300 51666 237 0.25235 GALAXY 96 0 - 300 51666 238 0.00034 STAR 8396800 0 - 300 51666 239 0.14909 GALAXY 64 0 - 300 51666 240 0.00000 UNKNOWN 0 16 - 300 51666 241 0.39733 GALAXY 67108896 0 - 300 51666 242 0.07659 GALAXY 68 0 - 300 51666 243 0.00041 STAR 34611200 0 - 300 51666 244 0.00038 STAR 8196 0 - 300 51666 245 0.00017 STAR 9437184 0 - 300 51666 246 0.21586 GALAXY 96 0 - 300 51666 247 0.08919 GALAXY 64 0 - 300 51666 248 0.07703 GALAXY 64 0 - 300 51666 249 0.13209 GALAXY 64 0 - 300 51666 250 0.00000 UNKNOWN 64 0 - 300 51666 251 0.39858 GALAXY 32 0 - 300 51666 252 0.00045 STAR 0 34 - 300 51666 253 0.13248 GALAXY 64 0 - 300 51666 254 0.07639 GALAXY 64 0 - 300 51666 255 0.13307 GALAXY 64 0 - 300 51666 256 0.07342 GALAXY 64 0 - 300 51666 257 0.04759 GALAXY 64 0 - 300 51666 258 0.11521 GALAXY 64 0 - 300 51666 259 0.00000 UNKNOWN 0 16 - 300 51666 260 0.13266 GALAXY 64 0 - 300 51666 261 0.02295 GALAXY 64 0 - 300 51666 262 0.08751 GALAXY 64 0 - 300 51666 263 0.08812 GALAXY 96 0 - 300 51666 264 0.11412 GALAXY 64 0 - 300 51666 265 0.35928 GALAXY 32 0 - 300 51666 266 0.07725 GALAXY 64 0 - 300 51666 267 0.38173 GALAXY 32 0 - 300 51666 268 1.53853 QSO 4 0 - 300 51666 269 0.00000 UNKNOWN 0 16 - 300 51666 270 0.08781 GALAXY 64 0 - 300 51666 271 0.08838 GALAXY 64 0 - 300 51666 272 0.08714 GALAXY 64 0 - 300 51666 273 0.14894 GALAXY 64 0 - 300 51666 274 0.38145 GALAXY 32 0 - 300 51666 275 0.33003 GALAXY 32 0 - 300 51666 276 0.04782 GALAXY 64 0 - 300 51666 277 0.00113 STAR 1056768 0 - 300 51666 278 0.24489 GALAXY 1055748 0 - 300 51666 279 0.08887 GALAXY 64 0 - 300 51666 280 0.08803 GALAXY 64 0 - 300 51666 281 0.07746 GALAXY 64 0 - 300 51666 282 0.14698 GALAXY 4 0 - 300 51666 283 0.08831 GALAXY 64 0 - 300 51666 284 1.44226 QSO 1048580 0 - 300 51666 285 0.07630 GALAXY 64 0 - 300 51666 286 0.16703 GALAXY 64 0 - 300 51666 287 0.49559 GALAXY 4096 0 - 300 51666 288 0.00008 STAR 9437188 0 - 300 51666 289 0.14907 GALAXY 96 0 - 300 51666 290 0.07357 GALAXY 64 0 - 300 51666 291 0.38812 GALAXY 32 0 - 300 51666 292 0.08909 GALAXY 64 0 - 300 51666 293 0.00111 STAR 1056768 0 - 300 51666 294 2.10548 QSO 64 0 - 300 51666 295 0.07617 GALAXY 64 0 - 300 51666 296 0.07664 GALAXY 64 0 - 300 51666 297 0.08988 GALAXY 64 0 - 300 51666 298 0.11380 GALAXY 64 0 - 300 51666 299 0.00000 UNKNOWN 0 16 - 300 51666 300 0.44568 GALAXY 16777216 0 - 300 51666 301 0.21271 GALAXY 64 0 - 300 51666 302 0.08911 GALAXY 64 0 - 300 51666 303 0.17628 GALAXY 64 0 - 300 51666 304 0.62332 QSO 35651584 0 - 300 51666 305 0.10207 GALAXY 64 0 - 300 51666 306 -0.00009 STAR 64 0 - 300 51666 307 -0.00026 STAR 0 2 - 300 51666 308 0.28248 GALAXY 32 0 - 300 51666 309 0.10168 GALAXY 96 0 - 300 51666 310 0.00042 STAR 8192 0 - 300 51666 311 0.07334 GALAXY 68 0 - 300 51666 312 0.08904 GALAXY 64 0 - 300 51666 313 0.00043 STAR 1 0 - 300 51666 314 0.00059 STAR 8192 0 - 300 51666 315 0.14599 GALAXY 64 0 - 300 51666 316 1.09769 QSO 4 0 - 300 51666 317 0.00000 UNKNOWN 0 16 - 300 51666 318 0.08784 GALAXY 64 0 - 300 51666 319 0.00025 STAR 0 34 - 300 51666 320 0.07824 GALAXY 64 0 - 300 51666 321 0.00093 STAR 8192 0 - 300 51666 322 0.18611 GALAXY 64 0 - 300 51666 323 0.00013 STAR 0 2 - 300 51666 324 0.23679 GALAXY 64 0 - 300 51666 325 0.06633 GALAXY 96 0 - 300 51666 326 0.32366 GALAXY 32 0 - 300 51666 327 1.67097 QSO 36700160 0 - 300 51666 328 0.00000 UNKNOWN 0 16 - 300 51666 329 0.42909 GALAXY 32 0 - 300 51666 330 0.18046 GALAXY 64 0 - 300 51666 331 0.00015 STAR 4096 0 - 300 51666 332 0.52826 UNKNOWN 2097152 0 - 300 51666 333 0.03367 GALAXY 64 0 - 300 51666 334 0.20915 GALAXY 64 0 - 300 51666 335 0.08877 GALAXY 64 0 - 300 51666 336 0.16454 GALAXY 96 0 - 300 51666 337 0.40813 GALAXY 1 0 - 300 51666 338 0.40301 GALAXY 32 0 - 300 51666 339 1.76668 QSO 1048580 0 - 300 51666 340 0.16452 GALAXY 64 0 - 300 51666 341 0.07758 GALAXY 64 0 - 300 51666 342 -0.00007 STAR 8192 0 - 300 51666 343 0.07735 GALAXY 64 0 - 300 51666 344 0.00000 UNKNOWN 1048580 0 - 300 51666 345 0.11024 GALAXY 64 0 - 300 51666 346 0.14427 GALAXY 96 0 - 300 51666 347 0.07712 GALAXY 64 0 - 300 51666 348 0.07716 GALAXY 64 0 - 300 51666 349 0.00003 STAR 0 2 - 300 51666 350 0.00079 STAR 1056768 0 - 300 51666 351 0.00073 STAR 8192 0 - 300 51666 352 0.07226 GALAXY 96 0 - 300 51666 353 0.00049 STAR 8192 0 - 300 51666 354 0.18596 GALAXY 64 0 - 300 51666 355 0.47368 UNKNOWN 4096 0 - 300 51666 356 0.00000 UNKNOWN 0 16 - 300 51666 357 0.00103 STAR 34611200 0 - 300 51666 358 -0.00002 STAR 4194304 0 - 300 51666 359 0.07178 GALAXY 64 0 - 300 51666 360 0.00045 STAR 8192 0 - 300 51666 361 0.00041 STAR 34611200 0 - 300 51666 362 1.43345 QSO 4 0 - 300 51666 363 0.15149 GALAXY 64 0 - 300 51666 364 0.08906 GALAXY 64 0 - 300 51666 365 0.41500 GALAXY 32 0 - 300 51666 366 0.15981 GALAXY 64 0 - 300 51666 367 0.16489 GALAXY 64 0 - 300 51666 368 0.42274 GALAXY 32 0 - 300 51666 369 0.00022 STAR 0 34 - 300 51666 370 0.50641 UNKNOWN 67108896 0 - 300 51666 371 0.02804 GALAXY 64 0 - 300 51666 372 0.15232 GALAXY 64 0 - 300 51666 373 0.28704 GALAXY 32 0 - 300 51666 374 0.15136 GALAXY 64 0 - 300 51666 375 0.15033 GALAXY 64 0 - 300 51666 376 0.15081 GALAXY 64 0 - 300 51666 377 0.08936 GALAXY 64 0 - 300 51666 378 0.15203 GALAXY 64 0 - 300 51666 379 0.00046 STAR 9445376 0 - 300 51666 380 0.00000 UNKNOWN 0 16 - 300 51666 381 0.14497 GALAXY 64 0 - 300 51666 382 0.15893 GALAXY 64 0 - 300 51666 383 0.08897 GALAXY 64 0 - 300 51666 384 0.08915 GALAXY 64 0 - 300 51666 385 0.00117 STAR 1056768 0 - 300 51666 386 0.96358 QSO 42991616 0 - 300 51666 387 0.48823 GALAXY 67108896 0 - 300 51666 388 0.00027 STAR 4 0 - 300 51666 389 0.08977 GALAXY 96 0 - 300 51666 390 0.13236 GALAXY 64 0 - 300 51666 391 0.08982 GALAXY 96 0 - 300 51666 392 0.13546 GALAXY 64 0 - 300 51666 393 0.08919 GALAXY 64 0 - 300 51666 394 0.08985 GALAXY 64 0 - 300 51666 395 0.00000 UNKNOWN 0 16 - 300 51666 396 0.08961 GALAXY 64 0 - 300 51666 397 0.08847 GALAXY 64 0 - 300 51666 398 0.08951 GALAXY 64 0 - 300 51666 399 0.08995 GALAXY 64 0 - 300 51666 400 0.24238 GALAXY 32 0 - 300 51666 401 0.00029 STAR 1056768 0 - 300 51666 402 0.09023 GALAXY 64 0 - 300 51666 403 0.08988 GALAXY 64 0 - 300 51666 404 0.08949 GALAXY 64 0 - 300 51666 405 0.00000 UNKNOWN 0 16 - 300 51666 406 0.08907 GALAXY 64 0 - 300 51666 407 0.69295 QSO 1048580 0 - 300 51666 408 0.11588 GALAXY 64 0 - 300 51666 409 0.09144 GALAXY 96 0 - 300 51666 410 0.14461 GALAXY 64 0 - 300 51666 411 0.25914 GALAXY 4 0 - 300 51666 412 0.07109 GALAXY 64 0 - 300 51666 413 0.69910 QSO 42998784 0 - 300 51666 414 0.00000 MISSING 0 0 - 300 51666 415 0.96162 QSO 1048580 0 - 300 51666 416 0.06593 GALAXY 64 0 - 300 51666 417 0.47075 QSO 4 0 - 300 51666 418 0.08909 GALAXY 96 0 - 300 51666 419 0.07183 GALAXY 64 0 - 300 51666 420 0.16815 GALAXY 64 0 - 300 51666 421 0.08959 GALAXY 64 0 - 300 51666 422 0.04810 GALAXY 64 0 - 300 51666 423 0.00000 UNKNOWN 0 16 - 300 51666 424 0.27616 GALAXY 96 0 - 300 51666 425 0.15064 GALAXY 96 0 - 300 51666 426 2.50454 QSO 1048580 0 - 300 51666 427 0.09062 GALAXY 64 0 - 300 51666 428 0.16667 GALAXY 64 0 - 300 51666 429 0.08810 GALAXY 64 0 - 300 51666 430 0.08771 GALAXY 64 0 - 300 51666 431 0.00112 STAR 8196 0 - 300 51666 432 0.08926 GALAXY 64 0 - 300 51666 433 0.00015 STAR 64 0 - 300 51666 434 0.08822 GALAXY 96 0 - 300 51666 435 0.09028 GALAXY 64 0 - 300 51666 436 0.14994 GALAXY 64 0 - 300 51666 437 0.14648 GALAXY 64 0 - 300 51666 438 0.08941 GALAXY 64 0 - 300 51666 439 0.48053 GALAXY 67108896 0 - 300 51666 440 0.00025 STAR 9445376 0 - 300 51666 441 0.17438 GALAXY 64 0 - 300 51666 442 1.54582 QSO 128 0 - 300 51666 443 0.07114 GALAXY 64 0 - 300 51666 444 0.64777 QSO 1048580 0 - 300 51666 445 0.08865 GALAXY 96 0 - 300 51666 446 0.04816 GALAXY 64 0 - 300 51666 447 0.09031 GALAXY 96 0 - 300 51666 448 0.08955 GALAXY 96 0 - 300 51666 449 0.00036 STAR 1056772 0 - 300 51666 450 -0.00020 STAR 6144 0 - 300 51666 451 0.08945 GALAXY 64 0 - 300 51666 452 0.12455 GALAXY 64 0 - 300 51666 453 0.28376 GALAXY 96 0 - 300 51666 454 0.17093 GALAXY 64 0 - 300 51666 455 0.09053 GALAXY 64 0 - 300 51666 456 0.00000 UNKNOWN 0 16 - 300 51666 457 0.00041 STAR 1056768 0 - 300 51666 458 0.00040 STAR 9437184 0 - 300 51666 459 0.00082 STAR 0 2 - 300 51666 460 0.42286 GALAXY 32 0 - 300 51666 461 3.60097 QSO 524289 0 - 300 51666 462 0.11582 GALAXY 96 0 - 300 51666 463 0.11579 GALAXY 64 0 - 300 51666 464 0.08606 GALAXY 64 0 - 300 51666 465 0.08808 GALAXY 64 0 - 300 51666 466 0.18011 GALAXY 64 0 - 300 51666 467 0.00000 UNKNOWN 0 16 - 300 51666 468 0.17985 GALAXY 4 0 - 300 51666 469 0.00013 STAR 64 0 - 300 51666 470 0.00015 STAR 0 2 - 300 51666 471 0.50219 GALAXY 67108896 0 - 300 51666 472 4.29072 QSO 1 0 - 300 51666 473 0.00034 STAR 0 34 - 300 51666 474 0.12931 GALAXY 64 0 - 300 51666 475 0.49828 GALAXY 67108896 0 - 300 51666 476 0.06279 GALAXY 64 0 - 300 51666 477 0.25869 GALAXY 96 0 - 300 51666 478 0.08691 GALAXY 64 0 - 300 51666 479 0.07113 GALAXY 64 0 - 300 51666 480 0.04606 GALAXY 64 0 - 300 51666 481 0.18031 GALAXY 64 0 - 300 51666 482 0.12915 GALAXY 64 0 - 300 51666 483 0.07077 GALAXY 64 0 - 300 51666 484 0.18044 GALAXY 64 0 - 300 51666 485 0.04599 GALAXY 64 0 - 300 51666 486 0.00000 UNKNOWN 0 16 - 300 51666 487 0.14807 GALAXY 64 0 - 300 51666 488 1.08298 QSO 7172 0 - 300 51666 489 0.43216 GALAXY 32 0 - 300 51666 490 0.10043 GALAXY 64 0 - 300 51666 491 0.94688 QSO 1048580 0 - 300 51666 492 0.11179 GALAXY 64 0 - 300 51666 493 0.08596 GALAXY 64 0 - 300 51666 494 0.14772 GALAXY 64 0 - 300 51666 495 0.14731 GALAXY 64 0 - 300 51666 496 0.14763 GALAXY 64 0 - 300 51666 497 1.55732 QSO 1 0 - 300 51666 498 0.42393 GALAXY 32 0 - 300 51666 499 0.00077 STAR 8192 0 - 300 51666 500 0.14728 GALAXY 64 0 - 300 51666 501 0.06250 GALAXY 64 0 - 300 51666 502 0.00057 STAR 0 34 - 300 51666 503 0.14702 GALAXY 64 0 - 300 51666 504 0.17057 GALAXY 64 0 - 300 51666 505 0.08553 GALAXY 64 0 - 300 51666 506 0.10006 GALAXY 64 0 - 300 51666 507 0.13025 GALAXY 64 0 - 300 51666 508 0.11056 GALAXY 64 0 - 300 51666 509 0.09938 GALAXY 64 0 - 300 51666 510 0.00047 STAR 42999808 0 - 300 51666 511 0.00112 STAR 1056768 0 - 300 51666 512 0.00090 STAR 1056768 0 - 300 51666 513 0.45319 GALAXY 32 0 - 300 51666 514 0.14580 GALAXY 64 0 - 300 51666 515 0.14613 GALAXY 64 0 - 300 51666 516 0.19664 GALAXY 64 0 - 300 51666 517 0.14727 GALAXY 64 0 - 300 51666 518 0.04826 GALAXY 64 0 - 300 51666 519 0.00000 UNKNOWN 0 16 - 300 51666 520 0.00022 STAR 1056772 0 - 300 51666 521 0.08881 GALAXY 64 0 - 300 51666 522 0.11455 UNKNOWN 34611200 0 - 300 51666 523 0.26618 GALAXY 32 0 - 300 51666 524 0.37529 GALAXY 32 0 - 300 51666 525 0.08831 GALAXY 64 0 - 300 51666 526 0.08896 GALAXY 96 0 - 300 51666 527 0.14553 GALAXY 96 0 - 300 51666 528 0.18064 GALAXY 64 0 - 300 51666 529 0.14590 GALAXY 96 0 - 300 51666 530 0.17514 GALAXY 64 0 - 300 51666 531 0.37517 GALAXY 32 0 - 300 51666 532 0.26420 GALAXY 96 0 - 300 51666 533 0.31851 GALAXY 32 0 - 300 51666 534 0.40519 QSO 128 0 - 300 51666 535 0.18935 GALAXY 64 0 - 300 51666 536 0.00000 UNKNOWN 0 16 - 300 51666 537 0.35151 GALAXY 32 0 - 300 51666 538 0.43178 GALAXY 32 0 - 300 51666 539 0.35115 GALAXY 32 0 - 300 51666 540 0.26588 GALAXY 96 0 - 300 51666 541 0.03031 GALAXY 64 0 - 300 51666 542 0.00019 STAR 64 0 - 300 51666 543 3.69642 QSO 1 0 - 300 51666 544 -0.00011 STAR 1056768 0 - 300 51666 545 0.13610 GALAXY 4 0 - 300 51666 546 0.14826 GALAXY 64 0 - 300 51666 547 -0.00049 STAR 1056768 0 - 300 51666 548 0.03033 GALAXY 96 0 - 300 51666 549 1.12969 GALAXY 67108896 0 - 300 51666 550 0.17118 GALAXY 64 0 - 300 51666 551 0.11531 GALAXY 64 0 - 300 51666 552 0.45734 GALAXY 16777216 0 - 300 51666 553 0.19666 GALAXY 2097216 0 - 300 51666 554 1.55573 QSO 4 0 - 300 51666 555 0.00000 UNKNOWN 0 16 - 300 51666 556 0.15703 GALAXY 4 0 - 300 51666 557 0.14704 GALAXY 64 0 - 300 51666 558 0.14686 GALAXY 64 0 - 300 51666 559 0.20054 GALAXY 4 0 - 300 51666 560 1.82931 QSO 1048580 0 - 300 51666 561 0.11575 GALAXY 64 0 - 300 51666 562 0.76244 GALAXY 64 0 - 300 51666 563 0.19625 GALAXY 64 0 - 300 51666 564 0.26430 GALAXY 96 0 - 300 51666 565 0.13618 GALAXY 64 0 - 300 51666 566 0.00009 STAR 1056768 0 - 300 51666 567 0.07213 GALAXY 64 0 - 300 51666 568 0.07096 GALAXY 64 0 - 300 51666 569 0.37545 GALAXY 32 0 - 300 51666 570 0.11675 GALAXY 96 0 - 300 51666 571 0.08791 GALAXY 64 0 - 300 51666 572 1.08605 QSO 7172 0 - 300 51666 573 0.18140 GALAXY 64 0 - 300 51666 574 0.08786 GALAXY 64 0 - 300 51666 575 0.07149 GALAXY 64 0 - 300 51666 576 0.18204 GALAXY 64 0 - 300 51666 577 0.18985 GALAXY 96 0 - 300 51666 578 0.00000 UNKNOWN 0 16 - 300 51666 579 0.09931 GALAXY 64 0 - 300 51666 580 0.13782 GALAXY 64 0 - 300 51666 581 0.00000 UNKNOWN 0 16 - 300 51666 582 0.00007 UNKNOWN 64 0 - 300 51666 583 0.32271 GALAXY 32 0 - 300 51666 584 1.51839 QSO 64 0 - 300 51666 585 0.04565 GALAXY 96 0 - 300 51666 586 0.10226 GALAXY 96 0 - 300 51666 587 0.12975 GALAXY 64 0 - 300 51666 588 0.04833 GALAXY 64 0 - 300 51666 589 0.00022 STAR 4 0 - 300 51666 590 0.10220 GALAXY 64 0 - 300 51666 591 0.00049 STAR 8192 0 - 300 51666 592 0.16614 GALAXY 64 0 - 300 51666 593 0.14030 GALAXY 64 0 - 300 51666 594 0.11568 GALAXY 64 0 - 300 51666 595 0.12673 GALAXY 64 0 - 300 51666 596 0.13924 GALAXY 64 0 - 300 51666 597 0.47058 GALAXY 67108896 0 - 300 51666 598 0.10284 GALAXY 64 0 - 300 51666 599 0.12714 GALAXY 64 0 - 300 51666 600 0.16358 GALAXY 67108896 0 - 300 51666 601 1.53464 QSO 64 0 - 300 51666 602 0.00007 UNKNOWN 96 0 - 300 51666 603 0.11637 GALAXY 64 0 - 300 51666 604 0.11591 GALAXY 96 0 - 300 51666 605 0.00000 UNKNOWN 0 16 - 300 51666 606 0.32262 QSO 1 0 - 300 51666 607 0.14825 GALAXY 64 0 - 300 51666 608 0.07158 GALAXY 64 0 - 300 51666 609 0.14664 GALAXY 64 0 - 300 51666 610 0.14664 GALAXY 64 0 - 300 51666 611 0.15109 GALAXY 64 0 - 300 51666 612 0.08769 GALAXY 96 0 - 300 51666 613 0.10276 GALAXY 96 0 - 300 51666 614 0.33950 QSO 1048580 0 - 300 51666 615 0.04863 GALAXY 64 0 - 300 51666 616 0.14831 GALAXY 64 0 - 300 51666 617 0.00007 UNKNOWN 64 0 - 300 51666 618 0.00012 STAR 0 2 - 300 51666 619 0.07178 GALAXY 96 0 - 300 51666 620 0.00020 STAR 0 34 - 300 51666 621 0.48529 QSO 4 0 - 300 51666 622 0.20501 GALAXY 64 0 - 300 51666 623 0.41078 GALAXY 32 0 - 300 51666 624 0.11547 GALAXY 64 0 - 300 51666 625 0.11546 GALAXY 64 0 - 300 51666 626 0.14691 GALAXY 64 0 - 300 51666 627 0.00000 UNKNOWN 0 16 - 300 51666 628 0.12824 GALAXY 64 0 - 300 51666 629 0.48184 GALAXY 32 0 - 300 51666 630 0.11626 GALAXY 64 0 - 300 51666 631 0.11433 GALAXY 64 0 - 300 51666 632 0.14786 GALAXY 64 0 - 300 51666 633 0.11648 GALAXY 64 0 - 300 51666 634 0.03055 GALAXY 64 0 - 300 51666 635 0.11610 GALAXY 64 0 - 300 51666 636 0.48095 GALAXY 67108896 0 - 300 51666 637 0.11513 GALAXY 64 0 - 300 51666 638 0.11567 GALAXY 64 0 - 300 51666 639 0.11499 GALAXY 64 0 - 300 51666 640 0.02993 GALAXY 64 0 - 301 51641 1 0.16337 GALAXY 64 0 - 301 51641 2 0.02439 GALAXY 64 0 - 301 51641 3 0.14565 GALAXY 64 0 - 301 51641 4 0.11478 GALAXY 64 0 - 301 51641 5 0.10632 GALAXY 64 0 - 301 51641 6 0.18540 GALAXY 64 0 - 301 51641 7 0.06825 GALAXY 64 0 - 301 51641 8 0.02537 GALAXY 64 0 - 301 51641 9 0.00000 UNKNOWN 0 16 - 301 51641 10 0.05417 GALAXY 64 0 - 301 51641 11 0.16383 GALAXY 64 0 - 301 51641 12 0.10509 GALAXY 64 0 - 301 51641 13 0.02913 GALAXY 64 0 - 301 51641 14 0.14472 GALAXY 64 0 - 301 51641 15 0.43563 GALAXY 32 0 - 301 51641 16 0.16043 GALAXY 64 0 - 301 51641 17 1.59160 QSO 1048580 0 - 301 51641 18 -0.00002 STAR 0 2 - 301 51641 19 0.16924 GALAXY 96 0 - 301 51641 20 0.10603 GALAXY 64 0 - 301 51641 21 1.74312 QSO 34603008 0 - 301 51641 22 0.18504 GALAXY 64 0 - 301 51641 23 -0.00008 STAR 1056772 0 - 301 51641 24 -0.00006 STAR 5 0 - 301 51641 25 0.10547 GALAXY 64 0 - 301 51641 26 0.05900 GALAXY 64 0 - 301 51641 27 0.18390 GALAXY 64 0 - 301 51641 28 0.02460 GALAXY 96 0 - 301 51641 29 0.44514 GALAXY 32 0 - 301 51641 30 0.07044 GALAXY 64 0 - 301 51641 31 0.02438 GALAXY 64 0 - 301 51641 32 0.18349 GALAXY 64 0 - 301 51641 33 0.44098 GALAXY 67108896 0 - 301 51641 34 0.43329 GALAXY 32 0 - 301 51641 35 0.33716 QSO 41943040 0 - 301 51641 36 2.45802 QSO 0 0 - 301 51641 37 0.04790 GALAXY 64 0 - 301 51641 38 0.00000 UNKNOWN 0 16 - 301 51641 39 -0.00002 STAR 8192 0 - 301 51641 40 0.17442 GALAXY 64 0 - 301 51641 41 0.16517 GALAXY 96 0 - 301 51641 42 0.07376 GALAXY 64 0 - 301 51641 43 0.35075 QSO 4 0 - 301 51641 44 0.00000 UNKNOWN 0 16 - 301 51641 45 0.44461 GALAXY 32 0 - 301 51641 46 0.44182 GALAXY 32 0 - 301 51641 47 0.14426 GALAXY 64 0 - 301 51641 48 0.43396 GALAXY 32 0 - 301 51641 49 0.07818 GALAXY 64 0 - 301 51641 50 0.40204 GALAXY 32 0 - 301 51641 51 0.92680 QSO 9437188 0 - 301 51641 52 0.00000 STAR 8192 0 - 301 51641 53 1.21103 QSO 1048580 0 - 301 51641 54 0.40010 GALAXY 32 0 - 301 51641 55 0.09252 GALAXY 64 0 - 301 51641 56 0.13163 GALAXY 64 0 - 301 51641 57 -0.00006 STAR 1048580 0 - 301 51641 58 0.00030 STAR 8192 0 - 301 51641 59 0.00003 STAR 0 32 - 301 51641 60 2.52186 QSO 1048580 0 - 301 51641 61 0.00008 STAR 0 34 - 301 51641 62 -0.00003 STAR 1056768 0 - 301 51641 63 0.43418 GALAXY 32 0 - 301 51641 64 0.43458 GALAXY 32 0 - 301 51641 65 0.44267 GALAXY 32 0 - 301 51641 66 0.16185 GALAXY 64 0 - 301 51641 67 0.43560 GALAXY 32 0 - 301 51641 68 0.12213 GALAXY 64 0 - 301 51641 69 0.43999 GALAXY 69206048 0 - 301 51641 70 0.18525 GALAXY 64 0 - 301 51641 71 0.04428 GALAXY 96 0 - 301 51641 72 0.11507 GALAXY 64 0 - 301 51641 73 0.14427 GALAXY 64 0 - 301 51641 74 0.05426 GALAXY 64 0 - 301 51641 75 0.00000 UNKNOWN 0 16 - 301 51641 76 0.10519 GALAXY 64 0 - 301 51641 77 0.18413 GALAXY 64 0 - 301 51641 78 -0.00024 STAR 42999808 0 - 301 51641 79 0.39538 GALAXY 32 0 - 301 51641 80 0.08184 GALAXY 64 0 - 301 51641 81 0.14695 GALAXY 64 0 - 301 51641 82 0.14457 GALAXY 64 0 - 301 51641 83 0.02478 GALAXY 96 0 - 301 51641 84 0.10628 GALAXY 64 0 - 301 51641 85 0.16746 GALAXY 64 0 - 301 51641 86 0.00018 STAR 1 0 - 301 51641 87 0.35331 GALAXY 32 0 - 301 51641 88 0.00024 STAR 8192 0 - 301 51641 89 0.00000 UNKNOWN 0 16 - 301 51641 90 0.18825 GALAXY 4096 0 - 301 51641 91 0.00000 MISSING 0 0 - 301 51641 92 -0.00008 UNKNOWN 9445376 0 - 301 51641 93 0.00035 STAR 8192 0 - 301 51641 94 0.14548 GALAXY 4 0 - 301 51641 95 0.02424 GALAXY 4 0 - 301 51641 96 0.10622 GALAXY 64 0 - 301 51641 97 -0.00004 STAR 16777216 0 - 301 51641 98 2.06025 QSO 1048580 512 - 301 51641 99 0.10616 GALAXY 64 0 - 301 51641 100 0.34852 GALAXY 32 0 - 301 51641 101 0.13191 GALAXY 64 0 - 301 51641 102 0.09348 GALAXY 64 0 - 301 51641 103 0.02475 GALAXY 96 0 - 301 51641 104 -0.00085 STAR 1056768 0 - 301 51641 105 -0.00020 STAR 1056768 0 - 301 51641 106 0.00014 STAR 5 0 - 301 51641 107 0.10904 GALAXY 4 0 - 301 51641 108 0.01144 GALAXY 64 0 - 301 51641 109 0.00000 UNKNOWN 0 16 - 301 51641 110 0.18824 GALAXY 64 0 - 301 51641 111 0.00103 STAR 8192 0 - 301 51641 112 -0.00014 STAR 8192 0 - 301 51641 113 0.35890 GALAXY 32 0 - 301 51641 114 0.00034 STAR 16 0 - 301 51641 115 0.13188 GALAXY 64 0 - 301 51641 116 0.16497 GALAXY 64 0 - 301 51641 117 1.86426 QSO 4 0 - 301 51641 118 0.13147 GALAXY 64 0 - 301 51641 119 0.16288 GALAXY 64 0 - 301 51641 120 0.08173 GALAXY 64 0 - 301 51641 121 0.13031 GALAXY 64 0 - 301 51641 122 1.96901 QSO 1048580 0 - 301 51641 123 0.11500 GALAXY 96 0 - 301 51641 124 0.03004 GALAXY 64 0 - 301 51641 125 0.10514 GALAXY 64 0 - 301 51641 126 0.00000 UNKNOWN 0 16 - 301 51641 127 0.19170 GALAXY 64 0 - 301 51641 128 0.19774 GALAXY 64 0 - 301 51641 129 0.11511 GALAXY 64 0 - 301 51641 130 -0.00021 STAR 2097168 0 - 301 51641 131 0.13143 GALAXY 64 0 - 301 51641 132 1.77029 QSO 4 0 - 301 51641 133 0.17237 GALAXY 64 0 - 301 51641 134 0.16918 GALAXY 64 0 - 301 51641 135 0.18705 GALAXY 64 0 - 301 51641 136 0.08906 GALAXY 64 0 - 301 51641 137 0.00051 STAR 1 0 - 301 51641 138 0.02430 GALAXY 64 0 - 301 51641 139 0.40541 QSO 7172 0 - 301 51641 140 0.02951 GALAXY 68 0 - 301 51641 141 0.00044 STAR 8196 0 - 301 51641 142 0.00000 STAR 4 0 - 301 51641 143 0.15916 GALAXY 64 0 - 301 51641 144 0.10608 GALAXY 64 0 - 301 51641 145 1.55425 QSO 1048580 0 - 301 51641 146 0.16138 GALAXY 96 0 - 301 51641 147 0.35877 GALAXY 32 0 - 301 51641 148 0.35754 GALAXY 32 0 - 301 51641 149 1.21937 QSO 35127296 0 - 301 51641 150 0.00011 STAR 9437188 0 - 301 51641 151 0.16354 GALAXY 5188 0 - 301 51641 152 0.07876 GALAXY 64 0 - 301 51641 153 0.22171 GALAXY 64 0 - 301 51641 154 1.38755 QSO 1048580 0 - 301 51641 155 0.18646 GALAXY 64 0 - 301 51641 156 0.18987 GALAXY 64 0 - 301 51641 157 0.16555 GALAXY 64 0 - 301 51641 158 0.16525 GALAXY 64 0 - 301 51641 159 0.00000 UNKNOWN 0 16 - 301 51641 160 2.52267 QSO 2097152 0 - 301 51641 161 0.10541 GALAXY 64 0 - 301 51641 162 0.02751 GALAXY 64 0 - 301 51641 163 0.13141 GALAXY 64 0 - 301 51641 164 0.10475 GALAXY 64 0 - 301 51641 165 0.06950 GALAXY 96 0 - 301 51641 166 0.32840 GALAXY 32 0 - 301 51641 167 -0.00002 STAR 4 0 - 301 51641 168 0.13158 GALAXY 96 0 - 301 51641 169 -0.00012 STAR 33554433 0 - 301 51641 170 0.32750 GALAXY 32 0 - 301 51641 171 0.32660 GALAXY 32 0 - 301 51641 172 0.00000 UNKNOWN 0 16 - 301 51641 173 0.19695 GALAXY 64 0 - 301 51641 174 0.10804 GALAXY 64 0 - 301 51641 175 0.15695 GALAXY 64 0 - 301 51641 176 0.02951 GALAXY 64 0 - 301 51641 177 0.18904 GALAXY 64 0 - 301 51641 178 0.14383 GALAXY 64 0 - 301 51641 179 0.07885 GALAXY 64 0 - 301 51641 180 0.02916 GALAXY 64 0 - 301 51641 181 0.28008 GALAXY 1 0 - 301 51641 182 0.10732 GALAXY 64 0 - 301 51641 183 0.14343 GALAXY 64 0 - 301 51641 184 0.16077 GALAXY 64 0 - 301 51641 185 0.15454 GALAXY 64 0 - 301 51641 186 0.16715 GALAXY 64 0 - 301 51641 187 -0.00032 STAR 8196 0 - 301 51641 188 0.07017 GALAXY 64 0 - 301 51641 189 0.15705 GALAXY 64 0 - 301 51641 190 0.08941 GALAXY 64 0 - 301 51641 191 0.16661 GALAXY 64 0 - 301 51641 192 0.10592 GALAXY 64 0 - 301 51641 193 0.15557 GALAXY 64 0 - 301 51641 194 0.00000 UNKNOWN 0 16 - 301 51641 195 0.14327 GALAXY 96 0 - 301 51641 196 0.29113 GALAXY 32 0 - 301 51641 197 0.06988 GALAXY 64 0 - 301 51641 198 0.00009 STAR 42999808 0 - 301 51641 199 0.10507 GALAXY 64 0 - 301 51641 200 0.16700 GALAXY 96 0 - 301 51641 201 0.08880 GALAXY 64 0 - 301 51641 202 0.18816 GALAXY 64 0 - 301 51641 203 0.40070 GALAXY 32 0 - 301 51641 204 0.08683 GALAXY 64 0 - 301 51641 205 0.15039 GALAXY 64 0 - 301 51641 206 0.19005 GALAXY 64 0 - 301 51641 207 0.39896 GALAXY 32 0 - 301 51641 208 0.19913 GALAXY 64 0 - 301 51641 209 -0.00011 STAR 0 34 - 301 51641 210 0.18852 GALAXY 64 0 - 301 51641 211 0.14737 GALAXY 64 0 - 301 51641 212 0.19564 GALAXY 64 0 - 301 51641 213 0.16324 GALAXY 64 0 - 301 51641 214 0.06920 GALAXY 64 0 - 301 51641 215 -0.00031 STAR 1 0 - 301 51641 216 0.15072 GALAXY 64 0 - 301 51641 217 0.00000 UNKNOWN 0 16 - 301 51641 218 0.39573 GALAXY 2097184 0 - 301 51641 219 0.03039 GALAXY 64 0 - 301 51641 220 0.16195 GALAXY 64 0 - 301 51641 221 0.07907 GALAXY 64 0 - 301 51641 222 -0.00024 STAR 34603008 0 - 301 51641 223 -0.00001 STAR 1048580 0 - 301 51641 224 0.06955 GALAXY 64 0 - 301 51641 225 0.16787 GALAXY 64 0 - 301 51641 226 0.00020 STAR 4 0 - 301 51641 227 0.19598 GALAXY 64 0 - 301 51641 228 0.11823 GALAXY 64 0 - 301 51641 229 0.15092 GALAXY 64 0 - 301 51641 230 0.00010 STAR 1056768 0 - 301 51641 231 -0.00017 STAR 0 96 - 301 51641 232 0.01215 UNKNOWN 42991616 0 - 301 51641 233 0.03011 GALAXY 64 0 - 301 51641 234 0.16306 GALAXY 64 0 - 301 51641 235 0.06914 GALAXY 64 0 - 301 51641 236 0.14335 GALAXY 64 0 - 301 51641 237 0.03020 GALAXY 64 0 - 301 51641 238 0.35712 GALAXY 32 0 - 301 51641 239 0.00000 UNKNOWN 0 16 - 301 51641 240 0.19609 GALAXY 64 0 - 301 51641 241 0.10304 GALAXY 64 0 - 301 51641 242 0.19081 GALAXY 64 0 - 301 51641 243 0.11453 GALAXY 64 0 - 301 51641 244 0.00001 STAR 9437184 0 - 301 51641 245 0.00003 STAR 4 0 - 301 51641 246 0.06884 GALAXY 64 0 - 301 51641 247 0.10693 GALAXY 64 0 - 301 51641 248 0.89637 QSO 4 0 - 301 51641 249 0.11564 GALAXY 64 0 - 301 51641 250 0.00000 UNKNOWN 0 16 - 301 51641 251 0.00007 STAR 8192 0 - 301 51641 252 0.24729 GALAXY 4 0 - 301 51641 253 -0.00012 STAR 1056772 0 - 301 51641 254 0.09121 GALAXY 64 0 - 301 51641 255 1.88437 QSO 4 0 - 301 51641 256 0.16188 GALAXY 64 0 - 301 51641 257 0.14690 GALAXY 64 0 - 301 51641 258 0.24834 GALAXY 96 0 - 301 51641 259 1.93286 QSO 4 0 - 301 51641 260 0.11790 GALAXY 64 0 - 301 51641 261 0.08793 GALAXY 64 0 - 301 51641 262 0.20101 GALAXY 64 0 - 301 51641 263 1.98348 QSO 4 0 - 301 51641 264 0.93457 QSO 2097172 0 - 301 51641 265 0.19492 GALAXY 64 0 - 301 51641 266 2.33237 QSO 4 0 - 301 51641 267 0.08940 GALAXY 64 0 - 301 51641 268 0.42520 GALAXY 32 0 - 301 51641 269 0.00000 UNKNOWN 0 16 - 301 51641 270 0.10481 GALAXY 64 0 - 301 51641 271 0.14609 GALAXY 64 0 - 301 51641 272 0.22586 GALAXY 64 0 - 301 51641 273 0.14272 GALAXY 64 0 - 301 51641 274 0.14257 GALAXY 64 0 - 301 51641 275 0.14665 GALAXY 64 0 - 301 51641 276 0.07201 GALAXY 64 0 - 301 51641 277 0.00001 STAR 1 0 - 301 51641 278 0.10605 GALAXY 64 0 - 301 51641 279 0.14323 GALAXY 64 0 - 301 51641 280 1.79233 QSO 1048580 0 - 301 51641 281 0.11688 GALAXY 64 0 - 301 51641 282 0.14889 GALAXY 64 0 - 301 51641 283 0.15118 GALAXY 64 0 - 301 51641 284 0.00000 UNKNOWN 0 16 - 301 51641 285 0.14826 GALAXY 64 0 - 301 51641 286 0.15095 GALAXY 64 0 - 301 51641 287 2.00415 QSO 4 0 - 301 51641 288 0.19241 GALAXY 64 0 - 301 51641 289 0.02673 GALAXY 64 0 - 301 51641 290 0.14258 GALAXY 64 0 - 301 51641 291 0.14697 GALAXY 64 0 - 301 51641 292 0.14717 GALAXY 64 0 - 301 51641 293 0.14959 GALAXY 96 0 - 301 51641 294 0.14644 GALAXY 64 0 - 301 51641 295 0.14292 GALAXY 4160 0 - 301 51641 296 0.14939 GALAXY 64 0 - 301 51641 297 0.14744 GALAXY 64 0 - 301 51641 298 0.14627 GALAXY 96 0 - 301 51641 299 0.14260 GALAXY 64 0 - 301 51641 300 0.19838 GALAXY 64 0 - 301 51641 301 -0.00000 STAR 4194304 0 - 301 51641 302 0.29004 GALAXY 32 0 - 301 51641 303 -0.00003 STAR 1056768 0 - 301 51641 304 0.03757 GALAXY 64 0 - 301 51641 305 0.00000 STAR 16384 0 - 301 51641 306 1.35737 QSO 1048580 0 - 301 51641 307 4.40566 QSO 33554433 0 - 301 51641 308 1.66633 QSO 36700160 0 - 301 51641 309 0.16313 GALAXY 64 0 - 301 51641 310 0.31750 GALAXY 2097152 0 - 301 51641 311 0.08227 GALAXY 64 0 - 301 51641 312 0.18863 GALAXY 64 0 - 301 51641 313 0.10461 GALAXY 64 0 - 301 51641 314 0.42668 GALAXY 32 0 - 301 51641 315 0.00000 UNKNOWN 0 16 - 301 51641 316 0.00007 STAR 1048580 0 - 301 51641 317 0.10399 GALAXY 64 0 - 301 51641 318 0.11726 GALAXY 64 0 - 301 51641 319 1.51195 QSO 3153408 0 - 301 51641 320 0.00002 STAR 0 2 - 301 51641 321 0.13585 GALAXY 64 0 - 301 51641 322 0.00011 STAR 4 0 - 301 51641 323 0.06242 GALAXY 64 0 - 301 51641 324 -0.00023 STAR 1056768 0 - 301 51641 325 0.36456 QSO 1 0 - 301 51641 326 -0.00021 STAR 42991616 0 - 301 51641 327 0.11850 GALAXY 64 0 - 301 51641 328 0.19670 GALAXY 96 0 - 301 51641 329 0.17673 GALAXY 64 0 - 301 51641 330 0.11658 GALAXY 96 0 - 301 51641 331 0.00000 UNKNOWN 0 16 - 301 51641 332 0.10296 GALAXY 64 0 - 301 51641 333 0.00053 STAR 1056768 0 - 301 51641 334 0.10218 GALAXY 64 0 - 301 51641 335 0.20552 GALAXY 64 0 - 301 51641 336 1.62051 QSO 1048580 0 - 301 51641 337 0.11481 GALAXY 64 0 - 301 51641 338 0.02987 GALAXY 64 0 - 301 51641 339 0.07019 GALAXY 96 0 - 301 51641 340 -0.00024 STAR 0 2 - 301 51641 341 0.02437 GALAXY 96 0 - 301 51641 342 0.11719 GALAXY 64 0 - 301 51641 343 0.02482 GALAXY 64 0 - 301 51641 344 0.01477 GALAXY 68 0 - 301 51641 345 0.01477 GALAXY 33554496 0 - 301 51641 346 0.11528 GALAXY 64 0 - 301 51641 347 0.00000 UNKNOWN 0 16 - 301 51641 348 0.11569 GALAXY 4096 0 - 301 51641 349 0.11608 GALAXY 64 0 - 301 51641 350 0.00047 STAR 8192 0 - 301 51641 351 0.00052 STAR 1056768 0 - 301 51641 352 0.11496 GALAXY 64 0 - 301 51641 353 0.11224 GALAXY 64 0 - 301 51641 354 0.11370 GALAXY 64 0 - 301 51641 355 0.01517 GALAXY 33554496 0 - 301 51641 356 0.02999 GALAXY 96 0 - 301 51641 357 0.11544 GALAXY 96 0 - 301 51641 358 0.13920 GALAXY 64 0 - 301 51641 359 0.11615 GALAXY 64 0 - 301 51641 360 0.12773 GALAXY 64 0 - 301 51641 361 -0.00041 STAR 8196 0 - 301 51641 362 0.02350 GALAXY 64 0 - 301 51641 363 0.16710 GALAXY 64 0 - 301 51641 364 0.08656 GALAXY 64 0 - 301 51641 365 -0.00008 STAR 4 0 - 301 51641 366 0.00000 UNKNOWN 0 16 - 301 51641 367 0.12980 GALAXY 64 0 - 301 51641 368 0.17653 GALAXY 64 0 - 301 51641 369 0.39844 GALAXY 4096 0 - 301 51641 370 0.47853 GALAXY 67108896 0 - 301 51641 371 -0.00009 STAR 42991616 0 - 301 51641 372 0.18053 GALAXY 64 0 - 301 51641 373 0.15350 GALAXY 64 0 - 301 51641 374 0.11764 GALAXY 64 0 - 301 51641 375 0.02959 GALAXY 64 0 - 301 51641 376 0.12784 GALAXY 64 0 - 301 51641 377 1.16807 QSO 1048580 0 - 301 51641 378 0.19549 GALAXY 64 0 - 301 51641 379 1.21203 QSO 4 0 - 301 51641 380 1.97680 QSO 1048580 512 - 301 51641 381 0.14674 GALAXY 64 0 - 301 51641 382 -0.00011 STAR 9437184 0 - 301 51641 383 0.06885 GALAXY 64 0 - 301 51641 384 0.12767 GALAXY 64 0 - 301 51641 385 1.80884 QSO 1048580 0 - 301 51641 386 0.00002 STAR 5 0 - 301 51641 387 0.35510 GALAXY 32 0 - 301 51641 388 2.51080 QSO 1048580 0 - 301 51641 389 0.12809 GALAXY 64 0 - 301 51641 390 -0.00064 STAR 0 2 - 301 51641 391 0.25128 GALAXY 32 0 - 301 51641 392 0.02976 GALAXY 96 0 - 301 51641 393 0.00000 UNKNOWN 0 16 - 301 51641 394 0.07004 GALAXY 96 0 - 301 51641 395 0.07024 GALAXY 64 0 - 301 51641 396 0.11320 GALAXY 96 0 - 301 51641 397 0.06992 GALAXY 96 0 - 301 51641 398 0.08259 GALAXY 96 0 - 301 51641 399 0.00000 STAR 34611200 0 - 301 51641 400 0.26250 GALAXY 96 0 - 301 51641 401 0.00000 UNKNOWN 0 16 - 301 51641 402 0.00028 STAR 8192 0 - 301 51641 403 -0.00114 STAR 1048580 0 - 301 51641 404 0.19596 GALAXY 4 0 - 301 51641 405 0.14427 GALAXY 64 0 - 301 51641 406 0.13614 GALAXY 64 0 - 301 51641 407 0.10372 GALAXY 64 0 - 301 51641 408 -0.00009 STAR 42991616 0 - 301 51641 409 1.58147 QSO 34603008 0 - 301 51641 410 0.13620 GALAXY 64 0 - 301 51641 411 2.01141 QSO 3145748 0 - 301 51641 412 0.04868 GALAXY 64 0 - 301 51641 413 2.31428 QSO 64 0 - 301 51641 414 0.46678 QSO 1 0 - 301 51641 415 0.47887 GALAXY 32 0 - 301 51641 416 0.89834 QSO 20 0 - 301 51641 417 0.16649 GALAXY 96 0 - 301 51641 418 0.04859 GALAXY 64 0 - 301 51641 419 0.16626 GALAXY 64 0 - 301 51641 420 -0.00021 STAR 8192 0 - 301 51641 421 0.14620 GALAXY 64 0 - 301 51641 422 -0.00017 STAR 1 0 - 301 51641 423 0.13388 GALAXY 64 0 - 301 51641 424 0.06954 GALAXY 64 0 - 301 51641 425 0.10386 GALAXY 64 0 - 301 51641 426 0.03023 GALAXY 64 0 - 301 51641 427 1.56683 QSO 1048580 0 - 301 51641 428 -0.00015 STAR 9445376 0 - 301 51641 429 0.35986 GALAXY 32 0 - 301 51641 430 0.14648 GALAXY 64 0 - 301 51641 431 1.52710 QSO 1048580 0 - 301 51641 432 0.49394 GALAXY 9437184 512 - 301 51641 433 0.06868 GALAXY 64 0 - 301 51641 434 0.25110 GALAXY 32 0 - 301 51641 435 0.07143 GALAXY 64 0 - 301 51641 436 -0.00011 STAR 1 0 - 301 51641 437 -0.00009 STAR 8196 0 - 301 51641 438 0.00000 UNKNOWN 0 16 - 301 51641 439 0.00003 UNKNOWN 2097152 0 - 301 51641 440 0.45911 QSO 4 0 - 301 51641 441 0.00000 MISSING 0 0 - 301 51641 442 -0.00003 STAR 42991616 0 - 301 51641 443 0.16790 GALAXY 64 0 - 301 51641 444 0.16810 GALAXY 64 0 - 301 51641 445 0.08507 GALAXY 64 0 - 301 51641 446 0.03454 GALAXY 64 0 - 301 51641 447 0.16661 GALAXY 96 0 - 301 51641 448 0.40669 QSO 4 0 - 301 51641 449 -0.00042 STAR 0 34 - 301 51641 450 0.00011 STAR 0 2 - 301 51641 451 0.00000 UNKNOWN 0 16 - 301 51641 452 0.13808 GALAXY 64 0 - 301 51641 453 0.00002 STAR 8196 0 - 301 51641 454 0.16036 GALAXY 64 0 - 301 51641 455 0.00015 STAR 8196 0 - 301 51641 456 0.13788 GALAXY 64 0 - 301 51641 457 -0.00003 STAR 34611200 0 - 301 51641 458 0.24283 GALAXY 1055748 0 - 301 51641 459 0.08272 GALAXY 64 0 - 301 51641 460 0.13799 GALAXY 64 0 - 301 51641 461 0.12946 GALAXY 64 0 - 301 51641 462 -0.00034 STAR 5 0 - 301 51641 463 0.26079 GALAXY 32 0 - 301 51641 464 0.28276 GALAXY 4096 0 - 301 51641 465 0.66109 QSO 16 0 - 301 51641 466 0.02465 GALAXY 64 0 - 301 51641 467 0.11624 GALAXY 96 0 - 301 51641 468 0.03163 GALAXY 64 0 - 301 51641 469 0.12188 GALAXY 64 0 - 301 51641 470 0.18867 GALAXY 64 0 - 301 51641 471 0.12204 GALAXY 64 0 - 301 51641 472 -0.00041 STAR 524288 0 - 301 51641 473 0.00000 UNKNOWN 0 16 - 301 51641 474 1.74939 QSO 1048580 0 - 301 51641 475 0.07993 GALAXY 64 0 - 301 51641 476 -0.00002 STAR 16 0 - 301 51641 477 0.00031 STAR 8192 0 - 301 51641 478 0.07968 GALAXY 64 0 - 301 51641 479 0.14286 GALAXY 64 0 - 301 51641 480 1.01128 QSO 1048580 0 - 301 51641 481 0.16644 GALAXY 64 0 - 301 51641 482 0.16596 GALAXY 96 0 - 301 51641 483 0.19697 GALAXY 96 0 - 301 51641 484 0.00003 STAR 4 0 - 301 51641 485 0.47748 GALAXY 67108896 0 - 301 51641 486 0.12050 GALAXY 4096 0 - 301 51641 487 0.03245 GALAXY 64 0 - 301 51641 488 0.03489 GALAXY 96 0 - 301 51641 489 0.13434 GALAXY 96 0 - 301 51641 490 0.13020 GALAXY 64 0 - 301 51641 491 0.00014 STAR 1056768 0 - 301 51641 492 0.23627 GALAXY 64 0 - 301 51641 493 0.03267 GALAXY 64 0 - 301 51641 494 0.16554 GALAXY 64 0 - 301 51641 495 0.00000 UNKNOWN 0 16 - 301 51641 496 0.15171 GALAXY 64 0 - 301 51641 497 -0.00003 STAR 8196 0 - 301 51641 498 0.03316 GALAXY 64 0 - 301 51641 499 0.00012 STAR 4 0 - 301 51641 500 -0.00005 STAR 4 0 - 301 51641 501 0.25662 GALAXY 4 0 - 301 51641 502 0.16566 GALAXY 64 0 - 301 51641 503 0.35826 GALAXY 32 0 - 301 51641 504 0.16083 GALAXY 64 0 - 301 51641 505 0.18136 GALAXY 64 0 - 301 51641 506 0.00000 UNKNOWN 0 16 - 301 51641 507 0.08059 GALAXY 64 0 - 301 51641 508 0.14633 GALAXY 64 0 - 301 51641 509 0.21763 GALAXY 64 0 - 301 51641 510 0.08100 GALAXY 64 0 - 301 51641 511 0.03368 GALAXY 68 0 - 301 51641 512 0.16702 GALAXY 64 0 - 301 51641 513 1.24911 QSO 4 0 - 301 51641 514 0.14273 GALAXY 64 0 - 301 51641 515 0.03277 GALAXY 64 0 - 301 51641 516 0.13058 GALAXY 64 0 - 301 51641 517 0.21755 GALAXY 96 0 - 301 51641 518 0.13037 GALAXY 64 0 - 301 51641 519 0.16678 GALAXY 64 0 - 301 51641 520 1.73897 QSO 1048580 0 - 301 51641 521 -0.00011 STAR 42991616 0 - 301 51641 522 0.00000 UNKNOWN 0 16 - 301 51641 523 0.00000 STAR 1056768 0 - 301 51641 524 0.08106 GALAXY 64 0 - 301 51641 525 0.12091 GALAXY 1048580 0 - 301 51641 526 0.04865 GALAXY 64 0 - 301 51641 527 0.43464 GALAXY 32 0 - 301 51641 528 0.07880 GALAXY 64 0 - 301 51641 529 0.14519 GALAXY 64 0 - 301 51641 530 0.14318 GALAXY 64 0 - 301 51641 531 0.49405 QSO 1048580 0 - 301 51641 532 0.25437 GALAXY 64 0 - 301 51641 533 0.16627 GALAXY 64 0 - 301 51641 534 0.05432 GALAXY 4 0 - 301 51641 535 0.03206 GALAXY 64 0 - 301 51641 536 -0.00005 STAR 8192 0 - 301 51641 537 0.16602 GALAXY 64 0 - 301 51641 538 0.04893 GALAXY 96 0 - 301 51641 539 0.03299 GALAXY 64 0 - 301 51641 540 0.00026 STAR 1 0 - 301 51641 541 0.16703 GALAXY 96 0 - 301 51641 542 -0.00031 STAR 8196 0 - 301 51641 543 0.16520 GALAXY 64 0 - 301 51641 544 0.16710 GALAXY 64 0 - 301 51641 545 0.18830 GALAXY 64 0 - 301 51641 546 0.25751 GALAXY 96 0 - 301 51641 547 0.15248 GALAXY 64 0 - 301 51641 548 -0.00002 STAR 5 0 - 301 51641 549 0.25310 GALAXY 96 0 - 301 51641 550 0.25816 GALAXY 1048580 0 - 301 51641 551 0.14257 GALAXY 64 0 - 301 51641 552 0.00000 UNKNOWN 0 16 - 301 51641 553 0.05405 GALAXY 64 0 - 301 51641 554 0.18812 GALAXY 96 0 - 301 51641 555 0.47453 GALAXY 67108896 0 - 301 51641 556 0.14535 GALAXY 64 0 - 301 51641 557 0.00006 STAR 8192 0 - 301 51641 558 0.36142 GALAXY 32 0 - 301 51641 559 0.22259 GALAXY 64 0 - 301 51641 560 -0.00050 STAR 9445376 0 - 301 51641 561 1.76960 QSO 64 0 - 301 51641 562 0.75949 QSO 36700160 0 - 301 51641 563 0.43014 GALAXY 32 0 - 301 51641 564 0.66461 QSO 1056276 0 - 301 51641 565 0.03329 GALAXY 64 0 - 301 51641 566 0.24387 GALAXY 64 0 - 301 51641 567 0.35961 GALAXY 32 0 - 301 51641 568 0.02460 GALAXY 64 0 - 301 51641 569 0.00029 STAR 0 2 - 301 51641 570 0.12788 GALAXY 64 0 - 301 51641 571 1.62012 QSO 1048580 0 - 301 51641 572 0.36154 QSO 4 0 - 301 51641 573 0.04304 GALAXY 64 0 - 301 51641 574 0.16672 GALAXY 64 0 - 301 51641 575 0.03282 GALAXY 64 0 - 301 51641 576 0.16708 GALAXY 64 0 - 301 51641 577 0.14600 GALAXY 64 0 - 301 51641 578 0.36441 GALAXY 32 0 - 301 51641 579 -0.00049 STAR 4 0 - 301 51641 580 0.00000 UNKNOWN 0 16 - 301 51641 581 0.16565 GALAXY 64 0 - 301 51641 582 1.61279 QSO 4 0 - 301 51641 583 2.42009 QSO 0 0 - 301 51641 584 -0.00056 STAR 4 0 - 301 51641 585 1.94736 QSO 1048580 0 - 301 51641 586 0.47233 UNKNOWN 67108896 0 - 301 51641 587 0.18287 GALAXY 64 0 - 301 51641 588 -0.00016 STAR 0 2 - 301 51641 589 0.00015 STAR 42991616 0 - 301 51641 590 0.16771 GALAXY 64 0 - 301 51641 591 0.00000 UNKNOWN 0 16 - 301 51641 592 0.02818 GALAXY 64 0 - 301 51641 593 0.08490 GALAXY 64 0 - 301 51641 594 -0.00041 STAR 0 96 - 301 51641 595 0.08131 GALAXY 64 0 - 301 51641 596 0.23870 GALAXY 96 0 - 301 51641 597 0.08210 GALAXY 64 0 - 301 51641 598 0.79485 UNKNOWN 2097152 0 - 301 51641 599 0.08485 GALAXY 64 0 - 301 51641 600 0.18759 GALAXY 64 0 - 301 51641 601 0.71985 QSO 34603008 0 - 301 51641 602 1.21382 QSO 1048580 0 - 301 51641 603 0.00000 UNKNOWN 0 16 - 301 51641 604 0.08216 GALAXY 64 0 - 301 51641 605 0.02373 GALAXY 64 0 - 301 51641 606 0.31956 GALAXY 32 0 - 301 51641 607 0.02406 GALAXY 64 0 - 301 51641 608 0.19042 GALAXY 64 0 - 301 51641 609 0.13956 GALAXY 64 0 - 301 51641 610 -0.00048 STAR 4 0 - 301 51641 611 -0.00035 STAR 8192 0 - 301 51641 612 0.00041 UNKNOWN 42991616 0 - 301 51641 613 0.00000 MISSING 0 0 - 301 51641 614 0.16669 GALAXY 64 0 - 301 51641 615 -0.00028 STAR 0 34 - 301 51641 616 0.14553 GALAXY 64 0 - 301 51641 617 0.13997 GALAXY 64 0 - 301 51641 618 0.16644 GALAXY 64 0 - 301 51641 619 -0.00048 STAR 0 2 - 301 51641 620 0.35970 GALAXY 32 0 - 301 51641 621 0.18244 GALAXY 64 0 - 301 51641 622 0.00005 STAR 8192 0 - 301 51641 623 0.03414 GALAXY 64 0 - 301 51641 624 0.18269 GALAXY 64 0 - 301 51641 625 0.04778 GALAXY 96 0 - 301 51641 626 0.08472 GALAXY 64 0 - 301 51641 627 0.04284 GALAXY 64 0 - 301 51641 628 0.18794 GALAXY 64 0 - 301 51641 629 0.00016 STAR 9445376 0 - 301 51641 630 0.05928 GALAXY 64 0 - 301 51641 631 0.04572 GALAXY 64 0 - 301 51641 632 0.00002 STAR 5 0 - 301 51641 633 -0.00007 STAR 0 512 - 301 51641 634 0.08194 GALAXY 64 0 - 301 51641 635 0.00000 UNKNOWN 0 16 - 301 51641 636 0.08147 GALAXY 64 0 - 301 51641 637 0.18433 GALAXY 64 0 - 301 51641 638 0.14106 GALAXY 64 0 - 301 51641 639 0.18437 GALAXY 96 0 - 301 51641 640 -0.00013 STAR 0 34 - 302 51688 1 0.00040 STAR 8192 0 - 302 51688 2 0.08743 GALAXY 64 0 - 302 51688 3 0.14035 GALAXY 64 0 - 302 51688 4 0.02581 GALAXY 96 0 - 302 51688 5 0.00000 UNKNOWN 0 16 - 302 51688 6 1.40538 QSO 64 0 - 302 51688 7 0.17375 GALAXY 64 0 - 302 51688 8 0.12778 GALAXY 64 0 - 302 51688 9 0.09845 GALAXY 64 0 - 302 51688 10 0.12749 GALAXY 64 0 - 302 51688 11 0.11584 GALAXY 64 0 - 302 51688 12 0.00038 STAR 16 0 - 302 51688 13 0.12765 GALAXY 64 0 - 302 51688 14 0.05434 GALAXY 96 0 - 302 51688 15 0.08333 GALAXY 64 0 - 302 51688 16 0.16171 GALAXY 64 0 - 302 51688 17 0.05470 GALAXY 96 0 - 302 51688 18 0.05445 GALAXY 64 0 - 302 51688 19 0.02549 GALAXY 64 0 - 302 51688 20 0.05439 GALAXY 64 0 - 302 51688 21 0.04798 GALAXY 64 0 - 302 51688 22 0.09795 GALAXY 64 0 - 302 51688 23 1.62745 QSO 1048580 0 - 302 51688 24 0.13991 GALAXY 64 0 - 302 51688 25 0.02505 GALAXY 68 0 - 302 51688 26 0.13854 GALAXY 64 0 - 302 51688 27 0.11773 GALAXY 64 0 - 302 51688 28 -0.00014 STAR 1 0 - 302 51688 29 0.83376 QSO 4 0 - 302 51688 30 0.11679 GALAXY 64 0 - 302 51688 31 0.13883 GALAXY 64 0 - 302 51688 32 1.63506 QSO 1048580 0 - 302 51688 33 0.27313 GALAXY 64 0 - 302 51688 34 0.13916 GALAXY 64 0 - 302 51688 35 0.02531 GALAXY 64 0 - 302 51688 36 0.14685 GALAXY 64 0 - 302 51688 37 0.12886 GALAXY 64 0 - 302 51688 38 0.00000 UNKNOWN 0 16 - 302 51688 39 0.00012 STAR 0 34 - 302 51688 40 0.01760 GALAXY 64 0 - 302 51688 41 0.11773 GALAXY 64 0 - 302 51688 42 0.18291 GALAXY 96 0 - 302 51688 43 0.00010 STAR 64 0 - 302 51688 44 0.63860 QSO 4 0 - 302 51688 45 0.11578 GALAXY 64 0 - 302 51688 46 0.02489 GALAXY 64 0 - 302 51688 47 0.08342 GALAXY 64 0 - 302 51688 48 0.08341 GALAXY 64 0 - 302 51688 49 1.29150 QSO 1048580 0 - 302 51688 50 0.07148 GALAXY 64 0 - 302 51688 51 0.00000 UNKNOWN 0 16 - 302 51688 52 0.10735 GALAXY 64 0 - 302 51688 53 0.17336 GALAXY 64 0 - 302 51688 54 0.52065 GALAXY 67108896 0 - 302 51688 55 0.27917 GALAXY 96 0 - 302 51688 56 0.11501 GALAXY 64 0 - 302 51688 57 0.04970 GALAXY 64 0 - 302 51688 58 0.07018 GALAXY 4 0 - 302 51688 59 0.00042 STAR 0 2 - 302 51688 60 0.08311 GALAXY 64 0 - 302 51688 61 0.11709 GALAXY 64 0 - 302 51688 62 0.00048 STAR 8196 0 - 302 51688 63 0.14733 GALAXY 64 0 - 302 51688 64 0.13709 GALAXY 64 0 - 302 51688 65 0.00011 STAR 4194304 0 - 302 51688 66 0.13894 GALAXY 64 0 - 302 51688 67 0.16883 GALAXY 64 0 - 302 51688 68 0.14029 GALAXY 64 0 - 302 51688 69 0.08952 QSO 1048577 0 - 302 51688 70 0.11791 GALAXY 68 0 - 302 51688 71 0.05487 GALAXY 64 0 - 302 51688 72 0.02536 GALAXY 64 0 - 302 51688 73 0.02609 GALAXY 64 0 - 302 51688 74 0.00000 UNKNOWN 0 16 - 302 51688 75 0.08282 GALAXY 64 0 - 302 51688 76 0.35997 GALAXY 32 0 - 302 51688 77 0.10703 GALAXY 64 0 - 302 51688 78 0.18130 GALAXY 64 0 - 302 51688 79 0.11774 GALAXY 4 0 - 302 51688 80 0.13803 GALAXY 64 0 - 302 51688 81 0.19543 GALAXY 4 0 - 302 51688 82 0.08321 GALAXY 64 0 - 302 51688 83 1.94185 QSO 1048580 0 - 302 51688 84 0.00537 GALAXY 96 0 - 302 51688 85 1.48029 QSO 1048580 0 - 302 51688 86 0.05503 GALAXY 96 0 - 302 51688 87 0.08345 GALAXY 64 0 - 302 51688 88 0.00023 STAR 0 34 - 302 51688 89 0.17460 GALAXY 4 0 - 302 51688 90 0.08335 GALAXY 64 0 - 302 51688 91 0.05606 GALAXY 64 0 - 302 51688 92 0.08793 GALAXY 64 0 - 302 51688 93 0.00030 STAR 4194304 0 - 302 51688 94 0.05226 GALAXY 64 0 - 302 51688 95 0.11145 GALAXY 64 0 - 302 51688 96 0.11548 GALAXY 64 0 - 302 51688 97 0.17530 GALAXY 64 0 - 302 51688 98 0.46674 GALAXY 67108896 0 - 302 51688 99 0.07964 GALAXY 64 0 - 302 51688 100 0.00000 UNKNOWN 0 16 - 302 51688 101 0.00018 STAR 67108896 0 - 302 51688 102 0.10382 GALAXY 64 0 - 302 51688 103 0.00000 UNKNOWN 0 16 - 302 51688 104 1.68341 QSO 1048580 0 - 302 51688 105 0.08334 GALAXY 64 0 - 302 51688 106 1.53282 QSO 68 0 - 302 51688 107 1.86443 QSO 1048580 0 - 302 51688 108 0.05461 GALAXY 64 0 - 302 51688 109 0.08337 GALAXY 96 0 - 302 51688 110 0.02590 GALAXY 64 0 - 302 51688 111 0.08227 GALAXY 64 0 - 302 51688 112 1.53151 QSO 64 0 - 302 51688 113 0.08311 GALAXY 68 0 - 302 51688 114 0.25167 GALAXY 4 0 - 302 51688 115 0.08351 GALAXY 64 0 - 302 51688 116 0.09697 GALAXY 64 0 - 302 51688 117 0.05466 GALAXY 64 0 - 302 51688 118 0.00013 STAR 4 0 - 302 51688 119 0.07073 GALAXY 64 0 - 302 51688 120 0.76906 GALAXY 20 0 - 302 51688 121 0.00000 UNKNOWN 0 16 - 302 51688 122 0.05286 GALAXY 64 0 - 302 51688 123 0.05537 GALAXY 96 0 - 302 51688 124 0.38342 GALAXY 4 0 - 302 51688 125 0.05413 GALAXY 96 0 - 302 51688 126 0.05430 GALAXY 64 0 - 302 51688 127 0.40429 GALAXY 32 0 - 302 51688 128 0.07956 GALAXY 64 0 - 302 51688 129 0.14141 GALAXY 64 0 - 302 51688 130 0.02612 GALAXY 64 0 - 302 51688 131 0.00022 STAR 0 34 - 302 51688 132 0.05183 GALAXY 64 0 - 302 51688 133 0.10486 GALAXY 64 0 - 302 51688 134 0.05556 GALAXY 64 0 - 302 51688 135 0.05506 GALAXY 64 0 - 302 51688 136 0.16034 GALAXY 96 0 - 302 51688 137 0.05339 GALAXY 64 0 - 302 51688 138 0.05224 GALAXY 64 0 - 302 51688 139 0.16008 GALAXY 64 0 - 302 51688 140 0.00097 STAR 1048580 0 - 302 51688 141 0.05319 GALAXY 64 0 - 302 51688 142 0.07116 GALAXY 64 0 - 302 51688 143 0.11343 GALAXY 64 0 - 302 51688 144 0.14374 GALAXY 64 0 - 302 51688 145 0.14754 GALAXY 64 0 - 302 51688 146 0.07684 GALAXY 64 0 - 302 51688 147 0.46517 GALAXY 67108896 0 - 302 51688 148 0.14554 GALAXY 64 0 - 302 51688 149 0.23937 GALAXY 96 0 - 302 51688 150 0.05440 GALAXY 64 0 - 302 51688 151 1.62648 QSO 4 0 - 302 51688 152 0.05230 GALAXY 64 0 - 302 51688 153 0.23903 GALAXY 64 0 - 302 51688 154 0.00000 UNKNOWN 0 16 - 302 51688 155 0.17241 GALAXY 64 0 - 302 51688 156 0.09585 GALAXY 68 0 - 302 51688 157 0.09364 GALAXY 64 0 - 302 51688 158 0.09303 GALAXY 64 0 - 302 51688 159 0.05444 GALAXY 64 0 - 302 51688 160 0.08330 GALAXY 64 0 - 302 51688 161 0.05280 GALAXY 64 0 - 302 51688 162 0.05263 GALAXY 64 0 - 302 51688 163 0.16768 GALAXY 4160 0 - 302 51688 164 2.20572 QSO 1048580 0 - 302 51688 165 0.00445 GALAXY 4 0 - 302 51688 166 0.05281 GALAXY 64 0 - 302 51688 167 0.00025 STAR 8192 0 - 302 51688 168 0.11335 GALAXY 64 0 - 302 51688 169 -0.00013 STAR 8192 0 - 302 51688 170 0.05241 GALAXY 64 0 - 302 51688 171 0.02531 GALAXY 64 0 - 302 51688 172 0.76858 QSO 1048580 0 - 302 51688 173 0.00009 UNKNOWN 96 0 - 302 51688 174 0.23246 QSO 64 0 - 302 51688 175 0.05402 GALAXY 64 0 - 302 51688 176 0.05360 GALAXY 64 0 - 302 51688 177 0.08347 GALAXY 64 0 - 302 51688 178 0.00000 UNKNOWN 0 16 - 302 51688 179 0.05292 GALAXY 96 0 - 302 51688 180 0.42537 GALAXY 32 0 - 302 51688 181 0.10906 GALAXY 64 0 - 302 51688 182 0.16644 GALAXY 64 0 - 302 51688 183 0.05299 GALAXY 64 0 - 302 51688 184 0.00082 STAR 1056772 0 - 302 51688 185 1.94703 QSO 1048580 0 - 302 51688 186 0.02519 GALAXY 64 0 - 302 51688 187 0.00020 STAR 8192 0 - 302 51688 188 0.10552 GALAXY 64 0 - 302 51688 189 0.00040 STAR 32 0 - 302 51688 190 0.08007 GALAXY 64 0 - 302 51688 191 -0.00016 STAR 0 2 - 302 51688 192 0.00000 MISSING 0 0 - 302 51688 193 0.00058 STAR 1056768 0 - 302 51688 194 0.16251 GALAXY 64 0 - 302 51688 195 0.21156 GALAXY 64 0 - 302 51688 196 0.21239 GALAXY 4096 0 - 302 51688 197 0.03002 QSO 4 0 - 302 51688 198 0.05339 GALAXY 96 0 - 302 51688 199 0.08312 GALAXY 64 0 - 302 51688 200 0.26153 GALAXY 96 0 - 302 51688 201 0.17577 GALAXY 64 0 - 302 51688 202 0.00012 STAR 4194304 0 - 302 51688 203 0.00014 STAR 6144 0 - 302 51688 204 1.47501 QSO 64 0 - 302 51688 205 0.00000 UNKNOWN 0 16 - 302 51688 206 0.02616 GALAXY 96 0 - 302 51688 207 0.14266 GALAXY 64 0 - 302 51688 208 2.42100 QSO 3145728 0 - 302 51688 209 1.94111 QSO 4 0 - 302 51688 210 0.05933 GALAXY 64 0 - 302 51688 211 0.14684 GALAXY 64 0 - 302 51688 212 0.05120 GALAXY 64 0 - 302 51688 213 0.11000 GALAXY 64 0 - 302 51688 214 0.08266 GALAXY 64 0 - 302 51688 215 0.05340 GALAXY 96 0 - 302 51688 216 0.05371 GALAXY 64 0 - 302 51688 217 1.50763 QSO 3153428 0 - 302 51688 218 0.11007 GALAXY 64 0 - 302 51688 219 0.02981 GALAXY 64 0 - 302 51688 220 0.05508 GALAXY 64 0 - 302 51688 221 -0.00033 STAR 8192 0 - 302 51688 222 0.10558 GALAXY 96 0 - 302 51688 223 0.00039 STAR 16 0 - 302 51688 224 0.62267 GALAXY 32768 0 - 302 51688 225 0.11324 GALAXY 64 0 - 302 51688 226 0.07050 GALAXY 64 0 - 302 51688 227 0.10654 GALAXY 1 0 - 302 51688 228 0.11349 GALAXY 64 0 - 302 51688 229 0.11298 GALAXY 64 0 - 302 51688 230 0.08285 GALAXY 96 0 - 302 51688 231 -0.00024 STAR 8192 0 - 302 51688 232 0.45772 GALAXY 67108896 0 - 302 51688 233 0.00000 UNKNOWN 0 16 - 302 51688 234 0.11160 GALAXY 64 0 - 302 51688 235 0.10554 GALAXY 64 0 - 302 51688 236 0.05959 GALAXY 96 0 - 302 51688 237 1.59972 QSO 64 0 - 302 51688 238 0.11270 GALAXY 64 0 - 302 51688 239 0.09025 GALAXY 64 0 - 302 51688 240 0.02477 GALAXY 64 0 - 302 51688 241 0.05468 GALAXY 96 0 - 302 51688 242 0.05358 GALAXY 64 0 - 302 51688 243 0.05517 GALAXY 64 0 - 302 51688 244 0.07419 GALAXY 64 0 - 302 51688 245 0.14718 GALAXY 64 0 - 302 51688 246 0.07056 GALAXY 64 0 - 302 51688 247 0.07042 GALAXY 64 0 - 302 51688 248 0.01584 GALAXY 64 0 - 302 51688 249 0.28306 GALAXY 4 0 - 302 51688 250 0.05437 GALAXY 64 0 - 302 51688 251 0.04953 GALAXY 64 0 - 302 51688 252 0.08439 GALAXY 64 0 - 302 51688 253 0.10510 GALAXY 64 0 - 302 51688 254 0.09486 GALAXY 64 0 - 302 51688 255 0.00009 UNKNOWN 96 0 - 302 51688 256 0.14420 GALAXY 64 0 - 302 51688 257 0.09493 GALAXY 64 0 - 302 51688 258 2.30202 QSO 4 0 - 302 51688 259 0.04951 GALAXY 64 0 - 302 51688 260 0.00000 UNKNOWN 0 16 - 302 51688 261 0.07946 GALAXY 64 0 - 302 51688 262 0.07066 GALAXY 64 0 - 302 51688 263 0.02471 GALAXY 96 0 - 302 51688 264 0.08968 GALAXY 64 0 - 302 51688 265 0.03264 GALAXY 33554496 0 - 302 51688 266 0.24288 GALAXY 96 0 - 302 51688 267 0.08972 GALAXY 64 0 - 302 51688 268 0.30378 QSO 1048580 0 - 302 51688 269 0.07444 GALAXY 64 0 - 302 51688 270 0.02491 GALAXY 96 0 - 302 51688 271 0.03257 GALAXY 68 0 - 302 51688 272 0.02510 GALAXY 64 0 - 302 51688 273 0.07022 GALAXY 64 0 - 302 51688 274 0.00000 UNKNOWN 0 16 - 302 51688 275 0.13897 GALAXY 64 0 - 302 51688 276 0.10591 GALAXY 64 0 - 302 51688 277 0.07066 GALAXY 64 0 - 302 51688 278 0.98802 QSO 4 0 - 302 51688 279 1.51111 QSO 64 0 - 302 51688 280 0.11036 GALAXY 64 0 - 302 51688 281 0.10622 GALAXY 64 0 - 302 51688 282 0.02504 GALAXY 96 0 - 302 51688 283 0.09393 GALAXY 64 0 - 302 51688 284 0.03261 GALAXY 64 0 - 302 51688 285 0.16414 GALAXY 64 0 - 302 51688 286 0.16955 GALAXY 96 0 - 302 51688 287 0.16341 GALAXY 64 0 - 302 51688 288 0.15217 GALAXY 64 0 - 302 51688 289 0.02548 GALAXY 64 0 - 302 51688 290 0.07857 GALAXY 64 0 - 302 51688 291 0.42193 GALAXY 32 0 - 302 51688 292 0.14957 GALAXY 96 0 - 302 51688 293 0.00021 STAR 0 2 - 302 51688 294 0.02501 GALAXY 96 0 - 302 51688 295 0.19510 GALAXY 4 0 - 302 51688 296 0.10639 GALAXY 64 0 - 302 51688 297 0.00000 UNKNOWN 0 16 - 302 51688 298 0.14890 GALAXY 64 0 - 302 51688 299 0.02725 GALAXY 96 0 - 302 51688 300 0.10704 GALAXY 64 0 - 302 51688 301 0.00000 UNKNOWN 0 16 - 302 51688 302 0.02466 GALAXY 64 0 - 302 51688 303 0.44525 GALAXY 32 0 - 302 51688 304 0.05435 GALAXY 64 0 - 302 51688 305 0.18523 GALAXY 64 0 - 302 51688 306 0.05975 GALAXY 96 0 - 302 51688 307 0.04784 GALAXY 64 0 - 302 51688 308 0.00034 STAR 0 34 - 302 51688 309 0.07953 GALAXY 64 0 - 302 51688 310 0.02478 GALAXY 64 0 - 302 51688 311 0.02574 GALAXY 64 0 - 302 51688 312 0.08236 GALAXY 64 0 - 302 51688 313 0.13179 GALAXY 64 0 - 302 51688 314 0.00000 MISSING 0 0 - 302 51688 315 0.00032 STAR 0 2 - 302 51688 316 0.71074 QSO 36700160 0 - 302 51688 317 0.00046 STAR 8192 0 - 302 51688 318 1.22185 QSO 20 0 - 302 51688 319 0.18485 GALAXY 64 0 - 302 51688 320 0.00128 STAR 1056768 0 - 302 51688 321 0.63425 QSO 4 0 - 302 51688 322 0.16675 GALAXY 64 0 - 302 51688 323 0.00045 STAR 0 2 - 302 51688 324 0.00016 STAR 1 0 - 302 51688 325 0.02525 GALAXY 64 0 - 302 51688 326 0.19042 GALAXY 96 0 - 302 51688 327 0.24164 GALAXY 96 0 - 302 51688 328 0.04284 GALAXY 64 0 - 302 51688 329 0.04323 GALAXY 64 0 - 302 51688 330 0.39754 GALAXY 32 0 - 302 51688 331 0.16808 GALAXY 64 0 - 302 51688 332 0.07044 GALAXY 64 0 - 302 51688 333 0.53767 QSO 33554433 0 - 302 51688 334 0.08915 GALAXY 64 0 - 302 51688 335 0.45319 GALAXY 32 0 - 302 51688 336 0.04328 GALAXY 64 0 - 302 51688 337 0.00002 STAR 4 0 - 302 51688 338 0.00015 STAR 0 2 - 302 51688 339 0.04303 GALAXY 64 0 - 302 51688 340 0.00000 UNKNOWN 0 16 - 302 51688 341 0.18385 GALAXY 64 0 - 302 51688 342 0.45948 GALAXY 32 0 - 302 51688 343 0.00000 UNKNOWN 0 16 - 302 51688 344 0.07402 GALAXY 64 0 - 302 51688 345 0.18305 GALAXY 64 0 - 302 51688 346 0.22344 GALAXY 64 0 - 302 51688 347 0.14591 GALAXY 64 0 - 302 51688 348 0.04326 GALAXY 96 0 - 302 51688 349 0.00085 STAR 8396800 0 - 302 51688 350 0.08131 GALAXY 64 0 - 302 51688 351 0.08230 GALAXY 68 0 - 302 51688 352 0.18249 GALAXY 64 0 - 302 51688 353 0.14108 GALAXY 64 0 - 302 51688 354 0.18901 GALAXY 64 0 - 302 51688 355 0.18379 GALAXY 64 0 - 302 51688 356 0.18589 GALAXY 96 0 - 302 51688 357 0.18334 GALAXY 64 0 - 302 51688 358 0.00038 STAR 1056768 0 - 302 51688 359 0.13140 GALAXY 64 0 - 302 51688 360 0.00016 STAR 0 2 - 302 51688 361 0.45095 GALAXY 32 0 - 302 51688 362 0.14587 GALAXY 64 0 - 302 51688 363 0.13016 GALAXY 64 0 - 302 51688 364 0.00000 UNKNOWN 0 16 - 302 51688 365 0.12412 GALAXY 64 0 - 302 51688 366 0.12486 GALAXY 64 0 - 302 51688 367 0.00018 STAR 8192 0 - 302 51688 368 0.18132 GALAXY 64 0 - 302 51688 369 0.16749 GALAXY 64 0 - 302 51688 370 0.35706 GALAXY 32 0 - 302 51688 371 0.06971 GALAXY 68 0 - 302 51688 372 0.40168 GALAXY 32 0 - 302 51688 373 0.11362 GALAXY 64 0 - 302 51688 374 0.45199 GALAXY 32 0 - 302 51688 375 0.02481 GALAXY 64 0 - 302 51688 376 0.18020 GALAXY 64 0 - 302 51688 377 0.18088 GALAXY 96 0 - 302 51688 378 0.12344 GALAXY 64 0 - 302 51688 379 0.39889 GALAXY 32 0 - 302 51688 380 0.03184 GALAXY 64 0 - 302 51688 381 0.04507 GALAXY 64 0 - 302 51688 382 0.16316 QSO 1048580 0 - 302 51688 383 0.18739 GALAXY 64 0 - 302 51688 384 0.18779 GALAXY 64 0 - 302 51688 385 1.15780 QSO 1048580 0 - 302 51688 386 0.46257 GALAXY 32 0 - 302 51688 387 2.42638 QSO 1 0 - 302 51688 388 0.00036 STAR 0 34 - 302 51688 389 0.32493 QSO 1048580 0 - 302 51688 390 0.28333 GALAXY 32 0 - 302 51688 391 0.00000 UNKNOWN 0 16 - 302 51688 392 0.00020 STAR 1 0 - 302 51688 393 0.46346 GALAXY 67108896 0 - 302 51688 394 0.02565 GALAXY 64 0 - 302 51688 395 0.54178 QSO 4 0 - 302 51688 396 0.10582 GALAXY 64 0 - 302 51688 397 0.16514 GALAXY 64 0 - 302 51688 398 0.00096 STAR 1 0 - 302 51688 399 -0.00008 STAR 64 0 - 302 51688 400 0.04702 GALAXY 64 0 - 302 51688 401 0.00038 STAR 4 0 - 302 51688 402 0.12495 GALAXY 64 0 - 302 51688 403 0.00033 STAR 4 0 - 302 51688 404 0.00090 STAR 8192 0 - 302 51688 405 0.39496 GALAXY 32 0 - 302 51688 406 0.04785 GALAXY 64 0 - 302 51688 407 0.11320 GALAXY 64 0 - 302 51688 408 0.24060 GALAXY 96 0 - 302 51688 409 0.45706 GALAXY 32 0 - 302 51688 410 0.14486 GALAXY 64 0 - 302 51688 411 -0.00009 STAR 64 0 - 302 51688 412 0.07209 GALAXY 64 0 - 302 51688 413 0.00000 UNKNOWN 0 16 - 302 51688 414 0.02503 GALAXY 64 0 - 302 51688 415 0.45087 GALAXY 2097184 0 - 302 51688 416 0.12992 GALAXY 64 0 - 302 51688 417 0.23625 GALAXY 2097156 0 - 302 51688 418 0.43408 GALAXY 32 0 - 302 51688 419 1.57155 QSO 1048580 0 - 302 51688 420 0.00084 STAR 8192 0 - 302 51688 421 0.00032 STAR 1056768 0 - 302 51688 422 1.56463 QSO 4 0 - 302 51688 423 0.05392 GALAXY 68 0 - 302 51688 424 0.00010 STAR 34611200 0 - 302 51688 425 0.00031 STAR 64 0 - 302 51688 426 0.11233 GALAXY 1 0 - 302 51688 427 0.45955 GALAXY 67108896 0 - 302 51688 428 0.00000 UNKNOWN 0 16 - 302 51688 429 0.07709 GALAXY 64 0 - 302 51688 430 0.16503 GALAXY 64 0 - 302 51688 431 0.11223 GALAXY 64 0 - 302 51688 432 0.44324 GALAXY 32 0 - 302 51688 433 0.07567 GALAXY 64 0 - 302 51688 434 0.16573 GALAXY 64 0 - 302 51688 435 0.04800 GALAXY 96 0 - 302 51688 436 0.02489 GALAXY 64 0 - 302 51688 437 0.13253 GALAXY 64 0 - 302 51688 438 0.13973 GALAXY 524288 0 - 302 51688 439 0.37443 GALAXY 32 0 - 302 51688 440 0.11270 GALAXY 64 0 - 302 51688 441 0.10844 GALAXY 64 0 - 302 51688 442 0.11585 GALAXY 64 0 - 302 51688 443 -0.00004 STAR 0 34 - 302 51688 444 0.45970 GALAXY 67108896 0 - 302 51688 445 1.22047 QSO 4 0 - 302 51688 446 0.00046 STAR 0 2 - 302 51688 447 0.45168 GALAXY 67108896 0 - 302 51688 448 0.17705 GALAXY 4 0 - 302 51688 449 3.07831 QSO 4 0 - 302 51688 450 0.04788 GALAXY 96 0 - 302 51688 451 0.13004 GALAXY 64 0 - 302 51688 452 0.00000 UNKNOWN 0 16 - 302 51688 453 0.18380 GALAXY 64 0 - 302 51688 454 0.04894 GALAXY 64 0 - 302 51688 455 0.23364 GALAXY 64 0 - 302 51688 456 0.07706 GALAXY 64 0 - 302 51688 457 0.04835 GALAXY 64 0 - 302 51688 458 0.03481 GALAXY 64 0 - 302 51688 459 -0.00008 STAR 1056772 0 - 302 51688 460 0.08331 GALAXY 64 0 - 302 51688 461 0.08333 GALAXY 64 0 - 302 51688 462 0.00000 UNKNOWN 0 16 - 302 51688 463 0.10567 GALAXY 64 0 - 302 51688 464 0.11386 GALAXY 64 0 - 302 51688 465 0.00002 STAR 1056772 0 - 302 51688 466 0.42754 GALAXY 32 0 - 302 51688 467 0.11360 GALAXY 64 0 - 302 51688 468 0.00009 STAR 16 0 - 302 51688 469 0.16600 GALAXY 64 0 - 302 51688 470 0.07680 GALAXY 64 0 - 302 51688 471 0.10717 GALAXY 64 0 - 302 51688 472 0.25774 GALAXY 32 0 - 302 51688 473 0.16541 GALAXY 64 0 - 302 51688 474 0.00013 STAR 1179652 512 - 302 51688 475 0.25851 GALAXY 32 0 - 302 51688 476 0.10578 GALAXY 64 0 - 302 51688 477 0.10701 GALAXY 64 0 - 302 51688 478 0.25285 GALAXY 32 0 - 302 51688 479 0.00029 STAR 9437188 0 - 302 51688 480 0.42699 GALAXY 32 0 - 302 51688 481 1.66949 QSO 36700160 0 - 302 51688 482 0.10790 GALAXY 64 0 - 302 51688 483 0.13400 GALAXY 64 0 - 302 51688 484 0.13882 GALAXY 64 0 - 302 51688 485 0.00000 UNKNOWN 0 16 - 302 51688 486 3.72124 QSO 1 0 - 302 51688 487 0.08543 GALAXY 64 0 - 302 51688 488 0.11369 GALAXY 64 0 - 302 51688 489 0.08573 GALAXY 64 0 - 302 51688 490 2.05349 UNKNOWN 42991616 0 - 302 51688 491 0.11375 GALAXY 64 0 - 302 51688 492 0.02571 GALAXY 64 0 - 302 51688 493 0.00097 STAR 1056772 0 - 302 51688 494 0.17361 GALAXY 64 0 - 302 51688 495 0.08565 GALAXY 64 0 - 302 51688 496 0.08596 GALAXY 2097216 0 - 302 51688 497 0.05342 GALAXY 68 0 - 302 51688 498 0.08542 GALAXY 64 0 - 302 51688 499 0.13832 GALAXY 64 0 - 302 51688 500 0.10566 GALAXY 64 0 - 302 51688 501 0.53408 QSO 1048580 0 - 302 51688 502 0.13701 GALAXY 64 0 - 302 51688 503 0.00000 UNKNOWN 0 16 - 302 51688 504 0.13576 GALAXY 64 0 - 302 51688 505 0.12933 GALAXY 64 0 - 302 51688 506 0.05441 GALAXY 64 0 - 302 51688 507 0.02531 GALAXY 64 0 - 302 51688 508 0.05392 GALAXY 64 0 - 302 51688 509 0.33817 GALAXY 2097184 0 - 302 51688 510 0.13616 GALAXY 64 0 - 302 51688 511 0.42346 GALAXY 32 0 - 302 51688 512 0.00021 STAR 1056772 0 - 302 51688 513 0.05470 GALAXY 64 0 - 302 51688 514 0.13522 GALAXY 64 0 - 302 51688 515 0.08304 GALAXY 96 0 - 302 51688 516 0.13636 GALAXY 64 0 - 302 51688 517 0.13540 GALAXY 64 0 - 302 51688 518 0.05380 GALAXY 64 0 - 302 51688 519 0.47076 GALAXY 32 0 - 302 51688 520 0.00000 UNKNOWN 4 0 - 302 51688 521 0.11611 GALAXY 64 0 - 302 51688 522 0.00059 STAR 1056772 0 - 302 51688 523 0.05797 GALAXY 64 0 - 302 51688 524 0.12443 GALAXY 64 0 - 302 51688 525 0.37282 GALAXY 32 0 - 302 51688 526 1.44888 QSO 1048580 0 - 302 51688 527 0.00000 UNKNOWN 0 16 - 302 51688 528 0.17760 GALAXY 96 0 - 302 51688 529 0.37683 GALAXY 32 0 - 302 51688 530 0.14284 GALAXY 64 0 - 302 51688 531 0.02569 GALAXY 64 0 - 302 51688 532 0.12484 GALAXY 64 0 - 302 51688 533 0.44211 QSO 4 0 - 302 51688 534 0.11459 GALAXY 64 0 - 302 51688 535 1.99770 QSO 4 0 - 302 51688 536 0.11425 GALAXY 64 0 - 302 51688 537 1.02403 QSO 1048580 0 - 302 51688 538 0.00035 STAR 64 0 - 302 51688 539 0.12425 GALAXY 64 0 - 302 51688 540 0.11364 GALAXY 64 0 - 302 51688 541 0.10535 GALAXY 64 0 - 302 51688 542 0.00000 UNKNOWN 0 16 - 302 51688 543 0.05323 GALAXY 64 0 - 302 51688 544 0.02687 GALAXY 64 0 - 302 51688 545 0.10575 GALAXY 96 0 - 302 51688 546 0.05334 GALAXY 64 0 - 302 51688 547 0.15014 GALAXY 64 0 - 302 51688 548 0.14898 GALAXY 64 0 - 302 51688 549 0.00132 STAR 1056772 0 - 302 51688 550 1.71716 QSO 20 0 - 302 51688 551 0.17878 GALAXY 96 0 - 302 51688 552 0.13543 GALAXY 64 0 - 302 51688 553 0.02944 GALAXY 64 0 - 302 51688 554 0.30157 QSO 2097152 0 - 302 51688 555 0.14944 GALAXY 64 0 - 302 51688 556 0.14134 GALAXY 64 0 - 302 51688 557 0.13687 GALAXY 64 0 - 302 51688 558 0.10683 GALAXY 64 0 - 302 51688 559 0.49735 GALAXY 67108896 0 - 302 51688 560 1.74292 QSO 4 0 - 302 51688 561 0.14703 GALAXY 64 0 - 302 51688 562 0.18022 GALAXY 64 0 - 302 51688 563 0.11443 GALAXY 64 0 - 302 51688 564 1.51009 QSO 4 0 - 302 51688 565 0.02566 GALAXY 96 0 - 302 51688 566 0.11478 GALAXY 64 0 - 302 51688 567 0.20137 GALAXY 64 0 - 302 51688 568 0.18056 GALAXY 64 0 - 302 51688 569 0.00000 UNKNOWN 0 16 - 302 51688 570 0.00002 STAR 0 34 - 302 51688 571 0.17991 GALAXY 64 0 - 302 51688 572 0.02569 GALAXY 64 0 - 302 51688 573 0.14504 GALAXY 64 0 - 302 51688 574 0.13586 GALAXY 64 0 - 302 51688 575 0.02575 GALAXY 4 0 - 302 51688 576 0.09546 GALAXY 64 0 - 302 51688 577 0.12505 GALAXY 64 0 - 302 51688 578 0.16505 GALAXY 64 0 - 302 51688 579 0.14622 GALAXY 64 0 - 302 51688 580 0.17774 GALAXY 64 0 - 302 51688 581 1.03064 QSO 4 0 - 302 51688 582 0.26226 GALAXY 96 0 - 302 51688 583 0.14745 GALAXY 96 0 - 302 51688 584 0.14735 GALAXY 64 0 - 302 51688 585 0.00036 STAR 32 0 - 302 51688 586 0.05487 GALAXY 96 0 - 302 51688 587 0.14503 GALAXY 64 0 - 302 51688 588 0.13128 GALAXY 64 0 - 302 51688 589 0.10590 GALAXY 64 0 - 302 51688 590 0.00027 STAR 0 32 - 302 51688 591 0.05326 GALAXY 64 0 - 302 51688 592 0.05414 GALAXY 96 0 - 302 51688 593 0.14745 GALAXY 64 0 - 302 51688 594 0.14678 GALAXY 64 0 - 302 51688 595 0.11450 GALAXY 64 0 - 302 51688 596 0.05475 GALAXY 64 0 - 302 51688 597 0.05318 GALAXY 64 0 - 302 51688 598 0.05583 GALAXY 96 0 - 302 51688 599 0.00000 UNKNOWN 0 16 - 302 51688 600 0.00043 STAR 4 0 - 302 51688 601 0.76387 GALAXY 64 0 - 302 51688 602 0.02539 GALAXY 64 0 - 302 51688 603 0.12505 GALAXY 64 0 - 302 51688 604 0.00000 UNKNOWN 0 16 - 302 51688 605 1.83796 QSO 1048580 0 - 302 51688 606 0.20067 GALAXY 64 0 - 302 51688 607 0.12664 GALAXY 64 0 - 302 51688 608 0.12562 GALAXY 64 0 - 302 51688 609 0.12478 GALAXY 64 0 - 302 51688 610 0.12488 GALAXY 64 0 - 302 51688 611 0.00009 UNKNOWN 64 0 - 302 51688 612 0.00009 UNKNOWN 64 0 - 302 51688 613 0.15683 GALAXY 64 0 - 302 51688 614 0.10566 GALAXY 64 0 - 302 51688 615 0.17566 GALAXY 64 0 - 302 51688 616 0.12457 GALAXY 96 0 - 302 51688 617 0.05330 GALAXY 64 0 - 302 51688 618 0.07873 GALAXY 64 0 - 302 51688 619 1.22383 QSO 3145748 0 - 302 51688 620 0.50494 GALAXY 67108896 0 - 302 51688 621 0.09602 GALAXY 64 0 - 302 51688 622 0.00000 MISSING 0 0 - 302 51688 623 0.05427 GALAXY 64 0 - 302 51688 624 0.12791 GALAXY 64 0 - 302 51688 625 0.05505 GALAXY 64 0 - 302 51688 626 0.05510 GALAXY 68 0 - 302 51688 627 0.12688 GALAXY 64 0 - 302 51688 628 0.05405 GALAXY 96 0 - 302 51688 629 0.10567 GALAXY 64 0 - 302 51688 630 0.00059 STAR 1056768 0 - 302 51688 631 0.05509 GALAXY 96 0 - 302 51688 632 0.18705 GALAXY 96 0 - 302 51688 633 0.12784 GALAXY 96 0 - 302 51688 634 0.00000 UNKNOWN 0 16 - 302 51688 635 0.09592 GALAXY 96 0 - 302 51688 636 0.05476 GALAXY 64 0 - 302 51688 637 0.15151 GALAXY 64 0 - 302 51688 638 0.05456 GALAXY 64 0 - 302 51688 639 0.12725 GALAXY 64 0 - 302 51688 640 0.12515 GALAXY 64 0 - 303 51615 1 0.00000 UNKNOWN 64 0 - 303 51615 2 0.09527 GALAXY 64 0 - 303 51615 3 0.14785 GALAXY 64 0 - 303 51615 4 0.04975 GALAXY 64 0 - 303 51615 5 0.12564 GALAXY 64 0 - 303 51615 6 0.04869 GALAXY 96 0 - 303 51615 7 0.14129 GALAXY 64 0 - 303 51615 8 0.00055 STAR 8192 0 - 303 51615 9 0.08577 GALAXY 64 0 - 303 51615 10 0.19753 GALAXY 64 0 - 303 51615 11 0.08073 GALAXY 64 0 - 303 51615 12 0.00000 UNKNOWN 0 16 - 303 51615 13 1.09169 QSO 4 0 - 303 51615 14 0.12553 GALAXY 64 0 - 303 51615 15 0.18689 GALAXY 2097216 0 - 303 51615 16 0.18156 GALAXY 64 0 - 303 51615 17 -0.00006 STAR 4194304 0 - 303 51615 18 0.13956 GALAXY 64 0 - 303 51615 19 0.18645 GALAXY 64 0 - 303 51615 20 0.12743 GALAXY 64 0 - 303 51615 21 0.08527 GALAXY 64 0 - 303 51615 22 0.18125 GALAXY 64 0 - 303 51615 23 0.40589 GALAXY 32 0 - 303 51615 24 0.13259 GALAXY 64 0 - 303 51615 25 0.03624 GALAXY 64 0 - 303 51615 26 0.18145 GALAXY 96 0 - 303 51615 27 0.00000 UNKNOWN 0 16 - 303 51615 28 0.87916 QSO 4 0 - 303 51615 29 0.05108 GALAXY 64 0 - 303 51615 30 1.52714 QSO 4 0 - 303 51615 31 -0.00014 STAR 1056772 0 - 303 51615 32 0.13449 GALAXY 64 0 - 303 51615 33 0.16865 GALAXY 64 0 - 303 51615 34 0.12071 GALAXY 64 0 - 303 51615 35 0.12074 GALAXY 64 0 - 303 51615 36 0.08476 GALAXY 64 0 - 303 51615 37 0.05134 GALAXY 68 0 - 303 51615 38 0.13877 GALAXY 64 0 - 303 51615 39 0.14709 GALAXY 64 0 - 303 51615 40 0.12035 GALAXY 4 0 - 303 51615 41 0.08597 GALAXY 64 0 - 303 51615 42 0.18437 GALAXY 96 0 - 303 51615 43 0.07653 GALAXY 64 0 - 303 51615 44 0.14983 GALAXY 64 0 - 303 51615 45 0.14885 GALAXY 64 0 - 303 51615 46 0.55182 QSO 1048580 0 - 303 51615 47 0.14926 GALAXY 64 0 - 303 51615 48 -0.00013 STAR 16 0 - 303 51615 49 0.14991 GALAXY 64 0 - 303 51615 50 0.12529 GALAXY 64 0 - 303 51615 51 0.13771 GALAXY 64 0 - 303 51615 52 0.14768 GALAXY 64 0 - 303 51615 53 0.00000 UNKNOWN 0 16 - 303 51615 54 0.38038 QSO 5124 0 - 303 51615 55 0.12696 GALAXY 64 0 - 303 51615 56 0.14407 GALAXY 64 0 - 303 51615 57 -0.00042 STAR 1048580 0 - 303 51615 58 0.14927 GALAXY 96 0 - 303 51615 59 0.04843 GALAXY 64 0 - 303 51615 60 -0.00019 STAR 9437184 512 - 303 51615 61 0.00032 STAR 4 0 - 303 51615 62 0.12912 GALAXY 64 0 - 303 51615 63 0.08216 GALAXY 64 0 - 303 51615 64 0.12341 GALAXY 64 0 - 303 51615 65 0.12283 GALAXY 64 0 - 303 51615 66 0.12575 GALAXY 64 0 - 303 51615 67 0.05148 GALAXY 64 0 - 303 51615 68 1.91719 QSO 1048580 0 - 303 51615 69 0.00000 UNKNOWN 0 16 - 303 51615 70 0.12345 GALAXY 64 0 - 303 51615 71 0.04958 GALAXY 64 0 - 303 51615 72 0.12987 GALAXY 64 0 - 303 51615 73 0.14793 GALAXY 96 0 - 303 51615 74 0.08261 GALAXY 64 0 - 303 51615 75 0.08244 GALAXY 64 0 - 303 51615 76 0.12300 GALAXY 64 0 - 303 51615 77 0.12564 GALAXY 2097216 0 - 303 51615 78 0.16881 GALAXY 64 0 - 303 51615 79 0.12575 GALAXY 64 0 - 303 51615 80 0.37886 GALAXY 4 0 - 303 51615 81 0.07685 GALAXY 96 0 - 303 51615 82 0.14660 GALAXY 64 0 - 303 51615 83 0.12449 GALAXY 64 0 - 303 51615 84 0.08761 GALAXY 64 0 - 303 51615 85 0.00017 STAR 1 0 - 303 51615 86 0.12510 GALAXY 64 0 - 303 51615 87 0.14901 GALAXY 64 0 - 303 51615 88 0.13968 GALAXY 64 0 - 303 51615 89 0.12485 GALAXY 64 0 - 303 51615 90 0.14838 GALAXY 64 0 - 303 51615 91 0.00000 MISSING 0 0 - 303 51615 92 0.00000 UNKNOWN 64 0 - 303 51615 93 0.13689 GALAXY 64 0 - 303 51615 94 0.67316 QSO 33554433 0 - 303 51615 95 0.14914 GALAXY 64 0 - 303 51615 96 0.28984 GALAXY 32 0 - 303 51615 97 0.12761 GALAXY 64 0 - 303 51615 98 0.37979 GALAXY 67108896 0 - 303 51615 99 0.14837 GALAXY 64 0 - 303 51615 100 0.03795 GALAXY 64 0 - 303 51615 101 0.08364 GALAXY 64 0 - 303 51615 102 0.18422 GALAXY 64 0 - 303 51615 103 0.13732 GALAXY 64 0 - 303 51615 104 0.13850 QSO 64 0 - 303 51615 105 0.07810 GALAXY 64 0 - 303 51615 106 0.00000 UNKNOWN 0 16 - 303 51615 107 0.07685 GALAXY 64 0 - 303 51615 108 0.14878 GALAXY 64 0 - 303 51615 109 0.07739 GALAXY 96 0 - 303 51615 110 0.12866 GALAXY 64 0 - 303 51615 111 0.13907 GALAXY 64 0 - 303 51615 112 0.10294 GALAXY 64 0 - 303 51615 113 0.15049 GALAXY 64 0 - 303 51615 114 0.12755 GALAXY 64 0 - 303 51615 115 0.13998 GALAXY 64 0 - 303 51615 116 0.00000 UNKNOWN 0 16 - 303 51615 117 0.07718 GALAXY 64 0 - 303 51615 118 0.18458 GALAXY 64 0 - 303 51615 119 0.12665 GALAXY 64 0 - 303 51615 120 0.08359 GALAXY 64 0 - 303 51615 121 0.13818 GALAXY 64 0 - 303 51615 122 0.04967 GALAXY 64 0 - 303 51615 123 0.00000 UNKNOWN 0 16 - 303 51615 124 -0.00016 STAR 4 0 - 303 51615 125 0.03949 GALAXY 64 0 - 303 51615 126 0.11951 GALAXY 96 0 - 303 51615 127 0.17649 GALAXY 64 0 - 303 51615 128 0.30345 GALAXY 32 0 - 303 51615 129 0.46682 GALAXY 67108896 0 - 303 51615 130 0.11849 GALAXY 64 0 - 303 51615 131 0.14805 GALAXY 4 0 - 303 51615 132 0.03841 GALAXY 96 0 - 303 51615 133 0.12205 GALAXY 64 0 - 303 51615 134 0.12114 GALAXY 64 0 - 303 51615 135 0.03820 GALAXY 96 0 - 303 51615 136 0.14107 GALAXY 64 0 - 303 51615 137 0.12292 GALAXY 64 0 - 303 51615 138 0.11819 GALAXY 96 0 - 303 51615 139 0.22611 GALAXY 64 0 - 303 51615 140 0.07168 GALAXY 68 0 - 303 51615 141 0.14593 GALAXY 64 0 - 303 51615 142 0.14645 GALAXY 64 0 - 303 51615 143 0.13734 GALAXY 64 0 - 303 51615 144 0.12697 GALAXY 64 0 - 303 51615 145 0.13913 GALAXY 64 0 - 303 51615 146 0.13472 GALAXY 4 0 - 303 51615 147 1.15553 QSO 4 0 - 303 51615 148 0.12651 GALAXY 64 0 - 303 51615 149 0.18449 GALAXY 64 0 - 303 51615 150 0.14027 GALAXY 64 0 - 303 51615 151 0.13886 GALAXY 96 0 - 303 51615 152 0.08651 GALAXY 4 0 - 303 51615 153 0.13677 GALAXY 64 0 - 303 51615 154 0.12623 GALAXY 64 0 - 303 51615 155 0.18136 GALAXY 64 0 - 303 51615 156 0.35517 GALAXY 32 0 - 303 51615 157 0.12483 GALAXY 64 0 - 303 51615 158 0.12492 GALAXY 64 0 - 303 51615 159 0.08465 GALAXY 96 0 - 303 51615 160 0.00000 UNKNOWN 0 16 - 303 51615 161 0.13823 GALAXY 64 0 - 303 51615 162 0.18566 GALAXY 64 0 - 303 51615 163 0.13953 GALAXY 64 0 - 303 51615 164 0.14008 GALAXY 64 0 - 303 51615 165 0.13870 GALAXY 64 0 - 303 51615 166 0.13752 GALAXY 64 0 - 303 51615 167 0.14310 GALAXY 64 0 - 303 51615 168 0.14624 GALAXY 64 0 - 303 51615 169 0.14430 GALAXY 64 0 - 303 51615 170 0.14288 GALAXY 64 0 - 303 51615 171 0.13638 GALAXY 64 0 - 303 51615 172 0.38219 GALAXY 32 0 - 303 51615 173 0.14625 GALAXY 64 0 - 303 51615 174 0.13981 GALAXY 64 0 - 303 51615 175 0.00000 UNKNOWN 0 16 - 303 51615 176 0.13890 GALAXY 96 0 - 303 51615 177 0.03853 QSO 64 0 - 303 51615 178 0.00000 UNKNOWN 0 16 - 303 51615 179 0.14002 GALAXY 64 0 - 303 51615 180 0.13819 GALAXY 64 0 - 303 51615 181 0.18485 GALAXY 64 0 - 303 51615 182 0.00000 UNKNOWN 64 0 - 303 51615 183 0.18515 GALAXY 96 0 - 303 51615 184 0.09695 GALAXY 64 0 - 303 51615 185 0.08360 GALAXY 64 0 - 303 51615 186 0.13778 GALAXY 64 0 - 303 51615 187 0.08305 GALAXY 64 0 - 303 51615 188 0.14806 GALAXY 64 0 - 303 51615 189 0.08777 GALAXY 64 0 - 303 51615 190 0.13786 GALAXY 64 0 - 303 51615 191 0.30427 GALAXY 32 0 - 303 51615 192 0.13824 GALAXY 64 0 - 303 51615 193 0.08700 GALAXY 64 0 - 303 51615 194 0.14108 GALAXY 64 0 - 303 51615 195 0.18590 GALAXY 64 0 - 303 51615 196 0.03835 GALAXY 96 0 - 303 51615 197 0.13716 GALAXY 64 0 - 303 51615 198 0.13796 GALAXY 64 0 - 303 51615 199 0.14069 GALAXY 64 0 - 303 51615 200 0.13844 GALAXY 64 0 - 303 51615 201 0.02561 GALAXY 64 0 - 303 51615 202 0.12045 GALAXY 64 0 - 303 51615 203 0.12262 GALAXY 64 0 - 303 51615 204 0.18730 GALAXY 64 0 - 303 51615 205 0.07011 GALAXY 64 0 - 303 51615 206 0.17683 GALAXY 64 0 - 303 51615 207 0.06975 GALAXY 64 0 - 303 51615 208 0.12060 GALAXY 64 0 - 303 51615 209 0.00000 UNKNOWN 0 16 - 303 51615 210 0.07680 GALAXY 96 0 - 303 51615 211 0.12172 GALAXY 64 0 - 303 51615 212 0.15979 GALAXY 64 0 - 303 51615 213 4.19082 QSO 33554433 0 - 303 51615 214 0.12634 GALAXY 64 0 - 303 51615 215 0.12238 GALAXY 64 0 - 303 51615 216 0.11936 GALAXY 4 0 - 303 51615 217 0.11604 GALAXY 64 0 - 303 51615 218 0.07016 GALAXY 64 0 - 303 51615 219 0.11976 GALAXY 64 0 - 303 51615 220 0.12200 GALAXY 64 0 - 303 51615 221 0.14004 GALAXY 64 0 - 303 51615 222 0.08276 GALAXY 96 0 - 303 51615 223 0.14409 GALAXY 64 0 - 303 51615 224 0.14325 GALAXY 64 0 - 303 51615 225 0.13591 GALAXY 64 0 - 303 51615 226 0.13832 GALAXY 64 0 - 303 51615 227 0.13979 GALAXY 64 0 - 303 51615 228 -0.00005 STAR 1048580 0 - 303 51615 229 0.12175 GALAXY 64 0 - 303 51615 230 0.13944 GALAXY 64 0 - 303 51615 231 0.14066 GALAXY 64 0 - 303 51615 232 0.12430 GALAXY 64 0 - 303 51615 233 0.12844 GALAXY 64 0 - 303 51615 234 0.12459 GALAXY 64 0 - 303 51615 235 0.00000 UNKNOWN 0 16 - 303 51615 236 0.14367 GALAXY 64 0 - 303 51615 237 0.12362 GALAXY 64 0 - 303 51615 238 0.14610 GALAXY 64 0 - 303 51615 239 0.14157 GALAXY 64 0 - 303 51615 240 0.13929 GALAXY 64 0 - 303 51615 241 0.12036 GALAXY 64 0 - 303 51615 242 -0.00024 STAR 4 0 - 303 51615 243 0.19361 GALAXY 64 0 - 303 51615 244 0.05375 GALAXY 64 0 - 303 51615 245 0.05436 GALAXY 64 0 - 303 51615 246 0.18643 GALAXY 64 0 - 303 51615 247 0.05385 GALAXY 64 0 - 303 51615 248 0.03244 GALAXY 64 0 - 303 51615 249 0.06999 GALAXY 64 0 - 303 51615 250 1.07235 QSO 33554433 0 - 303 51615 251 0.11867 GALAXY 64 0 - 303 51615 252 0.18116 GALAXY 2097216 0 - 303 51615 253 0.00000 UNKNOWN 0 16 - 303 51615 254 0.05361 GALAXY 64 0 - 303 51615 255 0.02584 GALAXY 68 0 - 303 51615 256 0.02600 GALAXY 64 0 - 303 51615 257 0.13596 GALAXY 64 0 - 303 51615 258 0.18184 GALAXY 64 0 - 303 51615 259 0.03238 GALAXY 64 0 - 303 51615 260 0.18664 GALAXY 96 0 - 303 51615 261 0.44580 GALAXY 32 0 - 303 51615 262 0.12849 GALAXY 64 0 - 303 51615 263 0.22764 GALAXY 64 0 - 303 51615 264 0.18716 GALAXY 64 0 - 303 51615 265 0.14405 GALAXY 64 0 - 303 51615 266 0.12585 GALAXY 64 0 - 303 51615 267 0.14016 GALAXY 64 0 - 303 51615 268 0.12656 GALAXY 64 0 - 303 51615 269 0.00000 UNKNOWN 0 16 - 303 51615 270 0.13965 GALAXY 64 0 - 303 51615 271 0.12903 GALAXY 64 0 - 303 51615 272 0.12020 GALAXY 64 0 - 303 51615 273 0.14031 GALAXY 64 0 - 303 51615 274 0.12156 GALAXY 64 0 - 303 51615 275 0.12560 GALAXY 4 0 - 303 51615 276 0.13228 GALAXY 64 0 - 303 51615 277 0.12655 GALAXY 64 0 - 303 51615 278 0.08332 GALAXY 64 0 - 303 51615 279 0.12056 GALAXY 64 0 - 303 51615 280 0.16066 GALAXY 64 0 - 303 51615 281 0.02401 GALAXY 64 0 - 303 51615 282 0.85638 QSO 1048580 0 - 303 51615 283 0.00066 STAR 4 0 - 303 51615 284 0.27879 GALAXY 32 0 - 303 51615 285 0.13800 GALAXY 64 0 - 303 51615 286 0.18233 GALAXY 64 0 - 303 51615 287 2.33785 QSO 4 0 - 303 51615 288 -0.00018 STAR 0 34 - 303 51615 289 0.19474 GALAXY 64 0 - 303 51615 290 0.11707 GALAXY 64 0 - 303 51615 291 0.00014 STAR 1 0 - 303 51615 292 0.14998 GALAXY 64 0 - 303 51615 293 0.07891 GALAXY 64 0 - 303 51615 294 0.00004 STAR 5 0 - 303 51615 295 0.84132 QSO 1048580 0 - 303 51615 296 0.00000 UNKNOWN 0 16 - 303 51615 297 0.00502 GALAXY 96 0 - 303 51615 298 0.07705 GALAXY 64 0 - 303 51615 299 0.35208 GALAXY 32 0 - 303 51615 300 -0.00014 STAR 0 32 - 303 51615 301 0.00000 UNKNOWN 0 16 - 303 51615 302 0.12692 GALAXY 68 0 - 303 51615 303 0.13819 GALAXY 64 0 - 303 51615 304 0.02552 GALAXY 96 0 - 303 51615 305 0.37939 GALAXY 32 0 - 303 51615 306 0.13810 GALAXY 96 0 - 303 51615 307 0.09731 GALAXY 64 0 - 303 51615 308 0.13563 GALAXY 64 0 - 303 51615 309 0.37866 GALAXY 32 0 - 303 51615 310 0.09600 GALAXY 4 0 - 303 51615 311 0.12921 GALAXY 64 0 - 303 51615 312 0.08055 GALAXY 64 0 - 303 51615 313 -0.00002 STAR 0 34 - 303 51615 314 0.35973 GALAXY 32 0 - 303 51615 315 0.13089 GALAXY 64 0 - 303 51615 316 0.13860 GALAXY 64 0 - 303 51615 317 0.11593 QSO 64 0 - 303 51615 318 0.05466 GALAXY 64 0 - 303 51615 319 0.00035 STAR 0 34 - 303 51615 320 0.13856 GALAXY 64 0 - 303 51615 321 0.34881 GALAXY 67108896 0 - 303 51615 322 0.62665 QSO 4 0 - 303 51615 323 0.00000 UNKNOWN 0 16 - 303 51615 324 2.13226 QSO 69206048 0 - 303 51615 325 0.10518 GALAXY 64 0 - 303 51615 326 0.10671 GALAXY 64 0 - 303 51615 327 0.17708 GALAXY 64 0 - 303 51615 328 0.95396 QSO 1048580 0 - 303 51615 329 0.14311 GALAXY 96 0 - 303 51615 330 0.15937 GALAXY 64 0 - 303 51615 331 -0.00006 STAR 4096 0 - 303 51615 332 0.02462 GALAXY 64 0 - 303 51615 333 0.14310 GALAXY 64 0 - 303 51615 334 0.14887 GALAXY 64 0 - 303 51615 335 0.14873 GALAXY 64 0 - 303 51615 336 0.09342 GALAXY 64 0 - 303 51615 337 0.00013 STAR 1056768 0 - 303 51615 338 0.17769 GALAXY 64 0 - 303 51615 339 0.14599 GALAXY 64 0 - 303 51615 340 0.02506 GALAXY 96 0 - 303 51615 341 -0.00007 STAR 0 32 - 303 51615 342 0.00027 STAR 0 2 - 303 51615 343 0.05292 GALAXY 96 0 - 303 51615 344 0.05458 GALAXY 64 0 - 303 51615 345 0.00008 STAR 0 2 - 303 51615 346 0.37620 GALAXY 32 0 - 303 51615 347 0.47650 GALAXY 32 0 - 303 51615 348 0.14966 GALAXY 64 0 - 303 51615 349 0.25520 GALAXY 32 0 - 303 51615 350 0.17961 GALAXY 64 0 - 303 51615 351 0.00008 STAR 0 2 - 303 51615 352 0.00019 STAR 0 34 - 303 51615 353 0.00000 UNKNOWN 0 16 - 303 51615 354 0.16110 GALAXY 64 0 - 303 51615 355 0.12826 GALAXY 64 0 - 303 51615 356 0.12942 GALAXY 64 0 - 303 51615 357 0.05495 GALAXY 64 0 - 303 51615 358 0.13825 GALAXY 64 0 - 303 51615 359 0.00011 STAR 4 0 - 303 51615 360 0.00039 STAR 0 2 - 303 51615 361 0.02496 GALAXY 64 0 - 303 51615 362 0.00000 UNKNOWN 0 16 - 303 51615 363 0.87852 QSO 4 0 - 303 51615 364 0.09466 GALAXY 64 0 - 303 51615 365 0.09438 GALAXY 64 0 - 303 51615 366 0.04622 GALAXY 64 0 - 303 51615 367 0.05273 GALAXY 68 0 - 303 51615 368 0.12304 GALAXY 64 0 - 303 51615 369 0.10561 GALAXY 64 0 - 303 51615 370 0.26040 GALAXY 32 0 - 303 51615 371 0.05272 GALAXY 64 0 - 303 51615 372 0.56365 QSO 4 0 - 303 51615 373 0.14424 GALAXY 64 0 - 303 51615 374 0.22629 GALAXY 64 0 - 303 51615 375 0.20042 GALAXY 4 0 - 303 51615 376 0.26171 GALAXY 96 0 - 303 51615 377 0.05383 GALAXY 64 0 - 303 51615 378 0.40648 GALAXY 32 0 - 303 51615 379 0.08437 GALAXY 64 0 - 303 51615 380 0.14683 GALAXY 64 0 - 303 51615 381 0.20679 GALAXY 64 0 - 303 51615 382 0.14269 GALAXY 64 0 - 303 51615 383 0.12437 GALAXY 64 0 - 303 51615 384 0.26329 GALAXY 32 0 - 303 51615 385 0.14199 GALAXY 64 0 - 303 51615 386 0.13824 GALAXY 64 0 - 303 51615 387 0.34916 GALAXY 32 0 - 303 51615 388 0.00000 UNKNOWN 0 16 - 303 51615 389 0.00000 UNKNOWN 8196 0 - 303 51615 390 0.00000 UNKNOWN 64 0 - 303 51615 391 0.46777 UNKNOWN 67108896 0 - 303 51615 392 0.13999 GALAXY 64 0 - 303 51615 393 0.17975 GALAXY 64 0 - 303 51615 394 0.05454 GALAXY 64 0 - 303 51615 395 0.12311 GALAXY 64 0 - 303 51615 396 0.18770 GALAXY 64 0 - 303 51615 397 0.12757 GALAXY 64 0 - 303 51615 398 0.12548 GALAXY 64 0 - 303 51615 399 0.12555 GALAXY 64 0 - 303 51615 400 0.26812 QSO 33554433 0 - 303 51615 401 0.96681 QSO 1048580 0 - 303 51615 402 0.14278 GALAXY 1048580 0 - 303 51615 403 0.13824 GALAXY 64 0 - 303 51615 404 0.12316 GALAXY 64 0 - 303 51615 405 0.00000 UNKNOWN 0 16 - 303 51615 406 0.38759 GALAXY 32 0 - 303 51615 407 0.00036 STAR 0 2 - 303 51615 408 0.05437 GALAXY 64 0 - 303 51615 409 0.23341 GALAXY 96 0 - 303 51615 410 0.17944 GALAXY 64 0 - 303 51615 411 0.05307 GALAXY 64 0 - 303 51615 412 0.16374 GALAXY 64 0 - 303 51615 413 0.29846 GALAXY 32 0 - 303 51615 414 0.56806 QSO 1048580 0 - 303 51615 415 0.47806 GALAXY 67108896 0 - 303 51615 416 0.00035 STAR 0 2 - 303 51615 417 0.17954 GALAXY 64 0 - 303 51615 418 0.05349 GALAXY 64 0 - 303 51615 419 0.04799 GALAXY 68 0 - 303 51615 420 0.05277 GALAXY 64 0 - 303 51615 421 0.12371 GALAXY 64 0 - 303 51615 422 0.12361 GALAXY 64 0 - 303 51615 423 0.12334 GALAXY 64 0 - 303 51615 424 0.13979 GALAXY 64 0 - 303 51615 425 0.14415 GALAXY 64 0 - 303 51615 426 0.14098 GALAXY 64 0 - 303 51615 427 0.05431 GALAXY 64 0 - 303 51615 428 0.12195 GALAXY 64 0 - 303 51615 429 0.19232 GALAXY 64 0 - 303 51615 430 0.12509 GALAXY 64 0 - 303 51615 431 0.17950 GALAXY 96 0 - 303 51615 432 0.12672 GALAXY 64 0 - 303 51615 433 0.12357 GALAXY 64 0 - 303 51615 434 0.18911 GALAXY 64 0 - 303 51615 435 0.18094 GALAXY 4 0 - 303 51615 436 0.18013 GALAXY 64 0 - 303 51615 437 0.13522 GALAXY 64 0 - 303 51615 438 0.00000 UNKNOWN 0 16 - 303 51615 439 0.10386 GALAXY 64 0 - 303 51615 440 0.12335 GALAXY 64 0 - 303 51615 441 0.00000 UNKNOWN 0 16 - 303 51615 442 0.07764 GALAXY 64 0 - 303 51615 443 0.12338 GALAXY 64 0 - 303 51615 444 0.26327 GALAXY 96 0 - 303 51615 445 0.12251 GALAXY 64 0 - 303 51615 446 0.05386 GALAXY 64 0 - 303 51615 447 0.18058 GALAXY 64 0 - 303 51615 448 0.12346 GALAXY 64 0 - 303 51615 449 0.12331 GALAXY 64 0 - 303 51615 450 1.04096 QSO 1048580 0 - 303 51615 451 0.26478 GALAXY 96 0 - 303 51615 452 0.26388 GALAXY 32 0 - 303 51615 453 0.10636 GALAXY 64 0 - 303 51615 454 0.11381 GALAXY 96 0 - 303 51615 455 0.07711 GALAXY 64 0 - 303 51615 456 0.11429 GALAXY 64 0 - 303 51615 457 0.12530 GALAXY 96 0 - 303 51615 458 0.38428 GALAXY 32 0 - 303 51615 459 0.26511 GALAXY 32 0 - 303 51615 460 0.11425 GALAXY 64 0 - 303 51615 461 0.14396 GALAXY 64 0 - 303 51615 462 0.19128 GALAXY 64 0 - 303 51615 463 0.18357 GALAXY 64 0 - 303 51615 464 1.26341 QSO 3145748 0 - 303 51615 465 0.12700 GALAXY 96 0 - 303 51615 466 0.00019 STAR 4 0 - 303 51615 467 0.03861 GALAXY 64 0 - 303 51615 468 -0.00010 STAR 64 0 - 303 51615 469 0.07709 GALAXY 64 0 - 303 51615 470 0.12394 GALAXY 96 0 - 303 51615 471 1.93617 QSO 1048580 512 - 303 51615 472 0.13507 GALAXY 64 0 - 303 51615 473 0.00000 UNKNOWN 0 16 - 303 51615 474 0.04740 GALAXY 64 0 - 303 51615 475 0.38421 GALAXY 32 0 - 303 51615 476 0.25720 GALAXY 64 0 - 303 51615 477 1.68141 QSO 1 0 - 303 51615 478 0.16772 GALAXY 64 0 - 303 51615 479 0.13634 GALAXY 64 0 - 303 51615 480 0.18504 GALAXY 64 0 - 303 51615 481 0.08441 GALAXY 64 0 - 303 51615 482 0.12819 GALAXY 64 0 - 303 51615 483 0.12616 GALAXY 4160 0 - 303 51615 484 0.12758 GALAXY 64 0 - 303 51615 485 0.12623 GALAXY 64 0 - 303 51615 486 0.11640 GALAXY 64 0 - 303 51615 487 0.12991 GALAXY 64 0 - 303 51615 488 0.00000 UNKNOWN 0 16 - 303 51615 489 0.11879 QSO 1048580 0 - 303 51615 490 0.13549 GALAXY 64 0 - 303 51615 491 0.11970 GALAXY 64 0 - 303 51615 492 0.05318 GALAXY 64 0 - 303 51615 493 0.12401 GALAXY 96 0 - 303 51615 494 0.35248 GALAXY 32 0 - 303 51615 495 1.52949 QSO 64 0 - 303 51615 496 0.18065 GALAXY 64 0 - 303 51615 497 0.12581 GALAXY 64 0 - 303 51615 498 0.12469 GALAXY 64 0 - 303 51615 499 0.14231 GALAXY 64 0 - 303 51615 500 0.18358 GALAXY 64 0 - 303 51615 501 0.07715 GALAXY 64 0 - 303 51615 502 0.05272 GALAXY 96 0 - 303 51615 503 0.07731 GALAXY 64 0 - 303 51615 504 0.43542 GALAXY 32 0 - 303 51615 505 0.05237 GALAXY 96 0 - 303 51615 506 0.35376 GALAXY 32 0 - 303 51615 507 0.02563 GALAXY 96 0 - 303 51615 508 0.14406 GALAXY 64 0 - 303 51615 509 0.19105 GALAXY 64 0 - 303 51615 510 0.12483 GALAXY 64 0 - 303 51615 511 0.05279 GALAXY 64 0 - 303 51615 512 0.16798 GALAXY 64 0 - 303 51615 513 0.00000 UNKNOWN 0 16 - 303 51615 514 0.00008 STAR 0 2 - 303 51615 515 0.05149 GALAXY 64 0 - 303 51615 516 0.12475 GALAXY 64 0 - 303 51615 517 0.96759 QSO 1048580 0 - 303 51615 518 1.56477 QSO 5124 0 - 303 51615 519 0.13420 GALAXY 64 0 - 303 51615 520 0.12334 GALAXY 64 0 - 303 51615 521 0.16445 GALAXY 96 0 - 303 51615 522 0.08423 GALAXY 64 0 - 303 51615 523 0.17477 GALAXY 64 0 - 303 51615 524 0.18756 GALAXY 64 0 - 303 51615 525 0.18505 GALAXY 64 0 - 303 51615 526 0.12008 GALAXY 64 0 - 303 51615 527 0.42605 GALAXY 67108896 0 - 303 51615 528 0.08408 GALAXY 64 0 - 303 51615 529 0.39416 GALAXY 32 0 - 303 51615 530 0.44827 GALAXY 67108896 0 - 303 51615 531 0.12294 GALAXY 64 0 - 303 51615 532 0.00005 STAR 0 34 - 303 51615 533 0.35707 GALAXY 32 0 - 303 51615 534 0.06943 GALAXY 64 0 - 303 51615 535 0.02546 GALAXY 64 0 - 303 51615 536 1.04201 QSO 1572868 0 - 303 51615 537 0.00000 UNKNOWN 0 16 - 303 51615 538 0.18399 GALAXY 64 0 - 303 51615 539 0.05328 GALAXY 64 0 - 303 51615 540 -0.00006 STAR 0 34 - 303 51615 541 0.00000 UNKNOWN 0 16 - 303 51615 542 0.43010 GALAXY 32 0 - 303 51615 543 0.00015 STAR 1 0 - 303 51615 544 0.05340 GALAXY 64 0 - 303 51615 545 0.04994 GALAXY 96 0 - 303 51615 546 0.05032 GALAXY 64 0 - 303 51615 547 0.05328 GALAXY 64 0 - 303 51615 548 0.36108 GALAXY 32 0 - 303 51615 549 0.05454 GALAXY 96 0 - 303 51615 550 0.04802 GALAXY 96 0 - 303 51615 551 0.05310 GALAXY 96 0 - 303 51615 552 0.05278 GALAXY 64 0 - 303 51615 553 0.05339 GALAXY 96 0 - 303 51615 554 0.05088 GALAXY 64 0 - 303 51615 555 0.09703 GALAXY 64 0 - 303 51615 556 0.04964 GALAXY 64 0 - 303 51615 557 0.05017 GALAXY 64 0 - 303 51615 558 0.00041 STAR 0 2 - 303 51615 559 0.05365 UNKNOWN 64 0 - 303 51615 560 0.05283 GALAXY 64 0 - 303 51615 561 0.11438 GALAXY 4 0 - 303 51615 562 0.05452 GALAXY 64 0 - 303 51615 563 0.05347 GALAXY 96 0 - 303 51615 564 -0.00015 STAR 1 0 - 303 51615 565 0.25452 GALAXY 64 0 - 303 51615 566 0.05045 GALAXY 64 0 - 303 51615 567 0.00000 UNKNOWN 0 16 - 303 51615 568 0.35780 GALAXY 32 0 - 303 51615 569 0.12614 GALAXY 64 0 - 303 51615 570 0.05424 GALAXY 64 0 - 303 51615 571 0.05030 GALAXY 64 0 - 303 51615 572 0.07746 GALAXY 96 0 - 303 51615 573 0.17386 GALAXY 64 0 - 303 51615 574 0.16799 GALAXY 64 0 - 303 51615 575 0.12897 GALAXY 64 0 - 303 51615 576 1.97282 QSO 1048580 0 - 303 51615 577 0.17400 GALAXY 96 0 - 303 51615 578 0.05344 GALAXY 64 0 - 303 51615 579 0.00000 UNKNOWN 64 0 - 303 51615 580 0.17858 GALAXY 64 0 - 303 51615 581 0.00000 UNKNOWN 64 0 - 303 51615 582 0.00000 UNKNOWN 64 0 - 303 51615 583 0.05425 GALAXY 64 0 - 303 51615 584 0.12497 GALAXY 64 0 - 303 51615 585 0.05262 GALAXY 68 0 - 303 51615 586 0.04974 GALAXY 64 0 - 303 51615 587 0.05296 GALAXY 64 0 - 303 51615 588 -0.00018 STAR 1048580 0 - 303 51615 589 0.05324 GALAXY 64 0 - 303 51615 590 0.05025 GALAXY 64 0 - 303 51615 591 0.10004 GALAXY 64 0 - 303 51615 592 0.10019 GALAXY 64 0 - 303 51615 593 0.13632 GALAXY 68 0 - 303 51615 594 0.05333 GALAXY 64 0 - 303 51615 595 0.00000 UNKNOWN 0 16 - 303 51615 596 0.05339 GALAXY 64 0 - 303 51615 597 0.05259 GALAXY 64 0 - 303 51615 598 0.07292 GALAXY 64 0 - 303 51615 599 0.65370 GALAXY 64 0 - 303 51615 600 0.15076 GALAXY 64 0 - 303 51615 601 1.53008 QSO 64 0 - 303 51615 602 0.00000 UNKNOWN 64 0 - 303 51615 603 0.00000 UNKNOWN 0 16 - 303 51615 604 0.12014 GALAXY 64 0 - 303 51615 605 0.00000 UNKNOWN 64 0 - 303 51615 606 0.02590 GALAXY 64 0 - 303 51615 607 0.12880 GALAXY 68 0 - 303 51615 608 0.02589 GALAXY 64 0 - 303 51615 609 0.34337 GALAXY 32 0 - 303 51615 610 0.18761 GALAXY 64 0 - 303 51615 611 0.11822 GALAXY 64 0 - 303 51615 612 0.05283 GALAXY 64 0 - 303 51615 613 0.05324 GALAXY 64 0 - 303 51615 614 0.12202 GALAXY 64 0 - 303 51615 615 0.02534 GALAXY 64 0 - 303 51615 616 1.52928 QSO 64 0 - 303 51615 617 0.00000 UNKNOWN 64 0 - 303 51615 618 0.25687 GALAXY 96 0 - 303 51615 619 0.10079 GALAXY 64 0 - 303 51615 620 0.35021 GALAXY 32 0 - 303 51615 621 0.05323 GALAXY 96 0 - 303 51615 622 -0.00015 STAR 1 0 - 303 51615 623 0.00009 STAR 1 0 - 303 51615 624 0.09694 GALAXY 64 0 - 303 51615 625 0.00000 UNKNOWN 0 16 - 303 51615 626 0.12056 GALAXY 64 0 - 303 51615 627 0.08411 GALAXY 64 0 - 303 51615 628 1.71344 QSO 1048580 0 - 303 51615 629 0.33956 GALAXY 32 0 - 303 51615 630 0.09712 GALAXY 64 0 - 303 51615 631 0.48143 GALAXY 1 0 - 303 51615 632 0.05330 GALAXY 64 0 - 303 51615 633 0.12287 GALAXY 64 0 - 303 51615 634 0.05231 GALAXY 64 0 - 303 51615 635 -0.00006 STAR 1 0 - 303 51615 636 1.54472 QSO 1048580 0 - 303 51615 637 0.00006 STAR 1 0 - 303 51615 638 -0.00016 STAR 1 0 - 303 51615 639 -0.00006 STAR 1 0 - 303 51615 640 0.06001 GALAXY 64 0 - 304 51609 1 0.08459 GALAXY 64 0 - 304 51609 2 0.19198 GALAXY 64 0 - 304 51609 3 0.27845 GALAXY 96 0 - 304 51609 4 -0.00008 UNKNOWN 64 0 - 304 51609 5 -0.00032 STAR 69 0 - 304 51609 6 0.36525 QSO 1048580 0 - 304 51609 7 0.00000 UNKNOWN 0 16 - 304 51609 8 -0.00013 STAR 4 0 - 304 51609 9 -0.00045 STAR 4 0 - 304 51609 10 0.89147 GALAXY 32 0 - 304 51609 11 0.38161 GALAXY 67108896 0 - 304 51609 12 0.08440 GALAXY 64 0 - 304 51609 13 0.20834 GALAXY 64 0 - 304 51609 14 0.13052 GALAXY 64 0 - 304 51609 15 0.13892 GALAXY 64 0 - 304 51609 16 0.91114 QSO 1048580 0 - 304 51609 17 0.12680 GALAXY 64 0 - 304 51609 18 0.67936 QSO 1048580 0 - 304 51609 19 0.38259 GALAXY 32 0 - 304 51609 20 0.03151 GALAXY 64 0 - 304 51609 21 0.00024 STAR 1048580 0 - 304 51609 22 0.05426 GALAXY 64 0 - 304 51609 23 -0.00027 STAR 64 0 - 304 51609 24 0.07231 GALAXY 64 0 - 304 51609 25 0.05476 GALAXY 64 0 - 304 51609 26 0.00031 STAR 69 0 - 304 51609 27 0.16898 GALAXY 64 0 - 304 51609 28 0.18032 GALAXY 64 0 - 304 51609 29 0.05489 GALAXY 64 0 - 304 51609 30 -0.00019 STAR 64 0 - 304 51609 31 -0.00022 STAR 64 0 - 304 51609 32 0.12706 GALAXY 64 0 - 304 51609 33 0.12676 GALAXY 64 0 - 304 51609 34 0.10550 GALAXY 1048580 0 - 304 51609 35 -0.00010 STAR 64 0 - 304 51609 36 0.00014 STAR 4 0 - 304 51609 37 0.07327 GALAXY 64 0 - 304 51609 38 -0.00022 STAR 64 0 - 304 51609 39 0.00004 STAR 64 0 - 304 51609 40 0.05423 GALAXY 4 0 - 304 51609 41 0.12686 GALAXY 64 0 - 304 51609 42 -0.00043 STAR 4 0 - 304 51609 43 -0.00024 STAR 68 0 - 304 51609 44 -0.00021 STAR 64 0 - 304 51609 45 -0.00015 STAR 69 0 - 304 51609 46 0.05520 GALAXY 64 0 - 304 51609 47 -0.00030 STAR 64 0 - 304 51609 48 -0.00008 STAR 64 0 - 304 51609 49 0.12993 GALAXY 64 0 - 304 51609 50 0.00000 UNKNOWN 0 16 - 304 51609 51 0.20114 GALAXY 64 0 - 304 51609 52 0.19142 GALAXY 64 0 - 304 51609 53 -0.00048 STAR 69 0 - 304 51609 54 -0.00017 STAR 64 0 - 304 51609 55 -0.00000 STAR 0 34 - 304 51609 56 -0.00023 STAR 64 0 - 304 51609 57 0.32337 GALAXY 96 0 - 304 51609 58 0.13096 GALAXY 64 0 - 304 51609 59 -0.00023 STAR 4 0 - 304 51609 60 -0.00018 STAR 64 0 - 304 51609 61 0.00000 MISSING 0 0 - 304 51609 62 0.05479 GALAXY 96 0 - 304 51609 63 0.20075 GALAXY 96 0 - 304 51609 64 1.53878 QSO 4 0 - 304 51609 65 0.05034 GALAXY 64 0 - 304 51609 66 0.10224 GALAXY 64 0 - 304 51609 67 0.00000 UNKNOWN 0 16 - 304 51609 68 0.08452 GALAXY 64 0 - 304 51609 69 0.19150 GALAXY 64 0 - 304 51609 70 0.10253 GALAXY 64 0 - 304 51609 71 0.08400 GALAXY 64 0 - 304 51609 72 0.12522 GALAXY 64 0 - 304 51609 73 -0.00015 STAR 1048580 0 - 304 51609 74 0.19059 GALAXY 64 0 - 304 51609 75 0.00000 UNKNOWN 0 16 - 304 51609 76 -0.00016 STAR 1056772 0 - 304 51609 77 0.08265 GALAXY 64 0 - 304 51609 78 0.10136 GALAXY 64 0 - 304 51609 79 0.10287 GALAXY 96 0 - 304 51609 80 0.15610 GALAXY 64 0 - 304 51609 81 2.69898 QSO 1 0 - 304 51609 82 0.00000 UNKNOWN 0 16 - 304 51609 83 0.00526 GALAXY 96 0 - 304 51609 84 0.13954 GALAXY 64 0 - 304 51609 85 0.11958 GALAXY 64 0 - 304 51609 86 1.56549 QSO 1048580 0 - 304 51609 87 0.12763 GALAXY 64 0 - 304 51609 88 0.12598 GALAXY 64 0 - 304 51609 89 1.52913 QSO 64 0 - 304 51609 90 0.05083 GALAXY 64 0 - 304 51609 91 0.07357 GALAXY 64 0 - 304 51609 92 0.12783 GALAXY 64 0 - 304 51609 93 0.16112 GALAXY 64 0 - 304 51609 94 0.14973 GALAXY 64 0 - 304 51609 95 0.05416 GALAXY 64 0 - 304 51609 96 0.13864 GALAXY 64 0 - 304 51609 97 0.13103 GALAXY 64 0 - 304 51609 98 0.05391 GALAXY 64 0 - 304 51609 99 0.13978 GALAXY 64 0 - 304 51609 100 0.08357 GALAXY 64 0 - 304 51609 101 0.15473 GALAXY 64 0 - 304 51609 102 0.02909 GALAXY 64 0 - 304 51609 103 0.12571 GALAXY 64 0 - 304 51609 104 0.12833 GALAXY 64 0 - 304 51609 105 -0.00033 STAR 4 0 - 304 51609 106 0.00000 UNKNOWN 0 16 - 304 51609 107 -0.00020 STAR 1 0 - 304 51609 108 0.12684 GALAXY 64 0 - 304 51609 109 0.12965 GALAXY 2097216 0 - 304 51609 110 1.45108 QSO 4 0 - 304 51609 111 0.12696 GALAXY 64 0 - 304 51609 112 0.12821 GALAXY 64 0 - 304 51609 113 0.16917 GALAXY 64 0 - 304 51609 114 0.19246 GALAXY 64 0 - 304 51609 115 0.12610 GALAXY 64 0 - 304 51609 116 0.05437 GALAXY 64 0 - 304 51609 117 0.08362 GALAXY 64 0 - 304 51609 118 0.19392 GALAXY 64 0 - 304 51609 119 0.10181 GALAXY 68 0 - 304 51609 120 0.37140 GALAXY 32 0 - 304 51609 121 0.05295 GALAXY 64 0 - 304 51609 122 0.05181 GALAXY 64 0 - 304 51609 123 0.16072 GALAXY 4 0 - 304 51609 124 0.10160 GALAXY 64 0 - 304 51609 125 0.30751 GALAXY 32 0 - 304 51609 126 0.10165 GALAXY 64 0 - 304 51609 127 0.35684 GALAXY 32 0 - 304 51609 128 0.10160 GALAXY 64 0 - 304 51609 129 0.13811 GALAXY 64 0 - 304 51609 130 0.13712 GALAXY 64 0 - 304 51609 131 0.35725 GALAXY 32 0 - 304 51609 132 0.15330 GALAXY 1 0 - 304 51609 133 0.00000 UNKNOWN 0 16 - 304 51609 134 0.38646 GALAXY 32 0 - 304 51609 135 0.45303 QSO 33554433 0 - 304 51609 136 0.05186 GALAXY 64 0 - 304 51609 137 0.05244 GALAXY 4 0 - 304 51609 138 0.05180 GALAXY 96 0 - 304 51609 139 -0.00010 STAR 524288 0 - 304 51609 140 0.27610 GALAXY 32 0 - 304 51609 141 0.13850 GALAXY 64 0 - 304 51609 142 1.47456 QSO 64 0 - 304 51609 143 0.15142 GALAXY 64 0 - 304 51609 144 0.00000 UNKNOWN 0 16 - 304 51609 145 0.10205 GALAXY 64 0 - 304 51609 146 0.00000 MISSING 0 0 - 304 51609 147 0.13842 GALAXY 64 0 - 304 51609 148 0.12612 GALAXY 64 0 - 304 51609 149 0.32013 GALAXY 32 0 - 304 51609 150 0.00001 STAR 0 2 - 304 51609 151 0.13894 GALAXY 64 0 - 304 51609 152 0.06321 GALAXY 33554496 0 - 304 51609 153 0.51683 QSO 1048580 0 - 304 51609 154 0.05119 GALAXY 68 0 - 304 51609 155 0.13806 GALAXY 64 0 - 304 51609 156 0.13185 GALAXY 64 0 - 304 51609 157 0.05158 GALAXY 64 0 - 304 51609 158 0.31942 GALAXY 32 0 - 304 51609 159 0.08410 GALAXY 64 0 - 304 51609 160 0.05109 GALAXY 64 0 - 304 51609 161 0.08406 GALAXY 64 0 - 304 51609 162 0.96869 QSO 1048580 0 - 304 51609 163 0.12005 GALAXY 64 0 - 304 51609 164 0.08090 GALAXY 64 0 - 304 51609 165 0.12586 GALAXY 64 0 - 304 51609 166 0.35577 GALAXY 32 0 - 304 51609 167 0.18506 GALAXY 64 0 - 304 51609 168 0.00014 STAR 0 2 - 304 51609 169 0.03924 GALAXY 64 0 - 304 51609 170 0.13848 GALAXY 64 0 - 304 51609 171 0.12359 GALAXY 64 0 - 304 51609 172 0.07705 GALAXY 64 0 - 304 51609 173 0.35809 GALAXY 32 0 - 304 51609 174 0.14745 GALAXY 64 0 - 304 51609 175 0.13224 GALAXY 64 0 - 304 51609 176 0.00000 UNKNOWN 0 16 - 304 51609 177 0.13776 GALAXY 64 0 - 304 51609 178 0.13193 GALAXY 64 0 - 304 51609 179 -0.00017 STAR 64 0 - 304 51609 180 -0.00008 STAR 42991616 0 - 304 51609 181 -0.00030 STAR 1 0 - 304 51609 182 0.08292 GALAXY 64 0 - 304 51609 183 0.14542 GALAXY 64 0 - 304 51609 184 0.14033 GALAXY 64 0 - 304 51609 185 -0.00018 STAR 1 0 - 304 51609 186 0.00000 UNKNOWN 0 16 - 304 51609 187 0.08176 GALAXY 64 0 - 304 51609 188 0.10112 GALAXY 4 0 - 304 51609 189 -0.00009 STAR 1 0 - 304 51609 190 0.20048 GALAXY 64 0 - 304 51609 191 0.14095 GALAXY 64 0 - 304 51609 192 1.29588 QSO 2097168 0 - 304 51609 193 0.00036 STAR 4 0 - 304 51609 194 0.08373 GALAXY 96 0 - 304 51609 195 1.93702 QSO 1048580 0 - 304 51609 196 0.32206 GALAXY 32 0 - 304 51609 197 0.08334 GALAXY 64 0 - 304 51609 198 0.11980 GALAXY 64 0 - 304 51609 199 0.10121 GALAXY 64 0 - 304 51609 200 0.08325 GALAXY 68 0 - 304 51609 201 0.08406 GALAXY 64 0 - 304 51609 202 0.15401 GALAXY 64 0 - 304 51609 203 0.13755 GALAXY 64 0 - 304 51609 204 0.08282 GALAXY 64 0 - 304 51609 205 0.18151 GALAXY 64 0 - 304 51609 206 0.08441 GALAXY 64 0 - 304 51609 207 0.13868 GALAXY 64 0 - 304 51609 208 0.19801 GALAXY 64 0 - 304 51609 209 0.16909 GALAXY 64 0 - 304 51609 210 0.00000 UNKNOWN 0 16 - 304 51609 211 0.13980 GALAXY 64 0 - 304 51609 212 -0.00017 STAR 9437184 0 - 304 51609 213 0.08372 GALAXY 64 0 - 304 51609 214 0.07756 GALAXY 64 0 - 304 51609 215 0.04357 GALAXY 64 0 - 304 51609 216 0.16841 GALAXY 64 0 - 304 51609 217 0.12255 GALAXY 64 0 - 304 51609 218 0.13829 GALAXY 64 0 - 304 51609 219 -0.00016 STAR 1048580 0 - 304 51609 220 0.04299 GALAXY 64 0 - 304 51609 221 0.08209 GALAXY 96 0 - 304 51609 222 -0.00063 STAR 0 34 - 304 51609 223 0.25337 GALAXY 4 0 - 304 51609 224 -0.00026 STAR 0 34 - 304 51609 225 0.13949 GALAXY 64 0 - 304 51609 226 -0.00012 STAR 16777216 0 - 304 51609 227 0.08175 GALAXY 4 0 - 304 51609 228 0.08212 GALAXY 96 0 - 304 51609 229 0.14113 GALAXY 64 0 - 304 51609 230 1.60772 QSO 1048580 0 - 304 51609 231 0.04952 GALAXY 64 0 - 304 51609 232 0.08466 GALAXY 96 0 - 304 51609 233 0.05007 GALAXY 96 0 - 304 51609 234 0.15024 GALAXY 96 0 - 304 51609 235 0.04819 GALAXY 64 0 - 304 51609 236 0.08498 GALAXY 64 0 - 304 51609 237 0.00043 STAR 1 0 - 304 51609 238 0.15094 GALAXY 64 0 - 304 51609 239 0.00000 UNKNOWN 0 16 - 304 51609 240 0.08229 GALAXY 64 0 - 304 51609 241 0.18385 GALAXY 96 0 - 304 51609 242 0.12756 GALAXY 64 0 - 304 51609 243 0.37910 GALAXY 67108896 0 - 304 51609 244 0.14080 GALAXY 64 0 - 304 51609 245 0.14238 GALAXY 64 0 - 304 51609 246 0.14527 GALAXY 64 0 - 304 51609 247 0.13793 GALAXY 64 0 - 304 51609 248 0.14353 GALAXY 64 0 - 304 51609 249 0.13964 GALAXY 64 0 - 304 51609 250 0.13837 GALAXY 64 0 - 304 51609 251 0.07694 GALAXY 64 0 - 304 51609 252 0.08332 GALAXY 96 0 - 304 51609 253 0.12570 GALAXY 64 0 - 304 51609 254 -0.00015 STAR 0 34 - 304 51609 255 0.00000 UNKNOWN 0 16 - 304 51609 256 0.14230 GALAXY 96 0 - 304 51609 257 0.12921 GALAXY 64 0 - 304 51609 258 0.14036 GALAXY 64 0 - 304 51609 259 0.14504 GALAXY 96 0 - 304 51609 260 0.13624 GALAXY 64 0 - 304 51609 261 0.12472 GALAXY 64 0 - 304 51609 262 0.12590 GALAXY 64 0 - 304 51609 263 0.14979 GALAXY 64 0 - 304 51609 264 -0.00021 STAR 16384 0 - 304 51609 265 0.00034 STAR 1 0 - 304 51609 266 0.12723 GALAXY 64 0 - 304 51609 267 0.08640 GALAXY 64 0 - 304 51609 268 0.00000 UNKNOWN 0 16 - 304 51609 269 -0.00038 STAR 64 0 - 304 51609 270 0.12694 GALAXY 64 0 - 304 51609 271 0.04857 GALAXY 64 0 - 304 51609 272 0.66879 QSO 4 0 - 304 51609 273 -0.00026 STAR 16384 0 - 304 51609 274 0.18628 GALAXY 64 0 - 304 51609 275 -0.00011 STAR 4 0 - 304 51609 276 0.12725 GALAXY 64 0 - 304 51609 277 0.14939 GALAXY 64 0 - 304 51609 278 0.08345 GALAXY 64 0 - 304 51609 279 0.18472 GALAXY 96 0 - 304 51609 280 -0.00029 STAR 16384 0 - 304 51609 281 0.13790 GALAXY 64 0 - 304 51609 282 0.03852 GALAXY 64 0 - 304 51609 283 0.13977 GALAXY 96 0 - 304 51609 284 0.13796 GALAXY 4 0 - 304 51609 285 0.12894 GALAXY 64 0 - 304 51609 286 0.13817 GALAXY 64 0 - 304 51609 287 0.13724 GALAXY 64 0 - 304 51609 288 -0.00041 STAR 32768 0 - 304 51609 289 0.12125 GALAXY 64 0 - 304 51609 290 0.18444 GALAXY 64 0 - 304 51609 291 0.12589 GALAXY 64 0 - 304 51609 292 0.13590 GALAXY 96 0 - 304 51609 293 0.12279 GALAXY 64 0 - 304 51609 294 0.00000 UNKNOWN 0 16 - 304 51609 295 0.13629 GALAXY 64 0 - 304 51609 296 0.14580 GALAXY 64 0 - 304 51609 297 0.00019 STAR 9437188 0 - 304 51609 298 0.11617 GALAXY 64 0 - 304 51609 299 0.05279 GALAXY 64 0 - 304 51609 300 0.03830 GALAXY 64 0 - 304 51609 301 0.00039 UNKNOWN 6144 0 - 304 51609 302 0.18664 GALAXY 64 0 - 304 51609 303 0.11974 GALAXY 64 0 - 304 51609 304 0.07743 GALAXY 96 0 - 304 51609 305 0.14760 GALAXY 64 0 - 304 51609 306 0.14760 GALAXY 64 0 - 304 51609 307 0.12134 GALAXY 64 0 - 304 51609 308 0.82037 QSO 1048580 0 - 304 51609 309 0.15004 GALAXY 64 0 - 304 51609 310 0.03762 GALAXY 64 0 - 304 51609 311 0.00000 UNKNOWN 0 16 - 304 51609 312 0.37930 GALAXY 32 0 - 304 51609 313 0.14789 GALAXY 64 0 - 304 51609 314 0.13895 GALAXY 64 0 - 304 51609 315 -0.00039 STAR 1048580 0 - 304 51609 316 0.11822 GALAXY 64 0 - 304 51609 317 0.15241 GALAXY 64 0 - 304 51609 318 1.35256 GALAXY 32 0 - 304 51609 319 0.12080 GALAXY 64 0 - 304 51609 320 0.08254 GALAXY 64 0 - 304 51609 321 0.12507 QSO 64 0 - 304 51609 322 0.04731 GALAXY 96 0 - 304 51609 323 0.08248 GALAXY 64 0 - 304 51609 324 0.00000 UNKNOWN 0 16 - 304 51609 325 0.37433 GALAXY 32 0 - 304 51609 326 -0.00007 STAR 4194304 0 - 304 51609 327 0.05377 GALAXY 64 0 - 304 51609 328 0.12646 GALAXY 64 0 - 304 51609 329 0.00000 MISSING 0 0 - 304 51609 330 0.12388 GALAXY 64 0 - 304 51609 331 0.12280 GALAXY 64 0 - 304 51609 332 0.18089 GALAXY 96 0 - 304 51609 333 0.18485 GALAXY 64 0 - 304 51609 334 0.12679 GALAXY 64 0 - 304 51609 335 0.10376 GALAXY 64 0 - 304 51609 336 0.12494 GALAXY 64 0 - 304 51609 337 0.07721 GALAXY 96 0 - 304 51609 338 0.13771 GALAXY 64 0 - 304 51609 339 0.02561 GALAXY 64 0 - 304 51609 340 -0.00024 STAR 0 2 - 304 51609 341 -0.00044 STAR 0 34 - 304 51609 342 0.26552 GALAXY 1048580 0 - 304 51609 343 -0.00004 STAR 0 2 - 304 51609 344 0.05428 GALAXY 64 0 - 304 51609 345 0.00001 STAR 4 0 - 304 51609 346 0.05460 GALAXY 64 0 - 304 51609 347 0.05426 GALAXY 64 0 - 304 51609 348 0.07752 GALAXY 64 0 - 304 51609 349 0.15498 GALAXY 64 0 - 304 51609 350 0.00000 UNKNOWN 0 16 - 304 51609 351 0.26709 GALAXY 32 0 - 304 51609 352 0.17414 GALAXY 64 0 - 304 51609 353 0.09686 GALAXY 64 0 - 304 51609 354 0.14381 GALAXY 64 0 - 304 51609 355 0.26563 GALAXY 32 0 - 304 51609 356 0.07726 GALAXY 64 0 - 304 51609 357 0.08386 GALAXY 64 0 - 304 51609 358 0.11354 GALAXY 64 0 - 304 51609 359 0.12421 GALAXY 64 0 - 304 51609 360 0.00006 STAR 0 34 - 304 51609 361 0.12581 GALAXY 64 0 - 304 51609 362 -0.00005 STAR 4096 0 - 304 51609 363 -0.00005 STAR 4 0 - 304 51609 364 0.00000 UNKNOWN 0 16 - 304 51609 365 -0.00017 STAR 0 2 - 304 51609 366 0.17877 GALAXY 96 0 - 304 51609 367 0.07718 GALAXY 96 0 - 304 51609 368 -0.00008 UNKNOWN 64 0 - 304 51609 369 -0.00005 STAR 0 34 - 304 51609 370 -0.00008 UNKNOWN 8192 0 - 304 51609 371 0.05258 GALAXY 96 0 - 304 51609 372 0.08343 GALAXY 64 0 - 304 51609 373 0.05337 GALAXY 96 0 - 304 51609 374 0.05413 GALAXY 64 0 - 304 51609 375 0.12597 GALAXY 96 0 - 304 51609 376 0.12539 GALAXY 64 0 - 304 51609 377 0.14341 GALAXY 64 0 - 304 51609 378 0.35795 GALAXY 32 0 - 304 51609 379 0.12764 GALAXY 96 0 - 304 51609 380 0.02532 GALAXY 64 0 - 304 51609 381 2.39826 QSO 1 0 - 304 51609 382 0.38360 GALAXY 32 0 - 304 51609 383 -0.00012 STAR 540672 0 - 304 51609 384 0.00020 STAR 524288 0 - 304 51609 385 0.34537 GALAXY 32 0 - 304 51609 386 0.17247 GALAXY 64 0 - 304 51609 387 0.34130 GALAXY 32 0 - 304 51609 388 0.34323 GALAXY 32 0 - 304 51609 389 0.02565 GALAXY 33554496 0 - 304 51609 390 0.34457 GALAXY 32 0 - 304 51609 391 0.00000 UNKNOWN 0 16 - 304 51609 392 0.02541 GALAXY 64 0 - 304 51609 393 0.05359 GALAXY 96 0 - 304 51609 394 0.11858 GALAXY 64 0 - 304 51609 395 0.35794 GALAXY 32 0 - 304 51609 396 -0.00010 STAR 0 2 - 304 51609 397 0.05411 GALAXY 64 0 - 304 51609 398 -0.00022 STAR 4 0 - 304 51609 399 0.00018 STAR 8192 0 - 304 51609 400 0.11783 GALAXY 64 0 - 304 51609 401 -0.00045 STAR 1 0 - 304 51609 402 0.09688 GALAXY 68 0 - 304 51609 403 0.05032 GALAXY 64 0 - 304 51609 404 0.34595 GALAXY 32 0 - 304 51609 405 0.05261 GALAXY 64 0 - 304 51609 406 0.11794 GALAXY 64 0 - 304 51609 407 0.05253 GALAXY 96 0 - 304 51609 408 0.05200 GALAXY 96 0 - 304 51609 409 -0.00018 STAR 8454145 0 - 304 51609 410 -0.00028 STAR 1 0 - 304 51609 411 0.03607 GALAXY 96 0 - 304 51609 412 0.05302 GALAXY 64 0 - 304 51609 413 0.05321 GALAXY 64 0 - 304 51609 414 -0.00025 STAR 1 0 - 304 51609 415 1.44241 QSO 1048580 0 - 304 51609 416 0.05326 GALAXY 64 0 - 304 51609 417 0.33828 GALAXY 32 0 - 304 51609 418 0.04805 GALAXY 64 0 - 304 51609 419 -0.00022 STAR 1 0 - 304 51609 420 0.00000 MISSING 0 0 - 304 51609 421 0.11791 GALAXY 64 0 - 304 51609 422 0.05542 GALAXY 64 0 - 304 51609 423 0.05348 GALAXY 64 0 - 304 51609 424 0.11230 GALAXY 64 0 - 304 51609 425 0.00000 UNKNOWN 0 16 - 304 51609 426 0.16757 GALAXY 1 0 - 304 51609 427 0.12709 GALAXY 64 0 - 304 51609 428 0.12637 GALAXY 64 0 - 304 51609 429 0.00793 GALAXY 64 0 - 304 51609 430 0.16910 GALAXY 96 0 - 304 51609 431 0.11863 GALAXY 64 0 - 304 51609 432 0.12659 GALAXY 64 0 - 304 51609 433 0.11254 GALAXY 64 0 - 304 51609 434 0.00004 STAR 0 2 - 304 51609 435 0.11925 GALAXY 64 0 - 304 51609 436 0.12873 GALAXY 64 0 - 304 51609 437 0.11274 GALAXY 64 0 - 304 51609 438 1.12301 QSO 4 0 - 304 51609 439 0.00025 STAR 6144 0 - 304 51609 440 0.33842 GALAXY 32 0 - 304 51609 441 0.93072 QSO 4 0 - 304 51609 442 -0.00043 STAR 1 0 - 304 51609 443 0.12066 GALAXY 64 0 - 304 51609 444 0.06557 GALAXY 64 0 - 304 51609 445 0.13099 GALAXY 64 0 - 304 51609 446 0.35470 GALAXY 32 0 - 304 51609 447 0.12603 GALAXY 64 0 - 304 51609 448 0.05271 GALAXY 64 0 - 304 51609 449 0.00000 UNKNOWN 0 16 - 304 51609 450 1.25582 QSO 4 0 - 304 51609 451 0.05248 GALAXY 64 0 - 304 51609 452 0.06384 GALAXY 64 0 - 304 51609 453 0.13928 GALAXY 64 0 - 304 51609 454 0.00016 STAR 1 0 - 304 51609 455 0.05476 GALAXY 64 0 - 304 51609 456 0.13743 GALAXY 64 0 - 304 51609 457 1.83964 QSO 4 0 - 304 51609 458 0.13633 GALAXY 64 0 - 304 51609 459 0.13121 GALAXY 64 0 - 304 51609 460 0.08473 GALAXY 64 0 - 304 51609 461 0.11865 GALAXY 64 0 - 304 51609 462 0.00000 UNKNOWN 0 16 - 304 51609 463 0.15163 GALAXY 64 0 - 304 51609 464 0.15050 GALAXY 64 0 - 304 51609 465 0.12090 GALAXY 64 0 - 304 51609 466 -0.00033 STAR 8196 0 - 304 51609 467 0.09725 GALAXY 64 0 - 304 51609 468 1.59642 QSO 1048580 0 - 304 51609 469 0.15146 GALAXY 68 0 - 304 51609 470 1.15748 QSO 1048580 0 - 304 51609 471 0.14601 GALAXY 64 0 - 304 51609 472 2.18994 QSO 1048580 0 - 304 51609 473 0.12352 GALAXY 64 0 - 304 51609 474 -0.00024 STAR 4 0 - 304 51609 475 0.12617 GALAXY 64 0 - 304 51609 476 0.27720 GALAXY 32 0 - 304 51609 477 0.05197 GALAXY 64 0 - 304 51609 478 0.12307 GALAXY 64 0 - 304 51609 479 0.10180 GALAXY 64 0 - 304 51609 480 1.49377 QSO 4 0 - 304 51609 481 -0.00001 STAR 64 0 - 304 51609 482 0.12222 GALAXY 64 0 - 304 51609 483 0.23564 GALAXY 96 0 - 304 51609 484 0.02896 GALAXY 64 0 - 304 51609 485 -0.00028 STAR 1 0 - 304 51609 486 0.09743 GALAXY 64 0 - 304 51609 487 0.06527 GALAXY 64 0 - 304 51609 488 0.12480 GALAXY 64 0 - 304 51609 489 0.13268 GALAXY 64 0 - 304 51609 490 0.21132 GALAXY 64 0 - 304 51609 491 0.38577 GALAXY 32 0 - 304 51609 492 0.03161 GALAXY 64 0 - 304 51609 493 -0.00020 STAR 64 0 - 304 51609 494 0.00000 UNKNOWN 0 16 - 304 51609 495 0.15016 GALAXY 64 0 - 304 51609 496 0.46890 GALAXY 67108896 0 - 304 51609 497 0.12130 GALAXY 64 0 - 304 51609 498 0.14029 GALAXY 64 0 - 304 51609 499 0.27748 GALAXY 96 0 - 304 51609 500 0.14070 GALAXY 64 0 - 304 51609 501 0.16892 GALAXY 64 0 - 304 51609 502 0.32987 GALAXY 32 0 - 304 51609 503 0.05476 GALAXY 64 0 - 304 51609 504 0.08375 GALAXY 64 0 - 304 51609 505 0.50734 GALAXY 67108896 0 - 304 51609 506 0.12676 GALAXY 64 0 - 304 51609 507 0.16956 GALAXY 64 0 - 304 51609 508 0.12689 GALAXY 64 0 - 304 51609 509 0.10219 GALAXY 64 0 - 304 51609 510 1.17509 QSO 4 0 - 304 51609 511 0.12627 GALAXY 64 0 - 304 51609 512 0.16948 GALAXY 64 0 - 304 51609 513 0.17048 GALAXY 96 0 - 304 51609 514 2.18814 QSO 3145748 0 - 304 51609 515 0.12553 GALAXY 64 0 - 304 51609 516 0.10250 GALAXY 64 0 - 304 51609 517 0.00000 UNKNOWN 0 16 - 304 51609 518 0.12621 GALAXY 64 0 - 304 51609 519 0.11814 GALAXY 64 0 - 304 51609 520 0.33062 GALAXY 32 0 - 304 51609 521 -0.00043 STAR 64 0 - 304 51609 522 0.00003 STAR 68 0 - 304 51609 523 0.16695 GALAXY 64 0 - 304 51609 524 -0.00088 STAR 65 0 - 304 51609 525 -0.00041 STAR 64 0 - 304 51609 526 0.15359 GALAXY 64 0 - 304 51609 527 -0.00027 STAR 64 0 - 304 51609 528 -0.00057 STAR 64 0 - 304 51609 529 0.16695 GALAXY 96 0 - 304 51609 530 -0.00020 STAR 64 0 - 304 51609 531 0.00000 UNKNOWN 0 16 - 304 51609 532 0.39397 GALAXY 32 0 - 304 51609 533 0.27661 GALAXY 32 0 - 304 51609 534 0.05433 GALAXY 64 0 - 304 51609 535 0.00001 STAR 64 0 - 304 51609 536 1.08140 QSO 1048580 0 - 304 51609 537 1.85559 QSO 1048580 512 - 304 51609 538 0.13085 GALAXY 64 0 - 304 51609 539 0.12442 GALAXY 64 0 - 304 51609 540 0.10266 GALAXY 64 0 - 304 51609 541 -0.00008 UNKNOWN 96 0 - 304 51609 542 -0.00021 STAR 4 0 - 304 51609 543 0.00002 STAR 8196 0 - 304 51609 544 0.34549 GALAXY 32 0 - 304 51609 545 0.16859 GALAXY 64 0 - 304 51609 546 0.10307 GALAXY 64 0 - 304 51609 547 0.11724 GALAXY 64 0 - 304 51609 548 0.16948 GALAXY 64 0 - 304 51609 549 0.08471 GALAXY 64 0 - 304 51609 550 0.00000 UNKNOWN 0 16 - 304 51609 551 0.31458 GALAXY 32 0 - 304 51609 552 0.12641 GALAXY 64 0 - 304 51609 553 0.05466 GALAXY 96 0 - 304 51609 554 0.12655 GALAXY 64 0 - 304 51609 555 0.12593 GALAXY 64 0 - 304 51609 556 0.16968 GALAXY 64 0 - 304 51609 557 0.07488 GALAXY 64 0 - 304 51609 558 0.00002 STAR 42991616 512 - 304 51609 559 0.08398 GALAXY 64 0 - 304 51609 560 0.05385 GALAXY 64 0 - 304 51609 561 -0.00017 STAR 64 0 - 304 51609 562 0.00042 STAR 64 0 - 304 51609 563 0.14036 GALAXY 64 0 - 304 51609 564 -0.00023 STAR 64 0 - 304 51609 565 0.13977 GALAXY 96 0 - 304 51609 566 -0.00021 STAR 64 0 - 304 51609 567 0.13234 GALAXY 64 0 - 304 51609 568 0.38402 GALAXY 32 0 - 304 51609 569 0.00005 STAR 64 0 - 304 51609 570 -0.00024 STAR 64 0 - 304 51609 571 0.13948 GALAXY 64 0 - 304 51609 572 0.07842 GALAXY 64 0 - 304 51609 573 0.05493 GALAXY 64 0 - 304 51609 574 0.13420 GALAXY 96 0 - 304 51609 575 -0.00025 STAR 69 0 - 304 51609 576 0.00000 UNKNOWN 0 16 - 304 51609 577 0.13945 GALAXY 64 0 - 304 51609 578 0.09881 GALAXY 64 0 - 304 51609 579 0.14122 GALAXY 64 0 - 304 51609 580 0.17367 GALAXY 64 0 - 304 51609 581 0.16909 GALAXY 64 0 - 304 51609 582 0.11709 GALAXY 64 0 - 304 51609 583 0.13285 GALAXY 4 0 - 304 51609 584 0.07803 GALAXY 64 0 - 304 51609 585 0.05467 GALAXY 64 0 - 304 51609 586 0.07724 GALAXY 64 0 - 304 51609 587 0.00000 UNKNOWN 0 16 - 304 51609 588 0.16726 GALAXY 64 0 - 304 51609 589 0.16723 GALAXY 64 0 - 304 51609 590 0.16889 GALAXY 64 0 - 304 51609 591 0.16959 GALAXY 64 0 - 304 51609 592 0.34654 GALAXY 32 0 - 304 51609 593 0.05430 GALAXY 96 0 - 304 51609 594 0.04002 GALAXY 96 0 - 304 51609 595 0.27840 GALAXY 32 0 - 304 51609 596 0.12648 GALAXY 64 0 - 304 51609 597 0.16972 GALAXY 64 0 - 304 51609 598 0.14622 GALAXY 96 0 - 304 51609 599 0.07769 GALAXY 64 0 - 304 51609 600 0.12613 GALAXY 64 0 - 304 51609 601 0.16719 GALAXY 64 0 - 304 51609 602 0.32215 GALAXY 32 0 - 304 51609 603 -0.00005 STAR 64 0 - 304 51609 604 -0.00065 STAR 68 0 - 304 51609 605 -0.00025 STAR 64 0 - 304 51609 606 0.38446 GALAXY 67108896 0 - 304 51609 607 -0.00004 STAR 69 0 - 304 51609 608 -0.00012 STAR 64 0 - 304 51609 609 -0.00007 STAR 64 0 - 304 51609 610 -0.00021 STAR 64 0 - 304 51609 611 0.06154 GALAXY 64 0 - 304 51609 612 0.32106 GALAXY 32 0 - 304 51609 613 1.13636 QSO 4 0 - 304 51609 614 -0.00038 STAR 0 32 - 304 51609 615 0.12644 GALAXY 64 0 - 304 51609 616 0.32359 GALAXY 32 0 - 304 51609 617 0.00053 STAR 1 0 - 304 51609 618 -0.00009 STAR 64 0 - 304 51609 619 0.00000 UNKNOWN 0 16 - 304 51609 620 0.14137 GALAXY 64 0 - 304 51609 621 -0.00029 STAR 64 0 - 304 51609 622 -0.00071 STAR 1048580 0 - 304 51609 623 0.12655 GALAXY 64 0 - 304 51609 624 0.05398 GALAXY 96 0 - 304 51609 625 -0.00025 STAR 4 0 - 304 51609 626 -0.00017 STAR 64 0 - 304 51609 627 0.12687 GALAXY 64 0 - 304 51609 628 0.03979 GALAXY 64 0 - 304 51609 629 0.12609 GALAXY 64 0 - 304 51609 630 2.14596 QSO 1048580 0 - 304 51609 631 0.15172 GALAXY 64 0 - 304 51609 632 0.16420 GALAXY 64 0 - 304 51609 633 0.12692 GALAXY 64 0 - 304 51609 634 0.05471 GALAXY 64 0 - 304 51609 635 0.03578 GALAXY 64 0 - 304 51609 636 -0.00010 STAR 64 0 - 304 51609 637 0.14489 QSO 1 0 - 304 51609 638 0.15133 GALAXY 64 0 - 304 51609 639 0.00000 UNKNOWN 0 16 - 304 51609 640 -0.00024 STAR 64 0 - 305 51613 1 0.07260 GALAXY 64 0 - 305 51613 2 0.12337 GALAXY 64 0 - 305 51613 3 0.13615 GALAXY 64 0 - 305 51613 4 -0.00002 UNKNOWN 64 0 - 305 51613 5 0.13112 GALAXY 64 0 - 305 51613 6 0.13523 GALAXY 64 0 - 305 51613 7 1.58660 QSO 68 0 - 305 51613 8 0.00000 UNKNOWN 0 16 - 305 51613 9 0.09328 GALAXY 96 0 - 305 51613 10 0.12393 GALAXY 64 0 - 305 51613 11 0.10313 GALAXY 64 0 - 305 51613 12 0.10260 GALAXY 4 0 - 305 51613 13 0.06394 GALAXY 64 0 - 305 51613 14 0.08734 GALAXY 64 0 - 305 51613 15 0.29034 GALAXY 32 0 - 305 51613 16 0.13251 GALAXY 64 0 - 305 51613 17 0.10567 GALAXY 64 0 - 305 51613 18 0.10936 GALAXY 64 0 - 305 51613 19 0.10369 GALAXY 64 0 - 305 51613 20 0.18409 GALAXY 64 0 - 305 51613 21 0.07657 QSO 4 0 - 305 51613 22 0.13160 GALAXY 64 0 - 305 51613 23 0.14869 GALAXY 64 0 - 305 51613 24 0.09886 GALAXY 64 0 - 305 51613 25 0.13337 GALAXY 64 0 - 305 51613 26 0.07333 GALAXY 64 0 - 305 51613 27 0.13151 GALAXY 64 0 - 305 51613 28 0.02934 GALAXY 64 0 - 305 51613 29 0.07340 GALAXY 64 0 - 305 51613 30 0.05482 GALAXY 64 0 - 305 51613 31 0.08263 GALAXY 96 0 - 305 51613 32 0.00000 UNKNOWN 0 16 - 305 51613 33 0.07947 GALAXY 96 0 - 305 51613 34 -0.00034 STAR 0 2 - 305 51613 35 0.13085 GALAXY 64 0 - 305 51613 36 0.06043 GALAXY 64 0 - 305 51613 37 0.21994 GALAXY 4096 0 - 305 51613 38 0.13173 GALAXY 64 0 - 305 51613 39 0.45900 QSO 33554433 0 - 305 51613 40 0.31847 GALAXY 32 0 - 305 51613 41 0.14228 GALAXY 64 0 - 305 51613 42 0.33491 GALAXY 32 0 - 305 51613 43 0.33446 GALAXY 32 0 - 305 51613 44 0.08601 GALAXY 96 0 - 305 51613 45 0.08300 GALAXY 64 0 - 305 51613 46 -0.00038 STAR 0 2 - 305 51613 47 0.13562 GALAXY 64 0 - 305 51613 48 0.03480 GALAXY 64 0 - 305 51613 49 0.08566 GALAXY 64 0 - 305 51613 50 0.13745 GALAXY 64 0 - 305 51613 51 0.13168 GALAXY 64 0 - 305 51613 52 0.00000 UNKNOWN 0 16 - 305 51613 53 0.33478 GALAXY 32 0 - 305 51613 54 0.00504 GALAXY 64 0 - 305 51613 55 0.43892 GALAXY 32 0 - 305 51613 56 0.03503 GALAXY 64 0 - 305 51613 57 0.10465 GALAXY 64 0 - 305 51613 58 0.08579 GALAXY 64 0 - 305 51613 59 0.03439 GALAXY 64 0 - 305 51613 60 0.13700 GALAXY 64 0 - 305 51613 61 0.00000 MISSING 0 0 - 305 51613 62 1.80422 QSO 1048580 512 - 305 51613 63 0.31666 GALAXY 32 0 - 305 51613 64 0.08347 GALAXY 64 0 - 305 51613 65 0.07282 GALAXY 64 0 - 305 51613 66 -0.00010 STAR 0 2 - 305 51613 67 0.00000 UNKNOWN 0 16 - 305 51613 68 0.05121 GALAXY 64 0 - 305 51613 69 0.13183 GALAXY 96 0 - 305 51613 70 0.09921 GALAXY 64 0 - 305 51613 71 0.09881 GALAXY 64 0 - 305 51613 72 2.28581 QSO 1048580 0 - 305 51613 73 0.07276 GALAXY 64 0 - 305 51613 74 0.03518 GALAXY 64 0 - 305 51613 75 0.05354 GALAXY 96 0 - 305 51613 76 0.26685 GALAXY 32 0 - 305 51613 77 0.17603 GALAXY 64 0 - 305 51613 78 0.13303 GALAXY 64 0 - 305 51613 79 0.16211 GALAXY 64 0 - 305 51613 80 -0.00019 STAR 0 32 - 305 51613 81 0.35584 GALAXY 32 0 - 305 51613 82 0.16135 GALAXY 64 0 - 305 51613 83 0.00000 UNKNOWN 0 16 - 305 51613 84 0.13157 GALAXY 64 0 - 305 51613 85 0.10342 GALAXY 96 0 - 305 51613 86 0.13652 GALAXY 64 0 - 305 51613 87 0.28890 GALAXY 32 0 - 305 51613 88 0.27914 GALAXY 32 0 - 305 51613 89 0.07953 GALAXY 64 0 - 305 51613 90 0.41974 QSO 4 0 - 305 51613 91 -0.00017 STAR 4 0 - 305 51613 92 0.14175 GALAXY 64 0 - 305 51613 93 0.05300 GALAXY 64 0 - 305 51613 94 0.33222 QSO 4 0 - 305 51613 95 0.14771 GALAXY 64 0 - 305 51613 96 -0.00012 STAR 5 0 - 305 51613 97 0.16230 GALAXY 64 0 - 305 51613 98 0.18418 GALAXY 64 0 - 305 51613 99 0.08433 GALAXY 64 0 - 305 51613 100 -0.00006 STAR 1 0 - 305 51613 101 0.03053 GALAXY 64 0 - 305 51613 102 -0.00005 STAR 1056772 0 - 305 51613 103 0.10344 GALAXY 64 0 - 305 51613 104 0.08316 GALAXY 64 0 - 305 51613 105 0.01355 GALAXY 64 0 - 305 51613 106 0.00000 UNKNOWN 0 16 - 305 51613 107 0.05514 GALAXY 64 0 - 305 51613 108 0.05159 GALAXY 64 0 - 305 51613 109 0.05516 GALAXY 96 0 - 305 51613 110 0.10290 GALAXY 64 0 - 305 51613 111 0.10289 GALAXY 64 0 - 305 51613 112 0.05542 GALAXY 64 0 - 305 51613 113 0.56677 QSO 4 0 - 305 51613 114 0.00004 STAR 64 0 - 305 51613 115 -0.00023 STAR 1 0 - 305 51613 116 0.05332 GALAXY 64 0 - 305 51613 117 0.10041 GALAXY 64 0 - 305 51613 118 0.05507 GALAXY 64 0 - 305 51613 119 0.07357 GALAXY 64 0 - 305 51613 120 0.10362 GALAXY 64 0 - 305 51613 121 0.15058 GALAXY 64 0 - 305 51613 122 1.35424 QSO 4 0 - 305 51613 123 0.05347 GALAXY 64 0 - 305 51613 124 0.13540 GALAXY 64 0 - 305 51613 125 0.16312 GALAXY 64 0 - 305 51613 126 0.13547 GALAXY 64 0 - 305 51613 127 0.05283 GALAXY 64 0 - 305 51613 128 0.05268 GALAXY 64 0 - 305 51613 129 0.32051 GALAXY 32 0 - 305 51613 130 0.30639 GALAXY 96 0 - 305 51613 131 0.15993 GALAXY 64 0 - 305 51613 132 0.30597 QSO 4 0 - 305 51613 133 0.16261 GALAXY 4704 0 - 305 51613 134 -0.00053 STAR 9437184 512 - 305 51613 135 0.16156 GALAXY 4096 0 - 305 51613 136 0.16310 GALAXY 96 0 - 305 51613 137 0.00000 UNKNOWN 0 16 - 305 51613 138 0.35493 GALAXY 32 0 - 305 51613 139 0.03036 GALAXY 64 0 - 305 51613 140 0.30632 GALAXY 32 0 - 305 51613 141 1.52299 QSO 64 0 - 305 51613 142 1.06645 QSO 4 0 - 305 51613 143 0.10319 GALAXY 64 0 - 305 51613 144 0.13818 GALAXY 96 0 - 305 51613 145 0.05515 GALAXY 64 0 - 305 51613 146 0.15067 GALAXY 64 0 - 305 51613 147 0.07314 GALAXY 64 0 - 305 51613 148 0.25326 GALAXY 64 0 - 305 51613 149 0.13606 GALAXY 64 0 - 305 51613 150 0.13615 GALAXY 64 0 - 305 51613 151 0.00000 UNKNOWN 33554433 0 - 305 51613 152 0.35557 GALAXY 32 0 - 305 51613 153 0.12902 GALAXY 64 0 - 305 51613 154 0.25437 GALAXY 96 0 - 305 51613 155 0.13631 GALAXY 64 0 - 305 51613 156 0.12866 GALAXY 64 0 - 305 51613 157 0.00000 UNKNOWN 0 16 - 305 51613 158 0.07881 GALAXY 64 0 - 305 51613 159 0.12844 GALAXY 64 0 - 305 51613 160 0.28466 GALAXY 32 0 - 305 51613 161 0.05524 GALAXY 64 0 - 305 51613 162 0.16892 GALAXY 64 0 - 305 51613 163 0.12965 GALAXY 64 0 - 305 51613 164 0.07316 GALAXY 64 0 - 305 51613 165 0.10286 GALAXY 64 0 - 305 51613 166 0.00000 UNKNOWN 0 16 - 305 51613 167 0.10325 GALAXY 64 0 - 305 51613 168 0.05489 GALAXY 64 0 - 305 51613 169 0.10797 GALAXY 64 0 - 305 51613 170 0.03081 GALAXY 64 0 - 305 51613 171 0.12781 GALAXY 64 0 - 305 51613 172 0.12888 GALAXY 64 0 - 305 51613 173 3.07357 QSO 32 0 - 305 51613 174 0.19055 GALAXY 64 0 - 305 51613 175 0.16741 GALAXY 64 0 - 305 51613 176 0.10215 GALAXY 64 0 - 305 51613 177 0.17568 GALAXY 64 0 - 305 51613 178 -0.00030 STAR 0 34 - 305 51613 179 0.15097 GALAXY 64 0 - 305 51613 180 0.16533 GALAXY 64 0 - 305 51613 181 0.05545 GALAXY 64 0 - 305 51613 182 0.10291 GALAXY 64 0 - 305 51613 183 0.08438 GALAXY 64 0 - 305 51613 184 0.16990 GALAXY 64 0 - 305 51613 185 0.00000 UNKNOWN 0 16 - 305 51613 186 1.15685 QSO 1048580 0 - 305 51613 187 0.13796 GALAXY 64 0 - 305 51613 188 -0.00051 STAR 0 34 - 305 51613 189 0.10399 GALAXY 64 0 - 305 51613 190 0.05494 GALAXY 96 0 - 305 51613 191 0.10376 GALAXY 64 0 - 305 51613 192 -0.00066 STAR 1056768 0 - 305 51613 193 0.20490 GALAXY 96 0 - 305 51613 194 0.13324 GALAXY 64 0 - 305 51613 195 0.17185 GALAXY 64 0 - 305 51613 196 0.10292 GALAXY 64 0 - 305 51613 197 -0.00122 STAR 1048580 0 - 305 51613 198 0.08282 GALAXY 64 0 - 305 51613 199 0.17008 GALAXY 64 0 - 305 51613 200 0.32114 QSO 1 0 - 305 51613 201 0.00000 UNKNOWN 0 16 - 305 51613 202 0.07887 GALAXY 68 0 - 305 51613 203 0.07267 GALAXY 64 0 - 305 51613 204 0.17397 GALAXY 96 0 - 305 51613 205 0.31796 QSO 1055748 0 - 305 51613 206 0.05449 GALAXY 64 0 - 305 51613 207 0.13649 GALAXY 64 0 - 305 51613 208 0.08400 GALAXY 64 0 - 305 51613 209 0.15813 GALAXY 64 0 - 305 51613 210 -0.00018 STAR 1048580 0 - 305 51613 211 1.37541 QSO 1048580 0 - 305 51613 212 0.30836 GALAXY 32 0 - 305 51613 213 0.10163 GALAXY 64 0 - 305 51613 214 0.17354 GALAXY 64 0 - 305 51613 215 0.12915 GALAXY 64 0 - 305 51613 216 0.45953 GALAXY 67108896 0 - 305 51613 217 0.13907 GALAXY 64 0 - 305 51613 218 0.32173 GALAXY 32 0 - 305 51613 219 0.31655 GALAXY 32 0 - 305 51613 220 0.10338 GALAXY 64 0 - 305 51613 221 0.00869 GALAXY 96 0 - 305 51613 222 -0.00017 STAR 64 0 - 305 51613 223 0.04999 GALAXY 64 0 - 305 51613 224 0.13488 GALAXY 64 0 - 305 51613 225 1.48842 QSO 1 0 - 305 51613 226 2.13028 QSO 1048580 0 - 305 51613 227 0.12792 GALAXY 64 0 - 305 51613 228 0.13378 GALAXY 64 0 - 305 51613 229 0.00006 STAR 69 0 - 305 51613 230 0.12753 GALAXY 64 0 - 305 51613 231 0.13581 GALAXY 64 0 - 305 51613 232 0.10181 GALAXY 64 0 - 305 51613 233 0.10215 GALAXY 64 0 - 305 51613 234 0.05221 GALAXY 64 0 - 305 51613 235 0.03104 GALAXY 64 0 - 305 51613 236 0.10179 GALAXY 64 0 - 305 51613 237 0.13334 GALAXY 64 0 - 305 51613 238 0.17688 GALAXY 2097248 0 - 305 51613 239 0.00000 UNKNOWN 0 16 - 305 51613 240 0.11919 GALAXY 64 0 - 305 51613 241 0.00000 UNKNOWN 0 16 - 305 51613 242 0.19130 GALAXY 96 0 - 305 51613 243 -0.00038 STAR 1056768 0 - 305 51613 244 0.45507 GALAXY 67108896 0 - 305 51613 245 0.05038 GALAXY 96 0 - 305 51613 246 0.35761 GALAXY 32 0 - 305 51613 247 0.13828 GALAXY 64 0 - 305 51613 248 0.17545 GALAXY 64 0 - 305 51613 249 0.15683 GALAXY 64 0 - 305 51613 250 0.04959 UNKNOWN 1 0 - 305 51613 251 0.17349 GALAXY 64 0 - 305 51613 252 0.13463 GALAXY 64 0 - 305 51613 253 0.16898 GALAXY 64 0 - 305 51613 254 0.17503 GALAXY 64 0 - 305 51613 255 0.08400 GALAXY 4 0 - 305 51613 256 0.15000 GALAXY 4096 0 - 305 51613 257 0.08384 GALAXY 64 0 - 305 51613 258 0.17397 GALAXY 64 0 - 305 51613 259 0.14962 GALAXY 64 0 - 305 51613 260 0.06600 GALAXY 64 0 - 305 51613 261 0.00003 STAR 64 0 - 305 51613 262 0.00012 STAR 69 0 - 305 51613 263 0.20280 GALAXY 64 0 - 305 51613 264 0.00000 STAR 64 0 - 305 51613 265 0.00008 STAR 64 0 - 305 51613 266 -0.00010 STAR 65 0 - 305 51613 267 -0.00061 STAR 64 0 - 305 51613 268 0.00005 STAR 64 0 - 305 51613 269 0.13774 GALAXY 96 0 - 305 51613 270 0.00013 STAR 68 0 - 305 51613 271 -0.00009 STAR 69 0 - 305 51613 272 0.00008 STAR 64 0 - 305 51613 273 -0.00014 STAR 64 0 - 305 51613 274 0.00002 STAR 64 0 - 305 51613 275 -0.00010 STAR 68 0 - 305 51613 276 -0.00034 STAR 64 0 - 305 51613 277 -0.00020 STAR 64 0 - 305 51613 278 0.05446 GALAXY 64 0 - 305 51613 279 0.00000 UNKNOWN 0 16 - 305 51613 280 0.05514 GALAXY 64 0 - 305 51613 281 0.19238 GALAXY 64 0 - 305 51613 282 0.48418 GALAXY 67108896 0 - 305 51613 283 0.00000 UNKNOWN 0 16 - 305 51613 284 0.13858 GALAXY 64 0 - 305 51613 285 0.00007 STAR 0 34 - 305 51613 286 0.19283 GALAXY 64 0 - 305 51613 287 0.13678 GALAXY 64 0 - 305 51613 288 0.15864 GALAXY 64 0 - 305 51613 289 0.70632 QSO 4 0 - 305 51613 290 0.05210 GALAXY 64 0 - 305 51613 291 0.05251 GALAXY 96 0 - 305 51613 292 1.28405 QSO 1048580 0 - 305 51613 293 2.18354 QSO 36700160 0 - 305 51613 294 0.00033 STAR 69 0 - 305 51613 295 0.19611 GALAXY 64 0 - 305 51613 296 -0.00014 STAR 524288 0 - 305 51613 297 0.13057 GALAXY 64 0 - 305 51613 298 0.00012 STAR 69 0 - 305 51613 299 0.00009 STAR 64 0 - 305 51613 300 -0.00007 STAR 0 2 - 305 51613 301 -0.00009 STAR 64 0 - 305 51613 302 -0.00025 STAR 64 0 - 305 51613 303 -0.00020 STAR 64 0 - 305 51613 304 -0.00011 STAR 64 0 - 305 51613 305 -0.00054 UNKNOWN 16384 0 - 305 51613 306 0.00000 UNKNOWN 0 16 - 305 51613 307 0.10146 GALAXY 64 0 - 305 51613 308 -0.00011 STAR 64 0 - 305 51613 309 -0.00024 STAR 64 0 - 305 51613 310 0.00013 STAR 64 0 - 305 51613 311 -0.00020 STAR 64 0 - 305 51613 312 0.11925 GALAXY 64 0 - 305 51613 313 0.00009 STAR 69 0 - 305 51613 314 -0.00011 STAR 524288 34 - 305 51613 315 0.00004 STAR 69 0 - 305 51613 316 -0.00068 STAR 64 0 - 305 51613 317 -0.00016 STAR 64 0 - 305 51613 318 0.00038 STAR 65 0 - 305 51613 319 0.71615 QSO 68 0 - 305 51613 320 0.03862 GALAXY 64 0 - 305 51613 321 0.66853 GALAXY 68 0 - 305 51613 322 0.00006 STAR 64 0 - 305 51613 323 0.00023 STAR 64 0 - 305 51613 324 0.05373 GALAXY 64 0 - 305 51613 325 -0.00008 STAR 524288 0 - 305 51613 326 0.10298 GALAXY 64 0 - 305 51613 327 0.00001 STAR 64 0 - 305 51613 328 0.00030 STAR 64 0 - 305 51613 329 0.00000 MISSING 0 0 - 305 51613 330 0.08539 GALAXY 64 0 - 305 51613 331 0.00000 UNKNOWN 0 16 - 305 51613 332 0.03849 GALAXY 64 0 - 305 51613 333 0.15790 GALAXY 64 0 - 305 51613 334 -0.00034 STAR 524288 0 - 305 51613 335 -0.00019 STAR 64 0 - 305 51613 336 3.78785 QSO 1 0 - 305 51613 337 0.14070 GALAXY 64 0 - 305 51613 338 0.14574 GALAXY 64 0 - 305 51613 339 0.05352 GALAXY 64 0 - 305 51613 340 0.16997 GALAXY 64 0 - 305 51613 341 0.11839 GALAXY 64 0 - 305 51613 342 0.00000 UNKNOWN 0 16 - 305 51613 343 -0.00022 STAR 65 0 - 305 51613 344 0.10193 GALAXY 64 0 - 305 51613 345 -0.00037 STAR 64 0 - 305 51613 346 0.11741 GALAXY 64 0 - 305 51613 347 0.05398 GALAXY 64 0 - 305 51613 348 0.05486 GALAXY 64 0 - 305 51613 349 0.11924 GALAXY 64 0 - 305 51613 350 -0.00066 STAR 64 0 - 305 51613 351 0.11676 GALAXY 64 0 - 305 51613 352 0.05454 GALAXY 64 0 - 305 51613 353 0.15159 GALAXY 64 0 - 305 51613 354 0.00015 STAR 64 0 - 305 51613 355 -0.00008 STAR 0 34 - 305 51613 356 0.05487 GALAXY 64 0 - 305 51613 357 0.11733 GALAXY 64 0 - 305 51613 358 -0.00044 STAR 524288 32 - 305 51613 359 0.18979 GALAXY 64 0 - 305 51613 360 -0.00014 STAR 64 0 - 305 51613 361 0.03145 GALAXY 68 0 - 305 51613 362 0.00049 STAR 1056772 0 - 305 51613 363 0.13426 GALAXY 64 0 - 305 51613 364 0.10293 GALAXY 64 0 - 305 51613 365 0.32234 GALAXY 96 0 - 305 51613 366 0.13090 GALAXY 2097216 0 - 305 51613 367 0.12376 GALAXY 64 0 - 305 51613 368 -0.00002 UNKNOWN 64 0 - 305 51613 369 0.13573 GALAXY 64 0 - 305 51613 370 -0.00002 UNKNOWN 96 0 - 305 51613 371 0.16658 GALAXY 64 0 - 305 51613 372 0.15970 GALAXY 64 0 - 305 51613 373 0.12501 GALAXY 64 0 - 305 51613 374 0.38836 GALAXY 1 0 - 305 51613 375 0.00000 UNKNOWN 0 16 - 305 51613 376 0.09458 GALAXY 64 0 - 305 51613 377 0.10311 GALAXY 64 0 - 305 51613 378 0.15048 GALAXY 64 0 - 305 51613 379 2.18364 QSO 1 0 - 305 51613 380 0.12488 GALAXY 96 0 - 305 51613 381 0.00004 STAR 65 0 - 305 51613 382 0.12626 GALAXY 96 0 - 305 51613 383 0.03997 GALAXY 96 0 - 305 51613 384 -0.00018 STAR 65 0 - 305 51613 385 -0.00017 STAR 64 0 - 305 51613 386 0.15916 GALAXY 64 0 - 305 51613 387 -0.00012 STAR 64 0 - 305 51613 388 -0.00016 STAR 1 0 - 305 51613 389 0.00007 STAR 64 0 - 305 51613 390 0.00020 STAR 64 0 - 305 51613 391 -0.00011 STAR 65 0 - 305 51613 392 0.00016 STAR 64 0 - 305 51613 393 0.11927 GALAXY 64 0 - 305 51613 394 0.40819 GALAXY 32 0 - 305 51613 395 0.04000 GALAXY 64 0 - 305 51613 396 -0.00021 STAR 65 0 - 305 51613 397 0.11721 GALAXY 96 0 - 305 51613 398 -0.00053 STAR 68 0 - 305 51613 399 0.10361 GALAXY 64 0 - 305 51613 400 -0.00023 STAR 64 0 - 305 51613 401 0.11234 GALAXY 64 0 - 305 51613 402 0.13430 GALAXY 96 0 - 305 51613 403 0.08424 GALAXY 64 0 - 305 51613 404 0.08453 GALAXY 96 0 - 305 51613 405 0.09353 GALAXY 64 0 - 305 51613 406 0.13335 GALAXY 64 0 - 305 51613 407 0.12637 GALAXY 96 0 - 305 51613 408 0.13340 GALAXY 64 0 - 305 51613 409 0.00000 UNKNOWN 0 16 - 305 51613 410 0.10830 GALAXY 64 0 - 305 51613 411 0.32556 GALAXY 32 0 - 305 51613 412 0.13337 GALAXY 64 0 - 305 51613 413 0.13446 GALAXY 64 0 - 305 51613 414 0.08526 GALAXY 64 0 - 305 51613 415 0.13320 GALAXY 64 0 - 305 51613 416 0.19762 GALAXY 96 0 - 305 51613 417 0.19663 GALAXY 64 0 - 305 51613 418 0.12604 GALAXY 64 0 - 305 51613 419 0.05185 GALAXY 64 0 - 305 51613 420 0.00000 MISSING 0 0 - 305 51613 421 -0.00025 STAR 0 2 - 305 51613 422 1.05704 QSO 1048580 0 - 305 51613 423 0.07400 GALAXY 64 0 - 305 51613 424 0.12604 GALAXY 64 0 - 305 51613 425 0.03776 GALAXY 64 0 - 305 51613 426 0.03794 GALAXY 96 0 - 305 51613 427 0.00003 STAR 2097168 0 - 305 51613 428 0.00000 UNKNOWN 0 16 - 305 51613 429 0.03816 GALAXY 64 0 - 305 51613 430 0.21592 GALAXY 64 0 - 305 51613 431 0.03955 GALAXY 64 0 - 305 51613 432 0.29515 GALAXY 4 0 - 305 51613 433 0.38612 GALAXY 32 0 - 305 51613 434 0.05513 GALAXY 64 0 - 305 51613 435 -0.00029 STAR 0 34 - 305 51613 436 0.15114 GALAXY 64 0 - 305 51613 437 0.00000 UNKNOWN 0 16 - 305 51613 438 0.03874 GALAXY 96 0 - 305 51613 439 0.09741 GALAXY 64 0 - 305 51613 440 0.09455 GALAXY 64 0 - 305 51613 441 0.11520 GALAXY 64 0 - 305 51613 442 0.08441 GALAXY 64 0 - 305 51613 443 0.47315 GALAXY 67108896 0 - 305 51613 444 0.89896 QSO 9437188 0 - 305 51613 445 0.12856 GALAXY 64 0 - 305 51613 446 0.08404 GALAXY 64 0 - 305 51613 447 0.08528 GALAXY 64 0 - 305 51613 448 0.05530 GALAXY 96 0 - 305 51613 449 0.00000 UNKNOWN 0 16 - 305 51613 450 0.20358 GALAXY 96 0 - 305 51613 451 0.05427 GALAXY 64 0 - 305 51613 452 0.13094 GALAXY 64 0 - 305 51613 453 0.12569 GALAXY 96 0 - 305 51613 454 0.19060 GALAXY 64 0 - 305 51613 455 0.08401 GALAXY 64 0 - 305 51613 456 0.14191 GALAXY 64 0 - 305 51613 457 0.13277 GALAXY 64 0 - 305 51613 458 0.13452 GALAXY 64 0 - 305 51613 459 0.12892 GALAXY 64 0 - 305 51613 460 0.32573 QSO 3153428 0 - 305 51613 461 0.13069 GALAXY 64 0 - 305 51613 462 0.00027 STAR 0 32 - 305 51613 463 0.13241 GALAXY 64 0 - 305 51613 464 0.08419 GALAXY 64 0 - 305 51613 465 0.24237 GALAXY 64 0 - 305 51613 466 0.29585 GALAXY 32 0 - 305 51613 467 0.38167 GALAXY 32 0 - 305 51613 468 0.33304 GALAXY 32 0 - 305 51613 469 0.33735 GALAXY 32 0 - 305 51613 470 0.12793 GALAXY 64 0 - 305 51613 471 0.11051 GALAXY 64 0 - 305 51613 472 0.14942 GALAXY 64 0 - 305 51613 473 0.00003 STAR 4 0 - 305 51613 474 0.08446 GALAXY 64 0 - 305 51613 475 1.26193 QSO 4 0 - 305 51613 476 3.69603 QSO 1 0 - 305 51613 477 0.14924 GALAXY 64 0 - 305 51613 478 0.45532 GALAXY 69206048 0 - 305 51613 479 2.89059 QSO 4 0 - 305 51613 480 0.00000 UNKNOWN 0 16 - 305 51613 481 0.12902 GALAXY 64 0 - 305 51613 482 -0.00035 STAR 64 0 - 305 51613 483 0.10357 GALAXY 64 0 - 305 51613 484 0.13525 GALAXY 64 0 - 305 51613 485 0.13353 GALAXY 64 0 - 305 51613 486 0.05661 GALAXY 64 0 - 305 51613 487 0.12612 GALAXY 64 0 - 305 51613 488 0.00022 STAR 9437188 0 - 305 51613 489 0.00502 GALAXY 64 0 - 305 51613 490 0.13540 GALAXY 64 0 - 305 51613 491 0.13412 GALAXY 64 0 - 305 51613 492 0.00000 UNKNOWN 0 16 - 305 51613 493 -0.00007 STAR 0 2 - 305 51613 494 0.12908 GALAXY 64 0 - 305 51613 495 0.10139 GALAXY 64 0 - 305 51613 496 0.10505 GALAXY 64 0 - 305 51613 497 0.28999 GALAXY 32 0 - 305 51613 498 0.12950 GALAXY 64 0 - 305 51613 499 0.11467 GALAXY 64 0 - 305 51613 500 0.12531 GALAXY 64 0 - 305 51613 501 0.09570 GALAXY 64 0 - 305 51613 502 0.09716 GALAXY 64 0 - 305 51613 503 0.15814 GALAXY 64 0 - 305 51613 504 0.15803 GALAXY 64 0 - 305 51613 505 0.14207 GALAXY 64 0 - 305 51613 506 0.08438 GALAXY 64 0 - 305 51613 507 0.08597 GALAXY 64 0 - 305 51613 508 0.11724 GALAXY 64 0 - 305 51613 509 0.03936 GALAXY 96 0 - 305 51613 510 0.30422 GALAXY 96 0 - 305 51613 511 0.30153 GALAXY 32 0 - 305 51613 512 0.00001 STAR 42991616 0 - 305 51613 513 0.05461 GALAXY 64 0 - 305 51613 514 0.00001 STAR 42991616 512 - 305 51613 515 0.15753 GALAXY 64 0 - 305 51613 516 0.32593 GALAXY 32 0 - 305 51613 517 0.00000 UNKNOWN 0 16 - 305 51613 518 -0.00030 STAR 1048580 0 - 305 51613 519 0.12465 GALAXY 64 0 - 305 51613 520 0.12521 GALAXY 64 0 - 305 51613 521 0.12714 GALAXY 64 0 - 305 51613 522 0.00000 UNKNOWN 0 16 - 305 51613 523 0.05544 GALAXY 64 0 - 305 51613 524 0.05640 GALAXY 96 0 - 305 51613 525 0.21205 GALAXY 4 0 - 305 51613 526 0.05638 GALAXY 64 0 - 305 51613 527 0.03021 GALAXY 64 0 - 305 51613 528 0.12335 GALAXY 64 0 - 305 51613 529 0.05575 GALAXY 64 0 - 305 51613 530 0.16578 GALAXY 64 0 - 305 51613 531 0.05571 GALAXY 64 0 - 305 51613 532 0.08903 GALAXY 64 0 - 305 51613 533 0.13760 GALAXY 64 0 - 305 51613 534 0.05367 GALAXY 64 0 - 305 51613 535 0.05541 GALAXY 64 0 - 305 51613 536 0.18398 GALAXY 64 0 - 305 51613 537 0.05455 GALAXY 64 0 - 305 51613 538 0.08677 GALAXY 64 0 - 305 51613 539 0.15586 GALAXY 1 0 - 305 51613 540 0.05633 GALAXY 64 0 - 305 51613 541 1.68406 QSO 64 0 - 305 51613 542 0.12719 GALAXY 64 0 - 305 51613 543 0.00000 UNKNOWN 0 16 - 305 51613 544 0.12618 GALAXY 96 0 - 305 51613 545 0.12473 GALAXY 64 0 - 305 51613 546 0.12686 GALAXY 64 0 - 305 51613 547 0.28046 GALAXY 32 0 - 305 51613 548 0.47584 GALAXY 67108896 0 - 305 51613 549 0.14522 GALAXY 64 0 - 305 51613 550 0.21924 GALAXY 4 0 - 305 51613 551 0.14424 GALAXY 64 0 - 305 51613 552 0.03175 GALAXY 64 0 - 305 51613 553 0.08380 GALAXY 64 0 - 305 51613 554 0.12670 GALAXY 64 0 - 305 51613 555 0.12707 GALAXY 64 0 - 305 51613 556 1.32883 QSO 1048580 0 - 305 51613 557 0.12614 GALAXY 96 0 - 305 51613 558 0.47502 GALAXY 67108896 0 - 305 51613 559 0.09695 GALAXY 64 0 - 305 51613 560 0.32582 GALAXY 32 0 - 305 51613 561 0.13589 GALAXY 64 0 - 305 51613 562 0.05372 GALAXY 64 0 - 305 51613 563 0.10316 GALAXY 64 0 - 305 51613 564 0.09187 GALAXY 64 0 - 305 51613 565 0.05358 GALAXY 64 0 - 305 51613 566 0.12994 GALAXY 64 0 - 305 51613 567 0.03432 GALAXY 64 0 - 305 51613 568 0.13027 GALAXY 64 0 - 305 51613 569 0.05382 GALAXY 64 0 - 305 51613 570 0.05463 GALAXY 64 0 - 305 51613 571 0.10232 GALAXY 64 0 - 305 51613 572 -0.00031 STAR 0 2 - 305 51613 573 0.05589 GALAXY 64 0 - 305 51613 574 0.08627 GALAXY 64 0 - 305 51613 575 0.09608 GALAXY 64 0 - 305 51613 576 0.05589 GALAXY 64 0 - 305 51613 577 0.00000 UNKNOWN 0 16 - 305 51613 578 0.02617 GALAXY 64 0 - 305 51613 579 -0.00010 STAR 0 2 - 305 51613 580 0.05530 GALAXY 64 0 - 305 51613 581 0.02555 GALAXY 96 0 - 305 51613 582 0.29126 GALAXY 32 0 - 305 51613 583 0.30475 GALAXY 32 0 - 305 51613 584 1.30699 QSO 1 0 - 305 51613 585 0.02808 GALAXY 4 0 - 305 51613 586 0.84141 QSO 1048580 0 - 305 51613 587 0.34512 GALAXY 32 0 - 305 51613 588 0.00000 UNKNOWN 0 16 - 305 51613 589 0.29096 GALAXY 32 0 - 305 51613 590 0.30667 GALAXY 32 0 - 305 51613 591 0.12380 GALAXY 64 0 - 305 51613 592 0.12462 GALAXY 64 0 - 305 51613 593 1.29439 QSO 1048580 0 - 305 51613 594 0.05230 GALAXY 68 0 - 305 51613 595 0.02558 GALAXY 64 0 - 305 51613 596 0.14325 GALAXY 64 0 - 305 51613 597 0.11654 GALAXY 64 0 - 305 51613 598 0.10196 GALAXY 64 0 - 305 51613 599 0.11076 GALAXY 64 0 - 305 51613 600 0.12555 GALAXY 64 0 - 305 51613 601 1.04451 GALAXY 4 0 - 305 51613 602 0.13558 GALAXY 64 0 - 305 51613 603 0.79057 GALAXY 4194304 0 - 305 51613 604 0.01331 GALAXY 64 0 - 305 51613 605 0.13254 GALAXY 96 0 - 305 51613 606 0.14788 GALAXY 64 0 - 305 51613 607 0.12889 GALAXY 64 0 - 305 51613 608 0.13046 GALAXY 96 0 - 305 51613 609 0.05427 GALAXY 64 0 - 305 51613 610 0.09551 GALAXY 96 0 - 305 51613 611 0.08685 GALAXY 64 0 - 305 51613 612 0.13174 GALAXY 64 0 - 305 51613 613 0.13194 GALAXY 64 0 - 305 51613 614 0.05519 GALAXY 64 0 - 305 51613 615 0.33671 GALAXY 32 0 - 305 51613 616 1.84690 QSO 1048580 0 - 305 51613 617 0.11860 GALAXY 64 0 - 305 51613 618 0.05639 GALAXY 68 0 - 305 51613 619 0.13215 GALAXY 64 0 - 305 51613 620 0.00000 UNKNOWN 0 16 - 305 51613 621 0.11295 GALAXY 64 0 - 305 51613 622 0.40830 GALAXY 67108896 0 - 305 51613 623 0.10205 GALAXY 64 0 - 305 51613 624 0.00000 UNKNOWN 0 16 - 305 51613 625 0.31925 GALAXY 32 0 - 305 51613 626 0.13859 GALAXY 64 0 - 305 51613 627 0.30626 QSO 33554433 0 - 305 51613 628 0.05475 GALAXY 64 0 - 305 51613 629 0.11424 GALAXY 64 0 - 305 51613 630 0.05430 GALAXY 96 0 - 305 51613 631 0.08685 GALAXY 64 0 - 305 51613 632 2.14915 QSO 4 0 - 305 51613 633 0.12239 GALAXY 64 0 - 305 51613 634 0.11239 GALAXY 64 0 - 305 51613 635 0.12602 GALAXY 64 0 - 305 51613 636 0.13588 GALAXY 64 0 - 305 51613 637 0.03680 GALAXY 64 0 - 305 51613 638 0.32227 GALAXY 32 0 - 305 51613 639 0.12599 GALAXY 64 0 - 305 51613 640 0.03664 GALAXY 64 0 - 306 51690 1 0.10606 GALAXY 64 0 - 306 51690 2 0.03853 GALAXY 64 0 - 306 51690 3 0.21480 GALAXY 96 0 - 306 51690 4 0.00000 UNKNOWN 0 16 - 306 51690 5 0.14975 GALAXY 64 0 - 306 51690 6 2.04934 QSO 1048580 0 - 306 51690 7 0.18029 GALAXY 64 0 - 306 51690 8 0.09040 GALAXY 64 0 - 306 51690 9 0.08137 GALAXY 64 0 - 306 51690 10 0.03791 GALAXY 64 0 - 306 51690 11 0.18112 GALAXY 64 0 - 306 51690 12 0.10788 GALAXY 64 0 - 306 51690 13 0.24428 GALAXY 32 0 - 306 51690 14 0.25684 GALAXY 96 0 - 306 51690 15 0.21524 GALAXY 96 0 - 306 51690 16 0.28213 GALAXY 32 0 - 306 51690 17 0.10767 GALAXY 64 0 - 306 51690 18 -0.00001 STAR 1056772 0 - 306 51690 19 0.10658 GALAXY 64 0 - 306 51690 20 -0.00068 STAR 1048580 0 - 306 51690 21 0.91439 QSO 1048580 0 - 306 51690 22 0.14084 GALAXY 64 0 - 306 51690 23 0.13512 GALAXY 64 0 - 306 51690 24 0.32531 QSO 68 0 - 306 51690 25 0.10553 GALAXY 64 0 - 306 51690 26 0.08220 GALAXY 64 0 - 306 51690 27 0.03711 GALAXY 64 0 - 306 51690 28 0.12254 GALAXY 64 0 - 306 51690 29 0.00066 STAR 1056772 0 - 306 51690 30 0.08235 GALAXY 64 0 - 306 51690 31 0.10553 GALAXY 64 0 - 306 51690 32 0.13700 GALAXY 64 0 - 306 51690 33 0.46075 GALAXY 67108896 0 - 306 51690 34 0.00000 UNKNOWN 0 16 - 306 51690 35 0.28557 GALAXY 32 0 - 306 51690 36 0.03827 GALAXY 96 0 - 306 51690 37 0.10562 GALAXY 64 0 - 306 51690 38 0.13746 GALAXY 64 0 - 306 51690 39 0.08196 GALAXY 96 0 - 306 51690 40 0.10625 GALAXY 64 0 - 306 51690 41 0.08922 GALAXY 64 0 - 306 51690 42 0.22495 GALAXY 64 0 - 306 51690 43 -0.00005 STAR 64 0 - 306 51690 44 0.22867 GALAXY 96 0 - 306 51690 45 0.02538 GALAXY 64 0 - 306 51690 46 0.18018 GALAXY 64 0 - 306 51690 47 0.00035 STAR 8196 0 - 306 51690 48 0.52663 GALAXY 67108896 0 - 306 51690 49 0.24484 GALAXY 96 0 - 306 51690 50 0.13122 GALAXY 64 0 - 306 51690 51 0.16292 GALAXY 64 0 - 306 51690 52 0.21899 GALAXY 64 0 - 306 51690 53 0.08862 GALAXY 64 0 - 306 51690 54 0.00000 UNKNOWN 0 16 - 306 51690 55 0.21913 GALAXY 96 0 - 306 51690 56 0.04785 GALAXY 64 0 - 306 51690 57 0.10649 GALAXY 64 0 - 306 51690 58 0.21902 GALAXY 96 0 - 306 51690 59 0.46156 GALAXY 1 0 - 306 51690 60 0.38752 GALAXY 32 0 - 306 51690 61 0.32628 GALAXY 32 0 - 306 51690 62 0.10701 GALAXY 64 0 - 306 51690 63 0.10746 GALAXY 64 0 - 306 51690 64 0.00000 UNKNOWN 0 16 - 306 51690 65 0.10716 GALAXY 64 0 - 306 51690 66 0.28807 GALAXY 32 0 - 306 51690 67 0.08109 GALAXY 64 0 - 306 51690 68 0.21883 GALAXY 96 0 - 306 51690 69 0.10582 GALAXY 96 0 - 306 51690 70 0.10705 GALAXY 64 0 - 306 51690 71 0.13713 GALAXY 64 0 - 306 51690 72 0.13971 GALAXY 64 0 - 306 51690 73 0.02934 GALAXY 64 0 - 306 51690 74 0.09292 GALAXY 64 0 - 306 51690 75 0.13521 GALAXY 64 0 - 306 51690 76 0.96783 QSO 4 0 - 306 51690 77 0.21837 GALAXY 96 0 - 306 51690 78 0.05695 GALAXY 64 0 - 306 51690 79 0.13838 GALAXY 64 0 - 306 51690 80 0.13994 GALAXY 64 0 - 306 51690 81 0.02965 GALAXY 64 0 - 306 51690 82 0.01390 GALAXY 64 0 - 306 51690 83 0.08110 GALAXY 64 0 - 306 51690 84 0.08183 GALAXY 64 0 - 306 51690 85 0.22889 GALAXY 64 0 - 306 51690 86 0.05649 GALAXY 64 0 - 306 51690 87 0.05611 GALAXY 64 0 - 306 51690 88 0.05593 GALAXY 64 0 - 306 51690 89 0.05612 GALAXY 64 0 - 306 51690 90 0.13272 GALAXY 64 0 - 306 51690 91 0.32631 GALAXY 32 0 - 306 51690 92 0.13396 GALAXY 64 0 - 306 51690 93 0.00000 UNKNOWN 0 16 - 306 51690 94 0.14831 GALAXY 64 0 - 306 51690 95 0.16337 GALAXY 64 0 - 306 51690 96 0.08911 GALAXY 96 0 - 306 51690 97 0.05575 GALAXY 64 0 - 306 51690 98 0.08219 GALAXY 64 0 - 306 51690 99 0.13118 GALAXY 64 0 - 306 51690 100 0.24934 GALAXY 32 0 - 306 51690 101 0.13759 GALAXY 64 0 - 306 51690 102 0.10687 GALAXY 64 0 - 306 51690 103 0.10634 GALAXY 64 0 - 306 51690 104 0.12939 GALAXY 64 0 - 306 51690 105 0.10604 GALAXY 64 0 - 306 51690 106 0.22116 GALAXY 64 0 - 306 51690 107 0.85710 QSO 4 0 - 306 51690 108 0.10708 GALAXY 64 0 - 306 51690 109 0.00000 UNKNOWN 0 16 - 306 51690 110 1.55420 QSO 1048580 0 - 306 51690 111 1.17678 QSO 4 0 - 306 51690 112 0.16174 GALAXY 64 0 - 306 51690 113 0.00606 GALAXY 64 0 - 306 51690 114 0.00030 STAR 0 96 - 306 51690 115 0.21105 GALAXY 32 0 - 306 51690 116 0.12339 GALAXY 64 0 - 306 51690 117 -0.00009 STAR 0 2 - 306 51690 118 0.15199 GALAXY 64 0 - 306 51690 119 0.12269 GALAXY 64 0 - 306 51690 120 0.13930 GALAXY 64 0 - 306 51690 121 0.12172 GALAXY 64 0 - 306 51690 122 0.12221 GALAXY 64 0 - 306 51690 123 0.11629 GALAXY 4 0 - 306 51690 124 0.00000 UNKNOWN 0 16 - 306 51690 125 0.26313 GALAXY 32 0 - 306 51690 126 0.05475 GALAXY 64 0 - 306 51690 127 0.65814 QSO 4 0 - 306 51690 128 2.08429 QSO 20 0 - 306 51690 129 1.02701 QSO 3153428 0 - 306 51690 130 0.13709 GALAXY 64 0 - 306 51690 131 0.12212 GALAXY 64 0 - 306 51690 132 0.21718 GALAXY 64 0 - 306 51690 133 0.36217 QSO 4 0 - 306 51690 134 1.32855 QSO 4 0 - 306 51690 135 1.18742 QSO 4 0 - 306 51690 136 0.15087 GALAXY 64 0 - 306 51690 137 0.05481 GALAXY 64 0 - 306 51690 138 0.00000 UNKNOWN 1 0 - 306 51690 139 0.00016 STAR 64 0 - 306 51690 140 0.05532 GALAXY 64 0 - 306 51690 141 0.02982 GALAXY 64 0 - 306 51690 142 0.13714 GALAXY 64 0 - 306 51690 143 0.00000 UNKNOWN 0 16 - 306 51690 144 0.12302 GALAXY 64 0 - 306 51690 145 0.13668 GALAXY 64 0 - 306 51690 146 0.08890 GALAXY 64 0 - 306 51690 147 0.00078 STAR 8196 0 - 306 51690 148 0.05621 GALAXY 64 0 - 306 51690 149 0.08899 GALAXY 64 0 - 306 51690 150 0.13707 GALAXY 64 0 - 306 51690 151 0.08393 GALAXY 64 0 - 306 51690 152 0.14775 GALAXY 64 0 - 306 51690 153 0.03590 GALAXY 64 0 - 306 51690 154 0.40237 GALAXY 32 0 - 306 51690 155 0.10632 GALAXY 64 0 - 306 51690 156 0.13679 GALAXY 4 0 - 306 51690 157 -0.00062 STAR 0 2 - 306 51690 158 0.00023 STAR 4 0 - 306 51690 159 0.13644 GALAXY 64 0 - 306 51690 160 0.10389 GALAXY 64 0 - 306 51690 161 0.45014 GALAXY 32 0 - 306 51690 162 0.21251 GALAXY 64 0 - 306 51690 163 0.00024 STAR 1056772 0 - 306 51690 164 0.00066 STAR 0 2 - 306 51690 165 1.82461 QSO 1 0 - 306 51690 166 0.21805 GALAXY 64 0 - 306 51690 167 0.25766 GALAXY 32 0 - 306 51690 168 0.05561 GALAXY 64 0 - 306 51690 169 0.10515 GALAXY 64 0 - 306 51690 170 2.06534 QSO 4 0 - 306 51690 171 2.47852 QSO 1 0 - 306 51690 172 0.08828 GALAXY 64 0 - 306 51690 173 0.13098 GALAXY 96 0 - 306 51690 174 0.00000 UNKNOWN 0 16 - 306 51690 175 0.10496 GALAXY 64 0 - 306 51690 176 0.12376 GALAXY 64 0 - 306 51690 177 0.09319 GALAXY 64 0 - 306 51690 178 0.08840 GALAXY 64 0 - 306 51690 179 0.10459 GALAXY 64 0 - 306 51690 180 0.51742 GALAXY 67108896 0 - 306 51690 181 -0.00013 STAR 0 2 - 306 51690 182 0.12476 GALAXY 64 0 - 306 51690 183 0.13638 GALAXY 64 0 - 306 51690 184 0.12266 GALAXY 64 0 - 306 51690 185 0.13486 GALAXY 64 0 - 306 51690 186 0.09431 GALAXY 64 0 - 306 51690 187 0.00000 UNKNOWN 0 16 - 306 51690 188 0.00018 STAR 0 512 - 306 51690 189 1.29548 QSO 4 0 - 306 51690 190 0.12318 GALAXY 64 0 - 306 51690 191 1.34653 QSO 1048580 0 - 306 51690 192 0.13694 GALAXY 64 0 - 306 51690 193 0.00042 STAR 1048580 0 - 306 51690 194 0.09310 GALAXY 64 0 - 306 51690 195 0.08837 GALAXY 64 0 - 306 51690 196 0.09312 GALAXY 64 0 - 306 51690 197 0.08780 GALAXY 64 0 - 306 51690 198 0.09294 GALAXY 64 0 - 306 51690 199 0.28151 GALAXY 32 0 - 306 51690 200 0.22035 GALAXY 96 0 - 306 51690 201 0.40155 GALAXY 32 0 - 306 51690 202 0.03518 GALAXY 64 0 - 306 51690 203 0.08272 GALAXY 64 0 - 306 51690 204 0.40202 GALAXY 32 0 - 306 51690 205 0.00000 UNKNOWN 0 16 - 306 51690 206 0.07251 GALAXY 64 0 - 306 51690 207 0.40212 GALAXY 32 0 - 306 51690 208 0.36208 GALAXY 32 0 - 306 51690 209 0.08224 GALAXY 64 0 - 306 51690 210 0.40330 GALAXY 32 0 - 306 51690 211 2.19969 QSO 1048580 0 - 306 51690 212 0.13203 GALAXY 64 0 - 306 51690 213 0.33327 QSO 4 0 - 306 51690 214 0.14131 GALAXY 64 0 - 306 51690 215 0.39660 GALAXY 32 0 - 306 51690 216 0.00032 STAR 1 0 - 306 51690 217 0.00013 STAR 0 32 - 306 51690 218 0.25905 GALAXY 96 0 - 306 51690 219 0.13334 GALAXY 64 0 - 306 51690 220 0.10434 GALAXY 64 0 - 306 51690 221 0.12345 GALAXY 64 0 - 306 51690 222 0.32079 GALAXY 32 0 - 306 51690 223 0.44026 GALAXY 32 0 - 306 51690 224 0.00000 UNKNOWN 0 16 - 306 51690 225 2.53333 QSO 1 0 - 306 51690 226 0.13167 GALAXY 64 0 - 306 51690 227 0.10821 GALAXY 64 0 - 306 51690 228 0.13223 GALAXY 64 0 - 306 51690 229 3.81559 QSO 33554433 0 - 306 51690 230 0.13156 GALAXY 64 0 - 306 51690 231 0.13419 GALAXY 64 0 - 306 51690 232 0.44060 GALAXY 32 0 - 306 51690 233 0.13704 GALAXY 64 0 - 306 51690 234 0.10866 GALAXY 64 0 - 306 51690 235 0.12232 GALAXY 64 0 - 306 51690 236 0.00037 STAR 0 34 - 306 51690 237 0.03048 GALAXY 64 0 - 306 51690 238 0.12402 GALAXY 64 0 - 306 51690 239 -0.00023 STAR 1056772 0 - 306 51690 240 0.13765 GALAXY 64 0 - 306 51690 241 0.33037 GALAXY 32 0 - 306 51690 242 0.12128 GALAXY 64 0 - 306 51690 243 0.00000 UNKNOWN 0 16 - 306 51690 244 0.35781 GALAXY 32 0 - 306 51690 245 0.80894 QSO 20 0 - 306 51690 246 0.60516 QSO 1048580 0 - 306 51690 247 0.07304 GALAXY 64 0 - 306 51690 248 0.13755 GALAXY 64 0 - 306 51690 249 0.08000 GALAXY 64 0 - 306 51690 250 0.00010 STAR 524288 0 - 306 51690 251 0.12351 GALAXY 96 0 - 306 51690 252 0.10435 GALAXY 64 0 - 306 51690 253 0.02991 GALAXY 64 0 - 306 51690 254 0.00039 STAR 4 0 - 306 51690 255 0.40317 GALAXY 32 0 - 306 51690 256 0.08805 GALAXY 64 0 - 306 51690 257 0.12319 GALAXY 64 0 - 306 51690 258 1.49996 QSO 2097168 0 - 306 51690 259 0.08255 GALAXY 64 0 - 306 51690 260 0.31757 QSO 64 0 - 306 51690 261 -0.00003 STAR 4 0 - 306 51690 262 0.08329 GALAXY 64 0 - 306 51690 263 0.13176 GALAXY 96 0 - 306 51690 264 0.03015 GALAXY 64 0 - 306 51690 265 0.35473 QSO 1 0 - 306 51690 266 0.81063 QSO 1048580 0 - 306 51690 267 0.11841 GALAXY 64 0 - 306 51690 268 0.32024 GALAXY 32 0 - 306 51690 269 0.22099 GALAXY 64 0 - 306 51690 270 0.13668 GALAXY 96 0 - 306 51690 271 0.00000 UNKNOWN 0 16 - 306 51690 272 0.08533 GALAXY 64 0 - 306 51690 273 0.08616 GALAXY 64 0 - 306 51690 274 -0.00031 STAR 8196 0 - 306 51690 275 0.03019 GALAXY 96 0 - 306 51690 276 0.18463 GALAXY 64 0 - 306 51690 277 0.15820 GALAXY 64 0 - 306 51690 278 0.03034 GALAXY 64 0 - 306 51690 279 1.55604 QSO 1048580 0 - 306 51690 280 0.13661 GALAXY 4 0 - 306 51690 281 0.13087 GALAXY 64 0 - 306 51690 282 0.00000 UNKNOWN 0 16 - 306 51690 283 0.13223 GALAXY 64 0 - 306 51690 284 0.10436 GALAXY 64 0 - 306 51690 285 0.00034 STAR 0 96 - 306 51690 286 0.03019 GALAXY 68 0 - 306 51690 287 0.03052 GALAXY 96 0 - 306 51690 288 0.39896 GALAXY 67108896 0 - 306 51690 289 0.32015 GALAXY 4096 0 - 306 51690 290 0.13426 GALAXY 64 0 - 306 51690 291 0.13725 GALAXY 64 0 - 306 51690 292 0.21827 GALAXY 96 0 - 306 51690 293 0.07341 GALAXY 64 0 - 306 51690 294 0.07937 GALAXY 64 0 - 306 51690 295 0.04832 GALAXY 64 0 - 306 51690 296 0.04945 GALAXY 64 0 - 306 51690 297 0.80911 QSO 1048580 0 - 306 51690 298 0.07268 GALAXY 96 0 - 306 51690 299 0.05531 GALAXY 96 0 - 306 51690 300 0.07327 GALAXY 64 0 - 306 51690 301 0.16029 GALAXY 64 0 - 306 51690 302 0.62829 QSO 4 0 - 306 51690 303 0.00000 UNKNOWN 0 16 - 306 51690 304 0.12703 GALAXY 64 0 - 306 51690 305 0.13637 GALAXY 64 0 - 306 51690 306 0.33572 GALAXY 32 0 - 306 51690 307 1.14773 QSO 4 0 - 306 51690 308 2.63993 QSO 1 0 - 306 51690 309 0.13095 GALAXY 64 0 - 306 51690 310 0.07333 GALAXY 96 0 - 306 51690 311 0.75332 QSO 42991616 0 - 306 51690 312 0.28396 GALAXY 32 0 - 306 51690 313 0.22184 GALAXY 5124 0 - 306 51690 314 0.16473 GALAXY 64 0 - 306 51690 315 0.07951 GALAXY 64 0 - 306 51690 316 0.13125 GALAXY 64 0 - 306 51690 317 0.28484 GALAXY 32 0 - 306 51690 318 0.10446 GALAXY 64 0 - 306 51690 319 0.13504 GALAXY 64 0 - 306 51690 320 0.16396 GALAXY 4096 0 - 306 51690 321 0.11390 GALAXY 64 0 - 306 51690 322 0.31993 GALAXY 32 0 - 306 51690 323 0.11488 GALAXY 64 0 - 306 51690 324 0.12590 GALAXY 64 0 - 306 51690 325 0.11057 GALAXY 64 0 - 306 51690 326 0.09863 GALAXY 64 0 - 306 51690 327 0.10148 GALAXY 64 0 - 306 51690 328 0.02592 GALAXY 96 0 - 306 51690 329 0.14489 GALAXY 64 0 - 306 51690 330 0.37320 GALAXY 16384 0 - 306 51690 331 0.00011 STAR 1056772 0 - 306 51690 332 0.12405 GALAXY 64 0 - 306 51690 333 0.00000 UNKNOWN 0 16 - 306 51690 334 0.11515 GALAXY 64 0 - 306 51690 335 0.15065 GALAXY 64 0 - 306 51690 336 0.10210 GALAXY 64 0 - 306 51690 337 0.17042 GALAXY 64 0 - 306 51690 338 0.05250 GALAXY 64 0 - 306 51690 339 0.16147 GALAXY 96 0 - 306 51690 340 0.00013 STAR 65536 0 - 306 51690 341 0.33545 GALAXY 32 0 - 306 51690 342 0.08551 GALAXY 96 0 - 306 51690 343 0.05710 GALAXY 64 0 - 306 51690 344 0.11487 GALAXY 64 0 - 306 51690 345 -0.00010 STAR 16777216 0 - 306 51690 346 0.00008 STAR 64 0 - 306 51690 347 0.12899 GALAXY 64 0 - 306 51690 348 0.13593 GALAXY 64 0 - 306 51690 349 0.08524 GALAXY 64 0 - 306 51690 350 0.29547 GALAXY 32 0 - 306 51690 351 0.00011 STAR 0 2 - 306 51690 352 0.00000 UNKNOWN 0 16 - 306 51690 353 0.02416 GALAXY 64 0 - 306 51690 354 0.33303 GALAXY 32 0 - 306 51690 355 0.13498 GALAXY 64 0 - 306 51690 356 0.08474 GALAXY 64 0 - 306 51690 357 -0.00031 STAR 64 0 - 306 51690 358 0.08501 GALAXY 64 0 - 306 51690 359 0.08480 GALAXY 64 0 - 306 51690 360 0.22948 GALAXY 32 0 - 306 51690 361 0.11357 GALAXY 64 0 - 306 51690 362 0.21247 GALAXY 96 0 - 306 51690 363 0.15226 GALAXY 64 0 - 306 51690 364 0.42328 GALAXY 32 0 - 306 51690 365 0.00034 STAR 1056772 0 - 306 51690 366 0.12328 GALAXY 64 0 - 306 51690 367 0.00000 UNKNOWN 0 16 - 306 51690 368 0.12206 GALAXY 4 0 - 306 51690 369 0.19060 GALAXY 64 0 - 306 51690 370 0.12365 GALAXY 64 0 - 306 51690 371 0.12368 GALAXY 64 0 - 306 51690 372 0.02992 GALAXY 96 0 - 306 51690 373 0.02972 GALAXY 68 0 - 306 51690 374 0.00026 STAR 1056772 0 - 306 51690 375 0.33238 UNKNOWN 33554433 0 - 306 51690 376 0.48044 GALAXY 67108896 0 - 306 51690 377 0.32944 GALAXY 32 0 - 306 51690 378 0.08675 GALAXY 64 0 - 306 51690 379 0.32397 GALAXY 32 0 - 306 51690 380 0.15605 GALAXY 64 0 - 306 51690 381 0.05139 GALAXY 64 0 - 306 51690 382 0.05398 GALAXY 64 0 - 306 51690 383 0.05541 GALAXY 64 0 - 306 51690 384 0.36408 GALAXY 32 0 - 306 51690 385 0.05584 GALAXY 96 0 - 306 51690 386 0.05624 GALAXY 64 0 - 306 51690 387 0.05589 GALAXY 64 0 - 306 51690 388 0.10283 GALAXY 96 0 - 306 51690 389 0.43058 UNKNOWN 42991616 0 - 306 51690 390 0.05715 GALAXY 64 0 - 306 51690 391 0.00041 STAR 8192 0 - 306 51690 392 0.11427 GALAXY 64 0 - 306 51690 393 0.12960 GALAXY 96 0 - 306 51690 394 0.10235 GALAXY 64 0 - 306 51690 395 0.10476 GALAXY 64 0 - 306 51690 396 0.13822 GALAXY 64 0 - 306 51690 397 0.10559 GALAXY 64 0 - 306 51690 398 0.00000 UNKNOWN 0 16 - 306 51690 399 0.05472 GALAXY 64 0 - 306 51690 400 0.00020 STAR 4 0 - 306 51690 401 0.13312 GALAXY 64 0 - 306 51690 402 0.00111 STAR 8196 0 - 306 51690 403 0.13642 GALAXY 96 0 - 306 51690 404 0.03023 GALAXY 96 0 - 306 51690 405 0.02626 GALAXY 96 0 - 306 51690 406 0.12433 GALAXY 64 0 - 306 51690 407 0.13356 GALAXY 64 0 - 306 51690 408 0.03042 GALAXY 64 0 - 306 51690 409 0.13652 GALAXY 64 0 - 306 51690 410 0.03027 GALAXY 64 0 - 306 51690 411 0.13297 GALAXY 64 0 - 306 51690 412 0.08740 GALAXY 64 0 - 306 51690 413 0.13713 GALAXY 64 0 - 306 51690 414 0.15087 GALAXY 64 0 - 306 51690 415 0.29930 GALAXY 32 0 - 306 51690 416 0.20559 GALAXY 64 0 - 306 51690 417 0.00000 UNKNOWN 0 16 - 306 51690 418 0.06847 GALAXY 64 0 - 306 51690 419 0.13194 GALAXY 64 0 - 306 51690 420 0.13772 GALAXY 64 0 - 306 51690 421 0.05594 GALAXY 64 0 - 306 51690 422 0.05448 GALAXY 96 0 - 306 51690 423 0.15125 GALAXY 64 0 - 306 51690 424 0.14800 GALAXY 64 0 - 306 51690 425 0.08661 GALAXY 64 0 - 306 51690 426 0.13013 GALAXY 64 0 - 306 51690 427 0.13680 GALAXY 64 0 - 306 51690 428 0.19016 GALAXY 4 0 - 306 51690 429 0.05502 GALAXY 64 0 - 306 51690 430 0.05610 GALAXY 64 0 - 306 51690 431 0.05649 GALAXY 96 0 - 306 51690 432 0.10347 GALAXY 64 0 - 306 51690 433 1.26408 QSO 4 0 - 306 51690 434 0.08685 GALAXY 64 0 - 306 51690 435 0.00000 UNKNOWN 0 16 - 306 51690 436 0.11826 GALAXY 64 0 - 306 51690 437 1.99520 QSO 1048580 0 - 306 51690 438 0.10321 GALAXY 64 0 - 306 51690 439 0.05468 GALAXY 96 0 - 306 51690 440 0.10252 GALAXY 64 0 - 306 51690 441 0.07836 GALAXY 64 0 - 306 51690 442 0.08127 GALAXY 64 0 - 306 51690 443 0.33620 GALAXY 32 0 - 306 51690 444 0.48094 GALAXY 67108896 0 - 306 51690 445 0.39976 GALAXY 32 0 - 306 51690 446 0.11764 GALAXY 64 0 - 306 51690 447 1.09092 QSO 1048580 0 - 306 51690 448 0.00000 UNKNOWN 0 16 - 306 51690 449 0.14444 GALAXY 64 0 - 306 51690 450 0.10898 GALAXY 64 0 - 306 51690 451 0.03009 GALAXY 64 0 - 306 51690 452 -0.00019 STAR 0 32 - 306 51690 453 0.47184 GALAXY 67108896 0 - 306 51690 454 0.07156 GALAXY 64 0 - 306 51690 455 0.22265 GALAXY 64 0 - 306 51690 456 0.12729 GALAXY 64 0 - 306 51690 457 0.09513 GALAXY 64 0 - 306 51690 458 0.15105 GALAXY 96 0 - 306 51690 459 0.15039 GALAXY 64 0 - 306 51690 460 0.40984 QSO 32 0 - 306 51690 461 0.09531 GALAXY 64 0 - 306 51690 462 0.13588 GALAXY 64 0 - 306 51690 463 0.09539 GALAXY 64 0 - 306 51690 464 0.00000 UNKNOWN 0 16 - 306 51690 465 0.29964 GALAXY 32 0 - 306 51690 466 0.37428 GALAXY 4 0 - 306 51690 467 0.13569 GALAXY 64 0 - 306 51690 468 0.13627 GALAXY 64 0 - 306 51690 469 0.16282 GALAXY 64 0 - 306 51690 470 0.13072 GALAXY 64 0 - 306 51690 471 0.13063 GALAXY 64 0 - 306 51690 472 0.13174 GALAXY 64 0 - 306 51690 473 0.05502 GALAXY 64 0 - 306 51690 474 0.05608 GALAXY 64 0 - 306 51690 475 0.05383 GALAXY 64 0 - 306 51690 476 0.07921 GALAXY 64 0 - 306 51690 477 0.03528 GALAXY 64 0 - 306 51690 478 1.07730 QSO 35127296 0 - 306 51690 479 0.08777 GALAXY 64 0 - 306 51690 480 0.13076 GALAXY 96 0 - 306 51690 481 0.13018 GALAXY 64 0 - 306 51690 482 1.94747 QSO 1048580 0 - 306 51690 483 0.09530 GALAXY 64 0 - 306 51690 484 0.00012 STAR 64 0 - 306 51690 485 0.05472 GALAXY 96 0 - 306 51690 486 0.05276 GALAXY 96 0 - 306 51690 487 0.03522 GALAXY 64 0 - 306 51690 488 0.03476 GALAXY 64 0 - 306 51690 489 0.13102 GALAXY 64 0 - 306 51690 490 0.12106 GALAXY 96 0 - 306 51690 491 0.29000 GALAXY 32 0 - 306 51690 492 0.13657 GALAXY 64 0 - 306 51690 493 0.05569 GALAXY 64 0 - 306 51690 494 0.09949 GALAXY 64 0 - 306 51690 495 0.00029 STAR 9437188 0 - 306 51690 496 0.09384 GALAXY 64 0 - 306 51690 497 0.00000 UNKNOWN 0 16 - 306 51690 498 0.13055 GALAXY 64 0 - 306 51690 499 0.40524 GALAXY 32 0 - 306 51690 500 0.00010 STAR 0 2 - 306 51690 501 0.44638 GALAXY 67108896 0 - 306 51690 502 0.13035 GALAXY 64 0 - 306 51690 503 0.05493 GALAXY 4 0 - 306 51690 504 0.03430 GALAXY 96 0 - 306 51690 505 0.00554 GALAXY 64 0 - 306 51690 506 0.12197 GALAXY 64 0 - 306 51690 507 0.15710 GALAXY 4 0 - 306 51690 508 0.09309 GALAXY 64 0 - 306 51690 509 0.02612 GALAXY 64 0 - 306 51690 510 0.14854 GALAXY 64 0 - 306 51690 511 0.03118 GALAXY 64 0 - 306 51690 512 0.00000 UNKNOWN 0 16 - 306 51690 513 0.00044 STAR 1056772 0 - 306 51690 514 0.07212 GALAXY 64 0 - 306 51690 515 0.00012 STAR 1 0 - 306 51690 516 0.47415 GALAXY 67108896 0 - 306 51690 517 0.12836 GALAXY 64 0 - 306 51690 518 0.00008 STAR 16777216 0 - 306 51690 519 1.71572 QSO 1 0 - 306 51690 520 0.03531 GALAXY 64 0 - 306 51690 521 0.11971 GALAXY 64 0 - 306 51690 522 0.06864 GALAXY 64 0 - 306 51690 523 0.12057 GALAXY 64 0 - 306 51690 524 2.75725 QSO 1 0 - 306 51690 525 0.00000 UNKNOWN 0 16 - 306 51690 526 0.12668 GALAXY 64 0 - 306 51690 527 0.15046 GALAXY 64 0 - 306 51690 528 0.10891 GALAXY 64 0 - 306 51690 529 0.13788 GALAXY 64 0 - 306 51690 530 0.11464 GALAXY 64 0 - 306 51690 531 1.17586 QSO 4 0 - 306 51690 532 0.07818 GALAXY 64 0 - 306 51690 533 0.07874 GALAXY 64 0 - 306 51690 534 0.15624 GALAXY 64 0 - 306 51690 535 0.03432 GALAXY 96 0 - 306 51690 536 0.15098 GALAXY 64 0 - 306 51690 537 0.12445 GALAXY 96 0 - 306 51690 538 0.13700 GALAXY 64 0 - 306 51690 539 0.00025 STAR 2097168 0 - 306 51690 540 0.17557 GALAXY 64 0 - 306 51690 541 0.43164 GALAXY 32 0 - 306 51690 542 0.12505 GALAXY 64 0 - 306 51690 543 0.12597 GALAXY 64 0 - 306 51690 544 0.45352 GALAXY 16777216 0 - 306 51690 545 0.07837 GALAXY 64 0 - 306 51690 546 0.07894 GALAXY 64 0 - 306 51690 547 0.45648 GALAXY 67108896 0 - 306 51690 548 0.15518 GALAXY 64 0 - 306 51690 549 -0.00000 STAR 4 0 - 306 51690 550 0.00003 STAR 0 34 - 306 51690 551 0.07967 GALAXY 64 0 - 306 51690 552 0.11957 GALAXY 64 0 - 306 51690 553 0.02894 GALAXY 64 0 - 306 51690 554 0.11873 GALAXY 64 0 - 306 51690 555 0.00000 UNKNOWN 0 16 - 306 51690 556 0.43295 GALAXY 32 0 - 306 51690 557 0.07840 GALAXY 96 0 - 306 51690 558 2.73670 QSO 34611201 0 - 306 51690 559 0.12854 GALAXY 64 0 - 306 51690 560 0.05252 GALAXY 64 0 - 306 51690 561 0.00000 UNKNOWN 0 16 - 306 51690 562 0.34026 GALAXY 32 0 - 306 51690 563 0.07004 GALAXY 64 0 - 306 51690 564 0.11936 GALAXY 96 0 - 306 51690 565 0.11467 GALAXY 64 0 - 306 51690 566 0.13766 GALAXY 64 0 - 306 51690 567 0.09376 GALAXY 64 0 - 306 51690 568 0.07900 GALAXY 96 0 - 306 51690 569 0.03045 GALAXY 64 0 - 306 51690 570 0.05063 GALAXY 4 0 - 306 51690 571 0.11984 GALAXY 96 0 - 306 51690 572 0.12841 GALAXY 64 0 - 306 51690 573 0.11986 GALAXY 64 0 - 306 51690 574 0.09410 GALAXY 64 0 - 306 51690 575 0.11568 GALAXY 64 0 - 306 51690 576 0.11606 GALAXY 64 0 - 306 51690 577 0.13297 GALAXY 64 0 - 306 51690 578 0.12767 GALAXY 64 0 - 306 51690 579 0.50145 GALAXY 67108896 0 - 306 51690 580 0.11555 GALAXY 64 0 - 306 51690 581 0.03065 GALAXY 96 0 - 306 51690 582 0.03009 GALAXY 64 0 - 306 51690 583 0.27968 GALAXY 96 0 - 306 51690 584 0.22253 GALAXY 96 0 - 306 51690 585 0.03073 GALAXY 64 0 - 306 51690 586 0.11863 GALAXY 64 0 - 306 51690 587 0.07859 GALAXY 64 0 - 306 51690 588 0.11747 GALAXY 33554496 0 - 306 51690 589 0.03534 GALAXY 64 0 - 306 51690 590 -0.00013 STAR 2097168 0 - 306 51690 591 0.13694 GALAXY 64 0 - 306 51690 592 0.03476 GALAXY 64 0 - 306 51690 593 0.00000 UNKNOWN 0 16 - 306 51690 594 0.12082 GALAXY 64 0 - 306 51690 595 -0.00006 STAR 0 32 - 306 51690 596 0.12798 GALAXY 64 0 - 306 51690 597 0.47349 GALAXY 67108896 0 - 306 51690 598 0.05655 GALAXY 64 0 - 306 51690 599 0.02678 GALAXY 64 0 - 306 51690 600 0.12180 GALAXY 64 0 - 306 51690 601 2.19762 QSO 1048580 0 - 306 51690 602 0.07809 GALAXY 96 0 - 306 51690 603 0.12490 GALAXY 64 0 - 306 51690 604 0.00034 STAR 4 0 - 306 51690 605 0.12504 GALAXY 64 0 - 306 51690 606 0.13755 GALAXY 64 0 - 306 51690 607 0.11877 GALAXY 64 0 - 306 51690 608 0.07820 GALAXY 64 0 - 306 51690 609 0.00000 UNKNOWN 0 16 - 306 51690 610 0.12652 GALAXY 64 0 - 306 51690 611 0.12851 GALAXY 64 0 - 306 51690 612 0.03018 GALAXY 64 0 - 306 51690 613 0.13769 GALAXY 64 0 - 306 51690 614 0.12844 GALAXY 64 0 - 306 51690 615 0.11868 GALAXY 64 0 - 306 51690 616 0.00006 STAR 0 34 - 306 51690 617 0.13617 GALAXY 64 0 - 306 51690 618 0.12890 GALAXY 64 0 - 306 51690 619 0.12624 GALAXY 64 0 - 306 51690 620 0.12062 GALAXY 64 0 - 306 51690 621 0.13689 GALAXY 96 0 - 306 51690 622 0.02970 GALAXY 64 0 - 306 51690 623 0.02943 GALAXY 96 0 - 306 51690 624 0.14985 GALAXY 64 0 - 306 51690 625 0.10546 GALAXY 64 0 - 306 51690 626 0.10566 GALAXY 96 0 - 306 51690 627 0.14038 GALAXY 7172 0 - 306 51690 628 1.26687 QSO 4 0 - 306 51690 629 1.86939 QSO 1048580 0 - 306 51690 630 0.21038 GALAXY 64 0 - 306 51690 631 0.13700 GALAXY 64 0 - 306 51690 632 0.00022 STAR 0 2 - 306 51690 633 0.07859 GALAXY 64 0 - 306 51690 634 0.10845 GALAXY 64 0 - 306 51690 635 0.10884 GALAXY 64 0 - 306 51690 636 0.00006 STAR 0 2 - 306 51690 637 0.00025 STAR 32768 0 - 306 51690 638 0.12372 GALAXY 64 0 - 306 51690 639 0.00000 UNKNOWN 0 16 - 306 51690 640 0.05607 GALAXY 96 0 - 307 51663 1 0.13822 QSO 64 0 - 307 51663 2 2.08188 QSO 34603008 0 - 307 51663 3 0.14468 GALAXY 64 0 - 307 51663 4 0.14519 GALAXY 64 0 - 307 51663 5 0.14381 GALAXY 64 0 - 307 51663 6 0.14422 GALAXY 64 0 - 307 51663 7 0.00000 UNKNOWN 0 16 - 307 51663 8 0.00035 STAR 42991616 512 - 307 51663 9 0.00037 STAR 1 0 - 307 51663 10 0.14307 GALAXY 64 0 - 307 51663 11 2.21717 QSO 4 0 - 307 51663 12 0.14236 GALAXY 64 0 - 307 51663 13 0.10918 GALAXY 64 0 - 307 51663 14 0.14908 GALAXY 64 0 - 307 51663 15 0.10849 GALAXY 64 0 - 307 51663 16 0.14674 GALAXY 64 0 - 307 51663 17 0.14173 GALAXY 64 0 - 307 51663 18 0.14878 GALAXY 64 0 - 307 51663 19 0.08030 GALAXY 64 0 - 307 51663 20 -0.00027 STAR 0 96 - 307 51663 21 0.37009 GALAXY 32 0 - 307 51663 22 0.99563 QSO 64 0 - 307 51663 23 -0.00003 STAR 0 34 - 307 51663 24 0.08009 GALAXY 64 0 - 307 51663 25 1.81508 QSO 4 0 - 307 51663 26 0.00000 UNKNOWN 0 16 - 307 51663 27 0.29093 GALAXY 32 0 - 307 51663 28 0.14844 GALAXY 64 0 - 307 51663 29 0.15239 GALAXY 64 0 - 307 51663 30 0.15069 GALAXY 64 0 - 307 51663 31 0.15025 GALAXY 4 0 - 307 51663 32 0.19907 GALAXY 64 0 - 307 51663 33 0.00577 GALAXY 64 0 - 307 51663 34 0.00006 STAR 0 34 - 307 51663 35 0.17437 GALAXY 64 0 - 307 51663 36 0.07331 GALAXY 64 0 - 307 51663 37 0.14125 GALAXY 64 0 - 307 51663 38 0.24023 GALAXY 96 0 - 307 51663 39 0.29154 GALAXY 32 0 - 307 51663 40 0.05794 GALAXY 64 0 - 307 51663 41 0.05715 GALAXY 64 0 - 307 51663 42 0.15301 GALAXY 64 0 - 307 51663 43 0.18166 GALAXY 64 0 - 307 51663 44 0.32302 GALAXY 32 0 - 307 51663 45 0.13270 GALAXY 64 0 - 307 51663 46 0.13279 GALAXY 64 0 - 307 51663 47 0.13900 GALAXY 64 0 - 307 51663 48 0.00023 STAR 42991616 0 - 307 51663 49 0.14376 GALAXY 64 0 - 307 51663 50 0.32462 GALAXY 32 0 - 307 51663 51 0.13287 GALAXY 64 0 - 307 51663 52 -0.00082 STAR 9445376 0 - 307 51663 53 0.00040 STAR 1056768 0 - 307 51663 54 0.07225 GALAXY 64 0 - 307 51663 55 0.00000 UNKNOWN 0 16 - 307 51663 56 0.15069 GALAXY 64 0 - 307 51663 57 0.18363 GALAXY 64 0 - 307 51663 58 0.32353 GALAXY 32 0 - 307 51663 59 0.32342 GALAXY 32 0 - 307 51663 60 0.08045 GALAXY 64 0 - 307 51663 61 0.17991 GALAXY 64 0 - 307 51663 62 0.14877 GALAXY 96 0 - 307 51663 63 0.07195 GALAXY 64 0 - 307 51663 64 0.14929 GALAXY 64 0 - 307 51663 65 0.37216 GALAXY 32 0 - 307 51663 66 0.00000 UNKNOWN 0 16 - 307 51663 67 0.07997 GALAXY 64 0 - 307 51663 68 0.00589 GALAXY 96 0 - 307 51663 69 0.11531 GALAXY 64 0 - 307 51663 70 0.14940 GALAXY 64 0 - 307 51663 71 0.14928 GALAXY 64 0 - 307 51663 72 0.07993 GALAXY 64 0 - 307 51663 73 0.58415 GALAXY 1048580 0 - 307 51663 74 0.19387 GALAXY 64 0 - 307 51663 75 0.28756 GALAXY 32 0 - 307 51663 76 0.14942 GALAXY 64 0 - 307 51663 77 0.20129 GALAXY 64 0 - 307 51663 78 0.08008 GALAXY 64 0 - 307 51663 79 0.14755 GALAXY 64 0 - 307 51663 80 0.34646 GALAXY 32 0 - 307 51663 81 0.00025 STAR 34611200 0 - 307 51663 82 0.13769 GALAXY 64 0 - 307 51663 83 0.00000 UNKNOWN 0 16 - 307 51663 84 0.36685 GALAXY 32 0 - 307 51663 85 0.00049 STAR 34611200 0 - 307 51663 86 0.11539 GALAXY 64 0 - 307 51663 87 0.17670 GALAXY 64 0 - 307 51663 88 0.32290 GALAXY 32 0 - 307 51663 89 1.82111 QSO 4 0 - 307 51663 90 0.00029 STAR 4 0 - 307 51663 91 0.59033 QSO 1048580 0 - 307 51663 92 0.11604 GALAXY 64 0 - 307 51663 93 0.10730 GALAXY 64 0 - 307 51663 94 0.11603 GALAXY 64 0 - 307 51663 95 0.11617 GALAXY 64 0 - 307 51663 96 0.07211 GALAXY 96 0 - 307 51663 97 0.17896 GALAXY 64 0 - 307 51663 98 0.07236 GALAXY 64 0 - 307 51663 99 0.00609 GALAXY 64 0 - 307 51663 100 0.15178 GALAXY 64 0 - 307 51663 101 0.11281 GALAXY 64 0 - 307 51663 102 0.08082 GALAXY 64 0 - 307 51663 103 0.11553 GALAXY 64 0 - 307 51663 104 0.00600 GALAXY 64 0 - 307 51663 105 0.08152 GALAXY 64 0 - 307 51663 106 0.14925 GALAXY 64 0 - 307 51663 107 0.13807 GALAXY 64 0 - 307 51663 108 0.00000 UNKNOWN 0 16 - 307 51663 109 0.14039 GALAXY 4 0 - 307 51663 110 0.00000 MISSING 0 0 - 307 51663 111 0.00685 GALAXY 64 0 - 307 51663 112 0.37135 GALAXY 32 0 - 307 51663 113 0.00061 STAR 0 2 - 307 51663 114 -0.00017 STAR 1056772 0 - 307 51663 115 0.14049 GALAXY 64 0 - 307 51663 116 1.40881 QSO 1048580 0 - 307 51663 117 0.09383 GALAXY 64 0 - 307 51663 118 0.10395 GALAXY 64 0 - 307 51663 119 0.10873 GALAXY 64 0 - 307 51663 120 0.14936 GALAXY 64 0 - 307 51663 121 0.13832 GALAXY 64 0 - 307 51663 122 0.21774 GALAXY 96 0 - 307 51663 123 0.00045 STAR 8192 0 - 307 51663 124 0.13837 GALAXY 64 0 - 307 51663 125 0.14007 GALAXY 64 0 - 307 51663 126 0.21687 GALAXY 96 0 - 307 51663 127 0.07226 GALAXY 64 0 - 307 51663 128 0.57099 QSO 4 0 - 307 51663 129 0.00019 STAR 42991616 0 - 307 51663 130 0.07236 GALAXY 33554496 0 - 307 51663 131 0.14468 GALAXY 64 0 - 307 51663 132 0.00000 UNKNOWN 0 16 - 307 51663 133 0.33040 GALAXY 32 0 - 307 51663 134 0.19403 GALAXY 64 0 - 307 51663 135 0.18052 GALAXY 64 0 - 307 51663 136 0.21745 GALAXY 96 0 - 307 51663 137 0.13897 GALAXY 96 0 - 307 51663 138 0.10731 GALAXY 64 0 - 307 51663 139 0.13777 GALAXY 64 0 - 307 51663 140 0.07220 GALAXY 64 0 - 307 51663 141 0.21402 GALAXY 68 0 - 307 51663 142 0.00032 STAR 1056768 0 - 307 51663 143 0.29774 GALAXY 32 0 - 307 51663 144 0.14885 GALAXY 96 0 - 307 51663 145 0.13870 GALAXY 64 0 - 307 51663 146 0.00000 UNKNOWN 0 16 - 307 51663 147 0.13737 GALAXY 64 0 - 307 51663 148 0.08411 GALAXY 64 0 - 307 51663 149 -0.00007 STAR 8196 0 - 307 51663 150 0.13786 GALAXY 64 0 - 307 51663 151 0.00032 STAR 4 0 - 307 51663 152 0.35831 GALAXY 32 0 - 307 51663 153 0.10514 GALAXY 64 0 - 307 51663 154 0.18107 GALAXY 64 0 - 307 51663 155 0.11527 GALAXY 96 0 - 307 51663 156 0.35119 QSO 4 0 - 307 51663 157 0.00636 GALAXY 64 0 - 307 51663 158 -0.00129 STAR 42991616 0 - 307 51663 159 0.18248 GALAXY 64 0 - 307 51663 160 0.30266 GALAXY 32 0 - 307 51663 161 0.03359 GALAXY 68 0 - 307 51663 162 0.14926 GALAXY 64 0 - 307 51663 163 0.00029 STAR 34611200 0 - 307 51663 164 0.13975 GALAXY 64 0 - 307 51663 165 0.00000 UNKNOWN 0 16 - 307 51663 166 0.10400 GALAXY 5184 0 - 307 51663 167 0.10930 GALAXY 64 0 - 307 51663 168 0.18015 GALAXY 64 0 - 307 51663 169 0.10530 GALAXY 64 0 - 307 51663 170 0.03707 GALAXY 96 0 - 307 51663 171 0.10992 GALAXY 96 0 - 307 51663 172 0.12918 GALAXY 64 0 - 307 51663 173 0.00000 UNKNOWN 64 0 - 307 51663 174 0.07340 GALAXY 64 0 - 307 51663 175 1.83595 QSO 42991616 0 - 307 51663 176 0.09403 GALAXY 4 0 - 307 51663 177 0.24723 GALAXY 96 0 - 307 51663 178 0.14064 GALAXY 64 0 - 307 51663 179 0.12918 GALAXY 64 0 - 307 51663 180 0.12178 GALAXY 64 0 - 307 51663 181 -0.00000 STAR 4096 0 - 307 51663 182 0.08145 GALAXY 64 0 - 307 51663 183 0.17959 GALAXY 64 0 - 307 51663 184 0.14110 GALAXY 96 0 - 307 51663 185 0.00650 GALAXY 64 0 - 307 51663 186 0.13657 GALAXY 64 0 - 307 51663 187 0.13392 GALAXY 64 0 - 307 51663 188 0.18029 GALAXY 96 0 - 307 51663 189 0.14042 GALAXY 64 0 - 307 51663 190 0.05712 GALAXY 64 0 - 307 51663 191 0.13505 GALAXY 64 0 - 307 51663 192 0.17970 GALAXY 96 0 - 307 51663 193 0.13528 GALAXY 64 0 - 307 51663 194 0.13701 GALAXY 96 0 - 307 51663 195 0.13814 GALAXY 96 0 - 307 51663 196 0.11596 GALAXY 64 0 - 307 51663 197 0.14487 GALAXY 64 0 - 307 51663 198 0.13765 GALAXY 96 0 - 307 51663 199 0.13832 GALAXY 64 0 - 307 51663 200 0.00000 UNKNOWN 0 16 - 307 51663 201 0.28495 GALAXY 32 0 - 307 51663 202 0.15131 GALAXY 64 0 - 307 51663 203 0.35878 GALAXY 32 0 - 307 51663 204 1.80290 QSO 33554433 0 - 307 51663 205 0.10583 GALAXY 64 0 - 307 51663 206 0.13978 GALAXY 64 0 - 307 51663 207 0.01422 UNKNOWN 64 0 - 307 51663 208 0.05085 GALAXY 64 0 - 307 51663 209 0.14904 GALAXY 64 0 - 307 51663 210 0.00017 STAR 524288 0 - 307 51663 211 0.29182 GALAXY 32 0 - 307 51663 212 0.21083 GALAXY 4 0 - 307 51663 213 0.00012 STAR 0 34 - 307 51663 214 0.14835 GALAXY 96 0 - 307 51663 215 0.00000 UNKNOWN 0 16 - 307 51663 216 0.12134 GALAXY 64 0 - 307 51663 217 0.00021 STAR 8196 0 - 307 51663 218 -0.00035 STAR 8192 0 - 307 51663 219 0.28566 GALAXY 4 0 - 307 51663 220 0.13963 GALAXY 64 0 - 307 51663 221 0.33742 GALAXY 32 0 - 307 51663 222 0.00000 UNKNOWN 0 16 - 307 51663 223 1.76820 QSO 34603008 0 - 307 51663 224 0.18072 GALAXY 64 0 - 307 51663 225 -0.00003 STAR 1 0 - 307 51663 226 0.33519 GALAXY 32 0 - 307 51663 227 0.17863 GALAXY 96 0 - 307 51663 228 -0.00038 STAR 1048580 0 - 307 51663 229 0.33636 GALAXY 32 0 - 307 51663 230 0.13824 GALAXY 2097216 0 - 307 51663 231 0.13924 GALAXY 64 0 - 307 51663 232 0.08106 GALAXY 64 0 - 307 51663 233 0.33682 GALAXY 32 0 - 307 51663 234 0.14051 GALAXY 64 0 - 307 51663 235 0.13789 GALAXY 64 0 - 307 51663 236 0.13543 GALAXY 96 0 - 307 51663 237 0.10654 GALAXY 64 0 - 307 51663 238 0.05698 GALAXY 64 0 - 307 51663 239 0.14134 GALAXY 64 0 - 307 51663 240 0.32521 GALAXY 32 0 - 307 51663 241 0.00000 UNKNOWN 0 16 - 307 51663 242 0.21638 GALAXY 64 0 - 307 51663 243 1.67558 QSO 1048580 0 - 307 51663 244 0.10630 GALAXY 64 0 - 307 51663 245 0.10631 GALAXY 64 0 - 307 51663 246 0.10639 GALAXY 64 0 - 307 51663 247 0.00044 STAR 8192 0 - 307 51663 248 0.10663 GALAXY 64 0 - 307 51663 249 0.00026 STAR 5 0 - 307 51663 250 0.10618 GALAXY 96 0 - 307 51663 251 0.13873 GALAXY 64 0 - 307 51663 252 0.15136 GALAXY 1 0 - 307 51663 253 -0.00012 STAR 8192 0 - 307 51663 254 0.07232 GALAXY 64 0 - 307 51663 255 0.21407 GALAXY 64 0 - 307 51663 256 0.10626 GALAXY 64 0 - 307 51663 257 0.00014 STAR 33554433 0 - 307 51663 258 1.27337 QSO 4 0 - 307 51663 259 0.10534 GALAXY 64 0 - 307 51663 260 0.00033 STAR 1056772 0 - 307 51663 261 0.10713 GALAXY 96 0 - 307 51663 262 -0.00034 STAR 1056768 0 - 307 51663 263 0.14192 GALAXY 96 0 - 307 51663 264 0.34089 GALAXY 32 0 - 307 51663 265 0.10587 GALAXY 64 0 - 307 51663 266 0.08417 GALAXY 64 0 - 307 51663 267 -0.00013 STAR 1056768 0 - 307 51663 268 0.05709 GALAXY 64 0 - 307 51663 269 0.10479 GALAXY 64 0 - 307 51663 270 0.15199 GALAXY 64 0 - 307 51663 271 0.10549 GALAXY 64 0 - 307 51663 272 0.37005 GALAXY 32 0 - 307 51663 273 1.51341 QSO 4 0 - 307 51663 274 0.00013 STAR 8192 0 - 307 51663 275 0.13966 GALAXY 64 0 - 307 51663 276 0.00035 STAR 32 0 - 307 51663 277 0.13721 GALAXY 64 0 - 307 51663 278 0.05613 GALAXY 64 0 - 307 51663 279 0.00000 UNKNOWN 0 16 - 307 51663 280 0.13238 GALAXY 64 0 - 307 51663 281 0.28629 GALAXY 96 0 - 307 51663 282 0.19464 GALAXY 64 0 - 307 51663 283 0.00016 STAR 1056768 0 - 307 51663 284 -0.00036 STAR 8192 0 - 307 51663 285 0.00000 UNKNOWN 0 16 - 307 51663 286 0.25715 GALAXY 32 0 - 307 51663 287 1.52647 QSO 1048580 0 - 307 51663 288 0.10523 GALAXY 64 0 - 307 51663 289 0.12219 GALAXY 64 0 - 307 51663 290 0.00020 STAR 4194304 0 - 307 51663 291 0.34775 GALAXY 32 0 - 307 51663 292 0.08991 GALAXY 64 0 - 307 51663 293 0.28359 GALAXY 32 0 - 307 51663 294 0.10653 GALAXY 64 0 - 307 51663 295 0.13793 GALAXY 64 0 - 307 51663 296 0.10629 GALAXY 64 0 - 307 51663 297 0.25568 GALAXY 32 0 - 307 51663 298 0.10572 GALAXY 64 0 - 307 51663 299 0.18114 GALAXY 64 0 - 307 51663 300 0.21595 GALAXY 96 0 - 307 51663 301 0.12287 GALAXY 64 0 - 307 51663 302 0.13737 GALAXY 64 0 - 307 51663 303 0.22210 GALAXY 32 0 - 307 51663 304 -0.00009 STAR 8192 0 - 307 51663 305 0.00002 STAR 1 0 - 307 51663 306 0.25502 GALAXY 96 0 - 307 51663 307 0.29061 GALAXY 4 0 - 307 51663 308 1.37786 QSO 1048580 0 - 307 51663 309 0.12367 GALAXY 64 0 - 307 51663 310 0.00025 STAR 8196 0 - 307 51663 311 0.22066 GALAXY 96 0 - 307 51663 312 0.10610 GALAXY 64 0 - 307 51663 313 0.00074 STAR 8192 0 - 307 51663 314 0.13017 GALAXY 64 0 - 307 51663 315 0.21985 GALAXY 96 0 - 307 51663 316 0.00007 UNKNOWN 1056772 0 - 307 51663 317 -0.00004 STAR 1056768 0 - 307 51663 318 0.00028 STAR 34611200 0 - 307 51663 319 2.23946 QSO 3145748 0 - 307 51663 320 0.00000 UNKNOWN 0 16 - 307 51663 321 0.11869 GALAXY 64 0 - 307 51663 322 0.33982 GALAXY 32 0 - 307 51663 323 0.13773 GALAXY 64 0 - 307 51663 324 0.13831 GALAXY 64 0 - 307 51663 325 0.11131 GALAXY 64 0 - 307 51663 326 0.10916 GALAXY 64 0 - 307 51663 327 0.35414 GALAXY 32 0 - 307 51663 328 0.12510 GALAXY 64 0 - 307 51663 329 0.01316 UNKNOWN 42991616 0 - 307 51663 330 0.11846 GALAXY 64 0 - 307 51663 331 0.00000 UNKNOWN 0 16 - 307 51663 332 0.00049 STAR 1056768 0 - 307 51663 333 0.12842 GALAXY 96 0 - 307 51663 334 0.48114 GALAXY 67108896 0 - 307 51663 335 0.42829 GALAXY 32 0 - 307 51663 336 -0.00014 STAR 1056768 0 - 307 51663 337 0.12686 GALAXY 64 0 - 307 51663 338 0.01421 GALAXY 96 0 - 307 51663 339 0.43302 GALAXY 67108896 0 - 307 51663 340 0.12909 GALAXY 64 0 - 307 51663 341 0.12933 GALAXY 64 0 - 307 51663 342 0.00000 UNKNOWN 0 16 - 307 51663 343 0.00024 STAR 1056768 0 - 307 51663 344 0.03176 GALAXY 64 0 - 307 51663 345 0.43150 GALAXY 32 0 - 307 51663 346 0.16184 GALAXY 64 0 - 307 51663 347 0.03148 GALAXY 64 0 - 307 51663 348 0.07867 GALAXY 64 0 - 307 51663 349 0.07958 GALAXY 64 0 - 307 51663 350 0.03028 GALAXY 67108896 0 - 307 51663 351 -0.00005 STAR 8192 0 - 307 51663 352 0.00000 MISSING 0 0 - 307 51663 353 0.12026 GALAXY 64 0 - 307 51663 354 0.00016 STAR 8192 0 - 307 51663 355 0.00027 STAR 0 2 - 307 51663 356 -0.00017 STAR 8192 0 - 307 51663 357 0.15513 GALAXY 64 0 - 307 51663 358 0.13352 GALAXY 64 0 - 307 51663 359 0.97979 QSO 1048580 0 - 307 51663 360 0.16162 GALAXY 64 0 - 307 51663 361 0.12401 GALAXY 64 0 - 307 51663 362 0.07812 GALAXY 64 0 - 307 51663 363 0.00000 UNKNOWN 0 16 - 307 51663 364 0.49037 GALAXY 67108896 0 - 307 51663 365 0.12848 GALAXY 64 0 - 307 51663 366 0.00080 STAR 8192 0 - 307 51663 367 -0.00003 STAR 0 32 - 307 51663 368 0.12597 QSO 1048580 0 - 307 51663 369 0.13758 GALAXY 96 0 - 307 51663 370 0.22269 GALAXY 96 0 - 307 51663 371 0.00002 STAR 8192 0 - 307 51663 372 0.38249 GALAXY 32 0 - 307 51663 373 0.10813 GALAXY 64 0 - 307 51663 374 0.15805 GALAXY 64 0 - 307 51663 375 0.13726 GALAXY 64 0 - 307 51663 376 0.05635 GALAXY 64 0 - 307 51663 377 0.07254 GALAXY 64 0 - 307 51663 378 2.16351 QSO 33554433 0 - 307 51663 379 0.12898 GALAXY 64 0 - 307 51663 380 0.12817 GALAXY 64 0 - 307 51663 381 0.10806 GALAXY 64 0 - 307 51663 382 0.00010 STAR 0 2 - 307 51663 383 0.17754 GALAXY 64 0 - 307 51663 384 0.16196 GALAXY 64 0 - 307 51663 385 0.05721 GALAXY 64 0 - 307 51663 386 0.00024 UNKNOWN 1 0 - 307 51663 387 0.07216 GALAXY 64 0 - 307 51663 388 0.21641 GALAXY 96 0 - 307 51663 389 0.00012 STAR 64 0 - 307 51663 390 0.10809 GALAXY 64 0 - 307 51663 391 0.00017 STAR 0 32 - 307 51663 392 1.30751 QSO 1048580 0 - 307 51663 393 1.47929 QSO 64 0 - 307 51663 394 0.00000 UNKNOWN 0 16 - 307 51663 395 0.12255 GALAXY 64 0 - 307 51663 396 0.27979 GALAXY 96 0 - 307 51663 397 0.00008 STAR 1 0 - 307 51663 398 0.43197 GALAXY 16777216 0 - 307 51663 399 0.17836 GALAXY 64 0 - 307 51663 400 0.08629 GALAXY 4 0 - 307 51663 401 0.00025 STAR 34603008 0 - 307 51663 402 0.03072 GALAXY 96 0 - 307 51663 403 0.12336 GALAXY 64 0 - 307 51663 404 0.08326 GALAXY 64 0 - 307 51663 405 0.07883 GALAXY 64 0 - 307 51663 406 0.00073 STAR 42991616 0 - 307 51663 407 0.00000 UNKNOWN 0 16 - 307 51663 408 0.07899 GALAXY 64 0 - 307 51663 409 0.07786 GALAXY 64 0 - 307 51663 410 0.34170 GALAXY 32 0 - 307 51663 411 0.07804 GALAXY 64 0 - 307 51663 412 0.07817 GALAXY 64 0 - 307 51663 413 0.07874 GALAXY 64 0 - 307 51663 414 0.13082 GALAXY 64 0 - 307 51663 415 0.40061 GALAXY 32 0 - 307 51663 416 0.12329 GALAXY 64 0 - 307 51663 417 0.12940 GALAXY 64 0 - 307 51663 418 0.41497 GALAXY 32 0 - 307 51663 419 0.00005 STAR 5 0 - 307 51663 420 0.03050 GALAXY 64 0 - 307 51663 421 0.13870 GALAXY 64 0 - 307 51663 422 0.33780 GALAXY 32 0 - 307 51663 423 0.00020 STAR 33554433 0 - 307 51663 424 0.00000 UNKNOWN 0 16 - 307 51663 425 0.07243 GALAXY 96 0 - 307 51663 426 0.10978 GALAXY 64 0 - 307 51663 427 0.10940 GALAXY 64 0 - 307 51663 428 0.28298 GALAXY 32 0 - 307 51663 429 0.00016 STAR 9437184 512 - 307 51663 430 0.32761 QSO 42991616 0 - 307 51663 431 0.08172 GALAXY 64 0 - 307 51663 432 0.13965 GALAXY 64 0 - 307 51663 433 0.10961 GALAXY 64 0 - 307 51663 434 0.02991 GALAXY 64 0 - 307 51663 435 0.05561 GALAXY 64 0 - 307 51663 436 0.58215 QSO 34603008 0 - 307 51663 437 0.03474 GALAXY 64 0 - 307 51663 438 0.19734 GALAXY 4 0 - 307 51663 439 -0.00007 STAR 4096 0 - 307 51663 440 0.10481 GALAXY 64 0 - 307 51663 441 0.12905 GALAXY 64 0 - 307 51663 442 0.13477 GALAXY 64 0 - 307 51663 443 0.15799 UNKNOWN 1048580 0 - 307 51663 444 0.15007 GALAXY 64 0 - 307 51663 445 1.84776 QSO 1048580 0 - 307 51663 446 0.22876 GALAXY 64 0 - 307 51663 447 0.12331 GALAXY 64 0 - 307 51663 448 0.03081 GALAXY 64 0 - 307 51663 449 0.27995 GALAXY 64 0 - 307 51663 450 0.25989 GALAXY 32 0 - 307 51663 451 0.19534 GALAXY 4 0 - 307 51663 452 0.00009 STAR 9437184 0 - 307 51663 453 0.31192 GALAXY 32 0 - 307 51663 454 0.31228 GALAXY 32 0 - 307 51663 455 0.08283 GALAXY 64 0 - 307 51663 456 0.08291 GALAXY 64 0 - 307 51663 457 0.12301 GALAXY 64 0 - 307 51663 458 0.12743 GALAXY 64 0 - 307 51663 459 0.00030 STAR 0 512 - 307 51663 460 0.00000 UNKNOWN 0 16 - 307 51663 461 0.00015 STAR 0 2 - 307 51663 462 0.00023 STAR 0 34 - 307 51663 463 0.03341 GALAXY 64 0 - 307 51663 464 1.96397 QSO 1048580 0 - 307 51663 465 0.00064 STAR 9445376 0 - 307 51663 466 0.30255 GALAXY 2097152 0 - 307 51663 467 1.26112 QSO 1048580 0 - 307 51663 468 -0.00022 STAR 64 0 - 307 51663 469 0.13025 GALAXY 4 0 - 307 51663 470 0.12088 GALAXY 4194304 0 - 307 51663 471 0.08210 GALAXY 64 0 - 307 51663 472 0.13870 GALAXY 64 0 - 307 51663 473 -0.00033 STAR 42991616 512 - 307 51663 474 0.10611 GALAXY 64 0 - 307 51663 475 0.00000 MISSING 0 0 - 307 51663 476 0.21078 GALAXY 68 0 - 307 51663 477 0.13456 GALAXY 64 0 - 307 51663 478 1.58206 QSO 1048580 0 - 307 51663 479 0.00000 UNKNOWN 0 16 - 307 51663 480 0.00035 STAR 8196 0 - 307 51663 481 0.14117 GALAXY 64 0 - 307 51663 482 0.00000 UNKNOWN 0 16 - 307 51663 483 0.10540 GALAXY 64 0 - 307 51663 484 0.15000 GALAXY 64 0 - 307 51663 485 0.15036 GALAXY 96 0 - 307 51663 486 0.08243 GALAXY 64 0 - 307 51663 487 0.03337 GALAXY 64 0 - 307 51663 488 0.03380 GALAXY 64 0 - 307 51663 489 0.15133 GALAXY 64 0 - 307 51663 490 0.19554 GALAXY 64 0 - 307 51663 491 0.33954 QSO 2097152 0 - 307 51663 492 0.14992 GALAXY 64 0 - 307 51663 493 1.40565 QSO 4 0 - 307 51663 494 0.14745 GALAXY 64 0 - 307 51663 495 0.13347 GALAXY 64 0 - 307 51663 496 0.10524 GALAXY 64 0 - 307 51663 497 0.13327 GALAXY 64 0 - 307 51663 498 0.05158 GALAXY 64 0 - 307 51663 499 0.15034 GALAXY 64 0 - 307 51663 500 0.15019 GALAXY 64 0 - 307 51663 501 0.13785 GALAXY 64 0 - 307 51663 502 0.14996 GALAXY 64 0 - 307 51663 503 0.27986 GALAXY 96 0 - 307 51663 504 0.11470 GALAXY 64 0 - 307 51663 505 -0.00066 STAR 1056772 0 - 307 51663 506 0.11637 GALAXY 96 0 - 307 51663 507 0.19752 GALAXY 64 0 - 307 51663 508 0.11670 GALAXY 64 0 - 307 51663 509 0.08273 GALAXY 64 0 - 307 51663 510 0.00000 UNKNOWN 0 16 - 307 51663 511 1.50194 QSO 2097168 0 - 307 51663 512 0.25611 GALAXY 96 0 - 307 51663 513 0.13275 GALAXY 64 0 - 307 51663 514 0.30180 GALAXY 32 0 - 307 51663 515 0.00551 GALAXY 64 0 - 307 51663 516 0.16376 GALAXY 64 0 - 307 51663 517 0.14023 GALAXY 64 0 - 307 51663 518 0.20312 GALAXY 64 0 - 307 51663 519 0.16387 GALAXY 64 0 - 307 51663 520 -0.00012 STAR 1 0 - 307 51663 521 0.13462 GALAXY 64 0 - 307 51663 522 0.00000 UNKNOWN 0 16 - 307 51663 523 0.11589 GALAXY 64 0 - 307 51663 524 0.31492 GALAXY 32 0 - 307 51663 525 0.13272 GALAXY 64 0 - 307 51663 526 0.34288 GALAXY 32 0 - 307 51663 527 0.14778 GALAXY 64 0 - 307 51663 528 0.28001 GALAXY 32 0 - 307 51663 529 0.00056 STAR 8192 0 - 307 51663 530 0.00071 STAR 9445376 0 - 307 51663 531 0.34377 GALAXY 32 0 - 307 51663 532 0.08262 GALAXY 64 0 - 307 51663 533 0.25962 GALAXY 32 0 - 307 51663 534 0.27737 GALAXY 2097152 0 - 307 51663 535 0.08238 GALAXY 64 0 - 307 51663 536 0.03445 GALAXY 64 0 - 307 51663 537 0.00033 STAR 0 512 - 307 51663 538 0.25890 GALAXY 4 0 - 307 51663 539 0.08277 GALAXY 96 0 - 307 51663 540 0.31294 GALAXY 32 0 - 307 51663 541 0.03730 GALAXY 64 0 - 307 51663 542 0.16597 GALAXY 64 0 - 307 51663 543 0.14838 GALAXY 64 0 - 307 51663 544 0.05023 GALAXY 64 0 - 307 51663 545 0.48443 QSO 34603008 0 - 307 51663 546 0.00000 UNKNOWN 0 16 - 307 51663 547 0.00029 STAR 42991616 0 - 307 51663 548 0.11030 GALAXY 64 0 - 307 51663 549 0.56390 GALAXY 4 0 - 307 51663 550 0.10891 GALAXY 64 0 - 307 51663 551 0.16385 GALAXY 64 0 - 307 51663 552 0.17966 GALAXY 96 0 - 307 51663 553 0.00616 GALAXY 64 0 - 307 51663 554 0.64197 QSO 1 0 - 307 51663 555 0.40114 GALAXY 32 0 - 307 51663 556 0.00023 STAR 1048580 0 - 307 51663 557 0.08562 GALAXY 64 0 - 307 51663 558 0.10907 GALAXY 64 0 - 307 51663 559 0.34577 GALAXY 32 0 - 307 51663 560 0.00043 STAR 4194304 0 - 307 51663 561 0.00016 STAR 0 32 - 307 51663 562 0.00028 STAR 1048576 512 - 307 51663 563 0.00028 STAR 4194304 0 - 307 51663 564 0.00015 STAR 64 0 - 307 51663 565 0.07835 GALAXY 64 0 - 307 51663 566 0.13214 GALAXY 64 0 - 307 51663 567 0.13007 GALAXY 64 0 - 307 51663 568 0.00007 UNKNOWN 64 0 - 307 51663 569 0.07779 GALAXY 64 0 - 307 51663 570 0.34331 GALAXY 32 0 - 307 51663 571 0.00034 STAR 64 0 - 307 51663 572 0.15025 GALAXY 64 0 - 307 51663 573 0.11602 GALAXY 64 0 - 307 51663 574 0.25928 GALAXY 96 0 - 307 51663 575 2.13926 QSO 1048580 0 - 307 51663 576 0.11566 GALAXY 64 0 - 307 51663 577 0.03443 GALAXY 64 0 - 307 51663 578 0.08242 GALAXY 64 0 - 307 51663 579 0.11683 GALAXY 64 0 - 307 51663 580 0.00000 UNKNOWN 0 16 - 307 51663 581 0.14994 GALAXY 64 0 - 307 51663 582 0.10934 GALAXY 64 0 - 307 51663 583 0.17089 GALAXY 96 0 - 307 51663 584 0.00000 UNKNOWN 0 16 - 307 51663 585 0.10266 GALAXY 64 0 - 307 51663 586 0.00014 STAR 4 0 - 307 51663 587 0.10381 GALAXY 64 0 - 307 51663 588 1.57797 QSO 4 0 - 307 51663 589 0.17859 GALAXY 64 0 - 307 51663 590 0.10889 GALAXY 64 0 - 307 51663 591 0.10240 GALAXY 64 0 - 307 51663 592 0.17675 GALAXY 96 0 - 307 51663 593 0.10342 GALAXY 64 0 - 307 51663 594 0.00093 STAR 1056772 0 - 307 51663 595 0.00016 STAR 42991616 0 - 307 51663 596 0.24096 GALAXY 2097152 0 - 307 51663 597 0.32142 GALAXY 32 0 - 307 51663 598 0.10389 GALAXY 64 0 - 307 51663 599 0.17867 GALAXY 96 0 - 307 51663 600 0.00643 GALAXY 64 0 - 307 51663 601 0.62626 GALAXY 2097153 0 - 307 51663 602 0.03396 GALAXY 96 0 - 307 51663 603 0.04956 GALAXY 64 0 - 307 51663 604 0.00015 STAR 32 0 - 307 51663 605 0.00000 MISSING 0 0 - 307 51663 606 0.37337 GALAXY 32 0 - 307 51663 607 0.04969 GALAXY 96 0 - 307 51663 608 0.03365 GALAXY 96 0 - 307 51663 609 0.00000 UNKNOWN 0 16 - 307 51663 610 0.03341 GALAXY 96 0 - 307 51663 611 0.15027 GALAXY 64 0 - 307 51663 612 0.00020 STAR 34611200 0 - 307 51663 613 0.03355 GALAXY 64 0 - 307 51663 614 0.17667 GALAXY 64 0 - 307 51663 615 0.24266 GALAXY 4 0 - 307 51663 616 0.17995 GALAXY 64 0 - 307 51663 617 0.60367 QSO 4 0 - 307 51663 618 0.00004 STAR 0 2 - 307 51663 619 0.00128 STAR 4 0 - 307 51663 620 0.35897 GALAXY 32 0 - 307 51663 621 0.02855 GALAXY 64 0 - 307 51663 622 0.30537 GALAXY 32 0 - 307 51663 623 0.10324 GALAXY 64 0 - 307 51663 624 0.10126 GALAXY 64 0 - 307 51663 625 0.34437 GALAXY 32 0 - 307 51663 626 0.00022 STAR 0 2 - 307 51663 627 0.00022 STAR 0 2 - 307 51663 628 0.29487 GALAXY 32 0 - 307 51663 629 0.33052 GALAXY 32 0 - 307 51663 630 0.17811 GALAXY 64 0 - 307 51663 631 0.00010 STAR 1179652 512 - 307 51663 632 0.14884 GALAXY 64 0 - 307 51663 633 0.00011 STAR 0 2 - 307 51663 634 0.13866 GALAXY 64 0 - 307 51663 635 0.02913 GALAXY 96 0 - 307 51663 636 0.30347 GALAXY 32 0 - 307 51663 637 0.03397 GALAXY 64 0 - 307 51663 638 0.00000 UNKNOWN 0 16 - 307 51663 639 0.07338 GALAXY 64 0 - 307 51663 640 0.63071 QSO 4 0 - 308 51662 1 1.44499 QSO 64 0 - 308 51662 2 0.04278 GALAXY 64 0 - 308 51662 3 0.04323 GALAXY 64 0 - 308 51662 4 -0.00011 STAR 1 0 - 308 51662 5 -0.00027 STAR 1056768 0 - 308 51662 6 1.61337 QSO 1048580 0 - 308 51662 7 0.11955 GALAXY 64 0 - 308 51662 8 0.11946 GALAXY 96 0 - 308 51662 9 0.11872 GALAXY 64 0 - 308 51662 10 0.00000 UNKNOWN 0 16 - 308 51662 11 0.08313 GALAXY 64 0 - 308 51662 12 0.32303 GALAXY 32 0 - 308 51662 13 0.02661 GALAXY 96 0 - 308 51662 14 1.71368 QSO 34603008 0 - 308 51662 15 0.08330 GALAXY 64 0 - 308 51662 16 0.50931 GALAXY 67108896 0 - 308 51662 17 1.71414 QSO 34603008 0 - 308 51662 18 0.21731 GALAXY 96 0 - 308 51662 19 0.13338 UNKNOWN 9437188 0 - 308 51662 20 0.02686 GALAXY 64 0 - 308 51662 21 0.13939 GALAXY 64 0 - 308 51662 22 0.04337 GALAXY 96 0 - 308 51662 23 0.08334 GALAXY 64 0 - 308 51662 24 0.57096 UNKNOWN 33554433 0 - 308 51662 25 0.04350 GALAXY 33554496 0 - 308 51662 26 0.43525 GALAXY 32 0 - 308 51662 27 0.04310 GALAXY 64 0 - 308 51662 28 -0.00032 STAR 8192 0 - 308 51662 29 -0.00015 STAR 5 0 - 308 51662 30 0.08426 UNKNOWN 35651584 0 - 308 51662 31 0.00000 MISSING 0 0 - 308 51662 32 0.04355 GALAXY 64 0 - 308 51662 33 0.31602 GALAXY 32 0 - 308 51662 34 0.04454 GALAXY 64 0 - 308 51662 35 0.17138 GALAXY 64 0 - 308 51662 36 0.04318 GALAXY 96 0 - 308 51662 37 0.00000 UNKNOWN 0 16 - 308 51662 38 0.00007 STAR 5 0 - 308 51662 39 0.04615 GALAXY 64 0 - 308 51662 40 0.09976 GALAXY 64 0 - 308 51662 41 0.14963 GALAXY 64 0 - 308 51662 42 0.14399 GALAXY 64 0 - 308 51662 43 0.25240 GALAXY 1048596 0 - 308 51662 44 0.00000 UNKNOWN 0 16 - 308 51662 45 0.47357 GALAXY 67108896 0 - 308 51662 46 0.04340 GALAXY 64 0 - 308 51662 47 0.11924 GALAXY 64 0 - 308 51662 48 0.21883 GALAXY 4 0 - 308 51662 49 0.04314 GALAXY 96 0 - 308 51662 50 -0.00024 STAR 1056772 0 - 308 51662 51 0.00027 STAR 0 34 - 308 51662 52 0.00100 STAR 42991616 0 - 308 51662 53 0.14250 GALAXY 64 0 - 308 51662 54 0.00009 STAR 42991616 0 - 308 51662 55 0.14695 GALAXY 64 0 - 308 51662 56 0.02761 GALAXY 64 0 - 308 51662 57 0.31280 GALAXY 32 0 - 308 51662 58 0.81908 QSO 42991616 0 - 308 51662 59 0.08221 GALAXY 64 0 - 308 51662 60 0.04346 GALAXY 64 0 - 308 51662 61 0.02671 GALAXY 64 0 - 308 51662 62 0.00000 UNKNOWN 0 16 - 308 51662 63 0.09967 GALAXY 4 0 - 308 51662 64 0.07905 GALAXY 64 0 - 308 51662 65 -0.00015 STAR 64 0 - 308 51662 66 0.11060 GALAXY 64 0 - 308 51662 67 0.14630 GALAXY 96 0 - 308 51662 68 0.11070 GALAXY 64 0 - 308 51662 69 0.04214 GALAXY 64 0 - 308 51662 70 2.06097 QSO 1048580 0 - 308 51662 71 0.04263 GALAXY 96 0 - 308 51662 72 0.13997 GALAXY 64 0 - 308 51662 73 0.37698 QSO 16 0 - 308 51662 74 0.07946 GALAXY 64 0 - 308 51662 75 1.56876 QSO 34603008 0 - 308 51662 76 0.04335 GALAXY 64 0 - 308 51662 77 0.00050 STAR 8196 0 - 308 51662 78 0.04318 GALAXY 96 0 - 308 51662 79 0.04319 GALAXY 64 0 - 308 51662 80 -0.00035 STAR 0 32 - 308 51662 81 0.02737 GALAXY 64 0 - 308 51662 82 0.55697 UNKNOWN 2097152 0 - 308 51662 83 0.00034 STAR 4 0 - 308 51662 84 0.14905 GALAXY 64 0 - 308 51662 85 2.06972 QSO 4 0 - 308 51662 86 0.14777 GALAXY 64 0 - 308 51662 87 0.14714 GALAXY 96 0 - 308 51662 88 0.10853 GALAXY 64 0 - 308 51662 89 0.14655 GALAXY 64 0 - 308 51662 90 0.15002 GALAXY 64 0 - 308 51662 91 0.00035 STAR 34603008 0 - 308 51662 92 0.14546 GALAXY 4 0 - 308 51662 93 0.00046 STAR 1056768 0 - 308 51662 94 0.03439 GALAXY 64 0 - 308 51662 95 0.00000 UNKNOWN 0 16 - 308 51662 96 0.14415 GALAXY 64 0 - 308 51662 97 0.14300 GALAXY 64 0 - 308 51662 98 0.52558 GALAXY 67108896 0 - 308 51662 99 0.14412 GALAXY 64 0 - 308 51662 100 3.78888 QSO 1 0 - 308 51662 101 0.32749 QSO 32 0 - 308 51662 102 0.04065 GALAXY 64 0 - 308 51662 103 0.25136 GALAXY 96 0 - 308 51662 104 0.02743 GALAXY 64 0 - 308 51662 105 0.00000 UNKNOWN 0 16 - 308 51662 106 0.04094 GALAXY 64 0 - 308 51662 107 0.02631 GALAXY 64 0 - 308 51662 108 0.25179 GALAXY 96 0 - 308 51662 109 0.00082 STAR 4 0 - 308 51662 110 0.14047 GALAXY 64 0 - 308 51662 111 0.04300 GALAXY 96 0 - 308 51662 112 0.04275 GALAXY 64 0 - 308 51662 113 -0.00002 STAR 1056772 0 - 308 51662 114 0.04325 GALAXY 64 0 - 308 51662 115 0.13836 GALAXY 68 0 - 308 51662 116 0.04346 GALAXY 64 0 - 308 51662 117 0.11221 GALAXY 64 0 - 308 51662 118 0.04385 GALAXY 64 0 - 308 51662 119 0.04447 GALAXY 64 0 - 308 51662 120 0.25210 GALAXY 96 0 - 308 51662 121 0.21261 GALAXY 64 0 - 308 51662 122 0.04955 GALAXY 64 0 - 308 51662 123 0.14506 GALAXY 96 0 - 308 51662 124 0.14851 GALAXY 64 0 - 308 51662 125 0.14395 GALAXY 64 0 - 308 51662 126 0.08302 GALAXY 64 0 - 308 51662 127 4.16248 QSO 1 0 - 308 51662 128 0.14296 GALAXY 64 0 - 308 51662 129 0.10984 GALAXY 64 0 - 308 51662 130 0.02894 GALAXY 4 0 - 308 51662 131 1.79680 QSO 20 0 - 308 51662 132 0.07670 GALAXY 64 0 - 308 51662 133 0.04142 GALAXY 64 0 - 308 51662 134 -0.00035 STAR 0 34 - 308 51662 135 0.17684 GALAXY 64 0 - 308 51662 136 0.13191 GALAXY 64 0 - 308 51662 137 0.14854 GALAXY 64 0 - 308 51662 138 0.35018 GALAXY 32 0 - 308 51662 139 0.13777 GALAXY 64 0 - 308 51662 140 0.00000 UNKNOWN 0 16 - 308 51662 141 0.31915 QSO 7172 0 - 308 51662 142 0.14162 GALAXY 64 0 - 308 51662 143 0.04242 GALAXY 96 0 - 308 51662 144 0.04284 GALAXY 64 0 - 308 51662 145 0.00000 UNKNOWN 1048580 0 - 308 51662 146 0.02743 GALAXY 64 0 - 308 51662 147 -0.00020 STAR 0 2 - 308 51662 148 -0.00012 STAR 0 2 - 308 51662 149 0.00003 STAR 1056768 0 - 308 51662 150 1.47718 QSO 64 0 - 308 51662 151 0.05618 GALAXY 64 0 - 308 51662 152 0.00000 UNKNOWN 0 16 - 308 51662 153 0.08285 GALAXY 64 0 - 308 51662 154 0.04287 GALAXY 64 0 - 308 51662 155 0.02804 GALAXY 64 0 - 308 51662 156 0.21402 GALAXY 64 0 - 308 51662 157 0.13068 GALAXY 64 0 - 308 51662 158 0.00018 STAR 8192 0 - 308 51662 159 0.13009 GALAXY 64 0 - 308 51662 160 0.07525 GALAXY 64 0 - 308 51662 161 0.08001 GALAXY 64 0 - 308 51662 162 0.20974 GALAXY 64 0 - 308 51662 163 -0.00033 STAR 42991616 0 - 308 51662 164 0.13837 GALAXY 64 0 - 308 51662 165 0.21708 GALAXY 1048580 0 - 308 51662 166 0.05647 GALAXY 64 0 - 308 51662 167 0.14183 GALAXY 64 0 - 308 51662 168 0.03433 GALAXY 96 0 - 308 51662 169 0.34990 GALAXY 2097152 0 - 308 51662 170 1.24192 QSO 1048580 0 - 308 51662 171 0.12366 GALAXY 64 0 - 308 51662 172 -0.00006 STAR 34611200 0 - 308 51662 173 0.08419 GALAXY 64 0 - 308 51662 174 0.34647 UNKNOWN 32 0 - 308 51662 175 0.04245 GALAXY 4 0 - 308 51662 176 -0.00029 STAR 1 0 - 308 51662 177 0.04252 GALAXY 64 0 - 308 51662 178 0.17504 GALAXY 96 0 - 308 51662 179 0.00000 UNKNOWN 0 16 - 308 51662 180 0.21058 GALAXY 96 0 - 308 51662 181 0.69917 QSO 1048580 0 - 308 51662 182 0.28742 GALAXY 96 0 - 308 51662 183 -0.00005 STAR 0 34 - 308 51662 184 0.05657 GALAXY 64 0 - 308 51662 185 2.77145 QSO 1 0 - 308 51662 186 1.07714 GALAXY 4194304 0 - 308 51662 187 0.00000 UNKNOWN 0 16 - 308 51662 188 0.20511 GALAXY 64 0 - 308 51662 189 0.04163 GALAXY 96 0 - 308 51662 190 1.25416 QSO 1048580 0 - 308 51662 191 0.00554 GALAXY 96 0 - 308 51662 192 1.77465 QSO 1048580 512 - 308 51662 193 0.30909 GALAXY 32 0 - 308 51662 194 0.53579 GALAXY 2097152 0 - 308 51662 195 0.00029 STAR 42991616 0 - 308 51662 196 0.07999 GALAXY 64 0 - 308 51662 197 0.34192 GALAXY 32 0 - 308 51662 198 0.08266 GALAXY 64 0 - 308 51662 199 -0.00041 STAR 1056768 0 - 308 51662 200 0.34231 GALAXY 32 0 - 308 51662 201 0.39243 GALAXY 32 0 - 308 51662 202 0.04336 GALAXY 64 0 - 308 51662 203 0.34828 GALAXY 32 0 - 308 51662 204 0.13088 GALAXY 64 0 - 308 51662 205 0.14694 GALAXY 64 0 - 308 51662 206 0.04166 GALAXY 64 0 - 308 51662 207 1.59166 QSO 36700160 0 - 308 51662 208 0.14773 GALAXY 64 0 - 308 51662 209 0.39120 GALAXY 32 0 - 308 51662 210 0.13185 GALAXY 64 0 - 308 51662 211 0.14539 GALAXY 64 0 - 308 51662 212 0.14880 GALAXY 64 0 - 308 51662 213 0.39939 GALAXY 32 0 - 308 51662 214 0.10313 GALAXY 64 0 - 308 51662 215 0.00000 UNKNOWN 0 16 - 308 51662 216 0.18690 GALAXY 64 0 - 308 51662 217 0.10294 GALAXY 64 0 - 308 51662 218 0.14753 GALAXY 64 0 - 308 51662 219 0.14473 GALAXY 64 0 - 308 51662 220 0.04143 GALAXY 96 0 - 308 51662 221 0.05753 GALAXY 64 0 - 308 51662 222 -0.00021 STAR 1056768 0 - 308 51662 223 0.13129 GALAXY 96 0 - 308 51662 224 1.63007 QSO 1048580 0 - 308 51662 225 0.14895 GALAXY 64 0 - 308 51662 226 0.14628 GALAXY 96 0 - 308 51662 227 0.30554 GALAXY 32 0 - 308 51662 228 0.05741 GALAXY 64 0 - 308 51662 229 0.10234 GALAXY 64 0 - 308 51662 230 0.19415 GALAXY 64 0 - 308 51662 231 0.26235 GALAXY 32 0 - 308 51662 232 0.37583 GALAXY 32 0 - 308 51662 233 0.48182 UNKNOWN 2097152 0 - 308 51662 234 0.03989 GALAXY 64 0 - 308 51662 235 0.34768 GALAXY 32 0 - 308 51662 236 0.00000 UNKNOWN 0 16 - 308 51662 237 0.29156 GALAXY 32 0 - 308 51662 238 0.10243 GALAXY 64 0 - 308 51662 239 0.00549 GALAXY 64 0 - 308 51662 240 -0.00019 STAR 4 0 - 308 51662 241 0.14957 GALAXY 64 0 - 308 51662 242 0.14799 GALAXY 64 0 - 308 51662 243 0.14345 GALAXY 64 0 - 308 51662 244 0.37731 GALAXY 32 0 - 308 51662 245 0.00000 UNKNOWN 0 16 - 308 51662 246 0.44721 GALAXY 67108896 0 - 308 51662 247 0.00000 MISSING 0 0 - 308 51662 248 0.04160 GALAXY 64 0 - 308 51662 249 0.14869 GALAXY 64 0 - 308 51662 250 0.13572 GALAXY 64 0 - 308 51662 251 0.14712 GALAXY 64 0 - 308 51662 252 0.34431 GALAXY 32 0 - 308 51662 253 0.11005 GALAXY 64 0 - 308 51662 254 0.37400 GALAXY 32 0 - 308 51662 255 -0.00039 STAR 1056768 0 - 308 51662 256 0.00029 STAR 8388608 0 - 308 51662 257 0.14442 GALAXY 64 0 - 308 51662 258 0.18101 GALAXY 64 0 - 308 51662 259 0.56307 QSO 1048580 0 - 308 51662 260 0.00004 STAR 1 0 - 308 51662 261 1.37262 QSO 36700160 0 - 308 51662 262 0.14664 GALAXY 64 0 - 308 51662 263 0.15207 GALAXY 64 0 - 308 51662 264 0.15026 GALAXY 64 0 - 308 51662 265 0.14400 GALAXY 64 0 - 308 51662 266 0.14404 GALAXY 64 0 - 308 51662 267 0.14705 GALAXY 64 0 - 308 51662 268 0.04509 GALAXY 64 0 - 308 51662 269 0.14285 GALAXY 64 0 - 308 51662 270 0.00000 UNKNOWN 0 16 - 308 51662 271 0.14403 GALAXY 64 0 - 308 51662 272 0.10892 GALAXY 64 0 - 308 51662 273 0.14994 GALAXY 96 0 - 308 51662 274 0.00578 GALAXY 33554496 0 - 308 51662 275 0.28203 GALAXY 42991616 0 - 308 51662 276 0.14167 GALAXY 64 0 - 308 51662 277 0.14279 GALAXY 64 0 - 308 51662 278 0.17967 GALAXY 64 0 - 308 51662 279 1.81407 QSO 4 0 - 308 51662 280 0.14851 GALAXY 64 0 - 308 51662 281 0.04436 GALAXY 64 0 - 308 51662 282 1.06789 QSO 1048580 0 - 308 51662 283 0.21708 GALAXY 64 0 - 308 51662 284 0.14744 GALAXY 64 0 - 308 51662 285 0.30602 GALAXY 32 0 - 308 51662 286 0.10839 GALAXY 64 0 - 308 51662 287 0.14954 GALAXY 64 0 - 308 51662 288 0.14896 GALAXY 64 0 - 308 51662 289 0.14963 GALAXY 64 0 - 308 51662 290 0.14432 GALAXY 64 0 - 308 51662 291 0.04979 GALAXY 64 0 - 308 51662 292 0.08240 GALAXY 68 0 - 308 51662 293 0.00000 UNKNOWN 0 16 - 308 51662 294 0.00018 STAR 9437184 0 - 308 51662 295 0.14924 GALAXY 64 0 - 308 51662 296 0.29126 GALAXY 4 0 - 308 51662 297 1.72767 QSO 34603008 0 - 308 51662 298 1.93211 QSO 1048580 0 - 308 51662 299 0.00017 STAR 0 2 - 308 51662 300 0.10765 GALAXY 68 0 - 308 51662 301 0.37024 GALAXY 32 0 - 308 51662 302 0.07990 GALAXY 64 0 - 308 51662 303 0.10899 GALAXY 64 0 - 308 51662 304 0.00039 STAR 8192 0 - 308 51662 305 -0.00023 STAR 4194304 0 - 308 51662 306 0.14752 GALAXY 64 0 - 308 51662 307 -0.00009 STAR 9437184 512 - 308 51662 308 0.00000 UNKNOWN 0 16 - 308 51662 309 0.11851 GALAXY 64 0 - 308 51662 310 0.14001 GALAXY 64 0 - 308 51662 311 0.14633 GALAXY 64 0 - 308 51662 312 0.19890 GALAXY 64 0 - 308 51662 313 0.14188 GALAXY 96 0 - 308 51662 314 0.00539 GALAXY 64 0 - 308 51662 315 0.17886 GALAXY 64 0 - 308 51662 316 0.13931 GALAXY 64 0 - 308 51662 317 0.20453 GALAXY 64 0 - 308 51662 318 0.00022 STAR 4 0 - 308 51662 319 0.40067 GALAXY 32 0 - 308 51662 320 -0.00021 STAR 1 0 - 308 51662 321 -0.00017 STAR 0 34 - 308 51662 322 -0.00062 STAR 1056772 0 - 308 51662 323 0.34875 GALAXY 32 0 - 308 51662 324 0.04940 GALAXY 64 0 - 308 51662 325 0.04977 GALAXY 64 0 - 308 51662 326 0.00617 GALAXY 33554496 0 - 308 51662 327 0.10891 GALAXY 64 0 - 308 51662 328 -0.00005 STAR 96 0 - 308 51662 329 0.13755 GALAXY 64 0 - 308 51662 330 -0.00006 STAR 524288 0 - 308 51662 331 0.62396 UNKNOWN 35651584 0 - 308 51662 332 1.17334 QSO 4 0 - 308 51662 333 0.00001 STAR 1 0 - 308 51662 334 -0.00017 STAR 8388608 0 - 308 51662 335 0.00007 STAR 34611200 0 - 308 51662 336 0.03352 GALAXY 96 0 - 308 51662 337 0.15755 GALAXY 64 0 - 308 51662 338 0.05038 GALAXY 64 0 - 308 51662 339 0.00000 UNKNOWN 0 16 - 308 51662 340 1.03306 QSO 35127296 0 - 308 51662 341 0.29550 GALAXY 2097152 0 - 308 51662 342 0.14844 GALAXY 64 0 - 308 51662 343 -0.00036 STAR 8192 0 - 308 51662 344 1.84298 QSO 34603008 0 - 308 51662 345 0.00003 STAR 0 512 - 308 51662 346 0.34672 GALAXY 32 0 - 308 51662 347 -0.00030 STAR 8192 0 - 308 51662 348 0.71012 QSO 1048580 0 - 308 51662 349 0.14984 GALAXY 96 0 - 308 51662 350 0.00000 UNKNOWN 0 16 - 308 51662 351 -0.00001 STAR 5 0 - 308 51662 352 0.34505 GALAXY 32 0 - 308 51662 353 0.00039 STAR 34603008 0 - 308 51662 354 0.15141 GALAXY 64 0 - 308 51662 355 0.19498 GALAXY 64 0 - 308 51662 356 0.00001 STAR 1056768 0 - 308 51662 357 0.00003 STAR 9437184 0 - 308 51662 358 0.36362 GALAXY 32 0 - 308 51662 359 0.00029 STAR 0 2 - 308 51662 360 0.44879 GALAXY 67108896 0 - 308 51662 361 0.00082 STAR 1056768 0 - 308 51662 362 0.02798 GALAXY 64 0 - 308 51662 363 0.10236 GALAXY 4 0 - 308 51662 364 0.00015 STAR 8192 0 - 308 51662 365 0.22164 GALAXY 2097216 0 - 308 51662 366 -0.00035 STAR 4 0 - 308 51662 367 0.04930 GALAXY 64 0 - 308 51662 368 0.57045 QSO 34603008 0 - 308 51662 369 0.00047 STAR 8192 0 - 308 51662 370 0.32838 QSO 1 0 - 308 51662 371 0.13041 GALAXY 64 0 - 308 51662 372 0.02600 GALAXY 64 0 - 308 51662 373 1.40774 QSO 64 0 - 308 51662 374 1.08728 QSO 4 0 - 308 51662 375 -0.00006 STAR 9437184 0 - 308 51662 376 0.00017 STAR 4194304 0 - 308 51662 377 0.14892 GALAXY 64 0 - 308 51662 378 0.00000 UNKNOWN 0 16 - 308 51662 379 0.10212 GALAXY 64 0 - 308 51662 380 1.33985 QSO 1048580 0 - 308 51662 381 0.07348 GALAXY 64 0 - 308 51662 382 0.00016 STAR 4194304 0 - 308 51662 383 0.02829 GALAXY 64 0 - 308 51662 384 0.14128 GALAXY 64 0 - 308 51662 385 0.20750 GALAXY 64 0 - 308 51662 386 0.29146 GALAXY 32 0 - 308 51662 387 0.02820 GALAXY 64 0 - 308 51662 388 0.17645 GALAXY 64 0 - 308 51662 389 0.37119 GALAXY 32 0 - 308 51662 390 0.00000 UNKNOWN 0 16 - 308 51662 391 0.17698 GALAXY 64 0 - 308 51662 392 0.17909 GALAXY 64 0 - 308 51662 393 0.32996 QSO 2097152 0 - 308 51662 394 -0.00016 STAR 8192 0 - 308 51662 395 0.03413 GALAXY 33554496 0 - 308 51662 396 0.19808 GALAXY 64 0 - 308 51662 397 -0.00020 STAR 1056772 0 - 308 51662 398 -0.00018 STAR 2097168 0 - 308 51662 399 1.70354 QSO 34603008 0 - 308 51662 400 0.48967 GALAXY 67108896 0 - 308 51662 401 0.20944 GALAXY 64 0 - 308 51662 402 0.08282 GALAXY 64 0 - 308 51662 403 0.07320 GALAXY 68 0 - 308 51662 404 0.14411 GALAXY 4 0 - 308 51662 405 0.03540 GALAXY 64 0 - 308 51662 406 0.00057 STAR 4 0 - 308 51662 407 0.07052 GALAXY 64 0 - 308 51662 408 0.00000 UNKNOWN 0 16 - 308 51662 409 0.73166 QSO 1048580 0 - 308 51662 410 -0.00018 STAR 0 2 - 308 51662 411 0.28239 GALAXY 4096 0 - 308 51662 412 0.20588 GALAXY 35127296 0 - 308 51662 413 -0.00037 STAR 4 0 - 308 51662 414 1.73845 QSO 2097152 0 - 308 51662 415 0.41340 UNKNOWN 32 0 - 308 51662 416 -0.00019 STAR 1056768 0 - 308 51662 417 0.16861 GALAXY 64 0 - 308 51662 418 0.00006 STAR 9437184 0 - 308 51662 419 0.29593 GALAXY 32 0 - 308 51662 420 0.05819 GALAXY 64 0 - 308 51662 421 0.29446 GALAXY 32 0 - 308 51662 422 0.29666 GALAXY 96 0 - 308 51662 423 0.03691 GALAXY 64 0 - 308 51662 424 0.26186 GALAXY 1048580 0 - 308 51662 425 0.03371 GALAXY 64 0 - 308 51662 426 -0.00041 STAR 8192 0 - 308 51662 427 0.00017 STAR 1048580 0 - 308 51662 428 0.16901 GALAXY 96 0 - 308 51662 429 0.20611 UNKNOWN 2097152 0 - 308 51662 430 0.03107 UNKNOWN 3145748 0 - 308 51662 431 0.15645 GALAXY 64 0 - 308 51662 432 0.02897 GALAXY 96 0 - 308 51662 433 -0.00009 STAR 1 0 - 308 51662 434 0.00005 STAR 8192 0 - 308 51662 435 0.00000 UNKNOWN 0 16 - 308 51662 436 0.00003 STAR 4 0 - 308 51662 437 0.00007 STAR 0 2 - 308 51662 438 0.19793 GALAXY 64 0 - 308 51662 439 0.00006 STAR 0 34 - 308 51662 440 0.00058 STAR 1056768 0 - 308 51662 441 0.02876 GALAXY 64 0 - 308 51662 442 0.17116 GALAXY 64 0 - 308 51662 443 0.04951 GALAXY 64 0 - 308 51662 444 -0.00008 STAR 16 0 - 308 51662 445 2.08712 QSO 2097152 0 - 308 51662 446 0.00011 STAR 4 0 - 308 51662 447 -0.00075 STAR 1056768 0 - 308 51662 448 0.00012 STAR 1056768 0 - 308 51662 449 0.17112 GALAXY 64 0 - 308 51662 450 0.09558 GALAXY 64 0 - 308 51662 451 0.16957 GALAXY 64 0 - 308 51662 452 1.05126 QSO 4 0 - 308 51662 453 0.00000 UNKNOWN 0 16 - 308 51662 454 0.07347 GALAXY 96 0 - 308 51662 455 0.29220 QSO 20 0 - 308 51662 456 0.13706 GALAXY 64 0 - 308 51662 457 -0.00015 STAR 0 2 - 308 51662 458 0.17244 GALAXY 64 0 - 308 51662 459 0.00003 STAR 64 0 - 308 51662 460 0.11846 GALAXY 64 0 - 308 51662 461 0.34311 GALAXY 32 0 - 308 51662 462 -0.00025 STAR 1056768 0 - 308 51662 463 0.11809 GALAXY 64 0 - 308 51662 464 0.17652 GALAXY 64 0 - 308 51662 465 0.02872 GALAXY 64 0 - 308 51662 466 0.34451 GALAXY 32 0 - 308 51662 467 0.17336 GALAXY 64 0 - 308 51662 468 0.10953 GALAXY 64 0 - 308 51662 469 0.10977 GALAXY 64 0 - 308 51662 470 0.17123 GALAXY 64 0 - 308 51662 471 0.00000 UNKNOWN 0 16 - 308 51662 472 0.19976 GALAXY 64 0 - 308 51662 473 0.03788 GALAXY 64 0 - 308 51662 474 0.50385 GALAXY 1 0 - 308 51662 475 -0.00014 STAR 1056768 0 - 308 51662 476 0.39276 GALAXY 2097152 0 - 308 51662 477 0.62532 QSO 4 0 - 308 51662 478 0.61162 QSO 4 0 - 308 51662 479 0.00040 STAR 8192 0 - 308 51662 480 1.01533 QSO 4 0 - 308 51662 481 0.17145 GALAXY 64 0 - 308 51662 482 -0.00056 STAR 8192 0 - 308 51662 483 -0.00042 STAR 4 0 - 308 51662 484 -0.00014 STAR 33554433 0 - 308 51662 485 0.09577 GALAXY 64 0 - 308 51662 486 0.07452 GALAXY 64 0 - 308 51662 487 0.05549 GALAXY 64 0 - 308 51662 488 0.10079 GALAXY 64 0 - 308 51662 489 0.42523 GALAXY 32 0 - 308 51662 490 0.94441 QSO 1048580 0 - 308 51662 491 0.12000 GALAXY 96 0 - 308 51662 492 0.09542 GALAXY 4 0 - 308 51662 493 0.09146 GALAXY 64 0 - 308 51662 494 0.17155 GALAXY 64 0 - 308 51662 495 0.00000 UNKNOWN 0 16 - 308 51662 496 0.02329 GALAXY 64 0 - 308 51662 497 0.08575 GALAXY 64 0 - 308 51662 498 0.00013 STAR 4 0 - 308 51662 499 0.12075 GALAXY 64 0 - 308 51662 500 -0.00021 STAR 0 34 - 308 51662 501 0.03445 GALAXY 64 0 - 308 51662 502 0.83084 QSO 1048580 0 - 308 51662 503 -0.00013 STAR 4 0 - 308 51662 504 1.26378 QSO 524288 0 - 308 51662 505 0.44014 GALAXY 32 0 - 308 51662 506 -0.00015 STAR 8192 0 - 308 51662 507 0.11635 GALAXY 64 0 - 308 51662 508 0.03455 GALAXY 64 0 - 308 51662 509 0.44209 GALAXY 32 0 - 308 51662 510 1.21848 QSO 1048580 0 - 308 51662 511 0.02672 GALAXY 64 0 - 308 51662 512 0.08606 GALAXY 64 0 - 308 51662 513 1.64999 QSO 4 0 - 308 51662 514 0.14668 GALAXY 64 0 - 308 51662 515 0.36040 GALAXY 32 0 - 308 51662 516 0.08425 GALAXY 64 0 - 308 51662 517 0.21601 GALAXY 64 0 - 308 51662 518 0.00048 STAR 9445376 0 - 308 51662 519 0.00000 UNKNOWN 0 16 - 308 51662 520 0.44027 GALAXY 67108896 0 - 308 51662 521 0.16917 GALAXY 4096 0 - 308 51662 522 0.34191 QSO 4 0 - 308 51662 523 0.29631 QSO 4 0 - 308 51662 524 0.13743 GALAXY 64 0 - 308 51662 525 0.29778 GALAXY 32 0 - 308 51662 526 0.04960 GALAXY 64 0 - 308 51662 527 0.03576 GALAXY 64 0 - 308 51662 528 0.09555 GALAXY 64 0 - 308 51662 529 0.02856 GALAXY 64 0 - 308 51662 530 1.62996 QSO 3145748 0 - 308 51662 531 0.16934 GALAXY 96 0 - 308 51662 532 -0.00021 STAR 8192 0 - 308 51662 533 0.39233 GALAXY 32 0 - 308 51662 534 0.07061 GALAXY 64 0 - 308 51662 535 0.17214 GALAXY 64 0 - 308 51662 536 -0.00006 STAR 1056768 0 - 308 51662 537 0.00000 UNKNOWN 0 16 - 308 51662 538 0.21127 GALAXY 64 0 - 308 51662 539 0.17210 GALAXY 96 0 - 308 51662 540 1.89169 QSO 1048580 0 - 308 51662 541 -0.00022 STAR 2097168 0 - 308 51662 542 0.14063 GALAXY 64 0 - 308 51662 543 0.04116 GALAXY 64 0 - 308 51662 544 -0.00003 STAR 33554433 0 - 308 51662 545 0.00000 UNKNOWN 0 16 - 308 51662 546 0.08048 GALAXY 64 0 - 308 51662 547 -0.00017 STAR 4 0 - 308 51662 548 0.15268 GALAXY 64 0 - 308 51662 549 0.97186 QSO 3145748 0 - 308 51662 550 -0.00034 STAR 1 0 - 308 51662 551 0.11299 GALAXY 64 0 - 308 51662 552 -0.00000 STAR 64 0 - 308 51662 553 0.17541 GALAXY 96 0 - 308 51662 554 0.31426 UNKNOWN 2097152 0 - 308 51662 555 0.11255 GALAXY 64 0 - 308 51662 556 0.05609 GALAXY 64 0 - 308 51662 557 0.13846 GALAXY 64 0 - 308 51662 558 1.75723 QSO 1048580 0 - 308 51662 559 0.44058 QSO 1048580 0 - 308 51662 560 0.03982 GALAXY 96 0 - 308 51662 561 0.08717 GALAXY 64 0 - 308 51662 562 0.37496 GALAXY 32 0 - 308 51662 563 0.15236 GALAXY 64 0 - 308 51662 564 0.11966 GALAXY 64 0 - 308 51662 565 0.03573 GALAXY 64 0 - 308 51662 566 0.11272 GALAXY 64 0 - 308 51662 567 0.11959 GALAXY 64 0 - 308 51662 568 0.00043 STAR 42991616 0 - 308 51662 569 0.17232 GALAXY 64 0 - 308 51662 570 0.11239 GALAXY 64 0 - 308 51662 571 0.00047 STAR 4 0 - 308 51662 572 -0.00049 STAR 1 0 - 308 51662 573 0.00000 UNKNOWN 0 16 - 308 51662 574 0.00012 STAR 8192 0 - 308 51662 575 -0.00001 STAR 0 2 - 308 51662 576 0.42330 GALAXY 32 0 - 308 51662 577 0.00000 MISSING 0 0 - 308 51662 578 -0.00003 STAR 64 0 - 308 51662 579 0.00000 MISSING 0 0 - 308 51662 580 0.45044 GALAXY 32 0 - 308 51662 581 0.13063 GALAXY 64 0 - 308 51662 582 0.00011 STAR 1056772 0 - 308 51662 583 0.03943 GALAXY 96 0 - 308 51662 584 0.15420 GALAXY 64 0 - 308 51662 585 0.17004 GALAXY 64 0 - 308 51662 586 0.04149 GALAXY 64 0 - 308 51662 587 -0.00001 STAR 2097168 2 - 308 51662 588 0.00000 UNKNOWN 0 16 - 308 51662 589 1.96367 QSO 1048596 0 - 308 51662 590 0.04042 GALAXY 64 0 - 308 51662 591 0.03974 GALAXY 64 0 - 308 51662 592 0.44659 GALAXY 32 0 - 308 51662 593 -0.00019 STAR 64 0 - 308 51662 594 0.04341 GALAXY 64 0 - 308 51662 595 1.07904 QSO 1048580 0 - 308 51662 596 0.02316 GALAXY 96 0 - 308 51662 597 0.06905 GALAXY 64 0 - 308 51662 598 0.03966 GALAXY 64 0 - 308 51662 599 0.06360 GALAXY 64 0 - 308 51662 600 0.02905 GALAXY 64 0 - 308 51662 601 0.11982 GALAXY 4 0 - 308 51662 602 0.21172 GALAXY 96 0 - 308 51662 603 0.42109 GALAXY 32 0 - 308 51662 604 0.14045 GALAXY 64 0 - 308 51662 605 0.37327 GALAXY 32 0 - 308 51662 606 0.37437 GALAXY 32 0 - 308 51662 607 0.20241 GALAXY 64 0 - 308 51662 608 0.09935 GALAXY 64 0 - 308 51662 609 0.00050 STAR 8196 0 - 308 51662 610 0.14566 GALAXY 64 0 - 308 51662 611 0.00018 STAR 0 34 - 308 51662 612 0.21206 GALAXY 96 0 - 308 51662 613 0.15302 GALAXY 64 0 - 308 51662 614 0.06445 GALAXY 64 0 - 308 51662 615 0.07511 GALAXY 96 0 - 308 51662 616 0.04272 GALAXY 64 0 - 308 51662 617 0.06350 GALAXY 64 0 - 308 51662 618 0.13082 GALAXY 64 0 - 308 51662 619 0.90897 QSO 42991616 0 - 308 51662 620 0.00000 UNKNOWN 0 16 - 308 51662 621 0.51946 GALAXY 1 0 - 308 51662 622 0.14688 GALAXY 64 0 - 308 51662 623 0.42289 GALAXY 32 0 - 308 51662 624 0.39527 GALAXY 1 0 - 308 51662 625 0.18778 GALAXY 64 0 - 308 51662 626 0.48402 GALAXY 67108896 0 - 308 51662 627 0.14655 GALAXY 64 0 - 308 51662 628 0.04261 GALAXY 64 0 - 308 51662 629 0.25137 GALAXY 32 0 - 308 51662 630 0.00000 UNKNOWN 0 16 - 308 51662 631 0.80492 GALAXY 1048580 512 - 308 51662 632 0.18902 GALAXY 96 0 - 308 51662 633 0.36438 GALAXY 32 0 - 308 51662 634 0.06400 GALAXY 64 0 - 308 51662 635 0.06387 GALAXY 64 0 - 308 51662 636 0.14333 GALAXY 64 0 - 308 51662 637 0.18917 GALAXY 64 0 - 308 51662 638 0.14702 GALAXY 64 0 - 308 51662 639 0.24762 QSO 32 0 - 308 51662 640 0.09934 GALAXY 64 0 - 309 51666 1 0.21688 GALAXY 64 0 - 309 51666 2 0.36827 GALAXY 32 0 - 309 51666 3 0.00000 UNKNOWN 0 16 - 309 51666 4 0.00008 STAR 0 2 - 309 51666 5 0.29678 GALAXY 32 0 - 309 51666 6 0.32107 GALAXY 1056768 0 - 309 51666 7 0.64692 GALAXY 64 0 - 309 51666 8 0.99486 QSO 67108896 0 - 309 51666 9 2.60844 QSO 1048580 0 - 309 51666 10 0.13711 UNKNOWN 8388608 512 - 309 51666 11 0.16015 GALAXY 64 0 - 309 51666 12 -0.00013 STAR 67108896 0 - 309 51666 13 1.60080 QSO 4 0 - 309 51666 14 0.08635 GALAXY 64 0 - 309 51666 15 0.11054 GALAXY 64 0 - 309 51666 16 0.15914 GALAXY 64 0 - 309 51666 17 0.00004 STAR 64 0 - 309 51666 18 0.28763 GALAXY 41943041 0 - 309 51666 19 0.33484 GALAXY 32 0 - 309 51666 20 0.46092 GALAXY 64 0 - 309 51666 21 0.10934 GALAXY 64 0 - 309 51666 22 0.33569 GALAXY 32 0 - 309 51666 23 0.43427 GALAXY 32 0 - 309 51666 24 0.43736 GALAXY 2097184 0 - 309 51666 25 0.00000 UNKNOWN 0 16 - 309 51666 26 0.00001 STAR 16 0 - 309 51666 27 0.13431 GALAXY 64 0 - 309 51666 28 0.40355 UNKNOWN 32 0 - 309 51666 29 2.00816 QSO 1048580 0 - 309 51666 30 0.43976 GALAXY 67108896 0 - 309 51666 31 0.07624 GALAXY 64 0 - 309 51666 32 1.64949 QSO 4 0 - 309 51666 33 0.37655 GALAXY 32 0 - 309 51666 34 0.09918 GALAXY 64 0 - 309 51666 35 0.43795 GALAXY 32 0 - 309 51666 36 0.08730 GALAXY 64 0 - 309 51666 37 0.03120 GALAXY 64 0 - 309 51666 38 0.20134 GALAXY 32 0 - 309 51666 39 0.09832 GALAXY 64 0 - 309 51666 40 0.11708 GALAXY 64 0 - 309 51666 41 0.04150 GALAXY 64 0 - 309 51666 42 2.22628 QSO 7172 0 - 309 51666 43 0.07486 GALAXY 68 0 - 309 51666 44 -0.00035 STAR 0 2 - 309 51666 45 0.09937 GALAXY 96 0 - 309 51666 46 0.09968 GALAXY 64 0 - 309 51666 47 0.10002 GALAXY 96 0 - 309 51666 48 0.08738 GALAXY 64 0 - 309 51666 49 0.28104 GALAXY 32 0 - 309 51666 50 0.14988 GALAXY 96 0 - 309 51666 51 0.00000 UNKNOWN 0 16 - 309 51666 52 1.32406 QSO 36700160 0 - 309 51666 53 0.08683 GALAXY 64 0 - 309 51666 54 1.22299 QSO 4 0 - 309 51666 55 0.06695 GALAXY 64 0 - 309 51666 56 0.10044 GALAXY 64 0 - 309 51666 57 0.08667 GALAXY 64 0 - 309 51666 58 0.00018 STAR 1056772 0 - 309 51666 59 0.08654 GALAXY 64 0 - 309 51666 60 0.10015 GALAXY 64 0 - 309 51666 61 0.08743 GALAXY 64 0 - 309 51666 62 0.23842 GALAXY 96 0 - 309 51666 63 0.09825 GALAXY 64 0 - 309 51666 64 0.19730 GALAXY 64 0 - 309 51666 65 0.18827 GALAXY 64 0 - 309 51666 66 0.17304 GALAXY 64 0 - 309 51666 67 0.46817 GALAXY 67108896 0 - 309 51666 68 0.00008 STAR 0 2 - 309 51666 69 -0.00014 STAR 0 34 - 309 51666 70 -0.00000 STAR 1 0 - 309 51666 71 0.23568 GALAXY 96 0 - 309 51666 72 0.00013 STAR 4 0 - 309 51666 73 0.37574 GALAXY 32 0 - 309 51666 74 0.00047 STAR 8196 0 - 309 51666 75 0.18783 GALAXY 96 0 - 309 51666 76 0.04183 GALAXY 64 0 - 309 51666 77 0.06765 GALAXY 68 0 - 309 51666 78 0.17287 GALAXY 64 0 - 309 51666 79 0.18686 GALAXY 4 0 - 309 51666 80 0.00000 UNKNOWN 0 16 - 309 51666 81 0.10010 GALAXY 64 0 - 309 51666 82 0.28441 GALAXY 32 0 - 309 51666 83 0.09964 GALAXY 64 0 - 309 51666 84 0.00000 UNKNOWN 1048580 0 - 309 51666 85 0.00026 STAR 16 0 - 309 51666 86 0.10135 GALAXY 64 0 - 309 51666 87 0.00000 UNKNOWN 0 16 - 309 51666 88 0.00071 STAR 4 0 - 309 51666 89 0.17025 UNKNOWN 67108896 0 - 309 51666 90 0.00028 STAR 1 0 - 309 51666 91 1.94128 QSO 36700160 0 - 309 51666 92 0.00620 GALAXY 64 0 - 309 51666 93 1.75962 QSO 34603008 0 - 309 51666 94 0.14247 GALAXY 64 0 - 309 51666 95 -0.00004 STAR 1056772 0 - 309 51666 96 0.17235 GALAXY 64 0 - 309 51666 97 0.09931 GALAXY 96 0 - 309 51666 98 -0.00033 STAR 8192 0 - 309 51666 99 0.03517 GALAXY 64 0 - 309 51666 100 1.54503 QSO 33554496 0 - 309 51666 101 0.11036 GALAXY 64 0 - 309 51666 102 0.00007 STAR 1 0 - 309 51666 103 0.23840 GALAXY 64 0 - 309 51666 104 -0.00018 STAR 4194304 0 - 309 51666 105 0.11110 GALAXY 64 0 - 309 51666 106 0.13856 GALAXY 64 0 - 309 51666 107 0.37723 GALAXY 32 0 - 309 51666 108 0.10538 GALAXY 64 0 - 309 51666 109 0.17276 GALAXY 64 0 - 309 51666 110 0.11039 GALAXY 64 0 - 309 51666 111 0.08234 GALAXY 64 0 - 309 51666 112 0.14990 GALAXY 64 0 - 309 51666 113 0.17252 GALAXY 64 0 - 309 51666 114 0.09865 GALAXY 64 0 - 309 51666 115 0.10441 GALAXY 64 0 - 309 51666 116 0.89554 GALAXY 7172 0 - 309 51666 117 0.00000 UNKNOWN 0 16 - 309 51666 118 0.08254 GALAXY 64 0 - 309 51666 119 0.10551 GALAXY 64 0 - 309 51666 120 1.50471 QSO 64 0 - 309 51666 121 -0.00053 STAR 34611200 0 - 309 51666 122 0.08403 GALAXY 64 0 - 309 51666 123 0.09947 GALAXY 64 0 - 309 51666 124 0.08384 GALAXY 96 0 - 309 51666 125 0.00000 UNKNOWN 0 16 - 309 51666 126 -0.00061 STAR 4 0 - 309 51666 127 0.00060 STAR 1 0 - 309 51666 128 0.60145 UNKNOWN 34611200 0 - 309 51666 129 0.31437 GALAXY 32 0 - 309 51666 130 0.08376 GALAXY 64 0 - 309 51666 131 0.08545 GALAXY 68 0 - 309 51666 132 0.16298 GALAXY 64 0 - 309 51666 133 0.57652 QSO 1048580 0 - 309 51666 134 0.07651 GALAXY 64 0 - 309 51666 135 1.37389 QSO 4 0 - 309 51666 136 0.35885 GALAXY 32 0 - 309 51666 137 0.08387 GALAXY 96 0 - 309 51666 138 0.07650 GALAXY 68 0 - 309 51666 139 0.21694 GALAXY 64 0 - 309 51666 140 0.08375 GALAXY 64 0 - 309 51666 141 0.13648 GALAXY 64 0 - 309 51666 142 0.08739 GALAXY 64 0 - 309 51666 143 0.08422 GALAXY 64 0 - 309 51666 144 0.04215 GALAXY 64 0 - 309 51666 145 0.00000 UNKNOWN 0 16 - 309 51666 146 0.08381 GALAXY 96 0 - 309 51666 147 0.08600 GALAXY 64 0 - 309 51666 148 0.08339 GALAXY 64 0 - 309 51666 149 0.08326 GALAXY 96 0 - 309 51666 150 0.08331 GALAXY 64 0 - 309 51666 151 0.23634 GALAXY 4 0 - 309 51666 152 0.07765 GALAXY 64 0 - 309 51666 153 0.08261 GALAXY 64 0 - 309 51666 154 0.08400 GALAXY 64 0 - 309 51666 155 0.11136 GALAXY 64 0 - 309 51666 156 0.13336 GALAXY 64 0 - 309 51666 157 0.00013 STAR 4 0 - 309 51666 158 1.40360 QSO 1048580 0 - 309 51666 159 0.08379 GALAXY 64 0 - 309 51666 160 0.08268 GALAXY 64 0 - 309 51666 161 0.08483 GALAXY 64 0 - 309 51666 162 -0.00010 STAR 67108896 0 - 309 51666 163 0.08433 GALAXY 64 0 - 309 51666 164 0.22959 GALAXY 64 0 - 309 51666 165 0.37422 GALAXY 32 0 - 309 51666 166 0.00029 STAR 8192 0 - 309 51666 167 0.14236 GALAXY 64 0 - 309 51666 168 0.37464 GALAXY 32 0 - 309 51666 169 0.08324 GALAXY 64 0 - 309 51666 170 0.08433 GALAXY 64 0 - 309 51666 171 0.14095 GALAXY 64 0 - 309 51666 172 0.08352 GALAXY 68 0 - 309 51666 173 0.33931 GALAXY 3145748 0 - 309 51666 174 0.00000 UNKNOWN 0 16 - 309 51666 175 0.37530 UNKNOWN 32 0 - 309 51666 176 0.37831 QSO 32 0 - 309 51666 177 0.14108 GALAXY 64 0 - 309 51666 178 0.08392 GALAXY 4 0 - 309 51666 179 0.14918 GALAXY 64 0 - 309 51666 180 0.08448 GALAXY 64 0 - 309 51666 181 0.28162 GALAXY 32 0 - 309 51666 182 1.51947 QSO 64 0 - 309 51666 183 0.46854 GALAXY 32 0 - 309 51666 184 0.00010 STAR 1056768 0 - 309 51666 185 1.57828 QSO 1048580 0 - 309 51666 186 0.38578 GALAXY 32 0 - 309 51666 187 0.36914 GALAXY 32 0 - 309 51666 188 0.06874 GALAXY 64 0 - 309 51666 189 1.50814 QSO 1048580 0 - 309 51666 190 0.42913 GALAXY 32 0 - 309 51666 191 0.06590 GALAXY 64 0 - 309 51666 192 0.00000 MISSING 0 0 - 309 51666 193 0.00000 UNKNOWN 0 16 - 309 51666 194 0.14834 GALAXY 64 0 - 309 51666 195 -0.00008 STAR 5 0 - 309 51666 196 0.04397 GALAXY 64 0 - 309 51666 197 0.13862 GALAXY 64 0 - 309 51666 198 0.04311 GALAXY 64 0 - 309 51666 199 0.23548 GALAXY 96 0 - 309 51666 200 0.00017 STAR 34611200 0 - 309 51666 201 0.29657 GALAXY 32 0 - 309 51666 202 0.16700 GALAXY 64 0 - 309 51666 203 0.08314 GALAXY 64 0 - 309 51666 204 0.05487 GALAXY 64 0 - 309 51666 205 0.00072 STAR 9445376 0 - 309 51666 206 0.02321 GALAXY 64 0 - 309 51666 207 0.06572 GALAXY 64 0 - 309 51666 208 0.00000 UNKNOWN 0 16 - 309 51666 209 0.10395 GALAXY 64 0 - 309 51666 210 0.19409 GALAXY 64 0 - 309 51666 211 0.29855 GALAXY 32 0 - 309 51666 212 0.24007 GALAXY 64 0 - 309 51666 213 0.42207 GALAXY 67108896 0 - 309 51666 214 0.08368 GALAXY 64 0 - 309 51666 215 0.21753 GALAXY 96 0 - 309 51666 216 0.37759 GALAXY 32 0 - 309 51666 217 0.07579 GALAXY 64 0 - 309 51666 218 0.18563 GALAXY 4 0 - 309 51666 219 1.09403 QSO 42991616 0 - 309 51666 220 0.08435 GALAXY 64 0 - 309 51666 221 0.00004 STAR 9437184 0 - 309 51666 222 0.10065 GALAXY 64 0 - 309 51666 223 0.00000 UNKNOWN 0 16 - 309 51666 224 0.00071 STAR 42999808 0 - 309 51666 225 0.04449 GALAXY 64 0 - 309 51666 226 0.16930 GALAXY 64 0 - 309 51666 227 0.31397 GALAXY 32 0 - 309 51666 228 0.04482 GALAXY 64 0 - 309 51666 229 0.07565 GALAXY 64 0 - 309 51666 230 0.00002 STAR 8192 0 - 309 51666 231 0.14688 UNKNOWN 64 0 - 309 51666 232 0.00099 STAR 8192 0 - 309 51666 233 0.09995 GALAXY 64 0 - 309 51666 234 0.04392 GALAXY 96 0 - 309 51666 235 0.04197 GALAXY 64 0 - 309 51666 236 0.00075 STAR 1056768 0 - 309 51666 237 0.16963 GALAXY 64 0 - 309 51666 238 0.21777 GALAXY 96 0 - 309 51666 239 0.13873 GALAXY 64 0 - 309 51666 240 0.16936 GALAXY 64 0 - 309 51666 241 1.34680 QSO 1048580 0 - 309 51666 242 0.06741 GALAXY 64 0 - 309 51666 243 -0.00035 STAR 0 34 - 309 51666 244 0.31462 GALAXY 32 0 - 309 51666 245 0.42970 GALAXY 32 0 - 309 51666 246 0.27679 GALAXY 32 0 - 309 51666 247 0.31367 GALAXY 32 0 - 309 51666 248 0.00000 UNKNOWN 0 16 - 309 51666 249 0.17707 GALAXY 64 0 - 309 51666 250 1.80588 QSO 4 0 - 309 51666 251 0.07735 GALAXY 64 0 - 309 51666 252 0.07747 GALAXY 96 0 - 309 51666 253 0.00022 STAR 42991616 0 - 309 51666 254 1.52769 QSO 64 0 - 309 51666 255 -0.00002 UNKNOWN 64 0 - 309 51666 256 0.07762 GALAXY 64 0 - 309 51666 257 0.07874 GALAXY 64 0 - 309 51666 258 0.08425 GALAXY 64 0 - 309 51666 259 0.07746 GALAXY 64 0 - 309 51666 260 0.00014 STAR 4 0 - 309 51666 261 0.43522 GALAXY 67108896 0 - 309 51666 262 -0.00039 STAR 34611200 0 - 309 51666 263 -0.00014 STAR 4 0 - 309 51666 264 -0.00036 STAR 8192 0 - 309 51666 265 0.06387 GALAXY 64 0 - 309 51666 266 0.09927 GALAXY 96 0 - 309 51666 267 0.07839 GALAXY 64 0 - 309 51666 268 0.04253 GALAXY 64 0 - 309 51666 269 0.31512 GALAXY 32 0 - 309 51666 270 0.00000 UNKNOWN 0 16 - 309 51666 271 0.09977 GALAXY 64 0 - 309 51666 272 0.09963 GALAXY 64 0 - 309 51666 273 0.00009 STAR 1 0 - 309 51666 274 0.02862 UNKNOWN 2097152 0 - 309 51666 275 -0.00015 STAR 5 0 - 309 51666 276 0.12297 GALAXY 64 0 - 309 51666 277 0.09961 GALAXY 64 0 - 309 51666 278 0.04408 GALAXY 64 0 - 309 51666 279 0.00008 STAR 1 0 - 309 51666 280 0.46470 UNKNOWN 67108896 0 - 309 51666 281 0.00406 QSO 1048580 0 - 309 51666 282 0.04308 GALAXY 4 0 - 309 51666 283 0.11019 GALAXY 64 0 - 309 51666 284 -0.00011 STAR 0 34 - 309 51666 285 0.31434 GALAXY 32 0 - 309 51666 286 0.03496 GALAXY 68 0 - 309 51666 287 0.14989 GALAXY 64 0 - 309 51666 288 0.28635 GALAXY 32 0 - 309 51666 289 0.09929 GALAXY 64 0 - 309 51666 290 0.00000 UNKNOWN 0 16 - 309 51666 291 0.07703 GALAXY 64 0 - 309 51666 292 0.36777 GALAXY 32 0 - 309 51666 293 0.26362 GALAXY 32 0 - 309 51666 294 0.00009 STAR 64 0 - 309 51666 295 0.11060 GALAXY 64 0 - 309 51666 296 0.31529 GALAXY 32 0 - 309 51666 297 2.10881 QSO 4 0 - 309 51666 298 0.18516 GALAXY 64 0 - 309 51666 299 0.10000 GALAXY 64 0 - 309 51666 300 0.55477 UNKNOWN 2097152 0 - 309 51666 301 0.08596 GALAXY 64 0 - 309 51666 302 -0.00027 STAR 0 32 - 309 51666 303 1.26927 QSO 9961476 0 - 309 51666 304 0.04333 GALAXY 64 0 - 309 51666 305 0.25242 GALAXY 96 0 - 309 51666 306 0.51423 QSO 1048580 0 - 309 51666 307 0.09033 GALAXY 64 0 - 309 51666 308 1.19564 QSO 1048580 0 - 309 51666 309 0.13870 GALAXY 64 0 - 309 51666 310 0.04263 GALAXY 64 0 - 309 51666 311 0.00000 UNKNOWN 0 16 - 309 51666 312 0.04298 GALAXY 64 0 - 309 51666 313 -0.00008 STAR 64 0 - 309 51666 314 0.04318 GALAXY 64 0 - 309 51666 315 0.08360 GALAXY 64 0 - 309 51666 316 0.11228 GALAXY 4 0 - 309 51666 317 0.04316 GALAXY 96 0 - 309 51666 318 0.00013 STAR 9445376 0 - 309 51666 319 0.02320 GALAXY 96 0 - 309 51666 320 0.12520 GALAXY 4194304 0 - 309 51666 321 0.11604 GALAXY 64 0 - 309 51666 322 0.21137 GALAXY 96 0 - 309 51666 323 -0.00033 STAR 8192 0 - 309 51666 324 0.20008 GALAXY 64 0 - 309 51666 325 1.30138 QSO 1048580 0 - 309 51666 326 0.00123 STAR 8192 0 - 309 51666 327 0.39098 GALAXY 32 0 - 309 51666 328 1.08390 QSO 1048580 0 - 309 51666 329 0.39166 GALAXY 32 0 - 309 51666 330 0.08683 GALAXY 64 0 - 309 51666 331 0.37361 GALAXY 32 0 - 309 51666 332 0.42138 GALAXY 32 0 - 309 51666 333 0.14577 GALAXY 64 0 - 309 51666 334 0.02714 GALAXY 64 0 - 309 51666 335 0.47297 UNKNOWN 33554433 0 - 309 51666 336 0.09872 GALAXY 64 0 - 309 51666 337 0.00013 STAR 33554433 0 - 309 51666 338 0.18486 GALAXY 64 0 - 309 51666 339 0.00054 STAR 8192 0 - 309 51666 340 0.00000 UNKNOWN 0 16 - 309 51666 341 0.05587 GALAXY 64 0 - 309 51666 342 1.70211 QSO 4 0 - 309 51666 343 0.00000 UNKNOWN 0 16 - 309 51666 344 -0.00006 STAR 64 0 - 309 51666 345 0.00021 STAR 9445376 0 - 309 51666 346 0.17510 GALAXY 64 0 - 309 51666 347 0.03453 GALAXY 64 0 - 309 51666 348 0.17480 GALAXY 96 0 - 309 51666 349 0.00036 STAR 1056768 0 - 309 51666 350 0.13908 GALAXY 64 0 - 309 51666 351 0.03976 GALAXY 64 0 - 309 51666 352 0.06407 GALAXY 64 0 - 309 51666 353 0.04052 GALAXY 96 0 - 309 51666 354 -0.00020 STAR 8192 0 - 309 51666 355 1.63263 QSO 4 0 - 309 51666 356 0.04283 GALAXY 96 0 - 309 51666 357 0.44110 QSO 1048580 0 - 309 51666 358 0.00020 STAR 4194304 0 - 309 51666 359 0.04245 UNKNOWN 64 0 - 309 51666 360 0.00032 STAR 8192 0 - 309 51666 361 0.19266 GALAXY 64 0 - 309 51666 362 0.19373 GALAXY 64 0 - 309 51666 363 0.00006 STAR 8196 0 - 309 51666 364 0.33721 GALAXY 32 0 - 309 51666 365 0.37331 GALAXY 32 0 - 309 51666 366 0.37594 GALAXY 32 0 - 309 51666 367 0.14157 GALAXY 64 0 - 309 51666 368 0.38583 GALAXY 32 0 - 309 51666 369 0.37668 GALAXY 32 0 - 309 51666 370 0.11171 GALAXY 64 0 - 309 51666 371 0.21200 GALAXY 64 0 - 309 51666 372 0.00000 UNKNOWN 0 16 - 309 51666 373 0.09833 GALAXY 96 0 - 309 51666 374 0.13169 GALAXY 64 0 - 309 51666 375 0.11953 GALAXY 64 0 - 309 51666 376 0.04337 GALAXY 64 0 - 309 51666 377 0.13180 GALAXY 64 0 - 309 51666 378 0.19604 GALAXY 64 0 - 309 51666 379 0.04328 GALAXY 64 0 - 309 51666 380 0.00034 STAR 0 2 - 309 51666 381 0.04624 GALAXY 64 0 - 309 51666 382 0.19230 GALAXY 64 0 - 309 51666 383 0.30453 GALAXY 64 0 - 309 51666 384 0.33431 QSO 2097152 0 - 309 51666 385 -0.00012 STAR 524288 0 - 309 51666 386 0.00025 STAR 0 2 - 309 51666 387 0.31944 GALAXY 32 0 - 309 51666 388 0.47954 GALAXY 67108896 0 - 309 51666 389 0.00026 STAR 0 34 - 309 51666 390 0.55092 QSO 34603008 0 - 309 51666 391 0.45761 QSO 1048580 0 - 309 51666 392 0.00004 STAR 42991616 0 - 309 51666 393 0.02780 GALAXY 64 0 - 309 51666 394 0.00009 STAR 0 2 - 309 51666 395 0.18884 GALAXY 64 0 - 309 51666 396 2.00976 QSO 1048580 512 - 309 51666 397 -0.00004 STAR 4 0 - 309 51666 398 2.53674 QSO 34603008 0 - 309 51666 399 0.00000 UNKNOWN 0 16 - 309 51666 400 0.00007 STAR 5 0 - 309 51666 401 0.14130 GALAXY 96 0 - 309 51666 402 0.39848 UNKNOWN 33554433 0 - 309 51666 403 0.31553 GALAXY 32 0 - 309 51666 404 0.06567 GALAXY 64 0 - 309 51666 405 0.14732 GALAXY 64 0 - 309 51666 406 1.26080 QSO 1048580 0 - 309 51666 407 0.11907 GALAXY 64 0 - 309 51666 408 0.21166 GALAXY 4 0 - 309 51666 409 0.00056 STAR 0 96 - 309 51666 410 0.11917 GALAXY 64 0 - 309 51666 411 0.06917 GALAXY 64 0 - 309 51666 412 0.37714 GALAXY 32 0 - 309 51666 413 -0.00023 STAR 1179652 0 - 309 51666 414 0.37665 GALAXY 32 0 - 309 51666 415 0.14799 GALAXY 64 0 - 309 51666 416 0.14745 GALAXY 64 0 - 309 51666 417 0.00000 UNKNOWN 0 16 - 309 51666 418 0.14854 GALAXY 64 0 - 309 51666 419 0.11903 GALAXY 64 0 - 309 51666 420 0.00074 STAR 1 0 - 309 51666 421 0.64391 QSO 35651584 0 - 309 51666 422 1.85969 QSO 1048580 0 - 309 51666 423 2.15377 QSO 4 0 - 309 51666 424 0.62594 UNKNOWN 1 0 - 309 51666 425 0.17146 GALAXY 64 0 - 309 51666 426 0.24841 GALAXY 96 0 - 309 51666 427 2.52721 QSO 4 0 - 309 51666 428 0.00000 UNKNOWN 0 16 - 309 51666 429 0.04478 GALAXY 64 0 - 309 51666 430 0.09187 GALAXY 96 0 - 309 51666 431 0.04320 GALAXY 64 0 - 309 51666 432 -0.00008 STAR 0 2 - 309 51666 433 0.04256 GALAXY 64 0 - 309 51666 434 -0.00010 STAR 8192 0 - 309 51666 435 0.04212 GALAXY 64 0 - 309 51666 436 0.47290 UNKNOWN 67108896 0 - 309 51666 437 0.04478 GALAXY 64 0 - 309 51666 438 0.04404 GALAXY 96 0 - 309 51666 439 0.09866 GALAXY 64 0 - 309 51666 440 0.31421 GALAXY 32 0 - 309 51666 441 -0.00000 STAR 524288 0 - 309 51666 442 0.16305 GALAXY 64 0 - 309 51666 443 0.00007 STAR 2097168 0 - 309 51666 444 0.00000 UNKNOWN 0 16 - 309 51666 445 0.07985 GALAXY 64 0 - 309 51666 446 0.08153 GALAXY 64 0 - 309 51666 447 0.00032 STAR 8192 0 - 309 51666 448 0.24686 GALAXY 32 0 - 309 51666 449 0.14919 GALAXY 64 0 - 309 51666 450 0.03497 GALAXY 96 0 - 309 51666 451 0.18859 GALAXY 64 0 - 309 51666 452 0.08001 GALAXY 64 0 - 309 51666 453 0.13197 GALAXY 64 0 - 309 51666 454 0.08131 GALAXY 68 0 - 309 51666 455 0.03301 GALAXY 64 0 - 309 51666 456 0.04244 GALAXY 64 0 - 309 51666 457 0.09183 GALAXY 64 0 - 309 51666 458 0.61434 QSO 1 0 - 309 51666 459 0.00025 STAR 4 0 - 309 51666 460 0.04354 GALAXY 64 0 - 309 51666 461 0.04604 GALAXY 64 0 - 309 51666 462 -0.00013 STAR 8192 0 - 309 51666 463 0.00012 STAR 34611200 0 - 309 51666 464 1.44162 QSO 4 0 - 309 51666 465 0.70258 QSO 1048580 0 - 309 51666 466 0.32033 GALAXY 32 0 - 309 51666 467 1.50228 QSO 64 0 - 309 51666 468 0.08335 GALAXY 64 0 - 309 51666 469 0.39682 QSO 4 0 - 309 51666 470 2.64246 QSO 1056769 0 - 309 51666 471 0.44209 GALAXY 32 0 - 309 51666 472 0.25965 GALAXY 32 0 - 309 51666 473 0.06653 UNKNOWN 2097152 0 - 309 51666 474 0.00000 UNKNOWN 0 16 - 309 51666 475 0.00072 STAR 4 0 - 309 51666 476 0.11621 GALAXY 64 0 - 309 51666 477 0.42493 GALAXY 32 0 - 309 51666 478 0.13239 GALAXY 68 0 - 309 51666 479 0.00003 STAR 42991616 512 - 309 51666 480 1.70634 QSO 4 0 - 309 51666 481 0.11100 GALAXY 64 0 - 309 51666 482 0.00000 UNKNOWN 0 16 - 309 51666 483 0.04406 GALAXY 64 0 - 309 51666 484 0.07520 GALAXY 4 0 - 309 51666 485 0.04372 GALAXY 64 0 - 309 51666 486 2.01105 QSO 4 0 - 309 51666 487 0.04361 GALAXY 96 0 - 309 51666 488 0.00021 STAR 1056768 0 - 309 51666 489 0.03494 GALAXY 64 0 - 309 51666 490 0.04352 GALAXY 64 0 - 309 51666 491 -0.00026 STAR 64 0 - 309 51666 492 0.00007 STAR 4 0 - 309 51666 493 0.49921 GALAXY 67108896 0 - 309 51666 494 0.06708 GALAXY 64 0 - 309 51666 495 0.18569 GALAXY 64 0 - 309 51666 496 0.00073 STAR 8192 0 - 309 51666 497 0.06686 GALAXY 64 0 - 309 51666 498 0.14112 GALAXY 64 0 - 309 51666 499 1.91256 QSO 1048580 0 - 309 51666 500 0.00054 STAR 4 0 - 309 51666 501 0.13591 GALAXY 64 0 - 309 51666 502 0.17167 GALAXY 64 0 - 309 51666 503 0.00007 STAR 1 0 - 309 51666 504 -0.00052 STAR 8192 0 - 309 51666 505 0.60172 QSO 1048580 0 - 309 51666 506 0.00000 UNKNOWN 0 16 - 309 51666 507 0.17647 GALAXY 64 0 - 309 51666 508 0.13927 GALAXY 64 0 - 309 51666 509 0.08268 GALAXY 64 0 - 309 51666 510 0.08744 GALAXY 64 0 - 309 51666 511 0.04288 GALAXY 64 0 - 309 51666 512 0.00003 STAR 8192 0 - 309 51666 513 0.18500 GALAXY 64 0 - 309 51666 514 0.43391 QSO 4 0 - 309 51666 515 1.83634 QSO 36700160 0 - 309 51666 516 0.03500 GALAXY 64 0 - 309 51666 517 0.07782 GALAXY 64 0 - 309 51666 518 0.07767 GALAXY 64 0 - 309 51666 519 0.08486 GALAXY 96 0 - 309 51666 520 0.00013 STAR 1056768 0 - 309 51666 521 0.27748 GALAXY 32 0 - 309 51666 522 1.50553 QSO 64 0 - 309 51666 523 0.08774 GALAXY 64 0 - 309 51666 524 0.23478 GALAXY 32 0 - 309 51666 525 -0.00015 STAR 4096 0 - 309 51666 526 0.06750 GALAXY 64 0 - 309 51666 527 0.00566 GALAXY 64 0 - 309 51666 528 0.04367 GALAXY 64 0 - 309 51666 529 0.00018 STAR 1048580 0 - 309 51666 530 0.11010 GALAXY 64 0 - 309 51666 531 0.04373 GALAXY 64 0 - 309 51666 532 0.31550 GALAXY 96 0 - 309 51666 533 0.31930 GALAXY 32 0 - 309 51666 534 0.08746 GALAXY 64 0 - 309 51666 535 0.04379 GALAXY 96 0 - 309 51666 536 0.04297 GALAXY 64 0 - 309 51666 537 -0.00001 STAR 524288 0 - 309 51666 538 0.00024 STAR 524288 0 - 309 51666 539 0.00000 UNKNOWN 0 16 - 309 51666 540 0.04351 GALAXY 64 0 - 309 51666 541 0.48509 GALAXY 67108896 0 - 309 51666 542 2.38677 QSO 1056772 0 - 309 51666 543 0.23830 GALAXY 96 0 - 309 51666 544 1.48070 QSO 32 0 - 309 51666 545 0.07811 GALAXY 64 0 - 309 51666 546 0.08378 GALAXY 64 0 - 309 51666 547 0.10703 GALAXY 64 0 - 309 51666 548 0.07805 GALAXY 64 0 - 309 51666 549 0.00000 MISSING 0 0 - 309 51666 550 0.18278 GALAXY 64 0 - 309 51666 551 0.00042 STAR 0 2 - 309 51666 552 0.08396 GALAXY 64 0 - 309 51666 553 -0.00030 STAR 8192 0 - 309 51666 554 0.21562 GALAXY 64 0 - 309 51666 555 0.00016 STAR 4 0 - 309 51666 556 0.43998 GALAXY 67108896 0 - 309 51666 557 0.10228 GALAXY 64 0 - 309 51666 558 0.18616 GALAXY 68 0 - 309 51666 559 0.00000 UNKNOWN 0 16 - 309 51666 560 0.10654 GALAXY 64 0 - 309 51666 561 0.15100 UNKNOWN 42991616 512 - 309 51666 562 0.03499 GALAXY 96 0 - 309 51666 563 0.08036 GALAXY 64 0 - 309 51666 564 0.41533 GALAXY 1 0 - 309 51666 565 0.43840 GALAXY 67108896 0 - 309 51666 566 0.14105 GALAXY 64 0 - 309 51666 567 0.13974 GALAXY 64 0 - 309 51666 568 0.00042 STAR 8196 0 - 309 51666 569 0.75194 UNKNOWN 35651585 0 - 309 51666 570 0.04325 GALAXY 64 0 - 309 51666 571 0.04414 GALAXY 96 0 - 309 51666 572 0.00650 GALAXY 64 0 - 309 51666 573 0.16122 GALAXY 64 0 - 309 51666 574 0.04365 GALAXY 64 0 - 309 51666 575 0.04304 GALAXY 64 0 - 309 51666 576 0.03530 GALAXY 64 0 - 309 51666 577 0.00000 UNKNOWN 0 16 - 309 51666 578 0.04436 GALAXY 64 0 - 309 51666 579 0.04292 GALAXY 64 0 - 309 51666 580 0.11000 GALAXY 64 0 - 309 51666 581 0.10406 GALAXY 64 0 - 309 51666 582 0.11877 GALAXY 64 0 - 309 51666 583 2.75373 QSO 4 0 - 309 51666 584 0.10381 GALAXY 64 0 - 309 51666 585 -0.00032 STAR 42991616 0 - 309 51666 586 2.01877 QSO 20 0 - 309 51666 587 0.08445 GALAXY 64 0 - 309 51666 588 1.49374 QSO 4 0 - 309 51666 589 0.16518 GALAXY 96 0 - 309 51666 590 1.88758 QSO 1048580 0 - 309 51666 591 1.12486 QSO 1048580 0 - 309 51666 592 1.58131 QSO 1048580 0 - 309 51666 593 0.11898 GALAXY 64 0 - 309 51666 594 0.11559 GALAXY 64 0 - 309 51666 595 0.10653 GALAXY 64 0 - 309 51666 596 -0.00008 STAR 1 0 - 309 51666 597 0.30505 GALAXY 32 0 - 309 51666 598 0.44045 GALAXY 32 0 - 309 51666 599 0.00000 UNKNOWN 0 16 - 309 51666 600 0.17725 GALAXY 64 0 - 309 51666 601 0.00000 MISSING 0 0 - 309 51666 602 0.00623 GALAXY 64 0 - 309 51666 603 0.04223 GALAXY 64 0 - 309 51666 604 0.16605 GALAXY 64 0 - 309 51666 605 0.27044 GALAXY 32 0 - 309 51666 606 0.09748 GALAXY 64 0 - 309 51666 607 0.00000 UNKNOWN 0 16 - 309 51666 608 0.08027 GALAXY 96 0 - 309 51666 609 0.07264 UNKNOWN 1 0 - 309 51666 610 0.40250 GALAXY 32 0 - 309 51666 611 0.08336 GALAXY 64 0 - 309 51666 612 -0.00002 UNKNOWN 0 34 - 309 51666 613 0.08323 GALAXY 64 0 - 309 51666 614 0.07993 GALAXY 64 0 - 309 51666 615 0.09673 GALAXY 64 0 - 309 51666 616 0.15991 GALAXY 64 0 - 309 51666 617 0.09685 GALAXY 64 0 - 309 51666 618 0.49199 UNKNOWN 67108896 0 - 309 51666 619 0.16496 GALAXY 64 0 - 309 51666 620 0.68846 GALAXY 1056768 0 - 309 51666 621 0.06793 GALAXY 64 0 - 309 51666 622 0.00000 MISSING 0 0 - 309 51666 623 -0.00051 STAR 8192 0 - 309 51666 624 0.37638 GALAXY 32 0 - 309 51666 625 0.18148 GALAXY 64 0 - 309 51666 626 0.00014 STAR 0 34 - 309 51666 627 0.09782 GALAXY 64 0 - 309 51666 628 0.04117 GALAXY 96 0 - 309 51666 629 0.10286 GALAXY 64 0 - 309 51666 630 0.10575 GALAXY 64 0 - 309 51666 631 0.09739 GALAXY 64 0 - 309 51666 632 -0.00025 STAR 4 0 - 309 51666 633 0.08641 GALAXY 64 0 - 309 51666 634 0.00000 UNKNOWN 0 16 - 309 51666 635 0.37359 GALAXY 32 0 - 309 51666 636 0.21125 GALAXY 64 0 - 309 51666 637 0.23440 GALAXY 96 0 - 309 51666 638 0.03115 GALAXY 64 0 - 309 51666 639 0.32278 QSO 2097152 0 - 309 51666 640 0.11731 GALAXY 64 0 diff --git a/etc/regress1d_all.plates b/etc/regress1d_all.plates deleted file mode 100644 index a349c9e12..000000000 --- a/etc/regress1d_all.plates +++ /dev/null @@ -1,11 +0,0 @@ -300 51666 -301 51641 -302 51688 -303 51615 -304 51609 -305 51613 -306 51690 -307 51663 -308 51662 -309 51666 - diff --git a/etc/sdss-new-logo.png b/etc/sdss-new-logo.png new file mode 100644 index 000000000..444f48a36 Binary files /dev/null and b/etc/sdss-new-logo.png differ diff --git a/examples/batch1d.par b/examples/batch1d.par deleted file mode 100644 index 6a637ad08..000000000 --- a/examples/batch1d.par +++ /dev/null @@ -1,23 +0,0 @@ -# List of computers to use for batch jobs of Spectro-1D -# This file is used by the IDL procedure BATCH1D. - -typedef struct { - char remotehost[40]; # Remote host name - char remotedir[40]; # Remote directory - char protocol[5]; # Protocol name: ssh, ssh1, ssh2 or rsh -} hostconfig; - -hostconfig photo1.astro.princeton.edu "" ssh -hostconfig photo2.astro.princeton.edu "" ssh -hostconfig photo3.astro.princeton.edu "" ssh -hostconfig photo4.astro.princeton.edu "" ssh -hostconfig photo5.astro.princeton.edu "" ssh -hostconfig photo6.astro.princeton.edu "" ssh -hostconfig photo7.astro.princeton.edu "" ssh -hostconfig photo8.astro.princeton.edu "" ssh -hostconfig photo9.astro.princeton.edu "" ssh -hostconfig apache1.astro.princeton.edu "" ssh -hostconfig apache2.astro.princeton.edu "" ssh -hostconfig apache3.astro.princeton.edu "" ssh -#hostconfig localhost "" "" - diff --git a/examples/batch2d.par b/examples/batch2d.par deleted file mode 100644 index ad56540e4..000000000 --- a/examples/batch2d.par +++ /dev/null @@ -1,23 +0,0 @@ -# List of computers to use for batch jobs of Spectro-2D -# This file is used by the IDL procedure BATCH2D. - -typedef struct { - char remotehost[40]; # Remote host name - char remotedir[40]; # Remote directory - char protocol[5]; # Protocol name: ssh, ssh1, ssh2 or rsh -} hostconfig; - -hostconfig photo1.astro.princeton.edu "" ssh -hostconfig photo2.astro.princeton.edu "" ssh -hostconfig photo3.astro.princeton.edu "" ssh -hostconfig photo4.astro.princeton.edu "" ssh -hostconfig photo5.astro.princeton.edu "" ssh -hostconfig photo6.astro.princeton.edu "" ssh -hostconfig photo7.astro.princeton.edu "" ssh -hostconfig photo8.astro.princeton.edu "" ssh -hostconfig photo9.astro.princeton.edu "" ssh -hostconfig apache1.astro.princeton.edu "" ssh -hostconfig apache2.astro.princeton.edu "" ssh -hostconfig apache3.astro.princeton.edu "" ssh -#hostconfig localhost "" "" - diff --git a/examples/cartridgeInfo.par b/examples/cartridgeInfo.par deleted file mode 100644 index aad52f4dc..000000000 --- a/examples/cartridgeInfo.par +++ /dev/null @@ -1,270 +0,0 @@ -TITLE SDSS Engineering Spectrograph cartridge using J holes 990515 -IIm_Ctr 384 256 -IIm_Scale 23722 23722 -IIm_MinXY 0 0 -IIm_MaxXY 767 511 -Inst_Foc 0 -Rot_Inst_xy 0 0 -Rot_Inst_ang -89.97 -InstPosLim -180 360 -GCamID 1 2 -GCViewNum 0 -GIm_MaxCount 4096 -GIm_Ctr 384 256 -GIm_Scale 23722 23722 -GIm_MinXY 0 0 -GIm_MaxXY 767 511 -GIm_BinFac 2 2 -PtErrProbe 10 -GMechID 0 0 -GCNomFocus 0 -GCFocLim 0 0 -GCCurrFiltInd 0 -GCNFilt 0 - -typedef struct { - int cartridgeId; - int gProbeId; - char exists[2]; - float xcen; - float ycen; - float radius; - float rot; -} GPROBE; - -GPROBE 1 1 T 170 421 24.5 -129.4 -GPROBE 1 2 T 172 277 24.5 -228.5 -GPROBE 1 3 T 175 129 24.5 -183.9 -GPROBE 1 4 T 281 423 24.5 -213.8 -GPROBE 1 5 T 285 278 24.5 138.2 -GPROBE 1 6 T 287 132 24.5 76.1 -GPROBE 1 7 T 395 425 24.5 71.6 -GPROBE 1 8 T 396 280 24.5 92.0 -GPROBE 1 9 T 400 133 24.5 104.0 -GPROBE 1 10 T 546 202 40.8 -191.1 -GPROBE 1 11 T 699 405 40.8 8.1 -GPROBE 2 1 T 174 437 24.5 -99.6 -GPROBE 2 2 T 175 292 24.5 -92.1 -GPROBE 2 3 T 176 145 24.5 -193.5 -GPROBE 2 4 T 286 439 24.5 -163.0 -GPROBE 2 5 T 286 295 24.5 191.1 -GPROBE 2 6 T 288 147 24.5 -34.1 -GPROBE 2 7 T 399 441 24.5 213.1 -GPROBE 2 8 T 399 295 24.5 210.6 -GPROBE 2 9 T 401 149 24.5 -13.0 -GPROBE 2 10 T 552 217 40.8 -126.4 -GPROBE 2 11 T 708 421 40.8 -201.7 -GPROBE 3 1 T 177 447 24.5 -175.9 -GPROBE 3 2 T 178 301 24.5 64.6 -GPROBE 3 3 T 181 155 24.5 -266.0 -GPROBE 3 4 T 288 449 24.5 -223.2 -GPROBE 3 5 T 290 303 24.5 63.8 -GPROBE 3 6 T 291 157 24.5 269.3 -GPROBE 3 7 T 400 450 24.5 60.5 -GPROBE 3 8 T 402 304 24.5 85.3 -GPROBE 3 9 T 405 158 24.5 190.5 -GPROBE 3 10 T 549 223 40.8 -165.1 -GPROBE 3 11 T 705 428 40.8 -241.9 -GPROBE 4 1 T 169 441 24.5 -98.7 -GPROBE 4 2 T 168 296 24.5 -60.9 -GPROBE 4 3 F 179 142 24.5 -720.0 -GPROBE 4 4 T 279 440 24.5 -51.3 -GPROBE 4 5 T 280 295 24.5 -59.9 -GPROBE 4 6 T 280 149 24.5 -34.9 -GPROBE 4 7 T 392 442 24.5 -23.2 -GPROBE 4 8 T 391 297 24.5 -63.1 -GPROBE 4 9 T 392 148 24.5 50.1 -GPROBE 4 10 T 542 212 40.8 -62.5 -GPROBE 4 11 T 699 415 40.8 -74.1 -GPROBE 5 1 T 174 445 24.5 -291.7 -GPROBE 5 2 T 173 300 24.5 -224.6 -GPROBE 5 3 T 173 152 24.5 -259.9 -GPROBE 5 4 T 284 444 24.5 43.5 -GPROBE 5 5 T 285 298 24.5 49.5 -GPROBE 5 6 T 283 152 24.5 137.5 -GPROBE 5 7 T 397 445 24.5 201.0 -GPROBE 5 8 T 397 298 24.5 34.6 -GPROBE 5 9 T 397 153 24.5 186.2 -GPROBE 5 10 T 544 215 40.8 -179.5 -GPROBE 5 11 T 702 416 40.8 -196.2 -GPROBE 6 1 T 181 430 24.5 622.2 -GPROBE 6 2 T 182 285 24.5 565.2 -GPROBE 6 3 T 187 139 24.5 317.9 -GPROBE 6 4 T 292 431 24.5 401.5 -GPROBE 6 5 T 295 287 24.5 248.0 -GPROBE 6 6 T 298 139 24.5 359.5 -GPROBE 6 7 T 405 434 24.5 335.2 -GPROBE 6 8 T 407 288 24.5 315.6 -GPROBE 6 9 T 410 142 24.5 299.0 -GPROBE 6 10 T 559 207 40.8 303.1 -GPROBE 6 11 T 711 416 40.8 617.5 -GPROBE 7 1 T 174 437 24.5 -182.3 -GPROBE 7 2 T 178 291 24.5 -184.0 -GPROBE 7 3 T 182 145 24.5 -198.1 -GPROBE 7 4 T 286 438 24.5 -165.6 -GPROBE 7 5 T 289 293 24.5 169.2 -GPROBE 7 6 T 295 147 24.5 106.9 -GPROBE 7 7 T 398 443 24.5 179.5 -GPROBE 7 8 T 401 298 24.5 138.9 -GPROBE 7 9 T 407 150 24.5 206.0 -GPROBE 7 10 T 553 216 40.8 -171.8 -GPROBE 7 11 T 705 424 40.8 -193.7 -GPROBE 8 1 T 180 436 24.5 -269.4 -GPROBE 8 2 T 182 291 24.5 -259.2 -GPROBE 8 3 T 184 145 24.5 -137.4 -GPROBE 8 4 T 291 439 24.5 109.0 -GPROBE 8 5 T 292 295 24.5 140.9 -GPROBE 8 6 T 295 146 24.5 125.1 -GPROBE 8 7 T 404 440 24.5 112.7 -GPROBE 8 8 T 403 294 24.5 74.4 -GPROBE 8 9 T 408 148 24.5 190.7 -GPROBE 8 10 T 556 215 40.8 -110.6 -GPROBE 8 11 T 711 419 40.8 -198.5 -GPROBE 9 1 T 173 436 24.5 -23.7 -GPROBE 9 2 T 176 291 24.5 -90.1 -GPROBE 9 3 T 180 144 24.5 -314.0 -GPROBE 9 4 T 284 438 24.5 -77.5 -GPROBE 9 5 T 288 294 24.5 236.1 -GPROBE 9 6 T 291 147 24.5 -75.6 -GPROBE 9 7 T 398 442 24.5 251.8 -GPROBE 9 8 T 399 296 24.5 -76.8 -GPROBE 9 9 T 403 150 24.5 -7.7 -GPROBE 9 10 T 550 218 40.8 -61.6 -GPROBE 9 11 T 704 423 40.8 -29.8 - -GPROBE 10 1 T 225 452 8.0 0.0 -GPROBE 10 2 T 158 312 8.0 0.0 -GPROBE 10 3 T 127 141 27.5 0.0 -GPROBE 10 4 T 226 105 8.0 0.0 -GPROBE 10 5 T 227 277 8.0 0.0 -GPROBE 10 6 T 225 191 8.0 0.0 -GPROBE 10 7 T 90 245 8.0 0.0 -GPROBE 10 8 T 226 367 8.0 0.0 -GPROBE 10 9 T 303 364 8.0 0.0 -GPROBE 10 10 T 305 277 8.0 0.0 -GPROBE 10 11 T 398 140 27.5 0.0 -GPROBE 10 12 T 304 189 8.0 0.0 -GPROBE 10 13 T 371 402 8.0 0.0 -GPROBE 10 14 T 303 104 8.0 0.0 -GPROBE 10 15 T 441 332 8.0 0.0 -GPROBE 10 16 T 303 450 8.0 0.0 - -GPROBE 11 1 T 225 452 8.0 0.0 -GPROBE 11 2 T 158 312 8.0 0.0 -GPROBE 11 3 T 127 141 27.5 0.0 -GPROBE 11 4 T 226 105 8.0 0.0 -GPROBE 11 5 F 227 277 8.0 0.0 -GPROBE 11 6 T 225 191 8.0 0.0 -GPROBE 11 7 T 90 245 8.0 0.0 -GPROBE 11 8 T 226 367 8.0 0.0 -GPROBE 11 9 T 303 364 8.0 0.0 -GPROBE 11 10 T 305 277 8.0 0.0 -GPROBE 11 11 T 398 140 27.5 0.0 -GPROBE 11 12 T 304 189 8.0 0.0 -GPROBE 11 13 T 371 402 8.0 0.0 -GPROBE 11 14 T 303 104 8.0 0.0 -GPROBE 11 15 T 441 332 8.0 0.0 -GPROBE 11 16 T 303 450 8.0 0.0 - -GPROBE 12 1 T 225 452 8.0 0.0 -GPROBE 12 2 T 158 312 8.0 0.0 -GPROBE 12 3 T 127 141 27.5 0.0 -GPROBE 12 4 T 226 105 8.0 0.0 -GPROBE 12 5 T 227 277 8.0 0.0 -GPROBE 12 6 T 225 191 8.0 0.0 -GPROBE 12 7 T 90 245 8.0 0.0 -GPROBE 12 8 T 226 367 8.0 0.0 -GPROBE 12 9 T 303 364 8.0 0.0 -GPROBE 12 10 T 305 277 8.0 0.0 -GPROBE 12 11 T 398 140 27.5 0.0 -GPROBE 12 12 T 304 189 8.0 0.0 -GPROBE 12 13 T 371 402 8.0 0.0 -GPROBE 12 14 T 303 104 8.0 0.0 -GPROBE 12 15 T 441 332 8.0 0.0 -GPROBE 12 16 T 303 450 8.0 0.0 - -GPROBE 13 1 T 225 452 8.0 0.0 -GPROBE 13 2 T 158 312 8.0 0.0 -GPROBE 13 3 T 127 141 27.5 0.0 -GPROBE 13 4 T 226 105 8.0 0.0 -GPROBE 13 5 T 227 277 8.0 0.0 -GPROBE 13 6 T 225 191 8.0 0.0 -GPROBE 13 7 T 90 245 8.0 0.0 -GPROBE 13 8 T 226 367 8.0 0.0 -GPROBE 13 9 T 303 364 8.0 0.0 -GPROBE 13 10 T 305 277 8.0 0.0 -GPROBE 13 11 T 398 140 27.5 0.0 -GPROBE 13 12 T 304 189 8.0 0.0 -GPROBE 13 13 T 371 402 8.0 0.0 -GPROBE 13 14 T 303 104 8.0 0.0 -GPROBE 13 15 T 441 332 8.0 0.0 -GPROBE 13 16 T 303 450 8.0 0.0 - -GPROBE 14 1 T 225 452 8.0 0.0 -GPROBE 14 2 T 158 312 8.0 0.0 -GPROBE 14 3 T 127 141 27.5 0.0 -GPROBE 14 4 T 226 105 8.0 0.0 -GPROBE 14 5 T 227 277 8.0 0.0 -GPROBE 14 6 T 225 191 8.0 0.0 -GPROBE 14 7 T 90 245 8.0 0.0 -GPROBE 14 8 T 226 367 8.0 0.0 -GPROBE 14 9 T 303 364 8.0 0.0 -GPROBE 14 10 T 305 277 8.0 0.0 -GPROBE 14 11 T 398 140 27.5 0.0 -GPROBE 14 12 T 304 189 8.0 0.0 -GPROBE 14 13 T 371 402 8.0 0.0 -GPROBE 14 14 T 303 104 8.0 0.0 -GPROBE 14 15 T 441 332 8.0 0.0 -GPROBE 14 16 T 303 450 8.0 0.0 - -GPROBE 15 1 T 225 452 8.0 0.0 -GPROBE 15 2 T 158 312 8.0 0.0 -GPROBE 15 3 T 127 141 27.5 0.0 -GPROBE 15 4 T 226 105 8.0 0.0 -GPROBE 15 5 T 227 277 8.0 0.0 -GPROBE 15 6 T 225 191 8.0 0.0 -GPROBE 15 7 T 90 245 8.0 0.0 -GPROBE 15 8 T 226 367 8.0 0.0 -GPROBE 15 9 T 303 364 8.0 0.0 -GPROBE 15 10 T 305 277 8.0 0.0 -GPROBE 15 11 T 398 140 27.5 0.0 -GPROBE 15 12 T 304 189 8.0 0.0 -GPROBE 15 13 T 371 402 8.0 0.0 -GPROBE 15 14 T 303 104 8.0 0.0 -GPROBE 15 15 T 441 332 8.0 0.0 -GPROBE 15 16 T 303 450 8.0 0.0 - -GPROBE 16 1 T 225 452 8.0 0.0 -GPROBE 16 2 T 158 312 8.0 0.0 -GPROBE 16 3 T 127 141 27.5 0.0 -GPROBE 16 4 T 226 105 8.0 0.0 -GPROBE 16 5 T 227 277 8.0 0.0 -GPROBE 16 6 T 225 191 8.0 0.0 -GPROBE 16 7 T 90 245 8.0 0.0 -GPROBE 16 8 T 226 367 8.0 0.0 -GPROBE 16 9 T 303 364 8.0 0.0 -GPROBE 16 10 T 305 277 8.0 0.0 -GPROBE 16 11 T 398 140 27.5 0.0 -GPROBE 16 12 T 304 189 8.0 0.0 -GPROBE 16 13 T 371 402 8.0 0.0 -GPROBE 16 14 T 303 104 8.0 0.0 -GPROBE 16 15 T 441 332 8.0 0.0 -GPROBE 16 16 T 303 450 8.0 0.0 - -GPROBE 17 1 T 225 452 8.0 0.0 -GPROBE 17 2 T 158 312 8.0 0.0 -GPROBE 17 3 T 127 141 27.5 0.0 -GPROBE 17 4 T 226 105 8.0 0.0 -GPROBE 17 5 T 227 277 8.0 0.0 -GPROBE 17 6 T 225 191 8.0 0.0 -GPROBE 17 7 T 90 245 8.0 0.0 -GPROBE 17 8 T 226 367 8.0 0.0 -GPROBE 17 9 T 303 364 8.0 0.0 -GPROBE 17 10 T 305 277 8.0 0.0 -GPROBE 17 11 T 398 140 27.5 0.0 -GPROBE 17 12 T 304 189 8.0 0.0 -GPROBE 17 13 T 371 402 8.0 0.0 -GPROBE 17 14 T 303 104 8.0 0.0 -GPROBE 17 15 T 441 332 8.0 0.0 -GPROBE 17 16 T 303 450 8.0 0.0 - diff --git a/examples/g_codes_alignment.txt b/examples/g_codes_alignment.txt deleted file mode 100644 index 74dee00c1..000000000 --- a/examples/g_codes_alignment.txt +++ /dev/null @@ -1,10 +0,0 @@ -M09 -G00 G80 G28 G91 Z0.0 -G69 -M01 - -N03 G00 G28 G91 Z0.0 T03 M06 (0.044" DRILL) -G68 X0.0 Y0.0 R-90.0 -M03 S3500 -G00 G40 G80 G90 - diff --git a/examples/g_codes_completion.txt b/examples/g_codes_completion.txt deleted file mode 100644 index 734102507..000000000 --- a/examples/g_codes_completion.txt +++ /dev/null @@ -1,86 +0,0 @@ -G00 Z2.000 M09 -G00 G80 G28 G91 Z0.0 -G69 -M01 - -N400 G00 G28 G91 Z0.0 T04 M06 (CENTER DRILL) -N401 G68 X0.0 Y0.0 R-90.0 -N402 G54 G40 G90 X0.0000 Y-14.4000 S1500 M03 -N403 G43 Z3.000 H04 -N404 G17 M08 -N405 G01 Z1.600 F40.0 -N406 G98 G81 Z-0.500 R-0.299 F3.0 L0 -N407 G60 X0.0000 Y-14.4000 -N408 G60 X12.4708 Y7.2000 -N409 G60 X-12.4708 Y7.2000 -N410 G00 Z2.000 M09 -N411 G00 G80 G28 G91 Z0.0 -N412 G69 -N413 M01 - -N500 G00 G28 G91 Z0.0 T05 M06 (7/32" DRILL) -N501 G68 X0.0 Y0.0 R-90.0 -N502 G54 G40 G90 X0.0000 Y-14.4000 S2000 M03 -N503 G43 Z3.000 H05 -N504 G17 M08 -N505 G01 Z1.600 F40.0 -N506 G98 G83 Z-0.700 R-0.299 Q0.100 F8.0 L0 -N507 G60 X0.0000 Y-14.4000 -N508 G60 X12.4708 Y7.2000 -N509 G60 X-12.4708 Y7.2000 -N510 G00 Z2.000 M09 -N511 G00 G80 G28 G91 Z0.0 -N512 G69 -N513 M01 - -N600 G00 G28 G91 Z0.0 T06 M06 (BORING HEAD) -N601 G68 X0.0 Y0.0 R-90.0 -N602 G54 G40 G90 X0.0000 Y-14.4000 S1000 M03 -N603 G43 Z3.000 H06 -N604 G17 M08 -N605 G01 Z1.600 F40.0 -N606 G98 G81 Z-0.500 R-0.299 F3.0 L0 -N607 G60 X0.0000 Y-14.4000 -N608 G60 X12.4708 Y7.2000 -N609 G60 X-12.4708 Y7.2000 -N610 G00 Z2.000 M09 -N611 G00 G80 G28 G91 Z0.0 -N612 G69 -N613 M01 - -N700 G00 G28 G91 Z0.0 T07 M06(1/4" REAMER) -N701 G68 X0.0 Y0.0 R-90.0 -N702 G54 G40 G90 X0.0000 Y-14.4000 S1000 M03 -N703 G43 Z3.000 H07 -N704 G17 M08 -N705 G01 Z1.600 F40.0 -N706 G98 G81 Z-0.650 R-0.299 F3.0 L0 -N707 G60 X0.0000 Y-14.4000 -N708 G60 X12.4708 Y7.2000 -N709 G60 X-12.4708 Y7.2000 -N710 G00 Z2.000 M09 -N711 G00 G80 G28 G91 Z0.0 -N712 G69 -N713 M01 - -N800 G69 G20 -N801 G00 G28 G91 Z0.0 T08 M06 (ENGRAVING TOOL) -N802 G54 G40 G90 X-16. Y.25 S3500 M03 -N803 G43 Z1.000 H08 -N804 G17 M08 -N805 G01 Z0.100 F100.0 -N806 G52 X-16. Y.25 -N807 M98 P78-- -N808 G52 X-16. Y.125 -N809 M98 P78-- -N810 G52 X-16. Y0. -N811 M98 P78-- -N812 G52 X-16. Y-.125 -N813 M98 P78-- -N808 G52 X-16. Y-.25 -N809 M98 P78-- -N816 G52 X0.0 Y0.0 -N817 G00 Z3.000 M09 -N818 G00 G80 G28 G91 Z0.0 T01 M06 -N819 G00 G90 G53 X41.000 Y0.0 -N820 M30 diff --git a/examples/g_codes_lighttrap.txt b/examples/g_codes_lighttrap.txt deleted file mode 100644 index 9eb910a08..000000000 --- a/examples/g_codes_lighttrap.txt +++ /dev/null @@ -1,9 +0,0 @@ -M09 -G00 G80 G28 G91 Z0.0 -G69 -M01 - -N02 G00 G28 G91 Z0.0 T02 M06 (0.125" DRILL) -G68 X0.0 Y0.0 R-90.0 -M03 S3500 -G00 G40 G80 G90 diff --git a/examples/g_codes_object.txt b/examples/g_codes_object.txt deleted file mode 100644 index 4da812ddd..000000000 --- a/examples/g_codes_object.txt +++ /dev/null @@ -1,17 +0,0 @@ -(SET UP SO THAT THE BIT JUST TOUCHES THE) -(SURFACE OF THE PART AT Z AND R EQUAL 0 ) -(#1. 0.0853" DRILL) -(#2. 0.125" DRILL) -(#3. 0.044 DRILL) -(#4. EXTENDED CENTER DRILL) -(#5. 7/32" DRILL) -(#6. BORING HEAD SET TO 0.245") -(#7. 1/4" REAMER) -(#8. 1/8" ENGRAVING TOOL) - -M00 -N01 G20 G80 -G00 G28 G91 Z0.0 T01 M06 (0.0853" DRILL) -G68 X0.0 Y0.0 R-90.0 -M03 S3500 -G00 G90 G40 G17 diff --git a/examples/opLimits.par b/examples/opLimits.par index fefcaa709..71516aa24 100644 --- a/examples/opLimits.par +++ b/examples/opLimits.par @@ -95,14 +95,14 @@ speclimit red flat NGOODFIBER r2 0 490 # Issue an error if the spatial widths are too large (out of focus) speclimit yellow flat XSIGMA b1 1.25 9e9 -speclimit yellow flat XSIGMA b2 1.15 9e9 +speclimit yellow flat XSIGMA b2 1.25 9e9 speclimit yellow flat XSIGMA r1 1.25 9e9 -speclimit yellow flat XSIGMA r2 1.20 9e9 +speclimit yellow flat XSIGMA r2 1.25 9e9 speclimit red flat XSIGMA b1 1.30 9e9 -speclimit red flat XSIGMA b2 1.20 9e9 +speclimit red flat XSIGMA b2 1.30 9e9 speclimit red flat XSIGMA r1 1.30 9e9 -speclimit red flat XSIGMA r2 1.25 9e9 +speclimit red flat XSIGMA r2 1.30 9e9 # For arcs, insist on exposure times of 3-5 sec. @@ -130,29 +130,33 @@ speclimit red arc EXPTIME b2 50 9e9 # This also better fits the scatter found by David Harris. # Change wavemid to new values based on no-reflection range from Kaike for 55800+, # see infrastructre e-mail 5637 ( 4912 A for b1, 8000 A for r1) -# Update : Oct 13 2015: The WAVEMID values are changed post summer shutdown 2015 after +# Update : Oct 13 2015: The WAVEMID values are changed post summer shutdown 2015 after # analysing the sparse plug taken on MJD 57249 # speclimit yellow arc WAVEMID b1 -9e9 4903 -speclimit yellow arc WAVEMID b2 -9e9 4984 +speclimit yellow arc WAVEMID b2 -9e9 4950 #supress colors +#speclimit yellow arc WAVEMID b2 -9e9 4984 speclimit yellow arc WAVEMID r1 -9e9 7988 -speclimit yellow arc WAVEMID r2 -9e9 8008 +speclimit yellow arc WAVEMID r2 -9e9 7950 +#speclimit yellow arc WAVEMID r2 -9e9 8008 speclimit yellow arc WAVEMID b1 4923 9e9 -speclimit yellow arc WAVEMID b2 5004 9e9 +speclimit yellow arc WAVEMID b2 5055 9e9 +#speclimit yellow arc WAVEMID b2 5004 9e9 speclimit yellow arc WAVEMID r1 8008 9e9 -speclimit yellow arc WAVEMID r2 8028 9e9 +speclimit yellow arc WAVEMID r2 8078 9e9 +#speclimit yellow arc WAVEMID r2 8028 9e9 speclimit red arc WAVEMID b1 -9e9 4898 -speclimit red arc WAVEMID b2 -9e9 4979 +#speclimit red arc WAVEMID b2 -9e9 4979 speclimit red arc WAVEMID r1 -9e9 7978 -speclimit red arc WAVEMID r2 -9e9 7998 +#speclimit red arc WAVEMID r2 -9e9 7998 speclimit red arc WAVEMID b1 4928 9e9 -speclimit red arc WAVEMID b2 5009 9e9 +#speclimit red arc WAVEMID b2 5009 9e9 speclimit red arc WAVEMID r1 8018 9e9 -speclimit red arc WAVEMID r2 8038 9e9 +#speclimit red arc WAVEMID r2 8038 9e9 # The correlations of the arc lamps to that expected almost always # exceeds 0.80. Issue a warning if it drops below 0.75, and an error @@ -185,14 +189,14 @@ speclimit red arc NLAMPS r2 0 30 # Issue an error if the wavelength widths are too big (out of focus) speclimit yellow arc WSIGMA b1 1.25 9e9 -speclimit yellow arc WSIGMA b2 1.15 9e9 +speclimit yellow arc WSIGMA b2 1.25 9e9 speclimit yellow arc WSIGMA r1 1.25 9e9 -speclimit yellow arc WSIGMA r2 1.20 9e9 +speclimit yellow arc WSIGMA r2 1.25 9e9 speclimit red arc WSIGMA b1 1.30 9e9 -speclimit red arc WSIGMA b2 1.20 9e9 +speclimit red arc WSIGMA b2 1.30 9e9 speclimit red arc WSIGMA r1 1.30 9e9 -speclimit red arc WSIGMA r2 1.25 9e9 +speclimit red arc WSIGMA r2 1.30 9e9 # For science frames, insist on exposure times between 299 and 1804 sec. diff --git a/examples/plParam.par b/examples/plParam.par deleted file mode 100644 index 0083f63c1..000000000 --- a/examples/plParam.par +++ /dev/null @@ -1,114 +0,0 @@ -# -# PLATE parameters -# - -# params for makePlates - -# Params for diff. refraction done by slalib -obsPres 1013.25 # typical pressure (millbars) -obsRH 0.2 # typical relative humidity -tropLR 0.0065 # tropospheric lapse rate (deg K / meter) -wave 0.5 # wavelength (in microns) for diff. refraction - -# Params for optical plate distortion; this gets us from (ra,dec) -# to focal plane (x,y), in mm -optDistScale 217.7358 # plate scale, mm / degree -optDistParity 1 # +1 if (x,y) system is right handed - # -1 if (x,y) system is left handed -optDistXcenter 0.0 # center of radial distortion pattern -optDistYcenter 0.0 -optDistCoeff -0.000137627 -0.00125238 1.5447e-09 8.23673e-08 -2.74584e-13 -1.53239e-12 6.04194e-18 1.38033e-17 -2.97064e-23 -3.58767e-23 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 - -# quality holes : num. of quality holes, -# then x,y of each quality hole location (in mm) -qualityHoles 6 \ - 300.0 0.0 \ - -300.0 0.0 \ - 150.0 259.8076 \ - -150.0 259.8076 \ - -150.0 -259.8076 \ - 150.0 -259.8076 - - - -# params for fiberPlates -guideSelection 0.5 # this sets how the guide star selection is done; - # 1.0 means select purely by magnitude; - # 0.0 means select purely by dist. from the preferred x,y; - # a float between 1 and 1 means a mixture of the 2. - -spectrographs {1 2} # which spectrographs are being used? 1 or 2 or both? - -# reach goes as : number of fibers; then for each fiber, 1 set of : -# x,y of the center of the fiber reach; radius of the reach; -# x,y of the preferred guide hole location (all in mm) -guideReach 11 1 199.0 -131.0 165.0 199.0 -131.0 \ - 2 93.0 -263.0 165.0 93.0 -263.0 \ - 3 -121.0 -263.0 165.0 -121.0 -263.0 \ - 4 -227.0 -131.0 165.0 -227.0 -131.0 \ - 5 -199.0 131.0 165.0 -199.0 131.0 \ - 6 -93.0 263.0 165.0 -93.0 263.0 \ - 7 121.0 263.0 165.0 121.0 263.0 \ - 8 227.0 131.0 165.0 227.0 131.0 \ - 9 14.0 131.0 139.5 14.0 65.0 \ - 10 -14.0 -131.0 165.0 -14.0 -65.0 \ - 11 93.0 -131.0 139.5 93.0 -131.0 - -#cSkyReach 1 11 93.0 -131.0 139.5 93.0 -131.0 -cSkyReach 0 - - - - - -# params for makeFanuc. makes file formatted for input into U.Washington -# plate drilling machine - -# Params for plate bending distortion -# from http://www.apo.nmsu.edu/Telescopes/SDSS/eng.papers/19990112_PlugPlateDistortion/19990112.html -bendDistScale 1.0 # at the moment, scale not used for bending -bendDistParity 1 -bendDistXcenter 0.0 -bendDistYcenter 0.0 -bendDistCoeff 0.0 -5.193e-4 0.0 9.09e-9 0.0 -5.42e-14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 - -# Params for plate shape (deflection in z, perpendicular to the plate face -plateShapeScale 1.0 # at the moment, scale not used for curvature -plateShapeParity 1 -plateShapeXcenter 0.0 -plateShapeYcenter 0.0 -plateShapeCoeff -5.6607e-02 0.0 -1.5059e-04 0.0 1.6822e-09 0.0 -1.8194e-14 0.0 1.1702e-19 0.0 -2.8400e-25 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 - -tempShop 20 # temperature of plate during drilling (deg C) -ZOffset -3.9624 # drilling offset (mm) -ZOffsetR 0.762 # drilling offset (mm) -thermalExpand 21.24e-6 # percentage expansion per deg C -maxRadius 326.644 # max hole position radius (mm) -objectCodesFile g_codes_object.txt -trapCodesFile g_codes_lighttrap.txt -endCodesFile g_codes_completion.txt -alignCodesFile g_codes_alignment.txt - - - - -# params for makeDrillPos. Makes files for plate measuring QA -# (also uses tempShop, thermalExpand, and the bending distortion -# from makeFanuc params - -# plate flattening distortion -# from http://www.apo.nmsu.edu/Telescopes/SDSS/eng.papers/19990112_PlugPlateDistortion/19990112.html -# note : for some reason the measured hole positions match the drilled -# positions better without applying this distortion. So for now I have -# commented them out and added zeros for this distortion so that it is -# not used. -flatDistScale 1.0 # at the moment, scale not used for flattening -flatDistParity 1 -flatDistXcenter 0.0 -flatDistYcenter 0.0 -#flatDistCoeff 0.0 5.28e-4 0.0 -1.109e-8 0.0 5.26e-14 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -#flatDistCoeff 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 - -#12/12/01 Steve Kent -#Use new distortion coefficients from Russ Owen. These give drill - flat. -flatDistCoeff 0.0 6.322e-4 -4.733e-6 1.775e-8 -6.639e-11 1.412e-13 -1.039e-16 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 diff --git a/examples/plPlugMapP-verify.par b/examples/plPlugMapP-verify.par deleted file mode 100644 index 49acaf39f..000000000 --- a/examples/plPlugMapP-verify.par +++ /dev/null @@ -1,78 +0,0 @@ -# This file has the header values that should appear in all the BOSS -# plPlugMapP files. - -pointing A -instruments BOSS -targettypes science sky standard -npointings 1 -noffsets 0 -gfibertype gfiber2 -guidetype SDSS -guidenums1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 -platedesignstandards NONE -standardtype NONE -platedesignskies BOSS -skytype BOSS -plugmapstyle plplugmap_boss -bossmagtype fiber2mag -platetype BOSS -maxskyinblockboss 2 -theta 0 - -typedef enum { - OBJECT, - COHERENT_SKY, - GUIDE, - LIGHT_TRAP, - ALIGNMENT, - QUALITY -} HOLETYPE; -typedef enum { - GALAXY, - QSO, - STAR_BHB, - STAR_CARBON, - STAR_BROWN_DWARF, - STAR_SUB_DWARF, - STAR_CATY_VAR, - STAR_RED_DWARF, - STAR_WHITE_DWARF, - REDDEN_STD, - SPECTROPHOTO_STD, - HOT_STD, - ROSAT_A, - ROSAT_B, - ROSAT_C, - ROSAT_D, - SERENDIPITY_BLUE, - SERENDIPITY_FIRST, - SERENDIPITY_RED, - SERENDIPITY_DISTANT, - SERENDIPITY_MANUAL, - QA, - SKY, - NA -} OBJTYPE; - -typedef struct { - int objId[5]; - HOLETYPE holeType; - double ra; - double dec; - float mag[5]; - float starL; - float expL; - float deVaucL; - OBJTYPE objType; - double xFocal; - double yFocal; - int spectrographId; - int fiberId; - int throughput; - int primTarget; - int secTarget; -} PLUGMAPOBJ; - - -PLUGMAPOBJ { 0 0 0 0 0 } LIGHT_TRAP 0.000000 0.00000000 { 0.00000 0.00000 0.00000 0.00000 0.00000 } 0.00000 0.00000 0.00000 NA 0.00000 0.000000 0 -9999 0 0 0 - diff --git a/examples/plPlugMapT-XXXX.par b/examples/plPlugMapT-XXXX.par deleted file mode 100644 index 1ee8aa2b4..000000000 --- a/examples/plPlugMapT-XXXX.par +++ /dev/null @@ -1,61 +0,0 @@ - -completeTileVersion v1_0 -tileId 0001 - -typedef enum { - OBJECT, - COHERENT_SKY, - GUIDE, - LIGHT_TRAP, - ALIGNMENT, - QUALITY -} HOLETYPE; - -typedef enum { - GALAXY, - QSO, - STAR_BHB, - STAR_CARBON, - STAR_BROWN_DWARF, - STAR_SUB_DWARF, - STAR_CATY_VAR, - STAR_RED_DWARF, - STAR_WHITE_DWARF, - REDDEN_STD, - SPECTROPHOTO_STD, - HOT_STD, - ROSAT_A, - ROSAT_B, - ROSAT_C, - ROSAT_D, - SERENDIPITY_BLUE, - SERENDIPITY_FIRST, - SERENDIPITY_RED, - SERENDIPITY_DISTANT, - SERENDIPITY_MANUAL, - QA, - SKY, - NA -} OBJTYPE; - -typedef struct { - int objId[5]; - HOLETYPE holeType; - double ra; - double dec; - float mag[5]; - float starL; - float expL; - float deVaucL; - OBJTYPE objType; - double xFocal; - double yFocal; - int spectrographId; - int fiberId; - int throughput; - int primTarget; - int secTarget; -} PLUGMAPOBJ; - -PLUGMAPOBJ { 0 0 0 0 0 } OBJECT 0.00000 0.000000 { 0.00000 0.00000 0.00000 0.00000 0.00000 } 0.00000 0.00000 0.00000 GALAXY 0.00000 0.000000 -9999 -9999 -9999 0 0 - diff --git a/examples/scattering-b1-00000.fits b/examples/scattering-b1-00000.fits deleted file mode 100644 index 25ab7dc7d..000000000 Binary files a/examples/scattering-b1-00000.fits and /dev/null differ diff --git a/examples/scattering-b2-00000.fits b/examples/scattering-b2-00000.fits deleted file mode 100644 index d384e86d0..000000000 Binary files a/examples/scattering-b2-00000.fits and /dev/null differ diff --git a/examples/scattering-r1-00000.fits b/examples/scattering-r1-00000.fits deleted file mode 100644 index 02e8869b9..000000000 Binary files a/examples/scattering-r1-00000.fits and /dev/null differ diff --git a/examples/scattering-r2-00000.fits b/examples/scattering-r2-00000.fits deleted file mode 100644 index 7227409e8..000000000 Binary files a/examples/scattering-r2-00000.fits and /dev/null differ diff --git a/examples/spFluxTemplates-b1.fits b/examples/spFluxTemplates-b1.fits deleted file mode 100644 index 0dfcc061a..000000000 Binary files a/examples/spFluxTemplates-b1.fits and /dev/null differ diff --git a/examples/spFluxTemplates-b2.fits b/examples/spFluxTemplates-b2.fits deleted file mode 100644 index 776ffa705..000000000 Binary files a/examples/spFluxTemplates-b2.fits and /dev/null differ diff --git a/examples/spFluxTemplates-r1.fits b/examples/spFluxTemplates-r1.fits deleted file mode 100644 index fd56eb423..000000000 Binary files a/examples/spFluxTemplates-r1.fits and /dev/null differ diff --git a/examples/spFluxTemplates-r2.fits b/examples/spFluxTemplates-r2.fits deleted file mode 100644 index 630350513..000000000 Binary files a/examples/spFluxTemplates-r2.fits and /dev/null differ diff --git a/fluxcorr_prior 2.py b/fluxcorr_prior 2.py deleted file mode 100755 index d395beffe..000000000 --- a/fluxcorr_prior 2.py +++ /dev/null @@ -1,238 +0,0 @@ -#!/usr/bin/env python - -""" -Try solving with a prior that fluxcorr = 1 -""" - -import sys -import os -import os.path -import numpy as N -import pylab as P -import fitsio -from numpy.polynomial import chebyshev -from scipy.sparse.construct import spdiags -import yanny - -#------------------------------------------------------------------------- - -def read_plan(planfile): - plan = yanny.read_yanny(planfile) - plandir = os.path.dirname(planfile) - framefiles = dict(b1=list(), b2=list(), r1=list(), r2=list()) - - for i in range(len(plan['SPEXP']['name'])): - rawfiles = plan['SPEXP']['name'][i] - for filename in rawfiles: - if 'UNKNOWN' in filename: continue - pre, camera, exp = os.path.splitext(filename)[0].split('-') - if not os.path.exists(filename) and not filename.endswith('.gz'): - filename = filename + '.gz' - if not os.path.exists(filename): - print 'fluxcorr_prior.py: File does not exist, skipping. %s'%filename - continue - framefiles[camera].append(filename) - - return framefiles - -def read_data(indir, framefiles, xythrucorr=False): - flux = list() - ivar = list() - goodframes = set() - - for framefile in framefiles: - infile = indir + '/' + framefile - - calibfile = infile.replace('spFrame', 'spFluxcalib') - xythrufile = infile.replace('spFrame', 'spXYthrucorr') - - if not os.path.exists(infile): - print "WARNING: Skipping missing", infile - continue - - if not os.path.exists(calibfile): - print "WARNING: Skipping missing", calibfile - continue - - if xythrucorr and not os.path.exists(xythrufile): - print "WARNING: Skipping missing", xythrufile - continue - - goodframes.add(framefile) - - calib = fitsio.read(calibfile, 0) - goodcalib = (calib != 0) - - print "Reading", os.path.basename(infile) - fx = fitsio.FITS(infile) - xflux = fx[0].read() - xflux[goodcalib] /= calib[goodcalib] - - xivar = fx[1].read() - xmask = fx[2].read() - xivar[xmask != 0] = 0.0 - xivar[goodcalib] *= calib[goodcalib]**2 - - if xythrucorr: - print "Reading", os.path.basename(xythrufile) - thrucorr = fitsio.read(xythrufile, 0) - xflux[goodcalib] *= thrucorr[goodcalib] - xivar[goodcalib] /= (thrucorr[goodcalib])**2 - - - #- Add to flux and ivar lists - flux.append(xflux) - ivar.append(xivar) - - fx.close() - - flux = N.array(flux) - ivar = N.array(ivar) - flux[ivar==0] = 0.0 #- cosmetics - - return flux, ivar, goodframes - - -def calc_fluxcorr(flux, ivar, prior=0.5): - - print "Calculating flux corrections" - - #- The array to fill - fluxcorr = N.ones(flux.shape) - - #- Determine range to actually fill - ii = N.where( N.sum(N.sum(ivar, axis=0), axis=0) > 0 )[0] - imin, imax = ii[0], ii[-1]+1 - flux = flux[:, :, imin:imax] - ivar = ivar[:, :, imin:imax] - - nexp, nspec, npix = flux.shape - - #- Make coadd; handle cases where sum(weights) = 0 - weighted_flux = N.sum(flux*ivar, axis=0) - sum_weights = N.sum(ivar, axis=0) - coadd = N.zeros(weighted_flux.shape) - ii = (sum_weights > 0) - coadd[ii] = weighted_flux[ii] / sum_weights[ii] - - #- Create Chebyshev matrix - #- FL = diag(coadd).dot(ChebyPolys) - #- flux[i] = FL.dot(c[i]) - npoly = 4 - xx = N.linspace(-1, 1, npix) - - L = N.zeros( (npix, npoly) ) - for i in range(npoly): - c = N.zeros(npoly) - c[i] = 1.0 - L[:,i] = chebyshev.chebval(xx, c) - - for ispec in range(nspec): - c = list() - FL = spdiags(coadd[ispec], 0, npix, npix).dot(L) - for iexp in range(nexp): - #- Create diagonal weights matrix, throwing out worst 5% for robustness - weights = ivar[iexp, ispec].copy() - if N.sum(weights) == 0: - corr = N.zeros(npoly) - corr[0] = 1.0 - c.append(corr) - continue - - wcut = N.percentile(weights[weights>0], 5) - weights[weights 2: - xythrucorr = True -else: - xythrucorr = False - -plandir = os.path.dirname(os.path.abspath(planfile)) -framefiles = read_plan(planfile) -for camera in ('b1', 'b2', 'r1', 'r2'): - flux, ivar, goodframes = read_data(plandir, framefiles[camera], xythrucorr=xythrucorr) - if len(goodframes)>0: - fluxcorr = calc_fluxcorr(flux, ivar, prior=1.0) - addterm = N.zeros(fluxcorr[0].shape) - - i = 0 - for framefile in framefiles[camera]: - corrfile = plandir+'/'+framefile.replace('spFrame', 'spFluxcorr') - if corrfile.endswith('.gz'): - corrfile = corrfile[:-3] - - print "Writing", os.path.basename(corrfile) - if framefile in goodframes: - corr=fluxcorr[i] - add = addterm - i+=1 - else: - fluxshape = fitsio.read(framefile, 0).shape - corr = N.ones(fluxshape) - add = N.zeros(fluxshape) - - fitsio.write(corrfile, corr, clobber=True) - fitsio.write(corrfile, add) - os.system('gzip -f '+corrfile) - -# P.ion() -# i = 0 -# plotstuff(flux, fluxcorr, i) - diff --git a/fluxcorr_prior.py b/fluxcorr_prior.py deleted file mode 100755 index 2a0b744fc..000000000 --- a/fluxcorr_prior.py +++ /dev/null @@ -1,238 +0,0 @@ -#!/usr/bin/env python - -""" -Try solving with a prior that fluxcorr = 1 -""" - -import sys -import os -import os.path -import numpy as N -import pylab as P -import fitsio -from numpy.polynomial import chebyshev -from scipy.sparse.construct import spdiags -import yanny - -#------------------------------------------------------------------------- - -def read_plan(planfile): - plan = yanny.read_yanny(planfile) - plandir = os.path.dirname(planfile) - framefiles = dict(b1=list(), b2=list(), r1=list(), r2=list()) - - for i in range(len(plan['SPEXP']['name'])): - rawfiles = plan['SPEXP']['name'][i] - for filename in rawfiles: - if 'UNKNOWN' in filename: continue - pre, camera, exp = os.path.splitext(filename)[0].split('-') - if not os.path.exists(filename) and not filename.endswith('.gz'): - filename = filename + '.gz' - if not os.path.exists(filename): - print('fluxcorr_prior.py: File does not exist, skipping. '+filename) - continue - framefiles[camera].append(filename) - - return framefiles - -def read_data(indir, framefiles, xythrucorr=False): - flux = list() - ivar = list() - goodframes = set() - - for framefile in framefiles: - infile = indir + '/' + framefile - - calibfile = infile.replace('spFrame', 'spFluxcalib') - xythrufile = infile.replace('spFrame', 'spXYthrucorr') - - if not os.path.exists(infile): - print("WARNING: Skipping missing", infile) - continue - - if not os.path.exists(calibfile): - print("WARNING: Skipping missing", calibfile) - continue - - if xythrucorr and not os.path.exists(xythrufile): - print("WARNING: Skipping missing", xythrufile) - continue - - goodframes.add(framefile) - - calib = fitsio.read(calibfile, 0) - goodcalib = (calib != 0) - - print("Reading", os.path.basename(infile)) - fx = fitsio.FITS(infile) - xflux = fx[0].read() - xflux[goodcalib] /= calib[goodcalib] - - xivar = fx[1].read() - xmask = fx[2].read() - xivar[xmask != 0] = 0.0 - xivar[goodcalib] *= calib[goodcalib]**2 - - if xythrucorr: - print("Reading", os.path.basename(xythrufile)) - thrucorr = fitsio.read(xythrufile, 0) - xflux[goodcalib] *= thrucorr[goodcalib] - xivar[goodcalib] /= (thrucorr[goodcalib])**2 - - - #- Add to flux and ivar lists - flux.append(xflux) - ivar.append(xivar) - - fx.close() - - flux = N.array(flux) - ivar = N.array(ivar) - flux[ivar==0] = 0.0 #- cosmetics - - return flux, ivar, goodframes - - -def calc_fluxcorr(flux, ivar, prior=0.5): - - print("Calculating flux corrections") - - #- The array to fill - fluxcorr = N.ones(flux.shape) - - #- Determine range to actually fill - ii = N.where( N.sum(N.sum(ivar, axis=0), axis=0) > 0 )[0] - imin, imax = ii[0], ii[-1]+1 - flux = flux[:, :, imin:imax] - ivar = ivar[:, :, imin:imax] - - nexp, nspec, npix = flux.shape - - #- Make coadd; handle cases where sum(weights) = 0 - weighted_flux = N.sum(flux*ivar, axis=0) - sum_weights = N.sum(ivar, axis=0) - coadd = N.zeros(weighted_flux.shape) - ii = (sum_weights > 0) - coadd[ii] = weighted_flux[ii] / sum_weights[ii] - - #- Create Chebyshev matrix - #- FL = diag(coadd).dot(ChebyPolys) - #- flux[i] = FL.dot(c[i]) - npoly = 4 - xx = N.linspace(-1, 1, npix) - - L = N.zeros( (npix, npoly) ) - for i in range(npoly): - c = N.zeros(npoly) - c[i] = 1.0 - L[:,i] = chebyshev.chebval(xx, c) - - for ispec in range(nspec): - c = list() - FL = spdiags(coadd[ispec], 0, npix, npix).dot(L) - for iexp in range(nexp): - #- Create diagonal weights matrix, throwing out worst 5% for robustness - weights = ivar[iexp, ispec].copy() - if N.sum(weights) == 0: - corr = N.zeros(npoly) - corr[0] = 1.0 - c.append(corr) - continue - - wcut = N.percentile(weights[weights>0], 5) - weights[weights 2: - xythrucorr = True -else: - xythrucorr = False - -plandir = os.path.dirname(os.path.abspath(planfile)) -framefiles = read_plan(planfile) -for camera in ('b1', 'b2', 'r1', 'r2'): - flux, ivar, goodframes = read_data(plandir, framefiles[camera], xythrucorr=xythrucorr) - if len(goodframes)>0: - fluxcorr = calc_fluxcorr(flux, ivar, prior=1.0) - addterm = N.zeros(fluxcorr[0].shape) - - i = 0 - for framefile in framefiles[camera]: - corrfile = plandir+'/'+framefile.replace('spFrame', 'spFluxcorr') - if corrfile.endswith('.gz'): - corrfile = corrfile[:-3] - - print("Writing", os.path.basename(corrfile)) - if framefile in goodframes: - corr=fluxcorr[i] - add = addterm - i+=1 - else: - fluxshape = fitsio.read(framefile, 0).shape - corr = N.ones(fluxshape) - add = N.zeros(fluxshape) - - fitsio.write(corrfile, corr, clobber=True) - fitsio.write(corrfile, add) - os.system('gzip -f '+corrfile) - -# P.ion() -# i = 0 -# plotstuff(flux, fluxcorr, i) - diff --git a/misc/atomic.dat b/misc/atomic.dat deleted file mode 100644 index d53253a36..000000000 --- a/misc/atomic.dat +++ /dev/null @@ -1,32 +0,0 @@ -# NIST Atomic Spectra Database -# http://physics.nist.gov/cgi-bin/AtData/main_asd -# -#Spec. Wavelengt Rel. Aki Acc. Configurations Terms Ji-Jk gi-gk Type -# Air (Å) Int. (10^8 s-1) -#----- --------- ----- ---------- ----- -------------------------------- ----------- -------- ------ ---- - H_I 1215.6682 1000 6.265e+0 AA' 1s - 2p 2S - 2P° 1/2-3/2 2-4 - H_I 1215.6736 500 6.265e+0 AA' 1s - 2p 2S - 2P° 1/2-1/2 2-2 - O_II 3726.032 1.59e-12 C 2s2 2p3 - 2s2 2p3 4S° - 2D° 3/2-3/2 4-4 M1 - O_II 3726.032 1.86e-13 C 2s2 2p3 - 2s2 2p3 4S° - 2D° 3/2-3/2 4-4 E2 - O_II 3728.815 1.98e-14 C 2s2 2p3 - 2s2 2p3 4S° - 2D° 3/2-5/2 4-6 M1 - O_II 3728.815 2.86e-13 C 2s2 2p3 - 2s2 2p3 4S° - 2D° 3/2-5/2 4-6 E2 - H_I 4101.7630 15* 5.145e-2 AA' 2p - 6d 2P° - 2D 3/2-5/2 4-6 - H_I 4101.7638 15* 8.575e-3 AA' 2p - 6d 2P° - 2D 3/2-3/2 4-4 - H_I 4340.4943 30* 9.425e-2 AA' 2p - 5d 2P° - 2D 3/2-5/2 4-6 - H_I 4340.4958 30* 1.571e-2 AA' 2p - 5d 2P° - 2D 3/2-3/2 4-4 - H_I 4861.3614 80* 2.062e-1 AA' 2p - 4d 2P° - 2D 3/2-5/2 4-6 - H_I 4861.3650 80* 3.437e-2 AA' 2p - 4d 2P° - 2D 3/2-3/2 4-4 - O_III 4958.911 6.21e-11 B 2s2 2p2 - 2s2 2p2 3P - 1D 1-2 3-5 M1 - O_III 4958.911 4.57e-14 C+ 2s2 2p2 - 2s2 2p2 3P - 1D 1-2 3-5 E2 - O_III 5006.843 1.81e-10 B 2s2 2p2 - 2s2 2p2 3P - 1D 2-2 5-5 M1 - O_III 5006.843 3.52e-13 C+ 2s2 2p2 - 2s2 2p2 3P - 1D 2-2 5-5 E2 - N_II 6548.05 9.19e-12 B 2s2 ( 1S)2p2 - 2s2 ( 1S)2p2 3P - 1D 1-2 3-5 M1 - N_II 6548.05 9.07e-15 C+ 2s2 ( 1S)2p2 - 2s2 ( 1S)2p2 3P - 1D 1-2 3-5 E2 - H_I 6562.7247 120 2.245e-1 AA' 2s - 3p 2S - 2P° 1/2-3/2 2-4 - H_I 6562.8516 180 6.465e-1 AA' 2p - 3d 2P° - 2D 3/2-5/2 4-6 - N_II 6583.45 2.72e-11 B 2s2 ( 1S)2p2 - 2s2 ( 1S)2p2 3P - 1D 2-2 5-5 M1 - N_II 6583.45 7.53e-14 C+ 2s2 ( 1S)2p2 - 2s2 ( 1S)2p2 3P - 1D 2-2 5-5 E2 - S_II 6716.44 3.63e-13 C 3s2 3p3 - 3s2 3p3 4S° - 2D° 3/2-5/2 4-6 M1 - S_II 6716.440 4.3e-12 D 3s2 3p3 - 3s2 3p3 4S° - 2D° 3/2-5/2 4-6 E2 - S_II 6730.816 1.56e-12 C 3s2 3p3 - 3s2 3p3 4S° - 2D° 3/2-3/2 4-4 M1 - S_II 6730.82 2.7e-12 D 3s2 3p3 - 3s2 3p3 4S° - 2D° 3/2-3/2 4-4 E2 diff --git a/misc/brg.list b/misc/brg.list deleted file mode 100644 index 1fb1cd31c..000000000 --- a/misc/brg.list +++ /dev/null @@ -1,696 +0,0 @@ -# BRG list from Daniel Eisenstein for plates 300 to 309. -# Redshifts originally from Chicago-1D, but the wrong ones fixed. -# Plate, Fiber, MJD, z, Run, Rerun, camCol, Field, Id, Scaling, NumMask, Coefficients. - 1 300 11 51666 0.25054 752 1 2 433 48 0.8478 27 0.69051 0.07198 0.07839 0.10534 -0.03083 0.04394 -0.00507 -0.00297 0.02569 -0.01292 - 2 300 15 51666 0.33292 756 1 1 619 282 0.5915 73 0.25249 -0.04994 -0.10049 -0.04515 0.00026 -0.00085 0.00091 0.04422 0.04446 -0.06982 - 3 300 35 51666 0.35904 752 1 4 433 750 0.7291 83 0.49989 0.00051 -0.01830 -0.00354 0.12266 -0.04269 0.07696 0.11188 0.04720 -0.02362 - 4 300 44 51666 0.39936 752 1 2 430 207 0.6396 83 0.38482 0.06333 -0.03839 -0.11704 0.00016 0.01899 -0.05046 -0.09076 -0.00093 -0.00676 - 5 300 49 51666 0.40178 756 1 1 615 370 0.5173 83 0.21589 -0.01198 -0.03119 -0.01012 -0.07135 -0.01502 0.01355 -0.00081 0.03096 -0.03196 - 6 300 52 51666 0.40157 756 1 2 615 12 0.5238 83 0.25378 0.02218 -0.01960 -0.08092 0.02429 -0.05520 0.03292 -0.04027 -0.00161 -0.05044 - 7 300 59 51666 0.42218 752 1 2 429 559 0.4926 83 0.26676 0.03042 -0.04117 -0.00192 -0.01295 -0.00484 -0.01806 -0.06767 0.00280 -0.00901 - 8 300 74 51666 0.42838 752 1 3 430 420 0.5065 83 0.29169 -0.00182 -0.03852 -0.05114 -0.00825 -0.00831 0.04635 0.00569 0.02277 -0.04639 - 9 300 84 51666 0.26067 756 1 2 612 580 0.7896 35 0.71945 0.04730 0.02871 0.04038 0.02816 0.02030 -0.03161 0.00895 0.05682 -0.05243 -10 300 95 51666 0.41673 752 1 2 427 654 0.5344 83 0.22425 0.00386 0.01482 0.01959 0.06472 -0.01408 -0.02044 0.01346 0.07018 0.04243 -11 300 96 51666 0.29293 756 1 2 614 70 0.8187 65 0.70501 0.02872 -0.01034 0.00914 0.05967 0.05930 -0.04158 -0.00915 -0.02659 -0.00749 -12 300 102 51666 0.42680 756 1 2 614 632 0.4972 83 0.25743 0.02302 -0.04447 -0.02374 -0.03159 -0.03139 0.00088 -0.05776 -0.00738 -0.04327 -13 300 103 51666 0.43089 756 1 2 614 484 0.5073 83 0.25510 0.02394 0.02049 0.02301 0.00691 -0.02279 -0.03800 0.00353 0.01476 0.00559 -14 300 104 51666 0.35623 756 1 2 614 663 0.5709 83 0.34987 0.00121 0.04756 0.01500 0.02573 0.00224 -0.02427 -0.01359 -0.00340 -0.03337 -15 300 115 51666 0.26383 756 1 3 614 235 0.8233 46 0.74619 0.02654 0.07488 0.02750 0.01194 -0.00449 -0.05920 -0.05099 -0.00001 -0.01799 -16 300 142 51666 0.31770 752 1 3 427 847 0.6424 65 0.50353 -0.00514 -0.07642 -0.00763 0.03505 0.01891 -0.04032 0.02105 -0.02847 -0.05383 -17 300 144 51666 0.35933 752 1 3 428 529 0.5215 83 0.30859 0.06134 0.03014 0.00270 0.05088 0.01653 -0.02252 0.05427 -0.01804 -0.02213 -18 300 146 51666 0.41126 752 1 3 427 834 0.5532 83 0.37727 0.03797 -0.00309 -0.03585 0.01154 0.01001 0.02557 -0.09345 -0.00977 -0.02351 -19 300 150 51666 0.26059 752 1 3 427 276 0.6699 35 0.47887 0.02328 0.01567 0.08277 0.01774 -0.03657 0.01472 -0.02785 0.02453 0.01299 -20 300 152 51666 0.26159 752 1 3 426 187 0.6803 38 0.56816 0.02550 0.03023 0.04148 0.01648 0.01503 0.01994 0.01624 -0.00497 -0.01410 -21 300 155 51666 0.42945 752 1 4 427 593 0.4611 83 0.15845 -0.07577 -0.01847 -0.01323 -0.01430 0.02093 0.04176 -0.03007 0.03429 -0.04655 -22 300 159 51666 0.42663 752 1 3 428 376 0.5185 83 0.30039 0.01707 -0.03062 -0.05023 -0.05235 0.00537 -0.01936 0.07548 -0.01477 0.03194 -23 300 178 51666 0.45908 752 1 4 425 668 0.5343 83 0.26003 -0.01636 0.03636 -0.02758 -0.04063 -0.02341 0.06297 -0.00082 0.07254 -0.00967 -24 300 179 51666 0.25199 756 1 3 611 146 0.8324 27 0.69740 -0.01815 0.04438 0.06587 0.01069 -0.05612 -0.05700 -0.05145 -0.01649 -0.00527 -25 300 199 51666 0.46751 756 1 3 608 513 0.5517 83 0.24419 -0.00606 -0.01645 0.04775 -0.01650 0.07546 -0.04935 -0.16923 -0.10572 -0.04958 -26 300 209 51666 0.16619 756 1 1 610 125 1.3868 23 1.37177 0.14098 -0.00674 -0.02339 0.04252 0.00027 -0.00368 -0.01599 0.01979 -0.04170 -27 300 211 51666 0.36146 756 1 1 610 227 0.5625 83 0.39569 0.00579 0.01392 -0.02877 0.02423 -0.05332 -0.04478 -0.01387 0.02532 -0.01911 -28 300 227 51666 0.21870 752 1 3 421 211 0.7914 27 0.64080 -0.03818 -0.05670 0.00901 0.06561 -0.00750 -0.00217 0.03515 -0.00557 0.03179 -29 300 231 51666 0.27907 756 1 3 607 225 0.7008 65 0.57927 0.04946 -0.03001 -0.01471 -0.00461 -0.00131 -0.04564 0.06627 0.03586 0.01772 -30 300 237 51666 0.25235 752 1 3 421 236 0.8958 27 0.87726 0.02187 -0.03556 0.00951 -0.02841 0.01940 0.01797 0.00418 0.02888 -0.00545 -31 300 241 51666 0.39733 756 1 1 607 457 0.5209 83 0.17209 0.02602 -0.00969 -0.04037 0.03031 -0.06395 0.04189 -0.04396 0.01258 -0.06054 -32 300 246 51666 0.21586 752 1 2 421 212 1.1233 27 1.18919 -0.30240 0.03296 -0.00463 0.01421 0.00966 -0.10008 0.01297 -0.00550 0.03359 -33 300 251 51666 0.39858 752 1 2 422 499 0.5315 83 0.30568 -0.22257 0.03287 0.00168 0.01899 0.02543 -0.07045 -0.08408 -0.03850 0.01825 -34 300 265 51666 0.35928 752 1 4 419 125 0.5528 83 0.32004 -0.00431 0.01216 0.01136 -0.01316 0.02515 -0.04898 -0.04015 -0.05216 -0.01714 -35 300 267 51666 0.38173 752 1 3 419 764 0.5437 83 0.26371 -0.01005 -0.05537 0.01673 0.00411 -0.01788 0.02891 0.09972 -0.01510 -0.07755 -36 300 274 51666 0.38145 752 1 3 419 451 0.5094 83 0.21394 -0.05482 0.02810 0.08676 -0.04763 -0.04647 -0.00858 0.04696 -0.03083 -0.01740 -37 300 275 51666 0.33003 756 1 3 605 809 0.6254 73 0.41809 0.03824 -0.01987 -0.00440 -0.05042 0.01124 0.03353 0.00176 0.01484 0.02303 -38 300 291 51666 0.38812 752 1 2 420 705 0.5540 83 0.29724 -0.02370 -0.06224 0.02889 0.01124 -0.03913 0.01270 0.06738 -0.01286 -0.06944 -39 300 308 51666 0.28248 756 1 2 603 256 0.7004 65 0.44417 0.00454 -0.02359 -0.03532 0.00360 0.03701 0.01434 -0.02759 -0.02402 0.05289 -40 300 326 51666 0.32366 756 1 5 602 54 0.6140 65 0.44788 0.03538 0.03205 -0.00731 -0.00384 0.02305 0.05241 -0.02411 -0.00354 -0.01010 -41 300 329 51666 0.42909 756 1 6 606 287 0.5225 83 0.23270 -0.00100 -0.12185 0.11886 -0.04300 0.04268 -0.02949 0.05785 0.00763 0.05381 -42 300 336 51666 0.16454 752 1 6 419 180 1.0325 23 0.75481 -0.00757 -0.05235 -0.03016 -0.07388 0.02552 0.02507 -0.03966 0.12592 0.07899 -43 300 338 51666 0.40301 756 1 5 602 574 0.5288 83 0.27159 0.01508 -0.05231 -0.09657 -0.05864 -0.00802 0.03383 -0.04757 0.03342 0.04571 -44 300 365 51666 0.41500 756 1 6 608 274 0.4546 83 0.18458 -0.01092 0.01520 0.02451 -0.03701 0.02409 -0.04333 0.00392 0.00968 0.01961 -45 300 368 51666 0.42274 756 1 6 607 404 0.5178 83 0.23064 -0.00640 -0.07271 -0.01581 -0.04701 0.08014 -0.01211 -0.04716 -0.03516 0.00752 -46 300 387 51666 0.48823 756 1 4 605 203 0.4610 83 0.19926 0.00980 -0.04082 0.05929 0.00300 0.08257 0.05384 -0.02070 0.01506 0.00385 -47 300 400 51666 0.24238 756 1 4 604 576 0.7284 27 0.46765 -0.09753 0.01645 0.01277 -0.04553 0.02813 0.01299 -0.00882 0.01155 -0.03549 -48 300 424 51666 0.27616 756 1 4 605 282 0.7810 65 0.71739 0.00575 -0.01964 0.04194 0.00368 -0.00137 -0.01328 0.06287 0.03966 0.03065 -49 300 425 51666 0.15064 756 1 5 607 132 1.4084 17 1.46762 0.06283 -0.05926 -0.05277 0.00733 0.01911 -0.03497 -0.06589 0.05669 0.01559 -50 300 439 51666 0.48053 752 1 4 421 696 0.4918 83 0.23484 -0.01424 -0.00582 -0.04924 -0.03365 0.00566 -0.05072 -0.04804 -0.00810 0.08083 -51 300 453 51666 0.28376 752 1 6 426 184 0.8096 65 0.74557 -0.01064 -0.03815 -0.01959 -0.02169 -0.02238 0.02299 -0.01371 -0.02161 -0.01477 -52 300 460 51666 0.42286 756 1 5 610 547 0.4413 83 0.25144 -0.01454 0.00497 -0.00477 -0.06432 0.11030 -0.02348 -0.00194 -0.05776 -0.00652 -53 300 471 51666 0.50219 756 1 4 609 257 0.4070 83 0.18363 0.01522 -0.03249 -0.03930 0.04380 -0.01076 0.00990 -0.06966 0.03602 0.04465 -54 300 475 51666 0.49828 756 1 4 608 605 0.4141 83 0.18312 0.00168 0.03793 0.01073 0.00104 0.00983 -0.05953 0.00516 0.02294 0.04690 -55 300 477 51666 0.25869 756 1 4 608 205 0.8497 28 0.85677 0.03423 0.07993 -0.02592 0.02286 -0.03537 -0.01538 0.02966 0.04187 0.01496 -56 300 489 51666 0.43216 756 1 4 612 282 0.5600 83 0.21419 0.03101 -0.32486 0.23256 -0.04717 0.03620 0.03880 0.03414 0.02010 0.13584 -57 300 498 51666 0.42393 756 1 4 611 685 0.4296 83 0.21076 0.01042 -0.03098 -0.03925 -0.02739 0.08710 0.00526 0.01185 -0.01382 -0.00290 -58 300 513 51666 0.45319 756 1 4 613 579 0.4715 83 0.26168 -0.07579 -0.00925 -0.03553 -0.09238 0.04066 0.05746 -0.01320 -0.01795 -0.04015 -59 300 523 51666 0.26618 756 1 6 613 296 0.5872 54 0.39481 -0.00530 0.03883 -0.01601 0.04399 0.02738 -0.01345 -0.00520 -0.02516 0.07161 -60 300 524 51666 0.37529 752 1 6 429 455 0.4886 83 0.28677 0.05991 0.00587 -0.07963 0.01769 -0.00828 -0.01729 -0.01205 -0.01085 0.00811 -61 300 531 51666 0.37517 752 1 6 428 560 0.4920 83 0.32061 0.05821 -0.06139 -0.05393 -0.02741 -0.01413 0.00155 0.00994 0.03899 0.02096 -62 300 532 51666 0.26420 752 1 6 429 184 0.8318 47 0.81460 0.04993 0.02327 0.00919 0.03028 -0.03140 -0.03554 -0.00363 -0.02870 0.07384 -63 300 533 51666 0.31851 756 1 5 613 401 0.6078 65 0.52100 0.01698 0.02249 0.02404 -0.01817 0.04954 -0.02972 0.07016 -0.02330 0.00821 -64 300 537 51666 0.35151 756 1 5 612 576 0.4561 83 0.27068 -0.00203 0.01192 -0.01021 -0.04926 -0.02193 -0.02512 0.01604 -0.01102 -0.04518 -65 300 538 51666 0.43178 752 1 6 429 382 0.4123 83 0.18880 0.03208 0.01537 -0.03019 -0.05163 0.01477 0.00027 -0.01810 0.03322 -0.02601 -66 300 539 51666 0.35115 756 1 5 612 778 0.5776 83 0.48187 0.06320 0.02539 -0.04965 0.01724 0.05037 0.02037 -0.08116 -0.01500 -0.02890 -67 300 540 51666 0.26588 756 1 5 612 761 0.6648 53 0.54041 0.03721 0.01785 0.02096 0.07584 -0.03157 -0.05725 0.00330 0.00589 0.01797 -68 300 564 51666 0.26430 752 1 6 429 678 0.6762 48 0.46731 0.00694 -0.02161 -0.05603 0.05158 0.02568 0.00323 -0.00880 0.03308 -0.00816 -69 300 569 51666 0.37545 756 1 6 615 490 0.5634 83 0.33010 0.04469 -0.04329 -0.00282 0.06275 0.00936 -0.04171 0.00269 -0.06668 -0.03022 -70 300 577 51666 0.18985 752 1 6 430 32 1.1561 27 1.05729 0.02940 -0.09526 0.01607 0.00810 0.05007 -0.03341 0.07566 -0.00796 -0.00062 -71 300 583 51666 0.32271 752 1 5 430 522 0.6061 65 0.37602 0.01808 0.01998 0.03538 -0.00247 0.00488 -0.01890 -0.02531 -0.03732 0.03583 -72 300 597 51666 0.47058 756 1 4 616 592 0.4667 83 0.28028 -0.00026 0.07884 0.03340 -0.02659 -0.09604 0.01574 0.03751 -0.00931 -0.02445 -73 300 600 51666 0.46465 756 1 4 615 555 0.6541 23 -0.04526 0.00135 -0.14581 0.01692 -0.04373 0.09448 -0.04366 0.04926 0.02594 -0.03014 -74 300 623 51666 0.41078 756 1 4 620 487 0.5726 83 0.35604 -0.00932 -0.03182 -0.03071 0.10034 0.01590 -0.02319 0.01853 -0.01358 -0.06497 -75 300 629 51666 0.48184 752 1 5 432 670 0.5060 83 0.20487 0.02868 0.00638 -0.07403 -0.10922 -0.06043 -0.01048 0.00907 -0.05291 -0.15887 -76 300 636 51666 0.48095 756 1 4 619 363 0.5593 83 0.29819 0.00889 -0.03628 -0.02484 -0.02326 -0.01378 -0.04390 -0.01358 0.03946 0.05050 -77 301 15 51641 0.43563 752 1 2 447 462 0.5646 83 0.21074 -0.00600 -0.10504 0.08557 -0.03933 -0.02660 0.00426 -0.06031 -0.13433 0.07415 -78 301 19 51641 0.16924 752 1 2 448 182 1.3132 27 1.27415 -0.07268 0.08018 -0.02128 0.00804 -0.01787 0.00304 -0.03880 0.00390 0.00624 -79 301 29 51641 0.44514 752 1 3 449 694 0.5595 83 0.26765 0.00605 0.03453 -0.01639 0.03409 -0.03994 -0.00738 0.11132 -0.03446 -0.03222 -80 301 33 51641 0.44098 752 1 3 449 699 0.5636 83 0.22239 -0.00501 0.00940 0.07623 -0.07430 -0.08041 0.08541 -0.00161 0.01723 0.01011 -81 301 34 51641 0.43329 752 1 3 450 536 0.5184 83 0.27562 0.03526 -0.01153 0.04344 0.03225 -0.01386 0.06460 -0.01826 0.00957 0.01174 -82 301 41 51641 0.16517 752 1 1 446 185 1.3543 23 1.34765 -0.20672 0.07080 0.05868 -0.10196 0.00338 0.04924 0.00484 0.10871 0.10759 -83 301 45 51641 0.44461 756 1 1 631 399 0.5765 83 0.25769 -0.02414 0.10836 0.08607 -0.05534 -0.12628 0.03395 -0.00662 0.07928 -0.00557 -84 301 46 51641 0.44182 752 1 1 446 483 0.5755 83 0.29061 -0.02648 -0.11092 0.05178 0.00501 0.10471 -0.09852 0.15726 0.01915 0.02476 -85 301 48 51641 0.43396 756 1 1 630 364 0.5252 83 0.21894 -0.02615 -0.13933 0.07438 -0.08202 -0.08756 -0.00962 -0.07829 -0.05405 -0.01387 -86 301 50 51641 0.40204 752 1 1 444 496 0.6718 83 0.42222 0.01755 0.01485 -0.04070 -0.03645 0.01799 -0.03239 -0.00011 0.05932 0.01315 -87 301 54 51641 0.40010 756 1 1 631 576 0.5136 83 0.22424 -0.06715 -0.03789 -0.07781 0.01974 -0.02292 0.06704 -0.04965 -0.04328 -0.04025 -88 301 63 51641 0.43418 756 1 2 633 652 0.4761 83 0.23076 -0.00256 -0.01256 -0.03437 -0.09730 -0.04633 -0.08107 0.01214 -0.04003 0.09455 -89 301 64 51641 0.43458 752 1 2 447 463 0.5049 83 0.29343 -0.10459 0.03552 -0.02914 -0.01333 0.04200 0.04065 0.04099 0.05088 -0.01359 -90 301 67 51641 0.43560 752 1 3 449 135 0.4929 83 0.18940 0.01323 -0.09227 0.07626 -0.14163 0.01753 -0.02585 -0.08018 -0.04509 0.01224 -91 301 69 51641 0.43999 756 1 2 633 761 0.4618 83 0.21235 -0.00273 -0.01811 0.05390 0.00016 -0.00721 0.03092 0.05386 -0.01580 -0.01978 -92 301 79 51641 0.39538 756 1 3 633 396 0.5397 83 0.31177 0.01485 -0.08609 -0.07649 -0.03801 -0.03331 0.00367 0.08093 0.03102 -0.05282 -93 301 87 51641 0.35331 752 1 1 443 553 0.5763 83 0.35969 0.02179 -0.01979 -0.05075 -0.00423 0.01495 -0.04701 0.00902 -0.04183 -0.01607 -94 301 100 51641 0.34852 756 1 1 629 336 0.5853 83 0.40220 0.01064 0.02615 -0.04190 -0.04718 -0.04758 0.00859 0.01368 0.03766 0.00534 -95 301 113 51641 0.35890 756 1 3 630 476 0.5246 83 0.33379 0.01674 -0.04112 -0.00922 0.06178 -0.00497 0.03078 0.01460 0.03823 0.01264 -96 301 146 51641 0.16138 756 1 2 628 247 0.9463 23 0.65770 -0.33536 0.10924 -0.06191 0.01234 0.11642 -0.03910 0.01016 -0.05778 -0.00068 -97 301 147 51641 0.35877 756 1 2 628 431 0.5438 83 0.36457 0.03324 0.04892 -0.04861 -0.00209 0.01430 0.00444 -0.06253 0.00492 -0.02133 -98 301 148 51641 0.35754 756 1 2 629 566 0.5547 83 0.33267 -0.00233 -0.04396 0.03778 0.00733 0.03452 -0.01414 0.00523 -0.05906 -0.00662 -99 301 166 51641 0.32840 756 1 2 626 325 0.6007 67 0.40055 0.00124 -0.09635 0.06386 -0.01028 -0.00727 0.03833 0.04653 0.01689 -0.05022 -100 301 170 51641 0.32750 752 1 3 441 529 0.6038 65 0.47008 0.00379 -0.00063 -0.03526 -0.02583 -0.02254 0.01729 0.01208 -0.00699 -0.00980 -101 301 171 51641 0.32660 756 1 3 627 437 0.5689 65 0.39157 -0.04240 -0.04218 0.03057 -0.04277 -0.01105 0.04083 0.05978 -0.00379 0.00215 -102 301 196 51641 0.29113 756 1 3 624 458 0.7096 65 0.51665 0.04595 -0.02243 -0.00374 -0.02756 -0.01849 -0.04027 0.04258 0.05266 -0.05896 -103 301 200 51641 0.16700 756 1 3 625 162 1.3808 23 1.33715 0.08653 -0.05830 -0.02655 -0.09548 -0.08316 0.03617 -0.01997 0.01538 -0.01114 -104 301 203 51641 0.40070 752 1 1 438 514 0.5058 83 0.29699 0.03330 -0.02871 -0.01474 0.00974 -0.07196 0.03404 0.00841 0.04171 0.00971 -105 301 207 51641 0.39896 752 1 1 439 141 0.5449 83 0.22911 0.07558 0.01413 -0.02576 0.04366 0.04291 -0.01163 -0.01617 -0.05315 -0.05926 -106 301 218 51641 0.39573 752 1 1 438 505 0.5401 83 0.35598 0.00481 0.00743 -0.01606 -0.07375 -0.06248 0.04563 0.02332 0.00302 0.00948 -107 301 238 51641 0.35712 752 1 3 437 513 0.5547 83 0.30532 0.00941 0.01009 -0.04629 -0.09452 -0.00778 0.05825 -0.01305 -0.03282 0.05172 -108 301 258 51641 0.24834 752 1 1 438 288 0.7929 27 0.54868 0.03708 -0.00365 -0.08555 0.00023 0.03451 -0.04090 0.02456 0.04173 -0.01473 -109 301 268 51641 0.42520 756 1 2 622 250 0.5750 83 0.20864 -0.01282 -0.07288 -0.00390 -0.12626 -0.10464 -0.02272 -0.07200 0.08432 0.03246 -110 301 302 51641 0.29004 756 1 2 618 363 0.7178 65 0.53206 0.02264 -0.00464 -0.01618 -0.02922 -0.03908 0.00666 0.00303 0.01469 0.00799 -111 301 314 51641 0.42668 756 1 2 618 296 0.5358 83 0.30998 0.00876 -0.02459 -0.02000 -0.07965 -0.04179 -0.03094 -0.00627 -0.05240 -0.12758 -112 301 328 51641 0.19670 756 1 5 621 122 1.0425 27 0.97412 -0.10258 0.06743 -0.05324 -0.00291 0.02555 0.02217 0.02707 0.03538 0.04437 -113 301 370 51641 0.47853 756 1 5 623 671 0.5583 83 0.17000 -0.02479 0.01539 0.10221 0.00037 -0.02742 -0.04559 0.17232 -0.11898 0.08075 -114 301 387 51641 0.35510 756 1 4 620 520 0.5009 83 0.26528 -0.01131 -0.05095 -0.00466 0.02825 -0.00823 0.02578 0.01661 -0.00227 0.05785 -115 301 391 51641 0.25128 756 1 4 619 182 0.7976 27 0.69749 0.05981 -0.02702 0.01016 -0.01564 -0.02003 -0.05465 0.00689 -0.01303 -0.00859 -116 301 400 51641 0.26250 756 1 4 620 168 0.8294 41 0.69952 0.01669 -0.08796 -0.00115 -0.05466 -0.03581 0.04450 0.03432 -0.00263 0.02783 -117 301 415 51641 0.47887 756 1 5 624 582 0.4583 83 0.25817 0.03823 0.01241 -0.02390 0.00088 -0.05013 -0.01233 -0.00427 -0.06831 0.04089 -118 301 417 51641 0.16649 752 1 6 440 177 1.0085 23 0.93438 0.09768 0.06726 -0.02977 0.04313 -0.03160 -0.00451 -0.05018 -0.00323 0.07374 -119 301 429 51641 0.35986 756 1 4 622 474 0.5616 83 0.40866 0.04538 -0.00425 -0.05837 0.01580 0.02735 -0.00182 -0.00374 0.02687 0.01684 -120 301 434 51641 0.25110 756 1 4 622 176 0.7380 27 0.55046 0.02699 0.07462 0.03967 -0.01035 -0.01382 -0.02539 -0.05533 -0.00044 0.01718 -121 301 447 51641 0.16661 756 1 6 626 90 1.3540 23 1.36489 0.16493 -0.01452 -0.04996 -0.00086 -0.06369 0.03258 -0.03050 -0.00375 0.07295 -122 301 463 51641 0.26079 756 1 4 624 222 0.6846 35 0.59253 0.03317 0.00286 -0.00932 0.00428 -0.03421 0.00915 0.03965 0.00794 -0.02647 -123 301 482 51641 0.16596 752 1 5 442 16 1.1984 23 1.24210 0.07726 0.00599 0.02119 0.00296 0.00132 0.00483 -0.03229 0.02077 0.01434 -124 301 483 51641 0.19697 756 1 4 625 188 0.9275 27 0.89052 0.05151 0.00732 -0.03496 0.00663 -0.02477 0.04890 0.00573 -0.02860 0.01541 -125 301 485 51641 0.47748 752 1 5 440 403 0.4137 83 0.20244 -0.01966 0.04602 0.03208 0.00646 0.01292 0.04305 -0.00498 0.01454 0.01431 -126 301 503 51641 0.35826 756 1 4 628 474 0.4626 83 0.27941 0.04911 0.00295 -0.01672 -0.02898 -0.00454 -0.03929 0.01024 0.01104 0.01638 -127 301 517 51641 0.21755 752 1 4 442 196 0.9548 27 0.97505 0.05122 -0.04990 0.05321 0.00167 0.01669 0.01924 0.03417 -0.00909 -0.01103 -128 301 527 51641 0.43464 756 1 6 628 325 0.4905 83 0.26503 0.02275 0.00676 -0.00981 -0.01128 -0.05533 0.03507 -0.03680 -0.01344 -0.08431 -129 301 541 51641 0.16703 756 1 4 629 128 1.1990 23 1.17262 -0.13323 0.04157 -0.06563 0.01040 -0.04877 -0.04312 -0.05524 0.03634 0.01046 -130 301 546 51641 0.25751 752 1 5 445 160 0.7722 27 0.67805 -0.00634 -0.03126 -0.00327 0.03079 -0.10547 -0.01612 -0.00905 0.02196 -0.00407 -131 301 549 51641 0.25310 756 1 4 629 198 0.8802 27 0.80630 0.10303 -0.01541 -0.02032 0.02239 -0.04641 0.00181 -0.04234 -0.00346 -0.03605 -132 301 554 51641 0.18812 756 1 4 629 190 1.0786 27 1.06509 0.08316 -0.04713 -0.07417 -0.01145 0.04768 -0.00158 -0.06720 -0.01325 0.00585 -133 301 555 51641 0.47453 752 1 4 445 442 0.4661 83 0.20438 0.01134 -0.03446 0.02948 0.02807 -0.07107 -0.10141 -0.00313 -0.04892 -0.02601 -134 301 558 51641 0.36142 756 1 4 630 289 0.5382 83 0.26452 -0.01566 0.03590 -0.02456 0.00381 -0.05330 0.01141 -0.02487 0.05378 0.00956 -135 301 563 51641 0.43014 756 1 6 631 573 0.5018 83 0.24697 -0.00349 0.00703 -0.02285 -0.03128 -0.00789 -0.09148 -0.00643 0.06669 -0.06856 -136 301 567 51641 0.35961 756 1 5 631 327 0.5199 83 0.30736 0.00008 -0.02494 -0.01440 0.00598 -0.03051 -0.00687 0.04015 0.02815 -0.02517 -137 301 578 51641 0.36441 756 1 5 630 538 0.5637 83 0.24097 -0.09855 -0.00052 0.00143 -0.00164 -0.15726 -0.02717 -0.02885 0.02423 0.01611 -138 301 596 51641 0.23870 756 1 4 632 164 0.8577 27 0.81606 -0.05404 -0.02077 -0.01045 -0.02811 0.02756 0.00708 -0.01984 0.00915 0.00810 -139 301 606 51641 0.31956 756 1 6 632 627 0.5827 65 0.39221 0.02513 0.01958 0.02226 0.03081 -0.05118 0.04194 0.05075 -0.01448 0.01085 -140 301 620 51641 0.35970 756 1 5 632 534 0.5811 83 0.29325 0.00366 -0.00996 -0.03812 0.01679 -0.13810 0.02057 0.02764 0.07974 0.00910 -141 301 639 51641 0.18437 752 1 4 449 156 1.4836 27 1.32122 0.06106 -0.07963 -0.31019 0.12975 -0.02351 0.01120 -0.03182 -0.06339 0.03452 -142 302 42 51688 0.18291 752 1 1 460 155 0.9812 27 0.84093 -0.06217 -0.06691 0.02437 0.01453 0.00154 -0.07072 0.00734 0.02284 -0.05396 -143 302 54 51688 0.52065 752 1 1 459 503 0.4576 66 0.22119 0.02803 -0.03884 0.02154 0.01396 0.02014 0.05736 -0.02043 -0.01592 0.00699 -144 302 55 51688 0.27917 756 1 1 645 324 0.6898 65 0.44677 0.03327 -0.02249 0.00765 -0.03746 -0.07742 0.10376 0.00345 -0.00879 -0.02443 -145 302 76 51688 0.35997 756 1 2 648 565 0.5449 83 0.30635 -0.12842 0.05363 -0.00526 0.01499 -0.09195 -0.07641 -0.02402 0.08173 0.03702 -146 302 98 51688 0.46674 752 1 1 458 381 0.4975 83 0.18100 -0.05301 0.04064 -0.03198 -0.02749 0.03799 -0.00681 -0.06819 -0.15057 -0.03530 -147 302 127 51688 0.40429 752 1 1 457 337 0.5101 83 0.17455 0.02593 -0.04114 -0.01045 -0.02642 0.02262 -0.00585 -0.01752 0.09873 0.03377 -148 302 136 51688 0.16034 756 1 1 642 162 1.2803 23 1.27129 0.04560 -0.09880 -0.02916 0.06705 -0.04373 -0.00481 0.01504 0.04768 -0.00208 -149 302 147 51688 0.46517 752 1 3 458 560 0.4946 83 0.23094 0.05833 0.01228 0.07704 0.11592 0.05670 0.01273 -0.03264 -0.00447 -0.00624 -150 302 149 51688 0.23937 756 1 2 644 625 0.8147 27 0.72067 0.07400 0.01649 0.02856 -0.03392 -0.02213 0.02668 0.03535 0.01500 0.02401 -151 302 180 51688 0.42537 752 1 3 457 131 0.5297 83 0.29291 -0.02405 -0.03718 0.05091 -0.04306 0.01156 -0.03854 0.02842 -0.02543 -0.03756 -152 302 200 51688 0.26153 756 1 3 641 224 0.9455 38 0.90716 0.06374 0.01614 0.01867 0.07123 0.05361 -0.00365 -0.00509 -0.02399 -0.05727 -153 302 232 51688 0.45772 756 1 3 640 492 0.4784 83 0.17488 -0.00088 -0.01164 0.10255 -0.03844 0.06161 -0.01958 -0.00777 -0.00185 -0.00763 -154 302 266 51688 0.24288 756 1 3 638 254 0.7665 27 0.62551 0.04592 0.01314 0.04085 0.00268 -0.03063 -0.01736 -0.02587 0.04411 -0.01113 -155 302 286 51688 0.16955 752 1 2 448 26 0.7028 27 0.41247 -0.10953 -0.04281 -0.08329 -0.00535 0.00739 0.06170 0.00289 0.00180 0.04010 -156 302 291 51688 0.42193 752 1 1 450 481 0.4471 83 0.23588 0.00018 0.01814 -0.00540 -0.01286 0.02310 -0.04749 -0.02450 -0.03551 0.00533 -157 302 303 51688 0.44525 752 1 3 449 694 0.5060 83 0.29334 0.06384 0.08188 -0.00997 -0.00220 0.00824 -0.01992 0.06948 -0.08490 -0.02350 -158 302 326 51688 0.19042 752 1 6 451 194 0.8236 27 0.63819 -0.18340 0.01547 -0.04109 0.02159 0.05502 -0.01488 -0.00112 -0.03832 -0.01415 -159 302 327 51688 0.24164 756 1 6 636 479 0.7849 27 0.70379 0.07479 -0.01203 -0.04495 0.04783 0.01294 0.01895 0.00159 -0.00091 0.03166 -160 302 330 51688 0.39754 752 1 6 451 643 0.4972 83 0.20745 -0.03461 -0.05122 -0.03188 0.00852 0.08822 -0.04074 0.05695 0.00972 -0.02421 -161 302 342 51688 0.45948 752 1 5 451 303 0.4999 83 0.23580 -0.17064 0.09073 0.00861 0.01563 -0.02045 -0.01437 -0.05185 -0.03478 0.04377 -162 302 356 51688 0.18589 752 1 4 451 56 1.0423 27 1.02555 -0.00293 -0.13517 0.00975 -0.04401 0.02550 0.00952 0.00276 0.03166 -0.01901 -163 302 361 51688 0.45095 752 1 6 453 295 0.4623 83 0.23271 0.01051 0.03418 -0.00076 0.08902 0.00680 0.06519 -0.06286 0.00538 -0.02321 -164 302 370 51688 0.35706 752 1 6 452 440 0.4886 83 0.33837 -0.01393 -0.01511 -0.06017 0.04022 0.00078 -0.02200 -0.05364 -0.00516 0.01235 -165 302 372 51688 0.40168 752 1 6 451 46 0.4230 83 0.15159 -0.01214 -0.07824 -0.03059 -0.01599 0.03012 0.07555 0.03752 0.03092 -0.02490 -166 302 374 51688 0.45199 756 1 5 638 343 0.5268 83 0.05656 0.02174 0.15773 -0.07010 -0.13959 0.09656 0.25867 -0.02833 -0.10602 -0.07596 -167 302 377 51688 0.18088 752 1 6 451 143 1.2289 27 1.33855 0.09514 -0.00327 0.07017 0.03912 -0.06509 -0.01342 -0.01778 -0.01413 0.02962 -168 302 379 51688 0.39889 752 1 6 452 449 0.4975 83 0.35532 0.02461 -0.03425 0.01251 -0.00704 0.03536 -0.00367 0.02176 0.01947 -0.02399 -169 302 386 51688 0.46257 756 1 4 638 494 0.4944 83 0.22705 0.00667 -0.02794 -0.01044 0.00934 0.00882 -0.01219 -0.01044 -0.00476 -0.06572 -170 302 390 51688 0.28333 756 1 4 637 410 0.5120 65 0.20739 -0.08421 -0.02307 0.02314 0.04080 -0.01921 0.03280 -0.04458 -0.03838 0.00535 -171 302 393 51688 0.46346 756 1 4 638 607 0.4896 83 0.26608 0.00055 0.04267 0.00878 -0.01834 -0.04867 0.02175 -0.01834 0.01679 -0.10056 -172 302 405 51688 0.39496 752 1 6 455 542 0.4343 83 0.23252 0.04080 -0.01957 -0.00682 -0.04475 0.01066 0.02554 0.01015 0.02086 0.00664 -173 302 408 51688 0.24060 756 1 6 640 142 0.8794 27 0.86828 0.08261 0.01154 -0.03311 -0.01794 -0.02002 0.02898 -0.03400 0.02927 0.05721 -174 302 409 51688 0.45706 756 1 6 639 605 0.4290 83 0.16429 0.00285 -0.01528 0.00422 0.03332 0.07104 -0.01278 -0.06497 0.05723 0.00103 -175 302 415 51688 0.45087 756 1 5 639 268 0.4543 83 0.26382 0.01564 0.02546 0.02607 -0.00242 0.00444 0.05137 0.01946 -0.02862 -0.09002 -176 302 418 51688 0.43408 752 1 6 453 464 0.4289 83 0.21237 -0.04219 -0.01428 0.03134 0.02085 0.01054 0.01086 -0.01448 0.02713 0.05948 -177 302 427 51688 0.45955 752 1 4 454 506 0.4621 83 0.23946 0.03350 0.01389 -0.03780 -0.02064 -0.06285 0.01459 -0.05254 0.05971 -0.03711 -178 302 432 51688 0.44324 752 1 5 453 626 0.4994 83 0.29227 0.03780 0.05651 -0.04853 -0.00068 -0.02593 0.00769 -0.00384 0.04294 -0.00422 -179 302 439 51688 0.37443 756 1 4 641 346 0.4932 83 0.28650 -0.00544 0.03138 -0.01427 0.00370 0.05100 0.00738 0.01846 -0.01866 -0.02631 -180 302 444 51688 0.45970 752 1 6 457 458 0.4944 83 0.20908 -0.01032 0.06921 0.00942 0.02505 -0.04303 -0.06931 -0.03190 0.03648 -0.11578 -181 302 447 51688 0.45168 752 1 6 456 539 0.4909 83 0.28762 -0.01640 0.05796 -0.04585 0.01370 -0.00271 0.04407 -0.00159 0.05431 0.00641 -182 302 466 51688 0.42754 752 1 4 456 187 0.4761 83 0.26366 -0.01271 0.00169 0.03599 -0.05032 0.02780 0.01536 0.05774 0.02421 -0.03832 -183 302 472 51688 0.25774 756 1 4 641 190 0.7182 27 0.63904 0.10562 0.02475 -0.02392 0.07465 0.01359 -0.07863 -0.01872 0.01474 -0.04655 -184 302 475 51688 0.25851 756 1 3 642 394 0.6783 28 0.52284 0.07223 0.03032 -0.05015 -0.00158 0.04080 -0.02709 -0.02400 0.06863 -0.01208 -185 302 478 51688 0.25285 756 1 5 642 581 0.6546 27 0.48736 -0.07525 0.06234 -0.00504 0.04739 0.03035 -0.08305 0.00360 -0.00948 -0.01338 -186 302 480 51688 0.42699 756 1 3 641 466 0.4437 83 0.23280 0.03455 -0.05015 0.04774 -0.03844 0.05625 -0.01984 0.03211 0.07286 0.01081 -187 302 509 51688 0.33817 752 1 4 461 376 0.5554 83 0.41122 0.03033 -0.02919 0.05859 0.01268 0.01071 -0.01965 0.03583 0.01169 -0.04167 -188 302 511 51688 0.42346 752 1 5 461 355 0.4839 83 0.30816 0.01129 -0.01961 0.00797 0.03984 0.06416 -0.03796 -0.00528 -0.08107 0.02011 -189 302 519 51688 0.47076 756 1 4 644 497 0.4473 83 0.16907 -0.08796 -0.02903 0.07803 0.00017 0.02675 0.03413 -0.01467 0.03838 -0.02088 -190 302 525 51688 0.37282 756 1 6 644 351 0.5157 83 0.35697 0.04018 -0.01957 0.01547 0.05909 -0.04326 -0.00753 0.00866 -0.01757 -0.02265 -191 302 528 51688 0.17760 756 1 6 644 180 0.8817 27 0.80717 0.04714 0.00263 0.05614 0.00295 -0.02193 -0.04518 -0.02827 -0.00091 -0.04118 -192 302 529 51688 0.37683 756 1 6 644 321 0.4525 83 0.26967 0.03151 -0.01617 0.03416 0.06476 0.03722 -0.00847 0.00415 -0.00831 -0.03082 -193 302 551 51688 0.17878 752 1 5 462 202 1.1094 27 1.13065 0.09856 0.05994 0.06368 -0.01680 -0.02426 0.00137 -0.03716 -0.07529 -0.07064 -194 302 559 51688 0.49735 756 1 4 646 561 0.4445 83 0.22678 0.04127 0.04903 -0.03090 0.07526 -0.10614 0.08855 0.00071 -0.07087 0.02140 -195 302 582 51688 0.26226 756 1 4 649 158 0.7970 40 0.71732 0.05415 0.04532 -0.04724 0.02014 0.00620 0.00264 -0.00106 -0.01079 0.01214 -196 302 632 51688 0.18705 752 1 4 465 135 1.1083 27 1.06917 0.06866 -0.03424 0.04753 -0.04975 0.09450 0.02793 0.00327 0.00209 0.03355 -197 303 23 51615 0.40589 752 1 3 474 220 0.6557 83 0.28022 -0.00837 -0.17155 -0.02145 -0.00416 0.01606 -0.10580 0.00546 -0.03330 -0.02600 -198 303 26 51615 0.18145 752 1 3 474 136 1.0953 27 0.75925 0.01197 -0.03512 0.00256 -0.06153 -0.08485 0.02136 0.02611 0.10819 0.00616 -199 303 42 51615 0.18437 756 1 1 657 268 1.0399 27 0.69240 -0.36811 0.01261 0.10944 0.00618 0.03820 -0.01260 -0.00084 0.02729 -0.04352 -200 303 96 51615 0.28984 756 1 2 655 279 0.7413 65 0.37863 -0.10309 0.08079 -0.00917 0.00587 -0.00439 0.00876 0.00832 0.03328 0.01406 -201 303 98 51615 0.37979 756 1 2 655 394 0.6527 83 0.24671 -0.01083 0.17719 0.04252 -0.06441 -0.05802 0.01000 -0.14506 -0.02511 0.06776 -202 303 128 51615 0.30345 752 1 2 468 419 0.8085 65 0.59680 0.07845 -0.01920 0.02757 -0.03101 0.03461 -0.05769 -0.03923 0.00607 0.09300 -203 303 129 51615 0.46682 752 1 1 468 349 0.6180 83 0.25752 0.04322 -0.02482 -0.02024 0.01064 0.03092 -0.01806 -0.01274 -0.07040 -0.08577 -204 303 156 51615 0.35517 756 1 3 654 661 0.6116 83 0.37595 -0.00015 0.00245 -0.03537 -0.02260 0.02475 0.07947 -0.07434 -0.06670 -0.04213 -205 303 172 51615 0.38219 752 1 3 468 921 0.5801 83 0.29295 0.01277 -0.02650 -0.00424 -0.06499 0.00929 0.01000 0.07191 -0.00689 0.01460 -206 303 183 51615 0.18515 756 1 2 654 252 1.6960 27 1.85066 -0.04365 -0.16394 0.06603 -0.00925 -0.03696 0.05098 0.00050 -0.02900 -0.11708 -207 303 191 51615 0.30427 752 1 3 468 709 0.6826 65 0.36427 -0.00190 0.00896 0.04955 0.00404 -0.04558 -0.06554 -0.06236 0.00019 -0.11018 -208 303 260 51615 0.18664 752 1 2 465 141 1.2366 27 1.15115 0.06786 0.12453 0.02341 -0.00655 0.00638 -0.05988 -0.00615 -0.01547 -0.00042 -209 303 261 51615 0.44580 752 1 2 465 545 0.6237 83 0.31713 -0.00319 0.02647 -0.00262 -0.00119 0.05237 -0.03167 0.08402 0.02635 0.07707 -210 303 284 51615 0.27879 756 1 1 645 487 0.7586 65 0.49341 0.10427 -0.01595 -0.01977 0.01246 0.07996 -0.10214 0.01924 0.02778 -0.03832 -211 303 299 51615 0.35208 756 1 1 649 478 0.6718 83 0.38992 0.00122 -0.04025 0.02616 -0.01978 -0.02704 0.06673 0.03528 0.04979 0.01066 -212 303 305 51615 0.37939 756 1 2 650 679 0.8010 83 0.43881 0.06152 -0.17397 -0.26435 0.22732 -0.06759 -0.07165 0.01943 -0.20854 0.01243 -213 303 309 51615 0.37866 756 1 2 650 568 0.6180 83 0.31521 0.01334 -0.00139 -0.06181 -0.05496 0.02427 0.03441 -0.01957 -0.00595 -0.01448 -214 303 314 51615 0.35973 756 1 2 650 437 0.5801 83 0.28518 -0.23330 -0.04024 0.02441 0.04235 0.02908 -0.03801 -0.00784 -0.00645 -0.00313 -215 303 321 51615 0.46187 756 1 6 648 634 0.5240 83 0.00882 0.03290 0.06019 -0.00736 -0.02781 -0.02201 -0.08651 -0.07761 0.02762 0.05904 -216 303 346 51615 0.37620 756 1 4 649 207 0.5630 83 0.32341 -0.02019 -0.01063 0.00932 0.05942 -0.03047 -0.04899 -0.00385 0.00598 0.01434 -217 303 347 51615 0.47650 752 1 4 463 543 0.4778 83 0.21282 0.02428 -0.03503 0.04277 -0.02042 -0.01056 0.04862 -0.01424 0.03100 0.03575 -218 303 349 51615 0.25520 752 1 5 463 131 0.7424 27 0.51557 -0.13345 -0.07238 0.00607 0.01871 0.06603 0.01001 0.00533 -0.01048 -0.00474 -219 303 370 51615 0.26040 756 1 5 650 612 0.6865 34 0.43956 -0.04877 0.00232 -0.01292 -0.04326 -0.04749 0.03553 -0.01950 0.04720 -0.05443 -220 303 376 51615 0.26171 756 1 5 650 215 0.7271 39 0.55562 0.04453 0.03345 0.08615 -0.02260 0.03785 -0.00121 -0.07109 -0.02145 0.03177 -221 303 378 51615 0.40648 756 1 5 649 204 0.5011 83 0.20045 -0.05261 -0.06944 -0.02602 -0.04252 -0.02476 0.02965 -0.01250 -0.04553 0.00897 -222 303 384 51615 0.26329 752 1 5 465 165 0.8388 44 0.75634 0.05156 0.01622 0.04250 -0.02039 -0.02375 -0.01902 0.01132 0.08172 -0.02633 -223 303 387 51615 0.34916 756 1 4 651 703 0.5700 83 0.35721 0.03084 0.06050 -0.08066 0.03189 0.00871 -0.00948 0.01536 -0.02029 -0.01048 -224 303 406 51615 0.38759 756 1 6 651 447 0.5369 83 0.28327 0.01786 -0.05640 -0.02682 0.01154 -0.02486 -0.00069 -0.00417 -0.04145 -0.02920 -225 303 409 51615 0.23341 752 1 6 466 80 0.8314 27 0.60117 0.05700 -0.05054 -0.03887 0.01510 -0.03863 0.06383 -0.02452 -0.03005 0.06362 -226 303 413 51615 0.29846 756 1 6 652 25 0.6697 65 0.47102 -0.05916 0.00335 0.07697 -0.00418 0.00535 -0.05016 -0.01156 -0.09904 -0.06914 -227 303 415 51615 0.47806 756 1 5 653 296 0.4520 83 0.15403 -0.00883 -0.03157 -0.02191 -0.05717 0.00342 -0.01239 0.00066 0.03186 -0.03423 -228 303 431 51615 0.17950 752 1 4 468 181 1.1460 27 1.10507 0.06446 -0.03100 -0.05910 0.06094 0.00887 -0.03921 -0.00655 -0.01213 -0.01269 -229 303 444 51615 0.26327 756 1 6 653 515 0.7861 44 0.61772 -0.04031 0.02110 -0.05218 -0.01612 -0.00436 0.01705 0.03339 0.01490 -0.01937 -230 303 451 51615 0.26478 752 1 6 468 149 0.8486 49 0.76697 0.01977 -0.01304 0.02665 -0.01600 -0.00664 0.03155 -0.02262 0.07640 0.03552 -231 303 452 51615 0.26388 752 1 6 468 517 0.7923 46 0.59092 -0.01791 -0.02211 0.10372 -0.04007 -0.02587 -0.00349 -0.01319 0.01042 -0.04081 -232 303 458 51615 0.38428 756 1 6 655 292 0.5125 83 0.21843 -0.09236 -0.01413 -0.01135 -0.02373 -0.03309 0.01070 0.04564 0.02026 -0.01139 -233 303 459 51615 0.26511 756 1 5 654 179 0.7703 50 0.64601 0.02952 -0.04485 0.04349 -0.01273 0.10750 -0.06874 -0.05863 0.01854 -0.00379 -234 303 475 51615 0.38421 756 1 3 654 619 0.5110 83 0.32936 -0.03908 -0.00522 0.04248 0.02700 -0.07104 0.05223 -0.02081 0.03875 0.00006 -235 303 494 51615 0.35248 756 1 3 655 681 0.5767 83 0.37036 0.02523 -0.03912 -0.10352 0.00913 0.03456 0.04787 0.04945 -0.01101 -0.03845 -236 303 504 51615 0.43542 752 1 5 472 339 0.4409 83 0.17001 -0.04052 0.04756 -0.04581 -0.03644 0.10794 0.06927 -0.04028 -0.03592 -0.04483 -237 303 506 51615 0.35376 752 1 4 472 540 0.4668 83 0.20449 -0.01395 -0.02444 0.01651 0.03201 -0.05392 -0.02663 0.01946 -0.03234 0.01447 -238 303 521 51615 0.16445 756 1 6 655 135 1.1842 23 1.08340 -0.50117 0.17002 0.00586 -0.15786 -0.14659 0.04049 -0.02360 0.03455 0.01381 -239 303 527 51615 0.42605 756 1 6 657 496 0.5003 83 0.20065 -0.01373 0.02872 -0.01977 -0.07297 -0.02673 -0.02103 -0.00465 -0.03285 -0.03596 -240 303 529 51615 0.39416 752 1 6 471 304 0.5847 83 0.39780 -0.06752 -0.07967 -0.08690 -0.02639 -0.02751 -0.00608 0.00934 0.03901 -0.00787 -241 303 530 51615 0.44827 752 1 6 470 323 0.4582 83 0.18748 -0.01361 0.07080 -0.00512 -0.10131 -0.03325 0.11156 0.02973 0.01560 0.00479 -242 303 533 51615 0.35707 752 1 6 471 344 0.5408 83 0.36740 0.04809 0.01068 -0.01857 -0.01055 0.01517 0.02211 -0.02664 0.00114 -0.03108 -243 303 542 51615 0.43010 752 1 5 473 72 0.5546 83 0.36658 0.03341 -0.03342 0.04182 0.05575 -0.02252 -0.02466 0.02866 0.01454 0.01226 -244 303 548 51615 0.36108 752 1 5 473 530 0.5924 83 0.39505 0.00084 -0.02083 0.01303 0.01160 -0.03085 0.02303 0.02466 0.01733 -0.09672 -245 303 568 51615 0.35780 752 1 6 474 259 0.4899 83 0.16024 -0.00296 0.05658 -0.01467 -0.02862 0.03332 0.10215 0.00060 0.00788 0.01374 -246 303 577 51615 0.17400 756 1 5 657 203 1.3134 27 1.16461 -0.04345 -0.13159 0.02052 -0.04781 0.01882 0.07710 0.00093 0.01774 -0.01543 -247 303 609 51615 0.34337 756 1 5 660 536 0.6640 83 0.39844 0.01108 0.08275 0.00182 -0.06152 0.02124 0.03054 -0.07063 0.00104 -0.00253 -248 303 618 51615 0.25687 756 1 5 661 332 0.8558 27 0.60210 -0.06076 0.04181 -0.02599 0.03034 0.02317 0.00415 0.03065 0.00765 -0.09302 -249 303 629 51615 0.33956 756 1 4 661 529 0.6375 83 0.29309 0.05284 0.02631 0.08114 0.02995 0.02538 -0.00514 -0.03266 -0.03918 0.01323 -250 304 3 51609 0.27845 756 1 2 668 248 0.9333 65 0.60154 0.02300 0.00175 0.04257 0.01745 0.03009 -0.01346 0.04577 0.00859 -0.07112 -251 304 11 51609 0.38161 752 1 3 483 306 0.6458 83 0.30713 -0.02072 -0.00894 -0.03240 -0.01617 -0.10631 0.04732 0.12961 0.06297 -0.07590 -252 304 19 51609 0.38259 752 1 3 483 517 0.6666 83 0.38795 0.03147 -0.10471 0.01954 -0.02451 -0.06290 -0.08468 -0.02778 -0.05947 -0.05340 -253 304 57 51609 0.32337 756 1 3 667 663 0.6984 65 0.42155 -0.32748 0.02528 0.05985 0.12077 0.07529 -0.07855 -0.05492 0.06432 -0.04902 -254 304 63 51609 0.20075 756 1 1 665 270 0.9997 27 0.74083 -0.00610 -0.08099 0.03143 -0.05075 -0.03599 0.00815 0.00653 0.08827 -0.03847 -255 304 120 51609 0.37140 752 1 2 478 519 0.5942 83 0.33374 -0.06969 -0.01883 -0.01987 -0.05022 -0.01787 0.00674 0.01369 -0.02819 -0.04453 -256 304 125 51609 0.30751 756 1 2 664 335 0.6406 65 0.29994 -0.12233 -0.00716 -0.05419 -0.02587 -0.10254 0.01707 0.01533 -0.00954 -0.04584 -257 304 127 51609 0.35684 756 1 2 664 630 0.6045 83 0.25040 0.01011 -0.05498 0.01194 -0.01847 0.01774 0.01155 -0.00580 0.04302 0.05516 -258 304 131 51609 0.35725 752 1 3 478 542 0.6503 83 0.43500 0.02828 0.01347 0.01256 0.02279 0.01744 0.04272 0.01814 -0.05394 0.05756 -259 304 134 51609 0.38646 756 1 3 665 695 0.5515 83 0.26363 -0.04956 -0.03134 -0.00903 0.01556 -0.02887 0.01567 0.04312 0.01938 0.01362 -260 304 140 51609 0.27610 756 1 2 664 121 0.6193 65 0.30927 -0.06332 0.00463 -0.04386 -0.04018 -0.02475 -0.00414 0.04651 -0.04222 -0.02247 -261 304 149 51609 0.32013 756 1 2 663 558 0.5913 65 0.35175 0.05644 -0.02542 0.04577 0.02544 -0.02363 -0.03656 -0.00979 0.02206 -0.02238 -262 304 158 51609 0.31942 752 1 3 477 520 0.6172 65 0.35719 -0.06930 -0.05545 0.02111 0.05323 0.02569 -0.05762 0.02405 -0.04857 0.01212 -263 304 166 51609 0.35577 756 1 3 659 725 0.5567 83 0.34495 0.01022 -0.02812 -0.02208 0.01927 -0.01063 0.06978 -0.01809 -0.01271 -0.04459 -264 304 196 51609 0.32206 752 1 2 477 235 0.5494 65 0.27363 -0.06526 -0.02065 0.01318 -0.05165 0.04547 0.02480 0.02592 0.01813 0.05648 -265 304 234 51609 0.15024 752 1 2 475 109 1.5745 17 1.58323 -0.75003 -0.19034 0.01738 -0.18967 -0.04168 -0.04408 0.07534 0.00954 -0.04367 -266 304 241 51609 0.18385 756 1 2 656 173 1.0879 27 0.87608 -0.25351 -0.20189 0.04512 -0.01001 -0.00113 0.02678 0.04781 -0.06989 -0.04412 -267 304 243 51609 0.37910 756 1 2 654 157 0.5089 83 0.24351 -0.02428 0.01681 0.02542 -0.02445 -0.01204 -0.00872 0.02866 -0.03201 -0.02674 -268 304 279 51609 0.18472 756 1 1 657 182 1.0810 27 0.81217 -0.11104 -0.09153 0.05263 0.01515 -0.13027 0.09127 0.05671 -0.00174 -0.04271 -269 304 312 51609 0.37930 752 1 2 469 603 0.5819 83 0.35747 0.04428 -0.01362 0.03503 0.01379 0.01181 -0.00409 -0.04332 0.00243 -0.04057 -270 304 325 51609 0.37433 752 1 4 470 302 0.5937 83 0.34562 -0.01215 0.05394 0.04759 0.10552 -0.02639 0.01182 -0.00273 0.01711 -0.03054 -271 304 332 51609 0.18089 756 1 3 654 106 1.3388 27 1.36054 0.05545 0.12204 -0.00319 0.03192 0.07672 0.06541 -0.03942 0.02462 -0.03165 -272 304 351 51609 0.26709 752 1 6 468 307 0.7389 57 0.55277 0.03248 -0.00265 -0.00458 0.01488 0.00511 0.00828 -0.00406 -0.01274 0.05149 -273 304 355 51609 0.26563 752 1 6 469 267 0.6874 52 0.42404 -0.16652 -0.02359 -0.00893 -0.02092 0.02593 0.04985 0.02515 0.06526 -0.04200 -274 304 366 51609 0.17877 756 1 3 657 160 1.2528 27 1.14635 0.07027 0.03865 -0.00150 -0.00388 -0.07555 0.06802 0.03226 0.00225 -0.05046 -275 304 378 51609 0.35795 752 1 4 472 513 0.6632 83 0.46176 0.02445 0.00600 0.13277 0.07850 0.05625 0.01320 0.01291 0.02604 0.03069 -276 304 382 51609 0.38360 756 1 6 659 469 0.5083 83 0.24774 0.02626 -0.05348 0.07867 -0.00015 -0.09723 0.04918 0.01198 -0.05959 -0.05509 -277 304 385 51609 0.34537 752 1 6 475 445 0.5134 83 0.26837 -0.01579 0.01858 -0.01108 0.00259 -0.01858 -0.00259 -0.03224 -0.05505 -0.00957 -278 304 387 51609 0.34130 752 1 6 475 325 0.7028 83 0.59921 0.00195 0.05082 0.02837 -0.00712 0.00667 -0.01316 0.06106 -0.03652 -0.00670 -279 304 388 51609 0.34323 756 1 5 660 595 0.6115 83 0.46222 -0.02020 -0.03692 -0.01571 -0.00143 0.06042 0.05346 0.04025 0.01704 -0.00234 -280 304 390 51609 0.34457 752 1 6 475 356 0.5211 83 0.33319 0.01930 0.01999 0.01646 0.01425 -0.02372 0.00660 -0.02042 0.01409 0.00278 -281 304 395 51609 0.35794 756 1 6 658 658 0.5441 83 0.32195 0.00714 -0.01891 0.03282 0.02834 0.04968 0.01446 0.02652 0.02939 0.05342 -282 304 404 51609 0.34595 752 1 4 476 292 0.6606 83 0.51398 0.04029 -0.02277 0.05568 -0.06677 -0.01801 -0.00315 0.00132 0.02663 0.01070 -283 304 417 51609 0.33828 752 1 4 475 343 0.5671 83 0.33660 -0.00270 0.02087 0.07751 0.01048 0.03382 -0.03487 -0.00037 -0.00286 0.01851 -284 304 430 51609 0.16910 756 1 6 661 144 1.3780 27 1.43113 0.09166 0.19397 -0.01997 0.11250 -0.04120 0.07667 0.04449 -0.11550 0.06537 -285 304 440 51609 0.33842 756 1 5 662 342 0.5418 83 0.33489 0.00960 -0.00794 -0.00042 -0.02603 0.03525 0.01183 0.01107 0.08497 0.01780 -286 304 446 51609 0.35470 752 1 4 478 291 0.5284 83 0.31241 -0.00701 -0.01826 0.02330 0.02198 -0.00271 -0.00771 0.05766 0.03025 0.05980 -287 304 476 51609 0.27720 756 1 4 664 532 0.7457 65 0.56371 0.02267 0.00466 0.02055 0.04552 0.06422 0.00522 0.03289 -0.03205 0.02803 -288 304 483 51609 0.23564 756 1 4 665 54 0.9466 27 0.91778 0.06477 0.00546 -0.06169 0.01306 0.02238 0.08020 -0.00561 0.00526 0.06998 -289 304 491 51609 0.38577 756 1 4 665 670 0.4962 83 0.28797 0.03616 -0.03455 -0.05442 0.01565 0.01198 0.02912 -0.02085 0.03333 0.06772 -290 304 496 51609 0.46890 756 1 4 665 627 0.4648 83 0.18811 0.01579 0.01676 -0.01987 -0.02134 -0.02133 0.01953 -0.01386 -0.08514 -0.00859 -291 304 499 51609 0.27748 752 1 4 479 90 0.7505 65 0.68045 0.05518 0.06594 0.04302 -0.00714 -0.01376 -0.00210 -0.03829 0.00704 -0.01382 -292 304 502 51609 0.32987 752 1 6 478 319 0.6338 72 0.44393 0.01543 -0.01761 -0.05342 0.04561 -0.01025 0.00559 0.08205 0.03063 -0.03076 -293 304 513 51609 0.17048 752 1 6 477 546 1.0280 27 0.89230 -0.01919 0.05119 -0.11136 0.03121 -0.05433 0.01509 -0.06338 -0.01760 -0.00884 -294 304 520 51609 0.33062 752 1 6 478 549 0.5999 73 0.39766 0.02295 -0.03803 -0.00971 0.00157 -0.00870 0.02267 0.00972 -0.02250 0.03963 -295 304 529 51609 0.16695 752 1 5 482 141 1.2844 23 1.30109 -0.38027 0.12569 -0.09699 0.05191 0.06532 -0.01657 -0.00555 -0.04727 0.02250 -296 304 532 51609 0.39397 756 1 4 667 424 0.5364 83 0.29287 0.01856 -0.04640 -0.08049 0.01031 0.03317 -0.02448 -0.00051 0.01799 -0.04616 -297 304 533 51609 0.27661 752 1 4 481 655 0.6875 65 0.55832 0.08508 0.03151 -0.01499 -0.02746 -0.02112 0.01579 -0.02336 0.00405 0.04322 -298 304 544 51609 0.34549 756 1 5 665 336 0.5580 83 0.29095 -0.01640 0.05840 0.03224 0.06192 -0.01095 -0.05461 -0.04049 0.02233 -0.09136 -299 304 551 51609 0.31458 756 1 6 664 607 0.6474 65 0.49097 -0.03344 0.00880 0.01601 -0.01118 -0.02174 -0.00970 0.06904 0.03317 -0.01519 -300 304 568 51609 0.38402 756 1 4 668 29 0.5970 83 0.41493 0.04204 0.06676 -0.02839 -0.01602 -0.03746 0.06307 -0.02097 -0.00101 0.03410 -301 304 592 51609 0.34654 756 1 5 665 423 0.5241 83 0.29766 -0.02206 -0.01746 -0.00494 0.00904 0.03650 0.06041 -0.05450 0.02087 -0.03837 -302 304 595 51609 0.27840 756 1 5 665 642 0.6750 65 0.50158 0.00458 -0.06488 0.00986 0.01100 -0.03905 0.00618 0.04869 -0.00752 -0.00766 -303 304 602 51609 0.32215 752 1 4 484 320 0.5547 65 0.29710 -0.03386 0.00975 0.01109 -0.01829 -0.01624 0.00407 0.00513 -0.02988 0.00647 -304 304 606 51609 0.38446 752 1 5 483 374 0.5984 83 0.29533 -0.00212 0.04345 0.01948 -0.00860 -0.04564 0.08202 0.04015 -0.00330 0.05587 -305 304 612 51609 0.32106 752 1 4 484 397 0.7033 65 0.54600 0.07070 0.03927 -0.03968 0.01955 -0.01580 0.00860 0.05713 0.00216 0.05771 -306 304 616 51609 0.32359 752 1 4 484 361 0.6075 65 0.42844 -0.00853 0.02421 0.02404 -0.08496 -0.04482 -0.02057 0.03091 0.03247 0.03730 -307 305 15 51613 0.29034 756 1 3 680 358 0.5113 65 0.20501 -0.01842 -0.01007 -0.01686 -0.03538 -0.04485 0.01301 -0.02808 0.00997 0.03644 -308 305 40 51613 0.31847 756 1 1 675 683 0.3940 65 0.19942 0.01779 0.01665 -0.01573 -0.03311 -0.02138 0.03130 -0.00636 0.00202 -0.01555 -309 305 42 51613 0.33491 752 1 2 493 393 0.5641 75 0.38727 0.01370 0.00567 -0.06581 0.00857 0.00311 -0.01247 -0.04711 0.08043 0.03556 -310 305 43 51613 0.33446 756 1 2 678 406 0.4831 73 0.31507 0.02329 -0.01404 0.02188 0.02060 0.01279 0.01210 -0.01746 0.02538 0.02050 -311 305 53 51613 0.33478 756 1 2 678 512 0.4603 74 0.24171 0.03024 -0.06239 -0.02311 0.02806 0.02042 -0.03311 -0.03227 0.01401 0.01060 -312 305 55 51613 0.43892 756 1 3 679 538 0.4557 83 0.26359 0.00288 -0.00978 -0.02938 -0.03764 0.09648 0.05385 0.01781 0.01552 0.01347 -313 305 63 51613 0.31666 756 1 1 675 570 0.5027 65 0.33209 -0.00419 0.00373 -0.03292 0.01326 -0.00170 -0.00482 0.02589 -0.01821 -0.00489 -314 305 76 51613 0.26685 752 1 2 488 422 0.6202 56 0.53139 0.04438 0.02416 -0.01338 0.04835 -0.02091 -0.00639 -0.00613 -0.01830 0.00916 -315 305 81 51613 0.35584 752 1 3 491 240 0.4813 83 0.32375 -0.01339 -0.00538 -0.04499 0.03497 -0.01268 0.00447 -0.00645 -0.02076 0.02271 -316 305 87 51613 0.28890 752 1 2 491 479 0.5121 65 0.33706 -0.04817 0.02152 -0.02759 0.01204 0.03382 0.06124 0.00839 -0.01716 0.01419 -317 305 88 51613 0.27914 752 1 3 492 249 0.5984 65 0.48865 -0.01588 0.02835 0.00617 0.00081 -0.04120 -0.03353 0.05526 -0.02134 -0.03393 -318 305 129 51613 0.32051 756 1 2 675 418 0.5226 65 0.41411 0.01214 0.02801 -0.06597 0.02971 0.01787 -0.03520 -0.01630 0.01699 0.01353 -319 305 130 51613 0.30639 756 1 2 674 697 0.6178 65 0.50107 0.09004 0.06141 -0.04113 0.00130 -0.01345 -0.02172 -0.03567 -0.03304 -0.01104 -320 305 133 51613 0.16261 752 1 3 490 206 1.0447 23 1.12768 0.13128 0.03978 -0.07881 -0.00448 0.02122 0.01625 -0.02937 0.01725 0.05380 -321 305 136 51613 0.16310 756 1 3 675 167 1.1172 23 1.22229 0.06871 0.01397 -0.06158 -0.05456 0.04322 0.07051 -0.02812 0.05101 0.04647 -322 305 138 51613 0.35493 756 1 3 675 926 0.4388 83 0.26476 0.01683 -0.00518 -0.04909 -0.00595 0.03441 0.02542 -0.02464 -0.00481 0.00550 -323 305 140 51613 0.30632 752 1 3 490 361 0.4983 65 0.36547 0.04060 -0.01749 -0.02708 0.02229 0.00546 0.03910 0.00961 -0.03771 -0.01598 -324 305 152 51613 0.35557 752 1 3 489 99 0.5096 83 0.42346 0.02496 -0.01444 -0.02676 0.00941 0.02125 0.02577 -0.01803 0.00494 -0.01002 -325 305 154 51613 0.25437 752 1 3 487 190 0.7173 27 0.67772 0.00414 0.00785 0.07635 0.05297 -0.02019 -0.00480 0.03491 -0.03688 -0.02254 -326 305 160 51613 0.28466 756 1 2 674 599 0.4981 65 0.34782 -0.07778 0.01838 0.03964 0.00650 -0.04144 -0.06122 0.01516 -0.01606 -0.02497 -327 305 193 51613 0.20490 756 1 1 671 167 0.7495 27 0.67601 -0.01503 0.02420 0.06867 -0.03122 0.05416 0.01852 0.04186 0.04079 -0.05116 -328 305 204 51613 0.17397 752 1 3 485 157 0.9886 27 1.05000 0.10775 0.03892 -0.04505 -0.06470 0.03683 -0.00461 -0.08153 0.01398 0.07054 -329 305 212 51613 0.30836 756 1 3 671 774 0.4173 65 0.25380 -0.06535 -0.02370 -0.01323 0.00370 -0.01429 0.00591 -0.00373 -0.00613 -0.01467 -330 305 216 51613 0.45953 756 1 3 671 507 0.3409 83 0.12777 0.02581 0.00454 0.05648 -0.03180 0.00892 0.00995 -0.00879 -0.01953 0.02212 -331 305 218 51613 0.32173 756 1 3 671 624 0.5004 65 0.39146 0.00096 0.01930 -0.05133 -0.00574 -0.02699 -0.00825 0.03392 -0.01232 0.02762 -332 305 219 51613 0.31655 756 1 3 671 390 0.4664 65 0.28510 -0.04331 -0.05084 -0.01566 -0.00490 0.01011 0.01122 0.03578 -0.03913 -0.00482 -333 305 238 51613 0.17688 752 1 1 484 141 0.9039 27 0.92424 -0.02379 0.08986 -0.04160 -0.06917 -0.00941 0.02393 0.00542 0.00164 0.01905 -334 305 242 51613 0.19130 756 1 2 669 235 0.8054 27 0.78197 0.09072 0.09343 0.02307 -0.03222 -0.00374 0.00007 -0.04877 0.02252 0.03099 -335 305 244 51613 0.45507 752 1 3 485 333 0.3728 83 0.14596 -0.01158 0.03366 -0.00478 -0.01514 -0.04755 -0.09571 0.01297 0.02367 0.00052 -336 305 246 51613 0.35761 752 1 3 484 432 0.4003 83 0.21133 -0.00376 0.00738 -0.00102 -0.01081 0.01940 -0.01828 -0.02190 0.00622 0.06420 -337 305 282 51613 0.48418 756 1 2 668 863 0.4215 83 0.19107 -0.00103 -0.00412 -0.00266 -0.00624 -0.02572 0.05863 -0.07061 -0.06398 -0.01194 -338 305 365 51613 0.32234 752 1 4 485 507 0.8035 65 0.72489 0.04804 0.09825 0.02274 -0.04668 -0.05106 0.07238 0.03098 -0.02560 0.03212 -339 305 394 51613 0.40819 756 1 5 668 519 0.5316 83 0.20981 -0.03510 -0.06461 -0.03812 -0.00146 -0.05876 0.00894 0.04174 -0.00146 -0.02402 -340 305 411 51613 0.32556 756 1 4 671 160 0.5439 65 0.37960 -0.03524 0.05653 0.05641 -0.03320 -0.05926 0.05308 -0.00210 0.03336 -0.04225 -341 305 416 51613 0.19762 752 1 5 486 161 1.0209 27 1.06351 0.05692 0.02188 0.07299 -0.03031 -0.01693 -0.00836 0.04170 -0.01389 0.00708 -342 305 433 51613 0.38612 752 1 6 483 458 0.4506 83 0.26484 -0.00121 -0.01487 -0.00512 0.00536 0.02267 0.00122 0.03139 0.02517 0.04083 -343 305 443 51613 0.47315 756 1 5 673 499 0.4138 83 0.18247 0.01812 0.02181 0.00550 0.00474 0.03514 -0.02212 0.03337 -0.00513 0.03350 -344 305 450 51613 0.20358 752 1 5 488 182 0.9574 27 0.98149 0.05102 0.03306 0.06800 -0.03971 0.03685 0.02842 0.02431 -0.00208 -0.01454 -345 305 466 51613 0.29585 756 1 5 674 875 0.5109 65 0.33900 -0.00849 -0.06149 0.05809 -0.03730 0.01823 -0.00901 0.01446 -0.01682 -0.00544 -346 305 467 51613 0.38167 752 1 5 490 693 0.5099 83 0.35558 0.06522 -0.02211 -0.03962 0.00521 -0.01273 -0.01127 0.03641 0.03458 -0.01735 -347 305 468 51613 0.33304 756 1 5 674 257 0.4575 73 0.25750 0.01739 -0.02783 -0.00093 -0.00549 0.01865 0.01799 0.01938 0.03217 -0.00279 -348 305 469 51613 0.33735 756 1 5 676 691 0.4893 82 0.36015 0.03912 0.00329 0.01873 0.00458 0.02268 0.03273 0.04305 0.04069 -0.02412 -349 305 478 51613 0.45532 756 1 4 675 689 0.4679 83 0.31382 -0.03085 0.04112 -0.00252 -0.00941 0.01081 -0.02816 0.02103 -0.00770 -0.00201 -350 305 497 51613 0.28999 756 1 4 676 689 0.6163 65 0.50628 0.02452 0.02673 -0.03257 0.01060 -0.00452 0.01061 -0.02143 0.02920 0.07362 -351 305 510 51613 0.30422 756 1 6 671 418 0.6184 65 0.47313 0.01576 -0.02400 0.02353 -0.00472 0.00081 -0.03635 -0.02677 -0.04709 0.01631 -352 305 511 51613 0.30153 756 1 6 671 553 0.5783 65 0.43208 0.02759 -0.02968 0.00804 0.01668 0.03357 -0.03314 -0.07055 0.01460 -0.04779 -353 305 516 51613 0.32593 752 1 6 486 400 0.5729 65 0.40889 0.05371 -0.02476 -0.03190 -0.00954 0.00825 0.04314 0.02788 0.00453 0.00923 -354 305 547 51613 0.28046 756 1 6 673 675 0.7167 65 0.58970 -0.26579 0.00970 -0.04033 -0.02473 0.02038 0.01108 -0.02247 0.01248 0.06038 -355 305 548 51613 0.47584 752 1 6 488 48 0.4212 83 0.20572 0.01955 -0.05067 0.00114 0.03569 0.02152 0.06706 0.03207 -0.00251 -0.02329 -356 305 558 51613 0.47502 756 1 6 674 7 0.4256 83 0.17349 0.01636 -0.04546 -0.05813 0.00686 -0.02642 -0.00342 0.04658 0.00351 -0.01279 -357 305 560 51613 0.32582 752 1 6 488 433 0.5139 65 0.35979 0.00564 -0.02407 -0.00824 -0.00331 -0.00992 -0.02230 0.04659 0.01685 0.03168 -358 305 582 51613 0.29126 756 1 6 675 259 0.6314 65 0.49708 -0.09961 -0.05646 -0.00696 0.01981 0.04895 0.04409 0.01459 -0.00242 -0.03284 -359 305 583 51613 0.30475 756 1 6 674 602 0.5515 65 0.40245 0.00520 0.00989 0.01832 -0.01624 0.01846 -0.01076 -0.02805 -0.01113 -0.01490 -360 305 587 51613 0.34512 756 1 6 675 173 0.5210 83 0.27791 -0.39069 0.00104 -0.01809 0.04990 0.00235 -0.05405 -0.05974 0.01986 -0.02688 -361 305 589 51613 0.29096 752 1 6 489 65 0.6194 65 0.50145 0.03105 0.00676 -0.00845 0.03946 0.00356 -0.00676 0.01535 -0.02015 0.00362 -362 305 590 51613 0.30667 756 1 6 674 55 0.5803 65 0.38201 -0.17053 0.07345 -0.03618 0.03459 0.01745 -0.03405 -0.08082 -0.00022 0.00928 -363 305 615 51613 0.33671 756 1 4 680 576 0.4960 80 0.33556 -0.02618 0.01536 0.01312 -0.00482 -0.00566 0.01543 -0.02441 -0.00321 -0.00477 -364 305 622 51613 0.40830 752 1 6 493 304 0.4239 83 0.10199 0.00674 -0.05060 0.00241 -0.07066 -0.01602 -0.00215 0.01651 0.08582 -0.03318 -365 305 625 51613 0.31925 756 1 6 677 553 0.5031 65 0.32814 0.01436 0.05748 -0.00932 -0.03400 -0.01967 0.03466 0.02607 -0.01754 0.01620 -366 305 638 51613 0.32227 752 1 6 493 668 0.6142 65 0.51210 0.02311 0.09940 0.01791 -0.02034 -0.01940 0.01667 0.01476 0.01909 0.01722 -367 306 3 51690 0.21480 756 1 1 687 277 0.9328 27 0.81040 0.03289 -0.03807 0.06813 -0.00573 -0.04727 0.10244 -0.01864 -0.08086 0.02761 -368 306 13 51690 0.24428 752 1 2 503 273 0.8194 27 0.66212 0.06918 0.05228 -0.08782 0.04410 -0.11028 -0.03153 -0.01578 0.01895 -0.01908 -369 306 14 51690 0.25684 752 1 2 503 259 0.8181 27 0.68671 0.07949 -0.01347 -0.01614 0.08564 0.00015 0.00665 -0.02469 0.02539 0.00614 -370 306 15 51690 0.21524 752 1 2 505 134 0.9760 27 0.90714 0.00633 0.08878 0.15476 -0.03311 0.05124 0.02065 0.06101 -0.01237 0.01130 -371 306 16 51690 0.28213 756 1 1 688 607 0.6123 65 0.29155 -0.00560 -0.04054 -0.06589 0.01378 -0.08479 -0.03431 0.05297 -0.07742 0.00046 -372 306 33 51690 0.46075 756 1 3 691 477 0.5068 83 0.20316 0.02176 -0.00766 -0.01908 0.01132 -0.07017 -0.00507 0.01782 0.07111 -0.08631 -373 306 35 51690 0.28557 756 1 3 690 544 0.6740 65 0.47829 -0.05155 -0.04761 0.00323 0.06049 0.02314 -0.10087 -0.03023 0.04639 -0.03316 -374 306 44 51690 0.22867 752 1 1 500 223 0.8945 27 0.78331 0.04445 0.01826 0.02729 -0.00893 0.00759 -0.01849 -0.00816 0.01175 -0.04661 -375 306 48 51690 0.52731 752 1 1 501 717 0.5147 66 0.16826 0.07316 -0.06085 0.01648 -0.09011 -0.03818 -0.05871 -0.11249 0.07502 0.00563 -376 306 49 51690 0.24484 752 1 1 502 167 0.8220 27 0.74211 -0.02636 0.02686 0.00227 0.03463 -0.00689 0.03486 0.02899 -0.05328 -0.02511 -377 306 55 51690 0.21913 756 1 1 686 181 0.9642 27 0.92519 0.06869 0.05816 0.05075 0.02516 0.06120 -0.02914 0.01219 -0.01413 0.00148 -378 306 58 51690 0.21902 756 1 1 686 171 1.0005 27 1.00060 0.04396 0.12390 0.03679 0.02168 0.01056 -0.03359 -0.03000 -0.04793 -0.04235 -379 306 60 51690 0.38752 756 1 1 687 404 0.4698 83 0.23976 0.03345 0.02046 0.01317 -0.02803 -0.03718 0.03561 -0.05310 0.02475 -0.02584 -380 306 61 51690 0.32628 752 1 3 504 296 0.6879 65 0.53908 0.03967 0.00250 0.05421 -0.07537 -0.02886 0.05303 0.04864 0.03243 0.01062 -381 306 66 51690 0.28807 752 1 3 503 57 0.6524 65 0.49606 -0.00880 -0.01391 -0.02337 0.03198 -0.00228 0.02920 -0.03342 -0.01887 0.05532 -382 306 68 51690 0.21883 752 1 3 504 862 0.7960 27 0.60723 -0.00753 0.03113 0.06047 -0.09077 -0.04711 0.05006 0.05592 -0.02395 0.02148 -383 306 77 51690 0.21837 756 1 2 689 227 0.9928 27 0.92664 0.09676 0.04317 0.08206 0.02699 0.02633 0.01987 0.01372 0.03667 0.01002 -384 306 91 51690 0.32631 756 1 1 685 478 0.5599 65 0.35835 0.00478 0.00123 -0.01966 -0.07355 -0.04562 0.04791 -0.00206 0.02538 0.00496 -385 306 100 51690 0.24934 756 1 1 685 253 0.5714 27 0.33714 -0.02126 0.03833 0.02530 0.01928 -0.05096 -0.01736 -0.01298 -0.00883 -0.03059 -386 306 115 51690 0.21105 756 1 3 688 40 0.6625 27 0.38029 -0.04002 -0.04507 0.00248 -0.02433 0.02992 0.01191 0.05097 -0.06496 -0.01041 -387 306 125 51690 0.26313 752 1 1 498 310 0.7284 43 0.57210 0.02785 0.03234 -0.02532 0.06212 -0.00843 0.00291 0.01272 -0.03214 -0.01749 -388 306 154 51690 0.40237 756 1 2 685 564 0.5225 83 0.39969 0.03749 -0.03783 -0.01791 -0.01300 -0.02271 0.03225 -0.00373 -0.02812 -0.00981 -389 306 161 51690 0.45014 756 1 3 683 575 0.4268 83 0.20470 0.02228 0.03721 -0.01375 -0.02855 0.01873 -0.06822 -0.05499 0.01870 -0.00067 -390 306 167 51690 0.25766 752 1 2 499 208 0.6953 27 0.57002 0.07863 -0.02706 0.02257 0.03505 0.00574 -0.00679 -0.01374 0.01368 -0.00151 -391 306 180 51690 0.51814 752 1 3 498 463 0.4263 66 0.19132 0.03627 -0.07970 -0.00387 0.04706 0.03099 0.06079 0.02191 -0.00711 0.02751 -392 306 199 51690 0.28151 756 1 2 682 33 0.5890 65 0.43427 0.00732 -0.02492 0.03391 -0.00103 -0.06103 -0.00959 -0.01590 0.03036 0.01806 -393 306 200 51690 0.22035 756 1 3 681 752 0.8118 27 0.73556 0.08061 0.02733 0.01164 0.00770 0.05215 -0.08443 0.00244 0.03071 0.01108 -394 306 201 51690 0.40155 752 1 1 496 554 0.4602 83 0.22692 0.01405 -0.01189 -0.00198 0.04937 -0.03242 0.07710 -0.03308 -0.01014 0.03107 -395 306 204 51690 0.40202 756 1 1 681 618 0.4658 83 0.26935 0.01112 0.01671 -0.02343 -0.02521 0.00804 0.04060 -0.00342 0.04905 -0.01723 -396 306 207 51690 0.40212 752 1 1 496 556 0.5190 83 0.33755 0.02333 0.03498 -0.04135 -0.02311 0.05244 0.03349 -0.01958 0.03138 0.00187 -397 306 208 51690 0.36208 756 1 1 682 224 0.5641 83 0.38648 -0.00964 -0.01204 -0.06795 0.00378 0.02000 -0.06486 0.03691 0.03305 -0.03503 -398 306 210 51690 0.40330 756 1 1 681 673 0.4430 83 0.22141 0.00655 -0.02715 -0.03679 -0.00177 0.04359 -0.01445 -0.03284 0.05685 0.01741 -399 306 215 51690 0.39660 752 1 2 497 375 0.4576 83 0.25630 -0.08723 -0.04312 -0.08908 -0.04249 0.03488 0.02323 0.00180 0.01096 -0.02645 -400 306 218 51690 0.25905 752 1 2 496 686 0.7808 29 0.68047 -0.00723 -0.00068 0.03678 -0.00201 -0.05853 -0.04400 -0.00952 -0.02323 -0.01131 -401 306 222 51690 0.32079 756 1 2 680 121 0.5207 65 0.30683 -0.05042 0.07898 0.00983 -0.01042 -0.00263 0.03108 -0.00474 -0.00401 0.02339 -402 306 223 51690 0.44026 752 1 3 494 477 0.4337 83 0.19897 0.02061 -0.08205 0.04267 -0.01130 -0.07262 0.00764 -0.02161 -0.02281 -0.00002 -403 306 232 51690 0.44060 756 1 3 679 532 0.4967 83 0.26431 0.04781 -0.00672 0.00839 -0.14394 0.03280 -0.02651 0.03830 -0.01796 0.02676 -404 306 241 51690 0.33037 756 1 1 678 456 0.5450 73 0.34412 -0.00752 -0.00366 -0.01394 0.02974 0.01069 -0.01601 0.01070 0.02859 -0.00621 -405 306 244 51690 0.35781 756 1 1 679 310 0.5544 83 0.38859 0.04094 -0.02022 -0.04445 0.02761 0.03707 0.02505 0.03417 0.05431 0.03263 -406 306 255 51690 0.40317 756 1 1 680 523 0.4292 83 0.19034 0.02013 -0.03730 -0.07509 -0.07015 0.02698 0.01261 0.02394 -0.00273 -0.02371 -407 306 268 51690 0.32024 756 1 2 677 752 0.5842 65 0.45098 0.00036 0.00802 0.03318 0.02705 -0.04966 0.00481 0.04357 0.00778 0.00377 -408 306 288 51690 0.39896 752 1 2 491 288 0.4496 83 0.18944 -0.06626 -0.01384 -0.00077 0.08369 -0.00125 0.05293 0.01582 0.09320 -0.09590 -409 306 292 51690 0.21827 752 1 2 492 281 0.6512 27 0.40259 -0.00302 -0.02545 0.03001 0.00801 -0.04401 0.04755 0.02869 -0.01402 0.04776 -410 306 306 51690 0.33572 752 1 3 489 637 0.5552 77 0.36673 0.03769 0.00826 -0.00312 0.03510 -0.02034 0.03201 0.01159 0.01932 -0.01772 -411 306 312 51690 0.28396 756 1 2 675 530 0.5849 65 0.37095 -0.10380 -0.01821 -0.00118 -0.04348 -0.02111 -0.01716 0.02371 -0.05059 -0.00275 -412 306 317 51690 0.28484 752 1 3 489 561 0.6550 65 0.52050 0.02112 0.05879 0.00718 0.02553 -0.05355 -0.08474 -0.02942 0.04653 0.05596 -413 306 322 51690 0.31993 756 1 6 678 517 0.5493 65 0.25648 -0.01689 -0.00724 0.01350 0.03264 -0.05645 0.02128 0.06866 -0.04255 -0.05455 -414 306 339 51690 0.16147 756 1 5 678 20 1.1337 23 1.07567 0.04491 0.04751 -0.04469 -0.03105 0.06686 0.05983 -0.00316 -0.03934 0.02287 -415 306 341 51690 0.33545 756 1 5 676 756 0.5763 76 0.44702 0.04509 0.04826 0.03992 0.04389 0.01496 -0.01977 -0.01874 0.00528 -0.03188 -416 306 350 51690 0.29547 756 1 5 674 874 0.6353 65 0.42127 0.01789 0.02653 0.01678 -0.00721 0.04707 0.03271 -0.03119 0.03017 0.07293 -417 306 354 51690 0.33303 756 1 5 675 235 0.6344 73 0.42746 0.02324 -0.01617 0.04202 -0.01450 -0.01155 0.02619 0.02301 -0.00503 -0.00956 -418 306 360 51690 0.22948 752 1 4 488 595 0.8058 27 0.71863 -0.03885 0.00516 0.00234 0.04136 -0.03885 0.00359 0.03422 -0.01302 0.06109 -419 306 362 51690 0.21247 752 1 6 494 185 1.0370 27 1.03353 0.01258 -0.03369 0.05791 0.01117 0.00955 0.04467 0.04366 -0.01024 -0.00830 -420 306 364 51690 0.42328 756 1 6 679 578 0.4749 83 0.27467 0.01557 0.00297 -0.00579 -0.06208 0.09984 0.01826 -0.03702 -0.02894 -0.04731 -421 306 376 51690 0.48044 756 1 6 680 510 0.4902 83 0.32535 0.02026 -0.00081 -0.03687 -0.02927 0.03795 0.04264 -0.02310 -0.08262 0.00856 -422 306 377 51690 0.32944 756 1 5 678 305 0.5193 71 0.32633 0.00474 0.00160 0.03807 0.01461 0.01094 0.08474 0.03110 0.02596 0.00101 -423 306 379 51690 0.32397 756 1 5 680 486 0.5650 65 0.37464 0.01989 0.03648 0.01949 0.00275 -0.00818 -0.00237 0.00367 -0.01982 0.00281 -424 306 384 51690 0.36408 756 1 5 677 813 0.5254 83 0.39212 0.00823 -0.01734 0.01549 0.01577 -0.00634 0.02128 0.01000 -0.05375 -0.02593 -425 306 415 51690 0.29930 756 1 5 680 778 0.5516 65 0.27634 -0.00621 -0.04225 0.06553 0.05074 0.03037 -0.01268 -0.02562 -0.01091 -0.02660 -426 306 443 51690 0.33620 756 1 6 683 329 0.5764 79 0.34160 0.05780 0.05112 0.01204 0.06019 0.06929 -0.02019 -0.02798 -0.01369 -0.01403 -427 306 444 51690 0.48094 752 1 6 498 420 0.5360 83 0.27865 0.01716 -0.09482 -0.01143 -0.11626 0.01481 -0.02318 0.01368 0.01806 -0.00197 -428 306 445 51690 0.39976 752 1 6 497 641 0.5455 83 0.26799 0.02675 0.03662 0.03285 -0.00934 0.04115 -0.04818 -0.00125 0.00063 0.01587 -429 306 453 51690 0.47184 752 1 6 498 511 0.5113 83 0.22297 0.00171 -0.03447 0.05098 -0.00310 0.04449 0.00486 0.07900 0.01137 0.00941 -430 306 458 51690 0.15105 752 1 6 497 213 1.3889 17 1.46775 0.06302 -0.00428 -0.05601 0.01323 0.00220 -0.04092 -0.04752 0.07041 0.04150 -431 306 460 51690 0.40984 756 1 5 683 539 0.5775 83 0.35800 0.03207 0.00646 -0.04762 0.03171 -0.03582 -0.05612 0.02615 0.02942 0.02460 -432 306 465 51690 0.29964 756 1 5 680 784 0.5357 65 0.32792 -0.03255 -0.00885 0.03401 -0.01445 -0.02641 -0.03056 -0.01474 -0.00241 -0.00908 -433 306 491 51690 0.29000 756 1 4 682 377 0.6237 65 0.47508 0.06807 -0.01330 0.00127 0.01813 0.04805 0.03387 0.01563 -0.03862 -0.00888 -434 306 499 51690 0.40524 756 1 4 682 314 0.4465 83 0.18976 -0.01734 -0.04350 -0.03080 0.04452 0.02306 -0.03386 0.02332 0.09346 0.03563 -435 306 501 51690 0.44638 752 1 4 498 488 0.4292 83 0.23402 -0.01079 -0.04126 0.02187 0.00787 -0.00643 0.01726 -0.03314 -0.05052 0.01493 -436 306 516 51690 0.47415 752 1 5 498 575 0.4787 83 0.21664 0.01448 0.04256 0.01805 -0.00367 -0.04176 0.03020 -0.00770 -0.11853 -0.02602 -437 306 541 51690 0.43164 756 1 4 685 476 0.4365 83 0.25639 -0.00963 -0.07142 0.07274 -0.00936 -0.04801 0.02425 -0.00773 0.01584 -0.09117 -438 306 547 51690 0.45648 756 1 5 684 611 0.4724 83 0.26972 0.00950 -0.00329 0.00260 -0.02302 -0.08950 -0.10745 0.03793 -0.07489 0.05495 -439 306 556 51690 0.43295 756 1 5 684 706 0.4370 83 0.23489 -0.01890 -0.03124 0.06364 -0.07602 0.01154 0.03629 -0.00345 0.00376 0.03893 -440 306 562 51690 0.34026 756 1 6 687 338 0.6134 83 0.42057 0.04800 0.00241 0.02718 -0.01025 -0.02879 -0.02374 -0.03196 -0.02461 -0.01840 -441 306 579 51690 0.50153 756 1 5 686 554 0.4815 83 0.24406 0.01053 -0.02241 0.02148 0.06846 -0.00493 -0.04303 0.02232 -0.01975 0.07126 -442 306 583 51690 0.27968 752 1 4 503 236 0.7879 65 0.75898 0.05987 -0.00783 0.02369 0.01712 0.04792 0.00249 0.06510 0.01823 -0.04281 -443 306 584 51690 0.22253 752 1 5 500 253 1.0859 27 1.06928 0.05271 0.07462 0.00603 0.06443 -0.04755 -0.03045 0.03847 0.00277 0.01356 -444 307 21 51663 0.37009 752 1 3 515 533 0.5938 83 0.26448 -0.04097 0.06030 -0.10298 0.10479 0.08461 0.12712 0.09559 0.11358 -0.07990 -445 307 27 51663 0.29093 756 1 2 701 345 0.7522 65 0.57444 0.00637 -0.04126 -0.01834 0.04132 -0.00601 -0.00804 -0.01121 -0.04321 -0.03539 -446 307 38 51663 0.24023 756 1 3 703 240 0.9916 27 0.85712 0.05817 -0.01471 0.00855 -0.05986 -0.06927 -0.00345 0.06853 -0.00215 0.05208 -447 307 39 51663 0.29154 752 1 3 517 212 0.8357 65 0.60296 0.08387 0.05030 0.01120 0.07628 0.03383 -0.09964 0.04838 -0.02564 -0.09319 -448 307 44 51663 0.32302 752 1 1 512 420 0.6811 65 0.44534 0.03540 0.03041 -0.04200 0.02306 -0.08208 0.00854 0.06696 -0.02989 0.10177 -449 307 50 51663 0.32462 752 1 1 512 406 0.6460 65 0.41057 0.01566 0.00695 -0.03745 0.04530 -0.08481 0.00363 -0.02281 -0.04331 0.04622 -450 307 58 51663 0.32353 752 1 1 512 587 0.5839 65 0.26376 0.05251 -0.03087 -0.16069 0.07668 -0.08399 0.02660 0.05873 0.00565 0.02232 -451 307 59 51663 0.32342 756 1 1 696 674 0.6306 65 0.43229 0.07490 0.04157 -0.06681 -0.05012 -0.08999 0.08362 0.04565 -0.07494 0.09573 -452 307 65 51663 0.37216 756 1 2 699 977 0.7004 83 0.48914 0.03287 0.00459 -0.05470 0.05183 -0.04446 -0.13092 -0.05452 -0.03345 -0.02592 -453 307 75 51663 0.28756 752 1 3 513 42 0.6443 65 0.46912 0.03346 0.00129 0.02390 0.04897 0.02016 -0.02422 -0.03484 0.02935 0.01592 -454 307 80 51663 0.34646 756 1 3 700 340 0.5513 83 0.27474 0.03248 0.04049 -0.03153 0.00217 0.07425 -0.01132 0.09231 -0.05985 0.05987 -455 307 84 51663 0.36685 752 1 1 511 435 0.5868 83 0.35496 -0.00078 -0.10112 -0.00166 -0.05852 -0.01099 -0.02762 -0.00080 0.00017 -0.02257 -456 307 88 51663 0.32290 756 1 1 695 343 0.5563 65 0.21531 -0.13364 0.06840 0.03798 0.05708 -0.05939 -0.01381 -0.02806 -0.02301 0.06057 -457 307 112 51663 0.37135 756 1 2 696 110 0.5044 83 0.26021 -0.00945 0.01664 0.00059 0.03196 0.04284 0.05180 -0.03638 0.01973 0.00869 -458 307 122 51663 0.21774 756 1 1 694 304 0.7340 27 0.52648 0.07088 -0.01981 0.06645 0.01810 -0.02313 0.00978 0.00122 0.02783 -0.00273 -459 307 126 51663 0.21687 756 1 1 694 385 0.7322 27 0.50130 -0.01111 -0.05040 -0.04194 -0.02320 0.03619 0.00483 -0.02471 -0.00329 -0.03395 -460 307 133 51663 0.33040 752 1 1 508 693 0.5737 73 0.35693 -0.07212 -0.07288 0.01438 0.01946 -0.00733 0.03318 0.02803 0.00281 0.02466 -461 307 136 51663 0.21745 756 1 1 693 157 0.8708 27 0.76097 0.04478 -0.01939 0.02924 0.01534 -0.01018 0.01137 -0.00952 0.00502 -0.04199 -462 307 143 51663 0.29774 756 1 2 694 25 0.6010 65 0.40486 -0.01872 -0.03460 0.02521 0.04573 -0.02419 -0.05156 -0.00702 -0.05120 0.01505 -463 307 152 51663 0.35831 752 1 3 510 691 0.5637 83 0.37192 -0.03005 0.01072 0.08266 0.11342 -0.04091 0.00613 -0.07014 -0.00380 0.03793 -464 307 160 51663 0.30266 756 1 3 695 711 0.5358 65 0.33956 0.00689 -0.04928 0.06541 -0.00022 -0.03304 -0.00410 0.06773 0.00674 -0.03206 -465 307 177 51663 0.24723 752 1 3 507 94 0.8542 27 0.70256 -0.25488 -0.01480 0.00154 0.03827 -0.07118 -0.03039 0.00622 -0.01173 0.01328 -466 307 188 51663 0.18029 756 1 2 692 34 1.3284 27 1.42073 0.10708 0.02921 -0.12927 0.05728 0.05606 -0.09282 -0.07605 0.01540 -0.01927 -467 307 192 51663 0.17970 756 1 2 692 236 1.2844 27 1.33299 0.09507 -0.01740 0.01359 0.04806 -0.00672 -0.10499 -0.06438 0.05066 -0.02415 -468 307 201 51663 0.28495 756 1 1 692 436 0.6920 65 0.50278 -0.11496 -0.02284 0.01772 -0.01420 0.04575 -0.03000 0.05937 0.02235 0.01013 -469 307 203 51663 0.35878 752 1 1 508 444 0.5369 83 0.32945 -0.01329 0.01727 0.00125 -0.02356 -0.05641 0.01828 0.00431 0.03210 0.01236 -470 307 211 51663 0.29182 756 1 1 692 267 0.6819 65 0.54367 -0.04125 -0.05437 -0.05441 -0.05425 -0.01499 0.02611 -0.04620 0.02089 -0.00051 -471 307 221 51663 0.33742 752 1 3 506 48 0.5674 83 0.38349 0.06164 0.03483 0.03297 0.03912 0.09886 -0.00494 -0.01818 0.01360 0.03361 -472 307 226 51663 0.33519 756 1 2 691 1306 0.5568 75 0.33306 -0.05572 0.02571 0.03709 -0.02660 -0.00929 0.03805 0.05757 0.01512 -0.02438 -473 307 227 51663 0.17863 752 1 3 506 270 1.1883 27 1.20357 0.06194 0.07803 0.04550 0.01723 -0.01418 -0.08410 -0.05986 0.04939 0.02233 -474 307 229 51663 0.33636 756 1 2 692 466 0.5623 79 0.38029 -0.06296 -0.02354 0.05671 0.04596 0.00346 0.01504 -0.01327 0.01068 -0.02915 -475 307 233 51663 0.33682 752 1 3 505 364 0.6460 81 0.50225 0.04307 0.03970 0.04799 0.05830 0.06228 -0.00132 -0.03467 0.03515 -0.05522 -476 307 240 51663 0.32521 756 1 2 691 1071 0.6732 65 0.59708 0.03330 0.02659 0.07216 0.00885 0.00789 0.00405 0.04945 -0.03930 0.01991 -477 307 264 51663 0.34089 756 1 3 690 499 0.6118 83 0.40514 0.04312 0.04175 -0.00756 0.01860 0.04166 0.04081 -0.02418 -0.02987 0.04498 -478 307 272 51663 0.37005 752 1 2 504 417 0.5343 83 0.22030 0.03104 -0.07497 0.05143 0.00186 -0.04885 -0.03008 -0.09033 -0.12131 -0.06555 -479 307 281 51663 0.28629 752 1 1 503 43 0.7515 65 0.62475 0.02514 0.02445 -0.00516 -0.07726 0.04899 -0.02083 -0.07019 -0.00630 0.04566 -480 307 286 51663 0.25715 756 1 1 688 522 0.6875 27 0.44940 0.01755 0.01742 -0.06288 0.06444 0.03594 -0.06242 0.05250 0.04507 -0.01861 -481 307 291 51663 0.34775 756 1 1 686 535 0.5737 83 0.20129 -0.13644 0.01584 0.03902 -0.12396 0.06183 0.04435 -0.29259 0.05269 -0.06286 -482 307 293 51663 0.28359 752 1 2 501 256 0.7166 65 0.53539 0.05506 -0.03104 0.00503 -0.01977 0.07134 0.02825 0.01484 0.00799 -0.02022 -483 307 297 51663 0.25568 756 1 1 688 310 0.6714 27 0.37004 0.01850 -0.04672 -0.00322 0.07708 -0.02947 -0.10045 -0.00096 0.00875 -0.03251 -484 307 300 51663 0.21595 756 1 1 688 186 0.9608 27 0.88876 0.09938 0.07253 0.04362 0.07532 -0.02923 0.01914 -0.02389 0.00532 0.02634 -485 307 303 51663 0.22210 756 1 2 686 231 0.8139 27 0.25032 -0.91110 -0.02212 -0.05367 0.07351 -0.07074 0.04367 0.04741 0.03155 -0.01140 -486 307 306 51663 0.25502 756 1 2 685 262 0.8141 27 0.60764 0.09605 -0.03808 -0.13329 0.08743 0.06078 0.01914 -0.03779 -0.00926 -0.02400 -487 307 311 51663 0.22066 752 1 3 503 270 0.8414 27 0.72890 0.09308 0.00563 0.02044 -0.00185 0.02123 -0.00581 -0.04417 0.01103 -0.00571 -488 307 315 51663 0.21985 752 1 3 499 226 0.8002 27 0.63784 -0.00287 0.01361 0.00728 0.03811 0.09511 -0.01628 0.03113 -0.07678 0.03213 -489 307 322 51663 0.33982 752 1 6 501 465 0.6052 83 0.41510 0.00417 -0.01569 0.02228 -0.01079 0.00581 0.02128 0.00588 0.01066 -0.02725 -490 307 327 51663 0.35414 752 1 6 502 418 0.5737 83 0.29831 0.02468 -0.04395 -0.07691 0.01436 0.01169 -0.01403 -0.03288 0.04902 -0.00581 -491 307 334 51663 0.48114 756 1 5 686 594 0.5492 83 0.21773 0.04017 -0.06577 -0.12533 -0.19201 0.05254 -0.10345 -0.08113 -0.04149 -0.01093 -492 307 335 51663 0.42829 756 1 5 687 7 0.5593 83 0.23460 0.00052 0.09116 0.01651 0.04470 0.04759 0.07769 0.00806 0.01267 0.08118 -493 307 339 51663 0.43302 756 1 5 688 325 0.4859 83 0.17158 0.03767 0.00605 0.09309 0.11307 0.11559 0.09155 0.01843 0.03148 0.03783 -494 307 345 51663 0.43150 756 1 4 685 476 0.4548 83 0.24142 -0.00504 0.05360 0.02068 -0.06445 0.03582 -0.04875 0.03043 0.05360 -0.02021 -495 307 364 51663 0.49037 756 1 6 688 428 0.5719 83 0.23581 0.02140 0.11992 0.03242 -0.01484 -0.01128 -0.06844 0.04460 0.09318 -0.24176 -496 307 370 51663 0.22269 756 1 6 688 139 0.9389 27 0.81962 0.09714 0.02102 -0.04291 0.01829 -0.00077 -0.00706 0.02353 -0.00543 0.01515 -497 307 372 51663 0.38249 756 1 5 690 651 0.4969 83 0.23224 0.01035 0.01666 0.04903 0.04295 0.00763 0.00351 -0.06791 -0.00988 -0.03058 -498 307 388 51663 0.21641 752 1 5 503 21 1.1450 27 1.12972 0.08237 0.05083 0.02995 0.03879 0.07467 -0.04311 -0.05352 -0.01970 0.03683 -499 307 396 51663 0.27979 752 1 4 503 236 0.8381 65 0.76129 0.05092 -0.00631 0.04104 0.00651 -0.01513 -0.00636 -0.03789 0.03238 -0.00215 -500 307 410 51663 0.34170 756 1 6 691 355 0.6047 83 0.47845 -0.09696 0.03248 -0.01951 -0.00417 0.03826 -0.03576 0.04161 -0.01400 -0.01760 -501 307 415 51663 0.40061 752 1 6 506 601 0.4701 83 0.22286 -0.04858 0.03388 -0.02220 -0.06760 -0.00354 0.00133 -0.03326 0.03161 -0.02395 -502 307 418 51663 0.41497 756 1 5 691 461 0.5010 83 0.27984 -0.01468 -0.02777 0.01743 -0.04644 -0.01071 -0.09782 0.01911 -0.04598 0.00390 -503 307 422 51663 0.33780 752 1 4 504 251 0.6878 83 0.56585 0.00654 0.04807 0.01827 0.00027 0.03828 -0.02176 -0.01254 0.01054 -0.00731 -504 307 428 51663 0.28298 756 1 4 691 705 0.6135 65 0.37071 -0.02617 -0.02292 -0.03405 0.01158 0.01205 -0.03390 -0.04694 0.03736 0.01566 -505 307 450 51663 0.25989 752 1 6 508 222 0.7801 32 0.72632 0.02098 -0.03589 -0.03310 0.01799 -0.02497 -0.00388 -0.01037 0.02970 -0.02645 -506 307 453 51663 0.31192 752 1 6 508 777 0.6892 65 0.56192 0.04406 0.00201 0.03618 -0.03786 0.03403 0.02528 0.10038 0.02978 0.01149 -507 307 454 51663 0.31228 756 1 6 693 499 0.5653 65 0.37443 -0.05081 0.03312 0.03050 -0.02451 -0.01359 0.02684 0.02285 0.01286 -0.00245 -508 307 485 51663 0.15036 756 1 5 695 109 1.5209 17 1.64760 0.09301 0.05770 -0.04596 0.02904 -0.01402 -0.04428 -0.06265 0.02600 0.02590 -509 307 503 51663 0.27986 752 1 5 511 226 0.7082 65 0.60082 0.07040 0.02332 0.06063 -0.04265 -0.02697 -0.04327 0.01760 -0.01590 0.04214 -510 307 512 51663 0.25611 756 1 4 696 442 0.6947 27 0.52517 -0.04635 -0.09019 0.01250 0.03753 -0.01850 -0.02281 0.01035 -0.01641 -0.06920 -511 307 514 51663 0.30180 752 1 4 511 271 0.7709 65 0.67583 0.03579 -0.01001 0.03397 -0.02662 0.00766 0.00655 0.02226 -0.02568 -0.01699 -512 307 524 51663 0.31492 752 1 6 510 656 0.5461 65 0.41463 -0.07387 -0.00521 0.02518 -0.00483 -0.00078 -0.04340 -0.01238 0.04380 0.01567 -513 307 526 51663 0.34288 756 1 6 695 540 0.5587 83 0.45204 0.01232 0.04894 0.01294 -0.00813 0.00726 0.01399 0.03011 0.01938 0.02008 -514 307 528 51663 0.28001 756 1 6 695 386 0.5967 65 0.39712 -0.04637 -0.04303 -0.01728 -0.01108 -0.01444 0.01013 -0.00818 -0.01222 -0.04662 -515 307 531 51663 0.34377 756 1 6 694 621 0.5746 83 0.38613 -0.42845 0.06008 -0.03451 0.08376 0.07901 -0.00693 -0.03488 -0.03432 0.04476 -516 307 533 51663 0.25962 756 1 5 695 696 0.6408 31 0.52452 -0.00745 -0.03691 -0.03327 0.00102 -0.00723 -0.04811 0.00893 0.03834 -0.01826 -517 307 540 51663 0.31294 752 1 6 510 483 0.6045 65 0.48340 -0.00041 -0.03682 -0.01745 -0.03444 0.03194 -0.00510 0.06292 0.03502 -0.02448 -518 307 552 51663 0.17966 752 1 4 511 188 1.3800 27 1.51173 0.09490 0.08845 -0.02150 0.02121 0.03530 -0.05200 -0.01436 -0.00850 0.05453 -519 307 555 51663 0.40114 756 1 3 696 776 0.4668 83 0.18834 0.00230 -0.01575 -0.05452 0.06458 0.03550 0.07907 -0.03979 -0.03821 -0.01304 -520 307 559 51663 0.34577 752 1 4 511 825 0.6007 83 0.44504 0.01081 0.03936 0.00317 0.01134 0.00484 0.00397 -0.04272 -0.03400 -0.05246 -521 307 570 51663 0.34331 756 1 6 698 563 0.4465 83 0.18968 -0.06861 0.03122 -0.06670 0.03899 0.03114 0.03463 -0.01240 -0.05180 -0.00726 -522 307 574 51663 0.25928 756 1 5 696 591 0.6513 30 0.54046 -0.00497 -0.03847 -0.01998 -0.00274 0.01250 0.00818 0.00624 0.00662 -0.02220 -523 307 583 51663 0.17089 752 1 4 515 151 1.4234 27 1.57460 0.05860 0.06217 0.01018 -0.06372 -0.03039 -0.00423 -0.05394 0.04791 0.06438 -524 307 592 51663 0.17675 756 1 4 700 218 0.9870 27 0.95316 0.12536 0.05161 0.00587 0.02467 0.04676 -0.02235 -0.01784 0.04753 -0.04353 -525 307 597 51663 0.32142 752 1 5 514 518 0.5652 65 0.38657 -0.02549 -0.01470 0.01995 -0.01011 -0.02178 -0.07210 0.01512 0.02080 0.00976 -526 307 599 51663 0.17867 756 1 4 700 214 1.0146 27 1.00449 0.08178 0.04087 -0.00361 0.03888 -0.00220 0.01627 -0.00778 0.02541 -0.01196 -527 307 606 51663 0.37337 756 1 6 699 493 0.5592 83 0.30400 -0.02190 0.08011 0.02213 -0.01310 0.00155 -0.06347 0.01400 -0.02227 -0.05464 -528 307 620 51663 0.35897 752 1 6 517 221 0.5059 83 0.22644 -0.10220 -0.01784 0.00832 0.08230 -0.01417 0.03305 0.02686 0.01617 -0.05524 -529 307 622 51663 0.30537 756 1 4 703 651 0.5512 65 0.19652 0.01046 0.03784 0.03821 -0.15947 -0.05996 -0.01478 -0.12926 0.05779 0.07430 -530 307 625 51663 0.34437 756 1 4 704 357 0.5151 83 0.31023 -0.00769 0.02383 0.09294 0.02179 0.01408 -0.00356 0.01810 -0.05500 -0.05418 -531 307 628 51663 0.29487 752 1 4 517 719 0.5897 65 0.31691 -0.03299 -0.10925 0.07166 0.02443 -0.04534 -0.03402 -0.02008 -0.06549 -0.04999 -532 307 629 51663 0.33052 752 1 4 518 51 0.5751 73 0.31237 0.03166 -0.01676 0.04724 -0.06242 -0.06620 0.09872 0.00182 0.02681 0.02452 -533 307 636 51663 0.30347 756 1 4 704 397 0.6213 65 0.31570 0.01615 -0.01596 0.00653 -0.08122 -0.07377 0.01626 -0.10795 0.00413 0.15337 -534 308 12 51662 0.32303 756 1 1 714 480 0.6379 65 0.39921 -0.07928 0.03560 -0.10671 0.00879 -0.01849 0.01234 0.01300 0.00582 0.04813 -535 308 16 51662 0.50931 756 1 1 715 341 0.5824 70 0.22122 0.00130 0.01756 -0.04172 0.17266 -0.02621 0.10861 -0.04832 -0.06632 -0.12216 -536 308 18 51662 0.21731 756 1 1 713 191 0.8288 27 0.71315 0.03996 0.00505 0.02783 0.00479 0.06053 0.03098 0.01279 0.04145 -0.02349 -537 308 26 51662 0.43525 756 1 2 715 697 0.5782 83 0.35740 0.01486 -0.11849 0.16691 -0.01583 0.06217 0.15500 -0.11338 0.00450 0.02799 -538 308 33 51662 0.31602 756 1 2 716 516 0.6154 65 0.48473 0.03950 0.02460 0.00617 -0.00402 -0.04335 -0.01339 0.06502 -0.03836 0.02030 -539 308 45 51662 0.47357 752 1 1 526 399 0.5062 83 0.22841 0.01686 0.09073 0.06980 0.02394 -0.10942 -0.02778 -0.02156 -0.27563 -0.00182 -540 308 57 51662 0.31280 752 1 2 526 537 0.6928 65 0.56713 0.00859 0.04842 -0.00618 0.06679 -0.02178 0.04175 0.05427 -0.02145 0.06383 -541 308 98 51662 0.52558 756 1 1 709 502 0.5462 66 0.24046 -0.06492 -0.08382 0.01930 0.02397 -0.04896 -0.12862 0.11056 -0.04020 0.01363 -542 308 101 51662 0.32749 756 1 2 711 637 0.5260 65 0.27432 -0.24835 0.03907 -0.03329 0.01831 0.01558 -0.01492 0.02198 -0.03277 0.06127 -543 308 103 51662 0.25136 752 1 3 527 187 0.7044 27 0.61862 0.05987 0.02647 0.05117 0.01937 0.02031 -0.03794 -0.00449 0.00497 0.01671 -544 308 108 51662 0.25179 752 1 3 526 233 0.7432 27 0.64789 -0.03464 -0.01562 0.05413 -0.03582 -0.05659 0.00796 0.00344 -0.00936 0.00318 -545 308 120 51662 0.25210 752 1 3 527 68 0.7880 27 0.74687 -0.01000 0.06630 0.03194 -0.05127 -0.03202 -0.05202 0.02117 0.01708 -0.00831 -546 308 138 51662 0.35018 756 1 1 706 621 0.5172 83 0.36264 -0.04858 -0.05151 0.00458 -0.03334 0.02881 -0.01992 0.02076 0.00526 -0.01609 -547 308 178 51662 0.17504 752 1 3 523 179 1.2252 27 1.28470 0.05627 0.07605 0.01752 0.01819 0.07274 -0.03611 -0.03275 0.06582 0.04485 -548 308 180 51662 0.21058 752 1 2 523 268 0.9027 27 0.86026 -0.04687 0.00049 0.00800 0.04279 0.01951 -0.00476 -0.00275 0.00445 -0.01684 -549 308 182 51662 0.28742 752 1 2 521 436 0.5984 65 0.44421 0.04258 -0.03013 -0.05380 -0.00430 -0.00824 -0.00442 -0.01298 0.01121 0.03468 -550 308 193 51662 0.30909 756 1 2 706 815 0.5228 65 0.36788 0.02640 0.04539 -0.00148 0.01038 0.00340 -0.03743 -0.02793 0.01083 -0.03936 -551 308 197 51662 0.34192 752 1 3 522 418 0.5272 83 0.36800 -0.00986 0.05120 0.04424 -0.03214 -0.00266 0.00971 0.02762 0.00099 0.02499 -552 308 200 51662 0.34231 756 1 2 707 338 0.5126 83 0.37220 -0.00690 0.00483 0.01475 0.02096 0.01214 -0.01854 -0.02339 -0.00138 0.02785 -553 308 201 51662 0.39243 752 1 1 520 16 0.5225 83 0.33534 0.00684 -0.01312 -0.06064 0.03900 -0.00420 -0.01329 0.00229 0.04844 0.01738 -554 308 203 51662 0.34828 752 1 1 520 363 0.4856 83 0.31757 0.04100 -0.00583 -0.02019 -0.00650 -0.00287 0.03488 -0.01060 -0.07069 0.00713 -555 308 209 51662 0.39120 752 1 1 518 778 0.4653 83 0.31260 0.02695 -0.02090 -0.01015 0.02332 -0.00210 0.04401 0.01938 -0.03570 -0.03233 -556 308 213 51662 0.39939 756 1 1 704 431 0.4517 83 0.30750 0.01958 0.01305 -0.02270 0.04878 -0.00931 0.00484 0.04938 0.00199 0.07636 -557 308 227 51662 0.30554 756 1 2 702 698 0.6124 65 0.47555 0.02945 0.04683 -0.01600 -0.01573 -0.02582 -0.02869 -0.06259 -0.00683 0.00942 -558 308 231 51662 0.26235 756 1 3 705 555 0.6497 41 0.54318 0.03632 0.01064 0.01967 0.01945 -0.02055 0.00354 0.00138 0.03293 0.01843 -559 308 232 51662 0.37583 752 1 2 517 495 0.5014 83 0.35286 0.01319 0.01086 0.01248 0.00387 0.00376 -0.03292 -0.00588 -0.00319 -0.00771 -560 308 235 51662 0.34768 752 1 3 516 883 0.4895 83 0.33561 0.00051 -0.03406 0.04064 -0.00937 0.02498 0.00891 -0.00182 0.01051 -0.00989 -561 308 237 51662 0.29156 756 1 3 705 641 0.4353 65 0.15111 -0.07312 -0.03784 -0.01185 0.01424 -0.04537 0.07242 0.00262 0.05568 0.00883 -562 308 244 51662 0.37731 752 1 1 518 534 0.5460 83 0.35922 0.01193 0.01216 -0.04394 -0.00312 -0.02695 -0.03779 0.02200 -0.02451 0.00040 -563 308 246 51662 0.44721 756 1 1 702 517 0.4240 83 0.24084 -0.07657 -0.01796 0.00164 -0.02633 0.03196 0.06490 -0.00165 0.04919 -0.02587 -564 308 252 51662 0.34431 756 1 1 703 590 0.4472 83 0.27004 -0.02659 -0.01928 -0.01238 -0.01624 0.02690 0.01133 0.01685 -0.00989 -0.04204 -565 308 254 51662 0.37400 756 1 1 703 367 0.4745 83 0.19645 0.01438 -0.01519 0.00683 0.09769 0.03200 0.01618 -0.03742 0.02326 0.10449 -566 308 285 51662 0.30602 752 1 1 516 316 0.6295 65 0.48171 -0.07812 0.00270 0.02674 -0.01903 -0.02158 -0.02368 0.00050 -0.01417 0.01020 -567 308 301 51662 0.37024 752 1 3 515 533 0.4334 83 0.19436 -0.01711 0.00271 0.00627 0.00981 0.07094 -0.03007 0.04083 -0.08107 -0.02995 -568 308 319 51662 0.40067 756 1 2 698 472 0.5565 83 0.40651 0.02287 -0.03829 -0.00402 -0.02171 -0.01020 -0.06853 0.00341 0.03919 0.01112 -569 308 323 51662 0.45615 752 1 5 514 695 0.4386 83 -0.02096 -0.02138 0.03814 -0.06028 -0.02632 0.06578 -0.09572 0.05418 0.03585 0.01506 -570 308 346 51662 0.34672 756 1 3 701 104 0.5170 83 0.40211 0.03984 0.01975 -0.01612 -0.01468 0.01127 0.01368 -0.02835 0.00061 0.01104 -571 308 352 51662 0.34505 756 1 3 700 421 0.4652 83 0.28811 0.02408 0.00353 0.02440 -0.02198 -0.04095 0.01269 0.00419 0.05628 -0.02937 -572 308 358 51662 0.36362 756 1 3 698 84 0.4851 83 0.32480 0.03275 0.01436 0.04155 0.02947 -0.01142 -0.00142 0.01662 0.05262 0.00462 -573 308 360 51662 0.44879 756 1 3 700 760 0.3970 83 0.20657 -0.03143 0.02285 -0.02065 0.00849 0.01179 0.01254 0.03140 0.00887 -0.03695 -574 308 386 51662 0.29146 756 1 4 700 398 0.6224 65 0.48666 0.04258 0.01231 0.03637 0.06981 0.03406 0.00350 -0.00305 0.00015 -0.00817 -575 308 389 51662 0.37119 756 1 3 702 768 0.5227 83 0.35607 0.02984 0.00564 -0.00735 -0.02378 0.01563 0.05401 0.01510 -0.01832 0.03257 -576 308 400 51662 0.48967 756 1 3 703 472 0.4948 83 0.22200 -0.04327 -0.05515 -0.02117 -0.05199 -0.02758 0.10036 0.04160 -0.15587 0.10531 -577 308 419 51662 0.29593 752 1 6 519 678 0.5061 65 0.29831 -0.02455 -0.01577 0.04097 0.09744 -0.00728 -0.01797 0.00319 -0.02674 0.00647 -578 308 421 51662 0.29446 752 1 4 519 916 0.5540 65 0.35114 0.01332 0.00737 0.02828 0.03846 -0.00994 -0.03985 0.02574 -0.02258 0.01788 -579 308 422 51662 0.29666 752 1 4 518 235 0.7259 65 0.64665 0.03348 0.08687 0.04564 0.10256 0.04218 0.01073 0.03245 0.01931 0.06504 -580 308 428 51662 0.16901 756 1 4 700 250 0.7282 27 0.51487 -0.02380 -0.00043 0.01956 -0.02575 -0.00434 0.06943 0.05656 -0.01269 0.00643 -581 308 461 51662 0.34311 756 1 4 706 544 0.4556 83 0.25864 -0.00045 0.02071 0.01497 0.01666 0.00646 0.01802 0.00566 -0.01028 -0.02888 -582 308 466 51662 0.34451 752 1 4 521 531 0.4470 83 0.24755 -0.00403 0.01791 -0.03124 0.04653 -0.01722 -0.00845 -0.06674 -0.03262 0.02034 -583 308 489 51662 0.42523 756 1 4 708 657 0.3948 83 0.20678 -0.07358 -0.04013 0.00756 0.00357 0.03134 0.02639 0.07246 -0.08712 -0.02399 -584 308 505 51662 0.44014 752 1 5 525 450 0.4127 83 0.23851 -0.01353 0.02549 -0.03468 -0.04473 -0.02730 -0.03453 0.03518 -0.03467 0.02797 -585 308 509 51662 0.44209 752 1 5 525 650 0.4570 83 0.30545 0.02358 0.00403 -0.00302 -0.00809 0.00893 0.00773 0.03798 -0.02016 0.04097 -586 308 515 51662 0.36040 752 1 4 526 438 0.4786 83 0.34636 0.01347 0.04940 0.02495 0.00983 -0.01507 -0.04824 -0.02567 0.01656 0.01330 -587 308 520 51662 0.44027 756 1 4 710 723 0.3976 83 0.25026 0.00578 -0.02270 0.01590 0.00951 -0.04683 -0.01856 0.02739 -0.01744 0.04156 -588 308 525 51662 0.29778 756 1 6 709 571 0.5416 65 0.47235 0.03927 0.01469 -0.03091 0.00127 0.00302 0.01216 0.02582 0.02445 0.00027 -589 308 531 51662 0.16934 756 1 6 709 224 0.8832 27 0.81149 0.00866 0.04020 -0.04957 0.00455 -0.02658 0.04501 -0.02632 0.02381 0.00928 -590 308 533 51662 0.39233 756 1 5 710 547 0.4100 83 0.27457 -0.02911 0.01505 -0.01830 0.00903 -0.00383 0.02301 -0.03119 -0.00600 0.02108 -591 308 539 51662 0.17210 752 1 6 524 214 1.0012 27 1.02923 -0.31713 0.09184 -0.00822 0.02783 0.00397 -0.01097 -0.00603 -0.00450 0.01300 -592 308 553 51662 0.17541 752 1 4 527 225 1.3215 27 1.48733 0.10663 0.03543 0.05456 -0.00581 -0.02191 -0.00187 -0.03293 0.07612 0.01003 -593 308 562 51662 0.37496 756 1 6 710 21 0.5065 83 0.34416 -0.14510 -0.03556 -0.00633 0.03260 0.02717 0.00187 -0.01454 -0.06087 0.04303 -594 308 576 51662 0.42330 752 1 6 526 538 0.4600 83 0.30692 -0.01718 -0.04440 -0.04980 -0.04395 0.13192 0.03459 0.00907 -0.10122 0.04200 -595 308 580 51662 0.45044 756 1 6 711 390 0.4462 83 0.27725 0.02355 0.02863 -0.02224 0.02557 0.00725 -0.07275 -0.04830 0.01506 0.07454 -596 308 592 51662 0.44659 752 1 5 527 510 0.4187 83 0.26735 0.03685 -0.01657 0.01926 0.01847 0.01660 -0.01945 -0.00638 -0.03892 0.00080 -597 308 602 51662 0.21172 752 1 6 527 167 0.7429 27 0.58755 0.01859 0.00214 0.01545 0.03294 -0.02396 -0.02832 -0.01944 0.01039 0.01583 -598 308 603 51662 0.42109 752 1 6 527 201 0.4522 83 0.25044 0.02333 0.05454 -0.03916 -0.01235 -0.01233 -0.00015 -0.02200 -0.00721 -0.00728 -599 308 605 51662 0.37327 752 1 6 527 779 0.4346 83 0.22183 -0.00881 -0.02880 0.01370 -0.01310 -0.02083 -0.03861 0.00622 -0.01409 -0.03410 -600 308 606 51662 0.37437 756 1 5 713 20 0.4512 83 0.26430 0.01416 -0.01762 0.02008 0.01545 -0.00866 -0.03912 -0.00727 -0.01546 -0.00160 -601 308 612 51662 0.21206 752 1 6 527 129 1.0334 27 1.05167 0.05240 -0.01847 0.01563 0.01538 0.00199 0.05631 0.02736 0.00205 -0.00815 -602 308 623 51662 0.42289 756 1 4 716 472 0.4500 83 0.21385 -0.02670 -0.04682 -0.07529 -0.15130 0.10941 0.06226 -0.10518 -0.08005 -0.06122 -603 308 626 51662 0.48402 756 1 4 715 642 0.4847 83 0.24267 0.01138 -0.06794 0.04203 0.07955 -0.06583 0.15780 -0.17438 -0.16793 0.01483 -604 308 629 51662 0.25137 752 1 4 530 386 0.5818 27 0.44295 0.01535 -0.00589 -0.06596 -0.00009 0.04731 -0.00951 -0.02449 0.01067 -0.01107 -605 308 632 51662 0.18902 752 1 4 531 170 1.2127 27 1.29964 -0.11451 -0.15731 0.08825 -0.10255 0.01436 0.07914 0.04988 -0.01545 -0.03567 -606 308 633 51662 0.36438 756 1 4 716 520 0.4884 83 0.31476 -0.07170 -0.05669 -0.03322 -0.00189 -0.12182 0.02719 -0.01905 0.05994 0.04707 -607 309 2 51666 0.36827 756 1 1 726 534 0.7215 83 0.40139 0.02715 -0.03415 -0.10970 0.01702 0.06685 -0.01803 0.05884 0.02052 -0.02254 -608 309 5 51666 0.29678 752 1 2 541 595 0.8486 65 0.55205 0.00111 0.00257 0.10635 0.03838 0.10125 -0.11571 -0.00150 -0.02415 0.02095 -609 309 19 51666 0.33484 756 1 1 726 363 0.7026 74 0.38630 0.01404 0.07100 -0.00838 -0.08195 -0.04147 -0.01780 -0.02999 -0.02328 0.03465 -610 309 22 51666 0.33569 756 1 2 729 706 0.6431 77 0.26968 -0.00259 0.06802 0.04149 -0.04816 0.02762 -0.04464 -0.01703 0.01640 -0.03258 -611 309 23 51666 0.43427 752 1 3 544 623 0.6297 83 0.23742 0.01713 0.02607 -0.11836 -0.23977 -0.08793 -0.17964 0.11569 -0.11665 -0.00374 -612 309 24 51666 0.43736 756 1 2 729 458 0.6508 83 0.19171 -0.01465 -0.11873 0.01840 0.11284 -0.22835 0.11816 -0.20531 0.19505 0.04525 -613 309 30 51666 0.43976 752 1 3 543 429 0.6316 83 0.20064 0.01443 0.04825 0.04486 0.04214 -0.03539 0.03793 0.03605 0.05797 0.00963 -614 309 33 51666 0.37655 752 1 4 543 484 0.7222 83 0.42349 0.09621 -0.07505 -0.09005 0.03441 0.04042 -0.02414 0.00767 -0.01655 -0.01420 -615 309 35 51666 0.43795 756 1 2 729 167 0.6473 83 0.20075 -0.03873 -0.15011 0.03132 -0.00222 -0.12843 0.00436 -0.15669 -0.02027 -0.02697 -616 309 38 51666 0.20134 756 1 3 728 705 0.8184 27 0.50702 -0.05836 -0.00837 0.00576 -0.04112 0.06545 0.02713 -0.04673 -0.05006 0.02733 -617 309 49 51666 0.28104 756 1 1 725 515 0.8437 65 0.63172 0.01475 -0.04969 0.02362 -0.02557 0.02218 0.01420 0.01539 0.05280 0.04347 -618 309 62 51666 0.23842 756 1 3 726 201 1.0273 27 0.82075 0.07294 0.11536 -0.05100 -0.06033 0.10456 -0.02434 -0.00960 0.00364 0.04181 -619 309 67 51666 0.46817 752 1 4 542 529 0.7106 83 0.22243 -0.01095 -0.05044 0.15064 0.00754 0.22880 0.02252 -0.09677 0.22131 -0.18799 -620 309 71 51666 0.23568 756 1 3 726 193 1.1008 27 0.93156 0.08543 -0.03197 -0.05517 0.07820 0.05782 0.13547 0.05228 0.03934 0.07837 -621 309 73 51666 0.37574 752 1 4 540 140 0.5960 83 0.30830 0.02674 0.00156 -0.01598 0.04958 0.03394 0.00961 0.02753 -0.04312 0.00012 -622 309 75 51666 0.18783 756 1 3 725 146 1.2390 27 1.03979 0.08038 -0.08929 -0.17997 -0.05541 -0.03196 0.01513 0.02528 0.02220 -0.01783 -623 309 82 51666 0.28441 756 1 1 722 322 0.6845 65 0.41520 -0.10064 -0.05472 0.03531 -0.00728 -0.02097 -0.02346 0.05696 0.00084 0.06643 -624 309 107 51666 0.37723 756 1 3 723 257 0.6677 83 0.36492 0.01509 0.02572 -0.03013 0.00613 0.01603 0.01720 0.04368 0.07028 -0.03181 -625 309 129 51666 0.31437 752 1 1 536 399 0.6767 65 0.36479 0.02742 -0.02301 0.01659 -0.01554 -0.05951 0.06127 0.06157 0.01498 0.04891 -626 309 136 51666 0.35885 752 1 2 535 150 0.5967 83 0.17427 -0.04298 -0.12395 0.10813 -0.02408 0.09744 -0.04956 -0.06454 -0.02415 0.14965 -627 309 165 51666 0.37422 752 1 3 536 811 0.6010 83 0.28800 0.04351 0.00987 0.01473 -0.06428 -0.03205 -0.00804 0.04189 -0.04095 -0.03776 -628 309 168 51666 0.37464 756 1 3 721 775 0.5935 83 0.23285 -0.02496 -0.01001 -0.05032 0.01453 0.04343 -0.04321 0.01768 -0.07592 0.02376 -629 309 176 51666 0.37831 752 1 3 536 732 0.6888 83 0.37619 -0.06031 0.11142 -0.03757 0.12141 0.04049 0.10862 0.22197 -0.14132 0.16699 -630 309 181 51666 0.28162 756 1 2 719 588 0.7969 65 0.65190 0.07984 0.10072 -0.02549 0.07438 -0.06349 -0.01122 -0.05236 -0.00593 0.06056 -631 309 183 51666 0.46854 756 1 2 719 667 0.6285 83 0.29666 0.04804 -0.04120 -0.10515 -0.01898 0.10329 -0.02383 -0.03226 0.03376 0.03320 -632 309 186 51666 0.38578 752 1 3 534 861 0.6134 83 0.29269 -0.02665 0.03656 0.03044 -0.03025 -0.05252 0.02796 0.00114 -0.01947 0.02669 -633 309 190 51666 0.42913 752 1 3 535 521 0.6457 83 0.26603 0.03280 0.12125 -0.00464 -0.03380 -0.06972 -0.01612 -0.04272 0.04174 -0.08854 -634 309 199 51666 0.23548 756 1 3 720 268 0.7956 27 0.59499 0.00651 0.09332 0.00126 0.00744 0.04158 -0.00634 -0.03610 -0.02217 0.01126 -635 309 201 51666 0.29657 752 1 1 534 326 0.6177 65 0.34004 0.00867 -0.02440 0.01946 -0.03842 -0.01563 -0.04153 -0.04381 -0.04956 -0.00819 -636 309 211 51666 0.29855 752 1 1 534 609 0.6471 65 0.42991 -0.03643 -0.06741 0.10844 0.03784 -0.04653 -0.09412 -0.03172 -0.00566 -0.01402 -637 309 213 51666 0.42207 752 1 2 533 567 0.5912 83 0.19946 -0.01609 -0.02661 0.01487 0.04702 0.07341 0.01621 0.02725 0.06253 -0.01015 -638 309 215 51666 0.21753 752 1 2 534 320 0.9782 27 0.87113 0.04139 0.01385 0.05984 -0.02810 0.00680 0.05511 0.07087 0.03459 -0.00468 -639 309 216 51666 0.37759 756 1 1 719 567 0.7711 83 0.38376 -0.07491 0.43596 0.39055 -0.17613 0.07924 0.09594 0.05953 0.01201 -0.12920 -640 309 227 51666 0.31397 756 1 3 718 526 0.6823 65 0.39622 -0.10051 0.03711 0.02984 -0.03679 0.04356 0.02710 0.07850 0.04104 0.00822 -641 309 238 51666 0.21777 752 1 4 533 269 1.2167 27 1.19448 -0.05581 -0.07564 0.07697 -0.04051 0.08282 0.04846 0.09184 -0.00385 -0.09513 -642 309 244 51666 0.31462 752 1 2 532 509 0.6492 65 0.35314 0.01590 0.01882 0.00380 0.02004 -0.02063 0.05531 0.01278 0.02400 -0.01755 -643 309 245 51666 0.42970 756 1 1 717 79 0.5774 83 0.28069 0.01481 -0.01642 0.04666 0.05957 0.00923 -0.02379 -0.00448 -0.00748 0.02864 -644 309 246 51666 0.27679 752 1 2 531 323 0.7559 65 0.56723 0.01066 0.03084 0.03177 0.02821 0.00820 -0.00649 -0.02702 -0.06315 0.07574 -645 309 247 51666 0.31367 756 1 1 716 635 0.7095 65 0.44684 0.02721 -0.01929 -0.05355 0.02804 0.02037 -0.00970 -0.05968 0.02876 -0.01052 -646 309 261 51666 0.43522 756 1 3 718 368 0.6310 83 0.20169 -0.01636 0.13464 -0.16672 -0.09652 0.09533 -0.05038 0.17886 0.05325 0.01873 -647 309 269 51666 0.31512 756 1 2 717 504 0.7047 65 0.39091 0.04257 0.02782 -0.00170 -0.04574 -0.03927 -0.06283 -0.00583 0.05861 0.05778 -648 309 285 51666 0.31434 756 1 1 716 581 0.6518 65 0.43495 0.02391 -0.02770 -0.01124 -0.09672 0.02225 0.03097 0.05920 0.01544 0.06397 -649 309 288 51666 0.28635 752 1 1 531 410 0.7284 65 0.52297 -0.05025 -0.04093 0.01964 -0.03457 0.01384 0.03365 -0.00415 -0.05217 -0.01594 -650 309 292 51666 0.36777 752 1 2 530 710 0.5841 83 0.21175 0.02827 -0.03206 0.03079 -0.05602 -0.02022 -0.12377 -0.03501 -0.08682 -0.07922 -651 309 293 51666 0.26362 752 1 2 531 305 0.7592 45 0.59164 0.03424 -0.02846 0.01742 0.00812 -0.01583 0.02538 0.01464 0.03542 -0.03971 -652 309 296 51666 0.31529 756 1 2 716 441 0.6136 65 0.39745 -0.00870 0.04044 0.03546 -0.02262 -0.00863 0.03880 -0.01206 0.02655 0.00895 -653 309 305 51666 0.25242 752 1 3 527 68 0.8466 27 0.69933 0.02205 -0.02735 0.08146 0.01892 -0.01087 -0.06938 -0.00325 0.04168 -0.00911 -654 309 322 51666 0.21137 752 1 6 527 168 0.7284 27 0.37345 0.03794 -0.02818 0.01185 0.00872 0.01719 -0.04417 -0.09569 0.01944 0.01891 -655 309 327 51666 0.39098 756 1 6 714 761 0.6087 83 0.39049 0.02631 -0.01584 -0.08322 0.00415 0.02281 -0.05926 -0.07617 0.03449 0.01516 -656 309 329 51666 0.39166 752 1 6 529 683 0.5479 83 0.26467 -0.17642 0.01012 -0.10548 -0.00160 -0.03524 -0.01869 -0.06229 0.07112 0.04275 -657 309 331 51666 0.37361 752 1 6 527 779 0.6049 83 0.25848 0.02745 0.08674 -0.05816 -0.02319 -0.03686 -0.01255 0.03476 0.05636 0.04432 -658 309 332 51666 0.42138 752 1 6 528 59 0.5543 83 0.27600 -0.02560 -0.07189 -0.05272 -0.08476 0.06707 -0.01275 0.03511 -0.01486 0.00097 -659 309 348 51666 0.17480 756 1 5 712 42 1.3677 27 1.24385 -0.20047 0.18457 -0.10992 0.01781 0.00570 -0.05258 -0.17396 -0.03411 0.10810 -660 309 364 51666 0.33721 752 1 6 530 505 0.5721 82 0.32740 0.02310 -0.01438 0.02534 -0.02597 -0.01741 -0.02317 0.02322 0.06434 0.00251 -661 309 365 51666 0.37331 756 1 6 716 618 0.6477 83 0.32458 0.01499 -0.03721 -0.01467 0.05351 0.11958 -0.01661 -0.06176 0.00276 0.09745 -662 309 366 51666 0.37594 756 1 6 716 188 0.5582 83 0.32317 0.00905 -0.08488 -0.03624 0.03677 0.05919 0.02533 -0.03110 -0.02729 -0.03632 -663 309 368 51666 0.38583 756 1 5 717 461 0.5375 83 0.27189 -0.02536 -0.07801 0.01676 -0.02032 0.03987 -0.00259 -0.01415 0.00181 -0.01891 -664 309 369 51666 0.48341 756 1 6 716 576 0.5381 83 -0.01183 -0.08056 0.06454 0.05513 -0.12076 -0.02539 -0.11192 -0.00722 0.02087 0.12082 -665 309 387 51666 0.31944 756 1 4 717 23 0.5879 65 0.29626 0.00468 0.00027 0.01296 -0.01676 0.02059 -0.06538 0.01072 0.00389 -0.00165 -666 309 388 51666 0.47954 756 1 5 716 713 0.5897 83 0.20696 0.01939 -0.05816 -0.03813 0.00233 -0.06820 0.03154 -0.01392 0.01162 -0.20522 -667 309 403 51666 0.31553 752 1 6 533 165 0.7668 65 0.61020 0.06870 0.06962 0.02738 -0.00659 0.02160 -0.01452 0.00609 0.04803 0.02440 -668 309 412 51666 0.37714 756 1 5 718 493 0.4917 83 0.20122 0.00895 -0.00561 0.01455 0.04161 -0.01236 -0.02215 -0.01734 -0.04592 -0.08716 -669 309 414 51666 0.37665 752 1 6 532 648 0.5235 83 0.23956 -0.02729 -0.01441 -0.06747 -0.06273 -0.08008 0.00036 0.07255 -0.01787 0.03671 -670 309 426 51666 0.24841 752 1 4 534 277 0.9498 27 0.83355 0.03632 0.06966 0.02248 -0.06180 0.02764 0.00925 -0.04977 -0.03003 0.03768 -671 309 440 51666 0.31421 756 1 4 718 462 0.5972 65 0.30299 -0.01098 0.01250 -0.00959 -0.02790 0.01872 0.07162 0.08934 0.06370 0.02553 -672 309 448 51666 0.24686 756 1 6 719 572 0.7258 27 0.39515 -0.15052 -0.00675 -0.03640 0.06067 -0.00995 0.01566 -0.06148 0.00713 0.08670 -673 309 466 51666 0.32033 756 1 4 720 424 0.6891 65 0.52395 0.02525 0.01119 -0.05785 0.02453 0.00964 -0.02227 -0.02017 0.02884 -0.00214 -674 309 471 51666 0.44209 752 1 5 534 712 0.4882 83 0.21945 0.01621 0.03216 -0.01390 -0.02131 0.12357 0.04337 -0.02285 -0.02226 0.01691 -675 309 472 51666 0.25965 756 1 4 720 235 0.8293 31 0.73325 0.05991 -0.02792 0.04877 -0.03171 -0.01821 -0.07368 0.02581 -0.04285 -0.04297 -676 309 477 51666 0.42493 752 1 5 534 801 0.5565 83 0.22012 -0.02346 0.05715 -0.01654 -0.05678 0.05499 0.03340 0.01524 0.01294 -0.00090 -677 309 493 51666 0.49921 752 1 4 536 402 0.5193 83 0.26146 0.03219 0.05054 -0.02680 0.06333 0.08357 -0.19803 -0.10778 0.00831 -0.15512 -678 309 521 51666 0.27748 756 1 6 721 278 0.7341 65 0.47141 0.01105 0.03319 0.02961 0.03476 0.01778 -0.03971 -0.02560 0.01246 0.10503 -679 309 524 51666 0.23478 752 1 6 536 270 0.8917 27 0.75462 0.08679 -0.01779 -0.00780 0.02649 0.05434 -0.01388 0.02760 -0.04765 0.06289 -680 309 532 51666 0.31550 752 1 6 536 489 0.6524 65 0.47480 0.04195 0.01626 0.03114 0.00417 -0.00869 0.04493 0.01051 -0.03144 -0.00432 -681 309 533 51666 0.31930 752 1 6 535 586 0.6195 65 0.42027 0.03855 0.02049 0.00481 0.00227 -0.00688 -0.04115 0.07495 0.05284 0.02857 -682 309 541 51666 0.48509 756 1 5 724 593 0.5942 83 0.23743 -0.00070 -0.00683 0.06328 -0.06679 -0.03654 -0.01372 -0.06077 0.01099 0.03600 -683 309 543 51666 0.23830 752 1 4 539 277 0.9987 27 0.82304 -0.02379 0.27181 0.24003 -0.13007 0.06383 -0.02630 0.07719 -0.05133 0.07563 -684 309 556 51666 0.43998 756 1 4 725 278 0.5229 83 0.21245 -0.04910 -0.07235 0.07377 -0.01424 0.04323 -0.01887 -0.02024 0.01204 0.00131 -685 309 565 51666 0.43840 756 1 6 724 424 0.4726 83 0.18162 -0.02482 -0.00978 -0.01702 0.00552 0.12676 -0.05278 -0.05045 -0.04379 0.08300 -686 309 589 51666 0.16518 756 1 5 727 254 1.2241 23 1.24695 -0.16738 -0.02406 -0.08674 -0.00689 -0.03697 0.02308 0.03191 0.01682 0.03390 -687 309 597 51666 0.30505 752 1 5 541 592 0.6672 65 0.46752 0.01596 0.01956 -0.04981 0.03312 -0.02892 -0.05953 -0.05533 -0.03485 -0.03011 -688 309 598 51666 0.44045 756 1 5 727 471 0.6352 83 0.38767 0.00375 0.03236 -0.02950 -0.09356 -0.01166 -0.00719 0.03017 -0.07654 -0.04087 -689 309 605 51666 0.27044 756 1 6 726 519 0.8040 65 0.58629 -0.00226 0.05415 0.04555 -0.00631 -0.05673 -0.01228 -0.01976 0.05915 0.00734 -690 309 610 51666 0.40250 756 1 5 728 503 0.5640 83 0.23586 0.05647 -0.05141 0.02032 0.06723 -0.06604 0.02124 -0.00699 0.01992 0.01858 -691 309 624 51666 0.37638 752 1 4 543 423 0.5789 83 0.28450 0.01026 0.01815 -0.13357 -0.08053 -0.02819 0.03498 0.00030 -0.07213 -0.02203 -692 309 635 51666 0.37359 756 1 4 727 538 0.6848 83 0.36425 0.00446 -0.04040 -0.01252 0.00667 0.00792 -0.01942 0.16483 -0.11298 -0.25234 -693 309 637 51666 0.23440 752 1 4 542 283 1.0851 27 0.77581 -0.06174 -0.12183 -0.22405 -0.09528 -0.09767 -0.03593 -0.11043 0.10908 0.24256 diff --git a/misc/crontab-eboss b/misc/crontab-eboss deleted file mode 100644 index f0fe3ac1e..000000000 --- a/misc/crontab-eboss +++ /dev/null @@ -1,18 +0,0 @@ -#- The crontab file for eboss@sdss4-eboss.apo.nmsu.edu as of 2014-11-20 - -#- Who gets error report -### MAILTO=StephenBailey@lbl.gov,root@apo.nmsu.edu,jonathan.richards@utah.edu -MAILTO=StephenBailey@lbl.gov,vivekm@astro.utah.edu - -#- Rerank plugging priorities in platedb -33 21 * * * /home/eboss/bin/wrap_rerankPluggingPriority > /home/eboss/sos/logs/rerank.log - -#- Occasionally necessary to move Collimate files out of home -0 18 * * * find . -maxdepth 1 -name /home/eboss/Collimate-\* -exec mv {} /home/eboss/collimate/ \; - -#- Create guidermon .par files for each night's observing. -### 0 14 * * * /home/sdss4/products/Linux64/idlspec2d/trunk/bin/guidermon_checkin.sh >> /home/eboss/sos/logs/guidermon_checkin.log - -#- Auto obs report -30 13 * * * /home/eboss/bin/wrap_auto_obs.sh - diff --git a/misc/distort.blue b/misc/distort.blue deleted file mode 100644 index 62deb85fb..000000000 --- a/misc/distort.blue +++ /dev/null @@ -1,447 +0,0 @@ -# SDSS Spectrograph Distortions from Alan Umoto -# -# Blue Spectrograph -# -# Fiber Wave X Y - 0 3700 0.000 -1123.594 - 0 3800 0.000 -1020.730 - 0 3900 0.000 -920.357 - 0 4000 0.000 -822.193 - 0 4100 0.000 -726.005 - 0 4200 0.000 -631.595 - 0 4300 0.000 -538.795 - 0 4400 0.000 -447.455 - 0 4500 0.000 -357.446 - 0 4600 0.000 -268.650 - 0 4700 0.000 -180.963 - 0 4800 0.000 -94.289 - 0 4900 0.000 -8.542 - 0 5000 0.000 76.358 - 0 5100 0.000 160.482 - 0 5200 0.000 243.898 - 0 5300 0.000 326.668 - 0 5400 0.000 408.847 - 0 5500 0.000 490.490 - 0 5600 0.000 571.644 - 0 5700 0.000 652.355 - 0 5800 0.000 732.665 - 0 5900 0.000 812.613 - 0 6000 0.000 892.236 - 0 6100 0.000 971.567 - 0 6200 0.000 1050.640 - 10 3700 -61.081 -1123.684 - 10 3800 -60.983 -1020.816 - 10 3900 -60.900 -920.439 - 10 4000 -60.829 -822.271 - 10 4100 -60.769 -726.079 - 10 4200 -60.719 -631.666 - 10 4300 -60.678 -538.862 - 10 4400 -60.646 -447.519 - 10 4500 -60.622 -357.507 - 10 4600 -60.607 -268.708 - 10 4700 -60.599 -181.017 - 10 4800 -60.599 -94.340 - 10 4900 -60.606 -8.590 - 10 5000 -60.620 76.313 - 10 5100 -60.641 160.440 - 10 5200 -60.669 243.859 - 10 5300 -60.703 326.632 - 10 5400 -60.744 408.814 - 10 5500 -60.790 490.459 - 10 5600 -60.843 571.616 - 10 5700 -60.901 652.329 - 10 5800 -60.965 732.642 - 10 5900 -61.035 812.592 - 10 6000 -61.109 892.217 - 10 6100 -61.189 971.551 - 10 6200 -61.274 1050.626 - 20 3700 -122.174 -1123.955 - 20 3800 -121.978 -1021.074 - 20 3900 -121.812 -920.685 - 20 4000 -121.669 -822.506 - 20 4100 -121.549 -726.303 - 20 4200 -121.449 -631.879 - 20 4300 -121.368 -539.065 - 20 4400 -121.304 -447.711 - 20 4500 -121.257 -357.689 - 20 4600 -121.225 -268.880 - 20 4700 -121.210 -181.180 - 20 4800 -121.209 -94.493 - 20 4900 -121.223 -8.733 - 20 5000 -121.252 76.178 - 20 5100 -121.294 160.314 - 20 5200 -121.349 243.742 - 20 5300 -121.418 326.523 - 20 5400 -121.499 408.714 - 20 5500 -121.592 490.367 - 20 5600 -121.697 571.532 - 20 5700 -121.814 652.253 - 20 5800 -121.942 732.572 - 20 5900 -122.080 812.530 - 20 6000 -122.230 892.162 - 20 6100 -122.389 971.503 - 20 6200 -122.558 1050.584 - 30 3700 -183.290 -1124.405 - 30 3800 -182.997 -1021.505 - 30 3900 -182.746 -921.096 - 30 4000 -182.533 -822.898 - 30 4100 -182.353 -726.676 - 30 4200 -182.203 -632.235 - 30 4300 -182.081 -539.402 - 30 4400 -181.985 -448.032 - 30 4500 -181.914 -357.992 - 30 4600 -181.867 -269.167 - 30 4700 -181.844 -181.451 - 30 4800 -181.843 -94.748 - 30 4900 -181.864 -8.973 - 30 5000 -181.907 75.954 - 30 5100 -181.969 160.105 - 30 5200 -182.052 243.547 - 30 5300 -182.155 326.342 - 30 5400 -182.276 408.546 - 30 5500 -182.416 490.213 - 30 5600 -182.574 571.391 - 30 5700 -182.749 652.125 - 30 5800 -182.940 732.457 - 30 5900 -183.148 812.426 - 30 6000 -183.372 892.070 - 30 6100 -183.611 971.422 - 30 6200 -183.865 1050.515 - 40 3700 -244.441 -1125.036 - 40 3800 -244.050 -1022.107 - 40 3900 -243.717 -921.671 - 40 4000 -243.432 -823.446 - 40 4100 -243.192 -727.199 - 40 4200 -242.992 -632.732 - 40 4300 -242.829 -539.875 - 40 4400 -242.701 -448.481 - 40 4500 -242.607 -358.418 - 40 4600 -242.544 -269.569 - 40 4700 -242.513 -181.830 - 40 4800 -242.512 -95.105 - 40 4900 -242.540 -9.309 - 40 5000 -242.596 75.639 - 40 5100 -242.680 159.811 - 40 5200 -242.790 243.273 - 40 5300 -242.927 326.088 - 40 5400 -243.088 408.312 - 40 5500 -243.274 489.997 - 40 5600 -243.484 571.193 - 40 5700 -243.717 651.945 - 40 5800 -243.972 732.294 - 40 5900 -244.249 812.281 - 40 6000 -244.547 891.941 - 40 6100 -244.866 971.309 - 40 6200 -245.204 1050.418 - 50 3700 -305.639 -1125.848 - 50 3800 -305.150 -1022.882 - 50 3900 -304.733 -922.411 - 50 4000 -304.378 -824.152 - 50 4100 -304.078 -727.871 - 50 4200 -303.827 -633.372 - 50 4300 -303.624 -540.483 - 50 4400 -303.464 -449.058 - 50 4500 -303.346 -358.965 - 50 4600 -303.268 -270.086 - 50 4700 -303.229 -182.318 - 50 4800 -303.227 -95.565 - 50 4900 -303.262 -9.741 - 50 5000 -303.332 75.235 - 50 5100 -303.436 159.433 - 50 5200 -303.574 242.921 - 50 5300 -303.744 325.761 - 50 5400 -303.946 408.010 - 50 5500 -304.178 489.719 - 50 5600 -304.440 570.939 - 50 5700 -304.731 651.713 - 50 5800 -305.049 732.085 - 50 5900 -305.395 812.093 - 50 6000 -305.767 891.775 - 50 6100 -306.164 971.163 - 50 6200 -306.587 1050.292 - 60 3700 -366.896 -1126.840 - 60 3800 -366.309 -1023.829 - 60 3900 -365.808 -923.315 - 60 4000 -365.382 -825.014 - 60 4100 -365.022 -728.693 - 60 4200 -364.721 -634.154 - 60 4300 -364.477 -541.227 - 60 4400 -364.285 -449.764 - 60 4500 -364.143 -359.634 - 60 4600 -364.050 -270.719 - 60 4700 -364.002 -182.916 - 60 4800 -364.000 -96.128 - 60 4900 -364.041 -10.269 - 60 5000 -364.125 74.739 - 60 5100 -364.250 158.970 - 60 5200 -364.415 242.490 - 60 5300 -364.619 325.361 - 60 5400 -364.860 407.640 - 60 5500 -365.138 489.379 - 60 5600 -365.452 570.627 - 60 5700 -365.800 651.430 - 60 5800 -366.181 731.829 - 60 5900 -366.596 811.863 - 60 6000 -367.041 891.570 - 60 6100 -367.518 970.984 - 60 6200 -368.024 1050.138 - 70 3700 -428.222 -1128.013 - 70 3800 -427.537 -1024.949 - 70 3900 -426.953 -924.384 - 70 4000 -426.456 -826.034 - 70 4100 -426.035 -729.665 - 70 4200 -425.685 -635.079 - 70 4300 -425.400 -542.107 - 70 4400 -425.176 -450.599 - 70 4500 -425.010 -360.425 - 70 4600 -424.901 -271.467 - 70 4700 -424.846 -183.622 - 70 4800 -424.843 -96.793 - 70 4900 -424.890 -10.894 - 70 5000 -424.988 74.153 - 70 5100 -425.133 158.423 - 70 5200 -425.324 241.980 - 70 5300 -425.561 324.888 - 70 5400 -425.842 407.202 - 70 5500 -426.166 488.976 - 70 5600 -426.531 570.258 - 70 5700 -426.936 651.093 - 70 5800 -427.380 731.524 - 70 5900 -427.863 811.590 - 70 6000 -428.382 891.328 - 70 6100 -428.937 970.772 - 70 6200 -429.527 1049.954 - 80 3700 -489.631 -1129.368 - 80 3800 -488.847 -1026.242 - 80 3900 -488.179 -925.618 - 80 4000 -487.611 -827.211 - 80 4100 -487.130 -730.787 - 80 4200 -486.730 -636.147 - 80 4300 -486.404 -543.122 - 80 4400 -486.148 -451.563 - 80 4500 -485.959 -361.338 - 80 4600 -485.833 -272.332 - 80 4700 -485.770 -184.438 - 80 4800 -485.766 -97.562 - 80 4900 -485.820 -11.617 - 80 5000 -485.930 73.476 - 80 5100 -486.095 157.789 - 80 5200 -486.314 241.390 - 80 5300 -486.583 324.340 - 80 5400 -486.903 406.695 - 80 5500 -487.272 488.509 - 80 5600 -487.688 569.830 - 80 5700 -488.150 650.703 - 80 5800 -488.657 731.172 - 80 5900 -489.207 811.274 - 80 6000 -489.799 891.047 - 80 6100 -490.432 970.525 - 80 6200 -491.105 1049.741 - 90 3700 -551.132 -1130.904 - 90 3800 -550.250 -1027.708 - 90 3900 -549.498 -927.017 - 90 4000 -548.859 -828.546 - 90 4100 -548.318 -732.059 - 90 4200 -547.867 -637.359 - 90 4300 -547.500 -544.274 - 90 4400 -547.212 -452.656 - 90 4500 -546.999 -362.375 - 90 4600 -546.858 -273.313 - 90 4700 -546.786 -185.364 - 90 4800 -546.781 -98.435 - 90 4900 -546.841 -12.437 - 90 5000 -546.964 72.707 - 90 5100 -547.149 157.070 - 90 5200 -547.394 240.720 - 90 5300 -547.696 323.717 - 90 5400 -548.055 406.119 - 90 5500 -548.468 487.978 - 90 5600 -548.935 569.343 - 90 5700 -549.453 650.260 - 90 5800 -550.022 730.770 - 90 5900 -550.639 810.913 - 90 6000 -551.303 890.726 - 90 6100 -552.014 970.244 - 90 6200 -552.771 1049.498 - 100 3700 -612.738 -1132.622 - 100 3800 -611.757 -1029.349 - 100 3900 -610.922 -928.583 - 100 4000 -610.210 -830.039 - 100 4100 -609.609 -733.482 - 100 4200 -609.109 -638.714 - 100 4300 -608.701 -545.562 - 100 4400 -608.381 -453.880 - 100 4500 -608.143 -363.535 - 100 4600 -607.986 -274.410 - 100 4700 -607.905 -186.401 - 100 4800 -607.899 -99.411 - 100 4900 -607.965 -13.356 - 100 5000 -608.101 71.845 - 100 5100 -608.305 156.265 - 100 5200 -608.575 239.969 - 100 5300 -608.910 323.019 - 100 5400 -609.307 405.473 - 100 5500 -609.765 487.383 - 100 5600 -610.282 568.797 - 100 5700 -610.856 649.762 - 100 5800 -611.486 730.319 - 100 5900 -612.170 810.508 - 100 6000 -612.906 890.366 - 100 6100 -613.695 969.927 - 100 6200 -614.533 1049.224 - 110 3700 -674.461 -1134.524 - 110 3800 -673.380 -1031.163 - 110 3900 -672.460 -930.314 - 110 4000 -671.677 -831.691 - 110 4100 -671.016 -735.057 - 110 4200 -670.465 -640.213 - 110 4300 -670.016 -546.988 - 110 4400 -669.664 -455.234 - 110 4500 -669.402 -364.818 - 110 4600 -669.228 -275.625 - 110 4700 -669.139 -187.548 - 110 4800 -669.131 -100.493 - 110 4900 -669.203 -14.373 - 110 5000 -669.351 70.891 - 110 5100 -669.574 155.372 - 110 5200 -669.870 239.136 - 110 5300 -670.236 322.246 - 110 5400 -670.671 404.757 - 110 5500 -671.173 486.722 - 110 5600 -671.739 568.191 - 110 5700 -672.369 649.209 - 110 5800 -673.060 729.818 - 110 5900 -673.810 810.057 - 110 6000 -674.618 889.964 - 110 6100 -675.483 969.574 - 110 6200 -676.404 1048.919 - 120 3700 -736.311 -1136.609 - 120 3800 -735.131 -1033.153 - 120 3900 -734.126 -932.213 - 120 4000 -733.271 -833.502 - 120 4100 -732.549 -736.783 - 120 4200 -731.948 -641.856 - 120 4300 -731.458 -548.551 - 120 4400 -731.073 -456.718 - 120 4500 -730.787 -366.226 - 120 4600 -730.597 -276.957 - 120 4700 -730.498 -188.807 - 120 4800 -730.489 -101.680 - 120 4900 -730.565 -15.490 - 120 5000 -730.726 69.843 - 120 5100 -730.968 154.391 - 120 5200 -731.288 238.222 - 120 5300 -731.686 321.395 - 120 5400 -732.158 403.969 - 120 5500 -732.703 485.995 - 120 5600 -733.319 567.524 - 120 5700 -734.003 648.600 - 120 5800 -734.754 729.266 - 120 5900 -735.570 809.560 - 120 6000 -736.449 889.522 - 120 6100 -737.391 969.184 - 120 6200 -738.394 1048.582 - 130 3700 -798.301 -1138.878 - 130 3800 -797.020 -1035.318 - 130 3900 -795.929 -934.279 - 130 4000 -795.002 -835.472 - 130 4100 -794.220 -738.661 - 130 4200 -793.568 -643.645 - 130 4300 -793.036 -550.252 - 130 4400 -792.618 -458.334 - 130 4500 -792.308 -367.759 - 130 4600 -792.101 -278.408 - 130 4700 -791.993 -190.178 - 130 4800 -791.982 -102.973 - 130 4900 -792.063 -16.706 - 130 5000 -792.236 68.701 - 130 5100 -792.495 153.322 - 130 5200 -792.841 237.224 - 130 5300 -793.269 320.467 - 130 5400 -793.778 403.109 - 130 5500 -794.366 485.202 - 130 5600 -795.030 566.795 - 130 5700 -795.769 647.934 - 130 5800 -796.580 728.661 - 130 5900 -797.461 809.016 - 130 6000 -798.411 889.037 - 130 6100 -799.429 968.757 - 130 6200 -800.512 1048.212 - 140 3700 -860.442 -1141.332 - 140 3800 -859.059 -1037.660 - 140 3900 -857.882 -936.513 - 140 4000 -856.883 -837.603 - 140 4100 -856.039 -740.692 - 140 4200 -855.336 -645.579 - 140 4300 -854.763 -552.092 - 140 4400 -854.312 -460.082 - 140 4500 -853.977 -369.417 - 140 4600 -853.753 -279.978 - 140 4700 -853.636 -191.662 - 140 4800 -853.622 -104.373 - 140 4900 -853.708 -18.024 - 140 5000 -853.891 67.464 - 140 5100 -854.169 152.164 - 140 5200 -854.538 236.142 - 140 5300 -854.997 319.460 - 140 5400 -855.542 402.175 - 140 5500 -856.172 484.340 - 140 5600 -856.885 566.003 - 140 5700 -857.677 647.210 - 140 5800 -858.547 728.004 - 140 5900 -859.493 808.424 - 140 6000 -860.513 888.509 - 140 6100 -861.607 968.292 - 140 6200 -862.772 1047.808 - 150 3700 -922.745 -1143.973 - 150 3800 -921.259 -1040.179 - 150 3900 -919.996 -938.916 - 150 4000 -918.923 -839.895 - 150 4100 -918.017 -742.877 - 150 4200 -917.263 -647.660 - 150 4300 -916.648 -554.072 - 150 4400 -916.164 -461.963 - 150 4500 -915.804 -371.201 - 150 4600 -915.562 -281.668 - 150 4700 -915.435 -193.260 - 150 4800 -915.418 -105.881 - 150 4900 -915.509 -19.443 - 150 5000 -915.703 66.131 - 150 5100 -915.998 150.915 - 150 5200 -916.391 234.976 - 150 5300 -916.879 318.375 - 150 5400 -917.461 401.168 - 150 5500 -918.132 483.409 - 150 5600 -918.892 565.148 - 150 5700 -919.737 646.428 - 150 5800 -920.666 727.293 - 150 5900 -921.677 807.784 - 150 6000 -922.767 887.937 - 150 6100 -923.936 967.788 - 150 6200 -925.181 1047.370 - 160 3700 -985.224 -1146.803 - 160 3800 -983.633 -1042.877 - 160 3900 -982.282 -941.490 - 160 4000 -981.134 -842.349 - 160 4100 -980.166 -745.216 - 160 4200 -979.360 -649.888 - 160 4300 -978.703 -556.191 - 160 4400 -978.185 -463.977 - 160 4500 -977.799 -373.112 - 160 4600 -977.540 -283.479 - 160 4700 -977.403 -194.972 - 160 4800 -977.383 -107.496 - 160 4900 -977.477 -20.965 - 160 5000 -977.681 64.702 - 160 5100 -977.993 149.576 - 160 5200 -978.409 233.724 - 160 5300 -978.927 317.209 - 160 5400 -979.544 400.086 - 160 5500 -980.257 482.409 - 160 5600 -981.063 564.227 - 160 5700 -981.961 645.586 - 160 5800 -982.948 726.528 - 160 5900 -984.023 807.093 - 160 6000 -985.183 887.320 - 160 6100 -986.426 967.243 - 160 6200 -987.753 1046.898 diff --git a/misc/distort.red b/misc/distort.red deleted file mode 100644 index 19637e99d..000000000 --- a/misc/distort.red +++ /dev/null @@ -1,634 +0,0 @@ -# SDSS Spectrograph Distortions from Alan Umoto -# -# Red Spectrograph -# -# Fiber Wave X Y - 0 5700 0.000 -1071.529 - 0 5800 0.000 -1003.339 - 0 5900 0.000 -936.001 - 0 6000 0.000 -869.467 - 0 6100 0.000 -803.692 - 0 6200 0.000 -738.636 - 0 6300 0.000 -674.258 - 0 6400 0.000 -610.520 - 0 6500 0.000 -547.390 - 0 6600 0.000 -484.831 - 0 6700 0.000 -422.815 - 0 6800 0.000 -361.310 - 0 6900 0.000 -300.287 - 0 7000 0.000 -239.721 - 0 7100 0.000 -179.584 - 0 7200 0.000 -119.852 - 0 7300 0.000 -60.501 - 0 7400 0.000 -1.508 - 0 7500 0.000 57.148 - 0 7600 0.000 115.488 - 0 7700 0.000 173.532 - 0 7800 0.000 231.300 - 0 7900 0.000 288.809 - 0 8000 0.000 346.077 - 0 8100 0.000 403.122 - 0 8200 0.000 459.958 - 0 8300 0.000 516.603 - 0 8400 0.000 573.070 - 0 8500 0.000 629.375 - 0 8600 0.000 685.530 - 0 8700 0.000 741.549 - 0 8800 0.000 797.444 - 0 8900 0.000 853.229 - 0 9000 0.000 908.914 - 0 9100 0.000 964.511 - 0 9200 0.000 1020.032 - 0 9300 0.000 1075.485 - 10 5700 -61.210 -1071.629 - 10 5800 -61.130 -1003.436 - 10 5900 -61.056 -936.095 - 10 6000 -60.988 -869.558 - 10 6100 -60.925 -803.780 - 10 6200 -60.868 -738.721 - 10 6300 -60.816 -674.340 - 10 6400 -60.769 -610.599 - 10 6500 -60.728 -547.466 - 10 6600 -60.692 -484.905 - 10 6700 -60.660 -422.885 - 10 6800 -60.634 -361.377 - 10 6900 -60.613 -300.352 - 10 7000 -60.596 -239.783 - 10 7100 -60.584 -179.643 - 10 7200 -60.576 -119.908 - 10 7300 -60.573 -60.555 - 10 7400 -60.575 -1.560 - 10 7500 -60.581 57.099 - 10 7600 -60.591 115.442 - 10 7700 -60.606 173.488 - 10 7800 -60.624 231.258 - 10 7900 -60.647 288.770 - 10 8000 -60.674 346.041 - 10 8100 -60.704 403.087 - 10 8200 -60.739 459.927 - 10 8300 -60.777 516.573 - 10 8400 -60.819 573.043 - 10 8500 -60.865 629.349 - 10 8600 -60.914 685.507 - 10 8700 -60.967 741.528 - 10 8800 -61.023 797.426 - 10 8900 -61.083 853.212 - 10 9000 -61.146 908.899 - 10 9100 -61.212 964.499 - 10 9200 -61.282 1020.021 - 10 9300 -61.355 1075.477 - 20 5700 -122.434 -1071.931 - 20 5800 -122.274 -1003.728 - 20 5900 -122.126 -936.377 - 20 6000 -121.990 -869.831 - 20 6100 -121.864 -804.044 - 20 6200 -121.750 -738.976 - 20 6300 -121.646 -674.585 - 20 6400 -121.553 -610.836 - 20 6500 -121.470 -547.694 - 20 6600 -121.398 -485.124 - 20 6700 -121.335 -423.096 - 20 6800 -121.283 -361.580 - 20 6900 -121.240 -300.546 - 20 7000 -121.206 -239.969 - 20 7100 -121.182 -179.821 - 20 7200 -121.167 -120.078 - 20 7300 -121.161 -60.717 - 20 7400 -121.164 -1.714 - 20 7500 -121.176 56.952 - 20 7600 -121.197 115.303 - 20 7700 -121.225 173.357 - 20 7800 -121.263 231.134 - 20 7900 -121.308 288.653 - 20 8000 -121.362 345.931 - 20 8100 -121.423 402.985 - 20 8200 -121.492 459.831 - 20 8300 -121.569 516.485 - 20 8400 -121.653 572.961 - 20 8500 -121.744 629.274 - 20 8600 -121.843 685.438 - 20 8700 -121.948 741.465 - 20 8800 -122.061 797.369 - 20 8900 -122.180 853.162 - 20 9000 -122.306 908.855 - 20 9100 -122.438 964.461 - 20 9200 -122.577 1019.989 - 20 9300 -122.723 1075.451 - 30 5700 -183.688 -1072.435 - 30 5800 -183.448 -1004.215 - 30 5900 -183.226 -936.848 - 30 6000 -183.021 -870.286 - 30 6100 -182.833 -804.484 - 30 6200 -182.661 -739.400 - 30 6300 -182.506 -674.995 - 30 6400 -182.366 -611.232 - 30 6500 -182.242 -548.074 - 30 6600 -182.133 -485.490 - 30 6700 -182.039 -423.448 - 30 6800 -181.960 -361.918 - 30 6900 -181.896 -300.870 - 30 7000 -181.845 -240.279 - 30 7100 -181.809 -180.118 - 30 7200 -181.787 -120.362 - 30 7300 -181.778 -60.987 - 30 7400 -181.782 -1.971 - 30 7500 -181.800 56.708 - 30 7600 -181.831 115.071 - 30 7700 -181.874 173.138 - 30 7800 -181.930 230.927 - 30 7900 -181.998 288.458 - 30 8000 -182.078 345.748 - 30 8100 -182.170 402.814 - 30 8200 -182.273 459.671 - 30 8300 -182.388 516.336 - 30 8400 -182.514 572.824 - 30 8500 -182.651 629.148 - 30 8600 -182.799 685.322 - 30 8700 -182.957 741.361 - 30 8800 -183.126 797.275 - 30 8900 -183.304 853.078 - 30 9000 -183.493 908.782 - 30 9100 -183.692 964.397 - 30 9200 -183.900 1019.935 - 30 9300 -184.118 1075.407 - 40 5700 -244.985 -1073.139 - 40 5800 -244.665 -1004.897 - 40 5900 -244.369 -937.508 - 40 6000 -244.096 -870.924 - 40 6100 -243.845 -805.101 - 40 6200 -243.616 -739.995 - 40 6300 -243.409 -675.569 - 40 6400 -243.222 -611.785 - 40 6500 -243.057 -548.607 - 40 6600 -242.912 -486.003 - 40 6700 -242.786 -423.941 - 40 6800 -242.681 -362.391 - 40 6900 -242.595 -301.324 - 40 7000 -242.528 -240.714 - 40 7100 -242.479 -180.533 - 40 7200 -242.449 -120.759 - 40 7300 -242.437 -61.365 - 40 7400 -242.443 -2.331 - 40 7500 -242.467 56.366 - 40 7600 -242.507 114.746 - 40 7700 -242.565 172.830 - 40 7800 -242.639 230.637 - 40 7900 -242.730 288.185 - 40 8000 -242.836 345.492 - 40 8100 -242.959 402.574 - 40 8200 -243.097 459.447 - 40 8300 -243.250 516.128 - 40 8400 -243.417 572.631 - 40 8500 -243.600 628.971 - 40 8600 -243.797 685.161 - 40 8700 -244.007 741.214 - 40 8800 -244.232 797.143 - 40 8900 -244.470 852.961 - 40 9000 -244.722 908.678 - 40 9100 -244.986 964.308 - 40 9200 -245.264 1019.860 - 40 9300 -245.554 1075.345 - 50 5700 -306.340 -1074.046 - 50 5800 -305.940 -1005.774 - 50 5900 -305.570 -938.357 - 50 6000 -305.228 -871.745 - 50 6100 -304.915 -805.893 - 50 6200 -304.629 -740.761 - 50 6300 -304.370 -676.308 - 50 6400 -304.137 -612.497 - 50 6500 -303.930 -549.293 - 50 6600 -303.748 -486.663 - 50 6700 -303.592 -424.575 - 50 6800 -303.460 -363.000 - 50 6900 -303.352 -301.908 - 50 7000 -303.268 -241.273 - 50 7100 -303.207 -181.068 - 50 7200 -303.169 -121.269 - 50 7300 -303.154 -61.853 - 50 7400 -303.162 -2.795 - 50 7500 -303.191 55.925 - 50 7600 -303.241 114.328 - 50 7700 -303.313 172.435 - 50 7800 -303.406 230.264 - 50 7900 -303.519 287.833 - 50 8000 -303.652 345.161 - 50 8100 -303.804 402.265 - 50 8200 -303.976 459.159 - 50 8300 -304.167 515.860 - 50 8400 -304.376 572.384 - 50 8500 -304.604 628.743 - 50 8600 -304.850 684.952 - 50 8700 -305.113 741.025 - 50 8800 -305.393 796.973 - 50 8900 -305.691 852.809 - 50 9000 -306.005 908.545 - 50 9100 -306.335 964.192 - 50 9200 -306.682 1019.762 - 50 9300 -307.044 1075.265 - 60 5700 -367.768 -1075.154 - 60 5800 -367.288 -1006.847 - 60 5900 -366.844 -939.394 - 60 6000 -366.434 -872.748 - 60 6100 -366.057 -806.863 - 60 6200 -365.714 -741.697 - 60 6300 -365.403 -677.210 - 60 6400 -365.123 -613.367 - 60 6500 -364.875 -550.131 - 60 6600 -364.657 -487.469 - 60 6700 -364.469 -425.350 - 60 6800 -364.310 -363.744 - 60 6900 -364.181 -302.622 - 60 7000 -364.080 -241.957 - 60 7100 -364.007 -181.723 - 60 7200 -363.961 -121.894 - 60 7300 -363.943 -62.449 - 60 7400 -363.951 -3.363 - 60 7500 -363.986 55.386 - 60 7600 -364.047 113.817 - 60 7700 -364.132 171.951 - 60 7800 -364.243 229.807 - 60 7900 -364.378 287.403 - 60 8000 -364.537 344.757 - 60 8100 -364.720 401.886 - 60 8200 -364.926 458.806 - 60 8300 -365.154 515.532 - 60 8400 -365.405 572.080 - 60 8500 -365.678 628.464 - 60 8600 -365.972 684.697 - 60 8700 -366.288 740.792 - 60 8800 -366.624 796.764 - 60 8900 -366.980 852.623 - 60 9000 -367.357 908.381 - 60 9100 -367.753 964.051 - 60 9200 -368.168 1019.642 - 60 9300 -368.603 1075.167 - 70 5700 -429.283 -1076.465 - 70 5800 -428.723 -1008.116 - 70 5900 -428.204 -940.622 - 70 6000 -427.726 -873.934 - 70 6100 -427.286 -808.009 - 70 6200 -426.886 -742.803 - 70 6300 -426.523 -678.278 - 70 6400 -426.196 -614.396 - 70 6500 -425.906 -551.123 - 70 6600 -425.652 -488.424 - 70 6700 -425.432 -426.268 - 70 6800 -425.247 -364.625 - 70 6900 -425.096 -303.467 - 70 7000 -424.978 -242.766 - 70 7100 -424.892 -182.497 - 70 7200 -424.839 -122.634 - 70 7300 -424.818 -63.154 - 70 7400 -424.827 -4.034 - 70 7500 -424.867 54.747 - 70 7600 -424.937 113.211 - 70 7700 -425.037 171.377 - 70 7800 -425.165 229.265 - 70 7900 -425.322 286.893 - 70 8000 -425.508 344.278 - 70 8100 -425.720 401.437 - 70 8200 -425.960 458.387 - 70 8300 -426.226 515.143 - 70 8400 -426.518 571.720 - 70 8500 -426.835 628.132 - 70 8600 -427.178 684.393 - 70 8700 -427.545 740.517 - 70 8800 -427.937 796.515 - 70 8900 -428.352 852.401 - 70 9000 -428.790 908.186 - 70 9100 -429.252 963.882 - 70 9200 -429.736 1019.499 - 70 9300 -430.242 1075.049 - 80 5700 -490.900 -1077.979 - 80 5800 -490.259 -1009.581 - 80 5900 -489.666 -942.039 - 80 6000 -489.119 -875.304 - 80 6100 -488.617 -809.332 - 80 6200 -488.159 -744.081 - 80 6300 -487.743 -679.511 - 80 6400 -487.370 -615.585 - 80 6500 -487.039 -552.268 - 80 6600 -486.748 -489.526 - 80 6700 -486.497 -427.327 - 80 6800 -486.285 -365.642 - 80 6900 -486.112 -304.443 - 80 7000 -485.976 -243.701 - 80 7100 -485.878 -183.391 - 80 7200 -485.817 -123.488 - 80 7300 -485.792 -63.969 - 80 7400 -485.802 -4.810 - 80 7500 -485.847 54.009 - 80 7600 -485.927 112.511 - 80 7700 -486.040 170.715 - 80 7800 -486.186 228.639 - 80 7900 -486.365 286.303 - 80 8000 -486.576 343.724 - 80 8100 -486.818 400.918 - 80 8200 -487.091 457.903 - 80 8300 -487.395 514.693 - 80 8400 -487.728 571.303 - 80 8500 -488.090 627.748 - 80 8600 -488.481 684.042 - 80 8700 -488.899 740.197 - 80 8800 -489.346 796.227 - 80 8900 -489.819 852.144 - 80 9000 -490.320 907.960 - 80 9100 -490.846 963.686 - 80 9200 -491.399 1019.333 - 80 9300 -491.977 1074.912 - 90 5700 -552.632 -1079.697 - 90 5800 -551.911 -1011.243 - 90 5900 -551.243 -943.646 - 90 6000 -550.628 -876.858 - 90 6100 -550.062 -810.834 - 90 6200 -549.547 -745.531 - 90 6300 -549.079 -680.910 - 90 6400 -548.660 -616.934 - 90 6500 -548.286 -553.567 - 90 6600 -547.959 -490.776 - 90 6700 -547.676 -428.529 - 90 6800 -547.437 -366.797 - 90 6900 -547.242 -305.550 - 90 7000 -547.089 -244.762 - 90 7100 -546.979 -184.406 - 90 7200 -546.909 -124.459 - 90 7300 -546.880 -64.895 - 90 7400 -546.891 -5.692 - 90 7500 -546.941 53.171 - 90 7600 -547.030 111.716 - 90 7700 -547.157 169.962 - 90 7800 -547.320 227.928 - 90 7900 -547.521 285.632 - 90 8000 -547.757 343.094 - 90 8100 -548.029 400.328 - 90 8200 -548.335 457.351 - 90 8300 -548.675 514.180 - 90 8400 -549.049 570.828 - 90 8500 -549.455 627.311 - 90 8600 -549.893 683.641 - 90 8700 -550.364 739.833 - 90 8800 -550.865 795.899 - 90 8900 -551.396 851.851 - 90 9000 -551.958 907.701 - 90 9100 -552.550 963.461 - 90 9200 -553.170 1019.142 - 90 9300 -553.820 1074.755 - 100 5700 -614.495 -1081.618 - 100 5800 -613.693 -1013.102 - 100 5900 -612.951 -945.444 - 100 6000 -612.266 -878.597 - 100 6100 -611.638 -812.514 - 100 6200 -611.064 -747.153 - 100 6300 -610.545 -682.475 - 100 6400 -610.078 -618.443 - 100 6500 -609.663 -555.021 - 100 6600 -609.299 -492.175 - 100 6700 -608.984 -429.874 - 100 6800 -608.718 -368.089 - 100 6900 -608.501 -306.790 - 100 7000 -608.331 -245.950 - 100 7100 -608.207 -185.543 - 100 7200 -608.129 -125.545 - 100 7300 -608.096 -65.931 - 100 7400 -608.108 -6.679 - 100 7500 -608.163 52.232 - 100 7600 -608.260 110.825 - 100 7700 -608.400 169.118 - 100 7800 -608.581 227.130 - 100 7900 -608.803 284.881 - 100 8000 -609.064 342.387 - 100 8100 -609.365 399.666 - 100 8200 -609.704 456.733 - 100 8300 -610.080 513.604 - 100 8400 -610.494 570.295 - 100 8500 -610.944 626.819 - 100 8600 -611.430 683.191 - 100 8700 -611.951 739.423 - 100 8800 -612.507 795.529 - 100 8900 -613.096 851.520 - 100 9000 -613.719 907.409 - 100 9100 -614.375 963.208 - 100 9200 -615.064 1018.927 - 100 9300 -615.784 1074.577 - 110 5700 -676.503 -1083.745 - 110 5800 -675.620 -1015.160 - 110 5900 -674.802 -947.434 - 110 6000 -674.049 -880.520 - 110 6100 -673.357 -814.373 - 110 6200 -672.726 -748.948 - 110 6300 -672.154 -684.207 - 110 6400 -671.640 -620.113 - 110 6500 -671.183 -556.630 - 110 6600 -670.781 -493.724 - 110 6700 -670.435 -431.364 - 110 6800 -670.142 -369.519 - 110 6900 -669.902 -308.162 - 110 7000 -669.715 -247.265 - 110 7100 -669.578 -186.802 - 110 7200 -669.491 -126.748 - 110 7300 -669.454 -67.079 - 110 7400 -669.466 -7.773 - 110 7500 -669.525 51.192 - 110 7600 -669.632 109.837 - 110 7700 -669.784 168.182 - 110 7800 -669.982 226.246 - 110 7900 -670.224 284.047 - 110 8000 -670.511 341.603 - 110 8100 -670.840 398.931 - 110 8200 -671.211 456.046 - 110 8300 -671.624 512.965 - 110 8400 -672.078 569.703 - 110 8500 -672.571 626.273 - 110 8600 -673.104 682.690 - 110 8700 -673.676 738.967 - 110 8800 -674.286 795.117 - 110 8900 -674.933 851.152 - 110 9000 -675.617 907.084 - 110 9100 -676.337 962.925 - 110 9200 -677.093 1018.686 - 110 9300 -677.884 1074.378 - 120 5700 -738.670 -1086.077 - 120 5800 -737.706 -1017.416 - 120 5900 -736.813 -949.617 - 120 6000 -735.989 -882.630 - 120 6100 -735.234 -816.411 - 120 6200 -734.545 -750.917 - 120 6300 -733.920 -686.107 - 120 6400 -733.359 -621.945 - 120 6500 -732.860 -558.394 - 120 6600 -732.421 -495.422 - 120 6700 -732.043 -432.997 - 120 6800 -731.723 -371.089 - 120 6900 -731.460 -309.668 - 120 7000 -731.255 -248.708 - 120 7100 -731.105 -188.183 - 120 7200 -731.009 -128.068 - 120 7300 -730.968 -68.340 - 120 7400 -730.979 -8.974 - 120 7500 -731.043 50.050 - 120 7600 -731.157 108.752 - 120 7700 -731.322 167.154 - 120 7800 -731.537 225.274 - 120 7900 -731.800 283.130 - 120 8000 -732.110 340.741 - 120 8100 -732.468 398.122 - 120 8200 -732.871 455.290 - 120 8300 -733.320 512.262 - 120 8400 -733.813 569.050 - 120 8500 -734.350 625.671 - 120 8600 -734.930 682.138 - 120 8700 -735.551 738.464 - 120 8800 -736.215 794.662 - 120 8900 -736.919 850.745 - 120 9000 -737.663 906.724 - 120 9100 -738.447 962.611 - 120 9200 -739.271 1018.418 - 120 9300 -740.133 1074.156 - 130 5700 -801.011 -1088.617 - 130 5800 -799.964 -1019.873 - 130 5900 -798.995 -951.993 - 130 6000 -798.102 -884.927 - 130 6100 -797.283 -818.630 - 130 6200 -796.536 -753.060 - 130 6300 -795.858 -688.175 - 130 6400 -795.249 -623.939 - 130 6500 -794.708 -560.316 - 130 6600 -794.232 -497.272 - 130 6700 -793.821 -434.776 - 130 6800 -793.474 -372.798 - 130 6900 -793.188 -311.308 - 130 7000 -792.964 -250.281 - 130 7100 -792.801 -189.689 - 130 7200 -792.696 -129.507 - 130 7300 -792.650 -69.713 - 130 7400 -792.661 -10.283 - 130 7500 -792.729 48.804 - 130 7600 -792.852 107.569 - 130 7700 -793.029 166.033 - 130 7800 -793.259 224.213 - 130 7900 -793.542 282.130 - 130 8000 -793.877 339.799 - 130 8100 -794.262 397.239 - 130 8200 -794.697 454.465 - 130 8300 -795.182 511.492 - 130 8400 -795.714 568.337 - 130 8500 -796.293 625.013 - 130 8600 -796.919 681.534 - 130 8700 -797.591 737.913 - 130 8800 -798.307 794.164 - 130 8900 -799.068 850.298 - 130 9000 -799.873 906.329 - 130 9100 -800.721 962.267 - 130 9200 -801.611 1018.124 - 130 9300 -802.543 1073.911 - 140 5700 -863.541 -1091.365 - 140 5800 -862.411 -1022.531 - 140 5900 -861.365 -954.563 - 140 6000 -860.402 -887.412 - 140 6100 -859.518 -821.031 - 140 6200 -858.712 -755.378 - 140 6300 -857.982 -690.412 - 140 6400 -857.325 -626.096 - 140 6500 -856.741 -562.395 - 140 6600 -856.228 -499.273 - 140 6700 -855.784 -436.701 - 140 6800 -855.409 -374.647 - 140 6900 -855.100 -313.084 - 140 7000 -854.858 -251.983 - 140 7100 -854.680 -191.318 - 140 7200 -854.567 -131.066 - 140 7300 -854.516 -71.201 - 140 7400 -854.526 -11.702 - 140 7500 -854.597 47.454 - 140 7600 -854.727 106.287 - 140 7700 -854.916 164.817 - 140 7800 -855.162 223.063 - 140 7900 -855.465 281.044 - 140 8000 -855.824 338.778 - 140 8100 -856.236 396.280 - 140 8200 -856.703 453.568 - 140 8300 -857.222 510.657 - 140 8400 -857.793 567.561 - 140 8500 -858.415 624.296 - 140 8600 -859.087 680.876 - 140 8700 -859.808 737.313 - 140 8800 -860.577 793.620 - 140 8900 -861.395 849.811 - 140 9000 -862.259 905.897 - 140 9100 -863.170 961.890 - 140 9200 -864.127 1017.801 - 140 9300 -865.130 1073.643 - 150 5700 -926.273 -1094.322 - 150 5800 -925.060 -1025.391 - 150 5900 -923.937 -957.329 - 150 6000 -922.903 -890.086 - 150 6100 -921.954 -823.615 - 150 6200 -921.089 -757.873 - 150 6300 -920.305 -692.820 - 150 6400 -919.600 -628.418 - 150 6500 -918.973 -564.632 - 150 6600 -918.421 -501.428 - 150 6700 -917.945 -438.773 - 150 6800 -917.541 -376.639 - 150 6900 -917.210 -314.995 - 150 7000 -916.949 -253.816 - 150 7100 -916.757 -193.074 - 150 7200 -916.634 -132.744 - 150 7300 -916.577 -72.804 - 150 7400 -916.586 -13.230 - 150 7500 -916.660 45.999 - 150 7600 -916.798 104.904 - 150 7700 -916.998 163.506 - 150 7800 -917.260 221.823 - 150 7900 -917.582 279.873 - 150 8000 -917.964 337.675 - 150 8100 -918.404 395.245 - 150 8200 -918.901 452.599 - 150 8300 -919.455 509.753 - 150 8400 -920.064 566.723 - 150 8500 -920.728 623.521 - 150 8600 -921.445 680.163 - 150 8700 -922.215 736.662 - 150 8800 -923.037 793.031 - 150 8900 -923.911 849.282 - 150 9000 -924.835 905.428 - 150 9100 -925.809 961.480 - 150 9200 -926.833 1017.450 - 150 9300 -927.906 1073.350 - 160 5700 -989.224 -1097.491 - 160 5800 -987.925 -1028.456 - 160 5900 -986.725 -960.293 - 160 6000 -985.619 -892.950 - 160 6100 -984.605 -826.382 - 160 6200 -983.680 -760.545 - 160 6300 -982.841 -695.399 - 160 6400 -982.088 -630.905 - 160 6500 -981.417 -567.029 - 160 6600 -980.828 -503.736 - 160 6700 -980.318 -440.994 - 160 6800 -979.886 -378.773 - 160 6900 -979.530 -317.044 - 160 7000 -979.250 -255.780 - 160 7100 -979.044 -194.955 - 160 7200 -978.910 -134.544 - 160 7300 -978.848 -74.523 - 160 7400 -978.856 -14.870 - 160 7500 -978.933 44.438 - 160 7600 -979.078 103.420 - 160 7700 -979.289 162.098 - 160 7800 -979.565 220.490 - 160 7900 -979.907 278.615 - 160 8000 -980.311 336.490 - 160 8100 -980.778 394.132 - 160 8200 -981.305 451.557 - 160 8300 -981.893 508.781 - 160 8400 -982.540 565.820 - 160 8500 -983.245 622.686 - 160 8600 -984.008 679.396 - 160 8700 -984.827 735.961 - 160 8800 -985.701 792.395 - 160 8900 -986.631 848.711 - 160 9000 -987.614 904.921 - 160 9100 -988.651 961.037 - 160 9200 -989.742 1017.070 - 160 9300 -990.885 1073.032 diff --git a/misc/plate306.mail b/misc/plate306.mail deleted file mode 100644 index bb7fc1d50..000000000 --- a/misc/plate306.mail +++ /dev/null @@ -1,730 +0,0 @@ -From vijay@astro.princeton.edu Wed Jun 14 15:51 EDT 2000 -Received: from ginka.Princeton.EDU (vijay@ginka [128.112.24.100]) - by astro.princeton.edu (8.9.3/8.9.3) with ESMTP id PAA25857; - Wed, 14 Jun 2000 15:51:20 -0400 (EDT) -From: Vijay Narayanan -Received: (from vijay@localhost) - by ginka.Princeton.EDU (8.9.3/8.9.3) id PAA04793; - Wed, 14 Jun 2000 15:51:18 -0400 (EDT) -Date: Wed, 14 Jun 2000 15:51:18 -0400 (EDT) -Message-Id: <200006141951.PAA04793@ginka.Princeton.EDU> -To: schlegel@astro.Princeton.EDU -Subject: star templates -Cc: vijay@astro.Princeton.EDU -X-Sun-Charset: US-ASCII -Content-Type: text -Content-Length: 292 -Status: O - -Hi David, - - the following fibers in plate 306 can be used as templates. - - 158 - F star - 351 - G star - 515 - K star - 139, 340 - M star - - 193 - White dwarf - - 111 - Q at z=1.18 - 211 - Q at z=2.2 - 308 - Q at z=2.64, mini BAL - - I've requested VandenBerk for the QSO template. - - -- Vijay - - - -From vijay@astro.princeton.edu Thu Jun 1 20:51 EDT 2000 -Received: from ginka.Princeton.EDU (vijay@ginka [128.112.24.100]) - by astro.princeton.edu (8.9.3/8.9.3) with ESMTP id UAA16076; - Thu, 1 Jun 2000 20:08:44 -0400 (EDT) -From: Vijay Narayanan -Received: (from vijay@localhost) - by ginka.Princeton.EDU (8.9.3/8.9.3) id UAA12352; - Thu, 1 Jun 2000 20:08:41 -0400 (EDT) -Date: Thu, 1 Jun 2000 20:08:41 -0400 (EDT) -Message-Id: <200006020008.UAA12352@ginka.Princeton.EDU> -To: schlegel@astro.Princeton.EDU, sburles@fnal.gov, dfink@astro.berkeley, - edu@astro.Princeton.EDU -Subject: spectro1d -Cc: vijay@astro.Princeton.EDU -X-Sun-Charset: US-ASCII -Content-Type: text -Content-Length: 16199 -Status: O - -Hi David, Scott and Doug, - - I've visually inspected the spectra in plate 306, which David - certified to have reached the desired S/N. - This plate can be used as a "truth table" for any 1d pipeline - we write. - Please find below the spectro1d output, and my notes: - The format is - - 1) fiber #, - 2) redshift assigned by spectro-1d, - 3) z_status - 4) spectral classification - The last 2 are enumerated types, please look at - http://www.sdss.jhu.edu/sx/sxqt/specClasses.html - for their values. - - 5) my notes in the foll. notation - - G = galaxy with correct 1d redshift - G? = galaxy with questionable redshift - Q (?) = quasar with correct (questionable) redshift - S = star, usually followed by its spectral type - - There were some very interesting objects in this plate, including - a CV and a few BAL quasars. - - Cheers, - -- Vijay - ----------------------------------------------------------------------- -1 0.10606 4 2 G -2 0.03853 4 2 G -3 0.21480 4 2 G -4 0.00000 0 5 No object/sky -5 0.14975 4 2 G -6 2.04934 6 3 Q -7 0.18029 4 2 G -8 0.09040 4 2 G -9 0.08137 4 2 G -10 0.03791 3 2 G -11 0.18112 4 2 G -12 0.10788 4 2 G -13 0.24428 4 2 G -14 0.25684 4 2 G -15 0.21524 4 2 G -16 0.28213 4 2 G -17 0.10767 3 2 G -18 -0.00001 4 1 S F/A star -19 0.10658 3 2 G -20 -0.00068 3 1 S CV, beautiful spectrum; known object -21 0.91439 7 3 Q -22 0.14084 4 2 G -23 0.13512 4 2 G -24 0.32531 3 3 Q -25 0.10553 3 2 G -26 0.08220 3 2 G -27 0.03711 3 2 G -28 0.12254 3 2 G -29 0.00066 4 1 S A star -30 0.08235 4 2 G -31 0.10553 4 2 G -32 0.13700 3 2 G -33 0.46075 4 2 G? low S/N, probably correct z -34 0.00000 0 5 no object/sky -35 0.28557 4 2 G -36 0.03827 4 2 G -37 0.10562 3 2 G -38 0.13746 3 2 G -39 0.08196 4 2 G -40 0.10625 3 2 G -41 0.08922 3 2 G -42 0.22495 3 2 G -43 -0.00005 4 1 S a late G/early K star -44 0.22867 4 2 G -45 0.02538 3 2 G -46 0.18018 3 2 G -47 0.00035 4 1 S A star/WD -48 0.52731 4 2 G? low S/N spectrum, zabs=0.5273, probably right -49 0.24484 4 2 G -50 0.13122 4 2 G -51 0.16292 3 2 G -52 0.21899 4 2 G -53 1.55514 4 3 G, spectro 1d missed this, calls it a qso!, it's a galaxy with z~0.1 -54 0.00000 0 5 no object, very low S/N/sky -55 0.21913 4 2 G -56 0.04785 3 2 G -57 0.10649 4 2 G -58 0.21902 4 2 G -59 0.46156 4 2 G, low S/N in blue, z_abs = 0.4616!, good job. -60 0.38752 4 2 G, low S/N in blue. -61 0.32628 4 2 G, zabs=0.3263. -62 0.10701 4 2 G -63 0.10746 3 2 G -64 0.00000 0 5 no object, low S/N -65 0.10716 3 2 G -66 0.28807 4 2 G -67 0.08109 3 2 G -68 0.21883 4 2 G -69 0.10582 4 2 G -70 0.10705 4 2 G -71 0.13713 4 2 G -72 0.13971 3 2 G -73 0.02934 4 2 G. -74 0.09292 4 2 G -75 0.13521 4 2 G -76 0.96783 3 3 Q -77 0.21837 4 2 G -78 0.05695 4 2 G -79 0.13838 3 2 G -80 0.13994 3 2 G -81 0.02965 5 2 G? low S/N, z correct -82 0.01390 3 2 G -83 0.08110 3 2 G -84 0.08183 4 2 G -85 0.22889 4 2 G -86 0.05649 3 2 G -87 0.05611 3 2 G -88 0.05593 3 2 G -89 0.05612 4 2 G -90 0.13272 4 2 G -91 0.32631 4 2 G, low S/N in blue, zabs=0.3263 -92 0.13396 3 2 G -93 0.00000 0 5 no object, very low S/N/sky -94 0.14831 3 2 G -95 0.16337 4 2 G -96 0.08911 4 2 G -97 0.05575 3 2 G -98 0.08219 3 2 G -99 0.13118 3 2 G -100 0.24934 4 2 G, low S/N in blue -101 0.13759 4 2 G -102 0.10687 4 2 G -103 0.10634 4 2 G -104 0.12939 4 2 G -105 0.10604 4 2 G -106 0.22116 4 2 G -107 0.85710 7 3 Q -108 0.10708 4 2 G -109 0.00000 0 5 no object, very low S/N/sky -110 1.55420 3 3 Q -111 1.17678 3 3 Q, z probably ok. -112 0.16174 4 2 G -113 0.00606 3 2 G -114 0.00030 4 1 S F star -115 0.21105 4 2 G -116 0.12339 3 2 G -117 -0.00009 4 1 S F star -118 0.15199 4 2 G -119 0.12269 4 2 G -120 0.13930 4 2 G -121 0.12172 3 2 G -122 0.12221 3 2 G, z not exact. Bug in spectro_1d -123 0.11629 3 2 G -124 0.00000 0 5 no bject, very low S/N -125 0.26313 4 2 G -126 0.05475 4 2 G -127 0.65814 6 3 Q -128 0.71607 4 3 Q, wrong z -129 1.02701 7 3 Q, z off a bit? -130 0.13709 4 2 G -131 0.12212 4 2 G -132 0.21718 3 2 G -133 0.36217 3 3 Q, -134 1.32855 6 3 Q -135 0.13331 4 3 Q/Seyfert, wrong z -136 0.15087 4 2 G -137 0.05481 3 2 G -138 0.00006 5 1 ? low S/N object, 1d calls it a star -139 0.00016 4 1 S M star -140 0.05532 3 2 G -141 0.02982 3 2 G -142 0.13714 4 2 G -143 0.00000 0 5 no obj, very low S/N spectrum/sky -144 0.12302 3 2 G -145 0.13668 3 2 G -146 0.08890 4 2 G -147 0.00078 4 1 S A star -148 0.05621 3 2 G -149 0.08899 3 2 G -150 0.13707 3 2 G -151 0.08393 3 2 G -152 0.14775 4 2 G -153 0.03590 3 2 G -154 0.40237 4 2 G, zbs=0.4, low S/N in blue -155 0.10632 4 2 G -156 0.13679 3 2 G -157 -0.00062 4 1 S F/A star -158 0.00023 4 1 S F star -159 1.66636 4 3 G spectro calls it a Q, z incorrect, low S/N -160 0.10389 3 2 G -161 0.45014 4 2 G, zabs=0.45, low S/N in blue, good job by 1d -162 0.21251 3 2 G -163 0.00024 4 1 S F star -164 0.00066 4 1 S F/A star -165 1.82461 5 3 Q Redshift may be right -166 0.21806 4 2 G -167 0.25766 4 2 G -168 0.05561 3 2 G -169 0.10516 4 2 G -170 2.06534 7 3 Q -171 0.50887 4 3 Q Multi-component BAL! z=2.47 -172 0.08828 3 2 G -173 0.13098 3 2 G -174 0.00000 0 5 no obj, no spectrum in red! -175 0.10496 4 2 G, no spectrum in red! -176 0.12376 4 2 G, no spectrum in red! -177 0.09319 3 2 G -178 0.08840 4 2 G -179 0.10460 4 2 G -180 0.51814 4 2 G, zabs=0.5181!, low S/N in blue -181 -0.00013 4 1 S G star -182 0.12476 3 2 G -183 0.13638 3 2 G -184 0.12266 3 2 G -185 0.13486 3 2 G -186 0.09431 4 2 G -187 0.00000 0 5 no object, very low S/N spectrum/sky -188 0.00018 4 1 S B star -189 0.56515 5 3 Q? no spectrum in red, probably wrong z -190 0.12318 4 2 G, no spectrum in red -191 1.34653 6 3 Q, probably right z -192 0.13695 4 2 G -193 0.00042 4 1 WD!, -194 0.09310 3 2 G -195 0.08837 4 2 G -196 0.09312 3 2 G -197 0.08780 3 2 G -198 0.09294 4 2 G -199 0.28151 4 2 G -200 0.22035 4 2 G -201 0.40155 4 2 G, zabs = 0.4,probably correct, low S/N in blue -202 0.03518 3 2 G -203 0.08272 3 2 G -204 0.40202 4 2 G, abs=0.4020 -205 0.00000 0 5 no object, very low S/N spectru,/sky -206 0.07251 3 2 G -207 0.40212 4 2 G, zabs=0.4021, probably ok, -208 0.36208 4 2 G -209 0.08224 4 2 G -210 0.40330 4 2 G, zabs=0.4033 probably ok, low S/N in blue -211 2.19969 3 3 Q -212 0.13203 4 2 G -213 0.33327 3 3 Q, very broad H-alpha, z=0.33, z off a bit -214 0.14131 3 2 G -215 0.39659 4 2 G -216 0.00032 5 1 ?, low S/N spectrum, probably a star -217 0.00013 4 1 S F star -218 0.25905 4 2 G -219 0.13334 3 2 G -220 0.10434 3 2 G -221 0.12345 4 2 G -222 0.32079 4 2 G -223 0.44026 4 2 G, zabs=0.44, probably correct, low S/N in blue -224 0.00000 0 5 no objec, very low S/N spectrum/sky -225 2.53333 3 4 Q BAL! -226 0.13167 4 2 G -227 0.10822 3 2 G -228 0.13223 4 2 G -229 0.20751 7 3 Q BAL? What is the z? -230 0.13156 4 2 G -231 0.13418 4 2 G -232 0.44060 4 2 G, zabs=0.4406, low S/N in blue -233 0.13704 3 2 G -234 0.10866 3 2 G -235 0.12232 4 2 G -236 0.00037 4 1 S F star -237 0.03048 3 2 G -238 0.12402 4 2 G -239 -0.00023 4 1 S A star -240 0.13765 4 2 G -241 0.33037 4 2 G -242 0.12128 4 2 G -243 0.00000 0 5 no object, low S/N spectrum/sky -244 0.35781 4 2 G -245 0.01373 8 3 Q, z should be 0.81. -246 0.60516 6 3 Q -247 0.07304 4 2 G -248 0.13755 4 2 G -249 0.08000 4 2 G, no spectrum in red -250 0.00010 4 1 S G star -251 0.12351 4 2 G -252 0.10435 4 2 G -253 0.02991 3 2 G -254 0.00039 4 1 S F star -255 0.40317 4 2 G, zabs=0.4032, probablycorrect -256 0.08805 3 2 G -257 0.12319 4 2 G -258 1.49996 3 3 Q, z may be ok. -259 0.08255 4 2 G -260 0.31757 3 3 G -261 -0.00003 4 1 S A star -262 0.08329 3 2 G -263 0.13176 4 2 G -264 0.03015 3 2 G -265 0.35473 3 3 G, 1d calls it a Q. z off a bit, low S/N spectrum in blue -266 0.81063 8 3 Q, z not exact -267 0.11841 3 2 G -268 0.32024 4 2 G -269 0.22099 4 2 G -270 0.13667 4 2 G -271 0.00000 0 5 no object, very low S/N spectrum/sky -272 0.08533 3 2 G -273 0.08616 4 2 G -274 -0.00031 4 1 S A star -275 0.03019 3 2 G -276 0.18463 3 2 G -277 0.15820 3 2 G -278 0.03034 3 2 G -279 1.55604 4 3 Q, z may be correct -280 1.66719 4 3 G, no spectrum inblue -281 0.13087 3 2 G -282 0.00000 0 5 no object, very low S/N spectrum/sky -283 0.13223 3 2 G -284 0.10436 4 2 G -285 0.00034 4 1 S F star -286 0.03019 3 2 G -287 0.03052 4 2 G -288 0.39896 4 2 G, zabs=0.399, probably ok, low S/N in red -289 0.32015 4 2 G -290 0.13426 3 2 G, -291 0.13725 3 2 G -292 0.21827 4 2 G -293 0.07341 3 2 G -294 0.07937 3 2 G -295 0.04832 3 2 G -296 1.52280 4 3 G, 1d calls it a Q, wrong z -297 0.80911 3 3 Q -298 0.07268 3 2 G -299 0.05531 4 2 G -300 0.07327 4 2 G -301 0.16029 4 2 G -302 0.62829 6 3 Q -303 0.00000 0 5 no object, very low S/N spectrum/sky -304 0.12703 4 2 G -305 0.13637 3 2 G -306 0.33572 4 2 G -307 1.14773 3 3 Q, z maybe ok -308 2.63993 4 4 Q mini-BAL -309 0.13095 3 2 G -310 0.07333 3 2 G -311 0.75332 3 3 G -312 0.28396 4 2 G -313 0.22184 3 2 G -314 0.16473 4 2 G -315 0.07951 4 2 G -316 0.13125 3 2 G -317 0.28484 4 2 G -318 0.10446 3 2 G -319 0.13504 4 2 G -320 1.32371 7 2 ? no spectrum in blue. 1d is wrong -321 0.11390 4 2 G -322 0.31993 3 2 G, low S/N in blue, z looks ok -323 0.11488 3 2 G -324 0.12590 4 2 G -325 0.11057 3 2 G -326 0.09863 3 2 G -327 0.10148 4 2 G -328 0.02592 3 2 G -329 0.14489 4 2 G -330 0.37320 4 2 G -331 0.00011 4 1 S A/F star -332 0.12405 4 2 G -333 0.00000 0 5 no object, very low S/N spec/sky -334 0.11515 3 2 G -335 0.15065 3 2 G -336 0.10210 4 2 G -337 0.17042 3 2 G -338 0.05250 3 2 G -339 0.16147 4 2 G -340 0.00013 4 1 S M star -341 0.33545 4 2 G -342 0.08551 4 2 G -343 0.05710 3 2 G -344 0.11487 4 2 G -345 -0.00010 4 1 S very late M star -346 0.00008 4 1 S G star -347 0.12899 3 2 G -348 0.13593 4 2 G -349 0.08524 3 2 G -350 0.29547 4 2 G -351 0.00011 4 1 S G star -352 0.00000 0 5 no object, very low S/N spec/sky -353 0.02416 3 2 G -354 0.33303 4 2 G -355 0.13498 3 2 G -356 0.08474 3 2 G -357 -0.00031 4 1 S G star -358 0.08501 4 2 G -359 0.08480 3 2 G -360 0.22948 4 2 G -361 0.11357 4 2 G -362 0.21247 4 2 G -363 0.15226 4 2 G -364 0.42328 4 2 G -365 0.00034 4 1 S, F star -366 0.12328 4 2 G -367 0.00000 0 5 no object, very low S?N spec/sky -368 0.12206 3 2 G -369 0.19060 4 2 G -370 0.12365 4 2 G -371 0.12368 3 2 G -372 0.02992 4 2 G -373 0.02972 3 2 G -374 0.00026 4 1 S A star/F star, -375 0.33238 1 0 G? z may be ok, has mask regions -376 0.48044 4 2 G, zabs=0.48!, -377 0.32944 4 2 G -378 0.08675 4 2 G -379 0.32397 4 2 G -380 0.15605 4 2 G -381 0.05139 3 2 G -382 0.05398 3 2 G -383 0.05541 4 2 G -384 0.36409 4 2 G -385 0.05584 4 2 G -386 0.05624 4 2 G -387 0.05589 3 2 G -388 0.10283 4 2 G -389 0.43058 1 0 ? someblue obj. -390 0.05715 4 2 G -391 0.00041 4 1 S F star -392 0.11427 3 2 G -393 0.12960 4 2 G -394 0.10235 3 2 G -395 0.10476 4 2 G -396 0.13822 3 2 G -397 0.10559 4 2 G -398 0.00000 0 5 no obj., /sky -399 0.05472 4 2 G -400 0.00020 4 1 S WD -401 0.13312 3 2 G -402 0.00111 4 1 S A star -403 0.13642 4 2 G -404 0.03023 4 2 G -405 0.02626 4 2 G -406 0.12433 3 2 G -407 0.13356 4 2 G -408 0.03042 3 2 G -409 0.13652 4 2 G -410 0.03027 3 2 G -411 0.13297 3 2 G -412 0.08740 3 2 G -413 0.13713 4 2 G -414 0.15087 4 2 G -415 0.29929 4 2 G -416 0.20559 4 2 G -417 0.00000 0 5 no object, very low S/N/sky -418 0.06847 3 2 G -419 0.13194 3 2 G -420 0.13772 3 2 G -421 0.05594 4 2 G -422 0.05448 4 2 G -423 0.15125 4 2 G -424 0.14800 3 2 G -425 0.08661 3 2 G -426 0.13013 3 2 G -427 0.13681 3 2 G -428 0.19016 3 2 G -429 0.05502 4 2 G -430 0.05610 4 2 G -431 0.05649 4 2 G -432 0.10347 4 2 G -433 1.26408 6 3 Q z is probably ok -434 0.08685 4 2 G -435 0.00000 0 5 no object, very low S/N/sky -436 0.11826 4 2 G -437 1.99520 6 3 Q, z is probably ok -438 0.10321 4 2 G -439 0.05468 3 2 G -440 0.10252 4 2 G -441 0.07836 4 2 G -442 0.08127 3 2 G -443 0.33620 4 2 G -444 0.48094 4 2 G zabs=0.4809! -445 0.39976 4 2 G, zabs=0.3998 -446 0.11764 4 2 G -447 1.09092 6 3 Q, z maybe ok -448 0.00000 0 5 no obj, very low S/N, sky? -449 0.14444 3 2 G -450 0.10898 3 2 G -451 0.03009 3 2 G -452 -0.00019 4 1 S F star -453 0.47184 5 2 G?, zabs=0.4718! -454 0.07156 3 2 G -455 0.22265 3 2 G -456 0.12729 3 2 G -457 0.09513 3 2 G -458 0.15105 4 2 G -459 0.15039 4 2 G -460 0.40984 4 3 G, spectro1d calls it a Q! -461 0.09531 3 2 G -462 0.13588 4 2 G -463 0.09539 4 2 G -464 0.00000 0 5 no obj, sky? -465 0.29964 4 2 G -466 0.37428 3 2 G -467 0.13569 4 2 G -468 0.13627 4 2 G -469 0.16282 4 2 G -470 0.13072 4 2 G -471 0.13063 3 2 G -472 0.13174 4 2 G -473 0.05502 3 2 G -474 0.05608 4 2 G -475 0.05383 3 2 G -476 0.07921 4 2 G -477 0.03528 3 2 G -478 1.07730 6 3 Q -479 0.08777 3 2 G -480 0.13076 4 2 G -481 0.13018 4 2 G -482 1.94747 3 3 Q -483 0.09530 3 2 G -484 0.00012 4 1 S G star -485 0.05472 4 2 G -486 0.05276 3 2 G -487 1.12019 4 2 G, wrong z because of glitch -488 0.03476 3 2 G -489 0.13102 4 2 G -490 0.12107 4 2 G -491 0.29000 4 2 G -492 0.13658 3 2 G -493 0.05569 4 2 G -494 0.09949 3 2 G -495 0.00029 4 1 S WD -496 0.09384 3 2 G -497 0.00000 0 5 no obj, very low S/N/sky -498 0.13055 3 2 G -499 0.40524 4 2 G -500 0.00010 4 1 S G star -501 0.44638 4 2 G, zabs=0.4464! -502 0.13035 4 2 G -503 0.05493 3 2 G -504 0.03430 3 2 G -505 0.00554 3 2 G -506 0.12197 3 2 G -507 0.15710 3 2 G -508 0.09309 4 2 G -509 0.02612 3 2 G -510 0.14854 3 2 G -511 0.03118 3 2 G -512 0.00000 0 5 no obj, very low S/N/sky -513 0.00044 4 1 S F star -514 0.07212 4 2 G -515 0.00012 4 1 S K star -516 0.47415 4 2 G zabs=0.4741! -517 0.12836 4 2 G -518 0.00008 4 1 S late G -519 1.71572 6 3 Q, is the z correct? -520 0.03531 3 2 G -521 0.11971 3 2 G -522 0.06864 3 2 G -523 1.63088 4 3 G, no blue spec. 1d calls it wrongly as a Q at wrong z -524 2.75956 5 4 Q z correct? -525 0.00000 0 5 no obj, very low S/N spec/sky -526 0.12668 4 2 G -527 0.15046 3 2 G -528 0.10891 3 2 G -529 0.13788 4 2 G -530 0.11464 4 2 G -531 0.19954 4 3 Q, wrong z -532 0.07818 3 2 G -533 0.07874 4 2 G -534 0.15624 4 2 G -535 0.03432 4 2 G -536 0.15098 3 2 G -537 0.12445 4 2 G -538 0.13700 3 2 G -539 0.00025 4 1 S G star -540 0.17557 3 2 G -541 0.43164 4 2 G zabs=0.4316! -542 0.12505 4 2 G -543 0.12597 3 2 G -544 0.93572 5 3 ? no spec. in red, no object in blue/sky -545 0.07837 4 2 G no spec. in red -546 0.07894 4 2 G -547 0.45648 4 2 G, abs=0.4565! -548 0.15518 4 2 G -549 -0.00000 4 1 S F star -550 0.00003 4 1 S G star -551 0.07967 3 2 G -552 0.11957 3 2 G -553 0.02894 3 2 G -554 0.11873 3 2 G -555 0.00000 0 5 no obj, very low S/N/sky -556 0.43295 4 2 G, zabs=0.433! -557 0.07840 4 2 G -558 2.73670 4 4 Q, very good spectrum of z=2.74 QSO, z is correct -559 0.12854 3 2 G -560 0.05252 3 2 G -561 0.00000 0 5 no obj, very low S/N spec/sky -562 0.34026 4 2 G -563 0.07004 3 2 G -564 0.11936 4 2 G -565 0.11467 4 2 G -566 0.13766 4 2 G -567 0.09376 3 2 G -568 0.07900 4 2 G -569 0.03045 3 2 G -570 0.05063 3 2 G -571 0.11984 4 2 G -572 0.12841 4 2 G -573 0.11986 3 2 G -574 0.09410 4 2 G -575 0.11568 4 2 G -576 0.11606 3 2 G -577 0.13297 4 2 G -578 0.12767 3 2 G -579 0.50153 4 2 G, zabs=0.5015!, -580 0.11555 3 2 G -581 0.03065 4 2 G -582 0.03009 4 2 G -583 0.27968 4 2 G -584 0.22253 4 2 G -585 0.03073 4 2 G -586 0.11863 4 2 G -587 0.07859 3 2 G -588 0.11747 3 2 G -589 0.03534 3 2 G -590 -0.00013 4 1 S G star -591 0.13694 3 2 G -592 0.03476 3 2 G -593 0.00000 0 5 no obj, very low S/N spec, /sky -594 0.12082 3 2 G -595 -0.00006 4 1 S F star -596 0.12798 3 2 G -597 0.42562 1 0 no obj, no spec in red, sky?/sky -598 0.05655 4 2 G -599 0.02678 3 2 G -600 0.12180 4 2 G -601 0.76194 4 2 Q, 1d calls it a galaxy, wrong z -602 0.07809 4 2 G -603 0.12490 3 2 G -604 0.00034 4 1 S F star -605 0.12504 3 2 G -606 0.13755 3 2 G -607 0.11877 4 2 G -608 0.07820 3 2 G -609 0.00000 0 5 no obj, very low S/N spec,/sky -610 0.12652 4 2 G -611 0.12851 3 2 G -612 0.03018 4 2 G -613 0.13769 4 2 G -614 0.12844 3 2 G -615 0.11868 4 2 G -616 0.00006 4 1 S G star -617 0.13617 3 2 G -618 0.12890 3 2 G -619 0.12624 3 2 G -620 0.12062 4 2 G -621 0.13689 4 2 G -622 0.02970 3 2 G -623 0.02943 4 2 G -624 0.14985 3 2 G -625 0.10546 3 2 G -626 0.10566 4 2 G -627 0.14038 3 2 Q -628 1.26687 6 3 Q z off a bit -629 1.86240 6 3 Q, BAL -630 0.21038 4 2 G -631 0.13700 3 2 G -632 0.00022 4 1 S G star -633 0.07859 4 2 G -634 0.10845 4 2 G -635 0.10884 4 2 G -636 0.00006 4 1 S G star -637 0.00025 4 1 S M star -638 0.12372 4 2 G -639 0.00000 0 5 no obj, very low S/N sky? -640 0.05607 4 2 G, no spec in red, z is right - diff --git a/misc/rawdata2bossdata b/misc/rawdata2bossdata deleted file mode 100755 index d668e9b17..000000000 --- a/misc/rawdata2bossdata +++ /dev/null @@ -1,120 +0,0 @@ -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ bin/make_room.sh.new -mv bin/make_room.sh.new bin/make_room.sh - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ bin/rundaily.new -mv bin/rundaily.new bin/rundaily - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ bin/rundaily_riemann_script.new -mv bin/rundaily_riemann_script.new bin/rundaily_riemann_script - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ bin/spamd_start.new -mv bin/spamd_start.new bin/spamd_start - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ bin/spredrobot.sh.new -mv bin/spredrobot.sh.new bin/spredrobot.sh - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ bin/spredrobot_start.new -mv bin/spredrobot_start.new bin/spredrobot_start - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ doc/www/idlspec2d_doc.html.new -mv doc/www/idlspec2d_doc.html.new doc/www/idlspec2d_doc.html - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ doc/www/idlspec2d_reduce.html.new -mv doc/www/idlspec2d_reduce.html.new doc/www/idlspec2d_reduce.html - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/apo_plotbias.pro.new -mv pro/apo2d/apo_plotbias.pro.new pro/apo2d/apo_plotbias.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/apoall.pro.new -mv pro/apo2d/apoall.pro.new pro/apo2d/apoall.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/apofix.pro.new -mv pro/apo2d/apofix.pro.new pro/apo2d/apofix.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/apoheader.pro.new -mv pro/apo2d/apoheader.pro.new pro/apo2d/apoheader.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/bestfocus.pro.new -mv pro/apo2d/bestfocus.pro.new pro/apo2d/bestfocus.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/ccdtilt.pro.new -mv pro/apo2d/ccdtilt.pro.new pro/apo2d/ccdtilt.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/collimate.pro.new -mv pro/apo2d/collimate.pro.new pro/apo2d/collimate.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/combsmallcollimate.pro.new -mv pro/apo2d/combsmallcollimate.pro.new pro/apo2d/combsmallcollimate.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/guidermovie.pro.new -mv pro/apo2d/guidermovie.pro.new pro/apo2d/guidermovie.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/guidermpeg.pro.new -mv pro/apo2d/guidermpeg.pro.new pro/apo2d/guidermpeg.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/remove2redo.pro.new -mv pro/apo2d/remove2redo.pro.new pro/apo2d/remove2redo.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/apo2d/smallcollimate.pro.new -mv pro/apo2d/smallcollimate.pro.new pro/apo2d/smallcollimate.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/plan/bad_bossformat.pro.new -mv pro/plan/bad_bossformat.pro.new pro/plan/bad_bossformat.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/plan/daytime_test.pro.new -mv pro/plan/daytime_test.pro.new pro/plan/daytime_test.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/plan/rdnoise_history.pro.new -mv pro/plan/rdnoise_history.pro.new pro/plan/rdnoise_history.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/plan/smeartimes.pro.new -mv pro/plan/smeartimes.pro.new pro/plan/smeartimes.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/plan/specheaders.pro.new -mv pro/plan/specheaders.pro.new pro/plan/specheaders.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/atvspec.pro.new -mv pro/spec2d/atvspec.pro.new pro/spec2d/atvspec.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/batchpbs.pro.new -mv pro/spec2d/batchpbs.pro.new pro/spec2d/batchpbs.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/bbspec_pixpsf.pro.new -mv pro/spec2d/bbspec_pixpsf.pro.new pro/spec2d/bbspec_pixpsf.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/bbspec_test.pro.new -mv pro/spec2d/bbspec_test.pro.new pro/spec2d/bbspec_test.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/bolton_std_throughput.pro.new -mv pro/spec2d/bolton_std_throughput.pro.new pro/spec2d/bolton_std_throughput.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/boss_gain.pro.new -mv pro/spec2d/boss_gain.pro.new pro/spec2d/boss_gain.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/logsheet.pro.new -mv pro/spec2d/logsheet.pro.new pro/spec2d/logsheet.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/run_sdssproc.pro.new -mv pro/spec2d/run_sdssproc.pro.new pro/spec2d/run_sdssproc.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/spbiasgen.pro.new -mv pro/spec2d/spbiasgen.pro.new pro/spec2d/spbiasgen.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/spflatgen.pro.new -mv pro/spec2d/spflatgen.pro.new pro/spec2d/spflatgen.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/spplan2d.pro.new -mv pro/spec2d/spplan2d.pro.new pro/spec2d/spplan2d.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/spec2d/spreduce2d.pro.new -mv pro/spec2d/spreduce2d.pro.new pro/spec2d/spreduce2d.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/specflat/combinebpm.pro.new -mv pro/specflat/combinebpm.pro.new pro/specflat/combinebpm.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/specflat/flatfield.pro.new -mv pro/specflat/flatfield.pro.new pro/specflat/flatfield.pro - -sed s/RAWDATA_DIR/BOSS_SPECTRO_DATA/ pro/specflat/ledflat.pro.new -mv pro/specflat/ledflat.pro.new pro/specflat/ledflat.pro - diff --git a/misc/uomoto.distortions b/misc/uomoto.distortions deleted file mode 100644 index df47a0c53..000000000 --- a/misc/uomoto.distortions +++ /dev/null @@ -1,1081 +0,0 @@ -SDSS Spectrograph Distortions from Alan Umoto - - Blue Spectrograph - -Fiber Wave X Y - 0 3700 0.000 -1123.594 - 0 3800 0.000 -1020.730 - 0 3900 0.000 -920.357 - 0 4000 0.000 -822.193 - 0 4100 0.000 -726.005 - 0 4200 0.000 -631.595 - 0 4300 0.000 -538.795 - 0 4400 0.000 -447.455 - 0 4500 0.000 -357.446 - 0 4600 0.000 -268.650 - 0 4700 0.000 -180.963 - 0 4800 0.000 -94.289 - 0 4900 0.000 -8.542 - 0 5000 0.000 76.358 - 0 5100 0.000 160.482 - 0 5200 0.000 243.898 - 0 5300 0.000 326.668 - 0 5400 0.000 408.847 - 0 5500 0.000 490.490 - 0 5600 0.000 571.644 - 0 5700 0.000 652.355 - 0 5800 0.000 732.665 - 0 5900 0.000 812.613 - 0 6000 0.000 892.236 - 0 6100 0.000 971.567 - 0 6200 0.000 1050.640 - 10 3700 -61.081 -1123.684 - 10 3800 -60.983 -1020.816 - 10 3900 -60.900 -920.439 - 10 4000 -60.829 -822.271 - 10 4100 -60.769 -726.079 - 10 4200 -60.719 -631.666 - 10 4300 -60.678 -538.862 - 10 4400 -60.646 -447.519 - 10 4500 -60.622 -357.507 - 10 4600 -60.607 -268.708 - 10 4700 -60.599 -181.017 - 10 4800 -60.599 -94.340 - 10 4900 -60.606 -8.590 - 10 5000 -60.620 76.313 - 10 5100 -60.641 160.440 - 10 5200 -60.669 243.859 - 10 5300 -60.703 326.632 - 10 5400 -60.744 408.814 - 10 5500 -60.790 490.459 - 10 5600 -60.843 571.616 - 10 5700 -60.901 652.329 - 10 5800 -60.965 732.642 - 10 5900 -61.035 812.592 - 10 6000 -61.109 892.217 - 10 6100 -61.189 971.551 - 10 6200 -61.274 1050.626 - 20 3700 -122.174 -1123.955 - 20 3800 -121.978 -1021.074 - 20 3900 -121.812 -920.685 - 20 4000 -121.669 -822.506 - 20 4100 -121.549 -726.303 - 20 4200 -121.449 -631.879 - 20 4300 -121.368 -539.065 - 20 4400 -121.304 -447.711 - 20 4500 -121.257 -357.689 - 20 4600 -121.225 -268.880 - 20 4700 -121.210 -181.180 - 20 4800 -121.209 -94.493 - 20 4900 -121.223 -8.733 - 20 5000 -121.252 76.178 - 20 5100 -121.294 160.314 - 20 5200 -121.349 243.742 - 20 5300 -121.418 326.523 - 20 5400 -121.499 408.714 - 20 5500 -121.592 490.367 - 20 5600 -121.697 571.532 - 20 5700 -121.814 652.253 - 20 5800 -121.942 732.572 - 20 5900 -122.080 812.530 - 20 6000 -122.230 892.162 - 20 6100 -122.389 971.503 - 20 6200 -122.558 1050.584 - 30 3700 -183.290 -1124.405 - 30 3800 -182.997 -1021.505 - 30 3900 -182.746 -921.096 - 30 4000 -182.533 -822.898 - 30 4100 -182.353 -726.676 - 30 4200 -182.203 -632.235 - 30 4300 -182.081 -539.402 - 30 4400 -181.985 -448.032 - 30 4500 -181.914 -357.992 - 30 4600 -181.867 -269.167 - 30 4700 -181.844 -181.451 - 30 4800 -181.843 -94.748 - 30 4900 -181.864 -8.973 - 30 5000 -181.907 75.954 - 30 5100 -181.969 160.105 - 30 5200 -182.052 243.547 - 30 5300 -182.155 326.342 - 30 5400 -182.276 408.546 - 30 5500 -182.416 490.213 - 30 5600 -182.574 571.391 - 30 5700 -182.749 652.125 - 30 5800 -182.940 732.457 - 30 5900 -183.148 812.426 - 30 6000 -183.372 892.070 - 30 6100 -183.611 971.422 - 30 6200 -183.865 1050.515 - 40 3700 -244.441 -1125.036 - 40 3800 -244.050 -1022.107 - 40 3900 -243.717 -921.671 - 40 4000 -243.432 -823.446 - 40 4100 -243.192 -727.199 - 40 4200 -242.992 -632.732 - 40 4300 -242.829 -539.875 - 40 4400 -242.701 -448.481 - 40 4500 -242.607 -358.418 - 40 4600 -242.544 -269.569 - 40 4700 -242.513 -181.830 - 40 4800 -242.512 -95.105 - 40 4900 -242.540 -9.309 - 40 5000 -242.596 75.639 - 40 5100 -242.680 159.811 - 40 5200 -242.790 243.273 - 40 5300 -242.927 326.088 - 40 5400 -243.088 408.312 - 40 5500 -243.274 489.997 - 40 5600 -243.484 571.193 - 40 5700 -243.717 651.945 - 40 5800 -243.972 732.294 - 40 5900 -244.249 812.281 - 40 6000 -244.547 891.941 - 40 6100 -244.866 971.309 - 40 6200 -245.204 1050.418 - 50 3700 -305.639 -1125.848 - 50 3800 -305.150 -1022.882 - 50 3900 -304.733 -922.411 - 50 4000 -304.378 -824.152 - 50 4100 -304.078 -727.871 - 50 4200 -303.827 -633.372 - 50 4300 -303.624 -540.483 - 50 4400 -303.464 -449.058 - 50 4500 -303.346 -358.965 - 50 4600 -303.268 -270.086 - 50 4700 -303.229 -182.318 - 50 4800 -303.227 -95.565 - 50 4900 -303.262 -9.741 - 50 5000 -303.332 75.235 - 50 5100 -303.436 159.433 - 50 5200 -303.574 242.921 - 50 5300 -303.744 325.761 - 50 5400 -303.946 408.010 - 50 5500 -304.178 489.719 - 50 5600 -304.440 570.939 - 50 5700 -304.731 651.713 - 50 5800 -305.049 732.085 - 50 5900 -305.395 812.093 - 50 6000 -305.767 891.775 - 50 6100 -306.164 971.163 - 50 6200 -306.587 1050.292 - 60 3700 -366.896 -1126.840 - 60 3800 -366.309 -1023.829 - 60 3900 -365.808 -923.315 - 60 4000 -365.382 -825.014 - 60 4100 -365.022 -728.693 - 60 4200 -364.721 -634.154 - 60 4300 -364.477 -541.227 - 60 4400 -364.285 -449.764 - 60 4500 -364.143 -359.634 - 60 4600 -364.050 -270.719 - 60 4700 -364.002 -182.916 - 60 4800 -364.000 -96.128 - 60 4900 -364.041 -10.269 - 60 5000 -364.125 74.739 - 60 5100 -364.250 158.970 - 60 5200 -364.415 242.490 - 60 5300 -364.619 325.361 - 60 5400 -364.860 407.640 - 60 5500 -365.138 489.379 - 60 5600 -365.452 570.627 - 60 5700 -365.800 651.430 - 60 5800 -366.181 731.829 - 60 5900 -366.596 811.863 - 60 6000 -367.041 891.570 - 60 6100 -367.518 970.984 - 60 6200 -368.024 1050.138 - 70 3700 -428.222 -1128.013 - 70 3800 -427.537 -1024.949 - 70 3900 -426.953 -924.384 - 70 4000 -426.456 -826.034 - 70 4100 -426.035 -729.665 - 70 4200 -425.685 -635.079 - 70 4300 -425.400 -542.107 - 70 4400 -425.176 -450.599 - 70 4500 -425.010 -360.425 - 70 4600 -424.901 -271.467 - 70 4700 -424.846 -183.622 - 70 4800 -424.843 -96.793 - 70 4900 -424.890 -10.894 - 70 5000 -424.988 74.153 - 70 5100 -425.133 158.423 - 70 5200 -425.324 241.980 - 70 5300 -425.561 324.888 - 70 5400 -425.842 407.202 - 70 5500 -426.166 488.976 - 70 5600 -426.531 570.258 - 70 5700 -426.936 651.093 - 70 5800 -427.380 731.524 - 70 5900 -427.863 811.590 - 70 6000 -428.382 891.328 - 70 6100 -428.937 970.772 - 70 6200 -429.527 1049.954 - 80 3700 -489.631 -1129.368 - 80 3800 -488.847 -1026.242 - 80 3900 -488.179 -925.618 - 80 4000 -487.611 -827.211 - 80 4100 -487.130 -730.787 - 80 4200 -486.730 -636.147 - 80 4300 -486.404 -543.122 - 80 4400 -486.148 -451.563 - 80 4500 -485.959 -361.338 - 80 4600 -485.833 -272.332 - 80 4700 -485.770 -184.438 - 80 4800 -485.766 -97.562 - 80 4900 -485.820 -11.617 - 80 5000 -485.930 73.476 - 80 5100 -486.095 157.789 - 80 5200 -486.314 241.390 - 80 5300 -486.583 324.340 - 80 5400 -486.903 406.695 - 80 5500 -487.272 488.509 - 80 5600 -487.688 569.830 - 80 5700 -488.150 650.703 - 80 5800 -488.657 731.172 - 80 5900 -489.207 811.274 - 80 6000 -489.799 891.047 - 80 6100 -490.432 970.525 - 80 6200 -491.105 1049.741 - 90 3700 -551.132 -1130.904 - 90 3800 -550.250 -1027.708 - 90 3900 -549.498 -927.017 - 90 4000 -548.859 -828.546 - 90 4100 -548.318 -732.059 - 90 4200 -547.867 -637.359 - 90 4300 -547.500 -544.274 - 90 4400 -547.212 -452.656 - 90 4500 -546.999 -362.375 - 90 4600 -546.858 -273.313 - 90 4700 -546.786 -185.364 - 90 4800 -546.781 -98.435 - 90 4900 -546.841 -12.437 - 90 5000 -546.964 72.707 - 90 5100 -547.149 157.070 - 90 5200 -547.394 240.720 - 90 5300 -547.696 323.717 - 90 5400 -548.055 406.119 - 90 5500 -548.468 487.978 - 90 5600 -548.935 569.343 - 90 5700 -549.453 650.260 - 90 5800 -550.022 730.770 - 90 5900 -550.639 810.913 - 90 6000 -551.303 890.726 - 90 6100 -552.014 970.244 - 90 6200 -552.771 1049.498 - 100 3700 -612.738 -1132.622 - 100 3800 -611.757 -1029.349 - 100 3900 -610.922 -928.583 - 100 4000 -610.210 -830.039 - 100 4100 -609.609 -733.482 - 100 4200 -609.109 -638.714 - 100 4300 -608.701 -545.562 - 100 4400 -608.381 -453.880 - 100 4500 -608.143 -363.535 - 100 4600 -607.986 -274.410 - 100 4700 -607.905 -186.401 - 100 4800 -607.899 -99.411 - 100 4900 -607.965 -13.356 - 100 5000 -608.101 71.845 - 100 5100 -608.305 156.265 - 100 5200 -608.575 239.969 - 100 5300 -608.910 323.019 - 100 5400 -609.307 405.473 - 100 5500 -609.765 487.383 - 100 5600 -610.282 568.797 - 100 5700 -610.856 649.762 - 100 5800 -611.486 730.319 - 100 5900 -612.170 810.508 - 100 6000 -612.906 890.366 - 100 6100 -613.695 969.927 - 100 6200 -614.533 1049.224 - 110 3700 -674.461 -1134.524 - 110 3800 -673.380 -1031.163 - 110 3900 -672.460 -930.314 - 110 4000 -671.677 -831.691 - 110 4100 -671.016 -735.057 - 110 4200 -670.465 -640.213 - 110 4300 -670.016 -546.988 - 110 4400 -669.664 -455.234 - 110 4500 -669.402 -364.818 - 110 4600 -669.228 -275.625 - 110 4700 -669.139 -187.548 - 110 4800 -669.131 -100.493 - 110 4900 -669.203 -14.373 - 110 5000 -669.351 70.891 - 110 5100 -669.574 155.372 - 110 5200 -669.870 239.136 - 110 5300 -670.236 322.246 - 110 5400 -670.671 404.757 - 110 5500 -671.173 486.722 - 110 5600 -671.739 568.191 - 110 5700 -672.369 649.209 - 110 5800 -673.060 729.818 - 110 5900 -673.810 810.057 - 110 6000 -674.618 889.964 - 110 6100 -675.483 969.574 - 110 6200 -676.404 1048.919 - 120 3700 -736.311 -1136.609 - 120 3800 -735.131 -1033.153 - 120 3900 -734.126 -932.213 - 120 4000 -733.271 -833.502 - 120 4100 -732.549 -736.783 - 120 4200 -731.948 -641.856 - 120 4300 -731.458 -548.551 - 120 4400 -731.073 -456.718 - 120 4500 -730.787 -366.226 - 120 4600 -730.597 -276.957 - 120 4700 -730.498 -188.807 - 120 4800 -730.489 -101.680 - 120 4900 -730.565 -15.490 - 120 5000 -730.726 69.843 - 120 5100 -730.968 154.391 - 120 5200 -731.288 238.222 - 120 5300 -731.686 321.395 - 120 5400 -732.158 403.969 - 120 5500 -732.703 485.995 - 120 5600 -733.319 567.524 - 120 5700 -734.003 648.600 - 120 5800 -734.754 729.266 - 120 5900 -735.570 809.560 - 120 6000 -736.449 889.522 - 120 6100 -737.391 969.184 - 120 6200 -738.394 1048.582 - 130 3700 -798.301 -1138.878 - 130 3800 -797.020 -1035.318 - 130 3900 -795.929 -934.279 - 130 4000 -795.002 -835.472 - 130 4100 -794.220 -738.661 - 130 4200 -793.568 -643.645 - 130 4300 -793.036 -550.252 - 130 4400 -792.618 -458.334 - 130 4500 -792.308 -367.759 - 130 4600 -792.101 -278.408 - 130 4700 -791.993 -190.178 - 130 4800 -791.982 -102.973 - 130 4900 -792.063 -16.706 - 130 5000 -792.236 68.701 - 130 5100 -792.495 153.322 - 130 5200 -792.841 237.224 - 130 5300 -793.269 320.467 - 130 5400 -793.778 403.109 - 130 5500 -794.366 485.202 - 130 5600 -795.030 566.795 - 130 5700 -795.769 647.934 - 130 5800 -796.580 728.661 - 130 5900 -797.461 809.016 - 130 6000 -798.411 889.037 - 130 6100 -799.429 968.757 - 130 6200 -800.512 1048.212 - 140 3700 -860.442 -1141.332 - 140 3800 -859.059 -1037.660 - 140 3900 -857.882 -936.513 - 140 4000 -856.883 -837.603 - 140 4100 -856.039 -740.692 - 140 4200 -855.336 -645.579 - 140 4300 -854.763 -552.092 - 140 4400 -854.312 -460.082 - 140 4500 -853.977 -369.417 - 140 4600 -853.753 -279.978 - 140 4700 -853.636 -191.662 - 140 4800 -853.622 -104.373 - 140 4900 -853.708 -18.024 - 140 5000 -853.891 67.464 - 140 5100 -854.169 152.164 - 140 5200 -854.538 236.142 - 140 5300 -854.997 319.460 - 140 5400 -855.542 402.175 - 140 5500 -856.172 484.340 - 140 5600 -856.885 566.003 - 140 5700 -857.677 647.210 - 140 5800 -858.547 728.004 - 140 5900 -859.493 808.424 - 140 6000 -860.513 888.509 - 140 6100 -861.607 968.292 - 140 6200 -862.772 1047.808 - 150 3700 -922.745 -1143.973 - 150 3800 -921.259 -1040.179 - 150 3900 -919.996 -938.916 - 150 4000 -918.923 -839.895 - 150 4100 -918.017 -742.877 - 150 4200 -917.263 -647.660 - 150 4300 -916.648 -554.072 - 150 4400 -916.164 -461.963 - 150 4500 -915.804 -371.201 - 150 4600 -915.562 -281.668 - 150 4700 -915.435 -193.260 - 150 4800 -915.418 -105.881 - 150 4900 -915.509 -19.443 - 150 5000 -915.703 66.131 - 150 5100 -915.998 150.915 - 150 5200 -916.391 234.976 - 150 5300 -916.879 318.375 - 150 5400 -917.461 401.168 - 150 5500 -918.132 483.409 - 150 5600 -918.892 565.148 - 150 5700 -919.737 646.428 - 150 5800 -920.666 727.293 - 150 5900 -921.677 807.784 - 150 6000 -922.767 887.937 - 150 6100 -923.936 967.788 - 150 6200 -925.181 1047.370 - 160 3700 -985.224 -1146.803 - 160 3800 -983.633 -1042.877 - 160 3900 -982.282 -941.490 - 160 4000 -981.134 -842.349 - 160 4100 -980.166 -745.216 - 160 4200 -979.360 -649.888 - 160 4300 -978.703 -556.191 - 160 4400 -978.185 -463.977 - 160 4500 -977.799 -373.112 - 160 4600 -977.540 -283.479 - 160 4700 -977.403 -194.972 - 160 4800 -977.383 -107.496 - 160 4900 -977.477 -20.965 - 160 5000 -977.681 64.702 - 160 5100 -977.993 149.576 - 160 5200 -978.409 233.724 - 160 5300 -978.927 317.209 - 160 5400 -979.544 400.086 - 160 5500 -980.257 482.409 - 160 5600 -981.063 564.227 - 160 5700 -981.961 645.586 - 160 5800 -982.948 726.528 - 160 5900 -984.023 807.093 - 160 6000 -985.183 887.320 - 160 6100 -986.426 967.243 - 160 6200 -987.753 1046.898 - - Red Spectrograph - -Fiber Wave X Y - 0 5700 0.000 -1071.529 - 0 5800 0.000 -1003.339 - 0 5900 0.000 -936.001 - 0 6000 0.000 -869.467 - 0 6100 0.000 -803.692 - 0 6200 0.000 -738.636 - 0 6300 0.000 -674.258 - 0 6400 0.000 -610.520 - 0 6500 0.000 -547.390 - 0 6600 0.000 -484.831 - 0 6700 0.000 -422.815 - 0 6800 0.000 -361.310 - 0 6900 0.000 -300.287 - 0 7000 0.000 -239.721 - 0 7100 0.000 -179.584 - 0 7200 0.000 -119.852 - 0 7300 0.000 -60.501 - 0 7400 0.000 -1.508 - 0 7500 0.000 57.148 - 0 7600 0.000 115.488 - 0 7700 0.000 173.532 - 0 7800 0.000 231.300 - 0 7900 0.000 288.809 - 0 8000 0.000 346.077 - 0 8100 0.000 403.122 - 0 8200 0.000 459.958 - 0 8300 0.000 516.603 - 0 8400 0.000 573.070 - 0 8500 0.000 629.375 - 0 8600 0.000 685.530 - 0 8700 0.000 741.549 - 0 8800 0.000 797.444 - 0 8900 0.000 853.229 - 0 9000 0.000 908.914 - 0 9100 0.000 964.511 - 0 9200 0.000 1020.032 - 0 9300 0.000 1075.485 - 10 5700 -61.210 -1071.629 - 10 5800 -61.130 -1003.436 - 10 5900 -61.056 -936.095 - 10 6000 -60.988 -869.558 - 10 6100 -60.925 -803.780 - 10 6200 -60.868 -738.721 - 10 6300 -60.816 -674.340 - 10 6400 -60.769 -610.599 - 10 6500 -60.728 -547.466 - 10 6600 -60.692 -484.905 - 10 6700 -60.660 -422.885 - 10 6800 -60.634 -361.377 - 10 6900 -60.613 -300.352 - 10 7000 -60.596 -239.783 - 10 7100 -60.584 -179.643 - 10 7200 -60.576 -119.908 - 10 7300 -60.573 -60.555 - 10 7400 -60.575 -1.560 - 10 7500 -60.581 57.099 - 10 7600 -60.591 115.442 - 10 7700 -60.606 173.488 - 10 7800 -60.624 231.258 - 10 7900 -60.647 288.770 - 10 8000 -60.674 346.041 - 10 8100 -60.704 403.087 - 10 8200 -60.739 459.927 - 10 8300 -60.777 516.573 - 10 8400 -60.819 573.043 - 10 8500 -60.865 629.349 - 10 8600 -60.914 685.507 - 10 8700 -60.967 741.528 - 10 8800 -61.023 797.426 - 10 8900 -61.083 853.212 - 10 9000 -61.146 908.899 - 10 9100 -61.212 964.499 - 10 9200 -61.282 1020.021 - 10 9300 -61.355 1075.477 - 20 5700 -122.434 -1071.931 - 20 5800 -122.274 -1003.728 - 20 5900 -122.126 -936.377 - 20 6000 -121.990 -869.831 - 20 6100 -121.864 -804.044 - 20 6200 -121.750 -738.976 - 20 6300 -121.646 -674.585 - 20 6400 -121.553 -610.836 - 20 6500 -121.470 -547.694 - 20 6600 -121.398 -485.124 - 20 6700 -121.335 -423.096 - 20 6800 -121.283 -361.580 - 20 6900 -121.240 -300.546 - 20 7000 -121.206 -239.969 - 20 7100 -121.182 -179.821 - 20 7200 -121.167 -120.078 - 20 7300 -121.161 -60.717 - 20 7400 -121.164 -1.714 - 20 7500 -121.176 56.952 - 20 7600 -121.197 115.303 - 20 7700 -121.225 173.357 - 20 7800 -121.263 231.134 - 20 7900 -121.308 288.653 - 20 8000 -121.362 345.931 - 20 8100 -121.423 402.985 - 20 8200 -121.492 459.831 - 20 8300 -121.569 516.485 - 20 8400 -121.653 572.961 - 20 8500 -121.744 629.274 - 20 8600 -121.843 685.438 - 20 8700 -121.948 741.465 - 20 8800 -122.061 797.369 - 20 8900 -122.180 853.162 - 20 9000 -122.306 908.855 - 20 9100 -122.438 964.461 - 20 9200 -122.577 1019.989 - 20 9300 -122.723 1075.451 - 30 5700 -183.688 -1072.435 - 30 5800 -183.448 -1004.215 - 30 5900 -183.226 -936.848 - 30 6000 -183.021 -870.286 - 30 6100 -182.833 -804.484 - 30 6200 -182.661 -739.400 - 30 6300 -182.506 -674.995 - 30 6400 -182.366 -611.232 - 30 6500 -182.242 -548.074 - 30 6600 -182.133 -485.490 - 30 6700 -182.039 -423.448 - 30 6800 -181.960 -361.918 - 30 6900 -181.896 -300.870 - 30 7000 -181.845 -240.279 - 30 7100 -181.809 -180.118 - 30 7200 -181.787 -120.362 - 30 7300 -181.778 -60.987 - 30 7400 -181.782 -1.971 - 30 7500 -181.800 56.708 - 30 7600 -181.831 115.071 - 30 7700 -181.874 173.138 - 30 7800 -181.930 230.927 - 30 7900 -181.998 288.458 - 30 8000 -182.078 345.748 - 30 8100 -182.170 402.814 - 30 8200 -182.273 459.671 - 30 8300 -182.388 516.336 - 30 8400 -182.514 572.824 - 30 8500 -182.651 629.148 - 30 8600 -182.799 685.322 - 30 8700 -182.957 741.361 - 30 8800 -183.126 797.275 - 30 8900 -183.304 853.078 - 30 9000 -183.493 908.782 - 30 9100 -183.692 964.397 - 30 9200 -183.900 1019.935 - 30 9300 -184.118 1075.407 - 40 5700 -244.985 -1073.139 - 40 5800 -244.665 -1004.897 - 40 5900 -244.369 -937.508 - 40 6000 -244.096 -870.924 - 40 6100 -243.845 -805.101 - 40 6200 -243.616 -739.995 - 40 6300 -243.409 -675.569 - 40 6400 -243.222 -611.785 - 40 6500 -243.057 -548.607 - 40 6600 -242.912 -486.003 - 40 6700 -242.786 -423.941 - 40 6800 -242.681 -362.391 - 40 6900 -242.595 -301.324 - 40 7000 -242.528 -240.714 - 40 7100 -242.479 -180.533 - 40 7200 -242.449 -120.759 - 40 7300 -242.437 -61.365 - 40 7400 -242.443 -2.331 - 40 7500 -242.467 56.366 - 40 7600 -242.507 114.746 - 40 7700 -242.565 172.830 - 40 7800 -242.639 230.637 - 40 7900 -242.730 288.185 - 40 8000 -242.836 345.492 - 40 8100 -242.959 402.574 - 40 8200 -243.097 459.447 - 40 8300 -243.250 516.128 - 40 8400 -243.417 572.631 - 40 8500 -243.600 628.971 - 40 8600 -243.797 685.161 - 40 8700 -244.007 741.214 - 40 8800 -244.232 797.143 - 40 8900 -244.470 852.961 - 40 9000 -244.722 908.678 - 40 9100 -244.986 964.308 - 40 9200 -245.264 1019.860 - 40 9300 -245.554 1075.345 - 50 5700 -306.340 -1074.046 - 50 5800 -305.940 -1005.774 - 50 5900 -305.570 -938.357 - 50 6000 -305.228 -871.745 - 50 6100 -304.915 -805.893 - 50 6200 -304.629 -740.761 - 50 6300 -304.370 -676.308 - 50 6400 -304.137 -612.497 - 50 6500 -303.930 -549.293 - 50 6600 -303.748 -486.663 - 50 6700 -303.592 -424.575 - 50 6800 -303.460 -363.000 - 50 6900 -303.352 -301.908 - 50 7000 -303.268 -241.273 - 50 7100 -303.207 -181.068 - 50 7200 -303.169 -121.269 - 50 7300 -303.154 -61.853 - 50 7400 -303.162 -2.795 - 50 7500 -303.191 55.925 - 50 7600 -303.241 114.328 - 50 7700 -303.313 172.435 - 50 7800 -303.406 230.264 - 50 7900 -303.519 287.833 - 50 8000 -303.652 345.161 - 50 8100 -303.804 402.265 - 50 8200 -303.976 459.159 - 50 8300 -304.167 515.860 - 50 8400 -304.376 572.384 - 50 8500 -304.604 628.743 - 50 8600 -304.850 684.952 - 50 8700 -305.113 741.025 - 50 8800 -305.393 796.973 - 50 8900 -305.691 852.809 - 50 9000 -306.005 908.545 - 50 9100 -306.335 964.192 - 50 9200 -306.682 1019.762 - 50 9300 -307.044 1075.265 - 60 5700 -367.768 -1075.154 - 60 5800 -367.288 -1006.847 - 60 5900 -366.844 -939.394 - 60 6000 -366.434 -872.748 - 60 6100 -366.057 -806.863 - 60 6200 -365.714 -741.697 - 60 6300 -365.403 -677.210 - 60 6400 -365.123 -613.367 - 60 6500 -364.875 -550.131 - 60 6600 -364.657 -487.469 - 60 6700 -364.469 -425.350 - 60 6800 -364.310 -363.744 - 60 6900 -364.181 -302.622 - 60 7000 -364.080 -241.957 - 60 7100 -364.007 -181.723 - 60 7200 -363.961 -121.894 - 60 7300 -363.943 -62.449 - 60 7400 -363.951 -3.363 - 60 7500 -363.986 55.386 - 60 7600 -364.047 113.817 - 60 7700 -364.132 171.951 - 60 7800 -364.243 229.807 - 60 7900 -364.378 287.403 - 60 8000 -364.537 344.757 - 60 8100 -364.720 401.886 - 60 8200 -364.926 458.806 - 60 8300 -365.154 515.532 - 60 8400 -365.405 572.080 - 60 8500 -365.678 628.464 - 60 8600 -365.972 684.697 - 60 8700 -366.288 740.792 - 60 8800 -366.624 796.764 - 60 8900 -366.980 852.623 - 60 9000 -367.357 908.381 - 60 9100 -367.753 964.051 - 60 9200 -368.168 1019.642 - 60 9300 -368.603 1075.167 - 70 5700 -429.283 -1076.465 - 70 5800 -428.723 -1008.116 - 70 5900 -428.204 -940.622 - 70 6000 -427.726 -873.934 - 70 6100 -427.286 -808.009 - 70 6200 -426.886 -742.803 - 70 6300 -426.523 -678.278 - 70 6400 -426.196 -614.396 - 70 6500 -425.906 -551.123 - 70 6600 -425.652 -488.424 - 70 6700 -425.432 -426.268 - 70 6800 -425.247 -364.625 - 70 6900 -425.096 -303.467 - 70 7000 -424.978 -242.766 - 70 7100 -424.892 -182.497 - 70 7200 -424.839 -122.634 - 70 7300 -424.818 -63.154 - 70 7400 -424.827 -4.034 - 70 7500 -424.867 54.747 - 70 7600 -424.937 113.211 - 70 7700 -425.037 171.377 - 70 7800 -425.165 229.265 - 70 7900 -425.322 286.893 - 70 8000 -425.508 344.278 - 70 8100 -425.720 401.437 - 70 8200 -425.960 458.387 - 70 8300 -426.226 515.143 - 70 8400 -426.518 571.720 - 70 8500 -426.835 628.132 - 70 8600 -427.178 684.393 - 70 8700 -427.545 740.517 - 70 8800 -427.937 796.515 - 70 8900 -428.352 852.401 - 70 9000 -428.790 908.186 - 70 9100 -429.252 963.882 - 70 9200 -429.736 1019.499 - 70 9300 -430.242 1075.049 - 80 5700 -490.900 -1077.979 - 80 5800 -490.259 -1009.581 - 80 5900 -489.666 -942.039 - 80 6000 -489.119 -875.304 - 80 6100 -488.617 -809.332 - 80 6200 -488.159 -744.081 - 80 6300 -487.743 -679.511 - 80 6400 -487.370 -615.585 - 80 6500 -487.039 -552.268 - 80 6600 -486.748 -489.526 - 80 6700 -486.497 -427.327 - 80 6800 -486.285 -365.642 - 80 6900 -486.112 -304.443 - 80 7000 -485.976 -243.701 - 80 7100 -485.878 -183.391 - 80 7200 -485.817 -123.488 - 80 7300 -485.792 -63.969 - 80 7400 -485.802 -4.810 - 80 7500 -485.847 54.009 - 80 7600 -485.927 112.511 - 80 7700 -486.040 170.715 - 80 7800 -486.186 228.639 - 80 7900 -486.365 286.303 - 80 8000 -486.576 343.724 - 80 8100 -486.818 400.918 - 80 8200 -487.091 457.903 - 80 8300 -487.395 514.693 - 80 8400 -487.728 571.303 - 80 8500 -488.090 627.748 - 80 8600 -488.481 684.042 - 80 8700 -488.899 740.197 - 80 8800 -489.346 796.227 - 80 8900 -489.819 852.144 - 80 9000 -490.320 907.960 - 80 9100 -490.846 963.686 - 80 9200 -491.399 1019.333 - 80 9300 -491.977 1074.912 - 90 5700 -552.632 -1079.697 - 90 5800 -551.911 -1011.243 - 90 5900 -551.243 -943.646 - 90 6000 -550.628 -876.858 - 90 6100 -550.062 -810.834 - 90 6200 -549.547 -745.531 - 90 6300 -549.079 -680.910 - 90 6400 -548.660 -616.934 - 90 6500 -548.286 -553.567 - 90 6600 -547.959 -490.776 - 90 6700 -547.676 -428.529 - 90 6800 -547.437 -366.797 - 90 6900 -547.242 -305.550 - 90 7000 -547.089 -244.762 - 90 7100 -546.979 -184.406 - 90 7200 -546.909 -124.459 - 90 7300 -546.880 -64.895 - 90 7400 -546.891 -5.692 - 90 7500 -546.941 53.171 - 90 7600 -547.030 111.716 - 90 7700 -547.157 169.962 - 90 7800 -547.320 227.928 - 90 7900 -547.521 285.632 - 90 8000 -547.757 343.094 - 90 8100 -548.029 400.328 - 90 8200 -548.335 457.351 - 90 8300 -548.675 514.180 - 90 8400 -549.049 570.828 - 90 8500 -549.455 627.311 - 90 8600 -549.893 683.641 - 90 8700 -550.364 739.833 - 90 8800 -550.865 795.899 - 90 8900 -551.396 851.851 - 90 9000 -551.958 907.701 - 90 9100 -552.550 963.461 - 90 9200 -553.170 1019.142 - 90 9300 -553.820 1074.755 - 100 5700 -614.495 -1081.618 - 100 5800 -613.693 -1013.102 - 100 5900 -612.951 -945.444 - 100 6000 -612.266 -878.597 - 100 6100 -611.638 -812.514 - 100 6200 -611.064 -747.153 - 100 6300 -610.545 -682.475 - 100 6400 -610.078 -618.443 - 100 6500 -609.663 -555.021 - 100 6600 -609.299 -492.175 - 100 6700 -608.984 -429.874 - 100 6800 -608.718 -368.089 - 100 6900 -608.501 -306.790 - 100 7000 -608.331 -245.950 - 100 7100 -608.207 -185.543 - 100 7200 -608.129 -125.545 - 100 7300 -608.096 -65.931 - 100 7400 -608.108 -6.679 - 100 7500 -608.163 52.232 - 100 7600 -608.260 110.825 - 100 7700 -608.400 169.118 - 100 7800 -608.581 227.130 - 100 7900 -608.803 284.881 - 100 8000 -609.064 342.387 - 100 8100 -609.365 399.666 - 100 8200 -609.704 456.733 - 100 8300 -610.080 513.604 - 100 8400 -610.494 570.295 - 100 8500 -610.944 626.819 - 100 8600 -611.430 683.191 - 100 8700 -611.951 739.423 - 100 8800 -612.507 795.529 - 100 8900 -613.096 851.520 - 100 9000 -613.719 907.409 - 100 9100 -614.375 963.208 - 100 9200 -615.064 1018.927 - 100 9300 -615.784 1074.577 - 110 5700 -676.503 -1083.745 - 110 5800 -675.620 -1015.160 - 110 5900 -674.802 -947.434 - 110 6000 -674.049 -880.520 - 110 6100 -673.357 -814.373 - 110 6200 -672.726 -748.948 - 110 6300 -672.154 -684.207 - 110 6400 -671.640 -620.113 - 110 6500 -671.183 -556.630 - 110 6600 -670.781 -493.724 - 110 6700 -670.435 -431.364 - 110 6800 -670.142 -369.519 - 110 6900 -669.902 -308.162 - 110 7000 -669.715 -247.265 - 110 7100 -669.578 -186.802 - 110 7200 -669.491 -126.748 - 110 7300 -669.454 -67.079 - 110 7400 -669.466 -7.773 - 110 7500 -669.525 51.192 - 110 7600 -669.632 109.837 - 110 7700 -669.784 168.182 - 110 7800 -669.982 226.246 - 110 7900 -670.224 284.047 - 110 8000 -670.511 341.603 - 110 8100 -670.840 398.931 - 110 8200 -671.211 456.046 - 110 8300 -671.624 512.965 - 110 8400 -672.078 569.703 - 110 8500 -672.571 626.273 - 110 8600 -673.104 682.690 - 110 8700 -673.676 738.967 - 110 8800 -674.286 795.117 - 110 8900 -674.933 851.152 - 110 9000 -675.617 907.084 - 110 9100 -676.337 962.925 - 110 9200 -677.093 1018.686 - 110 9300 -677.884 1074.378 - 120 5700 -738.670 -1086.077 - 120 5800 -737.706 -1017.416 - 120 5900 -736.813 -949.617 - 120 6000 -735.989 -882.630 - 120 6100 -735.234 -816.411 - 120 6200 -734.545 -750.917 - 120 6300 -733.920 -686.107 - 120 6400 -733.359 -621.945 - 120 6500 -732.860 -558.394 - 120 6600 -732.421 -495.422 - 120 6700 -732.043 -432.997 - 120 6800 -731.723 -371.089 - 120 6900 -731.460 -309.668 - 120 7000 -731.255 -248.708 - 120 7100 -731.105 -188.183 - 120 7200 -731.009 -128.068 - 120 7300 -730.968 -68.340 - 120 7400 -730.979 -8.974 - 120 7500 -731.043 50.050 - 120 7600 -731.157 108.752 - 120 7700 -731.322 167.154 - 120 7800 -731.537 225.274 - 120 7900 -731.800 283.130 - 120 8000 -732.110 340.741 - 120 8100 -732.468 398.122 - 120 8200 -732.871 455.290 - 120 8300 -733.320 512.262 - 120 8400 -733.813 569.050 - 120 8500 -734.350 625.671 - 120 8600 -734.930 682.138 - 120 8700 -735.551 738.464 - 120 8800 -736.215 794.662 - 120 8900 -736.919 850.745 - 120 9000 -737.663 906.724 - 120 9100 -738.447 962.611 - 120 9200 -739.271 1018.418 - 120 9300 -740.133 1074.156 - 130 5700 -801.011 -1088.617 - 130 5800 -799.964 -1019.873 - 130 5900 -798.995 -951.993 - 130 6000 -798.102 -884.927 - 130 6100 -797.283 -818.630 - 130 6200 -796.536 -753.060 - 130 6300 -795.858 -688.175 - 130 6400 -795.249 -623.939 - 130 6500 -794.708 -560.316 - 130 6600 -794.232 -497.272 - 130 6700 -793.821 -434.776 - 130 6800 -793.474 -372.798 - 130 6900 -793.188 -311.308 - 130 7000 -792.964 -250.281 - 130 7100 -792.801 -189.689 - 130 7200 -792.696 -129.507 - 130 7300 -792.650 -69.713 - 130 7400 -792.661 -10.283 - 130 7500 -792.729 48.804 - 130 7600 -792.852 107.569 - 130 7700 -793.029 166.033 - 130 7800 -793.259 224.213 - 130 7900 -793.542 282.130 - 130 8000 -793.877 339.799 - 130 8100 -794.262 397.239 - 130 8200 -794.697 454.465 - 130 8300 -795.182 511.492 - 130 8400 -795.714 568.337 - 130 8500 -796.293 625.013 - 130 8600 -796.919 681.534 - 130 8700 -797.591 737.913 - 130 8800 -798.307 794.164 - 130 8900 -799.068 850.298 - 130 9000 -799.873 906.329 - 130 9100 -800.721 962.267 - 130 9200 -801.611 1018.124 - 130 9300 -802.543 1073.911 - 140 5700 -863.541 -1091.365 - 140 5800 -862.411 -1022.531 - 140 5900 -861.365 -954.563 - 140 6000 -860.402 -887.412 - 140 6100 -859.518 -821.031 - 140 6200 -858.712 -755.378 - 140 6300 -857.982 -690.412 - 140 6400 -857.325 -626.096 - 140 6500 -856.741 -562.395 - 140 6600 -856.228 -499.273 - 140 6700 -855.784 -436.701 - 140 6800 -855.409 -374.647 - 140 6900 -855.100 -313.084 - 140 7000 -854.858 -251.983 - 140 7100 -854.680 -191.318 - 140 7200 -854.567 -131.066 - 140 7300 -854.516 -71.201 - 140 7400 -854.526 -11.702 - 140 7500 -854.597 47.454 - 140 7600 -854.727 106.287 - 140 7700 -854.916 164.817 - 140 7800 -855.162 223.063 - 140 7900 -855.465 281.044 - 140 8000 -855.824 338.778 - 140 8100 -856.236 396.280 - 140 8200 -856.703 453.568 - 140 8300 -857.222 510.657 - 140 8400 -857.793 567.561 - 140 8500 -858.415 624.296 - 140 8600 -859.087 680.876 - 140 8700 -859.808 737.313 - 140 8800 -860.577 793.620 - 140 8900 -861.395 849.811 - 140 9000 -862.259 905.897 - 140 9100 -863.170 961.890 - 140 9200 -864.127 1017.801 - 140 9300 -865.130 1073.643 - 150 5700 -926.273 -1094.322 - 150 5800 -925.060 -1025.391 - 150 5900 -923.937 -957.329 - 150 6000 -922.903 -890.086 - 150 6100 -921.954 -823.615 - 150 6200 -921.089 -757.873 - 150 6300 -920.305 -692.820 - 150 6400 -919.600 -628.418 - 150 6500 -918.973 -564.632 - 150 6600 -918.421 -501.428 - 150 6700 -917.945 -438.773 - 150 6800 -917.541 -376.639 - 150 6900 -917.210 -314.995 - 150 7000 -916.949 -253.816 - 150 7100 -916.757 -193.074 - 150 7200 -916.634 -132.744 - 150 7300 -916.577 -72.804 - 150 7400 -916.586 -13.230 - 150 7500 -916.660 45.999 - 150 7600 -916.798 104.904 - 150 7700 -916.998 163.506 - 150 7800 -917.260 221.823 - 150 7900 -917.582 279.873 - 150 8000 -917.964 337.675 - 150 8100 -918.404 395.245 - 150 8200 -918.901 452.599 - 150 8300 -919.455 509.753 - 150 8400 -920.064 566.723 - 150 8500 -920.728 623.521 - 150 8600 -921.445 680.163 - 150 8700 -922.215 736.662 - 150 8800 -923.037 793.031 - 150 8900 -923.911 849.282 - 150 9000 -924.835 905.428 - 150 9100 -925.809 961.480 - 150 9200 -926.833 1017.450 - 150 9300 -927.906 1073.350 - 160 5700 -989.224 -1097.491 - 160 5800 -987.925 -1028.456 - 160 5900 -986.725 -960.293 - 160 6000 -985.619 -892.950 - 160 6100 -984.605 -826.382 - 160 6200 -983.680 -760.545 - 160 6300 -982.841 -695.399 - 160 6400 -982.088 -630.905 - 160 6500 -981.417 -567.029 - 160 6600 -980.828 -503.736 - 160 6700 -980.318 -440.994 - 160 6800 -979.886 -378.773 - 160 6900 -979.530 -317.044 - 160 7000 -979.250 -255.780 - 160 7100 -979.044 -194.955 - 160 7200 -978.910 -134.544 - 160 7300 -978.848 -74.523 - 160 7400 -978.856 -14.870 - 160 7500 -978.933 44.438 - 160 7600 -979.078 103.420 - 160 7700 -979.289 162.098 - 160 7800 -979.565 220.490 - 160 7900 -979.907 278.615 - 160 8000 -980.311 336.490 - 160 8100 -980.778 394.132 - 160 8200 -981.305 451.557 - 160 8300 -981.893 508.781 - 160 8400 -982.540 565.820 - 160 8500 -983.245 622.686 - 160 8600 -984.008 679.396 - 160 8700 -984.827 735.961 - 160 8800 -985.701 792.395 - 160 8900 -986.631 848.711 - 160 9000 -987.614 904.921 - 160 9100 -988.651 961.037 - 160 9200 -989.742 1017.070 - 160 9300 -990.885 1073.032 - diff --git a/old_bin/filecheck.py b/old_bin/filecheck.py deleted file mode 100755 index a0964f35c..000000000 --- a/old_bin/filecheck.py +++ /dev/null @@ -1,134 +0,0 @@ -#!/usr/bin/env python - -import os, sys -import sxpar, putils - -""" -filecheck.py: - -filecheck.py checks some attribute of a file and returns "true" or "false" based -on if the attribute is... true or false. - -This file it pretty much a grab bag of hacks. To do these tests correctly would -either require adding dependencies just for these simple tests or duplicating lots -of code. - -The input files can be either normal or gz files. - -Written by Gary Kushner (LBL). Dec 2009. - -""" - -#### -## Globals Block. -#### - -# - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print usageCMD + "\n\nusage: science|boss|test file" - print \ - """ - science: - return "true" if the fits file is a science frame. This - is determined by flavor=science in the header. If flavor - is not in the header, "false" is returned. - - test: - return "true" if the fits file is a test frame. This is - determined by quality=test in the header. If quality - is not in the header, "false" is returned - - excellent: - return "true" if the fits file is a excellent frame. This is - determined by quality=excellent in the header. If quality - is not in the header, "true" is returned - - boss: - return "true" if the plPlugMapM file is a boss frame. - this is determined by instrument=boss in the header. - If instrument is not in the header, "false" is returned. - - File can be uncompressed or gz. - """ - sys.exit(1) - - -#### -def science(fits): - """return True if the fits file is a science frame""" - v = sxpar.sxpar(fits, "flavor") - if len(v) == 0: - return False - return v[0].lower() == "science" - - - -#### -def excellent(fits): - """return True if the fits file is an excellent frame""" - v = sxpar.sxpar(fits, "quality") - if len(v) == 0: - return True - return v[0].lower() == "excellent" - - -#### -def boss(fits): - """return True if the plugmap file is for a boss frame""" - - key = "instruments" - keyl = len(key) - value = "boss" - - lines = putils.openRead(fits).readlines(); - for line in lines: - if line[0:keyl].lower() == key: - return line.lower().count(value) > 0 - return False - -#### -def test(fits): - """return True if the fits file is a test frame""" - - v = sxpar.sxpar(fits, "quality") - if len(v) == 0: - return False - return v[0].lower() == "test" - - -#### -def main(argv): - """Check a fits file and display 'true' or 'false'""" - - if len(argv) != 2: - usage() - cmd = argv[0] - fits = argv[1] - - if cmd == "science": - rv = science(fits) - elif cmd == "test": - rv = test(fits) - elif cmd == "excellent": - rv = excellent(fits) - elif cmd == "boss": - rv = boss(fits) - else: - usage() - - if rv == True: - print "true" - else: - print "false" - -### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) - diff --git a/old_bin/killAndChildren.py b/old_bin/killAndChildren.py deleted file mode 100755 index b9adb9e4e..000000000 --- a/old_bin/killAndChildren.py +++ /dev/null @@ -1,93 +0,0 @@ -#!/usr/bin/env python - -import os, sys, commands, time - -""" -killChildren: - -Something of a quick hack to kill the children of a process. One problem is that -if processes are creating new processes as we are kill them, not everything will be -cleaned up. - -Written by Gary Kushner (LBL). Sept 2010. - -""" - - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print "usage: "+ usageCMD + " pid" - - sys.exit(1) - - - -def kill(pid): - # A bit of recursion will happen here - killChildren(pid) - - # Try SIGINT - print "Sending SIGINT to process %d ..." % pid - sys.stdout.flush() - try: - os.kill(int(pid), 2) - except: - pass - - # If still running, sleep and check again - rc = commands.getstatusoutput("ps ax -o pid | grep %d" % pid) - if len(rc[1]) != 0: - time.sleep(5) - - # SIGKILL if still alive - rc = commands.getstatusoutput("ps ax -o pid | grep %d" % pid) - if len(rc[1]) != 0: - print "Sending SIGKILL to process %d..." % pid - sys.stdout.flush() - try: - os.kill(pid, 9) - except: - pass - - # If still running, sleep and check again - rc = commands.getstatusoutput("ps ax -o pid | grep %d" % pid) - if len(rc[1]) != 0: - time.sleep(5) - rc = commands.getstatusoutput("ps ax -o pid | grep %d" % pid) - if len(rc[1]) != 0: - print "** Could not kill process %d **" % pid - - -def killChildren(pid): - # Get children - rc = commands.getstatusoutput("ps ax -o pid,ppid | grep %d | awk \"{ if ( \$2 == %d ) { print \$1 }}\"" % (pid,pid)) - if len(rc[1]) == 0: - print "No children of %d" % pid - return - - pids = rc[1].split("\n") - print "Killing children of %d: %s" % (pid, str(pids)) - for p in pids: - kill(int(p)) - - -#### -def main(argv): - if len(argv) != 1: - usage() - pid = int(argv[0]) - - kill(pid) - -### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) - print os.path.basename(sys.argv[0]) + " finished running!" - - diff --git a/old_bin/knownMissing.py b/old_bin/knownMissing.py deleted file mode 100755 index 254a01692..000000000 --- a/old_bin/knownMissing.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/env python2.7 -# -*- coding: utf-8 -*- -# -# $Id: knownMissing.py 50436 2013-01-16 20:06:24Z weaver $ -# -"""Finds files that should be present but are not. -""" -# -# Imports -# -from __future__ import print_function -#import numpy as np -import pyfits -import argparse -import os -import os.path -import sys -# -# Top-level definitions -# -__author__ = 'Benjamin Alan Weaver ' -__version__ = '$Revision: 50436 $'.split(': ')[1].split()[0] -__docformat__ = 'restructuredtext en' -# -# Functions -# -def version(headurl="$HeadURL: https://svn.sdss.org/repo/eboss/idlspec2d/tags/v5_11_0/bin/knownMissing.py $"): - """Returns a version string based on the value of the svn HeadURL keyword. - - Parameters - ---------- - headurl : str, optional - A HeadURL string set by svn. - - Returns - ------- - myversion : str - A version string. - - Examples - -------- - >>> transfer.common.version() - trunk - """ - if headurl.find('$HeadURL:') < 0: - raise ValueError("The input does not appear to be a HeadURL string!") - if headurl.find('trunk') > 0: - myversion = 'trunk' - elif headurl.find('tags') > 0: - myversion = headurl[headurl.find('tags')+5:].split('/')[0] - elif headurl.find('branches') > 0: - myversion = headurl[headurl.find('branches')+9:].split('/')[0] - else: - myversion = 'unknown' - return myversion -# -# -# -def main(): - """Main program. - """ - # - # Get options - # - parser = argparse.ArgumentParser(description=__doc__,prog=os.path.basename(sys.argv[0])) - parser.add_argument('-V','--version',action='version', - version=("%(prog)s {0}".format(version())), - help='Print version information and exit.') - parser.add_argument('-v', '--verbose', action='store_true', dest='verbose', - help='Print extra information.') - #parser.add_argument('-t', '--test', action='store_true', dest='test', - # help='Do not actually run commands (implies --verbose).') - parser.add_argument('-m', '--marginal', action='store_true', dest='marginal', - help='Analyze marginal plates instead of good plates.') - parser.add_argument('-r', '--release', action='store', dest='release', - default=9, type=int, help='Assume this data release.', - metavar='RELEASE') - options = parser.parse_args() - # - # Read the plates file. - # - platesfile = os.path.join(os.getenv('SPECTRO_REDUX'),'plates-SDSS-dr{0:d}.fits'.format(options.release)) - p = pyfits.open(platesfile) - plates = p[1].data - if options.marginal: - goodplates = plates['PLATEQUALITY'] == 'marginal' - else: - goodplates = plates['PLATEQUALITY'] == 'good' - for run2d,plate,mjd in zip(plates['RUN2D'][goodplates],plates['PLATE'][goodplates],plates['MJD'][goodplates]): - pmjd = "{0:04d}-{1:05d}".format(int(plate),int(mjd)) - files1 = [os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'{0}-{1}.fits'.format(f,pmjd)) for f in ('spFluxdistort','spPlate','spZall','spZbest','spZline')] - for f in files1: - if not os.path.isfile(f): - print("{0} MISSING!".format(f)) - if options.verbose: - print("Examining {0}...".format(files1[1])) - sp = pyfits.open(files1[1]) - hdr = sp[0].header - expid = list() - while hdr.has_key("EXPID{0:02d}".format(len(expid)+1)): - foo = hdr["EXPID{0:02d}".format(len(expid)+1)] - expid.append(foo) - sp.close() - for e in expid: - ee = e.split('-') - arc = os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'spArc-{0}-{1}.fits.gz'.format(ee[0],ee[3])) - if not os.path.isfile(arc): - print("{0} MISSING!".format(arc)) - cframe = os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'spCFrame-{0}-{1}.fits'.format(ee[0],ee[1])) - if not os.path.isfile(cframe): - print("{0} MISSING!".format(cframe)) - flat = os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'spFlat-{0}-{1}.fits.gz'.format(ee[0],ee[2])) - if not os.path.isfile(flat): - print("{0} MISSING!".format(flat)) - files2 = [os.path.join(os.getenv('SPECTRO_REDUX'),run2d,'{0:04d}'.format(int(plate)),'{0}-{1}-{2}.fits.gz'.format(f,ee[0],ee[1])) for f in ('spFluxcalib','spFluxcorr','spFrame')] - for f in files2: - if not os.path.isfile(f): - print("{0} MISSING!".format(f)) - p.close() - return -# -# -# -if __name__ == '__main__': - main() diff --git a/old_bin/loadSN2Value b/old_bin/loadSN2Value deleted file mode 100755 index f9cb57410..000000000 --- a/old_bin/loadSN2Value +++ /dev/null @@ -1,390 +0,0 @@ -#!/usr/bin/env python - -import os, os.path, sys, time, getopt, decimal -import sxpar - -""" -loadSN2Value: - -Load a (s/n)^2 value into plateDb. If the exposure is already present, an error will -occur unless the --update option is present. - -Much of the SQLAlchemy is from Demitri. - -Written by Gary Kushner (LBL). Dec 2009. - -""" - -try: - from sdss.internal.database.connections.APODatabaseAdminLocalConnection import db # access to engine, metadata, Session - from sdss.internal.database.apo.platedb.ModelClasses import * - import sqlalchemy -except: - print '\nMake sure to "setup sdss_python_module" before running !!!' - print '\n\n' - raise - - -#### -class Config: - """Config Info""" - - def __init__(self): - self.verbose = False - self.update = False - self.fits = None - self.plugmap = None - - def __str__(self): - return ("Verbose: " + str(self.verbose) + "\n" + - "Update: " + str(self.update) + "\n" + - "fits: " + self.fits + "\n" + - "plugmap: " + self.plugmap); - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print "usage:" - print "\t%s [--update] [-v] fits-file plugmap-file" % usageCMD - print " " - print "The fits file is the science frame output from apo-reduce." - print " " - print "An error will occur if the exposure has already been processed, unless" - print "--update is specified." - print " " - print "Add -v for verbose output" - - sys.exit(1) - - -#### -def parseCmdLine(args): - """Parse command line arguments and return a Config""" - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(sys.argv[1:], "v", "update") - except: - usage() - - if len(pargs) != 2: - print "wrong number of files.\n" - usage() - - cfg = Config() - cfg.fits = pargs[0] - cfg.plugmap = os.path.basename(pargs[1]) - - # Fill in the config - for (opt, value) in opts: - if opt == "-v": - cfg.verbose = True - if opt == "--update": - cfg.update = True - - # Display config values if verbose - if (cfg.verbose): - print "Config values: \n" + str(cfg) - - return cfg - - -#### -def getSN2(cfg): - """Return the sn2 of the fits file as a string. The SN2 is stored in FRAMESN2""" - - sn2list = sxpar.sxpar(cfg.fits, 'FRAMESN2') - if len(sn2list) != 1: - print "WARNING: " + cfg.fits + " does not contain the header keyword FRAMESN2." - return 0.0; - - if cfg.verbose: - print "(s/n)^2 is " + sn2list[0] - - return sn2list[0] - - -#### -def getMJD(cfg): - """Return the MJD of the fits file as a string. The MJD is taken from the fits header""" - - sn2list = sxpar.sxpar(cfg.fits, 'MJD') - if len(sn2list) != 1: - print "WARNING: " + cfg.fits + " does not contain the header keyword MJD." - return "00000" - - if cfg.verbose: - print "MJD is " + sn2list[0] - - return sn2list[0] - - -#### -def getStartTime(cfg): - """Return the start time of the fits file as a string. The start time is taken from the fits header""" - - sn2list = sxpar.sxpar(cfg.fits, 'TAI-BEG') - if len(sn2list) != 1: - print "WARNING: " + cfg.fits + " does not contain the header keyword TAI-BEG." - return "0000000000.0" - - if cfg.verbose: - print "TAI-BEG is " + sn2list[0] - - return sn2list[0] - - -#### -def getExposureTime(cfg): - """Return the exposure time of the fits file as a string. The exposure time is taken from the fits header""" - - sn2list = sxpar.sxpar(cfg.fits, 'EXPTIME') - if len(sn2list) != 1: - print "WARNING: " + cfg.fits + " does not contain the header keyword EXPTIME." - return "0000.00" - - if cfg.verbose: - print "EXPTIME is " + sn2list[0] - - return sn2list[0] - - -#### -def getQualityPK(cfg): - """Return the quality of the fits file as a primarykey. The quality is taken from the fits header""" - - # Define some constants - exposureExcellent = 1 # excellent - exposureBad = 2 - exposureTest = 3 - exposureText = ["", "Excellent", "Bad", "Test"] - - quality = sxpar.sxpar(cfg.fits, 'QUALITY') - if len(quality) != 1: - print "WARNING: " + cfg.fits + " does not contain the header keyword QUALITY." - return exposureExcellent - - q = quality[0] - - if q == "excellent": - pk = exposureExcellent - elif q == "bad": - pk = exposureBad - elif q == "test": - pk = exposureTest - else: - pk = exposureExcellent - if cfg.verbose: - print "WARNING: QUALITY keyword " + q + " unknown. Using excellent." - - if cfg.verbose: - print "QUALITY is " + exposureText[pk] - - return pk - - - -#### -def getFitsInfo(cfg): - """Return the (exposure number, camera name) of the fits file (as strings)""" - - # Parse science frame name. e.g. sci-3690-b1-00105034.fits - sciParse = os.path.basename(cfg.fits).split("-") - sciPlug = str(sciParse[1]) - sciCamera = str(sciParse[2]) - sciExposure = str(sciParse[3].split(".")[0]) - - if cfg.verbose: - print ("science exposure # " + sciExposure + " for plate # " + sciPlug + - " for camera " + sciCamera) - - return (sciExposure, sciCamera) - - -#### -def addOrUpdateExposure(session, cfg): - """Add or update an exposure record with the (s/n)^2""" - - # In order to add or get an observer row, we need to get the plate pointing and the - # plugging. - try: - plPlugMap = session.query(PlPlugMapM).with_lockmode('update').filter_by(filename=cfg.plugmap).one() - platePointing = plPlugMap.platePointing() - plugging = plPlugMap.plugging - except: - print "Could not get the plPlugMapM, platePointing, or plugging! \n\n" - raise - - if cfg.verbose: - print "PlatePointing, plugging = " + str(platePointing) + ", " + str(plugging) - - # Now we see if the observation row exists yet - observation = None - try: - observation = session.query(Observation).with_lockmode('update').filter_by(plate_pointing=platePointing).filter_by(plugging=plugging).one() - except sqlalchemy.orm.exc.MultipleResultsFound: - print "More than one Observation found. Expecting only one! \n\n" - raise - except sqlalchemy.orm.exc.NoResultFound: - if cfg.verbose: - print "No existing Observation found." - pass - except KeyError: # Why do I sometimes get a key error on record not found? Ask SQLAlchemy!! - if cfg.verbose: # (it happens on multiple records on a relationship filter--unimportant really) - print "No existing Observation found. (KeyError)" - pass - except: - print "Problem querying for Observation! \n\n" - raise - else: - if cfg.verbose: - print "Found an existing observation record" - - # If we didn't find the observation, then create it. No try because we're not - # expecting any problems and if we do, the exception is about as good as we can - # report. - if observation == None: - if cfg.verbose: - print "Creating new Observation record." - observation = Observation() - session.add(observation) - observation.plate_pointing = platePointing - observation.plugging = plugging - observation.mjd = getMJD(cfg) - observation.comment = "loadSN2Value" - - # In order to deal with the exposure we need some keys into other tables - try: - (expNum, camName) = getFitsInfo(cfg) - camera = session.query(Camera).filter_by(label=camName).one() - #survey = session.query(Survey).filter_by(label="eBOSS").one() - survey = session.query(Survey).filter_by(label="BHM").one() - flavor = session.query(ExposureFlavor).filter_by(label='Science').one() -# instrument = session.query(Instrument).filter_by(pk=1).one() # boss inst always #1 - except: - print "Could not retrieve camera, survey or instrument\n\n" - raise - - # Check to see if the exposure exists - exposure = None - try: - exposure = session.query(Exposure).with_lockmode('update').filter_by(observation=observation).filter_by(exposure_no=expNum).one() - except sqlalchemy.orm.exc.MultipleResultsFound: - print "More than one Exposure found. Expecting only one! \n\n" - raise - except sqlalchemy.orm.exc.NoResultFound: - if cfg.verbose: - print "No existing Exposure found." - pass - except KeyError: # Why do I get a key error on record not found? Ask SQLAlchemy!! - if cfg.verbose: - print "No existing Exposure found. (KeyError)" - pass - except: - print "Problem querying for Exposure! \n\n" - raise - else: - # We don't do updates unless asked! - if not cfg.update: - print "Exposure record already exists!" - print "Use '--update' to update the (s/n)^2 entry of an existing record\n\n" - raise LookupError("Exposure record already exists. Use --update to update") - if cfg.verbose: - print "Found an existing exposure record" - - # Create an exposure if needed - if exposure == None: - if cfg.verbose: - print "Creating new Exposure record." - exposure = Exposure() - session.add(exposure) - exposure.exposure_no = expNum - exposure.observation = observation - exposure.start_time = getStartTime(cfg) - exposure.exposure_time = getExposureTime(cfg) - exposure.camera = camera - exposure.survey = survey - exposure.flavor = flavor - exposure.comment = "" - - # We always update the quality (it can change) - exposure.exposure_status_pk = getQualityPK(cfg) - - # Check to see if the camera-frame exists - cframe = None - try: - cframe = session.query(CameraFrame).with_lockmode('update').filter_by(exposure=exposure).filter_by(camera=camera).one() - except sqlalchemy.orm.exc.MultipleResultsFound: - print "More than one CameraFrame found. Expecting only one! \n\n" - raise - except sqlalchemy.orm.exc.NoResultFound: - if cfg.verbose: - print "No existing CameraFrame found." - pass - except KeyError: # Why do I get a key error on record not found? Ask SQLAlchemy!! - if cfg.verbose: - print "No existing CameraFrame found. (KeyError)" - pass - except: - print "Problem querying for CameraFrame! \n\n" - raise - else: - # We don't do updates unless asked! - if not cfg.update: - print "CameraFrame record already exists!" - print "Use '--update' to update the (s/n)^2 entry of an existing record\n\n" - raise LookupError("CameraFrame record already exists. Use --update to update") - if cfg.verbose: - print "Found an existing CameraFrame record" - - # Create an CameraFrame if needed - if cframe == None: - if cfg.verbose: - print "Creating new CameraFrame record." - cframe = CameraFrame() - session.add(cframe) - cframe.exposure = exposure - cframe.camera = camera - cframe.survey = survey - cframe.comment = "" - - # Update comment with date of each touch - if len(cframe.comment) == 0: - cframe.comment = str(int(time.time()))+"("+str(getSN2(cfg))+")" - else: - cframe.comment = str(int(time.time()))+"("+str(getSN2(cfg))+")" + "," + cframe.comment - - # add the (s/n)^2 and we're done... - cframe.sn2 = getSN2(cfg) - - -#### -def main(args): - """Handle database connection and call the main script""" - - session = None - config = None - - try: - config = parseCmdLine(sys.argv[1:]) - session = db.Session() - session.begin() - addOrUpdateExposure(session, config) - session.commit() - except: - if session != None: - session.rollback() - raise - finally: - if session != None: - session.close() - db.engine.dispose() - -#### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) diff --git a/old_bin/loadSN2Value_dec_1_2021 b/old_bin/loadSN2Value_dec_1_2021 deleted file mode 100755 index 25adb2406..000000000 --- a/old_bin/loadSN2Value_dec_1_2021 +++ /dev/null @@ -1,390 +0,0 @@ -#!/usr/bin/env python3 - -import os, os.path, sys, time, getopt, decimal -import sxpar - -""" -loadSN2Value: - -Load a (s/n)^2 value into plateDb. If the exposure is already present, an error will -occur unless the --update option is present. - -Much of the SQLAlchemy is from Demitri. - -Written by Gary Kushner (LBL). Dec 2009. - -""" - -try: - from sdss.internal.database.connections.APODatabaseAdminLocalConnection import db # access to engine, metadata, Session - from sdss.internal.database.apo.platedb.ModelClasses import * - import sqlalchemy -except: - print('\nMake sure to "setup sdss_python_module" before running !!!') - print('\n\n') - raise - - -#### -class Config: - """Config Info""" - - def __init__(self): - self.verbose = False - self.update = False - self.fits = None - self.plugmap = None - - def __str__(self): - return ("Verbose: " + str(self.verbose) + "\n" + - "Update: " + str(self.update) + "\n" + - "fits: " + self.fits + "\n" + - "plugmap: " + self.plugmap); - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print("usage:") - print("\t%s [--update] [-v] fits-file plugmap-file" % usageCMD) - print(" ") - print("The fits file is the science frame output from apo-reduce.") - print(" ") - print("An error will occur if the exposure has already been processed, unless") - print("--update is specified.") - print(" ") - print("Add -v for verbose output") - - sys.exit(1) - - -#### -def parseCmdLine(args): - """Parse command line arguments and return a Config""" - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(sys.argv[1:], "v", "update") - except: - usage() - - if len(pargs) != 2: - print("wrong number of files.\n") - usage() - - cfg = Config() - cfg.fits = pargs[0] - cfg.plugmap = os.path.basename(pargs[1]) - - # Fill in the config - for (opt, value) in opts: - if opt == "-v": - cfg.verbose = True - if opt == "--update": - cfg.update = True - - # Display config values if verbose - if (cfg.verbose): - print("Config values: \n" + str(cfg)) - - return cfg - - -#### -def getSN2(cfg): - """Return the sn2 of the fits file as a string. The SN2 is stored in FRAMESN2""" - - sn2list = sxpar.sxpar(cfg.fits, 'FRAMESN2') - if len(sn2list) != 1: - print("WARNING: " + cfg.fits + " does not contain the header keyword FRAMESN2.") - return 0.0; - - if cfg.verbose: - print("(s/n)^2 is " + sn2list[0]) - - return sn2list[0] - - -#### -def getMJD(cfg): - """Return the MJD of the fits file as a string. The MJD is taken from the fits header""" - - sn2list = sxpar.sxpar(cfg.fits, 'MJD') - if len(sn2list) != 1: - print("WARNING: " + cfg.fits + " does not contain the header keyword MJD.") - return "00000" - - if cfg.verbose: - print("MJD is " + sn2list[0]) - - return sn2list[0] - - -#### -def getStartTime(cfg): - """Return the start time of the fits file as a string. The start time is taken from the fits header""" - - sn2list = sxpar.sxpar(cfg.fits, 'TAI-BEG') - if len(sn2list) != 1: - print("WARNING: " + cfg.fits + " does not contain the header keyword TAI-BEG.") - return "0000000000.0" - - if cfg.verbose: - print("TAI-BEG is " + sn2list[0]) - - return sn2list[0] - - -#### -def getExposureTime(cfg): - """Return the exposure time of the fits file as a string. The exposure time is taken from the fits header""" - - sn2list = sxpar.sxpar(cfg.fits, 'EXPTIME') - if len(sn2list) != 1: - print("WARNING: " + cfg.fits + " does not contain the header keyword EXPTIME.") - return "0000.00" - - if cfg.verbose: - print("EXPTIME is " + sn2list[0]) - - return sn2list[0] - - -#### -def getQualityPK(cfg): - """Return the quality of the fits file as a primarykey. The quality is taken from the fits header""" - - # Define some constants - exposureExcellent = 1 # excellent - exposureBad = 2 - exposureTest = 3 - exposureText = ["", "Excellent", "Bad", "Test"] - - quality = sxpar.sxpar(cfg.fits, 'QUALITY') - if len(quality) != 1: - print("WARNING: " + cfg.fits + " does not contain the header keyword QUALITY.") - return exposureExcellent - - q = quality[0] - - if q == "excellent": - pk = exposureExcellent - elif q == "bad": - pk = exposureBad - elif q == "test": - pk = exposureTest - else: - pk = exposureExcellent - if cfg.verbose: - print("WARNING: QUALITY keyword " + q + " unknown. Using excellent.") - - if cfg.verbose: - print("QUALITY is " + exposureText[pk]) - - return pk - - - -#### -def getFitsInfo(cfg): - """Return the (exposure number, camera name) of the fits file (as strings)""" - - # Parse science frame name. e.g. sci-3690-b1-00105034.fits - sciParse = os.path.basename(cfg.fits).split("-") - sciPlug = str(sciParse[1]) - sciCamera = str(sciParse[2]) - sciExposure = str(sciParse[3].split(".")[0]) - - if cfg.verbose: - print(("science exposure # " + sciExposure + " for plate # " + sciPlug + - " for camera " + sciCamera)) - - return (sciExposure, sciCamera) - - -#### -def addOrUpdateExposure(session, cfg): - """Add or update an exposure record with the (s/n)^2""" - - # In order to add or get an observer row, we need to get the plate pointing and the - # plugging. - try: - plPlugMap = session.query(PlPlugMapM).with_lockmode('update').filter_by(filename=cfg.plugmap).one() - platePointing = plPlugMap.platePointing() - plugging = plPlugMap.plugging - except: - print("Could not get the plPlugMapM, platePointing, or plugging! \n\n") - raise - - if cfg.verbose: - print("PlatePointing, plugging = " + str(platePointing) + ", " + str(plugging)) - - # Now we see if the observation row exists yet - observation = None - try: - observation = session.query(Observation).with_lockmode('update').filter_by(plate_pointing=platePointing).filter_by(plugging=plugging).one() - except sqlalchemy.orm.exc.MultipleResultsFound: - print("More than one Observation found. Expecting only one! \n\n") - raise - except sqlalchemy.orm.exc.NoResultFound: - if cfg.verbose: - print("No existing Observation found.") - pass - except KeyError: # Why do I sometimes get a key error on record not found? Ask SQLAlchemy!! - if cfg.verbose: # (it happens on multiple records on a relationship filter--unimportant really) - print("No existing Observation found. (KeyError)") - pass - except: - print("Problem querying for Observation! \n\n") - raise - else: - if cfg.verbose: - print("Found an existing observation record") - - # If we didn't find the observation, then create it. No try because we're not - # expecting any problems and if we do, the exception is about as good as we can - # report. - if observation == None: - if cfg.verbose: - print("Creating new Observation record.") - observation = Observation() - session.add(observation) - observation.plate_pointing = platePointing - observation.plugging = plugging - observation.mjd = getMJD(cfg) - observation.comment = "loadSN2Value" - - # In order to deal with the exposure we need some keys into other tables - try: - (expNum, camName) = getFitsInfo(cfg) - camera = session.query(Camera).filter_by(label=camName).one() - #survey = session.query(Survey).filter_by(label="eBOSS").one() - survey = session.query(Survey).filter_by(label="BHM").one() - flavor = session.query(ExposureFlavor).filter_by(label='Science').one() -# instrument = session.query(Instrument).filter_by(pk=1).one() # boss inst always #1 - except: - print("Could not retrieve camera, survey or instrument\n\n") - raise - - # Check to see if the exposure exists - exposure = None - try: - exposure = session.query(Exposure).with_lockmode('update').filter_by(observation=observation).filter_by(exposure_no=expNum).one() - except sqlalchemy.orm.exc.MultipleResultsFound: - print("More than one Exposure found. Expecting only one! \n\n") - raise - except sqlalchemy.orm.exc.NoResultFound: - if cfg.verbose: - print("No existing Exposure found.") - pass - except KeyError: # Why do I get a key error on record not found? Ask SQLAlchemy!! - if cfg.verbose: - print("No existing Exposure found. (KeyError)") - pass - except: - print("Problem querying for Exposure! \n\n") - raise - else: - # We don't do updates unless asked! - if not cfg.update: - print("Exposure record already exists!") - print("Use '--update' to update the (s/n)^2 entry of an existing record\n\n") - raise LookupError("Exposure record already exists. Use --update to update") - if cfg.verbose: - print("Found an existing exposure record") - - # Create an exposure if needed - if exposure == None: - if cfg.verbose: - print("Creating new Exposure record.") - exposure = Exposure() - session.add(exposure) - exposure.exposure_no = expNum - exposure.observation = observation - exposure.start_time = getStartTime(cfg) - exposure.exposure_time = getExposureTime(cfg) - exposure.camera = camera - exposure.survey = survey - exposure.flavor = flavor - exposure.comment = "" - - # We always update the quality (it can change) - exposure.exposure_status_pk = getQualityPK(cfg) - - # Check to see if the camera-frame exists - cframe = None - try: - cframe = session.query(CameraFrame).with_lockmode('update').filter_by(exposure=exposure).filter_by(camera=camera).one() - except sqlalchemy.orm.exc.MultipleResultsFound: - print("More than one CameraFrame found. Expecting only one! \n\n") - raise - except sqlalchemy.orm.exc.NoResultFound: - if cfg.verbose: - print("No existing CameraFrame found.") - pass - except KeyError: # Why do I get a key error on record not found? Ask SQLAlchemy!! - if cfg.verbose: - print("No existing CameraFrame found. (KeyError)") - pass - except: - print("Problem querying for CameraFrame! \n\n") - raise - else: - # We don't do updates unless asked! - if not cfg.update: - print("CameraFrame record already exists!") - print("Use '--update' to update the (s/n)^2 entry of an existing record\n\n") - raise LookupError("CameraFrame record already exists. Use --update to update") - if cfg.verbose: - print("Found an existing CameraFrame record") - - # Create an CameraFrame if needed - if cframe == None: - if cfg.verbose: - print("Creating new CameraFrame record.") - cframe = CameraFrame() - session.add(cframe) - cframe.exposure = exposure - cframe.camera = camera - cframe.survey = survey - cframe.comment = "" - - # Update comment with date of each touch - if len(cframe.comment) == 0: - cframe.comment = str(int(time.time()))+"("+str(getSN2(cfg))+")" - else: - cframe.comment = str(int(time.time()))+"("+str(getSN2(cfg))+")" + "," + cframe.comment - - # add the (s/n)^2 and we're done... - cframe.sn2 = getSN2(cfg) - - -#### -def main(args): - """Handle database connection and call the main script""" - - session = None - config = None - - try: - config = parseCmdLine(sys.argv[1:]) - session = db.Session() - session.begin() - addOrUpdateExposure(session, config) - session.commit() - except: - if session != None: - session.rollback() - raise - finally: - if session != None: - session.close() - db.engine.dispose() - -#### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) diff --git a/old_bin/putils.py b/old_bin/putils.py deleted file mode 100644 index e1f19e215..000000000 --- a/old_bin/putils.py +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env python - -import sys, os, os, subprocess -import string, imp, time, shlex -import gzip - -""" -putils is a set of miscellaneous python tools. - -Written by Gary Kushner (LBL). Nov 2009. Latest update April 2010. -""" - -def searchPath(name, paths): - """Search a path for a name (file, direcory, link, etc). Return the absolute - path to the found file or None""" - for path in paths: - if os.path.exists(os.path.join(path, name)): - return os.path.abspath(os.path.join(path, name)) - return None - -def loadModuleRaw(module): - """import a python module using a raw file name (doesn't need to end in .py)""" - path = searchPath(module, sys.path) - if path == None: - raise ImportError("No module named " + module) - return imp.load_source(module, path) - -def runCommand(cmd, echo=False, logCmd=None, prefix="", shell=False): - """Run a command with the option to asynchronously display or log output. - - If shell=False, the cmd needs to be a list, but if you pass in a string - it will be parsed into a list. - - echo will echo output to stdout. - - logCmd is a function pointer to use to put the output into a log. - - Returns (return code, output).""" - - output = "" - - # Handle the command parsing - if isinstance(cmd, str) and not shell: - cmd = [c for c in shlex.split(cmd)] - - # Call the process - p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, - shell=shell) - - # Process output until process dies - while True: - l = p.stdout.readline() - if not l: break - output += l - l = l[:-1] # yea, only safe on unix... - if echo: - print prefix + l - if logCmd != None: - logCmd(prefix + l) - - return (p.wait(), output) - -def openRead(filename, mode = "r"): - """Open a gzip or normal file for text reading. Valid modes are 'r' and 'rb'""" - - gzSig = '\x1f\x8b' - - if mode != 'r' and mode != 'rb': - raise ValueError("Illegal mode: " + mode) - - f = open(filename, mode) - - try: - if (f.read(2) == gzSig): - f = gzip.open(filename, mode) - finally: - f.seek(0) - - return f - - - - diff --git a/old_bin/rundaily b/old_bin/rundaily deleted file mode 100755 index 624bad9c9..000000000 --- a/old_bin/rundaily +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/env python - -import os, os.path, sys, time, getopt -import sxpar - -""" -rundaily: - -Written by Gary Kushner (LBL). Jan 2010. -""" - -#### -def usage(): - """Display usage and exit""" - - print "usage:" - print "rundaily -m path -s path -p path -o observatory" - print " " - print \ -""" - rundaily is meant to be run on rieman via cron. It will wait until the next MJD is - downloaded and then run a script. It will output the status or errors to stdout. - - Note : you must "setup trac" before running this script. Also, anything the - given script might need. - - The parameters are: - - -m path to file to store next mjd to look for - -s path to file to exec on new mjd. The file will be run like this "file $MJD" - -p path to getWikiMJD password file - -o define observatory: lco or apo - - NOTE: To avoid upsetting cron, rundaily always exists with zero. -""" - - sys.exit(0) - - -#### -def screamAndDie(msg): - """Print a message to stdout and then exit""" - - print msg - sys.exit(0) - -#### -def parseCmdLine(args): - """Parse command line arguments and return a (mjdFile, scriptFile, pwFile)""" - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(args, "m:s:p:o:") - except: - usage() - - if len(pargs) != 0: - print "wrong number of command line arguments.\n" - usage() - - mjdFile = "" - scriptFile = "" - pwFile = "" - lco = False - lco_t = "" - - # Fill in the config - for (opt, value) in opts: - if opt == "-m": - mjdFile = value - if opt == "-s": - scriptFile = value - if opt == "-p": - pwFile = value - if opt == "-o": - lco_t = value - if lco_t == "lco": - lco == True - if mjdFile == "" or scriptFile == "" or pwFile == "": - usage() - - return (mjdFile, scriptFile, pwFile, lco) - - -#### -def getMJD(mjdFile): - """Return the single number stored in the given file""" - -# with open(mjdFile) as f: -# return int(f.read()) - - return int(open(mjdFile).read()) - -#### -def incrementMJD(mjdFile): - """Increment the single number in the given file by one""" - -# with open(mjdsFile) as f: -# mjd = int(f.read()) -# f.seek(0) -# f.write(str(++mjd)) -# f.truncate() - - f = open(mjdFile, "r+") - mjd = int(f.read()) + 1 - f.seek(0) - f.write(str(mjd)) - f.truncate() - f.close() - - print "Next MJD to wait for will be " + str(mjd) - -#### -def runScript(scriptFile, mjd, lco): - """Run the script 'scriptFile $MJD'""" - if lco: - print "Running script " + scriptFile + " " + str(mjd) + "for LCO data" - os.spawnl(os.P_NOWAIT, scriptFile, scriptFile, str(mjd), 'update' , 'lco') - else: - print "Running script " + scriptFile + " " + str(mjd) - os.spawnl(os.P_NOWAIT, scriptFile, scriptFile, str(mjd)) - - -#### -def nextMJD(mjd, pwFile): - """Return true if the given MJD has been transfered""" - -# cmd = "getWikiMJD " + pwFile + " " + str(mjd) + " &> /dev/null" -# rc = os.system(cmd) -# return rc == 0 - - path = os.path.join(os.getenv("DAILY_BOSS_SPECTRO_DATA"), str(mjd)) - print "Looking for %s" % path - return os.path.isdir(path) - - -#### -def main(args): - (mjdFile, scriptFile, pwFile, lco) = parseCmdLine(args) - - # Some early sanity checks - if not os.path.exists(mjdFile): - screamAndDie("Can not find MJD file: " + mjdFile) - if not os.path.exists(scriptFile): - screamAndDie("Can not find script file: " + scriptFile) - if not os.path.exists(pwFile): - screamAndDie("Can not find password file: " + pwFile) - - # Is the next MJD here? - mjd = getMJD(mjdFile) - if nextMJD(mjd, pwFile): - print "New MJD transfered: " + str(mjd) + "." - incrementMJD(mjdFile) - runScript(scriptFile, mjd, lco) - else: - print "MJD " + str(mjd) + " is not here yet." - - -#### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) - diff --git a/old_bin/sos_apocontrol b/old_bin/sos_apocontrol deleted file mode 100755 index 90bcf932d..000000000 --- a/old_bin/sos_apocontrol +++ /dev/null @@ -1,174 +0,0 @@ -#!/usr/bin/env python - -import os, sys, commands, time -import sos_classes, killAndChildren - -""" -sos_apocontrol: - -sos_apocontrol controls the running of the sos daemon. Everything is hard coded to APO--no -comfort is given as a general purpose configurable control program. - -Written by Gary Kushner (LBL). Oct 2009. - -""" - -#### -## Globals Block. -#### - -#CONTROLDIR = "/tmp/sos/control" -#STARTCMD = "sos_apostart -t -x -s" -CONTROLDIR = "/home/eboss/sos/control" -STARTCMD = "sos_apostart -g" -DIEFILE = os.path.join(CONTROLDIR, sos_classes.Consts().dieFileName) - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print usageCMD + "\n\nusage: start|allow|stopWait|stop|status|stopKill" - print \ - """ - start: - delete the die file and run sos_apostart - - allow: - delete the die file but don't start the daemons - - stop: - touch the die file. With the die file, the daemon will not run even if restarted - manually or via cron. - - stopWait: - touch the die file. With the die file, the daemon will not run even if restarted - manually or via cron. stopWait will not return to the shell until all the - processes are stopped. Normally, stopWait will return in less than 5 minutes, - however, if an idl process is active, stopWait can take more time. - - stopKill: - touch the die file. With the die file, the daemon will not run even if restarted - manually or via cron. stopKill will then kill all the processes by sending them - a SIGINT, sleeping, and then sending any stragglers a SIGKILL. It is best to try - stopWait first. - - status: - use ps to display running sos_runnerd processes - - preferred sequence upon failure of one or more runnerd processes: - sos_apocontrol status --- if processes not running then - sos_apocontrol stopWait - sos_apocontrol status --- check that zero processes are running - sos_apocontrol start - - """ - sys.exit(1) - - -#### -def start(): - if os.path.isfile(DIEFILE): - os.unlink(DIEFILE) - rc = os.system(STARTCMD) - if rc != 0: - print >> sys.stderr, "sos_apostart failed: " + str(rc) - time.sleep(5) - print " " - print "Running status now. There should be 4 processes running." - status() - -#### -def allow(): - if os.path.isfile(DIEFILE): - os.unlink(DIEFILE) - print "die file removed -- sos_runnerd allowed to run." - - -#### -def stop(): - open(DIEFILE, 'w').close() - print "die file created -- processes should stop. If an idl command is" - print "executing, it will be allowed to finish before the process stops." - - -#### -def stopWait(): - open(DIEFILE, 'w').close() - print "die file created -- processes should stop. If an idl command is" - print "executing, it will be allowed to finish before the process stops." - print "Waiting . . .", - while True: - sys.stdout.flush() - rc = commands.getstatusoutput("ps ax | grep runnerd | grep -v grep | grep -Eo sos_runnerd.*$ | sed G") - if len(rc[1]) == 0: - break - time.sleep(5) - print ".", - - -#### -def stopKill(): - open(DIEFILE, 'w').close() - print "die file created -- processes should stop. Pausing one minute to check..." - time.sleep(70) - - rc = commands.getstatusoutput("ps ax -o pid,args | grep runnerd | grep -v grep | grep -Eo ^.*python | grep -Eo [0-9]+") - if len(rc[1]) != 0: - print "Killing sos and associated idl processes..." - sys.stdout.flush() - pids = rc[1].split("\n") - for pid in pids: - killAndChildren.kill(int(pid)) - - rc = commands.getstatusoutput("ps ax -o pid,args | grep runnerd | grep -v grep | grep -Eo ^.*python | grep -Eo [0-9]+") - if len(rc[1]) != 0: - print "** Could not kill processes **" - else: - print "No processes running." - sys.stdout.flush() - -#### -def status(): - ps_sos_daemons = "ps ax | grep runnerd | grep -v grep | grep -v 'svn commit' | grep -Eo sos_runnerd.*$ | sed G" - rc = commands.getstatusoutput(ps_sos_daemons) - if len(rc[1]) == 0: - print "No processes running!" - return - print str(rc[1].count("sos_runnerd")) + " processes running:\n" - os.system(ps_sos_daemons) - - - -#### -def main(argv): - """control the apo sos daemon""" - - if len(argv) != 1: - usage() - cmd = argv[0] - - if cmd == "start": - start() - elif cmd == "allow": - allow() - elif cmd == "stop": - stop() - elif cmd == "stopWait": - stopWait() - elif cmd == "stopKill": - stopKill() - elif cmd == "status": - status() - else: - usage() - -### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) - print os.path.basename(sys.argv[0]) + " finished running!" - - diff --git a/old_bin/sos_aporedomakecmd b/old_bin/sos_aporedomakecmd deleted file mode 100755 index 32fb7cacd..000000000 --- a/old_bin/sos_aporedomakecmd +++ /dev/null @@ -1,68 +0,0 @@ -#!/usr/bin/env python - -import sys, os, re - -""" -sos_apomakeredocmd - -print bash a script file that will run redo for a given range of mjds. - -The output script will link the current log to ../redo-b1.out. This allows another -window to "tail -F redo-b1.out" to follow the whole process. - -Written by Gary Kushner (LBL). Mar 2010. - -""" - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print >>sys.stderr, "usage:" - print >>sys.stderr, "\t%s MJD_start MJD_end" % usageCMD - print >>sys.stderr, " " - print >>sys.stderr, "will output the script file to stdout" - - sys.exit(1) - -#### - - -#### -def main(argv): - """Parse arguments and generate a script file""" - - # Check params - if len(argv) != 2: - usage() - - if re.match("^5[56]\d\d\d$", argv[0]) == None: - print >>sys.stderr, argv[0] + " is not a valid mjd [55000, 56999]." - print >>sys.stderr, " " - usage() - - if re.match("^5[56]\d\d\d$", argv[1]) == None: - print >>sys.stderr, argv[1] + " is not a valid mjd [55000, 56999]." - print >>sys.stderr, " " - usage() - - - # Make it bash and echo commands to make debugging easier -# print "#!/bin/bash -x" - print "#!/usr/bin/env bash" - print "set -o verbose" - - for mjd in range(int(argv[0]), int(argv[1]) + 1): - print "mkdir -p redo-out-" + str(mjd) - print "ln -s -f redo-out-" + str(mjd) + "/redo-b1.out redo-b1.out " - print "cd redo-out-" + str(mjd) - print "sos_aporedo -g -w -m " + str(mjd) - print "cd .." - -if __name__=='__main__': - main(sys.argv[1:]) - - - \ No newline at end of file diff --git a/old_bin/sos_batchd b/old_bin/sos_batchd deleted file mode 100755 index 82083f203..000000000 --- a/old_bin/sos_batchd +++ /dev/null @@ -1,182 +0,0 @@ -#!/usr/bin/env python - -import os, sys, time, commands -import logging, logging.handlers, getopt -import fb_classes - -""" -sos_batchd (femto batch): - -sos_batchd reads jobs from a process queue and executes them. You can run as many instances of sos_batchd -as you'd like, for example, one per cpu. - -Notes to run: - In order to run, the environment must be setup: - -Written by Gary Kushner (LBL). Oct 2009. - -""" - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print """ -Parameters and fb_config.ini names are: - -nice (-n) : false : run commands via nice -pollDelay (-d) : default 60 seconds : Seconds to wait before interrogating directing -logDir (-l) : default . : Place to place log files -logLevel (-v) : default 30 : 30 = WARNING; -v = 20 = INFO; -v -v = 10 = DEBUG -controlDir (-o) : default . : Place to find config file and place process lists -name (-i) : default "" : Name sent to logger to identify instance # or something - """ - - sys.exit(1) - - -#### -def screamAndDie(msg): - """Log a message and then exit""" - - log = logging.getLogger(sos_classes.Consts().logName) - log.critical(msg) - log.critical("GOODBYE!") - sys.exit(1) - - -#### -def parseConfigFile(cfg): - """Parse the config file""" - - -#### -def parseCmdLine(cfg): - """Parse command line arguments""" - - verbose = 0 - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(sys.argv[1:], "d:l:vo:i:n") - except: - usage() - - if len(pargs) != 0: - usage() - - # Fill in the config - for (opt, value) in opts: - if opt == "-d": - cfg.pollDelay= int(value) - if opt == "-l": - cfg.logDir = value - if opt == "-v": - verbose += 1 - if opt == "-o": - cfg.controlDir = value - if opt == "-i": - cfg.name = value - if opt == "-n": - cfg.nice = True - - # Don't want to apply -v on each call, so always start with a base - if (verbose > 0): - cfg.logLevel = max(1, fb_classes.Config().logLevel - verbose * 10) - - # Display config values on any verbosity - if (verbose > 1): - print "Config values: \n" + str(cfg) - - -#### -def initializeParms(): - """Initialize all the parameters.""" - cfg = fb_classes.Config(); - - # Parse command line to get config.ini information - parseCmdLine(cfg) - # Parse config.ini to get new defaults - parseConfigFile(cfg) - # Parse command line again to give command line precedence - parseCmdLine(cfg) - - return cfg - - -#### -def initializeLogger(cfg): - """Startup logging and set the level""" - - lname = os.path.join(cfg.logDir, fb_classes.Consts().logName) - print "Starting to log to " + lname - - log = logging.getLogger(fb_classes.Consts().logName) - h = logging.handlers.RotatingFileHandler(lname, maxBytes=1024*1024, backupCount=3) - f = logging.Formatter("%(asctime)s-%(levelname)s: %(message)s") - h.setFormatter(f) - h.setLevel(cfg.logLevel) - log.setLevel(cfg.logLevel) - log.addHandler(h) - - log.critical("Hello from " + cfg.name + ". " + sys.argv[0] + " started.") - log.critical(cfg.name + ": Startup Configuration is: \n\n" + str(cfg) + "\n\n") - - return log - - -#### -def watch(cfg, log): - """ Watch for new process commands. When when comes in, execute it. """ - - plist = fb_classes.ProcessList(os.path.join(cfg.controlDir, fb_classes.Consts().processListName)) - - while True: - pause = True - - # Check for new commands - cmd = plist.pop() - if cmd != None: - pause = False - if cfg.nice: - cmd = "nice " + cmd - log.info(cfg.name + " executing: " + cmd) - rc = commands.getstatusoutput(cmd) - log.info(cfg.name + " -> rc = " + str(rc[0])) - log.debug(cfg.name + " -> output:\n" + rc[1]) - - # Pause if asked - if pause: - log.debug(cfg.name + " sleeping for " + str(cfg.pollDelay) + " seconds.") - time.sleep(cfg.pollDelay) - - -#### -def main(): - """The program""" - - config = fb_classes.Config(); - logger = None - - # A cry for help? - if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "-?"): - usage() - sys.exit(100) - - # Initialize - config = initializeParms() - logger = initializeLogger(config) - - # Watch for new commands. Forever... - watch(config, logger) - - - -### Start of script - -if __name__=='__main__': - main() - - diff --git a/old_bin/sos_filesequencer b/old_bin/sos_filesequencer deleted file mode 100755 index 434fd09fa..000000000 --- a/old_bin/sos_filesequencer +++ /dev/null @@ -1,252 +0,0 @@ -#!/usr/bin/env python - -import os, sys -import copy, getopt -import putils -from sxpar import sxpar - -""" -sos_filesequencer: - -Originally it was a requirement that the files go into aporeduce in exactly the -order they came from the icc. We now need to pass the files in in a slightly -different order. This file is a *hack* to accomplish that. - -Currently there is one rule: - -1. - -#commented out# a) If arc, was the previous a flat? If yes: processes arc. If no: ignore. -b) If flat, was the previous a arc? If yes: process flat, then process arc. If no: process flat. - -a) & b) check to make sure the arc and flats are from the same plugging - - -Written by Gary Kushner (LBL). May 2010. - -""" - - - -#### -def usage(): - """Display usage and exit""" - - print """ - usage: sos_filesequencer -f name -i path -p name -l path -s path -m 00000 -e T - - -f Fits file name - -i Fits file directory path - -p Plugmap file name - -l Plugmap file directory path - -s SOS Directory - -m MJD - -e FPS mode (T for true, F for false) - """ - sys.exit(1) - - -#### -class Config: - """Config Info""" - - def __init__(self): - self.fitname = "" - self.fitdir = "" - self.plugname = "" - self.plugdir = "" - self.sosdir = "" - self.mjd = "" - self.fps = "T" - - def __str__(self): - return ("fitname: " + self.fitname + "\n" + - "fitdir: " + self.fitdir + "\n" + - "plugname: " + self.plugname + "\n" + - "plugdir: " + self.plugdir + "\n" + - "sosdir: " + self.sosdir + "\n" + - "mjd: " + self.mjd + "\n" + - "fps: " + self.fps); - - - -#### -def parseCmdLine(args): - """Parse command line arguments""" - - cfg = Config() - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(args, "f:i:p:l:s:m:e:") - except Exception as e: - print "Illegal option specified." - print " " - print str(e) - print " " - usage() - - if len(pargs) != 0: - print "All arguments should be parameters (start with '-')" - print "found " + str(pargs) - usage() - - # Fill in the config - for (opt, value) in opts: - if opt == "-f": - cfg.fitname = value - if opt == "-i": - cfg.fitpath = value - if opt == "-p": - cfg.plugname = value - if opt == "-l": - cfg.plugpath = value - if opt == "-s": - cfg.sosdir = value - if opt == "-m": - cfg.mjd = value - if opt == "-e": - cfg.fps = value - - print "Config values: \n" + str(cfg) - - return cfg - - -#### -def flavor(cfg): - """return the flavor of the fits file""" - return sxpar(os.path.join(cfg.fitpath,cfg.fitname), "flavor")[0].lower() - -#### -def cart(cfg): - """return the cart of the fits file""" - return int(sxpar(os.path.join(cfg.fitpath,cfg.fitname), "cartid")[0]) - -#### -def plugging(cfg): - """return the plugging of the fits file""" - return sxpar(os.path.join(cfg.fitpath,cfg.fitname), "name")[0].lower() - -#### -def samePlugging(cfg1, cfg2): - """returns True if the fits files use the same plugging""" - return plugging(cfg1) == plugging(cfg2) - -#### -def fitsExist(cfg): - """Return true if the fits file exists""" - return os.path.exists(os.path.join(cfg.fitpath, cfg.fitname)) - - -#### -def previousExposure(cfg): - """return a config for the previous exposure""" - - # Parse: sdR-b1-00114186.fit.gz - left = cfg.fitname[:9] - right = cfg.fitname[15:] - exp = str(int(cfg.fitname[9:15]) - 1) - - prevcfg = copy.copy(cfg) - prevcfg.fitname = left + exp + right - print "previous cfg:\n" + str(prevcfg) - - return prevcfg - - -#### -def processFile(cfg, flavor=""): - """call sos_apocommand on the file. Will exit with error code if the command failts.""" - - cmd = "sos_apocommand" - cmd += " -f " + cfg.fitname - cmd += " -i " + cfg.fitpath - cmd += " -p " + cfg.plugname - cmd += " -l " + cfg.plugpath - cmd += " -s " + cfg.sosdir - cmd += " -m " + cfg.mjd - if cfg.fps == "T": - cmd += " -e " - - prefix = "sos_apocommand(" + flavor + "): " - - print "executing: " + cmd - rv = putils.runCommand(cmd, echo=True, prefix=prefix) - if rv[0] != 0: - print "\nCommand failed with rc = " + str(rv[0]) + "\n" - sys.exit(1) - - -#### -def rule1(cfg): - """Handle arc/flat ordering""" - prevcfg = previousExposure(cfg) - - print "Exposure Flavor: " + flavor(cfg) - print "Previous exposure exists: " + str(fitsExist(prevcfg)) - if fitsExist(prevcfg): - print "Previous Flavor: " + flavor(prevcfg) - print "Same Plugging: " + str(samePlugging(cfg, prevcfg)) - - # Handle arcs -- ignore if previous wasn't flat -# if flavor(cfg) == "arc": -# print "Exposure is an arc" -# if fitsExist(prevcfg) and flavor(prevcfg) == "flat" and samePlugging(cfg, prevCfg): -# print "Processing arc" -# processFile(cfg) -# return True - - # Handle flats -- process, and arc if was previous - if flavor(cfg) == "flat": - print "Exposure is a flat" - processFile(cfg, "flat") - if fitsExist(prevcfg) and samePlugging(cfg, prevcfg) and flavor(prevcfg) == "arc": - print "Processing previous arc" - processFile(prevcfg, "arc") - return True - - # Not one of ours - return False - -#### -def rule2(cfg): - """Don't process arc/flat/science from non-BOSS carts""" - - thisflavor = flavor(cfg) - thiscart = cart(cfg) - if thisflavor in ('arc', 'flat', 'science') and thiscart < 1:#10: This need change, this number is for testing only - print "Skipping %s exposure for non-BOSS cart %d file %s" % (thisflavor, thiscart, cfg.fitname) - return True - else: - return False - -#### -def main(args): - """The program""" - - # Initialize - config = parseCmdLine(args) - - # Rules return true if they processed the file and processing should stop - - # process rules - # Rule2 checks for arc/flat/science on non-BOSS cart; check this - # first so that it doesn't trigger arc/flat pre-exp logic in rule 1 - # which can call processFile before returning. - print "Checking Rule 2" - if rule2(config): - return - - print "Checking Rule 1" - if rule1(config): - return - - print "Passed Rules; let's go!" - processFile(config, flavor(config)) - - -#### Start of script - -if __name__=='__main__': - main(sys.argv[1:]) diff --git a/old_bin/sos_redorunner b/old_bin/sos_redorunner deleted file mode 100755 index 93518d69f..000000000 --- a/old_bin/sos_redorunner +++ /dev/null @@ -1,163 +0,0 @@ -#!/usr/bin/env python - -#import os, sys, fcntl, time, commands -#import logging, logging.handlers, getopt, glob, random -#import sos_classes, fb_classes, sxpar - -import sys, logging, os, re -import sos_runnerd, sos_classes - -""" -sos_redorunnerd: - -sos_redorunnerd is used to rerun aporeduce (or any command) on a group files specified by a -glob and in the directory root/$MJD. Once the files in that given subdirectory specified by -the $MJD are processed, sos_redorunnerd exists. - -Many globs can be specified, and any file matching any specified glob will be processed. Many -instances of sos_redorunnerd can be running, for example one per camera. It is important that -only instance be looking for a particular kind of file or else files will be processed more -than once, things will get overwritten, your hair will fall out and all sorts of bad things -will happen. - -Note that like sos_runnerd, sos_redorunnerd does svn processing and plugmap -processing by default -- turn it off if you don't want it. I think sos_aporedo -will turn it off by default. - -Written by Gary Kushner (LBL). Nov 2009. - -""" - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print( """ -Parameters are: - -iname (-i) : defaut "" : instance name. Appended to logfiles and other things that need - to not clash. Use the camera name. -glob (-g) : default * : glob to look for. Can have many. Each glob will preserve order - processing of files -nosvn (-x) : default not set : Run without doing any svn processing -command (-c) : default echo-to-log : Command to run on found files. -logLevel (-v) : default 60 : 40 = ERROR; -v = 30 = WARNING; -v -v = 20 = INFO; -v -v -v = 10 = DEBUG -fitsDir (-r) : default . : Where to look for new files in MJD subdirectories -plugDir (-p) : default . : Where to look for and put plugmap files in MJD subdirs -nice (-n) : default False : Run commands with nice -platedb (-b) : default False : Exit if can't setup platedb -initialMJD (-m) : default latest : MJD to start looking for new files. Note: With the -e option, - this option will process files and in the specified MJD and then - go to the newest MJD, NOT the next one. -exposureNumber (-z) : default None : if specified, then only that exposure will be redone. -FPSmode (-s) : default True : Turns on/off the FPS mode - -For the command, the following substitutions can be made: - %%f for the globbed (fits) file name w/o path information - %%qf for the fully qualified globbed (fits) file name. - %%pf for the path to the globbed (fits) file. - %%p for the plugmap file w/o path information - %%qp for the fully qualified plugmap file name - %%pp for the path to the plugmap file. - %%m for the current mjd - %%ef for the FPS mode - """) - - sys.exit(1) - - -#### -def initializeLogger(cfg): - """Startup logging and set the level""" - - lname = sos_classes.Consts().logName - if cfg.iname != "": - lname += "-" + cfg.iname -# print "Starting to log to " + lname - - log = logging.getLogger(sos_classes.Consts().logName) - h = logging.StreamHandler() -# hf = logging.FileHandler(lname) - f = logging.Formatter("%(asctime)s-%(levelname)s: %(message)s") - h.setFormatter(f) -# hf.setFormatter(f) - h.setLevel(cfg.logLevel) -# hf.setLevel(cfg.logLevel) - log.setLevel(cfg.logLevel) - log.addHandler(h) -# log.addHandler(hf) - - log.critical("Hello. " + sys.argv[0] + " started.") - log.info("Startup Configuration is: \n\n" + str(cfg) + "\n\n") - - return log - - -#### -def redo(workers, cfg, log): - """Redo the command for files in the specified MJD""" - - # Get files - for worker in workers: - files = sos_runnerd.lsltr(os.path.join(cfg.fitsDir, cfg.MJD), worker.glob) - if cfg.exposure != None: - allfiles = files - files = [] - # should only be one, but I do it this way to be sure things are working. - # also, I do the numeric check to avoid worrying about leading zeroes. - for file in allfiles: - log.info("Checking exposure number of: " + file) - exp = re.search("sdR\-..-(\d{8})\.fit.*$", file) - if exp != None: - if int(exp.group(1)) == int(cfg.exposure): - log.info("correct exposure number") - files.append(file) - new = len(files) - log.info("Found " + str(new) + " files in " + - os.path.join(cfg.fitsDir, cfg.MJD, worker.glob)) - sos_runnerd.processNewBOSSFiles(worker, files, cfg, log) - - -#### -def main(): - """The program""" - - global logger - - config = sos_classes.Config(); - logger = None - - # A cry for help? - if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "-?"): - usage() - sys.exit(100) - - # Initialize - config = sos_runnerd.initializeParms() - logger = initializeLogger(config) - - # Find correct MJD to start on - sos_runnerd.initializeMJD(config, logger) - - # Check svn access - if not sos_runnerd.svnCheck(config.plugDir, config, logger): - logger.critical("Could not svn access " + config.plugDir) - logger.critical("Could not svn access " + config.plugDir) - print >> sys.stderr, "Could not svn access " + config.plugDir - - # Create poll workers and initialize file counts - pollWorkers = sos_runnerd.createPollWorkers(config, logger) - - redo(pollWorkers, config, logger) - - -### Start of script - - -if __name__=='__main__': - main() - - diff --git a/old_bin/sos_runnerd.py b/old_bin/sos_runnerd.py deleted file mode 100755 index 11707f4dc..000000000 --- a/old_bin/sos_runnerd.py +++ /dev/null @@ -1,816 +0,0 @@ -#!/usr/bin/env python - -import os, sys, fcntl, time, commands -import logging, logging.handlers, getopt, glob, random -import sos_classes, sxpar, putils -import pyfits -#import fb_classes - -""" -sos_runnerd.py: - -sos_runnerd polls a directory structure looking for new files matching a glob and running a command on those -matching files. The directory structure to look for files is root/$MJD. By default, when run sos_runnerd goes to -the latest MDJ and starts looking for new files. - -Many globs can be specified, and any file matching any specified glob will be processed. Many instances of -sos_runnerd can be running, for example one per camera. It is important that only instance be looking for a -particular kind of file or else files will be processed more than once, things will get overwritten, your -hair will fall out and all sorts of bad things will happen. - -sos_runnerd is smart enough not to let two instances with EXACTLY the same globs, specified in EXACTLY the -same order run concurrently. If you try to start a new instance with exactly the same globs in order then the -process will exit(0). The only real use of this is to allow chron to start the process as a keep-alive. The -lock file to implement this is stored in the control directory. - -Everytime the sos_runnerd looks for a new file, if it doesn't find one, it will also look for a later MJD. If it -finds one, it will start looking there for new files. sos_runnerd never looks at previous MJDs and will only look -at one MJD at a time. - -sos_runnerd look at command line arguments and a configuration file named sos_config.ini. Command line arguments -always have precedence. Parameters and sos_config.ini names are defined in usage(). Configuration files are -not currently supported and probably never will be unless someone asks. - -Notes to run: - In order to run, the environment must be setup: - setup platedb - ssh-agent a key that can commit svn - - setting up platedb is optional. runnerd will try and do it automatically, but it - requires a late version of eups to work and the correct version of platedb must be - setup as current. - -Written by Gary Kushner (LBL). Oct 2009. - -""" - - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print """ -Parameters and sos_config.ini names are: - - -iname (-i) : defaut "" : instance name. Appended to logfiles and other things that need - to not clash. Use the camera name. -glob (-g) : default * : glob to look for. Can have many. Each glob will preserve order - processing of files -nosvn (-x) : default not set : Run without doing any svn processing -bookkeep (-k) : default not set : Run bookkeeping every 60 minutes (svn up & ci) -command (-c) : default echo-to-log : Command to run on found files. -pollDelay (-d) : default 60 seconds : Seconds to wait before interrogating directing -logDir (-l) : default . : Place to place log files -logLevel (-v) : default 60 : 40 = ERROR; -v = 30 = WARNING; -v -v = 20 = INFO; -v -v -v = 10 = DEBUG -controlDir (-o) : default . : Place to find config file and place lock file -fitsDir (-r) : default . : Where to look for new files in MJD subdirectories -plugDir (-p) : default . : Where to look for and put plugmap files in MJD subdirs -nice (-n) : default False : Run commands with nice -platedb (-b) : default False : Exit if can't setup platedb -initialMJD (-m) : default latest : MJD to start looking for new files. Note: With the -e option, - this option will process files and in the specified MJD and then - go to the newest MJD, NOT the next one. -redo (-e) : default not set : Start with existing the files in the latest or given MJD. Normally only - new files are processed. Usefull for starting runnerd after observing - has started, or along with -m for a poor man's redo. -FPSmode (-s) : default True : Turns on/off the FPS mode - -For the command, the following substitutions can be made: - %%f for the globbed (fits) file name w/o path information - %%qf for the fully qualified globbed (fits) file name. - %%pf for the path to the globbed (fits) file. - %%p for the plugmap file w/o path information - %%qp for the fully qualified plugmap file name - %%pp for the path to the plugmap file. - %%m for the current mjd - %%ef for the FPS mode - """ - sys.exit(1) - - -#### -def screamAndDie(msg): - """Log a message and then exit""" - - log = logging.getLogger(sos_classes.Consts().logName) - log.critical(msg) - log.critical("GOODBYE!") - - # These lines may cause an exception if running headless. But at this point... so what. - print >> sys.stderr, msg - print >> sys.stderr, "GOODBYE!" - sys.exit(1) - -#### -def globsToString(cfg): - """Return a string representation of all the globs - - Currently the string is just a concatinated list of the globs give. This gives lots of - characters that are fine for Linux and Darwin but not so much every OS. This could easily - be changed to a hash code or translated string if needed. - """ - - s = "" - for g in cfg.globs: - s += g - - return s - - -#### -def oneInstanceCheck(cfg, log): - """Only one instance of this daemon should be running. The normal setup is to have chron try - and start it every so often and if it is still running, then this procedure will abort. It - writes a message to stdout, but that usually should be shipped to >dev/null""" - - lockFile = os.path.join(cfg.controlDir, sos_classes.Consts().lockFileBase) - lockFile += "-" + globsToString(cfg) - lockFile += ".lock" - - log.info("Lock file is " + lockFile) - - lock = open(lockFile, 'w') - try: - fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB) - except IOError as (errno, errstr): - log.info("oneInstanceCheck failed gracefully.") - print >> sys.stderr, "oneInstanceCheck failed gracefully." - sys.exit(0) - - return lock - - -#### -def writeVersionInfo(cfg, log): - """Write a version string to a file""" - - verFile = os.path.join(cfg.controlDir, sos_classes.Consts().versionFile) - rc = commands.getstatusoutput("idlspec2d_version") - f = open(verFile, "w") - f.write(time.ctime() + " " + rc[1] + "\n") - f.close() - log.info("Version is %s" % rc[1]) - - - -#### -def isitTimeToDie(cfg, log): - """check dirFileName to see if it is time to gracefully give up the ghost""" - - dieFile = os.path.join(cfg.controlDir, sos_classes.Consts().dieFileName) - - if os.path.isfile(dieFile): - log.critical("Time to die.") - log.critical("GOODBYE!") - sys.exit(0) - -#### -def setupPlateDbAndIdlspec2d(cfg): - """Setup plateDb. By Default do nothing on failure because older versions of eups don't work this way.""" - - try: - import eups - Eups = eups.Eups(verbose=0) - cmds = eups.setup(Eups, "platedb", eups.Current()) - if 'false' in cmds and cfg.platedb: - screamAndDie("Could not setup platedb") -# idlspec2d needs to already be setup or we wouldn't be running... -# cmds = eups.setup(Eups, "idlspec2d", eups.Current()) -# if 'false' in cmds and cfg.platedb: -# screamAndDie("Could not setup idlspec2d") - except: - if cfg.platedb: - screamAndDie("Could not setup platedb and/or idlspec2d (except)") - -#### -def parseConfigFile(cfg): - """Parse the config file""" - - -#### -def parseCmdLine(cfg): - """Parse command line arguments""" - - globs = [] # fill in the command line globs - verbose = 0 - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(sys.argv[1:], "i:g:c:d:l:vc:p:r:m:s:z:o:xnbek") - except Exception as e: - print "Illegal option specified." - print " " - print str(e) - print " " - usage() - - if len(pargs) != 0: - print "All arguments should be parameters (start with '-')" - print "found " + str(pargs) - usage() - - # Fill in the config - for (opt, value) in opts: - if opt == "-i": - cfg.iname = value - if opt == "-g": - globs.append(value) - if opt == "-c": - cfg.command = value - if opt == "-d": - cfg.pollDelay= int(value) - if opt == "-l": - cfg.logDir = value - if opt == "-v": - verbose += 1 - if opt == "-o": - cfg.controlDir = value - if opt == "-r": - cfg.fitsDir = value - if opt == "-p": - cfg.plugDir = value - if opt == "-m": - cfg.MJD = value; - if opt == "-s": - cfg.fps = value; #FPS turning off/on the FPS mode - if opt == "-z": - cfg.exposure = value - if opt == "-x": - cfg.nosvn = True - if opt == "-k": - cfg.bookkeep = False # Force turning off book keeping as there is a separate cronjob doing this - if opt == "-n": - cfg.nice = True - if opt == "-b": - cfg.platedb = True - if opt == "-e": - cfg.redo = True - - # Any globs override default - if (len(globs) != 0): - cfg.globs = globs - # Don't want to apply -v on each call, so always start with a base - if (verbose > 0): - cfg.logLevel = max(1, sos_classes.Config().logLevel - verbose * 10) - - # Display config values on any verbosity - if (verbose > 1): - print "Config values: \n" + str(cfg) - - -#### -def initializeParms(): - """Initialize all the parameters.""" - cfg = sos_classes.Config(); - - # Parse command line to get config.ini information - parseCmdLine(cfg) - # Parse config.ini to get new defaults - parseConfigFile(cfg) - # Parse command line again to give command line precedence - parseCmdLine(cfg) - - return cfg - - -#### -def initializeLogger(cfg): - """Startup logging and set the level""" - - lname = os.path.join(cfg.logDir, sos_classes.Consts().logName) - if cfg.iname != "": - lname += "-" + cfg.iname - print "Starting to log to " + lname - - log = logging.getLogger(sos_classes.Consts().logName) - h = logging.handlers.TimedRotatingFileHandler(lname, 'midnight', 1, 5) - hc = logging.handlers.TimedRotatingFileHandler(lname + "-error", 'midnight', 1, 5) -# h = logging.handlers.RotatingFileHandler(lname, maxBytes=1024*1024 * 25, backupCount=3) - f = logging.Formatter("%(asctime)s-%(levelname)s: %(message)s") - h.setFormatter(f) - hc.setFormatter(f) - h.setLevel(cfg.logLevel) - hc.setLevel(logging.ERROR) - log.setLevel(cfg.logLevel) - log.addHandler(h) - log.addHandler(hc) - - log.critical("Hello. " + sys.argv[0] + " started.") - log.info("Startup Configuration is: \n\n" + str(cfg) + "\n\n") - - return log - - -#### -def createPollWorkers(cfg, log): - """Create poll workers""" - - workers = [] - - num = 1 - for glob in cfg.globs: - p = sos_classes.PollWorker() - p.glob = glob - p.workerNumber = num - num += 1 - workers.append(p) - log.debug("\nnew PollWorker:\n" + str(p)) - - return workers - - -#### -def resetPollWorkers(workers, cfg, log): - """Reset the file count on all the workers""" - - log.info("Resetting fileCount on all workers.") - for w in workers: - w.fileCount = 0 - -#### -def initializePollWorkers(workers, cfg, log): - """Initialize poll workers with latest file counts""" - - for worker in workers: - worker.fileCount = len(glob.glob(os.path.join(cfg.fitsDir, cfg.MJD, worker.glob))) - log.debug("\nInitialized PollWorker:\n" + str(worker)) - - - -#### -def lsltr(dir, regex="*"): - """return a modification-time sorted list of files in dir""" - - files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] - files.sort(key=lambda tm: os.path.getmtime(tm)) - - return files - - -#### -def ls(dir, regex="*"): - """return a name sorted list of files in dir""" - - files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] - files.sort() - - return files - - - - -#### -def initializeMJD(cfg, log): - """Find the correct MJD to start looking for new files. If the user specifies an MJD just test - to see if it exists, otherwise, use the latest MJD.""" - - # First check for user specified - if cfg.MJD != "0": - path = os.path.join(cfg.fitsDir, cfg.MJD) - if not os.path.isdir(path): - screamAndDie("Could not find user specified MJD path: " + path) - log.info("Using user specified MJD " + path) - else: - regex = sos_classes.Consts().MJDGlob; - try: - log.debug("Looking for initial MJD in " + cfg.fitsDir) - cfg.MJD = ls(cfg.fitsDir, regex)[-1][-5:] - log.info("Latest initial MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) - except: - screamAndDie("Could not find latest MJD in " + cfg.fitsDir) - - -#### -def updateMJD(workers, cfg, log): - """Check to see if a new MJD exists""" - - regex = sos_classes.Consts().MJDGlob; - try: - MJD = ls(cfg.fitsDir, regex)[-1][-5:] - if (MJD == cfg.MJD): - return - - cfg.MJD = MJD[-5:] - for worker in workers: - worker.fileCount = 0 - - log.info("Latest updated MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) - except: - screamAndDie("Could not find latest MJD in " + cfg.fitsDir) - - -#### -def svnAdd(uri, cfg, log): - """Add a file or dir to svn""" - -# Even if svn processing is turned off, we should add the file! -# if cfg.nosvn: -# return -### - - log.info("svn adding " + uri) - rc = commands.getstatusoutput("svn add " + uri) - log.info(" -> output:\n" + rc[1]) - if rc[0] != 0: - log.critical("\nCould not add to svn: " + uri + "\n" + rc[1]) - -def svnCommit(uri, cfg, log): - """Run commit on a dir""" - - if cfg.nosvn: - return - - log.info("svn committing " + uri) - rc = commands.getstatusoutput("svn commit " + uri + " -m 'committed by sos_runnerd'") - log.info(" -> output:\n" + rc[1]) - if rc[0] != 0: - log.critical("\nCommit failed on " + uri + "\n" + rc[1]) - log.critical("Trying to do a cleanup") - svnCleanup(uri, cfg,log) - -def svnUp(uri, cfg, log): - """Update a dir""" - - if cfg.nosvn: - return - - log.info("svn updating " + uri) - rc = commands.getstatusoutput("svn up " + uri) - log.info(" -> output:\n" + rc[1]) - if rc[0] != 0: - log.critical("\nUpdate failed on " + uri + "\n" + rc[1]) - - -def svnCheck(uri, cfg, log): - """Check that we can access the log of the file. Return False on not able to access.""" - - if cfg.nosvn: - return True - - log.info("Checking svn access to " + uri) - rc = commands.getstatusoutput("svn log " + uri) - return rc[0] == 0 - -def svnCleanup(uri, cfg, log): - """Do a cleanup on an SVN dir""" - - if cfg.nosvn: - return - - log.info("svn cleanup " + uri) - rc = commands.getstatusoutput("svn cleanup " + uri) - log.info(" -> output:\n" + rc[1]) - if rc[0] != 0: - log.critical("\nCleanup failed on " + uri + "\n" + rc[1]) - -#### -def checkPlugMap(file, cfg, log): - """ - Get a plugmap file from the database if needed. Uses the platedb command catPlPlugMapM so - make sure platedb is setup! - - Returns the fully qualified name of the plugmap file - """ - - dirty = False # svn dirty bit - speclogDir = cfg.plugDir - plugmapDir = os.path.join(speclogDir, cfg.MJD) - - log.info("Current plugmap directory is " + plugmapDir) - - # Get plugmap used by file - try: - plugmapFullId = sxpar.sxparRetry(file, "NAME", retries = 5)[0] - except TypeError as t: - log.critical("\nCould not parse " + file + "\n ->" + str(t)) - return "" - except IndexError: - log.critical("\nKeyword NAME not found in " + file) - return "" - - # Parse plugmap name - plugmapName = "plPlugMapM-" + plugmapFullId + ".par" - plugParse = plugmapFullId.split("-") - plugmapId = plugParse[0] - plugmapMJD = plugParse[1] - plugmapMapId = str(int(plugParse[2][0:2])) - plugmapPtg = "A" - if len(plugParse[2]) == 3: - plugmapPtg = plugParse[2][2] - log.debug(file + " uses plugmap " + plugmapFullId + " with Id " + plugmapId) - log.debug(" full name of plugmap file is " + plugmapName) - log.debug("pId=" + plugmapId + ", pMJD=" + plugmapMJD + ", pMapId=" + plugmapMapId + ", pPointing=" + str(plugmapPtg)) - - # See if the plugmap $MJD dir exists, if not create it and add it to svn - if os.path.isdir(plugmapDir): - log.info("Found existing directory: " + plugmapDir) - else: - log.info("Creating " + plugmapDir) - # We let an error happen here because there is a race condition where all the runnerd processes - # fight to create the directory. If the directory really didn't get created, we'll get - # a real error below. - try: - os.mkdir(plugmapDir) - # svnAdd(plugmapDir, cfg, log) - dirty = True - log.info("Created " + plugmapDir) - except: - pass - - - # Check if the file exists, if not get it and add it to svn - plugpath = os.path.join(plugmapDir, plugmapName) - if os.path.isfile(plugpath): - log.info("Found existing plugmap file: " + plugpath) - else: - log.info("Getting from platdb: " + plugmapName) - cmd = "catPlPlugMapM"; - cmd += " -m " + plugmapMJD - cmd += " -f " + plugmapMapId - if plugmapPtg != None: - cmd += " -p " + plugmapPtg - cmd += " " + plugmapId - log.debug("Getting plugmap using: " + cmd) - rc = commands.getstatusoutput(cmd) - if rc[0] != 0: - log.critical("Could not get plugmap for Id " + plugmapId + "\nOutput:\n" + rc[1]) - else: - # The file will probably get written multiple times, but at least it won't be corrupted - flock = open(plugpath, 'a') - fcntl.flock(flock, fcntl.LOCK_EX) - f = open(plugpath, "w") - f.write(rc[1]) - f.close() - flock.close() - log.info("Created " + plugpath) - # svnAdd(plugpath, cfg, log) - # svnCommit(plugmapDir, cfg, log) [going to move to only doing commit during bookkeeping] - - return os.path.abspath(plugpath) - - -#### -def createCMD(fglob, plugPath, cfg): - """Create command with substitutions - - %%f for the globbed (fits) file name w/o path information - %%qf for the fully qualified globbed (fits) file name. - %%pf for the path to the globbed (fits) file. - %%p for the plugmap file w/o path information - %%qp for the fully qualified plugmap file name - %%pp for the path to the plugmap file. - %%m for the current MJD - %%ef for the fps mode - """ - - qf = os.path.abspath(fglob) - f = os.path.basename(qf) - pf = os.path.dirname(qf) - - qp = os.path.abspath(plugPath) - p = os.path.basename(qp) - pp = os.path.dirname(qp) - - cmd = cfg.command - - cmd = cmd.replace("%%f", f) - cmd = cmd.replace("%%qf", qf) - cmd = cmd.replace("%%pf", pf) - cmd = cmd.replace("%%pp", pp) # this line needs to be before %%p - cmd = cmd.replace("%%p", p) - cmd = cmd.replace("%%qp", qp) - cmd = cmd.replace("%%m", cfg.MJD) - cmd = cmd.replace("%%ef", cfg.fps) - - return cmd - - -#### -def executeCommand(cmd, cfg, log): - """Execute command""" - - if cfg.nice: - cmd = "nice " + cmd - - log.info("Running: " + cmd) -# rc = commands.getstatusoutput(cmd) -# log.info(" -> rc = " + str(rc[0])) -# log.debug(" -> output:\n" + rc[1]) - prefix = "cmd: " - try: - if cfg.nice: - i = 1 - else: - i = 0 - prefix = cmd.split()[i] + ": " - except: - pass - - (rc, output) = putils.runCommand(cmd, logCmd=log.debug, prefix=prefix) - log.info(" -> rc = " + str(rc)) -# log.debug(" -> output:\n" + output) - if rc != 0: - log.critical("Command Failed(" + str(rc) + "): " + cmd) - log.critical("Output:\n" + output) - - -#### -def processNewBOSSFiles(worker, files, cfg, log): - """ Process new fits files - - Check to see if the plugmap file exists in the correct location, if it does not then - create it (get it from the database). Then add the appropiate APO command to the - correctly numbered process list. - - Before the files are processed, they are sorted by name. We really want the files - sorted by time, but because of the sequence number, name is the same as time for any - given camera. - - """ - - # Sort files by name to get into the right time order - files.sort() - log.info("Sorted file list" + str(files)) - - for f in files: - log.info("processing new file: " + f) - - #- Get platetype from header (missing=BOSS) - hdr = pyfits.getheader(f) - - if 'FLAVOR' not in hdr: - log.info("Skipping exposure with missing FLAVOR keyword.") - return - else: - flavor = hdr['FLAVOR'] - - if 'PLATETYP' in hdr: - platetype = hdr['PLATETYP'].upper() - else: - platetype = 'BHM'#'BOSS' - - #- always process bias and darks, regardless of PLATETYP - #- for other exposure types, only process BOSS and EBOSS exposures - if flavor in ('bias', 'dark') or platetype in ('BHM', 'BHM&MWM'):#'BOSS','EBOSS' - # Pull plugmap from the db if needed - plugpath = checkPlugMap(f, cfg, log) - - # Create the command and execute it - cmd = createCMD(f, plugpath, cfg) - # plname = fb_classes.Consts().processListName - # plname = os.path.join(cfg.controlDir, plname) + str(worker.workerNumber) - executeCommand(cmd, cfg, log) - - else: - #- Don't crash if hdr is mangled and doesn't have EXPOSURE - if 'EXPOSURE' in hdr: - log.info("Skipping %s exposure %d." % (platetype, hdr['EXPOSURE'])) - else: - log.info("Skipping %s exposure." % platetype) - return - - - -#### -def doBookKeeping(cfg, log): - """Do SVN Book Keeping. Command are not retried.""" - - speclogDir = cfg.plugDir - - #log.info("Doing a bookkeeping svn update on $SPECLOG_DIR: " + speclogDir) - #svnUp(speclogDir, cfg, log) - #log.info("Doing a bookkeeping svn add on $SPECLOG_DIR: "+ speclogDir) - #svnAdd(os.path.join(speclogDir, cfg.MJD), cfg, log) - #svnAdd(os.path.join(speclogDir, cfg.MJD, "*"), cfg, log) - #log.info("Doing a bookkeeping svn commit on $SPECLOG_DIR: " + speclogDir) - #svnCommit(speclogDir, cfg, log) - - - -#### -def watch(workers, cfg, log): - """ Watch for new files - - When a new file comes in read the header to look for the plugmap and then check to see - if the plugmap file exists. If it doesn't, get the plugmap from the database and put it - into the proper MJD directory. Create the proper MJD directory for the plugmap if needed. - - Next, check to see if a newer MJD has been created. If there are no new files and no new - MJD then sleep for cfg.pollDelay. - - Note that only the latest MJD is ever checked, so once a new MJD is created only that MJD - will be checked. - """ - - # We do some book keeping every 60 minutes. Calculate the number of pauses between book keeping - # Add a random factor so all instances don't try and do it at the same time. - bookKeepingPauses = 60 * 60 / cfg.pollDelay -# bookKeepingPauses += int(random.random() * bookKeepingPauses * .2) # only one bookkeeper for now - bookKeepingCount = bookKeepingPauses - log.info("Setting bookKeepingPauses to " + str(bookKeepingPauses)) - - - # Do an initial bookeeping to make svn is up to date before we start - if cfg.bookkeep: - log.info("Entering initial bookkeeping mode") - doBookKeeping(cfg, log) - - while True: - pause = True - - # Have we been nicely asked to kill ourselves? - # Do we have an outstanding die signal - isitTimeToDie(cfg, log) - - # First check for new files - for worker in workers: - files = lsltr(os.path.join(cfg.fitsDir, cfg.MJD), worker.glob) - if len(files) != worker.fileCount: - pause = False - new = len(files) - worker.fileCount - log.info("Found " + str(new) + " new files in " + - os.path.join(cfg.fitsDir, cfg.MJD, worker.glob)) - # File could get deleted... - if new > 0: - processNewBOSSFiles(worker, files[-1 * new:], cfg, log) - worker.fileCount = len(files) - - # Next check for a new MJD. Don't wait if there's a new MJD - if updateMJD(workers, cfg, log): pause = False - - # Pause if asked - if pause: - if cfg.bookkeep: - bookKeepingCount -= 1 - if bookKeepingCount < 1: - log.info("Entering book keeping mode") - bookKeepingCount = bookKeepingPauses - doBookKeeping(cfg, log) - else: - log.info("Bookkeeping in " + str(bookKeepingCount) + " sleeps.") - log.info("Sleeping for " + str(cfg.pollDelay) + " seconds.") - time.sleep(cfg.pollDelay) - - -#### -def main(): - """The program""" - - # Make the logger global so we use it for exception handling - global logger - - config = sos_classes.Config(); - logger = None - - # A cry for help? - if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "-?"): - usage() - sys.exit(100) - - # Initialize - config = initializeParms() - logger = initializeLogger(config) - writeVersionInfo(config, logger) -# setupPlateDbAndIdlspec2d(config) - - # Do we have an outstanding die signal - isitTimeToDie(config, logger) - - # Make sure we're the only copy running with our globs. If we're not, then exit cleanly - lock = oneInstanceCheck(config, logger) - - # Check svn access - if not svnCheck(config.plugDir, config, logger): - logger.critical("Could not svn access " + config.plugDir) - print "Could not svn access " + config.plugDir - print >> sys.stderr, "Could not svn access " + config.plugDir - - # Find correct MJD to start on - initializeMJD(config, logger) - - # Create poll workers and initialize file counts - pollWorkers = createPollWorkers(config, logger) - initializePollWorkers(pollWorkers, config, logger) - if config.redo: - resetPollWorkers(pollWorkers, config, logger) - - # Watch for new files. Forever... Unless there are exceptions. Then - # try up to 3 times to get it working. But mostly... Forever! - - crashes = 3 - while crashes > 0: - try: - watch(pollWorkers, config, logger) - except SystemExit: - raise - except: - crashes = crashes - 1 - if crashes > 0: - logger.exception("!!! Uncaught exception in watch() !!! Will Retry !!!") - else: - logger.exception("!!! TOO MANY Uncaught exceptions in watch() !!!") - raise diff --git a/old_bin/sos_runnerd_processlist b/old_bin/sos_runnerd_processlist deleted file mode 100755 index 2e7d48191..000000000 --- a/old_bin/sos_runnerd_processlist +++ /dev/null @@ -1,561 +0,0 @@ -#!/usr/bin/env python - -import os, sys, fcntl, time, commands -import logging, logging.handlers, getopt, glob -import sos_classes, fb_classes, sxpar - -""" -sos_runnerd: - -sos_runnerd polls a directory structure looking for new files matching a glob and appending them to a process list. -The directory structure is root/$MJD. By default, when run sos_runnerd goes to the latest MDJ and starts looking -for new files. Many globs can be specified. - -Each glob will go into its own process queue numbered 1 .. n, n being the number of globs specified. Exactly one -sos_batchd process must be run per glob. Each sos_batchd process must specifiy which numbered process queue it should -service. This is a bit of hack and not that flixible, but the original design didn't take into account that the files -needed to be processed sequentially by glob, so this is what we have. - -Everytime the sos_runnerd looks for a new file, if it doesn't find one, it will also look for a later MJD. If it -finds one, it will start looking there for new files. sos_runnerd never looks at previous MJDs and will only look -at one MJD at a time. - -sos_runnerd look at command line arguments and a configuration file named sos_config.ini. Command line arguments -always have precedence. Parameters and sos_config.ini names are defined in usage(). - -Notes to run: - In order to run, the environment must be setup: - setup platedb - ssh-agent a key that can commit svn - - setting up platedb is optional. runnerd will try and do it automatically, but it - requires a late version of eups to work and isn't guaranteed to work. - -Written by Gary Kushner (LBL). Oct 2009. - -""" - -#### -## Globals Block. -#### - - - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print """ -Parameters and sos_config.ini names are: - - -glob (-g) : default * : glob to look for. Can have many. Each glob will preserve order - processing of files -nosvn (-x) : default not set : Run without doing any svn processing -command (-c) : default echo-to-log : Command to run on found files. -pollDelay (-d) : default 60 seconds : Seconds to wait before interrogating directing -logDir (-l) : default . : Place to place log files -logLevel (-v) : default 30 : 30 = WARNING; -v = 20 = INFO; -v -v = 10 = DEBUG -controlDir (-o) : default . : Place to find config file and place process lists -fitsDir (-r) : default $FITSFILES : Where to look for new files in MJD subdirectories -plugDir (-p) : default $SPECLOG_DIR : Where to look for and put plugmap files in MJD subdirs -initialMJD (-m) : default now : MJD to start looking for new files. Can't imagine why it wouldn't - be the current mjd. (Not Implemented) - -For the command, the following substitutions can be made: - %%f for the globbed (fits) file name w/o path information - %%qf for the fully qualified globbed (fits) file name. - %%pf for the path to the globbed (fits) file. - %%p for the plugmap file w/o path information - %%qp for the fully qualified plugmap file name - %%pp for the path to the plugmap file. - %%m for the current mjd - """ - sys.exit(1) - - -#### -def screamAndDie(msg): - """Log a message and then exit""" - - print >> sys.stderr, msg - print >> sys.stderr, "GOODBYE!" - log = logging.getLogger(sos_classes.Consts().logName) - log.critical(msg) - log.critical("GOODBYE!") - sys.exit(1) - -#### -def oneInstanceCheck(): - """Only one instance of this daemon should be running. The normal setup is to have chron try - and start it every so often and if it is still running, then this procedure will abort. It - writes a message to stdout, but that usually should be shipped to >dev/null""" - - lock = open(sos_classes.Consts().runnerLockFile, 'w') - try: - fcntl.flock(lock, fcntl.LOCK_EX | fcntl.LOCK_NB) - except IOError as (errno, errstr): - if errno != 35: raise - print >> sys.stderr, "oneInstanceCheck failed gracefully." - sys.exit(0) - - return lock - - -#### -def setupPlateDb(): - """Setup plateDb. Do nothing on failure.""" - - try: - import eups - Eups = eups.Eups(verbose=0) - cmds = eups.setup(Eups, "platedb", eups.Current()) - except: - pass - -#### -def parseConfigFile(cfg): - """Parse the config file""" - - -#### -def parseCmdLine(cfg): - """Parse command line arguments""" - - globs = [] # fill in the command line globs - verbose = 0 - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(sys.argv[1:], "g:c:d:l:vc:p:r:m:o:x") - except: - usage() - - if len(pargs) != 0: - usage() - - # Fill in the config - for (opt, value) in opts: - if opt == "-g": - globs.append(value) - if opt == "-c": - cfg.command = value - if opt == "-d": - cfg.pollDelay= int(value) - if opt == "-l": - cfg.logDir = value - if opt == "-v": - verbose += 1 - if opt == "-o": - cfg.controlDir = value - if opt == "-r": - cfg.fitsDir = value - if opt == "-p": - cfg.plugDir = value - if opt == "-m": - cfg.MJD = value; - if opt == "-x": - cfg.nosvn = True - - # Any globs override default - if (len(globs) != 0): - cfg.glob = globs - # Don't want to apply -v on each call, so always start with a base - if (verbose > 0): - cfg.logLevel = max(1, sos_classes.Config().logLevel - verbose * 10) - - # Display config values on any verbosity - if (verbose > 1): - print "Config values: \n" + str(cfg) - - -#### -def initializeParms(): - """Initialize all the parameters.""" - cfg = sos_classes.Config(); - - # Parse command line to get config.ini information - parseCmdLine(cfg) - # Parse config.ini to get new defaults - parseConfigFile(cfg) - # Parse command line again to give command line precedence - parseCmdLine(cfg) - - return cfg - - -#### -def initializeLogger(cfg): - """Startup logging and set the level""" - - lname = os.path.join(cfg.logDir, sos_classes.Consts().logName) - print "Starting to log to " + lname - - log = logging.getLogger(sos_classes.Consts().logName) - h = logging.handlers.RotatingFileHandler(lname, maxBytes=1024*1024, backupCount=3) - f = logging.Formatter("%(asctime)s-%(levelname)s: %(message)s") - h.setFormatter(f) - h.setLevel(cfg.logLevel) - log.setLevel(cfg.logLevel) - log.addHandler(h) - - log.critical("Hello. " + sys.argv[0] + " started.") - log.critical("Startup Configuration is: \n\n" + str(cfg) + "\n\n") - - return log - - -#### -def createPollWorkers(cfg, log): - """Create poll workers""" - - workers = [] - - num = 1 - for glob in cfg.glob: - p = sos_classes.PollWorker() - p.glob = glob - p.workerNumber = num - num += 1 - workers.append(p) - log.debug("\nnew PollWorker:\n" + str(p)) - - return workers - - -#### -def initializePollWorkers(workers, cfg, log): - """Initialize poll workers with latest file counts""" - - for worker in workers: - worker.fileCount = len(glob.glob(os.path.join(cfg.fitsDir, cfg.MJD, worker.glob))) - log.debug("\nInitialized PollWorker:\n" + str(worker)) - - - -#### -def lsltr(dir, regex="*"): - """return a modification-time sorted list of files in dir""" - - files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] - files.sort(key=lambda tm: os.path.getmtime(tm)) - - return files - - -#### -def ls(dir, regex="*"): - """return a name sorted list of files in dir""" - - files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] - files.sort() - - return files - - - - -#### -def initializeMJD(cfg, log): - """Find the correct MJD to start looking for new files. If the user specifies an MJD just test - to see if it exists, otherwise, use the latest MJD.""" - - # First check for user specified - if cfg.MJD != "0": - path = os.path.join(cfg.fitsDir, cfg.MJD) - if not os.path.isdir(path): - screamAndDie("Could not find user specified MJD path: " + path) - log.info("Using user specified MJD " + path) - else: - regex = sos_classes.Consts().MJDGlob; - try: - log.debug("Looking for initial MJD in " + cfg.fitsDir) - cfg.MJD = ls(cfg.fitsDir, regex)[-1][-5:] - log.info("Latest initial MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) - except: - screamAndDie("Could not find latest MJD in " + cfg.fitsDir) - - -#### -def updateMJD(workers, cfg, log): - """Check to see if a new MJD exists""" - - regex = sos_classes.Consts().MJDGlob; - try: - MJD = ls(cfg.fitsDir, regex)[-1][-5:] - if (MJD == cfg.MJD): - return - - cfg.MJD = MJD[-5:] - for worker in workers: - worker.fileCount = 0 - - log.info("Latest updated MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) - except: - screamAndDie("Could not find latest MJD in " + cfg.fitsDir) - - -#### -def svnAdd(uri, cfg, log): - """Add a file to svn""" - - if cfg.nosvn: - return - - log.info("svn adding " + uri + " to svn") - rc = commands.getstatusoutput("svn add " + uri) - if rc[0] != 0: - log.critical("\nCould not add to svn: " + uri + "\n" + rc[1]) - -def svnCommit(uri, cfg, log): - """Run commit on a dir""" - - if cfg.nosvn: - return - - log.info("svn committing " + uri) - rc = commands.getstatusoutput("svn commit " + uri + " -m 'committed by sos_runnerd'") - if rc[0] != 0: - log.critical("\nCommit failed on " + uri + "\n" + rc[1]) - -def svnUp(uri, cfg, log): - """Update a dir""" - - if cfg.nosvn: - return - - log.info("svn updating " + uri) - rc = commands.getstatusoutput("svn up " + uri) - if rc[0] != 0: - log.critical("\nUpdate failed on " + uri + "\n" + rc[1]) - - -def svnCheck(uri, cfg, log): - """Check that we can access the log of the file. Return False on not able to access.""" - - if cfg.nosvn: - return True - - log.info("Checking svn access to " + uri) - rc = commands.getstatusoutput("svn log " + uri) - return rc[0] == 0 - - -#### -def checkPlugMan(file, cfg, log): - """ - Get a plugmap file from the database if needed. Uses the platedb command catPlPlugMapM so - make sure platedb is setup! - - Returns the fully qualified name of the plugmap file - """ - - dirty = False # svn dirty bit - speclogDir = cfg.plugDir - plugmapDir = os.path.join(speclogDir, cfg.MJD) - - log.debug("Current plugmap directory is " + plugmapDir) - - # Get plugmap used by file - try: - plugmapFullId = sxpar.sxpar(file, "NAME")[0] - except TypeError as t: - log.critical("\nCould not parse " + file + "\n ->" + str(t)) - return "" - - - # Parse plugmap name - plugmapName = "plPlugMapM-" + plugmapFullId + ".par" - plugmapId = plugmapFullId.split("-")[0] - log.debug(file + " uses plugmap " + plugmapFullId + " with Id " + plugmapId) - log.debug(" full name of plugmap file is " + plugmapName) - - # See if the plugmap $MJD dir exists, if not create it and add it to svn - if not os.path.isdir(plugmapDir): - log.info("Creating " + plugmapDir) - os.mkdir(plugmapDir) - svnAdd(plugmapDir, cfg, log) - dirty = True - - # Check if the file exists, if not get it and add it to svn - plugpath = os.path.join(plugmapDir, plugmapName) - if not os.path.isfile(plugpath): - log.info("Getting from platdb: " + plugmapName) - rc = commands.getstatusoutput("catPlPlugMapM " + plugmapId) - if rc[0] != 0: - log.critical("Could not get plugmap for Id " + plugmapId) - else: - f = open(plugpath, "w") - f.write(rc[1]) - f.close() - log.info("Created " + plugpath) - svnAdd(plugpath, cfg, log) - svnCommit(speclogDir, cfg, log) - - return os.path.abspath(plugpath) - - - -#### -def createCMD(fglob, plugPath, cfg): - """Create command with substitutions - - %%f for the globbed (fits) file name w/o path information - %%qf for the fully qualified globbed (fits) file name. - %%pf for the path to the globbed (fits) file. - %%p for the plugmap file w/o path information - %%qp for the fully qualified plugmap file name - %%pp for the path to the plugmap file. - %%m for the current MJD - """ - - qf = os.path.abspath(fglob) - f = os.path.basename(qf) - pf = os.path.dirname(qf) - - qp = os.path.abspath(plugPath) - p = os.path.basename(qp) - pp = os.path.dirname(qp) - - cmd = cfg.command - - cmd = cmd.replace("%%f", f) - cmd = cmd.replace("%%qf", qf) - cmd = cmd.replace("%%pf", pf) - cmd = cmd.replace("%%pp", pp) # this line needs to be before %%p - cmd = cmd.replace("%%p", p) - cmd = cmd.replace("%%qp", qp) - cmd = cmd.replace("%%m", cfg.MJD) - - return cmd - - - -#### -def processNewBOSSFiles(worker, files, cfg, log): - """ Process new fits files - - Check to see if the plugmap file exists in the correct location, if it does not then - create it (get it from the database). Then add the appropiate APO command to the - correctly numbered process list. """ - - for f in files: - log.info("processing new file: " + f) - - # Pull plugmap from the db if needed - plugpath = checkPlugMan(f, cfg, log) - - # Create the command and add to batch queue - cmd = createCMD(f, plugpath, cfg) - plname = fb_classes.Consts().processListName - plname = os.path.join(cfg.controlDir, plname) + str(worker.workerNumber) - fb_classes.ProcessList(plname).append(cmd) - log.info("\nAdding command to process list:\n ->" + cmd) - - -#### -def doBookKeeping(cfg, log): - """Do SVN Book Keeping. Command are not retried.""" - - speclogDir = cfg.plugDir - - #log.info("Doing a bookkeeping svn update on $SPECLOG_DIR: " + speclogDir) - #svnUp(speclogDir, cfg, log) - #log.info("Doing a bookkeeping svn commit on $SPECLOG_DIR: " + speclogDir) - #svnCommit(speclogDir, cfg, log) - - - -#### -def watch(workers, cfg, log): - """ Watch for new files - - When a new file comes in read the header to look for the plugmap and then check to see - if the plugmap file exists. If it doesn't, get the plugmap from the database and put it - into the proper MJD directory. Create the proper MJD directory for the plugmap if needed. - - Next, check to see if a newer MJD has been created. If there are no new files and no new - MJD then sleep for cfg.pollDelay. - - Note that only the latest MJD is ever checked, so once a new MJD is created only that MJD - will be checked. """ - - # We do some book keeping every 30 minutes, calculate the number of pauses between book keeping -# bookKeepingPauses = 30 * 60 / cfg.pollDelay - bookKeepingPauses = 5 * 60 / cfg.pollDelay - bookKeepingCount = bookKeepingPauses - - while True: - pause = True - - # First check for new files - for worker in workers: - files = lsltr(os.path.join(cfg.fitsDir, cfg.MJD), worker.glob) - if len(files) != worker.fileCount: - pause = False - new = len(files) - worker.fileCount - log.info("Found " + str(new) + " new files in " + - os.path.join(cfg.fitsDir, cfg.MJD, worker.glob)) - # File could get deleted... - if new > 0: - processNewBOSSFiles(worker, files[-1 * new:], cfg, log) - worker.fileCount = len(files) - - # Next check for a new MJD. Don't wait if there's a new MJD - if updateMJD(workers, cfg, log): pause = False - - # Pause if asked - if pause: - bookKeepingCount -= 1 - if bookKeepingCount < 1: - log.info("Entering book keeping mode") - bookKeepingCount = bookKeepingPauses - doBookKeeping(cfg, log) - log.debug("Sleeping for " + str(cfg.pollDelay) + " seconds. Bookkeeping in " + str(bookKeepingCount) + " pauses.") - time.sleep(cfg.pollDelay) - - -#### -def main(): - """The program""" - - # Make sure we're the only copy running. If we're not, then exit cleanly - lock = oneInstanceCheck() - - config = sos_classes.Config(); - logger = None - - # A cry for help? - if len(sys.argv) > 1 and (sys.argv[1] == "-h" or sys.argv[1] == "-?"): - usage() - sys.exit(100) - - # Initialize - setupPlateDb() - config = initializeParms() - logger = initializeLogger(config) - - # Check svn access - if not svnCheck(config.plugDir): - screamAndDie("Could not svn access " + config.plugDir) - - # Find correct MJD to start on - initializeMJD(config, logger) - - # Create poll workers and initialize file counts - pollWorkers = createPollWorkers(config, logger) - initializePollWorkers(pollWorkers, config, logger) - - # Watch for new files. Forever... - watch(pollWorkers, config, logger) - - - -### Start of script - -if __name__=='__main__': - main() - - diff --git a/old_bin/sxpar.py b/old_bin/sxpar.py deleted file mode 100755 index 0fabe57d3..000000000 --- a/old_bin/sxpar.py +++ /dev/null @@ -1,123 +0,0 @@ -#!/usr/bin/env python - -import sys, os, getopt, time -import putils - -""" -sxpar: - -Simply parse a fits header. Copied from perl "sxpar by D. Finkbeiner 2001 Dec 20". - -Can read uncompressed or gz files. - -Written by Gary Kushner (LBL). Oct 2009. - -""" - -#### -def usage(): - """Display usage and exit""" - - usageCMD = os.path.basename(sys.argv[0]) - - print "usage:" - print "\t%s [-v] fits-file [keyword]" % usageCMD - - sys.exit(1) - -#### -def sxparRetry(fitsfile, keyword = None, verbose = False, retries = 0): - """call sxpar with retries. To see if the fits wasn't finished writing.""" - while True: - try: - return sxpar(fitsfile, keyword, verbose) - except: - if retries < 0: - raise - retries = retries - 1 - time.sleep(1) - -#### -def sxpar(fitsfile, keyword = None, verbose = False): - """Parse fits header and return output list""" - - isFits = False - output = [] - - if keyword != None: - keyword = keyword.upper() - - f = putils.openRead(fitsfile) - i = 0 - while True: - i += 1 - line = f.read(80) - - key = line.split("=")[0].strip() - - if key == "SIMPLE": - isFits = True - continue - if key == "END": - break - - if i > 40 and not isFits: - raise TypeError(fitsfile + " Doesn't look like a fits file -- did not find 'SIMPLE'") - - if keyword == None or key == keyword: - values = line.partition("=")[2].partition("/") -# comment = values[2].strip() - value = values[0].strip().strip("'").strip() - - if verbose: - output.append(line) - elif keyword == None: - output.append(key + " = " + value) - else: - output.append(value) - #fi - - return output - - -#### -def main(argv): - """Parse arguments and run the script""" - - fitsfile = None - verbose = False - keyword = None - - if len(argv) == 0: - usage() - - - # parse with options - try: - opts, pargs = getopt.gnu_getopt(argv, "v") - except: - usage() - - if len(pargs) == 0: - usage() - - for (opt, value) in opts: - if opt == "-v": - verbose = True - - fitsfile = pargs[0] - if len(pargs) > 1: - keyword = pargs[1] - - output = sxpar(fitsfile, keyword, verbose) - - for l in output: - print l - - - -if __name__=='__main__': - main(sys.argv[1:]) - - - \ No newline at end of file diff --git a/opfiles/Baddata.par b/opfiles/Baddata.par deleted file mode 100644 index 392967fe3..000000000 --- a/opfiles/Baddata.par +++ /dev/null @@ -1,32 +0,0 @@ - -type enum { - LEGACY, # classic BOSS SP1+SP2 - PLATES, # Single BOSS SP1 - FPS, # FPS - NONE # None -} FIELDVER; - -typedef struct { - FIELDVER fieldver; #version of Field - long fieldid; #fieldid of bad data - long mjd; #mjd of bad data - char expid[8]; #bad exposureid - char Note[99]; #description - char dr[5]; #if flag is only for a particular DR/IPL - } BADDATA; - - -BADDATA FPS 0 -1 "" "engineering" "" -BADDATA FPS 100499 59797 "00345099" "Issue with Arc Lamp" "" -BADDATA FPS 100520 59733 "" "inadvertent telescope offset" "" -BADDATA FPS 100542 59733 "" "inadvertent telescope offset" "" -BADDATA FPS 100981 59733 "" "inadvertent telescope offset" "" -BADDATA FPS 20549 59623 "" "Unguided" "" -BADDATA FPS 16165 59615 "" "Incorrect design/configuration" "" -BADDATA FPS 16174 59569 "" "No BOSS Fiber" "" -BADDATA LEGACY 9438 58125 "00258988" "because of trail in data" "" -BADDATA LEGACY 7338 57000 "" "Skipping eBOSS plates and RM plates for DR13" "DR13" -BADDATA LEGACY 7339 57000 "" "Skipping eBOSS plates and RM plates for DR13" "DR13" -BADDATA LEGACY 7340 57000 "" "Skipping eBOSS plates and RM plates for DR13" "DR13" -BADDATA LEGACY 7339 57000 "" "Skipping eBOSS plates and RM plates for DR13" "DR13" - diff --git a/opfiles/opSNlimits.par b/opfiles/opSNlimits.par index 7c9d5790c..c73727dfa 100644 --- a/opfiles/opSNlimits.par +++ b/opfiles/opSNlimits.par @@ -22,10 +22,14 @@ specsnlimit sos i {20.0 22.0} 21.0 -0.36 specsnlimit sos z {21.0 22.0} 21.0 -0.6 -# Fidicual blue line set to show S/N^2=16,26 at g,i=22,21 -specsnlimit sos2 g {18.0 20.0} 19.0 -0.32 < +# Fidicual at g,i=19,19 +specsnlimit sos2 g {18.0 20.0} 19.0 -0.32 specsnlimit sos2 i {18.0 20.0} 19.0 -0.36 +# Fidicual at g,i=15,15 +specsnlimit sos15 g {10.5 16.5} 15.0 -0.32 +specsnlimit sos15 i {10.5 16.5} 15.0 -0.36 + # Fidicual blue line set to show S/N^2=16,16,26 at g,i=21.2,21.2,20.2 #specsnlimit spreduce g {20.2 21.2} 21.2 -0.30 # boss #specsnlimit spreduce r {19.2 20.2} 20.2 -0.30 # boss diff --git a/opfiles/spInspect-0000-00000.par b/opfiles/spInspect-0000-00000.par deleted file mode 100644 index c7c920437..000000000 --- a/opfiles/spInspect-0000-00000.par +++ /dev/null @@ -1,13 +0,0 @@ -typedef struct { - long plate; - long mjd; - long fiberid; - float z_pipeline; - float z_person; - int class_person; - int z_conf_person; - char comments[40]; -} BOSSOBJECT; - -BOSSOBJECT 0 0 0 0.0 0.0 0 0 "" - diff --git a/pro/apo2d/apoall.pro b/pro/apo2d/apoall.pro deleted file mode 100644 index 10de94eba..000000000 --- a/pro/apo2d/apoall.pro +++ /dev/null @@ -1,184 +0,0 @@ -;+ -; NAME: -; apoall -; -; PURPOSE: -; Run APOREDUCE on one or many nights of data. -; -; CALLING SEQUENCE: -; apoall, [ mjd=, mjstart=, mjend=, minexp=, copydir= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd - Look for raw data files in RAWDIR/MJD; default to '*' to -; search all subdirectories. Note that this need not be -; integer-valued, but could be for example '51441_test'. -; mjstart - Starting MJD. -; mjend - Ending MJD. -; minexp - Minimum exposure time for science frames; default to 0 sec. -; copydir - Copy the output log files to this directory; default to none. -; -; OUTPUT: -; -; COMMENTS: -; The files are sorted before being sent to APOREDUCE. For each plate, -; reduce all the biases/darks, then all the flats, then all the arcs, -; and finally all of the science/smear frames. -; -; Look for the raw sdR files in $BOSS_SPECTRO_DATA/$MJD, the plPlugMapM files -; in $SPECLOG_DIR/$MJD, and put the outputs in $SPECTROLOG_DIR/$MJD. -; If that last environment variable is not set, then put the outputs -; in the same directory as the sdR files. -; -; EXAMPLES: -; Rerun the SOS code on the spectro data from MJD 53682, putting -; the results in the current directory: -; IDL> setenv, 'BOSS_SPECTRO_DATA=.' -; IDL> apoall, mjd=53682 -; -; BUGS: -; -; PROCEDURES CALLED: -; aporeduce -; djs_filepath() -; get_mjd_dir() -; sdsshead() -; sxpar() -; -; REVISION HISTORY: -; 27-May-2000 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro apoall, mjd=mjd, mjstart=mjstart, mjend=mjend, $ - minexp=minexp, copydir=copydir, fps=fps - - ;---------- - ; Set directory names, where $SPECTROLOG_DIR is used for the output dir - - rawdata_dir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(rawdata_dir)) then $ - message, 'BOSS_SPECTRO_DATA not set!' - - if (NOT keyword_set(fps)) then begin - astrolog_dir = getenv('SPECLOG_DIR') - var_log='SPECLOG_DIR' - endif else begin - astrolog_dir = getenv('SDSSCORE_DIR') - var_log='SDSSCORE_DIR' - endelse - if (NOT keyword_set(astrolog_dir)) then $ - message, var_log+' not set!' - - spectrolog_dir = getenv('SPECTROLOG_DIR') - if (NOT keyword_set(spectrolog_dir)) then begin - splog, 'SPECTROLOG_DIR not set; putting outputs in input directories' - spectrolog_dir = rawdata_dir - endif - - ;---------- - ; Create a list of the MJD directories (as strings) - - mjdlist = get_mjd_dir(rawdata_dir, mjd=mjd, mjstart=mjstart, mjend=mjend) - if (NOT keyword_set(mjdlist)) then begin - splog, 'No matching MJD directories found' - return - endif - splog, 'Number of MJDs = ', n_elements(mjdlist) - - ;--------------------------------------------------------------------------- - ; Loop through each input directory - - for imjd=0, n_elements(mjdlist)-1 do begin - - mjddir = mjdlist[imjd] - inputdir = filepath('', root_dir=rawdata_dir, subdirectory=mjddir) - plugdir = filepath('', root_dir=astrolog_dir, subdirectory=mjddir) - outdir = filepath('', root_dir=spectrolog_dir, subdirectory=mjddir) - - splog, 'Data directory ', inputdir - splog, 'Astrolog directory ', plugdir - splog, 'Output directory ', outdir - - ;---------- - ; Make certain that the output directory exists. - - spawn, 'mkdir -p ' + outdir - - ;---------- - ; Find all raw FITS files in this directory - - fullname = findfile( djs_filepath('sdR*.fit*', root_dir=inputdir), $ - count=nfile) - splog, 'Number of FITS files found: ', nfile - - if (nfile GT 0) then begin - - ;---------- - ; Find all useful header keywords - - CONFID = lonarr(nfile) - FLAVOR = strarr(nfile) - FIELDID = strarr(nfile) - CAMERAS = strarr(nfile) - for ifile=0, nfile-1 do begin - ; Print something since this might take a while to read all the - ; FITS headers... - print, format='(".",$)' - - hdr = sdsshead(fullname[ifile]) - - if (size(hdr,/tname) EQ 'STRING') then begin - if (NOT keyword_set(fps)) then begin - ; the configuration id is set as the plateid, this is only for the sdss-v plate program - CONFID[ifile] = long( sxpar(hdr, 'PLATEID') ) - endif else begin - CONFID[ifile] = long( sxpar(hdr, 'CONFID') ) - FIELDID[ifile] = strtrim(sxpar(hdr, 'FIELDID'),2) - endelse - FLAVOR[ifile] = strtrim(sxpar(hdr, 'FLAVOR'),2) - CAMERAS[ifile] = strtrim(sxpar(hdr, 'CAMERAS'),2) - endif - endfor - - ;---------- - ; Determine all the configuration numbers - - confignums = CONFID[ uniq(CONFID, sort(CONFID)) ];PLATEID - - ;---------- - ; Loop through each plate, flavor, and camera. - ; Must reduce arcs after flats, science after arcs. - ; Reduce r2 camera last, so that HTML file is created at the end. - - flavlist = ['bias', 'dark', 'flat', 'arc', 'science', 'smear'] - camlist = ['b1', 'r1'];['b1', 'b2', 'r1', 'r2'] - - for iconf=0, n_elements(confignums)-1 do begin - for iflav=0, n_elements(flavlist)-1 do begin - for icam=0, n_elements(camlist)-1 do begin - ii = where(CONFID EQ confignums[iconf] $ - AND FLAVOR EQ flavlist[iflav] $ - AND CAMERAS EQ camlist[icam]) - if (ii[0] NE -1) then $ - aporeduce, fileandpath(fullname[ii]), $ - indir=inputdir, outdir=outdir, $ - plugdir=plugdir, minexp=minexp, copydir=copydir, $ - /no_diskcheck, /no_lock, fps=fps - ;print,fullname[ii] - ;aporeduce, fileandpath('sdR-b1-00312974.fit.gz'), $ - ; indir=inputdir, outdir=outdir, $ - ; plugdir=plugdir, minexp=minexp, copydir=copydir, $ - ; /no_diskcheck, /no_lock, fps=fps - ;exit - endfor - endfor - endfor - - endif - - endfor ; End loop through input directory names (one MJD) - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/apod.pro b/pro/apo2d/apod.pro deleted file mode 100644 index 16a42ec83..000000000 --- a/pro/apo2d/apod.pro +++ /dev/null @@ -1,96 +0,0 @@ -; Script to run SOS as observer@sos3.apo -; The plPlugMap files must be in your current directory. -; Log files are written in your current directory to indicate which -; files have already been reduced. -; One can use the 4 CPUs by starting one instance of this proc -; for each CAMNAME; default to CAMNAME='??' to do all cameras with 1 CPU. -; If MJD is not specified, then use the most recent. -; Loop forever, and roll over to new MJDs (if MJD not specified). -;------------------------------------------------------------------------------ -pro apod1, mjd=mjd, camname=camname - - if (keyword_set(mjd)) then begin - mjdstr = strtrim(string(mjd[0]),2) - endif else begin - spawn, '\ls -d /data/spectro/5????', alldir - alldir = fileandpath(alldir) - foo = max(long(alldir), ilast) - mjdstr = alldir[ilast] - endelse - if (NOT keyword_set(camname)) then camname = '??' - - indir='/data/spectro/'+mjdstr -; outdir='/data/boss/sos/'+mjdstr -outdir='./' - plugdir='./' -; copydir='/data/boss/sos/combined' -copydir='' - filename = fileandpath(findfile(indir+'/sdR-'+camname+'*.fit.gz',count=nfile)) - if (nfile GT 0) then begin - ; If file exists, then sort them and trim to only BOSS data - ; (e.g., exclude MaNGA data) and to bias+dark frames - filename = filename[sort(filename)] - qkeep = bytarr(nfile) - for i=0L, nfile-1L do begin - thishdr = headfits(filepath(filename[i],root_dir=indir)) - thistyp = strtrim(sxpar(thishdr,'PLATETYP'),2) - thisflav = strtrim(sxpar(thishdr,'FLAVOR'),2) - if (keyword_set(thistyp)) then $ - qkeep[i] = thistyp EQ 'eBOSS' - qkeep[i] = qkeep[i] OR (thisflav EQ 'bias') OR (thisflav EQ 'dark') - endfor - ikeep = where(qkeep, nfile) - if (nfile GT 0) then $ - filename = filename[ikeep] $ - else filename = '' - endif - for i=0L,nfile-1L do begin - logfile=filename[i]+'.log' - thisfile = (findfile(logfile))[0] - if (keyword_set(thisfile) EQ 0) then begin - splog, filename=logfile, 'Begin '+filename[i], /close - aporeduce, filename[i], indir=indir, outdir=outdir, $ - plugdir=plugdir, copydir=copydir - splog, filename=logfile, 'Done '+filename[i], /close, /append - - ; Logic to reduce an arc preceding a flat. - hdr = sdsshead(filename[i], indir=indir) - if ((strtrim(sxpar(hdr,'FLAVOR')) EQ 'flat') AND $ - strtrim(sxpar(hdr,'QUALITY')) EQ 'excellent') then begin - prevexp = sxpar(hdr,'EXPOSURE') - 1 - prevfile = indir+'/sdR-'+camname+'-' $ - +string(prevexp,format='(i8.8)')+'.fit.gz' - splog, 'Searching for previous file='+prevfile - prevfile = fileandpath((findfile(prevfile))[0]) - if (keyword_set(prevfile)) then begin - splog, 'Found previous file='+prevfile - prevhdr = sdsshead(prevfile, indir=indir) - if ((strtrim(sxpar(prevhdr,'FLAVOR')) EQ 'arc') AND $ - (strtrim(sxpar(hdr,'QUALITY')) EQ 'excellent')) then begin - splog, 'Reduce previous file='+prevfile - prevlog = prevfile+'.log' - splog, filename=prevlog, 'Begin '+prevfile, /close - aporeduce, prevfile, indir=indir, outdir=outdir, $ - plugdir=plugdir, copydir=copydir - splog, filename=prevlog, 'Done '+prevfile, /close, /append - endif else begin - splog, 'Ignore previous file='+prevfile - endelse - endif - endif - endif - endfor - - return -end -;------------------------------------------------------------------------------ -pro apod, mjd=mjd, camname=camname - - while (1) do begin - apod1, mjd=mjd, camname=camname - wait, 10 - endwhile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/apofix.pro b/pro/apo2d/apofix.pro deleted file mode 100644 index 1bae03e53..000000000 --- a/pro/apo2d/apofix.pro +++ /dev/null @@ -1,604 +0,0 @@ -;+ -; NAME: -; apofix -; -; PURPOSE: -; Add line to sdHdrFix file to denote change in FITS header for sdR files. -; -; CALLING SEQUENCE: -; apofix, expnum, [ card, value, camera=, copydir=, /bad, /test, /excellent, /not_sos ] -; -; INPUTS: -; expnum - Exposure number -; -; OPTIONAL INPUTS: -; card - FITS header keyword to change; this is case-insensitive, -; so that 'exptime' is the same as 'EXPTIME'. -; value - New value for FITS header keyword. -; camera - Camera name in which to change values, e.g. 'b1', 'r1', -; 'b2' or 'r2'. A '?' can be used as a wildcard, for example -; '?2' to denote a change to both 'b2' and 'r2'. Default to -; '??' to denote a change to sdR files for all 4 cameras. -; copydir - If set, then copy the output log files to this directory, default is -; to copy to /data/boss/sos/combined -; bad - If set, then declare the specified exposure number to be bad. -; This is equivalent to setting QUALITY='bad'. -; test - If set, then declare the specified exposure number to be test. -; This is equivalent to setting QUALITY='test'. -; excellent - If set, then declare the specified exposure number to be excellent. -; This is equivalent to setting QUALITY='excellent'. -; not_sos - This keyword can be set to run this proc on a machine -; that is not named "sos" or "sos3". This would only be done for -; testing purposes, or if Son-of-Spectro has been moved -; to another machine. -; sos_dir - This keyword sets the location of the sos output files -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Only the following keywords can be modified with this procedure: -; CAMERAS, FLAVOR, PLATEID, NAME, EXPTIME, TAI-BEG, TAI-END, TAI, -; FFS, FF, NE, HGCD, OBSCOMM, QUALITY -; The AIRMASS is not read from the header, but computed from RADEG,DECDEG -; and the TAI-BEG,TAI-END keywords. -; Refer to the Son-of-Spectro documentation for the specifics of -; valid values for each keyword. -; -; Note that string values must be enclosed in single- or double-quotes. -; Numeric values should not be in quotes. Double-precision numbers should -; be written with "d" notation, for example 3.14d7 instead of 3.14e7. -; -; EXAMPLES: -; Fix the exposure time for exposure #1234 to be 900 sec: -; IDL> apofix, 1234, 'exptime', 900 -; -; Fix the TAI time for exposure #1234 to be 4.443852968d+09 -; (use the "d" notation for double-precision, even though it -; will appear in the sdHdrFix file with an "e"): -; IDL> apofix, 1234, 'TAI', 4.443852968d+09 -; -; Declare exposure #1234 as bad: -; IDL> apofix, 1234, /bad -; or equivalently: -; IDL> apofix, 1234, 'quality', 'bad' -; -; Only declare the 'b1' camera bad for exposure number 1234: -; IDL> apofix, 1234, /bad, camera='b1' -; -; The wrong NAME is in the header, which is necessary to identify -; the proper plug-map file. If the correct plug-map file -; is plPlugMapM-0328-52277-01, then edit as follows: -; IDL> apofix, 1234, 'name', '0328-52277-01' -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_lockfile() -; djs_modfits -; djs_unlockfile -; fileandpath() -; fits_wait -; headfits() -; struct_append -; sxpar() -; yanny_read -; -; REVISION HISTORY: -; 22-Apr-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro apofix, expnum, card, newval, copydir=copydir, camera=camera, bad=bad, test=test, $ - excellent=excellent, force=force, sos_dir=sos_dir - - common apofix_com, apo_uname, apo_user - - if (n_params() LT 1) then begin - doc_library, 'apofix' - return - end - - !quiet = 1 - - ;---------- - ; Insist that this proc only run on machines named "sos" - - if (NOT keyword_set(apo_uname)) then begin - spawn, 'uname -n', uname_string - apo_uname = (strsplit(uname_string[0], '.', /extract))[0] - endif - - if (NOT keyword_set(apo_user)) then begin - spawn, 'whoami', apo_user - endif - - if (apo_uname NE 'sdss4-eboss' AND apo_user NE 'eboss' $ - AND keyword_set(force) EQ 0) then begin - print, 'Normally this should only be run as eboss@sdss4-eboss.apo.nmsu.edu' - print, 'If you need to run this elsewere (e.g. for testing), you can' - print, 'call this routine with /force' - return - endif - - if keyword_set(force) eq 1 then begin - print,'You are not running this machine on sos or sos3' - print,'Make sure the svn repository has been updated before committing any changes' - endif - - ;---------- - ; Set input directory for sdR files and sdHdrFix file - - rawdata_dir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(rawdata_dir)) then $ - rawdata_dir = '/data/spectro' - - speclog_dir = getenv('SPECLOG_DIR') - if (NOT keyword_set(speclog_dir)) then $ - speclog_dir = '/home/sdss3/products/NULL/speclog/trunk' - - if (NOT keyword_set(copydir)) then $ - copydir = '/data/boss/sos/combined/' - - - ;---------- - ; Create output structure - - fstruct = create_struct( $ - name = 'OPHDRFIX', $ - 'fileroot', '', $ - 'keyword' , '', $ - 'value' , '' ) - - ;---------- - ; Sanity checks on EXPNUM, CAMERA, CARD, VALUE - - expnum = long(expnum) - if (expnum LE 0 OR expnum GT 99999999L OR n_elements(expnum) NE 1) then begin - print, 'EXPNUM must be a number between 1 and 99999999' - return - endif - - if (NOT keyword_set(camera)) then camera = '??' - c1 = strmid(camera,0,1) - c2 = strmid(camera,1,1) - if (size(camera, /tname) NE 'STRING' $ - OR strlen(camera) NE 2 $ - OR n_elements(camera) NE 1 $ - OR (c1 NE '?' AND c1 NE 'b' AND c1 NE 'r') $ - OR (c2 NE '?' AND c2 NE '1' AND c2 NE '2') ) then begin - print, 'CAMERA must be a 2-character string' - return - endif - - if (keyword_set(bad) AND keyword_set(test)) then begin - print, 'Invalid to set both the /BAD and /TEST keywords. Aborting!' - return - endif - - if (keyword_set(bad) AND keyword_set(excellent)) then begin - print, 'Invalid to set both the /BAD and /EXCELLENT keywords. Aborting!' - return - endif - - if (keyword_set(excellent) AND keyword_set(test)) then begin - print, 'Invalid to set both the /EXCELLENT and /TEST keywords. Aborting!' - return - endif - - if (keyword_set(bad)) then begin - if (keyword_set(card) OR keyword_set(value)) then begin - print, 'Invalid to set the /BAD flag along with CARD or VALUE. Aborting!' - return - endif - card = 'QUALITY' - newval = 'bad' - endif - - if (keyword_set(test)) then begin - if (keyword_set(card) OR keyword_set(value)) then begin - print, 'Invalid to set the /TEST flag along with CARD or VALUE. Aborting!' - return - endif - card = 'QUALITY' - newval = 'test' - endif - - if (keyword_set(excellent)) then begin - if (keyword_set(card) OR keyword_set(value)) then begin - print, 'Invalid to set the /EXCELLENT flag along with CARD or VALUE. Aborting!' - return - endif - card = 'QUALITY' - newval = 'excellent' - endif - - if (size(card, /tname) NE 'STRING' $ - OR n_elements(card) NE 1 $ - OR strlen(card) EQ 0 OR strlen(card) GT 8) then begin - print, 'CARD must be a string of 1 to 8 characters' - return - endif - - if (n_elements(newval) NE 1) then begin - print, 'VALUE must be specified (and a scalar)' - return - endif - if (size(newval, /tname) EQ 'DOUBLE') then format='(e17.10)' $ - else format='' - strval = strtrim(string(newval,format=format),2) - if (strpos(strval,'"') NE -1 OR strpos(strval,"'") NE -1) then begin - print, 'VALUE cannot contain single or double-quotes' - return - endif - ; Enclose any string in single-quotes, so that the SPHDRFIX routine - ; can desriminate between strings and numbers. - if (size(newval, /tname) EQ 'STRING') then strval = "'" + strval + "'" - - ;---------- - ; Explicitly test the values for each possible keyword name. - ; This is a different test for each keyword. - - qstring = size(newval, /tname) EQ 'STRING' - case strupcase(card) of - 'EXPOSURE': begin - print, 'The EXPOSURE number is always set to that in the file name. Aborting!' - return - end - 'CAMERAS': begin - possible = ['b1','b2','r1','r2'] - if (total(newval EQ possible) EQ 0) then begin - print, 'Valid values = ', "'"+possible+"'" - print, 'Invalid value for CAMERAS. Aborting!' - return - endif - end - 'FLAVOR': begin - if (newval EQ 'unknown') then begin - print, 'Please set QUALITY to bad instead of setting FLAVOR=unknown. Aborting!' - return - endif - possible = ['bias','dark','flat','arc','science','smear'] - if (total(newval EQ possible) EQ 0) then begin - print, 'Valid values = ', "'"+possible+"'" - print, 'Invalid value for CAMERAS. Aborting!' - return - endif - end - 'MJD': begin - print, 'Not possible to change MJD. This is simply big trouble. Aborting!' - return - end - 'PLATEID': begin - if (long(newval) LE 0 OR long(newval) GT 9999) then begin - print, 'PLATEID must be between 1 and 9999. Quitting!' - return - endif - end - 'NAME': begin - if (strmatch(newval,'[0-9][0-9][0-9][0-9]-[5-9][0-9][0-9][0-9][0-9]-[0-9][0-9]')) then begin - print, 'NAME must be of the form "????-?????-??" [all digits]. Aborting!' - return - endif - end - 'EXPTIME': begin - if (long(newval) LT 0 OR long(newval) GT 3600 OR qstring) then begin - print, 'Valid exposure times must be between 0 and 3600 sec. Aborting!' - return - endif - end - 'TAI-BEG': begin - if (double(newval) LT 4d9 OR double(newval) GT 6d9) then begin - print, 'Valid times are between 4d9 and 6d9. Aborting!' - return - endif - end - 'TAI-END': begin - if (double(newval) LT 4d9 OR double(newval) GT 6d9) then begin - print, 'Valid times are between 4d9 and 6d9. Aborting!' - return - endif - end - 'TAI': begin - if (double(newval) LT 4d9 OR double(newval) GT 6d9) then begin - print, 'Valid times are between 4d9 and 6d9. Aborting!' - return - endif - end - 'FFS': begin - if (strmatch(newval,'[01] [01] [01] [01] [01] [01] [01] [01]')) then begin - print, 'FFS must be of the form "? ? ? ? ? ? ? ?" [all 0 or 1]. Aborting!' - return - endif - end - 'FF': begin - if (strmatch(newval,'[01] [01] [01] [01]')) then begin - print, 'FF must be of the form "? ? ? ?" [all 0 or 1]. Aborting!' - return - endif - end - 'NE': begin - if (strmatch(newval,'[01] [01] [01] [01]')) then begin - print, 'NE must be of the form "? ? ? ?" [all 0 or 1]. Aborting!' - return - endif - end - 'HGCD': begin - if (strmatch(newval,'[01] [01] [01] [01]')) then begin - print, 'HGCD must be of the form "? ? ? ?" [all 0 or 1]. Aborting!' - return - endif - end - 'OBSCOMM': begin - possible = ['{dithered flats-flat}', '{dithered flats-arc}', $ - '{focus, hartmann l}', '{focus, hartmann r}'] - if (total(newval EQ possible) EQ 0) then begin - print, 'Valid values = ', "'"+possible+"'" - print, 'Invalid value for OBSCOMM. Aborting!' - return - endif - end - 'QUALITY': begin - possible = ['excellent','test','bad'] - if (total(newval EQ possible) EQ 0) then begin - print, 'Valid values = ', "'"+possible+"'" - print, 'Invalid value for QUALITY. Aborting!' - return - endif - end - 'TILEID': begin - if (long(newval) LE 0 OR long(newval) GT 9999) then begin - print, 'TILEID must be between 1 and 9999. Quitting!' - return - endif - end - 'RA': begin - if (double(newval) LT 0d OR double(newval) GT 360d OR qstring) then begin - print, 'Valid RA are between 0d and 360d. Aborting!' - return - endif - end - 'DEC': begin - if (double(newval) LT -90d OR double(newval) GT 90d OR qstring) then begin - print, 'Valid DEC are between -90d and 90d. Aborting!' - return - endif - end - 'RADEG': begin - if (double(newval) LT 0d OR double(newval) GT 360d OR qstring) then begin - print, 'Valid RADEG are between 0d and 360d. Aborting!' - return - endif - end - 'DECDEG': begin - if (double(newval) LT -90d OR double(newval) GT 90d OR qstring) then begin - print, 'Valid DECDEG are between -90d and 90d. Aborting!' - return - endif - end - 'AIRTEMP': begin - if (float(newval) LT -40 OR double(newval) GT 40 OR qstring) then begin - print, 'Valid AIRTEMP are between -40 and 40. Aborting!' - return - endif - end - else: begin - print, 'This keyword is not of interest. Aborting!' - return - end - endcase - - ;---------- - ; Test that sdR files exist that correspond to the exposure number - ; and camera(s) specified. - - fileroot = string(camera, expnum, format='("sdR-",a2,"-",i8.8)') - - filename = findfile(filepath(fileroot+'.fit*', $ - root_dir=rawdata_dir, subdir='*'), count=nfile) - if (nfile EQ 0) then begin - print, 'File=' + fileroot + '.fit not found in dir=' + rawdata_dir - return - endif - - ;---------- - ; Read the values of the cards in these sdR files - ; Also, compare values in sdR headers to requested values. - - for ifile=0, nfile-1 do begin - qdone = fits_wait(filename[ifile], deltat=2, tmax=10, /header_only) - if (qdone) then begin - thishdr = headfits(filename[ifile]) - thismjd = sxpar(thishdr, 'MJD') - oldval = sxpar(thishdr, card) - print, strmid(fileandpath(filename[ifile]),0,15), strupcase(card), $ - strtrim(string(oldval,format=format),2), strval, $ - format='(a, 1x, a8, "=[", a, "] -> [", a, "]")' - endif - endfor - - ;---------- - ; Construct the output structure - - fstruct.fileroot = fileroot - fstruct.keyword = strupcase(card) - fstruct.value = strval - - ;---------- - ; Read the sdHdrFix file - - if (NOT keyword_set(thismjd)) then begin - print, 'MJD could not be determined from the FITS headers' - return - endif - - mjdstr = string(thismjd, format='(i5.5)') - sdfixname = filepath('sdHdrFix-' + mjdstr + '.par', root_dir=speclog_dir, $ - subdir=mjdstr) - - while (djs_lockfile(sdfixname) EQ 0) do wait, 2 - yanny_read, sdfixname, pdata, hdr=hdr, enums=enums, structs=structs, $ - stnames=stnames, /anonymous - djs_unlockfile, sdfixname - - ;---------- - ; Use an explicitly-defined structs such that the fTCL Yanny-readers - ; will still work. - - structs = ['typedef struct {', $ - ' char fileroot[20]; # Root of file name, without any ".fit" suffix', $ - ' char keyword[9]; # Keyword name', $ - ' char value[80]; # Keyword value (as a string)', $ - '} OPHDRFIX;'] - - ;---------- - ; Append to the existing data structures in the sdHdrFix file, - ; or create a new one if the file does not yet exist. - - splog, "Updating ", sdfixname - if (NOT keyword_set(pdata)) then begin - while (djs_lockfile(sdfixname) EQ 0) do wait, 2 - yanny_write, sdfixname, ptr_new(fstruct), structs=structs - djs_unlockfile, sdfixname - ncorr = 1 - endif else begin - ; Append data to the relevant data structure. - i = (where(stnames EQ tag_names(fstruct, /structure_name)))[0] - if (i[0] EQ -1) then begin - print, 'The file ' + sdfixname + ' appears to be invalid' - return - endif - pdata[i] = ptr_new(struct_append(*pdata[i], fstruct)) - - while (djs_lockfile(sdfixname) EQ 0) do wait, 2 - yanny_write, sdfixname, pdata, hdr=hdr, enums=enums, structs=structs, $ - stnames=stnames - djs_unlockfile, sdfixname - ncorr = n_elements(*pdata[i]) - endelse - - yanny_free, pdata - - print, 'File ' + fileandpath(sdfixname) + ' contains ' $ - + strtrim(string(ncorr),2) + ' declared changes.' - - ;---------- - ; If QUALITY keyword is changed, and the routine was run from sos or sos3, then edit the APO logfile. - - if (strupcase(card) EQ 'QUALITY' AND keyword_set(not_sos) eq 0) then begin - - splog, "Checking if SOS / PlateDB needs to be updated" - if (NOT keyword_set(sos_dir)) then $ - sos_dir = '/data/boss/sos/' - log_root = 'logfile-' + mjdstr + '.fits' -; logfile = filepath(logfile, root_dir=sos_dir, subdir=mjdstr) - logfile=findfile(filepath(log_root+'*',root_dir=sos_dir,subdir=mjdstr)) - ; Check if logfile wasn't found - if (~keyword_set(logfile)) then begin - splog, 'No SOS logfile '+filepath(log_root+'*',root_dir=sos_dir,subdir=mjdstr), ' so stopping' - return - endif - print,'logfile = ',logfile - htmlfile = filepath('logfile-' + mjdstr + '.html', root_dir=sos_dir, subdir=mjdstr) - currentfile = filepath('logfile-current.html', root_dir=sos_dir, subdir=mjdstr) - - splog, 'Trying to lock the logfile ' + logfile - while(djs_lockfile(logfile) EQ 0) do wait, 1 - - ;---------- - ; Loop through each of the first 4 HDUs in the log file. - - splog, 'Reading the logfile ' + logfile - for thishdu=1, 4 do begin - rstruct = mrdfits(logfile, thishdu, /silent) - nstruct = n_elements(rstruct) * (keyword_set(rstruct)) - - qchange = 0 - for i=0, nstruct-1 do begin - if (expnum EQ rstruct[i].expnum $ - AND strmatch(rstruct[i].camera,camera)) then begin - rstruct[i].quality = newval - qchange = 1 - endif - endfor - - if (qchange) then begin - djs_modfits, logfile, rstruct, exten_no=thishdu - endif - endfor - - djs_unlockfile, logfile - - junk='stringplaceholder' - while(djs_lockfile(copydir+'logfile-current.html') EQ 0) do wait, 1 - openr,101,copydir+'logfile-current.html' - readf,101,junk,format='(a)' - readf,101,junk,current_mjd,format='(a40,i5)' - close,101 - if current_mjd le thismjd then begin - ; Now convert log fits file into html webpage and update plateDB accordingly - apo_log2html, logfile, htmlfile - splog, 'Done generating HTML file' - - ; Generate a copy of the HTML file, 'logsheet-current.html', - ; that includes the Java script to auto-load the page every 60 seconds. - - squote = "\'" - addstring = $ - '' - sedcommand = '-e "s/<\/HEAD>/<\/HEAD>'+addstring+'/g"' - sedcommand = sedcommand + ' -e "s/BOSS Spectro/BOSS Spectro (Current)/g"' - setenv, 'SHELL=bash' - spawn, 'sed ' + sedcommand + ' ' + htmlfile + ' > ' + currentfile - - ; now copy files over to directory that is displayed on the web browser - spawn, 'cp ' + htmlfile + ' ' + copydir - spawn, 'cp ' + currentfile + ' ' + copydir - endif - - spawn, 'cp ' + logfile + ' ' + copydir - djs_unlockfile,copydir+'logfile-current.html' - - name = strtrim(sxpar(thishdr,'NAME'),2) - plateid = strtrim(sxpar(thishdr,'PLATEID'),2) - - fileroot = string(plateid,camera, expnum, format='("sci-",a4,"-",a2,"-",i8.8)') - sciname = findfile(filepath(fileroot+'.fit*', root_dir=sos_dir, subdir=mjdstr), count=nscience) - - ; This string should contain PLATE-MJD-PLUGID, but it may not - ; in some of the early data, in which case we're search using wildcards - if (strlen(name) LT 13) then name = '*' + name + '*' - plugfile = 'plPlugMapM-'+name+'.par' - fullplugfile = findfile( filepath(plugfile, root_dir=speclog_dir, subdir=mjdstr) ) - - for i=0,nscience-1 do begin - while(djs_lockfile(sciname[i]) EQ 0) do wait, 1 - rstruct = mrdfits(sciname[i],0, /silent) - hdr=headfits(sciname[i]) - sxaddpar,hdr,'QUALITY',newval - djs_modfits,sciname[i],rstruct,hdr - djs_unlockfile, sciname[i] - spawn,'loadSN2Value --update -v ' + sciname[i] + ' ' + fullplugfile - endfor - spawn,'svn add ' + sdfixname - - endif else begin - print, 'Changes will not appear unless you run sos_redo.' - print, 'Equivalently, you could type the following:' - print,'sos_aporedo -g -m '+string(thismjd)+' -z '+string(expnum) -; print, ' remove2redo, mjd=' + mjdstr $ -; + ', expnum=' + strtrim(string(expnum),2) - print, '' - endelse - - if keyword_set(not_sos) eq 1 then begin - print,'You are not running this machine from APO' - print,'You must commit the changes you have made to the hdrfixfile manually in order' - print,'to have the flags appear in the svn repository' - endif - - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/apofluxcalib.pro b/pro/apo2d/apofluxcalib.pro deleted file mode 100644 index 198c64ebb..000000000 --- a/pro/apo2d/apofluxcalib.pro +++ /dev/null @@ -1,115 +0,0 @@ -;+ -; NAME: -; apofluxcalib -; -; PURPOSE: -; Generate the flux-calibration vectors for use by APOPLOT. -; -; CALLING SEQUENCE: -; apofluxcalib, [ platenum, mjd= ] -; -; INPUTS: -; platenum - Plate number for obtaining the fluxing vectors; default to 406 -; mjd - Modified Julian Date for above plate; default to plate 406 -; on MJD 51817 if neither is specified -; -; OPTIONAL INPUTS: -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The output files spFluxcalib-$CAMERA.fits should be moved to -; the directory $IDLSPEC2D_DIR/examples for use by APOPLOT. -; -; For reference (excerpted from PR #6766): -; Here is the list of 10 main-survey plates with the -; highest S/N per minute in all cameras (where I've looked -; up to plate 650 in the Spectro-2D v5 beta reductions): -; 398 51789 -; 402 51793 -; 406 51817 -; 406 51900 -; 411 51817 -; 416 51811 -; 418 51817 -; 431 51877 -; 436 51883 -; 439 51877 -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; bspline_iterfit() -; bspline_valu() -; headfits() -; mrdfits() -; mwrfits -; readspec -; traceset2xy -; -; REVISION HISTORY: -; 04-Dec-2001 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro apofluxcalib, platenum, mjd=mjd - - if (NOT keyword_set(platenum)) then begin - platenum = 406 - if (NOT keyword_set(mjd)) then mjd = 51817 - endif - - ; Determine the best exposure number - readspec, platenum, mjd=mjd, objhdr=hdr - if (NOT keyword_set(hdr)) then $ - message, 'No header found for PLATE=', platenum, ' MJD=', mjd - expnum = sxpar(hdr, 'BESTEXP') - splog, 'Choosing exposure number ', expnum - - root_dir = getenv('BOSS_SPECTRO_REDUX') - platestr = plate_to_string(platenum) - expstr = string(expnum, format='(i8.8)') - - camname = ['b1','b2','r1','r2'] - objfile = 'spFrame-' + camname + '-' + expstr + '.fits' - fcalibfile = 'spFluxcalib-' + camname + '-' + expstr + '.fits' - outfile = 'spFluxcalib-' + camname + '.fits' - - for icam=0, n_elements(camname)-1 do begin - thisfile = (findfile( $ - filepath(objfile[icam], root_dir=root_dir, subdir=platestr)+'*'))[0] - thatfile = (findfile( $ - filepath(fcalibfile[icam], root_dir=root_dir, subdir=platestr)+'*'))[0] - if (keyword_set(thisfile) * keyword_set(thatfile) EQ 0) then $ - message, 'Could not find all input files' - - ; Read the wavelength solution and superflat - objhdr = headfits(thisfile) - wset = mrdfits(thisfile, 3) - traceset2xy, wset, xpos, loglam - - ; Read the flux-calibration vector - calibhdr = headfits(thatfile) - cwavemin = sxpar(calibhdr, 'WAVEMIN') - cwavemax = sxpar(calibhdr, 'WAVEMAX') - calibset = mrdfits(thatfile, 1) - calibfac = bspline_valu(loglam, calibset) - - ; Now produce the values by which we **divide** the raw spectra - fluxvector = calibfac - isort = sort(loglam) - loglam = loglam[isort] - fluxvector = fluxvector[isort] - - fset = bspline_iterfit(loglam, fluxvector, nord=4, bkspace=1.d-4) - sxaddpar, calibhdr, 'EXPTIME', sxpar(objhdr,'EXPTIME') - mwrfits, 0, outfile[icam], calibhdr, /create - mwrfits, fset, outfile[icam] - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/apoheader.pro b/pro/apo2d/apoheader.pro deleted file mode 100644 index 2ca0c863b..000000000 --- a/pro/apo2d/apoheader.pro +++ /dev/null @@ -1,148 +0,0 @@ -;+ -; NAME: -; apoheader -; -; PURPOSE: -; Print the subset of interesting header keywords from the raw sdR files. -; -; CALLING SEQUENCE: -; apoheader, expnum, [ mjd= ] -; -; INPUTS: -; expnum - Exposure number -; -; OPTIONAL INPUTS: -; mjd - Optionally specify the MJD for the subdirectory in which -; to search for the file. This will greatly speed things up. -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; Print out all FITS header keywords of interest for exposure # 14728 -; (assuming that exposure is still on disk somewhere under $BOSS_SPECTRO_DATA): -; IDL> apoheader, 14728 -; -; BUGS: -; -; PROCEDURES CALLED: -; fileandpath() -; fits_wait -; sdsshead() -; sxpar() -; -; REVISION HISTORY: -; 24-Apr-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro apoheader, expnum, mjd=mjd - - if (n_params() LT 1 OR n_elements(expnum) NE 1) then begin - print, 'Syntax - apoheader, expnum' - return - end - - quiet = !quiet - !quiet = 1 - - ;---------- - ; Set input directory for sdR files - - rawdata_dir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(rawdata_dir)) then $ - rawdata_dir = '/data/spectro' - - ;---------- - ; Sanity checks on EXPNUM - - expnum = long(expnum) - if (expnum LE 0 OR expnum GT 99999999L) then begin - print, 'EXPNUM must be a number between 1 and 99999999' - !quiet = quiet - return - endif - - ;---------- - - if (keyword_set(mjd)) then subdir = strtrim(string(mjd),2) $ - else subdir = '*' - - ;---------- - ; Read the headers for the 4 files. - - camname = ['b1','r1','b2','r2'] - ncam = n_elements(camname) - filename = strarr(ncam) - phdr = ptrarr(ncam) - for icam=0, ncam-1 do begin - fileroot = string(camname[icam], expnum, format='("sdR-",a2,"-",i8.8)') - filename[icam] = (findfile(filepath(fileroot+'.fit*', $ - root_dir=rawdata_dir, subdir=subdir), count=ct))[0] - if (ct GT 0) then begin - qdone = fits_wait(filename[icam], deltat=1, tmax=1, /header_only) - if (qdone) then begin -; thishdr = headfits(filename[icam]) - thishdr = sdsshead(filename[icam], /do_lock) - sxaddpar, thishdr, '(END-BEG', $ - sxpar(thishdr,'TAI-END') - sxpar(thishdr,'TAI-BEG') - phdr[icam] = ptr_new(thishdr) - endif - endif - endfor - - ;---------- - - cardname = [ $ - 'EXPOSURE' , $ - 'CAMERAS' , $ - 'FLAVOR' , $ - 'MJD' , $ - 'PLATEID' , $ - 'NAME' , $ - 'EXPTIME' , $ - '(END-BEG' , $ - 'TAI-BEG' , $ - 'TAI-END' , $ - 'TAI' , $ - 'FFS' , $ - 'NE' , $ - 'HGCD' , $ - 'OBSCOMM' , $ - 'QUALITY' , $ -; These are informational keywords... - 'TILEID' , $ - 'CARTID' , $ - 'RA' , $ - 'DEC' , $ - 'RADEG' , $ - 'DECDEG' , $ - 'AIRTEMP' ] - - print, fileandpath(filename), format='(10x,4(x,a16))' - print, format='(10x,4(" ----------------"))' - sval = strarr(ncam) - for icard=0, n_elements(cardname)-1 do begin - for icam=0, ncam-1 do begin - if (keyword_set(phdr[icam])) then begin - thisval = sxpar(*phdr[icam], cardname[icard]) - if (cardname[icard] EQ 'TAI' $ - OR cardname[icard] EQ 'TAI-BEG' $ - OR cardname[icard] EQ 'TAI-END') then $ - format='(e15.9)' $ - else format='' - sval[icam] = strtrim(string(thisval,format=format)) - endif else begin - sval[icam] = '' - endelse - endfor - print, cardname[icard], sval, format='(a8,2x,4a17)' - endfor - - !quiet = quiet - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/apoplot.pro b/pro/apo2d/apoplot.pro deleted file mode 100644 index e9ab696ff..000000000 --- a/pro/apo2d/apoplot.pro +++ /dev/null @@ -1,518 +0,0 @@ -;+ -; NAME: -; apoplot -; -; PURPOSE: -; Routine for plotting spectra from the Son-of-Spectro outputs at APO. -; -; CALLING SEQUENCE: -; apoplot, plate, [ fiberid, mjd=, expnum=, nsmooth=, nmed=, psfile=, $ -; /magsort, /netimage, _EXTRA= ] -; -; INPUTS: -; plate - Plate number -; -; OPTIONAL INPUTS: -; fiberid - Fiber number(s); if not set, then plot all fibers for plate. -; mjd - MJD number; if not set, then select the most recent MJD -; in the $SPECTROLOG_DIR directory. -; expnum - If set, then plot only these exposure numbers for this plate -; rather than all exposure numbers for this plate. -; nsmooth - If set, then boxcar smooth the object spectra with a -; width equal to NSMOOTH. -; nmed - If set, then median filter the object spectra with a -; width equal to NMED. -; psfile - If set, then send plot to a PostScript file instead of -; to the SPLOT interactive widget. The PostScript file name -; can be set explicitly, e.g. with PSFILE='test.ps'. Or if -; you simply set this as a flag, e.g. with /PSFILE, then the -; default file name is spec-pppp-mmmmm-fff.ps, -; where pppp=plate number, mmmmm=MJD, fff=fiber ID. -; magsort - If set and FIBERID is not, then plot all fibers from -; the brightest object to the faintest. -; netimage - If set, then launch a Netscape browser with the object -; image from Steve Kent's web site. This only works if -; Netscape is running and has permissions at the site -; "http://sdssmosaic.fnal.gov:8015". -; This is disabled if PSFILE is set. -; _EXTRA - Kewords for SPLOT, such as XRANGE, YRANGE, THICK. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The Son-of-Spectro outputs are first read from the file: -; $SPECTROLOG_DIR/$MJD/logsheet-$MJD.fits -; This then points to the other files that are read: -; $SPECTROLOG_DIR/$MJD/fflat-$MJD-$PLATE-$EXPNUM-$CAMERA.fits -; $SPECTROLOG_DIR/$MJD/wset-$MJD-$PLATE-$EXPNUM-$CAMERA.fits -; $SPECTROLOG_DIR/$MJD/sci-$PLATE-$CAMERA-$EXPNUM.fits -; -; If $SPECTROLOG_DIR is not set, then it is assumed to be -; /data/spectro/spectrologs -; -; The plotting range is set by the 5th and 95th percentiles of the data. -; Note that there are a horrendous amount of cosmic rays in the data -; as extracted by Son-of-Spectro. -; -; The flux-calibration is very rudimentary, always using the same -; four curves for the four cameras. -; -; EXAMPLES: -; Plot the spectrum of plate 401, fiber #100 using the SPLOT plotting tool: -; IDL> apoplot, 401, 100 -; The spectra from the first exposure (blue and red) are shown as white. -; Other exposures are shown in other colors, and are labelled as such. -; The mouse buttons will zoom in (left), recenter (center), or zoom out -; (right). The frame can be saved as a PostScript file by selecting -; File->WriteEPS from the left-hand corner. -; -; Make the same plot, but boxcar-smooth the spectrum and limit the -; wavelength range to [4000,5000] Angstroms: -; IDL> apoplot, 401, 100, nsmooth=10, xrange=[5000,6000] -; -; Some plates are observed on multiple nights. To select one of the two -; observations of plate 306: -; IDL> apoplot, 306, 20, mjd=51690 -; This will only work if you have the Son-of-Spectro outputs for that -; date on your disk. -; -; Loop through all the spectra for plate 401, interactively: -; IDL> apoplot, 401 -; -; Plot all the spectra from plate 401 to a single PostScript file: -; IDL> apoplot, 401, /psfile -; -; BUGS: -; -; DATA FILES: -; $IDLSPEC2D_DIR/examples/spFluxcalib-$CAMERA.fits -; -; PROCEDURES CALLED: -; djs_maskinterp() -; djs_median() -; djs_oplot -; djs_plot -; fcalib_default() -; get_mjd_dir() -; soplot -; splot -; sdss_flagname() -; sxyouts -; -; INTERNAL SUPPORT ROUTINES: -; apoplot1 -; -; REVISION HISTORY: -; 04-Dec-2001 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro apoplot1, plate, fiberid, mjd=mjd, expnum=allexpnum, nsmooth=nsmooth, $ - nmed=nmed, psfile=psfile, xrange=passxr, yrange=passyr, noerase=noerase, $ - netimage=netimage, _EXTRA=KeywordsForSplot - - common com_apoplot, mjddir, PPBIAS, PPFLAT, PPARC, PPSCIENCE - - ;---------- - ; Determine which spectrograph ID for this fiber - - if (fiberid LE 320) then begin - specid = '1' - column = [fiberid-1, fiberid-1] - endif else begin - specid = '2' - column = [fiberid-321, fiberid-321] - endelse - - ;---------- - ; Read the science spectra - - if (NOT keyword_set(PPSCIENCE)) then begin - print, 'No science exposures for any plate on MJD ', mjd - return - endif - sindx = where(PPSCIENCE.plate EQ plate $ - AND strmid(PPSCIENCE.camera,1,1) EQ specid, nscience) - if (nscience EQ 0) then begin - print, 'No science exposures for plate ', plate - return - endif - for iscience=0, nscience-1 do begin - thisfile = filepath(PPSCIENCE[sindx[iscience]].scifile, root_dir=mjddir) - if (iscience EQ 0) then begin - objsub = mrdfits(thisfile, 0, range=column, /silent) - objsubivar = mrdfits(thisfile, 1, range=column, /silent) - endif else begin - objsub = [[objsub], [mrdfits(thisfile, 0, range=column, /silent)]] - objsubivar = [[objsubivar], [mrdfits(thisfile, range=column, /silent)]] - endelse - endfor - - allcams = PPSCIENCE[sindx].camera - allcams = allcams[ uniq(allcams, sort(allcams)) ] - cindx = lonarr(nscience) - for icam=0, n_elements(allcams)-1 do begin - ; Select which science frames correspond to this plate+camera - jscience = where(PPSCIENCE[sindx].camera EQ allcams[icam]) - cindx[jscience] = icam - - ; Read the flat for this plate+camera -; j = where(PPFLAT.plate EQ plate AND PPFLAT.camera EQ allcams[icam]) -; j = (reverse(j))[0] ; Select the last one -; thisfile = filepath(PPFLAT[j].tsetfile, root_dir=mjddir) -; flat = mrdfits(thisfile, 0, range=column, /silent) -; ; Apply this flat to corresponding science frames -; for jj=0, n_elements(jscience)-1 do begin -; objsub[*,jscience[jj]] = objsub[*,jscience[jj]] / flat ; zeros? -; objsubivar[*,jscience[jj]] = objsubivar[*,jscience[jj]] * flat^2 -; endfor - - ; Only need to read the plugmap once - j = where(PPFLAT.plate EQ plate AND PPFLAT.camera EQ allcams[icam]) - j = (reverse(j))[0] ; Select the last one - if (icam EQ 0) then $ - plug = mrdfits(filepath(PPFLAT[j].tsetfile, root_dir=mjddir), $ - 3, range=column, /silent) - - ; Read the arc for this plate+camera - j = where(PPARC.plate EQ plate AND PPARC.camera EQ allcams[icam]) - j = (reverse(j))[0] ; Select the last one - thisfile = filepath(PPARC[j].wsetfile, root_dir=mjddir) - wset = mrdfits(thisfile, 1, /silent) - traceset2xy, wset, xarc, yarc - thisloglam = yarc[*,column[0]] - if (icam EQ 0) then loglam = thisloglam $ - else loglam = [[loglam], [thisloglam]] - - ; Read and apply a canonical flux-calibration vector - calibfac = fcalib_default(allcams[icam], yarc[*,column[0]], 1.) - qgood = calibfac GT 0 - for jj=0, n_elements(jscience)-1 do begin - objsub[*,jscience[jj]] = qgood * objsub[*,jscience[jj]] $ - / (PPSCIENCE[jscience[jj]].exptime * calibfac + (qgood EQ 0)) - endfor - - ; Mask out any regions where we don't know the flux-calibration vector - for jj=0, n_elements(jscience)-1 do $ - objsubivar[*,jscience[jj]] = objsubivar[*,jscience[jj]] * (calibfac NE 0) - - endfor - - wave = 10^loglam - - ;---------- - ; Choose plot colors based upon exposure numbers - - if (NOT keyword_set(allexpnum)) then begin - allexpnum = PPSCIENCE[sindx].expnum - allexpnum = allexpnum[ uniq(allexpnum, sort(allexpnum)) ] - endif - nexp = n_elements(allexpnum) - - ;---------- - ; Interpolate over bad pixels and smooth if specified - - objsub = djs_maskinterp(objsub, objsubivar EQ 0, iaxis=0, /const) - for iscience=0, nscience-1 do begin - if (keyword_set(nmed)) then begin - if (nmed GT 1) then begin - objsub[*,iscience] = djs_median(objsub[*,iscience], width=nmed, $ - boundary='reflect') - endif - endif - if (keyword_set(nsmooth)) then begin - if (nsmooth GT 1) then begin - objsub[*,iscience] = smooth(objsub[*,iscience], nsmooth) - endif - endif - endfor - - ;---------- - ; Make the actual plots - - csize = 1.75 - textcolor = 'default' - colorvec = ['default', 'red', 'green', 'blue', 'magenta', 'cyan'] - title = 'Plate ' + strtrim(string(plate),2) $ - + ' Fiber ' + strtrim(string(fiberid),2) $ - + ' MJD=' + strtrim(string(mjd),2) - primtarget = sdss_flagname('TARGET', plug.primtarget, /concat) - sectarget = sdss_flagname('TTARGET', plug.sectarget, /concat) - - if (keyword_set(passxr)) then xrange = passxr $ - else xrange = minmax(wave) - if (keyword_set(passyr)) then begin - yrange = passyr - endif else begin -; yrange = minmax(objsub) - ; Use the 5th and 95th percentiles for setting the Y plot range - isort = sort(objsub) - ymin = objsub[isort[long(0.05*n_elements(objsub))]] - ymax = objsub[isort[long(0.95*n_elements(objsub))]] - yrange = [ymin, ymax] - ymin = (1.2 * yrange[0] - 0.2 * yrange[1]) < 0 - ymax = -0.2 * yrange[0] + 1.2 * yrange[1] - if (ymax EQ ymin) then ymax = ymin + 1 - yrange = [ymin, ymax] - endelse - - if (keyword_set(psfile)) then $ - djs_plot, [0], [0], /nodata, charsize=csize, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle='Wavelength [Ang]', ytitle='Flux [electrons]', title=title, $ - _EXTRA=KeywordsForSplot $ - else $ - splot, [0], [0], /nodata, charsize=csize, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle='Wavelength [Ang]', ytitle='Flux [electrons]', title=title, $ - _EXTRA=KeywordsForSplot - for iscience=0, nscience-1 do begin - ; Only plot this exposure if it is one listed in ALLEXPNUM. - ithis = (where(PPSCIENCE[sindx[iscience]].expnum EQ allexpnum))[0] - if (ithis NE -1) then begin - thiscolor = colorvec[ithis MOD n_elements(colorvec)] - if (keyword_set(psfile)) then $ - djs_oplot, wave[*,cindx[iscience]], objsub[*,iscience], $ - color=thiscolor, _EXTRA=KeywordsForSplot $ - else $ - soplot, wave[*,cindx[iscience]], objsub[*,iscience], $ - color=thiscolor, _EXTRA=KeywordsForSplot - endif - endfor - - xpos = 0.80 * !x.crange[0] + 0.20 * !x.crange[1] - dypos = 0.05 * (!y.crange[1] - !y.crange[0]) - ypos = !y.crange[0] + 0.0 * dypos - - if (keyword_set(primtarget)) then begin - ypos = ypos + dypos - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, 'PRIMTARGET = ' + primtarget, $ - charsize=csize, color=djs_icolor(textcolor) $ - else $ - sxyouts, xpos, ypos, 'PRIMTARGET = ' + primtarget, $ - charsize=csize, color=textcolor - endif - - if (keyword_set(sectarget)) then begin - ypos = ypos + dypos - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, 'SECTARGET = ' + sectarget, $ - charsize=csize, color=djs_icolor(textcolor) $ - else $ - sxyouts, xpos, ypos, 'SECTARGET = ' + sectarget, $ - charsize=csize, color=textcolor - endif - - for iexp=0, nexp-1 do begin - ypos = ypos + dypos - thiscolor = djs_icolor(colorvec[iexp MOD n_elements(colorvec)]) - if (keyword_set(psfile)) then $ - djs_xyouts, xpos, ypos, $ - 'Exposure #' + strtrim(string(allexpnum[iexp]),2), $ - charsize=2.0, color=thiscolor $ - else $ - sxyouts, xpos, ypos, $ - 'Exposure #' + strtrim(string(allexpnum[iexp]),2), $ - charsize=2.0, color=thiscolor - endfor - - if (keyword_set(netimage) AND NOT keyword_set(psfile)) then begin - netstring = 'http://sdssmosaic.fnal.gov:8015/template/tsSingle.tml?run=' $ - + strtrim(string(plug.objid[0]),2) $ - + '&camcol=' + strtrim(string(plug.objid[2]),2) $ - + '&field=' + strtrim(string(plug.objid[3]),2) $ - + '&ra=' + strtrim(string(plug.ra),2) $ - + '&dec=' + strtrim(string(plug.dec),2) - spawn, '\netscape -remote "openURL(' + netstring + ')"' - endif - - return -end - -;------------------------------------------------------------------------------ -pro apoplot, plate, fiberid, mjd=mjd, expnum=expnum, nsmooth=nsmooth, $ - nmed=nmed, psfile=psfile, noerase=noerase, xrange=xrange, yrange=yrange, $ - magsort=magsort, _EXTRA=KeywordsForSplot - - common com_apoplot, mjddir, PPBIAS, PPFLAT, PPARC, PPSCIENCE - - if (n_params() LT 1) then begin - print, 'Syntax - apoplot, plate, [ fiberid, mjd=, nsmooth=, $' - print, ' nmed=, psfile=, xrange=, yrange=, /noerase, $' - print, ' /netimage, _EXTRA=KeywordsForSplot' - return - endif - - quiet = !quiet - !quiet = 1 - - if (n_elements(plate) NE 1) then $ - message, 'PLATE must be a scalar' - - ;---------- - ; If MJD is not specified, then find the most recent MJD for output files - - spectrolog_dir = getenv('SPECTROLOG_DIR') - if (NOT keyword_set(spectrolog_dir)) then $ - spectrolog_dir = '/data/spectro/spectrologs' - - if (NOT keyword_set(mjd)) then begin - mjdlist = get_mjd_dir(spectrolog_dir, mjstart=1, mjend=99999, mjd='?????') - mjd = (reverse(mjdlist[sort(mjdlist)]))[0] - splog, 'Selecting MJD=', mjd, ' (override this with MJD keyword)' - endif - - ;---------- - ; Read the log file - - mjdstr = string(mjd, format='(i5.5)') - mjddir = concat_dir(spectrolog_dir, mjdstr) - - logfile = 'logfile-' + mjdstr + '.fits' - logfile = filepath(logfile, root_dir=mjddir) - if (NOT keyword_set(findfile(logfile))) then begin - print, 'Unable to find logfile '+logfile - !quiet = quiet - return - endif - - ; Read in all the HDU's in the log file as structures - PPBIAS = mrdfits(logfile, 1, /silent) - PPFLAT = mrdfits(logfile, 2, /silent) - PPARC = mrdfits(logfile, 3, /silent) - PPSCIENCE = mrdfits(logfile, 4, /silent) - - ;---------- - ; If writing to a PostScript file, then all plots are in the same file - ; either if PSFILE is that file name, or if FIBERID is not specified - ; (and then all 640 spectra are being plotted). - - if (NOT keyword_set(fiberid)) then begin - if (keyword_set(magsort) AND keyword_set(PPSCIENCE)) then begin - sindx1 = (where(PPSCIENCE.plate EQ plate $ - AND (strmid(PPSCIENCE.camera,1,1) EQ '1')))[0] - sindx2 = (where(PPSCIENCE.plate EQ plate $ - AND (strmid(PPSCIENCE.camera,1,1) EQ '2')))[0] - if (sindx2 EQ -1) then begin - fiberid = lindgen(320)+1 - fibermag = PPSCIENCE[sindx1].fibermag - endif else if (sindx1 EQ -1) then begin - fiberid = lindgen(320)+321 - fibermag = PPSCIENCE[sindx2].fibermag - endif else begin - fiberid = lindgen(640) - fibermag = [PPSCIENCE[sindx1].fibermag, PPSCIENCE[sindx2].fibermag] - endelse - fiberid = fiberid[ sort(fibermag) ] - endif - if (NOT keyword_set(fiberid)) then $ - fiberid = lindgen(640)+1L - if (keyword_set(psfile)) then begin - q_onefile = 1 - ;psfilename = string(plate, mjd, $ - ;format='("spec-",i4.4,"-",i5.5,".ps")') - psfilename = 'spec-'+plate_to_string(plate)+'-'+string(mjd, format='(i5.5)')+'.ps' - endif - endif - nfiber = n_elements(fiberid) - if (size(psfile,/tname) EQ 'STRING' AND nfiber GT 1) then begin - psfilename = psfile - q_onefile = 1 - endif - - ;---------- - ; Loop over each plot - - ifiber = 0 - while (ifiber LT nfiber) do begin - - ;---------- - ; Open the PostScript file if appropriate - - if (keyword_set(psfile)) then begin - if (NOT keyword_set(q_onefile)) then $ - ;psfilename = string(plate, mjd, fiberid[ifiber], $ - ; format='("spec-",i4.4,"-",i5.5,"-",i3.3,".ps")') - psfilenam = 'spec-'+plate_to_string(plate)+'-'+$ - string(mjd, format='(i5.5)')+'-'+$ - string(fiberid[ifiber], format='(i3.3)')+'.ps' - if (NOT keyword_set(q_onefile) OR ifiber EQ 0) then begin - dfpsplot, psfilename, /color, /square - endif - endif - - apoplot1, plate, fiberid[ifiber], mjd=mjd, expnum=expnum, $ - nmed=nmed, nsmooth=nsmooth, psfile=psfile, $ - xrange=xrange, yrange=yrange, noerase=noerase, netimage=netimage, $ - _EXTRA=KeywordsForSplot - - if (keyword_set(psfile)) then begin - if (NOT keyword_set(q_onefile) OR ifiber EQ nfiber-1) then dfpsclose - ifiber = ifiber + 1 - endif else begin - if (ifiber LT nfiber-1) then begin - if (keyword_set(nsmooth)) then $ - sstring = ' (currently=' + strtrim(string(nsmooth),2) + ')' $ - else $ - sstring = '' - - if (keyword_set(nmed)) then $ - mstring = ' (currently=' + strtrim(string(nmed),2) + ')' $ - else $ - mstring = '' - - print, 'Press b=back one fiber' - print, ' p=select new plate' - print, ' f=select new fiber number' - print, ' q=quit (and enter interactive mode for this plot)' - print, ' m=change median filtering' + mstring - print, ' s=change boxcar smoothing' + sstring - print, ' x=change X plotting range' - print, ' y=change Y plotting range' - print, ' any other key=forward' - - cc = strupcase(get_kbrd(1)) - case cc of - 'B': ifiber = (ifiber - 1) > 0 - 'P': begin - read, plate, prompt='Enter new plate (same MJD assumed): ' - end - 'F': begin - read, newfiber, prompt='Enter new fiber number: ' - nfiber = 640 - fiberid = lindgen(nfiber) + 1L - ifiber = ((long(newfiber)-1) > 0) < (nfiber-1) - end - 'Q': ifiber = nfiber - 'M': begin - read, nmed, prompt='Enter median filtering width (0=none): ' - nmed = long(nmed) > 0 - end - 'S': begin - read, nsmooth, prompt='Enter boxcar smoothing width (0=none): ' - nsmooth = long(nsmooth) > 0 - end - 'X': begin - read, xmin, xmax, prompt='Enter new X range values (0 0=full range): ' - if (xmin EQ 0 AND xmax EQ 0) then xrange = 0 $ - else xrange = [xmin, xmax] - end - 'Y': begin - read, ymin, ymax, prompt='Enter new Y range values (0 0=full range): ' - if (ymin EQ 0 AND ymax EQ 0) then yrange = 0 $ - else yrange = [ymin, ymax] - end - else: ifiber = ifiber + 1 - endcase - endif else begin - ifiber = nfiber - endelse - endelse - endwhile - - !quiet = quiet - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/apoplotarc.pro b/pro/apo2d/apoplotarc.pro deleted file mode 100644 index 6675a6f6c..000000000 --- a/pro/apo2d/apoplotarc.pro +++ /dev/null @@ -1,179 +0,0 @@ -;+ -; NAME: -; apoplotarc -; -; PURPOSE: -; Routine for plotting arc spectra from the Son-of-Spectro outputs at APO. -; -; CALLING SEQUENCE: -; apoplotarc, expnum, [ camname=, mjd=, everyn=, psfile=, _EXTRA= ] -; -; INPUTS: -; expnum - Exposure number -; -; OPTIONAL INPUTS: -; camname - Camera name; default to 'r1' -; mjd - MJD; must be set if this exposure is not in the most -; recent MJD directory -; everyn - Plot every EVERYN-th spectrum; default to 40, which will -; plot fiber numbers 1, 41, 81, ...281. -; psfile - If set, then send plot to a PostScript file instead of -; to the SPLOT interactive widget. The PostScript file name -; can be set explicitly, e.g. with PSFILE='test.ps'. Or if -; you simply set this as a flag, e.g. with /PSFILE, then the -; default file name is arc-pppp-cc-eeeeeeee.ps, -; where pppp=plate number, cc=camname, eeeeeeee=exposure number. -; _EXTRA - Kewords for SPLOT, such as XRANGE, YRANGE, THICK. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The arc spectrum is plotted as a red line. The individual -; arc values at each pixel in the arc fibers are plotted as points. -; -; The Son-of-Spectro outputs are first read from the file: -; $SPECTROLOG_DIR/$MJD/logsheet-$MJD.fits -; This then points to the other files that are read: -; $SPECTROLOG_DIR/$MJD/fflat-$MJD-$PLATE-$EXPNUM-$CAMERA.fits -; $SPECTROLOG_DIR/$MJD/wset-$MJD-$PLATE-$EXPNUM-$CAMERA.fits -; $SPECTROLOG_DIR/$MJD/sci-$PLATE-$CAMERA-$EXPNUM.fits -; -; If $SPECTROLOG_DIR is not set, then it is assumed to be -; /data/spectro/spectrologs -; -; EXAMPLES: -; Plot the arc spectrum for exposure number 9437 taken in the most -; recent night's data in the r1-camera, using the SPLOT plotting tool: -; IDL> apoplotarc, 9437 -; The mouse buttons will zoom in (left), recenter (center), or zoom out -; (right). The frame can be saved as a PostScript file by selecting -; File->WriteEPS from the left-hand corner. -; -; Make the same plot, but change the Y limits and write a PostScript file: -; IDL> apoplotarc, 9437, yrange=[0,1000], /psfile -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_oplot -; djs_plot -; get_mjd_dir() -; soplot -; splot -; -; REVISION HISTORY: -; 20-Nov-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro apoplotarc, expnum, camname=camname, mjd=mjd, everyn=everyn, $ - psfile=psfile, xrange=xrange, yrange=yrange, $ - _EXTRA=KeywordsForSplot - - if (n_params() LT 1) then begin - print, 'Syntax - apoplotarc, expnum, [ camname=, mjd=, everyn=, $' - print, ' psfile=, xrange=, yrange=, $' - print, ' _EXTRA=KeywordsForSplot' - return - endif - - quiet = !quiet - !quiet = 1 - - ;---------- - ; Set defaults - - if (n_elements(expnum) NE 1) then $ - message, 'EXPNUM must be a scalar' - if (NOT keyword_set(camname)) then camname = 'r1' - if (camname NE 'b1' AND camname NE 'b2' $ - AND camname NE 'r1' AND camname NE 'r2') then begin - print, 'Invalid CAMNAME ', camname - !quiet = quiet - return - endif - if (NOT keyword_set(everyn)) then everyn = 40 - nplot = long(320 / everyn) - fibernum = lindgen(nplot) * everyn - - ;---------- - ; If MJD is not specified, then find the most recent MJD for output files - - spectrolog_dir = getenv('SPECTROLOG_DIR') - if (NOT keyword_set(spectrolog_dir)) then $ - spectrolog_dir = '/data/spectro/spectrologs' - - if (NOT keyword_set(mjd)) then begin - mjdlist = get_mjd_dir(spectrolog_dir, mjstart=1, mjend=99999, mjd='?????') - mjd = (reverse(mjdlist[sort(mjdlist)]))[0] - splog, 'Selecting MJD=', mjd, ' (override this with MJD keyword)' - endif - - ;---------- - ; Find the wset file, from which we'll read the wavelengths - ; and the arc spectra - - expstr = string(expnum, format='(i8.8)') - mjdstr = string(mjd, format='(i5.5)') - wsetfile = filepath('wset-'+mjdstr+'-????-'+expstr+'-'+camname+'.fits', $ - root_dir=spectrolog_dir, subdir=mjdstr) - thisfile = (findfile(wsetfile, count=ct))[0] - if (ct EQ 0) then begin - splog, 'File not found ' + wsetfile - !quiet = quiet - return - endif - platestr = strmid(fileandpath(thisfile), 11, 4) - - wset = mrdfits(thisfile, 1) - flux = mrdfits(thisfile, 2) - if (NOT keyword_set(wset) OR NOT keyword_set(flux)) then begin - splog, 'Missing data in file ' + thisfile - !quiet = quiet - return - endif - - traceset2xy, wset, xx, loglam - - ;---------- - ; Make plots - - title = 'Arc for Plate ' + platestr + ' MJD=' + mjdstr $ - + ' ' + camname+'-'+expstr - xtitle = 'Vacuum Wavelength [Ang]' - ytitle = 'Flux [electrons]' - if (NOT keyword_set(xrange)) then xrange = 10.d0^minmax(loglam) - if (NOT keyword_set(yrange)) then yrange = minmax(flux) - colorvec = ['default','red','green','blue','magenta','cyan', $ - 'yellow'] - ncolor = n_elements(colorvec) - - if (keyword_set(psfile)) then begin - if (size(psfile,/tname) EQ 'STRING') then psfilename = psfile $ - else psfilename = string(platestr, camname, expnum, $ - format='("arc-",a4,"-",a2,"-",i8.8,".ps")') - splog, 'Writing to file ' + psfilename - dfpsplot, psfilename, /color, /square - djs_plot, 10.d0^loglam[*,fibernum[0]], flux[*,fibernum[0]], $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle=ytitle, title=title, charsize=1.3, $ - color=colorvec[0], _EXTRA=KeywordsForSplot - for i=0, nplot-1 do $ - djs_oplot, 10.d0^loglam[*,fibernum[i]], flux[*,fibernum[i]], $ - color=colorvec[i MOD ncolor], _EXTRA=KeywordsForSplot - dfpsclose - endif else begin - splot, 10.d0^loglam[*,fibernum[0]], flux[*,fibernum[0]], $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle=ytitle, title=title, charsize=1.3, $ - color=colorvec[0], _EXTRA=KeywordsForSplot - for i=0, nplot-1 do $ - soplot, 10.d0^loglam[*,fibernum[i]], flux[*,fibernum[i]], $ - color=colorvec[i MOD ncolor], _EXTRA=KeywordsForSplot - endelse - - !quiet = quiet - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/apoplotgeom.pro b/pro/apo2d/apoplotgeom.pro deleted file mode 100644 index 32cff5045..000000000 --- a/pro/apo2d/apoplotgeom.pro +++ /dev/null @@ -1,184 +0,0 @@ -;+ -; NAME: -; apoplotgeom -; -; PURPOSE: -; Routine for plotting arc geometry from the Son-of-Spectro outputs at APO. -; -; CALLING SEQUENCE: -; apoplotgeom, plate, [ camname=, mjd=, psfile=, _EXTRA= ] -; -; INPUTS: -; plate - Plate number -; -; OPTIONAL INPUTS: -; camname - Camera name; default to 'r1' -; mjd - MJD; must be set if this exposure is not in the most -; recent MJD directory -; psfile - If set, then send plot to a PostScript file instead of -; to the SPLOT interactive widget. The PostScript file name -; can be set explicitly, e.g. with PSFILE='test.ps'. Or if -; you simply set this as a flag, e.g. with /PSFILE, then the -; default file name is arc-pppp-cc-eeeeeeee.ps, -; where pppp=plate number, cc=camname, eeeeeeee=exposure number. -; _EXTRA - Kewords for SPLOT, such as XRANGE, YRANGE, THICK. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The arc spectrum is plotted as a red line. The individual -; arc values at each pixel in the arc fibers are plotted as points. -; -; The Son-of-Spectro outputs are first read from the file: -; $SPECTROLOG_DIR/$MJD/logsheet-$MJD.fits -; This then points to the other files that are read: -; $SPECTROLOG_DIR/$MJD/fflat-$MJD-$PLATE-$EXPNUM-$CAMERA.fits -; $SPECTROLOG_DIR/$MJD/wset-$MJD-$PLATE-$EXPNUM-$CAMERA.fits -; $SPECTROLOG_DIR/$MJD/sci-$PLATE-$CAMERA-$EXPNUM.fits -; -; If $SPECTROLOG_DIR is not set, then it is assumed to be -; /data/spectro/spectrologs -; -; EXAMPLES: -; Plot the arc spectrum for exposure number 9425 taken in the most -; recent night's data in the r1-camera, using the SPLOT plotting tool: -; IDL> apoplotgeom, 9425 -; The mouse buttons will zoom in (left), recenter (center), or zoom out -; (right). The frame can be saved as a PostScript file by selecting -; File->WriteEPS from the left-hand corner. -; -; Make the same plot, but change the Y limits and write a PostScript file: -; IDL> apoplotgeom, 9425, yrange=[0,1000], /psfile -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_oplot -; djs_plot -; get_mjd_dir() -; soplot -; splot -; -; REVISION HISTORY: -; 20-Nov-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro apoplotgeom, plate, camname=camname, mjd=mjd, $ - psfile=psfile, xrange=xrange, yrange=yrange, $ - _EXTRA=KeywordsForSplot - - if (n_params() LT 1) then begin - print, 'Syntax - apoplotgeom, plate, [ camname=, mjd=, $' - print, ' psfile=, xrange=, yrange=, $' - print, ' _EXTRA=KeywordsForSplot' - return - endif - - quiet = !quiet - !quiet = 1 - - ;---------- - ; Set defaults - - if (n_elements(plate) NE 1) then $ - message, 'PLATE must be a scalar' - if (NOT keyword_set(camname)) then camname = 'b1' - if (camname NE 'b1' AND camname NE 'b2' $ - AND camname NE 'r1' AND camname NE 'r2') then begin - print, 'Invalid CAMNAME ', camname - !quiet = quiet - return - endif - platestr = plate_to_string(plate) - - ;---------- - ; If MJD is not specified, then find the most recent MJD for output files - - spectrolog_dir = getenv('SPECTROLOG_DIR') - if (NOT keyword_set(spectrolog_dir)) then $ - spectrolog_dir = '/data/spectro/spectrologs' - - if (NOT keyword_set(mjd)) then begin - mjdlist = get_mjd_dir(spectrolog_dir, mjstart=1, mjend=99999, mjd='?????') - mjd = (reverse(mjdlist[sort(mjdlist)]))[0] - splog, 'Selecting MJD=', mjd, ' (override this with MJD keyword)' - endif - - ;---------- - ; Find the wset file, from which we'll read the wavelengths - ; and the arc spectra - - mjdstr = string(mjd, format='(i5.5)') - wsetfile = filepath( $ - 'wset-'+mjdstr+'-'+platestr+'-????????-'+camname+'.fits', $ - root_dir=spectrolog_dir, subdir=mjdstr) - thisfile = (findfile(wsetfile, count=ct))[0] - if (ct EQ 0) then begin - splog, 'File not found ' + wsetfile - !quiet = quiet - return - endif - -; wset = mrdfits(thisfile, 1) - xpeak = mrdfits(thisfile, 4) - ypeak = mrdfits(thisfile, 5) - -; traceset2xy, wset, xx, loglam - - ;---------- - ; Find the tset file, from which we'll read the trace info - - tsetfile = filepath( $ - 'tset-'+mjdstr+'-'+platestr+'-????????-'+camname+'.fits', $ - root_dir=spectrolog_dir, subdir=mjdstr) - thisfile = (findfile(tsetfile, count=ct))[0] - if (ct EQ 0) then begin - splog, 'File not found ' + tsetfile - !quiet = quiet - return - endif - - tset = mrdfits(thisfile, 2) - traceset2xy, tset, xtrace, ytrace - - ;---------- - - npeak = (size(xpeak, /dimens))[1] - - ;---------- - ; Make plots - - title = 'Arc for Plate ' + platestr + ' MJD=' + mjdstr $ - + ' ' + camname - xtitle = 'Vacuum Wavelength [Ang]' - ytitle = 'Flux [electrons]' - if (NOT keyword_set(xrange)) then xrange = 10.d0^minmax(loglam) - if (NOT keyword_set(yrange)) then yrange = minmax(flux) - colorvec = ['default','red','green','blue','magenta','cyan', $ - 'yellow'] - ncolor = n_elements(colorvec) - - if (keyword_set(psfile)) then begin - if (size(psfile,/tname) EQ 'STRING') then psfilename = psfile $ - else psfilename = string(platestr, camname, expnum, $ - format='("arc-",a4,"-",a2,"-",i8.8,".ps")') - splog, 'Writing to file ' + psfilename - dfpsplot, psfilename, /color, /square - djs_plot, 10.d0^loglam, flux, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle=ytitle, title=title, charsize=1.3, $ - color=colorvec[0], _EXTRA=KeywordsForSplot - dfpsclose - endif else begin - splot, 10.d0^loglam, flux, psym=3, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle=ytitle, title=title, charsize=1.3, $ - color=colorvec[0], _EXTRA=KeywordsForSplot - endelse - - !quiet = quiet - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/apoplotsky.pro b/pro/apo2d/apoplotsky.pro deleted file mode 100644 index 47d824390..000000000 --- a/pro/apo2d/apoplotsky.pro +++ /dev/null @@ -1,217 +0,0 @@ -;+ -; NAME: -; apoplotsky -; -; PURPOSE: -; Routine for plotting sky spectra from the Son-of-Spectro outputs at APO. -; -; CALLING SEQUENCE: -; apoplotsky, expnum, [ camname=, mjd=, psfile=, _EXTRA= ] -; -; INPUTS: -; expnum - Exposure number -; -; OPTIONAL INPUTS: -; camname - Camera name; default to 'r1' -; mjd - MJD; must be set if this exposure is not in the most -; recent MJD directory -; psfile - If set, then send plot to a PostScript file instead of -; to the SPLOT interactive widget. The PostScript file name -; can be set explicitly, e.g. with PSFILE='test.ps'. Or if -; you simply set this as a flag, e.g. with /PSFILE, then the -; default file name is sky-pppp-cc-eeeeeeee.ps, -; where pppp=plate number, cc=camname, eeeeeeee=exposure number. -; _EXTRA - Kewords for SPLOT, such as XRANGE, YRANGE, THICK. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The supersky spectrum is plotted as a red line. The individual -; sky values at each pixel in the sky fibers are plotted as points. -; -; The Son-of-Spectro outputs are first read from the file: -; $SPECTROLOG_DIR/$MJD/logsheet-$MJD.fits -; This then points to the other files that are read: -; $SPECTROLOG_DIR/$MJD/fflat-$MJD-$PLATE-$EXPNUM-$CAMERA.fits -; $SPECTROLOG_DIR/$MJD/wset-$MJD-$PLATE-$EXPNUM-$CAMERA.fits -; $SPECTROLOG_DIR/$MJD/sci-$PLATE-$CAMERA-$EXPNUM.fits -; -; If $SPECTROLOG_DIR is not set, then it is assumed to be -; /data/spectro/spectrologs -; -; EXAMPLES: -; Plot the sky spectrum for exposure number 9425 taken in the most -; recent night's data in the r1-camera, using the SPLOT plotting tool: -; IDL> apoplotsky, 9425 -; The mouse buttons will zoom in (left), recenter (center), or zoom out -; (right). The frame can be saved as a PostScript file by selecting -; File->WriteEPS from the left-hand corner. -; -; Make the same plot, but change the Y limits and write a PostScript file: -; IDL> apoplotsky, 9425, yrange=[0,1000], /psfile -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_oplot -; djs_plot -; get_mjd_dir() -; soplot -; splot -; -; REVISION HISTORY: -; 20-Nov-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro apoplotsky, expnum, camname=camname, mjd=mjd, $ - psfile=psfile, xrange=xrange, yrange=yrange, $ - _EXTRA=KeywordsForSplot - - if (n_params() LT 1) then begin - print, 'Syntax - apoplotsky, expnum, [ camname=, mjd=, $' - print, ' psfile=, xrange=, yrange=, $' - print, ' _EXTRA=KeywordsForSplot' - return - endif - - quiet = !quiet - !quiet = 1 - - ;---------- - ; Set defaults - - if (n_elements(expnum) NE 1) then $ - message, 'EXPNUM must be a scalar' - if (NOT keyword_set(camname)) then camname = 'r1' - if (camname NE 'b1' AND camname NE 'b2' $ - AND camname NE 'r1' AND camname NE 'r2') then begin - print, 'Invalid CAMNAME ', camname - !quiet = quiet - return - endif - - ;---------- - ; If MJD is not specified, then find the most recent MJD for output files - - spectrolog_dir = getenv('SPECTROLOG_DIR') - if (NOT keyword_set(spectrolog_dir)) then $ - spectrolog_dir = '/data/spectro/spectrologs' - - if (NOT keyword_set(mjd)) then begin - mjdlist = get_mjd_dir(spectrolog_dir, mjstart=1, mjend=99999, mjd='?????') - mjd = (reverse(mjdlist[sort(mjdlist)]))[0] - splog, 'Selecting MJD=', mjd, ' (override this with MJD keyword)' - endif - - ;---------- - ; Find the output file from QUICKEXTRACT - - expstr = string(expnum, format='(i8.8)') - mjdstr = string(mjd, format='(i5.5)') - outsci = filepath('sci-????-'+camname+'-'+expstr+'.fits', $ - root_dir=spectrolog_dir, subdir=mjdstr) - thisfile = (findfile(outsci, count=ct))[0] - if (ct EQ 0) then begin - splog, 'File not found ' + outsci - !quiet = quiet - return - endif - platestr = strmid(fileandpath(thisfile), 4, 4) - - sset = mrdfits(thisfile, 3) - relchi2struct = mrdfits(thisfile, 4) - objsub = mrdfits(thisfile) - if (NOT keyword_set(sset) OR NOT keyword_set(relchi2struct) $ - OR NOT keyword_set(objsub)) then begin - splog, 'Missing data in file ' + thisfile - !quiet = quiet - return - endif - - ;---------- - ; Find the wset file, from which we'll read the wavelengths - - wsetfile = filepath('wset-'+mjdstr+'-'+platestr+'-????????-'+camname+'.fits', $ - root_dir=spectrolog_dir, subdir=mjdstr) - thisfile = (findfile(wsetfile, count=ct))[0] - if (ct EQ 0) then begin - splog, 'File not found ' + wsetfile - !quiet = quiet - return - endif - - wset = mrdfits(thisfile, 1) - if (NOT keyword_set(wset)) then begin - splog, 'Missing data in file ' + thisfile - !quiet = quiet - return - endif - traceset2xy, wset, xx, loglam - - ;---------- - ; Find the tset file, from which we'll read the plug-map structure - - tsetfile = filepath( $ - 'tset-'+mjdstr+'-'+platestr+'-????????-'+camname+'.fits', $ - root_dir=spectrolog_dir, subdir=mjdstr) - thisfile = (findfile(tsetfile, count=ct))[0] - if (ct EQ 0) then begin - splog, 'File not found ' + tsetfile - !quiet = quiet - return - endif - - plugsort = mrdfits(thisfile, 3) - fibermask = mrdfits(thisfile, 4) - if (NOT keyword_set(plugsort) OR NOT keyword_set(fibermask)) then begin - splog, 'Missing data in file ' + thisfile - !quiet = quiet - return - endif - iskies = where(strtrim(plugsort.objtype,2) EQ 'SKY' $ - AND (plugsort.fiberid GT 0) AND (fibermask EQ 0), nskies) - - ;---------- - ; Compute the supersky and individual sky spectra - - supersky = bspline_valu(loglam[*,iskies], sset) - eachsky = objsub[*,iskies] + supersky - - ;---------- - ; Make plots - - title = 'Sky for Plate ' + platestr + ' MJD=' + mjdstr $ - + ' ' + camname+'-'+expstr - xtitle = 'Vacuum Wavelength [Ang]' - ytitle = 'Flux [electrons]' - if (NOT keyword_set(xrange)) then xrange = 10.d0^minmax(loglam) - if (NOT keyword_set(yrange)) then yrange = minmax(supersky) - - if (keyword_set(psfile)) then begin - if (size(psfile,/tname) EQ 'STRING') then psfilename = psfile $ - else psfilename = string(platestr, camname, expnum, $ - format='("sky-",a4,"-",a2,"-",i8.8,".ps")') - splog, 'Writing to file ' + psfilename - dfpsplot, psfilename, /color, /square - djs_plot, 10.d0^(loglam[*,iskies]), eachsky, psym=3, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle=ytitle, title=title, charsize=1.3, $ - _EXTRA=KeywordsForSplot - djs_oplot, 10.d0^loglam[*,iskies[0]], supersky[*,0], color='red', $ - _EXTRA=KeywordsForSplot - dfpsclose - endif else begin - splot, 10.d0^(loglam[*,iskies]), eachsky, psym=3, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle=ytitle, title=title, charsize=1.3, $ - _EXTRA=KeywordsForSplot - soplot, 10.d0^loglam[*,iskies[0]], supersky[*,0], color='red', $ - _EXTRA=KeywordsForSplot - endelse - - !quiet = quiet - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/atvrawspec.pro b/pro/apo2d/atvrawspec.pro deleted file mode 100644 index 459a714f7..000000000 --- a/pro/apo2d/atvrawspec.pro +++ /dev/null @@ -1,133 +0,0 @@ -;+ -; NAME: -; atvrawspec -; -; PURPOSE: -; Display a 2D spectroscopic image with bad columns marked in red. -; -; CALLING SEQUENCE: -; atvrawspec, filename, _EXTRA=KeywordsForATV -; -; INPUTS: -; filename - Either a raw SDSS file name, or a 2D pixel flat or 2D bias -; -; OPTIONAL KEYWORDS: -; _EXTRA - Extra keywords for ATV, such as MIN,MAX -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; Display a 2D pixel flat with a reasonable display stretch: -; IDL> atvrawspec, 'pixflat-52069-b1.fits', min=0.9, max=1.1 -; -; Display a 2D bias with a reasonable display stretch: -; IDL> atvrawspec, 'pixbias-52069-b1.fits', min=-5, max=10 -; -; BUGS: -; -; PROCEDURES CALLED: -; atv -; atvplot -; djs_filepath() -; findopfile() -; headfits() -; sdssproc -; yanny_free -; yanny_read -; -; DATA FILES: -; $IDLSPEC2D_DIR/examples/opBC*par -; -; REVISION HISTORY: -; 26-Feb-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro atvrawspec, filename, _EXTRA=KeywordsForATV - - if (n_params() LT 1) then begin - print, 'Syntax - atvrawspec, filename' - return - endif - - badcolor = 'red' - - hdr = headfits(filename) - naxis1 = sxpar(hdr, 'NAXIS1') - naxis2 = sxpar(hdr, 'NAXIS2') - if (naxis1 EQ 2128 AND naxis2 EQ 2069) then begin - sdssproc, filename, image - endif else if (naxis1 EQ 2048 AND naxis2 EQ 2048) then begin - image = mrdfits(filename) - endif else begin - splog, 'Warning: Unknown file dimensions ', naxis1, naxis2 - return - endelse - - ;----------- - ; Display the image with ATV - - atv, image, _EXTRA=KeywordsForATV - - ;----------- - ; Read the opBC (bad column) file - - config_dir = filepath('', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='examples') - mjd = sxpar(hdr, 'MJD') - bcfile = findopfile('opBC*par', mjd, config_dir, /abort_notfound) - if (NOT keyword_set(bcfile)) then begin - splog, 'No opBC file found for MJD=', mjd - return - endif - bcfile = djs_filepath(bcfile, root_dir=config_dir) - yanny_read, bcfile, pdata - bc = *pdata[0] - if (NOT keyword_set(bc)) then begin - splog, ' Warning: Bad column file missing or empty ' + bcfile - return - endif - yanny_free, pdata - - ;----------- - ; Selct entries from the bad column file that match this CCD - - cameras = strtrim( sxpar(hdr, 'CAMERAS'), 2 ) - camnames = ['b1', 'r2', 'b2', 'r1'] - indx = where(cameras EQ camnames) - if (indx[0] EQ -1) then begin - splog, 'Warning: CAMERAS in image header does not match any valid value' - return - endif - camcol = indx[0] + 1 - camrow = 0 - ibc = where(bc.camrow EQ camrow AND bc.camcol EQ camcol, nbc) - bc = bc[ibc] - - ;----------- - ; Overplot bad columns in red - - for ibc=0, nbc-1 do begin - if (bc[ibc].dfncol EQ 1 AND bc[ibc].dfnrow EQ 1) then begin - atvplot, bc[ibc].dfcol0, bc[ibc].dfrow0, psym=1, color=badcolor - endif else if (bc[ibc].dfncol EQ 1 OR bc[ibc].dfnrow EQ 1) then begin - atvplot, bc[ibc].dfcol0+[0,bc[ibc].dfncol-1], $ - bc[ibc].dfrow0+[0,bc[ibc].dfnrow-1], $ - color=badcolor - endif else begin - atvplot, bc[ibc].dfcol0+[0,bc[ibc].dfncol-1,bc[ibc].dfncol-1,0,0], $ - bc[ibc].dfrow0+[0,0,bc[ibc].dfnrow-1,bc[ibc].dfnrow-1,0], $ - color=badcolor - if (bc[ibc].dfncol GE 3) then $ - for j=1, bc[ibc].dfncol-2 do $ - atvplot, bc[ibc].dfcol0+[j,j], bc[ibc].dfrow0+[0,bc[ibc].dfnrow-1], $ - color=badcolor - endelse - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/bestfocus.pro b/pro/apo2d/bestfocus.pro deleted file mode 100644 index 83bd399ae..000000000 --- a/pro/apo2d/bestfocus.pro +++ /dev/null @@ -1,259 +0,0 @@ -;+ -; NAME: -; bestfocus -; -; PURPOSE: -; Compute the offset from Hartmann images of different focus ring positions -; -; CALLING SEQUENCE: -; pro bestfocus expstart=,expend=,red_focus1=, blue_focus1=, red_focus2=, blue_focus2=,camname=,indir=,skipcollimate=,viewplots= - -; -; INPUTS: -; expstart - First exposure number of raw sdR file. -; expend - Last exposure number of raw sdR file -; OPTIONAL KEYWORDS -; red_focus1 - The different red 1 focus ring positions; default to -; [-50.,-25.,0.,25.,50.,0.] -; red_focus2 - The different red 2 focus ring positions; default to -; red_focus1 -; blue_focus1 - The different blue 1 focus ring positions; default to -; red_focus1 -; blue_focus2 - The different blue 2 focus ring positions; default to -; red_focus1 - -; camname - Cameras to analyze; default to ['b1','b2','r1','r2']. -; indir - Input directory for files; default to searching for -; files in $BOSS_SPECTRO_DATA/*. If $BOSS_SPECTRO_DATA is not set, -; then it is assumed to be /data/spectro. -; -; skipcollimate - If the Collimate*.log files already exist in the -; current directory, then you can skip collimate by -; setting skipcollimate=1. By default, collimate -; will run -; -; viewplots - To look at each plot individually to determine what -; data points to throw away, set viewplots=1. By -; default, you will not view each plot individually -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; If required, Collimate is run on all files between expstart and expstop that go -; in the sequence 'Left ' 'Right '. The offsets in Collimate*.log files -; are then used to figure out the offset in microns of the ccd as a -; function of the focus ring position. Since there is low number -; statistics, the plots need to be looked at to see if the data is -; good, many times the first and last focus ring position (very far -; out of focus) is not a good fit. The screen output is the out of -; focus position from the mean for each subsection. Going from left -; to right is the focus offset in microns in the spatial direction -; and top to bottom is the focus offset in microns in the spectral direction -; -; -; -; EXAMPLES: -; Check for tilt on b2 with Hartmanns from 55218 -; (assuming the files exist in /data/spectro/55218): -; IDL> bestfocus, expstart=00107910,expend=00107921,camname='b2',red_focus1= [-50.,-25.,0.,25.,50.,0.] -; -; BUGS: -; -; PROCEDURES CALLED: -; collimate -; sdssproc -; splog -; sxpar() -; -; INTERNAL SUPPORT ROUTINES: -; collimate_obscomm() -; collimate_bad_hdr() -; -; REVISION HISTORY: -; -; 01-Sep-2009 K. Dawson, Utah -; 22-Jan-2010 M. Olmstead, Utah -;- - - - -pro bestfocus ,red_focus1=red_focus1, blue_focus1=blue_focus1, red_focus2=red_focus2, blue_focus2=blue_focus2,expstart=expstart,expend=expend,camname=camname,indir=indir, skipcollimate=skipcollimate,viewplots=viewplots - - ;give focus ring positions and start and stop exposure numbers - -if (NOT keyword_set(red_focus1)) then red_focus1= [-50.,-25.,0.,25.,50.,0.] ;red 1 focus ring position -if (NOT keyword_set(blue_focus1)) then blue_focus1=red_focus1 -if (NOT keyword_set(red_focus2)) then red_focus2=red_focus1 -if (NOT keyword_set(blue_focus2)) then blue_focus2=red_focus1 -if (NOT keyword_set(camname)) then camname =['b1','b2','r1','r2'] ;cameras to look at -if (NOT keyword_set(expstart)) then expstart=00107910 ;First exposure while looking for Hartmanns -if (NOT keyword_set(expend)) then expend=00107921 ;Last exposure while looking for Hartmanns -if (NOT keyword_set(skipcollimate)) then skipcollimate=0 ;If don't need to run collimate, set skipcollimate=1 -if (NOT keyword_set(viewplots)) then viewplots=0 ;If you want to look at each plot used to find offset, set viewplots=1 - -ncam = n_elements(camname) - - quiet = !quiet ;do for each camera - !quiet = 1 - - if (ncam GT 1) then begin - for icam=0, ncam-1 do begin - bestfocus,camname=camname[icam], red_focus1=red_focus1, blue_focus1=blue_focus1, red_focus2=red_focus2, blue_focus2=blue_focus2, expstart=expstart, expend=expend, indir=indir, skipcollimate=skipcollimate,viewplots=viewplots - endfor - !quiet = quiet - return - endif - - if (NOT keyword_set(indir)) then begin ;setting raw data directory - indir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(indir)) then $ - indir='/data/spectro' - indir = indir + '/*' - endif - - - -num=expend-expstart+1 ;total number of exposures -filename=strarr(num+1) - -for i=0, num -1 do begin ;defining filename of each image as a vector -filename(i)=expstart+i - filename(i) = 'sdR-' + camname[0] + '-' + string(filename(i), format='(i8.8)') $ - + '.fit*' -print,filename(i) -filename(i)=(findfile(djs_filepath(filename(i), root_dir=indir), count=ct))[0] - if (ct EQ 0) then begin - print, 'File ',filename(i),' not found' - return - endif -endfor - -hexp=expstart ;want to keep good exposure numbers -goodones=fltarr(num) -hartmanns=0 -hartmann1=strarr(1) -hartmann2=strarr(1) - -for i = 0, num-2 do begin ;looking at headers, getting exposures that go LEFT, RIGHT - hdr1=headfits(filename[i]) - hartmann1=sxpar(hdr1,'HARTMANN') -;print,hartmann1 - if (hartmann1 eq 'Left ') then begin - hdr2=headfits(filename[i+1]) - hartmann2=sxpar(hdr2,'HARTMANN') - if hartmann2 eq 'Right ' then begin - goodones[hartmanns]=hexp ;ones that go left, right - hartmanns=hartmanns+1 - endif - endif -hexp=hexp+1 -endfor - -namegoodones=where(goodones ne 0) -numgoodones=n_elements(namegoodones) - -if skipcollimate ne 1 then begin -for i=0, numgoodones-1 do begin -collimate,goodones[i],docams=camname,/debug -endfor -endif - -offset=fltarr(numgoodones,8,8) ;getting needed exposure numbers - -mjd=sxpar(headfits(filename[0]),'MJD') - -for i=0, numgoodones-1 do begin ;reading in collimate*.log for LR pairs -readcol,'Collimate-'+string(mjd,format='(i5.5)')+'-'+camname+'-'+string(goodones[i],format='(i8.8)')+'.log',a,b1,b2,b3,b4,b5,b6,b7,b8,format='(a,f,f,f,f,f,f,f,f)' -offset[i,0,*]=b1 -offset[i,1,*]=b2 -offset[i,2,*]=b3 -offset[i,3,*]=b4 -offset[i,4,*]=b5 -offset[i,5,*]=b6 -offset[i,6,*]=b7 -offset[i,7,*]=b8 -endfor - - -if camname eq 'b1' then focus=blue_focus1 -if camname eq 'b2' then focus=blue_focus2 -if camname eq 'r1' then focus=red_focus1 -if camname eq 'r2' then focus=red_focus2 - - -; save offsets (in units of degrees on focus ring) as out(8,8) -offset2=fltarr(numgoodones) -out=fltarr(8,8) - -for i=0,7 do begin - for j=0,7 do begin - plot,focus,offset[*,i,j],psym=2,ytitle='Distance between spots (pixels)',xtitle='degrees on focus ring for '+camname, $ - yran=[2,-2],symsize=2,charsize=1.5 - -;FLAG indices in offset vector, these fits are poor based on manual observations - offset2[*]=offset[*,i,j] - ;offset[0]=0. ;if 0 bad by manual - ;observation, many times first and - ;last column are bad fits - ;-------------------------------------------------------------------------------------------------------; - ;These are the ones that were not - ;counted for 55218 after going through - ;by hand - - if mjd eq 55218 then begin - if camname eq 'b1' then begin - offset2[3]=0 - endif - if camname eq 'r1' then begin - offset2[3]=0 - endif - if camname eq 'b2' then begin ;b2 shows the most tilt and is clearly the worst - if (i eq 0 and j eq 0) then offset2[3]=0 ;offset[3] = 25 degrees, offset[4]=50 degrees, offset [2] and [6] = 0 degrees - if (i eq 1 and (j eq 0 or j eq 2 or j eq 4 or j eq 5 or j eq 6) ) then offset2[3]=0. - if (i eq 2 and j ne 7) then offset2[3]=0. - if (i eq 3 and (j eq 1 or j eq 2 or j eq 4 or j eq 5 or j eq 6 or j eq 7) ) then offset2[3]=0. - if (i eq 3 and j eq 7) then offset[4]=0. - if (i eq 4 and (j eq 1 or j eq 2 or j eq 3 or j eq 4 or j eq 5 or j eq 6)) then offset2[3]=0.0 - if (i eq 5 and j ne 7) then offset2[3]=0 - if (i eq 6 ) then offset2[3]=0 - if (i eq 7 and j eq 0) then offset2[3]=0. - if (i eq 4 and j eq 7) then offset2[0]=0. - if (i eq 4 and j eq 7) then offset2[2]=0. - if (i eq 4 and j eq 7) then offset2[4]=0. - if (i eq 5 and j eq 7) then offset2[4]=0. - if (i eq 5 and j eq 7) then offset2[1]=0. - if (i eq 2 and j eq 7) then offset2[2]=0. - if ((i eq 1 or i eq 2) and j eq 7) then offset2[5]=0. - if (i eq 1 and j eq 7) then offset2[3]=0. - if (i eq 1 and j eq 7) then offset2[4]=0. - if ((i eq 4 and (j eq 6 )) or (i eq 5 and j eq 7) or (i eq 1 and j eq 7) or (i eq 3 and j eq 3)) then begin - plot,focus,offset[*,i,j],psym=2,ytitle='Distance between spots (pixels)',xtitle='degrees on focus ring', $ - yran=[5,-5],symsize=2,charsize=1.5 - endif - endif - endif -;--------------------------------------------------------------------------------------------; - -;FLAG all poor fits that have been assigned a value of 0 - ;a=where(offset2 ne 0.0 AND offset2 lt 2.5 AND offset2 gt -2.5) - a=where(offset2 ne 0) - result=linfit(focus[a],offset2[a],yfit=yfit) - oplot,focus[a],yfit - out[i,j]=-result[0]/result[1] - ;Watch each fit, this is small number statistics, over-ride poor fits manually - oplot,[out[i,j],out[i,j]],[0.,0.],psym=4,symsize=3 - if (viewplots eq 1) then stop - - endfor -endfor - -outpos=(out-median(out))*25./11.25 ;offset in microns - -print,camname -print,outpos - -end - diff --git a/pro/apo2d/ccdtilt.pro b/pro/apo2d/ccdtilt.pro deleted file mode 100644 index e4774d7eb..000000000 --- a/pro/apo2d/ccdtilt.pro +++ /dev/null @@ -1,405 +0,0 @@ -;+ -; NAME: -; ccdtilt -; -; PURPOSE: -; Compute the CCD tilts from a series of Hartmann mask exposures. -; -; CALLING SEQUENCE: -; ccdtilt, expnum1, piston=, [ expnum2, docams=, indir=, nregx=, nregy=, $ -; dy=, maxshift=, /nocheck, /doplot ] -; -; INPUTS: -; expnum1 - Hartmann-left exposure numbers -; piston - Piston position of focus ring in microns; if known in degrees, -; then multiply by 793./360 -; -; OPTIONAL KEYWORDS: -; expnum2 - Hartmnann-right exposure numbers; default to EXPNUM1+1. -; docams - Cameras to analyze; default to ['b1','b2','r1','r2']. -; indir - Input directory for files; default to searching for -; files in $BOSS_SPECTRO_DATA/*. If $BOSS_SPECTRO_DATA is not set, -; then it is assumed to be /data/spectro. -; nregx - Number of sub-regions in the X dimension; default to 8. -; nregy - Number of sub-regions in the Y dimension; default to 8. -; dy - Sampling of shift when comparing Hartmann-L and Hartmann-R -; images; default to 0.05 pix. -; maxshift - Maximum pixel shift to search in both X and Y; default to 3. -; nocheck - If set, then assume that the 1st exposure is Hartmann-l, -; and the 2nd exposure is Hartmann-r, rather than looking at -; the OBSCOMM header keyword. This correct keywords are -; added by the SOP goSpecFocus command, but will not be if -; you simply move the collimator and shutters yourself. -; (Deprecated to never do this check, since BOSS has -; no header keywords.) -; doplot - If set, then compute the offsets in different regions -; of the CCD and generate a contour plot. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The focus of the collimator is measured by comparing two Hartmann -; exposures of arc lamps, and looking for shifts in the arc line positions. -; The required piston of the collimator mirrors is assumed to be -; linearly related to the offset in arc lines in the wavelength direction. -; -; If /DOPLOT is set, then the arc-line shifts are computed in NREGX -; by NREGY regions on each CCD, and a plot is made. -; -; The following files are output for each camera: -; Collimate-$MJD-$CAMERA-$EXPNUM1.log -; Collimate-$MJD-$CAMERA-$EXPNUM1.ps -; -; The position of the Hartmann shutters is read from the OBSCOMM header -; keywords for SDSS-I. It is expected to be '{focus, hartmann l}' -; for one exposure and '{focus, hartmann r}' for the other (in either -; order). For BOSS, the HARTMANN keyword is read and must be either -; 'Left' or 'Right'. -; It is assumed that the collimator position is identical for both exposures. -; -; The sense of the pixel shifts reported is what one would have to shift -; the Hartmann-r exposure by in Y to agree with the Hartmann-l exposure. -; -; EXAMPLES: -; Solve for the tilt of the r1 CCD from Hartmann data on MJD 55218: -; expnum1 = [107910,107912,107908,107916,107918] -; piston = [-50,-25,0,25,50] * 793./360. -; ccdtilt, expnum1, piston=piston, docams='r1' -; -; BUGS: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_filepath() -; djs_icolor() -; sdssproc -; splog -; sxpar() -; -; INTERNAL SUPPORT ROUTINES: -; collimate_obscomm() -; collimate_xcorr() -; -; REVISION HISTORY: -; 03-Feb-2010 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -; Note that OBSCOMM should be '{focus, hartmann l}' -; or '{focus, hartmann r}' -function collimate_obscomm, hdr - - obscomm = strtrim(sxpar(hdr, 'OBSCOMM'),2) - hartmann = strtrim(sxpar(hdr, 'HARTMANN'),2) - if (obscomm EQ '{focus, hartmann l}' OR hartmann EQ 'Left') then $ - retval = -1 $ - else if (obscomm EQ '{focus, hartmann r}' OR hartmann EQ 'Right') then $ - retval = 1 $ - else retval = 0 - - return, retval -end -;------------------------------------------------------------------------------ -function collimate_xcorr, img1, img2, mask, ngrow=ngrow, $ - dy=dy, maxshift=maxshift, qgood=qgood - - dims = size(img1, /dimens) - nx = dims[0] - ny = dims[1] - - ;---------- - ; Make a mask of pixels that are good in both images, and grow - ; any bad pixels by NGROW in each dimension. - ; Also mask any pixels within MAXSHIFT from the edge of the CCD. - - width = ngrow*2 + 1 - newmask = smooth(mask*width^2, width, /edge_truncate) EQ width^2 - newmask[0:maxshift,*] = 0 - newmask[nx-1-maxshift:nx-1,*] = 0 - newmask[*,0:maxshift] = 0 - newmask[*,ny-1-maxshift:ny-1] = 0 - - newimg1 = img1 * newmask - newimg2 = img2 * newmask - - nshift = ceil(2*maxshift/dy) - yshift = -maxshift + dy * lindgen(nshift) - - ans = fltarr(nshift) - for j=0, nshift-1 do $ - ans[j] = total( newimg1 * sshift2d(newimg2,[0,yshift[j]]) * newmask ) - junk = max(ans, ibest) - yoffset = yshift[ibest] - - ; Good solution iff >75% pixels are good in the subregion - qgood = mean(newmask) GT 0.75 - - return, yoffset -end -;------------------------------------------------------------------------------ -pro ccdtilt1, expnum1, expnum2, docams=docams, indir=indir, $ - nregx=nregx, nregy=nregy, dy=dy, maxshift=maxshift, $ - nocheck=nocheck, doplot=doplot, $ - yoffset=yoffset, moffset=moffset, xcenter=xcenter, ycenter=ycenter - - if (NOT keyword_set(maxshift)) then maxshift = 3 - if (NOT keyword_set(nregx)) then nregx = 8 - if (NOT keyword_set(nregy)) then nregy = 8 - if (NOT keyword_set(dy)) then dy = 0.05 - ngrow = 2 ; Grow bad pixels by this number of pixels in every dimension - focustol = 0.25 - - ;---------- - ; Locate the input files (either compressed or un-compressed) - - if (NOT keyword_set(indir)) then begin - indir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(indir)) then $ - indir = '/data/spectro' - indir = indir + '/*' - endif - - print,'' - print,'ANALYZING FOCUS FOR CAMERA ', docams - filename1 = 'sdR-' + docams + '-' + string(expnum1, format='(i8.8)') $ - + '.fit*' - filename2 = 'sdR-' + docams + '-' + string(expnum2, format='(i8.8)') $ - + '.fit*' - - filename1 = (findfile(djs_filepath(filename1, root_dir=indir), count=ct1))[0] - filename2 = (findfile(djs_filepath(filename2, root_dir=indir), count=ct2))[0] - - if (ct1 EQ 0 OR ct2 EQ 0) then begin - print, 'Files not found' - return - endif - - ;---------- - ; Read the two images - - sdssproc, filename1, bigimg1, bigivar1, hdr=hdr1, /silent - sdssproc, filename2, bigimg2, bigivar2, hdr=hdr2, /silent - - camname = strtrim(sxpar(hdr1, 'CAMERAS'),2) - camcolor = strmid(camname,0,1) - mjd = sxpar(hdr1, 'MJD') - mjdstr = string(mjd,format='(i5.5)') - expnum1 = sxpar(hdr1, 'EXPOSURE') - expnum2 = sxpar(hdr2, 'EXPOSURE') - expstr = string(expnum1, expnum2, format='(i8.8,"-",i8.8)') - - ; Remember original image size for contour plots - dims_big = size(bigimg1, /dimens) - nx_big = dims_big[0] - ny_big = dims_big[1] - qboss = nx_big GT 4000 ; True if BOSS image - - ; Explicitly set the subregion in which to compute focus - if (camcolor EQ 'b' AND qboss) then begin - xtrim = [250,3820] - ytrim = [820,3600] - endif else if (camcolor EQ 'r' AND qboss) then begin - xtrim = [240,3840] - ytrim = [500,3560] - endif else begin - xtrim = [0,2047] - ytrim = [0,2047] - endelse - - if (keyword_set(nocheck)) then begin - hartpos1 = -1 - hartpos2 = 1 - endif else begin - hartpos1 = collimate_obscomm(hdr1) - hartpos2 = collimate_obscomm(hdr2) - if (hartpos1 EQ 0 OR hartpos2 EQ 0) then begin - print, 'FITS header do not indicate these are Hartmann exposures' - return - endif - if (hartpos1 EQ hartpos2) then begin - print,' FITS header indicate both exposures had same Hartmann position' - return - endif - endelse - - plotfile = 'Collimate-' + mjdstr + '-' + camname $ - + string(expnum1, format='("-",i8.8)') + '.ps' - logfile = 'Collimate-' + mjdstr + '-' + camname $ - + string(expnum1, format='("-",i8.8)') + '.log' - title = 'Collimation for MJD=' + mjdstr + ' Camera=' + camname $ - + ' Exp=' + expstr - - ;---------- - ; Compute offsets across the image - - moffset = fltarr(nregx,nregy) - yoffset = fltarr(nregx,nregy) - xcenter = fltarr(nregx,nregy) - ycenter = fltarr(nregx,nregy) - - for iregx=0, nregx-1 do begin - for iregy=0, nregy-1 do begin - print, 'Region ', iregx*nregy+iregy, nregx*nregy, string(13b), $ - format='(a,i,i,a,$)' - ix1 = long(xtrim[0] + iregx * float(xtrim[1]-xtrim[0]) / nregx) - ix2 = long(xtrim[0] + (iregx+1) * float(xtrim[1]-xtrim[0]) / nregx - 1) - iy1 = long(ytrim[0] + iregy * float(ytrim[1]-ytrim[0]) / nregy) - iy2 = long(ytrim[0] + (iregy+1) * float(ytrim[1]-ytrim[0]) / nregy - 1) - xcenter[iregx,iregy]=0.5*(ix1+ix2) - ycenter[iregx,iregy]=0.5*(iy1+iy2) - yoffset[iregx,iregy] = collimate_xcorr( $ - bigimg1[ix1:ix2,iy1:iy2], bigimg2[ix1:ix2,iy1:iy2], $ - (bigivar1[ix1:ix2,iy1:iy2] NE 0) $ - AND (bigivar2[ix1:ix2,iy1:iy2] NE 0), $ - ngrow=ngrow, dy=dy, maxshift=maxshift, qgood=qgood1) - moffset[iregx,iregy] = qgood1 - endfor - endfor - print - - ;---------- - ; We have assumed that the sequence is Hartmann-l, then Hartmann-r. - ; If in the other order, then reverse the results - - if (hartpos1 GT hartpos2) then begin - yoffset *= -1 - endif - - ;---------- - - splog, /close - - ;---------- - ; Make the contour plot of focus if arcs look okay - - if (keyword_set(doplot)) then begin - dfpsplot, plotfile, /color, /square - - ; Resample+smooth the image by a factor of 4 for the contour plot - yoffimg = min_curve_surf(yoffset, nx=nregx*4, ny=nregy*4) - xaxis = nx_big * (findgen(nregx*4) + 0.5) / (nregx*4) - yaxis = ny_big * (findgen(nregy*4) + 0.5) / (nregy*4) - - nlevel = 10 - level0 = min(yoffset) - level1 = max(yoffset) - levels = level0 + findgen(nlevel+1) * (level1 - level0) / nlevel - c_colors = (levels GE 0) * djs_icolor('blue') $ - + (levels LT 0) * djs_icolor('red') - contour, yoffimg, xaxis, yaxis, /follow, levels=levels, $ - c_colors=c_colors, c_charsize=2, $ - xrange=[0,nx_big], yrange=[0,ny_big], /xstyle, /ystyle, $ - xtitle='X [pix]', ytitle='Y [pix]', title=title - meanyoffstr = strtrim(mean(yoffimg),2) - xyouts, 0.5*nx_big, 0.92*ny_big, align=0.5, $ - 'Mean offset = ' + meanyoffstr + ' pix', charsize=1.5, charthick=2 - - dfpsclose - endif - - return -end -;------------------------------------------------------------------------------ -function ccdtilt_zero, piston1, yoffset1 - - ; Sort everything by piston position - isort = sort(piston1) - piston = piston1[isort] - yoffset = yoffset1[isort] - - np = n_elements(piston) - i1 = max(where(piston LE 0) > 0) - i2 = min(where(piston GE 0) < (np-1)) - i2 = (i2 > (i1+1)) - if (i2 EQ np) then begin - i1 = i1-1 - i2 = i2-1 - endif - - slope = (piston[i2] - piston[i1]) / (yoffset[i2] - yoffset[i1]) - pzero = piston[i1] - slope * yoffset[i1] - - return, pzero -end -;------------------------------------------------------------------------------ -pro ccdtilt, expnum1, expnum2, piston=piston, docams=docams, _EXTRA=Extra - - if (n_params() LT 1) then begin - print, 'Syntax - ccdtilt, expnum1, piston=, [ expnum2, docams=, indir=, $' - print, ' nregx=, nregy=, maxshift=, /nocheck, /doplot ]' - return - endif - - if (n_elements(piston) NE n_elements(expnum1)) then $ - message, 'Elements in PISTON must agree with EXPNUM1' - - ;---------- - ; Set defaults - - if (NOT keyword_set(expnum2)) then expnum2 = expnum1 + 1 - if (NOT keyword_set(docams)) then docams = ['b1','b2','r1','r2'] - - quiet = !quiet - !quiet = 1 - - ;---------- - ; If DOCAMS is an array, then call this routine recursively - - ncam = n_elements(docams) - if (ncam GT 1) then begin - for icam=0, ncam-1 do begin - ccdtilt, expnum1, expnum2, piston=piston, docams=docams[icam], $ - _EXTRA=Extra - endfor - !quiet = quiet - return - endif - - ;---------- - ; Loop through all the exposures - - nfile = n_elements(expnum1) - for ifile=0, nfile-1 do begin - print, 'Working on file ', ifile+1,' of ',nfile - ccdtilt1, expnum1[ifile], expnum2[ifile], docams=docams, $ - indir=indir, _EXTRA=Extra, $ - yoffset=yoffset1, moffset=moffset1, xcenter=xcenter1, ycenter=ycenter1 - if (ifile EQ 0) then begin - yoffset = yoffset1 - moffset = moffset1 - endif else begin - yoffset = [[[yoffset]], [[yoffset1]]] - moffset = [[[moffset]], [[moffset1]]] - endelse - endfor - - ;---------- - ; At each CCD location, solve for the best piston position - - dims = (size(yoffset, /dimens))[0:1] - pbest = fltarr(dims) - 999. - for i=0, dims[0]-1 do begin - for j=0, dims[1]-1 do begin - indx = where(moffset[i,j,*] NE 0, ct) - if (ct GT 1) then $ - pbest[i,j] = ccdtilt_zero(piston[indx], yoffset[i,j,indx]) - endfor - endfor - - print, 'Focus offset map in microns ' + docams - print, 'Positive values have focus closer to camera' - print, 'Fiber number runs left-to-right at X=' $ - +string(minmax(xcenter1),format='(2i8)') - print, 'Wavelength runs bottom to top at Y=' $ - +string(minmax(ycenter1),format='(2i8)') - for i=dims[1]-1, 0, -1 do $ - print, pbest[*,i],format='('+string(dims[0])+'i6)' - - print, '' - !quiet = quiet - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/collimate.pro b/pro/apo2d/collimate.pro deleted file mode 100644 index dcfb14201..000000000 --- a/pro/apo2d/collimate.pro +++ /dev/null @@ -1,560 +0,0 @@ -;+ -; NAME: -; collimate -; -; PURPOSE: -; Compute the spectrograph collimation focus from Hartmann mask exposures. -; -; CALLING SEQUENCE: -; collimate, expnum1, [ expnum2, docams=, indir=, nregx=, nregy=, $ -; maxshift=, /nocheck, /debug, /test ] -; -; INPUTS: -; expnum1 - First exposure number of raw sdR file. -; -; OPTIONAL KEYWORDS: -; expnum2 - Second exposure number; default to EXPNUM1+1. -; docams - Cameras to analyze; default to ['b1','b2','r1','r2']. -; indir - Input directory for files; default to searching for -; files in $BOSS_SPECTRO_DATA/*. If $BOSS_SPECTRO_DATA is not set, -; then it is assumed to be /data/spectro. -; nregx - Number of sub-regions in the X dimension; default to 8. -; nregy - Number of sub-regions in the Y dimension; default to 8. -; maxshift - Maximum pixel shift to search in both X and Y; default to 3. -; nocheck - If set, then assume that the 1st exposure is Hartmann-l, -; and the 2nd exposure is Hartmann-r, rather than looking at -; the OBSCOMM header keyword. This correct keywords are -; added by the SOP goSpecFocus command, but will not be if -; you simply move the collimator and shutters yourself. -; (Deprecated to never do this check, since BOSS has -; no header keywords.) -; debug - flag to remove hardwired subregions and fits and instead -; process all of the data in the array. Much slower than the -; nominal routine but informative for tests of focus variation -; across full illuminated area -; test - flag that prints out 1 line for comparison with smallcollimate -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The focus of the collimator is measured by comparing two Hartmann -; exposures of arc lamps, and looking for shifts in the arc line positions. -; A linear correlation coefficient is computed independently in NREGX -; by NREGY regions on each CCD as a function of pixel shifts of the 2nd -; image in both X and Y. The best-focus value is found in each region -; by maximizing the linear correlation in the Y (wavelength) direction. -; Now that we have another routine that calls the images with subarray reads, -; the routine looks for the subarray header keyword and calls the other -; collimate routine if need be. -; -; The following files are output for each camera: -; Collimate-$MJD-$CAMERA-$EXPNUM1.log -; Collimate-$MJD-$CAMERA-$EXPNUM1.ps -; -; The position of the Hartmann shutters is read from the OBSCOMM header -; keywords for SDSS-I. It is expected to be '{focus, hartmann l}' -; for one exposure and '{focus, hartmann r}' for the other (in either -; order). For BOSS, the HARTMANN keyword is read and must be either -; 'Left' or 'Right'. -; It is assumed that the collimator position is identical for both exposures. -; -; The sense of the pixel shifts reported is what one would have to shift -; the Hartmann-r exposure by in Y to agree with the Hartmann-l exposure. -; -; EXAMPLES: -; Solve for the focus of all 4 CCD's from exposures 10812+10813 -; on MJD 52161 (assuming the files exist in /data/spectro/52161): -; IDL> collimate, 10812 -; -; BUGS: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_filepath() -; djs_icolor() -; sdssproc -; splog -; sxpar() -; -; INTERNAL SUPPORT ROUTINES: -; collimate_obscomm() -; collimate_bad_hdr() -; -; REVISION HISTORY: -; 28-Mar-2002 Written by D. Schlegel, Princeton -; 01-Sep-2009 K. Dawson, Utah -;- -;------------------------------------------------------------------------------ -function collimate_obscomm, hdr - - obscomm = strtrim(sxpar(hdr, 'OBSCOMM'),2) - hartmann = strtrim(sxpar(hdr, 'HARTMANN'),2) - if (obscomm EQ '{focus, hartmann l}' OR hartmann EQ 'Left') then $ - retval = -1 $ - else if (obscomm EQ '{focus, hartmann r}' OR hartmann EQ 'Right') then $ - retval = 1 $ - else retval = 0 - - return, retval -end -;------------------------------------------------------------------------------ -; Return 1 if the header indicates there are no lamps on or no flat-field -; petals closed. If the wrong number, then just print a warning. -function collimate_bad_hdr, hdr - - qbad = 0 - - ffs = sxpar(hdr, 'FFS') - if (keyword_set(ffs)) then begin - ffs_sum = fix( total( fix( str_sep(ffs,' ') ) ) ) - if (ffs_sum LT 8) then $ - splog, 'WARNING: Only ' + strtrim(ffs_sum,2) + ' of 8 flat-field petals closed' - if (ffs_sum EQ 0) then qbad = 1 - endif else begin - splog, 'WARNING: FFS not in file header' - qbad = 1 - endelse - - lamp_ne = sxpar(hdr, 'NE') - lamp_hgcd = sxpar(hdr, 'HGCD') - if (keyword_set(lamp_ne) AND keyword_set(lamp_hgcd)) then begin - ne_sum = fix( total( fix( str_sep(lamp_ne,' ') ) ) ) - hgcd_sum = fix( total( fix( str_sep(lamp_hgcd,' ') ) ) ) - if (ne_sum LT 4) then $ - splog, 'WARNING: Only ' + strtrim(ne_sum,2) + ' of 4 Ne lamps turned on' - if (hgcd_sum LT 4) then $ - splog, 'WARNING: Only ' + strtrim(ne_sum,2) + ' of 4 HgCd lamps turned on' - if (ne_sum + hgcd_sum EQ 0) then qbad = 1 - endif else begin - splog, 'WARNING: NE or HGCD not in file header' - qbad = 1 - endelse - - return, qbad -end -;------------------------------------------------------------------------------ -pro collimate, expnum1, expnum2, docams=docams, indir=indir, $ - nregx=nregx, nregy=nregy, maxshift=maxshift, nocheck=nocheck, $ - debug=debug, test=test - - if (n_params() LT 1) then begin - print, 'Syntax - collimate, expnum1, [ expnum2, docams=, indir=, $' - print, ' nregx=, nregy=, maxshift=, /nocheck, /debug ]' - return - endif - - ;---------- - ; Set defaults - - if (NOT keyword_set(expnum2)) then expnum2 = expnum1 + 1 - if (NOT keyword_set(docams)) then docams = ['b1','b2','r1','r2'] - if (NOT keyword_set(maxshift)) then maxshift = 3 - if (NOT keyword_set(nregx)) then nregx = 8 - if (NOT keyword_set(nregy)) then nregy = 8 - if (NOT keyword_Set(maxshift)) then maxshift = 3. - - ngrow = 2 ; Grow bad pixels by this number of pixels in every dimension - focustol = 0.15 - - quiet = !quiet - !quiet = 1 - - ;---------- - ; Locate the input files (either compressed or un-compressed) - - if (NOT keyword_set(indir)) then begin - indir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(indir)) then $ - indir = '/data/spectro' - indir = indir + '/*' - endif - - filename1 = 'sdR-' + docams[0] + '-' + string(expnum1, format='(i8.8)') $ - + '.fit*' - filename2 = 'sdR-' + docams[0] + '-' + string(expnum2, format='(i8.8)') $ - + '.fit*' - - filename1 = (findfile(djs_filepath(filename1, root_dir=indir), count=ct1))[0] - filename2 = (findfile(djs_filepath(filename2, root_dir=indir), count=ct2))[0] - - if (ct1 EQ 0 OR ct2 EQ 0) then begin - print, 'Files not found' - return - endif - - -; Check if image has subarray readout, if so, then call combsmallcollimate - hdr=headfits(filename1) - subframe_key=sxpar(hdr,'SUBFRAME') - if subframe_key ne '' then begin - combsmallcollimate,expnum1 - return - endif - - ;---------- - ; If DOCAMS is an array, then call this routine recursively - - ncam = n_elements(docams) - if (ncam GT 1) then begin - for icam=0, ncam-1 do begin - collimate, expnum1, expnum2, docams=docams[icam], indir=indir, $ - nregx=nregx, nregy=nregy, maxshift=maxshift, nocheck=nocheck, $ - debug=debug, test=test - endfor - !quiet = quiet - return - endif - - - ;---------- - ; Read the two images - - sdssproc, filename1, bigimg1, ivar1, hdr=hdr1, /silent - sdssproc, filename2, bigimg2, ivar2, hdr=hdr2, /silent - - if (collimate_bad_hdr(hdr1) OR collimate_bad_hdr(hdr2)) then begin - return - endif - - ; Remember original image size for contour plots - dims_orig = size(bigimg1, /dimens) - nx_orig = dims_orig[0] - ny_orig = dims_orig[1] - camname = strtrim(sxpar(hdr1, 'CAMERAS'),2) - camcolor = strmid(camname,0,1) - -;find approximate area of image that is exposed to light -;count total flux in naper square apertures centered on nx/2,ny/2 - naper=20 - dims = size(bigimg1, /dimens) - nx = dims[0] - ny = dims[1] - fraction=1.05 - stepsize=min([nx,ny])/(2*naper) - light=fltarr(naper) - for i=0,naper-1 do begin - light[i]=total(bigimg1[nx/2-stepsize*(i+1):nx/2+stepsize*(i+1)-1,ny/2-stepsize*(i+1):ny/2+stepsize*(i+1)-1]) - endfor - -;first check that the camera is capturing light by requiring -;that a minimum flux falls in the first three apertures -;flux in first three apertures must be greater than 1000 counts and -;also must be monotonically increasing - - cam_flag=0 - if light[0] lt 1.e3 or light[1] lt 1.e3 or light[2] lt 1.e3 or light[0] gt light[1] or light[1] gt light[2] then begin - print,"" - print,"" - print,"" - print,"ERROR FOUND!!" - print,"" - print,"" - wait,5 - print,"THERE DOES NOT APPEAR TO BE ANY LIGHT FROM THE ARCS IN THIS CAMERA!!!" - print,"" - print,"" - print,"" - wait,5 - cam_flag=1 - endif - -;find aperture where there is no significant increase in total light - a=where(light[1:naper-1]/light[0:naper-2] lt fraction) - if a[0] eq -1 then a=naper-2 - - ; Trim to exposed region - fit to illuminated area if debug flag is set - if (keyword_set(debug)) then begin - xtrim = [nx/2-stepsize*(a[0]+1),nx/2+stepsize*(a[0]+1)-1] - ytrim = [ny/2-stepsize*(a[0]+1),ny/2+stepsize*(a[0]+1)-1] - endif else begin - ;hardwire for general use to maintain consistency - if (camcolor eq 'b') then begin - ;(xran = [1180.25, 2914.25] and yran = [754.750, 2488.75] in sdssproc processed image - no overscan) - xtrim = [314,3781] - ytrim = [322,3789] - endif else begin - ;(xran = [755.75, 3356.75] and yran = [762.75, 2062.75] in sdssproc processed image - no overscan) - xtrim = [323,3790] - ytrim = [330,3797] - endelse - endelse - - bigimg1 = bigimg1[xtrim[0]:xtrim[1],ytrim[0]:ytrim[1]] - bigimg2 = bigimg2[xtrim[0]:xtrim[1],ytrim[0]:ytrim[1]] - ivar1 = ivar1[xtrim[0]:xtrim[1],ytrim[0]:ytrim[1]] - ivar2 = ivar2[xtrim[0]:xtrim[1],ytrim[0]:ytrim[1]] - - dims = size(bigimg1, /dimens) - nx = dims[0] - ny = dims[1] - if (n_elements(bigimg1) NE n_elements(bigimg2)) then begin - endif - - if (keyword_set(nocheck)) then begin - hartpos1 = -1 - hartpos2 = 1 - endif else begin - hartpos1 = collimate_obscomm(hdr1) - hartpos2 = collimate_obscomm(hdr2) - if (hartpos1 EQ 0 OR hartpos2 EQ 0) then begin - print, 'FITS header do not indicate these are Hartmann exposures' - return - endif - if (hartpos1 EQ hartpos2) then begin - print,' FITS header indicate both exposures had same Hartmann position' - return - endif - if (hartpos1 EQ 1 OR hartpos2 EQ -1) then begin - print,' FITS headers indicate exposures are not in correct order' - return - endif - endelse - - mjd = sxpar(hdr1, 'MJD') - mjdstr = string(mjd,format='(i5.5)') - expnum1 = sxpar(hdr1, 'EXPOSURE') - expnum2 = sxpar(hdr2, 'EXPOSURE') - expstr = string(expnum1, expnum2, format='(i8.8,"-",i8.8)') - - plotfile = 'Collimate-' + mjdstr + '-' + camname $ - + string(expnum1, format='("-",i8.8)') + '.ps' - logfile = 'Collimate-' + mjdstr + '-' + camname $ - + string(expnum1, format='("-",i8.8)') + '.log' - title = 'Collimation for MJD=' + mjdstr + ' Camera=' + camname $ - + ' Exp=' + expstr - - ;---------- - ; Make a mask of pixels that are good in both images, and grow - ; any bad pixels by NGROW in each dimension. - ; Also mask any pixels within MAXSHIFT from the edge of the CCD. - - width = ngrow*2 + 1 - gmask = (ivar1 NE 0) AND (ivar2 NE 0) - gmask = smooth(gmask*width^2, width, /edge_truncate) EQ width^2 - gmask[0:maxshift,*] = 0 - gmask[nx-1-maxshift:nx-1,*] = 0 - gmask[*,0:maxshift] = 0 - gmask[*,ny-1-maxshift:ny-1] = 0 - - bigimg1 = bigimg1 * gmask - bigimg2 = bigimg2 * gmask - - ;---------- - ; Loop over each possible sub-image - - moffset = fltarr(nregx,nregy) - yoffset = fltarr(nregx,nregy) - xcenter = fltarr(nregx,nregy) - ycenter = fltarr(nregx,nregy) - -; if debug flag is set, then fit all subregions in illuminated area - if (keyword_set(debug)) then begin - xlow=0 - xhigh=nregx-1 - ylow=0 - yhigh=nregy-1 - -; else, fix only the preset subregions to reduce the processing time - endif else begin - if (camcolor eq 'b') then begin - xlow=2 - xhigh=5 - ylow=2 - yhigh=3 - endif else begin - xlow=1 - xhigh=6 - ylow=1 - yhigh=3 - endelse - endelse - - for iregx=xlow, xhigh do begin - for iregy=ylow, yhigh do begin - ix1 = long(iregx * float(nx) / nregx) - ix2 = long((iregx+1) * float(nx) / nregx - 1) - iy1 = long(iregy * float(ny) / nregy) - iy2 = long((iregy+1) * float(ny) / nregy - 1) - submask = gmask[ix1:ix2,iy1:iy2] - submask[0:maxshift,*] = 0 - submask[*,0:maxshift] = 0 - submask[ix2-ix1-maxshift:ix2-ix1,*] = 0 - submask[*,iy2-iy1-maxshift:iy2-iy1] = 0 - subimg1 = bigimg1[ix1:ix2,iy1:iy2] - subimg2 = bigimg2[ix1:ix2,iy1:iy2] - xcenter[iregx,iregy]=0.5*(ix1+ix2) - ycenter[iregx,iregy]=0.5*(iy1+iy2) - - ;---------- - ; Compute the linear correlation coefficients - - dy = 0.1 - nshift = ceil(2*maxshift/dy) - yshift = -maxshift + dy * lindgen(nshift) - - ans = fltarr(nshift) - for j=0, nshift-1 do $ - ans[j] = total( subimg1 * sshift2d(subimg2,[0,yshift[j]]) * submask ) - junk = max(ans, ibest) - yoffset[iregx,iregy] = yshift[ibest] - ; Good solution iff >75% pixels are good in the subregion - moffset[iregx,iregy] = mean(submask) GT 0.75 - endfor - endfor - - -; Determine region for optimal focus for R and B on BOSS spectrograph -; for BOSS, choose region of red CCD that lies in the ~6000-8500 /AA range to avoid bias from the far red absorption depth - deep_red=2000 - red_x=[min(xcenter),max(xcenter)] - red_y=[min(ycenter),ny/2-1] -; for BOSS, choose region of blue CCD near center of image, excluding extremes of saddle that sit near edges - blue_x=[700,2700] - blue_y=[400,2000] - if (nx_orig LT 4000) then igood = where(moffset) - if (nx_orig GE 4000 AND camcolor eq 'r') then igood = where(moffset AND ycenter gt red_y[0] AND ycenter lt red_y[1] AND xcenter gt red_x[0] AND xcenter lt red_x[1]) - if (nx_orig GE 4000 AND camcolor eq 'b') then igood = where(moffset AND ycenter ge blue_y[0] AND ycenter le blue_y[1] AND xcenter ge blue_x[0] AND xcenter le blue_x[1]) - -;only assign offsets if camera is capturing light - if cam_flag eq 1 then begin - igood=-1 - meanyoffstr = 'N/A' - meanydevstr = 'N/A' - minyoffstr = 'N/A' - maxyoffstr = 'N/A' - yoffset[*,*]=0.0 - meanyoff = 0.0 - meanydev = 0.0 - minyoff = 0.0 - maxyoff = 0.0 - endif - - if cam_flag eq 0 then begin - meanyoff = mean(yoffset[igood]) - meanydev = stddev(yoffset[igood]) - minyoff = min(yoffset[igood]) - maxyoff = max(yoffset[igood]) - if camname eq 'r1' then meanyoff-=0.34 ;for x/wsig offset in r1 1-21-13 MDO - meanyoffstr = string(meanyoff, format='(f5.2)') - meanydevstr = string(meanydev, format='(f5.2)') - minyoffstr = string(minyoff, format='(f5.2)') - maxyoffstr = string(maxyoff, format='(f5.2)') - endif - - ;---------- - ; Write info to the log file, and echo only some to the terminal - - splog, file=logfile - splog, 'FILE1 = ' + filename1 - splog, 'FILE2 = ' + filename2 - splog, 'MJD = ', mjdstr - splog, 'Camera = ', camname - splog, ' ' - splog, 'IMAGE OF WAVELENGTH-OFFSETS', /no_stdout - splog, '(in the correct orientation that 0,0 is lower left)', /no_stdout - splog, ' ', /no_stdout - for iregy=nregy-1, 0, -1 do begin - format = '(' + string(nregx) + 'f6.2)' - splog, yoffset[*,iregy], format=format, /no_stdout - endfor - splog, ' ', /no_stdout - splog, 'Min offset = ' + minyoffstr + ' pix', /no_stdout - splog, 'Max offset = ' + maxyoffstr + ' pix', /no_stdout - splog, 'RMS across CCD = ' + meanydevstr + ' pix', /no_stdout - splog, ' ', /no_stdout - splog, 'Mean offset = ' + meanyoffstr + ' pix' - if keyword_set(test) then print,'collimate-test '+ $ - string(expnum1,format='(i8.8)')+ ' ' +camname+ $ - ' mean offset = '+ meanyoffstr +' pix' - splog, ' ' - - ;---------- - ; Output the predicted movements in order to collimate - - spectroid = strmid(camname,1,1) - - tolstr = strtrim(string(focustol, format='(f6.2)'),2) - if (abs(meanyoff) LT focustol) then begin - splog, 'Camera ' + camname $ - + ' appears to be IN-FOCUS (|mean| < ' + tolstr + ' pix)' - endif else begin - splog, 'Camera ' + camname $ - + ' appears to be OUT-OF-FOCUS (|mean| > ' + tolstr + ' pix)' - endelse - - ; The focus adjustments were calibrated to the old 24 micron pixels, - ; so should be smaller for any given offset seen with 15 micron pixels - if (nx_orig LT 4000) then pixscale = 24. $ ; microns - else pixscale = -15. ; microns - -;ADD FUNNY FUDGE FACTORS - KD - if (camcolor EQ 'r') then begin - if (camname EQ 'r1') then val = long( -9150. * meanyoff*1.12 * pixscale/24. ) - if (camname EQ 'r2') then val = long( -9150. * meanyoff*1.12 * pixscale/24. ) - splog, 'Predict (red) piston movement of ', val, $ - ' steps for spectro-' + spectroid - if (nx_orig LT 4000) then splog, 'Issue SOP command: "sp' + spectroid $ - + '; mechPiston ' + strtrim(string(val),2) + '"' - if (nx_orig GT 4000) then splog, 'Issue command: "boss moveColl spec=sp' + spectroid $ - + ' a=' + strtrim(string(val),2) + ' b=' + strtrim(string(val),2) + ' c=' + strtrim(string(val),2) + '"' - endif else if (camcolor EQ 'b') then begin - if (nx_orig LT 4000) then pixscale = 24. $ ; microns - else pixscale = 15. ; microns - if (camname EQ 'b1') then val = -31.87 * meanyoff * pixscale/24. ;year one -35.69 - if (camname EQ 'b2') then val = -28.95 * meanyoff * pixscale/24. - splog, 'Predict blue camera ring movement of ' $ - + string(val, format='(f6.1)') + ' degrees for spectro-' + spectroid - splog, ' (if red is already in focus)' - endif - - if (nx_orig GT 4000 AND camcolor EQ 'r') then begin - colla=sxpar(hdr1,"COLLA") - collb=sxpar(hdr1,"COLLB") - collc=sxpar(hdr1,"COLLC") - splog, 'current motorPosition ', colla, collb, collc - splog, 'new expected motorPosition', colla+val, collb+val, collc+val - endif - - splog, /close - - ;---------- - ; Make the contour plot of focus if arcs look okay - - if cam_flag eq 0 then begin - dfpsplot, plotfile, /color, /square - - ; Resample+smooth the image by a factor of 4 for the contour plot - if (max(yoffset) GT min(yoffset)) then $ - yoffimg = min_curve_surf(yoffset, nx=nregx*4, ny=nregy*4) $ - else $ - yoffimg = fltarr(nregx*4,nregy*4) + min(yoffset) - xaxis = xtrim[0] + nx * (findgen(nregx*4) + 0.5) / (nregx*4) - yaxis = ytrim[0] + ny * (findgen(nregy*4) + 0.5) / (nregy*4) - -; lspace = 0.1 -; level0 = floor(min(yoffset) / lspace) * lspace -; nlevel = ceil((max(yoffset) - level0) / lspace) + 1 -; levels = level0 + lindgen(nlevel) * lspace - nlevel = 8 - level0 = min(yoffset) - level1 = max(yoffset) > (level0 + 0.1) - levels = level0 + findgen(nlevel+1) * (level1 - level0) / nlevel - c_colors = (levels GE 0) * djs_icolor('blue') $ - + (levels LT 0) * djs_icolor('red') - - contour, yoffimg, xaxis, yaxis, /follow, levels=levels, $ - c_colors=c_colors, c_charsize=2, $ - xrange=[0,nx_orig], yrange=[0,ny_orig], /xstyle, /ystyle, $ - xtitle='X [pix]', ytitle='Y [pix]', title=title - xyouts, 0.5*nx_orig, 0.92*ny_orig, align=0.5, $ - 'Mean offset = ' + meanyoffstr + ' pix', charsize=1.5, charthick=2 - - dfpsclose - endif - - !quiet = quiet -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/combsmallcollimate.pro b/pro/apo2d/combsmallcollimate.pro deleted file mode 100644 index 5813ac1b3..000000000 --- a/pro/apo2d/combsmallcollimate.pro +++ /dev/null @@ -1,653 +0,0 @@ -;+ -; NAME: -; combsmallcollimate -; -; PURPOSE: -; Compute the spectrograph collimation focus from Hartmann mask exposures. -; -; CALLING SEQUENCE: -; smallcollimate, expnum1, [ expnum2, docam1s=,docams2= indir=, nregx=, nregy=, $ -; maxshift=, /nocheck, /debug, /simple,spec= ,/test ] -; -; INPUTS: -; expnum1 - First exposure number of raw sdR file. -; -; OPTIONAL KEYWORDS: -; expnum2 - Second exposure number; default to EXPNUM1+1. -; docams1 - Cameras to analyze; default to ['b1','r1']. -; docams2 - Cameras to analyze; default to ['b2','r2']. -; indir - Input directory for files; default to searching for -; files in $BOSS_SPECTRO_DATA/*. If $BOSS_SPECTRO_DATA is not set, -; then it is assumed to be /data/spectro. -; nregx - Number of sub-regions in the X dimension; default to 8. -; nregy - Number of sub-regions in the Y dimension; default to 8. -; maxshift - Maximum pixel shift to search in both X and Y; default to 3. -; nocheck - If set, then assume that the 1st exposure is Hartmann-l, -; and the 2nd exposure is Hartmann-r, rather than looking at -; the OBSCOMM header keyword. This correct keywords are -; added by the SOP goSpecFocus command, but will not be if -; you simply move the collimator and shutters yourself. -; (Deprecated to never do this check, since BOSS has -; no header keywords.) -; debug - flag to remove hardwired subregions and fits and instead -; process all of the data in the array. Much slower than the -; nominal routine but informative for tests of focus variation -; across full illuminated area -; simple - generate simpler output, for the benefit of external -; programs. [SEE NOTES BELOW] -; -; spec - to do them by spectrograph, use 'sp1' or 'sp2' or -; ['sp1','sp2'](default) -; -; badres - bad residual for blue ring. Greater than this, -; observers will need to move the ring. Default to 6 -; degrees -; test - flag that prints out 1 line for comparison with smallcollimate -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The focus of the collimator is measured by comparing two Hartmann -; exposures of arc lamps, and looking for shifts in the arc line positions. -; A linear correlation coefficient is computed independently in NREGX -; by NREGY regions on each CCD as a function of pixel shifts of the 2nd -; image in both X and Y. The best-focus value is found in each region -; by maximizing the linear correlation in the Y (wavelength) direction. -; -; The following files are output for each camera: -; Collimate-$MJD-$CAMERA-$EXPNUM1.log -; Collimate-$MJD-$CAMERA-$EXPNUM1.ps -; -; The position of the Hartmann shutters is read from the OBSCOMM header -; keywords for SDSS-I. It is expected to be '{focus, hartmann l}' -; for one exposure and '{focus, hartmann r}' for the other (in either -; order). For BOSS, the HARTMANN keyword is read and must be either -; 'Left' or 'Right'. -; It is assumed that the collimator position is identical for both exposures. -; -; The sense of the pixel shifts reported is what one would have to shift -; the Hartmann-r exposure by in Y to agree with the Hartmann-l exposure. -; -; /SIMPLE COMMENTS: -; The /simple output is sometimes read by an external program which -; expects or passes on the following output lines, given ${specname} -; in ['sp1', 'sp1'] and ${camname} in ['b1','b2',r1',r2']. -; -; We will likely turn this output into a .par file, but in the meanwhile: -; -; ${specname} AverageMove -; - the move to apply to the ${specname} collimator. -; If this line does not appear, the collimation process fails. -; -; ${specname} Residuals ,, -; - the residual error after applying the AverageMove. -; . steps for red, -; . angle for blue, -; . if the string is "OK" the blue ring position after the -; move is taken to be within spec. Otherwise collimation -; is treated as failed, and the string is passed on to the humans. -; -; ${camname} MeanOffset -; - For all cameras, the measured pixel error. Not used, but recorded. -; -; ${camname} PistonMove -; - For the red cameras, the collimator move required to correct -; MeanOffset. Not used, but recorded. -; -; ${camname} RingMove -; - For the blue cameras, the ring rotation required to correct -; MeanOffset. Not used, but recorded. -; -; Those outputs all generate obvious keywords for the APO archiver, -; etc. Any other outputs on stdout and stderr are passed on as -; warnings. -; -; EXAMPLES: -; Solve for the focus of all 4 CCD's from exposures 10812+10813 -; on MJD 52161 (assuming the files exist in /data/spectro/52161): -; IDL> collimate, 10812 -; -; BUGS: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_filepath() -; djs_icolor() -; fits_wait() -; sdssproc -; splog -; sxpar() -; -; INTERNAL SUPPORT ROUTINES: -; collimate_obscomm() -; collimate_bad_hdr() -; -; REVISION HISTORY: -; 28-Mar-2002 Written by D. Schlegel, Princeton -; 01-Sep-2009 K. Dawson, Utah -;- -;------------------------------------------------------------------------------ -function collimate_obscomm, hdr - - obscomm = strtrim(sxpar(hdr, 'OBSCOMM'),2) - hartmann = strtrim(sxpar(hdr, 'HARTMANN'),2) - if (obscomm EQ '{focus, hartmann l}' OR hartmann EQ 'Left') then $ - retval = -1 $ - else if (obscomm EQ '{focus, hartmann r}' OR hartmann EQ 'Right') then $ - retval = 1 $ - else retval = 0 - - return, retval -end -;------------------------------------------------------------------------------ -; Return 1 if the header indicates there are no lamps on or no flat-field -; petals closed. If the wrong number, then just print a warning. -function collimate_bad_hdr, hdr - - qbad = 0 - - ffs = sxpar(hdr, 'FFS') - if (keyword_set(ffs)) then begin - ffs_sum = fix( total( fix( str_sep(ffs,' ') ) ) ) - if (ffs_sum LT 8) then $ - splog, 'WARNING: Only ' + strtrim(ffs_sum,2) + ' of 8 flat-field petals closed' - if (ffs_sum EQ 0) then qbad = 1 - endif else begin - splog, 'WARNING: FFS not in file header' - qbad = 1 - endelse - - lamp_ne = sxpar(hdr, 'NE') - lamp_hgcd = sxpar(hdr, 'HGCD') - if (keyword_set(lamp_ne) AND keyword_set(lamp_hgcd)) then begin - ne_sum = fix( total( fix( str_sep(lamp_ne,' ') ) ) ) - hgcd_sum = fix( total( fix( str_sep(lamp_hgcd,' ') ) ) ) - if (ne_sum LT 4) then $ - splog, 'WARNING: Only ' + strtrim(ne_sum,2) + ' of 4 Ne lamps turned on' - if (hgcd_sum LT 4) then $ - splog, 'WARNING: Only ' + strtrim(hgcd_sum,2) + ' of 4 HgCd lamps turned on' - if (ne_sum + hgcd_sum EQ 0) then qbad = 1 - endif else begin - splog, 'WARNING: NE or HGCD not in file header' - qbad = 1 - endelse - - return, qbad -end -;------------------------------------------------------------------------------ -pro combsmallcollimate, expnum1, expnum2=expnum2, docams1=docams1,docams2=docams2, indir=indir, $ - maxshift=maxshift, nocheck=nocheck,debug=debug, $ - simple=simple,spec=spec,badres=badres,test=test - - - if (n_params() LT 0) then begin - print, 'Syntax - collimate, expnum1, [ expnum2, docams1=,docams2=,spec=, indir=, $' - print, ' nregx=, nregy=, maxshift=, /nocheck, /debug, /simple ]' - return - endif - - ;---------- - ; Set defaults - if (NOT keyword_set(spec)) then spec=['sp1','sp2'] - if (NOT keyword_set(expnum2)) then expnum2 = expnum1 + 1 - if (NOT keyword_set(maxshift)) then maxshift = 2 - if (NOT keyword_set(badres)) then badres=6 ;bad residual on blue ring - ngrow = 2 ; Grow bad pixels by this number of pixels in every dimension - focustol = 0.20 ;if yoffset less than this, in focus - - ;---------- - ; If SPEC is an array, then call this routine recursively for each spectrograph - - nspec=n_elements(spec) - if (nspec gt 1) then begin - for ispec=0, nspec-1 do begin - combsmallcollimate,expnum1,expnum2=expnum2,docams1=docams1, $ - indir=indir,maxshift=maxshift, nocheck=nocheck,debug=debug, $ - simple=simple,spec=spec[ispec],docams2=docams2, $ - badres=badres,test=test - endfor - return - endif - -if (NOT keyword_set(docams1)) then docams1=['b1','r1'] -if (NOT keyword_set(docams2)) then docams2=['b2','r2'] - - ;---------- - ; Locate the input files (either compressed or un-compressed) - if (NOT keyword_set(indir)) then begin - indir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(indir)) then $ - indir = '/data/spectro' - indir = indir + '/*' - endif - -if (spec eq 'sp1') then docams=docams1 ;picking appropriate camera -if (spec eq 'sp2') then docams=docams2 ; for each spectrograph - -ncam=n_elements(docams) -bad_camera_exposure=0 ;if an exposure does not work (no light, no arcs, not enough light,etc) will =1 - -for icam=0,ncam-1 do begin ;do focus for each camera - filename1pat = djs_filepath('sdR-' + docams[icam] + '-' + string(expnum1, format='(i8.8)') $ - + '.fit*', root_dir=indir) - filename2pat = djs_filepath('sdR-' + docams[icam] + '-' + string(expnum2, format='(i8.8)') $ - + '.fit*', root_dir=indir) - - filename1 = (findfile(filename1pat, count=ct1))[0] - filename2 = (findfile(filename2pat, count=ct2))[0] - - if (ct1 EQ 0 OR ct2 EQ 0) then begin - print, 'All files not found: ' + filename1pat + ", " + filename2pat - return - endif - - ;---------- - ; Read the two images - - if (fits_wait(filename1, deltat=5, tmax=30) EQ 0) then begin - print, 'Failure reading file ' + filename1 - return - endif - if (fits_wait(filename2, deltat=5, tmax=30) EQ 0) then begin - print, 'Failure reading file ' + filename2 - return - endif - ; sdssproc, filename1, bigimg1, ivar1, hdr=hdr1, /silent - ; sdssproc, filename2, bigimg2, ivar2, - ; hdr=hdr2, /silent - ;Not using sdssproc because of subregion arrays affect bias - bigimg1=mrdfits(filename1,0,hdr1) - bigimg2=mrdfits(filename2,0,hdr2) - - bias1 = [ median(bigimg1[10:100,950:1338]), median(bigimg1[4250:4340,950:1338]), 1, 1 ] - bias2 = [ median(bigimg2[10:100,950:1338]), median(bigimg2[4250:4340,950:1338]), 1, 1 ] - - if docams[icam] eq 'b1' then gain = [1.048, 1.048, 1.018, 1.006] - if docams[icam] eq 'b2' then gain = [1.040, 0.994, 1.002, 1.010] - if docams[icam] eq 'r1' then gain = [1.966, 1.566, 1.542, 1.546] - if docams[icam] eq 'r2' then gain = [1.598, 1.656, 1.582, 1.594] - - if (docams[icam] eq 'b1' or docams[icam] eq 'b2') then begin - bigimg1p=fltarr(4096,4112) - bigimg2p=fltarr(4096,4112) - bigimg1p[0:2047,0:2055]=gain[0]*(bigimg1[128:2175,56:2111]-bias1[0]) - bigimg1p[2048:4095,0:2055]=gain[1]*(bigimg1[2176:4223,56:2111]-bias1[1]) - ;bigimg1p[0:2047,2056:4111]=gain[2]*(bigimg1[128:2175,2112:4167]-bias1[2]) ;not needed since only use bottom portion of ccd - ;bigimg1p[2048:4095,2056:4111]=gain[3]*(bigimg1[2176:4223,2112:4167]-bias1[3]) - bigimg2p[0:2047,0:2055]=gain[0]*(bigimg2[128:2175,56:2111]-bias2[0]) - bigimg2p[2048:4095,0:2055]=gain[1]*(bigimg2[2176:4223,56:2111]-bias2[1]) - ;bigimg2p[0:2047,2056:4111]=gain[2]*(bigimg2[128:2175,2112:4167]-bias2[2]) - ;bigimg2p[2048:4095,2056:4111]=gain[3]*(bigimg2[2176:4223,2112:4167]-bias2[3]) - bigimg1=fltarr(4096,4112) - bigimg2=fltarr(4096,4112) - bigimg1[*,*]=bigimg1p[0:4095,0:4111] - bigimg2[*,*]=bigimg2p[0:4095,0:4111] - endif else begin - bigimg1p=fltarr(4114,4128) - bigimg2p=fltarr(4114,4128) - bigimg1p[0:2056,0:2063]=gain[0]*(bigimg1[119:2175,48:2111]-bias1[0]) - bigimg1p[2057:4113,0:2063]=gain[1]*(bigimg1[2176:4232,48:2111]-bias1[1]) - bigimg2p[0:2056,0:2063]=gain[2]*(bigimg2[119:2175,48:2111]-bias2[0]) - bigimg2p[2057:4113,0:2063]=gain[3]*(bigimg2[2176:4232,48:2111]-bias2[1]) - bigimg1=fltarr(4114,4128) - bigimg2=fltarr(4114,4128) - bigimg1[*,*]=bigimg1p[0:4113,0:4127] - bigimg2[*,*]=bigimg2p[0:4113,0:4127] - endelse - bigimg1p=0 - bigimg2p=0 - bias1=0 - bias2=0 - if (collimate_bad_hdr(hdr1) OR collimate_bad_hdr(hdr2)) then begin - return - endif - - ;region to look at - yl=850 - yh=1300 - xl=1500 - xh=2500 - - im=bigimg1[xl:xh,yl:yh] - - for i=0, 10 do begin ;Apodization step, to minimize edge effects - im[i,*]=i/10.*im[i,*] - im[450-i,*]=i/10.*im[450-i,*] - endfor - - if (docams[icam] eq 'b1' or docams[icam] eq 'b2') then var=variance(im[*,300:450]) else var=variance(im[*,0:150]) ; find variance near bright lines - - ; Remember original image size for contour plots - dims_orig = size(bigimg1, /dimens) - nx_orig = dims_orig[0] - ny_orig = dims_orig[1] - camname = strtrim(sxpar(hdr1, 'CAMERAS'),2) - camcolor = strmid(camname,0,1) - -;first check that the camera is capturing light by requiring -;that the variance is greater than 100 - - cam_flag=0 - - if (var lt 100 ) then begin - if keyword_set(simple) then begin - print,"THERE DOES NOT APPEAR TO BE ANY LIGHT FROM THE ARCS IN ", camname, "!!!" - cam_flag=1 - return - endif else begin - print,"" - print,"" - print,"" - print,"ERROR FOUND!!" - print,"" - print,"" - wait,3 - print,"THERE DOES NOT APPEAR TO BE ANY LIGHT FROM THE ARCS IN THIS CAMERA!!!" - print,"" - print,"" - print,"" - wait,3 - cam_flag=1 - return - endelse - endif - - dims = size(bigimg1, /dimens) - nx = dims[0] - ny = dims[1] - - - if (keyword_set(nocheck)) then begin ;if left right order of exposures switched - hartpos1 = -1 - hartpos2 = 1 - endif else begin - hartpos1 = collimate_obscomm(hdr1) - hartpos2 = collimate_obscomm(hdr2) - if (hartpos1 EQ 0 OR hartpos2 EQ 0) then begin - print, 'FITS header do not indicate these are Hartmann exposures' - return - endif - if (hartpos1 EQ hartpos2) then begin - print,' FITS header indicate both exposures had same Hartmann position' - return - endif - endelse - - mjd = sxpar(hdr1, 'MJD') - mjdstr = string(mjd,format='(i5.5)') - expnum1 = sxpar(hdr1, 'EXPOSURE') - expnum2 = sxpar(hdr2, 'EXPOSURE') - expstr = string(expnum1, expnum2, format='(i8.8,"-",i8.8)') - - plotfile = 'Collimate-' + mjdstr + '-' + camname $ - + string(expnum1, format='("-",i8.8)') + '.ps' - logfile = 'Collimate-' + mjdstr + '-' + camname $ - + string(expnum1, format='("-",i8.8)') + '.log' - title = 'Collimation for MJD=' + mjdstr + ' Camera=' + camname $ - + ' Exp=' + expstr - - ;---------- - ; Make a mask of pixels that are good in both images, and grow - ; any bad pixels by NGROW in each dimension - ; Also mask any pixels within MAXSHIFT from the edge of the CCD. -;djs_iterstat,bigimg1,ivar=ivar1 ;can't use these since subarray -;djs_iterstat,bigimg2,ivar=ivar2 - -;;;;;;;;;;;;;;;;;;; - width = ngrow*2 + 1 -; gmask = (ivar1 NE 0) AND (ivar2 NE 0) - gmask = bigimg1*0.+1. - gmask = smooth(gmask*width^2, width, /edge_truncate) EQ width^2 - gmask[0:maxshift,*] = 0 - gmask[nx-1-maxshift:nx-1,*] = 0 - gmask[*,0:maxshift] = 0 - gmask[*,ny-1-maxshift:ny-1] = 0 - - bigimg1 = bigimg1 * gmask - bigimg2 = bigimg2 * gmask - - ;use one subregion - ix1=xl - ix2=xh - iy1=yl - iy2=yh - - submask = gmask[ix1:ix2,iy1:iy2] - submask[0:maxshift,*] = 0 - submask[*,0:maxshift] = 0 - submask[ix2-ix1-maxshift:ix2-ix1,*] = 0 - submask[*,iy2-iy1-maxshift:iy2-iy1] = 0 - subimg1 = bigimg1[ix1:ix2,iy1:iy2] - subimg2 = bigimg2[ix1:ix2,iy1:iy2] - xcenter=0.5*(ix1+ix2) - ycenter=0.5*(iy1+iy2) - - - ;---------- - ; Compute the linear correlation coefficients - - dy = 0.05 - nshift = ceil(2*maxshift/dy) - yshift = -maxshift + dy * lindgen(nshift) -; - ans = fltarr(nshift) - for j=0, nshift-1 do $ - ans[j] = total( subimg1 * sshift2d(subimg2,[0,yshift[j]]) * submask ) - junk = max(ans, ibest) - yoffset = yshift[ibest] -; ; Good solution iff >75% pixels are good in the subregion - moffset = mean(submask) ;GT 0.75 - - - - - ;---------- - ; We have assumed that the sequence is Hartmann-l, then Hartmann-r. - ; If in the other order, then reverse the results - - if (hartpos1 GT hartpos2) then begin - yoffset = -yoffset - endif - - -;only assign offsets if camera is capturing light - if cam_flag eq 1 then begin - igood=-1 - meanyoffstr = 'N/A' - meanydevstr = 'N/A' - minyoffstr = 'N/A' - maxyoffstr = 'N/A' - yoffset[*,*]=0.0 - meanyoff = 0.0 - meanydev = 0.0 - minyoff = 0.0 - maxyoff = 0.0 - endif - - if cam_flag eq 0 then begin -;offsets for regions picked - - if docams[icam] eq 'b1' then begin ;using collimate and not collimate,/debug with data from 56691; Feb 2 second collimation test - m=1.00 - b=0.129; last 0.145 - yoffsetb1=yoffset*m + b - endif - - if docams[icam] eq 'b2' then begin - m=1.00 - b=0.00 ;last 0.023 - yoffsetb2=yoffset*m + b - endif - - if docams[icam] eq 'r1' then begin - m=1.00 - b=-0.229; last -0.294 - yoffsetr1=yoffset*m + b - endif - - if docams[icam] eq 'r2' then begin - m=1.00 - b=0.068 ;last 0.112 - yoffsetr2=yoffset*m + b - endif - - if keyword_set(test) then b=0. ;for determining above offsets - - - yoffset=yoffset*m + b - - igood=0 - - meanyoff = mean(yoffset[igood]) - meanydev = 0;stddev(yoffset[igood]) - minyoff = min(yoffset[igood]) - maxyoff = max(yoffset[igood]) - meanyoffstr = string(meanyoff, format='(f5.2)') - meanydevstr = string(meanydev, format='(f5.2)') - minyoffstr = string(minyoff, format='(f5.2)') - maxyoffstr = string(maxyoff, format='(f5.2)') - - endif - - ;---------- - ; Write info to the log file, and echo only some to the terminal - - - if not keyword_set(simple) then begin - splog, file=logfile - splog, 'FILE1 = ' + filename1 - splog, 'FILE2 = ' + filename2 - splog, 'MJD = ', mjdstr - splog, 'Camera = ', camname - splog, ' ' -splog, 'IMAGE OF WAVELENGTH-OFFSETS', /no_stdout -splog, '(in the correct orientation that 0,0 is lower left)', /no_stdout -splog, ' ', /no_stdout -splog, ' ', /no_stdout -;splog, 'Min offset = ' + minyoffstr + ' pix', /no_stdout -;splog, 'Max offset = ' + maxyoffstr + ' pix', /no_stdout -;splog, 'RMS across CCD = ' + meanydevstr + ' pix', /no_stdout -splog, ' ', /no_stdout -splog, camname , ' mean offset = ' + meanyoffstr + ' pix' -if keyword_set(test) then print,'test '+string(expnum1,format='(i8.8)')+ ' ' +camname+ $ - ' mean offset = '+ meanyoffstr +' pix' -splog, ' ' - endif - ;---------- - ; Output the predicted movements in order to collimate - - spectroid = strmid(camname,1,1) - - tolstr = strtrim(string(focustol, format='(f6.2)'),2) - if keyword_set(simple) then begin - diags = ['"Out of focus"', '"In focus"'] - print, string(camname, ' MeanOffset ', strtrim(meanyoff,2), ",", $ - diags[(abs(meanyoff) LT focustol)], $ - format='(a2,a,f5.2,a,a)') - endif else begin - if (abs(meanyoff) LT focustol) then begin - splog, 'Camera ' + camname $ - + ' appears to be IN-FOCUS (|' + strtrim(meanyoff,2) + '| < ' + tolstr + ' pix)' - endif else begin - splog, 'Camera ' + camname $ - + ' appears to be OUT-OF-FOCUS (|' + strtrim(meanyoff,2) + '| > ' + tolstr + ' pix)' - endelse - endelse - - -;ADD FUNNY FUDGE FACTORS - KD - if (camcolor EQ 'r') then begin - pixscale = -15. ; microns - if (camname EQ 'r1') then val = long( -9150. * meanyoff*1.12* pixscale/24. ) - if (camname EQ 'r2') then val = long( -9150. * meanyoff*1.12* pixscale/24. ); 1.21*1.09 is new motor factor from Wednesday 11-10, looks like 1.12 from 55513 - valr=val - if keyword_set(simple) then begin - print, string(camname, " PistonMove ", strtrim(val,2)) - endif else begin - splog, 'Predict ' + camname + ' piston movement of ' + strtrim(val,2) + ' steps.' - splog, 'Issue command: boss moveColl' $ - + ' piston=' + strtrim(val,2) $ - + ' spec=sp' + spectroid - - colla=sxpar(hdr1,"COLLA") - collb=sxpar(hdr1,"COLLB") - collc=sxpar(hdr1,"COLLC") - splog, 'current motorPosition ', colla, collb, collc - splog, 'new expected motorPosition', colla+val, collb+val, collc+val - endelse - endif else if (camcolor EQ 'b') then begin - pixscale = 15. ; microns - if (camname EQ 'b1') then val = -31.87 * meanyoff * pixscale/24.;-2.35; 2.35 is offset from collimate to combsmallcollimate - if (camname EQ 'b2') then val = -28.95 * meanyoff * pixscale/24.;+2.26 - if camname eq 'b1' then valb=-val*292;274;steps per degree - if camname eq 'b2' then valb=-val*292;310 - if keyword_set(simple) then begin - print, string(camname, " RingMove ", strtrim(val,2), $ - format='(a,a,f5.1)') - endif else begin - splog, 'Predict ' + camname + ' camera ring movement of ' $ - + string(val, format='(f6.1)') + ' degrees. (if red is already in focus)' - endelse - val=valb - endif - if cam_flag eq 1 then begin - bad_camera_exposure=1 - return - endif -endfor ;for camera loop - -bres=0 -rres=0 -;average move -if bad_camera_exposure eq 1 then ncam=1 ;don't count bad camera anymore -if ncam eq 2 then begin - val=(valr+valb)/2. - bres=-(valb-val)/292. - rres=valr-val -endif - -if abs(rres) gt 1700 then begin ;previously 1000; 1700 corresponds to ~.22 pix - if NOT keyword_set(simple) then begin - splog,' ' - splog,' !!!!!!!!!!!!!!!!!!!! ' - splog, 'RESIDUALS OUT-OF-FOCUS (|' + strtrim(rres,2) + '| > 1700 pix)' - splog,'' - splog,bres, ' residual for blue in degrees' - splog,rres, ' residual for red in steps' - endif -endif - -if abs(bres) lt badres then begin - resq='"OK"' -endif else begin - resq=string('"Bad angle !!!!!!! move blue ring ', bres*2, $ - ' degrees and then run gotoField noSlew"', $ - format='(a,f0.1,a)') -endelse - -if keyword_set(simple) then begin - print, string(spec, " Residuals ", strtrim(rres,2), ',', $ - strtrim(bres,2),',', resq, $ - format='(a,a,i0,a,f0.1,a,a)') - print, string(spec, " AverageMove ", strtrim(val,2), format='(a,a,i)') -endif else begin - val=ceil(val) - splog,' ' - splog,' To split the difference: boss moveColl piston='+ strtrim(val,2) $ - + ' spec=sp' + spectroid - splog,' ' - splog,' The blue camera has a residual move of ',bres,' degrees' - splog,' The red camera has a residual move of ',rres,' steps' -if abs(bres) gt badres then begin - splog,'Bad angle !!!!!!!!!!. Move blue ring ', bres*2, ' degrees and then run gotoField noSlew' -endif - - splog, /close -endelse -end - -;------------------------------------------------------------------------------ - - diff --git a/pro/apo2d/focushistory.pro b/pro/apo2d/focushistory.pro deleted file mode 100644 index fe5e10754..000000000 --- a/pro/apo2d/focushistory.pro +++ /dev/null @@ -1,246 +0,0 @@ -;+ -; NAME: -; focushistory -; -; PURPOSE: -; Plot the history of wavelength focus based upon the reduced spPlate files. -; -; CALLING SEQUENCE: -; focushistory, [ mjdrange= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjdrange - 2-element vector of plotting range in MJD; default to -; using all MJDs. -; -; OUTPUT: -; -; COMMENTS: -; A single PostScript file is created "Focushistory-$MJDSTART-$MJDEND.ps". -; The plate list must exist for the PLATELIST procedure, and the spPlate -; files should be in $BOSS_SPECTRO_REDUX. -; -; EXAMPLES: -; Make plots of history of wavelength focus for all time: -; IDL> focushistory -; -; Make plots of history of wavelength focus between MJD 52000 and MJD 52100: -; IDL> focusistory, mjdrange=[5200,52100] -; -; BUGS: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_icolor() -; fileandpath() -; mjd2datelist -; platelist -; readspec -; splog -; yanny_free -; yanny_par() -; yanny_read -; -; REVISION HISTORY: -; 21-Mar-2002 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro focushistory, mjdrange=mjdrange1 - - fthresh = 1.00 ; Threshhold for labeling out-of-focus plates - rescale = [0.88,1.00,0.98,1.00] - - ;---------- - ; Get the list of plates and trim to reduced plates - - platelist, plist=plist - if (NOT keyword_set(plist)) then begin - print, 'No reduced plates found' - return - endif - - idone = where(strtrim(plist.statuscombine,2) EQ 'Done') - if (idone[0] EQ -1) then begin - print, 'No reduced plates found' - return - endif - plist = plist[idone] - - ;---------- - ; Trim the list of plates to the specified MJD range - - if (keyword_set(mjdrange1)) then begin - if (n_elements(mjdrange1) NE 2) then begin - print, 'MJDRANGE must be 2-element vector, e.g. MJDRANGE=[52000,52100]' - return - endif - indx = where(plist.mjd GE mjdrange1[0] AND plist.mjd LE mjdrange1[1], nfile) - if (nfile EQ 0) then begin - print, 'No reduced plates within specified MJD range' - return - endif - print, 'Trimming to ', nfile, ' plates within specified MJD range' - plist = plist[indx] - mjdrange = mjdrange1 - endif else begin - mjdrange = [min(plist.mjd),max(plist.mjd)] - endelse - - ;---------- - ; Initialize the log file - - logfile = string(min(mjdrange), max(mjdrange), $ - format='("Focushistory-",i5.5,"-",i5.5,".log")') - splog, file=logfile - splog, 'PLATE MJD Foc-b1 Foc-r1 Foc-b2 Foc-r2 FocMax Temp ' - splog, '----- ----- ------ ------ ------ ------ ------ -----' - - ;---------- - ; Read through data for each plate - - plist = plist[sort(plist.mjd)] ; Sort by MJD - nfile = n_elements(plist) - wsigarr = fltarr(4,nfile) - wsigdev = fltarr(4,nfile) - wsigmin = fltarr(4,nfile) - wsigmax = fltarr(4,nfile) - wsigworst = fltarr(nfile) - - for ifile=0, nfile-1 do begin -; print, 'Reading file ', ifile+1, ' of ', nfile, ': ', $ -; plist[ifile].plate, '/', plist[ifile].mjd - readspec, plist[ifile].plate, mjd=plist[ifile].mjd, 1, wave=wave - readspec, plist[ifile].plate, mjd=plist[ifile].mjd, disp=dispimg - dims = size(dispimg,/dimens) - - indx1 = where(wave GT 4000 AND wave LT 5500) - indx2 = where(wave GT 6500 AND wave LT 9000) - - ; Mean dispersions for b1,r1,b2,r2 - i_b1 = where(dispimg[indx1,0:319] GT 0) - djs_iterstat, (dispimg[indx1,0:319])[i_b1], mean=mn_b1, sigma=sg_b1 - min_b1 = min((dispimg[indx1,0:319])[i_b1], max=max_b1) - - i_r1 = where(dispimg[indx2,0:319] GT 0) - djs_iterstat, (dispimg[indx2,0:319])[i_r1], mean=mn_r1, sigma=sg_r1 - min_r1 = min((dispimg[indx2,0:319])[i_r1], max=max_r1) - - i_b2 = where(dispimg[indx1,320:639] GT 0) - djs_iterstat, (dispimg[indx1,320:639])[i_b2], mean=mn_b2, sigma=sg_b2 - min_b2 = min((dispimg[indx1,320:639])[i_b2], max=max_b2) - - i_r2 = where(dispimg[indx2,320:639] GT 0) - djs_iterstat, (dispimg[indx2,320:639])[i_r2], mean=mn_r2, sigma=sg_r2 - min_r2 = min((dispimg[indx2,320:639])[i_r2], max=max_r2) - - wsigarr[*,ifile] = [mn_b1, mn_r1, mn_b2, mn_r2] * rescale - wsigdev[*,ifile] = [sg_b1, sg_r1, sg_b2, sg_r2] * rescale - wsigmin[*,ifile] = [min_b1, min_r1, min_b2, min_r2] * rescale - wsigmax[*,ifile] = [max_b1, max_r1, max_b2, max_r2] * rescale - - wsigworst[ifile] = max(wsigarr[*,ifile]) - - splog, plist[ifile].plate, plist[ifile].mjd, $ - wsigarr[*,ifile], wsigworst[ifile], plist[ifile].airtemp, $ - format='(i5,i7,5f7.2,f6.1)' - endfor - - splog, /close - - ;---------- - ; Initialize the plot file - - mjdplot = plist.tai / (24.D*3600.D) - - plotfile = string(min(mjdrange), max(mjdrange), $ - format='("Focushistory-",i5.5,"-",i5.5,".ps")') - dfpsplot, plotfile, /color - - xrange = minmax(plist.mjd) + [-30,30] - yrange = [0.60,1.40] - mjd2datelist, min(plist.mjd), max(plist.mjd), step='year', $ - mjdlist=mjdlist, datelist=datelist - nplot = n_elements(mjdlist) - 1 - - ; Set multi-plot format - !p.multi = [0,1,2] - - ;---------- - ; Make one plotting panel per calander year - - for iplot=0, nplot-1 do begin - - plot, [0], [0], /nodata, $ - xrange=mjdlist[[iplot,iplot+1]], /xstyle, yrange=yrange, /ystyle, $ - xtickformat='(i5)', $ - xtitle='MJD', ytitle='Worst Focus [pix]', $ - title='Focus History (Year=' + strmid(datelist[iplot],7)+')' - oplot, !x.crange, [0.85,0.85] - - mjd2datelist, mjdlist[iplot], mjdlist[iplot+1], step='month', $ - mjdlist=mjd1, datelist=date1 - for i=1, n_elements(mjd1)-2 do $ - oplot, [mjd1[i],mjd1[i]], !y.crange, linestyle=1 - for i=1, n_elements(mjd1)-2 do $ - xyouts, mjd1[i], 0.95*!y.crange[0] + 0.05*!y.crange[1], $ - strmid(date1[i],0,6), orient=90, align=0 - - indx = where(mjdplot GE mjdlist[iplot] AND mjdplot LE mjdlist[iplot+1]) - if (indx[0] NE -1) then begin - oplot, mjdplot[indx], wsigworst[indx], psym=4 - ibad = where(wsigworst[indx] GT fthresh) - if (ibad[0] NE -1) then $ - xyouts, mjdplot[indx[ibad]], wsigworst[indx[ibad]], $ - ' '+strtrim(string(plist[indx[ibad]].plate),2) - endif - endfor - - ;---------- - ; Make a final panel with the histogram of focus values per CCD - - binsz = 0.01 - camname = ['b1','r1','b2','r2'] - colorvec = ['blue','red','green','magenta'] - plothist, [wsigworst,wsigworst], /nodata, $ ; Double count to get big Y limit - bin=binsz, xrange=[0.7,1.5], /xstyle, $ - xtitle='Focus [pix]', ytitle='Number of Plates', $ - title='Distribution of Focus Values' - dy = 0.05 * (!y.crange[1] - !y.crange[0]) - yplot = !y.crange[1] - 2*dy - for iccd=0, 3 do begin - plothist, wsigarr[iccd,*], bin=binsz, /overplot, $ - xrange=!x.crange, yrange=!y.crange, xstyle=5, ystyle=4, $ - color=djs_icolor(colorvec[iccd]) - text = 'Camera='+camname[iccd] + ' (scaled by ' $ - + string(rescale[iccd], format='(f4.2)') + ')' - xyouts, 1.10, yplot, text, color=djs_icolor(colorvec[iccd]) - yplot = yplot - dy - endfor - - ;---------- - ; Plot worst focus vs. air temp - - indx = where(plist.airtemp GT -20 AND plist.airtemp NE 0) - if (indx[0] NE -1) then $ - plot, [plist[indx].airtemp], [wsigworst[indx]], /ynozero, psym=4, $ - xtitle='Air Temperature [deg C]', ytitle='Worst Focus', $ - title='Focus vs. Temperature' - - ;---------- - ; Close the plot file - - dfpsclose - !p.multi = 0 - - ;---------- - ; Create a save-set with these data - - ssfile = string(min(mjdrange), max(mjdrange), $ - format='("Focushistory-",i5.5,"-",i5.5,".ss")') - save, file=ssfile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/guidermonfile.pro b/pro/apo2d/guidermonfile.pro deleted file mode 100644 index 72247f1f3..000000000 --- a/pro/apo2d/guidermonfile.pro +++ /dev/null @@ -1,146 +0,0 @@ -;+ -; NAME: -; guidermonfile -; -; PURPOSE: -; Create guiderMon file using proc-gimg files. -; -; CALLING SEQUENCE: -; guidermonfile, [ mjd=, mjstart=, mjend=, /clobber ] -; -; INPUTS: -; mjd - MJD(s) -; mjstart - Starting MJD -; mjend - Ending MJD -; -; OPTIONAL INPUTS: -; clobber - If set, then over-write existing file, otherwise do not. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The GUIDE_DIR, SPECLOG_DIR environment variables must be set. -; Data is input from -; $GUIDE_DIR/$MJD/proc-gimg-????.fits -; Output file is -; $SPECLOG_DIR/$MJD/guiderMon-$MJD.par -; -; EXAMPLES: -; -; BUGS: -; -; REVISION HISTORY: -; 13-Jan-2010 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro guidermonfile_dummy, speclog_dir, mjdlist, outdat=outdat - ; Look in a previous MJD and get the guidermon file as a pattern - mjd = mjdlist - filefound = 0 - while filefound eq 0 do begin - mjd = strtrim(long(mjd)-1, 2) - infile = filepath('guiderMon-?????.par', root_dir=speclog_dir, subdir=mjd) - infile = findfile(infile, count=nfile) - if nfile ne 0 then filefound = 1 - endwhile - outdat = yanny_readone(infile, 'GUIDEOBJ') - outdat = outdat[0] - struct_assign, {junk: 0}, outdat - - return -end -;------------------------------------------------------------------------------ - - -pro guidermonfile, mjd=mjd, mjstart=mjstart, mjend=mjend, clobber=clobber - - speclog_dir = getenv('SPECLOG_DIR') - if (NOT keyword_set(speclog_dir)) then $ - message, 'Must set environment variable SPECLOG_DIR' - guide_dir = getenv('GUIDE_DIR') - if (NOT keyword_set(guide_dir)) then $ - message, 'Must set environment variable GUIDE_DIR' - - ;---------- - ; Create a list of the MJD directories (as strings) - - mjdlist = get_mjd_dir(speclog_dir, mjd=mjd, mjstart=mjstart, mjend=mjend) - nmjd = n_elements(mjdlist) - - if (nmjd GT 1) then begin - splog, 'Number of MJDs = ', nmjd - for i=0L, nmjd-1L do guidermonfile, mjd=mjdlist[i], clobber=clobber - return - endif - - outfile = filepath('guiderMon-'+mjdlist+'.par', root_dir=speclog_dir, $ - subdir=mjdlist) - if (keyword_set(clobber) EQ 0) then begin - oldfile = findfile(outfile, count=ct) - if (ct GT 0) then begin - splog, 'Skipping existing file '+outfile - return - endif - endif - - infile = filepath('proc-gimg-????.fits.gz', root_dir=guide_dir, $ - subdir=mjdlist) - infile = findfile(infile, count=nfile) - - for i=0L, nfile-1L do begin - hdr = headfits(infile[i]) - type = strtrim(sxpar(hdr, 'IMAGETYP')) - if (type NE 'dark' AND type NE 'flat') then begin - gdat1 = mrdfits(infile[i], 6, /silent) - nfib1 = n_elements(gdat1) - if (keyword_set(gdat1)) then begin - if (keyword_set(outdat) EQ 0) then begin - outdat1 = gdat1[0] - if (tag_exist(gdat1, 'timestamp') EQ 0) then $ - outdat1 = struct_addtags({timestamp: 0LL}, outdat1) - if (tag_exist(gdat1, 'fiberid') EQ 0) then $ - outdat1 = struct_addtags({fiberid: 0L}, outdat1) - struct_assign, {junk: 0}, outdat1 - outdat = replicate(outdat1, nfile*17) - endif - index_to=17*i+lindgen(nfib1) - copy_struct_inx, gdat1, outdat, index_to=index_to - if (tag_exist(gdat1, 'timestamp') EQ 0) then $ - outdat[index_to].timestamp = $ - long64(date_conv(sxpar(hdr,'DATE-OBS'), 'MODIFIED') * 24.D * 3600.D) - if (tag_exist(gdat1, 'fiberid') EQ 0) then $ - outdat[index_to].fiberid = 1 + indgen(nfib1) - endif - endif - endfor - - ; Trim to non-zero entries - if (keyword_set(outdat)) then begin - indx = where(outdat.timestamp GT 0, ct) - if ct GT 0 then outdat = outdat[indx] - if ct EQ 0 then return - endif - - if (~keyword_set(outdat)) then begin - guidermonfile_dummy, speclog_dir, mjdlist, outdat=outdat - endif - - outhdr = 'mjd '+mjdlist - - ; Create the output directory if it does not exist already - junk = fileandpath(outfile, path=outdir) - if (keyword_set(find_all_dir(outdir)) EQ 0) then begin - spawn, 'mkdir -p '+outdir - if (keyword_set(find_all_dir(outdir)) EQ 0) then $ - message, 'Unable to create output directory '+outdir - endif - - splog, 'Writing file '+outfile - yanny_write, outfile, ptr_new(outdat), hdr=outhdr, stnames='GUIDEOBJ', $ - /align - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/guidermovie.pro b/pro/apo2d/guidermovie.pro deleted file mode 100644 index 65f7845f7..000000000 --- a/pro/apo2d/guidermovie.pro +++ /dev/null @@ -1,343 +0,0 @@ -;+ -; NAME: -; guidermovie -; -; PURPOSE: -; Plot the guider images for an entire night using ATV. -; -; CALLING SEQUENCE: -; guidermovie, [ mjd=, plate=, expnum=, _EXTRA=KeywordsForATV ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd - MJD number; if not set, then select the most recent MJD -; in the $BOSS_SPECTRO_DATA directory. -; plate - Plate number; if specified, then select all exposures -; within the time frame for the science+smear exposures -; for this plate during the night in question. -; expnum - Exposure numbers (for the gimg*.fits guider images) -; as an array. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; Display the horrendous guider images for plate 889 on MJD=52346: -; IDL> guidermovie, mjd=52346, plate=889 -; -; BUGS: -; -; DATA FILES: -; $BOSS_SPECTRO_DATA/$MJD/guider/gimg*.fits.gz -; $BOSS_SPECTRO_DATA/$MJD/sdR-b1-????????.fit.gz -; -; PROCEDURES CALLED: -; atv -; atvxyouts -; djs_filepath() -; fileandpath() -; findopfile() -; get_tai -; jdcnv -; mrdfits() -; splog -; sdsshead() -; sxpar() -; -; REVISION HISTORY: -; 13-May-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro guidermovie, mjd=mjd, plate=plate, expnum=expnum, _EXTRA=KeywordsForATV - - common gmovie, com_mjd, com_gfiles, com_datestring, com_timearray, $ - com_plate, com_mjdplate, com_tai_first, com_tai_last - - quiet = !quiet - !quiet = 1 - if (NOT keyword_set(com_mjd)) then com_mjd = 0 - if (NOT keyword_set(com_plate)) then com_plate = 0 - if (NOT keyword_set(com_mjdplate)) then com_mjdplate = 0 - - ;---------- - ; If MJD is not specified, then find the most recent MJD for output files - - rawdata_dir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(rawdata_dir)) then $ - rawdata_dir = '/data/spectro' - - if (NOT keyword_set(mjd)) then begin - mjdlist = get_mjd_dir(rawdata_dir, mjstart=1, mjend=99999, mjd='?????') - mjd = (reverse(mjdlist[sort(mjdlist)]))[0] - splog, 'Selecting MJD=', mjd, ' (override this with MJD keyword)' - endif - mjdstr = string(mjd, format='(i5.5)') - - if (com_mjd EQ mjd) then begin - ;---------- - ; If the last call to this procedure was for the same MJD, then use - ; the results cached in these common variables. - - print, 'Using cached values for guider image header info' - mjd = com_mjd - gfiles = com_gfiles - datestring = com_datestring - timearray = com_timearray - nfile = n_elements(gfiles) - endif else begin - ;---------- - ; Get file list for guider images (g-zipped only) - - gfiles = findfile( djs_filepath('gimg*fits.gz', root_dir=rawdata_dir, $ - subdirectory=[string(mjd,format='(i5.5)'),'guider']), count=nfile ) - if (nfile EQ 0) then begin - splog, 'No files found - return - endif - - ;---------- - ; Read the headers for all the guider files - - print, 'Reading guider image headers...' - monthname = ['','Jan','Feb','Mar','Apr','May','Jun','Jul', $ - 'Aug','Sep','Oct','Nov','Dec'] - datestring = strarr(nfile) - timearray = dblarr(nfile) - for ifile=0, nfile-1 do begin - hdr = headfits(gfiles[ifile]) - - ; The old format for the date was, for ex, "Sun, Apr 1, 2001". - ; The new format for the date is, for ex, "2002/07/08". - utdate = sxpar(hdr,'UTDATE') - utdate = repstr(utdate, ',', ' ') ; Replace commas w/whitespace - ww = strsplit(utdate, ', ', /extract) - if (n_elements(ww) GE 3) then begin - year = long(ww[3]) - month = (where(ww[1] EQ monthname))[0] > 0 - date = long(ww[2]) - endif else begin - ww = strsplit(utdate, '/', /extract) - year = long(ww[0]) - month = long(ww[1]) - date = long(ww[2]) - endelse - - uttime = sxpar(hdr,'UTTIME') - ww = strsplit(uttime, ': ', /extract) - hr = long(ww[0]) - min = long(ww[1]) - sec = long(ww[2]) - - datestring[ifile] = string(year, month, date, hr, min, sec, $ - format='(i4.4,"-",i2.2,"-",i2.2," ",i2.2,":",i2.2,":",i2.2," Z")') - jdcnv, year, month, date, hr + min/60. + sec/3600., thisjd - timearray[ifile] = (thisjd - 2400000.5D) * (24.D*3600.D) - - print, format='("File ",i5," of ",i5,a1,$)', $ - ifile+1, nfile, string(13b) - endfor - - com_mjd = mjd - com_gfiles = gfiles - com_datestring = datestring - com_timearray = timearray - endelse - - ;---------- - ; Trim to only specified exposure numbers (and update NFILE variable) - - if (keyword_set(expnum)) then begin - qkeep = bytarr(nfile) - for ifile=0, nfile-1 do begin - thisexp = long( strmid(fileandpath(gfiles[ifile]),5,4) ) - if ((where(expnum EQ thisexp))[0] NE -1) then qkeep[ifile] = 1b - endfor - ikeep = where(qkeep, nfile) - if (nfile EQ 0) then begin - splog, 'No files matching EXPNUM' - return - endif - gfiles = gfiles[ikeep] - endif - - ;---------- - ; Sort these files by date+time - - isort = sort(datestring) - gfiles = gfiles[isort] - datestring = datestring[isort] - timearray = timearray[isort] - - ;---------- - ; If PLATE is specified, then read the headers of all the sdR files, - ; determine which times span the science+smear exposures, and trim - ; the guider images to that list. - - if (keyword_set(plate)) then begin - - if (plate EQ com_plate AND mjd EQ com_mjdplate) then begin - ;---------- - ; If the last call to this procedure was for the same PLATE and MJD, - ; then use the results cached in these common variables. - - print, 'Using cached values for sdR header info' - tai_first = com_tai_first - tai_last = com_tai_last - endif else begin - ;---------- - ; Set input directory for sdR files - - rawdata_dir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(rawdata_dir)) then $ - rawdata_dir = '/data/spectro' - - ;---------- - ; Find sdR files for b1 camera only for this MJD (g-zipped only!) - - sdrname = findfile(filepath('sdR-b1-????????.fit.gz', $ - root_dir=rawdata_dir, subdir=mjdstr), count=nsdr) - - if (nsdr EQ 0) then begin - print, 'No sdR files found for MJD=' + mjdstr - return - endif - - tai_first = 0 - tai_last = 0 - print, 'Reading sdR image headers...' - for isdr=0, nsdr-1 do begin - qdone = fits_wait(sdrname[isdr], deltat=1, tmax=1, /header_only) - if (qdone) then begin - thishdr = sdsshead(sdrname[isdr]) - thisplate = long(sxpar(thishdr,'PLATEID')) - thisflavor = strtrim(sxpar(thishdr,'FLAVOR'),2) - if (thisplate EQ plate AND (thisflavor EQ 'science' $ - OR thisflavor EQ 'smear')) then begin - get_tai, thishdr, tai_beg, tai_mid, tai_end - if (NOT keyword_set(tai_first)) then begin - tai_first = tai_beg - tai_last = tai_end - endif else begin - tai_first = tai_first < tai_beg - tai_last = tai_last > tai_end - endelse - endif - endif - print, format='("File ",i5," of ",i5,a1,$)', $ - isdr+1, nsdr, string(13b) - endfor - - com_plate = plate - com_mjdplate = mjd - com_tai_first = tai_first - com_tai_last = tai_last - endelse - - if (NOT keyword_set(tai_first)) then begin - print, 'No science/smear exposures for this plate', plate - return - endif - ikeep = where(timearray GE tai_first AND timearray LE tai_last, nfile) - if (nfile EQ 0) then begin - print, 'No guider images during timestamps for this plate', plate - return - endif - print, 'Trimming to ', nfile, ' guider frames for plate ', plate - gfiles = gfiles[ikeep] - datestring = datestring[ikeep] - timearray = timearray[ikeep] - end - - ;---------- - ; Read the dark image (select only from the 30-sec darks) - - darkdir = filepath('',root_dir=getenv('IDLSPEC2D_DIR'), subdir='etc') - darkfile = findopfile('dark-30-*.fits*', mjd[0], darkdir) - if (keyword_set(darkfile)) then $ - dark = mrdfits(filepath(darkfile, root_dir=darkdir), /fscale) - - titlestring = 'MJD ' + mjdstr - if (keyword_set(plate)) then $ - titlestring = 'Plate ' + plate_to_string(plate) + ' ' + titlestring - - ifile = 0 - cc = 'F' - lastfile = -1 - - while (strupcase(cc) NE 'Q') do begin - - if (cc EQ 'F') then begin - ifile = ifile + 1 - if (ifile GE nfile) then begin - ifile = nfile - 1 - cc = ' ' - endif - endif else if (cc EQ 'B') then begin - ifile = ifile - 1 - if (ifile LT 0) then begin - ifile = 0 - cc = ' ' - endif - endif else begin - print, 'Press b=back one frame' - print, ' f=forward one frame' - print, ' B=loop backward' - print, ' F=loop forward' - print, ' s=select frame index' - print, ' q=quit (and enter interactive mode for this plot)' - print, ' =stop' - case cc of - 'b': ifile = (ifile - 1) > 0 - 'f': ifile = (ifile + 1) < (nfile - 1) - 's': begin - read, ifile, prompt='Enter frame index number: ' - ifile = (ifile > 0) < (nfile - 1) - cc = ' ' - end - else: - endcase - cc = ' ' ; Clear this command (since it's not a looping command) - endelse - - ; Only display this image if it is different from the last image displayed - if (ifile NE lastfile) then begin - img = mrdfits(gfiles[ifile], 0, hdr, /silent) + 32768. - exptime = sxpar(hdr, 'EXPTIME') - - splog, ifile+1, nfile, fileandpath(gfiles[ifile]), utstring, $ - format='("File ",i4," of ",i4,": ",a,2x,a)' - - ; Dark-subtract, scaling the dark current from the 30-sec dark - qsamesize = total(size(img,/dimens) EQ size(dark,/dimens)) EQ 2 - if (keyword_set(exptime)*qsamesize) then $ - img -= (exptime/30.) * dark - - atv, img, _EXTRA=KeywordsForATV - atvxyouts, 0, (size(img,/dimens))[1], titlestring, $ - color='red', charsize=4 - atvxyouts, 0, 0, datestring[ifile], $ - color='red', charsize=4 - - lastfile = ifile - endif else begin - wait, 0.5 ; Don't sit around burning CPU cycles. - endelse - - ;---------- - ; If we're looping, then just read whatever is in the keyboard buffer, - ; otherwise sit and wait for a keystroke. - - if (cc EQ 'F' OR cc EQ 'B') then begin - c1 = get_kbrd(0) - if (keyword_set(c1)) then cc = c1 - endif else begin - cc = get_kbrd(1) ; Sit and wait for keystroke - endelse - - endwhile -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/guidermpeg.pro b/pro/apo2d/guidermpeg.pro deleted file mode 100644 index 8d88f6276..000000000 --- a/pro/apo2d/guidermpeg.pro +++ /dev/null @@ -1,133 +0,0 @@ -;+ -; NAME: -; guidermpeg -; -; PURPOSE: -; Create an MPEG guider movie. -; Plot the guider images for an entire night. -; -; CALLING SEQUENCE: -; guidermovie, [ mjd=, expnum=, _EXTRA=KeywordsForATV ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd - MJD number; if not set, then select the most recent MJD -; in the $BOSS_SPECTRO_DATA directory. -; expnum - Exposure numbers as an array -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; Make a movie of the horrible guider images while the slit-head -; became unlatched while observing plate 889 on MJD 52346: -; IDL> guidermpeg, mjd=52346, expnum=805+lindgen(25) -; -; BUGS: -; -; DATA FILES: -; $BOSS_SPECTRO_DATA/$MJD/guider/gimg*.fits.gz -; -; PROCEDURES CALLED: -; djs_filepath() -; fileandpath() -; findopfile() -; mrdfits() -; splog -; sxpar() -; -; REVISION HISTORY: -; 13-May-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro guidermpeg, mjd=mjd, expnum=expnum - - ;---------- - ; If MJD is not specified, then find the most recent MJD for output files - - rawdata_dir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(rawdata_dir)) then $ - rawdata_dir = '/data/spectro' - - if (NOT keyword_set(mjd)) then begin - mjdlist = get_mjd_dir(rawdata_dir, mjstart=1, mjend=99999, mjd='?????') - mjd = (reverse(mjdlist[sort(mjdlist)]))[0] - splog, 'Selecting MJD=', mjd, ' (override this with MJD keyword)' - endif - - ;---------- - ; Get file list for guider images (g-zipped only) - - gfiles = findfile( djs_filepath('gimg*fits.gz', root_dir=rawdata_dir, $ - subdirectory=[string(mjd,format='(i5.5)'),'guider']), count=nfile ) - if (nfile EQ 0) then begin - splog, 'No files found - return - endif - - ;---------- - ; Trim to only specified exposure numbers - - if (keyword_set(expnum)) then begin - qkeep = bytarr(nfile) - for ifile=0, nfile-1 do begin - thisexp = long( strmid(fileandpath(gfiles[ifile]),5,4) ) - if ((where(expnum EQ thisexp))[0] NE -1) then qkeep[ifile] = 1b - endfor - ikeep = where(qkeep, nfile) - if (nfile EQ 0) then begin - splog, 'No files matching EXPNUM' - return - endif - gfiles = gfiles[ikeep] - endif - - ;---------- - ; Read the dark image (select only from the 30-sec darks) - - darkdir = filepath('',root_dir=getenv('IDLSPEC2D_DIR'), subdir='etc') - darkfile = findopfile('dark-30-*.fits*', mjd[0], darkdir) - if (keyword_set(darkfile)) then $ - dark = mrdfits(filepath(darkfile, root_dir=darkdir), /fscale) - - ;---------- - ; Constuct the output byte array - - xsize = 320L - ysize = 240L - bytarr = bytarr(xsize,ysize,nfile) - npix = xsize * ysize - xoff = 40 - yoff = 16 - - ;---------- - ; Loop through all images - - for ifile=0, nfile-1 do begin - - img = mrdfits(gfiles[ifile], 0, hdr, /silent) + 32768 - exptime = sxpar(hdr, 'EXPTIME') - - ; Dark-subtract, scaling the dark current from the 30-sec dark - qsamesize = total(size(img,/dimens) EQ size(dark,/dimens)) EQ 2 - if (keyword_set(exptime)*qsamesize) then $ - img -= (exptime/30.) * dark - - ; Trim image to XSIZE,YSIZE - img = img[xoff:xoff+xsize-1,yoff:yoff+ysize-1] - - ; Rescale to a byte image - isort = sort(img) - min = img[isort[long(0.25*npix)]] ; 25-th percentile - max = img[isort[long(0.995*npix)]] ; 99.5-th percentile - bytarr[*,*,ifile] = bytscl(img, min=min, max=max) - endfor - - ppmtompeg, bytarr, 'junk.mpeg', tmpdir='./' - -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/plughistory.pro b/pro/apo2d/plughistory.pro deleted file mode 100644 index d454e74de..000000000 --- a/pro/apo2d/plughistory.pro +++ /dev/null @@ -1,147 +0,0 @@ -;+ -; NAME: -; plughistory -; -; PURPOSE: -; Plot the history of unplugged fibers based upon plPlugMapM files. -; -; CALLING SEQUENCE: -; plughistory, [ mjdrange= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjdrange - 2-element vector of plotting range in MJD; default to -; using all MJDs. -; -; OUTPUT: -; -; COMMENTS: -; A single PostScript file is created "Plughistory-$MJDSTART-$MJDEND.ps", -; with one page per cartridge. The top panel shows the number of fibers -; plugged as a function of MJD. The bottom panel shows the fraction -; of times each fiber is plugged, with < 95%-plugged fibers labelled -; with their fiber number. -; -; EXAMPLES: -; Make plots of history of unplugged fibers for all time: -; IDL> plughistory -; -; Make plots of history of unplugged fibers between MJD 52000 and MJD 52100: -; IDL> plughistory, mjdrange=[52000,52100] -; -; BUGS: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; fileandpath() -; yanhy_free -; yanny_par() -; yanny_read -; -; REVISION HISTORY: -; 27-Feb-2002 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro plughistory, mjdrange=mjdrange - - speclog = getenv('SPECLOG_DIR') - splog, 'Searching astrolog directory SPECLOG_DIR=' + speclog - - searchname = filepath('plPlugMapM-????-?????-??.par', $ - root_dir=speclog, subdir='?????') - plugfiles = file_search(searchname, count=nfile) - splog, 'Found ', nfile, ' plPlugMapM files' - if (nfile EQ 0) then begin - splog, 'No matches to ' + searchname - return - endif - - mjdvec = long( strmid(fileandpath(plugfiles),16,5) ) - if (keyword_set(mjdrange)) then begin - if (n_elements(mjdrange) NE 2) then begin - splog, 'MJDRANGE must be 2-element vector, e.g. MJDRANGE=[52000,52100]' - return - endif - indx = where(mjdvec GE mjdrange[0] AND mjdvec LE mjdrange[1], nfile) - if (nfile EQ 0) then begin - splog, 'No plPlugMapM files within specified MJD range' - return - endif - splog, 'Trimming to ', nfile, ' files within specified MJD range' - plugfiles = plugfiles[indx] - mjdvec = mjdvec[indx] - endif else begin - mjdrange = minmax(mjdvec) - endelse - - cartvec = lonarr(nfile) - platetype = strarr(nfile) -; mjdvec = lonarr(nfile) - plugarr = lonarr(nfile,1001) - - plotfile = string(min(mjdrange), max(mjdrange), $ - format='("Plughistory-",i5.5,"-",i5.5,".ps")') - dfpsplot, plotfile - - for ifile=0, nfile-1 do begin - splog, 'Reading file ', ifile+1, ' of ', nfile, ': ', $ - fileandpath(plugfiles[ifile]) - plugmap = yanny_readone(plugfiles[ifile], hdr=hdr, /anonymous) - thistype = yanny_par(hdr,'platetype') - if (keyword_set(thistype)) then platetype[ifile] = thistype - cartvec[ifile] = yanny_par(hdr,'cartridgeId') -; mjdvec[ifile] = yanny_par(hdr,'fscanMJD') - ; Continue only for BOSS or SDSS-I/II plates... - if (platetype[ifile] EQ 'BOSS' OR platetype[ifile] EQ '') then begin - indx = where(strtrim(plugmap.holetype,2) EQ 'OBJECT', ct) - if (ct GT 0) then begin - fiberid = plugmap[indx].fiberid - plugarr[ifile,fiberid] = plugarr[ifile,fiberid] + 1 - endif - endif - endfor - - !p.multi = [0,1,2] - xrange = minmax(mjdvec[where(mjdvec NE 0)]) + [-30,30] - - for cartid=1, 18 do begin - if (cartid LE 9) then nfiber = 640 $ - else nfiber = 1000 - yrange = [nfiber-20,nfiber+5] - ifile = where(cartvec EQ cartid, nmatch) - if (nmatch GT 0) then begin - splog, 'Generating plots for cartridge #', cartid - - plot, mjdvec[ifile], total(plugarr[ifile,1:nfiber], 2), $ - psym=2, symsize=0.5, $ - xrange=xrange, /xstyle, yrange=yrange, /ystyle, $ - xtickformat='(i5)', $ - xtitle='MJD', ytitle='Number plugged fibers', $ - title='Plugging History Cartridge #' + strtrim(string(cartid),2) - oplot, !x.crange, [nfiber,nfiber] - xyouts, !x.crange[0], nfiber+2, $ - ' Number of pluggings = ' + strtrim(string(nmatch),2) - - meannum = total(plugarr[ifile,1:nfiber], 1) / nmatch - plot, lindgen(nfiber)+1, meannum, psym=10, $ - xrange=[-20,nfiber+20], /xstyle, yrange=[-0.1,1.2], /ystyle, $ - xtitle='Fiber number', ytitle='Fraction times plugged' - ; Overplot wherever this fraction is less than 95% - ibad = where(meannum LT 0.95, nbad) - for ii=0, nbad-1 do $ - xyouts, ibad[ii]+1, 1.0, string(ibad[ii]+1, format='(i4)'), $ - orient=90, charsize=0.75 - for ii=0, nbad-1 do $ - splog, 'Cart ', cartid, ' fiber ', ibad[ii]+1, $ - ' fraction unplugged ', 1-meannum[ibad[ii]] - endif - endfor - - dfpsclose - !p.multi = 0 - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/plugmap_tycho.pro b/pro/apo2d/plugmap_tycho.pro deleted file mode 100644 index 03ff75979..000000000 --- a/pro/apo2d/plugmap_tycho.pro +++ /dev/null @@ -1,153 +0,0 @@ -;+ -; NAME: -; plugmap_tycho -; -; PURPOSE: -; Plot bright Tycho stars on a plate -; -; CALLING SEQUENCE: -; plugmap_tycho, plugfile, [ matchdist=, mlimit= ] -; -; INPUTS: -; plugfile - Name of plugmap file (either plPlugMapP or plPlugMapM) -; -; OPTIONAL INPUTS: -; matchdist - Match distance for Tycho stars; default to 5./3600 degrees -; mlimit - Magnitude limit for Tycho stars in VTMAG; default to 15.0 -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Plot bright Tycho stars on plates, for the purpose of having these -; fibers not be plugged at APO. In particular, this procedure was -; written to deal with the two SEGUE plates 2333 and 2338, as per -; discussion in the mailing lists on 31 Oct 2005. -; -; EXAMPLES: -; IDL> plugmap_tycho, 'plPlugMapP-2333.par', mlimit=10.5 -; IDL> plugmap_tycho, 'plPlugMapP-2338.par', mlimit=11.5 -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; djs_oplot -; djs_plot -; splog -; tycho_read() -; yanny_par() -; yanny_readone() -; -; INTERNAL SUPPORT ROUTINES: -; tycho_plot_unplugged -; -; REVISION HISTORY: -; 31-Oct-2005 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -; This internal routine is a modified version of PLOT_UNPLUGGED from -; EVILMAP in the idlmapper product. -pro tycho_plot_unplugged, plugdat, plotfile=plotfile, title=title, $ - ibright=ibright - - iobject = where(plugdat.holetype EQ 'OBJECT', nobject) - iguide = where(plugdat.holetype EQ 'GUIDE' $ - OR plugdat.holetype EQ 'COHERENT_SKY', nguide) - iquality = where(plugdat.holetype EQ 'QUALITY', nquality) - itrap = where(plugdat.holetype EQ 'LIGHT_TRAP', ntrap) - - pobj = plugdat[iobject] - - if (keyword_set(plotfile)) then $ - dfpsplot, plotfile, /square, /color - - plot, pobj.xfocal, pobj.yfocal, psym=1, symsize=0.5, $ - xrange=[-350,350], yrange=[-350,350], xstyle=1, ystyle=1, $ - title=title, xtitle='xFocal [mm]', ytitle='yFocal [mm]' - oplot, [-320], [320], psym=1, symsize=0.5 - xyouts, [-320], [320], ' Plugged fiber' - if (ibright[0] NE -1) then begin - djs_oplot, [plugdat[ibright].xfocal], [plugdat[ibright].yfocal], $ - psym=2, symsize=2, color='red' - nbright = n_elements(ibright) - endif else nbright = 0 - djs_oplot, [-320], [300], psym=2, symsize=2, color='red' - xyouts, [-320], [300], ' Bright Tycho stars (' + strtrim(nbright,2) + ')' - - if (nguide GT 0) then begin - usersym, cos(findgen(21)*!pi/10), sin(findgen(21)*!pi/10) ; open circ - djs_oplot, [plugdat[iguide].xfocal], [plugdat[iguide].yfocal], $ - psym=8, symsize=3 - xyouts, [plugdat[iguide].xfocal], [plugdat[iguide].yfocal-4], $ - strtrim(string(plugdat[iguide].fiberid),2), alignment=0.5, charsize=1 - endif - oplot, [-320], [280], psym=8, symsize=3 - xyouts, [-320], [280], ' GUIDE' - - if (ntrap GT 0) then begin - djs_oplot, [plugdat[itrap].xfocal], [plugdat[itrap].yfocal], $ - psym=6, symsize=1.5 - endif - oplot, [-320], [260], psym=6, symsize=1.5 - xyouts, [-320], [260], ' LIGHT TRAP' - - if (nquality GT 0) then begin - usersym, cos(findgen(21)*!pi/10), sin(findgen(21)*!pi/10), /fill ; circ - djs_oplot, [plugdat[iquality].xfocal], [plugdat[iquality].yfocal], $ - psym=8, symsize=1 - endif - oplot, [-320], [240], psym=8, symsize=1 - xyouts, [-320], [240], ' QUALITY' - - if (keyword_set(plotfile)) then dfpsclose - return -end -;------------------------------------------------------------------------------ -pro plugmap_tycho, plugfile, matchdist=matchdist1, mlimit=mlimit1 - - if (keyword_set(matchdist1)) then matchdist = matchdist1 $ - else matchdist = 5./3600 - if (keyword_set(mlimit1)) then mlimit = mlimit1 $ - else mlimit = 15. - - plugdat = yanny_readone(plugfile, hdr=hdr) - if (NOT keyword_set(plugdat)) then begin - splog, 'No plugmap file found ', plugfile - return - endif - iobj = where(strmatch(plugdat.holetype,'OBJECT')) - - racen = yanny_par(hdr, 'raCen') - deccen = yanny_par(hdr, 'decCen') - plotfile = 'tycho-' + repstr(fileandpath(plugfile), '.par', '.ps') - title = 'TYCHO STARS ON PLATE ' + strtrim(yanny_par(hdr, 'plateId'),2) $ - + ' V < ' + string(mlimit,format='(f5.2)') - - tyc = tycho_read(racen=racen, deccen=deccen, radius=1.6) - spherematch, plugdat[iobj].ra, plugdat[iobj].dec, tyc.ramdeg, tyc.demdeg, $ - matchdist, i1, i2, d12 - ibright = -1 - if (i2[0] NE -1) then begin - ii = where(tyc[i2].vtmag LE mlimit, ct) - if (ct GT 0) then begin - ibright = iobj[i1[ii]] - for i=0L, ct-1L do $ - splog, 'Bright' $ - + ' RA= ' + string(plugdat[ibright[i]].ra,format='(f8.4)') $ - + ' Dec= ' + string(plugdat[ibright[i]].dec,format='(f8.4)') $ - + ' X= ' + string(plugdat[ibright[i]].xfocal,format='(f5.0)') $ - + ' Y= ' + string(plugdat[ibright[i]].xfocal,format='(f5.0)') $ - + ' Vmag= ' + string(tyc[i2[ii[i]]].vtmag,format='(f4.1)') - endif - splog, 'Number of bright stars = ', ct - endif - - tycho_plot_unplugged, plugdat, plotfile=plotfile, title=title, $ - ibright=ibright - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/quickextract_elg.pro b/pro/apo2d/quickextract_elg.pro deleted file mode 100644 index 4d216229e..000000000 --- a/pro/apo2d/quickextract_elg.pro +++ /dev/null @@ -1,449 +0,0 @@ -;+ -; NAME: -; quickextract_elg -; -; PURPOSE: -; Science frame extraction with scattered light removal and sky subtraction. -; S/N is estimated and output for HTML generation. -; Added by vivek- Same as quickextract, but include -; modifications to the ELG program. Major modifications are : -; 1) Blue camera SN2 values are hardwired to be 4.0 for each exposure -; 2) Red camera meanSN2 values are computed in the sky free z-band wavelengths -; 3) A scale factor is added to match the ELG depth to a typical normal eBOSS plate depth -; -; CALLING SEQUENCE: -; rstruct = quickextract_elg(tsetfile, wsetfile, fflatfile, rawfile, outsci, $ -; [ radius=, filtsz=, /do_lock ]) -; -; INPUTS: -; tsetfile - Name of fits file which contains matched trace -; wsetfile - Name of fits file which contains matched wavelengths -; fflatfile - Name of fits file which containes flat field vectors -; rawfile - Name of SDSS science frame to extract -; outsci - Name of fits file to store workings of quickextract -; -; OPTIONAL INPUTS: -; radius - Radius for boxcar extraction (default 3) -; filtsz - Median filter size to apply before average S/N is calculated; -; default to 25 pixels. -; do_lock - Keyword for SDSSPROC -; -; OUTPUT: -; rstruct - Results to be added html file upon completion -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; apo_checklimits() -; calcscatimage -; divideflat -; djs_mean() -; djs_median() -; extract_image -; extract_boxcar() -; fibermask_bits() -; fileandpath() -; find_whopping() -; fitflatwidth() -; fitsn() -; match_trace() -; quickboxcar() -; mrdfits() -; mwrfits -; sdssproc -; skysubtract() -; splog -; sxpar() -; traceset2xy -; -; REVISION HISTORY: -; 3-Apr-2000 Written by S. Burles & D. Schlegel, APO -;- 6-Dec-2014 Included 'splitsky' by Vivek M. -; 8-Sep-2016 quickextract_elg Vivek M. -;------------------------------------------------------------------------------ -function quickextract_elg, tsetfile, wsetfile, fflatfile, rawfile, outsci, $ - radius=radius, filtsz=filtsz, splitsky=splitsky, do_lock=do_lock -print,'quickextract:',splitsky - if (n_params() LT 4) then begin - print, 'Syntax - rstruct = quickextract(tsetfile, wsetfile, fflatfile, $' - print, ' rawfile, outsci, radius=, filtsz= ])' - return, 0 - endif - - if (n_elements(tsetfile) NE 1) then return, 0 - if (n_elements(wsetfile) NE 1) then return, 0 - if (n_elements(rawfile) NE 1) then return, 0 - if (NOT keyword_set(radius)) then radius = 3.0 - if (NOT keyword_set(filtsz)) then filtsz = 25 - - ;---------- - ; Read in the raw science image - - sdssproc, rawfile, image, invvar, hdr=hdr, camname=camname, $ - nsatrow=nsatrow, fbadpix=fbadpix, do_lock=do_lock - colorband = strmid(camname,0,1) - spectroid = strmid(camname,1,1) - exptime = sxpar(hdr, 'EXPTIME') - expno = sxpar(hdr, 'EXPOSURE') - viv_plate = sxpar(hdr,'PLATEID') - - ;---------- - ; Decide if this science exposure is bad - - qbadsci = reject_science(image, hdr, nsatrow=nsatrow, fbadpix=fbadpix) - if (qbadsci) then begin - splog, 'ABORT: Unable to reduce science exposure' - return, 0 - endif - - ;---------- - ; Read in the reduced data from the flat and arc - - tset = mrdfits(tsetfile,2) - plugsort = mrdfits(tsetfile,3) - fibermask = mrdfits(tsetfile,4) - fflat = mrdfits(fflatfile,0) - fflatmask = mrdfits(fflatfile,1) - fibermask = fibermask OR fflatmask - wset = mrdfits(wsetfile,1) - traceset2xy, wset, ytemp, logwave - - ;--------------------------------------------------------------------------- - ; Extract and sky-subtract the science image - ;--------------------------------------------------------------------------- - - ;---------- - ; First let's try scattered light fit - - nrow = (size(image,/dimens))[1] - ncol = (size(image,/dimens))[0] - skiprow = 8 - yrow = lindgen(nrow/skiprow) * skiprow + skiprow/2 - - nfirst = n_elements(yrow) - wfixed = [1,1] ; Fit gaussian height + width (fixed center position) - - sigma = 1.0 - proftype = 1 ; Gaussian - npoly=8 - nterms=2 - - traceset2xy, tset, ytemp, xcen - - ;---------- - ; Calculate the shift of the traces between the flat and science exposures - - xnew = match_trace(image, invvar, xcen) - bestlag = median(xnew-xcen) - minlag = min(xnew-xcen) - maxlag = max(xnew-xcen) - splog, 'Match_trace range: ', minlag, bestlag, maxlag - if (abs(bestlag) GT 1.50) then $ - splog, 'WARNING: Large flexure flat<->science ' $ - + string(bestlag,format='(f5.2)') + ' pix (Post-calibs recommended!)' - - ;---------- - ; Do an optimal extraction for the purpose of measuring scattered - ; light terms, and for checking the spatial profile widths to see - ; that the spectrographs are indeed in focus. - - extract_image, image, invvar, xcen, sigma, tempflux, tempfluxivar, $ - proftype=proftype, wfixed=wfixed, yrow=yrow, highrej=5, lowrej=5, $ - npoly=npoly, ansimage=ansimage, relative=1 - - ntrace = (size(tempflux,/dimens))[1] - dims = size(image, /dimens) - scatfit = calcscatimage(ansimage[ntrace*nterms:*,*], yrow, $ - nscatbkpts=npoly, nx=dims[0], ny=dims[1]) - scatflux = extract_boxcar(scatfit, xcen, radius=radius) - - exptime_factor = (exptime/900.0) > 1.0 - if (colorband EQ 'b') then scatlimit = 20 *exptime_factor $ - else scatlimit = 30 * exptime_factor - - scatmed = fix(median(scatfit)) - scatmax = fix(max(scatfit)) - - if (scatmed GT scatlimit) then $ - splog, 'WARNING: Scattered light median = ', scatmed, ' electrons' $ - + ' (Warm CCD or twi?)' $ - else $ - splog, 'Scattered light median = ', scatmed, ' electrons' - if (scatmax GT 2*scatlimit) then $ - splog, 'WARNING: Scattered light max = ', scatmax, ' electrons' $ - + ' (Warm CCD or twi?)' $ - else $ - splog, 'Scattered light max = ', scatmax, ' electrons' - - ;---------- - ; Check the spatial profile widths, and trigger warning messages - ; if the spectrographs appear out of focus. - - widthset = fitflatwidth(tempflux, tempfluxivar, ansimage, fibermask, $ - ncoeff=5, sigma=sigma, medwidth=medwidth, /double, /quick) - - ; Use the limits as set for the flats, since we don't set limits - ; for the science exposure widths. Do not issue a warning message - ; for smear exposures (which have low S/N), but only science exposures. - if (apo_checklimits('flat', 'XSIGMA', camname, max(medwidth)) $ - EQ 'red' AND strtrim(sxpar(hdr,'FLAVOR'),2) NE 'smear') then $ - splog, 'WARNING: Median spatial widths = ' $ - + string(medwidth,format='(4f5.2)') + ' pix (Left Bottom Top Right)' - - ;---------- - ; Boxcar extract - no scattered light correction! - - flux = quickboxcar(image, invvar, tset=tset, fluxivar=fluxivar) - fluxsub = flux - scatflux - nfiber = (size(flux,/dimens))[1] - - ;---------- - ; Flat-field - - divideflat, fluxsub, invvar=fluxivar, fflat, /quiet - - ;---------- - ; Check for whopping fibers in SOS reductions, which is - ; especially useful for flagging affected sky fibers. - - scrunch = djs_median(flux * (fluxivar GT 0), 1) - whopping = find_whopping(scrunch, 10000.0, whopct) - if (whopct GT 0) then begin - ; Only print the fiber numbers for the first 5 whopping fibers - wstring = strcompress(string(whopping+1+(spectroid EQ '2')*320)) - splog, 'WARNING: Whopping fiber #' $ - + string(wstring[0:4<(whopct-1)],format='(5a)') $ - + ((whopct GT 5) ? $ - ' (+ ' + strtrim(string(whopct-5),2) + ' more)' : '') - wp = [whopping - 2 , whopping -1, whopping, whopping+1 , whopping+2] - wp = (wp > 0) < (nfiber - 1) - fibermask[wp] = fibermask[wp] OR pixelmask_bits('NEARWHOPPER') - endif - - iskies = where(strtrim(plugsort.objtype,2) EQ 'SKY' $ - AND (plugsort.fiberid GT 0) AND (fibermask EQ 0), nskies) - - if nskies GT 10 then begin - skylevel = djs_median(fluxsub[*,iskies], 1) - outlier = (sort(skylevel))[[0,1,nskies-2,nskies-1]] - fibermask[iskies[outlier]] = fibermask[iskies[outlier]] $ - OR fibermask_bits('BRIGHTSKY') - splog, 'Warning: Rejecting Bright Sky Fibers ', iskies[outlier] - endif - - ;---------- - ; If too many sky fibers then only choose the first+last per bundle. - ; Use 20 fibers per bundle, although it really doesn't matter - - iskies = where(strtrim(plugsort.objtype,2) EQ 'SKY' $ - AND (plugsort.fiberid GT 0) AND (fibermask EQ 0), nskies) - - nbundle = nfiber / 20 - if (nskies GT 50) then begin - for i=0, nbundle-1 do begin - iposs = where(fix(iskies/20) EQ i, nposs) - if (nposs GT 2) then begin - ; Trim all but the first + last sky fiber per bundle - itrim = iskies[iposs[1:nposs-2]] - splog, 'Trimming extra sky fibers ', itrim - fibermask[itrim] = fibermask[itrim] $ - OR fibermask_bits('BADSKYFIBER') - endif - endfor - ; Re-select the sky fibers - iskies = where(strtrim(plugsort.objtype,2) EQ 'SKY' $ - AND (plugsort.fiberid GT 0) AND (fibermask EQ 0), nskies) - endif - - ;---------- - ; Sky-subtract - - get_tai, hdr, tai_beg, tai_mid, tai_end - - ;skystruct = skysubtract(fluxsub, fluxivar, plugsort, wset, $ - ; objsub, objsubivar, iskies=iskies, fibermask=fibermask, tai=tai_mid, $ - ; sset=sset, npoly=3) - - ;---------- - ;---------- - ; Sky-subtract one final time, this time with dispset (PSF subtraction) - ; (rejected sky fibers from above remain rejected). - ; Modify pixelmask in this call. - - nskypoly = 3L - ;if ~keyword_set(skipsky) then begin - if keyword_set(splitsky) then begin -; Split sky subtraction between halves of the CCD if requested -; (bolton@utah 2011). - splog, 'Splitting sky model across spatial CCD halves.' -; Dial down the sptial polynomial order in this case: - nskypoly = 2L -; Determine where the traces cross the amp break: - nxfull = (size(image))[1] - nyfull = (size(image))[2] - yhw = nyfull / 2 - xhw = nxfull / 2 - isplit = max(where(reform(xnew[yhw,*]) le (xhw + 0.5))) - ;print,'split: ',isplit - help,isplit - help,flux - help,wset - wset0={FUNC:wset.FUNC,XMIN:wset.XMIN,XMAX:wset.XMAX,COEFF:wset.COEFF(*,0:isplit)} - wset1={FUNC:wset.FUNC,XMIN:wset.XMIN,XMAX:wset.XMAX,COEFF:wset.COEFF(*,isplit+1:*)} - ;print,'------------------------------------------------------------------' -; Sky subtract both halves: - skystruct0 = skysubtract(fluxsub[*,0:isplit], fluxivar[*,0:isplit], plugsort[0:isplit],wset0, $ - skysub0, skysubivar0, iskies=iskies0,fibermask=fibermask[0:isplit], tai=tai_mid, $ - sset=sset,npoly=nskypoly) - skystruct1 = skysubtract(fluxsub[*,isplit+1:*], fluxivar[*,isplit+1:*], plugsort[isplit+1:*],wset1, $ - skysub1, skysubivar1, iskies=iskies1,fibermask=fibermask[isplit+1:*], tai=tai_mid, $ - sset=sset,npoly=nskypoly) -; Reassemble outputs for use further below: - objsub = [[skysub0], [skysub1]] - objsubivar = [[skysubivar0], [skysubivar1]] - iskies = [iskies0, iskies1+isplit+1] -; These are needed for QA, although we'll only get the -; low-fiber-number picture in this case: - skystruct = skystruct0 - endif else begin - skystruct = skysubtract(fluxsub, fluxivar, plugsort,wset, $ - objsub, objsubivar, iskies=iskies,fibermask=fibermask, tai=tai_mid, $ - sset=sset,npoly=3L) - endelse - ;endif else begin - ; splog, 'Skipping sky subtraction' - ;endelse - - - ; Issue warnings about very large sky-subtraction chi^2 - -; if (keyword_set(skystruct)) then begin -; thiswave = logwave[*,0] -; rchi2 = bspline_valu(thiswave, relchi2set) -; ; Ignore wavelengths near 5577 Ang` -; i5577 = where(thiswave GT alog10(5577.-10.) $ -; AND thiswave LT alog10(5577.+10.)) -; if (i5577[0] NE -1) then rchi2[i5577] = 0 -; medval = median(rchi2) -; maxval = max(rchi2, imax) -; maxwave = 10.^thiswave[imax] -; if (medval GT 2.) then $ -; splog, 'Warning: Median sky-residual chi2 = ', medval -; if (maxval GT 60.) then $ -; splog, 'Warning: Max sky-residual chi2 = ', maxval, $ -; ' at' , maxwave, ' Ang (ignoring 5577)' -; endif - - ;----------------------------------------------------------------- - ; Analyze spectra for the sky level and signal-to-noise - ;----------------------------------------------------------------- - - ;---------- - ; Select wavelength range to analyze - - if (colorband EQ 'b') then begin - icolor = 1 - snfilter = 'g' - wrange = [4000,5500] ; coverage of g-band - endif else begin ; no i band for ELG plates. The SN2 measurements are done at z-band -vivek - icolor = 4 - snfilter = 'z' - wrange = [8050,8250, 8550,8750, 9000,9300 ]; coverage of z-band, wavelengths free of sky lines - vivek - endelse - - - ;---------- - ; Compute average (but median-filtered) flux and signal-to-noise - - meanflux = fltarr(nfiber) - meansn = fltarr(nfiber) - for ifib=0, nfiber-1 do begin - ; Select unmasked pixels in the wavelength range for this fiber - if (colorband EQ 'b') then begin - - iwave = where(logwave[*,ifib] GT alog10(wrange[0]) $ - AND logwave[*,ifib] LT alog10(wrange[1]) $ - AND objsubivar[*,ifib] GT 0, nwave) - endif else begin - iwave = where((logwave[*,ifib] GT alog10(wrange[0]) $ - AND logwave[*,ifib] LT alog10(wrange[1])) $ - OR (logwave[*,ifib] GT alog10(wrange[2]) $ - AND logwave[*,ifib] LT alog10(wrange[3])) $ - OR (logwave[*,ifib] GT alog10(wrange[4]) $ - AND logwave[*,ifib] LT alog10(wrange[5])) $ - AND objsubivar[*,ifib] GT 0, nwave) -endelse - if (nwave GT 0) then begin - meanfluxvec = djs_median( flux[iwave,ifib], width=filtsz slithistory -; -; Make plots of history of slit-head positions between MJD 52000 and MJD 52020: -; IDL> setenv, 'SPECLOG_DIR=/scr/spectro1/spectro/scan' -; IDL> slithistory, mjdrange=[52000,52020] -; -; BUGS: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; fileandpath() -; yanhy_free -; yanny_par() -; yanny_read -; -; REVISION HISTORY: -; 19-Nov-2002 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro slithistory, mjdrange=mjdrange - - astrolog = getenv('SPECLOG_DIR') - if (NOT keyword_set(astrolog)) then astrolog = '/astrolog' - splog, 'Searching astrolog directory SPECLOG_DIR=' + astrolog - - searchname = filepath('plSlitpos-????-?????-??.par', $ - root_dir=astrolog, subdir='?????') - slitfiles = findfile(searchname, count=nfile) - splog, 'Found ', nfile, ' plSlitpos files' - if (nfile EQ 0) then begin - splog, 'No matches to ' + searchname - return - endif - - ; Sort these by MJD - mjdvec = long( strmid(fileandpath(slitfiles),15,5) ) - isort = sort(mjdvec) - slitfiles = slitfiles[isort] - mjdvec = mjdvec[isort] - - if (keyword_set(mjdrange)) then begin - if (n_elements(mjdrange) NE 2) then begin - splog, 'MJDRANGE must be 2-element vector, e.g. MJDRANGE=[52000,52100]' - return - endif - indx = where(mjdvec GE mjdrange[0] AND mjdvec LE mjdrange[1], nfile) - if (nfile EQ 0) then begin - splog, 'No plSlitpos files within specified MJD range' - return - endif - splog, 'Trimming to ', nfile, ' files within specified MJD range' - slitfiles = slitfiles[indx] - endif - - cartvec = lonarr(nfile) - slitarr = fltarr(nfile,640) - - plotfile = string(min(mjdvec), max(mjdvec), $ - format='("Slithistory-",i5.5,"-",i5.5,".ps")') - dfpsplot, plotfile, /color - - for ifile=0, nfile-1 do begin - splog, 'Reading file ', ifile+1, ' of ', nfile, ': ', $ - fileandpath(slitfiles[ifile]) - yanny_read, slitfiles[ifile], pp, hdr=hdr, /anonymous - cartvec[ifile] = yanny_par(hdr,'cartridgeId') -; mjdvec[ifile] = yanny_par(hdr,'fscanMJD') - slitpos = *pp[0] - yanny_free, pp - slitarr[ifile,*] = slitpos.motorpos - endfor - - !p.multi = [0,1,2] - yrange = [140, 260] - psym = -4 - - for cartid=1, 9 do begin - ifile = where(cartvec EQ cartid, nmatch) - if (nmatch GT 0) then begin - for specid=1, 2 do begin - splog, 'Generating plots for cartridge #', cartid, $ - ' spectro-', specid - - ; Select the fiber numbers at which there is a fiber bundle space - fibernum = (lindgen(15)+1)*20 + (specid-1)*320 - nbund = n_elements(fibernum) - - bundspace = fltarr(nmatch,nbund) - bundmean = fltarr(nbund) - for ibund=0, nbund-1 do begin - pos1 = slitarr[ifile,fibernum[ibund]-1] - pos2 = slitarr[ifile,fibernum[ibund]] - bundspace[*,ibund] = (pos2 - pos1) * (pos1 NE 0) * (pos2 NE 0) - igood = where(bundspace[*,ibund] NE 0, ngood) - if (ngood GT 0) then bundmean = mean(bundspace[igood,ibund]) - endfor - - xrange = minmax(mjdvec[ifile]) + [-30, 30] - title='Slithead Gap History Cartridge #' $ - + string(cartid,format='(I1)') + ' Spectro-' $ - + string(specid,format='(I1)') - colorvec = ['default','red','green','blue','magenta','cyan'] - for ibund=0, nbund-1 do begin - thiscolor = colorvec[ibund MOD n_elements(colorvec)] - if (ibund EQ 0) then $ - djs_plot, [0,1], [0,1], /nodata, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtickformat='(i5)', charsize=1.2, $ - xtitle='MJD', ytitle='Gap size [motor steps]', title=title - ii = where(bundspace[*,ibund] NE 0) > 0 - djs_oplot, [mjdvec[ifile[ii]]], [bundspace[ii,ibund]], $ - psym=psym, color=thiscolor - ilast = ii[n_elements(ii)-1] - djs_xyouts, mjdvec[ifile[ilast]], bundspace[ilast,ibund], $ - ' '+strtrim(string(fibernum[ibund]),2), color=thiscolor - endfor - endfor - endif - endfor - - dfpsclose - !p.multi = 0 - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/smallcollimate.pro b/pro/apo2d/smallcollimate.pro deleted file mode 100644 index f201d8f48..000000000 --- a/pro/apo2d/smallcollimate.pro +++ /dev/null @@ -1,506 +0,0 @@ -;+ -; NAME: -; smallcollimate -; -; PURPOSE: -; Compute the spectrograph collimation focus from Hartmann mask exposures. -; -; CALLING SEQUENCE: -; smallcollimate, expnum1, [ expnum2, docams=, indir=, nregx=, nregy=, $ -; maxshift=, /nocheck, /debug, /simple ] -; -; INPUTS: -; expnum1 - First exposure number of raw sdR file. -; -; OPTIONAL KEYWORDS: -; expnum2 - Second exposure number; default to EXPNUM1+1. -; docams - Cameras to analyze; default to ['b1','b2','r1','r2']. -; indir - Input directory for files; default to searching for -; files in $BOSS_SPECTRO_DATA/*. If $BOSS_SPECTRO_DATA is not set, -; then it is assumed to be /data/spectro. -; nregx - Number of sub-regions in the X dimension; default to 8. -; nregy - Number of sub-regions in the Y dimension; default to 8. -; maxshift - Maximum pixel shift to search in both X and Y; default to 3. -; nocheck - If set, then assume that the 1st exposure is Hartmann-l, -; and the 2nd exposure is Hartmann-r, rather than looking at -; the OBSCOMM header keyword. This correct keywords are -; added by the SOP goSpecFocus command, but will not be if -; you simply move the collimator and shutters yourself. -; (Deprecated to never do this check, since BOSS has -; no header keywords.) -; debug - flag to remove hardwired subregions and fits and instead -; process all of the data in the array. Much slower than the -; nominal routine but informative for tests of focus variation -; across full illuminated area -; simple - generate simpler output, for the benefit of external programs. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The focus of the collimator is measured by comparing two Hartmann -; exposures of arc lamps, and looking for shifts in the arc line positions. -; A linear correlation coefficient is computed independently in NREGX -; by NREGY regions on each CCD as a function of pixel shifts of the 2nd -; image in both X and Y. The best-focus value is found in each region -; by maximizing the linear correlation in the Y (wavelength) direction. -; -; The following files are output for each camera: -; Collimate-$MJD-$CAMERA-$EXPNUM1.log -; Collimate-$MJD-$CAMERA-$EXPNUM1.ps -; -; The position of the Hartmann shutters is read from the OBSCOMM header -; keywords for SDSS-I. It is expected to be '{focus, hartmann l}' -; for one exposure and '{focus, hartmann r}' for the other (in either -; order). For BOSS, the HARTMANN keyword is read and must be either -; 'Left' or 'Right'. -; It is assumed that the collimator position is identical for both exposures. -; -; The sense of the pixel shifts reported is what one would have to shift -; the Hartmann-r exposure by in Y to agree with the Hartmann-l exposure. -; -; EXAMPLES: -; Solve for the focus of all 4 CCD's from exposures 10812+10813 -; on MJD 52161 (assuming the files exist in /data/spectro/52161): -; IDL> collimate, 10812 -; -; BUGS: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_filepath() -; djs_icolor() -; sdssproc -; splog -; sxpar() -; -; INTERNAL SUPPORT ROUTINES: -; collimate_obscomm() -; collimate_bad_hdr() -; -; REVISION HISTORY: -; 28-Mar-2002 Written by D. Schlegel, Princeton -; 01-Sep-2009 K. Dawson, Utah -;- -;------------------------------------------------------------------------------ -function collimate_obscomm, hdr - - obscomm = strtrim(sxpar(hdr, 'OBSCOMM'),2) - hartmann = strtrim(sxpar(hdr, 'HARTMANN'),2) - if (obscomm EQ '{focus, hartmann l}' OR hartmann EQ 'Left') then $ - retval = -1 $ - else if (obscomm EQ '{focus, hartmann r}' OR hartmann EQ 'Right') then $ - retval = 1 $ - else retval = 0 - - return, retval -end -;------------------------------------------------------------------------------ -; Return 1 if the header indicates there are no lamps on or no flat-field -; petals closed. If the wrong number, then just print a warning. -function collimate_bad_hdr, hdr - - qbad = 0 - - ffs = sxpar(hdr, 'FFS') - if (keyword_set(ffs)) then begin - ffs_sum = fix( total( fix( str_sep(ffs,' ') ) ) ) - if (ffs_sum LT 8) then $ - splog, 'WARNING: Only ' + strtrim(ffs_sum,2) + ' of 8 flat-field petals closed' - if (ffs_sum EQ 0) then qbad = 1 - endif else begin - splog, 'WARNING: FFS not in file header' - qbad = 1 - endelse - - lamp_ne = sxpar(hdr, 'NE') - lamp_hgcd = sxpar(hdr, 'HGCD') - if (keyword_set(lamp_ne) AND keyword_set(lamp_hgcd)) then begin - ne_sum = fix( total( fix( str_sep(lamp_ne,' ') ) ) ) - hgcd_sum = fix( total( fix( str_sep(lamp_hgcd,' ') ) ) ) - if (ne_sum LT 4) then $ - splog, 'WARNING: Only ' + strtrim(ne_sum,2) + ' of 4 Ne lamps turned on' - if (hgcd_sum LT 4) then $ - splog, 'WARNING: Only ' + strtrim(ne_sum,2) + ' of 4 HgCd lamps turned on' - if (ne_sum + hgcd_sum EQ 0) then qbad = 1 - endif else begin - splog, 'WARNING: NE or HGCD not in file header' - qbad = 1 - endelse - - return, qbad -end -;------------------------------------------------------------------------------ -pro smallcollimate, expnum1, expnum2=expnum2, docams=docams, indir=indir, $ - nregx=nregx, nregy=nregy, maxshift=maxshift, nocheck=nocheck,debug=debug, $ - simple=simple - - - if (n_params() LT 0) then begin - print, 'Syntax - collimate, expnum1, [ expnum2, docams=, indir=, $' - print, ' nregx=, nregy=, maxshift=, /nocheck, /debug, /simple ]' - return - endif - - ;---------- - ; Set defaults - - if (NOT keyword_set(expnum2)) then expnum2 = expnum1 + 1 - if (NOT keyword_set(docams)) then docams = ['b1','b2','r1','r2'] - if (NOT keyword_set(maxshift)) then maxshift = 2 - if (NOT keyword_set(nregx)) then nregx = 8 - if (NOT keyword_set(nregy)) then nregy = 8 - - ngrow = 2 ; Grow bad pixels by this number of pixels in every dimension - focustol = 0.20 ;if yoffset less than this, in focus - - ;---------- - ; If DOCAMS is an array, then call this routine recursively - - ncam = n_elements(docams) - if (ncam GT 1) then begin - for icam=0, ncam-1 do begin - smallcollimate, expnum1, expnum2=expnum2, docams=docams[icam], indir=indir, $ - nregx=nregx, nregy=nregy, maxshift=maxshift, nocheck=nocheck,debug=debug,simple=simple - endfor - return - endif - - ;---------- - ; Locate the input files (either compressed or un-compressed) - - if (NOT keyword_set(indir)) then begin - indir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(indir)) then $ - indir = '/data/spectro' - indir = indir + '/*' - endif - - filename1pat = djs_filepath('sdR-' + docams[0] + '-' + string(expnum1, format='(i8.8)') $ - + '.fit*', root_dir=indir) - filename2pat = djs_filepath('sdR-' + docams[0] + '-' + string(expnum2, format='(i8.8)') $ - + '.fit*', root_dir=indir) - - filename1 = (findfile(filename1pat, count=ct1))[0] - filename2 = (findfile(filename2pat, count=ct2))[0] - - if (ct1 EQ 0 OR ct2 EQ 0) then begin - print, 'All files not found: ' + filename1pat + ", " + filename2pat - return - endif - - ;---------- - ; Read the two images - - sdssproc, filename1, bigimg1, ivar1, hdr=hdr1, /silent - sdssproc, filename2, bigimg2, ivar2, hdr=hdr2, /silent - - if (collimate_bad_hdr(hdr1) OR collimate_bad_hdr(hdr2)) then begin - return - endif - - ;region to look at - yl=855 - yh=1300 - xl=1500 - xh=2500 - - im=bigimg1[xl:xh,yl:yh] - djs_iterstat,im,sigma=sigma,mean=meanim - var=sigma*sigma - maxim=max(im) - diff=maxim-meanim ;condition that there is light - ; Remember original image size for contour plots - dims_orig = size(bigimg1, /dimens) - nx_orig = dims_orig[0] - ny_orig = dims_orig[1] - camname = strtrim(sxpar(hdr1, 'CAMERAS'),2) - camcolor = strmid(camname,0,1) - -;first check that the camera is capturing light by requiring -;that a minimum flux falls in the first three apertures -;flux in first three apertures must be greater than 1000 counts and -;also must be monotonically increasing - - cam_flag=0 - - if (var lt 100 and diff lt 3000) then begin - if keyword_set(simple) then begin - print,"THERE DOES NOT APPEAR TO BE ANY LIGHT FROM THE ARCS IN ", camname, "!!!" - return - endif else begin - print,"" - print,"" - print,"" - print,"ERROR FOUND!!" - print,"" - print,"" - wait,5 - print,"THERE DOES NOT APPEAR TO BE ANY LIGHT FROM THE ARCS IN THIS CAMERA!!!" - print,"" - print,"" - print,"" - wait,5 - cam_flag=1 - endelse - endif - - dims = size(bigimg1, /dimens) - nx = dims[0] - ny = dims[1] - - - if (keyword_set(nocheck)) then begin - hartpos1 = -1 - hartpos2 = 1 - endif else begin - hartpos1 = collimate_obscomm(hdr1) - hartpos2 = collimate_obscomm(hdr2) - if (hartpos1 EQ 0 OR hartpos2 EQ 0) then begin - print, 'FITS header do not indicate these are Hartmann exposures' - return - endif - if (hartpos1 EQ hartpos2) then begin - print,' FITS header indicate both exposures had same Hartmann position' - return - endif - endelse - - mjd = sxpar(hdr1, 'MJD') - mjdstr = string(mjd,format='(i5.5)') - expnum1 = sxpar(hdr1, 'EXPOSURE') - expnum2 = sxpar(hdr2, 'EXPOSURE') - expstr = string(expnum1, expnum2, format='(i8.8,"-",i8.8)') - - plotfile = 'Collimate-' + mjdstr + '-' + camname $ - + string(expnum1, format='("-",i8.8)') + '.ps' - logfile = 'Collimate-' + mjdstr + '-' + camname $ - + string(expnum1, format='("-",i8.8)') + '.log' - title = 'Collimation for MJD=' + mjdstr + ' Camera=' + camname $ - + ' Exp=' + expstr - - ;---------- - ; Make a mask of pixels that are good in both images, and grow - ; any bad pixels by NGROW in each dimension. - ; Also mask any pixels within MAXSHIFT from the edge of the CCD. - - width = ngrow*2 + 1 - gmask = (ivar1 NE 0) AND (ivar2 NE 0) - gmask = smooth(gmask*width^2, width, /edge_truncate) EQ width^2 - gmask[0:maxshift,*] = 0 - gmask[nx-1-maxshift:nx-1,*] = 0 - gmask[*,0:maxshift] = 0 - gmask[*,ny-1-maxshift:ny-1] = 0 - - bigimg1 = bigimg1 * gmask - bigimg2 = bigimg2 * gmask - - ;---------- - ; Loop over each possible sub-image - - moffset = fltarr(nregx,nregy) - yoffset = fltarr(nregx,nregy) - xcenter = fltarr(nregx,nregy) - ycenter = fltarr(nregx,nregy) - - ix1=xl - ix2=xh - iy1=yl - iy2=yh - - submask = gmask[ix1:ix2,iy1:iy2] - submask[0:maxshift,*] = 0 - submask[*,0:maxshift] = 0 - submask[ix2-ix1-maxshift:ix2-ix1,*] = 0 - submask[*,iy2-iy1-maxshift:iy2-iy1] = 0 - subimg1 = bigimg1[ix1:ix2,iy1:iy2] - subimg2 = bigimg2[ix1:ix2,iy1:iy2] - xcenter=0.5*(ix1+ix2) - ycenter=0.5*(iy1+iy2) - - - ;---------- - ; Compute the linear correlation coefficients -;maxshift=3 - dy = 0.05 - nshift = ceil(2*maxshift/dy) - yshift = -maxshift + dy * lindgen(nshift) -; - ans = fltarr(nshift) - for j=0, nshift-1 do $ - ans[j] = total( subimg1 * sshift2d(subimg2,[0,yshift[j]]) * submask ) - junk = max(ans, ibest) - yoffset = yshift[ibest] -; ; Good solution iff >75% pixels are good in the subregion - moffset = mean(submask) ;GT 0.75 - - - - - ;---------- - ; We have assumed that the sequence is Hartmann-l, then Hartmann-r. - ; If in the other order, then reverse the results - - if (hartpos1 GT hartpos2) then begin - yoffset = -yoffset - endif - -; Determine region for optimal focus for R and B on BOSS spectrograph -; for BOSS, choose region of red CCD that lies in the ~6000-8500 /AA range to avoid bias from the far red absorption depth -; deep_red=2000 -; red_x=[min(xcenter),max(xcenter)] -; red_y=[min(ycenter),ny/2-1] -; for BOSS, choose region of blue CCD near center of image, excluding extremes of saddle that sit near edges -; blue_x=[700,2700] ;[1996,2196];[700,2700] -; blue_y=[400,2000] ;[1232,1285];[400,2000] ;how it was - - -; if (nx_orig LT 4000) then igood = where(moffset) -; if (nx_orig GE 4000 AND camcolor eq 'r') then igood = where(moffset AND ycenter gt red_y[0] AND ycenter lt red_y[1] AND xcenter gt red_x[0] AND xcenter lt red_x[1]) -; if (nx_orig GE 4000 AND camcolor eq 'b') then igood = where(moffset AND ycenter ge blue_y[0] AND ycenter le blue_y[1] AND xcenter ge blue_x[0] AND xcenter le blue_x[1]) - -;only assign offsets if camera is capturing light - if cam_flag eq 1 then begin - igood=-1 - meanyoffstr = 'N/A' - meanydevstr = 'N/A' - minyoffstr = 'N/A' - maxyoffstr = 'N/A' - yoffset[*,*]=0.0 - meanyoff = 0.0 - meanydev = 0.0 - minyoff = 0.0 - maxyoff = 0.0 - endif - - if cam_flag eq 0 then begin -;offsets for regions picked - - if docams eq 'b1' then begin - m=1.01252 - b=.173888 - endif - - if docams eq 'b2' then begin - m=1.04467 - b=-0.100018 - endif - - if docams eq 'r1' then begin - m=1.00308 - b=0.0833203 - endif - - if docams eq 'r2' then begin - m=0.999042 - b=0.0178034 - endif - -;m=1 ;for testing uncomment these -;b=0 - - yoffset=yoffset*m + b - - igood=0 - - meanyoff = mean(yoffset[igood]) - meanydev = 0;stddev(yoffset[igood]) - minyoff = min(yoffset[igood]) - maxyoff = max(yoffset[igood]) - meanyoffstr = string(meanyoff, format='(f5.2)') - meanydevstr = string(meanydev, format='(f5.2)') - minyoffstr = string(minyoff, format='(f5.2)') - maxyoffstr = string(maxyoff, format='(f5.2)') - - endif - - ;---------- - ; Write info to the log file, and echo only some to the terminal - - if not keyword_set(simple) then begin - splog, file=logfile - splog, 'FILE1 = ' + filename1 - splog, 'FILE2 = ' + filename2 - splog, 'MJD = ', mjdstr - splog, camname , ' mean offset = ' + meanyoffstr + ' pix' - end - -;splog, 'Camera = ', camname - ;splog, ' ' -;splog, 'IMAGE OF WAVELENGTH-OFFSETS', /no_stdout -;splog, '(in the correct orientation that 0,0 is lower left)', /no_stdout -;splog, ' ', /no_stdout - ; for iregy=nregy-1, 0, -1 do begin - ; format = '(' + string(nregx) + 'f6.2)' - ; splog, yoffset[*,iregy], format=format, /no_stdout - ;endfor -;splog, ' ', /no_stdout -;splog, 'Min offset = ' + minyoffstr + ' pix', /no_stdout -;splog, 'Max offset = ' + maxyoffstr + ' pix', /no_stdout -;splog, 'RMS across CCD = ' + meanydevstr + ' pix', /no_stdout -;splog, ' ', /no_stdout - -;splog, ' ' - - ;---------- - ; Output the predicted movements in order to collimate - - spectroid = strmid(camname,1,1) - - tolstr = strtrim(string(focustol, format='(f6.2)'),2) - if keyword_set(simple) then begin - diags = ['"Out of focus"', '"In focus"'] - print, string(camname, ' MeanOffset ', strtrim(meanyoff,2), ",", $ - diags[(abs(meanyoff) LT focustol)], $ - format='(a2,a,f5.2,a,a)') - endif else begin - if (abs(meanyoff) LT focustol) then begin - splog, 'Camera ' + camname $ - + ' appears to be IN-FOCUS (|' + strtrim(meanyoff,2) + '| < ' + tolstr + ' pix)' - endif else begin - splog, 'Camera ' + camname $ - + ' appears to be OUT-OF-FOCUS (|' + strtrim(meanyoff,2) + '| > ' + tolstr + ' pix)' - endelse - endelse - - -;ADD FUNNY FUDGE FACTORS - KD - if (camcolor EQ 'r') then begin - pixscale = -15. ; microns - if (camname EQ 'r1') then val = long( -9150. * meanyoff*1.07 * pixscale/24. ) - if (camname EQ 'r2') then val = long( -9150. * meanyoff*1.21 * pixscale/24. ) - - if keyword_set(simple) then begin - print, string(camname, " PistonMove ", strtrim(val,2)) - endif else begin - splog, 'Predict ' + camname + ' piston movement of ' + strtrim(val,2) + ' steps.' - splog, 'Issue command: boss moveColl ' $ - + 'piston=' + strtrim(val,2) $ - + 'spec=sp' + spectroid - - colla=sxpar(hdr1,"COLLA") - collb=sxpar(hdr1,"COLLB") - collc=sxpar(hdr1,"COLLC") - splog, 'current motorPosition ', colla, collb, collc - splog, 'new expected motorPosition', colla+val, collb+val, collc+val - endelse - endif else if (camcolor EQ 'b') then begin - pixscale = 15. ; microns - val = -35.69 * meanyoff * pixscale/24. - - if keyword_set(simple) then begin - print, string(camname, " RingMove ", strtrim(val,2), $ - format='(a,a,f5.1)') - endif else begin - splog, 'Predict ' + camname + ' camera ring movement of ' $ - + string(val, format='(f6.1)') + ' degrees. (if red is already in focus)' - endelse - endif - - if not keyword_set(simple) then begin - splog, /close - end -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/sos_logs_concat.pro b/pro/apo2d/sos_logs_concat.pro deleted file mode 100644 index 64fac1dbb..000000000 --- a/pro/apo2d/sos_logs_concat.pro +++ /dev/null @@ -1,111 +0,0 @@ -;+ -; NAME: -; sos_logs_concat -; -; PURPOSE: -; Concatenate all the SOS log files into a single file -; -; CALLING SEQUENCE: -; sos_logs_concat, [ mjd=, outfile= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd - Search for all files in $SPECTROLOGS_DIR/MJD; -; default to '5????' -; outfile - Output file name; default to 'logfile-all.fits' -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; All the SOS output files in $SPECTROLOG_DIR/$MJD/logfile-$MJD.fits -; are concatenated together into a single file. The HDUs are: -; HDU #1: bias and dark frames -; HDU #2: flats -; HDU #3: arcs -; HDU #4: science frames -; The exact format of each data structure is the same as the first one read. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 18-Feb-2013 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro sos_logs_concat, mjd=mjd1, outfile=outfile1 - - spectrolog_dir = getenv('SPECTROLOG_DIR') - - if (keyword_set(mjd1)) then mjdstr = strtrim(mjd1,2) $ - else mjdstr = '5????' - if (keyword_set(outfile1)) then outfile = outfile1 $ - else outfile = 'logfile-all.fits' - - mjdlist = '' - for i=0, n_elements(mjdstr)-1 do begin - spawn, '\ls -d '+spectrolog_dir + '/' + mjdstr[i], mjdlist1 - if (keyword_set(mjdlist1)) then $ - mjdlist = keyword_set(mjdlist) ? [mjdlist,mjdlist1] : mjdlist1 - endfor - if (NOT keyword_set(mjdlist)) then begin - print, 'No files found' - return - endif - nmjd = n_elements(mjdlist) - nhdu = 4 - - ; Find if a logfile exists in each MJD, and count the number - ; of entries in each HDU - filelist = 0 - thislist1 = create_struct('FILENAME', '', 'NUM', lonarr(nhdu)) - for i=0L, nmjd-1L do begin - mjdstr = string(fileandpath(mjdlist[i]),format='(i5.5)') - thisname = filepath('logfile-'+mjdstr+'.fits', $ - root_dir=mjdlist[i]) - thisname = findfile(thisname, count=ct) - if (ct GT 0) then begin - thislist1.filename = thisname - for j=0, nhdu-1 do $ - thislist1.num[j] = sxpar(headfits(thisname,exten=j+1), 'NAXIS2') - if (NOT keyword_set(filelist)) then filelist = thislist1 $ - else filelist = [filelist, thislist1] - endif - endfor - - ; Read all data and copy into one data structure per HDU - nfile = n_elements(filelist) - count = lonarr(nhdu) - outdat = ptrarr(nhdu) - for i=0L, nfile-1L do begin - print, 'Reading file ', i, ' of ', nfile, ': ' + filelist[i].filename - for j=0, nhdu-1 do begin - if (filelist[i].num[j] GT 0) then begin - dat1 = mrdfits(filelist[i].filename,j+1) - if (NOT keyword_set(outdat[j])) then begin - blankdat = dat1[0] - struct_assign, {junk:0}, blankdat - outdat[j] = ptr_new( replicate(blankdat,total(filelist.num[j])) ) - endif -; (*outdat[j])[count[j]+lindgen(filelist[i].num[j])] = dat1 - copy_struct_inx, dat1, *outdat[j], $ - index_to=count[j]+lindgen(filelist[i].num[j]) - count[j] += filelist[i].num[j] - endif - endfor - endfor - - ; Write output file - print, 'Writing file '+outfile - mwrfits, 0, outfile, /create - for j=0, nhdu-1 do $ - mwrfits, *outdat[j], outfile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/apo2d/sos_logs_plotsky.pro b/pro/apo2d/sos_logs_plotsky.pro deleted file mode 100644 index 873f2408e..000000000 --- a/pro/apo2d/sos_logs_plotsky.pro +++ /dev/null @@ -1,75 +0,0 @@ -pro sos_logs_plotsky - - scidat = mrdfits('logfile-all.fits', 4) - jd = 2400000.5D + scidat.tai / (24.D*3600.D) - - moonpos, jd, moon_ra, moon_dec - sunpos, jd, sun_ra, sun_dec - - eq2hor, moon_ra, moon_dec, jd, moon_alt, moon_az, obsname='apo' - eq2hor, sun_ra, sun_dec, jd, sun_alt, sun_az, obsname='apo' - - ; Compute the moon phase -- remap from the fraction of moon illuminated - mphase, jd, moonfrac - jd_tmp = 2450280.2d0 + 14.76*dindgen(1000)/1000. - moonphase_tmp = dindgen(1000)/1000. ; spanning 0-1 for half a lunar cycle - mphase, jd_tmp, moonfrac_tmp - linterp, moonfrac_tmp, moonphase_tmp, moonfrac, moonphase - - moondist = djs_diff_angle(scidat.radeg, scidat.decdeg, moon_ra, moon_dec) - - dfpsplot, 'boss-sky-b2.eps', /square, /color - qq = scidat.exptime GT 100 $ - AND scidat.mjd GE 55000+365 $ - AND scidat.camera EQ 'b2' $ - AND sun_alt LT -18 - ii = where(qq) - csize = 1.6 - djs_plot, moon_alt[ii], scidat[ii].skypersec, psym=1, symsize=0.25, $ - xtitle='Moon altitude [deg]', ytitle='Sky continuum [counts/sec/pix]', $ - title='BOSS Sky Brightness (g-band) continuum', charsize=csize, $ - xrange=[-90,90], yrange=[0.01,1], /ylog - i1 = where(qq AND moon_alt GT 2 AND moonphase GT 0.25 AND moonphase LT 0.35) - i2 = where(qq AND moon_alt GT 2 AND moonphase GT 0.50 AND moonphase LT 0.60) - djs_oplot, moon_alt[i1], scidat[i1].skypersec, $ - psym=1, color='red', symsize=0.5, /ylog - djs_oplot, moon_alt[i2], scidat[i2].skypersec, $ - psym=1, color='blue', symsize=0.5, /ylog - djs_oplot, [0,30], 0.055*[1,2], color='green', /ylog, thick=3 - xyouts, -80, 0.50, 'BLUE: Moon phase = 0.50-0.60', charsize=csize - xyouts, -80, 0.35, 'RED: Moon phase = 0.25-0.35', charsize=csize - dfpsclose - - dfpsplot, 'boss-sky-r2.eps', /square, /color - qq = scidat.exptime GT 100 $ - AND scidat.mjd GE 55000+365 $ - AND scidat.camera EQ 'r2' $ - AND sun_alt LT -18 - ii = where(qq) - csize = 1.6 - djs_plot, moon_alt[ii], scidat[ii].skypersec, psym=1, symsize=0.25, $ - xtitle='Moon altitude [deg]', ytitle='Sky continuum [counts/sec/pix]', $ - title='BOSS Sky Brightness (i-band) continuum', charsize=csize, $ - xrange=[-90,90], yrange=[0.05,5], /ylog - i1 = where(qq AND moon_alt GT 2 AND moonphase GT 0.25 AND moonphase LT 0.35) - i2 = where(qq AND moon_alt GT 2 AND moonphase GT 0.50 AND moonphase LT 0.60) - djs_oplot, moon_alt[i1], scidat[i1].skypersec, $ - psym=1, color='red', symsize=0.5, /ylog - djs_oplot, moon_alt[i2], scidat[i2].skypersec, $ - psym=1, color='blue', symsize=0.5, /ylog - djs_oplot, [0,45], 0.17*[1,2], color='green', /ylog, thick=3 - xyouts, -80, 2.0, 'BLUE: Moon phase = 0.50-0.60', charsize=csize - xyouts, -80, 1.4, 'RED: Moon phase = 0.25-0.35', charsize=csize - dfpsclose - - dfpsplot, 'boss-moon-dist.eps', /square, /color - djs_plot, moon_alt[ii], moonphase[ii], psym=1, symsize=0.25, $ - xtitle='Moon alt', ytitle='Moon phase', $ - title='BOSS lunar phases', charsize=csize, $ - xrange=[-90,90], yrange=[0,1] - djs_oplot, moon_alt[i1], moonphase[i1], psym=1, color='red', symsize=0.5 - djs_oplot, moon_alt[i2], moonphase[i2], psym=1, color='blue', symsize=0.5 - dfpsclose - - return -end diff --git a/pro/config/notes.txt b/pro/config/notes.txt deleted file mode 100644 index ae706e51e..000000000 --- a/pro/config/notes.txt +++ /dev/null @@ -1,180 +0,0 @@ -Lauren found a number of changes that had to be made in the -spectroscopic processing code in order to process her simulated sdss3 -data. The changes are due to differences in the detector format, -number of fibers, the traces that land on the detectors, and the -availability of the full suite of configuration information that -wasn't produced for the simulation. In the latter case, it is the -data and not the code that has to be expanded upon. - -The objective is to produce code that works with existing sdss2 data -and simulated and real sdss3 data. In principle the new software -should produce the same output as the head of the branch for sdss2 -data. However, the new code may contain improvements that should be -applied to sdss2 data. We need a well-formulated test suite on both -old and new data. - -The decision was made not to come up with an elegent design but rather -do a hack that will work for the short term. Once the pipeline is -running and we have time (if ever), we will revisit whether -improvements on the existing code or a new line of development is -appropriate. - -To consolidate the changes and ensure flexibility on the code -behavior, I put almost all of the configuration behavior into a single -object. The object is put in a new subdirectory -config/configuration__define.pro. The existing code already contains -a number of hacks that control the processing of data based on the -MJD. Keeping with that tradition, the object is defined by an -internal MJD variable. This can be expanded upon as the need arises. - -I find that I can create/destroy this object in several places: - -sdssproc.pro - l616 the object is needed only to decide whether the -rawdata goes through a processing that depends on bad pixel maps etc. - -spcalib.pro - l172 and l291 for the flats and arcs respectively - -extract_object.pro - l110 - -spreduce.pro - l117 sortplugmap.pro has a keyword for nfibers, Use configuration. - -All other code do not interact directly with the configuration object. -Instead I add new keywords for the variables that can change. - - -spcalib.pro - -l.175 - reject_flat: use calibration object for percent80thresh -l.177 - use calibration object for temporary fibermask size -l.187 - trace320crude: Add xerr=xerr. xerr is an output so shouldn't harm backwards -compatibility. Add keyword for padding. Add keywords that get passed into -trace320cen, bundlebreakrange, nextpeakrange, bundlegap, num fibers per side -l.191 - xy2traceset Add xerr, use calibration object for inputs of double, -inmask, ncoeff -l.198 - use calibration object for rejection threshold -l.232 - extract_image: use calibration object for intial guess of sigma -l.237 - extract_image: use calibration object for profile type -l.241 - fitflatwidth: use calibration object for ncoeff, mask, numbundles,inmask,double -l.244 - use calibration object for proftype -l.366,387 - fitarcimage: use calibration object for acoeff, dcoeff, trimrange, logwrange, number of bundles -l.385 - use calibration object for arccoeff -l.393 - use calibration object for nfitcoeff -l.395 - fitdispersion: use calibration object for intial guess of -sigma, number of bundles, xmax -l.519 - doscatter: use calibration object for scatter image -l.511 - create configuration object -l.558 - fiberflat: use calibration object for badflatfracthresh, minval - -sdssproc.pro -l.465 comment out warning message based on the dimension of the fits image -l616 the object is needed only to decide whether the -rawdata goes through a processing that depends on bad pixel maps etc. -l887 make_badcolumn_mask use the calculated values of nr, nc - -docsatter.pro -add keywords to set maxkernr and addrows and use old values if -keywords are not set. - -fiberflat.pro -add keyword that controls the threshold fo acceptable flat -badflatfractrhesh - -fitdispersion.pro -l320 comment out message for check of 320 traces -make keywords for number bundles -replaced 16's and 15 with the variable numbundles, numbundles-1 - -fitflatwidth.pro -l.66 comment out message for check of 320 traces -make the mask a keyword so that it can be set -make keywords for number bundles -replaced 16's and 15 with the variable numbundles, numbundles-1 -add keywords to call in xy2traceset, inmask and double - -reject_flat.pro -add keyword percent80thresh that controls the number of pixels that -can fall below 80% flux - -trace320crude.pro -add keyword padding -add keywords to call of trace320cen -add keyword for number of fibers per side - -trace320cen -add keyword bundlebreakrange -add keyword nextpeakrange -add keyword bundlegap -add keyword for number of fibers per side - -fitarcimage -add keywords acoeff and dcoeff to arcfit_guess call -add keywords to fitarcimage itself -add keyword for trim range -add keyword for number of bundles, get rid of hardwired 16 -add arcivar to call of trace_crude. This should be fine because trace_crude -doesn't change this variable. -add keyword for logwrange -l.337 turn off fiber=320 test - -extract_object.pro -l.188,189 do or don't do the kludge removing first and last column -l.229, 252 calcscatimage: add fullrows keyword, ymax keyword -l.442-447, logic to do 3rd order polynomial sky fit -l.239 getscatter: use calibration object to get scatter map -l.411 skysubtract: use calibration object to use alternativeSupersky - -qaplot_skysub.pro -My impression is that Lauren's code is improved and works with old data. -So I would keep her new version as is. - -skysubtract.pro -l.195 and max keyword -l.244 put in Lauren's change, should work fine with old and new data -l.260 put in Lauren's change which is called if the keyword alternativeSupersky is set. Otherwise the original code is used. -l.297 put in Lauren's change to skyvarfit. I suspect that this should work fine on -the old code. - - - -spcombine_v5 -l.227-230 create the configuration object -spflux_v5 add keywords npix and nfibersperspectrograph -l246 spfluxcorr_v5, add keyword for nfibersperspectrograph - -spcoadd_v5 -According to Lauren this is very temporary -{ -l.395 create the configuration object. Use the zeroth header -l.443 destroy the configuration object -do the logic -l.414 the if/then switch -} -not temporary -l.461 keyword for flux_distortion - -spflux_v5 -l173 get rid of places with 0. This should be old data as well so no switch -l566 add keyword for npix and nfibersperspectrograph -l581, 610, 653, 690, 714, 730, 824, 874 nfibersperspectrograph set -l758 get rid of places with 0. This should be old data as well so no switch -l692,822 add keyword for minimum fraction threshold - -spfluxcorr_v5 -l323 add keyword for nfibersperspectrograph - -flux_distortion -l135,294,307352,448, 449,478, 479,489 add keyword for nfibersperspectrograph -l96, 101, 102 flux_distort_corrvec add keyword for nfibersperspectrograph -l125 flux_distort_fn add nfibersperspectrograph to common block com_flux_distort - -By my estimation, there are a number of programs that don't have to do with the pipeline itself that are in the directories. These seem one-offish. - -spec2d/focalplane.pro -spec2d/write_uros.pro -spec2d/spgain -spec2d/spflatgen -spec2d/spflatten2 -spec2d/readsmear -spec2d/plotsignal -spec2d/doscatfit -spec2d/fitansimage diff --git a/pro/fluxfix/atmdisp_cor.pro b/pro/fluxfix/atmdisp_cor.pro deleted file mode 100644 index 115bdbf2e..000000000 --- a/pro/fluxfix/atmdisp_cor.pro +++ /dev/null @@ -1,392 +0,0 @@ -;+ -; NAME: -; atmdisp_cor -; -; PURPOSE: -; Atmospheric dispersion causes wavelength dependent lightloss from -; fiber spectra. The mean atmospheric dispersion experienced by the -; standard stars on each plate is automatically corrected for as part of -; the flux calibration. However, any shift in the centering of the -; spectroscopic targets in the fibers across the plate will result in -; differences in atmospheric dispersion as a function of plate position. -; These centering errors -- caused by small errors in the plate scale or -; rotation -- can produce flux calibration errors of up to 20%. This -; procedure is designed to correct for these. -; -; Synthetic magnitudes are computed from the spectra on 1 half-plate and -; compared to the photo fiber magnitudes. The residuals are fit as a -; function of plate x/y position with a 3rd order polynomial. The (g-r) -; offsets of this fit are then mapped into an atmospheric dispersion -; correction. This mapping makes use of models of the atmospheric dispersion -; of point sources observed with 2" seeing through 3" fibers at a variety -; of airmasses. The absolute light loss is mapped using the r-band mag -; residuals. A vector of wavelength dependent corrections is returned. -; -; CALLING SEQUENCE: -; -; atm_model = atmdisp_cor(loglam, flux, plugtag, hdr, title = title, $ -; surfgr_sig = surfgr_sig) -; -; INPUTS: -; loglam - wavelength array of input spectra in log10(Angstroms) [npix] -; flux - flux array from 1 half plate [npix, nfiber] (nfiber~320) -; plugtag - plugmap [nfiber] -- used for mags, plate x/y, sky & standard ID -; hdr - image header -- used for aquiring airmass info (maybe also -; seeing and guiding in the future) -; -; OUTPUT: -; A model of the atmospheric dispersion correction for each fiber is -; returned [npix, nfiber]. (To correct: flux_cor = flux / atm_model) -; Plots are generated showing the (g-r) and r mag offsets as a function -; of plate x/y before and after the correction. Histograms are produced -; as well. -; -; KEYWORDS: -; title - title of output plots (usually plate/mjd/specid) -; surfgr_sig - sigma of 2d fit to the (g-r) offsets -- this is a good -; indicator of how big the correction is. -; -; COMMENTS: -; This function requires an external source of info about the effects -; of atmospheric dispersion as a function of wavelength. This info is -; stored in structures in IDLSPEC2D_DIR/etc/. They are named -; 'atmdisp_vec_am' + airmass + 'see2.0.fit' where airmass is a value from -; 1.1 - 1.5. -; -; BUGS: -; Galaxies and stars respond differently to atmospheric dispersion beause -; of thier different spatial extent. The mean correction which is -; derived here is really that appropriate for the average galaxy -- -; so corrections for point sources are likely to be underestimated a bit. -; To do this right the spatial profile of each object should be taken into -; account. -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; djs_icolor() -; djs_iterstat() -; djs_oplot -; djs_sfit_iter() -; filter_thru() -; gaussfit() -; legend -; linterp -; mrdfits -; plothist -; traceset2xy -; -; INTERNAL SUPPORT ROUTINES: -; sphoto_xy -; -; REVISION HISTORY: -; Created 12-Aug-2003 by C. Tremonti, Steward Observatory -;- -;----------------------------------------------------------------------------- - -;----------------------------------------------------------------------------- -; Subroutine: sphoto_xy -;----------------------------------------------------------------------------- - -; Make plot of spectrophtometry vs plate x or y - -pro sphoto_xy, platepos, sphotoff, xx = xx, yy=yy, ytag = ytag, $ - first = first, ok = ok, std = std, rej = rej - - if keyword_set(xx) then xtitle = 'Plate X-position' - if keyword_set(yy) then xtitle = 'Plate Y-position' - if keyword_set(first) then ymargin = [2,5] else ymargin = [4,2] - - plot, platepos, sphotoff, psym=3, xtitle = xtitle, $ - ytitle = ytag + ' [Spectro - Photo]', $ - charsize = 1.5, ymargin = ymargin, xr=[-350,350], $ - /xs, yr = [-0.2, 0.4], /nodata - - if keyword_set(ok) then $ - djs_oplot, platepos[ok], sphotoff[ok], psym=6, symsize=0.2, color='blue' - - if keyword_set(std) then $ - djs_oplot, platepos[std], sphotoff[std], psym=6, symsize=0.3, color='red', $ - thick=4 - - if keyword_set(rej) then $ - djs_oplot, platepos[rej], sphotoff[rej], psym=2, symsize=0.4, color='green' - - oplot, [-500, 500], [0, 0], thick=3 - -end - -;----------------------------------------------------------------------------- - -;----------------------------------------------------------------------------- -; Main pro: atmdisp_cor -;----------------------------------------------------------------------------- - -function atmdisp_cor, loglam, flux, plugtag, hdr, title = title, $ - surfgr_sig = surfgr_sig - - npix = n_elements(flux[*,0]) - nfib = n_elements(flux[0,*]) - std = where(strmatch(plugtag.objtype, '*R*STD*') eq 1) - wave = 10.0^rebin(loglam, npix, nfib) - - ;----------------------------------------------------------------------------- - ; Read atmospheric dispersion vecotor matched in airmass - ; Ignore seeing since not all objects are point sources (seeing mostly - ; changes the amplitude of the correction not the shape, so this is ok) - ;----------------------------------------------------------------------------- - - airmass = sxpar(hdr, 'AIRMASS') - airmass_fid = ['1.1', '1.2', '1.3', '1.4', '1.5'] - junk = min(abs(airmass - airmass_fid), aindx) - - atmdisp_file = filepath('atmdisp_vec_am' + airmass_fid[aindx] + $ - 'see2.0.fit', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='etc') - - dispset = mrdfits(atmdisp_file, 1) - ndisp = n_elements(dispset.coeff[0,*]) - traceset2xy, dispset, wave[*,0:ndisp-1], dispvec - mag = -2.5 * alog10(filter_thru(dispvec, wave = wave[*,0], /toair)) - groffsynth = mag[*,1] - mag[*,2] - - ;--------------------------------------------------------------------------- - ; Compute (g-r) offsets of spectro and photo - ;--------------------------------------------------------------------------- - - flam2fnu = (wave*wave / 2.99792e18) - filt_flux = filter_thru(flux * flam2fnu, wave = wave[*,0], /toair) - mag = filt_flux * 0.0 - nonneg = where(filt_flux gt 0) - mag[nonneg] = -2.5 * alog10(filt_flux[nonneg]) - 48.6 + 2.5*17.0 - smag = transpose(mag[*,[1,2,3]]) - pmag = plugtag.mag[[1,2,3]] - - groff = (smag[0,*] - smag[1,*]) - (pmag[0,*] - pmag[1,*]) - rioff = (smag[1,*] - smag[2,*]) - (pmag[1,*] - pmag[2,*]) - xpos = plugtag.xfocal - ypos = plugtag.yfocal - - ;----------------------------------------------------------------------------- - ; Fit 2d surface to (g-r) offsets - ;----------------------------------------------------------------------------- - - ok = where(abs(groff - 0.03) lt 0.5 and pmag[1,*] gt 0 and smag[1,*] gt 0 $ - and strmatch(plugtag.objtype, '*SKY*') ne 1, nok) - - ; Do iterative fit - mask = groff * 0 - mask[ok] = 1 - acoeff = djs_sfit_iter(groff, xpos, ypos, 3, 3, yfit=zfit, mask=mask, $ - maxrej = 25, maxdev=0.4, lower=2.5, upper=3.0, freeiter=10, $ - maxiter=19, outmask = outmask) - - djs_iterstat, zfit[ok], sigrej=5, sigma=surfgr_sig - - ;----------------------------------------------------------------------------- - ; Plot (g-r) offsets as a function of x & y before and after - ;----------------------------------------------------------------------------- - - !P.MULTI = [0, 2, 3] - rej = where(outmask ne 1) - - ; Before x plot - sphoto_xy, xpos, groff, /xx, ytag = '(g-r)', /first, ok = ok, std = std - xyouts, 0, 0.32, 'Original', align=0.5, charsize = 1.5, $ - color = djs_icolor('red'), charthick=3 - xyouts, 0.5, 0.97, title, /norm, align=0.5, charsize = 1.5 - legend, ['Standard', 'Rejected'], color=djs_icolor(['red', 'green']), $ - psym=[6, 2], symsize = [0.5, 0.5], charsize = 0.7, thick=3 - - ; After x plot - sphoto_xy, xpos, groff - zfit, /xx, ytag = '(g-r)', /first, ok = ok, $ - std = std, rej = rej - xyouts, 0, 0.32, 'Corrected', align=0.5, charsize = 1.5, $ - color = djs_icolor('red'), charthick=3 - - ; Before y plot - sphoto_xy, ypos, groff, /yy, ytag = '(g-r)', ok=ok, std = std - - ; After y plot - sphoto_xy, ypos, groff - zfit, /yy, ytag = '(g-r)', ok=ok, std = std, rej=rej - - ;----------------------------------------------------------------------------- - ; Translate (g-r) offsets into correction vectors - ;----------------------------------------------------------------------------- - - zfit = zfit - median(zfit[std]) - model = flux * 0.0 - ncoeff = n_elements(dispset.coeff[*,0]) - - ; Interpolate values of legendre coefficients - for ii = 0, nfib - 1 do begin - dispseti = {func: 'legendre', xmin: 3500.0, xmax: 9400.0, $ - coeff: fltarr(ncoeff)} - - for jj=0, ncoeff - 1 do begin - linterp, groffsynth, reform(dispset.coeff[jj,*],ndisp), zfit[ii], coeffi - dispseti.coeff[jj] = coeffi - endfor - traceset2xy, dispseti, wave[*,ii], modeli - model[*,ii] = modeli - endfor - - ;----------------------------------------------------------------------------- - ; Plot (g-r) histogram before/after correction - ;----------------------------------------------------------------------------- - - ymax = 50 - ok = where(abs(rioff) lt 1 and abs(groff) lt 1 and $ - pmag[1,*] gt 0 and smag[1,*] gt 0) - - plothist, rioff[ok], bin=0.01, xr=[-0.4, 0.4], yr = [0, ymax], charsize=1.5, $ - xtitle = 'color [Spectro - Photo]', ytitle = 'Number of Spectra' - plothist, rioff[ok], rixhist, riyhist, bin=0.01, color=djs_icolor('red'), $ - /over, thick=4 - plothist, groff[ok], grxhist, gryhist, bin=0.01, color=djs_icolor('green'), $ - /over, thick=4 - oplot, [0, 0], [0, 1e4], thick=4 - grfit = gaussfit(grxhist, gryhist, nterms=3, grcoef) - rifit = gaussfit(rixhist, riyhist, nterms=3, ricoef) - xyouts, 0.10, ymax*0.90, '(g-r) offset = ' + $ - string(grcoef[1], format='(F6.3)'), charsize = 0.6 - xyouts, 0.10, ymax*0.80, '(g-r) sigma = ' + $ - string(grcoef[2], format='(F6.3)'), charsize = 0.6 - xyouts, 0.10, ymax*0.70, '(r-i) offset = ' + $ - string(ricoef[1], format='(F6.3)'), charsize = 0.6 - xyouts, 0.10, ymax*0.60, '(r-i) sigma = ' + $ - string(ricoef[2], format='(F6.3)'), charsize = 0.6 - - legend, ['(g-r)', '(r-i)'], color=djs_icolor(['green', 'red']), $ - psym=[0,0], thick=4, charsize = 0.6 - - ;---------------- - ; correct the flux - - cflux = flux / model - flam2fnu = (wave*wave / 2.99792e18) - filt_flux = filter_thru(cflux * flam2fnu, wave = wave[*,0], /toair) - mag = filt_flux * 0.0 - nonneg = where(filt_flux gt 0) - mag[nonneg] = -2.5 * alog10(filt_flux[nonneg]) - 48.6 + 2.5*17.0 - nsmag = transpose(mag[*,[1,2,3]]) - - ngroff = (nsmag[0,*] - nsmag[1,*]) - (pmag[0,*] - pmag[1,*]) - nrioff = (nsmag[1,*] - nsmag[2,*]) - (pmag[1,*] - pmag[2,*]) - nroff = nsmag[1,*] - pmag[1,*] - ok = where(abs(nrioff) lt 1 and abs(ngroff) lt 1 and $ - pmag[1,*] gt 0.0 and nsmag[1,*] gt 0.0) - - plothist, nrioff[ok], bin=0.01, xr=[-0.4, 0.4], yr = [0, ymax], $ - charsize=1.5, xtitle = 'color [Spectro - Photo]', $ - ytitle = 'Number of Spectra' - plothist, nrioff[ok], rixhist, riyhist, bin=0.01, $ - color=djs_icolor('red'), /over, thick=4 - plothist, ngroff[ok], grxhist, gryhist, bin=0.01, $ - color=djs_icolor('green'), /over, thick=4 - oplot, [0, 0], [0, 1e4], thick=4 - - grfit = gaussfit(grxhist, gryhist, nterms=3, grcoef) - rifit = gaussfit(rixhist, riyhist, nterms=3, ricoef) - xyouts, 0.10, ymax*0.90, '(g-r) offset = ' + $ - string(grcoef[1], format='(F6.3)'), charsize = 0.6 - xyouts, 0.10, ymax*0.80, '(g-r) sigma = ' + $ - string(grcoef[2], format='(F6.3)'), charsize = 0.6 - xyouts, 0.10, ymax*0.70, '(r-i) offset = ' + $ - string(ricoef[1], format='(F6.3)'), charsize = 0.6 - xyouts, 0.10, ymax*0.60, '(r-i) sigma = ' + $ - string(ricoef[2], format='(F6.3)'), charsize = 0.6 - -;----------------------------------------------------------------------------- -; Now correct the total fluxes using the r-band mags -;----------------------------------------------------------------------------- - - ;-------------------- - ; Do iterative 2d fit - - ok = where(abs(nroff) lt 1 and pmag[1,*] gt 0 and nsmag[1,*] gt 0 $ - and strmatch(plugtag.objtype, '*SKY*') ne 1, nok) - mask = nroff * 0 - mask[ok] = 1 - acoeff = djs_sfit_iter(nroff, xpos, ypos, 3, 3, yfit=zfit, mask=mask, $ - maxrej = 25, maxdev=0.4, lower=2.5, upper=3.0, freeiter=10, $ - maxiter=19, outmask = outmask) - - ;-------------------- - ; Compute the zeropoint correction and add it to the model - - ;zfit = zfit - median(zfit[std]) - fluxcor = 10.0^(-0.4*zfit) - model = model * transpose(rebin(fluxcor, nfib, npix)) - - ;------------------------------ - ; Plot r mag offset versus plate x/y before & after the correction - - rej = where(outmask ne 1) - - ; Before x plot - sphoto_xy, xpos, nroff, /xx, ytag = 'r mag', /first, ok=ok, std=std - xyouts, 0, 0.32, 'Original', align=0.5, charsize = 1.5, $ - color = djs_icolor('red'), charthick=3 - xyouts, 0.5, 0.97, title, /norm, align=0.5, charsize = 1.5 - legend, ['Standard', 'Rejected'], color=djs_icolor(['red', 'green']), $ - psym=[6, 2], symsize = [0.5, 0.5], charsize = 0.7, thick=3 - - ; After x plot - sphoto_xy, xpos, nroff - zfit, /xx, ytag = 'r mag', /first, ok=ok, $ - std=std, rej=rej - xyouts, 0, 0.32, 'Corrected', align=0.5, charsize = 1.5, $ - color = djs_icolor('red'), charthick=3 - - ; Before y plot - sphoto_xy, ypos, nroff, /yy, ytag = 'r mag', ok=ok, std=std - - ; After y plot - sphoto_xy, ypos, nroff - zfit, /yy, ytag = 'r mag', ok=ok, std=std, rej=rej - - ;---------------------------------- - ; Plot R-band Histogram before & after - - ymax = 50 - ; before - plothist, nroff[ok], bin=0.01, xr=[-0.4, 0.4], yr=[0,ymax], charsize=1.5, $ - xtitle = 'r mag [Spectro - Photo]', ytitle = 'Number of Spectra' - plothist, nroff[ok], rxhist, ryhist, bin=0.01, color=djs_icolor('red'), $ - /over, thick=4 - oplot, [0, 0], [0, 1e4], thick=4 - - rfit = gaussfit(rxhist, ryhist, nterms=3, rcoef) - xyouts, 0.10, ymax*0.90, 'r offset = ' + $ - string(rcoef[1], format='(F6.3)'), charsize = 0.6 - xyouts, 0.10, ymax*0.80, 'r sigma = ' + $ - string(rcoef[2], format='(F6.3)'), charsize = 0.6 - - ;---------------- - ; correct the flux - - cflux = flux / model - flam2fnu = (wave*wave / 2.99792e18) - filt_flux = filter_thru(cflux * flam2fnu, wave = wave[*,0], /toair) - mag = filt_flux * 0.0 - nonneg = where(filt_flux gt 0) - mag[nonneg] = -2.5 * alog10(filt_flux[nonneg]) - 48.6 + 2.5*17.0 - nsmag = transpose(mag[*,[1,2,3]]) - nroff = nsmag[1,*] - pmag[1,*] - - ; after - plothist, nroff[ok], bin=0.01, xr=[-0.4, 0.4], yr = [0, ymax], charsize=1.5, $ - xtitle = 'r mag [Spectro - Photo]', ytitle = 'Number of Spectra' - plothist, nroff[ok], rxhist, ryhist, bin=0.01, color=djs_icolor('red'), $ - /over, thick=4 - oplot, [0, 0], [0, 1e4], thick=4 - - rfit = gaussfit(rxhist, ryhist, nterms=3, rcoef) - xyouts, 0.10, ymax*0.90, 'r offset = ' + $ - string(rcoef[1], format='(F6.3)'), charsize = 0.6 - xyouts, 0.10, ymax*0.80, 'r sigma = ' + $ - string(rcoef[2], format='(F6.3)'), charsize = 0.6 - - !P.MULTI = 0 - return, model - -end diff --git a/pro/fluxfix/djs_sfit_iter.pro b/pro/fluxfix/djs_sfit_iter.pro deleted file mode 100644 index b27b2e2ba..000000000 --- a/pro/fluxfix/djs_sfit_iter.pro +++ /dev/null @@ -1,137 +0,0 @@ -;+ -; NAME: -; djs_iter_sfit -; -; PURPOSE: -; Surface-fitting code to tabulated data (with iterateive rejection). -; -; CALLING SEQUENCE: -; acoeff = djs_sfit_iter(fval, xval, yval, degreex, degreey, $ -; sqivar=, yfit=, mask=, maxdev=, maxrej=, $ -; upper=, lower=, maxiter=, freeiter=, outmask=) -; -; INPUTS: -; fval - Function values at XVAL,YVAL. -; xval - X coordinate values -; yval - Y coordinate values -; degreex - Degree of polynomial fit in X; 1 for linear, 2 for quadratic -; degreey - Degree of polynomial fit in Y; 1 for linear, 2 for quadratic -; -; OPTIONAL INPUTS: -; sqivar - Inverse sigma, which are the weights -; mask - Input mask for fitting and rejection (1=good, 0=bad) -; maxdev - Rejcet pts w/ abs(data - model) > maxdev (passed to djs_reject) -; upper - Rejcet pts w/ data > model + upper*sigma (passed to djs_reject) -; lower - Rejcet pts w/ data > model + lower*sigma (passed to djs_reject) -; maxiter - Maximum # of rejection iterations -; freeiter - Rejected points accumulate for this # of iterations, -; then the mask is reset to the input mask -; -; OUTPUTS: -; acoeff - Fit coefficients as [DEGREEX+1,DEGREEY+1] array -; -; OPTIONAL OUTPUTS: -; yfit - Fit values -; outmask - Masked points used in final iteration (1=used, 0=rejected) -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; Doesn't like NaNs -; -; PROCEDURES CALLED: -; djs_reject -; splog -; -; REVISION HISTORY: -; 12-Aug-2003 Adapted from djs_sfit by C. Tremonti, Steward Observatory -;- -;------------------------------------------------------------------------------ -function djs_sfit_iter, fval, xval, yval, degreex, degreey, $ - sqivar=sqivar, yfit=yfit, mask = mask, maxdev = maxdev, maxrej = maxrej, $ - upper=upper, lower=lower, maxiter = maxiter, freeiter = freeiter, $ - outmask = outmask - - npts = n_elements(fval) - if (n_params() LT 5) then $ - message, 'Wrong number of parameters' - if (n_elements(xval) NE npts OR n_elements(yval) NE npts) then $ - message, 'Dimensions of FVAL,XVAL,YVAL must agree' - if (degreex LT 0 OR degreey LT 0) then $ - message, 'DEGREEX,DEGREEY must be non-negative integers' - - if not keyword_set(mask) then mask = intarr(npts) + 1 - if not keyword_set(maxiter) then maxiter = 10 - - ncoeff = (degreex+1) * (degreey+1) - if (keyword_set(sqivar)) then thisvec = reform(double(sqivar),npts) $ - else thisvec = dblarr(npts)+1.d0 - if (n_elements(thisvec) NE npts) then $ - message, 'Number of elements in SQIVAR must agree with FVAL' - thisx = reform(double(xval), npts) - thisy = reform(double(yval), npts) - - - ;-------------------------------------------- - ; Solve matrix for good points only, then reject outliers and solve again - - iiter = 0 - inmask = mask - outmask = mask - while (NOT keyword_set(qdone) and iiter LE maxiter) do begin - - ok = where(inmask ne 0 and finite(fval), nok) - - mmatrix = dblarr(npts, ncoeff, /nozero) - for xp=0, degreex do begin - for yp=0, degreey do begin - tmpvec = thisvec - if (xp GT 0) then tmpvec = tmpvec * thisx^xp - if (yp GT 0) then tmpvec = tmpvec * thisy^yp - mmatrix[*,yp*(degreex+1)+xp] = tmpvec - endfor - endfor - - ; Only use good pts to compute coeff - bvec = reform(double(fval),npts) * thisvec - if (ncoeff EQ 1) then begin - mt_m = total(mmatrix[ok,*] * mmatrix[ok,*]) - mt_b = total(mmatrix[ok,*] * bvec[ok,*]) - mmi = 1. / (mt_m + (mt_m EQ 0)) - endif else begin - mt_m = matrix_multiply(mmatrix[ok,*], mmatrix[ok,*], /atranspose) - mt_b = matrix_multiply(mmatrix[ok,*], bvec[ok], /atranspose) - mmi = invert(mt_m, /double) - endelse - acoeff = mmi # mt_b - zfit = acoeff ## mmatrix - - ; Reset masks after every few iterations - if keyword_set(freeiter) then begin - if (iiter mod freeiter eq 0) then begin - outmask = mask - inmask = mask - endif - endif - - ; Do the rejection - qdone = djs_reject(bvec, zfit, inmask = inmask, outmask = outmask, $ - maxdev = maxdev, upper = upper, lower=lower, /sticky, $ - maxrej = maxrej) - - bad = where(outmask ne 1, nbad) - if nbad gt 0 then inmask[bad] = 0 - iiter = iiter + 1 - endwhile - splog, 'Rejected Points from 2d fit: ', nbad - - if (arg_present(yfit)) then begin - mmatrix = mmatrix / rebin(thisvec, npts, ncoeff) ; remove weights - yfit = reform(acoeff ## mmatrix, size(yval, /dimens)) - endif - - return, reform(acoeff, degreex+1, degreey+1) -end -;------------------------------------------------------------------------------ diff --git a/pro/fluxfix/frame_flux_calib.pro b/pro/fluxfix/frame_flux_calib.pro deleted file mode 100644 index 4f8fb8728..000000000 --- a/pro/fluxfix/frame_flux_calib.pro +++ /dev/null @@ -1,210 +0,0 @@ -;+ -; NAME: -; frame_flux_calib -; -; PURPOSE: -; To derive the flux calibration appropriate to one frame. This routine -; takes as input a set of "flux correction vectors" which are formed by -; ratioing each standard with it's best fit model and smoothing the result. -; The average correction vector, created from a PCA of all the frames (of -; one of the CCDs b1/r1/b2/r2) is first divided out. This gets rid of the -; low order shape. The residuals are then fit with a 4th order legendere. -; The average low order residual is found by medianing the Legendere -; coefficients. High order terms are fit by first dividing out the low order -; terms and then medianing the result. These are included in the final fit -; if "fit_wiggles" is set. The flux calibration vecotor for the frame is -; constructed by multiplying the average for all frames, the lower order -; residual fit to this frame, and the high order residual fit (if desired). -; This vector is then fit with a bspline and the coefficients are returned. -; -; CALLING SEQUENCE: -; calibset = frame_flux_calib(loglam, corvector, corvivar, avgcorvset, $ -; cormed, framename, fit_wiggles=, fsig=, fcor=, final=, noplot=) -; -; INPUTS: -; loglam - wavelength array (log10(Angstroms)) [npix] -; corvector - array of "flux correction vectors" -- these are -; formed by ratioing each standard with it's best fit model -; and smoothing the result [npix, nstar] -; corvivar - inverse variance of correction vectors -- used in rejecting -; points from low order fit [npix, nstar] -; avgcorvset - a set of bspline coefficients which describes the average -; flux correction of all frames. Not needed if "final" is set -; cormed - The median value of each raw correction vector. Before being -; fed into this code they are all normalized at 5700 -- 6300 A -; (see spdata2model) [nstar] -; -; OUTPUT: -; A structure holding the coefficients of a bspline fit to the average -; flux correction vector for the frame is returned. Unless "noplot" is set, -; diagnostic plots are created. If "outfile" is set the structure is stored -; as a FITS binary file. -; -; KEYWORDS: -; framename - Name of frame (to be used in plot titles) -; outfile - Name of output FITS binary file -- if not set no file is -; written -; fit_wiggles - if set a fit is done to the high order (as well as low -; order) residuals. This should only be set when the S/N -; is good. Note that the high order fit is plotted even if -; it is not used. -; fsig - the variance between each of the flux correction vectors -; and the average -- this is a good measure of the spectro- -; photometric quality -; fcor - average flux correction for the frame (not the spline fit) -; final - if set, the average flux correction from a PCA of all the -; frames is not used -- this is useful for a final evaluation -; of the spectrophotometric quality of the combined exposures -; noplot - toggles plotting -; -; COMMENTS: -; -; BUGS: -; Not sure if it is mathematically OK to median the Legendre coeffs! (But -; it seems to work well ...) -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; bspline_bkpts -; bspline_iterfit -; bspline_valu -; divideflat -; djs_icolor() -; djs_iterstat() -; djs_median() -; djs_oplot -; djs_plot -; mwrfits -; splot -; sxaddpar -; traceset2xy -; xytraceset -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 12-Aug-2003 Created by C. Tremonti Steward Observatory -;- -;------------------------------------------------------------------------------ - -function frame_flux_calib, loglam, corvector, corvivar, avgcorvset, cormed, $ - framename = framename, outfile = outfile, noplot = noplot, $ - fit_wiggles = fit_wiggles, fsig = fsig, fcor = fcor, final = final - - npix = n_elements(corvector[*,0]) - nstd = n_elements(corvector[0,*]) - loglam2d = rebin(loglam, npix, nstd) - wave = 10.0^loglam - - ;----------------- - ; Divide each vector by the average and fit a 4th order legendre to the - ; result -- this is the "low frequency" part - - residcorv = corvector - residivar = corvivar - - if not keyword_set(final) then begin - avgcorv = bspline_valu(loglam2d, avgcorvset) ; average from PCA - divideflat, residcorv, invvar=residivar, avgcorv, $ - minval=0.001*median(avgcorv) - endif else avgcorv = corvector * 0 + 1 - - xy2traceset, loglam2d, residcorv, polyset, invvar=residivar, $ - ncoeff=4, lower = 2.5, upper = 2.5, maxiter = 15 - - ;---------------- - ; Create an average low-frequency vector - traceset2xy, polyset, loglam2d, lowfvect - lowfset = {func: 'legendre', xmin: polyset.xmin, xmax: polyset.xmax, $ - coeff: djs_median(polyset.coeff, 2)} - traceset2xy, lowfset, loglam, lowfmed - - ;---------------- - ; Create an average hi-frequency vector - hifvect = residcorv - divideflat, hifvect, lowfvect, minval=0.01 - hifmed = djs_median(hifvect, 2) - - ;-------------- - ; Recombine high & low-frequencey parts (but only use high-f if allowed - ; by keyword) - - fcor = lowfmed * avgcorv[*,0] - if fit_wiggles then fcor = fcor * hifmed - - ;-------------- - ; Measure the variance between the fluxcalib vectors derived - ; for each of the standard stars -- this is an indicator of the - ; spectrophotometric quality. - - djs_iterstat, corvector / rebin(fcor, npix, nstd), mean=fmean, sigma=fsig, $ - maxiter=5, sigrej=5 - - ;--------------- - ; Restore to original scale - - djs_iterstat, cormed, mean=scalefactor, sigma=cormedsig, sigrej=2.5 - - ;splog, 'Zeropoint of corvector: ', string(cormed, format='(F6.2)') - splog, 'Average zeropoint & stdev: ' + $ - string(scalefactor, format='(F6.2)') + ' +/- ' + $ - string(cormedsig, format='(F5.2)') - - fcor = fcor * scalefactor - - ;-------------- - ; Do the spline fit - - if keyword_set(final) then nbkpts = 100 else nbkpts = 50 - padbkpts = bspline_bkpts(loglam, nord=4, nbkpts=nbkpts, bkpt=bkpts, /silent) - - calibset = bspline_iterfit(loglam, fcor, bkpt = bkpts, $ - nord=4, upper=3, lower=3, maxrej=ceil(0.10*n_elements(fcor))) - - calibfac = bspline_valu(loglam, calibset) - - ;-------------- - ; Create header cards describing the data range and write to FITS - ; The keyword 'SPHOTERR' holds the standard deviation of the - ; correction vectors for the individual stars -- this is a good measure - ; of the quality of the spectrophotometry - - if keyword_set(outfile) then begin - hdr = [''] - sxaddpar, hdr, 'WAVEMIN', min(wave) - sxaddpar, hdr, 'WAVEMAX', max(wave) - sxaddpar, hdr, 'SPHOTERR', fsig - mwrfits, 0, outfile, hdr, /create - mwrfits, calibset, outfile - endif - - ;------------ - ; QA plots - - if keyword_set(noplot) then return, calibset - - !P.MULTI = [0, 1, 2] - if not keyword_set(framename) then framename = '' - - djs_plot, wave, hifvect, yr=[0.7, 1.2], /nodata, $ - xtitle = 'Wavelength', ytitle = 'Normalized Flux', $ - title = 'High Frequency Sphoto Correction to ' + framename - for istd = 0, nstd - 1 do djs_oplot, wave, hifvect[*,istd] - djs_oplot, wave, hifmed, color='red', thick=3 - - djs_plot, wave, residcorv, yr=[0.5, 1.5], /nodata, $ - xtitle = 'Wavelength', ytitle = 'Normalized Flux', $ - title = 'Residual Sphoto Correction to ' + framename - for istd = 0, nstd - 1 do djs_oplot, wave, residcorv[*,istd] - djs_oplot, wave, lowfmed, color='red', thick=3 - djs_oplot, wave, calibfac/avgcorv[*,0]/scalefactor, color='green', $ - thick=3 - - xyouts, mean(wave) - 500, 1.3, 'Sigma = ' + $ - string(fsig * 100, format='(I3)') + '%' - !P.MULTI = 0 - - return, calibset - -end diff --git a/pro/fluxfix/frame_flux_tweak.pro b/pro/fluxfix/frame_flux_tweak.pro deleted file mode 100644 index 8aa751874..000000000 --- a/pro/fluxfix/frame_flux_tweak.pro +++ /dev/null @@ -1,379 +0,0 @@ -;+ -; NAME: -; frame_flux_tweak -; -; PURPOSE: -; To genreate low order correctons to each red-blue exposure pair which -; match the flux (on a fiber-by-fiber basis) to that in a fiducial exposure -; selected to have the best S/N and spectrophotometry. This is necessary -; so that multiple exposures can be combined with effective cosmic ray -; rejection. The flux vectors of each exposure should be multiplied by the -; resultant 4th order legnedre polynomial. -; -; CALLING SEQUENCE: -; frame_flux_tweak, bloglam, rloglam, bflux, rflux, bivar, rivar, $ -; best_exp, plugtag, corrfile, diag=, title= -; -; INPUTS: -; bloglam - blue wavelength array in (log10 Ang.) [nblue_pix, nfiber*nexp] -; rloglam - red wavelength array in (log10 Ang.) [nred_pix, nfiber*nexp] -; bflux - blue flux array (uncalibrated) [nblue_pix, nfiber*nexp] -; rflux - red flux array (uncalibrated) [nred_pix, nfiber*nexp] -; bivar - blue inverse variance [nblue_pix, nfiber*nexp] -; rivar - red inverse variance [nred_pix, nfiber*nexp] -; best_exp - string containing the exposure ID of the "best" exposure -- -; this is used as the fiducial exposure against which the -; others are ratioed -; plugtag - plugmap-like structure which also contains the exposure ID of -; each spectrum [nfiber*nexp] -; corrfile - names of output FITS files (1/exposure) [nexp]. The traditional -; names are spFluxcorr-eeeeeeee-s.fits where "eeeeeeee" is the -; exposure ID and "s" is the spectrograph ID (1/2) -; -; OPTIONAL KEYWORDS: -; diag - if set show plots of individual fibers at the 3 S/N levels -; -; OUTPUTS: -; FITS files named in "corrfile" are generated containing the 4th order -; legendere coefficients of the ratio of the best exposure and each of -; the others (on a fiber-to-fiber basis). Plots are also generated. -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Objects with high S/N are fit with a 4th order legendre -; Objects with medium S/N are fit with a 3rd order legendre -; Objects with Low S/N are assigned the median correction of the five nearest -; fibers. The zeropoint is then fit. -; Bad fits -- those wildly deviant from the others -- are replaced with a -; zeropoint shift. -; -; EXAMPLES: -; -; BUGS: -; The median corrections assigned to low S/N fibers are probably imperfect -; because of the mix of point and extended sources on the plate. Also -; the shape of the correction may not be well fit by a low order polynomial -; -- particularly if there is a mis-match in the dichroic region. -; -; Mask bits not currently returned!! (no record of hi/med/low S/N correction) -; -; PROCEDURES CALLED: -; djs_iterstat -; djs_oplot -; djs_plot -; legend -; mwrfits -; pixelmask_bits() -; splog -; spmedian_rebin() -; traceset2xy -; xy2traceset -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 17-Oct-2000 Formerly fluxcorr_new -- written by S. Burles -; 09-Oct-2002 Revised by C. Tremonti to calibrate point sources to the -; smear and galaxies to the calib images. -; 12-Aug-2003 Changed by C. Tremonti to work on pairs of science images. -; Split off "spmedian_rebin" & altered handling of medium and -; low S/N cases -;- -;------------------------------------------------------------------------------ - -pro frame_flux_tweak, bloglam, rloglam, bflux, rflux, bivar, rivar, $ - best_exp, plugtag, corrfile, diag = diag - - expid = plugtag[uniq(plugtag.expid)].expid - splog, 'Best Exposure =', best_exp - indx = where(plugtag.expid eq best_exp) - - ;---------- - ; Create red & blue smoothed best images - - bfit = spmedian_rebin(bloglam[*,indx], bflux[*,indx], bivar[*,indx], $ - 'b', outwave = bwave, mask = bmask, sn = bsn, quality = bquality) - - rfit = spmedian_rebin(rloglam[*,indx], rflux[*,indx], rivar[*,indx], $ - 'r', outwave = rwave, mask = rmask, sn = rsn, quality = rquality) - - ;--------------------------------------------------------- - ; Now put blue and red together - - bestflux = [bfit,rfit] - bestivar = [bmask, rmask] - bestsnmed = transpose([[bsn],[rsn]]) - qbest = (bquality OR rquality) - - npix = (size(bestflux,/dimens))[0] - nfiber = (size(bestflux,/dimens))[1] - medloglam = [bwave,rwave] # replicate(1,nfiber) - wave = 10.0^medloglam[*,0] - - ; -------------------------------------------------------- - ; Create basic mask - - bestmask = lonarr(nfiber) - - ;---------- - ; Loop through the science images - - nfiles = n_elements(corrfile) - - for ifile=0, nfiles-1 do begin - - indx = where(plugtag.expid eq expid[ifile]) - splog, 'Fluxing science image =', expid[ifile] - - ;------------ - ; Create coeffients of fit and set them to a zero-order polynomaial - ; with an amplitude of 1.0 - - fitimg = bestflux*0.0 + 1.0 - xy2traceset, medloglam, fitimg, corrset, ncoeff=4, /silent - corrset.coeff[0,*] = 1.0 - corrset.coeff[1:*,*] = 0.0 - thismask = bestmask - - ;-------------- - ; If the science image and best image are the same, - ; force their ratio to be unity. - if (expid[ifile] EQ best_exp) then begin - mwrfits, corrset, corrfile[ifile], /create - ; mwrfits, thismask, corrfile[ifile] - continue - endif - - ;------------- - ; Create rebinned blue and red science images - -; Need to figure out the best way to set mask bits!!! - - bscifit = spmedian_rebin(bloglam[*,indx], bflux[*,indx], bivar[*,indx], $ - 'b', mask = bscimask, sn = bscisn, quality = bsciquality) - - rscifit = spmedian_rebin(rloglam[*,indx], rflux[*,indx], rivar[*,indx], $ - 'r', mask = rscimask, sn = rscisn, quality = rsciquality) - - ;---------------- - ; Combine red and blue - - sciflux = [bscifit,rscifit] - sciivar = [bscimask,rscimask] - scisnmed = transpose([[bscisn],[rscisn]]) - qsci = lonarr(nfiber) - qsci = qsci OR bsciquality - qsci = qsci OR rsciquality - - ;------------------------------------------------------------- - ; Determine the S/N of the expsure and act accrodingly - ; poly 3: High S/N => 4 order legendre fit (in loglam) - ; poly 2: Medium S/N => 3 order legendre fit - ; poly 1: Low S/N => find average of nearest high S/N - - fiber_coeff = lonarr(nfiber) + 1 - - poly3 = where(scisnmed[0,*] GT 2.5 AND scisnmed[1,*] GT 5.0 $ - AND bestsnmed[0,*] GT 2.5 AND bestsnmed[1,*] GT 5.0 $ - AND qsci EQ 0 AND qbest EQ 0, npoly3) - if poly3[0] NE -1 then fiber_coeff[poly3] = 3 - - poly2 = where(scisnmed[0,*] GT 1.0 AND scisnmed[1,*] GT 2.0 $ - AND bestsnmed[0,*] GT 1.0 AND bestsnmed[1,*] GT 2.0 $ - AND qsci EQ 0 AND qbest EQ 0 AND fiber_coeff NE 3, npoly2) - if poly2[0] NE -1 then fiber_coeff[poly2] = 2 - - poly1 = where(fiber_coeff eq 1 and $ - scisnmed[0,*] ne 0 and scisnmed[1,*] ne 0 and $ - bestsnmed[0,*] ne 0 and bestsnmed[1,*] ne 0 and $ - strmatch(plugtag[indx].objtype, '*SKY*') ne 1, npoly1) - - ;----------------- - ; Calculate polynomial coeffs for the 3 cases - - if npoly3 gt 0 then begin - xy2traceset, medloglam[*,poly3], bestflux[*,poly3], polyset, $ - invvar=bestivar[*,poly3], ncoeff=4, inputfunc=sciflux[*,poly3], $ - lower = 3, upper = 3 - corrset.coeff[*,poly3] = polyset.coeff - endif - - if npoly2 gt 0 then begin - xy2traceset, medloglam[*,poly2], bestflux[*,poly2], polyset, $ - invvar=bestivar[*,poly2], ncoeff=3, inputfunc=sciflux[*,poly2], $ - lower = 3, upper = 3 - corrset.coeff[0,poly2] = polyset.coeff[0,*] - corrset.coeff[1,poly2] = polyset.coeff[1,*] - corrset.coeff[2,poly2] = polyset.coeff[2,*] - endif - - ;--------------------- - ; For the lowest S/N case use the median of the nearest 5 high or - ; moderate S/N fibers, then adjust the zeropoint - - if npoly1 gt 0 and (npoly2 gt 0 or npoly3 gt 0) then begin - if npoly3 gt 0 then hisn = poly3 - if npoly2 gt 0 then hisn = poly2 - if npoly3 gt 0 and npoly2 gt 0 then hisn = [poly3, poly2] - - for ifib = 0, npoly1 - 1 do begin - dist = (plugtag[poly1[ifib]].xfocal - plugtag[hisn].xfocal)^2 + $ - (plugtag[poly1[ifib]].yfocal - plugtag[hisn].yfocal)^2 - nearindx = sort(dist) - near5 = hisn[nearindx[0:4]] - corrset.coeff[*,poly1[ifib]] = djs_median(corrset.coeff[*,near5], 2) - endfor - - traceset2xy, corrset, medloglam, corrtemp - xy2traceset, medloglam[*,poly1], bestflux[*,poly1], polyset, $ - invvar=bestivar[*,poly1], ncoeff=1, $ - inputfunc=sciflux[*,poly1] * corrtemp[*,poly1], lower = 3, upper = 3 - - zptcor = rebin(polyset.coeff, 4, npoly1) - corrset.coeff[*,poly1] = corrset.coeff[*,poly1] * zptcor - endif - - ;---------- - ; Identify sky fibers from the plug map - sky = where(strmatch(plugtag[indx].objtype, '*SKY*')) - corrset.coeff[0,sky] = 1.0 - corrset.coeff[1:*,sky] = 0.0 - - ;--------------- - ; Reject any bad corrections and replace with zeropoint shift only. - ; Bad vectors are those with fit coefficients deviant by > 6-sigma. - ; Sigma is computed of the zero order coeff since this quantity is - ; robustly measured and a good indicator of plate quality - - ; Normalize coefficients - coef0 = corrset.coeff[0,*] - coef1 = corrset.coeff[1,*] / coef0 - coef2 = corrset.coeff[2,*] / coef0 - coef3 = corrset.coeff[3,*] / coef0 - - djs_iterstat, coef0, sigrej=6, mean=coef0mean, sigma=coef0sig - coef0 = coef0 / coef0mean - coef0sig = (coef0sig / coef0mean) > 0.10 - - isbad = (coef0 LT (1 - 6*coef0sig) OR coef0 GT (1 + 6*coef0sig)) OR $ - (coef1 LT -6*coef0sig OR coef1 GT 6*coef0sig) OR $ - (coef2 LT -6*coef0sig OR coef2 GT 6*coef0sig) OR $ - (coef3 LT -6*coef0sig OR coef3 GT 6*coef0sig) - - bad = where(isbad, nbad) - if bad[0] NE -1 then begin - splog, 'Warning: Large deviations in flux correction ' - splog, 'Warning: Replacing with zero point shift:', $ - string(bad + 1) - - if keyword_set(diag) then begin - !P.MULTI = [0, 1, 2] - for ii = 0, nbad - 1 do begin - ifib = bad[ii] - plot, wave, corrtemp[*,ifib], yr=[0.0, 2.0], /nodata, $ - ytitle='Best Frame Flux / Science Frame Flux', title='Bad Vector' - oplot, wave, bestflux[*,ifib]/sciflux[*,ifib], psym=6, syms=0.5, $ - thick=3 - djs_oplot, wave, corrtemp[*,ifib], color='red', thick=3 - endfor - endif - - xy2traceset, medloglam[*,bad], bestflux[*,bad], polyset, $ - invvar=bestivar[*,bad], ncoeff=1, inputfunc=sciflux[*,bad], $ - lower = 3, upper = 3 - corrset.coeff[0,bad] = polyset.coeff - corrset.coeff[1:*,bad] = 0.0 - endif - - ;--------------- - ; Set maskbits and append to end of corrfile - - ;thismask = thismask OR (fibersn EQ 2) * pixelmask_bits('SMEARMEDSN') - ;thismask = thismask OR (fibersn EQ 3) * pixelmask_bits('SMEARHIGHSN') - - ;------------ - ; Write out as FITS - - mwrfits, corrset, corrfile[ifile], /create - ;mwrfits, thismask, corrfile[ifile] - - ;------------ - ; Plot correction vectors - - if keyword_set(noplot) then continue - - traceset2xy, corrset, medloglam, corrimage - - ;--------------------- - ; Show individual fits to standards and examples of 3 S/N bins - - if keyword_set(diag) then begin - !P.MULTI = [0, 1, 2] - std = where(strmatch(plugtag[indx].objtype, '*_STD*'), nstd) - for ii = 0, nstd - 1 do begin - istd = std[ii] - plot, wave, corrimage[*,istd], yr=[0.5, 1.5], /nodata, $ - ytitle='Best Frame Flux / Science Frame Flux', title='Standard Star' - oplot, wave, bestflux[*,istd]/sciflux[*,istd], psym=6, syms=0.5, $ - thick=3 - djs_oplot, wave, corrimage[*,istd], color='red', thick=3 - endfor - - for ii = 0, (10 < npoly2) - 1 do begin - istd = poly2[ii] - plot, wave, corrimage[*,istd], yr=[0.5, 1.5], /nodata, $ - ytitle='Best Frame Flux / Science Frame Flux', title='Poly 2' - oplot, wave, bestflux[*,istd]/sciflux[*,istd], psym=6, $ - syms=0.5, thick=3 - djs_oplot, wave, corrimage[*,istd], color='red', thick=3 - endfor - - for ii = 0, (10 < npoly1) - 1 do begin - istd = poly1[ii] - plot, wave, corrimage[*,istd], yr=[0.0, 2.0], /nodata, $ - ytitle='Best Frame Flux / Science Frame Flux', title='Poly 1' - oplot, wave, bestflux[*,istd]/sciflux[*,istd], psym=6, $ - syms=0.5, thick=3 - djs_oplot, wave, corrimage[*,istd], color='red', thick=3 - endfor - endif - - ;----------------- - ; Plot all low and medium S/N correction vectors - - !P.MULTI = [0, 1, 2] - - djs_plot, wave, corrimage, /nodata, yr=[0.4, 1.6], $ - xr=[min(wave)-100, max(wave)+100], /xstyle, /ystyle, $ - xtitle='\lambda [\AA]', ytitle='Best Frame Flux / Science Frame Flux', $ - title = 'Science: ' + expid[ifile] + ' Best: ' + best_exp - - - for iobj=0, npoly2 -1 do $ - djs_oplot, wave, corrimage[*,poly2[iobj]], color='blue', nsum=5 - for iobj=0, npoly1 -1 do $ - djs_oplot, wave, corrimage[*,poly1[iobj]], color='magenta', nsum=5 - - legend, ['High S/N', 'Med S/N', 'Low S/N', 'Standard Star'], psym=0, $ - thick = 3, color=djs_icolor(['green', 'blue', 'magenta', 'red']) - - ;----------------- - ; Plot all high S/N correction vectors + standards - - djs_plot, wave, corrimage, /nodata, yr=[0.4, 1.6], $ - xr=[min(wave)-100,max(wave)+100], /xstyle, /ystyle, $ - xtitle='\lambda [\AA]', ytitle='Best Frame Flux / Science Frame Flux' - - for iobj=0, npoly3 -1 do $ - djs_oplot, wave, corrimage[*,poly3[iobj]], color='green', nsum=5 - - std = where(strmatch(plugtag[indx].objtype, '*_STD*'), nstd) - for iobj=0, nstd -1 do $ - djs_oplot, wave, corrimage[*,std[iobj]], color='red', nsum=5, thick=2 - - !P.MULTI = 0 - endfor - return -end - diff --git a/pro/fluxfix/jeg_sphoto_coef.pro b/pro/fluxfix/jeg_sphoto_coef.pro deleted file mode 100644 index ac304cb3e..000000000 --- a/pro/fluxfix/jeg_sphoto_coef.pro +++ /dev/null @@ -1,101 +0,0 @@ -;+ -; NAME: -; jeg_sphoto_coef -; -; PURPOSE: -; Compute coefficients which can be used to correct the spectrophotometry -; -; CALLING SEQUENCE: -; coef = jeg_sphoto_coef(wave, flux, ivar, phot_mag, /plot, $ -; x = x, xavg=xavg, x2avg=x2avg) -; -; INPUTS: -; wave - wavelength array [npix] -; flux - 2d flux array in 10-17 erg/s/cm^2/A [npix, nfiber] -; ivar - inverse variance [npix, nfiber] -; phot_mag - photo fiber mag [5, nfiber] -; -; OUTPUTS: -; an array of coefficients for reconstructing the loss function [3, nfiber] -; loss = 10.0^(-0.4 *(coef[0] + coef[1]*x + coef[2]x^2)) -; spec_obs = spec_true * loss -; -; OPTIONAL OUTPUTS: -; x - the array of x values used to compute the loss [npix] (see paper -; by Jim Gunn for full explanation) -; xavg - array of average x values for the g,r,i filters [3, npix] -; x2avg - array of average x^2 values for the g,r,i filters [3, npix] -; doplot - if set a plot is generated showing the original spectrum in white, -; the corrected spectrum in blue, the loss function in red, and -; the 3 points used to compute the loss function in green -; -; COMMENTS: -; See paper by Jim Gunn for a full explanation -; -; BUGS: -; Not sure what happens when the mags are bad -; -; PROCEDURES CALLED: -; filter_thru -; linterp -; -; REVISION HISTORY: -; 2-Feb-2004 Written by C. Tremonti, U of Az -;- -;------------------------------------------------------------------------------ - -function jeg_sphoto_coef, wave, flux, ivar, phot_mag, doplot = doplot, $ - xavg = xavg, x2avg=x2avg - -lam0 = 5018.0 -d3900 = (lam0^2/3900.0^2 - 1) -d9000 = (lam0^2/9000.0^2 - 1) -x = (d3900 + d9000 + 2*(lam0^2/wave^2 - 1)) / (d3900 - d9000) - -nfiber = n_elements(flux[0,*]) -flambda2fnu = (wave*wave / 2.99792e18) # replicate(1,nfiber) -x2d = x # replicate(1,nfiber) - -norm = transpose(filter_thru(flux*flambda2fnu, waveimg=wave, $ - mask=(ivar LE 0))) - -spec_mag = -2.5 * alog10(norm) + 2.5*17 -48.6 - -xavg = transpose(filter_thru(flux*flambda2fnu*x2d, waveimg=wave, $ - mask=(ivar LE 0))) / norm - -x2avg = transpose(filter_thru(flux*flambda2fnu*x2d^2, waveimg=wave, $ - mask=(ivar LE 0))) / norm - -coef = fltarr(3, nfiber) - -for ii = 0, nfiber - 1 do begin - - a = [[1, xavg[1,ii], x2avg[1,ii]], $ - [1, xavg[2,ii], x2avg[2,ii]], $ - [1, xavg[3,ii], x2avg[3,ii]]] - - b = [spec_mag[1,ii] - phot_mag[1,ii], $ - spec_mag[2,ii] - phot_mag[2,ii], $ - spec_mag[3,ii] - phot_mag[3,ii]] - - svdc, a, w, u, v - coef[*,ii] = svsol(u, w, v, b) - - if keyword_set(doplot) then begin - loss = 10.0^(-0.4 *(coef[0,ii] + coef[1,ii]*x + coef[2,ii]*x^2)) - norm = median(flux[*,ii]) - plot, wave, smooth(flux[*,ii]/norm, 9), yr=[0, 3], /xs, nsum=9,$ - xtitle = 'Wavelength (A)', ytitle = 'Normalized Flux' - oplot, wave, smooth(flux[*,ii]/loss/norm, 9), color=!blue, nsum=9 - oplot, wave, loss, color=!red, nsum=9 - - linterp, x, wave, xavg[[1,2,3],ii], wlavg - cfac = 10.0^((spec_mag[[1,2,3],ii] - phot_mag[[1,2,3],ii])/(-2.5)) - oplot, wlavg, cfac, psym=2, symsize = 3, thick=3, color=!green - endif -endfor - -return, coef - -end diff --git a/pro/fluxfix/kurucz_restore.pro b/pro/fluxfix/kurucz_restore.pro deleted file mode 100644 index 6c8ebe0a7..000000000 --- a/pro/fluxfix/kurucz_restore.pro +++ /dev/null @@ -1,111 +0,0 @@ -;+ -; NAME: -; kurucz_restore -; -; PURPOSE: -; Read back Kurucz models from FITS and apply an empirical correction -; -; CALLING SEQUENCE: -; kurucz_restore, kwave, kflux, nkflux=, hdr=, kindx=, smoothpix= -; -; INPUTS: -; -; OPTIONAL INPUTS: -; smoothpix - smooth models by this number of pixels -- useful for -; comparisons to non-SDSS data -; -; OUTPUT: -; kwave - wavelength in Angstroms of Kurucz models (binning is in log-10 A) -; [npix] -; kflux - flux of Kuruz models [npix, nmodel] -; -; OPTIONAL OUTPUTS: -; nkflux - normalized model flux [npix, nmodel] -; hdr - header of FITS file -; kindx - structure containing info on each model (Teff, logg, [Fe/H], mags) -; -; COMMENTS: -; The model file called "kurucz_stds_v5.fit' is assumed to be in -; $IDLSPEC2D_DIR/etc. The models have been produced by the SPECTRUM code -; (R.0. Gray & C. J. Corbally, 1994, AJ, 107, 742) using the latest Kurucz -; model atmospheres. The 0th HDU contains the flux in ergs/s/cm^2/A -- -; the absolute value of the flux is arbitrary. The spectra have been -; convolved to SDSS resolution (approximately) and rebinned to dloglam -; = 1e-4. The 1st HDU contains information about each model such as -; effective temperature, surface gravity, and metallicity. The wavelength -; information is in the header. The second HDU contains information about -; an empirical correction which should be applied to the models. -; -; BUGS: -; The empirical correction which is applied is derived from comparing -; hot DA white dwarfs in SDSS to models. This only corrects the low order -; shape of the spectra. A different correction is probably needed for each -; T_eff and [Fe/H]. -; -; EXAMPLES: -; kurucz_restore, kwave, kflux -; plot, kwave, kflux[*, 5] -; -; PROCEDURES CALLED: -; filter_thru() -; mrdfits() -; rectify -; sxpar() -; traceset2xy -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 12-Aug-2003 Created by C. Tremonti, Steward Observatory -; -;- -;------------------------------------------------------------------------------ - -pro kurucz_restore, kwave, kflux, nkflux = nkflux, hdr = hdr, kindx = kindx, $ - smoothpix = smoothpix - -kurucz_file = filepath('kurucz_stds_v5.fit', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='etc') - -kflux = mrdfits(kurucz_file, 0, hdr, /silent) ; flux -kindx = mrdfits(kurucz_file, 1, /silent) -kset = mrdfits(kurucz_file, 2, /silent) - -;---------------- -; Create Wavelength Array - -npix = n_elements(kflux[*,0]) -nmod = n_elements(kflux[0,*]) -crval = sxpar(hdr, 'CRVAL1') -kwave = 10.0^(lindgen(npix) * 1.0d-4 + crval) - -;----------------- -; Apply a correction derived from White Dwarf Spectra - -traceset2xy, kset, kwave, kfix -for i = 0, nmod - 1 do begin - kflux[*,i] = kflux[*,i] / kfix - fluxfnu = kflux[*,i] * kwave^2 / 2.99792e18 - fthru=filter_thru(fluxfnu, waveimg=kwave, $ - filter_prefix = 'sdss_jun2001', /toair) - kindx[i].mag = -2.5*alog10(fthru) - 48.6 -endfor - -;-------------------- -; Smooth to lower resolution if desired - -if keyword_set(smoothpix) then begin - nkpix = long(5*smoothpix) - kern = exp( -0.5 * (findgen(nkpix*2+1) - nkpix)^2 / smoothpix^2) - kern = kern / total(kern) - for imod = 0, nmod - 1 do kflux[*,imod] = convol(kflux[*,imod], kern, /center) -endif - -;--------------- -; Return rectified fluxes if desired - -;nkflux = rectify(kflux, /mask, wave = kwave) -nkflux = rectify(kflux) - -end - diff --git a/pro/fluxfix/newspcombine.pro b/pro/fluxfix/newspcombine.pro deleted file mode 100644 index 760861f75..000000000 --- a/pro/fluxfix/newspcombine.pro +++ /dev/null @@ -1,334 +0,0 @@ -;+ -; NAME: -; newspcombine -; -; PURPOSE: -; Flux calibrates and combines exposures with a common plugmap. -; (Calling script for SPCOADD_FLUXED_FRAMES.) -; -; CALLING SEQUENCE: -; newspcombine, [ planfile, docams=, adderr=, /xdisplay, minsn2=, $ -; best_exposure= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; planfile - Name(s) of output plan file; default to reducing all -; plan files matching 'spPlancomb*.par' -; docams - Cameras to combine; default to ['b1', 'b2', 'r1', 'r2'] -; adderr - Additional error to add to the formal errors, as a -; fraction of the flux; default to 0.03 (3 per cent). -; xdisplay - Send plots to X display rather than to plot file -; minsn2 - Minimum S/N^2 to include science frame in coadd (default 0.2) -; best_exposure - string containing the exposure ID of the "best" exposure. -; This is the exposure which all exposures will be scaled to -; match before the images are coadded. If this is not set, the -; exposure with the best S/N and spectrophotometry is chosen. -; -; OUTPUT: -; spPlate-PPPP-MMMMM.fits file -; Diganostic plots in spDiagcomb-PPPP-MMMMM.ps, spSN2d-PPPP-MMMMM.ps -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; This routine spawns the Unix command 'mkdir'. -; For a given exposure to be combined data from all 4 cameras must be -; present -; -; PROCEDURES CALLED: -; djs_filepath() -; cpbackup -; idlspec2d_version() -; idlutils_version() -; lookforgzip() -; spcoadd_fluxed_frames -; splog -; yanny_free -; yanny_par() -; yanny_read -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 12-Aug-2003 Adapted from spcombine by C. Tremonti, Steward Observatory -;- -;------------------------------------------------------------------------------ -pro newspcombine, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, $ - minsn2=minsn2, best_exposure = best_exposure - - if (NOT keyword_set(planfile)) then planfile = findfile('spPlancomb*.par') - if (n_elements(adderr) EQ 0) then adderr = 0.03 - if (n_elements(minsn2) EQ 0) then minsn2 = 0.2 - - ;---------- - ; If multiple plan files exist, then call this script recursively - ; for each such plan file. - - if (N_elements(planfile) GT 1) then begin - for i=0, N_elements(planfile)-1 do $ - newspcombine, planfile[i], docams=docams, xdisplay=xdisplay - return - endif - - if (NOT keyword_set(docams)) then docams = ['b1', 'b2', 'r1', 'r2'] - - ;---------- - ; Strip path from plan file name, and change to that directory - - thisplan = fileandpath(planfile[0], path=thispath) - cd, thispath, current=origdir - if (NOT keyword_set(thispath)) then cd, origdir - - ;---------- - ; Find the SPEXP structure - - yanny_read, thisplan, pdata, hdr=hdr - for i=0, N_elements(pdata)-1 do begin - if (tag_names(*pdata[i], /structure_name) EQ 'SPEXP') then $ - allseq = *pdata[i] - endfor - yanny_free, pdata - - if (N_elements(allseq) EQ 0) then begin - splog, 'ABORT: No SPEXP structures in plan file ' + thisplan - cd, origdir - return - endif - - ;---------- - ; Find keywords from the header - - extractdir = yanny_par(hdr, 'extractdir') - combinedir = yanny_par(hdr, 'combinedir') - logfile = yanny_par(hdr, 'logfile') - plotfile = yanny_par(hdr, 'plotfile') - plotsnfile = yanny_par(hdr, 'plotsnfile') - fcalibprefix = yanny_par(hdr, 'fcalibprefix') - combinefile = yanny_par(hdr, 'combinefile') - thismjd = long(yanny_par(hdr, 'MJD')) - if (NOT keyword_set(thismjd)) then $ - thismjd = max(allseq.mjd) - - if (keyword_set(combinedir)) then $ - spawn, 'mkdir -p ' + combinedir - - stime0 = systime(1) - - ;---------- - ; Open log files for output - - if (keyword_set(logfile)) then begin - cpbackup, djs_filepath(logfile, root_dir=combinedir) - splog, filename=djs_filepath(logfile, root_dir=combinedir) - splog, 'Log file ' + logfile + ' opened ' + systime() - splog, 'IDL version: ' + string(!version,format='(99(a," "))') - spawn, 'uname -a', uname - splog, 'UNAME: ' + uname[0] - endif - if (keyword_set(plotfile) AND NOT keyword_set(xdisplay)) then begin - cpbackup, djs_filepath(plotfile, root_dir=combinedir) - if keyword_set(plotsnfile) then $ - cpbackup, djs_filepath(plotsnfile, root_dir = combinedir) - set_plot, 'ps' - device, filename=djs_filepath(plotfile, root_dir=combinedir), /color, $ - /portrait, xsize=8.0, ysize=9.5, xoffset=0.25, yoffset=0.5, /inch - splog, 'Plot file ' + plotfile - endif - splog, 'Plan file ', thisplan - splog, 'DOCAMS = ', docams - - splog, 'idlspec2d version ' + idlspec2d_version() - splog, 'idlutils version ' + idlutils_version() - - ; This is the assumed ordering of the cameras in the par file (should check) - camnames = ['b1', 'b2', 'r1', 'r2'] - ncam = N_elements(camnames) - - ;---------- - ; Select frames that match the cameras specified by DOCAM, then trim - ; to files that aren't names UNKNOWN, and that actually exist on disk. - - for ido=0, n_elements(docams)-1 do begin - ii = (where(camnames EQ docams[ido], camct))[0] - if (camct NE 1) then message, 'Non-unique camera ID: ' + docams[ido] - if (ido EQ 0) then icams = ii $ - else icams = [icams,ii] - endfor - - objname = allseq.name[icams] - - ; If all file names are UNKNOWN, then abort. - j = where(objname NE 'UNKNOWN') - if (j[0] EQ -1) then begin - splog, 'ABORT: All file names are UNKNOWN in plan file ' + thisplan - cd, origdir - return - endif - - ; Replace all UNKNOWN file names with nulls. - j = where(objname EQ 'UNKNOWN') - if (j[0] NE -1) then objname[j] = '' - - ; Replace all file names that do not exist on disk with nulls. - for ifile=0, n_elements(objname)-1 do $ - if (keyword_set(objname[ifile])) then $ - objname[ifile] = (lookforgzip(djs_filepath(objname[ifile], $ - root_dir=extractdir)))[0] - - ; Log missing files - planname = allseq.name[icams] - missing = where(objname eq '') - - if missing[0] ne -1 then $ - splog, 'Files not found on disk: ' + planname[missing] - - ; Now all the file names in ALLSEQ.NAME should exist or be set to null. - allseq.name[icams] = objname - - ;------------------------------- - ; For simplicity require data for all 4 cameras -- if this is not done - ; then some changes need to be made to "frame_flux_tweak" - fourcam = (allseq.name[0] ne '') + (allseq.name[2] ne '') + $ - (allseq.name[1] ne '') + (allseq.name[3] ne '') - missing1 = where(fourcam gt 0 and fourcam lt 4) - if missing1[0] ne -1 then allseq[missing1].name[*] = '' - - j = where(allseq.name[icams]) - if (j[0] EQ -1) then begin - splog, 'ABORT: No files on disk for plan file ' + thisplan - cd, origdir - return - endif - objname = (allseq.name[icams])[j] - - ;---------- - ; Separate science & smear frames - - isci = where(allseq.flavor EQ 'science', nsci) - ismear = where(allseq.flavor EQ 'smear') - - if (isci[0] EQ -1) then begin - splog, 'ABORT: No science frames in this plan ' + thisplan - cd, origdir - return - endif - - ;---------- - ; Check for Minimum S/N in science frame -- NEW: require min S/N for - ; all four frames of an exposure - - if keyword_set(minsn2) then begin - lowsn2 = fltarr(nsci) - - for i=0,nsci-1 do begin - checkhdr1 = headfits(allseq[isci[i]].name[0]) - checkhdr2 = headfits(allseq[isci[i]].name[1]) - checkhdr3 = headfits(allseq[isci[i]].name[2]) - checkhdr4 = headfits(allseq[isci[i]].name[3]) - if size(checkhdr1,/tname) NE 'INT' then begin - lowsn2[i] = (sxpar(checkhdr1,'FRAMESN2') LT minsn2) + $ - (sxpar(checkhdr2, 'FRAMESN2') LT minsn2) + $ - (sxpar(checkhdr3, 'FRAMESN2') LT minsn2) + $ - (sxpar(checkhdr4, 'FRAMESN2') LT minsn2) - endif - endfor - - goodexp = where(lowsn2 eq 0, ngood) - if ngood lt nsci then begin - splog, 'Excluded ', total(lowsn2), $ - ' frames with SN^2 less than ', minsn2, format='(a,i4,a,f7.2)' - endif - if ngood eq 0 then begin - splog, 'ABORT: All Frames rejected due to minimum S/N limit' - cd, origdir - return - endif - isci = isci[goodexp] - endif - - sciname = allseq[isci].name[icams] - j = where(sciname) - if j[0] EQ -1 then begin - splog, 'ABORT: No science frames in this plan ' + thisplan - cd, origdir - return - endif - sciname = sciname[j] - - ;---------------------------- - ; Check for existance of smear frames - - if (ismear[0] EQ -1) then begin - splog, 'No smear frames in this plan ' + thisplan - smearname = '' - endif else begin - smearname = allseq[ismear].name[icams] - j = where(smearname) - if j[0] EQ -1 then begin - splog, 'No smear frames in this plan ' + thisplan - smearname = '' - endif else smearname = smearname[j] - endelse - - ;---------- - ; Check that all files to be combined have the same plugmap - - nsci = n_elements(sciname) - mapname = strarr(nsci) - for i = 0, nsci - 1 do begin - checkhdr = headfits(sciname[i]) - mapname[i] = strtrim(sxpar(checkhdr, 'NAME'), 2) - endfor - diff = where(mapname ne mapname[0], ndiff) - if ndiff gt 0 then begin - splog, 'ABORT: Files have different plugmaps!!' - cd, origdir - return - endif - - ;---------- - ; Check for the presence of a new tsObj file - - tsobjname = djs_filepath('tsObj-' + mapname[0] + '.fit', $ - root_dir = extractdir) - if file_test(tsobjname) then begin - splog, 'Using fibermags from tsObj-' + mapname[0] - endif else begin - splog, 'No new tsObj found ... using fibermags from plugmap' - tsobjname = '' - endelse - - ;---------- - ; Co-add the fluxed exposures - - spcoadd_fluxed_frames, sciname, combinefile, mjd=thismjd, $ - combinedir=combinedir, fcalibprefix=fcalibprefix, adderr=adderr, $ - docams=docams, plotsnfile=plotsnfile, tsobjname = tsobjname, $ - smearname = smearname, best_exposure = best_exposure - - ;---------- - ; Close plot file - S/N plots are then put in the PLOTSNFILE file. - - if (keyword_set(plotfile) AND NOT keyword_set(xdisplay)) then begin - set_plot, 'x' - endif - - heap_gc ; garbage collection - - splog, 'Total time for SPCOMBINE = ', systime(1)-stime0, ' seconds', $ - format='(a,f6.0,a)' - splog, 'Successful completion of SPCOMBINE at ', systime() - - - ;---------- - ; Close log files and change to original directory - - if (keyword_set(logfile)) then splog, /close - cd, origdir - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/fluxfix/pca_flux_standard.pro b/pro/fluxfix/pca_flux_standard.pro deleted file mode 100644 index c987cb23a..000000000 --- a/pro/fluxfix/pca_flux_standard.pro +++ /dev/null @@ -1,155 +0,0 @@ -;+ -; NAME: -; pca_flux_standard -; -; PURPOSE: -; Solve for the mean flux-calibration vector of one camera + spectrograph -; using data from all available exposures. This is accomplished by matching -; the normalized standard star spectra to Kurucz models and then ratioing -; the spectrum (in counts) to the best fitting model (in units of -; ergs/s/cm^2/A) scaled to match the photo fiber mag. Because the individual -; exposures were taken under different conditions, the zeropoint of the -; flux calibration vectors from different exposures will be different. To -; eliminate this problem all of the vectors are normalized between -; 5700-6300 A. (The red/blue cameras sample different parts of this -; wavelength region.) The average flux correction vector is the first -; PCA eigenspectrum. -; -; CALLING SEQUENCE: -; pca_flux_standard, loglam, stdflux, stdivar, stdmask, stdinfo, [camid=, $ -; corvector=, corvivar=, cormed=, fcor=, fsig=, noplot=] -; -; INPUTS: -; loglam - wavelength in log10(Angstroms) of the input spectra [npix] -; stdflux - array of standard star spectra [npix, nstar*nexp] -; stdivar - inverse variance of standard star spectra [npix, nstar*nexp] -; stdmask - or mask of the standard star spectra [npix, nstar*exp] -; stdinfo - structure containing info about the best model fit produced by -; "stype_standard" -; -; OPTIONAL INPUTS: -; camid - string giving the camera id for plot titles -- i.e. 'b1' -; noplot - toggle plotting -; -; OUTPUT: -; A structure containing the coefficients of a spline fit the average -; flux correction vector (normalized at 5700-6300 A). -; -; Diagnostic plots are also produced. The flux correction vector produced -; from each high S/N standard is plotted in black; the mean of all the -; fluxcor vectors in green; and the bspline of the mean vector in red. -; -; OPTIONAL OUTPUTS: -; corvector - flux calibrations derived from the individual standard -; stars [npix, nstar*nexp] -; corvivar - inverse variance of flux calib vectors [npix, nstar*nexp] -; fcor - final flux correction vector [npix] (not spline fit) -; fsig - standard deviation of the flux calibration derived from -; individual stars about the final answer (scalar) -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; The Kurucz models we are using have not been fully tested. Do they -; yield reliable broad band fluxes at all T_eff & [Fe/H]?? -; -; The mean flux calib vector produced by the PCA sometimes shows abrupt -; jumps in flux -- this is somewhat mitigated by the spline fit. -; -; PROCEDURES CALLED: -; bspline_bkpts() -; bspline_iterfit() -; bspline_valu() -; djs_iterstat() -; djs_median() -; pca_solve -; skymask() -; spdata2model_ratio -; -; INTERNAL SUPPORT ROUTINES -; -; REVISION HISTORY: -; 12-Aug-2003 Split off corvector creation into "spdata2model" -; 22-Sep-2002 Revised to use Kurucz models by C. Tremonti, JHU -; 08-Sep-2000 Formerly newfluxcalib Written by D. Schlegel & S. Burles -;- -;------------------------------------------------------------------------------ - -function pca_flux_standard, loglam, stdflux, stdivar, stdmask, stdinfo, $ - camid, corvector = corvector, corvivar = corvivar, cormed = cormed, $ - fcor = fcor, fsig = fsig, noplot = noplot - - ; Compute ratio of data to model for each standard - corvector = spdata2model_ratio(loglam, stdflux, stdivar, stdmask, stdinfo, $ - corvivar = corvivar, cormed=cormed, /norm) - - nstd = n_elements(corvector[0,*]) - npix = n_elements(corvector[*,0]) - - ; chose same wavelengths for normalization as used for corvectors - wave = 10.0^loglam - norm_indx = where(wave gt 5700 and wave lt 6300 and $ - wave lt max(wave) - 200 and wave gt min(wave) + 200) - - ;--------------- - ; Now find the average of the vectors with iterative rejection - - pcaflux = pca_solve(corvector, corvivar, $ - niter=30, nkeep=1, usemask=usemask, eigenval=eigenval, $ - acoeff=acoeff, maxiter=5, upper=5, lower=5, $ - maxrej=ceil(0.01*npix), groupsize=ceil(npix/5.), /quiet) - - ; Demand that the first eigenspectrum is positive-valued. - ; (The routine PCA_SOLVE() can return a negative-valued spectrum even - ; if all the input spectra are positive-valued.) - if (median(pcaflux[*,0]) LT 0) then begin - pcaflux[*,0] = -pcaflux[*,0] - acoeff[0,*] = -acoeff[0,*] - endif - - ;fcor = pcaflux * median(acoeff) - fcor = pcaflux / djs_median(pcaflux[norm_indx]) - - ;-------------- - ; Measure the variance between the fluxcalib vectors derived - ; for each of the standard stars -- this is an indicator of the - ; spectrophotometric quality. - - djs_iterstat, corvector - rebin(fcor, npix, nstd), mean=fmean, $ - sigma=fsig, maxiter=3, sigrej=5 - - ;-------------- - ; Do the spline fit - - padbkpts = bspline_bkpts(loglam, nord=4, nbkpts=50, bkpt=bkpts, /silent) - - calibset = bspline_iterfit(loglam, fcor, nord=4, bkpt=bkpts, $ - upper=3, lower=3, maxrej=ceil(0.05*n_elements(fcor))) - - calibvector = bspline_valu(loglam, calibset) - - ;---------- - ; QA plot - - if keyword_set(noplot) then return, calibset - if not keyword_set(camid) then camid = '' - - djs_plot, [min(wave)-100,max(wave)+100], [0,1.1*max(corvector)], /nodata, $ - /xstyle, /ystyle, xtitle='\lambda [A]', $ - ytitle='Counts / (10^{-17}erg/cm^{2}/s/A)', $ - title = 'Average Spectrophoto Correction for ' + camid + ' Frames' - - for istd=0, nstd - 1 do oplot, wave, corvector[*,istd] - djs_oplot, wave, fcor, color='green', thick=3 - djs_oplot, wave, calibvector, color='red', thick=3 - djs_oplot, 10^bkpts, bspline_valu(bkpts,calibset), psym=4, color='red' - - ;xyouts, mean(wave) - 500, [0.9*max(corvector)], $ - ; 'Standard star variation = ' + string(fsig * 100, format='(I3)') + ' %' - - return, calibset - -end -;------------------------------------------------------------------------------ diff --git a/pro/fluxfix/rectify.pro b/pro/fluxfix/rectify.pro deleted file mode 100644 index d0bfdee4b..000000000 --- a/pro/fluxfix/rectify.pro +++ /dev/null @@ -1,82 +0,0 @@ -;+ -; NAME: -; rectify -; -; PURPOSE: -; Rectify spectra using a sliding median -; -; CALLING SEQUENCE: -; normflux = rectify(flux, [ivar, nivar=, mask=, wave=]) -; -; INPUTS: -; flux - flux vector [npix, nspec] -; -; OPTIONAL INPUTS: -; ivar - inverse variance -- needed if "nivar" is returned [npix, nspec] -; mask - if set then mask strong optical absorption feature before doing -; sliding median. (To do this "wave" must also be supplied.) -; On exit this keyword will hold a copy of the flux array with -; masked pixels set to NaN -; wave - wavelength vector in Angstroms -- only needed if "mask" is set -; -; OUTPUT: -; Rectified flux vector [npix, nspec] -; -; OPTIONAL OUTPUT: -; nivar - inverse variance of rectified flux [npix, nspec] -; -; COMMENTS: -; If mask is set 16 pixels around the folling lines are masked: -; H-delta, Ca_K, Ca_H, G-band, H-gamma H-beta, Mgb, H-alpha -; -; BUGS: -; Medianing is done in pixel space not wavelength space -- so for two spectra -; to be rectified in the same manner they must have identical wavelength -; sampling. -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; djs_median() -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 12-Aug-2003 Created by C. Tremonti, Steward Observatory -;- -;------------------------------------------------------------------------------ - -function rectify, flux, ivar, nivar = nivar, mask = mask, wave = wave - -ny = n_elements(flux[0,*]) -mflux = flux -nflux = flux * 0 -if keyword_set(ivar) then nivar = ivar * 0 - -if keyword_set(mask) and keyword_set(wave) then begin - - linectr = [3830.0, 3889.0, $ - ; H-delta, Ca_k, Ca_H, G-band, - 4101.7, 3933.7, 3968.5, 4300, 4310, $ - ; H-gamma H-beta, Mgb, H-alpha - 4340.5, 4861.3, 5153.0, 6562.8] - - for iline = 0, n_elements(linectr) - 1 do begin - wtindx = where(wave gt linectr[iline] - 16 and wave lt linectr[iline] + 16) - if wtindx[0] ne -1 then mflux[wtindx,*] = 'NaN' - endfor - mask = mflux -endif - -for y = 0, ny - 1 do begin -; smoothcont = smooth(djs_median(mflux[*,y], width = 250, $ - smoothcont = smooth(djs_median(mflux[*,y], width = 99, $ - boundary = 'reflect'), 25) - nflux[*,y] = flux[*,y] / smoothcont - if keyword_set(ivar) then nivar[*,y] = ivar[*,y] * smoothcont^2 -endfor - -return, nflux - -end - diff --git a/pro/fluxfix/smear_compare.pro b/pro/fluxfix/smear_compare.pro deleted file mode 100644 index 6ea5ad82e..000000000 --- a/pro/fluxfix/smear_compare.pro +++ /dev/null @@ -1,288 +0,0 @@ -;+ -; NAME: -; smear_compare -; -; PURPOSE: -; Ratio calibrated smear and science spectra and fit with a 3rd order -; polynomial. -; -; CALLING SEQUENCE: -; smearset = smear_compare(smearname, sciloglam, sciflux, sciivar, $ -; best_exp_str, plate_str, mjd_str, [camnames=, combinedir=, $ -; tsobjname=, nord=nord, adderr=, noplot=]) -; -; INPUTS: -; smearname - list of smear exposure names [nsmear * nexp] -; sciloglam - wavelength (log10 (A)) of calibrated science image [npix] -; sciflux - flux of fully calibrated science image [npix,nfiber] -; sciivar - inverse variance of calibrated science image [npix,nfiber] -; best_exp_str - string containing the exposure ID of the best science image. -; The fluxcalib vector from this image takes the place of the -; PCA average vector for the smear. -; plate_str - plate id -- used to reconstruct standard star FITS filename -; mjd_str - MJD -- used to reconstruct standard star FITS filename -; -; OUTPUT: -; A structure containing the median smear and science S/N and the -; Legendere coeff of the smear/sci flux ratio for each fiber is returned -; -; KEYWORDS: -; camnames - defaults to ['b1', 'b2', 'r1', 'r2'] -; combinedir - optional output directory -; tsobjname - full path name of tsobjfile -; nord - order of spline fit when combining exposures (defaults to 3) -; adderr - additional error to add to formal error -; noplot - toggle some of the plotting -; -; COMMENTS: -; The smear images are calibrated in a manner nearly identical to the -; calibration of the science images. The smear and science image are -; coarsely binned with locally deviant points rejected. The ratio -; (smear/sci) is fit with a 3rd order Legendre polynomial. The structure -; which is returned contains the Legendre coeff as well as the median S/N -; of the binned smear and science frames. The smear/sci ratio is probably -; meaningless for object with a S/N < 3 in the science image or < 1 in the -; smear. -; -; BUGS: -; The smear/science flux ratio is only meaningful for high S/N point -; sources!!!! -; -; EXAMPLES: -; To turn the coeff back into vectors do: -; -; smear_hdu = mrdfits('spPlate-0503-51999.fits', 8) -; smearset = {func: 'legendre', xmin: alog10(3800.0), xmax: alog10(9200.0), $ -; coeff: dblarr(3,640)} -; smearset.coeff = smear_hdu.legendre_coeff -; readspec, 503, mjd=51999, wave=wave -; traceset2xy, smearset, alog10(wave), sratio -; ok = where(smear_hdu.smear_sn gt 1 and smear_hdu.sci_sn gt 3) -; plot, wave[*,ok], sratio[*,ok], psym=3 -; -; PROCEDURES CALLED: -; bspline_valu -; combine1fiber -; divideflat -; djs_filepath -; djs_icolor -; djs_oplot -; djs_plot -; legend -; sphoto_calib -; splog -; spmedian_rebin -; spread_frames -; traceset2xy -; xy2traceset -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 12-Aug-2003 Created by C. Tremonti, Steward Observatory -;- -;------------------------------------------------------------------------------ - -function smear_compare, smearname, sciloglam, sciflux, sciivar, $ - best_exp_str, plate_str, mjd_str, noplot = noplot, $ - camnames = camnames, combinedir = combinedir, $ - tsobjname = tsobjname, nord=nord, adderr=adderr - - ;------------------------------------ - ; Read frame files into big 2-d array - - spread_frames, smearname, window=window, binsz = binsz, $ - adderr=adderr, camnames=camnames, tsobjname = tsobjname, $ - flux = flux, ivar = fluxivar, loglam = loglam, pixelmask = pixelmask, $ - plugtag = plugtag, camerasvec = camerasvec, expid = expid - - splog, 'Calibrating smear frames:', expid[uniq(expid)] - - ;--------------------------------------------- - ; Now determine the spectrophotometric solution - - if not keyword_set(camnames) then camnames = ['b1', 'b2', 'r1', 'r2'] - ncam = N_elements(camnames) - - ; Loop through cameras - for icam=0, ncam-1 do begin - camid = camnames[icam] - camcol = strmid(camnames[icam], 0,1) - specnum = strmid(camnames[icam], 1,1) - frames = expid[where(camerasvec eq camid)] - - ; File names for sphoto calibration inputs/outputs - fcalfiles = djs_filepath('spFluxcalib' + '-' + camid + '-' + $ - frames + '.fits', root_dir=combinedir) - - stdstarfile = djs_filepath('spStd-' + plate_str + '-' + mjd_str + $ - '-' + specnum + '.fits', root_dir=combinedir) - - avgcalfile = djs_filepath('spFluxcalib' + '-' + camid + '-' + $ - best_exp_str + '.fits', root_dir=combinedir) - - ;-------------------------------- - ; Use plugmap to find standard stars - - nobadmask = reform(qgoodfiber(pixelmask[0,*])) - - isphoto = where((strtrim(plugtag.objtype) EQ 'SPECTROPHOTO_STD' OR $ - strtrim(plugtag.objtype) EQ 'REDDEN_STD') AND $ - (plugtag.spectrographid eq specnum) AND $ - (plugtag.camcolor eq camcol) AND nobadmask, nstd) - - incalib = mrdfits(avgcalfile, 1) - - sphoto_calib, loglam[*,isphoto], flux[*,isphoto], fluxivar[*,isphoto], $ - pixelmask[*,isphoto], plugtag[isphoto], fcalfiles, $ - stdstarfile, input_calibset=incalib, noplot=noplot - - ;--------------------------------- - ; Apply sphoto calibration to all fibers in each frame - - for iframe = 0, n_elements(frames) - 1 do begin - - indx = where(plugtag.expid eq frames[iframe] AND $ - plugtag.camcolor eq camcol AND $ - plugtag.spectrographid eq specnum) - - junk = mrdfits(fcalfiles[iframe], 0, calibhdr, /silent) - calibset = mrdfits(fcalfiles[iframe], 1) - - cwavemin = sxpar(calibhdr, 'WAVEMIN') - cwavemax = sxpar(calibhdr, 'WAVEMAX') - calibfac = bspline_valu(loglam[*,indx], calibset) - - ; Set to bad any pixels whose wavelength is outside the known - ; flux-calibration region. - ibad = where(loglam[*,indx] LT alog10(cwavemin) OR $ - loglam[*,indx] GT alog10(cwavemax)) - if (ibad[0] NE -1) then calibfac[ibad] = 0 - - tempflux = flux[*,indx] - tempivar = fluxivar[*,indx] - - divideflat, tempflux, invvar=tempivar, calibfac, $ - minval=0.001*mean(calibfac) - - flux[*,indx] = tempflux - fluxivar[*,indx] = tempivar - pixelmask[*,indx] = pixelmask[*,indx] $ - OR (calibfac LE 0.001*mean(calibfac)) * pixelmask_bits('BADFLUXFACTOR') - endfor - endfor - - ;----------------------- - ; Combine frames - - nfinalpix = n_elements(sciloglam) - nfiber = max(plugtag.fiberid) - finalflux = fltarr(nfinalpix, nfiber) - finalivar = fltarr(nfinalpix, nfiber) - finalandmask = lonarr(nfinalpix, nfiber) - finalplugtag = replicate(plugtag[0], nfiber) - struct_assign, {fiberid: 0L}, finalplugtag - binsz = sciloglam[1] - sciloglam[0] - - splog, 'Combining smear exposures' - - for ifiber=0, nfiber-1 do begin - - ; Find the first occurrence of fiber number IFIBER+1 - indx = where(plugtag.fiberid EQ ifiber+1) - - if (indx[0] NE -1) then begin -; splog, 'Fiber', ifiber+1, ' ', plugtag[indx[0]].objtype, $ -; plugtag[indx[0]].mag, format = '(a, i4.3, a, a, f6.2, 5f6.2)' - - finalplugtag[ifiber] = plugtag[indx[0]] - temppixmask = pixelmask[*,indx] - - combine1fiber, loglam[*,indx], flux[*,indx], fluxivar[*,indx], $ - finalmask=temppixmask, andmask=bestandmask, $ - newloglam=sciloglam, newflux=bestflux, newivar=bestivar, $ - nord=nord, binsz=binsz, maxiter=50, upper=3.0, lower=3.0, maxrej=1 - - finalflux[*,ifiber] = bestflux - finalivar[*,ifiber] = bestivar - finalandmask[*,ifiber] = bestandmask - - endif else begin - splog, 'Fiber', ifiber+1, ' NO DATA' - finalandmask[*,ifiber] = pixelmask_bits('NODATA') - endelse - endfor - - ; Free memory - loglam = 0 - flux = 0 - fluxivar = 0 - - ;--------------------------------------------------------------------------- - ; Compare smear & final science image - ;--------------------------------------------------------------------------- - - loglam2d = sciloglam # replicate(1, nfiber) - - smear_medflux = spmedian_rebin(loglam2d, finalflux, finalivar, 'full', $ - outwave = medwave, sn = smear_sn, mask = smear_mask, $ - quality = smear_quality) - - sci_medflux = spmedian_rebin(loglam2d, sciflux, sciivar, 'full', $ - sn = sci_sn, mask = sci_mask, quality = sci_quality) - - ; Fit with 4th order Legendre polynomial - medwave2d = float(medwave) # replicate(1, nfiber) - - xy2traceset, medwave2d, smear_medflux, smearset, invvar=smear_mask, $ - ncoeff=3, inputfunc=sci_medflux, lower=3, upper=3 - - ; Save as binary table with science & smear S/N ratios - smear_struct = {sci_sn: 0.0, smear_sn: 0.0, legendre_coeff: fltarr(3)} - - smear_hdu = make_array(dim=nfiber, value=smear_struct) - smear_hdu.legendre_coeff = smearset.coeff - smear_hdu.sci_sn = sci_sn - smear_hdu.smear_sn = smear_sn - - ;--------------------------------------------------------------------------- - ; QA plot - ;--------------------------------------------------------------------------- - - ; Only use where science & smear have reasonable S/N - ok = sci_sn GT 3.0 AND smear_sn GT 1.0 AND $ - sci_quality EQ 0 AND smear_quality EQ 0 - traceset2xy, smearset, loglam2d, smear_ratio - - ;!P.MULTI = [0, 1, 2] - ;for i = 0, nfiber - 1 do begin - ; plot, 10.0^sciloglam, smooth(finalflux[*,i], 5), xr=[3800, 9200], /xs - ; djs_oplot, 10.0^sciloglam, smooth(sciflux[*,i], 5), color='red' - ; smsci = smooth(djs_median(sciflux[*,i], width=75), 25) - ; djs_oplot, 10.0^sciloglam, smsci * smear_ratio[*,i], color='green' - ;endfor - ;!P.MULTI = 0 - - ptsrc = where(strmatch(finalplugtag.objtype, '*GALAXY*') ne 1 and ok, nptsrc) - qso = where(strmatch(finalplugtag.objtype, '*QSO*') eq 1 and ok, nqso) - - wave=10.0^sciloglam - if not keyword_set(noplot) then begin - djs_plot, wave, smear_ratio[*,0], xr=[3800, 9200], /xs, $ - yr=[0, 2.5], /ys, xtitle = 'Wavelength', ytitle = 'Smear / Science', $ - title = 'Smear Correction Vectors for Point Sources', /nodata - for iobj = 0, nptsrc - 1 do $ - djs_oplot, wave, smear_ratio[*,ptsrc[iobj]], nsum=10, color='green' - for iobj = 0, nqso - 1 do $ - djs_oplot, wave, smear_ratio[*,qso[iobj]], nsum=10, color='blue' - djs_oplot, [2000, 10000], [1, 1], thick= 4 - legend, ['Quasars', 'Other Point Sources'], $ - color=djs_icolor(['blue', 'green']), psym=[0,0] - endif - - splog, 'Median smear correction for point sources: ' + $ - string(djs_median(smear_ratio[*,ptsrc]), format = '(F6.2)') - - return, smear_hdu - -end diff --git a/pro/fluxfix/spcoadd_fluxed_frames.pro b/pro/fluxfix/spcoadd_fluxed_frames.pro deleted file mode 100644 index f0c521952..000000000 --- a/pro/fluxfix/spcoadd_fluxed_frames.pro +++ /dev/null @@ -1,836 +0,0 @@ -;+ -; NAME: -; spcoadd_fluxed_frames -; -; PURPOSE: -; Combine reduced frames with the same plugmap and spectrophotometrically -; calibrate the output -; -; CALLING SEQUENCE: -; spcoadd_fluxed_frames, spframes, outputname, fcalibprefix=, [mjd=, $ -; binsz=, zeropoint=, nord=, wavemin=, window=, adderr=, docams=, $ -; plotsnfile=, combinedir=, tsobjname=, smearname=, best_exposure=] -; -; INPUTS: -; spframes - Names of files to combine (written by SPREDUCE) -; outputname - Output file name of the form spPlate-pppp-mmmmm.fits -; where pppp=plateid, mmmmm=MJD. -; -; REQUIRED KEYWORDS: -; fcalibprefix - Prefix for flux-calibration files. -; -; OPTIONAL KEYWORDS: -; mjd - The MJD to put in the output header -; binsz - Bin size (in log-10 wavelength) in output spectra; -; default to 1d-4, which corresponds to 69.02977415 km/s. -; zeropoint - Log10(lambda) zero-point of the output spectra; -; the output wavelength bins are chosen such that -; one bin falls exactly on this value; -; default to 3.5D, which corresponds to 3162.27766 Ang. -; nord - Order for spline fit; default to 3 (cubic spline). -; wavemin - Log-10 wavelength of first pixel in output spectra; -; default to the nearest bin to the smallest wavelength -; of the input spectra. -; window - Window size for apodizing the errors of the spectrum -; from each individual frame; default to 100 pixels -; apodization on each end of the spectrum. -; adderr - Additional error to add to the formal errors, as a -; fraction of the flux. -; combinedir - Optional output directory -; docams - Cameras to combine; default to ['b1', 'b2', 'r1', 'r2'] -; plotsnfile - File which will contain diagnostics of the final S/N -; and spectrophotometric quality -; tsobjname - Name of tsObj file. Fibermags used in setting spectrophoto -; zeropoints -- if tsObj not available fibermags are -; taken from the plugmap -; smearname - Names of frames containing data observed in "smear" mode. -; Polynomials describing the ratio of the calibrated smear -; and science image are written the the 8th HDU. -; best_exposure - Exposure ID of the exposure which all other exposures -; should be matched to. (string). If not set the "best" -; exposure is determined from the S/N and a measure of the -; spectrophotometric quality -; noxytweak - Allow correction for residual spectrophotometry errors -; as a funtion of plate xy position to be turned off -; -; OUTPUTS: -; A fully calibrated "spPlate" file is produced. The HDU's are as follows -; HDU #0: flux [npix, nfiber] -; HDU #1: inverse variance [npix, nfiber] -; HDU #2: and mask [npix, nfiber] -; HDU #3: or mask [npix, nfiber] -; HDU #4: dispersion [npix, nfiber] -; HDU #5: plugmap - structure [nfiber] -; HDU #6: S/N in g, r, i [3, nfiber] -; HDU #7: synthetic g, r, i mag [3, nfiber] -; HDU #8: smear coeffs -- structure [nfiber] -; -; OPTIONAL OUTPUTS: -; Diagnostic plots in "spDiagcomb-" and "spSN2d-" files -; -; COMMENTS: -; This routine can combine data from a single plug maps. -; All input files must have the same number of pixels per spectrum, -; i.e. 2048 wavelength samplings, although those wavelengths can -; be different. The spectrophotometry is now tied to Kurucz models. -; Two new structure tags are added to the plugmap "tsobj_mag" and "tsobjid" -; to track the tsobj info used in the reductions. -; -; EXAMPLES: -; -; BUGS: -; Should only apodize starting with the first/last good pixel of a spectrum. -; Probably will not work without data for all 4 cameras -; Mask bits should be looked at more carefully -; -; PROCEDURES CALLED: -; atmdisp_cor -; bspline_valu -; combine1fiber -; divideflat -; djs_diff_angle() -; djs_filepath() -; fibermask_bits -; frame_flux_calib -; frame_flux_tweak -; mkhdr -; modfits -; mrdfits() -; mwrfits -; pixelmask_bits() -; platesn -; smear_compare -; spdata2model_ratio -; sphoto_calib -; splog -; sxaddpar -; sxpar() -; traceset2xy -; writefits -; -; INTERNAL SUPPORT PROCEDURES: -; add_iraf_keywords -; qgoodfiber -; -; REVISION HISTORY: -; 12-Aug-2003 modified from "spcoadd_frames" by C. Tremonti, Steward Obs. -; 02-Jan-2000 spcoadd_frames written by D. Schlegel -;- -;------------------------------------------------------------------------------ - -pro add_iraf_keywords, hdr, wavemin, binsz - - sxaddpar, hdr, 'WAT0_001', 'system=linear' - sxaddpar, hdr, 'WAT1_001', $ - 'wtype=linear label=Wavelength units=Angstroms' - sxaddpar, hdr, 'CRVAL1', wavemin, $ - ' Central wavelength (log10) of first pixel' - sxaddpar, hdr, 'CD1_1', binsz, ' Log10 dispersion per pixel' - sxaddpar, hdr, 'CRPIX1', 1, ' Starting pixel (1-indexed)' - sxaddpar, hdr, 'CTYPE1', 'LINEAR' - sxaddpar, hdr, 'DC-FLAG', 1, ' Log-linear flag' - - return -end - -;------------------------------------------------------------------------------ - -function qgoodfiber, fibermask - qgood = ((fibermask AND fibermask_bits('NOPLUG')) EQ 0) $ - AND ((fibermask AND fibermask_bits('BADTRACE')) EQ 0) $ - AND ((fibermask AND fibermask_bits('BADFLAT')) EQ 0) $ - AND ((fibermask AND fibermask_bits('BADARC')) EQ 0) $ - AND ((fibermask AND fibermask_bits('MANYBADCOLUMNS')) EQ 0) $ - AND ((fibermask AND fibermask_bits('NEARWHOPPER')) EQ 0) $ - AND ((fibermask AND fibermask_bits('MANYREJECTED')) EQ 0) - return, qgood -end - -;------------------------------------------------------------------------------ - -pro spcoadd_fluxed_frames, spframes, outputname, fcalibprefix=fcalibprefix, $ - mjd=mjd, binsz=binsz, zeropoint=zeropoint, nord=nord, wavemin=wavemin, $ - window=window, adderr=adderr, $ - docams=camnames, plotsnfile=plotsnfile, combinedir=combinedir, $ - tsobjname = tsobjname, smearname = smearname, best_exposure = best_exposure, $ - noxytweak = noxytweak - - ;--------------------------------------------------------------------------- - - if (NOT keyword_set(binsz)) then binsz = 1.0d-4 $ - else binsz = double(binsz) - if (NOT keyword_set(zeropoint)) then zeropoint = 3.5D - if (n_elements(window) EQ 0) then window = 100 - if (NOT keyword_set(combinedir)) then combinedir='' - - ;---------- - ; Sort filenames such that this list contains first the blue then the red - - nfiles = n_elements(spframes) - if (nfiles EQ 0) then return - - filenames = spframes[sort(spframes)] - - if NOT keyword_set(camnames) then camnames = ['b1', 'b2', 'r1', 'r2'] - ncam = N_elements(camnames) - - ;------------------ - ; Get plate + mjd strings from input name - - words = strsplit(fcalibprefix, '-', /extract) - prefix = words[0] - words = strsplit(outputname, '-', /extract) - plate_str = words[1] - mjd_str = strmid(words[2], 0, 5) - - ;--------------------------------------------------------------------------- - ; Loop through each 2D output and read in the data - ;--------------------------------------------------------------------------- - - spread_frames, filenames, window=window, binsz = binsz, $ - adderr=adderr, camnames=camnames, tsobjname = tsobjname, $ - flux = flux, ivar = fluxivar, loglam = loglam, dispersion = dispersion, $ - pixelmask = pixelmask, plugmap = plugmap, plugtag = plugtag, $ - camerasvec = camerasvec, filenum = filenum, $ - expid = expid, sn2 = sn2, hdrarr = hdrarr, merged_hdr = hdr - - plugtag.plateid = plate_str - plugtag.mjd = mjd_str - - ;---------- - ; Check how many exposures we have in each of the (4) cameras - - for icam=0, ncam-1 do begin - junk = where(camerasvec EQ camnames[icam], nmatch) - splog, 'Files for camera ' + camnames[icam] + ':', nmatch - if (icam EQ 0) then nminfile = nmatch $ - else nminfile = nminfile < nmatch - endfor - if (nminfile LT 2) then begin - splog, 'ABORT: At least 2 files needed for each camera' - return - endif - - ;----------------------------------------------------------------------- - ; Do spectral typing of standards & derive sphoto correction for - ; each frame, then apply it - ;----------------------------------------------------------------------- - - sphoto_err = fltarr(n_elements(camerasvec)) - - ; Loop through cameras - for icam=0, ncam-1 do begin - camid = camnames[icam] - camcol = strmid(camnames[icam], 0,1) - specnum = strmid(camnames[icam], 1,1) - frames = expid[where(camerasvec eq camid)] - - ; Create output flux calibration file names - fcalfiles = djs_filepath(prefix + '-' + camid + '-' + frames + '.fits', $ - root_dir=combinedir) - stdstarfile = djs_filepath('spStd-' + plate_str + '-' + mjd_str + $ - '-' + specnum + '.fits', root_dir=combinedir) - - ;-------------------------------- - ; Use plugmap to find standard stars -- select only those standards with - ; no bad mask bits set - - nobadmask = reform(qgoodfiber(pixelmask[0,*])) - - isphoto = where((strtrim(plugtag.objtype) EQ 'SPECTROPHOTO_STD' OR $ - strtrim(plugtag.objtype) EQ 'REDDEN_STD') AND $ - (plugtag.spectrographid eq specnum) AND $ - (plugtag.camcolor eq camcol) AND nobadmask, nstd) - - if nstd eq 0 then begin - splog, 'ABORT: No good spectrophotometric standards found!' - return - endif - - ;--------------------------------- - ; Compute spectral types and write flux calibration vectors - - sphoto_calib, loglam[*,isphoto], flux[*,isphoto], fluxivar[*,isphoto], $ - pixelmask[*,isphoto], plugtag[isphoto], $ - fcalfiles, stdstarfile, stype = (camcol eq 'b') - - ;--------------------------------- - ; Apply sphoto calibration to all fibers in each frame - - for iframe = 0, n_elements(frames) - 1 do begin - - indx = where(plugtag.expid eq frames[iframe] AND $ - plugtag.camcolor eq camcol AND $ - plugtag.spectrographid eq specnum) - - junk = mrdfits(fcalfiles[iframe], 0, calibhdr, /silent) - calibset = mrdfits(fcalfiles[iframe], 1) - - ; Store measures of spectrophotometry error to use later in - ; deciding which exposure is the best - sphoto_err[where(camerasvec eq camid and expid eq frames[iframe])] $ - = sxpar(calibhdr, 'SPHOTERR') - - cwavemin = sxpar(calibhdr, 'WAVEMIN') - cwavemax = sxpar(calibhdr, 'WAVEMAX') - calibfac = bspline_valu(loglam[*,indx], calibset) - - ; Set to bad any pixels whose wavelength is outside the known - ; flux-calibration region. - ibad = where(loglam[*,indx] LT alog10(cwavemin) OR $ - loglam[*,indx] GT alog10(cwavemax)) - if (ibad[0] NE -1) then calibfac[ibad] = 0 - - tempflux = flux[*,indx] - tempivar = fluxivar[*,indx] - divideflat, tempflux, invvar=tempivar, calibfac, $ - minval=0.005*median(calibfac) - - flux[*,indx] = tempflux - fluxivar[*,indx] = tempivar - pixelmask[*,indx] = pixelmask[*,indx] OR (calibfac LE $ - 0.005*median(calibfac)) * pixelmask_bits('BADFLUXFACTOR') - endfor - endfor - - ;----------------------------------------------------------------------- - ; Correct each spectrum for exposure to exposure differences (formerly - ; using the smear exposure -- now using the best quality exposure) - ; Note -- this is done in blue-red pairs! - ;----------------------------------------------------------------------- - - iframe_b1 = where(plugtag.camcolor eq 'b' and plugtag.spectrographid eq 1) - iframe_r1 = where(plugtag.camcolor eq 'r' and plugtag.spectrographid eq 1) - iframe_b2 = where(plugtag.camcolor eq 'b' and plugtag.spectrographid eq 2) - iframe_r2 = where(plugtag.camcolor eq 'r' and plugtag.spectrographid eq 2) - - ;--------------- - ; Determine which exposure is best from the S/N and spectrophotometry errors - - ; add up the S/N^2 of the 4 frames per exposure (b1, b2, r1, r2) - sn_exp = sqrt(sn2[where(camerasvec eq 'b1')] + $ - sn2[where(camerasvec eq 'r1')] + $ - sn2[where(camerasvec eq 'b2')] + $ - sn2[where(camerasvec eq 'r2')]) - - ; add up the spectrophotometry errors for the 4 frames per exposure - sphoto_qual = (1 / sphoto_err)^2 - sphoto_exp = sqrt(sphoto_qual[where(camerasvec eq 'b1')] + $ - sphoto_qual[where(camerasvec eq 'r1')] + $ - sphoto_qual[where(camerasvec eq 'b2')] + $ - sphoto_qual[where(camerasvec eq 'r2')]) - - ; Pick the best exposure (want the same one for spec 1 & 2) - ; (Alternatively this could be passed as a parameter) - maxval = max(sn_exp/median(sn_exp) + $ - sphoto_exp/median(sphoto_exp), iframe_best) - uniqexp = expid[where(camerasvec eq 'b1')] - if not keyword_set(best_exposure) then best_exposure = uniqexp[iframe_best] - splog, 'Best Exposure is: ' + best_exposure - - ;------------------ - ; Compute the exposure-to-exposure corrections (1/fiber) - - corrfiles1 = 'spFluxcorr-' + uniqexp + '-1.fits' - corrfiles2 = 'spFluxcorr-' + uniqexp + '-2.fits' - - frame_flux_tweak, loglam[*, iframe_b1], loglam[*, iframe_r1], $ - flux[*, iframe_b1], flux[*, iframe_r1], $ - fluxivar[*, iframe_b1], fluxivar[*, iframe_r1], $ - best_exposure, plugtag[iframe_b1], corrfiles1 - - frame_flux_tweak, loglam[*, iframe_b2], loglam[*, iframe_r2], $ - flux[*, iframe_b2], flux[*, iframe_r2], $ - fluxivar[*, iframe_b2], fluxivar[*, iframe_r2], $ - best_exposure, plugtag[iframe_b2], corrfiles2 - - ; save the magnitude of this correction? -- goodness of spec photo? - ; COADD_QUALITY ==> sigma of poly1 coeff - - ;-------------------------------------- - ; Read back the corrections and apply - - ; Loop through each exposure & camera - for iexp = 0, n_elements(expid) - 1 do begin - corrfile = 'spFluxcorr-' + expid[iexp] + '-' + $ - strmid(camerasvec[iexp], 1, 1) + '.fits' - corrset = mrdfits(corrfile, 1) - - indx = where(plugtag.expid eq expid[iexp] AND $ - plugtag.camcolor eq strmid(camerasvec[iexp], 0, 1) AND $ - plugtag.spectrographid eq strmid(camerasvec[iexp], 1, 1)) - - traceset2xy, corrset, loglam[*,indx], corrimg - - ; Don't let the flux correction be more than a factor of 10!! - invertcorr = 1.0 / corrimg - tempflux = flux[*,indx] - tempivar = fluxivar[*,indx] - divideflat, tempflux, invvar=tempivar, invertcorr, minval=0.1 - - flux[*,indx] = tempflux - fluxivar[*,indx] = tempivar - pixelmask[*,indx] = pixelmask[*,indx] OR $ - (corrimg GE 10) * pixelmask_bits('BADFLUXFACTOR') - pixelmask[*,indx] = pixelmask[*,indx] OR $ - (corrimg LE 0.1) * pixelmask_bits('BADFLUXFACTOR') - - endfor - - ;--------------------------------------------------------------------------- - ; Construct output data structures, including the wavelength scale - ;--------------------------------------------------------------------------- - - totalpix = (size(flux, /dimens))[0] - - nonzero = where(fluxivar GT 0.0) - minfullwave = min(loglam[nonzero]) - maxfullwave = max(loglam[nonzero]) - - ; Get max and min wavelength from good pixels - - if (NOT keyword_set(wavemin)) then begin - spotmin = long((minfullwave - zeropoint)/binsz) + 1L - spotmax = long((maxfullwave - zeropoint)/binsz) - wavemin = spotmin * binsz + zeropoint - wavemax = spotmax * binsz + zeropoint - endif else begin - spotmin = 0L - if (NOT keyword_set(wavemax)) then begin - spotmax = long((maxfullwave - wavemin)/binsz) - wavemax = spotmax * binsz + wavemin - endif else spotmax = long((wavemax - wavemin)/binsz) - endelse - - nfinalpix = spotmax - spotmin + 1L - finalloglam = dindgen(nfinalpix) * binsz + wavemin - finalwave = 10.0^finalloglam - - nfiber = max(plugmap.fiberid) - - finalflux = fltarr(nfinalpix, nfiber) - finalivar = fltarr(nfinalpix, nfiber) - finalandmask = lonarr(nfinalpix, nfiber) - finalormask = lonarr(nfinalpix, nfiber) - finaldispersion = fltarr(nfinalpix, nfiber) - finalplugmap = replicate(plugmap[0], nfiber) - struct_assign, {fiberid: 0L}, finalplugmap ; Zero out all elements in this - ; FINALPLUGMAP structure. - - finalplugtag = replicate(plugtag[0], nfiber) - struct_assign, {fiberid: 0L}, finalplugtag - - ;---------- - ; Issue a warning about any object fibers with OBJTYPE = 'NA', which - ; should be impossible, but the special plate 673 and possibly others - ; had some such fibers. - - ibad = where(strtrim(plugmap.objtype,2) EQ 'NA', nbad) - if (nbad GT 0) then $ - splog, 'WARNING: ', nbad, ' fibers have OBJTYPE=NA in the plug-map' - - ;--------------------------------------------------------------------------- - ; Combine each fiber, one at a time - ;--------------------------------------------------------------------------- - - for ifiber=0, nfiber-1 do begin - - ; Find the first occurance of fiber number IFIBER+1 - indx = where(plugmap.fiberid EQ ifiber+1) - - if (indx[0] NE -1) then begin - splog, 'Fiber', ifiber+1, ' ', plugmap[indx[0]].objtype, $ - plugmap[indx[0]].mag, format = '(a, i4.3, a, a, f6.2, 5f6.2)' - - finalplugmap[ifiber] = plugmap[indx[0]] - finalplugtag[ifiber] = plugtag[indx[0]] - - ; DJS groups by RA/DEC -- not needed b/c we require identical plugmaps - ;adist = djs_diff_angle(plugmap.ra, plugmap.dec, $ - ;plugmap[indx].ra, plugmap[indx].dec, units='degrees') - ;indx = where(adist LT 2./3600. AND strtrim(plugmap.objtype,2) NE 'NA') - - temppixmask = pixelmask[*,indx] - - combine1fiber, loglam[*,indx], flux[*,indx], fluxivar[*,indx], $ - finalmask=temppixmask, indisp=dispersion[*,indx], $ - newloglam=finalloglam, newflux=bestflux, newivar=bestivar, $ - andmask = bestandmask, ormask=bestormask, newdisp=bestdispersion, $ - nord=nord, binsz=binsz, maxiter=50, upper=3.0, $ - lower=3.0, maxrej=1 - - finalflux[*,ifiber] = bestflux - finalivar[*,ifiber] = bestivar - finalandmask[*,ifiber] = bestandmask - finalormask[*,ifiber] = bestormask - finaldispersion[*,ifiber] = bestdispersion - - ; The following adds the COMBINEREJ bit to the input pixel masks - pixelmask[*,indx] = temppixmask - - ;------------- - ; QA plot - - ;set_plot, 'x' - - ;plot, finalwave, bestflux, xr=[3800, 9200], /xs - ;for ii = 0, n_elements(indx) - 1 do $ - ; djs_oplot, 10.0^loglam[*,indx[ii]], djs_median(flux[*,indx[ii]], $ - ; width=75, boundary='reflect'), color='red' - - endif else begin - splog, 'Fiber', ifiber+1, ' NO DATA' - finalandmask[*,ifiber] = pixelmask_bits('NODATA') - finalormask[*,ifiber] = pixelmask_bits('NODATA') - endelse - endfor - - ;------------- - ; Clear memory - - loglam = 0 - flux = 0 - fluxivar = 0 - temppixmask = 0 - dispersion = 0 - - ;--------------------------------------------------------------------------- - ; Add some new tags to the plugmap to track the tsObj info used - ;--------------------------------------------------------------------------- - - newplug_struct = create_struct(finalplugmap[0], 'tsobjid', lonarr(5), $ - 'tsobj_mag', fltarr(5), 'ebv_sfd', 0.0) - newplug = make_array(val=newplug_struct, dim=nfiber) - struct_assign, finalplugmap, newplug - newplug.tsobjid = finalplugtag.tsobjid - newplug.tsobj_mag = finalplugtag.mag - finalplugmap = newplug - - ;--------------------------------------------------------------------------- - ; Remove residual spectrophotometry errors as a function of plate - ; x/y position - ;--------------------------------------------------------------------------- - - splog, 'Correcting for spectrophotometry residuals' - - ; Use the header of the best image (the one the others get tied to in - ; "frame_flux_tweak") to determine the airmass/seeing of the atmospheric - ; dispersion correction - - besthdr = *hdrarr[(where(expid eq best_exposure))[0]] - surfgr_sig = fltarr(2) - modelgr_sig = fltarr(2) - modelgr_off = fltarr(2) - - ; Do this separately for spectrographs 1 & 2 - for specnum = 1, 2 do begin - - ispec = where(finalplugtag.spectrographid eq specnum, nspec) - sid_str = strtrim(specnum, 2) - title_tag = 'Plate: ' + plate_str + ' MJD: ' + mjd_str + $ - ' Spec: ' + sid_str - - ; Allow this step to be turned off - if not keyword_set(noxytweak) then begin - atmdisp_model = atmdisp_cor(finalloglam, finalflux[*,ispec], $ - finalplugtag[ispec], besthdr, title = title_tag, surfgr_sig=xysig) - - surfgr_sig[specnum - 1] = xysig - tempflux = finalflux[*,ispec] - tempivar = finalivar[*,ispec] - divideflat, tempflux, invvar=tempivar, atmdisp_model, minval=0.2 - finalflux[*,ispec] = tempflux - finalivar[*,ispec] = tempivar - endif - - ;--------------------------------------------------------------------------- - ; Check the final spectrophotometry of the standards against the models. - ; In particular, find wiggles near the dichroic and correct for them. - ;--------------------------------------------------------------------------- - - ; Identify standards - stdstarfile = djs_filepath('spStd-' + plate_str + '-' + mjd_str + $ - '-' + sid_str + '.fits', root_dir=combinedir) - stdinfo = mrdfits(stdstarfile, 1) - - ; Measure the difference in (g-r) color of the reddened models & photo - gr_obs = stdinfo.mag[1] - stdinfo.mag[2] - gr_mod = stdinfo.red_model_mag[1] - stdinfo.red_model_mag[2] - djs_iterstat, gr_mod - gr_obs, sigrej = 5, sigma=grsig, mean=groff - modelgr_sig[specnum - 1] = grsig - modelgr_off[specnum - 1] = groff - - ; Do this correction only if the S/N is good - ok = where(stdinfo.sn gt 20 and abs(stdinfo.v_off) lt 450 and $ - stdinfo.mag[2] gt 0, nok) - if nok ge 3 then begin - stdinfo = stdinfo[ok] - isphoto = stdinfo.fiberid - 1 - - ;--------------------- - ; Compute ratio of data/model for each good standard - - corvector = spdata2model_ratio(finalloglam, finalflux[*,isphoto], $ - finalivar[*,isphoto], finalormask[*,isphoto], $ - stdinfo, corvivar = corvivar) - - ; Normalize the flux correction vectors to the center of guiding - ; (or the r-band?) - ;normwave = where(finalwave gt 5600 and finalwave lt 6900) - ;normwave = where(finalwave gt 4200 and finalwave lt 5400) - cormed = fltarr(nok) + 1 - ;for istd = 0, nok - 1 do $ - ; cormed[istd] = median(corvector[normwave, istd]) - ;djs_iterstat, cormed, mean=cormean - ;corvector = corvector / (cormed ## replicate(1, nfinalpix)) * cormean - - ;-------------- - ; Look at the residuals over the whole wavelength range (This can be - ; done by using the frame_flux_calib code with "final" switch set -- - ; this turns off the division of the corvectors by an average spectrum - - residset = frame_flux_calib(finalloglam, corvector, corvivar, 0, $ - cormed, framename = title_tag, /fit_wiggles, $ - fsig = fsig, /final) - - splog, 'Spectrophotometry error for spectrograph ' + sid_str + $ - ' (from the standards): ' + string(fsig * 100, format = '(I4)') + ' %' - - ;------------------- - ; Correct for wiggles - - residcor = bspline_valu(finalloglam, residset) ; Mean of Data / Models - residcor = residcor # replicate(1, nspec) - - tempflux = finalflux[*,ispec] - tempivar = finalivar[*,ispec] - divideflat, tempflux, invvar=tempivar, residcor, minval=0.5 - - finalflux[*,ispec] = tempflux - finalivar[*,ispec] = tempivar - endif else begin - splog, 'WARNING: Too few spectrophoto standards with good S/N' - splog, 'No residual flux correction for spectrograph ' + sid_str - endelse - endfor - - ;-------------------------------------------------------------------------- - ; Measure the difference between the combined science and smear spectra - ;-------------------------------------------------------------------------- - - if keyword_set(smearname) then begin - - smear_hdu = smear_compare(smearname, finalloglam, finalflux, finalivar, $ - best_exposure, plate_str, mjd_str, camnames = camnames, adderr=adderr, $ - combinedir = combinedir, tsobjname = tsobjname, /noplot) - - endif else begin - smear_struct = {sci_sn: 0.0, smear_sn: 0.0, legendre_coeff: fltarr(3)} - smear_hdu = make_array(dim=nfiber, value=smear_struct) - splog, 'No smear exposures found!' - endelse - - ;--------------------------------------------------------------------------- - ; Correct objects for foregound Milky Way dust using SFD Maps - ;--------------------------------------------------------------------------- - - dustdir = getenv('DUST_DIR') - if keyword_set(dustdir) then $ - dustmaps = file_test(dustdir + '/maps/SFD_dust_4096_ngp.fits') $ - else dustmaps = 0 - - if dustmaps then begin - ; Get values of E(B-V) for each ra/dec from SFD maps - glactc, finalplugtag.ra, finalplugtag.dec, 2000, gall, galb, 1, /degre - ebv_sfd = dust_getval(gall, galb, ipath = dustdir + '/maps/', /interp) - finalplugmap.ebv_sfd = ebv_sfd - - ; Deredden the flux and ivar - use O'donnel extinction curve - A_v = 3.1 * ebv_sfd - a_odonnell = ext_odonnell(10.0^finalloglam, 3.1) - e_tau = exp(a_odonnell # A_v / 1.086) - finalflux = finalflux * e_tau - finalivar = finalivar / e_tau^2 - - endif else begin - splog, 'WARNING!!!! Foreground Dust correction NOT applied' - ebv_sfd = 0.0 - endelse - - - ;--------------------------------------------------------------------------- - ; Generate S/N plots - ;--------------------------------------------------------------------------- - - ; Use plugtag instead of the plugmap b/c this contains updated - ; fibermags from the tsObj (if available) - - ;save, /all, filename = 'snplot_test.sav' - - platesn, finalflux, finalivar, finalandmask, finalplugtag, finalloglam, $ - hdr=hdr, plotfile=djs_filepath(plotsnfile, root_dir=combinedir), $ - snvec=snvec, synthmag=synthmag, ebv_sfd = ebv_sfd - - ;--------------------------------------------------------------------------- - ; Add to the output header - ;--------------------------------------------------------------------------- - - ;---------- - ; Use the MJD passed as a keyword, which will typically be for the most - ; observation, and be consistent with the output file names - - if (keyword_set(mjd)) then sxaddpar, hdr, 'MJD', mjd - - ;---------- - ; Add new header cards - - sxaddpar, hdr, 'SPCOADD', systime(), ' SPCOADD finished', after='EXPTIME' - sxaddpar, hdr, 'NWORDER', 2, ' Linear-log10 coefficients' - sxaddpar, hdr, 'WFITTYPE', 'LOG-LINEAR', ' Linear-log10 dispersion' - sxaddpar, hdr, 'COEFF0', wavemin, $ - ' Central wavelength (log10) of first pixel' - sxaddpar, hdr, 'COEFF1', binsz, ' Log10 dispersion per pixel' - - sxaddpar, hdr, 'NAXIS1', n_elements(bestflux) - sxaddpar, hdr, 'NAXIS2', nfiber - - spawn, 'uname -n', uname - sxaddpar, hdr, 'UNAME', uname[0] - - ;---------- - ; Check for smear exposure used and place info in header - - ;smearused = total((finalandmask AND pixelmask_bits('SMEARIMAGE')) NE 0) $ - ; GT 0 ? 'T' : 'F' - smearused = keyword_set(smearname) ? 'T' : 'F' - sxaddpar, hdr, 'SMEARUSE', smearused, ' Smear available?' - - ;---------- - ; Check for tsObj and place info in header - - if keyword_set(tsobjname) then begin - words = strsplit(tsobjname, '/', /extract) - tsfile = words[n_elements(words) - 1] - endif else tsfile = '' - sxaddpar, hdr, 'TSOBJNAM', tsfile, ' Name of tsObj file used' - - ;----------- - ; Check for SFD maps - - dustmapstf = dustmaps ? 'T' : 'F' - sxaddpar, hdr, 'SFD_USED', (dustmaps ? 'T':'F'), ' SFD dust maps used?' - sxaddpar, hdr, 'FDUSTCOR', (dustmaps ? 'T':'F'), ' Corrected for ' + $ - 'foreground MW dust?' - if dustmaps then medebv = median(ebv_sfd) else medebv = -9999 - sxaddpar, hdr, 'MED_EBV ', medebv, ' Median E(B-V) from SFD' - - ;------------ - ; Keyword describing the sigma of the surface fit to the (g-r) residuals - ; A big # indicates that lots of 'tilt' had to be taken out by the - ; atmdisp_cor procedure - - sxaddpar, hdr, 'XYGRSIG1', surfgr_sig[0], $ - ' Sigma of (g-r) offsets as a fcn of plate x/y' - sxaddpar, hdr, 'XYGRSIG2', surfgr_sig[1], $ - ' Sigma of (g-r) offsets as a fcn of plate x/y' - - ;------------ - ; Keywords describing the difference in (g-r) of the reddened models - ; and the photometry - - sxaddpar, hdr, 'MPGROFF1', modelgr_off[0], $ - ' Mean of (g-r)_model - (g-r)_photo of Spec 1' - sxaddpar, hdr, 'MPGRSIG1', modelgr_sig[0], $ - ' Sigma of (g-r)_model - (g-r)_photo Spec 1' - sxaddpar, hdr, 'MPGROFF2', modelgr_off[1], $ - ' Mean of (g-r)_model - (g-r)_photo of Spec 2' - sxaddpar, hdr, 'MPGRSIG2', modelgr_sig[1], $ - ' Sigma of (g-r)_model - (g-r)_photo Spec 2' - - ;---------- - ; Compute the fraction of bad pixels in total, and on each spectrograph. - ; Bad pixels are any with SKYMASK(INVVAR)=0, excluding those where - ; the NODATA bit is set in the pixel mask. - - ifib1 = where(finalplugtag.spectrographid EQ 1, nfib1) - ifib2 = where(finalplugtag.spectrographid EQ 2, nfib2) - qbadpix = skymask(finalivar, finalandmask, finalormask) EQ 0 $ - AND (finalandmask AND pixelmask_bits('NODATA')) EQ 0 - if (nfib1 GT 0) then $ - fbadpix1 = total(qbadpix[*,ifib1]) / (nfib1 * nfinalpix) - if (nfib2 GT 0) then $ - fbadpix2 = total(qbadpix[*,ifib2]) / (nfib2 * nfinalpix) - if (nfib1 GT 0 AND nfib2 GT 0) then $ - fbadpix = total(qbadpix[*,[ifib1,ifib2]]) / ((nfib1+nfib2) * nfinalpix) $ - else if (nfib1 GT 0) then $ - fbadpix = fbadpix1 $ - else if (nfib2 GT 0) then $ - fbadpix = fbadpix1 $ - else $ - fbadpix = 0 - - sxaddpar, hdr, 'FBADPIX', fbadpix, ' Fraction of bad pixels' - sxaddpar, hdr, 'FBADPIX1', fbadpix1, ' Fraction of bad pixels on spectro-1' - sxaddpar, hdr, 'FBADPIX2', fbadpix2, ' Fraction of bad pixels on spectro-2' - - ;---------- - ; Add keywords for IRAF-compatability - - add_iraf_keywords, hdr, wavemin, binsz - - mkhdr, hdrfloat, finalivar, /image, /extend - add_iraf_keywords, hdrfloat, wavemin, binsz - - mkhdr, hdrlong, finalandmask, /image, /extend - add_iraf_keywords, hdrlong, wavemin, binsz - - ;--------------------------------------------------------------------------- - ; Write combined output file - ;--------------------------------------------------------------------------- - - fulloutname = djs_filepath(outputname, root_dir=combinedir) - - ; 0st HDU is flux - sxaddpar, hdr, 'BUNIT', '1E-17 erg/cm^2/s/Ang' - mwrfits, finalflux, fulloutname, hdr, /create - - ; 1nd HDU is inverse variance - sxaddpar, hdrfloat, 'BUNIT', '1/(1E-17 erg/cm^2/s/Ang)^2' - mwrfits, finalivar, fulloutname, hdrfloat - - ; 2rd HDU is AND-pixelmask - mwrfits, finalandmask, fulloutname, hdrlong - - ; 3th HDU is OR-pixelmask - mwrfits, finalormask, fulloutname, hdrlong - - ; 4th HDU is dispersion map - sxaddpar, hdrfloat, 'BUNIT', 'pixels' - mwrfits, finaldispersion, fulloutname, hdrfloat - - ; 5th HDU is plugmap - mwrfits, finalplugmap, fulloutname - - ; 6th HDU are S/N vectors for g,r,i - mwrfits, snvec, fulloutname - - ; 7th HDU are synthetic magnitude vectors - mwrfits, synthmag, fulloutname - - ; 8th HDU are the legendre coefficients of the smear correction vectors - ; (a binary table) - mwrfits, smear_hdu, fulloutname - - ;--------------------------------------------------------------------------- - ; Write the modified pixel masks to the input files - ;--------------------------------------------------------------------------- - -; for ifile=0, nfiles-1 do begin -; splog, 'Modifying file #', ifile, ': ', filenames[ifile] -; indx = where(filenum EQ ifile) -; djs_modfits, filenames[ifile], pixelmask[*,indx], exten_no=2 -; endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/fluxfix/spdata2model_ratio.pro b/pro/fluxfix/spdata2model_ratio.pro deleted file mode 100644 index 51b10bb5c..000000000 --- a/pro/fluxfix/spdata2model_ratio.pro +++ /dev/null @@ -1,143 +0,0 @@ -;+ -; NAME: -; spdata2model_ratio -; -; PURPOSE: -; Construct flux correction vectors by ratioing the observed spectra of -; standard stars to Kurucz models of the appropriate spectral type and -; smoothing the result. -; -; CALLING SEQUENCE: -; corvector = spdata2model_ratio(loglam, stdflux, stdivar, stdmask, -; stdinfo, corvivar=, cormed=, /norm) -; -; INPUTS: -; loglam -- wavelength array in log10(Angstroms) [npix] -; stdflux -- array of standard star fluxes [npix, nstd] -; stdivar -- inverse variance of standard star fluxes [npix, nstd] -; stdmask -- ormask of standard star spectra [npix, nstd] -; (used to mask sky residuals) -; stdinfo -- structure containing information about which Kurucz model -; is to be used with each standard star [nstd]. (This is the -; output of "stype_standard".) -; -; OPTIONAL INPUT: -; norm -- normalize the vectors before returning them (between -; 5700 - 6300 A -- avoiding the last 200 pixels before the -; dichroic) -; -; OUTPUT: -; Vectors which represent the smoothed ratio of (data/model) for each -; standard star. [npix, nstd] -; -; OPTIONAL OUTPUT: -; corvivar - inverse variance corresponding to each flux correction vector. -; [npix, nstd] -; cormed - median of each flux correction vector between 5700 and 6300 A -; (but avoiding the 200 pixels nearest the dichroic) [nstd] -; -; COMMENTS: -; For each standard star the best fit Kurucz model (as determined by -; "stype_standard") is restored, redshifted, and linearly interpolated to -; match the wavelength grid of the data. Each model is then reddened -; using the SDF reddening at the RA/DEC of the standard star and the -; extinction curve used by SFD (O'donnell). -; -; BUGS: -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; divideflat -; djs_maskinterp -; djs_median() -; ext_odonnell -; filter_thru() -; kurucz_restore -; linterp -; skymask() -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 12-Aug-2003 Create by C. Tremonti, Steward Observatory -;- -;------------------------------------------------------------------------------ - -function spdata2model_ratio, loglam, stdflux, stdivar, stdmask, stdinfo, $ - corvivar = corvivar, cormed = cormed, norm = norm - - ;-------------- - ; Read in Kurucz model files - - kurucz_restore, kwave, kflux, kindx = kindx - - ;------------------- - ; Mask out bad pixels and regions dominated by sky-sub residuals - - ;stdivar = skymask(stdivar, 0, stdmask, ngrow=3) ; Does this help??? - stdflux = djs_maskinterp(stdflux, stdivar EQ 0, iaxis=0, /const) - - ;----------------- - ; Compute the flux correction vector from the ratio of model/data - - cspeed = 2.99792458e5 - npix = n_elements(stdflux[*,0]) - nstd = n_elements(stdflux[0,*]) - corvector = fltarr(npix, nstd) - corvivar = fltarr(npix, nstd) - cormed = fltarr(nstd) - wave = 10.0^loglam - - for istd=0, nstd-1 do begin - model_index = (where(kindx.model eq stdinfo[istd].model))[0] - kwave_full = kwave*(1 + stdinfo[istd].v_off/cspeed) - kflux_full = kflux[*,model_index] - linterp, kwave_full, kflux_full, wave, kfluxi - - ;------------ - ; Get extinction from SFD maps - - A_v = 3.1 * stdinfo[istd].e_bv_sfd - a_odonnell = ext_odonnell(wave, 3.1) - red_kflux = kfluxi * exp(-1 * a_odonnell * A_v / 1.086) - - ;------------- - ; Get zeropoint from phot fiber mag - - ; choose guiding center as either r band (2) or g (1) - scalefactor = 10.0^(-0.4 * (stdinfo[istd].mag[2] - $ - stdinfo[istd].red_model_mag[2])) - red_kflux = red_kflux * scalefactor / 1e-17 - - ;----------- - ; Divide star flux in counts by model flux in erg/s/cm^2/A - - fluxvect = stdflux[*,istd] - fluxvivar = stdivar[*,istd] - divideflat, fluxvect, invvar=fluxvivar, red_kflux, minval = 0.1 - - ;----------- - ; Smooth the flux vector to reduce noise (do we need to smooth invar?) - - fluxvect = djs_median(fluxvect, width = 75, boundary = 'reflect') - corvector[*,istd] = smooth(fluxvect, 25, /NAN) - corvivar[*, istd] = fluxvivar - - ;----------- - ; Normalize in the dichroic region but avoiding the exact edges - - norm_indx = where(wave gt 5700 and wave lt 6300 and $ - wave lt max(wave) - 200 and wave gt min(wave) + 200) - - cormed[istd] = djs_median(corvector[norm_indx,istd]) - - if keyword_set(norm) then begin - corvector[*,istd] = corvector[*,istd] / cormed[istd] - corvivar[*, istd] = corvivar[*,istd] * cormed[istd]^2 - endif - endfor - - return, corvector -end -;------------------------------------------------------------------------------ diff --git a/pro/fluxfix/sphoto_calib.pro b/pro/fluxfix/sphoto_calib.pro deleted file mode 100644 index 9925e87bf..000000000 --- a/pro/fluxfix/sphoto_calib.pro +++ /dev/null @@ -1,252 +0,0 @@ -;+ -; NAME: -; sphoto_calib -; -; PURPOSE: -; Derive spectrophotometric calibration for a group of exposures from -; one camera + spectrograph -; -; CALLING SEQUENCE: -; sphoto_calib, wave, flux, invvar, mask, plugtag, fcalfile, $ -; stdstarfile, [/stype, input_calibset=, /noplot] -; -; INPUTS: -; wave - wavelength array in log10(ang) [npix, nstd*nexp] -; flux - flux array of standard stars [npix, nstd*nexp] -; invvar - inverse variance of standard stars [npix, nstd*nexp] -; mask - pixel masks of standard stars [npix, nstd*nexp] -; plugtag - structure containing plugmap info + exposure identification -; fcalfile - vector of names for flux calibration FITS files [nexp] -; Traditionally spFluxcalib-cc-eeeeeeee.fits where cc is the -; camera id (b1,b2,r1,r2) and eeeeeeee is the exposure number -; stdstarfile - name of FITS file containing standard star info -- if -; "stype" is set, this is created. Traditionally the names -; are spStd-pppp-mmmmm-s.fits where pppp=plateid, -; mmmmmm=MJD, and s = spectrograph ID [1/2] -; -; OPTIONAL INPUT: -; stype - if set spectral type the standard stars (for this to -; work the frames must be blue!!) -; input_calibset - use this as the average flux correction (instead of -; using PCA to determine the average) This is typically -; done done for the smear exposures since their S/N is low. -; noplot - toggle plotting of flux correction residuals -- the -; PCA average is always shown -; -; OUTPUT: -; The bspline coefficients of the average flux calibration vectors -; of each exposure are written out as FITS files (using the names in -; fcalfile). If "stype" is set, info about the standard stars (Teff, -; [Fe/H], velocity, etc) is saved as a binary FITS structure in the -; file given by "stdstarfile". -; -; OPTIONAL OUTPUT: -; -; COMMENTS: -; Frames from the blue camera should be processed first, because the -; spectral typing requires blue wavelengths. -; -; BUGS: -; The PCA code is run (and plots are made) even if the output is not used. -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; bspline_iterfit -; bspline_valu -; combine1fiber -; djs_maskinterp -; djs_median -; frame_flux_calib -; mrdfits -; pca_flux_standard -; rectify -; skymask -; stype_standard -; splog -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 12-Aug-2003 Created by C. Tremonti, Steward Observatory -;- -;------------------------------------------------------------------------------ - -pro sphoto_calib, wave, flux, invvar, mask, plugtag, fcalfile, stdstarfile, $ - stype = stype, input_calibset = input_calibset, noplot = noplot - - ; Double check that all spectra are from 1 camera + spectrograph - camid = plugtag.camcolor + strtrim(plugtag.spectrographid, 2) - if n_elements(uniq(camid)) gt 1 then begin - splog, 'ABORT: Camera mismatch in spectrophotometric calibration!' - return - endif else camid = camid[0] - - ;----------------------------------------- - ; Figure out frame, fiber, & pixel dimensions - ; Note, we assume we are only combining 1 plugmap - - npix = n_elements(flux[*,0]) - nspec = n_elements(flux[0,*]) - fibers = plugtag[uniq(plugtag.fiberid, sort(plugtag.fiberid))].fiberid - nfibers = n_elements(fibers) - frames = plugtag[uniq(plugtag.expid, sort(plugtag.expid))].expid - nframes = n_elements(frames) - - ;---------------------------------------------------------------------------- - ; Put everything on a common wavelength grid - ;---------------------------------------------------------------------------- - - if wave[0,0] lt wave[npix-1,0] then endpix=[0,npix-1] else endpix=[npix-1,0] - wavemin = max(wave[endpix[0],*]) - wavemax = min(wave[endpix[1],*]) - dloglam = 1.0d-4 - - nnewpix = round((wavemax - wavemin) / dloglam) - newwave = findgen(nnewpix) * dloglam + wavemin ; units are log-lambda - wave2d = rebin(newwave, nnewpix, nspec) - newflux = fltarr(nnewpix, nspec) - newivar = fltarr(nnewpix, nspec) - newmask = fltarr(nnewpix, nspec) - - for ispec = 0, nspec - 1 do begin - - combine1fiber, wave[*,ispec], flux[*,ispec], invvar[*,ispec], $ - finalmask=mask[*,ispec], newloglam=newwave, newflux=fluxi, $ - newivar=invvari, ormask=maski, binsz=dloglam - - ;------------------- - ; Mask out bad pixels and regions dominated by sky-sub residuals - ;invvari = skymask(invvari, 0, maski, ngrow =3) ; Does this help?? - fluxi = djs_maskinterp(fluxi, (invvari EQ 0), iaxis=0, /const) - - newflux[*,ispec] = fluxi - newivar[*,ispec] = invvari - newmask[*,ispec] = maski - endfor - - ;---------------------------------------------------------------------------- - ; If the frames are blue, spectral type the standards - ;---------------------------------------------------------------------------- - - if keyword_set(stype) then begin - - ;----------------------------------------- - ; Rectify spectra and combine frames for each fiber - - avgflux = fltarr(nnewpix, nfibers) - avginvar = fltarr(nnewpix, nfibers) - plug1 = replicate(plugtag[0], nfibers) - struct_assign, {fiberid: 0L}, plug1 ; Zero all elements - - for ifib = 0, nfibers - 1 do begin - indx = where(plugtag.fiberid eq fibers[ifib]) - plug1[ifib] = plugtag[indx[0]] - flux1fib = rectify(newflux[*,indx], newivar[*,indx], nivar = invar1fib) - - combine1fiber, wave2d[*,indx], flux1fib, invar1fib, $ - finalmask = newmask[*,indx], newloglam=newwave, newflux=avgflux1fib, $ - newivar=avginvar1fib, maxiter=50, upper=3.0, lower=3.0, maxrej=1, $ - binsz=dloglam - - avgflux[*,ifib] = avgflux1fib - avginvar[*,ifib] = avginvar1fib - endfor - - ;----------------------------------------- - ; Spectral type the averaged fibers - - stdinfo = stype_standard(newwave, avgflux, avginvar, plug1, $ - outfile = stdstarfile) - - endif - - ;---------------------------------------------------------------------------- - ; Read back standard star info and expand to match the full list of spectra - ;---------------------------------------------------------------------------- - - stdinfo = mrdfits(stdstarfile, 1) - stdinfo_all = make_array(val = stdinfo[0], dim = nspec) - struct_assign, {fiberid: 0L}, stdinfo_all ; Zero out all elements - - for ispec = 0, nspec -1 do begin - fiber_match = where(stdinfo.fiberid eq plugtag[ispec].fiberid) - if fiber_match[0] ne -1 then stdinfo_all[ispec] = stdinfo[fiber_match] - ; Unmatched fibers will occur if the blue side had bad fibers (bad trace, - ; etc) but the red side was ok -- these will have S/N of zero so get - ; eliminated in the next step - endfor - - ;--------------------- - ; Chose high S/N spectra (otherwise spectral typing is likely to be - ; wrong). The velocity cut (hopefully) eliminates galaxies and - ; other things that accidentally get targeted - - ok = where(stdinfo_all.sn gt 20 and abs(stdinfo_all.v_off) lt 450 and $ - stdinfo_all.mag[2] gt 0, nok) - nok = nok / nframes - if nok lt 3 then begin - splog, 'WARNING: Too few spectrophoto standards with good S/N' - splog, 'Proceeding anyway!' - ok = where(stdinfo_all.sn gt 10 and abs(stdinfo_all.v_off) lt 450 and $ - stdinfo_all.mag[2] gt 0, nok) - nok = nok / nframes - endif - if nok lt 3 then begin - splog, 'WARNING: Too few spectrophoto standards!!!' - splog, 'Proceeding anyway!' - ok = where(stdinfo_all.sn gt 0 and stdinfo_all.mag[2] gt 0, nok) - nok = nok / nframes - endif else begin - splog, 'Using ' + string(nok, format='(I2)') + ' spectrophoto standards' - endelse - - ;---------------------------------------------------------------------------- - ; Compute the average spectrophotometric calibration from all frames - ;---------------------------------------------------------------------------- - - pca_calibset = pca_flux_standard(newwave, newflux[*,ok], newivar[*,ok], $ - newmask[*,ok], stdinfo_all[ok], camid, corvector = corvector, $ - corvivar = corvivar, cormed = cormed) - - ; If desired, replace PCA average with normalized input calibset - ; (This option is used for smears) - if keyword_set(input_calibset) then begin - input_calibfac = bspline_valu(newwave, input_calibset) - iwave = 10.0^newwave - norm_indx = where(iwave gt 5700 and iwave lt 6300 and $ - iwave lt max(iwave) - 200 and $ - iwave gt min(iwave) + 200) - input_calibfac = input_calibfac / djs_median(input_calibfac[norm_indx]) - avgcalibset = bspline_iterfit(newwave, input_calibfac, $ - bkpt = input_calibset.fullbkpt, nord = 4) - endif else avgcalibset = pca_calibset - - ;---------------------------------------------------------------------------- - ; Compute the spectrophoto calibration separately for each frame - ;---------------------------------------------------------------------------- - - for iframe = 0, nframes - 1 do begin - indx = where(plugtag[ok].expid eq frames[iframe], nindx) - - ; check to be sure that fluxcalib output name matches frame ID - if not strmatch(fcalfile[iframe], '*' + frames[iframe] + '*') then begin - splog, 'ABORT: Fluxcalib file names do not match frame names' - return - endif - - ; compute the median S/N of the sphot fibers in the frame - sn = newflux[*,ok[indx]] * sqrt(newivar[*,ok[indx]]) - good = where(newivar[*,ok[indx]] ne 0) - medsn = median(sn[good]) - - ; Find the median of the low and hi-frequency components of the - ; corvectors separately -- use the hi-f part only if the S/N is good - frame_calibset = frame_flux_calib(newwave, corvector[*,indx], $ - corvivar[*,indx], avgcalibset, cormed[indx], framename = $ - 'Frame ' + camid + '-' + frames[iframe], fit_wiggles = (medsn gt 12), $ - outfile = fcalfile[iframe], fsig = fsig, noplot = noplot) - - endfor - -end diff --git a/pro/fluxfix/spmedian_rebin.pro b/pro/fluxfix/spmedian_rebin.pro deleted file mode 100644 index b99613f61..000000000 --- a/pro/fluxfix/spmedian_rebin.pro +++ /dev/null @@ -1,118 +0,0 @@ -;+ -; NAME: -; spmedian_rebin -; -; PURPOSE: -; Coarsely rebin the data using medians to reject outliers -; -; CALLING SEQUENCE: -; medflux = spmedian_rebin(loglam, flux, ivar, color, mask=, sigrej=, $ -; outwave=, sn=, quality=) -; -; INPUTS: -; loglam - wavelength array in log10(Angstroms) [npix, nfiber] -; flux - flux array [npix, nfiber] -; ivar - inverse variance [npix, nfiber] -; color - choices are 'r' (data from red camera) 'b' (data from blue camera) -; or 'full' (data from both cameras combined -- for use with smears) -; -; OPTIONAL KEYWORDS: -; sigrej - threshold for masking of data (scalar) -; -; OUTPUTS: -; A rebinned version of the input flux spectrum is returned. [nnewpix, nfiber] -; -; OPTIONAL OUTPUTS: -; mask - The approximate inverse variance of the output spectrum (set -; to zero for bad pix). [nnewpix, nfiber] -; outwave - output wavelength scale in log10(Angstroms) [nnewpix] -; sn - median S/N prior to rebinning [nfiber] -; quality - flag set to zero for good data, one if bad trace/arc/flat, etc -; [nfiber] -; -; COMMENTS: -; Used when division of low S/N spectra is necessary. See "frame_flux_tweak" -; and "smear_compare". -; -; EXAMPLES: -; plot, 10.0^loglam[*,0], flux[*,0] -; medflux = spmedian_rebin(loglam, flux, ivar, 'full', outwave=outwave) -; oplot, 10.0^outwave, medflux[*,0] -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_iterstat() -; djs_median() -; fibermaks_bits() -; -; REVISION HISTORY: -; 12-Aug-2003 Split into stand-alone function by C. Tremonti -; 17-Oct-2000 Formerly part of fluxcorr_new -- written by S. Burles -;- -;------------------------------------------------------------------------------ - -function spmedian_rebin, loglam, flux, ivar, color, mask=mask, sigrej=sigrej, $ - outwave = outwave, sn = sn, quality = quality - - if NOT keyword_set(sigrej) then sigrej = 20.0 - - ;--------- - ; Define new wavelength sampling - - if color eq 'r' then begin - w1 = findgen(54)*4.0e-3 + 3.756 - w2 = findgen(54)*4.0e-3 + w1[1] - endif - if color eq 'b' then begin - w1 = findgen(60)*4.0e-3 + 3.568 - w2 = findgen(60)*4.0e-3 + w1[1] - endif - if color eq 'full' then begin - w1 = findgen(96)*4.0e-3 + 3.568 - w2 = findgen(96)*4.0e-3 + w1[1] - endif - range = transpose([[w1],[w2]]) - outwave = djs_median(range,1) - - ;-------------------------- - ; Set up vectors for output - nr = (size(range))[2] - ntrace = (size(flux))[2] - fit = fltarr(nr, ntrace) - mask = fltarr(nr, ntrace) - - ;-------------------------- - ; Do iterative rejection on each bin of each fiber - - for itrace=0,ntrace-1 do begin - for irange = 0, nr -1 do begin - inside = where(loglam[*,itrace] GE range[0,irange] $ - AND loglam[*,itrace] LT range[1,irange], ninside) - if ninside GT 0 then begin - good = where(ivar[inside,itrace] GT 0, ngood) - - if ngood GT 1 then begin - djs_iterstat, flux[inside[good],itrace], median=md, sigma=sig - fit[irange, itrace] = md - if ngood GT 0.5 * ninside then $ - mask[irange, itrace] = total(ivar[inside[good],itrace]) - sn = sig * sqrt(mask[irange, itrace]) - if sn GT sigrej OR sn LE 0 then mask[irange, itrace] = 0.0 - endif - endif - endfor - endfor - - sn = djs_median(flux * sqrt(ivar),1) - - badval = ( fibermask_bits('NOPLUG') OR fibermask_bits('BADTRACE') $ - OR fibermask_bits('BADFLAT') OR fibermask_bits('BADARC') $ - OR fibermask_bits('NEARWHOPPER') ) - - quality = (mask[0,*] AND badval) - - return, fit -end - -;------------------------------------------------------------------------------ diff --git a/pro/fluxfix/spread_frames.pro b/pro/fluxfix/spread_frames.pro deleted file mode 100644 index 04e7cc7b2..000000000 --- a/pro/fluxfix/spread_frames.pro +++ /dev/null @@ -1,407 +0,0 @@ -;+ -; NAME: -; spread_frames -; -; PURPOSE: -; Read in multiple frame files produced by spectro2d and pass back arrays -; of the various quantities. -; -; CALLING SEQUENCE: -; spread_frames, spframes, [window=, binsz =, adderr=, camnames=, $ -; tsobjname=, flux=, ivar=, loglam=, dispersion=, pixelmask=, plugmap=, $ -; plugtag=, camerasvec=, filenum=, expid=, sn2=, hdrarr=, merged_hdr=] -; -; INPUTS: -; spframes - -; -; OPTIONAL INPUT KEYWORDS: -; window - window size for apodizing the errors of the spectrum from each -; individual frame -- default to 100 pixels on each end of the -; spectrum -; binsz - bin size (in log10(ang) of the output spectra; default to -; 1d-4 which is 69 km/s -; adderr - additional error to add to the formal errors as a fraction -; of the flux -; camnames - camera names to combine -- default to ['b1', 'b2', 'r1', 'r2'] -; -; tsobjname - full path name to tsobjfile if one is available. It is -; assumed that the target info is in HDU#1 and the latest -; photo re-run is in HDU#2 -; -; OUTPUT: -; -; OPTIONAL OUTPUT: -; flux - flux array from all frames [npix, nfiber*nfames] -; ivar - inverse variance array from all frames [npix, nfiber*nframes] -; loglam - wavelength array (log10(Ang)) [npix, nfiber*nframes] -; dispersion - instrumental resolution array [npix, nfiber*nfrmes] -; pixelmask - mask array [npix, nfiber*nframes] -; plugmap - array of structures containing plugmap [nfiber*nframes] -; plugtag - like plugmap but with newer tsObj info if available and with -; exposure ID info included (useful for bookkeeping) -; camerasvec - vector of camera IDs (b1,b2,r1,r2) [nframes] -; filenum - file number of frame (used in bookkeeping) [nfiber*nframes] -; expid - exposure ID number [nframes] -; sn2 - signal-to-noise squared of each frame [nframes] -; hdrarr - array of pointers to header files from each frame [nframes] -; merged_hdr - header to be used for combined frames (some quantities -; keywords contain averages of the keywords in the frames) -; -; COMMENTS: -; -; BUGS: -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; correct_dlam -; djs_diff_angle -; mrdfits -; pixelmask_bits() -; splog -; sxaddpar -; sxcombinepar -; sxdelpar -; traceset2xy -; idlspec2d_version -; -; INTERNAL SUPPORT ROUTINES: -; makelabel() -; -; REVISION HISTORY: -; 12-Aug-2003 Made into a stand-alone routine by C. Tremonti, Steward Obs. -; 02-Jan-2000 Written as part of "spcoadd_frames" by D. Schlegel, Princeton -; -;- -;------------------------------------------------------------------------------ - -function makelabel, hdr - - camera = strtrim(sxpar(hdr, 'CAMERAS'),2) - mjd = strtrim(string(sxpar(hdr, 'MJD')),2) - expos = strtrim(string(sxpar(hdr, 'EXPOSURE')),2) - flat = strmid(sxpar(hdr, 'FLATFILE'),6,9) - arc = strmid(sxpar(hdr, 'ARCFILE'),6,9) - - label = string(camera, "-", mjd, "-", expos, flat, arc, $ - format='(a2,a1,i5.5,a1,i8.8,a9,a9)') - - return, label -end - -;----------------------------------------------------------------------------- - -pro spread_frames, spframes, window=window, binsz = binsz, $ - adderr=adderr, camnames=camnames, tsobjname = tsobjname, $ - flux = flux, ivar = ivar, loglam = loglam, dispersion = dispersion, $ - pixelmask = pixelmask, plugmap = plugmap, plugtag = plugtag, $ - camerasvec = camerasvec, filenum = filenum, expid = expid, sn2 = sn2, $ - hdrarr = hdrarr, merged_hdr = merged_hdr - - ;--------------------------------------------------------------------------- - - if (n_elements(window) EQ 0) then window = 100 - - nfiles = n_elements(spframes) - if (nfiles EQ 0) then return - - if NOT keyword_set(camnames) then camnames = ['b1', 'b2', 'r1', 'r2'] - ncam = N_elements(camnames) - exptimevec = fltarr(ncam) - - plugtag_struct = {plateid: 0, mjd: 0, fiberid: 0, $ - ra: 0.0, dec: 0.0, mag: fltarr(5), $ - xfocal: 0.0, yfocal: 0.0, objtype: ' ', $ - camcolor: ' ', spectrographid: 0, expid: ' ', $ - tsobjid: lonarr(5)} - - ;----------------- - ; Read in tsObjfile -- assume target info in HDU#1, new info in HDU#2 - - if keyword_set(tsobjname) then tsobj = mrdfits(tsobjname, 2) - - ;--------------------------------------------------------------------------- - ; Loop through each 2D output and read in the data - ;--------------------------------------------------------------------------- - - for ifile=0, nfiles-1 do begin - - ;---------- - ; Read in all data from this input file. - ; Reading the plug-map structure will fail if its structure is - ; different between different files. - - splog, 'Reading file #', ifile, ': ', spframes[ifile] - tempflux = mrdfits(spframes[ifile], 0, hdr) - tempivar = mrdfits(spframes[ifile], 1) - temppixmask = mrdfits(spframes[ifile], 2) - - ; Zero out the following four mask bits - bitval = pixelmask_bits('COMBINEREJ') + pixelmask_bits('SMEARIMAGE') + $ - pixelmask_bits('SMEARHIGHSN') + pixelmask_bits('SMEARMEDSN') - - temppixmask = temppixmask AND (NOT bitval) - - tempwset = mrdfits(spframes[ifile], 3) - tempdispset = mrdfits(spframes[ifile], 4) - tempplug = mrdfits(spframes[ifile], 5, structyp='PLUGMAPOBJ') - if (NOT keyword_set(tempflux)) then $ - message, 'Error reading file ' + spframes[ifile] - - if (ifile EQ 0) then $ - hdrarr = ptr_new(hdr) $ - else $ - hdrarr = [hdrarr, ptr_new(hdr)] - - thismjd = sxpar(hdr, 'MJD') - if (NOT keyword_set(mjdlist)) then mjdlist = thismjd $ - else mjdlist = [mjdlist, thismjd] - - ;---------- - ; Add an additional error term equal to ADDERR of the flux. - - if (keyword_set(adderr)) then begin - gmask = tempivar NE 0 ; =1 for good points - tempivar = 1.0 / ( 1.0/(tempivar + (1-gmask)) $ - + (adderr * (tempflux>0))^2 ) * gmask - endif - - ;---------- - ; Read header info - - cameras = strtrim(sxpar(hdr, 'CAMERAS'),2) - expstr = string(sxpar(hdr, 'EXPOSURE'), format='(i8.8)') - framesn2 = sxpar(hdr, 'FRAMESN2') - - ;---------- - ; Solve for wavelength and lambda-dispersion at each pixel in the image - - traceset2xy, tempwset, junk, temploglam - traceset2xy, tempdispset, junk, tempdispersion - - ;---------- - ; Here is the correct conversion from pixels to log-lambda dispersion. - ; We are converting from the dispersion in units of spFrame pixel sizes - ; to the dispersion in units of the new rebinned pixel size, which is - ; BINSZ in log-lambda units. - - correct_dlam, tempdispersion, 0, tempwset, dlam=binsz, /inverse - - ;---------- - - dims = size(tempflux, /dimens) - npix = dims[0] - nfib = dims[1] - - ;---------- - ; Make a map of the size of each pixel in delta-(log10-Angstroms), - ; and re-normalize the flux to ADU/(dloglam) - - correct_dlam, tempflux, tempivar, tempwset, dlam=binsz - - ;---------- - ; Determine if this is a blue or red spectrum - - icam = (where(cameras EQ camnames))[0] - if (icam EQ -1) then $ - message, 'Unknown camera ' + cameras - exptimevec[icam] = exptimevec[icam] + sxpar(hdr, 'EXPTIME') - - ;---------- - ; Apodize the errors - ; Do this only for the dichroic overlap region, which are the first - ; rows in both the blue and red CCD's. - - if (keyword_set(window)) then begin - swin = window < npix - indx = lindgen(swin) - tempivar[indx,*] = tempivar[indx,*] * (indx # replicate(1,nfib)) / swin - endif - - ;------------------------ - ; Build structure like plugmap to carry all important tags - - tempplugtag = make_array(dim = nfib, val = plugtag_struct) - struct_assign, tempplug, tempplugtag - tempplugtag.plateid = 0 ; Fill in later! - tempplugtag.mjd = 0 ; Fill in later! - tempplugtag[*].camcolor = strmid(cameras, 0, 1) - tempplugtag.expid = expstr - ; spectrograph ID (1/2) is reset b/c it is -1 for unmapped fiberse - tempplugtag[*].spectrographid = strmid(cameras, 1, 1) - - ;--------------- - ; Match tsObj to plugmap and update plugtag structure with fibermags - ; from the tsObj - - if keyword_set(tsobjname) then begin - tsobjid = [[tsobj.run], [tsobj.rerun], [tsobj.camcol], $ - [tsobj.field], [tsobj.id]] - - for ifib = 0, nfib - 1 do begin - adist = djs_diff_angle(tsobj.ra, tsobj.dec, $ - tempplugtag[ifib].ra, tempplugtag[ifib].dec, $ - units='degrees') - match = where(adist LT 2./3600) - - ; No match will be found for unmapped fibers so set mags to zero - if match[0] ne -1 then begin - tempplugtag[ifib].mag = tsobj[match].fibercounts - tempplugtag[ifib].tsobjid = tsobjid[match,*] - endif else begin - splog, 'Fiber mags set to zero for unmapped fiber: ', $ - tempplugtag[ifib].fiberid - tempplugtag[ifib].mag = [0,0,0,0,0] - endelse - endfor - endif - - ;---------- - ; Concatenate data from all images - - if (ifile EQ 0) then begin - flux = tempflux - ivar = tempivar - loglam = temploglam - dispersion = tempdispersion - pixelmask = temppixmask - - camerasvec = cameras - label = makelabel(hdr) - filenum = lonarr(nfib) + ifile - plugmap = tempplug - expid = expstr - sn2 = framesn2 - plugtag = tempplugtag - endif else begin - ; Append as images... - flux = [[flux], [tempflux]] - ivar = [[ivar], [tempivar]] - loglam = [[loglam], [temploglam]] - dispersion = [[dispersion], [tempdispersion]] - pixelmask = [[pixelmask], [temppixmask]] - - ; Append as vectors... - camerasvec = [camerasvec, cameras] - label = [label, makelabel(hdr)] - filenum = [filenum, lonarr(nfib) + ifile] - plugmap = [plugmap, tempplug] - expid = [expid, expstr] - sn2 = [sn2, framesn2] - plugtag = [plugtag, tempplugtag] - endelse - endfor - - ;--------------------------------------------------------------------------- - ; Create header for combined frames - ;--------------------------------------------------------------------------- - - ; Modify the 1st file's header to use for the combined plate header. - - merged_hdr = *hdrarr[0] - - ;---------- - ; Remove header cards that were specific to this first exposure - ; (where we got the header). - - ncoeff = sxpar(merged_hdr, 'NWORDER') - for i=2, ncoeff-1 do sxdelpar, merged_hdr, 'COEFF'+strtrim(string(i),2) - - sxdelpar, merged_hdr, ['SPA', 'IPA', 'IPARATE'] - sxdelpar, merged_hdr, 'EXPOSURE' - sxdelpar, merged_hdr, 'SEQID' - sxdelpar, merged_hdr, 'DARKTIME' - sxdelpar, merged_hdr, 'CAMERAS' - sxdelpar, merged_hdr, 'PLUGMAPO' - for i=1, 4 do sxdelpar, merged_hdr, 'GAIN'+strtrim(string(i),2) - for i=1, 4 do sxdelpar, merged_hdr, 'RDNOISE'+strtrim(string(i),2) - sxdelpar, merged_hdr, ['CAMCOL', 'CAMROW'] - sxdelpar, merged_hdr, ['AMPLL', 'AMPLR', 'AMPUL', 'AMPUR'] - sxdelpar, merged_hdr, ['FFS', 'FF', 'NE', 'HGCD'] - sxdelpar, merged_hdr, ['SPEC1', 'SPEC2'] - sxdelpar, merged_hdr, 'NBLEAD' - sxdelpar, merged_hdr, 'PIXFLAT' - sxdelpar, merged_hdr, 'PIXBIAS' - sxdelpar, merged_hdr, 'FLATFILE' - sxdelpar, merged_hdr, 'ARCFILE' - sxdelpar, merged_hdr, 'OBJFILE' - sxdelpar, merged_hdr, 'FRAMESN2' - - ;---------- - ; Average together some of the fields from the individual headers. - ; CT -- Weight by S/N^2 since this is the effective weighting of the - ; exposures when they are combined - - cardname = [ 'AZ', 'ALT', 'TAI', 'WTIME', 'AIRTEMP', 'DEWPOINT', $ - 'DEWDEP', 'DUSTA', 'DUSTB', 'DUSTC', 'DUSTD', 'GUSTS', 'HUMIDITY', $ - 'HUMIDOUT', 'PRESSURE', 'WINDD', 'WINDS', 'TEMP01', 'TEMP02', $ - 'TEMP03', 'TEMP04', 'HELIO_RV', 'V_RAD', 'SEEING20', 'SEEING50', 'SEEING80', $ - 'RMSOFF20', 'RMSOFF50', 'RMSOFF80', 'XCHI2', 'SKYCHI2', $ - 'WSIGMA', 'XSIGMA', 'AIRMASS'] - - sxcombinepar, hdrarr, cardname, merged_hdr, func='average', weights=sn2 - - sxcombinepar, hdrarr, 'TAI-BEG', merged_hdr, func='min' - sxcombinepar, hdrarr, 'TAI-END', merged_hdr, func='max' - - sxcombinepar, hdrarr, 'XCHI2', merged_hdr, func='max', outcard='XCHI2MAX', $ - after='XCHI2' - sxcombinepar, hdrarr, 'XCHI2', merged_hdr, func='min', outcard='XCHI2MIN', $ - after='XCHI2' - - sxcombinepar, hdrarr, 'SKYCHI2', merged_hdr, func='max', $ - outcard='SCHI2MAX', after='SKYCHI2' - sxcombinepar, hdrarr, 'SKYCHI2', merged_hdr, func='min', $ - outcard='SCHI2MIN', after='SKYCHI2' - - sxcombinepar, hdrarr, 'WSIGMA', merged_hdr, func='max', outcard='WSIGMAX', $ - after='WSIGMA' - sxcombinepar, hdrarr, 'WSIGMA', merged_hdr, func='min', outcard='WSIGMIN', $ - after='WSIGMA' - - sxcombinepar, hdrarr, 'XSIGMA', merged_hdr, func='max', outcard='XSIGMAX', $ - after='XSIGMA' - sxcombinepar, hdrarr, 'XSIGMA', merged_hdr, func='min', outcard='XSIGMIN', $ - after='XSIGMA' - - ; Add the NGUIDE keywords for all headers of one flavor of CAMERAS - ; (e.g., for all the 'b1' exposures if the first frame is 'b1'.) - - cardname = 'NGUIDE' - sxcombinepar, hdrarr[0], cardname, merged_hdr, func='total' - cameras0 = sxpar(*(hdrarr[0]), 'CAMERAS') - for ihdr=1, n_elements(hdrarr)-1 do begin - if (sxpar(*(hdrarr[ihdr]), 'CAMERAS') EQ cameras0) then $ - sxcombinepar, hdrarr[ihdr], cardname, merged_hdr, func='total' - endfor - - ;---------- - ; Get the list of MJD's used for these reductions, then convert to a string - ; The header keyword MJD will be that of the first exposure (this can - ; be changed later if desired) - - mjdlist = mjdlist[uniq(mjdlist, sort(mjdlist))] - mjdlist = strtrim(strcompress(string(mjdlist,format='(99a)')),2) - sxaddpar, merged_hdr, 'MJDLIST', mjdlist, after='MJD' - - ;---------- - ; Add new header cards - - sxaddpar, merged_hdr, 'VERSCOMB', idlspec2d_version(), $ - ' Version of idlspec2d for combining multiple spectra', after='VERS2D' - sxaddpar, merged_hdr, 'NEXP', nfiles, $ - ' Number of exposures in this file', before='EXPTIME' - for ifile=0,nfiles-1 do $ - sxaddpar, merged_hdr, string('EXPID',ifile, format='(a5,i2.2)'), $ - label[ifile], ' ID string for exposure '+strtrim(string(ifile),2), $ - before='EXPTIME' - - sxaddpar, merged_hdr, 'EXPTIME', min(exptimevec), $ - ' Minimum of exposure times for all cameras' - for icam=0, ncam-1 do $ - sxaddpar, merged_hdr, 'EXPT_'+camnames[icam], exptimevec[icam], $ - ' '+camnames[icam]+' camera exposure time (seconds)', before='EXPTIME' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/fluxfix/stype_standard.pro b/pro/fluxfix/stype_standard.pro deleted file mode 100644 index f5d6613d6..000000000 --- a/pro/fluxfix/stype_standard.pro +++ /dev/null @@ -1,277 +0,0 @@ -;+ -; NAME: -; stype_standard -; -; PURPOSE: -; Spectral type the standard stars and store the result as a structure. -; The normalized input spectra are compared to a grid of normalized -; Kurucz models produced by the SPECTRUM code (R.0. Gray & C. J. Corbally, -; 1994, AJ, 107, 742) and convolved to SDSS resolution. Since nearly all -; of the interesting spectral features are in the blue, data from the -; blue camera only can be used. -; -; CALLING SEQUENCE: -; std = stype_standard(loglam, nflux, ninvvar, plugmap, outfile=, $ -; nonsdss=, smoothpix=) -; -; INPUTS: -; loglam - Wavelength array of input spectra in log10(Angstroms) [npix] -; nflux - Array of normalized standard star spectra [npix, nstar] -; ninvvar - Inverse variance of standard star spectra [npix,nstar] -; plugmap - Plugmap corresponding to the input standard stars [nstar] -; -; OUTPUT: -; A structure containing best fit model name, Teff, g, [Fe/H] and -; magnitudes is returned. Diagnostic plots are also produced. Each -; spectophoto standard is shown with the (normalized) best fit spectrum -; plotted over top in red. -; -; KEYWORDS: -; outfile - Name of output FITS file. It must be of the from -; ?????-pppp-mmmm-s.fits where, pppp is the plateid, -; mmmmm is the mjd and s is the spectrograph ID. -; e.g. spStd-0519-52283-1.fits -; nonsdss - Set to 1 for use with data which is not from the SDSS -- -; the plugmap is not used in this case, and no reddening -; is applied. -; smoothpix - number of pixels to smooth Kurucz models by -- for use with -; data of lower resolution than the SDSS -; -; COMMENTS: -; A file containing the Kurucz model data is required. It is called -; "kurucz_stds_*.fit" and it should reside in IDLSPEC2D_DIR/etc. See -; "kurucz_restore.pro" for a description of this file. -; -; The SFD dust maps are needed to estimate the foreground extinction -; to add to the models. To acomodate this a new environment variable -; "DUST_DIR" is required. -; -; BUGS: -; Spectral typing is slightly sensitive to the method of normalization -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; djs_icolor() -; djs_median() -; djs_oplot -; djs_plot -; dust_getval() -; ext_odonnell() -; filter_thru() -; glactc() -; kurucz_restore -; mwrfits -; splog -; zcompute() -; -; INTERNAL SUPPORT ROUTINES -; kurucz_match() -; -; REVISION HISTORY: -; 28-Sep-2002 Written by C. Tremonti -; 12-Aug-2003 Modified by C. Tremonti for use with Spectro2d -;- -;------------------------------------------------------------------------------ - -;------------------------------------------------------------------------------ -; Subroutine: kurucz_match -;------------------------------------------------------------------------------ - -; Find the Kurucz model which best matches a star (min chi^2) - -pro kurucz_match, wave, nflux, nivar, nkflux, kindx, fiber, $ - plottitle = plottitle - - ;--------------------- - ; Compute the chisq - - nummod = n_elements(nkflux[0,*]) - chi2 = fltarr(nummod) - nivar[where(wave gt 5570 and wave lt 5590)] = 0 ; Avoid 5577 sky line - - for imod = 0, nummod - 1 do begin - goodpix = where(wave gt 3850 and wave lt 6000 and nivar ne 0 $ - and finite(nflux) and finite(nivar)) - - chi2[imod] = total((nflux[goodpix] - nkflux[goodpix,imod])^2 * $ - nivar[goodpix]) / (n_elements(goodpix) - nummod) - endfor - - ;----------------- - ; Store model info in structure that was passed in - - minchi = min(chi2, chiindx) - fiber.model = kindx[chiindx].model - fiber.chi2 = minchi - fiber.feh = kindx[chiindx].feh - fiber.teff = kindx[chiindx].teff - fiber.g = kindx[chiindx].g - fiber.model_mag = kindx[chiindx].mag - - ;-------------- - ; Plot normalized star spectra and best fit model - - if keyword_set(plottitle) then begin - origpmulti = !P.MULTI - !P.MULTI = [0, 1, 2] - djs_plot, wave, nflux, psym=10, xr=[3800,5000], $ - yr=[0,1.3], /xs, /ys, title = plottitle, $ - xtitle = 'Wavelength (A)', ytitle = 'Normalized Flux' - djs_oplot, wave, nkflux[*,chiindx], color='red', psym=10 - - xyouts, 3850, 1.2, 'Fiber: ' + string(fiber.fiberid, format='(I3)') - xyouts, 4050, 1.2, 'S/N = ' + string(fiber.sn, format='(F4.1)') - xyouts, 4300, 1.2, 'Model: ' + fiber.model - xyouts, 4750, 1.2, 'Chi2 = ' + string(fiber.chi2, format='(F6.2)') - - djs_plot, wave, nflux, psym=10, xr=[5000,6200], yr=[0,1.3], $ - /xs, /ys, xtitle = 'Wavelength (A)', ytitle = 'Normalized Flux' - djs_oplot, wave, nkflux[*,chiindx], color='red', psym=10 - - !P.MULTI = origpmulti - endif -end - -;------------------------------------------------------------------------------ - -;------------------------------------------------------------------------------ -; Main pro: stype_standard -;------------------------------------------------------------------------------ - -function stype_standard, loglam, nflux, ninvvar, plugmap, outfile = outfile, $ - nonsdss = nonsdss, smoothpix = smoothpix - - dloglam = 1.0d-4 - cspeed = 2.99792458e5 - wave = 10.0^loglam - - ;--------- - ; Extract Plate and MJD and spectrograph ID from output name - - if keyword_set(outfile) then begin - words = strsplit(outfile, '-', /extract) - plate = words[1] - mjd = words[2] - side = words[3] - endif else begin - plate = 0 - mdj = 0 - side = 0 - endelse - - nsphoto = n_elements(plugmap) - - ;------------- - ; Normalize the spectrum - ;nflux = rectify(flux, invvar, nivar = ninvvar, /mask, wave = wave) - - ;------------- - ; Set up structure to hold fstar data - - fiber = {fiber1, plateid:0, mjd: 0L, fiberid: 0, side: 0, $ - ra: 0.0, dec: 0.0, mag: [0.0, 0.0, 0.0, 0.0, 0.0], $ - xfocal: 0.0, yfocal: 0.0, sn: 0.0, v_off: 0.0, $ - model: ' ', chi2: 0.0, teff: 0.0, g: 0.0, feh: 0.0, $ - e_bv_sfd: 0.0, model_mag: [0.0, 0.0, 0.0, 0.0, 0.0], $ - red_model_mag: [0.0, 0.0, 0.0, 0.0, 0.0]} - - stdstar = make_array(value = fiber, dim = nsphoto) - - if not keyword_set(nonsdss) then begin - stdstar[*].plateid = plate - stdstar[*].mjd = mjd - stdstar[*].side = side - stdstar.fiberid = plugmap.fiberid - stdstar.ra = plugmap.ra - stdstar.dec = plugmap.dec - stdstar.mag = plugmap.mag - stdstar.xfocal = plugmap.xfocal - stdstar.yfocal = plugmap.yfocal - stdstar.sn = djs_median(nflux * sqrt(ninvvar), 1) - - ;------------------ - ; Get extinction from SFD maps - - dustdir = getenv('DUST_DIR') - if keyword_set(dustdir) then begin - dustdir = dustdir + '/maps/' - glactc, stdstar.ra, stdstar.dec, 2000, l, b, 1, /degre - stdstar.e_bv_sfd = dust_getval(l, b, ipath = dustdir, /interp) - endif else begin - splog, 'Environment variable DUST_DIR not set -- no path to SFD maps' - splog, 'WARNING: No dust correction will be applied to standard stars' - endelse - endif - - ;-------------- - ; Read in Kurucz model files - - kurucz_restore, kwave, kflux, nkflux = nkflux, kindx = kindx, $ - smoothpix = smoothpix - nk = n_elements(kindx) - - ; Compute the offset of the models from the data in pixels - model_offset = (loglam[0] - alog10(kwave[0])) / dloglam - - ; Get rid of bad pixels so they doesn't screw up the velocity determination - bad = where(finite(nflux) ne 1 or finite(ninvvar) ne 1) - if bad[0] ne -1 then nflux[bad] = 1 - if bad[0] ne -1 then ninvvar[bad] = 0 - - ;------------------ - ; Use fiducial model with T_eff = 6000, Log(gravity) = 4, and - ; log(Fe/H) = -1 to determine the velocity offset of the stars in pixels - - fidmodel = where(kindx.teff eq 6000 and kindx.g eq 4 and kindx.feh eq -1.5) - nkfluxi = nkflux[*, fidmodel] - - bad = where(kwave lt min(wave) + 200 or kwave gt max(wave) - 200) - starmask = intarr(n_elements(kwave)) + 1 - starmask[bad] = 0 - - zans = zcompute(nflux, ninvvar, nkfluxi, starmask, $ - poffset = model_offset, pmin = -20.0, pmax = 20.0) - - ; convert from pix to km/s - stdstar.v_off = (10.^(dloglam * zans[*].z) -1 )*cspeed - - ;---------------- - ; Find the best matched Kurucz model for each star & store result in - ; structure - - for iobj=0, nsphoto-1 do begin - fiber_struct = stdstar[iobj] - - rkwave = kwave * (1 + fiber_struct.v_off/cspeed) - rkflux = fltarr(n_elements(wave), nk) - for kobj = 0, nk - 1 do $ - rkflux[*,kobj] = interpol(nkflux[*,kobj], rkwave, wave) - - kurucz_match, wave, nflux[*,iobj], ninvvar[*,iobj], $ - rkflux, kindx, fiber_struct, plottitle = outfile - - ;------------------ - ; Determine reddened model magnitudes - - A_v = 3.1 * fiber_struct.e_bv_sfd - a_odonnell = ext_odonnell(rkwave, 3.1) - - model_index = (where(kindx.model eq fiber_struct.model))[0] - red_kflux = kflux[*,model_index] * exp(-1 * a_odonnell * A_v / 1.086) - - fluxfnu = red_kflux * rkwave^2 / 2.99792e18 - fthru=filter_thru(fluxfnu, waveimg=rkwave, $ - filter_prefix = 'sdss_jun2001', /toair) - fiber_struct.red_model_mag = -2.5*alog10(fthru) - 48.6 - - stdstar[iobj] = fiber_struct - endfor - - ;-------------- - ; Save the output as a FITS binary table - if keyword_set(outfile) then mwrfits, stdstar, outfile, /create - - return, stdstar -end -;------------------------------------------------------------------------------ diff --git a/pro/fpsconfig/config_to_long.pro b/pro/fpsconfig/config_to_long.pro deleted file mode 100644 index 3676ab43e..000000000 --- a/pro/fpsconfig/config_to_long.pro +++ /dev/null @@ -1,13 +0,0 @@ -function config_to_long, config;, subexp=subexp - if n_elements(config) gt 1 then begin - lconfig = lonarr(n_elements(config)) - for i=0, n_elements(config)-1 do lconfig[i] = config_to_long(config[i],subexp=subexp) - return, lconfig - endif - ;conid =strsplit(config,'-',/extract) - ;if keyword_set(subexp) then $ - ;return, long(conid[1]) $ - ;else $ - ; return, long(conid[0]) - return, long(config) -end diff --git a/pro/fpsconfig/get_field_dir.pro b/pro/fpsconfig/get_field_dir.pro new file mode 100644 index 000000000..d5aa2cc8e --- /dev/null +++ b/pro/fpsconfig/get_field_dir.pro @@ -0,0 +1,22 @@ + +function get_field_dir, topdir, run2d, field, custom=custom + if keyword_set(custom) then begin + field = strtrim(field,2) + fieldgrp = get_field_grp(field,/custom) + + dir_ = djs_filepath(field, root_dir=topdir,$ + subdirectory=[run2d, 'fields',fieldgrp]) + endif else begin + if strcmp(field,'*') then begin + zfield = field_to_string(0) + zfieldgrp = repstr(get_field_grp(0),'0','?') + zfield = repstr(zfield,'0','?') + dir_ = djs_filepath(zfield, root_dir=topdir, $ + subdirectory=[run2d,'fields',zfieldgrp]) + endif else begin + dir_ = djs_filepath(field_to_string(field), root_dir=topdir, $ + subdirectory=[run2d,'fields',get_field_grp(field)]) + endelse + endelse + return, dir_ +end diff --git a/pro/fpsconfig/get_field_grp.pro b/pro/fpsconfig/get_field_grp.pro new file mode 100644 index 000000000..7e8def84e --- /dev/null +++ b/pro/fpsconfig/get_field_grp.pro @@ -0,0 +1,16 @@ +function get_field_grp, field, custom=custom + if keyword_set(custom) then begin + if n_elements(strsplit(field,'_',/extract)) eq 1 then begin + return, field + endif else begin + return, strjoin((strsplit(field,'_',/extract))[0:-2],'_') + endelse + endif else begin + if valid_num(string(field)) then begin + return, strtrim(string(long(field)/1000,f='(i3.3)'),2)+'XXX' + endif else begin + return, field + endelse + endelse + +end diff --git a/pro/fpsconfig/get_field_spec_dir.pro b/pro/fpsconfig/get_field_spec_dir.pro new file mode 100644 index 000000000..a7fb9a7a1 --- /dev/null +++ b/pro/fpsconfig/get_field_spec_dir.pro @@ -0,0 +1,20 @@ + + +function get_field_spec_dir, topdir, run2d, field, mjd, epoch=epoch, $ + lite=lite, custom_name=custom_name + if keyword_set(lite) then stype = 'lite' else stype = 'full' + if keyword_set(epoch) then begin + subdir = [run2d,'spectra','epoch',stype,get_field_grp(field),$ + field_to_string(field)] + endif else begin + if keyword_set(custom_name) then begin + subdir = [run2d,'spectra',get_field_grp(field), stype, $ + get_field_grp(field), field_to_string(field)] + endif else begin + subdir = [run2d,'spectra','daily', stype,get_field_grp(field),$ +field_to_string(field)] + endelse + endelse + return, djs_filepath(strtrim(mjd,2), root_dir=topdir, subdirectory=subdir) +end + diff --git a/pro/guider/guiderplay.pro b/pro/guider/guiderplay.pro deleted file mode 100644 index d25b51475..000000000 --- a/pro/guider/guiderplay.pro +++ /dev/null @@ -1,102 +0,0 @@ -;+ -; NAME: -; guiderplay -; -; PURPOSE: -; Replay guider images from a night -; -; CALLING SEQUENCE: -; guidermovie, [ mjd=, wtime= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd - MJD subdirectory; if not set, then use largest number -; in $GUIDE_DIR directory -; wtime - Wait time between images; default to 0 sec -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 01-May-2010 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -forward_function sdssguide_read_image, sdssguide_is_valid, $ - sdssguide_cartinfo, sdssguide_guideobj -;------------------------------------------------------------------------------ -pro guiderplay, mjd=mjd1, wtime=wtime1 - - sdssguide, guidedir='test' ; Compile these routines - - ; Set defaults - guidedir = getenv('GUIDE_DIR') - if (NOT keyword_set(guidedir)) then guidedir = '/data/gcam' - if (keyword_set(mjd1)) then begin - mjd = get_mjd_dir(guidedir, mjd=long(mjd1[0])) - endif else begin - mjd = get_mjd_dir(guidedir,mjstart=1,mjend=99999) - if (keyword_set(mjd)) then mjd = mjd[(reverse(sort(mjd)))[0]] - endelse - if (NOT keyword_set(mjd)) then begin - splog, 'No MJD directory found in '+guidedir - return - endif - if (n_elements(wtime1) EQ 0) then wtime = 0. $ - else wtime = wtime1[0] - - minval = 0. ; Minimum median value within fiber - minsn = 10. ; Minimum star S/N - quiet = !quiet - !quiet = 1 - except = !except - !except = 0 - - allfile = findfile(filepath('gimg-????.fits*', root_dir=guidedir, $ - subdir=strtrim(mjd,2)), count=nfile) - if (nfile EQ 0) then begin - splog, 'No gimg files found in '+guidedir+'/'+strtrim(mjd,2) - return - endif - - for iexp=0L, nfile-1L do begin - - thisfile = allfile[iexp++] - print, 'File = '+thisfile - img = sdssguide_read_image(thisfile, hdr=imhdr) - if (sdssguide_is_valid(img)) then begin - ; Read the cartridge info with the first good image - cartid = sxpar(imhdr, 'FLATCART') - if (NOT keyword_set(cartid)) then cartid = 10 ; ??? - cartinfo = sdssguide_cartinfo(cartid, img) - if (NOT keyword_set(cartinfo)) then begin - splog, 'No cartridge info found for cartridge ID ', cartid - return - end - - guideobj = sdssguide_guideobj(n_elements(cartinfo)) - sdssguide_centroid_fibers, cartinfo, img, guideobj, minval=minval - sdssguide_centroid_stars, img, guideobj, minsn=minsn - sdssguide_compute_offsets, guideobj, img -; sdssguide_compute_teloffset, plughdr, img, guideobj, $ -; guideiter, pluginfo - sdssguide_display, img, guideobj - wait, wtime ; Wait 1 sec if no new image found yet - endif - endfor - - !quiet = quiet - !except = except - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/guider/sdssguide.pro b/pro/guider/sdssguide.pro deleted file mode 100644 index cd7e7b31b..000000000 --- a/pro/guider/sdssguide.pro +++ /dev/null @@ -1,700 +0,0 @@ -;+ -; NAME: -; sdssguide -; -; PURPOSE: -; Sloan telescope guider code -; -; CALLING SEQUENCE: -; sdssguide, [ plugdir=, guidedir= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; plugdir - Directory containing plPlugMapM files; -; default to '/data/plugMapM' -; guidedir - Top-level directory containing guider images, with the -; largest MJD subdirectory chosen; -; default to '/data/gcam' -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The guide camera must already be in an independent loop taking images. -; Pausing the guider does not pause whatever routine is independently -; generating guider images. When the guider is re-started, it will -; begin by analyzing the most recent image, which may mean never -; analyzing some older images. -; Stars are fit to a symmetric Gaussian. -; -; EXAMPLES: -; -; BUGS: -; Implement GUI interface with IDL widgets. -; Send TCC offset commands. -; If we can communicate with the TCC, then verify cartridge ID is mounted. -; Decide upon gain for telescope offsets, and whether to apply rotation -; and scale offsets (perhaps only once they become significantly bad). -; Reject outlier stars in telescope offset fits. -; Subtract dark frames, and mask bad pixels. -; Should write the SOP-like guider output file. -; Apply flat-fielding. -; Add S/N ceiling to images. -; Compute expected throughput, given the plugmap magnitudes. -; Store history of all previous guider info, for use in any -; more complex telescope offset decisions. -; Line plot with history of offsets, FWHM, throughput. -; Figure out how to change the ATV stretch levels dynamically, or use DS9. -; Offset guiding option. -; Need replacement script for spiralpattern when lost on the sky. -; -; DATA FILES: -; $IDLSPEC2D_DIR/examples/cartridgeInfo.par -; -; PROCEDURES CALLED: -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 24-Aug-2008 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -function sdssguide_guideobj, nfiber - - guideobj = replicate(create_struct( $ - 'timestamp', 0L, $ - 'plateid', 0, $ - 'fiber', 0, $ - 'enable', 0, $ - 'goodfiber', 0, $ - 'xfiber', 0., $ - 'yfiber', 0., $ - 'rfiber', 0., $ - 'rot', 0., $ - 'xstar', 0., $ - 'ystar', 0., $ - 'xstar_err', 0., $ - 'ystar_err', 0., $ - 'counts', 0., $ - 'counts_err', 0., $ - 'fwhm', 0., $ - 'fwhm_err', 0., $ - 'skyval', 0., $ - 'skyval_err', 0., $ - 'dx', 0., $ - 'dy', 0., $ - 'dra', 0., $ - 'ddec', 0., $ - 'dra_err', 0., $ - 'ddec_err', 0. ), nfiber) - - return, guideobj -end - -;------------------------------------------------------------------------------ -; Generate an image of radial distance from a position xcen, ycen. - -function sdssguide_radimg, nx, ny, xcen, ycen - - xaxis = djs_laxisgen([nx,ny], iaxis=0) - xcen - yaxis = djs_laxisgen([nx,ny], iaxis=1) - ycen - return, sqrt(xaxis^2 + yaxis^2) -end - -;------------------------------------------------------------------------------ -pro sdssguide_select_plugmap, pluginfo, plughdr, plugdir=plugdir - common com_sdssguide_pluginfo, allplug - - if (NOT keyword_set(allplug)) then begin - print, 'Locating most recent plPlugMapM files...' - qcart = lonarr(17) - files = file_search(djs_filepath('plPlugMapM-????-?????-??.par', $ - root_dir=plugdir)) - if (keyword_set(files)) then begin - finfo = file_info(files) - files = files[reverse(sort(finfo.mtime))] - nfile = n_elements(files) - ifile = 0L - while (total(1-qcart) NE 0 AND ifile LT nfile) do begin - yanny_read, files[ifile], hdr=plughdr - ; Deal with cases where cartid is a string!? - cartid = yanny_par(plughdr, 'cartridgeId') - if (NOT keyword_set(cartid)) then cartid = 0 - if (qcart[(cartid-1)>0] EQ 0 AND cartid NE 0) then begin - ; Find all pointings for this plugmap... - file1 = fileandpath(files[ifile], path=path1) - file1 = repstr(file1,'.par','*.par') - filelist = file_search(djs_filepath(file1, root_dir=path1)) - for j=0L, n_elements(filelist)-1L do begin - pointing = strmid(fileandpath(filelist[j]), 24, 1) - pointing = repstr(pointing,'.','') - thisplug = {cartid: strtrim(cartid,2)+pointing, $ - file: filelist[j]} - if (keyword_set(allplug)) then allplug = [allplug,thisplug] $ - else allplug = thisplug - endfor - qcart[cartid-1] = 1 - endif - ifile++ - endwhile - if (keyword_set(allplug)) then allplug = allplug[sort(allplug.cartid)] - endif - endif - - if (keyword_set(allplug)) then begin - print - for i=0L, n_elements(allplug)-1 do $ - print, allplug[i].cartid, fileandpath(allplug[i].file), $ - format='(a4,x,a)' - ct = 0 - while (ct EQ 0) do begin - val = '' - read, prompt='Select cartridge from first column above: ', val - iselect = where(allplug.cartid EQ strupcase(strtrim(val,2)), ct) - endwhile - - pluginfo = yanny_readone(allplug[iselect].file, hdr=plughdr, /anon) - if (NOT keyword_set(pluginfo)) then begin - splog, 'Error reading plugmap '+allplug[iselect].file - return - endif - pluginfo = pluginfo[ where(pluginfo.holetype EQ 'GUIDE') ] - pluginfo = pluginfo[ sort(pluginfo.fiberid) ] - endif - - return -end - -;------------------------------------------------------------------------------ -function sdssguide_read_image, thisfile, hdr=imhdr - - if (fits_wait(thisfile, deltat=2, tmax=10) EQ 0) then return, 0 - image = mrdfits(thisfile, 0, imhdr, /fscale, /silent) - - ; Make the image look like the old camera binned 2x2 - dims = size(image,/dimens) - case dims[0] of - 384: begin - camera = 'old' - camoffsets = [0., 0.] - pixscale = 0.149 * 2 - rdnoise = 100. ; electrons - gain = 10. ; electrons/ADU - end - 768: begin - camera = 'old' - camoffsets = [0., 0.] - pixscale = 0.149 * 2 - rdnoise = 100. ; electrons - gain = 10. ; electrons/ADU - image = rebin(image, dims/2) ; old camera unbinned - end - 512: begin - camera = 'new' - camoffsets = [0., 0.] - pixscale = 0.214 * 2 - rdnoise = 8.1 ; electrons - gain = 1.4 ; electrons/ADU - end - 524: begin ; changed to this dimension on Aug 17, 2010 = MJD 55425 - camera = 'new' - camoffsets = [0., 0.] - pixscale = 0.214 * 2 - rdnoise = 8.1 ; electrons - gain = 1.4 ; electrons/ADU - end - 1024: begin - camera = 'new' - camoffsets = [0., 0.] - pixscale = 0.214 * 2 - rdnoise = 8.1 ; electrons - gain = 1.4 ; electrons/ADU - image = rebin(image, dims/2) ; new camera unbinned - end - 1048: begin ; changed to this dimension on Aug 17, 2010 = MJD 55425 - camera = 'new' - camoffsets = [0., 0.] - pixscale = 0.214 * 2 - rdnoise = 8.1 ; electrons - gain = 1.4 ; electrons/ADU - image = rebin(image, dims/2) ; new camera unbinned - end - endcase - - biasval = median(image) - image -= biasval ; bias-subtract - var = (image>0) / gain + rdnoise^2 / gain^2 - invvar = 1. / var - img = create_struct( $ - 'filename', thisfile, $ - 'camera', camera, $ - 'camoffsets', camoffsets, $ - 'pixscale', pixscale, $ - 'biasval', biasval, $ - 'imhdr', imhdr, $ - 'image', image, $ - 'invvar', invvar, $ - 'immask', intarr(size(image,/dimens)) ) - - return, img -end - -;------------------------------------------------------------------------------ -pro sdssguide_disable_fiber, cartinfo, guideobj - - read, prompt='Select fiber to disable: ', num - i = where(guideobj.fiber EQ num, ct) - if (ct GT 0) then begin - cartinfo[i].exists = 'F' - guideobj[i].enable = 0 - endif else begin - print, 'Fiber not found' - endelse - - return -end - -;------------------------------------------------------------------------------ -pro sdssguide_enable_fiber, cartinfo, guideobj - - read, prompt='Select fiber to enable: ', num - i = where(guideobj.fiber EQ num, ct) - if (ct GT 0) then begin - cartinfo[i].exists = 'T' - guideobj[i].enable = 1 - endif else begin - print, 'Fiber not found' - endelse - - return -end - -;------------------------------------------------------------------------------ -function sdssguide_is_valid, img - if (n_elements(img.image) GT 1) then return, 1 - return, 0 -end - -;------------------------------------------------------------------------------ -function sdssguide_cartinfo, cartid, img - common com_sdssguide_cartinfo, allcart - - cartinfo = 0 - - if (NOT keyword_set(allcart)) then begin - cartfile = djs_filepath('cartridgeInfo.par', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdir='examples') - allcart = yanny_readone(cartfile, /anon) - endif - - if (keyword_set(allcart)) then begin - i = where(allcart.cartridgeid EQ cartid) - if (i[0] NE -1) then cartinfo = allcart[i] $ - else return, 0 - - ; Convert to positions for this image's pixel scale and CCD offsets -; cartinfo.xcen *= 0.149 / img.pixscale -; cartinfo.ycen *= 0.149 / img.pixscale -; cartinfo.radius *= 0.149 / img.pixscale -; cartinfo.xcen += (0.149 / img.pixscale) * img.camoffsets[0] -; cartinfo.ycen += (0.149 / img.pixscale) * img.camoffsets[1] - if (cartinfo[0].cartridgeid LE 9) then begin - cartinfo.xcen = 0.345 * allcart[i].ycen + 168 - cartinfo.ycen = 0.345 * allcart[i].xcen + 122 - cartinfo.radius = 0.345 * allcart[i].radius - endif - endif - - return, cartinfo -end - -;------------------------------------------------------------------------------ -; Parameters are as follows: XCEN, YCEN, FWHM, FLUX, SKYVAL -function sdssguide_psf_fn, pp, subimg=subimg, subivar=subivar - - dims = size(subimg, /dimens) - modelimg = pp[3] * psf_gaussian(npixel=dims, fwhm=pp[2], centroid=pp[0:1], $ - /normalize) + pp[4] - chivec = reform( (subimg - modelimg) * sqrt(subivar), n_elements(subimg)) - - return, chivec -end - -;------------------------------------------------------------------------------ -function sdssguide_mask_fn, pp, subimg=subimg, radius=radius - - dims = size(subimg,/dimens) - djs_photfrac, pp[0], pp[1], radius, $ - xdimen=dims[0], ydimen=dims[1], pixnum=pixnum, fracs=fracs - mask = 0*subimg - mask[pixnum] = fracs - maxval = max(subimg) - vdiff = reform(2 - subimg * mask / maxval, n_elements(subimg)) - - return, sqrt(vdiff) ; This will maximize on simply the total counts -end - -;------------------------------------------------------------------------------ -; Centroid the circular fiber regions by maximizing the counts that -; fall within a circle. Also decide if a fiber sees enough light -; above the bias level to be considered a good fiber. - -pro sdssguide_centroid_fibers, cartinfo, img, guideobj, minval=minval - - nfiber = n_elements(cartinfo) - - for i=0L, nfiber-1L do begin - xcen = cartinfo[i].xcen - ycen = cartinfo[i].ycen - radius = cartinfo[i].radius - dims = size(img.image,/dimens) - - ; Define a sub-region within to work - x1 = (floor(xcen - 2.0 * radius)) > 0 - x2 = (ceil(xcen + 2.0 * radius)) < (dims[0]-1) - y1 = (floor(ycen - 2.0 * radius)) > 0 - y2 = (ceil(ycen + 2.0 * radius)) < (dims[1]-1) - subimg = img.image[x1:x2,y1:y2] - - parinfo = {value: 0.D, limited: [0b,0b], limits: [0.d0,0.d0], $ - step: 0.05D, mpmaxstep: 1.0D} - parinfo = replicate(parinfo, 2) - parinfo[0].value = xcen - x1 - parinfo[0].limits = [0.5*radius,3.5*radius] - parinfo[1].value = ycen - y1 - parinfo[1].limits = [0.5*radius,3.5*radius] - - functargs = {subimg: subimg, radius: radius} - fitval = mpfit('sdssguide_mask_fn', parinfo=parinfo, $ - functargs=functargs, perror=perror, niter=niter, status=status, $ - /quiet) - - ; Leave these centroids unchanged if the fit failed - if (n_elements(fitval) EQ 2) then begin - guideobj[i].xfiber = fitval[0] + x1 - guideobj[i].yfiber = fitval[1] + y1 - ii = where(sdssguide_radimg(x2-x1+1,y2-y1+1,fitval[0],fitval[1]) $ - LT radius) - medval = median(subimg[ii]) - guideobj[i].goodfiber = medval GT minval - endif else begin - guideobj[i].xfiber = cartinfo[i].xcen - guideobj[i].yfiber = cartinfo[i].ycen - guideobj[i].goodfiber = 0 - endelse - guideobj[i].fiber = cartinfo[i].gprobeid - guideobj[i].enable = cartinfo[i].exists EQ 'T' - guideobj[i].rfiber = cartinfo[i].radius - guideobj[i].rot = cartinfo[i].rot - endfor - - return -end - -;------------------------------------------------------------------------------ -pro sdssguide_centroid_stars, img, guideobj, minsn=minsn - - nfiber = n_elements(guideobj) - - for i=0L, nfiber-1L do begin - if (guideobj[i].enable AND guideobj[i].goodfiber GT 0) then begin - xcen = guideobj[i].xfiber - ycen = guideobj[i].yfiber - radius = guideobj[i].rfiber - dims = size(img.image,/dimens) - - ; Define a sub-region within to work - x1 = (floor(xcen - 1.0 * radius)) > 0 - x2 = (ceil(xcen + 1.0 * radius)) < (dims[0]-1) - y1 = (floor(ycen - 1.0 * radius)) > 0 - y2 = (ceil(ycen + 1.0 * radius)) < (dims[1]-1) - subimg = img.image[x1:x2,y1:y2] - radimg = sdssguide_radimg(x2-x1+1,y2-y1+1, xcen-x1, ycen-y1) - subivar = img.invvar[x1:x2,y1:y2] * (radimg LT radius) - qgood = subivar GT 0 - ii = where(qgood, ngood) - ii = sort(subimg[ii]) - skyval = subimg[ii[ 0.25*ngood ]] ; select the 25th-percentile - skyval = median(subimg[ii]) - - ; Parameters are as follows: XCEN, YCEN, FWHM, FLUX, SKYVAL - parinfo = {value: 0.D, limited: [0b,0b], limits: [0.d0,0.d0], $ - step: 0.D, mpmaxstep: 0.D} - parinfo = replicate(parinfo, 5) - - ; Initial guesses for XCEN,YCEN will be flux-weighted means - xvec = total((subimg - skyval) * qgood,2) - yvec = total((subimg - skyval) * qgood,1) - xthis = total(xvec * findgen(x2-x1+1)) / total(xvec) - ythis = total(yvec * findgen(y2-y1+1)) / total(yvec) - - parinfo[0].value = xthis - parinfo[0].limits = [-0.1*radius,+2.1*radius] - parinfo[0].limited = [1b,1b] - parinfo[0].step = 0.05 - parinfo[0].mpmaxstep = 1.0 - - parinfo[1].value = ythis - parinfo[1].limits = [-0.1*radius,+2.1*radius] - parinfo[1].limited = [1b,1b] - parinfo[1].step = 0.05 - parinfo[1].mpmaxstep = 1.0 - - parinfo[2].value = 2.0/img.pixscale ; initial guess is 2 arcsec - parinfo[2].limits = [0.75, 4.0]/img.pixscale ; seeing range in pixel - parinfo[2].limited = [1b,1b] - parinfo[2].step = 0.05 - parinfo[2].mpmaxstep = 1.0 - - parinfo[3].value = total(subimg * qgood) - skyval * ngood - - parinfo[4].value = skyval - - functargs = {subimg: subimg, subivar: subivar} - fitval = mpfit('sdssguide_psf_fn', parinfo=parinfo, $ - functargs=functargs, perror=perror, niter=niter, status=status, $ - /quiet) - endif else begin - fitval = 0 - endelse - - qgood = keyword_set(fitval) - if (qgood) then qgood = status NE 0 - if (qgood) then qgood = fitval[3] GT minsn*perror[3] $ - AND perror[3] GT 0 ; AND perror[2] GT 0 - if (qgood) then begin - guideobj[i].xstar = x1 + fitval[0] - guideobj[i].ystar = y1 + fitval[1] - guideobj[i].xstar_err = perror[0] - guideobj[i].ystar_err = perror[1] - guideobj[i].fwhm = fitval[2] - guideobj[i].fwhm_err = perror[2] - guideobj[i].counts = fitval[3] - guideobj[i].counts_err = perror[3] - guideobj[i].skyval = fitval[4] - guideobj[i].skyval_err = perror[4] - endif else begin - guideobj[i].xstar = 0 - guideobj[i].ystar = 0 - guideobj[i].xstar_err = 0 - guideobj[i].ystar_err = 0 - guideobj[i].fwhm = 0 - guideobj[i].fwhm_err = 0 - guideobj[i].counts = 0 - guideobj[i].counts_err = 0 - guideobj[i].skyval = 0 - guideobj[i].skyval_err = 0 - guideobj[i].goodfiber = -1 - endelse - endfor - - return -end - -;------------------------------------------------------------------------------ -pro sdssguide_compute_offsets, guideobj, img - - pixscale = img.pixscale - sinphi = sin(guideobj.rot / !radeg) - cosphi = cos(guideobj.rot / !radeg) - dx = guideobj.xstar - guideobj.xfiber - dy = guideobj.ystar - guideobj.yfiber - guideobj.dra = pixscale * (dx * cosphi + dy * sinphi) - guideobj.ddec = pixscale * (dx * cosphi + dy * sinphi) - guideobj.dra_err = pixscale $ - * sqrt((guideobj.xstar_err * cosphi)^2 + (guideobj.ystar_err * sinphi)^2) - guideobj.ddec_err = pixscale $ - * sqrt((guideobj.xstar_err * cosphi)^2 + (guideobj.ystar_err * sinphi)^2) - - return -end - -;------------------------------------------------------------------------------ -pro sdssguide_compute_teloffset, plughdr, img, guideobj, guideiter, pluginfo - - asecpermm = 16.5245 - - guideiter = create_struct( $ - 'filename', '', $ - 'timestamp', 0L, $ - 'exptime', 0, $ - 'nguide', 0, $ - 'errors', fltarr(4), $ - 'offsets', fltarr(4), $ - 'lst', 0., $ - 'ra', 0., $ - 'dec', 0.) - guideiter.filename = img.filename - guideiter.timestamp = 24.0D * 3600.0D * current_mjd() - guideiter.exptime = sxpar(img.imhdr, 'EXPTIME') - guideiter.nguide = n_elements(guideobj) - guideiter.ra = yanny_par(plughdr, 'raCen') - guideiter.dec = yanny_par(plughdr, 'decCen') - - nfiber = n_elements(guideobj) - bvec = [guideobj.dra, guideobj.ddec] - berr = [guideobj.dra_err, guideobj.ddec_err] * (guideobj.goodfiber GT 0) - sqivar = (berr GT 0) / (berr + (berr LE 0)) - theta = atan(pluginfo.yfocal, pluginfo.xfocal) - sint = sin(theta) - cost = cos(theta) - amatrix = fltarr(2*nfiber,4) - amatrix[*,0] = [fltarr(nfiber)+1, fltarr(nfiber)+0] - amatrix[*,1] = [fltarr(nfiber)+0, fltarr(nfiber)+1] - amatrix[*,2] = [-pluginfo.xfocal*asecpermm, pluginfo.yfocal*asecpermm] - amatrix[*,3] = $ - [-pluginfo.xfocal*asecpermm*cost, pluginfo.yfocal*asecpermm*sint] - chi2 = computechi2(bvec, sqivar, amatrix, acoeff=acoeff, var=var, dof=dof) - print, 'Chi^2 of fit = ', chi2, ' for ', long(dof), ' DOF' - print, 'Computed RA offset = ', acoeff[0], ' arsec' - print, 'Computed Dec offset = ', acoeff[1], ' arcsec' - print, 'Computed rotator offset = ', acoeff[2]*!radeg*3600., ' arcsec' - print, 'Computed scale offset = ', acoeff[3]*100., ' percent' - - guideiter.errors = acoeff - - return -end - -;------------------------------------------------------------------------------ -pro sdssguide_display, img, guideobj - - skyval = median(guideobj.skyval) - atv, img.image, min=0.5*skyval-200, max=3.0*(skyval+200) - - nfiber = n_elements(guideobj) - - ; Draw a circle around each good fiber (but not around bad ones) - for i=0L, nfiber-1L do begin - if (guideobj[i].enable EQ 0) then text = 'DISABLE' $ - else if (guideobj[i].goodfiber EQ 0) then text = 'NO SKY' $ - else if (guideobj[i].goodfiber EQ -1) then text = 'FAINT' $ - else text = string(guideobj[i].fwhm*img.pixscale,format='(f4.2)') $ - +string(34b) - rplot = guideobj[i].rfiber - npt = 2*!pi*rplot - xplot = cos(2*!pi*findgen(npt+1)/npt) * rplot + guideobj[i].xfiber - yplot = sin(2*!pi*findgen(npt+1)/npt) * rplot + guideobj[i].yfiber - atvplot, xplot, yplot, color='red' - atvxyouts, guideobj[i].xfiber, $ - guideobj[i].yfiber+guideobj[i].rfiber, $ - strtrim(guideobj[i].fiber,2)+' ', color='red', charsize=2, align=1 - atvxyouts, guideobj[i].xfiber, $ - guideobj[i].yfiber-guideobj[i].rfiber-16, $ - text, color='green', charsize=1.5, align=0.5 - - if (guideobj[i].xstar_err GT 0 AND guideobj[i].ystar_err GT 0) then $ - atvplot, guideobj[i].xstar, guideobj[i].ystar, psym=1, color='red', $ - symsize=2 - endfor - - dims = size(img.image,/dimens) - atvxyouts, dims[0]/2, dims[1]/2-220, $ - 'Cart #'+strtrim(sxpar(img.imhdr,'FLATCART'),2) $ - +' '+strmid(fileandpath(img.filename),0,9) $ - +' '+strtrim(sxpar(img.imhdr,'DATE-OBS'),2), $ - charsize=2, color='red', align=0.5 - - return -end - -;------------------------------------------------------------------------------ -pro sdssguide, plugdir=plugdir1, guidedir=guidedir1 - -;plugdir1='/Users/schlegel/guider/plugmap' ; ??? -;guidedir1 ='/Users/schlegel/rawdata/51820/guider' ; ??? -;guidedir1 ='/Users/schlegel/rawdata/gcam/55123' ; ??? -;guidedir1 ='/Users/schlegel/rawdata/gcam' ; ??? - - ; Set defaults - if (keyword_set(plugdir1)) then plugdir = plugdir1 $ - else plugdir = '/data/plugMapM' - if (keyword_set(guidedir1)) then guidedir = guidedir1 $ - else guidedir = '/data/gcam' - minval = 0. ; Minimum median value within fiber - minsn = 10. ; Minimum star S/N - quiet = !quiet - !quiet = 1 - except = !except - !except = 0 - - ; Guider loop - lastfile = '' - cc = 'M' - while (cc NE 'Q') do begin -; if (cc EQ 'M') then begin -; sdssguide_select_plugmap, pluginfo, plughdr, plugdir=plugdir -; cartid = yanny_par(plughdr, 'cartridgeId') -; cartinfo = 0 -; endif - - if (cc EQ 'D') then sdssguide_disable_fiber, cartinfo, guideobj - if (cc EQ 'E') then sdssguide_enable_fiber, cartinfo, guideobj - if (cc EQ 'P') then begin - junk = '' - read, 'Paused -- Press return to continue: ', junk - endif - - mjd_dir = file_search(djs_filepath('5[0-9][0-9][0-9][0-9]', $ - root_dir=guidedir)) - if (keyword_set(mjd_dir) EQ 0) then begin - splog, 'No MJD directories found in GUIDEDIR='+guidedir - return - endif - junk = max(long(fileandpath(mjd_dir)), imax) - mjd_dir = mjd_dir[imax] - files = file_search(djs_filepath('g*.fits*', root_dir=mjd_dir)) - finfo = file_info(files) - junk = max(finfo.mtime, i) ; Find the most recently modified file - thisfile = files[i] -;thisfile ='/Users/schlegel/rawdata/51820/guider/gimg0052.fits.gz' ; ??? -;thisfile ='/Users/schlegel/rawdata/51820/guider/gimg0127.fits.gz' ; ??? -;thisfile ='/Users/schlegel/rawdata/gcam/55123/gimg-1000.fits' ; ??? - if (thisfile NE lastfile) then begin - lastfile = thisfile - print, ' ' - print, 'File = '+thisfile - img = sdssguide_read_image(thisfile, hdr=imhdr) - if (sdssguide_is_valid(img)) then begin - ; Read the cartridge info with the first good image - cartid = sxpar(imhdr, 'FLATCART') -;if (NOT keyword_set(cartid)) then cartid = 10 ; ??? - if (NOT keyword_set(cartinfo)) then $ - cartinfo = sdssguide_cartinfo(cartid, img) - if (NOT keyword_set(cartinfo)) then begin - splog, 'No cartridge info found for cartridge ID ', cartid - return - end - - guideobj = sdssguide_guideobj(n_elements(cartinfo)) - sdssguide_centroid_fibers, cartinfo, img, guideobj, minval=minval - sdssguide_centroid_stars, img, guideobj, minsn=minsn - sdssguide_compute_offsets, guideobj, img -; sdssguide_compute_teloffset, plughdr, img, guideobj, $ -; guideiter, pluginfo - sdssguide_display, img, guideobj - endif else begin - wait, 1 ; Wait 1 sec if no new image found yet - endelse - endif -;lastfile = '' ; ??? - - print - print, 'Options:' - print, ' d - Disable fiber' - print, ' e - Enable fiber' -; print, ' m - Load plugmap' - print, ' p - Pause' - print, ' q - Quit' - - cc = strupcase(get_kbrd(0)) - endwhile - - !quiet = quiet - !except = except - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/idlutils/modfits_named.pro b/pro/idlutils/modfits_named.pro new file mode 100644 index 000000000..f87b8dba8 --- /dev/null +++ b/pro/idlutils/modfits_named.pro @@ -0,0 +1,188 @@ +;----------------------------------------------------------------------- +;+ +; NAME: +; modfits_named +; +; PURPOSE: +; Wrapper for MODFITS that allows the header to increase in size, +; and that works with g-zipped files. +; +; CALLING SEQUENCE: +; djs_modfits, filename, data, [hdr, exten_no=, /delete_data] +; +; INPUTS: +; filename - FITS file name; if the name ends in the suffix ".gz", +; then the file is g-unzipped first, modified, then re-g-zipped. +; data - New data array or structure for extension EXTEN_NO; +; if this is undefined or zero, then don't modify the data. +; +; OPTIONAL INPUTS: +; hdr - New FITS header for extension EXTEN_NO +; exten_no - FITS extension number to modify; default to 0. +; delete_data - If set, then delete this data. Note that this cannot +; be accomplished by setting DATA=0, since that simply says +; to not change the data array/structure (to be consistent +; with the functionality of MODFITS). +; +; OUTPUTS: +; +; OPTIONAL OUTPUTS: +; +; COMMENTS: +; +; EXAMPLES: +; +; BUGS: +; +; PROCEDURES CALLED: +; modfits +; mrdfits() +; mwrfits +; readfits() +; writefits +; +; INTERNAL PROCEDURES: +; bitsperpixel() +; +; REVISION HISTORY: +; 06-AUG-2024 Written by Sean Morrison based off of djs_modfits +;- +;----------------------------------------------------------------------- +function bitsperpixel, type + + tvec = [0,1,2,4,4,8,8,0,0,16,0,0,2,4,8,8] + return, tvec[type] +end +;----------------------------------------------------------------------- +pro modfits_named, filename, thisdata, hdr, exten_no=exten_no, $ + delete_data=delete_data, name=name + + ; Need at least 2 parameters + if (N_params() LT 2) then begin + print, 'Syntax - djs_modfits, filename, data, [hdr, exten_no=, /delete_data]' + return + endif + + ; If the file appears to be g-zipped, then unzip the file first + if (strmatch(filename, '*.gz')) then begin + spawn, 'gunzip '+filename + thisfile = strmid(filename, 0, strlen(filename)-3) + endif else begin + thisfile = filename + endelse + + if (NOT keyword_set(exten_no)) then exten_no = 0 + + ;---------- + ; Make sure the header cards are all exactly 80 characters + + if (keyword_set(hdr)) then begin + hdr = strmid(hdr+string(' ',format='(a80)'),0,80) + endif + + ;---------- + ; If we don't think the header size or data size will require a new block, + ; call MODFITS to modify the header + + qbigger = 0 + + if (keyword_set(hdr)) then begin + hdr1 = headfits(thisfile, exten=exten_no) + if (NOT keyword_set(hdr1)) then $ + message, 'EXTEN_NO does not exist in file '+thisfile +; if ((n_elements(hdr)+79)/80 GT (n_elements(hdr1)+79)/80) then qbigger = 1 + if (n_elements(hdr) GT n_elements(hdr1)) then qbigger = 1 + endif + + qstruct = 0 + if (keyword_set(thisdata) OR keyword_set(delete_data)) then begin + data1 = mrdfits(thisfile, exten_no) + qstruct = size(thisdata, /tname) EQ 'STRUCT' + if (qstruct) then begin + nbytes1 = n_tags(data1, /length) + nbytes = n_tags(thisdata, /length) + endif else begin + nbytes1 = n_elements(data1) * bitsperpixel(size(data1,/type)) + if (keyword_set(delete_data)) then $ + nbytes = 0 $ + else $ + nbytes = n_elements(thisdata) * bitsperpixel(size(thisdata,/type)) + endelse + if (NOT keyword_set(data1) OR $ + (nbytes+2879)/2880 GT (nbytes1+2879)/2880) then qbigger = 1 + endif + + ;---------- + ; For now, the Goddard routine MODFITS does not work with structures. + ; So don't use it in that case. + + if ( (qbigger EQ 0) AND (qstruct EQ 0) $ + AND (NOT keyword_set(delete_data)) ) then begin + + modfits, thisfile, thisdata, hdr, exten_no=exten_no + + endif else begin + + ;---------- + ; Read in all the headers and data arrays for FILENAME + + data1 = readfits(thisfile, hdr1) + pdata = ptr_new(data1) + phdr = ptr_new(hdr1) + nhdu = 1 + + while (keyword_set(hdr1)) do begin + hdr1 = 0 + data1 = mrdfits(thisfile, nhdu, hdr1) + if (keyword_set(hdr1)) then begin + phdr = [phdr, ptr_new(hdr1)] + pdata = [pdata, ptr_new(data1)] + nhdu = nhdu + 1 + endif + endwhile + + if (exten_no GE n_elements(phdr)) then $ + message, 'EXTEN_NO does not exist in file '+thisfile + + ;---------- + ; Re-write all the headers and data arrays to FILENAME, modifying the + ; one specified by EXTEN_NO + + if (keyword_set(hdr)) then begin + ptr_free, phdr[exten_no] + phdr[exten_no] = ptr_new(hdr) + endif + + if (keyword_set(delete_data)) then begin + ptr_free, pdata[exten_no] + pdata[exten_no] = ptr_new(0) + endif else if (keyword_set(thisdata)) then begin + ptr_free, pdata[exten_no] + pdata[exten_no] = ptr_new(thisdata) + endif + + writefits, thisfile, *(pdata[0]), *(phdr[0]) + for ihdu=1, nhdu-1 do begin + mwrfits_named, *(pdata[ihdu]), thisfile, hdr=*(phdr[ihdu]), name=name + endfor + + ;---------- + ; Free memory + + for ihdu=0, nhdu-1 do begin + ptr_free, phdr[ihdu] + ptr_free, pdata[ihdu] + endfor + + endelse + + ;---------- + ; If the file appears to be g-zipped, then re-g-zip the file at the end + + if (strmatch(filename, '*.gz')) then begin + spawn, 'gzip '+thisfile + endif + + return +end +;----------------------------------------------------------------------- diff --git a/pro/idlutils/mwrfits_named.pro b/pro/idlutils/mwrfits_named.pro new file mode 100644 index 000000000..6e45b5fd3 --- /dev/null +++ b/pro/idlutils/mwrfits_named.pro @@ -0,0 +1,16 @@ +pro mwrfits_named, data, filename, hdr=hdr, name=name, desc=desc, $ + _EXTRA = _EXTRA + if keyword_set(hdr) then begin + hdr_tmp = hdr[*] + endif + if keyword_set(name) then begin + name = STRUPCASE(name) + if keyword_set(desc) then $ + sxaddpar, hdr_tmp, 'EXTNAME', name, desc $ + else sxaddpar, hdr_tmp, 'EXTNAME', name + + endif + mwrfits, data, filename, hdr_tmp, _EXTRA=_EXTRA + hdr_tmp = 0 + return +end diff --git a/pro/idlutils/ps2pdf.pro b/pro/idlutils/ps2pdf.pro new file mode 100644 index 000000000..2dffba24d --- /dev/null +++ b/pro/idlutils/ps2pdf.pro @@ -0,0 +1,41 @@ +;+ +; NAME: +; ps2pdf +; +; PURPOSE: +; Convert PS plots to PDF plots +; +; CALLING SEQUENCE: +; ps2pdf, plotfile +; +; INPUTS: +; plotfile - PS plot filename +; +; COMMENTS: +; +; EXAMPLES: +; +; BUGS: +; +; PROCEDURES CALLED: +; spawn +; splog +; +; INTERNAL SUPPORT ROUTINES: +; +; REVISION HISTORY: +; 19-Jan-2024 Witten by S. Morrison, UIUC +;- +;------------------------------------------------------------------------------ + +pro ps2pdf, plotfile + + cmd = 'ps2pdf '+plotfile+ ' '+repstr(plotfile,'.ps','.pdf') + splog, 'SPAWN '+cmd + spawn, cmd, sh_out, sh_err + splog, 'SPAWN out=', sh_out + splog, 'SPAWN err=', sh_err + splog, 'Done convert '+plotfile+' to pdf' + + return +end diff --git a/pro/idlutils/sdss_specobjid.pro b/pro/idlutils/sdss_specobjid.pro deleted file mode 100644 index 65ccf6880..000000000 --- a/pro/idlutils/sdss_specobjid.pro +++ /dev/null @@ -1,111 +0,0 @@ -;+ -; NAME: -; sdss_specobjid -; PURPOSE: -; convert spectrum identifiers to CAS-style SPECID -; CALLING SEQUENCE: -; specobjid= sdss_specobjid(plate, fiber, mjd, rerun [, line=, index=]) -; INPUTS: -; plate - [N] plate id -; fiberid - [N] fiber number -; mjd - [N] mjd -; rerun - [N] reruns of object(s) -; OPTIONAL INPUTS: -; line - a line measure, with this code number (1-indexed) -; index - an index measure, with this code number (1-indexed) -; OUTPUTS: -; specobjid - [N] resulting CAS-style specobjid(s) -; COMMENTS: -; Cannot specify both "line" and "index" as non-zero -; Bits are assigned in specobjid (a ulong64 #) -; 50-63 plate id number (18 bits) -; 38-49 fiber id number (12 bits) -; 24-37 MJD (date) plate was observed minus 50000 (14 bits) -; 10-23 rerun (14 bits) -; 0-9 line/redshift/index: 0 for SpecObj, else number of -; spectroscopic line (SpecLine) or index (SpecLineIndex) -; (10 bits) -; This definition differs from that in DR7. -; MJD must be > 50000 -; Rerun can be an integer, like 26, or a string of the form 'vN_M_P', -; where N, M and P are integers, with the restriction 5<=N<=6, -; 0<=M<=99, and 0<=P<=99. This is understood to be the RUN2D value -; for a spectrum. In the latter case, the 14 bits for the rerun are -; filled with (N-1)*10000+M*100+P -; BUGS: -; No provision is made for v7 or greater software versions, or for -; cases where the RUN1D value is relevant (not either '' or equal to -; RUN2D). -; REVISION HISTORY: -; Written by MRB, NYU 24-10-2008 -; VERSION: -; $Id: sdss_specobjid.pro 130412 2012-02-16 21:22:13Z blanton $ -; $Id: sdss_specobjid.pro 130412 2020-06-20 20:42:13Z HJIM modify the plate to 18 bits $ -;------------------------------------------------------------------------------ -FUNCTION sdss_specobjid, plate, fiber, mjd, in_rerun, line=line, index=index - nplate=N_ELEMENTS(plate) - IF nplate EQ 0 THEN MESSAGE, 'Must specify PLATE.' - IF (KEYWORD_SET(line) GT 0 AND KEYWORD_SET(index) GT 0) THEN $ - MESSAGE, 'Cannot set both LINE and INDEX!' - IF ~KEYWORD_SET(line) THEN line= REPLICATE(0L, nplate) - IF ~KEYWORD_SET(index) THEN index= REPLICATE(0L, nplate) - IF (N_ELEMENTS(fiber) NE nplate OR $ - N_ELEMENTS(mjd) NE nplate OR $ - N_ELEMENTS(in_rerun) NE nplate) THEN $ - MESSAGE, 'PLATE, FIBER, MJD, RERUN all need same size' - mjdm5= mjd-50000L - codenumber=0L - ; - ; Determine whether rerun is an integer - ; - IF SIZE(in_rerun,/TYPE) EQ 7 THEN BEGIN - IF STREGEX(STRTRIM(in_rerun,2),'^[0-9]+$',/BOOLEAN) THEN BEGIN - ; - ; OK, even though it's a string, it is still a pure integer - ; - rerun = LONG(in_rerun) - ENDIF ELSE BEGIN - ; - ; Here's where we have to deal with mapping rerun strings - ; to integers. - ; - words= STREGEX(STRTRIM(in_rerun,2),'^v([0-9]+)_([0-9]+)_([0-9]+)', /SUB, $ - /EXTRACT) - If(N_ELEMENTS(words) ne 4) THEN $ - MESSAGE, 'Rerun name should be of form vN_M_P' - rerun= (long(words[1])-5L)*10000L+ $ - (long(words[2])*100L)+ $ - (long(words[3])) - ENDELSE - ENDIF ELSE BEGIN - rerun= in_rerun - ENDELSE - IF KEYWORD_SET(line) THEN codenumber= line - IF KEYWORD_SET(index) THEN codenumber= index - ibad= WHERE( plate LT 0 OR plate GE 2L^18 OR $ - fiber LT 0 OR fiber GT 2L^12 OR $ - mjdm5 LT 0 OR mjdm5 GE 2L^14 OR $ - rerun LT 0 OR rerun GE 2L^14 OR $ - codenumber LT 0 OR codenumber GE 2L^10, nbad) - IF (nbad GT 0) THEN MESSAGE, 'Inputs out of bounds!' - ; - ; convert to ulong64 and clip - ; - ul2=ULONG64(2) - ulplate= ULONG64(plate) AND (ul2^18-1) - ulfiber= ULONG64(fiber) AND (ul2^12-1) - ulmjdm5= ULONG64(mjdm5) AND (ul2^14-1) - ulrerun= ULONG64(rerun) AND (ul2^14-1) - ulcodenumber= ULONG64(codenumber) AND (ul2^10-1) - ; - ; load bits into right parts of objid - ; - specobjid= ULON64ARR(nplate) - specobjid= specobjid OR $ - ISHFT(ulplate,50) OR $ - ISHFT(ulfiber,38) OR $ - ISHFT(ulmjdm5,24) OR $ - ISHFT(ulrerun,10) OR $ - ISHFT(ulcodenumber,0) - RETURN, specobjid -END diff --git a/pro/idlutils/sdss_specobjid_18.pro b/pro/idlutils/sdss_specobjid_18.pro deleted file mode 100644 index 57350a47a..000000000 --- a/pro/idlutils/sdss_specobjid_18.pro +++ /dev/null @@ -1,111 +0,0 @@ -;+ -; NAME: -; sdss_specobjid_18 -; PURPOSE: -; convert spectrum identifiers to CAS-style SPECID -; CALLING SEQUENCE: -; specobjid= sdss_specobjid(plate, fiber, mjd, rerun [, line=, index=]) -; INPUTS: -; plate - [N] plate id -; fiberid - [N] fiber number -; mjd - [N] mjd -; rerun - [N] reruns of object(s) -; OPTIONAL INPUTS: -; line - a line measure, with this code number (1-indexed) -; index - an index measure, with this code number (1-indexed) -; OUTPUTS: -; specobjid - [N] resulting CAS-style specobjid(s) -; COMMENTS: -; Cannot specify both "line" and "index" as non-zero -; Bits are assigned in specobjid (a ulong64 #) -; 50-63 plate id number (18 bits) -; 38-49 fiber id number (12 bits) -; 24-37 MJD (date) plate was observed minus 50000 (14 bits) -; 10-23 rerun (14 bits) -; 0-9 line/redshift/index: 0 for SpecObj, else number of -; spectroscopic line (SpecLine) or index (SpecLineIndex) -; (10 bits) -; This definition differs from that in DR7. -; MJD must be > 50000 -; Rerun can be an integer, like 26, or a string of the form 'vN_M_P', -; where N, M and P are integers, with the restriction 5<=N<=6, -; 0<=M<=99, and 0<=P<=99. This is understood to be the RUN2D value -; for a spectrum. In the latter case, the 14 bits for the rerun are -; filled with (N-1)*10000+M*100+P -; BUGS: -; No provision is made for v7 or greater software versions, or for -; cases where the RUN1D value is relevant (not either '' or equal to -; RUN2D). -; REVISION HISTORY: -; Written by MRB, NYU 24-10-2008 -; VERSION: -; $Id: sdss_specobjid.pro 130412 2012-02-16 21:22:13Z blanton $ -; $Id: sdss_specobjid.pro 130412 2020-06-20 20:42:13Z HJIM modify the plate to 18 bits $ -;------------------------------------------------------------------------------ -FUNCTION sdss_specobjid_18, plate, fiber, mjd, in_rerun, line=line, index=index - nplate=N_ELEMENTS(plate) - IF nplate EQ 0 THEN MESSAGE, 'Must specify PLATE.' - IF (KEYWORD_SET(line) GT 0 AND KEYWORD_SET(index) GT 0) THEN $ - MESSAGE, 'Cannot set both LINE and INDEX!' - IF ~KEYWORD_SET(line) THEN line= REPLICATE(0L, nplate) - IF ~KEYWORD_SET(index) THEN index= REPLICATE(0L, nplate) - IF (N_ELEMENTS(fiber) NE nplate OR $ - N_ELEMENTS(mjd) NE nplate OR $ - N_ELEMENTS(in_rerun) NE nplate) THEN $ - MESSAGE, 'PLATE, FIBER, MJD, RERUN all need same size' - mjdm5= mjd-50000L - codenumber=0L - ; - ; Determine whether rerun is an integer - ; - IF SIZE(in_rerun,/TYPE) EQ 7 THEN BEGIN - IF STREGEX(STRTRIM(in_rerun,2),'^[0-9]+$',/BOOLEAN) THEN BEGIN - ; - ; OK, even though it's a string, it is still a pure integer - ; - rerun = LONG(in_rerun) - ENDIF ELSE BEGIN - ; - ; Here's where we have to deal with mapping rerun strings - ; to integers. - ; - words= STREGEX(STRTRIM(in_rerun,2),'^v([0-9]+)_([0-9]+)_([0-9]+)', /SUB, $ - /EXTRACT) - If(N_ELEMENTS(words) ne 4) THEN $ - MESSAGE, 'Rerun name should be of form vN_M_P' - rerun= (long(words[1])-5L)*10000L+ $ - (long(words[2])*100L)+ $ - (long(words[3])) - ENDELSE - ENDIF ELSE BEGIN - rerun= in_rerun - ENDELSE - IF KEYWORD_SET(line) THEN codenumber= line - IF KEYWORD_SET(index) THEN codenumber= index - ibad= WHERE( plate LT 0 OR plate GE 2L^18 OR $ - fiber LT 0 OR fiber GT 2L^12 OR $ - mjdm5 LT 0 OR mjdm5 GE 2L^14 OR $ - rerun LT 0 OR rerun GE 2L^14 OR $ - codenumber LT 0 OR codenumber GE 2L^10, nbad) - IF (nbad GT 0) THEN MESSAGE, 'Inputs out of bounds!' - ; - ; convert to ulong64 and clip - ; - ul2=ULONG64(2) - ulplate= ULONG64(plate) AND (ul2^18-1) - ulfiber= ULONG64(fiber) AND (ul2^12-1) - ulmjdm5= ULONG64(mjdm5) AND (ul2^14-1) - ulrerun= ULONG64(rerun) AND (ul2^14-1) - ulcodenumber= ULONG64(codenumber) AND (ul2^10-1) - ; - ; load bits into right parts of objid - ; - specobjid= ULON64ARR(nplate) - specobjid= specobjid OR $ - ISHFT(ulplate,50) OR $ - ISHFT(ulfiber,38) OR $ - ISHFT(ulmjdm5,24) OR $ - ISHFT(ulrerun,10) OR $ - ISHFT(ulcodenumber,0) - RETURN, specobjid -END diff --git a/pro/idlutils/strct_to_struct.pro b/pro/idlutils/strct_to_struct.pro deleted file mode 100644 index fd965950a..000000000 --- a/pro/idlutils/strct_to_struct.pro +++ /dev/null @@ -1,30 +0,0 @@ -function strct_to_struct, inStructure,inIndx, inTag,$ - outStructure,outIndx, outTag=outTag, $ - nomatch=nomatch, altTag=altTag, altOutTag=altOutTag - nomatch = 0 - if not keyword_set(outTag) then outTag=inTag - - if (tag_exist(outStructure,outTag) AND tag_exist(inStructure,inTag)) then begin - inTaginx = where(strmatch(tag_names(inStructure), inTag,/FOLD_CASE) eq 1) - outTaginx = where(strmatch(tag_names(outStructure), outTag,/FOLD_CASE) eq 1) - if isa(outIndx, /string) then begin - if isa(inIndx,/string) then outStructure.(outTaginx) = inStructure.(inTaginx) $ - else outStructure.(outTaginx) = inStructure[inIndx].(inTaginx) - endif else begin - if isa(inIndx,/string) then outStructure[outIndx].(outTaginx) = inStructure.(inTaginx) $ - else outStructure[outIndx].(outTaginx) = inStructure[inIndx].(inTaginx) - endelse - endif else begin - if keyword_set(altTag) then begin - if not keyword_set(altOutTag) then altOutTag=altTag - if (tag_exist(outStructure,altOutTag) AND tag_exist(inStructure,altTag)) then begin - inTaginx = where(strmatch(tag_names(inStructure), altTag,/FOLD_CASE) eq 1) - outTaginx = where(strmatch(tag_names(outStructure), altOutTag,/FOLD_CASE) eq 1) - - if isa(inIndx,/string) then outStructure[outIndx].(outTaginx) = inStructure.(inTaginx) $ - else outStructure[outIndx].(outTaginx) = inStructure[inIndx].(inTaginx) - endif else nomatch=1 - endif else nomatch=1 - endelse - return, outStructure -end diff --git a/pro/idlutils/yannyhdr_to_struct.pro b/pro/idlutils/yannyhdr_to_struct.pro deleted file mode 100644 index bf9c2479d..000000000 --- a/pro/idlutils/yannyhdr_to_struct.pro +++ /dev/null @@ -1,66 +0,0 @@ - -function yannyhdr_to_struct, hdr, extname, plugdir=plugdir, hdr_struct=hdr_struct, cartid=cartid - - if not keyword_set(plugdir) then plugdir = file_dirname(extname) - extname = file_basename(extname) - nhead=n_elements(hdr) - this_hdr_struct = create_struct('EXTNAME', extname, 'PLUGDIR', plugdir) - for i=0, nhead-1 do begin - if strmid(hdr[i],0,1) EQ "#" then continue - if strmid(hdr[i],0,8) EQ "EVILSCAN" then continue - if strlen(hdr[i]) eq 0 then continue - key = (str_sep( strtrim(hdr[i],2), ' '))[0] - if strlen(key) eq 0 then continue - ct = 0 - key_flag = 0 - check = where(strmatch(tag_names(this_hdr_struct), key, /fold_case), ct) - while ct ne 0 do begin - key_flag = 1 - check = where(strmatch(tag_names(this_hdr_struct), key+'_'+strtrim(key_flag,2), /fold_case), ct) - endwhile - if keyword_set(key_flag) then key = key+'_'+strtrim(key_flag,2) - this_hdr_struct = struct_addtags(this_hdr_struct, create_struct(key, strjoin(yanny_par_fc(hdr, key),' '))) - endfor - - if not keyword_set(cartid) then begin - if strtrim(yanny_par_fc(hdr,'observatory'),2) eq 'APO' then begin - this_hdr_struct = struct_addtags(this_hdr_struct, create_struct('cartridgeId', 'FPS-N')) - endif else this_hdr_struct = struct_addtags(this_hdr_struct, create_struct('cartridgeId', 'FPS-S')) - endif else begin - check = where(strmatch(tag_names(this_hdr_struct), 'cartridgeId', /fold_case), ct) - if ct eq 0 then this_hdr_struct = struct_addtags(this_hdr_struct, create_struct('cartridgeId', cartid)) - endelse - - if keyword_set(hdr_struct) then begin - - hdr_struct_tags = tag_names(hdr_struct) - this_hdr_struct_tags = tag_names(this_hdr_struct) - - hdr_struct_add_tags = [] - this_hdr_struct_add_tags =[] - foreach tag, hdr_struct_tags do begin - junk = where(this_hdr_struct_tags eq tag, ct) - if ct eq 0 then this_hdr_struct_add_tags=[this_hdr_struct_add_tags,tag] - endforeach - foreach tag, this_hdr_struct_tags do begin - if (tag eq 'EXTNAME') or (tag eq 'PLUGDIR') then continue - junk = where(hdr_struct_tags eq tag, ct) - if ct eq 0 then hdr_struct_add_tags=[hdr_struct_add_tags,tag] - endforeach - - empty_hdr_struct = hdr_struct[0] - struct_assign, {junk:!values.f_nan}, empty_hdr_struct - empty_this_struct = replicate(this_hdr_struct[0], n_elements(hdr_struct)) - struct_assign, {junk:!values.f_nan}, empty_this_struct - - if n_elements(hdr_struct_add_tags) gt 0 then $ - hdr_struct = struct_addtags(hdr_struct,struct_selecttags(empty_this_struct, select_tags=hdr_struct_add_tags)) - if n_elements(this_hdr_struct_add_tags) gt 0 then $ - this_hdr_struct = struct_addtags(this_hdr_struct,struct_selecttags(empty_hdr_struct, select_tags=this_hdr_struct_add_tags)) - - this_hdr_struct = struct_selecttags(this_hdr_struct, select_tags=tag_names(hdr_struct)) - hdr_struct=struct_append(hdr_struct, this_hdr_struct) - - endif else hdr_struct = this_hdr_struct - return, hdr_struct -end diff --git a/pro/inspect/inspect_verify.pro b/pro/inspect/inspect_verify.pro deleted file mode 100644 index 8d280644b..000000000 --- a/pro/inspect/inspect_verify.pro +++ /dev/null @@ -1,157 +0,0 @@ -;+ -; NAME: -; inspect_verify -; -; PURPOSE: -; Verify the data format of spInspect files -; -; CALLING SEQUENCE: -; inspect_verify, [ path= ] -; -; INPUTS: -; path - Directory name; default to $SPINSPECT_DIR/data/* -; -; OPTIONAL INPUTS: -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Issue warnings on the following: -; * File name not matchings spInspect-XXXX-YYYYY.par, where XXXX and YYYYY -; are integers -; * Error reading the file as a Yanny-formatted file -; * Empty data file -; * BOSSOBJECT structure missing -; * Any structure name that does not match a structure name in the template -; file -; * For any structure that does exist, if any of the elements in the -; template are missing (those are all considered required) -; * For any structure that does exist, if any of the elements are a -; different variable type from the template file -; * BOSSOBJECT.FIBERID not in the range [1,1000] -; * BOSSOBJECT.FIBERID has duplicate values -; * BOSSOBJECT.CLASS_PERSON not in the range [0,4] -; * BOSSOBJECT.Z_CONF_PERSON not in the range [0,4] -; The template file is $IDLSPEC2D_DIR/opfiles/spInspect-0000-00000.par -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $IDLSPEC2D_DIR/opfiles/spInspect-0000-00000.par -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 23-Jul-2010 Written by David Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro inspect_verify1, filename - - common com_inspect_verify, tstruct, tstnames - - if (NOT keyword_set(tstruct)) then begin - tfile = djs_filepath('spInspect-0000-00000.par', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdir='opfiles') - yanny_read, tfile, tstructs, stnames=tstnames - endif - - splog, prelog=filename - shortname = fileandpath(filename) - if (strmatch(shortname,'spInspect-[0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9][0-9].par') EQ 0) then $ - splog, 'WARNING: Filename not standard' - thisplate = strmid(shortname,10,4) - thismjd = strmid(shortname,15,5) - - yanny_read, filename, pdata, hdr=hdr, stnames=stnames, $ - /anonymous, errcode=errcode - if (errcode NE 0) then $ - splog,' WARNING: Error reading Yanny file '+string(errcode) - if (keyword_set(pdata) EQ 0) then $ - splog, 'WARNING: Empty file' - i = (where(stnames EQ 'BOSSOBJECT', ct))[0] - if (ct EQ 0) then begin - splog, 'WARNING: Missing BOSSOBJECT structure' - endif else begin - thisdat = *(pdata[i]) - if (tag_exist(thisdat,'PLATE')) then begin - indx = where(thisdat.plate NE thisplate, nbad) - if (nbad GT 0) then $ - splog, 'WARNING: PLATE values do not match filename' - endif - if (tag_exist(thisdat,'MJD')) then begin - indx = where(thisdat.mjd NE thismjd, nbad) - if (nbad GT 0) then $ - splog, 'WARNING: MJD values do not match filename' - endif - if (tag_exist(thisdat,'FIBERID')) then begin - indx = where(thisdat.fiberid LT 1 OR thisdat.fiberid GT 1000, nbad) - if (nbad GT 0) then splog, 'WARNING: FIBERID out of range' - fid = thisdat.fiberid - if (n_elements(uniq(fid, sort(fid))) NE n_elements(fid)) then $ - splog, 'WARNING: Duplicate values of FIBERID' - endif - if (tag_exist(thisdat,'CLASS_PERSON')) then begin - indx = where(thisdat.class_person LT 0 $ - OR thisdat.class_person GT 4, nbad) - if (nbad GT 0) then splog, 'WARNING: CLASS_PERSON out of range' - endif - if (tag_exist(thisdat,'Z_CONF_PERSON')) then begin - indx = where(thisdat.z_conf_person LT 0 $ - OR thisdat.z_conf_person GT 4, nbad) - if (nbad GT 0) then splog, 'WARNING: Z_CONF_PERSON out of range' - endif - endelse - - ; For any structure in the file, it must contain all of the required - ; elements in the template file, and be of the same data type - if (keyword_set(pdata)) then begin - for i=0, n_elements(stnames)-1 do begin - j = (where(stnames[i] EQ tstnames, ct1))[0] - if (ct1 EQ 0) then begin - splog, 'Unknown structure ' + stnames[i] - endif else begin - tags1 = tag_names(*pdata[i]) - tags2 = tag_names(*(tstructs[j])) - for k=0, n_elements(tags2)-1 do begin - l = (where(tags1 EQ tags2[k], ct2))[0] - if (ct2 EQ 0) then begin - splog, 'Missing variable '+tags2[k] - endif else begin - if (size((*(pdata[i])).(l), /tname) $ - NE size((*(tstructs[j])).(k), /tname)) then $ - splog, 'Wrong data type for '+tags2[k] - endelse - endfor - endelse - endfor - endif - - return -end - -;------------------------------------------------------------------------------ -pro inspect_verify, path=path1 - - if (keyword_set(path1)) then path = path1 $ - else path = getenv('SPINSPECT_DIR')+'/data/*' - - alldir = file_search(path, /test_directory, count=ndir) - if (ndir EQ 0) then begin - print, 'No directories found' - return - endif - - for idir=0L, ndir-1L do begin - files = file_search(djs_filepath('*', root_dir=alldir[idir]), count=nfile) - for ifile=0L, nfile-1L do begin - inspect_verify1, files[ifile] - endfor - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/inspect/inspectfiles.pro b/pro/inspect/inspectfiles.pro deleted file mode 100644 index 7eae966a8..000000000 --- a/pro/inspect/inspectfiles.pro +++ /dev/null @@ -1,143 +0,0 @@ -;+ -; NAME: -; inspectfiles -; -; PURPOSE: -; Create empty spInspect file(s) for manual inspection of classifications -; -; CALLING SEQUENCE: -; inspectfiles, [ plate, mjd=, inspector=, /clobber ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; plate - Plate number(s); if not set, then select all plates that -; are reduced according to the platelist file. -; mjd - MJD number(s); if not set, then select the most recent -; data for each plate (largest MJD). -; inspector - Name of inspector, which should be a string without -; any whitespace. If set, then output file is -; "spInspect-$PLATE-$MJD-$INSPECTOR.par", otherwise it is -; "spInspect-$PLATE-$MJD.par" with inspector='yourname' -; in the inspector fields of this file. -; clobber - If set, then overwrite any files with the same name -; in the current directory. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; Create spInspect files for all reduced plates and write them in -; the current directory: -; IDL> inspectfiles -; -; Create the file spInspect-0400-51820-knapp.par file for plate 400 observed -; on MJD=51820, filling in the "inspector" fields with the name "knapp": -; IDL> inspectfiles, 400, mjd=51820, inspector='knapp' -; -; BUGS: -; -; PROCEDURES CALLED: -; inspectgen -; platelist -; readspec -; splog -; yanny_write -; -; REVISION HISTORY: -; 20-May-2002 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro inspectfiles, plate, mjd=mjd, inspector=inspector, clobber=clobber - - ;---------- - ; Check that INSPECTOR does not contain whitespace. - - if (keyword_set(inspector)) then begin - if (inspector NE strcompress(inspector,/remove_all)) then begin - print, 'INSPECTOR cannot contain whitespace.' - return - endif - endif - - ;---------- - ; If PLATE is not set, then select all plates - - if (NOT keyword_set(plate)) then begin - platelist, plist=plist - indx = where(strtrim(plist.status1d,2) EQ 'Done') - if (indx[0] EQ -1) then begin - print, 'No reduced plates found' - return - endif - plate = plist[indx].plate - mjd = plist[indx].mjd - endif - - ;---------- - ; If MJD is not set, then find the MJD for each plate - - nplate = n_elements(plate) - if (NOT keyword_set(mjd)) then begin - mjd = lonarr(nplate) - for iplate=0, nplate-1 do begin - mjd1 = 0 - readspec, plate[iplate], mjd=mjd1, topdir=topdir, /silent - if (NOT keyword_set(mjd1)) then begin - print, 'No MJD found for plate ', plate[iplate] - return - endif - mjd[iplate] = mjd1 - endfor - endif else begin - if (n_elements(mjd) NE nplate) then begin - print, 'Number of elements in PLATE and MJD do not agree' - return - endif - endelse - - ;---------- - ; Loop over each plate and generate file - - for iplate=0, nplate-1 do begin - specinspect = 0 - inspectgen, plate[iplate], mjd=mjd[iplate], inspector=inspector, $ - specinspect=specinspect, spectext=spectext, specblend=specblend, $ - hdr=hdr, structs=structs - - if (keyword_set(specinspect)) then begin - if (keyword_set(inspector)) then $ - ;outfile = string(plate[iplate], mjd[iplate], inspector, $ - ; format='("spInspect-",i4.4,"-",i5.5,"-",a,".par")') $ - outfile = 'spInspect-'+plate_to_string(plate[iplate])+$ - string(mjd[iplate], inspector, $ - format='("-",i5.5,"-",a,".par")') - else $ - ;outfile = string(plate[iplate], mjd[iplate], $ - ; format='("spInspect-",i4.4,"-",i5.5,".par")') - outfile = 'spInspect-'+plate_to_string(plate[iplate])+$ - string(mjd[iplate], $ - format='("-",i5.5,".par")') - qexist = keyword_set(findfile(outfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing file: ' + outfile $ - else $ - splog, 'WARNING: Will not over-write file: ' + outfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing file ' + outfile - yanny_write, outfile, [ptr_new(specinspect), ptr_new(spectext), $ - ptr_new(specblend)], hdr=hdr, structs=structs - endif - endif else begin - splog, 'Skipping plate=', plate[iplate], ' MJD=', mjd[iplate] - endelse - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/inspect/inspectgen.pro b/pro/inspect/inspectgen.pro deleted file mode 100644 index 4033c6a1d..000000000 --- a/pro/inspect/inspectgen.pro +++ /dev/null @@ -1,153 +0,0 @@ -;+ -; NAME: -; inspectgen -; -; PURPOSE: -; Create empty spInspect file(s) for manual inspection of classifications -; -; CALLING SEQUENCE: -; inspectgen, plate, mjd=, [ specinspect=, $ -; spectext=, specblend=, hdr=, structs= ] -; -; INPUTS: -; plate - Plate number -; MJD - MJD number -; -; OPTIONAL INPUTS: -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; specinspect- SPECINSPECT structure (640 elements) -; spectext - SPECTEXT structure, with one empty element with fiberid=0 -; specblend - SPECBLEND structure, with one empty element with fiberid=0 -; hdr - String array with Yanny header -; structs - String array with Yanny structure definitions -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; readspec -; sdss_flagval() -; -; REVISION HISTORY: -; 20-May-2002 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro inspectgen, plate, mjd=mjd, specinspect=specinspect, $ - spectext=spectext, specblend=specblend, hdr=hdr, structs=structs - - ;---------- - ; Read the redshifts - - readspec, plate, mjd=mjd, zans=zans, zhdr=zhdr - if (NOT keyword_set(zans)) then return - nfiber = n_elements(zans) - - ;---------- - ; Create the output structures - - specinspect = create_struct( $ - name = 'SPECINSPECT', $ - 'plate' , long(plate), $ - 'mjd' , long(mjd), $ - 'fiberid' , 0L, $ - 'z_pipeline' , 0.0, $ - 'z_person' , 0.0, $ - 'z_conf_person' , string(thisname), $ - 'comments' , '' ) - - spectext = create_struct( $ - name = 'SPECTEXT', $ - 'plate' , long(plate), $ - 'mjd' , long(mjd), $ - 'fiberid' , 0L, $ - 'inspector' , string(thisname), $ - 'manual_text' , '' ) - - specblend = create_struct( $ - name = 'SPECBLEND', $ - 'plate' , long(plate), $ - 'mjd' , long(mjd), $ - 'fiberid' , 0L, $ - 'inspector' , string(thisname), $ - 'manual_class' , '', $ - 'manual_subclass', '', $ - 'manual_z', 0.0, $ - 'manual_comments', '' ) - - ;---------- - ; Fill in the SPECINSPECT structure - - specinspect = replicate(specinspect, nfiber) - specinspect.fiberid = zans.fiberid - specinspect.class = strtrim(zans.class,2) - specinspect.subclass = strtrim(zans.subclass,2) - specinspect.z = zans.z - - ;---------- - ; Mark objects with CLASS = 'SKY' or 'UNKNOWN' - - qsky = (zans.zwarning AND sdss_flagval('ZWARNING','SKY')) NE 0 - isky = where(qsky, nsky) - if (nsky GT 0) then specinspect[isky].class = 'SKY' - - ibad = where(zans.zwarning NE 0 AND qsky EQ 0, nbad) - if (nbad GT 0) then specinspect[ibad].class = 'UNKNOWN' - - ;---------- - ; Set the Yanny header - - hdr = ['plate ' + strtrim(string(plate)), $ - 'mjd ' + strtrim(string(mjd)), $ - 'vers2d ' + sxpar(zhdr,'VERS2D'), $ - 'verscomb ' + sxpar(zhdr,'VERSCOMB'), $ - 'vers1d ' + sxpar(zhdr,'VERS1D'), $ - 'inspector ' + thisname ] - - ;---------- - ; Explicitly set the Yanny structure description in order to - ; set the string lengths, whose lengths must be explicitly set - ; for the benefit of the fTCL Yanny reader. - - structs = [ $ - 'typedef struct {', $ - ' int PLATE;', $ - ' int MJD;', $ - ' int FIBERID;', $ - ' char CLASS[20];', $ - ' char SUBCLASS[40];', $ - ' float Z;', $ - ' char INSPECTOR[20];', $ - ' char MANUAL_CLASS[20];', $ - ' char MANUAL_SUBCLASS[40];', $ - ' float MANUAL_Z;', $ - ' char MANUAL_COMMENTS[80];', $ - '} SPECINSPECT;', $ - ' ', $ - 'typedef struct {', $ - ' int PLATE;', $ - ' int MJD;', $ - ' int FIBERID;', $ - ' char INSPECTOR[20];', $ - ' char MANUAL_TEXT[800];', $ - '} SPECTEXT;', $ - ' ', $ - 'typedef struct {', $ - ' int PLATE;', $ - ' int MJD;', $ - ' int FIBERID;', $ - ' char INSPECTOR[20];', $ - ' char MANUAL_CLASS[20];', $ - ' char MANUAL_SUBCLASS[40];', $ - ' float MANUAL_Z;', $ - ' char MANUAL_COMMENTS[80];', $ - '} SPECBLEND;'] - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/lrg_photoz.pro b/pro/photoz/lrg_photoz.pro deleted file mode 100644 index e5d0d4991..000000000 --- a/pro/photoz/lrg_photoz.pro +++ /dev/null @@ -1,217 +0,0 @@ -;+ -; NAME: -; lrg_photoz -; -; PURPOSE: -; Very simple photo-z finder for LRGs using a single template. -; -; CALLING SEQUENCE: -; zfit = lrg_photoz(pflux, pflux_ivar, [ /abcorrect, extinction=, $ -; abfudge=, filterlist=, adderr=, z_err=, chi2= ] ) -; -; INPUTS: -; pflux - Object fluxes in the 5 SDSS filters [5,NOBJ] -; pflux_ivar - Inverse variances for FLUX [5,NOBJ] -; -; OPTIONAL INPUTS: -; abcorrect - If set, then convert the input fluxes from the 2.5-m -; natural system to AB fluxes -; extinction - If set, then apply these extinction corrections [5,NOBJ] -; abfudge - Additional AB "fudge factors"; default to adding -; [0,-0.03,0,0,0] mag to input magnitudes, where a positive -; value makes that flux fainter -; filterlist - List of filter indices to use in fits; default to -; using all five filters [0,1,2,3,4] -; adderr - Fractional error to add in quadrature; default to 0.03 -; -; OUTPUTS: -; zfit - Best-fit redshift [NOBJ] -; -; OPTIONAL OUTPUTS: -; z_err - Redshift error, or a negative value if an error -; occurred in the quadratic minimization estimate [NOBJ] -; chi2 - Best-fit chi^2 [NOBJ] -; -; COMMENTS: -; The fluxes should be AB fluxes, or SDSS 2.5-m natural system fluxes -; if /ABCORRECT is set. -; The fluxes should already be extinction-corrected, unless -; the EXTINCTION keyword is passed. -; -; EXAMPLES: -; -; BUGS: -; The LRG template is not quite correct. I have modified the spectrum -; on large scales by multiplying by an empirically-determined function. -; Also, I've extrapolated the two ends of the spectrum -; to be essentially flat in f_lambda. -; The 3-sigma-clipped scatter appears to be 0.023 at z>0.1. -; -; PROCEDURES CALLED: -; computechi2() -; filter_thru() -; find_nminima() -; mrdfits() -; sdssflux2ab -; sxpar() -; -; REVISION HISTORY: -; 15-Oct-2003 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -function lrg_photoz, pflux, pflux_ivar, z_err=z_err, $ - abcorrect=abcorrect, extinction=extinction, abfudge=abfudge, $ - filterlist=filterlist, adderr=adderr, chi2=chi2 - - common com_lrg_photoz, zarr, synflux - - if (n_elements(filterlist) EQ 0) then filterlist = lindgen(5) - if (n_elements(adderr) EQ 0) then adderr = 0.03 - if (n_elements(abfudge) EQ 0) then abfudge = [0,-0.03,0,0,0] - - ;---------- - ; Initialize the template "spectra". - ; This need only be done the first time this function is called, - ; then cached for future calls. - - coeff = [0.2414d0, -2.836d-5] - if (NOT keyword_set(zarr)) then begin - - ; Read in an LRG spectrum - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - eigenfile = 'spLRG-52928.fits' - specflux = mrdfits(djs_filepath(eigenfile, root_dir=eigendir), 0, hdr) - dloglam = sxpar(hdr, 'COEFF1') - loglam = sxpar(hdr, 'COEFF0') + dindgen(sxpar(hdr, 'NAXIS1')) * dloglam - specflux = specflux * 10.d0^(loglam*coeff[0]) - - ; Smooth the end of the spectra - i1 = where(loglam LT alog10(3200), n1) - i2 = where(loglam GT alog10(8800), n2) - val1 = median(specflux[i1]) - val2 = median(specflux[i2]) - w1 = findgen(n1) / (n1-1) - w2 = (n2-findgen(n2)-1) / (n2-1) - specflux[i1] = val1 * (1-w1) + specflux[i1] * w1 - specflux[i2] = val2 * (1-w2) + specflux[i2] * w2 - - ; Expand the wavelength coverage by extending the ends of the spectrum - ; to about 1584,12019 Ang. - bigloglam = 3.2000d0 + dindgen(8800) * 1.d-4 - linterp, loglam, specflux, bigloglam, bigspecflux - bigwave = 10.d0^bigloglam - - ; Fudge the slope of the template... -; bigspecflux = specflux * bigwave^0.22 -; coeff = [4d-5, 4d-9, -4d-5] -; bigspecflux = bigspecflux $ -; * (1 + coeff[0] * bigwave + coeff[1] * bigwave^2) -; coeff = [0.2211d0, -1.972d-5] -; bigspecflux = bigspecflux * bigwave^coeff[0] - - ; Convert from f_lambda to f_nu - flambda2fnu = bigwave^2 / 2.99792d18 - bigspecflux = bigspecflux * flambda2fnu - - numz = 101 - zarr = 0.01 * findgen(numz) - - synflux = dblarr(5,numz) - for iz=0L, numz-1 do begin - print, format='("Z ",i5," of ",i5,a1,$)', $ - iz, numz, string(13b) - thiswave = 10.d0 ^ (bigloglam + alog10(1 + zarr[iz])) - synflux[*,iz] = filter_thru( $ -; bigspecflux * (1 + coeff[2] * zarr[iz] * bigwave), $ - bigspecflux * (1 + coeff[1] * zarr[iz] * bigwave), $ - waveimg=thiswave, /toair) - endfor - print - endif - - ;---------- - ; Initialize variables - - ndim = size(pflux, /n_dimen) - dims = size(pflux, /dimens) - if (ndim EQ 1) then begin - nobj = 1 - zfit = 0. - z_err = 0. - chi2 = 0. - endif else begin - nobj = dims[1] - zfit = fltarr(nobj) - z_err = fltarr(nobj) - chi2 = fltarr(nobj) - endelse - - ;---------- - ; Loop over each object -- fit redshifts - - numz = n_elements(zarr) - - for iobj=0L, nobj-1 do begin - print, format='("Object ",i5," of ",i5,a1,$)', $ - iobj, nobj, string(13b) - - chi2arr = dblarr(numz) - - ; Apply AB corrections - if (keyword_set(abcorrect)) then begin - thisflux = sdssflux2ab( pflux[*,iobj] ) - thisisig = sqrt( sdssflux2ab(pflux_ivar[*,iobj], /ivar) ) - endif else begin - thisflux = pflux[*,iobj] - thisisig = sqrt(pflux_ivar[*,iobj]) - endelse - - ; Apply additional fudge terms to AB corrections - if (keyword_set(abfudge)) then begin - thisflux = thisflux * 10.d0^(-abfudge/2.5) - thisisig = thisisig / 10.d0^(-abfudge/2.5) - endif - - ; Apply extinction corrections - if (keyword_set(extinction)) then begin - thisflux = thisflux * 10.^(0.4*extinction[*,iobj]) - thisisig = thisisig / 10.^(0.4*extinction[*,iobj]) - endif - - ; Insist that we don't use any NaN values - ibad = where(finite(thisflux) EQ 0 OR finite(thisisig) EQ 0, nbad) - if (nbad GT 0) then begin - thisflux[ibad] = 0 - thisisig[ibad] = 0 - endif - - ; Add ADDERR in quadrature - igood = where(thisisig GT 0, ngood) - if (ngood GT 0) then begin - thisisig[igood] = sqrt( 1. / (1./thisisig[igood]^2 $ - + (adderr*(thisflux[igood]>0))^2) ) - endif - - ; Loop over each redshift, and compute the chi^2 - for iz=0L, numz-1 do begin - chi2arr[iz] = computechi2(thisflux[filterlist], thisisig[filterlist], $ - synflux[filterlist,iz], acoeff=acoeff, dof=dof) - endfor - - ; Fit a quadratic function to the 3 points surrounding the minimum, - ; and use that function to estimate the error - zfit[iobj] = find_nminima(chi2arr, zarr, width=1.5*(zarr[1]-zarr[0]), $ - xerr=xerr1, errcode=errcode, ypeak=ypeak1) - z_err[iobj] = xerr1 * (errcode EQ 0) + errcode - chi2[iobj] = ypeak1 - endfor - print - -; Below makes the color-color plots for the photo-z -;gr = 2.5*alog10(synflux[2,*]/synflux[1,*]) -;ri = 2.5*alog10(synflux[3,*]/synflux[2,*]) -;splot,gr,ri,ps=-4 - - return, zfit -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/lrg_photoz_test.pro b/pro/photoz/lrg_photoz_test.pro deleted file mode 100644 index 88bad9cab..000000000 --- a/pro/photoz/lrg_photoz_test.pro +++ /dev/null @@ -1,59 +0,0 @@ -; Select spectroscopically-confirmed LRGs, and compute photo-z's -; for comparison to spectroscopic redshifts. - -pro lrg_photoz_test - - ; Read the spAll file - spfile = filepath('spAll.fits', root_dir=getenv('BOSS_SPECTRO_REDUX')) - columns = ['PROGNAME', 'PLATEQUALITY', 'PLATE', 'FIBERID', 'MJD', $ - 'RUN', 'RERUN', 'CAMCOL', 'FIELD', 'ID', $ - 'CLASS', 'SPECPRIMARY', 'PRIMTARGET', 'Z', 'Z_ERR', 'ZWARNING', $ - 'MODELFLUX', 'MODELFLUX_IVAR', 'EXTINCTION','NMGYPERCOUNT','COLC'] - spall = hogg_mrdfits(spfile, 1, columns=columns, $ - nrowchunk=10000L) ;, range=[100000,200000]) - - ; Trim to LRGs - itrim = where(strmatch(spall.platequality,'good*') $ -; AND strmatch(spall.progname,'main*') $ -; AND strmatch(spall.class,'GALAXY*') $ -; AND total(spall.modelflux_ivar GT 0,1) EQ 5 $ ; Good photom in *all* bands - AND spall.modelflux_ivar[1] $ ; Good photom in g-band - AND spall.modelflux_ivar[2] $ ; Good photom in r-band - AND spall.modelflux_ivar[3] $ ; Good photom in i-band - AND (spall.primtarget AND (2L^5+2L^26)) NE 0 $ ; Targetted as LRG -; AND spall.zwarning EQ 0 $ - AND spall.specprimary EQ 1, ntrim) ; Best spectroscopic observations - spall = spall[itrim] - - ; Do the photo-z fits - zfit = lrg_photoz(spall.modelflux, spall.modelflux_ivar, z_err=zfit_err, $ - extinction=spall.extinction, /abcorrect, chi2=chi2) - zdiff = zfit - spall.z - - azdiff = abs(zfit - spall.z) - print, " zMin zMax Nobj 68%cf 90%cf 95%cf 99%cf" - for i=0, 13 do begin - if (i LT 13) then begin - zmin = 0.05 * i - zmax = 0.05 * (i+1) - endif else begin - zmin = 0.10 - zmax = 0.60 - endelse - indx = where(spall.z GT zmin AND spall.z LE zmax, ct) - isort = indx[sort(azdiff[indx])] - i68 = isort[0.68*ct] - i95 = isort[0.95*ct] - i99 = isort[0.99*ct] - print, zmin, zmax, ct, median(zdiff[indx]), $ - azdiff[i68], azdiff[i95], azdiff[i99], $ - format='(2f5.2,i7,f10.4,3f8.3)' - endfor - - splot, spall.z, zfit, psym=3, yr=[0,0.6], $ - xtitle='Spectroscopic Z', ytitle='Photometric Z' - soplot, [0,1], [0,1], color='red' -save - - return -end diff --git a/pro/photoz/lrg_tweak_template.pro b/pro/photoz/lrg_tweak_template.pro deleted file mode 100644 index b78ac678b..000000000 --- a/pro/photoz/lrg_tweak_template.pro +++ /dev/null @@ -1,227 +0,0 @@ -;+ -; NAME: -; lrg_tweak_template -; -; PURPOSE: -; Compute the corrections to the input LRG template used for LRG_PHOTOZ(). -; -; CALLING SEQUENCE: -; lrg_tweak_template, pflux, pflux_ivar, zz, $ -; [ /abcorrect, extinction=, abfudge=, filterlist=, adderr=, $ -; maxiter=, coeff= ] -; -; INPUTS: -; pflux - Object fluxes in the 5 SDSS filters [5,NOBJ] -; pflux_ivar - Inverse variances for FLUX [5,NOBJ] -; zz - Spectroscopic redshifts [NOBJ] -; -; OPTIONAL INPUTS: -; abcorrect - If set, then convert the input fluxes from the 2.5-m -; natural system to AB fluxes -; extinction - If set, then apply these extinction corrections [5,NOBJ] -; abfudge - Additional AB "fudge factors"; default to adding -; [0,-0.03,0,0,0] mag to input magnitudes, where a positive -; value makes that flux fainter -; filterlist - List of filter indices to use in fits; default to -; using all five filters [0,1,2,3,4] -; adderr - Fractional error to add in quadrature; default to 0.03 -; maxiter - Maximum number of iterations; default to 40 -; -; OUTPUTS: -; coeff - Best-fit coefficients for tweaking input LRG template -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine computes the modifications to an input LRG spectrum -; that gives a better total chi^2 when computing photometric redshifts. -; The form of the transformation is: -; Flux = Flux * Wave^COEFF[0] * (1 + COEFF[1] * z * Wave) -; -; The fluxes should be AB fluxes, or SDSS 2.5-m natural system fluxes -; if /ABCORRECT is set. -; The fluxes should already be extinction-corrected, unless -; the EXTINCTION keyword is passed. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; computechi2() -; filter_thru() -; mrdfits() -; sdssflux2ab -; sxpar() -; -; REVISION HISTORY: -; 21-Oct-2003 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -forward_function mpfit, lrg_tweak_fn - -;------------------------------------------------------------------------------ -pro lrg_tweak_template_read, retwave, retflux, coeff=coeff - - common com_lrg_tweak_template_read, loglam, fileflux - - if (NOT keyword_set(loglam)) then begin - ;---------- - ; Initialize the template "spectra". - ; This need only be done the first time this function is called, - ; then cached for future calls. - - ; Read in an LRG spectrum - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - eigenfile = 'spLRG-52928.fits' - fileflux = mrdfits(djs_filepath(eigenfile, root_dir=eigendir), 0, hdr) - dloglam = sxpar(hdr, 'COEFF1') - loglam = sxpar(hdr, 'COEFF0') + dindgen(sxpar(hdr, 'NAXIS1')) * dloglam - endif - - specflux = fileflux * 10.d0^(loglam*coeff[0]) - - ; Smooth the end of the spectra - i1 = where(loglam LT alog10(3200), n1) - i2 = where(loglam GT alog10(8800), n2) - val1 = median(specflux[i1]) - val2 = median(specflux[i2]) - w1 = findgen(n1) / (n1-1) - w2 = (n2-findgen(n2)-1) / (n2-1) - specflux[i1] = val1 * (1-w1) + specflux[i1] * w1 - specflux[i2] = val2 * (1-w2) + specflux[i2] * w2 - - ; Expand the wavelength coverage by extending the ends of the spectrum - ; to about 1584,12019 Ang. - bigloglam = 3.2000d0 + dindgen(8800) * 1.d-4 - linterp, loglam, specflux, bigloglam, bigspecflux - - retwave = 10.d0^bigloglam - retflux = bigspecflux - - return -end -;------------------------------------------------------------------------------ -; Return a vector of all the chi values -function lrg_tweak_fn, coeff - - common com_lrg_tweak_fluxes, pflux, pflux_isig, zz, filterlist - - ; Read the tweaked template - lrg_tweak_template_read, bigwave, bigspecflux, coeff=coeff - - ; Convert from f_lambda to f_nu - flambda2fnu = bigwave^2 / 2.99792d18 - bigspecflux = bigspecflux * flambda2fnu - - ; Select a binning of 0.005 in redshift, and go out to redshift 0.65 - numz = 131 - deltaz = 0.005 - zarr = deltaz * findgen(numz) - - ; Convolve the spectrum with the filters - synflux = dblarr(5,numz) - for iz=0L, numz-1 do begin - print, format='("Z ",i5," of ",i5,a1,$)', $ - iz, numz, string(13b) - thiswave = bigwave * (1 + zarr[iz]) - synflux[*,iz] = filter_thru( $ - bigspecflux * (1.d0 + coeff[1] * zarr[iz] * bigwave), $ - waveimg=thiswave, /toair) - endfor - print - - ; Compute the chi for each object - nobj = n_elements(pflux) / 5 - chivec = dblarr(nobj) - for iobj=0L, nobj-1 do begin - iz = (round(zz[iobj] / deltaz) > 0) < (numz-1) - chivec[iobj] = computechi2(pflux[filterlist,iobj], $ - pflux_isig[filterlist,iobj], synflux[filterlist,iz]) - endfor - - return, chivec -end -;------------------------------------------------------------------------------ -pro lrg_tweak_template, pflux1, pflux_ivar1, zz1, $ - abcorrect=abcorrect, extinction=extinction, abfudge=abfudge, $ - filterlist=filterlist1, adderr=adderr, maxiter=maxiter - - common com_lrg_tweak_fluxes, pflux, pflux_isig, zz, filterlist - - ; Set defaults - if (n_elements(abfudge) EQ 0) then abfudge = [0,-0.03,0,0,0] - if (n_elements(filterlist1) NE 0) then filterlist = filterlist1 $ - else filterlist = lindgen(5) - if (n_elements(adderr) EQ 0) then adderr = 0.03 - if (NOT keyword_set(maxiter)) then maxiter = 40 - - ; Set variables in common blocks - zz = zz1 - - ; Apply AB correction - if (keyword_set(abcorrect)) then begin - pflux = sdssflux2ab(pflux1) - pflux_isig = sqrt( sdssflux2ab(pflux_ivar1, /ivar) ) - endif else begin - pflux = pflux1 - pflux_isig = sqrt(pflux_ivar1) - endelse - - ; Apply additional fudge terms to AB corrections - if (keyword_set(abfudge)) then begin - for jfilt=0, 4 do begin - pflux[jfilt,*] = pflux[jfilt,*] * 10.d0^(-abfudge[jfilt]/2.5) - pflux_isig[jfilt,*] = pflux_isig[jfilt,*] / 10.d0^(-abfudge[jfilt]/2.5) - endfor - endif - - ; Apply extinction corrections - if (keyword_set(extinction)) then begin - pflux = pflux * 10.^(0.4*extinction) - pflux_isig = pflux_isig / 10.^(0.4*extinction) - endif - - ; Insist that we don't use any NaN values - ibad = where(finite(pflux) EQ 0 OR finite(pflux_isig) EQ 0, nbad) - if (nbad GT 0) then begin - pflux[ibad] = 0 - pflux_isig[ibad] = 0 - endif - - ; Add ADDERR in quadrature - igood = where(pflux_isig GT 0, ngood) - if (ngood GT 0) then begin - pflux_isig[igood] = sqrt( 1. / (1./pflux_isig[igood]^2 $ - + (adderr*(pflux[igood]>0))^2) ) - endif - - ; Discard any objects where the baseline photo-z is discrepent by - ; more than 0.10, and discard any low-redshift objects with z > 0.10. - zfit = lrg_photoz(pflux, pflux_isig^2, abfudge=0, adderr=0) - ibad = where(abs(zfit - zz) GT 0.10 OR zz LT 0.10, nbad) - if (nbad GT 0) then begin - print, 'Discard ', nbad, ' objects with low and/or discrepent photo-z' - pflux[*,ibad] = 0 - pflux_isig[*,ibad] = 0 - endif - - ; Call MPFIT to iterate on the solution for the template - parinfo = {value: 0.D, fixed: 0, limited: [0b,0b], limits: [0.d0,0.d0]} - parinfo = replicate(parinfo, 2) - parinfo.value = [0.24d0, -3.d-5] - ftol = 1d-20 - gtol = 1d-20 - xtol = 1d-20 - coeff = mpfit('lrg_tweak_fn', parinfo=parinfo, perror=perror, $ - maxiter=maxiter, ftol=ftol, gtol=gtol, xtol=xtol, $ - niter=niter, status=status) - - print, 'STATUS = ', status - print, 'Best-fit coeffs = ', coeff - print, 'Errors = = ', perror - -stop - return -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/lrgmodel_append_twodf.pro b/pro/photoz/lrgmodel_append_twodf.pro deleted file mode 100644 index de496c8ff..000000000 --- a/pro/photoz/lrgmodel_append_twodf.pro +++ /dev/null @@ -1,44 +0,0 @@ -; Input an existing SPALL structure, and append data from 2dF files. -;------------------------------------------------------------------------------ -function lrgmodel_append_twodf, spall, prefix, nadd=nadd, colorcut=colorcut - - blankobj = spall[0] - struct_assign, {junk:0}, blankobj - - tdf_dir = getenv('SDSS_2DF_DIR') - file1 = filepath('catalogue'+prefix+'.fits', root_dir=tdf_dir, subdir='data') - file2 = filepath('calibObj-'+prefix+'.fits', root_dir=tdf_dir, subdir='data') - dat1 = mrdfits(file1, 1) - dat2 = mrdfits(file2, 1) - ndat = n_elements(dat1) - if (n_elements(dat2) NE ndat OR NOT keyword_set(dat1)) then $ - message, 'Problem reading the 2dF data files' - - ; Trim to only good redshifts where we have matched photometry - qgood = dat1.z_final GT 0.01 AND dat2.modelflux[2] GT 0 - - ; Make Nikhil's color cuts if so requested - if (keyword_set(colorcut)) then begin - grcolor = - 2.5*alog10((dat2.modelflux[1]>0.1) / (dat2.modelflux[2]>0.1)) - ricolor = - 2.5*alog10((dat2.modelflux[2]>0.1) / (dat2.modelflux[3]>0.1)) - ourcolor = ricolor - grcolor/8. - qgood = qgood AND ourcolor GT 0.55 AND grcolor GT 1.4 - endif - - itrim = where(qgood, ntrim) - moredat = replicate(blankobj, ntrim) - copy_struct, dat2[itrim], moredat - moredat.z = dat1[itrim].z_final - - ; Nikhil's calibObj files omit RUN,RERUN,CAMCOL,FIELD, which must - ; be found in the 2dF file. - moredat.run = dat1[itrim].run - moredat.rerun = dat1[itrim].rerun - moredat.camcol = dat1[itrim].camcol - moredat.field = dat1[itrim].field - - nadd = ntrim - return, [spall, moredat] -end -;------------------------------------------------------------------------------ - diff --git a/pro/photoz/lrgmodel_errors.pro b/pro/photoz/lrgmodel_errors.pro deleted file mode 100644 index 66c886559..000000000 --- a/pro/photoz/lrgmodel_errors.pro +++ /dev/null @@ -1,73 +0,0 @@ -;+ -; NAME: -; lrgmodel_errors -; -; PURPOSE: -; Make plots of photo-z's where we increase the errors. -; -; CALLING SEQUENCE: -; lrgmodel_errors -; -; INPUTS: -; -; OPTIONAL INPUTS: -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_oplot -; djs_plot -; hogg_scatterplot -; lrgmodel_photoz() -; -; REVISION HISTORY: -; 22-Dec-2003 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro lrgmodel_errors - - ;---------- - ; Create a fake photo-z catalog - - foo = lrgmodel_photoz(zsplinearr=zarr, synfluxarr=synfluxarr) - nobj = 5000 - iz = long(70 * findgen(nobj)/nobj) - ztrue = zarr[iz] - flux = synfluxarr[*,iz] - - ;---------- - ; Loop through different errors - - dfpsplot, 'photoz-errors.ps', /square, /color - - randarr = randomn(1234, 5, nobj) - for magerr=0.01, 0.10, 0.01 do begin - thiserr = magerr * flux / 1.086 - thisflux = flux + thiserr * randarr - thisivar = 1. / thiserr^2 -;thisivar[0,*] = 0 ; Set u-band S/N to zero -;thisivar[4,*] = 0 ; Set z-band S/N to zero - - zfit = lrgmodel_photoz(thisflux, thisivar) - - djs_plot, ztrue, zfit, $ - psym=3, xr=[0,0.8], yr=[0,0.8], $ - xtitle='True Z', ytitle='Photometric Z' - djs_oplot, !x.crange, !x.crange, color='red' - djs_xyouts, 0.1, 0.7, $ - 'Errors = ' + string(magerr,format='(f4.2)') + ' mag' - endfor - - dfpsclose - -end diff --git a/pro/photoz/lrgmodel_photoz.pro b/pro/photoz/lrgmodel_photoz.pro deleted file mode 100644 index c934b5f08..000000000 --- a/pro/photoz/lrgmodel_photoz.pro +++ /dev/null @@ -1,323 +0,0 @@ -;+ -; NAME: -; lrgmodel_photoz -; -; PURPOSE: -; Simple photo-z finder for LRGs using Bruzual-Charlot models. -; -; CALLING SEQUENCE: -; zfit = lrgmodel_photoz(pflux, pflux_ivar, [ /abcorrect, extinction=, $ -; abfudge=, ageburst=, zmetal=, filterlist=, adderr=, $ -; zsplinearr=, synfluxarr=, z_err=, chi2=, fitflux=, plotfile= ] ) -; -; INPUTS: -; pflux - Object fluxes in the 5 SDSS filters [5,NOBJ]; if not set, -; then simply return with the optional ZSPLINEARR,SYNFLUXARR. -; pflux_ivar - Inverse variances for FLUX [5,NOBJ] -; -; OPTIONAL INPUTS: -; abcorrect - If set, then convert the input fluxes from the 2.5-m -; natural system to AB fluxes -; extinction - If set, then apply these extinction corrections [5,NOBJ] -; abfudge - Additional AB "fudge factors"; default to adding -; [0,0,0,0,0] mag to input magnitudes, where a positive -; value makes that flux fainter -; ageburst - Age of the Universe at the single-burst; default -; to value from previous call, or 2.5 Gyr -; zmetal - Metallicity at the single-burst; default -; to value from previous call, or Z=0.018 -; (where Z=0.02 is solar) -; filterlist - List of filter indices to use in fits; default to -; using all five filters [0,1,2,3,4] -; adderr - Fractional error to add in quadrature; default to 0.03 -; plotfile - If set, then send debugging plots to this file -; -; OUTPUTS: -; zfit - Best-fit redshift [NOBJ] -; -; OPTIONAL OUTPUTS: -; zsplinearr - Array of test redshifts used in the fits [NTEST] -; synfluxarr - Array of the fluxes vs. redshift from the models [5,NTEST] -; z_err - Redshift error, or a negative value if an error -; occurred in the quadratic minimization estimate [NOBJ] -; chi2 - Best-fit chi^2 [NOBJ] -; fitflux - Fluxes for the best-fit model, useful for knowing the -; colors of the best-fit model -; -; COMMENTS: -; The fluxes should be AB fluxes, or SDSS 2.5-m natural system fluxes -; if /ABCORRECT is set. -; The fluxes should already be extinction-corrected, unless -; the EXTINCTION keyword is passed. -; -; EXAMPLES: -; -; BUGS: -; Note that I allow the Bruzual-Charlot models to be extrapolated -; beyond the ages and metallicities that they provide. This is done -; via linear interpolation in log(age)-log(metals)-log(flux) spec. -; This may not be valid. -; -; PROCEDURES CALLED: -; computechi2() -; filter_thru() -; find_nminima() -; readcol -; sdssflux2ab -; sxpar() -; -; REVISION HISTORY: -; 09-Dec-2003 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -function lrgmodel_photoz, pflux, pflux_ivar, z_err=z_err, $ - abcorrect=abcorrect, extinction=extinction, abfudge=abfudge, $ - ageburst=ageburst1, zmetal=zmetal1, $ - filterlist=filterlist, adderr=adderr, chi2=chi2, synfluxarr=synfluxarr, $ - zsplinearr=zsplinearr, fitflux=fitflux, plotfile=plotfile - - common com_lrgmodel_photoz, zarr, agevec, metalvec, $ - allwave, allflux, synflux, ageburst_save, zmetal_save - - if (n_elements(filterlist) EQ 0) then filterlist = lindgen(5) - if (n_elements(adderr) EQ 0) then adderr = 0.03 - if (n_elements(abfudge) EQ 0) then abfudge = [0,0,0,0,0] - if (n_elements(ageburst_save) EQ 0) then ageburst_save = -999 - if (n_elements(zmetal_save) EQ 0) then zmetal_save = -999 - - if (keyword_set(ageburst1)) then ageburst = ageburst1 $ - else ageburst = 2.5 - if (keyword_set(zmetal1)) then zmetal = zmetal1 $ - else zmetal = 0.018 - - ;---------- - ; Read the Bruzual-Charlot model spectra FITS files. - ; This need only be done the first time this function is called, - ; then cached for future calls. - - if (NOT keyword_set(zarr)) then begin - - metalstr = ['z008', 'z02', 'z05'] - metalvec = [0.008, 0.02, 0.05] - agestr = [ '5Myr', '25Myr', '100Myr', '290Myr', '640Myr', '900Myr', $ - '1.4Gyr', '2.5Gyr', '5Gyr', '11Gyr' ] - agevec = [0.005, 0.025, 0.100, 0.290, 0.640, 0.900, 1.4, 2.5, 5.0, 11.0] - - ; Read in an model LRG spectra, assuming the same wavelengths for all - nage = n_elements(agevec) - nmetal = n_elements(metalvec) - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - for iage=0, nage-1 do begin - for imetal=0, nmetal-1 do begin - eigenfile = 'ssp_' + agestr[iage] + '_' + metalstr[imetal] + '.spec' - readcol, djs_filepath(eigenfile, root_dir=eigendir), $ - lambda1, flux1, comment='#', format='(F,F)' - if (iage EQ 0 AND imetal EQ 0) then begin - npix = n_elements(lambda1) - allwave = lambda1 - allflux = fltarr(npix, nage, nmetal) - endif - ; Convert to f_nu - flambda2fnu = lambda1^2 / 2.99792d18 - allflux[*,iage,imetal] = flux1 * flambda2fnu - endfor - endfor - - endif - - ;---------- - ; Initialize the colors for the templates as a function of redshift. - - if (ageburst NE ageburst_save OR zmetal NE zmetal_save $ - OR keyword_set(synflux) EQ 0) then begin - - dz = 0.01 - zmin = -0.03 - zmax = 1.0 - numz = (zmax - zmin) / dz + 1 - zarr = zmin + dz * findgen(numz) - - synflux = dblarr(5,numz) - for iz=0L, numz-1 do begin - print, format='("Z ",i5," of ",i5,a1,$)', $ - iz, numz, string(13b) - - ; Convert redshift to an age, using the WMAP cosmology, - ; and say that these galaxies formed when the Universe - ; was AGEBURST Gyr old - hubble0 = 71. * 3.1558e7 / 3.0856e19 * 1e9 ; units of Gyr^-1 - thisage = lookback(1000., 0.27, 0.73) / hubble0 $ - - lookback((zarr[iz] > 0), 0.27, 0.73) / hubble0 - ageburst - - ; Demand that we stay in the bounds (at least the lower bounds) - ; of the models. Specifically, at the minimum, we don't want - ; to be taking the logarithm of zero or negative numbers for - ; these parameters when we interpolate in log-log space. - thisage = thisage > agevec[0] - zmetal = zmetal > metalvec[0] - - ; Linearly interpolate from the templates in log(age),log(zmetal), - ; vs. log(flux) space. - i0 = ((reverse(where(agevec LT thisage)))[0] > 0) $ - < (n_elements(agevec)-2) - j0 = ((reverse(where(metalvec LT zmetal)))[0] > 0) $ - < (n_elements(metalvec)-2) - i1 = i0 + 1 - j1 = j0 + 1 - agewts = [alog10(agevec[i1]/thisage), -alog10(agevec[i0]/thisage)] - metwts = [alog10(metalvec[j1]/zmetal), -alog10(metalvec[j0]/zmetal)] - agewts = agewts / total(agewts) - metwts = metwts / total(metwts) - - thisflux = 10.d0^( $ - agewts[0] * metwts[0] * alog10(allflux[*,i0,j0]) $ - + agewts[0] * metwts[1] * alog10(allflux[*,i0,j1]) $ - + agewts[1] * metwts[0] * alog10(allflux[*,i1,j0]) $ - + agewts[1] * metwts[1] * alog10(allflux[*,i1,j1]) ) - - thiswave = allwave * (1 + zarr[iz]) - - ; Space equally in log-wavelength - bigloglam = 3.2000d0 + dindgen(8800) * 1.d-4 - bigwave = 10.d0^bigloglam - linterp, thiswave, thisflux, bigwave, bigspecflux - - synflux[*,iz] = filter_thru( bigspecflux, $ - waveimg=bigwave, /toair) - endfor - print - ageburst_save = ageburst - zmetal_save = zmetal - endif - - if (arg_present(zsplinearr)) then zsplinearr = zarr - if (arg_present(synfluxarr)) then synfluxarr = synflux - if (NOT keyword_set(pflux)) then return, 0 - - ;---------- - ; Initialize variables - - ndim = size(pflux, /n_dimen) - dims = size(pflux, /dimens) - if (ndim EQ 1) then begin - nobj = 1 - zfit = 0. - z_err = 0. - chi2 = 0. - endif else begin - nobj = dims[1] - zfit = fltarr(nobj) - z_err = fltarr(nobj) - chi2 = fltarr(nobj) - endelse - - ;---------- - ; Loop over each object -- fit redshifts - - numz = n_elements(zarr) - - for iobj=0L, nobj-1 do begin - print, format='("Object ",i8," of ",i8,a1,$)', $ - iobj, nobj, string(13b) - - chi2arr = dblarr(numz) - - ; Apply AB corrections - if (keyword_set(abcorrect)) then begin - thisflux = sdssflux2ab( pflux[*,iobj] ) - thisisig = sqrt( sdssflux2ab(pflux_ivar[*,iobj], /ivar) ) - endif else begin - thisflux = pflux[*,iobj] - thisisig = sqrt(pflux_ivar[*,iobj]) - endelse - - ; Apply additional fudge terms to AB corrections - if (keyword_set(abfudge)) then begin - thisflux = thisflux * 10.d0^(-abfudge/2.5) - thisisig = thisisig / 10.d0^(-abfudge/2.5) - endif - - ; Apply extinction corrections - if (keyword_set(extinction)) then begin - thisflux = thisflux * 10.^(0.4*extinction[*,iobj]) - thisisig = thisisig / 10.^(0.4*extinction[*,iobj]) - endif - - ; Insist that we don't use any NaN values - ibad = where(finite(thisflux) EQ 0 OR finite(thisisig) EQ 0, nbad) - if (nbad GT 0) then begin - thisflux[ibad] = 0 - thisisig[ibad] = 0 - endif - - ; Add ADDERR in quadrature - igood = where(thisisig GT 0, ngood) - if (ngood GT 0) then begin - thisisig[igood] = sqrt( 1. / (1./thisisig[igood]^2 $ - + (adderr*(thisflux[igood]>0))^2) ) - endif - - ; Loop over each redshift, and compute the chi^2 - for iz=0L, numz-1 do begin - chi2arr[iz] = computechi2(thisflux[filterlist], thisisig[filterlist], $ - synflux[filterlist,iz], acoeff=acoeff, dof=dof) -if (finite(chi2arr[iz]) EQ 0) then stop - endfor - - ; Fit a quadratic function to the 3 points surrounding the minimum, - ; and use that function to estimate the error - zfit[iobj] = find_nminima(chi2arr, zarr, width=1.5*(zarr[1]-zarr[0]), $ - xerr=xerr1, errcode=errcode, ypeak=ypeak1) - z_err[iobj] = xerr1 * (errcode EQ 0) + errcode - chi2[iobj] = ypeak1 - - if (arg_present(fitflux)) then begin - ; Interpolate the model fluxes to the exact redshift - if (iobj EQ 0) then fitflux = fltarr(5,nobj) - for j=0, 4 do begin - linterp, zarr, transpose(synflux[j,*]), zfit[iobj], flux1 - fitflux[j,iobj] = flux1 - endfor - ; Re-fit the amplitude of the model fluxes to match the object - junk = computechi2(thisflux[filterlist], thisisig[filterlist], $ - fitflux[filterlist,iobj], acoeff=acoeff) - fitflux[filterlist,iobj] = acoeff[0] * fitflux[filterlist,iobj] - endif - - endfor - print - - ; Below makes the color-color plots for the photo-z - if (keyword_set(plotfile)) then begin - dfpsplot, plotfile, /square, /color - for iobj=0L, nobj-1 do begin - for j=0, 2 do begin - color1 = (2.5*alog10(synflux[j+1,*]/synflux[j,*]))[*] - color2 = (2.5*alog10(synflux[j+2,*]/synflux[j+1,*]))[*] - thiscolor1 = 2.5*alog10(pflux[j+1,iobj]/pflux[j,iobj]) - thiscolor2 = 2.5*alog10(pflux[j+2,iobj]/pflux[j+1,iobj]) - thiserr1 = 2.5*alog10(1+1./(pflux[j,iobj]*sqrt(pflux_ivar[j,iobj]))) $ - + 2.5*alog10(1+1./(pflux[j+1,iobj]*sqrt(pflux_ivar[j+1,iobj]))) - thiserr2 = 2.5*alog10(1+1./(pflux[j+1,iobj]*sqrt(pflux_ivar[j+1,iobj]))) $ - + 2.5*alog10(1+1./(pflux[j+2,iobj]*sqrt(pflux_ivar[j+2,iobj]))) - djs_plot, [color1,thiscolor1], [color2,thiscolor2], /nodata, $ - xtitle='('+filtername(j)+'-'+filtername(j+1)+')', $ - ytitle='('+filtername(j+1)+'-'+filtername(j+2)+')', charsize=1.5, $ - title='Object '+strtrim(iobj,2) $ - + ' z(FIT)='+strtrim(string(zfit[iobj],format='(f5.2)'),2) - djs_oplot, color1, color2, psym=-4 - for k=0, (n_elements(zarr)-1)/10 do $ - djs_xyouts, color1[k*10], color2[k*10], $ - ' z='+strtrim(string(zarr[k*10], format='(f5.2)'),2), $ - charsize=1.5 - djs_oplot, [thiscolor1], [thiscolor2], psym=6, symsize=2, color='red' - djs_oplot, thiscolor1+[-1,1]*thiserr1, thiscolor2+[0,0], color='red' - djs_oplot, thiscolor1+[0,0], thiscolor2+[-1,1]*thiserr2, color='red' - endfor - endfor - dfpsclose - endif - - return, zfit -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/lrgmodel_plots.pro b/pro/photoz/lrgmodel_plots.pro deleted file mode 100644 index 5e8e4f69a..000000000 --- a/pro/photoz/lrgmodel_plots.pro +++ /dev/null @@ -1,263 +0,0 @@ -;+ -; NAME: -; lrgmodel_plots -; -; PURPOSE: -; Generate goodness-of-fit plots from the LRG model photo-z fits. -; -; CALLING SEQUENCE: -; lrgmodel_plots, [ suffix, public=, /recalibrate, /colorcut, $ -; subsamp=, _EXTRA= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; suffix - Suffix name for plot names, which is 'photoz'+SUFFIX+'.ps' -; public - Select public data; this keyword is passed -; to LRGMODEL_READ_SPALL() -; recalibrate - Recalibrate the photometry using SDSS_RECALIBRATE -; colorcut - If set, then make Nikhil's color-cuts on the 2dF data -; subsamp - Subsample the spAll galaxies by this factor; default to 4 -; _EXTRA - Additional keywords to pass to LRGMODEL_PHOTOZ(), -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine reads both the SDSS spectra from spAll, and the SDSS-2dF -; redshifts. -; -; Some of the plots are replicated with the SDSS-2dF points in color. -; The SDSS-2dF 2003A objects are in green, and the 2003B objects are in blue. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_oplot -; djs_plot -; hogg_scatterplot -; lrgmodel_append_twodf() -; lrgmodel_read_spall() -; plothist -; sdss_recalibrate -; -; REVISION HISTORY: -; 18-Dec-2003 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro lrgmodel_plots, suffix, public=public, recalibrate=recalibrate, $ - colorcut=colorcut, subsamp=subsamp, _EXTRA=KeywordsForPhotoz - - if (NOT keyword_set(suffix)) then suffix = '' - if (NOT keyword_set(subsamp)) then subsamp = 4 - csize = 2.5 - thick = 2 - - ;---------- - ; Read the data files - - spall = lrgmodel_read_spall(public=public) - if (subsamp GT 1) then begin - indx = lindgen(floor(float(n_elements(spall))/subsamp)) * subsamp - spall = spall[indx] - endif - -;spall = spall[0:10000] ; Test ??? - nsdss = n_elements(spall) - spall = lrgmodel_append_twodf(spall,'2003A',colorcut=colorcut, nadd=nadd1) - spall = lrgmodel_append_twodf(spall,'2003B',colorcut=colorcut, nadd=nadd2) - - ;---------- - ; Optionally recalibrate the photometry - - if (keyword_set(recalibrate)) then begin - splog,'Recalibrating...' - sdss_recalibrate,spall - splog,'...done' - endif - - ;---------- - ; Trim to Nikhil's LRG target selection - - lrgbits = sdf_select_target(spall, /all) - qtrim = lrgbits NE 0 - itrim = where(qtrim, ntrim) - spall = spall[itrim] - if (nsdss GT 0) then nsdss = total(qtrim[0:nsdss-1]) - if (nadd1 GT 0) then nadd1 = total(qtrim[nsdss:nsdss+nadd1-1]) - if (nadd2 GT 0) then nadd2 = total(qtrim[nsdss+nadd1:nsdss+nadd1+nadd2-1]) - - ;---------- - ; Compute the colors - - grcolor = - 2.5*alog10((spall.modelflux[1]>0.1) / (spall.modelflux[2]>0.1)) - ricolor = - 2.5*alog10((spall.modelflux[2]>0.1) / (spall.modelflux[3]>0.1)) - - ;---------- - ; Fit the photo-z's - - splog,'Fitting photo-zs' - - zfit = lrgmodel_photoz(spall.modelflux, spall.modelflux_ivar, $ - z_err=zfit_err, extinction=spall.extinction, /abcorrect, $ - _EXTRA=KeywordsForPhotoz) - - zdiff = (zfit - spall.z) - azdiff = abs(zdiff) - - ;---------- - ; Print the standard deviations in redshift bins - - print, " zMin zMax Nobj 68%cf 95%cf 99%cf" - for i=0, 17 do begin - if (i LT 17) then begin - zmin = 0.05 * i - zmax = 0.05 * (i+1) - endif else begin - zmin = 0.10 - zmax = 0.80 - endelse - indx = where(spall.z GT zmin AND spall.z LE zmax, ct) - if (ct GT 0) then begin - isort = indx[sort(azdiff[indx])] - i68 = isort[0.68*ct] - i95 = isort[0.95*ct] - i99 = isort[0.99*ct] - print, zmin, zmax, ct, median([zdiff[indx]]), $ - azdiff[i68], azdiff[i95], azdiff[i99], $ - format='(2f5.2,i7,f10.4,3f9.4)' - endif - endfor - - ;---------- - ; PLOT: Photo-z vs. spectro-z (points) - - dfpsplot, 'photoz'+suffix+'.ps', /square, /color - - djs_plot, spall[0:nsdss-1].z, zfit[0:nsdss-1], $ - psym=3, xr=[0,0.8], yr=[0,0.8], $ - xtitle='Spectroscopic Z', ytitle='Photometric Z', charsize=csize, $ - thick=thick, charthick=thick - djs_oplot, !x.crange, !x.crange, color='red', thick=thick - - ; Re-plot with the SDSS-2dF points in color - djs_plot, spall[0:nsdss-1].z, zfit[0:nsdss-1], $ - psym=3, xr=[0,0.8], yr=[0,0.8], $ - xtitle='Spectroscopic Z', ytitle='Photometric Z', charsize=csize, $ - thick=thick, charthick=thick - indx1 = nsdss + lindgen(nadd1) - indx2 = nsdss + nadd1 + lindgen(nadd2) - djs_oplot, spall[indx1].z, zfit[indx1], psym=1, symsize=0.25, $ - color='green', thick=thick - djs_oplot, spall[indx2].z, zfit[indx2], psym=1, symsize=0.25, $ - color='blue', thick=thick - djs_oplot, !x.crange, !x.crange, color='red', thick=thick - - ;---------- - ; PLOT: Photo-z vs. spectro-z (greyscale) - - ii = where(zfit GT 0.01) - hogg_scatterplot, spall[ii].z, zfit[ii], xr=[0,0.8], yr=[0,0.8], $ - xtitle='Spectroscopic Z', ytitle='Photometric Z', /conditional, $ - quantile=[0.025, 0.05, 0.16, 0.5, 0.84, 0.95, 0.975], charsize=csize - djs_oplot, !x.crange, !x.crange, color='red' - djs_oplot, [0.1,0.1], !y.crange, color='red' - - ;---------- - ; PLOT: Delta-z vs. spectro-z (greyscale) - - ii = where(zfit GT 0.01) - hogg_scatterplot, spall[ii].z, zdiff[ii], xr=[0,0.8], yr=[-0.3,0.3], $ - xtitle='Spectroscopic Z', ytitle='z(photo) - z(spectro)', /conditional, $ - quantile=[0.025, 0.05, 0.16, 0.5, 0.84, 0.95, 0.975], charsize=csize - djs_oplot, !x.crange, [0,0], color='red' - djs_oplot, [0.1,0.1], !y.crange, color='red' - - ;---------- - ; PLOT: Delta-z vs. photo-z (greyscale) - - ii = where(zfit GT 0.01) - hogg_scatterplot, zfit[ii], zdiff[ii], xr=[0,0.8], yr=[-0.3,0.3], $ - xtitle='Photometric Z', ytitle='z(photo) - z(spectro)', /conditional, $ - quantile=[0.025, 0.05, 0.16, 0.5, 0.84, 0.95, 0.975], charsize=csize - djs_oplot, !x.crange, [0,0], color='red' - djs_oplot, [0.1,0.1], !y.crange, color='red' - - ;---------- - ; PLOT: Delta-z histogram - - jj = where(spall.z GT 0.10) - binsz = 0.005 - xrange = [-0.3,0.3] - plothist, zdiff[jj], xrange=xrange, bin=binsz, /xstyle, $ - xtitle='z(photo) - z(spectro)', charsize=csize - xvec = findgen((xrange[1]-xrange[0])/binsz) * binsz + xrange[0] - yvec1 = 6000*exp(-(xvec/0.023)^2) - yvec2 = 700*exp(-(xvec/0.023/3)^2) - djs_oplot, xvec, yvec1, color='red' - djs_oplot, xvec, yvec2, color='red' - djs_oplot, xvec, yvec1+yvec2, color='green' - - ;---------- - ; PLOT: Delta-z vs. magnitude (greyscale) - - rmag = 22.5 - 2.5*alog10(spall.modelflux[2] > 1) - ii = where(zfit GT 0.01) - hogg_scatterplot, rmag[ii], zdiff[ii], xr=[14,23], yr=[-0.3,0.3], $ - xtitle='r-mag', ytitle='z(photo) - z(spectro)', /conditional, $ - quantile=[0.025, 0.05, 0.16, 0.5, 0.84, 0.95, 0.975], charsize=csize - djs_oplot, !x.crange, [0,0], color='red' - - ; Re-plot with the SDSS-2dF points in color - hogg_scatterplot, rmag[ii], zdiff[ii], xr=[14,23], yr=[-0.3,0.3], $ - xtitle='r-mag', ytitle='z(photo) - z(spectro)', /conditional, $ - quantile=[0.025, 0.05, 0.16, 0.5, 0.84, 0.95, 0.975], charsize=csize - djs_oplot, !x.crange, [0,0], color='red' - djs_oplot, rmag[indx1], zdiff[indx1], psym=1, symsize=0.25, color='green' - djs_oplot, rmag[indx2], zdiff[indx2], psym=1, symsize=0.25, color='blue' - - ;---------- - ; PLOT: Delta-z vs. (g-r) (greyscale) - - ii = where(zfit GT 0.01) - hogg_scatterplot, grcolor[ii], zdiff[ii], xr=[0.5,3.0], yr=[-0.3,0.3], $ - xtitle='(g-r)', ytitle='z(photo) - z(spectro)', /conditional, $ - quantile=[0.025, 0.05, 0.16, 0.5, 0.84, 0.95, 0.975], charsize=csize - djs_oplot, !x.crange, [0,0], color='red' - - ; Re-plot with the SDSS-2dF points in color - hogg_scatterplot, grcolor[ii], zdiff[ii], xr=[0.5,3.0], yr=[-0.3,0.3], $ - xtitle='(g-r)', ytitle='z(photo) - z(spectro)', /conditional, $ - quantile=[0.025, 0.05, 0.16, 0.5, 0.84, 0.95, 0.975], charsize=csize - djs_oplot, !x.crange, [0,0], color='red' - djs_oplot, grcolor[indx1], zdiff[indx1], psym=1, symsize=0.25, color='green' - djs_oplot, grcolor[indx2], zdiff[indx2], psym=1, symsize=0.25, color='blue' - - ;---------- - ; PLOT: Delta-z vs. [(r-i)-(g-r)/8.] (greyscale) - - xaxis = ricolor - grcolor/8. - ii = where(zfit GT 0.01) - hogg_scatterplot, xaxis[ii], zdiff[ii], xr=[-0.5,2.0], yr=[-0.3,0.3], $ - xtitle='(r-i)-(g-r)/8', ytitle='z(photo) - z(spectro)', /conditional, $ - quantile=[0.025, 0.05, 0.16, 0.5, 0.84, 0.95, 0.975], charsize=csize - djs_oplot, !x.crange, [0,0], color='red' - - ; Re-plot with the SDSS-2dF points in color - hogg_scatterplot, xaxis[ii], zdiff[ii], xr=[-0.5,2.0], yr=[-0.3,0.3], $ - xtitle='(r-i)-(g-r)/8', ytitle='z(photo) - z(spectro)', /conditional, $ - quantile=[0.025, 0.05, 0.16, 0.5, 0.84, 0.95, 0.975], charsize=csize - djs_oplot, !x.crange, [0,0], color='red' - djs_oplot, xaxis[indx1], zdiff[indx1], psym=1, symsize=0.25, color='green' - djs_oplot, xaxis[indx2], zdiff[indx2], psym=1, symsize=0.25, color='blue' - - dfpsclose - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/lrgmodel_read_spall.pro b/pro/photoz/lrgmodel_read_spall.pro deleted file mode 100644 index cc8eb93c9..000000000 --- a/pro/photoz/lrgmodel_read_spall.pro +++ /dev/null @@ -1,46 +0,0 @@ -;------------------------------------------------------------------------------ -function lrgmodel_read_spall, public=public, regenerate=regenerate - - if (size(public,/tname) EQ 'STRING') then pstring = '-'+public[0] $ - else if (keyword_set(public)) then pstring = '-public' $ - else pstring = '' - trimfile = 'spAll-photoz' + pstring + '.fits' - - foo = findfile(trimfile, count=ct) - if (ct EQ 0 OR keyword_set(regenerate)) then begin - - ; Read the spAll file - spfile = filepath('spAll'+pstring+'.fits', $ - root_dir=getenv('BOSS_SPECTRO_REDUX')) - foo = findfile(spfile, count=ct) - if (ct EQ 0) then message, 'Failed to find file ' + spfile - - columns = ['PROGNAME', 'PLATEQUALITY', 'PLATE', 'FIBERID', 'MJD', $ - 'RUN', 'RERUN', 'CAMCOL', 'FIELD', 'ID', 'COLC', $ - 'CLASS', 'SPECPRIMARY', 'PRIMTARGET', $ - 'Z', 'Z_ERR', 'ZWARNING', $ - 'PETROFLUX', 'PSFFLUX', 'DEVFLUX', 'PETROR50', 'R_DEV', $ - 'MODELFLUX', 'MODELFLUX_IVAR', 'EXTINCTION'] - spall = hogg_mrdfits(spfile, 1, columns=columns, $ - nrowchunk=10000L) -; nrowchunk=10000L, range=[0,25000L]) ; ??? Test - - ; Trim to LRGs - itrim = where( (strmatch(spall.platequality,'good*') $ - OR strmatch(spall.platequality,'marginal*')) $ - AND strmatch(spall.progname,'main*') $ - AND strmatch(spall.class,'GALAXY*') $ -; AND total(spall.modelflux_ivar GT 0,1) EQ 5 $ ; photom in all bands - AND total(spall.modelflux_ivar[1:3] GT 0,1) EQ 3 $ ; photom in 3 bands - AND (spall.primtarget AND (2L^5+2L^26)) NE 0 $ ; Targetted as LRG - AND spall.zwarning EQ 0 $ - AND spall.specprimary EQ 1, ntrim) ; Best spectroscopic observations - spall = spall[itrim] - - mwrfits, spall, trimfile, /create - endif - - if (NOT keyword_set(spall)) then spall = mrdfits(trimfile, 1) - return, spall -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/lrgmodel_spectra.pro b/pro/photoz/lrgmodel_spectra.pro deleted file mode 100644 index e97ba18ba..000000000 --- a/pro/photoz/lrgmodel_spectra.pro +++ /dev/null @@ -1,127 +0,0 @@ - -;------------------------------------------------------------------------------ -pro lrgmodel_spectra, loglam, zarr=zarr1, $ - ageburst=ageburst1, zmetal=zmetal1, OmegaM=OmegaM1, OmegaL=OmegaL1, $ - objflux=objflux, synflux=synflux - - common com_lrgmodel_spectra, allwave, allflux, agevec - - if (keyword_set(zarr1)) then zarr = zarr1 $ - else zarr = 0 - if (keyword_set(ageburst1)) then ageburst = ageburst1 $ - else ageburst = 2.5 - if (keyword_set(zmetal1)) then zmetal = zmetal1 $ - else zmetal = 0.018 - if (n_elements(OmegaM1) GT 0) then OmegaM = OmegaM1[0] $ - else OmegaM = 0.27 - if (n_elements(OmegaL1) GT 0) then OmegaL = OmegaL1[0] $ - else OmegaL = 0.73 - nfpix = n_elements(loglam) - - ;---------- - ; Read the Bruzual-Charlot model spectra FITS files. - - metalstr = ['z008', 'z02', 'z05'] - metalvec = [0.008, 0.02, 0.05] - - ; Read in a model LRG spectra, assuming the same wavelengths for all - if (NOT keyword_set(allwave)) then begin - nmetal = n_elements(metalvec) - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - for imetal=0, nmetal-1 do begin - eigenfile = 'bc03_padova1994_chab_' + metalstr[imetal] + '_ssp.fit.gz' - bcdat = mrdfits(djs_filepath(eigenfile, root_dir=eigendir), 1) - if (imetal EQ 0) then begin - npix = n_elements(bcdat.wave) - nage = n_elements(bcdat.age) - allwave = bcdat.wave - airtovac, allwave ; Convert to vacuum!! - agevec = bcdat.age / 1e9 ; convert to Gyr - allflux = fltarr(npix, nage, nmetal) - endif - allflux[*,*,imetal] = bcdat.flux - endfor - ; Convert to f_nu -; ??? -; flambda2fnu = allwave^2 / 2.99792d18 - for imetal=0, nmetal-1 do $ - for iage=0, nage-1 do $ - allflux[*,iage,imetal] = allflux[*,iage,imetal] -; allflux[*,iage,imetal] = allflux[*,iage,imetal] * flambda2fnu - endif - - ;---------- - ; Compute the fluxes as a function of redshift. - - numz = n_elements(zarr) - if (arg_present(synflux)) then synflux = dblarr(nfilt,numz) - if (arg_present(objflux)) then objflux = dblarr(nfpix,numz) - - for iz=0L, numz-1 do begin - print, format='(" Z ",i5," of ",i5,a1,$)', $ - iz, numz, string(13b) - - ; Convert redshift to an age, using the WMAP cosmology, - ; and say that these galaxies formed when the Universe - ; was AGEBURST Gyr old - hubble0 = 71. * 3.1558e7 / 3.0856e19 * 1e9 ; units of Gyr^-1 - thisage = lookback(1000., OmegaM, OmegaL) / hubble0 $ - - lookback((zarr[iz] > 0), OmegaM, OmegaL) / hubble0 - ageburst - - ; Demand that we stay in the bounds (at least the lower bounds) - ; of the models. Specifically, at the minimum, we don't want - ; to be taking the logarithm of zero or negative numbers for - ; these parameters when we interpolate in log-log space. - thisage = thisage > agevec[0] - zmetal = zmetal > metalvec[0] - - ; Linearly interpolate from the templates in log(age),log(zmetal), - ; vs. log(flux) space. - i0 = ((reverse(where(agevec LT thisage)))[0] > 0) $ - < (n_elements(agevec)-2) - j0 = ((reverse(where(metalvec LT zmetal)))[0] > 0) $ - < (n_elements(metalvec)-2) - i1 = i0 + 1 - j1 = j0 + 1 - agewts = [alog10(agevec[i1]/thisage), -alog10(agevec[i0]/thisage)] - metwts = [alog10(metalvec[j1]/zmetal), -alog10(metalvec[j0]/zmetal)] - agewts = agewts / total(agewts) - metwts = metwts / total(metwts) - - thisflux = 10.d0^( $ - agewts[0] * metwts[0] * alog10(allflux[*,i0,j0]) $ - + agewts[0] * metwts[1] * alog10(allflux[*,i0,j1]) $ - + agewts[1] * metwts[0] * alog10(allflux[*,i1,j0]) $ - + agewts[1] * metwts[1] * alog10(allflux[*,i1,j1]) ) - - thiswave = allwave * (1 + zarr[iz]) - thisloglam = alog10(thiswave) - - thispix = interpol(dindgen(nfpix), loglam, thisloglam) - newmask = fltarr(nfpix) - newflux = fltarr(nfpix) - populate_image, newmask, thispix, assign='cic' - populate_image, newflux, thispix, weights=thisflux, assign='cic' - qgood = newmask GT 0 - newflux = qgood * newflux / (newmask + (qgood EQ 0)) - newflux = djs_maskinterp(newflux, newmask LE 0, /const) - - if (arg_present(objflux)) then objflux[*,iz] = newflux - -; ??? - if (arg_present(synflux)) then begin - dloglam = 0.5 * abs(shift(filtloglam,-1) - shift(filtloglam,1)) - dloglam[0] = dloglam[1] - dloglam[nfpix-1] = dloglam[nfpix-2] - for ifilt=0, nfilt-1 do begin - sumfilt = total(filtcurve[*,ifilt] * dloglam) - synflux[ifilt,iz] = total(bigflux1 * filtcurve[*,ifilt] * dloglam) $ - / (sumfilt + (sumfilt LE 0)) - endfor - endif - endfor - print - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/lrgmodel_train.pro b/pro/photoz/lrgmodel_train.pro deleted file mode 100644 index f7c2748eb..000000000 --- a/pro/photoz/lrgmodel_train.pro +++ /dev/null @@ -1,165 +0,0 @@ -;+ -; NAME: -; lrgmodel_train -; -; PURPOSE: -; Calling script for LRGMODEL_TWEAK_TEMPLATE for training the Bruzual- -; Charlot models for use with photo-z's. -; -; CALLING SEQUENCE: -; lrgmodel_train, [ public=, /regenerate, twodf=, zrange=, dzweight=, $ -; /absdev, _EXTRA=] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; public - If set, then use the requested version of the spAll -; file rather than all objects; for example, 'EDR', 'DR1', -; 'DR2', or simply /PUBLIC to select all public data. -; regenerate - If set, then regenerate the trimmed spAll file. -; twodf - Suffix for which 2dF files to use; default to the two -; set of files specified by ['2003A', '2003B'] -; zrange - Trim to objects in this redshift range; default [0.1,1.0]. -; dzweight - Re-weight the galaxies such that all objects within each -; redshift interval DZWEIGHT share unit weight; default -; to 0.02; set to 0 to disable this re-weighting. -; absdev - If set, then minimize the absolute value of the redshift -; deviations, rather than the more conventional square of -; those deviations. This should be more robust. -; _EXTRA - Keywords for LRGMODEL_PHOTOZ(), such as ABCORRECT, -; EXTINCTION, ABFUDGE, ADDERR, FILTERLIST. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine minimizes the parameters used for the Bruzual-Charlot -; models in computing photometric redshifts. There are two parameters -; on which we minimize: -; AGEBURST - age of the Universe at the burst [Gyr] -; ZMETAL - metallicity of the burst -; -; This routine first tries a coarse grid of AGEBURST,ZMETAL. -; The best-fit from that grid is used for the initial guess -; that's passed to MPFIT() for a full minimization. -; -; BUGS: -; Note that the reported chi^2 values are really just sums of the -; squares of redshift errors (multiplied by the weights). -; -; DATA FILES: -; Both SDSS redshifts and 2dF redshifts are used, reading the files: -; $BOSS_SPECTRO_REDUX/spAll.fits -; $BOSS_SPECTRO_REDUX/spAll-$PUBLIC.fits (if PUBLIC is specified) -; $SDSS_2DF/data/calibObj-2003A.fits -; $SDSS_2DF/data/calibObj-2003B.fits -; $SDSS_2DF/data/catalogue2003A.fits -; $SDSS_2DF/data/catalogue2003B.fits -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; hogg_mrdfits() -; lrgmodel_photoz() -; lrgmodel_tweak_template() -; mrdfits() -; splog -; -; REVISION HISTORY: -; 18-Dec-2003 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro lrgmodel_train, public=public, regenerate=regenerate, $ - twodf=twodf, zrange=zrange, dzweight=dzweight, absdev=absdev, $ - _EXTRA=KeywordsForPhotoz - - if (n_elements(twodf) EQ 0) then twodf = ['2003A', '2003B'] - if (n_elements(zrange) EQ 0) then zrange = [0.10, 0.60] - if (n_elements(dzweight) EQ 0) then dzweight = 0.02 - - splog, file='lrgmodel_train.log' - - ;---------- - ; Read the data files - - ; Read the data from spAll - spall = lrgmodel_read_spall(public=public, regenerate=regenerate) - - ; Read the data from SDSS-2dF - if (keyword_set(twodf)) then begin - for i=0, n_elements(twodf)-1 do $ - spall = lrgmodel_append_twodf(spall, twodf[i]) - endif - - ; Trim to only objects in the redshift range of interest - if (keyword_set(zrange)) then begin - itrim = where(spall.z GE zrange[0] AND spall.z LE zrange[1], ntrim) - splog, 'Trimming from ', n_elements(spall), ' to ', ntrim, ' objects' - spall = spall[itrim] - endif - - ;---------- - ; Select weights for each galaxy that uniformly weights in - ; redshift bins - - if (keyword_set(dzweight)) then begin - nobj = n_elements(spall) - weights = fltarr(nobj) - for z1=0.0, max(spall.z), dzweight do begin - ii = where(spall.z GE z1 AND spall.z LT z1+dzweight, ct) - if (ct GT 0) then weights[ii] = 1./ct - endfor - ; Set the mean weight to unity - weights = weights / mean(weights) - endif - - ;---------- - ; Start with a coarse grid in AGEBURST,ZMETAL - ; in order to get a good starting point - - ageburst = [0.0, 1.0, 2.0, 3.0, 4.0, 5.0] - zmetal = [0.008, 0.014, 0.02, 0.025, 0.03, 0.04] -;ageburst = 4.0 ; Test ??? -;zmetal = 0.03 ; Test ??? - - ageguess = 0 - metalguess = 0 - chi2best = 0 - for iage=0, n_elements(ageburst)-1 do begin - for imetal=0, n_elements(zmetal)-1 do begin - zfit = lrgmodel_photoz(spall.modelflux, spall.modelflux_ivar, $ - ageburst=ageburst[iage], zmetal=zmetal[imetal], $ - _EXTRA=KeywordsForPhotoz) - chivec = (zfit - spall.z) / 0.01 ; This is an arbitrary normalization - if (keyword_set(weights)) then chivec = chivec * sqrt(weights) - if (keyword_set(absdev)) then thischi2 = total(abs(chivec)) $ - else thischi2 = total(chivec^2) - splog, 'For AGE=', ageburst[iage], ' ZMETAL=', zmetal[imetal], $ - ' chi2=', thischi2 - if (chi2best EQ 0 OR thischi2 LT chi2best) then begin - ageguess = ageburst[iage] - metalguess = zmetal[imetal] - chi2best = thischi2 - endif - endfor - endfor - - splog, 'Initial guess AGE=', ageguess, ' ZMETAL=', metalguess - - ;---------- - ; Now do the full minimization problem - - lrgmodel_tweak_template, spall.modelflux, spall.modelflux_ivar, $ - spall.z, weights=weights, $ - ageguess=ageguess, metalguess=metalguess, absdev=absdev, $ - coeff=coeff, _EXTRA=KeywordsForPhotoz - - splog, 'Best guess = ', coeff - splog, /close - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/lrgmodel_tweak_template.pro b/pro/photoz/lrgmodel_tweak_template.pro deleted file mode 100644 index a5fb15c89..000000000 --- a/pro/photoz/lrgmodel_tweak_template.pro +++ /dev/null @@ -1,152 +0,0 @@ -;+ -; NAME: -; lrgmodel_tweak_template -; -; PURPOSE: -; Compute the corrections to the input LRG template used for LRG_PHOTOZ(). -; -; CALLING SEQUENCE: -; lrgmodel_tweak_template, pflux, pflux_ivar, zz, [ weights=, $ -; maxiter=, ageguess=, metalguess=, agerange=, metalrange=, /absdev, $ -; coeff=, _EXTRA= ] -; -; INPUTS: -; pflux - Object fluxes in the 5 SDSS filters [5,NOBJ] -; pflux_ivar - Inverse variances for FLUX [5,NOBJ] -; zz - Spectroscopic redshifts [NOBJ] -; -; OPTIONAL INPUTS: -; weights - Weights for each object in the minimization -; (this is multiplied by the chi^2 of each point) -; maxiter - Maximum number of iterations; default to 40 -; ageguess - Starting guess for AGEBURST; default to 2.5 Gyr -; metalguess - Starting guess for ZMETAL; default to Z=0.2 -; agerange - Range of possible values for AGEBURST; default -; to [0.0, 6.0] Gyr -; metalrange - Range of possible values for ZMETAL; default -; to [0.008, 0.05] -; absdev - If set, then minimize the absolute value of the redshift -; deviations, rather than the more conventional square of -; those deviations. This should be more robust. -; _EXTRA - Keywords for LRGMODEL_PHOTOZ(), such as ABCORRECT, -; EXTINCTION, ABFUDGE, ADDERR, FILTERLIST -; -; OUTPUTS: -; coeff - Best-fit coefficients for tweaking input LRG template -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine minimizes the parameters used for the Bruzual-Charlot -; models in computing photometric redshifts. There are two parameters -; on which we minimize: -; AGEBURST - age of the Universe at the burst [Gyr] -; ZMETAL - metallicity of the burst -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; lrgmodel_photoz() -; mpfit() -; splog -; -; INTERNAL SUPPORT ROUTINES: -; lrgmodel_tweak_fn() -; -; REVISION HISTORY: -; 10-Dec-2003 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -forward_function mpfit, lrgmodel_tweak_fn - -;------------------------------------------------------------------------------ -; Return a vector of all the chi values -function lrgmodel_tweak_fn, coeff - - common com_lrgmodel_tweak_fluxes, pflux, pflux_ivar, zz, $ - sqweights, absdev, KeywordsForPhotoz - - ; Compute the best-fit redshift for each object - zfit = lrgmodel_photoz(pflux, pflux_ivar, $ - ageburst=coeff[0], zmetal=coeff[1], chi2=chi2, $ - _EXTRA=KeywordsForPhotoz) - - ; Return the redshift errors as the "chi" values - chivec = (zfit - zz) / 0.01 ; This is an arbitrary normalization - if (keyword_set(sqweights)) then chivec = chivec * sqweights - if (keyword_set(absdev)) then chivec = sqrt(abs(chivec)) - - return, chivec -end -;------------------------------------------------------------------------------ -pro lrgmodel_tweak_template, pflux1, pflux_ivar1, zz1, weights=weights, $ - maxiter=maxiter, ageguess=ageguess1, metalguess=metalguess1, $ - agerange=agerange1, metalrange=metalrange1, absdev=absdev1, $ - coeff=coeff, _EXTRA=EXTRA - - common com_lrgmodel_tweak_fluxes, pflux, pflux_ivar, zz, $ - sqweights, absdev, KeywordsForPhotoz - - ; Set defaults - if (NOT keyword_set(maxiter)) then maxiter = 40 - if (keyword_set(ageguess1)) then ageguess = ageguess1 $ - else ageguess = 2.5d0 - if (keyword_set(metalguess1)) then metalguess = metalguess1 $ - else metalguess = 0.02 - if (keyword_set(agerange1)) then agerange = agerange1 $ - else agerange = [0.0, 6.0] - if (keyword_set(metalrange1)) then metalrange = metalrange1 $ - else metalrange = [0.008, 0.05] - if (keyword_set(absdev1)) then absdev = absdev1 $ - else absdev = 0 - if (keyword_set(EXTRA)) then KeywordsForPhotoz = EXTRA $ - else KeywordsForPhotoz = '' - - ; Set variables in common blocks - zz = zz1 - if (keyword_set(weights)) then sqweights = sqrt(weights) $ - else sqweights = 0 - - ; Discard any objects where the baseline photo-z is discrepent by - ; more than 0.10, and discard any low-redshift objects with z > 0.10. - pflux = pflux1 - pflux_ivar = pflux_ivar1 -; zfit = lrgmodel_photoz(pflux, pflux_ivar, _EXTRA=KeywordsForPhotoz) -; ibad = where(abs(zfit - zz) GT 0.10 OR zz LT 0.10, nbad) -; Only discard the low-redshift objects... -; ibad = where(zz LT 0.10, nbad) -; if (nbad GT 0) then begin -; print, 'Discard ', nbad, ' objects with low and/or discrepent photo-z' -; pflux[*,ibad] = 0 -; pflux_Ivar[*,ibad] = 0 -; endif - - ; Call MPFIT to iterate on the solution for the template - parinfo = {value: 0.D, fixed: 0, limited: [0b,0b], $ - limits: [0.d0,0.d0], step: 0.D, parname: ''} - parinfo = replicate(parinfo, 2) - parinfo.value = [ageguess, metalguess] -; parinfo.step = [0.01, 0.0005] - parinfo.parname = ['AGEBURST' ,'ZMETAL'] - parinfo[0].limited = [1b, 1b] - parinfo[0].limits = agerange - parinfo[1].limited = [1b, 1b] - parinfo[1].limits = metalrange - - ftol = 1d-20 - gtol = 1d-20 - xtol = 1d-20 - coeff = mpfit('lrgmodel_tweak_fn', parinfo=parinfo, perror=perror, $ - maxiter=maxiter, ftol=ftol, gtol=gtol, xtol=xtol, $ - niter=niter, status=status) - - splog, 'STATUS = ', status - splog, 'Best-fit AGEBURST = ', coeff[0] - splog, 'Best-fit ZMETAL = ', coeff[1] - splog, 'Errors = = ', perror - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/lrgsim.pro b/pro/photoz/lrgsim.pro deleted file mode 100644 index a6ccde40d..000000000 --- a/pro/photoz/lrgsim.pro +++ /dev/null @@ -1,325 +0,0 @@ -; area - Survey area; default to 1000 deg^2 - -;------------------------------------------------------------------------------ -; Return number per (h^-1 Mpc)^3 per (rest-frame r-band Petro mags). -; I make things brighter by 0.106 mag as the k+e-correction from -; Blanton's function at z=0.10 to z=0. -function lrg_phi, Rmag - smallh = 1.0 - - ; This lum function is from Blanton et al astro-ph/0210215 - phi_star = 1.49e-2 * smallh^3 - M_star = -20.44 + 5.*alog10(smallh) - 0.106 - alpha = -1.05 - phi = 0.4 * alog(10.) * phi_star * (10.^(0.4*(M_star-Rmag)))^(alpha+1) $ - * exp(-10^(0.4*(M_star-Rmag))) - - return, phi -end - -;------------------------------------------------------------------------------ -function lrgmodel_colors, filtloglam, filtcurve, zarr, $ - ageburst=ageburst1, zmetal=zmetal1, OmegaM=OmegaM, OmegaL=OmegaL - - common com_lrgmodel_photoz, allwave, allflux, agevec - - if (keyword_set(ageburst1)) then ageburst = ageburst1 $ - else ageburst = 2.5 - if (keyword_set(zmetal1)) then zmetal = zmetal1 $ - else zmetal = 0.018 - ndimf = size(filtcurve, /n_dimen) - if (ndimf EQ 1) then nfilt = 1 $ - else nfilt = (size(filtcurve,/dimens))[1] - if (n_elements(filtloglam) NE (size(filtcurve,/dimens))[0]) then $ - message, 'Number of elements in LOGLAM and FILTCURVE are inconsistent' - - ;---------- - ; Read the Bruzual-Charlot model spectra FITS files. - - metalstr = ['z008', 'z02', 'z05'] - metalvec = [0.008, 0.02, 0.05] - - ; Read in a model LRG spectra, assuming the same wavelengths for all - if (NOT keyword_set(allwave)) then begin - nmetal = n_elements(metalvec) - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - for imetal=0, nmetal-1 do begin - eigenfile = 'bc03_padova1994_chab_' + metalstr[imetal] + '_ssp.fit.gz' - bcdat = mrdfits(djs_filepath(eigenfile, root_dir=eigendir), 1) - if (imetal EQ 0) then begin - npix = n_elements(bcdat.wave) - nage = n_elements(bcdat.age) - allwave = bcdat.wave - agevec = bcdat.age / 1e9 ; convert to Gyr - allflux = fltarr(npix, nage, nmetal) - endif - allflux[*,*,imetal] = bcdat.flux - endfor - ; Convert to f_nu - flambda2fnu = allwave^2 / 2.99792d18 - for imetal=0, nmetal-1 do $ - for iage=0, nage-1 do $ - allflux[*,iage,imetal] = allflux[*,iage,imetal] * flambda2fnu - endif - - ;---------- - ; Compute the fluxes as a function of redshift. - - numz = n_elements(zarr) - synflux = dblarr(nfilt,numz) - for iz=0L, numz-1 do begin - print, format='(" Z ",i5," of ",i5,a1,$)', $ - iz, numz, string(13b) - - ; Convert redshift to an age, using the WMAP cosmology, - ; and say that these galaxies formed when the Universe - ; was AGEBURST Gyr old - hubble0 = 71. * 3.1558e7 / 3.0856e19 * 1e9 ; units of Gyr^-1 - thisage = lookback(1000., OmegaM, OmegaL) / hubble0 $ - - lookback((zarr[iz] > 0), OmegaM, OmegaL) / hubble0 - ageburst - - ; Demand that we stay in the bounds (at least the lower bounds) - ; of the models. Specifically, at the minimum, we don't want - ; to be taking the logarithm of zero or negative numbers for - ; these parameters when we interpolate in log-log space. - thisage = thisage > agevec[0] - zmetal = zmetal > metalvec[0] - - ; Linearly interpolate from the templates in log(age),log(zmetal), - ; vs. log(flux) space. - i0 = ((reverse(where(agevec LT thisage)))[0] > 0) $ - < (n_elements(agevec)-2) - j0 = ((reverse(where(metalvec LT zmetal)))[0] > 0) $ - < (n_elements(metalvec)-2) - i1 = i0 + 1 - j1 = j0 + 1 - agewts = [alog10(agevec[i1]/thisage), -alog10(agevec[i0]/thisage)] - metwts = [alog10(metalvec[j1]/zmetal), -alog10(metalvec[j0]/zmetal)] - agewts = agewts / total(agewts) - metwts = metwts / total(metwts) - - thisflux = 10.d0^( $ - agewts[0] * metwts[0] * alog10(allflux[*,i0,j0]) $ - + agewts[0] * metwts[1] * alog10(allflux[*,i0,j1]) $ - + agewts[1] * metwts[0] * alog10(allflux[*,i1,j0]) $ - + agewts[1] * metwts[1] * alog10(allflux[*,i1,j1]) ) - - thiswave = allwave * (1 + zarr[iz]) - vactoair, thiswave - thisloglam = alog10(thiswave) - - bigloglam = [thisloglam, filtloglam] - bigloglam = bigloglam[uniq(bigloglam,sort(bigloglam))] - dloglam = bigloglam - shift(bigloglam,1) - dloglam[0] = dloglam[1] - - linterp, thisloglam, thisflux, bigloglam, bigflux1 - for ifilt=0, nfilt-1 do begin - linterp, filtloglam, filtcurve[*,ifilt], bigloglam, bigfiltcurve - sumfilt = total(bigfiltcurve * dloglam) - synflux[ifilt,iz] = total(bigflux1 * bigfiltcurve * dloglam) $ - / (sumfilt + (sumfilt LE 0)) - endfor - - ; Space equally in log-wavelength -; bigloglam = 3.2000d0 + dindgen(8800) * 1.d-4 -; bigwave = 10.d0^bigloglam -; linterp, thiswave, thisflux, bigwave, bigspecflux -; synflux[*,iz] = filter_thru( bigspecflux, $ -; waveimg=bigwave, /toair) - endfor - print - - return, synflux -end -;------------------------------------------------------------------------------ -pro lrg_filters, fsystem, wave, filtcurve - -; FOLD IN TELESCOPE + ATMOSPHERE THROUGHPUT !!!??? - - case strupcase(fsystem) of - 'SDSS' : begin - wave = 2980.d0 + findgen(8251) - filtfiles = 'sdss_jun2001_' + ['u','g','r','i','z'] + '_atm.dat' - nfile = n_elements(filtfiles) - filtcurve = fltarr(n_elements(wave),nfile) - for ifile=0, nfile-1 do begin - filename = filepath(filtfiles[ifile], $ - root_dir=getenv('IDLUTILS_DIR'), subdirectory=['data','filters']) - readcol, filename, fwave, fthru - linterp, fwave, fthru, wave, filtcurve1 - filtcurve[*,ifile] = filtcurve1 - end - end - 'PS1' : begin - filename = filepath('PS1.dat', $ - root_dir=getenv('IDLUTILS_DIR'), subdirectory=['data','filters']) - readcol, w_g, f_g, w_r, f_r, w_i, f_i, w_z, f_z, w_y, f_y - wave = 10. * w_g ; convert from nm to Ang - filtcurve = [[f_g],[f_r],[f_i],[f_z],[f_y]] - end - endcase - - return -end - -;------------------------------------------------------------------------------ -pro lrgsim, area1, fsystem1 - - if (keyword_set(area1)) then area = area1 $ - else area = 1000. - if (keyword_set(fsystem1)) then fsystem = fsystem1 $ - else fsystem = 'SDSS' - nfilt = 5 ; ??? - - OmegaM = 0.27 - OmegaL = 0.73 - - mrange = [-24, -21.84] -mrange = [-24, -20.5] - zrange = [0., 0.9] - deltaz = 0.001 - deltam = 0.01 - cspeed = 3.e5 - iseed = 12345 - - ;---------- - ; Construct bins in redshift - ; Compute dVolume in units of (Mpc/h)^3 - - znum = long((zrange[1] - zrange[0]) / deltaz) + 1 - zvec = (findgen(znum) + 0.5) * deltaz + zrange[0] - ; Compute the volume in (Mpc/h)^3 per redshift slice - dVolume = deltaz * dcomvoldz(zvec, OmegaM, OmegaL) * (cspeed/100)^3 $ - * (!pi/180.)^2 * area - Dlum = lumdis(zvec, OmegaM, OmegaL) / lumdis(1e-3/cspeed, OmegaM, OmegaL) - dmodulus = 5.*alog10(Dlum) - - ;---------- - ; Construct bins in absolute luminosity - - mnum = long((mrange[1] - mrange[0]) / deltam) + 1 - Mabsvec = Mrange[0] + (findgen(mnum) + 0.5) * deltam - phi = lrg_phi(Mabsvec) * deltam - - ;---------- - ; Construct number density in z-M - - zarr = rebin(zvec,znum,mnum) - Mabsarr = transpose(rebin(Mabsvec,mnum,znum)) - narr = dVolume # phi - -;foo = 0*narr ; ??? - ;---------- - ; Construct the random catalog of objects - - nsum = total(narr) - ntot = long(nsum) > 1 - splog, 'Generating random numbers for ', ntot, ' objects' - rand = randomu(iseed, ntot) * nsum - rand = [rand[sort(rand)], nsum+1] - j = 0L ; index into RAND - tmpsum = 0.d0 - outdat = replicate(create_struct( $ - 'z', 0., $ - 'Mabs', 0., $ - 'dmodulus', 0., $ - 'mag', fltarr(nfilt)), ntot) - - for iz=0L, znum-1L do begin - print,zvec[iz],string(13b),format='(" z=",f,a1,$)' - for im=0L, mnum-1L do begin - tmpsum = tmpsum + narr[iz,im] - while (rand[j] LT tmpsum) do begin -;foo[iz,im] = foo[iz,im] + 1 ; ??? - outdat[j].z = zarr[iz,im] - outdat[j].Mabs = Mabsarr[iz,im] - j = j + 1 - endwhile - endfor - endfor - print - ; Avoid discretization at the bin boundaries by adding small random numbers - outdat.z = outdat.z + (randomu(iseed,ntot) - 0.5) * deltaz - outdat.Mabs = outdat.Mabs + (randomu(iseed,ntot) - 0.5) * deltam - - ; Convert absolute magnitudes to apparent - linterp, zvec, dmodulus, outdat.z, thismodulus - outdat.dmodulus = thismodulus - - ;---------- - ; Compute the galaxy fluxes in the specified filters - - lrg_filters, fsystem, filtwave, filtcurve - synflux = lrgmodel_colors(alog10(filtwave), filtcurve, zvec, $ - ageburst=ageburst, zmetal=zmetal, OmegaM=OmegaM, OmegaL=OmegaL) - synmag = -2.5 * alog10(synflux) - ; Normalize these to an absolute mag of zero in r-band at z=0 - synmag = synmag - synmag[2,0] - for ifilt=0, nfilt-1 do begin - linterp, zvec, reform(synmag[ifilt,*]), outdat.z, thismag - outdat.mag[ifilt] = thismag + outdat.Mabs + outdat.dmodulus - endfor - - ;---------- - ; Select the Padmanabhan photo-z sample, and plot it - ; Before selection, add typical sky errors to the fluxes, - ; plus an error that's 1% of the object flux - ; I make things brighter by 0.07 mag to approximately convert from - ; Blanton's Petrosian magnitudes to model magnitudes. - ; Our Cut I should be Petro mags, and Cut II should be model mags. - - pmags = outdat.mag - nmgy_err = [0.4, 0.2, 0.3, 0.5, 1.7] - perr = 0 * pmags - for ifilt=0, 4 do $ - perr[ifilt,*] = randomn(iseed,ntot) $ - * (nmgy_err[ifilt] + 0.01 * 10.^((22.5-reform(pmags[ifilt,*]))/2.5)) - for ifilt=0, 4 do $ - pmags[ifilt,*] = 22.5 $ - - 2.5*alog10( (10.^((22.5-pmags[ifilt,*])/2.5) + perr[ifilt,*]) > 0.01) - - rmag = reform(pmags[2,*]) - imag = reform(pmags[3,*]) - grcolor = reform(pmags[1,*] - pmags[2,*]) - ricolor = reform(pmags[2,*] - pmags[3,*]) - c_perp = ricolor - grcolor/4. - 0.18 - d_perp = ricolor - grcolor/8. - c_par = 0.7*grcolor + 1.2*(ricolor - 0.18) - qcut1 = (abs(c_perp) LT 0.2) $ - AND (rmag LT (13.6 + c_par/0.3)) $ - AND (rmag LT 19.7) - qcut2 = (d_perp GT 0.55) $ - AND (grcolor GT 1.4) $ - AND (imag-0.07 LT (18.3 + 2.*d_perp)) $ - AND (imag-0.07 LT 20) - - splot,outdat.z,outdat.mag[3],ps=3, xtitle='z', ytitle='i-mag' - i = where(qcut1 EQ 1 AND qcut2 EQ 0) - soplot,outdat[i].z,outdat[i].mag[3],ps=3,color='green' - j = where(qcut1 EQ 0 AND qcut2 EQ 1) - soplot,outdat[j].z,outdat[j].mag[3],ps=3,color='red' - k = where(qcut1 EQ 1 AND qcut2 EQ 1) - soplot,outdat[k].z,outdat[k].mag[3],ps=3,color='blue' - - qpadman = (qcut1 OR qcut2) AND outdat.z GT 0.2 ; AND outdat.z LT 0.6 - npadman = total(qpadman) - splog, 'Number in Padmanabhan sample = ', npadman - splog, 'Areal density = ', npadman/area, ' / deg^2' - splog, 'Volume density = ', $ - npadman/total(dvolume[0.20/deltaz:0.60/deltaz]), ' / (h^-1 Mpc)^3' -stop - - ; Plot the redshift distribution, and the same smoothed by 0.03 RMS in z - zhist = float(histogram(outdat[where(qpadman)].z, binsize=deltaz, $ - min=zrange[0], max=zrange[1])) - sigerr = 0.03 ; photo-z error - nghalf = long(0.1 * n_elements(zvec)) - gkern = exp(-0.5*((findgen(nghalf*2+1)-nghalf)*deltaz/sigerr)^2) - zhist2 = convol(zhist, gkern/total(gkern), /center, /edge_truncate) - splot, zvec, zhist, xtitle='z', ytitle='Number', psym=10 - soplot, zvec, zhist2, color='red', psym=10 - -stop -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/lrgspecsim.pro b/pro/photoz/lrgspecsim.pro deleted file mode 100644 index edc007099..000000000 --- a/pro/photoz/lrgspecsim.pro +++ /dev/null @@ -1,150 +0,0 @@ -; old - If set, then assume the SDSS-I telescope fiber sizes, -; integration times, and efficiencies; otherwise assume -; 2 arcsec fibers, 7200 sec exposures, and 40% efficiency -; imag - i-band magnitudes for objects at all redshifts -; resol - If set, then resample the spectra at this resolution, assuming -; 3 pixels per resolution element -pro lrgspecsim, old=old, zarr=zarr, imag=imag, resol=resol, zans=zans - - if (NOT keyword_set(zarr)) then $ - zarr = 0.01 + 0.01 * findgen(100) - if (NOT keyword_set(imag)) then imag = 0*zarr + 21.2 - if (n_elements(zarr) NE n_elements(imag)) then $ - message, 'Number of elements in ZARR and IMAG must agree!' -old = 1 ; ??? - - exptime = 2700. - nexp = 3 ; number of exposures - rnoise = 12. ; effective read noise in photons per wavelength bin - tel_area = !pi * (125.^2 - 65.^2) ; cm^2 - iseed = 1234 - eigenfile = 'spEigenGal-*.fits' - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - - loglam = 3.5780d0 + dindgen(4000)*1d-4 - npix = n_elements(loglam) - wave = 10^loglam - dwave = abs([wave[1:npix-1]-wave[0:npix-2], wave[npix-1]-wave[npix-2]]) ; Ang - - ; Return the photons/(10^-17 erg/s) for the given pixels + exposure time - photons_per_flux = exptime $ - * ( spthroughput(402, camname='b1', expnum=6481, $ - efficiency=eff_b, loglam=loglam, /median) $ - + spthroughput(402, camname='r1', expnum=6481, $ - efficiency=eff_r, loglam=loglam, /median) ) -; tel_efficiency = eff_b + eff_r -; photons_per_flux= tel_area * tel_efficiency * exptime * (wave * 1e-8) $ -; * 1e-17 * dwave^2 / (6.62e-27 * 3.e10) - - if (keyword_set(old)) then begin - fibsize = 3. ; arcsec - endif else begin - fibsize = 2. ; arcsec - ; Boost the efficiencies above 7000 Ang to be nearly flat - photons_per_flux = 1.2 * photons_per_flux*(( (wave-6000)>0)/2000.>1) - endelse - - ; Read in a representative sky spectrum - readspec, 402, 16, mjd=51793, loglam=sky_loglam, sky=sky_flux - sky_flux = sky_flux * (fibsize/3.)^2 - sky = interpol(sky_flux, sky_loglam, loglam) - - ; Simulate LRG spectra, where these evolve with redshift - flambda2fnu = (wave*wave / 2.99792e18) - numz = n_elements(zarr) - lrgmodel_spectra, loglam, zarr=zarr, objflux=allflux - allivar = 0. * allflux - - ; Broaden by velocity dispersion + instrumental response ??? -for iz=0L, numz-1L do allflux[*,iz] = smooth(allflux[*,iz],3) - - for iz=0L, numz-1L do begin - zthis = zarr[iz] - - ; Scale the galaxy spectrum to the requested i-band magnitude - thisflux = allflux[*,iz] - res = filter_thru(thisflux*flambda2fnu, waveimg=wave) - synmag = -2.5 * alog10(res) - 48.6 + 2.5*17.0 - thisflux = thisflux * 10.^((synmag[3] - imag[iz])/2.5) - - ; Compute photon noise, and add it to the data - qgood = (sky GT 0) AND (photons_per_flux GT 0) - objerr = sqrt( (thisflux>0) / (photons_per_flux + (qgood EQ 0))) - skyerr = sqrt( (sky>0) / (photons_per_flux + (qgood EQ 0))) - ccderr = rnoise * sqrt(nexp) / (photons_per_flux + (qgood EQ 0)) - ; Following is the floor on the errors for bright objects... - adderr = 0.03 * (thisflux > 0) / sqrt(nexp) - toterr = sqrt(objerr^2 + skyerr^2 + ccderr^2 + adderr^2) - allivar[*,iz] = qgood / (toterr^2 + (qgood EQ 0)) - allflux[*,iz] = thisflux + randomn(iseed, npix) * toterr - endfor - - ;---------- - ; Read in the galaxy templates - - allfiles = findfile(djs_filepath(eigenfile, root_dir=eigendir), count=ct) - if (ct EQ 0) then $ - message, 'Unable to find EIGENFILE matching '+eigenfile - thisfile = allfiles[ (reverse(sort(allfiles)))[0] ] - splog, 'Selecting EIGENFILE=' + thisfile - starflux = readfits(thisfile, shdr,/silent) - starloglam0 = sxpar(shdr, 'COEFF0') - stardloglam0 = sxpar(shdr, 'COEFF1') - - ;---------- - ; Bin all spectra - - if (keyword_set(resol)) then begin - ; c/RESOL should be the full-width of the resolution in km/sec, - ; with an assumption of 3 pixels to sample that full width. - rebinfac = 3.e5/(69.1*3) / resol - gsigma = rebinfac * 3. / 2.355 - orig_sigma = 70. - if (gsigma GT orig_sigma) then begin - gkern = gauss_kernel(sqrt(gsigma^2 - orig_sigma^2)) - allflux = convol(allflux, gkern, /center, /edge_truncate, /normalize) - endif - rebinfac = round(rebinfac) - npix = floor(npix/rebinfac) - allflux = rebinfac * rebin(allflux[0:npix*rebinfac-1,*], npix, numz) - allvar = (allivar GT 0) / (allivar + (allivar EQ 0)) - allvar = rebinfac * rebin(allvar[0:npix*rebinfac-1,*], npix, numz) - allivar = (allvar GT 0) / (allvar + (allvar EQ 0)) - sxaddpar, objhdr, 'COEFF0', loglam[0] + 0.5*(rebinfac-1.)*1d-4 - sxaddpar, objhdr, 'COEFF1', rebinfac*1d-4 - - dims = size(starflux,/dimens) - nspix = dims[0] - if (size(starflux,/n_dimen) EQ 1) then nstar = 1 $ - else nstar = dims[1] - nsnew = floor(float(nspix)/rebinfac) - starflux = rebinfac * rebin(starflux[0:nsnew*rebinfac-1,*], nsnew, nstar) - endif - - ;---------- - ; Now try fitting a redshift - - mkhdr, objhdr, 0 - sxaddpar, objhdr, 'COEFF0', loglam[0] - sxaddpar, objhdr, 'COEFF1', loglam[1]-loglam[0] - res_gal = zfind(allflux, allivar, hdr=objhdr, $ - starflux=starflux, starloglam0=starloglam0, stardloglam=stardloglam, $ - npoly=3, zmin=-0.01, zmax=1.00, pspace=2, nfind=5, width=10) - -stop -vdiff = (zarr - res_gal[0,*].z) * 3e5 -verr = res_gal[0,*].z_err * 3e5 -vmax = 2000 -splot, zarr, (vdiff < vmax) > (-vmax), psym=4 - - zans = res_gal[0,*] - return -end -pro lrgspecsim_test - readspec, 400+lindgen(1), zans=zans, plug=plug - indx = where((plug.primtarget AND 2L^5+2L^26) NE 0 $ - AND strmatch(zans.class,'GALAXY*') AND zans.zwarning EQ 0) - imag = 22.5 - 2.5*alog10(zans.spectrosynflux[3]>1) - lrgspecsim, zarr=zans[indx].z, imag=imag[indx], /old -end - diff --git a/pro/photoz/skyspec_paranal.pro b/pro/photoz/skyspec_paranal.pro deleted file mode 100644 index da63e804b..000000000 --- a/pro/photoz/skyspec_paranal.pro +++ /dev/null @@ -1,130 +0,0 @@ -;+ -; NAME: -; skyspec_paranal -; -; PURPOSE: -; Return the sky spectrum at Paranal -; -; CALLING SEQUENCE: -; skyflux = skyspec_paranal(loglam, [ disp= ] ) -; -; INPUTS: -; loglam - Log10 of wavelengths [vacuum Ang]; need not be uniformly -; spaced -; -; OPTIONAL INPUTS: -; disp - Sigma of the intrumental response (dispersion) in units -; of the LOGLAM pixels, either as a scalar, or as a vector -; with the same number of elements as LOGLAM. -; If not set, then the returned sky spectrum is at the -; resolution of the Paranal data files, and will be -; undersampled for any resolution worse than about 100,000. -; -; OUTPUTS: -; skyflux - Sky spectrum in units of e-17 erg/s/cm^2/Ang/asec^2 -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The lowest sky level is on plate 1292/52736 taken at airmass=1.04. -; A representative low sky level is plate 406/51817. -; A high sky level is plate 298/51955. -; -; EXAMPLES: -; -; BUGS: -; The Paranal sky spectra are missing data from 8550-8610 Ang. -; There are a few regions where their spectra are not in agreement -; with the lower-resolution SDSS sky spectra such as at 7600-7650 Ang, -; probably because the SDSS spectra "correct up" the sky level for -; the telluric absorption. Also, the Paranal sky is higher than SDSS -; by about a factor of 2 blueward of 4800 Ang. -; -; DATA FILES: -; $IDLSPEC2D_DIR/templates/fluxed_sky_346.fits -; $IDLSPEC2D_DIR/templates/fluxed_sky_580L.fits -; $IDLSPEC2D_DIR/templates/fluxed_sky_860L.fits -; $IDLSPEC2D_DIR/templates/fluxed_sky_437.fits -; $IDLSPEC2D_DIR/templates/fluxed_sky_580U.fits -; $IDLSPEC2D_DIR/templates/fluxed_sky_860U.fits -; $IDLSPEC2D_DIR/templates/fluxed_sky_564U.fits -; $IDLSPEC2D_DIR/templates/fluxed_sky_800U.fits -; -; PROCEDURES CALLED: -; djs_maskinterp() -; mrdfits() -; populate_image -; sxpar() -; -; REVISION HISTORY: -; 20-Mar-2006 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -function skyspec_paranal, loglam, disp=disp - - if (n_elements(loglam) LT 1) then $ - message, 'LOGLAM must have at least two elements!' - - npix = n_elements(loglam) -; loglam0 = loglam[0] -; dloglam = loglam[1] - loglam[0] - - ; If we need to convolve the spectrum with a Gaussian dispersion, - ; then pad the spectra that we generate, and trim at the end - if (keyword_set(disp)) then nhalf = ceil(4 * (max(disp)>1)) $ - else nhalf = 0 - - skyflux = fltarr(npix+2*nhalf) - skymask = fltarr(npix+2*nhalf) - - files = 'fluxed_sky_' + ['346','437','564U','580L','580U','860L','860U'] $ - + '.fits' - nfile = n_elements(files) - for ifile=0, nfile-1 do begin - thisfile = files[ifile] - ; The factor of 10 below converts to units of e-17 erg/s/cm^2/Ang/asec^2 - thisflux = 10. * mrdfits(filepath(thisfile, $ - root_dir=getenv('IDLSPEC2D_DIR'), subdir='templates'), 0, hdr) - thiswave = sxpar(hdr,'CRVAL1') $ - + (dindgen(sxpar(hdr,'NAXIS1'))+1-sxpar(hdr,'CRPIX1')) $ - * sxpar(hdr,'CDELT1') - airtovac, thiswave - ; Trim out some bad data points in this one file... - if (thisfile EQ 'fluxed_sky_564U.fits') then begin - thiswave = thiswave[300:n_elements(thiswave)-1001] - thisflux = thisflux[300:n_elements(thisflux)-1001] - endif - igood = where(thisflux NE 0) - thiswave = thiswave[igood] - thisflux = thisflux[igood] - thisloglam = alog10(thiswave) -; thispix = (thisloglam - loglam0) / dloglam + nhalf - thispix = interpol(findgen(npix), loglam, thisloglam) + nhalf - populate_image, skyflux, thispix, weights=thisflux>0, assign='cic' - populate_image, skymask, thispix, assign='cic' - endfor - - skyflux = skyflux * (skymask GT 0) / (skymask + (skymask LE 0)) - - ; Interpolate over missing wavelengths - skyflux = djs_maskinterp(skyflux, skyflux LE 0, /const) - - if (keyword_set(disp)) then begin - gpix = findgen(2*nhalf+1) - nhalf - if (n_elements(disp) EQ 1) then begin - skyflux = convol(skyflux, gauss1(gpix, [0.,disp[0],1.])) - endif else begin - if (n_elements(disp) NE npix) then $ - message, 'Number of elements in DISP and LOGLAM disagree!' - origflux = skyflux - for i=0, npix-1 do $ - if (disp[i] GT 0) then $ - skyflux[i+nhalf] = total(origflux[i:i+2*nhalf] $ - * gauss1(gpix, [0.,disp[i],1.])) - endelse - skyflux = skyflux[nhalf:npix-1+nhalf] - endif - - return, skyflux -end -;------------------------------------------------------------------------------ diff --git a/pro/photoz/sptemplate_rebin.pro b/pro/photoz/sptemplate_rebin.pro deleted file mode 100644 index 4d6c577fc..000000000 --- a/pro/photoz/sptemplate_rebin.pro +++ /dev/null @@ -1,170 +0,0 @@ -;+ -; NAME: -; sptemplate_rebin -; -; PURPOSE: -; Read and optionally rebin spectral templates -; -; CALLING SEQUENCE: -; starflux = sptemplate_rebin([ loglam, dloglam=, eigenfile=, eigendir=, $ -; columns=, npoly=, starloglam= ]) -; -; INPUTS: -; -; OPTIONAL INPUTS: -; loglam - Log10 of wavelengths [vacuum Ang]; need not be uniformly -; spaced; if not specified, then templates are returned in -; their native wavelength scale as defined by OUTLOGLAM -; dloglam - If one specifies DLOGLAM instead of LOGLAM, then the -; output wavelengths will span those in the template file -; but spaced by this amount in log-wavelength -; eigenfile - Input FITS file with an [NPIXSTAR,NSTAR] image with -; either templates or eigenspectra. If a wildcard appears -; in the file name, then the file that appears last in a sort -; is used. -; The header keywords COEFF0, COEFF1 are used to specify -; the wavelength mapping in log-10 Angstroms. -; Default to 'spEigenGal-*.fits'. -; eigendir - Directory for EIGENFILE; default to $IDLSPEC2D/templates. -; columns - Column numbers of the eigenspectra image to use in the -; PCA fit; default to all columns. -; npoly - Number of polynomial terms to append to eigenspectra; -; default to none. -; -; OUTPUTS: -; starflux - Output template spectra, typically in units of -; erg/s/cm^2/Ang regardless of the wavelength spacing -; -; OPTIONAL OUTPUTS: -; starloglam - Log10 of output wavelengths [vacuum Ang]; if LOGLAM is -; specified, then this is the same -; -; COMMENTS: -; There are two methods for rebinning the spectra. If the output -; wavelength scale is coarser than the input, then the flux is dumped -; into pixels using CIC assignment. Otherwise, BSPLINE_ITERFIT is used -; to resample the spectra. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $IDLSPEC2D_DIR/templates/*.fits -; -; PROCEDURES CALLED: -; combine1fiber -; djs_filepath() -; readfits() -; poly_array() -; populate_image -; sxpar() -; -; REVISION HISTORY: -; 21-Mar-2006 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -function sptemplate_rebin, loglam1, dloglam=dloglam1, $ - eigenfile=eigenfile1, eigendir=eigendir1, $ - columns=columns, npoly=npoly, starloglam=starloglam - - if (keyword_set(eigenfile1)) then eigenfile = eigenfile1 $ - else eigenfile = 'spEigenGal-*.fits' - if (size(eigendir1,/tname) EQ 'STRING') then eigendir = eigendir1 $ - else eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - if (keyword_set(loglam1) AND keyword_set(dloglam1)) then $ - message, 'Cannot specify both LOGLAM and DLOGLAM!' - - ;---------- - ; Find the most recent template file matching EIGENFILE - - allfiles = findfile(djs_filepath(eigenfile, root_dir=eigendir), count=ct) - if (ct EQ 0) then $ - message, 'Unable to find EIGENFILE matching '+eigenfile - thisfile = allfiles[ (reverse(sort(allfiles)))[0] ] - splog, 'Selecting EIGENFILE=' + thisfile - if (keyword_set(columns)) then $ - splog, 'Selecting columns=', columns - - ;---------- - ; Read the template file, and optionally trim to only those columns - ; specified by COLUMNS. - - starflux = readfits(thisfile, shdr, /silent) - starloglam0 = sxpar(shdr, 'COEFF0') - stardloglam = sxpar(shdr, 'COEFF1') - - ndim = size(starflux, /n_dimen) - dims = size(starflux, /dimens) - npixstar = dims[0] - if (ndim EQ 0) then nstar = 0 $ - else if (ndim EQ 1) then nstar = 1 $ - else nstar = dims[1] - - ; Trim to specified columns - if (keyword_set(nstar)) then begin - if (n_elements(columns) NE 0) then starflux = starflux[*,columns] $ - else columns = lindgen(nstar) - endif - - ;---------- - ; Add more eigen-templates that represent polynomial terms. - - if (keyword_set(npoly) AND keyword_set(starflux)) then begin - starflux = [ [starflux], [poly_array(npixstar,npoly)] ] - nstar = nstar + npoly - endif else if (keyword_set(npoly)) then begin - starflux = poly_array(npixobj,npoly) - nstar = nstar + npoly - endif - - if (arg_present(starloglam) OR keyword_set(loglam1) $ - OR keyword_set(dloglam1)) then $ - starloglam = starloglam0 + stardloglam * dindgen(npixstar) - - ;---------- - ; If LOGLAM is specified, then remap these templates onto - ; the new wavelength scale - - if (keyword_set(loglam1) EQ 0 AND keyword_set(dloglam1) EQ 0) $ - then return, starflux - - if (keyword_set(loglam1)) then begin - loglam = loglam1 - npix = n_elements(loglam) - if (npix LT 2) then $ - message, 'LOGLAM must have at least two elements!' - dloglam = abs(loglam[1] - loglam[0]) - endif else begin - dloglam = dloglam1 - minlog = min(starloglam, max=maxlog) - npix = floor((maxlog - minlog) / dloglam) - loglam = minlog + dloglam * dindgen(npix) - endelse - - newflux = fltarr(npix,nstar) - - if (dloglam GT stardloglam) then begin - thispix = interpol(dindgen(npix), loglam, starloglam) - for istar=0, nstar-1 do begin - newmask1 = fltarr(npix) - newflux1 = fltarr(npix) - populate_image, newmask1, thispix, weights=(starflux[*,istar] NE 0), $ - assign='cic' - populate_image, newflux1, thispix, weights=starflux[*,istar], $ - assign='cic' - newflux[*,istar] = newflux1 * (newmask1 GT 0) $ - / (newmask1 + (newmask1 LE 0)) - endfor - endif else begin - for istar=0, nstar-1 do begin - combine1fiber, starloglam, starflux[*,istar], $ - newloglam=loglam, newflux=newflux1 - newflux[*,istar] = newflux1 - endfor - endelse - starloglam = loglam - - return, newflux -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/bad_bossformat.pro b/pro/plan/bad_bossformat.pro deleted file mode 100644 index ad2485f09..000000000 --- a/pro/plan/bad_bossformat.pro +++ /dev/null @@ -1,100 +0,0 @@ -;+ -; NAME: -; bad_bossformat -; -; PURPOSE: -; Search for electronics problems in the raw spectro images -; -; CALLING SEQUENCE: -; bad_bossformat, [docams=, mjd= ] -; -; INPUTS: -; -; REQUIRED KEYWORDS: -; -; OPTIONAL KEYWORDS: -; docams - Camera(s); default to ['b1','b2','r1','r2'] -; mjd - Search for all files in $BOSS_SPECTRO_DATA/MJD; -; default to '5????' -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Look for bad events such as on 55451/sdR-r1-00119291.fit.gz -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; fileandpath() -; sdssproc -; splog -; -; REVISION HISTORY: -; 14-Dec-2009 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro bad_bossformat, docams=docams, mjd=mjd1 - - if (NOT keyword_set(docams)) then docams = ['b1','b2','r1','r2'] - - if (keyword_set(mjd1)) then mjdstr = strtrim(mjd1,2) $ - else mjdstr = '5????' - - mjdlist = '' - for i=0, n_elements(mjdstr)-1 do begin - spawn, '\ls -d '+getenv('BOSS_SPECTRO_DATA') + '/' + mjdstr[i], mjdlist1 - if (keyword_set(mjdlist1)) then $ - mjdlist = keyword_set(mjdlist) ? [mjdlist,mjdlist1] : mjdlist1 - endfor - if (NOT keyword_set(mjdlist)) then begin - print, 'No files found' - return - endif - nmjd = n_elements(mjdlist) - - for imjd=0, nmjd-1 do begin - for j=0, n_elements(docams)-1 do begin - thisname = filepath('sdR-'+docams[j]+'-????????.fit*', $ - root_dir=mjdlist[imjd]) - thisname = findfile(thisname, count=ct) - if (ct GT 0) then begin - if (NOT keyword_set(framename)) then framename = thisname $ - else framename = [framename, thisname] - endif - endfor - endfor - nfile = n_elements(framename) - if (nfile EQ 0) then return - - ; Sort file names by exposure number and then camera name - shortname = fileandpath(framename) - framename = framename[sort(strmid(shortname,7,8)+strmid(shortname,4,2))] -; framename = reverse(framename) ; reverse sort the files - - splog, filename='bossformat.log', /noname - for i=0L, nfile-1L do begin - splog, prelog=fileandpath(framename[i]) - sdssproc, framename[i], image, hdr=hdr, /silent - dims = size(image, /dimens) - if (dims[0] GT 4113 AND dims[1] GT 3250) then begin - subimg = image[4014:4113,3150:3250] - isort = sort(subimg) - raw = mrdfits(framename[i], 0, hdr, /silent) + 32768 - subimg = raw[4133:4232,3150:3350] -; ; Print the mean and 95% of this sub-image -; splog, 'Badsearch ', sxpar(hdr,'MJD'), mean(subimg), subimg[isort[0.95*n_elements(subimg)]] - nsat1 = total(raw GT 65000) - nsat2 = total(raw[4133:4232,3150:3350] GT 65000) - if (nsat1 GT 300) then $ - splog, 'WARNING: Saturated ', ' MJD ', sxpar(hdr,'MJD'), nsat1, nsat2 - endif - endfor - splog, /close, prelog='' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/badfmags.pro b/pro/plan/badfmags.pro deleted file mode 100644 index 4e3f50ef5..000000000 --- a/pro/plan/badfmags.pro +++ /dev/null @@ -1,73 +0,0 @@ -;+ -; NAME: -; badfmags -; -; PURPOSE: -; Find any F stars where the magnitudes in the calibObj files are grossly -; discrepent from the plug-map files. -; -; CALLING SEQUENCE: -; badfmags, [ maxdiff= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; maxdiff - Maximum r-band magnitude difference; default to 0.4 -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine looks for calibration F stars that have very -; discrepent magnitudes in the plug-map file vs. the calibObj files. -; Only the r-band magnitudes are compared, and they must differ by -; at least MAXDIFF in order to trigger a warning. -; -; Before comparing the magnitudes, first offset all the F star -; magnitudes by their median difference. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; platelist -; readspec -; splog -; -; REVISION HISTORY: -; 10-Feb-2004 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro badfmags, maxdiff=maxdiff - - if (NOT keyword_set(maxdiff)) then maxdiff = 0.4 - - splog, file='badfmag.log' - - platelist, plist=plist - plist = plist[where(strmatch(plist.statuscombine,'Done*'))] - - for i=0L, n_elements(plist)-1 do begin - readspec, plist[i].plate, mjd=plist[i].mjd, plug=plug, tsobj=calibobj, $ - /silent - iphoto = where((plug.sectarget AND 34) NE 0, nphoto) - if (keyword_set(calibobj) AND nphoto GT 1) then begin - oldmag = plug[iphoto].mag - newmag = 22.5 - 2.5*alog10(calibobj[iphoto].psfflux > 0.1) - mdiff = newmag - oldmag - for k=0, 4 do mdiff[k,*] = mdiff[k,*] - median(mdiff[k,*]) - for j=0, nphoto-1 do begin - if (abs(mdiff[2,j]) GT maxdiff) then $ - splog, plist[i].plate, plist[i].mjd, iphoto[j]+1, $ - oldmag[2,j], newmag[2,j], mdiff[2,j] - endfor - endif - endfor - - splog, /close - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/badfstars.pro b/pro/plan/badfstars.pro deleted file mode 100644 index 773cc6fdf..000000000 --- a/pro/plan/badfstars.pro +++ /dev/null @@ -1,74 +0,0 @@ -;+ -; NAME: -; badfstars -; -; PURPOSE: -; Find bad F stars used for spectro-photometry in the Spectro-2D reductions -; -; CALLING SEQUENCE: -; badfstars, [ /doplot ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; doplot - If set, then use PLOTSPEC to plot all the bad spectra -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This procedure looks at all the objects labelled as either -; OBJTYPE='SPECTROPHOTO_STD' or 'REDDEN_STD' in the spAll.fits file. -; These are considered to be bad F stars if the following conditions -; are satisfied: -; WCOVERAGE > 0.10 -; (|cz| > 500 km/sec) OR (not an B,A,F,G-type star) -; These objects are then listed in the file 'badfstars.log', and then -; plotted if /DOPLOT is set. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; hogg_mrdfits() -; plotspec -; -; REVISION HISTORY: -; 06-Feb-2004 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro badfstars, doplot=doplot - - spfile = filepath('spAll.fits', root_dir=getenv('BOSS_SPECTRO_REDUX')) - columns = ['PLATE','FIBERID','MJD', $ - 'PRIMTARGET','SECTARGET','OBJTYPE', $ - 'RA','DEC','CLASS','SUBCLASS','Z','ZWARNING','WCOVERAGE'] - - spall = hogg_mrdfits(spfile, 1, columns=columns, nrowchunk=10000L) - - qfstar = strmatch(spall.objtype,'SPECTROPHOTO_STD*') $ - OR strmatch(spall.objtype,'REDDEN_STD*') - - ; We want these to be classified as an A, F or G-type star. - qgoodclass = strmatch(spall.class,'STAR*') AND $ - (strmatch(spall.subclass,'A*') OR strmatch(spall.subclass,'F*') $ - OR strmatch(spall.subclass,'G*') OR strmatch(spall.subclass,'B*')) - qbad = qfstar AND spall.wcoverage GT 0.10 $ - AND (abs(spall.z) GT 500./3e5 OR (qgoodclass EQ 0)) - - ibad = where(qbad, nbad) - - splog, file='badfstars.log' - for j=0L, nbad-1 do $ - splog, spall[ibad[j]].plate, spall[ibad[j]].mjd, spall[ibad[j]].fiberid, $ - format='(I5,I6,I4)', /noname - splog, /close - - if (keyword_set(doplot)) then $ - plotspec,spall[ibad].plate,spall[ibad].fiberid,mjd=spall[ibad].mjd - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/bundlethru.pro b/pro/plan/bundlethru.pro deleted file mode 100644 index 6519a031f..000000000 --- a/pro/plan/bundlethru.pro +++ /dev/null @@ -1,137 +0,0 @@ -;+ -; NAME: -; bundlethru -; -; PURPOSE: -; Measure relative throughput of fiber bundles from flat-fields -; -; CALLING SEQUENCE: -; bundlethru, [ wrange=, mjdrange=, /first ] -; -; INPUTS: -; wrange - Wavelength range; default to [5000,5100] Ang -; mjdrange - If set, then limit to this MJD range -; first - If set, then use the first rather than last good observation -; of each plate -; -; OPTIONAL INPUTS: -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine relies upon the platelist file to find good plates -; for each cartridge. Then the spPlate, spCFrame, spFlat, spArc files -; are read. -; -; A plot file and a data file are output with names bundlethru-$MJD.ps -; and bundlethru-$MJD.dat . The MJD in the name is the lowest MJD used. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; splog -; -; REVISION HISTORY: -; 26-Aug-2011 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro bundlethru, wrange=wrange, mjdrange=mjdrange, first=first - - if (NOT keyword_set(wrange)) then wrange = [5000,5100] - - ; Select the last good observation of each cartridge - platelist, plist=plist - if (NOT keyword_set(plist)) then begin - print, 'No platelist found' - return - end - indx = where(strmatch(plist.platequality,'good*'), ct) - if (ct EQ 0) then begin - print, 'No good plates found' - return - end - plist = plist[indx] - if (keyword_set(mjdrange)) then begin - indx = where(plist.mjd GE mjdrange[0] AND plist.mjd LE mjdrange[1], ct) - if (ct EQ 0) then begin - print, 'No good plates found' - return - end - endif - if (keyword_set(first)) then $ - plist = plist[sort((plist.cartid * max(plist.mjd)+1) - plist.mjd)] $ - else $ - plist = plist[sort((plist.cartid * max(plist.mjd)+1) + plist.mjd)] - i = uniq(plist.cartid) - plist = plist[i] - ncart = n_elements(plist) - - mjdstr = string(min(plist.mjd),format='(i5.5)') - logfile = 'bundlethru-'+mjdstr+'.dat' - plotfile = 'bundlethru-'+mjdstr+'.ps' - - nbundle = 25 - fbundle = fltarr(ncart, 2, nbundle) - - splog, file=logfile, /noname - dfpsplot, plotfile, /color, /square - - for icart=0, ncart-1 do begin - for ispec=0, 1 do begin ; loop over spectrographs - fiberid = 1 + 500*ispec - cameras = (wrange[0] LT 6000) ? 'b' : 'r' - readonespec, plist[icart].plate, fiberid, mjd=plist[icart].mjd, $ - cameras=cameras,framehdr=phdr - hdr1 = *phdr[0] - ptr_free, phdr - flatfile = 'spFlat-'+strmid(sxpar(hdr1,'FLATFILE'),4,11)+'.fits.gz' - arcfile = 'spArc-'+strmid(sxpar(hdr1,'ARCFILE'),4,11)+'.fits.gz' - flatfile = filepath(flatfile, root_dir=getenv('BOSS_SPECTRO_REDUX'), $ - subdir=[getenv('RUN2D'),plate_to_string(plist[icart].plate)]) - arcfile = filepath(arcfile, root_dir=getenv('BOSS_SPECTRO_REDUX'), $ - subdir=[getenv('RUN2D'),plate_to_string(plist[icart].plate)]) - flatimg = mrdfits(flatfile, 0, /silent) - wset = mrdfits(arcfile, 2, /silent) - traceset2xy, wset, xx, loglam - mask = loglam GT alog10(wrange[0]) AND loglam LT alog10(wrange[1]) - ffiber = total(flatimg * mask, 1) / total(mask, 1) - for ib=0, nbundle-1 do $ - fbundle[icart,ispec,ib] = median(ffiber[ib*20:(ib+1)*20-1]) - - ; Renormalize to be relative to the maximum-throughput bundle - ffiber /= max(fbundle[icart,ispec,*]) - fbundle[icart,ispec,*] /= max(fbundle[icart,ispec,*]) - - for ib=0, nbundle-1 do $ - splog, plist[icart].cartid, ispec+1, ib, fbundle[icart,ispec,ib], $ - /noname - - title = 'Cartridge '+strtrim(plist[icart].cartid,2) $ - +' Slithead '+strtrim(ispec+1,2) - djs_plot, lindgen(500)+0.5, ffiber, yrange=[0,1.3], psym=10, $ - xtitle='Fiber number', ytitle='Relative throughput', $ - title=title, charsize=1.5, color='red' - djs_oplot, lindgen(nbundle)*20+10.5, fbundle[icart,ispec,*], $ - psym=6 - for ib=0, nbundle-1 do $ - djs_oplot, ib*20+[1,20], fbundle[icart,ispec,ib]+[0,0] - for ib=0, nbundle-1 do $ - xyouts, ib*20+10.5, fbundle[icart,ispec,ib]+0.1, $ - strtrim(ib+1,2), charsize=1.4 - xyouts, 50, 0.1, 'From plate '+strtrim(plist[icart].plate,2) $ - +' MJD '+strtrim(plist[icart].mjd,2) $ - +' wave='+strtrim(fix(wrange[0]),2)+'-'+strtrim(fix(wrange[1]),2) - endfor - endfor - - plothist, fbundle, bin=0.02, xtitle='Relative throughput', $ - ytitle='Number of bundles', charsize=1.5 - - splog, /close - dfpsclose -end - diff --git a/pro/plan/daytime_test.pro b/pro/plan/daytime_test.pro deleted file mode 100644 index 02336ba73..000000000 --- a/pro/plan/daytime_test.pro +++ /dev/null @@ -1,106 +0,0 @@ - -;+ -; NAME: -; daytime_test -; -; PURPOSE: -; Look for spectro exposures taken during the day and not marked as test. -; -; CALLING SEQUENCE: -; daytime_test -; -; INPUTS: -; -; OPTIONAL INPUTS: -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Find all the files matching '$BOSS_SPECTRO_DATA/$MJD/sdR-b1-????????.fit*', -; and print a warning message for any science, flat, or arc exposures -; that are not marked as test exposures, and were taken during the -; daytime. The warnings are also printed to the file 'daytime.log'. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_diff_angle() -; get_mjd_dir() -; get_tai -; headfits() -; sdsshead() -; splog -; sunpos -; sxpar() -; zenpos -; -; INTERNAL SUPPORT PROCEDURES: -; daytime_test1 -; -; REVISION HISTORY: -; 27-Apr-2003 Written by David Schlegel, Princeton (not checked in then) -;- -;------------------------------------------------------------------------------ -pro daytime_test1, filename - - COMMON SITE, lat, lng, tzone - lat = 32.780361d0 - lng = 360. - 105.820417d0 - tzone = 7 ; ??? - - DRADEG = 180.d0/!dpi - - hdr = sdsshead(filename) - if (strtrim(sxpar(hdr,'QUALITY'),2) NE 'excellent') then return - flavor = strtrim(sxpar(hdr,'FLAVOR'),2) - if (flavor NE 'science' AND flavor NE 'flat' AND flavor NE 'arc') $ - then return - - get_tai, hdr, tai_beg, tai_mid, tai_end - jd = 2400000.5D + tai_mid / (24.D*3600.D) - sunpos, jd, ra1, dec1 ; returns degrees - zenpos, jd, ra2, dec2 ; returns radians - ra2 = ra2 * DRADEG - dec2 = dec2 * DRADEG - adiff = djs_diff_angle(ra1,dec1,ra2,dec2) - - if (adiff LT 90) then begin - ;infstring = string(sxpar(hdr,'PLATEID'), sxpar(hdr,'MJD'), $ - ; sxpar(hdr,'EXPOSURE'), format='(i4," ",i5," ",i8.8)') - infstring = plate_to_string(sxpar(hdr,'PLATEID'))+' '+$ - string(sxpar(hdr,'MJD'),format='(i5)')+' '+$ - string(sxpar(hdr,'EXPOSURE'), format='(i8.8)') - splog, 'Warning: Sun above the horizon ' + string(90.-adiff) + ' deg ' + $ - ' Plate=' + infstring + ' ' + flavor - endif - -end -;------------------------------------------------------------------------------ -pro daytime_test - - splog, filename='daytime.log' - - ; Get the list of MJDs - rawdata_dir = getenv('BOSS_SPECTRO_DATA') - mjdlist = get_mjd_dir(rawdata_dir, mjstart=1, mjend=99999, mjd='?????') - - for imjd=0L, n_elements(mjdlist)-1 do begin - files = findfile(filepath('sdR-b1-????????.fit*', $ - root_dir=rawdata_dir, subdir=mjdlist[imjd]), count=nfile) - splog, 'Working on MJD=', mjdlist[imjd], ' nfile=', nfile, prelog='' - for ifile=0, nfile-1 do begin - print, format='("File ",i5," of ",i5,a1,$)', $ - ifile+1, nfile, string(13b) - daytime_test1, files[ifile] - endfor - endfor - - splog, /close - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/dr1list_best.pro b/pro/plan/dr1list_best.pro deleted file mode 100644 index 43d4ae214..000000000 --- a/pro/plan/dr1list_best.pro +++ /dev/null @@ -1,89 +0,0 @@ -;+ -; NAME: -; dr1list_best -; -; PURPOSE: -; Determine which plates *should* have been in DR1 that match the tiles -; of those actually chosen. -; -; CALLING SEQUENCE: -; dr1list_best -; -; INPUTS: -; -; OPTIONAL INPUTS: -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Outputs are written to the file 'jill.out'. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; platelist -; struct_print -; -; REVISION HISTORY: -; 22-Aug-2002 Written by David Schlegel, Princeton (not checked in then) -;- -;------------------------------------------------------------------------------ -pro dr1list_best - - ; Read all plates and sort by TILE number - platelist, plist=plist - plist = plist[sort(plist.tile)] - - ; Find the list of tiles that should be in DR1 - indx = where(strmatch(plist.public,'*DR1*')) - tiles = plist[indx].tile - tiles = tiles[sort(tiles)] - tiles = tiles[uniq(tiles)] - ntile = n_elements(tiles) - - ; Make the logic of which plates correspond to these tile numbers - nplate = n_elements(plist) - qkeep = bytarr(nplate) - for i=0, nplate-1 do $ - if (total(plist[i].tile EQ tiles) GT 0) then qkeep[i] = 1B - - ; For each tile in DR1, pick the best plate+MJD for that tile. - qbest = bytarr(nplate) - for itile=0, ntile-1 do begin - jj = where(plist.tile EQ tiles[itile] $ - AND strmatch(plist.platequality,'good*'), nj) - if (nj GT 0) then begin - junk = max(plist[jj].platesn2, jbest) - qbest[jj[jbest]] = 1B - endif else begin - jj = where(plist.tile EQ tiles[itile] $ - AND strmatch(plist.platequality,'marginal*'), nj) - if (nj GT 0) then begin - junk = max(plist[jj].platesn2, jbest) - qbest[jj[jbest]] = 1B - endif else begin - print, 'No good/marginal plate for tile = ', tiles[itile] - endelse - endelse - endfor - - pout = replicate(create_struct( $ - 'plate', 0L, $ - 'tile' , 0L, $ - 'mjd' , 0L, $ - 'progname', '', $ - 'platequality', '', $ - 'platesn2', 0.0, $ - 'public', '', $ - 'qbest', 0B ), nplate) - copy_struct, plist, pout - pout.qbest = qbest - struct_print, pout, filename='jill.out' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/find_unplugged.pro b/pro/plan/find_unplugged.pro deleted file mode 100644 index 148076f6d..000000000 --- a/pro/plan/find_unplugged.pro +++ /dev/null @@ -1,63 +0,0 @@ -;+ -; NAME: -; find_unplugged -; -; PURPOSE: -; Find all unplugged fibers that still seemed to get a spectrum -; in the reduced data. -; -; CALLING SEQUENCE: -; find_unplugged, [ mjd_start ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd_start - If specified, then only search plates with MJDs beyond -; this date. -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Identify all spectra in the reduced data that are labelled as NOPLUG -; in the plug-map file, but still have a wavelength coverage of -; log(wave) > 0.15 in the reduced spectrum. These may be fibers that -; were plugged, but missed by the fiber-mapper. -; -; A companion procedure to this is PLUGFILE_UNMAPPED. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; platelist -; readspec -; splog -; -; REVISION HISTORY: -; 10-Sep-2003 Written by David Schlegel, Princeton (not checked in then) -;- -;------------------------------------------------------------------------------ -pro find_unplugged, mjstart - - if (NOT keyword_set(mjstart)) then mjstart = 0 - platelist, plist=plist - itrim = where(plist.mjd GT mjstart AND strmatch(plist.status1d,'Done*')) - plist = plist[itrim] - - for i=0L, n_elements(plist)-1 do begin - readspec, plist[i].plate, mjd=plist[i].mjd, plug=plug, zans=zans, /silent - ibad = where((zans.anyandmask AND 1) NE 0 $ - AND zans.wcoverage GT 0.15, nbad) - if (nbad GT 0) then begin - for j=0L, nbad-1 do $ - splog, plist[i].plate, plist[i].mjd, ibad[j]+1, $ - zans[ibad[j]].wcoverage - endif - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/fstars_plot.pro b/pro/plan/fstars_plot.pro deleted file mode 100644 index a7af44afa..000000000 --- a/pro/plan/fstars_plot.pro +++ /dev/null @@ -1,164 +0,0 @@ -;+ -; NAME: -; fstars_plot -; -; PURPOSE: -; Make color-color plots of spectro-photometric stars as compared -; to the stellar locus and BD+17. -; -; CALLING SEQUENCE: -; fstars_plot, [ /deredden ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; deredden - If set, the de-redden the spectroscopic F stars, -; and the stellar locus stars from run 94. Do not -; de-redden the colors of BD+17. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; For finding colors of stars on the stellar locus, this routine -; reads tsObj files for run 94 rerun 7, which must be on disk. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $BOSS_SPECTRO_REDUX/spAll.fits -; $PHOTO_DATA/94/7/calibChunks/$CAMCOL/tsObj-000094-$CAMCOL-7-$FIELD.fit -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_filepath() -; djs_oplot -; djs_plot -; djs_xyouts -; mrdfits() -; objc_select() -; rdss_obj() -; -; REVISION HISTORY: -; 12-Sep-2002 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -pro fstars_plot, deredden=deredden - - cname = ['u','g','r','i','z'] - - ;---------- - ; Read spAll file, and trim to plates >= 432. - - spfile = djs_filepath('spAll-public.fits', root_dir=getenv('BOSS_SPECTRO_REDUX')) - spall = mrdfits(spfile, 1) - indx = where(spall.plate GE 432 AND spall.specprimary EQ 1) - spall = spall[indx] - - ;---------- - ; Get colors of the F spectro-photo stars - - iredden = where((spall.sectarget AND 2L^1) NE 0) - isphoto = where((spall.sectarget AND 2L^5) NE 0) - - spcolor = spall.psfcounts[0:3] - spall.psfcounts[1:4] - - ; De-redden these stars, as is done in the target-selection code - if (keyword_set(deredden)) then begin - redden = spall.reddening[0:3] - spall.reddening[1:4] - spcolor = spcolor - redden - for i=0, 4 do $ - splog, 'Median reddening ' + cname[i] + '-band = ', $ - median(spall[isphoto].reddening[i]) - endif - - ;---------- - ; Get colors of BD+17 - - bd17mag = [10.560, 9.626, 9.346, 9.245, 9.232] - bd17color = bd17mag[0:3] - bd17mag[1:4] - - ;---------- - ; Colors in target selection code (not defined for i-z) - - targetcolor = [0.80, 0.30, 0.10, 99] - - ;---------- - ; Get colors for stars on the stellar locus for some run - - objs = rdss_obj(94, 7, [2,3,4,5], 200+lindgen(100), ftype='tsObj') - indx = objc_select(objs, ancestry='unique', objtype='star', /trim) - objs = objs[indx] - indx = where(objs.psfcounts[2] LT 21) - objs = objs[indx] - - locuscolor = objs.psfcounts[0:3,*] - objs.psfcounts[1:4,*] - - ; De-redden these stars - if (keyword_set(deredden)) then begin - redden = objs.reddening[0:3] - objs.reddening[1:4] - locuscolor = locuscolor - redden - endif - - ;---------- - ; Make color-color plots - - dfpsplot, 'fstars.ps', /color, /square - csize = 1.2 - - for iplot=0, 1 do begin - !p.multi = [0,2,2] - - if (iplot EQ 0) then begin - indx = isphoto - starname = 'Spectro-photo stars' - endif else begin - indx = isphoto - starname = 'Reddening stars' - endelse - - ; Loop over different color-color plots - for ic1=0, 2 do begin - ic2 = ic1+1 - xrange = median(spcolor[ic1,iredden]) + [-1,1] * 0.4 - yrange = median(spcolor[ic2,iredden]) + [-1,1] * 0.4 - - xtitle='('+cname[ic1]+'-'+cname[ic1+1]+')' - ytitle='('+cname[ic2]+'-'+cname[ic2+1]+')' - if (keyword_set(deredden)) then begin - xtitle = 'De-reddened ' + xtitle - ytitle = 'De-reddened ' + ytitle - endif - - djs_plot, [0], [0], /nodata, charsize=csize, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle=ytitle, title=starname - djs_contourpts, locuscolor[ic1,*], locuscolor[ic2,*], $ - bin1=0.05, bin2=0.05, xrange=xrange, yrange=yrange, /overplot -; djs_oplot, locuscolor[ic1,*], locuscolor[ic2,*], $ -; psym=3 - djs_oplot, spcolor[ic1,indx], spcolor[ic2,indx], $ - psym=3, color='red' - djs_oplot, [targetcolor[ic1]], [targetcolor[ic2]], $ - psym=4, color='blue', symsize=2 - djs_oplot, [bd17color[ic1]], [bd17color[ic2]], $ - psym=2, color='green', symsize=2 - - xpos = total(!x.crange*[0.95,0.05]) - ypos = total(!y.crange*[0.05,0.95]) - dy = 0.06 * (!y.crange[1] - !y.crange[0]) - djs_xyouts, xpos, ypos, 'Stellar locus', charsize=csize, color='default' - djs_xyouts, xpos, ypos-dy, starname, charsize=csize, color='red' - djs_xyouts, xpos, ypos-2*dy, 'Target priority', charsize=csize, color='blue' - djs_xyouts, xpos, ypos-3*dy, 'BD+17', charsize=csize, color='green' - endfor - endfor - - dfpsclose - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/listchi.pro b/pro/plan/listchi.pro deleted file mode 100644 index 631aaefef..000000000 --- a/pro/plan/listchi.pro +++ /dev/null @@ -1,88 +0,0 @@ -;+ -; NAME: -; listchi -; -; PURPOSE: -; List the extraction chi of all individual spectro frames -; -; CALLING SEQUENCE: -; listchi -; -; INPUTS: -; -; OPTIONAL INPUTS: -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The exposure times of all files $BOSS_SPECTRO_REDUX/????/spFrame-??-????????.fits -; are logged to the file 'listchi.log'. Also, a save-set is written -; to the file 'listchi.ss'. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; headfits() -; splog -; -; REVISION HISTORY: -; 03-Sep-2003 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro listchi - - spawn, '\ls -d '+getenv('BOSS_SPECTRO_REDUX') + '/????', mjdlist - nmjd = n_elements(mjdlist) - - for imjd=0, nmjd-1 do begin - thisname = filepath('spFrame-??-????????.fits*', $ - root_dir=mjdlist[imjd]) - thisname = findfile(thisname, count=ct) - if (ct GT 0) then begin - if (NOT keyword_set(framename)) then framename = thisname $ - else framename = [framename, thisname] - endif - endfor - - splog, filename='listchi.log' - - nfile = n_elements(framename) - exptime = fltarr(nfile) - xchi2 = fltarr(nfile) - skychi2 = fltarr(nfile) - xsigma = fltarr(nfile) - wsigma = fltarr(nfile) - framesn2 = fltarr(nfile) - plate = lonarr(nfile) - cartid = lonarr(nfile) - mjd = lonarr(nfile) - flavor = strarr(nfile) - cameras = strarr(nfile) - for ifile=0, nfile-1 do begin - print, 'Reading file ', ifile, ' of ', nfile, ': ' + framename[ifile] - hdr = headfits(framename[ifile]) - exptime[ifile] = sxpar(hdr, 'EXPTIME') - xchi2[ifile] = sxpar(hdr, 'XCHI2') - skychi2[ifile] = sxpar(hdr, 'SKYCHI2') - xsigma[ifile] = sxpar(hdr, 'XSIGMA') - wsigma[ifile] = sxpar(hdr, 'WSIGMA') - framesn2[ifile] = sxpar(hdr, 'FRAMESN2') - plate[ifile] = sxpar(hdr, 'PLATEID') - mjd[ifile] = sxpar(hdr, 'MJD') - cartid[ifile] = sxpar(hdr, 'CARTID') - flavor[ifile] = sxpar(hdr, 'FLAVOR') - cameras[ifile] = sxpar(hdr, 'CAMERAS') - splog, fileandpath(framename[ifile]), plate[ifile], $ - mjd[ifile], exptime[ifile], xchi2[ifile], /noname - endfor - - splog, /close - save, 'listchi.ss' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/listexptime.pro b/pro/plan/listexptime.pro deleted file mode 100644 index d65c4e6dd..000000000 --- a/pro/plan/listexptime.pro +++ /dev/null @@ -1,71 +0,0 @@ -;+ -; NAME: -; listexptime -; -; PURPOSE: -; List the exposure times of all (reduced) spectroscopic frames. -; -; CALLING SEQUENCE: -; listexptime -; -; INPUTS: -; -; OPTIONAL INPUTS: -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The exposure times of all files $BOSS_SPECTRO_REDUX/????/spFrame-b1-????????.fits -; are logged to the file 'listexp.log'. -; This proc just looks at the b1 exposures to save time. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; headfits() -; splog -; -; REVISION HISTORY: -; 03-Sep-2003 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro listexptime - - spawn, '\ls -d '+getenv('BOSS_SPECTRO_REDUX') + '/????', mjdlist - nmjd = n_elements(mjdlist) - - for imjd=0, nmjd-1 do begin - thisname = filepath('spFrame-b1-????????.fits*', $ - root_dir=mjdlist[imjd]) - thisname = findfile(thisname, count=ct) - if (ct GT 0) then begin - if (NOT keyword_set(framename)) then framename = thisname $ - else framename = [framename, thisname] - endif - endfor - - splog, filename='listexp.log' - - nfile = n_elements(framename) - exptime = fltarr(nfile) - plate = lonarr(nfile) - mjd = lonarr(nfile) - for ifile=0, nfile-1 do begin - print, 'Reading file ', ifile, ' of ', nfile, ': ' + framename[ifile] - hdr = headfits(framename[ifile]) - exptime[ifile] = sxpar(hdr, 'EXPTIME') - plate[ifile] = sxpar(hdr, 'PLATEID') - mjd[ifile] = sxpar(hdr, 'MJD') - splog, fileandpath(framename[ifile]), plate[ifile], $ - mjd[ifile], exptime[ifile], /noname - endfor - - splog, /close - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/opfiber_generate.pro b/pro/plan/opfiber_generate.pro deleted file mode 100644 index 0ef3c1a47..000000000 --- a/pro/plan/opfiber_generate.pro +++ /dev/null @@ -1,154 +0,0 @@ -;+ -; NAME: -; opfiber_generate -; -; PURPOSE: -; Generate or append entries to the opFibers.par file -; -; CALLING SEQUENCE: -; opfiber_generate, plate, mjd=, [ camname=, expnum= ] -; -; INPUTS: -; plate - Plate number(s) -; mjd - MJD(s) for plate -; -; OPTIONAL INPUTS: -; camname - Camera name; default to all 4 cameras -; expnum - Exposure number (do not use if PLATE is an array); -; default to first science exposure for this plate+MJD -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Append entries in the opFibers.par file, or create the file if it -; does not yet exist. This file used to establish the search parameters -; for the trace-finding in TRACE320CRUDE. -; -; The MJD for each entry is set to the observation, but should be changed -; by hand to the earliest MJD for which the solution would be valid. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $IDLSPEC2D_DIR/opfiles/opFibers.par -; -; PROCEDURES CALLED: -; spframe_read -; splog -; yanny_readone -; yanny_write -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 27-Oct-2010 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro opfiber_generate, plate, mjd=mjd, expnum=expnum1, camname=camname1 - - nplate = n_elements(plate) - if (NOT keyword_set(plate)) then begin - print, 'Must specify PLATE' - return - endif - if (n_elements(mjd) NE nplate) then $ - message, 'PLATE and MJD must have same number of elements!' - - ; If PLATE is a vector, then call recursively - if (nplate GT 1) then begin - for iplate=0L, nplate-1L do begin - opfiber_generate, plate[iplate], mjd=mjd[iplate], camname=camname1 - endfor - return - endif - - fiberparam_blank = create_struct(name='FIBERPARAM', $ - 'CARTID' , 0, $ - 'CAMNAME' ,' ', $ - 'MJD' , 0L, $ - 'XSTART_TOL', 0., $ - 'NFIBER' , 0L, $ - 'FIBERSPACE', fltarr(25), $ - 'BUNDLEGAP' , fltarr(25) ) - fiberparam = replicate(fiberparam_blank, 4) - - if (keyword_set(camname)) then camname = camname1 $ - else camname = ['b1','b2','r1','r2'] - - readspec, plate, mjd=mjd, objhdr=objhdr - if (NOT keyword_set(objhdr)) then $ - message, 'spPlate file not found for plate '+string(plate)+ ' MJD '+string(mjd) - idlist = sxpar(objhdr, 'EXPID*') - cartid = sxpar(objhdr, 'CARTID') - nfiber = sxpar(objhdr, 'NAXIS2') - nhalf = nfiber / 2 - - for icam=0, n_elements(camname)-1 do begin - spectroid = long(strmid(camname[icam],1,1)) - camcolor = strmid(camname[icam],0,1) - if (keyword_set(expnum1)) then begin - expnum = expnum1 - endif else begin - indx = (where(strmatch(idlist,'*'+camname[icam]+'*'), ct))[0] - if (ct EQ 0) then message, 'No matching camera!' - expnum = long(strmid(idlist[indx],3,8)) - endelse - - filename = 'spCFrame-'+camname[icam]+'-'+string(expnum,format='(i8.8)') $ - + '.fits' - fullname = filepath(filename, root_dir=getenv('BOSS_SPECTRO_REDUX'), $ - subdir=[getenv('RUN2D'), plate_to_string(plate)]) - spframe_read, fullname, ximg=ximg, hdr=hdr - ; test that this is a valid XIMG, otherwise read from spFlat file - if (max(ximg) LT 1000) then begin - flatname = 'spFlat-'+strmid(sxpar(hdr,'FLATFILE'),4,11)+'.fits' - fullflatname = filepath(flatname, root_dir=getenv('BOSS_SPECTRO_REDUX'), $ - subdir=[getenv('RUN2D'), plate_to_string(plate)]) - fullflatname = (findfile(fullflatname+'*'))[0] - if (keyword_set(fullflatname)) then begin - tset = mrdfits(fullflatname,1) - traceset2xy, tset, xx, ximg - endif else ximg = 0 - endif - - if (NOT keyword_set(ximg)) then $ - message, 'File not found: '+fullname - - iy = (size(ximg,/dimens))[0] / 2 - xpos = reform(ximg[iy,*]) - xdiff = shift(xpos,-1) - xpos ; last value is then nonsense - - fiberparam[icam].cartid = cartid - fiberparam[icam].camname = camname[icam] - fiberparam[icam].mjd = mjd - fiberparam[icam].xstart_tol = 70. - fiberparam[icam].nfiber = nhalf - nbundle = nhalf / 20 - for j=0, nbundle-1 do $ - fiberparam[icam].fiberspace[j] = median(xdiff[j*20:j*20+18]) - fiberparam[icam].bundlegap[0] = xpos[0] ; XSTART - for j=1, nbundle-1 do $ - fiberparam[icam].bundlegap[j] = xpos[j*20] - xpos[j*20-1] $ - - fiberparam[icam].fiberspace[j] - endfor - - ; Append this to the opFibers.par file - opfile = filepath('opFibers.par', root_dir=getenv('IDLSPEC2D_DIR'), $ - subdir='opfiles') - opdata = yanny_readone(opfile) - if (keyword_set(opdata)) then begin - splog, 'Appending to exiting file '+opfile - opdata = struct_append(opdata, fiberparam) - endif else begin - splog,' Creating new file '+opfile - opdata = fiberparam - endelse - yanny_write, opfile, ptr_new(opdata) - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/platecen_test.pro b/pro/plan/platecen_test.pro deleted file mode 100644 index 66ee54633..000000000 --- a/pro/plan/platecen_test.pro +++ /dev/null @@ -1,68 +0,0 @@ -;+ -; NAME: -; platecen_test -; -; PURPOSE: -; Find where RA,DEC and RADEG,DECDEG disagree in the spPlate headers. -; -; CALLING SEQUENCE: -; platecen_test -; -; INPUTS: -; -; OPTIONAL INPUTS: -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Find all the files matching '$BOSS_SPECTRO_REDUX/*/spPlate*.fits', and test -; whether the RA,DEC positions disagree by more than 0.1 degrees from -; RADEC,DECDEG. This would indicate some inconsistency in the header -; info that should be fixed. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; headfits() -; splog -; sxpar() -; -; REVISION HISTORY: -; 19-Dec-2001 Written by David Schlegel, Princeton (not checked in then) -;- -;------------------------------------------------------------------------------ -pro platecen_test - - platefile = findfile(getenv('BOSS_SPECTRO_REDUX')+'/*/spPlate*.fits', $ - count=nfile) - - ra = fltarr(nfile) - dec = fltarr(nfile) - radeg = fltarr(nfile) - decdeg = fltarr(nfile) - for ifile=0, nfile-1 do begin - hdr = headfits(platefile[ifile]) - ra[ifile] = sxpar(hdr, 'RA') - dec[ifile] = sxpar(hdr, 'DEC') - radeg[ifile] = sxpar(hdr, 'RADEG') - decdeg[ifile] = sxpar(hdr, 'DECDEG') - endfor - -; Ignore values of RADEG that are less than 0, like -999 ? -; i = where(radeg LT 0) -; radeg[i] = ra[i] -; decdeg[i] = dec[i] - - j = where(abs(ra-radeg) GT 0.1 OR abs(dec-decdeg) GT 0.1) - for jj=0, n_elements(j)-1 do begin - splog, fileandpath(platefile[j[jj]]), ra[j[jj]], dec[j[jj]], $ - radeg[j[jj]], decdeg[j[jj]] - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/plugfile_diff.pro b/pro/plan/plugfile_diff.pro deleted file mode 100644 index 500eed6d3..000000000 --- a/pro/plan/plugfile_diff.pro +++ /dev/null @@ -1,100 +0,0 @@ -;+ -; NAME: -; plugfile_diff -; -; PURPOSE: -; Find instances where the plPlugMapM file in the speclog file differs -; from what was used in the reductions. -; -; CALLING SEQUENCE: -; plugfile_diff, [ run2d=, run1d= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; run2d - Limit the platelist to this version of the 2D reductions -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Only plates that completed reductions are considered. -; Generate a FITS file 'plugfile_diff.fits' containing all of objects -; that have had their plugging changed. File contains: -; HDU #1 - ZANS structure for those objects -; HDU #2 - PLUGMAP info used for reductions -; HDU #3 - PLUGMAP info currently in speclog product -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; platelist -; readspec -; splog -; -; REVISION HISTORY: -; 21-Apr-2011 Written by David Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro plugfile_diff, run2d=run2d, run1d=run1d - - platelist, plist=plist - if (NOT keyword_set(plist)) then begin - splog, 'No plates found' - return - endif -; qtrim = strmatch(plist.platequality,'good*') - qtrim = strmatch(plist.status1d,'Done*') - if (keyword_set(run2d)) then $ - qtrim *= strtrim(plist.run2d) EQ run2d - if (keyword_set(run1d)) then $ - qtrim *= strtrim(plist.run1d) EQ run1d - itrim = where(qtrim, nplate) - if (nplate EQ 0) then begin - splog, 'No plates found' - return - endif - plist = plist[itrim] - - for i=0L, nplate-1L do begin - print, 'File ', i, ' of ', nplate - readspec, plist[i].plate, mjd=plist[i].mjd, plug=plug1, objhdr=hdr, $ - zans=zans1, run2d=plist[i].run2d, run1d=plist[i].run1d, /silent - if (keyword_set(plug1[0]) * keyword_set(hdr) EQ 0) then $ - message, 'Error reading plate '+string(plist[i].plate) - plugfile = 'plPlugMapM-' + sxpar(hdr,'NAME') + '.par' - thismjd = sxpar(hdr,'MJD') - plugdir = getenv('SPECLOG_DIR') + '/' $ - + string(thismjd,format='(i5.5)') - plug2 = readplugmap(plugfile, plugdir=plugdir) - - ; Match the FIBERID from the two lists. This matters if only - ; half the fibers exist in some reductions. - ig1 = where(plug1.fiberid GT 0) - ig2 = where(plug2.fiberid GT 0) - match, plug1[ig1].fiberid, plug2[ig2].fiberid, i1, i2 - plug1 = plug1[ig1[i1]] - zans1 = zans1[ig1[i1]] - plug2 = plug2[ig2[i2]] - - adist = djs_diff_angle(plug1.ra, plug1.dec, plug2.ra, plug2.dec) - idiff = where(adist GT 2./3600, ndiff) - splog, 'Change ', ndiff, ' fibers ', plugfile - if (ndiff GT 0) then begin - zanslist = struct_append(zanslist, zans1[idiff]) - badlist1 = struct_append(badlist1, plug1[idiff]) - badlist2 = struct_append(badlist2, plug2[idiff]) - endif - endfor - - outfile = 'plugfile_diff.fits' - mwrfits, zanslist, outfile, /create - mwrfits, badlist1, outfile - mwrfits, badlist2, outfile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/plugfile_relabel.pro b/pro/plan/plugfile_relabel.pro deleted file mode 100644 index c9fbc5f83..000000000 --- a/pro/plan/plugfile_relabel.pro +++ /dev/null @@ -1,116 +0,0 @@ -;+ -; NAME: -; plugfile_relabel -; -; PURPOSE: -; Relabel the OBJTYPE's for specified objects in all plPlugMapM files. -; -; CALLING SEQUENCE: -; plufile_relabel, [ infile, objtype= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; infile - ASCII file with plate, mjd, fiberid, as written -; by BADFSTARS (for example); default to 'badfstars.log' -; objtype - New OBJTYPE for these objects; default to 'SERENDIPITY_MANUAL' -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This procedure was written to get rid of objects from the plPlugMapM -; files that were incorrectly being used as F star calibrators -; (either SPECTROPHOTO_STD or REDDEN_STD targets). For a specified list -; of objects, this proc changes the OBJTYPE to 'SERENDIPITY_MANUAL'. -; Note that the target flags are not changed, since they are not used -; anyway by Spectro-2D. This means that we will still have the 2 or 32 -; values set in SECTARGET. -; -; For the input list of objects, I use READSPEC to find the coordinates -; of the object, and then the object is changed in all the plPlugMapM -; files for that plate. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_diff_angle() -; readspec -; splog -; yanny_read -; yanny_write -; -; REVISION HISTORY: -; 06-Feb-2004 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro plugfile_relabel, infile, objtype=objtype - - if (NOT keyword_set(infile)) then infile = 'badfstars.log' - if (NOT keyword_set(objtype)) then objtype = 'SERENDIPITY_MANUAL' - - ;---------- - ; Insist on modifying a CVS version of the speclog product, and - ; not some tagged version. - - spawn, 'speclog_version', logvers, /noshell - print, 'SPECLOG_VERSION= ' + logvers - if (strmatch(logvers, 'NOCVS*') EQ 0) then begin - print, 'The speclog version is not a CVS version, so quitting' - return - endif - logdir = getenv('SPECLOG_DIR') - - ;---------- - ; Read the input file - - readcol, infile, plate, mjd, fiberid, format='(L,L,L)' - if (NOT keyword_set(plate)) then begin - print, 'No objects read from file ' + infile - return - endif - - ;---------- - ; Loop over each object - - for iobj=0L, n_elements(plate)-1 do begin - ; Get the RA,DEC for this object - readspec, plate[iobj], mjd=mjd[iobj], fiberid[iobj], plug=thisplug - thisra = thisplug.ra - thisdec = thisplug.dec - - ; Find all plPlugMapM files for this plate - platestr = string(plate[iobj], format='(I4.4)') - mapfile = 'plPlugMapM-' + platestr + '-*.par' - mapfile = findfile(filepath(mapfile, root_dir=logdir, subdir='?????'), $ - count=nfile) - splog, 'Object #', iobj, ' has ', nfile, ' plug-map files' - - ; Loop over each plPlugMapM file, changing this object as appropriate - for ifile=0L, nfile-1 do begin - yanny_read, mapfile[ifile], pp, hdr=hdr, enums=enums, $ - structs=structs, stnames=stnames, /anonymous - ip = (where(stnames EQ 'PLUGMAPOBJ'))[0] - if (ip EQ -1) then $ - message, 'Invalid plug-map file ' + mapfile[ifile] - adiff = djs_diff_angle((*(pp[ip])).ra, (*(pp[ip])).dec, $ - thisplug.ra, thisplug.dec) - imatch = where(adiff LT 1./3600 $ - AND strmatch((*(pp[ip])).holetype,'OBJECT*'), nmatch) - - ; Change the OBJTYPE for any matching objects, and over-write the file - if (nmatch GT 0) then begin - (*(pp[ip]))[imatch].objtype = objtype - splog, 'Modifying ' + mapfile[ifile] - yanny_write, mapfile[ifile], pp, hdr=hdr, enums=enums, $ - structs=structs, stnames=stnames - endif - endfor - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/plugfile_unmapped.pro b/pro/plan/plugfile_unmapped.pro deleted file mode 100644 index 56be43114..000000000 --- a/pro/plan/plugfile_unmapped.pro +++ /dev/null @@ -1,103 +0,0 @@ -;+ -; NAME: -; plugfile_unmapped -; -; PURPOSE: -; List which fibers in a plPlugMapM file are unmapped, and the info -; that might help decide where those fibers should be. -; -; CALLING SEQUENCE: -; plugfile_unmapped, filename -; -; INPUTS: -; filename - Look for a plPlugMapM file in the speclog directory -; matching $SPECLOG_DIR/?????/FILENAME. -; -; OPTIONAL INPUTS: -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; There are two lists of information provided: First, the list of fiber -; numbers that are not plugged, and the RA,DEC ranges of the other 19 fibers -; in that bundle on this plate. Second, a list of the object information -; for the unplugged objects, including their RA,DEC position and the fiber -; numbers of the nearest plugged fibers. -; -; Presumably, those unplugged objects will be plugged by one of the fibers -; whose neighboring fiber numbers are nearby. This isn't necessarily true, -; for example if the pluggers simply skipped one fiber entirely while -; plugging, and the unplugged object is in a completely un-reachable -; position elsewhere on the plate. -; -; A companion procedure to this is FIND_UNPLUGGED. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_diff_angle() -; splog -; yanny_readone() -; -; REVISION HISTORY: -; 10-Sep-2003 Written by David Schlegel, Princeton (not checked in then) -;- -;------------------------------------------------------------------------------ -pro plugfile_unmapped, plugfile - - topdir = getenv('SPECLOG_DIR') - filename = findfile(filepath(plugfile, root_dir=topdir, $ - subdir='?????')) - filename = filename[0] ; Select the first file that matches - if (NOT keyword_set(filename)) then begin - print, 'File not found' - return - endif - plug = yanny_readone(filename) - - plug = plug[where(strmatch(plug.holetype,'OBJECT*'))] - qgood = lonarr(640) - indx = where(plug.fiberid GE 1) - qgood[plug[indx].fiberid-1] = 1 - ibad = where(qgood EQ 0, nbad) - if (nbad EQ 0) then begin - splog, 'No unmapped fibers' - endif else begin - splog, 'Unmapped fiber IDs: ', ibad+1 - for j=0L, nbad-1 do begin - bundlenum = fix(ibad[j]/20) - inbundle = where(plug.fiberid-1 GE bundlenum*20 $ - AND plug.fiberid LE (bundlenum+1)*20) - rarange = minmax(plug[inbundle].ra) - ; Fix wrapping of RA about 360 deg. - if ((rarange[1] - rarange[0]) GT 180) then $ - rarange = [min(plug[inbundle].ra + (plug[inbundle].ra LE 180)*360), $ - max(plug[inbundle].ra - (plug[inbundle].ra GE 180)*360) ] - decrange = minmax(plug[inbundle].dec) - splog, 'Fiber# ', ibad[j]+1, $ - ' Bundle at RA=', string(rarange,format='(2f7.2)'), $ - ' DEC=', string(decrange,format='(2f7.2)') - endfor - - jndx = where(plug.fiberid LE 0, nbad) - for j=0L, nbad-1 do begin - ; Find the nearest mapped fibers to this unmapped hole - adist = djs_diff_angle(plug[jndx[j]].ra, plug[jndx[j]].dec, $ - plug[indx].ra, plug[indx].dec) - inearest = (plug[indx[sort(adist)]].fiberid)[0:9] - splog, ' ' - splog, string(plug[jndx[j]].objtype+' ', format='(a10)'), $ - ' MAG=' + string(plug[jndx[j]].mag, format='(5f6.2)'), $ - ' RA=' + string(plug[jndx[j]].ra, format='(f11.6)'), $ - ', DEC=' + string(plug[jndx[j]].dec, format='(f11.6)') - splog, 'Nearest mapped fibers=',strtrim(string(inearest),2) - endfor - endelse - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/plugmap_replace.pro b/pro/plan/plugmap_replace.pro deleted file mode 100644 index 3f0f65881..000000000 --- a/pro/plan/plugmap_replace.pro +++ /dev/null @@ -1,85 +0,0 @@ -;------------------------------------------------------------------------------ -;+ -; NAME: -; plugmap_replace -; -; PURPOSE: -; Replace plPlugMapM files in the speclog product with new files -; if any of the FIBERID's differ. -; -; CALLING SEQUENCE: -; plugmap_replace, [ mjd=, mjstart=, mjend= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd - MJDs in the speclog product to inspect+replace -; mjstart - Start MJD in the speclog product to inspect+replace -; mjend - End MJD in the speclog product to inspect+replace -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Consider all files $SPECLOG_DIR/$MJD/plPlugMapM-*.par . -; Replace if pluggings differ using files in $ASTROLOG_DIR/* . -; -; EXAMPLES: -; Start with modified versions of the plPlugMapM files in a temp -; directory (scan2), and copy into the speclog product: -; setenv,'ASTROLOG_DIR=/home/schlegel/scan2' -; setenv,'SPECLOG_DIR=/home/schlegel/products/NULL/speclog/trunk' -; plugmap_replace -; After the above, the changed files need to be "svn commit" from $SPECLOG_DIR -; -; BUGS: -; -; PROCEDURES CALLED: -; yanny_free -; yanny_par() -; yanny_readone() -; yanny_write -; -; REVISION HISTORY: -; 31-Mar-2011 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro plugmap_replace, mjd=mjd, mjstart=mjstart, mjend=mjend - - speclog_dir = getenv('SPECLOG_DIR') - astrolog_dir = getenv('ASTROLOG_DIR') - if (keyword_set(speclog_dir) * keyword_set(astrolog_dir) EQ 0) then $ - message, 'Must set SPECLOG_DIR and ASTROLOG_DIR' - splog,file='replace.log' - mjdlist = get_mjd_dir(speclog_dir, mjd=mjd, mjstart=mjstart, mjend=mjend) - - if (NOT keyword_set(mjdlist)) then begin - splog, 'No MJDs found' - return - endif - - i = 0L - for imjd=0L, n_elements(mjdlist)-1L do begin - files = findfile(filepath('plPlugMapM-*.par', root_dir=speclog_dir, $ - subdir=mjdlist[imjd]), count=nfile) - for ifile=0L, nfile-1L do begin - file1 = (findfile(filepath(fileandpath(files[ifile]), $ - root_dir=astrolog_dir, subdir='*'), count=ct1))[0] - if (ct1 GT 0) then begin - print, i++, ' '+file1, files[ifile] - dat1 = yanny_readone(file1) - dat2 = yanny_readone(files[ifile]) - ndiff = long(total(dat1.fiberid NE dat2.fiberid)) - if (ndiff GT 0) then begin - splog, 'Replacing '+files[ifile], ndiff - spawn, '\cp -f '+file1+' '+files[ifile] - endif - endif - endfor - endfor - splog, /close - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/rdnoise_history.pro b/pro/plan/rdnoise_history.pro deleted file mode 100644 index 1ab68a0a9..000000000 --- a/pro/plan/rdnoise_history.pro +++ /dev/null @@ -1,136 +0,0 @@ -;+ -; NAME: -; rdnoise_history -; -; PURPOSE: -; Compute the noise history for the BOSS CCDs -; -; CALLING SEQUENCE: -; rdnoise_history, [docams=, mjd= ] -; -; INPUTS: -; -; REQUIRED KEYWORDS: -; -; OPTIONAL KEYWORDS: -; docams - Camera(s); default to ['b1','b2','r1','r2'] -; mjd - Search for all files in $BOSS_SPECTRO_DATA/MJD; -; default to '5[5-9]???' -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Output files with 12 columns: file name, MJD, TAI, exposure time (seconds), -; read noise in DN in each of the 4 quadrants, standard deviation of the -; bias drift in DN (row-to-row) in each of the 4 quadrants. -; Skip any Hartmann exposures (where HARTMANN header is not 'Out'). -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_avsigclip() -; djsig() -; fileandpath() -; sdssproc -; splog -; -; REVISION HISTORY: -; 21-Oct-2009 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro rdnoise_history, docams=docams, mjd=mjd1 - - if (NOT keyword_set(docams)) then docams = ['b1','b2','r1','r2'] - if (n_elements(docams) GT 1) then begin - for i=0, n_elements(docams)-1 do $ - rdnoise_history, docams=docams[i], mjd=mjd1 - return - endif - - if (keyword_set(mjd1)) then mjdstr = strtrim(mjd1,2) $ - else mjdstr = '5[5-9]???' - - mjdlist = '' - for i=0, n_elements(mjdstr)-1 do begin - spawn, '\ls -d '+getenv('BOSS_SPECTRO_DATA') + '/' + mjdstr[i], mjdlist1 - if (keyword_set(mjdlist1)) then $ - mjdlist = keyword_set(mjdlist) ? [mjdlist,mjdlist1] : mjdlist1 - endfor - if (NOT keyword_set(mjdlist)) then begin - print, 'No files found' - return - endif - nmjd = n_elements(mjdlist) - - for imjd=0, nmjd-1 do begin - thisname = filepath('sdR-'+docams+'-????????.fit*', $ - root_dir=mjdlist[imjd]) - thisname = findfile(thisname, count=ct) - if (ct GT 0) then begin - if (NOT keyword_set(framename)) then framename = thisname $ - else framename = [framename, thisname] - endif - endfor - - camcolor = strmid(docams,0,1) - case camcolor of - 'b': begin - xbias0 = [ 0, 4284, 0, 4284] - xbias1 = [ 67, 4340, 67, 4340] - y0 = [ 56, 56, 2112, 2112] - y1 = [2111, 2111, 4167, 4167] - end - 'r': begin - xbias0 = [ 0, 4241, 0, 4241] - xbias1 = [110, 4351,110, 4351] - y0 = [ 100, 100, 2112, 2112] - y1 = [2111, 2111, 4123, 4123] - end - endcase - - splog, filename='rdnoise-'+docams+'.log', /noname, $ - '# File MJD TAI EXPTIME Rdnoise0 Rdnoise1 Rdnoise3 Drift0 Drift1 Drift2 Drift3' - splog, /noname, $ - '# All noise values in DN' - - nfile = n_elements(framename) - mjd = lonarr(nfile) - tai = dblarr(nfile) - hartmann = strarr(nfile) - exptime = fltarr(nfile) - rdnoise = fltarr(nfile,4) - rddrift = fltarr(nfile,4) - for ifile=0, nfile-1 do begin - print, 'Reading file ', ifile, ' of ', nfile, ': ' + framename[ifile] - sdssproc, framename[ifile], hdr=hdr, /silent, /nopixflat, /nopixmask - hartmann[ifile] = strtrim(sxpar(hdr, 'HARTMANN'),2) - exptime[ifile] = sxpar(hdr, 'EXPTIME') - mjd[ifile] = sxpar(hdr, 'MJD') - tai[ifile] = sxpar(hdr, 'TAI-BEG') - if (hartmann[ifile] EQ 'Out') then begin - img = mrdfits(framename[ifile],/fscale) - if (keyword_set(img)) then begin - if (mjd[ifile] LT 55113) then img = rotate(img,2) - for j=0,3 do begin - biasimg = img[xbias0[j]:xbias1[j],y0[j]:y1[j]] - rdnoise[ifile,j] = djsig(biasimg) * 1.015 - bvec = djs_avsigclip(biasimg, 1) - rddrift[ifile,j] = stddev(bvec) - endfor - endif - splog, fileandpath(framename[ifile]), $ - mjd[ifile], tai[ifile], (exptime[ifile]>0)<99999, $ - rdnoise[ifile,*], rddrift[ifile,*], $ - format='(a,i6,f12.0,f8.1,8f10.3)', /noname - endif - endfor - - splog, /close - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/smeartimes.pro b/pro/plan/smeartimes.pro deleted file mode 100644 index d87b6c6c3..000000000 --- a/pro/plan/smeartimes.pro +++ /dev/null @@ -1,110 +0,0 @@ -;+ -; NAME: -; smeartimes -; -; PURPOSE: -; List the TAI timestamps of 'smear' exposures in a log file. -; -; CALLING SEQUENCE: -; smeartimes -; -; INPUTS: -; -; OPTIONAL INPUTS: -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; All raw spectro files (sdR files) have their headers read and -; their start and end time stamps computed. The purpose of this -; is to get an exact list of times and determine from the TPM logs -; whether the telescope moved in the way that it was supposed to -; during these 'smear' exposures. -; -; The file names and their timestamps are written to the following files. -; timestamps-all.log -; timestamps-smear.log -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; sdssproc -; splog -; struct_print -; -; REVISION HISTORY: -; 10-Dec-2002 Written by David Schlegel, Princeton (not checked in then) -;- -;------------------------------------------------------------------------------ -pro smeartimes - - ;---------- - ; Find all the b1 spFrame files, and sort by exposure number - - spawn, 'ls -d ' + getenv('BOSS_SPECTRO_DATA') + '/?????', mjdlist - for imjd=0L, n_elements(mjdlist)-1 do begin - splog, 'Searching for files in ' + mjdlist[imjd] - flist = findfile( $ - filepath('sdR-b1-????????.fit*', root_dir=mjdlist[imjd]), count=ct) - if (ct GT 0) then begin - if (NOT keyword_set(files)) then files = flist $ - else files = [files, flist] - endif - endfor - - files = files[ sort(fileandpath(files)) ] - nfile = n_elements(files) - - ;---------- - ; Loop through, identifying smear frames. - - hstruct1 = create_struct( $ - 'mjd' , 0L, $ - 'plate' , 0L, $ - 'expnum' , 0L, $ - 'flavor' , '', $ - 'quality' , '', $ - 'tai_beg' , 0d, $ - 'tai_end' , 0d, $ - 'exptime' , 0d, $ - 'obscomm' , '' ) - hstruct = replicate(hstruct1, nfile) - - for ifile=0L, nfile-1 do begin - splog, 'Reading file ', ifile, ' of ', nfile, $ - ': ', fileandpath(files[ifile]) - - sdssproc, files[ifile], hdr=hdr - hstruct[ifile].mjd = sxpar(hdr,'MJD') - hstruct[ifile].plate = sxpar(hdr,'PLATEID') -; hstruct[ifile].expnum = sxpar(hdr,'EXPOSURE') - hstruct[ifile].expnum = long( strmid(fileandpath(files[ifile]),7,8) ) - hstruct[ifile].flavor = strtrim(sxpar(hdr,'FLAVOR'),2) - hstruct[ifile].quality = strtrim(sxpar(hdr,'QUALITY'),2) - hstruct[ifile].tai_beg = sxpar(hdr,'TAI-BEG') - hstruct[ifile].tai_end = sxpar(hdr,'TAI-END') - hstruct[ifile].exptime = sxpar(hdr,'EXPTIME') - hstruct[ifile].obscomm = strtrim(sxpar(hdr,'OBSCOMM'),2) - endfor - - ; Select the smear exposures, and exclude the star cluster plates - ismear = where(hstruct.expnum NE 0 $ - AND (hstruct.plate LT 798 OR hstruct.plate GT 801) $ - AND hstruct.obscomm NE '{BD17 Smear Pattern}' $ - AND hstruct.flavor EQ 'smear', nsmear) - - formatcodes = [ ['TAI_BEG', 'f11.0'], $ - ['TAI_END', 'f11.0'] ] - - struct_print, hstruct, filename='timestamps-all.log', $ - formatcodes=formatcodes - struct_print, hstruct[ismear], filename='timestamps-smear.log', $ - formatcodes=formatcodes - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/specheaders.pro b/pro/plan/specheaders.pro deleted file mode 100644 index 10ca6fa16..000000000 --- a/pro/plan/specheaders.pro +++ /dev/null @@ -1,95 +0,0 @@ -;+ -; NAME: -; specheaders -; -; PURPOSE: -; Consolodate all of the raw spectro files headers into a single FITS file -; -; CALLING SEQUENCE: -; specheaders -; -; INPUTS: -; -; OPTIONAL INPUTS: -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; All raw spectro files (sdR files) have their headers read and -; consolodates into a single FITS binary table file 'specheaders.fits'. -; A specific file is chosen as the template file, and only header cards -; that match that file are used. -; Header keywords with '-' are replaced with '_'. -; Repeat instances of the same keyword in the same file are ignored. -; The 'END' card is ignored. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; fileandpath() -; headfits() -; sxpar() -; -; REVISION HISTORY: -; 02-Sep-2009 Written by David Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro specheaders - - ;---------- - ; Find all the b1 spFrame files, and sort by exposure number - - spawn, 'ls -d ' + getenv('BOSS_SPECTRO_DATA') + '/?????', mjdlist -;mjdlist = mjdlist[2500:2550] ; ??? - for imjd=0L, n_elements(mjdlist)-1 do begin - splog, 'Searching for files in ' + mjdlist[imjd] - flist = findfile( $ - filepath('sdR-b1-????????.fit*', root_dir=mjdlist[imjd]), count=ct) - if (ct GT 0) then begin - if (NOT keyword_set(files)) then files = flist $ - else files = [files, flist] - endif - endfor - - files = files[ sort(fileandpath(files)) ] - nfile = n_elements(files) - - ;---------- - ; Construct a structure with all the header info - ; Use a specific file as a template - - file_template = files[(where(strmatch(files,'*sdR-b1-00061798.fit*')))[0]] - hdr = headfits(file_template) - struct1 = create_struct('SIMPLE', 'T') - hname = 'SIMPLE' - for j=1L, n_elements(hdr)-1L do begin - hname1 = strtrim(strmid(hdr[j],0,8),2) - thisname = repstr(hname1,'-','_') - if (thisname EQ 'NE') then thisname = 'NEON' - if (hname1 NE '' AND hname1 NE 'END' AND $ - total(hname1 EQ hname) EQ 0) then begin - struct1 = create_struct(struct1, thisname, (sxpar(hdr,thisname))[0]) - hname = [hname, hname1] ; Header names - endif - endfor - - structs = replicate(struct1, nfile) - tags = tag_names(struct1) ; Tag names - - for ifile=0L, nfile-1L do begin - splog, 'Reading file ', ifile, ' of ', nfile, $ - ': ', fileandpath(files[ifile]) - hdr = headfits(files[ifile]) - for j=0L, n_elements(hname)-1L do $ - structs[ifile].(j) = sxpar(hdr, hname[j]) - endfor - - mwrfits, structs, 'specheaders.fits' ,/create - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/update_plate_release.pro b/pro/plan/update_plate_release.pro deleted file mode 100644 index fb146c35c..000000000 --- a/pro/plan/update_plate_release.pro +++ /dev/null @@ -1,80 +0,0 @@ -;+ -; NAME: -; update_plate_release -; -; PURPOSE: -; Update the plate list file found in this idlspec2d product -; with new data release notes. -; -; CALLING SEQUENCE: -; update_plate_release, [ release, rfile, outfile ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; release - Data release name to put into plate list file; -; default to 'DR6' -; rfile - Yanny param file with PLATEID,MJD,RELEASE columns, -; where the release names should appear in the RELEASE entries; -; default to "$IDLSPEC2D_DIR/etc/dr2spectro.par", -; outfile - Name of output file; default to 'spPlateList.par' in the -; current directory. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The file in $SPECLOG_DIR/opfiles/spPlateList.par is read, and we -; merge in the list of plates returned by the PLATELIST procedure. -; Manual comments from the first file are retained. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $SPECLOG_DIR/opfiles/spPlateList.par -; -; PROCEDURES CALLED: -; yanny_readone() -; yanny_write -; -; REVISION HISTORY: -; 04-Feb-2004 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -pro update_plate_release, release, rfile, outfile - - if (NOT keyword_set(release)) then release = 'DR6' - if (NOT keyword_set(rfile)) then $ - rfile = filepath('dr2spectro.par', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdir='etc') - if (NOT keyword_set(outfile)) then outfile = 'spPlateList.par' - - plist = yanny_readone(filepath('spPlateList.par', $ - root_dir=getenv('SPECLOG_DIR'), subdir='opfiles'), $ - hdr=hdr, enums=enums, structs=structs, stnames=stnames) - drlist = yanny_readone(rfile) - -; indx = where(strmatch(strupcase(drlist.release), release), ct) -; if (ct EQ 0) then begin -; print, 'No matches found to RELEASE=', release -; endif -; drlist = drlist[indx] - - for i=0L, n_elements(drlist)-1 do begin - j = where(plist.plate EQ drlist[i].plateid $ - AND plist.mjd EQ drlist[i].mjd, ct) - if (ct NE 1) then $ - message, 'Not found: ' + string(drlist[i].plateid) $ - + ' ' + string(drlist[i].mjd) - if (NOT keyword_set(plist[j].public)) then $ - plist[j].public = strtrim(plist[j].public+' '+release, 2) - endfor - - yanny_write, outfile, ptr_new(plist), hdr=hdr, enums=enums, $ - structs=structs, stnames=stnames - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plan/update_platelist.pro b/pro/plan/update_platelist.pro deleted file mode 100644 index 816c41188..000000000 --- a/pro/plan/update_platelist.pro +++ /dev/null @@ -1,103 +0,0 @@ -;+ -; NAME: -; update_platelist -; -; PURPOSE: -; Update the plate list file found in the speclog product. -; -; CALLING SEQUENCE: -; update_platelist, [ outfile ] -; -; INPUTS: -; outfile - Name of output file; default to 'spPlateList.par' in the -; current directory. -; -; OPTIONAL KEYWORDS: -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The file in $SPECLOG_DIR/opfiles/spPlateList.par is read, and we -; merge in the list of plates returned by the PLATELIST procedure. -; Manual comments from the first file are retained. -; The auto-generated "platequality" is used for plates being added -; if they didn't already have a quality in the file. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $SPECLOG_DIR/opfiles/spPlateList.par -; -; PROCEDURES CALLED: -; copy_struct_inx -; platelist -; yanny_read -; yanny_write -; -; REVISION HISTORY: -; 04-Jun-2002 Written by D. Schlegel, Princeton (checked in later) -;------------------------------------------------------------------------------ -pro update_platelist, outfile - - if (NOT keyword_set(outfile)) then outfile = 'spPlateList.par' - - ;---------- - ; Read the existing list of plates - - thisfile = filepath('spPlateList.par', root_dir=getenv('SPECLOG_DIR'), $ - subdir='opfiles') - yanny_read, thisfile, pdat, structs=structs, /anonymous - thislist = *pdat[0] - yanny_free, pdat - - ;---------- - ; Find out which plates are reduced - - platelist, plist=plist - - ;---------- - ; Merge these two lists - - platemjd1 = plate_to_string(thislist.plate) $ - + ' ' + string(thislist.mjd, format='(i5.5)') - platemjd2 = plate_to_string(plist.plate) $ - + ' ' + string(plist.mjd, format='(i5.5)') - platemjd = [platemjd1, platemjd2] - platemjd = platemjd[ uniq(platemjd, sort(platemjd)) ] - - newlist = thislist[0] - struct_assign, {junk:0}, newlist - nplate = n_elements(platemjd) - newlist = replicate(newlist, nplate) - for i=0, nplate-1 do $ - newlist[i].plate = long( (strsplit(platemjd[i],/extract))[0] ) - for i=0, nplate-1 do $ - newlist[i].mjd = long( (strsplit(platemjd[i],/extract))[1] ) - - ; Retain any values from the original spPlateList.par file - for i=0L, n_elements(thislist)-1L do begin - j = where(newlist.plate EQ thislist[i].plate $ - AND newlist.mjd EQ thislist[i].mjd) - copy_struct_inx, thislist[i], newlist, index_to=j - endfor - - ; Copy "platequality" from the auto-generated platelist file - ; if there isn't already a value for that field - for i=0L, n_elements(plist)-1L do begin - j = (where(newlist.plate EQ plist[i].plate $ - AND newlist.mjd EQ plist[i].mjd, ct))[0] - if (ct GT 0) then $ - if (strtrim(newlist[j].platequality) EQ '') then $ - newlist[j].platequality = plist[i].platequality - endfor - - yanny_write, outfile, ptr_new(newlist), $ - structs=structs, stnames='spplatelist' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/README b/pro/plate/README deleted file mode 100644 index 621fed81e..000000000 --- a/pro/plate/README +++ /dev/null @@ -1,219 +0,0 @@ - -Following is a summary of the special star cluster plates designed -in Nov 2001. Each plate has several pointings (tiles) associated -with them, where each pointing is offset by ~0.2 degrees and has -holes drilled for a different magnitude range of stars. There are -a total of 4 plates with 19 pointings (tiles). The total number -of tiled stars is 640 x 4 = 2560. - -Cluster TILE PLATE RA DEC rmag Nobj Guide fibers ---------- ---- ----- ----- ----- --------- ---- ------------ -Praesepe 9217 798 130.0 +19.6 12.0 15.5 266 3,5,8,10,11 - 9218 798B 129.8 +19.6 9.0 12.2 297 1,4,6 - 9219 798C 130.2 +19.6 5.9 9.2 69 2,7,9 -(HD84937) 9220 798D 146.9 +14.3 8.2 8 11 ---------- ---- ----- ----- ----- --------- ---- ------------ -Pleiades 9221 799 57.0 +23.7 13.9 17.1 119 3,5,8,10,11 - 9222 799B 56.8 +23.7 11.1 14.1 190 1,6 - 9223 799C 56.6 +23.7 8.3 11.3 262 4,7 - 9224 799D 57.2 +23.7 5.5 8.5 51 2 - 9225 799E 57.4 +23.7 2.9 5.9 10 9 -(BD+21) 9226 799F 63.3 +23.1 9.1 8 11 ---------- ---- ----- ----- ----- --------- ---- ------------ -N752 9227 800 29.2 +37.7 12.0 15.2 219 3,5,8,10,11 - 9228 800B 29.0 +37.7 9.0 12.2 349 1,4,6 - 9229 800C 29.4 +37.7 6.0 9.2 64 2,7,9 -(HD19445) 9230 800D 46.6 +26.9 7.9 8 11 ---------- ---- ----- ----- ----- --------- ---- ------------ -N1817 9231 801 78.0 +16.7 15.2 18.2 16 3,5,8,10,11 - 9232 801B 77.8 +16.7 12.8 15.4 232 1,6 - 9233 801C 78.2 +16.7 10.4 13.0 309 4,7 - 9234 801D 78.4 +16.7 8.0 10.6 74 2,9 -(BD+21) 9235 801E 63.2 +23.0 9.1 9 11 ---------- ---- ----- ----- ----- --------- ---- ------------ - -The information is pulled simply from the 2MASS files supplied -by Jill Knapp. The astrometry is directly from 2MASS; no proper -motions have been applied. Some of these clusters are supplemented -with Tycho stars that were not in Jill's files. Those Tycho objects -were put in epoch 1998 equinox J2000 to be roughly consistent with 2MASS. -The epoch does not matter much as long as it's consistent. Guide stars -are drawn from the same lists in the magnitude range [10.5,12.5]. - -For objects NOT drawn from a membership list, only those -with an optical counterpart in the 2MASS catalog were considered. - -In most cases, the priority is - * bright stars + Hipparcos supplement - * members - * fainter stars -However, NGC 1817 is the exception. There the priority is - * members - * other stars (and not super-bright) - -There are no explicit sky-fiber positions for any of these plates. In -each pointing, the objects that appear in that pointing will be called -OBJECT/SERENDIPITY_MANUAL. All other fibers (which are real objects -in other pointings) will be called OBJECT/SKY and used for sky-subtraction. -For all but the last pointing, those are the only type of objects. - -Some objects will appear on two pointings of the same plate, since I've -intentionally chosen the magnitude ranges to slightly overlap. - -The last pointings will be used for spectro-photometry. They have 9 or 10 -holes drilled directly north & south of guide fiber #11. A smear of one -of the five SDSS fundamental standard stars will obtain 9 spectra of that -star. Those pointings only have the 10 OBJECT/SPECTROPHOTO_STD holes and -630 OBJECT/SKY holes. - -We've approximated SDSS ugriz magnitudes for the Tycho stars with: - u = V - 0.024 + 2.317 * (B-V) (Npts= 226) - g = V - 0.081 + 0.544 * (B-V) (Npts= 184) - r = V + 0.140 - 0.477 * (B-V) (Npts= 219) - i = V + 0.341 - 1.002 * (B-V) (Npts= 198) - z = V + 0.509 - 1.360 * (B-V) (Npts= 200) -The above fits were done to the MT secondary standards (assuming -that Tycho B+V are approximately Johnson.) - -The 2MASS catalogs list B+R magnitudes that are related to Tycho B+V -magnitudes as follows: - B_Tycho = R_2MASS + 0.749 * (B-R)_2MASS + 0.033 - V_Tycho = R_2MASS - 0.093 * (B-R)_2MASS - 0.003 -For those objects in 2MASS that only list JHK magnitudes, I transform with: - B_2MASS = J + 4.51 * (J-K) + 0.22 - R_2MASS = J + 2.26 * (J-K) + 0.08 - (B-R)_2MASS = 2.25 * (J-K) + 0.14 - -The guide stars are chosen from the same input list of objects, -but in the limited magnitude range of r=[10.5,12.5]. This is significantly -brighter than the usual SDSS guide stars which are at about r=15 and -don't give very good S/N on the guide camera. Note that an object can -be a guide star for one pointing and a science target on another pointing. -The only guide fiber that is re-used on more than one pointing is #11, -which is used for the last (spectrophotometric) pointing. - -The code that generated all the plugmap and associated files is in the -"idlspec2d" product in the "pro/plate" directory. - -We will need some minor modifications of the fiber-mapper code at APO -to deal with these plugmap files. The observing code (SOP) hopefully -will require no modification, and the on-the-mountain reductions (SOS) -should also work fine. Once the data are taken, Spectro-2D will need -some more serious modifications to deal with it. - -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- -PRAESEPE - -Praesepe: We're missing a small band of data near RA=129.5. - -Plate center: RA=130, dec = 19.6 - -Scott Burles found a membership list from Wang et al 1995. -This gave 88 matches (1") to 2MASS at J>10. -File: praesepe.match - -I then took all stars with J<10 on the plate. This gave 215 stars. -File: praesepe.j10 - -I then took all stars with 1024, -plus another patch at dec>24, 5830 (and a small band at 27.8ish), so I -moved the plate center off the cluster center a bit. - -Plate center: ra = 29.25, dec = 37.68 - -Scott Burles found a membership list from Daniel et al 1994. -This gave 98 matches (1") to 2MASS at J>10. -File: n752.match - -I then took all stars with J<10 on the plate. This gave 238 stars. -File: n752.j10 - -I then took all stars with 10sdss-spectro/766 - -Required Weather Conditions ---------------------------- -These plates must be observed in good conditions: photometric, reasonable -seeing, but the sky can be bright -- moon is OK. They should also be -observed near transit except for N752 which is too close to the zenith -at DEC=+37. Suggested starting observing times: - N752 LMST= 3h MST ~10pm in Dec <-- This is 1 hr after transit - Pleiades 3h MST ~10pm - N1817 4h30 MST ~11:30 - Praesepe 8h MST ~3am -We expect it to take between 60 and 90 minutes to observe the full -sequence for each of these plates once they are mounted. If any -pointings have to be skipped due to time contraints, do not skip -the last (spectro-photometric) pointing. - - -Plugging + Mapping ------------------- -There's one bit of special instructions for plugging these plates. -There will be an obvious line of 9 or 10 holes emanating from guide -fiber #11 (explained below). It would be preferable if these are -not plugged with adjacent fibers in a fiber bundle. That is, when -plugging, plug one fiber in one of these holes, plug the next fiber -from that bundle elsewhere, then another on one of those holes, etc. - -When one of these plates is mapped, it produces several plPlugMapM -files -- one for each pointing. These will be called, for example, - plPlugMapM-0798-59999-01.par - plPlugMapM-0798-59999-01B.par - ... - plPlugMapM-0798-59999-01D.par -Each plug-map contains exactly the same fiber->position information, -but specifies which fibers are real objects. The Yanny header of -these files also has the correct RA,DEC for each pointing. - -Observing: Goto field ---------------------- -To go to the 1st pointing of the Praesepe plate (for ex): - - SOP> loadCartridge plPlugMapM-0798-59999-01.par - SOP> gotoField - -Observing: Pre-Calibrations ---------------------------- -Take the normal sequences of pre- and post-calibrations: - - SOP> preCalibs - -Observing: Getting offsets --------------------------- -We use a subset of the guide fibers for each pointing, but always 5 for -the first pointing just so we can get the offset, scale + rotation well. -The guide fibers appropriate to that pointing should appear in the guide -camera. To be extra cautious, you could enable/disable the appropriate fibers: - - SOP> enableFiber 3 5 8 10 11 <--- (Actually must be done 1 fiber at a time) - SOP> disableFiber 1 2 4 6 7 9 <--- (Actually do 1 fiber at a time) - SOP> startGuider 1 <--- These are bright guide stars - -Then you will want to make sure you are guiding well on the field with -a good scale and rotation. **Definitely** save your offsets: - - SOP> stickyOffsets - -Observing: First N-1 Pointings ------------------------------- -All the observations will be smears. The smear command for each pointing -is in the table below. For ex, for the 1st Praesepe pointing: - - SOP> stopGuider <--- Turn off guider!! - SOP> smear 2.5 3.0 240 -nswath 1 -nogcam <--- Take 3 such exposures! - -Always take 3 exposures for each pointing. Smear should always return -you to the start position, which can be checked on the guider. - -For the next pointing, you will need to load the next plug-map, go to -the field, guide for a short while if the stars aren't in the center of -the fiber, turn off the guider, and issue another smear command. For ex: - - SOP> loadCartridge plPlugMapM-0798-59999-01B.par - SOP> gotoField - SOP> enableFiber 1 4 6 <--- (Actually do 1 fiber at a time) - SOP> disableFiber 2 3 5 7 8 9 10 11 <--- (Actually do 1 fiber at a time) - SOP> startGuider 1 <--- These are bright guide stars - ... - SOP> stopGuider <--- Turn off guider!! - SOP> stickyOffsets - SOP> smear 2.5 3.0 18 -nswath 1 -nogcam <--- Take 3 such exposures! - -Observing: Last Pointing ------------------------- -The last pointing is special, in that it takes the plate to the -nearest SDSS primary standard and puts it down guide fiber 11. -There are 5 fibers spaced every 1 arcmin north of this guide fiber, -and 5 to the south. There is a new SOP command "decSmear" which -(hopefully!) will move the telescope such that this star tracks -through those fibers. (The normal "smear" command always smears -in elevation.) The default speed of 1 arcmin/minute results in an -effective exposure time of ~3 sec, which is good for these stars. - -The "decSmear" command will have to be sourced from a CVS version of IOP, -or copied from "sdsshost:/home/schlegel/decSmear.tcl". - -These primary coordinates were from the same erroneous source as SOP, -so we expect some small offsets to find these stars: - HD 84 ... offset in RA by +5" - HD 19 ... offset in RA by -3" - BD+21 ... offset in RA by -8" - - SOP> loadCartridge plPlugMapM-0798-59999-01D.par - SOP> gotoField - SOP> enableFiber 11 <--- (Actually do 1 fiber at a time) - SOP> disableFiber 1 2 3 4 5 6 7 8 9 10 <--- (Actually do 1 fiber at a time) - SOP> startGuider 1 <--- These is a bright star - ... - SOP> stopGuider <--- Turn off guider!! - SOP> stickyOffsets - SOP> decSmear 5.5 1.0 <--- Take 3 such exposures! - -Again, always take 3 such exposures. Smear should always return -you to the start position, which can be checked on the guider. - -Observing: Post-Calibrations ----------------------------- -Take the normal sequences of pre- and post-calibrations: - - SOP> postCalibs - -Observing: Other Tests ----------------------- -Once all of the above it done, and you have some time to kill before -that pot of espresso is done, it would be worth testing the decSmear -a bit more heavily. In the above, we did 1 swath that moved the SDSS -primary star through the 5 fibers north of the guide fiber. You could -test moving through the 5 fibers to the south with: - - SOP> decSmear 5.5 -1.0 - -You could also test doing a 3-swath decSmear which, like smear, spaces -the smears by 2.5 arc sec in order to approximate an aperature that -is wider than the fiber: - - SOP> decSmear 5.5 1.0 -nswath 3 - -Is the Data Good? ------------------ -My advise would be to look at the extracted spectra on the sos.apo -machine. These are the files - /data/spectro/spectrologs/$MJD/sci-$PLATE-$CAMERA-$EXPNUM.fits -You can look at them with the ATV command on sos.apo, as described at: - http://sdsshost.apo.nmsu.edu/sdssProcedures/spectro_apodisplay.html#display_idl - - -Cluster PLAT RA DEC rmag Guide fibers T_max smear command ---------- ---- ----- ----- ---- ------------ ------ --------------------------- -Praesepe 798 130.0 +19.6 12.0 3,5,8,10,11 142 smear 2.5 3.0 240 -nswath 1 - 798B 129.8 +19.6 9.0 1,4,6 9 smear 2.5 3.0 18 -nswath 1 - 798C 130.2 +19.6 5.9 2,7,9 0.5 smear 2.5 6.0 2 -nswath 1 -(HD84937) 798D 146.9 +14.3 8.2 11 4.3 n/a ---------- ---- ----- ----- ---- ------------ ------ --------------------------- -Pleiades 799 57.0 +23.7 13.9 3,5,8,10,11 820 smear 2.5 3.0 600 -nswath 1 - 799B 56.8 +23.7 11.1 1,6 62 smear 2.5 3.0 120 -nswath 1 - 799C 56.6 +23.7 8.3 4,7 4.7 smear 2.5 3.0 9 -nswath 1 - 799D 57.2 +23.7 5.5 2 0.4 smear 2.5 7.5 2 -nswath 1 - 799E 57.4 +23.7 2.9 9 0.03 smear 2.5 50 1 -nswath 1 -(BD+21) 799F 63.3 +23.1 9.1 11 9.9 n/a ---------- ---- ----- ----- ---- ------------ ------ --------------------------- -N752 800 29.2 +37.7 12.0 3,5,8,10,11 142 smear 2.5 3.0 240 -nswath 1 - 800B 29.0 +37.7 9.0 1,4,6 9 smear 2.5 3.0 18 -nswath 1 - 800C 29.4 +37.7 6.0 2,7,9 0.6 smear 2.5 6.0 1.2 -nswath 1 -(HD19445) 800D 46.6 +26.9 7.9 11 3.2 n/a ---------- ---- ----- ----- ---- ------------ ------ --------------------------- -N1817 801 78.0 +16.7 15.2 3,5,8,10,11 2718 smear 2.5 3.0 600 -nswath 1 - 801B 77.8 +16.7 12.8 1,6 298 smear 2.5 3.0 450 -nswath 1 - 801C 78.2 +16.7 10.4 4,7 33 smear 2.5 3.0 60 -nswath 1 - 801D 78.4 +16.7 8.0 2,9 3.6 smear 2.5 3.0 6 -nswath 1 -(BD+21) 801E 63.2 +23.0 9.1 11 9.9 n/a ---------- ---- ----- ----- ---- ------------ ------ --------------------------- - -In the above table, the maximum effective exposure time was computed -from the brightest r-mag object in each pointing by: - T_max = (900 sec) * 10^((r-14)/2.5) -For the default smears which move +/- 3.0 arcsec in elevation, the -effective exposure time is about half the smear time. Thus the smear -time can be 2 * T_max without saturating. - -In order to prevent too short of an exposure time, the "deltaaz" in the -smear command is increased for the brightest objects. For the 3rd mag -star in Pleiades, we smear across +/-50 arcsec in 1 second, resulting -in an effective exposure time of 0.03 sec. - --David and Scott diff --git a/pro/plate/README.RUNPLATE b/pro/plate/README.RUNPLATE deleted file mode 100644 index f7035582f..000000000 --- a/pro/plate/README.RUNPLATE +++ /dev/null @@ -1,20 +0,0 @@ - - -Files copied from sdssdp2.fnal.gov:/usrdevel/dp2/yanny/test - -Do the following in this directory. -Should be run on a Fermi machine, like sdssdp2. - -setup plate -plate - makePlates - fiberPlates -skipBrightCheck - makeFanuc - makeDrillPos - use_cs3 - ------------------------------------------------------------------------------- -makePlates - - Input plPlugMapT-$TILE.par - Make the file plPlugMapP-$PLATE.par - diff --git a/pro/plate/apo_refrac.pro b/pro/plate/apo_refrac.pro deleted file mode 100644 index d7fd9b0c6..000000000 --- a/pro/plate/apo_refrac.pro +++ /dev/null @@ -1,55 +0,0 @@ -;+ -; NAME: -; apo_refrac -; PURPOSE: -; Take RA and DEC and apply refraction at APO for a specific LST -; CALLING SEQUENCE: -; apo_refrac, ra, dec, racen, deccen, ra_refrac, dec_refrac [, $ -; lst=, airtemp= ] -; INPUTS: -; ra,dec - [N] arrays of true locations (J2000 deg) -; racen - RA center for tile (J2000 deg) -; deccen - DEC center for tile (J2000 deg) -; OPTIONAL INPUTS: -; lst - anticipated LST of observation (in deg; default to racen) -; airtemp - air temperature (in C; default to 5) -; OUTPUTS: -; ra_refrac,dec_refrac - [N] arrays of observed locations (J2000 deg) -; COMMENTS: -; Without setting LST explicitly, it assumes that you will observe -; at an hour angle of 0. -; Uses Lat=32.7803 deg, and Height=2788 m (relevant for APO) -; REVISION HISTORY: -; 26-Oct-2006 Written by MRB, NYU (cribbed from PRIMUS code by Burles) -;- -;------------------------------------------------------------------------------ -pro apo_refrac, ra, dec, racen, deccen, ra_refrac, dec_refrac, $ - lat=lat, airtemp=airtemp, lst=lst - -if n_elements(lat) EQ 0 then lat = 32.7803D -if n_elements(lst) EQ 0 then lst = double(racen) -if n_elements(height) EQ 0 then height = 2788.D -if n_elements(airtemp) EQ 0 then airtemp = 5.D -airtemp_k=airtemp+273.155 ; C to Kelvin - -ha = lst - ra -hacen = lst - racen - -hadec2altaz, ha, dec, lat, alt, az -new_alt = co_refract_list(alt, altitude=height, $ - epsilon=0.00001, temperature=airtemp_k, $ - /to_observed, pressure=1013.25) - -hadec2altaz, hacen, deccen, lat, altcen, azcen -new_altcen = co_refract_list(altcen, altitude=height, $ - epsilon=0.00001, temperature=airtemp_k, $ - /to_observed, pressure=1013.25) - -alt_refrac = new_alt - (new_altcen - altcen) -altaz2hadec, alt_refrac, az, lat, ha_refrac, dec_refrac - -ha_refrac = 180.D/!DPi * asin(sin(ha_refrac*!DPi/180.D)) - -ra_refrac = lst - ha_refrac - -end diff --git a/pro/plate/boss_galaxy_select.pro b/pro/plate/boss_galaxy_select.pro deleted file mode 100644 index b725abe81..000000000 --- a/pro/plate/boss_galaxy_select.pro +++ /dev/null @@ -1,125 +0,0 @@ -;+ -; NAME: -; boss_galaxy_select.pro -; PURPOSE: -; Version 0.00001 of the galaxy selection algorithm for BOSS -; CALLING SEQUENCE: -; ilist=boss_galaxy_select(obj) -; INPUTS: -; obj : A calibObj structure -; OPTIONAL INPUTS: -; -; KEYWORDS: -; -; OUTPUTS: -; ilist : A mask array -; ilist AND 2 : Cut I -; ilist AND 4 : Cut II -; ilist AND 8 : Cut III -; OPTIONAL OUTPUTS: -; -; RESTRICTIONS: -; -; EXAMPLES: -; -; COMMENTS: -; -; REVISION HISTORY: -; Written by Nikhil Padmanabhan, LBL -;---------------------------------------------------------------------- -function lrg_dperp, modelmag - - grcolor = modelmag[1,*]-modelmag[2,*] - ricolor = modelmag[2,*]-modelmag[3,*] - dperp = (ricolor) - (grcolor)/8.d0 - return, dperp - -end - - -function lrg_cpllel, modelmag - - grcolor = modelmag[1,*]-modelmag[2,*] - ricolor = modelmag[2,*]-modelmag[3,*] - c= 0.7 - cpllel = c*(grcolor) + (1.d0-c)*4.0d0*((ricolor) - 0.18) - return, cpllel - -end - -function lrg_cperp, modelmag - - grcolor = modelmag[1,*]-modelmag[2,*] - ricolor = modelmag[2,*]-modelmag[3,*] - cperp = (ricolor) - (grcolor/4.d0)-0.18 - return, cperp -end - - -function boss_galaxy_select, calibobj - - ; Get the number of galaxies - ngal = n_elements(calibobj) - - ; Set some reasonable defaults - maglim=[13.4d0, 19.5d0] ; Cut I parameters - dperp0=0.55 ; Cut II dperp - dperp1=0.75 ; Cut III dperp - ilimit=19.5 ; Cut II faint limit - ilow=17.5 ; Cut II, III bright limit - ihi=19.9 ; Cut III faint limit - - ; Check to see if calibobj has any elements - if (ngal EQ 0) then $ - message, 'ERROR : calibobj has no elements' - - ; Extract the relevant magnitudes - ; We really should have used cmodelmags, and will later. - modelmag = 22.5 - 2.5*alog10(calibobj.modelflux > 0.001) - devmag = 22.5 - 2.5*alog10(calibobj.devflux > 0.001) - expmag = 22.5 - 2.5*alog10(calibobj.expflux > 0.001) - cmodelflux = calibobj.devflux*calibobj.fracpsf + calibobj.expflux*(1.0-calibobj.fracpsf) - cmodelmag = 22.5-2.5*alog10(cmodelflux > 0.001) - fibermag = 22.5 - 2.5*alog10(calibobj.fiberflux > 0.001) - psfmag = 22.5 - 2.5*alog10(calibobj.psfflux > 0.001) - ; Extinction correct - modelmag = modelmag - calibobj.extinction - psfmag = psfmag - calibobj.extinction - cmodelmag = cmodelmag - calibobj.extinction - fibermag = fibermag - calibobj.extinction - - ; Compute cperp and cpllel - cperp = lrg_cperp(modelmag) - dperp = lrg_dperp(modelmag) - cpllel = lrg_cpllel(modelmag) - - ; Cut I - icut1 = cmodelmag[2,*] LT (maglim[0] + cpllel/0.3d0) - icut1 = icut1 AND (abs(cperp) LT 0.2d0) - icut1 = icut1 AND (cmodelmag[2,*] LT maglim[1]) - ilrg = icut1 * 2L^1 - - ; Cut II - icut2 = (cmodelmag[3,*] GT ilow) AND (cmodelmag[3,*] LT ilimit) - icut2 = icut2 AND ((modelmag[2,*] - modelmag[3,*]) LT 2.0d0) - icut2 = icut2 AND (dperp GT dperp0) AND (dperp LE dperp1) - icut2 = icut2 AND (fibermag[3,*] LT 21.3) - ilrg = ilrg + icut2*2L^2 - - ; Cut III - icut3 = (cmodelmag[3,*] GT ilow) AND (cmodelmag[3,*] LT ihi) - icut3 = icut3 AND ((modelmag[2,*] - modelmag[3,*]) LT 2.0d0) - icut3 = icut3 AND (dperp GT dperp1) - icut3 = icut3 AND (fibermag[3,*] LT 21.3) - ilrg = ilrg + icut3*2L^3 - - ; Only work with those objects that photo calls a galaxy, and don't - ; have processing flags thrown. - icut3 = reform(icut2*0b) - indx = sdss_selectobj(calibobj, objtype=3, /trim) - if (indx[0] GT -1) then $ - icut3[indx] = 1 - ilrg = icut3*reform(ilrg) - - return, ilrg -end diff --git a/pro/plate/brightcmag.pro b/pro/plate/brightcmag.pro deleted file mode 100644 index 2a9a2c642..000000000 --- a/pro/plate/brightcmag.pro +++ /dev/null @@ -1,74 +0,0 @@ -; Procedure for making color-magnitude plots for the four -; star cluster plates. Do this for Stephane Charlot. - -pro brightcmag1, plugfile, plottitle, plotfile - - plugfile = findfile('/peyton/scr/spectro0/data/platedb/plate-0797-0811/' $ - + plugfile) - plugfile = plugfile[ sort(plugfile) ] - ; Don't read the last pointing, which is only for the fundamental star - plugfile = plugfile[0:n_elements(plugfile)-2] - for ifile=0, n_elements(plugfile)-1 do begin -print, 'Reading ', plugfile[ifile] - yanny_read, plugfile[ifile], pp - thisplug = *pp[0] - thisplug = thisplug[ where(thisplug.mag[1] NE 25 $ - AND strtrim(thisplug.holetype,2) EQ 'OBJECT') ] -print, 'Mag range = ', minmax(thisplug.mag[1]) - if (NOT keyword_set(plug)) then plug = thisplug $ - else plug = [plug, thisplug] - yanny_free, pp - endfor - - ; Re-derive the "Tycho magnitudes", which we had converted to SDSS - ; magnitudes according to the prescription in sdss-spectro/766. - - b_tycho = 1.445990 * plug.mag[1] - 0.447249 * plug.mag[2] + 0.17953 - v_tycho = 0.467941 * plug.mag[1] + 0.533559 * plug.mag[2] - 0.03654 - - ; Read the Tycho stars - tycdat = tyc_read(/small, epoch=1998) - racen = median(plug.ra) - deccen = median(plug.dec) - adiff = djs_diff_angle(tycdat.radeg, tycdat.dedeg, racen, deccen) - tycdat = tycdat[ where(adiff LT 3.0) ] - - ; For every star in the plug-map, find the match in Tycho - junk = djs_angle_match(plug.ra, plug.dec, $ - tycdat.radeg, tycdat.dedeg, dtheta=2.0/3600, mindx=mindx) - igood = where(mindx NE -1, ngood) - if (ngood GT 0) then begin - v_tycho[igood] = tycdat[mindx[igood]].vmag - b_tycho[igood] = tycdat[mindx[igood]].bmv + v_tycho[igood] - endif - - dfpsplot, plotfile, /square - bv_tycho = b_tycho - v_tycho - plot, bv_tycho>(-1.8), b_tycho, psym=4, yrange=reverse(minmax(b_tycho)), $ - xtitle='(B-V)', ytitle='B', title=plottitle, charsize=2 - dfpsclose -end - -pro brightcmag - - plugfile = 'plPlugMapP-0798*.par' - plottitle = 'Praesepe' - plotfile = 'cmag-praesepe.ps' - brightcmag1, plugfile, plottitle, plotfile - - plugfile = 'plPlugMapP-0799*.par' - plottitle = 'Pleiades' - plotfile = 'cmag-pleiades.ps' - brightcmag1, plugfile, plottitle, plotfile - - plugfile = 'plPlugMapP-0800*.par' - plottitle = 'NGC 752' - plotfile = 'cmag-n752.ps' - brightcmag1, plugfile, plottitle, plotfile - - plugfile = 'plPlugMapP-0801*.par' - plottitle = 'NGC 1817' - plotfile = 'cmag-n1817.ps' - brightcmag1, plugfile, plottitle, plotfile - -end diff --git a/pro/plate/co_refract_list.pro b/pro/plate/co_refract_list.pro deleted file mode 100644 index b60363429..000000000 --- a/pro/plate/co_refract_list.pro +++ /dev/null @@ -1,181 +0,0 @@ -;+ -; NAME: -; CO_REFRACT() -; -; PURPOSE: -; Calculate correction to altitude due to atmospheric refraction. -; -; DESCRIPTION: -; CO_REFRACT can calculate both apparent altitude from observed altitude and -; vice-versa. -; -; CALLING SEQUENCE: -; new_alt = CO_REFRACT_LIST(old_alt, [ ALTITUDE= , PRESSURE= , $ -; TEMPERATURE= , /TO_OBSERVED , EPSILON= ]) -; -; INPUT: -; old_alt - Observed (apparent) altitude, in DEGREES. (apparent if keyword -; /TO_OBSERVED set). May be scalar or vector. -; -; OUTPUT: -; Function returns apparent (observed) altitude, in DEGREES. (observed if -; keyword /TO_OBSERVED set). Will be of same type as input -; altitude(s). -; -; OPTIONAL KEYWORD INPUTS: -; ALTITUDE : The height of the observing location, in meters. This is -; only used to determine an approximate temperature and pressure, -; if these are not specified separately. [default=0, i.e. sea level] -; PRESSURE : The pressure at the observing location, in millibars. -; TEMPERATURE: The temperature at the observing location, in Kelvin. -; EPSILON: When keyword /TO_OBSERVED has been set, this is the accuracy -; to obtain via the iteration, in arcseconds [default = 0.25 -; arcseconds]. -; /TO_OBSERVED: Set this keyword to go from Apparent->Observed altitude, -; using the iterative technique. -; -; Note, if altitude is set, but temperature or pressure are not, the -; program will make an intelligent guess for the temperature and pressure. -; -; DESCRIPTION: -; -; Because the index of refraction of air is not precisely 1.0, the atmosphere -; bends all incoming light, making a star or other celestial object appear at -; a slightly different altitude (or elevation) than it really is. It is -; important to understand the following definitions: -; -; Observed Altitude: The altitude that a star is SEEN to BE, with a telescope. -; This is where it appears in the sky. This is always -; GREATER than the apparent altitude. -; -; Apparent Altitude: The altitude that a star would be at, if *there were no -; atmosphere* (sometimes called "true" altitude). This is -; usually calculated from an object's celestial coordinates. -; Apparent altitude is always LOWER than the observed -; altitude. -; -; Thus, for example, the Sun's apparent altitude when you see it right on the -; horizon is actually -34 arcminutes. -; -; This program uses couple simple formulae to estimate the effect for most -; optical and radio wavelengths. Typically, you know your observed altitude -; (from an observation), and want the apparent altitude. To go the other way, -; this program uses an iterative approach. -; -; EXAMPLE: -; The lower limb of the Sun is observed to have altitude of 0d 30'. -; Calculate the the true (=apparent) altitude of the Sun's lower limb using -; mean conditions of air pressure and temperature -; -; IDL> print, co_refract(0.5) ===> 0.025degrees (1.55') -; WAVELENGTH DEPENDENCE: -; This correction is 0 at zenith, about 1 arcminute at 45 degrees, and 34 -; arcminutes at the horizon FOR OPTICAL WAVELENGTHS. The correction is -; NON-NEGLIGIBLE at all wavelengths, but is not very easily calculable. -; These formulae assume a wavelength of 550 nm, and will be accurate to -; about 4 arcseconds for all visible wavelengths, for elevations of 10 -; degrees and higher. Amazingly, they are also ACCURATE FOR RADIO -; FREQUENCIES LESS THAN ~ 100 GHz. -; -; It is important to understand that these formulae really can't do better -; than about 30 arcseconds of accuracy very close to the horizon, as -; variable atmospheric effects become very important. -; -; REFERENCES: -; 1. Meeus, Astronomical Algorithms, Chapter 15. -; 2. Explanatory Supplement to the Astronomical Almanac, 1992. -; 3. Methods of Experimental Physics, Vol 12 Part B, Astrophysics, -; Radio Telescopes, Chapter 2.5, "Refraction Effects in the Neutral -; Atmosphere", by R.K. Crane. -; -; -; DEPENDENCIES: -; CO_REFRACT_FORWARD (contained in this file and automatically compiled). -; -; AUTHOR: -; Chris O'Dell -; Univ. of Wisconsin-Madison -; Observational Cosmology Laboratory -; Email: odell@cmb.physics.wisc.edu -; -; REVISION HISTORY: -; version 1 (May 31, 2002) -; Update iteration formula, W. Landsman June 2002 -; Corrected slight bug associated with scalar vs. vector temperature and -; pressure inputs. 6/10/2002 -; Changed to iterate on a vector of angles to_observed, S. Burles, Jan 2006 -;- -function co_refract_forward, a, P=P, T=T - -; INPUTS -; a = The observed (apparent) altitude, in DEGREES. -; May be scalar or vector. -; -; INPUT KEYWORDS -; P: Pressure [in millibars]. Default is 1010 millibars. [scalar or vector] -; T: Ground Temp [in Celsius]. Default is 0 Celsius. [scalar or vector] - -d2r = !dpi/180. -if n_elements(P) eq 0 then P = 1010. -if n_elements(T) eq 0 then T = 283. - -; you have observed the altitude a, and would like to know what the "apparent" -; altitude is (the one behind the atmosphere). -w = where(a LT 15.) -R = 0.0166667/tan((a + 7.31/(a+4.4))*d2r) - -;R = 1.02/tan((a + 10.3/(a+5.11))*d2r)/60. -; this formula goes the other direction! - -if w[0] ne -1 then R[w] = 3.569*(0.1594 + .0196*a[w] + $ - .00002*a[w]^2)/(1.+.505*a[w]+.0845*a[w]^2) -tpcor = P/1010. * 283/T -R = tpcor * R - -return, R - -END - -function co_refract_list, a, altitude=altitude, pressure=pressure, $ - temperature=temperature, To_observed=To_observed, epsilon=epsilon - -; This is the main window. Calls co_refract_forward either iteratively or a -; single time depending on the direction we are going for refraction. - -o = keyword_set(To_observed) -alpha = 0.0065 ; temp lapse rate [deg C per meter] - -if n_elements(altitude) eq 0 then altitude = 0. -if n_elements(temperature) eq 0 then begin - if altitude GT 11000 then temperature = 211.5 $ - else temperature = 283.0 - alpha*altitude -endif -; estimate Pressure based on altitude, using U.S. Standard Atmosphere formula. -if n_elements(pressure) eq 0 then $ - pressure = 1010.*(1-6.5/288000*altitude)^5.255 -if n_elements(epsilon) eq 0 then $ - epsilon = 0.25 ; accuracy of iteration for observed=1 case, in arcseconds - -if not o then begin - aout = a - co_refract_forward(a,P=pressure,T=temperature) -endif else begin - aout = a*0. - na = n_elements(a) -; if there are multiple elevations but only one temp and pressure entered, -; expand those to be arrays of the same size. - P = pressure + a*0. & T = temperature + a*0. - ;calculate initial refraction guess - dr = co_refract_forward(a,P=pressure,T=temperature) - cur = a + dr ; guess of observed location - - repeat begin - last = cur - dr = co_refract_forward(cur,P=pressure,T=temperature) - cur= a + dr - endrep until max(abs(last-cur)*3600.) LT epsilon - aout = cur -endelse - -if N_elements(aout) GT 1 then return, reform(aout) else return, aout - -END diff --git a/pro/plate/decollide.pro b/pro/plate/decollide.pro deleted file mode 100644 index 3f3ca532f..000000000 --- a/pro/plate/decollide.pro +++ /dev/null @@ -1,49 +0,0 @@ -;+ -; NAME: -; decollide -; PURPOSE: -; Take a set of RAs and DECs and find a random, decollided set -; CALLING SEQUENCE: -; decollide, ra, dec -; INPUTS: -; NOTE: -; This function is superseded by random_decollide. -; REVISION HISTORY: -; 26-Oct-2006 Written by MRB, NYU -;- -;------------------------------------------------------------------------------ -function decollide, ra, dec, holesize=holesize, seed=seed - -iran=shuffle_indx(n_elements(ra), seed=seed) -ing=spheregroup(ra[iran], dec[iran], holesize, firstg=firstg, $ - nextg=nextg, multg=multg) -ng=max(ing)+1L - -holeok=bytarr(n_elements(ra)) -for i=0L, ng-1L do begin - if(multg[i] eq 1) then begin - holeok[firstg[i]]=1 - endif else begin - indx=lonarr(multg[i])-1L - ok=bytarr(multg[i]) - k=0L - j=firstg[i] - while(j ne -1L) do begin - indx[k]=j - j=nextg[j] - endwhile - ok[0]=1L - for k=1L, multg[i]-1L do begin - iok=where(ok) - spherematch, ra[indx[iok]], dec[indx[iok]], $ - ra[indx[k]], dec[indx[k]], holesize, m1, m2, d12 - if(m2[0] eq -1) then ok[k]=1 - endfor - iok=where(ok) - holeok[indx[iok]]=1 - endelse -endfor - -return, idec - -end diff --git a/pro/plate/design_multiplate.pro b/pro/plate/design_multiplate.pro deleted file mode 100644 index 48fe6412d..000000000 --- a/pro/plate/design_multiplate.pro +++ /dev/null @@ -1,938 +0,0 @@ -;+ -; NAME: -; design_multiplate -; -; PURPOSE: -; Routine to design a plate with several pointings. -; -; CALLING SEQUENCE: -; design_multiplate, stardata, [ tilenums=, platenums=, racen=, deccen=, $ -; guidetiles=, apotemperature=apotemperature, /addfund, /norename ] -; -; INPUTS: -; stardata - Structure with data for each star; must contain the -; fields RA, DEC, MAG[5], PRIORITY, HOLETYPE, TILENUM. -; HOLETYPE can be either 'OBJECT' or 'GUIDE'; objects with -; other values are ignored. Other elements in the structure -; will be copied into the output plug-map files. -; If OBJTYPE is not passed in this structure, then it is set to -; 'SERENDIPITY_MANUAL' for all HOLETYPE='OBJECT'. -; Stars with TILENUM=0 can only be used as guide stars. -; racen - RA center for each tile -; deccen - DEC center for each tile -; -; OPTIONAL INPUTS: -; tilenums - Array of tile numbers; default to the unique list of -; tile numbers in STARDATA.TILENUM, but exclude the number zero. -; platenums - Array of plate numbers; default to the same as TILENUMS. -; guidetiles - Tile number for each of the 11 guide fibers. There exist -; default values for the cases 1,2,3 or 4 tiles. -; apotemperature - Design temperature for APO; default to 5 deg C. -; addfund - If set, then add one more tile+plate with 9 or 10 holes -; in a line of declination from guide fiber #11 for the -; nearest of the 5 SDSS fundamental standard stars. -; We try to place 10 of these holes, spaced by 1 arcmin, but -; one can be knocked out by the guide-fiber alignment hole. -; This tile is given the TILEID=max(TILEID)+1, PLATEID=0. -; norename - The default is to rename the output plugMapP files to -; plate names like 800,800B,800C,... if the first plate -; number is 800. Set this keyword to keep the names as -; they are passed in PLATENUMS. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; There is no attempt to move plate centers such that a guide fiber -; can be re-used in another pointing. -; -; Objects are assigned according to their priority. If none are specified -; with STARDATA.PRIORITY, then random priorities between 1 and 100 are -; assigned. We reserve priorities of 0 and [2^31-2,2^31] for internal -; purposes. -; -; EXAMPLES: -; -; BUGS: -; These SDSS primary standards coordinates were not quite correct -; in the design of the initial set of special plates. See the comments -; in the code. -; -; PROCEDURES CALLED: -; concat_dir() -; cpbackup -; current_mjd() -; djs_diff_angle() -; djs_laxisgen() -; plate_rotate -; yanny_free -; yanny_par() -; yanny_read -; yanny_write -; -; INTERNAL SUPPORT ROUTINES: -; design_append() -; -; REVISION HISTORY: -; 21-Nov-2001 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -; Search for conflicts between an existing list of drill holes and one -; more potential object. Return the existing list with the new object -; appended if there was no conflict. - -function design_append, newplug, newplatearr, oneplug, oneplate - - platescale = 217.7358 ; mm/degree - - ; If this is the 1st object in the list, then we can always keep it - if (NOT keyword_set(newplug)) then begin - newplatearr = oneplate - return, oneplug - endif - - ; Discard objects within 55 arcsec of existing objects. - ; Do this based upon XFOCAL,YFOCAL positions. - ; The closest two fibers can be is PLATESCALE * 55/3600(deg) = 3.32652 mm - - r2 = (newplug.xfocal - oneplug.xfocal)^2 $ - + (newplug.yfocal - oneplug.yfocal)^2 - mindist = min(sqrt(r2)) - if (mindist LT platescale*55./3600.) then return, newplug - - ; Discard objects within 7.0 mm of existing guide fibers - - iguide = where(strtrim(newplug.holetype) EQ 'GUIDE') - if (iguide[0] NE -1) then begin - r2 = (newplug[iguide].xfocal - oneplug.xfocal)^2 $ - + (newplug[iguide].yfocal - oneplug.yfocal)^2 - mindist = min(sqrt(r2)) - if (mindist LT 7.0) then return, newplug - endif - - newplatearr = [newplatearr, oneplate] - return, [newplug, oneplug] -end -;------------------------------------------------------------------------------ -pro design_multiplate, stardata, tilenums=tilenums, platenums=platenums, $ - racen=racen, deccen=deccen, guidetiles=guidetiles, $ - apotemperature=apotemperature, addfund=addfund, norename=norename - - if (NOT keyword_set(tilenums)) then begin - tilenums = stardata.tilenum - tilenums = tilenums[ uniq(tilenums, sort(tilenums)) ] - ; Exclude any tile numbers of zero - tilenums = tilenums[ where(tilenums NE 0) ] - endif - - if (NOT keyword_set(platenums)) then platenums = tilenums - - ntile = n_elements(tilenums) - if (n_elements(platenums) NE ntile) then $ - message, 'Number of elements in PLATENUMS must agree w/ number of tiles' - if (n_elements(racen) NE ntile OR n_elements(deccen) NE ntile) then $ - message, 'Number of elements in RACEN,DECCEN must agree w/ number of tiles' - - if (NOT keyword_set(guidetiles)) then begin - ; First assign tile numbers like they are 1-indexed - if (ntile EQ 1) then begin - guidetiles = [1,1,1,1,1,1,1,1,1,1,1] - endif else if (ntile EQ 2) then begin - ; For 1st pointing use guide fibers 2,4,6,8,9,10,11 - ; For 2nd pointing use guide fibers 1,3,5,7 - guidetiles = [2,1,2,1,2,1,2,1,1,1,1] - endif else if (ntile EQ 3) then begin - ; For 1st pointing use guide fibers 3,5,8,10,11 - ; For 2nd pointing use guide fibers 1,4,6 - ; For 3rd pointing use guide fibers 2,7,9 - guidetiles = [2,3,1,2,1,2,3,1,3,1,1] - endif else if (ntile EQ 4) then begin - ; For 1st pointing use guide fibers 3,5,8,10,11 - ; For 2nd pointing use guide fibers 1,6 - ; For 3rd pointing use guide fibers 4,7 - ; For 4th pointing use guide fibers 2,9 - guidetiles = [2,4,1,3,1,2,3,1,4,1,1] - endif else if (ntile EQ 5) then begin - ; For 1st pointing use guide fibers 3,5,8,10,11 - ; For 2nd pointing use guide fibers 1,6 - ; For 3rd pointing use guide fibers 4,7 - ; For 4th pointing use guide fibers 2 - ; For 5th pointing use guide fibers 9 - guidetiles = [2,4,1,3,1,2,3,1,5,1,1] - endif else begin - message, 'GUIDETILES must be specified if using more than 5 tiles' - endelse - ; Now re-assigne the guide tile numbers to the actual tile numbers - guidetiles = tilenums[guidetiles-1] - endif - if (N_elements(guidetiles) NE 11) then $ - message, 'GUIDETILES must be an 11-element array' - - if (NOT keyword_set(racen) OR NOT keyword_set(deccen)) then $ - message, 'RACEN,DECCEN must be specified' - - if (N_elements(apotemperature) EQ 0) then $ - apotemperature = 5.0 - - plugmaptfile = 'plPlugMapT-' + plate_to_string(tilenums) + '.par' - plugmappfile = 'plPlugMapP-' + plate_to_string(platenums) + '.par' - - fakemag = 25.0 ; Magnitudes for all fake objects - maxpriority = 2L^31 - 1 ; Maximum value; this is the value for GUIDE stars - fundpriority = maxpriority - 2 ; Priority for fundamental standards - paramdir = concat_dir(getenv('IDLSPEC2D_DIR'), 'examples') - - if (keyword_set(addfund)) then begin - if ((where(tilenums EQ 0))[0] NE -1) then $ - message, 'PLATEID of 0 is reserved for the fundamental star tile' - fundplatenum = 0 - fundtilenum = max(tilenums) + 1 - endif - - ;---------- - ; Set up the data for the fundamental standards, and apply the - ; proper motion corrections from epoch 2000 to the current epoch. - ; The BD magnitudes are those in the file 'metaFC_bd17isonlyfund.fit' - ; checked into the "mtstds" product on 16 June 2000. - ; The HD magnitudes are from Fukugita et al (1996) AJ 111, 1748. - - pfund = $ - { name: '', $ - ra: 0.0d, $ - dec: 0.0d, $ - pm_ra: 0.0 , $ - pm_dec: 0.0 , $ - vmag: 0.0 , $ - mag: fltarr(5) } - funddat = replicate(pfund, 5) - funddat.name = ['HD_19445','BD+21o607','HD_84937','BD+26o2606','BD+17o4708'] -; These first set of coordinates, which are not quite correct, were used -; in the design of the initial set of special plates. -; funddat.ra =[ 47.10663, 63.64800, 147.23375, 222.25961, 332.87167 ] -; funddat.dec =[ 26.33094, 22.35119, 13.74426, 25.70750, 18.09139 ] -; funddat.pm_ra =[ -0.210, 0.425, 0.373, -0.009, 0.512 ] -; funddat.pm_dec=[ -0.830, 9.22, -0.774, -0.346, 0.060 ] - funddat.ra =[ 47.10579, 63.64573, 147.23510, 222.25980, 332.88109 ] - funddat.dec =[ 26.33096, 22.35116, 13.74427, 25.70250, 18.09277 ] - funddat.pm_ra =[ -0.210, 0.425, 0.373, -0.009, 0.512 ] - funddat.pm_dec=[ -0.830, 9.22, -0.774, -0.346, 0.060 ] - funddat.vmag = [ 8.05, 10.0, 8.28, 9.72, 9.47] - funddat[0].mag = [ 9.08 , 8.23 , 7.92 , 7.82, 7.79 ] ; HD_19445 - funddat[1].mag = [10.289, 9.395, 9.114, 9.025, 9.017] ; BD+21 (V=10.0) - funddat[2].mag = [ 9.32 , 8.46 , 8.23 , 8.16, 8.16 ] ; HD_84937 - funddat[3].mag = [10.761, 9.891, 9.604, 9.503, 9.486] ; BD+26 (V=9.72) - funddat[4].mag = [10.560, 9.640, 9.350, 9.250, 9.230] ; BD+17 (V=9.47) - - thismjd = current_mjd() - funddat.ra = funddat.ra $ - + (funddat.pm_ra / 3600.) * (thismjd - 51544)/365.24 - funddat.dec = funddat.dec $ - + (funddat.pm_dec / 3600.) * (thismjd - 51544)/365.24 - - ;---------- - ; Read a template plugmap structure - - yanny_read, filepath('plPlugMapT-XXXX.par', root_dir=paramdir), pp, $ - hdr=plughdr, enums=plugenum, structs=plugstruct - blankplug = *pp[0] - yanny_free, pp - struct_assign, {junk:0}, blankplug - - ;---------- - ; Set up info for guide fibers. - ; - ; The following info is from the "plate" product in the - ; file "$PLATE_DIR/test/plParam.par". - ; XREACH,YREACH = Center of the fiber reach [mm] - ; RREACH = Radius of the fiber reach [mm] - ; XPREFER,YREACH = Preferred position for the fiber [mm] - ; Note that the plate scale is approx 217.7358 mm/degree. - ; Moving +RA is +XFOCAL, +DEC is +YFOCAL. - - gfiber = create_struct( $ - 'xreach' , 0.0, $ - 'yreach' , 0.0, $ - 'rreach' , 0.0, $ - 'xprefer' , 0.d, $ - 'yprefer' , 0.d ) - nguide = 11 - gfiber = replicate(gfiber, nguide) - - platescale = 217.7358 ; mm/degree - guideparam = [[ 1, 199.0, -131.0, 165.0, 199.0, -131.0 ], $ - [ 2, 93.0, -263.0, 165.0, 93.0, -263.0 ], $ - [ 3, -121.0, -263.0, 165.0, -121.0, -263.0 ], $ - [ 4, -227.0, -131.0, 165.0, -227.0, -131.0 ], $ - [ 5, -199.0, 131.0, 165.0, -199.0, 131.0 ], $ - [ 6, -93.0, 263.0, 165.0, -93.0, 263.0 ], $ - [ 7, 121.0, 263.0, 165.0, 121.0, 263.0 ], $ - [ 8, 227.0, 131.0, 165.0, 227.0, 131.0 ], $ - [ 9, 14.0, 131.0, 139.5, 14.0, 65.0 ], $ - [ 10, -14.0, -131.0, 165.0, -14.0, -65.0 ], $ - [ 11, 93.0, -131.0, 139.5, 93.0, -131.0 ] ] - gfiber.xreach = transpose(guideparam[1,*]) - gfiber.yreach = transpose(guideparam[2,*]) - gfiber.rreach = transpose(guideparam[3,*]) - gfiber.xprefer = transpose(guideparam[4,*]) - gfiber.yprefer = transpose(guideparam[5,*]) - - ;--------------------------------------------------------------------------- - ; MAIN LOOP OVER POINTING NUMBER - ;--------------------------------------------------------------------------- - - for itile=0, ntile-1 do begin - - allplug = 0 - - thistilenum = tilenums[itile] - thisracen = racen[itile] - thisdeccen = deccen[itile] - print - print, 'Working on TILE=', thistilenum, ' PLATE=', platenums[itile] - - ;---------- - ; For this pointing, find the approximate RA,DEC coordinates - ; for the optimal guide fiber positioning. - - dphi = gfiber.xprefer / platescale - dtheta = gfiber.yprefer / platescale - plate_rotate, 0.0, 0.0, thisracen, thisdeccen, $ - dphi, dtheta, guidera, guidedec - - ;---------- - ; Loop through each guide fiber - - for iguide=0, nguide-1 do begin - if (guidetiles[iguide] EQ thistilenum) then begin - - ;---------- - ; Case where the guide fiber is on this pointing. - ; Assign the nearest available guide fiber - - print, 'Assigning real guide fiber number ', iguide+1, $ - ' on tile ', thistilenum - indx = where(strtrim(stardata.holetype,2) EQ 'GUIDE') - adiff = djs_diff_angle(guidera[iguide], guidedec[iguide], $ - stardata[indx].ra, stardata[indx].dec) - junk = min(adiff, imin) - addplug = blankplug - struct_assign, stardata[indx[imin]], addplug - addplug.throughput = maxpriority ; Maximum value - - ; Save the coordinates of the real guide star #11 - ; and the corresponding plate center. - if (iguide+1 EQ 11) then begin - gra1 = thisracen - gdec1 = thisdeccen - gra2 = stardata[indx[imin]].ra - gdec2 = stardata[indx[imin]].dec - endif - - endif else begin - - ;---------- - ; Case where the guide fiber will not be used on this pointing. - ; Assign a bunch of possible guide fibers near the optimal position. - ; This will be a grid of 7x7 positions separated by 3 arcmin. - - ngrid = [7,7] - dphi = (djs_laxisgen(ngrid, iaxis=0) - (ngrid[0]-1)/2) * 3./60. - dtheta = (djs_laxisgen(ngrid, iaxis=1) - (ngrid[1]-1)/2) * 3./60. - plate_rotate, 0.0, 0.0, guidera[iguide], guidedec[iguide], $ - dphi[*], dtheta[*], gridra, griddec - - addplug = replicate(blankplug, ngrid[0]*ngrid[1]) - addplug.ra = gridra - addplug.dec = griddec - addplug.throughput = 0L - addplug.mag[*] = fakemag - - endelse - - addplug.holetype = 'GUIDE' - addplug.objtype = 'NA' - addplug.sectarget = 64L - - ; The "fiberPlates" code will overwrite the FIBERID. I don't - ; want it to change them, like decide that guide fiber #11 is - ; really better as #1. So store the FIBERID that I want in - ; PRIMTARGET, then re-assign it later. - addplug.fiberid = iguide + 1 - addplug.primtarget = iguide + 1 - - if (NOT keyword_set(allplug)) then allplug = addplug $ - else allplug = [allplug, addplug] - - endfor ; End loop over guide fibers - - ;---------- - ; For this pointing, add all objects. - - indx = where(stardata.tilenum EQ thistilenum $ - AND strtrim(stardata.holetype,2) EQ 'OBJECT', nadd) - if (nadd EQ 0) then $ - message, 'No objects found for this pointing' - addplug = replicate(blankplug, nadd) - struct_assign, stardata[indx], addplug - - addplug.holetype = 'OBJECT' - if ((where(tag_names(stardata) EQ 'OBJTYPE'))[0] NE -1) then $ - addplug.objtype = stardata[indx].objtype - if ((where(tag_names(stardata) EQ 'PRIORITY'))[0] NE -1) then $ - addplug.throughput = (stardata[indx].priority > 1L) < (maxpriority-3) $ - else $ - addplug.throughput = long(randomu(24680, nadd) * 100) + 1 -; addplug.sectarget = 2L^24 ; This would be the serendipity flag - - ; Call any objects serendipity if not called anything else... - for i=0, nadd-1 do begin - if (strtrim(addplug[i].objtype) EQ '') then begin - addplug[i].objtype = 'SERENDIPITY_MANUAL' - addplug[i].primtarget = 2L^24 - endif - endfor - - allplug = [allplug, addplug] - - ;---------- - ; For this pointing, add 1500 fake skies randomly distributed. - - nadd = 1500 - dphi = 3.0 * randomu(2345, nadd) - 1.5 - dtheta = 3.0 * randomu(3456, nadd) - 1.5 - plate_rotate, 0.0, 0.0, thisracen, thisdeccen, $ - dphi, dtheta, gridra, griddec - - addplug = replicate(blankplug, nadd) - addplug.ra = gridra - addplug.dec = griddec - - addplug.holetype = 'COHERENT_SKY' - addplug.objtype = 'NA' - addplug.sectarget = 16L - addplug.throughput = 0L - addplug.mag[*] = fakemag - - allplug = [allplug, addplug] - - ;---------- - ; For this pointing, add a grid of fake spectro-photo and reddening stars. - ; This will be a grid of 13x13 positions separated by 13 arcmin. - ; Alternate between calling them SPECTROPHOTO_STD or REDDEN_STD. - ; --> Actually, don't call anything a reddening standard, since - ; we don't need them for the code to run. - - ngrid = [13,13] - dphi = (djs_laxisgen(ngrid, iaxis=0) - (ngrid[0]-1)/2) * 13./60. - dtheta = (djs_laxisgen(ngrid, iaxis=1) - (ngrid[1]-1)/2) * 13./60. - plate_rotate, 0.0, 0.0, thisracen, thisdeccen, $ - dphi[*], dtheta[*], gridra, griddec - - addplug = replicate(blankplug, ngrid[0]*ngrid[1]) - addplug.ra = gridra - addplug.dec = griddec - - addplug.holetype = 'OBJECT' - ieven = where(lindgen(ngrid[0]*ngrid[1]) MOD 2 EQ 0) - iodd = where(lindgen(ngrid[0]*ngrid[1]) MOD 2 EQ 1) -; Don't call anything a reddening standard, since we don't need them. -addplug.objtype = 'SPECTROPHOTO_STD' -addplug.sectarget = 32L -; addplug[ieven].objtype = 'SPECTROPHOTO_STD' -; addplug[ieven].sectarget = 32L -; addplug[iodd].objtype = 'REDDEN_STD' -; addplug[iodd].sectarget = 2L - addplug.throughput = 0L - addplug.mag[*] = fakemag - - allplug = [allplug, addplug] - - ;---------- - ; Remove objects more than 1.49 deg from the center. - ; Also remove objects within 68 arcsec of the center hole. - ; (This is a QUALITY hole added somewhere in the PLATE product.) - - adiff = djs_diff_angle(thisracen, thisdeccen, allplug.ra, allplug.dec) - allplug = allplug[ where(adiff LT 1.49 AND adiff GT 68./3600.) ] - - ;---------- - ; Resolve conflicts. - ; First re-sort everything from highest priority to lowest, so - ; that we can always keep the 1st object in the list in the event - ; of a conflict. - - isort = reverse(sort(allplug.throughput)) - allplug = allplug[isort] - - ; Loop through all objects, discarding close pairs (within 55 arcsec) - ; Always keep the 1st of any close group of objects. - ; This is a stupidly slow N^2 implementation... - - print, 'Before resolving conflicts: Number(HOLETYPE=OBJECT) = ', $ - n_elements(where(strtrim(allplug.holetype) EQ 'OBJECT')) - iobj = 0L - while (iobj LT n_elements(allplug)-1) do begin - adiff = djs_diff_angle(allplug[iobj].ra, allplug[iobj].dec, $ - allplug.ra, allplug.dec) - igood = where(adiff GT 55.0/3600.0 $ - OR lindgen(n_elements(allplug)) EQ iobj, ngood) - allplug = allplug[igood] - iobj = iobj + 1L - endwhile - print, 'After resolving conflicts: Number(HOLETYPE=OBJECT) = ', $ - n_elements(where(strtrim(allplug.holetype) EQ 'OBJECT')) - - ;---------- - ; Trim to only 600 real objects at most, or "fiberPlates" will crash - ; (excluding spectro-photo standards). That routine expects 600 - ; objects at most + 32 skies + 8 spectro-photos. - - iobj = where(strtrim(allplug.holetype) EQ 'OBJECT' $ - AND strtrim(allplug.objtype) NE 'SPECTROPHOTO_STD', nobj) - if (nobj GT 600) then begin - qgood = lindgen(n_elements(allplug)) + 1B - qgood[iobj[600:nobj-1]] = 0 ; Mark these last ones as bad - allplug = allplug[ where(qgood) ] - endif - print, 'After trimming: Number(HOLETYPE=OBJECT) = ', $ - n_elements(where(strtrim(allplug.holetype) EQ 'OBJECT')) - - ;---------- - ; Write the plPlugMapT file for this tile... - - outhdr = ['completeTileVersion v1_0', $ - 'tileId ' + string(thistilenum), $ - 'raCen ' + string(thisracen), $ - 'decCen ' + string(thisdeccen) ] - for jtile=0, ntile-1 do begin - outhdr = [outhdr, $ - 'raCen'+strtrim(string(jtile),2)+ ' '+string(racen[jtile]) ] - outhdr = [outhdr, $ - 'decCen'+strtrim(string(jtile),2)+ ' '+string(deccen[jtile]) ] - endfor - - yanny_write, plugmaptfile[itile], ptr_new(allplug), hdr=outhdr, $ - enums=plugenum, structs=plugstruct - - endfor ; End loop over pointing number - - ;--------------------------------------------------------------------------- - ; ADD HOLES FOR FUNDAMENTAL STANDARD - ; - ; Add a line of holes north/south of guide fiber #11 with very high priority. - ; Append another tile+plate for this. - ;--------------------------------------------------------------------------- - - if (keyword_set(addfund)) then begin - ntile = ntile + 1 - tilenums = [tilenums, fundtilenum] - platenums = [platenums, fundplatenum] - plugmaptfile = [plugmaptfile, $ - 'plPlugMapT-' + plate_to_string(fundtilenum) + '.par'] - plugmappfile = [plugmappfile, $ - 'plPlugMapP-' + plate_to_string(fundplatenum) + '.par'] - - ; Find the nearest fundamental standard - adiff = djs_diff_angle(funddat.ra, funddat.dec, gra1, gdec1) - mindiff = min(adiff, ifund) - print, 'Selecting the fundamental star ', funddat[ifund].name, $ - ' dAngle=', mindiff, ' degrees' - - ; Pretend that we had a pointing with guide#11 (GRA2,GDEC2) at the center - ; position and an object at GRA1,GDEC1. Move to a pointing with the - ; fundamental star (FUNDDAT[IFUND].RA,DEC) in the center, and solve for - ; the "object position" -- which will actually be the plate center. - - print, 'Put fundamental star fibers near guide #11 at ', gra2, gdec2 -; plate_rotate, gra2, gdec2, funddat[ifund].ra, funddat[ifund].dec, $ -; gra1, gdec2, fundracen, funddeccen - plate_newcenter, gra1, gdec1, fundracen, funddeccen, $ - gra2, gdec2, funddat[ifund].ra, funddat[ifund].dec - - racen = [racen, fundracen] - deccen = [deccen, funddeccen] - - ;---------- - ; Copy the last plug-map data, calling everything priority zero. - ; Rotate all those coordinates from the last plate center - ; to the fundamental-star plate center. - - allplug.throughput = 0 - allplug.mag[*] = fakemag - plate_rotate, thisracen, thisdeccen, fundracen[0], funddeccen[0], $ - allplug.ra, allplug.dec, tmpra, tmpdec - allplug.ra = tmpra - allplug.dec = tmpdec - - ;---------- - ; Add a line of holes in declination offset from guide fiber #11. - - decoffset = [-5,-4,-3,-2,-1,1,2,3,4,5]/60.0 - nadd = n_elements(decoffset) - addplug = replicate(blankplug, nadd) - addplug.ra = funddat[ifund].ra - addplug.dec = funddat[ifund].dec + decoffset - addplug.mag = funddat[ifund].mag - addplug.throughput = fundpriority ; Very high priority for these holes - addplug.holetype = 'OBJECT' - addplug.objtype = 'SERENDIPITY_MANUAL' ; This will be changed later - ; to SPECTROPHOTO_STD - allplug = [allplug, addplug] - - ;---------- - ; Write the plPlugMapT file for this tile... - - outhdr = ['completeTileVersion v1_0', $ - 'tileId ' + string(fundtilenum), $ - 'raCen ' + string(fundracen), $ - 'decCen ' + string(funddeccen) ] - for jtile=0, ntile-1 do begin - outhdr = [outhdr, $ - 'raCen'+strtrim(string(jtile),2)+ ' '+string(racen[jtile]) ] - outhdr = [outhdr, $ - 'decCen'+strtrim(string(jtile),2)+ ' '+string(deccen[jtile]) ] - endfor - - yanny_write, plugmaptfile[itile], ptr_new(allplug), hdr=outhdr, $ - enums=plugenum, structs=plugstruct - endif - - ;--------------------------------------------------------------------------- - ; RUN "makePlates" IN THE SDSS "PLATE" PRODUCT. - ; The required inputs are the plPlugMapT-$TILE.par files, - ; plus plPlan.par, plObs.par, plParam.par. - ; The fiberPlates code selects the guide stars and sky fibers from - ; those available, and renames COHERENT_SKY/NA objects to OBJECT/SKY. - ; It also generates the ALIGNMENT holes for each GUIDE fiber. - ;--------------------------------------------------------------------------- - - ;---------- - ; Create the file "plPlan.par" in the current directory. - - cd, current=thisdir - cd, thisdir - plhdr = '# Created on ' + systime() - plhdr = [plhdr, "parametersDir " + paramdir] - plhdr = [plhdr, "parameters " + "plParam.par"] - plhdr = [plhdr, "plObsFile " + "plObs.par"] - plhdr = [plhdr, "outFileDir " + thisdir] - plhdr = [plhdr, "tileDir " + thisdir] - yanny_write, 'plPlan.par', hdr=plhdr - - ;---------- - ; Create the file "plObs.par" in the current directory. - - plhdr = '# Created on ' + systime() - plhdr = [plhdr, "plateRun special"] - plstructs = ["typedef struct {", $ - " int plateId;", $ - " int tileId;", $ - " float temp;", $ - " float haMin;", $ - " float haMax;", $ - " int mjdDesign", $ - "} PLOBS;"] - plobs = create_struct(name='PLOBS', $ - 'PLATEID' , 0L, $ - 'TILEID' , 0L, $ - 'TEMP' , 0.0, $ - 'HAMIN' , 0.0, $ - 'HAMAX' , 0.0, $ - 'MJDDESIGN', 0L) - plobs = replicate(plobs, ntile) - plobs.plateid = platenums - plobs.tileid = tilenums - plobs.temp = apotemperature - plobs.mjddesign = thismjd - yanny_write, 'plObs.par', ptr_new(plobs), hdr=plhdr, structs=plstructs - - print - print, 'In the "plate" product run the following commands:" - print, ' makePlates' - print, ' fiberPlates -skipBrightCheck' - print, 'Then type ".cont" in IDL to continue.' - stop - - ;--------------------------------------------------------------------------- - ; RE-COMBINE THE PLUGMAP FILES - ;--------------------------------------------------------------------------- - - ;---------- - ; Read the plugMapP files and track which plate number each object is from - ; by storing the plate number in the FIBERID field. - - hdrarr = replicate(ptr_new(), ntile) - for itile=0, ntile-1 do begin - yanny_read, plugmappfile[itile], pp, $ - hdr=plughdr, enums=plugenum, structs=plugstruct - hdrarr[itile] = ptr_new(plughdr) - thisplate = yanny_par(plughdr, 'plateId') -; (*pp[0]).fiberid = thisplate ; Store the plate number in FIBERID - if (itile EQ 0) then allplug = *pp[0] $ - else allplug = [allplug, *pp[0]] - if (itile EQ 0) then platenums = thisplate $ - else platenums = [platenums, thisplate] - if (itile EQ 0) then platearr = replicate(thisplate, n_elements(*pp[0])) $ - else platearr = [platearr, replicate(thisplate, n_elements(*pp[0]))] - yanny_free, pp - endfor - - ;---------- - ; Select the 11 non-fake guide stars - - iguide = where(allplug.holetype EQ 'GUIDE' AND allplug.throughput GT 0) - if (n_elements(iguide) NE 11) then $ - message, 'The number of guide fibers is wrong.' - newplug = allplug[iguide] - newplatearr = platearr[iguide] - - ; I've stored the correct FIBERID's in the PRIMTARGET field... - correctid = newplug.primtarget - newplug.fiberid = correctid - newplug.primtarget = 0 - - ;---------- - ; Find the alignment hole corresponding to each of these guide stars - - for ii=0, 10 do begin - ; The line below matches based upon PLATE and FIBERID, though that - ; FIBERID isn't neccessarily the correct one; we force it to be correct. - jj = where(allplug.holetype EQ 'ALIGNMENT' $ - AND platearr EQ platearr[iguide[ii]] $ - AND allplug.fiberid EQ allplug[iguide[ii]].fiberid, nj) - if (nj NE 1) then $ - message, 'Wrong number of alignment holes' - addplug = allplug[jj] - addplug.fiberid = correctid[ii] ; Force the correct FIBERID - newplug = [newplug, addplug] - newplatearr = [newplatearr, platearr[jj]] - endfor - - ;---------- - ; Select all real objects and then fake skies if we run out of real objects. - ; Sort by priority (in THROUGHPUT field), but then add tiny random numbers - ; in order to randomize between objects with the same priority. - - iobj = where(allplug.holetype EQ 'OBJECT', nobj) - isort = reverse(sort(allplug[iobj].throughput + randomu(2468,nobj))) - iobj = iobj[isort] - nadded = 0 - for ii=0, nobj-1 do begin - if (nadded LT 640) then begin - nbefore = n_elements(newplug) - newplug = design_append(newplug, newplatearr, $ - allplug[iobj[ii]], platearr[iobj[ii]]) - if (n_elements(newplug) GT nbefore) then nadded = nadded + 1 - endif - endfor - if (nadded LT 640) then $ - message, 'Fewer than 640 objects' - - ;---------- - ; If the /ADDFUND flag is set, then recast those fundamental standard holes - ; as such. Call them SPECTROPHOTO_STD, and give them all the ra,dec - ; of the star. This last thing may be a bit confusing, because then - ; the xfocal,yfocal positions are inconsistent with ra,dec. But whatever - ; data we get through these holes (using a smear) will be of that star. - -; indx = where(newplug.throughput EQ fundpriority, nindx) - indx = where(newplatearr EQ fundplatenum, nindx) ; Should be same as above - if (nindx GT 0) then begin - print, 'Renaming ', nindx, ' fundamental standard holes' - newplug[indx].objtype = 'SPECTROPHOTO_STD' -; newplug[indx].ra = funddat[ifund].ra -; newplug[indx].dec = funddat[ifund].dec - endif - - ;--------------------------------------------------------------------------- - ; DELETE INTERMEDIATE FILES - ;--------------------------------------------------------------------------- - - ;---------- - ; Delete the existing plPlugMapP,plOverlay,plFanuc,plMeas,plDrillPos files - - print, 'Removing old plPlugMapP,plOverlay,plFanuc,plMeas,plDrillPos files' - for itile=0, n_elements(platenums)-1 do begin - spawn, '\rm -f ' + plugmappfile[itile] - platestr = plate_to_string(platenums[itile]) - spawn, '\rm -f ' + 'plOverlay-'+platestr+'.ps' - spawn, '\rm -f ' + 'plFanuc-'+platestr+'.ps' - spawn, '\rm -f ' + 'plMeas-'+platestr+'.ps' - spawn, '\rm -f ' + 'plDrillPos-'+platestr+'.ps' - endfor - - ;--------------------------------------------------------------------------- - ; CHANGE THE PLATE NAMES (unless /NORENAME is set) - ;--------------------------------------------------------------------------- - - if (NOT keyword_set(norename)) then begin - for itile=0, n_elements(platenums)-1 do begin - pointingname = string(byte(65+itile)) - thisplatename = plate_to_string(platenums[0]) + pointingname - - ; The first tile retains its name, the others get letters appended. - if (itile GT 0) then $ - plugmappfile[itile] = 'plPlugMapP-' + thisplatename + '.par' - - ; Change the "plateId" in the Yanny header -; Actually don't change this, since it might break SOP!! -; junk = yanny_par(*(hdrarr[itile]), 'plateId', indx=indx) -; (*(hdrarr[itile]))[indx] = 'plateId ' + thisplatename - - ; Add a Yanny keyword "pointing" that is A,B,C,... - *(hdrarr[itile]) = [*(hdrarr[itile]), 'pointing ' + pointingname] - endfor - endif - - ;--------------------------------------------------------------------------- - ; SET THE FIBERID'S FOR PLOTTING OVERLAY FILES - ; These are done with 7 bundles across the lowest part, then 9, 9, 7. - ;--------------------------------------------------------------------------- - - print, 'Setting negative FIBERIDs for "makePlots"' - iobj = where(newplug.holetype EQ 'OBJECT') - if (n_elements(iobj) NE 640) then $ - message, 'Fewer than 640 OBJECT positions on this plate!' - -; isort = sort(newplug[iobj].yfocal) -; newplug[iobj[isort]].fiberid = -lindgen(640) - 1 - - newid = lindgen(20) + 1 - isort = sort(newplug[iobj].yfocal) - - ; Loop over 4 swaths in declination - ysort = sort(newplug[iobj].yfocal) - for iyswath=0, 3 do begin - ; Select which objects are in this horizontal band - if (iyswath EQ 0) then begin - indx = iobj[ysort[0:139]] - nxswath = 7 - endif else if (iyswath EQ 1) then begin - indx = iobj[ysort[140:319]] - nxswath = 9 - endif else if (iyswath EQ 2) then begin - indx = iobj[ysort[320:499]] - nxswath = 9 - endif else if (iyswath EQ 3) then begin - indx = iobj[ysort[500:639]] - nxswath = 7 - endif - - ; For those objects in this horizontal band, sort by X - indx = indx[ sort(newplug[indx].xfocal) ] - - ; Loop through short stretch of X in this horizontal band, - ; then sort in those stretches by Y - for ixswath=0, nxswath-1 do begin - ii = indx[ixswath*20:ixswath*20+19] - ii = ii[ sort(newplug[ii].yfocal) ] - newplug[ii].fiberid = -newid ; (set these ID's as negative numbers) - newid = newid + 20 - endfor - endfor - - ;--------------------------------------------------------------------------- - ; WRITE THE MODIFIED PLUGMAPP FILES. - ; This combines objects from the different tiles. - ; This overwrites files that already exist. - ;--------------------------------------------------------------------------- - - for itile=0, n_elements(platenums)-1 do begin - - thisplate = platenums[itile] - modplug = newplug - junk = where(modplug.holetype EQ 'OBJECT' $ - AND newplatearr EQ thisplate, ct) - print, 'Number of objects on plate ', thisplate, ' = ', ct - - ;---------- - ; Keep only the guide fibers on this tile. ??? - - ;---------- - ; Objects that are actually on other tiles are renamed to sky fibers - ; on this plate. - - iobj = where(modplug.holetype EQ 'OBJECT' $ - AND newplatearr NE thisplate) - if (indx[0] NE -1) then begin - modplug[iobj].holetype = 'OBJECT' - modplug[iobj].objtype = 'SKY' - modplug[iobj].mag = fakemag - modplug[iobj].primtarget = 0L - modplug[iobj].sectarget = 16L - endif else begin - message, 'No objects to use as guide fibers for plate '+string(thisplate) - endelse - - ;---------- - ; Rotate the positions of fibers from other tiles to be where they - ; will actually be pointing on this tile. - - for itile2=0, n_elements(platenums)-1 do begin - if (itile2 NE itile) then begin - indx = where(newplatearr EQ platenums[itile2]) - if (indx[0] NE -1) then begin - print, 'Rotating ', n_elements(indx), ' objects from plate ', $ - platenums[itile2], ' to plate ', thisplate - plate_rotate, racen[itile2], deccen[itile2], $ - racen[itile], deccen[itile], $ - modplug[indx].ra, modplug[indx].dec, tmpra, tmpdec - modplug[indx].ra = tmpra - modplug[indx].dec = tmpdec - endif - endif - endfor - - ;---------- - ; Alignment holes seem to always be given RA=0, DEC=0 - - indx = where(strtrim(modplug.holetype) EQ 'ALIGNMENT') - if (indx[0] EQ -1) then $ - message, 'Alignment holes not found' - modplug[indx].ra = 0 - modplug[indx].dec = 0 - - ;---------- - ; Add the one quality hole which we already have, which is the - ; center hole - - iqual = where(allplug.holetype EQ 'QUALITY' $ - AND platearr EQ thisplate, nqual) - if (nqual NE 1) then $ - message, 'We expect 1 quality hole already (the center hole)' - modplug = [modplug, allplug[iqual]] - - ; Must set the following to avoid "fiberPlates" from crashing!! - modplug.spectrographid = -9999 - modplug.throughput = -9999 - - yanny_write, plugmappfile[itile], ptr_new(modplug), $ - hdr=*(hdrarr[itile]), enums=plugenum, structs=plugstruct - endfor - - ;--------------------------------------------------------------------------- - ; CREATE THE DRILL FILES FROM THE 1ST PLATE. - ; (Drill files from any of the plates would be identical.) - ; Run the code makeFanuc, makeDrillPos, use_cs3. - ;--------------------------------------------------------------------------- - - ;---------- - ; Modify the "plObs.par" file, so that we generate drill files only - ; from the first tile/plate. - - yanny_read, 'plObs.par', plobs, hdr=plhdr, structs=plstructs - plobs = (*plobs)[0] - yanny_write, 'plObs.par', ptr_new(plobs), hdr=plhdr, structs=plstructs - - print - print, 'In the "plate" product run the following commands:" - print, ' makeFanuc' - print, ' makeDrillPos' - print, ' use_cs3' - print, ' makePlots -skipBrightCheck' - print, 'Then you are done!' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/design_n1817.pro b/pro/plate/design_n1817.pro deleted file mode 100644 index 6c5cc634c..000000000 --- a/pro/plate/design_n1817.pro +++ /dev/null @@ -1,122 +0,0 @@ -; Design the special plate for the N1817 star cluster. - -;------------------------------------------------------------------------------ -;------------------------------------------------------------------------------ -function read_n1817 - - p1 = design_read2mass('n1817.match') - p2 = design_read2mass('n1817.j11') - p1.priority = 3 - p2.priority = 2 - - result = [p1, p2] - return, result -end - -;------------------------------------------------------------------------------ -pro design_n1817 - - epoch = 1998. - racen = [78.0d, 77.8d, 78.2d, 78.4d] - deccen = [16.7d, 16.7d, 16.7d, 16.7d] - ; All magnitudes are in the range [8.2,18.1] -; magmin = reverse([ 8.0, 10.8, 13.6]) -; magmax = reverse([11.0, 13.8, 16.6]) - magmin = reverse([ 8.0, 10.4, 12.8, 15.2]) - magmax = reverse([10.6, 13.0, 15.4, 18.2]) - guidemag = [10.5, 12.5] - tilenums = [9231,9232,9233,9234] - platenums = [801,1,2,3] - matchdist = 2.0/3600. ; match distance in degrees - - ntile = n_elements(racen) - - ;---------- - ; Read stars from Eisenstein's lists which use 2MASS positions. - ; Discard duplicates. - - stardata = read_n1817() - junk = djs_angle_group(stardata.ra, stardata.dec, matchdist, $ - gstart=gstart, gindx=gindx) - stardata = stardata[gindx[gstart]] - - ;---------- - ; Read the Tycho stars - -; tycdat = tyc_read(/small, epoch=epoch) -; adiff = djs_diff_angle(tycdat.radeg, tycdat.dedeg, racen[0], deccen[0]) -; tycdat = tycdat[ where(adiff LT 1.5) ] - - ;---------- - ; For every Tycho star, find the match in the Eisenstein catalog. - ; If there are objects not in Eisenstein, then add them. - -; junk = djs_angle_match(tycdat.radeg, tycdat.dedeg, $ -; stardata.ra, stardata.dec, dtheta=matchdist, mindx=mindx, mdist=mdist) -; -; iadd = where(mindx EQ -1, nadd) -; if (nadd GT 0) then begin -; tycadd = design_starstruct(nadd) -; tycadd.ra = tycdat[iadd].radeg -; tycadd.dec = tycdat[iadd].dedeg -; tycadd.mag = tyc_sdssmags(tycdat[iadd].bmv, tycdat[iadd].vmag) -; tycadd.objtype = 'SERENDIPITY_MANUAL' -; tycadd.priority = 3 -; stardata = [stardata, tycadd] -; endif - - ;---------- - ; Select objects that may be good spectro-photo standards. - ; Find stars with a match in the Tycho catalog with -0.1 < B-V < +0.1. - -; junk = djs_angle_match(tycdat.radeg, tycdat.dedeg, $ -; stardata.ra, stardata.dec, dtheta=matchdist, mindx=mindx, mdist=mdist) -; indx1 = where(mindx NE -1) -; indx2 = mindx[indx1] -; iphoto = where(tycdat[indx1].bmv GT -0.1 AND tycdat[indx1].bmv LT 0.1) -; if (iphoto[0] NE -1) then begin -; stardata[indx2[iphoto]].objtype = 'SPECTROPHOTO_STD' -; stardata[indx2[iphoto]].sectarget = 32L -; endif - - ;---------- - ; Assign tile numbers based upon the magnitudes. - ; Allow for overlapping magnitude slices, which assign some stars - ; on several of the tiles. - - for itile=0, ntile-1 do begin - iadd = where(stardata.mag[2] GE magmin[itile] $ - AND stardata.mag[2] LE magmax[itile], nadd) - if (nadd EQ 0) then $ - message, 'No objects available for this tile' - addstar = stardata[iadd] - addstar.tilenum = tilenums[itile] - addstar.holetype = 'OBJECT' - if (itile EQ 0) then newdata = addstar $ - else newdata = [newdata, addstar] - endfor - - ;---------- - ; Now include all stars within an appropriate magnitude range - ; as possible guide stars. These will be duplicate entries - ; but with HOLETYPE = 'GUIDE' - - iadd = where(stardata.mag[2] GE guidemag[0] $ - AND stardata.mag[2] LE guidemag[1], nadd) - if (nadd EQ 0) then $ - message, 'No guide stars available' - addstar = stardata[iadd] - addstar.tilenum = 0 - addstar.holetype = 'GUIDE' - newdata = [newdata, addstar] - - stardata = newdata - -;splot,stardata.ra,stardata.dec,ps=4,color='green' -;soplot,tycdat.radeg,tycdat.dedeg,ps=1,symsize=0.5 - - design_multiplate, stardata, racen=racen, deccen=deccen, $ - tilenums=tilenumes, platenums=platenums, /addfund - -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/design_n752.pro b/pro/plate/design_n752.pro deleted file mode 100644 index 51cc10bb1..000000000 --- a/pro/plate/design_n752.pro +++ /dev/null @@ -1,121 +0,0 @@ -; Design the special plate for the N752 star cluster. - -;------------------------------------------------------------------------------ -;------------------------------------------------------------------------------ -function read_n752 - - p1 = design_read2mass('n752.match') ; These are known cluster members - p2 = design_read2mass('n752.j10') - p3 = design_read2mass('n752.j14') - p1.priority = 3 - p2.priority = 2 - p3.priority = 1 - - result = [p1, p2, p3] - return, result -end - -;------------------------------------------------------------------------------ -pro design_n752 - - epoch = 1998. - racen = [29.2d, 29.0d, 29.4d] - deccen = [37.7d, 37.7d, 37.7d] - magmin = reverse([ 6.0, 9.0, 12.0]) - magmax = reverse([ 9.2, 12.2, 15.2]) - guidemag = [10.5, 12.5] - tilenums = [9227,9228,9229] - platenums = [800,1,2] - matchdist = 2.0/3600. ; match distance in degrees - - ntile = n_elements(racen) - - ;---------- - ; Read stars from Eisenstein's lists which use 2MASS positions. - ; Discard duplicates. - - stardata = read_n752() - junk = djs_angle_group(stardata.ra, stardata.dec, matchdist, $ - gstart=gstart, gindx=gindx) - stardata = stardata[gindx[gstart]] - - ;---------- - ; Read the Tycho stars - - tycdat = tyc_read(/small, epoch=epoch) - adiff = djs_diff_angle(tycdat.radeg, tycdat.dedeg, racen[0], deccen[0]) - tycdat = tycdat[ where(adiff LT 1.5) ] - - ;---------- - ; For every Tycho star, find the match in the Eisenstein catalog. - ; If there are objects not in Eisenstein, then add them. - - junk = djs_angle_match(tycdat.radeg, tycdat.dedeg, $ - stardata.ra, stardata.dec, dtheta=matchdist, mindx=mindx, mdist=mdist) - - iadd = where(mindx EQ -1, nadd) - if (nadd GT 0) then begin - tycadd = design_starstruct(nadd) - tycadd.ra = tycdat[iadd].radeg - tycadd.dec = tycdat[iadd].dedeg - tycadd.mag = tyc_sdssmags(tycdat[iadd].bmv, tycdat[iadd].vmag) - tycadd.objtype = 'SERENDIPITY_MANUAL' - tycadd.priority = 3 - stardata = [stardata, tycadd] - endif - - ;---------- - ; Select objects that may be good spectro-photo standards. - ; Find stars with a match in the Tycho catalog with -0.1 < B-V < +0.1. - -; junk = djs_angle_match(tycdat.radeg, tycdat.dedeg, $ -; stardata.ra, stardata.dec, dtheta=matchdist, mindx=mindx, mdist=mdist) -; indx1 = where(mindx NE -1) -; indx2 = mindx[indx1] -; iphoto = where(tycdat[indx1].bmv GT -0.1 AND tycdat[indx1].bmv LT 0.1) -; if (iphoto[0] NE -1) then begin -; stardata[indx2[iphoto]].objtype = 'SPECTROPHOTO_STD' -; stardata[indx2[iphoto]].sectarget = 32L -; endif - - ;---------- - ; Assign tile numbers based upon the magnitudes. - ; Allow for overlapping magnitude slices, which assign some stars - ; on several of the tiles. - - for itile=0, ntile-1 do begin - iadd = where(stardata.mag[2] GE magmin[itile] $ - AND stardata.mag[2] LE magmax[itile], nadd) - if (nadd EQ 0) then $ - message, 'No objects available for this tile' - addstar = stardata[iadd] - addstar.tilenum = tilenums[itile] - addstar.holetype = 'OBJECT' - if (itile EQ 0) then newdata = addstar $ - else newdata = [newdata, addstar] - endfor - - ;---------- - ; Now include all stars within an appropriate magnitude range - ; as possible guide stars. These will be duplicate entries - ; but with HOLETYPE = 'GUIDE' - - iadd = where(stardata.mag[2] GE guidemag[0] $ - AND stardata.mag[2] LE guidemag[1], nadd) - if (nadd EQ 0) then $ - message, 'No guide stars available' - addstar = stardata[iadd] - addstar.tilenum = 0 - addstar.holetype = 'GUIDE' - newdata = [newdata, addstar] - - stardata = newdata - -;splot,stardata.ra,stardata.dec,ps=4,color='green' -;soplot,tycdat.radeg,tycdat.dedeg,ps=1,symsize=0.5 - - design_multiplate, stardata, racen=racen, deccen=deccen, $ - tilenums=tilenumes, platenums=platenums, /addfund - -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/design_plate.pro b/pro/plate/design_plate.pro deleted file mode 100644 index e43576396..000000000 --- a/pro/plate/design_plate.pro +++ /dev/null @@ -1,665 +0,0 @@ -;+ -; NAME: -; design_plate -; -; PURPOSE: -; Routine to design a single plate. -; -; CALLING SEQUENCE: -; design_plate, stardata, [ racen=, deccen=, tilenum=, platenum=, $ -; airtemp=, nstd=, nminsky=, lst=, ntotal=, /southern ] -; -; INPUTS: -; stardata - Structure with data for each star; must contain the -; fields RA, DEC, MAG[5], HOLETYPE, OBJTYPE. -; HOLETYPE should be either 'OBJECT' or 'GUIDE'. -; Special values of OBJTYPE are 'SKY', 'SPECTROPHOTO_STD', -; and 'REDDEN_STD'. -; Other elements in the structure (such as PRIMTARGET,...) -; will be copied into the output plug-map files. -; racen - RA center for tile -; deccen - DEC center for tile -; -; OPTIONAL INPUTS: -; tilenum - Tile number; default to 1. -; platenum - Plate number; default to the same as TILENUMS. -; airtemp - Design temperature for APO; default to 5 deg C. -; nstd - Number of spectro-photo standards; default to 16. -; This will be split with NSTD/2 standards on the North -; half of the plate, and the same number on the South. -; nminsky - Minimum number of sky fibers; default to 32. -; lst - Local sidereal time (LST) for plate design; default to -; setting this equal to RACEN, which means observing at transit. -; ntotal - Number of object fibers; default to 640. -; southern - If set, then set the SOUTHERN targetting bits in both -; the PRIMTARGET and SECTARGET output flags. -; -; COMMENTS: -; All non-SKY and non-SPECTROPHOTO_STD/REDDEN_STD objects will be put on the -; plate. This routine will choose which of the given SKY, -; SPECTROPHOTO_STD, and REDDEN_STD targets to put on the plate. -; -; If non-SKY and non-SPECTROPHOTO_STD/REDDEN_STD objects collide with one -; another at all (are < 55'' apart) this routine will halt and -; report an error. -; -; If non-SKY and non-SPECTROPHOTO_STD/REDDEN_STD objects are within 68 arcsec -; of the center, or are outside 1.49 deg, this routine will halt and -; report an error. -; -; We always assign then objects, then guide stars, then -; spectro-photo standards, then skies. -; -; This script generates the following files: -; plObs.par -; plPlan.par -; plPlugMapP-$PLATE.par -; The commands from the SDSS "plate" product generate the following files: -; makeFanuc - Generate plFanuc-$PLATE.par -; makeDrillPos - Generate plMeas-$PLATE.par, plDrillPos-$PLATE.par -; use_cs3 - Generates no files. Simply reports fiber collisions. -; makePlots - Generate plOverlay-$PLATE.ps -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; concat_dir() -; current_mjd() -; djs_diff_angle() -; splog -; yanny_readone() -; yanny_write -; -; INTERNAL SUPPORT ROUTINES: -; design_append() -; design_groupfibers() -; -; REVISION HISTORY: -; 14-Jan-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -; Search for conflicts between an existing list of drill holes and one -; more potential object. Return the existing list with the new object -; appended if there was no conflict. - -function design_append, allplug, oneplug, nadd=nadd - - if (n_elements(oneplug) NE 1) then $ - message, 'ONEPLUG must contain only one element' - if (NOT keyword_set(oneplug)) then oneplug = 0 - nadd = 0L - - platescale = 217.7358 ; mm/degree - - ; Add more space around GUIDE fibers and LIGHT_TRAP holes. - case strtrim(oneplug.holetype,2) of - 'GUIDE': morespace = 7.0 ; in mm - 'LIGHT_TRAP': morespace = 4.0 ; in mm - else: morespace = 0. - endcase - - ;---------- - ; If this is the 1st object in the list, then we can always keep it - - if (NOT keyword_set(allplug)) then begin - nadd = 1L - return, oneplug - endif - - ;---------- - ; Discard objects within 68 arcsec of the center hole or more - ; then 1.49 deg from the plate center (pad to 75 arcsec). - - thisrad = sqrt(oneplug.xfocal^2 + oneplug.yfocal^2) - if (thisrad LE platescale*75./3600.+morespace $ - OR thisrad GE platescale*1.49-morespace) then return, allplug - - ;---------- - ; Discard objects within 55 arcsec of existing objects. - ; Do this based upon XFOCAL,YFOCAL positions. - ; The closest two fibers can be is PLATESCALE * 55/3600(deg) = 3.32652 mm - - if (keyword_set(allplug)) then begin - r2 = (allplug.xfocal - oneplug.xfocal)^2 $ - + (allplug.yfocal - oneplug.yfocal)^2 - mindist = min(sqrt(r2)) - if (mindist LT platescale*55./3600.+morespace) then return, allplug - endif - - ;---------- - ; Discard objects within 7.0 mm of existing guide fibers. - - if (keyword_set(allplug)) then begin - iguide = where(strtrim(allplug.holetype) EQ 'GUIDE', ct) - if (ct GT 0) then begin - r2 = (allplug[iguide].xfocal - oneplug.xfocal)^2 $ - + (allplug[iguide].yfocal - oneplug.yfocal)^2 - mindist = min(sqrt(r2)) - if (mindist LT 7.0+morespace) then return, allplug - endif - endif - - nadd = 1L - return, [allplug, oneplug] -end -;------------------------------------------------------------------------------ -; Group fibers into NXBIN by NYBIN groups, and return the group number -; between [0,NXBIN*NYBIN-1] for each fiber. -; NXBIN can either be a scalar representing the number of groupings in X -; for each slice in Y, or it can be an array with a different number of -; grouping for each slice in Y. -function design_groupfibers, allplug, nxbin1, nybin - - if (n_elements(nxbin1) EQ nybin) then nxbin = nxbin1 $ - else nxbin = replicate(nxbin1,nybin) - - nobj = n_elements(allplug) - groupnum = lonarr(n_elements(allplug)) - 1L - - isort = sort(allplug.dec) - igroup = 0L - i0 = 0L - for iy=0, nybin-1 do begin - ; Select objects in this declination slice - nsamp = long((nxbin[iy] / total(nxbin)) * nobj) > 1 - ii = isort[i0:i0+nsamp-1L] - for ix=0, nxbin[iy]-1 do begin - ; Select objects in some RA box within this declination slice - jsort = ii[ sort(allplug[ii].ra) ] - jj = jsort[ $ - where(allplug[jsort].ra GE allplug[jsort[nsamp*float(ix)/nxbin[iy]]].ra $ - AND allplug[jsort].ra LE allplug[jsort[nsamp*float(ix+1)/nxbin[iy]-1]].ra $ - AND groupnum[jsort] EQ -1) ] - groupnum[jj] = igroup - igroup = igroup + 1 - endfor - i0 = i0 + nsamp - endfor - - return, groupnum -end -;------------------------------------------------------------------------------ -pro design_plate, stardata1, racen=racen, deccen=deccen, $ - tilenums=tilenum, platenums=platenum, airtemp=airtemp, nstd=nstd, $ - nminsky=nminsky, lst=lst, ntotal=ntotal, southern=southern - - if (NOT keyword_set(tilenum)) then tilenum = 1L - if (NOT keyword_set(platenum)) then platenum = tilenum - if (n_elements(racen) EQ 0 OR n_elements(deccen) EQ 0) then $ - message, 'RACEN,DECCEN must be specified' - if (n_elements(airtemp) EQ 0) then airtemp = 5.0 - if (n_elements(nstd) eq 0) then nstd = 16L - if (n_elements(nminsky) eq 0) then nminsky = 32L - if (n_elements(lst) eq 0) then lst = racen - if (NOT keyword_set(ntotal)) then ntotal = 640L - ntot = ntotal - nsci = ntot - nstd - nminsky ; Max number of science targets to add - - plugmappfile = 'plPlugMapP-' + plate_to_string(platenum) + '.par' - maxpriority = 2L^31 - 1 ; Maximum value; this is the value for GUIDE stars - paramdir = concat_dir(getenv('IDLSPEC2D_DIR'), 'examples') - - ;---------- - ; If the priorities of targets are not specified in the input structure, - ; then assign random priorities between 1 and 100. - - if ((where(tag_names(stardata1) EQ 'PRIORITY'))[0] NE -1) then $ - priority = (stardata1.priority > 1L) < (maxpriority-2) $ - else $ - priority = long(randomu(24680, n_elements(stardata1)) * 100) + 1 - - ;---------- - ; Add the tags XFOCAL,YFOCAL to the structure of object data. - - radec_to_xyfocal, stardata1.ra, stardata1.dec, xfocal, yfocal, $ - racen=racen, deccen=deccen, airtemp=airtemp - xydata = replicate(create_struct('XFOCAL', 0D, 'YFOCAL', 0D), $ - n_elements(stardata1)) - xydata.xfocal = xfocal - xydata.yfocal = yfocal - if(tag_indx(stardata1, 'XFOCAL') EQ -1) then begin - stardata = struct_addtags(stardata1, xydata) - endif else begin - stardata=stardata1 - struct_assign, xydata, stardata, /nozero - endelse - - ;---------- - ; Read a template plugmap structure - - blankplug = (yanny_readone( $ - filepath('plPlugMapT-XXXX.par', root_dir=paramdir), pp, $ - hdr=plughdr, enums=plugenum, structs=plugstruct))[0] - struct_assign, {junk:0}, blankplug - - ;---------- - ; Set up info for guide fibers. - ; - ; The following info is from the "plate" product in the - ; file "$PLATE_DIR/test/plParam.par". - ; XREACH,YREACH = Center of the fiber reach [mm] - ; RREACH = Radius of the fiber reach [mm] - ; XPREFER,YREACH = Preferred position for the fiber [mm] - ; Note that the plate scale is approx 217.7358 mm/degree. - ; Moving +RA is +XFOCAL, +DEC is +YFOCAL. - - gfiber = create_struct( $ - 'xreach' , 0.0, $ - 'yreach' , 0.0, $ - 'rreach' , 0.0, $ - 'xprefer' , 0.d, $ - 'yprefer' , 0.d ) - nguide = 11 - gfiber = replicate(gfiber, nguide) - - platescale = 217.7358 ; mm/degree - guideparam = [[ 1, 199.0, -131.0, 165.0, 199.0, -131.0 ], $ - [ 2, 93.0, -263.0, 165.0, 93.0, -263.0 ], $ - [ 3, -121.0, -263.0, 165.0, -121.0, -263.0 ], $ - [ 4, -227.0, -131.0, 165.0, -227.0, -131.0 ], $ - [ 5, -199.0, 131.0, 165.0, -199.0, 131.0 ], $ - [ 6, -93.0, 263.0, 165.0, -93.0, 263.0 ], $ - [ 7, 121.0, 263.0, 165.0, 121.0, 263.0 ], $ - [ 8, 227.0, 131.0, 165.0, 227.0, 131.0 ], $ - [ 9, 14.0, 131.0, 139.5, 14.0, 65.0 ], $ - [ 10, -14.0, -131.0, 165.0, -14.0, -65.0 ], $ - [ 11, 93.0, -131.0, 139.5, 93.0, -131.0 ] ] - gfiber.xreach = transpose(guideparam[1,*]) - gfiber.yreach = transpose(guideparam[2,*]) - gfiber.rreach = transpose(guideparam[3,*]) - gfiber.xprefer = transpose(guideparam[4,*]) - gfiber.yprefer = transpose(guideparam[5,*]) - - ;---------- - ; Add the center hole - ; This **must** be the first object added. - - addplug = blankplug - addplug.objid[0] = -1 - addplug.holetype = 'QUALITY' - addplug.objtype = 'NA' - addplug.spectrographid = -9999 - addplug.fiberid = -9999 - addplug.throughput = -9999 - allplug = design_append(allplug, addplug, nadd=nadd1) - ntot = ntot + nadd1 - if (nadd1 NE 1) then $ - message,' Error adding the center hole' - - ;---------- - ; Add science objects - - ct = 2 - while (n_elements(allplug) LT ntot - nminsky AND ct GT 1) do begin - indx = where(strtrim(stardata.holetype,2) EQ 'OBJECT' $ - AND strtrim(stardata.objtype,2) NE 'SKY' $ - AND strtrim(stardata.objtype,2) NE 'SPECTROPHOTO_STD' $ - AND strtrim(stardata.objtype,2) NE 'REDDEN_STD' $ - AND priority GT 0, ct) - if (ct GT 0) then begin - junk = max(priority[indx], ibest) - addplug = blankplug - struct_assign, stardata[indx[ibest]], addplug - addplug.holetype = 'OBJECT' - - allplug = design_append(allplug, addplug) - - priority[indx[ibest]] = 0 ; Don't try to target again - endif - endwhile - - ;---------- - ; Add guide fibers - - for iguide=0, nguide-1 do begin - ;---------- - ; Assign the nearest available guide fiber(s) to this guide position. - - print, 'Assigning guide fiber number ', iguide+1 - - nadd1 = 0 - while (nadd1 EQ 0) do begin - indx = where(strtrim(stardata.holetype,2) EQ 'GUIDE' $ - AND priority GT 0, ct) - if (ct EQ 0) then $ - message, 'No guide stars for guide #', iguide - if (ct GT 0) then begin - adiff = sqrt( $ - (gfiber[iguide].xprefer - stardata[indx].xfocal)^2 $ - + (gfiber[iguide].yprefer - stardata[indx].yfocal)^2 ) - - junk = min(adiff, ibest) - addplug = blankplug - struct_assign, stardata[indx[ibest]], addplug - addplug.holetype = 'GUIDE' - addplug.objtype = 'NA' - addplug.sectarget = 64L - addplug.fiberid = iguide+1 - allplug = design_append(allplug, addplug, nadd=nadd1) - ntot = ntot + nadd1 - priority[indx[ibest]] = 0 ; Don't try to target again - - if (nadd1 EQ 1) then begin - ; Now add the alignment hole for this guide fiber - DRADEG = 180.d0/!dpi - twist_coeff = 0.46 - align_hole_dist = 2.54 - if (addplug.yfocal GT 0) then $ - thisang = 90.d0 + twist_coeff * (addplug.yfocal $ - - gfiber[iguide].yreach) $ - else $ - thisang = -90.d0 - twist_coeff * (addplug.yfocal $ - - gfiber[iguide].yreach) - xfocal = addplug.xfocal + align_hole_dist * cos(thisang/DRADEG) - yfocal = addplug.yfocal + align_hole_dist * sin(thisang/DRADEG) - addplug = blankplug - addplug.holetype = 'ALIGNMENT' - addplug.objtype = 'NA' - addplug.xfocal = xfocal - addplug.yfocal = yfocal - addplug.throughput = -9999 - addplug.fiberid = iguide+1 - allplug = [allplug, addplug] ; Add this hole with no checking! - ntot = ntot + nadd1 - endif - endif - endwhile - endfor - - ;---------- - ; Add SPECTROPHOTO_STD and REDDEN_STD stars - - nadd = 0L - nxbin = 4 - nybin = 2 - indx = where(strtrim(allplug.holetype,2) EQ 'OBJECT', nobj) - groupnum = design_groupfibers(allplug[indx], nxbin, nybin) - for igroup=0, max(groupnum) do begin - nthisbox = 0L - jj = where(groupnum EQ igroup) - ra_range = minmax(allplug[indx[jj]].ra) - dec_range = minmax(allplug[indx[jj]].dec) - ; Attempt to add up to NSTD/(NXBIN*NYBIN*2) of each flavor of - ; calibration star in this region of the plate. - ntry1 = nstd / (nxbin * nybin * 2) > 1 - ntry2 = nstd / (nxbin * nybin * 2) - i1 = where(strtrim(stardata.holetype,2) EQ 'OBJECT' $ - AND strtrim(stardata.objtype,2) EQ 'SPECTROPHOTO_STD' $ - AND stardata.ra GE ra_range[0] AND stardata.ra LE ra_range[1] $ - AND stardata.dec GE dec_range[0] AND stardata.dec LE dec_range[1] $ - AND priority GT 0, ct1) - i2 = where(strtrim(stardata.holetype,2) EQ 'OBJECT' $ - AND strtrim(stardata.objtype,2) EQ 'REDDEN_STD' $ - AND stardata.ra GE ra_range[0] AND stardata.ra LE ra_range[1] $ - AND stardata.dec GE dec_range[0] AND stardata.dec LE dec_range[1] $ - AND priority GT 0, ct2) - if (ntry1 GT 0 AND ct1 GT 0) then begin - ; First try adding the best SPECTROPHOTO_STD stars - while (total(priority[i1] NE 0) GT 0 AND nthisbox LT ntry1) do begin - junk = max(priority[i1], ibest) - addplug = blankplug - struct_assign, stardata[i1[ibest]], addplug - addplug.primtarget = 0 - addplug.sectarget = sdss_flagval('TTARGET', addplug.objtype) - allplug = design_append(allplug, addplug, nadd=nadd1) - nadd = nadd + nadd1 - nthisbox = nthisbox + nadd1 - priority[i1[ibest]] = 0 ; Don't try to target again - endwhile - endif - if (ntry2 GT 0 AND ct2 GT 0) then begin - ; Next try adding the best REDDEN_STD stars - while (total(priority[i2] NE 0) GT 0 $ - AND nthisbox LT ntry1+ntry2) do begin - junk = max(priority[i2], ibest) - addplug = blankplug - struct_assign, stardata[i2[ibest]], addplug - addplug.primtarget = 0 - addplug.sectarget = sdss_flagval('TTARGET', addplug.objtype) - allplug = design_append(allplug, addplug, nadd=nadd1) - nadd = nadd + nadd1 - nthisbox = nthisbox + nadd1 - priority[i2[ibest]] = 0 ; Don't try to target again - endwhile - endif - endfor - - ; If we have not assigned all of the requested standard stars, - ; then attempt adding more anywhere on the plate, sorted by priority. - indx = where(strtrim(stardata.holetype,2) EQ 'OBJECT' $ - AND (strtrim(stardata.objtype,2) EQ 'SPECTROPHOTO_STD' $ - OR strtrim(stardata.objtype,2) EQ 'REDDEN_STD') $ - AND priority GT 0, ct) - while (total(priority[indx] NE 0) GT 0 AND nadd LT nstd) do begin - junk = max(priority[indx], ibest) - addplug = blankplug - struct_assign, stardata[indx[ibest]], addplug - addplug.primtarget = 0 - addplug.sectarget = sdss_flagval('TTARGET', addplug.objtype) - allplug = design_append(allplug, addplug, nadd=nadd1) - nadd = nadd + nadd1 - priority[indx[ibest]] = 0 ; Don't try to target again - endwhile - - ;---------- - ; Add skies - - nsky = ntot - n_elements(allplug) ; Number of sky fibers to be added here - - ; Construct a list of preferred RA,DEC positions for the sky fibers - ; that is evenly spaced with respect to the object positions. - ra_prefer = dblarr(nsky) - dec_prefer = dblarr(nsky) - nxbin = floor(sqrt(nsky)) - nybin = floor(nsky / nxbin) - indx = where(strtrim(allplug.holetype,2) EQ 'OBJECT', nobj) - groupnum = design_groupfibers(allplug[indx], nxbin, nybin) - for igroup=0, max(groupnum) do begin - jj = where(groupnum EQ igroup) - ra_prefer[igroup] = median(allplug[indx[jj]].ra) - dec_prefer[igroup] = median(allplug[indx[jj]].dec) - endfor - ; Add any additional preferred sky positions - nmore = nsky - nxbin * nybin - if (nmore GT 0) then begin - jj = long(nobj*randomu(1234,nmore)) - ra_prefer[nsky-nmore:nsky-1] = allplug[indx[jj]].ra - dec_prefer[nsky-nmore:nsky-1] = allplug[indx[jj]] .dec - endif - - for isky=0L, nsky-1L do begin - nadd1 = 0 - while (nadd1 EQ 0) do begin - indx = where(strtrim(stardata.holetype,2) EQ 'OBJECT' $ - AND strtrim(stardata.objtype,2) EQ 'SKY' $ - AND priority GT 0, ct) - if (ct EQ 0) then $ - message, 'Ran out of sky targets!' - - ; Attempt to assign the closest sky fiber to the preferred position - adist = djs_diff_angle(stardata[indx].ra, stardata[indx].dec, $ - ra_prefer[isky], dec_prefer[isky]) - junk = min(adist, ibest) - - addplug = blankplug - struct_assign, stardata[indx[ibest]], addplug - addplug.holetype = 'OBJECT' - addplug.objtype = 'SKY' - addplug.sectarget = 16L - - allplug = design_append(allplug, addplug, nadd=nadd1) - priority[indx[ibest]] = 0 ; Don't try to target again, even if this - ; fiber was not assigned - endwhile - endfor - - ;---------- - ; Add LIGHT_TRAP stars - - tycvlimit = 7.5 - tycdat = tycho_read(racen=racen, deccen=deccen, radius=1.49) - if (keyword_set(tycdat)) then begin - ; Sort so that we add the brightest Tycho stars first. - tycdat = tycdat[sort(tycdat.vtmag)] - indx = where(tycdat.vtmag LT tycvlimit, ct) - if (ct EQ 0) then tycdat = 0 $ - else tycdat = tycdat[indx] - endif - if (keyword_set(tycdat)) then begin - radec_to_xyfocal, tycdat.radeg, tycdat.dedeg, xfocal, yfocal, $ - racen=racen, deccen=deccen, airtemp=airtemp - for ityc=0, n_elements(tycdat)-1 do begin - addplug = blankplug - addplug.holetype = 'LIGHT_TRAP' - addplug.objtype = 'NA' - addplug.ra = tycdat[ityc].radeg - addplug.dec = tycdat[ityc].dedeg - addplug.xfocal = xfocal[ityc] - addplug.yfocal = yfocal[ityc] - addplug.mag = [0, tycdat[ityc].btmag, tycdat[ityc].vtmag, 0, 0] - allplug = design_append(allplug, addplug, nadd=nadd1) - nadd = nadd + nadd1 - endfor - endif - - ;---------- - ; If Southern plate, then set the Southern target-selection bit - - if (keyword_set(southern)) then begin - indx = where(strmatch(allplug.holetype,'OBJECT*')) - allplug[indx].primtarget = allplug[indx].primtarget OR 2L^31 - allplug[indx].sectarget = allplug[indx].sectarget OR 2L^31 - endif - - ;---------- - ; Set the FIBERID from -1 to -NTOTAL for the object targets, - ; for the PostScript overlay code. - - nybin = 4 - nperbundle = 20 - if (ntotal EQ 640) then begin - nxbin = [7,9,9,7] - endif else begin - nxbin = long(ntotal/nxbin/nperbundle) - if ((ntotal MOD nxbin*nybin) NE 0) then $ - message, 'Number of fibers not divisible by 80' - endelse - indx = where(strtrim(allplug.holetype,2) EQ 'OBJECT', nobj) - groupnum = design_groupfibers(allplug[indx], nxbin, nybin) - i0 = 1L - for igroup=0, max(groupnum) do begin - jj = where(groupnum EQ igroup, ct) - jj = jj[sort(-allplug[indx[jj]].dec)] - allplug[indx[jj]].fiberid = -(i0 + lindgen(ct)) - i0 = i0 + ct - endfor - - ;---------- - ; Re-sort the plugmap entries to be the same as for survey files. - ; This should not matter, but perhaps it does for the U.W. shop - ; if this actually reflects the order of drilling holes. - - sortstring = allplug.holetype - sortstring = repstr(sortstring, 'LIGHT_TRAP', 'AAA') - sortstring = repstr(sortstring, 'GUIDE', 'BBB') - sortstring = repstr(sortstring, 'ALIGNMENT', 'BBB') - sortstring = repstr(sortstring, 'OBJECT', 'CCC') - allplug = allplug[sort(sortstring)] - - ;---------- - ; Print the number of targetted objects - - nobject = long(total(strmatch(allplug.holetype,'OBJECT*'))) - nguide = long(total(strmatch(allplug.holetype,'GUIDE*'))) - nspectrophoto = long(total(strmatch(allplug.objtype,'SPECTROPHOTO_STD*'))) - nredden = long(total(strmatch(allplug.objtype,'REDDEN_STD*'))) - nsky = long(total(strmatch(allplug.objtype,'SKY*'))) - splog, 'Final number of GUIDE = ', nguide - splog, 'Final number of SKY = ', nsky - splog, 'Final number of SPECTROPHOTO_STD = ', nspectrophoto - splog, 'Final number of REDDEN_STD = ', nredden - splog, 'Final number of science objects = ', $ - nobject - nsky - nspectrophoto - nredden - - ;---------- - ; Write the plPlugMapP file - - ; Compute the median reddening for objects on this plate - indx = where(strtrim(allplug.holetype,2) EQ 'OBJECT', nobj) - euler, allplug[indx].ra, allplug[indx].dec, ll, bb, 1 - ; NOTE: These constants are also hardwired in fitsn.pro - ; If you change them here, also change them there. - reddenvec = [5.155, 3.793, 2.751, 2.086, 1.479] $ - * median(dust_getval(ll, bb, /interp)) - - outhdr = ['completeTileVersion v0', $ - 'reddeningMed ' + string(reddenvec,format='(5f8.4)'), $ - 'tileId ' + string(tilenum), $ - 'raCen ' + string(racen,format='(f10.6)'), $ - 'decCen ' + string(deccen,format='(f10.6)'), $ - 'plateVersion v0', $ - 'plateId ' + string(platenum), $ - 'temp ' + string(airtemp), $ - 'haMin ' + string(lst-racen), $ - 'haMax ' + string(lst-racen), $ - 'mjdDesign ' + string(long(current_mjd())), $ - 'theta 0 ' ] - yanny_write, plugmappfile, ptr_new(allplug), hdr=outhdr, $ - enums=plugenum, structs=plugstruct - - ;---------- - ; Create the file "plPlan.par" in the current directory. - - cd, current=thisdir - cd, thisdir - plhdr = '# Created on ' + systime() - plhdr = [plhdr, "parametersDir " + paramdir] - plhdr = [plhdr, "parameters " + "plParam.par"] - plhdr = [plhdr, "plObsFile " + "plObs.par"] - plhdr = [plhdr, "outFileDir " + thisdir] - plhdr = [plhdr, "tileDir " + thisdir] - yanny_write, 'plPlan.par', hdr=plhdr - - ;---------- - ; Create the file "plObs.par" in the current directory. - - plhdr = '# Created on ' + systime() - plhdr = [plhdr, "plateRun special"] - plstructs = ["typedef struct {", $ - " int plateId;", $ - " int tileId;", $ - " float temp;", $ - " float haMin;", $ - " float haMax;", $ - " int mjdDesign", $ - "} PLOBS;"] - plobs = create_struct(name='PLOBS', $ - 'PLATEID' , platenum, $ - 'TILEID' , tilenum, $ - 'TEMP' , airtemp, $ - 'HAMIN' , (lst-racen), $ - 'HAMAX' , (lst-racen), $ - 'MJDDESIGN', current_mjd()) - yanny_write, 'plObs.par', ptr_new(plobs), hdr=plhdr, structs=plstructs - - ;---------- - ; Run the SDSS "PLATE" code - - print - print, 'In the "plate" product run the following commands:"' - print, ' makeFanuc' - print, ' makeDrillPos' - print, ' use_cs3' - print, ' makePlots -skipBrightCheck' - print - setupplate = 'setup plate' - spawn, setupplate +'; echo "makeFanuc" | plate -noTk' - spawn, setupplate +'; echo "makeDrillPos" | plate -noTk' - spawn, setupplate +'; echo "use_cs3" | plate -noTk' - spawn, setupplate +'; echo "makePlots -skipBrightCheck" | plate -noTk' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/design_pleiades.pro b/pro/plate/design_pleiades.pro deleted file mode 100644 index 2dfad2ec6..000000000 --- a/pro/plate/design_pleiades.pro +++ /dev/null @@ -1,121 +0,0 @@ -; Design the special plate for the Pleiades star cluster. - -;------------------------------------------------------------------------------ -;------------------------------------------------------------------------------ -function read_pleiades - - p1 = design_read2mass('pleiades.j10') - p2 = design_read2mass('pleiades.j14') - p1.priority = 3 - p2.priority = 2 - - result = [p1, p2] - return, result -end - -;------------------------------------------------------------------------------ -pro design_pleiades - - epoch = 1998. - racen = [57.0d, 56.8d, 56.6d, 57.2d, 57.4d] - deccen = [23.7d, 23.7d, 23.7d, 23.7d, 23.7d] - ; Full magnitude range is [3.0, 18.1], but only 6 stars brighter than r=5, - ; and 31 stars fainter than r=16, 12 fainter than r=17. - magmin = reverse([ 2.9, 5.5, 8.3, 11.1, 13.9]) - magmax = reverse([ 5.9, 8.5, 11.3, 14.1, 17.1]) - guidemag = [10.5, 12.5] - tilenums = [9221,9222,9223,9224,9225] - platenums = [799,1,2,3,4] - matchdist = 2.0/3600. ; match distance in degrees - - ntile = n_elements(racen) - - ;---------- - ; Read stars from Eisenstein's lists which use 2MASS positions. - ; Discard duplicates. - - stardata = read_pleiades() - junk = djs_angle_group(stardata.ra, stardata.dec, matchdist, $ - gstart=gstart, gindx=gindx) - stardata = stardata[gindx[gstart]] - - ;---------- - ; Read the Tycho stars - - tycdat = tyc_read(/small, epoch=epoch) - adiff = djs_diff_angle(tycdat.radeg, tycdat.dedeg, racen[0], deccen[0]) - tycdat = tycdat[ where(adiff LT 1.5) ] - - ;---------- - ; For every Tycho star, find the match in the Eisenstein catalog. - ; If there are objects not in Eisenstein, then add them. - - junk = djs_angle_match(tycdat.radeg, tycdat.dedeg, $ - stardata.ra, stardata.dec, dtheta=matchdist, mindx=mindx, mdist=mdist) - - iadd = where(mindx EQ -1, nadd) - if (nadd GT 0) then begin - tycadd = design_starstruct(nadd) - tycadd.ra = tycdat[iadd].radeg - tycadd.dec = tycdat[iadd].dedeg - tycadd.mag = tyc_sdssmags(tycdat[iadd].bmv, tycdat[iadd].vmag) - tycadd.objtype = 'SERENDIPITY_MANUAL' - tycadd.priority = 3 - stardata = [stardata, tycadd] - endif - - ;---------- - ; Select objects that may be good spectro-photo standards. - ; Find stars with a match in the Tycho catalog with -0.1 < B-V < +0.1. - -; junk = djs_angle_match(tycdat.radeg, tycdat.dedeg, $ -; stardata.ra, stardata.dec, dtheta=matchdist, mindx=mindx, mdist=mdist) -; indx1 = where(mindx NE -1) -; indx2 = mindx[indx1] -; iphoto = where(tycdat[indx1].bmv GT -0.1 AND tycdat[indx1].bmv LT 0.1) -; if (iphoto[0] NE -1) then begin -; stardata[indx2[iphoto]].objtype = 'SPECTROPHOTO_STD' -; stardata[indx2[iphoto]].sectarget = 32L -; endif - - ;---------- - ; Assign tile numbers based upon the magnitudes. - ; Allow for overlapping magnitude slices, which assign some stars - ; on several of the tiles. - - for itile=0, ntile-1 do begin - iadd = where(stardata.mag[2] GE magmin[itile] $ - AND stardata.mag[2] LE magmax[itile], nadd) - if (nadd EQ 0) then $ - message, 'No objects available for this tile' - addstar = stardata[iadd] - addstar.tilenum = tilenums[itile] - addstar.holetype = 'OBJECT' - if (itile EQ 0) then newdata = addstar $ - else newdata = [newdata, addstar] - endfor - - ;---------- - ; Now include all stars within an appropriate magnitude range - ; as possible guide stars. These will be duplicate entries - ; but with HOLETYPE = 'GUIDE' - - iadd = where(stardata.mag[2] GE guidemag[0] $ - AND stardata.mag[2] LE guidemag[1], nadd) - if (nadd EQ 0) then $ - message, 'No guide stars available' - addstar = stardata[iadd] - addstar.tilenum = 0 - addstar.holetype = 'GUIDE' - newdata = [newdata, addstar] - - stardata = newdata - -;splot,stardata.ra,stardata.dec,ps=4,color='green' -;soplot,tycdat.radeg,tycdat.dedeg,ps=1,symsize=0.5 - - design_multiplate, stardata, racen=racen, deccen=deccen, $ - tilenums=tilenumes, platenums=platenums, /addfund - -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/design_praesepe.pro b/pro/plate/design_praesepe.pro deleted file mode 100644 index 70b8503f7..000000000 --- a/pro/plate/design_praesepe.pro +++ /dev/null @@ -1,120 +0,0 @@ -; Design the special plate for the Praesepe star cluster. -; Cluster center is around RA=130.0 deg, DEC=19.6 deg (J2000) - -;------------------------------------------------------------------------------ -;------------------------------------------------------------------------------ -function read_praesepe - - p3 = design_read2mass('praesepe.j10') - p2 = design_read2mass('praesepe.match.j10') - p1 = design_read2mass('praesepe.j13') - p3.priority = 3 - p2.priority = 2 - p1.priority = 1 - - result = [p3, p2, p1] - return, result -end - -;------------------------------------------------------------------------------ -pro design_praesepe - - epoch = 1998. - racen = [130.0d, 129.8d, 130.2d] - deccen = [19.6d, 19.6d, 19.6d] - ; Full mag range is [6.0, 15.2], but only 2 objects fainter than r=15.2 - magmin = reverse([ 5.9, 9.0, 12.0]) - magmax = reverse([ 9.2, 12.2, 15.5]) - guidemag = [10.5, 12.5] - tilenums = [9217,9218,9219] - platenums = [798,1,2] - matchdist = 2.0/3600. ; match distance in degrees - - ntile = n_elements(racen) - - ;---------- - ; Read stars from Eisenstein's lists which use 2MASS positions. - ; Discard duplicates. - - stardata = read_praesepe() - junk = djs_angle_group(stardata.ra, stardata.dec, matchdist, $ - gstart=gstart, gindx=gindx) - stardata = stardata[gindx[gstart]] - - ;---------- - ; Read the Tycho stars - - tycdat = tyc_read(/small, epoch=epoch) - adiff = djs_diff_angle(tycdat.radeg, tycdat.dedeg, racen[0], deccen[0]) - tycdat = tycdat[ where(adiff LT 1.5) ] - - ;---------- - ; For every Tycho star, find the match in the Eisenstein catalog. - ; If there are objects not in Eisenstein, then add them. - - junk = djs_angle_match(tycdat.radeg, tycdat.dedeg, $ - stardata.ra, stardata.dec, dtheta=matchdist, mindx=mindx, mdist=mdist) - - iadd = where(mindx EQ -1, nadd) - if (nadd GT 0) then begin - tycadd = design_starstruct(nadd) - tycadd.ra = tycdat[iadd].radeg - tycadd.dec = tycdat[iadd].dedeg - tycadd.mag = tyc_sdssmags(tycdat[iadd].bmv, tycdat[iadd].vmag) - tycadd.objtype = 'SERENDIPITY_MANUAL' - tycadd.priority = 3 - stardata = [stardata, tycadd] - endif - - ;---------- - ; Select objects that may be good spectro-photo standards. - ; Find stars with a match in the Tycho catalog with -0.1 < B-V < +0.1. - -; junk = djs_angle_match(tycdat.radeg, tycdat.dedeg, $ -; stardata.ra, stardata.dec, dtheta=matchdist, mindx=mindx, mdist=mdist) -; indx1 = where(mindx NE -1) -; indx2 = mindx[indx1] -; iphoto = where(tycdat[indx1].bmv GT -0.1 AND tycdat[indx1].bmv LT 0.1) -; if (iphoto[0] NE -1) then begin -; stardata[indx2[iphoto]].objtype = 'SPECTROPHOTO_STD' -; stardata[indx2[iphoto]].sectarget = 32L -; endif - - ;---------- - ; Assign tile numbers based upon the magnitudes. - ; Allow for overlapping magnitude slices, which assign some stars - ; on several of the tiles. - - for itile=0, ntile-1 do begin - iadd = where(stardata.mag[2] GE magmin[itile] $ - AND stardata.mag[2] LE magmax[itile], nadd) - if (nadd EQ 0) then $ - message, 'No objects available for this tile' - addstar = stardata[iadd] - addstar.tilenum = tilenums[itile] - addstar.holetype = 'OBJECT' - if (itile EQ 0) then newdata = addstar $ - else newdata = [newdata, addstar] - endfor - - ;---------- - ; Now include all stars within an appropriate magnitude range - ; as possible guide stars. These will be duplicate entries - ; but with HOLETYPE = 'GUIDE' - - iadd = where(stardata.mag[2] GE guidemag[0] $ - AND stardata.mag[2] LE guidemag[1], nadd) - if (nadd EQ 0) then $ - message, 'No guide stars available' - addstar = stardata[iadd] - addstar.tilenum = 0 - addstar.holetype = 'GUIDE' - newdata = [newdata, addstar] - - stardata = newdata - - design_multiplate, stardata, racen=racen, deccen=deccen, $ - tilenums=tilenumes, platenums=platenums, /addfund - -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/design_random.pro b/pro/plate/design_random.pro deleted file mode 100644 index 21d5253a7..000000000 --- a/pro/plate/design_random.pro +++ /dev/null @@ -1,45 +0,0 @@ -; Script to test running DESIGN_PLATE -;------------------------------------------------------------------------------ -pro design_random - - blankobj = create_struct( $ - 'holetype', '', $ - 'objtype' , '', $ - 'mag' , fltarr(5)+25, $ - 'ra' , 0.d, $ - 'dec' , 0.d ) - - nguide = 50 - nstd = 30 - nsky = 1000 - nobj = 2000 - ntot = nguide + nstd + nsky + nobj - - racen = 50.0 - deccen = 30.0 - objs = replicate(blankobj, ntot) - objs.ra = randomu(12345L, ntot)*4 + racen - 2 - objs.dec = randomu(67890L, ntot)*4 + deccen - 2 - - objs[0:nguide-1].holetype = 'GUIDE' - - objs[nguide:nguide+nstd-1].holetype = 'OBJECT' - objs[nguide:nguide+nstd-1].objtype = 'SPECTROPHOTO_STD' - - objs[nguide+nstd:nguide+nstd+nsky-1].holetype = 'OBJECT' - objs[nguide+nstd:nguide+nstd+nsky-1].objtype = 'SKY' - - objs[nguide+nstd+nsky:nguide+nstd+nsky+nobj-1].holetype = 'OBJECT' - objs[nguide+nstd+nsky:nguide+nstd+nsky+nobj-1].objtype = 'SERENDIPITY_MANUAL' - - design_plate, objs, racen=racen, deccen=deccen, tilenum=666, nminsky=200 - -; plug = yanny_readone('plPlugMapT-0666.par') -; splot, plug.ra, plug.dec, psym=4 -; isky = where(strmatch(plug.holetype,'COHERENT_SKY*')) -; soplot, plug[isky].ra, plug[isky].dec, $ -; psym=4, color='green', symsize=1.5 - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/design_read2mass.pro b/pro/plate/design_read2mass.pro deleted file mode 100644 index 8fe46f7ca..000000000 --- a/pro/plate/design_read2mass.pro +++ /dev/null @@ -1,65 +0,0 @@ -; Read a list of 2MASS objects from an ASCII file as generated by Jill Knapp. -; Return synthesized SDSS magnitudes -; -; The 2MASS magnitudes are roughly related to the (Johnson?) B+R magnitudes -; as follows: -; B_2MASS = J + 4.51 * (J-K) + 0.22 -; R_2MASS = J + 2.26 * (J-K) + 0.08 -; (B-R)_2MASS = 2.25 * (J-K) + 0.14 -; with a standard deviation of 0.65 mag in B, and 0.40 mag in R. This -; extrapolation would be much, much worse for late-type stars not in Tycho. -; The 2MASS documentation says R-band is from USNO-A. -; -; Transform to Tycho B+V magnitudes with: -; B_Tycho = R_2MASS + 0.749 * (B-R)_2MASS + 0.033 -; V_Tycho = R_2MASS - 0.093 * (B-R)_2MASS - 0.003 -; The above is a *very* good fit for most stars (<2% scatter), possibly -; indicating that these 2MASS B+R and Tycho B+V magnitudes are actually -; from the same source. -;------------------------------------------------------------------------------ -function design_read2mass, filename - - readcol, filepath(filename, $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory=['pro','plate']), $ - ra, dec, bmag, rmag, jmag, hmag, kmag, flag, $ - format='(D,D,F,F,F,F,F,A)' - - ;---------- - ; Replace missing data - - bad_bmag = (bmag LT -9 OR bmag GT 90) - bad_rmag = (rmag LT -9 OR rmag GT 90) - - ibad = where(bad_bmag, nbad) - if (nbad GT 0) then begin - bmag[ibad] = rmag[ibad] + 1.3 ; Approximate as B-R = 1.3 - endif - - ibad = where(bad_rmag, nbad) - if (nbad GT 0) then begin - rmag[ibad] = bmag[ibad] - 1.3 ; Approximate as B-R = 1.3 - endif - - ibad = where(bad_bmag AND bad_rmag, nbad) - if (nbad GT 0) then begin - bmag[ibad] = jmag[ibad] + 4.51 * (jmag[ibad] - kmag[ibad]) + 0.22 - rmag[ibad] = jmag[ibad] + 2.26 * (jmag[ibad] - kmag[ibad]) + 0.08 - endif - - ;---------- - ; Create the output structure - - result = design_starstruct(n_elements(ra)) - result.ra = ra - result.dec = dec -; result.mag = transpose( [[bmag], [rmag], [jmag], [hmag], [kmag]] ) -; result.mag = transpose( [[bmag], [bmag], [rmag], [rmag], [rmag]] ) - tycbmag = rmag + 0.749 * (bmag - rmag) + 0.033 - tycvmag = rmag - 0.093 * (bmag - rmag) - 0.003 - result.mag = tyc_sdssmags(tycbmag-tycvmag, tycvmag) - result.objtype = 'SERENDIPITY_MANUAL' - result.primtarget = 2L^24 - - return, result -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/design_sdss3test.pro b/pro/plate/design_sdss3test.pro deleted file mode 100644 index b8b4d7ec3..000000000 --- a/pro/plate/design_sdss3test.pro +++ /dev/null @@ -1,511 +0,0 @@ -;+ -; NAME: -; design_sdss3test -; -; PURPOSE: -; Design test plates for SDSS-3 -; -; CALLING SEQUENCE: -; design_sdss3test, platenum, [ nminsky=, nstd= ] -; -; INPUTS: -; platenum - Plate number -; -; OPTIONAL INPUTS: -; nminsky - Minimum number of sky fibers per plate; default to 64 -; nstd - Number of F star standards per plate; default to 16 -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; Design our test plates for the Oct 2006 drill run at Princeton: -; setenv,'PHOTO_REDUX=/u/dss/redux' -; setenv,'PHOTO_RESOLVE=/u/dss/redux/resolve/full_02apr06' -; setenv,'PHOTO_CALIB=/u/dss/redux/resolve/full_02apr06/calib/default0' -; setenv,'BOSS_SPECTRO_REDUX=/u/dss/spectro_v5' -; design_sdss3test, 2634 -; design_sdss3test, 2638 -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; -; INTERNAL SUPPORT ROUTINES: -; design_struct() -; -; REVISION HISTORY: -; 29-Oct-2006 Written by D. Schlegel and N. Padmanabhan, LBL -;- -;------------------------------------------------------------------------------ -function design_struct, num - - result = create_struct( $ - name = 'TARGETDATA', $ - 'objid' , lonarr(5), $ - 'ra' , 0.d, $ - 'dec' , 0.d, $ - 'mag' , fltarr(5), $ - 'holetype' , '', $ - 'objtype' , '', $ - 'priority' , 1L, $ - 'primtarget', 0L, $ - 'sectarget' , 0L) - if (keyword_set(num)) then result = replicate(result, num) - - return, result -end -;------------------------------------------------------------------------------ -function design_decollide, ra, dec, mindist - - if (NOT keyword_set(mindist)) then mindist = 55./3600 - ingroup = spheregroup(ra, dec, mindist, firstgroup=firstgroup) - - return, firstgroup -end -;------------------------------------------------------------------------------ -function lrg_dperp, modelmag - - grcolor = modelmag[1,*]-modelmag[2,*] - ricolor = modelmag[2,*]-modelmag[3,*] - dperp = (ricolor) - (grcolor)/8.d0 - return, dperp - -end - - -function lrg_cpllel, modelmag - - grcolor = modelmag[1,*]-modelmag[2,*] - ricolor = modelmag[2,*]-modelmag[3,*] - c= 0.7 - cpllel = c*(grcolor) + (1.d0-c)*4.0d0*((ricolor) - 0.18) - return, cpllel - -end - -function lrg_cperp, modelmag - - grcolor = modelmag[1,*]-modelmag[2,*] - ricolor = modelmag[2,*]-modelmag[3,*] - cperp = (ricolor) - (grcolor/4.d0)-0.18 - return, cperp -end - - -function lrg_select_target, calibobj, lowz=lowz, hiz=hiz, all=all,$ - maglim=maglim, dperp0 = dperp0 - - ; Get the number of galaxies - ngal = n_elements(calibobj) - - ; Set some reasonable defaults - if (n_elements(maglim) NE 2) then maglim=[13.6d0, 19.7d0] - if (NOT keyword_set(dperp0)) then dperp0=0.50 - if (NOT keyword_set(dperp1)) then dperp1=0.65 - - ; Check to see if calibobj has any elements - if (ngal EQ 0) then $ - message, 'ERROR : calibobj has no elements' - - ; Extract the relevant magnitudes - ; We really should have used cmodelmags, and will later. - modelmag = 22.5 - 2.5*alog10(calibobj.modelflux > 0.001) - devmag = 22.5 - 2.5*alog10(calibobj.devflux > 0.001) - expmag = 22.5 - 2.5*alog10(calibobj.expflux > 0.001) - cmodelmag = devmag*calibobj.fracpsf + expmag*(1.0-calibobj.fracpsf) - fibermag = 22.5 - 2.5*alog10(calibobj.fiberflux > 0.001) - psfmag = 22.5 - 2.5*alog10(calibobj.psfflux > 0.001) - ; Extinction correct - modelmag = modelmag - calibobj.extinction - psfmag = psfmag - calibobj.extinction - cmodelmag = cmodelmag - calibobj.extinction - fibermag = fibermag - calibobj.extinction - - ; Compute cperp and cpllel - cperp = lrg_cperp(modelmag) - dperp = lrg_dperp(modelmag) - cpllel = lrg_cpllel(modelmag) - - ; First lowz cuts - if (keyword_set(lowz) OR keyword_set(all)) then begin - icut1 = cmodelmag[2,*] LT (maglim[0] + cpllel/0.3d0) - icut1 = icut1 AND (abs(cperp) LT 0.2d0) - icut1 = icut1 AND (cmodelmag[2,*] LT maglim[1]) - icut1 = icut1 AND (cmodelmag[3,*] LT fibermag[3,*]) - ilrg = icut1 * 2L^1 - endif - - ; Now hiz cuts - maglow = 18.3+2*dperp1 - if (keyword_set(hiz) OR keyword_set(all)) then begin - icut2 = (cmodelmag[3,*] GT 18.5d0) AND (cmodelmag[3,*] LT maglow) - icut2 = icut2 AND ((modelmag[1,*] - modelmag[2,*]) GT 1.4d0) - icut2 = icut2 AND ((modelmag[1,*] - modelmag[2,*]) LT 3.0d0) - icut2 = icut2 AND ((modelmag[2,*] - modelmag[3,*]) LT 2.0d0) - icut2 = icut2 AND (dperp GT dperp0) AND (dperp LT dperp1) - icut2 = icut2 AND (cmodelmag[3,*] LT fibermag[3,*]) - ilrg = ilrg + icut2*2L^2 - endif - - - if (keyword_set(hiz) OR keyword_set(all)) then begin - icut3 = (cmodelmag[3,*] GT 18.5) AND (cmodelmag[3,*] LT 20.0d0) - icut3 = icut3 AND ((modelmag[1,*] - modelmag[2,*]) GT 1.4d0) - icut3 = icut3 AND ((modelmag[1,*] - modelmag[2,*]) LT 3.0d0) - icut3 = icut3 AND ((modelmag[2,*] - modelmag[3,*]) LT 2.0d0) - icut3 = icut3 AND (dperp GT dperp1) - icut3 = icut3 AND (cmodelmag[3,*] LT fibermag[3,*]) - ilrg = ilrg + icut3*2L^3 - endif - - ; Only work with those objects that photo calls a galaxy, and don't - ; have processing flags thrown. - icut3 = reform(icut2*0b) - indx = sdss_selectobj(calibobj, objtype=3, /trim) - if (indx[0] GT -1) then $ - icut3[indx] = 1 - - return, icut3*reform(ilrg) -end - -;------------------------------------------------------------------------------ -; Assign priorities evenly spaced between 1 and 100 (larger is better), -; where the priorities are assigned randomly, but giving preference to -; those that don't have close neighbors in color space. -function design_color_prioritize, colors - - ndim = size(colors,/n_dimen) - dims = size(colors,/dimens) - if (ndim EQ 1) then ncolor = 1 $ - else ncolor = dims[1] - num = dims[0] - dd = fltarr(num) - isort = sort(randomu(1234,num)) ; First sort these randomly - dd[isort[0]] = 0. - for i=1L, num-1L do begin - ; Compute distance in color space to all previously assigned objects - thisdist = fltarr(i) - for j=0, ncolor-1 do $ - thisdist += (colors[isort[i]] - colors[isort[0:i-1]])^2 - dd[isort[i]] += min(thisdist) - endfor - - psort = sort(dd) - priority = lonarr(num) - priority[psort] = (1. + 99. * (1+findgen(num))/float(num)) - - return, priority -end -;------------------------------------------------------------------------------ -pro design_sdss3test, platenum, nminsky=nminsky, nstd=nstd - - if (NOT keyword_set(nminsky)) then nminsky = 64 - if (NOT keyword_set(nstd)) then nstd = 16 - - case platenum of - 2634: begin ; Centered at plate 406 - ; Note there is a bright star near ra=35.49, dec=0.40 - tilenum = 9549 - racen = 35.88296 - deccen = 0.1250122 -; runnum = [4263, 4874] -; rerun = [137, 137] - runnum = [2709, 3384] - rerun = [137, 137] - end - 2638: begin ; Centered at plate 416 - tilenum = 9553 - racen = 55.49162 - deccen = 0.01375204 -; runnum = [4136, 4145, 4874] -; rerun = [137, 137, 137] - runnum = [2709, 3384] - rerun = [137, 137] - end - else: begin - print, 'Unknown plate number!' - return - end - endcase - - ;---------- - ; Read all objects from fpObjc files - - objs = 0 - for irun=0, n_elements(runnum)-1 do begin - fields = sdss_fieldlist(runnum[irun]) - for camcol=1, 6 do begin - sdss_run2radec, runnum[irun], camcol, fields, rerun=rerun[irun], $ - ra=thisra, dec=thisdec - indx = where(djs_diff_angle(thisra, thisdec, racen, deccen) $ - LT 1.49, ct) - if (ct GT 0) then begin - obj1 = sdss_readobj(runnum[irun], camcol, fields[indx], $ - rerun=rerun[irun], /silent) - if (keyword_set(obj1)) then $ - objs = keyword_set(objs) ? [objs,obj1] : obj1 - endif - endfor - endfor - - ;---------- - ; Add the OBJID array for the plugmaps - - objid = replicate(create_struct('objid', lonarr(5)), n_elements(objs)) - objid.objid[0] = objs.run - objid.objid[1] = long(objs.rerun) - objid.objid[2] = objs.camcol - objid.objid[3] = objs.field - objid.objid[4] = objs.id - objs = struct_addtags(objs, objid) - - ;---------- - ; Trim based upon the default options in the SDSS_SELECTOBJ routine, - ; as well as the INTERP_CENTER. - objs = objs[ sdss_selectobj(objs, /trim) ] - indx = where( $ - (objs.objc_flags2 AND sdss_flagval('OBJECT2','INTERP_CENTER')) EQ 0) - objs = objs[indx] - objs = objs[uniq(objs.thing_id,sort(objs.thing_id))] - objs = objs[where(djs_diff_angle(objs.ra, objs.dec, racen, deccen) $ - LT 1.49)] - - ; Logic to see which objects are or maybe are moving... - qmoved = $ - (objs.objc_flags2 AND sdss_flagval('OBJECT2','DEBLENDED_AS_MOVING')) EQ 0 $ - AND (abs(objs.rowv) GE 3.0*abs(objs.rowverr) $ - OR abs(objs.colv) GE 3.0*abs(objs.colverr)) - qmaybe_moved = $ - (objs.objc_flags2 AND sdss_flagval('OBJECT2','DEBLENDED_AS_MOVING')) EQ 0 $ - AND (abs(objs.rowv) GE 3.0*abs(objs.rowverr) $ - OR abs(objs.colv) GE 3.0*abs(objs.colverr) $ - OR objs.rowverr LE 0 OR objs.colverr LE 0) - - fibermag = 22.5 - 2.5*alog10(objs.fiberflux>0.01) - - ;---------- - ; Select the sky objects - - isky = where(objs.objc_type EQ 8, nsky) - skyobj = design_struct(nsky) - skyobj.objid = objs[isky].objid - skyobj.ra = objs[isky].ra - skyobj.dec = objs[isky].dec - skyobj.mag = 30. - skyobj.holetype = 'OBJECT' - skyobj.objtype = 'SKY' - skyobj.primtarget = 0 - skyobj.sectarget = sdss_flagval('TTARGET','SKY') - skyobj.priority = 1 - - ;---------- - ; Select the guide stars, using the criteria outlines in sdss-spectro/955, - ; but changing the magnitude limit to go 0.5 mag fainter. - ; This is because stars can saturate at g=15.5 in good-seeing runs. - - psfmag = 22.5 - 2.5*alog10(objs.psfflux>0.01) ; no extinction-correction - psf_ugcolor = reform(psfmag[0,*] - psfmag[1,*]) - psf_grcolor = reform(psfmag[1,*] - psfmag[2,*]) - psf_ricolor = reform(psfmag[2,*] - psfmag[3,*]) - psf_izcolor = reform(psfmag[3,*] - psfmag[4,*]) - - iguide = where(psfmag[1,*] GT 13.5 AND psfmag[1,*] LT 16.0 $ - AND psf_grcolor GT 0.3 AND psf_grcolor LT 1.4 $ - AND psf_ricolor GT 0.0 AND psf_ricolor LT 0.7 $ - AND psf_izcolor GT -0.4 AND psf_izcolor LT 1.0 $ - AND objs.objc_type EQ 6, nguide) - iguide = iguide[ sdss_selectobj(objs[iguide], ancestry='single', $ - /trim, count=nguide) ] - guideobj = design_struct(nguide) - guideobj.objid = objs[iguide].objid - guideobj.ra = objs[iguide].ra - guideobj.dec = objs[iguide].dec - guideobj.mag = fibermag[*,iguide] - guideobj.holetype = 'GUIDE' - guideobj.objtype = 'NA' - guideobj.primtarget = 0 - guideobj.sectarget = sdss_flagval('TTARGET','GUIDE_STAR') - guideobj.priority = ((100. * psf_grcolor[iguide] / 1.4) > 1) < 100 - - ;---------- - ; Select the SPECTROPHOTO_STD targets, - ; using the criteria outlines in sdss-spectro/955, - ; but make the mag limit a little bit fainter. - - psfmag = 22.5 - 2.5*alog10(objs.psfflux>0.01) - objs.extinction ; correct! - psf_ugcolor = reform(psfmag[0,*] - psfmag[1,*]) - psf_grcolor = reform(psfmag[1,*] - psfmag[2,*]) - psf_ricolor = reform(psfmag[2,*] - psfmag[3,*]) - psf_izcolor = reform(psfmag[3,*] - psfmag[4,*]) - - ifstar = where(psfmag[1,*] GT 16.0 AND psfmag[1,*] LT 18.5 $ - AND psf_ugcolor GT 0.6 AND psf_ugcolor LT 1.2 $ - AND psf_grcolor GT 0.0 AND psf_grcolor LT 0.6 $ - AND psf_grcolor GT 0.75*psf_ugcolor-0.45 $ - AND objs.objc_type EQ 6, nfstar) - ifstar = ifstar[ sdss_selectobj(objs[ifstar], ancestry='single', $ - /trim, count=nfstar) ] - cdist = sqrt( (psf_ugcolor[ifstar] - 0.934)^2 $ - + (psf_grcolor[ifstar] - 0.280)^2 $ - + (psf_ricolor[ifstar] - 0.101)^2 $ - + (psf_izcolor[ifstar] - 0.013)^2 ) - fstarobj = design_struct(nfstar) - fstarobj.objid = objs[ifstar].objid - fstarobj.ra = objs[ifstar].ra - fstarobj.dec = objs[ifstar].dec - fstarobj.mag = fibermag[*,ifstar] - fstarobj.holetype = 'OBJECT' - fstarobj.objtype = 'SPECTROPHOTO_STD' -; Including the lines below would call some objects REDDEN_STD, -; but that may not be supported by the DESIGN_PLATE code. - iredden = where(psfmag[1,ifstar] GT 17.25, nredden) - if (nredden GT 0) then fstarobj[iredden].objtype = 'REDDEN_STD' - fstarobj.primtarget = 0 - fstarobj.sectarget = sdss_flagval('TTARGET',fstarobj.objtype) - fstarobj.priority = $ - (100. * (cdist - min(cdist)) / ((max(cdist) - min(cdist))>1)) > 1 - - ;---------- - ; Select the QSO targets - - iqso = where(psfmag[1,*] GT 17 AND psfmag[1,*] LT 22 $ - AND psf_ugcolor GT 0.40 AND psf_grcolor LT 0.20 $ - AND objs.fiberflux[1] LT objs.psfflux[1] $ - AND (qmaybe_moved EQ 0) $ -; AND ((psf_ugcolor GE 0.40 AND psf_ugcolor LE 0.75 AND psf_grcolor LT 0.5) $ -; OR (psf_ugcolor GE 0.75 AND psf_grcolor LT 0.45*psf_ugcolor-0.25) $ -; OR (psf_grcolor LT 0.20 AND psf_ugcolor GT 0.75)) $ -; AND psf_grcolor GT -0.8 AND psf_grcolor LT 0.7 $ - AND objs.objc_type EQ 6, nqso) - qsoobj = design_struct(nqso) - qsoobj.objid = objs[iqso].objid - qsoobj.ra = objs[iqso].ra - qsoobj.dec = objs[iqso].dec - qsoobj.mag = fibermag[*,iqso] - qsoobj.holetype = 'OBJECT' - qsoobj.objtype = 'QSO' - qsoobj.primtarget = sdss_flagval('TARGET','QSO_HIZ') - qsoobj.sectarget = 0 - qsoobj.priority = design_color_prioritize([ [psf_ugcolor[iqso]/3.], $ - [psf_grcolor[iqso]], [reform(psfmag[1,iqso]/50.)] ]) - -; Compare to the co-add catalogs -;varcat=mrdfits('/u/schlegel/varcat/varcat-ra30.fits',1) -;spherematch, qsoobj.ra, qsoobj.dec, varcat.ra, varcat.dec, 1./3600, $ -; i1, i2, d12 -;varmag = 22.5 - 2.5*alog10(varcat.modelflux_clip_mean>0.01) - varcat.extinction -;var_ugcolor = reform(varmag[0,*] - varmag[1,*]) -;var_grcolor = reform(varmag[1,*] - varmag[2,*]) -;splot, psf_ugcolor[iqso[i1]], psf_grcolor[iqso[i1]], ps=3 -;soplot, var_ugcolor[i2], var_grcolor[i2], ps=3, color='red' - - ;---------- - ; Select the LRG targets, and further trim to i(fiber) > 16 - - ilist = lrg_select_target(objs, /all) - ilrg = where(ilist GT 0 AND fibermag[3,*] GT 16, nlrg) - lrgobj = design_struct(nlrg) - lrgobj.objid = objs[ilrg].objid - lrgobj.ra = objs[ilrg].ra - lrgobj.dec = objs[ilrg].dec - lrgobj.mag = fibermag[*,ilrg] - lrgobj.holetype = 'OBJECT' - lrgobj.objtype = 'GALAXY' - lrgobj.primtarget = sdss_flagval('TARGET','GALAXY_RED') - lrgobj.sectarget = 0 - lrgobj.priority = ilist[ilrg] - - ;---------- - ; Read the existing plates, and lower priorities for existing spectra - - platelist, plist=plist - adist = djs_diff_angle(plist.ra, plist.dec, racen, deccen) - ikeep = where(adist LT 3. $ - AND strmatch(plist.status1d,'Done*') $ - AND (strmatch(plist.platequality,'good*') $ - OR strmatch(plist.platequality,'marginal*'))) - plist = plist[ikeep] - readspec, plist.plate, mjd=plist.mjd, zans=zans, tsobj=tsobj, /silent - indx = where(djs_diff_angle(zans.plug_ra, zans.plug_dec, racen, deccen) $ - LT 1.49 AND zans.zwarning EQ 0) - zans = zans[indx] - tsobj = tsobj[indx] - - sciobj = [qsoobj, lrgobj] - nsci = n_elements(sciobj) - spherematch, sciobj.ra, sciobj.dec, zans.plug_ra, zans.plug_dec, 1./3600, $ - i1, i2, d12 - qexist = bytarr(nsci) - if (i1[0] NE -1) then qexist[i1] = 1B - - ;---------- - ; Assign science targets to each plate - - ; Decide how many plates we need based upon the number of targets - ; not yet observed... - - maxtarget = 640 - nminsky - nstd ; Max science targets per plate - nplate = ceil((nsci - total(qexist)) / float(maxtarget)) - splog, 'Number of required plates = ', nplate - qassign = lonarr(nplate,nsci) ; Set to 1 wherever a target is assigned - - ; Assign science targets one at a time, starting with those not yet observed - ; We loop over each object in a random order, then over each plate randomly - iseed = 123456 - irandom = sort(randomu(iseed, nsci) + qexist) - for i=0L, nsci-1L do begin - porder = sort(randomu(iseed+i, nplate)) - qadd = 0B - for j=0L, nplate-1L do begin - ; Try putting object number irandom[i] on plate porder[j] - if (total(qassign[porder[j],*]) LT maxtarget AND qadd EQ 0) then begin - indx = where(qassign[porder[j],*], ct) - if (ct EQ 0) then qadd = 1B $ - else qadd = min(djs_diff_angle(sciobj[irandom[i]].ra, $ - sciobj[irandom[i]].dec, sciobj[indx].ra, sciobj[indx].dec)) $ - GT 55./3600 - qassign[porder[j],irandom[i]] = qadd - endif - endfor - endfor - - splog, 'Number of SKY fibers = ', nsky - splog, 'Number of GUIDE stars = ', nguide - splog, 'Number of F stars = ', nfstar - splog, 'Number of QSO targets = ', nqso - splog, 'Number of LRG targets = ', nlrg - - splog, 'Number of objects targetted = ', $ - long(total(total(qassign,1) NE 0)) - splog, 'Number of objects not targetted = ', $ - long(total(total(qassign,1) EQ 0)) - splog, 'Number of unobserved objects not targetted = ', $ - long(total(qexist EQ 0 AND total(qassign,1) EQ 0)) - splog, 'Number of observed objects not targetted = ', $ - long(total(qexist EQ 1 AND total(qassign,1) EQ 0)) - splog, 'Number of observed objects targetted = ', $ - long(total(qexist EQ 1 AND total(qassign,1) EQ 1)) - - ;---------- - ; Create the plug-map files - - for iplate=0L, nplate-1L do begin - splog, 'Generating plate number = ', platenum+iplate - allobj = [skyobj, guideobj, fstarobj, sciobj[where(qassign[iplate,*])]] - design_plate, allobj, racen=racen, deccen=deccen, $ - tilenum=tilenum+iplate, platenum=platenum+iplate, $ - nstd=nstd, nminsky=nminsky -; simple_plate, allobj, racen=racen, deccen=deccen, $ -; tilenum=tilenum+iplate, platenum=platenum+iplate - - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/design_starstruct.pro b/pro/plate/design_starstruct.pro deleted file mode 100644 index bff26f489..000000000 --- a/pro/plate/design_starstruct.pro +++ /dev/null @@ -1,22 +0,0 @@ - -;------------------------------------------------------------------------------ -function design_starstruct, num - - result = create_struct( $ - name = 'STARDATA', $ - 'ra' , 0.d, $ - 'dec' , 0.d, $ - 'mag' , fltarr(5), $ - 'holetype' , '', $ - 'objtype' , '', $ - 'priority' , 0L, $ - 'primtarget', 0L, $ - 'sectarget' , 0L, $ - 'tilenum' , 0L, $ - 'comments' , '' ) - if (keyword_set(num)) then result = replicate(result, num) - - return, result -end -;------------------------------------------------------------------------------ - diff --git a/pro/plate/design_taurus.pro b/pro/plate/design_taurus.pro deleted file mode 100644 index 25e516f0d..000000000 --- a/pro/plate/design_taurus.pro +++ /dev/null @@ -1,302 +0,0 @@ -; Code to design reddening plates from the Taurus + Orion runs. -;------------------------------------------------------------------------------ -function design_taurus_add, alldata, objs, $ - holetype=holetype, objtype=objtype, $ - primtarget=primtarget, sectarget=sectarget, priority=priority - - ;---------- - ; Create blank output structure - - blankdat = create_struct( $ - 'OBJID' , lonarr(5), $ - 'HOLETYPE' , '', $ - 'RA' , 0.d0, $ - 'DEC' , 0.d0, $ - 'MAG' , fltarr(5), $ - 'OBJTYPE' , '', $ - 'PRIORITY' , 0L, $ - 'PRIMTARGET', 0L, $ - 'SECTARGET' , 0L) - - appdata = replicate(blankdat, n_elements(objs)) - appdata.objid[0] = objs.run - appdata.objid[1] = objs.rerun - appdata.objid[2] = objs.camcol - appdata.objid[3] = objs.field - appdata.objid[4] = objs.id - appdata.holetype = holetype - appdata.mag = objs.fibercounts - appdata.objtype = objtype - appdata.ra = objs.ra[2] - appdata.dec = objs.dec[2] - appdata.priority = priority - appdata.primtarget = primtarget - appdata.sectarget = sectarget - - if (NOT keyword_set(alldata)) then return, appdata $ - else return, [alldata, appdata] -end - -;------------------------------------------------------------------------------ -pro design_taurus, designnum - - splog, file='design_taurus.log', /append - - ;---------- - ; Call this routine for all designs if DESIGNNUM not specified - - if (NOT keyword_set(designnum)) then begin - t0 = systime(1) - for i=1, 4 do design_taurus, i - splog, 'Total time for all plates = ', systime(1) - t0, ' sec' - return - endif - - t1 = systime(1) - - if (designnum EQ 1) then begin - ; Taurus runs South->North - runvec = [3511, 3557] - racen = [65.15, 65.15, 65.15, 65.15] -; deccen = [26.30, 28.65, 31.00, 33.35] - deccen = [26.80, 28.95, 31.10, 33.25] - tileid = 9361 + lindgen(4) - plateid = 1250 + lindgen(4) - endif else if (designnum EQ 2) then begin - ; Taurus runs West->East - runvec = [3512, 3559] - racen = [64.00, 66.50, 69.00, 71.50, 74.00] - deccen = [25.52, 25.53, 25.50, 25.41, 25.30] - tileid = 9365 + lindgen(5) - plateid = 1254 + lindgen(5) - endif else if (designnum EQ 3) then begin - ; Orion run on equator (and crossing it!) - runvec = [307] - fstart = [110] - fend = [186] - racen = [94.9, 97.4, 99.9, 102.4] - deccen = 0.40 + racen*0 - tileid = 9370 + lindgen(4) - plateid = 1259 + lindgen(4) - endif else if (designnum EQ 4) then begin - ; Orion run on equator - runvec = [308] - fstart = [27] - fend = [87] - racen = [112.0, 114.5, 117.0] - deccen = 0.40 + racen*0 - tileid = 9374 + lindgen(3) - plateid = 1263 + lindgen(3) - endif else begin - message, 'Unknown DESIGNNUM' - endelse - nplate = n_elements(racen) - rerun = 125 - - ;---------- - ; The colors of BD+17 are from Hogg in sdss-calib/845. - - bd17color = [0.934, 0.280, 0.101, 0.013] - - ;---------- - ; Read in the fpObj files -- or read a previously saved file if it exists - - columns = ['ID', 'PARENT', 'OBJC_TYPE', 'OBJC_FLAGS', 'OBJC_FLAGS2', $ - 'ROWC', 'COLC', 'OBJC_ROWC', 'OBJC_COLC', 'AIRMASS', $ - 'PSFCOUNTS', 'PSFCOUNTSERR', $ - 'FIBERCOUNTS', 'FIBERCOUNTSERR', $ - 'COUNTS_MODEL', 'COUNTS_MODELERR', $ - 'RA', 'DEC' ] - - for irun=0, n_elements(runvec)-1 do begin - for camcol=1, 6 do begin - cachefile = string(runvec[irun], camcol, $ - format='("taurus-cache-",i6.6,"-",i1.1,".fits")') - objs1 = mrdfits(cachefile, 1) - if (keyword_set(objs1)) then begin - splog, 'Read previously-cached FITS file: ' + cachefile - endif else begin - splog, 'Generate cache FITS file: ' + cachefile - if (keyword_set(fstart)) then begin - fstart1 = fstart[irun] - fend1 = fend[irun] - endif else begin - fstart1 = sdss_fieldrange(runvec[irun], fend=fend1) - endelse - fieldnum = fstart1 + lindgen(fend1-fstart1+1) - objs1 = rdss_obj(runvec[irun], rerun, camcol, fieldnum, $ - /calib, /coord, /fieldnum, $ - columns=columns) - indx = objc_select(objs1, /trim) ; Preliminary trimming - objs1 = objs1[indx] -; qfaint = objs1.fibercounts[1] GT 24 $ -; AND objs1.fibercounts[2] GT 24 $ -; AND objs1.fibercounts[3] GT 24 -; indx = where(objs1.fibercounts[1] LT 19.5 $ -; OR objs1.fibercounts[2] LT 19.5 $ -; OR objs1.fibercounts[3] LT 19.5 $ -; OR qfaint $ -; OR objs1.objc_type EQ 8) ; Bright object or a blank sky position -; objs1 = objs1[indx] - mwrfits_chunks, objs1, cachefile, /create, chunksize=10000L - endelse - if (NOT keyword_set(objs)) then objs = objs1 $ - else objs = [objs, objs1] - endfor - endfor - - ;---------- - ; Compute the SFD extinction - - red_fac = [5.155, 3.793, 2.751, 2.086, 1.479] - - splog, 'Reading SFD reddening maps...' - euler, objs.ra[2], objs.dec[2], ll, bb, 1 - sfdval = red_fac # dust_getval(ll, bb, /interp, /noloop) - sfdval = sfdval * 0.75 ; Fudge factor!!! - -; splog, 'Reading blue-edge reddening maps...' -; junk = red_fac # rdss_blue_edge(objs.run, objs.camcol, objs.field, $ -; rerun=objs.rerun) / (red_fac[2] - red_fac[3]) - - ;---------- - ; Classify each object - - print, 'Classifying objects...' - - ; These are all the flags we may be interested in... - bflag = djs_int2bin(ulong(objs.objc_flags), ndigit=32) - qblend = (bflag[3,*] EQ 1 AND bflag[6,*] EQ 0)[*] - qbright = (bflag[1,*])[*] - qchild = (bflag[4,*])[*] - qsingle = ((qblend EQ 0) AND (qbright EQ 0) AND (qchild EQ 0))[*] - - ; Ask whether the detection is good in each of the following bands - qgoodmag = objs.fibercountserr LT 0.10 AND objs.fibercountserr GT 0 - qnot2bright = objs.fibercounts[1] GT 15.0 $ - AND objs.fibercounts[2] GT 15.0 $ - AND objs.fibercounts[3] GT 15.0 - - ; The following objects will probably be z-band-only detections, - ; mostly cosmics. Use these as sky positions if there are not enough. - qfaint = objs.fibercounts[0] GT 24 $ - AND objs.fibercounts[1] GT 24 $ - AND objs.fibercounts[2] GT 24 $ - AND objs.fibercounts[3] GT 24 - - qstellar = objs.objc_type EQ 6 - qfuzzy = objs.objc_type EQ 3 - starcolor = objs.psfcounts[0:3] - objs.psfcounts[1:4] - fuzzcolor = objs.counts_model[0:3] - objs.counts_model[1:4] - sfdcolor = sfdval[0:3,*] - sfdval[1:4,*] - bd17diff = transpose(sqrt( $ - (starcolor[1,*] - sfdcolor[1,*] - bd17color[1])^2 $ - + (starcolor[2,*] - sfdcolor[2,*] - bd17color[2])^2 )) - ri_edgedist = transpose(starcolor[2,*] - sfdcolor[2,*] - 0.10) - ri_dered = transpose(starcolor[2,*] - sfdcolor[2,*]) - iz_dered = transpose(starcolor[3,*] - sfdcolor[3,*]) - rz_dered = transpose(starcolor[2,*] - sfdcolor[3,*]) - - qguide = qstellar AND qsingle AND objs.psfcounts[2] LT 16.5 $ - AND (qgoodmag[1,*])[*] AND (qgoodmag[2,*])[*] AND (qgoodmag[3,*])[*] $ - AND qnot2bright AND ri_edgedist GT -0.25 AND ri_edgedist LT 0.50 - qsky = objs.objc_type EQ 8 - qsphoto = qstellar AND qsingle AND (total(qgoodmag,1) EQ 5) $ - AND objs.psfcounts[2] LT 17.5 $ - AND objs.psfcounts[3] LT 17.5 $ - AND qnot2bright AND bd17diff LT 0.20 - qgalaxy = qfuzzy AND qnot2bright $ - AND objs.counts_model[2] LT 19.0 $ - AND objs.counts_model[3] LT 19.0 $ - AND (qgoodmag[2,*])[*] AND (qgoodmag[3,*])[*] - qbluestar = qstellar AND (ri_edgedist LT 0.10) $ - AND qnot2bright AND objs.psfcounts[2] LT 17.0 $ - AND objs.psfcounts[3] LT 17.0 $ - AND (qgoodmag[2,*])[*] AND (qgoodmag[3,*])[*] - qredstar = qnot2bright AND objs.psfcounts[3] LT 18.0 $ - AND ri_dered GT 1.25 AND iz_dered GT 0.85 $ - AND (qgoodmag[3,*])[*] AND (qgoodmag[4,*])[*] - - ;---------- - ; Loop over each plate center - - for iplate=0, nplate-1 do begin - splog, 'Designing plate number ', plateid[iplate] - - adist = djs_diff_angle(objs.ra[2], objs.dec[2], $ - racen[iplate], deccen[iplate]) - iguide = where(qguide AND adist LT 1.485, nguide) - isky = where(qsky AND adist LT 1.485, nsky) - if (nsky LT 400) then begin - splog, 'Too few Lupton sky fibers = ', nsky - isky = where((qsky OR qfaint) AND adist LT 1.485, nsky) - endif - isphoto = where(qsphoto AND adist LT 1.485, nsphoto) - igalaxy = where(qgalaxy AND adist LT 1.485, ngalaxy) - ibluestar = where(qbluestar AND adist LT 1.485, nbluestar) - iredstar = where(qredstar AND adist LT 1.485, nredstar) - - splog, 'Possible NSKY = ', nsky - splog, 'Possible NGUIDE = ', nguide - splog, 'Possible NSPHOTO = ', nsphoto - splog, 'Possible NBLUESTAR = ', nbluestar - splog, 'Possible NREDSTAR = ', nredstar - - alldata = 0 - randompriority = long(100 * randomu(43265L, n_elements(objs))) > 1 - - alldata = design_taurus_add(alldata, objs[iguide], $ - holetype='GUIDE', objtype='NA', $ - priority=randompriority[iguide], primtarget=0, sectarget=64L) - - alldata = design_taurus_add(alldata, objs[isky], $ - holetype='OBJECT', objtype='SKY', $ - priority=randompriority[isky], primtarget=0, sectarget=16L) - - alldata = design_taurus_add(alldata, objs[isphoto], $ - holetype='OBJECT', objtype='SPECTROPHOTO_STD', $ - priority=randompriority[isphoto], primtarget=0, sectarget=32L) - - ; Select up to the 100 brightest galaxies (only), and give them - ; a very high priority. - if (ngalaxy GT 0) then begin - igalaxy = igalaxy[(sort(objs[igalaxy].fibercounts[2]))[0:((ngalaxy-1)<99)]] - alldata = design_taurus_add(alldata, objs[igalaxy], $ - holetype='OBJECT', objtype='GALAXY', $ - priority=1000L, primtarget=2L^6, sectarget=0) - endif - - ; Select up to the 50 reddest red stars in r-z (only), and give them - ; a very high priority. - if (nredstar GT 0) then begin - iredstar = iredstar[(reverse(sort(rz_dered[iredstar])))[0:((nredstar-1)<49)]] - alldata = design_taurus_add(alldata, objs[iredstar], $ - holetype='OBJECT', objtype='SERENDIPITY_MANUAL', $ - priority=900L, primtarget=2L^24, sectarget=0) - endif - -;i = where(qstellar AND objs.psfcounts[2] LT 19) -;splot, ri_edgedist[i], objs[i].psfcounts[3], ps=3,xr=[-3,3] -;soplot, ri_edgedist[ibluestar], objs[ibluestar].psfcounts[3], ps=3,color='red' - ; Prioritize the blue stars by how blue they are - thispriority = (((2 - ri_edgedist[ibluestar]) * 100) < 999) > 1 - alldata = design_taurus_add(alldata, objs[ibluestar], $ - holetype='OBJECT', objtype='SERENDIPITY_MANUAL', $ - priority=thispriority, primtarget=2L^24, sectarget=0) - - ; Select up to 150 sky fibers if possible - nminsky = long(0.70*nsky) < 150 - design_plate, alldata, racen=racen[iplate], deccen=deccen[iplate], $ - tilenum=tileid[iplate], platenum=plateid[iplate], $ - nstd=32, nminsky=nminsky, nextra=50, airtemp=-2.0, ngtarg=4, /southern -; print, 'Press a key to continue...' -; junk = get_kbrd(1) - - endfor - - splog, 'Time for this plate = ', systime(1) - t1, ' sec' - splog, /close - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/holesize.pro b/pro/plate/holesize.pro deleted file mode 100644 index 1e59ecaf6..000000000 --- a/pro/plate/holesize.pro +++ /dev/null @@ -1,24 +0,0 @@ -;+ -; NAME: -; holesize -; PURPOSE: -; Returns size in deg of a hole in an SDSS plate -; CALLING SEQUENCE: -; sz= holesize([/guide]) -; OPTIONAL KEYWORDS: -; guide - Return value for a guide hole -; COMMENTS: -; Returns 55./3600. for a normal hole, 175/3600. for a guide -; REVISION HISTORY: -; 26-Oct-2006 MRB, NYU -;- -;------------------------------------------------------------------------------ -function holesize, guide=guide - -holesize=55./3600. -if(keyword_set(guide)) then holesize=175./3600. - -return, holesize - -end - diff --git a/pro/plate/n1817.j11 b/pro/plate/n1817.j11 deleted file mode 100644 index a56415d40..000000000 --- a/pro/plate/n1817.j11 +++ /dev/null @@ -1,538 +0,0 @@ -# j>0&&opt&&dist<1.5&&mcsel==0&&j<11&&j>8&&ran0&dist<1.5&&mcsel -# _sra _sdec _b _r _j _h _k _flag -# -77.587014 16.241776 13.500 11.700 10.154 9.619 9.468 U -77.589162 16.254807 14.000 12.400 10.415 9.835 9.705 U -77.593138 16.981016 15.600 14.000 11.961 11.419 11.279 U -77.596534 16.455093 12.600 11.200 9.704 9.200 9.033 U -77.598237 16.358644 15.300 13.800 12.569 12.207 12.104 U -77.599815 16.886292 16.200 15.200 14.152 13.873 13.860 U -77.601067 16.980988 15.000 13.800 12.609 12.297 12.238 U -77.606232 16.637274 15.500 14.100 12.779 12.409 12.231 U -77.608980 16.593901 16.100 14.900 13.769 13.461 13.360 U -77.610171 16.388519 12.900 12.600 11.545 11.339 11.222 U -77.612060 16.487858 10.570 10.290 9.587 9.520 9.416 T -77.621853 16.778517 11.400 11.100 9.656 9.354 9.251 U -77.624687 16.704691 14.700 12.900 10.874 10.268 10.156 U -77.626686 16.639627 14.700 13.100 11.271 10.741 10.596 U -77.635863 16.960121 15.300 14.300 12.793 12.529 12.406 U -77.637176 16.764771 12.600 12.100 10.711 10.453 10.347 U -77.641876 16.759754 14.600 12.800 11.271 10.735 10.611 U -77.642193 16.402149 15.600 13.300 11.603 10.983 10.816 U -77.645779 16.762421 14.900 13.800 12.839 12.597 12.554 U -77.647164 16.535849 15.200 13.700 12.448 12.092 11.992 U -77.649436 17.136602 13.900 11.800 9.164 8.372 8.155 U -77.653684 16.786947 14.400 12.800 10.778 10.152 10.001 U -77.657698 17.150536 12.300 12.000 10.491 10.237 10.165 U -77.661276 16.226967 15.000 13.600 11.440 10.938 10.798 U -77.663400 17.142126 14.900 13.300 11.014 10.498 10.327 U -77.667112 16.696552 12.600 12.000 10.668 10.414 10.307 U -77.667933 16.454958 12.300 12.600 11.863 11.795 11.759 U -77.671177 16.512190 -999.000 -999.000 8.209 7.468 7.246 -999 -77.673641 16.828579 11.810 11.020 8.666 8.144 7.948 T -77.673876 16.731562 15.500 14.100 12.853 12.535 12.499 U -77.673963 16.445387 12.900 12.600 11.387 11.219 11.144 U -77.676377 17.089766 15.500 14.600 13.238 13.103 12.887 U -77.677252 16.769445 13.500 11.400 9.389 8.632 8.421 U -77.683716 16.492374 10.230 8.980 6.774 6.321 6.157 T -77.686227 16.561659 11.530 10.320 8.121 7.619 7.485 T -77.686873 17.054350 13.500 13.500 12.338 12.267 12.180 U -77.686986 16.702372 14.600 13.800 12.320 12.059 11.976 U -77.692220 16.259333 14.900 14.100 12.288 11.950 11.913 U -77.693382 16.680334 15.300 14.200 13.300 13.129 13.019 U -77.695125 16.866966 13.300 11.700 9.785 9.198 9.072 U -77.695200 16.743984 14.400 12.000 9.979 9.280 9.126 U -77.695549 16.472382 13.500 12.400 9.167 8.382 8.241 U -77.700824 16.477783 14.000 12.600 10.014 9.473 9.335 U -77.702173 16.820889 12.700 12.100 10.261 9.851 9.702 U -77.704469 16.461706 14.200 12.800 11.251 10.838 10.707 U -77.704495 16.304192 13.100 12.600 11.605 11.257 11.079 U -77.705040 16.751602 15.300 14.100 13.264 13.059 12.997 U -77.705652 16.926132 14.600 14.100 12.822 12.657 12.552 U -77.707135 16.650782 14.900 14.200 13.192 13.017 12.996 U -77.708592 16.879162 15.000 13.100 10.672 9.927 9.764 U -77.713134 16.505451 14.400 13.100 11.924 11.542 11.452 U -77.715520 16.808123 15.800 14.600 13.576 13.341 13.203 U -77.726725 16.898014 13.700 12.200 10.098 9.563 9.369 U -77.729141 16.378807 13.100 12.400 11.176 11.044 10.973 U -77.729251 16.494902 16.000 14.700 13.431 13.173 13.096 U -77.731093 16.969627 13.500 11.300 8.821 7.998 7.690 U -77.731259 17.045286 13.500 13.200 11.725 11.535 11.419 U -77.734243 16.911503 15.800 15.100 13.847 13.670 13.492 U -77.736053 17.025579 14.400 13.700 12.447 12.175 12.102 U -77.738750 16.332251 15.000 13.700 12.127 11.773 11.715 U -77.739496 16.302454 10.930 10.480 9.682 9.585 9.577 T -77.741471 16.323084 15.200 13.600 11.339 10.700 10.484 U -77.751890 16.436569 14.600 13.600 12.272 11.988 11.878 U -77.752829 16.492447 12.700 12.600 11.649 11.560 11.485 U -77.754508 16.762291 15.200 13.600 12.086 11.745 11.626 U -77.755591 16.404852 15.500 14.300 12.952 12.670 12.567 U -77.757709 16.681437 15.200 14.200 12.995 12.756 12.605 U -77.760373 16.844820 12.900 12.900 11.680 11.488 11.356 U -77.765864 16.773010 15.000 14.000 12.257 12.009 11.855 U -77.767200 16.284037 12.300 11.100 8.919 8.353 8.158 U -77.768876 16.966974 13.300 13.100 11.886 11.754 11.611 U -77.770233 17.113625 15.000 14.100 12.557 12.247 12.134 U -77.771993 16.625740 15.600 14.600 13.314 13.094 12.941 U -77.773593 16.695210 13.700 13.200 12.309 12.191 12.115 U -77.775885 16.865454 14.200 12.600 10.631 10.075 9.921 U -77.776160 16.476572 15.300 14.000 12.584 12.338 12.266 U -77.777867 16.365768 11.840 10.330 7.898 7.370 7.223 T -77.777954 16.303268 14.600 13.600 12.342 12.114 12.005 U -77.779395 16.436056 12.600 11.700 10.453 9.957 9.827 U -77.785385 16.649792 15.300 14.700 13.399 13.219 13.067 U -77.793749 16.594362 9.890 9.700 9.367 9.307 9.255 T -77.793837 16.990807 15.000 13.600 12.106 11.768 11.697 U -77.794764 16.444790 13.900 12.000 10.256 9.737 9.609 U -77.795136 16.788448 16.200 15.200 13.963 13.672 13.541 U -77.796914 16.477789 15.200 13.600 12.006 11.542 11.431 U -77.799164 16.780312 14.900 13.700 12.233 11.953 11.878 U -77.800074 16.618301 14.400 13.600 12.089 11.806 11.721 U -77.801783 16.652723 13.500 12.800 11.502 11.274 11.153 U -77.805721 16.925274 13.300 12.800 11.313 11.109 11.019 U -77.807307 16.684109 11.800 11.600 10.869 10.737 10.689 U -77.807968 16.671989 15.000 13.700 12.546 12.288 12.229 U -77.808516 16.700346 16.000 14.300 13.118 12.778 12.733 U -77.809066 17.126858 14.600 13.600 11.991 11.691 11.649 U -77.809824 17.065084 15.600 14.500 13.090 12.822 12.728 U -77.813690 16.987026 15.700 14.600 13.328 13.021 12.927 U -77.814969 16.773188 14.200 12.500 10.541 9.996 9.826 U -77.816221 16.537455 13.300 13.100 12.405 12.329 12.249 U -77.817517 17.121782 14.600 13.700 12.203 11.925 11.854 U -77.819233 16.670626 14.200 13.300 12.204 12.049 11.949 U -77.819886 16.708607 14.700 13.600 12.410 12.138 12.028 U -77.820389 16.435261 15.500 14.500 13.387 13.112 13.009 U -77.820679 16.540733 13.900 12.900 11.536 11.218 11.141 U -77.822806 16.362885 13.300 13.500 12.659 12.649 12.567 U -77.827602 16.677231 14.200 12.900 11.686 11.429 11.335 U -77.828450 16.719511 15.300 14.100 12.814 12.475 12.412 U -77.829964 17.182606 14.400 13.300 11.627 11.288 11.183 U -77.831357 16.766266 13.100 12.500 10.970 10.718 10.625 U -77.838356 16.846043 15.000 14.100 12.932 12.795 12.717 U -77.843068 16.899120 16.000 15.100 13.786 13.552 13.410 U -77.845791 16.455856 14.400 13.100 11.964 11.677 11.608 U -77.848252 16.611919 15.000 13.600 12.375 12.079 12.000 U -77.851941 16.418562 12.300 11.800 10.687 10.462 10.365 U -77.855160 17.132198 15.600 14.100 12.786 12.508 12.395 U -77.859710 16.206640 14.900 14.000 12.572 12.263 12.155 U -77.864797 16.784618 14.200 12.400 10.654 10.124 9.981 U -77.866700 16.605482 15.200 14.200 13.129 12.962 12.857 U -77.869522 17.185150 14.700 14.000 12.692 12.420 12.363 U -77.874828 16.360493 13.700 12.400 12.636 12.329 12.219 U -77.877719 16.573317 13.300 12.600 12.765 12.649 12.541 U -77.879037 16.417610 15.300 14.600 14.055 14.095 14.075 U -77.879979 16.337282 15.500 14.000 12.563 12.219 12.118 U -77.882017 16.944286 12.700 12.800 12.270 12.244 12.204 U -77.891378 16.918831 14.200 13.500 12.023 11.699 11.655 U -77.893122 16.573298 15.700 14.600 13.484 13.213 13.112 U -77.897105 16.892645 14.900 14.000 12.559 12.347 12.240 U -77.898958 16.918587 15.300 13.500 11.511 10.986 10.827 U -77.902114 16.641142 12.300 12.200 10.885 10.680 10.592 U -77.903842 16.709360 15.500 14.200 13.301 13.122 13.006 U -77.905889 16.390308 15.000 13.500 12.235 11.917 11.805 U -77.913827 16.669283 13.900 12.200 10.326 9.839 9.761 U -77.918307 16.803705 12.400 12.000 11.178 11.112 11.073 U -77.918360 16.526709 15.700 14.100 12.717 12.292 12.228 U -77.918561 17.002607 15.200 13.300 11.283 10.686 10.513 U -77.924472 16.668756 16.200 14.300 13.009 12.604 12.534 U -77.926838 17.000454 14.000 13.200 11.563 11.208 11.125 U -77.930101 16.710972 12.100 11.700 10.431 10.319 10.250 U -77.933211 16.909418 15.700 14.700 13.379 13.140 13.038 U -77.933429 16.932034 14.900 13.100 11.187 10.644 10.494 U -77.934506 16.441210 14.900 13.100 11.144 10.651 10.544 U -77.937268 17.140533 15.800 14.300 12.330 11.901 11.788 U -77.938542 16.756008 16.200 14.800 13.225 12.870 12.802 U -77.940234 16.547056 15.000 13.500 12.236 11.947 11.875 U -77.942083 16.890547 14.000 13.100 12.071 11.861 11.842 U -77.944977 16.910215 14.200 13.500 11.973 11.739 11.692 U -77.945070 16.975170 15.000 13.700 12.029 11.630 11.574 U -77.947715 16.833323 12.600 10.700 7.361 6.477 6.222 U -77.952321 16.686138 16.400 14.900 13.753 13.511 13.380 U -77.953005 16.563353 13.500 12.500 11.155 10.921 10.814 U -77.957982 16.844984 13.900 12.000 10.319 9.821 9.674 U -77.958044 16.671261 15.500 14.700 13.294 13.064 13.019 U -77.958198 16.585400 14.200 13.500 12.481 12.341 12.277 U -77.958278 16.450981 15.500 14.300 13.192 12.978 12.857 U -77.960105 17.050753 14.700 14.100 12.406 12.187 12.098 U -77.961967 16.571068 14.000 12.400 10.015 9.411 9.290 U -77.962583 16.632580 13.100 12.200 10.926 10.626 10.542 U -77.963063 16.769135 14.000 13.300 11.886 11.676 11.600 U -77.964582 16.525681 11.900 11.400 10.319 10.091 10.018 U -77.966377 16.679407 14.000 12.100 10.441 9.939 9.777 U -77.973310 16.333050 15.500 14.300 13.411 13.232 13.119 U -77.976371 16.442421 15.200 14.500 13.443 13.236 13.132 U -77.989210 16.742380 14.900 14.100 12.741 12.611 12.573 U -77.989259 17.139671 15.200 14.200 12.720 12.487 12.364 U -77.992935 16.537319 16.300 14.900 13.709 13.484 13.359 U -77.995204 17.090277 14.000 13.800 12.223 12.030 11.928 U -77.997172 16.563297 15.200 13.300 11.393 10.820 10.746 U -77.998066 16.712381 14.200 13.300 12.346 12.274 12.236 U -77.998710 17.095194 13.500 11.700 9.932 9.355 9.201 U -77.999390 17.045073 15.300 14.100 12.495 12.165 12.054 U -78.005338 16.585283 14.200 13.600 12.676 12.586 12.498 U -78.005657 16.945301 14.700 12.600 9.906 9.178 8.920 U -78.005908 16.745686 12.600 12.600 12.757 12.642 12.586 U -78.006689 17.136816 15.500 14.200 12.711 12.476 12.373 U -78.007475 16.743103 14.000 13.600 12.766 12.632 12.576 U -78.008573 16.881100 14.000 13.300 11.729 11.518 11.438 U -78.008678 17.130383 15.200 14.100 13.087 12.963 12.853 U -78.009538 16.840706 16.000 14.600 13.484 13.289 13.148 U -78.010531 16.774151 16.000 14.600 13.152 12.851 12.733 U -78.010966 16.664587 13.700 13.600 12.255 12.088 12.066 U -78.011250 16.652700 15.200 13.600 11.105 10.617 10.473 U -78.011727 16.707918 15.000 13.700 12.763 12.607 12.564 U -78.015740 16.967527 12.600 12.100 10.371 10.073 9.977 U -78.019100 16.674147 13.300 11.800 9.749 9.147 8.960 U -78.019973 16.717831 12.300 11.200 12.372 12.334 12.322 U -78.021677 16.790976 14.600 13.600 12.518 12.377 12.320 U -78.024072 16.658943 15.000 14.600 13.185 13.037 12.964 U -78.025239 16.650965 11.220 9.520 6.833 6.208 6.032 T -78.026096 16.637615 12.400 11.000 10.071 9.563 9.458 U -78.026693 16.413229 14.600 12.900 10.769 10.239 10.066 U -78.026826 16.566454 14.200 13.700 13.119 12.978 12.922 U -78.027130 16.745741 13.700 11.600 10.222 9.747 9.583 U -78.027214 16.948368 13.300 12.600 12.185 12.043 11.964 U -78.028231 16.628286 14.200 13.300 12.009 11.843 11.692 U -78.028683 16.642027 14.000 14.100 11.486 11.242 11.185 U -78.028713 16.322433 13.900 13.500 12.286 12.124 12.058 U -78.028831 16.219614 14.400 13.300 12.084 11.838 11.671 U -78.029580 16.598923 13.300 12.600 11.211 11.040 10.963 U -78.032062 16.610779 12.700 12.000 10.004 9.516 9.413 U -78.032238 16.296637 13.700 13.600 12.780 12.706 12.692 U -78.036104 16.346308 15.300 14.000 12.582 12.151 12.110 U -78.038529 16.657526 13.900 12.900 11.685 11.478 11.386 U -78.039404 17.119808 15.700 14.200 13.135 12.816 12.747 U -78.044301 16.295609 15.700 14.000 12.180 11.621 11.475 U -78.044458 16.641991 14.000 12.500 10.419 9.867 9.751 U -78.044921 16.335888 13.300 12.400 11.255 10.986 10.916 U -78.047238 17.094507 13.700 12.400 11.223 10.913 10.847 U -78.048870 16.246658 15.000 14.000 12.863 12.679 12.609 U -78.049195 16.742020 13.900 13.300 12.293 12.138 12.062 U -78.052210 16.788904 13.500 13.100 12.141 11.989 11.978 U -78.053332 16.591381 12.400 11.400 9.224 8.597 8.444 U -78.055061 16.605968 11.660 9.680 6.853 6.147 5.953 T -78.056444 16.633522 15.200 14.200 13.265 13.095 12.940 U -78.056835 17.017458 14.400 12.800 11.550 11.149 11.095 U -78.056856 16.709980 15.600 14.500 13.262 13.023 12.923 U -78.057040 17.107836 15.800 14.500 13.128 12.754 12.641 U -78.057671 16.341896 15.300 14.300 12.786 12.495 12.364 U -78.068444 16.806536 16.000 14.900 13.866 13.561 13.560 U -78.068767 16.329666 14.900 13.500 11.423 10.826 10.623 U -78.069223 16.684202 15.000 14.100 12.901 12.759 12.683 U -78.069868 16.579281 13.300 12.900 11.569 11.274 11.222 U -78.070761 17.099365 13.500 12.200 11.308 11.090 10.947 U -78.071038 16.721172 14.400 14.000 12.639 12.463 12.390 U -78.073175 16.645590 12.100 11.300 9.050 8.388 8.234 U -78.073469 16.794090 15.300 14.500 13.360 13.149 13.087 U -78.073727 16.756592 13.900 12.900 11.658 11.438 11.341 U -78.073906 17.173063 14.400 12.500 10.777 10.153 10.047 U -78.074127 16.729721 15.000 14.000 12.993 12.823 12.686 U -78.074825 16.829929 14.600 12.900 11.128 10.573 10.427 U -78.075576 16.234945 11.070 9.700 7.221 6.594 6.870 T -78.076895 16.545353 14.200 13.200 11.337 10.879 10.759 U -78.077207 16.696001 14.000 12.500 10.617 10.130 9.996 U -78.078750 17.089848 14.900 13.500 12.457 12.208 12.084 U -78.079576 16.775360 14.200 13.200 12.023 11.785 11.740 U -78.079736 16.642904 14.000 13.700 12.276 12.136 12.052 U -78.080779 16.680210 13.500 11.800 10.026 9.446 9.362 U -78.081855 16.906429 13.700 11.800 10.230 9.671 9.567 U -78.082147 16.671041 14.600 14.000 12.859 12.657 12.568 U -78.082922 16.783705 14.400 14.100 13.264 13.267 13.154 U -78.083254 16.574158 13.300 13.200 11.623 11.438 11.226 U -78.084532 16.945993 12.700 12.100 10.691 10.322 10.203 U -78.084671 16.518194 15.700 15.100 13.713 13.501 13.379 U -78.086203 16.320597 14.200 13.700 11.883 11.483 11.378 U -78.086471 16.610777 13.500 13.200 12.238 12.012 11.973 U -78.089361 16.980566 14.700 13.500 12.188 11.908 11.836 U -78.091396 16.298386 12.300 10.800 7.226 6.328 6.025 U -78.092682 16.679882 13.700 13.100 11.714 11.480 11.397 U -78.093921 16.733232 14.700 13.100 10.730 10.058 9.865 U -78.094107 16.635763 13.500 12.600 10.683 10.184 9.979 U -78.095021 16.502808 14.000 13.800 12.819 12.649 12.560 U -78.095936 16.975254 16.200 14.800 13.713 13.428 13.253 U -78.096017 16.566933 13.100 12.100 10.090 9.482 9.265 U -78.096952 17.161535 -999.000 -999.000 10.273 9.622 9.471 -999 -78.098141 16.815718 14.000 13.300 12.698 12.592 12.526 U -78.098592 16.469812 13.500 12.400 10.585 10.040 9.966 U -78.099324 16.807512 15.000 14.200 12.890 12.703 12.614 U -78.099841 16.752846 14.200 12.500 10.363 9.769 9.663 U -78.099964 16.626312 15.200 14.600 13.397 13.161 13.120 U -78.101717 16.490356 11.500 11.100 9.645 9.208 9.003 U -78.101828 16.491598 11.500 11.100 11.384 11.278 11.132 U -78.102491 16.202271 15.300 14.500 13.349 13.165 13.006 U -78.102517 16.725706 13.700 12.500 12.004 11.807 11.719 U -78.102725 16.596916 13.300 12.200 9.923 9.317 9.208 U -78.104789 16.695868 13.100 12.500 11.173 10.977 10.931 U -78.107984 16.981363 14.000 13.200 12.242 12.077 12.015 U -78.108323 16.796921 15.500 14.100 12.773 12.466 12.396 U -78.109253 16.598837 12.900 12.200 10.092 9.526 9.483 U -78.111162 16.731644 15.200 14.100 13.166 13.021 12.851 U -78.112427 16.545225 13.900 13.300 11.785 11.420 11.297 U -78.116139 16.668419 15.800 14.700 13.487 13.230 13.080 U -78.122204 16.598618 13.700 12.600 10.841 10.290 10.219 U -78.124493 16.699272 14.900 13.800 12.793 12.649 12.567 U -78.124806 16.214079 10.740 10.190 9.368 9.249 9.182 T -78.126552 16.691299 15.000 14.300 13.240 13.004 12.864 U -78.129226 16.823700 14.400 12.400 10.739 10.217 10.128 U -78.130240 16.791426 15.200 14.200 12.896 12.705 12.581 U -78.131078 16.770498 12.300 11.300 8.958 8.289 8.088 U -78.134394 16.760723 15.200 14.300 13.287 13.218 13.064 U -78.134520 16.747751 13.500 12.900 11.526 11.326 11.284 U -78.134740 16.660357 13.300 13.700 12.262 12.079 11.938 U -78.135711 16.666050 13.900 12.500 10.434 9.887 9.760 U -78.136670 16.893135 15.600 14.100 12.972 12.635 12.542 U -78.136714 16.580673 14.200 13.800 13.186 13.040 12.943 U -78.136855 16.473764 12.300 11.600 9.145 8.488 8.337 U -78.137893 16.697336 14.000 12.800 11.828 11.626 11.537 U -78.138211 16.407949 14.200 13.700 12.298 12.072 11.939 U -78.139757 16.869215 15.300 14.200 13.102 12.895 12.762 U -78.140461 16.722778 15.500 14.500 13.199 13.026 12.939 U -78.140616 16.981461 15.000 13.700 12.163 11.795 11.701 U -78.142483 16.727716 15.800 13.700 11.884 11.352 11.219 U -78.143731 16.771620 13.900 13.200 11.916 11.729 11.669 U -78.144441 16.561451 14.900 14.100 12.681 12.324 12.284 U -78.146364 16.762854 14.400 13.700 12.432 12.256 12.159 U -78.147448 16.712923 13.700 13.100 11.553 11.292 11.232 U -78.148420 16.637197 12.100 12.500 11.600 11.484 11.406 U -78.149436 16.948210 15.800 14.500 13.505 13.240 13.149 U -78.149867 16.724499 13.700 12.500 10.174 9.633 9.532 U -78.151985 17.133432 15.200 13.600 11.890 11.332 11.169 U -78.156440 16.729753 11.900 11.700 11.058 10.980 10.929 U -78.156930 16.875509 14.900 13.800 12.854 12.701 12.652 U -78.157610 16.884888 15.500 14.100 12.673 12.358 12.238 U -78.159470 16.797321 15.500 14.600 13.322 13.095 13.017 U -78.160134 16.706423 13.300 12.200 10.298 9.787 9.642 U -78.160220 16.581656 13.900 13.700 12.436 12.261 12.146 U -78.161292 16.462505 14.600 13.200 11.385 10.820 10.700 U -78.162030 17.029860 15.600 14.500 13.574 13.311 13.185 U -78.162559 16.684559 12.700 12.400 11.818 11.677 11.587 U -78.163107 16.486685 10.720 10.440 9.377 9.173 9.118 T -78.163231 16.287077 15.200 14.600 13.234 12.902 12.821 U -78.164193 16.803862 13.100 12.800 11.066 10.744 10.671 U -78.164950 16.769964 12.600 12.000 12.890 12.742 12.671 U -78.165735 16.371601 15.300 14.600 13.518 13.251 13.207 U -78.165847 16.416059 14.700 13.800 12.371 12.027 11.917 U -78.166822 16.353855 11.800 12.100 11.229 11.098 11.057 U -78.167106 16.768700 12.600 12.000 12.738 12.588 12.472 U -78.167107 17.173117 13.700 12.500 11.690 11.426 11.305 U -78.170020 16.700075 13.700 12.800 11.825 11.665 11.593 U -78.170067 16.757103 13.500 13.100 11.815 11.634 11.581 U -78.170938 16.262922 16.300 14.500 12.584 12.017 11.921 U -78.171057 16.695795 13.300 13.700 12.464 12.409 12.367 U -78.171220 17.183924 12.900 11.600 9.887 9.366 9.217 U -78.171538 16.582991 12.300 12.000 13.230 12.991 12.921 U -78.171763 16.584616 12.300 12.000 10.640 10.116 9.993 U -78.174946 16.575075 14.000 13.600 12.455 12.258 12.168 U -78.175235 16.809900 12.400 11.800 9.937 9.508 9.403 U -78.178408 16.695353 14.400 13.600 12.547 12.429 12.384 U -78.183383 16.619936 12.600 12.000 10.706 10.067 10.001 U -78.187563 16.628887 14.200 13.600 11.767 11.308 11.185 U -78.188175 16.579954 14.600 14.000 12.182 11.791 11.628 U -78.188407 16.587812 13.300 13.300 12.162 11.992 11.931 U -78.191548 16.403042 15.500 13.800 12.148 11.562 11.419 U -78.191868 16.692410 16.100 14.900 13.481 13.283 13.143 U -78.194112 16.729082 14.400 13.700 12.115 11.786 11.725 U -78.194999 16.777418 13.900 12.800 12.215 12.059 11.976 U -78.195140 16.644314 13.300 12.600 11.905 11.727 11.642 U -78.197358 16.809523 15.000 14.200 13.062 12.921 12.811 U -78.198833 16.771492 15.600 14.500 13.265 13.051 12.882 U -78.199911 16.989000 13.700 12.200 10.619 10.090 9.951 U -78.208271 16.733334 14.200 12.800 10.727 10.217 10.093 U -78.208719 16.680477 13.300 12.100 10.180 9.646 9.515 U -78.210628 16.744347 14.400 13.800 12.744 12.541 12.476 U -78.211706 16.800367 14.400 13.600 12.414 12.187 12.066 U -78.211986 16.482748 12.700 11.800 9.854 9.314 9.176 U -78.216335 16.634615 0.000 11.800 11.016 10.796 10.717 U -78.217186 17.137907 13.500 12.100 10.527 9.994 9.873 U -78.218572 16.730366 15.800 14.300 12.625 12.223 12.104 U -78.219100 16.379597 14.400 13.800 12.512 12.218 12.072 U -78.220039 16.622528 15.300 14.600 13.041 12.659 12.600 U -78.220297 16.600857 14.900 14.500 13.190 12.949 12.896 U -78.220904 16.752176 14.700 14.300 13.061 12.815 12.723 U -78.225123 16.949148 16.300 14.600 13.499 13.162 13.004 U -78.225838 16.546669 13.700 12.200 10.344 9.818 9.664 U -78.226424 16.879763 11.600 10.600 8.403 7.883 7.720 U -78.227040 16.427137 13.900 13.500 12.389 12.148 12.061 U -78.227871 16.725323 14.900 13.800 12.924 12.719 12.677 U -78.228116 17.057663 14.900 12.800 10.915 10.258 10.111 U -78.229309 17.120020 15.600 14.100 13.232 12.957 12.820 U -78.229713 16.955084 15.700 14.000 12.678 12.362 12.227 U -78.230857 16.798922 13.300 13.100 12.075 11.919 11.846 U -78.232597 16.801769 15.000 14.100 12.727 12.502 12.463 U -78.233447 16.364805 14.000 13.300 11.919 11.497 11.394 U -78.233973 16.737007 12.100 11.800 10.730 10.530 10.464 U -78.234445 16.881063 12.600 12.800 11.415 11.356 11.294 U -78.237341 16.732208 15.600 14.300 13.272 13.115 13.014 U -78.239075 16.562702 15.600 14.300 13.262 13.005 12.940 U -78.240691 16.592642 15.600 14.800 13.640 13.469 13.333 U -78.240990 16.707329 13.300 12.600 13.067 12.954 12.835 U -78.241385 16.363228 12.700 12.600 11.407 11.168 11.102 U -78.243691 17.173840 12.600 11.800 11.069 10.827 10.743 U -78.247141 16.680380 12.900 12.800 12.851 12.663 12.552 U -78.247489 16.996655 13.700 12.100 10.434 9.911 9.817 U -78.249035 16.680256 12.900 12.800 13.095 12.898 12.803 U -78.251608 16.453615 11.520 10.190 7.906 7.341 7.187 T -78.257529 16.687321 13.300 11.600 9.549 8.952 8.800 U -78.258607 17.050755 13.500 12.000 10.229 9.691 9.585 U -78.259376 16.655327 13.100 12.100 10.258 9.760 9.611 U -78.260751 16.379721 13.900 14.000 13.034 12.829 12.792 U -78.261421 16.623962 14.900 14.600 13.401 13.269 13.104 U -78.261548 16.871735 13.700 12.900 12.182 12.049 11.968 U -78.262508 16.803703 14.400 12.900 10.895 10.369 10.249 U -78.264945 16.967890 12.300 11.200 9.199 8.717 8.574 U -78.265181 16.670897 15.200 14.500 13.301 13.016 12.968 U -78.267468 16.991283 14.900 13.600 12.351 12.056 11.967 U -78.267887 16.907776 14.400 13.100 11.882 11.541 11.478 U -78.269881 17.117495 15.700 13.100 10.766 9.982 9.788 U -78.270965 17.010740 13.300 12.500 11.450 11.121 11.030 U -78.274550 16.912926 13.700 13.200 12.038 11.855 11.817 U -78.275951 16.520615 13.700 12.600 10.683 10.194 10.014 U -78.276188 17.123184 13.300 12.600 11.731 11.519 11.442 U -78.283565 16.675589 16.200 15.500 14.907 14.732 14.554 U -78.286065 16.463812 15.600 14.600 13.279 12.942 12.814 U -78.288286 16.753311 14.700 14.000 12.927 12.801 12.690 U -78.290671 16.695267 13.100 12.000 9.817 9.240 9.087 U -78.294294 16.799332 16.600 14.600 12.686 12.061 11.948 U -78.294930 16.738428 15.300 13.800 12.839 12.544 12.425 U -78.297351 16.930513 11.400 10.600 10.187 10.099 9.944 U -78.303526 17.140726 14.900 13.600 13.219 13.019 12.888 U -78.304762 16.715208 14.600 13.800 12.660 12.453 12.396 U -78.305797 16.985922 15.300 13.700 12.362 11.952 11.843 U -78.307289 17.081577 16.200 14.600 13.812 13.521 13.516 U -78.307620 16.556774 13.300 12.200 10.435 9.879 9.714 U -78.308015 16.373106 14.600 14.200 13.104 12.924 12.809 U -78.310203 16.894129 11.900 12.600 10.401 10.227 10.177 U -78.312939 16.502035 14.400 13.800 12.889 12.727 12.642 U -78.313302 16.667969 15.800 14.600 13.122 12.847 12.808 U -78.313615 16.884272 10.580 9.030 6.268 5.554 5.353 T -78.313625 17.087597 15.700 14.000 12.410 11.830 11.673 U -78.317849 16.966883 14.700 14.100 13.015 12.681 12.529 U -78.318209 16.713903 14.400 13.500 12.325 12.146 11.971 U -78.318663 16.669771 15.600 13.700 11.599 11.033 10.904 U -78.318768 16.508251 15.500 14.800 13.519 13.312 13.193 U -78.318970 16.398703 15.800 15.100 14.139 13.919 13.715 U -78.321861 16.736788 14.000 13.500 12.970 12.688 12.601 U -78.322396 16.364014 14.700 14.100 12.882 12.687 12.607 U -78.322413 16.895441 14.000 13.600 12.534 12.348 12.268 U -78.334400 16.791664 15.600 14.700 13.343 13.032 12.891 U -78.335555 16.842556 14.400 13.500 12.568 12.397 12.312 U -78.337808 16.676109 15.000 13.800 12.930 12.686 12.578 U -78.340047 16.493422 13.300 13.200 12.049 11.887 11.772 U -78.340685 17.175375 15.300 13.500 13.107 12.789 12.687 U -78.343260 16.942778 15.600 14.300 13.454 13.241 13.150 U -78.343454 16.871452 13.500 11.800 10.049 9.544 9.404 U -78.346512 16.815008 14.200 13.300 12.438 12.260 12.134 U -78.355143 16.639450 15.500 14.000 12.883 12.560 12.424 U -78.356807 16.819712 14.600 12.800 10.856 10.270 10.109 U -78.356842 17.137184 15.300 14.100 12.560 12.209 12.082 U -78.359948 16.732813 14.000 13.100 12.082 11.896 11.839 U -78.360501 16.681993 13.900 13.300 12.341 12.222 12.133 U -78.361781 16.407515 15.700 14.200 12.698 12.371 12.258 U -78.363649 16.292555 15.000 14.300 13.249 12.929 12.751 U -78.376549 16.761087 14.900 13.800 13.004 12.825 12.705 U -78.380565 17.063965 15.000 13.600 12.625 12.285 12.183 U -78.382680 16.645685 14.200 13.300 13.004 12.808 12.713 U -78.383007 16.482401 15.200 14.000 12.735 12.411 12.331 U -78.383407 16.658924 15.500 14.800 13.549 13.298 13.221 U -78.390348 16.842045 14.000 13.500 12.520 12.365 12.294 U -78.390580 17.009317 15.500 14.100 13.125 12.810 12.743 U -78.391269 16.691650 15.300 14.100 13.004 12.782 12.676 U -78.394972 16.575544 15.200 14.300 13.165 12.897 12.804 U -78.397914 16.891502 14.900 13.800 12.664 12.387 12.327 U -78.399230 16.680555 14.000 13.100 11.466 11.142 11.075 U -78.402415 16.427679 14.900 13.700 12.886 12.569 13.198 U -78.402720 16.635967 14.400 13.600 12.451 12.255 12.159 U -78.403843 17.096155 12.400 11.700 10.496 10.177 10.110 U -78.408892 16.637669 14.000 12.900 10.796 10.218 10.090 U -78.410377 16.719460 15.800 14.600 13.480 13.316 13.143 U -78.412904 16.565067 13.500 13.300 12.698 12.552 12.505 U -78.414354 16.888098 15.600 14.300 14.662 14.508 16.818 U -78.415323 16.654510 13.100 12.100 10.556 10.055 9.915 U -78.416051 16.657562 13.900 12.900 12.320 12.020 11.944 U -78.417086 16.742559 15.200 13.300 12.755 12.357 12.224 U -78.418468 17.051178 12.900 12.200 11.353 11.147 11.091 U -78.418616 16.908289 13.100 11.200 8.904 8.074 7.858 U -78.419382 17.080177 15.600 14.000 12.940 12.602 12.517 U -78.421593 16.681982 14.200 13.500 12.446 12.329 12.285 U -78.424050 16.724762 13.700 12.000 10.130 9.616 9.499 U -78.429289 16.822977 15.300 13.500 11.375 10.771 10.584 U -78.432848 17.029066 15.500 13.700 12.783 12.503 12.384 U -78.437395 16.907955 15.000 12.800 11.219 10.656 10.497 U -78.438111 16.488136 15.200 14.600 13.998 13.926 13.940 U -78.439317 16.434168 11.020 10.410 9.292 9.111 8.983 T -78.442314 17.053082 14.600 13.300 12.123 11.834 11.730 U -78.450826 16.869469 15.000 14.000 13.183 12.983 12.867 U -78.452092 16.884270 12.400 11.700 10.861 10.713 10.615 U -78.453428 16.733747 14.400 13.600 12.512 12.396 12.345 U -78.453511 16.983114 11.800 10.600 8.909 8.345 8.152 U -78.460799 16.943825 14.600 13.300 12.151 11.898 11.790 U -78.463689 16.533989 15.700 14.600 13.367 13.063 12.997 U -78.472233 16.876587 13.500 12.500 12.177 11.810 11.716 U -78.473201 16.440676 14.600 13.600 12.377 12.174 12.028 U -78.473791 16.752909 15.000 13.600 11.369 10.857 10.693 U -78.475182 16.433100 15.700 14.600 13.062 12.694 12.620 U -78.483540 16.990574 15.300 13.700 12.586 12.273 12.208 U -78.491816 17.181429 14.900 13.500 12.367 12.155 12.031 U -78.492521 16.778057 15.500 14.300 12.904 12.605 12.469 U -78.493800 17.077475 14.000 12.900 11.687 11.442 11.365 U -78.495446 16.720142 14.600 13.700 12.347 12.199 12.043 U -78.516255 16.789570 15.300 13.800 12.449 12.069 11.982 U -78.516367 16.815838 15.600 14.100 12.983 12.712 12.625 U -78.558898 16.911467 15.200 14.100 13.225 13.063 12.982 U diff --git a/pro/plate/n752.j10 b/pro/plate/n752.j10 deleted file mode 100644 index ad74fb300..000000000 --- a/pro/plate/n752.j10 +++ /dev/null @@ -1,241 +0,0 @@ -# j>0&&opt&&pdist<1.5&&j<10 -# _sra _sdec _b _r _j _h _k _flag -# -27.894240 37.522972 11.290 10.960 9.881 9.689 9.622 T -27.907189 37.598293 12.060 10.900 8.861 8.269 8.166 T -27.930546 37.602097 13.600 11.100 9.970 9.366 9.270 U -27.944386 38.184769 8.820 8.580 8.109 7.965 7.942 T -27.955718 37.882408 9.240 8.990 8.497 8.403 8.372 T -27.994607 37.776653 11.370 10.910 9.919 9.725 9.640 T -28.004876 37.934341 10.920 9.740 7.806 7.288 7.125 T -28.012567 37.802452 12.600 11.000 9.943 9.564 9.531 U -28.043408 37.938713 12.900 11.000 9.421 8.882 8.781 U -28.062359 37.186649 11.090 10.570 9.826 9.628 9.611 T -28.069168 37.758991 10.390 10.030 9.066 8.830 8.766 T -28.093076 37.429844 7.410 6.950 6.013 5.799 5.740 T -28.104861 38.172935 10.250 9.550 8.355 8.020 7.995 T -28.112865 37.582748 12.900 10.700 7.165 6.230 5.937 U -28.112898 37.372452 10.490 9.960 8.649 8.369 8.301 T -28.128474 36.902550 12.500 10.800 9.871 9.577 9.492 U -28.136303 37.984161 8.930 8.340 7.238 6.983 6.919 T -28.146118 36.940659 12.700 10.700 8.943 8.402 8.238 U -28.153511 37.114944 0.000 11.500 8.914 7.984 7.777 U -28.157159 38.547791 10.660 9.980 8.789 8.524 8.445 T -28.176731 38.612167 12.300 10.500 8.990 8.487 8.402 U -28.187624 36.779942 13.000 10.700 9.329 8.704 8.551 U -28.204320 37.687656 12.700 10.700 9.508 8.969 8.818 U -28.204750 36.849529 12.700 10.900 9.231 8.671 8.561 U -28.218120 37.541252 13.100 11.300 9.277 8.555 8.391 U -28.234953 36.819328 11.120 10.320 9.287 9.014 8.943 T -28.240222 38.323772 10.560 10.300 9.671 9.611 9.523 T -28.245759 36.753654 12.900 11.300 9.293 8.681 8.526 U -28.250185 37.606663 11.570 10.220 7.989 7.311 7.139 T -28.262794 37.134880 9.780 9.420 8.808 8.724 8.626 T -28.266182 37.221725 9.850 9.150 7.898 7.605 7.537 T -28.277805 36.833733 12.900 11.300 9.975 9.542 9.453 U -28.289564 37.727135 11.320 10.620 9.317 9.002 8.838 T -28.294621 37.321079 0.000 7.500 6.403 6.292 6.201 U -28.294785 37.320698 0.000 8.100 7.051 6.197 6.512 U -28.294966 37.320354 0.000 8.100 6.421 7.082 6.296 U -28.305211 37.626995 13.000 11.300 9.542 8.883 8.764 U -28.309783 37.859192 9.230 8.900 8.296 8.204 8.129 T -28.336861 37.852222 10.680 10.210 9.245 9.067 8.932 T -28.345128 37.755493 9.320 9.180 8.943 8.909 8.876 T -28.345197 37.134548 13.700 11.400 9.650 9.007 8.771 U -28.350185 38.419739 12.460 10.700 7.544 6.785 6.533 T -28.361626 37.603836 11.630 11.100 9.791 9.553 9.447 T -28.386173 37.708431 10.660 10.090 9.139 8.929 8.879 T -28.403114 36.548901 11.520 10.190 8.088 7.514 7.391 T -28.406120 38.717010 12.900 11.000 9.672 9.107 8.923 U -28.426823 38.229321 12.900 11.100 9.768 9.332 9.232 U -28.427255 38.290638 11.230 10.390 9.583 9.386 9.219 T -28.446732 37.351398 12.900 11.000 9.823 9.347 9.195 U -28.451560 37.463367 13.100 11.400 9.898 9.415 9.155 U -28.484884 38.814785 11.360 10.350 8.651 8.227 8.095 T -28.492856 38.817478 10.290 8.990 7.068 6.513 6.374 T -28.497196 38.319603 11.230 10.820 9.854 9.657 9.668 T -28.506843 38.520969 12.200 10.180 7.000 6.183 5.940 T -28.514125 38.972076 10.590 9.680 8.353 7.993 7.883 T -28.529743 36.864574 11.980 11.260 9.855 9.539 9.424 T -28.539034 38.646450 12.460 10.980 8.258 7.541 7.384 T -28.540042 36.671101 11.510 10.960 9.648 9.390 9.310 T -28.545315 36.564011 10.470 9.380 7.427 6.918 6.787 T -28.562778 37.099003 14.500 12.000 9.571 8.757 8.535 U -28.568068 38.259953 10.640 10.250 9.272 9.088 8.976 T -28.574626 38.321857 12.190 10.800 8.885 8.338 8.200 T -28.583921 38.394390 12.020 10.910 9.134 8.545 8.404 T -28.594620 38.580231 12.800 11.000 9.388 8.858 8.763 U -28.607407 37.566982 10.960 10.570 9.796 9.670 9.614 T -28.613118 36.438828 10.730 10.390 9.587 9.448 9.385 T -28.613943 37.225063 10.880 10.280 9.305 9.099 9.016 T -28.628761 36.578098 13.800 11.300 9.141 8.404 8.151 U -28.637023 38.882137 12.600 11.000 9.437 8.879 8.746 U -28.641579 38.624100 12.510 10.810 8.691 8.078 7.955 T -28.645152 38.820805 10.740 10.110 9.161 8.918 8.938 T -28.650175 38.335018 14.700 12.200 9.748 9.151 8.939 U -28.660424 37.005127 9.780 9.220 8.095 7.805 7.734 T -28.665262 38.195984 10.110 8.960 7.128 6.605 6.523 T -28.672786 38.023357 9.110 8.730 7.964 7.830 7.774 T -28.673048 38.191715 10.890 10.300 9.638 9.476 9.440 T -28.676840 37.600555 13.700 11.600 9.939 9.256 9.124 U -28.721023 38.285465 9.740 8.630 6.759 6.205 6.134 T -28.725742 38.112278 11.370 10.700 9.401 9.089 9.024 T -28.735000 37.443386 10.590 9.360 7.360 6.863 6.748 T -28.745526 37.558552 12.900 11.100 9.760 9.279 9.170 U -28.746357 36.960342 12.200 10.840 9.098 8.563 8.470 T -28.749640 37.386448 14.200 11.600 8.957 8.096 7.842 U -28.757262 36.884186 12.900 10.300 9.094 8.520 8.441 U -28.769303 38.374409 11.240 10.630 9.652 9.333 9.354 T -28.791886 36.807053 12.010 10.630 8.259 7.604 7.437 T -28.802616 37.837387 10.570 9.480 7.774 7.347 7.200 T -28.813742 37.842026 10.670 9.570 7.756 7.302 7.182 T -28.813819 37.241093 12.800 11.000 9.465 8.967 8.852 U -28.865250 37.998672 10.360 9.330 7.594 7.161 7.032 T -28.865390 37.567986 10.610 10.180 9.302 9.132 9.093 T -28.872038 37.840645 10.430 9.980 8.982 8.793 8.704 T -28.882052 38.650509 13.100 11.100 9.915 9.360 9.204 U -28.889463 39.078350 12.600 10.900 9.231 8.763 8.648 U -28.892654 38.267719 11.000 10.630 9.737 9.629 9.554 T -28.896935 36.929981 11.280 10.900 9.697 9.480 9.416 T -28.907114 37.266087 11.290 9.770 7.370 6.755 6.610 T -28.907931 38.965240 12.300 10.700 8.733 8.221 8.057 U -28.914021 37.881275 10.150 9.000 7.111 6.663 6.526 T -28.926635 37.631844 10.400 9.270 7.360 6.893 6.778 T -28.929345 36.336105 0.000 9.100 7.695 7.450 7.366 U -28.937247 38.139271 10.920 10.540 9.648 9.473 9.402 T -28.943671 37.478558 10.350 10.020 9.310 9.212 9.194 T -28.947550 37.707405 10.480 9.980 8.937 8.702 8.729 T -28.950765 38.780811 10.980 10.540 9.774 9.632 9.581 T -28.963383 38.824589 10.100 9.300 7.952 7.635 7.584 T -28.978178 37.866753 9.330 8.190 6.356 5.854 5.776 T -28.980646 38.042057 11.700 9.820 6.855 6.127 5.917 T -28.981392 37.475941 10.340 9.940 8.833 8.622 8.584 T -29.037313 37.664646 11.030 10.460 9.660 9.507 9.444 T -29.042899 37.750038 10.450 10.040 9.229 9.131 9.006 T -29.055362 38.691101 13.800 11.400 9.721 9.094 8.938 U -29.058145 37.784698 11.030 10.490 9.756 9.610 9.583 T -29.059511 37.970684 11.240 10.470 9.994 9.819 9.787 T -29.059866 37.089634 11.580 10.270 8.138 7.606 7.509 T -29.063434 37.626045 12.700 10.500 7.921 7.148 6.945 U -29.064597 37.644878 10.590 10.140 9.109 8.920 8.858 T -29.077664 37.627602 11.280 10.710 9.885 9.712 9.654 T -29.078803 37.966827 10.270 9.080 7.145 6.697 6.605 T -29.080309 38.362679 0.000 11.100 9.825 9.546 9.539 U -29.081216 39.151424 11.090 10.050 8.200 7.781 7.701 T -29.090186 37.602348 0.000 9.500 7.529 7.018 6.880 U -29.116826 36.665573 13.300 10.600 7.153 6.379 6.094 U -29.131880 38.529163 11.640 10.920 9.715 9.384 9.316 T -29.138126 39.080952 13.600 11.000 6.749 5.844 5.440 U -29.140295 38.598988 12.000 10.900 9.669 9.278 9.214 U -29.145527 37.738045 12.900 11.000 9.992 9.501 9.392 U -29.163402 37.861443 10.800 10.360 9.659 9.485 9.427 T -29.169184 38.263870 12.800 10.300 7.472 6.684 6.396 U -29.174398 37.817581 0.000 10.300 9.582 10.352 10.292 U -29.174964 37.817734 0.000 10.300 9.420 9.117 9.031 U -29.175600 37.818043 0.000 10.300 9.339 9.822 9.118 U -29.176110 36.960777 12.600 11.100 9.980 9.645 9.608 U -29.182653 38.021149 11.700 10.690 8.892 8.333 8.184 T -29.198316 37.408520 10.700 10.190 9.399 9.228 9.169 T -29.202486 37.486519 11.000 10.560 9.716 9.578 9.502 T -29.207333 38.022686 9.690 9.180 8.192 8.100 7.996 T -29.210149 38.032818 9.980 9.000 7.364 6.928 6.809 T -29.214177 37.460232 11.200 10.630 9.828 9.661 9.585 T -29.221042 37.869297 10.790 10.340 9.386 9.167 9.099 T -29.222752 38.937420 11.590 10.780 9.535 9.259 9.151 T -29.227825 36.450874 14.200 11.400 9.457 8.674 8.489 U -29.232889 38.919792 12.500 11.000 9.369 8.845 8.734 U -29.234754 37.664326 10.500 10.210 9.211 9.013 8.941 T -29.243358 37.095554 10.270 8.490 5.627 -99.999 4.704 T -29.256486 37.569050 13.600 11.600 9.857 9.288 9.163 U -29.262974 38.134071 10.180 8.990 7.129 6.657 6.529 T -29.300483 37.990257 0.000 9.400 8.491 8.297 8.241 U -29.306858 37.035812 12.600 10.700 8.828 8.323 8.241 U -29.309011 36.761993 12.500 10.500 9.625 9.128 9.022 U -29.309408 37.780865 10.280 9.800 9.042 8.879 8.794 T -29.310193 38.119457 12.300 11.000 9.958 9.702 9.693 U -29.313180 37.217167 13.100 11.400 9.973 9.466 9.354 U -29.321241 37.435825 10.790 10.230 9.319 9.147 9.075 T -29.324487 36.996010 13.300 11.000 9.376 8.693 8.538 U -29.325962 38.418201 12.900 11.000 9.803 9.311 9.171 U -29.336317 37.862034 10.650 10.150 9.248 9.024 8.954 T -29.357952 37.861893 11.280 10.160 8.507 8.073 7.936 T -29.358324 37.722164 10.910 10.480 9.558 9.395 9.313 T -29.360198 37.164879 12.600 10.800 8.917 8.434 8.278 U -29.364454 37.586235 11.010 10.610 9.917 9.807 9.726 T -29.367764 37.400726 10.610 10.190 9.423 9.264 9.196 T -29.374263 38.217075 10.930 10.350 9.389 9.157 9.101 T -29.378856 37.916142 10.630 10.210 9.399 9.213 9.143 T -29.382400 37.131844 10.420 9.790 8.612 8.315 8.270 T -29.400895 37.752842 10.250 9.880 9.049 8.832 8.774 T -29.404028 37.036438 13.000 10.800 9.483 8.861 8.717 U -29.405612 37.491028 9.820 9.750 9.635 9.685 9.657 T -29.406691 37.660564 10.200 8.960 7.076 6.545 6.399 T -29.406976 37.816906 10.510 9.950 9.065 8.823 8.776 T -29.412290 37.770119 10.250 9.100 7.266 6.803 6.659 T -29.414354 37.873898 10.770 10.540 9.684 9.475 9.438 T -29.415861 36.770397 8.900 8.520 7.749 7.560 7.526 T -29.416791 39.152218 12.500 11.100 9.616 9.161 9.032 U -29.433155 37.861736 10.760 10.470 9.561 9.346 9.294 T -29.436338 37.988476 10.590 10.130 9.188 8.993 8.915 T -29.439700 37.656834 10.830 9.670 7.911 7.442 7.318 T -29.441873 38.074574 10.990 10.560 9.656 9.483 9.346 T -29.444607 38.253887 10.390 9.120 7.089 6.524 6.378 T -29.448496 39.111614 12.500 11.100 9.786 9.305 9.211 U -29.453657 38.445786 9.510 8.380 6.597 6.116 6.035 T -29.456468 37.820557 10.840 10.200 9.131 8.897 8.812 T -29.460387 38.911564 10.540 10.220 9.604 9.463 9.417 T -29.485116 37.833660 11.050 10.680 9.836 9.646 9.565 T -29.497250 37.915001 10.450 9.900 9.082 8.877 8.813 T -29.499111 37.677395 10.260 9.830 8.801 8.586 8.557 T -29.510451 37.493561 11.640 10.210 8.397 7.967 7.838 T -29.525444 38.655128 16.000 11.600 7.993 7.195 6.839 U -29.552412 38.066536 12.900 11.000 9.603 9.095 9.002 U -29.557483 38.627769 11.940 10.750 8.858 8.277 8.140 T -29.562990 36.750725 11.540 10.560 8.604 8.124 7.952 T -29.570408 38.749889 12.800 10.800 9.287 8.575 8.556 U -29.578256 37.803066 9.510 9.220 8.490 8.328 8.263 T -29.579442 39.106522 10.480 9.550 8.032 7.645 7.539 T -29.580494 37.888988 12.600 10.100 8.667 7.868 7.634 U -29.585733 38.053814 12.800 10.800 9.096 8.533 8.410 U -29.596146 36.814606 12.700 10.500 9.480 9.031 8.920 U -29.608075 38.867569 10.970 10.330 9.614 9.395 9.391 T -29.615145 38.837444 11.800 10.300 9.577 9.264 9.170 U -29.624230 37.860416 10.490 9.390 7.652 7.176 7.042 T -29.626516 37.252220 12.400 10.800 9.704 9.302 9.251 U -29.628819 36.251461 9.250 8.120 6.260 5.816 5.665 T -29.630027 36.791203 11.540 9.980 7.773 7.221 7.036 T -29.646037 38.588943 13.000 11.400 9.837 9.276 9.137 U -29.651263 38.497803 10.970 9.700 7.739 7.208 7.080 T -29.653658 37.752972 10.040 9.650 8.762 8.557 8.467 T -29.661531 38.342377 11.980 10.920 9.005 8.447 8.342 T -29.675906 38.578072 11.600 10.460 8.923 8.467 8.353 T -29.689518 36.771217 12.040 10.830 9.360 9.041 8.902 T -29.693542 36.602814 7.490 7.320 6.980 6.950 6.886 T -29.697033 38.153076 11.490 10.920 9.844 9.571 9.492 T -29.699722 38.435551 10.570 10.120 9.157 8.965 8.896 T -29.710086 37.347801 10.870 10.730 9.648 9.489 9.413 T -29.710224 36.802254 12.900 10.900 9.034 8.452 8.249 U -29.710995 38.605549 10.000 9.470 8.384 8.149 8.079 T -29.712064 37.492142 11.200 10.620 9.714 9.486 9.425 T -29.715143 37.685448 8.540 8.330 7.841 7.747 7.681 T -29.720425 37.815887 10.360 9.150 7.279 6.792 6.630 T -29.729442 37.566666 12.500 11.000 9.555 9.032 8.916 U -29.736403 37.832958 13.400 10.400 9.676 8.981 8.814 U -29.743610 37.137466 9.260 8.800 7.751 7.564 7.477 T -29.757291 37.592552 12.900 11.000 9.392 8.818 8.675 U -29.767137 36.836475 13.400 11.300 9.643 9.129 8.943 U -29.801229 38.291401 10.720 9.600 7.781 7.328 7.199 T -29.808993 37.661987 12.700 10.900 9.773 9.301 9.156 U -29.811655 38.015392 10.210 9.090 7.192 6.754 6.629 T -29.818586 38.959393 13.100 11.000 9.298 8.568 8.430 U -29.836953 38.919933 10.340 9.950 9.095 8.959 8.895 T -29.873203 38.335278 13.300 10.900 7.541 6.608 6.355 U -29.876587 37.486019 11.560 10.830 9.134 8.631 8.618 T -29.881602 37.127293 11.800 10.200 7.532 6.783 6.630 T -29.892232 38.406498 12.900 11.100 9.823 9.323 9.146 U -29.897698 38.689892 12.900 11.100 9.896 9.368 9.242 U -29.916707 36.338966 13.600 11.300 9.127 8.314 8.218 U -29.931596 37.484585 11.720 10.490 8.325 7.743 7.603 T -29.933111 37.135967 11.680 10.960 9.244 8.754 8.643 T -29.959213 38.083096 11.660 10.570 8.719 8.201 8.116 T -29.988637 36.730629 8.810 8.340 7.369 7.181 7.126 T diff --git a/pro/plate/n752.j14 b/pro/plate/n752.j14 deleted file mode 100644 index 6d2f6e304..000000000 --- a/pro/plate/n752.j14 +++ /dev/null @@ -1,650 +0,0 @@ -# j>0&&opt&&pdist<1.5&&j>10&&j<14&&mcsel==0&&ran0&&pdist<1.5&&j>10&&mcsel -# _sra _sdec _b _r _j _h _k _flag -# -28.329307 37.984917 13.800 12.600 11.743 11.481 11.382 U -28.405313 37.404816 13.100 12.300 11.475 11.241 11.113 U -28.629403 37.492138 11.600 11.000 10.358 10.182 10.161 U -28.652536 37.440636 14.000 12.600 11.800 11.485 11.429 U -28.736318 37.974728 12.500 10.900 10.648 10.429 10.389 U -28.748566 37.483334 12.600 11.300 10.589 10.382 10.287 U -28.761840 38.277321 13.100 12.200 11.347 11.076 11.087 U -28.779685 37.543652 15.100 13.900 12.806 12.427 12.346 U -28.853700 37.917603 15.500 14.200 12.963 12.478 12.365 U -28.859007 38.139523 14.500 13.400 12.219 11.849 11.750 U -28.936433 37.911938 14.700 13.400 12.434 12.052 11.970 U -28.972991 37.824116 14.800 13.800 12.450 12.086 11.981 U -28.991722 38.017460 15.800 14.500 13.105 12.595 12.501 U -28.997615 37.680180 13.100 12.300 11.175 10.921 10.858 U -29.012212 37.609077 15.100 13.900 12.763 12.335 12.232 U -29.015366 37.989590 12.400 11.300 10.563 10.381 10.343 U -29.031434 37.557945 15.800 14.300 13.072 12.563 12.511 U -29.046249 37.753193 0.000 10.700 10.421 10.226 10.195 U -29.053663 38.028713 11.440 11.090 10.114 9.899 9.865 T -29.057058 37.265850 14.700 14.500 11.785 11.545 11.476 U -29.094041 37.655033 15.300 13.900 12.658 12.233 12.127 U -29.096258 37.634228 13.800 12.600 11.681 11.358 11.325 U -29.106190 38.512856 12.600 11.400 10.758 10.547 10.483 U -29.122701 37.920784 15.100 14.100 13.201 12.865 12.820 U -29.133536 37.572887 13.600 12.700 11.702 11.414 11.334 U -29.137342 37.946266 12.700 11.600 10.767 10.508 10.506 U -29.143518 38.147118 14.600 13.400 12.036 11.584 11.490 U -29.153599 37.753551 14.700 13.500 12.386 11.953 11.913 U -29.161161 36.909557 12.600 11.400 10.654 10.429 10.411 U -29.166063 37.274834 14.200 13.300 12.155 11.807 11.761 U -29.224827 38.324249 13.800 12.500 14.109 13.821 13.700 U -29.226343 37.397827 13.100 12.200 10.942 10.697 10.668 U -29.230730 38.079460 13.300 12.000 11.243 10.974 10.923 U -29.232360 37.799858 12.300 11.100 10.350 10.155 10.117 U -29.233902 38.137848 14.100 12.700 11.681 11.322 11.271 U -29.239967 37.389072 11.200 10.670 10.139 9.965 9.898 T -29.260364 37.885487 12.200 11.000 10.448 10.244 10.186 U -29.261613 38.234333 13.000 12.200 11.405 11.174 11.107 U -29.263228 37.929108 12.900 11.400 10.856 10.612 10.591 U -29.265095 38.086651 12.900 11.400 10.722 10.467 10.437 U -29.270306 38.125923 14.700 13.400 11.646 11.290 11.229 U -29.272757 37.845261 14.100 12.700 11.706 11.330 11.253 U -29.293108 37.432014 14.600 13.400 12.175 11.821 11.735 U -29.293651 38.035179 12.900 11.900 11.316 11.033 11.015 U -29.293831 37.457439 14.700 13.400 12.058 11.578 11.509 U -29.300656 37.934692 12.800 11.400 10.737 10.430 10.334 U -29.311170 37.903065 13.100 12.000 12.139 11.797 11.712 U -29.330871 37.989887 12.800 11.700 11.083 10.855 10.831 U -29.342871 37.606480 13.100 11.900 11.125 10.852 10.769 U -29.345715 37.639343 14.200 12.900 11.697 11.336 11.264 U -29.349150 37.870018 13.100 12.000 11.126 10.857 10.763 U -29.349961 38.102921 13.100 12.300 11.556 11.295 11.256 U -29.359000 37.655632 11.900 11.300 10.396 10.203 10.174 U -29.382721 37.894661 12.900 11.700 10.731 10.526 10.444 U -29.385694 37.701656 14.800 13.500 12.450 12.082 12.008 U -29.399549 37.973099 15.300 13.800 12.383 11.860 11.783 U -29.407422 37.830723 14.300 13.200 11.743 11.337 11.247 U -29.411499 38.141773 13.600 12.700 11.704 11.415 11.334 U -29.435140 38.185219 13.400 12.700 11.669 11.389 11.292 U -29.446366 37.791782 11.270 10.920 10.129 9.975 9.912 T -29.464187 37.664635 15.500 13.500 12.612 12.218 12.118 U -29.466580 37.462795 13.300 12.600 11.517 11.261 11.248 U -29.478940 37.340771 12.300 11.000 10.174 10.022 10.016 U -29.479893 37.879498 12.700 11.600 10.755 10.553 10.538 U -29.490738 37.806252 12.600 11.300 10.398 10.230 10.178 U -29.492569 37.435146 13.600 12.600 11.567 11.294 11.278 U -29.495150 37.690845 13.400 12.300 11.145 10.886 10.826 U -29.511512 38.041817 13.700 12.600 11.662 11.396 11.255 U -29.526222 37.635258 14.000 12.600 11.747 11.410 11.333 U -29.532095 37.665901 11.310 10.690 10.128 9.997 9.959 T -29.538518 37.476566 14.300 13.300 12.245 11.910 11.837 U -29.544295 37.401672 14.500 13.200 12.229 11.897 11.795 U -29.547540 37.659336 12.600 11.000 10.599 10.358 10.336 U -29.551098 37.544025 11.490 11.210 10.249 9.979 9.941 T -29.552895 37.577965 12.200 11.000 10.190 9.985 9.967 U -29.553850 37.255650 13.300 12.200 11.324 11.065 11.047 U -29.555751 38.194839 14.000 12.900 11.732 11.401 11.330 U -29.563798 37.555500 14.200 12.900 12.017 11.654 11.608 U -29.570238 37.637814 11.310 11.150 10.400 10.193 10.156 T -29.576714 38.115032 13.400 12.300 11.504 11.230 11.182 U -29.579095 38.537170 11.320 11.150 10.296 10.097 10.081 T -29.614928 37.589550 12.800 11.700 10.981 10.705 10.678 U -29.618298 38.158443 15.800 14.900 13.667 13.241 13.173 U -29.643312 37.670925 14.700 13.400 12.313 11.906 11.886 U -29.658759 37.537735 12.300 11.400 10.639 10.436 10.383 U -29.666889 37.634796 12.800 11.700 10.904 10.691 10.604 U -29.708212 37.996281 15.500 13.900 12.690 12.173 12.060 U -29.724713 37.578476 14.200 13.200 11.731 11.269 11.192 U -29.738776 37.661339 15.000 13.400 12.169 11.703 11.582 U -29.749365 38.021931 12.800 11.600 10.815 10.640 10.600 U -29.825123 37.830406 15.100 13.900 12.518 12.147 12.007 U -29.832958 37.389736 14.100 12.700 11.472 11.129 11.022 U -29.858693 37.677689 15.300 14.100 13.129 12.771 12.664 U -29.873368 38.267849 12.600 11.000 10.502 10.289 10.244 U -29.925258 37.703136 16.100 14.700 13.846 13.494 13.412 U -29.946865 37.831581 14.500 13.200 12.028 11.660 11.669 U -29.986668 37.969528 14.000 12.600 11.790 11.501 11.429 U -29.989076 38.302650 12.900 11.100 10.387 10.014 9.904 U diff --git a/pro/plate/plate_newcenter.pro b/pro/plate/plate_newcenter.pro deleted file mode 100644 index 5762d7e01..000000000 --- a/pro/plate/plate_newcenter.pro +++ /dev/null @@ -1,65 +0,0 @@ -;+ -; NAME: -; plate_newcenter -; -; PURPOSE: -; Find the new plate center when trying to put an object at the same -; position relative to the center. -; -; CALLING SEQUENCE: -; plate_rotate, racen1, deccen1, racen2, deccen2, ra1, dec1, ra2, dec2, $ -; [maxerr= ] -; -; INPUTS: -; racen1, deccen1 - Center of pointing 1 -; ra1, dec1 - positions on plate 1 -; ra2, dec2 - positions on plate 2 -; -; OPTIONAL INPUTS: -; maxerr - Maximum error in arcsec; default to 0.01 arcsec -; -; OUTPUTS: -; racen2, deccen2 - Center of pointing 2 -; -; COMMENTS: -; This routine is complementary to PLATE_ROTATE, solving for a -; different unknown (the 2nd plate center). -; -; BUGS: -; -; REVISION HISTORY: -; 2001-Nov-27 Written by D. Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro plate_newcenter, racen1, deccen1, racen2, deccen2, ra1, dec1, ra2, dec2, $ - maxerr=maxerr - - if (n_params() EQ 0) then begin - print, 'plate_newcenter, racen1, deccen1, racen2, deccen2, ra1, dec1, ra2, dec2' - return - endif - - maxerr = 0.01 ; Max error in arcsec - maxiter = 100 - - ; Guess the initial solution -- not valid at high declination!! - racen2 = (racen1 - ra1 + ra2)[0] - deccen2 = (deccen1 - dec1 + dec2)[0] - - toterr = 9999. - iiter = 0 - while (toterr GT maxerr AND iiter LT maxiter) do begin - iiter = iiter + 1 - ; See how far we are off by - plate_rotate, racen1[0], deccen1[0], racen2[0], deccen2[0], $ - ra1[0], dec1[0], tmpra, tmpdec - raerr = ra2[0] - tmpra[0] - decerr = dec2[0] - tmpdec[0] - toterr = sqrt(raerr^2 + decerr^2) * 3600 ; in arcsec - racen2 = racen2 + raerr - deccen2 = deccen2 + decerr - endwhile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/plate_rotate.pro b/pro/plate/plate_rotate.pro deleted file mode 100644 index e742f7418..000000000 --- a/pro/plate/plate_rotate.pro +++ /dev/null @@ -1,84 +0,0 @@ -;+ -; NAME: -; plate_rotate -; -; PURPOSE: -; Rotate (RA, dec) positions for one plate center to another plate center -; -; CALLING SEQUENCE: -; plate_rotate, racen1, deccen1, racen2, deccen2, ra1, dec1, ra2, dec2 -; -; INPUTS: -; racen1, deccen1 - Center of pointing 1 -; racen2, deccen2 - Center of pointing 2 -; ra1, dec1 - positions on plate 1 -; -; OUTPUTS: -; ra2, dec2 - positions on plate 2 -; -; COMMENTS: -; This routine determines the rotation that maps (racen1, deccen1) -; onto (racen2, deccen2), and applies it to (ra1, dec1) (which may -; be vectors. By convention, North is "up" on both plates 1 & 2. -; -; This routine is useful for the bright stars survey, where one must -; drill holes for several pointings in the same plate. -; -; BUGS: -; -; REVISION HISTORY: -; 2001-Sep-07 Written by D. Finkbeiner, Princeton. -; -;- -;------------------------------------------------------------------------------ -pro plate_rotate, racen1, deccen1, racen2, deccen2, ra1, dec1, ra2, dec2 - - if (n_params() EQ 0) then begin - print, 'plate_rotate, racen1, deccen1, racen2, deccen2, ra1, dec1, ra2, dec2' - return - endif - -; convert input ra1, dec1 to unit vectors - uv = ll2uv([[ra1-racen1], [dec1]], /double) ; array [N, 3] - - dtor = !dpi/180.d - sd = sin((deccen2-deccen1)*dtor) - cd = cos((deccen2-deccen1)*dtor) - - x = uv[*, 0]*cd - uv[*, 2]*sd - y = uv[*, 1] - z = uv[*, 0]*sd + uv[*, 2]*cd - uv2 = [[x], [y], [z]] - - radec = uv2ll(uv2) ; array [N, 2] - - ra2 = radec[*, 0]+racen2 - dec2 = radec[*, 1] - -; wrap RA - ra2 = (ra2+720.d) MOD 360 - - return -end - -pro test - - racen1 = 45 - deccen1 = 90. - - racen2 = 135 - deccen2 = 90. - - ra1 = randomn(iseed, 4)+racen1 - dec1 = randomn(iseed, 4)+deccen1 - plot,ra1,dec1,ps=1,/yno - oplot, [racen1], [deccen1], ps=6, syms=3 - - plate_rotate, racen1, deccen1, racen2, deccen2, ra1, dec1, ra2, dec2 - - plot,ra2,dec2,ps=1,/yno - oplot, [racen2], [deccen2], ps=6, syms=3 - - return -end - diff --git a/pro/plate/pleiades.j10 b/pro/plate/pleiades.j10 deleted file mode 100644 index da9bc1641..000000000 --- a/pro/plate/pleiades.j10 +++ /dev/null @@ -1,258 +0,0 @@ -# j>0&&opt&&dist<1.5&&j<10 -# _sra _sdec _b _r _j _h _k _flag -# -55.533397 23.526720 12.500 10.900 9.801 9.558 9.430 U -55.583755 23.782207 13.000 11.100 8.000 7.147 6.846 U -55.600604 23.516024 13.100 10.800 8.789 8.057 7.838 U -55.630639 23.268789 13.000 11.300 9.162 8.573 8.432 U -55.716851 23.534508 12.800 10.900 8.991 8.426 8.254 U -55.732721 23.876381 11.350 10.400 8.387 8.045 7.881 T -55.796304 22.842281 11.320 11.070 9.699 9.491 9.380 T -55.797493 22.869028 12.600 11.200 9.836 9.483 9.386 U -55.799662 23.605112 11.620 11.140 9.707 9.468 9.369 T -55.808369 23.723516 12.120 9.730 6.285 5.439 5.181 T -55.811980 23.585157 13.000 10.800 8.144 7.273 7.029 U -55.820916 23.246677 13.300 11.000 9.174 8.477 8.265 U -55.845854 23.289890 12.170 10.880 8.432 7.818 7.627 T -55.852238 23.225992 11.370 10.780 9.118 8.747 8.657 T -55.871916 22.734705 0.000 8.800 7.695 7.512 7.439 U -55.883159 23.674112 11.650 11.110 9.506 9.169 9.090 T -55.893389 23.761967 12.900 11.100 9.861 9.449 9.387 U -55.907213 23.536036 11.640 10.730 9.589 9.247 9.126 T -55.923062 23.649136 8.340 7.980 7.208 7.071 7.016 T -55.928641 23.594807 10.170 9.630 8.544 8.320 8.219 T -55.947860 23.211796 11.670 10.590 9.040 8.678 8.561 T -55.963094 23.255945 13.400 11.400 9.717 9.048 8.900 U -55.965259 23.222507 10.700 10.340 9.266 9.179 9.093 T -55.965368 23.365173 12.300 10.900 9.476 9.179 9.067 U -55.995066 23.882776 10.370 9.610 8.599 8.427 8.348 T -56.002523 23.543985 12.300 10.900 9.680 9.321 9.208 U -56.046726 23.379284 12.600 11.100 9.961 9.472 9.409 U -56.070660 23.374144 13.400 11.700 9.918 9.288 9.171 U -56.085303 23.517735 13.900 11.900 9.970 9.281 9.105 U -56.092091 22.576557 12.600 10.900 8.845 8.212 8.094 U -56.098420 23.668924 12.700 10.500 8.339 7.746 7.507 U -56.174285 22.464588 12.000 10.800 9.512 9.142 9.070 U -56.201529 23.589933 11.780 9.850 6.687 7.214 5.743 T -56.213484 23.268991 9.420 9.040 8.191 8.000 7.998 T -56.224335 23.921288 13.300 11.000 9.274 8.962 8.833 U -56.256466 22.722258 11.310 10.000 7.182 6.638 6.511 T -56.272076 23.702707 9.430 9.020 8.196 8.010 7.974 T -56.292970 22.603643 12.100 11.100 9.476 9.089 8.998 U -56.298202 22.952909 11.680 10.790 9.702 9.357 9.267 T -56.298612 23.077480 12.900 10.900 8.841 8.130 8.000 U -56.308253 23.122967 10.670 9.860 8.526 8.188 8.129 T -56.314207 22.695524 13.800 11.700 9.534 8.870 8.682 U -56.343358 23.204832 9.270 8.550 7.287 7.008 6.952 T -56.352125 23.486708 13.100 11.400 9.975 9.613 9.481 U -56.354410 23.192553 11.810 10.740 9.185 8.783 8.644 T -56.392282 22.916910 12.600 10.900 9.031 8.418 8.324 U -56.403753 22.631144 11.760 10.760 9.500 9.187 9.114 T -56.410634 22.942312 11.080 10.410 9.186 8.970 8.865 T -56.414107 23.754332 16.000 12.300 9.793 9.212 8.991 U -56.416232 22.694477 8.050 7.850 7.446 7.384 7.377 T -56.430736 22.401081 13.400 10.900 8.024 7.112 6.828 U -56.434975 22.838755 13.200 11.400 9.597 8.998 8.865 U -56.453358 23.147202 0.000 6.900 6.721 6.723 6.751 U -56.461159 23.620958 13.500 11.000 9.136 8.475 8.340 U -56.469271 22.575058 13.100 11.300 9.090 8.385 8.180 U -56.496367 22.394915 12.500 10.900 9.101 8.466 8.338 U -56.507815 22.555325 12.230 10.640 8.557 7.993 7.890 T -56.525080 23.219063 11.560 10.090 7.371 6.689 6.520 T -56.529349 23.134043 13.300 10.900 8.362 7.505 7.297 U -56.535181 22.977772 11.610 10.990 9.631 9.347 9.271 T -56.541842 23.340061 11.000 10.250 8.957 8.696 8.634 T -56.552829 23.128595 9.470 8.740 7.564 7.325 7.283 T -56.574922 23.486715 12.500 10.900 8.907 8.595 8.491 U -56.577536 24.870687 12.600 11.000 9.267 8.631 8.515 U -56.586901 22.887316 13.000 11.400 9.828 9.280 9.159 U -56.594476 24.570183 11.600 10.900 9.258 8.991 8.940 T -56.600591 23.323448 11.870 10.550 7.976 7.483 7.287 T -56.607759 25.017958 12.220 10.310 6.473 5.575 5.293 T -56.613654 24.255016 7.510 7.390 7.109 7.095 7.119 T -56.613959 25.135569 11.440 10.930 9.333 9.038 8.985 T -56.618356 24.433926 14.800 10.800 9.622 9.240 9.134 U -56.634074 24.870569 10.580 9.910 8.927 8.765 8.703 T -56.642498 23.624046 8.560 8.180 7.218 7.108 7.053 T -56.657029 23.787786 14.300 10.500 8.908 8.571 8.508 U -56.659987 22.919806 10.070 9.490 8.450 8.269 8.149 T -56.660941 23.995478 16.000 11.300 9.915 9.208 9.048 U -56.661567 24.959627 11.030 10.340 9.112 8.842 8.769 T -56.663836 24.103235 0.000 9.750 8.425 8.220 8.179 T -56.666660 23.110373 10.050 9.450 8.452 8.266 8.247 T -56.684018 24.312794 12.700 10.700 9.617 9.478 9.402 U -56.693004 23.151821 12.400 10.900 9.690 9.165 9.072 U -56.696064 22.914608 11.440 10.810 9.294 9.074 8.919 T -56.710573 23.239204 10.620 10.020 8.860 8.592 8.622 T -56.716911 25.126804 10.970 10.470 9.733 9.633 9.551 T -56.717509 23.210560 11.230 10.080 7.872 7.322 7.179 T -56.723918 23.583609 11.230 10.640 9.353 9.105 8.998 T -56.728846 24.796375 11.740 10.690 9.308 9.003 8.940 T -56.729165 24.922178 11.700 10.700 9.729 9.389 9.268 U -56.744746 22.254032 10.830 10.250 9.322 9.216 9.155 T -56.747448 24.520140 6.860 6.830 6.672 6.691 6.705 T -56.748382 24.384411 12.800 10.900 9.837 9.692 9.635 U -56.748506 24.331366 13.800 10.900 8.927 8.368 8.225 U -56.750627 25.091503 13.400 11.000 9.026 8.206 8.009 U -56.751181 23.983570 16.200 12.000 9.725 9.159 9.069 U -56.764788 24.819935 8.740 8.340 7.483 7.409 7.334 T -56.764881 24.637104 12.600 10.770 7.820 7.216 7.031 T -56.767532 23.995253 0.000 8.710 7.763 7.681 7.629 T -56.791191 23.782454 0.000 9.810 8.330 8.080 8.028 T -56.791871 24.276693 10.110 9.630 8.528 8.351 8.311 T -56.812159 22.470060 11.740 10.800 9.291 8.881 8.773 T -56.817345 23.818905 12.300 10.600 9.451 9.006 8.965 U -56.817478 22.924461 12.100 10.700 9.399 8.868 8.723 U -56.821107 23.914173 13.600 10.400 8.047 7.289 7.093 U -56.821480 23.726742 7.620 7.040 5.992 5.786 5.724 T -56.827506 24.453730 13.200 11.000 9.327 8.751 8.583 U -56.830567 24.139116 0.000 8.520 7.728 7.684 7.634 T -56.837361 23.803352 7.050 7.020 6.879 6.909 6.889 T -56.837718 24.116215 0.000 6.300 6.213 6.277 6.274 U -56.844856 23.554405 12.100 10.500 9.618 9.422 9.332 U -56.845418 22.922060 8.470 8.220 7.657 7.540 7.514 T -56.849815 23.914522 0.000 7.000 8.629 8.289 8.335 U -56.850231 24.588478 7.940 7.720 7.119 7.023 6.982 T -56.851693 23.914701 7.360 7.300 7.167 7.151 7.129 T -56.855472 23.631096 13.000 11.200 9.525 8.891 8.746 U -56.856972 23.542089 12.300 10.600 7.837 7.215 7.018 U -56.860659 24.658501 0.000 8.900 8.399 8.355 8.345 U -56.861784 23.678343 7.970 7.800 7.443 7.371 7.338 T -56.870215 24.556974 12.630 10.650 6.723 5.802 5.530 T -56.871199 24.432989 13.000 10.900 8.934 8.193 8.012 U -56.872731 24.288340 6.920 6.840 6.613 6.637 6.605 T -56.891504 24.504225 13.400 11.400 9.867 9.207 9.019 U -56.897944 24.536119 12.200 9.600 7.598 6.920 6.746 U -56.905292 22.820683 11.600 10.100 8.754 8.170 8.051 U -56.916062 24.003305 14.800 10.400 8.278 7.657 7.469 U -56.918510 24.364599 12.180 10.910 9.323 9.053 8.948 T -56.925357 23.543842 10.140 8.990 6.582 6.052 5.878 T -56.950485 23.218166 11.200 10.400 9.770 9.411 9.329 U -56.962281 24.367413 13.100 10.700 8.439 7.694 7.463 U -56.968838 23.941254 0.000 10.340 8.847 8.626 8.608 T -56.975225 25.130381 12.170 10.000 6.422 5.595 5.315 T -56.979025 23.437174 11.410 10.120 7.615 7.025 6.854 T -56.981608 23.465078 11.700 10.900 9.784 9.527 9.397 U -56.984006 23.191990 11.660 9.820 6.461 5.673 5.434 T -56.990117 25.013315 12.190 10.440 8.216 7.646 7.508 T -57.001949 22.806532 11.040 10.520 9.621 9.425 9.358 T -57.002888 23.878855 12.800 10.800 8.651 7.978 7.823 U -57.007128 24.087976 17.000 12.000 9.090 8.311 8.110 U -57.018952 23.382462 11.040 10.310 8.059 7.613 7.434 T -57.020594 24.071842 16.200 11.900 9.657 9.053 8.948 U -57.029878 24.142109 0.000 9.770 8.202 7.997 7.932 T -57.033844 22.558933 0.000 9.700 9.980 9.691 9.617 U -57.049730 22.577250 11.440 10.740 9.490 9.275 9.153 T -57.052352 23.999147 14.100 10.900 8.580 7.779 7.514 U -57.055966 22.314157 0.000 10.600 9.824 9.521 9.436 U -57.056389 24.318419 8.820 8.440 7.503 7.411 7.353 T -57.062156 23.651600 12.300 10.800 9.879 9.283 9.138 U -57.068719 22.291552 11.760 10.530 8.143 7.489 7.355 T -57.070420 23.636820 0.000 10.380 9.046 8.795 8.704 T -57.071281 23.890400 0.000 10.420 9.252 8.942 8.879 T -57.072516 22.378586 9.580 8.300 6.062 5.535 5.410 T -57.073697 25.047859 12.000 10.900 9.557 9.217 9.170 U -57.079756 24.061617 14.400 11.200 9.699 9.192 9.128 U -57.083516 22.548405 11.900 9.400 6.608 5.745 5.451 U -57.105270 24.878077 11.510 10.910 9.466 9.184 9.063 T -57.107346 22.651381 13.600 10.600 8.338 7.286 7.017 U -57.109046 24.048481 10.750 10.240 8.970 8.712 8.635 T -57.112106 24.994360 12.200 10.900 8.889 8.326 8.181 U -57.125393 24.345575 7.120 6.970 6.596 6.598 6.558 T -57.129263 24.274239 13.400 11.000 9.197 8.591 8.477 U -57.130591 22.211315 10.440 9.560 8.161 7.863 7.807 T -57.143784 23.434826 11.380 10.780 9.155 8.919 8.867 T -57.145015 24.181206 0.000 9.500 8.053 7.853 7.768 U -57.147971 23.819145 12.000 10.600 8.531 7.790 7.580 U -57.164540 23.778477 12.000 10.900 9.554 8.932 8.753 U -57.177351 24.331400 12.500 10.300 8.531 7.954 7.748 U -57.178544 22.358624 12.800 11.200 9.955 9.371 9.259 U -57.182916 23.259800 8.710 8.410 7.768 7.675 7.623 T -57.203273 24.634914 11.480 10.930 9.595 9.387 9.303 T -57.203952 24.267437 12.300 10.800 9.317 8.939 8.783 U -57.227958 22.799141 8.150 8.120 7.938 7.953 7.963 T -57.229565 22.544016 10.880 10.310 9.008 8.765 8.719 T -57.233817 24.023970 11.800 11.300 9.016 8.411 8.304 U -57.237244 23.857206 6.920 6.520 5.684 5.518 5.479 T -57.243683 23.201199 0.000 11.000 9.919 9.511 9.364 U -57.247614 23.886318 0.000 10.900 9.264 8.588 8.448 U -57.275463 23.781290 11.300 99.900 9.144 8.704 8.593 U -57.290949 23.612774 11.100 10.100 9.865 9.675 9.598 U -57.294644 23.267160 11.520 9.300 5.919 -99.999 4.844 T -57.296896 22.609451 7.950 7.760 7.293 7.246 7.200 T -57.300653 23.408344 10.060 9.520 8.461 8.255 8.190 T -57.300674 22.726410 11.300 99.900 9.632 9.370 9.275 U -57.300795 23.886763 8.420 8.170 7.625 7.621 7.547 T -57.350169 23.839289 0.000 10.500 9.882 9.452 9.351 U -57.354707 23.795017 12.300 10.900 7.794 6.837 6.548 U -57.356985 23.808655 11.600 10.800 9.872 9.407 9.286 U -57.369711 23.712255 12.300 11.100 9.915 9.535 9.438 U -57.371089 23.884907 12.800 10.900 9.207 8.433 8.268 U -57.386340 23.380404 9.660 9.180 8.241 8.093 8.012 T -57.387963 23.795439 0.000 10.200 9.584 9.251 9.206 U -57.389293 24.629684 11.660 10.020 7.471 6.789 6.650 T -57.397725 22.560429 13.400 11.000 9.619 9.079 8.895 U -57.409081 22.533497 7.050 7.010 6.821 6.904 6.847 T -57.413403 24.227470 13.500 11.400 9.867 9.315 9.117 U -57.414170 23.290159 0.000 10.500 9.673 9.343 9.224 U -57.414784 23.055033 11.740 9.650 5.636 -99.999 -99.999 T -57.419104 24.037531 12.600 11.200 8.842 8.356 8.224 U -57.420533 23.341587 8.380 8.150 7.675 7.627 7.600 T -57.431376 23.711815 6.110 6.170 6.138 6.197 6.184 T -57.441318 24.245842 11.710 9.790 6.798 6.073 5.880 T -57.471954 23.530611 11.750 10.090 7.629 7.032 6.876 T -57.477892 24.218359 9.390 9.230 8.743 8.703 8.629 T -57.485400 23.218655 10.940 10.310 9.131 8.837 8.813 T -57.485856 24.349022 7.630 7.550 7.338 7.371 7.352 T -57.486748 22.880322 11.100 10.900 9.973 9.752 9.670 U -57.487812 23.953150 10.460 9.930 8.909 8.713 8.649 T -57.491905 23.848660 0.000 6.300 6.534 6.588 6.495 U -57.514329 22.591661 7.880 7.320 6.259 6.079 6.009 T -57.534040 24.123297 12.500 11.000 9.244 8.767 8.657 U -57.536866 22.633312 13.400 11.700 9.575 8.796 8.562 U -57.542382 24.229280 12.200 11.200 9.390 8.762 8.685 U -57.562991 22.545286 0.000 11.800 9.703 8.858 8.691 U -57.565228 24.666807 0.000 9.300 8.499 8.369 8.355 U -57.581992 22.678192 0.000 8.000 7.730 7.541 7.496 U -57.582685 22.856188 0.000 10.700 8.785 8.015 7.841 U -57.583194 23.951645 13.400 11.000 9.584 9.000 8.818 U -57.587070 24.466734 12.300 11.500 9.741 9.447 9.361 U -57.588744 23.096399 0.000 10.600 9.872 9.491 9.374 U -57.610678 24.762018 13.400 11.800 9.861 9.255 9.080 U -57.615901 24.347874 12.900 11.400 9.479 8.947 8.817 U -57.616913 24.495440 7.600 7.460 7.035 7.006 7.002 T -57.618494 24.517900 12.500 11.700 9.612 9.394 9.259 U -57.634935 22.650454 11.800 10.150 7.675 7.126 6.949 T -57.642409 24.346828 11.640 10.750 9.201 8.885 8.727 T -57.643206 24.791580 10.730 10.280 9.224 9.096 8.998 T -57.645257 24.905111 12.300 11.500 9.908 9.658 9.572 U -57.666959 23.933041 10.990 10.520 9.180 8.899 8.885 T -57.674483 23.309866 0.000 10.600 9.176 8.630 8.484 U -57.683114 25.020315 12.500 11.400 9.281 8.758 8.612 U -57.702182 24.563412 13.800 12.100 9.197 8.339 8.411 U -57.704099 24.429674 12.480 10.890 8.709 8.171 8.034 T -57.718462 23.961496 7.050 6.960 6.646 6.632 6.590 T -57.720601 22.788401 15.400 11.900 9.926 9.037 8.836 U -57.725149 23.153339 10.810 10.490 9.469 9.346 9.267 T -57.726326 23.834885 0.000 10.600 9.670 9.213 9.057 U -57.761499 23.428308 9.860 9.440 8.509 8.337 8.268 T -57.762311 23.958063 0.000 11.000 9.636 8.967 8.798 U -57.762915 23.903671 11.780 10.380 8.047 7.529 7.368 T -57.770121 24.939795 12.200 10.800 9.225 8.622 8.496 U -57.773802 24.675577 12.400 11.500 9.166 8.632 8.471 U -57.797437 24.593180 10.890 9.500 7.043 6.431 6.290 T -57.834282 24.382357 11.810 10.490 8.219 7.663 7.496 T -57.849941 24.862484 12.000 10.500 9.153 8.673 8.549 U -57.863415 24.518698 9.350 8.880 8.063 7.934 7.900 T -57.866552 23.926138 12.600 11.300 9.611 9.023 8.902 U -57.942149 24.726875 12.900 11.000 8.029 7.106 6.852 U -57.986880 23.901953 0.000 9.600 8.971 8.705 8.614 U -58.009285 24.663385 12.800 11.300 9.835 9.255 9.087 U -58.028507 23.586123 11.340 9.560 7.035 6.465 6.266 T -58.034703 24.230186 11.340 10.740 9.380 9.116 9.008 T -58.046356 23.281790 11.200 10.400 9.973 9.799 9.767 U -58.109601 23.861282 12.640 10.630 8.399 7.844 7.659 T -58.111777 23.403955 13.900 11.400 8.671 7.796 7.598 U -58.125409 23.694447 12.500 11.300 9.474 8.970 8.782 U -58.290223 23.867598 11.890 9.980 7.127 6.366 6.201 T -58.320493 23.499111 10.620 10.090 9.144 8.990 8.867 T diff --git a/pro/plate/pleiades.j14 b/pro/plate/pleiades.j14 deleted file mode 100644 index 2fc5b04c4..000000000 --- a/pro/plate/pleiades.j14 +++ /dev/null @@ -1,1116 +0,0 @@ -# j>0&&opt&&dist<1.5&&j>10&&j<14&&ran0))&&opt&&dist<1.5 -# _sra _sdec _b _r _j _h _k _flag -# -128.562644 19.537474 11.940 10.190 7.025 6.271 6.010 000 -128.597258 19.771364 12.500 10.900 9.589 9.119 9.013 000 -128.764062 19.516991 10.050 9.350 8.176 7.937 7.847 000 -128.790495 19.149778 11.610 10.230 8.225 7.690 7.545 000 -128.794283 19.176025 12.400 10.600 9.226 8.665 8.582 000 -128.866914 20.196318 11.040 10.450 9.158 8.961 8.900 000 -128.903275 18.617188 12.600 11.100 9.858 9.349 9.223 000 -128.914543 19.260960 12.200 10.800 9.704 9.379 9.312 000 -128.926833 20.373924 11.100 10.270 9.054 8.779 8.714 000 -128.930431 20.330341 8.490 8.290 7.923 7.921 7.904 000 -128.937817 19.771154 7.670 7.500 7.134 7.136 7.129 000 -128.942886 18.895683 15.500 12.700 5.944 -99.999 -99.999 0C0 -128.951476 19.170008 10.890 10.480 9.460 9.249 9.170 000 -128.976840 19.472303 11.150 9.660 7.153 6.519 6.348 000 -129.006482 18.704456 12.400 11.300 9.857 9.356 9.278 000 -129.020284 20.182829 11.010 10.590 9.609 9.397 9.368 000 -129.072671 20.473478 12.400 10.700 9.496 8.936 8.775 000 -129.072703 20.341524 7.640 7.490 7.195 7.194 7.161 000 -129.086909 20.155560 10.790 9.710 7.815 7.314 7.226 000 -129.121122 20.545528 12.240 10.980 8.208 7.643 7.477 000 -129.124435 18.965858 9.960 9.540 8.484 8.333 8.305 000 -129.143970 18.853718 11.080 9.990 8.227 7.690 7.640 000 -129.151753 20.796713 12.300 10.800 9.658 9.205 9.032 000 -129.164215 20.633993 12.500 10.300 8.403 7.791 7.661 000 -129.166924 18.468849 9.370 8.870 7.850 7.674 7.648 000 -129.194236 19.402948 13.300 10.700 9.133 8.429 8.275 000 -129.200063 18.882814 8.970 8.650 8.019 7.944 7.967 000 -129.257094 19.027357 12.100 10.300 8.741 8.318 8.147 000 -129.258539 19.604757 9.710 9.240 8.320 8.151 8.035 000 -129.289037 18.420961 11.920 10.940 9.784 9.454 9.413 000 -129.295350 18.466951 13.100 11.300 9.741 9.104 8.980 000 -129.298664 20.284681 11.500 10.600 9.720 9.448 9.311 000 -129.325946 18.870003 8.960 8.600 8.048 8.039 7.959 000 -129.342709 18.696270 11.270 10.740 9.889 9.752 9.655 000 -129.355424 20.750557 12.700 11.200 9.643 9.172 9.076 000 -129.360103 20.487049 8.670 8.070 6.937 6.727 6.619 000 -129.366479 19.562565 10.480 9.830 8.719 8.517 8.500 000 -129.367511 19.162313 10.010 9.580 8.601 8.528 8.395 000 -129.633995 19.465250 11.090 10.000 8.183 7.659 7.554 000 -129.635628 18.774513 12.400 10.700 9.059 8.448 8.316 000 -129.642732 19.860249 10.570 9.340 7.342 6.798 6.713 000 -129.652289 18.157639 11.950 10.490 8.312 7.744 7.641 000 -129.655262 18.647713 10.730 10.190 9.096 8.873 8.820 000 -129.657337 19.646681 11.420 10.870 9.530 9.314 9.219 000 -129.657792 19.989744 8.400 8.160 7.701 7.681 7.629 000 -129.667933 20.802830 11.490 10.640 9.362 9.066 8.982 000 -129.695637 19.500933 9.420 9.090 8.359 8.284 8.249 000 -129.708380 20.067648 11.300 10.300 9.719 9.439 9.401 000 -129.729427 19.198320 11.560 10.400 8.613 8.160 8.061 000 -129.757116 20.787958 10.510 9.390 7.344 6.734 6.631 000 -129.757743 20.005394 14.000 12.100 9.761 9.206 9.059 000 -129.761829 19.724697 9.920 9.390 8.366 8.125 8.111 000 -129.764972 19.999744 8.560 8.350 7.867 7.808 7.756 000 -129.771827 20.117163 9.930 9.460 8.611 8.451 8.408 000 -129.775515 19.676783 7.770 7.480 6.870 6.774 6.704 000 -129.778317 18.442423 10.530 10.020 9.095 8.879 8.817 000 -129.782866 20.797222 9.800 8.680 6.870 6.375 6.268 000 -129.787915 19.592419 8.840 8.610 8.027 7.950 7.865 000 -129.788771 18.951927 9.330 8.880 8.102 7.916 7.884 000 -129.792283 19.678417 0.000 9.500 8.670 8.504 8.425 000 -129.795688 18.176008 11.310 10.370 9.302 9.088 9.011 000 -129.797684 18.934992 11.900 10.400 9.917 9.443 9.375 000 -129.800716 19.115639 11.400 10.580 9.574 9.293 9.245 000 -129.808343 18.232988 11.640 10.000 7.921 7.285 7.007 000 -129.832175 20.052977 10.390 9.350 7.630 7.181 7.075 000 -129.854075 19.459370 11.210 10.520 9.371 9.098 9.015 000 -129.872292 18.219387 11.570 10.730 9.125 8.813 8.782 000 -129.876799 20.069098 10.800 10.320 9.137 8.822 8.803 000 -129.889301 20.169518 10.770 9.200 6.929 6.295 6.126 000 -129.898091 18.876871 11.640 10.850 9.680 9.390 9.338 000 -129.925386 20.936340 11.280 11.060 9.945 9.725 9.678 000 -129.925993 18.503010 12.500 10.700 9.614 9.026 8.883 000 -129.927716 19.778477 6.950 6.690 6.121 6.000 6.003 000 -129.928343 20.086212 7.980 7.770 7.275 7.184 7.166 000 -129.928963 18.552916 9.110 8.940 8.639 8.600 8.541 000 -129.936103 19.275206 7.900 7.670 7.252 7.216 7.103 000 -129.940625 19.366982 11.340 10.850 9.616 9.402 9.310 000 -129.956651 18.347445 9.510 9.200 8.451 8.302 8.289 000 -129.968067 19.312654 11.100 10.570 9.298 9.096 9.062 000 -129.972121 20.539219 11.010 10.580 9.562 9.382 9.308 000 -129.976367 20.560226 9.870 9.380 8.535 8.433 8.412 000 -129.979447 20.065046 10.760 10.140 9.202 9.002 8.961 000 -129.985364 19.552963 7.550 7.320 6.909 6.854 6.785 000 -129.990714 19.541471 7.830 7.540 7.065 7.026 7.006 SSS -129.991962 19.201624 10.030 9.580 8.693 8.523 8.509 000 -129.993264 20.158278 9.290 8.960 8.271 8.195 8.089 000 -129.996168 20.031446 9.680 9.270 8.453 8.257 8.224 000 -129.996469 19.668980 10.280 9.980 9.000 8.880 8.780 000 -129.998222 18.943272 10.260 9.900 9.455 9.363 9.298 000 -130.002607 19.806555 10.950 10.210 9.335 9.141 9.067 000 -130.005419 20.135620 10.300 9.790 8.859 8.674 8.575 000 -130.007131 18.999884 10.790 10.100 9.066 8.766 8.680 000 -130.018191 20.192007 12.000 10.400 9.328 8.804 8.698 DDD -130.020450 19.729258 10.430 9.860 8.926 8.686 8.669 000 -130.026153 19.454124 11.210 10.440 9.221 8.963 8.869 000 -130.026496 19.307369 12.300 11.100 9.732 9.332 9.239 000 -130.031376 20.380310 12.200 10.600 8.454 7.755 7.593 000 -130.032143 21.062750 9.810 9.390 8.561 8.390 8.336 000 -130.047724 19.971142 0.000 6.600 6.519 6.551 6.519 000 -130.051330 19.639511 10.580 9.930 8.959 8.720 8.674 000 -130.063963 19.994291 9.190 8.840 8.213 8.146 8.040 000 -130.070263 20.567623 12.400 11.100 9.708 9.167 9.044 000 -130.073432 19.787571 10.820 10.130 8.911 8.676 8.604 000 -130.075420 19.532030 7.710 7.530 7.242 7.211 7.163 000 -130.083909 19.348989 0.000 6.800 6.197 6.098 6.039 000 -130.086463 19.686699 7.920 7.700 7.360 7.341 7.266 DDD -130.093007 20.106760 10.640 10.220 9.147 8.946 8.813 000 -130.093244 18.672731 12.290 10.460 8.547 7.967 7.821 000 -130.094662 19.464787 11.300 10.800 9.655 9.405 9.348 000 -130.095894 20.826693 10.340 9.620 8.279 7.999 7.876 000 -130.096978 19.673222 0.000 9.900 9.391 9.087 8.975 DDD -130.097778 19.834990 8.260 8.010 7.655 7.666 7.575 DDD -130.106466 19.475794 10.460 9.850 9.012 8.796 8.772 000 -130.108952 19.686457 9.890 9.480 8.581 8.452 8.357 S00 -130.111511 20.181997 8.550 8.220 7.568 7.459 7.402 000 -130.112587 19.544849 6.490 6.310 5.953 5.922 5.856 000 -130.114427 20.383116 10.950 10.300 9.087 8.844 8.719 000 -130.125676 18.953480 11.420 10.860 9.938 9.761 9.716 000 -130.137367 19.194344 9.050 8.750 8.098 7.987 7.941 000 -130.147569 19.186939 13.600 11.600 9.506 8.898 8.751 000 -130.163518 19.228310 8.070 7.820 7.357 7.249 7.225 000 -130.166359 19.669237 11.300 10.500 9.632 9.296 9.202 00D -130.174588 19.223772 10.900 11.400 9.480 9.190 9.074 000 -130.179003 20.570072 11.820 10.790 9.310 8.918 8.845 000 -130.180041 19.719336 7.080 6.840 6.424 6.369 6.324 000 -130.190273 21.034842 12.130 10.800 8.227 7.504 7.571 000 -130.192027 19.309635 10.070 9.550 8.772 8.581 8.542 000 -130.196660 19.543701 11.720 10.590 8.787 8.309 8.204 000 -130.199946 19.658960 11.800 10.800 9.713 9.330 9.270 000 -130.201342 19.921926 11.700 10.700 9.893 9.606 9.515 000 -130.213743 18.250027 9.830 9.290 8.314 8.103 8.038 000 -130.218645 20.266518 8.810 8.510 7.946 7.879 7.798 000 -130.218862 19.483231 11.070 10.420 9.361 9.161 9.043 000 -130.234605 19.580360 6.960 6.780 6.379 6.317 6.269 0C0 -130.237219 19.934866 9.070 8.720 8.137 8.064 8.038 000 -130.262351 18.491320 10.060 8.980 7.172 6.664 6.555 000 -130.269947 19.522926 12.400 10.700 9.391 8.855 8.757 000 -130.280724 19.071253 11.060 10.290 8.996 8.666 8.665 000 -130.288689 18.636345 11.780 10.890 9.487 9.092 9.021 000 -130.290038 19.855198 11.650 10.700 9.433 9.055 8.939 000 -130.291762 19.508951 10.730 10.270 9.197 8.939 8.928 000 -130.294486 19.829584 9.460 9.070 8.385 8.240 8.188 000 -130.303846 18.810345 12.300 10.800 9.306 8.734 8.616 000 -130.307370 19.921974 8.610 8.360 7.903 7.833 7.772 000 -130.313820 20.476915 0.000 6.800 6.425 6.379 6.378 000 -130.326692 19.260923 0.000 8.100 7.460 7.362 7.304 000 -130.357689 19.943598 11.400 10.870 9.673 9.406 9.338 000 -130.362421 19.542482 10.370 9.930 8.943 8.785 8.727 000 -130.362885 20.621727 13.000 10.900 9.584 8.876 8.714 000 -130.369551 19.746714 11.600 10.300 9.816 9.560 9.472 000 -130.381437 18.500628 11.010 10.230 9.386 9.156 9.108 000 -130.390995 20.680796 11.600 10.900 9.830 9.522 9.434 000 -130.392977 18.936029 12.600 10.700 8.741 7.989 7.807 000 -130.396104 19.662453 9.840 8.590 6.609 6.052 5.930 000 -130.400880 19.142637 9.810 9.390 8.528 8.405 8.349 000 -130.416755 20.672203 10.200 9.660 8.814 8.622 8.584 000 -130.419608 21.020794 12.000 10.700 9.138 8.609 8.535 000 -130.426224 19.660530 10.140 9.650 8.720 8.548 8.488 000 -130.432573 20.226910 11.350 10.420 9.492 9.233 9.170 000 -130.439561 19.267290 10.740 10.200 9.227 9.053 8.934 000 -130.462470 18.548532 12.100 10.600 8.981 8.377 8.298 000 -130.471429 20.159449 8.920 8.590 7.949 7.823 7.783 000 -130.482788 19.689699 11.500 10.700 9.885 9.642 9.581 000 -130.490946 18.911722 9.950 9.490 8.634 8.477 8.460 000 -130.522827 19.599604 11.900 10.000 8.977 8.454 8.352 000 -130.527115 19.411247 8.230 7.990 7.545 7.448 7.404 000 -130.545012 18.934359 8.140 7.930 7.453 7.382 7.335 000 -130.564572 19.687710 10.450 9.970 9.046 8.823 8.758 000 -130.583661 18.665991 12.100 10.700 9.317 8.839 8.729 000 -130.583845 20.036633 10.400 9.820 8.698 8.467 8.473 000 -130.590115 20.181667 0.000 9.300 8.457 8.304 8.260 000 -130.602992 19.588247 11.750 10.860 9.853 9.577 9.489 000 -130.617460 20.272011 12.500 10.100 8.706 7.975 7.795 000 -130.634411 19.396219 11.710 10.880 9.831 9.558 9.459 000 -130.650526 20.554123 12.300 10.600 8.854 8.303 8.268 000 -130.653408 18.388876 10.660 10.160 9.135 8.913 8.970 000 -130.669668 19.543194 0.000 9.900 8.932 8.715 8.734 000 -130.685071 19.579985 10.240 9.770 8.846 8.637 8.640 000 -130.687305 19.046223 12.200 10.700 9.164 8.576 8.559 000 -130.688545 18.860035 11.880 10.960 9.542 9.241 9.178 000 -130.700944 19.467405 12.400 11.300 9.884 9.339 9.268 000 -130.721132 20.819225 9.220 8.900 8.198 8.110 8.082 000 -130.774770 19.437580 10.690 9.990 8.764 8.506 8.450 000 -130.779428 19.068369 10.230 9.620 8.564 8.374 8.352 000 -130.801961 20.328739 10.920 9.990 8.718 8.458 8.312 000 -130.815120 18.650373 13.000 11.200 9.921 9.295 9.188 000 -130.833286 18.548901 12.300 10.000 8.772 8.141 7.988 000 -130.834134 19.769035 11.450 10.860 9.688 9.413 9.395 000 -130.858109 20.498444 12.400 10.800 9.759 9.300 9.215 000 -130.898095 20.189604 10.750 10.090 9.196 9.011 8.890 000 -130.933399 18.568663 13.300 11.200 9.386 8.701 8.510 000 -130.934152 19.891941 13.600 11.800 9.722 9.025 8.812 000 -130.950629 18.800756 10.790 10.240 9.202 8.974 8.941 000 -130.973287 19.700439 11.020 10.410 9.393 9.160 9.061 000 -130.983866 19.034151 8.470 8.360 7.603 7.334 7.217 000 -131.030621 20.076960 10.640 10.190 9.298 9.136 9.057 000 -131.049109 19.725670 13.100 11.000 9.815 9.279 9.081 000 -131.113973 19.964024 10.700 9.530 7.760 7.304 7.272 000 -131.116094 20.309053 12.200 11.200 9.807 9.358 9.245 000 -131.116435 20.202126 0.000 10.400 8.929 8.456 8.392 000 -131.124868 20.062590 13.000 10.900 9.617 9.047 8.887 000 -131.154339 19.710873 11.270 10.590 9.391 9.083 9.043 000 -131.178145 19.458462 12.200 10.300 9.347 8.914 8.720 000 -131.192321 19.894451 11.120 9.380 6.687 5.975 5.786 000 -131.193911 19.697485 0.000 10.800 9.549 9.292 9.252 000 -131.197492 19.427179 10.090 9.400 8.122 7.859 7.810 000 -131.197868 19.050371 12.500 11.200 9.972 9.494 9.376 000 -131.208846 20.187943 14.500 12.400 9.814 9.181 9.016 000 -131.217195 20.055637 12.250 10.870 8.770 8.261 8.096 000 -131.267657 20.357742 10.910 10.440 9.382 9.159 9.152 000 -131.304601 19.686888 12.180 10.970 9.579 9.263 9.179 000 -131.358376 19.820440 10.240 9.660 8.589 8.380 8.299 000 -131.365892 20.190729 12.900 11.100 9.315 8.797 8.662 000 -131.387482 19.946381 11.820 10.950 9.467 9.065 9.020 000 -131.479769 19.685623 11.820 11.120 9.718 9.361 9.328 000 diff --git a/pro/plate/praesepe.j13 b/pro/plate/praesepe.j13 deleted file mode 100644 index 0861a2f77..000000000 --- a/pro/plate/praesepe.j13 +++ /dev/null @@ -1,534 +0,0 @@ -# j>10&&j<13&&dist<1.5&&opt&&random(dimen(ra))10&&dist<1.5 -# _sra _sdec _b _r _j _h _k _flag -# -129.318187 19.486231 15.000 13.100 11.344 10.612 10.487 000 -129.326248 19.699020 12.300 11.300 10.202 9.860 9.814 000 -129.342634 20.177017 12.200 11.300 10.193 9.923 9.812 000 -129.359987 19.486902 14.800 13.100 11.580 11.023 10.822 000 -129.360007 19.132177 16.100 13.900 12.007 11.366 11.192 000 -129.364832 19.617584 12.600 11.300 10.285 9.958 9.848 000 -129.613353 19.195747 14.400 14.000 13.004 12.693 12.602 000 -129.623496 19.862503 15.000 13.400 11.669 11.102 10.968 000 -129.652443 19.510420 13.200 12.100 11.268 10.956 10.936 000 -129.666322 18.927544 13.700 13.300 12.390 12.145 12.094 000 -129.704919 19.747267 15.100 14.400 13.539 13.282 13.245 000 -129.718319 19.084482 13.100 12.400 11.741 11.547 11.441 000 -129.738461 20.181559 15.000 13.000 11.477 10.871 10.714 000 -129.754578 19.633707 15.300 14.600 13.705 13.418 13.316 000 -129.763426 20.043777 15.300 13.900 11.885 11.191 11.061 000 -129.770655 20.065880 15.500 14.200 12.931 12.397 12.263 000 -129.774359 19.305099 12.800 12.400 11.382 11.165 11.134 000 -129.808194 19.032036 14.800 13.900 13.283 12.959 12.864 000 -129.815825 20.070578 15.800 14.300 11.760 11.059 10.859 000 -129.841050 19.861177 13.200 11.900 10.894 10.447 10.372 000 -129.863302 19.403969 15.400 14.800 13.913 13.628 13.571 000 -129.872540 19.786640 13.700 12.000 10.729 10.204 10.045 000 -129.888457 19.860073 15.400 14.400 13.714 13.365 13.353 000 -129.896909 19.122374 15.600 15.000 13.972 13.626 13.527 000 -129.903289 19.783501 16.100 14.500 13.331 12.874 12.854 000 -129.909863 19.440889 13.600 12.300 10.874 10.403 10.306 000 -129.912035 19.732738 15.700 14.500 13.784 13.381 13.288 000 -129.946108 19.827656 13.900 12.000 11.039 10.549 10.449 000 -129.996918 19.155373 14.500 13.500 12.798 12.485 12.414 000 -129.999190 19.344851 14.500 14.000 12.780 12.440 12.310 S00 -129.999948 19.577936 14.900 12.600 11.143 10.641 10.566 000 -130.010179 19.006205 13.700 12.600 11.236 10.760 10.700 000 -130.019133 19.297306 15.800 15.000 14.176 13.779 13.765 000 -130.040340 19.621422 12.900 11.700 10.588 10.255 10.139 000 -130.055887 19.251167 15.400 14.300 13.196 12.626 12.540 000 -130.056046 19.778797 14.000 12.600 11.328 10.774 10.652 000 -130.059462 18.958755 14.600 13.000 11.567 10.913 10.826 000 -130.065467 19.915091 14.000 12.100 10.710 10.150 10.014 000 -130.080433 19.034065 12.900 11.700 10.557 10.070 9.951 000 -130.081453 20.137699 15.100 14.400 13.111 12.633 12.508 000 -130.104201 19.386320 15.900 14.800 13.538 13.152 13.027 000 -130.109381 19.219435 14.100 12.300 11.093 10.581 10.452 000 -130.113947 19.481422 16.200 14.400 13.539 13.025 12.924 000 -130.114660 19.655508 14.900 13.300 11.321 10.823 10.692 000 -130.132903 19.920465 12.600 11.400 10.813 10.518 10.458 000 -130.133599 19.834084 15.700 14.600 14.061 13.731 13.595 000 -130.139477 19.633623 13.100 11.900 10.716 10.228 10.176 000 -130.177034 19.566031 12.300 11.300 10.116 9.792 9.707 000 -130.195004 19.127205 14.400 13.700 12.423 11.942 11.915 000 -130.228647 19.935205 13.300 11.600 10.600 10.206 10.145 D00 -130.236236 19.734795 12.900 11.900 10.719 10.333 10.219 000 -130.280222 19.446934 13.300 12.000 10.857 10.397 10.313 000 -130.290821 19.935366 14.600 12.600 11.517 10.890 10.768 000 -130.292965 19.818647 12.500 11.400 10.204 9.813 9.746 000 -130.294646 19.013441 15.600 14.900 14.107 13.808 13.629 000 -130.314238 20.037798 15.300 13.500 11.878 11.176 11.051 000 -130.316754 19.747629 14.100 12.700 12.247 11.821 11.724 000 -130.333213 20.180408 12.900 12.300 12.215 11.797 11.757 000 -130.348590 20.205626 15.300 14.200 13.085 12.533 12.451 000 -130.349593 20.249241 15.800 13.500 11.661 10.976 10.800 000 -130.390995 19.969095 12.300 10.900 10.396 10.089 9.917 000 -130.397396 19.536581 13.200 12.700 11.886 11.634 11.606 000 -130.400008 19.107090 15.100 13.500 11.747 11.123 10.964 000 -130.407546 19.265205 15.100 14.000 13.018 12.660 12.575 000 -130.415198 19.336313 15.400 15.000 14.150 13.869 13.756 000 -130.418223 19.101978 15.000 14.000 12.315 11.776 11.598 000 -130.432508 19.271910 13.700 13.100 11.978 11.685 11.625 000 -130.433787 20.255947 15.300 14.500 13.652 13.295 13.208 000 -130.452593 19.309929 12.500 12.000 11.461 11.317 11.272 000 -130.466616 20.167046 13.700 12.000 10.585 10.217 10.093 000 -130.476594 19.257397 12.300 11.600 10.051 9.738 9.662 000 -130.495190 20.107569 14.100 12.400 11.241 10.717 10.596 000 -130.547903 19.277060 12.900 12.000 10.675 10.255 10.181 000 -130.548648 20.010023 14.800 13.800 12.957 12.549 12.459 000 -130.551361 19.721111 15.000 14.000 12.745 12.199 12.063 000 -130.569954 19.925205 15.000 15.000 14.415 14.113 14.005 000 -130.570209 19.617830 13.600 12.700 11.757 11.452 11.360 000 -130.584539 20.112379 15.600 15.100 14.478 14.245 14.249 000 -130.656608 20.035202 15.600 14.300 13.294 12.769 12.710 000 -130.663649 19.630339 15.100 14.600 14.008 13.753 13.719 000 -130.677089 19.099691 12.200 11.300 10.308 10.023 9.885 000 -130.680623 19.695957 13.200 12.900 12.111 11.863 11.813 000 -130.738027 19.681318 14.300 13.500 12.943 12.719 12.662 000 -130.754025 19.535191 13.500 13.000 12.065 11.838 11.779 000 -130.777960 19.791576 14.300 13.400 11.471 10.882 10.778 000 -130.778106 19.959019 14.200 13.500 12.191 11.746 11.697 000 -130.784292 19.713196 14.300 12.700 11.300 10.760 10.674 000 -130.885588 20.247051 12.500 12.100 11.107 10.812 10.740 000 diff --git a/pro/plate/radec_to_xyfocal.pro b/pro/plate/radec_to_xyfocal.pro deleted file mode 100644 index 0c95f232b..000000000 --- a/pro/plate/radec_to_xyfocal.pro +++ /dev/null @@ -1,103 +0,0 @@ -;+ -; NAME: -; radec_to_xyfocal -; PURPOSE: -; Take RA and DEC values and return XFOCAL and YFOCAL for a plate -; CALLING SEQUENCE: -; radec_to_xyfocal, ra, dec, xfocal, yfocal, racen=racen, $ -; deccen=deccen, airtemp=airtemp, mjd=mjd -; INPUTS: -; ra,dec - [N] arrays of locations (J2000 deg) -; racen - RA center for tile (J2000 deg) -; deccen - DEC center for tile (J2000 deg) -; OPTIONAL INPUTS: -; lst - LST of observation (defaults to racen) -; airtemp - Design temperature (in C, default to 5) -; OUTPUTS: -; xfocal, yfocal - [N] arrays of focal plane positions -; COMMENTS: -; Designed for the SDSS 2.5m at APO -; PA=0 ALWAYS -; BUGS: -; ALIGNMENT FIBERS HAVE OFFSET????? -; REVISION HISTORY: -; 26-Oct-2006 Written by MRB, NYU -;- -;------------------------------------------------------------------------------ -pro radec_to_xyfocal, ra, dec, xfocal, yfocal, racen=racen, deccen=deccen, $ - airtemp=airtemp, lst=lst, norefrac=norefrac, $ - nodistort=nodistort - -platescale = 217.7358D ; mm/degree -fudge=1.D/1.0003D - -;; from $PLATE_DIR/test/plParam.par -rcoeffs=[-0.000137627D, -0.00125238D, 1.5447D-09, 8.23673D-08, $ - -2.74584D-13, -1.53239D-12, 6.04194D-18, 1.38033D-17, $ - -2.97064D-23, -3.58767D-23] - -;; deal with atmospheric refraction -if(NOT keyword_set(norefrac)) then begin - apo_refrac, ra, dec, racen, deccen, ra_refrac, dec_refrac, lst=lst, $ - airtemp=airtemp -endif else begin - ra_refrac=ra - dec_refrac=dec -endelse - -;; convert to focal coordinates -;radec_to_munu, ra_refrac, dec_refrac, mu, nu, node=racen-90., $ -;incl=deccen -;xfocal = platescale * (mu - racen) -;yfocal = platescale * (nu ) -xx= -sin(ra_refrac*!DPI/180.) * sin((90.-dec_refrac)*!DPI/180.) -yy= -cos(ra_refrac*!DPI/180.) * sin((90.-dec_refrac)*!DPI/180.) -zz= cos((90.-dec_refrac)*!DPI/180.) -xi= -xx*cos(racen*!DPI/180.) + yy*sin(racen*!DPI/180.) -yi= -yy*cos(racen*!DPI/180.) - xx*sin(racen*!DPI/180.) -zi= zz -xl= xi -yl= yi*sin((90.-deccen)*!DPI/180.) + zi*cos((90.-deccen)*!DPI/180.) -zl= zi*sin((90.-deccen)*!DPI/180.) - yi*cos((90.-deccen)*!DPI/180.) -rfocal=asin(sqrt(xl^2+zl^2))*180/!DPI*platescale -posang=atan(-xl, zl) - -if(NOT keyword_set(nodistort)) then begin - correction=replicate(rcoeffs[0], n_elements(rfocal)) - for i=1L, n_elements(rcoeffs)-1L do begin - correction=correction+rcoeffs[i]*((double(rfocal))^(double(i))) - endfor - rfocal= rfocal+correction -endif - -xfocal= -rfocal*sin(posang)*fudge -yfocal= rfocal*cos(posang) - - -;;dradeg = 180.0d0/!dpi -;;dtheta = djs_diff_angle(ra_refrac, dec_refrac, racen, deccen) -;;sra=2.*(float((ra_refrac-racen) gt 0)-0.5) -;;dra = djs_diff_angle(ra_refrac, replicate(deccen, n_elements(dec_refrac)), $ -;; racen, deccen)*sra -;;sdec=2.*(float((dec_refrac-deccen) gt 0)-0.5) -;;ddec = djs_diff_angle(replicate(racen, n_elements(ra_refrac)), dec_refrac, $ -;; racen, deccen)*sdec -;;dr= tan(dtheta/dradeg) -;;xsky= dtheta/dradeg*dra/dr -;;ysky= ddec -;;xfocal = xsky*platescale -;;yfocal = ysky*platescale - -;cosdtheta = cos(dtheta/dradeg) -;fac = dtheta/tan(dtheta/dradeg) -;r1 = ra_refrac/dradeg -;d1 = dec_refrac/dradeg -;d0 = (deccen)/dradeg -;r0 = racen/dradeg -;xsky = cos(d1) * sin(r1-r0)/cosdtheta * fac -;ysky = (cos(d0)*sin(d1) - sin(d0)*cos(d1)*cos(r1-r0))/cosdtheta * fac - -;; apply radial distortions - -return -end diff --git a/pro/plate/random_decollide.pro b/pro/plate/random_decollide.pro deleted file mode 100644 index 721761d2e..000000000 --- a/pro/plate/random_decollide.pro +++ /dev/null @@ -1,54 +0,0 @@ -;+ -; NAME: -; random_decollide -; PURPOSE: -; Take a set of RAs and DECs and find a random, decollided set -; CALLING SEQUENCE: -; random_decollide, ra, dec -; INPUTS: -; REVISION HISTORY: -; 26-Oct-2006 Written by MRB, NYU -;- -;------------------------------------------------------------------------------ -function random_decollide, ra, dec, holesize=holesize, seed=seed, ndec=ndec, $ - guide=guide - -if(NOT keyword_set(holesize)) then holesize=holesize(guide=guide) - -iran=shuffle_indx(n_elements(ra), seed=seed) -ing=spheregroup(ra[iran], dec[iran], holesize, firstg=firstg, $ - nextg=nextg, multg=multg) -ng=max(ing)+1L - -holeok=bytarr(n_elements(ra)) -for i=0L, ng-1L do begin - if(multg[i] eq 1) then begin - holeok[firstg[i]]=1 - endif else begin - indx=lonarr(multg[i])-1L - ok=bytarr(multg[i]) - k=0L - j=firstg[i] - while(j ne -1L) do begin - indx[k]=j - j=nextg[j] - k=k+1L - endwhile - ok[0]=1L - for k=1L, multg[i]-1L do begin - iok=where(ok) - spherematch, ra[iran[indx[iok]]], dec[iran[indx[iok]]], $ - ra[iran[indx[k]]], dec[iran[indx[k]]], $ - holesize, m1, m2, d12 - if(m2[0] eq -1) then ok[k]=1 - endfor - iok=where(ok) - holeok[indx[iok]]=1 - endelse -endfor - -idec=iran[where(holeok, ndec)] - -return, idec - -end diff --git a/pro/plate/sbss_testplate.pro b/pro/plate/sbss_testplate.pro deleted file mode 100644 index 9f7ff86b2..000000000 --- a/pro/plate/sbss_testplate.pro +++ /dev/null @@ -1,420 +0,0 @@ -; Generate a test plate for Bright Stars as a plPlugMapT files -; that can go directly through the "plate" product code. -; Call it tile #9001, plate #9001. - -; Exclusion zone for guide fibers = 6.995 mm = 115.654 arcsec -; Exclusion zone for alignment holes = 3.327 mm = 55.0079 arcsec - -pro sbss_testplate - - plateid = 9001L - tileid = 9001L - setenv, 'HIPPARCOS_DIR=/u/schlegel/hipparcos' -; setenv, 'BOSS_SPECTRO_REDUX=/u/dss/spectro' - - ;---------- - ; Read plug-map info for plate 360, which we will use for selecting - ; spectro-photo stars and for a template of the plPlugMap file format. - -; readspec, 360, plug=plug360 - yanny_read, '/u/dss/astrolog/51780/plPlugMapM-0360-51774-01.par', $ - pp, hdr=plughdr, enums=plugenum, structs=plugstruct - plug360 = *pp[0] - - ;---------- - ; Create a blank plug-map - - blankplug = plug360[0] - struct_assign, {junk:0}, blankplug - - ;--------------------------------------------------------------------------- - ; GUIDE FIBERS - ;--------------------------------------------------------------------------- - - ;---------- - ; Select initial guesses for pointing centers: - ; Four at DEC=+55 - ; Four at DEC=+53 - ; One at the position of plates 360 and 362 - - racen = [265.0, 267.0, 269.0, 271.0, 265.0, 267.0, 269.0, 271.0, 264.3484] - deccen = [ 55.0, 55.0, 55.0, 55.0, 53.0, 53.0, 53.0, 53.0, 54.53896] - npoint = n_elements(racen) - - ;---------- - ; Make list of which pointing each guide fiber is assigned to - - gfiber = create_struct( $ - 'pointing' , 0L, $ - 'fibernum' , 0L, $ - 'ra' , 0.d, $ - 'dec' , 0.d, $ - 'hip' , 0L , $ - 'tyc' , 0L , $ - 'vmag' , 0.0, $ - 'xreach' , 0.0, $ - 'yreach' , 0.0, $ - 'rreach' , 0.0, $ - 'xprefer' , 0.d, $ - 'yprefer' , 0.d ) - gfiber = replicate(gfiber, 11) -; gfiber.pointing = [0,0,0,0,1,1,2,4,4,5,8] - ; Put the last two guide fibers (which are bigger) in the 0th pointing - gfiber.pointing = [5,8,0,0,1,1,2,4,4,0,0] - igolden = 9 ; This says that gfiber[igolden] is the golden guide fiber - gfiber.fibernum = lindgen(11) + 1 - - ;---------- - ; Read the list of possible guide stars from the Tycho catalog. - ; Trim to some subset now for simplicity in a boneheaded manner. - - tycdat = tyc_read(/small) - indx = where(tycdat.radeg GT min(racen)-2.0 $ - AND tycdat.radeg LT max(racen)+2.0 $ - AND tycdat.dedeg GT min(deccen)-2.0 $ - AND tycdat.dedeg LT max(deccen)+2.0 $ - AND tycdat.vmag GE 10.0 $ - AND tycdat.vmag LE 12.5 ) - tycdat = tycdat[indx] - - ;---------- - ; Assign a golden fiber to each pointing, and - ; tweak the pointing centers. - - for ipoint=0, npoint-1 do begin - adiff = djs_diff_angle(racen[ipoint], deccen[ipoint], $ - tycdat.radeg, tycdat.dedeg) - mindiff = min(adiff, ibest) -print, 'Shifting pointing number ', ipoint, ' by ', mindiff, ' deg' - - ; The plate center will be 10 arc min **above** this star - ; Check this!!! - racen[ipoint] = tycdat[ibest].radeg - deccen[ipoint] = tycdat[ibest].dedeg + 10.0/60 - - ; The golden fiber is assigned to pointing #0, but will - ; also be used for all other pointings. - if (ipoint EQ 0) then begin - gfiber[igolden].pointing = 0 - gfiber[igolden].ra = tycdat[ibest].radeg - gfiber[igolden].dec = tycdat[ibest].dedeg - gfiber[igolden].vmag = tycdat[ibest].vmag - gfiber[igolden].hip = tycdat[ibest].hip - gfiber[igolden].tyc = tycdat[ibest].tyc - endif - endfor - - ;---------- - ; The following info is from the "plate" product in the - ; file "$PLATE_DIR/test/plParam.par". - ; XREACH,YREACH = Center of the fiber reach [mm] - ; RREACH = Radius of the fiber reach [mm] - ; XPREFER,YREACH = Preferred position for the fiber [mm] - ; Note that the plate scale is approx 217.7358 mm/degree. - ; Moving +RA is +XFOCAL, +DEC is +YFOCAL. - - platescale = 217.7358 - guideparam = [[ 1, 199.0, -131.0, 165.0, 199.0, -131.0 ], $ - [ 2, 93.0, -263.0, 165.0, 93.0, -263.0 ], $ - [ 3, -121.0, -263.0, 165.0, -121.0, -263.0 ], $ - [ 4, -227.0, -131.0, 165.0, -227.0, -131.0 ], $ - [ 5, -199.0, 131.0, 165.0, -199.0, 131.0 ], $ - [ 6, -93.0, 263.0, 165.0, -93.0, 263.0 ], $ - [ 7, 121.0, 263.0, 165.0, 121.0, 263.0 ], $ - [ 8, 227.0, 131.0, 165.0, 227.0, 131.0 ], $ - [ 9, 14.0, 131.0, 139.5, 14.0, 65.0 ], $ - [ 10, -14.0, -131.0, 165.0, -14.0, -65.0 ], $ - [ 11, 93.0, -131.0, 139.5, 93.0, -131.0 ] ] - gfiber.xreach = transpose(guideparam[1,*]) - gfiber.yreach = transpose(guideparam[2,*]) - gfiber.rreach = transpose(guideparam[3,*]) - gfiber.xprefer = transpose(guideparam[4,*]) - gfiber.yprefer = transpose(guideparam[5,*]) - - ;---------- - ; Position each guide fiber (except we've already done the golden one) - - for iguide=0, 10 do begin - if (iguide NE igolden) then begin - - ; This pointing is centered here... - thisracen = racen[gfiber[iguide].pointing] - thisdeccen = deccen[gfiber[iguide].pointing] - - ; This guide fiber will now want to be at - ; the plate position (gfiber[iguide].xprefer, gfiber[iguide].yprefer) - ; which we convert to coordinates (thisra1,thisdec1) - dphi = gfiber[iguide].xprefer / platescale - dtheta = gfiber[iguide].yprefer / platescale - thisra1 = thisracen + dphi / cos(thisdeccen/!radeg) ; approximate - thisdec1 = thisdeccen + dtheta - - ; Now find the Tycho star closest to (thisra,thisdec) - ; Give a huge penalty if more than 1.49 deg from the plate center - adiff = djs_diff_angle(thisra1, thisdec1, $ - tycdat.radeg, tycdat.dedeg) $ - + 999 * (djs_diff_angle(thisracen, thisdeccen, $ - tycdat.radeg, tycdat.dedeg) GT 1.49) - - mindiff = min(adiff, ibest) -print,'Guide star #', iguide+1, ' offset from optimal = ', mindiff, ' deg' -; Need to check that this position is within the paramters!!!??? - - ; Fill in the information for this guide fiber - gfiber[iguide].ra = tycdat[ibest].radeg - gfiber[iguide].dec = tycdat[ibest].dedeg - gfiber[iguide].vmag = tycdat[ibest].vmag - gfiber[iguide].hip = tycdat[ibest].hip - gfiber[iguide].tyc = tycdat[ibest].tyc - endif - endfor - - ;---------- - ; Create the output structure and put the guide fibers into it - - addplug = replicate(blankplug, 11) - addplug.objid = transpose([ $ - [replicate(plateid,11)], $ ; Plate number - [gfiber.pointing] , $ ; Pointing number - [gfiber.hip] , $ ; Hipparcos ID - [gfiber.tyc] , $ ; Tycho ID - [replicate(0L,11)]]) ; (Unused) - addplug.holetype = 'GUIDE' - addplug.ra = gfiber.ra - addplug.dec = gfiber.dec - ; Use the V magnitude for all 5 magnitudes in this file - addplug.mag = gfiber.vmag ## replicate(1L, 5) - addplug.objtype = 'NA' - addplug.fiberid = gfiber.fibernum ; These are numbered 1 through 11 - addplug.primtarget = gfiber.pointing ; Put pointing num here too - addplug.sectarget = 64L - allplug = addplug - - ;--------------------------------------------------------------------------- - ; SCIENCE FIBERS - ;--------------------------------------------------------------------------- - - ;---------- - ; Select the Hipparcos (science) targets - ; Trim to some subset now for simplicity in a boneheaded manner. - ; For now, trim to V <= 11.0. - - hipdat = hip_read(/small) - indx = where(hipdat.radeg GT min(racen)-2.0 $ - AND hipdat.radeg LT max(racen)+2.0 $ - AND hipdat.dedeg GT min(deccen)-2.0 $ - AND hipdat.dedeg LT max(deccen)+2.0 $ - AND hipdat.vmag NE 0.0 $ - AND hipdat.vmag LE 11.0 ) - hipdat = hipdat[indx] - - ;---------- - ; Loop through each pointing and assign science targets - ; Don't do the last pointing, which is reserved for plate 360 objects - - for ipoint=0, npoint-2 do begin - adiff = djs_diff_angle(racen[ipoint], deccen[ipoint], $ - hipdat.radeg, hipdat.dedeg) - iadd = where(adiff LT 1.49, nadd) - if (nadd EQ 0) then $ - message, 'Crap! No stars in this pointing!' - - addplug = replicate(blankplug, nadd) - addplug.objid = transpose([ $ - [replicate(plateid,nadd)], $ ; Plate number - [replicate(ipoint,nadd)], $ ; Pointing number - [hipdat[iadd].hip], $ ; Hipparcos ID - [hipdat[iadd].tyc], $ ; Tycho ID - [replicate(0L,nadd)]]) ; (Unused) - addplug.holetype = 'OBJECT' - addplug.ra = hipdat[iadd].radeg - addplug.dec = hipdat[iadd].dedeg - ; Use the V magnitude for all 5 magnitudes in this file - addplug.mag = hipdat[iadd].vmag ## replicate(1L, 5) - addplug.objtype = 'STAR_BHB' - addplug.primtarget = replicate(ipoint,nadd) ; Put pointing num here too - - allplug = [allplug, addplug] - endfor - - ;---------- - ; Assign science targets to the last pointing from plate 360 - ; This will include the 8 SPECTROPHOTO_STD and 8 REDDEN_STD - - iadd = where( strtrim(plug360.objtype,2) EQ 'SPECTROPHOTO_STD' $ - OR strtrim(plug360.objtype,2) EQ 'REDDEN_STD', nadd) -; OR (strtrim(plug360.holetype,2) EQ 'OBJECT' AND plug360.mag[2] LT 16.5), nadd) - addplug = plug360[iadd] - addplug.primtarget = replicate(npoint-1,nadd) ; Put pointing num here - - ; Check the positions and modify if necessary -- what a kludge!!!??? - ; This happens because the plate center isn't exactly where we want it. - adiff = djs_diff_angle(racen[npoint-1], deccen[npoint-1], $ - addplug.ra, addplug.dec) - for i=0, n_elements(addplug)-1 do begin - if (adiff[i] GT 1.49) then begin -print, 'Kludging an object position!!' - if (addplug[i].ra GT racen[npoint-1]) then $ - addplug[i].ra = addplug[i].ra - 0.25 $ - else $ - addplug[i].ra = addplug[i].ra + 0.25 - if (addplug[i].dec GT deccen[npoint-1]) then $ - addplug[i].dec = addplug[i].dec - 0.25 $ - else $ - addplug[i].dec = addplug[i].dec + 0.25 - endif - endfor - - allplug = [allplug, addplug] - - ;--------------------------------------------------------------------------- - ; ADD A LINE OF HOLES IN DECLINATION NEXT TO THE GOLDEN GUIDE FIBER - ; This will be used for something like "bd17smear". - ;--------------------------------------------------------------------------- - - ;---------- - ; Add exactly 10 such holes. - ; Say this is also pointing #0. - - nadd = 10 - ipoint = 0 - thisra = replicate(gfiber[igolden].ra, nadd) - thisdec = gfiber[igolden].dec + [-5,-4,-3,-2,-1,1,2,3,4,5]/60.0 - addplug = replicate(blankplug, nadd) - - addplug.objid = transpose([ $ - [replicate(plateid,nadd)], $ ; Plate number - [replicate(ipoint,nadd)] , $ ; Pointing number - [replicate(0L,nadd)] , $ ; (Unused) - [replicate(0L,nadd)] , $ ; (Unused) - [replicate(0L,nadd)]]) ; (Unused) - addplug.holetype = 'OBJECT' - addplug.ra = thisra - addplug.dec = thisdec - ; Use the V magnitude for this guide fiber - addplug.mag = gfiber[igolden].vmag ## replicate(1L, 5) - addplug.objtype = 'STAR_BHB' - addplug.primtarget = replicate(ipoint,nadd) ; Put pointing num here too - - allplug = [allplug, addplug] - - ;--------------------------------------------------------------------------- - ; ADD A BUNCH OF SKY FIBERS (in random positions) - ;--------------------------------------------------------------------------- - - nadd = 1000 - ipoint = 0 - addplug = replicate(blankplug, nadd) - addplug.ra = 3.0 * randomu(2345, nadd) - 1.5 + racen[0] - addplug.dec = 3.0 * randomu(3456, nadd) - 1.5 + deccen[0] - addplug.mag = 25.0 ## replicate(1L, 5) ; Call these 25th-mag objects - ; Set to COHERENT_SKY,NA for a plPlugMapT file - addplug.holetype = 'COHERENT_SKY' - addplug.objtype = 'NA' - ; Set to OBJECT,SKY for a plPlugMapP file -; addplug.holetype = 'OBJECT' -; addplug.objtype = 'SKY' - addplug.primtarget = replicate(ipoint,nadd) ; Put pointing num here too - addplug.sectarget = 16L - - ; Trim away all skies that are not within 1.49 deg of the plate center - adiff = djs_diff_angle(racen[ipoint], deccen[ipoint], $ - addplug.ra, addplug.dec) - ikeep = where(adiff LT 1.49) - addplug = addplug[ikeep] - - allplug = [allplug, addplug] - - ;--------------------------------------------------------------------------- - ; ROTATE COORDINATES -> All to the 0th pointing - ;--------------------------------------------------------------------------- - - ;---------- - ; First, save the real coordinates in the fields STARL,EXPL !! - ; This is just a bizarre solution to avoid losing this information. - - allplug.starl = allplug.ra - allplug.expl = allplug.dec - - ;---------- - ; Loop through each pointing number (saved in the PRIMTARGET field!) - - for ipoint=0, max(allplug.primtarget) do begin - ; Select objects in this pointing - indx = where(allplug.primtarget EQ ipoint) - - ; Now these objects must be rotated from their actual plate - ; center at RACEN[IPOINT],DECCEN[IPOINT] to RACEN[0],DECCEN[0] - plate_rotate, racen[ipoint], deccen[ipoint], racen[0], deccen[0], $ - allplug[indx].ra, allplug[indx].dec, ra_new, dec_new - allplug[indx].ra = ra_new - allplug[indx].dec = dec_new - endfor - - ;--------------------------------------------------------------------------- - ; RESOLVE CONFLICTS - ;--------------------------------------------------------------------------- - -; Resolve conflicts with center hole ??? Separate by 68 arc sec - - ;---------- - ; Loop through all objects, discarding close pairs (within 55 arcsec) - ; Always keep the 1st of any close group of objects. - ; This is a stupidly slow N^2 implementation... - - iobj = 0L - while (iobj LT n_elements(allplug)-1) do begin - adiff = djs_diff_angle(allplug[iobj].ra, allplug[iobj].dec, $ - allplug.ra, allplug.dec) - igood = where(adiff GT 55.0/3600.0 $ - OR lindgen(n_elements(allplug)) EQ iobj, ngood) -; if (ngood LT n_elements(allplug)) then $ -; print, 'Discarding ', n_elements(allplug)-ngood, ' objects' - allplug = allplug[igood] - iobj = iobj + 1L - endwhile - - ;---------- - ; Here's the dumbest thing to do -- pick the first 651 objects, - ; which will be 11 guide + 640 objects. - -; allplug = allplug[0:650] - allplug = allplug[0:699] ; Add extra skies in case of collisions !!!??? - - ;--------------------------------------------------------------------------- - ; WRITE THE FILE - ;--------------------------------------------------------------------------- - - ; Put a running number in the last OBJID field -- for Yanny's benefit - allplug.objid[4] = lindgen(n_elements(allplug)) + 1 - - outhdr = ['completeTileVersion v1_0', $ - 'tileId ' + string(tileid), $ - 'raCen ' + string(racen[0]), $ - 'decCen ' + string(deccen[0]) ] - for ipoint=0, npoint-1 do begin - outhdr = [outhdr, $ - 'raCen'+strtrim(string(ipoint),2)+ ' '+string(racen[ipoint]) ] - outhdr = [outhdr, $ - 'decCen'+strtrim(string(ipoint),2)+ ' '+string(deccen[ipoint]) ] - endfor - outfile = 'plPlugMapT-' + string(plateid,format='(i4.4)') + '.par' - yanny_write, outfile, ptr_new(allplug), hdr=outhdr, $ - enums=plugenum, structs=plugstruct - - adiff = djs_diff_angle(racen[0], deccen[0], allplug.ra, allplug.dec) -print, 'Min distance from plate center = ', min(adiff)*3600.0, ' arcsec' -print, 'Max distance from plate center = ', max(adiff), ' deg' - -stop - -splot,allplug.ra,allplug.dec,ps=4 -i=where(strtrim(allplug.objtype,2) eq 'REDDEN_STD') -soplot,allplug[i].ra,allplug[i].dec,ps=4,color='red' -j=where(strtrim(allplug.objtype,2) eq 'SPECTROPHOTO_STD') -soplot,allplug[j].ra,allplug[j].dec,ps=4,color='green' -k=where(strtrim(allplug.holetype,2) eq 'GUIDE') -for kk=0,10 do sxyouts, allplug[k[kk]].ra, allplug[k[kk]].dec, $ - strtrim(string(allplug[k[kk]].fiberid),2),color='blue', charsize=2 - -end diff --git a/pro/plate/simple_plate.pro b/pro/plate/simple_plate.pro deleted file mode 100644 index 4d8ced161..000000000 --- a/pro/plate/simple_plate.pro +++ /dev/null @@ -1,457 +0,0 @@ -;+ -; NAME: -; simple_plate -; -; PURPOSE: -; Routine to design a single plate. -; -; CALLING SEQUENCE: -; simple_plate, stardata, [ racen=, deccen=, tilenum=, platenum=, $ -; airtemp=, nstd=, nminsky=, ngtarg=, /southern ] -; -; INPUTS: -; stardata - Structure with data for each star; must contain the -; fields RA, DEC, MAG[5], HOLETYPE, OBJTYPE. -; HOLETYPE should be either 'OBJECT' or 'GUIDE'. -; Special values of OBJTYPE are 'SKY', 'REDDEN_STD' and 'SPECTROPHOTO_STD'. -; Other elements in the structure (such as PRIMTARGET,...) -; will be copied into the output plug-map files. -; racen - RA center for tile -; deccen - DEC center for tile -; -; OPTIONAL INPUTS: -; tilenum - Tile number; default to 1. -; platenum - Plate number; default to the same as TILENUMS. -; airtemp - Design temperature for APO; default to 5 deg C. -; COMMENTS: -; All objects will be put on the plate. It will not choose STDs or -; SKY on its own, leaving those to makePlates. -; -; If non-SKY and non-SPECTROPHOTO/REDDEN_STD objects collide with one -; another at all (are < 55'' apart) this routine will halt and -; report an error. -; -; This script generates the following files: -; plObs.par -; plPlan.par -; plPlugMapT-$TILE.par -; plPlugMapP-$PLATE.par -; The commands from the SDSS "plate" product generate the following files: -; makePlates - Generate plPlugMapP-$PLATE.par -; fiberPlates - Generate plOverlay-$PLATE.par, and **overwrite** -; the file plPlugMapP-$PLATE.par -; makeFanuc - Generate plFanuc-$PLATE.par -; makeDrillPos - Generate plMeas-$PLATE.par, plDrillPos-$PLATE.par -; use_cs3 - Generates no files. Simply reports fiber collisions. -; makePlots - Generate plOverlay-$PLATE.ps -; -; When there is a problem, the "fiberPlates" script outputs error -; messages like: -; collision at 554 = {307 125 6 160 47} OBJECT with... -; collision at 565 = {307 125 2 168 4015} COHERENT_SKY with... -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; concat_dir() -; current_mjd() -; djs_diff_angle() -; splog -; yanny_readone() -; yanny_write -; -; INTERNAL SUPPORT ROUTINES: -; approx_radec_to_xyfocal -; design_append() -; -; REVISION HISTORY: -; 14-Jan-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -; Approximately transform RA,DEC -> XFOCAL,YFOCAL. -pro approx_radec_to_xyfocal, ra, dec, xfocal, yfocal, $ - racen=racen, deccen=deccen, airtemp=airtemp - -platescale = 217.7358 ; mm/degree - -radec_to_munu, ra, dec, mu, nu, node=racen-90, incl=deccen -xfocal = platescale * (mu - racen) -yfocal = platescale * nu - -return -end -;------------------------------------------------------- -; Check geometrical conditions -function geometry_check, data, racen, deccen, guide=guide - -platesize=1.49 -platecen=68./3600. - -holeok=bytarr(n_elements(data)) - -; check for things in the plate and not too near the center -spherematch, racen, deccen, data.ra, data.dec, $ - platesize, m1, m2, d12, max=0 -if(m2[0] eq -1) then return, holeok -holeok[m2]=1 -iclose=where(d12 lt platecen, nclose) -if(nclose gt 0) then $ - holeok[m2[iclose]]=0 - -return, holeok - -end -;--------------------------------------------------------- -; return whether each new data collides with an old hole -function collision_check, holedata, newdata, guide=guide - -holesize=holesize(guide=guide) -guidesize=holesize(/guide) -normsize=holesize() - -; find which new objects don't collide with old -holeok=bytarr(n_elements(newdata))+1 - -; first check old guide stars -iguide=where(strtrim(holedata.holetype,2) eq 'GUIDE', nguide) -if(nguide gt 0) then begin - spherematch, holedata[iguide].ra, holedata[iguide].dec, $ - newdata.ra, newdata.dec, 0.5*(holesize+guidesize), $ - m1, m2, d12 - if(m2[0] gt -1) then $ - holeok[m2]=0 -endif - -; first check new non-guide stars -inotguide=where(strtrim(holedata.holetype,2) ne 'GUIDE', nnotguide) -if(nnotguide gt 0) then begin - spherematch, holedata[inotguide].ra, holedata[inotguide].dec, $ - newdata.ra, newdata.dec, $ - 0.5*(holesize+normsize), m1, m2, d12 - if(m2[0] gt -1) then $ - holeok[m2]=0 -endif - -return, holeok - -end -;------------------------------------------------------------------------------ -; Append to current list. (This used to check for collisions, etc; I -; am keeping it as a separate function in case we need to do something -; special --- MRB) -function design_append, allplug, oneplug, nadd=nadd - -common com_simple, blah - -if (n_elements(oneplug) NE 1) then $ - message, 'ONEPLUG must contain only one element' -if (NOT keyword_set(oneplug)) then oneplug = 0 -nadd = 0L - -if(NOT keyword_set(blah)) then blah=0L -oneplug.objid=[1,1,1,1,blah] -blah=blah+1L - -;---------- -; If this is the 1st object in the list, then we can always keep it -if (NOT keyword_set(allplug)) then begin - nadd = 1L - return, oneplug -endif - -;---------- -; Or just append it -nadd = 1L -return, [allplug, oneplug] - -end - -;------------------------------------------------------------------------------ -; Main program -pro simple_plate, stardata1, tilenums=tilenum, platenums=platenum, $ - racen=racen, deccen=deccen, airtemp=airtemp, $ - lst=lst - -if (NOT keyword_set(tilenum)) then tilenum = 583 -if (NOT keyword_set(platenum)) then platenum = 820 -if (n_elements(racen) eq 0 OR n_elements(deccen) eq 0) then $ - message, 'RACEN,DECCEN must be specified' -if (n_elements(airtemp) EQ 0) then airtemp = 5.0 -if (n_elements(lst) eq 0) then lst = racen -ntot = 640L ; Number of fibers -used=bytarr(n_elements(stardata1)) - -;------- -; The fiberPlates code counts REDDEN_STDs as regular objects -; so just rename 'em to SPECTROPHOTO -icrap = where(strmatch(stardata1.objtype,'REDDEN_STD'), ncrap) -if(ncrap gt 0) then begin - stardata1[icrap].objtype = 'SPECTROPHOTO_STD' -endif - -;---------- -; Set up outputs -plugmaptfile = 'plPlugMapT-' + plate_to_string(tilenum) + '.par' -plugmappfile = 'plPlugMapP-' + plate_to_string(platenum) + '.par' -paramdir = concat_dir(getenv('IDLSPEC2D_DIR'), 'examples') -blankplug = (yanny_readone(filepath('plPlugMapT-XXXX.par', $ - root_dir=paramdir), pp, $ - hdr=plughdr, enums=plugenum, $ - structs=plugstruct))[0] -struct_assign, {junk:0}, blankplug - -;---------- -; Add the tags XFOCAL,YFOCAL to the structure of object data. -approx_radec_to_xyfocal, stardata1.ra, stardata1.dec, xfocal, yfocal, $ - racen=racen, deccen=deccen, airtemp=airtemp -xydata = replicate(create_struct('XFOCAL', 0L, 'YFOCAL', 0L), $ - n_elements(stardata1)) -xydata.xfocal = xfocal -xydata.yfocal = yfocal -if(tag_indx(stardata1[0], 'XFOCAL') eq 0) then begin - stardata = struct_addtags(stardata1, xydata) -endif else begin - stardata=stardata1 - struct_assign, xydata, stardata, /nozero -endelse - -;---------- -; Add objects that are neither sky nor stds -; First check that geometric conditions are met: -; no 55'' collisions -; nothing closer than 68'' to center -; nothing further than 1.49 deg from center -indx = where(strtrim(stardata.holetype,2) EQ 'OBJECT' $ - AND strtrim(stardata.objtype,2) NE 'SPECTROPHOTO_STD' $ - AND strtrim(stardata.objtype,2) NE 'SKY' $ - AND strtrim(stardata.objtype,2) NE 'REDDEN_STD', ct) -if(ct eq 0) then $ - message, 'No non-sky, non-std objects? That must be wrong.' -;;if(ct ne nsci) then $ - ;;message, 'Not enough non-sky, non-std objects? That must be wrong.' -holeok=geometry_check(stardata[indx], racen, deccen) -iok=where(holeok, nok) -if(nok ne ct) then $ - message, 'Some non-sky, non-std objects not on plate!' -idec=random_decollide(stardata[indx].ra, stardata[indx].dec, seed=seed, $ - ndec=ndec) -if(ndec ne ct) then $ - message, 'Non-sky, non-std objects collide with one another!' -for i=0L, ct-1L do begin - addplug = blankplug - struct_assign, stardata[indx[i]], addplug - addplug.holetype = 'OBJECT' - addplug.throughput = 1 - allplug = design_append(allplug, addplug, nadd=nadd1) - used[indx[i]]=1 -endfor -iused=where(used) - -;---------- -; Add guide fibers -indx=where(strtrim(stardata.holetype,2) EQ 'GUIDE', ct) -if(ct eq 0) then $ - message, 'No guide fibers! Abort!' -if(1) then begin - holeok=geometry_check(stardata[indx], racen, deccen, /guide) - iok=where(holeok, nok) - if(nok eq 0) then $ - message, 'No guide stars on plate!' - indx=indx[iok] - collok=collision_check(stardata[iused], stardata[indx], /guide) - iok=where(collok, nok) - if(nok eq 0) then $ - message, 'No guide stars do not collide!' - indx=indx[iok] - idec=random_decollide(stardata[indx].ra, stardata[indx].dec, seed=seed, $ - ndec=ndec, /guide) - guide=bytarr(n_elements(stardata)) - guide[indx[idec]]=1 - for i=0L, ndec-1L do begin - addplug = blankplug - struct_assign, stardata[indx[idec[i]]], addplug - addplug.throughput = 150994944 - allplug = design_append(allplug, addplug, nadd=nadd1) - used[indx[idec[i]]]=1 - endfor - ct = n_elements(indx) -endif -for i=0L, ct-1L do begin - addplug = blankplug - struct_assign, stardata[indx[i]], addplug - addplug.throughput = 150994944 - allplug = design_append(allplug, addplug, nadd=nadd1) - used[i]=1 -endfor -iused=where(used) - -;---------- -; Add spectro-photo standards -indx=where(strtrim(stardata.holetype,2) EQ 'OBJECT' AND $ - (strtrim(stardata.objtype,2) EQ 'SPECTROPHOTO_STD' OR $ - strtrim(stardata.objtype,2) EQ 'REDDEN_STD') AND $ - used EQ 0, ct) -;;if(ct lt nstd) then $ - ;;message, 'Not enough spectro-photo standards! Abort' -holeok=geometry_check(stardata[indx], racen, deccen) -iok=where(holeok, nok) -if(nok eq 0) then $ - message, 'No spectro-photo standards stars on plate!' -indx=indx[iok] -collok=collision_check(stardata[iused], stardata[indx]) -iok=where(collok, nok) -if(nok eq 0) then $ - message, 'No spectro-photo standards do not collide!' -indx=indx[iok] -idec=random_decollide(stardata[indx].ra, stardata[indx].dec, seed=seed, $ - ndec=ndec) -std=bytarr(n_elements(stardata)) -std[indx[idec]]=1 -for i=0L, ndec-1L do begin - addplug = blankplug - struct_assign, stardata[indx[idec[i]]], addplug - addplug.throughput = 11207959552 - allplug = design_append(allplug, addplug, nadd=nadd1) - used[indx[idec[i]]]=1 -endfor -iused=where(used) - -;---------- -; Add sky fibers -indx=where((strtrim(stardata.holetype,2) EQ 'COHERENT_SKY' OR $ - (strtrim(stardata.holetype,2) EQ 'OBJECT' AND $ - strtrim(stardata.objtype,2) EQ 'SKY')) AND $ - used EQ 0, ct) -;;if(ct lt nminsky) then $ - ;;message, 'Not enough sky! Abort!' -holeok=geometry_check(stardata[indx], racen, deccen) -iok=where(holeok, nok) -if(nok eq 0) then $ - message, 'No sky on plate!' -indx=indx[iok] -collok=collision_check(stardata[iused], stardata[indx]) -iok=where(collok, nok) -if(nok eq 0) then $ - message, 'No sky do not collide!' -indx=indx[iok] -idec=random_decollide(stardata[indx].ra, stardata[indx].dec, seed=seed, $ - ndec=ndec) -sky=bytarr(n_elements(stardata)) -sky[indx[idec]]=1 -for i=0L, ndec-1L do begin - addplug = blankplug - struct_assign, stardata[indx[idec[i]]], addplug - addplug.holetype = 'COHERENT_SKY' - addplug.objtype = 'NA' - addplug.throughput = 16777216 - allplug = design_append(allplug, addplug, nadd=nadd1) - used[indx[idec[i]]]=1 -endfor -iused=where(used, nused) - -;---------- -; Write the plPlugMapT file -outhdr = ['completeTileVersion v1_0', $ - 'tileId ' + string(tilenum), $ - 'LST ' + string(lst), $ - 'raCen ' + string(racen), $ - 'decCen ' + string(deccen) ] - -allplug.xfocal = -999 ; These values will be computed by PLATE -allplug.yfocal = -999 ; These values will be computed by PLATE -allplug.spectrographid = -999L ; These values will be computed by PLATE -allplug.fiberid = -999L ; These values will be computed by PLATE -yanny_write, plugmaptfile, ptr_new(allplug), hdr=outhdr, $ - enums=plugenum, structs=plugstruct - -radec_to_xyfocal, allplug.ra, allplug.dec, xfocal, yfocal, racen=racen, $ - deccen=deccen, airtemp=airtemp, lst=lst -allplug.xfocal = xfocal -allplug.yfocal = yfocal -yanny_write, plugmappfile, ptr_new(allplug), hdr=outhdr, $ - enums=plugenum, structs=plugstruct - -;--------------------------------------------------------------------------- -; RUN "makePlates" IN THE SDSS "PLATE" PRODUCT. -; The required inputs are the plPlugMapT-$TILE.par files, -; plus plPlan.par, plObs.par, plParam.par. -; The fiberPlates code selects the guide stars and sky fibers from -; those available, and renames COHERENT_SKY/NA objects to OBJECT/SKY. -; It also generates the ALIGNMENT holes for each GUIDE fiber. -;--------------------------------------------------------------------------- - -;---------- -; Create the file "plPlan.par" in the current directory. - -cd, current=thisdir -cd, thisdir -plhdr = '# Created on ' + systime() -plhdr = [plhdr, "parametersDir " + paramdir] -plhdr = [plhdr, "parameters " + "plParam.par"] -plhdr = [plhdr, "plObsFile " + "plObs.par"] -plhdr = [plhdr, "outFileDir " + thisdir] -plhdr = [plhdr, "tileDir " + thisdir] -yanny_write, 'plPlan.par', hdr=plhdr - -;---------- -; Create the file "plObs.par" in the current directory. - -plhdr = '# Created on ' + systime() -plhdr = [plhdr, "plateRun special"] -plstructs = ["typedef struct {", $ - " int plateId;", $ - " int tileId;", $ - " float temp;", $ - " float haMin;", $ - " float haMax;", $ - " int mjdDesign", $ - "} PLOBS;"] -plobs = create_struct(name='PLOBS', $ - 'PLATEID' , platenum, $ - 'TILEID' , tilenum, $ - 'TEMP' , airtemp, $ - 'HAMIN' , 0.0, $ - 'HAMAX' , 0.0, $ - 'MJDDESIGN', current_mjd()) -yanny_write, 'plObs.par', ptr_new(plobs), hdr=plhdr, structs=plstructs - -;---------- -; Run the SDSS "PLATE" code - -print -print, 'In the "plate" product run the following commands:"' -print, ' makePlates' -print, ' fiberPlate -skipBrightCheck' -print, ' makeFanuc' -print, ' makeDrillPos' -print, ' use_cs3' -print, ' makePlots -skipBrightCheck' -print -; setupplate = 'setup plate' -setupplate = 'setup -r ~/devel/plate/plate plate' ; ??? -spawn, setupplate +'; echo "makePlates " | plate' -spawn, setupplate +'; echo "fiberPlates -skipBrightCheck" | plate' -spawn, setupplate +'; echo "makeFanuc" | plate' -spawn, setupplate +'; echo "makeDrillPos" | plate' -spawn, setupplate +'; echo "use_cs3" | plate' -spawn, setupplate +'; echo "makePlots -skipBrightCheck" | plate' - -;---------- -; Read the final plPlugMapP file - -plugmap = yanny_readone(plugmappfile) -junk = where(strmatch(plugmap.holetype,'GUIDE*'), nguide) -junk = where(strmatch(plugmap.holetype,'COHERENT_SKY*'), ncoherent) -junk = where(strmatch(plugmap.holetype,'OBJECT*'), nobject) -junk = where(strmatch(plugmap.objtype,'SKY*'), nsky) - -splog, 'Final NGUIDE = ', nguide -splog, 'Final NCOHERENT_SKY = ', ncoherent -splog, 'Final NSKY = ', nsky -splog, 'Final non-SKY objects = ', nobject - nsky - -return -end -;------------------------------------------------------------------------------ diff --git a/pro/plate/splot_tiles.pro b/pro/plate/splot_tiles.pro deleted file mode 100644 index adc71a853..000000000 --- a/pro/plate/splot_tiles.pro +++ /dev/null @@ -1,30 +0,0 @@ -;+ -; NAME: -; splot_tiles -; PURPOSE: -; plot circular tiles from a given file -; CALLING SEQUENCE: -; splot_tiles, filename -; INPUTS: -; filename - name of Yanny .par file -; REVISION HISTORY: -; 26-Oct-2006 Written by MRB, NYU -;- -;------------------------------------------------------------------------------ -pro splot_tiles, filename - -radius=1.49 -num=100L - -tiles=yanny_readone(filename) - -soplot, tiles.racen, tiles.deccen, psym=2, color='red' -for i=0L, n_elements(tiles)-1L do begin - cosd=cos(!DPI/180.*tiles[i].deccen) - th=findgen(num)/float(num-1L)*!DPI*2. - rr=tiles[i].racen+radius*cos(th)/cosd - dd=tiles[i].deccen+radius*sin(th) - soplot, rr, dd, th=2, color='red' -endfor - -end diff --git a/pro/plate/splot_vec.pro b/pro/plate/splot_vec.pro deleted file mode 100644 index 389d46354..000000000 --- a/pro/plate/splot_vec.pro +++ /dev/null @@ -1,11 +0,0 @@ -pro splot_vec, x, y, dx, dy, scale=scale - -if(NOT keyword_set(scale)) then scale=1. - -splot, x, y, psym=4, symsize=0.9, color='red' -for i=0L, n_elements(x)-1L do begin - soplot, x[i]+[0.,dx[i]]*scale, $ - y[i]+[0.,dy[i]]*scale -endfor - -end diff --git a/pro/plate/test_design_plate.pro b/pro/plate/test_design_plate.pro deleted file mode 100644 index 3ff226397..000000000 --- a/pro/plate/test_design_plate.pro +++ /dev/null @@ -1,32 +0,0 @@ -pro test_design_plate - -filename='plPlugMapT-0583.par.orig' -hamin=15 -hamax=15 -airtemp=4 - -plugs=yanny_readone(filename, hdr=hdr) -for i=0L, n_elements(hdr)-1L do begin - words=strsplit(hdr[i], /extr) - if(strupcase(strtrim(string(words[0]),2)) eq 'RACEN') then $ - racen=double(words[1]) - if(strupcase(strtrim(string(words[0]),2)) eq 'DECCEN') then $ - deccen=double(words[1]) - if(strupcase(strtrim(string(words[0]),2)) eq 'TEMP') then $ - airtemp=double(words[1]) - if(strupcase(strtrim(string(words[0]),2)) eq 'HAMIN') then $ - hamin=double(words[1]) - if(strupcase(strtrim(string(words[0]),2)) eq 'HAMAX') then $ - hamax=double(words[1]) -endfor -lst=racen+(0.5*(hamin+hamax)) - -ii=where(plugs.ra ne 0., nii) -plugs=plugs[ii] - -simple_plate, plugs, racen=racen, deccen=deccen, airtemp=airtemp - -;design_plate, plugs, racen=racen, deccen=deccen, airtemp=airtemp, $ -; nminsky=32, nstd=8 - -end diff --git a/pro/plate/test_r2x.pro b/pro/plate/test_r2x.pro deleted file mode 100644 index b0b71eb96..000000000 --- a/pro/plate/test_r2x.pro +++ /dev/null @@ -1,40 +0,0 @@ -pro test_r2x, filename - -plugs=yanny_readone(filename, hdr=hdr) -for i=0L, n_elements(hdr)-1L do begin - words=strsplit(hdr[i], /extr) - if(strupcase(strtrim(string(words[0]),2)) eq 'RACEN') then $ - racen=double(words[1]) - if(strupcase(strtrim(string(words[0]),2)) eq 'DECCEN') then $ - deccen=double(words[1]) - if(strupcase(strtrim(string(words[0]),2)) eq 'TEMP') then $ - airtemp=double(words[1]) - if(strupcase(strtrim(string(words[0]),2)) eq 'HAMIN') then $ - hamin=double(words[1]) - if(strupcase(strtrim(string(words[0]),2)) eq 'HAMAX') then $ - hamax=double(words[1]) -endfor -lst=racen+(0.5*(hamin+hamax)) - -ii=where(plugs.ra ne 0., nii) -plugs=plugs[ii] -help,/st,plugs - -radec_to_xyfocal, plugs.ra, plugs.dec, xfocal, yfocal, racen=racen, $ - deccen=deccen, airtemp=airtemp, lst=lst - -radec_to_xyfocal, plugs.ra, plugs.dec, xfocal2, yfocal2, racen=racen, $ - deccen=deccen, airtemp=airtemp, lst=lst, /norefrac - -splot, xfocal-plugs.xfocal, yfocal-plugs.yfocal, psym=4 -splot, xfocal2-plugs.xfocal, yfocal2-plugs.yfocal, psym=4 -rfocal=sqrt(plugs.xfocal^2+plugs.yfocal^2) -splot, rfocal, rfocal/plugs.yfocal, psym=4 -splot, rfocal, xfocal/plugs.xfocal, psym=4 -splot, xfocal, xfocal-plugs.xfocal, psym=4 -splot, yfocal, yfocal-plugs.yfocal, psym=4 -splot_vec, xfocal, yfocal, xfocal-plugs.xfocal, yfocal-plugs.yfocal, $ - scale=250. -save, filename='blah.sav' - -end diff --git a/pro/plate/test_sbss_testplate.pro b/pro/plate/test_sbss_testplate.pro deleted file mode 100644 index 0d8a3c50d..000000000 --- a/pro/plate/test_sbss_testplate.pro +++ /dev/null @@ -1,44 +0,0 @@ -pro test_sbss_testplate - - plateid = 9001L - tileid = 9001L - setenv, 'HIPPARCOS_DIR=/u/schlegel/hipparcos' - - hipdat = hip_read(/small) - tycdat = tyc_read(/small) -hipdat = [hipdat, tycdat] - fname = '~schlegel/hoggpt/pro/hipparcos/plPlugMapT-9001.par' - yanny_read, fname, allplug, hdr=hdr, enums=plugenum, structs=plugstruct - ap = *allplug - - racen = dblarr(9) - deccen = dblarr(9) - for i=0, 8 do racen[i] = yanny_par(hdr, 'raCen'+string(i, form='(I1.1)')) - for i=0, 8 do deccen[i] = yanny_par(hdr, 'decCen'+string(i, form='(I1.1)')) - - for ipoint=0, 8 do begin -; rotate ra,dec to pointing ipoint and match to hipparcos - plate_rotate, racen[0], deccen[0], racen[ipoint], deccen[ipoint], $ - ap.ra, ap.dec, ra, dec - - nmatch = djs_angle_match(ra, dec, hipdat.radeg, hipdat.dedeg, $ - dtheta=1.5/3600.d, mcount=mcount, $ - mindx=mindx, mdist=mdist, mmax=mmax) - - - if nmatch GT 0 then begin - wcoll = where(mcount GT 1, ncollide) - if ncollide NE 0 then message, 'collision!!!' - - wmatch = where(mcount NE 0) - nobj = total(ap[wmatch].holetype EQ 'OBJECT') - npt = total(ap[wmatch].primtarget EQ ipoint) - print, 'ipoint, nmatch, nobj, npt' - print, ipoint, nmatch, nobj, npt - - endif - - endfor - - return -end diff --git a/pro/plate/trial_lrg_cat.pro b/pro/plate/trial_lrg_cat.pro deleted file mode 100644 index eaaeb5896..000000000 --- a/pro/plate/trial_lrg_cat.pro +++ /dev/null @@ -1,48 +0,0 @@ -;+ -; NAME: -; trial_lrg_cat -; PURPOSE: -; make trial LRG catalog for APO-LSS testing purposes -; CALLING SEQUENCE: -; trial_lrg_cat -; COMMENTS: -; uses model mags, not cmodel -; REVISION HISTORY: -; 2006-Dec-18 Blanton, NYU -;- -;------------------------------------------------------------------------------ -pro trial_lrg_cat, rerun=rerun - -if(NOT keyword_set(rerun)) then rerun=['137', '161'] -outfile=getenv('DATA')+'/sdss/trial_lrg_2/trial_lrg_cat.fits' - -runs=sdss_runlist(rerun=rerun) -primary=sdss_flagval('RESOLVE_STATUS', 'SURVEY_PRIMARY') - -first=1 -for irun=0L, n_elements(runs)-1L do begin - for camcol=1L, 6L do begin - splog, strtrim(string(runs[irun].run),2)+'/'+strtrim(string(camcol),2) - objs=sweep_readobj(runs[irun].run, camcol, rerun=runs[irun].rerun, $ - type='gal') - if(n_tags(objs) gt 0) then begin - fibermag = 22.5 - 2.5*alog10(objs.fiberflux>0.01) - ilist = boss_galaxy_select(objs) - ilrg = where(ilist GT 0 AND fibermag[3,*] GT 16 AND $ - (objs.resolve_status AND primary) gt 0, nlrg) - if(nlrg gt 0) then begin - if(first eq 1) then begin - mwrfits, objs[ilrg], outfile, /create - first=0 - endif else begin - mwrfits_chunks, objs[ilrg], outfile, /append - endelse - - endif - endif - endfor -endfor - -return -end - diff --git a/pro/plate/tyc_sdssmags.pro b/pro/plate/tyc_sdssmags.pro deleted file mode 100644 index 464753932..000000000 --- a/pro/plate/tyc_sdssmags.pro +++ /dev/null @@ -1,29 +0,0 @@ -;------------------------------------------------------------------------------ -; Approximate the SDSS ugriz magnitudes from the Tycho B+V magnitudes. -; -; One can very roughly transform from Johnson B+V to SDSS ugriz -; (at least for main sequence stars up to M0) with: -; u = V - 0.024 + 2.317 * (B-V) (Npts= 226) -; g = V - 0.081 + 0.544 * (B-V) (Npts= 184) -; r = V + 0.140 - 0.477 * (B-V) (Npts= 219) -; i = V + 0.341 - 1.002 * (B-V) (Npts= 198) -; z = V + 0.509 - 1.360 * (B-V) (Npts= 200) -; The above fits were done to the MT secondary standards. I'll assume -; that Tycho B+V are approximately Johnson. -;------------------------------------------------------------------------------ -function tyc_sdssmags, bminusv, vmag - -; Horrible approximations for magnitudes ! -; umag = 0.0 + tycdat.vmag + 1.0 * tycdat.bmv -; gmag = -0.149 + tycdat.vmag + 0.626 * tycdat.bmv - - umag = vmag - 0.024 + 2.317 * bminusv - gmag = vmag - 0.081 + 0.544 * bminusv - rmag = vmag + 0.140 - 0.477 * bminusv - imag = vmag + 0.341 - 1.002 * bminusv - zmag = vmag + 0.509 - 1.360 * bminusv - magarr = transpose( [[umag],[gmag],[rmag],[imag],[zmag]] ) - - return, magarr -end -;------------------------------------------------------------------------------ diff --git a/pro/rm/.DS_Store b/pro/rm/.DS_Store deleted file mode 100644 index 327912089..000000000 Binary files a/pro/rm/.DS_Store and /dev/null differ diff --git a/pro/rm/add_decomp_fits.pro b/pro/rm/add_decomp_fits.pro deleted file mode 100644 index 9d7f558c5..000000000 --- a/pro/rm/add_decomp_fits.pro +++ /dev/null @@ -1,114 +0,0 @@ -; add more columns and modify the decomp.fits of the AGN/host spectral decomposition - -pro add_decomp_fits - -file='/data3/quasar/yshen/work/agn_host/decomp.fits' -result=mrdfits(file,1) -nnn=n_elements(result) -struct={medsn_all:0.D, logMBH_vp06:0.D, logMBH_vp06_err:-1.D, $ - logMBH_F14:0.D, logMBH_F14_err:-1.D, sigma_OK_Shen:0L, sigma_OK_final:0L, $ - logL5100_tot:0.D, logL5100_tot_err:-1.D, $ - sigma_greene_3780_4000:0.D, sigma_greene_3780_4000_err:-1.D, $ - sigma_greene_3780_4100:0.D, sigma_greene_3780_4100_err:-1.D } -struct=replicate(struct,nnn) - -result=struct_addtags(result, struct) - -;; replace the Greene's sigma with the correct masks ?? -;file='/data3/quasar/yshen/work/agn_host/greene/final/valdes_4000-5350_correct_mask.dat' -;readcol,file,format='a,d,d',sdss_name, vdisp, vdisp_err -;nn=n_elements(sdss_name) -;for i=0L,nn-1 do begin -; ind=where(result.sdss_name eq sdss_name[i]) -; result[ind].sigma_greene = vdisp[i] -; result[ind].sigma_greene_err = vdisp_err[i] -;endfor - - -; add H+K dispersions -file='/data3/quasar/yshen/work/agn_host/greene/final/valdes_3780-4000.dat' -readcol,file,format='a,d,d',sdss_name1,vdisp1,vdisp1_err -file='/data3/quasar/yshen/work/agn_host/greene/final/valdes_3780-4100.dat' -readcol,file,format='a,d,d',sdss_name2,vdisp2,vdisp2_err -nn2=n_elements(sdss_name1) -for i=0L,nn2-1 do begin - ind=where(result.sdss_name eq sdss_name1[i]) - result[ind].sigma_greene_3780_4000 = vdisp1[i] - result[ind].sigma_greene_3780_4000_err = vdisp1_err[i] - ind=where(result.sdss_name eq sdss_name2[i]) - result[ind].sigma_greene_3780_4100 = vdisp2[i] - result[ind].sigma_greene_3780_4100_err = vdisp2_err[i] -endfor - -for i=0L, nnn-1 do begin - sn=result[i].flux*sqrt(result[i].ivar) - result[i].medsn_all = median(sn) -endfor - -file = '/data3/quasar/yshen/work/agn_host/checksheet' -readcol,file,format='a,a',sdss_name, shen_OK, skip=1L -nobj=n_elements(shen_OK) -for i=0, nobj-1 do begin - ind=where(result.sdss_name eq sdss_name[i]) - result[ind].sigma_ok_shen=1L -endfor - -; fix the two objects with ID=121 and 153 for which -; the Greene sigma values seem more correct upon visual inspection -result[121].sigma_shen = result[121].sigma_greene -result[121].sigma_shen_err = result[121].sigma_greene_err -result[153].sigma_shen = result[153].sigma_greene -result[153].sigma_shen_err = result[153].sigma_greene_err - -; now assign the final sigma_OK_final flag -ind=where( result.sigma_OK_shen eq 1L and $ - result.sigma_greene_err gt 0 and $ - abs(result.sigma_shen - result.sigma_greene) lt $ - 2.*sqrt(result.sigma_shen_err^2+result.sigma_greene_err^2) and $ - result.sigma_shen gt 3.*result.sigma_shen_err and $ - result.sigma_shen_err gt 0 ) -result[ind].sigma_OK_final = 1L - -; now compute BH mass -logL5100_q=result.logL5100_qso -logL5100=result.logL5100_QSO -f_H=result.f_H & f_H_5100=result.f_H_5100 -; recover the total logL5100 from the qso fit, note that the qsofit only fit the -; gal-subtracted quasar spectrum if f_H>0.1 -ind=where(f_H gt 0.1 and logL5100 gt 0) -logL5100[ind]= alog10(10.D^logL5100[ind]/(1. - f_H_5100[ind])) -; note that the logL5100_qso in result is already the total logL5100 if f_H>0.1 -result.logL5100_tot=logL5100 & result.logL5100_tot_err=result.logL5100_qso_err -; The qsofit only compute pure qso logL5100 if f_H>0.1, but here we should -; get the qso logL5100 as long as f_H>0.05, in other words, we will modified the -; logL5100_qso values -ind=where(f_H gt 0.05 and f_H le 0.1) -result[ind].logL5100_qso=alog10((1. - f_H_5100[ind])*10.D^result[ind].logL5100_tot) -; now clean all failed decomposition, i.e., f_H<0.05 -ind=where(result.f_H le 0.05) -result[ind].f_h=0. & result[ind].f_h_5100=0. & result[ind].medsn_sigma=0. - -; fix one quasar (RMID=764, fiber=765 in 0000-56837), indx=177 in decomp.fits -; I only have fitted coadded spectra 56783 (instead of 56837) but for logL5100 the difference -; is negligible -file1='/data3/quasar/yshen/spectro/bossredux/v5_7_1/0000/qsofit/qso_prop-0000-56783.fits' -qso=mrdfits(file1,1) -result[177].logL5100_tot=qso[764].logL5100 -result[177].logL5100_tot_err=qso[764].logL5100_err -result[177].logL5100_qso_err=qso[764].logL5100_err -result[177].logL5100_qso=alog10(10.D^result[177].logL5100_tot*(1. - result[177].f_H_5100)) -;------------------------ - -logL5100_q=result.logL5100_qso -logL5100=result.logL5100_tot -fwhm=result.fwhm_hb & fwhm_err=result.fwhm_hb_err -ind=where(logL5100_q gt 0) -result[ind].logmbh_vp06=0.91 + 0.5*alog10(10.D^logL5100[ind]/1d44) + 2.*alog10(fwhm[ind]) -result[ind].logmbh_vp06_err=sqrt( (0.5*result[ind].logL5100_tot_err)^2 + (2.*fwhm_err[ind]/fwhm[ind]/alog(10.D) )^2 ) -result[ind].logmbh_f14=3.602 + 0.504*alog10(10.D^result[ind].logL5100_qso/1d44) + 1.2*alog10(fwhm[ind]) -result[ind].logmbh_f14_err=sqrt( (0.504*result[ind].logL5100_qso_err)^2 + (1.2*fwhm_err[ind]/fwhm[ind]/alog(10.D))^2 ) - -outfile='/data3/quasar/yshen/work/agn_host/decomp_final.fits' -mwrfits, result, outfile, /create - -end diff --git a/pro/rm/add_sample_char_col.pro b/pro/rm/add_sample_char_col.pro deleted file mode 100644 index d78a3866c..000000000 --- a/pro/rm/add_sample_char_col.pro +++ /dev/null @@ -1,46 +0,0 @@ -; add columns to the sample characterization table - -pro add_sample_char_host - -file = '/data3/yshen/work/sdssrm_sample_char/sample_char_final.fits' -tt = mrdfits(file,1) -nnn = n_elements(tt) -column = {F_H_5100:0., sigma:0.D, sigma_err:-1.D, sigma_err_warning:0L} -tt = struct_addtags(tt, replicate(column, nnn)) - -file2 = '/data3/yshen/ftp/anon/public/sdssrm/paper_data/Shen_2015_ApJ_msigma/table1_apj.fits' -tt2 = mrdfits(file2,1) - -nobj=n_elements(tt2) - -for i=0, nobj-1 do begin - ind = where(tt.rmid eq tt2[i].rmid) - tt[ind].f_H_5100 = tt2[i].f_H_5100 - tt[ind].sigma = tt2[i].sigma - tt[ind].sigma_err = tt2[i].sigma_err - tt[ind].sigma_err_warning = tt2[i].sigma_err_warning -endfor - -mwrfits, tt, file, /create - -end - -pro add_sample_char_col - - -file = '/data3/yshen/work/sdssrm_sample_char/sample_char_refined.fits' -tt = mrdfits(file,1) -nnn = n_elements(tt) -column = {Mi:0.D, Mi_z2:0.D} - -tt = struct_addtags(tt, replicate(column, nnn)) - -mi = reform((tt.PSFmag)[3,*]) -zz = reform(tt.zsys) -tt.mi_z2 = get_abs_mag(mi, zz) -tt.mi = tt.mi_z2 + 0.596 - - -mwrfits, tt, file, /create - -end diff --git a/pro/rm/add_sample_char_varinfo.pro b/pro/rm/add_sample_char_varinfo.pro deleted file mode 100644 index f9c64b406..000000000 --- a/pro/rm/add_sample_char_varinfo.pro +++ /dev/null @@ -1,57 +0,0 @@ -; add PrepSpec variability info to the sample char table - -pro add_sample_char_varinfo - - -file='/data3/yshen/work/sdssrm_sample_char/sample_char_refined.fits' -tt=mrdfits(file,1) - -; first create a struct that contains prepspec columns - -prefix = ['RMS_ML_', 'RMS_ML_', 'SNR_RMS_ML_', 'RMS_ML_FRAC_', 'RMS_ML_FRAC_', 'N_RMS_GOOD_', 'SNR2_'] -suffix = ['', '_ERR', '', '', '_ERR', '', ''] -ncol = n_elements(prefix) -tag = ['C1700','C3000','C5100','HA','HB','HEII4687','MGII', 'CIII', 'CIV', 'LYA'] -prepspec_name = ['c1700', 'c3000', 'c5100', 'ha_t', 'hb_t', 'he2_4686_t', 'mg2_t', 'c3_t', 'c4_t', 'lya_t'] + '_stats.dat' -ntag = n_elements(tag) -; now make the struct -str = create_struct('null', 0.) -for i=0, ntag - 1 do begin - for j=0, ncol - 1 do begin - name = prefix[j] + tag[i] + suffix[j] - str = struct_addtags(str, create_struct(name, -1.D) ) - endfor -endfor -remove_tags, str, 'null', new_str -alltags = tag_names(tt) -noldtag = n_elements(alltags) -str = new_str - -nobj=n_elements(tt) -str = replicate(str, nobj) -tt = struct_addtags(tt, str) - -outdir = '/data3/yshen/ftp/sdssrm/collab/prepspec/2014b/' -for i=0, nobj - 1 do begin - rmtag = 'rm' + string(i,format='(i3.3)') - subdir = outdir + rmtag + '/' - - for j=0, ntag - 1 do begin - file = subdir + rmtag + '_' + prepspec_name[j] - if file_test(file) eq 1 then begin - data = 0 - readcol, file, format='d,a', skipline=28L, data,note, /silent - ; rearrange order of data to match the tag order - if n_elements(data) eq 7 then begin - data1 = [data[1], data[2], data[3], data[4], data[5], data[0], data[6]] - for kk=0,6 do tt[i].(noldtag + j*7 + kk) = data1[kk] - endif - endif - endfor - splog, 'Finished: ', i+1 -endfor - -outfile = '/data3/yshen/work/sdssrm_sample_char/sample_char_refined_w_var.fits' -mwrfits, tt, outfile, /create - -end diff --git a/pro/rm/balmer_conti.pro b/pro/rm/balmer_conti.pro deleted file mode 100644 index 785e7fb37..000000000 --- a/pro/rm/balmer_conti.pro +++ /dev/null @@ -1,19 +0,0 @@ -; Balmer continuum from the model of Dietrich+02 - -function balmer_conti, xval, pp -; xval = input wavelength, in units of A -; pp=[norm, Te, tau_BE] -- in units of [--, K, --] - -lambda_BE = 3646.D ; A - -bbflux = planck(xval,pp[1]) ; in units of ergs/cm2/s/A - -tau = pp[2]*(xval/lambda_BE)^3 -result = pp[0]*bbflux*(1. - exp(-tau)) - -ind = where(xval gt lambda_BE) -if ind[0] ne -1 then result[ind]=0.D - -return, result -end - diff --git a/pro/rm/begplot.pro b/pro/rm/begplot.pro deleted file mode 100644 index d779de55a..000000000 --- a/pro/rm/begplot.pro +++ /dev/null @@ -1,409 +0,0 @@ - -;+ -; NAME: -; BEGPLOT -; -; PURPOSE: -; This procedure redirects plots from the present display/ -; graphics device to another display/graphics device. It -; is a 'macro' to the SET_PLOT and DEVICE graphics routines. At -; this time only the 'PS' device is fully supported. -; -; See also KILLPLOT and ENDPLOT. -; -; CATEGORY: -; -; Misc. -; -; CALLING SEQUENCE: -; -; BEGPLOT -; -; INPUTS: -; -; None. -; -; KEYWORD PARAMETERS: -; -; These keywords are applicable to all graphics/display devices. -; -; LAYOUT: Name of file containing keywords. See example below. -; DEVICE: Name of graphics device. -; NAME: Name to give output file. -; INVBW: Invert b & w color table and make axes labels black for -; printing b & w spectrograms. -; -; These keywords are applicable to the 'PS', 'PCL', and 'HP' -; graphics device. See also "IDL Graphics Devices" in IDL -; Reference Manual. -; -; INCHES: Set to express sizes and offsets in inches. -; LANDSCAPE: Set for 'landscape' orientation. -; XOFFSET: Offset relative to lower left hand corner in -; portrait(default) orientation. Default is 0.75 inches. -; YOFFSET: Offset relative to lower left hand corner in -; portrait(default) orientation. Default is 1.0 inches. -; XSIZE: Width of graphics output. Default = 5.0 inches. -; YSIZE: Height of graphics output. Default = 9.0 inches. -; -; These keywords are specific to the 'PS' graphics device. -; -; BITS_PER_PIXEL: Integer (1,2,4,8) specifing resolution. -; Default = 4 unless COLOR keyword set then -; default = 8. -; BOLD: Set to use bold version of current PostScript font. -; COLOR: Set to enable color output. -; DEMI: Set to use demi version of current PostScript font. -; ENCAPSULATED: Set to create encapsulated PostScript font. -; Suitable for importing into other documents. -; CMYK: Set to create colors in cmyk format - for ApJ purposes -; FONT: Name of PostScript font. See IDL Reference Manual for -; complete list. -; ITALIC: Set to use italic version of current PostScript font. -; LIGHT: Set to use light version of current PostScript font. -; MEDIUM: Set to use meduim version of current PostScript font. -; NARROW: Set to use narrow version of current PostScript font. -; OBLIQUE: Set to use oblique versin of current PostScript font. -; PREVIEW: Set to add 'device independent screen preview' to -; output file when using ENCAPSULATED. -; SCALE_FACTOR: Specifies scale factor applied to entire plot. -; Default = 1. -; CT: Number of color table to apply when using COLOR. Default = -; 6 (prism). -; -; COMMON BLOCKS: -; -; PLOTFILE_COM: -; plotfile - name of output file. -; save_device - name of previous graphics device. -; spool - flag to prevent printing if ENCAPSULATED. -; -; RESTRICTIONS: -; -; !P.FONT must be set to 0 (zero) for the hardware-drawn (PostScript) -; fonts. If !P.FONT = -1, Hershey vector drawn fonts are used. Vector -; fonts should always be used for 3-dimensional plots. -; -; EXAMPLES: -; -; To redirect a plot to a PostScript printer named 'printer': -; -; BEGPLOT -; PLOT,x,y -; ENDPLOT,P='printer' -; -; To redirect a plot to an Encapsulated PostScript (EPS) file -; and inhibit printing: -; -; BEGPLOT,NAME='test.eps',/ENCAPSUATED -; PLOT,x,y -; ENDPLOT,/NOPRINT -; -; To use a 'layout file': -; -; BEGPLOT,LAYOUT='layoutfile' -; PLOT,x,y -; ENDPLOT -; -; Layout files can to used to set up the graphics device -; keywords. A syntax similar to Xdefaults files is used. Each -; line looks like "device.keyword:value". 'device' is the -; name of graphcis device used by SET_PLOT. ('ps' is currently -; the only device supported). 'keyword' is the name of the -; keyword to send to DEVICE, and 'value' is the value to send -; with the keyword (1 is used to set and 0 to unset). A layout -; file to produce a half-page, portrait, EPS file using the -; Times-Roman 12 point font and PREVIEW would look like: -; -; ps.font:times -; ps.font_size:12 -; ps.portrait:1 -; ps.encapsulated:1 -; ps.preview:1 -; ps.inches:1 -; ps.xsize:5.0 -; ps.ysize:5.0 -; -; All of the keywords defined above can be set in this manner. -; -; To abort after running BEGPLOT but before running ENDPLOT, run -; KILLPLOT. This will close the plotfile and reset the graphics -; device to the one being used before BEGPLOT was called. -; -; See also the documentation for KILLPLOT and ENDPLOT. -; -; COPYRIGHT NOTICE: -; -; Copyright 1993, The Regents of the University of California. This -; software was produced under U.S. Government contract (W-7405-ENG-36) -; by Los Alamos National Laboratory, which is operated by the -; University of California for the U.S. Department of Energy. -; The U.S. Government is licensed to use, reproduce, and distribute -; this software. Neither the Government nor the University makes -; any warranty, express or implied, or assumes any liability or -; responsibility for the use of this software. -; -; MODIFICATION HISTORY: -; -; Based on BEGPLT by Phil Klingner, NIS-3, LANL. -; -; Modified and renamed BEGPLOT. Michael J. Carter, NIS-1, LANL, -; March, 1994. -; -; Fixed landscape mode bug. mjc, 1/24/95. -; -; Added INVBW keyword to load inverse black & white color map - -; useful for printing spectrograms. -; -; Big rewrite. Use !pslayout system veriable. Added parameters -; to layout. Run setupplot if necessary. -; 3-Jul-2002 Erin S. Sheldon UofMich - -; Added CMYK color option: Desika Narayanan, Steward -; Observatory, March 9th, 2006 -;- - -PRO Begplot, layout=layout, $ ; Layout file containing device and keywords. - device=device, $ - name=name, $ ; Common printer/plotter keywords. - inches=inches, $ - landscape=landscape, $ - xoffset=xoffset, $ - xsize=xsize, $ - yoffset=yoffset, $ - ysize=ysize, $ - bits_per_pixel=bits_per_pixel, $ ; PostScript specific keywords. - bold=bold, $ - color=color, $ - demi=demi, $ - encapsulated=encapsulated, $ - cmyk=cmyk,$ - font=font, $ - italic=italic, $ - light=light, $ - medium=medium, $ - narrow=narrow, $ - oblique=oblique, $ - preview=preview, $ - scale_factor=scale_factor, $ - ct=ct, $ ; Color table for color plots. - invbw=invbw, $ - setup=setup,$ - help=help - - COMMON plotfile_com, plotfile, save_device, spool - - spool = 1 - - IF keyword_set(help) THEN BEGIN - doc_library, 'begplot' - return - ENDIF - - ;; default plotting - if n_elements(CMYK) eq 0 then CMYK=1 - if n_elements(color) eq 0 then color=1 - - ;;;;;;;;;;;;;;;;;;;;;;; - ;; run pslayout - ;;;;;;;;;;;;;;;;;;;;;;; - - pslayout - - ;; Save current graphics device. - sv = size(save_device) - IF sv(sv(0)+1) EQ 0 THEN save_device = !D.name - - ;; Clean up leftover plotfile. - sv = size(plotfile) - IF sv(sv(0)+1) EQ 0 THEN plotfile = 'null' ; Null 'plotfile' if no leftovers - - IF plotfile NE 'null' THEN BEGIN ; Close device if plotfile defined. - message, 'Closing current plot file '+plotfile, /continue - IF !D.name NE 'X' THEN device, /close - ENDIF - - ;; Set the new graphics device (always set to 'ps' for now). - IF keyword_set(device) THEN BEGIN - device=strlowcase(device) - CASE device OF - 'ps': graphics_device = !pslayout ;ps is structure for 'PS' device keywords - - ELSE: print, 'Invalid graphics device: '+device ; return - ENDCASE - ENDIF ELSE BEGIN - graphics_device = !pslayout - ENDELSE - set_plot, graphics_device.name - - - ;; Get keywords from 'layoutfile' if keyword 'layout' set. - defsysv, '!pslayout',EXIST=EXIST - IF exist THEN BEGIN - graphics_device = !pslayout - name_set=0 - ENDIF ELSE IF keyword_set(layout) THEN BEGIN - name_set = 0 - layoutfile = layout - setlayout, layoutfile, graphics_device, name_set - print,'Using layout file '+layoutfile - ENDIF ELSE BEGIN - name_set = 0 ; name_set=1 if 'filename' specified - ; in layoutfile. - ENDELSE - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; now run setupplot if requested - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - IF !pslayout.runsetup OR keyword_set(setup) THEN setupplot - - ;; Check for keywords which are common to PCL, PostScript, and HP-GL, - ;; devices and update graphics_device structure. - IF ((graphics_device.name EQ 'pcl') OR (graphics_device.name EQ 'ps') OR $ - (graphics_device.name EQ 'hp')) THEN BEGIN - IF keyword_set(name) THEN BEGIN ; Filename given as 'begplot' keyword. - plotfile = name - ENDIF ELSE IF (name_set EQ 1) THEN BEGIN ; Filename set in 'setlayout'. - plotfile = graphics_device.filename - END ELSE BEGIN ; Use 'tmpfile' to create filename (default). - prefix = '/tmp/' - suffix = '.' + strlowcase(graphics_device.name) - plotfile = tmpfile(prefix = prefix, suffix = suffix) - ENDELSE - IF keyword_set(inches) THEN graphics_device.inches = 1 - IF keyword_set(landscape) THEN BEGIN - IF NOT keyword_set(layout) THEN BEGIN - graphics_device.yoffset = 10.25 - graphics_device.xsize = 9.5 - graphics_device.ysize = 7 - ENDIF - graphics_device.landscape = 1 - graphics_device.portrait = 0 - ENDIF - IF keyword_set(xoffset) THEN graphics_device.xoffset = xoffset - IF keyword_set(xsize) THEN graphics_device.xsize = xsize - IF keyword_set(yoffset) THEN graphics_device.yoffset = yoffset - IF keyword_set(ysize) THEN graphics_device.ysize = ysize - ENDIF - - ;; Check for keywords specific to the 'ps' graphics device and update - ;; graphics_device structure. - IF (graphics_device.name EQ 'ps') THEN BEGIN - IF keyword_set(bits_per_pixel) THEN $ - graphics_device.bits_per_pixel = bits_per_pixel - IF keyword_set(color) THEN graphics_device.color = 1 - IF keyword_set(encapsulated) THEN graphics_device.encapsulated = 1 - ;DTN EDITED TO ADD CMYK 03/09/2006 - IF keyword_set(cmyk) THEN graphics_device.cmyk=1 - IF keyword_set(font) THEN graphics_device.font = font - IF keyword_set(font_index) THEN graphics_device.font_index = font_index - IF keyword_set(font_size) THEN graphics_device.font_size = $ - font_size - ;; cannot use preview if not in encap mode - graphics_device.preview = 0 - IF graphics_device.encapsulated EQ 1 THEN BEGIN - IF keyword_set(preview) THEN graphics_device.preview = 1 - ENDIF - IF keyword_set(scale_factor) THEN graphics_device.scale_factor = $ - scale_factor - IF keyword_set(user_font) THEN graphics_device.user_font = user_font - ENDIF - -; Set keywords for PS, PCL, and HP devices based on graphics_device structure. - device, filename = plotfile - IF (graphics_device.landscape EQ 1) THEN device, /landscape $ - ELSE device, /portrait - device, xoffset = graphics_device.xoffset, inches = graphics_device.inches - device, xsize = graphics_device.xsize, inches = graphics_device.inches - device, yoffset = graphics_device.yoffset, inches = graphics_device.inches - device, ysize = graphics_device.ysize, inches = graphics_device.inches - -; Set keywords specific to PS device based on graphics_device structure. - device, bits_per_pixel = graphics_device.bits_per_pixel - device, color = graphics_device.color, bits_per_pixel = 8 - device, encapsulated = graphics_device.encapsulated - device, cmyk = graphics_device.cmyk - device, preview = graphics_device.preview - device, scale_factor = graphics_device.scale_factor - CASE graphics_device.font OF - 'avantgarde': device, /avantgarde, bold = $ - graphics_device.bold, book = graphics_device.book, demi = $ - graphics_device.demi, italic = graphics_device.italic, light = $ - graphics_device.light, medium = graphics_device.medium, narrow = $ - graphics_device.narrow, oblique = graphics_device.oblique, $ - isolatin1 = graphics_device.isolatin1 - - 'bkman': device, /bkman, bold = $ - graphics_device.bold, book = graphics_device.book, demi = $ - graphics_device.demi, italic = graphics_device.italic, light = $ - graphics_device.light, medium = graphics_device.medium, narrow = $ - graphics_device.narrow, oblique = graphics_device.oblique, $ - isolatin1 = graphics_device.isolatin1 - - 'courier': device, /courier, bold = $ - graphics_device.bold, book = graphics_device.book, demi = $ - graphics_device.demi, italic = graphics_device.italic, light = $ - graphics_device.light, medium = graphics_device.medium, narrow = $ - graphics_device.narrow, oblique = graphics_device.oblique, $ - isolatin1 = graphics_device.isolatin1 - - 'helvetica': device, /helvetica, bold = $ - graphics_device.bold, book = graphics_device.book, demi = $ - graphics_device.demi, italic = graphics_device.italic, light = $ - graphics_device.light, medium = graphics_device.medium, narrow = $ - graphics_device.narrow, oblique = graphics_device.oblique, $ - isolatin1 = graphics_device.isolatin1 - - 'palatino': device, /palatino, bold = $ - graphics_device.bold, book = graphics_device.book, demi = $ - graphics_device.demi, italic = graphics_device.italic, light = $ - graphics_device.light, medium = graphics_device.medium, narrow = $ - graphics_device.narrow, oblique = graphics_device.oblique, $ - isolatin1 = graphics_device.isolatin1 - - 'schoolbook': device, /schoolbook, bold = $ - graphics_device.bold, book = graphics_device.book, demi = $ - graphics_device.demi, italic = graphics_device.italic, light = $ - graphics_device.light, medium = graphics_device.medium, narrow = $ - graphics_device.narrow, oblique = graphics_device.oblique, $ - isolatin1 = graphics_device.isolatin1 - - 'symbol': device, /symbol, bold = $ - graphics_device.bold, book = graphics_device.book, demi = $ - graphics_device.demi, italic = graphics_device.italic, light = $ - graphics_device.light, medium = graphics_device.medium, narrow = $ - graphics_device.narrow, oblique = graphics_device.oblique - - 'times': device, /times, bold = $ - graphics_device.bold, book = graphics_device.book, demi = $ - graphics_device.demi, italic = graphics_device.italic, light = $ - graphics_device.light, medium = graphics_device.medium, narrow = $ - graphics_device.narrow, oblique = graphics_device.oblique, $ - isolatin1 = graphics_device.isolatin1 - - 'zapfchancery': device, /zpfchancery, bold = $ - graphics_device.bold, book = graphics_device.book, demi = $ - graphics_device.demi, italic = graphics_device.italic, light = $ - graphics_device.light, medium = graphics_device.medium, narrow = $ - graphics_device.narrow, oblique = graphics_device.oblique, $ - isolatin1 = graphics_device.isolatin1 - - 'zapfdingbats': device, /zapfdingbats, bold = $ - graphics_device.bold, book = graphics_device.book, demi = $ - graphics_device.demi, italic = graphics_device.italic, light = $ - graphics_device.light, medium = graphics_device.medium, narrow = $ - graphics_device.narrow, oblique = graphics_device.oblique - ENDCASE - IF graphics_device.encapsulated EQ 1 THEN spool = 0 - - if keyword_set(invbw) then begin - device, color = 1 - loadct,41,file="$IDL_DIR/resource/colors/colors_nis.tbl" - !P.COLOR=255 - - endif - - message, 'Plotting directed to file '+plotfile, /continue - -end diff --git a/pro/rm/check_lineshift_sn_dep.pro b/pro/rm/check_lineshift_sn_dep.pro deleted file mode 100644 index f0ac937f7..000000000 --- a/pro/rm/check_lineshift_sn_dep.pro +++ /dev/null @@ -1,56 +0,0 @@ -; check the SN dependence of lineshift measurements - - -pro check_lineshift_sn_dep, dwave_arr=dwave_arr, sn=sn, linename=linename - -file='/data3/yshen/work/lineshifts/lineshift.fits' -result=mrdfits(file,1) -tag0=tag_names(result) - -file='/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -target=mrdfits(file,1) - -plate=target[0:848].plate -fiber=target[0:848].fiberid -mjd=target[0:848].mjd -med_sn=target[0:848].med_sn - -; now for each object, get the difference between single-epoch and coadded epoch -if ~keyword_set(linename) then linename='CIV' -topdir='/data3/yshen/spectro/bossredux/v5_7_1/' -for i=0, 31L do begin - - plate1=plate[i,0] & mjd1=mjd[i,0] - pstr=string(plate1, format='(i4.4)') - mstr=string(mjd1,format='(i5.5)') - - fitsfile=topdir + pstr+'/qsofit/qso_prop-'+pstr+'-'+mstr+'.fits' - fit=mrdfits(fitsfile, 1) - - tag1=tag_names(fit) - ind0=where(tag0 eq linename or tag0 eq linename+'_BR') - ind_err0=where(tag0 eq linename+'_ERR' or tag0 eq linename+'_BR_ERR') - - ind1=where(tag1 eq linename or tag1 eq linename+'_BR') - ind_err1=where(tag1 eq linename+'_ERR' or tag1 eq linename+'_BR_ERR') - - ind=where( (result.(ind_err0))[0,*] gt 0 and (fit.(ind_err1))[0,*] gt 0, nnn ) - - if nnn gt 0 then begin - - diff_wav= (fit.(ind1))[0,ind] - (result.(ind0))[0, ind] - err_wav = sqrt( ((result.(ind_err0))[0,ind])^2 + ((fit.(ind_err1))[0,ind])^2 ) - if n_elements(dwave_arr) eq 0 then begin - dwave_arr=reform(diff_wav/err_wav) - sn=reform(med_sn[i, ind]) - endif else begin - dwave_arr=[dwave_arr, reform(diff_wav/err_wav)] - sn=[sn, reform(med_sn[i, ind])] - endelse - - endif - -endfor - - -end diff --git a/pro/rm/check_prepspec.pro b/pro/rm/check_prepspec.pro deleted file mode 100644 index 53e4efd0e..000000000 --- a/pro/rm/check_prepspec.pro +++ /dev/null @@ -1,98 +0,0 @@ -; check the pt correction from PrepSpec, plot the -; difference in stddev in corrected and raw spec LCs -; as a function of emission line S/N measured from prepspec - -pro check_pt, prepspecdir=prepspecdir, outfile=outfile, synfile=synfile - - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - epoch_info=mrdfits(file,2) - if ~keyword_set(synfile) then file='/data3/yshen/ftp/sdssrm/collab/photo_lc/spec_syn.fits' $ - else file=synfile - spec_syn=mrdfits(file,1) - mjd_all=epoch_info[0:31].mean_mjd - - nnn=849 ; the RM targets - result={rmid:0L, z:0.D,rms_raw:0.d, rms_pt:0.d, mad_raw:0.D, mad_pt:0.D, $ - flag_pt:0L, maxsn_nlr:-1.d, wave_maxsn:0.D} - result=replicate(result, nnn) - result.rmid=lindgen(nnn) - result.z=target[0:nnn-1].zfinal - - if ~keyword_set(prepspecdir) then prepspecdir='/data3/yshen/ftp/sdssrm/collab/prepspec/ACBFJ/' - for i=0, nnn-1 do begin - ; find the difference in r band LC stddev - rmag_raw=(spec_syn[i].gri_mag_ori)[1,*] - indd=where(rmag_raw gt 0) - rmag_raw=rmag_raw[indd] - rmag_pt=(spec_syn[i].gri_mag)[1,*] - indd=where(rmag_pt gt 0) - rmag_pt=rmag_pt[indd] - result[i].rms_raw=stddev(rmag_raw) - result[i].mad_raw=median( abs(rmag_raw - median(rmag_raw) ) ) - result[i].rms_pt=stddev(rmag_pt) - result[i].mad_pt=median( abs(rmag_pt - median(rmag_pt) ) ) - - ; Is PrepSpec used for the object? - pt=rm_get_pt(i,err=pt_err,mjd_all=mjd_all,topdir=prepspecdir) - if (where(pt_err gt 1d-5))[0] ne -1 then result[i].flag_pt=1L - - ; find the NLR S/N measured by PrepSpec - rmtag='rm'+string(i,format='(i3.3)') - nlrfile=prepspecdir+rmtag+'/'+rmtag+'_vnlr.dat' - if file_test(nlrfile) eq 1 then begin - readcol,nlrfile,format='d,d,d',wave_line,Jint,Jerr,/silent - ; keep the avg and err from MC trials - indd=where(Jerr gt -1d-5) - NLR_sn=Jint[indd]/Jerr[indd] - result[i].maxsn_nlr=max(nlr_sn, ind_max) - result[i].wave_maxsn=wave_line[indd[ind_max]] - endif - - endfor - - if ~keyword_set(outfile) then outfile='/data3/yshen/work/lags/prepspec/ACBFJ/rmag_scat.fits' - mwrfits, result, outfile, /create - -end - -; plot the rms in r-band (synthetic) from pt corrected and uncorrected LCs -pro plot_rms_rband, infile=infile, outdir=outdir - - if ~keyword_set(infile) then file='/data3/yshen/work/lags/prepspec/ACBFJ/rmag_scat.fits' $ - else file=infile - rms=mrdfits(file,1) - ind=where(rms.flag_pt gt 0,nnn) - indd=where(rms.flag_pt gt 0 and rms.z lt 0.7855) - - if ~keyword_set(outdir) then outdir='/data3/yshen/work/lags/prepspec/ACBFJ/' - - figfile=outdir+'rmag_scat.ps' - begplot, name=figfile,/landscape - diff=rms[ind].rms_pt - rms[ind].rms_raw - nlrsn=rms[ind].maxsn_nlr - plot, nlrsn, diff, psym=2,/xlog, yrange=[-0.5, 1],xrange=[3,1d3],/xsty, $ - xtitle='Maximum Narrow Line S/N (coadd)', ytitle=textoidl('RMS_{pt}-RMS_{orig} [mag]'), $ - title='r-band (synthetic) LC stddev' - oplot, rms[indd].maxsn_nlr,rms[indd].rms_pt - rms[indd].rms_raw,psym=2,color=cgcolor('red') - oplot, [3,1d3], [0,0],line=2 - xyouts, 0.7, 0.9, textoidl('N_{obj}=')+string(nnn,format='(i0)'),/norm - xyouts, 0.7, 0.82, textoidl('first 100 obj'), /norm, color=cgcolor('red') - endplot - cgfixps, figfile - - figfile=outdir+'rmag_mad.ps' - begplot, name=figfile,/landscape - diff=rms[ind].mad_pt - rms[ind].mad_raw - nlrsn=rms[ind].maxsn_nlr - plot, nlrsn, diff, psym=2,/xlog, yrange=[-0.3, 0.6],xrange=[3,1d3],/xsty, /ysty, $ - xtitle='Maximum Narrow Line S/N (coadd)', ytitle=textoidl('MAD_{pt}-MAD_{orig} [mag]'), $ - title='r-band (synthetic) LC MAD' - oplot, rms[indd].maxsn_nlr,rms[indd].rms_pt - rms[indd].rms_raw,psym=2,color=cgcolor('red') - oplot, [3,1d3], [0,0], line=2 - xyouts, 0.7, 0.9, textoidl('N_{obj}=')+string(nnn,format='(i0)'),/norm - xyouts, 0.7, 0.82, textoidl('first 100 obj'), /norm, color=cgcolor('red') - endplot - cgfixps, figfile - -end diff --git a/pro/rm/coadd_allqso.pro b/pro/rm/coadd_allqso.pro deleted file mode 100644 index 04fd5b32a..000000000 --- a/pro/rm/coadd_allqso.pro +++ /dev/null @@ -1,29 +0,0 @@ -; coadd the spectra of all 849 qsos and test the difference between -; the pipeline redshift (zfinal in target_fibermap) and systemic redshift (zsys) - -pro coadd_allqso - - file = '/data3/yshen/work/sdssrm_sample_char/sample_char.fits' - target = mrdfits(file,1) - nobj = n_elements(target) - - ; first construct a struct containing plate, fiber, mjd, redshift, ra, dec - str_zpip = {plate:0L, fiber:0L, mjd:0L, redshift:0.D, ra:0.d, dec:0.d} - str_zpip = replicate(str_zpip, nobj) - - str_zpip.plate = 0L & str_zpip.fiber = lindgen(849) + 1L & str_zpip.mjd = 56837L - str_zpip.redshift = target.zfinal & str_zpip.ra = target.ra & str_zpip.dec = target.dec - - str_zsys = str_zpip - str_zsys.redshift = target.zsys - - - fitsfile = '/data3/yshen/work/sdssrm_sample_char/med_coadd_zpip.fits' - coadd_spec, bh=str_zpip, type = 1, /sdssrm, /boss, fitsfile = fitsfile, z_HW=0 - - fitsfile = '/data3/yshen/work/sdssrm_sample_char/med_coadd_zsys.fits' - coadd_spec, bh=str_zsys, type = 1, /sdssrm, /boss, fitsfile = fitsfile, z_HW=0 - - -end - diff --git a/pro/rm/coadd_allqso_rms.pro b/pro/rm/coadd_allqso_rms.pro deleted file mode 100644 index c8307e065..000000000 --- a/pro/rm/coadd_allqso_rms.pro +++ /dev/null @@ -1,67 +0,0 @@ -; coadd the rms spectra of all RM targets - -pro coadd_allqso_rms, topdir=topdir - - if ~keyword_set(topdir) then topdir = '/data3/yshen/ftp/sdssrm/collab/prepspec/2014a/' - - file = topdir + 'var_img.fits' - var_img = mrdfits(file,1) - bh = {plate:0, fiber:0, mjd:0, redshift:0.D, RA:0.D, dec:0.D} - nobj = n_elements(var_img.z) - bh = replicate(bh, nobj) - wave = var_img.wave - npix = n_elements(wave) - lam_in = dblarr(npix, nobj) - ivar_in = dblarr(npix, nobj) - ivar_in[*,*] = 1.D ; set all pixel to be OK in the stacking (although we could set using ivar from the original 56837 coadd) - for i=0,nobj - 1 do lam_in[*,i] = wave - - ; get zsys - file = '/data3/yshen/work/sdssrm_sample_char/sample_char_refined.fits' - tt = mrdfits(file, 1) - rest_z = tt.zsys ; this should be in the same order (RMID) as bh - - - ; use the quick_coadd instead of coadd_spec (used for Vandenberk2001 composite) because - ; the following doesn't work - ;fitsfile = '/data3/yshen/work/sdssrm_sample_char/RMSx_medcoadd_zsys.fits' - ; coadd_spec, bh=bh, type=1,deredden=0, fitsfile=fitsfile, rest_z=rest_z, z_HW=0, $ - ; lam_in = lam_in, flux_in = flux_in, ivar_in = ivar_in - - - ; coadd RMSc, the model RMS (error accounted for, pt corrected) - flux_in = var_img.IMG_rmsc_norm - quick_coadd, lam_in, flux_in, rest_z, result=result_rmsc - fitsfile = topdir + 'coadd/RMSc_medcoadd_zsys.fits' - mwrfits, result_rmsc, fitsfile, /create - - ; coadd the RMSx, maximum-likelihood estimate (error corrected, but pt corrected?) - flux_in = var_img.IMG_rms_norm - quick_coadd, lam_in, flux_in, rest_z, result=result_rmsx - fitsfile = topdir + 'coadd/RMSx_medcoadd_zsys.fits' - mwrfits, result_rmsx, fitsfile, /create - - ; get the median coadd of the avg spectra - file = '/data3/yshen/work/sdssrm_sample_char/med_coadd_zsys.fits' - medcoadd=mrdfits(file,1) - - ; make a plot - figfile = topdir + 'coadd/avg_rms_coadd_spec.ps' - begplot, name=figfile, /color, /landscape - - plot, result_rmsc.wave, result_rmsc.coadd_flux + 1.5, xrange=[500, 9000],/xsty, pos=[0.1, 0.1, 0.98, 0.98], $ - xtitle='Rest Wavelength', ytitle = 'Flux Density', yrange=[1.5,10], thick=4,/ylog,/ysty, /nodata - oplot, result_rmsx.wave, result_rmsx.coadd_flux + 1.5, color=cgcolor('dark grey'),thick=4 - oplot, medcoadd.wave, medcoadd.coadd_flux/median(medcoadd.coadd_flux) + 1.5, color=cgcolor('red'), thick=4 - oplot, result_rmsc.wave, result_rmsc.coadd_flux + 1.5, thick=4 - - label_qsoline, wave=result_rmsc.wave,flux=result_rmsc.coadd_flux,charsize=0.6,minREW=0.5, ypos=0.15, floaty=0 - xyouts, 0.5, 0.9, 'Avg spectra', /norm, color=cgcolor('red') - xyouts, 0.7, 0.9, 'RMSc spectra', /norm, color=cgcolor('black') - xyouts, 0.5, 0.85, 'RMSx spectra', /norm, color=cgcolor('dark grey') - - endplot - cgfixps, figfile - -end - diff --git a/pro/rm/coadd_ccf.pro b/pro/rm/coadd_ccf.pro deleted file mode 100644 index 766e85dd7..000000000 --- a/pro/rm/coadd_ccf.pro +++ /dev/null @@ -1,34 +0,0 @@ -; coadd the ccf for a given list of objects and a specific line - -pro coadd_ccf, rmid, line=line, result=result - - nobj=n_elements(rmid) - flag=lonarr(nobj) - - topdir='/data3/yshen/ftp/sdssrm/collab/prepspec/ACBFJ/' - - for i=0, nobj-1 do begin - - rmtag='rm'+string(rmid[i],format='(i3.3)') - file=topdir+rmtag+'/ccf_'+line - if file_test(file) eq 1 then begin - flag[i]=1 - readcol,file,format='d,d', tau, ccf, /silent - if n_elements(tau_arr) eq 0 then tau_arr=tau - - if n_elements(ccf_arr) eq 0 then ccf_arr = ccf $ - else ccf_arr=[ [ccf_arr], [ccf] ] - - endif - - endfor - ind_coadd=where(flag eq 1, ngood) - - ccf_coadd=median(ccf_arr, dim=2) - ccf_coadd_err=stddev(ccf_arr, dim=2)/sqrt(double(ngood)) - - result={line:line, tau:tau_arr, ccf_arr:ccf_arr, rmid:rmid[ind_coadd], ccf_coadd:ccf_coadd, $ - ccf_coadd_err:ccf_coadd_err} - - -end diff --git a/pro/rm/coadd_zdcf.pro b/pro/rm/coadd_zdcf.pro deleted file mode 100644 index 87e85bcdc..000000000 --- a/pro/rm/coadd_zdcf.pro +++ /dev/null @@ -1,106 +0,0 @@ -; coadd the zdcf for a given list of objects and a specific line - -pro coadd_zdcf, rmid, line=line, result=result, coadd=coadd, diag=diag - - file='/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' - target=mrdfits(file,1) - - nobj=n_elements(rmid) - flag=lonarr(nobj) - - ; where the ZDCF results are stored - topdir='/data2/jli184/ZDCF_ACBFJ/zdcf_data/' - - tt = temporary(result) - for i=0, nobj-1 do begin - - rmtag='rm'+string(rmid[i],format='(i3.3)') - file=topdir+rmtag+'_'+line+'_zdcf.dcf' - - if file_test(file) eq 1 then begin - flag[i]=1 - readcol,file,format='d,d,d, d,d,d', tau, etau_lo, etau_hi, dcf, edcf_lo, edcf_hi, /silent - if n_elements(tau_arr) eq 0 then tau_arr=tau - - edcf = 0.5*(edcf_lo + edcf_hi) - - tmp={rmid:rmid[i], tau:tau, etau_lo:etau_lo, etau_hi: etau_hi, dcf:dcf, edcf_lo:edcf_lo, edcf_hi:edcf_hi, $ - edcf:edcf } - if n_elements(result) eq 0 then result=tmp else result=[result, tmp] - - endif - - endfor - - ; now do the coadd with different weights - nnn=n_elements(result) - nbin=n_elements(result[0].tau) - - ; 1) simple median - med_dcf = median( result.dcf, dim=2 ) - err_dcf = stddev( result.dcf, dim=2) / sqrt(nnn) - - ; 2) inverse variance weights - weights = 0.*result.edcf - ind=where(result.edcf gt 1d-6) - weights[ind] = 1.D/( (result.edcf)[ind])^2 - - mean_w = total( result.dcf*weights, 2, /double)/total(weights, 2, /double) - err_w = sqrt(total( (result.edcf*weights)^2, 2, /double)) / total(weights, 2, /double) - - ; 3) modified inverse variance weights where those extremely large weights (>5 stddev) are replaced with the median value - weights2=weights - for i=0L, nbin - 1 do begin - sigma=stddev(weights2[i, *]) - indd = where( weights2[i, *] - median(weights2[i, *]) gt 5.*sigma) - if indd[0] ne -1 then weights2[i, indd] = median(weights2[i, *]) - endfor - mean_w2 = total( result.dcf*weights2, 2, /double)/total(weights2, 2, /double) - err_w2 = sqrt(total( (result.edcf*weights2)^2, 2, /double)) / total(weights2, 2, /double) - - ; 4) use the median error in zdcf for each objects as the weight, so that the weight distribution is the same across tau bins - weights3=weights - for i=0L, nnn - 1 do begin - weights3[*,i] = median(weights3[*,i]) - endfor - mean_w3 = total( result.dcf*weights3, 2, /double)/total(weights3, 2, /double) - err_w3 = sqrt(total( (result.edcf*weights3)^2, 2, /double)) / total(weights3, 2, /double) - - coadd={rmid:result.rmid, line:line, weights:weights, weights2:weights2,weights3:weights3,tau:result[0].tau, etau_lo:result[0].etau_lo, etau_hi:result[0].etau_hi, $ - med_dcf:med_dcf, edcf_med:err_dcf, wmea_dcf:mean_w, edcf_wmea:err_w, wmea_dcf2:mean_w2,edcf_wmea2:err_w2, $ - wmea_dcf3:mean_w3,edcf_wmea3:err_w3} - - ; make diagnostic plots - target=target[coadd.rmid] - if keyword_set(diag) then begin - LoadCT, 0 - img1=result.dcf & img2=result.dcf/result.edcf - weight_1d=reform(weights3[0,*]) - ind_sort=sort(weight_1d) - ind_sort=sort(target.zfinal) - - p = [0.02, 0.1, 0.98, 0.95] - window, 1, retain=2 - range=[-1.,1.] - cgimage, img1[*, ind_sort], position=p,/erase, title='ZDCF', minvalue=range[0], maxvalue=range[1] - xyouts, 0.5, 0.955, /norm, line+' ZDCF' - cgColorbar, Position=[p[0], p[1]-0.05, p[2], p[1]-0.01], range=range - - window, 2, retain=2, title='idl 1' - range=[-10, 30.] - cgimage, img2[*, ind_sort], position=p,/erase, minvalue=range[0], maxvalue=range[1] - xyouts, 0.5, 0.955, /norm, line+' ZDCF/err' - cgColorbar, Position=[p[0], p[1]-0.05, p[2], p[1]-0.01], range=range - - window, 3, retain=2, title='weights' - loadct, 4 - range=[0,1] - cgimage, weights3[*, ind_sort]/max(weights3), position=p,/erase, minvalue=range[0], maxvalue=range[1] - xyouts, 0.5, 0.955, /norm, line+' Weight' - cgColorbar, Position=[p[0], p[1]-0.05, p[2], p[1]-0.01], range=range - - ;message, 'stop' - endif - - -end diff --git a/pro/rm/comp_boss_flux_calib.pro b/pro/rm/comp_boss_flux_calib.pro deleted file mode 100644 index 27e491e9c..000000000 --- a/pro/rm/comp_boss_flux_calib.pro +++ /dev/null @@ -1,34 +0,0 @@ -;compare the flux calibration using 70 SDSS-RM std stars -; during 2014 (32 epochs) for v5_7_1, v5_10_10 and my custom version - -pro comp_boss_flux_calib - -rmid = [850:919] - -epoch = [1:32] - -; my custom flux calib -rm_calc_rms_spec,rmid, epoch=epoch,result=result_all, run2d='v5_7_1',run1d='v5_7_1',calibdir='wh_skysub/' -wave=result_all[0].wave -fracrms = result_all.rmsflux/result_all.medflux -; BOSS pipeline v5_7_1 -rm_calc_rms_spec,rmid, epoch=epoch,result=result_all1, run2d='v5_7_1',run1d='v5_7_1',calibdir='/' -wave1=result_all1[0].wave -fracrms1 = result_all1.rmsflux/result_all1.medflux -; eBOSS pipeline v5_10_10 -rm_calc_rms_spec,rmid, epoch=epoch,result=result_all2, run2d='v5_10_10',run1d='v5_10_10',calibdir='/' -wave2=result_all2[0].wave -fracrms2 = result_all2.rmsflux/result_all2.medflux - -title='70 SDSS-RM flux standard stars in 2014 [56660-56837]; 32 epochs' -plot, wave,median(fracrms,dim=2), xrange=[3d3,1.2d4],/xsty,yrange=[0,0.2], xtitle='Obs Wavelength [A]', ytitle='RMS/AVG (median over 70 stars)', title=title -oplot, wave1, median(fracrms1,dim=2), color=cgcolor('cyan') -oplot, wave2, median(fracrms2,dim=2), color=cgcolor('red') - -items=['v5_10_10 (eboss)', 'v5_7_1 (boss)', 'sdss-rm custom'] -colors=cgcolor(['red', 'cyan', 'white']) - -legend, items, color=colors, box=0,pos=[0.6,0.9],/norm,textcolor=colors - - -end diff --git a/pro/rm/comp_syn_photo_mags.pro b/pro/rm/comp_syn_photo_mags.pro deleted file mode 100644 index d56f772b1..000000000 --- a/pro/rm/comp_syn_photo_mags.pro +++ /dev/null @@ -1,67 +0,0 @@ -; compare the synthetic mag from spectrum and -; mags from imaging - -pro comp_syn_photo_mags, rmid, prepspec=prepspec, calibdir=calibdir, $ - photodir=photodir,outdir=outdir - -; output figfile -if ~keyword_set(outdir) then outdir='/data3/quasar/yshen/work/lags/prepspec/output/' -if ~keyword_Set(calibdir) then calibdir='wh_skysub/' ; specdata -if ~keyword_Set(photodir) then photodir='/data3/quasar/yshen/work/lags/prelim_photo/' ; imaging data -if n_elements(prepspec) then prepspec=1 ; default is to fix the flux scaling using prepspec results - -; find the plate-fiber-mjd for each epoch -common rm_fibermap, target_info, epoch_info -if n_elements(target_info) eq 0 then begin - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target_info=mrdfits(file,1) - epoch_info=mrdfits(file,2) -endif -plate=target_info[rmid].plate -fiber=target_info[rmid].fiberid -mjd=target_info[rmid].mjd -mean_mjd=epoch_info.mean_mjd -nep=n_elements(plate) - -; first read in the spectrum -synmag=dblarr(5, nep) & synmag_err=dblarr(5,nep) -rm_readspec,plate,fiber,mjd=mjd,calibdir=calibdir,wave=wave,$ - flux=flux,invvar=ivar,/silent -if keyword_set(prepspec) then begin ; applying the flux correction from prepspec - ; this is a constant scaling applied to the entire spectrum - pt=get_prepspec_pt(rmid) - for i=0L, nep-1 do begin - flux[*,i] = flux[*,i]/pt[i] - ivar[*,i] = ivar[*,i]*(pt[i])^2 - endfor -endif - -; now compute synthetic mag and mag_err -for i=0,nep-1 do begin - mag=rm_spec2mag(wave[*,i],flux[*,i],ivar[*,i],synmag_err=magerr) - synmag[*,i]=mag & synmag_err[*,i]=magerr -endfor - -; now get photometric LC -rmtag='rm'+string(rmid,format='(i3.3)') -lcfile=photodir+'rm'+string(rmid,format='(i3.3)')+'photlcg.txt' -readcol, lcfile, format='d,d,d,a',mjd_g,mag_g,err_g,tag_g -lcfile=photodir+'rm'+string(rmid,format='(i3.3)')+'photlci.txt' -readcol, lcfile, format='d,d,d,a',mjd_i,mag_i,err_i,tag_i - -; now make a plot -outfile=outdir+'rm'+string(rmid,format='(i3.3)')+'_lc_check.ps' -begplot, name=outfile, /color,/landscape -ploterror, mean_mjd, synmag[1,*],synmag_err[1,*], title=rmtag+',g',xrange=[56650.,56850.], $ - xtickformat='(i0)', psym=symcat(6) -oploterror,mjd_g,mag_g,err_g,psym=symcat(9),color=cgcolor('red'),errcolor=cgcolor('red') - - ; i band -ploterror, mean_mjd, synmag[3,*],synmag_err[3,*], title=rmtag+',i',xrange=[56650.,56850.], $ - xtickformat='(i0)', psym=symcat(6) -oploterror,mjd_i,mag_i,err_i,psym=symcat(9),color=cgcolor('red'),errcolor=cgcolor('red') - -endplot -cgfixps, outfile - -end diff --git a/pro/rm/compile_lineshift_cat.pro b/pro/rm/compile_lineshift_cat.pro deleted file mode 100644 index d243e6a91..000000000 --- a/pro/rm/compile_lineshift_cat.pro +++ /dev/null @@ -1,67 +0,0 @@ -; Combine the fitting results for the line shifts study - -pro compile_lineshift_cat - - ; this is the results from the global fit - ; file='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/qso_prop-0000-56837_lineshift.fits' - file = '/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/civ_3gauss/qso_prop-0000-56837.fits' - result=mrdfits(file,1) - - ; now add tags for NeV3426, OII3728 and CaII3934 - file='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/local_fit/qso_prop-0000-56837_lineshift.fits' - result1=mrdfits(file,1) - alltag=tag_names(result1) - ind=where(strmatch(alltag, 'CAII3934*') eq 1 or $ - strmatch(alltag, 'OII3728*') eq 1 or $ - strmatch(alltag, 'NEV3426*') eq 1, comp=indd) - tag_rej=alltag[indd] - remove_tags, result1, tag_rej, result2 - - result=struct_addtags(result, result2) - - ; output the fits catalog - ; outfile='/data3/yshen/work/lineshifts/lineshift.fits' - outfile = '/data3/yshen/work/lineshifts/lineshift_civ3gauss.fits' - mwrfits, result, outfile, /create - -end - -; the routine below will compile the results for the results on different Sn -pro compile_lineshift_cat_sn - -err_scal_arr=[2.,4.,6.,8.,10.] -nerr=n_elements(err_scal_arr) -topdir='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/' - -for i=0L, nerr - 1 do begin - - ; flesh out the output structure - junk=temporary(result) - - ; this is the results from the global fit - file=topdir+'evenmore_lines/err_scal_' $ - + string(err_scal_arr[i],format='(f0.1)') + '/' + 'qso_prop-0000-56837.fits' - if file_test(file) eq 1 then $ - result=mrdfits(file,1) - - ; now add tags for NeV3426, OII3728 and CaII3934 - file=topdir+'local_fit/err_scal_' $ - + string(err_scal_arr[i],format='(f0.1)') + '/' + 'qso_prop-0000-56837.fits' - result1=mrdfits(file,1) - alltag=tag_names(result1) - ind=where(strmatch(alltag, 'CAII3934*') eq 1 or $ - strmatch(alltag, 'OII3728*') eq 1 or $ - strmatch(alltag, 'NEV3426*') eq 1, comp=indd) - tag_rej=alltag[indd] - remove_tags, result1, tag_rej, result2 - - if n_elements(result) ne 0 then result=struct_addtags(result, result2) else $ - result=result2 - - ; output the fits catalog - outfile='/data3/yshen/work/lineshifts/lineshift_err_scal_'+ string(err_scal_arr[i],format='(f0.1)') + '.fits' - mwrfits, result, outfile, /create - -endfor - -end diff --git a/pro/rm/convert_yip_pca_fits.pro b/pro/rm/convert_yip_pca_fits.pro deleted file mode 100644 index c8a42ba43..000000000 --- a/pro/rm/convert_yip_pca_fits.pro +++ /dev/null @@ -1,55 +0,0 @@ -; convert the PCA templates by Yip et al. (2004) to fits files - -pro convert_yip_pca_fits - - outdir='/data1/quasar/yshen/Project/pca_decomp/Yip_pca_templates/' - - ; galaxy PCA - pca_dir=outdir+'GALeSpecPUBLIC/' - result={wave:dblarr(3839L), pca:dblarr(3839L, 10L)} - pca=dblarr(3839L, 10L) - for i=0L, 9 do begin - file=pca_dir+'galaxyKL_eigSpec_' + string(i+1,format='(i0)') + '.dat' - readcol,file,format='d,d',wave, flux,/silent - pca[*,i] = flux - endfor - result.wave=wave - result.pca=pca - outfile = outdir + 'gal_eigenspec_Yip2004.fits' - mwrfits, result, outfile, /create - - ; QSO PCA - pca_dir=outdir+'dr1qso/global/' - tag='qso_eigenspec_Yip2004_global' - result={wave:dblarr(2582L), pca:dblarr(2582L, 50L)} - pca=dblarr(2582L, 50L) - for i=0,49 do begin - file=pca_dir+'eigSpec_qso_'+string(i,format='(i0)')+'.dat' - readcol,file,format='d,d',wave, flux,/silent - pca[*,i] = flux - endfor - result.wave=wave - result.pca=pca - outfile=outdir+tag+'.fits' - mwrfits, result, outfile, /create - - tag=['AZBIN4','AZBIN5','BZBIN2','BZBIN3','BZBIN4','BZBIN5','CZBIN1','CZBIN2', $ - 'CZBIN3','CZBIN4','DZBIN1','DZBIN2'] - for jj=0L, n_elements(tag) - 1 do begin - pca_dir=outdir+'dr1qso/mizbinned/'+tag[jj] + '/' - readcol, pca_dir+'eigSpec_qso_0.dat',format='d',wave,/silent - npix=n_elements(wave) - result={wave:dblarr(npix), pca:dblarr(npix, 50L)} - pca=dblarr(npix, 50L) - for i=0,49 do begin - file=pca_dir+'eigSpec_qso_'+string(i,format='(i0)')+'.dat' - readcol,file,format='d,d',wave, flux,/silent - pca[*,i] = flux - endfor - result.wave=wave - result.pca=pca - outfile=outdir+'qso_eigenspec_Yip2004_'+tag[jj]+'.fits' - mwrfits, result, outfile, /create - endfor - -end diff --git a/pro/rm/corr_mis_fiber.pro b/pro/rm/corr_mis_fiber.pro deleted file mode 100644 index 9f8520ec6..000000000 --- a/pro/rm/corr_mis_fiber.pro +++ /dev/null @@ -1,420 +0,0 @@ -; since eBOSS the platemap has a mismatched fiber problem; this program aims to -; find these mismatches -; epochs affected: since 57038 (ep33) - -pro corr_mis_fiber, mjd_start, mjd_end - -file = '/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -target = mrdfits(file, 1) ; the target fibermap -nobj = 1000L - -nep = n_elements(target[0].mjd) -mjdall = target[0].mjd -ind1 = (where(mjdall eq mjd_start))[0] & ind2 = (where(mjdall eq mjd_end))[0] - -ncheck = ind2 - ind1 + 1L ; # of eBOSS epochs to check - -; note this starts from mjd_start -result = {rmid:0L, plate:lonarr(ncheck), mjd:lonarr(ncheck), old_fiber:lonarr(ncheck), $ - mis_flag:lonarr(ncheck), corr_fiber:lonarr(ncheck)} -result.mjd = (target[0].mjd)[ind1:ind2] -result.plate = (target[0].plate)[ind1:ind2] -result = replicate(result, nobj) - -for iobj=0,nobj-1 do begin - - redchi2_arr = dblarr(nobj) + 999L - mis_flag_arr = lonarr(ncheck) - corr_fiber_arr = lonarr(ncheck) - old_fiber_arr = lonarr(ncheck) - - ; readin the reference spectrum; do not specify calibdir - rm_readspec, 0, iobj+1, $ - mjd = 56837, wave=wave_ref, flux=flux_ref, invvar=ivar_ref - ; cut the reference wave window to ensure overlap with the comparison spectrum - wave_ref = wave_ref[150:4000] - flux_ref = flux_ref[150:4000] - ivar_ref = ivar_ref[150:4000] - npix = n_elements(wave_ref) - - print, 'redchi2(old,new), plate, mjd, fiber(old,new)' - for iep=ind1, ind2 do begin - - ; read in all fibers in this epoch - rm_readspec, (target[iobj].plate)[iep], $ - mjd=(target[iobj].mjd)[iep], wave=wave, flux=flux, invvar=ivar - - ; now compare the flux with the reference flux - note the wavegrid is different - ind = where(ivar_ref gt 1d-5) - minwave = min(wave_ref[ind]) & maxwave = max(wave_ref[ind] ) - - ; find the spectrum that has the minimum redchi2 compared with the reference spectrum - for j=0, nobj-1 do begin - - flux_use = interpol(flux[*,j], wave[*,j], wave_ref) - ivar_use = interpol(ivar[*,j], wave[*,j], wave_ref) - - ; make sure this spectrum is not corrupted - ind_good = where(ivar_use gt 1d-5, ngood) - if ngood gt 0.9*npix then begin - ind_hi = where(flux_ref gt min(flux_ref), n_hi) - ;scale = median(flux_ref)/median(flux_use) - ;flux_use = flux_use*scale - ;ivar_use = ivar_use/scale^2 - chi2 = total((flux_use[ind_hi] - flux_ref[ind_hi])^2*ivar_use[ind_hi], /double) - if chi2 gt 0 then redchi2_arr[j] = chi2/double(n_hi) - endif - endfor - - ; check if it is the same fiber id - old_fiber = (target[iobj].fiberid)[iep] - old_fiber_arr[iep - ind1] = old_fiber - if redchi2_arr[old_fiber - 1] gt 15 then begin - mis_flag_arr[iep - ind1] = 1L - ttt = min(redchi2_arr, ind_min) - new_fiber = ind_min+1 - print, redchi2_arr[old_fiber - 1], ttt, (target[iobj].plate)[iep], $ - (target[iobj].mjd)[iep], old_fiber, new_fiber - corr_fiber_arr[iep - ind1] = new_fiber - endif - endfor - - - result[iobj].mis_flag = mis_flag_arr - result[iobj].corr_fiber = corr_fiber_arr - result[iobj].old_fiber = old_fiber_arr - - splog, 'Finished RMID: ', iobj - ; print, result[iobj].mis_flag - ; message, 'stop' - ; pause - -endfor - -; NOTE that not all these findings are mismatches!! Visual inspection still needed!! -outfile = '/home/yshen/products/Linux/idlrm/etc/corr_fiber_eboss_' + string(mjd_start,format='(i5.5)') + $ - '-' + string(mjd_end, format='(i5.5)') + '.fits' -mwrfits, result, outfile, /create - - -end - - -pro output_corr_fiber_list, infile, outfile - -if ~keyword_set(infile) then file = '/home/yshen/products/Linux/idlrm/etc/corr_fiber_eboss_57038.fits' $ - else file = infile -result = mrdfits(file,1) - -if ~keyword_set(outfile) then outfile = '/home/yshen/products/Linux/idlrm/etc/corr_fiber_eboss_57038' -openw, lun, outfile, /get_lun -printf, lun, '# RMID Plate MJD old_fiber new_fiber' -fmt = '(i3.3, " ", i4.4, " ", i5.5, " ", i4.4, " ", i4.4)' - -for i=0L, 999 do begin - plate = result[i].plate & mjd = result[i].mjd - o_fiber = result[i].old_fiber & n_fiber = result[i].corr_fiber - ind = where(n_fiber gt 0, nnn) - if nnn gt 0 then begin - plate = plate[ind] & mjd = mjd[ind] & o_fiber = o_fiber[ind] - n_fiber = n_fiber[ind] - for jj = 0, nnn-1 do begin - printf, lun, format=fmt, i, plate[jj], mjd[jj], o_fiber[jj], n_fiber[jj] - endfor - endif - -endfor - -close, lun -free_lun, lun - - -end - -; make diag plots for plate 7339-57518 to pin down the last few mismatches -pro plot_57518_check - -file = '/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -target = mrdfits(file, 1) ; the target fibermap -rmid=lindgen(1000L) -nnn = n_elements(rmid) - -plate=target.plate & fiber=target.fiberid & mjd=target.mjd -ind=where(mjd[*,0] eq 57518) -plate=plate[ind,*] & fiber=fiber[ind,*] & mjd=mjd[ind,*] -plate=reform(plate) & fiber=reform(fiber) & mjd=reform(mjd) -count=lonarr(1000) -for i=0,999L do begin & ind=where(fiber eq fiber[i], nn) & count[i]=nn & endfor - -; find all the missing fibers -for i=0,999L do begin - ind=where(fiber eq i+1, nn) - if nn eq 0 then begin - if n_elements(missing_fiber) eq 0 then missing_fiber=i+1 else $ - missing_fiber=[missing_fiber,i+1] - endif -endfor -figfile='/data3/yshen/ftp/sdssrm/collab/bossredux/fiber_mismatch_eboss/57518_tmp/dup_fiber_spec.ps' -begplot, name=figfile,/color -ind = where(count gt 1) -rmid_use = rmid[ind] & fiber_use = fiber[ind] -ind = sort(fiber_use) -rmid_use = rmid_use[ind] & fiber_use = fiber_use[ind] -for i=0, n_elements(rmid_use) - 1 do begin - - if (i mod 2) eq 0 then begin - noerase = 0 & pos = [0.12,0.55, 0.96, 0.92] - endif else begin - noerase = 1 & pos = [0.12, 0.08, 0.96, 0.45] - endelse - rm_readspec,0,rmid_use[i]+1,mjd=56837,wave=wave0,flux=flux0 - rm_readspec,7339,fiber_use[i],mjd=57518,wave=wave,flux=flux - title='RMID'+string(rmid_use[i],format='(i3.3)')+', ' + '7339-57518-'+string(fiber_use[i],format='(i4.4)') - plot, wave0,flux0/median(flux0), xrange=[3500,10500.],/xsty, thick=3,title=title, $ - pos=pos,noerase=noerase,/nodata, yrange=[-2,10] - oplot, wave, flux/median(flux), color=cgcolor('red'),thick=3 - oplot, wave0,flux0/median(flux0) - flux_sm = flux/median(flux) - oplot, wave, median(flux_sm,20), color=cgcolor('cyan'),thick=3 -endfor - -endplot - -; plot the spectra of all missing fibers -figfile='/data3/yshen/ftp/sdssrm/collab/bossredux/fiber_mismatch_eboss/57518_tmp/missing_fiber_spec.ps' -begplot, name=figfile,/color, /landscape - -for i=0,n_elements(missing_fiber)-1 do begin - title = '7339-57518-' + string(missing_fiber[i],format='(i4.4)') - rm_readspec, 7339,missing_fiber[i],mjd=57518, wave=wave,flux=flux - plot, wave, flux/median(flux), yrange=[-2,10], title=title, xrange=[3500,10500.],/xsty, thick=3 - flux_sm = flux/median(flux) - oplot, wave, median(flux_sm, 15), thick=5,color=cgcolor('red') -endfor - -endplot -cgfixps, figfile - -end - - -; take a close look at the mismatched fibers -pro check_corr_fiber_close, rmid, plate, mjd, o_fiber,start_obj=start_obj, plotnextfiber=plotnextfiber,run2d=run2d - -file = '/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -target = mrdfits(file, 1) ; the target fibermap -nnn = n_elements(rmid) - -if ~keyword_set(start_obj) then start_obj=1L -i=start_obj - 1L - -if ~keyword_set(outfile) then outfile = 'output.marked' -openw, lun, outfile, /get_lun -printf, lun, '# RMID Plate MJD old_fiber new_fiber' -fmt = '(i3.3, " ", i4.4, " ", i5.5, " ", i4.4, " ", a0)' - - -while i le nnn - 1L do begin - - rm_readspec, 0, rmid[i]+1, mjd=56837, wave=wave0, flux=flux0 - flux0 = flux0/median(flux0) - title = 'RIMD'+string(rmid[i],format='(i3.3)')+',' + string(plate[i],format='(i4.4)')+ $ - '-' + string(mjd[i], format='(i5.5)')+'-'+string(o_fiber[i],format='(i3.3)') - plot, wave0, flux0, yrange=[-1,8], title=title,/nodata - - rm_readspec, plate[i], o_fiber[i],mjd=mjd[i],calibdir='/wh_skysub/',wave=wave,flux=flux,run2d=run2d - flux=flux/median(flux) - oplot, wave, median(flux, 5), color=cgcolor('blue') - - rm_readspec, plate[i], o_fiber[i]+1,mjd=mjd[i],calibdir='/wh_skysub/',wave=wave,flux=flux,run2d=run2d - flux=flux/median(flux) - if keyword_set(plotnextfiber) then begin - oplot, wave, median(flux, 5), color=cgcolor('red') - xyouts, 0.5, 0.85, string(o_fiber[i]+1,format='(i3.3)'),color=cgcolor('red'), /norm - endif - oplot, wave0, flux0 - - i=i+1 ; move to the next object - mark = 'NO' - mark_input = '' - read, mark_input, prompt='QUIT? [NO] ' - - if strmatch(strmid(mark_input,0,1),'#') then begin ; contral commands rather than comments - if strmatch(strmid(mark_input,1,1), 'z') then begin - new_z = double(strmid(mark_input,2)) - endif else new_z = -1 - i = i-2 ; move back one more object - endif else begin - if strlen(mark_input) gt 1L then mark = mark_input - if strmatch(mark_input, 'y') then mark = string(o_fiber[i-1] +1, format='(i4.4)') - if strmatch(mark_input, 'e') or strmatch(mark_input, 'q') then begin - close, lun - free_lun, lun - return - endif - - ; only write out if the mark is not "NO" - if not strmatch(mark,'NO') then printf, lun, format = fmt, rmid[i-1], plate[i-1], mjd[i-1], $ - o_fiber[i-1], mark - endelse -endwhile - -close, lun -free_lun, lun - -end - - -; look through all potential mismatched fibers and flag the ones that are indeed mismatches -pro check_corr_fiber, infile=infile, outfile=outfile,start_obj=start_obj,plate=plate,mjd=mjd,o_fiber=o_fiber, $ - rmid_all=rmid_all, output=output - -if ~keyword_set(infile) then file = '/home/yshen/products/Linux/idlrm/etc/corr_fiber_eboss_57038-57576' $ - else file = infile -if n_elements(rmid_all) eq 0 then begin - readcol, file, format='l, l,l,l', rmid_all, plate, mjd, o_fiber -endif -nnn=n_elements(rmid_all) -if ~keyword_set(start_obj) then start_obj=1L - - -if keyword_set(output) then begin - if ~keyword_set(outfile) then $ - outfile = file + '.marked' - openw, lun, outfile, /get_lun - printf, lun, '# RMID Plate MJD old_fiber new_fiber' -endif -fmt = '(i3.3, " ", i4.4, " ", i5.5, " ", i4.4, " ", a0)' -charsize=1.5 - -i=start_obj - 1L -while i le nnn - 1L do begin - - rmid = rmid_all[i] - - ; get the ref spec - rm_readspec, 0, rmid+1, mjd=56837, wave=wave0, flux=flux0 - ; get the new spec - rm_readspec, plate[i],o_fiber[i], mjd=mjd[i], wave=wave1, flux=flux1 - if o_fiber[i]+1 le 1000 then begin - rm_readspec, plate[i],o_fiber[i]+1, mjd=mjd[i], wave=wave2, flux=flux2 - endif else begin ; no fiber spectrum is read - wave2 = wave1 & flux2 = wave2*0.D - endelse - - title = string(i,format='(i0)') + ' RMID '+string(rmid,format='(i3.3)') + ' ' + string(plate[i], format='(i4.4)') + $ - ' ' + string(mjd[i], format='(i5.5)') - - sflux = median(flux0[50:4000], 15) - sflux1 = median(flux1[50:4000], 15) - sflux2 = median(flux2[50:4000], 15) - ;yrange = [min([sflux,sflux1,sflux2]), max([sflux,sflux1,sflux2])] - yrange = [-1, max([sflux,sflux1,sflux2])] - - plot, wave0, flux0, xrange=[3600, 1d4],/xsty, title=title,charsize=charsize, yrange=yrange,/ysty - oplot, wave1, smooth(flux1,5), color=cgcolor('red') - oplot, wave2, smooth(flux2,5), color=cgcolor('green') - xyouts, 0.2, 0.9, /norm, 'old_fiber='+string(o_fiber[i],format='(i4.4)'),color=cgcolor('red'),charsize=charsize - xyouts, 0.6, 0.9, /norm, 'fiber+1='+string(o_fiber[i]+1,format='(i4.4)'),color=cgcolor('green'), charsize=charsize - - i=i+1 ; move to the next object - - mark = 'NO' - mark_input = '' - read, mark_input, prompt='FLAG? [NO] ' - - if strmatch(strmid(mark_input,0,1),'#') then begin ; contral commands rather than comments - if strmatch(strmid(mark_input,1,1), 'z') then begin - new_z = double(strmid(mark_input,2)) - endif else new_z = -1 - i = i-2 ; move back one more object - endif else begin - if strlen(mark_input) gt 1L then mark = mark_input - if strmatch(mark_input, 'y') then mark = string(o_fiber[i-1] +1, format='(i4.4)') - if strmatch(mark_input, 'e') or strmatch(mark_input, 'q') then begin - close, lun - free_lun, lun - return - endif - - ; only write out if the mark is not "NO" - if keyword_set(output) then begin - if not strmatch(mark,'NO') then printf, lun, format = fmt, rmid, plate[i-1], mjd[i-1], $ - o_fiber[i-1], mark - endif - endelse - -endwhile - -if keyword_set(output) then begin - close, lun - free_lun, lun -endif - -end - - -pro plot_misfiber -; plot the possible mismatched fibers - -file = '/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -target = mrdfits(file, 1) ; the target fibermap -nobj = 1000L - -file = '/home/yshen/products/Linux/idlrm/etc/corr_fiber_eboss_57038.txt' -readcol, file, format='l,l,l,l', rmid, plate, mjd, fiber - - -file = '/home/yshen/products/Linux/idlrm/etc/corr_fiber_eboss_57038.txt.flagged' -readcol,file, format='x,x,a', flag - -; ind_mis = [125, 197, 209, 214, 230, 247, 1596, 1599, 1600, 1618, 1625] - 1L -; ind_mis = where(plate eq 7339 and mjd eq 57518) -ind_mis = where(plate eq 7338 and mjd eq 57038) ;; looks all OK -ind_mis = where(plate eq 7338 and mjd eq 57135);; a few affected -;ind_mis = where(plate eq 7340 and mjd eq 57196) ; nothing -;ind_mis = where(plate eq 7340 and mjd eq 57576) ; nothing -;ind_mis = where(plate eq 7338 and mjd eq 57166) ; nothing -ind_mis = where(plate eq 7339 and mjd eq 57481) ; nothing -;ind_mis = where(plate eq 7339 and mjd eq 57510) ; nothing -;ind_mis = where(plate eq 7339 and mjd eq 57082) ; nothing -;ind_mis = where(plate eq 7339 and mjd eq 57544) ; nothing -;ind_mis = where(plate eq 7339 and mjd eq 57492) ; nothing - - -rmid = rmid[ind_mis] & plate = plate[ind_mis] & mjd = mjd[ind_mis] & fiber = fiber[ind_mis] -nnn = n_elements(rmid) - -figfile='/home/yshen/products/Linux/idlrm/etc/plot_misfiber.ps' -begplot, name=figfile, /color, /landscape - -colors = cgcolor(['black', 'red', 'green', 'cyan']) -for i=0, nnn - 1 do begin - - str = string(plate[i],format='(i4.4)')+'-'+string(mjd[i],format='(i5.5)')+'-'+string(fiber[i],format='(i4.4)') - items = ['RMID '+string(rmid[i],format='(i3.3)'), str, 'Fiber+1','Fiber-1'] - rm_readspec, 0, rmid[i] + 1, mjd=56837, wave=wave,flux=flux, calibdir='wh_skysub/' - plot, wave, median(flux, 15), xtitle='Wavelength', ytitle = 'Flux', color=colors[0] - rm_readspec, plate[i], fiber[i], mjd = mjd[i], wave=wave,flux=flux, calibdir='wh_skysub/' - oplot, wave, median(flux, 15), color=colors[1] - if fiber[i]+1 le 1000 then $ - rm_readspec, plate[i], fiber[i]+1, mjd = mjd[i], wave=wave,flux=flux, calibdir='wh_skysub/' - oplot, wave, median(flux, 15), color=colors[2] - rm_readspec, plate[i], fiber[i]-1, mjd = mjd[i], wave=wave,flux=flux, calibdir='wh_skysub/' - oplot, wave, median(flux, 15), color=colors[3] - - legend, items, color=colors, pos=[0.7, 0.92], box=0, /norm, textcolor=colors - -endfor - -endplot -cgfixps, figfile - - -end - -; check the 2018 spectroscopy -pro check_2018 - - -end diff --git a/pro/rm/corr_target_fibermap.pro b/pro/rm/corr_target_fibermap.pro deleted file mode 100644 index ace21b0f3..000000000 --- a/pro/rm/corr_target_fibermap.pro +++ /dev/null @@ -1,43 +0,0 @@ -; manually fix the mismatched fibers in the target_fibermap -; first run map_fiber_target to get a clean slate - -pro corr_target_fibermap - -;file = '/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits.07132017' -;file = '/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits.05112018' -file = '/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits.07192018' - -tt1 = mrdfits(file,1) -tt2 = mrdfits(file,2) - -plate=tt1.plate & fiber=tt1.fiberid & mjd=tt1.mjd & sn=tt1.med_sn -plate = plate[*,0] & mjd = mjd[*,0] - - -corrfile='/data3/yshen/ftp/sdssrm/collab/bossredux/fiber_mismatch_eboss/corr_fiber_eboss_all' -readcol,corrfile,format='l,l,l,l,l',rmid, pp, mm, old_fiber, new_fiber -nnn = n_elements(rmid) - -for i=0, nnn-1 do begin - - ind1 = rmid[i] - ind2 = where( mjd eq mm[i]) - - ind3 = where( fiber[ind2, *] eq new_fiber[i]) - - sn[ind2, ind1] = sn[ind2, ind3] - - print, fiber[ind2, ind1], new_fiber[i] - fiber[ind2, ind1] = new_fiber[i] - - -endfor - -tt1.fiberid = fiber -tt1.med_sn = sn - -outfile = '/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -mwrfits, tt1, outfile, /create -mwrfits, tt2, outfile - -end diff --git a/pro/rm/cp_eboss_reproc.pro b/pro/rm/cp_eboss_reproc.pro deleted file mode 100644 index fae2a7403..000000000 --- a/pro/rm/cp_eboss_reproc.pro +++ /dev/null @@ -1,25 +0,0 @@ -; all plates taken during 2015- (eBOSS) had an extraction problem with earlier version -; of eBOSS pipeline (the BOSS v5_7_1 pipeline works fine but was not run on most eBOSS plates) -; the new v5_10_10 reduction seems to fix the problem, which I reprocessed with custom -; flux calibration and sky subtraction -; USE this routine to copy the reprocessed spPlate files to the ftp - -pro cp_eboss_reproc, plate, mjd - -fromdir = '/data3/yshen/spectro/bossredux/v5_10_10/' -todir = '/data3/yshen/ftp/sdssrm/collab/bossredux/v5_10_10/wh_skysub/' - -nnn = n_elements(plate) - -for i=0, nnn - 1 do begin - pstr = string(plate[i],format='(i4.4)') - mstr = string(mjd[i], format='(i5.5)') - - file = 'spPlate-' + pstr + '-' + mstr + '.fits' - cmd = 'cp -p ' + fromdir + pstr + '/wh_skysub/' + file + ' ' + todir + pstr + '/' - - spawn, cmd -endfor - - -end diff --git a/pro/rm/defsymbols.pro b/pro/rm/defsymbols.pro deleted file mode 100644 index 7e5e36e61..000000000 --- a/pro/rm/defsymbols.pro +++ /dev/null @@ -1,300 +0,0 @@ -PRO defsymbols - - ;; Define symbols in true-type and vector type fonts - ;; System variables !TSYM AND !VSYM, structures, - ;; are created. - ;; - ;; !CSYM is also created and will contain the common symbols. - ;; It will copy in symbols from !TSYM or !VSYM depending - ;; on !p.font (1 or 0 for true-type, -1 for vector) - ;; - ;; Thus if you change font types be sure to rerun defsymbols - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; true type font symbols (vector below) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - defsysv, '!TSYM', exist=exist - IF NOT exist THEN BEGIN - ;; define some plotting symbols - ;; put !7 on first one to make times font - ;; these are common with vector drawn fonts - alpha = '!9a!X' - beta = '!9b!X' - gamma = '!9g!X' - gamma_cap = '!9G!X' - delta = '!9d!X' - delta_cap = '!9D!X' - epsilon = '!9e!X' - zeta = '!9z!X' - eta = '!9h!X' - theta = '!9q!X' - theta_cap = '!9Q!X' - theta2 = '!9'+string(74b)+'!X' - kappa = '!9k!X' - lambda = '!9l!X' - lambda_cap = '!9L!X' - mu = '!9m!X' - nu = '!9n!X' - xi = '!9x!X' - xi_cap = '!9X!X' - pi = '!9p!X' - pi_cap = '!9P!X' - rho = '!9r!X' - sigma = '!9s!X' - sigma_cap = '!9S!X' - tau = '!9t!X' - upsilon = '!9u!X' - upsilon_cap = '!9'+string(161b)+'!X' - phi = '!9j!X' - phi_cap = '!9J!X' - phi2 = '!9f!X' - chi = '!9c!X' - psi = '!9y!X' - psi_cap = '!9Y!X' - omega = '!9w!X' - omega_cap = '!9W!X' - - angstrom = '!7'+strtrim(string(197B))+'!X' - ;;angstrom = string(197B) - - grad = '!9'+string(209b)+'!X' - gtequal = '!9'+string(179b)+'!X' - ltequal = '!9'+string(163b)+'!X' - infinity = '!9'+string(165b)+'!X' - notequal = '!9'+string(185b)+'!X' - partial = '!9'+string(182b)+'!X' - plusminus = '!9'+string(177b)+'!X' - propto = '!9'+string(181b)+'!X' - sqrtsym = '!9'+string(214b)+'!X' - - minus = '!9'+string(45b)+'!X' - plus = '!9'+string(43b)+'!X' - times = '!9'+string(180b)+'!X' - - prime = '!9'+string(162b)+'!X' - primeprime = '!9'+string(178b)+'!X' - degrees = '!9'+string(176b)+'!X' - - ;; not in vector sym - upsilon_cap2 = '!9U!X' - omega2 = '!9v!X' - approx = '!9'+string(64b)+'!X' - approx2 = '!9'+string(187b)+'!X' - sum = '!9'+string(229b)+'!X' - earth = '!9'+string(197b)+'!X' - asterisk = '!9'+string(42b)+'!X' - - tsym1 = create_struct('alpha', alpha, $ - 'beta', beta, $ - 'gamma', gamma, $ - 'gamma_cap', gamma_cap, $ - 'delta', delta, $ - 'delta_cap', delta_cap, $ - 'epsilon', epsilon, $ - 'zeta', zeta, $ - 'eta', eta, $ - 'theta', theta, $ - 'theta_cap', theta_cap,$ - 'theta2',theta2,$ - 'kappa', kappa, $ - 'lambda', lambda, $ - 'lambda_cap', lambda_cap, $ - 'mu', mu,$ - 'nu', nu, $ - 'xi', xi, $ - 'xi_cap', xi_cap, $ - 'pi', pi, $ - 'pi_cap', pi_cap, $ - 'rho', rho) - tsym2 = create_struct('sigma', sigma, $ - 'sigma_cap', sigma_cap, $ - 'tau', tau, $ - 'upsilon', upsilon, $ - 'upsilon_cap', upsilon_cap,$ - 'upsilon_cap2',upsilon_cap2,$ - 'phi', phi, $ - 'phi_cap', phi_cap, $ - 'phi2', phi2,$ - 'chi', chi, $ - 'psi', psi, $ - 'psi_cap', psi_cap, $ - 'omega', omega, $ - 'omega_cap', omega_cap,$ - 'omega2', omega2, $ - 'angstrom', angstrom) - - tmath = create_struct('approx', approx, $ - 'approx2',approx2,$ - 'grad', grad,$ - 'gtequal', gtequal, $ - 'ltequal', ltequal,$ - 'infinity', infinity,$ - 'notequal', notequal,$ - 'partial', partial,$ - 'plusminus',plusminus,$ - 'propto', propto, $ - 'sqrt', sqrtsym, $ - 'sum', sum,$ - 'minus',minus,$ - 'plus',plus,$ - 'times',times) - tother = create_struct('prime', prime, $ - 'primeprime',primeprime,$ - 'asterisk',asterisk,$ - 'degrees',degrees,$ - 'earth', earth) - tsym = create_struct(tsym1,tsym2,tmath,tother) - defsysv, '!TSYM', tsym - ENDIF - - defsysv, '!VSYM', exist=exist - IF NOT exist THEN BEGIN - ;; define some plotting symbols - ;; These are common with true type - alpha = '!7a!X' - beta = '!7b!X' - gamma = '!7c!X' - gamma_cap = '!7C!X' - delta = '!7d!X' - delta_cap = '!7D!X' - epsilon = '!7e!X' - zeta = '!7f!X' - eta = '!7g!X' - theta = '!7h!X' - theta_cap = '!7H!X' - theta2 = '!9t!X' - kappa = '!7j!X' - lambda = '!7k!X' - lambda_cap = '!7K!X' - mu = '!7l!X' - nu = '!7m!X' - xi = '!7n!X' - xi_cap = '!7N!X' - pi = '!7p!X' - pi_cap = '!7P!X' - rho = '!7q!X' - sigma = '!7r!X' - sigma_cap = '!7R!X' - tau = '!7s!X' - upsilon = '!7t!X' - upsilon_cap = '!7T!X' - phi = '!7u!X' - phi_cap = '!7U!X' - phi2 = '!9P!X' - chi = '!7v!X' - psi = '!7w!X' - psi_cap = '!7W!X' - omega = '!7x!X' - omega_cap = '!7X!X' - - angstrom = '!3'+strtrim(string(197b))+'!X' - - grad = '!9G!X' - gtequal = '!9b!X' - ltequal = '!9l!X' - infinity = '!9$!X' - notequal = '!9=!X' - partial = '!9D!X' - plusminus = '!9+!X' - propto = '!9?!X' - sqrtsym = '!9S!X' - minus = '!7-!X' - plus = '!7+!X' - times = '!9X!X' - - prime = "!9'!X" - primeprime = "!9''!X" - degrees = '!9%!X' - - ;; not in true type - sun = '!9n!X' - sim = '!9A!X' - minusplus = '!9-!X' - - vsym1 = create_struct('alpha', alpha, $ - 'beta', beta, $ - 'gamma', gamma, $ - 'gamma_cap', gamma_cap, $ - 'delta', delta, $ - 'delta_cap', delta_cap, $ - 'epsilon', epsilon, $ - 'zeta', zeta, $ - 'eta', eta, $ - 'theta', theta, $ - 'theta_cap', theta_cap,$ - 'theta2', theta2, $ - 'kappa', kappa, $ - 'lambda', lambda, $ - 'lambda_cap', lambda_cap, $ - 'mu', mu,$ - 'nu', nu, $ - 'xi', xi, $ - 'xi_cap', xi_cap, $ - 'pi', pi, $ - 'pi_cap', pi_cap, $ - 'rho', rho) - vsym2 = create_struct('sigma', sigma, $ - 'sigma_cap', sigma_cap, $ - 'tau', tau, $ - 'upsilon', upsilon, $ - 'upsilon_cap', upsilon_cap,$ - 'phi', phi, $ - 'phi_cap', phi_cap, $ - 'phi2', phi2,$ - 'chi', chi, $ - 'psi', psi, $ - 'psi_cap', psi_cap, $ - 'omega', omega, $ - 'omega_cap', omega_cap) - - vscience = create_struct('angstrom', angstrom, $ - 'sun', sun) - - vmath = create_struct('grad', grad,$ - 'gtequal', gtequal, $ - 'ltequal', ltequal,$ - 'infinity', infinity,$ - 'notequal', notequal,$ - 'partial', partial,$ - 'plusminus',plusminus,$ - 'minusplus',minusplus,$ - 'propto', propto, $ - 'sqrt', sqrtsym, $ - 'minus', minus,$ - 'plus', plus, $ - 'times',times) - tother = create_struct('prime', prime, $ - 'primeprime',primeprime,$ - 'degrees',degrees) - vsym = create_struct(vsym1,vsym2,vscience,vmath,tother) - defsysv, '!VSYM', vsym - ENDIF - - ;; now create another system variable with only the common - ;; symbols from vector and truetype. This one we can always use - ;; to get what we want - - vtag_names = tag_names(!vsym) - ttag_names = tag_names(!tsym) - match, vtag_names, ttag_names, mv, mt - nmatch=n_elements(mv) - - defsysv, '!csym', exist=cexist - IF NOT cexist THEN BEGIN - csym = create_struct(vtag_names[mv[0]], '') - FOR i=1L, nmatch-1 DO csym = create_struct(csym, vtag_names[mv[i]], '') - - defsysv, '!csym', csym - ENDIF - - ;; copy in the correct values for the font we are using - IF (!p.font EQ 1) OR (!p.font EQ 0) THEN BEGIN - ;; true-type fonts - FOR i=0L, nmatch-1 DO !csym.(i) = !tsym.(mt[i]) - ENDIF ELSE BEGIN - ;; vector drawn fonts - FOR i=0L, nmatch-1 DO !csym.(i) = !vsym.(mv[i]) - ENDELSE - -END diff --git a/pro/rm/delete_misfiber_epoch.pro b/pro/rm/delete_misfiber_epoch.pro deleted file mode 100644 index e82fd9e33..000000000 --- a/pro/rm/delete_misfiber_epoch.pro +++ /dev/null @@ -1,22 +0,0 @@ -; delete the mismatched-fiber ascii spectra in /data3/yshen/ftp/sdssrm/collab/bossredux/v5_7_1/ascii_spec/wh_skysub/ - -pro delete_misfiber_epoch - -file = '/data3/yshen/ftp/sdssrm/collab/bossredux/fiber_mismatch_eboss/corr_fiber_eboss_all' -readcol,file,format='l,l,l,l',rmid, plate, mjd, fiber - -nnn = n_elements(rmid) -dir = '/data3/yshen/ftp/sdssrm/collab/bossredux/v5_7_1/ascii_spec/wh_skysub/' -for i=0, nnn - 1 do begin - - tag = string(plate[i],format='(i4.4)')+'-'+string(mjd[i],format='(i5.5)')+ $ - '-' + string(fiber[i], format='(i4.4)') - - filename = dir + 'RMID_' + string(rmid[i],format='(i3.3)')+'/' + $ - '*' + tag + '.dat.gz' - - spawn, 'rm ' + filename - -endfor - -end diff --git a/pro/rm/dereddening_spec.pro b/pro/rm/dereddening_spec.pro deleted file mode 100644 index bc0bb4738..000000000 --- a/pro/rm/dereddening_spec.pro +++ /dev/null @@ -1,18 +0,0 @@ -; given a spectrum, dereddenning it using the SFD map and Milky Way extinction curve (CCM) -; to correct for Galactic extinction -; NB, the flux errors should also be renormalized -; - -pro dereddening_spec, wave, flux, err=err, ra=ra, dec=dec, $ - dered_flux=dered_flux, dered_err=dered_err, eb_v=eb_v, A_lam=A_lam - -rv = 3.1 ; Rv for Milky Way - -A_lam = mgb_extinction(ra,dec,rv,wave,0, eb_v=eb_v) -scale = 10.0D^(0.4*A_lam) -dered_flux = flux*scale - -if keyword_set(err) then dered_err = err*scale - -return -end diff --git a/pro/rm/download_prepspec_fits.pro b/pro/rm/download_prepspec_fits.pro deleted file mode 100644 index 89347c045..000000000 --- a/pro/rm/download_prepspec_fits.pro +++ /dev/null @@ -1,52 +0,0 @@ -; download the fits from prepspec - -pro download_prepspec_fits, suffix=suffix, rmid=rmid, topurl=topurl, outdir=outdir, subdir=subdir - - if ~keyword_set(topurl) then topurl='http://star-www.st-and.ac.uk/~kdh1/pub/sdss/2014b/' - if ~keyword_set(outdir) then outdir='/data3/yshen/ftp/sdssrm/collab/prepspec/2014b/' - if ~keyword_set(subdir) then subdir='/ACBFJ/' ;'/ACBFJ/','/ACBHYGF/' - - if n_elements(rmid) eq 0 then begin - ; rmid=indgen(849L) - ; default is the first 100 objects - file = getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - target=target[0:848] - ind=sort(target.zfinal) - rmid=ind ;[0:99] - endif - - - if ~keyword_set(suffix) then begin - ;suffix=['avgrms.ps','ACF_fit.ps','ACBHYGF_fit.ps', $ - ; 'c5100.dat', 'blr_t.dat','ha_t.dat', 'hb_t.dat', 'he2_t.dat', 'mg2_t.dat', $ - ; 'avg.dat', 'rms.dat'] - suffix=['c5100.dat', 'c3000.dat', 'c2500.dat', 'c1700.dat', 'c1350.dat', $ - 'avg_w.dat', 'rms_w.dat','nlr_w.dat', $ - 'ha_t.dat','hb_t.dat', 'he2_4686_t.dat','mg2_t.dat', 'c3_t.dat', 'c4_t.dat', 'si4_t.dat', $ - 'n5_t.dat', 'lya_t.dat', 'p0_t.dat', $ - 'vnlr.dat', 'vblr.dat', 'vvblr.dat', $ - 'blr_w.dat', 'ha_w.dat', 'hb_w.dat', 'he2_4686_w.dat', 'mg2_w.dat', $ - 'c3_w.dat', 'c4_w.dat', 'si4_w.dat', 'n5_w.dat', 'lya_w.dat', $ - 'c5100_stats.dat', 'c3000_stats.dat', 'c2500_stats.dat', 'c1700_stats.dat', 'c1350_stats.dat', $ ; stats - 'ha_t_stats.dat','hb_t_stats.dat', 'he2_4686_t_stats.dat','mg2_t_stats.dat', 'c3_t_stats.dat', 'c4_t_stats.dat', 'si4_t_stats.dat', $ - 'n5_t_stats.dat', 'lya_t_stats.dat' ] - endif - ntag=n_elements(suffix) - - nobj=n_elements(rmid) - for i=0L, nobj-1 do begin - rmtag0=string(rmid[i],format='(i3.3)') - rmtag = 'rm'+string(rmid[i],format='(i3.3)') - outdir1 = outdir + rmtag + '/' - tmp = file_test(outdir1,/dir) - if tmp eq 0 then spawn, 'mkdir ' + outdir1 - cd, outdir1 - - for j=0L, ntag-1 do begin - file = topurl + rmtag0 + subdir + rmtag + '_' + suffix[j] - spawn, 'wget ' + file - endfor - endfor - -end diff --git a/pro/rm/endplot.pro b/pro/rm/endplot.pro deleted file mode 100644 index e94eb5aaf..000000000 --- a/pro/rm/endplot.pro +++ /dev/null @@ -1,128 +0,0 @@ -;+ -; NAME: -; ENDPLOT -; -; PURPOSE: -; Closes and saves the current plotfile. By default, the file -; is then spooled to the printer using the unix 'lpr -r' -; command. Keywords are available to name the plotfile and -; inhibit spooling. -; -; See also BEGPLOT and KILLPLOT. -; -; CATEGORY: -; -; Misc. -; -; CALLING SEQUENCE: -; -; ENDPLOT -; -; There are no user defined inputs. -; -; INPUTS: -; -; None. -; -; KEYWORD PARAMETERS: -; -; /noprint: Set to prevent spooling. This keyword is now ignored -; /doprint: send to printer after closing -; P: Name (string) of printer to spool plotfile to. 'lpr -r -; -Pprintername' is used. -; -; /shell: Set to use an intervening shell process for the -; 'spawn, "lpr..."' call. By default, the -; /NOSHELL keyword to spawn is used. -; /setup: run setupplot after closing device -; /landfix: fix the landscape so its not flipped (which is the only way -; IDL writes landscape mode) -; -; OUTPUTS: -; -; None. -; -; COMMON BLOCKS: -; -; PLOTFILE_COM: See the documentation for BEGPLOT. -; -; EXAMPLE: -; -; See the documentation for BEGPLOT. -; -; COPYRIGHT NOTICE: -; -; Copyright 1993, The Regents of the University of California. This -; software was produced under U.S. Government contract (W-7405-ENG-36) -; by Los Alamos National Laboratory, which is operated by the -; University of California for the U.S. Department of Energy. -; The U.S. Government is licensed to use, reproduce, and distribute -; this software. Neither the Government nor the University makes -; any warranty, express or implied, or assumes any liability or -; responsibility for the use of this software. -; -; MODIFICATION HISTORY: -; -; Based on ENDPLT by Phil Klingner, NIS-3, LANL. -; -; Modified and renamed ENDPLOT. Michael J. Carter, NIS-1, LANL, -; March, 1994. -; -; Added /noshell keyword in call to 'spawn' to speed up printing. -; Use the /shell keyword to 'endplot' to override. < mjc - April, 1995 > -; Made not printing the default. /noprint now quietly ignored. Added -; /doprint keyword to force printing. -; Erin Scott Sheldon UofMich 17-Mar-2001 -; Incorporated setupplot stuff -; E.S.S. 3-Jul-2002 -; Added /landfix: 15-Aug-2003 Erin Sheldon -; -;- - -PRO Endplot, doprint=doprint, noprint=noprint, p=p, shell=shell, help=help, setup=setup, landfix=landfix - -;; Procedure to close out and print current or named plot file - - COMMON Plotfile_com, plotfile, save_device, spool - - IF keyword_set(help) THEN BEGIN - doc_library, 'endplot' - return - ENDIF - - sv = size(plotfile) - IF sv(sv(0)+1) EQ 0 THEN plotfile = 'null' - sv = size(save_device) - IF sv(sv(0)+1) EQ 0 THEN save_device = !D.name - - IF keyword_set(p) THEN $ - parg = '-P' + strtrim(string(p), 2) $ - ELSE $ - parg = '' - - message, 'Closing current plot file ' + plotfile, /continue - IF !D.name NE 'X' THEN device, /close - set_plot, save_device - - IF ((keyword_set(doprint)) AND (spool EQ 1)) THEN BEGIN - IF keyword_set(shell) THEN BEGIN - spawncmd = 'lpr -h -r' + ' ' + parg + ' ' + plotfile - spawn, spawncmd - ENDIF ELSE BEGIN - IF parg EQ '' THEN $ - spawncmd = ['lpr', '-h', '-r', plotfile] $ - ELSE $ - spawncmd = ['lpr', '-h', '-r', parg, plotfile] - spawn, spawncmd, /noshell - ENDELSE - message, plotfile+' sent to printer', /continue - ENDIF - - pslayout - IF keyword_set(setup) OR !pslayout.runsetup THEN setupplot - - IF keyword_set(landfix) THEN pslandfix,plotfile - - plotfile = 'null' - -END diff --git a/pro/rm/f_conti_only.pro b/pro/rm/f_conti_only.pro deleted file mode 100644 index 82528db17..000000000 --- a/pro/rm/f_conti_only.pro +++ /dev/null @@ -1,14 +0,0 @@ -; return the combination of three continuum components: -; PL, Balmer continuum and polynominal. -; Called by rm_qsofit - -function f_conti_only, xval, pp - - f_pl = pp[0]*(xval/3000.0)^pp[1] ; power-law continuum - f_conti_BC = balmer_conti(xval, pp[2:4]) ; Balmer continuum - f_poly = f_poly_conti(xval, pp[5:*]) - yval = f_pl + f_conti_BC + f_poly - - return, yval -end - diff --git a/pro/rm/f_poly_conti.pro b/pro/rm/f_poly_conti.pro deleted file mode 100644 index bf5b72023..000000000 --- a/pro/rm/f_poly_conti.pro +++ /dev/null @@ -1,10 +0,0 @@ -function f_poly_conti, xval, pp - - xval2 = xval - 3000. - yval = 0*xval2 - for i=0L, n_elements(pp) - 1L do $ - yval = yval + pp[i]*xval2^(i+1) - - return, yval -end - diff --git a/pro/rm/fitqso_batch.pro b/pro/rm/fitqso_batch.pro deleted file mode 100644 index 9a858b456..000000000 --- a/pro/rm/fitqso_batch.pro +++ /dev/null @@ -1,135 +0,0 @@ -; Perform rm_qsofit to a list of plate-fiber-mjd - -pro fitqso_batch, plate,fiber,mjd,zfit=zfit,ntrial=ntrial, $ - silent=silent, outdir=outdir,tag=tag,ra=ra,dec=dec,$ - emparfile=emparfile, linename=linename,contiwave=contiwave, $ - noqa=noqa,everynqa=everynqa,istart=istart,resumeplot=resumeplot - - if not keyword_set(emparfile) then $ - emparfile='/home/yshen/products/Linux/idlrm/etc/qsoline_qsovar.par' - - if n_elements(noqa) eq 0 then noqa=0L - if keyword_set(noqa) then psplot=0 else psplot=1 - - if ~keyword_set(everynqa) then everynqa=1L ; make QA for every object - - if not keyword_set(tag) then tag = 'qsofit' - if not keyword_set(outdir) then outdir='/data1/quasar/yshen/DR12_QSO_fits/' - ; '/data3/quasar/yshen/work/md_qso/' - - if n_elements(silent) eq 0 then silent = 1L - - nqso = n_elements(plate) - - if file_test(outdir) eq 0 then spawn, 'mkdir '+ outdir - fitsdir = outdir + 'fits/' - if file_test(fitsdir) eq 0 then spawn, 'mkdir ' + fitsdir - qadir = outdir + 'QA/' - if file_test(qadir) eq 0 then spawn, 'mkdir ' + qadir - errdir = outdir + 'err/' - if file_test(errdir) eq 0 then spawn, 'mkdir ' + errdir - - ; Default number of Monte Carlo trials of error estimation - if n_elements(ntrial) eq 0 then ntrial=50L - - ; setup the plot - if psplot eq 1 and ~keyword_set(resumeplot) then begin - figfile=outdir+'QA-'+ tag + '.ps' - begplot, name=figfile, /landscape, /color - endif - - ; Setup error handeling - errfile = outdir + tag + '.err.out.mjd' + string(current_mjd(), format='(f9.3)') - openw, lun, errfile, /get_lun - - ;message, 'stop' - if ~keyword_set(istart) then istart=0L - for i=istart, nqso - 1L do begin - - ;; Estabilish error handlers - Catch, error_status - if error_status ne 0 then begin - ;print, 'Error index: ', error_status - catch, /cancel - printf, lun, 'obj plate mjd fiber' - printf, lun, plate[i], mjd[i], fiber[i] - printf, lun, 'Error message: ', !error_state.msg - printf, lun, ' ' - continue - endif - - ; read in the spectrum - readspec_sdss, plate[i],fiber[i],mjd[i],wave=lam0,flux=flux0,invvar=ivar0, $ - plug_ra=plug_ra, plug_dec=plug_dec - - err0=ivar0*0 - ind=where(ivar0 ne 0) - if ind[0] ne -1 then err0[ind]=1./sqrt(ivar0[ind]) - - ; Deredden the spectrum - if ~keyword_set(ra) then begin - ra_use=plug_ra & dec_use=plug_dec - endif else begin - ra_use=ra[i] & dec_use=dec[i] - endelse - dereddening_spec, lam0, flux0, err=err0 $ - , ra=ra_use, dec=dec_use $ - , dered_flux=dered_flux, dered_err=dered_err - flux0 = dered_flux & err0 = dered_err - - objtag1=string(plate[i],format='(i4.4)')+'-'+string(mjd[i],format='(i5.5)') $ - +'-'+string(fiber[i],format='(i4.4)') - objtag=tag +' '+string(i,format='(i0)')+': ' + objtag1 - radec2string,ra_use,dec_use,dummy,rahr=rahr,ramin=ramin,rasec=rasec $ - , decdeg=decdeg,decmin=decmin,decsec=decsec - sdss_name=rahr+ramin+rasec+decdeg+decmin+decsec - - z0 = zfit[i] - ; check whether or not to plot this object - if (i mod everynqa) eq 0 and psplot then noplot=0 else noplot=1 - rm_qsofit,lam0,flux0,err0,z0,outdir=outdir,/append,objtag=objtag,silent=silent, $ - /fits, psplot=psplot, noplot=noplot, output_name=objtag1, $ - sdss_name=sdss_name,nsmooth=3,emparfile=emparfile - splog, 'Fitting: ', objtag - ; proceed to compute error array - if n_elements(err_array) ne 0 then tmp=temporary(err_array) - for jj=0,ntrial-1 do begin - rm_qsofit,lam0,flux0,err0,z0,/noplot,/silent,/diet,/add_noise,para=para,emparfile=emparfile - tag_rej=['CONTI_FIT_ERR','LINE_FIT_ERR'] - remove_tags, para, tag_rej, para_keep - - splog, ' Error trial: ',jj+1 - ; Only add this trial if the continuum fit is OK - ; The large redchi2 is to keep fits on very high SN spectrum - if para_keep.conti_redchi2 lt 100. and para_keep.conti_redchi2 gt 0 then begin - if n_elements(err_array) eq 0 then err_array=para_keep $ - else err_array=[err_array,para_keep] - endif - endfor - fits_errfile=errdir+objtag1+'.fits' - if n_elements(err_array) ne 0 then mwrfits, err_array, fits_errfile, /create - endfor - - if psplot eq 1 then begin - endplot - ; gzip the QA file - spawn, 'gzip ' + figfile - endif - - ; output the complication of line measurements - ; set rm_plate=0 to avoid the default setting for the RM plates - outfile='qso_prop-' + tag + '.fits' - if not keyword_set(linename) then $ - linename=['Halpha_br', 'Hbeta_br', 'MgII_br', 'CIII_br', 'CIV_br', 'OIII5007'] - if not keyword_set(contiwave) then contiwave=[1350.,1700.,3000.,5100.] - rm_compile_qsofit,plate,mjd,input_fiber=fiber,outdir_in=outdir,outfile=outfile,rm_plate=0, $ - linename=linename,contiwave=contiwave,/add_bhmass - - ;; close error log - close, lun - free_lun, lun - -end - - - diff --git a/pro/rm/fits2ascii.pro b/pro/rm/fits2ascii.pro deleted file mode 100644 index e52df0dac..000000000 --- a/pro/rm/fits2ascii.pro +++ /dev/null @@ -1,24 +0,0 @@ -; output ascii files from fits table - -pro fits2ascii, result, fitsfile=fitsfile, column=column, fmt=fmt, outfile=outfile - -if ~keyword_Set(outfile) then outfile='ascii.out' - -if n_elements(result) eq 0 then $ - result=mrdfits(fitsfile, 1,column=column) -nnn=n_elements(result) - -openw, lun, outfile, /get_lun - -printf, lun, '# ', column -for i=0L, nnn-1 do begin - - printf, lun, result[i], format=fmt - -endfor - - -close, lun -free_lun, lun - -end diff --git a/pro/rm/get_gauss_para.pro b/pro/rm/get_gauss_para.pro deleted file mode 100644 index 30ac1c7ea..000000000 --- a/pro/rm/get_gauss_para.pro +++ /dev/null @@ -1,97 +0,0 @@ -; get the multi-gauss parameters for a set of objects - -function get_gauss_para, plate,fiber,mjd,fitsdir=fitsdir,errdir=errdir,fname=fname,$ - line=line - -if ~keyword_set(fitsdir) then $ -fitsdir='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/fits/' - -if ~keyword_set(errdir) then $ -errdir='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/err/' - -if ~keyword_set(fname) then fname=string(plate, format='(i4.4)')+'-'+string(mjd,format='(i5.5)')+ $ - '-'+string(fiber,format='(i4.4)')+'.fits' - -fitsfile=fitsdir+fname -para=mrdfits(fitsfile,1,/silent) -errfile=errdir+fname -err=mrdfits(errfile,1,/silent) - -linename = strtrim(para.linename) -fitflag = para.fitflag & line_fit = para.line_fit -conti_redchi2=para.conti_redchi2 -ind=where( strmatch(strupcase(linename), strupcase(line+'*') ) eq 1) -pp = line_fit[ind] -line_redchi2=(para.line_redchi2)[ind[0]] - -; now get error -pp_err=(err.line_fit)[ind,*] - -; fix the missing MC trials -n_mc=n_elements(pp_err[0,*]) -if n_mc lt 50 then pp_err=[ [pp_err], [pp_err[*,0:(50 - n_mc - 1)]] ] - -output={plate:plate,fiber:fiber,mjd:mjd,zfit:para.z,line:line,conti_redchi2:conti_redchi2, line_redchi2:line_redchi2, $ - gauss_pp:pp, gauss_pp_MC:pp_err, fitflag:fitflag[ind[0]]} - -return, output - -end - - -; routine to compile multi-gauss parameters for all RM epochs -pro compile_gauss_para, platelist, mjdlist,line=line - -if ~keyword_set(line) then line='CIV_BR' - - -if n_elements(platelist) eq 0 then begin - file='/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' - target=mrdfits(file,1) - platelist=(target[0].plate)[0:31] - mjdlist=(target[0].mjd)[0:31] - fiberlist=(target.fiberid)[0:31, 0:848] -endif - -if platelist[0] eq 0 then topdir='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/' $ -else topdir='/data3/yshen/spectro/bossredux/v5_7_1/' - -nnn=n_elements(platelist) - -for i=0L, nnn - 1 do begin - - plate=platelist[i] & mjd=mjdlist[i] - pstr=string(plate, format='(i4.4)') & mstr=string(mjd, format='(i5.5)') - tt=temporary(result) ; clear this array - for j=0L, 848 do begin - - if plate ne 0 then begin - fiber=fiberlist[i, j] - fitsdir=topdir+pstr+'/qsofit/fits/' - errdir=topdir+pstr+'/qsofit/err/' - endif else begin ; for the coadded plate - fiber=j+1 - fitsdir=topdir+'fits/' - errdir=topdir+'err/' - endelse - fname=string(plate, format='(i4.4)')+'-'+string(mjd,format='(i5.5)')+ $ - '-'+string(fiber,format='(i4.4)')+'.fits' - - ;print, errdir+fname - ;message, 'stop' - - if file_test(errdir+fname) eq 1 and file_test(fitsdir+fname) eq 1 then begin - struct=get_gauss_para(plate,fiber,mjd,fitsdir=fitsdir, errdir=errdir,line=line) - struct=struct_addtags({RMID:j}, struct) - if n_elements(result) eq 0 then result=struct else result=[result, struct] - endif - - splog, 'Finished Plate RMID: ', plate, " ", j - endfor - if plate ne 0 then outfile=topdir+string(plate, format='(i4.4)')+'/qsofit/'+line+'_par_'+pstr+'-'+mstr+'.fits' $ - else outfile=topdir+line+'_par_'+pstr+'-'+mstr+'.fits' - mwrfits, result, outfile, /create - -endfor - -end diff --git a/pro/rm/get_multi_gaussian_prop.pro b/pro/rm/get_multi_gaussian_prop.pro deleted file mode 100644 index 9aef29be0..000000000 --- a/pro/rm/get_multi_gaussian_prop.pro +++ /dev/null @@ -1,93 +0,0 @@ -; get the peak, mode of a mixture of gauasians -; note that the xaxis is in units of ln(lambda) - - -function get_multi_gaussian_prop, para, diet=diet,plot_check = plot_check - -n_gauss = n_elements(para)/3L - -cen = dblarr(n_gauss) & sig = dblarr(n_gauss) -area = dblarr(n_gauss) - -for i=0L, n_gauss - 1L do begin - - ; flip the sign so the flux is always positive - para[i*3L] = abs(para[i*3L]) - - cen[i] = para[i*3L+1L] & sig[i] = para[i*3L + 2L] - area[i] = para[i*3L]*exp(para[i*3L+1L]) -endfor -area = total(area, /double) - -; define an array -left = min(cen - 3.*sig) & right = max(cen + 3.*sig) -disp = 1d-5 ; 3 km/s -npix = round( (right - left)/disp ) - -xarr = left + dindgen(npix+1)*disp -yarr = manygauss(xarr, para, nline = n_gauss) -; add one more step to remove essentially zero fluxes -ind_non_zero = where(yarr gt 1d-6) -if ind_non_zero[0] ne -1 then begin - xarr = xarr[ind_non_zero] & yarr = yarr[ind_non_zero] -endif - -; now get the peak location -y_peak = max(yarr, ipeak) -x_peak = xarr[ipeak] -if area lt 1d-6 then begin - x_peak = mean(cen) ; - x_cen_50per = x_peak -endif - -if ipeak gt 0 and ipeak lt npix then begin - fwhm_left = spline(yarr[0:ipeak-1L],xarr[0:ipeak - 1L], 0.5*y_peak) - fwhm_right = spline(reverse(yarr[ipeak:*]), reverse(xarr[ipeak:*]), 0.5*y_peak) - fwhm = fwhm_right - fwhm_left - ; determine the centroid of pixels above 0.5*f_peak - ind_cen=where(xarr ge fwhm_left and xarr le fwhm_right) - ; remember that the array is uniform in alog(lambda) not uniform in lambda - x_cen_50per=alog( total( (exp(xarr[ind_cen]))^2*yarr[ind_cen],/double) / total(exp(xarr[ind_cen])*yarr[ind_cen],/double) ) - - if not keyword_set(diet) then begin - ; full-width-at-third-maximum - fwtm_left = spline(yarr[0:ipeak-1L],xarr[0:ipeak - 1L], y_peak/3.D) - fwtm_right = spline(reverse(yarr[ipeak:*]), reverse(xarr[ipeak:*]), y_peak/3.D) - fwtm = fwtm_right - fwtm_left - - ; full-width-at-quarter-maximum - fwqm_left = spline(yarr[0:ipeak-1L],xarr[0:ipeak - 1L], 0.25*y_peak) - fwqm_right = spline(reverse(yarr[ipeak:*]), reverse(xarr[ipeak:*]), 0.25*y_peak) - fwqm = fwqm_right - fwqm_left - endif -endif else begin - fwhm_left = 0.d & fwhm_right = 0.d & fwhm = 0.d - fwtm_left = 0.d & fwtm_right = 0.d & fwtm = 0.d - fwqm_left = 0.d & fwqm_right = 0.d & fwqm = 0.d -endelse - -if not keyword_set(diet) then begin - ; now get the log_wave that separate the broad line into equal halves - product = exp(xarr)*yarr*disp - area_left = total(product, /cumulative, /double) - ; print, area, min(area_left), max(area_left) - area_diff = abs(area_left - 0.5*area) - temp = min(area_diff, ind_min) - x_half_flux = xarr[ind_min] -endif - -if not keyword_set(diet) then begin - result = [x_peak, fwhm, area, fwhm_left, fwhm_right, $ - y_peak, fwtm, fwtm_left, fwtm_right, fwqm, fwqm_left, fwqm_right, x_half_flux, x_cen_50per] -endif else result = [x_peak, fwhm, area, fwhm_left, fwhm_right, x_cen_50per] - -if keyword_set(plot_check) then begin - plot, xarr, yarr - for i=0L, n_gauss - 1L do oplot, xarr, onegauss(xarr, para[3L*i:3L*i+2]), color=fsc_color('green') - oplot, [x_peak, x_peak], [0, y_peak*1.05], linestyle = 2 - oplot, [fwhm_left, fwhm_right], 0.5*[y_peak, y_peak] - oplot, [x_half_flux, x_half_flux], [0, y_peak*1.05], linestyle = 1 -endif - -return, result -end diff --git a/pro/rm/get_prepspec_pt.pro b/pro/rm/get_prepspec_pt.pro deleted file mode 100644 index 6c7ff593d..000000000 --- a/pro/rm/get_prepspec_pt.pro +++ /dev/null @@ -1,23 +0,0 @@ -; obtain the flux scaling factor from prepspec -; obsolete, use rm_get_pt instead - -function get_prepspec_pt, rmid, datadir=datadir,pterr=pterr - -if ~keyword_set(datadir) then datadir='/data3/quasar/yshen/work/lags/prepspec/' - -; find the file -rmtag='rm'+string(rmid,format='(i3.3)') -ptfile=datadir+rmtag+'/'+rmtag+'_p0_t.dat' -if file_test(ptfile) eq 0 then download_prepspec_fits,suffix='p0_t.dat',subdir='/ACF/',rmid=rmid - -; now check ptfile again -;print, ptfile -if file_test(ptfile) eq 1 then begin - readcol,ptfile,format='x,d,d', pt, pterr,/silent -endif else begin - splog, 'no ptfile available, use original spectrum:' - pt=replicate(1., 32) -endelse - -return, pt -end diff --git a/pro/rm/get_reg_results.pro b/pro/rm/get_reg_results.pro deleted file mode 100644 index ae27ffcda..000000000 --- a/pro/rm/get_reg_results.pro +++ /dev/null @@ -1,33 +0,0 @@ -; get the regression results for the MCMC runs -; on the M-sigma regression - -pro get_reg_results - -outdir='/data3/quasar/yshen/work/agn_host/mcmc_reg/' -tag=['post_all.fits', 'post_z_gt_0d6.fits', 'post_z0.12-0.42.fits', 'post_z0.42-0.60.fits', $ - 'post_z0.61-0.76.fits', 'post_z0.76-1.00.fits'] - -for i=0L, 5L do begin - result=mrdfits(outdir+tag[i],1,/silent) - - alpha=(result.alpha) - beta=(result.beta) - scat=sqrt(result.sigsqr) - - a0=median(alpha) & a1=quantile_1d(0.16, alpha) & a2=quantile_1d(0.84, alpha) - str1='$' + string(a0,format='(f0.3)')+'_{-'+string(a0-a1,format='(f0.3)') + $ - '}^{+' + string(a2-a0,format='(f0.3)')+'}$ & ' - - a0=median(beta) & a1=quantile_1d(0.16, beta) & a2=quantile_1d(0.84, beta) - str2='$' + string(a0,format='(f0.3)')+'_{-'+string(a0-a1,format='(f0.3)') + $ - '}^{+' + string(a2-a0,format='(f0.3)')+'}$ & ' - - a0=median(scat) & a1=quantile_1d(0.16, scat) & a2=quantile_1d(0.84, scat) - str3='$' + string(a0,format='(f0.3)')+'_{-'+string(a0-a1,format='(f0.3)') + $ - '}^{+' + string(a2-a0,format='(f0.3)')+'}$' - - print, str1+str2+str3 - -endfor - -end diff --git a/pro/rm/get_zsys.pro b/pro/rm/get_zsys.pro deleted file mode 100644 index fb46ee91d..000000000 --- a/pro/rm/get_zsys.pro +++ /dev/null @@ -1,53 +0,0 @@ -; use the recipes in Shen++(2016, the velocity shift paper) to get zsys and stat+sys uncertainties - - -function get_zsys, obs_lam, obs_lam_err, line_use=line_use, logL=logL - - cs = 2.9979246d5 - - line=['Hbeta_br', 'OIII5007', 'CaII3934', 'OII3728', 'NeV3426', 'MgII', 'MgII_br', 'CIII', 'HeII1640', 'CIV_br', 'SIIV_OIV'] - line=strupcase(line) - wave=[4862.68, 5008.24, 3934.78, 3728.48, 3426.84, 2798.75, 2798.75, 1908.73, 1640.42, 1549.06, (1396.76 + 1402.06)*0.5] - - ; average offset from CaII, if applicable, after luminosity-trend correction - avgoff = [-109., -48., 0., 8., -160., -57., -57., -229., 0., -27., -28.] - ; average offste from CaII, before luminosity-trend correction - avgoff2 = [-109., -48., 0., 8., -160., -57., -57., -229., -167., -365., -288.] - - ; average luminosity trend; only HeII1640, CIV_br and SIIV_OIV requires a luminosity correction - ; and logL must be logL1700 - logL0 = [44., 44., 0., 44.5, 44.5, 44.5, 45., 45., 45., 45.] - arr = [-88, -36, 0., 9., -121., -75., -75., -272., -231., -242., -123.] - barr = [-4., -53., 0., -0.04, -2., 2., 2., -0.2, -282., -438., -345.] - ; Eqn 1 in Shen++: v = a + b(logL - logL0) - - ; intrinsic velocity scatter wrt CaII in km/s (Table 3 of Shen++) - sigv_int = [400., 56., 0., 46., 119., 205., 205., 233., 242., 415., 477.] - - - ind = where(line eq strupcase(line_use) ) - if ind[0] ne -1 then begin - - if line[ind] eq 'HEII1640' or line[ind] eq 'CIV_BR' or line[ind] eq 'SIIV_OIV' then begin - if logL gt 0 then v_add = arr[ind] + barr[ind]*(logL - logL0[ind]) $ - else v_add = avgoff2[ind] ; if luminosity is unspecified, use the average vel offset - endif else v_add = 0. - - ; this is the total average voff from systemic (CaII) - v_tot = avgoff[ind] + v_add - rest_lam = wave[ind] * (1.D + v_tot/cs) - - ; now compuate zsys based on the specific line - zsys = (obs_lam / rest_lam) - 1.D - - zsys_err = sqrt( (sigv_int[ind]/cs*(1. + zsys))^2 + ( (obs_lam_err > 0.)/rest_lam)^2 ) - - endif else begin - zsys = -1. & zsys_err = -1. - - endelse - - - return, [zsys, zsys_err] - -end diff --git a/pro/rm/local_conti_line.pro b/pro/rm/local_conti_line.pro deleted file mode 100644 index ad872fd27..000000000 --- a/pro/rm/local_conti_line.pro +++ /dev/null @@ -1,16 +0,0 @@ -; local power-law continuum + multi-gaussian lines -; xval in units of alog(wave) -; Used by rm_local_qsofit - -function local_conti_line, xval, pp - - npar=n_elements(pp) - nline=(npar - 2)/3L - f_line = manygauss(xval, pp[0:3*nline - 1]) - f_pl = pp[3*nline]*(exp(xval)/3000.0)^pp[3*nline+1] ; power-law continuum - - yval = f_pl + f_line - - return, yval -end - diff --git a/pro/rm/make_add_rm_targets.pro b/pro/rm/make_add_rm_targets.pro deleted file mode 100644 index e9b980518..000000000 --- a/pro/rm/make_add_rm_targets.pro +++ /dev/null @@ -1,30 +0,0 @@ -; make a target list of additional RM quasars for -; the MMT/Hectospec - -pro make_add_rm_targets - -file='/home/yshen/products/Linux/idlrm/etc/RM_targets.fits' -target=mrdfits(file,1) - -; keep those not receiving a SDSS fiber -ind=where(target.tiled eq 0,nnn) -target=target[ind] - -fmt='(a6, " ", f11.6, " ", f11.6, " ", f5.2, " ", f6.4)' -outfile='/home/yshen/products/Linux/idlrm/etc/add_RM_targets' -openw, lun, outfile,/get_lun -printf, lun, '## Additional RM targets for MMT/Hectospec' -printf, lun, '## i<21.7 but did not receive a SDSS fiber' -printf, lun, '## ID RA[deg] DEC[deg] i-mag redshift' - -for i=0L, nnn-1 do begin - - printf, lun, format=fmt, 'RM'+string(1000L + i, format='(i4.4)'), $ - target[i].ra, target[i].dec, (target[i].psfmag)[3], target[i].z - -endfor - -close, lun -free_lun, lun - -end diff --git a/pro/rm/make_firstlag_table.pro b/pro/rm/make_firstlag_table.pro deleted file mode 100644 index 709662af9..000000000 --- a/pro/rm/make_firstlag_table.pro +++ /dev/null @@ -1,25 +0,0 @@ -; make the LC table for the first-lag paper - -pro make_firstlag_table - -file='/data3/quasar/yshen/work/lags/prepspec/ACBFJ/output/lc_all' -readcol, file, format='l,x,x,d,d,d,d,d,l',rmid, mjd, f_conti, e_conti, f_line, e_line, mask -mjd=mjd+50000. - -outfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/rv1/lc_table.txt' -openw, lun, outfile, /get_lun -fmt='(i3.3, " ", f9.3, " ", 4(e12.6, " "), i0)' - -rmid_list=[101,191,229,267,272,320,457,589,645,694,767,769,775,789,840] - -for i=0L, 14 do begin - ind=where(rmid eq rmid_list[i], nnn) - for j=0, nnn - 1 do $ - printf, lun, rmid[ind[j]], mjd[ind[j]], f_conti[ind[j]], e_conti[ind[j]], $ - f_line[ind[j]], e_line[ind[j]], mask[ind[j]], format=fmt -endfor - -close, lun -free_lun, lun - -end diff --git a/pro/rm/make_mosa_grid.pro b/pro/rm/make_mosa_grid.pro deleted file mode 100644 index b5ce64309..000000000 --- a/pro/rm/make_mosa_grid.pro +++ /dev/null @@ -1,213 +0,0 @@ -;+ -; NAME: -; -; PURPOSE: -; Make dither grid for the Mayall MOSA observation of the RM field - -pro make_mosa_grid, psplot=psplot, quad=quad, absoff=absoff - - ; This is the RM field center - RA_cen=213.704D & DEC_cen=+53.08334D - ; 14:14:49.0+53.05:00.0 - - ; This is the pointing center of 4 quadrants - RA_quad=dblarr(4) & DEC_quad=dblarr(4) - RA_quad_off=[-0.75,-0.75,0.75,0.75] - DEC_quad_off=[0.75,-0.75,-0.75,0.75] - theta = DEC_cen + DEC_quad_off - - ; Compute the offset of each grid point (32 in total) - ; from the central pointing (RM field center) - ; Two dither positions (a/b) for each grid point - RA_grid = dblarr(32, 2) - DEC_grid = dblarr(32,2) - RA_grid_abs = dblarr(32,2) - DEC_grid_abs = dblarr(32,2) - - inext = 0 - d_off = 30.D ; arcsec, the chip gaps are 20.8" - name = string(indgen(32)+1,format='(i2.2)') - if not keyword_set(quad) then begin - for irow=0L, 5L do begin - - for jcol=0L,5L do begin - - ra_off = (jcol-3L + 0.5)*0.5*3600.D - dec_off = (-irow+3L - 0.5)*0.5*3600.D - - if irow eq 0 or irow eq 5 then begin ; top and bottom fields - if jcol ne 0 and jcol ne 5 then begin - - RA_grid[inext,0]=ra_off+d_off - RA_grid[inext,1]=ra_off-d_off - - DEC_grid[inext,0]=dec_off+d_off - DEC_grid[inext,1]=dec_off-d_off - - inext = inext+1L - endif - - endif else begin - - RA_grid[inext,0]=ra_off+d_off - RA_grid[inext,1]=ra_off-d_off - - DEC_grid[inext,0]=dec_off+d_off - DEC_grid[inext,1]=dec_off-d_off - - inext = inext+1L - endelse - - endfor - endfor - endif else begin ; divide the 3x3deg square into 4 quadrants - - for i=0L, 3L do begin - ; First find the pointing center of this quadrant - RA_quad[i] = RA_quad_off[i]/cos(theta[i]/180.*!PI) + RA_cen - DEC_quad[i] = (DEC_quad_off[i] + DEC_cen) - - print, i+1, dec2hms(ra_quad[i]/15.,/double), ' ', dec2hms(dec_quad[i],/double) - - if i eq 0 or i eq 1 then sign1 = 1 else sign1 = -1 - if i eq 1 or i eq 2 then sign2 = -1 else sign2 = 1 - - case i of - 0: begin - step_ra=[0,1,1,1,0,-1,-1,0] - step_dec=[1,1,0,-1,-1,-1,0,0] - end - 1: begin - step_ra=[0,1,1,1,0,-1,-1,0] - step_dec=[-1,-1,0,1,1,1,0,0] - end - 2: begin - step_ra=[0,-1,-1,-1,0,1,1,0] - step_dec=[-1,-1,0,1,1,1,0,0] - end - 3: begin - step_ra=[0,-1,-1,-1,0,1,1,0] - step_dec=[1,1,0,-1,-1,-1,0,0] - end - endcase - ; now assign the 8 sub-points in each quadrant - for j=0L,7L do begin - - RA_grid[inext,0]=step_ra[j]*0.5*3600.D + d_off - RA_grid[inext,1]=step_ra[j]*0.5*3600.D - d_off - DEC_grid[inext,0]=step_dec[j]*0.5*3600.D + d_off - DEC_grid[inext,1]=step_dec[j]*0.5*3600.D - d_off - ;print,inext+1,RA_grid[inext,0],DEC_grid[inext,0] - - ; assign absolute offset from the previous position - if j eq 0 then begin - ra_grid_abs[inext,0]=ra_grid[inext,0] - ra_grid_abs[inext,1]= -2.*d_off - dec_grid_abs[inext,0]=dec_grid[inext,0] - dec_grid_abs[inext,1]= -2.*d_off - endif else begin - ra_grid_abs[inext,0]=ra_grid[inext,0]-ra_grid[inext-1,1] - ra_grid_abs[inext,1]= -2.*d_off - dec_grid_abs[inext,0]=dec_grid[inext,0]-dec_grid[inext-1,1] - dec_grid_abs[inext,1]= -2*d_off - - endelse - - inext = inext+1L - endfor - - endfor - - endelse - - ; Read in the targets - file=getenv('IDLRM_DIR')+'/etc/RM_targets.fits' - target=mrdfits(file,1) - ind=where(target.tiled eq 1) - target=target[ind] - obj_raoff = (target.ra - ra_cen)*cos(target.dec/180.*!PI) - obj_decoff = (target.dec - dec_cen) - - if keyword_set(psplot) then begin - figfile=getenv('IDLRM_DIR')+'/etc/mosa_offsets.eps' - if keyword_set(quad) then figfile=getenv('IDLRM_DIR')+'/etc/mosa_offsets_quad.eps' - begplot,name=figfile,/color,/encap,xsize=8,ysize=8,/cmyk - endif - - plot, [0],[0],xrange=[1.6,-1.6],yrange=[-1.6,1.6],/xsty,/ysty $ - , xtitle='RA Offset [deg]', ytitle='DEC Offset [deg]' - - oplot, obj_raoff,obj_decoff,psym=1 - - box=2130. ; arcsec; 8192x0.26" - color1 = fsc_color('red') - color2 = fsc_color('blue') - textcolor=fsc_color(['black','blue','cyan','red']) - - for i=0L, 31L do begin - - if not keyword_set(quad) then begin - add_off_ra = 0.D & add_off_dec = 0.D - endif else begin - add_off_ra = (RA_quad[i/8]-RA_cen)*cos(theta[i/8]/180.*!PI) - add_off_dec = DEC_quad[i/8]-DEC_cen - ;print, add_off_ra, add_off_dec - endelse - - oplot, [ra_grid[i,0]-0.5*box,ra_grid[i,0]-0.5*box]/3600.D +add_off_ra, $ - [dec_grid[i,0]-0.5*box,dec_grid[i,0]+0.5*box]/3600.D +add_off_dec,color=color1 - oplot, [ra_grid[i,0]+0.5*box,ra_grid[i,0]+0.5*box]/3600.D +add_off_ra, $ - [dec_grid[i,0]-0.5*box,dec_grid[i,0]+0.5*box]/3600.D +add_off_dec,color=color1 - oplot, [ra_grid[i,0]-0.5*box,ra_grid[i,0]+0.5*box]/3600.D +add_off_ra, $ - [dec_grid[i,0]-0.5*box,dec_grid[i,0]-0.5*box]/3600.D +add_off_dec,color=color1 - oplot, [ra_grid[i,0]-0.5*box,ra_grid[i,0]+0.5*box]/3600.D +add_off_ra, $ - [dec_grid[i,0]+0.5*box,dec_grid[i,0]+0.5*box]/3600.D +add_off_dec,color=color1 - - oplot, [ra_grid[i,1]-0.5*box,ra_grid[i,1]-0.5*box]/3600.D +add_off_ra, $ - [dec_grid[i,1]-0.5*box,dec_grid[i,1]+0.5*box]/3600.D +add_off_dec,color=color2 - oplot, [ra_grid[i,1]+0.5*box,ra_grid[i,1]+0.5*box]/3600.D +add_off_ra, $ - [dec_grid[i,1]-0.5*box,dec_grid[i,1]+0.5*box]/3600.D +add_off_dec,color=color2 - oplot, [ra_grid[i,1]-0.5*box,ra_grid[i,1]+0.5*box]/3600.D +add_off_ra, $ - [dec_grid[i,1]-0.5*box,dec_grid[i,1]-0.5*box]/3600.D +add_off_dec,color=color2 - oplot, [ra_grid[i,1]-0.5*box,ra_grid[i,1]+0.5*box]/3600.D +add_off_ra, $ - [dec_grid[i,1]+0.5*box,dec_grid[i,1]+0.5*box]/3600.D +add_off_dec,color=color2 - - xyouts, 0.5*(ra_grid[i,0]+ra_grid[i,1])/3600.D + add_off_ra, $ - 0.5*(dec_grid[i,0]+dec_grid[i,1])/3600.D + add_off_dec, name[i], $ - align=0.5, color=textcolor[i/8] - endfor - - if keyword_set(psplot) then endplot - - ;NOW output an ascii file with one absolute offset (in arcsec) per line - filename = getenv('IDLRM_DIR')+'/etc/mosa_offsets' - if keyword_set(quad) then filename = getenv('IDLRM_DIR')+'/etc/mosa_offsets_quad' - if keyword_set(absoff) then filename = filename + '_absoff' - openw,lun,filename,/get_lun - - fmt='(A0, " ", i5, " ", i5, " ", f7.1)' - fmt1='(A0, " ", i5, " ", i5, " ", f8.3, " ", f8.4)' - for i=0L, 31L do begin - - ; If require absolute offset, then subtract the previous offset - if keyword_set(absoff) then begin - ra_grid = ra_grid_abs & dec_grid = dec_grid_abs - endif - - if not keyword_set(quad) then begin - printf, lun, format=fmt, 'RM'+string(i+1,format='(i2.2)')+'a', $ - ra_grid[i,0], dec_grid[i,0], 2000. - printf, lun, format=fmt, 'RM'+string(i+1,format='(i2.2)')+'b', $ - ra_grid[i,1], dec_grid[i,1], 2000. - endif else begin - printf, lun, format=fmt1, 'RM'+string(i+1,format='(i2.2)')+'a', $ - ra_grid[i,0], dec_grid[i,0], ra_quad[i/8],dec_quad[i/8] - printf, lun, format=fmt1, 'RM'+string(i+1,format='(i2.2)')+'b', $ - ra_grid[i,1], dec_grid[i,1], ra_quad[i/8],dec_quad[i/8] - endelse - endfor - - close,lun - free_lun,lun - -end \ No newline at end of file diff --git a/pro/rm/make_msigma_tables.pro b/pro/rm/make_msigma_tables.pro deleted file mode 100644 index 4b898c981..000000000 --- a/pro/rm/make_msigma_tables.pro +++ /dev/null @@ -1,78 +0,0 @@ -; make the fits data table for the m-sigma paper - -pro make_msigma_tables - -file='/data3/quasar/yshen/work/agn_host/decomp_final.fits' -result=mrdfits(file,1) - - -; make External Database 1 for the Science paper -;tags=['SDSS_name', 'RA', 'DEC', 'Z', 'WAVE', 'FLUX', 'ERR', 'Flux_gal', $ -; 'MEDSN_sigma', 'MEDSN_all', 'flux_recon', 'F_H', 'F_H_5100', 'sigma_SHEN', $ -; 'sigma_shen_err', 'sigma_err_' ] -;ind=where(result.sigma_OK_shen eq 1) -;result=result[ind] - -; make table 1 for the ApJ version -tags=['SDSS_name', 'Fiber', 'RA', 'DEC', 'Z', 'WAVE', 'FLUX', 'ERR', 'Flux_gal', $ - 'MEDSN_sigma', 'MEDSN_all', 'flux_recon', 'F_H', 'F_H_5100', 'sigma_SHEN', $ - 'sigma_shen_err', 'sigma_err_', 'SIGMA_GREENE_3780_4100', 'SIGMA_GREENE_3780_4100_ERR'] - - -output={RMID:0L,sdss_name:'', ra:0.D, dec:0.D, z:0., wave:dblarr(4649), flux:dblarr(4649), $ - err:dblarr(4649), flux_gal:dblarr(4649), flux_qso:dblarr(4649), medsn_tot:0., $ - medsn_gal:0., f_h:0., f_H_5100:0., sigma:0.D, sigma_err:-1.D, sigma_err_warning:0L, $ - sigma_HK:0.D, sigma_HK_err:-1.D, $ - logL5100_tot:0.D, logL5100_tot_err:-1.D, logL5100_qso:0.D, logL5100_qso_err:-1.D, $ - fwhm_HB:0.D, fwhm_hb_err:-1.D, logmbh_vp06:0.D, logmbh_vp06_err:-1.D } -output=replicate(output, n_elements(result)) - -output.rmid=result.fiber - 1 -output.sdss_name=result.sdss_name & output.ra=result.ra & output.dec=result.dec -output.z=result.z & output.wave=result.wave & output.flux=result.flux -output.err=result.err - -; only populate the decomposed spectra and sigma_HK if f_H>0 -ind=where(result.f_h gt 0,nnn) -output[ind].flux_gal=result[ind].flux_gal -output[ind].flux_qso = result[ind].flux - (result[ind].flux_recon - (result[ind].flux-result[ind].flux_gal)) -output[ind].sigma_HK=result[ind].SIGMA_GREENE_3780_4100 -output[ind].sigma_HK_err=result[ind].SIGMA_GREENE_3780_4100_err -for i=0L, nnn-1 do begin - ; set the pixels at which flux_recon=0 to have zero flux_qso - flux_qso=output[ind[i]].flux_qso - flux_recon=result[ind[i]].flux_recon - indd=where(flux_recon eq 0) - if indd[0] ne -1 then flux_qso[indd]=0. - output[ind[i]].flux_qso = flux_qso -endfor -output.medsn_tot=result.medsn_all & output.medsn_gal=result.medsn_sigma -output.f_h=result.f_h & output.f_H_5100=result.f_H_5100 -; fix the 2 objects with bad sigma_HK measurements -ind=where(output.sigma_hk_err eq 0) -output[ind].sigma_hk_err = -1. & output[ind].sigma_hk = 0. - -; only populate sigma with good measurements -ind=where(result.sigma_ok_shen eq 1) -output[ind].sigma=result[ind].sigma_shen & output[ind].sigma_err=result[ind].sigma_shen_err -ind=where(result.sigma_ok_final eq 0 and result.sigma_OK_shen eq 1) -output[ind].sigma_err_warning=1L -output.logL5100_tot=result.logL5100_tot & output.logL5100_tot_err=result.logL5100_tot_err -output.logL5100_qso=result.logL5100_qso & output.logL5100_qso_err=result.logL5100_qso_err -output.fwhm_hb=result.fwhm_hb & output.fwhm_hb_err=result.fwhm_hb_err -output.logmbh_vp06=result.logmbh_vp06 & output.logmbh_vp06_err=result.logmbh_vp06_err - -; fix the one object with no 5100 coverage -ind=where(output.logL5100_tot eq 0) -output[ind].logL5100_tot_err = -1. & output[ind].logL5100_qso_err=-1. -ind=where(output.f_h gt 0 and output.f_h_5100 eq 0) -output[ind].logL5100_tot=0. & output[ind].logL5100_qso=0. -output[ind].logL5100_tot_err=-1. & output[ind].logL5100_qso_err=-1. -output[ind].logmbh_vp06=0. & output[ind].logmbh_vp06_err=-1. - - -;outfile='/data3/quasar/yshen/work/agn_host/tables/ED_S1.fits' -outfile='/data3/quasar/yshen/work/agn_host/tables/table1_apj.fits' -mwrfits, output, outfile, /create - -end diff --git a/pro/rm/make_rmsavg_line.pro b/pro/rm/make_rmsavg_line.pro deleted file mode 100644 index 8d0b74201..000000000 --- a/pro/rm/make_rmsavg_line.pro +++ /dev/null @@ -1,75 +0,0 @@ -; compile the rms profile (from prepspec) and avg profile (from qsofit) -; for a given broad line -; use the results to study the rms/avg profile of broad lines - -pro make_rmsavg_line, rmid, line=line, result=result - -file = '/data3/yshen/work/sdssrm_sample_char/sample_char_final.fits' -tt = mrdfits(file,1) - -if ~keyword_set(line) then line = 'Hb' -if n_elements(rmid) eq 0 then rmid = 0 -zsys = tt[rmid].zsys - -if line eq 'Hb' then begin - lam0=4862.68D - maxv = 1d4 ; km/s - line_qsofit = 'Hbeta_br' - line_prepspec = 'hb' -endif -if line eq 'MgII' then begin - lam0=2798.75D - maxv = 1d4 ; km/s - line_qsofit = 'MgII_br' - line_prepspec = 'mg2' -endif -if line eq 'CIV' then begin - lam0=1549.06D - maxv = 1d4 ; km/s - line_qsofit = 'CIV_br' - line_prepspec = 'c4' -endif - - -nobj = n_elements(rmid) - -; +- maxv km/s from the center -npix = maxv/3d5/(1d-4*alog(10.)) -loglam = dindgen(npix*2 + 1)*1d-4 + alog10(lam0) - npix*1d-4 -nwave = n_elements(loglam) -wave = 10.D^loglam - -result = {rmid:-1L,zsys:-1.D,line:line,lam0:lam0, wave:wave,loglam:loglam,rms:dblarr(nwave),rms_err:dblarr(nwave), $ - avg:dblarr(nwave), rms_avg:dblarr(nwave)-1.D } -result = replicate(result, nobj) -result.rmid=rmid & result.zsys=zsys - -; currently using 2014a prepspec results, but should switch to 2014b later -prepspec_dir = '/data3/yshen/ftp/sdssrm/collab/prepspec/2014b/' -qsofit_dir = '/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/civ_3gauss/fits/' -for i=0, nobj - 1 do begin - - ; rms line-only profile from prepspec - tag = 'rm' + string(rmid[i],format='(i3.3)') - prepspec_file = prepspec_dir + tag + '/' + tag + '_' + line_prepspec + '_w.dat' - - if file_test(prepspec_file) eq 1 then begin - readcol, prepspec_file,format='d,d,d',lam,flux,err, /silent - if n_elements(lam) gt 10 then begin - result[i].rms = interpol(flux, alog10(lam),loglam ) - result[i].rms_err = interpol(err, alog10(lam),loglam ) - - ; avg line-only profile from multi-Gaussian model from qsofit - fits_file = qsofit_dir + '0000-56837-' + string(rmid[i]+1,format='(i4.4)')+'.fits' - fits = mrdfits(fits_file,1,/silent) - linefit = fits.line_fit & linename = strtrim(fits.linename) - ind = where(linename eq line_qsofit) - lnlam1 = alog(wave*(1. + zsys[i])/(1. + fits.z)) - result[i].avg = manygauss(lnlam1, linefit[ind]) - - result[i].rms_avg = result[i].rms/result[i].avg - endif - endif -endfor - -end diff --git a/pro/rm/make_tech_overview_tables.pro b/pro/rm/make_tech_overview_tables.pro deleted file mode 100644 index 9aacef32d..000000000 --- a/pro/rm/make_tech_overview_tables.pro +++ /dev/null @@ -1,44 +0,0 @@ -; make table 1 and take 3 for the technical overview paper - -pro make_tech_overview_tables - -;; make table 3 -;file=getenv('IDLRM_DIR')+'/etc/wh-sky-mask.txt' -;fmt='(f6.4, f10.3)' -;readfmt,file,fmt, logwave, wave -;outfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/tech_sum/submission/data_tables/datafile3.txt' -;nnn=n_elements(wave) -;openw, lun, outfile,/get_lun -;for i=0L, nnn-1 do printf, lun, format='(f9.3, " ", f6.4)', wave[i], logwave[i] -;close,lun -;free_lun, lun - -; make fits table for table 1 -file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' -tags=['RA','DEC','zfinal','sourcetype', 'PSFMAG', 'objc_type', 'release', 'plate', 'fiberid', $ - 'mjd', 'med_sn'] -result=mrdfits(file,1, columns=tags) - -output=replicate({RMID:0L, RA:0.D, DEC:0.D, Z:0.D, sourcetype:'', psfmag:fltarr(5), $ - objctype:0L, sample:'', plate:lonarr(32), fiberid:lonarr(32), mjd:lonarr(32), medsn:dblarr(32)}, 1000L) - -output.RMID=lindgen(1000L) -output.ra=result.ra & output.dec=result.dec -output.z=result.zfinal -output.sourcetype=result.sourcetype -output.psfmag=result.psfmag -output.objctype=result.objc_type -output.sample=result.release -ind=where(strmatch(output.sample, 'dr12*')) -output[ind].sample='boss' -ind=where(strmatch(output.sample, 'dr7*')) -output[ind].sample='dr7' -output.plate=result.plate -output.fiberid=result.fiberid -output.mjd=result.mjd -output.medsn=result.med_sn - -outfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/tech_sum/submission/data_tables/tiled_sample.fits' -mwrfits, output, outfile, /create - -end diff --git a/pro/rm/make_var_qso_masterlist.pro b/pro/rm/make_var_qso_masterlist.pro deleted file mode 100644 index 3430dffc9..000000000 --- a/pro/rm/make_var_qso_masterlist.pro +++ /dev/null @@ -1,77 +0,0 @@ -; make a master fits file for all the SDSS quasars with photometric -; variability from PS1 or Stripe 82 - -pro make_var_qso_masterlist - -outdir = '/data3/quasar/yshen/work/md_qso/' - -struct={sample:'',ra:0.D,dec:0.D,plate:0L,fiber:0L,mjd:0L,z_pipe:0.D,z_vi:0.D} - -; MD01pilotQSOs.csv -;file = outdir + 'MD01pilotQSOs.csv' -;readcol,file,format='l,l,l,d,d,d',plate,mjd,fiber,ra,dec,z,delimiter=',' -;nnn=n_elements(plate) -;result=replicate(struct, nnn) -;result.sample='MD01' -;result.plate=plate & result.fiber=fiber & result.mjd=mjd -;result.ra=ra & result.dec=dec & result.z_pipe=z -;result_all = result -; updated by P. Green; -file = outdir + '6369-56217V_viQSO0gd_uwold2.csv' -readcol,file,format='l,x,l,l,x,d,d,x,x,d', delimiter=',',plate,mjd,fiber,ra,dec,z -nnn=n_elements(plate) -result=replicate(struct, nnn) -result.sample='MD01' -result.plate=plate & result.fiber=fiber & result.mjd=mjd -result.ra=ra & result.dec=dec & result.z_pipe=z -result_all = result - - -; MD03pilotQSOs.csv -;file = outdir + 'MD03pilotQSOs.csv' -;readcol,file,format='l,l,l,d,d,d',plate,mjd,fiber,ra,dec,z,delimiter=',' -;nnn=n_elements(plate) -;result=replicate(struct, nnn) -;result.sample='MD03' -;result.plate=plate & result.fiber=fiber & result.mjd=mjd -;result.ra=ra & result.dec=dec & result.z_pipe=z -;result_all = [result_all, result] -; updated by P. Green: -file = outdir + '6783-56284V_viQSO0gd_uwold.csv' -readcol,file,format='l,x,l,l,x,d,d,x,x,d', delimiter=',',plate,mjd,fiber,ra,dec,z -nnn=n_elements(plate) -result=replicate(struct, nnn) -result.sample='MD03' -result.plate=plate & result.fiber=fiber & result.mjd=mjd -result.ra=ra & result.dec=dec & result.z_pipe=z -result_all = [result_all, result] - - -; Other MD covered in DR10 -file = outdir + 'DR10specMDSqsos.csv' -readcol,file,format='x,l,l,l,d,x,x,x,x,d,x,x,x,d,d',plate,mjd,fiber,z,z_vi,ra,dec,delimiter=',' -nnn=n_elements(plate) -result=replicate(struct,nnn) -result.sample='MD_DR10' -result.plate=plate & result.fiber=fiber & result.mjd=mjd -result.ra=ra & result.dec=dec & result.z_pipe=z -result.z_vi = z_vi -result_all = [result_all, result] - -; Stripe 82 quasars in DR7+DR10 -file = outdir + 'DR10specS82qsos.csv' -readcol,file,format='x,l,l,l,d,x,x,x,x,x,d,d',plate,mjd,fiber,z,ra,dec,delimiter=',' -nnn=n_elements(plate) -result=replicate(struct,nnn) -result.sample='S82_DR10' -result.plate=plate & result.fiber=fiber & result.mjd=mjd -result.ra=ra & result.dec=dec & result.z_pipe=z -result_all = [result_all, result] - -; NOW, get z_VI from spall -;file = '/data1/quasar/yshen/data/sdss3/boss/v5_7_1_dr12/spAll-v5_7_0.fits' -;spall=hogg_mrdfits(file,1,columns=) - -outfile = outdir + 'var_qso.fits' -mwrfits, result_all, outfile, /create -end diff --git a/pro/rm/manygauss.pro b/pro/rm/manygauss.pro deleted file mode 100644 index a9d7856bd..000000000 --- a/pro/rm/manygauss.pro +++ /dev/null @@ -1,11 +0,0 @@ -function manygauss, xval, pp, nline=nline - - if n_elements(nline) eq 0 then nline = n_elements(pp)/3L - - yval = 0.d - for iline=0, nline-1 do $ - yval = yval + onegauss(xval, pp[iline*3:iline*3+2]) - - return, yval -end - diff --git a/pro/rm/map_fiber_target.pro b/pro/rm/map_fiber_target.pro deleted file mode 100644 index 5e74549a9..000000000 --- a/pro/rm/map_fiber_target.pro +++ /dev/null @@ -1,150 +0,0 @@ -; create the list of objects (targets, std and sky) that received a fiber -; for all the epochs - -; output the target_fibermap.fits file - -pro map_fiber_target, data_path = data_path - - ; using the plugmap structure to get the fiberid - ; modify the plate and mjd list when new epochs become available - plate = [7338, 7338, 7338, 7339, 7339, 7339, 7339, 7339, 7338, 7339, $ - 7339, 7340, 7339, 7338, 7339, 7339, 7339, 7339, 7339, 7339, $ - 7339, 7339, 7339, 7339, 7339, 7339, 7339, 7339, $ - 7340, 7340, 7340, 7340 , $ - 7338, 7338, 7338, 7339, 7339, 7340, 7338, 7338, 7338, 7338, 7340, 7340, $ ; 2015 data - 7339, 7339, 7339, 7339, 7339, 7338, 7339, 7339, 7339, 7339, 7339, 7340, 7340, $ ; 2016 data - 7338, 7338, 7338, 7338, 7338, 7338, 7338, 7338, 7339, 7339, 7339, 7339, $ ; 2017 data - 7338, 7338, 7338, 7338, 7340, 7340, 7340, 7340, 7340] ; 2018 data - mjd = [56660L, 56664L, 56669L, 56683L, 56686L, 56697L, 56713L, 56715L, 56717L, 56720, $ - 56722, 56726, 56739, 56745, 56747, 56749, 56751, 56755, 56768, 56772, $ - 56780, 56782, 56783, 56795, 56799, 56804, 56808, 56813, $ - 56825, 56829, 56833, 56837, $ - 57038, 57050, 57067, 57082, 57097, 57106, 57127, 57135, 57159, 57166, 57185, 57196, $ ; 2015 data - 57428, 57435, 57451, 57463, 57481, 57490, 57492, 57510, 57518, 57544, 57550, 57570, 57576, $ ; 2016 data - 57781, 57789, 57805, 57817, 57832, 57843, 57859, 57874, 57892, 57901, 57918, 57934, $ ; 2017 data - 58127, 58146, 58174, 58201, 58216, 58230, 58258, 58275, 58289] ; 2018 data - - nep_tot=n_elements(plate) - - etcdir = getenv('IDLRM_DIR') + '/etc/' - - if not keyword_set(data_path) then $ ; '/data3/quasar/yshen/spectro/bossredux/v5_6_0/' - data_path = getenv('BOSS_SPECTRO_REDUX')+'/'+getenv('RUN2D')+'/' - data_path_eboss = getenv('BOSS_SPECTRO_REDUX')+ '/v5_10_10/' ; eBOSS data since 2015 - - file = etcdir + 'RM_targets.fits' - - target = mrdfits(file,1) - - ; keep only those received a fiber - ind = where(target.tiled eq 1, nnn) - target = target[ind] - target = struct_addtags(target, replicate({plate:lonarr(nep_tot),fiberid:lonarr(nep_tot) $ - , mjd:lonarr(nep_tot),med_sn:dblarr(nep_tot),zfinal:0.D,dr_plate:0L,dr_fiberid:0L,dr_mjd:0L},nnn)) - struct = {ra:0.D,dec:0.D,sourcetype:'', priority:999L, psfmag:fltarr(5) $ - , fiber2mag:fltarr(5), z:0.D, objc_type:0L, release:'', indx:-1L $ - , tiled:1L, plate:lonarr(nep_tot), fiberid:lonarr(nep_tot), mjd:lonarr(nep_tot) $ - , med_sn:dblarr(nep_tot),zfinal:0.D,dr_plate:0L, dr_fiberid:0L, dr_mjd:0L} - - ; add previously known SDSS-DR7 and BOSS spectrum plate-fiber-mjd - file = etcdir + 'targets_final.fits' - alltarget = mrdfits(file,1) - target.dr_plate = alltarget[target.indx].plate - target.dr_fiberid = alltarget[target.indx].fiberid - target.dr_mjd = alltarget[target.indx].mjd - - ; now add additonal tiled stuff: 1 Lowz target, 70 std and 80 sky - file = etcdir + 'plateHoles-007338.par' - yanny_read, file, pdata - data = *pdata - - ; assign fiberid for the RM targets - ; do not use the fiberid from plateHoles*.par file [these are designing fiberID] - ; use the plugmapM information from spPlate HUD5 instead. - - ; fix the 7 egs RM targets of psfmag - ; NOTE that the DR10 psfmag for these 7 egs quasars are different from - ; the i-band magnitudes that Jon Trump sent to me, which are based on DEEP2 - file = etcdir + 'rm_targets_dr10_photo_primary.csv' - readcol, file,format='x,x,d,d,x,d,d,d,d,d', ra, dec, mu, mg, mr, mi, mz - spherematch, target.ra, target.dec, ra, dec, 0.1/3600.D, match0, match1, distance - ind = where(target[match0].psfmag[0] eq 0, nnn) - for i=0L, nnn - 1L do begin - print, target[match0[ind[i]]].release, target[match0[ind[i]]].psfmag - target[match0[ind[i]]].psfmag = [mu[match1[ind[i]]], mg[match1[ind[i]]] $ - , mr[match1[ind[i]]], mi[match1[ind[i]]], mz[match1[ind[i]]] ] - print, target[match0[ind[i]]].release, target[match0[ind[i]]].psfmag - endfor - - ; the LRG - ind = where(data.sourcetype eq 'LRG ', nnn) - new = replicate(struct, nnn) - new.ra = data[ind].target_ra & new.dec = data[ind].target_dec - new.sourcetype = data[ind].sourcetype & new.release = 'LOWZ' - target = [target, new] - - ; std - ind=where(data.sourcetype eq 'STD', nnn) - new = replicate(struct, nnn) - new.ra = data[ind].target_ra & new.dec = data[ind].target_dec - new.sourcetype = data[ind].sourcetype & new.release = 'STD' - ; now populate photometry for standard stars - file = etcdir + 'cas_dr10_star_match.fits' - star = mrdfits(file, 1) - spherematch, new.ra, new.dec, star.ra, star.dec, 0.2/3600.D, match0,match1, distance - for i=0L, n_elements(match0) - 1L do begin - new[match0[i]].psfmag = [star[match1[i]].psfmag_u $ - , star[match1[i]].psfmag_g, star[match1[i]].psfmag_r $ - , star[match1[i]].psfmag_i, star[match1[i]].psfmag_z ] - endfor - target = [target, new] - - ; sky - ind = where(data.targettype eq 'SKY', nnn) - new = replicate(struct, nnn) - new.ra = data[ind].target_ra & new.dec = data[ind].target_dec - new.sourcetype = 'SKY' & new.release = 'SKY' - target = [target, new] - - ; using the plugmap structure to get the fiberid - spfile = string(plate,format='(i4.4)') + '-' + string(mjd,format='(i5.5)') - n_epoch = n_elements(spfile) - for i=0L, n_epoch - 1L do begin - if mjd[i] lt 56838L then file = $ - data_path + string(plate[i],format='(i4.4)') + '/spPlate-' + spfile[i] + '.fits' $ - else file = data_path_eboss + string(plate[i],format='(i4.4)') + '/spPlate-' + spfile[i] + '.fits' - plugmap = mrdfits(file,5) - spherematch, target.ra, target.dec, plugmap.ra, plugmap.dec, 0.1/3600.D, match0,match1,distance - target[match0].plate[i,*] = plate[i] - target[match0].mjd[i,*] = mjd[i] - target[match0].fiberid[i,*] = transpose(plugmap[match1].fiberid) - endfor - - ; assign the median SN - med_SN = dblarr(nep_tot, 1000) - for i=0L, n_epoch-1 do begin - if i le 31 then begin - run2d='v5_7_1' & run1d='v5_7_1' - endif else begin - run2d='v5_10_10' & run1d='v5_10_10' - endelse - rm_readspec,plate[i], (target.fiberid)[i,*], mjd=mjd[i],flux=flux,invvar=ivar,run1d=run1d, run2d=run2d - med_SN[i,*] = median(flux*sqrt(ivar), dim=1) - endfor - target.med_sn = med_sn - - ; NOW assign the final redshift (zfinal) from zans+VI of coadded spectra - zlistfile=etcdir+'zfinal.list' - readcol, zlistfile,format='l,d',fiber, zfinal - target[0:848].zfinal = zfinal - - output = etcdir + 'target_fibermap.fits' - mwrfits, target, output, /create - - ; add a second extension for other per plate information - rm_output_spec_obs, result=result - mwrfits, result, output - -end - - diff --git a/pro/rm/mgb_extinction.pro b/pro/rm/mgb_extinction.pro deleted file mode 100644 index a9e24d100..000000000 --- a/pro/rm/mgb_extinction.pro +++ /dev/null @@ -1,60 +0,0 @@ -; Dec 13, 2004 -; Find E(B-V) at the position given. -; Calculate reddening as a function of wavelength -; Output reddening spectrum for each object -; inputs ra, dec in degrees, wavel in angstroms -; wfind = 0 means return the entire spectrum -; rv=3.1 or 3.08 for average Milky Way extinction curve -; this uses the Cardelli, Clayton, Mathis (1989) extinction curve (CCM) -; for optical/NIR only: 3030-9091 A -; is the wavelength in vacuum or air? - -; return, magnitude extinction A_lam at each wavelength -; dereddened flux = flux*10.0D^(0.4*A_lam) - -function mgb_extinction,ra,dec,rv,wavel,wfind, eb_v=eb_v - - nnn = n_elements(wavel) - - if n_elements(eb_v) eq 0 then begin ; get E(B-V) from target ra/dec - ;;get Galactic coordinates - glactc, ra, dec, 2000, gl, gb, 1, /DEGREE - ;;get reddening - ; ipath="/u/jgreene/misc/extinction/" - ; ipath="/u/yshen/Research/misc/extinction/" - ; ipath = "/home/yshen/Research/misc/maps/" - eb_v = dust_getval(gl,gb,ipath=ipath,/interp) - endif - ;;calculate A_lam - wavel_micron=wavel*1.e-4 - xarr=1./wavel_micron - yarr=xarr-1.82 ; used to be a typo: y=x-1.86 - - a_x = dblarr(nnn) & b_x = dblarr(nnn) - - ; Infrared - ind = where(xarr ge 0.3 and xarr le 1.1) - if ind[0] ne -1 then begin - a_x[ind] = 0.574*xarr[ind]^1.61 & b_x[ind] = -0.527*xarr[ind]^1.61 - endif - -; optical/NIR -ind = where(xarr gt 1.1 and xarr le 3.3) -if ind[0] ne -1 then begin - y = yarr[ind] - a_x[ind]=1.+0.17699*y-0.50447*y^2-0.02427*y^3+0.72085*y^4+0.01979*y^5-$ - 0.77530*y^6+0.32999*y^7 - b_x[ind]=1.41338*y+2.28305*y^2+1.07233*y^3-5.38434*y^4-0.62251*y^5+$ - 5.30260*y^6-2.09002*y^7 -endif - - a_lam=eb_v*(rv*a_x+b_x) - if wfind eq 0 then return,a_lam - if wfind gt 0 then begin - reg=where(wavel ge wfind-5. and wavel le wfind+5.) - a_find=mean(a_lam[reg]) - return,a_find - endif - -end - diff --git a/pro/rm/mk_rms_spec.pro b/pro/rm/mk_rms_spec.pro deleted file mode 100644 index 3c0170f96..000000000 --- a/pro/rm/mk_rms_spec.pro +++ /dev/null @@ -1,101 +0,0 @@ -; -pro get_all_rms_spec, rmid_arr, zsys_arr, result_all = result_all, nomask=nomask - -file = '/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -target = mrdfits(file,1) - -nobj = n_elements(rmid_arr) -plate = target[rmid_arr[0]].plate & fiber = target[rmid_arr[0]].fiberid -mjd = target[rmid_arr[0]].mjd -ep_str = {plate:plate[0:31], fiberid:fiber[0:31], mjd:mjd[0:31]} -mk_rms_spec, rmid_arr[0], zsys_arr[0], ep_str = ep_str, result=result0, nomask=nomask - -result_all = replicate(result0, nobj) -for i=1, nobj - 1 do begin - - plate = target[rmid_arr[i]].plate & fiber = target[rmid_arr[i]].fiberid - mjd = target[rmid_arr[i]].mjd - ep_str = {plate:plate[0:31], fiberid:fiber[0:31], mjd:mjd[0:31]} - mk_rms_spec, rmid_arr[i], zsys_arr[i], ep_str = ep_str, result=result0, nomask=nomask - - result_all[i] = result0 - - splog, 'finished: ', i+1, '/', nobj -endfor - -end - - -; make an rms spectrum for a given RM quasar - -pro mk_rms_spec, rmid, zsys, diag=diag, ep_str=ep_str, result = result, nomask = nomask - - -; first readin the coadded spectrum -rm_readspec,0,rmid+1, mjd=56837, wave=lam0, flux=flux0, invvar=ivar0,/silent, calibdir='wh_skysub/' -lam0 = lam0 / (1. + zsys) -line_window = [ [1160, 1340], $ - [1360, 1446], $ - [1494, 1680], $ - [1830, 1976] ] -nline = (size(line_window))[2] -mask = ivar0 -flux = flux0 -if ~keyword_Set(nomask) then begin ; remove emission lines - for i=0, nline - 1 do begin - ind = where( lam0 ge line_window[0,i] and lam0 lt line_window[1,i] ) - if ind[0] ne -1 then mask[ind] = 0 - endfor -endif - -; interpolate the ivar=0 pixels -ind = where(mask eq 0, complement = indd) -if ind[0] ne -1 then flux[ind] = interpol(flux[indd],lam0[indd],lam0[ind]) - ;spline(lam0[indd], flux[indd], lam0[ind]) - -if keyword_set(diag) then begin - plot, lam0, flux0 - oplot, lam0, flux, color=cgcolor('red') -endif - -; set up the common restframe wavelength range -wave = 1300. + findgen(1101)*1. ; this requires 1.85 0 ] * (1. + target[i].zpip) $ - else arr = [arr, [ (target[i].(ind1))[0], (target[i].(ind2))[0] > 0 ] * (1. + target[i].zpip)] - endfor - - printf, lun, format=fmt, target[i].rmid, target[i].zpip, $ - target[i].zsys, target[i].zsys_err, arr - endfor - close, lun - free_lun, lun - - ; now output FWHM - line=['HALPHA_BR','HBETA_BR','HEII4687_BR','OIII5007', $ - 'MGII_BR', 'CIII_ALL', 'CIV', 'HEII1640_BR', $ - 'SIIV_OIV', 'LYA'] - header = [['# RMID', 'ZPIP', 'ZSYS', 'ZSYS_ERR'], line] - fmt = '(i3.3, " ", f7.5, " ", f7.5, " ", f7.5, 10(" ", f9.3, " ", f9.3) )' - - outfile = '/data3/yshen/work/sdssrm_sample_char/bl_fwhm.txt' - openw, lun, outfile, /get_lun - printf, lun, header - nnn = n_elements(target) - nline = n_elements(line) - for i=0L, nnn - 1 do begin - for j=0L, nline - 1 do begin - ind1 = where(tags eq line[j]) & ind2 = where(tags eq line[j]+'_ERR') - if j eq 0 then arr = [ (target[i].(ind1))[1], (target[i].(ind2))[1] > 0 ] $ - else arr = [arr, [ (target[i].(ind1))[1], (target[i].(ind2))[1] > 0 ] ] - endfor - - printf, lun, format=fmt, target[i].rmid, target[i].zpip, $ - target[i].zsys, target[i].zsys_err, arr - endfor - - close, lun - free_lun, lun - - -end - diff --git a/pro/rm/output_xmm_objfits.pro b/pro/rm/output_xmm_objfits.pro deleted file mode 100644 index 66d7006fe..000000000 --- a/pro/rm/output_xmm_objfits.pro +++ /dev/null @@ -1,31 +0,0 @@ -; output the qsofits for the BOSS-XMM sample (Mentzel et al.) - -pro output_xmm_objfits - -outdir_in='/data1/quasar/yshen/DR12_QSO_fits/' - -file1=outdir_in+'qso_prop-xmm_boss.fits' -qso1=mrdfits(file1,1) -file2=outdir_in+'qso_prop-xmm_boss_add.fits' -qso2=mrdfits(file2,1) - - -linename = ['Halpha_br', 'Halpha_na', 'NII6549', $ - 'NII6585', 'SII6718','SII6732','Hbeta_br', 'Hbeta_na', $ - 'OIII4959', 'OIII5007','MgII_br', 'MgII_na', 'CIII_br', 'SIIII1892', $ - 'ALIII1857', 'CIV_br', 'HEII1640', 'OIII1663'] - - -outfile1='qso_prop-xmm_boss_w_optFe.fits' -rm_compile_qsofit, qso1.plate, qso1.mjd, $ - input_fiber=qso1.fiberid,rm_plate=0, $ - outdir_in=outdir_in,outfile=outfile1, linename=linename - - -outfile2='qso_prop-xmm_boss_add_w_optFe.fits' -rm_compile_qsofit, qso2.plate, qso2.mjd, $ - input_fiber=qso2.fiberid,rm_plate=0, $ - outdir_in=outdir_in,outfile=outfile2, linename=linename - - -end diff --git a/pro/rm/output_yanfei_objfits.pro b/pro/rm/output_yanfei_objfits.pro deleted file mode 100644 index 0f9df85c7..000000000 --- a/pro/rm/output_yanfei_objfits.pro +++ /dev/null @@ -1,55 +0,0 @@ -; output the qsofits for the SDSS-RM objects that Yanfei finds interesting - -pro output_yanfei_objfits - -; get the master file -file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' -target=mrdfits(file,1) - -; read in the list of objects to be compiled -file='/data3/quasar/yshen/work/photo_lag/GoodList.txt' -readcol,file,format='l,d,d',id1,ra1,dec1 -file='/data3/quasar/yshen/work/photo_lag/CheckList.txt' -readcol,file,format='l,d,d',id2,ra2,dec2 -file='/data3/quasar/yshen/work/photo_lag/Z_list.txt' -readcol,file,format='x,d,d', ra3, dec3 -id3=replicate(0, n_elements(ra3)) - -id=[id1,id2,id3] -ra=[ra1,ra2,ra3] & dec=[dec1,dec2,dec3] - -; Yanfei provided very crude coordinates -spherematch, ra,dec, target.ra, target.dec, 5./3600.D, match0, match1, distance - -; find the list of objects -ind=sort(match0) -target=target[match1[ind]] - -plate=(target.plate)[0:31,*] -fiber=(target.fiberid)[0:31,*] -mjd=(target.mjd)[0:31,*] - -nnn=32 - -finaldir='/data3/quasar/yshen/work/photo_lag/jiang/' -if file_test(finaldir,/dir) eq 0 then spawn, 'mkdir ' + finaldir -linename = ['Halpha', 'Hbeta', 'OIII5007','MgII', 'CIII', 'CIV'] -for i=0L, nnn - 1 do begin - - outdir_in=getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') $ - + '/' + string(plate[i,0],format='(i4.4)') + '/' $ - + 'qsofit/' - platestr=string(plate[i,0],format='(i4.4)') - mjdstr=string(mjd[i,0],format='(i5.5)') - - outfile='jiang-'+platestr+'-'+mjdstr+'.fits' - - rm_compile_qsofit, reform(plate[i,*]), reform(mjd[i,*]), $ - input_fiber=reform(fiber[i,*]),rm_plate=0,rm_ID=id, $ - outdir_in=outdir_in,outfile=outfile, linename=linename - - spawn, 'mv ' + outdir_in+outfile + ' ' + finaldir -endfor - - -end diff --git a/pro/rm/pause.pro b/pro/rm/pause.pro deleted file mode 100644 index f3029727a..000000000 --- a/pro/rm/pause.pro +++ /dev/null @@ -1,13 +0,0 @@ -pro pause - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Pause and wait for keyboard input -; -; Author : Brandon Kelly, Dec. 2003 -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -print, 'Press Any Key' -key = get_kbrd(1) - -return -end diff --git a/pro/rm/plot_L_z_lagdet.pro b/pro/rm/plot_L_z_lagdet.pro deleted file mode 100644 index ae602621a..000000000 --- a/pro/rm/plot_L_z_lagdet.pro +++ /dev/null @@ -1,84 +0,0 @@ -; plot the distribution in the L5100-z plane for -; different samples: local RM AGN, SDSS-RM lag detections, etc - - -pro plot_L_z_lagdet, bennert=bennert,hst=hst,plot_mass=plot_mass - -figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/L_z_dist.eps' -begplot,name=figfile,xsize=7,ysize=5,/encap,/color - -red, omegalambda=0.7,omega0=0.3,h100=0.7 -zlist = indgen(101)*0.1 -t_lb_list = getage(0,/gyr) - getage(zlist, /gyr) -t_arr = [0,1,2,3,4,5,6,getage(0,/gyr) - getage(0.8, /gyr)] -xtickname = [string(t_arr[0:6], format='(i0)'),string(t_arr[7],format='(f0.1)') ] -xtickv = interpol(zlist,t_lb_list,t_arr) - - -plot,[0],[0],/nodata,xrange=[0,0.8],yrange=[42, 46],xtitle='Redshift', $ - ytitle=textoidl('logL_{5100,AGN} [erg s^{-1}]'),pos=[0.12,0.12,0.95,0.9],xsty=5 - -axis, xaxis=0, xrange=[0,0.8],/xsty, xtitle = 'Redshift' -axis, xaxis=1, xrange=[0,0.8], xtitle = textoidl('Lookback Time [Gyr]'), xticks=7, $ - xtickv=xtickv, xtickname = xtickname - -; now plot the local RM objects -file = '/home/yshen/Research/IDL/lib/Projects/reverberation_mapping/lc_data/sample_shen' -readcol,file,format='x,x,d,d,d', lag_rm,logL_rm, z_rm, m_rm -oplot, z_rm, logL_rm, psym = symcat(9,thick=3),color=cgcolor('red') -logmbh_rm=alog10(m_rm*1d6) -print, 'RM sample (N, zmed):', n_elements(z_rm), median(z_rm) - -; plot the Bennert10 points -if keyword_set(bennert) then begin - file='/data3/quasar/yshen/work/lags/prepspec/output/paper/Bennert10' - readcol,file,format='x,x,d,x,x,x,x,x,x,x,x,d,x,d', zz, LL,logmbh - logL=alog10(1d44*LL) - oplot, zz, logL, psym=2,color=cgcolor('dark gray') -endif - -; plot the HST cyc23 targets -if keyword_set(hst) then begin - file='/data3/quasar/yshen/work/lags/prepspec/output/paper/hst23' - readcol,file,format='x,x,d,x,x,x,x,x,x,d,d', z, logmbh_shen,logl_shen - oplot, z, logL_shen, psym=symcat(16),color=cgcolor('blue'),symsize=1.5 - logmbh_shen=logmbh_shen+alog10(5.5) -endif else begin ; plot the reported detections in Shen++2015 - file='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/tables/lag_results' - readcol,file,format='x,x,d,x,x,x,x,x,x,x,x,x,x,d',z,logL_shen - oplot, z, logL_shen, psym=symcat(16),color=cgcolor('blue'),symsize=1.5 - print, 'SDSS-RM (N, zmed):', n_elements(z), median(z) -endelse - -if keyword_Set(hst) then begin - legend, 'this proposal', psym=symcat(16), pos=[0.68,0.85], box=0,/norm,color=cgcolor('blue'),$ - textcolor=cgcolor('blue') -endif else begin - legend, 'this work', psym=symcat(16), pos=[0.68,0.88], box=0,/norm,color=cgcolor('blue'),$ - textcolor=cgcolor('blue') -endelse -legend, 'local RM AGN', box=0, psym = symcat(9,thick=3),color=cgcolor('red'),/norm, $ - pos=[0.68, 0.83],textcolor=cgcolor('red') -if keyword_set(bennert) then legend, 'Bennert10', box=0, psym = symcat(2),color=cgcolor('dark gray'),/norm, $ - pos=[0.68, 0.90],textcolor=cgcolor('dark gray') - -endplot - -if keyword_set(plot_mass) then begin -figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/Mbh_z_dist.eps' -begplot,name=figfile,xsize=7,ysize=5,/encap,/color -plot,[0],[0],/nodata,xrange=[0,0.8],yrange=[6, 10],xtitle='Redshift', $ - ytitle=textoidl('logM_{BH} [M')+sunsymbol()+']',pos=[0.12,0.12,0.95,0.98],/xsty -oplot, z_rm,logmbh_rm,psym = symcat(9,thick=3),color=cgcolor('red') -oplot,zz,logmbh,psym=2,color=cgcolor('dark gray') -oplot,z,logmbh_shen,psym=symcat(16),color=cgcolor('blue'),symsize=1.5 -legend, 'this proposal (RM BH mass)', psym=symcat(16), pos=[0.4,0.85], $ - box=0,/norm,color=cgcolor('blue'), textcolor=cgcolor('blue') -legend, 'local RM AGN (RM BH mass)', box=0, psym = symcat(9,thick=3),color=cgcolor('red'),/norm, $ - pos=[0.4, 0.95],textcolor=cgcolor('red') -legend, 'Bennert10 (SE BH mass)', box=0, psym = symcat(2),color=cgcolor('dark gray'),/norm, $ - pos=[0.4, 0.90],textcolor=cgcolor('dark gray') -endplot -endif - -end diff --git a/pro/rm/plot_Mrm_Mse.pro b/pro/rm/plot_Mrm_Mse.pro deleted file mode 100644 index 93dc4f2ba..000000000 --- a/pro/rm/plot_Mrm_Mse.pro +++ /dev/null @@ -1,56 +0,0 @@ -; compare RM masses and SE masses for the 16 spectro-only detections - -pro plot_Mrm_Mse - -file='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/tables/lag_results' - -readcol,file,format='x,x,x,x,a,x,x,x,x,x,d,d,d,x,x,x,x,x,d,d',line,Mrm, Err_lo, Err_hi, Mse, Err -Mrm=Mrm + alog10(5.5) - -figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/Mrm_Mse.eps' -pos=[0.15,0.15, 0.96,0.98] -range=[6.5,9] -begplot, name=figfile,/color,/encap, xsize=5, ysize=5,/cmyk - -plot,[0],[0],/nodata,xrange=range, yrange=range,xtitle=textoidl('log M_{RM} (f=5.5) [M')+sunsymbol()+']', $ - ytitle=textoidl('log M_{SE,H\beta} [M')+sunsymbol()+']',pos=pos -oplot,range,range,line=2 - -ind=where(line eq 'H\beta') -oploterror, Mrm[ind], Mse[ind], Err_lo[ind], Err[ind], /lobar, psym=symcat(16) -oploterror, Mrm[ind], Mse[ind], Err_hi[ind], Err[ind], /hibar, psym=symcat(16) -ind=where(line eq 'MgII') -oploterror, Mrm[ind], Mse[ind], Err_lo[ind], Err[ind], /lobar, psym=symcat(9),color=cgcolor('red'),errcolor=cgcolor('red') -oploterror, Mrm[ind], Mse[ind], Err_hi[ind], Err[ind], /hibar, psym=symcat(9),color=cgcolor('red'),errcolor=cgcolor('red') - -pos=[0.2,0.95] -legend, textoidl('H\beta'),/norm,pos=pos,box=0, psym=symcat(16) -pos[1]=pos[1]-0.05 -legend, textoidl('MgII'),/norm,pos=pos,box=0, psym=symcat(9),color=cgcolor('red'),textcolor=cgcolor('red') -endplot - -figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/Mrm_Mse_diff.eps' -pos=[0.15,0.15, 0.96,0.98] -range=[-1.5,1.5] -begplot, name=figfile,/color,/encap, xsize=5, ysize=5,/cmyk -yrange=[6.5,9.2] -plot,[0],[0],/nodata,xrange=range, yrange=yrange,xtitle=textoidl('log (M_{SE,H\beta}/M_{RM})'), $ - ytitle=textoidl('log M_{RM} [M')+sunsymbol()+']',pos=pos,/ysty,/xsty -oplot, [0,0],yrange -oplot, [-0.5,-0.5],yrange,line=1 -oplot, [0.5,0.5],yrange,line=1 - -ind=where(line eq 'H\beta') -oploterror, Mse[ind]-Mrm[ind], Mrm[ind], Err_hi[ind], Err_lo[ind], /lobar, psym=symcat(16) -oploterror, Mse[ind]-Mrm[ind], Mrm[ind], Err_lo[ind], Err_hi[ind], /hibar, psym=symcat(16) -ind=where(line eq 'MgII') -oploterror, Mse[ind]-Mrm[ind], Mrm[ind], Err_hi[ind], Err_lo[ind], /lobar, psym=symcat(9),color=cgcolor('red'),errcolor=cgcolor('red') -oploterror, Mse[ind]-Mrm[ind], Mrm[ind], Err_lo[ind], Err_hi[ind], /hibar, psym=symcat(9),color=cgcolor('red'),errcolor=cgcolor('red') -pos=[0.2,0.95] -legend, textoidl('H\beta'),/norm,pos=pos,box=0, psym=symcat(16) -pos[1]=pos[1]-0.05 -legend, textoidl('MgII'),/norm,pos=pos,box=0, psym=symcat(9),color=cgcolor('red'),textcolor=cgcolor('red') - -endplot - -end diff --git a/pro/rm/plot_R_L_relation.pro b/pro/rm/plot_R_L_relation.pro deleted file mode 100644 index e9128d3c2..000000000 --- a/pro/rm/plot_R_L_relation.pro +++ /dev/null @@ -1,68 +0,0 @@ -; plot an R_L relation -; loglum and loglum_err are the log and log err of L5100 in units of erg/s -; rblr, rerr_hi and rerr_lo are the BLR in units of light days - -pro plot_R_L_relation, loglum,loglum_err,rblr,rerr_hi, rerr_lo,type=type,figfile=figfile,ctype=ctype - -; first read the R-L data from Bentz et al. -file='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/tables/Bentz13_data' -readcol,file, format='a,d,d,d,x,x,d,d',obj,tau,err_plus,err_minus,L5100,L5100_err - -L5100=10.D^L5100/1d40 ;& L5100_err=L5100_err*alog(10.D)*L5100 -L5100_err_hi=L5100*10.D^L5100_err - L5100 -L5100_err_lo=L5100 - L5100*10.D^(-L5100_err) - -if ~keyword_set(figfile) then figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/R_L_relation.eps' -begplot, name=figfile,/color,/encap, /cmyk,ysize=5 -ang = string(197B) -thick=2. & symsize=0.5 -pos=[0.12,0.13, 0.95,0.98] -plot, L5100, tau, /xlog,/ylog, xrange=[2d41,1d46]/1d40,yrange=[1,400],/xsty,/ysty, $ - /nodata, xtitle=textoidl('\lambdaL_{\lambda}(5100 ')+ang+')'+textoidl(' [erg s^{-1}]'), $ - ytitle=textoidl('BLR Size [light days]'),pos=pos,xtickname=textoidl(['10^{42}','10^{43}','10^{44}','10^{45}', '10^{46}']),xticklen=0.032 - -;print, L5100_err -;oploterror, L5100, tau, L5100_err, replicate(0., n_elements(tau)),psym=symcat(9,thick=thick),symsize=symsize,thick=thick,/nohat -oploterror, L5100, tau, L5100_err_hi,err_plus, psym=symcat(9,thick=thick),/nohat, /hibar,thick=thick,symsize=symsize,color=cgcolor('gray'),errcolor=cgcolor('dark gray') -oploterror, L5100, tau, L5100_err_lo,err_minus, psym=symcat(9,thick=thick),/nohat, /lobar,thick=thick,symsize=symsize,color=cgcolor('gray'),errcolor=cgcolor('dark gray') -xyouts, 0.18, 0.9, /norm, textoidl('Bentz et al. (2013, H\beta)'),color=cgcolor('dark gray') - -; overplot the best fit in Bentz++13 -k=1.527 & alpha=0.533 -xx=[1d41,1d47] -yy=10.D^(k + alpha*alog10(xx/1d44)) -oplot, xx/1d40, yy, color=cgcolor('dark gray') - - -; now overplot new data -if n_elements(loglum) gt 0 then begin - - lum=10.D^loglum/1d40 - lum_err_hi=lum*10.D^loglum_err - lum - lum_err_lo=lum - lum*10.D^(-loglum_err) - - ind_uniq=uniq(type,sort(type)) - ngroup=n_elements(ind_uniq) - color=cgcolor(['black', 'red', 'green', 'blue']) - sym=[9,6,15,5] - nnn=n_elements(loglum) - flag=lonarr(nnn) - pos=[0.17,0.89] - for i=0L, ngroup-1 do begin - indd=where(type eq type[ind_uniq[i]] ) - flag[indd] = i - oploterror,[lum[indd]],[rblr[indd]],[lum_err_hi[indd]], [rerr_hi[indd]],psym=symcat(sym[i]),$ - color=color[i], errcolor=color[i],/hibar - oploterror,[lum[indd]],[rblr[indd]],[lum_err_lo[indd]], [rerr_lo[indd]],psym=symcat(sym[i]),$ - color=color[i], errcolor=color[i],/lobar - if ~keyword_set(ctype) then legend, type[ind_uniq[i]], /norm,pos=pos,box=0, psym=symcat(sym[i]),color=color[i],textcolor=color[i] else $ - legend, ' '+textoidl(ctype[ind_uniq[i]]), /norm,pos=pos,box=0, psym=symcat(sym[i]),color=color[i],textcolor=color[i] - pos[1]=pos[1]-0.05 - endfor - -endif - - -endplot - -end diff --git a/pro/rm/plot_agn_decomp.pro b/pro/rm/plot_agn_decomp.pro deleted file mode 100644 index 339a94972..000000000 --- a/pro/rm/plot_agn_decomp.pro +++ /dev/null @@ -1,476 +0,0 @@ -; make plots for the AGN decomposition paper - -pro plot_agn_decomp, f14=f14,overwrite=overwrite, old_data_only=old_data_only, $ - no_hist=no_hist - -font='helvetica' - -file='/data3/quasar/yshen/work/agn_host/decomp_final.fits' -;file='/data3/quasar/yshen/work/agn_host/decomp_final_vp06_logL5100_qso.fits' - -result=mrdfits(file,1) - -logL5100_q=result.logL5100_qso -logL5100=result.logL5100_QSO -f_H_5100=result.f_H_5100 -ind=where(f_H_5100 gt 0.1 and logL5100 gt 0) -logL5100[ind]= alog10(10.D^logL5100[ind]/(1. - f_H_5100[ind])) -FWHM=result.fwhm_hb - -; find those that have been successfully decomposed and measured a sigma -;ind=where(result.sigma_shen gt 70. and result.sigma_shen lt 400 and result.sigma_ok_final eq 1 and result.logL5100_qso gt 0, ngood) -ind = where(result.sigma_ok_shen eq 1,ngood) -indd=where(result.sigma_ok_shen eq 1 and result.z gt 0.6, ngood_highz) - -fig1='/data3/quasar/yshen/work/agn_host/figs/L_z_dist.eps' -if ~keyword_set(no_hist) then ysize=6 else ysize=4 -begplot,name=fig1,xsize=6,ysize=ysize,/encap,/color, font=font - -logL5100_tot=result.logL5100_tot -if ~keyword_Set(no_hist) then begin - pos=[0.16, 0.4, 0.96, 0.98] - xtickname=replicate(' ',6L) -endif else begin - pos=[0.16, 0.16, 0.96, 0.98] - xtitle='Redshift' -endelse -plot, result.z, logL5100_tot, xtickname=xtickname, $ - ytitle=textoidl('logL_{5100,tot} [erg s^{-1}]'),$ - psym=symcat(9), xrange=[0, 1.1], yrange=[42.7,45.8],pos=pos,/ysty,/xsty,/nodata,xtitle=xtitle -; overplot the ShenJ08 sample -file='/home/yshen/Research/Projects/EV1/data/aj268062_mrt1_ShenJ.txt' -readcol,file, format='x,d,x,x,x,x,x,x,d,d,d,d,x,d',zz,L5100,L5100_2, sigma, sigma_c, fwhm -L5100 = L5100_2 ; use the Host not subtracted AGN L -; only keep objects with measurements -ind = where(sigma gt 0 and fwhm gt 0) -L5100 = L5100[ind] & sigma = sigma[ind] & fwhm = fwhm[ind] -fwhm = fwhm*1d3 -fwhm = fwhm*10.D^0.05 ; upscale by 0.05 dex to match the FWHM in Shen++(2011) for the 111 common obj -; note that L5100 in ShenJ08 needs to multiply by 5100A -logL5100 = alog10(10.D^L5100*5100.D) -oplot, zz,logL5100,psym=symcat(9,thick=3),symsize=0.3,color=cgcolor('gray') - -ind = where(result.sigma_ok_shen eq 1,ngood) -indd=where(result.sigma_ok_shen eq 1 and result.z gt 0.6, ngood_highz) -if ~keyword_set(old_data_only) then begin - oplot, result.z, logL5100_tot, psym=symcat(9) - oplot, result[ind].z,logL5100_tot[ind],psym=symcat(16),color=cgcolor('red') -endif -legend, 'Shen08', /norm, pos=[0.4, 0.95],box=0,psym=symcat(9,thick=3),symsize=0.3,color=cgcolor('gray'),textcolor=cgcolor('dark gray') - -; overplot the Woo et al. sample -file='/data3/quasar/yshen/work/agn_host/woo_data' -readcol,file,format='d,d,d,d',zz,l5100,sigma,logmbh -oplot, zz, alog10(l5100*1d44), psym=symcat(5,thick=5),symsize=1,color=cgcolor('cyan') -legend, 'Woo et al.', /norm, pos=[0.6, 0.95],box=0,psym=symcat(5,thick=5), $ - symsize=1,color=cgcolor('cyan'),textcolor=cgcolor('cyan') -if ~keyword_set(old_data_only) then xyouts, 0.98, 43., 'A' - -ntot=n_elements(result) -items=[textoidl(' N=') + string(ntot,format='(i0)'), $ - textoidl(' N_{good}=') + string(ngood,format='(i0)')] -if ~keyword_set(old_data_only) then begin - legend, items[0],/norm,pos=[0.21,0.95],box=0,psym=symcat(9) - legend, items[1],/norm,pos=[0.21,0.90],box=0,psym=symcat(16), color=cgcolor('red'),textcolor=cgcolor('red') -endif - -if ~keyword_set(no_hist) then begin - plothist, result.z, bin=0.1, xrange=[0,1.1],xtitle='Redshift',pos=[0.16,0.11,0.96,0.4], $ - /xsty, /noerase, ytitle=textoidl('N_{qso}'), yrange=[0,48],/ysty,xticklen=0.05 - plothist, result[ind].z,bin=0.1,/over,color=cgcolor('red') - xyouts, 0.08, 38, 'B' -endif - -endplot - -if not keyword_set(F14) then $ - fig2='/data3/quasar/yshen/work/agn_host/figs/Mse_sigma_vp06.eps' else $ - fig2='/data3/quasar/yshen/work/agn_host/figs/Mse_sigma_f14.eps' - -begplot,name=fig2,xsize=6,ysize=6,/encap,/color,/cmyk, font=font -sigma=result.sigma_SHEN & sigma_err=result.sigma_SHEN_err -if ~keyword_set(f14) then begin - mass=result.logmbh_vp06 & mass_err=result.logmbh_vp06_err - ytitle=textoidl('M_{BH,vir} (H\beta, VP06) [M')+sunsymbol()+']' -endif else begin - mass=result.logmbh_f14 & mass_err=result.logmbh_f14_err - ytitle=textoidl('M_{BH,vir} (H\beta, F14) [M')+sunsymbol()+']' -endelse -thick=2 -plot, [0], [0], xrange=[20, 700], yrange=[1d6,1d10], /xlog,/ylog, $ - xtitle=textoidl('\sigma_* [km s^{-1}]'),ytitle=ytitle,xsty=5, $ - ysty=5, pos=[0.16, 0.12, 0.98, 0.98],/nodata - - -; now fit to the data, taking into account errors in both measurables -; using Brandon's MCMC linear regression routine of logMbh on logsigma -outfile='/data3/quasar/yshen/work/agn_host/mcmc_reg/post_all.fits' -if file_test(outfile) eq 0 or keyword_set(overwrite) then begin - xarr=alog10(sigma[ind]/200.D) & xerr=sigma_err[ind]/alog(10.D)/sigma[ind] - yarr=mass[ind] & yerr=mass_err[ind] - linmix_err, xarr,yarr, post, xsig=xerr, ysig=yerr - mwrfits, post, outfile, /create -endif else post=mrdfits(outfile, 1) -outfile='/data3/quasar/yshen/work/agn_host/mcmc_reg/post_z_gt_0d6.fits' -if file_test(outfile) eq 0 or keyword_set(overwrite) then begin - xarr=alog10(sigma[indd]/200.) & xerr=sigma_err[indd]/alog(10.D)/sigma[indd] - yarr=mass[indd] & yerr=mass_err[indd] - linmix_err, xarr,yarr, post2, xsig=xerr, ysig=yerr - mwrfits, post2, outfile, /create -endif else post2=mrdfits(outfile,1) - -alpha=median(post.alpha) & beta1=median(post.beta) & int_scat1=sqrt(median(post.sigsqr)) -alpha2=median(post2.alpha) & beta2=median(post2.beta) & int_scat2=sqrt(median(post2.sigsqr)) -print, alpha, beta1, int_scat1 -print, alpha2, beta2, int_scat2 -;oplot, [10., 1000.], 10.D^alpha*[10.,1000.]^beta1, thick=6 -; now get 2sigma confidence -logsigma_arr=1. + findgen(21)*0.1 -ymin=dblarr(21) & ymax=dblarr(21) -ymin2=dblarr(21) & ymax2=dblarr(21) -for i=0, 20 do begin - logm=post.alpha + post.beta*(logsigma_arr[i] - alog10(200.D)) - ymin[i]=10.D^quantile_1d(0.025, logm) - ymax[i]=10.D^quantile_1d(0.975, logm) - logm=post2.alpha + post2.beta*(logsigma_arr[i] - alog10(200.D)) - ymin2[i]=10.D^quantile_1d(0.025, logm) - ymax2[i]=10.D^quantile_1d(0.975, logm) -endfor -;polyfill, 10.D^[logsigma_arr, reverse(logsigma_arr)], [ymin2, reverse(ymax2)],noclip=0,/fill,color=cgcolor('red'), /line_fill, orientation=45 -polyfill, 10.D^[logsigma_arr, reverse(logsigma_arr)], [ymin, reverse(ymax)],noclip=0,/fill,color=cgcolor('gray') -axis, xaxis=0,xrange=[20, 700],xtitle=textoidl('\sigma_* [km s^{-1}]'),/xsty,/xlog -axis, xaxis=1,xrange=[20, 700],/xsty, /xlog, xtickname=replicate(' ',6L) -axis, yaxis=0,yrange=[1d6,1d10],/ylog,/ysty, ytitle=ytitle -axis, yaxis=1,yrange=[1d6,1d10],/ylog,/ysty, ytickname=replicate(' ', 6L) - -oplot, [10., 1000.], 10.D^alpha*([10.,1000.]/200.D)^beta1, thick=6 -;oplot, [10., 1000.], 10.D^alpha2*[10.,1000.]^beta2, thick=6,color=cgcolor('red') -;oplot, 10.^logsigma_arr, ymin2, thick=6,color=cgcolor('red'),line=1 -;oplot, 10.^logsigma_arr, ymax2, thick=6,color=cgcolor('red'),line=1 - -oploterror, sigma[ind], 10.D^mass[ind], sigma_err[ind], 10.D^mass[ind]*alog(10.D)*mass_err[ind], psym=symcat(9),thick=thick -; oploterror, sigma[indd], 10.D^mass[indd], sigma_err[indd], 10.D^mass[indd]*alog(10.D)*mass_err[indd], psym=symcat(9),color=cgcolor('red'),errcolor=cgcolor('red'),thick=thick -oplot, sigma[indd], 10.D^mass[indd],psym=symcat(16),color=cgcolor('red'),symsize=0.6 - -; Spearman's test -spear=r_correlate(sigma[ind], 10.D^mass[ind]) -spear1=r_correlate(sigma[indd],10.D^mass[indd]) -print,string(spear) - -; Eqn 7 of KH13 -oplot, [10, 1000], 0.309*([10,1000]/200.)^4.38*1d9, line=2 -xyouts, 80, 2d6, 'KH13' - -legend, ' all (88): r='+string(spear[0],format='(f0.2)') + $ - ', p='+string(spear[1],format='(e0.1)'),psym=symcat(9),box=0,pos=[0.18,0.95],/norm -legend, ' z>0.6 ('+string(ngood_highz,format='(i0)')+'): r='+string(spear1[0],format='(f0.2)') $ - +', p='+string(spear1[1],format='(e0.1)'),psym=symcat(16),box=0,pos=[0.18,0.9], $ - /norm,color=cgcolor('red'),textcolor=cgcolor('red') - -endplot - -end - - -pro plot_zevo_mse_sigma, overwrite=overwrite, sfont=sfont - -if keyword_set(sfont) then font='helvetica' - -file='/data3/quasar/yshen/work/agn_host/decomp_final.fits' -result=mrdfits(file,1) - -ind=where(result.sigma_ok_shen eq 1) -result=result[ind] -ind=sort(result.z) -result=result[ind] -zz=result.z -mass=result.logmbh_vp06 & mass_err=result.logmbh_vp06_err -sigma=result.sigma_shen & sigma_err=result.sigma_shen_err -xarr=alog10(sigma/200.D) & xerr=sigma_err/alog(10.D)/sigma -yarr=mass & yerr=mass_err - -file='/data3/quasar/yshen/work/agn_host/mcmc_reg/post_all.fits' -post_all=mrdfits(file,1) -alpha=median(post_all.alpha) & beta1=median(post_all.beta) - -figfile='/data3/quasar/yshen/work/agn_host/figs/zevo_msigma.eps' -begplot, name=figfile, /color,/cmyk,/encap,xsize=19,ysize=5,font=font -charsize=2 - -; divide into 4 redshift bins -pos0=[0.05, 0.12, 0.2825, 0.98] -xtitle=textoidl('\sigma_* [km s^{-1}]') -ytitle=textoidl('M_{BH,vir} (H\beta, VP06) [M')+sunsymbol()+']' - -file='/data3/quasar/yshen/work/agn_host/woo_data' -readcol,file,format='d,d,d,d',zz_woo,l5100_woo,sigma_woo,logmbh_woo - -tag=['A','B','C','D'] -for i=0L, 3L do begin - - dx=pos0[2]-pos0[0] & dy=0. ; pos0[3]-pos0[1] - ;pos=[ pos0[0] + dx*(i mod 2), pos0[1] - dy*(i/2), $ - ; pos0[2] + dx*(i mod 2), pos0[3] - dy*(i/2) ] - pos=[ pos0[0] + dx*(i), pos0[1] - dy*(i/2), $ - pos0[2] + dx*(i), pos0[3] - dy*(i/2) ] - - imin=i*22L & imax=(i+1)*22L - 1L - zmin=min(zz[imin:imax], max=zmax) - zmed=median(zz[imin:imax]) - ztag='z='+string(zmin,format='(f0.2)')+'-'+string(zmax,format='(f0.2)')+ $ - ' (=' + string(zmed,format='(f0.2)')+')' - - print, zmin, zmax, zmed - - xarr1=xarr[imin:imax] & yarr1=yarr[imin:imax] - xerr1=xerr[imin:imax] & yerr1=yerr[imin:imax] - - print, r_correlate(xarr1, yarr1) - - outfile='/data3/quasar/yshen/work/agn_host/mcmc_reg/post_z'+string(zmin,format='(f0.2)')+'-'+string(zmax,format='(f0.2)')+'.fits' - if file_test(outfile) eq 0 or keyword_set(overwrite) then begin - linmix_err, xarr1,yarr1, post, xsig=xerr1, ysig=yerr1 - mwrfits, post, outfile, /create - endif else post=mrdfits(outfile,1) - - plot, [0], [0], xrange=[20, 700], yrange=[2d6,9d9], /xlog,/ylog, $ - xsty=5, ysty=5, pos=pos,/nodata,/noerase, charsize=charsize - ; now get 2sigma confidence - logsigma_arr=1. + findgen(21)*0.1 - ymin=dblarr(21) & ymax=dblarr(21) - ymin1=dblarr(21) & ymax1=dblarr(21) - for j=0, 20 do begin - logm=post.alpha + post.beta*(logsigma_arr[j] - alog10(200.D)) - ; 2sigma - ymin[j]=10.D^quantile_1d(0.025, logm) - ymax[j]=10.D^quantile_1d(0.975, logm) - ; 1sigma - ymin1[j]=10.D^quantile_1d(0.16, logm) - ymax1[j]=10.D^quantile_1d(0.84, logm) - endfor - polyfill, 10.D^[logsigma_arr, reverse(logsigma_arr)], [ymin, reverse(ymax)],noclip=0,/fill,color=cgcolor('sky blue') - polyfill, 10.D^[logsigma_arr, reverse(logsigma_arr)], [ymin1, reverse(ymax1)],noclip=0,/fill,color=cgcolor('cyan') - ;if i eq 0 or i eq 1 then xname=replicate(' ',6L) else tmp=temporary(xname) - if i ne 0 then yname=replicate(' ',6L) else tmp=temporary(yname) - axis, xaxis=0,xrange=[20, 700],/xsty,/xlog, xtickname=xname - axis, xaxis=1,xrange=[20, 700],/xsty, /xlog, xtickname=replicate(' ',6L) - axis, yaxis=0,yrange=[2d6,9d9],/ylog,/ysty, ytickname=yname - axis, yaxis=1,yrange=[2d6,9d9],/ylog,/ysty, ytickname=replicate(' ', 6L) - - alpha2=median(post.alpha) & beta2=median(post.beta) - - oplot, [10., 1000.], 10.D^alpha*([10.,1000.]/200.D)^beta1, thick=8 - oplot, [10., 1000.], 10.D^alpha2*([10.,1000.]/200.D)^beta2, thick=8,color=cgcolor('red') - ; Eqn 7 of KH13 - oplot, [10, 1000], 0.309*([10,1000]/200.)^4.38*1d9, line=2 - if i eq 0 then xyouts, 80, 3d6, 'KH13', charsize=charsize - - thick = 2 - oploterror, 10.D^xarr1*200.D, 10.D^yarr1, xerr1*alog(10.D)*10.D^xarr1*200.D, 10.D^yarr1*alog(10.D)*yerr1, psym=symcat(9),thick=thick, hatlength=!D.X_VSIZE / 200. - xyouts, 25, 4d9, ztag, charsize=charsize - - if i eq 0 then begin ; overplot z=0.36 Woo data - ind_woo=where(zz_woo le 0.4) - oplot, sigma_woo[ind_woo], 10.D^logmbh_woo[ind_woo],psym=symcat(5,thick=5) $ - ,color=cgcolor('red') - legend, pos=[23, 3.5d9], ' Woo et al. (z=0.36)', $ - color=cgcolor('red'),box=0,psym=symcat(5,thick=5), $ - textcolor=cgcolor('red'),charsize=charsize - endif - if i eq 1 then begin ; overplot z=0.57 Woo data - ind_woo=where(zz_woo gt 0.4) - oplot, sigma_woo[ind_woo], 10.D^logmbh_woo[ind_woo],psym=symcat(5,thick=5) $ - ,color=cgcolor('red') - legend, pos=[23, 3.5d9], ' Woo et al. (z=0.57)', $ - color=cgcolor('red'),box=0,psym=symcat(5,thick=5), $ - textcolor=cgcolor('red'), charsize=charsize - endif - xyouts, 400., 3d6, tag[i], charsize=charsize - -endfor - -xyouts, 0.5, 0.02, align=0.5, xtitle, /norm, charsize=charsize -xyouts, 0.02, 0.5, align=0.5, ytitle, /norm, charsize=charsize, orien=90 - -endplot - -end - -; compare the results in ShenJ08 -pro plot_comp_shen08 - -font='helvetica' - -file='/data3/quasar/yshen/work/agn_host/decomp_final.fits' -result=mrdfits(file,1) - - -file='/home/yshen/Research/Projects/EV1/data/aj268062_mrt1_ShenJ.txt' -readcol,file, format='x,d,x,x,x,x,x,x,d,d,d,d,x,d',zz,L5100,L5100_2, sigma, sigma_c, fwhm -L5100 = L5100_2 ; use the Host not subtracted AGN L -; only keep objects with measurements -ind = where(sigma gt 0 and fwhm gt 0) -L5100 = L5100[ind] & sigma = sigma[ind] & fwhm = fwhm[ind] -fwhm = fwhm*1d3 -fwhm = fwhm*10.D^0.05 ; upscale by 0.05 dex to match the FWHM in Shen++(2011) for the 111 common obj - -; note that L5100 in ShenJ08 needs to multiply by 5100A -logL5100 = alog10(10.D^L5100*5100.D) - -logmbh_vp06=0.91 + 0.5*alog10(10.D^logL5100/1d44) + 2.*alog10(fwhm) - -figfile='/data3/quasar/yshen/work/agn_host/figs/comp_shenJ08.eps' -begplot,name=figfile,xsize=6,ysize=6.5,/encap,/color,font=font - -ytitle=textoidl('M_{BH,vir} (H\beta, VP06) [M')+sunsymbol()+']' -xrange=[40,500] & yrange=[3d6, 6d9] -plot, [0], [0], xrange=xrange, yrange=yrange, /xlog,/ylog, $ - xtitle=textoidl('\sigma_* [km s^{-1}]'),ytitle=ytitle,xsty=5, $ - ysty=5, pos=[0.15, 0.12, 0.98, 0.88],/nodata - -fitsfile='/data3/quasar/yshen/work/agn_host/mcmc_reg/post_all.fits' -post=mrdfits(fitsfile,1) - -alpha=median(post.alpha) & beta1=median(post.beta) & int_scat1=sqrt(median(post.sigsqr)) -print, alpha, beta1, int_scat1 -; now get 2sigma confidence -logsigma_arr=1. + findgen(21)*0.1 -ymin=dblarr(21) & ymax=dblarr(21) -ymin2=dblarr(21) & ymax2=dblarr(21) -for i=0, 20 do begin - logm=post.alpha + post.beta*(logsigma_arr[i] - alog10(200.D)) - ymin[i]=10.D^quantile_1d(0.025, logm) - ymax[i]=10.D^quantile_1d(0.975, logm) -endfor -polyfill, 10.D^[logsigma_arr, reverse(logsigma_arr)], [ymin, reverse(ymax)],noclip=0,/fill,color=cgcolor('gray') -axis, xaxis=0,xrange=xrange,xtitle=textoidl('\sigma_* [km s^{-1}]'),/xsty,/xlog -axis, xaxis=1,xrange=xrange,/xsty, /xlog, xtickname=replicate(' ',6L) -axis, yaxis=0,yrange=yrange,/ylog,/ysty, ytitle=ytitle -axis, yaxis=1,yrange=yrange,/ylog,/ysty, ytickname=replicate(' ', 6L) -oplot, [10., 1000.], 10.D^alpha*([10.,1000.]/200.D)^beta1, thick=6 - -;specify color range based on logL5100 -min=42.7 & max=44.7 - -cgloadct, 13, /silent -thick=2 -ind=where(result.sigma_ok_shen eq 1, nnn) -colors=floor( (result[ind].logL5100_tot - min)/(max-min)*255L) -colors=colors > 0 -colors=colors < 255 -for i=0L, nnn-1 do begin -; oploterror, result[ind[i]].sigma_shen, 10.D^result[ind[i]].logmbh_vp06, $ -; result[ind[i]].sigma_shen_err, 10.D^result[ind[i]].logmbh_vp06*alog(10.D)*result[ind[i]].logmbh_vp06_err, $ -; psym=symcat(16,thick=3),symsize=1, thick=thick,color=colors[i],errcolor=colors[i] - oplot, [result[ind[i]].sigma_shen], [10.D^result[ind[i]].logmbh_vp06], $ - psym=symcat(9,thick=8),symsize=1,color=colors[i] -endfor - -colors=floor( (logL5100 - min)/(max-min)*255L) -colors=colors > 0 -colors=colors < 255 -nnn=n_elements(sigma) -for i=0, nnn-1 do oplot,[sigma[i]], [10.D^logmbh_vp06[i]], psym=symcat(16,thick=3), $ - symsize=0.5,color=colors[i] - -; now plot the Woo et al. data -file='/data3/quasar/yshen/work/agn_host/woo_data' -readcol,file,format='d,d,d,d',zz,l5100,sigma,logmbh -logL5100 = alog10(L5100*1d44) -colors=floor( (logL5100 - min)/(max - min)*255L ) -colors=colors > 0 -colors=colors < 255 -nnn=n_elements(sigma) -for i=0, nnn-1 do oplot,[sigma[i]], [10.D^logmbh[i]], psym=symcat(5,thick=8), $ - symsize=1., color=colors[i] - -legend, box=0, ' this work', psym=symcat(9,thick=6),symsize=1,pos=[0.16, 0.86],/norm -legend, box=0, ' Shen08', psym=symcat(16,thick=3), $ - symsize=0.5,pos=[0.16,0.82],/norm -legend, box=0, ' Woo et al.', psym=symcat(5,thick=5),pos=[0.16,0.78],/norm,symsize=1.0 - -; Eqn 7 of KH13 -oplot, [10, 1000], 0.309*([10,1000]/200.)^4.38*1d9, line=2 -xyouts, 52, 4d6, 'KH13' - -;pos=[0.15, 0.12, 0.98, 0.9] -pos1 = [0.15, 0.94, 0.98, 0.99] -cgcolorbar,/norm, pos = pos1, color=cgcolor('firebrick',255), range=[min, max], minor=5,ncolors=255 -xyouts, 0.02, 0.91, textoidl('logL_{5100,tot}'),color=fsc_color('firebrick',255), /norm -;xyouts, 0.95, 0.91, textoidl('[erg s^{-1}]'),color=fsc_color('firebrick',255), /norm - -endplot - -end - - -pro plot_msigma_para_evo - -; plot the evolution in the best-fit msigma relation - -zz=[0.6,0.76, 0.26, 0.53, 0.70, 0.84] -alpha=[8.377,8.395,8.324,8.372,8.388,8.364] -alpha1=[-0.066,-0.088,-0.180,-0.138,-0.235,-0.091] -alpha2=[0.067,0.088,0.170,0.137,0.233,0.097] - -beta=[1.535,1.081,1.695,1.592,1.199,0.960] -beta1=[-0.303,-0.492,-0.604,-0.660,-1.216,-0.588] -beta2=[0.304,0.511,0.614,0.677,1.231,0.598] - -sca=[0.406,0.440,0.410,0.414,0.536,0.381] -sca1=[-0.031,-0.048,-0.063,-0.062,-0.083,-0.068] -sca2=[0.035,0.059,0.082,0.082,0.109,0.091] - -syms=[16,9,6,6,6,6] - -figfile='/data3/quasar/yshen/work/agn_host/figs/para_evo.eps' -begplot,name=figfile,xsize=6,ysize=8,/encap,/color,font=font -color=cgcolor(['black','red','cyan', 'cyan','cyan','cyan']) - -pos0=[0.15, 0.68, 0.98, 0.95] -xtitle=textoidl('Redshift') -ytitle=textoidl(['\alpha', '\beta', 'Intrinsic Scatter']) -thick = 6 -ticklen=0.04 -xrange=[0.15,0.95] - -pos=pos0 -dx=pos0[2]-pos0[0] & dy=pos0[3]-pos0[1]+0.02 - -title=textoidl('log(M_{BH,vir}/M')+sunsymbol()+textoidl(')=\alpha+\betalog(\sigma_*/200 km s^{-1})') -plot, zz, alpha,/nodata, xrange=xrange,ytitle=ytitle[0],pos=pos,/xsty,$ - xticklen=ticklen,xtickname=replicate(' ', 6L), yrange=[8.12,8.6],/ysty,title=title -for jj=0, 5L do begin - oploterror, zz[jj],alpha[jj],alpha1[jj],/lobar,thick=thick,psym=symcat(syms[jj]),$ - color=color[jj],errcolor=color[jj], errthick=thick - oploterror, zz[jj],alpha[jj],alpha2[jj],/hibar,thick=thick,psym=symcat(syms[jj]),$ - color=color[jj],errcolor=color[jj], errthick=thick -endfor - -pos=[ pos[0], pos[1] - dy, $ - pos[2], pos[3] - dy ] -plot, zz, beta, /nodata, xrange=xrange,ytitle=ytitle[1],pos=pos,/noerase,/xsty,$ - xticklen=ticklen,yrange=[0., 2.6],xtickname=replicate(' ', 6L),/ysty -for jj=0, 5L do begin - oploterror, zz[jj],beta[jj],beta1[jj],/lobar,thick=thick,psym=symcat(syms[jj]),$ - color=color[jj],errcolor=color[jj],errthick=thick - oploterror, zz[jj],beta[jj],beta2[jj],/hibar,thick=thick,psym=symcat(syms[jj]),$ - color=color[jj],errcolor=color[jj],errthick=thick -endfor - -pos=[ pos[0], pos[1] - dy, $ - pos[2], pos[3] - dy ] -plot, zz, sca, /nodata, xrange=xrange,ytitle=ytitle[2],pos=pos,/noerase,/xsty,$ - xticklen=ticklen,yrange=[0.3, 0.65],xtitle='Redshift' -for jj=0, 5L do begin - oploterror, zz[jj],sca[jj],sca1[jj],/lobar,thick=thick,psym=symcat(syms[jj]),$ - color=color[jj],errcolor=color[jj],errthick=thick - oploterror, zz[jj],sca[jj],sca2[jj],/hibar,thick=thick,psym=symcat(syms[jj]),$ - color=color[jj],errcolor=color[jj],errthick=thick -endfor - - - -endplot - -end diff --git a/pro/rm/plot_agn_decomp_example.pro b/pro/rm/plot_agn_decomp_example.pro deleted file mode 100644 index de7987343..000000000 --- a/pro/rm/plot_agn_decomp_example.pro +++ /dev/null @@ -1,170 +0,0 @@ -; plot a 3-panel figure for each of the lowz objects in the AGN-host decomposing sample - -pro plot_agn_decomp_example - -file='/data3/quasar/yshen/work/agn_host/decomp.fits' -result=mrdfits(file,1) - -figfile='/data3/quasar/yshen/work/agn_host/showcase.ps' -begplot,name=figfile,/color - -outdir='/data3/quasar/yshen/work/agn_host/' -fitsdir = outdir + 'fits/' -nnn=n_elements(result) - -charsize = 1.2 & thick = 4. & xticks = 2L & xminor = 5L -linethick = 0.1 & symsize = 3. -ang = string(197B) & len=0.04 -pos1 = [0.1, 0.70, 0.97, 0.965] -pos2 = [0.1, 0.38, 0.97, 0.65] -pos3 = [0.1, 0.06, 0.97, 0.33] -if ~keyword_set(qso_npca) then qso_npca=10 -if ~keyword_set(gal_npca) then gal_npca=5 - -linelist = [3725.94, 3727.24, 3970.072, 4101.73, 4340.46, 4363.21, 4685.71, $ - 5158.89, 5199.08, 5302.86, $ ; 4861.3632, 4958.911, 5006.843 - 6300.32, 6548.05, 6562.801, $ - 6583.45, 6716.44, 6730.82] -nline=n_elements(linelist) -vaclist = linelist -airtovac, vaclist -vaclist = alog10(vaclist) -mwidth = 6.e-4 ; Mask out any pixels within +/- 420 km/s - -ytitle = textoidl('Flux Density f_\lambda (10^{-17} erg s^{-1} cm^{-2} ') $ - + ang + textoidl('^{-1})') -for i=0L, nnn-1 do begin - - wave=result[i].wave - flux=result[i].flux - err=result[i].err - rm_pca_decomp,wave,flux,err,z=result[i].z,ra=result[i].ra,dec=result[i].dec,/deredden,result=decomp_result, $ - qso_npca=qso_npca,gal_npca=gal_npca - ind_fit=decomp_result.fit_ind - - restwave=wave/(1.+result[i].z) - title='SDSS J'+result[i].sdss_name - xrange=[3400,max(restwave)] - ind_s = where(restwave ge 3400. and wave le 9900.) - yrange = [-0.5, max(smooth(flux[ind_s],3))*1.2] - if ~keyword_set(nsmooth) then nsmooth=1L - plot, restwave, smooth(flux,nsmooth), xrange=xrange, yrange=yrange, /ystyle $ - , charsize=charsize, xthick=thick, ythick=thick, charthick=thick, _extra=extra $ - , /xsty,xticklen=len, yticklen = len/2, pos=pos1, thick=linethick,title=title - oplot, restwave, result.err, thick=linethick,color=cgcolor('gray') - gal_recon=result[i].flux_recon - (result[i].flux - result[i].flux_gal) - qso_recon=result[i].flux_recon - gal_recon - oplot, restwave[ind_fit], (result[i].flux_recon)[ind_fit], color=cgcolor('red') - oplot, restwave[ind_fit], (qso_recon)[ind_fit],color=cgcolor('blue') - oplot, restwave[ind_fit], (gal_recon)[ind_fit],color=cgcolor('dark green') - xyouts, 0.85, pos1[3]-0.03, 'z='+string(result[i].z,format='(f5.3)'), /norm $ - , charsize=charsize, charthick=thick, color=cgcolor('red') - xyouts, 0.7, pos1[3]-0.03, textoidl('f_H=') + string(result[i].f_H,format='(f0.2)'),/norm,charsize=charsize,$ - charthick=thick,color=cgcolor('red') - xyouts, 0.15, pos1[3]-0.03, 'decomposition', /norm, charsize=charsize, charthick=thick - - ; plot sigma measurements - galflux_fit=result[i].flux_gal - galivar_fit=result[i].ivar - galivar_fit_use=galivar_fit - ind = where( (restwave ge 4760. and restwave le 5020.) or $ ; Hbeta - (restwave ge 6400. and restwave le 6765.) or $ ; Halpha - ;(restwave ge 4320. and restwave le 4400.) or $ ; Hgamma - ;(restwave ge 4080. and restwave le 4120.) or $ ; Hdelta - ;(restwave ge 4668. and restwave le 4696.) or $ ; HeII - (restwave lt 4000.) or (restwave gt 5350) ) - if ind[0] ne -1 then galivar_fit_use[ind]=0. - vdans = rm_vdispfit(galflux_fit, galivar_fit_use, alog10(wave), zobj=result[i].z, yfit=yfit, $ - eigenfile='spEigenElodie.fits', columns=lindgen(5), npoly=5, dzpix=7, /return_chisq) - xrange2=[4125., min([5350., max(restwave)])] - ind_s = where(restwave ge xrange2[0] and restwave le xrange2[1] and wave le 9900. and galivar_fit_use gt 0) - s_flux=smooth(galflux_fit[ind_s], 3) - yrange2=[min(s_flux),max(s_flux)*1.2] - ;ploterror, restwave, galflux_fit, err, xrange=xrange2,charsize=charsize, xthick=thick, ythick=thick, $ - ; charthick=thick,/xsty,xticklen=len, yticklen = len/2, pos=pos2, thick=linethick, $ - ; /noerase, yrange=yrange2,/ysty - plot, restwave, galflux_fit, xrange=xrange2,charsize=charsize, xthick=thick, ythick=thick, $ - charthick=thick,/xsty,xticklen=len, yticklen = len/2, pos=pos2, thick=linethick, $ - /noerase, yrange=yrange2,/ysty - maskind=where(galivar_fit_use eq 0,nbad) - galflux_fit_plot=galflux_fit - galflux_fit_plot[maskind] = 0. ; this sets the flux within the masks to be zero - ;oplot, restwave[maskind],replicate(yrange2[0],nbad), psym=4,color=cgcolor('cyan'),symsize=0.2 - polyfill, [4760.,5020.,5020.,4760.],[yrange2[0], yrange2[0],yrange2[1],yrange2[1]],/line_fill, $ - orientation=45,noclip=0,color=cgcolor('gray') - - for iline=0,nline-1 do begin - xx1=linelist[iline]*(1. - mwidth*alog(10.)) - xx2=linelist[iline]*(1. + mwidth*alog(10.)) - yy1=yrange2[0] & yy2=yrange2[1] - polyfill, [xx1,xx2, xx2, xx1], [yy1, yy1, yy2, yy2], /line_fill, $ - orientation=45, noclip=0,color=cgcolor('cyan') - endfor - ind_plot=where(galivar_fit_use gt 0) - if ind_plot[0] ne -1 then oplot, restwave[ind_plot], yfit[ind_plot], $ - color=cgcolor('red'), psym=symcat(16),symsize=0.2 ; 4125.7221-6796.7293 - xyouts, 0.3, pos2[3]-0.03, textoidl('\sigma_{*}=') $ - + string(round(result[i].sigma_shen),format='(i0)')+textoidl('\pm') $ - + string(round(result[i].sigma_shen_err),format='(i0)') + textoidl(' km s^{-1}'),/norm, $ - charsize=charsize,charthick=thick,color=cgcolor('red') - xyouts, 0.15, pos2[3]-0.03, 'galaxy', /norm, charsize=charsize, charthick=thick - xyouts, 0.3, pos2[3]-0.06, textoidl('S/N=')+string(result[i].medsn_sigma,format='(f0.1)'),/norm, $ - charsize=charsize,charthick=thick,color=cgcolor('red') - - ; plot quasar fit - gal_recon=result[i].flux_recon - (result[i].flux - result[i].flux_gal) - if result[i].f_H gt 0.1 then qsoflux_fit=result[i].flux-gal_recon else $ - qsoflux_fit=result[i].flux - objtag=string(result[i].plate,format='(i4.4)')+'-'+string(result[i].mjd,format='(i5.5)') $ - +'-'+string(result[i].fiber,format='(i4.4)') - fitsfile=fitsdir+objtag+'.fits' - para=mrdfits(fitsfile, 1, /silent) - conti_fit=para.conti_fit & line_fit=para.line_fit - linename=strtrim(para.linename) - xrange3=[4500, min([5400., max(restwave)])] - ind_s = where(restwave ge xrange3[0] and restwave le xrange3[1] and wave le 9900.) - s_flux=smooth(qsoflux_fit[ind_s], 3) - yrange3=[-max(s_flux)*0.1,max(s_flux)*1.2] - ; ploterror,restwave, qsoflux_fit, err, xrange=xrange3,charsize=charsize, xthick=thick, ythick=thick, $ - ; charthick=thick,/xsty,xticklen=len, yticklen = len/2, pos=pos3, thick=linethick, $ - ; xtitle='Rest Wavelength ['+ang+']',/noerase, yrange=yrange3,/ysty - plot,restwave, qsoflux_fit, xrange=xrange3,charsize=charsize, xthick=thick, ythick=thick, $ - charthick=thick,/xsty,xticklen=len, yticklen = len/2, pos=pos3, thick=linethick, $ - xtitle='Rest Wavelength ['+ang+']',/noerase, yrange=yrange3,/ysty - - xyouts,0.03,0.5,ytitle,/norm,charsize=charsize,charthick=thick,align=0.5,orien=90 - xyouts, 0.15, pos3[3]-0.03, 'quasar', /norm, charsize=charsize, charthick=thick - - ; now overplot the model - conti_fit=para.conti_fit & line_fit=para.line_fit - f_fe_balmer_model = fe_flux_balmer(restwave, conti_fit[3:5]) - f_pl_model = conti_fit[6]*(restwave/3000.0)^conti_fit[7] - f_poly_model = f_poly_conti(restwave, conti_fit[11:*]) - f_conti_model = f_pl_model + f_fe_balmer_model + f_poly_model - ind=where(linename eq 'Hbeta_br') - gauss_broad_hb=line_fit[ind] - ; determine the empirical FWHM - gau_arr= get_multi_gaussian_prop(gauss_broad_hb) - ind=where(linename eq 'Hbeta_na' or strmatch(linename, 'OIII4959*') eq 1 or strmatch(linename, 'OIII5007*') eq 1) - gauss_narrow=line_fit[ind] - ngauss=n_elements(ind)/3L - f_line_model = manygauss(alog(restwave),gauss_broad_hb)+manygauss(alog(restwave),gauss_narrow) - f_all_model=f_line_model+f_pl_model+f_poly_model+f_fe_balmer_model - - oplot, restwave, f_pl_model+f_poly_model, color=cgcolor('brown') - oplot, restwave, f_fe_balmer_model, color=cgcolor('blue') - oplot, restwave, f_all_model, color=cgcolor('red') - oplot, restwave, manygauss(alog(restwave), gauss_broad_hb),color=cgcolor('green') - oplot, exp([gau_arr[3], gau_arr[4]]), 0.5*[gau_arr[5],gau_arr[5]] - for igauss=0, ngauss-1 do oplot, restwave, onegauss(alog(restwave), gauss_narrow[igauss*3:igauss*3+2]),color=cgcolor('cyan') - - ;message, 'diagnose' - - splog, 'Finished: ', i+1, '/', nnn - -endfor - - - -endplot -end diff --git a/pro/rm/plot_allspec.pro b/pro/rm/plot_allspec.pro deleted file mode 100644 index 99f4d7dc8..000000000 --- a/pro/rm/plot_allspec.pro +++ /dev/null @@ -1,87 +0,0 @@ -; compare the 2014 and 2015 SDSS-RM coadded spectra - -pro plot_allspec, rmid=rmid, figfile=figfile, ep=ep, run2d=run2d, $ - coadd_mjd = coadd_mjd, years=years, normalize=normalize - - - ; Read in the master file - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - - if ~keyword_set(ep) then ep = indgen(32) + 1 - nep=n_elements(ep) ; # of epochs - - if n_elements(rmid) eq 0 then rmid=indgen(1000L) - nobj=n_elements(rmid) - - if ~keyword_set(figfile) then $ - figfile='/data3/yshen/spectro/bossredux/v5_7_1/0000/wh_skysub/spec_2014-17.ps' - begplot, name=figfile, /color - ang = string(197B) - pos1 = [0.1, 0.55, 0.97, 0.98] - pos2 = [0.1, 0.08, 0.97, 0.51] - xrange=[3650.,10200.] - xtitle=textoidl('Wavelength [')+ang+']' - ytitle = textoidl('Flux Density f_\lambda [10^{-17} erg s^{-1} cm^{-2} ') $ - + ang + textoidl('^{-1}]') - charsize=0.8 - - ; setup colors - cgloadct, 13, /silent, ncolors=nep, bottom=1 - thick=2 - - ; coadd spectrum colors - colors = cgcolor(['black', 'red', 'green', 'cyan']) - - ;mjd1=56837L & mjd2=57196L & mjd3=57576L & mjd4=57934L - if ~keyword_set(coadd_mjd) then begin - coadd_mjd=[56837L,57196L,57576L,57934L] - years = ['2014','2015','2016','2017','2018'] - endif - for i=0L, nobj-1 do begin - - fiber=rmid[i]+1 - - rm_readspec, 0, fiber, mjd=coadd_mjd[0], calibdir='wh_skysub/', wave=wave,flux=flux1,flerr=err1 - indgood=where(err1 gt 1d-5 and wave gt 3600. and wave lt 1d4) - if indgood[0] ne -1 then $ - yrange=[min(median(flux1[indgood],55) ), max(median(flux1[indgood],55)) ] - - plot, [0],[0], /nodata,xrange=xrange,/xsty,yrange=yrange,pos=pos1 - - for jj=0L, n_elements(coadd_mjd) - 1 do begin - rm_readspec, 0, fiber, mjd=coadd_mjd[jj], calibdir='wh_skysub/', wave=wave,flux=flux1,flerr=err1 - oplot, wave, median(flux1,5),thick=thick, color=colors[jj] - xyouts, 0.75, 0.93-jj*0.02, /norm, years[jj], color=colors[jj] - endfor - xyouts, 0.18, 0.93, /norm, 'RMID'+string(rmid[i],format='(i3.3)') - xyouts, 0.6, 0.93, /norm, 'z='+string(fibermap[rmid[i]].zfinal,format='(f0.3)') - xyouts, 0.39, 0.93, /norm, fibermap[rmid[i]].sourcetype - - if ~keyword_set(normalize) then yrange1=yrange else yrange1=[-2,10] - plot, [0],[0], xrange=xrange,yrange=yrange1,/xsty,pos=pos2, /noerase, xtitle=xtitle,/nodata - xpos=0.1 & ypos=pos2[3]-0.03 - for j=0,nep-1 do begin - plate=(fibermap[rmid[i]].plate)[ep[j]-1] & fiber=(fibermap[rmid[i]].fiberid)[ep[j]-1] & mjd=(fibermap[rmid[i]].mjd)[ep[j]-1] - str=string(plate,format='(i4.4)')+'-'+string(fiber,format='(i3.3)')+'-'+string(mjd,format='(i5.5)') - rm_readspec, plate,fiber,mjd=mjd,calibdir='wh_skysub/',wave=wave,flux=flux,flerr=err, run2d=run2d - flux_s = median(flux,15) - if j ne 6 then begin - if ~keyword_set(normalize) then oplot, wave, flux_s, color=j +1L,thick=thick-1 $ - else oplot, wave, flux_s/median(flux_s), color=j +1L,thick=thick-1 - endif - xpos_new = (j/12)*0.15 + xpos - ypos_new = ypos - (j mod 12)*0.012 - xyouts, xpos_new, ypos_new, /norm, str, color=j+1L,charsize=charsize - - endfor - xyouts, 0.05, 0.5, /norm, ytitle, align=0.5, orient=90 - - splog, 'Finished plotting RMID=', rmid[i] - endfor - - cgloadct, 0 - endplot - ; spawn, 'gzip ' + figfile - -end diff --git a/pro/rm/plot_coadd_ccf.pro b/pro/rm/plot_coadd_ccf.pro deleted file mode 100644 index 336d3f7ca..000000000 --- a/pro/rm/plot_coadd_ccf.pro +++ /dev/null @@ -1,101 +0,0 @@ -; plot the coadded CCF - -pro plot_coadd_ccf - - -coadd_ccf, lindgen(849), line='hb', result=result0 -coadd_ccf, lindgen(849), line='he2', result=result1 -coadd_ccf, lindgen(849), line='ha', result=result2 - - -file = getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' -target=mrdfits(file,1) -target=target[0:848] -ind=where(target.zfinal lt 0.96) -rmid=ind -coadd_ccf, rmid, line='mg2', result=result3 - -file='/data3/yshen/ftp/sdssrm/collab/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/qso_prop-0000-56837_lineshift.fits' -info=mrdfits(file,1) -logl5100=info.logl5100 - - -fig='/data3/yshen/work/composite_lag/coadded_ccf.ps' -begplot, name=fig, /color, /landscape - -plot_layout, 4, xypos=xypos, pmargin=[0.2,0.2], omargin=[0.1, 0.0, 1.05, 0.98] - -ploterror, result0.tau, result0.ccf_coadd, result0.ccf_coadd_err, psym=5, $ - xtitle=textoidl('\tau'), ytitle='Coadded correlation', pos=xypos[*,0], yrange=[-0.1, 0.3] -oploterror, result1.tau, result1.ccf_coadd, result1.ccf_coadd_err, psym=5,color=cgcolor('green') -xyouts, -90, 0.25, textoidl('H\beta') -xyouts, -90, 0.20, textoidl('HeII'),color=cgcolor('green') - -ploterror, result0.tau, result0.ccf_coadd, result0.ccf_coadd_err, psym=5, $ - xtitle=textoidl('\tau'), ytitle='Coadded correlation', pos=xypos[*,1], yrange=[-0.1, 0.3],/noerase -oploterror, result2.tau, result2.ccf_coadd, result2.ccf_coadd_err, psym=5,color=cgcolor('red') -;xyouts, [-90, 0.25], textoidl('H\beta') -xyouts, -90, 0.20, textoidl('H\alpha'),color=cgcolor('red') - -ploterror, result0.tau, result0.ccf_coadd, result0.ccf_coadd_err, psym=5, $ - xtitle=textoidl('\tau'), ytitle='Coadded correlation', pos=xypos[*,2], yrange=[-0.1, 0.3],/noerase -oploterror, result3.tau, result3.ccf_coadd, result3.ccf_coadd_err, psym=5,color=cgcolor('cyan') -;xyouts, [-90, 0.25], textoidl('H\beta') -xyouts, -90, 0.20, textoidl('MgII'),color=cgcolor('cyan') - - -; now plot lum-divided sample -rmid=result0.rmid -lum_use=logL5100[rmid] -ind1=where(lum_use lt median(lum_use), complement=ind2) -print, 'Delta_logL=', median(lum_use[ind2]) - median(lum_use[ind1]) -coadd_ccf, rmid[ind1], line='hb', result=result_lol -coadd_ccf, rmid[ind2], line='hb', result=result_hil -ploterror, result_lol.tau, result_lol.ccf_coadd, result_lol.ccf_coadd_err, psym=5, $ - xtitle=textoidl('\tau'), ytitle='Coadded correlation', pos=xypos[*,0], yrange=[-0.1, 0.3] -oploterror, result_hil.tau, result_hil.ccf_coadd, result_hil.ccf_coadd_err, psym=5,color=cgcolor('green') -xyouts, -90, 0.25, textoidl('H\beta, lo-L') -xyouts, -90, 0.20, textoidl('H\beta, hi-l'),color=cgcolor('green') - -rmid=result1.rmid -lum_use=logL5100[rmid] -ind1=where(lum_use lt median(lum_use), complement=ind2) -print, 'Delta_logL=', median(lum_use[ind2]) - median(lum_use[ind1]) -coadd_ccf, rmid[ind1], line='he2', result=result_lol -coadd_ccf, rmid[ind2], line='he2', result=result_hil -ploterror, result_lol.tau, result_lol.ccf_coadd, result_lol.ccf_coadd_err, psym=5, $ - xtitle=textoidl('\tau'), ytitle='Coadded correlation', pos=xypos[*,1], yrange=[-0.1, 0.3],/noerase -oploterror, result_hil.tau, result_hil.ccf_coadd, result_hil.ccf_coadd_err, psym=5,color=cgcolor('green') -xyouts, -90, 0.25, textoidl('HeII, lo-L') -xyouts, -90, 0.20, textoidl('HeII, hi-l'),color=cgcolor('green') - -rmid=result2.rmid -lum_use=logL5100[rmid] -ind1=where(lum_use lt median(lum_use), complement=ind2) -print, 'Delta_logL=', median(lum_use[ind2]) - median(lum_use[ind1]) -coadd_ccf, rmid[ind1], line='ha', result=result_lol -coadd_ccf, rmid[ind2], line='ha', result=result_hil -ploterror, result_lol.tau, result_lol.ccf_coadd, result_lol.ccf_coadd_err, psym=5, $ - xtitle=textoidl('\tau'), ytitle='Coadded correlation', pos=xypos[*,2], yrange=[-0.1, 0.3],/noerase -oploterror, result_hil.tau, result_hil.ccf_coadd, result_hil.ccf_coadd_err, psym=5,color=cgcolor('green') -xyouts, -90, 0.25, textoidl('H\alpha, lo-L') -xyouts, -90, 0.20, textoidl('H\alpha, hi-l'),color=cgcolor('green') - -rmid=result3.rmid -lum_use=logL5100[rmid] -ind1=where(lum_use lt median(lum_use), complement=ind2) -print, 'Delta_logL=', median(lum_use[ind2]) - median(lum_use[ind1]) -coadd_ccf, rmid[ind1], line='mg2', result=result_lol -coadd_ccf, rmid[ind2], line='mg2', result=result_hil -ploterror, result_lol.tau, result_lol.ccf_coadd, result_lol.ccf_coadd_err, psym=5, $ - xtitle=textoidl('\tau'), ytitle='Coadded correlation', pos=xypos[*,3], yrange=[-0.1, 0.3],/noerase -oploterror, result_hil.tau, result_hil.ccf_coadd, result_hil.ccf_coadd_err, psym=5,color=cgcolor('green') -xyouts, -90, 0.25, textoidl('MgII, lo-L') -xyouts, -90, 0.20, textoidl('MgII, hi-l'),color=cgcolor('green') - -endplot - -cgfixps, fig - - -end diff --git a/pro/rm/plot_fits_qa.pro b/pro/rm/plot_fits_qa.pro deleted file mode 100644 index 63be00f71..000000000 --- a/pro/rm/plot_fits_qa.pro +++ /dev/null @@ -1,107 +0,0 @@ -;+ -; Make QA plots to access the quality of spectral measurements -; from rm_qsofit - -pro plot_fits_qa, plate, mjd, range=range, plot_conti=plot_conti, comment=comment,$ - psfile=psfile - - - platestr=string(plate,format='(i4.4)') - mjdstr = string(mjd,format='(i5.5)') - - outfile = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') $ - + '/' + platestr + '/qsofit/qso_prop-' + platestr+'-'+mjdstr+'.fits' - - result=mrdfits(outfile,1) - ; Only use a subset of the objects - if keyword_set(range) then result = result[range[0]:range[1]] - - ; Simulated QSOs used in RM proposal - file='/data2/quasar/yshen/work/RM/TDSS/level2/sim_qso.fits' - simqso = mrdfits(file,1) - - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - imag = reform((fibermap.psfmag)[3,*]) - - if keyword_set(psfile) then begplot, name=psfile,/encap,/color,xsize=7,ysize=6,/cmyk - - csize=1.5 & ssize=0.5 & cthick=5 - - if keyword_set(plot_conti) then !P.multi=[0,1,2] - title = platestr + '-' + mjdstr - if keyword_set(comment) then title = title + ', ' + comment - plot, simqso.imag, 1d-16/simqso.f_line, psym=3, xtitle=textoidl('i_{PSF}'), ytitle='Line Flux Error / Line Flux' $ - , xrange=[18, 22], yrange = [1d-3, 2d0],/ylog,charsize=csize,title=title,charthick=1.5,$ - ytickname=textoidl(['10^{-3}', '10^{-2}', '10^{-1}', '10^{0}', '10^1']),pos=[0.13,0.13,0.96,0.92] - - ; plot the observed line measurement quality - linelist = ['HALPHA', 'HBETA', 'MGII', 'CIII_ALL', 'CIV'] - ;linelist = reverse(linelist) - color=cgcolor(['red','magenta','cyan','green','blue']) - sym = [4,17,6, 9,16] - tagname = tag_names(result) - - nline = n_elements(linelist) - for i=2,nline-1 do begin - - itag = where(tagname eq strupcase(linelist[i]) ) - ind = where( (result.(itag))[2,*] gt 0 ) - - imag_line = imag[ind] - itag1 = where(tagname eq strupcase(linelist[i] + '_ERR') ) - err_line = ( (result.(itag1))[2,ind] ) - - oplot, imag_line, err_line*alog(10.D), psym=symcat(sym[i],thick=cthick),color=color[i], $ - symsize=ssize - - endfor - - for i=0,1 do begin - - itag = where(tagname eq strupcase(linelist[i]) ) - ind = where( (result.(itag))[2,*] gt 0 ) - - imag_line = imag[ind] - itag1 = where(tagname eq strupcase(linelist[i] + '_ERR') ) - err_line = ( (result.(itag1))[2,ind] ) - - oplot, imag_line, err_line*alog(10.D), psym=symcat(sym[i],thick=cthick+1),color=color[i], $ - symsize=ssize+0.5 - - endfor - - - oplot, [18,22],[0.1,0.1],thick=cthick,line=2, color=cgcolor('red') - - legend, linelist, box=0,pos=[0.15, 0.89],/norm, color=color,textcolor=color,charsize=csize - legend, 'Sim_QSO', box=0,pos=[0.32,0.89],/norm, textcolor=cgcolor('opposite'),charsize=csize - - if keyword_Set(plot_conti) then begin - plot, simqso.imag, 1d-15/simqso.f_conti, psym=3, xtitle='PSF i Mag', ytitle='Conti Error/Flux' $ - , xrange=[18, 22], yrange = [1d-3, 2d0],/ylog,charsize=csize - - contiwave = [1350.,3000.,5100.] - conti_lum_str = 'logL'+string(contiwave,format='(i0)') - nconti = n_elements(conti_lum_str) - for i=0L, nconti-1 do begin - itag = where(tagname eq strupcase(conti_lum_str[i]) ) - ind = where( (result.(itag)) gt 0) - imag_line = imag[ind] - itag1 = where(tagname eq strupcase(conti_lum_str[i]+'_ERR') ) - err_line = ( (result.(itag1))[ind]) - - oplot, imag_line, err_line*alog(10.D), psym=symcat(sym[i]),color=color[i],symsize=ssize - endfor - - oplot, [18,22],[0.1,0.1],thick=cthitk,line=2, color=cgcolor('red') - - legend, conti_lum_str, box=0,pos=[0.15,0.45],/norm, color=color,textcolor=color,charsize=csize - legend, 'Sim_QSO', box=0,pos=[0.28,0.45],/norm, textcolor=cgcolor('opposite'),charsize=csize - - !P.multi = 0 - endif - - if keyword_set(psfile) then endplot - -end diff --git a/pro/rm/plot_flick_spec.pro b/pro/rm/plot_flick_spec.pro deleted file mode 100644 index ce8f2b748..000000000 --- a/pro/rm/plot_flick_spec.pro +++ /dev/null @@ -1,110 +0,0 @@ -; make a 2D image to show the "flicker" of all 849 quasars - -pro plot_flick_spec, epoch = epoch, psplot=psplot - - -file = getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' -target=mrdfits(file,1) -target=target[0:848] -ind=sort(target.zfinal) -rmid=ind -nobj = n_elements(rmid) -target = target[ind] -zz = target.zfinal - -if n_elements(epoch) eq 0 then epoch = indgen(32) + 1L -nep = n_elements(epoch) - -rm_readspec, 0, 1, mjd=56837,wave=wave -npix=n_elements(wave) - -prepspec_dir = '/data3/yshen/ftp/sdssrm/collab/prepspec/2014a/' -if n_elements(maxvalue) eq 0 then maxvalue= 1. -if n_elements(minvalue) eq 0 then minvalue= -1. -range=[minvalue, maxvalue] - - -for ii=0, nep - 1 do begin - - img = dblarr(npix, nobj) - i = epoch[ii] - 1L - - for j=0, nobj - 1 do begin - rm_readspec, 0, rmid[j]+1, mjd=56837,wave=wave, flux=flux0 - plate = (target[j].plate)[i] - mjd = (target[j].mjd)[i] - fiber = (target[j].fiberid)[i] - rm_readspec, plate, fiber, mjd=mjd, wave=wave1, flux=flux1, calibdir = 'wh_skysub/' - ; pt correction - pt = rm_get_pt(rmid[j], topdir=prepspec_dir, mjd_all=mjd) - flux1 = flux1/pt[0] - ; map onto the same wavelength grid - flux = interpol(flux1, wave1, wave) - amp = median(flux)/median(flux0) - if amp gt 1 then scale = 2. else scale = 1./2 - - img[*, j] = flux/median(flux0)*scale - - endfor - - ; now plot this 2D image for epoch epoch[ii] - trim_npix=100L - img=img[trim_npix:*, *] & wave=wave[trim_npix:*] - img = alog10(img) - tag = 'Epoch ' + string(epoch[ii],format='(i2.2)') + '(MJD ' + string(mjd,format='(i5.5)') + ')' - - nx=n_elements(wave) & ny=n_elements(zz) - - angstr=textoidl('\AA') - if keyword_set(psplot) then begin - if keyword_set(figfile) then fig=figfile else $ - fig='/data3/yshen/ftp/sdssrm/collab/prepspec/2014a/figs/epoch' + string(epoch[ii],format='(i2.2)') + '.ps' - begplot, name=fig,/color,/landscape - angstr=string(197B) - endif - - lines=textoidl(['Ly\alpha', 'SiIV', 'CIV', 'CIII]', 'MgII', 'HeII', 'H\beta', 'H\alpha']) - linewave=[1215.67, (1396.76 + 1402.06)*0.5, 1549.06,1908.73,2798.75,4687.02, 4862.68,6564.61, $ - 4341.68, 4102.89, 3890., 3800., 3588.30] - linepix=[800,700,600,500, 400, 150, 80, 30, $ - 200,250,200,300,300] - zline=interpol(zz, indgen(ny), linepix) - linewave_pix=interpol(indgen(nx), wave, linewave*(1+zline)) - nline=n_elements(lines) - xrange=[0,nx-1] & yrange=[0,ny-1] - pos=[0.08,0.1,0.92,0.9] - title='Epoch Spectra' - charsize=1 - plot,[0],[0], xrange=xrange, yrange=yrange, xsty=5,ysty=5, pos=pos, /norm, /nodata - cgLoadCT, 55, /reverse - cgimage, img, maxvalue=maxvalue, minvalue=minvalue, pos=pos,/norm, /noerase - cgColorbar, Position=[pos[0], pos[3], pos[2], pos[3]+0.05], range=range,/top - cgLoadCT, 0 - - for j=0, nline-1 do begin - ;print, linewave_pix[j], linepix[j], lines[j] - xyouts, linewave_pix[j], linepix[j], lines[j], color=cgcolor('blue'),charsize=charsize - endfor - - ; map the linear wavelength and z grid onto the pixelized image - zgrid=[0, 1, 2, 3, 4] - zgrid_pix=interpol(indgen(ny), zz, zgrid) - wgrid=[4000, 5000, 6000, 7000, 8000, 9000, 10000.] - wgrid_pix=interpol(indgen(nx), wave, wgrid) - - axis, xaxis=0, xrange=xrange, /xsty, xtitle=textoidl('Observed Wavelength (')+angstr+')', xtickv=wgrid_pix, $ - xtickname=string(wgrid, format='(i0)'), xticks=n_elements(wgrid) - 1 - axis, yaxis=0, yrange=yrange, /ysty, ytitle='Redshift', ytickv=zgrid_pix, $ - ytickname=string(zgrid, format='(i0)'), yticks=n_elements(zgrid) - 1 - axis, yaxis=1, yrange=yrange, /ysty, ytitle='# of Quasars' - xyouts, pos[0], pos[1]-0.08, tag, /norm,color=cgcolor('red') - - if keyword_set(psplot) then begin - endplot - cgfixps, fig - endif - - -endfor - -end diff --git a/pro/rm/plot_fluxcalib_impro.pro b/pro/rm/plot_fluxcalib_impro.pro deleted file mode 100644 index a74a607ec..000000000 --- a/pro/rm/plot_fluxcalib_impro.pro +++ /dev/null @@ -1,48 +0,0 @@ -; plot a figure to show the improvement of the custom flux calibration over pipeline - -pro plot_fluxcalib_impro - - ; find all std - std=rm_findstd(synflux=synflux, calibflux=calibflux, plot_diag=0) - std=rm_findstd(synflux=synflux1, calibflux=calibflux1, plot_diag=0,calibdir='recalib/') ; 'recalib/' - - ; get the synflux/calibflux ratio - ratio = synflux/calibflux ; [nepoch, nstd, nband] - logratio = alog10(ratio) > (-99.) - ratio1 = synflux1/calibflux1 ; [nepoch, nstd, nband] - logratio1 = alog10(ratio1) > (-99.) - - figfile=getenv('IDLRM_DIR')+'/misc/fluxcalib_comp.eps' - filtstr = ['u', 'g', 'r', 'i', 'z']+' band' - begplot, name=figfile,/color, /cmyk - !p.multi = [0,1,3] - bsize=0.01 & charsize=3 - yrange=[0,500.] - xtitle='log (synflux/calibflux)' - pos=[0.12, 0.75, 0.95, 0.98] - for iband=1L, 3L do begin - - plot, [0],[0], xrange=[-0.2,0.2] ,yrange=yrange,xtitle=xtitle,ytitle=textoidl('N_{STD}'), $ - charsize=charsize, /nodata, pos=pos, xticklen=0.04 - plothist, logratio[*,*,iband], bin=bsize, /over, xhist,yhist - plothist, logratio1[*,*,iband], bin=bsize,/over,color=cgcolor('red'), xhist1,yhist1 - ; fit simple Gaussian to the dist - fit=mpfitfun('gauss1', xhist,yhist,yhist,weights=1.D, [0., 0.1, 100.]) - fit1=mpfitfun('gauss1', xhist1,yhist1,yhist1,weights=1.D, [0., 0.1, 100.]) - xyouts, 0.13, 400, filtstr[iband] - xyouts, 0.1, 300, textoidl('mean \sigma') - xyouts, 0.1, 250, string(fit[0],format='(f0.2)')+' ' +string(fit[1],format='(f0.3)') - xyouts, 0.1, 200, string(fit1[0],format='(f0.2)')+' ' +string(fit1[1],format='(f0.3)'),$ - color=cgcolor('red') - - pos[1]=pos[1]-0.33 - pos[3]=pos[3]-0.33 - if iband eq 1 then begin - xyouts, 0.18, 0.94, 'BOSS pipeline', /norm - xyouts, 0.18, 0.91, 'custom', /norm, color=cgcolor('red') - endif - endfor - !p.multi = 0 - endplot - -end diff --git a/pro/rm/plot_img_lc_exp.pro b/pro/rm/plot_img_lc_exp.pro deleted file mode 100644 index 83632a0ad..000000000 --- a/pro/rm/plot_img_lc_exp.pro +++ /dev/null @@ -1,37 +0,0 @@ -; plot the light curve for an example object -; this is for proposal purposes - -pro plot_img_lc_exp - -file='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/imaging/cfht_15A/rm028i_cfht.txt' -readcol,file,format='d,d', mjd_cfht_i, mag_cfht_i -file='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/imaging/cfht_15A/rm028g_cfht.txt' -readcol,file,format='d,d', mjd_cfht_g, mag_cfht_g - -figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/imaging/cfht_15A/lc_rm028.eps' -begplot,name=figfile,/color,xsize=6,ysize=4 - -plot, mjd_cfht_g, mag_cfht_g, psym=symcat(16),xtitle='MJD', ytitle='AB Magnitude', $ - yrange=[19.5, 18.5],/ysty,pos=[0.15, 0.15, 0.92, 0.98],xtickname=['56650', '56700','56750','56800','56850'], xrange=[56650, 56850],/xsty -oplot, mjd_cfht_i, mag_cfht_i, psym=symcat(16), color=cgcolor('red') - -file='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/imaging/bok_photometry/bokrm_g.fits' -bok_g=mrdfits(file,1) -file='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/imaging/bok_photometry/bokrm_i.fits' -bok_i=mrdfits(file,1) - -rmid=28 -oplot, bok_g[rmid].mjd, bok_g[rmid].APERMAG7+0.05,psym=symcat(9) -oplot, bok_i[rmid].mjd, bok_i[rmid].APERMAG7+0.1,psym=symcat(9),color=cgcolor('red') - - -items=[' CFHT',' Bok'] -legend, items[0], box=0,pos=[0.7,0.95],/norm, psym=symcat(16) -legend, items[1], box=0,pos=[0.7,0.89],/norm, psym=symcat(9) - -xyouts, 0.2, 0.9, 'g band',/norm -xyouts, 0.4, 0.9, 'i band',/norm,color=cgcolor('red') - -endplot - -end diff --git a/pro/rm/plot_lag_paper_fig.pro b/pro/rm/plot_lag_paper_fig.pro deleted file mode 100644 index c4e8203b6..000000000 --- a/pro/rm/plot_lag_paper_fig.pro +++ /dev/null @@ -1,120 +0,0 @@ -; plot an R_L relation -; loglum and loglum_err are the log and log err of L5100 in units of erg/s -; rblr, rerr_hi and rerr_lo are the BLR in units of light days - -pro plot_R_L_relation, loglum,loglum_err,rblr,rerr_hi, rerr_lo,type=type,figfile=figfile - -; first read the R-L data from Bentz et al. -file='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/tables/Bentz13_data' -readcol,file, format='a,d,d,d,x,x,d,d',obj,tau,err_plus,err_minus,L5100,L5100_err - -L5100=10.D^L5100/1d40 ;& L5100_err=L5100_err*alog(10.D)*L5100 -L5100_err_hi=L5100*10.D^L5100_err - L5100 -L5100_err_lo=L5100 - L5100*10.D^(-L5100_err) - -if ~keyword_set(figfile) then figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/R_L_relation.eps' -begplot, name=figfile,/color,/encap, /cmyk,ysize=5 -ang = string(197B) -thick=2. & symsize=0.5 -pos=[0.12,0.13, 0.95,0.98] -plot, L5100, tau, /xlog,/ylog, xrange=[2d41,1d46]/1d40,yrange=[1,400],/xsty,/ysty, $ - /nodata, xtitle=textoidl('\lambdaL_{\lambda}(5100 ')+ang+')'+textoidl(' [erg s^{-1}]'), $ - ytitle=textoidl('BLR Size [light days]'),pos=pos,xtickname=textoidl(['10^{42}','10^{43}','10^{44}','10^{45}', '10^{46}']),xticklen=0.032 - -;print, L5100_err -;oploterror, L5100, tau, L5100_err, replicate(0., n_elements(tau)),psym=symcat(9,thick=thick),symsize=symsize,thick=thick,/nohat -oploterror, L5100, tau, L5100_err_hi,err_plus, psym=symcat(9,thick=thick),/nohat, /hibar,thick=thick,symsize=symsize,color=cgcolor('gray'),errcolor=cgcolor('dark gray') -oploterror, L5100, tau, L5100_err_lo,err_minus, psym=symcat(9,thick=thick),/nohat, /lobar,thick=thick,symsize=symsize,color=cgcolor('gray'),errcolor=cgcolor('dark gray') -xyouts, 0.18, 0.9, /norm, 'Bentz et al. (2013)',color=cgcolor('dark gray') - -; overplot the best fit in Bentz++13 -k=1.527 & alpha=0.533 -xx=[1d41,1d47] -yy=10.D^(k + alpha*alog10(xx/1d44)) -oplot, xx/1d40, yy, color=cgcolor('dark gray') - - -; now overplot new data -symsize=1.2 -if n_elements(loglum) gt 0 then begin - - lum=10.D^loglum/1d40 - lum_err_hi=lum*10.D^loglum_err - lum - lum_err_lo=lum - lum*10.D^(-loglum_err) - - ind_uniq=uniq(type,sort(type)) - ngroup=n_elements(ind_uniq) - color=cgcolor(['black', 'red', 'green', 'blue']) - sym=[16,6,15,5] - nnn=n_elements(loglum) - flag=lonarr(nnn) - pos=[0.17,0.89] - for i=0L, ngroup-1 do begin - indd=where(type eq type[ind_uniq[i]] ) - flag[indd] = i - oploterror,[lum[indd]],[rblr[indd]],[lum_err_hi[indd]], [rerr_hi[indd]],psym=symcat(sym[i]),$ - color=color[i], errcolor=color[i],/hibar,symsize=symsize - oploterror,[lum[indd]],[rblr[indd]],[lum_err_lo[indd]], [rerr_lo[indd]],psym=symcat(sym[i]),$ - color=color[i], errcolor=color[i],/lobar,symsize=symsize - legend, type[ind_uniq[i]], /norm,pos=pos,box=0, psym=symcat(sym[i]),color=color[i],textcolor=color[i] - pos[1]=pos[1]-0.05 - endfor - -endif - - -endplot - -end - -pro plot_M_RM_SE, logvp, logvp_err, logMse, logMse_err, sigma_rms, sig_err,fwhm_mean,fwhm_err, type=type,fvir=fvir - -if ~keyword_set(fvir) then fvir=5.5 - -if ~keyword_set(figfile) then figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/Mrm_Mse.eps' -begplot, name=figfile,/color,/encap, xsize=4, ysize=4 - -pos=[0.15,0.17, 0.98,0.98] -range=[6,9] -plot, [0],[0], /nodata,xrange=range, yrange=range,xtitle=textoidl('log M_{RM} (f=5.5) [M')+sunsymbol()+']', $ - ytitle=textoidl('log M_{SE,H\beta} [M')+sunsymbol()+']',pos=pos - -oplot,range,range,line=2 -ind_uniq=uniq(type,sort(type)) -ngroup=n_elements(ind_uniq) -color=cgcolor(['black', 'red', 'green', 'blue']) -sym=[16,6,15,5] - -pos=[0.17,0.92] -for i=0L, ngroup-1 do begin - indd=where(type eq type[ind_uniq[i]] ) - oploterror, [logvp[indd]+alog10(fvir)], logMse[indd], logvp_err[indd], logMse_err[indd],psym=symcat(sym[i]),$ - color=color[i], errcolor=color[i] - legend, type[ind_uniq[i]], /norm,pos=pos,box=0, psym=symcat(sym[i]),color=color[i],textcolor=color[i] - pos[1]=pos[1]-0.05 -endfor -endplot - -figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/sig_rms_fwhm_mean.eps' -begplot, name=figfile,/color,/encap, xsize=4, ysize=4 -pos=[0.2,0.17, 0.98,0.98] -xrange=[2.8,3.35] & yrange=[3,4] -plot, [0],[0], /nodata,xrange=xrange, yrange=yrange,/xsty,/ysty, $ - xtitle=textoidl('log\sigma_{rms} [km s^{-1}]'), $ - ytitle=textoidl('log FWHM_{mean,H\beta} [km s^{-1}]'), pos=pos ;, ytickname=textoidl(['1000','10^4']) -pos=[0.22,0.92] -color=cgcolor(['black', 'red', 'green', 'blue']) -for i=0L, ngroup-1 do begin - indd=where(type eq type[ind_uniq[i]] ) - oploterror, [alog10(sigma_rms[indd])], alog10(fwhm_mean[indd]),(sig_err[indd]/sigma_rms[indd])/alog(10.D), fwhm_err[indd]/fwhm_mean[indd]/alog(10.D),psym=symcat(sym[i]),$ - color=color[i], errcolor=color[i] - ;oploterror, [(sigma_rms[indd])],(fwhm_mean[indd]), (sig_err[indd]), fwhm_err[indd],psym=symcat(sym[i]),$ - ;color=color[i], errcolor=color[i] - - legend, type[ind_uniq[i]], /norm,pos=pos,box=0, psym=symcat(sym[i]),color=color[i],textcolor=color[i] - pos[1]=pos[1]-0.05 -endfor -endplot - - -end diff --git a/pro/rm/plot_lag_snr_test.pro b/pro/rm/plot_lag_snr_test.pro deleted file mode 100644 index 2ce225415..000000000 --- a/pro/rm/plot_lag_snr_test.pro +++ /dev/null @@ -1,93 +0,0 @@ -; plot the peak detections against line SNR output by PrepSpec -; using some threshold for the statistical signifcance of the peak -; this is to test if there is a preference for positive lags - -pro plot_lag_snr_test, min_peak_sig=min_peak_sig, figfile=figfile, ccf_file=ccf_file,plot_det=plot_det - -if n_elements(plot_det) eq 0 then plot_det=1 - -if ~keyword_set(min_peak_sig) then min_peak_sig=0.999 - -file='/data3/quasar/yshen/work/lags/prepspec/ACBFJ/snrplot.dat' -readcol,file,format='l,x,x,x,d,a', rmid_snr, logsnr_line, line_snr -line_snr=strupcase(line_snr) - -if not keyword_set(ccf_file) then ccf_file='/data3/quasar/yshen/work/lags/prepspec/ACBFJ/ccf_sym_range_rej_ep7' -readcol,ccf_file,format='l,a,x,d,d,x,d', rmid, line, lag, lag_low, peak_sig -line=strupcase(line) -; keep only hb and mg2 measurements -ind=where(line eq 'MG2' or line eq 'HB', nobj) -rmid=rmid[ind] & line=line[ind] & lag=lag[ind] & peak_sig=peak_sig[ind] -logsnr=dblarr(nobj)-99 -for i=0L, nobj-1 do begin - indd=where(rmid_snr eq rmid[i] and line_snr eq line[i],nnn) - if nnn eq 1 then logsnr[i]=logsnr_line[indd] -endfor - - -if not keyword_set(figfile) then figfile='/data3/quasar/yshen/work/lags/prepspec/ACBFJ/peak_snr.eps' -;'/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/papers/first_lags/peak_snr.eps' -begplot, name=figfile, /color,/encap, /cmyk,ysize=5 -pos=[0.12,0.13, 0.95,0.92] -plot, [0], [0], xrange=[-100,100], yrange=[0, 2.1], xtitle='CCF Peak [days]', /ysty, $ - ytitle='log SNR (line variability)', /nodata, pos=pos,title='based on spectroscopic LCs only' -oplot, [-100,100],[1.,1.],line=2 -ind=where(line eq 'HB') -oplot, lag[ind], logsnr[ind],psym=1, color=cgcolor('dark gray') -ind=where(line eq 'HB' and peak_sig gt min_peak_sig and logsnr gt 0, nn) -if ind[0] ne -1 then oplot, lag[ind], logsnr[ind],psym=1, color=cgcolor('red') -; decide how many are positive and negative lags with r>0.999 -ind1=where(line eq 'HB' and peak_sig gt min_peak_sig and lag ge 0 and logsnr gt 0,nn1) -ind2=where(line eq 'HB' and peak_sig gt min_peak_sig and lag lt 0 and logsnr gt 0,nn2) -print, 'Hbeta(tot/pos/neg lags):', nn, nn1, nn2 - -ind=where(line eq 'MG2') -oplot, lag[ind], logsnr[ind],psym=2, color=cgcolor('dark gray') -ind=where(line eq 'MG2' and peak_sig gt min_peak_sig and logsnr gt 0, nn) -if ind[0] ne -1 then oplot, lag[ind], logsnr[ind],psym=2, color=cgcolor('red') -; decide how many are positive and negative lags with r>0.999 -ind1=where(line eq 'MG2' and peak_sig gt min_peak_sig and lag ge 0 and logsnr gt 0,nn1) -ind2=where(line eq 'MG2' and peak_sig gt min_peak_sig and lag lt 0 and logsnr gt 0,nn2) -print, 'MgII(tot/pos/neg lags):', nn, nn1, nn2 - -xyouts, 0.16, 0.86, 'All', color=cgcolor('dark gray'), /norm -xyouts, 0.16, 0.82, 'Peak sig>' + string(min_peak_sig,format='(f0.3)'), color=cgcolor('red'),/norm -;xyouts, 0.16, 0.78, 'Reported detections', color=cgcolor('green'),/norm -;xyouts, 0.55, 0.86, textoidl('\circ')+': Detections', color=cgcolor('black'),/norm -legend, pos=[0.5,0.9], ': Detections', box=0,psym=symcat('9'), /norm - -xyouts, 0.75, 0.86, textoidl('+: H\beta'), /norm -xyouts, 0.75, 0.82, textoidl('*: MgII'), /norm - -; now overplot the reported detections -if keyword_set(plot_det) then begin - -; Here I am using my measurements of lags instead of Kate Grier's values for the 15 -; detection reported in Table 1 of the first-lag paper; this is because Kate's values -; do not align with the points from the full 100 objects, which were used in all the red -; points -file='/data3/quasar/yshen/work/lags/prepspec/ACBFJ/output/keep/tau_all' -readcol,file,format='l,a,d,d',rmid,line,zz,tau_rest -line=strupcase(line) -nobj=n_elements(rmid) -tau=tau_rest*(1. + zz) -logsnr=dblarr(nobj)-99 -for i=0L, nobj-1 do begin - indd=where(rmid_snr eq rmid[i] and line_snr eq line[i],nnn) - if nnn eq 1 then logsnr[i]=logsnr_line[indd] -endfor - -ind=where(line eq 'HB') -oplot, tau[ind], logsnr[ind],psym=1, color=cgcolor('red') -oplot, tau[ind], logsnr[ind],psym=symcat(9),symsize=1.4, color=cgcolor('red') -ind=where(line eq 'MG2') -oplot, tau[ind], logsnr[ind],psym=2, color=cgcolor('red') -oplot, tau[ind], logsnr[ind],psym=symcat(9), symsize=1.4, color=cgcolor('red') - -endif - - -endplot - -end - diff --git a/pro/rm/plot_layout.pro b/pro/rm/plot_layout.pro deleted file mode 100644 index dfa05b4f8..000000000 --- a/pro/rm/plot_layout.pro +++ /dev/null @@ -1,28 +0,0 @@ -; given # of panels, return the xypositions in the plot - -pro plot_layout, npanel, xypos=xypos, omargin=omargin, pmargin=pmargin, $ - nrow=nrow - - if ~keyword_set(omargin) then omargin=[0.1, 0.1, 0.98, 0.98] ; overall page margin - if ~keyword_set(pmargin) then pmargin=[0.02,0.04] - - if npanel eq 1 then xypos=omargin else begin - - pmargin_x=pmargin[0] ; margin between panels - pmargin_y=pmargin[1] - xtot=omargin[2]-omargin[0] & ytot=omargin[3]-omargin[1] - if ~keyword_set(nrow) then nrow=round(sqrt(npanel)) - ncol=ceil(float(npanel)/nrow) - dx0=xtot/ncol & dy0=ytot/nrow - dx=(xtot - (ncol-1)*pmargin_x)/ncol - dy=(ytot - (nrow-1)*pmargin_y)/nrow - xypos=dblarr(4,npanel) - - for j=0, npanel-1 do begin - xypos[0,j]=omargin[0] + (j mod ncol)*dx0 - xypos[2,j]=xypos[0,j]+dx - xypos[1,j]=omargin[3] - (j/ncol)*dy0 - dy - xypos[3,j]=xypos[1,j]+dy - endfor - endelse -end diff --git a/pro/rm/plot_mag_diff.pro b/pro/rm/plot_mag_diff.pro deleted file mode 100644 index 90041ae22..000000000 --- a/pro/rm/plot_mag_diff.pro +++ /dev/null @@ -1,141 +0,0 @@ -;+ -; NAME: -; plot_mag_diff -; -; PURPOSE: -; Plot the difference between synthetic and calibflux magnitudes -; for different RM epochs -;--------------------------------------------------------------------------- - -pro plot_mag_diff, shuffle=shuffle, plotdata=plotdata - - if n_elements(plotdata) eq 0 then plotdata=0L - if n_elements(shuffle) eq 0 then shuffle = 1L - - platelist = [7338,7338,7338,7339,7339] - mjdlist = [56660,56664,56669,56683,56686] - seeing = [1.6,3.,3.,1.6,2.] - sn2 = [17.9,10.9,3.3,22.4,21.9] - ncoadd = [7,6,6,9,8] - nepoch = n_elements(platelist) - - std_fiber = rm_findstd(platelist,mjdlist,synflux=synflux,calibflux=calibflux) - - ; get airmass info - airmass = dblarr(nepoch) - for i=0L, nepoch - 1L do begin - rm_expinfo,platelist[i],mjdlist[i],expinfo=expinfo - ; keep only coadded exposures - ind = where(expinfo.coadded[0,*] eq 1) - expinfo = expinfo[ind] - airmass[i] = mean(expinfo.airmass) - endfor - - - plotfile = 'std_specphoto_dep.ps' - set_plot, 'ps' - plotfile = getenv('IDLRM_DIR')+'/misc/'+plotfile - begplot,name=plotfile,/color,/landscape - - !p.multi = [0,3,3] - ;multipanel,row=3,col=3,/first,position=p,margin=[0.05,0.05,0.05,0.05] - - colors = fsc_color(['opposite','green','red','cyan','blue','magenta']) - csize=2.0 & symsize=0.1 & csize2 = 0.8 - - ; first plot synmag-calibmag as function of SN^2 - magdiff = -alog10(synflux/calibflux)*2.5 - title = ['u band','g band','r band','i band','z band'] - yrange = [-0.15, 0.15] - string2 = string(ncoadd,format='(i0)') - string2[0]='exp:'+string2[0] - for iband=1,3 do begin - - if iband eq 1 then noerase = 0 else noerase = 1 - - plot,[0],[0],/nodata,xrange=[0,25],yrange=yrange,/xsty,/ysty, $ - xtitle = 'SN2', ytitle='SynMag - CalibMag',charsize=csize, $ - title = title[iband] - - ;multipanel, /advance, pos=p - - xpos = 1 & ypos = 0.12 - for iepoch=0,nepoch - 1L do begin - - ind = where(synflux[iepoch,*,iband] gt 0, ngood) - magdiff1 = magdiff[iepoch,ind,iband] - xarr = replicate(sn2[iepoch],ngood) - if keyword_set(shuffle) then xarr = xarr + randomu(seed,ngood)*1 - 0.5 - if keyword_set(plotdata) then oplot, xarr, magdiff1,psym=2, $ - symsize=symsize, color=colors[iepoch] - oploterror,[sn2[iepoch]],[mean(magdiff1)],[stddev(magdiff1)],$ - psym=symcat(6),color=colors[iepoch],errcolor=colors[iepoch] - oploterror,[sn2[iepoch]],[mean(magdiff1)],[median(abs(magdiff1))],$ - psym=symcat(6),color=colors[iepoch],errcolor=colors[iepoch],errstyle=1 - - if iband eq 1 then begin - xyouts, xpos, ypos, string(mjdlist[iepoch],format='(i0)'),$ - color=colors[iepoch], charsize=csize2 - xyouts, xpos, -ypos, string2[iepoch],$ - color=colors[iepoch], charsize=csize2 - xpos = xpos + 4.5 - endif - endfor - endfor - - ; then plot synmag - calibmag as function of seeing - for iband=1,3 do begin - - plot,[0],[0],/nodata,xrange=[1,3.5],yrange=yrange,/xsty,/ysty, $ - xtitle = 'seeing', ytitle='SynMag - CalibMag',charsize=csize, $ - title = title[iband] ;, pos=p, /noerase - - ;multipanel, /advance, pos=p - - for iepoch=0,nepoch - 1L do begin - - ind = where(synflux[iepoch,*,iband] gt 0, ngood) - magdiff1 = magdiff[iepoch,ind,iband] - xarr = replicate(seeing[iepoch],ngood) - if keyword_set(shuffle) then xarr = xarr + randomu(seed,ngood)*0.1 - 0.5*0.1 - if keyword_set(plotdata) then oplot, xarr, magdiff1,psym=2, $ - symsize=symsize, color=colors[iepoch] - oploterror,[seeing[iepoch]],[mean(magdiff1)],[stddev(magdiff1)],$ - psym=symcat(6),color=colors[iepoch],errcolor=colors[iepoch] - oploterror,[seeing[iepoch]],[mean(magdiff1)],[median(abs(magdiff1))],$ - psym=symcat(6),color=colors[iepoch],errcolor=colors[iepoch],errstyle=1 - - endfor - endfor - - ; then plot synmag - calibmag as function of airmass - for iband=1,3 do begin - - plot,[0],[0],/nodata,xrange=[1.05,1.3],yrange=yrange,/xsty,/ysty, $ - xtitle = 'avg airmass', ytitle='SynMag - CalibMag',charsize=csize, $ - title = title[iband] ;, pos=p, /noerase - - ;multipanel, /advance, pos=p - - for iepoch=0,nepoch - 1L do begin - - ind = where(synflux[iepoch,*,iband] gt 0, ngood) - magdiff1 = magdiff[iepoch,ind,iband] - xarr=replicate(airmass[iepoch],ngood) - if keyword_set(shuffle) then xarr = xarr + randomu(seed,ngood)*0.01 - 0.5*0.01 - if keyword_set(plotdata) then oplot, xarr, magdiff1,psym=2, $ - symsize=symsize, color=colors[iepoch] - oploterror,[airmass[iepoch]],[mean(magdiff1)],[stddev(magdiff1)],$ - psym=symcat(6),color=colors[iepoch],errcolor=colors[iepoch] - oploterror,[airmass[iepoch]],[mean(magdiff1)],[median(abs(magdiff1))],$ - psym=symcat(6),color=colors[iepoch],errcolor=colors[iepoch],errstyle=1 - - endfor - endfor - - - ;multipanel, /off - !p.multi = 0 - endplot - -end diff --git a/pro/rm/plot_obs_coverage.pro b/pro/rm/plot_obs_coverage.pro deleted file mode 100644 index 84e2e1ce8..000000000 --- a/pro/rm/plot_obs_coverage.pro +++ /dev/null @@ -1,178 +0,0 @@ -; plot the obs coverage of BOSS, bok, cfht and mayall - -pro plot_obs_coverage - -figfile=getenv('IDLRM_DIR')+'/etc/obs_cover.eps' -begplot, name=figfile,/color,/encap,/cmyk, xsize=14, ysize=6 -charsize=2 & symthick=4 - -file=getenv('IDLRM_DIR')+'/etc/obs_cover.txt' - -; imaging data -readcol, file,format='a,d,a,x,l,l,l,l,l,d',name, mjd, ut,obs_g,obs_i,obs_U,obs_r,obs_z,seeing -; boss data -readcol, file,format='x,d', boss_mjd, skipline=91L - -; now plot -xrange=[56600, 56870] -plot, [0],[0], xrange=xrange, yrange=[0,1.1],xsty=5, /ysty,xtitle='Modified Julian Date [JD - 2400000.5 days]', $ - ytitle='Facility / Moon Illumination', charsize=charsize,pos = [0.08, 0.15, 0.98, 0.89], /norm, $ - yticklen=0.01, xticklen=0.03, $ - xtickname=['56600', '56650', '56700', '56750', '56800', '56850'] -title='SDSS-RM Data Coverage' -xyouts, 0.5, 0.94, title,charsize=2, /norm,align=0.5 - -date=[[2013,12,01], $ - [2014,01,01], $ - [2014,02,01], $ - [2014,03,01], $ - [2014,04,01], $ - [2014,05,01], $ - [2014,06,01], $ - [2014,07,01], $ - [2014,08,01] ] -mjd0=dblarr(9) -mon=['2013 Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', '2014 Jul'] -for i=0,8 do begin - juldate, date[*,i], rjd ; mjd=rjd-0.5 - mjd0[i]=rjd-0.5 - if i gt 0 then begin - ; plot moon phase (illumination fraction) - jdarr = mjd0[i-1] + findgen( (mjd0[i] - mjd0[i-1]) + 1 ) + 2400000.5 - mphase, jdarr, moon_illu - ; make a shaded patch for the moon phase - image=dblarr(n_elements(jdarr), 110) - for j=0L, 109L do image[*,j]=moon_illu - x_norm=convert_coord(jdarr - 2400000.5, replicate(0.,n_elements(jdarr)), /to_norm) - x_norm=x_norm[0,*] - y_norm=convert_coord([jdarr[0],jdarr[0]], [0,1.1], /to_norm) - y_norm=y_norm[1,*] - pos=[min(x_norm), min(y_norm), max(x_norm), max(y_norm)] - ;message, 'stop' - loadct, 0 ;, bottom=10 ;0 - ;cgimage, image, position=pos, /noerase - ;tvscl, (image), pos[0],pos[1],xsize=pos[2]-pos[0],ysize=pos[3]-pos[1], /norm - loadct, 0 - ;oplot, jdarr - 2400000.5, moon_illu, line=1 - ;xyouts, 0.5*(mjd0[i] + mjd0[i-1]), 1.02, mon[i-1],align=0.5,color=cgcolor('red') - endif - ;oplot, [mjd0[i], mjd0[i]], [0,1.1],line=2,color=cgcolor('cyan') -endfor -jdarr = mjd0[0] + findgen( (mjd0[8] - mjd0[0])/0.1 + 1 )*0.1 + 2400000.5 -mphase, jdarr, moon_illu -image=dblarr(n_elements(jdarr), 110) -for j=0L, 109L do image[*,j]=moon_illu -x_norm=convert_coord(jdarr - 2400000.5, replicate(0.,n_elements(jdarr)), /to_norm) -x_norm=x_norm[0,*] -y_norm=convert_coord([jdarr[0],jdarr[0]], [0,1.1], /to_norm) -y_norm=y_norm[1,*] -pos=[min(x_norm), min(y_norm), max(x_norm), max(y_norm)] -loadct, 0 -tvscl, (image), pos[0],pos[1],xsize=pos[2]-pos[0],ysize=pos[3]-pos[1], /norm -loadct, 0 -oplot, jdarr - 2400000.5, moon_illu, line=1 -for i=0,8 do begin - if i gt 0 then xyouts, 0.5*(mjd0[i] + mjd0[i-1]), 1.02, mon[i-1],align=0.5,color=cgcolor('red') - oplot, [mjd0[i], mjd0[i]], [0,1.1],line=2,color=cgcolor('cyan') -endfor - - -axis, xaxis=0, charsize=charsize, xtickname=['56600', '56650', '56700', '56750', '56800', '56850'], /xsty, xrange=xrange, xtitle='Modified Julian Date [JD - 2400000.5 days]' -date2=[[2013, 12, 10], [2013, 12, 20], $ - [2014, 01, 10], [2014, 01, 20], $ - [2014, 02, 10], [2014, 02, 20], $ - [2014, 03, 10], [2014, 03, 20], $ - [2014, 04, 10], [2014, 04, 20], $ - [2014, 05, 10], [2014, 05, 20], $ - [2014, 06, 10], [2014, 06, 20], $ - [2014, 07, 10], [2014, 07, 20]] -mjd2=dblarr(16) -for i=0,15 do begin - juldate, date2[*,i], rjd - mjd2[i]=rjd-0.5 -endfor -xtickname2=['10','20','10','20','10','20','10','20','10','20','10','20','10','20','10','20'] -axis, xaxis=1, charsize=1, xtickv=mjd2, /xsty, xrange=xrange,xtickname=xtickname2,xticks=17 -xyouts, 0.12,0.902, 'UT date',/norm,charsize=1, color=cgcolor('black') - -; plot boss -nep=n_elements(boss_mjd) -oplot, boss_mjd, replicate(0.1, nep), psym=symcat(2), color=cgcolor('TG2') -xyouts, 56605., 0.1, 'BOSS',charsize=charsize - -; plot bok -ind=where(name eq 'Bok' and obs_g eq 1,nnn) -oplot, mjd[ind], replicate(0.28, nnn), psym=symcat(16,thick=symthick),color=cgcolor('green') -ind=where(name eq 'Bok' and obs_g eq 2, nnn) -oplot, mjd[ind], replicate(0.28, nnn), psym=symcat(9,thick=symthick),color=cgcolor('green') -ind=where(name eq 'Bok' and obs_i eq 1, nnn) -oplot, mjd[ind], replicate(0.32, nnn), psym=symcat(16,thick=symthick),color=cgcolor('red') -ind=where(name eq 'Bok' and obs_i eq 2, nnn) -if nnn gt 0 then oplot, mjd[ind], replicate(0.32, nnn), psym=symcat(9,thick=symthick),color=cgcolor('red') -xyouts, 56605, 0.28, 'Bok',charsize=charsize - -; plot cfht -ind=where(name eq 'CFHT' and obs_g eq 1,nnn) -oplot, mjd[ind], replicate(0.48, nnn), psym=symcat(14,thick=symthick),color=cgcolor('green') -ind=where(name eq 'CFHT' and obs_g eq 2, nnn) -oplot, mjd[ind], replicate(0.48, nnn), psym=symcat(4,thick=symthick),color=cgcolor('green') -ind=where(name eq 'CFHT' and obs_i eq 1, nnn) -oplot, mjd[ind], replicate(0.52, nnn), psym=symcat(14,thick=symthick),color=cgcolor('red') -ind=where(name eq 'CFHT' and obs_i eq 2, nnn) -oplot, mjd[ind], replicate(0.52, nnn), psym=symcat(4,thick=symthick),color=cgcolor('red') -xyouts, 56605, 0.48, 'CFHT',charsize=charsize - -; plot Mayall -ind=where(name eq 'Mayall' and obs_u eq 1,nnn) -oplot, mjd[ind], replicate(0.88, nnn), psym=symcat(17,thick=symthick),color=cgcolor('BLU4') -ind=where(name eq 'Mayall' and obs_u eq 2, nnn) -if nnn gt 0 then oplot, [mjd[ind]], [replicate(0.88, nnn)], psym=symcat(5,thick=symthick),color=cgcolor('BLU4') -ind=where(name eq 'Mayall' and obs_g eq 1,nnn) -oplot, mjd[ind], replicate(0.84, nnn), psym=symcat(17,thick=symthick),color=cgcolor('green') -ind=where(name eq 'Mayall' and obs_g eq 2, nnn) -if nnn gt 0 then oplot, [mjd[ind]], [replicate(0.84, nnn)], psym=symcat(5,thick=symthick),color=cgcolor('green') -ind=where(name eq 'Mayall' and obs_r eq 1,nnn) -oplot, mjd[ind], replicate(0.80, nnn), psym=symcat(17,thick=symthick),color=cgcolor('cyan') -ind=where(name eq 'Mayall' and obs_r eq 2, nnn) -if nnn gt 0 then oplot, [mjd[ind]], [replicate(0.80, nnn)], psym=symcat(5,thick=symthick),color=cgcolor('cyan') -ind=where(name eq 'Mayall' and obs_i eq 1, nnn) -oplot, mjd[ind], replicate(0.76, nnn), psym=symcat(17,thick=symthick),color=cgcolor('red') -ind=where(name eq 'Mayall' and obs_i eq 2, nnn) -if nnn gt 0 then oplot, [mjd[ind]], [replicate(0.76, nnn)], psym=symcat(5,thick=symthick),color=cgcolor('red') -ind=where(name eq 'Mayall' and obs_z eq 1, nnn) -oplot, mjd[ind], replicate(0.72, nnn), psym=symcat(17,thick=symthick),color=cgcolor('magenta') -ind=where(name eq 'Mayall' and obs_z eq 2, nnn) -if nnn gt 0 then oplot, [mjd[ind]], [replicate(0.72, nnn)], psym=symcat(5,thick=symthick),color=cgcolor('magenta') -xyouts, 56605, 0.80, 'Mayall',charsize=charsize - - -xyouts, 56605, 0.95, 'U', charsize=charsize,color=cgcolor('BLU4') -xyouts, 56610, 0.95, 'g', charsize=charsize,color=cgcolor('green') -xyouts, 56614, 0.95, 'r', charsize=charsize,color=cgcolor('cyan') -xyouts, 56617, 0.95, 'i', charsize=charsize,color=cgcolor('red') -xyouts, 56620, 0.95, 'z', charsize=charsize,color=cgcolor('magenta') - -;date=[[2013,12,01], $ -; [2014,01,01], $ -; [2014,02,01], $ -; [2014,03,01], $ -; [2014,04,01], $ -; [2014,05,01], $ -; [2014,06,01], $ -; [2014,07,01], $ -; [2014,08,01] ] -;mjd=dblarr(9) -;mon=['2013 Dec', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'] -;for i=0,8 do begin -; juldate, date[*,i], rjd ; mjd=rjd-0.5 -; mjd[i]=rjd-0.5 -; oplot, [mjd[i], mjd[i]], [0,1.1],line=2 -; if i gt 0 then xyouts, 0.5*(mjd[i] + mjd[i-1]), 1.01, mon[i-1],align=0.5 -;endfor - - - - -endplot - -end diff --git a/pro/rm/plot_oiii_diff_vel.pro b/pro/rm/plot_oiii_diff_vel.pro deleted file mode 100644 index 89f7f336b..000000000 --- a/pro/rm/plot_oiii_diff_vel.pro +++ /dev/null @@ -1,99 +0,0 @@ -; plot the oiii velocity difference from different -; methods of measuring the oiii line - -pro plot_oiii_diff_vel - - file='/data3/yshen/work/lineshifts/lineshift.fits' - - result=mrdfits(file,1) - Rfe=dblarr(n_elements(result)) - 1. - ind=where( (result.Hbeta_br)[3,*] gt 0) - Rfe[ind] = (result.REW_FE_4434_4684)[ind] / (result.Hbeta_br)[3,ind] - - tags=tag_names(result) - cspeed=2.9979246d5 - wave=5008.24D - - figfile='/data3/yshen/work/lineshifts/oiii_diff_vel.ps' - begplot,name=figfile,/color,/landscape - npanel = 4 - charsize=1.2 & len=0.04 - plot_layout, npanel, xypos=xypos, omargin=[0.1, -0.02, 0.98, 0.96], pmargin=[0.15,0.25] - - ; now try v_full_peak - i1 = where(tags eq 'OIII5007C_ERR') ; err in the line - i2 = where(tags eq 'OIII5007_ERR') ; err in the line - j1 = where(tags eq 'OIII5007C' ) - j2 = where(tags eq 'OIII5007' ) - - ind = where( (result.(i1))[0,*] gt 0 and (result.(i2))[0,*] gt 0 $ - and (result.(i1))[2,*] gt 0 and (result.(i1))[2,*] le 1.D/3./alog(10.D) $ ; the line flux is 3sig detection - and (result.(i2))[2,*] gt 0 and (result.(i2))[2,*] le 1.D/3./alog(10.D) ) - vel1 = ( (result[ind].(j1))[0,*] - wave)/wave*cspeed - vel1_err = (result[ind].(i1))[0,*]/wave*cspeed - vel2 = ( (result[ind].(j2))[0,*] - wave)/wave*cspeed - vel2_err = (result[ind].(i2))[0,*]/wave*cspeed - logL=result[ind].logL5100 - yrange=[-60.,60.] - - indd = where(vel1_err gt 0 and vel1_err lt 500. and vel2_err gt 0 and vel2_err lt 500.) - med_err=median(sqrt(vel1_err[indd]^2 + vel2_err[indd]^2)) - xdata=logL[indd] & ydata=(vel2 - vel1)[indd] - plot, xdata, ydata, psym = 2,xtitle=textoidl('logL5100 [erg/s]'), $ - title=textoidl('[OIII]_a-[OIII]_c' +' [km/s]'), pos=xypos[*,0], yrange=yrange,symsize=0.2, $ - xrange=xrange,/xsty, charsize=charsize, noerase=0, xticklen=len, yticklen=len - vmed=median(ydata) - print, vmed - oplot, [41.,46.], replicate(vmed,2), color=cgcolor('red') - - indd = where(vel1_err gt 0 and vel1_err lt 500. and vel2_err gt 0 and vel2_err lt 500. and Rfe[ind] gt -0.1) - med_err=median(sqrt(vel1_err[indd]^2 + vel2_err[indd]^2)) - xdata=Rfe[ind[indd]] & ydata=(vel2 - vel1)[indd] - plot, xdata, ydata, psym = 2,xtitle=textoidl('R_{FeII}'), $ - title=textoidl('[OIII]_a-[OIII]_c' +' [km/s]'), pos=xypos[*,1], yrange=yrange,symsize=0.2, $ - xrange=[-0.1,3],/xsty, charsize=charsize, noerase=1, xticklen=len, yticklen=len - vmed=median(ydata) - print, vmed - oplot, [-1.,5], replicate(vmed,2), color=cgcolor('red') - - ; now try v_cen_50per - i1 = where(tags eq 'OIII5007C_ERR') ; err in the line - i2 = where(tags eq 'OIII5007_ERR') ; err in the line - j1 = where(tags eq 'OIII5007C' ) - j2 = where(tags eq 'OIII5007' ) - - ind = where( (result.(i1))[0,*] gt 0 and (result.(i2))[4,*] gt 0 $ - and (result.(i1))[2,*] gt 0 and (result.(i1))[2,*] le 1.D/3./alog(10.D) $ ; the line flux is 3sig detection - and (result.(i2))[2,*] gt 0 and (result.(i2))[2,*] le 1.D/3./alog(10.D) ) - vel1 = ( (result[ind].(j1))[0,*] - wave)/wave*cspeed - vel1_err = (result[ind].(i1))[0,*]/wave*cspeed - vel2 = ( (result[ind].(j2))[4,*] - wave)/wave*cspeed - vel2_err = (result[ind].(i2))[4,*]/wave*cspeed - logL=result[ind].logL5100 - yrange=[-60.,60.] - - indd = where(vel1_err gt 0 and vel1_err lt 500. and vel2_err gt 0 and vel2_err lt 500.) - med_err=median(sqrt(vel1_err[indd]^2 + vel2_err[indd]^2)) - xdata=logL[indd] & ydata=(vel2 - vel1)[indd] - plot, xdata, ydata, psym = 2,xtitle=textoidl('logL5100 [erg/s]'), $ - title=textoidl('[OIII]_{cent}-[OIII]_c' +' [km/s]'), pos=xypos[*,2], yrange=yrange,symsize=0.2, $ - xrange=xrange,/xsty, charsize=charsize, noerase=1, xticklen=len, yticklen=len - vmed=median(ydata) - print, vmed - oplot, [41.,46.], replicate(vmed,2), color=cgcolor('red') - - indd = where(vel1_err gt 0 and vel1_err lt 500. and vel2_err gt 0 and vel2_err lt 500. and Rfe[ind] gt -0.1) - med_err=median(sqrt(vel1_err[indd]^2 + vel2_err[indd]^2)) - xdata=Rfe[ind[indd]] & ydata=(vel2 - vel1)[indd] - plot, xdata, ydata, psym = 2,xtitle=textoidl('R_{FeII}'), $ - title=textoidl('[OIII]_{cent}-[OIII]_c' +' [km/s]'), pos=xypos[*,3], yrange=yrange,symsize=0.2, $ - xrange=[-0.1,3],/xsty, charsize=charsize, noerase=1, xticklen=len, yticklen=len - vmed=median(ydata) - print, vmed - oplot, [-1.,5], replicate(vmed,2), color=cgcolor('red') - - endplot - cgfixps, figfile - -end - diff --git a/pro/rm/plot_ps1_lc.pro b/pro/rm/plot_ps1_lc.pro deleted file mode 100644 index 2c4831a3e..000000000 --- a/pro/rm/plot_ps1_lc.pro +++ /dev/null @@ -1,43 +0,0 @@ -; plot ps1 LCs - -pro plot_ps1_lc, rmid - - file = '/data3/yshen/work/PS1/yue_all.fits' - ps1 = mrdfits(file,1) - file = '/data3/yshen/ftp/sdssrm/collab/science_data/sample_char/sample_char_refined.fits' - target=mrdfits(file,1) - - spherematch, target[rmid].ra, target[rmid].dec, ps1.ra, ps1.dec, 0.5/3600.D, match0, match1, dist1 - - lc_mjd = ps1[match1].lc_mjd - lc_mag = ps1[match1].lc_mag - lc_err = ps1[match1].lc_err - - output = {mjd:lc_mjd, mag:lc_mag, err:lc_err} - outfile = '/data3/yshen/work/PS1/rmid' + string(rmid, format='(i3.3)') + '_ps1_lc.fits' - mwrfits, output, outfile, /create - - figfile = '/data3/yshen/work/PS1/rmid' + string(rmid, format='(i3.3)') + '.ps' - begplot, name=figfile, /landscape - str='PS1_' + ['g','r', 'i', 'z', 'y'] - - if ~keyword_set(xrange) then xrange=[54900, 56600] - if ~keyword_set(yrange) then yrange=[22.5, 19] - for i=0, 4 do begin - - mjd = lc_mjd[i,*] - mag = lc_mag[i,*] - err = lc_err[i,*] - ind = where(err gt 0 and mag gt 0 and mag lt 30.) - mjd = mjd[ind] - mag = mag[ind] - err = err[ind] - - ploterror, mjd, mag, err, psym=6, xtitle='MJD', ytitle = str[i]+' [mag]', title='RMID'+string(rmid, format='(i3.3)'), $ - xrange=xrange, /xsty, xtickformat='(I0)',/ysty, yrange=yrange - endfor - - endplot - cgfixps, figfile - -end diff --git a/pro/rm/plot_ps1_spitzer_ccf.pro b/pro/rm/plot_ps1_spitzer_ccf.pro deleted file mode 100644 index 842fbbbb9..000000000 --- a/pro/rm/plot_ps1_spitzer_ccf.pro +++ /dev/null @@ -1,134 +0,0 @@ -; make CCF plots of the PS1xSpitzer data - -pro plot_ps1_spitzer_ccf, channel=channel, sp_dir=sp_dir, fig_suffix=fig_suffix, ccf_outdir=ccf_outdir - -file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' -target=mrdfits(file,1) - -file = '/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/spitzer/spitzer_c11-12_raw_lc.fits' -ps1_lc = mrdfits(file,1) - -spherematch, target.ra, target.dec, ps1_lc.ra_1, ps1_lc.dec_1, 0.1/3600.D, match1, match2, dist1 -rmid = match1 -nnn = n_elements(rmid) - -; re-arrange the orders -ps1_lc = ps1_lc[match2] -str = replicate({RMID:-1}, nnn) -str.rmid = rmid -ps1_lc = struct_addtags(ps1_lc, str) -outfile = '/data3/quasar/yshen/work/spitzer/sdss-rm_ps1_lc.fits' -if file_test(outfile) ne 1 then mwrfits, ps1_lc, outfile, /create - -if ~keyword_set(sp_dir) then sp_dir = '/data3/quasar/yshen/work/spitzer/spitzer-sdss-rm2/' ; 2 means 2-year spitzer -if ~keyword_set(channel) then channel=2 -if ~keyword_set(fig_suffix) then fig_suffix = '_ccf2' -figfile='/data3/quasar/yshen/work/spitzer/ps1_spitzer_ch' + string(channel, format='(i0)') + fig_suffix + '.ps' -begplot, name=figfile - -if ~keyword_set(ccf_outdir) then ccf_outdir = '/data3/quasar/yshen/work/spitzer/ccf2/' - -for i=0, nnn-1 do begin - !P.multi = [0,1,3] - charsize=2.5 & ticklen=0.02 - - sp_file = sp_dir + 'sdss-rm-' + string(rmid[i],format='(i3.3)')+'-ch' + string(channel, format='(i0)') + '-161202.txt' - if file_test(sp_file) ne 1 then sp_file = sp_dir + 'sdss-rm-' + string(rmid[i],format='(i3.3)')+'-ch' + string(channel, format='(i0)') + '-161205.txt' - - ccf_outfile = ccf_outdir + 'sdss-rm-' + string(rmid[i],format='(i3.3)') + '_ccf_ch' + string(channel, format='(i0)') - fmt = '(f6.1, " ", f6.2, " ", i3)' - - ;print, sp_file - if file_test(sp_file) eq 1 then begin - openw, lun, ccf_outfile, /get_lun - printf, lun, '# tau ccf ndata' - - mjd_ps1 = ps1_lc[i].lc_mjd_g - mag_ps1 = ps1_lc[i].lc_mag_g - err_ps1 = ps1_lc[i].lc_err_g - ind0 = where(err_ps1 gt 0) - mjd_ps1 = mjd_ps1[ind0] - mag_ps1 = mag_ps1[ind0] - err_ps1 = err_ps1[ind0] - ind0 = sort(mjd_ps1) ; sort the LC (which was not originally sorted) - mjd_ps1 = mjd_ps1[ind0] - mag_ps1 = mag_ps1[ind0] - err_ps1 = err_ps1[ind0] - - ; use the PS1 data as continuum to be interpolated - t_conti = mjd_ps1 - f_conti = 10.D^(-0.4*mag_ps1)*3631d6 ; microJy - e_conti = err_ps1*alog(10.D)/2.5*f_conti - ; reject apparent outliers - tmp = f_conti[sort(f_conti)] - nep_tmp = n_elements(tmp) - tmp = tmp[0.05*nep_tmp:0.95*nep_tmp] - ind_good = where(abs(f_conti - median(f_conti)) le 5.*stddev(tmp) ) - t_conti = t_conti[ind_good] - f_conti = f_conti[ind_good] - e_conti = e_conti[ind_good] - - readcol, sp_file, format='d,d,d', mjd_sp, mag_sp, err_sp - ind0 = sort(mjd_sp) - mjd_sp = mjd_sp[ind0] & mag_sp = mag_sp[ind0] & err_sp = err_sp[ind0] - t_line = mjd_sp - f_line = 10.D^(-0.4*mag_sp)*3631d6 ; microJy - e_line = err_sp*alog(10.D)/2.5*f_line - - ; create a time array - tau_min = min(mjd_sp) - max(mjd_ps1) - tau_max = max(mjd_sp) - min(mjd_ps1) - dt = 10. - ccf_tau = tau_min + findgen((tau_max - tau_min)/dt)*dt - ccf_xrange = [min(ccf_tau), max(ccf_tau)] - - ccf0 = xcorr_interp(t_line,f_line,t_conti,f_conti,tau=ccf_tau,ndata=ndata0 $ - , nogap=0, cent_tau=cent_tau0, peak_tau=peak_tau0 $ - , peak_sig=peak_sig) - print, rmid[i], peak_sig - - title = 'RMID'+string(rmid[i],format='(i3.3)') + ', PS1-g, Spitzer Ch' + string(channel, format='(i0)') - pos = [0.11,0.65,0.95,0.95] - plot,[0],[0],xrange=ccf_xrange,yrange=yrange,xtickname=replicate(' ',10), $ - ytitle='CCF/DCF', $ - pos=pos,charsize=charsize,xticklen=ticklen, title=title - oplot, ccf_tau, ccf0 ; ,color=colors - oplot, [peak_tau0, peak_tau0],[0,1],linestyle=2 - xyouts, 2000, 0.88, textoidl('peak_{sig}=')+string(peak_sig,format='(f0.3)') - - dt4 = dt*2. ; this is the DCF grid - tau_grid = tau_min + findgen((tau_max - tau_min)/dt4)*dt4 - rm_dcf,t_conti,f_conti,t_line,f_line,err1=median(e_conti),err2=median(e_line),$ - DCF=DCF,eDCF=eDCF,tau_grid=tau_grid - ind1 = where(eDCF gt 0) - tmp = where(dcf gt 1) - if tmp[0] ne -1 then print, tau_grid[tmp], dcf[tmp] - if ~keyword_set(noplot) then begin - if ind1[0] ne -1 then begin - oploterror, tau_grid[ind1],dcf[ind1],edcf[ind1],psym=symcat(6),color=cgcolor('red'),$ - errcolor=cgcolor('red') - endif - endif - - nnn=n_elements(ccf_tau) - for ii=0L, nnn-1 do printf, lun, format=fmt, ccf_tau[ii], ccf0[ii], ndata0[ii] - close, lun - free_lun, lun - - pos = [0.11,0.34,0.95,0.64] - plot, ccf_tau, ndata0, xrange=ccf_xrange, ytitle = textoidl('N_{data}'), pos=pos, xtitle='Time Delay (Days)', yrange=[0,50],charsize=charsize - - pos = [0.11, 0.07, 0.95, 0.27] - xrange = [min(t_conti),max(t_line)] - ploterror, t_conti, f_conti, e_conti, psym=5, xtitle='MJD', ytitle='LC (microJy)', xrange=xrange,pos=pos, XTICKFORMAT='(i0)',charsize=charsize, symsize=0.5 - norm1 = median(f_line)/median(f_conti) - oploterror, t_line, f_line/norm1, e_line/norm1, psym=5,color=cgcolor('red'),errcolor=cgcolor('red'),symsize=0.5 - - - !P.multi = 0 - endif - -endfor -endplot - -end diff --git a/pro/rm/plot_rmsavg_line.pro b/pro/rm/plot_rmsavg_line.pro deleted file mode 100644 index f78ea415c..000000000 --- a/pro/rm/plot_rmsavg_line.pro +++ /dev/null @@ -1,36 +0,0 @@ -; plot the MEDIAN avg/rms and rms/avg profiles - -pro plot_rmsavg_line, line=line - -file = '/data3/yshen/work/sdssrm_sample_char/sample_char_final.fits' -tt = mrdfits(file,1) - -minsnr2 = 10. -if line eq 'Hb' then ind = where(tt.rms_ml_frac_hb gt 0 and tt.snr2_hb gt minsnr2) -if line eq 'MgII' then ind=where(tt.rms_ml_frac_mgii gt 0 and tt.snr2_mgii gt minsnr2) -if line eq 'CIV' then ind=where(tt.rms_ml_frac_civ gt 0 and tt.snr2_civ gt minsnr2) - -figfile='/data3/yshen/ftp/sdssrm/collab/prepspec/2014b/' + line + '_AVGRMS.ps' -begplot, name=figfile,/color - -make_rmsavg_line, ind, line=line, result=result -wave = (result[0].wave/result[0].lam0 - 1.)*3d5 - -max = max(result.rms_avg, dim=1) -indd = where(max gt 0 and max lt 5, nobj) - -plot, wave, median(result[indd].avg,dim=2), pos=[0.12, 0.70,0.95, 0.95], title=line+', N='+string(nobj,format='(i0)'), /norm, $ - xtickname = replicate('', 10L) -oplot, [0,0],[0,10],line=1 -xyouts, 0.65, 0.92, 'median AVG', /norm, charsize=charsize -plot, wave, median(result[indd].rms,dim=2), pos=[0.12, 0.40,0.95, 0.65], /norm, /noerase,xtickname = replicate('', 10L) -oplot, [0,0],[0,10],line=1 -xyouts, 0.65, 0.62, 'median RMS', /norm, charsize=charsize -plot, wave, median(result[indd].rms_avg,dim=2), pos=[0.12, 0.1,0.95, 0.35], /norm, /noerase, xtitle='Velocity [km/s]' -oplot, [0,0],[0,10],line=1 -xyouts, 0.65, 0.32, 'median RMS/AVG', /norm, charsize=charsize - - -endplot - -end diff --git a/pro/rm/plot_sky_impro.pro b/pro/rm/plot_sky_impro.pro deleted file mode 100644 index 73a4f2b15..000000000 --- a/pro/rm/plot_sky_impro.pro +++ /dev/null @@ -1,68 +0,0 @@ -;PURPOSE: -; plot comparison of spectra before and after the WH05 improved sky subtraction - -pro plot_sky_impro,plate,mjd,rmid=rmid, psplot=psplot - - ; get the master file - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - - if n_elements(rmid) eq 0 then rmid=0 - target=fibermap[rmid] ; this contains target info - - if plate ne 0 then begin ; this is a single epoch - plate_list=target.plate - mjd_list=target.mjd - fiber_list=target.fiberid - ind=where(plate_list eq plate and mjd_list eq mjd) - fiber=fiber_list[ind] - endif else fiber=rmid+1 ; this is the coadded plate - - ;read in spectra - if plate ne 0 then $ - rm_readspec, plate,fiber,mjd=mjd, calibdir='recalib/',wave=wave,flux=flux,flerr=err else $ - rm_readspec, plate,fiber,mjd=mjd, calibdir='',wave=wave,flux=flux,flerr=err - rm_readspec, plate,fiber,mjd=mjd, calibdir='wh_skysub/',wave=wave1,flux=flux1,flerr=err1 - minflux=min(flux1[where(wave gt 3800 and wave le 10000)]) - maxflux=max(flux1[where(wave gt 3800 and wave le 10000)]) - med_sn1=median(flux1/err1) - - yrange=[-2, maxflux*1.2] - - ; get sky pixels - skymask=rm_skymask(wave) - - ; now plot the figure - ang=textoidl('\AA') - if keyword_set(psplot) then begin - figfile=getenv('IDLRM_DIR') + '/misc/wh_skysub_rmID_'+string(rmid,format='(i3.3)')+'.eps' - begplot, name=figfile, /color,/encap,/cmyk,xsize=8,ysize=8 - ang=string(197B) - thick=3. - endif - - pos=[0.1,0.55,0.95,0.98] - plot, wave,flux,xrange=[3600,10300],yrange=yrange,/xsty, /ysty, $ - pos=pos, xtickname=replicate(' ', 10L),thick=thick - oplot, wave, err, color=cgcolor('red'),thick=thick - xyouts, 0.15, 0.93, 'original spectrum',/norm - ;xyouts, 0.15, 0.93, 'RMID='+string(rmid,format='(i0)'),/norm - pstr=string(plate,format='(i4.4)')+'-'+string(fiber,format='(i4.4)')+'-'+string(mjd,format='(i5.5)') - xyouts, 0.4, 0.93, pstr,/norm - xyouts, 0.8, 0.93, 'i='+string(target.psfmag[3],format='(f6.3)'),/norm - ind=where(skymask eq 0, nnn) - oplot, wave[ind], replicate(0.5*yrange[1], nnn), psym=symcat(5),color=cgcolor('cyan'),symsize=0.1 - - pos=[0.1,0.1,0.95,0.53] - plot, wave1,flux1,xrange=[3600,10300],yrange=yrange,xtitle=textoidl('Wavelength [')+ang+']', $ - /noerase, pos=pos, /xsty, /ysty,thick=thick - oplot, wave1, err1, color=cgcolor('red'),thick=thick - xyouts, 0.03, 0.5, align=0.5, /norm, orient=90, textoidl('f_{\lambda} [10^{-17}erg s^{-1}cm^{-2}')+ang+textoidl('^{-1}')+']' - xyouts, 0.15, 0.48, 'improved sky subtraction', /norm - xyouts, 0.60, 0.48, 'median S/N/pixel='+string(med_SN1,format='(i0)'),/norm - - if keyword_set(psplot) then begin - endplot - endif - -end diff --git a/pro/rm/plot_sn_rm.pro b/pro/rm/plot_sn_rm.pro deleted file mode 100644 index fd10cf2d3..000000000 --- a/pro/rm/plot_sn_rm.pro +++ /dev/null @@ -1,31 +0,0 @@ -; plot the S/N/pix as functions of mags - -pro plot_sn_rm - - - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - - imag=(target.psfmag)[3,0:848] - imag=reform(imag) - - - ; get per epoch median S/N - med_sn_ep = (target.med_SN)[*,0:848] - ; get coadded median S/N - fiber=indgen(849)+1 - rm_readspec, 0, fiber,mjd=56837,flux=flux,invvar=ivar - sn = flux*sqrt(ivar) - med_sn_coadd = median(sn, dim=1) - - fig=getenv('IDLRM_DIR')+'/misc/sn_plot.eps' - begplot,name=fig,/color,xsize=6,ysize=5,/encap - imag_more=fltarr(32, 849) - for i=0L, 31 do imag_more[i,*]=imag - - plot, imag_more, med_sn_ep, psym=3,xtitle='SDSS i', ytitle=textoidl('Median S/N per pixel'), $ - pos=[0.15,0.12,0.95,0.95],yrange=[1,300],/ysty,/ylog - oplot, imag, med_sn_coadd, psym=symcat(9),symsize=0.5,color=cgcolor('red') - - endplot -end diff --git a/pro/rm/plot_specfit_sntest.pro b/pro/rm/plot_specfit_sntest.pro deleted file mode 100644 index 0f1d60517..000000000 --- a/pro/rm/plot_specfit_sntest.pro +++ /dev/null @@ -1,167 +0,0 @@ -; test the SN dependence of spectra measurements -; using artifically downgraded spectra - -;---------------------------- -pro plot_specfit_sntest, figfile=figfile, name=name, flag_norm=flag_norm, $ - civ3_errdir=civ3_errdir - -; name='peak', 'fwhm' or 'ew' -if n_elements(name) eq 0 then name='peak' - -; flag_norm=1 (normalized by measurement error); flag_norm=2 (normalized by original measurements) -if n_elements(flag_norm) eq 0 then flag_norm=1 - -if ~keyword_set(figfile) then begin - if name eq 'peak' then begin - indname=0 ; index in the best-fit line properties - endif - if name eq 'fwhm' then begin - indname=1 - endif - if name eq 'ew' then indname=3 -endif -figfile='/data3/yshen/work/sdssrm_sample_char/figs/sntest_' + name + '.eps' - -begplot,name=figfile,/color,/landscape -ang = string(197B) -cspeed=2.9979246d5 - -; this is the original fitting results -file='/data3/yshen/work/lineshifts/lineshift.fits' -result0=mrdfits(file,1,/silent) -; replace CIV measurements with the 3-gaussian fit -file_civ3 = '/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/civ_3gauss/qso_prop-0000-56837.fits' -tmp = mrdfits(file_civ3, 1, /silent) -result0.CIV = tmp.civ & result0.civ_err = tmp.civ_err -result0.civ_br = tmp.civ_br & result0.civ_br_err = tmp.civ_br_err -result0.HEII1640 = tmp.HEII1640 & result0.HEII1640_ERR = tmp.HEII1640_ERR -result0.heII1640_br = tmp.heII1640_br & result0.heII1640_br_err = tmp.heII1640_br_err - -tags0=tag_names(result0) - -if ~keyword_set(errdir) then errdir = '/data3/yshen/work/lineshifts/lineshift_err_scal_' - -charsize=0.8 -; if n_elements(hist) eq 0 then hist=1 -histpeak=0.3 & histbin=0.1 & len=0.04 & thick=2 - -;line=['Hbeta_br', 'OIII5007', 'CaII3934', 'OII3728', 'NeV3426', 'MgII', 'CIII', 'HeII1640', 'CIV_br', 'SIIV_OIV'] -;line=strupcase(line) -;linetag=textoidl(['H\beta_{br}', '[OIII]_a', 'CaII', '[OII]', '[NeV]', 'MgII', 'CIII]_a', 'HeII1640', 'CIV', 'SiIV']) -;wave=[4862.68, 5008.24, 3934.78, 3728.48, 3426.84, 2798.75, 1908.73,1640.42, 1549.06, (1396.76 + 1402.06)*0.5] - -; my EW measurements do not include the 3 locally fitted lines 'CaII3934', 'OII3728', 'NeV3426' -line=['Hbeta_br', 'OIII5007', 'MgII', 'CIII', 'HeII1640', 'CIV_br', 'SIIV_OIV'] -line=strupcase(line) -linetag=textoidl(['H\beta_{br}', '[OIII]_a', 'MgII', 'CIII]_a', 'HeII1640', 'CIV', 'SiIV']) -wave=[4862.68, 5008.24, 2798.75, 1908.73,1640.42, 1549.06, (1396.76 + 1402.06)*0.5] - -err_scal_arr=[2.,4.,6.,8.,10.] -;medsn=27.2434/err_scal_arr - -; get the medsn for all 849 objects -rm_readspec, 0, mjd=56837, flux=fluxall, invvar=ivar_all -medsn_all = median(fluxall*sqrt(ivar_all), dim=1) -medsn_all=medsn_all[0:848] - -nerr=n_elements(err_scal_arr) -; set up plot layout -npanel = n_elements(line) -plot_layout, npanel, xypos=xypos, omargin=[0.06, 0.01, 0.98, 0.96], pmargin=[0.05,0.1] -colors=cgcolor(['black', 'blue', 'cyan', 'magenta', 'red']) -if flag_norm eq 1 then begin - xrange=[-5,5] & bsize=0.2 -endif -if flag_norm eq 2 then begin - xrange=[-1, 0.5] & bsize=0.05 -endif -xgrid=-5. + findgen(101)*0.1 -for i=0L, npanel - 1 do begin - if i eq 0 then noerase=0 else noerase=1 - title=linetag[i] - pos = xypos[*, i] - for j=0, nerr-1 do begin - file=errdir+ string(err_scal_arr[j],format='(f0.1)') + '.fits' - result1=mrdfits(file,1,/silent) - ; replace CIV measurements with the 3gauss fit - file_civ3 = '/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/civ_3gauss/err_scal_'+ string(err_scal_arr[j],format='(f0.1)') + '/qso_prop-0000-56837.fits' - tmp = mrdfits(file_civ3,1,/silent) - ;result1.CIV = tmp.civ & result1.civ_err = tmp.civ_err - result1.civ_br = tmp.civ & result1.civ_br_err = tmp.civ_err - result1.HEII1640 = tmp.HEII1640 & result1.HEII1640_ERR = tmp.HEII1640_ERR - ;result1.heII1640_br = tmp.heII1640_br & result1.heII1640_br_err = tmp.heII1640_br_err - tags1=tag_names(result1) - - ind0=where(tags0 eq line[i],nn0) & inderr_0=where(tags0 eq line[i]+'_ERR') - ind1=where(tags1 eq line[i],nn1) & inderr_1=where(tags1 eq line[i]+'_ERR') - if nn0 eq 1 and nn1 eq 1 then begin - - wav0=(result0.(ind0))[indname,*] & err0=(result0.(inderr_0))[indname,*] - wav1=(result1.(ind1))[indname,*] & err1=(result1.(inderr_1))[indname,*] - indd = where(err0 gt 0 and err1 gt 0, ntot) - if indd[0] ne -1 then begin - - err_tot=sqrt( err0[indd]^2 + err1[indd]^2 ) - if flag_norm eq 1 then dif = (wav1[indd] - wav0[indd])/err_tot - if flag_norm eq 2 then dif = (wav1[indd] - wav0[indd])/wav0[indd] - ind_use = where(abs(dif) lt 1d3) - dif = dif[ind_use] - if j eq 0 then plothist, dif, bin=bsize, pos=pos, noerase=noerase, xticklen=len, yticklen=len, $ - title=title+' '+textoidl('N_{tot}=')+string(ntot,format='(i0)'), $ - color=colors[j], xrange=xrange, charsize=charsize,xhist,yhist,thick=thick,/xsty $ - else plothist, dif, bin=bsize,/over,color=colors[j], thick=thick, xhist, yhist - oplot, [median(dif), median(dif)], [0,ntot], color=colors[j], thick=thick, line=2 - - area=int_tabulated(xhist,double(yhist),/double) - ;oplot, xgrid, gauss1(xgrid, [0, 1, area]), color=cgcolor('dark gray') - - - if j eq 0 then begin - xyouts, pos[0]+0.01, pos[3]-0.03, textoidl(''),charsize=charsize,/norm - if name ne 'ew' then $ - xyouts, pos[2]-0.09, pos[3]-0.03, textoidl('<\sigma_{mea}> [kms^{-1}]'),charsize=charsize,/norm $ - else $ - xyouts, pos[2]-0.09, pos[3]-0.03, textoidl('<\sigma_{mea}> [')+ang+']',charsize=charsize,/norm - endif - medsn = median(medsn_all[indd])/err_scal_arr[j] - xyouts, pos[0]+0.01, pos[3]-0.02*j-0.05, string(medsn,format='(f0.1)'),/norm, color=colors[j],charsize=charsize - if name eq 'peak' then begin - sig_mea_tot=median(err_tot)/wave[i]*cspeed - sig_mea0=median(err0[indd])/wave[i]*cspeed - sig_mea1=median(err1[indd])/wave[i]*cspeed - endif - if name eq 'fwhm' or name eq 'ew' then begin - sig_mea_tot=median(err_tot) - sig_mea0=median(err0[indd]) - sig_mea1=median(err1[indd]) - endif - - print, title, ' ', string(medsn,format='(f0.1)'), median(dif), ' ntot=',ntot - print, sig_mea_tot, sig_mea0, sig_mea1 - if name ne 'ew' then $ - xyouts, pos[2]-0.05, pos[3]-0.02*j-0.05, string(round(sig_mea1),format='(i0)'),/norm, color=colors[j],charsize=charsize $ - else xyouts, pos[2]-0.05, pos[3]-0.02*j-0.05, string(sig_mea1,format='(f0.1)'),/norm, color=colors[j],charsize=charsize - - if j eq 0 and flag_norm eq 1 then $ - oplot, xgrid, gauss1(xgrid, [0, 1, ntot*bsize]), color=cgcolor('dark gray'),thick=6 ; this should be almost identical to the dark gray lines - endif - endif - endfor - -endfor -if name eq 'peak' then xname=textoidl('Normalized Peak Velocity Difference [\sigma]') -if name eq 'fwhm' then begin - if flag_norm eq 1 then xname=textoidl('Normalized FWHM Difference [\sigma]') - if flag_norm eq 2 then xname=textoidl('\DeltaFWHM/FWHM') -endif -if name eq 'ew' then xname=textoidl('Normalized REW Difference [\sigma]') -xyouts, 0.5, 0.01, xname, /norm, align=0.5 -xyouts, 0.02, 0.5, textoidl('N_{obj}'), /norm, align=0.5, orient=90 - -endplot -cgfixps, figfile - - -end - - diff --git a/pro/rm/plot_specfit_sntest.pro.old b/pro/rm/plot_specfit_sntest.pro.old deleted file mode 100644 index 483571e35..000000000 --- a/pro/rm/plot_specfit_sntest.pro.old +++ /dev/null @@ -1,137 +0,0 @@ -; test the SN dependence of spectral measurements -; using artifically downgraded spectra - -pro plot_specfit_sntest, figfile=figfile, name=name, flag_norm=flag_norm, origfits=origfits, $ - errdir=errdir - -; name='peak', 'fwhm' or 'ew' -if n_elements(name) eq 0 then name='peak' - -; flag_norm=1 (normalized by measurement error); flag_norm=2 (normalized by original measurements) -if n_elements(flag_norm) eq 0 then flag_norm=1 - -if ~keyword_set(figfile) then begin - if name eq 'peak' then begin - indname=0 ; index in the best-fit line properties - endif - if name eq 'fwhm' then begin - indname=1 - endif -endif -figfile='/data3/yshen/work/sdssrm_sample_char/figs/sntest_' + name + '.eps' - -begplot,name=figfile,/color,/landscape - -cspeed=2.9979246d5 - -; this is the original fitting results -if ~keyword_set(origfits) then file='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/civ_3gauss/qso_prop-0000-56837.fits' $ - else file=origfits -result0=mrdfits(file,1,/silent) -tags0=tag_names(result0) - -if ~keyword_set(errdir) then errdir = '/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/civ_3gauss/err_scal_' - -charsize=0.8 -; if n_elements(hist) eq 0 then hist=1 -histpeak=0.3 & histbin=0.1 & len=0.04 & thick=2 - -line=['Hbeta_br', 'OIII5007', 'CaII3934', 'OII3728', 'NeV3426', 'MgII', 'CIII', 'HeII1640', 'CIV_br', 'SIIV_OIV'] -line=strupcase(line) -linetag=textoidl(['H\beta_{br}', '[OIII]_a', 'CaII', '[OII]', '[NeV]', 'MgII', 'CIII]_a', 'HeII', 'CIV', 'SiIV']) -wave=[4862.68, 5008.24, 3934.78, 3728.48, 3426.84, 2798.75, 1908.73,1640.42, 1549.06, (1396.76 + 1402.06)*0.5] - -err_scal_arr=[2.,4.,6.,8.,10.] -;medsn=27.2434/err_scal_arr - -; get the medsn for all 849 objects -rm_readspec, 0, mjd=56837, flux=fluxall, invvar=ivar_all -medsn_all = median(fluxall*sqrt(ivar_all), dim=1) -medsn_all=medsn_all[0:848] - -nerr=n_elements(err_scal_arr) -; set up plot layout -npanel = n_elements(line) -plot_layout, npanel, xypos=xypos, omargin=[0.06, 0.01, 0.98, 0.96], pmargin=[0.05,0.1] -colors=cgcolor(['black', 'blue', 'cyan', 'magenta', 'red']) -if flag_norm eq 1 then begin - xrange=[-5,5] & bsize=0.2 -endif -if flag_norm eq 2 then begin - xrange=[-1, 0.5] & bsize=0.05 -endif -xgrid=-5. + findgen(101)*0.1 -for i=0L, npanel - 1 do begin - if i eq 0 then noerase=0 else noerase=1 - title=linetag[i] - pos = xypos[*, i] - for j=0, nerr-1 do begin - file=errdir+ string(err_scal_arr[j],format='(f0.1)') + '/qso_prop-0000-56837.fits' - result1=mrdfits(file,1,/silent) - tags1=tag_names(result1) - - ind0=where(tags0 eq line[i],nn0) & inderr_0=where(tags0 eq line[i]+'_ERR') - ind1=where(tags1 eq line[i],nn1) & inderr_1=where(tags1 eq line[i]+'_ERR') - if nn0 eq 1 and nn1 eq 1 then begin - - wav0=(result0.(ind0))[indname,*] & err0=(result0.(inderr_0))[indname,*] - wav1=(result1.(ind1))[indname,*] & err1=(result1.(inderr_1))[indname,*] - indd = where(err0 gt 0 and err1 gt 0, ntot) - if indd[0] ne -1 then begin - - err_tot=sqrt( err0[indd]^2 + err1[indd]^2 ) - if flag_norm eq 1 then dif = (wav1[indd] - wav0[indd])/err_tot - if flag_norm eq 2 then dif = (wav1[indd] - wav0[indd])/wav0[indd] - if j eq 0 then plothist, dif, bin=bsize, pos=pos, noerase=noerase, xticklen=len, yticklen=len, $ - title=title+' '+textoidl('N_{tot}=')+string(ntot,format='(i0)'), $ - color=colors[j], xrange=xrange, charsize=charsize,xhist,yhist,thick=thick,/xsty $ - else plothist, dif, bin=bsize,/over,color=colors[j], thick=thick, xhist, yhist - oplot, [median(dif), median(dif)], [0,ntot], color=colors[j], thick=thick, line=2 - - area=int_tabulated(xhist,double(yhist),/double) - ;oplot, xgrid, gauss1(xgrid, [0, 1, area]), color=cgcolor('dark gray') - - - if j eq 0 then begin - xyouts, pos[0]+0.01, pos[3]-0.03, textoidl(''),charsize=charsize,/norm - xyouts, pos[2]-0.09, pos[3]-0.03, textoidl('<\sigma_{mea}> [kms^{-1}]'),charsize=charsize,/norm - endif - medsn = median(medsn_all[indd])/err_scal_arr[j] - xyouts, pos[0]+0.01, pos[3]-0.02*j-0.05, string(medsn,format='(f0.1)'),/norm, color=colors[j],charsize=charsize - if name eq 'peak' then begin - sig_mea_tot=median(err_tot)/wave[i]*cspeed - sig_mea0=median(err0[indd])/wave[i]*cspeed - sig_mea1=median(err1[indd])/wave[i]*cspeed - endif - if name eq 'fwhm' then begin - sig_mea_tot=median(err_tot) - sig_mea0=median(err0[indd]) - sig_mea1=median(err1[indd]) - endif - - print, title, ' ', string(medsn,format='(f0.1)'), median(dif), ' ntot=',ntot - print, sig_mea_tot, sig_mea0, sig_mea1 - xyouts, pos[2]-0.05, pos[3]-0.02*j-0.05, string(round(sig_mea1),format='(i0)'),/norm, color=colors[j],charsize=charsize - - if j eq 0 and flag_norm eq 1 then $ - oplot, xgrid, gauss1(xgrid, [0, 1, ntot*bsize]), color=cgcolor('dark gray'),thick=6 ; this should be almost identical to the dark gray lines - endif - endif - endfor - -endfor -if name eq 'peak' then xname=textoidl('Normalized Peak Velocity Difference [\sigma]') -if name eq 'fwhm' then begin - if flag_norm eq 1 then xname=textoidl('Normalized FWHM Difference [\sigma]') - if flag_norm eq 2 then xname=textoidl('\DeltaFWHM/FWHM') -endif -xyouts, 0.5, 0.01, xname, /norm, align=0.5 -xyouts, 0.02, 0.5, textoidl('N_{obj}'), /norm, align=0.5, orient=90 - -endplot -cgfixps, figfile - - -end - - diff --git a/pro/rm/plot_tau_var_plane.pro b/pro/rm/plot_tau_var_plane.pro deleted file mode 100644 index df9ddb150..000000000 --- a/pro/rm/plot_tau_var_plane.pro +++ /dev/null @@ -1,47 +0,0 @@ -; follow Keith's suggestion to plot tau against line chi^2 -; highlight those with peak sig>0.99, and the 14 "detections" - -pro plot_tau_var_plane - -file='/data3/quasar/yshen/work/lags/prepspec/output/first_100_obj' -readcol,file,format='l,a,d,d,x,x,d',rmid,line,chi2,lag,peak_sig - - -figfile='/data3/quasar/yshen/work/lags/prepspec/output/tau_var.eps' -begplot,name=figfile,/encap,/color,xsize=6,ysize=4 - -syms=[5,9,16] -syms2=[17,16] -ind=where(line eq 'hb') -indd=where(line eq 'hb' and peak_sig gt 0.99) -pos=[0.15, 0.17,0.95,0.98] -plot,lag[ind], chi2[ind], /ylog, xtitle=textoidl('\tau_{obs}'), ytitle=textoidl('line \chi^2') $ - , psym=symcat(syms[0]),pos=pos,ytickname=textoidl(['10','100','10^3','10^4']) -oplot, lag[indd],chi2[indd],psym=symcat(syms[0]),color=cgcolor('red') - -ind=where(line eq 'mg2') -indd=where(line eq 'mg2' and peak_sig gt 0.99) -oplot,lag[ind], chi2[ind],psym=symcat(syms[1]) -oplot, lag[indd], chi2[indd],psym=symcat(syms[1]),color=cgcolor('red') - -items=['Hbeta','MgII'] -legend, pos=[0.2, 0.94], items[0],/norm, box=0,psym=symcat(syms[0]) -legend, pos=[0.2, 0.89], items[1],/norm, box=0,psym=symcat(syms[1]) - -; now overplot the 14 "detections" -id=[775,797,272,320,252,377,160,101,229,767,694,519,457,140] -line_d=['hb','hb','hb','hb','hb','hb','hb','mg2','mg2','mg2','hb','hb','mg2','mg2'] - -nnn=n_elements(id) -for i=0,nnn-1 do begin - ind=where(rmid eq id[i] and line eq line_d[i]) - if line_d[i] eq 'hb' then symind=0 - if line_d[i] eq 'mg2' then symind=1 - oplot,lag[ind], chi2[ind],psym=symcat(syms2[symind]) - -endfor - - -endplot - -end diff --git a/pro/rm/plot_vel_shift.pro b/pro/rm/plot_vel_shift.pro deleted file mode 100644 index d7331c1ac..000000000 --- a/pro/rm/plot_vel_shift.pro +++ /dev/null @@ -1,308 +0,0 @@ -; plot the velocity shifts among different lines - -pro plot_vel_shift, hist=hist, fitfile=fitfile, figfile=figfile - -if ~keyword_set(fitfile) then begin - ;file='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/qso_prop-0000-56837_lineshift.fits' - ;file='/data3/yshen/work/lineshifts/lineshift.fits' - file='/data3/yshen/work/lineshifts/lineshift_outlierfix.fits' ; this fixes the one [oii] vel outlier -endif else file=fitfile - -result=mrdfits(file,1) -cspeed=2.9979246d5 -tags=tag_names(result) - -; make a structure to store all the peak vel measurements -nobj=n_elements(result) -output={RMID:0L, z:0.D, logL1350:[0.D, -1.D], logL1700:[0.D, -1.D],logL3000:[0.D, -1.D],logL5100:[0.D, -1.D], $ - Hbeta_br:[0.D, -1.D], OIII5008c:[0.D, -1.D], OIII5008a:[0.D, -1.D], CaII3934:[0.D, -1.D], OII3728:[0.D, -1.D], $ - NeV3426:[0.D, -1.D], MgII:[0.D, -1.D], CIII:[0.D, -1.D], CIIIa:[0.D, -1.D], HeII1640:[0.D, -1.D], CIV:[0.D, -1.D], $ - SiIV:[0.D, -1.D]} -output=replicate(output, nobj) -line_out=['Hbeta_br', 'OIII5007c', 'OIII5007', 'CaII3934', 'OII3728', 'NeV3426', 'MgII', 'CIII_br', 'CIII', 'HeII1640', 'CIV_br', 'SIIV_OIV'] -line_out=strupcase(line_out) -wave_out=[4862.68, 5008.24, 5008.24, 3934.78, 3728.48, 3426.84, 2798.75, 1908.73, 1908.73, 1640.42, 1549.06, (1396.76 + 1402.06)*0.5] -; now compile the peak vel shifts -for ii=0L, n_elements(line_out) - 1 do begin - i1 = where(tags eq line_out[ii] + '_ERR') ; err in the line - j1 = where(tags eq line_out[ii] ) - - ind = where( (result.(i1))[0,*] gt 0 and (result.(i1))[2,*] gt 0 and (result.(i1))[2,*] le 1.D/3./alog(10.D)) - ;the line flux is 3sig detection - - wave1=wave_out[ii] - ;vel1=0.*(result.(j1))[0,*] & vel1_err=0.*(result.(j1))[0,*] - 1.D - vel1 = ( (result[ind].(j1))[0,*] - wave1)/wave1*cspeed - vel1_err = (result[ind].(i1))[0,*]/wave1*cspeed - - print, (tag_names(output))[ii+6], " ", line_out[ii], " ", wave_out[ii] - output[ind].(ii+6) = [vel1, vel1_err] - - ;message, 'stop' - -endfor -output.RMID=result.RM_ID & output.z=result.z -for ii=0, nobj - 1 do begin - output[ii].logL1350=[result[ii].logL1350, result[ii].logL1350_err] - output[ii].logL1700=[result[ii].logL1700, result[ii].logL1700_err] - output[ii].logL3000=[result[ii].logL3000, result[ii].logL3000_err] - output[ii].logL5100=[result[ii].logL5100, result[ii].logL5100_err] -endfor -outfile='/data3/yshen/work/lineshifts/peak_vel_cat.fits' -mwrfits, output, outfile, /create - -if ~keyword_set(figfile) then figfile='/data3/yshen/work/lineshifts/vel_shift.eps' -;'/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/vel_shift.ps' -begplot,name=figfile,/color,/landscape - -charsize=0.8 - -; if n_elements(hist) eq 0 then hist=1 -histpeak=0.3 & histbin=0.1 & len=0.04 - -line=['Hbeta_br', 'OIII5007c', 'CaII3934', 'OII3728', 'NeV3426', 'MgII', 'CIII_br', 'CIII', 'HeII1640', 'CIV_br', 'OIII5007', 'SIIV_OIV', 'LYA_BR','SIIII1892','ALIII1857'] - -line=strupcase(line) -linetag=textoidl(['H\beta_{br}', '[OIII]_c', 'CaII', '[OII]', '[NeV]', 'MgII', 'CIII]', 'CIII]_a', 'HeII', 'CIV', '[OIII]_a', 'SiIV', 'Ly\alpha','SIIII1892','ALIII1857']) -wave=[4862.68, 5008.24, 3934.78, 3728.48, 3426.84, 2798.75, 1908.73, 1908.73, 1640.42, 1549.06, 5008.24, (1396.76 + 1402.06)*0.5, 1215.67] -;(1396.76 + 1402.06)*0.5 - -; print how many objects were fit for each line -file1='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/qso_prop-0000-56837_lineshift.fits' -result_tt=mrdfits(file1,1) -tags_tt=tag_names(result_tt) -line_tt=['SIIII1892', 'ALIII1857'] -for ii=0L, n_elements(line_tt) - 1 do begin - i1=where(tags_tt eq line_tt[ii] + '_ERR') - j1=where(tags_tt eq line_tt[ii]) - ind_tmp=where( (result_tt.(i1))[0,*] gt 0 and (result_tt.(j1))[0,*] gt 0, ntmp) - print, line_tt[ii], ntmp -endfor - -pair = [ [2, 0] , $ ; broad Hbeta-CaII - [2, 1] , $ ; OIII-CaII - [2,10] , $ ; OIII_a - CaII - [2, 3] , $ ; OII-CaII - [2, 4] , $ ; NeV-OII - [3, 5] , $ ; MgII-OII - [3, 6] , $ ; CIII-OII - [3, 7] , $ ; CIII_all-OII - [3, 8] , $ ; HeII-OII - [8, 9] , $ ; CIV-HeII - [5, 9] , $ ; CIV-MgII - [5 ,11] ] ; $ ; SiIV/OIV-MgII -; [5, 12] ] ; Lya-MgII -lum=['logL5100', 'logL5100', 'logL5100', 'logL3000','logL3000', 'logL3000', 'logL1700', 'logL1700', 'logL1700', 'logL1700', 'logL1700', 'logL1700','logL1700'] -lum_ref=[44.,44.,44.,44.5,44.5,44.5,45.,45.,45.,45.,45.,45.] -; lum=strupcase(lum) - -; set up plot layout -npanel = (size(pair))[2] -plot_layout, npanel, xypos=xypos, omargin=[0.06, 0.01, 0.98, 0.96], pmargin=[0.05,0.12] -for i=0L, npanel - 1 do begin - - if i eq 0 then noerase=0 else noerase=1 - pos = xypos[*, i] - i1 = where(tags eq line[pair[0,i]] + '_ERR') ; err in the line - i2 = where(tags eq line[pair[1,i]] + '_ERR') ; err in the line - j1 = where(tags eq line[pair[0,i]] ) - j2 = where(tags eq line[pair[1,i]] ) - - ind = where( (result.(i1))[0,*] gt 0 and (result.(i2))[0,*] gt 0 $ - and (result.(i1))[2,*] gt 0 and (result.(i1))[2,*] le 1.D/3./alog(10.D) $ ; the line flux is 3sig detection - and (result.(i2))[2,*] gt 0 and (result.(i2))[2,*] le 1.D/3./alog(10.D) ) - jj=where( tags eq strupcase(lum[i])) - if lum[i] eq 'logL5100' then xrange=[43, 45] - if lum[i] eq 'logL3000' then xrange=[43.5,46] - if lum[i] eq 'logL1700' then xrange=[44,46.5] - - logL=result[ind].(jj) - wave1=wave[pair[0,i]] & wave2=wave[pair[1,i]] - vel1 = ( (result[ind].(j1))[0,*] - wave1)/wave1*cspeed - vel1_err = (result[ind].(i1))[0,*]/wave1*cspeed - vel2 = ( (result[ind].(j2))[0,*] - wave2)/wave2*cspeed - vel2_err = (result[ind].(i2))[0,*]/wave2*cspeed - ; default vel error tolerance is 500 km/s - indd = where(vel1_err gt 0 and vel1_err lt 500. and vel2_err gt 0 and vel2_err lt 500.) - ;indd = where(vel1_err gt 0 and vel1_err lt 50. and vel2_err gt 0 and vel2_err lt 50.) - tmp_arr = (vel2 - vel1)[where(vel1_err gt 0 and vel1_err lt 500. and vel2_err gt 0 and vel2_err lt 500.)] - tmp_med = median(tmp_arr) - tmp_std = stddev(tmp_arr) - tmp_std2 = 0.5*(quantile_1d(0.84, tmp_arr) - quantile_1d(0.16, tmp_arr)) - ; print, tmp_med, tmp_std - ;indd = where(vel1_err gt 0 and vel1_err lt 500. and vel2_err gt 0 and vel2_err lt 500. and abs(vel2 - vel1 - tmp_med) le 3.*tmp_std2 ) - med_err=median(sqrt(vel1_err[indd]^2 + vel2_err[indd]^2)) - err16 = quantile_1d(0.16, sqrt(vel1_err[indd]^2 + vel2_err[indd]^2)) - err84 = quantile_1d(0.84, sqrt(vel1_err[indd]^2 + vel2_err[indd]^2)) - xdata=logL[indd] & ydata=(vel2 - vel1)[indd]/1000. - per16=quantile_1d(0.16, ydata) & per84=quantile_1d(0.84, ydata) - per1_x=quantile_1d(0.01, xdata) & per99_x=quantile_1d(0.99, xdata) - print, 'per1 logl=', per1_x - - vmed=median(ydata) ; vscat=sqrt( (stddev(ydata))^2 - (med_err/1000.)^2) - ; calc vscat in a crude way - vscat=0.5*(per84 - per16) - ;print, vscat - vscat=sqrt(vscat^2 - (med_err/1000.D)^2 ) - - nobj=n_elements(ydata) - - ; here we remove a few objects with logl=0 - ; note that Fig. 1 in the paper was incorrectly produced w/o this cut, but the results are nevertheless consistent - ind_nonzero = where(xdata gt 0) - xdata = xdata[ind_nonzero] & ydata = ydata[ind_nonzero] - - nobj2=n_elements(ydata) - - ind_tmp=where(ydata ge per16 and ydata le per84) - ;yrange=round(max( abs(ydata[ind_tmp]) ) * [-1,1]*10)/10. - yrange=[-1., 1.] - - title=textoidl(linetag[pair[1,i]] + '-' +linetag[pair[0,i]]) - plot, xdata, ydata, psym = 2,xtitle=textoidl(lum[i] + ' [erg/s]'), $ - title=title, pos=pos, yrange=yrange,symsize=0.2, $ - xrange=xrange,/xsty, charsize=charsize, noerase=noerase, xticklen=len, yticklen=len - oplot, xrange,[0,0], line=2 - - ;plot a moving average - ; in the paper, Fig. 1 was produced with nmin=2 - moving_average, xdata, ydata, xbin=0.35, xmin=per1_x, xmax=per99_x, nmin=5 $ - , xarr, yarr, yerr ;, /boots - ind_good=where(yerr gt 0) - oploterror, xarr[ind_good], yarr[ind_good], yerr[ind_good],psym=symcat(3),color=cgcolor('green'),errcolor=cgcolor('green') - imax = n_elements(xdata) - - ; do a linear regression with all the data points - sixlin, xdata - lum_ref[i], ydata, aa, siga, bb, sigb - print, title + ' N=', imax - print, 'med err(v12)=', med_err - ; Spearman's test - spearman=r_correlate(xdata, ydata) - print, 'Spearman r and p:', spearman - ;if title eq '[NeV]-CaII' then begin - nsample = 1000L - boots_ind = boot_indices(imax, nsample=nsample) - r_arr = dblarr(nsample) & p_arr = dblarr(nsample) - for iboot=0, nsample-1 do begin - tmp = r_correlate(xdata[boots_ind[iboot,*]], ydata[boots_ind[iboot,*]]) - r_arr[iboot] = tmp[0] & p_arr[iboot] = tmp[1] - endfor - print, 'Bootstrap Spearman r and p' - print, median(r_arr), median(p_arr) - print, quantile_1d(0.16, r_arr), quantile_1d(0.16,p_arr) - print, quantile_1d(0.84, r_arr), quantile_1d(0.84,p_arr) - ;endif - - - ;oplot, xrange, replicate(vmed,2), color=cgcolor('red') - ; plot a regression fit - regfit=mpfitexpr('P(0) + P(1)*x', xarr[ind_good]-lum_ref[i], yarr[ind_good], yerr[ind_good], [0., 0.], perror=perror,/quiet) - ;print, title, lum_ref[i] - print, 'linreg (a):', aa[0]*1000., '+-', siga[0]*1000. - print, '(b):', bb[0]*1000., '+-', sigb[0]*1000. - print, 'binned fit (a):', regfit[0]*1000., '+-',perror[0]*1000. - print, '(b):', regfit[1]*1000., '+-',perror[1]*1000. - print, '-------------------------------' - - oplot, xrange, regfit[0] + regfit[1]*(xrange - lum_ref[i]), color=cgcolor('red') - - yoff0 = med_err/1000. - yoff1 = (err16 - med_err)/1000. & yoff2 = (err84 - med_err)/1000. - oploterror, xrange[1]-0.5, yrange[1]*0.85 - yoff0, med_err/1000., psym=3, color=cgcolor('red'), /nohat - oploterror, xrange[1]-0.6, yrange[1]*0.85 -yoff0 - yoff1, err16/1000., psym=3, color=cgcolor('red'), /nohat - oploterror, xrange[1]-0.4, yrange[1]*0.85 -yoff0 - yoff2, err84/1000., psym=3, color=cgcolor('red'), /nohat - xyouts, xrange[0]+0.2, yrange[0]*0.85, 'N='+string(nobj,format='(i0)'), charsize=charsize - xyouts, xrange[0]+0.2, yrange[1]*0.75, string(vmed*1d3,format='(i0)')+ '/' $ - + string(vscat*1d3,format='(i0)') + ' km/s',charsize=charsize - if keyword_set(hist) then begin - plothist_old, ydata, bin=histbin, xhist,yhist, /rotate,color=cgcolor('cyan'), /noerase, $ - xsty=5,ysty=5,pos=pos,yrange=yrange, xrange=[0,2], peak=histpeak, $ - xtickname=replicate(' ',10L), ytickname=replicate(' ',10L), thick=5 - endif - -endfor -xyouts, 0.5, 0.01, textoidl('log (Continuum Luminosity) [erg s^{-1}]'), /norm, align=0.5 -xyouts, 0.025, 0.5, textoidl('Velocity [1000 km s^{-1}]'), /norm, align=0.5, orient=90 -endplot -cgfixps, figfile - -figfile='/data3/yshen/work/lineshifts/vel_shift_hist.eps' -begplot,name=figfile,/color,/landscape -plot_layout, npanel, xypos=xypos, omargin=[0.05, 0.0, 0.99, 0.96], pmargin=[0.065,0.1] -for i=0L, npanel - 1 do begin - - if i eq 0 then noerase=0 else noerase=1 - pos = xypos[*, i] - i1 = where(tags eq line[pair[0,i]] + '_ERR') ; err in the line - i2 = where(tags eq line[pair[1,i]] + '_ERR') ; err in the line - j1 = where(tags eq line[pair[0,i]] ) - j2 = where(tags eq line[pair[1,i]] ) - - ind = where( (result.(i1))[0,*] gt 0 and (result.(i2))[0,*] gt 0 $ - and (result.(i1))[2,*] gt 0 and (result.(i1))[2,*] le 1.D/3./alog(10.D) $ ; the line flux is 3sig detection - and (result.(i2))[2,*] gt 0 and (result.(i2))[2,*] le 1.D/3./alog(10.D) ) - jj=where( tags eq strupcase(lum[i])) - - logL=result[ind].(jj) - wave1=wave[pair[0,i]] & wave2=wave[pair[1,i]] - vel1 = ( (result[ind].(j1))[0,*] - wave1)/wave1*cspeed - vel1_err = (result[ind].(i1))[0,*]/wave1*cspeed - vel2 = ( (result[ind].(j2))[0,*] - wave2)/wave2*cspeed - vel2_err = (result[ind].(i2))[0,*]/wave2*cspeed - indd = where(vel1_err gt 0 and vel1_err lt 500. and vel2_err gt 0 and vel2_err lt 500.) - med_err=median(sqrt(vel1_err[indd]^2 + vel2_err[indd]^2)) - xdata=logL[indd] & ydata=(vel2 - vel1)[indd]/1000. - - nobj=n_elements(ydata) - - per16=quantile_1d(0.16, ydata) & per84=quantile_1d(0.84, ydata) - per5_y=quantile_1d(0.05, ydata) & per95_y=quantile_1d(0.95, ydata) - ind_tmp=where(ydata ge per16 and ydata le per84) - - binsz=stddev(ydata)/5. - xrange=binsz*5*3.*[-1,1] - - plothist, ydata, bin=binsz, ytitle=textoidl('N_{obj}'), xrange=xrange, $ - xtitle=textoidl(linetag[pair[1,i]] + '-' +linetag[pair[0,i]] +' [1000 km/s]'), pos=pos, $ - charsize=charsize, noerase=noerase, xticklen=len, yticklen=len, xhist,yhist - ;oplot, [0,0], line=2 - fit1=mpfitfun('gauss1', xhist,yhist,yhist,weights=1.D, [median(ydata), binsz*5., 10.],/quiet) - xgrid=0.02*findgen(301L) - 3. - oplot, xgrid, gauss1(xgrid, fit1), color=cgcolor('red') - - ; plot corrected L-dependence - if i eq 8 or i eq 10 or i eq 11 then begin - if i eq 8 then begin - aa=-231. & bb=-282. - endif - if i eq 10 then begin - aa=-242. & bb=-438. - endif - if i eq 11 then begin - aa=-123. & bb=-345. - endif - aa=aa/1000.D & bb=bb/1000.D - ydata_corr = ydata - (aa + bb*(xdata - lum_ref[i])) - plothist, ydata_corr, bin=binsz, /over, line=2,color=cgcolor('cyan'), xhist2,yhist2 - fit2=mpfitfun('gauss1', xhist2,yhist2,yhist2,weights=1.D, [median(ydata_corr), binsz*5., 10.],/quiet) - oplot, xgrid, gauss1(xgrid, fit2), color=cgcolor('blue'),line=2 - int_scat2=sqrt( (fit2[1]*1d3)^2 - med_err^2 ) - xyouts, pos[0]+0.015, pos[3]-0.06, string(fit2[0]*1d3,format='(i0)')+ '/' $ - + string(int_scat2, format='(i0)') + ' km/s',charsize=charsize, /norm,color=cgcolor('blue') - endif - - int_scat=sqrt( (fit1[1]*1d3)^2 - med_err^2 ) - xyouts, pos[0]+0.015, pos[3]-0.03, string(fit1[0]*1d3,format='(i0)')+ '/' $ - + string(int_scat, format='(i0)') + ' km/s',charsize=charsize, /norm - xyouts, pos[2]-0.06, pos[3]-0.03, 'N='+string(nobj,format='(i0)'), charsize=charsize,/norm - - vmed=median(ydata) ; vscat=sqrt( (stddev(ydata))^2 - (med_err/1000.)^2) - ; calc vscat in a crude way - vscat=0.5*(per84 - per16) - vscat=sqrt(vscat^2 - (med_err/1000.D)^2 ) -endfor -endplot -cgfixps, figfile - - -end diff --git a/pro/rm/print_target_info.pro b/pro/rm/print_target_info.pro deleted file mode 100644 index 39db2e715..000000000 --- a/pro/rm/print_target_info.pro +++ /dev/null @@ -1,48 +0,0 @@ -; given RMID (scalar or array), print target information -; and additional info - -pro print_target_info, rmid, line=line - -red, omegalambda=0.7,omega0=0.3,h100=0.7 - -targetfile=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' -target=mrdfits(targetfile,1) - -; host decomposed fits -file='/data3/quasar/yshen/work/agn_host/decomp_final.fits' -decomp=mrdfits(file,1) - -; qsofit -file='/data3/quasar/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/more_lines/qso_prop-0000-56837.fits' -qso=mrdfits(file,1) - -nnn=n_elements(rmid) -if n_elements(line) eq 0 then line=replicate('hbeta',nnn) - -print, 'RMID SDSSNAME z morph line f5100 logL5100_qso fhost FWHM logMSE_Hbeta' - -fmt='(i3.3, A20, " ", f6.4, " ", a9, " ", a5, " ", f0.3, " ", f0.3, " ", 2(f6.3, " "), " ", f4.2, " ", i5, " ", i5, " ", f6.3, " ", f6.3)' -for i=0,nnn-1 do begin - ind=where(decomp.fiber eq rmid[i]+1) - if target[rmid[i]].objc_type eq 6 then mflag='point' else mflag='extended' - - if line[i] eq 'hbeta' then begin - FWHM=decomp[ind].FWHM_HB & FWHM_err=decomp[ind].FWHM_HB_Err - endif - if line[i] eq 'mgii' then begin - FWHM=(qso[rmid[i]].MgII)[1] - FWHM_err=(qso[rmid[i]].MgII_err)[1] - endif - - ; convert L5100 to flux - const = 1./(4.*!PI)/(dluminosity(decomp[ind].z,/cm))^2/(1. + decomp[ind].z)*1d17/5100.D - f5100 = 10.D^decomp[ind].LOGL5100_QSO*const - f5100_err = f5100*alog(10.D)*decomp[ind].LOGL5100_QSO_err - - print, rmid[i], decomp[ind].sdss_name,decomp[ind].z,mflag,line[i], f5100, f5100_err, $ - decomp[ind].LOGL5100_QSO,decomp[ind].LOGL5100_QSO_err, decomp[ind].f_H_5100, $ - round(FWHM), round(FWHM_Err), decomp[ind].LOGMBH_VP06,decomp[ind].LOGMBH_VP06_err, format=fmt - -endfor - -end diff --git a/pro/rm/pslayout.pro b/pro/rm/pslayout.pro deleted file mode 100644 index e14ab8c8c..000000000 --- a/pro/rm/pslayout.pro +++ /dev/null @@ -1,102 +0,0 @@ -PRO pslayout - -;+ -; NAME: -; PSLAYOUT -; -; -; PURPOSE: -; Set up the system variable !PSLAYOUT which contains information for -; setting up the X, Z, or PS devices. The user, if not satisfied with these -; settings, should copy pslayout into their code directory and make the -; required modifications. -; -; CATEGORY: -; Plotting routine - -; CALLING SEQUENCE: -; pslayout -; -; SIDE EFFECTS: -; The !PSLAYOUT variable is created if not already in existence. If in -; existence, it will NOT be modified. -; -; -; MODIFICATION HISTORY: -; Creation: ??-??-2001 Erin Sheldon UofMichigan -; -;- - - - - defsysv,'!pslayout',exist=exist - - IF NOT exist THEN BEGIN - - pslayout = {runsetup:1,$ ;should begplot/endplot run setupplot? - name:'ps', $ - bits_per_pixel:4, $ - bold:0, $ - book:0, $ - close_file:0, $ - color:0, $ - demi:0, $ - Encapsulated:0, $ - filename:'idl.ps', $ - font:'times', $ ;the default true-type or postscript font - isolatin1:1, $ - true: 0, $ ;use true-type for all fonts? Obsolete, see below - font_index:0, $ - font_size:12, $ - italic:0, $ - inches:1, $ - landscape:0, $ - light:0, $ - medium:0, $ - narrow:0, $ - oblique:0, $ - output:'', $ - portrait:1, $ - preview:1, $ - scale_factor:1.0, $ - xoffset:0.75, $ - xsize:7.0, $ - yoffset:1.0, $ - ysize:9.0,$ - invbw:1,$ - $ ; default plotting parameters for 'ps' device - ps_true:1, $ - ps_thick:5, $ - ps_xthick:5, $ - ps_ythick:5, $ - ps_xticklen:0.02,$ - ps_yticklen:0.02,$ - ps_charsize:1.5,$ - ps_charthick:4,$ ;charthick only has meaning for true=0 above - $ ; default plotting parameters for 'x' device - x_true:0,$ - x_thick:1, $ - x_xthick:1, $ - x_ythick:1, $ - x_xticklen:0.02,$ - x_yticklen:0.02,$ - x_charsize:1,$ - x_charthick:1, $ - $ - z_true:0,$ - z_thick:1, $ - z_xthick:1, $ - z_ythick:1, $ - z_xticklen:0.02,$ - z_yticklen:0.02,$ - z_charsize:0.8,$ ;smaller charsize - z_charthick:1,$ - z_resolution:[640,512],$ ;resolution of Z-buffer - cmyk:0} - - defsysv,'!pslayout',pslayout - - ENDIF - - -END diff --git a/pro/rm/quantile_2d.pro b/pro/rm/quantile_2d.pro deleted file mode 100644 index c4b68603b..000000000 --- a/pro/rm/quantile_2d.pro +++ /dev/null @@ -1,27 +0,0 @@ -; supply a 2d array, return the quantile for the nth dimension - -function quantile_2d, frac, arr, dim = dim - -if not keyword_set(dim) then dim = 1L - -arr_size = size(arr) -if dim eq 1L and arr_size[0] ne 1 then nn = arr_size[dim+1] else nn = arr_size[dim-1] -result = dblarr(nn) - -for i=0L, nn - 1L do begin - if dim eq 1L then src = arr[*,i] else src = arr[i,*] - nnn = n_elements(src) - -; range = [min(src), max(src)] -; result[i] = quantile(frac, src, range = range) - ind = sort(src) - src = src[ind] - ind_quantile = floor(nnn*frac) - - result[i] = src[ind_quantile] - -endfor - -return, result - -end diff --git a/pro/rm/remove_tags.pro b/pro/rm/remove_tags.pro deleted file mode 100644 index 76185e3a6..000000000 --- a/pro/rm/remove_tags.pro +++ /dev/null @@ -1,104 +0,0 @@ - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;+ -; -; NAME: -; REMOVE_TAGS -; -; PURPOSE: -; remove the specified tags from input structure -; -; CALLING SEQUENCE: -; remove_tags, oldstruct, tagnames, newstruct -; -; INPUTS: -; oldstruct: the original structure -; tagnames: the names of tags to be removed (can be an array) -; -; OPTIONAL INPUTS: -; NONE. -; -; KEYWORD PARAMETERS: -; NONE. -; -; OUTPUTS: -; newstruct: the new structure without tags. -; -; OPTIONAL OUTPUTS: -; NONE -; -; CALLED ROUTINES: -; -; -; PROCEDURE: -; -; -; -; REVISION HISTORY: -; ????? Judith Racusin -; 25-OCT-2000 Modified to handle arbitrary tag types. Also error -; handling. Erin Scott Sheldon -; -; -;- -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - -PRO remove_tags, struct, tagnames, newstruct - - IF n_params() EQ 0 THEN BEGIN - print,'Syntax - remove_tags, oldstruct, tagnames, newstruct' - print - print,'Use doc_library,"remove_tags" for more help.' - return - END - - ;; Figure out which tags get removed - - tags=tag_names(struct) - n=n_elements(tags) - tagnames=strupcase(tagnames) - nt=n_elements(tagnames) - IF nt EQ 1 THEN BEGIN - t=where(tags NE tagnames[0],nw) - IF nw EQ n THEN BEGIN - print,'-----------------------------------------------------' - message,'Tag did not match, structure unchanged',/inf - print,'-----------------------------------------------------' - newstruct = struct - return - ENDIF - ENDIF ELSE BEGIN - match,tags,tagnames,m - IF m[0] EQ -1 THEN BEGIN - print,'-------------------------------------------------' - message,'No tags matched, structure unchanged',/inf - print,'-------------------------------------------------' - newstruct=struct - return - ENDIF - nm=n_elements(m) - IF nm EQ n THEN BEGIN - print,'-------------------------------------------------------------' - message,'This would remove all tags! structure unchanged',/inf - print,'-------------------------------------------------------------' - newstruct=struct - return - ENDIF - t=lindgen(n) - remove, m, t - ENDELSE - - ;; create new structure - tags=tags[t] - n=n_elements(tags) - - newstruct=create_struct(tags[0],struct[0].(t[0])) - - FOR i=1L, n-1 DO newstruct = create_struct(temporary(newstruct), $ - tags[i], struct[0].(t[i]) ) - - newstruct=replicate( temporary(newstruct), n_elements(struct) ) - struct_assign,struct,newstruct - - return -END diff --git a/pro/rm/rm_agn_host_decomp.pro b/pro/rm/rm_agn_host_decomp.pro deleted file mode 100644 index 12f3a8c3b..000000000 --- a/pro/rm/rm_agn_host_decomp.pro +++ /dev/null @@ -1,361 +0,0 @@ -;+ -; NAME: -; -; PURPOSE: -; -; INPUTS: -; -; OPTIONAL INPUTS; -; -; OUTPUTS: -; -; -;-------------------------- - -pro rm_agn_host_decomp,plate,fiber,mjd,tag=tag,figfile=figfile,calibdir=calibdir,$ - ra=ra,dec=dec,z=z,nsmooth=nsmooth, qso_npca=qso_npca, gal_npca=gal_npca, $ - pop_qsofit_err=pop_qsofit_err,outdir=outdir, nofits=nofits, update_sigma=update_sigma, $ - refit=refit - - if n_elements(plate) eq 0 then begin ; default to fit all z<1.1 RM quasars - splog, 'Load default target list: ' - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - ; keep only quasars (i.e., std and sky will have zfinal=0) - ind = where(target.zfinal le 1.1 and target.zfinal gt 0) - ra=target[ind].ra & dec=target[ind].dec & z=target[ind].zfinal - plate=0 & fiber=ind+1 & mjd=56837L - endif - - if ~keyword_set(outdir) then outdir='/data3/quasar/yshen/work/agn_host/' - if file_test(outdir) eq 0 then spawn, 'mkdir ' + outdir - fitsdir = outdir + 'fits/' - if file_test(fitsdir) eq 0 then spawn, 'mkdir ' + fitsdir - errdir = outdir + 'err/' - if file_test(errdir) eq 0 then spawn, 'mkdir ' + errdir - - if ~keyword_set(tag) then tag='decomp' - outfile=outdir + tag + '.fits' - if file_test(outfile) eq 1 and keyword_set(update_sigma) then begin - output0=mrdfits(outfile,1) - nofits = 1L - endif - - - ; setup cosmology - red, omegalambda=0.7,omega0=0.3,h100=0.7 - - nplate=n_elements(plate) & nfiber=n_elements(fiber) & nmjd=n_elements(mjd) - if nplate lt nfiber then plate=replicate(plate[0],nfiber) - if nmjd lt nfiber then mjd=replicate(mjd[0],nfiber) - - if ~keyword_set(calibdir) then calibdir='wh_skysub/' - if ~keyword_set(nsmooth) then nsmooth=1L - - ; setup the output Figure - if ~keyword_set(figfile) then figfile=outdir + tag+'.ps' - begplot,name=figfile,/landscape,/color - charsize = 1. & thick = 4. & xticks = 2L & xminor = 5L - linethick = 0.1 & symsize = 3. - ang = string(197B) & len=0.04 - pos = [0.08, 0.5, 0.97, 0.96] ;else pos = [0.12, 0.14, 0.96, 0.98] - pos2 = [0.08, 0.06, 0.97, 0.42] - ytitle = textoidl('Flux Density f_\lambda (10^{-17} erg s^{-1} cm^{-2} ') $ - + ang + textoidl('^{-1})') - xtitle = textoidl('Rest Wavelength (')+ang+')' - - nobj=n_elements(plate) - rm_readspec,plate[0],fiber[0],mjd=mjd[0],calibdir=calibdir,wave=wave - npix=n_elements(wave) - output={sdss_name:'', ra:0.D, dec:0.D, plate:0L, fiber:0L, mjd:0L, z:0.D, $ - wave:wave, flux:dblarr(npix), $ - err:dblarr(npix), ivar:dblarr(npix), flux_recon:dblarr(npix), $ - flux_gal:dblarr(npix), f_H:0., f_H_5100:0.,decomp_redchi2:0.,npca_qso:0L, npca_gal:0L, $ - medsn_sigma:0., npix_sigma:0L, $ - sigma_shen:0.D, sigma_shen_err:-1.D, sigma_redchi2:0.D, $ - sigma2:0.D, sigma2_err:-1.D, sigma2_redchi2:0.D, $ - sigma_greene:0.D, sigma_greene_err:-1.D, $ - logL5100_qso:0.D, logL5100_qso_err:-1.D, qso_c_redchi2:0.D, $ - FWHM_hb:0.D, FWHM_hb_err:-1.D, FWHM_OIII5007:0.D, FWHM_OIII5007_err:-1.D, $ - FWHM_OIII5007c:0.D, FWHM_OIII5007c_err:-1.D, $ - FWHM_OIII5007w:0.D, FWHM_OIII5007w_err:-1.D, $ - qso_l_redchi2:0.D, logMbh_hb:0.D, logMbh_hb_err:-1.D } - output=replicate(output, nobj) - output.ra=ra & output.dec=dec & output.plate=plate & output.fiber=fiber - output.mjd=mjd & output.z=z - - for i=0L, nobj - 1 do begin - - rm_readspec,plate[i],fiber[i],mjd=mjd[i],calibdir=calibdir, $ - wave=wave,flux=flux,flerr=err,invvar=ivar - restwave=wave/(1.+z[i]) - - ;-------------------------- - ; decomposing the spectrum - if ~keyword_set(qso_npca) then qso_npca=10 - if ~keyword_set(gal_npca) then gal_npca=5 - rm_pca_decomp,wave,flux,err,z=z[i],ra=ra[i],dec=dec[i],/deredden,result=result, $ - qso_npca=qso_npca,gal_npca=gal_npca - ; get residual in the PCA fitting range - residual = flux[result.fit_ind] - (result.flux_recon)[result.fit_ind] - norm_residual = residual * sqrt(ivar[result.fit_ind]) - ind_fit=result.fit_ind - - xrange=[3400,max(restwave)] - ind_s = where(restwave ge 3400. and wave le 9900.) - yrange = [-0.5, max(smooth(flux[ind_s],20))*1.2] - plot, restwave, smooth(result.flux,nsmooth), xrange=xrange, yrange=yrange, /ystyle $ - , charsize=charsize, xthick=thick, ythick=thick, charthick=thick, _extra=extra $ - , /xsty,xticklen=len, yticklen = len/2, pos=pos, thick=linethick,title='AGN/host decomposition' - oplot, restwave, result.err, thick=linethick,color=cgcolor('gray') - oplot, restwave[ind_fit], (result.flux_recon)[ind_fit], color=cgcolor('red') - oplot, restwave[ind_fit], (result.qso_recon)[ind_fit],color=cgcolor('blue') - oplot, restwave[ind_fit], (result.gal_recon)[ind_fit],color=cgcolor('dark green') - - objtag=string(plate[i],format='(i4.4)')+'-'+string(mjd[i],format='(i5.5)') $ - +'-'+string(fiber[i],format='(i4.4)') - radec2string,ra[i],dec[i],dummy,rahr=rahr,ramin=ramin,rasec=rasec $ - , decdeg=decdeg,decmin=decmin,decsec=decsec - sdss_name=rahr+ramin+rasec+decdeg+decmin+decsec - xyouts, 0.15, 0.922, objtag, /norm, charsize = charsize, charthick=thick - xyouts, 0.15, 0.892, '68% norm residual=' + $ - string( quantile_1d(0.68, abs(norm_residual)), format='(f4.2)'), /norm,charsize=charsize,charthick=thick - - xyouts, 0.35, 0.922, /norm, SDSS_name, charsize = charsize, charthick = thick - xyouts, 0.85, 0.922, 'z='+string(z[i],format='(f5.3)'), /norm $ - , charsize=charsize, charthick=thick, color=cgcolor('red') - xyouts,0.5,0.01,xtitle,/norm,charsize=charsize,charthick=thick,align=0.5 - xyouts,0.02,0.5,ytitle,/norm,charsize=charsize,charthick=thick,align=0.5,orien=90 - f_H=result.f_H - xyouts, 0.65, 0.922, textoidl('f_H=') + string(f_H,format='(f0.2)'),/norm,charsize=charsize,$ - charthick=thick - - output[i].sdss_name=sdss_name - output[i].wave=wave & output[i].flux=result.flux & output[i].err=result.err - output[i].ivar=result.ivar & output[i].flux_recon=result.flux_recon - output[i].flux_gal=result.flux-result.qso_recon & output[i].npca_qso=result.npca_qso - output[i].npca_gal=result.npca_gal & output[i].decomp_redchi2=result.chi2/result.dof - output[i].f_H=result.f_H & output[i].f_H_5100=result.f_H_5100 - ; set the pixels outside ind_fit to be zero - ind_min=min(ind_fit) & ind_max=max(ind_fit) - if ind_min gt 0 then output[i].flux_gal[0:ind_min-1]=0 - if ind_max lt npix-1 then output[i].flux_gal[ind_max+1:*]=0 - - ;------------------------- - ; fit host stellar velocity dispersion - ; the wavelength range in the vdisp fit is always smaller than the PCA galaxy/qso template range - galflux_fit=result.flux-result.qso_recon - galivar_fit=result.ivar - galivar_fit_use=galivar_fit - wave_max_use=4600. ; only fit dispersion to the short wavelength - ; mask the regions around broad Hbeta and broad Halpha - ind = where( (restwave ge 4760. and restwave le 5020.) or $ ; Hbeta - (restwave ge 6400. and restwave le 6765.) or $ ; Halpha - ;(restwave ge 4320. and restwave le 4400.) or $ ; Hgamma - ;(restwave ge 4080. and restwave le 4120.) or $ ; Hdelta - ;(restwave ge 4668. and restwave le 4696.) or $ ; HeII - (restwave lt 4000.) or (restwave gt 5350) ) - if ind[0] ne -1 then galivar_fit_use[ind]=0. - ind_good=where(restwave ge 4125. and restwave le 5350 and galivar_fit_use gt 0, npix_sigma) - output[i].npix_sigma=npix_sigma - output[i].medsn_sigma=median(galflux_fit[ind_good]*sqrt(galivar_fit_use[ind_good]) ) - - vdans = rm_vdispfit(galflux_fit, galivar_fit_use, alog10(wave), zobj=z[i], yfit=yfit, $ - eigenfile='spEigenElodie.fits', columns=lindgen(5), npoly=5, dzpix=7, /return_chisq) - output[i].sigma_SHEN = vdans.vdisp & output[i].sigma_SHEN_err = vdans.vdisp_err - output[i].sigma_redchi2 = vdans.vdispchi2/vdans.vdispdof - if file_test(outfile) eq 1 and keyword_set(update_sigma) then begin - output0[i].sigma_SHEN = vdans.vdisp & output0[i].sigma_SHEN_err = vdans.vdisp_err - output0[i].sigma_redchi2 = vdans.vdispchi2/vdans.vdispdof - endif - - ; this sigma fit includes the Ca H/K bands - ind2 = where( (restwave ge 4760. and restwave le 5020.) or $ - (restwave ge 6400. and restwave le 6765.) ) ; or restwave gt wave_max_use ) - galivar_fit_use2=galivar_fit - if ind2[0] ne -1 then galivar_fit_use2[ind2]=0. - vdans2 = rm_vdispfit(galflux_fit, galivar_fit_use2, alog10(wave), zobj=z[i], yfit=yfit2, $ - eigenfile='spEigenElodie.fits', columns=lindgen(5), npoly=5, dzpix=7, /return_chisq ) - output[i].sigma2=vdans2.vdisp & output[i].sigma2_err=vdans2.vdisp_err - output[i].sigma2_redchi2=vdans2.vdispchi2/vdans2.vdispdof - if file_test(outfile) eq 1 and keyword_set(update_sigma) then begin - output0[i].sigma2=vdans2.vdisp & output0[i].sigma2_err=vdans2.vdisp_err - output0[i].sigma2_redchi2=vdans2.vdispchi2/vdans2.vdispdof - endif - - xrange2=[3900., min([6100., max(restwave)]) ] - s_flux=smooth(galflux_fit[ind_s], 10) - yrange2=[min(s_flux),max(s_flux)] - plot, restwave, galflux_fit, xrange=xrange2, charsize=charsize, xthick=thick, ythick=thick, $ - charthick=thick,/xsty,xticklen=len, yticklen = len/2, pos=pos2, thick=linethick, $ - title='stellar velocity dispersion',/noerase, yrange=yrange2,/ysty - maskind=where(galivar_fit_use eq 0,nbad) - galflux_fit_plot=galflux_fit - galflux_fit_plot[maskind] = 0. ; this sets the flux within the masks to be zero - ; oplot, restwave, galflux_fit_plot, thick=linethick - oplot, restwave[maskind],replicate(yrange2[0],nbad), psym=4,color=cgcolor('cyan'),symsize=0.2 - ; now plot the narrow masks from rm_vdispfit - linelist = [3725.94, 3727.24, 3970.072, 4101.73, 4340.46, 4363.21, 4685.71, $ - 4861.3632, 4958.911, 5006.843, 5158.89, 5199.08, 5302.86, $ - 6300.32, 6548.05, 6562.801, $ - 6583.45, 6716.44, 6730.82] - nline=n_elements(linelist) - vaclist = linelist - airtovac, vaclist - vaclist = alog10(vaclist) - mwidth = 6.e-4 ; Mask out any pixels within +/- 420 km/s - for iline=0,nline-1 do begin - xx1=linelist[iline]*(1. - mwidth*alog(10.)) - xx2=linelist[iline]*(1. + mwidth*alog(10.)) - yy1=yrange2[0] & yy2=yrange2[1] - polyfill, [xx1,xx2, xx2, xx1], [yy1, yy1, yy2, yy2], /line_fill, $ - orientation=45, /noclip,color=cgcolor('cyan') - endfor - - ind2=where(restwave le 7000.) - if ind2[0] ne -1 then oplot, restwave[ind2], yfit2[ind2], color=cgcolor('blue') ; all - - ind_plot=where(galivar_fit_use gt 0) - if ind_plot[0] ne -1 then $ - oplot, restwave[ind_plot], yfit[ind_plot],color=cgcolor('red'), psym=symcat(16),symsize=0.1 ; 4000-5350, same as what Greene uses; but the Elodie eigenvectors run from 4125.7221 -- 6796.7293 - - xyouts, 0.15, pos2[3]-0.04, textoidl('\sigma_{*}=') $ - + string(vdans.vdisp,format='(i0)')+textoidl('\pm') $ - + string(vdans.vdisp_err,format='(i0)') + textoidl(' km s^{-1}'),/norm,charsize=charsize,charthick=thick,$ - color=cgcolor('red') - xyouts, 0.65, pos2[3]-0.04, textoidl('redchi2=')+string(vdans.vdispchi2/vdans.vdispdof, $ - format='(f0.1)'),/norm, charsize=charsize,charthick=thick, color=cgcolor('red') - xyouts, 0.15, pos2[3]-0.07, textoidl('\sigma_{*}=') $ - + string(vdans2.vdisp,format='(i0)')+textoidl('\pm') $ - + string(vdans2.vdisp_err,format='(i0)') + textoidl(' km s^{-1}'),/norm, $ - charsize=charsize,charthick=thick,color=cgcolor('blue') - xyouts, 0.65, pos2[3]-0.07, textoidl('redchi2=')+string(vdans2.vdispchi2/vdans2.vdispdof, $ - format='(f0.1)'),/norm, charsize=charsize,charthick=thick, color=cgcolor('blue') - - ;------------------------- - ; fit the AGN spectrum and output fits/err fits - ; I am fitting everything, regardless of the f_H value - ; if f_H < 0.1 then all raw flux is AGN flux - ; note that the spectrum has already been dereddened - - if result.f_H gt 0.1 then qsoflux_fit=result.flux-result.gal_recon else $ - qsoflux_fit=result.flux - - qsoivar_fit=result.ivar - qsoivar_use=qsoivar_fit - ; mask the regions in the galaxy NLs - - emparfile='/home/yshen/products/Linux/idlrm/etc/qsoline_qsovar.par' - fitsfile=fitsdir+objtag+'.fits' - if file_test(fitsfile) eq 0 or keyword_set(refit) then begin ; fit for this object if not already fit - rm_qsofit,wave[ind_fit], qsoflux_fit[ind_fit], dummy, z[i], ivar0=qsoivar_use[ind_fit], $ - ra=ra[i],dec=dec[i], emparfile=emparfile, deredden=0, /append,/psplot, $ - objtag=objtag,sdss_name=sdss_name, para=para - ; output the fitsfile - mwrfits,para,fitsfile, /create - endif else para=mrdfits(fitsfile,1,/silent) - output[i].qso_c_redchi2=para.conti_redchi2 - ind_hb=where(para.linename eq 'Hbeta_br') - output[i].qso_l_redchi2=(para.line_redchi2)[ind_hb[0]] - get_qso_prop, para, linelist=['Hbeta_br', 'OIII5007', 'OIII5007c', 'OIII5007w'], $ - conti_prop=conti_prop, line_prop=line_prop,z=z[i] - output[i].logL5100_QSO=conti_prop.logL5100 - output[i].FWHM_Hb=(line_prop.Hbeta_br)[1] - output[i].FWHM_OIII5007=(line_prop.OIII5007)[1] - output[i].FWHM_OIII5007c=(line_prop.OIII5007c)[1] - output[i].FWHM_OIII5007w=(line_prop.OIII5007w)[1] - - ; estimate errors with MC trials - errfile=errdir+objtag+'.fits' - if file_test(errfile) eq 0 or keyword_set(refit) then begin - if keyword_set(pop_qsofit_err) then begin - ntrial=50L ; number of MC trials - if n_elements(err_array) ne 0 then tmp=temporary(err_array) ; empty err_array - if n_elements(logL5100_arr) ne 0 then tmp1=temporary(logL5100_arr) - if n_elements(FWHM_Hb_arr) ne 0 then tmp2=temporary(FWHM_Hb_arr) - for jj=0L, ntrial-1 do begin - rm_qsofit,wave[ind_fit], qsoflux_fit[ind_fit], dummy, z[i], ivar0=qsoivar_use[ind_fit], $ - /noplot,/silent,/diet,/add_noise,emparfile=emparfile,deredden=0,para=para - tag_rej=['CONTI_FIT_ERR','LINE_FIT_ERR'] - remove_tags, para, tag_rej, para_keep - splog, ' Error trial: ',jj+1 - ; Only add this trial if the continuum fit is OK - ; The large redchi2 is to keep fits on very high SN spectrum - if para_keep.conti_redchi2 lt 100. and para_keep.conti_redchi2 gt 0 then begin - if n_elements(err_array) eq 0 then err_array=para_keep $ - else err_array=[err_array,para_keep] - get_qso_prop, para_keep, linelist=['Hbeta_br'],conti_prop=conti_prop,line_prop=line_prop,z=z[i] - if n_elements(logL5100_arr) eq 0 then logL5100_arr=conti_prop.logL5100 $ - else logL5100_arr=[logL5100_arr, conti_prop.logL5100] - if n_elements(FWHM_Hb_arr) eq 0 then FWHM_hb_arr=(line_prop.Hbeta_br)[1] $ - else FWHM_Hb_arr=[FWHM_Hb_arr, (line_prop.Hbeta_br)[1]] - endif - endfor - output[i].logL5100_QSO_err=0.5*( quantile_1d(0.84,logL5100_arr) - quantile_1d(0.16,logL5100_arr) ) - output[i].FWHM_Hb_err=0.5*( quantile_1d(0.84,FWHM_Hb_arr) - quantile_1d(0.16,FWHM_Hb_arr) ) - splog, 'Finished: '+objtag,' ', i+1, '/', nobj - print, output[i].logL5100_QSO, output[i].logL5100_QSO_err - print, output[i].FWHM_Hb, output[i].FWHM_Hb_err - ; message, 'stop and diagnose' - - ; output the error file - if n_elements(err_array) ne 0 then mwrfits, err_array, errfile, /create - endif - endif else begin - err_array=mrdfits(errfile, 1, /silent) - ntrial_good=n_elements(err_array) - if n_elements(logL5100_arr) ne 0 then tmp1=temporary(logL5100_arr) - if n_elements(FWHM_Hb_arr) ne 0 then tmp2=temporary(FWHM_Hb_arr) - if n_elements(FWHM_OIII5007_arr) ne 0 then tmp3=temporary(FWHM_OIII5007_arr) - if n_elements(FWHM_OIII5007c_arr) eq 0 then tmp4=temporary(FWHM_OIII5007c_arr) - if n_elements(FWHM_OIII5007w_arr) eq 0 then tmp5=temporary(FWHM_OIII5007w_arr) - for itrial=0L, ntrial_good - 1 do begin - get_qso_prop, err_array[itrial], linelist=['Hbeta_br', 'OIII5007', 'OIII5007c', 'OIII5007w'], $ - conti_prop=conti_prop,line_prop=line_prop,z=z[i] - if n_elements(logL5100_arr) eq 0 then logL5100_arr=conti_prop.logL5100 $ - else logL5100_arr=[logL5100_arr, conti_prop.logL5100] - if n_elements(FWHM_Hb_arr) eq 0 then FWHM_hb_arr=(line_prop.Hbeta_br)[1] $ - else FWHM_Hb_arr=[FWHM_Hb_arr, (line_prop.Hbeta_br)[1]] - if n_elements(FWHM_OIII5007_arr) eq 0 then FWHM_OIII5007_arr=(line_prop.OIII5007)[1] $ - else FWHM_OIII5007_arr=[FWHM_OIII5007_arr, (line_prop.OIII5007)[1]] - if n_elements(FWHM_OIII5007c_arr) eq 0 then FWHM_OIII5007c_arr=(line_prop.OIII5007c)[1] $ - else FWHM_OIII5007c_arr=[FWHM_OIII5007c_arr, (line_prop.OIII5007c)[1]] - if n_elements(FWHM_OIII5007w_arr) eq 0 then FWHM_OIII5007w_arr=(line_prop.OIII5007w)[1] $ - else FWHM_OIII5007w_arr=[FWHM_OIII5007w_arr, (line_prop.OIII5007w)[1]] - endfor - ; now get errors - output[i].logL5100_QSO_err=0.5*( quantile_1d(0.84,logL5100_arr) - quantile_1d(0.16,logL5100_arr) ) - output[i].FWHM_Hb_err=0.5*( quantile_1d(0.84,FWHM_Hb_arr) - quantile_1d(0.16,FWHM_Hb_arr) ) - output[i].FWHM_OIII5007_err=0.5*(quantile_1d(0.84,FWHM_OIII5007_arr) - quantile_1d(0.16,FWHM_OIII5007_arr)) - output[i].FWHM_OIII5007c_err=0.5*(quantile_1d(0.84,FWHM_OIII5007c_arr) - quantile_1d(0.16,FWHM_OIII5007c_arr)) - output[i].FWHM_OIII5007w_err=0.5*(quantile_1d(0.84,FWHM_OIII5007w_arr) - quantile_1d(0.16,FWHM_OIII5007w_arr)) - splog, 'Finished: '+objtag,' ', i+1, '/', nobj - - endelse - - endfor - - endplot - - ; now populate Jenny Greene's sigma measurements - file = '/data3/quasar/yshen/work/agn_host/greene/final/valdes_4000-5350.dat' - readcol,file,format='a,d,d', sdss_name_g, sigma_greene, sigma_greene_err - nobj_g=n_elements(sdss_name_g) - for i_g=0,nobj_g-1 do begin - - ind_tmp=where(output.sdss_name eq sdss_name_g[i_g]) - output[ind_tmp].sigma_greene=sigma_greene[i_g] - output[ind_tmp].sigma_greene_err=sigma_greene_err[i_g] - - endfor - - - if ~keyword_set(nofits) then $ - mwrfits, output, outfile, /create - - ; only update the sigma measurements - if file_test(outfile) eq 1 and keyword_set(update_sigma) then $ - mwrfits, output0, outfile, /create - - -end diff --git a/pro/rm/rm_batch_lag_diag_prepspec.pro b/pro/rm/rm_batch_lag_diag_prepspec.pro deleted file mode 100644 index 5cf0e6b65..000000000 --- a/pro/rm/rm_batch_lag_diag_prepspec.pro +++ /dev/null @@ -1,154 +0,0 @@ -;+ -; NAME: -; rm_batch_lag_diag_prepspec -; -; PURPOSE: -; perform batch tests for PrepSpec light curves -; set /sym_range to search the lag in symmetric range of lags, this however will -; increase the uncertainty in lag centroid with MC method, and rendering the lag -; undetected. -; -pro rm_batch_lag_diag_prepspec,rmid,topdir=topdir, use_epochid=use_epochid, $ - dcf=dcf, ep_rej=ep_rej, ccf_tau=ccf_tau, sym_range=sym_range,outfile=outfile, $ - random_lc=random_lc - - if n_elements(rmid) eq 0 then begin ; default is the first 100 objects - file = getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - target=target[0:848] - ind=sort(target.zfinal) - rmid=ind[0:99] - endif - - if ~keyword_Set(topdir) then topdir='/data3/quasar/yshen/work/lags/prepspec/ACBFJ/' - - dt=2. - if keyword_set(sym_range) then ccf_tau = -70. + (findgen(140./dt + 5L)*dt) - - if ~keyword_set(ccf_tau) then ccf_tau = -20. + (findgen(100./dt + 6L)*dt) - - ; open an outfile to output the measurements - if ~keyword_Set(outfile) then outfile1=topdir + 'ccf_output' else $ - outfile1=topdir + outfile - openw, outlun, outfile1, /get_lun - printf, outlun, '# Tau search range: ',min(ccf_tau),max(ccf_tau) - if n_elements(ep_rej) gt 0 then printf, outlun, '# Rejected epochs: ', ep_rej - printf, outlun, '# RMID line linechi2 lag_mea peak_sig' - fmt='(i3.3, " ", a4, " ", e8.2, " ", 3(f5.1, " "), e9.3)' - - nep_tot=32 ; this is the current # of spec epochs - if n_elements(use_epochid) eq 0 then begin ; assign usable epochs - if n_elements(ep_rej) gt 0 then begin - epochid = indgen(nep_tot) - flag = lonarr(nep_tot) - flag[ep_rej-1]=1L - ind_keep=where(flag eq 0, complement=ind_bad) - use_epochid=ind_keep - endif - endif - - ; read in more target information - file='/data3/yshen/work/composite_lag/target_info.fits' - info=mrdfits(file,1) - - if n_elements(rmid) eq 0 then rmid=lindgen(849) - nobj=n_elements(rmid) - - ;suffix=['hb_t','ha_t', 'he2_t', 'mg2_t'] - suffix=['hb_t','ha_t', 'he2_4686_t', 'mg2_t'] - line=['hb','ha','he2','mg2'] - nline=n_elements(suffix) - for i=0L, nobj-1 do begin - - rmtag='rm'+string(rmid[i],format='(i3.3)') - - figfile=topdir+rmtag+'/'+rmtag+'_ccf.ps' - begplot,name=figfile,/color,/cmyk - - ; first get 5100 LC - lcfile=topdir+rmtag+'/'+rmtag+'_c*.dat' - lcfile_found=file_search(lcfile,count=nfile) - - if nfile gt 0 then begin - ; choose the best continuum LC - conti_tag=strmid(lcfile_found,7,4,/reverse) - ;print, conti_tag - - ; find the apporporiate continuum luminosity - ind_use=where(conti_tag eq '5100') - if ind_use[0] eq -1 then ind_use=where(conti_tag eq '3000') - if ind_use[0] eq -1 then ind_use=where(conti_tag eq $ - string(median(conti_tag),format='(i0)' )) - - lcfile_use=lcfile_found[ind_use] - readcol,lcfile_use,format='d,d,d',t_conti,f_conti,e_conti,/silent - ; remove bad epochs - if keyword_Set(use_epochid) then begin - t_conti=t_conti[use_epochid] - f_conti=f_conti[use_epochid] - e_conti=e_conti[use_epochid] - endif - ind_good = where(e_conti gt 0) - if ind_good[0] ne -1 then begin - t_conti=t_conti[ind_good] - f_conti=f_conti[ind_good] - e_conti=e_conti[ind_good] - endif - - ; now do each BLR LC - for j=0,nline-1 do begin - lcfile=topdir+rmtag+'/'+rmtag+'_'+suffix[j]+'.dat' - if file_test(lcfile) eq 1 then begin - readcol,lcfile,format='d,d,d',t_line,f_line,e_line,/silent - ; remove bad epochs - if keyword_Set(use_epochid) then begin - t_line=t_line[use_epochid] - f_line=f_line[use_epochid] - e_line=e_line[use_epochid] - endif - ind_good = where(e_line gt 0) - if ind_good[0] ne -1 then begin - t_line=t_line[ind_good] - f_line=f_line[ind_good] - e_line=e_line[ind_good] - endif - - if keyword_set(random_lc) then begin ; shuffle the line LC epochs to test if a correlation still exists - nep_line=n_elements(t_line) - Nran = randomu(seed, nep_line) - ind_ran=sort(Nran) - f_line=f_line[ind_ran] & e_line=e_line[ind_ran] - endif - - tag_plot='c'+conti_tag[ind_use]+'-'+suffix[j] - - ; compute the line chi^2 - ; I believe the mean of the line LC has already been subtracted in prepspec - line_chi2=total( f_line^2/e_line^2, /double ) - - rm_lag_diag,t_conti,f_conti,e_conti,t_line,f_line,e_line,dt=dt,tag=tag_plot, $ - /fig_append,tau_exp=info[rmid[i]].tau_obs,dcf=dcf, ccf_tau=ccf_tau, $ - lag_mea=lag_mea,peak_sig=peak_sig, out_ccf=out_ccf - - printf, outlun, rmid[i],line[j], line_chi2, lag_mea, peak_sig, format=fmt - - ; write out the CCF - ccf_outfile=topdir+rmtag+'/ccf_'+line[j] - fmt99='(f5.0, " ", f5.2)' - openw, lun99, ccf_outfile, /get_lun - printf, lun99, '#tau ccf' - for jj=0,n_elements(ccf_tau)-1 do printf, lun99, ccf_tau[jj], out_ccf[jj],format=fmt99 - close, lun99 - free_lun, lun99 - - endif - endfor - endif - - endplot - endfor - - close, outlun - free_lun, outlun - -end diff --git a/pro/rm/rm_calc_rms_spec.pro b/pro/rm/rm_calc_rms_spec.pro deleted file mode 100644 index 817a83f29..000000000 --- a/pro/rm/rm_calc_rms_spec.pro +++ /dev/null @@ -1,62 +0,0 @@ -; calculate the RMS spectrum using the ML estimator (Keith) -; Note the current ML implementation by Jon Trump uses the median as the -; average, instead of using the optimal mean as the average of the LC -; Input -; RMID -; epoch: [1,2,3, ...] -- array of epochs - -pro rm_calc_rms_spec, rmid, epoch=epoch, result=result,_extra=extra, calibdir=calibdir - -if n_elements(result) ne 0 then tmp=temporary(result) -if ~keyword_set(calibdir) then calibdir='wh_skysub/' - -if n_elements(rmid) gt 1 then begin - for jj=0, n_elements(rmid) - 1 do begin - rm_calc_rms_spec, rmid[jj], epoch=epoch, result=result1,_extra=extra, calibdir=calibdir - if n_elements(result) eq 0 then result=result1 else result=[result,result1] - endfor - return -endif - -target_file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' -tt = mrdfits(target_file,1,/silent) - - -plate=tt[rmid].plate & fiber=tt[rmid].fiberid & mjd=tt[rmid].mjd -if keyword_set(epoch) then begin - plate=plate[epoch-1] - fiber=fiber[epoch-1] - mjd=mjd[epoch-1] -endif - -rm_readspec, plate, fiber, mjd=mjd, wave=wave, flux=flux, flerr=err, calibdir=calibdir, _extra=extra - -npix = (size(flux))[1] -nep = (size(flux))[2] - -wave = wave[*,0] -result={wave:wave, medflux:dblarr(npix),rmsflux:dblarr(npix), rmserr:dblarr(npix)-1.D, nspec:lonarr(npix)} -medflux=dblarr(npix) & rmsflux=dblarr(npix) & rmserr=dblarr(npix)-1.D & nspec=lonarr(npix) - -for i=0, npix - 1 do begin - - flux1 = flux[i, *] & err1 = err[i,*] - - ind=where(err1 gt 0, ngood) - nspec[i] = ngood - - if ngood gt 2 then begin - flux1 = flux1[ind] & err1 = err1[ind] - medflux[i] = median(flux1) - rms = getrms(flux1, err1) - rmsflux[i] = rms[0] - rmserr[i] = rms[1] - endif -endfor - -result.medflux = medflux -result.rmsflux = rmsflux -result.rmserr = rmserr -result.nspec = nspec - -end diff --git a/pro/rm/rm_check_diff_img.pro b/pro/rm/rm_check_diff_img.pro deleted file mode 100644 index 267680378..000000000 --- a/pro/rm/rm_check_diff_img.pro +++ /dev/null @@ -1,200 +0,0 @@ -; suite to check the difference imaging LCs - -; check the error of the std -pro check_std_err, band=band - - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - epoch_info=mrdfits(file,2) - - if ~keyword_set(band) then band = 'g' - - result=replicate({rmid:0L, bok_err2stddev:0.D, bok_err2mad:0.D}, 70) - result.rmid=indgen(70)+850 - - ; where the photometric LCs are stored - topdir='/data3/yshen/ftp/sdssrm/collab/photo_lc/img_diff_lc/by_rmid/' - - figfile='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/bok/std_LC.ps' - begplot, name=figfile, /color, /landscape - - colors=cgcolor(['black', 'cyan', 'red', 'magenta', 'orange', 'purple']) - for i=0L, 69L do begin - - rmid=result[i].rmid - file=topdir+'rm'+string(rmid,format='(i3.3)')+'.fits' - lc=mrdfits(file,1,/silent) - - ind=where(strmatch(lc.orig,'bok*') and lc.band eq band ) - if ind[0] ne -1 then begin - lc=lc[ind] - orig=lc.orig - uniq_tag=orig[uniq(orig,sort(orig))] - ntag=n_elements(uniq_tag) - err2stddev=dblarr(ntag) & err2mad=dblarr(ntag) - stddev_arr=dblarr(ntag) - mad_arr=dblarr(ntag) & mederr_arr=dblarr(ntag) - title='RMID '+string(rmid,format='(i3.3)') + ' g-band' - for j=0L, ntag - 1 do begin - indd=where(orig eq uniq_tag[j]) - stddev_arr[j]=stddev(lc[indd].flux) - mad_arr[j]=median( abs(lc[indd].flux - median(lc[indd].flux) ) ) - mederr_arr[j]=median(lc[indd].flerr) - - if j eq 0 then ploterror, lc[indd].mjd, (lc[indd].flux - median(lc[indd].flux) )/mad_arr[j], lc[indd].flerr/mad_arr[j], $ - xtitle='MJD', ytitle='Flux / MAD (diff img)', psym=4, color=colors[j], errcolor=colors[j],noerase=noerase,title=title, xtickformat='(i5)' $ - else oploterror, lc[indd].mjd, ( lc[indd].flux - median(lc[indd].flux) )/mad_arr[j], lc[indd].flerr/mad_arr[j], $ - psym=4, color=colors[j], errcolor=colors[j] - oplot, [56600., 56900.], [0.,0.], line=1 - endfor - legend, uniq_tag, box=0,pos=[0.75,0.92],/norm, color=colors[0:ntag-1],textcolor=colors[0:ntag-1] - - - ; now normalize median measurement errors to stddev and mad - err2stddev=mederr_arr/stddev_arr - err2mad=mederr_arr/mad_arr - xyouts, 0.15, 0.9, textoidl('(median flerr)/MAD'),/norm - legend, string(err2mad, format='(f0.3)'), box=0, pos=[0.15, 0.88], textcolor=colors[0:ntag-1],/norm - - result[i].bok_err2stddev=median(err2stddev) - result[i].bok_err2mad=median(err2mad) - - - endif - - - endfor - - outfile='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/bok/errtest.fits' - mwrfits, result, outfile, /create - - endplot - cgfixps, figfile -end - -; check the diff img on the fainter SDSS stars generated by Ian -pro compile_faint_star_lc - - ; read the star catalog - file='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/sdss_star/sdss.fits' - sdss=mrdfits(file,1) - - band=['g', 'i'] - - ; get the diff img - topdir_std_bok='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/bok/' - fld=string(indgen(18),format='(i2.2)') & nfld=18 - - for iband=0,1 do begin - for ipos=1,4 do begin - for ifld=0,nfld-1 do begin - datdir=topdir_std_bok+strupcase(band[iband])+fld[ifld] $ - +'stnd_ccd'+string(ipos,format='(i0)')+'/' - orig='bok_'+fld[ifld]+'_ccd'+string(ipos,format='(i0)') - - files=file_search(datdir+'stnd*.dat',count=nfound) - len=strlen(datdir) - stdid=long(strmid(strmid(files,len),4, 5)) - nobj=n_elements(stdid) - for jj=0, nobj-1 do begin - readcol, files[jj], format='d,d,d',mjd,flux,flerr,/silent - ntmp=n_elements(mjd) - if n_elements(mjd_arr) eq 0 then mjd_arr=mjd else mjd_arr=[mjd_arr,mjd] - if n_elements(flux_arr) eq 0 then flux_arr=flux else flux_arr=[flux_arr,flux] - if n_elements(flerr_arr) eq 0 then flerr_arr=flerr else flerr_arr=[flerr_arr,flerr] - if n_elements(stdid_arr) eq 0 then stdid_arr=replicate(stdid[jj],ntmp) $ - else stdid_arr=[stdid_arr, replicate(stdid[jj],ntmp)] - if n_elements(band_arr) eq 0 then band_arr=replicate(band[iband],ntmp) $ - else band_arr=[band_arr, replicate(band[iband],ntmp)] - if n_elements(orig_arr) eq 0 then orig_arr=replicate(orig,ntmp) $ - else orig_arr=[orig_arr, replicate(orig,ntmp)] - endfor - endfor - endfor - endfor - ; flip the sign of the flux for the original diff img LC - flux_arr = -flux_arr - ntot=n_elements(stdid_arr) - alldata={stdid:0L, mjd:0.D, flux:0.D, flerr:0.D, band:'', orig:''} - alldata=replicate(alldata, ntot) - alldata.stdid=stdid_arr & alldata.mjd=mjd_arr & alldata.flux=flux_arr - alldata.flerr=flerr_arr & alldata.band=band_arr & alldata.orig=orig_arr - - if ~keyword_set(outdir) then outdir='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/' - outfile=outdir + 'all_lc_data.fits' - mwrfits, alldata, outfile, /create - -end - -pro check_faint_star_lc - - ; read the star input catalog - file='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/sdss_star/sdss.fits' - sdss=mrdfits(file,1) - nnn=n_elements(sdss) - - ; read in the LC catalog - file='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/all_lc_data.fits' - alldata=mrdfits(file,1) - - ; loop over all stars - outfile='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/lc_stat.fits' - if file_test(outfile) eq 0 then begin - for i=0L, nnn-1 do begin - ind=where(alldata.stdid eq i) - if ind[0] gt 0 then begin - sub=alldata[ind] - orig=sub.orig - uniq_tag=orig[uniq(orig,sort(orig))] - nset=n_elements(uniq_tag) - for jj=0l, nset - 1 do begin - - ; for gband - indd=where(sub.orig eq uniq_tag[jj] and sub.band eq 'g') - if indd[0] gt 0 then begin - if n_elements(orig_arr) eq 0 then orig_arr=uniq_tag[jj] else orig_arr=[orig_arr,uniq_tag[jj]] - if n_elements(band_arr) eq 0 then band_arr='g' else band_arr=[band_arr, 'g'] - if n_elements(stdid_arr) eq 0 then stdid_arr=i else stdid_arr=[stdid_arr, i] - mad=median( abs( sub[indd].flux - median(sub[indd].flux) ) ) - mederr=median(sub[indd].flerr) - if n_elements(mad_arr) eq 0 then mad_arr=mad else mad_arr=[mad_arr, mad] - if n_elements(mederr_arr) eq 0 then mederr_arr=mederr else mederr_arr=[mederr_arr, mederr] - if n_elements(mag_arr) eq 0 then mag_arr=sdss[i].g else mag_arr=[mag_arr,sdss[i].g] - endif - ; for iband - indd=where(sub.orig eq uniq_tag[jj] and sub.band eq 'i') - if indd[0] gt 0 then begin - if n_elements(orig_arr) eq 0 then orig_arr=uniq_tag[jj] else orig_arr=[orig_arr,uniq_tag[jj]] - if n_elements(band_arr) eq 0 then band_arr='i' else band_arr=[band_arr, 'i'] - if n_elements(stdid_arr) eq 0 then stdid_arr=i else stdid_arr=[stdid_arr, i] - mad=median( abs( sub[indd].flux - median(sub[indd].flux) ) ) - mederr=median(sub[indd].flerr) - if n_elements(mad_arr) eq 0 then mad_arr=mad else mad_arr=[mad_arr, mad] - if n_elements(mederr_arr) eq 0 then mederr_arr=mederr else mederr_arr=[mederr_arr, mederr] - if n_elements(mag_arr) eq 0 then mag_arr=sdss[i].i else mag_arr=[mag_arr,sdss[i].i] - endif - endfor - endif - endfor - - ntot=n_elements(stdid_arr) - result={stdid:0L, band:'', orig:'', mag:0.D, mad:0.D, mederr:0.D} - result=replicate(result, ntot) - result.stdid=stdid_arr & result.band=band_arr & result.orig=orig_arr - result.mag=mag_arr & result.mad=mad_arr & result.mederr=mederr_arr - outfile='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/lc_stat.fits' - mwrfits, result, outfile, /create - endif - - result=mrdfits(outfile, 1) - band=['g', 'i'] - for i=0, 1 do begin - figfile='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/std_lc_check_'+band[i]+'.ps' - begplot, name=figfile, /landscape, /color - ind=where(result.band eq band[i] and result.mederr gt 0) - plot, result[ind].mag, result[ind].mad/result[ind].mederr, psym=3, xtitle='Magnitude', $ - ytitle='MAD / MedErr', title = 'diff img (faint sdss stars) ' + band[i], /ylog, yrange=[1d0, 1d3] - endplot - cgfixps, figfile - endfor -end diff --git a/pro/rm/rm_check_outlier.pro b/pro/rm/rm_check_outlier.pro deleted file mode 100644 index 132593356..000000000 --- a/pro/rm/rm_check_outlier.pro +++ /dev/null @@ -1,64 +0,0 @@ -; Check rate of outlier using standard stars - -pro rm_check_outlier, maxdev=maxdev - - if not keyword_set(maxdev) then maxdev=0.1 ; dex - - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - plate=fibermap[0].plate & mjd=fibermap[0].mjd - ind=where(plate gt 0) - plate=plate[ind] & mjd=mjd[ind] - - ; this is for the pipeline - ttt=rm_findstd(plate,mjd,calibdir='',synflux=synflux_pipe,calibflux=calibflux_pipe) - ; this is for the custom reduction - ttt=rm_findstd(plate,mjd,calibdir='recalib/',synflux=synflux_new,calibflux=calibflux_new) - - ratio_pipe=synflux_pipe / calibflux_pipe - ratio_new=synflux_new / calibflux_new - - ; keep only gri band - ratio_pipe=ratio_pipe[*,*,1:3] - ratio_new=ratio_new[*,*,1:3] - - dims=size(ratio_pipe,/dim) - nep=dims[0] & nstd=dims[1] & nband=dims[2] - - ratio_pipe=reform(ratio_pipe, nep*nstd, nband) - ratio_new=reform(ratio_new, nep*nstd, nband) - - ; remove bad spectra - badflag = lonarr(nep*nstd) - badflag1=badflag - for i=0L, nep*nstd - 1 do begin - ind=where(ratio_pipe[i, *] gt 0, nnn) - if nnn ne nband then badflag[i]=1L - ind=where(ratio_new[i, *] gt 0, nnn) - if nnn ne nband then badflag1[i]=1L - endfor - - ind=where(badflag eq 0, ngood) - ind1=where(badflag1 eq 0, ngood1) - print, where(ind ne ind1) - ratio_pipe=ratio_pipe[ind, *] - ratio_new=ratio_new[ind,*] - - ; get outlier rate - logratio_pipe=alog10(ratio_pipe) - logratio_new=alog10(ratio_new) - - ind=where(abs(logratio_pipe[*,0]) gt maxdev or $ - abs(logratio_pipe[*,1]) gt maxdev or $ - abs(logratio_pipe[*,2]) gt maxdev, nout_pipe) - ind=where(abs(logratio_new[*,0]) gt maxdev or $ - abs(logratio_new[*,1]) gt maxdev or $ - abs(logratio_new[*,2]) gt maxdev, nout_new ) - - print, 'Outlier frac; |dev|>', maxdev, ' dex' - print, 'pipeline: ', float(nout_pipe)/float(ngood) - print, 'new: ', float(nout_new)/float(ngood) - - print, logratio_new[ind,*] - -end diff --git a/pro/rm/rm_checkmratio.pro b/pro/rm/rm_checkmratio.pro deleted file mode 100644 index ef94db846..000000000 --- a/pro/rm/rm_checkmratio.pro +++ /dev/null @@ -1,467 +0,0 @@ -;+ -; NAME: -; plot_exp_mratio -; rm_checkmratio -; rm_checkmratio_1exp -; rm_diag_mratio_epoch -; PURPOSE: -; Check the mratio distribution of good std for different Epochs and its dependence -; on properties such as airmass, focal plane position, etc. -; -; -pro plot_exp_mratio, expname, calibdir=calibdir,overplot=overplot $ - , ratioscat=ratioscat, loglam=loglam, _extra=extra $ - , plotmratio=plotmratio, noplot=noplot, xrange = xrange $ - , channel=channel, perdiff=perdiff, nprox=nprox,selfexclud=selfexclud $ - , airmass=airmass, xyfit=xyfit, xfocal=xfocal, yfocal=yfocal - - ; plot the distribution of mratio in a given exposure - ; only use good fluxing stars - - if not keyword_set(calibdir) then $ - calibdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/recalib/test5/' - - filename=calibdir+expname - kindx=mrdfits(filename,2,/silent) - - ; get mratio and flatarr for the current exposure - struct_out=mrdfits(filename,4,/silent) - - ; is this a blue ccd? - if strmatch(expname,'*-b*') then begin - xrange=[3600,6300] - yrange=[0,3] - channel = 'blue' - endif - ; is this a red ccd? - if strmatch(expname,'*-r*') then begin - xrange=[6300,10000.] - yrange=[0,3] - channel = 'red' - endif - - - if not keyword_set(overplot) and not keyword_Set(noplot) then begin - plot,[0],[0],/nodata,xrange=xrange,yrange=yrange,/xsty $ - ,title=expname - endif - - - thisloglam=reform(struct_out.thisloglam) - thismratio=reform(struct_out.thismratio) - thisflatarr=reform(struct_out.thisflatarr) - - dims=size(thisloglam) - npix=dims[1] & nobj=dims[2] - - - for i=0L, nobj-1L do begin - - ind_norm=where(10.^thisloglam[*,i] gt 5000. and $ - 10.^thisloglam[*,i] le 5100.) - if not keyword_set(noplot) then begin - - if keyword_Set(plotmratio) then $ - oplot, 10.^thisloglam[*,i],thismratio[*,i]/median(thismratio[ind_norm,i]) $ - , psym=3,_extra=extra - - ; oplot, 10.^thisloglam[*,i],thisflatarr[*,i]/median(thisflatarr[ind_norm,i]) $ - ; , _extra=extra - oplot, 10.^thisloglam[*,i],thisflatarr[*,i], _extra=extra - endif - endfor - - ; compute the scatter in flatarr for all std stars in this exposure - npix_new = floor((alog10(xrange[1])-alog10(xrange[0]))/1d-4) - loglam = alog10(xrange[0]) + findgen(npix_new)*1d-4 - ratioscat = dblarr(npix_new) - perdiff = dblarr(npix_new,nobj) - - flatarr = fltarr(npix_new,nobj) - for i=0L,nobj-1L do flatarr[*,i]=interpol(thisflatarr[*,i], thisloglam[*,i], loglam) - - ; Using the nearest neighbors method to recompute flatarr - if keyword_set(nprox) or keyword_set(xyfit) then begin - - flatarr_new = 0*flatarr - - if keyword_set(nprox) then begin - nprox_ori = nprox - nprox = nprox < nobj - - ; Here is the trick we do the localization for each std - for i=0L,nobj-1L do begin - ; Use the input ngood airmass, and find the nearest nprox std in airmass - air_diff = abs(airmass - airmass[i]) - if (not keyword_set(selfexclud)) then $ - ind_prox = (sort(air_diff))[0:nprox-1] $ - else begin - ind_prox = (sort(air_diff))[1:nprox] - endelse - - if nprox ge 2 then flatarr_new[*,i] = mean(flatarr[*,ind_prox],dim=2) $ - else flatarr_new[*,i] = flatarr[*,ind_prox] - - endfor - nprox = nprox_ori - endif - - if keyword_set(xyfit) then begin - ; at each wavelength pixel, fit a B-spline on xfocal, using yfocal as the 2nd dimension - everyn = nobj/3 - isort = sort(xfocal) - nord = 3 - bkpt = 0 - fullbkpt = bspline_bkpts(xfocal[isort],everyn=everyn,bkpt=bkpt, nord=nord) - for ipix=0L, npix_new - 1L do begin - - ; this is an old version, fit a B-spline on xfocal, using yfocal as the 2nd dimension - ;sset = bspline_iterfit(xfocal[isort],reform(flatarr[ipix,isort]),lower=0, upper=0 $ - ; , invvar=replicate(1,nobj) $ - ; , fullbkpt=fullbkpt,outmask=outmask1,nord=nord,x2=yfocal[isort],npoly=2 $ - ; , requiren=(everyn-1)>1) - ;flatarr_new[ipix,isort] = bspline_valu(xfocal[isort], sset, x2=yfocal[isort]) - - ; this is the new version, fit a 2d polynominal - pp_guess = [median(flatarr[ipix,*]), 0.,0.,0.,0. ] - xarr = [[xfocal],[yfocal]] - xyfit_para = mpfitfun('xy_polyfit',xarr, flatarr[ipix,*], $ - replicate(1.,nobj), pp_guess, /quiet, status=status) - ;splog, 'xy_polyfit Status=',status, ' PP=', xyfit_para - flatarr_new[ipix,*] = xy_polyfit(xarr, xyfit_para) - - ;yrange1=[0.5,2.5] - ;plot, xfocal[isort], flatarr[ipix,isort], psym=5,yrange=yrange1 - - ;oplot, xfocal[isort], bspline_valu(xfocal[isort], sset, x2=yfocal[isort]) $ - ; ,color=fsc_color('red') - ;xyouts, -200, 1.8, 10.^loglam[ipix],charsize=1.5 - ;xarr = -300. + findgen(301)*2 - ;yarr = replicate(-200., 300) - ;oplot,xarr,bspline_valu(xarr,sset,x2=yarr),color=fsc_color('cyan') - ;message, 'stop' - ;pause - - endfor - - endif - - endif - - ; normalize flatarr - if (not keyword_set(nprox)) and (not keyword_set(xyfit)) then begin - mean_flatarr = mean(flatarr,dim=2) - flatarr_norm = 0*flatarr - for i=0L,nobj-1L do $ - flatarr_norm[*,i] = mean_flatarr/flatarr[*,i] - endif else begin - flatarr_norm = 0*flatarr - for i=0L,nobj-1L do $ - flatarr_norm[*,i] = flatarr_new[*,i]/flatarr[*,i] - endelse - - perdiff = flatarr_norm - 1. - - for ipix=0L, npix_new - 1L do begin - - ratioscat[ipix] = stddev( flatarr_norm[ipix,*] ) - - endfor - -end - -pro rm_checkmratio, calibname, calibdir=calibdir, topdir=topdir,title=title,nprox=nprox,$ - selfexclud=selfexclud,xyfit=xyfit - - if not keyword_set(calibdir) then $ - calibdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/recalib/test5/' - - if not keyword_set(topdir) then topdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/' - - nexp=n_elements(calibname) - airmass=dblarr(nexp) - sn=dblarr(nexp) - - for i=0L,nexp - 1L do begin - spname=repstr(calibname[i],'Fluxcalib','Frame') - - print, topdir+spname, calibdir+calibname[i] - kindx=mrdfits(calibdir+calibname[i],2,/silent) - indx=where(kindx.qgood eq 1) - - if strmatch(calibname[i],'*1-*') then ccd=1 else ccd=2 - if ccd eq 1 then igood=kindx[indx].fiberid - 1L $ - else igood=kindx[indx].fiberid - 500L - 1L - - spframe_read,topdir+spname,igood,plugmap=plugmap,hdr=hdr1,objflux=objflux,objivar=objivar - sn_all = objflux*sqrt(objivar) - sn[i] = median(sn_all) - get_tai, hdr1, tai_beg, tai, tai_end - airmass_all = tai2airmass(plugmap.ra, plugmap.dec, tai=tai) - xfocal = plugmap.xfocal & yfocal = plugmap.yfocal - airmass[i] = mean(airmass_all) - - expname=calibname[i] - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel - - if n_elements(final_ratio) eq 0 then final_ratio=ratioscat $ - else final_ratio = [[final_ratio], [ratioscat]] - - if keyword_set(nprox) then begin ; the nprix nearest neighbor approach - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat_nprox, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel,airmass=airmass_all,nprox=nprox,selfexclud=selfexclud - if n_elements(final_ratio_nprox) eq 0 then final_ratio_nprox=ratioscat_nprox $ - else final_ratio_nprox = [[final_ratio_nprox], [ratioscat_nprox]] - endif - - if keyword_set(xyfit) then begin; fit positional-dependent polynomial to the stars - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat_nprox, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel,airmass=airmass_all,/xyfit $ - , xfocal=xfocal,yfocal=yfocal - if n_elements(final_ratio_nprox) eq 0 then final_ratio_nprox=ratioscat_nprox $ - else final_ratio_nprox = [[final_ratio_nprox], [ratioscat_nprox]] - endif - - endfor - - min=min(airmass,max=max) - - colors = fsc_color(['opposite','red','green','cyan','blue','magenta','gold','dark green','Olive','dark gray']) - yrange=[0,0.3] - plot,[0],[0],xrange=xrange,yrange=yrange,/xsty,/ysty,/nodata, $ - xtitle='Wavelength',ytitle='normalized stddev in fluxing vector [100%]', $ - title=title - - for i=0L, nexp - 1L do begin - oplot, 10.^loglam,final_ratio[*,i],color=colors[i] - if keyword_set(nprox) or keyword_set(xyfit) then $ - oplot,10.^loglam,final_ratio_nprox[*,i],color=colors[i],line=2 - endfor - - xyouts, xrange[0]+(xrange[1]-xrange[0])*0.1, 0.9*yrange[1],$ - channel+'cam '+string(ccd,format='(i0)'),charsize=1.0 - - if keyword_Set(nprox) then xyouts, xrange[0]+(xrange[1]-xrange[0])*0.1, 0.08*yrange[1],$ - 'Nprox='+string(nprox,format='(i0)'),charsize=1.0 - if keyword_set(xyfit) then xyouts, xrange[0]+(xrange[1]-xrange[0])*0.1, 0.08*yrange[1],$ - 'xyfit',charsize=1.0 - - xpos = xrange[0]+(xrange[1]-xrange[0])*0.7 - ypos = 0.9*yrange[1] - xyouts, xpos, ypos, 'airmass',charsize=1.0 - isort = sort(airmass) - items=string(airmass[isort],format='(f4.2)') - legend, items,color=colors[isort],textcolor=colors[isort],pos=[xpos,ypos],box=0,charsize=1.0 - isort = sort(sn) - items=string(sn[isort],format='(f4.1)') - xpos = xpos - (xrange[1]-xrange[0])*0.3 - xyouts, xpos, ypos, ' SN',charsize=1.0 - legend, items,color=colors[isort],textcolor=colors[isort],pos=[xpos,ypos],box=0,charsize=1.0 - - items=strmid(calibname,15,8) - xpos = xpos - (xrange[1]-xrange[0])*0.35 - legend, items,color=colors,textcolor=colors,pos=[xpos,ypos],box=0,charsize=1.0 - -end - -; this routine plot the actual mratio for each good std in a single exposure -pro rm_checkmratio_1exp, calibname, calibdir=calibdir, topdir=topdir,title=title, $ - noanno=noanno,nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - if not keyword_set(calibdir) then $ - calibdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/recalib/test5/' - - if not keyword_set(topdir) then topdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/' - - if n_elements(calibname) ne 1 then message, 'rm_checkmratio_1exp only works for a single exp' - - spname=repstr(calibname,'Fluxcalib','Frame') - - print, topdir+spname, calibdir+calibname - kindx=mrdfits(calibdir+calibname,2,/silent) - indx=where(kindx.qgood eq 1, ngood) - - if strmatch(calibname,'*1-*') then ccd=1 else ccd=2 - if ccd eq 1 then igood=kindx[indx].fiberid - 1L $ - else igood=kindx[indx].fiberid - 500L - 1L - - spframe_read,topdir+spname,igood,plugmap=plugmap,hdr=hdr1,objflux=objflux,objivar=objivar - sn_all = objflux*sqrt(objivar) - get_tai, hdr1, tai_beg, tai, tai_end - ; airmass, xfocal and yfocal for ngood std - airmass = tai2airmass(plugmap.ra, plugmap.dec, tai=tai) - xfocal = plugmap.xfocal & yfocal = plugmap.yfocal - - expname=calibname - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel, perdiff=perdiff - - if keyword_set(nprox) then $ - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat_nprox, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel, perdiff=perdiff_nprox,airmass=airmass $ - , nprox=nprox,selfexclud=selfexclud - - if keyword_set(xyfit) then $ - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat_nprox, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel, perdiff=perdiff_nprox,/xyfit $ - , xfocal=xfocal,yfocal=yfocal - - yrange=[-0.5,0.5] - xmargin = !x.margin - ; print, xmargin - !x.margin = [7, 14] - plot,[0],[0],xrange=xrange,yrange=yrange,/xsty,/ysty,/nodata, $ - xtitle='Wavelength',ytitle='mratio deviation [100%]', $ - title=title - - cgloadct,25, ncolors=ngood - colors = indgen(ngood) - for i=0L, ngood - 1L do begin - oplot, 10.^loglam, perdiff[*,i],color=colors[i] - if keyword_set(nprox) or keyword_set(xyfit) then $ - oplot, 10.^loglam, perdiff_nprox[*,i],color=colors[i],line=2 - endfor - if keyword_Set(nprox) then xyouts, xrange[0]+(xrange[1]-xrange[0])*0.7, 0.8*yrange[0],$ - 'Nprox='+string(nprox,format='(i0)'),charsize=1.0,color=fsc_color('opposite',256L) - if keyword_set(xyfit) then xyouts, xrange[0]+(xrange[1]-xrange[0])*0.7, 0.8*yrange[0],$ - 'xyfit',charsize=1.0,color=fsc_color('opposite',256L) - - - if not keyword_set(noanno) then begin - xpos = 0.75 & ypos = 0.95 - xyouts, xpos, ypos, ' airmass',charsize=1.0,/norm, color=fsc_color('opposite',256L) - isort = sort(airmass) - items=string(airmass[isort],format='(f4.2)') - legend, items,color=colors[isort],textcolor=colors[isort],pos=[xpos,ypos],box=0,charsize=1.0,/norm - isort = sort(xfocal) - items=string(xfocal[isort],format='(f0.1)') - xpos = xpos + 0.075 - xyouts, xpos, ypos, ' xfocal',charsize=1.0,/norm, color=fsc_color('opposite',256L) - legend, items,color=colors[isort],textcolor=colors[isort],pos=[xpos,ypos],box=0,charsize=1.0,/norm - isort = sort(yfocal) - items=string(yfocal[isort],format='(f0.1)') - xpos = xpos + 0.075 - xyouts, xpos, ypos, ' yfocal',charsize=1.0,/norm, color=fsc_color('opposite',256L) - legend, items,color=colors[isort],textcolor=colors[isort],pos=[xpos,ypos],box=0,charsize=1.0,/norm - endif - cgloadct,0 - - !x.margin = xmargin -end - -pro rm_diag_mratio_epoch, platelist, mjdlist, oneexp=oneexp,nprox=nprox,selfexclud=selfexclud $ - , xyfit=xyfit - -; set /oneexp to plot the mratio for individual good std in each exposure - - if n_elements(platelist) eq 0 then begin - ;platelist=[7338,7338,7338,7339,7339] - ;mjdlist=[56660,56664,56669,56683,56686] - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - indd = where(fibermap[0].plate ne 0, nepoch) - platelist = (fibermap[0].plate)[indd] - mjdlist = (fibermap[0].mjd)[indd] - endif - - ; default is to exclude the std itself in fluxing - if n_elements(selfexclud) eq 0 then selfexclud = 1L - - nepoch = n_elements(platelist) - calibdir=[replicate('/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/recalib/test20/',3), $ - replicate('/data3/quasar/yshen/spectro/bossredux/v5_6_0/7339/recalib/test20/',3)] - topdir=[replicate('/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/',3), $ - replicate('/data3/quasar/yshen/spectro/bossredux/v5_6_0/7339/',3)] - tag = string(platelist,format='(i4.4)')+'-'+string(mjdlist,format='(i5.5)') - - figfile = getenv('IDLRM_DIR')+'/misc/diag_mratio.ps' - if keyword_set(oneexp) then figfile = getenv('IDLRM_DIR')+'/misc/diag_mratio_1exp.ps' - if keyword_set(xyfit) then figfile = repstr(figfile,'.ps', '_xyfit.ps') - begplot,name=figfile,/color - !p.multi = [0,2,3] - if keyword_set(oneexp) then !p.multi = [0,1,2] - - for iepoch = 0L, nepoch - 1L do begin - - rm_expinfo,platelist[iepoch],mjdlist[iepoch],expinfo=expinfo - ind=where(expinfo.coadded[0,*] eq 1, ncoadd) - - calibdir1=calibdir[iepoch] & topdir1=topdir[iepoch] - - ; This plots the dispersion in mratio for all exps - if not keyword_set(oneexp) then begin - ; this is blue ccd1 [coadded exposures] - spname=reform((expinfo[ind].name)[0,*]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', Ncoadd='+string(ncoadd,format='(i0)') - rm_checkmratio, calibname, calibdir=calibdir1, topdir=topdir1,title=title,$ - nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - ; this is red ccd1 [coadded exposures] - spname=reform((expinfo[ind].name)[2,*]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', Ncoadd='+string(ncoadd,format='(i0)') - rm_checkmratio, calibname, calibdir=calibdir1, topdir=topdir1,title=title,$ - nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - ; this is blue ccd2 [coadded exposures] - spname=reform((expinfo[ind].name)[1,*]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', Ncoadd='+string(ncoadd,format='(i0)') - rm_checkmratio, calibname, calibdir=calibdir1, topdir=topdir1,title=title,$ - nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - ; this is red ccd2 [coadded exposures] - spname=reform((expinfo[ind].name)[3,*]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', Ncoadd='+string(ncoadd,format='(i0)') - rm_checkmratio, calibname, calibdir=calibdir1, topdir=topdir1,title=title,$ - nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - - endif else begin - - ; this for each exposure - for iexp=0L, ncoadd - 1L do begin - ; blue ccd1 - spname=reform((expinfo[ind].name)[0,iexp]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', ' + strmid(spname,8,11) - rm_checkmratio_1exp,calibname[0],calibdir=calibdir1, topdir=topdir1,$ - title=title,nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - ; red ccd1 - spname=reform((expinfo[ind].name)[2,iexp]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', ' + strmid(spname,8,11) - rm_checkmratio_1exp,calibname[0],calibdir=calibdir1, topdir=topdir1,$ - title=title, /noanno,nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - ; blue ccd2 - spname=reform((expinfo[ind].name)[1,iexp]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', ' + strmid(spname,8,11) - rm_checkmratio_1exp,calibname[0],calibdir=calibdir1, topdir=topdir1,$ - title=title,nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - ; red ccd2 - spname=reform((expinfo[ind].name)[3,iexp]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', ' + strmid(spname,8,11) - rm_checkmratio_1exp,calibname[0],calibdir=calibdir1, topdir=topdir1,$ - title=title, /noanno,nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - - endfor - - endelse - endfor - - !p.multi = 0 - endplot - - if keyword_Set(oneexp) then begin - cmd = 'gzip ' + figfile - spawn, cmd - endif - -end diff --git a/pro/rm/rm_checkmratio_test.pro b/pro/rm/rm_checkmratio_test.pro deleted file mode 100644 index 07e6f5a7f..000000000 --- a/pro/rm/rm_checkmratio_test.pro +++ /dev/null @@ -1,478 +0,0 @@ -;+ -; NAME: -; plot_exp_mratio -; rm_checkmratio -; rm_checkmratio_1exp -; rm_diag_mratio_epoch -; PURPOSE: -; Check the mratio distribution of good std for different Epochs and its dependence -; on properties such as airmass, focal plane position, etc. -; -; -pro plot_exp_mratio, expname, calibdir=calibdir,overplot=overplot $ - , ratioscat=ratioscat, loglam=loglam, _extra=extra $ - , plotmratio=plotmratio, noplot=noplot, xrange = xrange $ - , channel=channel, perdiff=perdiff, nprox=nprox,selfexclud=selfexclud $ - , airmass=airmass, xyfit=xyfit, xfocal=xfocal, yfocal=yfocal - - ; plot the distribution of mratio in a given exposure - ; only use good fluxing stars - - if not keyword_set(calibdir) then $ - calibdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/recalib/test20/' - - filename=calibdir+expname - kindx=mrdfits(filename,2,/silent) - - ; get mratio and flatarr for the current exposure - struct_out=mrdfits(filename,4,/silent) - - ; is this a blue ccd? - if strmatch(expname,'*-b*') then begin - xrange=[3600,6300] - yrange=[0,3] - channel = 'blue' - endif - ; is this a red ccd? - if strmatch(expname,'*-r*') then begin - xrange=[6300,10000.] - yrange=[0,3] - channel = 'red' - endif - - - if not keyword_set(overplot) and not keyword_Set(noplot) then begin - plot,[0],[0],/nodata,xrange=xrange,yrange=yrange,/xsty $ - ,title=expname - endif - - - thisloglam=reform(struct_out.thisloglam) - thismratio=reform(struct_out.thismratio) - thisflatarr=reform(struct_out.thisflatarr) - - dims=size(thisloglam) - npix=dims[1] & nobj=dims[2] - - - for i=0L, nobj-1L do begin - - ind_norm=where(10.^thisloglam[*,i] gt 5000. and $ - 10.^thisloglam[*,i] le 5100.) - if not keyword_set(noplot) then begin - - if keyword_Set(plotmratio) then $ - oplot, 10.^thisloglam[*,i],thismratio[*,i]/median(thismratio[ind_norm,i]) $ - , psym=3,_extra=extra - - ; oplot, 10.^thisloglam[*,i],thisflatarr[*,i]/median(thisflatarr[ind_norm,i]) $ - ; , _extra=extra - oplot, 10.^thisloglam[*,i],thisflatarr[*,i], _extra=extra - endif - endfor - - ; compute the scatter in flatarr for all std stars in this exposure - npix_new = floor((alog10(xrange[1])-alog10(xrange[0]))/1d-4) - loglam = alog10(xrange[0]) + findgen(npix_new)*1d-4 - ratioscat = dblarr(npix_new) - perdiff = dblarr(npix_new,nobj) - - flatarr = fltarr(npix_new,nobj) - for i=0L,nobj-1L do flatarr[*,i]=interpol(thisflatarr[*,i], thisloglam[*,i], loglam) - - ; Using the nearest neighbors method to recompute flatarr - if keyword_set(nprox) or keyword_set(xyfit) then begin - - flatarr_new = 0*flatarr - - if keyword_set(nprox) then begin - nprox_ori = nprox - nprox = nprox < nobj - - ; Here is the trick we do the localization for each std - for i=0L,nobj-1L do begin - ; Use the input ngood airmass, and find the nearest nprox std in airmass - air_diff = abs(airmass - airmass[i]) - if (not keyword_set(selfexclud)) then $ - ind_prox = (sort(air_diff))[0:nprox-1] $ - else begin - ind_prox = (sort(air_diff))[1:nprox] - endelse - - if nprox ge 2 then flatarr_new[*,i] = mean(flatarr[*,ind_prox],dim=2) $ - else flatarr_new[*,i] = flatarr[*,ind_prox] - - endfor - nprox = nprox_ori - endif - - if keyword_set(xyfit) then begin - ; at each wavelength pixel, fit a B-spline on xfocal, using yfocal as the 2nd dimension - everyn = nobj/3 - isort = sort(xfocal) - nord = 3 - bkpt = 0 - fullbkpt = bspline_bkpts(xfocal[isort],everyn=everyn,bkpt=bkpt, nord=nord) - for ipix=0L, npix_new - 1L do begin - - ; Fit a low-order B-spline to xfocal,using yfocal as a 2nd parameter - ; This method has some issues with objects not sampled by the std locations - ;sset = bspline_iterfit(xfocal[isort],reform(flatarr[ipix,isort]),lower=0, upper=0 $ - ; , invvar=replicate(1,nobj) $ - ; , fullbkpt=fullbkpt,outmask=outmask1,nord=nord,x2=yfocal[isort],npoly=2 $ - ; , requiren=(everyn-1)>1) - ;flatarr_new[ipix,isort] = bspline_valu(xfocal[isort], sset, x2=yfocal[isort]) - - ; this is the actual xyfit method used - pp_guess = [median(flatarr[ipix,*]), 0.,0.,0.,0. ] - xarr = [[xfocal],[yfocal]] - xyfit_para = mpfitfun('xy_polyfit',xarr, flatarr[ipix,*], $ - replicate(1.,nobj), pp_guess, /quiet, status=status) - ;splog, 'xy_polyfit Status=',status, ' PP=', xyfit_para - flatarr_new[ipix,*] = xy_polyfit(xarr, xyfit_para) - - ;yrange1=[0.5,2.5] - ;plot, xfocal[isort], flatarr[ipix,isort], psym=5,yrange=yrange1 - - ;oplot, xfocal[isort], bspline_valu(xfocal[isort], sset, x2=yfocal[isort]) $ - ; ,color=fsc_color('red') - ;xyouts, -200, 1.8, 10.^loglam[ipix],charsize=1.5 - ;xarr = -300. + findgen(301)*2 - ;yarr = replicate(-200., 300) - ;oplot,xarr,bspline_valu(xarr,sset,x2=yarr),color=fsc_color('cyan') - ;message, 'stop' - ;pause - - endfor - - endif - - endif - - ; normalize flatarr - if (not keyword_set(nprox)) and (not keyword_set(xyfit)) then begin - mean_flatarr = mean(flatarr,dim=2) - flatarr_norm = 0*flatarr - for i=0L,nobj-1L do $ - flatarr_norm[*,i] = mean_flatarr/flatarr[*,i] - endif else begin - flatarr_norm = 0*flatarr - for i=0L,nobj-1L do $ - flatarr_norm[*,i] = flatarr_new[*,i]/flatarr[*,i] - endelse - - perdiff = flatarr_norm - 1. - - for ipix=0L, npix_new - 1L do begin - - ratioscat[ipix] = stddev( flatarr_norm[ipix,*] ) - - endfor - -end - -pro rm_checkmratio, calibname, calibdir=calibdir, topdir=topdir,title=title,nprox=nprox,$ - selfexclud=selfexclud,xyfit=xyfit - - if not keyword_set(calibdir) then $ - calibdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/recalib/test5/' - - if not keyword_set(topdir) then topdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/' - - nexp=n_elements(calibname) - airmass=dblarr(nexp) - sn=dblarr(nexp) - - for i=0L,nexp - 1L do begin - spname=repstr(calibname[i],'Fluxcalib','Frame') - - print, topdir+spname, calibdir+calibname[i] - kindx=mrdfits(calibdir+calibname[i],2,/silent) - indx=where(kindx.qgood eq 1) - - if strmatch(calibname[i],'*1-*') then ccd=1 else ccd=2 - if ccd eq 1 then igood=kindx[indx].fiberid - 1L $ - else igood=kindx[indx].fiberid - 500L - 1L - - spframe_read,topdir+spname,igood,plugmap=plugmap,hdr=hdr1,objflux=objflux,objivar=objivar - sn_all = objflux*sqrt(objivar) - sn[i] = median(sn_all) - get_tai, hdr1, tai_beg, tai, tai_end - airmass_all = tai2airmass(plugmap.ra, plugmap.dec, tai=tai) - xfocal = plugmap.xfocal & yfocal = plugmap.yfocal - airmass[i] = mean(airmass_all) - - expname=calibname[i] - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel - - if n_elements(final_ratio) eq 0 then final_ratio=ratioscat $ - else final_ratio = [[final_ratio], [ratioscat]] - - if keyword_set(nprox) then begin ; the nprix nearest neighbor approach - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat_nprox, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel,airmass=airmass_all,nprox=nprox,selfexclud=selfexclud - if n_elements(final_ratio_nprox) eq 0 then final_ratio_nprox=ratioscat_nprox $ - else final_ratio_nprox = [[final_ratio_nprox], [ratioscat_nprox]] - endif - - if keyword_set(xyfit) then begin; fit positional-dependent polynomial to the stars - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat_nprox, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel,airmass=airmass_all,/xyfit $ - , xfocal=xfocal,yfocal=yfocal - if n_elements(final_ratio_nprox) eq 0 then final_ratio_nprox=ratioscat_nprox $ - else final_ratio_nprox = [[final_ratio_nprox], [ratioscat_nprox]] - endif - - endfor - - min=min(airmass,max=max) - - colors=cgcolor(['opposite','red','green','cyan','blue','magenta','gold','dark green','Olive','dark gray']) - yrange=[0,0.3] - plot,[0],[0],xrange=xrange,yrange=yrange,/xsty,/ysty,/nodata, $ - xtitle='Wavelength',ytitle='normalized stddev in fluxing vector [100%]', $ - title=title - - for i=0L, nexp - 1L do begin - oplot, 10.^loglam,final_ratio[*,i],color=colors[i] - if keyword_set(nprox) or keyword_set(xyfit) then $ - oplot,10.^loglam,final_ratio_nprox[*,i],color=colors[i],line=2 - endfor - - xyouts, xrange[0]+(xrange[1]-xrange[0])*0.1, 0.9*yrange[1],$ - channel+'cam '+string(ccd,format='(i0)'),charsize=1.0 - - if keyword_Set(nprox) then xyouts, xrange[0]+(xrange[1]-xrange[0])*0.1, 0.08*yrange[1],$ - 'Nprox='+string(nprox,format='(i0)'),charsize=1.0 - if keyword_set(xyfit) then begin - ; xyouts, xrange[0]+(xrange[1]-xrange[0])*0.1, 0.08*yrange[1],$ - ; 'xyfit',charsize=1.0 - items=['BOSS pipeline', 'custom'] - legend, items, line=[0,2],box=0,pos=[xrange[0]+(xrange[1]-xrange[0])*0.1, 0.12*yrange[1]] - endif - - xpos = xrange[0]+(xrange[1]-xrange[0])*0.7 - ypos = 0.9*yrange[1] - xyouts, xpos, ypos, 'airmass',charsize=1.0 - isort = sort(airmass) - items=string(airmass[isort],format='(f4.2)') - legend, items,color=colors[isort],textcolor=colors[isort],pos=[xpos,ypos],box=0,charsize=1.0 - isort = sort(sn) - items=string(sn[isort],format='(f4.1)') - xpos = xpos - (xrange[1]-xrange[0])*0.3 - xyouts, xpos, ypos, ' SN',charsize=1.0 - legend, items,color=colors[isort],textcolor=colors[isort],pos=[xpos,ypos],box=0,charsize=1.0 - - items=strmid(calibname,15,8) - xpos = xpos - (xrange[1]-xrange[0])*0.35 - legend, items,color=colors,textcolor=colors,pos=[xpos,ypos],box=0,charsize=1.0 - -end - -; this routine plot the actual mratio for each good std in a single exposure -pro rm_checkmratio_1exp, calibname, calibdir=calibdir, topdir=topdir,title=title, $ - noanno=noanno,nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - if not keyword_set(calibdir) then $ - calibdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/recalib/test5/' - - if not keyword_set(topdir) then topdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/' - - if n_elements(calibname) ne 1 then message, 'rm_checkmratio_1exp only works for a single exp' - - spname=repstr(calibname,'Fluxcalib','Frame') - - print, topdir+spname, calibdir+calibname - kindx=mrdfits(calibdir+calibname,2,/silent) - indx=where(kindx.qgood eq 1, ngood) - - if strmatch(calibname,'*1-*') then ccd=1 else ccd=2 - if ccd eq 1 then igood=kindx[indx].fiberid - 1L $ - else igood=kindx[indx].fiberid - 500L - 1L - - spframe_read,topdir+spname,igood,plugmap=plugmap,hdr=hdr1,objflux=objflux,objivar=objivar - sn_all = objflux*sqrt(objivar) - get_tai, hdr1, tai_beg, tai, tai_end - ; airmass, xfocal and yfocal for ngood std - airmass = tai2airmass(plugmap.ra, plugmap.dec, tai=tai) - xfocal = plugmap.xfocal & yfocal = plugmap.yfocal - - expname=calibname - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel, perdiff=perdiff - - if keyword_set(nprox) then $ - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat_nprox, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel, perdiff=perdiff_nprox,airmass=airmass $ - , nprox=nprox,selfexclud=selfexclud - - if keyword_set(xyfit) then $ - plot_exp_mratio,expname,calibdir=calibdir,ratioscat=ratioscat_nprox, loglam=loglam $ - , /noplot, xrange=xrange, channel=channel, perdiff=perdiff_nprox,/xyfit $ - , xfocal=xfocal,yfocal=yfocal - - yrange=[-0.5,0.5] - xmargin = !x.margin - ; print, xmargin - !x.margin = [7, 14] - ang=string(197B) - plot,[0],[0],xrange=xrange,yrange=yrange,/xsty,/ysty,/nodata, $ - xtitle='Wavelength ['+ang+']',ytitle='mratio deviation [100%]', $ - title=title - - cgloadct,25, ncolors=ngood - colors = indgen(ngood) - for i=0L, ngood - 1L do begin - oplot, 10.^loglam, perdiff[*,i],color=colors[i] - if keyword_set(nprox) or keyword_set(xyfit) then $ - oplot, 10.^loglam, perdiff_nprox[*,i],color=colors[i],line=2 - endfor - if keyword_Set(nprox) then xyouts, xrange[0]+(xrange[1]-xrange[0])*0.7, 0.8*yrange[0],$ - 'Nprox='+string(nprox,format='(i0)'),charsize=1.0,color=cgcolor('opposite',256L) - if keyword_set(xyfit) and strmatch(expname,'*-b*') then begin - ; xyouts, xrange[0]+(xrange[1]-xrange[0])*0.7, 0.8*yrange[0],$ - ; 'xyfit',charsize=1.0,color=cgcolor('opposite',256L) - items=['BOSS pipeline', 'custom'] - legend, items, line=[0,2],box=0,pos=[0.35,0.68],charsize=1.5, /norm, $ - color=cgcolor('opposite',256L),textcolor=cgcolor('opposite',256L),spacing=1,thick=5 - endif - - if not keyword_set(noanno) then begin - xpos = 0.75 & ypos = 0.95 - xyouts, xpos, ypos, ' airmass',charsize=1.0,/norm, color=cgcolor('opposite',256L) - isort = sort(airmass) - items=string(airmass[isort],format='(f4.2)') - legend, items,color=colors[isort],textcolor=colors[isort],pos=[xpos,ypos],box=0,charsize=1.0,/norm - isort = sort(xfocal) - items=string(xfocal[isort],format='(f0.1)') - xpos = xpos + 0.075 - xyouts, xpos, ypos, ' xfocal',charsize=1.0,/norm, color=cgcolor('opposite',256L) - legend, items,color=colors[isort],textcolor=colors[isort],pos=[xpos,ypos],box=0,charsize=1.0,/norm - isort = sort(yfocal) - items=string(yfocal[isort],format='(f0.1)') - xpos = xpos + 0.075 - xyouts, xpos, ypos, ' yfocal',charsize=1.0,/norm, color=cgcolor('opposite',256L) - legend, items,color=colors[isort],textcolor=colors[isort],pos=[xpos,ypos],box=0,charsize=1.0,/norm - endif - cgloadct,0 - - !x.margin = xmargin -end - -pro rm_diag_mratio_epoch, platelist, mjdlist, oneexp=oneexp,nprox=nprox,selfexclud=selfexclud $ - , xyfit=xyfit, nexp=nexp - -; set /oneexp to plot the mratio for individual good std in each exposure - - if n_elements(platelist) eq 0 then begin - ;platelist=[7338,7338,7338,7339,7339] - ;mjdlist=[56660,56664,56669,56683,56686] - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - indd = where(fibermap[0].plate ne 0, nepoch) - platelist = (fibermap[0].plate)[indd] - mjdlist = (fibermap[0].mjd)[indd] - endif - - ; default is to exclude the std itself in fluxing - if n_elements(selfexclud) eq 0 then selfexclud = 1L - - nepoch = n_elements(platelist) - calibdir=[replicate('/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/recalib/test20/',3), $ - replicate('/data3/quasar/yshen/spectro/bossredux/v5_6_0/7339/recalib/test20/',3)] - topdir=[replicate('/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/',3), $ - replicate('/data3/quasar/yshen/spectro/bossredux/v5_6_0/7339/',3)] - tag = string(platelist,format='(i4.4)')+'-'+string(mjdlist,format='(i5.5)') - - figfile = getenv('IDLRM_DIR')+'/misc/diag_mratio.ps' - if keyword_set(oneexp) then figfile = getenv('IDLRM_DIR')+'/misc/diag_mratio_1exp.ps' - if keyword_set(xyfit) then figfile = repstr(figfile,'.ps', '_xyfit.ps') - begplot,name=figfile,/color - !p.multi = [0,2,3] - if keyword_set(oneexp) then !p.multi = [0,1,2] - - for iepoch = 0L, nepoch - 1L do begin - - rm_expinfo,platelist[iepoch],mjdlist[iepoch],expinfo=expinfo - ind=where(expinfo.coadded[0,*] eq 1, ncoadd) - if keyword_set(nexp) then ncoadd=nexp ; only plot the first nexp exposures - - calibdir1=calibdir[iepoch] & topdir1=topdir[iepoch] - - ; This plots the dispersion in mratio for all exps - if not keyword_set(oneexp) then begin - ; this is blue ccd1 [coadded exposures] - spname=reform((expinfo[ind].name)[0,*]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', Ncoadd='+string(ncoadd,format='(i0)') - rm_checkmratio, calibname, calibdir=calibdir1, topdir=topdir1,title=title,$ - nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - ; this is red ccd1 [coadded exposures] - spname=reform((expinfo[ind].name)[2,*]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', Ncoadd='+string(ncoadd,format='(i0)') - rm_checkmratio, calibname, calibdir=calibdir1, topdir=topdir1,title=title,$ - nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - ; this is blue ccd2 [coadded exposures] - spname=reform((expinfo[ind].name)[1,*]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', Ncoadd='+string(ncoadd,format='(i0)') - rm_checkmratio, calibname, calibdir=calibdir1, topdir=topdir1,title=title,$ - nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - ; this is red ccd2 [coadded exposures] - spname=reform((expinfo[ind].name)[3,*]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', Ncoadd='+string(ncoadd,format='(i0)') - rm_checkmratio, calibname, calibdir=calibdir1, topdir=topdir1,title=title,$ - nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - - endif else begin - - ; this for each exposure - for iexp=0L, ncoadd - 1L do begin - ; blue ccd1 - spname=reform((expinfo[ind].name)[0,iexp]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', ' + strmid(spname,8,11) - rm_checkmratio_1exp,calibname[0],calibdir=calibdir1, topdir=topdir1,$ - title=title,nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - ; red ccd1 - spname=reform((expinfo[ind].name)[2,iexp]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', ' + strmid(spname,8,11) - rm_checkmratio_1exp,calibname[0],calibdir=calibdir1, topdir=topdir1,$ - title=title, /noanno,nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - ; blue ccd2 - spname=reform((expinfo[ind].name)[1,iexp]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', ' + strmid(spname,8,11) - rm_checkmratio_1exp,calibname[0],calibdir=calibdir1, topdir=topdir1,$ - title=title,nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - ; red ccd2 - spname=reform((expinfo[ind].name)[3,iexp]) - calibname=repstr(spname,'Frame','Fluxcalib') + '.gz' - title = tag[iepoch] + ', ' + strmid(spname,8,11) - rm_checkmratio_1exp,calibname[0],calibdir=calibdir1, topdir=topdir1,$ - title=title, /noanno,nprox=nprox,selfexclud=selfexclud,xyfit=xyfit - - - endfor - - endelse - endfor - - !p.multi = 0 - endplot - - if keyword_Set(oneexp) then begin - cmd = 'gzip ' + figfile - spawn, cmd - endif - -end diff --git a/pro/rm/rm_coaddspec.pro b/pro/rm/rm_coaddspec.pro deleted file mode 100644 index bb702b767..000000000 --- a/pro/rm/rm_coaddspec.pro +++ /dev/null @@ -1,305 +0,0 @@ -;+ -; NAME: -; rm_coadd1spec -; PURPOSE: -; Coadd one object -; -; INPUTS: -; inloglam - Wavelengths in log10-Angstroms [NPIX,NSPEC] -; objflux - Flux [NPIX,NSPEC] -; -; REQUIRED KEYWORDS: -; newloglam - Wavelengths for output evaluation, also in log10-Angstroms -; [NNEWPIX] -; -; OPTIONAL INPUTS: -; objivar - Inverse variance [NPIX,NSPEC] -; finalmask - Pixel mask [NPIX,NSPEC] -; indisp - Dispersion values [NPIX,NSPEC] -; skyflux - Sky flux vectors [NPIX,NSPEC] -; binsz - Bin separation for INLOGLAM; if not set, then default -; to INLOGLAM[1]-INLOGLAM[0]. -; nord - Order of spline fit; default to 3. -; bkptbin - Break point binning; default to 1.2 * BINSZ. -; maxsep - Maximum separation between input wavelengths. The spline -; fit is split into pieces, with the breaks wherever this -; spacing is exceeded. Default to 2.0 * BINSZ. -; _EXTRA - Keywords for DJS_REJECT(). -; verbose - If set, then output messages about bad break points and -; masked data points. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; finalmask - Modified from its input by setting the COMBINEREJ bit -; for deviant pixels in individual spectra that have -; been rejected. -; objivar - Modified from itts input by setting to zero wherever -; the COMBINEREJ bit has been set in FINALMASK. -; newflux - Resampled flux [NNEWPIX]. -; newivar - Resampled inverse variance [NNEWPIX]. -; andmask - Resampled mask. For each mask bit, set that bit only if -; every input spectrum at this wavelength has that bit set -; (e.g., this is a logical AND) [NNEWPIX]. -; ormask - Resampled mask. For each mask bit, set that bit if any -; of the input spectra at this wavelength has that bit set -; (e.g., this is a logical OR) [NNEWPIX]. -; newdisp - Resampled dispersion values [NNEWPIX]. -; newsky - Resampled sky flux [NNEWPIX]. -; -;------------------------------ -pro rm_coadd1spec, inloglam, objflux, objivar, $ - inandmask=inandmask, inormask=inormask, indisp=indisp, skyflux=skyflux, $ - newloglam=newloglam, newflux=newflux, newivar=newivar, $ - andmask=andmask, ormask=ormask, newdisp=newdisp, newsky=newsky, $ - nord=nord, binsz=binsz - - if not keyword_set(binsz) then binsz=1d-4 - - rm_combine1fiber, inloglam, objflux, objivar, $ - inandmask=inandmask, inormask=inormask, $ - indisp=indisp, skyflux=skyflux, $ - newloglam=newloglam, newflux=bestflux, newivar=bestivar, $ - andmask=bestandmask, ormask=bestormask, newdisp=bestdispersion, $ - newsky=bestsky, $ - nord=nord, binsz=binsz, bkptbin=bkptbin, maxsep=maxsep - ; do not reject outliers during bspline-fit - ; since individual epochs could vary in flux significantly - ; maxiter=50, upper=3.0, lower=3.0, maxrej=1 - - newflux = bestflux & newivar = bestivar - andmask = bestandmask & ormask = bestormask - newdisp = bestdispersion & newsky = bestsky - -end -; -;------------------------------- -;+ -; NAME: -; rm_coaddspec -; -; PURPOSE: -; Coadd all epochs for the objects on the RM plate, and output a single spPlate file -; -; OPTIONAL INPUTS: -; specdir_prefix - Path prefix of the individual spPlate* files, e.g., 'recalib/' -; To use the pipeline reduction, set specdir_prefix='' -; To use the WH sky-sub improved reduction, set specdir_prefix='wh_skysub/' -; and set the outfile name properly -; mjd_coadd - If set, only coadd those epochs specified by mjd -; id_coadd - Indices of coadded object in fibermap; default is all 1000 objects -; -; REVISION HISTORY: -; 08-May-2014 Changed HUD0,1,4,6 outputs from double to float to match standard SDSS format -;------------------------------ - -pro rm_coaddspec, specdir_prefix=specdir_prefix, mjd_coadd=mjd_coadd, id_coadd=id_coadd, $ - outfile=outfile - - forward_function rm_combine1fiber - - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') + '/' - - - ; Default is to use the new xyfit reduction - If not keyword_set(specdir_prefix) then specdir_prefix = 'wh_skysub/' ;'recalib/' - - ; Read in the master file - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - ; If specified, only coadd these objects - if n_elements(id_coadd) gt 0 then fibermap = fibermap[id_coadd] - - platearr = fibermap.plate - fiberarr = fibermap.fiberid - mjdarr = fibermap.mjd - ind = where(platearr[*,0] gt 0, nnn) - platearr = platearr[ind,0] - fiberarr = fiberarr[ind,*] - mjdarr = mjdarr[ind,0] - ; If specified, only coadd these epochs - if n_elements(mjd_coadd) gt 0 then begin - flag = lonarr(nnn) - for j=0L,n_elements(mjd_coadd) - 1L do begin - indd = where(mjdarr eq mjd_coadd[j]) - if indd[0] ne -1 then flag[indd] = 1L - endfor - ind_mjd = where(flag eq 1) - platearr = platearr[ind_mjd] - fiberarr = fiberarr[ind_mjd,*] - mjdarr = mjdarr[ind_mjd] - endif - nepoch = n_elements(platearr) - nfiber = n_elements(fibermap) - - ; Set up the common wavelength grid of the final coadd - wavemin=3.5523 & wavemax=4.0171 - binsz = 1.d-4 - spotmin = 0L - spotmax = round((wavemax - wavemin)/binsz) - nfinalpix = spotmax - spotmin + 1L - newloglam = dindgen(nfinalpix) * binsz + wavemin - - wavearr = dblarr(nfinalpix,nfiber,nepoch) - fluxarr = dblarr(nfinalpix,nfiber,nepoch) - ivararr = dblarr(nfinalpix,nfiber,nepoch) - skyarr = dblarr(nfinalpix,nfiber,nepoch) - disparr = dblarr(nfinalpix,nfiber,nepoch) - andmaskarr = lonarr(nfinalpix,nfiber,nepoch) - ormaskarr = lonarr(nfinalpix,nfiber,nepoch) - - ; These are the final spPlate images [NFINALPIX,NFIBER] - finalflux = dblarr(nfinalpix,nfiber) - finalivar = dblarr(nfinalpix,nfiber) - finalsky = dblarr(nfinalpix,nfiber) - finaldisp = dblarr(nfinalpix,nfiber) - finalandmask = lonarr(nfinalpix,nfiber) - finalormask = lonarr(nfinalpix,nfiber) - - ; Get the plugmap structure from the first epoch - rm_readspec,platearr[0],fiberarr[0,*],mjd=mjdarr[0],plugmap=plugmap1,/silent - - ; Populate each epoch - for i=0L, nepoch - 1L do begin - - path = topdir + string(platearr[i],format='(i4.4)') + '/' + specdir_prefix - rm_readspec,platearr[i],fiberarr[i,*],mjd=mjdarr[i],wave=wave1,flux=flux1, $ - invvar=ivar1,sky=sky1,disp=disp1,andmask=andmask1,ormask=ormask1,path=path,$ - /silent - npix = (size(wave1))[1] - if npix gt nfinalpix then npix = nfinalpix - - ; Note the wavelength array could differ slightly for different epochs - wavearr[0:npix-1,*,i] = alog10(wave1) - ; Set the extra wave array gracefully in increasing order - if npix lt nfinalpix then begin - for jj=0L,nfiber-1 do wavearr[npix:nfinalpix-1,jj,i] $ - = wavearr[npix-1,jj,i] + binsz*(1.+findgen(nfinalpix-npix)) - endif - - fluxarr[0:npix-1,*,i] = flux1 - ivararr[0:npix-1,*,i] = ivar1 - skyarr[0:npix-1,*,i] = sky1 - disparr[0:npix-1,*,i] = disp1 - andmaskarr[0:npix-1,*,i]=andmask1 - ormaskarr[0:npix-1,*,i]=ormask1 - endfor - - ; Combine each object - for i=0L, nfiber - 1L do begin - - inandmask = reform(andmaskarr[*,i,*]) - inormask = reform(ormaskarr[*,i,*]) - inloglam = reform(wavearr[*,i,*]) - objflux = reform(fluxarr[*,i,*]) - objivar = reform(ivararr[*,i,*]) - indisp = reform(disparr[*,i,*]) - skyflux = reform(skyarr[*,i,*]) - - ;-------------------------------------------------------------- - ; Set the pixel ivar=0 if the inormask/inandmask is really bad - ; so that these pixels won't be coadded - ; What bits to use ??? - ; badmask=1 for bad pixel - badmask = make_array(size=size(objivar),/long) - ;badmask = badmask OR ((inormask AND pixelmask_bits('BADSKYCHI')) NE 0) - objivar = objivar * (1 - badmask) - ;-------------------------------------------------------------- - - rm_coadd1spec, inloglam, objflux, objivar, $ - inandmask=inandmask, inormask=inormask, indisp=indisp, skyflux=skyflux, $ - newloglam=newloglam, newflux=newflux, newivar=newivar, $ - andmask=andmask, ormask=ormask, newdisp=newdisp, newsky=newsky, $ - nord=nord, binsz=binsz - - finalflux[*,i] = newflux - finalivar[*,i] = newivar - finalsky[*,i] = newsky - finaldisp[*,i] = newdisp - finalandmask[*,i] = andmask - finalormask[*,i] = ormask - - splog, 'Finished coadding object: ', i+1 - - ; message, 'stop' - - endfor - - ; Output the final spPlate file - spfile1 = topdir+string(platearr[0],format='(i4.4)') + '/' + specdir_prefix $ - + 'spPlate-' + string(platearr[0],format='(i4.4)')+ '-' $ - + string(mjdarr[0],format='(i5.5)') + '.fits' - tmp = mrdfits(spfile1,0,bighdr,/silent) - tmp = mrdfits(spfile1,1,hdrfloat,/silent) - tmp = mrdfits(spfile1,2,hdrlong,/silent) - tmp = mrdfits(spfile1,3,hdrlong,/silent) - tmp = mrdfits(spfile1,4,hdrfloat,/silent) - tmp = mrdfits(spfile1,5,hdrplug,/silent) - tmp = mrdfits(spfile1,6,hdrsky,/silent) - totexptime = 0. - for i=0L,nepoch-1 do begin - spfile1 = topdir+string(platearr[i],format='(i4.4)') + '/' + specdir_prefix $ - + 'spPlate-' + string(platearr[i],format='(i4.4)')+ '-' $ - + string(mjdarr[i],format='(i5.5)') + '.fits' - tmp = mrdfits(spfile1,0,tmphdr,/silent) - thisexptime = fxpar(tmphdr,'EXPTIME') - totexptime = totexptime + thisexptime - endfor - - maxmjd = max(mjdarr) - If not keyword_set(outfile) then $ - outfile = topdir + '0000/wh_skysub/spPlate-0000-'+string(maxmjd,format='(i5.5)')+'.fits' - - ; HDU #0 is flux - sxaddpar, bighdr, 'BUNIT', '1E-17 erg/cm^2/s/Ang' - sxaddpar, bighdr, 'NAXIS1', nfinalpix - sxaddpar, bighdr, 'NAXIS2', nfiber - sxaddpar, bighdr, 'MJD', maxmjd ; 99999 - mjdlist = mjdarr - mjdlist = mjdlist[uniq(mjdlist, sort(mjdlist))] - mjdlist = strtrim(strcompress(string(mjdlist,format='(99a)')),2) - sxaddpar, bighdr, 'MJDLIST', mjdlist, after='MJD' - sxaddpar, bighdr, 'COEFF0', wavemin, $ - ' Central wavelength (log10) of first pixel' - sxaddpar, bighdr, 'COEFF1', binsz, ' Log10 dispersion per pixel' - sxaddpar, bighdr, 'NEXP', nepoch, $ - ' Number of coadded epochs', before='EXPTIME' - sxaddpar, bighdr, 'EXPTIME', totexptime, $ - ' Minimum of total exposure times for all cameras' - spawn, 'uname -n', uname - sxaddpar, bighdr, 'UNAME', uname[0] - mwrfits, float(finalflux), outfile, bighdr, /create - - ; HDU #1 is inverse variance - sxaddpar, hdrfloat, 'BUNIT', '1/(1E-17 erg/cm^2/s/Ang)^2' - sxaddpar, hdrfloat, 'EXTNAME', 'IVAR', ' Inverse variance' - mwrfits, float(finalivar), outfile, hdrfloat - - ; HDU #2 is AND-pixelmask - sxaddpar, hdrlong, 'EXTNAME', 'ANDMASK', ' AND Mask' - mwrfits, finalandmask, outfile, hdrlong - - ; HDU #3 is OR-pixelmask - sxaddpar, hdrlong, 'EXTNAME', 'ORMASK', ' OR Mask' - mwrfits, finalormask, outfile, hdrlong - - ; HDU #4 is dispersion map - sxaddpar, hdrfloat, 'BUNIT', 'pixels' - sxaddpar, hdrfloat, 'EXTNAME', 'WAVEDISP', ' Wavelength dispersion' - mwrfits, float(finaldisp), outfile, hdrfloat - - ; HDU #5 is plugmap - ; Use the plugmap from the first epoch - finalplugmap = plugmap1 - ; Reassign fiberid - finalplugmap.fiberid = lindgen(nfiber)+1 - sxaddpar, hdrplug, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - mwrfits, finalplugmap, outfile, hdrplug - - ; HDU #6 is the sky - sxaddpar, hdrsky, 'EXTNAME', 'SKY', ' Subtracted sky flux' - mwrfits, float(finalsky), outfile, hdrsky - - -end - diff --git a/pro/rm/rm_comb_diff_img_lc.pro b/pro/rm/rm_comb_diff_img_lc.pro deleted file mode 100644 index 09f1916e3..000000000 --- a/pro/rm/rm_comb_diff_img_lc.pro +++ /dev/null @@ -1,208 +0,0 @@ -; combine the light curves from Karen's difference imaging work - -pro rm_comb_diff_img_lc, specfile=specfile, outdir=outdir - - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - epoch_info=mrdfits(file,2) - - ; diff LC dir - topdir='/data3/yshen/ftp/sdssrm/collab/photo_lc/img_diff_lc/' - - topdir_std_bok='/data3/yshen/ftp/sdssrm/collab/photo_lc/std/bok/' - - ; output path for the combined LCs - if ~keyword_set(outdir) then outdir=topdir - - ; read in synthetic flux from spectra - if ~keyword_set(specfile) then $ - specfile='/data3/yshen/ftp/sdssrm/collab/photo_lc/spec_syn_prepspec_nov11_2015.fits' - specflux=mrdfits(specfile,1) - - ;rmid=indgen(849) - ;nnn=n_elements(rmid) - ;nep=200L ; reserved for 200 photo epochs - ;result={RMID:0L, zfinal:0.D, objc_type:0L, MJD:dblarr(nep), $ - ; g_mag_cfht:dblarr(nep), g_mag_cfht_err:dblarr(nep), $ - ; g_fnu_cfht:dblarr(nep), g_fnu_cfht_err:dblarr(nep), $ - ; i_mag_cfht:dblarr(nep), i_mag_cfht_err:dblarr(nep), $ - ; i_fnu_cfht:dblarr(nep), i_fnu_cfht_err:dblarr(nep), $ - ; g_mag_bok:dblarr(nep), g_mag_bok_err:dblarr(nep), $ - ; g_fnu_bok:dblarr(nep), g_fnu_bok_err:dblarr(nep), $ - ; i_mag_bok:dblarr(nep), i_mag_bok_err:dblarr(nep), $ - ; i_fnu_bok:dblarr(nep), i_fnu_bok_err:dblarr(nep)} - ;tags=tag_names(result) - ;result=replicate(result,nnn) - ;result.zfinal=target[rmid].zfinal - ;result.objc_type=target[rmid].objc_type - - ; get the LCs - band=['g', 'i'] - for iband=0,1 do begin - ; for CFHT data - fld=['a','b','c','d','e','f','g','h','i'] - nfld=n_elements(fld) - ; loop over all fields - for idith=1,2 do begin - for ifld=0,nfld-1 do begin - fldtag=fld[ifld]+string(idith,format='(i0)')+band[iband] - datdir=topdir + fldtag +'/' - orig0='cfht_'+fld[ifld]+string(idith,format='(i0)') - ; get ccd# - ccdfile=datdir+fldtag+'.dat' - readcol,ccdfile,format='a,x,x,x,x,x,x,a',/silent, rmid_ccd, ccd_no - rmid_ccd=long(strmid(rmid_ccd,2)) - - files=file_search(datdir+'rm*.dat') - len=strlen(datdir) - rmid=long(strmid(strmid(files,len),2, 3)) - nobj=n_elements(rmid) - for jj=0, nobj-1 do begin - readcol, files[jj], format='d,d,d',mjd,flux,flerr,/silent - ; find the ccd number for each rmid - ind_ccd=where(rmid_ccd eq rmid[jj]) - if ind_ccd[0] ne -1 then begin - orig=orig0 + '_' + ccd_no[ind_ccd[0]] - endif else splog, 'obj not found in dat file: rm', rmid[jj],fldtag+'.dat' - ntmp=n_elements(mjd) - if n_elements(mjd_arr) eq 0 then mjd_arr=mjd else mjd_arr=[mjd_arr,mjd] - if n_elements(flux_arr) eq 0 then flux_arr=flux else flux_arr=[flux_arr,flux] - if n_elements(flerr_arr) eq 0 then flerr_arr=flerr else flerr_arr=[flerr_arr,flerr] - if n_elements(rmid_arr) eq 0 then rmid_arr=replicate(rmid[jj],ntmp) else $ - rmid_arr=[rmid_arr, replicate(rmid[jj],ntmp)] - if n_elements(band_arr) eq 0 then band_arr=replicate(band[iband],ntmp) else $ - band_arr=[band_arr, replicate(band[iband],ntmp)] - if n_elements(orig_arr) eq 0 then orig_arr=replicate(orig,ntmp) else $ - orig_arr=[orig_arr, replicate(orig,ntmp)] - endfor - print, 'band,fld,pos finished:',band[iband],fld[ifld],idith - endfor - endfor - - ; for bok data - fld=string(indgen(18),format='(i2.2)') & nfld=18 - for ipos=1,4 do begin - for ifld=0,nfld-1 do begin - datdir=topdir+'bokdata_'+band[iband]+'/'+strupcase(band[iband])+fld[ifld] $ - +'_ccd'+string(ipos,format='(i0)')+'/' - orig='bok_'+fld[ifld]+'_ccd'+string(ipos,format='(i0)') - files=file_search(datdir+'rm*.dat') - len=strlen(datdir) - rmid=long(strmid(strmid(files,len),2, 3)) - nobj=n_elements(rmid) - for jj=0, nobj-1 do begin - readcol, files[jj], format='d,d,d',mjd,flux,flerr,/silent - ntmp=n_elements(mjd) - mjd_arr=[mjd_arr,mjd] - flux_arr=[flux_arr,flux] - flerr_arr=[flerr_arr,flerr] - rmid_arr=[rmid_arr, replicate(rmid[jj],ntmp)] - band_arr=[band_arr, replicate(band[iband],ntmp)] - orig_arr=[orig_arr, replicate(orig,ntmp)] - endfor - ; now do it for the 70 std stars -- note they are in a different dir - datdir=topdir_std_bok+strupcase(band[iband])+fld[ifld] $ - +'stnd_ccd'+string(ipos,format='(i0)')+'/' - files=file_search(datdir+'rm*.dat',count=nfound) - if nfound gt 0 then begin ; only if a std is found - len=strlen(datdir) - rmid=long(strmid(strmid(files,len),2, 3)) - nobj=n_elements(rmid) - for jj=0, nobj-1 do begin - readcol, files[jj], format='d,d,d',mjd,flux,flerr,/silent - ntmp=n_elements(mjd) - mjd_arr=[mjd_arr,mjd] - flux_arr=[flux_arr,flux] - flerr_arr=[flerr_arr,flerr] - rmid_arr=[rmid_arr, replicate(rmid[jj],ntmp)] - band_arr=[band_arr, replicate(band[iband],ntmp)] - orig_arr=[orig_arr, replicate(orig,ntmp)] - endfor - endif - print, 'band,fld,pos finished:',band[iband],fld[ifld],ipos - endfor - endfor - endfor - ; flip the sign of the flux for the original diff img LC - flux_arr = -flux_arr - - ; for spec-synthetic - nep_spec=n_elements(specflux[0].mjd) - for iobj=0, max(specflux.rmid) do begin - ; g-band, prepspec flux - rmid_arr=[rmid_arr, replicate(specflux[iobj].rmid, nep_spec) ] - band_arr=[band_arr, replicate('g', nep_spec) ] - orig_arr=[orig_arr, replicate('spec', nep_spec) ] - mjd_arr=[mjd_arr, specflux[iobj].mjd] - flux_arr=[flux_arr, reform((specflux[iobj].gri_fnu)[0,*]) ] - flerr_arr=[flerr_arr, reform((specflux[iobj].gri_fnu_err)[0,*]) ] - ; g-band, original flux - rmid_arr=[rmid_arr, replicate(specflux[iobj].rmid, nep_spec) ] - band_arr=[band_arr, replicate('g', nep_spec) ] - orig_arr=[orig_arr, replicate('spec_orig', nep_spec) ] - mjd_arr=[mjd_arr, specflux[iobj].mjd] - flux_arr=[flux_arr, reform((specflux[iobj].gri_fnu_ori)[0,*]) ] - flerr_arr=[flerr_arr, reform((specflux[iobj].gri_fnu_ori_err)[0,*]) ] - ; i-band, prepspec flux - rmid_arr=[rmid_arr, replicate(specflux[iobj].rmid, nep_spec) ] - band_arr=[band_arr, replicate('i', nep_spec) ] - orig_arr=[orig_arr, replicate('spec', nep_spec) ] - mjd_arr=[mjd_arr, specflux[iobj].mjd] - flux_arr=[flux_arr, reform((specflux[iobj].gri_fnu)[2,*]) ] - flerr_arr=[flerr_arr, reform((specflux[iobj].gri_fnu_err)[2,*]) ] - ; i-band, original flux - rmid_arr=[rmid_arr, replicate(specflux[iobj].rmid, nep_spec) ] - band_arr=[band_arr, replicate('i', nep_spec) ] - orig_arr=[orig_arr, replicate('spec_orig', nep_spec) ] - mjd_arr=[mjd_arr, specflux[iobj].mjd] - flux_arr=[flux_arr, reform((specflux[iobj].gri_fnu_ori)[2,*]) ] - flerr_arr=[flerr_arr, reform((specflux[iobj].gri_fnu_ori_err)[2,*]) ] - splog, 'Spec RMID finished: ', iobj - endfor - - ntot=n_elements(rmid_arr) - alldata={rmid:0L, mjd:0.D, flux:0.D, flerr:0.D, band:'', orig:''} - alldata=replicate(alldata, ntot) - alldata.rmid=rmid_arr & alldata.mjd=mjd_arr & alldata.flux=flux_arr - alldata.flerr=flerr_arr & alldata.band=band_arr & alldata.orig=orig_arr - outfile1=outdir + 'alldata.fits' - mwrfits, alldata, outfile1, /create - - ; now output individual LC for each object - nnn=max(rmid_arr)+1 - for i=0L, nnn-1 do begin - ind=where(rmid_arr eq i, nfound) - if nfound gt 0 then begin - outfile=outdir+'by_rmid/rm'+string(i,format='(i3.3)')+'.fits' - output=alldata[ind] - indd=sort(output.mjd) - output=output[indd] - mwrfits, output, outfile, /create,/silent - endif - endfor - -end - - -; untar all the img files -pro untar_img_file, topdir=topdir, tag=tag - -band=['i','g'] -for iband=0,1 do begin - if ~keyword_set(topdir) then $ - dir='/data3/yshen/ftp/sdssrm/collab/photo_lc/img_diff_lc/bokdata_' + band[iband] + '/' $ - else dir=topdir - cd, dir - for ifld=0,17 do begin - for iccd=1,4 do begin - if keyword_set(tag) then name=strupcase(band[iband])+string(ifld,format='(i2.2)')+tag+'_ccd'+string(iccd,format='(i0)') $ - else name=strupcase(band[iband])+string(ifld,format='(i2.2)')+'_ccd'+string(iccd,format='(i0)') - spawn, 'mkdir ' + name - cd, name - spawn, 'mv ../'+name+'.tar ./' - spawn, 'tar xfv ' + name+'.tar' - cd, dir - endfor - endfor -endfor -end diff --git a/pro/rm/rm_combine_script.pro b/pro/rm/rm_combine_script.pro index e95a5e900..b3fd4262c 100644 --- a/pro/rm/rm_combine_script.pro +++ b/pro/rm/rm_combine_script.pro @@ -1,16 +1,67 @@ -; Script to re-process epochs with the xyfit custom flux calibration -; Example: rm_combine_script, planfile -; use run2d='v5_7_1' for 2014 data and run2d='v5_10_10' for eBOSS data (2015-) +;+ +; NAME: +; rm_combine_script +; +; PURPOSE: +; Script to process epochs with the xyfit custom flux calibration +; +; CALLING SEQUENCE: +; +; INPUTS: +; planfile - Name(s) of output plan file +; +; OPTIONAL INPUTS: +; run2d - Name of the run2d +; finaldir - Additional subdirectory for output +; xyfit - Compute 2d flux corrections in the xy focal plane +; bscore - Fraction of best exposure score to use as a threshold for discarding exposures +; minsn2 - Minimum S/N^2 to include science frame in coadd; default +; to 0 to only include those with S/N > 0. +; Note that all exposures with a score less than 0.2 times +; the score of the best exposure are discarded; for those +; purposes, the score used is the worst of all 4 cameras. +; +; +; Optional Keywords: +; MWM_fluxer - Utilize MWM optional settings (ie gaia reddening and different S/N cuts) +; nofcorr - Skip the step to generate and use the spFluxcorr* files +; nodist - Skip the step to generate and use the spFluxdistort* files +; radec_coadd - Coadd using ra-dec matching rather then catalogID matching +; no_reject - Turns off rejection in the coadding +; onestep_coadd - Legacy algorithm for coadd. Coadding blue+red and all exposures +; at the the same time. +; epoch - Epoch Coadd flag for input and outputs +; legacy - Flag for Pre-SDSSV 2 Spectrograph data at APO +; plates - Flat for SDSSV 1 Spectrograph plate data at APO +; loaddesi - Load the DESI (JG) models for fluxing +; skipfluxing - Skip the step to generate spFluxcalib* files +; skipfcorr - Skip creation of flux-correction vectors and use prexisting spFluxcorr* files +; +; OUTPUT: +; +; COMMENTS: +; EXAMPLES: +; +; BUGS: +; This routine spawns the Unix command 'mkdir'. +; +; PROCEDURES CALLED: +; get_field_dir +; djs_filepath +; rm_spcombine_v5 +; +; +;------------------------------------------------------------------------------ + pro rm_combine_script, planfile, run2d=run2d,skipfluxing=skipfluxing, skipfcorr=skipfcorr, $ - nofcorr=nofcorr,nodist=nodist, method=method, finaldir=finaldir,xyfit=xyfit, $ + nofcorr=nofcorr,nodist=nodist, finaldir=finaldir,xyfit=xyfit, $ loaddesi=loaddesi,legacy=legacy,plates=plates,minsn2=minsn2,bscore=bscore,$ MWM_fluxer=MWM_fluxer, radec_coadd=radec_coadd, no_reject=no_reject, $ - onestep_coadd=onestep_coadd, epoch=epoch;,special=special + onestep_coadd=onestep_coadd, epoch=epoch RESOLVE_ROUTINE,'sdss_maskbits',/EITHER,/SKIP_EXISTING, /quiet RESOLVE_ALL, /SKIP_EXISTING, /quiet, /CONTINUE_ON_ERROR;, class='COMMON' CPU, TPOOL_NTHREADS = 1 -;if n_elements(planfile) eq 0 then $ ; first determine the proper topdir if not keyword_set(epoch) then begin @@ -23,19 +74,10 @@ if not keyword_set(xyfit) then xyfit = 1L if ~keyword_set(run2d) then run2d = getenv('RUN2D') for i=0L, n_elements(planfile) - 1L do begin - if not keyword_set(epoch) then begin - if keyword_set(legacy) or keyword_set(plates) then begin - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + run2d + '/' + fieldstr[i] + '/' - endif else begin - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + run2d + '/' + fieldstr[i] + '/' - endelse - endif else begin - if keyword_set(legacy) or keyword_set(plates) then begin - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + run2d + '/' + fieldstr[i] + '/epoch/' - endif else begin - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + run2d + '/' + fieldstr[i] + '/epoch/' - endelse - endelse + topdir = get_field_dir(getenv('BOSS_SPECTRO_REDUX'), run2d, fieldstr[i]) + if keyword_set(epoch) then begin + topdir = djs_filepath('epoch', root_dir = topdir) + endif rm_spcombine_v5, planfile[i],finaldir=finaldir,xyfit=xyfit, topdir=topdir, $ skipfluxing=skipfluxing, skipfcorr=skipfcorr, nofcorr=nofcorr, $ nodist=nodist, loaddesi=loaddesi, legacy=legacy,plates=plates, $ diff --git a/pro/rm/rm_compile_qsofit.pro b/pro/rm/rm_compile_qsofit.pro deleted file mode 100644 index 7cf87b05f..000000000 --- a/pro/rm/rm_compile_qsofit.pro +++ /dev/null @@ -1,410 +0,0 @@ -;+ -; NAME: -; rm_compile_qsofit -; -; PURPOSE: -; Compile the fitting results from rm_qsofit, including Monte Carlo errors -; -; CALLING SEQUENCE: -; rm_compile_qsofit,7338,56660,[fiber=], [redshift=], [outdir=] -; rm_compile_qsofit,[7338,7338],[56660,56664] -; -; INPUTS: -; plate_in - Input plate -; mjd_in - Input MJD -; OPTIONAL INPUTS: -; outdir_in - Path of the fits file and the output file -; outfile - Name of the output file -; linename - Names of the lines to be compiled; [NLINE] -; linename should match those in $IDLRM/etc/qsoline.par, -; or whatever line list file is used in the fit -; Default: ['Halpha','Hbeta','MgII','CIII','CIV'] -; or: ['Halpha_br', 'Hbeta_br'] -; or: ['OIII5007'] ; core+wing [OIII] components -; or: ['OIII5007w', 'OIII5007c'] -; contiwave - Restwave of continuum luminosity -; Default: [1350.,1700.,3000.,5100.] -; -; OUTPUTS: -; result - Structure containing the compiled properties -; LOGLxxxx - Continuum luminosity, in log (erg/s) -; LOGLxxxx_ERR - Errors in logL_conti -; LINENAME - [peak wave, FWHM (km/s), logL_line (erg/s), rest EW, centroid of top 50% flux] -; LINENAME_ERR - Errors in LINENAME -; -; OPTIONAL OUTPUTS: -; -; INTERNAL ROUTINES CALLED: -; get_qso_prop -; -; EXTERNAL ROUTINES CALLED: -; red -; -; COMMENTS: -; -; EXAMPLES: -; -; REVISION HISTORY: -;--------------------------------------------------------------------------------------- -pro get_qso_prop, para, linelist=linelist,contiwave=contiwave, $ - z=z, conti_prop=conti_prop, line_prop=line_prop, localfit=localfit - - ; The following feature is obsolete, as the routine will recognize - ; whether or not there is a global "conti_fit" tag in para. - ; if /localfit, then use different parameter extraction - ; since the fits in rm_local_qsofit are done differently. - ; actually I found this doens't make a difference, as the - ; local-conti parameters in the para structure are not populated by - ; a specific LINENAME. - - forward_function dluminosity, f_conti_only - - ; Get continuum properties - if not keyword_set(contiwave) then contiwave=[1350.,3000.,5100.] - conti_lum_str = 'logL'+string(contiwave,format='(i0)') - conti_prop = create_struct('null',0.) - for i=0,n_elements(conti_lum_str)-1 do $ - conti_prop = struct_addtags(conti_prop,create_struct(conti_lum_str[i],0.D)) - ; now add FeII para and conti_fit (default is 14 elements in conti_fit, i.e., 3 poly terms) - conti_prop = struct_addtags(conti_prop,{conti_fit:dblarr(14), FeII_uv:dblarr(3), FeII_opt:dblarr(3), REW_Fe_4434_4684:0.D, REW_Fe_2250_2650:0.D}) - remove_tags, conti_prop, 'null', conti_prop1 - conti_prop = conti_prop1 - - ; Get line properties [peak wave, FWHM, flux, EW] - if not keyword_Set(linelist) then linelist0 = ['Hbeta_br','CIII'] $ - else linelist0 = linelist - nline = n_elements(linelist0) - line_prop = create_struct('null',0.) - for i=0, nline -1 do $ - line_prop = struct_addtags(line_prop,create_struct(linelist0[i],dblarr(5))) - remove_tags, line_prop, 'null', line_prop1 - line_prop = line_prop1 - - cs = 2.9979246d5 ; speed of light, km/s - dlum = dluminosity(z[0],/cm) - lumscale = 1d-17*(1.+z[0])*dlum^2*4.*!PI - - ; Assign to the conti_prop struct - if tag_exist(para, 'CONTI_FIT') then begin - nconti = n_elements(contiwave) - conti_fit = para.conti_fit - tmp_conti = f_conti_only(contiwave, conti_fit[6:*]) - ; Do not extrapolate the continuum fit beyond the BOSS spectral range [3600, 10400] - ind=where(contiwave*(1.+z[0]) lt 3600. or contiwave*(1.+z[0]) gt 10400.) - if ind[0] ne -1 then tmp_conti[ind] = 0.D - - tmp_conti = alog10(tmp_conti*contiwave*lumscale > 1.) ; ?? - for i=0L, nconti - 1L do conti_prop.(i) = tmp_conti[i] - ; add FeII fits and conti_fit - conti_prop.(nconti) = conti_fit - conti_prop.(nconti+1) = conti_fit[0:2] ; uv FeII - conti_prop.(nconti+2) = conti_fit[3:5] ; opt FeII - conti_prop.(nconti+3) = get_fe_ew([4434., 4684.],conti_fit,/opt) - conti_prop.(nconti+4) = get_fe_ew([2250., 2650.],conti_fit,/uv) - endif - - ; Assign to the line_prop struct - if tag_exist(para, 'LINE_FIT') then begin - line_fit = para.line_fit & line_redchi2 = para.line_redchi2 - fitflag = para.fitflag & linename = strtrim(para.linename) - for i=0L, nline - 1L do begin - - if strupcase(linelist0[i]) eq 'CIII' then $ ; default is to return CIII+SiIII+AlIII - ind=where( (strmatch(strupcase(linename),'CIII*') eq 1 or $ - strmatch(strupcase(linename),'SIIII*') eq 1 or $ - strmatch(strupcase(linename),'ALIII*') eq 1) AND fitflag eq 1) $ - else ind=where( strmatch(strupcase(linename), strupcase(linelist0[i]+'*') ) eq 1 $ - AND fitflag eq 1) - - if ind[0] ne -1 then begin - tmp_line = dblarr(5) - pp = line_fit[ind] - tmp = get_multi_gaussian_prop(pp,/diet) - tmp_line[0:2]= [ exp(tmp[0]), $ ; peak wavelength - tmp[1]*cs, $ ; FWHM - tmp[2]] ; line flux, unscaled - - ; get REW of the line - if tag_exist(para, 'CONTI_FIT') then begin - tmp_line[3]=tmp_line[2] $ - / f_conti_only(tmp_line[0], conti_fit[6:*]) ; using the global fit - endif else begin ; try to see if it is a local power-law conti fit - conti_fit = line_fit[max(ind) + [1,2] ] - f_conti = conti_fit[0]*(tmp_line[0]/3000.0)^conti_fit[1] - if f_conti gt 0 then $ - tmp_line[3]=tmp_line[2] / f_conti - endelse - - ; add the centroid computed using >0.5*peakflux - tmp_line[4] = exp(tmp[5]) - - ; Scale line flux to line luminosity - tmp_line[2]=alog10(tmp_line[2]*lumscale > 1.) - - line_prop.(i) = tmp_line - endif - - endfor - endif - -end -;--------------------------------------------------------------------------------------- -pro rm_compile_qsofit,plate_in,mjd_in,input_fiber=input_fiber, tags=tags, redshift=redshift, $ - outdir_in=outdir_in,outfile=outfile,linename=linename,contiwave=contiwave,result=result, $ - rm_plate=rm_plate,add_bhmass=add_bhmass,rm_ID=rm_ID, plate_subdir=plate_subdir, dr7=dr7 - -;;; If supply TAGS (list of objects) instead, set PLATE_IN, MJD_IN and input_fiber=lonarr(n) - - !except=0 - - if n_elements(rm_plate) eq 0 then rm_plate=1 ; default is to compile all objects on a RM plate - - if keyword_set(rm_plate) then begin - if (N_elements(plate_in) GT 1) then begin - for i=0, N_elements(plate_in)-1 do $ - rm_compile_qsofit,plate_in[i],mjd_in[i],linename=linename,contiwave=contiwave - return - endif - endif - - if not keyword_set(outdir_in) then outdir = $ - getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') $ - + '/' + string(plate_in[0],format='(i4.4)') + '/' $ - + 'qsofit/' else outdir = outdir_in - - if n_elements(input_fiber) eq 0 then begin - ; read all fibers, using the order specified by fibermap - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - fiber_all = fibermap.fiberid - ind = where((fibermap.plate)[*,0] eq plate_in[0] and (fibermap.mjd)[*,0] eq mjd_in[0]) - fiber = reform(fiber_all[ind, *]) - if plate_in[0] eq 0 then fiber = 1L+lindgen(1000L) ; for the coadded plate - endif else fiber=input_fiber - - ; Keep the QSO targets only [0-848] if this is for the RM plates - if keyword_set(rm_plate) then fiber=fiber[0:848] - - nnn=n_elements(fiber) - if n_elements(plate_in) eq nnn then plate=plate_in else plate=replicate(plate_in[0], nnn) - if n_elements(mjd_in) eq nnn then mjd=mjd_in else mjd=replicate(mjd_in[0], nnn) - platestr=string(plate,format='(i4.4)') - if ~keyword_set(dr7) then fiberstr=string(fiber,format='(i4.4)') else fiberstr=string(fiber,format='(i3.3)') - mjdstr=string(mjd,format='(i5.5)') - - ; get file identification - if ~keyword_set(tags) then begin - if ~keyword_set(dr7) then tags = platestr+'-'+mjdstr+'-'+fiberstr else $ - tags = platestr+'-'+fiberstr+'-'+mjdstr - endif - - ; Create the output structure - result = {tag:'',rm_ID:-1L,plate:0L,mjd:0L,fiberid:0L,z:0.D,conti_redchi2:0.D} - nheader = n_tags(result) - - if not keyword_Set(contiwave) then contiwave=[1350.,1700.,3000.,5100.] - nconti = n_elements(contiwave) - conti_lum_str = 'logL'+string(contiwave,format='(i0)') - for i=0,nconti-1 do $ - result = struct_addtags(result,create_struct(conti_lum_str[i],0.D)) - ; Add FeII fits and conti_fit - result=struct_addtags(result,{conti_fit:dblarr(14), FeII_uv:dblarr(3), FeII_opt:dblarr(3),REW_Fe_4434_4684:0.D,REW_Fe_2250_2650:0.D}) - - conti_err_str = 'logL'+string(contiwave,format='(i0)') + '_err' - result_conti_err = create_struct(conti_err_str[0],-1.D) - for i=1,nconti-1 do $ - result_conti_err=struct_addtags(result_conti_err,create_struct(conti_err_str[i],-1.D)) - ; Add FeII fits err - result_conti_err=struct_addtags(result_conti_err,{conti_fit_err:dblarr(14) - 1.D, FeII_uv_err:dblarr(3) - 1.D, $ - FeII_opt_err:dblarr(3) - 1.D, REW_Fe_4434_4684_Err:-1.D, REW_Fe_2250_2650_Err:-1.D}) - - ; Find what lines were fit - if not keyword_Set(linename) then begin - ;file1 = outdir + 'fits/' + tags[0] + '.fits' - ;tmp=mrdfits(file1,1,/silent) - ;linename=strtrim(tmp.linename) - ;linename=linename[uniq(linename)] - linename = ['SII6718','Halpha', 'Halpha_br', 'Hbeta', 'Hbeta_br', 'HeII4687','HeII4687_BR', 'OIII5007', $ - 'OIII5007c','MgII', 'MgII_br', 'CIII','CIII_br', 'SiIII1892','AlIII1857', 'NIII1750','CIV', 'CIV_br', $ - 'HeII1640','HeII1640_br', 'SiIV_OIV', 'OI1304', 'Lya', 'NV1240'] - endif - nline = n_elements(linename) - for i=0, nline -1 do $ - result = struct_addtags(result,create_struct(linename[i],dblarr(5))) - for i=0L, nline-1 do $ - result = struct_addtags(result,create_struct(linename[i]+'_redchi2',0.D)) - - line_err_str = linename + '_err' - result_line_err=create_struct(line_err_str[0], replicate(-1.D,5)) - for i=1, nline -1 do $ - result_line_err = $ - struct_addtags(result_line_err,create_struct(line_err_str[i],replicate(-1.D,5))) - - result = replicate(result, nnn) - struct0 = result[0] - if n_elements(rm_ID) eq nnn then result.rm_ID=rm_ID else result.rm_ID=lindgen(nnn) - result.plate=plate - result.fiberid=fiber - result.mjd=mjd - if n_elements(redshift) eq nnn then result.z = redshift - result.tag = tags - - result_conti_err = replicate(result_conti_err,nnn) - result_line_err = replicate(result_line_err,nnn) - - red, omegalambda=0.7,omega0=0.3,h100=0.7 - - ; These are the original tag names in the fits - for i=0L, nnn - 1L do begin - - ; Get the fitting results on the original spectrum - if ~keyword_set(plate_subdir) then fitsfile = outdir + 'fits/' + tags[i] + '.fits*' $ - else fitsfile = outdir + 'fits/' + platestr[i] + '/' + tags[i] + '.fits*' - - if file_test(fitsfile) eq 1 then begin - - para = mrdfits(fitsfile, 1,/silent) - z0 = para.z - if not keyword_set(redshift) then result[i].z = z0 - - ;------------------- - ; populate the redchi2 for continuum and each line complex fit - if tag_exist(para, 'conti_redchi2') then result[i].conti_redchi2=para.conti_redchi2 - ; Does the line fit exist? - if tag_exist(para, 'linename') eq 1 then begin - for iline=0L, nline-1 do begin - ind_line=where( strmatch(strupcase(para.linename), strupcase(linename[iline]+'*') ) ) - ind_tag = where(strtrim(tag_names(result)) eq strupcase(linename[iline]+'_redchi2') ) - result[i].(ind_tag) = max( para.line_redchi2[ind_line] ) - endfor - endif - ;------------------- - - get_qso_prop, para,linelist=linename,contiwave=contiwave, $ - z=z0, conti_prop=conti_prop, line_prop=line_prop - - str_tmp = result[i] - copy_struct, conti_prop, str_tmp - copy_struct, line_prop, str_tmp - result[i] = str_tmp - - endif - - ; Get errors - if ~keyword_set(plate_subdir) then errfile = outdir + 'err/' + tags[i] + '.fits*' else $ - errfile = outdir + 'err/' + platestr[i] + '/' + tags[i] + '.fits*' - if file_test(errfile) eq 1 then begin - para_err = mrdfits(errfile,1,/silent) - ntrial = n_elements(para_err) - errarray = replicate(struct0, ntrial) - for jj=0L, ntrial - 1L do begin - para = para_err[jj] - get_qso_prop, para,linelist=linename,contiwave=contiwave, $ - z=z0, conti_prop=conti_prop, line_prop=line_prop - - str_tmp = struct0 - copy_struct, conti_prop, str_tmp - copy_struct, line_prop, str_tmp - errarray[jj] = str_tmp - endfor - - ; Now estimate the error using the 68% percentile - ; Do continuum - for jj=0L, nconti-1 do begin - arr = errarray.(jj+nheader) - ; Is this continuum covered? - if (where(arr ne 0))[0] ne -1 then begin - sigma = 0.5*( quantile_2d(0.84,arr,dim=1) - quantile_2d(0.16,arr,dim=1) ) - result_conti_err[i].(jj) = sigma - endif - endfor - ; Do conti_fit and the uv and opt FeII fits - for jj=0L, 2 do begin - arr = errarray.(jj+nheader+nconti) - sigma = 0.5*( quantile_2d(0.84,arr,dim=2) - quantile_2d(0.16,arr,dim=2) ) - result_conti_err[i].(jj+nconti) = sigma - endfor - ; Do the optical FeII REW around the [4434,4684] - arr = errarray.(nheader+nconti+3) - sigma = 0.5*( quantile_2d(0.84,arr,dim=1) - quantile_2d(0.16,arr,dim=1) ) - result_conti_err[i].(3+nconti) = sigma - ; Do the UV FeII REW around the [2250,2650] - arr = errarray.(nheader+nconti+4) - sigma = 0.5*( quantile_2d(0.84,arr,dim=1) - quantile_2d(0.16,arr,dim=1) ) - result_conti_err[i].(4+nconti) = sigma - - ; Do the lines - for jj=0L, nline - 1 do begin - arr = errarray.(jj+nheader+nconti+5) - ; Is this line fitted? - if (where(arr ne 0))[0] ne -1 then begin - sigma = 0.5*( quantile_2d(0.84,arr,dim=2) - quantile_2d(0.16,arr,dim=2) ) - result_line_err[i].(jj) = sigma - endif - endfor - - endif - - splog, 'Finished: ', i+1, '/', nnn - - endfor - - result = struct_addtags(result, result_conti_err) - result = struct_addtags(result, result_line_err) - - ; add SE virial BH mass estimates if required - if keyword_set(add_bhmass) then begin - newstr = replicate( {logBH_CIV_VP06:0.D, logBH_CIV_VP06_err:-1.D, $ - logBH_MgII_S11:0.D, logBH_MgII_S11_err:-1.D, $ - logBH_HB_VP06:0.D, logBH_HB_VP06_err:-1.D }, nnn) - ;CIV mass - aa=0.66 & bb=0.53 - ind=where(result.logL1350 gt 0 and (result.CIV_BR)[1,*] gt 0) - if ind[0] ne -1 then $ - newstr[ind].logBH_CIV_VP06=aa + bb*( result[ind].logL1350 - 44.) $ - + 2.*alog10( (result[ind].CIV_br)[1,*] ) - ind=where(result.logL1350_err gt 0 and $ - (result.CIV_BR_err)[1,*] gt 0 and (result.CIV_BR)[1,*] gt 0 and $ - (result.CIV_BR_err)[3,*] gt 0 and $ - (result.CIV_BR)[3,*]/(result.CIV_BR_err)[3,*] gt 2. ) - if ind[0] ne -1 then begin - newstr[ind].logBH_CIV_VP06_err=sqrt( bb^2*result[ind].logL1350_err^2 $ - + 2.^2*( (result[ind].CIV_BR_err)[1,*]/(result[ind].CIV_BR)[1,*]/alog(10.) )^2 ) - endif - ; MgII mass - aa=0.74 & bb=0.62 - ind=where(result.logL3000 gt 0 and (result.MGII_BR)[1,*] gt 0) - if ind[0] ne -1 then newstr[ind].logBH_MGII_S11=aa + bb*( result[ind].logL3000 - 44.) $ - + 2.*alog10( (result[ind].MGII_br)[1,*] ) - ind=where(result.logL3000_err gt 0 and $ - (result.MGII_BR_err)[1,*] gt 0 and (result.MGII_BR)[1,*] gt 0 and $ - (result.MGII_BR_err)[3,*] gt 0 and $ - (result.MGII_BR)[3,*]/(result.MGII_BR_err)[3,*] gt 2. ) - if ind[0] ne -1 then begin - newstr[ind].logBH_MGII_S11_err=sqrt( bb^2*result[ind].logL3000_err^2 $ - + 2.^2*( (result[ind].MGII_BR_err)[1,*]/(result[ind].MGII_BR)[1,*]/alog(10.) )^2 ) - endif - ; Hb mass - aa=0.91 & bb=0.50 - ind=where(result.logL5100 gt 0 and (result.Hbeta_BR)[1,*] gt 0) - if ind[0] ne -1 then newstr[ind].logBH_HB_VP06=aa + bb*( result[ind].logL5100 - 44.) $ - + 2.*alog10( (result[ind].Hbeta_br)[1,*] ) - ind=where(result.logL5100_err gt 0 and $ - (result.Hbeta_BR_err)[1,*] gt 0 and (result.Hbeta_BR)[1,*] gt 0 and $ - (result.Hbeta_BR_err)[3,*] gt 0 and $ - (result.Hbeta_BR)[3,*]/(result.Hbeta_BR_err)[3,*] gt 2. ) - if ind[0] ne -1 then begin - newstr[ind].logBH_HB_VP06_err=sqrt( bb^2*result[ind].logL5100_err^2 $ - + 2.^2*( (result[ind].Hbeta_BR_err)[1,*]/(result[ind].Hbeta_BR)[1,*]/alog(10.) )^2 ) - endif - result = struct_addtags(result, newstr) - endif - - ; message,'stop' - - if not keyword_set(outfile) then outfile1=outdir+ 'qso_prop-'+platestr[0]+'-'+mjdstr[0]+'.fits' $ - else outfile1 = outdir + outfile - - mwrfits, result, outfile1, /create - -end diff --git a/pro/rm/rm_composite_dcf.pro b/pro/rm/rm_composite_dcf.pro deleted file mode 100644 index 7beb0aaf0..000000000 --- a/pro/rm/rm_composite_dcf.pro +++ /dev/null @@ -1,158 +0,0 @@ - -pro rm_coadd_dcf, dcf_data, tau_dcf=tau_dcf, dcf_coadd=dcf_coadd, edcf_coadd=edcf_coadd, $ - indp_npair_coadd=indp_npair_coadd, line=line - - tau_dcf=dcf_data[0].tau_dcf - - ngrid=n_elements(tau_dcf) - - ; get the DCF for all objects - tagname=tag_names(dcf_data[0]) - ind=where(strmatch(tagname, strupcase(line+'_DCF')) ) - dcf=dcf_data.(ind[0]) - ind=where(strmatch(tagname, strupcase(line+'_EDCF')) ) - edcf=dcf_data.(ind[0]) - ind=where(strmatch(tagname, strupcase(line+'_indp_npair')) ) - indp_npair=dcf_data.(ind[0]) - - ; compute the invvar - invvar=0.*edcf > 0 - ind=where(edcf gt 0) - invvar[ind] = 1./ (edcf[ind])^2 - - ; force problematic dcf and invvar to be zero - ind = where(finite(dcf) ne 1) - dcf[ind]=0. & invvar[ind]=0. - ;message, 'stop' - - ; get the total # of independent pairs in each tau bin - indp_npair_coadd=total(indp_npair,2) - - ; get the invvar weighted average DCF - sum1 = total(dcf*invvar, 2, /double) - sum2 = total(invvar, 2, /double) - ind = where(sum2 gt 0) - dcf_coadd=dblarr(ngrid) - dcf_coadd[ind] = sum1[ind]/sum2[ind] - - ; bootstrap to get the uncertainty in the coadded DCF - -end - -pro rm_composite_dcf, epoch_id=epoch_id - - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - ; keep only RM targets - target=fibermap[0:848] - - ; set-up the epochs of the LC - if not keyword_set(epoch_id) then epoch_id=indgen(18) - ; remove epoch 3 and 7 with the lowest sn - ;mask_indx=[2,6] - ;epoch_id[mask_indx]=-1 - ind=where(epoch_id ge 0) - epoch_id=epoch_id[ind] - maxep=string(max(epoch_id+1), format='(i2.2)') - - ; get all the LC data - rm_get_rms_prop,result=LC_data_all, /silent,epoch_id=epoch_id - - nobj=n_elements(target) - - ; read in more target information - file='/data3/quasar/yshen/work/composite_lag/target_info.fits' - info=mrdfits(file,1) - - tau_dcf=-50.+findgen(41)*5 - ;tau_dcf=-50. + findgen(21)*10. - ngrid=n_elements(tau_dcf) - result={rm_ID:-1L, tau_obs:0.D,logL5100:0.D,imag:0.D, Mi_z2:0.D,z:0.D,objc_type:0L,tau_dcf:tau_dcf, $ - hbeta_dcf:dblarr(ngrid),hbeta_edcf:dblarr(ngrid)-1.,hbeta_indp_npair:lonarr(ngrid), $ - mgii_dcf:dblarr(ngrid),mgii_edcf:dblarr(ngrid)-1.,mgii_indp_npair:lonarr(ngrid)} - result=replicate(result,nobj) - result.rm_ID=indgen(849) - result.tau_obs=info.tau_obs - result.logL5100=info.logL5100 - result.imag=info.imag - result.Mi_z2=info.Mi_z2 - result.z=info.zfinal - result.objc_type=info.objc_type - - tagname = tag_names(LC_data_all[0]) - tagname_result=tag_names(result[0]) - mjdlist = LC_data_all[0].mjd - sncut=0. - line=['Hbeta','MgII'] - conti=['L1350','L1700','L3000', 'L5100'] - nline=n_elements(line) - for i=0L, nobj-1 do begin - - LC_data = LC_data_all[i] - - ; - for jj=0L, nline - 1 do begin - ind = where(strmatch(tagname, strupcase(line[jj])+'*') ) - ngood = LC_data.(ind[2]) - LC_arr = LC_data.(ind[3]) - LC_err = LC_data.(ind[4]) - goodflag = LC_data.(ind[5]) - if ngood gt 0 then begin - ind_good = where(goodflag eq 1) - LC_arr = 10.D^LC_arr[ind_good] - LC_err = LC_err[ind_good] ; NB, err in dex - LC_err = LC_err*alog(10.D)*LC_arr - mjd_good = mjdlist[ind_good] - ; remove noisy measurements? - ind_goodsn = where(LC_arr/LC_err gt sncut) ; 20% flux measurements, which is too precise - cadence_id = mjd_good[ind_goodsn] - lc_line=LC_arr[ind_goodsn] & err2=LC_err[ind_goodsn] - - ; get continuum LC, starting from the shortest wavelength - flag0=0 & iconti=0 - while flag0 eq 0 do begin - ind = where(strmatch(tagname, strupcase(conti[iconti])+'*') ) - ngood = LC_data.(ind[2]) - LC_arr = LC_data.(ind[3]) - LC_err = LC_data.(ind[4]) - goodflag = LC_data.(ind[5]) - if ngood gt 0 then begin - ;ind_good = where(LC_arr gt 0 and LC_err gt 0) - ind_good = where(goodflag eq 1) - LC_arr = 10.D^LC_arr[ind_good] - LC_err = LC_err[ind_good] ; NB, err in dex - LC_err = LC_err*alog(10.D)*LC_arr - mjd_good = mjdlist[ind_good] - ; remove noisy measurements? - ind_goodsn = where(LC_arr/LC_err gt sncut) ; 20% flux measurements - cadence_id_c = mjd_good[ind_goodsn] - lc_conti=LC_arr[ind_goodsn] & err1=LC_err[ind_goodsn] - ; we have found the continuum LC - flag0=1L - endif - iconti=iconti+1 - endwhile - - if ngood gt 0 and flag0 eq 1 then begin - rm_dcf,cadence_id_c,lc_conti,cadence_id,lc_line,err1=median(err1),err2=median(err2),$ - DCF=DCF,eDCF=eDCF,tau_grid=tau_dcf,indp_npair=indp_npair - - ; assign the DCF - ind1=where(strmatch(tagname_result, strupcase(line[jj])+'_DCF') ) - result[i].(ind1[0])=dcf - ind1=where(strmatch(tagname_result, strupcase(line[jj])+'_EDCF') ) - result[i].(ind1[0])=edcf - ind1=where(strmatch(tagname_result, strupcase(line[jj])+'_INDP_NPAIR') ) - result[i].(ind1[0])=indp_npair - endif - endif - endfor - splog, 'Finished obj: ', i - - endfor - - ; output the results - outfile = '/data3/quasar/yshen/work/composite_lag/dcf_data_maxep_'+maxep+'.fits' - mwrfits,result,outfile,/create - -end diff --git a/pro/rm/rm_dcf.pro b/pro/rm/rm_dcf.pro deleted file mode 100644 index f9950b50d..000000000 --- a/pro/rm/rm_dcf.pro +++ /dev/null @@ -1,74 +0,0 @@ -;+ -; NAME: -; rm_dcf -; -; PURPOSE: -; Compute the discrete correlation function (Edelson & Krolik 1988) -; -; CALLING SEQUENCE: -; rm_dcf,t1,LC1,t2,LC2 -; -; INPUTS: -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; REVISION HISTORY: -; 28-Apr-2014 Written by Yue Shen, Carnegie -;- -;------------------------------------------------------------------------ -pro rm_dcf, t1, LC1, t2, LC2, err1=err1,err2=err2,tau_grid=tau_grid, $ - rm_corr_err=rm_corr_err, DCF=DCF,eDCF=eDCF,UDCFij=UDCFij, $ - npair=npair,indp_npair=indp_npair - - if not keyword_set(tau_grid) then tau_grid=-50.+findgen(41)*5 - dtau=median(tau_grid-shift(tau_grid,1)) - ngrid=n_elements(tau_grid) - - ; Default is to remove data observed on the same day (i.e., with correlated errors) - if n_elements(rm_corr_err) eq 0 then rm_corr_err=1 - - n1=n_elements(LC1) & n2=n_elements(LC2) - - if n_elements(err1) eq 0 then err1=0. - if n_elements(err2) eq 0 then err2=0. - mean1=mean(LC1) & sig1=stddev(LC1) - mean2=mean(LC2) & sig2=stddev(LC2) - - ; Collect the pairs [eq.3 of EK 1988] - UDCFij = ( (LC1 - mean1) # (LC2 - mean2) ) / sqrt((sig1^2-err1^2)*(sig2^2-err2^2)) - dtij = dblarr(n1,n2) - for i=0L, n2-1 do dtij[*,i] = t2[i] - t1 - - ; Bin the pairs - DCF=dblarr(ngrid) & eDCF=dblarr(ngrid)-1. - npair=lonarr(ngrid) & indp_npair=lonarr(ngrid) - for i=0L, ngrid-1 do begin - - if keyword_set(rm_corr_err) then $ - ind = where(dtij ge tau_grid[i]-0.5*dtau and dtij lt tau_grid[i]+0.5*dtau $ - and abs(dtij) gt 1d-5, mm) else $ - ind = where(dtij ge tau_grid[i]-0.5*dtau and dtij lt tau_grid[i]+0.5*dtau, mm) - npair[i]=mm - - if mm gt 0 then begin - - DCF[i] = total(UDCFij[ind])/double(mm) - - ; Determine the independent data points in LC1 - indd_col = ind mod n1 - ttt = uniq(indd_col, sort(indd_col)) - mm1 = n_elements(ttt) - indp_npair[i]=mm1 - - ; Estimate the error of the DCF in this bin - if mm1 gt 1 then $ - eDCF[i] = sqrt(total( (UDCFij[ind] - DCF[i])^2 ) ) / sqrt( (mm - 1.)*(mm1 - 1.) ) - - endif - - - endfor - -end diff --git a/pro/rm/rm_expinfo.pro b/pro/rm/rm_expinfo.pro deleted file mode 100644 index 05f002a29..000000000 --- a/pro/rm/rm_expinfo.pro +++ /dev/null @@ -1,121 +0,0 @@ -;+ -; NAME: -; rm_expinfo -; -; PURPOSE: -; Return individual exposures information for an RM-BOSS epoch -; -; CALLING SEQUENCE: -; rm_expinfo, Plate, MJD, expinfo=expinfo -; -; INPUTS: -; plate - plate for the spPlate coadd file [e.g., 7338] -; mjd - mjd for the coadd file [e.g., 56660] -; -; OUTPUTS: -; expinfo - structure containing the info of individual exposures -; -; OPTIONAL OUTPUTS: -; mean_mjd - mean MJD of all coadded frames -; exptime - total exposure time of all coadded frames -; -; REVISION HISTORY: -; 05-Jan-2014 Written by Yue Shen, Carnegie -;- -;------------------------------------------------------------------------ -pro rm_expinfo, plate, mjd, expinfo=expinfo, mean_mjd=mean_mjd, exptime=exptime $ - , diet=diet - - topdir = getenv('BOSS_SPECTRO_REDUX') - if mjd le 56838L then twoddir = getenv('RUN2D') else twoddir = 'v5_10_10' ; eBOSS data uses different RUN1d/2d - platestr = string(plate,format='(i4.4)') - mjdstr = string(mjd,format='(i5.5)') - - ; find all the exposures in the spPlancomb file - filename = 'spPlancomb-' + platestr + '-' + mjdstr + '.par' - filename = lookforgzip(filepath(filename, root_dir=topdir, $ - subdirectory=[twoddir,platestr]), count=ct) - if (ct eq 1) then filename = filename[0] else $ - message, 'spPlancomb file not found: ',plate,mjd - yanny_read, filename, pdata - result = *pdata - nexp = n_elements(result) - struct_tmp = replicate({mjd_beg:dblarr(4), mjd_end:dblarr(4) $ - , airmass:fltarr(500),coadded:lonarr(4), platesn2:0.D, seeing20:0. $ - , seeing50:0., seeing80:0., plate_airmass:0.}, nexp) - result = struct_addtags(result, struct_tmp) - - ;if ~keyword_set(diet) then begin - for i=0L, nexp - 1L do begin - mjd_beg = dblarr(4) & mjd_end = dblarr(4) - for j=0L, 3L do begin - - spFramefile = topdir+'/'+twoddir+'/'+platestr+'/'+result[i].name[j] + '.gz' - ;print, spFramefile - if file_test(spFramefile) ne 0 then begin - - if keyword_Set(diet) then hdr1 = headfits(spFramefile,ext=0) else $ - spframe_read,spFramefile, hdr=hdr1, plugmap=plugmap - mjd_beg[j] = fxpar(hdr1, 'TAI-BEG')/24.D/3600.D - mjd_end[j] = fxpar(hdr1, 'TAI-END')/24.D/3600.D - - if ~keyword_set(diet) then begin - get_tai, hdr1, tai_beg, tai, tai_end - for ifib=0, 499L do result[i].airmass[ifib] = $ - tai2airmass(plugmap[ifib].ra, plugmap[ifib].dec, tai=tai) - endif - endif - - endfor - result[i].mjd_beg = mjd_beg - result[i].mjd_end = mjd_end - endfor - ; endif - mean_mjd=dblarr(4) - - ; identify all the exposures that were combined in spPlate file - filename = 'spPlate-' + platestr + '-' + mjdstr + '.fits' - filename = lookforgzip(filepath(filename, root_dir=topdir, $ - subdirectory=[twoddir,platestr]), count=ct) - - if (ct eq 1) then filename = filename[0] else $ - message, 'spPlate file not found: ',plate,mjd - - head = headfits(filename, ext=0) - nexp_b1 = fxpar(head, 'nexp_b1') - nexp_b2 = fxpar(head, 'nexp_b2') - nexp_r1 = fxpar(head, 'nexp_r1') - nexp_r2 = fxpar(head, 'nexp_r2') - sn2_g1=fxpar(head, 'SN2EXT1G') - sn2_g2=fxpar(head, 'SN2EXT2G') - sn2=min([sn2_g1,sn2_g2]) - result.platesn2=sn2 - result.seeing50=fxpar(head, 'seeing50') - result.seeing20=fxpar(head, 'seeing20') - result.seeing80=fxpar(head, 'seeing80') - result.plate_airmass=fxpar(head, 'airmass') - - nexp = nexp_b1 + nexp_b2 + nexp_r1 + nexp_r2 - exptags = 'EXPID' + string(indgen(nexp)+1, format='(i2.2)') - for i=0L, nexp - 1L do begin - expstr = 'spFrame-' + strmid(fxpar(head, exptags[i]),0,11) + '.fits' - ind = where(result.name eq expstr) - exp_no = floor(ind/4.) & col_no = ind - exp_no*4L - result[exp_no].coadded[col_no] = 1L - endfor - - ind = where(result.coadded[0,*] eq 1L, ncoadd) - - nexp = n_elements(result) - icam = lonarr(nexp) - for i=0, nexp - 1 do icam[i] = (where(strmatch(result[i].name, 'spFrame*') ne 0))[0] - mean_mjd = 0.D - for i=0, ncoadd-1 do mean_mjd = mean_mjd + $ - 0.5*( (result.mjd_beg)[icam[ind[i]],ind[i]] + (result.mjd_end)[icam[ind[i]],ind[i]]) - mean_mjd = mean_mjd / float(ncoadd) - ;mean_mjd = mean( 0.5*( (result.mjd_beg)[0,ind] + (result.mjd_end)[0,ind])) - - exptime = total(result[ind].exptime,/double) - - expinfo = result -END diff --git a/pro/rm/rm_findstd.pro b/pro/rm/rm_findstd.pro deleted file mode 100644 index c59066ed8..000000000 --- a/pro/rm/rm_findstd.pro +++ /dev/null @@ -1,231 +0,0 @@ -;+ -; NAME: -; rm_findstd -; -; PURPOSE: -; find std stars of each epoch of the RM spectroscopy -; -; CALLING SEQUENCE: -; rm_findstd, [platelist, mjdlist, calibdir='recalib/test20/',tag='xyfit'] -; -; INPUTS: -; platelist - list of plates of the epochs [NEPOCH] -; mjdlist - list of mjd of the epochs [NEPOCH] -; -; OPTIONAL INPUTS: -; -; -; -; -; OUTPUTS: -; fiberid - list of fiberid of each epoch [NEPOCH, NSTD] -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -;---------------------------------------------------------------------------- - -function rm_findstd, platelist, mjdlist, calibdir=calibdir, synflux=synflux, $ - calibflux=calibflux, plot_diag=plot_diag, expframe=expframe,tag=tag - - if not keyword_set(topdir) then topdir = getenv('BOSS_SPECTRO_REDUX') $ - + '/' + getenv('RUN2D') + '/' - - nepoch = n_elements(mjdlist) - nplate = n_elements(platelist) - if nplate eq 1 and nplate lt nepoch then $ - platelist = replicate(platelist, nepoch) - - ; read in the master file - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - - ; get all the available epochs - if nepoch eq 0 then begin - indd = where(fibermap[0].plate ne 0, nepoch) - platelist = (fibermap[0].plate)[indd] - mjdlist = (fibermap[0].mjd)[indd] - endif - - istd = where(strtrim(fibermap.sourcetype) eq 'STD', nstd) - fiberid = lonarr(nepoch, nstd) - - for i=0L, nepoch - 1L do begin - - indd = where(fibermap[0].plate eq platelist[i] and $ - fibermap[0].mjd eq mjdlist[i]) - fiberid[i,*] = (fibermap.fiberid)[indd[0], istd] - - endfor - - ; get the synthsized 5-band flux and calibration flux - synflux = fltarr(nepoch, nstd, 5L) - calibflux = fltarr(nepoch, nstd, 5L) ; check if calibflux is constant - for i=0L, nepoch - 1L do begin - - if n_elements(calibdir) ne 0 then path = topdir+string(platelist[i],format='(i4.4)')+'/'+calibdir - - ; read the coadded spectrum - if not keyword_set(expframe) then begin - readspec, platelist[i], (fiberid[i,*]), mjd=mjdlist[i], wave=wave, $ - flux=flux,invvar=invvar,andmask=mask,path=path,plugmap=plugmap,/silent - endif else begin - if n_elements(expframe) ne nepoch then message, '# of expframe must equal Nepoch' - spframe_read, topdir + string(platelist[i],format='(i4.4)') $ - + '/spCFrame-b1-' + expframe[i] + '.fits' $ - , objflux=flux1, loglam=loglam1, plugmap=plugmap1 - ;print, - spframe_read, topdir + string(platelist[i],format='(i4.4)') $ - + '/spCFrame-b2-' + expframe[i] + '.fits' $ - , objflux=flux2, loglam=loglam2, plugmap=plugmap2 - flux = [[flux1], [flux2]] & loglam = [[loglam1], [loglam2]] - wave = 10.^loglam - ; keep only std - flux = flux[*, fiberid[i,*]-1L] - wave = wave[*, fiberid[i,*]-1L] - plugmap = ([plugmap1, plugmap2])[reform(fiberid[i,*]-1L)] - endelse - - flambda2fnu = wave^2 / 2.99792e18 - fthru = filter_thru(flux * flambda2fnu, waveimg=wave,/toair) - thismag = -2.5 * alog10(fthru) - (48.6-2.5*17) - synflux[i,*,*] = 10.^((22.5-thismag)/2.5) - calibflux[i,*,*] = transpose(plugmap.CALIBFLUX) - - endfor - - ; plot diagnositic plots if required - if keyword_set(plot_diag) then begin - - plotfile = 'rmDiagstd.ps' - if (not keyword_set(tag)) or (not keyword_set(calibdir)) then tag = 'pipe' - plotfile = repstr(plotfile,'.ps','_'+tag)+'.ps' - ;set_plot, 'ps' - ;dfpsplot, djs_filepath(plotfile, root_dir=getenv('IDLRM_DIR')+'/misc'), /color - figname = djs_filepath(plotfile, root_dir=getenv('IDLRM_DIR')+'/misc') - begplot, name=figname,/color - xrange = [0, nepoch+1] & yrange = [0, 8] - csize=1.5 - - platestr = string(platelist,format='(i0)' ) - mjdstr = string(mjdlist, format='(i0)') - filtstr = 'filter ' + ['u', 'g', 'r', 'i', 'z'] - ;for iband=0L, 4L do begin - ; !p.multi = [0,2,5] - ; - ; for ipanel=0L, 9L do begin - ; - ; yoffset = 0 - - ; istd = 0L + ipanel*7 - ; title = filtstr[iband] + ', std=' $ - ; + string(istd+1,format='(i0)')+'-'+string(istd+7,format='(i0)') - ; ratio = synflux[*,istd,iband]/calibflux[*,istd,iband] - ; plot, (1+indgen(nepoch)), ratio,title=title,$ - ; xrange=xrange, yrange=yrange,/xsty, /ysty, psym=2, /nodata,charsize=csize - ; ind = where(ratio ge 0.95 and ratio le 1.05, ngood) - ; if ind[0] ne -1 then oplot, (1+indgen(nepoch))[ind], ratio[ind] $ - ; , psym=2 - - ; ind = where( (ratio gt 1.05 or ratio lt 0.95) and ratio ne 0, nbad) - ; if ind[0] ne -1 then oplot, (1+indgen(nepoch))[ind], ratio[ind] $ - ; , psym=2,color=fsc_color('red') - ; ind = where(ratio eq 0, nworst) - ; if ind[0] ne -1 then oplot, (1+indgen(nepoch))[ind], ratio[ind] $ - ; , psym=5,color=fsc_color('blue'),symsize=1.5 - ; - ; for jj=0L, nepoch-1L do xyouts,1+jj,1.05 + yoffset, $ - ; string(fiberid[jj,istd],format='(i0)') - ; oplot, xrange, replicate(1.05 + yoffset,2),line=1 - ; oplot, xrange, replicate(0.95 + yoffset,2),line=1 - - ; for inew=1L, 6L do begin - - ; istd = inew + ipanel*7 - ; yoffset = yoffset + 1. - - ; ratio = synflux[*,istd,iband]/calibflux[*,istd,iband] - ; ind = where(ratio ge 0.95 and ratio le 1.05, ngood) - ; if ind[0] ne -1 then oplot, (1+indgen(nepoch))[ind], ratio[ind] + yoffset, psym=2 - ; ind = where( (ratio gt 1.05 or ratio lt 0.95) and ratio ne 0, nbad) - ; if ind[0] ne -1 then oplot, (1+indgen(nepoch))[ind], ratio[ind] + yoffset $ - ; , psym=2,color=fsc_color('red') - ; ind = where(ratio eq 0, nworst) - ; if ind[0] ne -1 then oplot, (1+indgen(nepoch))[ind], ratio[ind] $ - ; , psym=5,color=fsc_color('blue'),symsize=1.5 - - ; for jj=0L, nepoch-1L do xyouts,1+jj,1.05 + yoffset, $ - ; string(fiberid[jj,istd],format='(i0)') - - ; oplot, xrange, replicate(1.05 + yoffset,2),line=1 - ; oplot, xrange, replicate(0.95 + yoffset,2),line=1 - ; endfor - ; endfor - - ; !p.multi = 0 - - ; endfor - - ; NOW, make plots of the distribution of synflux/calibflux - !p.multi = [0,1,3] - for iband=1L, 3L do begin - ; plot the distribution for each epoch - colors = cgcolor(['black', 'red', 'green', 'magenta', 'cyan', 'blue', 'gold']) - ncolor = n_elements(colors) - title = filtstr[iband] + ', ' + tag ;'filter'+string(iband+1,format='(i0)') - xrange = [-0.2,0.2] & yrange = [0,25] - plot, [0], [0], xrange=xrange,yrange=yrange,xtitle=textoidl('log synflux/calibflux'), $ - title = title,/xsty, /ysty, charsize=csize - xpos = xrange[0] + 0.05*(xrange[1]-xrange[0]) - ypos = yrange[1] - 0.1*(yrange[1]-yrange[0]) - dypos = 0.05*(yrange[1]-yrange[0]) - for iepoch=0L, nepoch - 1L do begin - ratio = synflux[iepoch,*,iband]/calibflux[iepoch,*,iband] - ; remove unplgged fibers (synflux=0) - ind = where(ratio gt 0) - ;if platelist[iepoch] eq 7338 and mjdlist[iepoch] eq 56660 then $ - ; ind = where(ratio gt 0 and fiberid[iepoch,*] ne 998) - - if ind[0] ne -1 then begin - plothist, alog10(ratio[ind]), bin = 0.01, color=colors[iepoch mod ncolor],/over - - ;rms_logratio = stddev(alog10(ratio[ind])) - ;instead of using the stddev, try to use 0.5*(per_84-per_16) - arr=alog10(ratio[ind]) - rms_logratio = 0.5*(quantile_2d(0.84,arr,dim=1) - quantile_2d(0.16,arr,dim=1)) - rms_std = stddev(alog10(ratio[ind])) - - xyouts, xpos+(iepoch/16)*0.6*(xrange[1]-xrange[0]), ypos, $ - platestr[iepoch]+'-'+mjdstr[iepoch] + ':' + $ - string(rms_logratio,format='(f0.4)')+' ' + $ - string(rms_std,format='(f0.4)'), charsize=1., $ - color=colors[iepoch mod ncolor] - endif - ypos = ypos - dypos - if iepoch eq 15 then ypos=yrange[1] - 0.1*(yrange[1]-yrange[0]) - endfor - endfor - !p.multi = 0 - - ;dfpsclose - endplot - endif - - return, fiberid - -end - - - - - diff --git a/pro/rm/rm_fitplate.pro b/pro/rm/rm_fitplate.pro deleted file mode 100644 index 5f6c5ebf5..000000000 --- a/pro/rm/rm_fitplate.pro +++ /dev/null @@ -1,299 +0,0 @@ -;+ -; NAME: -; rm_fitplate -; -; PURPOSE: -; Fit the RM quasars on one plate -; -; CALLING SEQUENCE: -; rm_fitplate,7338,56660,zlist=zlist,calibdir='recalib/' -; rm_fitplate,[7338,7339],[56660,56683] -; rm_fitplate,0,56837,calibdir='wh_skysub/',outdir=outdir, $ -; outfile=outfile,emparfile=emparfile -; -; INPUTS: -; plate - Plate number -; mjd - MJD -; -; OPTIONAL INPUTS: -; calibdir - 'recalib/' [path of the spPlate files] -; zlist - Enforce the fits using the input redshift; same order as in fibermap -; range - range of fitted QSO index, e.g., [0,10] -; ntrial - number of trials in MC error estimation; default 50 -; -;----------------------------------------------------------------------------- -pro rm_fit1fiber,plate,fiberid,mjd,calibdir=calibdir,ntrial=ntrial,silent=silent $ - , ra=ra,dec=dec, zfit=zfit, deredden=deredden, pause=pause $ - , rm_indd=rm_indd, _extra=extra, para=para $ - , outdir=outdir,errdir=errdir,fits=fits,psplot=psplot,append=append $ - , err_scal=err_scal - - if n_elements(calibdir) eq 0 then calibdir = 'wh_skysub/' ;'recalib/' - - if n_elements(fiberid) gt 1 then begin - nobj = n_elements(fiberid) - if n_elements(plate) eq 1 then plate=replicate(plate,nobj) - if n_elements(plate) ne nobj then message, 'Plate dim does not match fiberid' - if n_elements(mjd) eq 1 then mjd=replicate(mjd,nobj) - if n_elements(mjd) ne nobj then message, 'mjd dim does not match fiberid' - - if n_elements(ra) ne nobj then ra=replicate(0., nobj) - if n_elements(dec) ne nobj then dec=replicate(0., nobj) - if n_elements(rm_indd) ne nobj then rm_indd=replicate(0,nobj) - - for i=0L, nobj-1L do begin - rm_fit1fiber,plate[i],fiberid[i],mjd[i],calibdir=calibdir,ntrial=ntrial $ - ,silent=silent, ra=ra[i],dec=dec[i], zfit=zfit[i], deredden=deredden $ - ,rm_indd=rm_indd[i], _extra=extra $ - ,outdir=outdir,errdir=errdir,fits=fits,psplot=psplot,append=append - if keyword_set(pause) then pause - if i eq nobj-1 then return - endfor - endif - - rm_readspec,plate,fiberid,mjd=mjd,calibdir=calibdir $ - ,zans=zans,wave=lam0,flux=flux0,invvar=ivar0,/silent,_extra=extra - npix1=n_elements(flux0) - - err0=ivar0*0 - ind=where(ivar0 ne 0) - if ind[0] ne -1 then err0[ind]=1./sqrt(ivar0[ind]) - - ; degrade the spectrum if err_scal is set - if keyword_set(err_scal) then begin ; - ivar0 = ivar0/(err_scal^2) - err0 = err0*err_scal - flux0 = flux0 + randomn(seed, npix1)*err0 - endif - - ; Deredden the spectrum - if n_elements(deredden) eq 0 then deredden=1L - if keyword_set(deredden) then begin - dereddening_spec, lam0, flux0, err=err0 $ - , ra=ra, dec=dec $ - , dered_flux = dered_flux, dered_err = dered_err - flux0 = dered_flux & err0 = dered_err - endif - - objtag1=string(plate,format='(i4.4)')+'-'+string(mjd,format='(i5.5)') $ - +'-'+string(fiberid,format='(i4.4)') - objtag='RM Target '+string(rm_indd,format='(i3.3)')+': '+objtag1 - if n_elements(ra) eq 0 then ra1=0. else ra1=ra - if n_elements(dec) eq 0 then dec1=0. else dec1=dec - radec2string,ra1,dec1,dummy,rahr=rahr,ramin=ramin,rasec=rasec $ - , decdeg=decdeg,decmin=decmin,decsec=decsec - sdss_name=rahr+ramin+rasec+decdeg+decmin+decsec - - if keyword_set(zfit) then z0=zfit[0] else z0=zans.z - - rm_qsofit,lam0,flux0,err0,z0,outdir=outdir,append=append $ - ,objtag=objtag,silent=silent, _extra=extra $ - ,fits=fits, psplot=psplot, output_name=objtag1 $ - ,sdss_name=sdss_name,nsmooth=3, para=para - splog, 'Fitting: ', objtag - - ; proceed to compute error array - if n_elements(err_array) ne 0 then tmp=temporary(err_array) - if n_elements(ntrial) eq 0 then ntrial = 0L - for jj=0,ntrial-1 do begin - rm_qsofit,lam0,flux0,err0,z0,/noplot,/silent,/diet,/add_noise,para=para - tag_rej=['CONTI_FIT_ERR','LINE_FIT_ERR'] - remove_tags, para, tag_rej, para_keep - - splog, ' Error trial: ',jj+1 - ; Only add this trial if the continuum fit is OK - ; The large redchi2 is to keep fits on very high SN spectrum - if para_keep.conti_redchi2 lt 100. and para_keep.conti_redchi2 gt 0 then begin - if n_elements(err_array) eq 0 then err_array=para_keep $ - else err_array=[err_array,para_keep] - endif - endfor - if keyword_set(errdir) then begin - fits_errfile=errdir+objtag1+'.fits' - if n_elements(err_array) ne 0 then mwrfits, err_array, fits_errfile, /create - endif - -end - -;------------------------------------------------------------------------- -pro rm_fitplate, plate,mjd,zlist=zlist,calibdir=calibdir,range=range,ntrial=ntrial, $ - topdir=topdir,silent=silent,coadd=coadd,emparfile=emparfile,outdir=outdir, $ - linename=linename,contiwave=contiwave,add_bhmass=add_bhmass,outfile=outfile, $ - rm_plate=rm_plate,figfile=figfile,trim_edge=trim_edge, $ - err_scal=err_scal - - if not keyword_set(emparfile) then $ - emparfile=getenv('IDLRM_DIR')+'/etc/qsoline.par' - - if (size(plate))[0] ne 0 then begin - for i=0, n_elements(plate)-1 do $ - rm_fitplate, plate[i],mjd[i],zlist=zlist,calibdir=calibdir,range=range,ntrial=ntrial, $ - silent=silent,coadd=coadd,emparfile=emparfile,outdir=outdir, $ - linename=linename,contiwave=contiwave - return - endif - - if ~keyword_set(topdir) then begin - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') $ - + '/' + string(plate[0],format='(i4.4)') + '/' - endif - if n_elements(calibdir) eq 0 then begin - calibdir = 'wh_skysub/' - if plate[0] eq 0 or keyword_set(coadd) then calibdir='wh_skysub/' - endif - - if keyword_set(calibdir) then specdir=topdir+calibdir - - if n_elements(silent) eq 0 then silent = 1L - - if n_elements(trim_edge) eq 0 then trim_edge=1L ; default is to trim the spec within [3650-10300] - - if n_elements(add_bhmass) eq 0 then add_bhmass=1L ; default is to add BH mass in rm_compile_qsofit - - ; read in the master file - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - - ; default to use the zfinal in fibermap as input z in rm_qsofit - if n_elements(zlist) eq 0 then zlist = fibermap.zfinal - - if not keyword_set(outdir) then outdir = topdir + 'qsofit/' - if file_test(outdir) eq 0 then spawn, 'mkdir '+ outdir - fitsdir = outdir + 'fits/' - if file_test(fitsdir) eq 0 then spawn, 'mkdir ' + fitsdir - qadir = outdir + 'QA/' - if file_test(qadir) eq 0 then spawn, 'mkdir ' + qadir - errdir = outdir + 'err/' - if file_test(errdir) eq 0 then spawn, 'mkdir ' + errdir - - ; Default number of Monte Carlo trials of error estimation - if n_elements(ntrial) eq 0 then ntrial=50L - - ; -------- - ; proceed to fit the plate - if plate ne 0 and not keyword_set(coadd) then begin - platelist = fibermap[0].plate & mjdlist = fibermap[0].mjd - ind = (where(platelist eq plate[0] and mjdlist eq mjd[0]))[0] - indd = where(strmatch(fibermap.sourcetype, 'RM*'), nqso) - if keyword_set(zlist) then zfit = zlist[indd] - fiberid = (fibermap.fiberid)[ind,indd] - fibermap = fibermap[indd] - endif else begin ; If the plate is the coadded plate - fiberid = lindgen(1000L) + 1L - indd = where(strmatch(fibermap.sourcetype, 'RM*'), nqso) - if keyword_set(zlist) then zfit = zlist[indd] - fiberid = fiberid[indd] - fibermap = fibermap[indd] - endelse - ; trim the list if required - if keyword_set(range) then begin - fiberid = fiberid[range[0]:range[1]] - fibermap = fibermap[range[0]:range[1]] - if keyword_set(zlist) then zfit = zfit[range[0]:range[1]] - indd = indd[range[0]:range[1]] - endif - nqso = n_elements(indd) - - ; setup the plot - if not keyword_set(figfile) then figfile1=outdir+'QA-'+string(plate,format='(i4.4)')+'-' $ - +string(mjd,format='(i5.5)') + '.ps' else figfile1=outdir+figfile - begplot, name=figfile1, /landscape, /color - - ; Setup error handeling - errfile = outdir + 'err.out.mjd' + string(current_mjd(), format='(f9.3)') - openw, lun, errfile, /get_lun - - ;message, 'stop' - - for i=0L, nqso - 1L do begin - - ; Estabilish error handlers - Catch, error_status - if error_status ne 0 then begin - ;print, 'Error index: ', error_status - catch, /cancel - printf, lun, 'obj plate mjd fiber' - if i le nqso-1 then printf, lun, plate, mjd, fiberid[i] - printf, lun, 'Error message: ', !error_state.msg - printf, lun, ' ' - continue - endif - - - rm_readspec,plate[0],fiberid[i],mjd=mjd[0],path=specdir $ - ,zans=zans,wave=lam0,flux=flux0,invvar=ivar0,/silent - npix1=n_elements(flux0) - - if keyword_set(trim_edge) then begin ; trim the edge of the spectrum, which is typically bad - ind_trim=where(lam0 gt 10350. or lam0 lt 3650.) - if ind_trim[0] ne -1 then ivar0[ind_trim]=0 - endif - - err0=ivar0*0 - ind=where(ivar0 ne 0) - if ind[0] ne -1 then err0[ind]=1./sqrt(ivar0[ind]) - - ; degrade the spectrum if err_scal is set - if keyword_set(err_scal) then begin ; - ivar0 = ivar0/(err_scal^2) - err0 = err0*err_scal - flux0 = flux0 + randomn(seed, npix1)*err0 - endif - - ; Deredden the spectrum - ra=fibermap[i].ra & dec=fibermap[i].dec - dereddening_spec, lam0, flux0, err=err0 $ - , ra=ra, dec=dec $ - , dered_flux = dered_flux, dered_err = dered_err - flux0 = dered_flux & err0 = dered_err - - objtag1=string(plate[0],format='(i4.4)')+'-'+string(mjd[0],format='(i5.5)') $ - +'-'+string(fiberid[i],format='(i4.4)') - objtag='RM Target '+string(indd[i],format='(i3.3)')+': '+objtag1 - ;print, objtag, plate[0],fiberid[i],mjd[0] - - radec2string,ra,dec,dummy,rahr=rahr,ramin=ramin,rasec=rasec $ - , decdeg=decdeg,decmin=decmin,decsec=decsec - sdss_name=rahr+ramin+rasec+decdeg+decmin+decsec - - if keyword_set(zlist) then z0 = zfit[i] else z0 = zans.z - rm_qsofit, lam0,flux0,err0,z0,outdir=outdir,/append,objtag=objtag,silent=silent $ - , /fits, /psplot, output_name=objtag1, sdss_name=sdss_name,nsmooth=3,emparfile=emparfile - splog, 'Fitting: ', objtag - - ; proceed to compute error array - if n_elements(err_array) ne 0 then tmp=temporary(err_array) - for jj=0,ntrial-1 do begin - rm_qsofit,lam0,flux0,err0,z0,/noplot,/silent,/diet,/add_noise,para=para,emparfile=emparfile - tag_rej=['CONTI_FIT_ERR','LINE_FIT_ERR'] - remove_tags, para, tag_rej, para_keep - - splog, ' Error trial: ',jj+1 - ; Only add this trial if the continuum fit is OK - ; The large redchi2 is to keep fits on very high SN spectrum - if para_keep.conti_redchi2 lt 100. and para_keep.conti_redchi2 gt 0 then begin - if n_elements(err_array) eq 0 then err_array=para_keep $ - else err_array=[err_array,para_keep] - endif - endfor - fits_errfile=errdir+objtag1+'.fits' - if n_elements(err_array) ne 0 then mwrfits, err_array, fits_errfile, /create - endfor - - endplot - ; fix the orientation of the plot to seascape - print, figfile1 - cgfixps, figfile1 - - ; gzip the QA file - spawn, 'gzip -f ' + figfile1 - - ; output the complication of line measurements - rm_compile_qsofit,plate[0],mjd[0], outdir_in=outdir,outfile=outfile, $ - linename=linename,contiwave=contiwave,add_bhmass=add_bhmass,rm_plate=rm_plate - - ; close error log - close, lun - free_lun, lun - -end diff --git a/pro/rm/rm_fitplate_local.pro b/pro/rm/rm_fitplate_local.pro deleted file mode 100644 index 8444eeb38..000000000 --- a/pro/rm/rm_fitplate_local.pro +++ /dev/null @@ -1,295 +0,0 @@ -;+ -; NAME: -; rm_fitplate_local -; -; PURPOSE: -; Fit the RM quasars on one plate -; Just at rm_fitplate, but instead of calling "rm_qsofit", -; call "rm_local_qsofit" to perform local continuum fit -; The purpose is to measure narrow lines such as [OII], [NeV] -; more accurately than using the global continuum fit. -; -; CALLING SEQUENCE: -; rm_fitplate_local,7338,56660,zlist=zlist,calibdir='recalib/' -; rm_fitplate_local,[7338,7339],[56660,56683] -; rm_fitplate_local,0,56837,calibdir='wh_skysub/',outdir=outdir, $ -; emparfile=emparfile -; -; INPUTS: -; plate - Plate number -; mjd - MJD -; -; OPTIONAL INPUTS: -; calibdir - 'recalib/' [path of the spPlate files] -; zlist - Enforce the fits using the input redshift; same order as in fibermap -; range - range of fitted QSO index, e.g., [0,10] -; ntrial - number of trials in MC error estimation; default 50 -; -;----------------------------------------------------------------------------- -pro rm_fit1fiber_local,plate,fiberid,mjd,calibdir=calibdir,ntrial=ntrial,silent=silent $ - , ra=ra,dec=dec, zfit=zfit, deredden=deredden, pause=pause $ - , rm_indd=rm_indd, _extra=extra, para=para $ - , outdir=outdir,errdir=errdir,fits=fits,psplot=psplot,append=append - - if n_elements(calibdir) eq 0 then calibdir = 'wh_skysub/' - - if n_elements(fiberid) gt 1 then begin - nobj = n_elements(fiberid) - if n_elements(plate) eq 1 then plate=replicate(plate,nobj) - if n_elements(plate) ne nobj then message, 'Plate dim does not match fiberid' - if n_elements(mjd) eq 1 then mjd=replicate(mjd,nobj) - if n_elements(mjd) ne nobj then message, 'mjd dim does not match fiberid' - - if n_elements(ra) ne nobj then ra=replicate(0., nobj) - if n_elements(dec) ne nobj then dec=replicate(0., nobj) - if n_elements(rm_indd) ne nobj then rm_indd=replicate(0,nobj) - - for i=0L, nobj-1L do begin - rm_fit1fiber_local,plate[i],fiberid[i],mjd[i],calibdir=calibdir,ntrial=ntrial $ - ,silent=silent, ra=ra[i],dec=dec[i], zfit=zfit[i], deredden=deredden $ - ,rm_indd=rm_indd[i], _extra=extra $ - ,outdir=outdir,errdir=errdir,fits=fits,psplot=psplot,append=append - if keyword_set(pause) then pause - if i eq nobj-1 then return - endfor - endif - - rm_readspec,plate,fiberid,mjd=mjd,calibdir=calibdir $ - ,zans=zans,wave=lam0,flux=flux0,invvar=ivar0,/silent,_extra=extra - npix1=n_elements(flux0) - - err0=ivar0*0 - ind=where(ivar0 ne 0) - if ind[0] ne -1 then err0[ind]=1./sqrt(ivar0[ind]) - - ; degrade the spectrum if err_scal is set - if keyword_set(err_scal) then begin ; - ivar0 = ivar0/(err_scal^2) - err0 = err0*err_scal - flux0 = flux0 + randomn(seed, npix1)*err0 - endif - - - ; Deredden the spectrum - if n_elements(deredden) eq 0 then deredden=1L - if keyword_set(deredden) then begin - dereddening_spec, lam0, flux0, err=err0 $ - , ra=ra, dec=dec $ - , dered_flux = dered_flux, dered_err = dered_err - flux0 = dered_flux & err0 = dered_err - endif - - objtag1=string(plate,format='(i4.4)')+'-'+string(mjd,format='(i5.5)') $ - +'-'+string(fiberid,format='(i4.4)') - objtag='RM Target '+string(rm_indd,format='(i3.3)')+': '+objtag1 - if n_elements(ra) eq 0 then ra1=0. else ra1=ra - if n_elements(dec) eq 0 then dec1=0. else dec1=dec - radec2string,ra1,dec1,dummy,rahr=rahr,ramin=ramin,rasec=rasec $ - , decdeg=decdeg,decmin=decmin,decsec=decsec - sdss_name=rahr+ramin+rasec+decdeg+decmin+decsec - - if keyword_set(zfit) then z0=zfit[0] else z0=zans.z - - rm_local_qsofit,lam0,flux0,err0,z0,outdir=outdir,append=append $ - ,objtag=objtag,silent=silent, _extra=extra $ - ,fits=fits, psplot=psplot, output_name=objtag1 $ - ,nsmooth=3, para=para - splog, 'Fitting: ', objtag - - ; proceed to compute error array - if n_elements(err_array) ne 0 then tmp=temporary(err_array) - if n_elements(ntrial) eq 0 then ntrial = 0L - for jj=0,ntrial-1 do begin - rm_local_qsofit,lam0,flux0,err0,z0,/noplot,/silent,/diet,/add_noise,para=para - tag_rej=['LINE_FIT_ERR'] - remove_tags, para, tag_rej, para_keep - - splog, ' Error trial: ',jj+1 - ; Only add this trial if the continuum fit is OK - ; The large redchi2 is to keep fits on very high SN spectrum - if para_keep.conti_redchi2 lt 100. and para_keep.conti_redchi2 gt 0 then begin - if n_elements(err_array) eq 0 then err_array=para_keep $ - else err_array=[err_array,para_keep] - endif - endfor - if keyword_set(errdir) then begin - fits_errfile=errdir+objtag1+'.fits' - if n_elements(err_array) ne 0 then mwrfits, err_array, fits_errfile, /create - endif - -end - -;------------------------------------------------------------------------- -pro rm_fitplate_local, plate,mjd,zlist=zlist,calibdir=calibdir,range=range,ntrial=ntrial, $ - silent=silent,coadd=coadd,emparfile=emparfile,outdir=outdir,add_bhmass=add_bhmass, $ - figfile=figfile,outfile=outfile,linename=linename,trim_edge=trim_edge, err_scal=err_scal - - if not keyword_set(emparfile) then $ - emparfile=getenv('IDLRM_DIR')+'/etc/qsoline_few.par' - - if (size(plate))[0] ne 0 then begin - for i=0, n_elements(plate)-1 do $ - rm_fitplate_local, plate[i],mjd[i],zlist=zlist,calibdir=calibdir,range=range,ntrial=ntrial, $ - silent=silent,coadd=coadd,emparfile=emparfile,outdir=outdir, $ - linename=linename,contiwave=contiwave - return - endif - - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') $ - + '/' + string(plate[0],format='(i4.4)') + '/' - if n_elements(calibdir) eq 0 then begin - calibdir = 'wh_skysub/' - if plate[0] eq 0 or keyword_set(coadd) then calibdir='wh_skysub/' - endif - - if keyword_set(calibdir) then specdir=topdir+calibdir - - if n_elements(silent) eq 0 then silent = 1L - - if n_elements(trim_edge) eq 0 then trim_edge=1L ; default is to trim the spec within [3650-10300] - - if n_elements(add_bhmass) eq 0 then add_bhmass=1L ; default is to add BH mass in rm_compile_qsofit - - ; read in the master file - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - - ; default to use the zfinal in fibermap as input z in rm_qsofit - if n_elements(zlist) eq 0 then zlist = fibermap.zfinal - - if not keyword_set(outdir) then outdir = '/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/local_fit/' - if file_test(outdir) eq 0 then spawn, 'mkdir '+ outdir - fitsdir = outdir + 'fits/' - if file_test(fitsdir) eq 0 then spawn, 'mkdir ' + fitsdir - qadir = outdir + 'QA/' - if file_test(qadir) eq 0 then spawn, 'mkdir ' + qadir - errdir = outdir + 'err/' - if file_test(errdir) eq 0 then spawn, 'mkdir ' + errdir - - ; Default number of Monte Carlo trials of error estimation - if n_elements(ntrial) eq 0 then ntrial=50L - - ; -------- - ; proceed to fit the plate - if plate ne 0 and not keyword_set(coadd) then begin - platelist = fibermap[0].plate & mjdlist = fibermap[0].mjd - ind = (where(platelist eq plate[0] and mjdlist eq mjd[0]))[0] - indd = where(strmatch(fibermap.sourcetype, 'RM*'), nqso) - if keyword_set(zlist) then zfit = zlist[indd] - fiberid = (fibermap.fiberid)[ind,indd] - fibermap = fibermap[indd] - endif else begin ; If the plate is the coadded plate - fiberid = lindgen(1000L) + 1L - indd = where(strmatch(fibermap.sourcetype, 'RM*'), nqso) - if keyword_set(zlist) then zfit = zlist[indd] - fiberid = fiberid[indd] - fibermap = fibermap[indd] - endelse - ; trim the list if required - if keyword_set(range) then begin - fiberid = fiberid[range[0]:range[1]] - fibermap = fibermap[range[0]:range[1]] - if keyword_set(zlist) then zfit = zfit[range[0]:range[1]] - indd = indd[range[0]:range[1]] - endif - nqso = n_elements(indd) - - ; setup the plot - if not keyword_set(figfile) then figfile1=outdir+'QA-'+string(plate,format='(i4.4)')+'-' $ - +string(mjd,format='(i5.5)') + '.ps' else figfile1=outdir+figfile - begplot, name=figfile1, /landscape, /color - - ; Setup error handeling - errfile = outdir + 'err.out.mjd' + string(current_mjd(), format='(f9.3)') - openw, lun, errfile, /get_lun - - ;message, 'stop' - - for i=0L, nqso - 1L do begin - - ; Estabilish error handlers - Catch, error_status - if error_status ne 0 then begin - ;print, 'Error index: ', error_status - catch, /cancel - printf, lun, 'obj plate mjd fiber' - if i le nqso-1 then printf, lun, plate, mjd, fiberid[i] - printf, lun, 'Error message: ', !error_state.msg - printf, lun, ' ' - continue - endif - - - rm_readspec,plate[0],fiberid[i],mjd=mjd[0],path=specdir $ - ,zans=zans,wave=lam0,flux=flux0,invvar=ivar0,/silent - npix1=n_elements(flux0) - - if keyword_set(trim_edge) then begin ; trim the edge of the spectrum, which is typically bad - ind_trim=where(lam0 gt 10350. or lam0 lt 3650.) - if ind_trim[0] ne -1 then ivar0[ind_trim]=0 - endif - - err0=ivar0*0 - ind=where(ivar0 ne 0) - if ind[0] ne -1 then err0[ind]=1./sqrt(ivar0[ind]) - - ; degrade the spectrum if err_scal is set - if keyword_set(err_scal) then begin ; - ivar0 = ivar0/(err_scal^2) - err0 = err0*err_scal - flux0 = flux0 + randomn(seed, npix1)*err0 - endif - - ; Deredden the spectrum - ra=fibermap[i].ra & dec=fibermap[i].dec - dereddening_spec, lam0, flux0, err=err0 $ - , ra=ra, dec=dec $ - , dered_flux = dered_flux, dered_err = dered_err - flux0 = dered_flux & err0 = dered_err - - objtag1=string(plate[0],format='(i4.4)')+'-'+string(mjd[0],format='(i5.5)') $ - +'-'+string(fiberid[i],format='(i4.4)') - objtag='RM Target '+string(indd[i],format='(i3.3)')+': '+objtag1 - radec2string,ra,dec,dummy,rahr=rahr,ramin=ramin,rasec=rasec $ - , decdeg=decdeg,decmin=decmin,decsec=decsec - sdss_name=rahr+ramin+rasec+decdeg+decmin+decsec - - if keyword_set(zlist) then z0 = zfit[i] else z0 = zans.z - rm_local_qsofit, lam0,flux0,err0,z0,outdir=outdir,/append,objtag=objtag,silent=silent $ - , /fits, /psplot, output_name=objtag1, sdss_name=sdss_name,nsmooth=3,emparfile=emparfile - splog, 'Fitting: ', objtag - - ;message, 'stop' - - ; proceed to compute error array - if n_elements(err_array) ne 0 then tmp=temporary(err_array) - for jj=0,ntrial-1 do begin - rm_local_qsofit,lam0,flux0,err0,z0,/noplot,/silent,/diet,/add_noise,para=para,emparfile=emparfile - tag_rej=['LINE_FIT_ERR'] - remove_tags, para, tag_rej, para_keep - - splog, ' Error trial: ',jj+1 - if n_elements(err_array) eq 0 then err_array=para_keep $ - else err_array=[err_array,para_keep] - endfor - fits_errfile=errdir+objtag1+'.fits' - if n_elements(err_array) ne 0 then mwrfits, err_array, fits_errfile, /create - endfor - - endplot - ; fix the orientation of the plot to seascape - print, figfile1 - cgfixps, figfile1 - - ; gzip the QA file - spawn, 'gzip -f ' + figfile1 - - ; output the complication of line measurements - rm_compile_qsofit,plate[0],mjd[0], outdir_in=outdir,outfile=outfile, $ - linename=linename,contiwave=contiwave,add_bhmass=add_bhmass,rm_plate=rm_plate - - ; close error log - close, lun - free_lun, lun - -end diff --git a/pro/rm/rm_fix_badfits.pro b/pro/rm/rm_fix_badfits.pro deleted file mode 100644 index 1a1fe1012..000000000 --- a/pro/rm/rm_fix_badfits.pro +++ /dev/null @@ -1,111 +0,0 @@ -; a tiny fraction of the Hbeta and Halpha fits were bad due to sensitivity to initial guesses; -; ~1% of objects were affected (both measurements and error estimation) -; find these fits and re-fit with the updated rm_qsofit routine - -pro rm_fix_badfits, istart=istart - - ; read in the master file - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - - badfits_file = getenv('IDLRM_DIR') + '/misc/badfits.fits' - tmp=file_test(badfits_file) - if tmp eq 0 then begin ; find all the bad fits and compile a list - epoch_id=indgen(18) - rm_get_rms_prop,result=result,epoch_id=epoch_id - ; find all the objects with Hbeta or Halpha fits - ; ind = where(result.hbeta_ngood gt 0 or result.halpha_ngood gt 0,nobj) - ; all 849 objects - ind = indgen(849) - nobj = n_elements(ind) - nepoch=n_elements(epoch_id) - rm_ID = result[ind].rm_id - plate = (fibermap[rm_id].plate)[epoch_id, *] - fiber = (fibermap[rm_id].fiberid)[epoch_id,*] - mjd = (fibermap[rm_id].mjd)[epoch_id,*] - - obj_refit = {rm_ID:-1L, epoch_badfit:lonarr(nepoch), refit:0L} - obj_refit = replicate(obj_refit, nobj) - obj_refit.rm_ID = rm_ID - - ntot=0L - for i=0L, nobj-1 do begin - epoch_badfit = lonarr(nepoch) - for j=0L, nepoch - 1 do begin - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') $ - + '/' + string(plate[j,i],format='(i4.4)') + '/qsofit/fits/' - fitsfile=topdir+string(plate[j,i],format='(i4.4)') + '-' + $ - string(mjd[j,i],format='(i5.5)') + '-' + $ - string(fiber[j,i],format='(i4.4)') + '.fits' - if file_test(fitsfile) eq 1 then begin - para = mrdfits(fitsfile, 1, /silent) - ;indd = where(strmatch(para.linename,'Halpha*') or strmatch(para.linename,'Hbeta*')) - redchi2=para.line_redchi2 - if max(redchi2) gt 5. then begin - obj_refit[i].refit = 1L - epoch_badfit[j] = 1L - ntot = ntot + 1L - splog, 'Object refit:', obj_refit[i].rm_id,plate[j,i],mjd[j,i],fiber[j,i], ntot - endif - endif - endfor - obj_refit[i].epoch_badfit = epoch_badfit - endfor - - mwrfits, obj_refit, badfits_file, /create - endif - - ; start re-fit these bad fits - obj_refit=mrdfits(badfits_file,1) - ; keep only those that need refit - ind = where(obj_refit.refit eq 1) - obj_refit = obj_refit[ind] - - nnn=n_elements(obj_refit) - - ; Setup error handeling - errfile = getenv('IDLRM_DIR') + '/misc/' + 'refit.err.out.mjd' + string(current_mjd(), format='(f9.3)') - openw, lun, errfile, /get_lun - - if n_elements(istart) eq 0 then istart=0L - for i=istart, nnn - 1L do begin - - rm_id = obj_refit[i].rm_id - plate = fibermap[rm_id].plate - fiber = fibermap[rm_id].fiberid - mjd = fibermap[rm_id].mjd - ind = where(plate gt 0, nfit) - plate=plate[ind] & fiber=fiber[ind] & mjd=mjd[ind] - - ; the idea is to re-fit all epochs of this particular object - for j=0L, nfit - 1 do begin - - ; Estabilish error handlers - Catch, error_status - if error_status ne 0 then begin - ;print, 'Error index: ', error_status - printf, lun, 'rm_ID plate mjd fiber' - printf, lun, rm_id, plate[j], mjd[j], fiber[j] - printf, lun, 'Error message: ', !error_state.msg - printf, lun, ' ' - catch, /cancel - continue - endif - - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') $ - + '/' + string(plate[j],format='(i4.4)') + '/' - outdir = topdir + 'qsofit/' - errdir = outdir + 'err/' - rm_fit1fiber,plate[j],fiber[j],mjd[j], $ - ra=fibermap[rm_id].ra,dec=fibermap[rm_id].dec, $ - zfit=fibermap[rm_id].zfinal,rm_indd=rm_id, $ - outdir=outdir, /fits,/psplot, errdir=errdir,ntrial=50L - - endfor - endfor - - ; close error log - close, lun - free_lun, lun - -end diff --git a/pro/rm/rm_get_pt.pro b/pro/rm/rm_get_pt.pro deleted file mode 100644 index 5ec323e31..000000000 --- a/pro/rm/rm_get_pt.pro +++ /dev/null @@ -1,31 +0,0 @@ -; Get the PrepSpec p0(t) corrections -; note that p0(t) is supposed to be divided by the raw spectrum - -function rm_get_pt, rmid, topdir=topdir, err=err, nep=nep, mjd_all=mjd_all - -;if ~keyword_set(nep) then nep=32L -nep = n_elements(mjd_all) - -if ~keyword_set(topdir) then $ - topdir='/data3/yshen/ftp/sdssrm/collab/prepspec/ACBFJ/' -rmtag = 'rm'+string(rmid,format='(i3.3)') - -ptfile = topdir + rmtag + '/' + rmtag+'_p0_t.dat' -pt=replicate(1., nep) & err=0.*pt -if file_test(ptfile) eq 1 then begin - readcol,ptfile,format='d,d,d',mjd,lnpt, lnpt_err, /silent - if n_elements(mjd) gt 0 then begin - mjd = floor(mjd) - nep1=n_elements(mjd) - for i=0L, nep1 - 1 do begin - ind=where( abs(floor(mjd_all) - (mjd[i]+50000.) ) le 1d-2) - if ind[0] ne -1 then begin - pt[ind]=exp(lnpt[i]) & err[ind]=pt[ind]*lnpt_err[i] - endif - endfor - endif -endif - -return, pt - -end diff --git a/pro/rm/rm_get_rms_prop.pro b/pro/rm/rm_get_rms_prop.pro deleted file mode 100644 index 14e1478f5..000000000 --- a/pro/rm/rm_get_rms_prop.pro +++ /dev/null @@ -1,320 +0,0 @@ -;+ -; NAME: -; rm_get_rms_prop -; -; PURPOSE: -; Get the fractional RMS variations from the qsofit results -; -; -; CALLING SEQUENCE: -; rm_get_rms_prop, [plate,mjd], result=result, [epoch_id=[0,3,4,5,7,8,9,10,11,12] ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; plate - Array of plate numbers of the epochs used to compute RMS -; mjd - Array of MJD of the epochs used to compute RMS -; epoch_id - Array of indices of epochs used to compute RMS (start from 0) -; rm_ID - Indices of objects to compute RMS (same order in fibermap); -; default rm_ID=0:848 -; -; OUTPUTS: -; result - fractional RMS variation and median errors for selected lines/continuum; -; .*_ngood: number of good epochs in computing the RMS -;----------------- -pro rm_get_rms_prop,plate=plate,mjd=mjd,rm_ID,result=result,epoch_id=epoch_id,silent=silent - - if n_elements(plate) ne n_elements(mjd) then begin - splog, 'Plate and MJD must have the same number of elements. Return.' - return - endif - - if n_elements(plate) gt 0 and n_elements(epoch_id) gt 0 then begin - splog, 'Plate and epoch_id cannot be set at the same time. Return.' - return - endif - - topdir='/data3/quasar/yshen/spectro/bossredux/' + getenv('RUN2D') + '/' - - ; read in the master file - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - plate_all=fibermap[0].plate - mjd_all=fibermap[0].mjd - ind=where(plate_all gt 0) - plate_all=plate_all[ind] - mjd_all=mjd_all[ind] - fiber_all=(fibermap.fiberid)[ind,0:848] - - ; default is to use all epochs - if n_elements(plate) eq 0 then begin - plate=plate_all - mjd=mjd_all - if keyword_set(epoch_id) then begin - plate=plate[epoch_id] & mjd=mjd[epoch_id] - endif - endif - if n_elements(rm_ID) eq 0 then rm_ID=indgen(849) - nobj=n_elements(rm_ID) - - ; determin which epochs are included in the RMS computation - flag=lonarr(n_elements(plate_all)) - for i=0, n_elements(plate)-1 do begin - ind=where(plate_all eq plate[i] and mjd_all eq mjd[i]) - if ind[0] ne -1 then flag[i] = 1 - endfor - ind_epoch = where(flag eq 1, nepoch) - ; override the index of epochs to use - if keyword_set(epoch_ID) then ind_epoch = epoch_ID - fiber = fiber_all[*, rm_ID] - fiber = fiber[ind_epoch,*] - - struct={rm_ID:-1L,plate:plate,mjd:mjd,hbeta_rms:0.D, hbeta_mederr:-1.D, hbeta_ngood:0L, $ - hbeta_LC:dblarr(nepoch),hbeta_err:dblarr(nepoch)-1,hbeta_goodflag:lonarr(nepoch), $ - mgii_rms:0.d, mgii_mederr:-1.D, mgii_ngood:0L, $ - mgii_LC:dblarr(nepoch),mgii_err:dblarr(nepoch)-1,mgii_goodflag:lonarr(nepoch), $ - oiii_rms:0.D, oiii_mederr:-1.D, oiii_ngood:0L, $ - oiii_LC:dblarr(nepoch),oiii_err:dblarr(nepoch)-1,oiii_goodflag:lonarr(nepoch), $ - halpha_rms:0.D, halpha_mederr:-1.D, halpha_ngood:0L, $ - halpha_LC:dblarr(nepoch),halpha_err:dblarr(nepoch)-1,halpha_goodflag:lonarr(nepoch), $ - ciii_rms:0.D, ciii_mederr:-1.D, ciii_ngood:0L, $ - ciii_LC:dblarr(nepoch),ciii_err:dblarr(nepoch)-1,ciii_goodflag:lonarr(nepoch), $ - civ_rms:0.D, civ_mederr:-1.D, civ_ngood:0L, $ - civ_LC:dblarr(nepoch),civ_err:dblarr(nepoch)-1, civ_goodflag:lonarr(nepoch), $ - L1350_rms:0.D, L1350_mederr:-1.D, L1350_ngood:0L, $ - L1350_LC:dblarr(nepoch),L1350_err:dblarr(nepoch)-1, L1350_goodflag:lonarr(nepoch), $ - L1700_rms:0.D, L1700_mederr:-1.D, L1700_ngood:0L, $ - L1700_LC:dblarr(nepoch),L1700_err:dblarr(nepoch)-1, L1700_goodflag:lonarr(nepoch), $ - L3000_rms:0.D, L3000_mederr:-1.D, L3000_ngood:0L, $ - L3000_LC:dblarr(nepoch),L3000_err:dblarr(nepoch)-1, L3000_goodflag:lonarr(nepoch), $ - L5100_rms:0.D, L5100_mederr:-1.D, L5100_ngood:0L, $ - L5100_LC:dblarr(nepoch),L5100_err:dblarr(nepoch)-1, L5100_goodflag:lonarr(nepoch) $ - } - ; - result=replicate(struct,nobj) - result.rm_ID = rm_ID - - ; Hbeta - arr1 = dblarr(nepoch,nobj) & err1 = dblarr(nepoch,nobj) & redchi2_1=dblarr(nepoch,nobj) - ; MgII - arr2 = dblarr(nepoch,nobj) & err2 = dblarr(nepoch,nobj) & redchi2_2=dblarr(nepoch,nobj) - ; OIII - arr3 = dblarr(nepoch,nobj) & err3 = dblarr(nepoch,nobj) & redchi2_3=dblarr(nepoch,nobj) - ; L3000 - arr4 = dblarr(nepoch,nobj) & err4 = dblarr(nepoch,nobj) & redchi2_4=dblarr(nepoch,nobj) - ; L1350 - arr5 = dblarr(nepoch,nobj) & err5 = dblarr(nepoch,nobj) & redchi2_5=dblarr(nepoch,nobj) - ; L1700 - arr6 = dblarr(nepoch,nobj) & err6 = dblarr(nepoch,nobj) & redchi2_6=dblarr(nepoch,nobj) - ; L5100 - arr7 = dblarr(nepoch,nobj) & err7 = dblarr(nepoch,nobj) & redchi2_7=dblarr(nepoch,nobj) - ; Halpha - arr8 = dblarr(nepoch,nobj) & err8 = dblarr(nepoch,nobj) & redchi2_8=dblarr(nepoch,nobj) - ; CIII_all - arr9 = dblarr(nepoch,nobj) & err9 = dblarr(nepoch,nobj) & redchi2_9=dblarr(nepoch,nobj) - ; CIV - arr10 = dblarr(nepoch,nobj) & err10 = dblarr(nepoch,nobj) & redchi2_10=dblarr(nepoch,nobj) - - for i_ep=0, nepoch-1 do begin - - platestr=string(plate[i_ep],format='(i4.4)') - mjdstr=string(mjd[i_ep],format='(i5.5)') - fitsfile=topdir+platestr+'/qsofit/qso_prop-' + platestr + '-' + mjdstr + '.fits' - qsofit = mrdfits(fitsfile,1,/silent) - qsofit = qsofit[rm_ID] - - ; do it for Hbeta - arr1[i_ep,*] = (qsofit.hbeta)[2,*] ; this is logL - err1[i_ep,*] = (qsofit.hbeta_err)[2,*] ; this is err in logL - redchi2_1[i_ep,*] = qsofit.hbeta_redchi2 - ; do it for MgII - arr2[i_ep,*] = (qsofit.mgii)[2,*] ; this is logL - err2[i_ep,*] = (qsofit.mgii_err)[2,*] ; this is err in logL - redchi2_2[i_ep,*] = qsofit.mgii_redchi2 - ; do it for oiii - arr3[i_ep,*] = (qsofit.oiii5007)[2,*] ; this is logL - err3[i_ep,*] = (qsofit.oiii5007_err)[2,*] ; this is err in logL - redchi2_3[i_ep,*]=qsofit.oiii5007_redchi2 - ; do it for L3000 - arr4[i_ep,*] = (qsofit.logL3000)[*] ; this is logL - err4[i_ep,*] = (qsofit.logL3000_err)[*] ; this is err in logL - redchi2_4[i_ep,*]=qsofit.conti_redchi2 - ; do it for L1350 - arr5[i_ep,*] = (qsofit.logL1350)[*] ; this is logL - err5[i_ep,*] = (qsofit.logL1350_err)[*] ; this is err in logL - redchi2_5[i_ep,*]=qsofit.conti_redchi2 - ; L1700 - arr6[i_ep,*] = (qsofit.logL1700)[*] ; this is logL - err6[i_ep,*] = (qsofit.logL1700_err)[*] ; this is err in logL - redchi2_6[i_ep,*]=qsofit.conti_redchi2 - ; L5100 - arr7[i_ep,*] = (qsofit.logL5100)[*] ; this is logL - err7[i_ep,*] = (qsofit.logL5100_err)[*] ; this is err in logL - redchi2_7[i_ep,*]=qsofit.conti_redchi2 - ; halpha - arr8[i_ep,*] = (qsofit.halpha)[2,*] ; this is logL - err8[i_ep,*] = (qsofit.halpha_err)[2,*] ; this is err in logL - redchi2_8[i_ep,*]=qsofit.halpha_redchi2 - ; ciii_all - arr9[i_ep,*] = (qsofit.ciii_all)[2,*] ; this is logL - err9[i_ep,*] = (qsofit.ciii_all_err)[2,*] ; this is err in logL - redchi2_9[i_ep,*]=qsofit.ciii_all_redchi2 - ; civ - arr10[i_ep,*] = (qsofit.civ)[2,*] ; this is logL - err10[i_ep,*] = (qsofit.civ_err)[2,*] ; this is err in logL - redchi2_10[i_ep,*]=qsofit.civ_redchi2 - - - endfor - if not keyword_set(silent) then splog, 'Finished reading all epochs' - - ;message, 'stop' - maxredchi2=100. ; maximum value of redchi2 to deem a good fit epoch - - for iobj=0,nobj-1 do begin - - ; for hbeta - arr = arr1[*, iobj] & err = err1[*,iobj] & redchi2=redchi2_1[*,iobj] - ind = where(arr gt 0 and err gt 0 and redchi2 lt maxredchi2,nnn) - if nnn gt 0 then result[iobj].hbeta_goodflag[ind] = 1 - result[iobj].hbeta_ngood=nnn - result[iobj].hbeta_lc = arr - result[iobj].hbeta_err = err - if nnn gt 1 then begin - arr = arr[ind] & err = err[ind] - ; covert to linear flux scale - result[iobj].hbeta_rms=stddev(10.D^arr)/mean(10.D^arr) - result[iobj].hbeta_mederr=median(err)*alog(10.D) - endif - - ; for MgII - arr = arr2[*, iobj] & err = err2[*,iobj] & redchi2=redchi2_2[*,iobj] - ind = where(arr gt 0 and err gt 0 and redchi2 lt maxredchi2,nnn) - if nnn gt 0 then result[iobj].mgii_goodflag[ind] = 1 - result[iobj].mgii_ngood=nnn - result[iobj].mgii_lc = arr - result[iobj].mgii_err = err - if nnn gt 1 then begin - arr = arr[ind] & err = err[ind] - ; covert to linear flux scale - result[iobj].mgii_rms=stddev(10.D^arr)/mean(10.D^arr) - result[iobj].mgii_mederr=median(err)*alog(10.D) - endif - - ; for OIII - arr = arr3[*, iobj] & err = err3[*,iobj] & redchi2=redchi2_3[*,iobj] - ind = where(arr gt 0 and err gt 0 and redchi2 lt maxredchi2,nnn) - if nnn gt 0 then result[iobj].oiii_goodflag[ind] = 1 - result[iobj].oiii_ngood=nnn - result[iobj].oiii_lc = arr - result[iobj].oiii_err = err - if nnn gt 1 then begin - arr = arr[ind] & err = err[ind] - ; covert to linear flux scale - result[iobj].oiii_rms=stddev(10.D^arr)/mean(10.D^arr) - result[iobj].oiii_mederr=median(err)*alog(10.D) - endif - - ; for L3000 - arr = arr4[*, iobj] & err = err4[*,iobj] & redchi2=redchi2_4[*,iobj] - ind = where(arr gt 0 and err gt 0 and redchi2 lt maxredchi2,nnn) - if nnn gt 0 then result[iobj].L3000_goodflag[ind] = 1 - result[iobj].L3000_ngood=nnn - result[iobj].L3000_lc = arr - result[iobj].L3000_err = err - if nnn gt 1 then begin - arr = arr[ind] & err = err[ind] - ; covert to linear flux scale - result[iobj].L3000_rms=stddev(10.D^arr)/mean(10.D^arr) - result[iobj].L3000_mederr=median(err)*alog(10.D) - endif - - ; L1350 - arr = arr5[*, iobj] & err = err5[*,iobj] & redchi2=redchi2_5[*,iobj] - ind = where(arr gt 0 and err gt 0 and redchi2 lt maxredchi2,nnn) - if nnn gt 0 then result[iobj].L1350_goodflag[ind] = 1 - result[iobj].L1350_ngood=nnn - result[iobj].L1350_lc = arr - result[iobj].L1350_err = err - if nnn gt 1 then begin - arr = arr[ind] & err = err[ind] - ; covert to linear flux scale - result[iobj].L1350_rms=stddev(10.D^arr)/mean(10.D^arr) - result[iobj].L1350_mederr=median(err)*alog(10.D) - endif - - ; L1700 - arr = arr6[*, iobj] & err = err6[*,iobj] & redchi2=redchi2_6[*,iobj] - ind = where(arr gt 0 and err gt 0 and redchi2 lt maxredchi2,nnn) - if nnn gt 0 then result[iobj].L1700_goodflag[ind] = 1 - result[iobj].L1700_ngood=nnn - result[iobj].L1700_lc = arr - result[iobj].L1700_err = err - if nnn gt 1 then begin - arr = arr[ind] & err = err[ind] - ; covert to linear flux scale - result[iobj].L1700_rms=stddev(10.D^arr)/mean(10.D^arr) - result[iobj].L1700_mederr=median(err)*alog(10.D) - endif - - ; L5100 - arr = arr7[*, iobj] & err = err7[*,iobj] & redchi2=redchi2_7[*,iobj] - ind = where(arr gt 0 and err gt 0 and redchi2 lt maxredchi2,nnn) - if nnn gt 0 then result[iobj].L5100_goodflag[ind] = 1 - result[iobj].L5100_ngood=nnn - result[iobj].L5100_lc = arr - result[iobj].L5100_err = err - if nnn gt 1 then begin - arr = arr[ind] & err = err[ind] - ; covert to linear flux scale - result[iobj].L5100_rms=stddev(10.D^arr)/mean(10.D^arr) - result[iobj].L5100_mederr=median(err)*alog(10.D) - endif - - ; halpha - arr = arr8[*, iobj] & err = err8[*,iobj] & redchi2=redchi2_8[*,iobj] - ind = where(arr gt 0 and err gt 0 and redchi2 lt maxredchi2,nnn) - if nnn gt 0 then result[iobj].halpha_goodflag[ind] = 1 - result[iobj].halpha_ngood=nnn - result[iobj].halpha_lc = arr - result[iobj].halpha_err = err - if nnn gt 1 then begin - arr = arr[ind] & err = err[ind] - ; covert to linear flux scale - result[iobj].halpha_rms=stddev(10.D^arr)/mean(10.D^arr) - result[iobj].halpha_mederr=median(err)*alog(10.D) - endif - - ; ciii_all - arr = arr9[*, iobj] & err = err9[*,iobj] & redchi2=redchi2_9[*,iobj] - ind = where(arr gt 0 and err gt 0 and redchi2 lt maxredchi2,nnn) - if nnn gt 0 then result[iobj].ciii_goodflag[ind] = 1 - result[iobj].ciii_ngood=nnn - result[iobj].ciii_lc = arr - result[iobj].ciii_err = err - if nnn gt 1 then begin - arr = arr[ind] & err = err[ind] - ; covert to linear flux scale - result[iobj].ciii_rms=stddev(10.D^arr)/mean(10.D^arr) - result[iobj].ciii_mederr=median(err)*alog(10.D) - endif - - ; civ - arr = arr10[*, iobj] & err = err10[*,iobj] & redchi2=redchi2_10[*,iobj] - ind = where(arr gt 0 and err gt 0 and redchi2 lt maxredchi2,nnn) - if nnn gt 0 then result[iobj].civ_goodflag[ind] = 1 - result[iobj].civ_ngood=nnn - result[iobj].civ_lc = arr - result[iobj].civ_err = err - if nnn gt 1 then begin - arr = arr[ind] & err = err[ind] - ; covert to linear flux scale - result[iobj].civ_rms=stddev(10.D^arr)/mean(10.D^arr) - result[iobj].civ_mederr=median(err)*alog(10.D) - endif - - - endfor - -end - diff --git a/pro/rm/rm_global_fit.pro b/pro/rm/rm_global_fit.pro deleted file mode 100644 index cd077a9bc..000000000 --- a/pro/rm/rm_global_fit.pro +++ /dev/null @@ -1,1129 +0,0 @@ -;+ -; NAME: -; rm_global_fit -; -; PURPOSE: -; Globally fit the QSO spectrum from Lya to Halpha -; -; CALLING SEQUENCE: -; rm_global_fit, obs_wave, flux, err, z, [ra=,dec=,/psplot,/fits] -; -; -; INPUTS: -; -; -; OPTIONAL INPUTS: -; -; -; OUTPUTS: -; -; -; OPTIONAL OUTPUTS: -; -; -; COMMENTS: -; -; -; PROCEDURES CALLED -; -; -; REVISION HISTORY: -; -; -; - - -function Fe_flux_mgii, xval, pp - - common Fe_temp, wave_Fe_civ, flux_fe_civ, wave_Fe_mgii, flux_Fe_mgii $ - , wave_Fe_balmer, flux_Fe_balmer - - ;c = 2.9979246d5 - Fe_FWHM = pp[1] ; broadening FWHM - - nnn = n_elements(xval) - yval = dblarr(nnn) - xval_new = xval*(1.0 + pp[2]) - - ind = where(xval_new ge 1200. and xval_new le 3500.) - if ind[0] ne -1 then begin - - if Fe_FWHM le 900.0 then sig_conv = sqrt(910.0^2 - 900.0^2)/2./sqrt(2.*alog(2.)) $ - else sig_conv = sqrt(Fe_FWHM^2 - 900.0^2)/2./sqrt(2.*alog(2.)) - - ; Get sigma in pixel space - sig_pix = sig_conv/103.6 ; where 550 km/s is the median dispersion - ; for Salviander et al. (Vestergarrd's) Fe template from [2200, 3090] - ; but note that the Vestergaard's template has a different median - ; dispersion 55 km/s in wavelength for [2200,3090] - ; For the Tsuzuki06 template, dispersion is ~50km/s within [2200,3500] - ; and varies between 65km/s and 40km/s - ; Here I am using feconv_uv_shen, which has constant v_disp=103.6 km/s - - khalfsz = round (4*sig_pix+1) - xx= findgen(khalfsz*2+1) - khalfsz - kernel = exp(-xx^2/(2*sig_pix^2)) - kernel = kernel/total(kernel) - - flux_Fe_conv = convol(flux_Fe_mgii, kernel, /center, /edge_truncate) - yval[ind] = pp[0]*spline(wave_Fe_mgii, flux_Fe_conv, xval_new[ind]) - endif - - return, yval - -end - -function Fe_flux_balmer, xval, pp - - common Fe_temp, wave_Fe_civ, flux_fe_civ, wave_Fe_mgii, $ - flux_Fe_mgii, wave_Fe_balmer, flux_Fe_balmer - - Fe_FWHM = pp[1] ; broadening FWHM - - nnn = n_elements(xval) - yval = dblarr(nnn) - xval_new = xval*(1.0 + pp[2]) - - ind = where(xval_new ge 3686. and xval_new le 7484.) - if ind[0] ne -1 then begin - ; Convolve the original Fe template with parameter Fe_FWHM - ; (I Zw1 has intrinsic FWHM 900 km/s) - ; initial FWHM in the template is 900 km/s, - ; so force Fe_FWHM=910.0 if input Fe_FWHM <= 900 km/s - if Fe_FWHM le 900.0 then sig_conv = sqrt(910.0^2 - 900.0^2)/2./sqrt(2.*alog(2.)) $ - else sig_conv = sqrt(Fe_FWHM^2 - 900.0^2)/2./sqrt(2.*alog(2.)) ; in units of km/s - - ; Get sigma in pixel space - sig_pix = sig_conv/106.3 ; where 106.3 km/s is the dispersion for the Boroson Fe template - - khalfsz = round (4*sig_pix+1) - xx= findgen(khalfsz*2+1) - khalfsz - kernel = exp(-xx^2/(2*sig_pix^2)) - kernel = kernel/total(kernel) - - flux_Fe_conv = convol(flux_Fe_balmer, kernel, /center, /edge_truncate) - yval[ind] = pp[0]*spline(wave_Fe_balmer, flux_Fe_conv, xval_new[ind]) - endif - - return, yval - -end - -function f_poly_conti, xval, pp - - xval2 = xval - 3000. - yval = 0*xval2 - for i=0L, n_elements(pp) - 1L do $ - yval = yval + pp[i]*xval2^i - - return, yval -end - -function f_conti_only, xval, pp - - f_conti_BC = balmer_conti(xval, pp[2:4]) ; Balmer continuum - f_pl = pp[0]*(xval/3000.0)^pp[1] ; power-law continuum - f_poly = f_poly_conti(xval, pp[5:*]) - yval = f_pl + f_conti_BC + f_poly - - return, yval -end - -function f_fe_only, xval, pp - - yval = Fe_flux_mgii(xval, pp[0:2]) + Fe_flux_balmer(xval, pp[3:5]) - - return, yval -end - -function f_conti_all, xval, pp - - ; pp[0]: norm_factor for the MgII Fe_template - ; pp[1]: FWHM for the MgII Fe_template - ; pp[2]: small shift of wavelength for the MgII Fe template - ; pp[3:5]: same as pp[0:2] but for the Hbeta/Halpha Fe template - ; pp[6]: norm_factor for continuum f_lambda = (lambda/3000.0)^{-alpha} - ; pp[7]: slope for the power-law continuum - ; pp[8:10]: norm, Te and Tau_e for the Balmer continuum at <3646 A - ; pp[11:15]: 4th order polynomial for the continuum - - common objdata, ra_c, dec_c, z_c - - nnn = n_elements(xval) - yval = dblarr(nnn) - f_Fe_MgII = Fe_flux_mgii(xval, pp[0:2]) - f_Fe_Balmer = Fe_flux_balmer(xval, pp[3:5]) - f_conti_BC = balmer_conti(xval, pp[8:10]) ; Balmer continuum - - f_pl = pp[6]*(xval/3000.0)^pp[7] ; power-law continuum - f_poly = f_poly_conti(xval, pp[11:*]) - yval = f_pl + f_Fe_MgII + f_Fe_Balmer + f_conti_BC + f_poly - - return, yval - -end - -;############################### Main Routine ######################################## - -pro rm_global_fit, lam0, flux0, err0, z, ra=ra,dec=dec, deredden=deredden $ - , conti_fit=conti_fit, fit_flag = fit_flag, line_fit_flag = line_fit_flag $ - , f_conti_model = f_conti_model, xrange = xrange, outdir = outdir $ - , psplot = psplot, fits= fits, output_name = output_name, silent = silent $ - , fit_line = fit_line, para=para, SDSS_name = SDSS_name $ - , wave_range = wave_range $ ; setup the restframe wavelength to fit - , input_fitmask = input_fitmask $ ; input additional fitmasks, e.g., user-defined absorption masks - , poly_ord=poly_ord, rej_iter=rej_iter $ - , tie_CIII = tie_CIII $ ; tie AlIII and SiIII redshift to that of CIII] - , add_noise = add_noise, local_CIV_CIII_fit = local_CIV_CIII_fit $ - , sig_uv_nl = sig_uv_nl, voff_uv_nl = voff_uv_nl $ ; [sig_uv_nl,voff_uv_nl] are constraints for the narrow line component - , ngauss_broad_Ha = ngauss_broad_Ha, ngauss_broad_Hb = ngauss_broad_Hb $ - , ngauss_broad_MgII = ngauss_broad_MgII, ngauss_broad_CIII = ngauss_broad_CIII $ - , ngauss_broad_CIV = ngauss_broad_CIV, no_narrow_line = no_narrow_line $ - , auto_abs_rej = auto_abs_rej, conti_auto_abs_rej = conti_auto_abs_rej $ - , HeII_fit = HeII_fit, nsmooth=nsmooth, diet=diet $ - , sim_conti_fe_fit=sim_conti_fe_fit - - common objdata, ra_c, dec_c, z_c - - ; Define constants - c = 2.9979246d5 ; speed of light, km/s - if n_elements(z) eq 0 then z = 0. ; default is in restframe - if n_elements(conti_auto_abs_rej) eq 0 then conti_auto_abs_rej = 1L - if n_elements(auto_abs_rej) eq 0 then auto_abs_rej = 1L ; default is to auto reject absorption from the first linefit - if n_elements(fit_line) eq 0 then fit_line = 1L ; default is to fit the lines - - lam = lam0 & flux = flux0 & err = err0 - if keyword_set(add_noise) then begin ; add gaussian noise - npix = n_elements(flux) - flux = flux + randomn(seed, npix)*err - endif - ra_c = ra & dec_c = dec & z_c = z - - ; fit_flag = [fit_balmer_conti,not_fit_UV_Fe,fix_mgii_fe_FWHM,fix_balmer_fe_FWHM,fit_poly_conti] - ; set the flag to fit the component - ; In some cases the Balmer continuum is poorly constrained, - ; and hence will degrade the global power-law fit - if n_elements(fit_flag) eq 0 then fit_flag = [0,0,0,0,1] - if fit_flag[1] eq 1 then fit_flag[2] = 0L ; if not fitting UV FeII template, then do not set fix_mgII_fe_FWHM=1 - - ; Default is *NOT* to fit a narrow component for MgII, CIII] and CIV - if n_elements(no_narrow_line) eq 0 then no_narrow_line = 1L - - ; Default is to fit the HeII1640 complex - if n_elements(HeII_fit) eq 0 then HeII_fit = 1L - - ; Default is to add a 4th order polynomial to the continuum - if n_elements(poly_ord) eq 0 then poly_ord = 3 - - ; Number of linefit absorption rejection iteration - if n_elements(rej_iter) eq 0 then rej_iter = 2L - - ; Default is to fit continuum+FeII simultaneously - if n_elements(sim_conti_fe_fit) eq 0 then sim_conti_fe_fit=1L - - ; common block for the FeII template - common Fe_temp, wave_Fe_civ, flux_fe_civ, wave_Fe_mgii, flux_Fe_mgii, $ - wave_Fe_balmer, flux_Fe_balmer - if n_elements(wave_Fe_mgii) eq 0 then begin - - ; read in the Salvaider/Vestergaard template for MgII - file = getenv('IDLRM_DIR')+'/template/feconv_uv_shen' - ; wave_Fe1 [2200, 3090]; wave_Fe2 [4526, 6357] - ; readcol, file, format = 'x,d,d,d,d', wave_1, flux_1, wave_2, flux_2, /silent - readcol, file, format='d,d', logwave_1, flux_1 - wave_Fe_mgii = 10.D^logwave_1 - flux_Fe_mgii = flux_1*1d15 - - ; read in the Boroson&Green optical template for Balmer - file = getenv('IDLRM_DIR')+'/template/irontemplate.dat' - readcol, file, format = 'd,d', logwave_1, flux_1, /silent - wave_Fe_balmer = 10.0D^logwave_1 - flux_Fe_balmer = flux_1*1d15 - ind = where(wave_Fe_balmer ge 3686. and wave_Fe_balmer le 7484.) - wave_Fe_balmer = wave_Fe_balmer[ind] - flux_Fe_balmer = flux_Fe_balmer[ind] - - endif - - ; deredden Galactic extinction if asked - if keyword_set(deredden) then begin - if not keyword_Set(silent) then splog, $ - 'Dereddening spectrum using the SFD map and CCM extinction curve' - dereddening_spec, lam, flux, err=err, ra=ra, dec=dec $ - , dered_flux = dered_flux, dered_err = dered_err - flux = dered_flux & err = dered_err - endif - - ivar = dblarr(n_elements(err)) - indd = where(err gt 1d-6) - ivar[indd] = 1./(err[indd])^2 - - ; mask out 3-sigma outlier of the 20-pix smoothed spectrum, to reduce the effects of - ; absorption - fitmask = ivar NE 0.0 - - ; Mask outliers and absorption in the emission lines by finding 5 sigma - ; outliers from smoothed spectrum - if n_elements(outlier_mask) eq 0 then outlier_mask = 1L - if keyword_set(outlier_mask) then begin - disp_vec = (alog10(lam)-shift(alog10(lam), 1))[1:*] - disp = djs_median(disp_vec) - NRES = 20L ; 20L - bkspace = NRES*disp - spec_set = bspline_iterfit(alog10(lam), flux $ - , invvar = ivar*fitmask $ - , bkspace = bkspace $ - , yfit = flux_spline, maxiter = 10 $ - , upper = 20, lower = 5, nord = 3 $ - , maxrej = 50, outmask = outmask, /silent) - fitmask = fitmask*outmask - endif - ; Add additional mask bits from input - if keyword_set(input_fitmask) then begin - if n_elements(input_fitmask) eq n_elements(lam) then $ - fitmask = fitmask*input_fitmask else $ - splog, 'input_fitmask dimension does not match lam grid.' - endif - - ; Define the continuum+Fe+Balmer continuum fitting windows - window0 = [1350., 1360.] - window1 = [1445., 1465.] & window2 = [1700., 1705.] - window3_1 = [2155., 2400.] & window3_2 = [2480., 2675.] - window4 = [2925., 3400.] & window5 = [4200., 4230.] - window6 = [4435., 4700.] & window7 = [5100., 5535.] - window8 = [6005., 6035.] & window9 = [6035., 6250.] - window10 = [6800., 7000.] & window11 = [7160., 7180.] - - window_all = [[window0], [window1], [window2], [window3_1], $ - [window3_2], [window4], [window5], [window6], $ - [window7], [window8], [window9], [window10], [window11] ] - - window_conti = [[window0], [window1],[window2],[window5],[window8],[window11]] - window_FeII = [[window3_1],[window3_2],[window4],[window6],[window7],[window9],[window10]] - - ; Shift to restframe - wave = lam/(1.0+z) - - ; Cut the wavelength in the windows specified by keywords wave_range - if keyword_Set(wave_range) then begin - ind = where(wave ge wave_range[0] and wave le wave_range[1]) - wave = wave[ind] & flux = flux[ind] & err = err[ind] - fitmask = fitmask[ind] - endif - - ; This is the pixels for simultaneous continuum+FeII fit - ind = where( ( (wave ge window0[0] and wave le window0[1]) or $ - (wave ge window1[0] and wave le window1[1]) or $ - (wave ge window2[0] and wave le window2[1]) or $ - (wave ge window3_1[0] and wave le window3_1[1]) or $ - (wave ge window3_2[0] and wave le window3_2[1]) or $ - (wave ge window4[0] and wave le window4[1]) or $ - (wave ge window5[0] and wave le window5[1]) or $ - (wave ge window6[0] and wave le window6[1]) or $ - (wave ge window7[0] and wave le window7[1]) or $ - (wave ge window8[0] and wave le window8[1]) or $ - (wave ge window9[0] and wave le window9[1]) or $ - (wave ge window10[0] and wave le window10[1]) or $ - (wave ge window11[0] and wave le window11[1]) ) $ - AND fitmask ne 0. ) - ind_conti_only = where( ( (wave ge window0[0] and wave le window0[1]) or $ - (wave ge window1[0] and wave le window1[1]) or $ - (wave ge window2[0] and wave le window2[1]) or $ - (wave ge window5[0] and wave le window5[1]) or $ - (wave ge window8[0] and wave le window8[1]) or $ - (wave ge window11[0] and wave le window11[1])) $ - AND fitmask ne 0.) - ind_Fe_only = where( ( (wave ge window3_1[0] and wave le window3_1[1]) or $ - (wave ge window3_2[0] and wave le window3_2[1]) or $ - (wave ge window4[0] and wave le window4[1]) or $ - (wave ge window6[0] and wave le window6[1]) or $ - (wave ge window7[0] and wave le window7[1]) or $ - (wave ge window9[0] and wave le window9[1]) or $ - (wave ge window10[0] and wave le window10[1]) ) $ - AND fitmask ne 0. ) - - if n_elements(ind) lt 10 then begin - splog, 'Fitting pixel < 10. return. ' - return - endif - - ; ## now fit the psedu-continuum - ; set limiting conditions on paramters - parinfo = replicate({value:0.D, fixed:0, limited:[0,0],limits:[0.D,0],tied:''}, 11+poly_ord+1) - parinfo.value = [1.0D, 3000.0D, 0.0, 1.0, 3000.0D, 0.0, 1.0D, -2.0D, 1.0, 15000.D, 0.5 $ - , replicate(0.,poly_ord+1) ] - ; limit the PL component - parinfo[6].limited = [1,0] & parinfo[6].limits = [0., 1d10] - parinfo[7].LIMITED = [1, 1] & parinfo[7].LIMITS = [-5.0,3.0] - ; limit the Fe_MgII component - parinfo[0].limited = [1, 0] & parinfo[0].limits = [0., 1d10] - parinfo[1].LIMITED = [1, 1] & parinfo[1].LIMITS = [900, 1d4] - parinfo[2].LIMITED = [1, 1] & parinfo[2].LIMITS = [-0.01, 0.01] - if fit_flag[1] eq 1 then begin ; do not fit the UV iron template - parinfo[0].limited = [0,0] & parinfo[0].value = 0. - parinfo[0:2].fixed = 1L - endif - if fit_flag[2] eq 1 then begin - parinfo[1].fixed = 1L ; fix the FWHM of the MgII iron - endif - ; limit the Fe_balmer component - parinfo[3].limited = [1, 0] & parinfo[3].limits = [0., 1d10] - parinfo[4].LIMITED = [1, 1] & parinfo[4].LIMITS = [900, 1d4] - if fit_flag[3] eq 1 then begin - parinfo[4].fixed = 1L ; fix the FWHM of the Balmer iron - endif - ; limit the Balmer continuum - if fit_flag[0] eq 0 then begin ; if fit_flag not set then do not fit for Balmer continuum - parinfo[8:10].fixed = 1L & parinfo[8].value = 0. - endif else begin - parinfo[8].limited = [1, 0] & parinfo[8].limits = [0., 1d10] - parinfo[9].LIMITED = [1, 1] & parinfo[9].LIMITS = [10000., 50000.] - parinfo[10].LIMITED = [1, 1] & parinfo[10].LIMITS = [0.1, 2.] - endelse - ; limit the polynomial continuum component - if fit_flag[4] eq 0 then begin - parinfo[11:*].value = 0. & parinfo[11:*].fixed = 1L - endif - ; enforce the optical FeII to be zero if not covered - ind_cover = where( ( (wave ge window6[0] and wave le window6[1]) or $ - (wave ge window7[0] and wave le window7[1]) ) $ - and fitmask ne 0) - if n_elements(ind_cover) lt 100 then begin - parinfo[3].value = 0. & parinfo[3].fixed = 1L - endif - - - ; First try to fit the continuum-alone - if n_elements(ind_conti_only) ge 50 and not keyword_set(sim_conti_fe_fit) then begin - - parinfo1 = parinfo[6:*] - conti_only_fit = mpfitfun('f_conti_only', wave[ind_conti_only], flux[ind_conti_only] $ - , err[ind_conti_only] $ - , parinfo = parinfo1, perror = perror, yfit = yfit1, /quiet $ - , nfev = nfev, niter = niter, status = status, bestnorm = chi2) - conti_only_err = perror - ttt = where(parinfo1.fixed eq 1 or strlen(parinfo1.tied) gt 0, nfix) - dof = n_elements(ind_conti_only) - (n_elements(parinfo1) - nfix) - redchi2_conti_only = chi2/dof - - ; If this is successful, then proceed to fit the FeII - if redchi2_conti_only gt 0 and redchi2_conti_only lt 100 then begin - - parinfo1 = parinfo[0:5] - flux1 = flux[ind_Fe_only] - f_conti_only(wave[ind_Fe_only], conti_only_fit) - fe_only_fit = mpfitfun('f_fe_only', wave[ind_Fe_only], flux1 $ - , err[ind_Fe_only] $ - , parinfo = parinfo1, perror = perror, yfit = yfit1, /quiet $ - , nfev = nfev, niter = niter, status = status, bestnorm = chi2) - Fe_only_err = perror - ttt = where(parinfo1.fixed eq 1 or strlen(parinfo1.tied) gt 0, nfix) - dof = n_elements(ind_Fe_only) - (n_elements(parinfo1) - nfix) - redchi2_Fe_only = chi2/dof - - if redchi2_Fe_only gt 0 and redchi2_Fe_only le 100 then begin - conti_fit = [conti_only_fit, Fe_only_fit] - conti_err = [conti_only_err, Fe_only_err] - endif - - endif - endif - - if n_elements(ind_conti_only) le 50 or keyword_set(sim_conti_fe_fit) then begin - - conti_fit = mpfitfun('f_conti_all', wave[ind], flux[ind], err[ind] $ - , parinfo = parinfo, perror = perror, yfit = yfit1, /quiet $ - , nfev = nfev, niter = niter, status = status, bestnorm = chi2) - conti_err = perror - ttt = where(parinfo.fixed eq 1 or strlen(parinfo.tied) gt 0, nfix) - dof = n_elements(ind) - (n_elements(parinfo) - nfix) - redchi2 = chi2/dof - if not keyword_set(silent) then splog, $ - 'CONTI-FITTING: MPFIT nfev=', nfev, ' niter=', niter, $ - ' status=', status, ' redchi2=', redchi2 - - ; Re-fit the continuum without the Balmer continuum, - ; if the fit is better, replace the original fit - ; only do this if fit_Balmer_continuum is set to 1 - ;if fit_flag[0] eq 1 then begin - ; parinfo[8].fixed = 1L & parinfo[8].value = 0. - ; parinfo[9].value = 15000.D & parinfo[10].value=0.5 - ; parinfo[9].fixed = 1L & parinfo[10].fixed = 1L - ; parinfo[8].limited = [0,0] & parinfo[8].limits = [0.D,0] - ; parinfo[9].limited = [0,0] & parinfo[9].limits = [0.d,0] - ; parinfo[10].limited = [0,0] & parinfo[10].limits = [0.D,0] - ; - ; conti_fit2 = mpfitfun('f_conti_all', wave[ind], flux[ind], err[ind] $ - ; , parinfo = parinfo, perror = perror2, yfit = yfit2, /quiet $ - ; , nfev = nfev, niter = niter, status = status2, bestnorm = chi2) - ; dof = n_elements(ind) - (n_elements(parinfo) - 3L - 3L*(fit_flag[1]) - fit_flag[2] - fit_flag[3] - 1L - (1L-fit_flag[4]) - (1-fit_flag[4])*5L ) - ; redchi2_2 = chi2/dof - ; if not keyword_set(silent) then splog, $ - ; 'CONTI-FITTING: MPFIT nfev=', nfev, ' niter=', niter, $ - ; ' status=', status2, ' redchi2=', redchi2_2 - ; if status2 gt 0 and redchi2_2 gt 0 and redchi2_2 lt redchi2 then begin - ; conti_fit = conti_fit2 & conti_err = perror2 & status = status2 - ; redchi2 = redchi2_2 & yfit1 = yfit2 - ; if not keyword_set(silent) then splog, $ - ; 'CONTI-FITTING: Replace fit with NO BALMER CONTINUUM' - ; endif - ;endif - - ; Perform one iteration to remove 3sigma pixel below the first continuum fit - ; this is to avoid situations where one of the continuum windows falls within a BAL trough - if keyword_Set(conti_auto_abs_rej) and redchi2 lt 100. then begin - fitmask2 = replicate(1L, n_elements(wave)) - ind_abs = where(flux[ind] lt yfit1 - 3.*err[ind]) - if ind_abs[0] ne -1 then fitmask2[ind[ind_abs]] = 0L - fitmask2 = fitmask*fitmask2 - ind2 = where( ( (wave ge window0[0] and wave le window0[1]) or $ - (wave ge window1[0] and wave le window1[1]) or $ - (wave ge window2[0] and wave le window2[1]) or $ - (wave ge window3_1[0] and wave le window3_1[1]) or $ - (wave ge window3_2[0] and wave le window3_2[1]) or $ - (wave ge window4[0] and wave le window4[1]) or $ - (wave ge window5[0] and wave le window5[1]) or $ - (wave ge window6[0] and wave le window6[1]) or $ - (wave ge window7[0] and wave le window7[1]) or $ - (wave ge window8[0] and wave le window8[1]) or $ - (wave ge window9[0] and wave le window9[1]) or $ - (wave ge window10[0] and wave le window10[1]) or $ - (wave ge window11[0] and wave le window11[1]) ) $ - AND fitmask2 ne 0. ) - if (n_elements(ind2) gt 10L) and (n_elements(ind2) lt n_elements(ind)) then begin - conti_fit2 = mpfitfun('f_conti_all', wave[ind2], flux[ind2], err[ind2] $ - , parinfo = parinfo, perror = perror2, yfit = yfit2, /quiet $ - , nfev = nfev, niter = niter, status = status2, bestnorm = chi2) - ttt = where(parinfo.fixed eq 1 or strlen(parinfo.tied) gt 0, nfix) - dof = n_elements(ind2) - (n_elements(parinfo) - nfix) - redchi2_2 = chi2/dof - if status2 gt 0 and redchi2_2 gt 0 and redchi2_2 lt redchi2 then begin - if not keyword_set(silent) then splog, $ - 'CONTI-FITTING: MPFIT nfev=', nfev, ' niter=', niter, $ - ' status=', status2, ' redchi2=', redchi2_2 - conti_fit = conti_fit2 & conti_err = perror2 & status = status2 - redchi2 = redchi2_2 & yfit1 = yfit2 - ind = ind2 & fitmask = fitmask2 - if not keyword_set(silent) then splog, $ - 'CONTI-FITTING: Replace fit with absorption rejection' - endif - endif - endif - - endif - - ; Output the fitting results - output = create_struct('wave', wave, 'flux', flux, 'err', err, 'fitmask', fitmask, $ - 'ind_conti_fit', ind, 'conti_fit', conti_fit, 'conti_fit_err', conti_err, $ - 'conti_redchi2', redchi2, 'conti_status', status) - output = struct_addtags(specdata, output) - - f_pl_model = conti_fit[6]*(wave/3000.0)^conti_fit[7] - f_fe_mgii_model = fe_flux_mgii(wave, conti_fit[0:2]) - f_fe_balmer_model = fe_flux_balmer(wave, conti_fit[3:5]) - f_bc_model = balmer_conti(wave, conti_fit[8:10]) - f_poly_model = f_poly_conti(wave, conti_fit[11:*]) - f_conti_model = f_pl_model + f_fe_mgii_model + f_fe_balmer_model + f_bc_model + f_poly_model - - if keyword_set(local_CIV_CIII_fit) then begin ; if a local fit for CIV+CIII] is required [1000, 2165] - ind = where( ( (wave ge window0[0] and wave le window0[1]) or $ - (wave ge window1[0] and wave le window1[1]) or $ - (wave ge window2[0] and wave le window2[1]) or $ - (wave ge window3_1[0] and wave le window3_1[1]) or $ - (wave ge window3_2[0] and wave le window3_2[1]) or $ - (wave ge window4[0] and wave le window4[1]) or $ - (wave ge window5[0] and wave le window5[1]) or $ - (wave ge window6[0] and wave le window6[1]) or $ - (wave ge window7[0] and wave le window7[1]) or $ - (wave ge window8[0] and wave le window8[1]) or $ - (wave ge window9[0] and wave le window9[1])) $ - AND fitmask ne 0. AND wave le 2165.) - ; first turn off Balmer continuum and UV iron template fit - parinfo[8].fixed = 1L & parinfo[8].value = 0. - parinfo[9].fixed = 1L & parinfo[10].fixed = 1L - parinfo[2].limited = [0,0] & parinfo[2].value = 0. & parinfo[2].fixed = 1L - parinfo[3].fixed = 1L & parinfo[4].fixed = 1L - conti_fit3 = mpfitfun('f_conti_all', wave[ind], flux[ind], err[ind] $ - , parinfo = parinfo, perror = perror3, yfit = yfit3, /quiet $ - , nfev = nfev, niter = niter, status = status3, bestnorm = chi2) - if not keyword_set(silent) then splog, 'CONTI-FITTING: MPFIT nfev=', nfev, $ - ' niter=', niter, ' status=', status3 - ; update the psedu-continuum model, connected at 2165A - ind_local = where(wave le 2165.) - f_pl_model[ind_local] = conti_fit3[0]*(wave[ind_local]/3000.0)^conti_fit3[1] - f_fe_mgii_model[ind_local] = 0. - f_fe_balmer_model[ind_local] = 0. - f_bc_model[ind_local] = 0. - f_conti_model = f_pl_model + f_fe_mgii_model + f_fe_balmer_model + f_bc_model + f_poly_model - - temp = create_struct('conti_fit3', conti_fit3, 'conti_fit3_err', perror3) - output = struct_addtags(output, temp) - endif - - ; Start to fit the emission lines: CIV, CIII], MgII, Hbeta, Halpha - ; first subtract the psedu-continuum to get emission line fluxs - - line_flux = flux - f_conti_model - if keyword_set(local_CIV_CIII_fit) then $ - line_flux[ind_local] = flux[ind_local] - f_conti_all(wave[ind_local], conti_fit3) - output = struct_addtags(output, {line_flux:line_flux}) - - - ; Setup line fitting windows - win_civ = [1500., 1600.] - if keyword_set(HeII_fit) then win_civ = [1500., 1700.] - ind = where( ((wave ge 6400. and wave le 6800.) or $ ; Halpha - (wave ge 4700. and wave le 5100.) or $ ; Hbeta - (wave ge 2700. and wave le 2900.) or $ ; MgII - (wave ge 1820. and wave le 1970.) or $ ; CIII] complex - (wave ge win_civ[0] and wave le win_civ[1])) $ ; CIV - AND fitmask ne 0. ) - - if n_elements(ind) lt 10L then begin - splog, 'Line fitting pixels<10. Return' - return - endif - - ; setup fitting parameters for emission line fitting - if not keyword_set(ngauss_broad_Ha) then ngauss_broad_Ha = 3L - if not keyword_set(ngauss_broad_Hb) then ngauss_broad_Hb = 3L - if not keyword_set(ngauss_broad_MgII) then ngauss_broad_MgII = 3L - if not keyword_set(ngauss_broad_CIII) then ngauss_broad_CIII = 2L - if not keyword_set(ngauss_broad_CIV) then ngauss_broad_CIV = 3L - ngauss = ngauss_broad_Ha + 5L + ngauss_broad_Hb + 3L $ - + ngauss_broad_MgII + 1L + ngauss_broad_CIII + 3L $ - + ngauss_broad_CIV + 1L - - ; adding two more Gaussians for HeII 1640 and OIII] 1663 - if keyword_set(HeII_fit) then ngauss = ngauss + 2L - - parinfo = replicate({value:0.D, fixed:0, limited:[0,0],limits:[0.D,0],tied:''}, ngauss*3L) - - ; default maxmium dispersion for the broad Gaussians - if not keyword_set(max_sigma) then max_sigma = 0.05D - - ; only fit the line if the keyword FIT_LINE is set - if keyword_set(fit_line) then begin - - ; For Halpha; 2 gaussians for [SII], 2 gaussians for [NII], - ; 1 gaussian for narrow Ha and ngauss_broad_Ha gaussians for broad Ha - for i_gau=0L, ngauss_broad_Ha - 1L do begin - parinfo[0+i_gau*3L:2+i_gau*3L].value = [1.0D/ngauss_broad_Ha, alog(6564.61D), 0.005D] - parinfo[0+i_gau*3L].limited = [1L, 0L] - parinfo[0+i_gau*3L].limits = [0.0, 0.0] - parinfo[1+i_gau*3L].limited = [1L,1L] - parinfo[1+i_gau*3L].limits = [alog(6564.61) - 0.015D, alog(6564.61) + 0.015D] - parinfo[2+i_gau*3L].limited = [1L, 1L] - ; restrict each component to have 1400 160km/s - parinfo[5+inext].limits = [2.3d-4, 0.0017D] - ; NII6549 - parinfo[6+inext:8+inext].value = [0.01D, alog(6549.85D), 0.001D] - parinfo[6+inext].limited = [1L, 0L] - parinfo[6+inext].limits = [0., 1d10] - pstr1 = '(P(' + string(4+inext, format='(i0)') + ')' - parinfo[7+inext].tied = pstr1 + ' - alog(6564.61D)) + alog(6549.85D)' - pstr2 = 'P(' + string(5+inext, format='(i0)') + ')' - parinfo[8+inext].tied = pstr2 - ; NII6585 - parinfo[9+inext:11+inext].value = [0.01D, alog(6585.28D), 0.001D] - parinfo[9+inext].limited = [1L, 0L] - parinfo[9+inext].limits = [0., 1d10] - parinfo[10+inext].tied = pstr1 + ' - alog(6564.61D)) + alog(6585.28D)' - parinfo[11+inext].tied = pstr2 - pstr3 = 'P(' + string(6+inext, format='(i0)') + ')' + '*6549.85/6585.28*3' - parinfo[9+inext].tied = pstr3 - ; SII 6718 - parinfo[12+inext:14+inext].value = [0.001D, alog(6718.29D), 0.001D] - parinfo[12+inext].limited = [1L, 0L] - parinfo[12+inext].limits = [0., 1d10] - parinfo[13+inext].tied = pstr1 + ' - alog(6564.61D)) + alog(6718.29D)' - parinfo[14+inext].tied = pstr2 - ; SII 6732 - parinfo[15+inext:17+inext].value = [0.001D, alog(6732.67D), 0.001D] - parinfo[15+inext].limited = [1L, 0L] - parinfo[15+inext].limits = [0., 1d10] - parinfo[16+inext].tied = pstr1 + ' - alog(6564.61D)) + alog(6732.67D)' - parinfo[17+inext].tied = pstr2 - ; Check if Halpha is covered. If not, then fix all Halpha parameters - ind_cover = where(wave[ind] ge 6400. and wave[ind] le 6800., n_cover) - if n_cover lt 100 then begin - istart = 0 & iend = 17+inext - ind1 = istart + 3*indgen((iend-istart+1)/3L) - parinfo[ind1].value = 0. & parinfo[istart:iend].fixed = 1 - endif - - ;-------------------------End of Halpha setup ------ - ; for Hbeta - inext = 17+inext + 1L ; advanced to Hb - istart = inext - for i_gau=0L, ngauss_broad_Hb - 1L do begin - parinfo[inext+i_gau*3L:inext+2+i_gau*3L].value= $ - ; [1.0D/ngauss_broad_Hb, alog(4862.68D), 0.005D] - [0.1D/ngauss_broad_Hb, alog(4862.68D)+ 6.67d-4*(i_gau + 1 - ngauss_broad_Hb),0.005D] - parinfo[inext+i_gau*3L].limited = [1L, 0L] - parinfo[inext+i_gau*3L].limits = [0.0, 0.0] - parinfo[inext+1+i_gau*3L].limited = [1L,1L] - parinfo[inext+1+i_gau*3L].limits = [alog(4862.68D) - 0.015D, alog(4862.68D) + 0.015D] - parinfo[inext+2+i_gau*3L].limited = [1L, 1L] - ; restrict each component to have 1400 10 for the continuum + Fe fits. Stop there.' -endelse - -if keyword_set(fits) then $ -mwrfits, para, fitsfile, /create, /silent - -endif - -; restore the original wavelengths -lam = lam*(1.0 + z) - -return - -end diff --git a/pro/rm/rm_intflux.pro b/pro/rm/rm_intflux.pro deleted file mode 100644 index ba6e7e254..000000000 --- a/pro/rm/rm_intflux.pro +++ /dev/null @@ -1,98 +0,0 @@ -;+ -; NAME: -; rm_intflux -; -; PURPOSE: -; measure integrated line flux from the spectrum; fit a straight line to the pixels just -; blueward and redward of the line to remove the continuum. The line flux error is estimated -; using MC trials. -; -; CALLING SEQUENCE: -; result=rm_intflux(wave,flux,ivar,int_range=[4400., 4700.],/qa,err=) -; -; INPUTS: -; wave - observed wavelength -; flux - flux density -; ivar - inverse variance -; err - flux error [optional] -; int_range - range of the line -; dlam_conti - span of continuum wave blue- and redward of the line to estimate the continuum -; -; OUTPUTS: -; integrated lineflux and lineflux_err from MC trials. -; - -function rm_intflux,wave1,flux1,ivar1,err1=err1,ntrial=ntrial,int_range=int_range,$ - qa=qa,mask=mask,dlam_conti=dlam_conti - - ; No of MC trials to compute line flux err - if ~keyword_set(ntrial) then ntrial=50L - - ; range of integrated line flux - if ~keyword_set(int_range) then int_range=[4900.,5100.] - - wave=wave1 & flux=flux1 - if keyword_set(err1) then begin - err=err1 - ivar=err*0 - ind=where(err gt 1d-5) - ivar[ind]=1./err[ind]^2 - endif else begin - ivar=ivar1 - err=ivar*0 - ind=where(ivar gt 1d-5) - err[ind]=1./sqrt(ivar[ind]) - endelse - - ; interpolate over bad pixels - if ~keyword_set(mask) then $ - maskind = where(ivar le 0, complement=goodind) else begin - maskind = mask ne 1 - goodind = mask ne 0 - endelse - if maskind[0] ne -1 then begin - flux[maskind] = interpol(flux[goodind],wave[goodind],wave[maskind]) - endif - - ; construct a local linear continuum just blueward and redward dlam_conti A of the line - if ~keyword_set(dlam_conti) then dlam_conti = 25. - ind1 = where(wave ge int_range[0] - dlam_conti and $ - wave le int_range[1] + dlam_conti, npix) - wave=wave[ind1] & flux=flux[ind1] & ivar=ivar[ind1] & err=err[ind1] - ind_line=where(wave ge int_range[0] and wave le int_range[1], complement=ind_conti) - ; fit a straight line to the continuum pixels - result=linfit(wave[ind_conti],flux[ind_conti], measure_errors=err[ind_conti]) - conti_spec=flux - conti_spec[ind_line]=result[0]+result[1]*wave[ind_line] - line_spec = flux - conti_spec - lineflux = int_tabulated(wave[ind_line],line_spec[ind_line],/double) - - ; estimate lineflux_err using MC trials - conti_spec_mc = fltarr(npix, ntrial) - line_spec_mc = fltarr(npix, ntrial) - lineflux_mc = dblarr(ntrial) - for i=0L, ntrial-1 do begin - flux_new = flux + randomn(seed, npix)*err - result=linfit(wave[ind_conti],flux_new[ind_conti], measure_errors=err[ind_conti]) - conti_spec_mc[*,i]=flux_new - conti_spec_mc[ind_line,i]=result[0]+result[1]*wave[ind_line] - line_spec_mc[*,i]=flux_new - conti_spec_mc[*,i] - lineflux_mc[i]=int_tabulated(wave[ind_line],line_spec_mc[ind_line,i],/double) - endfor - lineflux_err=(quantile_1d(0.84,lineflux_mc) - quantile_1d(0.16,lineflux_mc) ) $ - * 0.5 - - ; make a QA plot - if keyword_set(qa) then begin - yrange=[min(flux), max(flux) ] - xrange=[int_range[0] - dlam_conti,int_range[1] + dlam_conti] - plot, wave1, flux1, yrange=yrange,xrange=xrange - oplot, wave, flux, color=cgcolor('red') - oplot, wave, conti_spec, color=cgcolor('blue') - oplot, [int_range[0], int_range[0]], [-1,1],thick=3,line=2,color=cgcolor('green') - oplot, [int_range[1], int_range[1]], [-1,1],thick=3,line=2,color=cgcolor('green') - endif - - return, [lineflux, lineflux_err] - -end diff --git a/pro/rm/rm_ir_prep.pro b/pro/rm/rm_ir_prep.pro deleted file mode 100644 index 69c1910f5..000000000 --- a/pro/rm/rm_ir_prep.pro +++ /dev/null @@ -1,225 +0,0 @@ -; plot the PS1 light curve -pro ir_plot_ps1 - -file='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/spitzer/spitzer_c11-12_raw_lc.fits' - -result=mrdfits(file,1) -nnn=n_elements(result) - -figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/spitzer/ps1_lc.ps' -begplot,name=figfile,/color,/landscape - -for i=0L, nnn-1 do begin - - mjd=result[i].lc_mjd_g & lc=result[i].lc_mag_g & lc_err=result[i].lc_err_g - ind=where(mjd gt 0) - mjd=mjd[ind] & lc=lc[ind] & lc_err=lc_err[ind] - minmjd=min(mjd, max=maxmjd) - - ;yrange=[min(lc), max(lc)] - g_med=median(lc) - yrange=[g_med+1.5, g_med-1.5] - - pos=[0.08, 0.12, 0.9, 0.95] - xrange=[55200, 56600] - xtickname=['55200','55400','55600','55800','56000', $ -'56200', '56400', '56600'] - ra=result[i].ra_2 & dec=result[i].dec_2 - radec2string, ra,dec, outstring,rahr=rahr, ramin=ramin, rasec=rasec, $ - decdeg=decdeg, decmin=decmin, decsec=decsec - title='SDSSJ '+ rahr+ramin+rasec+decdeg+decmin+decsec+', '+'z='+string(result[i].zfinal,format='(f0.4)') - ploterror, mjd, lc, lc_err,psym=symcat(9),xtitle='MJD',ytitle='PS1 g mag', $ - xrange=xrange, yrange=yrange, title=title, pos=pos, /xsty, xtickname=xtickname - ; overplot a bunch of information - xyouts, 0.5, 0.89, /norm, textoidl('logL_{bol}=')+string(result[i].logLbol_2,format='(f0.3)') - xyouts, 0.7, 0.89, /norm, textoidl('\tau_{IR,obs}=')+string(result[i].TAU_IR_DAY_OBS,format='(i0)')+' days' - xyouts, 0.15, 0.89, 'W1='+string(result[i].W1MPRO_2,format='(f0.2)')+' ['+string(result[i].W1_MJY, format='(f0.3)')+' mJy]', /norm - xyouts, 0.5, 0.85, /norm, 'RMS g='+string((result[i].ps1_RMS_mag)[0],format='(f0.2)') - - mjd2datelist, xrange[0], datelist=date0 - mjd2datelist, xrange[1], datelist=date1 - xyouts, pos[0], pos[3]+0.01, align=0.5, date0,/norm - xyouts, pos[2], pos[3]+0.01, align=0.5, date1,/norm - -endfor -endplot - -end - -; prepare for IR monitoring programs (ground K, and Spitzer 3.6,4.5um) -pro make_raw_sample_ir - -file=getenv('IDLRM_DIR')+'/etc/target_ir_info.fits' -result=mrdfits(file,1) -m_thre = 0. -ps1_rms_g = result.ps1_rms_mag[0,*] -ind = where(result.w1mpro gt 0 and result.w1sigmpro gt 0 and ps1_rms_g gt m_thre $ - and result.w1_mjy gt 0.035 and result.tau_ir_day_obs lt 365.25*4., nn) - -outfile=getenv('IDLRM_DIR')+'/etc/spitzer_c11-12_raw.fits' -mwrfits, result[ind], outfile, /create - -print, nn - -end - -pro rm_ir_prep, overwrite=overwrite - - ; ugriz: 3551, 4686, 6166, 7480, 8932 - ; K: 2.2um; IRAC-Warm: 3.6, 4.5um - - outfile=getenv('IDLRM_DIR')+'/etc/target_ir_info.fits' - if file_test(outfile) eq 0 or keyword_set(overwrite) then begin - - ; first compile a fits file including IR properties (mag, flux, lag) - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - target=target[0:848] ; keep only RM targets - nobj=n_elements(target) - - ; in units of A/s - c = 2.99792458d18 - d10pc = 3.08d19 - - ; read in SED file from Richards++(2006) - ; units are log[Hz] and log[erg/s] - SED_file = '/home/yshen/Research/IDL/lib/Projects/quasar/quasar_bolometric_corr.txt' - readcol, sed_file, format = 'f,f', log_nu, log_nuLnu, skipline = 29L, /silent - - result={K_ab:0.D, K_mJy:0.D, IRAC36_ab:0.D, IRAC36_mJy:0.D, $ - IRAC45_ab:0.D, IRAC45_mJy:0.D,Mi_z2:0.D,logLbol:0.D, $ - tau_IR_pc:0.D, tau_IR_day_obs:0.D, $ - w1mpro:0.D, w1sigmpro:-1.D, w2mpro:0.D, w2sigmpro:-1.d, $ - w3mpro:0.D, w3sigmpro:-1.D, w4mpro:0.D, w4sigmpro:-1.D, $ - w1_ab:0.D, w1_mJy:0.D, w2_ab:0.D, w2_mJy:0.D, w3_ab:0.D, w3_mJy:0.D, $ - w4_ab:0.D, w4_mJy:0.D, $ - ps1_rms_mag:replicate(-1.D,5)} - result=replicate(result, nobj) - result=struct_addtags(target, result) - ugriz=result.psfmag - - ; now compute K and IRAC-Warm using the average SED - for i=0L, nobj-1 do begin - - ; i, K, IRAC3.6, 4.5 - nu_arr=c/( [7480., 2.2d4, 3.6d4, 4.5d4]/(1. + result[i].zfinal) ) - log_nu_arr = alog10(nu_arr) - log_Lnu_arr = interpol(log_nuLnu, log_nu, log_nu_arr) - log_nu_arr - - ; AB mag, assuming the sinh psfmag is approximately ab - lups=ugriz[*,i] - maggies=k_lups2maggies(lups) - k_abfix, maggies, replicate(0.02,5) - maggie2mag=22.5-2.5*alog10(maggies*1d9) - imag=maggie2mag[3] ; this is now ab - - m_ab = -2.5*(log_Lnu_arr - log_Lnu_arr[0]) + imag - - ; mJy - mJy = 10.^( m_ab*(-0.4) )*3631d3 - - result[i].K_ab=m_ab[1] & result[i].K_mJy=mJy[1] - result[i].IRAC36_ab=m_ab[2] & result[i].IRAC36_mJy=mJy[2] - result[i].IRAC45_ab=m_ab[3] & result[i].IRAC45_mJy=mJy[3] - - Mi_z2=get_abs_mag(imag, result[i].zfinal) - logL2500 = -0.4*(mi_z2 + 48.6 + 2.5*alog10(3.)) + alog10(4d*!PI*d10pc^2) + alog10(3d18/2500d) - logL5100 = logL2500 - 0.5*alog10(5100./2500.) - Lbol = 10.D^logL5100 * 9.26 - result[i].logLbol = alog10(Lbol) - result[i].Mi_z2 = Mi_z2 - - ; inner torus dust radius from Nenkova et al. (2008, paperII, eqn 1) - Tsub=1500. ; K - Rd_pc = 0.4*(Lbol/1d45)^0.5*(1500./Tsub)^2.6 - result[i].tau_IR_pc = Rd_pc - result[i].tau_IR_day_obs = Rd_pc*3.08568d18/2.99792458d10/(3600.D*24.)*(1. + result[i].zfinal) - - endfor - - ; now add PS1 variability properties - file = '/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/PS1/targets_PS1MD07b.fits' - ps1=mrdfits(file,1) - spherematch, result.ra, result.dec, ps1.ra_dr10, ps1.dec_dr10, 0.2/3600.D, match0, match1, dist1 - ; NB, ps1 filters are grizy - result[match0].ps1_rms_mag=ps1[match1].stdev - result[match0].w1mpro=ps1[match1].w1mpro & result[match0].w1sigmpro=ps1[match1].w1sigmpro - result[match0].w2mpro=ps1[match1].w2mpro & result[match0].w2sigmpro=ps1[match1].w2sigmpro - result[match0].w3mpro=ps1[match1].w3mpro & result[match0].w3sigmpro=ps1[match1].w3sigmpro - result[match0].w4mpro=ps1[match1].w4mpro & result[match0].w4sigmpro=ps1[match1].w4sigmpro - - result[match0].w1_ab = result[match0].w1mpro + 2.683 - result[match0].w1_mJy = 10.^( result[match0].w1_ab*(-0.4) )*3631d3 - result[match0].w2_ab = result[match0].w2mpro + 3.319 - result[match0].w2_mJy = 10.^( result[match0].w2_ab*(-0.4) )*3631d3 - result[match0].w3_ab = result[match0].w3mpro + 5.242 - result[match0].w3_mJy = 10.^( result[match0].w3_ab*(-0.4) )*3631d3 - result[match0].w4_ab = result[match0].w4mpro + 6.604 - result[match0].w4_mJy = 10.^( result[match0].w4_ab*(-0.4) )*3631d3 - - ; output the file - mwrfits, result, outfile, /create - - endif else result = mrdfits(outfile, 1) - - ; now make diagnostic plots - - figfile='/home/yshen/Research/Projects/reverberation_mapping/level2/proposal/spitzer/flux_tau.ps' - begplot, name=figfile,/color, encap=0 - !p.multi = [0,1,2] - ; first plot for 3.6um - ind = where(result.w1mpro gt 0 and result.w1sigmpro gt 0, n0) - ps1_rms_g = result.ps1_rms_mag[0,*] - m_thre=0.25 ; > this m_thre will be flagged - ind1 = where(result.w1mpro gt 0 and result.w1sigmpro gt 0 and ps1_rms_g gt m_thre, n1) - plot, result[ind].zfinal, result[ind].w1_Mjy, yrange=[0.01, 3],/ysty, /ylog, $ - xtitle='Redshift', ytitle = textoidl('W1(3.4 \mum) Flux Density [mJy]'), psym=symcat(7) - oplot, result[ind1].zfinal, result[ind1].w1_mjy, psym=symcat(9,thick=5),color=cgcolor('red') - xyouts, 0.6, 0.91,'W1 detection: '+ string(n0, format='(i0)'),/norm - xyouts, 0.6, 0.88, textoidl('RMS g_{PS1}>')+string(m_thre,format='(f0.2)')+': '+ string(n1, format='(i0)'),/norm,color=cgcolor('red') - - ;plot, result[ind].zfinal, result[ind].TAU_IR_DAY_OBS, yrange=[100., 5d4],/ysty, /ylog, $ - ; xtitle='Redshift', ytitle = textoidl('\tau_{hot dust} [observed days]'), psym=symcat(7) - ;oplot, result[ind1].zfinal, result[ind1].TAU_IR_DAY_OBS, psym=symcat(9,thick=5),color=cgcolor('red') - ;oplot, [0,5], [365.25,365.25]*2, line=2,thick=5 - ;xyouts, 3,480, '2yr Spitzer Cy11-12' - ;oplot, [0,5], [365.25,365.25]*4, line=2, thick=5,color=cgcolor('cyan') - ;xyouts, 3, 1000, '4yr early opt LC', color=cgcolor('cyan') - plot, result[ind].w1_mjy, result[ind].TAU_IR_DAY_OBS, xrange=[0.01,3],/xlog, yrange=[100., 5d4], $ - /ysty, /ylog, /xsty, $ - xtitle=textoidl('W1(3.4 \mum) Flux Density [mJy]'), ytitle = textoidl('\tau_{hot dust} [observed days]'), psym=symcat(7) - oplot, result[ind1].w1_mjy, result[ind1].TAU_IR_DAY_OBS, psym=symcat(9,thick=5),color=cgcolor('red') - oplot, [0.01,3], [365.25,365.25]*2, line=2,thick=5 - ;xyouts, 0.1,480, '2yr Spitzer Cy11-12' - oplot, [0.01,3], [365.25,365.25]*4, line=2, thick=5,color=cgcolor('cyan') - ;xyouts, 0.1, 1000, '4yr early opt LC', color=cgcolor('cyan') - item=['2yr Spitzer Cy11-12', '4yr early opt LC'] - colors=cgcolor(['black','cyan']) - legend, item,box=0,pos=[0.5, 0.15],/norm, color=cgcolor(['black','cyan']),line=[2,2],textcolor=colors - - ; then plot for 4.5um - ind = where(result.w2mpro gt 0 and result.w2sigmpro gt 0, n0) - ps1_rms_g = result.ps1_rms_mag[0,*] - m_thre=0.25 ; > this m_thre will be flagged - ind1 = where(result.w2mpro gt 0 and result.w2sigmpro gt 0 and ps1_rms_g gt m_thre, n1) - plot, result[ind].zfinal, result[ind].w2_Mjy, yrange=[0.01, 3],/ysty, /ylog, $ - xtitle='Redshift', ytitle = textoidl('W2(4.6 \mum) Flux Density [mJy]'), psym=symcat(7) - oplot, result[ind1].zfinal, result[ind1].w2_mjy, psym=symcat(9,thick=5),color=cgcolor('red') - xyouts, 0.6, 0.91,'W2 detection: '+ string(n0, format='(i0)'),/norm - xyouts, 0.6, 0.88, textoidl('RMS g_{PS1}>')+string(m_thre,format='(f0.2)')+': '+ string(n1, format='(i0)'),/norm,color=cgcolor('red') - - plot, result[ind].zfinal, result[ind].TAU_IR_DAY_OBS, yrange=[100., 5d4],/ysty, /ylog, $ - xtitle='Redshift', ytitle = textoidl('\tau_{hot dust} [observed days]'), psym=symcat(7) - oplot, result[ind1].zfinal, result[ind1].TAU_IR_DAY_OBS, psym=symcat(9,thick=5),color=cgcolor('red') - oplot, [0,5], [365.25,365.25]*2, line=2,thick=5 - xyouts, 3.,480, '2yr Spitzer Cy11-12' - oplot, [0,5], [365.25,365.25]*4, line=2, thick=5,color=cgcolor('cyan') - xyouts, 3., 1000, '4yr early opt LC', color=cgcolor('cyan') - - - !p.multi = 0 - endplot - - - -end diff --git a/pro/rm/rm_lag_diag.pro b/pro/rm/rm_lag_diag.pro deleted file mode 100644 index ead1a5d24..000000000 --- a/pro/rm/rm_lag_diag.pro +++ /dev/null @@ -1,110 +0,0 @@ -;+ -; PURPOSE: -; perform lag measurement with input light curves -; -; - -pro rm_lag_diag,t_conti,f_conti,e_conti,t_line,f_line,e_line,dt=dt,tag=tag,$ - outdir=outdir,ccf_xrange=ccf_xrange, fig_append=fig_append, $ - tau_exp=tau_exp,dcf=dcf,ccf_tau=ccf_tau,lag_mea=lag_mea, peak_sig=peak_sig, $ - noplot=noplot, ntrial=ntrial,mirror=mirror,dosub=dosub, out_ccf=out_ccf - - ; resolution of the CCF - if ~keyword_Set(dt) then dt=2. - - if n_elements(ntrial) eq 0 then ntrial = 500L - - if ~keyword_set(outdir) then outdir='/data3/quasar/yshen/work/lags/prepspec/' - if ~keyword_set(tag) then tag='lag_diag' - - if (~keyword_Set(fig_append)) and (~keyword_set(noplot)) then begin ; start a new figure - figfile=outdir+tag+'.ps' - begplot,name=figfile,/color,/cmyk ; /encap - endif - !P.multi = [0,1,3] - - ; plot the lightcurves - if ~keyword_set(noplot) then begin - charsize=2.5 & ticklen=0.05 - pos = [0.11, 0.7, 0.95, 0.95] - xrange=[min(t_conti),max(t_conti)] - yrange=[min(f_conti),max(f_conti)] - plot,[0],[0],xrange=xrange,yrange=yrange,xtitle='Time (Days)',ytitle='Relative Flux', $ - title=tag, pos=pos, charsize=charsize,xticklen=ticklen,xtickformat='(i0)' - oploterror,t_conti,f_conti,e_conti,psym=symcat(6) - xyouts, pos[2] - 0.2, pos[3] - 0.04, 'continuum',/norm - - pos = [0.11,0.39, 0.95,0.64] - xrange=[min(t_line),max(t_line)] - yrange=[min(f_line),max(f_line)] - plot,[0],[0],xrange=xrange,yrange=yrange,xtitle='Time (Days)',ytitle='Relative Flux', $ - pos=pos,charsize=charsize,xticklen=ticklen,xtickformat='(i0)' - oploterror,t_line,f_line,e_line,psym=symcat(6) - xyouts, pos[2] - 0.2, pos[3] - 0.04, 'line',/norm - endif - - ; compute the CCF - if ~keyword_set(ccf_xrange) then ccf_xrange=[-20,100] - yrange=[-0.5,1] - - if ~keyword_set(ccf_tau) then $ - ; ccf_tau = -70. + (findgen(140./dt + 5L)*dt) - ccf_tau = -10. + (findgen(70./dt + 5L)*dt) - - ; run xcorr_interp once to get the cent_tau and peak sig - ccf0 = xcorr_interp(t_line,f_line,t_conti,f_conti,tau=ccf_tau,ndata=ndata0 $ - , /nogap,cent_tau=cent_tau0, peak_tau=peak_tau0 $ - , mirror=mirror,peak_sig=peak_sig) - ; write to output CCF - out_ccf = ccf0 - - if keyword_set(dosub) then begin - if peak_sig gt 0.999 and cent_tau0 gt 0 then doflag=1 else $ - doflag=0 - endif else doflag=1 - - if ntrial gt 0 and doflag eq 1 then begin ; calculate MC error in lag - ccf = xcorr_interp(t_line,f_line,t_conti,f_conti,tau=ccf_tau,ndata=ndata $ - , /nogap,err1=e_line,err2=e_conti, /bootstrap,cent_tau=cent_tau, peak_tau=peak_tau $ - , mirror=mirror,ntrial=500L) - tau_mea = [cent_tau[0], quantile_1d(0.16, cent_tau), quantile_1d(0.84, cent_tau) ] - endif else tau_mea = [cent_tau0, -1., -1.] - - if ~keyword_set(noplot) then begin - pos = [0.11,0.08,0.95,0.33] - plot,[0],[0],xrange=ccf_xrange,yrange=yrange,xtitle='Time Delay (Days)',ytitle='CCF', $ - pos=pos,charsize=charsize,xticklen=ticklen - ypos=pos[3] - 0.03 - oplot, ccf_tau, ccf[*,0] ; ,color=colors - oplot, [tau_mea[0],tau_mea[0]],yrange,color=cgcolor('blue') - oplot, [tau_mea[1],tau_mea[1]],yrange,color=cgcolor('blue'),line=2 - oplot, [tau_mea[2],tau_mea[2]],yrange,color=cgcolor('blue'),line=2 - - ; overplot the expected lag - oplot, [tau_exp,tau_exp],yrange,color=cgcolor('red'),line=1 - legend, textoidl('\tau_{exp}'),pos=[pos[2]-0.2,pos[3]-0.02],$ - line=1,color=cgcolor('red'),/norm,box=0 - endif - - print, tau_mea, '[tau0, peak sig]=', cent_tau0, peak_sig - lag_mea=tau_mea - - ; compute the discrete CCF - if keyword_set(dcf) then begin - rm_dcf,t_conti,f_conti,t_line,f_line,err1=median(e_conti),err2=median(e_line),$ - DCF=DCF,eDCF=eDCF,tau_grid=tau_grid - ind1 = where(eDCF gt 0) - if ~keyword_set(noplot) then begin - if ind1[0] ne -1 then begin - oploterror, tau_grid[ind1],dcf[ind1],edcf[ind1],psym=symcat(6),color=cgcolor('red'),$ - errcolor=cgcolor('red') - endif - endif - endif - - !P.multi = 0 - - - if (~keyword_set(fig_append)) and (~keyword_set(noplot)) then endplot - -end diff --git a/pro/rm/rm_local_qsofit.pro b/pro/rm/rm_local_qsofit.pro deleted file mode 100644 index bb7ecb039..000000000 --- a/pro/rm/rm_local_qsofit.pro +++ /dev/null @@ -1,517 +0,0 @@ -;+ -; NAME: -; rm_local_qsofit -; -; PURPOSE: -; This routine is much like rm_qsofit, but instead of a global -; continuum fit, it only fits a simple local continuum underneath -; the line. -; -; CALLING SEQUENCE: -; rm_local_qsofit, obs_wave, flux, err, z, [ra=,dec=,/psplot,/fits] -; ------------------------------------------------------------------ - -pro rm_local_qsofit, lam0, flux0, err0, z, ivar0=ivar0 $ - , ra=ra,dec=dec, deredden=deredden $ - , emparfile=emparfile $ - , input_fitmask=input_fitmask $ ; input fitmasks, e.g., custom absorption masks - , poly_ord=poly_ord, rej_iter=rej_iter $ - , add_noise=add_noise, auto_abs_rej = auto_abs_rej $ - , conti_auto_abs_rej = conti_auto_abs_rej $ - , psplot=psplot,fits=fits,output_name=output_name,outdir=outdir,objtag=objtag $ - , plot_vel=plot_vel, nsmooth=nsmooth, append=append, silent=silent $ - , sdss_name=sdss_name, para=para, diet=diet, noplot=noplot, _extra=extra - - - ; Define line fitting tolerance in mpfitfun, - ; which helps for some objects in line fits (i.e., Hbeta and Halpha) - if ~keyword_set(xtol) then xtol=1d-20 - if ~keyword_set(ftol) then ftol=1d-15 - - if n_elements(plot_vel) eq 0 then plot_vel=1 - if ~keyword_Set(outdir) then outdir = '/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/local_fit/' - - ; Define constants - cs = 2.9979246d5 ; speed of light, km/s - if n_elements(z) eq 0 then z = 0. ; default is in restframe - - ; default is to auto reject absorption from the first linefit - if n_elements(auto_abs_rej) eq 0 then auto_abs_rej = 1L - - ; Number of linefit absorption rejection iteration - if n_elements(rej_iter) eq 0 then rej_iter = 2L - - lam = lam0 & flux = flux0 - if keyword_set(ivar0) then begin - err = 0.*ivar0 - ind = where(ivar0 NE 0.) - err[ind] = 1./sqrt(ivar0[ind]) - endif else err = err0 - - npix = n_elements(flux) - - if keyword_set(add_noise) then begin ; add gaussian noise - flux = flux + randomn(seed, npix)*err - endif - - ; deredden Galactic extinction if asked - if keyword_set(deredden) then begin - if not keyword_Set(silent) then splog, $ - 'Dereddening spectrum using the SFD map and CCM extinction curve' - dereddening_spec, lam, flux, err=err, ra=ra, dec=dec $ - , dered_flux = dered_flux, dered_err = dered_err - flux = dered_flux & err = dered_err - endif - - ivar = dblarr(n_elements(err)) - indd = where(err gt 1d-6) - ivar[indd] = 1./(err[indd])^2 - - ; mask out 3-sigma lower outlier of the 20-pix smoothed spectrum, - ; to reduce the effects of absorption - fitmask = ivar NE 0.0 - - ; Mask outliers and absorption in the emission lines by finding 5-sigma - ; lower outliers from 20 pix smoothed spectrum - if n_elements(outlier_mask) eq 0 then outlier_mask = 1L - if keyword_set(outlier_mask) then begin - disp_vec = (alog10(lam)-shift(alog10(lam), 1))[1:*] - disp = djs_median(disp_vec) - NRES = 20L ; 20L - bkspace = NRES*disp - spec_set = bspline_iterfit(alog10(lam), flux $ - , invvar = ivar*fitmask $ - , bkspace = bkspace $ - , yfit = flux_spline, maxiter = 10 $ - , upper = 0, lower = 5, nord = 3 $ - , maxrej = 50, outmask = outmask, /silent) - ; exclude redward of restframe 3000A, since little absorption expected there. - ind_exclude = where(lam/(1.+z) ge 3000.) - if ind_exclude[0] ne -1 then outmask[ind_exclude]=1 - fitmask = fitmask*outmask - endif - - ; Add additional mask bits from input - if keyword_set(input_fitmask) then begin - if n_elements(input_fitmask) eq n_elements(lam) then $ - fitmask = fitmask*input_fitmask else $ - splog, 'input_fitmask dimension does not match lam grid.' - endif - - ; Shift to restframe - wave = lam/(1.0+z) - - ; Trim the spectrum in the windows specified by keywords wave_range - if keyword_Set(wave_range) then begin - ind = where(wave ge wave_range[0] and wave le wave_range[1]) - wave = wave[ind] & flux = flux[ind] & err = err[ind] - fitmask = fitmask[ind] - endif - - ; generate the output structure - output = create_struct('z',z,'wave', wave, 'flux', flux, 'err', err, $ - 'fitmask', fitmask) - - ; ---------------- - ; Now start to fit the emission/absorb lines defined in emparfile - line_flux = flux ; since we don't subtract the continuum in this fit - - ; Setup line fitting parameters - if keyword_set(emparfile) then emline_file=emparfile else $ - emline_file = getenv('IDLRM_DIR')+'/etc/qsoline_few.par' - yanny_read, emline_file, pdata - linelist = *pdata[0] - yanny_free, pdata - nline_all = n_elements(linelist) - ncomp_all = n_elements(uniq(linelist.compname)) - ngauss_tot = total(linelist.ngauss) - parinfo = replicate({value:0.D, fixed:0, limited:[0,0],limits:[0.D,0],tied:''}, $ - ngauss_tot*3 + ncomp_all*2) - npar = n_elements(parinfo) - line_fit_all = dblarr(npar) & perror_all = dblarr(npar) - linecomp_all = (linelist.compname)[uniq(linelist.compname)] - linename = linelist.linename - parindx = lonarr(2,nline_all) ; this only index to lines - parfitflag = lonarr(npar) - parlinename = replicate('',npar) - line_redchi2 = dblarr(npar) & line_status = lonarr(npar) - line_npix_fit = lonarr(npar) - inext = 0 - ; assign initial values and limitations - nline_p=0L ; # of lines in the previous complex - for icomp=0L, ncomp_all - 1 do begin - ; find all lines in each line complex - ind1 = where(linelist.compname eq linecomp_all[icomp], nline) - for i=0L, nline - 1L do begin - ngauss = linelist[ind1[i]].ngauss - parindx[*,i+nline_p] = [inext, inext+3*ngauss-1] - - for j=0L, ngauss - 1L do begin - - ; add a small, random offset of each broad gaussian component - if ngauss gt 1 then $ - lnlamini = alog(linelist[ind1[i]].lambda) + (2*randomu(seed,1)-1.)*1d-3 else $ - lnlamini = alog(linelist[ind1[i]].lambda) - parlinename[inext:inext+2] = linelist[ind1[i]].linename - parinfo[inext:inext+2].value = [linelist[ind1[i]].fvalue, lnlamini $ - , linelist[ind1[i]].inisig] - ; restrict the Gaussian to be positive or negative depending on the initial flux guess - if parinfo[inext].value gt 0 then begin - parinfo[inext].limited = [1,0] & parinfo[inext].limits=[0,1d10] - endif else begin - parinfo[inext].limited = [0,1] & parinfo[inext].limits=[-1d10,0] - endelse - parinfo[inext+1].limited = [1,1] - parinfo[inext+1].limits=[lnlamini-linelist[ind1[i]].voff, lnlamini+linelist[ind1[i]].voff] - parinfo[inext+2].limited = [1,1] - parinfo[inext+2].limits = [linelist[ind1[i]].minsig, linelist[ind1[i]].maxsig] - - inext = inext + 3 - endfor - endfor - ; assign the PL parameters - parinfo[inext:inext+1].value=[1., -0.5] - - ; proceed to the next line complex by skipping the 2 elements used for the local power-law continuum - inext = inext + 2 - nline_p = nline_p + nline - endfor - - minwave = min(wave,max=maxwave) - ; Find which lines are covered - ind1 = where(linelist.lambda ge minwave and linelist.lambda le maxwave, $ - complement = indd1) - if indd1[0] ne -1 then linelist[indd1].fitflag = 0 - ind_fit = where(linelist.fitflag eq 1) - if ind_fit[0] eq -1 then $ - splog, 'No line to fit, return' $ - else begin - - ; loop over each line complex - uniq_linecomp = uniq(linelist[ind_fit].compname) - ncomp = n_elements(uniq_linecomp) - compname = (linelist[ind_fit].compname)[uniq_linecomp] - - nline_p=0L ; # of lines in the previous complex - for ii=0L, ncomp - 1L do begin - ind_line = where(linelist.compname eq compname[ii] and $ - linelist.fitflag eq 1, nline_fit) - linelist_fit = linelist[ind_line] - ngauss_fit = linelist_fit.ngauss - if not keyword_set(silent) then splog, 'Fit line complex: ', compname[ii] - iline_start = ind_line[0] & iline_end = ind_line[nline_fit-1] - parindx_sub = parindx[0,iline_start]+indgen(3*linelist[iline_start].ngauss) - for iitmp=1, nline_fit - 1L do begin - parindx_sub = [parindx_sub, $ - parindx[0,ind_line[iitmp]]+indgen(3*linelist[ind_line[iitmp]].ngauss)] - endfor - ; add the PL parameters to the line complex - parindx_sub = [parindx_sub, max(parindx_sub)+[1,2]] - parinfo1 = parinfo[ parindx_sub ] - - ; Now setup constraints of parameters - ; Tie velocity - arr = linelist_fit.vindex - arr = arr[sort(arr)] - arr = arr[uniq(arr)] - for iuniq=0L, n_elements(arr) - 1L do begin - ind_fix = where(linelist_fit.vindex eq arr[iuniq],ntmp) - if ntmp gt 0 and arr[iuniq] ne 0 then begin - - ; For a broad line, enforce symmetric profile if required - if ntmp eq 1 and linelist_fit[ind_fix[0]].ngauss gt 1 then begin - ind_fix = ind_fix[0] - pstr0='P(' + string(1+3*( total(ngauss_fit[0:ind_fix]) $ - - ngauss_fit[ind_fix]),format='(i0)')+')' - for igauss=1, ngauss_fit[ind_fix]-1L do begin - parinfo1[1+3*(total(ngauss_fit[0:ind_fix]) $ - - ngauss_fit[ind_fix])+igauss*3].tied = pstr0 - endfor - endif - - pstr0='(P(' + string(1+3*( total(ngauss_fit[0:ind_fix[0]])-1) $ - , format='(i0)')+')' - for iitmp=1,ntmp-1 do begin - parinfo1[1+3*(total(ngauss_fit[0:ind_fix[iitmp]])-1)].tied=pstr0 $ - + ' - alog('+string(linelist_fit[ind_fix[0]].lambda,format='(f7.2)') $ - + ')) + alog('+string(linelist_fit[ind_fix[iitmp]].lambda,format='(f7.2)') $ - + ')' - endfor - endif - endfor - ; Tie line width - arr = linelist_fit.windex - arr = arr[sort(arr)] - arr = arr[uniq(arr)] - for iuniq=0L, n_elements(arr) - 1L do begin - ind_fix = where(linelist_fit.windex eq arr[iuniq],ntmp) - if ntmp gt 1 and arr[iuniq] ne 0 then begin - pstr0='P('+string(2+3*(total(ngauss_fit[0:ind_fix[0]])-1) $ - ,format='(i0)')+')' - for iitmp=1,ntmp-1 do begin - parinfo1[2+3*( total(ngauss_fit[0:ind_fix[iitmp]])-1)].tied = pstr0 - endfor - endif - endfor - ; Tie line flux - arr = linelist_fit.findex - arr = arr[sort(arr)] - arr = arr[uniq(arr)] - for iuniq=0L, n_elements(arr) - 1L do begin - ind_fix = where(linelist_fit.findex eq arr[iuniq],ntmp) - if ntmp gt 1 and arr[iuniq] ne 0 then begin - - pstr0='P('+string(3*( total(ngauss_fit[0:ind_fix[0]])-1) $ - ,format='(i0)')+')' - for iitmp=1,ntmp-1 do begin - parinfo1[3*(total(ngauss_fit[0:ind_fix[iitmp]])-1)].tied=pstr0 $ - + '*' + string(linelist_fit[ind_fix[0]].lambda,format='(f7.2)') $ - + '/' + string(linelist_fit[ind_fix[iitmp]].lambda,format='(f7.2)') $ - + '*' + string(linelist_fit[ind_fix[iitmp]].fvalue/linelist_fit[ind_fix[0]].fvalue $ - , format='(f3.1)') - endfor - endif - endfor - - ; message, 'stop' - ; Do the fit - ind = where(wave ge linelist_fit[0].minwav $ - and wave le linelist_fit[0].maxwav $ - and fitmask ne 0., nnn) - if nnn gt 10 then begin - line_fit = mpfitfun('local_conti_line',alog(wave[ind]),line_flux[ind],err[ind] $ - , MAXITER = 500L, parinfo = parinfo1, xtol=xtol, ftol=ftol $ - , perror = perror, yfit = yfit2, /quiet $ - , nfev = nfev, niter = niter, status = status, bestnorm = chi2) - ttt = where(parinfo1.fixed eq 1 or strlen(parinfo1.tied) gt 0, nfix) - dof = n_elements(ind) - (n_elements(parinfo1) - nfix) - redchi2 = chi2/dof - if not keyword_set(silent) then splog,'LINE-FITTING: MPFIT nfev=',nfev $ - , ' niter=', niter, ' status=', status, ' redchi2=', redchi2 - - ; Do a further step to remove 3sigma absorption below the first fit - ; Do not do this for the Halpha or Hbeta line complex - ; first setup fitmask2 and the new line fitting windows - if keyword_set(auto_abs_rej) and redchi2 lt 100. $ - and compname[ii] ne 'Halpha' and compname[ii] ne 'Hbeta' and compname[ii] ne 'CaII3934' $ - then begin - - n_iter = 1L - - iter1: - fitmask2 = replicate(1L, n_elements(wave)) - ind_abs = where(line_flux[ind] lt yfit2 - 3.*err[ind]) - if ind_abs[0] ne -1 then fitmask2[ind[ind_abs]] = 0L - fitmask2 = fitmask*fitmask2 - - ind2 = where(wave ge linelist_fit[0].minwav $ - and wave le linelist_fit[0].maxwav $ - and fitmask2 ne 0.) - - if (n_elements(ind2) gt 10L) and (n_elements(ind2) lt n_elements(ind)) then begin - - line_fit2 = mpfitfun('local_conti_line', alog(wave[ind2]) $ - , line_flux[ind2], err[ind2] $ - , MAXITER = 500L, parinfo = parinfo1, xtol=xtol,ftol=ftol $ - , perror = perror2, yfit = yfit2_2, /quiet $ - , nfev = nfev, niter = niter, status = status2, bestnorm = chi2_2) - ttt = where(parinfo1.fixed eq 1 or strlen(parinfo1.tied) gt 0, nfix) - dof2 = n_elements(ind2) - (n_elements(parinfo1) - nfix) - redchi2_2 = chi2_2/dof2 - if not keyword_set(silent) then splog $ - , 'LINE-FITTING: MPFIT nfev=', nfev $ - , ' niter=', niter, ' status=', status2, ' redchi2=', redchi2_2 $ - , ' iter=', n_iter - ; replace the original fit if justified - if status2 gt 0 and redchi2_2 gt 0 and redchi2_2 lt redchi2 then begin - if not keyword_set(silent) then $ - splog, 'Improved fits by rejecting absorptions. ' - ind = ind2 & line_fit = line_fit2 & perror = perror2 - redchi2 = redchi2_2 & status = status2 & yfit2 = yfit2_2 - fitmask = fitmask2 - if n_iter lt rej_iter then begin - n_iter = n_iter + 1L - goto, iter1 - endif - endif - - endif - endif - - if n_elements(ind_line_fit) eq 0 then ind_line_fit=ind else $ - ind_line_fit = [ind_line_fit, ind] - line_fit_all[ parindx_sub ] = line_fit - perror_all[ parindx_sub ] = perror - parfitflag[parindx_sub] = 1L - line_redchi2[parindx_sub] = redchi2 - line_status[parindx_sub] = status - line_npix_fit[parindx_sub] = n_elements(ind) - - endif - ind_tmp = where(linelist.compname eq compname[ii], nline_n) - nline_p = nline_p + nline_n - - endfor - output.fitmask = fitmask - temp = create_struct('linename',parlinename, 'fitflag', parfitflag $ - , 'ind_line_fit', n_elements(ind_line_fit) gt 0 ? ind_line_fit : [-1L] $ - , 'line_fit', line_fit_all $ - , 'line_fit_err', perror_all, 'line_redchi2', line_redchi2 $ - , 'line_status', line_status, 'line_npix_fit', line_npix_fit) - output = struct_addtags(output, temp) - endelse - - ; --------------------------- End of fitting emission lines --------------- - - if keyword_set(diet) then begin - tag_rej=['WAVE','FLUX','ERR','FITMASK','IND_LINE_FIT'] - remove_tags, output, tag_rej, output1 - output = output1 - endif - para = output - - ; Write the fit results - if n_elements(outdir) eq 0 then cd, current=outdir - if n_elements(output_name) eq 0 then output_name = 'qsofit' - if keyword_Set(fits) then begin ; output the fits result - fitsfile = outdir + '/fits/' + output_name + '.fits' - mwrfits, output, fitsfile, /create - endif - - if keyword_set(noplot) then return - - ; ------------------------ Plotting block ---------------------------- - ; now make a plot - if keyword_set(psplot) then begin - if not keyword_set(append) then begin - figfile = outdir + '/QA/' + output_name + '.ps' - ;begplot, name=figfile, xsize = 40, ysize = 25,/color - begplot, name=figfile, /landscape, /color - endif - charsize = 1. & thick = 4. & xticks = 2L & xminor = 5L - linethick = 0.1 & symsize = 3. - ang = string(197B) - endif else begin - linethick = 1. & symsize = 3. - xticks = 2L & xminor = 5L - ang = textoidl('\AA') - endelse - - uniq_linecomp = uniq(linelist.compname) - ncomp = n_elements(uniq_linecomp) - compname = (linelist.compname)[uniq_linecomp] - ; determine how many line complex are fitted and should be plotted - plotkey=lonarr(ncomp) - for ii=0L, ncomp - 1L do begin - ind_line = where(linelist.compname eq compname[ii] and linelist.fitflag eq 1, $ - nline_fit) - if nline_fit gt 0 then begin - linelist_fit = linelist[ind_line] - pxrange=[linelist_fit[0].minwav,linelist_fit[0].maxwav] - ind = where(wave ge pxrange[0] and wave le pxrange[1], nnn) - if nnn gt 10 then plotkey[ii] = 1L ; plot this line complex - endif - endfor - temp=where(plotkey eq 1, nplot) - ; determine layout - if nplot gt 0 then plot_layout, nplot, xypos=xypos, omargin=[0.08, 0.05, 0.98, 0.94], pmargin=[0.1,0.1] - - len = 0.04 - if not keyword_set(nsmooth) then nsmooth = 1L - ytitle = textoidl('Flux Density f_\lambda [10^{-17} erg s^{-1} cm^{-2} ') $ - + ang + textoidl('^{-1}]') - if ~keyword_set(plot_vel) then xtitle = textoidl('Rest Wavelength [')+ang+']' $ - else xtitle = textoidl('Velocity [km s^{-1}]') - - - ; now plot each fitted line complex - ; first refresh the plot - plot, [0],[0], /nodata, xsty=5, ysty=5 - - iuse=0 ; index of panel to plot - for ii=0L, ncomp - 1L do begin - - ind_line = where(linelist.compname eq compname[ii] and linelist.fitflag eq 1, $ - nline_fit) - - if nline_fit gt 0 then begin - - pos=xypos[*, iuse] - iuse=iuse + 1 - linelist_fit = linelist[ind_line] - ; splog, 'Plotting line complex: ', compname[ii] - iline_start = ind_line[0] & iline_end = ind_line[nline_fit-1] - parindx_sub = parindx[0,iline_start] + indgen(3*linelist[iline_start].ngauss) - for iitmp=1, nline_fit - 1L do begin - parindx_sub = [parindx_sub, parindx[0,ind_line[iitmp]] $ - + indgen(3*linelist[ind_line[iitmp]].ngauss)] - endfor - parindx_sub_lineonly = parindx_sub - ; add the PL parameters to the line complex - parindx_sub = [parindx_sub, max(parindx_sub)+[1,2]] - - pxrange=[linelist_fit[0].minwav,linelist_fit[0].maxwav] - ind = where(wave ge pxrange[0] and wave le pxrange[1], nnn) - ind_bad=where(wave ge pxrange[0] and wave le pxrange[1] and fitmask eq 0, nbad) - ind_good=where(wave ge pxrange[0] and wave le pxrange[1] and fitmask ne 0, ngood) - if keyword_set(plot_vel) then pxrange=[-3000.,3000.] - - if nnn gt 10 then begin - ;yrange=[-0.5,1.05]*max((smooth(line_flux[where(flux*sqrt(ivar) gt 5.)],20))[ind]) - yrange=[min(median(line_flux[ind_good],5)), max(median(line_flux[ind_good],5))*1.05] - if ~keyword_set(plot_vel) then xarr=wave else $ - xarr=(wave/linelist_fit[0].lambda - 1.)*cs - plot, xarr[ind], smooth(line_flux[ind],nsmooth), /noerase $ - , xrange=pxrange, yrange=yrange $ - , pos = pos,/xsty,thick=linethick, charsize=charsize,xticklen=len $ - , yticklen=len, xthick=thick, ythick=thick, charthick=thick $ - , xticks = xticks, xminor = xminor, psym=10 - oplot, xarr[ind],err[ind],color=cgcolor('gray'),thick=linethick - if nbad gt 0 then oplot, [xarr[ind_bad]], [line_flux[ind_bad]] $ - , psym=4, thick =thick, color=cgcolor('cyan'),symsize=0.5 - - ; plot the model - pp = line_fit_all[ parindx_sub ] - ;pp_broad = pp[0:3*linelist_fit[0].ngauss-1] - ;if n_elements(pp) gt n_elements(pp_broad) then begin - ; pp_narrow = pp[3*linelist_fit[0].ngauss:*] - ; for jj=1L, n_elements(pp_narrow)/3L do begin - ; pp_narrow_1gauss = pp_narrow[(jj-1)*3L:jj*3L-1] - ; oplot, wave[ind], onegauss(alog(wave[ind]), pp_narrow_1gauss) $ - ; , color=cgcolor('cyan') - ; endfor - ;endif - ;oplot,wave[ind], manygauss(alog(wave[ind]),pp_broad) $ - ; , color=cgcolor('green') - ;; now plot the total model - oplot,xarr[ind],local_conti_line(alog(wave[ind]),pp) $ - , color=cgcolor('red') - - xyouts, pos[2]-0.05,pos[3]-0.03, compname[ii], /norm,charsize=charsize - ; plot floating linenames - for jline=0,n_elements(linelist_fit)-1 do begin - if ~keyword_set(plot_vel) then $ - xyouts, linelist_fit[jline].lambda, yrange[1]*(0.9-(jline mod 2)*0.1), $ - linelist_fit[jline].linename,color=cgcolor('magenta'),charsize=0.7,align=0.5 $ - else xyouts, (linelist_fit[jline].lambda/linelist_fit[0].lambda - 1.)*cs, $ - yrange[1]*(0.9-(jline mod 2)*0.1), $ - linelist_fit[jline].linename,color=cgcolor('magenta'),charsize=0.7,align=0.5 - endfor - - endif - endif - endfor - - xyouts,0.5,0.01,xtitle,/norm,charsize=charsize,charthick=thick,align=0.5 - xyouts,0.02,0.5,ytitle,/norm,charsize=charsize,charthick=thick,align=0.5,orien=90 - - if keyword_set(objtag) then $ - xyouts, 0.15, 0.96, objtag, /norm, charsize = charsize, charthick=thick - if keyword_set(SDSS_name) then xyouts, 0.5, 0.96, /norm, SDSS_name $ - , charsize = charsize, charthick = thick - xyouts, 0.85, 0.96, 'z='+string(z,format='(f5.3)'), /norm $ - , charsize=charsize, charthick=thick, color=cgcolor('red') - - if keyword_set(psplot) and not keyword_set(append) then endplot - -end diff --git a/pro/rm/rm_make_spec_synmag.pro b/pro/rm/rm_make_spec_synmag.pro deleted file mode 100644 index 34c254891..000000000 --- a/pro/rm/rm_make_spec_synmag.pro +++ /dev/null @@ -1,140 +0,0 @@ -; compile the gri synthetic magnitudes/flux for RM targets -; using pt corrections from PrepSpec -pro rm_get_spec_synmag_one, rmid, ep=ep, prepspec_dir=prepspec_dir, outdir=outdir - - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1, /silent) - epoch_info=mrdfits(file,2) - file='/data3/yshen/ftp/sdssrm/collab/science_data/sample_char/sample_char_final.fits' - char=mrdfits(file,1,/silent) - - nnn=n_elements(rmid) - calibdir = 'wh_skysub/' - - if ~keyword_set(outdir) then outdir = prepspec_dir + '/specmag/' - if file_test(outdir) eq 0 then spawn, 'mkdir ' + outdir - - if ~keyword_set(ep) then ep=lindgen(78)+1 - nep = n_elements(ep) - result={RMID:0L, zfinal:0.D, zsys:0.D,objc_type:0L, MJD:dblarr(nep), gri_mag:dblarr(3,nep), $ - gri_mag_err:dblarr(3,nep), $ - gri_fnu:dblarr(3,nep), gri_fnu_err:dblarr(3,nep), $ - pt:dblarr(nep), pt_err:dblarr(nep), $ - gri_mag_ori:dblarr(3,nep), gri_mag_ori_err:dblarr(3,nep), $ - gri_fnu_ori:dblarr(3,nep), gri_fnu_ori_err:dblarr(3,nep) } - - for i=0, nnn-1 do begin - out = result - out.zsys = char[rmid[i]].zsys - out.rmid = rmid[i] & out.mjd = epoch_info[ep-1].mean_mjd - out.zfinal=target[rmid[i]].zfinal & out.objc_type=target[rmid[i]].objc_type - - for j=0, nep-1 do begin - plate=(target[rmid[i]].plate)[ep[j]-1] - fiber=(target[rmid[i]].fiberid)[ep[j]-1] - mjd=(target[rmid[i]].mjd)[ep[j]-1] - if mjd gt 56837 then run2d='v5_10_10/' else run2d='v5_7_1/' - rm_readspec,plate,fiber, mjd=mjd, $ - calibdir=calibdir, wave=wave,flux=flux,invvar=ivar, run2d=run2d - - ; get synthetic AB magnitude and flux fnu (erg/s/cm2/Hz) - synmag=rm_spec2mag(wave,flux,ivar,synmag_err=synmag_err, $ - synflux=synflux, synfnu_err=synfnu_err) - out.gri_mag(*,j)=synmag[1:3] - out.gri_mag_err(*,j)=synmag_err[1:3] - out.gri_fnu(*,j)=synflux[1:3] - out.gri_fnu_err(*,j)=synfnu_err[1:3] - endfor - out.gri_mag_ori = out.gri_mag - out.gri_mag_ori_err = out.gri_mag_err - out.gri_fnu_ori = out.gri_fnu - out.gri_fnu_ori_err = out.gri_fnu_err - - ; apply the pt corrections from prepspec - pt=rm_get_pt(rmid[i],err=pt_err,mjd_all=epoch_info[ep-1].mean_mjd,topdir=prepspec_dir) - out.pt = pt & out.pt_err=pt_err - for j=0,nep-1 do begin - out.gri_fnu(*,j)=(out.gri_fnu)[*,j]/pt[j] - out.gri_fnu_err(*,j)=sqrt(((out.gri_fnu_err)[*,j]/pt[j])^2 + $ - ((out.gri_fnu)[*,j]*pt_err[j]/pt[j]^2)^2) - out.gri_mag(*,j)=-2.5*alog10((out.gri_fnu)[*,j]) - 48.6 - out.gri_mag_err(*,j)=2.5*(out.gri_fnu_err)[*,j]/((out.gri_fnu)[*,j]*alog(10.D)) - endfor - - outfile = outdir + 'rm' + string(rmid[i],format='(i3.3)') + '.fits' - mwrfits, out, outfile, /create - print, 'finished rmid=',i - endfor - -end - -pro rm_make_spec_synmag, nep=nep, outfile=outfile, prepspec_dir=prepspec_dir - - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - epoch_info=mrdfits(file,2) - - rmid=indgen(920) - nnn=n_elements(rmid) - calibdir='wh_skysub/' - if ~keyword_set(outfile) then outfile='/data3/yshen/ftp/sdssrm/collab/photo_lc/spec_syn.fits' - - ; define the output spec-synthetic LC structure - if ~keyword_set(nep) then nep=32L - result={RMID:0L, zfinal:0.D, objc_type:0L, MJD:dblarr(nep), gri_mag:dblarr(3,nep), $ - gri_mag_err:dblarr(3,nep), $ - gri_fnu:dblarr(3,nep), gri_fnu_err:dblarr(3,nep), $ - pt:dblarr(nep), pt_err:dblarr(nep), $ - gri_mag_ori:dblarr(3,nep), gri_mag_ori_err:dblarr(3,nep), $ - gri_fnu_ori:dblarr(3,nep), gri_fnu_ori_err:dblarr(3,nep) } - result=replicate(result,nnn) - result.rmid=rmid - result.zfinal=target[rmid].zfinal - result.objc_type=target[rmid].objc_type - for i=0L, nnn-1 do begin - result[i].mjd=epoch_info[0:31].mean_mjd - - rm_readspec, (target[i].plate)[0:nep-1], (target[i].fiberid)[0:nep-1], mjd=(target[i].mjd)[0:nep-1], $ - calibdir=calibdir, wave=wave,flux=flux,invvar=ivar, run2d=run2d - - ; get synthetic AB magnitude - for j=0L,nep-1 do begin - synmag=rm_spec2mag(wave[*,j],flux[*,j],ivar[*,j],synmag_err=synmag_err, $ - synflux=synflux, synfnu_err=synfnu_err) - result[i].gri_mag(*,j)=synmag[1:3] - result[i].gri_mag_err(*,j)=synmag_err[1:3] - result[i].gri_fnu(*,j)=synflux[1:3] - result[i].gri_fnu_err(*,j)=synfnu_err[1:3] - endfor - result[i].gri_mag_ori = result[i].gri_mag - result[i].gri_mag_ori_err = result[i].gri_mag_err - result[i].gri_fnu_ori = result[i].gri_fnu - result[i].gri_fnu_ori_err = result[i].gri_fnu_err - - ; apply the pt corrections from prepspec - pt=rm_get_pt(i,err=pt_err,mjd_all=epoch_info[0:nep-1].mean_mjd,topdir=prepspec_dir) - result[i].pt = pt & result[i].pt_err=pt_err - for j=0,nep-1 do begin - ;flux[*,j]=flux[*,j]/pt[j] & ivar[*,j]=ivar[*,j]*pt[j]^2 - - result[i].gri_fnu(*,j)=(result[i].gri_fnu)[*,j]/pt[j] - result[i].gri_fnu_err(*,j)=sqrt(((result[i].gri_fnu_err)[*,j]/pt[j])^2 + $ - ((result[i].gri_fnu)[*,j]*pt_err[j]/pt[j]^2)^2) - result[i].gri_mag(*,j)=-2.5*alog10((result[i].gri_fnu)[*,j]) - 48.6 - result[i].gri_mag_err(*,j)=2.5*(result[i].gri_fnu_err)[*,j]/((result[i].gri_fnu)[*,j]*alog(10.D)) - - endfor - print, 'finished rmid=',i - - ;wavevec = wave - ;flambda2fnu = wavevec^2 / 2.99792e18 - ;fthru = filter_thru(flux * flambda2fnu, waveimg=wavevec, /toair,mask=(ivar LE 0)) - ;thismag = -2.5 * alog10(fthru) - (48.6-2.5*17) ; ab magnitude - ;result[i].gri_mag=thismag[*,1:3] - ;result[i].gri_fnu=10.D^((result[i].gri_mag + 48.6)*(-0.4)) - - endfor - - mwrfits, result, outfile, /create - -end diff --git a/pro/rm/rm_make_target_info.pro b/pro/rm/rm_make_target_info.pro deleted file mode 100644 index 4dff42f36..000000000 --- a/pro/rm/rm_make_target_info.pro +++ /dev/null @@ -1,36 +0,0 @@ -;+ -; NAME: -; rm_make_target_info -; -; -; PURPOSE: -; compile some basic quasar properties for the RM targets -; - -pro rm_make_target_info - - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - ; keep only RM targets - target=fibermap[0:848] - nobj=n_elements(target) - - struct=replicate({imag:0.D, Mi_z2:0.D, logL5100:0.D, tau_obs:-1.D}, nobj) - target=struct_addtags(target,struct) - - target.imag=reform((target.psfmag)[3,*]) - mi_z2=get_abs_mag(target.imag, target.zfinal) - target.mi_z2=mi_z2 - d10pc = 3.08d19 - logL2500 = -0.4*(mi_z2 + 48.6 + 2.5*alog10(3.)) + alog10(4d*!PI*d10pc^2) + alog10(3d18/2500d) - logL5100 = logL2500 - 0.5*alog10(5100./2500.) - target.logL5100 = logL5100 - - ; assign BLR size (hbeta BLR), in days - lag = 10.D^( -21.3 + 0.519*target.logL5100 ) ; + randomn(seed, nobj)*0.15 ) - target.tau_obs = lag*(1. + target.zfinal) - - outfile='/data3/quasar/yshen/work/composite_lag/target_info.fits' - mwrfits, target, outfile, /create - -end diff --git a/pro/rm/rm_output_asciispec.pro b/pro/rm/rm_output_asciispec.pro deleted file mode 100644 index 015f0085c..000000000 --- a/pro/rm/rm_output_asciispec.pro +++ /dev/null @@ -1,93 +0,0 @@ -;+ -; PURPOSE: -; Output ascii spectra of the spPlate files -; -; Keywords: -; -; calibdir='' ; BOSS pipeline reduction -; calibdir='recalib/' ; xyfit reduction -; calibdir='wh_skysub/' ; xyfit reduction + WH05 sky subtraction -; epoch=[33,38] ; only output epochs33 to epoch38 -;--------------------------------- - -pro rm_output_asciispec, calibdir=calibdir,outdir=outdir,clobber=clobber $ - ,run2d=run2d,run1d=run1d,epoch=epoch, pt_corr=pt_corr, rmid=rmid - - - ; set run version - if not keyword_set(run2d) then run2d=getenv('RUN2D') - if not keyword_set(run1d) then run1d=getenv('RUN1D') - - ; path for spPlate* files - if not keyword_Set(calibdir) then calibdir='wh_skysub/' - - ; path for output ascii files - if not keyword_Set(outdir) then outdir='/data3/yshen/ftp/sdssrm/collab/bossredux/v5_7_1/ascii_spec/wh_skysub/' - ;'/data3/quasar/yshen/ftp/bossredux/v5_7_1/ascii_spec/wh_skysub/' - - target_file=getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - info=mrdfits(target_file,2,/silent) - mean_mjd=info.mean_mjd - mjdall = fibermap[0].mjd - - if ~keyword_set(epoch) then begin - ; get all the available epochs - ind = where(fibermap[0].plate gt 0, nnn) - epoch=[1,nnn] - endif - nnn=epoch[1]-epoch[0]+1 - - fmt='(f10.3, e12.4, e12.4,i12,i12)' - if ~keyword_set(rmid) then rmid=indgen(1000L) - nobj = n_elements(rmid) - for i=0L, nobj - 1 do begin - specdir = outdir + 'RMID_' + string(rmid[i],format='(i3.3)') + '/' - if file_test(specdir) eq 0 then spawn, 'mkdir ' + specdir - if keyword_set(pt_corr) then begin ; apply the pt corrections from PrepSpec - pt=rm_get_pt(rmid[i],err=pt_err,mjd_all=mjdall[epoch[0]-1:epoch[1]-1],topdir=prepspec_dir) - endif - for jep=epoch[0]-1, epoch[1]-1 do begin - - plate=(fibermap[rmid[i]].plate)[jep] - fiber=(fibermap[rmid[i]].fiberid)[jep] - mjd=(fibermap[rmid[i]].mjd)[jep] - platestr=string(plate,format='(i4.4)') - fiberstr=string(fiber,format='(i4.4)') - mjdstr=string(mjd,format='(i5.5)') - specfile=specdir+'RMID_' + string(rmid[i],format='(i3.3)') + '_EP' + string(jep+1,format='(i2.2)') + $ - '_' + platestr + '-' + mjdstr + '-' + fiberstr + '.dat' - gzipfile=specfile+'.gz' - if file_test(gzipfile) eq 0 or keyword_set(clobber) then begin - rm_readspec,plate,fiber,mjd=mjd,wave=wave,flux=flux,flerr=flerr,andmask=andmask,ormask=ormask,$ - calibdir=calibdir,run2d=run2d - if keyword_set(pt_corr) then begin ; apply the pt corrections - if pt[jep] gt 1d-2 and pt[jep] lt 100 and pt_err[jep] gt 0 then begin - flux = flux/pt[jep] - ind_good = where(flerr gt 1d-5) - if ind_good[0] ne -1 then $ - flerr[ind_good] = sqrt( (flerr[ind_good]/pt[jep])^2 + (flux[ind_good]*pt_err[jep]/pt[jep]^2)^2 ) - endif - endif - - npix=n_elements(wave) - openw, lun, specfile,/get_lun - printf,lun,'# Mean_MJD='+string(mean_mjd[jep],format='(f9.3)') - printf,lun,'# RMID='+string(rmid[i],format='(i3.3)') + ' SOURCE_TYPE=' + fibermap[rmid[i]].sourcetype - printf,lun,'# ZFINAL='+string(fibermap[rmid[i]].zfinal,format='(f6.4)') - printf,lun,'# EPOCH='+string(jep+1,format='(i2)') - printf,lun,'# PLATE='+platestr + ' MJD='+mjdstr + ' FIBERID='+fiberstr - printf,lun,'# Wave[vaccum] Flux Flux_Err ANDMASK ORMASK' - printf,lun,'# [Ang] [10^(-17) erg/cm2/s/Ang]' - for jj=0L, npix-1 do printf,lun,wave[jj],flux[jj],flerr[jj],andmask[jj],ormask[jj],format=fmt - close, lun - free_lun, lun - spawn, 'gzip -f ' + specfile - endif - endfor - - splog, 'finished obj: ', i+1, '/', nobj - - endfor - -end diff --git a/pro/rm/rm_output_focal_pos.pro b/pro/rm/rm_output_focal_pos.pro deleted file mode 100644 index 1720d237e..000000000 --- a/pro/rm/rm_output_focal_pos.pro +++ /dev/null @@ -1,49 +0,0 @@ -;+ -; NAME -; -; PURPOSE: -; output the xpos and ypos focal positions for each target -; - -pro rm_output_focal_pos,plate,mjd,outdir=outdir,run2d=run2d,run1d=run1d,calibdir=calibdir - - if ~keyword_set(outdir) then outdir='/data3/quasar/yshen/ftp/bossredux/v5_7_1/ascii_spec/' - - ; set spPlate path - if ~keyword_set(run2d) then run2d=getenv('RUN2D') - if ~keyword_set(run1d) then run1d=getenv('RUN1D') - if ~keyword_Set(calibdir) then calibdir='wh_skysub/' - - ; get target list - target_file=getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - info=mrdfits(target_file,2,/silent) - mean_mjd=info.mean_mjd - - fiber_all=fibermap.fiberid - plate_all=(fibermap.plate)[*,0] - mjd_all=(fibermap.mjd)[*,0] - - ind=where(plate_all eq plate and mjd_all eq mjd) - fiber=fiber_all[ind,*] - - rm_readspec,plate,fiber,mjd=mjd,plugmap=plugmap,calibdir=calibdir - - ; extended source flag - eflag = lonarr(1000L) - ind=where(fibermap.objc_type eq 3) - eflag[ind]=1L - - fmt='(i3.3, " ", i4.4, " ", f10.6, " ", f10.6, " ", f6.4, " ", A8, " ", i0, " ", f9.4, " ", f9.4)' - - outfile=outdir+string(plate,format='(i4.4)')+'-'+string(mjd,format='(i5.5)')+'_xypos.dat' - openw, lun, outfile, /get_lun - printf,lun, '# RMID FIBERID RA DEC ZFINAL SOURCE_TYPE EXTENDED? XFOCAL YFOCAL' - for i=0L, 999L do begin - printf, lun, format=fmt, i,fiber[i], fibermap[i].ra,fibermap[i].dec,fibermap[i].zfinal, $ - fibermap[i].sourcetype, eflag[i], plugmap[i].xfocal,plugmap[i].yfocal - endfor - close, lun - free_lun, lun - -end diff --git a/pro/rm/rm_output_qsofit.pro b/pro/rm/rm_output_qsofit.pro deleted file mode 100644 index 99bbcc167..000000000 --- a/pro/rm/rm_output_qsofit.pro +++ /dev/null @@ -1,43 +0,0 @@ -; Output an ASCII table of the qsofit results - -pro rm_output_qsofit,linename=linename - -file='/data3/quasar/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/more_lines/qso_prop-0000-56837.fits' - -qso=mrdfits(file,1) -tags=strtrim(tag_names(qso)) - -if ~keyword_set(linename) then $ - linename=['Halpha_br', 'Hbeta_br', 'HeII4687','OIII5007', $ - 'MgII', 'CIII', 'CIV','SiIV_OIV', 'Lya'] - - -if ~keyword_set(outfile) then outfile= $ - '/data3/quasar/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/more_lines/ascii_qsofit.dat' -fmt='(i3.3, " ",f6.4, 9(" ", f9.4," ",f9.4, " ", i5, " ", i5) )' -openw,lun,outfile,/get_lun -printf, lun, '# RMID z ', linename -printf, lun, '# line [wave, wave_err, FWHM, FWHM_err]' - -nline=n_elements(linename) -for iobj=0L, n_elements(qso) - 1 do begin - - output=dblarr(4*nline) - for i=0L, nline - 1 do begin - - ind_tag = where(tags eq strupcase(linename[i]) ) - ind_err = where(tags eq strupcase(linename[i]+'_ERR') ) - - output[i*4:i*4+3] = [ (qso[iobj].(ind_tag))[0], (qso[iobj].(ind_err))[0], $ - (qso[iobj].(ind_tag))[1], (qso[iobj].(ind_err))[1] ] - - endfor - printf, lun, format=fmt, qso[iobj].rm_ID, qso[iobj].z, output - -endfor - - -close,lun -free_lun, lun - -end diff --git a/pro/rm/rm_output_spec_obs.pro b/pro/rm/rm_output_spec_obs.pro deleted file mode 100644 index 8fffbf1b7..000000000 --- a/pro/rm/rm_output_spec_obs.pro +++ /dev/null @@ -1,30 +0,0 @@ -; Output the mean mjd and # of coadded spectra in each epoch - -pro rm_output_spec_obs, result=result - - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - plate=fibermap[0].plate & mjd=fibermap[0].mjd - ind=where(plate gt 0, nnn) - plate=plate[ind] & mjd=mjd[ind] - - result=replicate({plate:0L,mjd:0L,beg_mjd:0L, end_mjd:0L, mean_mjd:0.D,ncoadd:0L, platesn2:0.D, $ - seeing20:0., seeing50:0., seeing80:0., airmass:0.}, nnn) - result.plate=plate & result.mjd=mjd - - for i=0, nnn - 1 do begin - rm_expinfo, plate[i], mjd[i], expinfo=expinfo, mean_mjd=mean_mjd, /diet - coadd=expinfo.coadded[0,*] - tt=where(coadd eq 1, ncoadd) - print, plate[i], mjd[i], mean_mjd, ' Ncoadd='+string(ncoadd,format='(i2)'), $ - ' platesn2=', string(expinfo[0].platesn2,format='(f4.1)'), ' seeing50=', expinfo[0].seeing50 - result[i].mean_mjd=mean_mjd & result[i].ncoadd=ncoadd - result[i].platesn2=expinfo[0].platesn2 & result[i].seeing50=expinfo[0].seeing50 - result[i].seeing20=expinfo[0].seeing20 & result[i].seeing80=expinfo[0].seeing80 - result[i].beg_mjd=floor(min((expinfo.mjd_beg)[0,tt])) - result[i].end_mjd=floor(max((expinfo.mjd_end)[0,tt])) - result[i].airmass=expinfo[0].plate_airmass - endfor - - -end diff --git a/pro/rm/rm_pca_decomp.pro b/pro/rm/rm_pca_decomp.pro deleted file mode 100644 index d4d2448f3..000000000 --- a/pro/rm/rm_pca_decomp.pro +++ /dev/null @@ -1,130 +0,0 @@ -;+ -; NAME: -; rm_pca_decomp -; -; PURPOSE: -; decompose quasar spectra to host+AGN using PCA templates -; -; INPUTS: -; wave_in -- input observed wavelength array [NPIX] -; flux_in -- input total flux array [NPIX] -; err_in -- input error array [NPIX] -; -; OPTIONAL INPUTS: -; z -- redshift -; ra,dec -- J2000 coordinates; required if /deredden -; qso_npca -- number of QSO eigenspectra used; default 10 -; gal_npca -- number of galaxy eigenspectra used; default 5 -; -; OUTPUTS: -; result -- output structure -;------------------------- - -pro rm_pca_decomp,wave_in,flux_in,err_in,z=z,ra=ra,dec=dec,deredden=deredden, $ - pca_lib=pca_lib,qso_npca=qso_npca,gal_npca=gal_npca, $ - result=result - - - ; common block of pca templates - common pca_data,wave_qso,pca_qso,wave_gal,pca_gal - if ~keyword_set(qso_npca) then qso_npca=10 - if ~keyword_set(gal_npca) then gal_npca=5 - - ; get default pca templates - if n_elements(wave_qso) eq 0 then begin - pca_file='/data1/quasar/yshen/Project/pca_decomp/Yip_pca_templates/qso_eigenspec_Yip2004_CZBIN1.fits' - ttt=mrdfits(pca_file,1) - wave_qso=ttt.wave - pca_qso=ttt.pca - endif - if n_elements(wave_gal) eq 0 then begin - pca_file='/data1/quasar/yshen/Project/pca_decomp/Yip_pca_templates/gal_eigenspec_Yip2004.fits' - ttt=mrdfits(pca_file,1) - wave_gal=ttt.wave - pca_gal=ttt.pca - endif - - ; process the input spectrum; - if n_elements(ra) eq 0 then ra=0. - if n_elements(dec) eq 0 then dec=0. - if keyword_set(deredden) then dereddening_spec,wave_in,flux_in,err=err_in $ - , ra=ra, dec=dec, dered_flux=flux, dered_err=err else begin - flux=flux_in & err=err_in - endelse - npix=n_elements(flux) - ivar=err*0 - ind=where(err gt 1d-6) - if ind[0] ne -1 then ivar[ind]=1./(err[ind])^2 - - if n_elements(z) eq 0 then z=0. - wave=wave_in/(1.D + z) - - ; setup output struct - result={wave:wave,flux_in:flux_in,err_in:err_in,flux:flux,err:err,ivar:ivar, z:z, $ - ra:ra, dec:dec, npca_qso:qso_npca, npca_gal:gal_npca, $ - acoeff_qso:dblarr(qso_npca), acoeff_gal:dblarr(gal_npca), $ - flux_recon:dblarr(npix), qso_recon:dblarr(npix), gal_recon:dblarr(npix), chi2:0.D, dof:0L, $ - f_H:0., f_H_5100:0.} - - ;++++++++++++++++++++++ - ; remap qso and gal eigenspec to the available wavelength - pca_use_qso = dblarr(npix, qso_npca) - for i=0L, qso_npca - 1 do begin - combine1fiber,alog10(wave_qso),pca_qso[*,i],newloglam=alog10(wave), $ - newflux=newflux - pca_use_qso[*,i] = newflux - endfor - pca_use_gal = dblarr(npix, gal_npca) - for i=0L, gal_npca - 1 do begin - combine1fiber,alog10(wave_gal),pca_gal[*,i],newloglam=alog10(wave), $ - newflux=newflux - pca_use_gal[*,i] = newflux - endfor - pca_use = [ [pca_use_qso], [pca_use_gal] ] - ;------------------------------- - - ;message, 'stop and diag' - - ; fit the spectrum in a chi^2 sense - ; make sure that the input wavelength does not exceed the range in the eigenspec - ; QSO PCA template in CZBIN1 has maxwave=7500A - maxwave=min([max(wave_qso),max(wave_gal)]) & minwave=max([min(wave_qso),min(wave_gal)]) - ind=where(wave le maxwave and wave ge minwave) - result=struct_addtags(result, {fit_ind:ind}) - - chi2 = computechi2( flux[ind], sqrt(ivar[ind]), pca_use[ind,*], $ - acoeff=acoeff, dof=dof, yfit=yfit) - - result.flux_recon[ind]=yfit - result.acoeff_qso=acoeff[0:qso_npca-1] - result.acoeff_gal=acoeff[qso_npca:*] - result.chi2=chi2 & result.dof=dof - result.qso_recon=result.acoeff_qso ## pca_use_qso - result.gal_recon=result.acoeff_gal ## pca_use_gal - - ; compute host fraction - ind=where(wave gt 4160. and wave lt 4210. and err gt 1d-6, nn) - if nn gt 10 then begin - f_gal = int_tabulated(wave[ind], result.gal_recon[ind], /double) - f_agn = int_tabulated(wave[ind], result.qso_recon[ind], /double) - if f_agn + f_gal gt 0 then result.f_H=f_gal/(f_agn + f_gal) - endif - ind=where(wave gt 5080. and wave lt 5130. and err gt 1d-6, nn) - if nn gt 10 then begin - f_gal = int_tabulated(wave[ind], result.gal_recon[ind], /double) - f_agn = int_tabulated(wave[ind], result.qso_recon[ind], /double) - if f_agn + f_gal gt 0 then result.f_H_5100=f_gal/(f_agn + f_gal) - endif - -end - - - - - - - - - - - diff --git a/pro/rm/rm_plot_LC.pro b/pro/rm/rm_plot_LC.pro deleted file mode 100644 index 244494a26..000000000 --- a/pro/rm/rm_plot_LC.pro +++ /dev/null @@ -1,275 +0,0 @@ -;+ -; NAME: -; rm_plot_LC_one -; -; PURPOSE: -; Plot light curves (continuum+line) for one target -; This is an old version to use my own fits, rather than PrepSpec lightcurves -; -; -; --------------------------------------------------------- -pro rm_plot_LC_one, rm_ID, topdir=topdir,LC_data=LC_data,tag=tag,mjdlist=mjdlist, $ - epoch_id=epoch_id, xrange=xrange, ccf_tau=ccf_tau, ccf_out=ccf_out,more_info=more_info, $ - vw_norm=vw_norm, sncut=sncut - - if n_elements(sncut) eq 0 then sncut=5. ; default SN cut to keep a LC point - - if not keyword_set(topdir) then $ - topdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/' - - ; readin the LC data - if not keyword_set(LC_data) then begin - rm_get_rms_prop,rm_ID,result=LC_data, /silent,epoch_id=epoch_id - endif - if not keyword_set(mjdlist) then begin - mjdlist = LC_data[0].mjd - endif - tagname = tag_names(LC_data) - if not keyword_set(xrange) then xrange=[56650,56850] - if not keyword_set(yrange) then yrange=[0.2,1.8] - - ; Determine the Van Groningen & Wanders scaling if OIII is covered - ind=where(strmatch(tagname, strupcase('OIII*') )) - ngood_OIII=LC_data.(ind[2]) - LC_arr = LC_data.(ind[3]) - LC_err = LC_data.(ind[4]) - goodflag=LC_data.(ind[5]) - nepoch = n_elements(LC_arr) - vw_scaling = dblarr(nepoch) + 1. - if ngood_OIII gt 0 and keyword_set(vw_norm) then begin - ; find the best epoch as the reference epoch - ind_good = where(goodflag eq 1) - minsnr = min(LC_err[ind_good], ind_best) ; error in dex - if minsnr lt 0.2 then begin - ref_ep = epoch_id[ind_good[ind_best]] - vw_scaling=rm_vw_fluxing_obj(rm_ID,ref_ep=ref_ep,epoch_id=epoch_id) - endif - endif - - !P.multi = [0,1,3] - charsize=2.5 & ticklen=0.05 - ; plot continuum and [OIII] light curves, if available - pos = [0.11, 0.7, 0.95, 0.95] - name=['OIII','L1350','L1700','L3000','L5100'] - meanmjd = [] - colors = cgcolor(['opposite','green','red','cyan','magenta']) - psyms = [4,5,9,15,16] - if not keyword_set(tag) then tag='' - title='RM_ID='+string(rm_ID,format='(i0)') + ' ' + tag - plot,[0],[0],xrange=xrange,yrange=yrange,xtitle='MJD',ytitle='Relative Flux', $ - title=title, pos=pos, charsize=charsize,xticklen=ticklen,xtickformat='(i0)' - ypos=pos[3] - 0.02 - xpos1= pos[2]-0.8 - xyouts, xpos1,pos[3]-0.03,/norm,'RMS:',charsize=1 - for i=0L, n_elements(name) - 1 do begin - ind = where(strmatch(tagname, strupcase(name[i])+'*') ) - ngood = LC_data.(ind[2]) - LC_arr = LC_data.(ind[3]) - LC_err = LC_data.(ind[4]) - goodflag = LC_data.(ind[5]) - if ngood gt 0 then begin - ;LC_rms = LC_data.(ind[0]) - ;ind_good = where(LC_arr gt 0 and LC_err gt 0) - ind_good = where(goodflag eq 1) - LC_arr = 10.D^LC_arr[ind_good]*vw_scaling[ind_good] - LC_err = LC_err[ind_good] ; NB, err in dex - mjd_plot = mjdlist[ind_good] - mean_flux = mean(LC_arr) - LC_rms = stddev(LC_arr)/mean_flux - LC_err = LC_err*alog(10.D)*LC_arr/mean_flux ; - LC_arr = LC_arr/mean_flux ; flux relative to the mean flux over the period - oploterror,mjd_plot,LC_arr,LC_err,psym=symcat(psyms[i]),color=colors[i] - legend,pos=[pos[2]-0.18,ypos],name[i],/norm,psym=symcat(psyms[i]),color=colors[i],$ - textcolor=colors[i],box=0,charsize=1.2 - xpos1=xpos1+0.07 - xyouts, xpos1, pos[3]-0.03,/norm,string(LC_RMS,format='(f0.2)'),charsize=1, $ - color=colors[i] - ypos=ypos-0.02 - endif - endfor - - ; plot the line LCs if available - pos = [0.11,0.39, 0.95,0.64] - name=['Halpha','Hbeta','MgII','CIII','CIV'] - plot,[0],[0],xrange=xrange,yrange=yrange,xtitle='MJD',ytitle='Relative Flux', $ - pos=pos,charsize=charsize,xticklen=ticklen,xtickformat='(i0)' - ypos=pos[3] - 0.02 - xpos1= pos[2]-0.8 - xyouts, xpos1,pos[3]-0.03,/norm,'RMS:',charsize=1 - for i=0L, n_elements(name) - 1 do begin - ind = where(strmatch(tagname, strupcase(name[i])+'*') ) - ngood = LC_data.(ind[2]) - LC_arr = LC_data.(ind[3]) - LC_err = LC_data.(ind[4]) - goodflag = LC_data.(ind[5]) - if ngood gt 0 then begin - ;LC_rms = LC_data.(ind[0]) - ;ind_good = where(LC_arr gt 0 and LC_err gt 0) - ind_good = where(goodflag eq 1) - LC_arr = 10.D^LC_arr[ind_good]*vw_scaling[ind_good] - LC_err = LC_err[ind_good] ; NB, err in dex - mjd_plot = mjdlist[ind_good] - mean_flux = mean(LC_arr) - LC_rms = stddev(LC_arr)/mean_flux - LC_err = LC_err*alog(10.D)*LC_arr/mean_flux ; - LC_arr = LC_arr/mean_flux ; flux relative to the mean flux over the period - oploterror,mjd_plot,LC_arr,LC_err,psym=symcat(psyms[i]),color=colors[i] - legend,pos=[pos[2]-0.18,ypos],name[i],/norm,psym=symcat(psyms[i]),color=colors[i],$ - textcolor=colors[i],box=0,charsize=1.2 - xpos1=xpos1+0.07 - xyouts, xpos1,pos[3]-0.03,/norm,string(LC_RMS,format='(f0.2)'),charsize=1, $ - color=colors[i] - ypos=ypos-0.02 - endif - endfor - - ; plot the CCF - pos = [0.11,0.08,0.95,0.33] - plot,[0],[0],xrange=[-20,100],yrange=[-0.5,1],xtitle='Time Delay (Days)',ytitle='CCF', $ - pos=pos,charsize=charsize,xticklen=ticklen - ypos=pos[3] - 0.03 - - ; generate the time delay array (in observed days) in computing the ccf - if not keyword_set(ccf_tau) then begin - dt = 2. ; days - ccf_tau = -10. + (findgen(150./dt + 5L)*dt) - endif - - line=['Halpha','Hbeta','MgII','CIII','CIV'] - ; try to pair the line LC with the continuum LC with the shortest wavelength possible - conti=['L1350','L1700','L3000','L5100'] - - ccf_out = dblarr(n_elements(ccf_tau), n_elements(line)) - for i=0L, n_elements(line) - 1L do begin - ind = where(strmatch(tagname, strupcase(line[i])+'*') ) - ngood = LC_data.(ind[2]) - LC_arr = LC_data.(ind[3]) - LC_err = LC_data.(ind[4]) - goodflag = LC_data.(ind[5]) - if ngood gt 0 then begin - ;ind_good = where(LC_arr gt 0 and LC_err gt 0) - ind_good = where(goodflag eq 1) - LC_arr = 10.D^LC_arr[ind_good]*vw_scaling[ind_good] - LC_err = LC_err[ind_good] ; NB, err in dex - LC_err = LC_err*alog(10.D)*LC_arr - mjd_good = mjdlist[ind_good] - ; remove noisy measurements? - ind_goodsn = where(LC_arr/LC_err gt sncut) ; 20% flux measurements, which is too precise - cadence_id = mjd_good[ind_goodsn] - lc_line=LC_arr[ind_goodsn] & err1=LC_err[ind_goodsn] - - ; get continuum LC, starting from the shortest wavelength - flag0=0 & iconti=0 - while flag0 eq 0 do begin - ind = where(strmatch(tagname, strupcase(conti[iconti])+'*') ) - ngood = LC_data.(ind[2]) - LC_arr = LC_data.(ind[3]) - LC_err = LC_data.(ind[4]) - goodflag = LC_data.(ind[5]) - if ngood gt 0 then begin - ;ind_good = where(LC_arr gt 0 and LC_err gt 0) - ind_good = where(goodflag eq 1) - LC_arr = 10.D^LC_arr[ind_good]*vw_scaling[ind_good] - LC_err = LC_err[ind_good] ; NB, err in dex - LC_err = LC_err*alog(10.D)*LC_arr - mjd_good = mjdlist[ind_good] - ; remove noisy measurements? - ind_goodsn = where(LC_arr/LC_err gt sncut) ; 20% flux measurements, which is too precise - cadence_id_c = mjd_good[ind_goodsn] - lc_conti=LC_arr[ind_goodsn] & err2=LC_err[ind_goodsn] - ; we have found the continuum LC - flag0=1L - endif - iconti=iconti+1 - endwhile - - ; ccf[*,0] is based on the original data - ccf = xcorr_interp(cadence_id,lc_line,cadence_id_c,lc_conti,tau=ccf_tau,ndata=ndata $ - , /nogap,err1=err1,err2=err2, /bootstrap,cent_tau=cent_tau, peak_tau=peak_tau $ - , mirror=mirror) - - rm_dcf,cadence_id_c,lc_conti,cadence_id,lc_line,err1=median(err2),err2=median(err1),$ - DCF=DCF,eDCF=eDCF,tau_grid=tau_grid - - oplot, ccf_tau, ccf[*,0],color=colors[i] ; psym=symcat(psyms[i]) - ind1 = where(eDCF gt 0) - ; only plot the Hbeta DCF - if ind1[0] ne -1 then begin - oploterror, tau_grid[ind1],dcf[ind1],edcf[ind1],psym=symcat(psyms[i]),color=colors[i] - ;print, dcf[ind1] - endif - tau_mea = [cent_tau[0], quantile_1d(0.16, cent_tau), quantile_1d(0.84, cent_tau) ] - for jj=0,2 do xyouts, pos[2]-0.18+jj*0.03,ypos, /norm, color=colors[i], $ - string(tau_mea[jj],format='(i0)'),charsize=1 - ypos=ypos-0.02 - ccf_out[*, i] = ccf[*,0] - ;print, line[i],ccf_tau, ccf[*,0] - ;pause - ; - endif - endfor - xyouts, pos[2]-0.5,pos[3]-0.03,/norm, textoidl('\tau_{exp}=')+string(more_info.tau_obs,format='(i0)'),charsize=1 - xyouts, pos[2]-0.8,pos[3]-0.03,/norm, textoidl('logL5100=')+string(more_info.logL5100,format='(f0.2)'),charsize=1 - xyouts, pos[2]-0.8,pos[3]-0.05,/norm, textoidl('i_{psf}=')+string(more_info.imag,format='(f0.2)'),charsize=1 - - !P.multi = 0 - - splog, 'Finished object RM_ID=', RM_ID -end - -;---------------------- -pro rm_plot_LC, range=range, vw_norm=vw_norm, sncut=sncut, epoch_id=epoch_id, outtag=outtag - - forward_function rm_qsofit - ; - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - ; keep only RM targets - target=fibermap[0:848] - - ; set-up the epochs of the LC - if n_elements(epoch_id) eq 0 then epoch_id=indgen(18) - - ; set up tags for the figfile and outfile - if not keyword_set(outtag) then outtag='maxep_'+string(max(epoch_id+1),format='(i2.2)') - - ; get all the LC data - rm_get_rms_prop,result=LC_data_all, /silent,epoch_id=epoch_id - - ind=sort(target.zfinal) - if keyword_set(range) then ind=ind[range[0]:range[1]] - nobj=n_elements(ind) - - ; read in more target information - file='/data3/quasar/yshen/work/composite_lag/target_info.fits' - info=mrdfits(file,1) - - figfile='/data3/quasar/yshen/work/composite_lag/LC_all_' + outtag + '.ps' - if keyword_set(vw_norm) then figfile='/data3/quasar/yshen/work/composite_lag/LC_all_vw_norm_' + outtag + '.ps' - ;message, 'stop' - begplot,name=figfile,/color,/cmyk ; /encap - !P.multi = [0,1,3] - - ; setup the structure to store all the CCF results - dt = 2. ; days - ccf_tau = -10. + (findgen(150./dt + 5L)*dt) - ccf_struct = {RM_ID:-1L, ccf_tau:ccf_tau, ccf:dblarr(n_elements(ccf_tau), 5)} - ccf_struct = replicate(ccf_struct, nobj) - - for i=0L, nobj - 1L do begin - rm_ID = ind[i] - tag = ', z='+string(target[rm_ID].zfinal,format='(f5.3)') - rm_plot_LC_one, rm_ID, LC_data=LC_data_all[rm_ID], vw_norm=vw_norm, $ - ccf_tau=ccf_tau, ccf_out=ccf_out, tag=tag, more_info=info[rm_ID],epoch_id=epoch_id,sncut=sncut - ccf_struct[i].RM_ID = rm_ID - ccf_struct[i].ccf = ccf_out - endfor - - !P.multi=0 - endplot - - outfile='/data3/quasar/yshen/work/composite_lag/ccf_data_' + outtag + '.fits' - if keyword_set(vw_norm) then outfile='/data3/quasar/yshen/work/composite_lag/ccf_data_vw_norm_' + outtag + '.fits' - mwrfits, ccf_struct, outfile, /create - -end diff --git a/pro/rm/rm_plot_lag.pro b/pro/rm/rm_plot_lag.pro deleted file mode 100644 index dd3b0d246..000000000 --- a/pro/rm/rm_plot_lag.pro +++ /dev/null @@ -1,456 +0,0 @@ -; Plot the lag for a list of objects -; ep_rej is the epoch number to be rejected, i.e., ep_rej=7 is the lowest s/n epoch - -pro rm_plot_lag, rmid, topdir=topdir,dcf=dcf - -if ~keyword_Set(topdir) then topdir='/data3/quasar/yshen/work/lags/prepspec/ACBFJ/' - -; rmid=[] -; call rm_plot_lag_one one-by-one - -file1=topdir+'/output/lc_all' ;'/data3/quasar/yshen/work/lags/prepspec/output/paper/lc_all' -openw,lun1,file1,/get_lun -printf,lun1,'#RMID line redshift MJD-50000 f_conti e_conti f_line e_line bad?' -file2=topdir+'/output/tau_all' ; '/data3/quasar/yshen/work/lags/prepspec/output/paper/tau_all' -openw,lun2,file2,/get_lun -printf, lun2, '#RMID line redshift tau_rest peak_sig sig_rms sig_mean fwhm_rms fwhm_mean logVP' - -rm_plot_lag_one2,775,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,tau_input=[19.18,4.34,-12.79]*(1.+ 0.1725) -rm_plot_lag_one2,769,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7],tau_input=[21.54,5.80,-7.67]*(1. + 0.1871) -rm_plot_lag_one2,840,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,tau_input=[10.93, 20.93,-6.57]*(1. + 0.2439) - -;rm_plot_lag_one2,768,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,vrange=[-15000.,10000.] ; Hb blends with HeII, but it is a good lag detection -rm_plot_lag_one2,272,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf, ep_rej=[7],tau_input=[21.91,7.90,-10.36]*(1. + 0.2628) -rm_plot_lag_one2,320,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf, tau_input=[29.58,2.50,-15.72]*(1. + 0.2647) -;rm_plot_lag_one2,377,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7] ; hb marginally detected -;rm_plot_lag_one2,160,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7],yrange_ccf=[0.5,1], tau_input=[10.08,11.33,-16.18]*(1. + 0.3593) -rm_plot_lag_one2,789,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7],tau_input=[17.15,2.71,-2.73]*(1. + 0.4253) - -rm_plot_lag_one2,191,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,tau_input=[23.25,2.72,-11.16]*(1. + 0.4418) -;rm_plot_lag_one2,101,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf ; good -rm_plot_lag_one2,101,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,tau_input=[36.68,10.40,-4.76]*(1. + 0.4581) -;rm_plot_lag_one2,229,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf -rm_plot_lag_one2,229,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,tau_input=[32.33,12.93,-5.31]*(1. + 0.4696) -;rm_plot_lag_one2,371,line='ha',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf -rm_plot_lag_one2,645,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7],yrange_ccf=[0.6,1], tau_input=[14.22,6.55,-8.07]*(1. + 0.4738) - -rm_plot_lag_one2,767,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7],tau_input=[25.09,2.00,-2.59]*(1. + 0.5266) - -rm_plot_lag_one2,694,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf, tau_input=[14.14,12.93,-9.46]*(1. + 0.5324) -;rm_plot_lag_one2,301,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7] -;rm_plot_lag_one2,519,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[3,7] ; good, HeII/Hbeta blends in the rms model -rm_plot_lag_one2,267,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[3,7],tau_input=[18.57,7.15,-3.80]*(1. + 0.5872) -;rm_plot_lag_one2,457,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[3,7] ; OK -rm_plot_lag_one2,457,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[3,7],tau_input=[29.07,3.64,-8.78]*(1. + 0.6037) - -;rm_plot_lag_one2,634,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf ; var hb barely detected -;rm_plot_lag_one2,551,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7] ; var mgii barely detected -;rm_plot_lag_one2,632,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7] ; rising red wing -;rm_plot_lag_one2,510,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7] -;rm_plot_lag_one2,589,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[3,7] -rm_plot_lag_one2,589,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[3,7],tau_input=[34.05,6.72,-12.03]*(1. + 0.7510) -;rm_plot_lag_one2,762,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf,ep_rej=[7] -;;rm_plot_lag_one,797,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,ep_rej=[7,29,30,31,32] -;rm_plot_lag_one2,272,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf -;rm_plot_lag_one2,320,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf -;rm_plot_lag_one2,252,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,ep_rej=[7],dcf=dcf -;rm_plot_lag_one2,377,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,ep_rej=[7],dcf=dcf -;rm_plot_lag_one2,160,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,ep_rej=[7],dcf=dcf -;rm_plot_lag_one2,101,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf -;rm_plot_lag_one2,518,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf -;rm_plot_lag_one2,229,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf -;rm_plot_lag_one2,371,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf -;rm_plot_lag_one2,767,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,ep_rej=[7],dcf=dcf -;rm_plot_lag_one2,694,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,dcf=dcf -;rm_plot_lag_one2,519,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,ep_rej=[3,7],dcf=dcf -;rm_plot_lag_one2,457,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,ep_rej=[7],dcf=dcf -;rm_plot_lag_one2,551,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,ep_rej=[7],dcf=dcf -;rm_plot_lag_one2,762,line='hb',lun_tau=lun2,lun_lc=lun1,topdir=topdir,ep_rej=[7],dcf=dcf -;rm_plot_lag_one2,140,line='mg2',lun_tau=lun2,lun_lc=lun1,topdir=topdir,ep_rej=[7],dcf=dcf - -close,lun1,lun2 -free_lun, lun1,lun2 - -end - -pro rm_plot_lag_one,rmid,topdir=topdir,ep_rej=ep_rej,line=line,conti=conti, $ - dt=dt,ccf_tau=ccf_tau,mirror=mirror,xrange_ccf=xrange_ccf,yrange_ccf=yrange_ccf, $ - dcf=dcf, lun_tau=lun_tau, lun_lc=lun_lc - - if ~keyword_set(topdir) then topdir='/data3/quasar/yshen/work/lags/prepspec/' - if ~keyword_set(conti) then conti='c5100' - if ~keyword_set(line) then line='hb' - - common rm_info_block, rm_info - if n_elements(rm_info) eq 0 then begin - target_file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - rm_info=mrdfits(target_file,1,/silent) - endif - - rmtag='rm'+string(rmid,format='(i3.3)') - ; get continuum LC - lcfile=topdir+rmtag+'/'+rmtag+'_'+conti+'.dat' - readcol,lcfile,format='d,d,d',t_conti,f_conti,e_conti,/silent - nep_c=n_elements(t_conti) - ; get line LC - lcfile=topdir+rmtag+'/'+rmtag+'_'+line+'_t.dat' - readcol,lcfile,format='d,d,d',t_line,f_line,e_line,/silent - nep_l=n_elements(t_line) - ; get rms sigma - sigfile=topdir+rmtag+'/'+rmtag+'_vvblr.dat' - readcol,sigfile,format='d,x,x,x,d,d',wave_line,fwhm_rms_all, sig_rms_all,skip=1L - if line eq 'hb' then wave_s=4861.327 - if line eq 'mg2' then wave_s=2798.000 - ind_line=where(abs(wave_line - wave_s) le 1.) - sig_rms=sig_rms_all[ind_line] - - ; remove bad epoch if required - flag=lonarr(nep_c) - t_conti_all=t_conti & f_conti_all=f_conti & e_conti_all=e_conti - t_line_all=t_line & f_line_all=f_line & e_line_all=e_line - nep_c_all=n_elements(t_conti_all) - nep_l_all=n_elements(t_line_all) - if n_elements(ep_rej) ne 0 then begin - flag[ep_rej-1]=1L - ind=where(flag eq 0, complement=indd) - if indd[0] ne -1 then begin ; get the bad epochs - t_conti_bad=t_conti[indd] & f_conti_bad=f_conti[indd] & e_conti_bad=e_conti[indd] - t_line_bad=t_line[indd] & f_line_bad=f_line[indd] & e_line_bad=e_line[indd] - endif - t_conti=t_conti[ind] & f_conti=f_conti[ind] & e_conti=e_conti[ind] - t_line=t_line[ind] & f_line=f_line[ind] & e_line=e_line[ind] - nep_c=n_elements(t_conti) - nep_l=n_elements(t_line) - endif - - ; output the LCs - outdir=topdir+'output/' - if ~keyword_set(lun_lc) then begin - fmt='(f11.3, " ", e14.7, " ", e14.7, " ", i0)' - lcfile=outdir+rmtag+'_'+conti+'.dat' - openw,lun,lcfile,/get_lun - for i=0L,nep_c_all-1 do printf,lun,t_conti_all[i],f_conti_all[i],e_conti_all[i], $ - flag[i],format=fmt - close,lun - free_lun,lun - lcfile=outdir+rmtag+'_'+line+'.dat' - openw,lun,lcfile,/get_lun - for i=0L,nep_l_all-1 do printf,lun,t_line_all[i],f_line_all[i],e_line_all[i], $ - flag[i],format=fmt - close,lun - free_lun,lun - endif else begin - fmt='(i3.3, " ", f11.3, 2(" ", e14.7, " ", e14.7), " ", i0)' - for i=0L,nep_c_all-1 do printf,lun_lc,rmid,t_conti_all[i],f_conti_all[i],e_conti_all[i],$ - f_line_all[i],e_line_all[i],flag[i],format=fmt - endelse - - ; now compute the CCF - if ~keyword_set(dt) then dt=2. - if ~keyword_set(ccf_tau) then ccf_tau = -10. + (findgen(70./dt + 5L)*dt) - ; run xcorr_interp once to get the cent_tau and peak sig - ccf0 = xcorr_interp(t_line,f_line,t_conti,f_conti,tau=ccf_tau,ndata=ndata0 $ - , /nogap,cent_tau=cent_tau0, peak_tau=peak_tau0 $ - , mirror=mirror,peak_sig=peak_sig) - ; run again to get error estimates - ccf = xcorr_interp(t_line,f_line,t_conti,f_conti,tau=ccf_tau,ndata=ndata $ - , /nogap,err1=e_line,err2=e_conti, /bootstrap,cent_tau=cent_tau, peak_tau=peak_tau $ - , mirror=mirror,ntrial=500L) - - ; now generate a plot - ; the map between line names and what to plot - line1=['blr','ha','hb','mg2','he2'] - figfile=outdir+rmtag+'_'+line+'_lag.eps' - charsize=1.5 & ticklen=0.05 - begplot,name=figfile,/cmyk,/encap,xsize=12.5, ysize=4 - line2=textoidl(['blr','H\alpha', 'H\beta', 'MgII', 'HeII']) - indx_line=where(line1 eq line) - pos11=[0.08,0.55,0.49,0.91] & pos2=[0.57, 0.16, 0.98, 0.91] - pos12=[0.08,0.16,0.49,0.52] - xrange=[min(t_conti),max(t_conti)] - yrange=[min(f_conti),max(f_conti)] - tag='J'+radec2sdssname(rm_info[rmid].ra,rm_info[rmid].dec) - plot,[0],[0],xrange=xrange,yrange=yrange, $ - title=tag, pos=pos11, charsize=charsize,xticklen=ticklen, $ - xtickname=replicate(' ', 6L) - oploterror,t_conti,f_conti,e_conti,psym=symcat(9) - if n_elements(t_conti_bad) ne 0 then oploterror,[t_conti_bad],[f_conti_bad],[e_conti_bad],psym=symcat(9), $ - color=cgcolor('red'),errcolor=cgcolor('red') - xyouts, pos11[2] + 0.01, pos11[3] - 0.5*(pos11[3]-pos11[1]), conti, /norm,charsize=charsize, $ - orien=90, align=0.5 - yrange=[min(f_line),max(f_line)] - plot,[0],[0],xrange=xrange,yrange=yrange,xtitle='MJD-50000 [days]', $ - pos=pos12,charsize=charsize,xticklen=ticklen,xtickformat='(i0)',/noerase - oploterror,t_line,f_line,e_line,psym=symcat(9),color=cgcolor('blue') - if n_elements(t_line_bad) ne 0 then oploterror,[t_line_bad],[f_line_bad],[e_line_bad],psym=symcat(9), $ - color=cgcolor('red'),errcolor=cgcolor('red') - xyouts, pos12[2] + 0.01, pos12[3] - 0.5*(pos12[3]-pos12[1]), line2[indx_line], /norm,charsize=charsize,color=cgcolor('blue'), orien=90, align=0.5 - xyouts, 0.02, 0.5, 'Relative Flux [arbitrary units]',/norm,orientation=90,align=0.5,charsize=charsize - ; now plot the CCF - tag='RMID='+string(rmid,format='(i3.3)') + ', z='+string(rm_info[rmid].zfinal,format='(f6.4)') - if ~keyword_set(xrange_ccf) then xrange_ccf=[-20,80] - if ~keyword_set(yrange_ccf) then yrange_ccf=[-0.5,1] - plot,[0],[0],xrange=xrange_ccf,yrange=yrange_ccf,xtitle='Observed Time Delay [days]',ytitle='CCF', $ - pos=pos2,charsize=charsize,xticklen=ticklen*0.5,title=tag,/noerase - oplot, ccf_tau, ccf0 - tau_mea = [cent_tau[0], quantile_1d(0.16, cent_tau), quantile_1d(0.84, cent_tau) ] - oplot, [tau_mea[0],tau_mea[0]],yrange,color=cgcolor('blue') - oplot, [tau_mea[1],tau_mea[1]],yrange,color=cgcolor('blue'),line=2 - oplot, [tau_mea[2],tau_mea[2]],yrange,color=cgcolor('blue'),line=2 - xyouts, pos2[0] + 0.02, pos2[3] - 0.08, /norm, 'peak sig='+string(peak_sig,format='(f0.3)'),charsize=charsize - - print, tau_mea - fmt='(i3.3, " ", f6.4, " ", 3(f5.1, " "), f0.3, " ", i0, " ", f6.3)' - tau_rest=tau_mea/(1. + rm_info[rmid].zfinal) - tau_rest[1]=tau_rest[1]-tau_rest[0] - tau_rest[2]=tau_rest[2]-tau_rest[0] - ; compute a virial product (VP) - logvp=alog10(3d10*tau_rest[0]*24.*3600.*(sig_rms*1d5)^2/6.6742d-8/1.989d33) - if keyword_set(lun_tau) then printf, lun_tau,rmid,rm_info[rmid].zfinal, $ - tau_rest, peak_sig, round(sig_rms),logvp, format=fmt - endplot - - ; now estimate the FWHM/dispersion from the rms broad-line spectra - -end - -; this is a slightly different version, which outputs 3 vertical panels of plots -pro rm_plot_lag_one2,rmid,topdir=topdir,ep_rej=ep_rej,line=line,conti=conti, $ - dt=dt,ccf_tau=ccf_tau,mirror=mirror,xrange_ccf=xrange_ccf,yrange_ccf=yrange_ccf, $ - dcf=dcf, lun_tau=lun_tau, lun_lc=lun_lc, vrange=vrange, wide=wide,tau_input=tau_input, $ - fl_err_min=fl_err_min,fc_err_min=fc_err_min, add_fl_const=add_fl_const, minerr=minerr - - if ~keyword_set(topdir) then topdir='/data3/quasar/yshen/work/lags/prepspec/' - if ~keyword_set(conti) then conti='c5100' - if ~keyword_set(line) then line='hb' - - - if n_elements(minerr) eq 0 then minerr=0.03 ; default is to inflate LC errors to 3% fractional - - if n_elements(wide) eq 0 then wide=1 - - common rm_info_block, rm_info - if n_elements(rm_info) eq 0 then begin - target_file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - rm_info=mrdfits(target_file,1,/silent) - endif - - rmtag='rm'+string(rmid,format='(i3.3)') - ; get continuum LC - lcfile=topdir+rmtag+'/'+rmtag+'_'+conti+'.dat' - readcol,lcfile,format='d,d,d',t_conti,f_conti,e_conti,/silent - nep_c=n_elements(t_conti) - ; get line LC - lcfile=topdir+rmtag+'/'+rmtag+'_'+line+'_t.dat' - readcol,lcfile,format='d,d,d',t_line,f_line,e_line,/silent - nep_l=n_elements(t_line) - ; get rms sigma - sigfile=topdir+rmtag+'/'+rmtag+'_vvblr.dat' - readcol,sigfile,format='d,d,x,d,d,d,d',wave_line,Jrms_all, fwhm_rms_all,efwhm_all, sig_rms_all, esig_all,skip=1L - if line eq 'hb' then wave_s=4862.68 - if line eq 'mg2' then wave_s=2798.75 - if line eq 'ha' then wave_s=6564.61 - if line eq 'he2_4686' then wave_s=4687.02 - ind_line=where(abs(wave_line - wave_s) le 1.) - if ind_line[0] ne -1 then sig_rms=sig_rms_all[ind_line[0]] else sig_rms=0 - if ind_line[0] ne -1 then esig_rms=esig_all[ind_line[1]] else esig_rms=-1 - if ind_line[0] ne -1 then fwhm_rms=fwhm_rms_all[ind_line[0]] else fwhm_rms=0 - if ind_line[0] ne -1 then efwhm_rms=efwhm_all[ind_line[1]] else efwhm_rms=-1 - if ind_line[0] ne -1 then Jrms=Jrms_all[ind_line[0]] else Jrms=-1 - - ; for avg spectrum - avgfile=topdir+rmtag+'/'+rmtag+'_vblr.dat' - readcol,avgfile,format='d,d,x,d,d,d,d',wave_line,Javg_all,fwhm_mean_all,efwhm_mean_all,sig_mean_all, esig_mean_all - ind_line=where(abs(wave_line - wave_s) le 1.) - if ind_line[0] ne -1 then Javg=Javg_all[ind_line[0]] else Javg=-1 - if ind_line[0] ne -1 then sig_mean=sig_mean_all[ind_line[0]] else sig_mean=0 - if ind_line[0] ne -1 then esig_mean=esig_mean_all[ind_line[1]] else esig_mean=-1 - if ind_line[0] ne -1 then fwhm_mean=fwhm_mean_all[ind_line[0]] else fwhm_mean=0 - if ind_line[0] ne -1 then efwhm_mean=efwhm_mean_all[ind_line[1]] else efwhm_mean=-1 - ; print, fwhm_mean, efwhm_mean - ; pause - - ; convert the line LC to real units, i.e., adding mean flux and scale the amplitude - ; in 1d-16 erg/s/cm2 - f_line = (Javg + Jrms * f_line)*1d16 - e_line = (Jrms * e_line)*1d16 - - ; remove bad epoch if required - flag=lonarr(nep_c) - t_conti_all=t_conti & f_conti_all=f_conti & e_conti_all=e_conti - t_line_all=t_line & f_line_all=f_line & e_line_all=e_line - nep_c_all=n_elements(t_conti_all) - nep_l_all=n_elements(t_line_all) - if n_elements(ep_rej) ne 0 then begin - flag[ep_rej-1]=1L - ind=where(flag eq 0, complement=indd) - if indd[0] ne -1 then begin ; get the bad epochs - t_conti_bad=t_conti[indd] & f_conti_bad=f_conti[indd] & e_conti_bad=e_conti[indd] - t_line_bad=t_line[indd] & f_line_bad=f_line[indd] & e_line_bad=e_line[indd] - endif - t_conti=t_conti[ind] & f_conti=f_conti[ind] & e_conti=e_conti[ind] - t_line=t_line[ind] & f_line=f_line[ind] & e_line=e_line[ind] - nep_c=n_elements(t_conti) - nep_l=n_elements(t_line) - endif - ;if keyword_set(add_fl_const) then f_line=f_line+10.*stddev(f_line) ; assuming line variability is 10% of mean flux - if keyword_set(minerr) then begin ; using inflated error on the LC, i.e, minerr=0.03 of the median error - e_conti = e_conti > (minerr*median(f_conti) ) - if n_elements(ep_rej) ne 0 then e_conti_bad = e_conti_bad > (minerr*median(f_conti) ) - ;e_conti_all = e_conti_all > (minerr*median(f_conti) ) ; keep the original LC errors - e_line = e_line > (minerr*median(f_line) ) - if n_elements(ep_rej) ne 0 then e_line_bad = e_line_bad > (minerr*median(f_line) ) - ;e_line_all = e_line_all > (minerr*median(f_line) ) ; keep the original LC errors - endif - - - ; output the LCs - outdir=topdir+'output/' - if ~keyword_set(lun_lc) then begin - fmt='(f11.3, " ", e14.7, " ", e14.7, " ", i0)' - lcfile=outdir+rmtag+'_'+conti+'.dat' - openw,lun,lcfile,/get_lun - for i=0L,nep_c_all-1 do printf,lun,t_conti_all[i],f_conti_all[i],e_conti_all[i], $ - flag[i],format=fmt - close,lun - free_lun,lun - lcfile=outdir+rmtag+'_'+line+'.dat' - openw,lun,lcfile,/get_lun - for i=0L,nep_l_all-1 do printf,lun,t_line_all[i],f_line_all[i],e_line_all[i], $ - flag[i],format=fmt - close,lun - free_lun,lun - endif else begin - fmt='(i3.3, " ", a8, " ", f6.4, " ", f11.3, 2(" ", e14.7, " ", e14.7), " ", i0)' - for i=0L,nep_c_all-1 do printf,lun_lc,rmid, line, rm_info[rmid].zfinal, t_conti_all[i],f_conti_all[i],e_conti_all[i],$ - f_line_all[i],e_line_all[i],flag[i],format=fmt - endelse - - ; now compute the CCF - if ~keyword_set(dt) then dt=2. - if ~keyword_set(ccf_tau) then ccf_tau = -20. + (findgen(100./dt + 6L)*dt) - ccf_tau_wide=-90. + (findgen(160./dt + 11L)*dt) - ; -70. + (findgen(140./dt + 5L)*dt) ;; -10. + (findgen(70./dt + 5L)*dt) - ; run xcorr_interp once to get the cent_tau and peak sig - ccf0 = xcorr_interp(t_line,f_line,t_conti,f_conti,tau=ccf_tau,ndata=ndata0 $ - , /nogap,cent_tau=cent_tau0, peak_tau=peak_tau0 $ - , mirror=mirror,peak_sig=peak_sig) - ccf0_wide=xcorr_interp(t_line,f_line,t_conti,f_conti,tau=ccf_tau_wide $ - , /nogap, mirror=mirror) - acf0_wide=xcorr_interp(t_conti,f_conti,t_conti,f_conti,tau=ccf_tau_wide $ - , /nogap, /mirror) - ; run again to get error estimates - if ~keyword_set(tau_input) then begin ; - ccf = xcorr_interp(t_line,f_line,t_conti,f_conti,tau=ccf_tau,ndata=ndata $ - , /nogap,err1=e_line,err2=e_conti, /bootstrap,cent_tau=cent_tau, peak_tau=peak_tau $ - , mirror=mirror,ntrial=5000L,f1_err_min=fl_err_min,f2_err_min=fc_err_min) - endif - - ; now generate a plot - ; the map between line names and what to plot - line1=['blr','ha','hb','mg2','he2_4686'] - figfile=outdir+rmtag+'_'+line+'_lag.eps' - charsize=1.5 & ticklen=0.08 - begplot,name=figfile,/cmyk ;,/encap ,xsize=12.5, ysize=4 - line2=textoidl(['blr','H\alpha', 'H\beta', 'MgII', 'HeII']) - indx_line=where(line1 eq line) - ;pos11=[0.08,0.55,0.49,0.91] & pos2=[0.57, 0.16, 0.98, 0.91] - ;pos12=[0.08,0.16,0.49,0.52] - ;pos1 = [0.1, 0.70, 0.97, 0.965] - pos11 = [0.13, 0.84, 0.96, 0.96] - pos12 = [0.13, 0.71, 0.96, 0.83] - pos2 = [0.13, 0.39, 0.96, 0.63] - pos3 = [0.13, 0.07, 0.96, 0.31] - - xrange=[min(t_conti),max(t_conti)] - yrange=[min(f_conti),max(f_conti)] - symsize=0.6 - - tag='J'+radec2sdssname(rm_info[rmid].ra,rm_info[rmid].dec) + $ - ', RMID='+string(rmid,format='(i3.3)') + ', z='+string(rm_info[rmid].zfinal,format='(f6.4)') - plot,[0],[0],xrange=xrange,yrange=yrange, $ - title=tag, pos=pos11, charsize=charsize,xticklen=ticklen, $ - xtickname=replicate(' ', 6L), yticks=3, yminor=2 - oplot, [6650,6850], [median(f_conti), median(f_conti) ],line=1 - oploterror,t_conti,f_conti,e_conti,psym=symcat(9), symsize=symsize - if n_elements(t_conti_bad) ne 0 then oploterror,[t_conti_bad],[f_conti_bad],[e_conti_bad],psym=symcat(9), $ - color=cgcolor('red'),errcolor=cgcolor('red'), symsize=symsize - ;xyouts, pos11[2] - 0.11, pos11[1] + 0.02, conti, /norm,charsize=1.5 - xyouts, pos11[2] + 0.03, pos11[3] - 0.5*(pos11[3]-pos11[1]), conti, /norm,charsize=1.5, $ - orien=90, align=0.5 - yrange=[min(f_line),max(f_line)] - plot,[0],[0],xrange=xrange,yrange=yrange,xtitle='MJD-50000 [days]', $ - pos=pos12,charsize=charsize,xticklen=ticklen,xtickformat='(i0)',/noerase,yticks=3, yminor=2 - oplot, [6650,6850], [median(f_line),median(f_line)],line=1 - oploterror,t_line,f_line,e_line,psym=symcat(9),color=cgcolor('blue'),symsize=symsize - if n_elements(t_line_bad) ne 0 then oploterror,[t_line_bad],[f_line_bad],[e_line_bad],psym=symcat(9), $ - color=cgcolor('red'),errcolor=cgcolor('red'), symsize=symsize - ;xyouts, pos12[2] - 0.11, pos12[1] + 0.02, line2[indx_line], /norm,charsize=1.5,color=cgcolor('blue') - xyouts, pos12[2] + 0.03, pos12[3] - 0.5*(pos12[3]-pos12[1]), line2[indx_line], /norm,charsize=1.5,color=cgcolor('blue'), orien=90, align=0.5 - xyouts, 0.04, 0.8325, 'Relative Flux [arbitrary units]',/norm,orientation=90,align=0.5,charsize=1.5 - ; now plot the CCF - ;tag='RMID='+string(rmid,format='(i3.3)') + ', z='+string(rm_info[rmid].zfinal,format='(f6.4)') - if ~keyword_set(xrange_ccf) then xrange_ccf=[-20,90] - if keyword_set(wide) then xrange_ccf=[-90,90] - if ~keyword_set(yrange_ccf) then yrange_ccf=[-0.5,1] - plot,[0],[0],xrange=xrange_ccf,yrange=yrange_ccf,xtitle='Observed Time Delay [days]',ytitle='CCF', $ - pos=pos2,charsize=charsize,xticklen=ticklen*0.5,/noerase,/xsty - oplot, xrange_ccf, [0,0],line=1 - oplot, [0,0], yrange_ccf, line=1 - if ~keyword_set(wide) then oplot, ccf_tau, ccf0 else begin - oplot, ccf_tau_wide, ccf0_wide - oplot, ccf_tau_wide, acf0_wide, line=1, color=cgcolor('red') - xyouts,0.45,pos2[3]-0.03,/norm, 'ACF',color=cgcolor('red') - endelse - if ~keyword_set(tau_input) then begin - tau_mea = [cent_tau[0], quantile_1d(0.16, cent_tau), quantile_1d(0.84, cent_tau) ] - endif else begin - ; make sure the lower error is before the upper error - if tau_input[1] gt tau_input[2] then tau_mea=[tau_input[0], tau_input[0]+tau_input[2], tau_input[0]+tau_input[1]] else tau_mea=[tau_input[0], tau_input[0]+tau_input[1], tau_input[0]+tau_input[2]] - endelse - oplot, [tau_mea[0],tau_mea[0]],yrange_ccf,color=cgcolor('blue') - oplot, [tau_mea[1],tau_mea[1]],yrange_ccf,color=cgcolor('blue'),line=2 - oplot, [tau_mea[2],tau_mea[2]],yrange_ccf,color=cgcolor('blue'),line=2 - xyouts, pos2[0] + 0.02, pos2[3] - 0.04, /norm, 'peak sig='+string(peak_sig,format='(f0.3)'),charsize=1.5 - - print, tau_mea - fmt='(i3.3, " ",a8," ", f6.4, " ", 3(f5.1, " "), f0.3, " ", 8(i5, " "), 3(" ", f6.3) )' - tau_rest=tau_mea/(1. + rm_info[rmid].zfinal) - tau_rest[1]=tau_rest[1]-tau_rest[0] - tau_rest[2]=tau_rest[2]-tau_rest[0] - print, tau_rest, format='(f0.1, " ", f0.1, " ", f0.1)' - ; compute a virial product (VP) - logvp=alog10(3d10*tau_rest[0]*24.*3600.*(sig_rms*1d5)^2/6.6742d-8/1.989d33) - ; compute error bars on logvp, using 2-sided err for tau and 1-sided err for sig_rms - elogvp_lo=sqrt( (tau_rest[1]/alog(10.D)/tau_rest[0])^2 + (2.*esig_rms/alog(10.D)/sig_rms)^2 ) - elogvp_hi=sqrt( (tau_rest[2]/alog(10.D)/tau_rest[0])^2 + (2.*esig_rms/alog(10.D)/sig_rms)^2 ) - if keyword_set(lun_tau) then printf, lun_tau,rmid, line, rm_info[rmid].zfinal, $ - tau_rest, peak_sig, round(sig_rms), round(esig_rms), round(sig_mean), round(esig_mean), round(fwhm_rms), round(efwhm_rms), round(fwhm_mean), round(efwhm_mean), logvp,-elogvp_lo,elogvp_hi, format=fmt - - ; now plot the mean and rms broad line spectrum - rmsspecfile=topdir+rmtag+'/'+rmtag+'_'+line+'_w.dat' - readcol,rmsspecfile,format='d,d,d', wave, flux, err - ; force the rms profile errors outside the window to be zero - ind_nonzero = where(abs(flux) gt 1d-6 ) - if ind_nonzero[0] ne -1 then begin - err[0:(min(ind_nonzero)-1)] = -1. - err[max(ind_nonzero)+1:*] = -1. - endif - if line eq 'hb' then wrange=[4750, 4950] - if line eq 'mg2' then wrange=[2750,2850] - if line eq 'ha' then wrange=[6500,6610] - if line eq 'he2_4686' then wrange=[4620,4740] - if ~keyword_set(vrange) then vrange=[-8000,8000] ; velocity - ang=string(197B) - cspeed=2.9979246d5 - velo=(alog(wave)-alog(wave_s))*cspeed - plot, velo, flux, xrange=vrange, xticklen=ticklen*0.5,/noerase, /xsty, $ - xtitle=textoidl('Velocity [km s^{-1}]'), $ ; xtitle='Rest Wavelength ['+ang+']', $ - ytitle='RMS Spectrum',pos=pos3, charsize=charsize ;, yticks=4, yminor=2 - oplot, velo, err, color=cgcolor('red'),line=2 - - xyouts, pos3[2] - 0.11, pos3[3] - 0.04, line2[indx_line], /norm,charsize=1.5,color=cgcolor('blue') - - endplot - -end diff --git a/pro/rm/rm_plot_linefit.pro b/pro/rm/rm_plot_linefit.pro deleted file mode 100644 index 297e834c9..000000000 --- a/pro/rm/rm_plot_linefit.pro +++ /dev/null @@ -1,103 +0,0 @@ -;+ -; NAME: -; rm_plot_linefit -; -; PURPOSE: -; Plot the spectal line windows along with the line fit -; -; CALLING SEQUENCE: -; rm_plot_linefit, plate, fiber, mjd, [/psplot,figfile=figfile] -; rm_plot_linefit, qsofit=qsofit - -pro rm_plot_linefit, plate, fiber, mjd, zsys=zsys, qsofit=qsofit, $ - emparfile=emparfile, psplot=psplot, figfile=figfile, calibdir=calibdir - - cs=2.9979246d5 - - if keyword_set(qsofit) then begin - plate=qsofit.plate & fiber=qsofit.fiberid & mjd=qsofit.mjd - zsys=qsofit.z - endif - - nobj=n_elements(plate) - ; default directory for the coadded RM spectra (plate=0) - if ~keyword_Set(calibdir) then calibdir='wh_skysub/' - - ; read the line structure - if keyword_set(emparfile) then emline_file=emparfile else $ - emline_file = getenv('IDLRM_DIR')+'/etc/qsoline_all.par' - yanny_read, emline_file, pdata - linelist_all = *pdata[0] - yanny_free, pdata - - ; determine the plot xy positions for each line - nline_all=n_elements(linelist_all) - if keyword_set(psplot) then begin - charsize=1. & thick = 3 - endif else begin - charsize=1.5 & thick=1 - endelse - - if keyword_Set(psplot) then begin - if ~keyword_set(figfile) then figfile1='lineplot.ps' else $ - figfile1=figfile - begplot, name=figfile1,/color - endif - - ; Start the for loop - for i=0, nobj-1 do begin - - rm_readspec,plate[i], fiber[i],mjd=mjd[i],calibdir=calibdir, $ - wave=wave, flux=flux,flerr=flerr - wave=wave/(1. + zsys[i]) - - if keyword_set(qsofit) then begin - ; find out which lines were fit - alltag=tag_names(qsofit[i]) - fitflag=lonarr(nline_all) - for jj=0, nline_all - 1 do begin - ind_tmp=where(alltag eq strupcase(linelist_all[jj].linename)) - if ind_tmp ne -1 then begin - if (qsofit[i].(ind_tmp))[0] gt 0 then fitflag[jj]=1 - endif - endfor - ind_fit=where(fitflag eq 1) - if ind_fit[0] ne -1 then linelist=linelist_all[ind_fit] - print, 'Line fit:', linelist.linename - endif else begin - linelist=linelist_all - endelse - nline=n_elements(linelist) - - plot_layout, nline, xypos=xypos, pmargin=[0.04,0.06], omargin=[0.08, 0.08, 0.98, 0.95] - for j=0,nline - 1 do begin - ind=where(wave ge linelist[j].minwav and wave le linelist[j].maxwav,nnn) - if nnn gt 10 then begin - xrange=linelist[j].voff*cs*[-1,1]/1000. - flux_s=median(flux[ind],3) - ; yrange=[min(flux_s), max(flux_s)] - vwave=(wave[ind]-linelist[j].lambda)/linelist[j].lambda*cs/1000. - ind_v = where(abs(vwave) le linelist[j].voff*cs/1000. ) - yrange=[min(flux_s[ind_v]), max(flux_s[ind_v])] - - if j eq 0 then noerase=0 else noerase=1 - plot, vwave,flux[ind], xrange=xrange,yrange=yrange,noerase=noerase,pos=xypos[*,j], $ - ytickname=replicate(' ', 10L),charsize=charsize, thick=thick, psym=10 - oplot, [0,0], !y.crange, line=1 - ind_tmp=where(alltag eq strupcase(linelist[j].linename)) - wave_fit=(qsofit[i].(ind_tmp))[0] - vwave_fit=(wave_fit-linelist[j].lambda)/linelist[j].lambda*cs/1000. - oplot, [vwave_fit,vwave_fit],!y.crange,line=2,color=cgcolor('green'),thick=thick - xyouts, xypos[0,j]+0.02,xypos[3,j]-0.025,/norm,linelist[j].linename,charsize=charsize - endif - endfor - xyouts, 0.5, 0.01, textoidl('Velocity [10^3 km s^{-1}]'), align=0.5, /norm, charsize=charsize - xyouts, 0.5, 0.96, 'RMID-'+string(qsofit[i].rm_id,format='(i3.3)')+' z='+string(zsys[i],format='(f6.4)'), $ - /norm, align=0.5, charsize=charsize - - if ~keyword_set(psplot) then pause - endfor - - if keyword_set(psplot) then endplot - -end diff --git a/pro/rm/rm_plot_var_image.pro b/pro/rm/rm_plot_var_image.pro deleted file mode 100644 index 22ff199a6..000000000 --- a/pro/rm/rm_plot_var_image.pro +++ /dev/null @@ -1,183 +0,0 @@ -; plot a 2D image of the varbility of the 849 SDSS-RM sample - -pro rm_plot_var_image, maxvalue=maxvalue, minvalue=minvalue, log=log, psplot=psplot, $ - tag=tag, type=type, figfile=figfile, infile=infile - - if n_elements(maxvalue) eq 0 then maxvalue=2.5 - if n_elements(minvalue) eq 0 then minvalue=0. - range=[minvalue, maxvalue] - if ~keyword_set(tag) then tag='total RMSx spectrum' - - if keyword_set(infile) then file = infile else $ - file='/data3/yshen/ftp/sdssrm/collab/prepspec/working/nov24_2015/var_img.fits' - result=mrdfits(file,1) - zz=result.z & wave=result.wave - if n_elements(type) eq 0 then type=0 - if type eq 0 then img=result.img_rms_norm - if type eq 1 then img=result.img_avg_norm - if type eq 2 then img=result.IMG_FRAC - if type eq 3 then img=result.img_rmsc_norm - - trim_npix=100L - img=img[trim_npix:*, *] & wave=wave[trim_npix:*] - ind=sort(zz) - zz=zz[ind] - img=img[*,ind] - if keyword_set(log) then img=alog10(img) - nx=n_elements(wave) & ny=n_elements(zz) - - angstr=textoidl('\AA') - if keyword_set(psplot) then begin - if keyword_set(figfile) then fig=figfile else $ - fig='/data3/yshen/ftp/sdssrm/collab/prepspec/working/nov24_2015/totrms_img.ps' - begplot, name=fig,/color,/landscape - angstr=string(197B) - endif - - lines=textoidl(['Ly\alpha', 'SiIV', 'CIV', 'CIII]', 'MgII', 'HeII4687', 'H\beta', 'H\alpha']) ; , $ -; 'H\gamma', 'H\delta','H8/HeI', 'FeII:','HeI']) - linewave=[1215.67, (1396.76 + 1402.06)*0.5, 1549.06,1908.73,2798.75,4687.02, 4862.68,6564.61, $ - 4341.68, 4102.89, 3890., 3800., 3588.30] - linepix=[800,700,600,500, 400, 150, 80, 30, $ - 200,250,200,300,300] - zline=interpol(zz, indgen(ny), linepix) - linewave_pix=interpol(indgen(nx), wave, linewave*(1+zline)) - nline=n_elements(lines) - xrange=[0,nx-1] & yrange=[0,ny-1] - pos=[0.08,0.1,0.92,0.9] - title='RMS Variability' - charsize=1.5 - plot,[0],[0], xrange=xrange, yrange=yrange, xsty=5,ysty=5, pos=pos, /norm, /nodata - cgLoadCT, 63, reverse=reverse ; color table: 55 - cgimage, img, maxvalue=maxvalue, minvalue=minvalue, pos=pos,/norm, /noerase - cgColorbar, Position=[pos[0], pos[3], pos[2], pos[3]+0.05], range=range,/top - cgLoadCT, 0 - - for j=0, nline-1 do begin - ;print, linewave_pix[j], linepix[j], lines[j] - xyouts, linewave_pix[j], linepix[j], lines[j], color=cgcolor('magenta'),charsize=charsize - endfor - - ; map the linear wavelength and z grid onto the pixelized image - zgrid=[0, 1, 2, 3, 4] - zgrid_pix=interpol(indgen(ny), zz, zgrid) - wgrid=[4000, 5000, 6000, 7000, 8000, 9000, 10000.] - wgrid_pix=interpol(indgen(nx), wave, wgrid) - - axis, xaxis=0, xrange=xrange, /xsty, xtitle=textoidl('Observed Wavelength (')+angstr+')', xtickv=wgrid_pix, $ - xtickname=string(wgrid, format='(i0)'), xticks=n_elements(wgrid) - 1 - axis, yaxis=0, yrange=yrange, /ysty, ytitle='Redshift', ytickv=zgrid_pix, $ - ytickname=string(zgrid, format='(i0)'), yticks=n_elements(zgrid) - 1 - axis, yaxis=1, yrange=yrange, /ysty, ytitle='# of Quasars' - xyouts, pos[0], pos[1]-0.08, tag, /norm,color=cgcolor('red') - - if keyword_set(psplot) then begin - endplot - cgfixps, fig - endif - -end - -pro rm_make_var_image, prepspec_dir=prepspec_dir, $ - result=result, check=check, outfile = outfile - - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - - target=target[0:848] - zz=target.zfinal - nobj=n_elements(target) - - if ~keyword_set(prepspec_dir) then $ - prepspec_dir='/data3/yshen/ftp/sdssrm/collab/prepspec/working/nov24_2015/' - ; prefix of rms broad lines - blrtag=['blr_w.dat', 'ha_w.dat', 'hb_w.dat', 'he2_4686_w.dat', 'mg2_w.dat', $ - 'c3_w.dat', 'c4_w.dat', 'si4_w.dat', 'n5_w.dat', 'lya_w.dat'] - nblr=n_elements(blrtag) - - ; create a 2D array - rm_readspec, 0, 1, mjd=56837,wave=wave - npix=n_elements(wave) - - image_frac=dblarr(npix, nobj) - image_avg=dblarr(npix, nobj) - image_avg_norm=dblarr(npix, nobj) - image_rms=dblarr(npix, nobj) - image_rms_norm=dblarr(npix, nobj) - image_rmsc=dblarr(npix, nobj) - image_rmsc_norm=dblarr(npix, nobj) - - for i=0L, nobj-1 do begin - - rmtag='rm'+string(i,format='(i3.3)') - rmdir=prepspec_dir + rmtag + '/' - avgfile=rmdir + rmtag + '_avg_w.dat' - rmsfile=rmdir + rmtag + '_rms_w.dat' - splog, 'cycle through: ', rmtag - - if file_test(avgfile) eq 1 and file_test(rmsfile) eq 1 then begin - readcol, avgfile, format='d,d', wave1, flux1, /silent - - if n_elements(wave1) gt 100. then begin - wave1=wave1*(1. + zz[i]) - flux_avg=interpol(flux1, wave1, wave) > 0 - - readcol, rmsfile, format='d,d,x,d', wave1, flux1, flux1_RMSc, /silent - ; flux1_RMSc only include continuum model RMS, and add model BLR rms now - for jj=0L, nblr-1 do begin - extrafile=rmdir + rmtag + '_' + blrtag[jj] - if file_test(extrafile) eq 1 then begin - readcol, extrafile, format='x,d', flux_blr, /silent - if n_elements(flux_blr) eq n_elements(flux1_RMSc) then $ - flux1_RMSc=flux1_RMSc + flux_blr - if keyword_set(check) then splog, 'adding BLR rms' - endif - endfor - - wave1=wave1*(1. + zz[i]) - flux_rms=interpol(flux1, wave1, wave) > 0 ; RMSx, maximum-likelihood estimate (error and pt corrected) - flux_rmsc=interpol(flux1_RMSc, wave1, wave) > 0 ; RMSc, model, error-accounted, pt corrected - - frac=flux_rms / flux_avg > 0 - - image_frac[*, i]=frac - image_avg[*,i]=flux_avg - image_avg_norm[*,i]=flux_avg/median(flux_avg) - image_rms[*,i]=flux_rms - image_rms_norm[*,i]=flux_rms/median(flux_rms) - image_rmsc[*,i]=flux_rmsc - image_rmsc_norm[*,i]=flux_rmsc/median(flux_rmsc) - - ;plot, wave1, flux1, xrange=[4000,8000] - ;oplot, wave, flux_rms, color=cgcolor('red') - ;message, 'diagonize' - - if keyword_set(check) then begin - plot, image_rms_norm[*,i], yrange=[0, 3] - oplot, image_rmsc_norm[*,i], color=cgcolor('red') - pause - endif - - endif - endif - - - endfor - ind=where(finite(image_frac) eq 0 or image_frac gt 100.) - if ind[0] gt 0 then begin - image_frac[ind] = 0. - image_avg[ind] = 0. - image_avg_norm[ind] = 0. - image_rms[ind]=0. - image_rms_norm[ind]=0. - image_rmsc[ind]=0 - image_rmsc_norm[ind]=0 - endif - - result={z:zz, wave:wave, img_frac:image_frac, img_avg:image_avg, img_avg_norm:image_avg_norm,$ - img_rms:image_rms, img_rms_norm:image_rms_norm, img_rmsc:image_rmsc, img_rmsc_norm:image_rmsc_norm} - if ~keyword_set(outfile) then $ - outfile='/data3/yshen/ftp/sdssrm/collab/prepspec/working/nov24_2015/var_img.fits' - mwrfits, result, outfile,/create - -end diff --git a/pro/rm/rm_plotspec.pro b/pro/rm/rm_plotspec.pro deleted file mode 100644 index 91adfb6d3..000000000 --- a/pro/rm/rm_plotspec.pro +++ /dev/null @@ -1,764 +0,0 @@ -;+ -; NAME: -; rm_plotspec -; -; PURPOSE: -; Routine for plotting spectra from Princeton-1D spectro outputs. -; -; CALLING SEQUENCE: -; rm_plotspec, plate, [ fiberid, mjd=, znum=, zmanual=, $ -; nsmooth=, /zline, /nosyn, /noerr, $ -; /sky, /ormask, /andmask, psfile=, /restframe, /netimage, $ -; /zwarning, /allexp, _EXTRA= -; /rm_info, /old_spec, /masksky,calibdir=calibdir] -; -; INPUTS: -; plate - Plate number(s) -; -; OPTIONAL INPUTS: -; fiberid - Fiber number(s); if not set, then plot all fibers for -; each plate specified. -; mjd - MJD number(s); if not set, then select the most recent -; data for each plate (largest MJD). -; znum - If set, then return not the best-fit redshift, but the -; ZUM-th best-fit; e.g., set ZNUM=2 for second-best fit. -; zmanual - If set, then do an on-the-fly fit to either a galaxy -; template (if ZMANUAL[0]<1) or QSO (if ZMANUAL[0]>=1), -; overriding ZNUM. If this is a 2-element array, then fit -; between all redshifts in the range [ZMANUAL[0],ZMANUAL[1]]. -; Do not include any polynomial terms with the PCA templates. -; nsmooth - If set, then boxcar smooth both the object and synthetic -; spectra with a width equal to NSMOOTH. -; zline - If set, then overplot the emission line fits. -; nosyn - If set, then do not overplot the synthetic fit spectrum (blue). -; noerr - If set, then do not overplot the error vector (red). -; sky - If set, then overplot the sky spectrum (green). -; ormask - If set, then plot the OR-mask bits in yellow crosses. -; andmask - If set, then plot the AND-mask bits in red squares. -; psfile - If set, then send plot to a PostScript file instead of -; to the SPLOT interactive widget. The PostScript file name -; can be set explicitly, e.g. with PSFILE='test.ps'. Or if -; you simply set this as a flag, e.g. with /PSFILE, then the -; default file name is "spec-pppp-mmmmm-fff.ps", -; where pppp=plate number, mmmmm=MJD, fff=fiber ID. -; If FIBERID is specified, then put all plots in a single file -; named "spec-pppp-mmmmm.ps". -; restframe - If set, then plot the wavelengths in the rest frame, -; e.g. divide the wavelengths by (1+z). -; netimage - If set, then launch a Netscape browser with the object -; image from Steve Kent's web site. This only works if -; Netscape is running and has permissions at the site -; "http://sdssmosaic.fnal.gov:8015". ??? -; This is disabled if PSFILE is set. -; zwarning - If set, then only select those non-sky fibers where the -; ZWARNING flag has been set; can be used with or without -; specifying fiber numbers with FIBERID. -; allexp - If set, then plot all the individual exposure spectra, -; rather than the co-added spectrum. -; rm_info - If set, overlay the release and i_mag info for the RM targets -; old_spec - If set, overplot the earlier SDSS/BOSS spectrum in cyan -; masksky - /masksky to overplot pixels near bright skylines -; calibdir - calibdir='recalib/' to use the recalibrated spectrum -; _EXTRA - Keywords for SPLOT and XYOUTS, such as XRANGE, YRANGE, THICK, -; or keywords for READSPEC and READONESPEC such as TOPDIR, -; RUN2D, RUN1D. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The data are read with READSPEC. See the documentation for that -; routine to see how to set environment variables that describe where -; the data files are. -; -; EXAMPLES: -; Plot the spectrum of plate 401, fiber #100 using the SPLOT plotting tool: -; IDL> plotspec, 401, 100 -; -; The spectrum is shown in white, the errors in red (except masked points -; are set to zero), and the best-fit eigenspectrum in blue. The mouse -; buttons will zoom in (left), recenter (center), or zoom out (right). -; The frame can be saved as a PostScript file by selecting File->WriteEPS -; from the left-hand corner. -; -; Make the same plot, but boxcar-smooth the spectrum and limit the -; wavelength range to [4000,5000] Angstroms: -; IDL> plotspec, 401, 100, nsmooth=10, xrange=[5000,6000] -; -; Some plates are observed on multiple nights. To select one of the two -; observations of plate 306: -; IDL> plotspec, 306, 20, mjd=51690 -; -; Loop through all the spectra for plate 401, interactively: -; IDL> plotspec, 401 -; -; Plot all the spectra from plate 401 to a single PostScript file: -; IDL> plotspec, 401, /psfile -; -; Plot all the spectra from plate 401 to 640 individual PostScript files: -; IDL> plotspec, 401, lindgen(640)+1, /psfile -; -; Plot a list of 3 objects, each with its own plate, MJD, and fiberid: -; IDL> plate = [400,400,401] -; IDL> mjd = [51820,51820,51788] -; IDL> fiberid = [10,11,20] -; IDL> plotspec, plate, mjd=mjd, fiberid -; -; BUGS: -; If the user interactively rescales in Y, then the labels for ORMASK -; and ANDMASK are no longer lined up vertically with the bit mask plot. -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_icolor() -; djs_oplot -; djs_plot -; djs_xyouts -; plotspec_image -; readspec -; soplot -; splot -; sdss_flagname() -; sxyouts -; synthspec() -; textoidl() -; -; INTERNAL SUPPORT ROUTINES: -; plotspec_mask -; plotspec1 -; -; REVISION HISTORY: -; 01-Sep-2000 Written by D. Schlegel, Princeton -; 05-Jan-2014 Modified for SDSS-RM purposes by Y. Shen, Carnegie -;- -;------------------------------------------------------------------------------ -pro plotspec_mask, wave, thismask, psfile=psfile, nolabel=nolabel, $ - _EXTRA=Extra - - bitlabel = sdss_flagname('SPPIXMASK', 2UL^32-1, /silent) - bitnum = where(bitlabel NE '', nlabel) - bitlabel = bitlabel[bitnum] - - for ilabel=0, nlabel-1 do begin - ypos = ( (ilabel+1) * !y.crange[1] + (nlabel-ilabel) * !y.crange[0] ) $ - / (nlabel+1) - ynorm = ( (ilabel+0.8) * !y.window[1] + (nlabel-ilabel) * !y.window[0] ) $ - / float(nlabel+1) - ipix = where((thismask AND 2L^bitnum[ilabel]) NE 0, npix) - if (npix GT 0) then begin - if (keyword_set(psfile)) then begin - djs_oplot, [wave[ipix]], [replicate(ypos,npix)], $ - _EXTRA=Extra - endif else begin - soplot, [wave[ipix]], [replicate(ypos,npix)], $ - _EXTRA=Extra - endelse - endif - if (NOT keyword_set(nolabel)) then begin - if (keyword_set(psfile)) then begin - djs_xyouts, !x.window[1], ynorm, bitlabel[ilabel]+' ', $ - charsize=1.4, align=1.0, _EXTRA=Extra, /normal - endif else begin - sxyouts, !x.window[1], ynorm, bitlabel[ilabel]+' ', $ - charsize=1.4, align=1.0, _EXTRA=Extra, /normal - endelse - endif - endfor - - return -end -;------------------------------------------------------------------------------ -pro rm_plotspec1, plate, fiberid, mjd=mjd, znum=znum, zmanual=zmanual, $ - nsmooth=nsmooth1, zline=q_zline, nosyn=nosyn, noerr=noerr, sky=sky, $ - ormask=ormask, andmask=andmask, masksky=masksky, $ - psfile=psfile, xrange=passxr, yrange=passyr, noerase=noerase, $ - restframe=restframe, netimage=netimage, allexp=allexp, _EXTRA=Extra, $ - rm_info = rm_info, rm_fiber=rm_fiber, old_spec=old_spec,calibdir=calibdir - - common plotspec_data, skymask - - cspeed = 2.99792458e5 - textcolor = 'green' - linecolor = 'magenta' - orcolor = 'yellow' - andcolor = 'red' - - rm_readspec, plate, fiberid, mjd=mjd, znum=znum, flux=objflux, $ - wave=wave, plug=plug, zans=zans, _EXTRA=Extra, /silent, calibdir=calibdir - if (NOT keyword_set(objflux)) then begin - print, plate, mjd, fiberid, $ - format='("Spectrum not found for plate=", i4, " MJD=", i5, " fiber=", i3)' - return - endif - if (keyword_set(allexp)) then begin - readonespec, plate, fiberid, mjd=mjd, wave=allwave, flux=allflux, $ - _EXTRA=Extra, /silent - ndim = size(allflux,/n_dimen) - if (ndim EQ 1) then nexp = 1 $ - else nexp = (size(allflux,/dimens))[1] - endif - if (keyword_set(restframe)) then begin - wave = wave / (1. + zans.z) - if (keyword_set(allwave)) then allwave = allwave / (1. + zans.z) - endif - if (NOT keyword_set(noerr)) then $ - rm_readspec, plate, fiberid, mjd=mjd, flerr=objerr, _EXTRA=Extra, /silent,calibdir=calibdir - if (keyword_set(zmanual)) then begin - rm_readspec, plate, fiberid, mjd=mjd, invvar=objivar, loglam=loglam, $ - objhdr=hdr, _EXTRA=Extra, /silent, calibdir=calibdir - if (zmanual[0] LT 1.) then eigenfile = 'spEigenGal-*.fits' $ - else eigenfile = 'spEigenQSO-*.fits' - npoly = 0 - if (n_elements(zmanual) EQ 1) then zrange=[zmanual,zmanual] $ - else zrange=zmanual[0:1] - res_manual = zfind(objflux, objivar, hdr=hdr, $ - eigenfile=eigenfile, npoly=npoly, zmin=zrange[0], zmax=zrange[1], $ - pspace=1, nfind=1, width=1) - synflux = synthspec(res_manual, loglam=loglam) - endif else begin - if (NOT keyword_set(nosyn)) then $ - rm_readspec, plate, fiberid, mjd=mjd, znum=znum, synflux=synflux, $ - _EXTRA=Extra, /silent,calibdir=calibdir - endelse - if (keyword_set(sky)) then $ - rm_readspec, plate, fiberid, mjd=mjd, sky=sky, _EXTRA=Extra, /silent,calibdir=calibdir - if (keyword_set(ormask)) then $ - rm_readspec, plate, fiberid, mjd=mjd, ormask=ormask, _EXTRA=Extra, /silent,calibdir=calibdir - if (keyword_set(andmask)) then $ - rm_readspec, plate, fiberid, mjd=mjd, andmask=andmask, _EXTRA=Extra, /silent,calibdir=calibdir - if (keyword_set(zans) AND keyword_set(q_zline)) then $ - rm_readspec, plate, fiberid, mjd=mjd, zline=zline, lineflux=lineflux, $ - _EXTRA=Extra, /silent,calibdir=calibdir - - if (keyword_set(nsmooth1)) then nsmooth = nsmooth1 $ - else nsmooth = 1 - - if (nsmooth GT 1) then begin - objflux = smooth(objflux, nsmooth) - if (keyword_set(allflux)) then begin - for iexp=0, nexp-1 do $ - allflux[*,iexp] = smooth(allflux[*,iexp], nsmooth) - endif - if (keyword_set(synflux)) then $ - synflux = smooth(synflux, nsmooth) - if (keyword_set(lineflux)) then $ - lineflux = smooth(lineflux, nsmooth) - endif - - targstring = strmatch(plug.objtype,'SKY*') ? 'SKY ' : '' - if (tag_exist(plug,'PRIMTARGET')) then $ - targstring += sdss_flagname('TARGET', plug.primtarget, /concat)+' ' - if (tag_exist(plug,'SECTARGET')) then $ - targstring += sdss_flagname('TTARGET', plug.sectarget, /concat)+' ' - if (tag_exist(plug,'BOSS_TARGET1')) then $ - targstring += sdss_flagname('BOSS_TARGET1', plug.boss_target1, /concat)+' ' - if (tag_exist(plug,'BOSS_TARGET2')) then $ - targstring += sdss_flagname('BOSS_TARGET2', plug.boss_target2, /concat)+' ' - if (tag_exist(plug,'ANCILLARY_TARGET1')) then targstring += $ - sdss_flagname('ANCILLARY_TARGET1', plug.ancillary_target1, /concat)+' ' - if (tag_exist(plug,'ANCILLARY_TARGET2')) then targstring += $ - sdss_flagname('ANCILLARY_TARGET2', plug.ancillary_target2, /concat)+' ' - targstring = strtrim(targstring) ; get rid of trailing spaces - - csize = 1.75 - if (keyword_set(passyr)) then begin - yrange = passyr - ymin = yrange[0] - ymax = yrange[1] - endif else begin - if (keyword_set(synflux)) then $ - yrange = minmax(synflux) $ - else $ - yrange = minmax(objflux) - - if (yrange[0] EQ yrange[1]) then yrange = minmax(objflux) - ymin = (1.3 * yrange[0] - 0.3 * yrange[1]) < 0 - ymax = -0.3 * yrange[0] + 1.3 * yrange[1] - if (ymax EQ ymin) then ymax = ymin + 1 - yrange = [ymin, ymax] - endelse - if (keyword_set(passxr)) then xrange = passxr $ - else xrange = minmax(wave) - if (keyword_set(ormask) OR keyword_set(andmask)) then $ - xrange[1] = 1.15 * xrange[1] - 0.15 * xrange[0] - - title = 'Plate ' + strtrim(string(plate),2) $ - + ' Fiber ' + strtrim(string(fiberid),2) $ - + ' MJD=' + strtrim(string(mjd),2) - if (keyword_set(restframe)) then xtitle = 'Rest-Frame Wavelength [Ang]' $ - else xtitle = 'Observed Wavelength [Ang]' - if (keyword_set(psfile)) then begin - djs_plot, xrange, yrange, /nodata, xrange=xrange, yrange=yrange, $ - xtitle=xtitle, ytitle=TeXtoIDL('Flux [10^{-17} erg/s/cm^2/Ang]'), $ - title=title, charsize=csize, _EXTRA=KeywordsForSplot, /xstyle, /ystyle - if (keyword_set(allexp)) then begin - for iexp=0, nexp-1 do $ - djs_oplot, allwave[*,iexp], allflux[*,iexp], $ - psym=(nsmooth GT 1) ? 0 : 3, _EXTRA=KeywordsForSplot - endif else begin - djs_oplot, wave, objflux, _EXTRA=KeywordsForSplot - endelse - if (NOT keyword_set(noerr)) then $ - djs_oplot, wave, objerr, color='red', _EXTRA=KeywordsForSplot - if (keyword_set(sky)) then $ - djs_oplot, wave, sky, color='green', lw=2, _EXTRA=KeywordsForSplot - if (keyword_set(synflux)) then $ - djs_oplot, wave, synflux, color='blue', lw=2, _EXTRA=KeywordsForSplot - endif else begin - if (NOT keyword_set(noerase)) then $ - splot, xrange, yrange, /nodata, xrange=xrange, yrange=yrange, $ - xtitle=xtitle, ytitle=TeXtoIDL('Flux [10^{-17} erg/s/cm^2/Ang]'), $ - title=title, charsize=csize, _EXTRA=KeywordsForSplot - if (keyword_set(allexp)) then begin - for iexp=0, nexp-1 do $ - soplot, allwave[*,iexp], allflux[*,iexp], $ - _EXTRA=KeywordsForSplot - endif else begin - soplot, wave, objflux, _EXTRA=KeywordsForSplot - endelse - if (NOT keyword_set(noerr)) then $ - soplot, wave, objerr, color='red', _EXTRA=KeywordsForSplot - if (keyword_set(sky)) then $ - soplot, wave, sky, color='green', lw=2, _EXTRA=KeywordsForSplot - if (keyword_set(synflux)) then $ - soplot, wave, synflux, color='blue', lw=2, _EXTRA=KeywordsForSplot - endelse - - xpos = 0.9 * !x.window[0] + 0.1 * !x.window[1] - dypos = 0.05 * (!y.window[0] - !y.window[1]) - ypos = !y.window[1] + 1.5 * dypos - - if (keyword_set(zmanual) OR keyword_set(zans)) then begin - if (keyword_set(zmanual)) then begin - zstring = res_manual.tfile $ - + ' z=' + string(res_manual.z,format='(f8.5)') - endif else begin - zstring = zans.class + ' ' + zans.subclass - cz = zans.z * cspeed - if (abs(cz) LT 3000) then $ - zstring += ' cz=' + string(cz,format='(f6.0)') + ' km/s' $ - else $ - zstring += ' z=' + string(zans.z,format='(f8.5)') - if (zans.zwarning NE 0) then $ - zstring += ' (' $ - + sdss_flagname('ZWARNING', zans.zwarning, /concat) + ')' - if (keyword_set(znum)) then $ - zstring += ' (fit #' + strtrim(string(znum),2) + ')' - endelse - - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, zstring, $ - charsize=csize, color=djs_icolor(textcolor), /normal, $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, xpos, ypos, zstring, $ - charsize=csize, color=textcolor, /normal, $ - _EXTRA=KeywordsForSplot - - - ypos = ypos + dypos - - if (keyword_set(res_manual)) then thisrchi2 = res_manual.rchi2 $ - else thisrchi2 = zans.rchi2 - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, $ - TeXtoIDL('X^2_r =' + strtrim(string(thisrchi2, format='(f7.3)'),2)), $ - charsize=csize, color=djs_icolor(textcolor), /normal, $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, xpos, ypos, $ - TeXtoIDL('X^2_r =' + strtrim(string(thisrchi2, format='(f7.3)'),2)), $ - charsize=csize, color=textcolor, /normal, $ - _EXTRA=KeywordsForSplot - endif - - if keyword_set(rm_info) then begin - xpos1 = 0.9 * !x.window[0] + 0.7 * !x.window[1] - dxpos1 = 0.05 * (!x.window[0] - !x.window[1]) - dypos1 = 0.05 * (!y.window[0] - !y.window[1]) - ypos1 = !y.window[1] + 1.5 * dypos1 - ; find the epoch (i.e., the corresponding plugging) - ind_epoch = where( (rm_fiber.plate)[*,0] eq plate and $ - (rm_fiber.mjd)[*,0] eq mjd) - ind_obj = where(rm_fiber.fiberid[ind_epoch,*] eq fiberid) - ; If we are looking at the coadded plate (all epochs) then index is just fiberid-1 - if ind_epoch[0] eq -1 or ind_obj[0] eq -1 then ind_obj=fiberid-1 - sxyouts, xpos1 + 2.*dxpos1, ypos1 + dypos1, $ - strtrim(rm_fiber[ind_obj].release), /norm, $ - charsize=csize, color=textcolor, _EXTRA=KeywordsForSplot - ypos1 = ypos1 + dypos1 - sxyouts, xpos1, ypos1, 'i=' + $ - string(rm_fiber[ind_obj].psfmag[3],format='(f6.3)'), /norm, $ - charsize=csize, color=textcolor, _EXTRA=KeywordsForSplot - - ; overplot the existing spectrum (DR7 or BOSS) - if keyword_set(old_spec) then begin - old_specfile = getenv('IDLRM_DIR') + '/etc/early_spec/' + $ - string(rm_fiber[ind_obj].dr_plate,format='(i4.4)') + '-' + $ - string(rm_fiber[ind_obj].dr_fiberid,format='(i4.4)') + '-' + $ - string(rm_fiber[ind_obj].dr_mjd, format='(i5.5)') + '.dat' - ;print, old_specfile - if file_test(old_specfile) eq 1 then begin - readcol, old_specfile, format='d,d',wave_oldspec,flux_oldspec,/silent - soplot, wave_oldspec, smooth(flux_oldspec, nsmooth),color='magenta' - sxyouts, xpos1, ypos1 + dypos1, 'MJD='+string(rm_fiber[ind_obj].dr_mjd $ - , format='(i5.5)'), color='magenta', charsize=csize,/norm - endif - endif - endif - - if (keyword_set(lineflux)) then begin - if (keyword_set(psfile)) then $ - djs_oplot, wave, lineflux, color=linecolor, lw=2, _EXTRA=KeywordsForSplot $ - else $ - soplot, wave, lineflux, color=linecolor, lw=2, _EXTRA=KeywordsForSplot - - linewave = zline.linewave $ - * (1 + zline.linez * (keyword_set(restframe) EQ 0)) - ; Convert line sigma from km/sec to Angstroms - linesigma = linewave * zline.linesigma / cspeed - linepeak = zline.linecontlevel + zline.linearea / (sqrt(2*!pi) * linesigma) - for iline=0, n_elements(zline)-1 do begin - if (zline[iline].linearea_err GT 0) then begin - if (keyword_set(psfile)) then $ - xyouts, linewave[iline], linepeak[iline], $ - ' '+zline[iline].linename, orient=90, $ - charsize=0.75*csize, color=djs_icolor(linecolor), $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, linewave[iline], linepeak[iline], $ - ' '+zline[iline].linename, orient=90, $ - charsize=0.75*csize, color=linecolor, $ - _EXTRA=KeywordsForSplot - endif - endfor - endif - - if (keyword_set(ormask)) then begin - plotspec_mask, wave, ormask, psfile=psfile, $ - psym=1, symsize=0.6, color=orcolor, $ - nolabel=keyword_set(andmask), _EXTRA=KeywordsForSplot - endif - - if (keyword_set(andmask)) then begin - plotspec_mask, wave, andmask, psfile=psfile, $ - psym=6, symsize=0.6, color=andcolor, _EXTRA=KeywordsForSplot - endif - - if keyword_Set(masksky) then begin - if n_elements(skymask) eq 0 then skymask = rm_skymask(wave) - if keyword_set(restframe) then skymask = rm_skymask(wave*(1.+zans.z)) - ind_sky = where(skymask eq 0) - if ind_sky[0] ne -1 then soplot, wave[ind_sky], objflux[ind_sky],psym=4,color='cyan' - endif - - if (keyword_set(targstring)) then begin - ypos = ypos + dypos - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, 'Target = '+targstring, $ - charsize=csize, color=djs_icolor(textcolor), /normal, $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, xpos, ypos, 'Target = '+targstring, $ - charsize=csize, color=textcolor, /normal, $ - _EXTRA=KeywordsForSplot - endif - - if (keyword_set(netimage) AND NOT keyword_set(psfile)) then begin - netstring = 'http://sdssmosaic.fnal.gov:8015/template/tsSingle.tml?run=' $ - + strtrim(string(plug.objid[0]),2) $ - + '&camcol=' + strtrim(string(plug.objid[2]),2) $ - + '&field=' + strtrim(string(plug.objid[3]),2) $ - + '&ra=' + strtrim(string(plug.ra),2) $ - + '&dec=' + strtrim(string(plug.dec),2) - spawn, '\netscape -remote "openURL(' + netstring + ')"' -print,netstring - endif - - return -end -;------------------------------------------------------------------------------ -pro rm_plotspec, plate, fiberid, mjd=mjd, znum=znum, nsmooth=nsmooth, $ - zline=zline, nosyn=nosyn, noerr=noerr, sky=sky, $ - ormask=ormask, andmask=andmask, masksky=masksky, $ - psfile=psfile, xrange=xrange, yrange=yrange, noerase=noerase, $ - restframe=restframe, netimage=netimage, zwarning=zwarning, allspec=allspec, $ - _EXTRA=Extra, rm_info=rm_info, old_spec = old_spec,calibdir=calibdir - - if (n_params() LT 1) then begin - doc_library, 'plotspec' - return - endif - - common plotspec_data, skymask - - quiet = !quiet - !quiet = 1 - - ; populate info of the RM targets - if keyword_Set(rm_info) then begin - file_rm = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - rm_fiber = mrdfits(file_rm, 1, /silent) - ;help, rm_fiber - endif - - - ;---------- - ; If MJD is not set, then find the MJD for each plate - - nplate = n_elements(plate) - if (NOT keyword_set(mjd)) then begin - mjd = lonarr(nplate) - for iplate=0, nplate-1 do begin - mjd1 = 0 - rm_readspec, plate[iplate], mjd=mjd1, _EXTRA=Extra, /silent,calibdir=calibdir - if (NOT keyword_set(mjd1)) then begin - print, 'No MJD found for plate ', plate[iplate] - !quiet = quiet - return - endif - mjd[iplate] = mjd1 - endfor - endif else begin - if (n_elements(mjd) NE nplate) then begin - print, 'Number of elements in PLATE and MJD do not agree' - !quiet = quiet - return - endif - endelse - - ;---------- - ; If /ZWARNING is set, then find the flagged fibers to plot. - - if (keyword_set(zwarning)) then begin - if (keyword_set(fiberid)) then begin - print, 'FIBERID and /ZWARNING cannot both be set.' - !quiet = quiet - return - endif - - for iplate=0L, nplate-1L do begin - rm_readspec, plate[iplate], mjd=mjd[iplate], $ - _EXTRA=Extra, /silent, zans=zans,calibdir=calibdir - if (NOT keyword_set(zans)) then begin - print, 'No spZ file found for selecting ZWARNING flags' - !quiet = quiet - return - endif - indx = where((zans.zwarning AND 1) EQ 0 AND zans.zwarning NE 0, nthis) - if (nthis GT 0) then begin - if (NOT keyword_set(fiberid)) then begin - platelist = replicate(plate[iplate], nthis) - mjdlist = replicate(mjd[iplate], nthis) - fiberid = zans[indx].fiberid - endif else begin - platelist = [platelist, replicate(plate[iplate], nthis)] - mjdlist = [mjdlist, replicate(mjd[iplate], nthis)] - fiberid = [fiberid, zans[indx].fiberid] - endelse - endif - endfor - if (NOT keyword_set(fiberid)) then begin - print, 'No non-sky fibers with ZWARNING flag set' - !quiet = quiet - return - endif - nfiber = n_elements(fiberid) - print, 'Selecting ', nfiber, ' non-sky fibers with ZWARNING flag set' - endif - - ;---------- - ; Set FIBERID to [1,...,NFIBER] (for each plate) if not set. - ; - ; If writing to a PostScript file, then all plots are in the same file - ; either if PSFILE is that file name, or if FIBERID is not specified - ; (and then all spectra are being plotted). - - if (NOT keyword_set(fiberid)) then begin - rm_readspec, plate, mjd=mjd, 0*plate+1, nfiber=nfiber_tmp, $ - _EXTRA=Extra, /silent,calibdir=calibdir - nfiber_tot = long(total(nfiber_tmp)) - if (nfiber_tot EQ 0) then begin - print, 'No fibers found' - !quiet = quiet - return - endif - platelist = lonarr(nfiber_tot) - mjdlist = lonarr(nfiber_tot) - fiberid = lonarr(nfiber_tot) - j = 0L - for iplate=0L, nplate-1L do begin - platelist[j:j+nfiber_tmp[iplate]-1] = plate[iplate] - mjdlist[j:j+nfiber_tmp[iplate]-1] = mjd[iplate] - fiberid[j:j+nfiber_tmp[iplate]-1] = lindgen(nfiber_tmp[iplate]) + 1 - j += nfiber_tmp[iplate] - endfor - if (keyword_set(psfile)) then begin - q_onefile = 1 - psfilename = string(plate[0], mjd[0], $ - format='("spec-",i4.4,"-",i5.5,".ps")') - endif - endif - -; if (min(fiberid) LT 1 OR max(fiberid) GT 640) then begin -; print, 'Invalid FIBERID (must be between 1 and 640)' -; return -; endif - - ;---------- - ; If FIBERID is specified, and writing to a PostScript file, - ; then open only one PS file for all plots. - - nfiber = n_elements(fiberid) - if (size(psfile,/tname) EQ 'STRING' AND nfiber GT 1) then begin - psfilename = psfile - q_onefile = 1 - endif - - ;---------- - ; If /ZWARNING is not set, then construct the PLATELIST,MJDLIST. - - if (n_elements(platelist) EQ 0) then begin - if (nplate EQ 1) then begin - platelist = replicate(plate, nfiber) - mjdlist = replicate(mjd, nfiber) - endif else begin - platelist = plate - mjdlist = mjd - endelse - endif else if (n_elements(platelist) NE n_elements(fiberid)) then begin - print, 'Number of elements in PLATE and FIBERID do not agree.' - !quiet = quiet - return - endif - - ;---------- - ; Loop over each plot - - ifiber = 0L - while (ifiber LT nfiber) do begin - - ;---------- - ; Open the PostScript file if appropriate - - if (keyword_set(psfile)) then begin - if (NOT keyword_set(q_onefile)) then begin - if (size(psfile,/tname) EQ 'STRING') then $ - psfilename = psfile $ - else $ - psfilename = string(platelist[ifiber], mjdlist[ifiber], $ - fiberid[ifiber], format='("spec-",i4.4,"-",i5.5,"-",i3.3,".ps")') - endif - - if (NOT keyword_set(q_onefile) OR ifiber EQ 0) then begin - dfpsplot, psfilename, /color, /square - endif - endif - - rm_plotspec1, platelist[ifiber], fiberid[ifiber], mjd=mjdlist[ifiber], $ - znum=znum, zmanual=zmanual, nsmooth=nsmooth, zline=zline, $ - nosyn=nosyn, noerr=noerr, masksky=masksky, $ - sky=sky, ormask=ormask, andmask=andmask, psfile=psfile, $ - xrange=xrange, yrange=yrange, noerase=noerase, netimage=netimage, $ - restframe=restframe, allexp=allexp, _EXTRA=Extra, rm_info = rm_info $ - , rm_fiber = rm_fiber, old_spec = old_spec,calibdir=calibdir - - if (keyword_set(psfile)) then begin - if (NOT keyword_set(q_onefile) OR ifiber EQ nfiber-1) then dfpsclose - ifiber = ifiber + 1 - endif else begin - if (ifiber LT nfiber-1) then begin - if (keyword_set(nsmooth)) then $ - sstring = ' (currently=' + strtrim(string(nsmooth),2) + ')' $ - else $ - sstring = '' - - print, 'Press b=back one fiber' - print, ' p=select new plate' - print, ' f=select new fiber number' - print, ' n=change which PCA-fit to plot' - print, ' q=quit (and enter interactive mode for this plot)' - print, ' s=change boxcar smoothing' + sstring - print, ' x=change X plotting range' - print, ' y=change Y plotting range' - print, ' z=manual z' - print, ' v=view reconstructed frame' - print, ' any other key=forward' - - cc = strupcase(get_kbrd(1)) - print, cc - case cc of - 'V': begin - if (keyword_set(getenv('PHOTOOP_DIR'))) then begin - rm_readspec, platelist[ifiber], fiberid[ifiber], $ - mjd=mjdlist[ifiber], zans=zans, _EXTRA=Extra, /silent - plotspec_image, ra=zans.plug_ra, dec=zans.plug_dec, $ - cutout=300, /calibrate, /register, /allid,calibdir=calibdir - endif else begin - print, 'Need to set up photoop product to display images' - endelse - end - 'B': begin - ifiber = (ifiber - 1) > 0 - zmanual = 0. - end - 'P': begin - read, plate, mjd, prompt='Enter new plate and MJD (enter 0 for unknown MJD): ' - if (NOT keyword_set(mjd)) then $ - rm_readspec, plate, mjd=mjd, _EXTRA=Extra, /silent,calibdir=calibdir - if (NOT keyword_set(mjd)) then begin - print, 'MJD not found for plate ', plate - !quiet = quiet - return - endif - rm_readspec, plate, mjd=mjd, nfiber=nfiber, $ - _EXTRA=Extra, /silent,calibdir=calibdir - platelist = replicate(plate,nfiber) - mjdlist = replicate(mjd,nfiber) - zmanual = 0. - end - 'N': begin - read, znum, prompt='Enter 1=best redshift, 2=2nd best, ...: ' - znum = long(znum) > 0 - zmanual = 0. - end - 'F': begin - read, newfiber, prompt='Enter new fiber number: ' - ifiber = ((long(newfiber)-1) > 0) < (nfiber-1) - zmanual = 0. - end - 'Q': ifiber = nfiber - 'S': begin - read, nsmooth, prompt='Enter boxcar smoothing width (0=none): ' - nsmooth = long(nsmooth) > 0 - end - 'X': begin - read, xmin, xmax, prompt='Enter new X range values (0 0=full range): ' - if (xmin EQ 0 AND xmax EQ 0) then xrange = 0 $ - else xrange = [xmin, xmax] - end - 'Y': begin - read, ymin, ymax, prompt='Enter new Y range values (0 0=full range): ' - if (ymin EQ 0 AND ymax EQ 0) then yrange = 0 $ - else yrange = [ymin, ymax] - end - 'Z': begin - read, zmanual, prompt='Enter redshift guess (zmin zmax)...: ' - end - else: begin - ifiber = ifiber + 1 - zmanual = 0. - end - endcase - endif else begin - ifiber = nfiber - endelse - endelse - endwhile - - !quiet = quiet - return -end -;------------------------------------------------------------------------------ diff --git a/pro/rm/rm_plotstd.pro b/pro/rm/rm_plotstd.pro deleted file mode 100644 index 8e23f83fe..000000000 --- a/pro/rm/rm_plotstd.pro +++ /dev/null @@ -1,203 +0,0 @@ -;+ -; NAME: -; rm_plotstd -; -; PURPOSE: -; Compare the final coadded std spectrum and the best-fit model during -; the spflux stage -; -; rm_plotstd,7338,0,56660 to plot all good std - - -pro rm_plotstd,plate,fiber,mjd,psplot=psplot,recalibdir=recalibdir $ - ,subexp=subexp,tag=tag,wave1=wave1,modelflux=modelflux,oldflux=oldflux,newflux=newflux - - ; default std to look at: 7338, 2, 56660 - - ;if not keyword_set(recalibdir) then $ - ; recalibdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/recalib/test4/' - - ; First plot the default BOSS reduction results - readspec,plate,mjd=mjd,wave=wave,flux=flux,plugmap=plugmap - - adderr = 0.03 - - if n_elements(psplot) eq 0 then psplot=1L - if keyword_set(psplot) then begin - - plotfile = 'plotstdspec_' + string(plate,format='(i0)') + '-' + $ - string(mjd,format='(i5.5)') + '_' + tag + '.ps' - set_plot, 'ps' - dfpsplot, djs_filepath(plotfile, root_dir=getenv('IDLRM_DIR')+'/misc'),$ - /color, /landscape - thick = 3 - - endif - - ; find the best Kurucz model - ; check spectrograph 1 and 2 - rm_expinfo, plate, mjd, expinfo=expinfo - ind = where(expinfo.coadded[0,*] eq 1, nexp) - exp_all = expinfo[ind].name - calibfile_all = repstr(exp_all,'spFrame','spFluxcalib') - exp12 = [(expinfo[ind[0]].name)[0], (expinfo[ind[0]].name)[1]] - calibfile = repstr(exp12,'spFrame','spFluxcalib') - - topdir = getenv('BOSS_SPECTRO_REDUX') - twoddir = getenv('RUN2D') - platestr = string(plate,format='(i4.4)') - mjdstr = string(mjd,format='(i5.5)') - - for icam=0,1 do begin - filename = lookforgzip(filepath(calibfile[icam], root_dir=topdir, $ - subdirectory=[twoddir,platestr]), count=ct) - if ct eq 1 then filename=filename[0] - splog, filename - - kindx=mrdfits(filename,2) - if fiber gt 0 then ind_std = where(kindx.fiberid eq fiber) $ - else ind_std = indgen(n_elements(kindx)) - - for i=0L, n_elements(ind_std) - 1L do begin - - fiberid = kindx[ind_std[i]].fiberid - - fiberstr = string(fiberid,format='(i4.4)') - wave1=wave[*,fiberid-1] & flux1=flux[*,fiberid-1] - oldflux = flux1 - - ; estimate the default filterd flux (only use gri) - wavevec = wave1 - flambda2fnu = wavevec^2 / 2.99792e18 - fthru = filter_thru(flux1 * flambda2fnu, waveimg=wavevec, /toair) - thismag = -2.5 * alog10(fthru) - (48.6-2.5*17) - default_filter_flux = 10.^((22.5-thismag)/2.5) - - imodel = kindx[ind_std[i]].imodel - npix = n_elements(wave1) - tmploglam = alog10(wave1) & tmpdispimg = replicate(1d-4,npix) - tmpflux = spflux_read_kurucz(tmploglam, tmpdispimg, $ - iselect=imodel) - extcurve2 = ext_odonnell(10.^tmploglam, 3.1) - tmpflux = tmpflux $ - * 10.^(-extcurve2 * 3.1 * plugmap[fiberid-1].ebv / 2.5) - wavevec = 10.d0^tmploglam - flambda2fnu = wavevec^2 / 2.99792e18 - fthru = filter_thru(tmpflux * flambda2fnu, waveimg=wavevec, /toair) - thismag = -2.5 * alog10(fthru) - (48.6-2.5*17) - scalefac = plugmap[fiberid-1].calibflux[2] / 10.^((22.5-thismag[2])/2.5) - modelflux = tmpflux*scalefac - - ; this a somewhat larger wavelengh range - tmploglam = 3.4780d0 + lindgen(5620) * 1.d-4 - tmpdispimg = 0 * tmploglam + 1. - tmpflux = spflux_read_kurucz(tmploglam, tmpdispimg, $ - iselect=imodel) - extcurve2 = ext_odonnell(10.^tmploglam, 3.1) - tmpflux = tmpflux $ - * 10.^(-extcurve2 * 3.1 * plugmap[fiberid-1].ebv / 2.5) - wavevec = 10.d0^tmploglam - flambda2fnu = wavevec^2 / 2.99792e18 - fthru = filter_thru(tmpflux * flambda2fnu, waveimg=wavevec, /toair) - thismag = -2.5 * alog10(fthru) - (48.6-2.5*17) - scalefac = plugmap[fiberid-1].calibflux[2] / 10.^((22.5-thismag[2])/2.5) - model_filter_flux = 10.^((22.5-thismag)/2.5) * scalefac - - stdflux = tmpflux * scalefac - - yrange = [0,max(stdflux)*1.2] - plot, wave1, flux1, xrange=[3500,1d4],/xsty,xtitle='Wavelength', $ - ytitle=textoidl('Flux Density [10^{-17} ergs^{-1}cm^{-2}\AA^{-1}]'), $ - yrange=yrange - - oplot, 10.^tmploglam, stdflux, color=cgcolor('blue') - - ; now overplot the re-calibrated spectrum - if keyword_set(recalibdir) then begin - readspec,plate,fiberid,mjd=mjd,wave=wave2,flux=flux2,path=recalibdir - oplot, wave2, flux2, color=cgcolor('cyan') - xyouts,0.6,0.88, 'New redux',/norm, color=cgcolor('cyan') - newflux = flux2 - - ; calculate the recalibread flitered flux (only use gri) - wavevec = wave2 - flambda2fnu = wavevec^2 / 2.99792e18 - fthru = filter_thru(flux2 * flambda2fnu, waveimg=wavevec, /toair) - thismag = -2.5 * alog10(fthru) - (48.6-2.5*17) - recalib_filter_flux = 10.^((22.5-thismag)/2.5) - - ; plot the individual subexposures - if keyword_set(subexp) then begin - - colors=replicate(cgcolor(['magenta']),nexp) - - blue_name = reform(calibfile_all[0, *]) - red_name = reform(calibfile_all[2,*]) - - for iexp=0L, nexp - 1L do begin - - ; do it for the blue spectrograph - bluefile = recalibdir+blue_name[iexp]+'.gz' - spframefile = lookforgzip(filepath(exp_all[0,iexp], root_dir=topdir, $ - subdirectory=[twoddir,platestr]), count=ct) - spframe_read,spframefile,fiberid-1,loglam=loglam,objflux=objflux, $ - wset=wset,objivar=objivar,dispimg=dispimg,adderr=adderr - calibfac=mrdfits(bluefile,0,/silent) - ; re-normalize the flux and dispersion - correct_dlam, objflux, objivar, wset, dlam=dloglam - correct_dlam, dispimg, 0, wset, dlam=dloglam, /inverse - ; flux calibration - minval = 0.05 * mean(calibfac) - divideflat,objflux,invvar=objivar,calibfac[*,fiberid-1],minval=minval - oplot,10.^loglam,objflux,color=colors[iexp mod n_elements(colors)],psym=3 - - ; do the same for the red spectrograph - redfile = recalibdir+red_name[iexp]+'.gz' - spframefile = lookforgzip(filepath(exp_all[2,iexp], root_dir=topdir, $ - subdirectory=[twoddir,platestr]), count=ct) - spframe_read,spframefile,fiberid-1,loglam=loglam,objflux=objflux, $ - wset=wset,objivar=objivar,dispimg=dispimg,adderr=adderr - calibfac=mrdfits(redfile,0,/silent) - ; re-normalize the flux and dispersion - correct_dlam, objflux, objivar, wset, dlam=dloglam - correct_dlam, dispimg, 0, wset, dlam=dloglam, /inverse - ; flux calibration - minval = 0.05 * mean(calibfac) - divideflat,objflux,invvar=objivar,calibfac[*,fiberid-1],minval=minval - oplot,10.^loglam,objflux,color=colors[iexp mod n_elements(colors)],psym=3 - - endfor - - endif - - endif - - xyouts,0.6, 0.92, 'Default redux',/norm - xyouts,0.6,0.9, 'Best-fit Kurucz model',/norm,color=cgcolor('blue') - xyouts,0.2, 0.92, 'std: '+ platestr+'-'+fiberstr+'-'+mjdstr,/norm - xyouts,0.2, 0.9, 'qgood='+string(kindx[ind_std[i]].qgood,format='(i0)'),/norm - xyouts,0.18, 0.15, 'calibflux: ', /norm,color=cgcolor('gold'),charthick=thick - xyouts,0.18,0.13,'model:',/norm,color=cgcolor('blue'),charthick=thick - for ii=0L, 4L do begin - xyouts,0.25+ii*0.06, 0.15, string(plugmap[fiberid-1].calibflux[ii],format='(f0.2)'),/norm $ - , color=cgcolor('gold'),charthick=thick - xyouts,0.25+ii*0.06, 0.13, string(model_filter_flux[ii],format='(f0.2)'),/norm $ - ,color=cgcolor('blue'),charthick=thick - endfor - for ii=1,3 do begin - xyouts,0.25+ii*0.06, 0.11, string(default_filter_flux[ii],format='(f0.2)'),/norm $ - , color=cgcolor('opposite'),charthick=thick - xyouts,0.25+ii*0.06, 0.09, string(recalib_filter_flux[ii],format='(f0.2)'),/norm $ - , color=cgcolor('cyan'),charthick=thick - endfor - redchi2 = kindx[ind_std[i]].CHI2/kindx[ind_std[i]].dof - xyouts,0.2,0.88,textoidl('\chi^2/dof=')+string(redchi2,format='(f0.1)'),/norm - - ;pause - - endfor - endfor - - if keyword_set(psplot) then dfpsclose - -end diff --git a/pro/rm/rm_plotstdrms.pro b/pro/rm/rm_plotstdrms.pro deleted file mode 100644 index c17a5f746..000000000 --- a/pro/rm/rm_plotstdrms.pro +++ /dev/null @@ -1,133 +0,0 @@ -;+ -; NAME: -; rm_plotstdrms -; -; PURPOSE: -; plot the rms spectra for the 70 standard stars and compare the pipeline -; reduction and the custom reduction; -; Remove outliers with gri abs(log(synflux/calibflux))>0.1 -; -; -;------------------- - -pro rm_plotstdrms, interp_sky=interp_sky - - ; read in the master file - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - - ; setup the mjd list to search - platelist = fibermap[0].plate - mjdlist = fibermap[0].mjd - ind=where(platelist gt 0) - platelist=platelist[ind] & mjdlist=mjdlist[ind] - ; reject 56669 and 56713 - ind = where(mjdlist ne 56669 and mjdlist ne 56713,nepoch) - platelist=platelist[ind] & mjdlist=mjdlist[ind] - nstd = 70L - flag_pipe = lonarr(nepoch,nstd) - flag_new = lonarr(nepoch,nstd) - - ; find the fiberid of the std and get synflux - ; reject epoch with gri abs(log(synflux/calibflux))>0.1 - ; 1. for the pipeline reduction - fiber = rm_findstd(platelist, mjdlist, calibdir='', synflux=synflux, $ - calibflux=calibflux) - gri_ratio = (alog10(synflux/calibflux))[*,*,[1,2,3]] - for i=0,nstd-1 do begin - for j=0,nepoch-1 do begin - arr=where(abs(gri_ratio[j,i,*]) le 0.1, nnn) - if nnn eq 3 then flag_pipe[j,i]=1L - endfor - endfor - ; 2. for the new reduction - fiber = rm_findstd(platelist, mjdlist, calibdir='recalib/', synflux=synflux, $ - calibflux=calibflux) - gri_ratio = (alog10(synflux/calibflux))[*,*,[1,2,3]] - for i=0,nstd-1 do begin - for j=0,nepoch-1 do begin - arr=where(abs(gri_ratio[j,i,*]) le 0.1, nnn) - if nnn eq 3 then flag_new[j,i]=1L - endfor - endfor - - ; now compute the rms spectra for stars - id_std = where(strtrim(fibermap.sourcetype) eq 'STD') - rm_readspec,platelist[0],1,mjd=mjdlist[0],wave=wave,calibdir='wh_skysub/' ; 'recalib/' - npix=n_elements(wave) - rmsspec_pipe=dblarr(npix,nstd) & meanspec_pipe=dblarr(npix,nstd) - rmsspec_new=dblarr(npix,nstd) & meanspec_new=dblarr(npix,nstd) - mederr_all=dblarr(npix,nstd) - for i=0, nstd-1 do begin - - ; pipeline reduction - ind = where(flag_pipe[*,i] eq 1) - mjd_use = mjdlist[ind] - rm_prepspec, mjdlist=mjd_use,calibdir='',id_coadd=id_std[i],$ - meanspec=meanspec,rmsspec=rmsspec - meanspec_pipe[*,i] = meanspec - rmsspec_pipe[*,i] = rmsspec - - ; new reduction - ind = where(flag_new[*,i] eq 1) - mjd_use = mjdlist[ind] - rm_prepspec, mjdlist=mjd_use,calibdir='wh_skysub/',id_coadd=id_std[i],$ - meanspec=meanspec,rmsspec=rmsspec,mederr=mederr - meanspec_new[*,i] = meanspec - rmsspec_new[*,i] = rmsspec - mederr_all[*,i] = mederr - endfor - - result = {platelist:platelist, mjdlist:mjdlist, flag_pipe:flag_pipe, flag_new:flag_new, $ - meanspec_pipe:meanspec_pipe, rmsspec_pipe:rmsspec_pipe, meanspec_new:meanspec_new, $ - rmsspec_new:rmsspec_new,mederr:mederr_all} - outfile = getenv('IDLRM_DIR') + '/misc/rmsspec_std.fits' - mwrfits, result, outfile, /create - - ; make a plot - rms_mean_ratio_pipe = rmsspec_pipe/meanspec_pipe - rms_mean_ratio_new = rmsspec_new/meanspec_new - skymask=rm_skymask(wave, margin=3) ;,skyfile = getenv('IDLRM_DIR')+'/etc/dr9-sky-mask.txt',fmt='d') - ind=where(skymask gt 0, complement=indd) - - ang = string(197B) - figfile = getenv('IDLRM_DIR') + '/misc/rmsspec_std.eps' - begplot, name=figfile, /encap,/color,/cmyk, xsize=6,ysize=4 - thick=3 - xarr=wave & yarr=(median(rms_mean_ratio_pipe,dim=2)) - yarr[indd]=interpol(yarr[ind], xarr[ind], xarr[indd]) - plot, xarr[ind], yarr[ind], xrange=[3600, 1d4],/xsty,yrange=[0,0.2],/ysty, $ - xtitle = textoidl('Wavelength [')+ang+']', ytitle=textoidl('RMS Flux / Mean Flux'),thick=thick, pos=[0.15, 0.165, 0.94, 0.98] - yarr=(quantile_2d(0.16, rms_mean_ratio_pipe,dim=2)) - yarr[indd]=interpol(yarr[ind], xarr[ind], xarr[indd]) - oplot, xarr[ind], yarr[ind],line=2,thick=thick - yarr = (quantile_2d(0.84, rms_mean_ratio_pipe,dim=2)) - yarr[indd]=interpol(yarr[ind], xarr[ind], xarr[indd]) - oplot, xarr[ind], yarr[ind], line=2,thick=thick - - yarr=(median(rms_mean_ratio_new,dim=2)) - yarr[indd]=interpol(yarr[ind], xarr[ind], xarr[indd]) - oplot, xarr[ind], yarr[ind],color=cgcolor('cyan'),thick=thick - yarr=(quantile_2d(0.16, rms_mean_ratio_new,dim=2)) - yarr[indd]=interpol(yarr[ind], xarr[ind], xarr[indd]) - oplot, xarr[ind], yarr[ind],line=2,color=cgcolor('cyan'),thick=thick - yarr=(quantile_2d(0.84, rms_mean_ratio_new,dim=2)) - yarr[indd]=interpol(yarr[ind], xarr[ind], xarr[indd]) - oplot, xarr[ind], yarr[ind], line=2,color=cgcolor('cyan'),thick=thick - - yarr=(median(mederr_all/meanspec_new,dim=2)) - yarr[indd]=interpol(yarr[ind], xarr[ind], xarr[indd]) - oplot, xarr[ind], yarr[ind], color=cgcolor('red'),thick=thick - yarr=(quantile_2d(0.16, mederr_all/meanspec_new,dim=2)) - yarr[indd]=interpol(yarr[ind], xarr[ind], xarr[indd]) - oplot, xarr[ind], yarr[ind],line=2,color=cgcolor('red'),thick=thick - yarr=(quantile_2d(0.84, mederr_all/meanspec_new,dim=2)) - yarr[indd]=interpol(yarr[ind], xarr[ind], xarr[indd]) - oplot,xarr[ind],yarr[ind],line=2,color=cgcolor('red'),thick=thick - - xyouts, 0.18, 0.89, 'pipeline reduction',/norm - xyouts, 0.18, 0.84, 'custom reduction', /norm, color=cgcolor('cyan') - - endplot - -end diff --git a/pro/rm/rm_prep_skysub.pro b/pro/rm/rm_prep_skysub.pro deleted file mode 100644 index 1c0ffa05e..000000000 --- a/pro/rm/rm_prep_skysub.pro +++ /dev/null @@ -1,254 +0,0 @@ -;+ -; rm_prep_skysub -; Collection of routines to prepare for the improved sky subtraction -; using the Wild&Hewett scheme - -;---- generate mask for sky pixels for the WH scheme -pro rm_gen_skymask, diag=diag - - ; set the default spPlate* dir - calibdir='recalib/' - - ;file='/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - ind=where(target[0].plate gt 0, nep) - indd=where(strtrim(target.sourcetype) eq 'SKY', nobj) - sky=target[indd] - plate=(sky.plate)[ind,*] & fiber=(sky.fiberid)[ind,*] & mjd=(sky.mjd)[ind,*] - nsky=nobj*nep - plate=reform(plate,nsky) & fiber=reform(fiber,nsky) & mjd=reform(mjd,nsky) - - ; read in all sky spectra - rm_readspec,plate,fiber,mjd=mjd,calibdir=calibdir,loglam=loglam,flux=flux,flerr=flerr,invvar=ivar - loglam=loglam[*,0] - lam=10.D^loglam - npix=n_elements(lam) - - ; get the 67% abs(flux) and med err; the former is the rms flux - rms_flux=quantile_2d(0.67,abs(flux),dim=2) - med_err=median(flerr,dim=2) - - ratio=(rms_flux/(med_err) ) > 0 - ; fix the bad pixels with err=0 at the red and blue edge - ind=where(finite(ratio) ne 1) - ratio[ind] = 1. - - ; find the sky pixels - ; first fit a low-order spline function to it - nord=2 - fullbkpt = bspline_bkpts(loglam, everyn=100, $ - bkpt=0, nord=nord) - sset = bspline_iterfit(loglam, ratio, $ - invvar=replicate(100., npix), lower=0, upper=1, fullbkpt=fullbkpt, $ - maxrej=100, outmask=outmask1, nord=nord, yfit=yfit) - - ;ind_sky=where(lam gt 6300. and lam lt 10300. and ratio gt rmin, npix_sky) - if ~keyword_set(wavemin) then wavemin=4000. - if ~keyword_set(wavemax) then wavemax=10300. - ind_sky=where(outmask1 eq 0 and lam ge wavemin and lam le wavemax, npix_sky) - - ; output the skymask [loglam at the sky pixels] - outfile=getenv('IDLRM_DIR')+'/etc/wh-sky-mask.txt' - fmt='(f6.4, " ", f9.3)' - openw, lun, outfile, /get_lun - printf, lun, '#loglam lam' - for i=0,npix_sky-1 do printf,lun,format=fmt,loglam[ind_sky[i]],lam[ind_sky[i]] - close, lun - free_lun, lun - - ; plot a diagnostic plot - if keyword_set(diag) then begin - figfile=getenv('IDLRM_DIR')+'/etc/wh-sky-mask.eps' - begplot, name=figfile,/color,xsize=10,ysize=6,/encap - xrange = [3500,10600] - plot, lam, rms_flux, xrange=xrange,/xsty,yrange=[0,4],xtitle='Obs Wavelength' - oplot,lam, med_err, color=cgcolor('red') - oplot, lam, ratio,psym=5 - oplot, lam, yfit, color=cgcolor('green'),thick=2 - oplot,lam[ind_sky],ratio[ind_sky],psym=5,color=cgcolor('cyan') - xyouts, 4000, 3.5, 'rms sky flux' - xyouts, 4000, 3.2, 'med sky err',color=cgcolor('red') - xyouts, 6000, 3.5, 'spline fit of rms/med_err ratio', color=cgcolor('green') - xyouts, 6000, 3.2, 'sky pixels', color=cgcolor('cyan') - endplot - endif - -end - -;------- rescaling of the sdss errors --- -; instead of using eqn. 1 of WH05, use the formula in getweights.pro in the package -; distributed by V. Wild -pro gen_err_rescaling, plate, mjd, calibdir=calibdir, alpha=alpha, beta1=beta1, $ - narr=narr, carr=carr, sarr=sarr, max_n_c=max_n_c, diag=diag, _EXTRA=Extra - - if ~keyword_set(calibdir) then calibdir='recalib/' - ; Two preset parameters used in the recaling - if ~keyword_set(alpha) then alpha=1 - if ~keyword_set(beta1) then beta1=0.3 - - ; get the median noise from sky spectra in this plate - rm_readspec,plate,mjd=mjd,plugmap=plugmap,calibdir=calibdir,/silent, _EXTRA=Extra - - ; On 10/29/2015, changed sourcetype tag 'SKY' to 'SKY' or 'NA' - ; as sky fibers in plugmap are typed 'NA' - ; this bug caused all the 2014 plates to use the median error for the 1000 objects - ; rather than for the 80 sky to estimate the error scaling, but it turns out that - ; these two median errors are very similar. - fiber=where( (strtrim(plugmap.sourcetype) eq 'SKY') or (strtrim(plugmap.sourcetype) eq 'NA' ) ) + 1L - rm_readspec,plate,fiber,mjd=mjd,wave=lam,loglam=loglam,flux=flux,flerr=flerr,calibdir=calibdir,/silent,_EXTRA=Extra - ; all wavelength arrays are identical - loglam=loglam[*,0] & lam=lam[*,0] - npix=n_elements(lam) - - ; this is the median noise array - narr=median(flerr,dim=2) - carr=narr - - ; get the sky and non-sky pixels - skyfile = getenv('IDLRM_DIR')+'/etc/wh-sky-mask.txt' - mask=rm_skymask(lam, margin=1L, skyfile=skyfile,fmt='x,d') - ind = where(mask eq 0, complement=indd) - if ind[0] ne -1 then carr[ind] = interpol(carr[indd], lam[indd], lam[ind] ) - - ind_good=where(narr gt 0 and lam lt 10300. and lam gt 4000.) - max_n_c = max( (narr - carr)[ind_good] ) - - ; this is to be multiplied by the pipeline reported noise - sarr = 1. - ( (narr - carr) / max_n_c )^alpha*beta1 < 1; - - if keyword_Set(diag) then begin - plot, narr, psym=5 - oplot, carr, thick=2,color=cgcolor('cyan') - - endif - -end -; ---- make a fits file to store all the scaled error arrays for the RM plates -pro make_wh_rescale_err - - file='/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' - target=mrdfits(file,1) - plate=target[0].plate & mjd=target[0].mjd - ind=where(plate gt 0, nep) - plate=plate[ind] & mjd=mjd[ind] - - rm_readspec, plate[0],1,mjd=mjd[0],calibdir='recalib/',wave=wave - npix=n_elements(wave) - result={plate:0L, mjd:0L, alpha:0.D, beta1:0.d, narr:dblarr(npix), carr:dblarr(npix),sarr:dblarr(npix), $ - max_n_c:0.D } - result=replicate(result, nep) - result.plate=plate & result.mjd=mjd - alpha=1 & beta1=0.3 - result.alpha=alpha & result.beta1=beta1 - for i=0L, nep - 1 do begin - gen_err_rescaling, plate[i], mjd[i], alpha=alpha, beta1=beta1, narr=narr, carr=carr, sarr=sarr, $ - max_n_c=max_n_c - result[i].narr=narr & result[i].carr=carr & result[i].sarr=sarr & result[i].max_n_c=max_n_c - endfor - - outfile = '/data3/quasar/yshen/ftp/bossredux/v5_7_1/wh_skysub/rescal_err.fits' - mwrfits, result, outfile, /create - -end - - -; -------- PCA of the sky spectra -pro gen_sky_pca, result=result, loglam=loglam, eigenspec=eigenspec, $ - nkeep=nkeep,niter=niter - -; set the default spPlate* dir - calibdir='recalib/' - - file='/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' - target=mrdfits(file,1) - ; reject the two epochs with the lowest sn - ind=where(target[0].plate gt 0 and target[0].mjd ne 56669 and target[0].mjd ne 56713, nep) - platelist=(target[0].plate)[ind] - mjdlist=(target[0].mjd)[ind] - indd=where(strtrim(target.sourcetype) eq 'SKY', nobj) - sky=target[indd] - plate=(sky.plate)[ind,*] & fiber=(sky.fiberid)[ind,*] & mjd=(sky.mjd)[ind,*] - nsky=nobj*nep - plate=reform(plate,nsky) & fiber=reform(fiber,nsky) & mjd=reform(mjd,nsky) - - ; read in all sky spectra - rm_readspec,plate,fiber,mjd=mjd,calibdir=calibdir,loglam=loglam,flux=flux,flerr=flerr,invvar=ivar - ; store the original noise array - ivar_ori = ivar - loglam=loglam[*,0] - lam=10.D^loglam - npix=n_elements(lam) - splog, 'Total # of sky spectra: ', nsky - - ; rescale the pipeline error - sarr_all = dblarr(npix, nep) - alpha=1 & beta1=0.3 - for i=0L, nep - 1L do begin - gen_err_rescaling, platelist[i], mjdlist[i], alpha=alpha, beta1=beta1, sarr=sarr,max_n_c=max_n_c - sarr_all[*,i] = sarr - - ;print, platelist[i], mjdlist[i], 'max_n_c=', max_n_c, max(sarr) - ;plot, sarr - ;pause - - ind = where(plate eq platelist[i] and mjd eq mjdlist[i], nnn) - for j=0l, nnn-1 do begin - flerr[*, ind[j]] = flerr[*, ind[j]]*sarr - ivar[*,ind[j]] = ivar[*,ind[j]]/sarr^2 - ;print, ind[j], ' ivar [min,max]=', min(ivar[*,ind[j]]), max(ivar[*,ind[j]]) - ;pause - endfor - endfor - ;message, 'stop' - splog, 'Finished rescaling noise arrays' - - ; keep only the sky pixel - skyfile = getenv('IDLRM_DIR')+'/etc/wh-sky-mask.txt' - mask=rm_skymask(lam, margin=1L, skyfile=skyfile, fmt='x,d') - ind_sky = where(mask eq 0, complement=ind_nonsky, n_skypix) - - ; remove objects with ivar=0 at any of the sky pixels - rejflag=lonarr(nsky) - for i=0L, nsky - 1 do begin - if total(ivar[ind_sky, i] gt 0) ne n_skypix then rejflag[i]=1 - endfor - ind=where(rejflag eq 0, nsky_good) - splog, 'rejected bad sky spectra: ', nsky - nsky_good - plate=plate[ind] & fiber=fiber[ind] & mjd=mjd[ind] - nsky=nsky_good - flux=flux[*,ind] & ivar=ivar[*,ind] & ivar_ori=ivar_ori[*,ind] - - ;message, 'stop' - - ; do the PCA - if ~keyword_set(nkeep) then nkeep=n_elements(ind_sky) - if ~keyword_set(niter) then niter=1 - ; use pca_solve to get eigenspectra - ;eigenspec = pca_solve(flux[ind_sky,*], ivar[ind_sky,*], $ - ; nkeep=nkeep, eigenval=eigenval, niter=niter, acoeff=acoeff) - - ; alternative way to get eigenspectra - ; should I replace flux[ind_sky,*] with flux[ind_sky,*]*sqrt(ivar[ind_sky,*])? - ; my test shows that it doesn't really matter which eigenvector basis set is used. - ;pca, transpose(flux[ind_sky,*]), eigenval,eigenspec,percentages, proj_obj, /silent - pca, transpose(flux[ind_sky,*]*sqrt(ivar[ind_sky,*])), eigenval,eigenspec,percentages, proj_obj, /silent - acoeff=flux[ind_sky,*] ## eigenspec - acoeff=transpose(acoeff) - eigenspec=transpose(eigenspec) - - ; create an output structure - result = {plate:plate,fiber:fiber,mjd:mjd,nsky:nsky, niter:niter, $ - eigenspec:eigenspec, eigenval:eigenval, acoeff:acoeff, $ - loglam:loglam, flux:flux, ivar_ori:ivar_ori, ivar:ivar, skymask:mask, $ - ind_sky:ind_sky, ind_nonsky:ind_nonsky} - - ; pca on flux - ;outfile='/data3/quasar/yshen/ftp/bossredux/v5_7_1/wh_skysub/pca.fits' - ; pca on flux/rescaled noise - outfile='/data3/quasar/yshen/ftp/bossredux/v5_7_1/wh_skysub/pca_norm.fits' - mwrfits, result, outfile, /create - -end -; - diff --git a/pro/rm/rm_prepspec.pro b/pro/rm/rm_prepspec.pro deleted file mode 100644 index 8fa4e128d..000000000 --- a/pro/rm/rm_prepspec.pro +++ /dev/null @@ -1,120 +0,0 @@ -;+ -; NAME: -; rm_prepspec -; PURPOSE: -; Generate RMS and mean spectra -;---------------------------------- -pro rm_prepspec, mjdlist=mjdlist,calibdir=calibdir,id_coadd=id_coadd,$ - meanspec=meanspec,rmsspec=rmsspec,wave=wave,mederr=mederr,optimal=optimal,$ - maxerr=maxerr, outlier_rej=outlier_rej, percent=percent - - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') + '/' - if n_elements(calibdir) eq 0 then calibdir='recalib/' - - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - ; If specified, only coadd these objects - if n_elements(id_coadd) gt 0 then fibermap = fibermap[id_coadd] - - nobj=n_elements(fibermap) - platearr = fibermap.plate - fiberarr = fibermap.fiberid - mjdarr = fibermap.mjd - ind = where(platearr[*,0] gt 0, nnn) - platearr = platearr[ind,0] - fiberarr = fiberarr[ind,*] - mjdarr = mjdarr[ind,0] - ; If specified, only use these epochs - if n_elements(mjdlist) gt 0 then begin - flag = lonarr(nnn) - for j=0L,n_elements(mjdlist) - 1L do begin - indd = where(mjdarr eq mjdlist[j]) - if indd[0] ne -1 then flag[indd] = 1L - endfor - ind_mjd = where(flag eq 1) - platearr = platearr[ind_mjd] - fiberarr = fiberarr[ind_mjd,*] - mjdarr = mjdarr[ind_mjd] - endif - nepoch = n_elements(platearr) - - ; Get the individual spectra - ; Enforce the wave array is the same as in the new reduction - rm_readspec,platearr[0],1,mjd=mjdarr[0],wave=wave,calibdir='recalib/' - npix=n_elements(wave) - - wave_all = dblarr(npix,nobj,nepoch) - for i=0,nepoch-1 do begin - for j=0,nobj-1 do wave_all[*,j,i]=wave - endfor - spec_all = dblarr(npix,nobj,nepoch) - ivar_all = dblarr(npix,nobj,nepoch) - ferr_all = dblarr(npix,nobj,nepoch) - meanspec = dblarr(npix,nobj) - rmsspec = dblarr(npix,nobj) - - for i=0L, nepoch - 1L do begin - - rm_readspec,platearr[i], fiberarr[i,*],mjd=mjdarr[i],calibdir=calibdir, $ - flux=flux,invvar=ivar,flerr=flerr,wave=wave1 - - if calibdir ne 'recalib/' and calibdir ne 'wh_skysub/' then begin - for j=0L, nobj-1 do begin - spec_all[*,j,i] = interpol(flux[*,j],wave1[*,0],wave) - ivar_all[*,j,i] = interpol(ivar[*,j],wave1[*,0],wave) - ferr_all[*,j,i] = interpol(flerr[*,j],wave1[*,0],wave) - endfor - endif else begin - spec_all[*,*,i] = flux - ivar_all[*,*,i] = ivar - ferr_all[*,*,i] = flerr - endelse - endfor - - ; -------------------------------------- - ; Now compute the mean and rms spectra - ; This is the traditional way - - ; reject outliers if required using bspline_iterfit - if keyword_set(outlier_rej) then begin - lower=5. & upper=5. - binsz = alog10(wave[1]) - alog10(wave[0]) - bkptbin = 1.2*binsz - bkpt=0 - maxrej=ceil(nepoch*npix*nobj*0.1) - sset = bspline_iterfit(alog10(wave_all),spec_all,invvar=ivar_all,nord=3, $ - bkspace=bkptbin,bkpt=bkpt,lower=lower,upper=upper,outmask=outmask, maxiter=10, $ - /silent,maxrej=maxrej) - ivar_all = ivar_all*outmask - endif - - sum1 = total(spec_all*ivar_all, 3, /double) - sum2 = total(ivar_all, 3, /double) - ; only deal with pixels where there is at least one good pixel - ind = where(sum2 gt 0) - meanspec[ind] = sum1[ind]/sum2[ind] - - devi_all = spec_all - for i=0L, nepoch - 1 do devi_all[*,*,i]=spec_all[*,*,i] - meanspec - sum1 = total(devi_all^2*ivar_all, 3, /double) - rmsspec[ind] = sqrt(sum1[ind]/sum2[ind]) - - if keyword_set(percent) then begin ; using 68% percentile to estimate rms - for i=0L, nobj-1 do $ - rmsspec[*,i]=quantile_2d(0.68, abs(devi_all[*,i,*]), dim=2) - endif - - mederr = median(ferr_all,dim=3) - maxerr = max(ferr_all,dim=3) - ;--------------------------------------- - - ; -------------------------------------- - ; Optimal way of calculating mean and rms spectra and their errors - ; Use Keith Horne's algorithm - - - - ; -------------------------------------- - - ;message,'stop' -end diff --git a/pro/rm/rm_qsofit.pro b/pro/rm/rm_qsofit.pro deleted file mode 100644 index 641f3ccd2..000000000 --- a/pro/rm/rm_qsofit.pro +++ /dev/null @@ -1,1063 +0,0 @@ -;+ -; NAME: -; rm_qsofit -; -; PURPOSE: -; Globally fit the SDSS QSO spectrum from 1350A to 7180A -; -; CALLING SEQUENCE: -; rm_qsofit, obs_wave, flux, err, z, [ra=,dec=,/psplot,/fits] -; -; -; INPUTS: -; lam0 - Wavelength array of the spectrum [NPIX] -; flux0 - Flux array of the spectrum in units of 1d-17 erg/s/cm^2/A [NPIX] -; err0 - Error array of the spectrum; same unites as flux0 -; z - Redshift of the quasar -; -; OPTIONAL INPUTS: -; ivar0 - Inverse variance array of the spectrum [NPIX]; will override err0 -; ra - RA of the object; required for dereddening -; dec - Dec of the object; required for dereddening -; deredden - /deredden to deredden the spectrum using Galactic reddening -; emparfile - File path of the linefit Yanny parameter file -; wave_range - Trim the spectrum within [minwave,maxwave] -; input_fitmask - User-defined additional pixel mask [e.g., absorption mask] -; add_noise - Set /add_noise to perturb the spectrum once using err array -; fit_flag - A 5-element array to set fitting for different continuum components -; outdir - Path of the output fits and QA plot files -; output_name - Prefix of the output files -; psplot - Set /psplot to output a ps QA file to outdir/QA/ -; fits - Set /fits to write the output structure to outdir/fits/ -; fit_line - If not set, then only fit the continuum -; nsmooth - Number of pixels to boxcar-smooth for plotting -; -; OUTPUTS: -; para - Output structure of the fitting results -; linelist - List of lines -; -; OPTIONAL OUTPUTS: -; -; -; COMMENTS: -; -; -; PROCEDURES CALLED: -; -; -; Bugs: -; 1. auto_abs_rej iteration and outlier_mask tend to reject good pixels in high SN -; spectra (primarily for Hbeta and Halpha fits). Fixed by excluding Hbeta/Halpha -; regions in using auto_abs_rej and outlier_mask. -; 2. during outlier_mask to reject 5sigma lower pixels, some pixels near sharp narrow lines -; (such as [NeV]) get rejected in high SN spectrum. Fixed by only apply outlier_mask to -; lambda_rest<3000A -; -; REVISION HISTORY: -; 20-Feb-2014 Written by Yue Shen, Carnegie Obs -; 08-May-2014 Changed outlier_mask to apply to lambda_rest<3000A -; - - -function Fe_flux_mgii, xval, pp - - common Fe_temp, wave_Fe_civ, flux_fe_civ, wave_Fe_mgii, flux_Fe_mgii $ - , wave_Fe_balmer, flux_Fe_balmer - - if n_elements(wave_Fe_mgii) eq 0 then begin - ; read in the Salvaider/Vestergaard template for MgII - file = getenv('IDLRM_DIR')+'/template/feconv_uv_shen' - ; wave_Fe1 [2200, 3090]; wave_Fe2 [4526, 6357] - ; readcol, file, format = 'x,d,d,d,d', wave_1, flux_1, wave_2, flux_2, /silent - readcol, file, format='d,d', logwave_1, flux_1 - wave_Fe_mgii = 10.D^logwave_1 - flux_Fe_mgii = flux_1*1d15 - endif - - ;c = 2.9979246d5 - Fe_FWHM = pp[1] ; broadening FWHM - - nnn = n_elements(xval) - yval = dblarr(nnn) - xval_new = xval*(1.0 + pp[2]) - - ind = where(xval_new ge 1200. and xval_new le 3500.) - if ind[0] ne -1 then begin - - if Fe_FWHM le 900.0 then sig_conv = sqrt(910.0^2 - 900.0^2)/2./sqrt(2.*alog(2.)) $ - else sig_conv = sqrt(Fe_FWHM^2 - 900.0^2)/2./sqrt(2.*alog(2.)) - - ; Get sigma in pixel space - sig_pix = sig_conv/103.6 ; where 550 km/s is the median dispersion - ; for Salviander et al. (Vestergarrd's) Fe template from [2200, 3090] - ; but note that the Vestergaard's template has a different median - ; dispersion 55 km/s in wavelength for [2200,3090] - ; For the Tsuzuki06 template, dispersion is ~50km/s within [2200,3500] - ; and varies between 65km/s and 40km/s - ; Here I am using feconv_uv_shen, which has constant v_disp=103.6 km/s - - khalfsz = round (4*sig_pix+1) - xx= findgen(khalfsz*2+1) - khalfsz - kernel = exp(-xx^2/(2*sig_pix^2)) - kernel = kernel/total(kernel) - - flux_Fe_conv = convol(flux_Fe_mgii, kernel, /center, /edge_truncate) - yval[ind] = pp[0]*spline(wave_Fe_mgii, flux_Fe_conv, xval_new[ind]) - endif - - return, yval - -end - -function Fe_flux_balmer, xval, pp - - common Fe_temp, wave_Fe_civ, flux_fe_civ, wave_Fe_mgii, $ - flux_Fe_mgii, wave_Fe_balmer, flux_Fe_balmer - - if n_elements(wave_Fe_balmer) eq 0 then begin - - ; read in the Boroson&Green optical template for Balmer - file = getenv('IDLRM_DIR')+'/template/irontemplate.dat' - readcol, file, format = 'd,d', logwave_1, flux_1, /silent - wave_Fe_balmer = 10.0D^logwave_1 - flux_Fe_balmer = flux_1*1d15 - ind = where(wave_Fe_balmer ge 3686. and wave_Fe_balmer le 7484.) - wave_Fe_balmer = wave_Fe_balmer[ind] - flux_Fe_balmer = flux_Fe_balmer[ind] - - endif - - - Fe_FWHM = pp[1] ; broadening FWHM - - nnn = n_elements(xval) - yval = dblarr(nnn) - xval_new = xval*(1.0 + pp[2]) - - ind = where(xval_new ge 3686. and xval_new le 7484.) - if ind[0] ne -1 then begin - ; Convolve the original Fe template with parameter Fe_FWHM - ; (I Zw1 has intrinsic FWHM 900 km/s) - ; initial FWHM in the template is 900 km/s, - ; so force Fe_FWHM=910.0 if input Fe_FWHM <= 900 km/s - if Fe_FWHM le 900.0 then sig_conv = sqrt(910.0^2 - 900.0^2)/2./sqrt(2.*alog(2.)) $ - else sig_conv = sqrt(Fe_FWHM^2 - 900.0^2)/2./sqrt(2.*alog(2.)) ; in km/s - - ; Get sigma in pixel space - sig_pix = sig_conv/106.3 ; 106.3 km/s is the dispersion for the BG92 FeII template - - khalfsz = round (4*sig_pix+1) - xx= findgen(khalfsz*2+1) - khalfsz - kernel = exp(-xx^2/(2*sig_pix^2)) - kernel = kernel/total(kernel) - - flux_Fe_conv = convol(flux_Fe_balmer, kernel, /center, /edge_truncate) - yval[ind] = pp[0]*spline(wave_Fe_balmer, flux_Fe_conv, xval_new[ind]) - endif - - return, yval - -end - -function f_poly_conti, xval, pp - - xval2 = xval - 3000. - yval = 0*xval2 - for i=0L, n_elements(pp) - 1L do $ - yval = yval + pp[i]*xval2^(i+1) - - return, yval -end - -function f_conti_only, xval, pp - - f_pl = pp[0]*(xval/3000.0)^pp[1] ; power-law continuum - f_conti_BC = balmer_conti(xval, pp[2:4]) ; Balmer continuum - f_poly = f_poly_conti(xval, pp[5:*]) - yval = f_pl + f_conti_BC + f_poly - - return, yval -end - -function f_fe_only, xval, pp - - yval = Fe_flux_mgii(xval, pp[0:2]) + Fe_flux_balmer(xval, pp[3:5]) - - return, yval -end - -function f_conti_all, xval, pp - - ; pp[0]: norm_factor for the MgII Fe_template - ; pp[1]: FWHM for the MgII Fe_template - ; pp[2]: small shift of wavelength for the MgII Fe template - ; pp[3:5]: same as pp[0:2] but for the Hbeta/Halpha Fe template - ; pp[6]: norm_factor for continuum f_lambda = (lambda/3000.0)^{-alpha} - ; pp[7]: slope for the power-law continuum - ; pp[8:10]: norm, Te and Tau_e for the Balmer continuum at <3646 A - ; pp[11:*]: polynomial for the continuum - - ;common objdata, ra_c, dec_c, z_c - - nnn = n_elements(xval) - yval = dblarr(nnn) - f_Fe_MgII = Fe_flux_mgii(xval, pp[0:2]) - f_Fe_Balmer = Fe_flux_balmer(xval, pp[3:5]) - - f_pl = pp[6]*(xval/3000.0)^pp[7] ; power-law continuum - f_conti_BC = balmer_conti(xval, pp[8:10]) ; Balmer continuum - f_poly = f_poly_conti(xval, pp[11:*]) - ;f_pl = pp[6]*(xval/3000.0)^pp[7]+pp[8]*(xval/3000.0)^pp[9] ;double PL continuum - ;f_conti_BC = balmer_conti(xval, pp[10:12]) ; Balmer continuum - ;f_poly = f_poly_conti(xval, pp[13:*]) - - yval = f_pl + f_Fe_MgII + f_Fe_Balmer + f_conti_BC + f_poly - - return, yval - -end - -;----------------------------------------------------------------------------------- -; Main Routine -;----------------------------------------------------------------------------------- - -pro rm_qsofit, lam0, flux0, err0, z, ivar0=ivar0,ra=ra,dec=dec, deredden=deredden $ - , emparfile=emparfile, conti_fit=conti_fit, fit_flag=fit_flag $ - , line_fit_flag=line_fit_flag $ - , f_conti_model=f_conti_model, xrange=xrange, outdir=outdir $ - , psplot=psplot,fits=fits,output_name=output_name,silent=silent $ - , fit_line=fit_line, para=para, SDSS_name=SDSS_name,objtag=objtag,append=append $ - , linelist=linelist, wave_range=wave_range $ - , input_fitmask=input_fitmask $ ; input fitmasks, e.g., custom absorption masks - , poly_ord=poly_ord, rej_iter=rej_iter $ - , add_noise = add_noise, local_CIV_CIII_fit = local_CIV_CIII_fit $ - , auto_abs_rej = auto_abs_rej, conti_auto_abs_rej = conti_auto_abs_rej $ - , nsmooth=nsmooth, diet=diet, sim_conti_fe_fit=sim_conti_fe_fit $ - , noplot=noplot, get_line_prop=get_line_prop $ - , xtol=xtol,ftol=ftol, subdir=subdir, more_anno=more_anno - - ;on_error, 2 - - ;common objdata, ra_c, dec_c, z_c - ;ra_c = ra & dec_c = dec & z_c = z - - ; Define line fitting tolerance in mpfitfun, - ; which helps for some objects in line fits (i.e., Hbeta and Halpha) - if ~keyword_set(xtol) then xtol=1d-20 - if ~keyword_set(ftol) then ftol=1d-15 - - ; Define constants - cs = 2.9979246d5 ; speed of light, km/s - if n_elements(z) eq 0 then z = 0. ; default is in restframe - ; if n_elements(conti_auto_abs_rej) eq 0 then conti_auto_abs_rej = 1L - - ; default is to auto reject absorption from the first linefit - if n_elements(auto_abs_rej) eq 0 then auto_abs_rej = 1L - if n_elements(fit_line) eq 0 then fit_line = 1L ; default is to fit the lines - - lam = lam0 & flux = flux0 - if keyword_set(ivar0) then begin - err = 0.*ivar0 - ind = where(ivar0 NE 0.) - err[ind] = 1./sqrt(ivar0[ind]) - endif else err = err0 - - npix = n_elements(flux) - - if keyword_set(add_noise) then begin ; add gaussian noise - flux = flux + randomn(seed, npix)*err - endif - - ; fit_flag=[fit_balmer_conti,not_fit_UV_Fe,fix_mgii_fe_FWHM, - ; fix_balmer_fe_FWHM,fit_poly_conti] - ; Set the flag to fit different components - ; Note in some cases the Balmer continuum is poorly constrained, - ; and hence will degrade the global power-law fit - if n_elements(fit_flag) eq 0 then fit_flag = [0,0,0,0,1] - - ; If not fitting UV FeII template, then do not set fix_mgII_fe_FWHM=1 - if fit_flag[1] eq 1 then fit_flag[2] = 0L - - ; Default is to add a 3rd order polynomial to the continuum - if n_elements(poly_ord) eq 0 then poly_ord = 3 - - ; Number of linefit absorption rejection iteration - if n_elements(rej_iter) eq 0 then rej_iter = 2L - - ; Default is to fit continuum+FeII simultaneously - if n_elements(sim_conti_fe_fit) eq 0 then sim_conti_fe_fit=1L - - ; common block for the FeII template - common Fe_temp, wave_Fe_civ, flux_fe_civ, wave_Fe_mgii, flux_Fe_mgii, $ - wave_Fe_balmer, flux_Fe_balmer - if n_elements(wave_Fe_mgii) eq 0 then begin - - ; read in the Salvaider/Vestergaard template for MgII - file = getenv('IDLRM_DIR')+'/template/feconv_uv_shen' - ; wave_Fe1 [2200, 3090]; wave_Fe2 [4526, 6357] - ; readcol, file, format = 'x,d,d,d,d', wave_1, flux_1, wave_2, flux_2, /silent - readcol, file, format='d,d', logwave_1, flux_1 - wave_Fe_mgii = 10.D^logwave_1 - flux_Fe_mgii = flux_1*1d15 - - ; read in the Boroson&Green optical template for Balmer - file = getenv('IDLRM_DIR')+'/template/irontemplate.dat' - readcol, file, format = 'd,d', logwave_1, flux_1, /silent - wave_Fe_balmer = 10.0D^logwave_1 - flux_Fe_balmer = flux_1*1d15 - ind = where(wave_Fe_balmer ge 3686. and wave_Fe_balmer le 7484.) - wave_Fe_balmer = wave_Fe_balmer[ind] - flux_Fe_balmer = flux_Fe_balmer[ind] - - endif - - ; deredden Galactic extinction if asked - if keyword_set(deredden) then begin - if not keyword_Set(silent) then splog, $ - 'Dereddening spectrum using the SFD map and CCM extinction curve' - dereddening_spec, lam, flux, err=err, ra=ra, dec=dec $ - , dered_flux = dered_flux, dered_err = dered_err - flux = dered_flux & err = dered_err - endif - - ivar = dblarr(n_elements(err)) - indd = where(err gt 1d-6) - ivar[indd] = 1./(err[indd])^2 - - ; mask out 3-sigma lower outlier of the 20-pix smoothed spectrum, - ; to reduce the effects of absorption - fitmask = ivar NE 0.0 - - ; Mask outliers and absorption in the emission lines by finding 5-sigma - ; lower outliers from 20 pix smoothed spectrum - if n_elements(outlier_mask) eq 0 then outlier_mask = 1L - if keyword_set(outlier_mask) then begin - disp_vec = (alog10(lam)-shift(alog10(lam), 1))[1:*] - disp = djs_median(disp_vec) - NRES = 20L ; 20L - bkspace = NRES*disp - spec_set = bspline_iterfit(alog10(lam), flux $ - , invvar = ivar*fitmask $ - , bkspace = bkspace $ - , yfit = flux_spline, maxiter = 10 $ - , upper = 0, lower = 5, nord = 3 $ - , maxrej = 50, outmask = outmask, /silent) - ; exclude redward of restframe 3000A, since little absorption expected there. - ind_exclude = where(lam/(1.+z) ge 3000.) - if ind_exclude[0] ne -1 then outmask[ind_exclude]=1 - fitmask = fitmask*outmask - endif - ; Let's mask the last 40 pixels in the red as bad - ; fitmask[npix-40:*]=0 - - ; Add additional mask bits from input - if keyword_set(input_fitmask) then begin - if n_elements(input_fitmask) eq n_elements(lam) then $ - fitmask = fitmask*input_fitmask else $ - splog, 'input_fitmask dimension does not match lam grid.' - endif - - ; Define the continuum+Fe+Balmer continuum fitting windows - window0 = [1350., 1360.] - window1 = [1445., 1465.] & window2 = [1700., 1705.] - window3_1 = [2155., 2400.] & window3_2 = [2480., 2675.] - window4 = [2925., 3400.] & window5 = [4200., 4230.] - window6 = [4435., 4700.] & window7 = [5100., 5535.] - window8 = [6005., 6035.] & window9 = [6035., 6250.] - window10 = [6800., 7000.] & window11 = [7160., 7180.] - - ; This is the continuum windows that are used in conti_fit. - ; You may add new windows here - window_all = [ [1150., 1170.], [1275., 1290.], [1350., 1360.], [1445., 1465.], $ - [1700., 1705.], [1770., 1800.], [2155., 2400.], [2480., 2675.], $ - [2925., 3400.], [3775., 3832.], [4000., 4050.], [4200., 4230.], $ ; [3775., 3832.] - [4435., 4700.], [5100., 5535.], [6005., 6035.], [6110., 6250.], $ - [6800., 7000.], [7160., 7180.], [7500., 7800.], [8050., 8150.] ] - - ; Shift to restframe - wave = lam/(1.0+z) - - ; Trim the spectrum in the windows specified by keywords wave_range - if keyword_Set(wave_range) then begin - ind = where(wave ge wave_range[0] and wave le wave_range[1]) - wave = wave[ind] & flux = flux[ind] & err = err[ind] - fitmask = fitmask[ind] - endif - - ; This is the pixels for simultaneous continuum+FeII fit - if n_elements(ind) ne 0 then tmp_ind = temporary(ind) - ;print, n_elements(ind) - for jj=0L, (size(window_all))[2] - 1 do begin - tmp = where( wave ge window_all[0,jj] and wave le window_all[1,jj] $ - and fitmask ne 0., ntmp) - if ntmp gt 0 then begin - if n_elements(ind) eq 0 then ind = tmp else ind = [ind, tmp] - endif - endfor - - if n_elements(ind) lt 10 then begin - splog, 'Fitting pixel < 10. return. ' - return - endif - - ; ## now fit the psedu-continuum - ; set limiting conditions on paramters - parinfo = replicate({value:0.D, fixed:0, limited:[0,0],limits:[0.D,0],tied:''}, $ - 11+poly_ord) - parinfo.value = [1.0D, 3000.0D, 0.0, 1.0, 3000.0D, 0.0, $ - 1.0D, -2.0D, $ - 1.0, 15000.D, 0.5, $ - replicate(0.,poly_ord) ] - - ;-- limit the Fe_MgII component - parinfo[0].limited = [1, 0] & parinfo[0].limits = [0., 1d10] - parinfo[1].LIMITED = [1, 1] & parinfo[1].LIMITS = [1200, 1d4] - parinfo[2].LIMITED = [1, 1] & parinfo[2].LIMITS = [-0.01, 0.01] - if fit_flag[1] eq 1 then begin ; do not fit the UV iron template - parinfo[0].limited = [0,0] & parinfo[0].value = 0. - parinfo[0:2].fixed = 1L - endif - if fit_flag[2] eq 1 then begin - parinfo[1].fixed = 1L ; fix the FWHM of the MgII FeII - endif - ;-- limit the Fe_balmer component - parinfo[3].limited = [1, 0] & parinfo[3].limits = [0., 1d10] - parinfo[4].LIMITED = [1, 1] & parinfo[4].LIMITS = [1200, 1d4] - parinfo[5].LIMITED = [1, 1] & parinfo[5].LIMITS = [-0.01, 0.01] - if fit_flag[3] eq 1 then begin - parinfo[4].fixed = 1L ; fix the FWHM of the Balmer FeII - endif - ;-- limit the PL component - parinfo[6].limited = [1,0] & parinfo[6].limits = [0., 1d10] - parinfo[7].LIMITED = [1, 1] & parinfo[7].LIMITS = [-5.0,3.0] - ;parinfo[8].limited = [1,0] & parinfo[8].limits = [0., 1d10] - ;parinfo[9].LIMITED = [1, 1] & parinfo[9].LIMITS = [-5.0,3.0] - ;-- limit the Balmer continuum - if fit_flag[0] eq 0 then begin ; do not fit for Balmer continuum - parinfo[8:10].fixed = 1L & parinfo[8].value = 0. - ;parinfo[10:12].fixed = 1L & parinfo[10].value = 0. - endif else begin - parinfo[8].limited = [1, 0] & parinfo[8].limits = [0., 1d10] - parinfo[9].LIMITED = [1, 1] & parinfo[9].LIMITS = [10000., 50000.] - parinfo[10].LIMITED = [1, 1] & parinfo[10].LIMITS = [0.1, 2.] - ;parinfo[10].limited = [1, 0] & parinfo[10].limits = [0., 1d10] - ;parinfo[11].LIMITED = [1, 1] & parinfo[11].LIMITS = [10000., 50000.] - ;parinfo[12].LIMITED = [1, 1] & parinfo[12].LIMITS = [0.1, 2.] - endelse - ;-- limit the polynomial continuum component - if fit_flag[4] eq 0 then begin - parinfo[11:*].value = 0. & parinfo[11:*].fixed = 1L - ;parinfo[13:*].value = 0. & parinfo[13:*].fixed = 1L - endif - ;-- enforce the UV FeII to be zero is no enough pixels near MgII - ind_cover = where( ( (wave ge window3_2[0] and wave le window3_2[1]) or $ - (wave ge window4[0] and wave le window4[1]) ) $ - and fitmask ne 0, n_cover) - if n_cover lt 100 then begin - parinfo[0].value = 0. & parinfo[0:2].fixed = 1L - endif - ;-- enforce the optical FeII to be zero if not covered - ind_cover = where( ( (wave ge window6[0] and wave le window6[1]) or $ - (wave ge window7[0] and wave le window7[1]) ) $ - and fitmask ne 0, n_cover) - if n_cover lt 100 then begin - parinfo[3].value = 0. & parinfo[3:5].fixed = 1L - endif - - ; First try to fit the continuum-alone - if n_elements(ind_conti_only) ge 50 and not keyword_set(sim_conti_fe_fit) then begin - - parinfo1 = parinfo[6:*] - conti_only_fit = mpfitfun('f_conti_only', wave[ind_conti_only] $ - , flux[ind_conti_only], err[ind_conti_only] $ - , parinfo = parinfo1, perror = perror, yfit = yfit1, /quiet $ - , nfev = nfev, niter = niter, status = status, bestnorm = chi2) - conti_only_err = perror - ttt = where(parinfo1.fixed eq 1 or strlen(parinfo1.tied) gt 0, nfix) - dof = n_elements(ind_conti_only) - (n_elements(parinfo1) - nfix) - redchi2_conti_only = chi2/dof - - ; If this is successful, then proceed to fit the FeII - if redchi2_conti_only gt 0 and redchi2_conti_only lt 100 then begin - - parinfo1 = parinfo[0:5] - flux1 = flux[ind_Fe_only] - f_conti_only(wave[ind_Fe_only], conti_only_fit) - fe_only_fit = mpfitfun('f_fe_only', wave[ind_Fe_only], flux1 $ - , err[ind_Fe_only] $ - , parinfo = parinfo1, perror = perror, yfit = yfit1, /quiet $ - , nfev = nfev, niter = niter, status = status, bestnorm = chi2) - Fe_only_err = perror - ttt = where(parinfo1.fixed eq 1 or strlen(parinfo1.tied) gt 0, nfix) - dof = n_elements(ind_Fe_only) - (n_elements(parinfo1) - nfix) - redchi2_Fe_only = chi2/dof - - if redchi2_Fe_only gt 0 and redchi2_Fe_only le 100 then begin - conti_fit = [conti_only_fit, Fe_only_fit] - conti_err = [conti_only_err, Fe_only_err] - endif - - endif - endif - - if n_elements(ind_conti_only) le 50 or keyword_set(sim_conti_fe_fit) then begin - - conti_fit = mpfitfun('f_conti_all', wave[ind], flux[ind], err[ind] $ - , parinfo = parinfo, perror = perror, yfit = yfit1, /quiet $ - , nfev = nfev, niter = niter, status = status, bestnorm = chi2 $ - , MAXITER = 100L) - conti_err = perror - ttt = where(parinfo.fixed eq 1 or strlen(parinfo.tied) gt 0, nfix) - dof = n_elements(ind) - (n_elements(parinfo) - nfix) - redchi2 = chi2/dof - if not keyword_set(silent) then splog, $ - 'CONTI-FITTING: MPFIT nfev=', nfev, ' niter=', niter, $ - ' status=', status, ' redchi2=', redchi2 - - ; Re-fit the continuum without the Balmer continuum, - ; if the fit is better, replace the original fit - ; only do this if fit_Balmer_continuum is set to 1 - ;if fit_flag[0] eq 1 then begin - ; parinfo[8:10].fixed = 1L & parinfo[8].value = 0. - ; - ; conti_fit2 = mpfitfun('f_conti_all', wave[ind], flux[ind], err[ind] $ - ; , parinfo = parinfo, perror = perror2, yfit = yfit2, /quiet $ - ; , nfev = nfev, niter = niter, status = status2, bestnorm = chi2) - ; dof = n_elements(ind) - (n_elements(parinfo) - nfix) - ; redchi2_2 = chi2/dof - ; if not keyword_set(silent) then splog, $ - ; 'CONTI-FITTING: MPFIT nfev=', nfev, ' niter=', niter, $ - ; ' status=', status2, ' redchi2=', redchi2_2 - ; if status2 gt 0 and redchi2_2 gt 0 and redchi2_2 lt redchi2 then begin - ; conti_fit = conti_fit2 & conti_err = perror2 & status = status2 - ; redchi2 = redchi2_2 & yfit1 = yfit2 - ; if not keyword_set(silent) then splog, $ - ; 'CONTI-FITTING: Replace fit with NO BALMER CONTINUUM' - ; endif - ;endif - - ; Perform one iteration to remove 3sigma pixel below the first continuum fit - ; this is to avoid situations where one of the continuum windows falls within - ; a BAL trough - if keyword_Set(conti_auto_abs_rej) and redchi2 lt 100. then begin - fitmask2 = replicate(1L, n_elements(wave)) - ind_abs = where(flux[ind] lt yfit1 - 3.*err[ind] and wave[ind] lt 3500.) - if ind_abs[0] ne -1 then fitmask2[ind[ind_abs]] = 0L - fitmask2 = fitmask*fitmask2 - if n_elements(ind2) ne 0 then ind_tmp = temporary(ind2) - for jj=0L, (size(window_all))[2] - 1 do begin - tmp = where( wave ge window_all[0,jj] and wave le window_all[1,jj] $ - and fitmask2 ne 0., ntmp) - if ntmp gt 0 then begin - if n_elements(ind2) eq 0 then ind2 = tmp else ind2 = [ind2, tmp] - endif - endfor - - if (n_elements(ind2) gt 10L) and (n_elements(ind2) lt n_elements(ind)) then begin - conti_fit2 = mpfitfun('f_conti_all', wave[ind2], flux[ind2], err[ind2] $ - , parinfo = parinfo, perror = perror2, yfit = yfit2, /quiet $ - , nfev = nfev, niter = niter, status = status2, bestnorm = chi2 $ - , MAXITER = 100L) - ttt = where(parinfo.fixed eq 1 or strlen(parinfo.tied) gt 0, nfix) - dof = n_elements(ind2) - (n_elements(parinfo) - nfix) - redchi2_2 = chi2/dof - if status2 gt 0 and redchi2_2 gt 0 and redchi2_2 lt redchi2 then begin - if not keyword_set(silent) then splog, $ - 'CONTI-FITTING: MPFIT nfev=', nfev, ' niter=', niter, $ - ' status=', status2, ' redchi2=', redchi2_2 - conti_fit = conti_fit2 & conti_err = perror2 & status = status2 - redchi2 = redchi2_2 & yfit1 = yfit2 - ind = ind2 & fitmask = fitmask2 - if not keyword_set(silent) then splog, $ - 'CONTI-FITTING: Replace fit with absorption rejection' - endif - endif - endif - - endif - - ; Output the fitting results - output = create_struct('z',z,'wave', wave, 'flux', flux, 'err', err, 'fitmask', fitmask, $ - 'ind_conti_fit', ind, 'conti_fit', conti_fit, 'conti_fit_err', conti_err, $ - 'conti_redchi2', redchi2, 'conti_status', status, 'conti_npix_fit', n_elements(ind)) - ; output = struct_addtags(specdata, output) - - f_fe_mgii_model = fe_flux_mgii(wave, conti_fit[0:2]) - f_fe_balmer_model = fe_flux_balmer(wave, conti_fit[3:5]) - f_pl_model = conti_fit[6]*(wave/3000.0)^conti_fit[7] - f_bc_model = balmer_conti(wave, conti_fit[8:10]) - f_poly_model = f_poly_conti(wave, conti_fit[11:*]) - ;f_pl_model=conti_fit[6]*(wave/3000.0)^conti_fit[7] $ - ; + conti_fit[8]*(wave/3000.0)^conti_fit[9] - ;f_bc_model = balmer_conti(wave, conti_fit[10:12]) - ;f_poly_model = f_poly_conti(wave, conti_fit[13:*]) - f_conti_model = f_pl_model + f_fe_mgii_model + f_fe_balmer_model $ - + f_bc_model + f_poly_model - - if keyword_set(local_CIV_CIII_fit) then begin ; locally fit CIV+CIII] in [1000, 2165] - - for jj=0L, (size(window_all))[2] - 1 do begin - tmp = where( wave ge window_all[0,jj] and wave le window_all[1,jj] $ - and fitmask ne 0. and wave le 2165., ntmp) - if ntmp gt 0 then begin - if n_elements(ind3) eq 0 then ind3 = tmp else ind3 = [ind3, tmp] - endif - endfor - ; first turn off Balmer continuum and UV iron template fit - parinfo[8].fixed = 1L & parinfo[8].value = 0. - parinfo[9].fixed = 1L & parinfo[10].fixed = 1L - parinfo[2].limited = [0,0] & parinfo[2].value = 0. & parinfo[2].fixed = 1L - parinfo[3].fixed = 1L & parinfo[4].fixed = 1L - conti_fit3 = mpfitfun('f_conti_all', wave[ind3], flux[ind3], err[ind3] $ - , parinfo = parinfo, perror = perror3, yfit = yfit3, /quiet $ - , nfev = nfev, niter = niter, status = status3, bestnorm = chi2) - if not keyword_set(silent) then splog, 'CONTI-FITTING: MPFIT nfev=', nfev, $ - ' niter=', niter, ' status=', status3 - ; update the psedu-continuum model, connected at 2165A - ind_local = where(wave le 2165.) - f_pl_model[ind_local] = conti_fit3[6]*(wave[ind_local]/3000.0)^conti_fit3[7] - f_fe_mgii_model[ind_local] = 0. - f_fe_balmer_model[ind_local] = 0. - f_bc_model[ind_local] = 0. - f_conti_model = f_pl_model + f_fe_mgii_model + f_fe_balmer_model $ - + f_bc_model + f_poly_model - - temp = create_struct('conti_fit3', conti_fit3, 'conti_fit3_err', perror3) - output = struct_addtags(output, temp) - endif - - ; ---------------- - ; Start to fit the emission lines: CIV, CIII], MgII, Hbeta, Halpha - ; first subtract the psedu-continuum to get emission line fluxs - line_flux = flux - f_conti_model - if keyword_set(local_CIV_CIII_fit) then $ - line_flux[ind_local] = flux[ind_local] - f_conti_all(wave[ind_local], conti_fit3) - output = struct_addtags(output, {line_flux:line_flux}) - - ; Setup line fitting parameters - if keyword_set(emparfile) then emline_file=emparfile else $ - emline_file = getenv('IDLRM_DIR')+'/etc/qsoline.par' - yanny_read, emline_file, pdata - linelist = *pdata[0] - yanny_free, pdata - ngauss_tot = total(linelist.ngauss) - parinfo = replicate({value:0.D, fixed:0, limited:[0,0],limits:[0.D,0],tied:''}, $ - ngauss_tot*3) - npar = n_elements(parinfo) - line_fit_all = dblarr(npar) & perror_all = dblarr(npar) - nline = n_elements(linelist) - ;ncomp = n_elements(uniq(linelist.compname,/sort)) - linecomp = linelist.compname & linename = linelist.linename - parindx = lonarr(2,nline) - parfitflag = lonarr(npar) - parlinename = replicate('',npar) - line_redchi2 = dblarr(npar) & line_status = lonarr(npar) - line_npix_fit = lonarr(npar) - inext = 0 - ; assign initial values and limitations - for i=0L, nline - 1L do begin - ngauss = linelist[i].ngauss - parindx[*,i] = [inext, inext+3*ngauss-1] - - for j=0L, ngauss - 1L do begin - - ; add a small, random offset of each broad gaussian component - if ngauss gt 1 then $ - lnlamini = alog(linelist[i].lambda) + (2*randomu(seed,1)-1.)*1d-3 else $ - lnlamini = alog(linelist[i].lambda) - parlinename[inext:inext+2] = linelist[i].linename - parinfo[inext:inext+2].value = [linelist[i].fvalue, lnlamini $ - , linelist[i].inisig] - parinfo[inext].limited = [1,0] & parinfo[inext].limits=[0,1d10] - parinfo[inext+1].limited = [1,1] - parinfo[inext+1].limits=[lnlamini-linelist[i].voff, lnlamini+linelist[i].voff] - parinfo[inext+2].limited = [1,1] - parinfo[inext+2].limits = [linelist[i].minsig, linelist[i].maxsig] - - inext = inext + 3 - endfor - endfor - - ; Only fit the line if the keyword FIT_LINE is set - minwave = min(wave,max=maxwave) - if keyword_set(fit_line) then begin - - ; Find which lines are covered - ind1 = where(linelist.lambda ge minwave and linelist.lambda le maxwave, $ - complement = indd1) - if indd1[0] ne -1 then linelist[indd1].fitflag = 0 - ind_fit = where(linelist.fitflag eq 1) - if ind_fit[0] eq -1 then $ - splog, 'No line to fit, return' $ - else begin - - ; loop over each line complex - uniq_linecomp = uniq(linelist[ind_fit].compname) - ncomp = n_elements(uniq_linecomp) - compname = (linelist[ind_fit].compname)[uniq_linecomp] - - for ii=0L, ncomp - 1L do begin - ind_line = where(linelist.compname eq compname[ii] and $ - linelist.fitflag eq 1, nline_fit) - linelist_fit = linelist[ind_line] - ngauss_fit = linelist_fit.ngauss - if not keyword_set(silent) then splog, 'Fit line complex: ', compname[ii] - iline_start = ind_line[0] & iline_end = ind_line[nline_fit-1] - parindx_sub = parindx[0,iline_start]+indgen(3*linelist[iline_start].ngauss) - for iitmp=1, nline_fit - 1L do begin - parindx_sub = [parindx_sub, $ - parindx[0,ind_line[iitmp]]+indgen(3*linelist[ind_line[iitmp]].ngauss)] - endfor - - parinfo1 = parinfo[ parindx_sub ] - ; Now setup constraints of parameters - ; Tie velocity - arr = linelist_fit.vindex - arr = arr[sort(arr)] - arr = arr[uniq(arr)] - for iuniq=0L, n_elements(arr) - 1L do begin - ind_fix = where(linelist_fit.vindex eq arr[iuniq],ntmp) - if ntmp gt 0 and arr[iuniq] ne 0 then begin - - ; For a broad line, enforce symmetric profile if required - if ntmp eq 1 and linelist_fit[ind_fix[0]].ngauss gt 1 then begin - ind_fix = ind_fix[0] - pstr0='P(' + string(1+3*( total(ngauss_fit[0:ind_fix]) $ - - ngauss_fit[ind_fix]),format='(i0)')+')' - for igauss=1, ngauss_fit[ind_fix]-1L do begin - parinfo1[1+3*(total(ngauss_fit[0:ind_fix]) $ - - ngauss_fit[ind_fix])+igauss*3].tied = pstr0 - endfor - endif - - pstr0='(P(' + string(1+3*( total(ngauss_fit[0:ind_fix[0]])-1) $ - , format='(i0)')+')' - for iitmp=1,ntmp-1 do begin - parinfo1[1+3*(total(ngauss_fit[0:ind_fix[iitmp]])-1)].tied=pstr0 $ - + ' - alog('+string(linelist_fit[ind_fix[0]].lambda,format='(f7.2)') $ - + ')) + alog('+string(linelist_fit[ind_fix[iitmp]].lambda,format='(f7.2)') $ - + ')' - endfor - endif - endfor - ; Tie line width - arr = linelist_fit.windex - arr = arr[sort(arr)] - arr = arr[uniq(arr)] - for iuniq=0L, n_elements(arr) - 1L do begin - ind_fix = where(linelist_fit.windex eq arr[iuniq],ntmp) - if ntmp gt 1 and arr[iuniq] ne 0 then begin - pstr0='P('+string(2+3*(total(ngauss_fit[0:ind_fix[0]])-1) $ - ,format='(i0)')+')' - for iitmp=1,ntmp-1 do begin - parinfo1[2+3*( total(ngauss_fit[0:ind_fix[iitmp]])-1)].tied = pstr0 - endfor - endif - endfor - ; Tie line flux - arr = linelist_fit.findex - arr = arr[sort(arr)] - arr = arr[uniq(arr)] - for iuniq=0L, n_elements(arr) - 1L do begin - ind_fix = where(linelist_fit.findex eq arr[iuniq],ntmp) - if ntmp gt 1 and arr[iuniq] ne 0 then begin - - pstr0='P('+string(3*( total(ngauss_fit[0:ind_fix[0]])-1) $ - ,format='(i0)')+')' - for iitmp=1,ntmp-1 do begin - parinfo1[3*(total(ngauss_fit[0:ind_fix[iitmp]])-1)].tied=pstr0 $ - + '*' + string(linelist_fit[ind_fix[0]].lambda,format='(f7.2)') $ - + '/' + string(linelist_fit[ind_fix[iitmp]].lambda,format='(f7.2)') $ - + '*' + string(linelist_fit[ind_fix[iitmp]].fvalue/linelist_fit[ind_fix[0]].fvalue $ - , format='(f3.1)') - endfor - endif - endfor - - ;if compname[ii] eq 'CIV' then message, 'stop!' - - ; Do the fit - ind = where(wave ge linelist_fit[0].minwav $ - and wave le linelist_fit[0].maxwav $ - and fitmask ne 0., nnn) - if nnn gt 10 then begin - line_fit = mpfitfun('manygauss',alog(wave[ind]),line_flux[ind],err[ind] $ - , MAXITER = 500L, parinfo = parinfo1, xtol=xtol, ftol=ftol $ - , perror = perror, yfit = yfit2, /quiet $ - , nfev = nfev, niter = niter, status = status, bestnorm = chi2) - ttt = where(parinfo1.fixed eq 1 or strlen(parinfo1.tied) gt 0, nfix) - dof = n_elements(ind) - (n_elements(parinfo1) - nfix) - redchi2 = chi2/dof - if not keyword_set(silent) then splog,'LINE-FITTING: MPFIT nfev=',nfev $ - , ' niter=', niter, ' status=', status, ' redchi2=', redchi2 - - ; Do a further step to remove 3sigma absorption below the first fit - ; Do not do this for the Halpha or Hbeta line complex - ; first setup fitmask2 and the new line fitting windows - if keyword_set(auto_abs_rej) and redchi2 lt 100. $ - and compname[ii] ne 'Halpha' and compname[ii] ne 'Hbeta' then begin - - n_iter = 1L - - iter1: - fitmask2 = replicate(1L, n_elements(wave)) - ind_abs = where(line_flux[ind] lt yfit2 - 3.*err[ind]) - if ind_abs[0] ne -1 then fitmask2[ind[ind_abs]] = 0L - fitmask2 = fitmask*fitmask2 - - ind2 = where(wave ge linelist_fit[0].minwav $ - and wave le linelist_fit[0].maxwav $ - and fitmask2 ne 0.) - - if (n_elements(ind2) gt 10L) and (n_elements(ind2) lt n_elements(ind)) then begin - - line_fit2 = mpfitfun('manygauss', alog(wave[ind2]) $ - , line_flux[ind2], err[ind2] $ - , MAXITER = 500L, parinfo = parinfo1, xtol=xtol,ftol=ftol $ - , perror = perror2, yfit = yfit2_2, /quiet $ - , nfev = nfev, niter = niter, status = status2, bestnorm = chi2_2) - ttt = where(parinfo1.fixed eq 1 or strlen(parinfo1.tied) gt 0, nfix) - dof2 = n_elements(ind2) - (n_elements(parinfo1) - nfix) - redchi2_2 = chi2_2/dof2 - if not keyword_set(silent) then splog $ - , 'LINE-FITTING: MPFIT nfev=', nfev $ - , ' niter=', niter, ' status=', status2, ' redchi2=', redchi2_2 $ - , ' iter=', n_iter - ; replace the original fit if justified - if status2 gt 0 and redchi2_2 gt 0 and redchi2_2 lt redchi2 then begin - if not keyword_set(silent) then $ - splog, 'Improved fits by rejecting absorptions. ' - ind = ind2 & line_fit = line_fit2 & perror = perror2 - redchi2 = redchi2_2 & status = status2 & yfit2 = yfit2_2 - fitmask = fitmask2 - if n_iter lt rej_iter then begin - n_iter = n_iter + 1L - goto, iter1 - endif - endif - - endif - endif - - if n_elements(ind_line_fit) eq 0 then ind_line_fit=ind else $ - ind_line_fit = [ind_line_fit, ind] - line_fit_all[ parindx_sub ] = line_fit - perror_all[ parindx_sub ] = perror - parfitflag[parindx_sub] = 1L - line_redchi2[parindx_sub] = redchi2 - line_status[parindx_sub] = status - line_npix_fit[parindx_sub] = n_elements(ind) - - endif - endfor - output.fitmask = fitmask - temp = create_struct('linename',parlinename, 'fitflag', parfitflag $ - , 'ind_line_fit', n_elements(ind_line_fit) gt 0 ? ind_line_fit : [-1L] $ - , 'line_fit', line_fit_all $ - , 'line_fit_err', perror_all, 'line_redchi2', line_redchi2 $ - , 'line_status', line_status, 'line_npix_fit', line_npix_fit) - output = struct_addtags(output, temp) - endelse - - endif - ; --------------------------- End of fitting emission lines --------------- - - if keyword_set(diet) then begin - tag_rej=['WAVE','FLUX','ERR','FITMASK','IND_CONTI_FIT','LINE_FLUX','IND_LINE_FIT'] - remove_tags, output, tag_rej, output1 - output = output1 - endif - para = output - - ; Write the fit results - if n_elements(outdir) eq 0 then cd, current=outdir - if n_elements(output_name) eq 0 then output_name = 'qsofit' - if keyword_Set(fits) then begin ; output the fits result - if ~keyword_set(subdir) then fitsfile = outdir + '/fits/' + output_name + '.fits' $ - else begin - fitsfile = outdir + '/fits/' + subdir + '/' + output_name + '.fits' - if file_test(outdir + '/fits/' + subdir) eq 0 then spawn, 'mkdir ' + outdir + '/fits/' + subdir - endelse - mwrfits, output, fitsfile, /create - spawn, 'gzip -f ' + fitsfile - endif - - if keyword_set(noplot) then return - - ; ------------------------ Plotting block ---------------------------- - ; now make a plot - if keyword_set(psplot) then begin - if not keyword_set(append) then begin - if ~keyword_set(subdir) then figfile = outdir + '/QA/' + output_name + '.ps' $ - else begin - figfile = outdir + '/QA/' + subdir + '/' + output_name + '.ps' - if file_test(outdir + '/QA/' + subdir) eq 0 then spawn, 'mkdir ' + outdir + '/QA/' + subdir - endelse - ;begplot, name=figfile, xsize = 40, ysize = 25,/color - begplot, name=figfile, /landscape, /color - endif - charsize = 1. & thick = 4. & xticks = 2L & xminor = 5L - linethick = 0.1 & symsize = 3. - ang = string(197B) - endif else begin - linethick = 1. & symsize = 3. - xticks = 2L & xminor = 5L - ang = textoidl('\AA') - endelse - - ind_s = where(lam0 ge 3800. and lam0 le 9900.) - if ind_s[0] ne -1 then yrange = [-1.0, max(median(flux[ind_s],20))*1.05] - if not keyword_set(xrange) then xrange = [minwave, maxwave] - len = 0.04 - pos = [0.08, 0.5, 0.97, 0.98] ;else pos = [0.12, 0.14, 0.96, 0.98] - ytitle = textoidl('Flux Density f_\lambda (10^{-17} erg s^{-1} cm^{-2} ') $ - + ang + textoidl('^{-1})') - xtitle = textoidl('Rest Wavelength (')+ang+')' - if not keyword_set(nsmooth) then nsmooth = 1L - plot, wave, smooth(flux,nsmooth), xrange=xrange, yrange = yrange, /ystyle $ - , charsize=charsize, xthick=thick, ythick=thick, charthick=thick, _extra=extra $ - , /xsty,xticklen=len, yticklen = len/2, pos = pos, thick = linethick - ind_bad = where(fitmask eq 0, nbad) - if nbad gt 0 then oplot, [wave[ind_bad]], [flux[ind_bad]] $ - , psym=4, thick =thick, color=cgcolor('cyan'),symsize=0.5 - - ;oplot, lam, flux, psym=2, color=cgcolor('black'), symsize=0.6 - oplot, wave, f_conti_model, color = cgcolor('red') - oplot, wave, f_pl_model+f_poly_model, color=cgcolor('brown') - oplot, wave, f_fe_mgii_model, color=cgcolor('blue') - oplot, wave, f_fe_balmer_model, color=cgcolor('blue') - oplot, wave, f_bc_model, color=cgcolor('dark gray'), line=1 - - for jj=0L, (size(window_all))[2] - 1 do begin - oplot,[window_all[0,jj],window_all[0,jj]],[0.9, 0.8]*yrange[1],color=cgcolor('dark gray'),thick=5 - oplot,[window_all[1,jj],window_all[1,jj]],[0.9, 0.8]*yrange[1],color=cgcolor('dark gray'),thick=5 - oplot,[window_all[0,jj],window_all[1,jj]],[0.9, 0.9]*yrange[1],color=cgcolor('dark gray'),thick=5 - endfor - - ; now plot the windows of each emission line fitting - ;ind = where( ((wave ge 6400. and wave le 6800.) or $ ; Halpha - ; (wave ge 4700. and wave le 5100.) or $ ; Hbeta - ; (wave ge 2700. and wave le 2900.) or $ ; MgII - ; (wave ge 1820. and wave le 1970.) or $ ; CIII] complex - ; (wave ge 1500. and wave le 1600.)) $ ; CIV - ; - ; pos = [0.84, 0.1, 0.97, 0.44] & d_pos = [0.19, 0., 0.19, 0.] ; this is for 5 panels - ; pos = [0.8, 0.1, 0.97, 0.44] & d_pos = [0.24, 0., 0.24, 0.] ; this is for 4 panels - uniq_linecomp = uniq(linelist.compname) - ncomp = n_elements(uniq_linecomp) - compname = (linelist.compname)[uniq_linecomp] - ; determine how many line complex are fitted and should be plotted - plotkey=lonarr(ncomp) - for ii=0L, ncomp - 1L do begin - ind_line = where(linelist.compname eq compname[ii] and linelist.fitflag eq 1, $ - nline_fit) - if nline_fit gt 0 then begin - linelist_fit = linelist[ind_line] - pxrange=[linelist_fit[0].minwav,linelist_fit[0].maxwav] - ind = where(wave ge pxrange[0] and wave le pxrange[1], nnn) - if nnn gt 10 then plotkey[ii] = 1L ; plot this line complex - endif - endfor - temp=where(plotkey eq 1, nplot) - if nplot gt 0 then begin - ww=(0.89 - 0.06*(nplot - 1.))/nplot - dp=ww + 0.06 - pos = [0.97 - ww, 0.1, 0.97, 0.44] & d_pos = [dp, 0., dp, 0.] - endif - - ; now plot each fitted line complex - for ii=0L, ncomp - 1L do begin - - ind_line = where(linelist.compname eq compname[ii] and linelist.fitflag eq 1, $ - nline_fit) - - if nline_fit gt 0 then begin - linelist_fit = linelist[ind_line] - ; splog, 'Plotting line complex: ', compname[ii] - iline_start = ind_line[0] & iline_end = ind_line[nline_fit-1] - parindx_sub = parindx[0,iline_start] + indgen(3*linelist[iline_start].ngauss) - for iitmp=1, nline_fit - 1L do begin - parindx_sub = [parindx_sub, parindx[0,ind_line[iitmp]] $ - + indgen(3*linelist[ind_line[iitmp]].ngauss)] - endfor - pxrange=[linelist_fit[0].minwav,linelist_fit[0].maxwav] - ind = where(wave ge pxrange[0] and wave le pxrange[1], nnn) - ind_bad=where(wave ge pxrange[0] and wave le pxrange[1] and fitmask eq 0, nbad) - ind_good=where(wave ge pxrange[0] and wave le pxrange[1] and fitmask ne 0, ngood) - if nnn gt 10 then begin - ;yrange=[-0.5,1.05]*max((smooth(line_flux[where(flux*sqrt(ivar) gt 5.)],20))[ind]) - if ngood gt 10 then yrange=[min(median(line_flux[ind_good],5)), max(median(line_flux[ind_good],5))*1.05] else $ - yrange=[min(median(line_flux[ind],5)), max(median(line_flux[ind],5))*1.05] - plot, wave[ind], smooth(line_flux[ind],nsmooth), /noerase $ - , xrange=pxrange, yrange=yrange $ - , pos = pos,/xsty,thick=linethick, charsize=charsize,xticklen=len $ - , yticklen=len, xthick=thick, ythick=thick, charthick=thick $ - , xticks = xticks, xminor = xminor - oplot, wave[ind],err[ind],color=cgcolor('gray'),thick=linethick - if nbad gt 0 then oplot, [wave[ind_bad]], [line_flux[ind_bad]] $ - , psym=4, thick =thick, color=cgcolor('cyan'),symsize=0.5 - if keyword_set(fit_line) then begin - pp = line_fit_all[ parindx_sub ] - pp_broad = pp[0:3*linelist_fit[0].ngauss-1] - if n_elements(pp) gt n_elements(pp_broad) then begin - pp_narrow = pp[3*linelist_fit[0].ngauss:*] - for jj=1L, n_elements(pp_narrow)/3L do begin - pp_narrow_1gauss = pp_narrow[(jj-1)*3L:jj*3L-1] - oplot, wave[ind], onegauss(alog(wave[ind]), pp_narrow_1gauss) $ - , color=cgcolor('cyan') - endfor - endif - oplot,wave[ind], manygauss(alog(wave[ind]),pp_broad) $ - , color=cgcolor('green') - ; now plot total - oplot,wave[ind],manygauss(alog(wave[ind]),pp) $ - , color=cgcolor('red') - - xyouts, pos[2]-0.05,pos[3]-0.03, compname[ii], /norm,charsize=charsize - ; plot floating linenames - if keyword_set(more_anno) then begin - for jline=0,n_elements(linelist_fit)-1 do begin - xyouts, linelist_fit[jline].lambda, yrange[1]*(0.9-(jline mod 2)*0.1), $ - linelist_fit[jline].linename,color=cgcolor('magenta'),charsize=0.7,align=0.5 - endfor - endif - endif - pos = pos - d_pos - endif - endif - ; pos = pos - d_pos ; this will not start the line panels from the right edge - endfor - - xyouts,0.5,0.01,xtitle,/norm,charsize=charsize,charthick=thick,align=0.5 - xyouts,0.02,0.5,ytitle,/norm,charsize=charsize,charthick=thick,align=0.5,orien=90 - - if keyword_set(objtag) then $ - xyouts, 0.15, 0.942, objtag, /norm, charsize = charsize, charthick=thick - if keyword_set(SDSS_name) then xyouts, 0.5, 0.942, /norm, SDSS_name $ - , charsize = charsize, charthick = thick - xyouts, 0.85, 0.942, 'z='+string(z,format='(f5.3)'), /norm $ - , charsize=charsize, charthick=thick, color=cgcolor('red') - - if keyword_set(psplot) and not keyword_set(append) then begin - endplot - cgfixps, figfile - spawn, 'gzip -f '+ figfile - endif - - ;-------------- - ; Compile line properties (peak wave, FWHM, line flux) - if keyword_set(get_line_prop) then begin - struct = replicate({linewave:0.D,linefwhm:0.D,linearea:0.D}, nline) - linelist = struct_addtags(linelist, struct) - for i=0L, nline - 1L do begin - if linelist[i].fitflag eq 1 then begin - ind = where(output.linename eq linelist[i].linename ) - pp = (output.line_fit)[ind] - prop = get_multi_gaussian_prop(pp) - linelist[i].linewave = exp(prop[0]) ; peak wavelength - linelist[i].linefwhm = prop[1]*cs ; FWHM - linelist[i].linearea = prop[2]*(1. + z) ; line flux, scale back to true flux - endif - endfor - endif - -end diff --git a/pro/rm/rm_quick_scal_photo_lc.pro b/pro/rm/rm_quick_scal_photo_lc.pro deleted file mode 100644 index 68c2a9b3e..000000000 --- a/pro/rm/rm_quick_scal_photo_lc.pro +++ /dev/null @@ -1,15 +0,0 @@ -; This is a quick-and-dirty version to normalize the -; difference img lc and the spec-synthetic lc using -; the sdss psf mag for each RM object - -pro rm_quick_scal_photo_lc - - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - epoch_info=mrdfits(file,2) - - ; diff LC dir - topdir='/data3/yshen/ftp/sdssrm/collab/photo_lc/img_diff_lc/' - - ; output file -- by rmid - outfile='/data3/yshen/ftp/sdssrm/collab/photo_lc/final/' diff --git a/pro/rm/rm_read_gaia.pro b/pro/rm/rm_read_gaia.pro deleted file mode 100644 index e874c58b5..000000000 --- a/pro/rm/rm_read_gaia.pro +++ /dev/null @@ -1,121 +0,0 @@ -;+ -; NAME: -; read_gaia -; PURPOSE: -; Read GAIA stars near a given RA, dec with the implementation of the DR2 and DR1 -; -; INPUTS: -; racen - RA of region center (J2000) [degrees] -; deccen - dec of region center (J2000) [degrees] -; ra - RA of targets -; dec - DEC of targets -; -; OPTIONAL INPUTS: -; gaia_dr2 - data release name (default 'dr2') -; -; OUTPUTS: -; ra - new Gaia RA of targets -; dec - new Gaia DEC of targets -; pmra -proper motions from Gaia -; pmdec -proper motions from Gaia -; mjdepoch -MJD of the Gaia DR epoch -; -; COMMENTS: -; Assumes data in $GAIA_DATA/[dr]/gaia_source/fits_sorted -; produced by gaia_setup.py. -; -; REVISION HISTORY -; 2016-Oct-20 MRB, NYU -; -;------------------------------------------------------------------------ -; -pro rm_read_gaia, ra0,dec0,stars,gaia_dr2=gaia_dr2,dist_std=dist_std;,mjdepoch=mjdepoch,pmra=pmra,pmdec=pmdec,ra=ra,dec=dec,stars=stars - - if not keyword_set(gaia_dr2) then begin - gaia_dr2=1 - endif - if keyword_set(gaia_dr2) then begin - gaiadir=getenv('GAIA_DATA')+'/dr2/gaia_source/csv/' - gaia_list=getenv('IDLSPEC2D_DIR')+'/opfiles/list_gaia' - readcol,gaia_list,format='A',gaiafile_l - dpf_nest2ring, 4096, lindgen(12*long(4090)*long(4096)), ipring - gaia_id1=lon64arr(n_elements(gaiafile_l)) - gaia_id2=lon64arr(n_elements(gaiafile_l)) - for it=0l, n_elements(gaiafile_l)-1 do begin - gaia_id_s=strsplit(strjoin(strsplit(gaiafile_l[it],".",/extract),"_"),"_",/extract) - gaia_id1[it]=long64(gaia_id_s[1]);/34359738368 - gaia_id2[it]=long64(gaia_id_s[2]);/34359738368 - endfor - endif else begin - gaiadir=getenv('GAIA_DATA')+'/dr1/gaia_source/fits_sorted/' - endelse - ra_std=stars.ra - dec_std=stars.dec - dist_std=stars.dec*0.0 - ;epoch_std=stars.epoch - ;rapm_std=stars.pmra - ;decpm_std=stars.pmdec - ;to=0 - for i=0, 6 do begin - for j=0, 6 do begin - if keyword_set(gaia_dr2) then begin - ra0t=(ra0-3+i) - dec0t=dec0-3+j - phi=ra0t*!pi/180.0 - the=(90-dec0t)*!pi/180.0 - ang2pix_ring,4096,the,phi,pixi_r - idt=where(ipring eq pixi_r[0],indt)*34359738368 - if indt gt 0 then begin - ga_id=idt[0] - nt=where((gaia_id1 le ga_id) and (gaia_id2 ge ga_id), nga) - readcol,gaiadir+gaiafile_l[nt[0]],delimiter=",",format="L,A,L,I,F,D,D,D,D,D,D,D,D,D,D,D,D", $ - a,b,c,d,epch_g,ra_g,ra_e_g,dec_g,de_g,dec_e_g, $ - pr,pr_e,pr_ve,pmra_g,pmra_g_e,pmdec_g,pmdec_g_e,/compress,/silent - spherematch, ra_g, dec_g, ra_std, dec_std, 1./3600, m1, m2 - if m2[0] ne -1 then begin - ra_std[m2]=ra_g[m1];tmpdt0.ra - dec_std[m2]=dec_g[m1];tmpdt0.dec - dist_std[m2]=1.0/abs((pr[m1]-0.0)*1e-3);zero point parallax - ;rapm_std[m2]=pmra_g[m1];tmpdt0.pmra*0.0 - ;decpm_std[m2]=pmdec_g[m1];tmpdt0.pmdec*0.0 - ;epoch_std[m2]=epch_g[m1];tmpdt0.ref_epoch - ;to=to+n_elements(m1) - endif - ;exit - endif - - endif else begin - gaiafile=gaiadir+'gaia-dr1-'+strtrim(string(uint(ra0-3+i)),2)+'-'+strtrim(string(uint(dec0-3+j+90)),2)+'.fits' - tmp_data = mrdfits(gaiafile, 1, hdr2) - spherematch, tmp_data.ra, tmp_data.dec, ra_std, dec_std, 1./3600, m1, m2 - if m2[0] ne -1 then begin - tmpdt0=tmp_data(m1) - ra_std[m2]=tmpdt0.ra - dec_std[m2]=tmpdt0.dec - dist_std[m2]=0.0 - ;rapm_std[m2]=0.0;tmpdt0.pmra*0.0 - ;decpm_std[m2]=0.0;tmpdt0.pmdec*0.0 - ;epoch_std[m2]=tmpdt0.ref_epoch - ;to=to+n_elements(m1) - endif - endelse - endfor - endfor - ;stars.ra=ra_std - ;stars.dec=dec_std - ;stars.pmra=rapm_std - ;stars.pmdec=decpm_std - ;stars.epoch=epoch_std - ;nt1=where(epoch_std gt 2008.0,np) - ;if np gt 0 then begin - ; ra=ra[nt1] - ; dec=dec[nt1] - ; pmra=pmra[nt1] - ; pmdec=pmdec[nt1] - ; epoch=epoch[nt1] - ; stars=stars(nt1) - ;endif - - ;mjdepoch=(1461.0*(epoch+4800.0 +(0.0-14.)/12.))/4.+(367*(0.0-2-12.* ((0.0-14.)/12.)))/12.-(3.0*((epoch+4900.+(0.0-14.0)/12.)/100.))/4.-32075.0-2400000.5D - ;return -end \ No newline at end of file diff --git a/pro/rm/rm_readspec.pro b/pro/rm/rm_readspec.pro deleted file mode 100644 index fc6e43367..000000000 --- a/pro/rm/rm_readspec.pro +++ /dev/null @@ -1,738 +0,0 @@ -;+ -; NAME: -; rm_readspec -; -; PURPOSE: -; Routine for reading SDSS/BOSS Spectro-2D and Spectro-1D files -; Same as readspec, but slightly tweaked for RM purposes -; -; CALLING SEQUENCE: -; rm_readspec, plate, fiber, [mjd=, znum=, flux=, flerr=, invvar=, $ -; andmask=, ormask=, disp=, sky=, plugmap=, loglam=, wave=, tsobj=, $ -; zans=, zmanual=, zline=, synflux=, lineflux=, objhdr=, zhdr=, nfiber=, $ -; topdir=, path=, /align, /silent, calibdir=calibdir ] -; -; INPUTS: -; plate - Plate number(s) -; -; OPTIONAL INPUTS: -; fiber - Fiber number(s), 1-indexed; if not set, or zero, then -; read all fibers for each plate. -; mjd - MJD number(s); if not set, then select the most recent -; data for this plate (largest MJD). -; znum - If set, then return not the best-fit redshift, but the -; ZNUM-th best-fit; e.g., set ZNUM=2 for second-best fit. -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; path - Override all path information with this directory name. -; align - If set, then align all the spectra in wavelength. -; Also, LOGLAM and WAVE will be output as single vectors -; (since they are all the same) rather than as one per object. -; silent - If set, then call MRDFITS with /SILENT. -; calibdir - calibdir='recalib/' to use the recalibrated spectrum -; calibdir='wh_skysub/' to use the recalibrated, sky-improved spec -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; mjd - If not specified, then this is returned as an array of one -; MJD per object. -; flux - Flux [NPIXEL,NFIBER] -; flerr - Flux error [NPIXEL,NFIBER] -; invvar - Inverse variance [NPIXEL,NFIBER] -; andmask - AND-mask [NPIXEL,NFIBER] -; ormask - OR-mask [NPIXEL,NFIBER] -; disp - Wavelength dispersion [NPIXEL,NFIBER] -; sky - Sky flux [NPIXEL,NFIBER] -; plugmap - Plug-map entries [NFIBER] -; loglam - Log10-wavelength in log10-Angstroms [NPIXEL,NFIBER], -; or the vector [NPIXEL] if /ALIGN is set -; wave - Wavelength in Angstroms [NPIXEL,NFIBER], -; or the vector [NPIXEL] if /ALIGN is set -; tsobj - tsObj-structure output [NFIBER] -; zans - Redshift output structure [NFIBER] -; zmanual - Manual inspection structure [NFIBER] -; zline - Line-fit output structure [NFIBER,NLINE] -; synflux - Best-fit synthetic eigen-spectrum [NPIXEL,NFIBER] -; lineflux - Best-fit emission line fits + background terms [NPIXEL,NFIBER] -; objhdr - The FITS header from the first object spPlate file read. -; If spectra from multiple plates are read, then it is -; indeterminant which header this will be. -; zhdr - The FITS header from the first object spZ file read. -; If spectra from multiple plates are read, then it is -; indeterminant which header this will be. -; nfiber - Number of fibers per plate [NFIBER] -; -; COMMENTS: -; One can input PLATE and FIBER as vectors, in which case there must -; be a one-to-one correspondence between them. Or, one can input FIBER -; numbers as a vector, in which case the same PLATE is used for all. -; Or, one can input PLATE as a vector, in which case the same FIBER is -; read for all. -; -; The environment variable BOSS_SPECTRO_REDUX must be set to tell this routine -; where to find the data. The reduced spectro data files are assumed to -; be $BOSS_SPECTRO_REDUX/$RUN2D/pppp/spPlate-pppp-mmmmm.fits, -; where pppp=plate number and mmmm=MJD. -; -; The tsObj files are assumed to be in the directory $BOSS_SPECTRO_REDUX/plates. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $BOSS_SPECTRO_REDUX/$RUN2D/$PLATE/spPlate-$PLATE-$MJD.fits -; $BOSS_SPECTRO_REDUX/$RUN2D/$PLATE/$RUN1D/spZbest-$PLATE-$MJD.fits -; $BOSS_SPECTRO_REDUX/$RUN2D/$PLATE/$RUN1D/spZall-$PLATE-$MJD.fits -; $BOSS_SPECTRO_REDUX/$RUN2D/$PLATE/$RUN1D/spZline-$PLATE-$MJD.fits -; $BOSS_SPECTRO_REDUX/plates/tsObj*-$PLATE.fit -; $IDLSPEC2D_DIR/templates/TEMPLATEFILES -; -; PROCEDURES CALLED: -; copy_struct_inx -; headfits() -; lookforgzip() -; mrdfits -; plug2tsobj() -; spec_append -; struct_append() -; synthspec() -; -; INTERNAL SUPPORT ROUTINES: -; rspec_mrdfits() -; rspec_zline_append() -; readspec1 -; -; REVISION HISTORY: -; 25-Jun-2000 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -function rspec_mrdfits, fcb, exten_no, rownums=rownums, _EXTRA=EXTRA - - if (exten_no GT fcb.nextend) then return, 0 - - nrows = n_elements(rownums) - if (nrows EQ 1) then begin - nchunks = 1 - row_start = rownums[0] - row_end = rownums[0] - endif else begin - rowdiff = rownums[1:nrows-1] - rownums[0:nrows-2] - i0 = where(rowdiff NE 1, nchunks) - nchunks = nchunks + 1 - if (nchunks EQ 1) then begin - row_start = rownums[0] - row_end = rownums[nrows-1] - endif else begin - row_start = rownums[ [0, i0 + 1] ] - row_end = rownums[ [i0, nrows-1] ] - endelse - endelse - - naxis1 = fcb.axis[0,exten_no] -; naxis2 = fcb.axis[1,exten_no] - iadd = 0 - for ichunk=0L, nchunks-1 do begin - nadd = row_end[ichunk] - row_start[ichunk] + 1 - if (exten_no EQ 0 OR fcb.xtension[exten_no] EQ 'IMAGE') then begin - fits_read, fcb, data1, exten_no=exten_no, $ - first=naxis1*row_start[ichunk], $ - last=naxis1*(row_end[ichunk]+1)-1, _EXTRA=EXTRA - if (ichunk EQ 0) then $ - alldata = make_array(naxis1, nrows, size=size(data1)) - alldata[*,iadd:iadd+nadd-1] = data1 - endif else if (fcb.xtension[exten_no] EQ 'BINTABLE') then begin - data1 = mrdfits(fcb.filename, exten_no, $ - range=[row_start[ichunk], row_end[ichunk]], _EXTRA=EXTRA) - if (ichunk EQ 0) then $ - alldata = replicate(data1[0], nrows) - if (keyword_set(tag_names(data1,/structure_name))) then $ - alldata[iadd:iadd+nadd-1] = data1 $ ; named structure - else $ - copy_struct_inx, data1, alldata, index_to=iadd+lindgen(nadd) - endif - iadd = iadd + nadd - endfor - - return, alldata -end - -;------------------------------------------------------------------------------ -pro rm_readspec1, plate, rownums, mjd=mjd, flux=flux, flerr=flerr, invvar=invvar, $ - andmask=andmask, ormask=ormask, disp=disp, sky=sky, plugmap=plugmap, $ - loglam=loglam, tsobj=tsobj, zans=zans, zmanual=zmanual, zline=zline, $ - synflux=synflux, lineflux=lineflux, znum=znum, objhdr=objhdr, zhdr=zhdr, $ - nfiber=nfiber, coeffzero=coeff0, coeffone=coeff1, npix=npix, $ - topdir=topdir1, run2d=run2d, run1d=run1d, path=path, $ - align=align, silent=silent, qread=qread, sdss=sdss,calibdir=calibdir - - platestr = string(plate,format='(i4.4)') - if (NOT keyword_set(mjd)) then mjdstr = '*' $ - else mjdstr = string(mjd,format='(i5.5)') - if (keyword_set(path)) then begin - topdir = path - oneddir = n_elements(run1d) GT 0 ? strtrim(run1d[0],2) : getenv('RUN1D') - twoddir = n_elements(run2d) GT 0 ? strtrim(run2d[0],2) : getenv('RUN2D') - endif else begin - if keyword_set(topdir1) then topdir = topdir1[0] else $ - topdir = keyword_set(sdss) ? getenv('SPECTRO_REDUX') : getenv('BOSS_SPECTRO_REDUX') - ; topdir = keyword_set(topdir1) ? topdir1[0] : getenv('BOSS_SPECTRO_REDUX') - oneddir = n_elements(run1d) GT 0 ? strtrim(run1d[0],2) : getenv('RUN1D') - twoddir = n_elements(run2d) GT 0 ? strtrim(run2d[0],2) : getenv('RUN2D') - endelse - - - filename = 'spPlate-' + platestr + '-' + mjdstr + '.fits' - if (keyword_set(path)) then $ - filename = lookforgzip(filepath(filename, root_dir=path), count=ct) $ - else $ - filename = lookforgzip(filepath(filename, root_dir=topdir, $ - subdirectory=[twoddir,platestr]), count=ct) - - if keyword_set(calibdir) then begin - filename = 'spPlate-' + platestr + '-' + mjdstr + '.fits' - filename = lookforgzip(filepath(filename, root_dir=topdir, $ - subdirectory=[twoddir,platestr,calibdir]), count=ct) - endif - - if (ct GT 1) then filename = filename[ (reverse(sort(filename)))[0] ] $ - else filename = filename[0] - - nrows = n_elements(rownums) - - ; Set default return values - flux = fltarr(1,nrows) - flerr = fltarr(1,nrows) - invvar = fltarr(1,nrows) - andmask = lonarr(1,nrows) - ormask = lonarr(1,nrows) - disp = fltarr(1,nrows) - sky = fltarr(1,nrows) - plugmap = lonarr(nrows) - loglam = fltarr(1,nrows) - tsobj = lonarr(nrows) - zans = lonarr(nrows) - zmanual = lonarr(nrows) - zline = lonarr(nrows) - synflux = fltarr(1,nrows) - lineflux = fltarr(1,nrows) - coeff0 = 0 - coeff1 = 0 - npix = 0 - nfiber = (mjd LT 55025) ? replicate(640L,nrows) : replicate(1000L,nrows) - - if (NOT keyword_set(filename)) then begin - return - end - - fits_open, filename, fcb - - if (qread.flux) then begin - flux = rspec_mrdfits(fcb, 0, rownums=rownums, silent=silent) - endif - - if (qread.invvar OR qread.flerr) then begin - invvar = rspec_mrdfits(fcb, 1, rownums=rownums, silent=silent) - if (qread.flerr) then begin - i = where(invvar GT 0) - flerr = 0 * invvar - if (i[0] NE -1) then flerr[i] = 1 / sqrt(invvar[i]) - endif - endif - - if (qread.andmask) then begin - andmask = rspec_mrdfits(fcb, 2, rownums=rownums, silent=silent) - endif - - if (qread.ormask) then begin - ormask = rspec_mrdfits(fcb, 3, rownums=rownums, silent=silent) - endif - - if (qread.disp) then begin - disp = rspec_mrdfits(fcb, 4, rownums=rownums, silent=silent) - endif - - if (qread.sky) then begin - sky = rspec_mrdfits(fcb, 6, rownums=rownums, silent=silent) - endif - - if (qread.plugmap) then begin - plugmap = rspec_mrdfits(fcb, 5, rownums=rownums, silent=silent) - endif - - if (qread.needwave) then begin - if (NOT keyword_set(objhdr)) then objhdr = headfits(filename) - coeff0 = replicate(sxpar(objhdr, 'COEFF0'), nrows) - coeff1 = replicate(sxpar(objhdr, 'COEFF1'), nrows) - npix = sxpar(objhdr, 'NAXIS1') - endif - - if (qread.tsobj) then begin - if keyword_set(sdss) then $ - matchdir=getenv('SPECTRO_MATCH')+'/'+twodir+'/'+ $ - file_basename(getenv('PHOTO_RESOLVE'))+'/'+platestr $ - else $ - matchdir=topdir+'/'+twoddir+'/'+platestr - tsobj1 = plug2tsobj(plate, mjd=mjd, $ - indir=matchdir, silent=silent) - if (keyword_set(tsobj1)) then tsobj = tsobj1[rownums] - endif - - if (qread.zmanual) then begin - zmanual1 = spmanual(plate, mjd=mjd) - if (keyword_set(zmanual1)) then zmanual = zmanual1[rownums] - endif - - if (qread.zans OR qread.synflux OR qread.zhdr) then begin - if (NOT keyword_set(znum)) then $ - zfile = 'spZbest-' + platestr + '-' + mjdstr + '.fits' $ - else $ - zfile = 'spZall-' + platestr + '-' + mjdstr + '.fits' - - if (keyword_set(path)) then $ - zfile = lookforgzip(filepath(zfile, root_dir=path, $ - subdirectory=[oneddir]), count=ct) $ - else $ - zfile = lookforgzip(filepath(zfile, root_dir=topdir, $ - subdirectory=[twoddir,platestr,oneddir]), count=ct) - - if keyword_set(calibdir) then begin - if (NOT keyword_set(znum)) then $ - zfile = 'spZbest-' + platestr + '-' + mjdstr + '.fits' $ - else $ - zfile = 'spZall-' + platestr + '-' + mjdstr + '.fits' - zfile = lookforgzip(filepath(zfile, root_dir=topdir, $ - subdirectory=[twoddir,platestr,calibdir,oneddir]), count=ct) - endif - - ; splog, zfile - - if (ct GT 1) then zfile = zfile[ (reverse(sort(zfile)))[0] ] $ - else zfile = zfile[0] - - if (keyword_set(zfile)) then begin - if (NOT keyword_set(znum)) then begin - fits_open, zfile, zfcb - zans = rspec_mrdfits(zfcb, 1, rownums=rownums, silent=silent) - fits_close, zfcb - endif else begin - zhdr0 = headfits(zfile, exten=0) - zhdr = headfits(zfile, exten=1) - nper = sxpar(zhdr0, 'DIMS0') ; number of fits per object - fits_open, zfile, zfcb - zans = rspec_mrdfits(zfcb, 1, rownums=rownums*nper+znum-1, $ - silent=silent) - fits_close, zfcb - endelse - endif - endif - - if (qread.synflux AND keyword_set(zfile)) then begin - ; Read the synthetic spectrum from the Zbest file if ZNUM is not set. - if (NOT keyword_set(znum)) then begin - fits_open, zfile, zfcb - synflux = rspec_mrdfits(zfcb, 2, rownums=rownums, silent=silent) - fits_close, zfcb - endif else begin - if (NOT keyword_set(objhdr)) then objhdr = headfits(filename) - if (keyword_set(zans)) then $ - synflux = synthspec(zans, hdr=objhdr) - endelse - endif - - if (qread.zline OR qread.lineflux) then begin - linefile = 'spZline-' + platestr + '-' + mjdstr + '.fits' - - if (keyword_set(path)) then $ - linefile = lookforgzip(filepath(linefile, root_dir=path, $ - subdirectory=[oneddir]), count=ct) $ - else $ - linefile = lookforgzip(filepath(linefile, root_dir=topdir, $ - subdirectory=[twoddir,platestr,oneddir]), count=ct) - - if keyword_set(calibdir) then begin - linefile = 'spZline-' + platestr + '-' + mjdstr + '.fits' - linefile = lookforgzip(filepath(linefile, root_dir=topdir, $ - subdirectory=[twoddir,platestr,calibdir,oneddir]), count=ct) - endif - - if (ct GT 1) then linefile = linefile[ (reverse(sort(linefile)))[0] ] $ - else linefile = linefile[0] - endif - - if (qread.zline AND keyword_set(linefile)) then begin - linehdr = headfits(linefile) - nlines = sxpar(linehdr, 'DIMS0') ; number of emission lines per object - - fits_open, linefile, linefcb - allrows = reform( rebin(reform(rownums*nlines,1,nrows), nlines, nrows), $ - nlines*nrows ) $ - + reform( rebin(lindgen(nlines), nlines, nrows), nlines*nrows) - allrows = (rebin(reform(rownums*nlines,1,nrows), nlines, nrows))[*] $ - + (rebin(lindgen(nlines), nlines, nrows))[*] - zline = rspec_mrdfits(linefcb, 1, $ - rownums=allrows, silent=silent) - fits_close, linefcb - - zline = reform(zline, nlines, nrows) - endif - - if (qread.lineflux AND keyword_set(linefile)) then begin - ; Read the line fit flux from the Zline file - fits_open, linefile, linefcb - lineflux = rspec_mrdfits(linefcb, 2, rownums=rownums, silent=silent) - fits_close, linefcb - endif - - if (qread.mjd) then begin - if (NOT keyword_set(objhdr)) then objhdr = headfits(filename) - mjd = sxpar(objhdr, 'MJD') - endif - - fits_close, fcb - - if (qread.objhdr AND (NOT keyword_set(objhdr))) then objhdr = headfits(filename) - if (qread.zhdr AND (NOT keyword_set(zhdr))) then zhdr = headfits(zfile) - if (qread.nfiber) then begin - if (keyword_set(objhdr)) then nfiber = long(sxpar(objhdr, 'NAXIS2')) $ - else nfiber = 0L - nfiber = replicate(nfiber, nrows) - endif - - return -end - -;------------------------------------------------------------------------------ -; Append two ZLINE structures, even if they are different structures -; or have different number of lines measured. -; If the structure definitions are different, use the definition from ZLINE1. -; If the number of lines are different, use the larger line list, and set -; those lines to all zeros in the shorter line list. - -function rspec_zline_append, zline1, zline2 - - qstruct1 = size(zline1,/tname) EQ 'STRUCT' - qstruct2 = size(zline2,/tname) EQ 'STRUCT' - - if (qstruct1 EQ 0 AND qstruct2 EQ 0) then $ - return, lonarr(n_elements(zline1) + n_elements(zline2)) - - ndim1 = size(zline1, /n_dimen) - ndim2 = size(zline2, /n_dimen) - dims1 = size(zline1, /dimens) - dims2 = size(zline2, /dimens) - nline = 1L - if (qstruct1) then begin - if (ndim1 EQ 1) then nobj1 = 1L $ - else nobj1 = dims1[1] - nline = nline > dims1[0] - endif else begin - nobj1 = n_elements(zline1) - endelse - if (qstruct2) then begin - if (ndim2 EQ 1) then obj2 = 1L $ - else nobj2 = dims2[1] - nline = nline > dims2[0] - endif else begin - nobj2 = n_elements(zline2) - endelse - nobjtot = nobj1 + nobj2 - - if (qstruct1) then blankline = zline1[0] $ - else blankline = zline2[0] - struct_assign, {junk:0}, blankline - zlinetot = replicate(blankline, nline, nobjtot) - if (qstruct1) then $ - copy_struct_inx, zline1, zlinetot, $ - index_to=(lindgen(dims1[0]) # (lonarr(nobj1)+1) $ - + (lonarr(dims1[0])+1) # (lindgen(nobj1)*nline))[*] - if (qstruct2) then $ - copy_struct_inx, zline2, zlinetot, $ - index_to=(lindgen(dims2[0]) # (lonarr(nobj2)+1) $ - + (lonarr(dims2[0])+1) # (lindgen(nobj2)*nline))[*] + nline*nobj1 - - return, zlinetot -end - -;------------------------------------------------------------------------------ -pro rm_readspec, plate, fiber, mjd=mjd, flux=flux, flerr=flerr, invvar=invvar, $ - andmask=andmask, ormask=ormask, disp=disp, sky=sky, plugmap=plugmap, $ - loglam=loglam, wave=wave, tsobj=tsobj, zans=zans, zmanual=zmanual, $ - zline=zline, synflux=synflux, lineflux=lineflux, objhdr=objhdr, zhdr=zhdr, $ - nfiber=nfiber, znum=znum, align=align, silent=silent, _EXTRA=Extra, $ - calibdir=calibdir - - if (n_params() LT 1) then begin - doc_library, 'rm_readspec' - return - endif - - ; This common block specifies which keywords will be returned. - qread_blank = { flux: 0b, flerr: 0b, invvar: 0b, andmask: 0b, ormask: 0b, $ - disp: 0b, sky: 0b, plugmap: 0b, loglam: 0b, wave: 0b, tsobj: 0b, $ - zans: 0b, zmanual: 0b, zline: 0b, synflux: 0b, lineflux: 0b, mjd: 0b, $ - objhdr: 0b, zhdr: 0b, nfiber: 0b, needwave: 0b } - -; ??? -; if (keyword_set(topdir) EQ 0 AND keyword_set(path) EQ 0) then begin -; topdir = getenv('BOSS_SPECTRO_REDUX') -; if (NOT keyword_set(topdir)) then $ -; message, 'Environment variable BOSS_SPECTRO_REDUX must be set!' -; endif - - qread = qread_blank - qread.flux = arg_present(flux) - qread.flerr = arg_present(flerr) - qread.invvar = arg_present(invvar) - qread.andmask = arg_present(andmask) - qread.ormask = arg_present(ormask) - qread.disp = arg_present(disp) - qread.sky = arg_present(sky) - qread.plugmap = arg_present(plugmap) OR arg_present(tsobj) - qread.loglam = arg_present(loglam) - qread.wave = arg_present(wave) - qread.tsobj = arg_present(tsobj) - qread.zans = arg_present(zans) - qread.zmanual = arg_present(zmanual) - qread.zline = arg_present(zline) - qread.synflux = arg_present(synflux) - qread.lineflux = arg_present(lineflux) - qread.mjd = arg_present(mjd) AND (keyword_set(mjd) EQ 0) - qread.objhdr = arg_present(objhdr) OR (arg_present(nfiber)) - qread.zhdr = arg_present(zhdr) - qread.nfiber = arg_present(nfiber) - objhdr = '' - zhdr = '' - qread.needwave = qread.loglam OR qread.wave OR keyword_set(align) - - nplate = n_elements(plate) - if (nplate EQ 0) then $ - message, 'PLATE must be defined' - if (keyword_set(mjd) AND n_elements(mjd) NE nplate) then $ - message, 'Number of elements in PLATE and MJD must agree' - - if (NOT keyword_set(fiber)) then begin - ; Special case to read all fibers of each plate - ; We need to know how many there are on each plate! - ; Find MJD if not specified... - if (keyword_set(mjd)) then mjd_tmp=mjd $ - else rm_readspec, plate, plate*0+1, mjd=mjd_tmp, $ - silent=silent, _EXTRA=Extra - rm_readspec, plate, plate*0+1, mjd=mjd_tmp, nfiber=nfiber_tmp, $ - silent=silent, _EXTRA=Extra - nfiber_tot = long(total(nfiber_tmp)) - platevec = lonarr(nfiber_tot>1) - fibervec = lonarr(nfiber_tot>1) - mjdvec = lonarr(nfiber_tot>1) - j = 0L - for i=0L, nplate-1L do begin - if (nfiber_tmp[i] GT 0) then begin - platevec[j:j+nfiber_tmp[i]-1] = plate[i] - fibervec[j:j+nfiber_tmp[i]-1] = lindgen(nfiber_tmp[i]) + 1 - mjdvec[j:j+nfiber_tmp[i]-1] = mjd_tmp[i] - j += nfiber_tmp[i] - endif - endfor - endif else begin - nfiber = n_elements(fiber) - if (nplate GT 1 AND nfiber GT 1 AND nplate NE nfiber) then $ - message, 'Number of elements in PLATE and FIBER must agree or be 1' - - nvec = nplate > nfiber - if (nplate GT 1) then platevec = plate $ - else platevec = lonarr(nvec) + plate[0] - if (nfiber GT 1) then fibervec = fiber $ - else fibervec = lonarr(nvec) + fiber[0] - if (keyword_set(mjd)) then mjdvec = lonarr(nvec) + mjd $ - else mjdvec = lonarr(nvec) - endelse - - ; Find unique plate+MJD combinations, since each has its own data file - sortstring = strtrim(string(platevec),2) + '-' + strtrim(string(mjdvec),2) - isort = sort(sortstring) - iuniq = uniq(sortstring[isort]) - platenums = platevec[ isort[iuniq] ] - mjdnums = mjdvec[ isort[iuniq] ] - nfile = n_elements(platenums) - - for ifile=0L, nfile-1L do begin - objhdr1 = 0 - zhdr1 = 0 - flux1 = 0 - flerr1 = 0 - invvar1 = 0 - andmask1 = 0 - ormask1 = 0 - disp1 = 0 - sky1 = 0 - plugmap1 = 0 - tsobj1 = 0 - zans1 = 0 - zmanual1 = 0 - zline1 = 0 - synflux1 = 0 - lineflux1 = 0 - nfiber1 = 0 - - indx = where(platevec EQ platenums[ifile] AND mjdvec EQ mjdnums[ifile]) - irow = fibervec[indx] - 1 - -; if (keyword_set(silent)) then print, '+', format='(A,$)' - - mjd1 = mjdnums[ifile] - rm_readspec1, platenums[ifile], irow, mjd=mjd1, $ - flux=flux1, flerr=flerr1, invvar=invvar1, andmask=andmask1, $ - ormask=ormask1, disp=disp1, sky=sky1, plugmap=plugmap1, $ - tsobj=tsobj1, zans=zans1, zmanual=zmanual1, zline=zline1, $ - synflux=synflux1, lineflux=lineflux1, objhdr=objhdr1, zhdr=zhdr1, $ - nfiber=nfiber1, znum=znum, coeffzero=coeff0, coeffone=coeff1, npix=npix, $ - align=align, silent=silent, qread=qread, _EXTRA=Extra, calibdir=calibdir - coeff0 = double(coeff0) - coeff1 = double(coeff1) - - if (qread.objhdr AND NOT keyword_set(objhdr)) then objhdr = objhdr1 - if (qread.zhdr AND NOT keyword_set(zhdr)) then zhdr = zhdr1 - if (ifile EQ 0) then begin - allindx = indx - if (qread.needwave) then begin - allcoeff0 = coeff0 - allcoeff1 = coeff1 - npixmax = npix - endif - if (qread.flux) then flux = flux1 - if (qread.flerr) then flerr = flerr1 - if (qread.invvar) then invvar = invvar1 - if (qread.andmask) then andmask = andmask1 - if (qread.ormask) then ormask = ormask1 - if (qread.disp) then disp = disp1 - if (qread.sky) then sky = sky1 - if (qread.plugmap) then plugmap = plugmap1 - if (qread.tsobj) then tsobj = tsobj1 - if (qread.zans) then zans = zans1 - if (qread.zmanual) then zmanual = zmanual1 - if (qread.zline) then zline = zline1 - if (qread.synflux) then synflux = synflux1 - if (qread.lineflux) then lineflux = lineflux1 - if (qread.mjd) then mjd = mjd1 - if (qread.nfiber) then nfiber = nfiber1 - endif else begin - allindx = [allindx, indx] - if (qread.needwave) then begin - ; If pixshift > 0, then this newly-read spectrum starts at - ; bigger wavelengths than the previously-read spectra. - ; Adjust the starting wavelengths appropriately to correspond - ; to how spec_append will shift the spectra. - mincoeff0 = min(allcoeff0) - if (keyword_set(align)) then begin - ; The following few lines of code deal with setting a - ; wavelength scale for objects with missing data. - if (mincoeff0 EQ 0 AND coeff0[0] GT 0) then begin - allcoeff0[*] = coeff0[0] - allcoeff1[*] = coeff1[0] - endif - if (mincoeff0 GT 0 AND coeff0[0] EQ 0) then begin - coeff0[*] = mincoeff0 - coeff1[*] = allcoeff1[0] - endif - - ; Add 0.5 below to take care of round-off errors - pixshift = floor( (coeff0[0] - mincoeff0) / coeff1[0] + 0.5 ) - if (pixshift GT 0) then begin - coeff0 = coeff0 - pixshift * coeff1 - npixmax = max([npixmax, npix+pixshift]) - endif else begin - allcoeff0 = allcoeff0 + pixshift * allcoeff1 - npixmax = max([npixmax-pixshift, npix]) - endelse - endif else begin - npixmax = max([npix, npixmax]) - pixshift = 0 - endelse - allcoeff0 = [allcoeff0, coeff0] - allcoeff1 = [allcoeff1, coeff1] - endif - if (qread.flux) then spec_append, flux, flux1, pixshift - if (qread.flerr) then spec_append, flerr, flerr1, pixshift - if (qread.invvar) then spec_append, invvar, invvar1, pixshift - if (qread.andmask) then spec_append, andmask, andmask1, pixshift - if (qread.ormask) then spec_append, ormask, ormask1, pixshift - if (qread.disp) then spec_append, disp, disp1, pixshift - if (qread.sky) then spec_append, sky, sky1, pixshift - if (qread.plugmap) then plugmap = struct_append(plugmap, plugmap1, /force) - if (qread.tsobj) then tsobj = struct_append(tsobj, tsobj1, /force) - if (qread.zans) then zans = struct_append(zans, zans1, /force) - if (qread.zmanual) then zmanual = struct_append(zmanual, zmanual1, /force) -; The first two attempts below can fail if the ZLINE structure changes. -; if (qread.zline) then zline = struct_append(zline, [zline1]) -; if (qread.zline) then zline = [[zline], [zline1]] - if (qread.zline) then zline = rspec_zline_append(zline, zline1) - if (qread.synflux) then spec_append, synflux, synflux1, pixshift - if (qread.lineflux) then spec_append, lineflux, lineflux1, pixshift - if (qread.mjd) then mjd = [mjd, mjd1] - if (qread.nfiber) then nfiber = [nfiber, nfiber1] - endelse - endfor - - ; Re-sort the data - if (qread.flux) then flux[*,[allindx]] = flux[*] - if (qread.flerr) then flerr[*,[allindx]] = flerr[*] - if (qread.invvar) then invvar[*,[allindx]] = invvar[*] - if (qread.andmask) then andmask[*,[allindx]] = andmask[*] - if (qread.ormask) then ormask[*,[allindx]] = ormask[*] - if (qread.disp) then disp[*,[allindx]] = disp[*] - if (qread.sky) then sky[*,[allindx]] = sky[*] - if (qread.plugmap) then begin - if (keyword_set(plugmap[0])) then $ - copy_struct_inx, plugmap, plugmap, index_to=allindx - endif - if (qread.needwave) then begin - allcoeff0[allindx] = allcoeff0[*] ; Must de-reference before assignment - allcoeff1[allindx] = allcoeff1[*] ; Must de-reference before assignment - endif - if (qread.tsobj) then begin - if (keyword_set(tsobj[0])) then $ - copy_struct_inx, tsobj, tsobj, index_to=allindx - endif - if (qread.zans) then begin - if (keyword_set(zans[0])) then $ - copy_struct_inx, zans, zans, index_to=allindx - endif - if (qread.zmanual) then begin - if (keyword_set(zmanual[0])) then $ - copy_struct_inx, zmanual, zmanual, index_to=allindx - endif - if (qread.zline) then begin - if (keyword_set(zline[0])) then begin - ; Logically, we want to make the assignment ZLINE[*,ALLINDX] = ZLINE - nlines = (size(zline, /dimen))[0] - index_to = make_array(size=size(zline), /long) - for iline=0L, nlines-1 do index_to[iline,*] = allindx * nlines + iline - copy_struct_inx, zline, zline, index_to=index_to[*] - endif - endif - if (qread.synflux) then synflux[*,[allindx]] = synflux[*] - if (qread.lineflux) then lineflux[*,[allindx]] = lineflux[*] - if (qread.mjd) then mjd[allindx] = mjd[*] - if (qread.nfiber) then nfiber[allindx] = nfiber[*] - - ;---------- - ; Construct the output wavelength solutions - - if (qread.loglam OR qread.wave) then begin - npixmax = npixmax > 1 - if (keyword_set(align)) then begin - loglam = allcoeff0[0] + allcoeff1[0] * lindgen(npixmax) - endif else begin - nobj = n_elements(allcoeff0) - loglam = dblarr(npixmax,nobj) - for iobj=0L, nobj-1 do $ - loglam[*,iobj] = allcoeff0[iobj] + allcoeff1[iobj] * lindgen(npixmax) - endelse - if (qread.wave AND qread.loglam) then wave = 10^loglam $ - else if (qread.wave) then wave = temporary(10^loglam) - endif - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/rm/rm_skymask.pro b/pro/rm/rm_skymask.pro deleted file mode 100644 index c77fb9543..000000000 --- a/pro/rm/rm_skymask.pro +++ /dev/null @@ -1,29 +0,0 @@ -;+ -; NAME: -; -; PURPOSE: -; Return a mask using David Kirby's skymask (dr9-sky-mask) -; wh-sky-mask is the one generated using all sky spectra from the RM program by Yue Shen - -function rm_skymask, wave, margin=margin, skyfile=skyfile, fmt=fmt - - if not keyword_Set(margin) then margin = 1L - - if ~keyword_Set(skyfile) then $ - ;skyfile = getenv('IDLRM_DIR')+'/etc/dr9-sky-mask.txt' - skyfile=getenv('IDLRM_DIR')+'/etc/wh-sky-mask.txt' - if ~keyword_set(fmt) then fmt='x,d' ; fmt='d' for dr9-sky-mask - readcol,skyfile,format=fmt,/silent,skymask - - npix = n_elements(wave) - mask = lonarr(npix) - mask[*] = 1 - - arr = abs( alog10( wave # (1./skymask) ) )*1d4 - dist_arr = round( min( arr, dim=2 ) ) - ind = where(dist_arr lt margin) - if ind[0] ne -1 then mask[ind] = 0 - - return, mask - -end diff --git a/pro/rm/rm_skysub.pro b/pro/rm/rm_skysub.pro deleted file mode 100644 index ccfcf331e..000000000 --- a/pro/rm/rm_skysub.pro +++ /dev/null @@ -1,51 +0,0 @@ -; NAME: -; rm_skysub -; PURPOSE: -; Use the Wild&Hewett algorithm to subtract sky residual -; - -pro rm_skysub,plate,fiber,mjd,z=z,qso=qso,star=star,_Extra=extra, $ - wave=wave, flux=flux, err=err, $ - newflux=newflux, newerr=newerr - - - calibdir='recalib/' - if ~keyword_set(flux) or ~keyword_set(err) then $ - rm_readspec,plate,fiber,mjd=mjd,calibdir=calibdir,loglam=loglam,wave=wave,flerr=err,flux=flux - - ; set up eigenspec common block - common subtractOH1 - if n_elements(espec) eq 0 then begin - ;file='/data3/quasar/yshen/ftp/bossredux/v5_7_1/wh_skysub/pca.fits' - file=getenv('IDLRM_DIR')+'/template/sky_residual_pca.fits' - - pca=mrdfits(file,1) - lambda=pca.loglam & espec=pca.eigenspec & pix_sky=pca.ind_sky & pix_nosky=pca.ind_nonsky - ; cull out a red-wavelength region - ind_tmp=where(10.^lambda gt 5000., ncomplement=ncomp) - lambda=lambda[ind_tmp] - pix_sky=pix_sky - ncomp & pix_nosky=pix_nosky - ncomp - ; remove the nosky pixels below 5000 A - ind_tmp=where(pix_nosky ge 0) - pix_nosky=pix_nosky[ind_tmp] - endif - - ; setup weights_in - common plate_weights, sarr, weights_in - if n_elements(sarr) eq 0 then begin - gen_err_rescaling, plate, mjd, narr=narr, carr=carr, sarr=sarr - weights_in = 1./(narr*sarr) - endif - - newerr=err*sarr - - ; note that the sky residual eigenvectors were created on the set of - ; sky spectra unnormalized by the scaled errors, which is likely different - ; from Wild&Hewett in which the eigenvectors were created on the normalized - ; sky spectra. However, the two approaches give negligible difference, so - ; I am sticking to my approach - - newflux=subtractOH(flux,err,loglam,z,dummyplate, $ - rms=rms,nrecon=nrecon,weights=weights_in, qso=qso,star=star, _Extra=extra) - -end diff --git a/pro/rm/rm_skysub_plate.pro b/pro/rm/rm_skysub_plate.pro deleted file mode 100644 index fdc76fa26..000000000 --- a/pro/rm/rm_skysub_plate.pro +++ /dev/null @@ -1,124 +0,0 @@ -; subtract sky residual using the Wild&Hewett05 method -; for a given plate -; this only works for the relibrated data with fixed wavelength coverage -; -; .comp rm_prep_skysub -; to run for the 2015 eBOSS data with new reduction v5_10_10, do -; rm_skysub_plate, topdir='/data3/yshen/spectro/bossredux/v5_10_10/', run2d='v5_10_10' - -pro rm_skysub_plate, plate, mjd, topdir=topdir, diag=diag, outdir_tag=outdir_tag, $ - pcafile=pcafile, _Extra=extra - - calibdir='recalib/' - if ~keyword_set(topdir) then topdir=getenv('BOSS_SPECTRO_REDUX') + '/' + $ - getenv('RUN2D')+'/' - - file=getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - platelist=target[0].plate - mjdlist=target[0].mjd - - if not keyword_set(outdir_tag) then outdir_tag='wh_skysub/' - - ; set up eigenspec common block used in subtractoh.pro - common subtractOH1, espec, lambda, pix_sky, pix_nosky - ;file='/data3/quasar/yshen/ftp/bossredux/v5_7_1/wh_skysub/pca.fits' - file=getenv('IDLRM_DIR')+'/template/sky_residual_pca.fits' - if keyword_Set(pcafile) then file=pcafile - pca=mrdfits(file,1) - lambda=pca.loglam & espec=pca.eigenspec & pix_sky=pca.ind_sky & pix_nosky=pca.ind_nonsky - ; cull out a red-wavelength region - ind_tmp=where(10.^lambda gt 5000., ncomplement=ncomp) - lambda=lambda[ind_tmp] - pix_sky=pix_sky - ncomp & pix_nosky=pix_nosky - ncomp - ; remove the nosky pixels below 5000 A - ind_tmp=where(pix_nosky ge 0) - pix_nosky=pix_nosky[ind_tmp] - - ; start the sky subtraction process - common plate_weights,sarr, weights_in - for i=0L, n_elements(plate) - 1 do begin - - ; generate the by-plate weights (to be used by subtractOH) - gen_err_rescaling, plate[i], mjd[i], narr=narr, carr=carr, sarr=sarr,_Extra=extra - weights_in = 1./(narr*sarr) - ;weights_in = getweights(plate[i], './') - - ; Added on 10/29/2015 to fix the sky subtraction issue for 2015 SDSS plates - ; namely, the median error on the plate at some sky pixels could be zero, which - ; is different from the 2014 plates - ; make sure there are no INF weights_in due to narr=0 (median error for the plate) - ind_inf=where(finite(weights_in) eq 0,complement=ind_f) - if ind_inf[0] ne -1 then weights_in[ind_inf]=median(weights_in[ind_f]) - - pstr=string(plate[i],format='(i4.4)') - mstr=string(mjd[i],format='(i5.5)') - outdir=topdir+pstr+'/' + outdir_tag - if file_test(outdir) eq 0 then spawn, 'mkdir ' + outdir - - ; get the fits headers of spPlate* - spfile=topdir+pstr+'/'+calibdir+'spPlate-'+pstr+'-'+mstr+'.fits' - rm_readspec,plate[i],1,mjd=mjd[i],wave=wave,loglam=loglam,calibdir=calibdir,_Extra=extra - HDU0=mrdfits(spfile,0,hd0) ; flux - HDU1=mrdfits(spfile,1,hd1) ; invvar - HDU2=mrdfits(spfile,2,hd2) ; AND-pixelmask - HDU3=mrdfits(spfile,3,hd3) ; OR-puxelmask - HDU4=mrdfits(spfile,4,hd4) ; dispersion map - HDU5=mrdfits(spfile,5,hd5) ; plugmap - HDU6=mrdfits(spfile,6,hd6) ; sky - - ; we will only replace the flux and invvar images - npix=(size(HDU0,/dim))[0] & nobj=(size(HDU0,/dim))[1] - flux_arr=fltarr(npix,nobj) & ivar_arr=fltarr(npix,nobj) - err_arr_in=HDU1*0. - ind_tmp=where(HDU1 gt 0) - err_arr_in[ind_tmp]=1./sqrt(HDU1[ind_tmp]) - - ; loop over all fibers - iep=where(platelist eq plate[i] and mjdlist eq mjd[i]) - for jj=0L, nobj-1 do begin - - qso=0 & star=0 & sky=0 - type=strtrim(target[jj].sourcetype) - if strmatch(type,'RM*') ne 0 then QSO=1 else begin - if type eq 'STD' then STAR=1 else SKY=1 - endelse - - fiber=(target[jj].fiberid)[iep] & z=target[jj].zfinal - flux=HDU0[*, fiber-1] & err=err_arr_in[*,fiber-1] - - ; call the modified subtractoh to get the cleaned spectrum - ; note that the sky residual eigenvectors were created on the set of - ; sky spectra unnormalized by the scaled errors, which is likely different - ; from Wild&Hewett in which the eigenvectors were created on the normalized - ; sky spectra. However, the two approaches give negligible difference, so - ; I am sticking to my approach - newflux=subtractOH(flux,err,loglam,z,dummyplate, $ - rms=rms,nrecon=nrecon,weights=weights_in, qso=qso,star=star, sky=sky,_Extra=extra) - if keyword_set(diag) then pause else $ - splog, 'finished: Plate, mjd, iobj:', plate[i], mjd[i], jj - - newerr=err*sarr - newivar=0.*newerr - ind_tmp=where(newerr gt 0) - if ind_tmp[0] ne -1 then newivar[ind_tmp] = 1./(newerr[ind_tmp])^2 - flux_arr[*,fiber-1]=newflux - ivar_arr[*,fiber-1]=newivar - endfor - - ; now output the new plate - outfile=outdir+'spPlate-'+pstr+'-'+mstr+'.fits' - splog, 'outfile:', outfile - mwrfits, flux_arr, outfile, hd0, /create - mwrfits, ivar_arr, outfile, hd1 - mwrfits, HDU2, outfile, hd2 - mwrfits, HDU3, outfile, hd3 - mwrfits, HDU4, outfile, hd4 - mwrfits, HDU5, outfile, hd5 - mwrfits, HDU6, outfile, hd6 - - endfor - - -end - diff --git a/pro/rm/rm_spcoadd_v5.old b/pro/rm/rm_spcoadd_v5.old deleted file mode 100644 index 2956b729f..000000000 --- a/pro/rm/rm_spcoadd_v5.old +++ /dev/null @@ -1,1719 +0,0 @@ -;+ -; NAME: -; rm_spcoadd_v5 -; -; PURPOSE: -; Combine several reduced frames of the same objects -; -; CALLING SEQUENCE: -; spcoadd_v5, spframes, outputname, $ -; [ mjd=, binsz=, zeropoint=, nord=, wavemin=, $ -; bkptbin=, window=, maxsep=, adderr=, plotsnfile=, $ -; combinedir=, bestexpnum= ] -; -; INPUTS: -; spframes - Name(s) of spFrame files (written by SPREDUCE) -; outputname - Output file name -; plotsnfile - Name of output plot file -; -; OPTIONAL KEYWORDS: -; mjd - The MJD to put in the output header -; binsz - Bin size (in log-10 wavelength) in output spectra; -; default to 1d-4, which corresponds to 69.02977415 km/s. -; zeropoint - Log10(lambda) zero-point of the output spectra; -; the output wavelength bins are chosen such that -; one bin falls exactly on this value; -; default to 3.5D, which corresponds to 3162.27766 Ang. -; nord - Order for spline fit; default to 3 (cubic spline). -; wavemin - Log-10 wavelength of first pixel in output spectra; -; default to the nearest bin to the smallest wavelength -; of the input spectra. -; bkptbin - Parameter for COMBINE1FIBER -; window - Window size for apodizing the errors of the spectrum -; from each individual frame; -; default to 100 pixels apodization on each end of the -; spectra. -; maxsep - Parameter for COMBINE1FIBER -; adderr - Additional error to add to the formal errors, as a -; fraction of the flux. -; combinedir - Optional output directory -; bestexpnum - Exposure number for best exposure, to which all other -; exposures are tied; this is only used in this procedure -; for logging in the FITS header -; radec_coadd - Coadd using ra-dec matching rather then catalogID matching -; no_spline - Turns off spline rejection in the coadding -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; All input files must have the same number of pixels per spectrum, -; i.e. 2048 wavelength samplings, although those wavelengths can -; be different. -; -; Flux-correction files are also read in, where they are assumed to -; have the name spFluxcorr-EEEEEEEE-S.fits, where EEEEEEEE is the exposure -; number and S is the spectrograph ID (1 or 2). -; -; EXAMPLES: -; -; BUGS: -; This routine used to combine data from multiple (different) plug maps. -; Objects are matched based upon their positions agreeing to 2 arc sec. -; This is *not* true any longer, especially when applying the -; flux-distortion solutions. -; -; PROCEDURES CALLED: -; combine1fiber -; correct_dlam -; divideflat -; djs_diff_angle() -; fcalib_default() -; fiber_rollcall -; flux_distortion() -; idlspec2d_version() -; mkhdr -; mrdfits() -; mwrfits -; pixelmask_bits() -; platesn -; splog -; spframe_read -; sxaddpar -; sxdelpar -; sxpar() -; traceset2xy -; -; INTERNAL SUPPORT PROCEDURES: -; makelabel() -; add_iraf_keywords -; -; REVISION HISTORY: -; 02-Jan-2000 Written by D. Schlegel; modified from COMBINE2DOUT -;- -;------------------------------------------------------------------------------ -function makelabel, hdr - - camera = strtrim(sxpar(hdr, 'CAMERAS'),2) - expos = strtrim(string(sxpar(hdr, 'EXPOSURE')),2) - flat = strmid(sxpar(hdr, 'FLATFILE'),7,8) - arc = strmid(sxpar(hdr, 'ARCFILE'),7,8) - - label = string(camera, expos, flat, arc, $ - format='(a2,"-",i8.8,"-",a8,"-",a8)') - - return, label -end - -;------------------------------------------------------------------------------ -pro add_iraf_keywords, hdr, wavemin, binsz - - sxaddpar, hdr, 'WAT0_001', 'system=linear' - sxaddpar, hdr, 'WAT1_001', $ - 'wtype=linear label=Wavelength units=Angstroms' - sxaddpar, hdr, 'CRVAL1', wavemin, $ - ' Central wavelength (log10) of first pixel' - sxaddpar, hdr, 'CD1_1', binsz, ' Log10 dispersion per pixel' - sxaddpar, hdr, 'CRPIX1', 1, ' Starting pixel (1-indexed)' - sxaddpar, hdr, 'CTYPE1', 'LINEAR' - sxaddpar, hdr, 'DC-FLAG', 1, ' Log-linear flag' - - return -end - -;------------------------------------------------------------------------------ -function unique_plmap_values, tag - tag = STRSPLIT(tag, /EXTRACT) - tag=tag[UNIQ(tag, SORT(tag))] - return,STRJOIN(tag,' ') -end -;------------------------------------------------------------------------------ -; Simply scale the overlaping wavelength region of blue/red to a common scale -pro rm_fluxscale_ccd, waveb, fluxb, ivarb, waver, fluxr, ivarr, red=red,blue=blue - - ; common wavelength range - lam_range = [5900., 6250.] - d_loglam = 1d-4 - npix = alog10(lam_range[1]/lam_range[0])/d_loglam - loglam_vec = alog10(5900.) + d_loglam*findgen(npix+1) - - ind1 = where(waveb ge lam_range[0] and waveb le lam_range[1] $ - and ivarb gt 0, npix1) - ind2 = where(waver ge lam_range[0] and waver le lam_range[1] $ - and ivarr gt 0, npix2) - if npix1 gt 100 and npix2 gt 100 then begin - flux_interp1 = interpol(fluxb[ind1],waveb[ind1],10.D^loglam_vec) - flux_interp2 = interpol(fluxr[ind2],waver[ind2],10.D^loglam_vec) - scale = median(flux_interp1/flux_interp2) - if keyword_set(red) and scale gt 0 then begin - fluxb = fluxb/scale & ivarb = ivarb*scale^2 - endif - - if keyword_set(blue) and scale gt 0 then begin - fluxr = fluxr*scale & ivarr = ivarr/scale^2 - endif - - if not keyword_set(red) and not keyword_set(blue) and scale gt 0 then begin - fluxb = fluxb*0.5*(1.+1./scale) & ivarb = ivarb/(0.5*(1.+1./scale))^2 - fluxr = fluxr*0.5*(1.+scale) & ivarb = ivarr/(0.5*(1.+scale))^2 - endif - - endif - -end - -;------------------------------------------------------------------------------ - -pro rm_spcoadd_v5, spframes, outputname, $ - mjd=mjd, binsz=binsz, zeropoint=zeropoint, nord=nord, $ - wavemin=wavemin, wavemax=wavemax, $ - bkptbin=bkptbin, window=window, maxsep=maxsep, adderr=adderr, $ - docams=camnames, plotsnfile=plotsnfile, combinedir=combinedir, $ - bestexpnum=bestexpnum,nofcorr=nofcorr,nodist=nodist, $ - plates=plates, legacy=legacy, single_spectra=single_spectra, $ - radec_coadd=radec_coadd, no_spline=no_spline - - @specFileHdr_cards.idl - - - if (NOT keyword_set(binsz)) then binsz = 1.0d-4 $ - else binsz = double(binsz) - if (NOT keyword_set(zeropoint)) then zeropoint = 3.5D - if (n_elements(window) EQ 0) then window = 100 - if (NOT keyword_set(combinedir)) then combinedir='' - - string1 = repstr(outputname,'spField','spFluxdistort') - string2 = repstr(string1,'.fits','.ps') - distortfitsfile = djs_filepath(string1, root_dir=combinedir) - distortpsfile = djs_filepath(string2, root_dir=combinedir) - - ;---------- - ; Sort filenames such that this list contains first the blue then the red - - nfiles = n_elements(spframes) - if (nfiles EQ 0) then return - - filenames = spframes[sort(spframes)] - - ;--------------------------------------------------------------------------- - if keyword_set(legacy) then begin - if NOT keyword_set(camnames) then camnames = ['b1', 'r1', 'b2', 'r1'] - radec_coadd = 1 ; no catalogid for legacy - endif else begin - if NOT keyword_set(camnames) then camnames = ['b1', 'r1'] - endelse - ncam = N_elements(camnames) - nexpvec = lonarr(ncam) - exptimevec = fltarr(ncam) - single_spectra=1 - ;--------------------------------------------------------------------------- - ; Loop through each 2D output and read in the data - ;--------------------------------------------------------------------------- - - ; Start by determining the size of all the files - npixarr = lonarr(nfiles) - plugmap_rm=create_struct('DESIGN','','CONFIGURATION','','RA0',0.D,'DEC0',0.D,$ - 'TAI',0.D,'MJD',0.0,'AIRMASS',0.D,'DATE','','EXPTIME',0.0,$ - 'SEEING20',0.D,'SEEING50',0.D,'SEEING80',0.D) - if keyword_set(legacy) then begin - nexp_tmp2 = nfiles/4 ;Get data for each exposure - endif else begin - nexp_tmp2 = nfiles/2 - endelse - rm_plugmap = replicate(plugmap_rm, nexp_tmp2) - for ifile=0, nfiles-1 do begin - spframe_read, filenames[ifile], hdr=objhdr - npixarr[ifile] = sxpar(objhdr,'NAXIS1') - if ifile LT nexp_tmp2 then begin - if keyword_set(legacy) or keyword_set(plates) then begin - rm_plugmap[ifile].configuration=sxpar(objhdr,'PLATEID') - endif else begin - rm_plugmap[ifile].configuration=sxpar(objhdr,'CONFID') - rm_plugmap[ifile].DESIGN=sxpar(objhdr,'DESIGNID') - endelse - rm_plugmap[ifile].ra0=sxpar(objhdr,'RA') - rm_plugmap[ifile].dec0=sxpar(objhdr,'DEC') - rm_plugmap[ifile].tai=sxpar(objhdr,'TAI-BEG') - rm_plugmap[ifile].mjd=sxpar(objhdr,'MJD') - rm_plugmap[ifile].airmass=sxpar(objhdr,'AIRMASS') - rm_plugmap[ifile].SEEING20=sxpar(objhdr,'SEEING20') - rm_plugmap[ifile].SEEING50=sxpar(objhdr,'SEEING50') - rm_plugmap[ifile].SEEING80=sxpar(objhdr,'SEEING80') - mjdt=sxpar(objhdr,'TAI-BEG')/(24.D*3600.D) - mjd2datelist,mjdt,datelist=date - rm_plugmap[ifile].date=date - rm_plugmap[ifile].exptime=sxpar(objhdr,'EXPTIME') - endif - endfor - npixmax = max(npixarr) - nobj = sxpar(objhdr,'NAXIS2') ; Number of fibers per spectrograph - - for ifile=0, nfiles-1 do begin - ;---------- - ; Read in all data from this input file. - ; Reading the plug-map structure will fail if its structure is - ; different between different files. - - splog, 'Reading file #', ifile, ': ', filenames[ifile], $ - prename=filenames[ifile] - spframe_read, filenames[ifile], objflux=tempflux, objivar=tempivar, $ - mask=temppixmask, wset=tempwset, dispset=tempdispset, plugmap=tempplug, $ - skyflux=tempsky, ximg=tempximg, superflat=tempsuperflat, $ - hdr=hdr, adderr=adderr, reslset=tempreslset - - if (ifile EQ 0) then $ - hdrarr = ptr_new(hdr) $ - else $ - hdrarr = [hdrarr, ptr_new(hdr)] - - ;---------- - ; Read header info - - thismjd = sxpar(hdr, 'MJD') - if (NOT keyword_set(mjdlist)) then mjdlist = thismjd $ - else mjdlist = [mjdlist, thismjd] - cameras = strtrim(sxpar(hdr, 'CAMERAS'),2) - expstr = string(sxpar(hdr, 'EXPOSURE'), format='(i8.8)') - - thisdesign = sxpar(hdr,'DESIGNID') - thisconfig = sxpar(hdr,'CONFID') - if (NOT keyword_set(designlist)) then designlist = thisdesign $ - else designlist = [designlist, thisdesign] - if (NOT keyword_set(configlist)) then configlist = thisconfig $ - else configlist = [configlist, thisconfig] - - ;---------- - ; Solve for wavelength and lambda-dispersion at each pixel in the image - - ;need to reset junk since the array lengths change - junk=0 - traceset2xy, tempwset, junk, tempwave - traceset2xy, tempdispset, junk, tempdispersion - traceset2xy, tempreslset, junk, tempresolution - ;---------- - ; Here is the correct conversion from pixels to log-lambda dispersion. - ; We are converting from the dispersion in units of spFrame pixel sizes - ; to the dispersion in units of the new rebinned pixel size, which is - ; BINSZ in log-lambda units. - - ; this probably should be fixed elsewhere but limit where the fit range - tempxmax=tempwset.xmax - tempwset.xmax=(size(tempdispersion,/dimens))[0]-1 - correct_dlam, tempdispersion, 0, tempwset, dlam=binsz, /inverse - ;correct_dlam, tempresolution, 0, tempwset, dlam=binsz, /inverse - tempwset.xmax=tempxmax - - ;---------- - - dims = size(tempflux, /dimens) - npix = dims[0] - nfib = dims[1] - - ;---------- - ; Make a map of the size of each pixel in delta-(log10-Angstroms), - ; and re-normalize the flux to electrons/(dloglam) - - correct_dlam, tempflux, tempivar, tempwset, dlam=binsz - correct_dlam, tempsky, 0, tempwset, dlam=binsz - - ;---------- - ; Determine if this is a blue or red spectrum - - icam = (where(cameras EQ camnames))[0] - if (icam EQ -1) then $ - message, 'Unknown camera ' + cameras - nexpvec[icam] = nexpvec[icam] + 1 - exptimevec[icam] = exptimevec[icam] + sxpar(hdr, 'EXPTIME') - - ;---------- - ; Apply spectro-photometric calibration - - expnum = sxpar(hdr, 'EXPOSURE') - calibfile = djs_filepath(string(camnames[icam], expnum, $ - format='("spFluxcalib-", a2, "-", i8.8, ".fits")'), $ - root_dir=combinedir) - calibfile = (findfile(calibfile+'*'))[0] - - if (keyword_set(calibfile)) then begin - calibfac = mrdfits(calibfile, 0, calibhdr, /silent) - endif else begin - splog, 'WARNING: Reading default flux-calib vectors for camera=' $ - + camnames[icam] - calibfac = fcalib_default(camnames[icam], tempwave, exptimevec[icam]) - endelse - minval = 0.05 * mean(calibfac) - divideflat, tempflux, invvar=tempivar, calibfac, minval=minval - divideflat, tempsky, calibfac, minval=minval - temppixmask = temppixmask $ - OR ((calibfac LE minval OR keyword_set(calibfile) EQ 0) $ - * pixelmask_bits('BADFLUXFACTOR')) - - ;---------- - ; Apply flux-correction factor between spectro-photometric exposure - ; and this exposure. There's also an optional additive term. - ; So the flux is first multiplied by HDU#0, then we add HDU#1. - - if not keyword_set(nofcorr) then begin - corrfile = djs_filepath(string(camnames[icam], expnum, $ - format='("spFluxcorr-", a2, "-", i8.8, ".fits")'), $ - root_dir=combinedir) - thisfile = (findfile(corrfile+'*'))[0] - if (NOT keyword_set(thisfile)) then $ - message,' Could not find flux-corr file ' + corrfile - - aterm = mrdfits(thisfile, 0, corrhdr, /silent) - bterm = mrdfits(thisfile, 1) - ; Only apply the fcorr vector to objects with med_SN>3 - tempsn = median(tempflux*sqrt(tempivar),dim=1) - ind_notapply = where(tempsn lt 1.) - if ind_notapply[0] ne -1 then aterm[*, ind_notapply] = 1. - - invertcorr = 1. / aterm - minval = 0.05 / mean(aterm) - nrownative=(size(tempflux,/dimens))[0] - divideflat, tempflux, invvar=tempivar, invertcorr[0:nrownative-1,*], minval=minval - tempflux = tempflux + bterm - divideflat, tempsky, invertcorr[0:nrownative-1,*], minval=minval - temppixmask = temppixmask $ - OR (invertcorr LE minval) * pixelmask_bits('BADFLUXFACTOR') - - endif - - ;---------- - ; Apodize the errors - ; Do this only for the dichroic overlap region, which are the first - ; rows in both the blue and red CCD's. - - if (keyword_set(window)) then begin - swin = window < npix - indx = lindgen(swin) - tempivar[indx,*] = $ - tempivar[indx,*] * (indx # replicate(1,nfib)) / swin - endif - - ;---------- - ; Concatenate data from all images - - if (ifile EQ 0) then begin - ; Construct the image arrays - flux = make_array(npixmax,nobj*nfiles,type=size(tempflux,/type)) - fluxivar = make_array(npixmax,nobj*nfiles,type=size(tempivar,/type)) - wave = make_array(npixmax,nobj*nfiles,type=size(tempwave,/type)) - dispersion = make_array(npixmax,nobj*nfiles,type=size(tempdisp,/type)) - resolution = make_array(npixmax,nobj*nfiles,type=size(tempresl,/type)) - pixelmask = make_array(npixmax,nobj*nfiles,type=size(temppixmask,/type)) - skyflux = make_array(npixmax,nobj*nfiles,type=size(tempsky,/type)) - ximg = make_array(npixmax,nobj*nfiles,type=size(tempximg,/type)) - superflat = make_array(npixmax,nobj*nfiles,type=size(tempsuperflat,/type)) - - ; Append as vectors... - camerasvec = cameras - label = makelabel(hdr) - filenum = lonarr(nfib) + ifile - plugmap = tempplug - for it = 0, n_elements(tempplug.fiberid)-1 do begin - if it eq 0 then begin - expnumvec1 = expnum - endif else begin - expnumvec1 = [expnumvec1, expnum] - endelse - endfor - expnumvec = expnumvec1 - endif else begin - ; Append as vectors... - camerasvec = [camerasvec, cameras] - label = [label, makelabel(hdr)] - filenum = [filenum, lonarr(nfib) + ifile] - plugmap = [plugmap, tempplug] - for it = 0, n_elements(tempplug.fiberid)-1 do begin - if it eq 0 then begin - expnumvec1 = expnum - endif else begin - expnumvec1 = [expnumvec1, expnum] - endelse - endfor - expnumvec = [expnumvec, expnumvec1] - endelse - - flux[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempflux - fluxivar[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempivar - wave[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempwave - ; Pad the wavelengths with reasonable values - if (npixarr[ifile] LT npixmax) then begin - dwave = tempwave[npixarr[ifile]-1,*] - tempwave[npixarr[ifile]-2,*] - addwave = tempwave[npixarr[ifile]-1,*] $ - ## (1+lonarr(npixmax-npixarr[ifile])) $ - + dwave ## (1+lindgen(npixmax-npixarr[ifile])) - wave[npixarr[ifile]:npixmax-1,nobj*ifile:nobj*(ifile+1)-1] = addwave - endif - dispersion[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempdispersion - resolution[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempresolution - pixelmask[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = temppixmask - skyflux[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempsky - ximg[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempximg - superflat[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempsuperflat - - splog, prename='' - endfor - pixelmask_rm=pixelmask - expnumf=expnumvec[uniq(expnumvec, sort(expnumvec))] - - ;---------- - ; Scale the blue and red flux to the same flux level - ; note that the filenames are sorted as b1[nexp],r1[nexp] - if keyword_set(legacy) then begin - nexp_tmp = nfiles/4 - for iexp=0, nexp_tmp - 1 do begin - for iobj=0L,499L do begin - ; for b1 and r1 - ifile = iexp - waveb = wave[0:npixarr[ifile]-1,nobj*ifile+iobj] - fluxb = flux[0:npixarr[ifile]-1,nobj*ifile+iobj] - ivarb = fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] - ifile = iexp + nexp_tmp*2 - waver = wave[0:npixarr[ifile]-1,nobj*ifile+iobj] - fluxr = flux[0:npixarr[ifile]-1,nobj*ifile+iobj] - ivarr = fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] - rm_fluxscale_ccd,waveb,fluxb,ivarb,waver,fluxr,ivarr,/red - ifile = iexp - flux[0:npixarr[ifile]-1,nobj*ifile+iobj] = fluxb - fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] = ivarb - ifile = iexp + nexp_tmp*2 - flux[0:npixarr[ifile]-1,nobj*ifile+iobj] = fluxr - fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] = ivarr - ; for b2 and r2 - ifile = iexp + nexp_tmp*1 - waveb = wave[0:npixarr[ifile]-1,nobj*ifile+iobj] - fluxb = flux[0:npixarr[ifile]-1,nobj*ifile+iobj] - ivarb = fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] - ifile = iexp + nexp_tmp*3 - waver = wave[0:npixarr[ifile]-1,nobj*ifile+iobj] - fluxr = flux[0:npixarr[ifile]-1,nobj*ifile+iobj] - ivarr = fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] - rm_fluxscale_ccd,waveb,fluxb,ivarb,waver,fluxr,ivarr,/red - ifile = iexp + nexp_tmp*1 - flux[0:npixarr[ifile]-1,nobj*ifile+iobj] = fluxb - fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] = ivarb - ifile = iexp + nexp_tmp*3 - flux[0:npixarr[ifile]-1,nobj*ifile+iobj] = fluxr - fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] = ivarr - endfor - endfor - endif else begin - nexp_tmp = nfiles/2 - for iexp=0, nexp_tmp - 1 do begin - for iobj=0L,499L do begin - ; for b1 and r1 - ifile = iexp - waveb = wave[0:npixarr[ifile]-1,nobj*ifile+iobj] - fluxb = flux[0:npixarr[ifile]-1,nobj*ifile+iobj] - ivarb = fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] - ifile = iexp + nexp_tmp - waver = wave[0:npixarr[ifile]-1,nobj*ifile+iobj] - fluxr = flux[0:npixarr[ifile]-1,nobj*ifile+iobj] - ivarr = fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] - rm_fluxscale_ccd,waveb,fluxb,ivarb,waver,fluxr,ivarr,/red - ifile = iexp - flux[0:npixarr[ifile]-1,nobj*ifile+iobj] = fluxb - fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] = ivarb - ifile = iexp + nexp_tmp;*4 - flux[0:npixarr[ifile]-1,nobj*ifile+iobj] = fluxr - fluxivar[0:npixarr[ifile]-1,nobj*ifile+iobj] = ivarr - endfor - endfor - endelse - ;----------- - - tempflux = 0 - tempivar = 0 - tempwave = 0 - tempdispersion = 0 - tempresolution = 0 - temppixmask = 0 - tempsky = 0 - - ;---------- - ; Check how many exposures we have in each of the (4) cameras - - for icam=0, ncam-1 do begin - junk = where(camerasvec EQ camnames[icam], nmatch) - splog, 'Files for camera ' + camnames[icam] + ':', nmatch - if (icam EQ 0) then nminfile = nmatch $ - else nminfile = nminfile < nmatch - endfor -; ??? Should make this routine robust to fewer files!!! - if (nminfile LT 1) then begin - splog, 'ABORT: At least 1 file needed for each camera' - return - endif - - ;--------------------------------------------------------------------------- - ; Construct output data structures, including the wavelength scale - ;--------------------------------------------------------------------------- - - totalpix = (size(flux, /dimens))[0] - - nonzero = where(fluxivar GT 0.0) - minfullwave = min(wave[nonzero]) - maxfullwave = max(wave[nonzero]) - - ; Get max and min wavelength from good pixels - - if (NOT keyword_set(wavemin)) then begin - spotmin = long((minfullwave - zeropoint)/binsz) + 1L - spotmax = long((maxfullwave - zeropoint)/binsz) - wavemin = spotmin * binsz + zeropoint - wavemax = spotmax * binsz + zeropoint - endif else begin - spotmin = 0L - if (NOT keyword_set(wavemax)) then begin - spotmax = long((maxfullwave - wavemin)/binsz) - wavemax = spotmax * binsz + wavemin - endif else spotmax = long((wavemax - wavemin)/binsz) - endelse - - nfinalpix = spotmax - spotmin + 1L - finalwave = dindgen(nfinalpix) * binsz + wavemin - - nfiber = max(plugmap.fiberid) - - finalflux_rm = fltarr(nfinalpix, nfiber, nexp_tmp) - finalivar_rm = fltarr(nfinalpix, nfiber, nexp_tmp) - finalandmask_rm = lonarr(nfinalpix, nfiber, nexp_tmp) - finalormask_rm = lonarr(nfinalpix, nfiber, nexp_tmp) - finaldispersion_rm = fltarr(nfinalpix, nfiber, nexp_tmp) - finalresolution_rm = fltarr(nfinalpix, nfiber, nexp_tmp) - finalsky_rm = fltarr(nfinalpix, nfiber, nexp_tmp) - finalplugmap_rm = replicate(plugmap[0], nfiber, nexp_tmp) - finalra_rm = fltarr(nfiber, nexp_tmp) - finaldec_rm = fltarr(nfiber, nexp_tmp) - fiberid_rm = lonarr(nfiber,nexp_tmp) - firstcarton_rm=strarr(nfiber, nexp_tmp) - carton2TarPK_rm=LON64ARR(nfiber, nexp_tmp) - Assigned_rm=lonarr(nfiber, nexp_tmp) - on_target_rm=lonarr(nfiber, nexp_tmp) - valid_rm=lonarr(nfiber, nexp_tmp) - xfocal_rm=fltarr(nfiber,nexp_tmp) - yfocal_rm=fltarr(nfiber,nexp_tmp) - - mjds_rm = lonarr(nfiber, nexp_tmp) - config_rm = lonarr(nfiber, nexp_tmp) - tai_rm = fltarr(nfiber, nexp_tmp) - moon_target_rm=strarr(nfiber, nexp_tmp) - moon_phasef_rm=strarr(nfiber, nexp_tmp) - snr2listG=strarr(nfiber, nexp_tmp) - snr2listR=strarr(nfiber, nexp_tmp) - snr2listI=strarr(nfiber, nexp_tmp) - configs=strarr(nfiber, nexp_tmp) - mjdlist_fib=strarr(nfiber, nexp_tmp) - designs=strarr(nfiber, nexp_tmp) - airmass_rm=strarr(nfiber, nexp_tmp) - seeing20_rm=strarr(nfiber, nexp_tmp) - seeing50_rm=strarr(nfiber, nexp_tmp) - seeing80_rm=strarr(nfiber, nexp_tmp) - weights_rm=strarr(nfiber, nexp_tmp) - ;---------- - ; Issue a warning about any object fibers with OBJTYPE = 'NA', which - ; should be impossible, but the special plate 673 and possibly others - ; had some such fibers. - - ibad = where(strtrim(plugmap.objtype,2) EQ 'NA', nbad) - if (nbad GT 0) then $ - splog, 'WARNING: ', nbad, ' fibers have OBJTYPE=NA in the plug-map' - - ;--------------------------------------------------------------------------- - ; Combine each fiber, one at a time - ;--------------------------------------------------------------------------- - for ifiber=0, nfiber-1 do begin - for iexp=0, nexp_tmp - 1 do begin - ; Find the first occurance of fiber number IFIBER+1 - indx = (where((plugmap.fiberid EQ ifiber+1) $ - AND (expnumvec EQ expnumf[iexp])));[0] - if (indx[0] NE -1) then begin - splog, 'Coadd red & blue exposure ',expnumf[iexp] - splog, 'Fiber', ifiber+1, ' ', plugmap[indx[0]].objtype, $ - plugmap[indx[0]].mag, format = '(a, i5.4, a, a, f6.2, 5f6.2)' - finalplugmap_rm[ifiber,iexp] = plugmap[indx[0]] - endif - if (indx[0] NE -1) then begin - - temppixmask = pixelmask_rm[*,indx] - combine1fiber, wave[*,indx], flux[*,indx], fluxivar[*,indx], $ - finalmask=temppixmask, indisp=dispersion[*,indx], $ - skyflux=skyflux[*,indx], $ - newloglam=finalwave, newflux=bestflux, newivar=bestivar, $ - andmask=bestandmask, ormask=bestormask, newdisp=bestdispersion, $ - newsky=bestsky, inresl=resolution[*,indx], newresl=bestresolution, $ - nord=nord, binsz=binsz, bkptbin=bkptbin, maxsep=maxsep, $ - maxiter=50, upper=3.0, lower=3.0, maxrej=1 - finalflux_rm[*,ifiber,iexp] = bestflux - finalivar_rm[*,ifiber,iexp] = bestivar - finalandmask_rm[*,ifiber,iexp] = bestandmask - finalormask_rm[*,ifiber,iexp] = bestormask - finaldispersion_rm[*,ifiber,iexp] = bestdispersion - finalresolution_rm[*,ifiber,iexp] = bestresolution - finalsky_rm[*,ifiber,iexp] = bestsky - ; The following adds the COMBINEREJ bit to the input pixel masks - pixelmask_rm[*,indx] = temppixmask - ratemp=plugmap[indx].ra - finalra_rm[ifiber,iexp]=ratemp[0] - dectemp=plugmap[indx].dec - finaldec_rm[ifiber,iexp]=dectemp[0] - mjds_rm[ifiber,iexp]=rm_plugmap[iexp].mjd - fiberid_rm[ifiber, iexp] = plugmap[indx[0]].fiberid - firstcarton_rm[ifiber, iexp] = plugmap[indx[0]].firstcarton - carton2TarPK_rm[ifiber, iexp] = plugmap[indx[0]].carton_to_target_pk - Assigned_rm[ifiber, iexp] = plugmap[indx[0]].assigned - on_target_rm[ifiber, iexp] = plugmap[indx[0]].on_target - valid_rm[ifiber, iexp] = plugmap[indx[0]].valid - xfocal_rm[ifiber, iexp] = plugmap[indx[0]].xfocal - yfocal_rm[ifiber, iexp] = plugmap[indx[0]].yfocal - tai_rm[ifiber,iexp]=rm_plugmap[iexp].tai+double(rm_plugmap[iexp].exptime/2.0) - ; use expuse number instad of configuration number for legacy - config_rm[ifiber,iexp]=rm_plugmap[iexp].configuration - endif else begin - splog, 'Fiber', ifiber+1, ' NO DATA' - finalandmask_rm[*,ifiber,iexp] = pixelmask_bits('NODATA') - finalormask_rm[*,ifiber,iexp] = pixelmask_bits('NODATA') - endelse - endfor - endfor - - - if keyword_set(radec_coadd) then begin - if (not keyword_set(legacy)) and (not keyword_set(plates)) then $ - splog, 'WARNING: Coadds May include mix of valid/on_target flags' - ;Set a list of targets from its coordinates, this block code considers - ;the posibility to observe the same target at a diferent fiber in a - ;diferent FPS configuartion - brake=0 - indx0=0 - ra_rm=plugmap.ra - dec_rm=plugmap.dec - ra_tp=ra_rm - dec_tp=dec_rm - while brake eq 0 do begin - indx1=where((ra_rm eq ra_tp[0]) and (dec_rm eq dec_tp[0])) - indx1=indx1[0] - nt1=where(abs(ra_rm - ra_rm[indx1])*3600 LE 0.5 $ - AND abs(dec_rm - dec_rm[indx1])*3600 LE 0.5) - nt2=where(abs(ra_tp - ra_tp[0])*3600 LE 0.5 $ - AND abs(dec_tp - dec_tp[0])*3600 LE 0.5) - if (nt1[0] NE -1) then begin - if indx0 eq 0 then begin - ;indx_tar.add,nt1 - indx_tar=[nt1] - endif else begin - indx_tar=[indx_tar,'-10',nt1] - endelse - if n_elements(ra_tp) gt n_elements(nt2) then begin - remove,nt2,ra_tp,dec_tp - indx1=where((ra_rm eq ra_tp[0]) and (dec_rm eq dec_tp[0])) - indx1=indx1[0] - endif else begin - brake=1 - endelse - indx0+=1 - endif - endwhile - endif else begin - ;Set a list of targets from its catalogid, this block code considers - ;the posibility to observe the same target at a diferent fiber in a - ;diferent FPS configuartion, but will have the same catalogid - ;(within a catalog cross match - TODO: coadd across catalog cross matchs) - - catid_rm = plugmap.catalogid - catid_rm = catid_rm[UNIQ(catid_rm, SORT(catid_rm))] - undefine, indx_tar - foreach catid, catid_rm do begin - if keyword_set(plates) then begin - indx1=where(plugmap.catalogid eq catid, ct) - endif else begin - ; indx1=where((plugmap.catalogid eq catid), ct) ; old code not including flags - indx1=where((plugmap.catalogid eq catid) AND (plugmap.Assigned eq 1) $ - AND (plugmap.valid eq 1) AND (plugmap.On_target eq 1), ct) - ; below is primarily to produce outputs of "unplugged" targets - ; so we can include extra skys fibers for outputs - if ct eq 0 then indx1 = where((plugmap.catalogid eq catid), ct) - endelse - if ct ne 0 then begin - if not keyword_set(indx_tar) then indx_tar=[indx1] $ - else indx_tar=[indx_tar,'-10',indx1] - endif - endforeach - endelse - - indx_tar=['-10',indx_tar,'-10'] - nt=where(indx_tar eq -10,ntarget) - ntarget=ntarget-1 - finalflux = fltarr(nfinalpix, ntarget) - finalivar = fltarr(nfinalpix, ntarget) - finalandmask = lonarr(nfinalpix, ntarget) - finalormask = lonarr(nfinalpix, ntarget) - finaldispersion = fltarr(nfinalpix, ntarget) - finalresolution = fltarr(nfinalpix, ntarget) - finalsky = fltarr(nfinalpix, ntarget) - finalplugmap = replicate(plugmap[0], ntarget) - mjds = lonarr(ntarget) - final_ra = dblarr(ntarget) - final_dec = dblarr(ntarget) - indx_target=intarr(ntarget) - nexp_target=intarr(ntarget) - mjdsfinal = dblarr(ntarget) - exp_disp_med = dblarr(ntarget) - weight = dblarr(nexp_tmp) - snr2G_target = strarr(ntarget) - snr2R_target = strarr(ntarget) - snr2I_target = strarr(ntarget) - - mjdlist_target = strarr(ntarget) - designs_target = strarr(ntarget) - configs_target = strarr(ntarget) - - moon_target = strarr(ntarget) - moon_phasef = strarr(ntarget) - airmass_target = strarr(ntarget) - seeing20_target = strarr(ntarget) - seeing50_target = strarr(ntarget) - seeing80_target = strarr(ntarget) - tai_target = strarr(ntarget) - fiber_target = strarr(ntarget) - Firstcarton_target = strarr(ntarget) - carton2TarPK_target = strarr(ntarget) - Assigned_target = strarr(ntarget) - on_target_target = strarr(ntarget) - valid_target = strarr(ntarget) - xfocal_target = strarr(ntarget) - yfocal_target = strarr(ntarget) - - weights_target = dblarr(ntarget, nexp_tmp) - - fiber_target_s=replicate(create_struct('FIBERID_LIST',' '),ntarget) - FIRSTCARTON_target_s=replicate(create_struct('FIRSTCARTON_LIST',' '),ntarget) - cartoon2TarPK_target_s=replicate(create_struct('CARTON_TO_TARGET_PK_LIST',' '),ntarget) - Assigned_target_s=replicate(create_struct('ASSIGNED_LIST',' '),ntarget) - on_target_target_s=replicate(create_struct('ON_TARGET_LIST',' '),ntarget) - valid_target_s=replicate(create_struct('VALID_LIST',' '),ntarget) - exp_disp_med_s=replicate(create_struct('EXP_DISP_MED',0.D),ntarget) - xfocal_target_s=replicate(create_struct('XFOCAL_LIST',' '),ntarget) - yfocal_target_s=replicate(create_struct('YFOCAL_LIST',' '),ntarget) - indx_target_s=replicate(create_struct('target_index',0),ntarget) - nexp_target_s=replicate(create_struct('nexp',0),ntarget) - mjdf_target_s=replicate(create_struct('MJD_FINAL',0.D),ntarget) - moon_target_s=replicate(create_struct('MOON_DIST',' '),ntarget) - moon_phasef_s=replicate(create_struct('MOON_PHASE',' '),ntarget) - airmass_s=replicate(create_struct('AIRMASS',0.D, 'AIRMASS_LIST',' '),ntarget) - seeing20_s=replicate(create_struct('SEEING20',0.D,'SEEING20_LIST',' '),ntarget) - seeing50_s=replicate(create_struct('SEEING50',0.D,'SEEING50_LIST',' '),ntarget) - seeing80_s=replicate(create_struct('SEEING80',0.D,'SEEING80_LIST',' '),ntarget) - tai_target_s=replicate(create_struct('TAI_LIST',' '),ntarget) - snr2G_target_s=replicate(create_struct('FIELDSNR2G_LIST',' '),ntarget) - snr2R_target_s=replicate(create_struct('FIELDSNR2R_LIST',' '),ntarget) - snr2I_target_s=replicate(create_struct('FIELDSNR2I_LIST',' '),ntarget) - mjdlist_target_s=replicate(create_struct('MJDLIST',' '),ntarget) - designs_target_s=replicate(create_struct('DESIGNS',' '),ntarget) - configs_target_s=replicate(create_struct('CONFIGS',' '),ntarget) - struct_assign, {fiberid: 0L}, finalplugmap ; Zero out all elements in this - ; FINALPLUGMAP structure. - for itarget=0, ntarget-1 do begin - indx=indx_tar[nt[itarget]+1:nt[itarget+1]-1] - if (indx[0] NE -1) then begin - if keyword_set(radec_coadd) then $ - splog, 'Coadd all the exposures with the same coordinates ('+strtrim(itarget,2)+'/'+strtrim(ntarget,2)+')' $ - else splog, 'Coadd all the exposures with the same CatalogID ('+strtrim(itarget,2)+'/'+strtrim(ntarget,2)+')' - splog, 'Target', itarget+1, ' ', plugmap[indx[0]].objtype, $ - plugmap[indx[0]].mag, format = '(a, i5.4, a, a, f6.2, 5f6.2)' - finalplugmap[itarget] = plugmap[indx[0]] - mjds[itarget]=mjds_rm[indx[0]] - final_ra[itarget]=plugmap[indx[0]].ra - final_dec[itarget]=plugmap[indx[0]].dec - - endif - if (indx[0] NE -1) then begin - temppixmask = pixelmask[*,indx] - if keyword_set(no_spline) then begin - combine1fiber, wave[*,indx], flux[*,indx], fluxivar[*,indx], $ - finalmask=temppixmask, indisp=dispersion[*,indx], $ - skyflux=skyflux[*,indx], $ - newloglam=finalwave, newflux=bestflux, newivar=bestivar, $ - andmask=bestandmask, ormask=bestormask, newdisp=bestdispersion, $ - newsky=bestsky, inresl=resolution[*,indx], newresl=bestresolution, $ - nord=nord, binsz=binsz, bkptbin=bkptbin, maxsep=maxsep, $ - maxiter=0, upper=1e5, lower=1e5, maxrej=1 - endif else begin - combine1fiber, wave[*,indx], flux[*,indx], fluxivar[*,indx], $ - finalmask=temppixmask, indisp=dispersion[*,indx], $ - skyflux=skyflux[*,indx], $ - newloglam=finalwave, newflux=bestflux, newivar=bestivar, $ - andmask=bestandmask, ormask=bestormask, newdisp=bestdispersion, $ - newsky=bestsky, inresl=resolution[*,indx], newresl=bestresolution, $ - nord=nord, binsz=binsz, bkptbin=bkptbin, maxsep=maxsep, $ - maxiter=50, upper=3.0, lower=3.0, maxrej=1 - endelse - finalflux[*,itarget] = bestflux - finalivar[*,itarget] = bestivar - finalandmask[*,itarget] = bestandmask - finalormask[*,itarget] = bestormask - finaldispersion[*,itarget] = bestdispersion - finalresolution[*,itarget] = bestresolution - finalsky[*,itarget] = bestsky - - masked_flux=flux - rbpivot = 2330 ; lam=6100A - masked_flux[rbpivot:*,0:nexp_tmp-2]= !values.f_nan - masked_flux[0:rbpivot-1,nexp_tmp-1:*]= !values.f_nan - - ; only calculate and report median exposure dispersion if valid target - if (not keyword_set(legacy)) and (not keyword_set(plates)) then begin - test=where((plugmap[indx].Assigned eq 1) $ - AND (plugmap[indx].valid eq 1) $ - AND (plugmap[indx].On_target eq 1), ctv) - endif else ctv=1 - - if ctv ne 0 then begin - exp_disp_med[itarget] = median(STDDEV(masked_flux[*,indx],$ - DIMENSION=2,/double,/NAN)/bestflux,$ - /EVEN,/double) - endif else exp_disp_med[itarget]= -1.d - - ; The following adds the COMBINEREJ bit to the input pixel masks - pixelmask[*,indx] = temppixmask - indx_target[itarget]=itarget+1 - nexp_target[itarget]=n_elements(indx)/2 - endif else begin - splog, 'Target', itarget+1, ' NO DATA' - finalandmask[*,itarget] = pixelmask_bits('NODATA') - finalormask[*,itarget] = pixelmask_bits('NODATA') - indx_target[itarget]=itarget - nexp_target[itarget]=0 - endelse - endfor - indx_target_s.target_index=indx_target - nexp_target_s.nexp=nexp_target - finalplugmap=struct_addtags(finalplugmap,indx_target_s) - finalplugmap=struct_addtags(finalplugmap,nexp_target_s) - ;---------- - ; Modify the 1st file's header to use for the combined plate header. - - bighdr = *hdrarr[0] - - ;--------------------------------------------------------------------------- - ; FLUX DISTORTION IMAGE - ;--------------------------------------------------------------------------- - - ; Compute the flux distortion image - tai_flag=0 - if not keyword_set(nodist) then begin - mjd_t=0.0 - snr_t=0.0 - invcorrimg_rm = fltarr(nfinalpix, nfiber, nexp_tmp) - minicorrval_rm = fltarr(nexp_tmp) - splog, 'Compute the flux distortion image for each exposure' - for iexp=0, nexp_tmp - 1 do begin - splog, 'EXPOSURE number ', expnumf[iexp] - corrimg = flux_distortion(finalflux_rm[*,*,iexp], finalivar_rm[*,*,iexp], $ - finalandmask_rm[*,*,iexp], finalormask_rm[*,*,iexp], $ - plugmap=finalplugmap_rm[*,iexp], loglam=finalwave, plotfile=distortpsfile, hdr=bighdr, $ - legacy=legacy) - igood = where(finalivar_rm[*,*,iexp] GT 0) - thismin = min(corrimg[igood], max=thismax) - cratio = thismin / thismax - if (cratio LT 1./100) then begin - splog, 'WARNING: Flux distortion image dynamic range = ', 1./cratio, $ - ' (DISABLE)' - corrimg[*] = 1. - endif else begin - splog, 'Flux distortion image dynamic range = ', 1./cratio - endelse - ; Plot S/N and throughput **before** this distortion-correction. - splog, prelog='Initial' - platesn, finalflux_rm[*,*,iexp], finalivar_rm[*,*,iexp], $ - finalandmask_rm[*,*,iexp], finalplugmap_rm[*,iexp], finalwave, $ - hdr=bighdr, legacy=legacy, plotfile=djs_filepath(repstr(plotsnfile+'.orig','X',string(iexp,format='(i2.2)')), root_dir=combinedir) - splog, prelog='' - ; Apply this flux-distortion to the final, co-added fluxes. - invcorrimg = 1. / corrimg - minicorrval = 0.05 / mean(corrimg) - invcorrimg_rm[*,*,iexp]=invcorrimg - minicorrval_rm[iexp]=minicorrval - final_flux=finalflux_rm[*,*,iexp] - final_ivar=finalivar_rm[*,*,iexp] - final_sky=finalsky_rm[*,*,iexp] - finaland_mask=finalandmask_rm[*,*,iexp] - finalor_mask=finalormask_rm[*,*,iexp] - divideflat, final_flux, invvar=final_ivar, invcorrimg, minval=minicorrval - divideflat, final_sky, invcorrimg, minval=minicorrval - finalandmask_t = finaland_mask $ - OR (invcorrimg LE minicorrval) * pixelmask_bits('BADFLUXFACTOR') - finalormask_t = finalor_mask $ - OR (invcorrimg LE minicorrval) * pixelmask_bits('BADFLUXFACTOR') - ; Plot S/N and throughput **after** this distortion-correction. - ; (This over-writes header cards written in the first call.) - splog, prelog='Final' - finalflux_rm[*,*,iexp]=final_flux - finalivar_rm[*,*,iexp]=final_ivar - finalsky_rm[*,*,iexp]=final_sky - finalandmask_rm[*,*,iexp]=finaland_mask - finalormask_rm[*,*,iexp]=finalor_mask - platesn, finalflux_rm[*,*,iexp], finalivar_rm[*,*,iexp], $ - finalandmask_rm[*,*,iexp], finalplugmap_rm[*,iexp], finalwave, $ - hdr=bighdr, legacy=legacy, plotfile=djs_filepath(repstr(plotsnfile,'X',string(iexp,format='(i2.2)')), root_dir=combinedir), $ - coeffs=coeffs, snplate=snplate, specsnlimit=specsnlimit - splog, prelog='' - bands = ['G','R','I'] - if keyword_set(legacy) then sp_n=2 else sp_n=1 - for ispec=1, sp_n do begin - for bb=0, n_elements(bands)-1 do begin - key1 = 'SNC0'+ strtrim(ispec,2)+strupcase(bands[bb])+string(iexp,format='(i2.2)') - comment = string(format='(a,i2,a,i2.2,a)', $ - ' SN fit coeff for spec', ispec, ', exp ', iexp ,' at '+strupcase(bands[bb])+'-band') - sxaddpar, bighdr, key1, coeffs[bb,(ispec-1)*2], comment, before='LOWREJ' - key1 = 'SNC1'+strtrim(ispec,2)+strupcase(bands[bb])+string(iexp,format='(i2.2)') - comment = string(format='(a,i2,a,i2.2,a)', $ - ' SN fit coeff for spec', ispec, ', exp ', iexp ,' at '+strupcase(bands[bb])+'-band') - sxaddpar, bighdr, key1, coeffs[bb,(ispec-1)*2+1], $ - comment, before='LOWREJ' - key1 = 'SN2_'+strtrim(ispec,2)+strupcase(bands[bb])+string(iexp,format='(i2.2)') - comment = string(format='(a,i2,a,i2.2,a,f5.2,a)', $ - ' (S/N)^2 for spec ', ispec, ', exp ', iexp ,' at mag ', specsnlimit[bb].snmag,' at '+strupcase(bands[bb])+'-band' ) - sxaddpar, bighdr, key1, snplate[ispec-1,bb], comment, before='LOWREJ' - endfor - endfor - snr_t=snplate[0,2]+snr_t;use SNR2 in i-band - tai_t=rm_plugmap[iexp].tai+rm_plugmap[iexp].exptime/2.0 - mjd_t=tai_t/(24.D*3600.D)*snplate[0,2]+mjd_t - jdtemp=tai_t/(24.D*3600.D) - jdtemp=jdtemp+2400000.5 - mphase,jdtemp,mfrac - moonpos,jdtemp,ra_moon,dec_moon - ra_t=finalplugmap_rm[*,iexp].ra - dec_t=finalplugmap_rm[*,iexp].dec - for ifib=0, nfiber-1 do begin - moon_dist = djs_diff_angle(ra_moon, dec_moon, ra_t[ifib], dec_t[ifib]) - moon_target_rm[ifib,iexp]=strtrim(strcompress(string(moon_dist,format='(999a)')),2) - moon_phasef_rm[ifib,iexp]=strtrim(strcompress(string(mfrac,format='(999a)')),2) - airmass_rm[ifib,iexp]=strtrim(strcompress(string(rm_plugmap[iexp].airmass,format='(999a)')),2) - seeing20_rm[ifib,iexp]=strtrim(strcompress(string(rm_plugmap[iexp].SEEING20,format='(999a)')),2) - seeing50_rm[ifib,iexp]=strtrim(strcompress(string(rm_plugmap[iexp].SEEING50,format='(999a)')),2) - seeing80_rm[ifib,iexp]=strtrim(strcompress(string(rm_plugmap[iexp].SEEING80,format='(999a)')),2) - snr2listG[ifib,iexp]=strtrim(strcompress(string(snplate[0,0],format='(999a)')),2) - snr2listR[ifib,iexp]=strtrim(strcompress(string(snplate[0,1],format='(999a)')),2) - snr2listI[ifib,iexp]=strtrim(strcompress(string(snplate[0,2],format='(999a)')),2) - mjdlist_fib[ifib,iexp]=strtrim(strcompress(string(string(rm_plugmap[iexp].mjd,format='(i5)'),format='(999a)')),2) - configs[ifib,iexp]=strtrim(strcompress(string(rm_plugmap[iexp].configuration,format='(999a)')),2) - designs[ifib,iexp]=strtrim(strcompress(string(rm_plugmap[iexp].DESIGN,format='(999a)')),2) - weights_rm[ifib,iexp] =strtrim(strcompress(string(snplate[0,2],format='(999a)')),2) - endfor - ;print,mjd_t - if (NOT keyword_set(tailist)) then tailist = tai_t $ - else tailist = [tailist, tai_t] - - tai_flag=1 - weight[iexp]=snplate[0,2] - endfor - - for itarget=0, ntarget-1 do begin - indx=indx_tar[nt[itarget]+1:nt[itarget+1]-1] - if (indx[0] NE -1) then begin - moon_target[itarget]=moon_target_rm[indx[0]] - moon_phasef[itarget]=moon_phasef_rm[indx[0]] - fiber_target[itarget]=strtrim(strcompress(string(fiberid_rm[indx[0]],format='(999a)')),2) - Firstcarton_target[itarget]=strtrim(strcompress(string(firstcarton_rm[indx[0]],format='(999a)')),2) - carton2TarPK_target[itarget]=strtrim(strcompress(string(carton2TarPK_rm[indx[0]],format='(999a)')),2) - Assigned_target[itarget]=strtrim(strcompress(string(Assigned_rm[indx[0]],format='(999a)')),2) - on_target_target[itarget]=strtrim(strcompress(string(string(on_target_rm[indx[0]],format='(i15)'),format='(999a)')),2) - valid_target[itarget]=strtrim(strcompress(string(valid_rm[indx[0]],format='(999a)')),2) - xfocal_target[itarget]=strtrim(strcompress(string(xfocal_rm[indx[0]],format='(999a)')),2) - yfocal_target[itarget]=strtrim(strcompress(string(yfocal_rm[indx[0]],format='(999a)')),2) - tai_target[itarget]=strtrim(strcompress(string(string(tai_rm[indx[0]],format='(i15)'),format='(999a)')),2) - snr2G_target[itarget]=snr2listG[indx[0]];strtrim(strcompress(string(snr2listG[0],format='(999a)')),2) - snr2R_target[itarget]=snr2listR[indx[0]];strtrim(strcompress(string(snr2listR[0],format='(999a)')),2) - snr2I_target[itarget]=snr2listI[indx[0]];strtrim(strcompress(string(snr2listI[0],format='(999a)')),2) - mjdlist_target[itarget]=mjdlist_fib[indx[0]] - designs_target[itarget]=designs[indx[0]] - configs_target[itarget]=configs[indx[0]] - airmass_target[itarget]=airmass_rm[indx[0]] - seeing20_target[itarget]=seeing20_rm[indx[0]] - seeing50_target[itarget]=seeing50_rm[indx[0]] - seeing80_target[itarget]=seeing80_rm[indx[0]] - weights_target[itarget]=weights_rm[indx[0]] - if n_elements(indx) gt 1 then begin - for iexp=1, n_elements(indx)/2-1 do begin - moon_target[itarget]=moon_target[itarget]+' '+moon_target_rm[indx[iexp]] - moon_phasef[itarget]=moon_phasef[itarget]+' '+moon_phasef_rm[indx[iexp]] - fiber_target[itarget]=fiber_target[itarget]+' '+strtrim(strcompress(string(fiberid_rm[indx[iexp]],format='(999a)')),2) - Firstcarton_target[itarget]=Firstcarton_target[itarget]+' '+strtrim(strcompress(string(firstcarton_rm[indx[iexp]],format='(999a)')),2) - carton2TarPK_target[itarget]=carton2TarPK_target[itarget]+' '+strtrim(strcompress(string(carton2TarPK_rm[indx[iexp]],format='(999a)')),2) - Assigned_target[itarget]=Assigned_target[itarget]+' '+strtrim(strcompress(string(string(Assigned_rm[indx[iexp]], format='(i15)'),format='(999a)')),2) - on_target_target[itarget]=on_target_target[itarget]+' '+strtrim(strcompress(string(string(on_target_rm[indx[iexp]], format='(i15)'),format='(999a)')),2) - valid_target[itarget]=valid_target[itarget]+' '+strtrim(strcompress(string(string(valid_rm[indx[iexp]], format='(i15)'),format='(999a)')),2) - xfocal_target[itarget]=xfocal_target[itarget]+' '+strtrim(strcompress(string(xfocal_rm[indx[iexp]],format='(999a)')),2) - yfocal_target[itarget]=yfocal_target[itarget]+' '+strtrim(strcompress(string(yfocal_rm[indx[iexp]],format='(999a)')),2) - tai_target[itarget]=tai_target[itarget]+' '+strtrim(strcompress(string(string(tai_rm[indx[iexp]],format='(i15)'),format='(999a)')),2) - snr2G_target[itarget]=snr2G_target[itarget]+' '+snr2listG[indx[iexp]] - snr2R_target[itarget]=snr2R_target[itarget]+' '+snr2listR[indx[iexp]] - snr2I_target[itarget]=snr2I_target[itarget]+' '+snr2listI[indx[iexp]] - mjdlist_target[itarget]=mjdlist_target[itarget]+' '+mjdlist_fib[indx[iexp]] - designs_target[itarget]=designs_target[itarget]+' '+designs[indx[iexp]] - configs_target[itarget]=configs_target[itarget]+' '+configs[indx[iexp]] - airmass_target[itarget]=airmass_target[itarget]+' '+airmass_rm[indx[iexp]] - seeing20_target[itarget]=seeing20_target[itarget]+' '+seeing20_rm[indx[iexp]] - seeing50_target[itarget]=seeing50_target[itarget]+' '+seeing50_rm[indx[iexp]] - seeing80_target[itarget]=seeing80_target[itarget]+' '+seeing80_rm[indx[iexp]] - weights_target[itarget]=weights_rm[itarget]+' '+weights_rm[indx[iexp]] - - endfor - endif - endif - Firstcarton_target[itarget] = unique_plmap_values(Firstcarton_target[itarget]) - carton2TarPK_target[itarget] = unique_plmap_values(carton2TarPK_target[itarget]) - endfor - mjd_t=mjd_t/snr_t - mjdsfinal[*]=mjd_t - - airmass_target_f = dblarr(ntarget) - seeing20_target_f = dblarr(ntarget) - seeing50_target_f = dblarr(ntarget) - seeing80_target_f = dblarr(ntarget) - - for itar=0, ntarget-1 do begin - weights_target_f_tmp = double((strsplit(weights_target[itar], /extract))) - airmass_target_f_tmp = double((strsplit(airmass_target[itar], /extract))) - seeing20_target_f_tmp = double((strsplit(seeing20_target[itar],/extract))) - seeing50_target_f_tmp = double((strsplit(seeing50_target[itar],/extract))) - seeing80_target_f_tmp = double((strsplit(seeing80_target[itar],/extract))) - - airmass_target_f[itar] = total(airmass_target_f_tmp *weights_target_f_tmp,/DOUBLE)/total(weights_target_f_tmp,/DOUBLE) - seeing20_target_f[itar] = total(seeing20_target_f_tmp*weights_target_f_tmp,/DOUBLE)/total(weights_target_f_tmp,/DOUBLE) - seeing50_target_f[itar] = total(seeing50_target_f_tmp*weights_target_f_tmp,/DOUBLE)/total(weights_target_f_tmp,/DOUBLE) - seeing80_target_f[itar] = total(seeing80_target_f_tmp*weights_target_f_tmp,/DOUBLE)/total(weights_target_f_tmp,/DOUBLE) - endfor - - splog, 'Compute the flux distortion image for all exposures' - corrimg = flux_distortion(finalflux, finalivar, finalandmask, finalormask, $ - plugmap=finalplugmap, loglam=finalwave, plotfile=distortpsfile, hdr=bighdr, $ - legacy=legacy) - igood = where(finalivar GT 0) - thismin = min(corrimg[igood], max=thismax) - cratio = thismin / thismax - if (cratio LT 1./100) then begin - splog, 'WARNING: Flux distortion image dynamic range = ', 1./cratio, ' (DISABLE)' - corrimg[*] = 1. - endif else begin - splog, 'Flux distortion image dynamic range = ', 1./cratio - endelse - ; Plot S/N and throughput **before** this distortion-correction. - splog, prelog='Initial' - platesn, finalflux, finalivar, finalandmask, finalplugmap, finalwave, $ - hdr=bighdr, legacy=legacy, plotfile=djs_filepath(repstr(plotsnfile+'.orig','-X',''), root_dir=combinedir) - splog, prelog='' - ; Apply this flux-distortion to the final, co-added fluxes. - invcorrimg = 1. / corrimg - minicorrval = 0.05 / mean(corrimg) - divideflat, finalflux, invvar=finalivar, invcorrimg, minval=minicorrval - divideflat, bestsky, invcorrimg, minval=minicorrval - finalandmask = finalandmask $ - OR (invcorrimg LE minicorrval) * pixelmask_bits('BADFLUXFACTOR') - finalormask = finalormask $ - OR (invcorrimg LE minicorrval) * pixelmask_bits('BADFLUXFACTOR') - ; Plot S/N and throughput **after** this distortion-correction. - ; (This over-writes header cards written in the first call.) - splog, prelog='Final' - platesn, finalflux, finalivar, finalandmask, finalplugmap, finalwave, $ - hdr=bighdr, legacy=legacy, plotfile=djs_filepath(repstr(plotsnfile,'-X',''), root_dir=combinedir), coeffs=coeffs - splog, prelog='' - bands = ['G','R','I'] - if keyword_set(legacy) then sp_n=2 else sp_n=1 - for ispec=1, sp_n do begin - for bb=0, n_elements(bands)-1 do begin - key1 = 'SNC0'+ strtrim(ispec,2)+strupcase(bands[bb]) - comment = string(format='(a,i2,a)', $ - ' Total SN fit coeff for spec', ispec,' at '+strupcase(bands[bb])+'-band' ) - sxaddpar, bighdr, key1, coeffs[bb,(ispec-1)*2], comment, before='LOWREJ' - key1 = 'SNC1'+strtrim(ispec,2)+strupcase(bands[bb]) - comment = string(format='(a,i2,a)', $ - ' Total SN fit coeff for spec', ispec,' at '+strupcase(bands[bb])+'-band') - sxaddpar, bighdr, key1, coeffs[bb,(ispec-1)*2+1], $ - comment, before='LOWREJ' - endfor - endfor - - endif - mjdf_target_s.mjd_final=mjdsfinal - finalplugmap=struct_addtags(finalplugmap,mjdf_target_s) - moon_target_s.moon_dist=moon_target - finalplugmap=struct_addtags(finalplugmap,moon_target_s) - moon_phasef_s.moon_phase=moon_phasef - finalplugmap=struct_addtags(finalplugmap,moon_phasef_s) - fiber_target_s.fiberid_list=fiber_target - finalplugmap=struct_addtags(finalplugmap,fiber_target_s) - - FIRSTCARTON_target_s.FIRSTCARTON_LIST=Firstcarton_target - finalplugmap=struct_addtags(finalplugmap,FIRSTCARTON_target_s) - cartoon2TarPK_target_s.CARTON_TO_TARGET_PK_LIST=carton2TarPK_target - finalplugmap=struct_addtags(finalplugmap,cartoon2TarPK_target_s) - Assigned_target_s.ASSIGNED_LIST=Assigned_target - finalplugmap=struct_addtags(finalplugmap,Assigned_target_s) - on_target_target_s.ON_TARGET_LIST=on_target_target - finalplugmap=struct_addtags(finalplugmap,on_target_target_s) - valid_target_s.VALID_LIST=on_target_target - finalplugmap=struct_addtags(finalplugmap,valid_target_s) - exp_disp_med_s.EXP_DISP_MED=exp_disp_med - finalplugmap=struct_addtags(finalplugmap,exp_disp_med_s) - xfocal_target_s.XFOCAL_LIST=xfocal_target - finalplugmap=struct_addtags(finalplugmap,xfocal_target_s) - yfocal_target_s.YFOCAL_LIST=yfocal_target - finalplugmap=struct_addtags(finalplugmap,yfocal_target_s) - - tai_target_s.tai_list=tai_target - finalplugmap=struct_addtags(finalplugmap,tai_target_s) - snr2G_target_s.fieldsnr2g_list=snr2G_target - finalplugmap=struct_addtags(finalplugmap,snr2G_target_s) - snr2R_target_s.fieldsnr2r_list=snr2R_target - finalplugmap=struct_addtags(finalplugmap,snr2R_target_s) - snr2I_target_s.fieldsnr2i_list=snr2I_target - finalplugmap=struct_addtags(finalplugmap,snr2I_target_s) - - mjdlist_target_s.mjdlist=mjdlist_target - finalplugmap=struct_addtags(finalplugmap,mjdlist_target_s) - designs_target_s.designs=designs_target - finalplugmap=struct_addtags(finalplugmap,designs_target_s) - configs_target_s.configs=configs_target - finalplugmap=struct_addtags(finalplugmap,configs_target_s) - - help,airmass_s.AIRMASS - help,airmass_target_f - airmass_s.AIRMASS=airmass_target_f - airmass_s.AIRMASS_LIST=airmass_target - finalplugmap=struct_addtags(finalplugmap,airmass_s) - seeing20_s.SEEING20=seeing20_target_f - seeing20_s.SEEING20_LIST=seeing20_target - finalplugmap=struct_addtags(finalplugmap,seeing20_s) - seeing50_s.SEEING50=seeing50_target_f - seeing50_s.SEEING50_LIST=seeing50_target - finalplugmap=struct_addtags(finalplugmap,seeing50_s) - seeing80_s.SEEING80=seeing80_target_f - seeing80_s.SEEING80_LIST=seeing80_target - finalplugmap=struct_addtags(finalplugmap,seeing80_s) - - finalplugmap=struct_addtags(finalplugmap,replicate(create_struct('FIBER_RA',' '),ntarget)) - finalplugmap=struct_addtags(finalplugmap,replicate(create_struct('FIBER_DEC',' '),ntarget)) - finalplugmap.FIBER_RA=finalplugmap.RA - finalplugmap.FIBER_DEC=finalplugmap.DEC - ;--------------------------------------------------------------------------- - ; Write the corrected spCFrame files. - ; All the fluxes + their errors are calibrated. - ; The wavelengths + dispersions are converted from trace sets to 2D images. - ; The pixel mask has the COMBINEREJ bit set. - ;--------------------------------------------------------------------------- - - for ifile=0, nfiles-1 do begin - thisfile = fileandpath(filenames[ifile], path=thispath) - ; MODIFIED BY YUE SHEN TO WRITE THE SPCFRAME FILES IN THE SAME COMBINEDIR - ; 01-17-2014 - thispath = combinedir - - thisfile = djs_filepath(repstr(thisfile,'spFrame','spCFrame'), $ - root_dir=thispath) - splog, 'Writing file #', ifile, ': ', thisfile, prename=filenames[ifile] - indx = where(filenum EQ ifile, nthis) - - hdr = *hdrarr[ifile] - sxaddpar, hdr, 'BUNIT', '1E-17 erg/cm^2/s/Ang' - - ; Apply the flux-distortion image to each individual frame, by - ; interpolating off the full wavelength-scale distortion image - ; onto the wavelength mapping of each individual exposure+CCD. - if not keyword_set(nodist) then begin - ;print, nthis, ifile mod 4 - for i=0L, nthis-1 do begin - thisflux1 = flux[*,indx[i]] - thisivar1 = fluxivar[*,indx[i]] - thissky1 = skyflux[*,indx[i]] - j = plugmap[indx[i]].fiberid - 1 - tt=ifile mod nexp_tmp - thisicorr = interpol(invcorrimg_rm[*,j,tt], finalwave, wave[*,indx[i]]) - divideflat, thisflux1, invvar=thisivar1, thisicorr, minval=minicorrval - flux[*,indx[i]] = thisflux1 - fluxivar[*,indx[i]] = thisivar1 - - divideflat, thissky1, thisicorr, minval=minicorrval - skyflux[*,indx[i]] = thissky1 - endfor - - endif - - mwrfits, flux[*,indx], thisfile, hdr, /create - - fxaddpar, exthdr, 'EXTNAME', 'IVAR', ' Inverse variance' - mwrfits, fluxivar[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'MASK', ' Pixel mask' - mwrfits, pixelmask[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'WAVELENGTH', ' Wavelength solution' - mwrfits, wave[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'WAVEDISP', ' Wavelength dispersion' - mwrfits, dispersion[*,indx], thisfile, exthdr - - ;; need a different header for plugmap structure - ;; undefine it first so that mwrfits doesn't duplicate comments - ;; on successive writes - undefine, plughdr - fxaddpar, plughdr, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - mwrfits, plugmap[indx], thisfile, plughdr - - fxaddpar, exthdr, 'EXTNAME', 'SKY', ' Subtracted sky flux' - mwrfits, skyflux[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'X', ' Trace X locations on CCD' - mwrfits, ximg[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'SUPERFLAT', ' Superflat' - mwrfits, superflat[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'SPRESL', ' Spectral resolution' - mwrfits, resolution[*,indx], thisfile, exthdr - - endfor - splog, prename='' - ;---------- - ; Clear memory - - wave = 0 - flux = 0 - fluxivar = 0 - temppixmask = 0 - dispersion = 0 - resolution = 0 - skyflux = 0 - superflat = 0 - - ;--------------------------------------------------------------------------- - ; Create the output header - ;--------------------------------------------------------------------------- - - ;---------- - ; Print roll call of bad fibers and bad pixels. - - fiber_rollcall, finalandmask, finalwave - - ;---------- - ; Remove header cards that were specific to this first exposure - ; (where we got the header). - sxaddpar, bighdr, 'FIELDID', (strsplit(outputname,'-',/EXTRACT))[1] - ;sxaddpar, bighdr, 'FIELDID', strmid(outputname,8,5) - ncoeff = sxpar(bighdr, 'NWORDER') - for i=2, ncoeff-1 do sxdelpar, bighdr, 'COEFF'+strtrim(string(i),2) - - sxdelpar, bighdr, ['SPA', 'IPA', 'IPARATE'] - sxdelpar, bighdr, 'CONFID' - sxdelpar, bighdr, 'DESIGNID' - sxdelpar, bighdr, 'EXPOSURE' - sxdelpar, bighdr, 'REQTIME' - sxdelpar, bighdr, 'QUALITY' - sxdelpar, bighdr, 'FILENAME' - sxdelpar, bighdr, 'SEQID' - sxdelpar, bighdr, 'DARKTIME' - sxdelpar, bighdr, 'CAMERAS' - sxdelpar, bighdr, 'PLUGMAPO' - for i=1, 4 do sxdelpar, bighdr, 'GAIN'+strtrim(string(i),2) - for i=1, 4 do sxdelpar, bighdr, 'RDNOISE'+strtrim(string(i),2) - sxdelpar, bighdr, ['CAMCOL', 'CAMROW'] - sxdelpar, bighdr, ['AMPLL', 'AMPLR', 'AMPUL', 'AMPUR'] - sxdelpar, bighdr, ['FFS', 'FF', 'NE', 'HGCD'] - sxdelpar, bighdr, ['SPEC1', 'SPEC2'] - sxdelpar, bighdr, 'NBLEAD' - sxdelpar, bighdr, 'PIXFLAT' - sxdelpar, bighdr, 'PIXBIAS' - sxdelpar, bighdr, 'FLATFILE' - sxdelpar, bighdr, 'ARCFILE' - sxdelpar, bighdr, 'OBJFILE' - sxdelpar, bighdr, 'FRAMESN2' - sxdelpar, bighdr, 'DEREDSN2' - - ;---------- - ; Average together some of the fields from the individual headers. fieldid - - cardname = [ 'AZ', 'ALT', 'AIRMASS', 'TAI', 'WTIME', 'AIRTEMP', 'DEWPOINT', $ - 'DEWDEP', 'DUSTA', 'DUSTB', 'DUSTC', 'DUSTD', 'GUSTS', 'HUMIDITY', $ - 'HUMIDOUT', 'PRESSURE', 'WINDD', 'WINDS', 'TEMP01', 'TEMP02', $ - 'TEMP03', 'TEMP04', 'HELIO_RV', 'V_RAD', 'SEEING20', 'SEEING50', 'SEEING80', $ - 'RMSOFF20', 'RMSOFF50', 'RMSOFF80', 'XCHI2', 'SKYCHI2', $ - 'WSIGMA', 'XSIGMA' ] - sxdelpar, bighdr,cardname - sxdelpar, bighdr,'TAI-BEG' - sxdelpar, bighdr,'TAI-END' - sxdelpar, bighdr,'XCHI2' - sxdelpar, bighdr,'SKYCHI2' - sxdelpar, bighdr,'WSIGMA' - sxdelpar, bighdr,'XSIGMA' - sxdelpar, bighdr,'NGUIDE' - - cameras0 = sxpar(*(hdrarr[0]), 'CAMERAS') - for ihdr=1, n_elements(hdrarr)-1 do begin - if (sxpar(*(hdrarr[ihdr]), 'CAMERAS') EQ cameras0) then $ - ;sxcombinepar, hdrarr[ihdr], cardname, bighdr, func='total' - sxdelpar, bighdr,cardname - endfor - - ;---------- - ; Use the MJD passed as a keyword, which will typically be for the most - ; observation, and be consistent with the output file names - - if (keyword_set(mjd)) then $ - sxaddpar, bighdr, 'MJD', mjd - - ; Get the list of MJD's used for these reductions, then convert to a string - mjdlist = mjdlist[uniq(mjdlist, sort(mjdlist))] - mjdlist = strtrim(strcompress(string(mjdlist,format='(999a)')),2) - ;sxaddpar, bighdr, 'MJDLIST', mjdlist, ' MJDs coadded for epoch', after='MJD' - - ; Get the list of Designs used for these reductions, then convert to a string - ;designlist = designlist[uniq(designlist, sort(designlist))] - designlist = strtrim(strcompress(string(designlist,format='(999a)')),2) - ;sxaddpar, bighdr, 'DESIGNS',designlist, ' DesignIDs coadded', after='MJDLIST' - - ; Get the list of configurations used for these reductions, then convert to a string - ;configlist = configlist[uniq(configlist, sort(configlist))] - configlist = strtrim(strcompress(string(configlist,format='(999a)')),2) - ;sxaddpar, bighdr, 'CONFIGS', configlist, ' FPS ConfigIDs coadded', after='DESIGNS' - - if keyword_set(tai_flag) then begin - indtai=uniq(tailist, sort(tailist)) - tailist = tailist[indtai] - snr2listG = snr2listG[indtai] - snr2listR = snr2listR[indtai] - snr2listI = snr2listI[indtai] - tailist = strtrim(strcompress(string(string(tailist,format='(i15)'),format='(999a)')),2) - snr2listG = strtrim(strcompress(string(snr2listG,format='(999a)')),2) - snr2listR = strtrim(strcompress(string(snr2listR,format='(999a)')),2) - snr2listI = strtrim(strcompress(string(snr2listI,format='(999a)')),2) - endif - ;---------- - ; Add new header cards - - sxaddpar, bighdr, 'VERSCOMB', idlspec2d_version(), $ - ' Version of idlspec2d for combining multiple spectra', after='VERS2D' - sxaddpar, bighdr, 'NEXP', nfiles, $ - ' Number of exposures in this file', before='EXPTIME' - for ifile=0,nfiles-1 do $ - sxaddpar, bighdr, string('EXPID',ifile+1, format='(a5,i2.2)'), label[ifile], $ - ' ID string for exposure '+strtrim(ifile+1,2), before='EXPTIME' - if (keyword_set(bestexpnum)) then sxaddpar, bighdr, 'BESTEXP', bestexpnum, before='EXPID01' - - sxaddpar, bighdr, 'EXPTIME', min(exptimevec), $ - ' Minimum of exposure times for all cameras' - for icam=0, ncam-1 do $ - sxaddpar, bighdr, 'NEXP_'+camnames[icam], nexpvec[icam], $ - ' '+camnames[icam]+' camera number of exposures', before='EXPTIME' - for icam=0, ncam-1 do $ - sxaddpar, bighdr, 'EXPT_'+camnames[icam], exptimevec[icam], $ - ' '+camnames[icam]+' camera exposure time (seconds)', before='EXPTIME' - sxaddpar, bighdr, 'SPCOADD', systime(), ' SPCOADD finished', after='EXPTIME' - - sxaddpar, bighdr, 'NWORDER', 2, ' Linear-log10 coefficients' - sxaddpar, bighdr, 'NWORDER', 2, ' Linear-log10 coefficients' - sxaddpar, bighdr, 'WFITTYPE', 'LOG-LINEAR', ' Linear-log10 dispersion' - sxaddpar, bighdr, 'COEFF0', wavemin, ' Central wavelength (log10) of first pixel' - sxaddpar, bighdr, 'COEFF1', binsz, ' Log10 dispersion per pixel' - - sxaddpar, bighdr, 'NAXIS1', n_elements(bestflux) - sxaddpar, bighdr, 'NAXIS2', nfiber - - spawn, 'uname -n', uname - sxaddpar, bighdr, 'UNAME', uname[0] - - ;---------- - ; Compute the fraction of bad pixels in total, and on each spectrograph. - ; Bad pixels are any with SKYMASK(INVVAR)=0, excluding those where - ; the NODATA bit is set in the pixel mask. - - ifib1 = where(finalplugmap.spectrographid EQ 1, nfib1) - ifib2 = where(finalplugmap.spectrographid EQ 2, nfib2) - qbadpix = skymask(finalivar, finalandmask, finalormask) EQ 0 $ - AND (finalandmask AND pixelmask_bits('NODATA')) EQ 0 - if (nfib1 GT 0) then $ - fbadpix1 = total(qbadpix[*,ifib1]) / (nfib1 * nfinalpix) $ - else $ - fbadpix1 = 0 - if (nfib2 GT 0) then $ - fbadpix2 = total(qbadpix[*,ifib2]) / (nfib2 * nfinalpix) $ - else $ - fbadpix2 = 0 - if (nfib1 GT 0 AND nfib2 GT 0) then $ - fbadpix = total(qbadpix[*,[ifib1,ifib2]]) / ((nfib1+nfib2) * nfinalpix) $ - else if (nfib1 GT 0) then $ - fbadpix = fbadpix1 $ - else if (nfib2 GT 0) then $ - fbadpix = fbadpix1 $ - else $ - fbadpix = 0 - - sxaddpar, bighdr, 'FBADPIX', fbadpix, ' Fraction of bad pixels' - sxaddpar, bighdr, 'FBADPIX1', fbadpix1, ' Fraction of bad pixels on spectro-1' - sxaddpar, bighdr, 'FBADPIX2', fbadpix2, ' Fraction of bad pixels on spectro-2' - bighdr_rm=bighdr - sxaddpar, bighdr_rm, 'NAXIS3', nexp_tmp, '' - - ;---------- - ; Clean plugmap - tags_to_delete= ['POSITIONERID','HOLEID', 'XWOK', 'YWOK', 'ZWOK', $ - $;'XFOCAL', 'YFOCAL', 'ZFOCAL', $ - 'ALPHA', 'BETA', 'FIBERID'] - foreach tag, tags_to_delete do begin - if tag_exist(finalplugmap,tag) then $ - finalplugmap = struct_trimtags(finalplugmap,except_tags=[tag]) - endforeach - - ;---------- - ; Add keywords for IRAF-compatability - - add_iraf_keywords, bighdr, wavemin, binsz - - mkhdr, hdrfloat, finalivar, /image, /extend - add_iraf_keywords, hdrfloat, wavemin, binsz - - mkhdr, hdrfloat_rm, finalivar_rm, /image, /extend - add_iraf_keywords, hdrfloat_rm, wavemin, binsz - - mkhdr, hdrlong, finalandmask, /image, /extend - add_iraf_keywords, hdrlong, wavemin, binsz - - mkhdr, hdrlong_rm, finalandmask_rm, /image, /extend - add_iraf_keywords, hdrlong_rm, wavemin, binsz - - ;--------------------------------------------------------------------------- - ; Write combined output file - ;--------------------------------------------------------------------------- - - ; First write the file with the flux distortion vectors - if not keyword_set(nodist) then $ - mwrfits, corrimg, distortfitsfile, bighdr, /create - - fulloutname = djs_filepath(outputname, root_dir=combinedir) - - ; HDU #0 is flux - sxaddpar, bighdr, 'BUNIT', '1E-17 erg/cm^2/s/Ang' - mwrfits, finalflux, fulloutname, bighdr, /create - - ; HDU #1 is inverse variance - sxaddpar, hdrfloat, 'BUNIT', '1/(1E-17 erg/cm^2/s/Ang)^2' - sxaddpar, hdrfloat, 'EXTNAME', 'IVAR', ' Inverse variance' - mwrfits, finalivar, fulloutname, hdrfloat - - ; HDU #2 is AND-pixelmask - sxaddpar, hdrlong, 'EXTNAME', 'ANDMASK', ' AND Mask' - mwrfits, finalandmask, fulloutname, hdrlong - - ; HDU #3 is OR-pixelmask - sxaddpar, hdrlong, 'EXTNAME', 'ORMASK', ' OR Mask' - mwrfits, finalormask, fulloutname, hdrlong - - ; HDU #4 is dispersion map - sxaddpar, hdrfloat, 'BUNIT', 'pixels' - sxaddpar, hdrfloat, 'EXTNAME', 'WAVEDISP', ' Wavelength dispersion' - mwrfits, finaldispersion, fulloutname, hdrfloat - - ; HDU #5 is plugmap - sxaddpar, hdrplug, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - mwrfits, finalplugmap, fulloutname, hdrplug - - ; HDU #6 is the sky - sxaddpar, hdrsky, 'EXTNAME', 'SKY', ' Subtracted sky flux' - mwrfits, finalsky, fulloutname, hdrsky - - ; HDU #7 is the resolution map - sxaddpar, hdrfloat, 'BUNIT', 'angstroms' - sxaddpar, hdrfloat, 'EXTNAME', 'SPECRESL', ' Spectral resolution' - mwrfits, finalresolution, fulloutname, hdrfloat - - if keyword_set(single_spectra) then begin - ;writing each individual coadd spectrum on the field - sxdelpar, bighdr, 'NAXIS2' - spawn,'mkdir -p '+combinedir+'coadd' - for itarget=0, ntarget-1 do begin - added_exp=[] - - finalvalues=replicate(create_struct('flux',0.0),n_elements(finalwave)) - values_t=replicate(create_struct('loglam',0.0),n_elements(finalwave)) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('ivar',0.0),n_elements(finalwave)) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('and_mask',long(0)),n_elements(finalwave)) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('or_mask',long(0)),n_elements(finalwave)) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('wdisp',0.0),n_elements(finalwave)) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('sky',0.0),n_elements(finalwave)) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('wresl',0.0),n_elements(finalwave)) - finalvalues=struct_addtags(finalvalues,values_t) - finalvalues.flux=finalflux[*,itarget] - finalvalues.loglam=finalwave - finalvalues.ivar=finalivar[*,itarget] - finalvalues.and_mask=finalandmask[*,itarget] - finalvalues.or_mask=finalormask[*,itarget] - finalvalues.wdisp=finaldispersion[*,itarget] - finalvalues.sky=finalsky[*,itarget] - finalvalues.wresl=finalresolution[*,itarget] - if keyword_set(legacy) or keyword_set(plates) then begin - if keyword_set(legacy) then begin - targid_tar=string(finalplugmap[itarget].fiberid,format='(i4.4)') - endif else begin - if finalplugmap[itarget].catalogid eq 0 then begin - targid_tar=string(finalplugmap[itarget].fiberid,format='(i11.11)') - endif else begin - if finalplugmap[itarget].program.contains('offset', /FOLD_CASE ) then begin - targid_tar=strtrim(string(finalplugmap[itarget].catalogid),1) - endif else begin - targid_tar=string(finalplugmap[itarget].catalogid,format='(i11.11)') - endelse - endelse - endelse - endif else begin - targid_tar=finalplugmap[itarget].catalogid - endelse - sxaddpar, bighdr, 'PLUG_RA', final_ra[itarget], ' RA of Target' - sxaddpar, bighdr, 'PLUG_DEC', final_dec[itarget], ' DEC of Target' - if keyword_set(legacy) or keyword_set(plates) then begin - if keyword_set(mjd) then begin - thismjd=mjd - endif else begin - thismjd=mjds[itarget] - endelse - endif else begin - thismjd=mjds[itarget] - endelse - thismjd=strtrim(strcompress(string(thismjd,format='(99a)')),2) - coadddir=combinedir+'coadd/'+thismjd - spawn,'mkdir -p '+coadddir - coaddname = repstr(repstr(outputname,'spField','spSpec'),'.fits', $ - '-'+strtrim(targid_tar,2)+'.fits') - fulloutname_coadd = djs_filepath(coaddname, root_dir=coadddir) - ; HDU # 0 header - mwrfits, junk_d, fulloutname_coadd, bighdr, /create - ; HDU # 1 header - if itarget eq 0 then begin - sxaddpar, coadd_val, 'EXTNAME', 'COADD', ' Coadded spectrum' - endif - mwrfits, finalvalues, fulloutname_coadd, coadd_val - sxdelpar, coadd_val, 'COMMENT' - - ; HDU #2 is plugmap - if itarget eq 0 then begin - sxaddpar, hdrplug, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - endif - mwrfits, finalplugmap[itarget], fulloutname_coadd, hdrplug - sxdelpar, hdrplug, 'COMMENT' - - for ifiber=0, nfiber-1 do begin - for iexp=0, nexp_tmp - 1 do begin - if keyword_set(legacy) or keyword_set(plates) then begin - if keyword_set(legacy) then begin - targid_rm=string(finalplugmap_rm[ifiber,iexp].fiberid,format='(i4.4)');targid_tar - endif else begin - if finalplugmap_rm[ifiber,iexp].catalogid eq 0 then begin - targid_rm=string(finalplugmap_rm[ifiber,iexp].fiberid,format='(i11.11)');targid_tar - endif else begin - if finalplugmap[itarget].program.contains('offset', /FOLD_CASE ) then begin - targid_rm=strtrim(string(finalplugmap_rm[ifiber,iexp].catalogid),1) - endif else begin - targid_rm=string(finalplugmap_rm[ifiber,iexp].catalogid,format='(i11.11)');targid_tar - endelse - endelse - endelse - endif else begin - targid_rm=finalplugmap_rm[ifiber,iexp].catalogid - endelse - if targid_rm eq targid_tar then begin - added_exp=[added_exp,iexp] - finalvalues_rm=replicate(create_struct('flux',0.0),n_elements(finalwave)) - values_t=replicate(create_struct('loglam',0.0),n_elements(finalwave)) - finalvalues_rm=struct_addtags(finalvalues_rm,values_t) - values_t=replicate(create_struct('ivar',0.0),n_elements(finalwave)) - finalvalues_rm=struct_addtags(finalvalues_rm,values_t) - values_t=replicate(create_struct('and_mask',long(0)),n_elements(finalwave)) - finalvalues_rm=struct_addtags(finalvalues_rm,values_t) - values_t=replicate(create_struct('or_mask',long(0)),n_elements(finalwave)) - finalvalues_rm=struct_addtags(finalvalues_rm,values_t) - values_t=replicate(create_struct('wdisp',0.0),n_elements(finalwave)) - finalvalues_rm=struct_addtags(finalvalues_rm,values_t) - values_t=replicate(create_struct('sky',0.0),n_elements(finalwave)) - finalvalues_rm=struct_addtags(finalvalues_rm,values_t) - values_t=replicate(create_struct('wresl',0.0),n_elements(finalwave)) - finalvalues_rm=struct_addtags(finalvalues_rm,values_t) - finalvalues_rm.flux=finalflux_rm[*,ifiber,iexp] - finalvalues_rm.loglam=finalwave - finalvalues_rm.ivar=finalivar_rm[*,ifiber,iexp] - finalvalues_rm.and_mask=finalandmask_rm[*,ifiber,iexp] - finalvalues_rm.or_mask=finalormask_rm[*,ifiber,iexp] - finalvalues_rm.wdisp=finaldispersion_rm[*,ifiber,iexp] - finalvalues_rm.sky=finalsky_rm[*,ifiber,iexp] - finalvalues_rm.wresl=finalresolution_rm[*,ifiber,iexp] - ; HDU # N header - thisconf=mjds_rm[ifiber,iexp];config_rm[ifiber,iexp] - thisconf=string(thisconf,format='(i5.5)')+'-'+string(iexp,format='(i2.2)') - - indv_val=*hdrarr[iexp] - sxdelpar,indv_val, ['SIMPLE','BITPIX','NAXIS','NAXIS1','NAXIS2','EXTEND','CAMERAS'] - sxaddpar, indv_val, 'EXTNAME', 'MJD_EXP_'+thisconf, ' Single exposure spectrum' - mwrfits, finalvalues_rm, fulloutname_coadd, indv_val - sxdelpar, indv_val, 'COMMENT' - - endif - - endfor - endfor - - if n_elements(added_exp) ne 0 then begin - iused_hdrarr=hdrarr[added_exp] - used_weight=weight[added_exp] - cardnames_avg = ['AZ', 'ALT', 'AIRMASS', 'WTIME', 'AIRTEMP', 'DEWPOINT', $ - 'DEWDEP', 'DUSTA', 'DUSTB', 'DUSTC', 'DUSTD', 'GUSTS', 'GUSTD', $ - 'WINDD25M', 'WINDS25M', $ - 'HUMIDITY', 'HUMIDOUT', 'PRESSURE', 'WINDD', 'WINDS', 'TEMP01', 'TEMP02', $ - 'TEMP03', 'TEMP04', 'HELIO_RV', 'V_RAD', 'SEEING20', 'SEEING50', 'SEEING80', $ - 'RMSOFF20', 'RMSOFF50', 'RMSOFF80', 'XCHI2', 'SKYCHI2', $ - 'WSIGMA', 'XSIGMA' , 'CCDTEMP', 'LN2TEMP'] - - h = headfits(fulloutname_coadd) ;Read primary header - - if n_elements(added_exp) eq 1 then begin - foreach card, cardname do begin - val= SXPAR(*iused_hdrarr[0], card, COMMENT = cmt) - sxaddpar, h, card, val, cmt, /SaveComment - endforeach - endif else begin - foreach cardname, cardnames_avg do begin - sxcombinepar_v2, iused_hdrarr, cardname, h, Comment=key_match_dict[cardname], func='average', weights=used_weight, /SaveComment - endforeach - sxcombinepar_v2, iused_hdrarr, 'TAI-BEG', h, Comment=key_match_dict['TAIBEG'], func='min' - sxcombinepar_v2, iused_hdrarr, 'TAI-END', h, Comment=key_match_dict['TAIEND'], func='max' - - sxcombinepar_v2, iused_hdrarr, 'XCHI2', h, Comment=key_match_dict['XCHI2MAX'], func='max', outcard='XCHI2MAX', after='XCHI2' - sxcombinepar_v2, iused_hdrarr, 'XCHI2', h, Comment=key_match_dict['XCHI2MIN'], func='min', outcard='XCHI2MIN', after='XCHI2' - sxcombinepar_v2, iused_hdrarr, 'SKYCHI2', h, Comment=key_match_dict['SCHI2MAX'], func='max', outcard='SCHI2MAX', after='SKYCHI2' - sxcombinepar_v2, iused_hdrarr, 'SKYCHI2', h, Comment=key_match_dict['SCHI2MIN'], func='min', outcard='SCHI2MIN', after='SKYCHI2' - sxcombinepar_v2, iused_hdrarr, 'WSIGMA', h, Comment=key_match_dict['WSIGMAX'], func='max', outcard='WSIGMAX', after='WSIGMA' - sxcombinepar_v2, iused_hdrarr, 'WSIGMA', h, Comment=key_match_dict['WSIGMIN'], func='min', outcard='WSIGMIN', after='WSIGMA' - sxcombinepar_v2, iused_hdrarr, 'XSIGMA', h, Comment=key_match_dict['XSIGMAX'], func='max', outcard='XSIGMAX', after='XSIGMA' - sxcombinepar_v2, iused_hdrarr, 'XSIGMA', h, Comment=key_match_dict['XSIGMIN'], func='min', outcard='XSIGMIN', after='XSIGMA' - sxcombinepar_v2, iused_hdrarr, 'NGUIDE', h, Comment=key_match_dict['NGUIDE'], func='total' - sxcombinepar_v2, iused_hdrarr, 'EXPTIME', h, Comment=key_match_dict['EXPTIME'], func='total' - sxaddpar, h, 'NEXP', n_elements(added_exp), key_match_dict['NEXP'] - sxdelpar, h, ['date-obs','SHOPETIM', 'SHCLOTIM', 'ionpump'] - - - endelse - modfits,fulloutname_coadd,0,h ;Update header only - endif - - endfor - endif - return -end -;------------------------------------------------------------------------------ diff --git a/pro/rm/rm_spcoadd_v5.pro b/pro/rm/rm_spcoadd_v5.pro index 0f978cb9a..3213526e8 100644 --- a/pro/rm/rm_spcoadd_v5.pro +++ b/pro/rm/rm_spcoadd_v5.pro @@ -626,6 +626,7 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ on_target_rm=lonarr(nfiber, nexp_tmp) valid_rm=lonarr(nfiber, nexp_tmp) DECOLLIDED_rm=lonarr(nfiber, nexp_tmp) + TOO_rm=lonarr(nfiber, nexp_tmp) xfocal_rm=fltarr(nfiber,nexp_tmp) yfocal_rm=fltarr(nfiber,nexp_tmp) @@ -664,6 +665,7 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ on_target_rm=[] valid_rm=[] DECOLLIDED_rm=[] + TOO_rm=[] xfocal_rm=[] yfocal_rm=[] @@ -795,6 +797,7 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ on_target_rm[ifiber, iexp] = plugmap[indx[0]].on_target valid_rm[ifiber, iexp] = plugmap[indx[0]].valid DECOLLIDED_rm[ifiber, iexp] = plugmap[indx[0]].decollided + TOO_rm[ifiber, iexp] = plugmap[indx[0]].too xfocal_rm[ifiber, iexp] = plugmap[indx[0]].xfocal yfocal_rm[ifiber, iexp] = plugmap[indx[0]].yfocal tai_rm[ifiber,iexp]=rm_plugmap[iexp].tai+double(rm_plugmap[iexp].exptime/2.0) @@ -826,6 +829,7 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ on_target_rm = [on_target_rm,plugmap[indx[0]].on_target] valid_rm = [valid_rm,plugmap[indx[0]].valid] DECOLLIDED_rm = [DECOLLIDED_rm,plugmap[indx[0]].decollided] + TOO_rm = [TOO_rm,plugmap[indx[0]].too] xfocal_rm = [xfocal_rm,plugmap[indx[0]].xfocal] yfocal_rm = [yfocal_rm,plugmap[indx[0]].yfocal] tai_rm = [tai_rm,rm_plugmap[iexp].tai+double(rm_plugmap[iexp].exptime/2.0)] @@ -888,7 +892,8 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ del_card = ['FILENAME', 'CAMERAS', 'CCD', 'CCDID', 'CCDTYPE'] foreach card, del_card do sxdelpar, dist_hdr, card - mwrfits, corrimg, repstr(distortfitsfile,'.fits','-'+strtrim(string(expnumf[iexp],f='(i010.8)'),2)+'.fits'), dist_hdr, /create + fname_tmp=repstr(distortfitsfile,'.fits','-'+strtrim(string(expnumf[iexp],f='(i010.8)'),2)+'.fits') + mwrfits_named, corrimg,fname_tmp , hr=dist_hdr, name='CORRIMG', /create ; print,dist_hdr ; message, 'break' ; Plot S/N and throughput **before** this distortion-correction. @@ -1040,6 +1045,7 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ on_target_target = strarr(ntarget) valid_target = strarr(ntarget) DECOLLIDED_target = strarr(ntarget) + TOO_target = strarr(ntarget) xfocal_target = strarr(ntarget) yfocal_target = strarr(ntarget) exptime_target = dblarr(ntarget) @@ -1056,6 +1062,7 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ on_target_target_s=replicate(create_struct('ON_TARGET_LIST',' '),ntarget) valid_target_s=replicate(create_struct('VALID_LIST',' '),ntarget) DECOLLIDED_target_s=replicate(create_struct('DECOLLIDED_LIST',' '),ntarget) + TOO_target_s=replicate(create_struct('TOO_LIST',' '),ntarget) exp_disp_med_s=replicate(create_struct('EXP_DISP_MED',0.D),ntarget) xfocal_target_s=replicate(create_struct('XFOCAL_LIST',' '),ntarget) yfocal_target_s=replicate(create_struct('YFOCAL_LIST',' '),ntarget) @@ -1372,6 +1379,7 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ on_target_target[itarget]=strtrim(strcompress(string(string(on_target_rm[indx[0]],format='(i15)'),format='(999a)')),2) valid_target[itarget]=strtrim(strcompress(string(valid_rm[indx[0]],format='(999a)')),2) DECOLLIDED_target[itarget]=strtrim(strcompress(string(DECOLLIDED_rm[indx[0]],format='(999a)')),2) + TOO_target[itarget]=strtrim(strcompress(string(TOO_rm[indx[0]],format='(999a)')),2) xfocal_target[itarget]=strtrim(strcompress(string(string(xfocal_rm[indx[0]],format='(f0.3)'),format='(999a)')),2) yfocal_target[itarget]=strtrim(strcompress(string(string(yfocal_rm[indx[0]],format='(f0.3)'),format='(999a)')),2) tai_target[itarget]=strtrim(strcompress(string(string(tai_rm[indx[0]],format='(i15)'),format='(999a)')),2) @@ -1420,6 +1428,7 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ on_target_target[itarget]=on_target_target[itarget]+' '+strtrim(strcompress(string(string(on_target_rm[indx[iexp]], format='(i15)'),format='(999a)')),2) valid_target[itarget]=valid_target[itarget]+' '+strtrim(strcompress(string(string(valid_rm[indx[iexp]], format='(i15)'),format='(999a)')),2) DECOLLIDED_target[itarget]=DECOLLIDED_target[itarget]+' '+strtrim(strcompress(string(string(DECOLLIDED_rm[indx[iexp]], format='(i15)'),format='(999a)')),2) + TOO_target[itarget]=TOO_target[itarget]+' '+strtrim(strcompress(string(string(TOO_rm[indx[iexp]], format='(i15)'),format='(999a)')),2) xfocal_target[itarget]=xfocal_target[itarget]+' '+strtrim(strcompress(string(string(xfocal_rm[indx[iexp]],format='(f0.3)'),format='(999a)')),2) yfocal_target[itarget]=yfocal_target[itarget]+' '+strtrim(strcompress(string(string(yfocal_rm[indx[iexp]],format='(f0.3)'),format='(999a)')),2) tai_target[itarget]=tai_target[itarget]+' '+strtrim(strcompress(string(string(tai_rm[indx[iexp]],format='(i15)'),format='(999a)')),2) @@ -1523,6 +1532,8 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ finalplugmap=struct_addtags(finalplugmap,valid_target_s) DECOLLIDED_target_s.DECOLLIDED_LIST=DECOLLIDED_target finalplugmap=struct_addtags(finalplugmap,DECOLLIDED_target_s) + TOO_target_s.TOO_LIST=TOO_target + finalplugmap=struct_addtags(finalplugmap,TOO_target_s) exp_disp_med_s.EXP_DISP_MED=exp_disp_med finalplugmap=struct_addtags(finalplugmap,exp_disp_med_s) xfocal_target_s.XFOCAL_LIST=xfocal_target @@ -1621,38 +1632,21 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ endif - mwrfits, flux[*,indx], thisfile, hdr, /create - - fxaddpar, exthdr, 'EXTNAME', 'IVAR', ' Inverse variance' - mwrfits, fluxivar[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'MASK', ' Pixel mask' - mwrfits, pixelmask[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'WAVELENGTH', ' Wavelength solution' - mwrfits, wave[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'WAVEDISP', ' Wavelength dispersion' - mwrfits, dispersion[*,indx], thisfile, exthdr + mwrfits_named, flux[*,indx], thisfile, hdr=hdr, name='FLUX', desc=' Flux', /create + mwrfits_named, fluxivar[*,indx], thisfile, hdr=exthdr, name='IVAR', desc=' Inverse variance' + mwrfits_named, pixelmask[*,indx], thisfile, hdr=exthdr, name='MASK', desc=' Pixel mask' + mwrfits_named, wave[*,indx], thisfile, hdr=exthdr, name='WAVELENGTH', desc=' Wavelength solution' + mwrfits_named, dispersion[*,indx], thisfile, hdr=exthdr, name='WAVEDISP', desc=' Wavelength dispersion' ;; need a different header for plugmap structure ;; undefine it first so that mwrfits doesn't duplicate comments ;; on successive writes undefine, plughdr - fxaddpar, plughdr, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - mwrfits, plugmap[indx], thisfile, plughdr - - fxaddpar, exthdr, 'EXTNAME', 'SKY', ' Subtracted sky flux' - mwrfits, skyflux[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'X', ' Trace X locations on CCD' - mwrfits, ximg[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'SUPERFLAT', ' Superflat' - mwrfits, superflat[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'SPRESL', ' Spectral resolution' - mwrfits, resolution[*,indx], thisfile, exthdr + mwrfits_named, plugmap[indx], thisfile, hdr=plughdr, name='PLUGMAP', desc=' Plugmap structure' + mwrfits_named, skyflux[*,indx], thisfile, hdr=exthdr, name='SKY', desc=' Subtracted sky flux' + mwrfits_named, ximg[*,indx], thisfile, hdr=exthdr, name='X', desc=' Trace X locations on CCD' + mwrfits_named, superflat[*,indx], thisfile, hdr=exthdr, name= 'SUPERFLAT', desc=' Superflat' + mwrfits_named, resolution[*,indx], thisfile, hdr = exthdr, name='SPRESL', desc=' Spectral resolution' endfor splog, prename='' @@ -1937,45 +1931,39 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ if keyword_set(onestep_coadd) then begin ; First write the file with the flux distortion vectors if not keyword_set(nodist) then $ - mwrfits, corrimg, distortfitsfile, fieldhdr, /create + mwrfits_named, corrimg, distortfitsfile, hdr=fieldhdr, name= 'CORRIMG', /create $ + else mwrfits_named, corrimg, distortfitsfile, hdr=fieldhdr, /create endif fulloutname = djs_filepath(outputname, root_dir=combinedir) ; HDU #0 is flux sxaddpar, fieldhdr, 'BUNIT', '1E-17 erg/cm^2/s/Ang' - mwrfits, finalflux, fulloutname, fieldhdr, /create + mwrfits_named, finalflux, fulloutname, hdr=fieldhdr, name='FLUX', /create ; HDU #1 is inverse variance sxaddpar, hdrfloat, 'BUNIT', '1/(1E-17 erg/cm^2/s/Ang)^2' - sxaddpar, hdrfloat, 'EXTNAME', 'IVAR', ' Inverse variance' - mwrfits, finalivar, fulloutname, hdrfloat + mwrfits_named, finalivar, fulloutname, hdr=hdrfloat, name='IVAR', desc=' Inverse variance' ; HDU #2 is AND-pixelmask - sxaddpar, hdrlong, 'EXTNAME', 'ANDMASK', ' AND Mask' - mwrfits, finalandmask, fulloutname, hdrlong + mwrfits_named, finalandmask, fulloutname, hdr=hdrlong, name='ANDMASK', desc=' AND Mask' ; HDU #3 is OR-pixelmask - sxaddpar, hdrlong, 'EXTNAME', 'ORMASK', ' OR Mask' - mwrfits, finalormask, fulloutname, hdrlong + mwrfits_named, finalormask, fulloutname, hdr=hdrlong, name='ORMASK', desc=' OR Mask' ; HDU #4 is dispersion map sxaddpar, hdrfloat, 'BUNIT', 'pixels' - sxaddpar, hdrfloat, 'EXTNAME', 'WAVEDISP', ' Wavelength dispersion' - mwrfits, finaldispersion, fulloutname, hdrfloat + mwrfits_named, finaldispersion, fulloutname, hdr=hdrfloat,name='WAVEDISP', desc=' Wavelength dispersion' ; HDU #5 is plugmap - sxaddpar, hdrplug, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - mwrfits, finalplugmap, fulloutname, hdrplug + mwrfits_named, finalplugmap, fulloutname, hdr=hdrplug, name='PLUGMAP', desc=' Plugmap structure' ; HDU #6 is the sky - sxaddpar, hdrsky, 'EXTNAME', 'SKY', ' Subtracted sky flux' - mwrfits, finalsky, fulloutname, hdrsky + mwrfits_named, finalsky, fulloutname, hdr=hdrsky, name='SKY', desc=' Subtracted sky flux' ; HDU #7 is the resolution map sxaddpar, hdrfloat, 'BUNIT', 'angstroms' - sxaddpar, hdrfloat, 'EXTNAME', 'SPECRESL', ' Spectral resolution' - mwrfits, finalresolution, fulloutname, hdrfloat + mwrfits_named, finalresolution, fulloutname, hdr = hdrfloat, name ='SPECRESL', desc=' Spectral resolution' if keyword_set(single_spectra) then begin ;writing each individual coadd spectrum on the field @@ -2035,21 +2023,13 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ '-'+strtrim(targid_tar,2)+'.fits') fulloutname_coadd = djs_filepath(coaddname, root_dir=coadddir) ; HDU # 0 header - mwrfits, junk_d, fulloutname_coadd, bighdr, /create + mwrfits_named, junk_d, fulloutname_coadd, hdr=bighdr, /create ; HDU # 1 header - if itarget eq 0 then begin - sxaddpar, coadd_val, 'EXTNAME', 'COADD', ' Coadded spectrum' - endif - mwrfits, finalvalues, fulloutname_coadd, coadd_val - sxdelpar, coadd_val, 'COMMENT' - + mwrfits_named, finalvalues, fulloutname_coadd, hdr=coadd_val, name='COADD', desc=' Coadded spectrum' + ; HDU #2 is plugmap - if itarget eq 0 then begin - sxaddpar, hdrplug, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - endif - mwrfits, finalplugmap[itarget], fulloutname_coadd, hdrplug - sxdelpar, hdrplug, 'COMMENT' - + mwrfits_named, finalplugmap[itarget], fulloutname_coadd, hdr = hdrplug, name='PLUGMAP', desc= ' Plugmap structure', /silent + for ifiber=0, nfiber-1 do begin for iexp=0, nexp_tmp - 1 do begin if keyword_set(legacy) then begin @@ -2088,8 +2068,7 @@ pro rm_spcoadd_v5, spframes, outputname, obs=obs, $ indv_val=*hdrarr[iexp] sxdelpar,indv_val, ['SIMPLE','BITPIX','NAXIS','NAXIS1','NAXIS2','EXTEND','CAMERAS'] - sxaddpar, indv_val, 'EXTNAME', 'MJD_EXP_'+thisconf, ' Single exposure spectrum' - mwrfits, finalvalues_rm, fulloutname_coadd, indv_val + mwrfits_named, finalvalues_rm, fulloutname_coadd, hdr=indv_val, name='MJD_EXP_'+thisconf, desc=' Single exposure spectrum', /silent sxdelpar, indv_val, 'COMMENT' endif diff --git a/pro/rm/rm_spcombine_v5.pro b/pro/rm/rm_spcombine_v5.pro index 7dc9667b6..aa0c46add 100644 --- a/pro/rm/rm_spcombine_v5.pro +++ b/pro/rm/rm_spcombine_v5.pro @@ -106,13 +106,15 @@ pro rm_spcombine_v5, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, if keyword_set(epoch) then begin field_str = strsplit(repstr(repstr(planfile[0],'spPlancombepoch',''),'.par', ''),'-',/extract) field_str=field_str[0] - if not keyword_set(topdir) then $ - topdir=getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') + '/' + field_str + '/'+'epoch/' + if not keyword_set(topdir) then begin + fdir = get_field_dir(getenv('BOSS_SPECTRO_REDUX'), run2d, field_str) + topdir = djs_filepath('epoch', root_dir = fdir) + endif endif else begin field_str = strsplit(repstr(repstr(planfile[0],'spPlancomb',''),'.par', ''),'-',/extract) field_str=field_str[0] if not keyword_set(topdir) then $ - topdir=getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') + '/' + field_str + '/' + topdir = get_field_dir(getenv('BOSS_SPECTRO_REDUX'), run2d, field_str) endelse get_field_type, fieldid=long(field_str), legacy=legacy, plates=plates, fps=fps @@ -120,7 +122,7 @@ pro rm_spcombine_v5, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, ;---------- ; Strip path from plan file name, and change to that directory - thisplan = fileandpath(topdir+planfile[0], path=outdir) + thisplan = fileandpath(djs_filepath(planfile[0], root_dir = topdir), path=outdir) cd, outdir, current=origdir if (NOT keyword_set(outdir)) then cd, origdir @@ -380,7 +382,7 @@ pro rm_spcombine_v5, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, i1 = where(camspecid EQ 1 AND score GT minsn2, ct1) i2 = where(camspecid EQ 2 AND score GT minsn2, ct2) objname = allseq.name[icams] - + status = MAKE_ARRAY(SIZE(objname, /DIMENSIONS), /INTEGER) configuration=obj_new("configuration",thismjd,obs) ; stop here and run diagnosis @@ -411,7 +413,9 @@ pro rm_spcombine_v5, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, combinedir=outdir, nprox=nprox, epoch=epoch, $ minfracthresh=configuration->spflux_v5_minfracthresh(), $ useairmass=useairmass,xyfit=xyfit,loaddesi=loaddesi, $ - plates=plates,legacy=legacy, MWM_fluxer=MWM_fluxer + plates=plates,legacy=legacy, MWM_fluxer=MWM_fluxer, $ + fstatus = fstatus + status[i1[ido*2:ido*2+1]] = fstatus endfor endif endelse @@ -433,12 +437,15 @@ pro rm_spcombine_v5, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, endif else begin splog, 'Do Fluxcalib vectors using individual exposures' if (ct2 GT 0) then begin - for ido=0L, ct2/2 - 1L do $ + for ido=0L, ct2/2 - 1L do begin rm_spflux_v5, objname[i2[ido*2:ido*2+1]], adderr=adderr, $ combinedir=outdir, nprox = nprox, epoch=epoch, $ minfracthresh=configuration->spflux_v5_minfracthresh(), $ useairmass=useairmass,xyfit=xyfit,loaddesi=loaddesi, $ - plates=plates,legacy=legacy, MWM_fluxer=MWM_fluxer + plates=plates,legacy=legacy, MWM_fluxer=MWM_fluxer, $ + fstatus = fstatus + status[i2[ido*2:ido*2+1]] = fstatus + endfor endif endelse endif @@ -461,13 +468,13 @@ pro rm_spcombine_v5, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, splog, 'Do Flux-correction vectors for all exposures' if (ct1 GT 0) then $ rm_spfluxcorr_v5, objname[i1], adderr=adderr, combinedir=outdir, $ - bestexpnum=[bestexp_b1,bestexp_r1], epoch=epoch ;expnum[0,ibest] + bestexpnum=[bestexp_b1,bestexp_r1], epoch=epoch endif else begin splog, 'Do Flux-correction vectors for individual exposures' if (ct1 GT 0) then begin for ido=0L, ct1/2 - 1L do begin rm_spfluxcorr_v5, objname[i1[ido*2:ido*2+1]], adderr=adderr, $ - combinedir=outdir, epoch=epoch ;, indf=(ido+1);, bestexpnum=[bestexp_b1,bestexp_r1] + combinedir=outdir, epoch=epoch endfor endif endelse @@ -477,13 +484,13 @@ pro rm_spcombine_v5, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, splog, 'Do Flux-correction vectors for all exposures on the second spectrograph' if (ct2 GT 0) then $ rm_spfluxcorr_v5, objname[i2], adderr=adderr, combinedir=outdir, $ - bestexpnum=[bestexp_b2,bestexp_r2], epoch=epoch ;expnum[0,ibest] + bestexpnum=[bestexp_b2,bestexp_r2], epoch=epoch endif else begin splog, 'Do Flux-correction vectors for individual exposures on the second spectrograph' if (ct2 GT 0) then begin for ido=0L, ct2/2 - 1L do begin rm_spfluxcorr_v5, objname[i2[ido*2:ido*2+1]], adderr=adderr, $ - combinedir=outdir, epoch=epoch ;, indf=(ido+1);, bestexpnum=[bestexp_b1,bestexp_r1] + combinedir=outdir, epoch=epoch endfor endif endelse @@ -496,13 +503,19 @@ pro rm_spcombine_v5, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, ;---------- ; Close plot file - S/N plots are then put in the PLOTSNFILE file. - if (keyword_set(plotfile) AND NOT keyword_set(xdisplay)) then dfpsclose + if (keyword_set(plotfile) AND NOT keyword_set(xdisplay)) then begin + dfpsclose + ps2pdf, plotfile + endif endif else splog, 'Skip flux-corretion' ;exit ;---------- ; Co-add the fluxed exposures - + print, status + bad_calib = where(status < 0, ct) + if ct gt 0 then score[bad_calib] = -1 + print, score ii = where(score GT minsn2, ct) if (ct GT 0) then begin ; set values for wavemin and wavemax so that all coadded plates/spectra are diff --git a/pro/rm/rm_spcombine_v5_old.pro b/pro/rm/rm_spcombine_v5_old.pro deleted file mode 100644 index 3032dbd48..000000000 --- a/pro/rm/rm_spcombine_v5_old.pro +++ /dev/null @@ -1,411 +0,0 @@ -;+ -; NAME: -; rm_spcombine_v5 -; -; PURPOSE: -; Calling script for SPCOADD_V5. -; -; CALLING SEQUENCE: -; rm_spcombine_v5, [ planfile, docams=, adderr=, /xdisplay, minsn2= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; planfile - Name(s) of output plan file; default to reducing all -; plan files matching 'spPlancomb*.par' -; docams - Cameras to combine; default to ['b1', 'b2', 'r1', 'r2'] -; adderr - Additional error to add to the formal errors, as a -; fraction of the flux; default to 0.03 (3 per cent). -; xdisplay - Send plots to X display rather than to plot file -; minsn2 - Minimum S/N^2 to include science frame in coadd; default -; to 0 to only include those with S/N > 0. -; Note that all exposures with a score less than 0.2 times -; the score of the best exposure are discarded; for those -; purposes, the score used is the worst of all 4 cameras. -; skipfluxing- Skip the step to generate spFluxcalib* files -; nofcorr - Skip the step to generate and use the spFluxcorr* files -; nodist - Skip the step to generate and use the spFluxdistort* files -; -; OUTPUT: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; We currently hard-wire the rejection of all smears and -; any with (S/N)^2 less than 20% of the best exposure. -; -; PROCEDURES CALLED: -; cpbackup -; dfpsclose -; dfpsplot -; headfits -; idlspec2d_version() -; idlutils_version() -; spcoadd_v5 -; spflux_v5 -; spfluxcorr_v5 -; splog -; sxpar() -; yanny_free -; yanny_par() -; yanny_read -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 16-Jan-2014 Modified by Yue Shen to test improved RM spectrophotometry -; 06-Jul-2000 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro rm_spcombine_v5, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, $ - minsn2=minsn2, topdir=topdir,finaldir=finaldir,nprox=nprox, oneexp=oneexp, $ - skipfluxing=skipfluxing, nofcorr=nofcorr,nodist=nodist,useairmass=useairmass, $ - xyfit=xyfit, skipfcorr=skipfcorr - - if (NOT keyword_set(planfile)) then planfile = findfile('spPlancomb*.par') - if (n_elements(adderr) EQ 0) then adderr = 0.03 - if (n_elements(minsn2) EQ 0) then minsn2 = 0. - - if not keyword_set(topdir) then $ - topdir='/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/' - - ; Default is to do the spectrophotometry on all exposures at once - if n_elements(oneexp) eq 0 then oneexp = 0L - - ; Default is to use airmass in determining the local fluxing std array - if n_elements(useairmass) eq 0 then useairmass = 1L - - thismem = memory() - maxmem = 0 - - ;---------- - ; If multiple plan files exist, then call this script recursively - ; for each such plan file. - - if (N_elements(planfile) GT 1) then begin - for i=0, N_elements(planfile)-1 do $ - rm_spcombine_v5, planfile[i], docams=docams, adderr=adderr, $ - xdisplay=xdisplay, minsn=minsn, topdir=topdir, nprox=nprox, $ - oneexp=oneexp, finaldir=finaldir, skipfluxing=skipfluxing,$ - nofcorr=nofcorr,nodist=nodist,useairmass=useairmass,xyfit=xyfit, $ - skipfcorr=skipfcorr - return - endif - - if (NOT keyword_set(docams)) then docams = ['b1', 'b2', 'r1', 'r2'] - - ;---------- - ; Strip path from plan file name, and change to that directory - - thisplan = fileandpath(topdir+planfile[0], path=outdir) - cd, outdir, current=origdir - if (NOT keyword_set(outdir)) then cd, origdir - - ;---------- - ; Find the SPEXP structure - - allseq = yanny_readone(thisplan, 'SPEXP', hdr=hdr, /anon) - if (N_elements(allseq) EQ 0) then begin - splog, 'ABORT: No SPEXP structures in plan file ' + thisplan - cd, origdir - return - endif - - ;---------- - ; Find keywords from the header and construct output file names - - thismjd = long(yanny_par(hdr, 'MJD')) - if (NOT keyword_set(thismjd)) then $ - thismjd = max(allseq.mjd) - platemjd = string(yanny_par(hdr,'plateid'),format='(i4.4)') $ - + '-' + string(thismjd,format='(i5.5)') - logfile = 'spDiagcomb-' + platemjd + '.log' - plotfile = 'spDiagcomb-' + platemjd + '.ps' - fcalibprefix = 'spFluxcalib-' + platemjd - combinefile = 'spPlate-' + platemjd + '.fits' - plotsnfile = 'spSN2d-' + platemjd + '.ps' - - if keyword_set(skipfluxing) then logfile = 'spDiagcomb-' + platemjd + '-quick.log' - - ; modify the RM recalibration combinedir - if not keyword_set(finaldir) then outdir = outdir + 'recalib/' $ - else outdir = outdir + finaldir - - stime0 = systime(1) - - ;---------- - ; Open log files for output - - if (keyword_set(logfile)) then begin - cpbackup, djs_filepath(logfile, root_dir=outdir) - splog, filename=djs_filepath(logfile, root_dir=outdir) - splog, 'Log file ' + logfile + ' opened ' + systime() - splog, 'IDL version: ' + string(!version,format='(99(a," "))') - spawn, 'uname -a', uname - splog, 'UNAME: ' + uname[0] - endif - - if not keyword_set(skipfluxing) then begin - if (keyword_set(plotfile) AND NOT keyword_set(xdisplay)) then begin - cpbackup, djs_filepath(plotfile, root_dir=outdir) - set_plot, 'ps' - dfpsplot, djs_filepath(plotfile, root_dir=outdir), /color - splog, 'Plot file ' + plotfile - endif - endif - - splog, 'Plan file ', thisplan - splog, 'DOCAMS = ', docams - - splog, 'idlspec2d version ' + idlspec2d_version() - splog, 'idlutils version ' + idlutils_version() - - camnames = ['b1', 'b2', 'r1', 'r2'] - ncam = N_elements(camnames) - - ;---------- - ; Select frames that match the cameras specified by DOCAM. - - for ido=0, n_elements(docams)-1 do begin - ii = (where(camnames EQ docams[ido], camct))[0] - if (camct NE 1) then message, 'Non-unique camera ID: ' + docams[ido] - if (ido EQ 0) then icams = ii $ - else icams = [icams,ii] - endfor - - ;---------- - ; Compute a score for each frame and each exposure. - ; Replace all UNKNOWN file names with nulls. - ; The score will be MINSN2 if the file name is set to "NULL" - ; or does not exist. - - dims = size(allseq) - nexp = n_elements(allseq) - ndocam = n_elements(icams) - score = fltarr(ndocam, nexp) - (minsn2<0) - camspecid = lonarr(ndocam, nexp) - expnum = lonarr(ndocam, nexp) - camerasarr= strarr(ndocam, nexp) - for i=0L, nexp-1 do begin - for j=0L, ndocam-1 do begin - if (allseq[i].name[icams[j]] EQ 'UNKNOWN') then begin - allseq[i].name[icams[j]] = '' - endif else begin - thisfile = (lookforgzip(djs_filepath(allseq[i].name[icams[j]], $ - root_dir=topdir)))[0] - if (keyword_set(thisfile)) then begin - hdr = headfits(thisfile) - score[j,i] = sxpar(hdr, 'FRAMESN2') - cameras = strtrim(sxpar(hdr, 'CAMERAS'),2) - camspecid[j,i] = strmid(cameras, 1, 1) - camerasarr[j,i] = cameras - expnum[j,i] = sxpar(hdr, 'EXPOSURE') - endif else begin - expnum[j,i] = long(strmid(allseq[i].name[icams[j]],11,8)) - allseq[i].name[icams[j]] = '' - endelse - endelse - endfor - endfor - - ;---------- - ; If all data is missing from one of the cameras, then discard - ; both cameras from that spectrograph. - - ; Case where we discard spectrograph #1 - ; If there are no exposures with both b1+b2 cameras - ; then discard all spectrograph#1 data - if (total( total(camerasarr EQ 'b1',1) GT 0 AND $ - total(camerasarr EQ 'r1',1) GT 0 ) EQ 0) then begin - ii = where(docams EQ 'b2' OR docams EQ 'r2', ct) - if (ct GT 0) then begin - splog, 'Discarding spectro-1 data' - camerasarr = camerasarr[ii,*] - camspecid = camspecid[ii,*] - docams = docams[ii] - expnum = expnum[ii,*] - icams = icams[ii] - score = score[ii,*] - endif - endif - - ; Case where we discard spectrograph #2 - ; If there are no exposures with both b1+b2 cameras - ; then discard all spectrograph#1 data - if (total( total(camerasarr EQ 'b2',1) GT 0 AND $ - total(camerasarr EQ 'r2',1) GT 0 ) EQ 0) then begin - ii = where(docams EQ 'b1' OR docams EQ 'r1', ct) - if (ct GT 0) then begin - splog, 'Discarding spectro-2 data' - camerasarr = camerasarr[ii,*] - camspecid = camspecid[ii,*] - docams = docams[ii] - expnum = expnum[ii,*] - icams = icams[ii] - score = score[ii,*] - endif - endif - - ; Discard the smear exposures by setting their scores equal to (MINSN2<0) - qsmear = allseq.flavor EQ 'smear' - for iexp=0L, nexp-1 do $ - score[*,iexp] = score[*,iexp] * (qsmear[iexp] EQ 0) $ - + (minsn2<0) * qsmear[iexp] - - ;---------- - ; Select the "best" exposure based upon the minimum score in all cameras - - expscore = fltarr(nexp) - for iexp=0L, nexp-1 do $ - expscore[iexp] = min([score[*,iexp]]) - bestscore = max(expscore, ibest) - splog, 'Best exposure = ', expnum[0,ibest], ' score = ', bestscore - - ;---------- - ; Discard exposures whose score is less than some fraction of the - ; best exposure, or whose score is less than some absolute value. - ; These numbers are hard-wired!!!??? - - ibad = where(expscore LE minsn2 OR expscore LT 0.20*bestscore, nbad, complemen =igood) - if (nbad GT 0) then begin - for j=0, nbad-1 do splog, 'WARNING: Discarding ' $ - + allseq[ibad[j]].flavor + ' exposure #', $ - expnum[0,ibad[j]], ' with score=', expscore[ibad[j]] - score[*,ibad] = (minsn2<0) - endif - - ;---------- - ; Compute the spectro-photometry - - i1 = where(camspecid EQ 1 AND score GT minsn2, ct1) - i2 = where(camspecid EQ 2 AND score GT minsn2, ct2) - objname = allseq.name[icams] - - configuration=obj_new("configuration",thismjd) - - ; stop here and run diagnosis - ; message, 'Stop here and run diagonis' - - - if not keyword_set(skipfluxing) then begin - splog, prename='sp1' - if not keyword_set(oneexp) then begin - splog, 'Do Fluxcalib vectors using all exposures' - if (ct1 GT 0) then begin - rm_spflux_v5, objname[i1], adderr=adderr, combinedir=outdir, $ - minfracthresh=configuration->spflux_v5_minfracthresh(),nprox=nprox, $ - useairmass=useairmass,bestexpnum=bestexpnum_sp1,xyfit=xyfit - bestexp_b1 = expnum[0,igood[bestexpnum_sp1[0]]] - bestexp_r1 = expnum[1,igood[bestexpnum_sp1[1]]] - splog, 'Best exposure for spectrophotometry (blue1): ', bestexp_b1 - splog, 'Best exposure for spectrophotometry (red1): ', bestexp_r1 - - endif - ; instead of spline all the exps, do the spectro-photometry on one exp at a time - endif else begin - splog, 'Do Fluxcalib vectors using individual exposures' - if (ct1 GT 0) then begin - for ido=0L, ct1/2 - 1L do $ - rm_spflux_v5, objname[i1[ido*2:ido*2+1]], adderr=adderr, $ - combinedir=outdir, nprox=nprox, $ - minfracthresh=configuration->spflux_v5_minfracthresh(), $ - useairmass=useairmass,xyfit=xyfit - endif - endelse - - splog, prename='sp2' - if not keyword_set(oneexp) then begin - splog, 'Do Fluxcalib vectors using all exposures' - if (ct2 GT 0) then begin - rm_spflux_v5, objname[i2], adderr=adderr, combinedir=outdir, $ - minfracthresh=configuration->spflux_v5_minfracthresh(),nprox=nprox, $ - useairmass=useairmass,bestexpnum=bestexpnum_sp2,xyfit=xyfit - bestexp_b2 = expnum[2,igood[bestexpnum_sp2[0]]] - bestexp_r2 = expnum[3,igood[bestexpnum_sp2[1]]] - splog, 'Best exposure for spectrophotometry (blue2): ', bestexp_b2 - splog, 'Best exposure for spectrophotometry (red2): ', bestexp_b2 - - - endif - endif else begin - splog, 'Do Fluxcalib vectors using individual exposures' - if (ct2 GT 0) then begin - for ido=0L, ct2/2 - 1L do $ - rm_spflux_v5, objname[i2[ido*2:ido*2+1]], adderr=adderr, $ - combinedir=outdir, nprox = nprox, $ - minfracthresh=configuration->spflux_v5_minfracthresh(), $ - useairmass=useairmass,xyfit=xyfit - endif - endelse - splog, prename='' - - ; Track memory usage - thismem = memory() - maxmem = maxmem > thismem[3] - splog, 'Max memory usage = ', string(maxmem/1e6,format='(f7.1)'), ' MB' - - endif else splog, 'Skip fluxcalibration (assume already done earlier)' - - ;---------- - ; Compute the flux-correction vectors - - if not keyword_set(nofcorr) and not keyword_set(skipfcorr) then begin - ; for the flux-correction vectors, still use all the exps at once - - if (ct1 GT 0) then $ - rm_spfluxcorr_v5, objname[i1], adderr=adderr, combinedir=outdir, $ - bestexpnum=[bestexp_b1,bestexp_r1] ;expnum[0,ibest] - if (ct2 GT 0) then $ - rm_spfluxcorr_v5, objname[i2], adderr=adderr, combinedir=outdir, $ - bestexpnum=[bestexp_b2,bestexp_r2] ;expnum[0,ibest] - - ; Track memory usage - thismem = memory() - maxmem = maxmem > thismem[3] - splog, 'Max memory usage = ', string(maxmem/1e6,format='(f7.1)'), ' MB' - - ;---------- - ; Close plot file - S/N plots are then put in the PLOTSNFILE file. - - if (keyword_set(plotfile) AND NOT keyword_set(xdisplay)) then dfpsclose - endif else splog, 'Skip flux-corretion' - - - ;---------- - ; Co-add the fluxed exposures - - ii = where(score GT minsn2, ct) - if (ct GT 0) then begin - ; set values for wavemin and wavemax so that all coadded plates/spectra are - ; on the same wavelength grid; wavemin and wavemax are Log-10 wavelength of - ; the first and last pixel - wavemin=3.5523 & wavemax=4.0171 - rm_spcoadd_v5, objname[ii], combinefile, mjd=thismjd, combinedir=outdir, $ - adderr=adderr, docams=docams, plotsnfile=plotsnfile, $ - bestexpnum=expnum[0,ibest],nofcorr=nofcorr,nodist=nodist, $ - wavemin=wavemin, wavemax=wavemax - endif else $ - splog, 'ABORT: No exposures with SCORE > ' + strtrim(string(minsn2),2) - obj_destroy,configuration - heap_gc ; garbage collection - - ; Track memory usage - thismem = memory() - maxmem = maxmem > thismem[3] - splog, 'Max memory usage = ', string(maxmem/1e6,format='(f7.1)'), ' MB' - - splog, 'Total time for SPCOMBINE = ', systime(1)-stime0, ' seconds', $ - format='(a,f6.0,a)' - splog, 'Successful completion of SPCOMBINE at ' + systime() - - ;---------- - ; Close log files and change to original directory - - if (keyword_set(logfile)) then splog, /close - cd, origdir - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/rm/rm_spec2mag.pro b/pro/rm/rm_spec2mag.pro deleted file mode 100644 index 9cc1042f4..000000000 --- a/pro/rm/rm_spec2mag.pro +++ /dev/null @@ -1,74 +0,0 @@ -;+ -; NAME: -; rm_spec2mag -; -; PURPOSE: -; Given a single input spectrum, return synthetic AB magnitude in SDSS -; ugriz bands using filter_thru in idlutils. -; -; CALLING SEQUENCE: -; -; synmag = rm_spec2mag(objwave, objflux, objivar, synmag_err=synmag_err, ntrial=) -; -; INPUTS: -; -; objwave - vaccum wavelength [npix] -; objflux - flux array [npix]; 1d-17 erg/s/cm^2/A -; objivar - inverse variance [npix] -; -; OUTPUTS: -; -; synmag - synthetic SDSS (AB) magnitudes in ugriz [5] -; synmag_err - magnitude errors estimated using Monte Carlo trials -; -; OPTIONAL OUTPUTS: -; -; synflux - synthetic fluxes in ugriz bands, in units of erg/s/cm2/Hz -; synfnu_err - error in synflux, in same units - -function rm_spec2mag, objwave1, objflux1, objivar1, synmag_err=synmag_err, $ - ntrial=ntrial, synflux=synflux, synfnu_err=synfnu_err - - ; number of MC trials in estimating magnitude errors - if ~keyword_set(ntrial) then ntrial=50L - npix = (size(objflux1, /dimens))[0] - - objwave = objwave1 & objflux = objflux1 & objivar = objivar1 - objerr1 = dblarr(npix) - ind = where(objivar1 gt 1d-5) - if ind[0] ne -1 then objerr1[ind] = 1./sqrt(objivar1[ind]) - - flambda2fnu = objwave*objwave / 2.99792e18 - synflux = transpose(filter_thru(objflux*flambda2fnu, waveimg=objwave, $ - mask=(objivar LE 0),/toair)) - synthmag = fltarr(5) - igood = where(synflux GT 0, ngood) - if (ngood GT 0) then $ - synthmag[igood] = -2.5 * alog10(synflux[igood]) - 48.6 + 2.5*17.0 - synflux=synflux*1d-17 - - ; now estiamte magnitude errors with MC trials - objflux = dblarr(npix, ntrial) - objivar = dblarr(npix, ntrial) - for i=0L, ntrial-1 do begin - objivar[*, i] = objivar1 - objflux[*, i] = objflux1 + randomn(seed, npix)*objerr1 - endfor - flambda2fnu = (objwave*objwave / 2.99792e18) # replicate(1,ntrial) - synflux1 = transpose(filter_thru(objflux*flambda2fnu, waveimg=objwave, $ - mask=(objivar LE 0),/toair)) - synthmag1 = fltarr(5,ntrial) - igood = where(synflux1 GT 0, ngood) - if (ngood GT 0) then begin - synthmag1[igood] = -2.5 * alog10(synflux1[igood]) - 48.6 + 2.5*17.0 - endif - synmag_err = (quantile_2d(0.84, synthmag1, dim=2) - $ - quantile_2d(0.16, synthmag1, dim=2) ) * 0.5 - synfnu_err = (quantile_2d(0.84, synflux1, dim=2) - $ - quantile_2d(0.16, synflux1, dim=2) ) * 0.5 * 1d-17 - - ;message, 'stop' - - return, synthmag - -end diff --git a/pro/rm/rm_spflux_v5.pro b/pro/rm/rm_spflux_v5.pro index c55c31f6b..5a52b7d8a 100644 --- a/pro/rm/rm_spflux_v5.pro +++ b/pro/rm/rm_spflux_v5.pro @@ -1,12 +1,12 @@ ;+ ; NAME: -; spflux_v5 +; rm_spflux_v5 ; ; PURPOSE: ; Compute flux-calibration vectors for each CCD+exposure from std stars ; ; CALLING SEQUENCE: -; spflux_v5, objname, [ adderr=, combinedir=, minfracthresh= ] +; rm_spflux_v5, objname, [ adderr=, combinedir=, minfracthresh= ] ; ; INPUTS: ; objname - File names (including path) for spFrame files, all from @@ -256,11 +256,11 @@ function spflux_reject_outliers, medflux, sqivar, loglam endfor ; test - ; mwrfits, medflux, "medflux.fits", /create - ; mwrfits, sqrt(ivar), "medflux.fits" - ; mwrfits, loglam, "medflux.fits" - ; mwrfits, meanflux, "medflux.fits" - ; mwrfits, chi2 , "medflux.fits" + ; mwrfits_named, medflux, "medflux.fits", name='MEDFLUX',/create + ; mwrfits_named, sqrt(ivar), "medflux.fits", name='SQRTIVAR' + ; mwrfits_named, loglam, "medflux.fits", name='LOGLAM' + ; mwrfits_named, meanflux, "medflux.fits", name='MEANFLUX' + ; mwrfits_named, chi2 , "medflux.fits", name='CHI2' ; STOP splog, "CHI2/NDF (rejection)=",tchi2/dof," nbad=", nbadtot @@ -746,7 +746,7 @@ end pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ minfracthresh=minfracthresh,nprox=nprox,useairmass=useairmass, $ bestexpnum=bestexpnum,xyfit=xyfit,loaddesi=loaddesi,plates=plates, $ - legacy=legacy, MWM_fluxer=MWM_fluxer, epoch=epoch;,indf=indf + legacy=legacy, MWM_fluxer=MWM_fluxer, epoch=epoch, fstatus=fstatus;,indf=indf ; nprox = number of nearest std stars to compute fluxing vector @@ -759,6 +759,8 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ if (n_elements(adderr) EQ 0) then adderr = 0.03 nfile = n_elements(objname) + if not keyword_set(fstatus) then fstatus = lonarr(nfile) + fstatus[*] = 1 ;---------- ; Get the list of spectrograph ID and camera names @@ -791,7 +793,7 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ spframe_read, djs_filepath(objname[0], subdirectory=subdir), plugmap=plugmap, hdr=hdr objtype = strtrim(plugmap.objtype,2) iphoto = where((objtype EQ 'SPECTROPHOTO_STD' OR objtype EQ 'REDDEN_STD') $ - AND plugmap.offsetid EQ 1 AND plugmap.badstdmask EQ 0, nphoto) + AND plugmap.offsetid EQ 1 AND plugmap.badstdmask EQ 0, nphoto) ;---------- ; Check if it is a MWM plate @@ -816,6 +818,7 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ if (nphoto EQ 0) then begin splog, 'WARNING: No SPECTROPHOTO or REDDEN stars for flux calibration' + fstatus[*] = -1 return endif @@ -941,8 +944,7 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ ; Reject this star if we don't know its flux. if (plugmap[iphoto[ip]].calibflux[2] LE 0) then begin splog, 'Warning: Rejecting std star in fiber = ', $ - thisfiber, $;iphoto[ip] + 1 + nfiber * (spectroid[0] - 1), $ - ' with unknown calibObj flux' + thisfiber, ' with unknown calibObj flux' qfinal[ip] = 0 endif endif else begin @@ -953,7 +955,9 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ modflux[*,*,ip] = thismodel if (ip EQ 0) then kindx = replicate( create_struct( $ - 'PLATE', 0L, $ + 'FIELDID', 0L, $ + 'CATALOGID',0LL,$ + 'SDSS_ID',0LL,$ 'MJD', 0L, $ 'FIBERID', 0L, $ 'QGOOD', 0, $ @@ -965,9 +969,11 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ 'MRATIVAR', fltarr(npix)), $ nphoto) copy_struct_inx, thisindx, kindx, index_to=ip - kindx[ip].plate = plateid[0] + kindx[ip].FIELDID = plateid[0] kindx[ip].mjd = maxmjd kindx[ip].fiberid = thisfiber + kindx[ip].CATALOGID = plugmap[stdidx].iCATALOGID + kindx[ip].SDSS_ID = plugmap[stdidx].SDSS_ID splog, prelog='' endfor @@ -984,9 +990,7 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ for i=0L, nfile-1 do begin markasbad = (qfinal[ip]) AND (mean(objivar[*,i,ip] GT 0) LT minfracthresh) if (markasbad) then begin - splog, 'Warning: Rejecting std star in fiber = ', $ - thisfiber,$; iphoto[ip] + 1 + nfiber * (spectroid[0] - 1), $ - ' with too many IVAR=0 pixels' + splog, 'Warning: Rejecting std star in fiber = ', thisfiber,' with too many IVAR=0 pixels' qfinal[ip] = 0B endif endfor @@ -994,6 +998,7 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ ifinal = where(qfinal,nfinal) ; This is the list of the good stars if (nfinal EQ 0) then begin splog, 'ABORT: No good fluxing stars!' + fstatus[*] = -1 return endif @@ -1019,8 +1024,7 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ stdidx = iphoto[iworst] thisfiber = plugmap[stdidx].fiberid splog, 'Rejecting std star in fiber = ', $ - thisfiber,$;iphoto[iworst] + 1 + nfiber * (spectroid[0] - 1), $ - ' with chi2=', chi2max + thisfiber,' with chi2=', chi2max chi2list[iworst] = 0 qfinal[iworst] = 0B endwhile @@ -1045,6 +1049,7 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ if (total(qfinal) EQ 0) then begin splog, 'ABORT: No good spectro-photo stars!' + fstatus[*] = -1 return endif @@ -1724,6 +1729,7 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ kindx.mrativar = reform(mrativar[*,ifile,*], npix, nphoto) kindx.loglam = reform(loglam[*,ifile,*], npix, nphoto) kindx.objflux = reform(objflux[*,ifile,*], npix, nphoto) + ; stop and run diagnosis ; message, 'stop here and run diagnosis' @@ -1736,12 +1742,11 @@ pro rm_spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ format='("spFluxcalib-", a2, "-", i8.8, ".fits")'), $ root_dir=combinedir) ;endelse - mwrfits, calibimg, calibfile, hdr, /create - mwrfits, thisset_all, calibfile - mwrfits, kindx, calibfile - mwrfits, thisset_all_sav, calibfile - mwrfits, struct_out, calibfile - + mwrfits_named, calibimg, calibfile, hdr = hdr, name='CALIBIMG', /create + mwrfits_named, thisset_all, calibfile,name='BSPLINE' + mwrfits_named, kindx, calibfile,name='STDSTARS' + mwrfits_named, thisset_all_sav, calibfile,name='BSPLINE_STD' + mwrfits_named, struct_out, calibfile,name='OUTPUT' spawn, ['gzip','-f',calibfile], /noshell splog, prelog='' endfor diff --git a/pro/rm/rm_spflux_v5_old.pro b/pro/rm/rm_spflux_v5_old.pro deleted file mode 100644 index 01f917f86..000000000 --- a/pro/rm/rm_spflux_v5_old.pro +++ /dev/null @@ -1,1504 +0,0 @@ -;+ -; NAME: -; spflux_v5 -; -; PURPOSE: -; Compute flux-calibration vectors for each CCD+exposure from std stars -; -; CALLING SEQUENCE: -; spflux_v5, objname, [ adderr=, combinedir=, minfracthresh= ] -; -; INPUTS: -; objname - File names (including path) for spFrame files, all from -; either spectro-1 or spectro-2, but not both! -; -; OPTIONAL INPUTS: -; adderr - Additional error to add to the formal errors, as a -; fraction of the flux; default to 0.03 (3 per cent) -; combinedir - Directory for output files -; minfracthresh - the threshold for the minimum number of good pixels -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; One output file is written for every input file OBJNAME, -; prefixed with spFluxcalib. It containts the following: -; HDU #0: Calibration image -; HDU #1: Trace-set used to construct the former -; HDU #2: Structure with info on each standard star -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; airtovac -; bspline_bkpts() -; bspline_iterfit() -; bspline_valu() -; combine1fiber -; computechi2() -; correct_dlam -; djs_filepath() -; djs_maskinterp() -; djs_median() -; djs_oplot -; djs_plot -; djs_xyouts -; euler -; ext_odonnell -; fileandpath() -; filter_thru() -; find_nminima() -; get_tai -; mrdfits() -; mwrfits -; pixelmask_bits() -; rebin_spectrum() -; spframe_read -; skymask() -; spflux_read_kurucz() -; splog -; tai2airmass() -; wavevector() -; -; INTERNAL SUPPORT ROUTINES: -; spflux_masklines() -; spflux_medianfilt() -; spflux_bestmodel() -; spflux_goodfiber() -; spflux_bspline() -; spflux_mratio_flatten() -; spflux_plotcalib -; sxaddpar -; sxpar() -; -; REVISION HISTORY: -; 05-Feb-2004 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -function spflux_balmerfix, calibimg, loglam -; Implement J. Bautista's simple Balmer-line interpolation recipe -; Coded by A. Bolton, 2014-Jan-17 - -; Set up the wavelength ranges to interpolate over: -lamcen = [4860.09, 4339.36, 4100.70, 3969.07, 3888.07] -lam_hw = [35., 35., 35., 30., 25.] -loglam_hi = alog10(lamcen + lam_hw) -loglam_lo = alog10(lamcen - lam_hw) - -n_band = n_elements(lamcen) -n_spec = (size(calibimg))[2] - -new_calibimg = calibimg - -; We'll do this in a plodding loopy way: -for i = 0, n_spec-1 do begin - for j = 0, n_band-1 do begin - ; Test for band coverage: - n_below = total(loglam[*,i] lt loglam_lo[j]) - n_above = total(loglam[*,i] gt loglam_hi[j]) - if ((n_below gt 0) and (n_above gt 0)) then begin - wh_mask = where((loglam[*,i] ge loglam_lo[j]) and (loglam[*,i] le loglam_hi[j])) - idx_lo = min(wh_mask) - 1 - idx_hi = max(wh_mask) + 1 - ndiff = idx_hi - idx_lo - ramp_up = findgen(ndiff+1) / float(ndiff) - new_calibimg[idx_lo:idx_hi,i] = $ - calibimg[idx_hi,i] * ramp_up + calibimg[idx_lo,i] * (1. - ramp_up) - endif - endfor -endfor - -return, new_calibimg -end -;------------------------------------------------------------------------------ -; Create a mask of 1's and 0's, where wavelengths that should not be used -; for fluxing (like near stellar features) are masked. -; 0 = not near lines, 1 = near lines -; HWIDTH = half width in log-wavelength for masking stellar lines - -function spflux_masklines, loglam, hwidth=hwidth, stellar=stellar, $ - telluric=telluric - - if (NOT keyword_set(hwidth)) then $ - hwidth = 5.7e-4 ; Default is to mask +/- 5.7 pix = 400 km/sec - - mask = bytarr(size(loglam,/dimens)) - - if (keyword_set(stellar)) then begin - starwave = [ $ - 3830.0 , $ ; ? (H-7 is at 3835 Ang) - 3889.0 , $ ; H-6 - 3933.7 , $ ; Ca_k - 3968.5 , $ ; Ca_H (and H-5 at 3970. Ang) - 4101.7 , $ ; H-delta - 4300. , $ ; G-band - 4305. , $ ; G-band - 4310. , $ ; more G-band - 4340.5 , $ ; H-gamma - 4861.3 , $ ; H-beta - 5893.0 , $ ; Mg - 6562.8 , $ ; H-alpha - 8500.8 , $ - 8544.6 , $ - 8665.0 , $ - 8753.3 , $ - 8866.1 , $ - 9017.5 , $ - 9232.0 ] - airtovac, starwave - - for i=0L, n_elements(starwave)-1 do begin - mask = mask OR (loglam GT alog10(starwave[i])-hwidth $ - AND loglam LT alog10(starwave[i])+hwidth) - endfor - endif - - if (keyword_set(telluric)) then begin - tellwave1 = [6850., 7150., 7560., 8105., 8930.] - tellwave2 = [6960., 7350., 7720., 8240., 9030.] - for i=0L, n_elements(tellwave1)-1 do begin - mask = mask OR (loglam GT alog10(tellwave1[i]) $ - AND loglam LT alog10(tellwave2[i])) - endfor - endif - - return, mask -end -;------------------------------------------------------------------------------ -; Divide the spectrum by a median-filtered spectrum. -; The median-filtered version is computed ignoring stellar absorp. features. - -function spflux_medianfilt, loglam, objflux, objivar, width=width, $ - newivar=newivar, _EXTRA=KeywordsForMedian - - ndim = size(objflux, /n_dimen) - dims = size(objflux, /dimens) - npix = dims[0] - if (ndim EQ 1) then nspec = 1 $ - else nspec = dims[1] - - ;---------- - ; Loop over each spectrum - - medflux = 0 * objflux - if (arg_present(objivar)) then newivar = 0 * objivar - for ispec=0L, nspec-1 do begin - - ; For the median-filter, ignore points near stellar absorp. features, - ; but keep points near telluric bands. - qgood = 1 - spflux_masklines(loglam[*,ispec], /stellar) - - ; Median-filter, but skipping masked points - igood = where(qgood, ngood) - thisback = fltarr(dims[0]) - if (ngood GT 1) then begin - thisback[igood] = djs_median(objflux[igood,ispec], width=width, $ - _EXTRA=KeywordsForMedian) - endif - thisback = djs_maskinterp(thisback, (qgood EQ 0), /const) - - ; Force the ends of the background to be the same as the spectrum, - ; which will force the ratio of the two to be unity. - hwidth = ceil((width-1)/2.) - thisback[0:hwidth] = objflux[0:hwidth,ispec] - thisback[npix-1-hwidth:npix-1] = objflux[npix-1-hwidth:npix-1,ispec] - czero2 = where(thisback eq 0., count2) - if count2 gt 0 then thisback[czero2] = 1. - medflux[*,ispec] = objflux[*,ispec] / thisback - if (arg_present(objivar)) then $ - newivar[*,ispec] = objivar[*,ispec] * thisback^2 - endfor - - return, medflux -end -;------------------------------------------------------------------------------ -function spflux_bestmodel, loglam, objflux, objivar, dispimg, kindx=kindx1, $ - plottitle=plottitle - - filtsz = 99 ; ??? - cspeed = 2.99792458e5 - - ndim = size(objflux, /n_dimen) - dims = size(objflux, /dimens) - npix = dims[0] - if (ndim EQ 1) then nspec = 1 $ - else nspec = dims[1] - - ;---------- - ; Median-filter the object fluxes - - medflux = spflux_medianfilt(loglam, objflux, objivar, $ - width=filtsz, /reflect, newivar=medivar) - sqivar = sqrt(medivar) - - ;---------- - ; Mask out the telluric bands - - sqivar = sqivar * (1 - spflux_masklines(loglam, /telluric)) - - ;---------- - ; Load the Kurucz models into memory - - junk = spflux_read_kurucz(kindx=kindx) - nmodel = n_elements(kindx) - - ;---------- - ; Fit the redshift just by using a canonical model - - ifud = where(kindx.teff EQ 6000 AND kindx.g EQ 4 AND kindx.feh EQ -1.5) - if (ifud[0] EQ -1) then $ - message, 'Could not find fiducial model!' - nshift = 20 - logshift = (-nshift/2. + findgen(nshift)) * 1.d-4 - chivec = fltarr(nshift) - for ishift=0L, nshift-1 do begin - modflux = spflux_read_kurucz(loglam-logshift[ishift], $ - dispimg, iselect=ifud) - ; Median-filter this model - medmodel = spflux_medianfilt(loglam, modflux, $ - width=filtsz, /reflect) - for ispec=0L, nspec-1 do begin - chivec[ishift] = chivec[ishift] + computechi2(medflux[*,ispec], $ - sqivar[*,ispec], medmodel[*,ispec]) - endfor - endfor - zshift = (10.d^logshift - 1) ; Convert log-lambda shift to redshift - zpeak = find_nminima(chivec, zshift, errcode=errcode) - splog, 'Best-fit velocity for std star = ', zpeak * cspeed, ' km/s' - if (errcode NE 0) then $ - splog, 'Warning: Error code ', errcode, ' fitting std star' - - ;---------- - ; Generate the Kurucz models at the specified wavelengths + dispersions, - ; using the best-fit redshift - - modflux = spflux_read_kurucz(loglam-alog10(1.+zpeak), dispimg) - - ;---------- - ; Loop through each model, computing the best chi^2 - ; as the sum of the best-fit chi^2 to each of the several spectra - ; for this same object. - ; We do this after a median-filtering of both the spectra + the models. - - chiarr = fltarr(nmodel,nspec) - chivec = fltarr(nmodel) - for imodel=0L, nmodel-1 do begin - ; Median-filter this model - medmodel = spflux_medianfilt(loglam, modflux[*,*,imodel], $ - width=filtsz, /reflect) - - for ispec=0L, nspec-1 do begin - chiarr[imodel,ispec] = computechi2(medflux[*,ispec], $ - sqivar[*,ispec], medmodel[*,ispec]) - endfor - chivec[imodel] = total(chiarr[imodel,*]) - endfor - - ;---------- - ; Return the best-fit model - - minchi2 = min(chivec, ibest) - dof = total(sqivar NE 0) - splog, 'Best-fit total chi2/DOF = ', minchi2/(dof>1) - bestflux = modflux[*,*,ibest] - - ;---------- - ; Compute the chi^2 just around the stellar absorp. lines - ; for the best-fit model star - - mlines = spflux_masklines(loglam, hwidth=12e-4, /stellar) - linesqivar = sqivar * mlines - linechi2 = 0. - for ispec=0L, nspec-1 do begin - thismodel = spflux_medianfilt(loglam, modflux[*,ispec,ibest], $ - width=filtsz, /reflect) - linechi2 = linechi2 + computechi2(medflux[*,ispec], $ - linesqivar[*,ispec], thismodel) - endfor - linedof = total(linesqivar NE 0) - splog, 'Best-fit line chi2/DOF = ', linechi2/(linedof>1) - - ;---------- - ; Compute the median S/N for all the spectra of this object, - ; and for those data just near the absorp. lines - - sn_median = median(objflux * sqrt(objivar)) - indx = where(mlines, ct) - if (ct GT 1) then $ - linesn_median = median(objflux[indx] * sqrt(objivar[indx])) $ - else $ - linesn_median = 0. - splog, 'Full median S/N = ', sn_median - splog, 'Line median S/N = ', linesn_median - - kindx1 = create_struct(kindx[ibest], $ - 'IMODEL', ibest, $ - 'Z', zpeak, $ - 'SN_MEDIAN', sn_median, $ - 'CHI2', minchi2, $ - 'DOF', dof, $ - 'LINESN_MEDIAN', linesn_median, $ - 'LINECHI2', linechi2, $ - 'LINEDOF', linedof) - - ;---------- - ; Plot the filtered object spectrum, overplotting the best-fit Kurucz model - - ; Select the observation to plot that has the highest S/N, - ; and one that goes blueward of 4000 Ang. - snvec = total(objflux * sqrt(objivar), 1) $ - * (10.^loglam[0,*] LT 4000 OR 10.^loglam[npix-1,*] LT 4000) - junk = max(snvec, iplot) ; Best blue exposure - - snvec = total(objflux * sqrt(objivar), 1) $ - * (10.^loglam[0,*] GT 8600 OR 10.^loglam[npix-1,*] GT 8600) - junk = max(snvec, jplot) ; Best red exposure - - csize = 0.85 - djs_plot, [3840., 4120.], [0.0, 1.4], /xstyle, /ystyle, /nodata, $ - xtitle='Wavelength [Ang]', ytitle='Normalized Flux', $ - title=plottitle - if (iplot[0] NE -1) then begin - djs_oplot, 10^loglam[*,iplot], medflux[*,iplot] - djs_oplot, 10^loglam[*,iplot], medmodel[*,iplot], color='red' - endif - xyouts, 3860, 1.25, kindx1.model, charsize=csize - djs_xyouts, 4000, 0.3, charsize=csize, $ - string(minchi2/(dof>1), format='("Total \chi^2/DOF=",f5.2)') - djs_xyouts, 4000, 0.2, charsize=csize, $ - string(linechi2/(linedof>1), format='("Lines \chi^2/DOF=",f5.2)') - djs_xyouts, 3860, 0.1, string(kindx1.feh, kindx1.teff, kindx1.g, $ - zpeak*cspeed, $ - format='("Fe/H=", f4.1, " T_{eff}=", f6.0, " g=", f3.1, " cz=",f5.0)'), $ - charsize=csize - - djs_plot, [8440., 9160.], [0.0, 1.4], /xstyle, /ystyle, /nodata, $ - xtitle='Wavelength [Ang]', ytitle='Normalized Flux' - if (jplot[0] NE -1) then begin - djs_oplot, 10^loglam[*,jplot], medflux[*,jplot] - djs_oplot, 10^loglam[*,jplot], medmodel[*,jplot], color='red' - endif - - return, bestflux -end -;------------------------------------------------------------------------------ -function spflux_goodfiber, pixmask - qgood = ((pixmask AND pixelmask_bits('NOPLUG')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('BADTRACE')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('BADFLAT')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('BADARC')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('MANYBADCOLUMNS')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('NEARWHOPPER')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('MANYREJECTED')) EQ 0) - return, qgood -end - -;------------------------------------------------------------------------------ -function spflux_bspline, loglam, mratio, mrativar, outmask=outmask, $ - everyn=everyn, airmass=airmass - - isort = sort(loglam) - nord = 3 - - ; Choose the break points using the EVERYN option, but masking - ; out more pixels near stellar features just when selecting them. - mask1 = 1 - spflux_masklines(loglam, hwidth=12.e-4, /stellar) - ii = where(mrativar[isort] GT 0 AND mask1[isort] EQ 1) - bkpt = 0 - fullbkpt = bspline_bkpts(loglam[isort[ii]], everyn=everyn, $ - bkpt=bkpt, nord=nord) - - outmask1 = 0 - if (keyword_set(airmass)) then begin - x2 = airmass[isort] - endif - sset = bspline_iterfit(loglam[isort], mratio[isort], $ - invvar=mrativar[isort], lower=3, upper=3, fullbkpt=fullbkpt, $ - maxrej=ceil(0.05*n_elements(indx)), outmask=outmask1, nord=nord, $ - x2=x2, npoly=2*keyword_set(airmass), requiren=(everyn-1)>1) - if (max(sset.coeff) EQ 0) then $ - message, 'B-spline fit failed!!' - if (arg_present(outmask)) then begin - outmask = bytarr(size(loglam,/dimens)) - outmask[isort] = outmask1 - endif - - return, sset -end - -;------------------------------------------------------------------------------ -function spflux_mratio_flatten, loglam1, mratio1, mrativar1, pres=pres - - ;-------- - ; Re-form the input data arrays from multi-dimensional to N x M - - ndim = size(loglam1, /n_dimen) - dims = size(loglam1, /dimens) - npix = dims[0] - nobj = n_elements(loglam1) / npix - loglam = reform(loglam1, npix, nobj) - mratio = reform(mratio1, npix, nobj) - mrativar = reform(mrativar1, npix, nobj) - - ;-------- - ; Re-bin the spectra to the same spacing - - minlog1 = min(loglam, max=maxlog1) - newloglam = wavevector(minlog1, maxlog1) - nnewpix = n_elements(newloglam) - - newratio = fltarr(nnewpix, nobj) - newivar = fltarr(nnewpix, nobj) - - for iobj=0L, nobj-1 do begin - isort = sort(loglam[*,iobj]) - combine1fiber, loglam[isort,iobj], mratio[isort,iobj], $ - mrativar[isort,iobj], $ - newloglam=newloglam, newflux=newratio1, newivar=newivar1 - newratio[*,iobj] = newratio1 - newivar[*,iobj] = newivar1 - endfor - - ;-------- - ; Compute the straight weighted mean at each wavelength - ; (Avoid divide-by- zeros.) - - if (ndim EQ 1) then begin - meanratio = (newratio * newivar) / (newivar + (newivar EQ 0)) - endif else begin - denom = total(newivar, 2) - meanratio = total(newratio * newivar, 2) / (denom + (denom EQ 0)) - endelse - - qbadpix = meanratio LE 0 - ibadpix = where(qbadpix, nbadpix) - if (nbadpix GT 0) then newivar[ibadpix,*] = 0 - - ;-------- - ; Actually take this "mean" and turn it into something more like - ; a median, to protect us against standard stars that have bad - ; magnitudes from the imaging. - -; Comment-out ??? -; igoodpix = where(qbadpix EQ 0) -; if (ndim EQ 1) then medratio = newratio $ -; else medratio = djs_median(newratio, 2) -; rescale = median( medratio[igoodpix] / meanratio[igoodpix] ) -; if (rescale LE 0) then begin -; splog, 'Warning: RESCALE = ', rescale -; endif else begin -; meanratio = rescale * meanratio -; splog, 'Rescale factor median/mean = ', rescale -; endelse - - ;-------- - ; Now for each object, compute the polynomial fit of it relative to the mean - - npoly = 3 ; ??? - flatarr = fltarr(npix, nobj) - pres = fltarr(npoly, nobj) - for iobj=0L, nobj-1 do begin - ii = where(newivar[*,iobj] GT 0, ct) - if (ct GT npoly+1) then begin ; At least NPOLY+1 pixels for a fit... - thisloglam = newloglam[ii] - thisratio = newratio[ii,iobj] / meanratio[ii] - thisivar = newivar[ii,iobj] * meanratio[ii]^2 - - ; This fit requires no rejection, because this function falls - ; within an iteration loop that rejects points. - - ; The following is a weighted fit... -; pres1 = poly_fit(thisloglam-3.5d0, thisratio, npoly-1, $ -; measure_errors=1./sqrt(thisivar)) - - ; The following would be an unweighted fit... -; pres1 = poly_fit(thisloglam-3.5d0, thisratio, npoly-1) - - ; The following is an unweighted fit but with outlier-rejection... - poly_iter, thisloglam-3.5d0, thisratio, npoly-1, 3., coeff=pres1 - - flatarr[*,iobj] = poly(loglam[*,iobj]-3.5d0, pres1) - pres[*,iobj] = reform(pres1, npoly) - endif else begin - flatarr[*,iobj] = 1 - pres[*,iobj] = 0 - pres[0,iobj] = 1 - endelse - endfor - - if (ndim GT 1) then $ - pres = reform(pres, [npoly, dims[1:ndim-1]]) - return, reform(flatarr, dims) -end - -;------------------------------------------------------------------------------ -pro spflux_plotcalib, mratiologlam, mratioflux, mrativar, $ - fitloglam, fitflux, fitflux2, logrange=logrange, plottitle=plottitle - - xrange = 10.^logrange - ii = where(fitloglam GE logrange[0] AND fitloglam LE logrange[1]) - yrange = [0.9 * min(fitflux[ii]), 1.1 * max(fitflux[ii])] - if (size(mratioflux, /n_dimen) EQ 1) then nfinal = 1 $ - else nfinal = (size(mratioflux, /dimens))[2] - - djs_plot, xrange, yrange, /xstyle, /ystyle, /nodata, $ - xtitle='Wavelength [Ang]', ytitle='Counts/(10^{-17}erg/cm^2/s/Ang', $ - title=plottitle - for k=0, nfinal-1 do begin - jj = where(mratiologlam[*,0,k] GE logrange[0] $ - AND mratiologlam[*,0,k] LE logrange[1] $ - AND mrativar[*,0,k] GT 0, ct) - if (ct GT 1) then $ - djs_oplot, 10.^mratiologlam[jj,0,k], mratioflux[jj,0,k], psym=3 - endfor - djs_oplot, 10.^fitloglam[ii], fitflux[ii], color='green' - if (total(fitflux2) GT 0) then $ - djs_oplot, 10.^fitloglam[ii], fitflux2[ii], color='red' - - return -end - -;----------------------------------------------------------------------------- -function xy_polyfit, xyfocal, pp - - if size(xyfocal, /n_dim) eq 2 then $ - nnn = (size(xyfocal,/dim))[0] else nnn = 1L - - xyfocal1 = double(reform(xyfocal,nnn,2)) - - result = fltarr(nnn) - - for i=0L, nnn - 1L do $ - result[i] = pp[0] + pp[1]*xyfocal1[i,0] + pp[2]*xyfocal1[i,0]^2 $ - + pp[3]*xyfocal1[i,1] + pp[4]*xyfocal1[i,1]^2 - - if nnn eq 1 then result = result[0] - return, result -end - - -;------------------------------------------------------------------------------ -pro rm_spflux_v5_old, objname, adderr=adderr, combinedir=combinedir, $ - minfracthresh=minfracthresh,nprox=nprox,useairmass=useairmass, $ - bestexpnum=bestexpnum,xyfit=xyfit - - - ; nprox = number of nearest std stars to compute fluxing vector - ; default is to use all good stars (qgood=1) - if not keyword_set(nprox) then nprox = 0 - nprox_ori = nprox - - - if (not keyword_set(minfracthresh)) then minfracthresh=0.80 - if (n_elements(adderr) EQ 0) then adderr = 0.03 - nfile = n_elements(objname) - - ;---------- - ; Get the list of spectrograph ID and camera names - - plateid = lonarr(nfile) - mjd = lonarr(nfile) - camname = strarr(nfile) - expnum = lonarr(nfile) - spectroid = lonarr(nfile) - npixarr = lonarr(nfile) - for ifile=0, nfile-1 do begin - spframe_read, objname[ifile], hdr=hdr - plateid[ifile] = strtrim(sxpar(hdr, 'PLATEID'),2) - mjd[ifile] = strtrim(sxpar(hdr, 'MJD'),2) - camname[ifile] = strtrim(sxpar(hdr, 'CAMERAS'),2) - spectroid[ifile] = strmid(camname[ifile],1,1) - expnum[ifile] = sxpar(hdr, 'EXPOSURE') - npixarr[ifile] = sxpar(hdr, 'NAXIS1') - endfor - maxmjd = max(mjd) - - ;---------- - ; Figure out which objects are F stars. - ; Assume that the plug map is the same for all exposures. - - spframe_read, objname[0], plugmap=plugmap, hdr=hdr - objtype = strtrim(plugmap.objtype,2) - iphoto = where((objtype EQ 'SPECTROPHOTO_STD' OR objtype EQ 'REDDEN_STD') $ - AND plugmap.offsetid EQ 1, nphoto) - if (nphoto EQ 0) then begin - splog, 'WARNING: No SPECTROPHOTO or REDDEN stars for flux calibration' - return - endif - - ;---------- - ; Read the raw F-star spectra - - npix = max(npixarr) - nfiber = n_elements(plugmap) ; Number of fibers in one spectrograph - loglam = fltarr(npix, nfile, nphoto) - objflux = fltarr(npix, nfile, nphoto) - objivar = fltarr(npix, nfile, nphoto) - dispimg = fltarr(npix, nfile, nphoto) - airmass = fltarr(npix, nfile, nfiber) - for ifile=0L, nfile-1 do begin - spframe_read, objname[ifile], iphoto, wset=wset1, loglam=loglam1, $ - objflux=objflux1, objivar=objivar1, dispimg=dispimg1, $ - mask=mask1, hdr=hdr1, adderr=adderr - - ; Compute the airmass for every pixel of every object - ; (every pixel is the same, of course) - get_tai, hdr1, tai_beg, tai, tai_end - for j=0, nfiber-1 do $ - ;; Modified the following line to avoid zero value in airmass - ;airmass[0:npixarr[ifile]-1,ifile,j] = tai2airmass(plugmap[j].ra, plugmap[j].dec, tai=tai) - airmass[*,ifile,j] = tai2airmass(plugmap[j].ra, plugmap[j].dec, tai=tai) - - ; Make a map of the size of each pixel in delta-(log10-Angstroms). - ; Re-normalize the flux to ADU/(dloglam). - ; Re-normalize the dispersion from /(raw pixel) to /(new pixel). - correct_dlam, objflux1, objivar1, wset1, dlam=dloglam - correct_dlam, dispimg1, 0, wset1, dlam=dloglam, /inverse - - ; Mask pixels on bad fibers - objivar1 = objivar1 * spflux_goodfiber(mask1) - - loglam[0:npixarr[ifile]-1,ifile,*] = loglam1 - ;it wont do having a tail of zeros in the wavelength so add some dummy values - if (npix GT npixarr[ifile]) then begin - dllam=loglam1[npixarr[ifile]-1,*]-loglam1[npixarr[ifile]-2,*] - for j=0, nphoto-1 do $ - loglam[npixarr[ifile]:*,ifile,j] = loglam1[npixarr[ifile]-1,j]+dllam[0,j]*(1+findgen(npix-npixarr[ifile])) - endif - objflux[0:npixarr[ifile]-1,ifile,*] = objflux1 - ;hopefully the inverse variance of 0 of non-filled objects will indicate the uselessness - ; of the extra - objivar[0:npixarr[ifile]-1,ifile,*] = skymask(objivar1, mask1, mask1) - dispimg[0:npixarr[ifile]-1,ifile,*] = dispimg1 - endfor - - ;---------- - ; Keep track of which F stars are good - - qfinal = bytarr(nphoto) + 1B - - ;---------- - ; For each star, find the best-fit model. - - !p.multi = [0,2,3] - modflux = 0 * objflux - for ip=0L, nphoto-1 do begin - thisfiber = iphoto[ip] + 1 + nfiber * (spectroid[0] - 1) - splog, prelog='Fiber '+string(thisfiber,format='(I4)') - - plottitle = 'PLATE=' + string(plateid[0], format='(i4.4)') $ - + ' MJD=' + string(maxmjd, format='(i5.5)') $ - + ' Spectro-Photo Star' $ - + ' Fiber ' + strtrim(thisfiber,2) - - ; Find the best-fit model -- evaluated for each exposure [NPIX,NEXP] - thismodel = spflux_bestmodel(loglam[*,*,ip], objflux[*,*,ip], $ - objivar[*,*,ip], dispimg[*,*,ip], kindx=thisindx, plottitle=plottitle) - - ; Also evaluate this model over a big wavelength range [3006,10960] Ang. - tmploglam = 3.4780d0 + lindgen(5620) * 1.d-4 - tmpdispimg = 0 * tmploglam + 1.0 ; arbitrarily select this resolution - tmpflux = spflux_read_kurucz(tmploglam, tmpdispimg, $ - iselect=thisindx.imodel) - - ; The returned models are redshifted, but not fluxed or - ; reddened. Do that now... we compare data vs. model reddened. - extcurve1 = ext_odonnell(10.^loglam[*,*,ip], 3.1) - thismodel = thismodel $ - * 10.^(-extcurve1 * 3.1 * plugmap[iphoto[ip]].sfd_ebv / 2.5) - extcurve2 = ext_odonnell(10.^tmploglam, 3.1) - tmpflux = tmpflux $ - * 10.^(-extcurve2 * 3.1 * plugmap[iphoto[ip]].sfd_ebv / 2.5) - - ; Now integrate the apparent magnitude for this spectrum, - ; The units of FTHRU are such that m = -2.5*alog10(FTHRU) + (48.6-2.5*17) - ; Note that these computed magnitudes, THISMAG, should be equivalent - ; to THISINDX.MAG in the case of no reddening. - wavevec = 10.d0^tmploglam - flambda2fnu = wavevec^2 / 2.99792e18 - fthru = filter_thru(tmpflux * flambda2fnu, waveimg=wavevec, /toair) - thismag = -2.5 * alog10(fthru) - (48.6-2.5*17) - - ; Compute SCALEFAC = (plugmap flux) / (uncalibrated flux) - if (tag_exist(plugmap, 'CALIBFLUX')) then begin - scalefac = plugmap[iphoto[ip]].calibflux[2] $ - / 10.^((22.5-thismag[2])/2.5) - ; Reject this star if we don't know its flux. - if (plugmap[iphoto[ip]].calibflux[2] LE 0) then begin - splog, 'Warning: Rejecting std star in fiber = ', $ - iphoto[ip] + 1 + nfiber * (spectroid[0] - 1), $ - ' with unknown calibObj flux' - qfinal[ip] = 0 - endif - endif else begin - splog, 'WARNING: No CALIBFLUX for zero-pointing the fluxes' - scalefac = 10.^((thismag[2] - plugmap[iphoto[ip]].mag[2])/2.5) - endelse - thismodel = thismodel * scalefac - - modflux[*,*,ip] = thismodel - if (ip EQ 0) then kindx = replicate( create_struct( $ - 'PLATE', 0L, $ - 'MJD', 0L, $ - 'FIBERID', 0L, $ - 'QGOOD', 0, $ - thisindx, $ - 'LOGLAM', fltarr(npix), $ - 'OBJFLUX', fltarr(npix), $ - 'MODELFLUX', fltarr(npix), $ - 'MRATIO', fltarr(npix), $ - 'MRATIVAR', fltarr(npix)), $ - nphoto) - copy_struct_inx, thisindx, kindx, index_to=ip - kindx[ip].plate = plateid[0] - kindx[ip].mjd = maxmjd - kindx[ip].fiberid = thisfiber - - splog, prelog='' - endfor - !p.multi = 0 - - ;---------- - ; Reject any stars where more than 20% of the pixels marked are bad - ; in any observation. - - fracgood = fltarr(nphoto) - for ip=0L, nphoto-1 do begin - for i=0L, nfile-1 do begin - markasbad = (qfinal[ip]) AND (mean(objivar[*,i,ip] GT 0) LT minfracthresh) - if (markasbad) then begin - splog, 'Warning: Rejecting std star in fiber = ', $ - iphoto[ip] + 1 + nfiber * (spectroid[0] - 1), $ - ' with too many IVAR=0 pixels' - qfinal[ip] = 0B - endif - endfor - endfor - ifinal = where(qfinal,nfinal) ; This is the list of the good stars - if (nfinal EQ 0) then begin - splog, 'ABORT: No good fluxing stars!' - return - endif - - ;---------- - ; Reject any stars with a bad chi^2/DOF either - ; in the full spectrum or in just the absorp. line regions. - ; Do not reject more than half the stars. - - chi2limit = 2.0 ; ??? - chi2list = (kindx.chi2 / (kindx.dof>1)) $ - > (kindx.linechi2 / (kindx.linedof>1)) - chi2list = chi2list + 100 * (kindx.linedof LT 10) ; Bad if < 10 pixels - while (max(chi2list) GT chi2limit AND total(qfinal) GT nphoto/2.) do begin - chi2max = max(chi2list, iworst) - splog, 'Rejecting std star in fiber = ', $ - iphoto[iworst] + 1 + nfiber * (spectroid[0] - 1), $ - ' with chi2=', chi2max - chi2list[iworst] = 0 - qfinal[iworst] = 0B - endwhile - - ;---------- - ; Reject any stars with a very low S/N in the absorp. line regions. - ; Do not reject more than half the stars. - - snlimit = 2.0 ; ??? - ; Do not reject any stars that are already rejected above... - snlist = kindx.linesn_median + (snlimit+1) * (qfinal EQ 0) - while (min(snlist) LT snlimit AND total(qfinal) GT nphoto/2.) do begin - snmin = min(snlist, iworst) - splog, 'Rejecting std star in fiber = ', $ - iphoto[iworst] + 1 + nfiber * (spectroid[0] - 1), $ - ' with median line S/N=', snmin - snlist[iworst] = snlimit + 1 - qfinal[iworst] = 0B - endwhile - - if (total(qfinal) EQ 0) then begin - splog, 'ABORT: No good spectro-photo stars!' - return - endif - - - ;---------- - ; Loop over each exposure, and compute the PCA fit to MRATIO - ; using outlier-rejection. - ; Iterate, rejecting entire stars if they are terrible fits. - - iblue = where(strmatch(camname,'b*'), nblue) - ired = where(strmatch(camname,'r*'), nred) - - - qdone = 0L - iiter = 0L - while (qdone EQ 0) do begin - iiter = iiter + 1 - splog, 'Iteration #', iiter - - ifinal = where(qfinal,nfinal) ; This is the list of the good stars - - ;---------- - ; The MRATIO vectors are the "raw" flux-calib vectors for each expos+CCD - - mmask = modflux GT 0 - mratio = objflux / (modflux*mmask + (1-mmask)) - mrativar = objivar * modflux^2 - flatarr = 0 * mratio - - ; Ignore regions around the stellar features - mrativar = mrativar * (1 - spflux_masklines(loglam, /stellar)) - - ;---------- - ; For each camera (blue or red), divide-out a low-order polynomial from - ; MRATIO each star to get them all to the same mean flux levels. - ; This takes out gross throughput differences between exposures. - ; Also, it will remove the ~5% large-scale spectrophotometry errors - ; between invidual stars, both from spectrograph throughput variations - ; and from slight mis-typing of the stars. - - if (nblue GT 0) then $ - flatarr[*,iblue,ifinal] = spflux_mratio_flatten(loglam[*,iblue,ifinal], $ - mratio[*,iblue,ifinal], mrativar[*,iblue,ifinal], pres=pres_b) - - if (nred GT 0) then $ - flatarr[*,ired,ifinal] = spflux_mratio_flatten(loglam[*,ired,ifinal], $ - mratio[*,ired,ifinal], mrativar[*,ired,ifinal], pres=pres_r) - - mratio[*,*,ifinal] = mratio[*,*,ifinal] / flatarr[*,*,ifinal] - mrativar[*,*,ifinal] = mrativar[*,*,ifinal] * flatarr[*,*,ifinal]^2 - - ;---------- - ; Do the B-spline fits for the blue CCDs. - - if (nblue GT 0) then begin - everyn = nblue * nfinal * 10 - sset_b = spflux_bspline(loglam[*,iblue,ifinal], $ - mratio[*,iblue,ifinal], mrativar[*,iblue,ifinal], $ - everyn=everyn, outmask=mask_b) - endif - - - ;---------- - ; Do the B-spline fits for the red CCDs. - ; Fit a 2-dimension B-spline using the airmass as the 2nd dimension, - ; but only if the airmass spans at least 0.10 and there are at - ; least 3 good stars. - - if (nred GT 0) then begin - everyn = nred * nfinal * 1.5 - if (max(airmass) - min(airmass) GT 0.10 AND nfinal GE 3) then begin ; ??? - ; Get an airmass value for every *pixel* being fit - thisair = airmass[*,ired,iphoto[ifinal]] - endif else begin - thisair = 0 - endelse - sset_r = spflux_bspline(loglam[*,ired,ifinal], $ - mratio[*,ired,ifinal], mrativar[*,ired,ifinal], $ - everyn=everyn, outmask=mask_r, airmass=thisair) - endif - - ;; compare mrativar and outmask, and do some diagnosis - ; message, 'Stop here' - - - ;---------- - ; Find which star has the most pixels rejected, and reject - ; that star if it's bad enough - - fracgood = fltarr(nfinal) - for k=0L, nfinal-1 do begin - if (nblue GT 0) then fracgood[k] += 0.5 * mean(mask_b[*,*,k]) - if (nred GT 0) then fracgood[k] += 0.5 * mean(mask_r[*,*,k]) - endfor - minfrac = min(fracgood, iworst) - if (minfrac LT minfracthresh) then begin - if (nfinal LE nphoto/2.) then begin - splog, 'WARNING: Already rejected ', nphoto-nfinal, ' of ', $ - nphoto, ' std stars' - qdone = 1B - endif else begin - splog, 'Rejecting std star in fiber = ', $ - iphoto[ifinal[iworst]] + 1 + nfiber * (spectroid[0] - 1), $ - ' with fracgood=', minfrac - qfinal[ifinal[iworst]] = 0B - endelse - endif else begin - qdone = 1B ; No other stars to reject - endelse - endwhile - - kindx[ifinal].qgood = 1 - splog, 'Rejected ', nphoto-nfinal, ' of ', nphoto, ' std stars' - - ;---------- - ; if required to construct the fluxing vector for each obj - ; using NPROX nearest good stars - ; then do the preparation here - ; if nprox eq 0 then message, 'Nprox=0 even if specified in spcombine' - - if nprox gt 0 then begin - splog, 'Using NPROX=', nprox, ' nearest std stars for spectro-photometry' - if keyword_set(useairmass) then $ - splog, 'Using NPROX=', nprox, ' with closest airmass' - - ifinal = where(qfinal,nfinal) - nprox = nprox < nfinal ; Hopefully there are more than NPROX good stars in total - - iprox = lonarr(nprox,nfile,nfiber) - iprox_pres = lonarr(nprox,nfile,nfiber) - focal_dist = dblarr(nfinal) - - for ifile=0,nfile - 1L do begin - for j=0, nfiber - 1L do begin - - ; the plugmap structure is the same for all nfile (i.e.,same camera) - focal_dist = sqrt( (plugmap[iphoto[ifinal]].xfocal - plugmap[j].xfocal)^2 $ - + (plugmap[iphoto[ifinal]].yfocal - plugmap[j].yfocal)^2 ) - - ; if we require the closest airmass, then change focal_dist - if keyword_set(useairmass) then begin - focal_dist = abs(airmass[0,ifile,iphoto[ifinal]] - airmass[0,ifile,j]) - endif - - - ; indice of the nearest NPROX good std stars - ; Of course we need to remove the std star itself in the NPROX stars - iprox[*,ifile,j] = ifinal[(sort(focal_dist))[0:nprox-1L]] - iprox_pres[*,ifile,j] = (sort(focal_dist))[0:nprox-1L] - - ind_check = where(iphoto[iprox[*,ifile,j]] eq j, complement=ind_check2) - - if ind_check[0] ne -1 then begin - - splog, iphoto[iprox[ind_check,ifile,j]], j, ' Remove the std star itself' - iprox[ind_check,ifile,j] = ifinal[(sort(focal_dist))[nprox]] - iprox_pres[ind_check,ifile,j] = (sort(focal_dist))[nprox] - - endif - - endfor - endfor - endif - - ;---------- - ; Plot fluxing vectors and their polynomial offsets for individual stars - ; in individual exposures. - - mratfit = 0 * mratio - if (nblue GT 0) then $ - mratfit[*,iblue,ifinal] = bspline_valu(loglam[*,iblue,ifinal], sset_b) - if (nred GT 0) then $ - if (tag_exist(sset_r,'NPOLY')) then $ - mratfit[*,ired,ifinal] = bspline_valu(loglam[*,ired,ifinal], sset_r, $ - x2=airmass[*,ired,iphoto[ifinal]]) $ - else $ - mratfit[*,ired,ifinal] = bspline_valu(loglam[*,ired,ifinal], sset_r) - - !p.multi = [0,1,2] - explist = expnum[uniq(expnum, sort(expnum))] - colorvec = ['default','red','green','blue','cyan','magenta','grey'] - xrange = 10^minmax(loglam[*,*,ifinal]) - ii = where(mrativar[*,*,ifinal] GT 0, ct) - if (ct GT 1) then yrange = minmax((mratfit[*,*,ifinal])[ii]) $ - else yrange = minmax(mratfit[*,*,ifinal]) - plottitle = 'PLATE=' + string(plateid[0], format='(i4.4)') $ - + ' MJD=' + string(maxmjd, format='(i5.5)') - for iexp=0, n_elements(explist)-1 do begin - djs_plot, [0], [0], xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - /nodata, xtitle='Wavelength [Ang]', ytitle='Flux-calib', $ - title=plottitle+' Exp #' + string(explist[iexp], format='(i8.8)') - kk = where(expnum EQ explist[iexp], kct) ; blue+red files for this exp - for j=0, nfinal-1 do begin - thiscolor = colorvec[j MOD n_elements(colorvec)] - for k=0, kct-1 do begin - djs_oplot, 10^loglam[*,kk[k],ifinal[j]], $ -; mratio[*,kk[k],ifinal[j]] * flatarr[*,kk[k],ifinal[j]], $ - mratio[*,kk[k],ifinal[j]], $ - psym=3, color=thiscolor -; djs_oplot, 10^loglam[*,kk[k],ifinal[j]], $ -;; mratfit[*,kk[k],ifinal[j]] * flatarr[*,kk[k],ifinal[j]], $ -; mratfit[*,kk[k],ifinal[j]], $ -; color=thiscolor - endfor - djs_xyouts, 0.9*xrange[0]+0.1*xrange[1], $ - yrange[0] + (j+1)*(yrange[1]-yrange[0])/(nfinal+1), $ - 'Fiber '+strtrim(iphoto[ifinal[j]]+(spectroid[0]-1)*nfiber,2), $ - color=thiscolor - endfor - endfor - !p.multi = 0 - - ;---------- - ; Construct the final (B-splined) flux-calibration vectors - - for ifile=0, nfile-1 do begin - splog, prelog=fileandpath(objname[ifile]) - ; Is this a blue CCD? - ii = where(ifile EQ iblue, ct) - if (ct EQ 1) then begin - thisloglam = loglam[*,ifile,ifinal] - thisset = sset_b - - ; This is a bug, flatarr[NPIX,NFILE,NSTD] and pres_b[NPOLY=3,NBLUE,NGOOD] - ; so they should be quoted with different indices - ; thisflatarr = flatarr[*,iblue[ii],ifinal] - ; thispres = pres_b[*,ii,ifinal] - - ; This is the corrected one -- Jan 23, 2014, Yue Shen - thisflatarr = flatarr[*,iblue[ii],ifinal] - thispres = pres_b[*,ii,*] - - endif - - ; Is this a red CCD? - ii = where(ifile EQ ired, ct) - if (ct EQ 1) then begin - thisloglam = loglam[*,ifile,ifinal] - thisset = sset_r - - ; This is a bug, flatarr[NPIX,NFILE,NSTD] and pres_b[NPOLY=3,NRED,NGOOD] - ; so they should be quoted with different indices - ;thisflatarr = flatarr[*,ired[ii],ifinal] - ;thispres = pres_r[*,ii,ifinal] - - ; This is the corrected one -- Jan 23, 2014, Yue Shen - thisflatarr = flatarr[*,ired[ii],ifinal] - thispres = pres_r[*,ii,*] - - endif - - thismratio = mratio[*,ifile,ifinal] - thismrativar = mrativar[*,ifile,ifinal] - if (tag_exist(thisset,'NPOLY')) then $ - x2 = airmass[*,ifile,iphoto[ifinal]] $ - else $ - x2 = 0 - - ; run some diagnosis here - ;message, 'Stop and run diagnosis' - - ; store the mean B-spline set - thisset_all_sav = thisset - - ; Evaluate the B-spline for the stars at their measured wavelengths - ; in this exposure, then modulated by the mean FLATARR - ; for the stars in this exposure. - ; We re-fit the B-spline to exactly recover what we had before, - ; just modulated by the lower-order polynomial FLATARR. - - logmin = min(thisloglam[where(thismrativar GT 0)], max=logmax) - tmploglam = wavevector(logmin, logmax) - flatarr_mean = 0 * tmploglam - for i=0L, nfinal-1 do $ - flatarr_mean = flatarr_mean $ - + poly(tmploglam-3.5d0, thispres[*,0,i]) / nfinal - - ; Rather than re-generating the B-spline, I'll simply cheat and - ; multiply the B-spline coefficients at their wavelengths. - ; This is a bit of a hack, since there are NORD more values - ; for FULLBKPT than there are for COEFF, so there's not exactly - ; a 1-to-1 mapping between the two. - tmpmult = interpol(flatarr_mean, tmploglam, thisset.fullbkpt) - tmpmult = tmpmult[1:n_elements(thisset.fullbkpt)-thisset.nord] - if (keyword_set(x2)) then begin - for ipoly=0, thisset.npoly-1 do $ - thisset.coeff[ipoly,*] = thisset.coeff[ipoly,*] * tmpmult - for ipoly=0, thisset.npoly-1 do $ - thisset.icoeff[ipoly,*] = thisset.icoeff[ipoly,*] * tmpmult - endif else begin - thisset.coeff = thisset.coeff * tmpmult - thisset.icoeff = thisset.icoeff * tmpmult - endelse - - if (keyword_set(x2)) then begin - x2_min = min(x2, max=x2_max) - splog, 'Exposure ', objname[ifile], $ - ' spans airmass range ', x2_min, x2_max - tmpflux1 = bspline_valu(tmploglam, thisset, x2=x2_min+0*tmploglam) - tmpflux2 = bspline_valu(tmploglam, thisset, x2=x2_max+0*tmploglam) - endif else begin - tmpflux1 = bspline_valu(tmploglam, thisset) - tmpflux2 = 0 - endelse - - ; This is the B-spline set using all good std, rescaled using mean(flatarr) - thisset_all = thisset - - ; Construct the struct storing the B-spline details using all good stds - struct_out = {thisloglam:thisloglam,thismratio:thismratio, $ - thismrativar:thismrativar,thisflatarr:thisflatarr,frac_scat:0.D} - if nprox gt 0 then $ - struct_out=struct_addtags(struct_out,{iprox:iprox,iprox_pres:iprox_pres}) - - ;---------- - ; Make plots of the spectro-photometry data for this exposure only, - ; overplotting the global fit to all exposures in red. - - ; The following info is just used for the plot title - plottitle = 'PLATE=' + string(plateid[ifile], format='(i4.4)') $ - + ' MJD=' + string(mjd[ifile], format='(i5.5)') $ - + ' Spectro-Photo Calib for ' + camname[ifile] + '-' $ - + string(expnum[ifile], format='(i8.8)') - - !p.multi = [0,1,2] - logrange = logmax - logmin - spflux_plotcalib, $ - thisloglam, thismratio, thismrativar, $ - tmploglam, tmpflux1/flatarr_mean, tmpflux2/flatarr_mean, $ - logrange=(logmin+[0,1]*logrange/2.), plottitle=plottitle - spflux_plotcalib, $ - thisloglam, thismratio, thismrativar, $ - tmploglam, tmpflux1/flatarr_mean, tmpflux2/flatarr_mean, $ - logrange=(logmin+[1,2]*logrange/2.) - !p.multi = 0 - - ;---------- - ; Create header cards describing the fit range - - hdr = [''] - sxaddpar, hdr, 'WAVEMIN', 10.^logmin - sxaddpar, hdr, 'WAVEMAX', 10.^logmax - - spframe_read, objname[ifile], loglam=loglam1, objflux=fiberflux - ; Note that fiberflux has not been converted to the proper dispersion yet - - calibimg_new = fltarr((size(loglam1))[1], (size(loglam1))[2]) - ;---------- - ; If required to fluxing using NPROX stars, do the B-spline on mratio, - ; then rescale the B-spline fits - ; using FLATARR at the NPROX star indices - if nprox gt 0 then begin - splog, prelog=fileandpath(objname[ifile]) - - for j=0L, nfiber - 1L do begin - - ; Is this a blue CCD? - ii = where(ifile EQ iblue, ct) - if (ct EQ 1) then begin - thisloglam = loglam[*,ifile,iprox[*,ifile,j]] - thisflatarr = flatarr[*,iblue[ii],iprox[*,ifile,j]] - thispres = pres_b[*,ii,iprox_pres[*,ifile,j]] - endif - - ; Is this a red CCD? - ii = where(ifile EQ ired, ct) - if (ct EQ 1) then begin - thisloglam = loglam[*,ifile,iprox[*,ifile,j]] - thisflatarr = flatarr[*,ired[ii],iprox[*,ifile,j]] - thispres = pres_r[*,ii,iprox_pres[*,ifile,j]] - endif - - thismratio = mratio[*,ifile,iprox[*,ifile,j]] - thismrativar = mrativar[*,ifile,iprox[*,ifile,j]] - - ; Regenerate the B-spline fits for each fiber - ; the result should be almost identical to thisset_all_sav - ; Therefore, I am using the same thisset_all_sav as the B-spline of the mean mratio - ; But if want re-fit the mean mratio of the nprox std, then turn on the statements below - ;; Is this a blue CCD? - ;ii = where(ifile EQ iblue, ct) - ;if (ct EQ 1) then begin - ; everyn = nblue * nprox * 10 - ; thisset = spflux_bspline(loglam[*,iblue,iprox[*,ifile,j]], $ - ; mratio[*,iblue,iprox[*,ifile,j]], mrativar[*,iblue,iprox[*,ifile,j]], $ - ; everyn=everyn, outmask=mask_b_new) - ;endif - - ;; Is this a red CCD? - ;ii = where(ifile EQ ired, ct) - ;if (ct EQ 1) then begin - ; everyn = nred * nprox * 1.5 - ; if (max(airmass) - min(airmass) GT 0.10 AND nprox GE 3) then begin ; ??? - ; ; Get an airmass value for every *pixel* being fit - ; thisair = airmass[*,ired,iphoto[iprox[*,ifile,j]]] - ; endif else begin - ; thisair = 0 - ; endelse - ; thisset = spflux_bspline(loglam[*,ired,iprox[*,ifile,j]], $ - ; mratio[*,ired,iprox[*,ifile,j]], mrativar[*,ired,iprox[*,ifile,j]], $ - ; everyn=everyn, outmask=mask_r_new, airmass=thisair) - ;endif - thisset = thisset_all_sav - - if (tag_exist(thisset,'NPOLY')) then $ - ; corrected bug - ; x2 = airmass[*,ifile,iphoto[iprox[*,ifile,j]]] $ - x2 = airmass[*,ifile,j] $ - else $ - x2 = 0 - - thisset_sav = thisset - - ; Evaluate the B-spline for the stars at their measured wavelengths - ; in this exposure, then modulated by the mean FLATARR - ; for the stars in this exposure. - ; We re-fit the B-spline to exactly recover what we had before, - ; just modulated by the lower-order polynomial FLATARR. - - logmin = min(thisloglam[where(thismrativar GT 0)], max=logmax) - tmploglam = wavevector(logmin, logmax) - flatarr_mean = 0 * tmploglam - for i=0L, nprox-1 do $ - flatarr_mean = flatarr_mean $ - + poly(tmploglam-3.5d0, thispres[*,0,i]) / nprox - - ; Rather than re-generating the B-spline, I'll simply cheat and - ; multiply the B-spline coefficients at their wavelengths. - ; This is a bit of a hack, since there are NORD more values - ; for FULLBKPT than there are for COEFF, so there's not exactly - ; a 1-to-1 mapping between the two. - tmpmult = interpol(flatarr_mean, tmploglam, thisset.fullbkpt) - tmpmult = tmpmult[1:n_elements(thisset.fullbkpt)-thisset.nord] - if (keyword_set(x2)) then begin - for ipoly=0, thisset.npoly-1 do $ - thisset.coeff[ipoly,*] = thisset.coeff[ipoly,*] * tmpmult - for ipoly=0, thisset.npoly-1 do $ - thisset.icoeff[ipoly,*] = thisset.icoeff[ipoly,*] * tmpmult - endif else begin - thisset.coeff = thisset.coeff * tmpmult - thisset.icoeff = thisset.icoeff * tmpmult - endelse - - ; now update the flux-calibration map - calibimg_new[*,j] = float( bspline_valu(loglam1[*,j], thisset, x2=x2) ) - - ;; do some diagnosis here - ;xrange=[3500,6300] & yrange=[0,50] - ;title = 'fiber ' + string(j,format='(i0)') + ' std indx: ' - ;for jstd=0L, nprox-1L do title = title + string(iprox[jstd,j],format='(i0)') + ' ' - ;plot, [0],[0],/nodata,xtitle='Wavelength',xrange=xrange,yrange=yrange,/xsty,/ysty $ - ; , title=title - ;for jstd=0L, nprox-1 do oplot, 10.^loglam[*,iblue,iprox[jstd,j]], $ - ; mratio[*,iblue,iprox[jstd,j]], psym=3 - ;oplot, 10.^loglam1[*,j], calibimg_new[*,j], color=fsc_color('red') - ;oplot, 10.^loglam1[*,j],bspline_valu(loglam1[*,j], thisset_sav, x2=x2) $ - ; ,color=fsc_color('cyan') - - ;;message, 'Stop, and run diagnosis' - ;pause - - endfor - - endif - - ;---------- - ; Compute the new flux-calibration map using a B-spline fit to the flatarr on - ; xfocal/yfocal - ; Rebin thisflatarr to the common wavelength grid - ; do this for both the nprox approach and the xyfit approach - thisflatarr = reform(struct_out.thisflatarr) ; [npix,nfinal] - thisloglam = reform(struct_out.thisloglam) ; [npix,nfinal] - thismrativar = reform(struct_out.thismrativar) - logmin = min(thisloglam[where(thismrativar GT 0)], max=logmax) - tmploglam = wavevector(logmin, logmax) - npix_new = n_elements(tmploglam) - struct_out = struct_addtags(struct_out, {tmploglam:tmploglam}) - - nobj = nfinal - thisflatarr1 = fltarr(npix_new,nobj) - for iobj=0L,nobj-1L do thisflatarr1[*,iobj] $ - = interpol(thisflatarr[*,iobj],thisloglam[*,iobj],tmploglam) - thisflatarr = thisflatarr1 ; [npix_new,nfinal] - thisflatarr_new = 0.*thisflatarr - - if keyword_set(xyfit) then begin - - nobj_new = (size(loglam1))[2] - thisflatarr_all = fltarr(npix_new,nobj_new) - xfocal = plugmap[iphoto[ifinal]].xfocal - yfocal = plugmap[iphoto[ifinal]].yfocal - xfocal_all = plugmap.xfocal & yfocal_all = plugmap.yfocal - ; restrict the values of xfocal_all and yfocal_all not to exceed the range of the std - xmin = min(xfocal, max=xmax) - ymin = min(yfocal, max=ymax) - xfocal_all = xfocal_all > xmin < xmax - yfocal_all = yfocal_all > ymin < ymax - xarr = [[xfocal],[yfocal]] - xarr_all = [[xfocal_all],[yfocal_all]] - - everyn = nobj/3 - isort = sort(xfocal) - nord = 3 - bkpt = 0 - fullbkpt = bspline_bkpts(xfocal[isort],everyn=everyn,bkpt=bkpt, nord=nord) - ; get the new flatarr for the std and all obj - for ipix=0L, npix_new - 1L do begin - - ; Fit a low-order B-spline to xfocal,using yfocal as a 2nd parameter - ; This method has some issues with objects not sampled by the std locations - ; sset = bspline_iterfit(xfocal[isort],thisflatarr[ipix,isort] $ - ; ,lower=0, upper=0, invvar=replicate(1,nobj) $ - ; , fullbkpt=fullbkpt,nord=nord,x2=yfocal[isort],npoly=2 $ - ; , requiren=(everyn-1)>1) - ; thisflatarr_new[ipix,isort]=bspline_valu(xfocal[isort],sset,x2=yfocal[isort]) - ; thisflatarr_all[ipix,*]=bspline_valu(xfocal_all,sset,x2=yfocal_all) - - ; Fit a low-order polynomial thisflatarr[ipix,*]=a0+a1*x+a2*x^2+a3*y+a4*y^2 - pp_guess = [median(thisflatarr[ipix,*]), 0.,0.,0.,0. ] - xyfit_para = mpfitfun('xy_polyfit',xarr, thisflatarr[ipix,*], $ - replicate(1.,nobj), pp_guess, /quiet, status=status) - splog, 'xy_polyfit Status=',status, ' PP=', xyfit_para - thisflatarr_new[ipix,*] = xy_polyfit(xarr, xyfit_para) - thisflatarr_all[ipix,*] = xy_polyfit(xarr_all, xyfit_para) - endfor - ; Add thisflatarr_all for all objects to struct_out - ; Add thisflatarr_new for std later - struct_out = struct_addtags(struct_out, {thisflatarr_all:thisflatarr_all}) - - ; next estimte the new flux calibration image - flatarr_mean = 0 * tmploglam - for iobj=0L, nobj_new - 1L do begin - - ; restore the B-spline on all the normalized mratio - thisset = thisset_all_sav - - flatarr_mean = thisflatarr_all[*, iobj] - tmpmult = interpol(flatarr_mean, tmploglam, thisset.fullbkpt) - tmpmult = tmpmult[1:n_elements(thisset.fullbkpt)-thisset.nord] - - ;message, 'stop and diagnose' - - if (tag_exist(thisset,'NPOLY')) then x2 = airmass[*,ifile,iobj] $ - else x2 = 0 - - if (keyword_set(x2)) then begin - for ipoly=0, thisset.npoly-1 do $ - thisset.coeff[ipoly,*] = thisset.coeff[ipoly,*] * tmpmult - for ipoly=0, thisset.npoly-1 do $ - thisset.icoeff[ipoly,*] = thisset.icoeff[ipoly,*] * tmpmult - endif else begin - thisset.coeff = thisset.coeff * tmpmult - thisset.icoeff = thisset.icoeff * tmpmult - endelse - - ; now update the flux-calibration map - calibimg_new[*,iobj] = float( bspline_valu(loglam1[*,iobj], thisset, x2=x2) ) - - endfor - - endif - - - ;---------- - ; Compute the fractional scatter of the new mratio wrt the truth - if nprox gt 0 or keyword_set(xyfit) then begin - if nprox gt 0 then begin - if nprox gt 1 then begin - for istd=0L,nfinal-1 do thisflatarr_new[*,istd] $ - = mean(thisflatarr[*,iprox_pres[*,ifile,iphoto[ifinal[istd]] ]],dim=2) - endif else begin - for istd=0L,nfinal-1 do thisflatarr_new[*,istd] $ - = thisflatarr[*,iprox_pres[*,ifile,iphoto[ifinal[istd]] ]] - endelse - endif - endif else thisflatarr_new = mean(thisflatarr, dim=2) - struct_out = struct_addtags(struct_out, {thisflatarr_new:thisflatarr_new}) - - thisflatarr_norm = thisflatarr_new / thisflatarr - ratioscat = rm_stddev(thisflatarr_norm, dim=2) - - ; This is the percental dispersion of the fluxing vectors used wrt the truth - ; where the truth is the individual mratio (i.e., which would recover the model - ; std spectrum exactly - struct_out.frac_scat = median(ratioscat) - - ; Now determine the bestexpnum, which has the smallest mratio scatter - ; This is different from the pipeline determination of the best exposure - ; based on the best S/N alone - ; Is this a blue CCD? - ii = where(ifile EQ iblue, ct) - if (ct EQ 1) then begin - if n_elements(bestblueexp) eq 0 then begin - bestblueexp=ifile/2 - frac_scat_sav_blue = struct_out.frac_scat - endif else begin - ; update the best blue exp# if the frac_scat is smaller - if struct_out.frac_scat lt frac_scat_sav_blue then begin - bestblueexp=ifile/2 - frac_scat_sav_blue = struct_out.frac_scat - endif - endelse - endif - ; Is this a red CCD? - ii = where(ifile EQ ired, ct) - if (ct EQ 1) then begin - if n_elements(bestredexp) eq 0 then begin - bestredexp=(ifile-1)/2 - frac_scat_sav_red = struct_out.frac_scat - endif else begin - ; update the best red exp# if the frac_scat is smaller - if struct_out.frac_scat lt frac_scat_sav_red then begin - bestredexp=(ifile-1)/2 - frac_scat_sav_red = struct_out.frac_scat - endif - endelse - endif - ;---------- - - ;---------- - ; Generate the pixel map of the flux-calibration for this exposure+CCD - - if (tag_exist(thisset_all,'NPOLY')) then x2 = airmass[*,ifile,*] $ - else x2 = 0 - calibimg = float( bspline_valu(loglam1, thisset_all, x2=x2) ) - - ; generate a different pixel map using NPROX stars for fluxing - ; or using xyfit - if nprox gt 0 or keyword_set(xyfit) then calibimg = calibimg_new - - ; Here is the very simple Balmer fix, hard-coded for now!!! (ASB 2014-Jan-17) - calibimg = spflux_balmerfix(calibimg, loglam1) - - - ; Set to zero any pixels outside the known flux-calibration region - qbad = loglam1 LT logmin OR loglam1 GT logmax - ibad = where(qbad, nbad) - if (nbad GT 0) then calibimg[ibad] = 0 - - minval = min(calibimg[where(qbad EQ 0)], max=maxval) - if (maxval/minval GT 20. OR minval LT 0) then $ - splog, 'WARNING: Min/max fluxcalib = ', minval, maxval $ - else $ - splog, 'Min/max fluxcalib = ', minval, maxval - - ;---------- - ; Write the output file - - ; Put the Kurucz models for this exposure in the output structure - kindx.modelflux = reform(modflux[*,ifile,*], npix, nphoto) - kindx.mratio = reform(mratio[*,ifile,*], npix, nphoto) - kindx.mrativar = reform(mrativar[*,ifile,*], npix, nphoto) - kindx.loglam = reform(loglam[*,ifile,*], npix, nphoto) - kindx.objflux = reform(objflux[*,ifile,*], npix, nphoto) - - ; stop and run diagnosis - ; message, 'stop here and run diagnosis' - - calibfile = djs_filepath(string(camname[ifile], expnum[ifile], $ - format='("spFluxcalib-", a2, "-", i8.8, ".fits")'), $ - root_dir=combinedir) - mwrfits, calibimg, calibfile, hdr, /create - mwrfits, thisset_all, calibfile - mwrfits, kindx, calibfile - mwrfits, thisset_all_sav, calibfile - mwrfits, struct_out, calibfile - - spawn, ['gzip','-f',calibfile], /noshell - splog, prelog='' - endfor - - ; restore the NPROX value - nprox = nprox_ori - - ; return the best exp number - bestexpnum = [bestblueexp,bestredexp] - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/rm/rm_spfluxcorr_v5.pro b/pro/rm/rm_spfluxcorr_v5.pro index 41acccb7d..e96590a10 100644 --- a/pro/rm/rm_spfluxcorr_v5.pro +++ b/pro/rm/rm_spfluxcorr_v5.pro @@ -413,8 +413,8 @@ pro rm_spfluxcorr_v5, objname, adderr=adderr, combinedir=combinedir, $ root_dir=combinedir) ;endelse splog, 'Writing file ' + corrfile - mwrfits, ymult[*,*,ifile], corrfile, /create - mwrfits, yadd[*,*,ifile], corrfile + mwrfits_named, ymult[*,*,ifile], corrfile, name='MULTCORR', /create + mwrfits_named, yadd[*,*,ifile], corrfile, name='ADDCORR' spawn, ['gzip','-f',corrfile], /noshell endfor diff --git a/pro/rm/rm_spframe_read.pro b/pro/rm/rm_spframe_read.pro deleted file mode 100644 index ac919098e..000000000 --- a/pro/rm/rm_spframe_read.pro +++ /dev/null @@ -1,34 +0,0 @@ -;+ -; NAME -; -; PURPOSE -; -; -; -; - -pro rm_spframe_read,objname,indx,loglam=loglam,objflux=objflux,objivar=objivar $ - , plate=plate - - topdir = getenv('BOSS_SPECTRO_REDUX') - twoddir = getenv('RUN2D') - if not keyword_Set(plate) then plate = 7338 - platestr = string(plate,format='(i4.4)') - - filename = lookforgzip(filepath(objname, root_dir=topdir, $ - subdirectory=[twoddir,platestr]), count=ct) - if ct eq 1 then filename=filename[0] - - - if not keyword_set(adderr) then adderr = 0.03 - spframe_read,filename,indx,objflux=objflux, objivar=objivar $ - , wset=wset, loglam=loglam,dispimg=dispimg, adderr=adderr - - ; Make a map of the size of each pixel in delta-(log10-Angstroms). - ; Re-normalize the flux to ADU/(dloglam). - ; Re-normalize the dispersion from /(raw pixel) to /(new pixel). - correct_dlam, objflux, objivar, wset, dlam=dloglam - correct_dlam, dispimg, 0, wset, dlam=dloglam, /inverse - - -end diff --git a/pro/rm/rm_test_std_dep.pro b/pro/rm/rm_test_std_dep.pro deleted file mode 100644 index 6777f4345..000000000 --- a/pro/rm/rm_test_std_dep.pro +++ /dev/null @@ -1,327 +0,0 @@ -;+ -; NAME: -; rm_check_std_model -; rm_test_std_dep -; -; PURPOSE: -; Various tests upon the flux standards -; Test dependence of std fluxcalib vector on various properties - -pro rm_check_std_model, std_indx=std_indx, stdinfo=stdinfo - - platelist=[7338,7338,7338,7339,7339] - mjdlist=[56660,56664,56669,56683,56686] - - ; default is to return all std - if n_elements(std_indx) eq 0 then std_indx=lindgen(70) - - ; find the fiberid for all std on all epochs - std_fiber=rm_findstd(platelist,mjdlist) - std_fiber=std_fiber[*,std_indx] - - nepoch=n_elements(platelist) & nstd=n_elements(std_indx) - kmodel=lonarr(nstd,nepoch) - qgood=lonarr(nstd,nepoch) - stdinfo=replicate({plate:0L,mjd:0L,fiberid:lonarr(nstd),std_indx:std_indx $ - ,kmodel:lonarr(nstd),qgood:lonarr(nstd)},nepoch) - stdinfo.plate=platelist & stdinfo.mjd=mjdlist - - for i=0L, nepoch-1 do stdinfo[i].fiberid=std_fiber[i,*] - - ; now loop over each epoch to find the kunz model - for i=0L, nepoch - 1L do begin - - rm_expinfo,platelist[i],mjdlist[i],expinfo=expinfo,/diet - ind=where(expinfo.coadded[0,*] eq 1) - expinfo=expinfo[ind] - - for j=0L, nstd - 1L do begin - thisfiber = std_fiber[i,j] - - if thisfiber le 500 then $ - calibfile=(expinfo[0].name)[0] else $ - calibfile=(expinfo[0].name)[1] - calibfile=repstr(calibfile,'spFrame','spFluxcalib') - - calibfile=getenv('BOSS_SPECTRO_REDUX') + '/' + $ - getenv('RUN2D') + '/' + string(platelist[i],format='(i4.4)')+'/' + $ - calibfile + '.gz' - kindx=mrdfits(calibfile,2,/silent) - indx = where(kindx.fiberid eq thisfiber) - - kmodel[j,i]=kindx[indx].imodel - qgood[j,i]=kindx[indx].qgood - endfor - - endfor - stdinfo.kmodel = kmodel - stdinfo.qgood = qgood -end - -; Check the effect of fluxcorr -pro rm_check_fluxcorr,plate,mjd,fiberid,calibdir=calibdir,plotkey=plotkey,yrange=yrange,nsmooth=nsmooth - - if not keyword_set(nsmooth) then nsmooth = 1L - - !p.multi=[0,1,2] - - if not keyword_set(yrange) then yrange=[0,50] - - if not keyword_set(calibdir) then calibdir = $ - getenv('BOSS_SPECTRO_REDUX') + '/' + $ - getenv('RUN2D') + '/' + string(plate,format='(i4.4)')+'/' - - ; Get exposure info - rm_expinfo,plate,mjd,expinfo=expinfo,/diet - ind=where(expinfo.coadded[0,*] eq 1,nexp) - expinfo=expinfo[ind] - - colors = fsc_color(['opposite','red','green','cyan','blue','magenta' $ - ,'gold','dark green','Olive']) - - ; Locate the exposure for the fiber - nfiber=n_elements(fiberid) - for ifib=0,nfiber-1 do begin - thisfiber = fiberid[ifib] - - if thisfiber le 500 then begin - explist = (expinfo.name)[0,*] - thisindx = thisfiber - 1L - endif else begin - explist = (expinfo.name)[1,*] - thisindx = thisfiber - 501L - endelse - - ; loop over the coadded exposures - ; first do the blue ccd - plot,[0],[0],xrange=[3600,6000],yrange=yrange,/xsty,/ysty,/nodata - for iexp=0L,nexp - 1L do begin - - spfile = explist[iexp] + '.gz' - ; read in the raw spectrum - ; the wave dispesion has been corrected - rm_spframe_read,spfile,thisindx,loglam=loglam,objflux=objflux, $ - objivar=objivar,plate=plate - - ; apply flux calibration - calibfile=calibdir+repstr(spfile,'spFrame','spFluxcalib') - calibfac = (mrdfits(calibfile,0,/silent))[*,thisindx] - minval = 0.05 * mean(calibfac) - divideflat, objflux, invvar=objivar, calibfac, minval=minval - if plotkey[0] eq 1 then $ - oplot,10.D^loglam,smooth(objflux,nsmooth),color=colors[iexp],line=0 - - if n_elements(wave) eq 0 then begin - wave = loglam - flux = objflux - ivar = objivar - endif else begin - wave = [ [wave], [loglam] ] - flux = [ [flux], [objflux]] - ivar = [ [ivar], [objivar]] - endelse - - ; apply flux-correction factor - corrfile=calibdir+repstr(spfile,'spFrame','spFluxcorr') - aterm = (mrdfits(corrfile, 0, corrhdr, /silent))[*,thisindx] > 0.7 < 1.3 - bterm = (mrdfits(corrfile, 1,/silent))[*,thisindx] - invertcorr = 1. / aterm - minval = 0.05 / mean(aterm) - nrownative=(size(objflux,/dimens))[0] - divideflat, objflux, invvar=objivar, invertcorr[0:nrownative-1,*], minval=minval - objflux = objflux + bterm - if plotkey[1] eq 1 then $ - oplot,10.D^loglam,smooth(objflux,nsmooth),color=colors[iexp],line=0 - - if plotkey[1] eq 2 then $ - oplot,10.D^loglam,aterm[0:nrownative-1,*],color=colors[iexp],line=0 - - if n_elements(fluxcorr) eq 0 then begin - fluxcorr = objflux - ivarcorr = objivar - endif else begin - fluxcorr = [ [fluxcorr], [objflux]] - ivarcorr = [ [ivarcorr], [objivar]] - endelse - - ;message,'stop and diagnose' - - endfor - items = strmid(explist,8,11) - legend,items, box=0,pos=[0.7,0.9],/norm,color=colors,textcolor=colors - - ; Next do the red ccd - if thisfiber le 500 then begin - explist = (expinfo.name)[2,*] - thisindx = thisfiber - 1L - endif else begin - explist = (expinfo.name)[3,*] - thisindx = thisfiber - 501L - endelse - plot,[0],[0],xrange=[6000,10000.],yrange=yrange,/xsty,/ysty,/nodata - for iexp=0L,nexp - 1L do begin - - spfile = explist[iexp] + '.gz' - ; read in the raw spectrum - ; the wave dispesion has been corrected - rm_spframe_read,spfile,thisindx,loglam=loglam,objflux=objflux, $ - objivar=objivar,plate=plate - - ; apply flux calibration - calibfile=calibdir+repstr(spfile,'spFrame','spFluxcalib') - calibfac = (mrdfits(calibfile,0,/silent))[*,thisindx] - minval = 0.05 * mean(calibfac) - divideflat, objflux, invvar=objivar, calibfac, minval=minval - if plotkey[0] eq 1 then $ - oplot,10.D^loglam,smooth(objflux,nsmooth),color=colors[iexp],line=0 - wave = [ [wave], [loglam[0:4111]] ] - flux = [ [flux], [objflux[0:4111]]] - ivar = [ [ivar], [objivar[0:4111]]] - - ; apply flux-correction factor - corrfile=calibdir+repstr(spfile,'spFrame','spFluxcorr') - aterm = (mrdfits(corrfile, 0, corrhdr, /silent))[*,thisindx] > 0.7 < 1.3 - bterm = (mrdfits(corrfile, 1,/silent))[*,thisindx] - invertcorr = 1. / aterm - minval = 0.05 / mean(aterm) - nrownative=(size(objflux,/dimens))[0] - divideflat, objflux, invvar=objivar, invertcorr[0:nrownative-1,*], minval=minval - objflux = objflux + bterm - if plotkey[1] eq 1 then $ - oplot,10.D^loglam,smooth(objflux,nsmooth),color=colors[iexp],line=0 - if plotkey[1] eq 2 then $ - oplot,10.D^loglam,aterm[0:nrownative-1,*],color=colors[iexp],line=0 - - fluxcorr = [ [fluxcorr], [objflux[0:4111]]] - ivarcorr = [ [ivarcorr], [objivar[0:4111]]] - - endfor - - endfor - - !p.multi = 0 - - if plotkey[0] eq 3 and plotkey[1] eq 3 then begin - - finalwave = 3.6 + findgen(4001)*1d-4 - - combine1fiber, wave, flux, ivar, newloglam=finalwave, newflux=finalflux - combine1fiber, wave, fluxcorr, ivarcorr, newloglam=finalwave, newflux=finalfluxcorr - - plot, 10.^finalwave, finalflux, xrange=[4000, 1d4] - oplot, 10.^finalwave, finalfluxcorr,color=fsc_color('red') - - ; message, 'stop and diagnose' - - endif - -end - -pro rm_test_std_dep, plate, mjd, calibdir=calibdir - - if n_elements(plate) eq 0 then plate = 7338 - if n_elements(mjd) eq 0 then mjd = 56660 - - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + $ - getenv('RUN2D') + '/7338/' - if not keyword_set(calibdir) then calibdir=topdir+'recalib/test4/' - - ; get exp info - rm_expinfo, plate, mjd, expinfo=expinfo - ind = where(expinfo.coadded[0,*] eq 1, nexp) - expinfo = expinfo[ind] - - plotfile = 'stdmratio_dep' + '.ps' - set_plot, 'ps' - dfpsplot, djs_filepath(plotfile, root_dir=getenv('IDLRM_DIR')+'/misc'),$ - /color ;, /landscape - - - for i=0L, nexp - 1L do begin - - ; for each camera - for j=0L, 3L do begin - - spframefile = expinfo[i].name[j] + '.gz' - spframe_read,topdir+spframefile,plugmap=plugmap,hdr=hdr1 - - calibfile = repstr(spframefile,'spFrame','spFluxcalib') - kindx=mrdfits(calibdir+calibfile,2) - struct_out = mrdfits(calibdir+calibfile,4) - - ; keep only the good std - ind = where(kindx.qgood eq 1, ngood) - kindx = kindx[ind] - - ; get airmass info - airmass = expinfo[i].airmass - if strmatch(calibfile,'*calib-b1*') or strmatch(calibfile,'*calib-r1*') then $ - ind_std = kindx.fiberid - 1L else $ - ind_std = kindx.fiberid - 1L - 500L - airmass = airmass[ind_std] - - ; get focal plane info - focal_dist = sqrt(plugmap.xfocal^2 + plugmap.yfocal^2) - focal_dist = focal_dist[ind_std] - - minairmass=min(airmass, max=maxairmass) - - thisloglam=struct_out.thisloglam - thismratio=struct_out.thismratio - thismrativar=struct_out.thismrativar - thisflatarr=struct_out.thisflatarr - - if strmatch(calibfile,'*calib-b*') then begin - xrange=[3600,6300] - yrange=[0,80] - endif else begin - xrange=[5800, 1d4] - yrange=[0,100] - endelse - - cgloadct, 13, /silent - !p.multi = [0,1,2] - - ; plot dependence on airmass - min=minairmass & max=maxairmass - plot,[0],[0],xrange=xrange,/xsty,yrange=yrange,/nodata,title=calibfile,xtitle='Wavelength' $ - , ytitle='Flux Calibration Vector' - - for ii=0,ngood-1L do begin - color_use = floor( (airmass[ii]-min)/(max-min)*255L ) < 255L - yarr = smooth(THISmratio[*,0,ii]*thisflatarr[*,0,ii],10) - oplot,10.^thisloglam[*,0,ii],yarr,color=color_use - endfor - - pos1 = [0.14, 0.92, 0.92, 0.94] - cgcolorbar,/norm, pos = pos1, color=cgcolor('firebrick',255), range=[min, max] $ - , minor=5,ncolors=255 - xyouts, 0.14, 0.87,'airmass',/norm - - ; plot dependence on focal distance to the origin [0,0] - min=min(focal_dist, max=max) - plot,[0],[0],xrange=xrange,/xsty,yrange=yrange,/nodata,title=calibfile,xtitle='Wavelength' $ - , ytitle='Flux Calibration Vector' - - for ii=0,ngood-1L do begin - color_use = floor( (focal_dist[ii]-min)/(max-min)*255L ) < 255L - yarr = smooth(THISmratio[*,0,ii]*thisflatarr[*,0,ii],10) - oplot,10.^thisloglam[*,0,ii],yarr,color=color_use - endfor - - pos1 = [0.14, 0.42, 0.92, 0.44] - cgcolorbar,/norm, pos = pos1, color=cgcolor('firebrick',255), range=[min, max] $ - , minor=5,ncolors=255 - xyouts, 0.14, 0.37,'focal distance',/norm - - cgloadct, 0 - !p.multi = 0 - endfor - - endfor - - dfpsclose - -end - - diff --git a/pro/rm/rm_vdispfit.pro b/pro/rm/rm_vdispfit.pro deleted file mode 100644 index 3d3882f41..000000000 --- a/pro/rm/rm_vdispfit.pro +++ /dev/null @@ -1,447 +0,0 @@ -;+ -; NAME: -; rm_vdispfit -; -; PURPOSE: -; Compute velocity dispersions for galaxy spectra. -; Adapted from vdispfit in idlspec2d -; -; CALLING SEQUENCE: -; vdans = rm_vdispfit(objflux, objivar, [ objloglam, hdr=, zobj=, npoly=, $ -; eigenfile=, eigendir=, columns=, sigma=, sigerr=, yfit=, $ -; plottitle=, dzpix=, z_err=, /return_chisq, /doplot, /debug ]) -; -; INPUTS: -; objflux - Galaxy spectrum (spectra); array of [NPIX,NGALAXY]. -; objivar - Galaxy inverse variance; array of [NPIX,NGALAXY]. -; -; OPTIONAL INPUTS: -; objloglam - Log-10 wavelengths; this can be either an NPIX vector -; if all the galaxy spectra have the same wavelength mapping, -; or an array with the same dimensions as OBJFLUX. -; Either OBJLOGLAM or HDR must be specified. -; hdr - FITS header from which to read COEFF0, COEFF1 for the -; wavelength mapping. -; Either OBJLOGLAM or HDR must be specified. -; zobj - Redshift for each galaxy; default to 0. -; npoly - Number of polynomial terms to append to eigenspectra; -; default to 5. -; eigenfile - File name for eigenvectors; default to 'spEigenVdisp*.fits' -; eigendir - Directory name for EIGENFILE; default to -; '$IDLSPEC2D_DIR/templates' -; columns - Column numbers of the eigenspectra image to use in the -; PCA fit; default to all columns. -; plottitle - Title of plot (if /DOPLOT is set). -; doplot - If set, then make plots. -; debug - If set, then wait for keystroke after plot. -; dzpix - If set, then marginalize over +/- dzpix pixels in -; redshift. Works in conjunction with z_err (below). -; Probably needs more testing! Also, makes the -; interpretation of chisq a bit more fuzzy... -; z_err - Object redshift errors, used in redshift marginalization. -; return_chisq - If set, then append full chi^2 vector/map in vdans -; -; OUTPUTS: -; vdans - Output structure [NGALAXY] with the following elements: -; vdisp : Velocity dispersion in km/sec. -; vdisp_err : Error for VDISP in km/sec. -; vdispchi2 : Minimum chi^2 -; vdispnpix : Number of pixels overlapping the templates -; and used in the fits -; vdispdof : Degrees of freedom = the number of pixels -; overlapping the templates minus the number of -; templates minus the number of polynomial terms -; minus 1 (the last 1 is for the velocity dispersion) -; vdisptheta : Coefficients for each template, where the -; first terms are for the stellar templates -; followed by those for the polynomial terms -; -; OPTIONAL OUTPUTS: -; yfit - Best-fit template (actually, the one with the closest -; velocity dispersion to the best-fit sigma); wavelengths -; outside of those available with the templates have their -; values set to zero [NPIX,NGALAXY] -; -; COMMENTS: -; Note that the wavelength spacing in the galaxy and stellar template spectra -; must be the same. -; -; We currently mask within +/- 280 km/sec of the following wavelengths -; that could have emission lines: -; linelist = [3725.94, 3727.24, 3970.072, 4101.73, 4340.46, $ -; 4861.3632, 4958.911, 5006.843, 6300.32, 6548.05, 6562.801, $ -; 6583.45, 6716.44, 6730.82] -; -; The constructed over-sampled and smoothed eigenspectra are stored -; in a common block between calls if the eigen-vector file is the same. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $IDLSPEC2D_DIR/templates/spEigenVdisp*.fits -; -; PROCEDURES CALLED: -; airtovac -; combine1fiber -; computechi2() -; djs_filepath() -; find_nminima -; mrdfits() -; poly_array() -; splog -; sxpar() -; -; INTERNAL SUPPORT ROUTINES: -; create_vdans() -; vdisp_gconv() -; -; REVISION HISTORY: -; 13-Mar-2001 Written by D. Schlegel, Princeton -; 2010-11 Added redshift marginalization option, Bolton & Shu, U. Utah -;------------------------------------------------------------------------------ -; Create output structure -function create_vdans, nstar - - vdans = create_struct( $ - name = 'VDANS'+strtrim(string(nstar),1), $ - 'vdisp' , 0.0, $ - 'vdisp_err' , 0.0, $ - 'vdispchi2' , 0.0, $ - 'vdispnpix' , 0L, $ - 'vdispdof' , 0L, $ - 'vdisptheta' , fltarr(nstar) ) - - return, vdans -end -;------------------------------------------------------------------------------ -function vdisp_gconv, x, sigma - - ; Special case for no smoothing - if (sigma EQ 0) then return, x - - khalfsz = round(4*sigma+1) - xx = findgen(khalfsz*2+1) - khalfsz - - kernel = exp(-xx^2 / (2*sigma^2)) - kernel = kernel / total(kernel) - - return, convol(x, kernel, /center, /edge_truncate) -end - -;------------------------------------------------------------------------------ -function rm_vdispfit, objflux, objivar, objloglam, $ - hdr=hdr, zobj=zobj, npoly=npoly, $ - eigenfile=eigenfile, eigendir=eigendir, columns=columns, $ - sigma=sigma, sigerr=sigerr, yfit=yfit, $ - plottitle=plottitle, doplot=doplot1, debug=debug, $ - dzpix=dzpix, z_err=z_err, return_chisq=return_chisq - - common com_vdispfit, bigflux, bigloglam, bigmask, nsamp, bigsig, $ - nbigpix, nsig, dsig, nstar, lastfile - - if (NOT keyword_set(objloglam) AND NOT keyword_set(hdr)) then $ - message, 'Must specify either OBJLOGLAM or HDR!' - - if (n_elements(npoly) EQ 0) then npoly = 5 - dims = size(objflux, /dimens) - npixobj = dims[0] - if (size(objflux, /n_dimen) EQ 1) then nobj = 1 $ - else nobj = dims[1] - if (n_elements(zobj) eq 0) then zobj = fltarr(nobj) - if (NOT keyword_set(lastfile)) then lastfile = '' - if (NOT keyword_set(plottitle)) then plottitle = '' - - ; Plot if either /DOPLOT or /DEBUG is set. - if (keyword_set(doplot1)) then doplot = doplot1 - if (keyword_set(debug)) then doplot = 1 - - if (not keyword_set(dzpix)) then dzpix = 0L - if (not keyword_set(return_chisq)) then return_chisq = 0 - if (n_elements(z_err) eq 0) then z_err = replicate(0., nobj) - - ;--------------------------------------------------------------------------- - ; If multiple object flux vectors exist, then call this routine recursively. - - if (nobj GT 1) then begin - sigma = fltarr(nobj) - sigerr = fltarr(nobj) - if (arg_present(yfit)) then yfit = fltarr(npixobj,nobj) - lamdims = size(objloglam, /n_dimens) - for iobj=0, nobj-1 do begin - if (lamdims EQ 1) then thisloglam = objloglam $ - else if (lamdims EQ 2) then thisloglam = objloglam[*,iobj] - vdans1 = rm_vdispfit(objflux[*,iobj], objivar[*,iobj], $ - thisloglam, hdr=hdr, zobj=zobj[iobj], npoly=npoly, $ - eigenfile=eigenfile, eigendir=eigendir, columns=columns, yfit=yfit1, $ - dzpix=dzpix, z_err=z_err[iobj], return_chisq=return_chisq) - if (iobj EQ 0) then vdans = vdans1 $ - else vdans = [[vdans], [vdans1]] - if (keyword_set(yfit)) then yfit[*,iobj] = yfit1 - endfor - return, vdans - endif - - ;---------- - ; Determine the wavelength mapping for the object spectra, - ; which are the same for all of them. - - if (NOT keyword_set(objloglam)) then begin - objloglam0 = sxpar(hdr, 'COEFF0') - objdloglam = sxpar(hdr, 'COEFF1') - objloglam = objloglam0 + dindgen(npixobj) * objdloglam - endif else begin - objdloglam = objloglam[1] - objloglam[0] - endelse - restloglam = objloglam - alog10(1 + zobj[0]) ; De-redshift this! - - ;--------------------------------------------------------------------------- - ; Generate the over-sampled eigen-templates for the stellar spectra. - ; This is saved in a common block between calls. - - ;---------- - ; Find the template file matching EIGENFILE - - if (NOT keyword_set(eigenfile)) then $ - eigenfile = 'spEigenVdisp*.fits' - if (NOT keyword_set(eigendir)) then $ - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - allfiles = findfile(djs_filepath(eigenfile, root_dir=eigendir), count=ct) - if (ct EQ 0) then $ - message, 'Unable to find EIGENFILE matching '+eigenfile - thisfile = allfiles[ (reverse(sort(allfiles)))[0] ] - - if (NOT keyword_set(bigflux) OR (thisfile NE lastfile)) then begin - splog, 'Computing grid of dispersion templates from ' + thisfile - - nsamp = 10 - nsig = 35 - dsig = 25.0 - bigsig = findgen(nsig) * dsig ; in km/sec - - ;---------- - ; Read the stellar templates - - eflux = mrdfits(thisfile, 0, ehdr) - naxis1 = sxpar(ehdr,'NAXIS1') - nstar = sxpar(ehdr,'NAXIS2') > 1 - eloglam0 = sxpar(ehdr, 'COEFF0') - edloglam = sxpar(ehdr, 'COEFF1') - eloglam = eloglam0 + dindgen(naxis1) * edloglam - - ; Pixel size in km/sec for these oversampled (smaller) pixels - cspeed = 2.99792458e5 - pixsz = (10.^(edloglam)-1) * cspeed / nsamp - - ;---------- - ; Re-samples to higher resolution by a factor of NSAMP - - nbigpix = (naxis1 - 1) * nsamp + 1 - bigloglam = eloglam0 + dindgen(nbigpix) * edloglam / nsamp - bigflux = fltarr(nbigpix, nstar, nsig) - - splog, 'Oversampling eigentemplates' - for istar=0, nstar-1 do begin - ; Burles counter... -; print, format='("Template ",i5," of ",i5,a1,$)', $ -; istar+1, nstar, string(13b) - - combine1fiber, eloglam, eflux[*,istar], $ - newloglam=bigloglam, newflux=tmpflux, maxiter=0 - bigflux[*,istar,0] = tmpflux - if (istar EQ 0) then bigmask = tmpflux NE 0 - endfor - - ;---------- - ; Generate array of broadened templates - - splog, 'Broadening eigentemplates' - for isig=1, nsig-1 do begin - for istar=0, nstar-1 do begin - ; Burles counter... - print, format='("Template ",i5," of ",i5,a1,$)', $ - isig*nstar+istar+1, nsig*nstar, string(13b) - - bigflux[*,istar,isig] = $ - vdisp_gconv(bigflux[*,istar,0], bigsig[isig]/pixsz) - endfor - endfor - - ;---------- - ; Mask out the first few and last few pixels, since those would not - ; have been smoothed properly. The masked region is 350 km/sec - ; for a native binning of 70 km/sec. - - bigmask[0:4*nsamp-1] = 0 - bigmask[nbigpix-4*nsamp:nbigpix-1] = 0 - - ;---------- - ; Mask out emission lines, setting bigmask=0 near these wavelengths. - - ; Added [OIII]4364.44 (vac wave), HeII 4687.02 (vac wave) - ; [FeVII]5160, [NI]5201, [Fe XIV]5304 - linelist = [3725.94, 3727.24, 3970.072, 4101.73, 4340.46, 4363.21, 4685.71, $ - 4861.3632, 4958.911, 5006.843, 5158.89, 5199.08, 5302.86, $ - 6300.32, 6548.05, 6562.801, $ - 6583.45, 6716.44, 6730.82] - vaclist = linelist - airtovac, vaclist - vaclist = alog10(vaclist) - mwidth = 6.e-4 ; Mask out any pixels within +/- 420 km/s - for iline=0, n_elements(vaclist)-1 do $ - bigmask = bigmask AND (bigloglam LT vaclist[iline] - mwidth $ - OR bigloglam GT vaclist[iline] + mwidth) - - lastfile = thisfile - endif else begin - print, 'Using previously cached velocity dispersion templates' - endelse - - ;---------- - ; Create the output structure - - vdans = create_vdans(nstar+npoly) - if keyword_set(return_chisq) then vdans = struct_addtags(vdans, $ - {bigsig: fltarr(nsig), chi2arr: fltarr(nsig), bigchi2arr: fltarr(nsig,2L*dzpix+1)}) - - ;---------- - ; Find the pixel numbers to use from the object and the templates - - ; Find the sub-pixel shifts in the object -; subshift = round(((bigloglam[0]-restloglam[0]) / objdloglam MOD 1) * nsamp) - ; Bug fix since the IDL MOD function does the wrong thing for negatives. - subdum = (bigloglam[0]-restloglam[0]) / objdloglam - subshift = round((subdum-floor(subdum)) * nsamp) - indx = subshift + nsamp * lindgen(nbigpix/nsamp) - - if (max(restloglam) LT min(bigloglam[indx]) $ - OR min(restloglam) GT max(bigloglam[indx])) then begin -; splog, 'No wavelength overlap with template' - vdans.vdisp = 0.0 - vdans.vdisp_err = -4L - yfit = fltarr(npixobj) - return, vdans - endif - - if (restloglam[0] LT bigloglam[indx[0]]) then begin - ipixt0 = 0L - junk = min(abs(restloglam - bigloglam[indx[0]]), ipixo0) - endif else begin - ipixo0 = 0L - junk = min(abs(bigloglam[indx] - restloglam[0]), ipixt0) - endelse - - npixcomp = (npixobj - ipixo0 + 1) < (n_elements(indx) - ipixt0) - - indxo = ipixo0 + lindgen(npixcomp) ; Indices for object spectrum - indxt = indx[ipixt0 + lindgen(npixcomp)] ; Indices for template spectra - - ;---------- - ; Add more eigen-templates that represent polynomial terms. - - if (keyword_set(npoly)) then $ - polyflux = poly_array(npixcomp,npoly) - - ;---------- - ; Select which eigenvectors to use (default to all) - - if (n_elements(columns) EQ 0) then iuse = lindgen(nstar) $ - else iuse = columns - nuse = n_elements(iuse) - - ;---------- - ; Fit for chi^2 at each possible velocity dispersion, - ; also marginalizing over redshift range if desired. - - bigchi2arr = fltarr(nsig,2L*dzpix+1L) - acoeffarr = fltarr(nuse+npoly,nsig,2L*dzpix+1L) - for izpix = 0L, 2*dzpix do begin - objsmall = objflux[indxo + izpix - dzpix] - sqivar = sqrt( objivar[indxo + izpix - dzpix] ) * bigmask[indxt] - ; Find the number of masked pixels (at the middle of the redshift range): - if (izpix eq dzpix) then nmasked = long(total(sqivar eq 0.)) - for isig=0, nsig-1 do begin - eigenflux = bigflux[indxt,iuse,isig] - if (keyword_set(npoly)) then eigenflux = [[eigenflux], [polyflux]] - bigchi2arr[isig,izpix] = computechi2(objsmall, sqivar, eigenflux, acoeff=acoeff) - acoeffarr[*,isig,izpix] = acoeff - endfor - endfor - - ;---------- - ; Fit for the dispersion value at the minimum in chi^2, - ; and marginalize over redshift range if requested. - -; findchi2min, bigsig, chi2arr, minchi2, sigma, sigerr, $ -; plottitle=plottitle, doplot=doplot, debug=debug - ; Use only the 3 points nearest the minimum for the fit. - ; If the minimum is at a dispersion of zero, then duplicate the - ; next point as a negative dispersion value simply for the benefit - ; of computing an error, and to prevent an error code from being - ; generated in the call to FIND_NMINIMA. - if (dzpix gt 0) then begin - chi2arr = fltarr(nsig) - ; Convert redshift errors to pixel errors: -;; pix_err = z_err[0] / ((1. + zobj[0]) * objdloglam * alog(10.)) -;; ; Probability weights for the redshift steps: -;; p_of_z = exp(-0.5*(findgen(2L*dzpix+1L)-float(dzpix))^2/pix_err^2) -;; p_of_z = p_of_z / total(p_of_z) - p_of_z = 1. / replicate(float(2*dzpix+1), 2*dzpix+1) - for isig = 0L, nsig-1 do begin -; junk = min(bigchi2arr[isig,*], imin) -; chi2arr[isig] = bigchi2arr[isig,imin] - mchi2 = min(bigchi2arr[isig,*]) - chi2arr[isig] = mchi2 - 2.0*alog(total(p_of_z * $ - exp(-0.5*(bigchi2arr[isig,*]-mchi2)))) - endfor - endif else chi2arr = bigchi2arr - - junk = min(chi2arr, imin) - if (imin GT 0) then $ - sigma = find_nminima(chi2arr, bigsig, $ - width=1.5*dsig, ypeak=minchi2, xerr=sigerr, $ - errcode=errcode, plottitle=plottitle, xtitle=textoidl('\sigma [km/s]'), $ - doplot=doplot, debug=debug) $ - else $ - sigma = find_nminima([chi2arr[1],chi2arr], [-bigsig[1],bigsig], $ - width=1.5*dsig, ypeak=minchi2, xerr=sigerr, $ - errcode=errcode, plottitle=plottitle, doplot=doplot, debug=debug) - vdans.vdisp = sigma > 0 ; Numerical round-off can push this negative - ; Set VDISP_ERR to the error-code if it is non-zero - vdans.vdisp_err = sigerr * (errcode EQ 0) + errcode - vdans.vdispchi2 = minchi2 - vdans.vdispnpix = npixcomp - ; ASB: subtracting masked pixels from dof: - vdans.vdispdof = npixcomp - nstar - npoly - nmasked - 1 ; One dof is for the vel. disp. - if keyword_set(return_chisq) then begin - vdans.bigsig = bigsig - vdans.chi2arr = chi2arr - vdans.bigchi2arr = bigchi2arr - endif - - ;---------- - ; Return the best-fit template (actually, the one with the closest - ; velocity dispersion to the best-fit sigma). - - junk = min(abs(bigsig - sigma), isig) - if (arg_present(yfit)) then begin - eigenflux = bigflux[indxt,iuse,isig] - if (keyword_set(npoly)) then eigenflux = [[eigenflux], [polyflux]] - yfit = fltarr(npixobj) - yfit[indxo] = acoeffarr[*,isig,dzpix] ## eigenflux - endif - vdans.vdisptheta = acoeffarr[*,isig,dzpix] - - ;---------- - ; If the best-fit value is at the maximum dispersion value tested, - ; then we don't really know the answer and should set the error - ; to a large value. - - if (sigma GE max(bigsig)) then begin - vdans.vdisp_err = -3L - endif - - return, vdans -end -;------------------------------------------------------------------------------ diff --git a/pro/rm/rm_vw_scaling.pro b/pro/rm/rm_vw_scaling.pro deleted file mode 100644 index a8d04345f..000000000 --- a/pro/rm/rm_vw_scaling.pro +++ /dev/null @@ -1,163 +0,0 @@ -;+ -; NAME: -; rm_vw_scaling -; -; PURPOSE: -; Perform relative (to the reference spectrum) flux scaling using -; the Van Groningen & Wanders (1992) method; assuming [OIII]5007 flux is constant -; -; -;---------------------------------------------- -function chi2_vw, pp, order=order,diag=diag,wave_range=wave_range -; pp = [fsca, delta_lam, delta_fwhm] - common vw_diff_spec,wave1_c,wave2_c,flux1_c,err1_c,flux2_c,err2_c - - if not keyword_set(wave_range) then wave_range=[4950, 5050] - - wave1=wave1_c & wave2=wave2_c - flux1=flux1_c & err1=err1_c - flux2=flux2_c & err2=err2_c - - ; shift the wavelength in units of SDSS pixel, and adjust the error array - dlnlam=2.30259d-4 - wave2=wave2*(1. - pp[1]*dlnlam) - aa=floor(pp[1]) & ff=(pp[1]-aa) - err2=sqrt( (shift(err2,aa))^2*(1-ff)^2 + (shift(err2,aa+1))^2*ff^2 ) - - ; convolve the input spectrum with delta_fwhm [in pixel] - sig_pix=abs(pp[2])/2.3548 - khalfsz = round (4*sig_pix+1) - xx= findgen(khalfsz*2+1) - khalfsz - kernel = exp(-xx^2/(2*sig_pix^2)) - kernel = kernel/total(kernel) - if pp[2] gt 0 then begin ; broaden spectrum2 - flux2=convol(flux2, kernel, /center, /edge_truncate) - err2=sqrt(convol(err2^2,kernel^2,/center,/edge_truncate) ) - endif - if pp[2] lt 0 then begin ; broaden spectrum1 - flux1=convol(flux1, kernel, /center, /edge_truncate) - err1=sqrt(convol(err1^2,kernel^2,/center,/edge_truncate) ) - endif - - ; map the spectrum2 onto wave1 - flux2=interpol(flux2,wave2,wave1) - err2=interpol(err2,wave2,wave1) - - ; now limit the wavelength range - ind=where(wave1 ge wave_range[0] and wave1 le wave_range[1],npix1) - wave1=wave1[ind] & flux1=flux1[ind] & err1=err1[ind] - flux2=flux2[ind] & err2=err2[ind] - - ;generate the difference spectrum - diff_flux = flux2*pp[0] - flux1 - diff_err = sqrt( (err1)^2 + (err2*pp[0])^2) - - ; fit a low-order polynomial to the difference spectrum - result=poly_fit(wave1,diff_flux,order,measure_errors=diff_err,chisq=chi2, $ - /double,yfit=yfit) - - ;if keyword_set(diag) then begin - ; oplot, wave_c, diff_flux + mean(flux1_c) - ; pause - ;endif - - return, chi2 -end - -pro rm_vw_scaling,wave_ref,flux_ref,err_ref,wave_input,flux_input,err_input, $ - vw_par=vw_par,fsca=fsca,delta_lam=delta_lam,delta_fwhm=delta_fwhm,diag=diag, $ - skymask=skymask - - ; default is not to plot diagnosis - if n_elements(diag) eq 0 then diag=0 - - wave1=wave_ref & flux1=flux_ref & err1=err_ref - wave2=wave_input & flux2=flux_input & err2=err_input - - ; setup common block - common vw_diff_spec,wave1_c,wave2_c,flux1_c,err1_c,flux2_c,err2_c - wave1_c=wave1 & wave2_c=wave2 - flux1_c=flux1 & err1_c=err1 - flux2_c=flux2 & err2_c=err2 - - ; do some diagnosis - if keyword_set(diag) then begin - plot, wave1_c, flux1_c - oplot, wave2_c, flux2_c,color=cgcolor('red') - pause - endif - - ; find the parameter fsca that minimize the chi2 of a low-order polynomial - ; to the differece spectrum - if not keyword_set(wave_range) then wave_range=[4950, 5050] ; default [OIII] region - fcnargs = {order:2,diag:diag,wave_range:wave_range} - start_value=[1.,0.,0.] - parinfo=replicate({value:0.0, fixed:0L, limited:[0L,0L], limits:[0.,0.]}, 3) - - ; for SDSS, the spectral resolution and wavelength solution are constant, so don't fit them - parinfo[1:2].fixed=1L - parinfo.value=start_value - - bestfit=tnmin('chi2_vw',FUNCTARGS=fcnargs,parinfo=parinfo, $ - BESTMIN=bestmin,/autoderivative,/quiet) - vw_par=bestfit ; [fsca, delta_lam, delta_fwhm] - fsca=bestfit[0] ; the scaling factor for the input spectrum - - ;print, vw_par - - if keyword_set(diag) then begin - plot, wave1_c, flux1_c - oplot, wave2_c, flux2_c*fsca,color=cgcolor('cyan') - oplot, wave1_c, flux2_c*fsca-flux1_c+mean(flux1_c),color=cgcolor('blue'),linestyle=2 - pause - endif - -end -;-------------------------------------------- -function rm_vw_fluxing_obj,rm_ID,ref_ep=ref_ep,diag=diag,skymask=skymask, $ - epoch_id=epoch_id - - ; The reference epoch; default is to use the first epoch in epoch_id list - ; make sure this is a good epoch - if n_elements(ref_ep) eq 0 then ref_ep=0 - - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - ; keep only RM targets - target=fibermap[rm_ID] - - ; setup the epochs of the LC - if not keyword_set(epoch_id) then epoch_id=indgen(15) - nepoch=n_elements(epoch_id) - - plate=(target.plate)[epoch_id] - fiber=(target.fiberid)[epoch_id] - mjd=(target.mjd)[epoch_id] - zz=target.zfinal - - calibdir='recalib/' - rm_readspec,plate[ref_ep],fiber[ref_ep],mjd=mjd[ref_ep],calibdir=calibdir, $ - wave=wave_ref,flux=flux_ref,flerr=err_ref - ; shift to restframe - wave_ref=wave_ref/(1.+zz) - fsca_all = dblarr(nepoch)+1. - - ; estimate the scaling factor for all epochs - for i=0L, nepoch-1 do begin - - rm_readspec,plate[i],fiber[i],mjd=mjd[i],calibdir=calibdir, $ - wave=wave_input,flux=flux_input,flerr=err_input - wave_input=wave_input/(1.+zz) - - rm_vw_scaling,wave_ref,flux_ref,err_ref,wave_input,flux_input,err_input, $ - fsca=fsca,diag=diag,skymask=skymask - - fsca_all[i] = fsca - - endfor - - return, fsca_all -end - - - diff --git a/pro/rm/sample_paper_plots.pro b/pro/rm/sample_paper_plots.pro deleted file mode 100644 index 5613ca27b..000000000 --- a/pro/rm/sample_paper_plots.pro +++ /dev/null @@ -1,760 +0,0 @@ -; routines to make plots for the sample characterization paper - - -;------ get target properties -pro comp_target_prop - - file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - target = mrdfits(file,1) - - ; keep only RM QSO targets - target = target[0:848] - nobj = n_elements(target) - - ; store the first SDSS confirmation epoch (either DR7 or DR10) in plate_sdss_first - more_tags = {zsys:0.D, zsys_err:0.D, BOSS_TARGET1:0LL, BOSS_TARGET2:0LL, ANCILLARY_TARGET1:0LL, ANCILLARY_TARGET2:0LL, $ - PRIMTARGET:0LL, SECTARGET:0LL, OTHER_TARGET:'', $ - plate_sdss_first:0L, fiberid_sdss_first:0L, mjd_sdss_first:0L, $ - plate_all:'', fiberid_all:'', mjd_all:'',lambda_eff_all:'', $ - ALLWISE1234:DBLARR(4)-1, ALLWISE1234_ERR:DBLARR(4)-1, ALLWISE_OFFSET:-1.D,$ - UNWISE1234:DBLARR(4)-1, UNWISE1234_ERR:DBLARR(4)-1, UNWISE_OFFSET:-1.D, $ - BAL_FLAG:0L, FIRST_FR_TYPE:-1L, FIRST_Fint_MJY:-1.D, FINT_REST6CM_MJY_OBS:-1.d, $ - LOGFNU2500A_ERGS_OBS:0.d, R_6CM_2500A:-1.d, $ - COMMENT:''} - more_tags = replicate(more_tags, nobj) - target = struct_addtags(target, more_tags) - - - ; add BOSS TARGET BITS - outfile = '/data3/yshen/work/sdssrm_sample_char/dr10_sdssrm.fits' - if file_test(outfile) ne 1 then begin ; create this file is nonexistant - ; file = '/data2/yshen/data/yshen/sdss3/boss/spAll-v5_6_0.fits' ; this was used for the SDSS-RM targeting; the RA/DEC seems incorrect - file = '/data1/yshen/data/sdss3/boss/v5_7_1_dr12/spAll-v5_7_0.fits' ; this was DR12. the RA/DES seems incorrect either - cols0 = ['ra', 'dec', 'plug_ra', 'plug_dec', 'plate'] - cols = ['ra', 'dec', 'plug_ra', 'plug_dec', 'plate', 'fiberid', 'mjd', 'BOSS_TARGET1', 'BOSS_TARGET2', 'ANCILLARY_TARGET1', $ - 'ANCILLARY_TARGET2','lambda_eff', 'zoffset'] - dr10 = hogg_mrdfits(file,1, columns = cols0) - ; the spall files have incorrect astrometry up to ~1"; so use a large matching radius - ; recall the BOSS fiber diameter is 2" - spherematch, target.ra, target.dec, dr10.ra, dr10.dec, 1.0/3600.D, maxmatch=0, match0, match1, dist1 - ; remove spectra from the 3 designated SDSS-RM plates - ind_keep = where( (dr10[match1].plate lt 7338) or (dr10[match1].plate gt 7340) ) - match0 = match0[ind_keep] & match1 = match1[ind_keep] - - dr10 = mrdfits(file,1, rows=match1) ; we can read all columns, columns = cols) - mwrfits, dr10, outfile, /create - endif else begin - dr10 = mrdfits(outfile, 1) - spherematch, target.ra, target.dec, dr10.ra, dr10.dec, 1.0/3600.D, maxmatch=0, match0, match1, dist1 - dr10 = dr10[match1] - endelse - - for i=0L, nobj - 1 do begin - ind = where(match0 eq i, nmatch) - if nmatch gt 0 then begin - mjdarr = dr10[ind].mjd - minmjd = min(mjdarr, ind_m) - ind_sort = sort(mjdarr) - target[i].plate_all = strjoin(string(dr10[ind[ind_sort]].plate, format='(i4.4)'), ' ') - target[i].fiberid_all = strjoin(string(dr10[ind[ind_sort]].fiberid, format='(i4.4)'), ' ') - target[i].mjd_all = strjoin(string(dr10[ind[ind_sort]].mjd, format='(i5.5)'), ' ') - target[i].lambda_eff_all = strjoin(string(dr10[ind[ind_sort]].lambda_eff, format='(i4.4)'), ' ') - if minmjd eq 0 then print, 'zero mjd detected: ' - target[i].BOSS_TARGET1 = dr10[ind[ind_m]].BOSS_TARGET1 - target[i].BOSS_TARGET2 = dr10[ind[ind_m]].BOSS_TARGET2 - target[i].ANCILLARY_TARGET1 = dr10[ind[ind_m]].ANCILLARY_TARGET1 - target[i].ANCILLARY_TARGET2 = dr10[ind[ind_m]].ANCILLARY_TARGET2 - target[i].plate_sdss_first = dr10[ind[ind_m]].plate - target[i].fiberid_sdss_first = dr10[ind[ind_m]].fiberid - target[i].mjd_sdss_first = dr10[ind[ind_m]].mjd - ; no need for these two below, since lambda_eff_all provides all fiber offset info - ;target[i].lambda_eff = dr10[ind[ind_m]].lambda_eff - ;target[i].zoffset = dr10[ind[ind_m]].zoffset - endif - endfor - - ; add DR7 TARGET BITS - outfile = '/data3/yshen/work/sdssrm_sample_char/dr7_sdssrm.fits' - if file_test(outfile) ne 1 then begin ; create the file if nonexistant - file = '/data1/yshen/DR7_spectra/spAll-allquality.fits' - cols0 = ['ra', 'dec', 'plug_ra', 'plug_dec'] - cols = ['ra', 'dec', 'plug_ra', 'plug_dec', 'plate', 'fiberid', 'mjd', 'PRIMTARGET', 'SECTARGET'] - dr7 = hogg_mrdfits(file,1, columns = cols0) - spherematch, target.ra, target.dec, dr7.ra, dr7.dec, 1./3600.D, maxmatch=0, match0, match1, dist1 - dr7 = mrdfits(file,1, rows=match1) ; read all columns - mwrfits, dr7, outfile, /create - endif else begin - dr7 = mrdfits(outfile, 1) - spherematch, target.ra, target.dec, dr7.ra, dr7.dec, 1./3600.D, maxmatch=0, match0, match1, dist1 - dr7 = dr7[match1] - endelse - for i=0L, nobj - 1 do begin - ind = where(match0 eq i, nmatch) - if nmatch gt 0 then begin - mjdarr = dr7[ind].mjd - minmjd = min(mjdarr, ind_m) - ind_sort = sort(mjdarr) - target[i].plate_all = strjoin(string(dr7[ind[ind_sort]].plate,format='(i4.4)'), ' ')+ ' ' + target[i].plate_all - target[i].fiberid_all = strjoin(string(dr7[ind[ind_sort]].fiberid,format='(i4.4)'), ' ')+ ' ' + target[i].fiberid_all - target[i].mjd_all = strjoin(string(dr7[ind[ind_sort]].mjd,format='(i5.5)'), ' ')+ ' ' + target[i].mjd_all - target[i].lambda_eff_all = strjoin(string( replicate(5400., nmatch), format='(i4.4)'), ' ') + ' ' + target[i].lambda_eff_all - - target[i].PRIMTARGET = dr7[ind[ind_m]].PRIMTARGET - target[i].SECTARGET = dr7[ind[ind_m]].SECTARGET - if (target[i].mjd_sdss_first eq 0) or (minmjd lt target[i].mjd_sdss_first) then begin - target[i].plate_sdss_first = dr7[ind[ind_m]].plate - target[i].fiberid_sdss_first = dr7[ind[ind_m]].fiberid - target[i].mjd_sdss_first = dr7[ind[ind_m]].mjd - endif - endif - endfor - - ; add the 2 missed dr7_qcat objects (which should have been included in dr7 spall-allquality but for some reason didn't - ; but last time I checked, they are included in dr7 spall-allquality (probably because these 2 objects had bad astrometry in DR7spall. - ;file = '/data1/yshen/Project/DR7_BH_catalog/catalog/dr7_bh_more.fits' - ;bh = mrdfits(file,1) - ;ind = where(strtrim(target.release) eq 'dr7_qcat') - ;spherematch, target[ind].ra, target[ind].dec, bh.ra, bh.dec, 0.2/3600.D, maxmatch=0, match0, match1, dist1 - ;target[ind[match0]].PRIMTARGET = bh[match1].TARGET_FLAG_TARGET - ;target[ind[match0]].plate_sdss_first = bh[match1].plate - ;target[ind[match0]].fiberid_sdss_first = bh[match1].fiber - ;target[ind[match0]].mjd_sdss_first = bh[match1].mjd - ;for i=0L, 1 do begin - ; target[ind[match0[i]]].plate_all = string(bh[match1[i]].plate,format='(i4.4)')+ ' ' + target[ind[match0[i]]].plate_all - ; target[ind[match0[i]]].fiberid_all = string(bh[match1[i]].fiber,format='(i4.4)')+ ' ' + target[ind[match0[i]]].fiberid_all - ; target[ind[match0[i]]].mjd_all = string(bh[match1[i]].mjd,format='(i5.5)')+ ' ' + target[ind[match0[i]]].mjd_all - ; target[ind[match0[i]]].lambda_eff_all = string(5400.,format='(i4.4)')+ ' ' + target[ind[match0[i]]].lambda_eff_all - ;endfor - - ; add OTHER TARGETS (AGEIS, MMT) - ind = where( strtrim(target.release) eq 'egs' ) - target[ind].OTHER_TARGET = target[ind].release - - ind = where( strtrim(target.release) eq 'mmt' ) - target[ind].OTHER_TARGET = 'mmt-var' - - ; add the spectral fits - qsofit_file = '/data3/yshen/work/lineshifts/lineshift_civ3gauss.fits' - qso=mrdfits(qsofit_file,1) - tags = tag_names(qso) - tags_keep = [tags[0], tags[5:*]] - qso=mrdfits(qsofit_file,1, column=tags_keep) - target = struct_addtags(target, qso) - - - outfile = '/data3/yshen/work/sdssrm_sample_char/sample_char.fits' - mwrfits, target, outfile, /create - -end - -; add matching properties from PS1, wise, FIRST, GALEX GR7 etc -pro add_target_prop - - outfile = '/data3/yshen/work/sdssrm_sample_char/sample_char.fits' - target = mrdfits(outfile, 1) - - ; match with FIRST - file = '/data1/yshen/Semester_Projects/Yen-Ting/FIRST_coverage/first_14dec17.fits' - first = mrdfits(file, 1) - ; first determine if all sdss-rm quasars are in first footprint using the same 14dec17 first coverage maps - temp_flag = is_in_FIRST(ra = target.ra, dec = target.dec, /quiet) - ind = where(temp_flag ne 0) - target[ind].FIRST_FR_TYPE = 0 ; these are in FIRST footprint - ; first match within 30" of the FIRST sources - spherematch, target.ra, target.dec, first.ra, first.dec, 30./3600.D, match1, match2, distance12, maxmatch=0 - ; for each matched SDSS source, determine the 20cm flux and FR type - uniq_ind = uniq(match1) - n_match = n_elements(uniq_ind) - print, 'SDSS object matched: ', n_match - for i=0L, n_elements(uniq_ind) - 1L do begin - ind_SDSS = match1[uniq_ind[i]] ; the index of the matched SDSS quasar - indd = where(match1 eq match1[uniq_ind[i]], n_first) - ind_FIRST = match2[indd] ; the indices of the matched FIRST sources, could be multiple - if n_first ge 2 then begin ; if multiple FIRST sources detected, add all their flux together - target[ind_SDSS].FIRST_FR_type = 2L - ;target[ind_SDSS].FIRST_Fpeak_mJy = max(first[ind_FIRST].fpeak) - target[ind_SDSS].FIRST_Fint_mJy = total(first[ind_FIRST].fint) - endif else begin ; if only one source detected, see if it is within 5", otherwise, reject - spherematch, target[ind_SDSS].ra, target[ind_SDSS].dec, first[ind_FIRST].ra, first[ind_FIRST].dec, $ - 5./3600.D, match1_5arcsec, match2_5arcsec, dist_5arcsec, maxmatch = 0 - if match1_5arcsec[0] ne -1 then begin ; the SDSS obj does have a match within 5" - target[ind_SDSS].FIRST_FR_type = 1L - ;target[ind_SDSS].FIRST_Fpeak_mJy = first[ind_FIRST].fpeak - target[ind_SDSS].FIRST_Fint_mJy = first[ind_FIRST].fint - endif - endelse - print, 'finished:', i+1, '/', n_match - endfor - - ; now compute the *observed* restframe-6cm flux density, assuming a power-law slope -0.5, f_nu ~ nu^alpha_nu - alpha_nu = -0.5 ; this slope comes from Jiang+2007 and Ivezic+2004b - ind = where(target.FIRST_Fint_mJy gt -1d-5) - target[ind].Fint_rest6cm_mJy_obs = (20./6.)^alpha_nu*(1. + target[ind].zfinal)^(-alpha_nu)*target[ind].FIRST_Fint_mJy - - - ;-------------- WISE matches -------------------- - file = '/data3/yshen/work/sdssrm_sample_char/rmtarget_allwise_10arcsec.tbl' - readcol, file, format='x,x,x,x,x,x,d,d,x,x,x,d,d,x,x,d,d,x,x,d,d,x,x,d,d', $ - skipline = 23L, ra, dec, w1,w1sig,w2,w2sig, w3,w3sig,w4,w4sig - spherematch, target.ra, target.dec, ra, dec, 6./3600.D, match1, match2, distance, maxmatch=1 ; get the closest match only - ; first do a clearning of all ALLWISE data in target - target.allwise1234 = -1.D & target.allwise1234_err = -1.D & target.allwise_offset = -1.D - ; now assign the allwise data - nnn = n_elements(match1) - for i=0L, nnn - 1L do begin - ind = match2[i] - target[match1[i]].allwise1234 = [w1[ind], w2[ind], w3[ind], w4[ind]] - target[match1[i]].allwise1234_err = [w1sig[ind], w2sig[ind], w3sig[ind], w4sig[ind]] - target[match1[i]].allwise_offset = distance[i]*3600.D ; convert to arcsec - endfor - - ; now do unWISE - file = '/data3/yshen/work/sdsswise/md07_unwise_all.fits' - if file_test(file) eq 0 then begin ; create this file if non-existent - topdir = '/data3/yshen/work/sdsswise/' - ntile=6 - for i=1,ntile do begin - file1 = topdir + 'sdsswise_tile' + string(i,format='(i0)')+'.fits' - tmp = mrdfits(file1,1) - if n_elements(unwise_all) eq 0 then unwise_all = tmp else unwise_all = [unwise_all, tmp] - endfor - ; remove duplicate objects - nnn=n_elements(unwise_all) - rejflag = lonarr(nnn) - spherematch, unwise_all.ra, unwise_all.dec, unwise_all.ra, unwise_all.dec, 0.1/3600.D, match1, match2, dist1 - ind = where(match1 gt match2) - if ind[0] ne -1 then begin - rejflag[match1[ind]]=1 - indd = where(rejflag eq 0) - unwise_all = unwise_all[indd] - endif - mwrfits, unwise_all, file, /create - endif - unwise = mrdfits(file, 1) - spherematch, target.ra, target.dec, unwise.ra, unwise.dec, 6./3600.D, match1, match2, distance, maxmatch=1 ; closest match only - ; first do a clearning of all ALLWISE data in target - target.unwise1234 = -1.D & target.unwise1234_err = -1.D & target.unwise_offset = -1.D - ; now assign the unwise data - nnn = n_elements(match1) - for i=0L, nnn - 1L do begin - ind = match2[i] - target[match1[i]].unwise1234 = [unwise[ind].w1_mag, unwise[ind].w2_mag, unwise[ind].w3_mag, unwise[ind].w4_mag] - target[match1[i]].unwise1234_err = [unwise[ind].w1_mag_err, unwise[ind].w2_mag_err, unwise[ind].w3_mag_err, unwise[ind].w4_mag_err] - target[match1[i]].unwise_offset = distance[i]*3600.D ; convert to arcsec - endfor - ; ------------------------------------------------ - - ; ------ GALEX GR6/7; Feb 27, 2013 ----------------- - ; the GALEX cross catalog is retrived from CALEX casjob at https://galex.stsci.edu/casjobs/ with yshen:xxxxxx - - - - ; overwrite the output - mwrfits, target, outfile, /create - -end - - -pro add_sample_zsys_ps1 - - outfile = '/data3/yshen/work/sdssrm_sample_char/sample_char.fits' - target = mrdfits(outfile, 1) - - nnn = n_elements(target) - alltag = tag_names(target) - - ; assign zsys and zsys_err using the recipes in Shen++(2016) - ; do a clean first - target.zsys = -1. & target.zsys_err = -1. - line=['Hbeta_br', 'OIII5007', 'CaII3934', 'OII3728', 'NeV3426', 'MgII', 'CIII', 'HeII1640', 'CIV_br', 'SIIV_OIV'] - wave=[4862.68, 5008.24, 3934.78, 3728.48, 3426.84, 2798.75, 1908.73, 1640.42, 1549.06, (1396.76 + 1402.06)*0.5] - line=strupcase(line) - nline = n_elements(line) - ; range of wavelengths where I still trust the line fit - maxwave = 10350. & minwave = 3650. - for i=0l, nnn - 1 do begin - zsys = dblarr(nline) - 1. & zsys_err = dblarr(nline) - 1. - rejflag = lonarr(nline) ; rejection falg when the line center falls out [minwave, maxwave] - for j=0, nline - 1 do begin - ind1 = where(alltag eq line[j]) - ind2 = where(alltag eq line[j] + '_ERR') - obs_lam = (target[i].(ind1))[0] & obs_lam_err = (target[i].(ind2))[0] - zz = target[i].zfinal - obs_lam = obs_lam*(1. + zz) & obs_lam_err = obs_lam_err*(1. + zz) - - ; the bestfit line peak falls outside the reliable spectral range, so reject - if obs_lam gt maxwave or obs_lam lt minwave then rejflag[j] = 1L - logL1700 = target[i].logl1700 & logL1700_err = target[i].logL1700_err - - if obs_lam gt 0 then begin - - tmp = get_zsys(obs_lam, obs_lam_err, line_use = line[j], logL=logL1700) - zsys[j] = tmp[0] & zsys_err[j] = tmp[1] - endif - endfor - indd = where(zsys_err gt 0 and rejflag eq 0) - if indd[0] ne -1 then begin - zsys = zsys[indd] & zsys_err = zsys_err[indd] - ;print, line[indd] - ;print, zsys - ; find the best zsys with the smallest zsys_err - tmp2 = min(zsys_err, ind_min) - target[i].zsys = zsys[ind_min] & target[i].zsys_err = zsys_err[ind_min] - endif - splog, 'update zsys for RMID: ', i, target[i].zfinal - ; pause - endfor - - ;; ---------- add PS1 properties ------------ - file = '/data3/yshen/work/PS1/yue_all.fits' - ps1 = mrdfits(file,1) - if (where(alltag eq 'PS1_NMAG_OK'))[0] eq -1 then begin ; add the PS1 tags - newtag = {PS1_Nmag_OK:lonarr(5), PS1_RMS_Mag:dblarr(5)-1.} - newtag = replicate(newtag, nnn) - target = struct_addtags(target, newtag) - endif else begin ; clear all PS1 values - target.ps1_nmag_ok = 0 & target.ps1_rms_mag = -1. - endelse - - spherematch, target.ra, target.dec, ps1.ra, ps1.dec, 1./3600.D, match0, match1, dist1 - nmatch = n_elements(match0) - for i=0, nmatch - 1 do begin - ind1 = match0[i] & ind2 = match1[i] - ; what magnitude (default is PSF, or Aperture, Kron?) - lc_mag = ps1[ind2].LC_mag & lc_err = ps1[ind2].LC_err - - nmag_OK = lonarr(5) & rms_mag = dblarr(5)-1. - for j=0, 4 do begin ; for the 5 PS1 bands - mag = lc_mag[j, *] & err = lc_err[j, *] - ind_OK = where(err gt 0 and mag gt 0 and mag lt 30., nok) - nmag_ok[j] = nok - if nok gt 5 then begin ; only if there are more than 5 epochs - mag = mag[ind_ok] & err = err[ind_ok] - ; using Eqn 2 in Sun++15 (from Sesar+07) to compute intrinsic rms - term1 = total((mag - mean(mag))^2, /double)/double(nok - 1) - term2 = mean( err^2 ) - if term1 ge term2 then $ - rms_mag[j] = sqrt( term1 - term2 ) else rms_mag[j] = 0. - endif - endfor - target[ind1].ps1_nmag_ok = nmag_ok - target[ind1].ps1_rms_mag = rms_mag - endfor - - ;; ------------- add absorber info from Guangtun Zhu ------ - file = '/data3/yshen/work/absorb/QSObased_Expanded_SDSSRM_107.fits' ; this includes both intervene and associated narrow absorbers, - ; although Guangtun noted the AAL identification may be less secure - qsoabs = mrdfits(file,1) - if (where(alltag eq 'NABS'))[0] eq -1 then begin ; add the narrow absorber tags - newtag = {nabs:0L, zabs:dblarr(10)-1.} - newtag = replicate(newtag, nnn) - target = struct_addtags(target, newtag) - endif else begin ; clear all narrow abs tags - target.nabs = 0 & target.zabs = dblarr(10) - 1. - endelse - ; using index_qso included in qsoabs to locate the RM target - ind = where(qsoabs.index_qso lt 849) ; remove the object with incorrect index=999 - qsoabs = qsoabs[ind] - target[qsoabs.index_qso].nabs = qsoabs.nabs - target[qsoabs.index_qso].zabs = qsoabs.zabs - - ; overwrite the output file - mwrfits, target, outfile, /create - -end - -; clean the characterization sample by including only the useful columns -pro clean_char_sample - - file = '/data3/yshen/work/sdssrm_sample_char/sample_char.fits' - - columns = ['RM_ID', 'RA', 'DEC', 'PSFMAG', 'FIBER2MAG', 'OBJC_TYPE', 'ZFINAL', $ -'ZSYS', 'ZSYS_ERR', 'BOSS_TARGET1', $ -'BOSS_TARGET2', 'ANCILLARY_TARGET1', 'ANCILLARY_TARGET2', 'PRIMTARGET', $ -'SECTARGET', 'OTHER_TARGET', 'PLATE_SDSS_FIRST', 'FIBERID_SDSS_FIRST', $ -'MJD_SDSS_FIRST', 'PLATE_ALL', 'FIBERID_ALL', 'MJD_ALL', 'LAMBDA_EFF_ALL', $ -'PS1_NMAG_OK', 'PS1_RMS_MAG', $ -'ALLWISE1234', 'ALLWISE1234_ERR', 'ALLWISE_OFFSET', 'UNWISE1234', $ -'UNWISE1234_ERR', 'BAL_FLAG', 'NABS', 'ZABS', 'FIRST_FR_TYPE', $ -'FIRST_FINT_MJY', 'FINT_REST6CM_MJY_OBS', 'LOGFNU2500A_ERGS_OBS', 'R_6CM_2500A', $ -'CONTI_FIT', 'CONTI_FIT_ERR', 'FEII_UV', 'FEII_UV_ERR', 'FEII_OPT', 'FEII_OPT_ERR', $ -'CONTI_REDCHI2', 'LOGL1350', 'LOGL1350_ERR', 'LOGL1700', 'LOGL1700_ERR', 'LOGL3000', 'LOGL3000_ERR', $ -'LOGL5100', 'LOGL5100_ERR', 'REW_FE_4434_4684', 'REW_FE_4434_4684_ERR', $ -'SII6718', 'HALPHA', 'HALPHA_BR', 'HBETA', 'HBETA_BR', 'HEII4687', 'HEII4687_BR', $ -'OIII5007', 'OIII5007C', 'CAII3934', 'OII3728', 'NEV3426', $ -'MGII', 'MGII_BR', 'CIII', 'CIII_BR', 'SIIII1892', $ -'ALIII1857', 'NIII1750', 'CIV', 'HEII1640', 'HEII1640_BR', 'SIIV_OIV', $ -'OI1304', 'LYA', 'NV1240', 'SII6718_REDCHI2', 'HALPHA_REDCHI2', $ -'HALPHA_BR_REDCHI2', 'HBETA_REDCHI2', 'HBETA_BR_REDCHI2', 'HEII4687_REDCHI2', $ -'HEII4687_BR_REDCHI2', 'OIII5007_REDCHI2', 'OIII5007C_REDCHI2', 'CAII3934_REDCHI2', 'OII3728_REDCHI2', 'NEV3426_REDCHI2', $ -'MGII_REDCHI2', 'MGII_BR_REDCHI2', 'CIII_REDCHI2', 'CIII_BR_REDCHI2', 'SIIII1892_REDCHI2', $ -'ALIII1857_REDCHI2', 'NIII1750_REDCHI2', 'CIV_REDCHI2', $ -'HEII1640_REDCHI2', 'HEII1640_BR_REDCHI2', 'SIIV_OIV_REDCHI2', 'OI1304_REDCHI2', $ -'LYA_REDCHI2', 'NV1240_REDCHI2', 'SII6718_ERR', 'HALPHA_ERR', 'HALPHA_BR_ERR', $ -'HBETA_ERR', 'HBETA_BR_ERR', 'HEII4687_ERR', 'HEII4687_BR_ERR', 'OIII5007_ERR', $ -'OIII5007C_ERR', 'CAII3934_ERR', 'OII3728_ERR', 'NEV3426_ERR', $ -'MGII_ERR', 'MGII_BR_ERR', 'CIII_ERR', 'CIII_BR_ERR', $ -'SIIII1892_ERR', 'ALIII1857_ERR', 'NIII1750_ERR', 'CIV_ERR', $ -'HEII1640_ERR', 'HEII1640_BR_ERR', 'SIIV_OIV_ERR', 'OI1304_ERR', 'LYA_ERR', $ -'NV1240_ERR', 'LOGBH_CIV_VP06', 'LOGBH_CIV_VP06_ERR', 'LOGBH_MGII_S11', $ -'LOGBH_MGII_S11_ERR', 'LOGBH_HB_VP06', 'LOGBH_HB_VP06_ERR', 'COMMENT'] - - result = mrdfits(file, 1, column=columns) - - ; need to replace some tagnames - oldtag = ['RM_ID', 'ZFINAL', 'CIII', 'CIII_REDCHI2', 'CIII_ERR'] - newstr = {RMID:0L, ZPIP:0.D, CIII_all:dblarr(5), CIII_all_REDCHI2:0.d, CIII_all_ERR:dblarr(5)-1.} - newstr = replicate(newstr, n_elements(result)) - result = struct_addtags(result, newstr) - result.RMID= result.rm_ID & result.zpip = result.zfinal & result.CIII_all = result.CIII - result.CIII_all_redchi2 = result.CIII_redchi2 & result.CIII_all_err = result.CIII_err - - outfile = '/data3/yshen/work/sdssrm_sample_char/sample_char_refined.fits' - mwrfits, result, outfile, /create - - ; now read again with the correct tag order and names: -columns = ['RMID', 'RA', 'DEC', 'PSFMAG', 'FIBER2MAG', 'OBJC_TYPE', 'ZPIP', $ -'ZSYS', 'ZSYS_ERR', 'BOSS_TARGET1', $ -'BOSS_TARGET2', 'ANCILLARY_TARGET1', 'ANCILLARY_TARGET2', 'PRIMTARGET', $ -'SECTARGET', 'OTHER_TARGET', 'PLATE_SDSS_FIRST', 'FIBERID_SDSS_FIRST', $ -'MJD_SDSS_FIRST', 'PLATE_ALL', 'FIBERID_ALL', 'MJD_ALL', 'LAMBDA_EFF_ALL', $ -'PS1_NMAG_OK', 'PS1_RMS_MAG', $ -'ALLWISE1234', 'ALLWISE1234_ERR', 'ALLWISE_OFFSET', 'UNWISE1234', $ -'UNWISE1234_ERR', 'BAL_FLAG', 'NABS', 'ZABS', 'FIRST_FR_TYPE', $ -'FIRST_FINT_MJY', 'FINT_REST6CM_MJY_OBS', 'LOGFNU2500A_ERGS_OBS', 'R_6CM_2500A', $ -'CONTI_FIT', 'CONTI_FIT_ERR', 'FEII_UV', 'FEII_UV_ERR', 'FEII_OPT', 'FEII_OPT_ERR', $ -'CONTI_REDCHI2', 'LOGL1350', 'LOGL1350_ERR', 'LOGL1700', 'LOGL1700_ERR', 'LOGL3000', 'LOGL3000_ERR', $ -'LOGL5100', 'LOGL5100_ERR', 'REW_FE_4434_4684', 'REW_FE_4434_4684_ERR', $ -'SII6718', 'HALPHA', 'HALPHA_BR', 'HBETA', 'HBETA_BR', 'HEII4687', 'HEII4687_BR', $ -'OIII5007', 'OIII5007C', 'CAII3934', 'OII3728', 'NEV3426', $ -'MGII', 'MGII_BR', 'CIII_ALL', 'CIII_BR', 'SIIII1892', $ -'ALIII1857', 'NIII1750', 'CIV', 'HEII1640', 'HEII1640_BR', 'SIIV_OIV', $ -'OI1304', 'LYA', 'NV1240', 'SII6718_REDCHI2', 'HALPHA_REDCHI2', $ -'HALPHA_BR_REDCHI2', 'HBETA_REDCHI2', 'HBETA_BR_REDCHI2', 'HEII4687_REDCHI2', $ -'HEII4687_BR_REDCHI2', 'OIII5007_REDCHI2', 'OIII5007C_REDCHI2', 'CAII3934_REDCHI2', 'OII3728_REDCHI2', 'NEV3426_REDCHI2', $ -'MGII_REDCHI2', 'MGII_BR_REDCHI2', 'CIII_ALL_REDCHI2', 'CIII_BR_REDCHI2', 'SIIII1892_REDCHI2', $ -'ALIII1857_REDCHI2', 'NIII1750_REDCHI2', 'CIV_REDCHI2', $ -'HEII1640_REDCHI2', 'HEII1640_BR_REDCHI2', 'SIIV_OIV_REDCHI2', 'OI1304_REDCHI2', $ -'LYA_REDCHI2', 'NV1240_REDCHI2', 'SII6718_ERR', 'HALPHA_ERR', 'HALPHA_BR_ERR', $ -'HBETA_ERR', 'HBETA_BR_ERR', 'HEII4687_ERR', 'HEII4687_BR_ERR', 'OIII5007_ERR', $ -'OIII5007C_ERR', 'CAII3934_ERR', 'OII3728_ERR', 'NEV3426_ERR', $ -'MGII_ERR', 'MGII_BR_ERR', 'CIII_ALL_ERR', 'CIII_BR_ERR', $ -'SIIII1892_ERR', 'ALIII1857_ERR', 'NIII1750_ERR', 'CIV_ERR', $ -'HEII1640_ERR', 'HEII1640_BR_ERR', 'SIIV_OIV_ERR', 'OI1304_ERR', 'LYA_ERR', $ -'NV1240_ERR', 'LOGBH_CIV_VP06', 'LOGBH_CIV_VP06_ERR', 'LOGBH_MGII_S11', $ -'LOGBH_MGII_S11_ERR', 'LOGBH_HB_VP06', 'LOGBH_HB_VP06_ERR', 'COMMENT'] - result = mrdfits(outfile, 1, column=columns) - ; now overwrite - mwrfits, result, outfile, /create - - -end - -; add radio R parameter and LOGFNU2500A_ERGS_OBS -pro add_radio_R - -file = '/data3/yshen/work/sdssrm_sample_char/sample_char_refined.fits' -tt = mrdfits(file,1) - -nnn = n_elements(tt) - -for i=0, nnn - 1 do begin - - pp = tt[i].conti_fit - wave_obs = 2500. * (1. + tt[i].zpip) - if wave_obs gt 3600. and wave_obs lt 10300. then begin - Fnu2500A_ergs_OBS = f_conti_only(2500., pp[6:*])*1d-9*(2.5d-5*(1. + tt[i].zpip))^2/2.9979246d10 - Fnu2500A_ergs_OBS = Fnu2500A_ergs_OBS > 1d-30 ;; corresponds to ~ 5d-19 erg/s/cm2/A for f_lambda - if Fnu2500A_ergs_OBS gt 1d-30 then begin - tt[i].LOGFNU2500A_ERGS_OBS = alog10(Fnu2500A_ergs_OBS) - if Fnu2500A_ergs_OBS gt 1d-35 and tt[i].FINT_REST6CM_MJY_OBS gt 0 then $ - tt[i].R_6CM_2500A = tt[i].FINT_REST6CM_MJY_OBS*1d-26/Fnu2500A_ergs_OBS - endif - endif - -endfor - -mwrfits, tt, file, /create - -end - -;; --- compare the improvement in zsys using coadded spectra -pro plot_zsys_comp, vel_plot=vel_plot - - cs = 2.9979246d5 - - file = '/data3/yshen/work/sdssrm_sample_char/med_coadd_zpip.fits' - spec_pip = mrdfits(file,1) - file = '/data3/yshen/work/sdssrm_sample_char/med_coadd_zsys.fits' - spec_sys = mrdfits(file,1) - wave = spec_pip.wave - spec1 = spec_pip.coadd_flux & err1 = spec_pip.coadd_err - spec2 = spec_sys.coadd_flux & err2 = spec_sys.coadd_err - - figfile = '/data3/yshen/work/sdssrm_sample_char/figs/zsys_comp1.ps' - begplot, name=figfile, /color, /landscape - - line = textoidl(['HeII1640', 'CIV', '[NeV]3426', '[OII]3727', 'CaII K', 'H\beta', '[OIII]5007']) - maxv = [4000., 4000., 2000., 1000., 1000., 2000., 1000.] - wrange = [ [1610, 1660], $ - [1450, 1600], $ ; [1700, 1950], CIII] $ - [3310, 3460], $ - [3710, 3770], $ - [3910, 3960], $ - [4800, 4950], $ - [4900, 5050] ] - linewave = [1640.42, 1549.06, 3426.84, 3728.48, 3934.78, 4862.68, 5008.24] ; 1908.73 - - ; use_line=[0,2,3,4,5,6] - use_line = [0,1] - line=line[use_line] - maxv = maxv[use_line] - wrange = wrange[*, use_line] - linewave = linewave[use_line] - - nline = n_elements(linewave) - - nplot = n_elements(wrange[0,*]) - ang = string(197B) - omargin=[0.1, 0.01, 0.99, 0.95] - pmargin=[0.1,0.21] - charsize=1.2 - plot_layout, nplot, xypos=xypos, omargin=omargin, pmargin=pmargin, $ - nrow=2 - - for i=0, nplot - 1 do begin - if i eq 0 then noerase = 0 else noerase = 1L - ind = where(wave ge wrange[0,i] and wave le wrange[1,i] ) - yrange = [min(spec2[ind]), max(spec2[ind])*1.2] - if keyword_set(vel_plot) then begin - xrange = [-maxv[i], maxv[i]] ;[-1000.,1000.] - xarr = (wave[ind]/linewave[i] - 1) * cs - endif else begin - xrange = wrange[*,i] - xarr = wave[ind] - endelse - - plot, xarr, spec1[ind], xrange=xrange,/xsty, yrange=yrange, pos=xypos[*,i], noerase=noerase, $ - psym=10, title=line[i], charsize=charsize - oplot, xarr, spec2[ind], color=cgcolor('red'), psym=10 - - if ~keyword_set(vel_plot) then begin - for ii=0, nline - 1 do begin - if linewave[ii] gt xrange[0] and linewave[ii] lt xrange[1] then $ - oplot, [linewave[ii], linewave[ii]], [0,60],line=1 - endfor - endif else oplot, [0,0],[12,60],line=1 - endfor - if ~keyword_set(vel_plot) then xtitle = textoidl('Restframe \lambda_{vac}') + ' [' +ang + ']' $ - else xtitle = textoidl('Velocity [km s^{-1}]') - xyouts, 0.5, 0.02, align=0.5, xtitle,/norm - xyouts, 0.04, 0.5, align=0.5, orient=90, textoidl('Flux Density f_\lambda [arbitrary units]'),/norm - - endplot - cgfixps, figfile - -end - - -; plot the PS1 intrinsic RMS magnitudes -pro plot_ps1_rms - -file = '/data3/yshen/work/sdssrm_sample_char/sample_char_refined.fits' -tt = mrdfits(file,1) - -figfile='/data3/yshen/work/sdssrm_sample_char/figs/ps1_rmsmag.eps' -begplot, name=figfile, /color,/encap, xsize=8, ysize=6 - -rms = tt.ps1_rms_mag -zz = tt.zsys - -grms = rms[0, *] & irms = rms[2,*] -indg = where(grms gt 0) & indi = where(irms gt 0) - -print, median(grms), median(irms) - -plot, zz[indg], grms[indg], psym=5, xtitle = 'Redshift', ytitle = 'PS1 RMS Magnitude', /ylog, /nodata, $ - yrange=[0.05, 2], pos=[0.11,0.11,0.98,0.98],/ysty -oplot, zz[indg], grms[indg], psym=5, color=cgcolor('green'), thick=3 -oplot, zz[indi], irms[indi], psym=1, color=cgcolor('red') - -items = textoidl([' g_{PS1}', ' i_{PS1}']) -colors=cgcolor(['green','red']) -legend, items, /norm, box=0, pos=[0.8,0.95], psym=[5,1], color=colors, textcolor=colors, spac=2 - -endplot - -end - -; plot Mi(z2)-z distribution -pro plot_Lz - -file = '/data3/yshen/work/sdssrm_sample_char/sample_char_refined.fits' -tt = mrdfits(file,1) -imag = (tt.psfmag)[3,*] -Miz2 = get_abs_mag(imag, tt.zpip) - -figfile = '/data3/yshen/work/sdssrm_sample_char/figs/L_z.eps' -begplot, name=figfile, /color,/encap, xsize=6, ysize=5.8 - -plot, [0], [0], xrange = [0, 5], yrange = [-19.9, -30.1], /xsty, /ysty, $ - xtitle = textoidl('Redshift'), ytitle=textoidl('M_i (z=2)'), /nodata, $ - pos = [0.15, 0.12, 0.98, 0.98] -oplot, tt.zpip, Miz2, psym=symcat(9,thick=3), symsize=0.5 - -zgrid = 0.2 + 0.1*indgen(50) -imag=get_abs_mag(21.7,zgrid) -oplot, zgrid, imag, thick=6., color=cgcolor('red'), linestyle = 2 -xyouts, 4.2, -25.25, 'i=21.7',color=cgcolor('red') - -endplot -end - -; make a collection of example SDSS-RM quasars -pro plot_examples - -file = '/data3/yshen/work/sdssrm_sample_char/sample_char_refined.fits' -tt = mrdfits(file,1) - -rmid = [3, 8, 34, $ - 85, $ ; disk emitter - 90, $ - 116, $ ; NALs - 272, 320, $ ; host stellar absorption - 39, 226, 613, $ ; BALs] - 316, $ ; strong optical FeII - 325, $ ; associated LLS from the BLR? - 376, $ ; lots of unusual narrow lines - 23, 44, 484] ; N-loud - -figfile = '/data3/yshen/work/sdssrm_sample_char/figs/examp.eps' -begplot, name=figfile, /color, xsize=8, ysize=5 -ang = string(197B) -nnn = n_elements(rmid) -rest_wave = 1000. + findgen(8)*1000. -xtickname = string(rest_wave, format='(i0)') -xrange=[3600,1d4] -for i=0, nnn - 1 do begin - rm_readspec,0,rmid[i]+1, mjd=56837,wave=wave, flux=flux, invvar=ivar - ind = where(wave ge 5573 and wave le 5585, complement=indd) - flux[ind] = interpol(flux[indd], wave[indd], wave[ind]) - - if rmid[i] eq 484 then yrange=[0,5] else ttt=temporary(yrange) - - ind=where(ivar gt 0) - plot, wave[ind], smooth(flux[ind],3), xsty=5, xrange=xrange, $ - ytitle= textoidl('Flux Density [10^{-17 }erg s^{-1}cm^{-2}')+ang+textoidl('^{-1}]'), $ - thick=2, pos=[0.12, 0.13, 0.95, 0.88],yrange=yrange - xyouts, 0.68, 0.8, /norm, 'RMID'+string(rmid[i],format='(i3.3)') + ' z='+string(tt[rmid[i]].zsys,format='(f0.3)') - oplot, xrange, [0,0], line=1 - - axis, xaxis=0, xrange=xrange, /xsty, xtitle='Observed Wavelength [' + ang + ']' - axis, xaxis=1, xrange=xrange, xtickv=rest_wave*(1. + tt[rmid[i]].zsys), xminor=10, xticks=7,/xsty, $ - xtickname=xtickname, xtitle='Rest Wavelength [' + ang + ']' - -endfor -endplot - -;cgfixps, figfile - -end - -pro mk_add_linefits_out -; add addtional lines to the qso-prop.fits file -linename = 'NII6585' -outdir = '/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/civ_3gauss/' -outfile = 'qso_prop-0000-56837_NII-only.fits' - -rm_compile_qsofit,0,56837, outdir_in=outdir, outfile=outfile,linename=linename, add_bhmass=0 - -end - -pro add_Lbol_fid_BH_Edd - -; add bolometric lum, fiducial BH mass and Eddington ratios -file = '/data3/yshen/work/sdssrm_sample_char/sample_char_refined_w_var.fits' -tt = mrdfits(file,1) -nn=n_elements(tt) -str = create_struct('NII6585', dblarr(5), 'NII6585_ERR', dblarr(5)-1.D, 'REW_FE_2250_2650', 0.D, 'REW_FE_2250_2650_err',-1.D, $ - 'logLbol', 0.D, 'logLbol_err', -1.D, 'logbh', 0.D, 'logbh_err', -1.D, $ - 'logedd_ratio', -99.D, 'logedd_ratio_err', -1.D) -str = replicate(str, nn) -tt = struct_addtags(tt, str) - -linefile = '/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/civ_3gauss/qso_prop-0000-56837_NII-only.fits' -tst = mrdfits(linefile,1) -tt.NII6585 = tst.NII6585 & tt.NII6585_err = tst.NII6585_err -tt.REW_FE_2250_2650 = tst.REW_FE_2250_2650 & tt.REW_FE_2250_2650_err = tst.REW_FE_2250_2650_err - -; add logLBOL -ind = where(tt.logL3000 gt 0 and tt.logL3000_err gt 0) -tt[ind].logLbol = tt[ind].logL3000 + alog10(5.15D) -tt[ind].logLbol_err = tt[ind].logL3000_err -ind = where( (tt.logL3000 lt 0 or tt.logL3000_err le 0) and tt.logL5100 gt 0 and tt.logL5100_err gt 0) -if ind[0] ne -1 then begin - tt[ind].logLbol = tt[ind].logL5100 + alog10(9.26D) - tt[ind].logLbol_err = tt[ind].logL5100_err -endif -ind = where( (tt.logL3000 lt 0 or tt.logL3000_err le 0) and tt.logL1350 gt 0 and tt.logL1350_err gt 0) -if ind[0] ne -1 then begin - tt[ind].logLbol = tt[ind].logL1350 + alog10(3.81D) - tt[ind].logLbol_err = tt[ind].logL1350_err -endif - -; add default logbh -ind = where(tt.logbh_hb_vp06 gt 0 and tt.logbh_hb_vp06_err gt 0) -tt[ind].logbh = tt[ind].logbh_hb_vp06 & tt[ind].logbh_err = tt[ind].logbh_hb_vp06_err -ind = where( (tt.logbh_hb_vp06 lt 0 or tt.logbh_hb_vp06_err le 0) and tt.logbh_mgii_s11 gt 0 and tt.logbh_mgii_s11_err gt 0) -tt[ind].logbh = tt[ind].logbh_mgii_s11 & tt[ind].logbh_err = tt[ind].logbh_mgii_s11_err -ind = where( (tt.logbh_mgii_s11 lt 0 or tt.logbh_mgii_s11_err le 0) and tt.logbh_civ_vp06 gt 0 and tt.logbh_civ_vp06_err gt 0) -tt[ind].logbh = tt[ind].logbh_civ_vp06 & tt[ind].logbh_err = tt[ind].logbh_civ_vp06_err - -; add Eddington ratios -ind = where(tt.logbh gt 0 and tt.loglbol gt 0) -tt[ind].logedd_ratio = tt[ind].logLbol - alog10(1.3d38) - tt[ind].logBH -tt[ind].logedd_ratio_err = sqrt( tt[ind].logLbol_err^2 + tt[ind].logBH_err^2 ) - -; add BAL flag from Pat Hall -file = '/data3/yshen/work/sdssrm_sample_char/ancil_data/spec_2014_BALrobust.csv' -readcol, file, format='l,l', rmid, bal_flag, delimiter=',' -nobj=n_elements(bal_flag) -for i=0, nobj - 1 do begin - ind = where(tt.rmid eq rmid[i]) - tt[ind].BAL_Flag = bal_flag[i] -endfor - -outfile = '/data3/yshen/work/sdssrm_sample_char/sample_char_final.fits' -mwrfits, tt, outfile, /create - -end - -pro plot_ml_sdssrm -; plot the SDSS-RM M-L plane - -file = '/data1/yshen/Project/DR7_BH_catalog/catalog/dr7_bh_more.fits' -bh = mrdfits(file, 1) -ind = where(bh.LOGBH gt 0 and bh.logLbol gt 0) - -logbh = bh[ind].logbh & loglbol = bh[ind].loglbol - -figfile = '/data3/yshen/work/sdssrm_sample_char/figs/ml_plane.eps' -begplot, name=figfile, xsize=5.5,ysize=5, /color,/encap -plot, logbh, loglbol, xrange=[6.5,10.7], yrange=[44.,48.2], xtitle=textoidl('M_{BH, SE} [M')+sunsymbol()+']', $ - ytitle = textoidl('log L_{bol} [erg s^{-1}]'), /nodata,pos=[0.17,0.14,0.95,0.98],/xsty, /ysty - -oplot, [6,11], [6,11] + alog10(1.3d38), line=2 -oplot, [6,11], [6,11] + alog10(1.3d38) - 1., line=2 -oplot, [6,11], [6,11] + alog10(1.3d38) - 2., line=2 -xyouts, 9.,47.7, textoidl('\lambda_{Edd}=1'),/data,charsize=1.2 -xyouts, 9.8,47.6, textoidl('\lambda_{Edd}=0.1'),/data, charsize=1.2 -xyouts, 9.82,45.8, textoidl('\lambda_{Edd}=0.01'),/data, charsize=1.2 -djs_contourpts, logbh, loglbol, bin1=0.2, bin2=0.2, nlevels=8, thick=6, color=cgcolor('blue'), /over,/nopoints - -file ='/data3/yshen/work/sdssrm_sample_char/sample_char_final.fits' -tt=mrdfits(file,1) -ind=where(tt.logbh gt 0 and tt.loglbol gt 0) -oplot, tt[ind].LOGBH, tt[ind].logLbol,psym=symcat(9),color=cgcolor('red'),symsize=0.3 -endplot - - -end diff --git a/pro/rm/script_coaddspec.pro b/pro/rm/script_coaddspec.pro deleted file mode 100644 index f45165f6f..000000000 --- a/pro/rm/script_coaddspec.pro +++ /dev/null @@ -1,23 +0,0 @@ -; coadd the spectra taken during each year by calling rm_coaddspec -; this does not incorporate the fix of the mismatched fibers - -pro script_coaddspec - -target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' -fibermap = mrdfits(target_file,1,/silent) - -mjdall = fibermap[0].mjd - -; 2016 coadd -;ind = where(mjdall ge 57428 and mjdall le 57576) -;outfile = '/data3/yshen/spectro/bossredux/v5_7_1/0000/wh_skysub/spPlate-0000-57428-57576.fits' -;rm_coaddspec, mjd_coadd=mjdall[ind], outfile=outfile - -; 2017 coadd -;ind = where(mjdall ge 57781 and mjdall le 57934) -;outfile = '/data3/yshen/spectro/bossredux/v5_7_1/0000/wh_skysub/spPlate-0000-57781-57934.fits' -;rm_coaddspec, mjd_coadd=mjdall[ind], outfile=outfile - - -end - diff --git a/pro/rm/script_fit_2014_spec.pro b/pro/rm/script_fit_2014_spec.pro deleted file mode 100644 index c5a546f0c..000000000 --- a/pro/rm/script_fit_2014_spec.pro +++ /dev/null @@ -1,41 +0,0 @@ -; this is a script to fit the 2014 epochs (32) with a detailed linelist - - -pro script_fit_2014_spec, range=range, silent=silent - -file='/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -target=mrdfits(file,1) - -plate=target[0].plate -mjd=target[0].mjd - -plate = plate[0:31] -mjd = mjd[0:31] -nep = n_elements(mjd) - -if ~keyword_set(range) then range = [0,nep-1] - -plate = plate[range[0]:range[1]] -mjd = mjd[range[0]:range[1]] -nep = n_elements(mjd) - - -ntrial = 25 -emparfile=getenv('IDLRM_DIR')+'/etc/qsoline_all.par' -;emparfile=getenv('IDLRM_DIR')+'/etc/qsoline.par' -linename=['SII6718','Halpha', 'Halpha_br', 'Hbeta', 'Hbeta_br', 'HeII4687','HeII4687_BR', 'OIII5007', $ - 'OIII5007c','MgII', 'MgII_br', 'CIII','CIII_br', 'SiIII1892','AlIII1857', 'NIII1750','CIV', 'CIV_br', $ - 'HeII1640','HeII1640_br', 'SiIV_OIV', 'OI1304', 'Lya', 'NV1240'] - -for i1=0, nep-1 do begin - - outdir = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') $ - + '/' + string(plate[i1],format='(i4.4)') + '/wh_skysub/qsofit/' - - rm_fitplate,plate[i1],mjd[i1],ntrial=ntrial,emparfile=emparfile,outdir=outdir,$ - linename=linename,silent=silent - -endfor - - -end diff --git a/pro/rm/script_fit_Green_qso.pro b/pro/rm/script_fit_Green_qso.pro deleted file mode 100644 index cfe51aa9a..000000000 --- a/pro/rm/script_fit_Green_qso.pro +++ /dev/null @@ -1,46 +0,0 @@ -; fit Paul Green's MD fields QSO - -pro script_fit_Green_qso, tag=tag, ntrial=ntrial, comp_only=comp_only, _extra=extra - -; set /comp_only to complie the fitting results - -topdir = '/data3/yshen/work/md_qso/' -file = topdir + 'var_qso.fits' -varqso=mrdfits(file,1) - -; set up the qsofit file -emparfile=getenv('IDLRM_DIR')+'/etc/qsoline_qsovar.par' - -linename=['Halpha_br', 'Hbeta_br', 'MgII_br', 'CIII_br', 'CIV_br', 'OIII5007', 'OIII5007c', $ - 'OIII5007w', 'SiIII1892', 'AlIII1857', 'HeII1640', 'OIII1663'] -contiwave=[1350.,1700.,3000.,5100.] - -;tag='MD01','MD03', 'MD_DR10', 'S82_DR10' -if tag eq 'MD07' then begin - ; this is the RM field - coadd_mjd = 56783 - outdir=topdir + tag + '/' - outfile='qso_prop-' + tag + '.fits' - figfile='QA-'+ tag + '-0000-' + string(coadd_mjd,format='(i5.5)') + '.ps' - if ~keyword_set(comp_only) then begin - rm_fitplate,0,coadd_mjd,/rm_plate,emparfile=emparfile,outdir=outdir,/coadd, $ - linename=linename,contiwave=contiwave,/add_bhmass,outfile=outfile,figfile=figfile,ntrial=ntrial - endif else $ - rm_compile_qsofit,0,coadd_mjd, /rm_plate, outdir_in=outdir,outfile=outfile, $ - linename=linename,contiwave=contiwave,/add_bhmass -endif else begin - ind=where(strtrim(varqso.sample) eq tag) - outdir=topdir + tag + '/' - outfile='qso_prop-' + tag + '.fits' - if ~keyword_set(comp_only) then begin - fitqso_batch,varqso[ind].plate,varqso[ind].fiber,varqso[ind].mjd, $ - zfit=varqso[ind].z_pipe,outdir=outdir,tag=tag,ra=varqso[ind].ra,dec=varqso[ind].dec, $ - emparfile=emparfile,ntrial=ntrial, _extra=extra - endif else begin - rm_compile_qsofit,varqso[ind].plate,varqso[ind].mjd, input_fiber=varqso[ind].fiber, $ - outdir_in=outdir,outfile=outfile,rm_plate=0, $ - linename=linename,contiwave=contiwave,/add_bhmass - endelse -endelse - -end diff --git a/pro/rm/script_fit_eboss_spec.pro b/pro/rm/script_fit_eboss_spec.pro deleted file mode 100644 index 596feb521..000000000 --- a/pro/rm/script_fit_eboss_spec.pro +++ /dev/null @@ -1,44 +0,0 @@ -; this is a script to fit the eboss epochs (2015 and beyond) with a detailed linelist -; note the reduction version os 5_10_10 - -pro script_fit_eboss_spec, range=range, silent=silent - -file='/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -target=mrdfits(file,1) - -plate=target[0].plate -mjd=target[0].mjd - -; keep only the eboss epochs -plate = plate[32:*] -mjd = mjd[32:*] -nep = n_elements(mjd) - -if ~keyword_set(range) then range = [0,nep-1] - -plate = plate[range[0]:range[1]] -mjd = mjd[range[0]:range[1]] -nep = n_elements(mjd) - -ntrial = 25 -emparfile=getenv('IDLRM_DIR')+'/etc/qsoline_all.par' -;emparfile=getenv('IDLRM_DIR')+'/etc/qsoline.par' -linename=['SII6718','Halpha', 'Halpha_br', 'Hbeta', 'Hbeta_br', 'HeII4687','HeII4687_BR', 'OIII5007', $ - 'OIII5007c','MgII', 'MgII_br', 'CIII','CIII_br', 'SiIII1892','AlIII1857', 'NIII1750','CIV', 'CIV_br', $ - 'HeII1640','HeII1640_br', 'SiIV_OIV', 'OI1304', 'Lya', 'NV1240'] - -for i1=0, nep-1 do begin - - outdir = getenv('BOSS_SPECTRO_REDUX') + '/' + 'v5_10_10' $ - + '/' + string(plate[i1],format='(i4.4)') + '/wh_skysub/qsofit/' - - topdir = getenv('BOSS_SPECTRO_REDUX') + '/' + 'v5_10_10' $ - + '/' + string(plate[i1],format='(i4.4)') + '/' - - rm_fitplate,plate[i1],mjd[i1],ntrial=ntrial,emparfile=emparfile,outdir=outdir,$ - linename=linename,silent=silent, topdir = topdir, calibdir='wh_skysub/' - -endfor - - -end diff --git a/pro/rm/sdss_astrombad.pro b/pro/rm/sdss_astrombad.pro deleted file mode 100644 index 594935aca..000000000 --- a/pro/rm/sdss_astrombad.pro +++ /dev/null @@ -1,8 +0,0 @@ -; dummy procedure to return a bunch of zeros -function sdss_astrombad, xx,yy,zz - -nnn = n_elements(xx) - -return, replicate(0, nnn) - -end diff --git a/pro/rm/sdssrm_mock_data.pro b/pro/rm/sdssrm_mock_data.pro deleted file mode 100644 index 6951aff94..000000000 --- a/pro/rm/sdssrm_mock_data.pro +++ /dev/null @@ -1,49 +0,0 @@ -; make mock LC data for the sdss-rm sample, e.g., same cadence and L-z range, -; but random LCs from DRW models - -pro sdssrm_mock_data - - -; get the mock sample -infile = '/data2/yshen/work/RM/TDSS/level2/sim_qso_w_LC_tf_width_tenth.fits' -sim_LC_all = mrdfits(infile, 1) ; all 100,000 objects - -; get the actual numbers in each z-Mi grid -z_grid = 0.1 + findgen(25)*0.2 -imag_grid = 15.5 + findgen(7)*1.0 -file = '/data2/yshen/work/RM/TDSS/level2/true_nqso_HRH_LF.fits' -ttt = mrdfits(file, 1, /silent) -true_nqso = ttt.true_nqso ; can be decimal numbers - - -; downgrade to a single plate -subind = downsample_mock_qso(nqso = true_nqso, sim_LC_all = sim_LC_all) -sim_LC = sim_LC_all[subind] -; keep only i<21.7 -ind = where(sim_LC.imag lt 21.7) -sim_LC = sim_LC[ind] -ntot = n_elements(sim_LC) - - -; get the actual cadence from SDSS-RM -file = '/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -target=mrdfits(file,1) -mjd = target[0].mjd -mjd=mjd[0:31] -imjd=mjd - min(mjd) -nmjd=n_elements(mjd) - -remove_tags, sim_LC, ['CONTI_LC','LINE_LC'], result -tmp = {conti_lc:dblarr(nmjd), line_lc:dblarr(nmjd), mjd:mjd} -tmp = replicate(tmp, ntot) -conti_lc = sim_LC.conti_lc & line_lc = sim_LC.line_lc - -result = struct_addtags(result, tmp) -result.conti_lc = conti_lc[imjd,*] -result.line_lc = line_lc[imjd,*] - -outfile = '/data3/yshen/work/composite_lag/mock_sdssrm_lc.fits' - -mwrfits, result, outfile, /create - -end diff --git a/pro/rm/setupplot.pro b/pro/rm/setupplot.pro deleted file mode 100644 index bcba1abcb..000000000 --- a/pro/rm/setupplot.pro +++ /dev/null @@ -1,273 +0,0 @@ -PRO setupplot, type, help=help, test=test, true=true, invbw=invbw, $ - greyscale=greyscale - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;+ -; -; NAME: -; SETUPPLOT -; -; PURPOSE: -; Set up default plotting parameters. Parameters are taken from -; the !pslayout system variable, created by the pslayout procedure. -; The user should put a copy of pslayout in their path and change -; the defaults to suit them. Note pslayout contains tags for setting -; up X and Z buffer as well as PS -; -; Also runs simpctable, to create a set of colors, and defsymbols -; to define the system variables !tsym for true-type font symbols -; and !vsym for vector drawn font symbols, and !csym for use with -; either true-type or vector drawn fonts. -; -; CALLING SEQUENCE: -; setupplot [type, /help, /test, true=true, /invbw] -; -; INPUTS: -; NONE -; -; KEYWORD PARAMETERS: -; /true: Can set /true to use true-type fonts. Can be used to override -; the x_true and ps_true tags in !pslayout -; /test: run a test showing all the symbols created by defsymbols.pro -; /help: print simple syntax/help. -; /invbw: flip colors -; -; OPTIONAL INPUTS: -; -; type: if given, the type is set using set_plot, type -; -; OUTPUTS: -; None unless /test, in which case some plots are made. -; -; OPTIONAL OUTPUTS: -; None -; -; CALLED ROUTINES: -; PSLAYOUT -; SIMPCTABLE -; DEFSYMBOLS -; -; PROCEDURE: -; -; -; -; REVISION HISTORY: -; 19-Mar-2001 Erin Scott Sheldon UofMich -; -; -;- -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - - IF keyword_set(help) THEN BEGIN - print,'-Syntax: setupplot, display_type, help=help, test=test, true=true, $' - print,' invbw=invbw, greyscale=greyscale' - print - print,' Will setup plotting parameters; sets system variables' - print,' for various plotting symbols. ' - print,' use type="ps" for postscript "x" for x-window' - print,' If type is not given, then it is determined from the !d.flags' - print,'Use doc_library,"msetupplot" for more help.' - return - ENDIF - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; Check input device type (optional) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - IF n_elements(type) NE 0 THEN BEGIN - IF datatype(type) NE 'STR' THEN BEGIN - print,'type must be a string' - return - ENDIF - set_plot,type - ENDIF - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; run pslayout. Will define !pslayout (if not already defined) - ;; which contains defaults for postscript output and other stuff, - ;; including whether or not we should use true-type fonts (or - ;; postscript fonts if device is 'ps') - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; the .true tag is obsolete, x_true and ps_true are better, - ;; can control each - pslayout - IF n_elements(true) EQ 0 THEN BEGIN - IF !pslayout.true EQ 1 THEN true=1 ELSE true=0 - ENDIF - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; set up a simple color table - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - IF keyword_set(greyscale) THEN BEGIN - loadct,0 - ENDIF ELSE BEGIN - simpctable - ENDELSE - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; set default background to white if requested - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - IF keyword_set(invbw) THEN BEGIN - !p.background=!white - !p.color = !black - ENDIF - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; set system variables in device dependent way - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - CASE !d.name OF - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; Defaults for the postscript output - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - 'PS': BEGIN - !p.thick = !pslayout.ps_thick - !x.thick = !pslayout.ps_xthick - !y.thick = !pslayout.ps_ythick - !x.ticklen = !pslayout.ps_xticklen - !y.ticklen = !pslayout.ps_yticklen - !p.charsize = !pslayout.ps_charsize - !p.charthick = !pslayout.ps_charthick - - ;; symbols/font defined same way for true and postscript fonts - IF keyword_set(true) OR !pslayout.ps_true THEN !p.font=0 - - END - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; Defaults for the X-windows display - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - 'X': BEGIN - !p.thick = !pslayout.x_thick - !x.thick = !pslayout.x_xthick - !y.thick = !pslayout.x_ythick - !x.ticklen = !pslayout.x_xticklen - !y.ticklen = !pslayout.x_yticklen - !p.charsize = !pslayout.x_charsize - !p.charthick= !pslayout.x_charthick - - ;; use true-type fonts in X? - IF keyword_set(true) OR !pslayout.x_true THEN BEGIN - !p.font = 1 - - ;; set the default font - ;; make a dummy window -; IF display_exists() THEN Begin -; window,/free,/pixmap,xsize=1,ysize=1 -; fset=!pslayout.font -; IF !pslayout.bold THEN fset=fset+' bold' -; IF !pslayout.italic THEN fset=fset+' italic' -; device,set_font=fset,/tt_font -; wdelete,!d.window -; Endif - - ENDIF ELSE BEGIN - !p.font=-1 - ENDELSE - - END - 'Z': BEGIN - !p.thick = !pslayout.z_thick - !x.thick = !pslayout.z_xthick - !y.thick = !pslayout.z_ythick - !x.ticklen = !pslayout.z_xticklen - !y.ticklen = !pslayout.z_yticklen - !p.charsize = !pslayout.z_charsize - !p.charthick= !pslayout.z_charthick - - ;; use true-type fonts in X? - IF keyword_set(true) OR !pslayout.x_true THEN BEGIN - !p.font = 1 - fset=!pslayout.font - IF !pslayout.bold THEN fset=fset+' bold' - IF !pslayout.italic THEN fset=fset+' italic' - device,set_font=fset,/tt_font - ENDIF ELSE BEGIN - !p.font=-1 - ENDELSE - - ;; set the resolution of the z-buffer - device,set_resolution = !pslayout.z_resolution - END - ELSE: message,'type '+type+' unknown' - Endcase - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; Define new system variables to aid plotting - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; golden ratio: send to aplot - defsysv,'!gratio', exists=exists - IF NOT exists THEN defsysv,'!gratio',1.36603 - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; define the plotting symbols: !tsym for true and !vsym for vector - ;; and the common symbols in !csym using the set !p.font to determine - ;; which to use - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - defsymbols - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; demonstrate the symbols if requested -; go 3 columns per page -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - dopage = 1 - column = 1 - IF keyword_set(test) THEN BEGIN - - IF type EQ 'PS' THEN size=0.85 ELSE size=1.5 - - IF keyword_set(true) THEN BEGIN - print,'Testing true type fonts: switching to times' - sym=!TSYM - symtags = tag_names(sym) - symtags = '!!TSYM.' + symtags - firstmess='Symbols defined in !!TSYM system variable' - ENDIF ELSE BEGIN - print,'Testing vector drawn fonts: simplex roman' - sym=!VSYM - symtags = tag_names(sym) - symtags = '!!VSYM.' + symtags - firstmess='Symbols defined in !!VSYM system variable' - ENDELSE - - ntags = n_elements(symtags) - - plot,[0],/nodata,ystyle=4,xstyle=4 - xyouts,0,1,firstmess - - xstep = .35 - ystep = .1 - - ystart = 0.9 - y=ystart - x = 0.0 - FOR i=0, ntags-1 DO BEGIN - - IF ( (i+1) MOD 10) EQ 0 THEN BEGIN - - column=column+1 - IF (column EQ 4) OR (i EQ 0) THEN BEGIN - column=1 - x = 0 - IF strupcase(type) EQ 'X' THEN key=get_kbrd(1) - plot,[0],/nodata,ystyle=4,xstyle=4 - ENDIF ELSE x = x + xstep - y = ystart - - xyouts, x, y, symtags[i]+' '+SYM.(i),charsize=size - ENDIF ELSE BEGIN - IF i NE 0 THEN y = y - ystep - xyouts, x, y, symtags[i]+' '+SYM.(i),charsize=size - ENDELSE - ENDFOR - - ENDIF - - return -END diff --git a/pro/rm/sim_rms_var.pro b/pro/rm/sim_rms_var.pro deleted file mode 100644 index 8b2d11ed8..000000000 --- a/pro/rm/sim_rms_var.pro +++ /dev/null @@ -1,28 +0,0 @@ -; simulate the RMS variability of a continuum plus a line - -pro sim_rms_var, nepoch=nepoch, result = result - -if ~keyword_set(nepoch) then nepoch=1000L - - -; the constant continuum -cont0 = 1.0 -; the variable continuum -cfrac = 0.1 -cont1 = randomn(101L, nepoch)*cfrac*cont0 - - -; the constant line -ew = 0.5 -line0 = cont0*ew -; the variable line -lfrac = 0.2 -line1 = randomn(101L, nepoch)*lfrac*line0 - -cont = cont0 + cont1 -line = line0 + line1 -tot = cont + line - -result={cont:cont, line:line, tot:tot} - -end diff --git a/pro/rm/sim_sigma_bias.pro b/pro/rm/sim_sigma_bias.pro deleted file mode 100644 index 72fc271cd..000000000 --- a/pro/rm/sim_sigma_bias.pro +++ /dev/null @@ -1,183 +0,0 @@ -; simulate quasar samples to demonstrate the selection biases -; start from the velocity dispersion function, assign BH mass, -; then quasar luminosity, then impose threshold luminosity, then compute -; SE mass - -pro sim_sigma_bias,plot_true_bh=plot_true_BH, no_msigma=no_msigma - -; the z=0 VDF from Bernardi et al. (2010), which is similar to the z=0.5 -; VDF as shown in Bezanson et al. (2011). VDF may be different at z=1, but -; the data is sparse there. - -phi0=2.099 & sig0=113.78 & alpha=0.94 & beta1=1.85 - -; generate random points -ntrial = 10000000L -sig_trial = randomu(seed, ntrial)*480. + 20. -; compute probability -; 1) the function in Bernardi (2010) -prob = phi0*(sig_trial/sig0)^alpha*exp(-(sig_trial/sig0)^beta1)/gamma(alpha/beta1)*beta1/sig_trial -; 2) power-law with index alpha - alpha_pl=-2. -; prob=(sig_trial/200.)^alpha_pl -prob=prob/max(prob) -; now generate a random number between 0 and 1 -ran=randomu(seed2, ntrial) -ind=where(prob ge ran, ngood) -sig_keep=sig_trial[ind] - -; assigne BH using KH13, plus 0.3 dex scatter -sig_msig=0.44 ; 0.44 for all gal and 0.3 for elliptical in Gultekin09 -logmbh = alog10(0.309*(sig_keep/200.)^4.38*1d9) + randomn(seed4, ngood)*sig_msig -; this is no intrinsic m-sigma relation -if keyword_Set(no_msigma) then $ - logmbh=8.6 + randomn(seed4, ngood)*sig_msig -mbh = 10.D^logmbh - -; assign luminosity using an Eddington ratio distribution -sig_L=0.3 ; scatter in Eddington ratio distribution -mean_loglambda=-1. -lambda=10.D^(mean_loglambda + randomn(seed3, ngood)*sig_L ) -Lbol = 1.26d38*mbh*lambda -Lbol_mean = 1.26d38*mbh*10.D^mean_loglambda ; the mean luminosity at fixed true BH mass -L5100=Lbol/10. -L5100_mean = Lbol_mean/10. -sig_FWHM=0.18 -logFWHM = 0.5*(logmbh - 0.91 - 0.5*alog10(L5100_mean/1d44)) + sig_FWHM*randomn(seed5,ngood) -logmbh_vp06=0.91 + 0.5*alog10(L5100/1d44) + 2.*logFWHM - -output={sigma:sig_keep, logmbh:logmbh, lambda:lambda, Lbol_mean:Lbol_mean, Lbol:Lbol, $ - L5100:L5100, logFWHM:logFWHM, logmbh_vp06:logmbh_vp06, phi0:phi0, sig0:sig0, $ - alpha:alpha, beta:beta1, alpha_pl:alpha_pl,sig_msig:sig_msig, sig_L:sig_L, sig_FWHM:sig_FWHM } -outfile='/data3/quasar/yshen/work/agn_host/sim/sim_sample.fits' -if keyword_set(no_msigma) then outfile='/data3/quasar/yshen/work/agn_host/sim/sim_sample_nomsigma.fits' -mwrfits, output, outfile, /create - -sim=output -sigma=sim.sigma & l5100=sim.l5100 & logmbh=sim.logmbh & logmbh_vp06=sim.logmbh_vp06 -; shuffle sigma by 0.1 dex -sigma=10.D^(alog10(sigma) + randomn(seed, ngood)*0.1 ) -simsize=0.2 -plot, sim.sigma, 10.D^sim.logmbh,xrange=[30,700],yrange=[1d6,1d11],/xlog,/ylog,/xsty,/ysty,psym=3 -oplot, [10, 1000], 0.309*([10,1000]/200.)^4.38*1d9, line=2,thick=2,color=cgcolor('red') -iend=100 -ind=where(alog10(L5100) gt 43.5) -oplot,sigma[ind[0:iend]],10.D^logmbh_vp06[ind[0:iend]],psym=symcat(16),color=cgcolor('green'),symsize=symsize -ind=where(alog10(L5100) gt 44.) -oplot,sigma[ind[0:iend]],10.D^logmbh_vp06[ind[0:iend]],psym=symcat(16),color=cgcolor('blue'),symsize=symsize -ind=where(alog10(L5100) gt 44.5) -oplot,sigma[ind[0:iend]],10.D^logmbh_vp06[ind[0:iend]],psym=symcat(16),color=cgcolor('red'),symsize=symsize - -if keyword_set(plot_true_BH) then begin -ind=where(alog10(L5100) gt 43.5) -oplot,sigma[ind[0:iend]],10.D^logmbh[ind[0:iend]],psym=symcat(9),color=cgcolor('green'),symsize=symsize -ind=where(alog10(L5100) gt 44.) -oplot,sigma[ind[0:iend]],10.D^logmbh[ind[0:iend]],psym=symcat(9),color=cgcolor('blue'),symsize=symsize -ind=where(alog10(L5100) gt 44.5) -oplot,sigma[ind[0:iend]],10.D^logmbh[ind[0:iend]],psym=symcat(9),color=cgcolor('red'),symsize=symsize -endif - -xyouts, 0.15, 0.92, textoidl('logL_{5100}>43.5'),/norm,color=cgcolor('green'),charsize=1.5 -xyouts, 0.15, 0.87, textoidl('logL_{5100}>44.0'),/norm,color=cgcolor('blue'),charsize=1.5 -xyouts, 0.15, 0.82, textoidl('logL_{5100}>44.5'),/norm,color=cgcolor('red'),charsize=1.5 - -end - -pro plot_sim_bias, no_msigma=no_msigma -font='helvetica' - -file='/data3/quasar/yshen/work/agn_host/sim/sim_sample.fits' -if keyword_set(no_msigma) then file='/data3/quasar/yshen/work/agn_host/sim/sim_sample_nomsigma.fits' -sim=mrdfits(file,1) -sigma=sim.sigma & l5100=sim.l5100 & logmbh=sim.logmbh & logmbh_vp06=sim.logmbh_vp06 -; shuffle sigma by 0.1 dex -ngood=n_elements(sigma) -sigma_mea=10.D^(alog10(sigma) + randomn(666, ngood)*0.1 ) - -lum_thre=[43.5,44., 44.5] - -figfile='/data3/quasar/yshen/work/agn_host/figs/sim_bias.eps' -if keyword_set(no_msigma) then figfile='/data3/quasar/yshen/work/agn_host/figs/sim_bias_nomsigma.eps' -begplot,name=figfile, xsize=10,ysize=6.5,font=font -charsize=2 -xtitle=textoidl('\sigma_* [km s^{-1}]') -;ytitle=textoidl('M_{BH,vir} (H\beta, VP06) [M')+sunsymbol()+']' -ytitle=textoidl('BH Mass [M')+sunsymbol()+']' -xrange=[30,700] & yrange=[1d6,3d10] - -pos0=[0.09, 0.54, 0.39, 0.99] -ticklen=0.03 - -nuse=501L -; plot actual BH masses -tag=['A','B','C'] -for i=0L, 2L do begin - - dx=pos0[2]-pos0[0] & dy=pos0[3]-pos0[1] - pos=[ pos0[0] + dx*i, pos0[1], $ - pos0[2] + dx*i, pos0[3] ] - - if i eq 0 then plot,[0],[0],xrange=xrange,yrange=yrange,pos=pos,/nodata, $ - /noerase,xtickname=replicate(' ', 6L), /xsty, /ysty, /xlog,/ylog,charsize=1.5, $ - xticklen=ticklen, yticklen=ticklen else $ - plot,[0],[0],xrange=xrange,yrange=yrange,pos=pos,/nodata,charsize=1.5, $ - /noerase,xtickname=replicate(' ', 6L),ytickname=replicate(' ', 6L),/xsty, /ysty, /xlog,/ylog, $ - xticklen=ticklen, yticklen=ticklen - oplot, [10, 1000], 0.309*([10,1000]/200.)^4.38*1d9, line=2,thick=5,color=cgcolor('black') - - - ;djs_contourpts, sigma, 10.D^logmbh, /overplot, /nopoints - - ind=where(alog10(L5100) ge lum_thre[i] ) - xarr=alog10(sigma_mea[ind[0:nuse-1]]) & xsig=replicate(0.1, nuse) - yarr=logmbh[ind[0:nuse-1]] & ysig=replicate(0.1,nuse) - linmix_err, xarr,yarr, post, xsig=xsig, ysig=ysig - oplot, sigma_mea[ind[0:nuse-1]], 10.D^logmbh[ind[0:nuse-1]],psym=symcat(9),color=cgcolor('blue') - alpha1=median(post.alpha) & beta1=median(post.beta) - oplot, [10., 1000.], 10.D^alpha1*[10.,1000.]^beta1, thick=5,color=cgcolor('blue') - - - xyouts, 40, 1d10, textoidl('logL_{5100}>')+string(lum_thre[i],format='(f4.1)'),charsize=1.5 - if i eq 0 then xyouts, 40, 4d9, textoidl('M_{BH,true}'),charsize=1.5,color=cgcolor('blue') - - xyouts, 450, 2d6, tag[i], charsize=charsize -endfor -pos0=[0.09, 0.09, 0.39, 0.54] -; plot VP06 BH masses -tag=['D','E','F'] -for i=0L, 2L do begin - - dx=pos0[2]-pos0[0] & dy=pos0[3]-pos0[1] - pos=[ pos0[0] + dx*i, pos0[1], $ - pos0[2] + dx*i, pos0[3] ] - - if i eq 0 then plot,[0],[0],xrange=xrange,yrange=yrange,pos=pos,/nodata, $ - /noerase, /xsty, /ysty, /xlog,/ylog,charsize=1.5, $ - xticklen=ticklen, yticklen=ticklen else $ - plot,[0],[0],xrange=xrange,yrange=yrange,pos=pos,/nodata,charsize=1.5, $ - /noerase,ytickname=replicate(' ', 6L),/xsty, /ysty, /xlog,/ylog, $ - xticklen=ticklen, yticklen=ticklen - oplot, [10, 1000], 0.309*([10,1000]/200.)^4.38*1d9, line=2,thick=5,color=cgcolor('black') - ;djs_contourpts, sigma, 10.D^logmbh, /overplot, /nopoints - - ind=where(alog10(L5100) ge lum_thre[i] ) - xarr=alog10(sigma_mea[ind[0:nuse-1]]) & xsig=replicate(0.1, nuse) - yarr=logmbh_vp06[ind[0:nuse-1]] & ysig=replicate(0.1,nuse) - linmix_err, xarr,yarr, post, xsig=xsig, ysig=ysig - - oplot, sigma_mea[ind[0:nuse-1]], 10.D^logmbh_vp06[ind[0:nuse-1]],psym=symcat(9),color=cgcolor('red') - alpha1=median(post.alpha) & beta1=median(post.beta) - oplot, [10., 1000.], 10.D^alpha1*[10.,1000.]^beta1, thick=5,color=cgcolor('red') - if i eq 0 then xyouts, 40, 1d10, textoidl('M_{BH,VP06}'),charsize=1.5,color=cgcolor('red') - - xyouts, 450, 2d6, tag[i], charsize=charsize - -endfor -xyouts, 0.5, 0.01, align=0.5, xtitle, /norm, charsize=charsize -xyouts, 0.04, 0.5, align=0.5, ytitle, /norm, charsize=charsize, orien=90 - - -endplot - - -end diff --git a/pro/rm/simpctable.pro b/pro/rm/simpctable.pro deleted file mode 100644 index c0f771d4a..000000000 --- a/pro/rm/simpctable.pro +++ /dev/null @@ -1,2243 +0,0 @@ -PRO simpctable, rdct, grct, blct, help=help, bits=bits, showcolors=showcolors - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -;+ -; -; NAME: -; SIMPCTABLE -; -; PURPOSE: -; Define a set of colors for plotting. If the display is 8-bit, a color -; table is created. -; -; CALLING SEQUENCE: -; simpctable, red_ct, green_ct, blue_ct, bits=bits, help=help -; -; COMMENTS: -; Sets system variables with values that correspond to colors. -; -; !Black !White !Red !Green !Blue !Yellow !Cyan !Magenta' -; -; !LightSteelBlue !SkyBlue !DarkSlateGrey' -; !SlateGrey !LightBlue !MidnightBlue' -; !NavyBlue !RoyalBlue !DodgerBlue' -; !DarkBlue !Turquoise !DarkGreen' -; !SeaGreen !ForestGreen !LightGreen' -; !Sienna !Firebrick !Salmon' -; !Orange !OrangeRed !HotPink' -; !DeepPink !Violet !DarkRed' -; !Purple' -; -; !grey0 grey1 ... !grey100' -; -; For 8-bit device or display this is the default set of colors. -; -; On a true-color display, many more colors are defined: all the colors that -; are in the rgb.txt file on unix systems (see the showrgb program). -; You can send the keyword /showcolors the command showrgb, which shows -; the color names. -; -; On an 8-bit display or device (such as postscript) a new color table is -; loaded. 33 colors above are defined plus greys !grey00 to !grey100. Other -; grey values are also available in the color table. you want all greys from -; 0 to 255, run loadct,0 -; -; INPUTS: -; None -; -; OPTIONAL INPUTS: -; bits=bits: input the bits/pixel. Must be either 8 or 24. -; If not set, simpctable will -; determine it from the number of available colors. -; -; KEYWORD PARAMETERS: -; /help: if set, a help message is printed showing the -; the system variables set by SIMPCTABLE -; /showcolors: run the program showrgb if it exists on the machine -; -; OUTPUTS: -; None -; -; OPTIONAL OUTPUTS: -; red_ct, green_ct, blue_ct: The red, green, and blue color arrays -; loaded for 8-bit devices -; Useful for writing gif files from the plotting window. This only -; makes sense on 8-bit devices -; CALLED ROUTINES: -; (TVLCT) if 8-bit device -; -; EXAMPLE: -; IDL > simpctable -; IDL > plot, [0], /nodata, yrange=[-1.2,1.2],xrange=[0,2.*!pi], $ -; IDL > color=!black, background=!white, xstyle=1 -; IDL > x = findgen(300)/299.*2.*!pi -; IDL > y = sin(x) + randomn(seed,300)/5. -; IDL > oplot, x, y, color=!blue -; IDL > oplot, x, sin(x), color=!red -; -; -; -; REVISION HISTORY: -; Written May 09 2000, Erin Scott Sheldon, U. of Michigan -; Revision History: -; 28-Feb-2002 Added all colors in rgb.txt (some 657 colors) -; -;- -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; set up colors. If display exists - ;; then create dummy window to force calcuation - ;; of number of colors (since all begin with - ;; n_colors=256 until display is created) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ;; make sure we have a display before creating dummy - ;; window - - dexist = display_exists() - IF dexist THEN BEGIN - IF !d.name EQ 'X' AND !d.window EQ -1 THEN BEGIN ;Uninitialized? -; If so, make a dummy window to determine the # of colors available. - window,/free,/pixmap,xs=4, ys=4 - wdelete, !d.window - ENDIF - ENDIF - - IF n_elements(bits) EQ 0 THEN BEGIN - IF !d.n_colors LE 256 THEN bitsperpixel=8 $ - ELSE bitsperpixel=24 - ENDIF ELSE BEGIN - IF (bits[0] EQ 8) OR (bits[0] EQ 24) THEN bitsperpixel=bits $ - ELSE message,'bits value of '+strmid( strtrim(string(bits[0]),2),0,1000)+' is invalid. Must be 8 or 24' - ENDELSE - - IF bitsperpixel EQ 8 THEN BEGIN - - n_colors=!d.n_colors < 256 - - rdct = lonarr(n_colors) - grct = rdct - blct = rdct - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; The rgb values for some colors - ;; These will be put at the end of the color table, after the greys - ;; white should be highest number (last in list) - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - names='!'+ ['black','magenta','red','green',$ - 'blue','yellow','cyan','white'] - redtmp = [0, 255, 255, 0, 0, 255, 0, 255] - greentmp = [0, 0, 0, 255, 0, 255, 255, 255] - bluetmp = [0, 255, 0, 0, 255, 0, 255, 255] - - ;; these generated by make_8bitcolors.pro - addnames = '!' + ['lightsteelblue','skyblue','darkslategrey',$ - 'slategrey',$ - 'lightblue','midnightblue','navyblue', $ - 'royalblue','dodgerblue','darkblue', $ - 'turquoise','darkgreen','seagreen', $ - 'forestgreen','lightgreen','sienna', $ - 'firebrick','salmon','orange', $ - 'orangered','hotpink','deeppink', $ - 'violet','darkred','purple'] - - addred = [176, 135, 47, 112, $ - 173, 25, 0, $ - 65, 30, 0, $ - 64, 0, 46, $ - 34, 144, 160, $ - 178, 250, 255, $ - 255, 255, 255, $ - 238, 139, 160] - - addgreen = [196, 206, 79, 128, $ - 216, 25, 0, $ - 105, 144, 0, $ - 224, 100, 139, $ - 139, 238, 82, $ - 34, 128, 165, $ - 69, 105, 20, $ - 130, 0, 32] - - addblue = [222, 235, 79, 144, $ - 230, 112, 128, $ - 225, 255, 139, $ - 208, 0, 87, $ - 34, 144, 45, $ - 34, 114, 0, $ - 0, 180, 147, $ - 238, 0, 240] - - names = [addnames, names] - redtmp = [addred, redtmp] - greentmp = [addgreen, greentmp] - bluetmp = [addblue, bluetmp] - - nc = n_elements(redtmp) - - ;; how many positions are left for other colors (such as the greys)? - left = n_colors-nc - - ;; the indices in the color table for these colors - ;; indices correspond directly with values and names above - colornums = left + lindgen(nc) - - ;; Fill in the end of the color table - rdct[left:n_colors-1] = long(redtmp) - grct[left:n_colors-1] = long(greentmp) - blct[left:n_colors-1] = long(bluetmp) - - ;; create the system variables - FOR i=0L, nc-1 DO BEGIN - defsysv, names[i], colornums[i] - ENDFOR - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; The color values for greys, from black (0) to 255 - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - greys = long( arrscl( findgen(left), 0, 255 ) ) - - rdct[0:left-1] = greys - grct[0:left-1] = greys - blct[0:left-1] = greys - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ;; Define the grey color indices - ;; will use remaining space. If left less than 100+1 then will - ;; have some greys same. If left > 100+1 then some color indices - ;; won't be used - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - - ngrey = 100+1 - greynums = ntostr( long( arrscl( findgen(ngrey), 0, left-1 ) ) )+'L' - FOR i=0L, ngrey-1 DO BEGIN - color = greynums[i] - name = "'!grey"+ntostr(i)+"'" - command='defsysv, '+name+', '+color - IF NOT execute(command) THEN message,'Error' - ENDFOR - - ;;;;;;;;;;;;;;;;;;;;;;;; - ;; load the color table - ;;;;;;;;;;;;;;;;;;;;;;;; - - IF dexist OR (!d.name EQ 'PS') THEN tvlct, rdct, grct, blct - - ENDIF ELSE BEGIN - - ;; these generated by make_truecolors.pro - - R=255L & G=250L & B=250L - defsysv, '!snow', R + 256L*(G+256L*B) - - R=248L & G=248L & B=255L - defsysv, '!GhostWhite', R + 256L*(G+256L*B) - - R=245L & G=245L & B=245L - defsysv, '!WhiteSmoke', R + 256L*(G+256L*B) - - R=220L & G=220L & B=220L - defsysv, '!gainsboro', R + 256L*(G+256L*B) - - R=255L & G=250L & B=240L - defsysv, '!FloralWhite', R + 256L*(G+256L*B) - - R=253L & G=245L & B=230L - defsysv, '!OldLace', R + 256L*(G+256L*B) - - R=250L & G=240L & B=230L - defsysv, '!linen', R + 256L*(G+256L*B) - - R=250L & G=235L & B=215L - defsysv, '!AntiqueWhite', R + 256L*(G+256L*B) - - R=255L & G=239L & B=213L - defsysv, '!PapayaWhip', R + 256L*(G+256L*B) - - R=255L & G=235L & B=205L - defsysv, '!BlanchedAlmond', R + 256L*(G+256L*B) - - R=255L & G=228L & B=196L - defsysv, '!bisque', R + 256L*(G+256L*B) - - R=255L & G=218L & B=185L - defsysv, '!PeachPuff', R + 256L*(G+256L*B) - - R=255L & G=222L & B=173L - defsysv, '!NavajoWhite', R + 256L*(G+256L*B) - - R=255L & G=228L & B=181L - defsysv, '!moccasin', R + 256L*(G+256L*B) - - R=255L & G=248L & B=220L - defsysv, '!cornsilk', R + 256L*(G+256L*B) - - R=255L & G=255L & B=240L - defsysv, '!ivory', R + 256L*(G+256L*B) - - R=255L & G=250L & B=205L - defsysv, '!LemonChiffon', R + 256L*(G+256L*B) - - R=255L & G=245L & B=238L - defsysv, '!seashell', R + 256L*(G+256L*B) - - R=240L & G=255L & B=240L - defsysv, '!honeydew', R + 256L*(G+256L*B) - - R=245L & G=255L & B=250L - defsysv, '!MintCream', R + 256L*(G+256L*B) - - R=240L & G=255L & B=255L - defsysv, '!azure', R + 256L*(G+256L*B) - - R=240L & G=248L & B=255L - defsysv, '!AliceBlue', R + 256L*(G+256L*B) - - R=230L & G=230L & B=250L - defsysv, '!lavender', R + 256L*(G+256L*B) - - R=255L & G=240L & B=245L - defsysv, '!LavenderBlush', R + 256L*(G+256L*B) - - R=255L & G=228L & B=225L - defsysv, '!MistyRose', R + 256L*(G+256L*B) - - R=255L & G=255L & B=255L - defsysv, '!white', R + 256L*(G+256L*B) - - R=0L & G=0L & B=0L - defsysv, '!black', R + 256L*(G+256L*B) - - R=47L & G=79L & B=79L - defsysv, '!DarkSlateGray', R + 256L*(G+256L*B) - - R=47L & G=79L & B=79L - defsysv, '!DarkSlateGrey', R + 256L*(G+256L*B) - - R=105L & G=105L & B=105L - defsysv, '!DimGray', R + 256L*(G+256L*B) - - R=105L & G=105L & B=105L - defsysv, '!DimGrey', R + 256L*(G+256L*B) - - R=112L & G=128L & B=144L - defsysv, '!SlateGray', R + 256L*(G+256L*B) - - R=112L & G=128L & B=144L - defsysv, '!SlateGrey', R + 256L*(G+256L*B) - - R=119L & G=136L & B=153L - defsysv, '!LightSlateGray', R + 256L*(G+256L*B) - - R=119L & G=136L & B=153L - defsysv, '!LightSlateGrey', R + 256L*(G+256L*B) - - R=190L & G=190L & B=190L - defsysv, '!gray', R + 256L*(G+256L*B) - - R=190L & G=190L & B=190L - defsysv, '!grey', R + 256L*(G+256L*B) - - R=211L & G=211L & B=211L - defsysv, '!LightGrey', R + 256L*(G+256L*B) - - R=211L & G=211L & B=211L - defsysv, '!LightGray', R + 256L*(G+256L*B) - - R=25L & G=25L & B=112L - defsysv, '!MidnightBlue', R + 256L*(G+256L*B) - - R=0L & G=0L & B=128L - defsysv, '!navy', R + 256L*(G+256L*B) - - R=0L & G=0L & B=128L - defsysv, '!NavyBlue', R + 256L*(G+256L*B) - - R=100L & G=149L & B=237L - defsysv, '!CornflowerBlue', R + 256L*(G+256L*B) - - R=72L & G=61L & B=139L - defsysv, '!DarkSlateBlue', R + 256L*(G+256L*B) - - R=106L & G=90L & B=205L - defsysv, '!SlateBlue', R + 256L*(G+256L*B) - - R=123L & G=104L & B=238L - defsysv, '!MediumSlateBlue', R + 256L*(G+256L*B) - - R=132L & G=112L & B=255L - defsysv, '!LightSlateBlue', R + 256L*(G+256L*B) - - R=0L & G=0L & B=205L - defsysv, '!MediumBlue', R + 256L*(G+256L*B) - - R=65L & G=105L & B=225L - defsysv, '!RoyalBlue', R + 256L*(G+256L*B) - - R=0L & G=0L & B=255L - defsysv, '!blue', R + 256L*(G+256L*B) - - R=30L & G=144L & B=255L - defsysv, '!DodgerBlue', R + 256L*(G+256L*B) - - R=0L & G=191L & B=255L - defsysv, '!DeepSkyBlue', R + 256L*(G+256L*B) - - R=135L & G=206L & B=235L - defsysv, '!SkyBlue', R + 256L*(G+256L*B) - - R=135L & G=206L & B=250L - defsysv, '!LightSkyBlue', R + 256L*(G+256L*B) - - R=70L & G=130L & B=180L - defsysv, '!SteelBlue', R + 256L*(G+256L*B) - - R=176L & G=196L & B=222L - defsysv, '!LightSteelBlue', R + 256L*(G+256L*B) - - R=173L & G=216L & B=230L - defsysv, '!LightBlue', R + 256L*(G+256L*B) - - R=176L & G=224L & B=230L - defsysv, '!PowderBlue', R + 256L*(G+256L*B) - - R=175L & G=238L & B=238L - defsysv, '!PaleTurquoise', R + 256L*(G+256L*B) - - R=0L & G=206L & B=209L - defsysv, '!DarkTurquoise', R + 256L*(G+256L*B) - - R=72L & G=209L & B=204L - defsysv, '!MediumTurquoise', R + 256L*(G+256L*B) - - R=64L & G=224L & B=208L - defsysv, '!turquoise', R + 256L*(G+256L*B) - - R=0L & G=255L & B=255L - defsysv, '!cyan', R + 256L*(G+256L*B) - - R=224L & G=255L & B=255L - defsysv, '!LightCyan', R + 256L*(G+256L*B) - - R=95L & G=158L & B=160L - defsysv, '!CadetBlue', R + 256L*(G+256L*B) - - R=102L & G=205L & B=170L - defsysv, '!MediumAquamarine', R + 256L*(G+256L*B) - - R=127L & G=255L & B=212L - defsysv, '!aquamarine', R + 256L*(G+256L*B) - - R=0L & G=100L & B=0L - defsysv, '!DarkGreen', R + 256L*(G+256L*B) - - R=85L & G=107L & B=47L - defsysv, '!DarkOliveGreen', R + 256L*(G+256L*B) - - R=143L & G=188L & B=143L - defsysv, '!DarkSeaGreen', R + 256L*(G+256L*B) - - R=46L & G=139L & B=87L - defsysv, '!SeaGreen', R + 256L*(G+256L*B) - - R=60L & G=179L & B=113L - defsysv, '!MediumSeaGreen', R + 256L*(G+256L*B) - - R=32L & G=178L & B=170L - defsysv, '!LightSeaGreen', R + 256L*(G+256L*B) - - R=152L & G=251L & B=152L - defsysv, '!PaleGreen', R + 256L*(G+256L*B) - - R=0L & G=255L & B=127L - defsysv, '!SpringGreen', R + 256L*(G+256L*B) - - R=124L & G=252L & B=0L - defsysv, '!LawnGreen', R + 256L*(G+256L*B) - - R=0L & G=255L & B=0L - defsysv, '!green', R + 256L*(G+256L*B) - - R=127L & G=255L & B=0L - defsysv, '!chartreuse', R + 256L*(G+256L*B) - - R=0L & G=250L & B=154L - defsysv, '!MediumSpringGreen', R + 256L*(G+256L*B) - - R=173L & G=255L & B=47L - defsysv, '!GreenYellow', R + 256L*(G+256L*B) - - R=50L & G=205L & B=50L - defsysv, '!LimeGreen', R + 256L*(G+256L*B) - - R=154L & G=205L & B=50L - defsysv, '!YellowGreen', R + 256L*(G+256L*B) - - R=34L & G=139L & B=34L - defsysv, '!ForestGreen', R + 256L*(G+256L*B) - - R=107L & G=142L & B=35L - defsysv, '!OliveDrab', R + 256L*(G+256L*B) - - R=189L & G=183L & B=107L - defsysv, '!DarkKhaki', R + 256L*(G+256L*B) - - R=240L & G=230L & B=140L - defsysv, '!khaki', R + 256L*(G+256L*B) - - R=238L & G=232L & B=170L - defsysv, '!PaleGoldenrod', R + 256L*(G+256L*B) - - R=250L & G=250L & B=210L - defsysv, '!LightGoldenrodYellow', R + 256L*(G+256L*B) - - R=255L & G=255L & B=224L - defsysv, '!LightYellow', R + 256L*(G+256L*B) - - R=255L & G=255L & B=0L - defsysv, '!yellow', R + 256L*(G+256L*B) - - R=255L & G=215L & B=0L - defsysv, '!gold', R + 256L*(G+256L*B) - - R=238L & G=221L & B=130L - defsysv, '!LightGoldenrod', R + 256L*(G+256L*B) - - R=218L & G=165L & B=32L - defsysv, '!goldenrod', R + 256L*(G+256L*B) - - R=184L & G=134L & B=11L - defsysv, '!DarkGoldenrod', R + 256L*(G+256L*B) - - R=188L & G=143L & B=143L - defsysv, '!RosyBrown', R + 256L*(G+256L*B) - - R=205L & G=92L & B=92L - defsysv, '!IndianRed', R + 256L*(G+256L*B) - - R=139L & G=69L & B=19L - defsysv, '!SaddleBrown', R + 256L*(G+256L*B) - - R=160L & G=82L & B=45L - defsysv, '!sienna', R + 256L*(G+256L*B) - - R=205L & G=133L & B=63L - defsysv, '!peru', R + 256L*(G+256L*B) - - R=222L & G=184L & B=135L - defsysv, '!burlywood', R + 256L*(G+256L*B) - - R=245L & G=245L & B=220L - defsysv, '!beige', R + 256L*(G+256L*B) - - R=245L & G=222L & B=179L - defsysv, '!wheat', R + 256L*(G+256L*B) - - R=244L & G=164L & B=96L - defsysv, '!SandyBrown', R + 256L*(G+256L*B) - - R=210L & G=180L & B=140L - defsysv, '!tan', R + 256L*(G+256L*B) - - R=210L & G=105L & B=30L - defsysv, '!chocolate', R + 256L*(G+256L*B) - - R=178L & G=34L & B=34L - defsysv, '!firebrick', R + 256L*(G+256L*B) - - R=165L & G=42L & B=42L - defsysv, '!brown', R + 256L*(G+256L*B) - - R=233L & G=150L & B=122L - defsysv, '!DarkSalmon', R + 256L*(G+256L*B) - - R=250L & G=128L & B=114L - defsysv, '!salmon', R + 256L*(G+256L*B) - - R=255L & G=160L & B=122L - defsysv, '!LightSalmon', R + 256L*(G+256L*B) - - R=255L & G=165L & B=0L - defsysv, '!orange', R + 256L*(G+256L*B) - - R=255L & G=140L & B=0L - defsysv, '!DarkOrange', R + 256L*(G+256L*B) - - R=255L & G=127L & B=80L - defsysv, '!coral', R + 256L*(G+256L*B) - - R=240L & G=128L & B=128L - defsysv, '!LightCoral', R + 256L*(G+256L*B) - - R=255L & G=99L & B=71L - defsysv, '!tomato', R + 256L*(G+256L*B) - - R=255L & G=69L & B=0L - defsysv, '!OrangeRed', R + 256L*(G+256L*B) - - R=255L & G=0L & B=0L - defsysv, '!red', R + 256L*(G+256L*B) - - R=255L & G=105L & B=180L - defsysv, '!HotPink', R + 256L*(G+256L*B) - - R=255L & G=20L & B=147L - defsysv, '!DeepPink', R + 256L*(G+256L*B) - - R=255L & G=192L & B=203L - defsysv, '!pink', R + 256L*(G+256L*B) - - R=255L & G=182L & B=193L - defsysv, '!LightPink', R + 256L*(G+256L*B) - - R=219L & G=112L & B=147L - defsysv, '!PaleVioletRed', R + 256L*(G+256L*B) - - R=176L & G=48L & B=96L - defsysv, '!maroon', R + 256L*(G+256L*B) - - R=199L & G=21L & B=133L - defsysv, '!MediumVioletRed', R + 256L*(G+256L*B) - - R=208L & G=32L & B=144L - defsysv, '!VioletRed', R + 256L*(G+256L*B) - - R=255L & G=0L & B=255L - defsysv, '!magenta', R + 256L*(G+256L*B) - - R=238L & G=130L & B=238L - defsysv, '!violet', R + 256L*(G+256L*B) - - R=221L & G=160L & B=221L - defsysv, '!plum', R + 256L*(G+256L*B) - - R=218L & G=112L & B=214L - defsysv, '!orchid', R + 256L*(G+256L*B) - - R=186L & G=85L & B=211L - defsysv, '!MediumOrchid', R + 256L*(G+256L*B) - - R=153L & G=50L & B=204L - defsysv, '!DarkOrchid', R + 256L*(G+256L*B) - - R=148L & G=0L & B=211L - defsysv, '!DarkViolet', R + 256L*(G+256L*B) - - R=138L & G=43L & B=226L - defsysv, '!BlueViolet', R + 256L*(G+256L*B) - - R=160L & G=32L & B=240L - defsysv, '!purple', R + 256L*(G+256L*B) - - R=147L & G=112L & B=219L - defsysv, '!MediumPurple', R + 256L*(G+256L*B) - - R=216L & G=191L & B=216L - defsysv, '!thistle', R + 256L*(G+256L*B) - - R=255L & G=250L & B=250L - defsysv, '!snow1', R + 256L*(G+256L*B) - - R=238L & G=233L & B=233L - defsysv, '!snow2', R + 256L*(G+256L*B) - - R=205L & G=201L & B=201L - defsysv, '!snow3', R + 256L*(G+256L*B) - - R=139L & G=137L & B=137L - defsysv, '!snow4', R + 256L*(G+256L*B) - - R=255L & G=245L & B=238L - defsysv, '!seashell1', R + 256L*(G+256L*B) - - R=238L & G=229L & B=222L - defsysv, '!seashell2', R + 256L*(G+256L*B) - - R=205L & G=197L & B=191L - defsysv, '!seashell3', R + 256L*(G+256L*B) - - R=139L & G=134L & B=130L - defsysv, '!seashell4', R + 256L*(G+256L*B) - - R=255L & G=239L & B=219L - defsysv, '!AntiqueWhite1', R + 256L*(G+256L*B) - - R=238L & G=223L & B=204L - defsysv, '!AntiqueWhite2', R + 256L*(G+256L*B) - - R=205L & G=192L & B=176L - defsysv, '!AntiqueWhite3', R + 256L*(G+256L*B) - - R=139L & G=131L & B=120L - defsysv, '!AntiqueWhite4', R + 256L*(G+256L*B) - - R=255L & G=228L & B=196L - defsysv, '!bisque1', R + 256L*(G+256L*B) - - R=238L & G=213L & B=183L - defsysv, '!bisque2', R + 256L*(G+256L*B) - - R=205L & G=183L & B=158L - defsysv, '!bisque3', R + 256L*(G+256L*B) - - R=139L & G=125L & B=107L - defsysv, '!bisque4', R + 256L*(G+256L*B) - - R=255L & G=218L & B=185L - defsysv, '!PeachPuff1', R + 256L*(G+256L*B) - - R=238L & G=203L & B=173L - defsysv, '!PeachPuff2', R + 256L*(G+256L*B) - - R=205L & G=175L & B=149L - defsysv, '!PeachPuff3', R + 256L*(G+256L*B) - - R=139L & G=119L & B=101L - defsysv, '!PeachPuff4', R + 256L*(G+256L*B) - - R=255L & G=222L & B=173L - defsysv, '!NavajoWhite1', R + 256L*(G+256L*B) - - R=238L & G=207L & B=161L - defsysv, '!NavajoWhite2', R + 256L*(G+256L*B) - - R=205L & G=179L & B=139L - defsysv, '!NavajoWhite3', R + 256L*(G+256L*B) - - R=139L & G=121L & B=94L - defsysv, '!NavajoWhite4', R + 256L*(G+256L*B) - - R=255L & G=250L & B=205L - defsysv, '!LemonChiffon1', R + 256L*(G+256L*B) - - R=238L & G=233L & B=191L - defsysv, '!LemonChiffon2', R + 256L*(G+256L*B) - - R=205L & G=201L & B=165L - defsysv, '!LemonChiffon3', R + 256L*(G+256L*B) - - R=139L & G=137L & B=112L - defsysv, '!LemonChiffon4', R + 256L*(G+256L*B) - - R=255L & G=248L & B=220L - defsysv, '!cornsilk1', R + 256L*(G+256L*B) - - R=238L & G=232L & B=205L - defsysv, '!cornsilk2', R + 256L*(G+256L*B) - - R=205L & G=200L & B=177L - defsysv, '!cornsilk3', R + 256L*(G+256L*B) - - R=139L & G=136L & B=120L - defsysv, '!cornsilk4', R + 256L*(G+256L*B) - - R=255L & G=255L & B=240L - defsysv, '!ivory1', R + 256L*(G+256L*B) - - R=238L & G=238L & B=224L - defsysv, '!ivory2', R + 256L*(G+256L*B) - - R=205L & G=205L & B=193L - defsysv, '!ivory3', R + 256L*(G+256L*B) - - R=139L & G=139L & B=131L - defsysv, '!ivory4', R + 256L*(G+256L*B) - - R=240L & G=255L & B=240L - defsysv, '!honeydew1', R + 256L*(G+256L*B) - - R=224L & G=238L & B=224L - defsysv, '!honeydew2', R + 256L*(G+256L*B) - - R=193L & G=205L & B=193L - defsysv, '!honeydew3', R + 256L*(G+256L*B) - - R=131L & G=139L & B=131L - defsysv, '!honeydew4', R + 256L*(G+256L*B) - - R=255L & G=240L & B=245L - defsysv, '!LavenderBlush1', R + 256L*(G+256L*B) - - R=238L & G=224L & B=229L - defsysv, '!LavenderBlush2', R + 256L*(G+256L*B) - - R=205L & G=193L & B=197L - defsysv, '!LavenderBlush3', R + 256L*(G+256L*B) - - R=139L & G=131L & B=134L - defsysv, '!LavenderBlush4', R + 256L*(G+256L*B) - - R=255L & G=228L & B=225L - defsysv, '!MistyRose1', R + 256L*(G+256L*B) - - R=238L & G=213L & B=210L - defsysv, '!MistyRose2', R + 256L*(G+256L*B) - - R=205L & G=183L & B=181L - defsysv, '!MistyRose3', R + 256L*(G+256L*B) - - R=139L & G=125L & B=123L - defsysv, '!MistyRose4', R + 256L*(G+256L*B) - - R=240L & G=255L & B=255L - defsysv, '!azure1', R + 256L*(G+256L*B) - - R=224L & G=238L & B=238L - defsysv, '!azure2', R + 256L*(G+256L*B) - - R=193L & G=205L & B=205L - defsysv, '!azure3', R + 256L*(G+256L*B) - - R=131L & G=139L & B=139L - defsysv, '!azure4', R + 256L*(G+256L*B) - - R=131L & G=111L & B=255L - defsysv, '!SlateBlue1', R + 256L*(G+256L*B) - - R=122L & G=103L & B=238L - defsysv, '!SlateBlue2', R + 256L*(G+256L*B) - - R=105L & G=89L & B=205L - defsysv, '!SlateBlue3', R + 256L*(G+256L*B) - - R=71L & G=60L & B=139L - defsysv, '!SlateBlue4', R + 256L*(G+256L*B) - - R=72L & G=118L & B=255L - defsysv, '!RoyalBlue1', R + 256L*(G+256L*B) - - R=67L & G=110L & B=238L - defsysv, '!RoyalBlue2', R + 256L*(G+256L*B) - - R=58L & G=95L & B=205L - defsysv, '!RoyalBlue3', R + 256L*(G+256L*B) - - R=39L & G=64L & B=139L - defsysv, '!RoyalBlue4', R + 256L*(G+256L*B) - - R=0L & G=0L & B=255L - defsysv, '!blue1', R + 256L*(G+256L*B) - - R=0L & G=0L & B=238L - defsysv, '!blue2', R + 256L*(G+256L*B) - - R=0L & G=0L & B=205L - defsysv, '!blue3', R + 256L*(G+256L*B) - - R=0L & G=0L & B=139L - defsysv, '!blue4', R + 256L*(G+256L*B) - - R=30L & G=144L & B=255L - defsysv, '!DodgerBlue1', R + 256L*(G+256L*B) - - R=28L & G=134L & B=238L - defsysv, '!DodgerBlue2', R + 256L*(G+256L*B) - - R=24L & G=116L & B=205L - defsysv, '!DodgerBlue3', R + 256L*(G+256L*B) - - R=16L & G=78L & B=139L - defsysv, '!DodgerBlue4', R + 256L*(G+256L*B) - - R=99L & G=184L & B=255L - defsysv, '!SteelBlue1', R + 256L*(G+256L*B) - - R=92L & G=172L & B=238L - defsysv, '!SteelBlue2', R + 256L*(G+256L*B) - - R=79L & G=148L & B=205L - defsysv, '!SteelBlue3', R + 256L*(G+256L*B) - - R=54L & G=100L & B=139L - defsysv, '!SteelBlue4', R + 256L*(G+256L*B) - - R=0L & G=191L & B=255L - defsysv, '!DeepSkyBlue1', R + 256L*(G+256L*B) - - R=0L & G=178L & B=238L - defsysv, '!DeepSkyBlue2', R + 256L*(G+256L*B) - - R=0L & G=154L & B=205L - defsysv, '!DeepSkyBlue3', R + 256L*(G+256L*B) - - R=0L & G=104L & B=139L - defsysv, '!DeepSkyBlue4', R + 256L*(G+256L*B) - - R=135L & G=206L & B=255L - defsysv, '!SkyBlue1', R + 256L*(G+256L*B) - - R=126L & G=192L & B=238L - defsysv, '!SkyBlue2', R + 256L*(G+256L*B) - - R=108L & G=166L & B=205L - defsysv, '!SkyBlue3', R + 256L*(G+256L*B) - - R=74L & G=112L & B=139L - defsysv, '!SkyBlue4', R + 256L*(G+256L*B) - - R=176L & G=226L & B=255L - defsysv, '!LightSkyBlue1', R + 256L*(G+256L*B) - - R=164L & G=211L & B=238L - defsysv, '!LightSkyBlue2', R + 256L*(G+256L*B) - - R=141L & G=182L & B=205L - defsysv, '!LightSkyBlue3', R + 256L*(G+256L*B) - - R=96L & G=123L & B=139L - defsysv, '!LightSkyBlue4', R + 256L*(G+256L*B) - - R=198L & G=226L & B=255L - defsysv, '!SlateGray1', R + 256L*(G+256L*B) - - R=185L & G=211L & B=238L - defsysv, '!SlateGray2', R + 256L*(G+256L*B) - - R=159L & G=182L & B=205L - defsysv, '!SlateGray3', R + 256L*(G+256L*B) - - R=108L & G=123L & B=139L - defsysv, '!SlateGray4', R + 256L*(G+256L*B) - - R=202L & G=225L & B=255L - defsysv, '!LightSteelBlue1', R + 256L*(G+256L*B) - - R=188L & G=210L & B=238L - defsysv, '!LightSteelBlue2', R + 256L*(G+256L*B) - - R=162L & G=181L & B=205L - defsysv, '!LightSteelBlue3', R + 256L*(G+256L*B) - - R=110L & G=123L & B=139L - defsysv, '!LightSteelBlue4', R + 256L*(G+256L*B) - - R=191L & G=239L & B=255L - defsysv, '!LightBlue1', R + 256L*(G+256L*B) - - R=178L & G=223L & B=238L - defsysv, '!LightBlue2', R + 256L*(G+256L*B) - - R=154L & G=192L & B=205L - defsysv, '!LightBlue3', R + 256L*(G+256L*B) - - R=104L & G=131L & B=139L - defsysv, '!LightBlue4', R + 256L*(G+256L*B) - - R=224L & G=255L & B=255L - defsysv, '!LightCyan1', R + 256L*(G+256L*B) - - R=209L & G=238L & B=238L - defsysv, '!LightCyan2', R + 256L*(G+256L*B) - - R=180L & G=205L & B=205L - defsysv, '!LightCyan3', R + 256L*(G+256L*B) - - R=122L & G=139L & B=139L - defsysv, '!LightCyan4', R + 256L*(G+256L*B) - - R=187L & G=255L & B=255L - defsysv, '!PaleTurquoise1', R + 256L*(G+256L*B) - - R=174L & G=238L & B=238L - defsysv, '!PaleTurquoise2', R + 256L*(G+256L*B) - - R=150L & G=205L & B=205L - defsysv, '!PaleTurquoise3', R + 256L*(G+256L*B) - - R=102L & G=139L & B=139L - defsysv, '!PaleTurquoise4', R + 256L*(G+256L*B) - - R=152L & G=245L & B=255L - defsysv, '!CadetBlue1', R + 256L*(G+256L*B) - - R=142L & G=229L & B=238L - defsysv, '!CadetBlue2', R + 256L*(G+256L*B) - - R=122L & G=197L & B=205L - defsysv, '!CadetBlue3', R + 256L*(G+256L*B) - - R=83L & G=134L & B=139L - defsysv, '!CadetBlue4', R + 256L*(G+256L*B) - - R=0L & G=245L & B=255L - defsysv, '!turquoise1', R + 256L*(G+256L*B) - - R=0L & G=229L & B=238L - defsysv, '!turquoise2', R + 256L*(G+256L*B) - - R=0L & G=197L & B=205L - defsysv, '!turquoise3', R + 256L*(G+256L*B) - - R=0L & G=134L & B=139L - defsysv, '!turquoise4', R + 256L*(G+256L*B) - - R=0L & G=255L & B=255L - defsysv, '!cyan1', R + 256L*(G+256L*B) - - R=0L & G=238L & B=238L - defsysv, '!cyan2', R + 256L*(G+256L*B) - - R=0L & G=205L & B=205L - defsysv, '!cyan3', R + 256L*(G+256L*B) - - R=0L & G=139L & B=139L - defsysv, '!cyan4', R + 256L*(G+256L*B) - - R=151L & G=255L & B=255L - defsysv, '!DarkSlateGray1', R + 256L*(G+256L*B) - - R=141L & G=238L & B=238L - defsysv, '!DarkSlateGray2', R + 256L*(G+256L*B) - - R=121L & G=205L & B=205L - defsysv, '!DarkSlateGray3', R + 256L*(G+256L*B) - - R=82L & G=139L & B=139L - defsysv, '!DarkSlateGray4', R + 256L*(G+256L*B) - - R=127L & G=255L & B=212L - defsysv, '!aquamarine1', R + 256L*(G+256L*B) - - R=118L & G=238L & B=198L - defsysv, '!aquamarine2', R + 256L*(G+256L*B) - - R=102L & G=205L & B=170L - defsysv, '!aquamarine3', R + 256L*(G+256L*B) - - R=69L & G=139L & B=116L - defsysv, '!aquamarine4', R + 256L*(G+256L*B) - - R=193L & G=255L & B=193L - defsysv, '!DarkSeaGreen1', R + 256L*(G+256L*B) - - R=180L & G=238L & B=180L - defsysv, '!DarkSeaGreen2', R + 256L*(G+256L*B) - - R=155L & G=205L & B=155L - defsysv, '!DarkSeaGreen3', R + 256L*(G+256L*B) - - R=105L & G=139L & B=105L - defsysv, '!DarkSeaGreen4', R + 256L*(G+256L*B) - - R=84L & G=255L & B=159L - defsysv, '!SeaGreen1', R + 256L*(G+256L*B) - - R=78L & G=238L & B=148L - defsysv, '!SeaGreen2', R + 256L*(G+256L*B) - - R=67L & G=205L & B=128L - defsysv, '!SeaGreen3', R + 256L*(G+256L*B) - - R=46L & G=139L & B=87L - defsysv, '!SeaGreen4', R + 256L*(G+256L*B) - - R=154L & G=255L & B=154L - defsysv, '!PaleGreen1', R + 256L*(G+256L*B) - - R=144L & G=238L & B=144L - defsysv, '!PaleGreen2', R + 256L*(G+256L*B) - - R=124L & G=205L & B=124L - defsysv, '!PaleGreen3', R + 256L*(G+256L*B) - - R=84L & G=139L & B=84L - defsysv, '!PaleGreen4', R + 256L*(G+256L*B) - - R=0L & G=255L & B=127L - defsysv, '!SpringGreen1', R + 256L*(G+256L*B) - - R=0L & G=238L & B=118L - defsysv, '!SpringGreen2', R + 256L*(G+256L*B) - - R=0L & G=205L & B=102L - defsysv, '!SpringGreen3', R + 256L*(G+256L*B) - - R=0L & G=139L & B=69L - defsysv, '!SpringGreen4', R + 256L*(G+256L*B) - - R=0L & G=255L & B=0L - defsysv, '!green1', R + 256L*(G+256L*B) - - R=0L & G=238L & B=0L - defsysv, '!green2', R + 256L*(G+256L*B) - - R=0L & G=205L & B=0L - defsysv, '!green3', R + 256L*(G+256L*B) - - R=0L & G=139L & B=0L - defsysv, '!green4', R + 256L*(G+256L*B) - - R=127L & G=255L & B=0L - defsysv, '!chartreuse1', R + 256L*(G+256L*B) - - R=118L & G=238L & B=0L - defsysv, '!chartreuse2', R + 256L*(G+256L*B) - - R=102L & G=205L & B=0L - defsysv, '!chartreuse3', R + 256L*(G+256L*B) - - R=69L & G=139L & B=0L - defsysv, '!chartreuse4', R + 256L*(G+256L*B) - - R=192L & G=255L & B=62L - defsysv, '!OliveDrab1', R + 256L*(G+256L*B) - - R=179L & G=238L & B=58L - defsysv, '!OliveDrab2', R + 256L*(G+256L*B) - - R=154L & G=205L & B=50L - defsysv, '!OliveDrab3', R + 256L*(G+256L*B) - - R=105L & G=139L & B=34L - defsysv, '!OliveDrab4', R + 256L*(G+256L*B) - - R=202L & G=255L & B=112L - defsysv, '!DarkOliveGreen1', R + 256L*(G+256L*B) - - R=188L & G=238L & B=104L - defsysv, '!DarkOliveGreen2', R + 256L*(G+256L*B) - - R=162L & G=205L & B=90L - defsysv, '!DarkOliveGreen3', R + 256L*(G+256L*B) - - R=110L & G=139L & B=61L - defsysv, '!DarkOliveGreen4', R + 256L*(G+256L*B) - - R=255L & G=246L & B=143L - defsysv, '!khaki1', R + 256L*(G+256L*B) - - R=238L & G=230L & B=133L - defsysv, '!khaki2', R + 256L*(G+256L*B) - - R=205L & G=198L & B=115L - defsysv, '!khaki3', R + 256L*(G+256L*B) - - R=139L & G=134L & B=78L - defsysv, '!khaki4', R + 256L*(G+256L*B) - - R=255L & G=236L & B=139L - defsysv, '!LightGoldenrod1', R + 256L*(G+256L*B) - - R=238L & G=220L & B=130L - defsysv, '!LightGoldenrod2', R + 256L*(G+256L*B) - - R=205L & G=190L & B=112L - defsysv, '!LightGoldenrod3', R + 256L*(G+256L*B) - - R=139L & G=129L & B=76L - defsysv, '!LightGoldenrod4', R + 256L*(G+256L*B) - - R=255L & G=255L & B=224L - defsysv, '!LightYellow1', R + 256L*(G+256L*B) - - R=238L & G=238L & B=209L - defsysv, '!LightYellow2', R + 256L*(G+256L*B) - - R=205L & G=205L & B=180L - defsysv, '!LightYellow3', R + 256L*(G+256L*B) - - R=139L & G=139L & B=122L - defsysv, '!LightYellow4', R + 256L*(G+256L*B) - - R=255L & G=255L & B=0L - defsysv, '!yellow1', R + 256L*(G+256L*B) - - R=238L & G=238L & B=0L - defsysv, '!yellow2', R + 256L*(G+256L*B) - - R=205L & G=205L & B=0L - defsysv, '!yellow3', R + 256L*(G+256L*B) - - R=139L & G=139L & B=0L - defsysv, '!yellow4', R + 256L*(G+256L*B) - - R=255L & G=215L & B=0L - defsysv, '!gold1', R + 256L*(G+256L*B) - - R=238L & G=201L & B=0L - defsysv, '!gold2', R + 256L*(G+256L*B) - - R=205L & G=173L & B=0L - defsysv, '!gold3', R + 256L*(G+256L*B) - - R=139L & G=117L & B=0L - defsysv, '!gold4', R + 256L*(G+256L*B) - - R=255L & G=193L & B=37L - defsysv, '!goldenrod1', R + 256L*(G+256L*B) - - R=238L & G=180L & B=34L - defsysv, '!goldenrod2', R + 256L*(G+256L*B) - - R=205L & G=155L & B=29L - defsysv, '!goldenrod3', R + 256L*(G+256L*B) - - R=139L & G=105L & B=20L - defsysv, '!goldenrod4', R + 256L*(G+256L*B) - - R=255L & G=185L & B=15L - defsysv, '!DarkGoldenrod1', R + 256L*(G+256L*B) - - R=238L & G=173L & B=14L - defsysv, '!DarkGoldenrod2', R + 256L*(G+256L*B) - - R=205L & G=149L & B=12L - defsysv, '!DarkGoldenrod3', R + 256L*(G+256L*B) - - R=139L & G=101L & B=8L - defsysv, '!DarkGoldenrod4', R + 256L*(G+256L*B) - - R=255L & G=193L & B=193L - defsysv, '!RosyBrown1', R + 256L*(G+256L*B) - - R=238L & G=180L & B=180L - defsysv, '!RosyBrown2', R + 256L*(G+256L*B) - - R=205L & G=155L & B=155L - defsysv, '!RosyBrown3', R + 256L*(G+256L*B) - - R=139L & G=105L & B=105L - defsysv, '!RosyBrown4', R + 256L*(G+256L*B) - - R=255L & G=106L & B=106L - defsysv, '!IndianRed1', R + 256L*(G+256L*B) - - R=238L & G=99L & B=99L - defsysv, '!IndianRed2', R + 256L*(G+256L*B) - - R=205L & G=85L & B=85L - defsysv, '!IndianRed3', R + 256L*(G+256L*B) - - R=139L & G=58L & B=58L - defsysv, '!IndianRed4', R + 256L*(G+256L*B) - - R=255L & G=130L & B=71L - defsysv, '!sienna1', R + 256L*(G+256L*B) - - R=238L & G=121L & B=66L - defsysv, '!sienna2', R + 256L*(G+256L*B) - - R=205L & G=104L & B=57L - defsysv, '!sienna3', R + 256L*(G+256L*B) - - R=139L & G=71L & B=38L - defsysv, '!sienna4', R + 256L*(G+256L*B) - - R=255L & G=211L & B=155L - defsysv, '!burlywood1', R + 256L*(G+256L*B) - - R=238L & G=197L & B=145L - defsysv, '!burlywood2', R + 256L*(G+256L*B) - - R=205L & G=170L & B=125L - defsysv, '!burlywood3', R + 256L*(G+256L*B) - - R=139L & G=115L & B=85L - defsysv, '!burlywood4', R + 256L*(G+256L*B) - - R=255L & G=231L & B=186L - defsysv, '!wheat1', R + 256L*(G+256L*B) - - R=238L & G=216L & B=174L - defsysv, '!wheat2', R + 256L*(G+256L*B) - - R=205L & G=186L & B=150L - defsysv, '!wheat3', R + 256L*(G+256L*B) - - R=139L & G=126L & B=102L - defsysv, '!wheat4', R + 256L*(G+256L*B) - - R=255L & G=165L & B=79L - defsysv, '!tan1', R + 256L*(G+256L*B) - - R=238L & G=154L & B=73L - defsysv, '!tan2', R + 256L*(G+256L*B) - - R=205L & G=133L & B=63L - defsysv, '!tan3', R + 256L*(G+256L*B) - - R=139L & G=90L & B=43L - defsysv, '!tan4', R + 256L*(G+256L*B) - - R=255L & G=127L & B=36L - defsysv, '!chocolate1', R + 256L*(G+256L*B) - - R=238L & G=118L & B=33L - defsysv, '!chocolate2', R + 256L*(G+256L*B) - - R=205L & G=102L & B=29L - defsysv, '!chocolate3', R + 256L*(G+256L*B) - - R=139L & G=69L & B=19L - defsysv, '!chocolate4', R + 256L*(G+256L*B) - - R=255L & G=48L & B=48L - defsysv, '!firebrick1', R + 256L*(G+256L*B) - - R=238L & G=44L & B=44L - defsysv, '!firebrick2', R + 256L*(G+256L*B) - - R=205L & G=38L & B=38L - defsysv, '!firebrick3', R + 256L*(G+256L*B) - - R=139L & G=26L & B=26L - defsysv, '!firebrick4', R + 256L*(G+256L*B) - - R=255L & G=64L & B=64L - defsysv, '!brown1', R + 256L*(G+256L*B) - - R=238L & G=59L & B=59L - defsysv, '!brown2', R + 256L*(G+256L*B) - - R=205L & G=51L & B=51L - defsysv, '!brown3', R + 256L*(G+256L*B) - - R=139L & G=35L & B=35L - defsysv, '!brown4', R + 256L*(G+256L*B) - - R=255L & G=140L & B=105L - defsysv, '!salmon1', R + 256L*(G+256L*B) - - R=238L & G=130L & B=98L - defsysv, '!salmon2', R + 256L*(G+256L*B) - - R=205L & G=112L & B=84L - defsysv, '!salmon3', R + 256L*(G+256L*B) - - R=139L & G=76L & B=57L - defsysv, '!salmon4', R + 256L*(G+256L*B) - - R=255L & G=160L & B=122L - defsysv, '!LightSalmon1', R + 256L*(G+256L*B) - - R=238L & G=149L & B=114L - defsysv, '!LightSalmon2', R + 256L*(G+256L*B) - - R=205L & G=129L & B=98L - defsysv, '!LightSalmon3', R + 256L*(G+256L*B) - - R=139L & G=87L & B=66L - defsysv, '!LightSalmon4', R + 256L*(G+256L*B) - - R=255L & G=165L & B=0L - defsysv, '!orange1', R + 256L*(G+256L*B) - - R=238L & G=154L & B=0L - defsysv, '!orange2', R + 256L*(G+256L*B) - - R=205L & G=133L & B=0L - defsysv, '!orange3', R + 256L*(G+256L*B) - - R=139L & G=90L & B=0L - defsysv, '!orange4', R + 256L*(G+256L*B) - - R=255L & G=127L & B=0L - defsysv, '!DarkOrange1', R + 256L*(G+256L*B) - - R=238L & G=118L & B=0L - defsysv, '!DarkOrange2', R + 256L*(G+256L*B) - - R=205L & G=102L & B=0L - defsysv, '!DarkOrange3', R + 256L*(G+256L*B) - - R=139L & G=69L & B=0L - defsysv, '!DarkOrange4', R + 256L*(G+256L*B) - - R=255L & G=114L & B=86L - defsysv, '!coral1', R + 256L*(G+256L*B) - - R=238L & G=106L & B=80L - defsysv, '!coral2', R + 256L*(G+256L*B) - - R=205L & G=91L & B=69L - defsysv, '!coral3', R + 256L*(G+256L*B) - - R=139L & G=62L & B=47L - defsysv, '!coral4', R + 256L*(G+256L*B) - - R=255L & G=99L & B=71L - defsysv, '!tomato1', R + 256L*(G+256L*B) - - R=238L & G=92L & B=66L - defsysv, '!tomato2', R + 256L*(G+256L*B) - - R=205L & G=79L & B=57L - defsysv, '!tomato3', R + 256L*(G+256L*B) - - R=139L & G=54L & B=38L - defsysv, '!tomato4', R + 256L*(G+256L*B) - - R=255L & G=69L & B=0L - defsysv, '!OrangeRed1', R + 256L*(G+256L*B) - - R=238L & G=64L & B=0L - defsysv, '!OrangeRed2', R + 256L*(G+256L*B) - - R=205L & G=55L & B=0L - defsysv, '!OrangeRed3', R + 256L*(G+256L*B) - - R=139L & G=37L & B=0L - defsysv, '!OrangeRed4', R + 256L*(G+256L*B) - - R=255L & G=0L & B=0L - defsysv, '!red1', R + 256L*(G+256L*B) - - R=238L & G=0L & B=0L - defsysv, '!red2', R + 256L*(G+256L*B) - - R=205L & G=0L & B=0L - defsysv, '!red3', R + 256L*(G+256L*B) - - R=139L & G=0L & B=0L - defsysv, '!red4', R + 256L*(G+256L*B) - - R=255L & G=20L & B=147L - defsysv, '!DeepPink1', R + 256L*(G+256L*B) - - R=238L & G=18L & B=137L - defsysv, '!DeepPink2', R + 256L*(G+256L*B) - - R=205L & G=16L & B=118L - defsysv, '!DeepPink3', R + 256L*(G+256L*B) - - R=139L & G=10L & B=80L - defsysv, '!DeepPink4', R + 256L*(G+256L*B) - - R=255L & G=110L & B=180L - defsysv, '!HotPink1', R + 256L*(G+256L*B) - - R=238L & G=106L & B=167L - defsysv, '!HotPink2', R + 256L*(G+256L*B) - - R=205L & G=96L & B=144L - defsysv, '!HotPink3', R + 256L*(G+256L*B) - - R=139L & G=58L & B=98L - defsysv, '!HotPink4', R + 256L*(G+256L*B) - - R=255L & G=181L & B=197L - defsysv, '!pink1', R + 256L*(G+256L*B) - - R=238L & G=169L & B=184L - defsysv, '!pink2', R + 256L*(G+256L*B) - - R=205L & G=145L & B=158L - defsysv, '!pink3', R + 256L*(G+256L*B) - - R=139L & G=99L & B=108L - defsysv, '!pink4', R + 256L*(G+256L*B) - - R=255L & G=174L & B=185L - defsysv, '!LightPink1', R + 256L*(G+256L*B) - - R=238L & G=162L & B=173L - defsysv, '!LightPink2', R + 256L*(G+256L*B) - - R=205L & G=140L & B=149L - defsysv, '!LightPink3', R + 256L*(G+256L*B) - - R=139L & G=95L & B=101L - defsysv, '!LightPink4', R + 256L*(G+256L*B) - - R=255L & G=130L & B=171L - defsysv, '!PaleVioletRed1', R + 256L*(G+256L*B) - - R=238L & G=121L & B=159L - defsysv, '!PaleVioletRed2', R + 256L*(G+256L*B) - - R=205L & G=104L & B=137L - defsysv, '!PaleVioletRed3', R + 256L*(G+256L*B) - - R=139L & G=71L & B=93L - defsysv, '!PaleVioletRed4', R + 256L*(G+256L*B) - - R=255L & G=52L & B=179L - defsysv, '!maroon1', R + 256L*(G+256L*B) - - R=238L & G=48L & B=167L - defsysv, '!maroon2', R + 256L*(G+256L*B) - - R=205L & G=41L & B=144L - defsysv, '!maroon3', R + 256L*(G+256L*B) - - R=139L & G=28L & B=98L - defsysv, '!maroon4', R + 256L*(G+256L*B) - - R=255L & G=62L & B=150L - defsysv, '!VioletRed1', R + 256L*(G+256L*B) - - R=238L & G=58L & B=140L - defsysv, '!VioletRed2', R + 256L*(G+256L*B) - - R=205L & G=50L & B=120L - defsysv, '!VioletRed3', R + 256L*(G+256L*B) - - R=139L & G=34L & B=82L - defsysv, '!VioletRed4', R + 256L*(G+256L*B) - - R=255L & G=0L & B=255L - defsysv, '!magenta1', R + 256L*(G+256L*B) - - R=238L & G=0L & B=238L - defsysv, '!magenta2', R + 256L*(G+256L*B) - - R=205L & G=0L & B=205L - defsysv, '!magenta3', R + 256L*(G+256L*B) - - R=139L & G=0L & B=139L - defsysv, '!magenta4', R + 256L*(G+256L*B) - - R=255L & G=131L & B=250L - defsysv, '!orchid1', R + 256L*(G+256L*B) - - R=238L & G=122L & B=233L - defsysv, '!orchid2', R + 256L*(G+256L*B) - - R=205L & G=105L & B=201L - defsysv, '!orchid3', R + 256L*(G+256L*B) - - R=139L & G=71L & B=137L - defsysv, '!orchid4', R + 256L*(G+256L*B) - - R=255L & G=187L & B=255L - defsysv, '!plum1', R + 256L*(G+256L*B) - - R=238L & G=174L & B=238L - defsysv, '!plum2', R + 256L*(G+256L*B) - - R=205L & G=150L & B=205L - defsysv, '!plum3', R + 256L*(G+256L*B) - - R=139L & G=102L & B=139L - defsysv, '!plum4', R + 256L*(G+256L*B) - - R=224L & G=102L & B=255L - defsysv, '!MediumOrchid1', R + 256L*(G+256L*B) - - R=209L & G=95L & B=238L - defsysv, '!MediumOrchid2', R + 256L*(G+256L*B) - - R=180L & G=82L & B=205L - defsysv, '!MediumOrchid3', R + 256L*(G+256L*B) - - R=122L & G=55L & B=139L - defsysv, '!MediumOrchid4', R + 256L*(G+256L*B) - - R=191L & G=62L & B=255L - defsysv, '!DarkOrchid1', R + 256L*(G+256L*B) - - R=178L & G=58L & B=238L - defsysv, '!DarkOrchid2', R + 256L*(G+256L*B) - - R=154L & G=50L & B=205L - defsysv, '!DarkOrchid3', R + 256L*(G+256L*B) - - R=104L & G=34L & B=139L - defsysv, '!DarkOrchid4', R + 256L*(G+256L*B) - - R=155L & G=48L & B=255L - defsysv, '!purple1', R + 256L*(G+256L*B) - - R=145L & G=44L & B=238L - defsysv, '!purple2', R + 256L*(G+256L*B) - - R=125L & G=38L & B=205L - defsysv, '!purple3', R + 256L*(G+256L*B) - - R=85L & G=26L & B=139L - defsysv, '!purple4', R + 256L*(G+256L*B) - - R=171L & G=130L & B=255L - defsysv, '!MediumPurple1', R + 256L*(G+256L*B) - - R=159L & G=121L & B=238L - defsysv, '!MediumPurple2', R + 256L*(G+256L*B) - - R=137L & G=104L & B=205L - defsysv, '!MediumPurple3', R + 256L*(G+256L*B) - - R=93L & G=71L & B=139L - defsysv, '!MediumPurple4', R + 256L*(G+256L*B) - - R=255L & G=225L & B=255L - defsysv, '!thistle1', R + 256L*(G+256L*B) - - R=238L & G=210L & B=238L - defsysv, '!thistle2', R + 256L*(G+256L*B) - - R=205L & G=181L & B=205L - defsysv, '!thistle3', R + 256L*(G+256L*B) - - R=139L & G=123L & B=139L - defsysv, '!thistle4', R + 256L*(G+256L*B) - - R=0L & G=0L & B=0L - defsysv, '!gray0', R + 256L*(G+256L*B) - - R=0L & G=0L & B=0L - defsysv, '!grey0', R + 256L*(G+256L*B) - - R=3L & G=3L & B=3L - defsysv, '!gray1', R + 256L*(G+256L*B) - - R=3L & G=3L & B=3L - defsysv, '!grey1', R + 256L*(G+256L*B) - - R=5L & G=5L & B=5L - defsysv, '!gray2', R + 256L*(G+256L*B) - - R=5L & G=5L & B=5L - defsysv, '!grey2', R + 256L*(G+256L*B) - - R=8L & G=8L & B=8L - defsysv, '!gray3', R + 256L*(G+256L*B) - - R=8L & G=8L & B=8L - defsysv, '!grey3', R + 256L*(G+256L*B) - - R=10L & G=10L & B=10L - defsysv, '!gray4', R + 256L*(G+256L*B) - - R=10L & G=10L & B=10L - defsysv, '!grey4', R + 256L*(G+256L*B) - - R=13L & G=13L & B=13L - defsysv, '!gray5', R + 256L*(G+256L*B) - - R=13L & G=13L & B=13L - defsysv, '!grey5', R + 256L*(G+256L*B) - - R=15L & G=15L & B=15L - defsysv, '!gray6', R + 256L*(G+256L*B) - - R=15L & G=15L & B=15L - defsysv, '!grey6', R + 256L*(G+256L*B) - - R=18L & G=18L & B=18L - defsysv, '!gray7', R + 256L*(G+256L*B) - - R=18L & G=18L & B=18L - defsysv, '!grey7', R + 256L*(G+256L*B) - - R=20L & G=20L & B=20L - defsysv, '!gray8', R + 256L*(G+256L*B) - - R=20L & G=20L & B=20L - defsysv, '!grey8', R + 256L*(G+256L*B) - - R=23L & G=23L & B=23L - defsysv, '!gray9', R + 256L*(G+256L*B) - - R=23L & G=23L & B=23L - defsysv, '!grey9', R + 256L*(G+256L*B) - - R=26L & G=26L & B=26L - defsysv, '!gray10', R + 256L*(G+256L*B) - - R=26L & G=26L & B=26L - defsysv, '!grey10', R + 256L*(G+256L*B) - - R=28L & G=28L & B=28L - defsysv, '!gray11', R + 256L*(G+256L*B) - - R=28L & G=28L & B=28L - defsysv, '!grey11', R + 256L*(G+256L*B) - - R=31L & G=31L & B=31L - defsysv, '!gray12', R + 256L*(G+256L*B) - - R=31L & G=31L & B=31L - defsysv, '!grey12', R + 256L*(G+256L*B) - - R=33L & G=33L & B=33L - defsysv, '!gray13', R + 256L*(G+256L*B) - - R=33L & G=33L & B=33L - defsysv, '!grey13', R + 256L*(G+256L*B) - - R=36L & G=36L & B=36L - defsysv, '!gray14', R + 256L*(G+256L*B) - - R=36L & G=36L & B=36L - defsysv, '!grey14', R + 256L*(G+256L*B) - - R=38L & G=38L & B=38L - defsysv, '!gray15', R + 256L*(G+256L*B) - - R=38L & G=38L & B=38L - defsysv, '!grey15', R + 256L*(G+256L*B) - - R=41L & G=41L & B=41L - defsysv, '!gray16', R + 256L*(G+256L*B) - - R=41L & G=41L & B=41L - defsysv, '!grey16', R + 256L*(G+256L*B) - - R=43L & G=43L & B=43L - defsysv, '!gray17', R + 256L*(G+256L*B) - - R=43L & G=43L & B=43L - defsysv, '!grey17', R + 256L*(G+256L*B) - - R=46L & G=46L & B=46L - defsysv, '!gray18', R + 256L*(G+256L*B) - - R=46L & G=46L & B=46L - defsysv, '!grey18', R + 256L*(G+256L*B) - - R=48L & G=48L & B=48L - defsysv, '!gray19', R + 256L*(G+256L*B) - - R=48L & G=48L & B=48L - defsysv, '!grey19', R + 256L*(G+256L*B) - - R=51L & G=51L & B=51L - defsysv, '!gray20', R + 256L*(G+256L*B) - - R=51L & G=51L & B=51L - defsysv, '!grey20', R + 256L*(G+256L*B) - - R=54L & G=54L & B=54L - defsysv, '!gray21', R + 256L*(G+256L*B) - - R=54L & G=54L & B=54L - defsysv, '!grey21', R + 256L*(G+256L*B) - - R=56L & G=56L & B=56L - defsysv, '!gray22', R + 256L*(G+256L*B) - - R=56L & G=56L & B=56L - defsysv, '!grey22', R + 256L*(G+256L*B) - - R=59L & G=59L & B=59L - defsysv, '!gray23', R + 256L*(G+256L*B) - - R=59L & G=59L & B=59L - defsysv, '!grey23', R + 256L*(G+256L*B) - - R=61L & G=61L & B=61L - defsysv, '!gray24', R + 256L*(G+256L*B) - - R=61L & G=61L & B=61L - defsysv, '!grey24', R + 256L*(G+256L*B) - - R=64L & G=64L & B=64L - defsysv, '!gray25', R + 256L*(G+256L*B) - - R=64L & G=64L & B=64L - defsysv, '!grey25', R + 256L*(G+256L*B) - - R=66L & G=66L & B=66L - defsysv, '!gray26', R + 256L*(G+256L*B) - - R=66L & G=66L & B=66L - defsysv, '!grey26', R + 256L*(G+256L*B) - - R=69L & G=69L & B=69L - defsysv, '!gray27', R + 256L*(G+256L*B) - - R=69L & G=69L & B=69L - defsysv, '!grey27', R + 256L*(G+256L*B) - - R=71L & G=71L & B=71L - defsysv, '!gray28', R + 256L*(G+256L*B) - - R=71L & G=71L & B=71L - defsysv, '!grey28', R + 256L*(G+256L*B) - - R=74L & G=74L & B=74L - defsysv, '!gray29', R + 256L*(G+256L*B) - - R=74L & G=74L & B=74L - defsysv, '!grey29', R + 256L*(G+256L*B) - - R=77L & G=77L & B=77L - defsysv, '!gray30', R + 256L*(G+256L*B) - - R=77L & G=77L & B=77L - defsysv, '!grey30', R + 256L*(G+256L*B) - - R=79L & G=79L & B=79L - defsysv, '!gray31', R + 256L*(G+256L*B) - - R=79L & G=79L & B=79L - defsysv, '!grey31', R + 256L*(G+256L*B) - - R=82L & G=82L & B=82L - defsysv, '!gray32', R + 256L*(G+256L*B) - - R=82L & G=82L & B=82L - defsysv, '!grey32', R + 256L*(G+256L*B) - - R=84L & G=84L & B=84L - defsysv, '!gray33', R + 256L*(G+256L*B) - - R=84L & G=84L & B=84L - defsysv, '!grey33', R + 256L*(G+256L*B) - - R=87L & G=87L & B=87L - defsysv, '!gray34', R + 256L*(G+256L*B) - - R=87L & G=87L & B=87L - defsysv, '!grey34', R + 256L*(G+256L*B) - - R=89L & G=89L & B=89L - defsysv, '!gray35', R + 256L*(G+256L*B) - - R=89L & G=89L & B=89L - defsysv, '!grey35', R + 256L*(G+256L*B) - - R=92L & G=92L & B=92L - defsysv, '!gray36', R + 256L*(G+256L*B) - - R=92L & G=92L & B=92L - defsysv, '!grey36', R + 256L*(G+256L*B) - - R=94L & G=94L & B=94L - defsysv, '!gray37', R + 256L*(G+256L*B) - - R=94L & G=94L & B=94L - defsysv, '!grey37', R + 256L*(G+256L*B) - - R=97L & G=97L & B=97L - defsysv, '!gray38', R + 256L*(G+256L*B) - - R=97L & G=97L & B=97L - defsysv, '!grey38', R + 256L*(G+256L*B) - - R=99L & G=99L & B=99L - defsysv, '!gray39', R + 256L*(G+256L*B) - - R=99L & G=99L & B=99L - defsysv, '!grey39', R + 256L*(G+256L*B) - - R=102L & G=102L & B=102L - defsysv, '!gray40', R + 256L*(G+256L*B) - - R=102L & G=102L & B=102L - defsysv, '!grey40', R + 256L*(G+256L*B) - - R=105L & G=105L & B=105L - defsysv, '!gray41', R + 256L*(G+256L*B) - - R=105L & G=105L & B=105L - defsysv, '!grey41', R + 256L*(G+256L*B) - - R=107L & G=107L & B=107L - defsysv, '!gray42', R + 256L*(G+256L*B) - - R=107L & G=107L & B=107L - defsysv, '!grey42', R + 256L*(G+256L*B) - - R=110L & G=110L & B=110L - defsysv, '!gray43', R + 256L*(G+256L*B) - - R=110L & G=110L & B=110L - defsysv, '!grey43', R + 256L*(G+256L*B) - - R=112L & G=112L & B=112L - defsysv, '!gray44', R + 256L*(G+256L*B) - - R=112L & G=112L & B=112L - defsysv, '!grey44', R + 256L*(G+256L*B) - - R=115L & G=115L & B=115L - defsysv, '!gray45', R + 256L*(G+256L*B) - - R=115L & G=115L & B=115L - defsysv, '!grey45', R + 256L*(G+256L*B) - - R=117L & G=117L & B=117L - defsysv, '!gray46', R + 256L*(G+256L*B) - - R=117L & G=117L & B=117L - defsysv, '!grey46', R + 256L*(G+256L*B) - - R=120L & G=120L & B=120L - defsysv, '!gray47', R + 256L*(G+256L*B) - - R=120L & G=120L & B=120L - defsysv, '!grey47', R + 256L*(G+256L*B) - - R=122L & G=122L & B=122L - defsysv, '!gray48', R + 256L*(G+256L*B) - - R=122L & G=122L & B=122L - defsysv, '!grey48', R + 256L*(G+256L*B) - - R=125L & G=125L & B=125L - defsysv, '!gray49', R + 256L*(G+256L*B) - - R=125L & G=125L & B=125L - defsysv, '!grey49', R + 256L*(G+256L*B) - - R=127L & G=127L & B=127L - defsysv, '!gray50', R + 256L*(G+256L*B) - - R=127L & G=127L & B=127L - defsysv, '!grey50', R + 256L*(G+256L*B) - - R=130L & G=130L & B=130L - defsysv, '!gray51', R + 256L*(G+256L*B) - - R=130L & G=130L & B=130L - defsysv, '!grey51', R + 256L*(G+256L*B) - - R=133L & G=133L & B=133L - defsysv, '!gray52', R + 256L*(G+256L*B) - - R=133L & G=133L & B=133L - defsysv, '!grey52', R + 256L*(G+256L*B) - - R=135L & G=135L & B=135L - defsysv, '!gray53', R + 256L*(G+256L*B) - - R=135L & G=135L & B=135L - defsysv, '!grey53', R + 256L*(G+256L*B) - - R=138L & G=138L & B=138L - defsysv, '!gray54', R + 256L*(G+256L*B) - - R=138L & G=138L & B=138L - defsysv, '!grey54', R + 256L*(G+256L*B) - - R=140L & G=140L & B=140L - defsysv, '!gray55', R + 256L*(G+256L*B) - - R=140L & G=140L & B=140L - defsysv, '!grey55', R + 256L*(G+256L*B) - - R=143L & G=143L & B=143L - defsysv, '!gray56', R + 256L*(G+256L*B) - - R=143L & G=143L & B=143L - defsysv, '!grey56', R + 256L*(G+256L*B) - - R=145L & G=145L & B=145L - defsysv, '!gray57', R + 256L*(G+256L*B) - - R=145L & G=145L & B=145L - defsysv, '!grey57', R + 256L*(G+256L*B) - - R=148L & G=148L & B=148L - defsysv, '!gray58', R + 256L*(G+256L*B) - - R=148L & G=148L & B=148L - defsysv, '!grey58', R + 256L*(G+256L*B) - - R=150L & G=150L & B=150L - defsysv, '!gray59', R + 256L*(G+256L*B) - - R=150L & G=150L & B=150L - defsysv, '!grey59', R + 256L*(G+256L*B) - - R=153L & G=153L & B=153L - defsysv, '!gray60', R + 256L*(G+256L*B) - - R=153L & G=153L & B=153L - defsysv, '!grey60', R + 256L*(G+256L*B) - - R=156L & G=156L & B=156L - defsysv, '!gray61', R + 256L*(G+256L*B) - - R=156L & G=156L & B=156L - defsysv, '!grey61', R + 256L*(G+256L*B) - - R=158L & G=158L & B=158L - defsysv, '!gray62', R + 256L*(G+256L*B) - - R=158L & G=158L & B=158L - defsysv, '!grey62', R + 256L*(G+256L*B) - - R=161L & G=161L & B=161L - defsysv, '!gray63', R + 256L*(G+256L*B) - - R=161L & G=161L & B=161L - defsysv, '!grey63', R + 256L*(G+256L*B) - - R=163L & G=163L & B=163L - defsysv, '!gray64', R + 256L*(G+256L*B) - - R=163L & G=163L & B=163L - defsysv, '!grey64', R + 256L*(G+256L*B) - - R=166L & G=166L & B=166L - defsysv, '!gray65', R + 256L*(G+256L*B) - - R=166L & G=166L & B=166L - defsysv, '!grey65', R + 256L*(G+256L*B) - - R=168L & G=168L & B=168L - defsysv, '!gray66', R + 256L*(G+256L*B) - - R=168L & G=168L & B=168L - defsysv, '!grey66', R + 256L*(G+256L*B) - - R=171L & G=171L & B=171L - defsysv, '!gray67', R + 256L*(G+256L*B) - - R=171L & G=171L & B=171L - defsysv, '!grey67', R + 256L*(G+256L*B) - - R=173L & G=173L & B=173L - defsysv, '!gray68', R + 256L*(G+256L*B) - - R=173L & G=173L & B=173L - defsysv, '!grey68', R + 256L*(G+256L*B) - - R=176L & G=176L & B=176L - defsysv, '!gray69', R + 256L*(G+256L*B) - - R=176L & G=176L & B=176L - defsysv, '!grey69', R + 256L*(G+256L*B) - - R=179L & G=179L & B=179L - defsysv, '!gray70', R + 256L*(G+256L*B) - - R=179L & G=179L & B=179L - defsysv, '!grey70', R + 256L*(G+256L*B) - - R=181L & G=181L & B=181L - defsysv, '!gray71', R + 256L*(G+256L*B) - - R=181L & G=181L & B=181L - defsysv, '!grey71', R + 256L*(G+256L*B) - - R=184L & G=184L & B=184L - defsysv, '!gray72', R + 256L*(G+256L*B) - - R=184L & G=184L & B=184L - defsysv, '!grey72', R + 256L*(G+256L*B) - - R=186L & G=186L & B=186L - defsysv, '!gray73', R + 256L*(G+256L*B) - - R=186L & G=186L & B=186L - defsysv, '!grey73', R + 256L*(G+256L*B) - - R=189L & G=189L & B=189L - defsysv, '!gray74', R + 256L*(G+256L*B) - - R=189L & G=189L & B=189L - defsysv, '!grey74', R + 256L*(G+256L*B) - - R=191L & G=191L & B=191L - defsysv, '!gray75', R + 256L*(G+256L*B) - - R=191L & G=191L & B=191L - defsysv, '!grey75', R + 256L*(G+256L*B) - - R=194L & G=194L & B=194L - defsysv, '!gray76', R + 256L*(G+256L*B) - - R=194L & G=194L & B=194L - defsysv, '!grey76', R + 256L*(G+256L*B) - - R=196L & G=196L & B=196L - defsysv, '!gray77', R + 256L*(G+256L*B) - - R=196L & G=196L & B=196L - defsysv, '!grey77', R + 256L*(G+256L*B) - - R=199L & G=199L & B=199L - defsysv, '!gray78', R + 256L*(G+256L*B) - - R=199L & G=199L & B=199L - defsysv, '!grey78', R + 256L*(G+256L*B) - - R=201L & G=201L & B=201L - defsysv, '!gray79', R + 256L*(G+256L*B) - - R=201L & G=201L & B=201L - defsysv, '!grey79', R + 256L*(G+256L*B) - - R=204L & G=204L & B=204L - defsysv, '!gray80', R + 256L*(G+256L*B) - - R=204L & G=204L & B=204L - defsysv, '!grey80', R + 256L*(G+256L*B) - - R=207L & G=207L & B=207L - defsysv, '!gray81', R + 256L*(G+256L*B) - - R=207L & G=207L & B=207L - defsysv, '!grey81', R + 256L*(G+256L*B) - - R=209L & G=209L & B=209L - defsysv, '!gray82', R + 256L*(G+256L*B) - - R=209L & G=209L & B=209L - defsysv, '!grey82', R + 256L*(G+256L*B) - - R=212L & G=212L & B=212L - defsysv, '!gray83', R + 256L*(G+256L*B) - - R=212L & G=212L & B=212L - defsysv, '!grey83', R + 256L*(G+256L*B) - - R=214L & G=214L & B=214L - defsysv, '!gray84', R + 256L*(G+256L*B) - - R=214L & G=214L & B=214L - defsysv, '!grey84', R + 256L*(G+256L*B) - - R=217L & G=217L & B=217L - defsysv, '!gray85', R + 256L*(G+256L*B) - - R=217L & G=217L & B=217L - defsysv, '!grey85', R + 256L*(G+256L*B) - - R=219L & G=219L & B=219L - defsysv, '!gray86', R + 256L*(G+256L*B) - - R=219L & G=219L & B=219L - defsysv, '!grey86', R + 256L*(G+256L*B) - - R=222L & G=222L & B=222L - defsysv, '!gray87', R + 256L*(G+256L*B) - - R=222L & G=222L & B=222L - defsysv, '!grey87', R + 256L*(G+256L*B) - - R=224L & G=224L & B=224L - defsysv, '!gray88', R + 256L*(G+256L*B) - - R=224L & G=224L & B=224L - defsysv, '!grey88', R + 256L*(G+256L*B) - - R=227L & G=227L & B=227L - defsysv, '!gray89', R + 256L*(G+256L*B) - - R=227L & G=227L & B=227L - defsysv, '!grey89', R + 256L*(G+256L*B) - - R=229L & G=229L & B=229L - defsysv, '!gray90', R + 256L*(G+256L*B) - - R=229L & G=229L & B=229L - defsysv, '!grey90', R + 256L*(G+256L*B) - - R=232L & G=232L & B=232L - defsysv, '!gray91', R + 256L*(G+256L*B) - - R=232L & G=232L & B=232L - defsysv, '!grey91', R + 256L*(G+256L*B) - - R=235L & G=235L & B=235L - defsysv, '!gray92', R + 256L*(G+256L*B) - - R=235L & G=235L & B=235L - defsysv, '!grey92', R + 256L*(G+256L*B) - - R=237L & G=237L & B=237L - defsysv, '!gray93', R + 256L*(G+256L*B) - - R=237L & G=237L & B=237L - defsysv, '!grey93', R + 256L*(G+256L*B) - - R=240L & G=240L & B=240L - defsysv, '!gray94', R + 256L*(G+256L*B) - - R=240L & G=240L & B=240L - defsysv, '!grey94', R + 256L*(G+256L*B) - - R=242L & G=242L & B=242L - defsysv, '!gray95', R + 256L*(G+256L*B) - - R=242L & G=242L & B=242L - defsysv, '!grey95', R + 256L*(G+256L*B) - - R=245L & G=245L & B=245L - defsysv, '!gray96', R + 256L*(G+256L*B) - - R=245L & G=245L & B=245L - defsysv, '!grey96', R + 256L*(G+256L*B) - - R=247L & G=247L & B=247L - defsysv, '!gray97', R + 256L*(G+256L*B) - - R=247L & G=247L & B=247L - defsysv, '!grey97', R + 256L*(G+256L*B) - - R=250L & G=250L & B=250L - defsysv, '!gray98', R + 256L*(G+256L*B) - - R=250L & G=250L & B=250L - defsysv, '!grey98', R + 256L*(G+256L*B) - - R=252L & G=252L & B=252L - defsysv, '!gray99', R + 256L*(G+256L*B) - - R=252L & G=252L & B=252L - defsysv, '!grey99', R + 256L*(G+256L*B) - - R=255L & G=255L & B=255L - defsysv, '!gray100', R + 256L*(G+256L*B) - - R=255L & G=255L & B=255L - defsysv, '!grey100', R + 256L*(G+256L*B) - - R=169L & G=169L & B=169L - defsysv, '!DarkGrey', R + 256L*(G+256L*B) - - R=169L & G=169L & B=169L - defsysv, '!DarkGray', R + 256L*(G+256L*B) - - R=0L & G=0L & B=139L - defsysv, '!DarkBlue', R + 256L*(G+256L*B) - - R=0L & G=139L & B=139L - defsysv, '!DarkCyan', R + 256L*(G+256L*B) - - R=139L & G=0L & B=139L - defsysv, '!DarkMagenta', R + 256L*(G+256L*B) - - R=139L & G=0L & B=0L - defsysv, '!DarkRed', R + 256L*(G+256L*B) - - R=144L & G=238L & B=144L - defsysv, '!LightGreen', R + 256L*(G+256L*B) - - - - - ENDELSE - - - IF keyword_set(help) THEN BEGIN - print,'-Syntax: simpctable [, red_ct, green_ct, blue_ct, bits=bits, '+$ - '/help, /showcolors]' - print - print,'Below are the system variables set for all devices. '+$ - 'On 24-bit devices' - print,'more colors are defined, which can be shown with /showcolors.' - print,'Colors names with spaces are redundant '+$ - 'and are not defined by simpctable.' - print - print,' !Black !White !Red !Green !Blue !Yellow !Cyan !Magenta' - print - print,' !LightSteelBlue !SkyBlue !DarkSlateGrey' - print,' !SlateGrey !LightBlue !MidnightBlue' - print,' !NavyBlue !RoyalBlue !DodgerBlue' - print,' !DarkBlue !Turquoise !DarkGreen' - print,' !SeaGreen !ForestGreen !LightGreen' - print,' !Sienna !Firebrick !Salmon' - print,' !Orange !OrangeRed !HotPink' - print,' !DeepPink !Violet !DarkRed' - print,' !Purple' - print - print,' !grey0 grey1 ... !grey100' - ENDIF - - IF keyword_set(showcolors) THEN BEGIN - - spawn,'showrgb' - - print,'Colors names with spaces are redundant '+$ - 'and are not defined by simpctable' - ENDIF - -END diff --git a/pro/rm/spreduce1d_empca.pro b/pro/rm/spreduce1d_empca.pro index f152ae968..28084a6fd 100644 --- a/pro/rm/spreduce1d_empca.pro +++ b/pro/rm/spreduce1d_empca.pro @@ -412,7 +412,7 @@ CPU, TPOOL_NTHREADS = 1 subclass = strtrim( sxpar(shdr, 'NAME'+strtrim(string(istar),2)), 2) plottitle = subclass + '-Star Redshift' splog, prelog='' - splog, 'Compute STAR (' + subclass + ') redshifts:', $ + splog, 'Compute STAR (' + subclass + '-' +strtrim(istar+1,2)+'/'+strtrim(nstar,2)+') redshifts:', $ ' ZMIN=', zrange_star[0], ' ZMAX=', zrange_star[1], ' PSPACE='+strtrim(pspace,2) splog, prelog='STAR (' + subclass + ') Redshift' t0 = systime(1) @@ -922,16 +922,16 @@ endif ;---------- ; Add the cas-styled specobjid to output - zans = struct_addtags(zans, replicate({specobjid:0ULL},n_elements(zans))) - words= STREGEX(STRTRIM(zans.run2d,2),'^v([0-9]+)_([0-9]+)_([0-9]+)', /SUB, /EXTRACT) - ; did it parse as vXX_YY_ZZ? - if words[0] ne '' then begin - rerun= (long(words[1,*])-5L)*10000L+ (long(words[2,*])*100L)+ (long(words[3,*])) - endif else begin - splog, "WARNING: Unable to parse RERUN from", zans.run2d, "for CAS-style SPECOBJID; Using 0 instead" - rerun= intarr(n_elements(zans.field)) - endelse - zans.specobjid = sdss_specobjid_17(zans.field,zans.target_index,zans.mjd,rerun) + ;zans = struct_addtags(zans, replicate({specobjid:0ULL},n_elements(zans))) + ;words= STREGEX(STRTRIM(zans.run2d,2),'^v([0-9]+)_([0-9]+)_([0-9]+)', /SUB, /EXTRACT) + ;; did it parse as vXX_YY_ZZ? + ;if words[0] ne '' then begin + ; rerun= (long(words[1,*])-5L)*10000L+ (long(words[2,*])*100L)+ (long(words[3,*])) + ;endif else begin + ; splog, "WARNING: Unable to parse RERUN from", zans.run2d, "for CAS-style SPECOBJID; Using 0 instead" + ; rerun= intarr(n_elements(zans.field)) + ;endelse + ;zans.specobjid = sdss_specobjid_17(zans.field,zans.target_index,zans.mjd,rerun) ;---------- ; Write the output files @@ -946,17 +946,20 @@ endif spawn, 'uname -n', uname sxaddpar, hdr, 'UNAME', uname[0] - mwrfits, 0, zbestfile, hdr, /create ; Retain the original header in first HDU - mwrfits, zans, zbestfile - mwrfits, synflux, zbestfile - mwrfits, dispflux, zbestfile + mwrfits_named, 0, zbestfile, hdr=hdr, /create ; Retain the original header in first HDU + mwrfits_named, zans, zbestfile, name='ZANS' + mwrfits_named, synflux, zbestfile, name= 'SYNFLUX' + mwrfits_named, dispflux, zbestfile, name= 'DISPFLUX' sxaddpar, hdr, 'DIMS0', nper, ' Number of fits per objects' sxaddpar, hdr, 'DIMS1', nobj, ' Number of objects' - mwrfits, 0, zallfile, hdr, /create ; Retain the original header in first HDU - mwrfits, res_all, zallfile + mwrfits_named, 0, zallfile, hdr=hdr, /create ; Retain the original header in first HDU + mwrfits_named, res_all, zallfile, name='ZALL' - if (keyword_set(debugfile)) then dfpsclose + if (keyword_set(debugfile)) then begin + dfpsclose + ps2pdf, debugfile + endif ;---------- ; Generate final QA plots @@ -973,7 +976,10 @@ endif qaplot_fcalibvec, objloglam, objflux, objivar, synflux, plugmap, zans, $ plottitle=plottitle - if (keyword_set(plotfile)) then dfpsclose + if (keyword_set(plotfile)) then begin + dfpsclose + ps2pdf, plotfile + endif ; Track memory usage thismem = memory() diff --git a/pro/rm/test_coadd_zdcf.pro b/pro/rm/test_coadd_zdcf.pro deleted file mode 100644 index 8d788627c..000000000 --- a/pro/rm/test_coadd_zdcf.pro +++ /dev/null @@ -1,98 +0,0 @@ -; perform some tests of the coadded zdcf - -pro test_coadd_zdcf - -; peak significance of individual ccf -file='/data3/yshen/ftp/sdssrm/collab/prepspec/ACBFJ/ccf_output' -readcol,file,format='l,a,x,x,x,x,d', rmid, line, peak_sig - -; now load the sample prop -file='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/qso_prop-0000-56837.fits' -fits=mrdfits(file,1) -logl5100=fits[rmid].logL5100 -logl5100_orig=logl5100 -zall=fits[rmid].z - -; correct for host L5100 -file='/data3/yshen/work/agn_host/decomp_final.fits' -decomp=mrdfits(file,1) -for i=0L, n_elements(logl5100) - 1 do begin - ind=where(decomp.fiber eq rmid[i]+1) - if ind[0] ne -1 then logl5100[i]=decomp[ind].LOGL5100_QSO -endfor - -figfile='/data3/yshen/work/composite_lag/L_z_dist_hi_ccf_peak_sig.eps' -begplot,name=figfile, /color,/landscape - -rmid_uniq = rmid[uniq(rmid)] -plot,[0],[0], xrange=[0.,1.1], yrange=[43, 46], xtitle='Redshift', ytitle=textoidl('log L_{5100} [erg s^{-1}]') -oplot, fits[rmid_uniq].z, fits[rmid_uniq].logL5100, psym=1, color=cgcolor('gray') - -sz=3 -min=0.999 ; threshold for peak signficance in the ccf -ind=where(line eq 'ha' and peak_sig gt min and logl5100 gt 0,nn) -nobj=nn & medz=median(zall[ind]) & medl=median(logl5100[ind]) -oplot, zall[ind], logL5100[ind], psym=1,color=cgcolor('green') -oplot, [medz], [medl], psym=1, symsize=sz, color=cgcolor('green') -ind=where(line eq 'hb' and peak_sig gt min and logl5100 gt 0,nn) -nobj=[nobj,nn] & medz=median(zall[ind]) & medl=median(logl5100[ind]) -oplot, zall[ind], logL5100[ind], psym=symcat(6),color=cgcolor('cyan') -oplot, [medz], [medl], psym=symcat(6), symsize=sz, color=cgcolor('cyan') -ind=where(line eq 'he2' and peak_sig gt min and logl5100 gt 0,nn) -nobj=[nobj,nn] & medz=median(zall[ind]) & medl=median(logl5100[ind]) -oplot, zall[ind], logL5100[ind], psym=symcat(5),color=cgcolor('blue') -oplot, [medz], [medl], psym=symcat(5), symsize=sz, color=cgcolor('blue') -ind=where(line eq 'mg2' and peak_sig gt min and logl5100 gt 0,nn) -nobj=[nobj,nn] & medz=median(zall[ind]) & medl=median(logl5100[ind]) -oplot, zall[ind], logL5100[ind], psym=symcat(9),color=cgcolor('red') -oplot, [medz], [medl], psym=symcat(9), symsize=sz, color=cgcolor('red') - -items=textoidl(['H\alpha','H\beta', 'HeII', 'MgII'])+' ('+string(nobj, format='(i0)')+')' -colors=cgcolor(['green','cyan','blue','red']) -sym=[1,6,5,9] -xyouts, 0.16, 0.89, 'CCF peak sig>'+string(min, format='(f0.3)'),/norm -for i=0,3 do begin - legend, items[i], box=0, pos=[0.15, 0.87-0.05*i], /norm, color=colors[i],psym=symcat(sym[i]),textcolor=colors[i] -endfor - -endplot -cgfixps, figfile - -figfile='/data3/yshen/work/composite_lag/coadd_zdcf_hi_ccf_peak_sig.eps' -begplot,name=figfile, /color,/landscape -plot_layout, 4, xypos=xypos -linename=['ha','hb','he2','mg2'] -lineuse=['ha','hb','he2_4686','mg2'] -for i=0, 3 do begin - ind=where(line eq linename[i] and peak_sig gt min and logl5100 gt 0,nn) - coadd_zdcf, rmid[ind], line=lineuse[i], coadd=coadd - ploterror, coadd.tau, coadd.wmea_dcf3,coadd.edcf_wmea3, xtitle=textoidl('\tau [Observed Days]'), ytitle='Coadded ZDCF', psym=-5, title=linename[i] - -endfor -endplot -cgfixps, figfile - - -figfile='/data3/yshen/work/composite_lag/coadd_zdcf_15.eps' -begplot,name=figfile, /color,/landscape -linename=['ha','hb','he2','mg2'] -lineuse=['ha','hb','he2_4686','mg2'] -rmid_15=[101, 191, 229, 267, 272, 320, 457, 589, 645, 694, 767, 769, 775, 789, 840] -logl_15=dblarr(15) & z_15=dblarr(15) -for i=0l, 14 do begin - ind=where(rmid eq rmid_15[i]) - if ind[0] eq -1 then print, 'RMID ', rmid_15[i], ' not found' - logl_15[i]= logL5100[ind[0]] & z_15[i]= zall[ind[0]] -endfor -for i=0, 3 do begin - coadd_zdcf, rmid_15, line=lineuse[i], coadd=coadd - title=linename[i]+', med-z='+string(median(z_15),format='(f0.2)')+', med-logL='+string(median(logL_15),format='(f0.2)') - ploterror, coadd.tau, coadd.wmea_dcf3,coadd.edcf_wmea3, xtitle=textoidl('\tau [Observed Days]'), ytitle='Coadded ZDCF', psym=-5, title=title - -endfor -endplot -cgfixps, figfile - - - -end diff --git a/pro/rm/test_fwhm_sn.pro b/pro/rm/test_fwhm_sn.pro deleted file mode 100644 index 0e56584a9..000000000 --- a/pro/rm/test_fwhm_sn.pro +++ /dev/null @@ -1,75 +0,0 @@ -; test the dependence of CIV FWHM on SNR, using -; the coadded fits and the individual-epoch fits - -pro test_fwhm_sn - -file='/data3/yshen/work/lineshifts/lineshift.fits' -result0=mrdfits(file,1) -fwhm0=(result0.CIV_br)[1,*] - -file='/home/yshen/products/Linux/idlrm/etc/target_fibermap.fits' -target=mrdfits(file,1) -plate=(target.plate)[0:31,0] -fiberall=(target.fiberid)[0:31,*] -mjd=(target.mjd)[0:31,0] - -for i=0, 31L do begin - - pstr=string(plate[i],format='(i4.4)') - mstr=string(mjd[i],format='(i5.5)') - fiber=reform(fiberall[i,*]) - file='/data3/yshen/ftp/sdssrm/collab/bossredux/v5_7_1/'+pstr+'/qsofit/qso_prop-'+pstr+'-'+mstr+'.fits' - result1=mrdfits(file,1) - fwhm1=(result1.civ)[1,*] - - ; CIV measureable - ind=where(fwhm0 gt 0 and fwhm1 gt 0, nobj) - ; get the corresponding median SNR - rm_readspec, plate[i], fiber[ind], mjd=mjd[i], flux=flux,invvar=ivar - snr_all = flux*sqrt(ivar) - snr=median(snr_all, dim=1) - - if n_elements(ratio_arr) eq 0 then ratio_arr = (fwhm1[ind] - fwhm0[ind])/fwhm0[ind] else $ - ratio_arr=[ratio_arr, (fwhm1[ind] - fwhm0[ind])/fwhm0[ind]] - if n_elements(snr_arr) eq 0 then snr_arr = snr else snr_arr=[snr_arr, snr] - - splog, 'Finished epoch:', i -endfor - -output={dfwhm_frac:ratio_arr, med_SNR:snr_arr} - -outfile='/data3/yshen/work/lineshifts/fwhm_coadd_se_test.fits' -mwrfits, output, outfile, /create - -end - -pro plot_test_fwhm_coadd_se - -file='/data3/yshen/work/lineshifts/fwhm_coadd_se_test.fits' -result=mrdfits(file,1) -figfile='/data3/yshen/work/lineshifts/fwhm_sntest_coadd_and_SE.eps' -begplot, name=figfile, /landscape, /color -dfwhm_frac=result.dfwhm_frac & snr=result.med_snr - -bin=0.05 & xrange=[-0.8, 0.4] -title='coadd versus single-epoch measurements' -plothist,dfwhm_frac, bin=bin, xtitle=textoidl('\DeltaFWHM/FWHM'),ytitle='N',xrange=xrange, /xsty, title=title -oplot, [median(dfwhm_frac), median(dfwhm_frac) ], [0, 3d3] -ind=where(snr gt 10) -plothist, dfwhm_frac[ind], bin=bin, /over, color=cgcolor('brown') -oplot, [median(dfwhm_frac[ind]), median(dfwhm_frac[ind]) ], [0, 3d3],color=cgcolor('brown') -ind=where(snr lt 10) -plothist, dfwhm_frac[ind], bin=bin, /over, color=cgcolor('cyan') -oplot, [median(dfwhm_frac[ind]), median(dfwhm_frac[ind]) ], [0, 3d3],color=cgcolor('cyan') -ind=where(snr lt 5) -plothist, dfwhm_frac[ind], bin=bin, /over, color=cgcolor('green') -oplot, [median(dfwhm_frac[ind]), median(dfwhm_frac[ind]) ], [0, 3d3],color=cgcolor('green') -colors=cgcolor(['black', 'brown', 'cyan', 'green']) -items=['All', 'S/N>10', 'S/N<10', 'S/N<5'] -legend, pos=[0.2, 0.9], box=0, items, color=colors, textcolor=colors,/norm,line=[0,0,0,0] - -endplot -cgfixps, figfile - - -end diff --git a/pro/rm/test_lineshift_sn.pro b/pro/rm/test_lineshift_sn.pro deleted file mode 100644 index c79b1a0f8..000000000 --- a/pro/rm/test_lineshift_sn.pro +++ /dev/null @@ -1,193 +0,0 @@ -; test the SN dependence of line center measurements -; using artifically downgraded spectra - -pro test_lineshift_sn, err_scal_arr=err_scal_arr, range=range, emparfile=emparfile, outdir = outdir, $ - linename=linename -; this is to test the global fitting for most broad lines - -;err_scal_arr=[2.,4.,6.,8.,10.] -;err_scal_arr=[6.,8.,10.] -if ~keyword_set(err_scal_arr) then err_scal_arr=[8.] - -nerr=n_elements(err_scal_arr) - -if ~keyword_set(outdir) then outdir = '/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/evenmore_lines/' -if ~keyword_set(emparfile) then emparfile=getenv('IDLRM_DIR')+'/etc/qsoline_more.par' - -for i=0L, nerr - 1 do begin - - outdir1= outdir + 'err_scal_' $ - + string(err_scal_arr[i],format='(f0.1)') + '/' - - if ~keyword_set(linename) then begin - linename=['SII6718', 'HALPHA_BR', 'OIII5007', 'OIII5007C', 'HBETA_BR', 'HEII4687_BR', $ - 'MGII', 'CIII', 'CIII_BR', 'NIII1750', 'CIV_BR', 'HEII1640', 'SIIV_OIV', 'OI1304', $ - 'LYA_BR', 'NV1240'] - endif - - rm_fitplate,0,56837L,/silent,emparfile=emparfile,outdir=outdir1,linename=linename, $ - err_scal=err_scal_arr[i], add_bhmass=0, range=range - -endfor - -end - -;--------------------------- -pro test_lineshift_sn_local -; this is to test the local fitting for CaII, [OII] and [NeV] - -;err_scal_arr=[2.,4.,6.,8.,10.] -err_scal_arr=[4.,6.,8.,10.] - -nerr=n_elements(err_scal_arr) - -for i=0L, nerr - 1 do begin - - outdir='/data3/yshen/spectro/bossredux/v5_7_1/0000/qsofit/wh_skysub/local_fit/err_scal_' $ - + string(err_scal_arr[i],format='(f0.1)') + '/' - - linename=['CAII3934', 'OII3728', 'NEV3426'] - emparfile=getenv('IDLRM_DIR')+'/etc/qsoline_few.par' - - rm_fitplate_local,0,56837L,/silent,emparfile=emparfile,outdir=outdir,linename=linename, $ - err_scal=err_scal_arr[i],add_bhmass=0 - -endfor - -end -;---------------------------- -pro plot_lineshift_sntest, figfile=figfile, name=name, flag_norm=flag_norm, origfits=origfits, $ - errdir=errdir - -; name='peak', 'fwhm' or 'ew' -if n_elements(name) eq 0 then name='peak' - -; flag_norm=1 (normalized by measurement error); flag_norm=2 (normalized by original measurements) -if n_elements(flag_norm) eq 0 then flag_norm=1 - -if ~keyword_set(figfile) then begin - if name eq 'peak' then begin - figfile='/data3/yshen/work/lineshifts/vel_shift_sntest.eps' - indname=0 ; index in the best-fit line properties - endif - if name eq 'fwhm' then begin - figfile='/data3/yshen/work/lineshifts/fwhm_sntest_sig_norm.eps' - indname=1 - endif -endif - -begplot,name=figfile,/color,/landscape - -cspeed=2.9979246d5 - -; this is the original fitting results -if ~keyword_set(origfits) then file='/data3/yshen/work/lineshifts/lineshift.fits' $ - else file=origfits -result0=mrdfits(file,1,/silent) -tags0=tag_names(result0) - -if ~keyword_set(errdir) then errdir = '/data3/yshen/work/lineshifts/lineshift_err_scal_' - -charsize=0.8 -; if n_elements(hist) eq 0 then hist=1 -histpeak=0.3 & histbin=0.1 & len=0.04 & thick=2 - -line=['Hbeta_br', 'OIII5007', 'CaII3934', 'OII3728', 'NeV3426', 'MgII', 'CIII', 'HeII1640', 'CIV_br', 'SIIV_OIV'] -line=strupcase(line) -linetag=textoidl(['H\beta_{br}', '[OIII]_a', 'CaII', '[OII]', '[NeV]', 'MgII', 'CIII]_a', 'HeII', 'CIV', 'SiIV']) -wave=[4862.68, 5008.24, 3934.78, 3728.48, 3426.84, 2798.75, 1908.73,1640.42, 1549.06, (1396.76 + 1402.06)*0.5] - -err_scal_arr=[2.,4.,6.,8.,10.] -;medsn=27.2434/err_scal_arr - -; get the medsn for all 849 objects -rm_readspec, 0, mjd=56837, flux=fluxall, invvar=ivar_all -medsn_all = median(fluxall*sqrt(ivar_all), dim=1) -medsn_all=medsn_all[0:848] - -nerr=n_elements(err_scal_arr) -; set up plot layout -npanel = n_elements(line) -plot_layout, npanel, xypos=xypos, omargin=[0.06, 0.01, 0.98, 0.96], pmargin=[0.05,0.1] -colors=cgcolor(['black', 'blue', 'cyan', 'magenta', 'red']) -if flag_norm eq 1 then begin - xrange=[-5,5] & bsize=0.2 -endif -if flag_norm eq 2 then begin - xrange=[-1, 0.5] & bsize=0.05 -endif -xgrid=-5. + findgen(101)*0.1 -for i=0L, npanel - 1 do begin - if i eq 0 then noerase=0 else noerase=1 - title=linetag[i] - pos = xypos[*, i] - for j=0, nerr-1 do begin - file=errdir+ string(err_scal_arr[j],format='(f0.1)') + '.fits' - result1=mrdfits(file,1,/silent) - tags1=tag_names(result1) - - ind0=where(tags0 eq line[i],nn0) & inderr_0=where(tags0 eq line[i]+'_ERR') - ind1=where(tags1 eq line[i],nn1) & inderr_1=where(tags1 eq line[i]+'_ERR') - if nn0 eq 1 and nn1 eq 1 then begin - - wav0=(result0.(ind0))[indname,*] & err0=(result0.(inderr_0))[indname,*] - wav1=(result1.(ind1))[indname,*] & err1=(result1.(inderr_1))[indname,*] - indd = where(err0 gt 0 and err1 gt 0, ntot) - if indd[0] ne -1 then begin - - err_tot=sqrt( err0[indd]^2 + err1[indd]^2 ) - if flag_norm eq 1 then dif = (wav1[indd] - wav0[indd])/err_tot - if flag_norm eq 2 then dif = (wav1[indd] - wav0[indd])/wav0[indd] - if j eq 0 then plothist, dif, bin=bsize, pos=pos, noerase=noerase, xticklen=len, yticklen=len, $ - title=title+' '+textoidl('N_{tot}=')+string(ntot,format='(i0)'), $ - color=colors[j], xrange=xrange, charsize=charsize,xhist,yhist,thick=thick,/xsty $ - else plothist, dif, bin=bsize,/over,color=colors[j], thick=thick, xhist, yhist - oplot, [median(dif), median(dif)], [0,ntot], color=colors[j], thick=thick, line=2 - - area=int_tabulated(xhist,double(yhist),/double) - ;oplot, xgrid, gauss1(xgrid, [0, 1, area]), color=cgcolor('dark gray') - - - if j eq 0 then begin - xyouts, pos[0]+0.01, pos[3]-0.03, textoidl(''),charsize=charsize,/norm - xyouts, pos[2]-0.09, pos[3]-0.03, textoidl('<\sigma_{mea}> [kms^{-1}]'),charsize=charsize,/norm - endif - medsn = median(medsn_all[indd])/err_scal_arr[j] - xyouts, pos[0]+0.01, pos[3]-0.02*j-0.05, string(medsn,format='(f0.1)'),/norm, color=colors[j],charsize=charsize - if name eq 'peak' then begin - sig_mea_tot=median(err_tot)/wave[i]*cspeed - sig_mea0=median(err0[indd])/wave[i]*cspeed - sig_mea1=median(err1[indd])/wave[i]*cspeed - endif - if name eq 'fwhm' then begin - sig_mea_tot=median(err_tot) - sig_mea0=median(err0[indd]) - sig_mea1=median(err1[indd]) - endif - - print, title, ' ', string(medsn,format='(f0.1)'), median(dif), ' ntot=',ntot - print, sig_mea_tot, sig_mea0, sig_mea1 - xyouts, pos[2]-0.05, pos[3]-0.02*j-0.05, string(round(sig_mea1),format='(i0)'),/norm, color=colors[j],charsize=charsize - - if j eq 0 and flag_norm eq 1 then $ - oplot, xgrid, gauss1(xgrid, [0, 1, ntot*bsize]), color=cgcolor('dark gray'),thick=6 ; this should be almost identical to the dark gray lines - endif - endif - endfor - -endfor -if name eq 'peak' then xname=textoidl('Normalized Peak Velocity Difference [\sigma]') -if name eq 'fwhm' then begin - if flag_norm eq 1 then xname=textoidl('Normalized FWHM Difference [\sigma]') - if flag_norm eq 2 then xname=textoidl('\DeltaFWHM/FWHM') -endif -xyouts, 0.5, 0.01, xname, /norm, align=0.5 -xyouts, 0.02, 0.5, textoidl('N_{obj}'), /norm, align=0.5, orient=90 - -endplot -cgfixps, figfile - - -end - - diff --git a/pro/rm/test_random_pair.pro b/pro/rm/test_random_pair.pro deleted file mode 100644 index 3c2abaa77..000000000 --- a/pro/rm/test_random_pair.pro +++ /dev/null @@ -1,148 +0,0 @@ -;+ -; NAME: -; test_random_pair -; -; PURPOSE: -; perform batch tests for PrepSpec light curves -; use shuffled random continuum/line LC pairs -; set /sym_range to search the lag in symmetric range of lags, this however will -; increase the uncertainty in lag centroid with MC method, and rendering the lag -; undetected. -; -pro test_random_pair,rmid,topdir=topdir, use_epochid=use_epochid, $ - dcf=dcf, ep_rej=ep_rej, ccf_tau=ccf_tau, sym_range=sym_range,outfile=outfile, $ - random_lc=random_lc - - if n_elements(rmid) eq 0 then begin ; default is the first 100 objects - file = getenv('IDLRM_DIR')+'/etc/target_fibermap.fits' - target=mrdfits(file,1) - target=target[0:848] - ind=sort(target.zfinal) - rmid=ind[0:99] - endif - - if ~keyword_Set(topdir) then topdir='/data3/quasar/yshen/work/lags/prepspec/ACBFJ/' - - dt=2. - if n_elements(sym_range) eq 0 then sym_range=1 ; default symmetric search range - if keyword_set(sym_range) then ccf_tau = -70. + (findgen(132./dt + 5L)*dt) - if ~keyword_set(ccf_tau) then ccf_tau = -20. + (findgen(100./dt + 6L)*dt) - - ; open an outfile to output the measurements - if ~keyword_Set(outfile) then outfile1=topdir + 'ccf_random_pairing' else $ - outfile1=topdir + outfile - openw, outlun, outfile1, /get_lun - printf, outlun, '# Tau search range: ',min(ccf_tau),max(ccf_tau) - if n_elements(ep_rej) gt 0 then printf, outlun, '# Rejected epochs: ', ep_rej - printf, outlun, '# RMID line linechi2 lag_mea peak_sig' - fmt='(i3.3, " ", a4, " ", e8.2, " ", 3(f5.1, " "), e9.3)' - - nep_tot=32 ; this is the current # of spec epochs - if n_elements(use_epochid) eq 0 then begin ; assign usable epochs - if n_elements(ep_rej) gt 0 then begin - epochid = indgen(nep_tot) - flag = lonarr(nep_tot) - flag[ep_rej-1]=1L - ind_keep=where(flag eq 0, complement=ind_bad) - use_epochid=ind_keep - endif - endif - - ; read in more target information - file='/data3/quasar/yshen/work/composite_lag/target_info.fits' - info=mrdfits(file,1) - - if n_elements(rmid) eq 0 then rmid=lindgen(849) - nobj=n_elements(rmid) - - suffix=['hb_t','mg2_t'] - line=['hb','mg2'] - nline=n_elements(suffix) - for i=0L, nobj-1 do begin - - rmtag='rm'+string(rmid[i],format='(i3.3)') - - ; first get 5100 LC - lcfile=topdir+rmtag+'/'+rmtag+'_c*.dat' - lcfile_found=file_search(lcfile,count=nfile) - - if nfile gt 0 then begin - ; choose the best continuum LC - conti_tag=strmid(lcfile_found,7,4,/reverse) - ;print, conti_tag - ind_use=where(conti_tag eq '5100') - - if ind_use[0] eq -1 then ind_use=where(conti_tag eq $ - string(median(conti_tag),format='(i0)' )) - - lcfile_use=lcfile_found[ind_use] - readcol,lcfile_use,format='d,d,d',t_conti,f_conti,e_conti,/silent - ; remove bad epochs - if keyword_Set(use_epochid) then begin - t_conti=t_conti[use_epochid] - f_conti=f_conti[use_epochid] - e_conti=e_conti[use_epochid] - endif - ind_good = where(e_conti gt 0) - if ind_good[0] ne -1 then begin - t_conti=t_conti[ind_good] - f_conti=f_conti[ind_good] - e_conti=e_conti[ind_good] - endif - - ; now do each BLR LC - ind_other = where(rmid ne rmid[i], nother) - for jj=0L, nother - 1 do begin - - rmtag_other = 'rm'+string(rmid[ind_other[jj]],format='(i3.3)') - for j=0,nline-1 do begin - - ; find the line LC for the other 99 objects - - lcfile=topdir+rmtag_other+'/'+rmtag_other+'_'+suffix[j]+'.dat' - if file_test(lcfile) eq 1 then begin - readcol,lcfile,format='d,d,d',t_line,f_line,e_line,/silent - ; remove bad epochs - if keyword_Set(use_epochid) then begin - t_line=t_line[use_epochid] - f_line=f_line[use_epochid] - e_line=e_line[use_epochid] - endif - ind_good = where(e_line gt 0) - if ind_good[0] ne -1 then begin - t_line=t_line[ind_good] - f_line=f_line[ind_good] - e_line=e_line[ind_good] - endif - - if keyword_set(random_lc) then begin ; shuffle the line LC epochs to test if a correlation still exists - nep_line=n_elements(t_line) - Nran = randomu(seed, nep_line) - ind_ran=sort(Nran) - f_line=f_line[ind_ran] & e_line=e_line[ind_ran] - endif - - tag_plot='c'+conti_tag[ind_use]+'-'+suffix[j] - - ; compute the line chi^2 - ; I believe the mean of the line LC has already been subtracted in prepspec - line_chi2=total( f_line^2/e_line^2, /double ) - - rm_lag_diag,t_conti,f_conti,e_conti,t_line,f_line,e_line,dt=dt,tag=tag_plot, $ - /noplot, tau_exp=info[rmid[i]].tau_obs,dcf=dcf, ccf_tau=ccf_tau, $ - lag_mea=lag_mea,peak_sig=peak_sig,ntrial=100,/mirror,/dosub - - printf, outlun, rmid[ind_other[jj]], line[j], line_chi2, $ - lag_mea, peak_sig, format=fmt - - endif - endfor - endfor - endif - - endfor - - close, outlun - free_lun, outlun - -end diff --git a/pro/rm/test_sphoto.pro b/pro/rm/test_sphoto.pro deleted file mode 100644 index 8bd31f139..000000000 --- a/pro/rm/test_sphoto.pro +++ /dev/null @@ -1,106 +0,0 @@ -; Suite to test the spectrophotometry - -;-------------- -; Compare synmag to real-time photometry -pro comp_realtime_photo - - ; Find all the targets (quasar and stars) - target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' - fibermap = mrdfits(target_file,1,/silent) - - ; remove the one LRG and sky fibers - ind = where(strmatch(fibermap.sourcetype,'LRG*') or strmatch(fibermap.sourcetype,'SKY*') $ - , complement = indd, ncomp=nobj) - fibermap = fibermap[indd] - - ; compute the synmag for all targets - ; We will only focus on epoch 7339-56686, for which we have overlap photometry from Bok - specpath = getenv('BOSS_SPECTRO_REDUX') $ - + '/' + getenv('RUN2D') + '/7339/recalib/test20/' - fiberid = fibermap.fiberid[4,*] - synmag = fltarr(nobj, 5L) - readspec, 7339, fiberid, mjd=56686, wave=wave, $ - flux=flux,invvar=invvar,andmask=mask,path=specpath,plugmap=plugmap,/silent - flambda2fnu = wave^2 / 2.99792e18 - fthru = filter_thru(flux * flambda2fnu, waveimg=wave,/toair) - synmag = -2.5 * alog10(fthru) - (48.6-2.5*17) >0 <99 - - ; this is the default pipeline synmag - synmag_pip = fltarr(nobj, 5L) - readspec, 7339, fiberid, mjd=56686, wave=wave, $ - flux=flux,invvar=invvar,andmask=mask,plugmap=plugmap,/silent - flambda2fnu = wave^2 / 2.99792e18 - fthru = filter_thru(flux * flambda2fnu, waveimg=wave,/toair) - synmag_pip = -2.5 * alog10(fthru) - (48.6-2.5*17) >0 <99 - - ; Readin the realtime photometry from Bok on the same night - file = getenv('IDLRM_DIR') + '/etc/20140128.g.cat.fits' - gmag = mrdfits(file,1) - file = getenv('IDLRM_DIR') + '/etc/20140129.i.cat.fits' - imag = mrdfits(file,1) - - ; now start the plot - figfile = getenv('IDLRM_DIR')+'/misc/test_sphoto_realtime.ps' - begplot, name=figfile,/color - !p.multi = [0,2,2] - - minmag = 19. ; limit for bright objects - - ; there seems to be a constant offset between calibmag and the psfmag - ; calibmag = 22.5 - alog10(calibflux)*2.5 = psfmag + offset - ; offset = [-0.042, 0.036, 0.015, 0.013, -0.002] - ; These offsets are 2002 version, see kcorrect/v4_1_4/pro/utils - ; the calibflux in plugmap seems to be using the 2002 version of ab_offset - - ; First plot the gmag distribution - spherematch, fibermap.ra,fibermap.dec,gmag.alpha_j2000,gmag.delta_j2000,2./3600.D, $ - match0,match1, distance - magdiff = synmag[match0,1] - (gmag[match1].mag) ; + 0.036) - ind = where(gmag[match1].mag lt minmag and gmag[match1].mag gt 0, ntot ) - magdiff_bright = magdiff[ind] - magdiff_pip = synmag_pip[match0,1] - (gmag[match1].mag) ; + 0.036) - magdiff_bright_pip = magdiff_pip[ind] - tmp = where(abs(magdiff_bright_pip) le 0.065, n_pip_good) - tmp = where(abs(magdiff_bright) le 0.065, n_new_good) - - xrange = [-0.3,0.3] & bin = 0.02 & csize=1.0 - - plothist, magdiff_pip, xrange = xrange, xtitle='SynMag - BokMag [g]' $ - , ytitle=textoidl('N_{obj}'), pos=[0.15,0.57,0.5,0.95], bin=bin - plothist, magdiff, /over, color=fsc_color('red'),bin=bin - xyouts, 0.35, 0.92, 'Default redux', /norm,charsize=csize - xyouts, 0.35, 0.90, 'xyfit redux', /norm, color=fsc_color('red'),charsize=csize - plothist, magdiff_bright_pip, xrange = xrange, xtitle='SynMag - BokMag [g<'+string(minmag,format='(i0)')+']' $ - , ytitle=textoidl('N_{obj}'), pos = [0.61,0.57, 0.96,0.95],bin=bin - plothist, magdiff_bright, /over, color=fsc_color('red'),bin=bin - xyouts, 0.65, 0.92, '<6%',/norm,charsize=csize - xyouts, 0.65, 0.90, string(n_pip_good,format='(i0)')+'/'+string(ntot,format='(i0)'),charsize=csize,/norm - xyouts, 0.65, 0.88, string(n_new_good,format='(i0)')+'/'+string(ntot,format='(i0)'),charsize=csize,color=fsc_color('red'),/norm - - ; now plot the imag distribution - spherematch, fibermap.ra,fibermap.dec,imag.alpha_j2000,imag.delta_j2000,2./3600.D, $ - match0,match1, distance - magdiff = synmag[match0,3] - (imag[match1].mag + 0.013) - ind = where(imag[match1].mag lt minmag and imag[match1].mag gt 0, ntot) - magdiff_bright = magdiff[ind] - magdiff_pip = synmag_pip[match0,3] - (imag[match1].mag + 0.013) - magdiff_bright_pip = magdiff_pip[ind] - tmp = where(abs(magdiff_bright_pip) le 0.065, n_pip_good) - tmp = where(abs(magdiff_bright) le 0.065, n_new_good) - - plothist, magdiff_pip, xrange = xrange,xtitle='SynMag - BokMag [i]' $ - , ytitle=textoidl('N_{obj}'),pos=[0.15, 0.1, 0.5, 0.48],bin=bin - plothist, magdiff, /over, color=fsc_color('red'),bin=bin - plothist, magdiff_bright_pip, xrange = xrange,xtitle='SynMag - BokMag [i<'+string(minmag,format='(i0)')+']', $ - ytitle=textoidl('N_{obj}'),pos=[0.61,0.1,0.96,0.48],bin=bin - plothist, magdiff_bright, /over, color=fsc_color('red'),bin=bin - xyouts, 0.65, 0.45, '<6%',/norm,charsize=csize - xyouts, 0.65, 0.43, string(n_pip_good,format='(i0)')+'/'+string(ntot,format='(i0)'),charsize=csize,/norm - xyouts, 0.65, 0.41, string(n_new_good,format='(i0)')+'/'+string(ntot,format='(i0)'),charsize=csize,color=fsc_color('red'),/norm - - !p.multi = 0 - endplot - - ;message, 'stop and diagnose' - -end diff --git a/pro/rm/tmp_out_L5100qso.pro b/pro/rm/tmp_out_L5100qso.pro deleted file mode 100644 index 55ba6dcc5..000000000 --- a/pro/rm/tmp_out_L5100qso.pro +++ /dev/null @@ -1,17 +0,0 @@ -; make a table of rmid and logL5100_qso (from Shen++15b) for Jennifer Li - -pro tmp_out_L5100qso - -file='/data3/yshen/work/agn_host/decomp_final.fits' -decomp=mrdfits(file,1) -nobj=n_elements(decomp) - -output=replicate({rmid:0L, logL5100_qso:0.D, logL5100_qso_err:-1.D}, nobj) -output.rmid=decomp.fiber - 1L -output.logL5100_qso=decomp.logL5100_qso -output.logL5100_qso_err=decomp.logL5100_qso_err - -outfile='/data3/yshen/work/composite_lag/rmid_logLqso.fits' -mwrfits, output, outfile,/create - -end diff --git a/pro/rm/tmp_output_fH.pro b/pro/rm/tmp_output_fH.pro deleted file mode 100644 index 8be5d5590..000000000 --- a/pro/rm/tmp_output_fH.pro +++ /dev/null @@ -1,52 +0,0 @@ -; output f_H5100 for the 212 z<1.09 RM quasars - -pro tmp_output_fH - -file='/data3/quasar/yshen/work/agn_host/decomp_final.fits' -result=mrdfits(file,1) - -fmt='(i3.3, " ", f0.4)' - -outfile='/data3/quasar/yshen/work/agn_host/tables/f_H_5100' -openw, lun, outfile, /get_lun -printf, lun, '# RM_ID f_H_5100=fgal/(fgal+fagn) at 5100A' - -for i=0L, 211 do printf, lun, result[i].fiber - 1, result[i].f_H_5100,format=fmt - -close, lun -free_lun, lun - -end - -; output the decomposed spectrum -pro tmp_output_decomp_spec - -file='/data3/quasar/yshen/work/agn_host/decomp_final.fits' -result=mrdfits(file,1) -; keep only those with successful decomposition -ind=where(result.f_H gt 0, nnn) -result=result[ind] - -outdir='/data3/quasar/yshen/work/agn_host/tables/host_spec/' -for i=0L, nnn-1 do begin -outfile=outdir+'RMID_'+string(result[i].fiber-1, format='(i3.3)') + '_decomp_spec' -openw, lun, outfile, /get_lun -printf, lun, '# RMID='+string(result[i].fiber-1, format='(i3.3)') + $ - ' z='+string(result[i].z,format='(f0.4)') -printf, lun, '# Dereddened spectra' -printf, lun, '# f_H='+string(result[i].f_H,format='(f0.3)') + $ - ' f_H_5100='+string(result[i].f_H_5100,format='(f0.3)') -printf, lun, '# Obs Wave f_tot f_host=f_tot-f_qso_recon err [1d-17 erg/s/cm2/A]' -wave=result[i].wave & flux=result[i].flux & flux_gal=result[i].flux_gal -err=result[i].err -fmt='(f10.3, e12.4, e12.4, e12.4)' -npix=n_elements(wave) -for jj=0L, npix-1 do printf, lun, wave[jj], flux[jj], flux_gal[jj], err[jj],format=fmt - -close, lun -free_lun, lun - -endfor - - -end diff --git a/pro/rm/tmp_plot_flux_outlier.pro b/pro/rm/tmp_plot_flux_outlier.pro deleted file mode 100644 index 28bfc567a..000000000 --- a/pro/rm/tmp_plot_flux_outlier.pro +++ /dev/null @@ -1,66 +0,0 @@ -; plot an object with catastropic flux calibration errors - -pro tmp_plot_flux_outlier - -target_file = getenv('IDLRM_DIR') + '/etc/target_fibermap.fits' -fibermap = mrdfits(target_file,1,/silent) - -; this is the one with a catastropic flux calibration error -RM_ID=126 -plate = fibermap[rm_id].plate -fiber = fibermap[rm_id].fiberid -mjd = fibermap[rm_id].mjd -ind = where(plate gt 0, nnn) -plate=plate[ind] & fiber=fiber[ind] & mjd=mjd[ind] -ind = where(mjd eq 56722) - -rm_readspec, plate,fiber,mjd=mjd,wave=wave,flux=flux - -figfile=getenv('IDLRM_DIR') + '/misc/flux_anomaly.ps' -begplot,name=figfile,/color -!p.multi=[0,1,2] - -plot, [0], [0], xrange=[3600,1d4],/xsty, yrange=[0,30],xtitle='Observed Wavelength [A]', $ - ytitle=textoidl('Flux Density [erg s^{-1}cm^{-2}A^{-1}]'),/nodata -for i=0, nnn-1 do begin - oplot, wave[*,i], flux[*,i], psym=3 -endfor -oplot, wave[*,ind],flux[*,ind],color=cgcolor('red') -xyouts, 0.6,0.9,string(plate[ind],format='(i4.4)')+'-'+string(mjd[ind],format='(i5.5)')+ $ - '-' + string(fiber[ind],format='(i4.4)'),color=cgcolor('red'),/norm -xyouts, 0.2,0.9, 'RM_ID='+string(RM_ID,format='(i0)'),/norm - -; find one subexp of the affect epoch (56722) -subexp='b1-00176329' -fiber0 = fiber[ind] ; affect object -; find another two object's fiberid that is closet -spherematch, fibermap[ind].ra,fibermap[ind].dec,fibermap.ra,fibermap.dec, 1., match0, match1, distance,maxmatch=0 -indd = where(distance gt 0.) -match0=match0[indd] & match1=match1[indd] & distance=distance[indd] -indd=sort(distance) -match0=match0[indd] & match1=match1[indd] & distance=distance[indd] -ind1=match1[0] & ind2=match1[1] -fiber1 = (fibermap[ind1].fiberid)[ind] -fiber2 = (fibermap[ind2].fiberid)[ind] - -; this is the flat field -flatfile=getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') $ - + '/7339/' +'spFlat-b1-00176328.fits.gz' -fiberflat=mrdfits(flatfile,0) -npix = (size(fiberflat))[1] - -plot,[0],[0],xtitle='Pixel', ytitle = 'FiberFlat', xrange=[800, 3300.], yrange=[0.6,1.2],/xsty,/ysty,$ - title='spFlat-b1-00176328' -for i=0L,499 do oplot, findgen(npix), fiberflat[*,i],color=cgcolor('gray'),thick=0.2 -oplot, findgen(npix), fiberflat[*,fiber0-1], color=cgcolor('red') -oplot, findgen(npix), fiberflat[*,fiber1-1], color=cgcolor('cyan') -oplot, findgen(npix), fiberflat[*,fiber2-1], color=cgcolor('blue') -xyouts, 0.4, 0.42, string(plate[ind],format='(i4.4)')+'-'+string(mjd[ind],format='(i5.5)')+ $ - '-' + string(fiber1,format='(i4.4)') + ', dist='+string(distance[0]*3600.,format='(f0.1)')+' arcsec',color=cgcolor('cyan'),/norm -xyouts, 0.4, 0.39, string(plate[ind],format='(i4.4)')+'-'+string(mjd[ind],format='(i5.5)')+ $ - '-' + string(fiber2,format='(i4.4)') + ', dist='+string(distance[1]*3600.,format='(f0.1)')+' arcsec',color=cgcolor('blue'),/norm - -!p.multi=0 -endplot - -end diff --git a/pro/rm/tmp_plot_rms_panel.pro b/pro/rm/tmp_plot_rms_panel.pro deleted file mode 100644 index 34a24e477..000000000 --- a/pro/rm/tmp_plot_rms_panel.pro +++ /dev/null @@ -1,64 +0,0 @@ -; Plot quick-check plots for Jon - -pro tmp_plot_rms_panel, result=result, epoch_ID=epoch_ID - - if n_elements(result) eq 0 then $ - rm_get_rms_prop,result=result, epoch_ID=epoch_ID - - - figfile=getenv('IDLRM_DIR') + '/misc/rms_var_check.eps' - begplot, name=figfile,/cmyk,/color,xsize=10,ysize=8,/encap - - ind=where(result.hbeta_rms gt 0) - plot, [0],[0],xrange=[0.01,10],yrange=[0.01,10],/xlog,/ylog,$ - xtitle='Median Line Error', ytitle='Line RMS Variation', $ - pos=[0.12, 0.58, 0.48, 0.98],xtickname=['0.01','0.1','1.0','10'],ytickname=['0.01','0.1','1.0','10'] - oplot, result[ind].hbeta_mederr,result[ind].hbeta_rms,psym=symcat(9),color=cgcolor('red') - ind=where(result.mgii_rms gt 0) - oplot, result[ind].mgii_mederr,result[ind].mgii_rms,psym=symcat(9),color=cgcolor('blue') - ind=where(result.OIII_rms gt 0) - oplot, result[ind].oiii_mederr,result[ind].oiii_rms,psym=1 - oplot, [0.01,10],[0.01,10],line=2 - xyouts,0.015,5,textoidl('H\beta'),color=cgcolor('red') - xyouts,0.015,3,'MgII',color=fsc_color('blue') - xyouts,1.0,0.017,'[OIII]5007' - if keyword_set(epoch_id) then begin - epstr=string(epoch_id[0]+1,format='(i0)') - for i=1L,n_elements(epoch_id)-1 do epstr=epstr+','+string(epoch_id[i]+1,format='(i0)') - xyouts, 0.05,5,'ep:'+epstr - endif - plot, [0],[0],xrange=[0.01,10],yrange=[0.01,10],/xlog,/ylog,$ - xtitle='[OIII] RMS Variation', ytitle='Line RMS Variation', $ - pos=[0.58, 0.58, 0.94, 0.98],/noerase,xtickname=['0.01','0.1','1.0','10'],ytickname=['0.01','0.1','1.0','10'] - ind=where(result.hbeta_rms gt 0 and result.oiii_rms gt 0) - oplot, result[ind].oiii_rms,result[ind].hbeta_rms,psym=symcat(9),color=cgcolor('red') - ind=where(result.mgii_rms gt 0 and result.oiii_rms gt 0) - oplot, result[ind].oiii_rms,result[ind].mgii_rms,psym=symcat(9),color=cgcolor('blue') - oplot, [0.01,10],[0.01,10],line=2 - xyouts,0.015,5,textoidl('H\beta'),color=cgcolor('red') - xyouts,0.015,3,'MgII',color=fsc_color('blue') - - plot, [0],[0],xrange=[0.01,10],yrange=[0.01,10],/xlog,/ylog,$ - xtitle='L3000 RMS Variation', ytitle='Line RMS Variation', $ - pos=[0.12, 0.09, 0.48, 0.49],/noerase,xtickname=['0.01','0.1','1.0','10'],ytickname=['0.01','0.1','1.0','10'] - ind=where(result.hbeta_rms gt 0 and result.L3000_rms gt 0) - oplot, result[ind].L3000_rms,result[ind].hbeta_rms,psym=symcat(9),color=cgcolor('red') - ind=where(result.mgii_rms gt 0 and result.L3000_rms gt 0) - oplot, result[ind].L3000_rms,result[ind].mgii_rms,psym=symcat(9),color=cgcolor('blue') - oplot, [0.01,10],[0.01,10],line=2 - xyouts,0.015,5,textoidl('H\beta'),color=cgcolor('red') - xyouts,0.015,3,'MgII',color=fsc_color('blue') - - plot, [0],[0],xrange=[0.002,10],yrange=[0.01,10],/xlog,/ylog,/xsty, $ - xtitle='Median L3000 Error', ytitle='L3000 RMS Variation', $ - pos=[0.58, 0.09, 0.94, 0.49],/noerase,xtickname=['0.01','0.1','1.0','10'],ytickname=['0.01','0.1','1.0','10'] - ind=where(result.L3000_rms gt 0) - oplot, result[ind].L3000_mederr,result[ind].L3000_rms,psym=symcat(9) - oplot, [0.01,10],[0.01,10],line=2 - oplot, [0.01,10],[0.04,0.04],line=1,color=cgcolor('cyan'),thick=8 - xyouts, 0.04,0.025,'4% spectrophotometry',color=cgcolor('cyan') - - - endplot - -end diff --git a/pro/rm/tmp_plotmratio.pro b/pro/rm/tmp_plotmratio.pro deleted file mode 100644 index 6833373cd..000000000 --- a/pro/rm/tmp_plotmratio.pro +++ /dev/null @@ -1,50 +0,0 @@ -;+ -; NAME: -; tmp_plotmratio -; PURPOSE: -; plot the mratio vectors for all the good std in an exposure -; -------------------------------------------------------------------- -pro tmp_plotmratio, objname, calibdir = calibdir, linear=linear, _extra=extra - - if not keyword_set(calibdir) then $ - calibdir = '/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/recalib/' - - file = calibdir + objname - kindx = mrdfits(file, 2, /silent) - - ; good stars used in fluxing - ind_good = where(kindx.qgood eq 1, ngood) - colors = fsc_color(['opposite', 'red', 'green', 'magenta', 'cyan']) - ncolor = n_elements(colors) - - if strmatch(objname, '*-b*') then begin - xrange=[3.55, 3.8] & yrange = [0,20] - if keyword_set(linear) then xrange = [3500, 6500] - endif - if strmatch(objname, '*-r*') then begin - xrange=[3.7, 4.05] & yrange = [0,40] - if keyword_set(linear) then xrange = [5000, 11000] - endif - - xpos = xrange[0] + 0.05*(xrange[1]-xrange[0]) - ypos = yrange[1] - 0.1*(yrange[1]-yrange[0]) - dypos = 0.05*(yrange[1]-yrange[0]) - dxpos = 0.05*(xrange[1]-xrange[0]) - - plot, [0],[0], xrange=xrange, yrange=yrange, xtitle=textoidl('log \lambda') $ - , ytitle = 'mratio/mratio0', /nodata, /xsty - - - for i=0L, ngood - 1L do begin - if not keyword_set(linear) then $ - oplot, kindx[ind_good[i]].loglam, kindx[ind_good[i]].mratio $ - , color=colors[i mod ncolor], _extra=extra else $ - oplot, 10.D^kindx[ind_good[i]].loglam, kindx[ind_good[i]].mratio $ - , color=colors[i mod ncolor], _extra=extra - xyouts, xpos, ypos, string(kindx[ind_good[i]].fiberid,format='(i0)') $ - , color=colors[i mod ncolor], charsize=1.5 - xpos = xpos + dxpos - - endfor - -end diff --git a/pro/rm/tmp_test_gaskell.pro b/pro/rm/tmp_test_gaskell.pro deleted file mode 100644 index bec0b1319..000000000 --- a/pro/rm/tmp_test_gaskell.pro +++ /dev/null @@ -1,131 +0,0 @@ -; perform some tests to dispute Gaskell's comments - -pro tmp_test_gaskell - - -file='/data3/yshen/work/lineshifts/peak_vel_cat.fits' -result = mrdfits(file,1) - - -logl3000=(result.logl3000)[0,*] -logl3000_err = (result.logl3000)[1,*] - -voii = (result.OII3728)[0,*] -voii_err = (result.oii3728)[1,*] -vcaii = (result.CAII3934)[0,*] -vcaii_err = (result.CAII3934)[1,*] - -goto, test2 - -maxerr = 1d6 -ind = where(logl3000_err gt 0 and voii_err gt 0 and voii_err lt maxerr and vcaii_err gt 0 and vcaii_err lt maxerr) -toterr = sqrt( voii_err[ind]^2 + vcaii_err[ind]^2 ) -mederr_oii = median(voii_err[ind]) -print, mederr_oii -mederr_caii = median(vcaii_err[ind]) -print, mederr_caii -mederr = median(sqrt(voii_err[ind]^2 + vcaii_err[ind]^2)) -mederr_oii_all = median(voii_err) -mederr_caii_all = median(vcaii_err) -mederr_all = sqrt(mederr_oii_all^2 + mederr_caii_all^2) - - -figfile='/data3/yshen/work/lineshifts/oii_caii.ps' -begplot, name=figfile, /color,/landscape - - -plot, logl3000[ind], voii[ind] - vcaii[ind], psym=symcat(2),symsize=0.5, $ - xrange=[43.0, 46.5], yrange=[-1500, 2500], /xsty, /ysty, $ - xtitle = textoidl('Log \lambdaL_{\lambda,3000} '), ytitle = textoidl('V_{[OII]}-V_{CaII} (km s^{-1})') -; oplot, [46.4,46.4], [1500, 1500.+mederr], color=cgcolor('red'), thick=5 - - -nnn = n_elements(ind) -toterr2 = sqrt(toterr^2 + 46.^2) -mock = randomn(seed, nnn)*toterr + 1800. -mock2 = randomn(seed2, nnn)*toterr2 + 1800. -;oplot, logl3000[ind], mock, psym=symcat(2),symsize=0.5,color=cgcolor('red') -oplot, logl3000[ind], mock2, psym=symcat(2),symsize=0.5,color=cgcolor('green') - - -endplot -cgfixps, figfile - - -test2: -; OIII - OII -vo3 = (result.OIII5008C)[0,*] -vo3_err = (result.OIII5008C)[1,*] -logl5100 = (result.logl5100)[0,*] -logl5100_err = (result.logl5100)[1,*] - - -maxerr = 500. -ind = where(logl5100_err gt 0 and voii_err gt 0 and voii_err lt maxerr and vo3_err gt 0 and vo3_err lt maxerr and $ - abs(vo3 - voii) lt 500 ) -imax = n_elements(ind) - -figfile = '/data3/yshen/work/lineshifts/oiii_oii.ps' -begplot, name=figfile, /color,/landscape - -xrange=[43,46.5] -plot, logl5100[ind], vo3[ind] - voii[ind], xrange=xrange, yrange=[-500,500],/xsty,/ysty,$ - xtitle= textoidl('Log \lambdaL_{\lambda,5100} '), ytitle = textoidl('V_{[OIII]c}-V_{[OII]} (km s^{-1})'), $ - psym=symcat(2),symsize=0.5 -oplot, [43,46.5], [0,0] - -xdata = logl5100[ind] & ydata = vo3[ind] - voii[ind] & ydata_err = sqrt( vo3_err[ind]^2 + voii_err[ind]^2 ) -lum_ref = 44. - -per1_x=quantile_1d(0.01, xdata) & per99_x=quantile_1d(0.99, xdata) -moving_average, xdata, ydata, xbin=0.35, xmin=per1_x, xmax=per99_x, nmin=2 $ - , xarr, yarr, yerr ;, /boots -oploterror, xarr, yarr, yerr,psym=symcat(3),color=cgcolor('green'),errcolor=cgcolor('green') -ind_good=where(yerr gt 0) -regfit=mpfitexpr('P(0) + P(1)*x', xarr[ind_good]-lum_ref, yarr[ind_good], yerr[ind_good], [0., 0.], perror=perror,/quiet) -xrange1=[43., 45.7] -oplot, xrange1, regfit[0] + regfit[1]*(xrange1 - lum_ref), color=cgcolor('green') - - -sixlin, xdata - lum_ref, ydata, aa, siga, bb, sigb -spearman=r_correlate(xdata, ydata) -print, 'Spearman r and p:', spearman -nsample = 5000L -boots_ind = boot_indices(imax, nsample=nsample) -r_arr = dblarr(nsample) & p_arr = dblarr(nsample) -for iboot=0, nsample-1 do begin - tmp = r_correlate(xdata[boots_ind[iboot,*]], ydata[boots_ind[iboot,*]]) - r_arr[iboot] = tmp[0] & p_arr[iboot] = tmp[1] -endfor -print, 'Bootstrap Spearman r and p' -print, median(r_arr), median(p_arr) -print, quantile_1d(0.16, r_arr), quantile_1d(0.16,p_arr) -print, quantile_1d(0.84, r_arr), quantile_1d(0.84,p_arr) - -print, 'linreg (a):', aa[0], '+-', siga[0] -print, '(b):', bb[0], '+-', sigb[0] -oplot, xrange1, (xrange1 -lum_ref)*bb[0] + aa[0], color=cgcolor('red') - -print, 'binned fit (a):', regfit[0], '+-',perror[0] -print, '(b):', regfit[1], '+-',perror[1] -print, '-------------------------------' -xyouts, 44, 450, ' 16% 84%' -xyouts, 43.2, 400, 'Spearman r=' + string(spearman[0], format='(f0.2)') + ' ' + string(quantile_1d(0.16, r_arr), format='(f0.2)') + ' ' + string(quantile_1d(0.84, r_arr), format='(f0.2)') -xyouts, 43.2, 350, 'Spearman p=' + string(spearman[1], format='(e7.1)') + ' ' + string(quantile_1d(0.16, p_arr), format='(e7.1)') + ' ' + string(quantile_1d(0.84, p_arr), format='(e7.1)') - - -xyouts, 45.5, 400, textoidl('\sigma_{V1}, \sigma_{V_2}<') + string(maxerr,format='(i0)') + textoidl('km s^{-1}') -xyouts, 43.2, -400, 'linreg (Y|X) b='+string(bb[0],format='(i0)')+textoidl('\pm')+string(sigb[0],format='(i0)')+textoidl(' km s^{-1}'),color=cgcolor('red') -xyouts, 43.2, -350, 'Binned fit b=' + string(regfit[1],format='(i0)')+textoidl('\pm')+string(perror[1],format='(i0)')+textoidl(' km s^{-1}'),color=cgcolor('green') - -linmix_err, xdata - lum_ref, ydata, post, ysig=ydata_err -oplot, xrange1, median(post.alpha) + median(post.beta)*(xrange1 - lum_ref), color=cgcolor('cyan') -err = 0.5*(quantile_1d(0.84, post.beta) - quantile_1d(0.16,post.beta)) -xyouts, 45.3, -400, 'Bayesian slope:' + string(median(post.beta), format='(i0)') + textoidl('\pm') + string(err, format='(i0)'),color=cgcolor('cyan') - - -endplot -cgfixps, figfile - - -end diff --git a/pro/rm/tmp_testmratio.pro b/pro/rm/tmp_testmratio.pro deleted file mode 100644 index b9b1f359e..000000000 --- a/pro/rm/tmp_testmratio.pro +++ /dev/null @@ -1,94 +0,0 @@ -; perform some tests of the flux vectors in different scenario - -pro tmp_testmratio - - ; this is where the spFrame* files are - datadir = '/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/' - - ; this is the exposure to be tested - objname = 'spFrame-b1-00171812.fits.gz' - - spframe_read, datadir + objname, loglam=loglam1 - - ; read in the sset for different cases - sset_file1 = datadir + 'spFluxcalib-b1-00171812.fits.gz' - sset1 = mrdfits(sset_file1,1) - kindx1 = mrdfits(sset_file1,2) - - sset_file2 = datadir + 'recalib/test1/old/spFluxcalib-b1-00171812.fits.gz' - sset2 = mrdfits(sset_file2,1) - kindx2 = mrdfits(sset_file2,2) - - sset_file3 = datadir + 'recalib/test1/spFluxcalib-b1-00171812.fits.gz' - sset3 = mrdfits(sset_file3,1) - - sset_file4 = datadir + 'recalib/test2/old/spFluxcalib-b1-00171812.fits.gz' - sset4 = mrdfits(sset_file4,1) - - xrange=[3500,6300] & yrange=[0,50] - plot, [0],[0],/nodata,xtitle='Wavelength',xrange=xrange,yrange=yrange,/xsty,/ysty - - ind = where(kindx1.qgood eq 1,ngood) - ; for i=0L, ngood - 1L do oplot, 10.^kindx1[ind[i]].loglam,kindx1[ind[i]].mratio $ - ; , psym=3 - - ind = where(kindx2.qgood eq 1, ngood) - for i=0L, ngood - 1L do oplot, 10.^kindx2[ind[i]].loglam,kindx2[ind[i]].mratio $ - , color=fsc_color('red'), psym=3 - - oplot, 10.D^loglam1[*,0], bspline_valu(loglam1[*,0], sset1) - oplot, 10.D^loglam1[*,0], bspline_valu(loglam1[*,0], sset2) $ - , color=fsc_color('cyan') - - - oplot, 10.D^loglam1[*,0], bspline_valu(loglam1[*,0], sset3) $ - , color=fsc_color('green') - - oplot, 10.D^loglam1[*,0], bspline_valu(loglam1[*,0], sset4) $ - , color=fsc_color('magenta') - -end - -pro tmp_testmratio1 - - ; this is where the spFrame* files are - datadir = '/data3/quasar/yshen/spectro/bossredux/v5_6_0/7338/' - - ; this is the exposure to be tested - objname = 'spFrame-b1-00171812.fits.gz' - - spframe_read, datadir + objname, loglam=loglam1 - - sset_file = datadir + 'recalib/test2/spFluxcalib-b1-00171812.fits.gz' - sset = mrdfits(sset_file,1) - kindx = mrdfits(sset_file,2) - - colors=fsc_color(['opposite','green', 'red', 'cyan', 'magenta']) - - ind=where(kindx.qgood eq 1, ngood) - - xrange=[3500,6300] & yrange=[0,50] - plot, [0],[0],/nodata,xtitle='Wavelength',xrange=xrange,yrange=yrange,/xsty,/ysty - for i=0L,ngood - 1L do oplot, 10.^kindx[ind[i]].loglam,kindx[ind[i]].mratio $ - , color=colors[i mod 5], psym=3 - - - ; - loglam = kindx[ind].loglam - mratio = kindx[ind].mratio - mrativar = kindx[ind].mrativar - ;iprox = indgen(ngood) ; [13,32,2,10] - iprox = [15,11,12,20] - - nblue = 1L & nprox = n_elements(iprox) - everyn = nblue * nprox * 10 - thisset = spflux_bspline(loglam[*,iprox], $ - mratio[*,iprox], mrativar[*,iprox], $ - everyn=everyn, outmask=mask_b_new) - - oplot, 10.D^loglam[*,0], bspline_valu(loglam[*,0], thisset, x2=x2),color=fsc_color('red') $ - , thick = 4 - - oplot, 10.D^loglam[*,0], bspline_valu(loglam[*,0], sset, x2=x2),color=fsc_color('cyan') - -end diff --git a/pro/rm/varlc.pro b/pro/rm/varlc.pro deleted file mode 100644 index 3ce3c3950..000000000 --- a/pro/rm/varlc.pro +++ /dev/null @@ -1,154 +0,0 @@ -;***************************************************************************** -; NAME: -; varlc -; -; AUTHOR: -; Jonathan Trump, UConn 2016 -; -; PURPOSE: -; Calculate the intrinsic variance of a lightcurve, and the error in -; that intrinsic variance. Reports results from three methods: -; maximum likelihood (ML) - adapted from Keith Horne notes & fortran -; program -; interquartile range (IQR) - following MacLeod et al. 2010 -; absolute average deviation (AAD) - e.g., vanden Berk et al. 2004 -; -; INPUTS: -; Lightcurve files within directory "mergedlc_", where -; is hardcoded in the variable filter. Files must have first -; 3 columns: mjd/flux/fluxerr. -; -; OUTPUT: -; File named "varlc_.dat" with columns: -; ID iflux med(err) rms_ml err rms_iqr err rms_aad err -; -;**************************************************************************** - - -function getrms, fluxes, errors - -;; Keith Horne's method to estimate intrinsic variability. -;; -;; V = sum( (xi-u)^2 gi^2 ) / sum(gi) -;; V = intrinsic variance -;; xi = flux measurement -;; u = mean flux -;; gi = 1 / (1+e^2/V) -;; e = flux error -;; -;; Iterate to solve for V. Note that e should be a combination of -;; the standard flux error plus the spectrophotometry error. - - if stddev(fluxes) eq 0 or n_elements(fluxes) le 1 then return,[0,-1] - - meanflux = median(fluxes) -;; errors = sqrt(errors^2 + (0.04*meanflux)^2) ;add 0.04% specphoterror - - varguess = (stddev(fluxes)^2 - median(errors)^2)>0.05 - - repeat begin - varold = varguess - gi = 1 / (1+errors^2/varold) - varnew = total( (fluxes-meanflux)^2 * gi^2 ) / total(gi) - varguess = varnew - endrep until abs(varold-varnew)/varnew le 1e-5 or varnew lt 1e-12 - - varerror = 2d / ( 2*total( (fluxes-meanflux)^2 / (varnew+errors^2)^3 ) $ - - total(1d/(varnew+errors^2)^2) ) - - return, [sqrt(varnew>0), sqrt(varerror>0)/sqrt(varnew>1e-4)] - -; varerror2 = 2d * ( 2d*total((fluxes-meanflux)^2 * gi^3) $ -; / total((fluxes-meanflux)^2 * gi^2) * total(gi) - total(gi^2) ) -; -; return, [sqrt(varnew>0), sqrt(varnew>0)/sqrt(varerror2>1e-4)] - -end - - -function iqrerror, flux,error - - niter = 1000 - nv = n_elements(flux)+1 - iqr = fltarr(niter) - - for ee=0, niter-1 do begin - ind = long(randomu(seed,nv+1)*(nv+1))0 ) - - aaderr = (aad eq 0) ? 0 : 0.5/aad * sqrt( !pi^2*avg(abs(fluxes-avg(fluxes)))^2 $ - * stddev(fluxes)^2/nn + stddev(errors^2)^2/nn) - - return,[aad,aaderr] - -end - - -pro varlc - -filter='mg2' -dir = 'mergedlc_'+filter+'/' -nqso = 850 - -files = findfile(dir+'rm*'+filter+'_cream.dat') -sdssdata = mrdfits('../target_fibermap.fits',1) -iflux = 10^(-0.4*(sdssdata[0:nqso-1].psfmag[3]+48.6)+29) ;uJy units - -openw,1, 'varlc_'+filter+'.dat' ;'_linefit.dat' -printf,1,'# ID iflux med(err) rms_ml err rms_iqr err rms_aad err' - -for ii=0, n_elements(files)-1 do begin - qq = long(strmid(files[ii],strpos(files[ii],'/')+3,3)) - readcol,files[ii],mjd,flux,err, /silent - - iqr=0.0 - iter=0 - maxiter=10 - repeat begin - - toterr = sqrt(err^2+iqr^2) - linefit = linfit((mjd-6600),flux, measure_errors=toterr) - flux0 = flux - (linefit[0] + linefit[1]*(mjd-6600)) - - ;ML variance estimator - var = getrms(flux0,err) - - ;IQR: range of 25-75% of cumulative distribution, - ; with correction (x0.74) to equal sigma for a Gaussian - vsort = sort(flux0) - nv = n_elements(flux0)-1 - iqr_obs = 0.74 * (flux0[vsort[3*nv/4]] - flux0[vsort[nv/4]]) - iqrerr_obs = iqrerror(flux0,err) - iqr = sqrt(iqr_obs^2 - median(err)^2) > 0 - iqrerr = (iqr ne 0) ? 1/iqr * sqrt( (iqr_obs*iqrerr_obs)^2 $ - + medabsdev(err^2)^2/4/nv) : 0 - - ;AAD: absolute average deviation (e.g. vanden Berk et al 2004) - aad = getaad(flux0,err) - - iter++ - endrep until median(abs(toterr^2 - (err^2+iqr^2))/flux) le 1e-4 or iter gt maxiter - - printf,1,qq,iflux[qq], median(err), var, iqr,iqrerr, aad, $ - format='(I3," ",F6.2,7(" ",F6.2))' - - if ii mod 10 eq 0 then print,strtrim(ii,2),' done!' -endfor - -close,1 - -end diff --git a/pro/rm/vwsky/README b/pro/rm/vwsky/README deleted file mode 100644 index 7e36ebd4c..000000000 --- a/pro/rm/vwsky/README +++ /dev/null @@ -1,145 +0,0 @@ -Using the IDL code to subtract OH residuals from SDSS spectra -------------------------------------------------------------- -------------------------------------------------------------- - -Please report bugs! -------------------- -This code has been tested on most obvious things, but I'm sure I -forgot something. Just send me an email: vwild@MPA-Garching.MPG.DE, or if I've -moved on try: vivienne.wild@physics.org - -Further help ------------- -This code and instructions will hopefully get you started, however -please do not hesitate to contact me for help. - -Acknowledge the code --------------------- -If you publish work that makes use of the code, please acknowledge it -and reference the accompanying paper! - - -FILES ------ -This package contains the following data files and programs: - -subtractoh.pro -> main procedure for removing sky features. -runsubtract.pro -> example program to run subtractoh.pro - -** Subsidiary functions and programs: -masklines.pro -> masks line features -masklinesqso.pro -> masks qso line features (broad lines treated differently) -getweights.pro -> collect median error array for given plate (up -to DR3) -medfilt.pro -> median filter - -** Data files (GUNZIP them): -espec_OH.sav -> idl save format, eigen-spectra of OH residuals etc: - espec, lambda, pix_sky, pix_nosky - -plate_weights.sav -> idl save format, weights for all plates in DR3: - plateerror, continuum, plateid - -absgal_lines.dat -> suggested line masks for absorption line objects -emgal_lines.dat -> suggested line masks for emission line objects -extgal_lines.dat -> suggested line masks for extreme emission objects -dla_lines.dat -> some examples of DLA metal lines - -** Examples -/newfiles -> folder containing fits files of some example - galaxies. Compare them to your standard SDSS - files to see the difference. - -This code requires IDL astro routines: http://idlastro.gsfc.nasa.gov/homepage.html - -NOTES ------ - -** To get started in subtractoh.pro: --You will need to change DIR = '' to the path of the directory in which -you have stored the above data files, if they are not in the same directory as -you are running IDL in. --Gunzip .sav files. --Also change the directory /newfiles to a directory where you want the -new files to land - /newfiles is included in the tarball containing -some example fits files and will not be overwritten unless you specify -in the code (keyword OVERWRITE to function FILE_COPY - IF YOU USE THIS -BE CAREFUL NOT TO OVERWRITE YOUR STANDARD SDSS DATAFILES!!!!). - -** Very basic IDL help: -If you have not used IDL before - check it is on the system, and get -someone to give you their startup file with directory routes in. This -code uses standard routines and also IDLastro routines -(http://idlastro.gsfc.nasa.gov/homepage.html). -Start IDL by typing IDL at the command line. At -the IDL> prompt type runsubtract, and return. This will make a -postscript file called runsubtract.ps with some plots in. - -** Examples: -See the file runsubtract.pro or header of subtractoh.pro for an example function to -immediately reduce SDSS galaxy spectra from spSpec-mmmmm-pppp-fff.fit files. Also -read the header for possible keywords. - -** QSOs: -Note the need to specify if your object is a QSO using /QSO keyword (this -effects the way in which the masking of broad lines is carried out, -by whether the filter is applied before or after masking). - -** Masking lines: -It is important to ensure that lines intrinsic to the object are -masked properly. Please check! Otherwise the code could try to remove -them. - -** Extreme emission line galaxies: -If your objects are extreme emission line galaxies you might wish to -specify this by setting the applicable keyword - this makes use of a -special line file. - -** Sanity checks: -Check the following output for potential problems: -NRECON = no. of components used during reconstruction. If this reaches -the maximum set (currently 150 for galaxies and stars and 200 for -QSOs) it's worth checking to see if something has gone -wrong (e.g. problems with strong metal abs lines in -QSOs). Alternatively it's just a bad spectrum. - -If you have no special requirements you can procede with this. - -Things you might like to / need to try --------------------------------------- - -1) Use an extra file of lines to mask (e.g. previously located metal - absorption line sytems). See optional inputs LINEFILE_SEC, ZSEC. - -2) Use a different line file to the default ones. Follow the format of - the supplied files. - -3) Change the median filter size for removing the continuum of the - object. See optional input FILTER, and accompanying paper for discussion - of choice. - -4) SPEED THINGS UP - read in eigenspectra once for all spectra. See - keyword CB1. Read in weights once for all spectra. See optional - input WEIGHTS - -5) Make some plots of the process. See keyword PLOTSPEC. - - -DR4 release ------------ -New plate_weights file includes main DR4 plates. - -Vivienne Wild 24/01/05 - ----------------------------------------------------------------------- - -BUGS FIXED: - -subtractoh.pro: -29/01/05 Included RMS2 and RMS5 functions which were accidentally removed -05/06/05 changed keyword linefile to linefile_prim -05/06/05 set stellar line file to be same as absorption galaxy line -file - -dla_lines.dat: -27/10/06 corrected dla_lines.dat file which had incorrect values in \ No newline at end of file diff --git a/pro/rm/vwsky/absgal_lines.dat b/pro/rm/vwsky/absgal_lines.dat deleted file mode 100644 index 987213d72..000000000 --- a/pro/rm/vwsky/absgal_lines.dat +++ /dev/null @@ -1,14 +0,0 @@ -13 -3922. 3954. -3956. 3983. -4295. 4318. -5163. 5195. -5262. 5280. -5875. 5912. -6492. 6507. -6554. 6594. -6710. 6727. -6727. 6744. -8493. 8510. -8533. 8560. -8657. 8675. \ No newline at end of file diff --git a/pro/rm/vwsky/dla_lines.dat b/pro/rm/vwsky/dla_lines.dat deleted file mode 100644 index 81de265ab..000000000 --- a/pro/rm/vwsky/dla_lines.dat +++ /dev/null @@ -1,9 +0,0 @@ -7 -2337.2 2351.2 -2367.5 2389.8 -2579.7 2607.2 -2789.4 2810.5 -2846.0 2860.0 -3929.8 3939.8 -3964.6 3974.6 - diff --git a/pro/rm/vwsky/dla_lines.dat_old b/pro/rm/vwsky/dla_lines.dat_old deleted file mode 100644 index 9e632e303..000000000 --- a/pro/rm/vwsky/dla_lines.dat_old +++ /dev/null @@ -1,7 +0,0 @@ -6 -1541.0 1558.0 -2337.9 2351.9 -2368.0 2390.5 -2580.4 2608.0 -2797.2 2804.4 -3934.8 3969.6 \ No newline at end of file diff --git a/pro/rm/vwsky/emgal_lines.dat b/pro/rm/vwsky/emgal_lines.dat deleted file mode 100644 index 594fc4681..000000000 --- a/pro/rm/vwsky/emgal_lines.dat +++ /dev/null @@ -1,23 +0,0 @@ -22 -4847. 4880. -4956. 4967. -5002. 5015. -5166. 5181. -5874. 5883. -5888. 5907. -6298. 6308. -6543. 6556. -6556. 6576. -6577. 6594. -6678. 6685. -6710. 6727. -6727. 6744. -7062. 7068. -7134. 7145. -7317. 7339. -7752. 7758. -8493. 8510. -8533. 8560. -8657. 8675. -9016. 9022. -9065. 9082. diff --git a/pro/rm/vwsky/extgal_lines.dat b/pro/rm/vwsky/extgal_lines.dat deleted file mode 100644 index b5145aa55..000000000 --- a/pro/rm/vwsky/extgal_lines.dat +++ /dev/null @@ -1,33 +0,0 @@ -32 -3836. 3838. -3867. 3873. -3888. 3893. -3967. 3974. -4101. 4106. -4339. 4345. -4363. 4367. -4472. 4475. -4859. 4868. -4956. 4967. -5002. 5019. -5875. 5882. -6299. 6317. -6365. 6370. -6538. 6597. -6674. 6689. -6710. 6744. -7058. 7072. -7127. 7151. -7276. 7286. -7315. 7342. -7747. 7763. -8441. 8460. -8463. 8471. -8496. 8509. -8541. 8549. -8596. 8609. -8662. 8677. -8744. 8765. -8859. 8875. -9010. 9028. -9056. 9090. \ No newline at end of file diff --git a/pro/rm/vwsky/getweights.pro b/pro/rm/vwsky/getweights.pro deleted file mode 100644 index a6303d1d3..000000000 --- a/pro/rm/vwsky/getweights.pro +++ /dev/null @@ -1,70 +0,0 @@ -; -;+ -; NAME: -; getweights.pro - -; -; PURPOSE: -; Collect median error array for given plate from file and -; weight to account for SDSS scaling of Poisson errors. -; -; -; CALLING SEQUENCE: -; -; weights = GETWEIGHTS(Plate, Dir) -; -; -; INPUTS: -; Plate: SDSS plate number (integer), can be array of -; plate numbers. -; Dir: String giving directory of weight file -; -; OUTPUTS: -; This function returns an array containing the appropriate -; weighting for this plate number(s). -; -; -; MODIFICATION HISTORY: Vivienne Wild, vw@ast.cam.ac.uk, 05/01/05 -; -;**************************************************************************************** - -FUNCTION GETWEIGHTS, Plate, DIR - -;*** read in plate noise file -;contains parameters plateerror, continuum, plateid -RESTORE, DIR+'plate_weights.sav' -nbin = (SIZE(plateerror,/dim))[0] - -nplates = N_ELEMENTS(plate) - -;*** set parameters by which the SDSS noise arrays are altered -maxscale = 0.7 -alpha = 1. - -weights = FLTARR(nbin,nplates) - -for i = 0, nplates -1 do begin - -;*** find correct plate in array - ind_plate = WHERE(plateid eq plate[i], count) - if NOT(count) then MESSAGE, 'Plate not found - please supply own weights' - - noise = plateerror[*,ind_plate] - cont = continuum[*,ind_plate] - -;*** scale error - maxnoise = MAX(noise-cont) - index = WHERE(abs(noise-cont) gt 0.02 and noise-cont gt 0) - scale = FLTARR(nbin)+1 - scale[index] = (1-( ((noise[index]-cont[index])/maxnoise)^alpha * (1-maxscale)) ) < 1 ;max value=1 - -;*** calculate weights - - posvar = WHERE(noise ne 0) - weights[posvar,i] = 1./(noise[posvar]*scale[posvar]) - -endfor - -RETURN, weights - -END diff --git a/pro/rm/vwsky/makedatafiles.pro b/pro/rm/vwsky/makedatafiles.pro deleted file mode 100644 index c6c9c8a2e..000000000 --- a/pro/rm/vwsky/makedatafiles.pro +++ /dev/null @@ -1,34 +0,0 @@ -;*** make public data files for weights and espec - -PRO makedatafiles - -;restore, '/data/cass00a/vw/DR3/espec_sky/platenoise_a.sav' ;from platenoise.pro - -;plateerror = error_plate -;continuum = cont -;plateid = plateid - -;save, plateerror, continuum, plateid, file='/home/vw/idl/pro/sdss/SKY/PUBLIC/plate_weights.sav' - -restore, '/data/cass00a/vw/DR4/espec_sky/platenoise_dr4.sav' ;from platenoise.pro - -plateerror = error_plate -continuum = cont -plateid = plateid - -save, plateerror, continuum, plateid, file='/data/cass00a/vw/DR4/espec_sky/plate_weights.sav' - -stop - -common sky_info, lambda,bad_sky,no_sky,minlam,maxlam,disp,espec,nbin,nbin_bad -sky_info,str='bo' - -espec = espec -disp = 0.0001 -lambda = findgen(nbin)*disp + minlam -pix_sky = bad_sky -pix_nosky = no_sky - -save, espec,lambda,pix_sky,pix_nosky, file='/home/vw/idl/pro/sdss/SKY/PUBLIC/espec_OH.sav' - -END diff --git a/pro/rm/vwsky/masklines.pro b/pro/rm/vwsky/masklines.pro deleted file mode 100644 index 432628133..000000000 --- a/pro/rm/vwsky/masklines.pro +++ /dev/null @@ -1,105 +0,0 @@ -; -;+ -; NAME: -; masklines.pro - -; -; PURPOSE: -; Identify and mask emission/absorption features in a spectrum -; -; -; CALLING SEQUENCE: -; -; pixel_mask = MASKLINES(Flux, Wave, Linefile, Newflux, /SILENT) -; -; -; INPUTS: -; Flux: spectrum -; Wave: rest wavelength array, Angstroms (same length as Flux) -; Linefile: Path and name of file containing array of -; wavelengths to be masked. -; -; KEYWORD PARAMETERS: -; SILENT: stop program writing warnings -; -; OUTPUTS: -; This function returns an array the same length of flux where 1 -; identifies a pixel with a line, and 0 a pixel without a line. -; -; OPTIONAL OUTPUT: -; Newflux: The pixels identified as containing lines are -; replaced with the median of 50 nearby pixels. NOTE -; variable newflux must be defined as non-zero proir -; to calling program. -; -; -; MODIFICATION HISTORY: Vivienne Wild, vw@ast.cam.ac.uk, 05/01/05 -; -;**************************************************************************************** - - -function MASKLINES, flux, wave, linefile, newflux, silent=silent - -if N_ELEMENTS(wave) ne N_ELEMENTS(flux) then message, 'flux and wave must be same size' - -;read in line file - -OPENR, lun, linefile, /get_lun -nlines = 0 -READF, lun, nlines -emlines = FLTARR(2,nlines) -READF, lun, emlines -FREE_LUN, lun - -;create pixel mask -nbin = N_ELEMENTS(wave) -pixel_mask = FLTARR(nbin) -for i=0, nlines-1 do begin - - index = where(wave gt emlines[0,i] and wave lt emlines[1,i],count) - if count gt 0 then pixel_mask[index] = 1. - -endfor - -;warnings -junk = WHERE(pixel_mask eq 1, n) -if n eq 0 and NOT(KEYWORD_SET(SILENT)) then print,'masklines.pro: no em lines masked' - -;mask flux array if required -if N_ELEMENTS(newflux) ne 0 and n ne 0 then begin - - goodpix = FINDGEN(nbin) - badpix = FINDGEN(nbin) - index = WHERE(pixel_mask eq 1,compl=compl) - goodpix = goodpix[compl] - badpix = badpix[index] - newflux =flux - - for i = 0, N_ELEMENTS(badpix) -1 do begin - up = WHERE(goodpix gt badpix[i]) ;non-line pixels above line - low = WHERE(goodpix lt badpix[i],count) ;non-line pixels below line - if up[0] ne -1 then begin - flag1 = 1 - if n_elements(up) gt 25 then index1 = up[0:24] else index1 = up ;+/-25 pixels chosen to match typical filter scale - endif else flag1 = 0 ;line sits at far red of spectrum - if low[0] ne -1 then begin - flag2 = 1 - if n_elements(low) gt 25 then index2 = low[count-25:count-1] else index2 = low - endif else flag2 = 0 ;line sits at far blue of spectrum - - if flag1 and flag2 then index = [index1,index2] - if flag1 and NOT(flag2) then index = [index1] - if flag2 and NOT(flag1) then index = [index2] - if NOT(flag1) and NOT(flag2) then begin - if NOT(KEYWORD_SET(SILENT)) then print,'something wrong with line mask' - continue - endif - - newflux[badpix[i]] = MEDIAN(flux[goodpix[index]]) - endfor - -endif else if N_ELEMENTS(newflux) ne 0 and n eq 0 then newflux = flux - -return, pixel_mask - -end diff --git a/pro/rm/vwsky/masklinesqso.pro b/pro/rm/vwsky/masklinesqso.pro deleted file mode 100644 index 98048bfb0..000000000 --- a/pro/rm/vwsky/masklinesqso.pro +++ /dev/null @@ -1,83 +0,0 @@ -; -;+ -; NAME: -; masklinesqso.pro - -; -; PURPOSE: -; Identify and mask emission/absorption features in a QSO -; spectrum. Differs from masklines.pro in having maximum -; linemask size depending on filter size used in median filter. -; -; -; CALLING SEQUENCE: -; -; pixel_mask = MASKLINES_QSO(Flux, Wave, Z, Linefile, Nfilt, /SILENT) -; -; -; INPUTS: -; Flux: spectrum -; Wave: observed wavelength array (Angstroms) -; Z: redshift of QSO -; Linefile: Path and name of file containing array of -; wavelengths to be masked. -; Nfilt: Size of median filter used on spectrum before masking. -; -; KEYWORD PARAMETERS: -; SILENT: Stop program writing warnings -; -; OUTPUTS: -; This function returns an array the same length of flux where 1 -; identifies a pixel with a line, and 0 a pixel without a line. -; -; -; MODIFICATION HISTORY: Vivienne Wild, vw@ast.cam.ac.uk, 05/01/05 -; -;**************************************************************************************** -FUNCTION MASKLINESQSO, Flux, Wave, Z, Linefile, Nfilt, silent=silent - -if N_ELEMENTS(wave) ne N_ELEMENTS(flux) then message, 'flux and wave must be same size' - -;read in line file: -;Note the broad lines have a single wavelength, the width of the mask -;is then set by the median filter size. The narrow lines have an upper -;and lower wavelength - -OPENR, lun, linefile, /get_lun -nlines = 0 -READF, lun, nlines -emlines = FLTARR(2,nlines) -READF, lun, emlines -FREE_LUN, lun - -;create pixel mask -nbin = N_ELEMENTS(wave) -pixel_mask = FLTARR(nbin) - -for i=0, nlines-1 do begin - ind = WHERE(wave/(1+z) ge emlines[0,i], count) - - ;the approx. size of the median filter in angstroms, observed frame - if count gt 2 then a = nfilt*(wave[ind[1]]-wave[ind[0]]) else continue - - if emlines[0,i] eq emlines[1,i] then begin ;the broad lines - emlines[0,i] = emlines[0,i]*(1+z)-a/3. - emlines[1,i] = emlines[1,i]*(1+z)+a/3. - endif else begin ;the narrow lines - emlines[0,i] = emlines[0,i]*(1+z) - emlines[1,i] = emlines[1,i]*(1+z) - endelse - - index = where(wave gt emlines[0,i] and wave lt emlines[1,i],count) - if count gt 0 then pixel_mask[index] = 1. - -endfor - - -;warnings -junk = WHERE(pixel_mask eq 1,n) -if n eq 0 and NOT(KEYWORD_SET(silent)) then print, 'masklines_qso.pro: no qso lines masked' - -return, pixel_mask - -end diff --git a/pro/rm/vwsky/medfilt.pro b/pro/rm/vwsky/medfilt.pro deleted file mode 100644 index e86720b9b..000000000 --- a/pro/rm/vwsky/medfilt.pro +++ /dev/null @@ -1,53 +0,0 @@ -; -;+ -; NAME: -; medfilt.pro - -; -; PURPOSE: -; Median filter a spectrum. -; -; -; CALLING SEQUENCE: -; -; newflux = MEDFILT(Flux, Ind_filter, Nfilt) -; -; -; INPUTS: -; Flux: spectrum -; Ind_filter: pixels which require median filtering (allows proper -; filtering at ends where available) -; Nfilt: size of filter in pixels -; -; OUTPUTS: -; This function returns the median filtered spectrum. -; -; NOTES: -; Use Ind_filter = findgen(n_elements(flux)) to median filter -; whole input spectrum. -; -; MODIFICATION HISTORY: Vivienne Wild, vw@ast.cam.ac.uk, 05/01/05 -; -;**************************************************************************************** - -FUNCTION MEDFILT, Flux, Ind_filter, Nfilt - -nhalf = nfilt/2 -nbin = n_elements(ind_filter) -npix = n_elements(flux) - -med_spec = fltarr(nbin) -for j=0,nbin-1 do begin - - start = j-nhalf+ind_filter[0] - finish = j+nhalf+ind_filter[0] - - if start lt 0 then start = 0 - if finish gt npix then finish=npix - - med_spec[j] = median(flux[start:finish-1],/even) -endfor - -return, med_spec - -END diff --git a/pro/rm/vwsky/metal_lines.dat b/pro/rm/vwsky/metal_lines.dat deleted file mode 100644 index 35417d0fe..000000000 --- a/pro/rm/vwsky/metal_lines.dat +++ /dev/null @@ -1,8 +0,0 @@ -7 -1541.0 1558.0 -2339.9 2349.9 -2370.2 2380.2 -2582.4 2606.0 -2792.2 2809.4 -3927.8 3941.8 -3962.6 3976.6 \ No newline at end of file diff --git a/pro/rm/vwsky/qso_lines.dat b/pro/rm/vwsky/qso_lines.dat deleted file mode 100644 index d805de165..000000000 --- a/pro/rm/vwsky/qso_lines.dat +++ /dev/null @@ -1,23 +0,0 @@ -21 -1218. 1218. -1305. 1305. -1400. 1400. -1549. 1549. -1909. 1909. -2798. 2798. -3416. 3436. -3729. 3729. -3860. 3880. -4103. 4103. -4342. 4342. -4863. 4863. -4960. 4960. -4984. 4984. -5008. 5008. -5868. 5888. -6292. 6312. -6550. 6550. -6565. 6565. -6585. 6585. -6725. 6725. -7128. 7148. diff --git a/pro/rm/vwsky/runsubtract.pro b/pro/rm/vwsky/runsubtract.pro deleted file mode 100644 index c2d28f716..000000000 --- a/pro/rm/vwsky/runsubtract.pro +++ /dev/null @@ -1,56 +0,0 @@ -PRO runsubtract - -DIR = '' ;where your fits data files are -DIR2 = 'newfiles/' ;where you want the new fits files - -galspc = ['0586/spSpec-52023-0586-324.fit','0385/spSpec-51877-0385-449.fit',$ ;example Galaxies - '0507/spSpec-52353-0507-399.fit','0412/spSpec-52258-0412-312.fit',$ - '0581/spSpec-52356-0581-289.fit'] -; galspc = ['0434/spSpec-51885-0434-177.fit','0360/spSpec-51816-0360-495.fit',$ ;example QSOs -; '0499/spSpec-51988-0499-059.fit','0268/spSpec-51633-0268-160.fit',$ -; '0451/spSpec-51908-0451-174.fit'] - -ngal = n_elements(galspc) -plate = uintarr(ngal) -for i=0L,ngal-1 do plate[i] = uint((strsplit(galspc[i],'-',/extract))[2]) ;plate numbers - -;Postscript plotting: -set_plot,'ps' -device,file='runsubtract.ps',/color,/portrait,xoffset=2,yoffset=2,ysize=25,xsize=18 -!p.multi=[0,1,4] -for i=0,ngal-1 do begin - - ;read in data files and wave array - data = readfits(dir+galspc[i],header,/silent) - min_l = sxpar(header,'coeff0') ;central wavelength (log10) of 1st pix - disp = sxpar(header, 'coeff1') ;dispersion per pixel - npix = sxpar(header, 'naxis1') ;no. of pixels - wave = (dindgen(npix)*disp +min_l) ;wave array - z = sxpar(header,'z') ;redshift of galaxy - eclass = sxpar(header,'eclass') ;eigenclass - - final_spec = subtractoh(data[*,0], data[*,2], wave, z, plate[i], rms=rms, nrecon=nrecon,$ - eclass=eclass, /plotspec) -;;;now do what you want with final_spec.... -;e.g. make new fits files - - galspc2 = (strsplit(galspc[i],'/',/extract))[1] - file_copy,DIR+galspc[i],DIR2+galspc2 - data[*,0]=final_spec ;replace spectrum with sky-subtracted version - -; Suggested modifications to fits header - SXADDPAR, header, 'SKYVAR0',rms[0],'Non-Sky pixel variance' - SXADDPAR, header, 'SKYVAR1',rms[1],'Bad-Sky pixel variance (before skysub)' - SXADDPAR, header, 'SKYVAR2',rms[2],'Bad-Sky pixel variance (after skysub)' - SXADDPAR, header, 'NRECON',nrecon,'Number of components in reconstruction' - - modfits,DIR2+galspc2,data,header ;modfits must be the NEW IDLastro version - - -endfor - -cleanplot,/silent -device,/close -set_plot,'x' - -END diff --git a/pro/rm/vwsky/runsubtract.ps b/pro/rm/vwsky/runsubtract.ps deleted file mode 100644 index 0cdfd4c68..000000000 Binary files a/pro/rm/vwsky/runsubtract.ps and /dev/null differ diff --git a/pro/rm/vwsky/subtractoh.pro b/pro/rm/vwsky/subtractoh.pro deleted file mode 100644 index 4f7667011..000000000 --- a/pro/rm/vwsky/subtractoh.pro +++ /dev/null @@ -1,442 +0,0 @@ -; -;+ -; NAME: -; subtractOH.pro - -; -; PURPOSE: -; Remove OH sky signatures beyond 6700\AA from Sloan Digital Sky -; Survey spectra using a Principal Component Analysis. -; -; -; CALLING SEQUENCE: -; -; newflux = SUBTRACTOH(Flux, Error, Wave, Z, Plate, Rms=Rms, -; Nrecon=Nrecon, [...optional input, keywords]) -; -; -; INPUTS: -; Flux: SDSS flux array, e.g. data[*,0] -; Error: Error array, e.g. data[*,2] -; Wave: Wavelength array in log(angstroms), -; e.g. (dindgen(npixels)*dispersion + wave_pix1) -; Z: Redshift of spectrum -; Plate: SDSS plate number -; -; OPTIONAL INPUTS: -; Eclass: If the object is a galaxy, eclass must be provided. -; Eclass<-0.05 are classified absorption line -; galaxies. Eclass>-0.05 are classified emission line -; galaxies (e.g. 'eclass' parameter in fits -; headers). -; -; Filter: Specify choice if filter scale, default 55 -; pixels. Ensure that scale large enough to be -; uneffected by OH lines. -; -; Linefile_prim: Filename in which a list of lines can be found which -; should be masked during the procedure. Follow format -; of supplied line mask files. -; -; Linefile_sec: Second filename containing list of lines of a -; secondary object in the spectrum -; (e.g. DLA). NOTE optional input 'zsec' must also -; be given. -; -; Weights: Produced by program getweights.pro to give -; approximate Poisson errors from SDSS noise array. It -; is recommended to pass these to the program if -; multiple files are being calculated to greatly -; improve speed. -; -; Zsec: Redshift of a secondary object in the spectrum. NOTE -; optional input 'linefile_sec' must also be given. -; -; KEYWORD PARAMETERS: -; CB1: Set this keyword to indicate the use of a common block -; to pass the eigenspectra array into the program. This -; improves speed greatly if many files are being -; computed at once. -; common subtractOH1, espec, lambda, pix_sky, pix_nosky - -; -; EXTGAL: Set this keyword to indicate that this object is an -; extreme emission line galaxy. A different line list -; will be used to mask the emission lines. Recommended -; criteria for extreme emission line galaxies: -; EW(Ha)>200,z<0.4; EW(OIII)>200,z<0.84 -; -; PLOTSPEC: Set this keyword to cause the function to produce -; plots of the sky-residual subtraction process. There -; must be a suitable plotting device open! -; -; QSO: Set this keyword to cause median filtering to be -; performed after line masking (better for broad -; emission lines), and QSO line file to be -; used if optional input 'Linefile' is not -; specified. The default is a galaxy. -; -; STAR: Set this keyword to indicate that this object is a -; star and the stellar line file is to be -; used if optional input 'Linefile' is not -; specified. The default is a galaxy. -; -; SILENT: Set this keyword to stop the function reporting anything. -; -; OUTPUTS: -; This function returns the sky subtracted SDSS spectrum. -; -; -; OPTIONAL OUTPUTS: -; RMS: An array containing the rms values of the spectrum -; [non-sky pixels, sky pixels before, sky pixels after] -; NRECON: The number of components used during the reconstruction. -; -; NOTE: -; This routine has been slightly modified to use new eigenvectors -; created for the RM program (BOSS spectra); the sky residual eigenvectors -; were created on the set of -; sky spectra unnormalized by the scaled errors, which is likely different -; from Wild&Hewett in which the eigenvectors were created on the normalized -; sky spectra. However, the two approaches give negligible difference, so -; I am sticking to my approach. - -;---------------------------------------------------------------------------------------- -;; EXAMPLE PROGRAM TO MAKE NEW FITS FILES WITH SKY-RESIDUAL SUBTRACTED SPECTRA: -; -;; SET DIR and DIR2 before running. -; -;; FOR QSOS remember to set QSO keyword, and don't use ECLASS -; -; PRO runsubtract -; -; DIR = '' ;where your fits data files are -; DIR2 = 'newfiles/' ;where you want the new fits files -; -; galspc = ['0586/spSpec-52023-0586-324.fit','0385/spSpec-51877-0385-449.fit',$ ;example Galaxies -; '0507/spSpec-52353-0507-399.fit','0412/spSpec-52258-0412-312.fit',$ -; '0581/spSpec-52356-0581-289.fit'] -;; galspc = ['0434/spSpec-51885-0434-177.fit','0360/spSpec-51816-0360-495.fit',$ ;example QSOs -;; '0499/spSpec-51988-0499-059.fit','0268/spSpec-51633-0268-160.fit',$ -;; '0451/spSpec-51908-0451-174.fit'] -; -; ngal = n_elements(galspc) -; plate = uintarr(ngal) -; for i=0L,ngal-1 do plate[i] = uint((strsplit(galspc[i],'-',/extract))[2]) ;plate numbers -; -; ;Postscript plotting: -; set_plot,'ps' -; device,file='runsubtract.ps',/color,/portrait,xoffset=2,yoffset=2,ysize=25,xsize=18 -; !p.multi=[0,1,4] -; for i=0,ngal-1 do begin -; -; ;read in data files and wave array -; data = readfits(dir+galspc[i],header,/silent) -; min_l = sxpar(header,'coeff0') ;central wavelength (log10) of 1st pix -; disp = sxpar(header, 'coeff1') ;dispersion per pixel -; npix = sxpar(header, 'naxis1') ;no. of pixels -; wave = (dindgen(npix)*disp +min_l) ;wave array -; z = sxpar(header,'z') ;redshift of galaxy -; eclass = sxpar(header,'eclass') ;eigenclass -; -; final_spec = subtractoh(data[*,0], data[*,2], wave, z, plate[i], rms=rms, nrecon=nrecon,$ -; eclass=eclass, /plotspec) -; ;;;now do what you want with final_spec.... -; ;e.g. make new fits files -; -; galspc2 = (strsplit(galspc[i],'/',/extract))[1] -; file_copy,DIR+galspc[i],DIR2+galspc2 -; data[*,0]=final_spec ;replace spectrum with sky-subtracted version -; -; ; Suggested modifications to fits header -; SXADDPAR, header, 'SKYVAR0',rms[0],'Non-Sky pixel variance' -; SXADDPAR, header, 'SKYVAR1',rms[1],'Bad-Sky pixel variance (before skysub)' -; SXADDPAR, header, 'SKYVAR2',rms[2],'Bad-Sky pixel variance (after skysub)' -; SXADDPAR, header, 'NRECON',nrecon,'Number of components in reconstruction' -; -; modfits,DIR2+galspc2,data,header ;modfits must be the NEW IDLastro version -; -; -; endfor -; -; cleanplot,/silent -; device,/close -; set_plot,'x' -; -; END -;---------------------------------------------------------------------------------------- -; -; MODIFICATION HISTORY: Vivienne Wild, vw@ast.cam.ac.uk, 22/12/04 -; 29/01/05 Included RMS2 and RMS5 functions which were accidentally removed -; 05/06/05 changed keyword linefile to linefile_prim -; set stellar line file to be same as absorption galaxy line file -; -;**************************************************************************************** -FUNCTION rms2,x -;calculate variance -RETURN, SQRT((MOMENT(x,/nan))[1]) -END - -FUNCTION rms5,x -;calculate 67th percentile -y = MEAN(x,/nan) -index = SORT(ABS(x-y)) -a = N_ELEMENTS(x)*.67 -percentile = ABS((x-y)[index[a]]) - -RETURN,percentile -END - -;**************************************************************************************** - -FUNCTION subtractOH, Flux, Error, Wave, Z, Plate, Rms=Rms, Nrecon=Nrecon, $ - Eclass=eclass, filter=filter, linefile_prim=linefile, linefile_sec = linefile_sec, zsec=zsec, weights=weights_in, $ - CB1=CB1,QSO=QSO, STAR=STAR, EXTGAL=EXTGAL, sky=sky, $ - PLOTSPEC=PLOTSPEC, SILENT=SILENT, maxnrecon=maxnrecon - -;**** Set this string to the path of the data files -;DIR = '~/idl/pro/SDSS/SKY/PUBLIC/' -DIR=getenv('IDLRM_DIR') + '/pro/vwsky/' - -;------------------------------------ CHECKING INPUTS --------------------------- -if (SIZE(flux,/dim))[0] ne (SIZE(wave,/dim))[0] and (SIZE(flux,/dim))[0] ne (SIZE(error,/dim))[0] then $ - MESSAGE,'FLUX and WAVE must be arrays of same size' - -;what type of object? -if KEYWORD_SET(qso) then QSO=1 else QSO=0 ;QSO -if KEYWORD_SET(star) then STAR=1 else STAR=0 ;stellar spectrum -if KEYWORD_SET(extgal) then EXTGAL=1 else EXTGAL=0 ;extreme emission line galaxy - -if N_ELEMENTS(eclass) eq 0 and NOT(QSO) and NOT(STAR) and NOT(SKY) then $ - MESSAGE, 'A galaxy needs an ECLASS: <-0.05 absorption line, >0.05 emission line' -if (QSO) or (STAR) or (SKY) then eclass = -9999 - -if NOT(QSO) and NOT(STAR) and NOT(EXTGAL) and eclass lt -0.05 then ABSGAL=1 else ABSGAL=0 ;abs line galaxy -if NOT(QSO) and NOT(STAR) and NOT(EXTGAL) and eclass ge -0.05 then EMGAL=1 else EMGAL=0 ;em line galaxy - -;if (QSO) then maxnrecon = 200 else maxnrecon = 150 -if not keyword_set(maxnrecon) then begin - if (QSO) then maxnrecon = 500 else maxnrecon = 200 -endif - -;bits and pieces -if N_ELEMENTS(filter) eq 0 then filter = 55 ;size of median filter in pixels. -if KEYWORD_SET(plotspec) then plotspec = 1 else plotspec=0 ;to plot or not -if KEYWORD_SET(silent) then silent=1 else silent=0 ;to make comments or not -if n_elements(CB1) eq 0 then CB1=1 ;common block for eigenspectra array - -if N_ELEMENTS(zsec) ne 0 then SEC=1 else SEC=0 ;Secondary object in spectrum -if (SEC) and N_ELEMENTS(linefile_sec) eq 0 then message,'Please provide filename for file containing lines of secondary object' - -;**** Read in eigen-spectra file -; contains parameters: espec, lambda, pix_sky, pix_nosky -; ESPEC = fltarr(no. espectra, no. pixels) -; LAMBDA = fltarr(no. pixels) -; PIX_SKY = lonarr to identify those pixels with sky signatures to correct -; PIX_NOSKY = lonarr to identify those pixels used as control - -;if CB1 then $ -; common subtractOH1, espec, lambda, pix_sky, pix_nosky $ -;else RESTORE, DIR+'espec_OH.sav' -common subtractOH1, espec, lambda, pix_sky, pix_nosky - -; populate the common block -if n_elements(espec) eq 0 then begin - ;file='/data3/quasar/yshen/ftp/bossredux/v5_7_1/wh_skysub/pca.fits' - file=getenv('IDLRM_DIR')+'/template/sky_residual_pca.fits' - - pca=mrdfits(file,1) - lambda=pca.loglam & espec=pca.eigenspec & pix_sky=pca.ind_sky & pix_nosky=pca.ind_nonsky - ; cull out a red-wavelength region - ind_tmp=where(10.^lambda gt 5000., ncomplement=ncomp) - lambda=lambda[ind_tmp] - pix_sky=pix_sky - ncomp & pix_nosky=pix_nosky - ncomp - ; remove the nosky pixels below 5000 A - ind_tmp=where(pix_nosky ge 0) - pix_nosky=pix_nosky[ind_tmp] -endif - -npix = N_ELEMENTS(lambda) ;number of pixels we are working with -disp = 0.0001 ;SDSS spectrum dispersion - -;**** Find pixels we are correcting -red_ind = WHERE(wave ge lambda[0]-disp/3. and wave le lambda[npix-1]+disp/3.,count) - -if NOT(count) then MESSAGE, 'Input wavelength array not right - observed frame? log(wavelength)?' - -if count lt npix then begin ;sometimes a few red pixels are missing - WAVEFLAG = 1 - flux_in = [flux,fltarr(npix-count)] ;fill gap with zeros - error_in = [error,fltarr(npix-count)] ;set error=0 so not used in anything - wave_in = [wave,lambda[count:npix-1]] ;fill up wavelength array - red_ind = WHERE(wave ge lambda[0]-disp/3. and wave le lambda[npix-1]+disp/3.) ;reset red indexing -endif else begin - WAVEFLAG = 0 - flux_in = flux - error_in = error - wave_in = wave -endelse - -wave_red = wave_in[red_ind] - - -;-------------------------- PREPARE SPECTRUM ----------------------------------------- -;**** Median filter the spectrum -;pass the whole flux array to allow correct filtering in blue end -;**** Create pixel-mask to ID emission/absorption features -;file containing wavelengths of potential line features to be masked -if N_ELEMENTS(linefile) eq 0 then begin - if QSO then linefile = DIR+'qso_lines.dat' - if STAR then begin - linefile = DIR+'absgal_lines.dat' - if NOT(SILENT) then print,'star: currently using absorption line galaxy line list' - endif - if ABSGAL then linefile = DIR+'absgal_lines.dat' - if EMGAL then linefile = DIR+'emgal_lines.dat' - if EXTGAL then linefile = DIR+'extgal_lines.dat' -endif - -if NOT(QSO) then begin ;GAL, STAR: median filter after masking - - flux2 = 1 - if not keyword_set(sky) then begin - pix_mask = MASKLINES(flux_in,(10^wave_in)/(1+z), linefile, flux2, silent=silent) - endif else begin - flux2=flux_in - pix_mask = lonarr(n_elements(flux2)) - endelse - - medflux = MEDFILT(flux2,red_ind,filter) ;median filter using flux with abs features masked - flux_med = flux2[red_ind]-medflux - pix_mask = pix_mask[red_ind] - -endif else begin ;QSO: median filter before masking - - if NOT(silent) then PRINT, 'SUBTRACTOH: masking QSO lines' - - medflux = MEDFILT(flux_in,red_ind,filter) - flux_med = flux_in[red_ind]-medflux - - pix_mask = MASKLINESQSO(flux_med,(10^wave_red), z, linefile, filter, silent=silent) ;max mask size set by filter - -endelse - -if SEC then begin ;secondary object in spectrum (e.g. DLA) - if NOT(silent) then PRINT, 'SUBTRACTOH: masking secondary lines' - pix_mask2 = MASKLINES(flux_med, (10^wave_red)/(1+zsec),linefile_sec, silent=silent) - pix_mask = pix_mask+pix_mask2 < 1 ; < "minimum operator" -endif - -;**** ERROR=0 pixels - for some reason flux is undefined here -;add these pixels into pixel mask -ind = WHERE(error_in[red_ind] eq 0,count) -if count ne 0 then pix_mask[ind] = 1 - -;**** Create pixel arrays of sky/non-sky pixels, containing only pixels without line features -pix_sky_good = pix_sky -pix_espec = WHERE(NOT(pix_mask[pix_sky])) - -if pix_espec[0] eq -1 then begin - rms = fltarr(3) - nrecon = 0 - print, 'problem with spectrum, returning' - return,flux -endif - -pix_sky_good = pix_sky_good[pix_espec] - -pix_nosky_good = pix_nosky -ind = WHERE(NOT(pix_mask[pix_nosky])) - -if ind[0] eq -1 then begin - rms = fltarr(3) - nrecon = 0 - print, 'problem with spectrum, returning' - return,flux -endif - -pix_nosky_good = pix_nosky_good[ind] - -;-------------------------- RECONSTRUCT SKY FEATURES ------------------------------------ -;**** Divide flux by mean plate error, weighted to correct SDSS noise. -;if N_ELEMENTS(weights_in) ne 0 then weights = weights_in else weights = GETWEIGHTS(plate, DIR) -; Note that the weights_in is in the same dimension as the input spectrum -weights = weights_in[red_ind] ; this is the reverse of the rescaled plate error array - -;; check if any of the to-be-corrected sky pixels have bad weights (INFINITE) -;ttt=where(finite(weights[pix_sky_good]) eq 0, n_bad_weights) -;print, '# of bad weights: ', n_bad_weights -flux_wgt = flux_med*weights - -;**** Project prepared spectrum onto sky eigenspectra -pcs = flux_wgt[pix_sky_good] ## (TRANSPOSE(espec[pix_espec,0:maxnrecon-1])) - -;**** Calculate reconstruction based on rms of sky and non-sky pixels -RMS_nosky = RMS5(flux_wgt[pix_nosky_good]) -RMS_b4sky = RMS2(flux_wgt[pix_sky_good]) - -recon = FLTARR(N_ELEMENTS(pix_sky)) -final_spec = flux_in ;outgoing spectrum = ingoing spectrum for now -nrecon = 0 ;minimum no. of components -ii=0 - -while(1) do begin - - if ii eq 0 then RMS_afsky = RMS_b4sky else RMS_afsky = RMS2(flux_sub[pix_sky_good]) ;RMS of sky pixels - - if RMS_afsky lt RMS_nosky or ii eq maxnrecon then begin - nozero = WHERE(weights[pix_sky] ne 0) - final_spec[red_ind[pix_sky[nozero]]] = $ - flux_in[red_ind[pix_sky[nozero]]] - recon[nozero]/weights[pix_sky[nozero]] ;correct outgoing spectrum - nrecon = ii ;final number of components - break - endif - -;if RMS not satisfied then carry on reconstructing - recon = recon+pcs[ii]*espec[*,ii] - - flux_sub = flux_wgt - flux_sub[pix_sky] = flux_wgt[pix_sky]-recon - ii = ii+1 - -endwhile - -rms = [RMS_nosky, RMS_b4sky, RMS_afsky] - -if nrecon eq maxnrecon and NOT(silent) then $ - PRINT, 'SUBTRACTOH WARNING: reached max no. of components set. Recommend inspecting output for problems.' - -;-------------------- MAKE SOME PLOTS ------------------------------------------------------ -if (PLOTSPEC) then begin - ;LOADCT, 23,ncolors=30,silent=silent - - !P.multi=[0,1,2] - yrange=[-5, max(medflux)*1.5] - xrange=[min(10.^wave_red), max(10.^wave_red)] - PLOT, 10^wave_red, flux_in[red_ind],/ynozero,xstyle=1,title='black: before; red: after; blue: median filter '+string(rms,form='(3F7.3)'), yrange=yrange, xrange=xrange - OPLOT, 10^wave_red, final_spec[red_ind],color=cgcolor('red') - OPLOT, 10^wave_red, medflux,color=cgcolor('blue') - - ind = WHERE(pix_mask eq 1,count) - if count ne 0 then OPLOT, 10^wave_red[ind],fltarr(count)+yrange[0], psym=3,color=cgcolor('cyan') - - - PLOT, 10^wave_red[pix_sky_good], flux_med[pix_sky_good], xstyle=1,title='black: before, median filtered; red: reconstruction '+string(nrecon,form='(I3)'),psym=5, xrange=xrange - OPLOT, 10^wave_red[pix_sky], recon/weights[pix_sky],color=cgcolor('red'),psym=5 - if count ne 0 then OPLOT, 10^wave_red[ind],fltarr(count), psym=3,color=cgcolor('cyan') - !P.multi=0 - -endif - - -if WAVEFLAG then final_spec = final_spec[0:N_ELEMENTS(flux)-1] ;remove added on pixels - -;message,'stop and diag' - -; set the ivar=0 pixels to the original flux -ind=where(error eq 0) -if ind[0] ne -1 then final_spec[ind] = flux[ind] - -return, final_spec - -END diff --git a/pro/science/.DS_Store b/pro/science/.DS_Store deleted file mode 100644 index 021a41625..000000000 Binary files a/pro/science/.DS_Store and /dev/null differ diff --git a/pro/science/README b/pro/science/README deleted file mode 100644 index ae08bdda5..000000000 --- a/pro/science/README +++ /dev/null @@ -1,4 +0,0 @@ -science: - -Directory for science-based tests of 1-d outputs, including -Faber-Jackson, fundamental plane, and Mg-sigma. diff --git a/pro/science/bandpassinfo.pro b/pro/science/bandpassinfo.pro deleted file mode 100644 index c9bddde48..000000000 --- a/pro/science/bandpassinfo.pro +++ /dev/null @@ -1,69 +0,0 @@ -;+ -; NAME: -; bandpassinfo -; PURPOSE: -; Return information about SDSS bandpasses u,g,r,i,z. -; COMMENTS: -; This routine can be used to convert filternames into numbers and back. -; If band is passed as a string, it gets whitespace-trimmed before use. -; CALLING SEQUENCE: -; bandpassinfo, band,index=index,name=name,wave=wave,fwhm=fwhm,zero=zero -; INPUTS: -; band - a name (ugriz) or index (01234), or a vector of them -; OPTIONAL KEYWORDS: -; OUTPUTS: -; OPTIONAL OUTPUTS: -; index - the band's index number (0-4) -; name - name ('u' through 'z') -; wave - central wavelength in Angstroms -; fwhm - width of the bandpass in Angstroms -; zero - the flux in Jy of a zero-magnitude source -; blueindex - the index (0-3) of the blue bandpass of the k-correction color -; redindex - the index (1-4) of the red bandpass of the k-correction color -; colorname - the name of the color ('(u-g)' through '(i-z)') -; BUGS: -; Returns 0's (u's) or 4's (z's) where the input is wacky. -; Computes even unnecessary things (this could be fixed with some calls to -; keyword_set(). -; PROCEDURES CALLED: -; REVISION HISTORY: -; 2000-Jun-28 Written by Hogg (IAS) -;- -;------------------------------------------------------------------------------ -pro bandpassinfo, band,index=index,name=name,wave=wave,fwhm=fwhm,zero=zero, $ - blueindex=blueindex,redindex=redindex,colorname=colorname - -; set up bandpass data - nband= 5 - bname= [ 'u', 'g', 'r', 'i', 'z'] - bwave= [ 3543.0, 4770.0, 6231.0, 7625.0, 9134.0] - bfwhm= [ 567.0, 1387.0, 1373.0, 1526.0, 950.0] - bzero= [1.0e-23,1.0e-23,1.0e-23,1.0e-23,1.0e-23] - bblui= [ 0, 1, 2, 3, 3] - bredi= [ 1, 2, 3, 4, 4] - bcolorname= '('+bname[bblui]+'-'+bname[bredi]+')' - -; get size of band input - nn= n_elements(band) - -; check whether input is in terms of indices or names; make index - if size(band,/type) EQ 7 then begin - if nn EQ 1 then index= 0 else index= intarr(nn) - for i=0,nn-1 do begin - ii= where(bname EQ strtrim(band[i],2),mm) - if mm EQ 1 then index[i]= ii[0] - endfor - endif else begin - index= ((fix(band) > 0) <4) - endelse - -; output and return - name= bname[index] - wave= bwave[index] - fwhm= bfwhm[index] - zero= bzero[index] - blueindex= bblui[index] - redindex= bredi[index] - colorname= bcolorname[index] - return -end diff --git a/pro/science/ism/nebular_batch.pro b/pro/science/ism/nebular_batch.pro deleted file mode 100644 index 408d9791a..000000000 --- a/pro/science/ism/nebular_batch.pro +++ /dev/null @@ -1,199 +0,0 @@ -;+ -; NAME: -; nebular_batch -; -; PURPOSE: -; Batch process the NEBULARSKY code -; -; CALLING SEQUENCE: -; nebular_batch, [ plate, mjd=, topdir=, outdir=, upsversion=, nice=, $ -; /onlysky, outfile= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; plate - Plate number(s) to reduce; default to all non-bad plates -; and all public plates. -; mjd - MJD(s) for each PLATE -; topdir - Top directory for reductions; default $BOSS_SPECTRO_REDUX -; outdir - Top directory for outfile files; default to current directory -; upsversion - If set, then do a "setup idlspec2d $UPSVERSION" on the -; remote machine before executing the IDL job. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; nice - Unix nice-ness for spawned jobs; default to 19. -; onlysky - Keyword for NEBULARSKY -; outfile - Output file for all plates; default to 'nebular.fits' -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The list of hosts and protocols should be in the Yanny parameter file -; specified in the file TOPDIR/batch1d.par if it exists, or the default -; file "$IDLSPEC2D_DIR/examples/batch1d.par" is used. -; This batch processing only supports machines with cross-mounted disks. -; It will not run if REMOTEDIR is set for any machine. -; -; The command is piped to the bash shell on the remote machine, so IDL -; and the idlspec2d product must be present when running "bash --login". -; Normally, your .bashrc file should set up all the necessary path info. -; If the UPSVERSION keyword is used, then the UPS "setup" command must -; also be set up in the .bashrc file. -; -; The $DISPLAY environment variable is always set to "" on the remote -; machine to make certain that we only use one IDL license per machine. -; (Any IDL jobs that have the same the username, machine name, and $DISPLAY -; use the same license.) -; -; Prioritize to do the highly-reddened plates first. -; -; EXAMPLES: -; -; BUGS: -; Should pass OUTFILE to the batch commands, but there's a quote problem??? -; -; DATA FILES: -; $IDLSPEC2D_DIR/examples/batch1d.par -; -; PROCEDURES CALLED: -; djs_batch -; djs_filepath() -; platelist -; splog -; yanny_readone -; -; REVISION HISTORY: -; 05-Dec-2006 Written by D. Schlegel, LBNL -;- -;------------------------------------------------------------------------------ -pro nebular_batch, plate, mjd=mjd, topdir=topdir, outdir=outdir, $ - upsversion=upsversion, nice=nice, onlysky=onlysky, outfile=outfile - - if (NOT keyword_set(topdir)) then topdir = getenv('BOSS_SPECTRO_REDUX') - if (NOT keyword_set(outdir)) then begin - cd, current=outdir - endif - cd, outdir - if (n_elements(nice) EQ 0) then nice = 19 - - if (NOT keyword_set(outfile)) then outfile = 'nebular.fits' - - splog, prelog='(NEBULAR)' - - ;---------- - ; Create list of plate files - - if (keyword_set(plate)) then begin - nplate = n_elements(plate) - plist = replicate(create_struct('PLATE',0L,'MJD',0L), nplate) - plist.plate = plate - if (keyword_set(mjd1)) then begin - if (n_elements(mjd1) NE nplate) then $ - message, 'Number of elements in PLATE and MJD do not agree' - plist.mjd = mjd1 - endif - endif else begin - if (keyword_set(topdir)) then setenv, 'BOSS_SPECTRO_REDUX=' + topdir - platelist, plist=plist - if (keyword_set(plist)) then begin - indx = where(strmatch(plist.status1d,'Done*') $ - AND strmatch(plist.platequality,'bad*') EQ 0 $ - OR (strtrim(plist.public) NE ''), nplate) - if (nplate GT 0) then plist = plist[indx] $ - else plist = 0 - endif - endelse - if (nplate EQ 0) then begin - splog, 'No plate files found' - return - endif - - ;---------- - ; Determine which plates are already reduced - - olddat = hogg_mrdfits(outfile, 1, columns=['PLATE','MJD'], $ - nchunk=10, /silent) - qexist = bytarr(nplate) - if (keyword_set(olddat)) then begin - for i=0L, nplate-1L do begin - if (total(olddat.plate EQ plist[i].plate $ - AND olddat.mjd EQ plist[i].mjd) GT 0) then $ - qexist[i] = 1B - endfor - olddat = 0 ; clear memory - endif - - ikeep = where(qexist EQ 0, nkeep) - if (nkeep EQ 0) then begin - splog, 'All plates already reduced' - return - endif else begin - splog, 'Skipping ', nplate-nkeep, ' reduced plates' - plist = plist[ikeep] - nplate = nkeep - endelse - - ;---------- - ; Prioritize to do the highest-reddened plates first - - euler, plist.ra, plist.dec, ll, bb, 1 - priority = dust_getval(ll, bb,/ interp) - - ; Prioritize to do the lowest-numbered plates first -; priority = lonarr(nplate) -; isort = sort(plist.plate) -; priority[isort] = reverse(lindgen(nplate)) + 1 - - ;---------- - ; Determine which computers to use for these reductions. - ; Use TOPDIR/batch1d.par if it exists, otherwise - ; use "$IDLSPEC2D/examples/batch1d.par". - - hostfile = djs_filepath('batch1d.par', root_dir=topdir) - hostfile = (findfile(hostfile))[0] - if (NOT keyword_set(hostfile)) then $ - hostfile = filepath('batch1d.par', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='examples') - splog, 'Reading batch file ' + hostfile - hostconfig = yanny_readone(hostfile) - if (NOT keyword_set(hostconfig)) then begin - splog, 'WARNING: Could not file batch file ' + hostfile - return - endif - if (total(strtrim(hostconfig.remotedir) NE '') NE 0) then $ - message, 'This routine only supports cross-mounted machines!' - - ;---------- - ; Begin the batch jobs. - ; Force this to be sent to a bash shell locally, and pipe to a bash shell remotely. - ; Redirect output to /dev/null; this redirection should be valid for - ; either bash or csh shells. - ; The command will look something like (but all in one line): - ; cd /u/dss/spectro; - ; echo "DISPLAY=; setup idlspec2d v4_9_6; - ; echo \"nebularsky,230,mjd=52251\" | - ; /bin/nice -10 idl " | bash --login >& /dev/null' - - platestr = strtrim(plist.plate,2) - mjdstr = strtrim(plist.mjd,2) - addstring = keyword_set(onlysky) ? ',/onlysky' : '' - setenv, 'SHELL=bash' - precommand = 'echo "DISPLAY=; ' - fq = '\"' - if (keyword_set(upsversion)) then $ - precommand = precommand + 'setup idlspec2d ' + upsversion + '; ' - if (keyword_set(topdir)) then $ - precommand = precommand + 'BOSS_SPECTRO_REDUX='+fq+topdir+fq+'; ' - if (keyword_set(nice)) then nicestr = '/bin/nice -' + strtrim(string(nice),2) $ - else nicestr = '' - command = precommand + ' echo '+fq+'nebularsky,'+platestr+',mjd='+mjdstr+addstring+fq+' | ' + nicestr + ' idl ' + '" | bash --login >& /dev/null' - - djs_batch, outdir, 0, 0, $ - hostconfig.protocol, hostconfig.remotehost, hostconfig.remotedir, $ - command, priority=priority - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/science/ism/nebular_pcasky.pro b/pro/science/ism/nebular_pcasky.pro deleted file mode 100644 index e9b2cbf7d..000000000 --- a/pro/science/ism/nebular_pcasky.pro +++ /dev/null @@ -1,186 +0,0 @@ -;+ -; NAME: -; nebular_pcasky -; -; PURPOSE: -; Solve for the PCA components of the night sky emission -; -; CALLING SEQUENCE: -; nebular_pcasky, [ waverange=, wavefit=, outfile=, niter=, nkeep= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; waverange - Wavelength range for output; default to [3750.,9250.] Ang -; wavefit - Fitting wavelength range; default to [4000.,7700.] Ang -; outfile - Output file; default to 'pcasky.fits' -; niter - Parameter for PCA_SOLVE(); default to 10 -; nkeep - Parameter for PCA_SOLVE(); default to 4 -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; Make use of the instrumental response at each pixel ??? -; -; Since we do not adequately describe the auroral emission, the -; three [O I] lines at 5577, 6300, 6363 are simply masked from the -; fit and interpolated over, such that they don't appear at all -; in the output PCA spectra. -; For and example of strong auroal activity, see the spectrum 286/51999-422. -; -; PROCEDURES CALLED: -; combine1fiber -; mwrfits -; pca_solve() -; platelist() -; readonespec -; readspec -; splog -; sxpar() -; wavevector() -; -; REVISION HISTORY: -; 05-Dec-2006 Written by A. West & D. Schlegel, Berkeley -;- -;------------------------------------------------------------------------------ -pro nebular_pcasky, waverange=wrange1, wavefit=wfit1, $ - outfile=outfile1, niter=niter1, nkeep=nkeep1 - - wrange = n_elements(wrange1) EQ 2 ? wrange1 : [3750.,9250.] - wfit = n_elements(wfit1) EQ 2 ? wfit1 : [4000.,7700.] - outfile = keyword_set(outfile1) ? outfile1 : 'pcasky.fits' - niter = n_elements(niter1) GT 0 ? niter1 : 10 - nkeep = n_elements(nkeep1) GT 0 ? nkeep1 : 4 - - newloglam = wavevector(alog10(wrange[0]), alog10(wrange[1])) - - ;---------- - ; Select plates with little nebular emission for computing sky PCA - ; This region selected based upon Finkbeiner's H-alpha maps. - - platelist, plist=plist - euler, plist.ra, plist.dec, ll, bb, 1 - ikeep = where(strmatch(plist.status1d,'Done*') $ - AND strmatch(plist.platequality,'Bad*') EQ 0 $ - AND ll GT 270 AND ll LT 290 AND bb GT 50, nplate) - plist = plist[ikeep] - splog, 'Number of plates = ', nplate - - ;---------- - ; Determine which are sky fibers on these plates - - splog, 'Reading ZANS structures' - readspec, plist.plate, mjd=plist.mjd, zans=zans, /silent - qsky = strmatch(zans.objtype, 'SKY*') - isky = where(qsky, nsky) - zans = zans[isky] - - ;---------- - ; Count the total number of sky spectra, one per exposure. - ; (We will be combining the blue+red spectra below.) - - ntot = 0L - for iplate=0L, nplate-1L do begin - print, format='("Counting plate ",i4," of ",i4,a,$)', iplate, nplate, $ - string(13b) - ii = where(zans.plate EQ plist[iplate].plate $ - AND zans.mjd EQ plist[iplate].mjd AND qsky, nn) - if (nn GT 0) then begin - readspec, plist[iplate].plate, mjd=plist[iplate].mjd, $ - objhdr=objhdr, /silent - expid = long(strmid(sxpar(objhdr, 'EXPID*'),3,8)) - nexp = n_elements(uniq(expid, sort(expid))) - ntot += nexp * nn - endif - endfor - print - splog, 'Total number of sky spectra = ', ntot - - ;---------- - ; Read in all the individual exposures for these sky spectra - - i = 0L - newflux = fltarr(n_elements(newloglam),ntot) - newivar = fltarr(n_elements(newloglam),ntot) - for iplate=0L, nplate-1L do begin - print, format='("Reading plate ",i4," of ",i4,a,$)', iplate, nplate, $ - string(13b) - ii = where(zans.plate EQ plist[iplate].plate $ - AND zans.mjd EQ plist[iplate].mjd AND qsky, nn) - for j=0L, nn-1L do begin - readonespec, zans[ii[j]].plate, mjd=zans[ii[j]].mjd, $ - zans[ii[j]].fiberid, $ - flux=flux1, invvar=invvar1, loglam=loglam1, $ - sky=sky1, framehdr=framehdr, /silent - - ; Revert the heliocentric correction, and put us back in the - ; rest frame of planet Earth. - for iexp=0, n_elements(framehdr)-1 do begin - heliov = sxpar(*framehdr[iexp], 'V_RAD') - loglam1[*,iexp] += alog10(1.d0 + heliov/2.99792458d5) - endfor - - ; Combine the blue+red spectra for each exposure - expid = lonarr(n_elements(framehdr)) - for k=0, n_elements(framehdr)-1 do $ - expid[k] = sxpar(*framehdr[k], 'EXPOSURE') - explist = expid[uniq(expid,sort(expid))] - for iexp=0, n_elements(explist)-1 do begin - ithis = where(expid EQ explist[iexp]) - combine1fiber, loglam1[*,ithis], flux1[*,ithis]+sky1[*,ithis], $ - invvar1[*,ithis], binsz=1d-4, newloglam=newloglam, $ - newflux=newflux1, newivar=newivar1 - newflux[*,i] = newflux1 - newivar[*,i] = newivar1 - i++ - endfor - endfor - endfor - print - - ngoodpt = total(newivar NE 0,2) - - ;---------- - ; Mask out wavelengths outside the fitting domain - ; and mask out the three [O_I] lines - - fitmask = (newloglam GE alog10(wfit[0])) * (newloglam LE alog10(wfit[1])) - - lambda = [5577.339, 6300.304, 6363.776] - linesig = [4.5d-4, 4.5d-4, 3.5e-4] - airtovac, lambda - linemask = bytarr(n_elements(newloglam)) + 1B - for i=0, n_elements(lambda)-1 do $ - linemask *= abs(newloglam - alog10(lambda[i])) GT linesig[i] - - for i=0L, ntot-1L do $ - newivar[*,i] *= fitmask * linemask - - ;---------- - ; Do the PCA solution - - res = pca_solve(newflux, newivar, niter=niter, nkeep=nkeep, usemask=usemask) - - ; Discard any wavelength with fewer than 20 good measurements - ; (before my addditional masking) - for ikeep=0, nkeep-1 do res[*,ikeep] *= (ngoodpt GE 10) - - ; Interpolate over the masked emission lines - for ikeep=0, nkeep-1 do $ - res[*,ikeep] = djs_maskinterp(res[*,ikeep], linemask EQ 0, /const) - - ;---------- - ; Write a FITS file - - mwrfits, float(res), outfile, /create - mwrfits, newloglam, outfile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/science/ism/nebularsky.pro b/pro/science/ism/nebularsky.pro deleted file mode 100644 index de62184be..000000000 --- a/pro/science/ism/nebularsky.pro +++ /dev/null @@ -1,429 +0,0 @@ -;+ -; NAME: -; nebularsky -; -; PURPOSE: -; Fit nebular emission lines in SDSS sky + galaxy spectra -; -; CALLING SEQUENCE: -; nebularsky, [ plate, mjd=, lambda=, skyfile=, fitrange=, $ -; zlimits=, siglimits=, npoly=, fitflux=, lwidth=, $ -; outfile=, logfile=logfile, /onlysky, /create, /debug ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; plate - List of plates; default to using the PLATELIST procedure -; to select all reduced plates without quality set to 'bad' -; mjd - MJD corresponding to each PLATE -; lambda - Wavelengths for sky emission lines [vacuum Ang]; default to -; using the galaxy emission line list at > 3800 Ang, but where -; the [O_I] lines are allowed to have a velocity and width -; independent of the other lines -; skyfile - FITS file containing the PCA components for the sky, -; with the spectra in HDU #0, and the log-wavelengths -; in HDU #1; this file can be generated with NEBULAR_PCASKY. -; fitrange - Fitting region in vacuum Ang; default to using all wavelengths -; zlimits - Redshift limits for all emission lines; default to -; [-200,200]/3e5 -; siglimits - Velocity dispersion limits for all emission lines; default to -; [60,150] km/s -; npoly - Number of polynomial terms for sky spectrum; default to 3 -; (quadratic) -; fitflux - Subtract out either the 'synflux' or 'lineflux' spectrum; -; default to 'synflux' -; broadened Elodie templates plus emission lines. -; lwidth - Full width for masking around possible galaxy emission lines; -; default to 0.002 in log-wavelenghth (about 1382 km/s) -; onlysky - If set, then only fit to good sky fibers; otherwise, fits -; are performed to good sky fibers, galaxies, and stars -; outfile - Output FITS file; default to 'nebular.fits' -; logfile - Output log file; default to a separate log file per plate, -; named logfile-$PLATE-$MJD.log. If specified, then a single -; log file by that name is used for all plates. -; create - If set, then create a new output file; default to appending -; to an existing file if it already exists -; debug - If set, then make debugging plots, and wait for keystroke -; after each plot -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine creates the output file, and then appends to it one -; plate at a time. Several instances of this procedure can safely -; write to the same file. -; -; All wavelengths are in vacuum, and velocities are barycentric. -; -; All lines are constrained to have the same velocity and width, except -; for the [O_I] lines since those can be due to solar activity. -; -; EXAMPLES: -; nebularsky, 231, mjd=51456 -; -; BUGS: -; Make use of the instrumental response at each line center ??? -; Test the FITFLUX='lineflux' option ??? -; -; DATA FILES: -; $IDLSPEC2D_DIR/etc/emlines.par -; -; PROCEDURES CALLED: -; copy_struct_inx -; djs_lockfile() -; djs_unlockfile -; linebackfit() -; mrdfits() -; mwrfits_chunks -; pixelmask_bits() -; readonespec -; readspec -; soplot -; splog -; splot -; struct_selecttags() -; -; REVISION HISTORY: -; 12-Jan-2006 Written by A. West & D. Schlegel, Berkeley -;- -;------------------------------------------------------------------------------ -pro nebularsky, plate, mjd=mjd1, lambda=lambda1, skyfile=skyfile1, $ - fitrange=fitrange, $ - zlimits=zlimits1, siglimits=siglimits1, fitflux=fitflux1, lwidth=lwidth1, $ - npoly=npoly1, onlysky=onlysky, outfile=outfile1, logfile=logfile, $ - create=create1, debug=debug - - if (keyword_set(skyfile1)) then skyfile = skyfile1 $ - else skyfile = 'pcasky.fits' - if (keyword_set(zlimits1)) then zlimits = zlimits1 $ - else zlimits = [-200.,200.]/3e5 - if (keyword_set(siglimits1)) then siglimits = siglimits1 $ - else siglimits = [60.,150.] - if (n_elements(npoly1) GT 0) then npoly = npoly1 $ - else npoly = 3 - if (keyword_set(outfile1)) then outfile = outfile1 $ - else outfile = 'nebular.fits' - if (keyword_set(fitflux1)) then fitflux = strlowcase(fitflux1) $ - else fitflux = 'synflux' - if (keyword_set(lwidth1)) then lwidth = lwidth1 $ - else lwidth = 0.002 - if (fitflux NE 'synflux' AND fitflux NE 'lineflux') then $ - message, 'Invalid string for FITFLUX' - - cspeed = 2.99792458e5 - - res_all = 0 - - csize = 1.6 - select_tags = ['PLATE','MJD','FIBERID','OBJTYPE','PLUG_RA','PLUG_DEC', $ - 'CLASS','SUBCLASS','Z','ZWARNING'] - res_append = create_struct('SFD_EBV', 0.) - - if (keyword_set(logfile)) then begin - splog, filename=logfile - splog, 'Log file opened ' + systime() - endif - - ;---------- - ; Read the sky PCA components - - skypcaflux = mrdfits(skyfile) - skyloglam = mrdfits(skyfile, 1) - if (NOT keyword_set(skypcaflux)*keyword_set(skyloglam)) then $ - message, 'Unable to read sky file ' + skyfile - if (keyword_set(npoly)) then $ - skypcaflux = [[skypcaflux], [poly_array(n_elements(skyloglam),npoly)]] - - ;---------- - ; Read line lists and convert to vacuum (used for masking lines - ; in galaxy spectra) - - linefile = filepath('emlines.par', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='etc') - yanny_read, linefile, pdata - linelist = *pdata[0] - yanny_free, pdata - - vaclambda = linelist.lambda - airtovac, vaclambda - linelist.lambda = vaclambda - - ;---------- - ; Generate the line list that will be used for fitting the sky nebular - ; lines, where we force everything to have the same velocity, etc., - ; except for all the [O I] lines which can be atmospheric. - - if (keyword_set(lambda1)) then begin - lambda = lambda1 - q_oxygen = 0 - endif else begin - indx = where(linelist.lambda GT 3800.) - lambda = linelist[indx].lambda - linename = linelist[indx].name - q_oxygen = strmid(linelist[indx].name,0,5) EQ '[O_I]' - endelse - nline = n_elements(lambda) - zindex = lonarr(n_elements(lambda)) + q_oxygen - windex = lonarr(n_elements(lambda)) + q_oxygen - - ;---------- - ; Select the list of plates - - if (keyword_set(plate)) then begin - nplate = n_elements(plate) - plist = replicate(create_struct('PLATE',0L,'MJD',0L), nplate) - plist.plate = plate - if (keyword_set(mjd1)) then begin - if (n_elements(mjd1) NE nplate) then $ - message, 'Number of elements in PLATE and MJD do not agree' - plist.mjd = mjd1 - endif - endif else begin - platelist, plist=plist - plist = plist[where(strmatch(plist.status1d,'Done*') $ - AND strmatch(plist.platequality,'bad*') EQ 0, nplate)] - endelse - - splog, 'Number of plates = ', nplate - - for iplate=0L, nplate-1 do begin - bterms_all = 0 - readspec, plist[iplate].plate, mjd=plist[iplate].mjd, $ - zans=zans, plug=plug, /silent - - if (NOT keyword_set(logfile)) then begin - splog, filename='nebular-'+string(format='(i4.4,"-",i5.5)',plist[iplate].plate,zans[0].mjd)+'.log' - splog, 'Log file opened ' + systime() - endif - splog, 'IDL version: ' + string(!version,format='(99(a," "))') - spawn, 'uname -a', uname - splog, 'UNAME: ' + uname[0] - splog, 'DISPLAY=' + getenv('DISPLAY') - splog, 'BOSS_SPECTRO_REDUX=' + getenv('BOSS_SPECTRO_REDUX') - splog, 'idlspec2d version ' + idlspec2d_version() - splog, 'idlutils version ' + idlutils_version() - splog, '' - splog, 'SKYFILE= ', skyfile - splog, 'FITRANGE=', (keyword_set(fitrange) ? fitrange : '') - splog, 'ZLIMITS=', (keyword_set(zlimits) ? zlimits : '') - splog, 'SIGLIMITS=', (keyword_set(siglimits) ? siglimits : '') - splog, 'NPOLY=', (keyword_set(siglimits) ? npoly : '') - splog, 'NPOLY=', (n_elements(siglimits) NE 0 ? npoly : '') - splog, 'FITFLUX= ', (keyword_set(fitflux) ? fitflux : '') - splog, 'LWIDTH=', (keyword_set(lwidth) ? lwidth : '') - splog, 'LWIDTH=', (keyword_set(lwidth) ? lwidth : '') - splog, 'OUTFILE= ', outfile - splog, 'ONLYSKY=', (keyword_set(onlysky) ? 1 : 0) - - t0 = systime(1) - if (keyword_set(zans[0])) then begin - plist[iplate].mjd = zans[0].mjd ; Fill in if this was zero - zans_trim = struct_selecttags(zans, select_tags=select_tags) - - qsky = (zans.zwarning AND 1) NE 0 AND (zans.zwarning AND 2^1+2^7) EQ 0 - qgalaxy = zans.zwarning EQ 0 AND strmatch(zans.class,'GALAXY*') - qstar = zans.zwarning EQ 0 AND strmatch(zans.class,'STAR*') - if (keyword_set(onlysky)) then qgood = qsky $ - else qgood = qsky OR qgalaxy OR qstar - - nfiber = n_elements(zans) - for ifiber=0L, nfiber-1L do begin - if (qgood[ifiber]) then begin - splog, 'Working on PLATE= ', zans[ifiber].plate, $ - ' MJD= ', zans[ifiber].mjd, ' FIBER=', zans[ifiber].fiberid - - ; Read in all the individual exposures for this object - ; (blue and red cameras) - readonespec, plist[iplate].plate, mjd=plist[iplate].mjd, $ - zans[ifiber].fiberid, $ - flux=flux, invvar=invvar, mask=mask, loglam=loglam, $ - sky=sky, synflux=synflux, lineflux=lineflux, expnum=expnum, $ - framehdr=framehdr, /silent - invvar = invvar * ((mask AND pixelmask_bits('COMBINEREJ')) EQ 0) - if (fitflux EQ 'lineflux') then synflux = lineflux - - ;---------- - ; Generate PCA sky background basis vectors, - ; resampled to the wavelength mapping of the data - - ndim = size(flux,/n_dimen) - dims = size(flux,/dimens) - npix = dims[0] - if (ndim EQ 1) then nobs = 1 else nobs = dims[1] - - ndim = size(skypcaflux,/n_dimen) - dims = size(skypcaflux,/dimens) - if (ndim EQ 1) then nsky = 1 else nsky = dims[1] - - explist = expnum[uniq(expnum,sort(expnum))] - nexp = n_elements(explist) - background = fltarr(npix, nobs, nsky, nexp) - for iexp=0L, nexp-1L do begin - ithis = where(expnum EQ explist[iexp]) - ; Convert the sky PCA spectra from Earth rest-frame - ; to heliocentric. - heliov = sxpar(*framehdr[ithis[0]], 'V_RAD') - for isky=0L, nsky-1L do begin - combine1fiber, $ - skyloglam - alog10(1.d0 + heliov/2.99792458d5), $ - skypcaflux[*,isky], $ - newloglam=loglam[*,ithis], newflux=thisflux - background[*,ithis,isky,iexp] = thisflux - endfor - endfor - background = reform(background, npix*nobs, nsky*nexp) - - ; Discard wavelengths outside of the synthetic template fits - if (qsky[ifiber] EQ 0) then $ - invvar = invvar * (synflux NE 0) - - ; Set SYNFLUX=0 if this is a sky fiber - synflux = synflux * (1-qsky[ifiber]) - - ; Discard wavelengths near emission lines in the galaxy frame - if (qgalaxy[ifiber]) then begin - for iline=0, n_elements(linelist)-1 do begin - thislam = alog10(linelist[iline].lambda*(1+zans[ifiber].z)) - invvar = invvar * ((loglam LT thislam - 0.5*lwidth) $ - OR (loglam GT thislam + 0.5*lwidth)) - endfor - endif - - ; Fit only within the fitting range - if (keyword_set(fitrange)) then $ - invvar = invvar * (loglam GE alog10(fitrange[0]) $ - AND loglam LE alog10(fitrange[1])) - - ; Initial guesses for the em. line Z and SIGMA from - ; previous fibers on the same plate - if (ifiber GT 0) then k = where(qgood[0:ifiber-1]) $ - else k = -1 - if (k[0] EQ -1) then begin - zguess = lonarr(n_elements(lambda)) - sigguess = lonarr(n_elements(lambda)) + 1.5d-4 - endif else begin - zguess = djs_median( $ - reform(res_all[*,k].linez,nline,n_elements(k)), 2) - sigguess = djs_median( $ - reform(res_all[*,k].linesigma,nline,n_elements(k)), 2) $ - / (alog(10.)*cspeed) - endelse - if (keyword_set(bterms_all)) then begin - if (size(bterms_all,/n_dimen) EQ 1) then $ - backguess = bterms_all $ - else $ - backguess = djs_median(bterms_all, 2) - ; Replicate this guess for all exposures... - backguess = reform(rebin(backguess, nsky, nexp), nsky*nexp) - endif else begin - backguess = fltarr(nsky*nexp) - endelse - - ii = where(invvar NE 0, ngpix) - if (ngpix EQ 0) then ii = 0 - res1 = linebackfit(lambda, loglam[ii], $ - flux[ii]+sky[ii]-synflux[ii], invvar=invvar[ii], $ - linename=linename, background=background[ii,*], $ - zindex=zindex, windex=windex, $ - zguess=zguess, sigguess=sigguess, backguess=backguess, $ - zlimits=zlimits, siglimits=siglimits, $ - yfit=yfit1, bfit=bfit1, bterms=bterms1) - bterms1 = reform(bterms1, nsky, nexp) - bterms_all = keyword_set(bterms_all) ? $ - [[bterms_all],[bterms1]] : bterms1 - yfit = fltarr(npix,nobs) - yfit[ii] = yfit1 - bfit = fltarr(npix,nobs) - bfit[ii] = bfit1 - - if (NOT keyword_set(res_all)) then begin - res_blank = create_struct(zans_trim[0], res1[0], res_append) - struct_assign, {junk:0}, res_blank - res_all = replicate(res_blank, nline, nfiber) - endif - index_to = ifiber*nline+lindgen(nline) - copy_struct_inx, res1, res_all, index_to=index_to - - if (keyword_set(debug)) then begin - xplot = 10^loglam - yplot = flux+sky-synflux - if (ngpix GT 1) then begin - xrange = minmax(xplot[ii]) - yrange = minmax(yplot[ii]) - endif else begin - xrange = minmax(xplot) - yrange = minmax(yplot) - endelse -;xrange = [6500,6800] & yrange=[-20,100] ; ??? - title = string(plist[iplate].plate, plist[iplate].mjd, $ - zans[ifiber].fiberid, $ - format='("Plate ", i4, " MJD ", i5, " Fiber ", i3)') - splot, [0], [0], /nodata, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - charsize=csize, xtitle='Wavelength [Ang]', ytitle='Flux', $ - title=title - for iline=0, n_elements(lambda)-1 do $ - soplot, lambda[iline]+[0,0], !y.crange, color='green' - for iobs=0, nobs-1 do begin - jj = where(invvar[*,iobs] NE 0, ct) - if (ct GT 1) then begin - soplot, xplot[jj,iobs], yplot[jj,iobs] - soplot, xplot[jj,iobs], yfit[jj,iobs], color='red' - soplot, xplot[jj,iobs], yfit[jj,iobs]-bfit[jj,iobs], $ - color='green' - endif - endfor - thisclass = qsky[ifiber] ? 'SKY' : zans[ifiber].class - xyouts, total([0.9,0.1]*!x.crange), $ - total([0.1,0.9]*!y.crange), thisclass, charsize=csize - cc = get_kbrd(1) - endif - endif - endfor - - ;---------- - ; Copy ZANS data into the output structure - - for ifiber=0L, nfiber-1L do begin - index_to = ifiber*nline+lindgen(nline) - copy_struct_inx, replicate(zans_trim[ifiber],nline), res_all, $ - index_to=index_to - ; Copy over LINENAME,LINEWAVE even for fibers that were not fit - res_all[index_to].linename = res1.linename - res_all[index_to].linewave = res1.linewave - endfor - - ;---------- - ; Add the SFD reddening values - - euler, res_all.plug_ra, res_all.plug_dec, ll, bb, 1 - res_all.sfd_ebv = dust_getval(ll, bb, /interp) - - ;---------- - ; Create/append to the output file - - while(djs_lockfile(outfile) EQ 0) do wait, 1 - create = ((iplate EQ 0) AND (file_test(outfile) EQ 0)) $ - OR keyword_set(create) - splog, 'Writing PLATE=', plist[iplate].plate, $ - ' MJD= ', plist[iplate].mjd, ' to file ', outfile - mwrfits_chunks, res_all, outfile, create=create, $ - append=(create EQ 0), /silent - djs_unlockfile, outfile - - splog, 'Elapsed time for plate ', iplate+1, ' of ', nplate, $ - ' = ', systime(1)-t0, ' sec' - endif else begin - splog, 'Skipping PLATE= ', plist[iplate].plate, $ - ' MJD= ', plist[iplate].mjd, ' (not found)' - endelse - if (NOT keyword_set(logfile)) then splog, /close - endfor - - if (keyword_set(logfile)) then splog, /close - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/science/k_correct.pro b/pro/science/k_correct.pro deleted file mode 100644 index c7e51c131..000000000 --- a/pro/science/k_correct.pro +++ /dev/null @@ -1,60 +0,0 @@ -;+ -; NAME: -; k-correct -; PURPOSE: -; Take 5-band photometry and redshift and return k-corrected magnitude. -; COMMENTS: -; CALLING SEQUENCE: -; restphot= k-correct(obsphot,z) -; INPUTS: -; obsphot - 5xN array of SDSS photometry in observed frame -; z - N-vector of redshifts -; OPTIONAL INPUTS: -; obserr - 5xN array of uncertainties in obsphot -; KEYWORDS: -; OUTPUTS: -; restphot - 5xN array of SDSS photometry in rest frame -; OPTIONAL OUTPUTS: -; resterr - 5xN array of propagated uncertainties in restphot -; PROCEDURES CALLED: -; BUGS: -; MAKES NO USE OF ERRORS. -; GIVES CRAP WHEN EXTRAPOLATING. -; This uses an incredibly stupid interpolation scheme. -; REVISION HISTORY: -; 2000-Jun-28 Written by Hogg (IAS) -;- -function k_correct, obsphot,z,obserr=obserr,resterr=resterr - -; get bandpass information - bandpassinfo, indgen(5),index=band,name=name,wave=wave,zero=zero, $ - redindex=ri,blueindex=bi - nband= 5 - -; get array sizes - nz= n_elements(z) - -; start loop over redshifts - loglam= alog10(wave) - logflux= alog10(zero)-0.4*obsphot - emit= dblarr(5,nz) - obse= dblarr(5,nz) - logfluxk= dblarr(5,nz) - restphot= dblarr(5,nz) - for i=0,nz-1 do begin - -; make log lambda points - emit[band,i]= loglam[band]-alog10(1.0+z[i]) ; emitted - obse[band,i]= loglam[band] ; observed - -; do spline interpolation - y1= spl_init(emit[band],logflux[band,i]) - logfluxk[band,i]= spl_interp(emit[band],logflux[band,i],y1,obse[band,i]) - -; convert back to magnitudes - restphot[band,i]= 2.5*alog10(zero)-2.5*logfluxk[band,i] - endfor - - return, restphot -end - diff --git a/pro/science/kinematics/MCsimul.pro b/pro/science/kinematics/MCsimul.pro deleted file mode 100644 index 41088edcd..000000000 --- a/pro/science/kinematics/MCsimul.pro +++ /dev/null @@ -1,61 +0,0 @@ -;+ -; NAME: -; MCsimul -; -; PURPOSE: -; For each template star the code generates Monte Carlo simulations -; of galaxy-spectra as function of S/N (10 to 90), and -; velocity dispersion (100 to 280 km/s). At each fixed S/N and -; velocity dispersion it generates 16 random realizations. -; -; CALLING SEQUENCE: -; MCsimul, starflux, filename -; -; INPUTS: -; starflux - Template spectra [npix, nstar] -; -; OUTPUTS: -; filename - a .fit file containing the output -; array [npix,nveldisp,nSN,nrand] (npix, 10, 9, 16) -; with the simulated spectra -; -; REVISION HISTORY: -; -; 16-Mar-2000 Written by M. Bernardi & S. Burles, FNAL -; 2-Aug-2000 Modified by M. Bernardi -;------------------------------------------------------------------------------ -Pro MCsimul, starflux, filename - - npix=(size(starflux))[1] - nstar= (size(starflux))[2] - x=findgen(npix) - - for i=0,nstar-1 do begin - - res=80.0/70.0 - y=starflux[*,i] - simgalflux=fltarr(npix,10,9,16) - - for n=0,9 do begin - res=res+20.0/70.0 - ybroad=gauss_smooth(x,y,res,x) - sn=0.0 - print, i, n - - for nn=0,8 do begin - sn=sn+10.0 - meanstar=mean(ybroad) - - for nnn=0,15 do begin - ynoise=ybroad + randomu(100*nnn,npix,/normal)*meanstar/sn - simgalflux[*,n,nn,nnn]=ynoise - endfor - endfor - endfor - - mwrfits, simgalflux, filename - - endfor - -return -end diff --git a/pro/science/kinematics/fitsimul.pro b/pro/science/kinematics/fitsimul.pro deleted file mode 100644 index 186889010..000000000 --- a/pro/science/kinematics/fitsimul.pro +++ /dev/null @@ -1,75 +0,0 @@ -; Procedure to fit 'template.fit' or simluations of velocity dispersions - -pro fitsimul, filename, starflux, starsig, starwave,nn0,nn, czmin, czmax, returntest - - -for i=nn0,nn do begin - - a = mrdfits(filename, i) - asig = a*0.0 - meanstar = mean(a) - - sn = 0.0 - for n=0,8 do begin - sn = sn + 10.0 - asig[*,*,n,*] = meanstar/sn - endfor - - b = reform(a, 3918, 10*9*16) - bsig = reform(asig, 3918, 10*9*16) - bwave= b*0 - nstar= (size(b))[2] - for k=0,nstar-1 do begin - bwave[*,k] = starwave[*,i] - endfor - - bredshifts=0*findgen((size(b))[2]) - - mveldisp, b, bsig, bwave, starflux[*,i], starsig[*,i], starwave[*,i], result, redshifts=bredshifts, czmin= czmin, czmax= czmax, klo_cut=0.016, khi_cut=0.23, maxsig=6,sigmastep=0.4 - - - teststruct = { ANSWER, templateno: 0L, sigma:0.0, sn:0.0, $ - measured_cc:fltarr(16), measured_cc_err:fltarr(16), $ - measured_quot_diff:fltarr(16), measured_quot_diff_err:fltarr(16), $ - measured_quotient:fltarr(16), measured_quotient_err:fltarr(16),$ - measured_diff:fltarr(16), measured_diff_err:fltarr(16)} - - fulltest = replicate(teststruct,90) - - fulltest.templateno = i - count = 0 - sn = 0.0 - for n=0,8 do begin - sn = sn+ 10.0 - res = 80.0 - for nn=0,9 do begin - res = res + 20.0 - fulltest[count].sigma = res - fulltest[count].sn = sn - fulltest[count].measured_cc = result[count+lindgen(16)*90].sigma_cc - fulltest[count].measured_cc_err = result[count+lindgen(16)*90].sigma_cc_err - fulltest[count].measured_quot_diff = result[count+lindgen(16)*90].sigma_quot_diff - fulltest[count].measured_quot_diff_err = result[count+lindgen(16)*90].sigma_quot_diff_err - fulltest[count].measured_quotient = result[count+lindgen(16)*90].sigma_quotient - fulltest[count].measured_quotient_err = result[count+lindgen(16)*90].sigma_quotient_err - fulltest[count].measured_diff = result[count+lindgen(16)*90].sigma_diff - fulltest[count].measured_diff_err = result[count+lindgen(16)*90].sigma_diff_err - count = count + 1 - endfor - endfor - -if (size(returntest,/tname) EQ 'STRUCT') then begin -returntest = [returntest, fulltest] -endif else begin -returntest = fulltest -endelse - -endfor - -nametest=string('veldisp_simul_aug00_'+string(nn0,format='(i2.2)')+$ - '_'+string(nn,format='(i2.2)')+'.fit') -mwrfits,returntest, nametest - - -return -end diff --git a/pro/science/kinematics/fitsimul_combtemp.pro b/pro/science/kinematics/fitsimul_combtemp.pro deleted file mode 100644 index db4f30d94..000000000 --- a/pro/science/kinematics/fitsimul_combtemp.pro +++ /dev/null @@ -1,80 +0,0 @@ -; Procedure to fit 'template.fit' or simluations of velocity dispersions - -pro fitsimul_combtemp, filename, starflux, starsig, starwave,nn0,nn, czmin, czmax, returntest - - -for i=nn0,nn do begin - - a = mrdfits(filename, i) - asig = a*0.0 - meanstar = mean(a) - - sn = 0.0 - for n=0,8 do begin - sn = sn + 10.0 - asig[*,*,n,*] = meanstar/sn - endfor - - b = reform(a, 3918, 10*9*16) - bsig = reform(asig, 3918, 10*9*16) - bwave= b*0 - nstar= (size(b))[2] - for k=0,nstar-1 do begin - bwave[*,k] = starwave[*,i] - endfor - - bredshifts=0*findgen((size(b))[2]) - - ntemp=(size(starflux))[2] - - for ii=0,ntemp-1 do begin - - mveldisp, b, bsig, bwave, starflux[*,ii], starsig[*,ii], starwave[*,ii], result, redshifts=bredshifts, czmin= czmin, czmax= czmax, klo_cut=0.016, khi_cut=0.23, maxsig=6 - - - teststruct = { ANSWER, templateno: 0L, sigma:0.0, sn:0.0, $ - measured_cc:fltarr(16), measured_cc_err:fltarr(16), $ - measured_quot_diff:fltarr(16), measured_quot_diff_err:fltarr(16), $ - measured_quotient:fltarr(16), measured_quotient_err:fltarr(16),$ - measured_diff:fltarr(16), measured_diff_err:fltarr(16)} - - fulltest = replicate(teststruct,90) - - fulltest.templateno = i - count = 0 - sn = 0.0 - for n=0,8 do begin - sn = sn+ 10.0 - res = 80.0 - for nn=0,9 do begin - res = res + 20.0 - fulltest[count].sigma = res - fulltest[count].sn = sn - fulltest[count].measured_cc = result[count+lindgen(16)*90].sigma_cc - fulltest[count].measured_cc_err = result[count+lindgen(16)*90].sigma_cc_err - fulltest[count].measured_quot_diff = result[count+lindgen(16)*90].sigma_quot_diff - fulltest[count].measured_quot_diff_err = result[count+lindgen(16)*90].sigma_quot_diff_err - fulltest[count].measured_quotient = result[count+lindgen(16)*90].sigma_quotient - fulltest[count].measured_quotient_err = result[count+lindgen(16)*90].sigma_quotient_err - fulltest[count].measured_diff = result[count+lindgen(16)*90].sigma_diff - fulltest[count].measured_diff_err = result[count+lindgen(16)*90].sigma_diff_err - count = count + 1 - endfor - endfor - -if (size(returntest,/tname) EQ 'STRUCT') then begin -returntest = [returntest, fulltest] -endif else begin -returntest = fulltest -endelse - -endfor -endfor - -nametest=string('veldisp_simul_comb_temp_'+string(nn0,format='(i2.2)')+$ - '_'+string(nn,format='(i2.2)')+'.fit') -mwrfits,returntest, nametest - - -return -end diff --git a/pro/science/kinematics/mbandpassfilter.pro b/pro/science/kinematics/mbandpassfilter.pro deleted file mode 100644 index 74a201dc5..000000000 --- a/pro/science/kinematics/mbandpassfilter.pro +++ /dev/null @@ -1,70 +0,0 @@ -;+ -; NAME: -; mbandpassfilter -; -; PURPOSE: -; -; CALLING SEQUENCE: -; newdata = mbandpassfilter( datafft, [ klo_cut=, khi_cut= ] ) -; -; INPUTS: -; datafft - Vector of Fourier-transformed data -; -; OPTIONAL KEYWORDS: -; klo_cut - Low-frequency cutoff -; khi_cut - High-frequency cutoff -; -; OUTPUTS: -; newdata - Filtered version of DATAFFT -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Units??? -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 30-Mar-2000 Written by D. Schlegel, APO -;- -;------------------------------------------------------------------------------ -function mbandpassfilter, datafft, klo_cut=klo_cut, khi_cut=khi_cut - - if (size(datafft, /n_dimen) NE 1) then $ - message, 'DATAFFT is not 1-dimensional' - - if (NOT keyword_set(klo_cut) AND NOT keyword_set(khi_cut)) then $ - return, datafft - - if (size(datafft, /tname) EQ 'DOUBLE') then PI = !dpi $ - else PI = !pi - - ndata = N_elements(datafft) - knums = fft_wavenums(ndata) - hipass = fltarr(ndata) + 1.0 - lopass = fltarr(ndata) + 1.0 - - if (keyword_set(klo_cut)) then begin - ii = where(abs(knums) LT klo_cut) - if (ii[0] NE -1) then begin - hipass[ii] = 0.5 * (1.0 - cos(PI*abs(knums[ii])/klo_cut)) - endif - endif - - if (keyword_set(khi_cut)) then begin - ii = where(abs(knums) GT khi_cut) - if (ii[0] NE -1) then begin - sep = max(knums) - khi_cut - lopass[ii] = $ -; 0.5 * (1.0 - cos(PI*(max(knums) - abs(knums[ii]))^2/sep^2)) - 0.5 * (1.0 - cos(PI*(max(knums) - abs(knums[ii]))/sep)) - endif - endif - - return, datafft * hipass * lopass -end -;------------------------------------------------------------------------------ diff --git a/pro/science/kinematics/mfindchi2min.pro b/pro/science/kinematics/mfindchi2min.pro deleted file mode 100644 index 90f430eac..000000000 --- a/pro/science/kinematics/mfindchi2min.pro +++ /dev/null @@ -1,108 +0,0 @@ -pro mfindchi2min, x, chi2, minchi2, minsigma, errsigma, npts=npts, $ - deltachisq = deltachisq, nfine = nfine, chi2scale = chi2scale,$ - doplot=doplot - - if (NOT keyword_set(deltachisq)) then deltachisq = 1.0 - if (NOT keyword_set(nfine)) then nfine = 100 - - ; spline chi2 curve and return desired values - -; if (keyword_set(npts)) then chi2=chi2/npts - - nx = n_elements(x) - if (nx EQ 0) then return - - minx = min(x, max=maxx) - y2 = spl_init(x, chi2) - - x2 = findgen(nx*nfine+1)/(nx*nfine) * (maxx - minx) + minx - chifit = spl_interp(x, chi2, y2, x2) - - minchi2 = min(chifit,fitplace) - - minsigma = x2[fitplace] - - ; - ; attempt to scale chi^2 to get errors correct - ; - - usethisdelta = 2.3 - -; if (keyword_set()) then usethisdelta = 2.3 * minchi2 * deltachisq - - -; if (keyword_set(npts)) then usethisdelta = sqrt(minchi2) - - if (keyword_set(npts)) then begin - -; minchi2point=min(chi2,pos) -; deltasigma= 0.2*(x[pos]-x[pos-1]) - -; if (x[pos] GT minsigma+deltasigma) then begin -; chi2right=chi2[pos] -; chi2left=chi2[pos-1] -; endif - -; if (x[pos] LT minsigma-deltasigma) then begin -; chi2right=chi2[pos+1] -; chi2left=chi2[pos] -; endif - -; if (x[pos] GE minsigma-deltasigma AND x[pos] LE minsigma+deltasigma) then begin -; chi2right=chi2[pos+1] -; chi2left=chi2[pos-1] -; endif - -; if (chi2right LT chi2left) then diffchi2= chi2left-minchi2 $ -; else diffchi2= chi2right-minchi2 - - - if (keyword_set(chi2scale)) then begin - if (chi2scale * deltachisq GT 1) then $ - usethisdelta = 2.3 * chi2scale * deltachisq - endif else begin - if (minchi2 * deltachisq GT 1) then $ - usethisdelta = 2.3 * minchi2 * deltachisq - endelse - - endif - -; if (keyword_set(npts)) then begin -; scale = minchi2/npts -; if (scale GT 1.0) then usethisdelta = deltachisq * scale -; print,'scale',scale,usethisdelta -; endif - - range = where(chifit - minchi2 LT usethisdelta) - - if (range[0] EQ -1) then return - - uppersigma = x2[max(range)] - minsigma - lowersigma = minsigma - x2[min(range)] - - errsigma = 0.5*(uppersigma + lowersigma) - - - if (keyword_set(doplot)) then begin - if (doplot EQ 1) then begin - wset,1 - plot, x, chi2-minchi2, ps=1, yr=[-10,100], $ - title='Chi2: diff (crosses), realspace (diamonds)' - endif - if (doplot EQ 2) then djs_oplot, x, chi2-minchi2, ps=4 - djs_oplot, x2, chifit-minchi2 - djs_oplot, x2[range], (chifit-minchi2)[range],color='red' - - - endif - -; if (keyword_set(npts)) then begin -; minchi2= minchi2*npts -; stop -; endif - return -end - - - - diff --git a/pro/science/kinematics/mfitredshift.pro b/pro/science/kinematics/mfitredshift.pro deleted file mode 100644 index b2f1e25f0..000000000 --- a/pro/science/kinematics/mfitredshift.pro +++ /dev/null @@ -1,295 +0,0 @@ -;+ -; NAME: -; mfitredshift -; -; PURPOSE: -; Find the most significant correlation peak (soon to be peaks) -; return optional keywords in units of pixels -; -; CALLING SEQUENCE: -; mfitredshift, fluxfft, starfft, $ -; [ nsearch=, zfit=z, z_err=, veldispfit=, veldisp_err=, /doplot ] -; -; INPUTS: -; fluxfft - complex fft of prepared galaxy spectrum -; fluxerr - error vector for flux (only test if it is zero) -; starfft - complex fft of stellar template -; starerr - error vector for flux (only test if it is zero) -; -; OPTIONAL KEYWORDS: -; nsearch - number of peaks to search, almost always only 1 is searched -; zmin - minimum z (in pixels) to allow (should be < 0) -; doplot - plot the correlation peak and fits in an xwindow -; -; OPTIONAL OUTPUTS: -; zfit - best fit z, this should evolve into an array of z's -; with accompanying z_errs and z_confidences -; z_err - centroid errors from gaussfit of correlation peak -; veldisp - sigma of cross-correlation peak -; veldisp_err- error on sigma -; -; COMMENTS: -; -; Use doplot keyword to see how well peak is being fit -; Still need to work on exact selection criteria for MOST significant peak -; or even better: measure all peaks with probability > 1% -; -; EXAMPLES: -; -; BUGS: -; -; Hardwired exclusion of blueshifts greater than 100 pixels -; this helps the noisiest cases -; -; PROCEDURES CALLED: -; findmaxarea -; curvefit -; gauss_funct -; -; REVISION HISTORY: -; 25-Mar-2000 Written by S. Burles, FNAL -; 26-Jun-2000 D. Finkbeiner - modified to properly weight corr -; vector for variable overlap -; 26-Jun-2000 (v 1.5) altered algorithm to set peak search boundary -; at the half height of the peak, rather than zero. This fixes -; cases where there is a close double peak. -; 11-Jul-2000 Modified the lowerbound and upperbound by M. Bernardi -;------------------------------------------------------------------------------ -; This routine locates the 20 highest peaks, and measures -; the peak, center, and area of each. xcen and peak -; contain the best velues. - -pro findmaxarea, look, xcen, peak, maxarea, cen=cen, area=area, pks=pks - - ruin = look - nx = n_elements(look) - x = findgen(nx) - area = fltarr(20) - dev = fltarr(20) - cen = fltarr(20) - pks = fltarr(20) - - for i=0, 19 do begin - - pks[i] = max(ruin,velcen) - - if pks[i] GT 0.0 then begin - - ; find bounds of positive deviation with cap at +/- 3 pixels - lowerbound = max([where(ruin LT 0 AND x LT velcen),velcen-4]) + 1 - upperbound = min([where(ruin LT 0 AND x GT velcen),velcen+4]) - 1 - area[i] = total(ruin[lowerbound:upperbound]) - - dev[i] = stddev([look[velcen-100:lowerbound-1],$ - look[upperbound+1:velcen+100]]) - cen[i] = velcen - ruin[lowerbound:upperbound] = 0.0 - endif else i=20 - endfor - - meandev = mean(dev) - dev = dev/meandev - - maxarea = max(area,areaplace) - maxpks = max(pks,pksplace) - - place = pksplace - if (areaplace NE pksplace) then begin - print, 'Max area position does not equal Max peak position', $ - cen[areaplace], cen[pksplace] - print, 'Using Area + 1.5*peak to decide' - maxcomb = max(area + 1.5*pks,place) - endif - - xcen = cen[place] - peak = pks[place] - return -end - -;------------------------------------------------------------------------------ -pro mfitredshift, fluxfft, fluxerr, starfft, starerr, $ - nsearch=nsearch, zmin=zmin, zfit=z, z_err=z_err, $ - veldispfit=veldisp, veldisp_err=veldisp_err, zconf=zconf, doplot=doplot - -; keyword defaults - if (NOT keyword_set(nsearch)) then nsearch = 5 - if (NOT keyword_set(zmin)) then zmin = -60 - -; returned value defaults - z = 0. - z_err = 999. - veldisp = 0. - veldisp_err = 999. - -; check dimensions - ASSUME everything is already padded to 2^N - IF stdev([n_elements(fluxfft), n_elements(fluxerr), $ - n_elements(starfft), n_elements(starerr)]) NE 0 THEN BEGIN - help, fluxfft, fluxerr, starfft, starerr - message, 'dimensions do not match!' - ENDIF - - IF (total(abs(fluxfft)) EQ 0) OR (total(abs(starfft)) EQ 0) THEN BEGIN - print, 'MFITREDSHIFT: FAILED - array full of zeros' - return - ENDIF - - -; The following compiles GAUSS_FUNCT, which is in the routine GAUSSFIT - junk = gaussfit(findgen(7),findgen(7)) - -; compute correlation of object flux to stellar template - corr = float(fft(fluxfft * conj(starfft),/inverse)) - - nx = n_elements(corr) - pad = nx / 2 - -; shift corr vector so there is no discontinuity at zero lag. - corr = shift(corr, pad) - - -; Need to fill an array of length fluxfilt which records the number -; of good pixels cross-correlated between star and galaxy as a function -; of shift. We construct this from the error vectors. - - denom = shift(double( $ - fft(fft(fluxerr NE 0)*conj(fft(starerr NE 0)), /inverse)), pad) *nx - - reweight = pad / (denom > 10.0) ; never use less than 10 pix - - -; This loop finds the redshift by searching the nsearch highest peaks - - good = 0 - x = lindgen(nx) - - for i=0, nsearch-1 do begin - - newcorr = corr * sqrt(reweight) ; A hack!!!?? - newcorr[0:pad+zmin-1] = 0.0 - - - findmaxarea, newcorr, velcen, peak, cen=cen, area=area, pks=pks - - ; Let xtemp be centered about velcen for all newcorr values above 0.0 - -; lowerbound = max(where(newcorr LT peak/2 AND x LT velcen)) -; upperbound = min(where(newcorr LT peak/2 AND x GT velcen)) -;;;; - lowerbound = max(where(newcorr LT 0.3*newcorr[velcen] AND x LT velcen)) - upperbound = min(where(newcorr LT 0.3*newcorr[velcen] AND x GT velcen)) - lower = abs(lowerbound - velcen) - upper = abs(upperbound - velcen) - if (lower GE upper) then begin - lowerbound = -upper + velcen - upperbound = upper + velcen - endif - if (lower LT upper) then begin - upperbound = lower + velcen - lowerbound = -lower + velcen - endif -;;;; - xtemp = x[lowerbound:upperbound] - velcen - parabola = poly_fit(xtemp, newcorr[xtemp+velcen], 2, yfit) - - - - if (parabola[2] GE 0.0) then begin - print, 'peak is not well fit at ', velcen - newcorr[xtemp+velcen] = 0.0 - endif else if (total(newcorr[xtemp+velcen]) LT 0.0) then begin - print, 'total newcorr is less than zero at ', velcen - newcorr[xtemp+velcen] = 0.0 - endif else if (total(yfit) LT 0.0) then begin - print, 'total fit is less than zero at ', velcen - newcorr[xtemp+velcen] = 0.0 - endif else begin - i = nsearch - good = 1 -; let's attempt to fit a gaussian with no background terms - endelse - - endfor - - if (NOT good) then begin - print, 'No good peaks found' - return - endif - - xcen = (-0.5 * parabola[1]/parabola[2]) - height = (poly([xcen], parabola))[0] - - ytemp = yfit > 0.0 - guesssig = sqrt(total((xtemp-xcen)^2 * ytemp) / total(ytemp)) - - left = long(velcen + xcen - 1) - lindgen(100) - right = long(velcen + xcen + 1) + lindgen(100) - asig = stdev(newcorr[left]-newcorr[right]) / sqrt(2.) - - ; Here's my attempt to fit a gaussian to the correlation peak - ; The main problem here is to decide where the baseline of the - ; gaussian falls. FWHM and sigma depend on where the gaussian fit - ; goes to zero. Very troubling. - -; new xtemp - lowerbound = max(where(newcorr LT height/2 AND x LT velcen))-2 - upperbound = min(where(newcorr LT height/2 AND x GT velcen))+2 - xtemp2 = x[lowerbound:upperbound] - velcen - xtemp2 = xtemp - - - if (asig GT 0) then weights = xtemp2*0.0 + 1.0/asig^2 $ - else weights = xtemp2*0.0 + 1.0 - - base = -height/3. ; empirical guess of gaussian baseline - -; a = double([height, xcen, guesssig, base]) - a = double([newcorr[velcen], xcen, guesssig]) - -; gaussf = curvefit(xtemp,newcorr[xtemp+velcen] + height/3.0, weights, $ -; a+0D, gausserrors, function_name="GAUSS_FUNCT") -; gaussf = gaussf - height/3.0 - - gaussf = curvefit(xtemp2,newcorr[xtemp2+velcen], weights, $ - a, gausserrors, function_name="GAUSS_FUNCT", iter=iter) - -; window,2,retain=2 -; djs_plot, x-velcen,newcorr, xr=[-5,5],ps=0 -; djs_oplot, xtemp, poly(xtemp, parabola), color='red' -; djs_oplot, xtemp2, gaussf, color='green' - -;stop - - IF abs(a[1]) GT 3 THEN BEGIN - message, 'curvefit failed to converge!!!', /info - print, 'Reverting to parabola solution' - - ENDIF - - - if (keyword_set(doplot)) then begin - wset,0 - djs_plot, x-velcen, newcorr, ps =10, xr=[-20,20], $ - title='Best correlation peak w/fits (Green:gauss, Red: Parabola)' - djs_oplot, xtemp, poly(xtemp, parabola), color='red' - djs_oplot, xtemp2, gaussf, color='green' - endif - - z = velcen + a[1] - pad - z_err = gausserrors[1] - veldisp = a[2] - veldisp_err = gausserrors[2] - -; zconf = a[0] ; height of gaussian - - twopiei = 2.0 * !dpi * complex(0.0,1.0) - knums = fft_wavenums(n_elements(starfft)) - phase = exp( - twopiei * knums * z) - model = double(fft(starfft*phase,/inv)) - gal = double(fft(fluxfft, /inv)) - - starmask = where(starerr NE 0) - chisq = total((model-gal)^2*fluxerr*starmask)/total(starmask) - zconf = chisq - - return -end diff --git a/pro/science/kinematics/mfourier_difference.pro b/pro/science/kinematics/mfourier_difference.pro deleted file mode 100644 index b77ece1d9..000000000 --- a/pro/science/kinematics/mfourier_difference.pro +++ /dev/null @@ -1,152 +0,0 @@ -;+ -; NAME: -; mfourier_difference -; -; PURPOSE: -; Perform a chi2 fit to the fourier difference between a single -; galaxy and a broadened stellar template to calculate velocity dispersion -; and uncertainty on velocity dispersion -; -; CALLING SEQUENCE: -; answers = mfourier_difference(galfft, starfft, galvar0, starvar0, $ -; testsigma=, lowlimit=, highlimit=, $ -; deltachisq=deltachisq, /doplot) -; -; INPUTS: -; galfft - Fourier transform of galaxy -; starfft - Fourier transform of stellar template -; galvar0 - error in galaxy fft (0th element of galaxy error FFT) -; starvar0 - error in stellar fft (0th element of stellar error FFT) -; -; OPTIONAL KEYWORDS: -; testsigma - Array of sigma values to calculate chi2 -; lowlimit - lower boundary of chi2 sum (in knums units) -; highlimit - upper boundary of chi2 sum (in knums units) -; deltachisq - chi2 difference from minimum to set error on velocity dispersion -; doplot - Output plots to xwindow -; -; OUTPUTS: -; answers - Four element array with: -; [minchi2, minsigma, errsigma, bestalpha] -; bestalpha is the normalization constant between galaxy and star -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; Currently, this is very slow, as we have to check 11 normalizations -; for each element in testsigma array -; -; Need to ensure that confidence level returned as errsigma is proper -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 25-Mar-2000 Written by S. Burles, FNAL -;- -;------------------------------------------------------------------------------ -function alpha_chisq, alpha, gal, star, galvar, starvar, br, minchi2 - - ntry = n_elements(alpha) - if (ntry EQ 0) then return, -1 - - chisq = fltarr(ntry) - for i=0,ntry -1 do begin - diff = float(gal) - float(star)*br*alpha[i] - rediff = float(diff*conj(diff)) -; rediff = abs(diff)^2 - chisq[i] = total(rediff/(galvar + starvar*alpha[i]^2*br^2)) - endfor - - mfindchi2min, alpha, chisq, minchi2, bestalpha - - return, bestalpha -end - -;------------------------------------------------------------------------------ -function mfourier_difference, galfft, starfft, galvar0, starvar0, $ - testsigma=testsigma, lowlimit = lowlimit, highlimit=highlimit, $ - deltachisq=deltachisq, doplot=doplot - - if (NOT keyword_set(lowlimit)) then lowlimit = 1.0/80.0 - if (NOT keyword_set(highlimit)) then highlimit = 1.0/2.2 - - if (size(galfft, /tname) EQ 'DOUBLE') then PI = !dpi $ - else PI = !pi - - knums = fft_wavenums(N_elements(galfft)) - - inside = where(abs(knums) GT lowlimit AND $ - abs(knums) LT highlimit, ninside) - - if (inside[0] EQ -1) then begin - print, 'No pixels in correct frequency range' - return, -1 - endif - - if (n_elements(testsigma) EQ 0) then testsigma = findgen(30)*0.2 - - ; This is a slow minimizer, stepping through 30 sigmas to - ; find best one. This method is the fft difference method - - nloop = n_elements(testsigma) - chi2diff = fltarr(nloop) - sigma = fltarr(nloop) - alpha = fltarr(nloop) - - galnorm = djsig(float(galfft[inside]), sigrej=5) - starnorm = djsig(float(starfft[inside]), sigrej=5) - - galfftnorm= galfft[inside]/galnorm - starfftnorm= starfft[inside]/starnorm - galvar0norm= galvar0/galnorm^2 - starvar0norm = starvar0/starnorm^2 - - alphatry = findgen(11)*0.2 - - for i=0,nloop-1 do begin - broad = exp(-(knums*testsigma[i] * 2.0 * PI)^2/2.0) - - alpha[i] = alpha_chisq(alphatry, galfftnorm, starfftnorm, $ - galvar0norm, starvar0norm, broad[inside], bestchisq) - chi2diff[i] = bestchisq - -; answer = amoeba(1.0e-2, function_name='alpha_chisq', $ -; p0 = [1.1], scale=[0.1], nmax = 20, function_value=areturn) - - endfor - - deltachisq = 1./n_elements(inside) - - mfindchi2min, testsigma, chi2diff, minchi2, minsigma, errsigma, $ - deltachisq = deltachisq, doplot=doplot, npts=ninside - - -; oplot, testsigma, alpha, ps=2 - minc = min(chi2diff, alphaplace) - bestalpha =alpha[alphaplace] - -; bestbroad = exp(-(knums[inside]*minsigma * 2.0 * PI)^2/2.0) -; res= galfft[inside] - starfft[inside]*bestbroad*bestalpha -; rediff = float(res*conj(res)) -; errres=galvar0 + starvar0*bestalpha^2*bestbroad^2 -; chi= total(rediff/errres) -; plot,galfft[inside],ps=0 -; djs_oplot,starfft[inside]*bestbroad*bestalpha,ps=0,color='red' -;stop -; meanrms=median(sqrt(rediff)) -; rms=stddev(sqrt(rediff)) - -; errsigma = sqrt(minchi2 * deltachisq) * rms/meanrms -;stop -; uppersigma = minsigma + errsigma -; lowersigma = minsigma - errsigma -; errplot, lowersigma,-10, +10 -; errplot, uppersigma, -10, +10 - - return, [minchi2, minsigma, errsigma, bestalpha] -end -;------------------------------------------------------------------------------ diff --git a/pro/science/kinematics/mfourier_quot_diff.pro b/pro/science/kinematics/mfourier_quot_diff.pro deleted file mode 100644 index e49bc2fa0..000000000 --- a/pro/science/kinematics/mfourier_quot_diff.pro +++ /dev/null @@ -1,166 +0,0 @@ -;+ -; NAME: -; mfourier_quot_diff -; -; PURPOSE: -; Perform a chi2 fit to the fourier quotient of a single -; galaxy and a broadened stellar template to calculate velocity dispersion -; and uncertainty on velocity dispersion -; -; CALLING SEQUENCE: -; answers = mfourier_quotient(galfft, starfft, galvar0, starvar0, $ -; testsigma=, lowlimit=, highlimit=, $ -; deltachisq=, /doplot) -; -; INPUTS: -; galfft - Fourier transform of galaxy -; starfft - Fourier transform of stellar template -; galvar0 - error in galaxy fft (0th element of galaxy error FFT) -; starvar0 - error in stellar fft (0th element of stellar error FFT) -; -; OPTIONAL KEYWORDS: -; testsigma - Array of sigma values to calculate chi2 -; lowlimit - lower boundary of chi2 sum (in knums units) -; highlimit - upper boundary of chi2 sum (in knums units) -; deltachisq - chi2 difference from minimum to set error on velocity dispersion -; doplot - Output plots to xwindow -; -; OUTPUTS: -; answers - Four element array with: -; [minchi2, minsigma, errsigma, bestalpha] -; bestalpha is the normalization constant between galaxy and star -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; Same inputs and outputs as mfourier_difference -; -; EXAMPLES: -; -; BUGS: -; -; Need to ensure that confidence level returned as errsigma is proper -; -; PROCEDURES CALLED: -; -; -; REVISION HISTORY: -; 25-Mar-2000 Written by S. Burles, FNAL -; 27-Jun-2000 Completely rewritten - Finkbeiner & SWAT team -;- -;------------------------------------------------------------------------------ -function mfourier_quot_diff, galfft, starfft, galvar0, starvar0, $ - testsigma2=testsigma2, lowlimit = lowlimit, highlimit=highlimit, $ - deltachisq=deltachisq, doplot=doplot, broadarr=broadarr - -; testsigma2 is trial velocity dispersion^2 - - if (NOT keyword_set(lowlimit)) then lowlimit = 1.0/80.0 - if (NOT keyword_set(highlimit)) then highlimit = 1.0/5. - - - knums = fft_wavenums(n_elements(galfft)) - inside = where(abs(knums) GT lowlimit AND $ - abs(knums) LT highlimit, ninside) - - if (inside[0] EQ -1) then begin - print, 'No pixels in correct frequency range' - return, -1 - endif - - if (n_elements(testsigma2) EQ 0) then testsigma2 = findgen(30)*0.2 - - nloop = n_elements(testsigma2) - chi2 = fltarr(nloop) - sigma = fltarr(nloop) - alpha = fltarr(nloop) - - alphatry = findgen(21)*0.1 - - galnorm = djsig(float(galfft[inside]), sigrej=5) - starnorm = djsig(float(starfft[inside]), sigrej=5) - - q = galfft[inside]/starfft[inside]*starnorm/galnorm - -; Reject outliers on q (they can be quite large and drive the fit) - qs = exp(smooth(alog(q), 25, /edge)) - dif = float(alog((q/qs))) - djs_iterstat, dif, sigma=qsig, sigrej=5 - wbad = where(abs(dif) GT qsig*5, ct) - IF ct GT 0 THEN q[wbad] = qs[wbad] - -; Now reevaluate smoothed q - qs = exp(smooth(alog(q), 9, /edge)) -qs = median(q, 75) - - var = (galvar0/ float(galfft[inside]*conj(galfft[inside])) + $ - starvar0 / float(starfft[inside]*conj(starfft[inside])) * $ - float(q)^2) - -; Define broadarr (array of broadening functions) if not already defined - ones = 1.+fltarr(n_elements(q)) - IF NOT keyword_set(broadarr) THEN BEGIN - broadarr = dblarr(n_elements(inside), nloop) - for i=0,nloop-1 do begin - IF testsigma2[i] EQ 0 THEN broad = ones ELSE BEGIN - fsig = 1.d/(2.*!dpi)/testsigma2[i] - broad = gauss_periodic(knums[inside], [1., 0., fsig], shft=1.) - IF testsigma2[i] LT 0 THEN broad = 1./broad - ENDELSE - broadarr[*, i] = broad - ENDFOR - - - ENDIF - - for i=0,nloop-1 do begin - broad = broadarr[*, i] - broad = broad/max(broad) - - alpha[i] = total(float(qs) * broad)/total(broad^2) -; nul residual (for just noise) - nul = sqrt(alpha[i]^2*broad^2+1) - res = broad*alpha[i]*starfft[inside]/starnorm-galfft[inside]/galnorm - -;IF i EQ 50 THEN stop - chi2[i] = total(abs(res)^2)/mean(nul) - -; alpha[i] = total(float(q) * broad / var)/total(broad^2/var) - - endfor - -; Now do loop of negatives - -; now plot - - - varscale = (galvar0/ float(galfft[inside]*conj(galfft[inside])) + $ - starvar0 / float(starfft[inside]*conj(starfft[inside])) * $ - float(q)^2) - - resscale= float(q-qs) - chi2scale = total((resscale)^2/varscale) - - - deltachisq = 1./n_elements(inside) - mfindchi2min, testsigma2, chi2, minchi2, minsigma, errsigma, $ - deltachisq = deltachisq, doplot=doplot, npts= ninside,$ - chi2scale = chi2scale - - bestalpha = (interpol(alpha, testsigma2, minsigma))[0] - fsig= 1.d/(2.*!dpi)/minsigma - broad = gauss_periodic(knums[inside], [1., 0., fsig], shft=1.) - res = broad*starfft[inside]-galfft[inside] - -; errsigma = errsigma*sqrt(minchi2) - -; IF keyword_set(doplot) THEN BEGIN -; plot, knums[inside], qs, ps=3, yr=[-1, 2] -; oplot, knums[inside], broad*bestalpha, ps=3 -; plot, testsigma2, chi2, ps=-7 -; oplot,[0,100],[1,1]*minchi2+deltachisq -; ENDIF - - return, [minchi2, minsigma, errsigma, bestalpha] -end diff --git a/pro/science/kinematics/mfourier_quotient.pro b/pro/science/kinematics/mfourier_quotient.pro deleted file mode 100644 index a9caf0909..000000000 --- a/pro/science/kinematics/mfourier_quotient.pro +++ /dev/null @@ -1,219 +0,0 @@ -;+ -; NAME: -; mfourier_quotient -; -; PURPOSE: -; Perform a chi2 fit to the fourier quotient of a single -; galaxy and a broadened stellar template to calculate velocity dispersion -; and uncertainty on velocity dispersion -; -; CALLING SEQUENCE: -; answers = mfourier_quotient(galfft, starfft, galvar0, starvar0, $ -; testsigma=, lowlimit=, highlimit=, $ -; deltachisq=, /doplot) -; -; INPUTS: -; galfft - Fourier transform of galaxy -; starfft - Fourier transform of stellar template -; galvar0 - error in galaxy fft (0th element of galaxy error FFT) -; starvar0 - error in stellar fft (0th element of stellar error FFT) -; -; OPTIONAL KEYWORDS: -; testsigma - Array of sigma values to calculate chi2 -; lowlimit - lower boundary of chi2 sum (in knums units) -; highlimit - upper boundary of chi2 sum (in knums units) -; deltachisq - chi2 difference from minimum to set error on velocity dispersion -; doplot - Output plots to xwindow -; -; OUTPUTS: -; answers - Four element array with: -; [minchi2, minsigma, errsigma, bestalpha] -; bestalpha is the normalization constant between galaxy and star -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; Same inputs and outputs as mfourier_difference -; -; EXAMPLES: -; -; BUGS: -; -; Need to ensure that confidence level returned as errsigma is proper -; -; PROCEDURES CALLED: -; -; -; REVISION HISTORY: -; 25-Mar-2000 Written by S. Burles, FNAL -; 27-Jun-2000 Completely rewritten - Finkbeiner & SWAT team -;- -;------------------------------------------------------------------------------ -function mfourier_quotient, galfft, starfft, galvar0, starvar0, $ - testsigma2=testsigma2, lowlimit = lowlimit, highlimit=highlimit, $ - deltachisq=deltachisq, doplot=doplot, broadarr=broadarr - -; testsigma2 is trial velocity dispersion^2 - - if (NOT keyword_set(lowlimit)) then lowlimit = 1.0/80.0 - if (NOT keyword_set(highlimit)) then highlimit = 1.0/5. - - - knums = fft_wavenums(n_elements(galfft)) - inside = where(abs(knums) GT lowlimit AND $ - abs(knums) LT highlimit, ninside) - - if (inside[0] EQ -1) then begin - print, 'No pixels in correct frequency range' - return, -1 - endif - - if (n_elements(testsigma2) EQ 0) then testsigma2 = findgen(30)*0.2 - - nloop = n_elements(testsigma2) - chi2 = fltarr(nloop) - sigma = fltarr(nloop) - alpha = fltarr(nloop) - - alphatry = findgen(21)*0.1 - - galnorm = djsig(float(galfft[inside]), sigrej=5) - starnorm = djsig(float(starfft[inside]), sigrej=5) - - q = galfft[inside]/starfft[inside]*starnorm/galnorm - -; Reject outliers on q (they can be quite large and drive the fit) - qs = exp(smooth(alog(q), 25, /edge)) - dif = float(alog((q/qs))) - djs_iterstat, dif, sigma=qsig, sigrej=5 - wbad = where(abs(dif) GT qsig*5, ct) - IF ct GT 0 THEN q[wbad] = qs[wbad] - -; var = galvar0/ float(galfft*conj(galfft)) + $ -; starvar0 / float(starfft*conj(starfft)) - -; var1= var[inside] * float(qs)^2 -; var= (median(var,150))[inside] * float(qs)^2 - -; var = (galvar0/ float(galfft[inside]*conj(galfft[inside])) + $ -; starvar0 / float(starfft[inside]*conj(starfft[inside])) * $ -; float(q)^2) -; float(qs)^2) - -; var= exp(smooth(alog(var), 25, /edge)) -; var= (median(var,150)) - -; dif = (float(q) - float(qs))^2/var - - - -; Now reevaluate smoothed q - - qs = median(q, 75) - - var = (galvar0/ float(galfft[inside]*conj(galfft[inside])) + $ - starvar0/ float(starfft[inside]*conj(starfft[inside])) * $ -; float(q)^2) - float(qs)^2) - - -; Define broadarr (array of broadening functions) if not already defined - ones = 1.+fltarr(n_elements(q)) - IF NOT keyword_set(broadarr) THEN BEGIN - broadarr = dblarr(n_elements(inside), nloop) - for i=0,nloop-1 do begin - IF testsigma2[i] EQ 0 THEN broad = ones ELSE BEGIN -; fsig = 1.d/(2.*!dpi)/sqrt(abs(testsigma2[i])) - fsig = 1.d/(2.*!dpi)/testsigma2[i] - broad = gauss_periodic(knums[inside], [1., 0., fsig], shft=1.) - IF testsigma2[i] LT 0 THEN broad = 1./broad - ENDELSE - broadarr[*, i] = broad - ENDFOR - - - ENDIF - - for i=0,nloop-1 do begin - broad = broadarr[*, i] -; broad = broad/max(broad) -; broad = broad*max(smooth(alog(qs), 25, /edge)) - - alpha[i] = total(float(qs) * broad / var)/total(broad^2/var) - -; alpha[i] = total(float(qs) * broad)/total(broad^2) -; nul residual (for just noise) - nul = sqrt(alpha[i]^2*broad^2+1) -; res = broad*alpha[i]*starfft[inside]/starnorm-galfft[inside]/galnorm - res= float(qs)-alpha[i]*broad - -;IF i EQ 50 THEN -; chi2[i] = total(abs(res)^2)/n_elements(inside)/mean(nul) - chi2[i] = total((res)^2/var) - - -; window, 1,retain=2 -; broad= broad*alpha[i] -; plot,knums[inside],q,ps=0,xr=[0,0.5],yr=[-1,2] -; djs_oplot,knums[inside],qs,ps=0,color='green' -; djs_oplot,knums[inside],broad,color='red' -;stop - - endfor - -; Now do loop of negatives - -; now plot - - varscale = (galvar0/ float(galfft[inside]*conj(galfft[inside])) + $ - starvar0/ float(starfft[inside]*conj(starfft[inside])) * $ - float(q)^2) - - resscale= float(q-qs) - chi2scale = total((resscale)^2/varscale) - - deltachisq = 1./n_elements(inside) - - mfindchi2min, testsigma2, chi2, minchi2, minsigma, errsigma, $ - deltachisq = deltachisq, doplot=doplot, npts= ninside, $ - chi2scale = chi2scale - -; print,'errsigma',errsigma - - bestalpha = (interpol(alpha, testsigma2, minsigma))[0] - fsig= 1.d/(2.*!dpi)/minsigma - broad = gauss_periodic(knums[inside], [1., 0., fsig], shft=1.) -; res = broad*starfft[inside]-galfft[inside] - res= float(q-bestalpha*broad) - - chi2 = total((res)^2/varscale) - -; if (chi2scale NE 0) then $ -; errsigma = sqrt(chi2scale * deltachisq) * rms $ -; else $ -; errsigma = sqrt(minchi2 * deltachisq) * rms - -; uppersigma = minsigma + errsigma -; lowersigma = minsigma - errsigma -; errplot, lowersigma,-10, +10 -; errplot, uppersigma, -10, +10 -;stop -; window, 1,retain=2 -; broad= broad*max(float(smooth(qs,40,/edge))) -; broad= broad*bestalpha -; plot,knums[inside],qs,ps=0,xr=[0,0.5],yr=[-1,2] -; djs_oplot,knums[inside],broad,color='red' - - -; errsigma = errsigma*sqrt(minchi2) - -; IF keyword_set(doplot) THEN BEGIN -; plot, knums[inside], qs, ps=3, yr=[-1, 2] -; oplot, knums[inside], broad*bestalpha, ps=3 -; plot, testsigma2, chi2, ps=-7 -; oplot,[0,100],[1,1]*minchi2+deltachisq -; ENDIF - - return, [minchi2, minsigma, errsigma, bestalpha] -end diff --git a/pro/science/kinematics/mveldisp.pro b/pro/science/kinematics/mveldisp.pro deleted file mode 100644 index acceab43f..000000000 --- a/pro/science/kinematics/mveldisp.pro +++ /dev/null @@ -1,411 +0,0 @@ -;+ -; NAME: -; mveldisp -; -; PURPOSE: -; Fit a series of galaxy spectrum with a single stellar template. -; For each object, this procedure will first find the best redshift -; between object and template. The correlation function is formed -; in mfitredshift, and the best redshift and width of the correlation -; peak is calculated (along with error estimates). Next perform chi2 -; fitting with mfourier_difference and mfourier_quotient methods -; -; CALLING SEQUENCE: -; mveldisp, objflux, objivar, starflux, starivar, result, $ -; klo_cut=, khi_cut=, maxsig=, sigmastep=, /doplot, /nodiff ] -; -; INPUTS: -; objflux - Array of object spectra [npix, nobj] -; objivar - Array of object inverse variance [npix, nobj] -; starflux - Template spectrum [nstarpix] -; starivar - Template inverse variance [nstarpix] -; -; OPTIONAL KEYWORDS: -; klo_cut - Low frequency cutoff for cross-correlation peak finding; -; default to 1/30. -; khi_cut - High frequency cutoff for cross-correlation peak finding; -; default to 1/3. -; maxsig - Maximum velocity dispersion to search for; default to 2 pix -; sigmastep - Steps between each test sigma; default to 0.2 pix -; doplot - Show plots of spectra, chi2 and correlation peaks -; nodiff - skip mfourier_difference (as it's slow right now) -; -; OUTPUTS: -; result - Structure array with outputs -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; We assume that objflux and star have the same zeropoint -; And that all spectra are binned log-linear in wavelength -; If there is a zeropoint difference between objects and star -; this needs to be included after mveldisp has run. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; mveldisp_fft -; djs_maskinterp() -; djs_mean() -; fft_apodize -; mfitredshift -; mfourier_difference() -; mfourier_quotient() -; -; REVISION HISTORY: -; 25-Mar-2000 Written by S. Burles, FNAL -; 29-Mar-2000 Modified by D. Finkbeiner & D. Schlegel, APO -; Apr-2000 Modified by M. Bernardi. Introduced optional keywords: -; continuum, starnoise; the possibility of choosing -; the wavelength range using the keywords: -; redshifts, wavemin, wavemax; khi_cut changes -; depending on the S/N of the galaxy. -; 2000-Sep-11 Worked-over by the SWAT team -; 09-Oct-2000 Cleaned up by M. Bernardi. Included realspace function -; written by D. Finkbeiner (keywords: waveeig, eig) -; -;------------------------------------------------------------------------------ -pro mveldisp, objflux, objivar, objwave, starflux, starivar, starwave, $ - result, waveeig=waveeig, eig=eig, redshifts= redshifts, wavemin=wavemin,$ - wavemax=wavemax, klo_cut=klo_cut, khi_cut=khi_cut, maxsig=maxsig, $ - sigmastep=sigmastep, doplot=doplot, nodiff=nodiff, $ - starnoise=starnoise, continuum=continuum - -; set keyword defaults - if (NOT keyword_set(klo_cut)) then klo_cut = 1.0/128. - if (NOT keyword_set(khi_cut)) then khi_cut = 1.0/3.0 - if (NOT keyword_set(maxsig)) then maxsig = 6.0 - if (NOT keyword_set(sigmastep)) then sigmastep = 0.2 - IF (keyword_set(nobe)) THEN BEGIN - nodiff = 1 & noquotient=1 - ENDIF -; prepare plot windows - IF (keyword_set(doplot)) THEN BEGIN - window, 0, retain=2 & window, 1, retain = 2 & window, 2, retain =2 - ENDIF - - if (size(objflux, /tname) EQ 'DOUBLE') then PI = !dpi $ - else PI = !pi - - testsigma = findgen(ceil(float(maxsig)/sigmastep) + 1) * sigmastep - - fac = (10.^(1e-4)-1)*299792 ; 69.0458 - -; check dimensions of everything - ndim = size(objflux, /n_dimen) - dims = size(objflux, /dimens) - if (ndim EQ 1) then begin - nobj = 1 - npixobj = dims[0] - endif else if (ndim EQ 2) then begin - npixobj = dims[0] - nobj = dims[1] - endif else begin - message, 'OBJFLUX is neither 1-D or 2-D' - endelse - - if total(abs(size(starflux, /dimens)-size(starivar, /dimens))) NE 0 $ - OR size(starflux, /n_dimen) NE size(starivar, /n_dimen) THEN $ - message, 'Dimensions of STARFLUX and STARIVAR do not match' - - if total(abs(size(objflux, /dimens)-size(objivar, /dimens))) NE 0 $ - OR size(objflux, /n_dimen) NE size(objivar, /n_dimen) THEN $ - message, 'Dimensions of OBJFLUX and OBJIVAR do not match' - - nstar = n_elements(starflux)/(size(starflux))[1] - - tempresult = {VELDISP, $ - z : fltarr(nstar), $ - z_err : fltarr(nstar), $ - zconf : fltarr(nstar), $ - sigma_xcor : intarr(nstar), $ - sigma_xcorerr : intarr(nstar), $ - sigma_diff : intarr(nstar), $ - sigma_differr : intarr(nstar), $ - sigma_rs : 0.0, $ - sigma_rserr : 0.0 } - result = replicate(tempresult, nobj) - - ;--------------------------------------------------------------------------- - ; Decide how large the padded spectra should be, based upon the - ; large of the size of STARFLUX and OBJFLUX. - ; Pad to larger (or equal) 2^N, and then doubled for isolated b.c. - - - print, ' nobj nstar redshift veldisp_xcor veldisp_diff veldisp_rs 1d_redshift' - - - khi_cut_inp=khi_cut - - FOR iobj=0, nobj-1 DO BEGIN - - - if (keyword_set(continuum)) then begin - npix=(size(objflux[*, iobj]))[1] - x=findgen(npix)*0.0001 - galerr = 1.0/objivar[*, iobj]^2 - inf=where(finite(galerr) EQ 0) - if (inf[0] NE -1) then galerr[inf]=0 - fullbkpt = slatec_splinefit(x,objflux[*, iobj] , coeff, nbkpt=5, invvar=galerr,upper=2.8, lower=0.1) - continuum = slatec_bvalu(x, fullbkpt, coeff) - objflux[*, iobj]=objflux[*, iobj]/continuum - objflux[*, iobj]=djs_maskinterp(objflux[*, iobj], objivar[*, iobj] LE 0.0, /const) - objivar[*, iobj]=objivar[*, iobj]/continuum - normobj = djs_mean(objflux[*, iobj]) > djsig(objflux[*, iobj]) - objflux[*, iobj]=objflux[*, iobj]/ normobj -1 - objivar[*, iobj]=objivar[*, iobj]/ normobj - endif -; plot, objflux[*, iobj], ps=0 -;stop - - fluxobj= objflux[*, iobj] - fluxivar = objivar[*, iobj] - waveobj=objwave[*,iobj] - - - - if (keyword_set(redshifts)) then begin - if (NOT keyword_set(wavemin)) then wavemin=3000 - if (NOT keyword_set(wavemax)) then wavemax=10000 - xp=objwave[*,iobj] - xpp=xp-alog10(1+redshifts[iobj]) - ppp=where(10^xpp GT wavemin AND 10^xpp LT wavemax) -; cut off last 300 km/s - wavemaxgal=max(10^xpp[ppp]) - 300 - wavemingal=min(10^xpp[ppp]) - if (redshifts[iobj] GT 0.16) then begin - if (wavemaxgal GT 6000) then wavemaxgal= 6000 - wavemingal= 4000 - endif - ppp1=where(10^xpp GT wavemingal AND 10^xpp LT wavemaxgal) - -; remove sky lines - kcor5570=0 - if (max(10^xpp[ppp1]) GE 5590) then begin - skyremove, objflux[ppp1, iobj], xp[ppp1], $ - 5570, 5590, ppp2, kcor - ppp1=ppp1[ppp2] - kcor5570=kcor - endif - - kcor6295=0 - if (max(10^xpp[ppp1]) GE 6310) then begin - skyremove, objflux[ppp1, iobj], xp[ppp1], $ - 6295, 6310, ppp3, kcor - ppp1=ppp1[ppp3] - kcor6295=kcor - endif - - fluxobj= objflux[ppp1, iobj] - fluxivar = objivar[ppp1, iobj] - waveobj= 10^xpp[ppp1] -; plot, waveobj, fluxobj,ps=0 -;stop - - if (keyword_set(waveeig) AND keyword_set(eig)) then begin - if (keyword_set(doplot)) then rsoplot = 2 else rsoplot = 0 - - combine1fiber, objwave[*,iobj], objflux[*, iobj],objivar[*, iobj],$ - newloglam=objwave[*,iobj]+alog10(1+redshifts[iobj]), $ - newflux=newflux, newivar=newivar - newwave=10^objwave[*,iobj] - answer_rs = realspace(waveeig, eig, newwave, newflux, newivar, $ - testsigma=testsigma, lamrange=[wavemingal,wavemaxgal], $ - doplot=rsoplot,dof=dof) - endif - - if (n_elements(answer_rs) EQ 4) then begin - result[iobj].sigma_rs = answer_rs[1]*fac - result[iobj].sigma_rserr = answer_rs[2]*fac - endif - - endif -;--------------------------------------------------------------------------- -; Compute FFT for stellar template - -; nstar = n_elements(starflux)/(size(starflux))[1] - - FOR istar=0, nstar-1 DO BEGIN - -;t1=systime(1) -;print,'BEGIN',systime(1)-t1 - - meanstar=mean(starflux[*, istar]) - if (keyword_set(starnoise)) then begin $ & - starflux[*, istar] = starflux[*, istar] + randomu(105,3918,/normal)*meanstar/starnoise - starivar[*, istar]=sqrt(starivar[*, istar]^2+(meanstar/starnoise)^2) - endif - if (NOT keyword_set(starnoise)) then begin - starflux[*, istar] = starflux[*, istar] - starivar[*, istar]= starivar[*, istar] - endif - - - if (keyword_set(continuum)) then begin - npix=(size(starflux[*, istar]))[1] - x=findgen(npix)*0.0001 - galerr = 1.0/starivar[*, istar]^2 - inf=where(finite(galerr) EQ 0) - if (inf[0] NE -1) then galerr[inf]=0 - fullbkpt = slatec_splinefit(x,starflux[*, istar] , coeff, nbkpt=5, invvar=galerr,upper=2.8, lower=0.1) - continuum = slatec_bvalu(x, fullbkpt, coeff) - starflux[*, istar]=starflux[*, istar]/continuum - starflux[*, istar]=djs_maskinterp(starflux[*, istar], starivar[*, istar] LE 0.0, /const) - starivar[*, istar]=starivar[*, istar]/continuum - normstar = djs_mean(starflux[*, istar]) > djsig(starflux[*, istar]) - starflux[*, istar]=starflux[*, istar]/ normstar -1 - starivar[*, istar]=starivar[*, istar]/ normstar - endif - -; plot, starflux[*, istar], ps=0 - - fluxstar= starflux[*, istar] - fluxstarivar = starivar[*, istar] - wavestar=starwave[*,istar] - - if (keyword_set(redshifts)) then begin - starsize=(size(starflux))[1] - xp=starwave[*,istar] - pp=where(10^xp GT wavemingal AND 10^xp LT wavemaxgal) - - if (kcor5570 EQ 1) then begin - xxp=xp[pp]+alog10(1+redshifts[iobj]) - cpp=where(10^xxp LT 5570 OR 10^xxp GT 5590) - pp=pp[cpp] - endif - - if (kcor6295 EQ 1) then begin - xxp=xp[pp]+alog10(1+redshifts[iobj]) - cpp=where(10^xxp LT 6295 OR 10^xxp GT 6310) - pp=pp[cpp] - endif - - fluxstar= starflux[pp, istar] - fluxstarivar = starivar[pp, istar] - wavestar=10^xp[pp] -; plot,wavestar, fluxstar,ps=0 -;stop - endif -; fluxobj1=fluxobj/mean(fluxobj) -; if (keyword_set(continuum)) then plot,10^xpp[ppp],fluxobj,ps=0 else $ -; plot,10^xpp[ppp],fluxobj1,ps=0 -; fluxstar1=fluxstar/mean(fluxstar) -; if (keyword_set(continuum)) then djs_oplot,10^xp[pp],fluxstar,ps=0,color='red' $ -; else djs_oplot,10^xp[pp],fluxstar1,ps=0,color='red' -;stop - - npixobj=(size(fluxobj))[1] - npixstar = (size(fluxstar))[1] - npixbig = 2L^(fix(alog(npixstar > npixobj)/alog(2) + 1.9999)) - - khi_cut = khi_cut_inp - - mveldisp_fft, fluxobj, fluxivar, npixbig, $ - fluxfft, fluxfilt, fluxvar0, fluxvariancefft, fluxivar_pad, $ - khicut, klo_cut=klo_cut, khi_cut=khi_cut - - khi_cut=khicut - - - mveldisp_fft, fluxstar, fluxstarivar, npixbig, starfft, $ - starfilt, starvar0, starvariancefft, starivar_pad, $ - khigh, klo_cut=klo_cut, khi_cut=khi_cut, wave=starwave - - mfitredshift, starfilt, starivar_pad, starfilt, starivar_pad, $ - nsearch=5, zfit=starcen, z_err=starcen_err, $ - veldispfit=starsigma, veldisp_err=starsigma_err, doplot=doplot - - mveldisp_fft, fluxobj, fluxivar, npixbig, $ - fluxfft, fluxfilt, fluxvar0, fluxvariancefft, fluxivar_pad, $ - khigh, klo_cut=klo_cut, khi_cut=khi_cut - - - - mfitredshift, fluxfilt, fluxivar_pad, starfilt, starivar_pad, $ - nsearch=5, zfit=fitcen, z_err=fitcen_err, $ - veldispfit=galsigma, veldisp_err=galsigma_err, zconf=zconf, $ - doplot=doplot - - if (keyword_set(redshifts)) then $ - result[iobj].z[istar] = redshifts[iobj] + 10.^(fitcen/10000)-1. $ - else $ - result[iobj].z[istar] = 10.^(fitcen/10000)-1. ; dimensionless z - result[iobj].z_err[istar] = alog(10)*1e-4*fitcen_err* $ - (1+result[iobj].z[istar]) - - result[iobj].zconf[istar] = zconf - - if (keyword_set(doplot)) then begin - window,2,retain=2,XSIZE=800, YSIZE=400 - title='Rest frame spectra of template (white) and galaxy (red)' - if (NOT keyword_set(redshifts)) then begin - fluxobj= shift(fluxobj, -fitcen) - waveobj= shift(waveobj, -fitcen) - waveobj= 10^waveobj - wavestar= 10^wavestar - endif - fluxobj1=fluxobj/mean(fluxobj) - fluxstar1=fluxstar/mean(fluxstar) - if (keyword_set(continuum)) then plot,wavestar,fluxstar,ps=0 $ - else plot,wavestar,fluxstar1,ps=0 - if (keyword_set(continuum)) then $ - djs_oplot,waveobj,fluxobj,ps=0,color='red'$ - else djs_oplot,waveobj,fluxobj1,ps=0,color='red' - - endif - -; Should really store sigma squared, and allow negative values; error -; should reflect it - DPF ??? - if (galsigma GT starsigma AND starsigma GT 0.0) then begin - result[iobj].sigma_xcor[istar] = sqrt(galsigma^2 - starsigma^2)*fac - result[iobj].sigma_xcorerr[istar] = sqrt((galsigma_err)^2 + $ - (starsigma_err)^2)*fac - endif - - - twopiei = 2.0 * PI * complex(0.0,1.0) - knums = fft_wavenums(npixbig) -; fitcen generated from passed redshift -; fitcen = alog10(redshifts[iobj]+1)*1E4 ; in pixels - -; phase = exp( - twopiei * knums * fitcen) -; starshift = starfft * phase - starshift = starfft - - -; Need to pick lower and upper limits to do comparison -; Let's try to compare from 80 pixels to 2.2 pixels - -;print,'BEFORE newdiff ',systime(1)-t1 - - if (NOT keyword_set(nodiff)) then $ - answer = newdiff(fluxfft, starshift, fluxvar0, $ - starvar0, testsigma=testsigma, deltachisq=1.0, $ - lowlimit = 1.0/80.0, highlimit=1.0/5.0, $ - broadarr=broadarr, doplot=doplot) - - bestalpha = -9999.0 -;print,'END',systime(1)-t1 - - if (n_elements(answer) EQ 4) then begin - result[iobj].sigma_diff[istar] = answer[1]*fac - result[iobj].sigma_differr[istar] = answer[2]*fac - bestalpha = answer[3] - endif - - - r = result[iobj] - print, iobj, istar, r.z[istar], r.z_err[istar], $ - r.sigma_xcor[istar], r.sigma_xcorerr[istar], $ - r.sigma_diff[istar], r.sigma_differr[istar], $ - r.sigma_rs, r.sigma_rserr, redshifts[iobj],$ - format='(2(i4),x,f8.5," +/-",f8.5,3(2x,i3," +-",i3),x,f8.5)' - - - endfor - endfor - return -end diff --git a/pro/science/kinematics/mveldisp_fft.pro b/pro/science/kinematics/mveldisp_fft.pro deleted file mode 100644 index a90a3cab9..000000000 --- a/pro/science/kinematics/mveldisp_fft.pro +++ /dev/null @@ -1,94 +0,0 @@ -;called by mveldisp - -; this routine: -; 1) interpolates accross missing pixels -; 2) normalizes spectrum to unit flux (or variance) -; 3) apodizes spectrum with cos bell in real space -; 4) pads with zeros up to TWICE the next higher value of 2^N -; 5) computes FFT - -PRO mveldisp_fft, flux_in, err_in, npixbig, fluxfft, fluxfilt, fluxvar0, fluxvariancefft, err, khicut, wave=wave, keep=keep, klo_cut=klo_cut, khi_cut=khi_cut - -; make copies to work on - flux = flux_in-mean(flux_in) - err = err_in - - - npixobj = n_elements(flux) -; interpolate over bad regions - flux = djs_maskinterp(flux, err LE 0.0, /const) - - - IF keyword_set(wave) AND keyword_set(keep) THEN BEGIN - kmask = (wave GE min(keep)) AND (wave LE max(keep)) - -;stop - err = err*kmask - - ENDIF - -; apodize - fft_apodize, flux, err - -; pad - npad = npixbig-npixobj - IF npad NE 0 THEN BEGIN - flux = [flux, fltarr(npixbig-npixobj)] - err = [err, fltarr(npixbig-npixobj)] - ENDIF ELSE BEGIN - print, 'MVELDISP_FFT: Warning: arrays already padded...' - ENDELSE -; take FFT - fluxfft = fft(flux) * npixbig - fluxvariancefft = fft(err^2) * npixbig - fluxvar0 = float(fluxvariancefft[0]) - - - w = where(err NE 0) - -; Band-pass filter the object spectrum - fluxfilt = mbandpassfilter(fluxfft, klo_cut=klo_cut, khi_cut=khi_cut) - norm = djsig((float(fft(fluxfilt, /inv)))[w], sigrej=6) - -; window,0, retain=2 -; plot,fluxfilt,ps=0 -;stop - - - fluxfiltmy=fluxfilt - fluxfilt = fluxfilt/norm - - - ndata = N_elements(fluxfft) - knums = fft_wavenums(ndata) - - bin1=where(knums GT 0.4 AND knums LT 0.49) - lfluxfft=alog10((fluxfft/norm)*conj(fluxfft/norm)) - meanlflux1=mean(lfluxfft[bin1]) - rmslflux1=stddev(lfluxfft[bin1]) - - i=1 - diff=0 - khigh=0.4 - while (diff LT float(3*rmslflux1) AND khigh GT 0) do begin - bin=where(knums GT 0.4-0.05*i AND knums LT 0.449-0.05*i) - meanlflux=mean(lfluxfft[bin]) - diff= abs(float(meanlflux) - float(meanlflux1)) - khigh=0.425-0.05*i - i=i+1 - endwhile - if (khigh GT klo_cut) then khicut=khigh - if (khigh LT klo_cut) then khicut=klo_cut+0.001 - -; window,1,retain=2 -; plot,knums,alog10((fluxfft/norm)*conj(fluxfft/norm)),ps=0 -; djs_oplot,knums,alog10(fluxfilt*conj(fluxfilt)),ps=0,color='red' -;stop - - IF total(finite(fluxfilt) EQ 0) NE 0 THEN BEGIN - message, 'Infinite value in FFT' - ENDIF - - - return -END diff --git a/pro/science/kinematics/mveldisp_stars.pro b/pro/science/kinematics/mveldisp_stars.pro deleted file mode 100644 index 7acb0d35a..000000000 --- a/pro/science/kinematics/mveldisp_stars.pro +++ /dev/null @@ -1,29 +0,0 @@ -Pro mveldisp_stars, galflux, galsig, galwave, starflux, starsig, starwave, $ -sample, czmin, czmax, imin, imax, fullresult - -goodmain=where((sample.z_primtarget EQ 64 OR sample.z_primtarget EQ 96) AND sample.z LT 0.3) - -if (n_elements(goodmain) LT imax) then imax=n_elements(goodmain)-1 - -imin1=0 -imax1=n_elements(goodmain)-1 - -for i=imin1,imax1 do begin & $ -print,'object',i, sample[goodmain[i]].plate, sample[goodmain[i]].mjd, $ -sample[goodmain[i]].fiberid & $ -mveldisp, galflux[*,goodmain[i]],galsig[*,goodmain[i]],galwave[*,goodmain[i]],starflux[*,*], starsig[*,*], starwave[*,*], result, redshifts=sample[goodmain[i]].z,czmin=czmin, czmax= czmax, klo_cut=0.016, khi_cut=0.23, maxsig=6,sigmastep=0.4,/noquot & $ - -if (size(fullresult,/tname) EQ 'STRUCT') then begin & $ -fullresult = [fullresult, result] & $ -endif else begin & $ -fullresult = result & $ -endelse & $ - -endfor - -namefull=string('veldisp_MAIN'+string(imin,format='(i4.4)')+$ - '_'+string(imax,format='(i4.4)')+'.fit') -mwrfits, fullresult, namefull - -return -end \ No newline at end of file diff --git a/pro/science/kinematics/mveldisp_struc.pro b/pro/science/kinematics/mveldisp_struc.pro deleted file mode 100644 index 55a5e99f4..000000000 --- a/pro/science/kinematics/mveldisp_struc.pro +++ /dev/null @@ -1,41 +0,0 @@ -; D. Finkbeiner -; 27 Jun 2000 -; Create structure to contain results of mveldisp -FUNCTION mveldisp_struc, N, ntemplate - - IF keyword_set(ntemplate) THEN arr = fltarr(ntemplate) ELSE arr = 0. - - struc = { $ - plate : 0, $ - mjd : 0L, $ - fiber : 0, $ - zchic : 0.0, $ - class : '', $ - primtarget : 0L, $ - zbest : 0.0, $ - zbest_err : 0.0, $ - sigma2best : 0.0, $ - sigma2best_err : 0.0, $ - z : arr, $ - z_err : arr, $ - zconf : arr, $ - sigma2_cc : arr, $ - sigma2_cc_err : arr, $ - sigma2_quotient : arr, $ - sigma2_quotient_err : arr, $ - sigma2_diff : arr, $ - sigma2_diff_err : arr, $ - run : 0L, $ - rerun : 0L, $ - camcol : 0L, $ - field : 0L, $ - id : 0L $ -} - - IF keyword_set(N) THEN $ - arr = replicate(struc, N) $ - ELSE $ - arr = struc - - return, arr -END diff --git a/pro/science/kinematics/newdiff.pro b/pro/science/kinematics/newdiff.pro deleted file mode 100644 index e6c0ac2fc..000000000 --- a/pro/science/kinematics/newdiff.pro +++ /dev/null @@ -1,177 +0,0 @@ -;+ -; NAME: -; mfourier_difference -; -; PURPOSE: -; Perform a chi2 fit to the fourier difference between a single -; galaxy and a broadened stellar template to calculate velocity dispersion -; and uncertainty on velocity dispersion -; -; CALLING SEQUENCE: -; answers = mfourier_difference(galfft, starfft, galvar0, starvar0, $ -; testsigma=, lowlimit=, highlimit=, $ -; deltachisq=deltachisq, /doplot) -; -; INPUTS: -; galfft - Fourier transform of galaxy -; starfft - Fourier transform of stellar template -; galvar0 - error in galaxy fft (0th element of galaxy error FFT) -; starvar0 - error in stellar fft (0th element of stellar error FFT) -; -; OPTIONAL KEYWORDS: -; testsigma - Array of sigma values to calculate chi2 -; lowlimit - lower boundary of chi2 sum (in knums units) -; highlimit - upper boundary of chi2 sum (in knums units) -; deltachisq - chi2 difference from minimum to set error on velocity dispersion -; doplot - Output plots to xwindow -; -; OUTPUTS: -; answers - Four element array with: -; [minchi2, minsigma, errsigma, bestalpha] -; bestalpha is the normalization constant between galaxy and star -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; Currently, this is very slow, as we have to check 11 normalizations -; for each element in testsigma array -; -; Need to ensure that confidence level returned as errsigma is proper -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 25-Mar-2000 Written by S. Burles, FNAL -; 2000-Sep-11 Considerable changes by the SWAT team -;- -;------------------------------------------------------------------------------ -function alpha_chisq, alpha, gal, star, galvar, starvar, br, minchi2 - - ntry = n_elements(alpha) - if (ntry EQ 0) then return, -1 - - chisq = fltarr(ntry) - for i=0,ntry -1 do begin - diff = float(gal) - float(star)*br*alpha[i] - rediff = float(diff*conj(diff)) -; rediff = abs(diff)^2 - chisq[i] = total(rediff/(galvar + starvar*alpha[i]^2*br^2)) - endfor - - mfindchi2min, alpha, chisq, minchi2, bestalpha - - return, bestalpha -end - - -;------------------------------------------------------------------------------ -function get_alpha, galvar0norm, starvar0norm, broad, galfftnorm, $ - starfftnorm, maxiter=maxiter, chi2=chi2 - alpha_old = 1 - num1 = float(galfftnorm*conj(starfftnorm)*broad) - num2 = abs(starfftnorm*broad)^2 - for j=0,maxiter-1 do begin - denom = galvar0norm + (starvar0norm*alpha_old^2)*broad^2 - alpha = total(num1/denom)/total(num2/denom) - alpha_old = alpha -; print,j,alpha - endfor - -return, alpha -end - - -;------------------------------------------------------------------------------ -; Suggestion on errors: -; The error on fourier modes can be estimated from the high k modes. -; Correlations between pixels leads to rolloff in the errors at high k, -; compensated by increased errors at low k. Suggest that 2-d output an -; approximate sub-diagonal correlation term. (Eisenstein) -; Chi^2 can be calibrated by taking a random wavelength-space vector of -; unit normals and passing through cosbell (apodized) FFT, estimating -; Fourier mode variance in same way as galaxy, computing chi^2 and -; comparing result with analytic result. - -; Could also use realization of quoted errors from 2-D for galaxy spectra. -; -;------------------------------------------------------------------------------ -;------------------------------------------------------------------------------ -function newdiff, galfft, starfft, galvar0, starvar0, $ - testsigma=testsigma, lowlimit = lowlimit, highlimit=highlimit, $ - deltachisq=deltachisq, doplot=doplot, broadarr=broadarr - - if (NOT keyword_set(lowlimit)) then lowlimit = 1.0/80.0 - if (NOT keyword_set(highlimit)) then highlimit = 1.0/2.2 - - if (size(galfft, /tname) EQ 'DOUBLE') then PI = !dpi $ - else PI = !pi - - knums = fft_wavenums(N_elements(galfft)) - - inside = where(knums GT lowlimit AND $ - knums LT highlimit, ninside) - - if (inside[0] EQ -1) then begin - print, 'No pixels in correct frequency range' - return, -1 - endif - - if (n_elements(testsigma) EQ 0) then testsigma = findgen(30)*0.2 - - nloop = n_elements(testsigma) - chi2diff = fltarr(nloop) - sigma = fltarr(nloop) - alpha = fltarr(nloop) - - galnorm = djsig(float(galfft[inside]), sigrej=5) - starnorm = djsig(float(starfft[inside]), sigrej=5) - - galfftnorm= float(galfft[inside]/galnorm) - starfftnorm= float(starfft[inside]/starnorm) - galvar0norm= galvar0/galnorm^2 - starvar0norm = starvar0/starnorm^2 - - ones = 1.+fltarr(ninside) - IF NOT keyword_set(broadarr) THEN BEGIN - broadarr = dblarr(ninside, nloop) - for i=0,nloop-1 do begin - IF testsigma[i] EQ 0 THEN broad = ones ELSE BEGIN - fsig = 1.d/(2.*!dpi)/testsigma[i] - broad = gauss_periodic(knums[inside], [1., 0., fsig], shft=1.) - ENDELSE - broadarr[*, i] = broad - ENDFOR - ENDIF - - - for i=0,nloop-1 do begin - broad = broadarr[*, i] - alpha[i] = get_alpha(galvar0norm, starvar0norm, broad, $ - galfftnorm, starfftnorm, maxiter=4) - - denom = galvar0norm + starvar0norm*(alpha[i]*broad)^2 - chi2diff[i] = total(abs(galfftnorm-starfftnorm*(broad*alpha[i]))^2 / $ - denom) - endfor - - deltachisq = 1./n_elements(inside) - - mfindchi2min, testsigma, chi2diff, minchi2, minsigma, errsigma, $ - deltachisq = deltachisq, doplot=doplot, npts=ninside - - broad = exp(-(knums[inside]*minsigma * 2.0 * PI)^2/2.0) - bestalpha = get_alpha(galvar0norm, starvar0norm, broad, $ - galfftnorm, starfftnorm, maxiter=4) - -; oplot, testsigma, alpha, ps=2 - minc = min(chi2diff, alphaplace) - bestalpha =alpha[alphaplace] - - - return, [minchi2, minsigma, errsigma, bestalpha] -end -;------------------------------------------------------------------------------ diff --git a/pro/science/kinematics/realspace.pro b/pro/science/kinematics/realspace.pro deleted file mode 100644 index 8d55f5fde..000000000 --- a/pro/science/kinematics/realspace.pro +++ /dev/null @@ -1,358 +0,0 @@ -function gconv, x, sigma, edge_wrap=edge_wrap - -; special case for no smoothing - if sigma eq 0 then return, x - - binfactor=1 - ksize=round(4*sigma+1)*2 - xx = findgen(ksize)-ksize/2 - - kernel=exp(-xx^2/(2*sigma^2)) - kernel=kernel/total(kernel) - - sm = convol(x, kernel, edge_wrap=edge_wrap) - - return, sm -end - - - -function matfit, eig, gal, sigma, inv=inv - - neig=(size(eig))[2] - ep=eig/((fltarr(neig)+1)#sigma) - - galp=gal/sigma - - G = galp#ep - - E = transpose(ep)#ep - inv = invert(E) - C = inv##G -; print,C - -return, c -end - - -function comp_fit, eig, lam, gal, lam1, smooth_sig=smooth_sig - -; Generate Fourier components - nlam=n_elements(lam) - u = (findgen(nlam)+0.5)/nlam - neig=(size(eig))[2] - - base = eig - if keyword_set(smoothsig) then begin - for i=0,neig-1 do base[*,i]=gconv(eig[*,i], smooth_sig*2.355) - endif - e0=1 - for k=1,5 do base=[[base],[sin(u*!pi*k)*e0],[cos(u*!pi*k)*e0]] - - C = matfit(base, gal, fltarr(nlam)+1, inv=inv) - - fit = eig#C[0:neig-1] -; fit = base#transpose(C) - - return, fit -end - - -pro testsetup -; Read in stellar eigenspectra - readcol,'sp4',lam,s1,s2,s3,s4 - readcol,'sp321',lam,s5,s6,s7 - readcol,'spbrg',lamg,gal - -; Generate fake inverse variance - nlam = n_elements(lamg) - ivar = fltarr(nlam)+1 ; uniform weighting - ivar = ivar+(ivar EQ 0) - -; Build eigenspectrum array - eig = double([[s1],[s2],[s3],[s4],[s5],[s6],[s7]]) - - save, lam, eig, lamg, gal, ivar, file='quicktest.sav' - - - restore, 'sample_MAIN_sept00.dat' - i = lindgen(100) - galflux = galflux[*, i] - galsig = galsig[*, i] - galwave = galwave[*, i] - sample = sample[i] - - - save, galflux, galsig, galwave, sample, $ - file='small_sample.sav' - - - - - return -end - -pro testrealspace, doplot=doplot - - - fname = findfile('quicktest.sav', count=ct) - if ct eq 0 then testsetup - restore, 'quicktest.sav' ;lam, eig, lamg, gal, ivar - restore, 'small_sample.sav' - - N = 200 - b = fltarr(N) - berr = fltarr(N) - chi2 = fltarr(N) - - testsigma = (findgen(20)+0)/2. - - galivar = 1./((galsig^2) + (galsig eq 0)) - fac = (10.^(1e-4)-1)*299792 ; 69.0458 - - i = 0 - - gal = galflux[*, i] - ivar = galivar[*, i] - wavg = galwave[*, i] - lamg = 10^wavg - z = sample[i].z - combine1fiber, wavg, gal, ivar, newloglam=wavg+alog10(1+z), $ - newflux=newflux, newivar=newivar - iseed = !pi - - FOR i=0, N-1 DO BEGIN - - nfac = i/50. ; noise factor - noise = randomn(iseed, n_elements(newflux))*nfac - nivar = 1./(1./ivar + nfac^2) - - ans = realspace(lam, eig, lamg, newflux+noise, nivar, $ - testsigma=testsigma, $ - lamrange=lamrange, doplot=doplot, broadlam=broadlam, $ - broadarr=broadarr, dof=dof) - - minchi2 = ans[0] - minsigma = ans[1] - errsig = ans[2] -; dof = n_elements(gal) - b[i] = minsigma*fac - berr[i] = errsig*fac - chi2[i] = minchi2/dof - - print, i, ' Chi2/dof', minchi2, '/', long(dof), $ - ' sigma:', minsigma, ' pix', $ - minsigma*fac, ' +-', errsig*fac, ' km/s', $ - format='(I5,A,F10.2,A,I5,A,F6.3,A,F8.1,A,F6.1,A)' - - ENDFOR - - save, b, berr, chi2, file='test.sav' - - plot, b, ps=7 - errplot, b-berr, b+berr - - - return -end - - - - -pro callrealspace, doplot=doplot - - - fname = findfile('quicktest.sav', count=ct) - if ct eq 0 then testsetup - restore, 'quicktest.sav' ;lam, eig, lamg, gal, ivar -; restore, 'small_sample.sav' - restore, 'sample_MAIN_sept00.dat' - - N = (size(galflux))[2] - b = fltarr(N) - berr = fltarr(N) - chi2 = fltarr(N) - - testsigma = (findgen(20)+0)/2. - - galivar = 1./((galsig^2) + (galsig eq 0)) - fac = (10.^(1e-4)-1)*299792 ; 69.0458 - - FOR i=0, N-1 DO BEGIN - gal = galflux[*, i] - ivar = galivar[*, i] - wavg = galwave[*, i] - lamg = 10^wavg - z = sample[i].z - combine1fiber, wavg, gal, ivar, newloglam=wavg+alog10(1+z), $ - newflux=newflux, newivar=newivar - - - ans = realspace(lam, eig, lamg, newflux, newivar, $ - testsigma=testsigma, $ - lamrange=lamrange, doplot=doplot, broadlam=broadlam, $ - broadarr=broadarr, dof=dof) - - minchi2 = ans[0] - minsigma = ans[1] - errsig = ans[2] -; dof = n_elements(gal) - b[i] = minsigma*fac - berr[i] = errsig*fac - chi2[i] = minchi2/dof - - print, i, 'Chi2/dof', minchi2, '/', dof, ' sigma:', minsigma, ' pix ', $ - minsigma*fac, ' +-', errsig*fac, ' km/s' - ENDFOR - - save, b, berr, chi2, file='results.sav' - - return -end - - - - - -;------------------------------------------------------------------------------ -;+ -; NAME: -; realspace -; -; PURPOSE: -; Perform a fit of broadened PCA templates to a galaxy spectrum -; in order to measure velocity dispersion. The PCA templates are -; derived from stars which are assumed to have zero dispersion and -; identical redshifts. The fit is done in real (not Fourier) space -; so that the uncertainties in the galaxy spectrum can be used. -; -; CALLING SEQUENCE: -; answers = realspace(lam, eig, lamg, gal, ivar, $ -; testsigma=, lamrange=, /doplot, broadarr= ) -; -; INPUTS: -; lam - wavelengths for eigenmodes (eig) - log spacing -; eig - array [nwav, nspec] of eigenspectra (derived from -; stars) -; lamg - wavelengths for galaxy -; gal - galaxy spectrum -; ivar - galaxy inverse variance -; -; OPTIONAL KEYWORDS: -; testsigma - Array of sigma values to try -; lamrange - wavelength range (Angstroms) to use in fit -; doplot - Output diagnostic plots to Xwindow -; broadarr - array of pre-broadened templates (calculated if not passed) -; broadlam - lambda array (A) for broadarr -; -; OUTPUTS: -; answers - Four element array with: -; [minchi2, minsigma, errsigma, bestalpha] -; bestalpha is the normalization constant between -; galaxy and star -; -; OPTIONAL OUTPUTS: -; broadarr - if undefined when passed, broadarr will be calculated -; and returned for use in subsequent calls -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 12-Sep-2000 Written by Doug Finkbeiner, UC Berkeley -; with Daniel Eisenstein and David Schlegel. -;- -;------------------------------------------------------------------------------ -function realspace, lameig, eig, lamg, gal_in, ivar_in, $ - testsigma=testsigma, broadlam=broadlam, $ - lamrange=lamrange, doplot=doplot, broadarr=broadarr, $ - dof=dof - -; Set wavelength range to use for fit - if n_elements(lamrange) eq 2 then begin - lam0 = lamrange[0] & lam1 = lamrange[1] - endif else begin - lam0 = 4000 & lam1 = 5500 - endelse - -; Velocity dispersion is sigma, NOT FWHM. Measured in pixels. - if not keyword_set(testsigma) then testsigma = (findgen(10)+5)/2. - - nsigma = n_elements(testsigma) - if not keyword_set(broadarr) then begin -; number of eigenmodes - neig = (size(eig))[2] - -; number of Fourier components - nf = 16 - -; trim wavelength range of lameig - w = where((lameig gt lam0) and (lameig lt lam1),nlam) - lam = lameig[w] ; good for both eigenmodes and galaxy - broadlam = lam - -; compute smoothed templates once and store in broadarr - broadarr = dblarr(nlam, neig+nf, nsigma) - - u = (findgen(nlam)+0.5)/nlam - e0 = 1 ; could be a spectrum - - for i=0, nsigma-1 do begin - base = eig - for j=0, neig-1 do base[*,j] = gconv(eig[*,j], testsigma[i]) - base = base[w, *] - ; add Fourier components - for k=1,nf/2 do base=[[base],[sin(u*!pi*k)*e0],[cos(u*!pi*k)*e0]] - broadarr[*, *, i] = base - endfor - - endif - - w = where((lamg gt lam0) and (lamg lt lam1),nlam) - gal = double(gal_in[w]) - ivar = ivar_in[w] - dof = n_elements(gal) - -; temp = comp_fit(eig, lam, gal, lam1) - - chi2 = fltarr(nsigma) - - for i=0, nsigma-1 do begin - - base = broadarr[*, *, i] - chi2[i] = computechi2(gal, sqrt(ivar), base, acoeff=acoeff, dof=dof, yfit=yfit) - fake = yfit - C = acoeff - -; print,'i,sigma,chi2',i, testsigma[i], chi2[i] - - - if keyword_set(doplot) then begin ; Make diagnostic plots - plot, broadlam, gal, /yno - oplot, broadlam, fake,color=185, thick=3 - oplot, broadlam, (fake-gal)+1, color=215 - endif - - endfor - - findchi2min, testsigma, chi2, minchi2, minsigma, errsigma - - -; assign variables to return - bestalpha = 0 ; deprecated - - return, [minchi2, minsigma, errsigma, bestalpha] -end - - - - - - - - diff --git a/pro/science/kinematics/skyremove.pro b/pro/science/kinematics/skyremove.pro deleted file mode 100644 index bf29dc608..000000000 --- a/pro/science/kinematics/skyremove.pro +++ /dev/null @@ -1,23 +0,0 @@ -Pro skyremove, objflux, objwave, lmin, lmax, ppp, kcor - - pppold=lindgen(n_elements(objflux)) - sky=where(10^objwave GT lmin AND 10^objwave LT lmax) - outsky=where((10^objwave GT lmin-1000 AND 10^objwave LT lmin) OR $ - (10^objwave GT lmax AND 10^objwave LT lmax+1000)) - fluxsmooth=smooth(objflux,10) - dif=objflux[outsky]-fluxsmooth[outsky] - djs_iterstat,dif, sigma=rms, sigrej=5 - maxsky=max(objflux[sky]) - minsky=min(objflux[sky]) - - if (maxsky GT 5*rms OR abs(minsky) GT 5*rms) then begin - - ppp=where(10^objwave LT lmin OR 10^objwave GT lmax) - kcor=1 - endif else begin - ppp=pppold - kcor=0 - endelse - -return -end \ No newline at end of file diff --git a/pro/science/kinematics/sp321 b/pro/science/kinematics/sp321 deleted file mode 100644 index 457f5d672..000000000 --- a/pro/science/kinematics/sp321 +++ /dev/null @@ -1,1964 +0,0 @@ -From eisenste@cosmo.uchicago.edu Fri Sep 8 15:47:14 2000 -Received: from astron.Berkeley.EDU (astron [128.32.92.108]) - by deep.Berkeley.EDU (8.8.8+Sun/8.8.8) with ESMTP id PAA21015 - for ; Fri, 8 Sep 2000 15:47:14 -0700 (PDT) -Received: from cosmo.uchicago.edu (cosmo.uchicago.edu [128.135.4.32]) - by astron.Berkeley.EDU (8.9.3+Sun/8.8.8) with ESMTP id PAA00994 - for ; Fri, 8 Sep 2000 15:47:14 -0700 (PDT) -Received: (from eisenste@localhost) - by cosmo.uchicago.edu (8.9.3/8.9.3) id RAA14332 - for dfink@astro.berkeley.edu; Fri, 8 Sep 2000 17:47:15 -0500 -Date: Fri, 8 Sep 2000 17:47:15 -0500 -From: Daniel Eisenstein -Message-Id: <200009082247.RAA14332@cosmo.uchicago.edu> -To: dfink@astron.Berkeley.EDU -Content-Length: 70023 -X-Lines: 1946 - -# lam sp1 sp2 sp3 -# -3899.70 0.42697 1.92148 -1.86689 -3900.60 0.42345 1.81716 -2.11160 -3901.50 0.46063 1.83647 -1.84561 -3902.40 0.48376 1.95715 -2.16512 -3903.29 0.45736 1.77101 -1.85276 -3904.19 0.43218 1.75890 -1.41750 -3905.09 0.42249 1.71954 -1.68549 -3905.99 0.38742 1.54125 -1.27241 -3906.89 0.37926 1.63422 -1.04148 -3907.79 0.42361 2.02776 -1.04167 -3908.69 0.48574 1.96703 -0.98930 -3909.59 0.53820 2.10708 -0.91507 -3910.49 0.53275 1.97292 -0.34444 -3911.39 0.53669 1.96192 -0.98768 -3912.29 0.56058 2.24815 -0.95122 -3913.19 0.57538 2.22769 -0.68036 -3914.09 0.56729 2.03608 -0.19562 -3915.00 0.55945 1.91222 -0.07218 -3915.90 0.55166 2.16998 -0.69782 -3916.80 0.52941 2.14658 -0.73105 -3917.70 0.51057 2.14985 -1.03489 -3918.60 0.50116 2.20147 -0.89866 -3919.51 0.46326 2.08440 -1.22443 -3920.41 0.40330 1.75240 -1.20278 -3921.31 0.35712 1.74350 -0.71862 -3922.21 0.33764 1.81708 -0.90894 -3923.12 0.35885 1.90253 -1.01937 -3924.02 0.38154 2.05810 -1.25894 -3924.92 0.40533 2.02173 -1.12113 -3925.83 0.40689 2.00462 -0.55368 -3926.73 0.37480 1.72046 -0.28277 -3927.64 0.33003 1.55535 -0.50503 -3928.54 0.27396 1.24441 0.16852 -3929.45 0.22696 1.21048 -0.44750 -3930.35 0.19320 1.12296 -0.11577 -3931.26 0.16340 0.86785 0.12225 -3932.16 0.14081 0.86779 0.20892 -3933.07 0.11528 0.76287 0.99879 -3933.97 0.09749 0.60005 1.58556 -3934.88 0.09870 0.63206 1.07434 -3935.78 0.11821 0.77581 0.73094 -3936.69 0.15613 0.88787 0.70972 -3937.60 0.19556 1.02445 0.59148 -3938.50 0.23442 1.19195 0.26517 -3939.41 0.28657 1.25858 0.38239 -3940.32 0.32178 1.35935 -0.12513 -3941.23 0.33873 1.44701 -0.47243 -3942.13 0.33854 1.47481 -0.34952 -3943.04 0.33275 1.67152 -0.72062 -3943.95 0.31858 1.80288 -1.22137 -3944.86 0.30621 1.59756 -0.85557 -3945.77 0.35160 1.63901 -1.32912 -3946.67 0.43298 1.92695 -1.41769 -3947.58 0.45820 1.95018 -1.39568 -3948.49 0.44222 1.80131 -1.19276 -3949.40 0.44941 1.77911 -1.16978 -3950.31 0.48786 1.77182 -1.41058 -3951.22 0.53821 1.76997 -1.45856 -3952.13 0.52688 1.72529 -1.00986 -3953.04 0.48010 1.74239 -0.52925 -3953.95 0.47207 1.76097 -0.78859 -3954.86 0.50852 1.69882 -1.86387 -3955.77 0.53480 1.63393 -2.16353 -3956.68 0.48600 1.61308 -1.68108 -3957.60 0.43704 1.57379 -1.64131 -3958.51 0.44560 1.66753 -2.26008 -3959.42 0.48985 1.86050 -3.26436 -3960.33 0.47567 1.91033 -3.21662 -3961.24 0.39203 1.74567 -2.49528 -3962.15 0.30159 1.56671 -1.67136 -3963.07 0.25534 1.24237 -1.35161 -3963.98 0.26581 1.16578 -1.30967 -3964.89 0.26981 1.18534 -1.01346 -3965.80 0.24590 1.10393 -0.05566 -3966.72 0.19488 1.01606 -0.16751 -3967.63 0.14823 0.82036 0.09841 -3968.55 0.11744 0.75208 0.67377 -3969.46 0.10567 0.74908 0.84911 -3970.37 0.12476 0.72068 0.97190 -3971.29 0.16885 0.80450 0.73615 -3972.20 0.21866 1.05925 0.36663 -3973.12 0.25866 1.05848 0.49650 -3974.03 0.29674 1.35037 -0.09824 -3974.95 0.35319 1.40442 -0.40125 -3975.86 0.40838 1.47297 -0.01109 -3976.78 0.44333 1.64230 -0.20986 -3977.69 0.48306 1.76772 -0.50365 -3978.61 0.52392 1.72977 -0.02703 -3979.53 0.56243 1.73211 -0.03865 -3980.44 0.61918 2.04986 -0.36826 -3981.36 0.63330 2.12596 -0.38339 -3982.28 0.60601 2.00560 -0.40858 -3983.19 0.58261 1.96669 -0.08442 -3984.11 0.58113 1.99057 0.13801 -3985.03 0.59602 1.85783 -0.04591 -3985.95 0.62515 1.86314 -0.39691 -3986.86 0.63340 1.87767 -0.11000 -3987.78 0.65080 1.84650 -0.19471 -3988.70 0.69071 1.88360 -0.05804 -3989.62 0.68825 2.13655 0.01476 -3990.54 0.66430 2.06142 0.27995 -3991.46 0.65063 1.96382 0.17571 -3992.38 0.68431 2.15948 -0.01450 -3993.29 0.71238 2.18094 0.65668 -3994.21 0.70072 2.16880 0.08752 -3995.13 0.68472 2.24815 0.13770 -3996.05 0.65679 2.07877 0.54187 -3996.97 0.64272 1.90120 0.23646 -3997.89 0.61448 1.66621 0.05600 -3998.82 0.62441 1.81365 -0.72700 -3999.74 0.68401 2.03500 -0.74658 -4000.66 0.73625 1.86469 -0.05303 -4001.58 0.75374 1.82568 0.33611 -4002.50 0.74210 1.91421 0.14374 -4003.42 0.76696 1.79055 0.24455 -4004.34 0.76247 2.00232 -0.55334 -4005.27 0.65870 1.98890 -0.41812 -4006.19 0.55487 1.59781 -0.03818 -4007.11 0.56700 1.73798 -0.71021 -4008.03 0.65159 1.75343 -0.21945 -4008.96 0.72301 1.87404 0.26565 -4009.88 0.74370 1.88873 -0.18596 -4010.80 0.75376 2.01453 0.16812 -4011.73 0.74243 2.01839 0.06860 -4012.65 0.74027 2.07652 0.42529 -4013.57 0.74885 1.85224 0.65884 -4014.50 0.74731 1.76023 0.34554 -4015.42 0.75494 2.01924 -0.09635 -4016.35 0.76714 1.83606 -0.06847 -4017.27 0.74697 1.83639 0.06091 -4018.20 0.70955 1.89832 0.05340 -4019.12 0.72295 1.54356 0.40768 -4020.05 0.77214 1.79646 0.61096 -4020.97 0.77240 1.90930 0.50250 -4021.90 0.74312 1.78712 0.42186 -4022.83 0.74245 1.76194 0.50847 -4023.75 0.73774 1.83266 0.55211 -4024.68 0.72068 1.99948 0.43812 -4025.61 0.71098 1.91842 0.23434 -4026.53 0.71304 1.74723 -0.14724 -4027.46 0.74892 1.95482 -0.28656 -4028.39 0.79164 2.01362 -0.42451 -4029.32 0.80611 1.75779 -0.62867 -4030.24 0.74390 1.76132 -1.15060 -4031.17 0.62391 1.90071 -1.45666 -4032.10 0.54401 1.79156 -2.02748 -4033.03 0.52915 1.66306 -2.37812 -4033.96 0.52329 1.82042 -2.22023 -4034.89 0.51719 1.88078 -2.31853 -4035.82 0.57308 1.96120 -1.88362 -4036.75 0.65826 1.79461 -0.95919 -4037.67 0.73831 1.83038 -0.14441 -4038.60 0.78726 1.84006 0.04736 -4039.53 0.78500 1.87855 -0.19723 -4040.47 0.73778 1.73441 0.01423 -4041.40 0.69686 1.60656 -0.39302 -4042.33 0.71002 1.74126 -1.33295 -4043.26 0.72171 1.84917 -1.78074 -4044.19 0.67350 1.95031 -1.85010 -4045.12 0.53488 1.86416 -1.42091 -4046.05 0.40015 1.54325 -1.54148 -4046.98 0.38658 1.47009 -1.95898 -4047.91 0.50403 1.74989 -2.39797 -4048.85 0.62057 1.86250 -2.55570 -4049.78 0.68492 1.61374 -1.68585 -4050.71 0.71993 1.62253 -1.01947 -4051.64 0.74323 1.76820 -0.72817 -4052.58 0.73027 1.65155 -0.52203 -4053.51 0.69779 1.52687 -0.37807 -4054.44 0.66299 1.48471 -0.12901 -4055.38 0.62994 1.64990 -0.16665 -4056.31 0.61767 1.67430 -0.03929 -4057.25 0.61197 1.68074 -0.28920 -4058.18 0.57803 1.78438 -0.52426 -4059.11 0.56502 1.69968 -0.46566 -4060.05 0.60975 1.76565 -0.33209 -4060.98 0.66890 1.73798 -0.53156 -4061.92 0.67578 1.83128 -1.01096 -4062.86 0.60497 1.86056 -1.52517 -4063.79 0.47765 1.60280 -1.50707 -4064.73 0.44015 1.69031 -1.55786 -4065.66 0.51706 1.67269 -1.52675 -4066.60 0.59261 1.58686 -1.63966 -4067.54 0.60300 1.68116 -1.11444 -4068.47 0.61788 1.72082 -0.44140 -4069.41 0.68932 1.63831 -0.62745 -4070.35 0.71943 1.85693 -1.33454 -4071.28 0.65059 1.86524 -1.29550 -4072.22 0.54479 1.50350 -1.44189 -4073.16 0.53810 1.66574 -1.80173 -4074.10 0.64124 1.79304 -1.76740 -4075.04 0.69461 1.66376 -1.12497 -4075.97 0.66814 1.75260 -0.56982 -4076.91 0.57662 1.56195 -0.05366 -4077.85 0.50796 1.49241 0.44540 -4078.79 0.51846 1.51870 0.25116 -4079.73 0.58882 1.42774 -0.16834 -4080.67 0.68021 1.43208 -0.01289 -4081.61 0.75809 1.59974 0.42197 -4082.55 0.78038 1.70472 0.33907 -4083.49 0.73742 1.59407 0.68030 -4084.43 0.67847 1.61444 0.40668 -4085.37 0.66184 1.49330 0.41236 -4086.31 0.67454 1.39359 0.91627 -4087.25 0.72566 1.60731 0.99274 -4088.19 0.78668 1.61230 1.03513 -4089.13 0.83086 1.62810 1.01128 -4090.08 0.82413 1.72933 0.80819 -4091.02 0.80006 1.71811 0.93909 -4091.96 0.76220 1.63929 1.02317 -4092.90 0.73861 1.62822 0.50970 -4093.84 0.74551 1.65588 0.88669 -4094.79 0.75849 1.68972 1.55607 -4095.73 0.71435 1.71289 0.58977 -4096.67 0.64072 1.69018 0.52078 -4097.62 0.61932 1.86615 0.39947 -4098.56 0.63746 1.76026 -0.09135 -4099.50 0.65786 1.53910 -0.24531 -4100.45 0.63073 1.64507 -0.38291 -4101.39 0.57139 1.44862 0.39016 -4102.34 0.53004 1.04482 0.53248 -4103.28 0.55527 1.04577 0.18262 -4104.23 0.60745 1.28161 0.41860 -4105.17 0.63823 1.54480 0.27486 -4106.12 0.66990 1.54010 0.31528 -4107.06 0.71093 1.58060 -0.16510 -4108.01 0.71569 1.63886 -0.14832 -4108.95 0.69987 1.57090 -0.35409 -4109.90 0.68002 1.76242 -0.07062 -4110.85 0.65124 1.88918 0.50335 -4111.79 0.62497 1.84377 0.07186 -4112.74 0.64076 2.00011 0.41437 -4113.69 0.67112 2.10603 0.05334 -4114.64 0.70723 1.97226 -0.36533 -4115.58 0.72004 1.84976 0.29494 -4116.53 0.72137 1.91703 -0.04207 -4117.48 0.72172 1.93602 0.30119 -4118.43 0.69677 2.13006 -0.07691 -4119.38 0.64206 1.87047 0.11734 -4120.32 0.61921 1.82576 0.13038 -4121.27 0.65808 1.96222 -0.16202 -4122.22 0.67471 1.86908 0.65702 -4123.17 0.65553 1.95760 0.00586 -4124.12 0.66188 2.02296 0.82339 -4125.07 0.68001 1.89386 0.78557 -4126.02 0.70319 1.79008 0.85636 -4126.97 0.69744 1.71437 1.08166 -4127.92 0.66299 1.79917 0.63821 -4128.87 0.64997 1.86139 0.42455 -4129.82 0.64050 1.88360 0.05289 -4130.77 0.63236 1.85112 0.03430 -4131.72 0.60787 1.95002 0.05238 -4132.68 0.55198 1.90586 -0.42211 -4133.63 0.51902 1.80514 -0.73890 -4134.58 0.52837 1.74898 -0.43011 -4135.53 0.58187 1.77862 0.01097 -4136.48 0.65580 1.84120 0.29957 -4137.44 0.70024 2.10272 0.18693 -4138.39 0.69609 2.13808 0.35662 -4139.34 0.70089 2.06799 0.82796 -4140.30 0.71112 1.99504 1.02131 -4141.25 0.71070 2.13040 0.66565 -4142.20 0.66504 2.29302 0.10750 -4143.16 0.55232 2.24870 -0.34508 -4144.11 0.46195 2.05597 -0.55355 -4145.07 0.46841 1.93458 -0.96336 -4146.02 0.55730 2.12686 -0.53724 -4146.97 0.62957 2.23591 -0.36833 -4147.93 0.65282 2.10021 -0.15133 -4148.88 0.65012 2.22133 0.20421 -4149.84 0.62476 2.15124 0.69952 -4150.80 0.60304 2.23968 0.60507 -4151.75 0.59537 2.32191 1.02671 -4152.71 0.60071 2.37600 0.97810 -4153.66 0.60169 2.29712 0.63716 -4154.62 0.58678 1.97674 0.14723 -4155.58 0.58326 2.01683 0.00761 -4156.53 0.58057 2.06262 0.27009 -4157.49 0.58285 1.94446 0.77607 -4158.45 0.60339 2.10563 0.39599 -4159.41 0.65107 2.02809 0.31619 -4160.36 0.68453 1.90548 0.55367 -4161.32 0.68216 1.99941 0.91886 -4162.28 0.69238 2.20057 1.05470 -4163.24 0.72060 2.06570 1.67483 -4164.20 0.72976 2.15829 1.39733 -4165.16 0.70246 2.18888 1.20526 -4166.12 0.67412 2.31953 0.92003 -4167.08 0.64185 2.20887 0.45345 -4168.03 0.61012 2.20714 0.47649 -4168.99 0.61554 2.22634 0.44631 -4169.95 0.66314 2.10675 0.47918 -4170.92 0.69205 2.06107 0.67345 -4171.88 0.65832 2.01373 0.28250 -4172.84 0.57536 1.77938 -0.18258 -4173.80 0.52962 1.88049 0.56083 -4174.76 0.54795 1.87131 0.47355 -4175.72 0.58953 1.82847 0.50755 -4176.68 0.60149 2.04269 0.37546 -4177.64 0.59124 2.11696 0.43900 -4178.61 0.57580 2.03783 0.62788 -4179.57 0.59124 1.94823 1.29739 -4180.53 0.62462 2.05272 1.07435 -4181.49 0.61841 2.24369 0.89310 -4182.46 0.59791 2.06488 0.43074 -4183.42 0.59679 1.73785 0.01616 -4184.38 0.63335 1.64524 -0.09075 -4185.35 0.69249 1.75149 0.16072 -4186.31 0.70441 1.72813 -0.30626 -4187.27 0.63291 1.66822 -0.45779 -4188.24 0.57927 1.57937 -0.95474 -4189.20 0.59262 1.66808 -0.95150 -4190.17 0.65671 1.77386 -0.40636 -4191.13 0.66787 1.89187 0.00508 -4192.10 0.64853 1.86737 0.46623 -4193.06 0.66078 1.92083 0.18515 -4194.03 0.70042 1.97132 0.43037 -4194.99 0.68948 1.99590 0.99330 -4195.96 0.62158 2.06228 0.62759 -4196.93 0.56721 1.99979 0.21247 -4197.89 0.53998 1.84945 0.00084 -4198.86 0.53550 1.79650 -0.73995 -4199.83 0.55522 1.51055 -0.97450 -4200.79 0.58846 1.66896 -0.84329 -4201.76 0.58354 1.76326 -0.67867 -4202.73 0.55208 1.66299 -0.68789 -4203.70 0.57383 1.68403 -0.34277 -4204.66 0.62739 1.90250 0.08661 -4205.63 0.66890 1.83938 1.07353 -4206.60 0.70184 1.71261 1.22446 -4207.57 0.73695 1.79401 0.87700 -4208.54 0.76090 1.89936 0.38926 -4209.51 0.74495 1.85123 0.44159 -4210.48 0.70657 1.83873 0.22436 -4211.45 0.68330 1.97409 0.25703 -4212.42 0.70344 1.97596 0.57578 -4213.39 0.72538 2.13733 1.12632 -4214.36 0.69403 2.23312 1.31191 -4215.33 0.61678 2.24883 1.04835 -4216.30 0.55961 2.09011 0.67032 -4217.27 0.60312 1.69491 -0.04296 -4218.24 0.71396 1.50652 -1.02207 -4219.21 0.79018 1.30789 -0.68176 -4220.18 0.81546 1.32108 -0.58736 -4221.16 0.83527 1.50993 -0.73501 -4222.13 0.83002 1.48739 -1.11900 -4223.10 0.77542 1.50882 -1.51549 -4224.07 0.69823 1.75982 -1.69987 -4225.05 0.61814 1.78505 -1.99190 -4226.02 0.50932 1.84112 -2.18165 -4226.99 0.37503 1.76332 -1.67739 -4227.96 0.34974 1.65237 -1.85084 -4228.94 0.49235 1.64214 -3.07128 -4229.91 0.66761 1.79187 -3.53808 -4230.89 0.76159 1.81782 -2.83018 -4231.86 0.78977 1.53570 -1.69026 -4232.84 0.78216 1.51276 -1.01033 -4233.81 0.73200 1.71675 -0.97858 -4234.78 0.69911 1.61550 -1.31712 -4235.76 0.69528 1.62175 -1.50824 -4236.74 0.65195 1.32325 -0.72707 -4237.71 0.63995 1.38483 -0.27921 -4238.69 0.67203 1.61310 -0.33687 -4239.66 0.68811 1.38757 -0.13285 -4240.64 0.70692 1.30654 0.07832 -4241.62 0.75147 1.30380 -0.11439 -4242.59 0.78257 1.38189 -0.04690 -4243.57 0.78326 1.21623 0.69060 -4244.55 0.80143 1.11695 1.05475 -4245.52 0.85710 1.16869 0.56840 -4246.50 0.87030 1.10442 0.33914 -4247.48 0.80509 1.17913 0.12454 -4248.46 0.72631 1.10590 -0.00446 -4249.44 0.66847 1.18067 -0.06129 -4250.42 0.61895 1.33204 -0.72767 -4251.39 0.60089 1.53612 -1.61201 -4252.37 0.65721 1.57641 -1.78929 -4253.35 0.71632 1.64382 -1.59880 -4254.33 0.68787 1.77404 -1.99464 -4255.31 0.61605 1.59771 -1.99486 -4256.29 0.63581 1.40124 -1.38964 -4257.27 0.74620 1.34501 -0.81905 -4258.25 0.80576 1.39990 -0.36112 -4259.23 0.75568 1.37821 -0.27277 -4260.21 0.64079 1.38423 -0.72532 -4261.19 0.56692 1.28661 -0.71057 -4262.18 0.59506 1.24773 -1.17827 -4263.16 0.72016 1.25137 -0.85847 -4264.14 0.82589 1.20799 -0.41110 -4265.12 0.85766 1.13550 0.11027 -4266.10 0.86693 1.17963 0.18454 -4267.09 0.86015 1.13582 0.16125 -4268.07 0.81893 1.14381 0.18746 -4269.05 0.75743 1.19396 0.33784 -4270.03 0.71491 1.24756 -0.43384 -4271.02 0.63709 1.46116 -1.00638 -4272.00 0.51948 1.36821 -1.14219 -4272.98 0.48127 1.41424 -1.73503 -4273.97 0.53251 1.33691 -2.04782 -4274.95 0.56543 1.26691 -1.82023 -4275.94 0.58524 1.30582 -1.68641 -4276.92 0.66611 1.42413 -1.56852 -4277.91 0.78351 1.19439 -0.60531 -4278.89 0.84707 1.05225 0.22228 -4279.88 0.81616 1.25385 0.70003 -4280.86 0.72994 1.21074 0.59146 -4281.85 0.68860 1.28103 0.67205 -4282.84 0.72281 1.37227 0.07786 -4283.82 0.75707 1.26615 -0.53241 -4284.81 0.76684 1.27973 -0.08778 -4285.79 0.73559 1.21434 0.62745 -4286.78 0.68553 1.19230 0.88359 -4287.77 0.70629 1.09316 0.40830 -4288.76 0.72217 1.30048 -0.11362 -4289.74 0.65128 1.37408 -0.68889 -4290.73 0.57672 1.51179 -1.05131 -4291.72 0.58170 1.27482 -1.10051 -4292.71 0.67822 1.27229 -0.66458 -4293.70 0.74128 1.60595 -0.42686 -4294.69 0.72998 1.39492 -0.46071 -4295.67 0.70408 1.33476 -0.21833 -4296.66 0.69437 1.17403 0.06550 -4297.65 0.67952 0.90177 0.78693 -4298.64 0.61481 0.89314 0.53167 -4299.63 0.52181 1.08065 0.25166 -4300.62 0.45676 0.91322 0.15187 -4301.61 0.46280 0.78889 -0.12251 -4302.60 0.50623 0.91686 0.02615 -4303.59 0.51462 0.88377 -0.07480 -4304.59 0.51155 0.84058 0.68149 -4305.58 0.52298 0.88178 1.01334 -4306.57 0.51521 1.11513 0.18227 -4307.56 0.46784 1.15810 -0.43067 -4308.55 0.41784 1.12634 -0.27340 -4309.54 0.39633 1.16732 0.12608 -4310.54 0.41968 0.93054 0.46770 -4311.53 0.46828 0.74562 0.74192 -4312.52 0.52089 0.68541 0.92807 -4313.52 0.59383 0.76587 0.86965 -4314.51 0.66488 0.93287 1.03091 -4315.50 0.75249 0.98595 0.83156 -4316.50 0.89033 1.00312 0.34188 -4317.49 1.01331 1.04502 0.24428 -4318.48 1.04140 1.02960 0.25323 -4319.48 1.02015 1.33758 0.09806 -4320.47 0.97900 1.24586 0.40522 -4321.47 0.95189 1.17824 0.64440 -4322.46 0.92006 1.48337 0.57300 -4323.46 0.83454 1.38133 0.74596 -4324.45 0.69659 1.15170 0.55117 -4325.45 0.54592 1.19015 0.11623 -4326.45 0.49191 1.25339 -0.35930 -4327.44 0.59290 1.23587 -0.80348 -4328.44 0.78020 1.07568 -0.94661 -4329.44 0.92207 0.88616 -0.66964 -4330.43 0.95371 1.07546 0.58912 -4331.43 0.92986 1.10760 1.32716 -4332.43 0.92876 0.95342 1.22069 -4333.43 0.96343 1.03312 1.40769 -4334.42 0.97006 0.96699 1.84401 -4335.42 0.99387 0.64143 1.61560 -4336.42 1.01192 0.79040 0.83354 -4337.42 0.93198 0.87189 0.22265 -4338.42 0.79701 0.86288 0.31390 -4339.42 0.70560 0.80439 1.10276 -4340.42 0.66388 0.53039 0.73583 -4341.42 0.64926 0.40320 1.05633 -4342.42 0.73571 0.33646 1.18605 -4343.42 0.83916 0.58360 0.94556 -4344.42 0.87483 0.66886 1.00166 -4345.42 0.89708 0.59069 0.67509 -4346.42 0.93745 0.69953 0.50409 -4347.42 0.94641 0.94679 1.09847 -4348.42 0.92621 0.80819 1.49423 -4349.42 0.97605 0.80883 1.58530 -4350.42 1.01433 0.87760 0.94580 -4351.42 0.91333 1.08973 0.96543 -4352.43 0.75070 1.03366 0.92843 -4353.43 0.69956 0.96645 0.32763 -4354.43 0.78623 1.08938 0.33680 -4355.43 0.84336 0.97102 0.88879 -4356.44 0.86046 0.86769 0.79691 -4357.44 0.90429 0.95859 0.89273 -4358.44 0.92350 1.14284 0.33367 -4359.45 0.87261 1.05781 1.29622 -4360.45 0.83255 1.03864 1.86510 -4361.45 0.90460 1.13348 1.23765 -4362.46 0.97590 0.97884 1.15648 -4363.46 0.96596 0.88228 1.56989 -4364.47 0.94885 0.77040 1.27912 -4365.47 0.99918 0.72046 1.18539 -4366.48 1.02243 0.95538 1.55172 -4367.48 0.94119 0.91696 1.47322 -4368.49 0.86669 1.14255 1.49437 -4369.50 0.86745 1.22812 1.09080 -4370.50 0.89211 1.01171 1.19629 -4371.51 0.89003 0.96893 1.01450 -4372.52 0.88722 0.88580 0.65622 -4373.52 0.86705 0.99516 0.80555 -4374.53 0.79591 1.04397 0.96951 -4375.54 0.72501 1.09135 0.75025 -4376.54 0.72169 1.08921 -0.04385 -4377.55 0.79363 1.04179 -0.41826 -4378.56 0.88489 0.93743 -0.27254 -4379.57 0.91110 0.95340 -0.14946 -4380.58 0.88056 0.86331 -0.63735 -4381.59 0.84462 1.23331 -1.35992 -4382.60 0.76546 1.46870 -1.61146 -4383.60 0.59501 1.39067 -1.71178 -4384.61 0.44527 1.25839 -1.05965 -4385.62 0.48090 1.07264 -0.68393 -4386.63 0.65478 1.03323 -0.99844 -4387.64 0.78304 1.03670 -1.12695 -4388.65 0.80615 1.06898 -0.58376 -4389.66 0.78853 0.98715 -0.31597 -4390.68 0.76421 0.95344 0.33012 -4391.69 0.76118 0.88841 0.99803 -4392.70 0.80010 1.08061 0.62101 -4393.71 0.84588 1.12307 0.76975 -4394.72 0.83622 1.05728 1.09510 -4395.73 0.81663 1.00732 1.26247 -4396.75 0.85151 0.90026 1.16159 -4397.76 0.93409 0.75894 1.11875 -4398.77 0.96993 0.79038 1.28235 -4399.78 0.91925 0.87527 1.64577 -4400.80 0.84122 0.88684 1.72258 -4401.81 0.80951 1.08399 1.10023 -4402.82 0.85627 1.00287 -0.32584 -4403.84 0.85731 1.13241 -0.85873 -4404.85 0.70955 1.27772 -1.30666 -4405.87 0.60515 1.46205 -1.52496 -4406.88 0.68226 1.46990 -1.50588 -4407.90 0.76815 1.29831 -1.58076 -4408.91 0.77189 1.24220 -0.26889 -4409.93 0.81065 1.18944 0.65887 -4410.94 0.91192 1.08139 0.88596 -4411.96 0.97699 0.99976 1.02470 -4412.97 1.00567 1.03488 0.95473 -4413.99 0.99305 1.21300 0.45834 -4415.01 0.88609 1.36331 -0.26719 -4416.02 0.75708 1.35059 -0.73119 -4417.04 0.76272 1.25056 -0.36344 -4418.06 0.86481 1.08322 0.40153 -4419.07 0.94812 1.01181 1.32224 -4420.09 1.00572 0.91052 1.72540 -4421.11 1.02266 1.09503 2.00352 -4422.13 0.95938 1.35066 2.01847 -4423.15 0.87820 1.58255 1.22349 -4424.17 0.86028 1.30329 0.81143 -4425.18 0.89230 1.08601 0.72661 -4426.20 0.90848 1.23348 0.02993 -4427.22 0.89133 1.24478 -0.61811 -4428.24 0.90708 1.16566 -0.24493 -4429.26 0.94411 1.13606 0.20446 -4430.28 0.92290 1.21412 0.90055 -4431.30 0.87268 1.31761 1.44742 -4432.32 0.89542 1.25881 0.96988 -4433.34 0.93337 1.15284 0.70973 -4434.36 0.89006 1.14443 0.21086 -4435.39 0.79895 1.20473 -0.77747 -4436.41 0.77147 1.24410 -0.43847 -4437.43 0.84012 1.19692 -0.37076 -4438.45 0.95088 1.11633 0.27774 -4439.47 1.02235 0.91607 1.01752 -4440.49 1.02067 1.08796 1.10122 -4441.52 0.95323 1.17323 1.38053 -4442.54 0.87018 1.06588 0.89234 -4443.56 0.83192 1.16662 0.79314 -4444.59 0.85929 1.10488 0.96270 -4445.61 0.94911 1.03744 1.23490 -4446.63 1.01595 0.92820 1.30859 -4447.66 1.00159 0.89826 1.31805 -4448.68 0.98431 0.85663 0.92489 -4449.71 1.00046 0.79421 1.36781 -4450.73 0.99651 0.90026 1.65587 -4451.76 0.97402 0.89710 1.47604 -4452.78 0.97127 0.99395 0.85544 -4453.81 0.94481 1.11689 -0.04885 -4454.83 0.86719 1.09678 -0.71048 -4455.86 0.78553 1.04947 -1.67276 -4456.88 0.77894 0.97155 -1.53235 -4457.91 0.82895 0.90382 -0.75554 -4458.94 0.83045 0.95602 -0.24382 -4459.96 0.80399 1.14300 -0.16753 -4460.99 0.79610 1.19642 -0.31790 -4462.02 0.77337 1.17848 0.09298 -4463.05 0.77799 1.10183 0.41153 -4464.07 0.85717 1.12703 0.64691 -4465.10 0.93062 0.91402 1.05361 -4466.13 0.92533 0.93024 0.97515 -4467.16 0.91569 1.13635 1.12603 -4468.19 0.92664 1.04350 0.80555 -4469.22 0.91694 0.97296 1.23771 -4470.25 0.88781 0.99316 1.63109 -4471.27 0.88571 0.89422 1.35537 -4472.30 0.93337 0.88610 1.53458 -4473.33 0.98457 0.86935 2.00827 -4474.36 1.02274 0.95356 1.48148 -4475.39 1.02844 0.98278 0.94265 -4476.43 1.01478 0.78879 0.72957 -4477.46 1.04820 0.68802 0.38490 -4478.49 1.08653 0.63260 1.26688 -4479.52 1.05677 0.70132 1.45298 -4480.55 0.96140 0.95453 1.44985 -4481.58 0.87951 1.05207 1.21280 -4482.61 0.85057 0.87556 0.89192 -4483.65 0.89559 0.82489 0.73440 -4484.68 0.97790 0.74412 0.64855 -4485.71 1.05146 0.64698 1.31490 -4486.74 1.06946 0.82034 1.62711 -4487.78 1.06077 0.71960 1.85282 -4488.81 1.00415 0.83996 1.81386 -4489.85 0.91736 0.92840 1.04994 -4490.88 0.89679 0.93740 1.41962 -4491.91 0.93425 0.85526 1.40460 -4492.95 0.99543 0.86932 1.23345 -4493.98 0.98591 0.86989 1.51011 -4495.02 0.91406 1.13739 1.30828 -4496.05 0.86234 1.14916 0.92485 -4497.09 0.89008 1.15701 1.10027 -4498.12 0.95314 1.04745 1.17718 -4499.16 1.01479 0.98497 1.27748 -4500.20 1.04277 0.68499 1.53391 -4501.23 1.01224 0.72652 2.06879 -4502.27 0.96630 0.92163 1.82724 -4503.30 0.99230 0.90689 1.51567 -4504.34 1.08424 0.56932 1.64778 -4505.38 1.12741 0.45688 1.70585 -4506.42 1.11238 0.68210 1.76606 -4507.45 1.08874 0.78853 1.66030 -4508.49 1.06233 0.78177 2.11140 -4509.53 1.05791 0.72587 1.20206 -4510.57 1.08348 0.62440 1.99228 -4511.61 1.08752 0.66651 2.10811 -4512.65 1.05417 0.65214 1.70288 -4513.69 1.01411 0.93699 1.39474 -4514.73 0.96996 0.90046 1.39401 -4515.77 0.97280 0.73236 1.78893 -4516.81 0.99719 0.86275 1.77740 -4517.85 0.99056 0.89363 1.65705 -4518.89 0.97086 0.81683 1.28889 -4519.93 0.98459 0.64481 1.33435 -4520.97 1.04020 0.62497 1.37861 -4522.01 1.05774 0.58033 1.07271 -4523.05 1.03100 0.60618 1.77206 -4524.09 0.98737 0.72802 2.10433 -4525.13 0.96557 0.91049 1.19272 -4526.18 0.93776 0.96063 0.42893 -4527.22 0.86973 0.91195 0.17296 -4528.26 0.81453 1.10491 -0.22849 -4529.30 0.78411 1.02019 -0.09152 -4530.35 0.78717 0.70883 -0.05675 -4531.39 0.82555 0.71562 0.15407 -4532.43 0.87450 0.88857 0.30904 -4533.48 0.90631 0.82283 0.19111 -4534.52 0.88843 0.78119 -0.09205 -4535.56 0.82916 0.85159 -0.61902 -4536.61 0.82605 0.83452 -0.42964 -4537.65 0.93737 0.88040 0.23061 -4538.70 1.03868 0.73418 0.90056 -4539.74 1.02944 0.78320 1.49882 -4540.79 0.97924 0.96984 1.30178 -4541.83 0.94759 0.92293 1.43956 -4542.88 0.96340 0.90479 1.28709 -4543.93 1.00579 0.80476 1.06651 -4544.97 0.98713 0.87313 1.40237 -4546.02 0.94520 0.96364 1.37111 -4547.07 0.94298 0.88363 0.97622 -4548.11 0.96939 0.67037 0.92792 -4549.16 0.95273 0.72980 1.19119 -4550.21 0.91746 0.54136 1.72873 -4551.26 0.93652 0.60070 1.44446 -4552.30 0.97058 0.62926 1.48386 -4553.35 0.96124 0.77609 1.40152 -4554.40 0.94154 0.91143 1.46842 -4555.45 0.93095 0.77085 1.39007 -4556.50 0.93602 0.82781 1.44618 -4557.55 0.99045 0.51586 1.33568 -4558.60 1.05514 0.43215 1.61329 -4559.65 1.08573 0.52239 2.66767 -4560.70 1.07884 0.64533 1.84457 -4561.75 1.07357 0.62310 2.46292 -4562.80 1.08121 0.61951 2.25594 -4563.85 1.05178 0.80116 1.98367 -4564.90 0.97904 0.88121 2.35173 -4565.95 0.92734 0.93361 2.21127 -4567.00 0.96005 0.78809 2.06177 -4568.06 1.04197 0.42489 1.96045 -4569.11 1.08157 0.48704 2.07979 -4570.16 1.07887 0.63313 1.99346 -4571.21 1.03990 0.87447 1.60723 -4572.26 0.97624 0.78674 1.65120 -4573.32 0.99547 0.61832 1.58856 -4574.37 1.06984 0.68217 2.04839 -4575.42 1.08265 0.71008 1.89112 -4576.48 1.06553 0.69539 1.89607 -4577.53 1.07680 0.80263 2.33275 -4578.59 1.06982 0.89064 1.73933 -4579.64 1.01565 0.91734 1.61336 -4580.69 0.94630 1.14648 1.31148 -4581.75 0.90704 0.84632 1.45274 -4582.80 0.93846 0.61263 1.60272 -4583.86 0.99002 0.49949 1.94036 -4584.92 0.98847 0.50443 2.28439 -4585.97 0.95937 0.74604 1.44234 -4587.03 0.94838 0.80096 1.04940 -4588.08 0.98689 0.52221 1.41012 -4589.14 1.06765 0.51935 1.47542 -4590.20 1.10042 0.44333 1.73746 -4591.25 1.07833 0.40551 1.90626 -4592.31 1.02186 0.62272 1.54584 -4593.37 0.97966 0.57526 1.27650 -4594.43 0.98362 0.72069 1.65073 -4595.48 0.97081 0.84620 2.10238 -4596.54 0.96116 0.84571 1.50432 -4597.60 0.96548 0.78595 1.82291 -4598.66 0.97835 0.77434 2.05579 -4599.72 1.00240 0.79480 1.36102 -4600.78 0.99160 0.67879 1.29893 -4601.84 0.97270 0.54237 1.34904 -4602.90 0.99065 0.66436 1.19966 -4603.96 1.01481 0.66882 1.04911 -4605.02 1.00002 0.87854 1.12848 -4606.08 0.98781 0.76806 1.36974 -4607.14 0.99730 0.79579 1.35655 -4608.20 1.04809 0.74386 1.08171 -4609.26 1.11820 0.36864 1.04795 -4610.32 1.14708 0.27405 1.57379 -4611.38 1.11330 0.40450 2.07634 -4612.45 1.05987 0.53420 1.27200 -4613.51 1.03676 0.47415 1.26833 -4614.57 1.04210 0.47731 1.39902 -4615.63 1.06950 0.46864 1.46973 -4616.70 1.09231 0.28497 1.49694 -4617.76 1.09845 0.33521 1.51950 -4618.82 1.09136 0.31729 1.29348 -4619.89 1.06140 0.29556 1.32344 -4620.95 1.06264 0.40561 1.56515 -4622.02 1.09437 0.51329 1.54903 -4623.08 1.09297 0.52484 1.17286 -4624.14 1.07585 0.49827 1.52898 -4625.21 1.08820 0.55944 1.16096 -4626.27 1.08713 0.47056 0.51376 -4627.34 1.07202 0.26766 0.77252 -4628.40 1.08783 0.44622 1.40821 -4629.47 1.09680 0.58186 2.03204 -4630.54 1.07332 0.33696 2.00998 -4631.60 1.08922 0.38659 1.42041 -4632.67 1.11157 0.50586 1.50632 -4633.74 1.07686 0.55452 1.60852 -4634.80 1.04410 0.51944 1.64818 -4635.87 1.04803 0.46806 1.86813 -4636.94 1.05273 0.50326 1.30659 -4638.01 1.01673 0.58685 0.92685 -4639.07 0.98531 0.77209 0.83818 -4640.14 0.97116 0.69647 0.95481 -4641.21 0.99275 0.67410 0.93315 -4642.28 1.04063 0.68965 1.19007 -4643.35 1.06969 0.63403 1.09792 -4644.42 1.04605 0.62603 1.11224 -4645.49 1.01013 0.77035 1.04770 -4646.56 0.96306 1.01710 0.77501 -4647.63 0.90653 1.03961 0.46416 -4648.70 0.89537 0.74337 0.55001 -4649.77 0.94022 0.63210 0.92704 -4650.84 0.98246 0.74646 1.07964 -4651.91 1.03615 0.56405 0.97317 -4652.98 1.05897 0.45141 0.91865 -4654.05 1.06506 0.48996 1.06198 -4655.13 1.02524 0.56345 1.02783 -4656.20 0.97215 0.56287 1.33244 -4657.27 0.97938 0.57926 1.60486 -4658.34 1.02731 0.40130 1.69726 -4659.41 1.10676 0.31889 1.54981 -4660.49 1.14594 0.04643 1.65524 -4661.56 1.13441 0.19171 1.36788 -4662.63 1.08641 0.39295 1.93564 -4663.71 1.02251 0.47076 2.00462 -4664.78 1.00239 0.55314 1.20026 -4665.86 0.99935 0.65997 0.96733 -4666.93 0.94023 0.68786 1.08012 -4668.01 0.84354 0.76655 0.93553 -4669.08 0.82333 0.80523 0.41101 -4670.16 0.91130 0.64286 0.28684 -4671.23 1.01433 0.44468 1.27006 -4672.31 1.05699 0.35639 1.65505 -4673.38 1.04488 0.42297 0.91966 -4674.46 1.00887 0.56815 0.94333 -4675.54 1.00563 0.50509 0.95747 -4676.61 1.05392 0.39789 1.58000 -4677.69 1.08146 0.41942 1.43328 -4678.77 1.05460 0.44920 0.78300 -4679.84 0.99799 0.37863 1.35802 -4680.92 0.96502 0.41829 1.14980 -4682.00 0.95772 0.54824 1.28483 -4683.08 0.96986 0.53626 1.42253 -4684.16 1.00868 0.46196 1.24450 -4685.23 1.03597 0.35242 1.35187 -4686.31 1.03560 0.41817 1.14547 -4687.39 1.02505 0.53223 0.89683 -4688.47 1.00567 0.72485 1.03037 -4689.55 0.99405 0.69409 1.37062 -4690.63 0.99525 0.48139 0.82575 -4691.71 0.98962 0.63859 0.85207 -4692.79 0.98052 0.57535 1.01663 -4693.87 0.99014 0.56029 0.58746 -4694.95 1.01166 0.59588 0.84595 -4696.04 1.03538 0.57064 0.59399 -4697.12 1.05434 0.30278 0.83180 -4698.20 1.02685 0.38160 0.80785 -4699.28 0.94880 0.60896 0.65437 -4700.36 0.92581 0.65211 0.65736 -4701.44 0.94390 0.59071 0.12293 -4702.53 0.93299 0.60375 -0.32539 -4703.61 0.90674 0.53795 -0.53350 -4704.69 0.91411 0.36319 -0.26572 -4705.78 0.96407 0.31406 0.11806 -4706.86 0.98785 0.50457 0.01958 -4707.94 0.95604 0.44173 0.33933 -4709.03 0.92457 0.48054 0.06222 -4710.11 0.92313 0.60533 0.11943 -4711.20 0.95636 0.38181 0.46242 -4712.28 1.00852 0.30754 0.39204 -4713.37 1.02345 0.28044 0.85902 -4714.45 0.98296 0.45566 0.49007 -4715.54 0.94287 0.53066 0.74333 -4716.63 0.98014 0.48632 0.85766 -4717.71 1.05385 0.38395 0.61468 -4718.80 1.06888 0.37232 0.71889 -4719.88 1.08942 0.30248 0.79336 -4720.97 1.11272 0.11136 0.97532 -4722.06 1.10498 0.28322 1.08609 -4723.15 1.07977 0.41524 1.09887 -4724.23 1.07399 0.45207 0.93399 -4725.32 1.11125 0.37436 1.03770 -4726.41 1.12295 0.26717 1.34345 -4727.50 1.06393 0.46268 1.52202 -4728.59 0.97754 0.85302 1.43468 -4729.68 0.93293 0.79844 1.50729 -4730.76 0.94771 0.72279 1.19719 -4731.85 0.97148 0.55907 1.30781 -4732.94 1.00754 0.54585 1.61584 -4734.03 1.03732 0.48142 1.44883 -4735.12 1.05788 0.39773 1.36359 -4736.21 1.06271 0.40075 1.42541 -4737.31 1.01067 0.24073 1.07215 -4738.40 1.00723 0.39110 0.75049 -4739.49 1.06696 0.30348 1.15824 -4740.58 1.09231 0.36150 1.35661 -4741.67 1.05382 0.48212 1.20675 -4742.76 1.05856 0.58550 0.89292 -4743.85 1.09774 0.45929 1.57186 -4744.95 1.10028 0.51233 1.59737 -4746.04 1.08395 0.64053 1.19260 -4747.13 1.09561 0.44196 1.26753 -4748.23 1.13138 0.28154 1.48853 -4749.32 1.12203 0.32872 1.62932 -4750.41 1.11359 0.47667 1.48154 -4751.51 1.10959 0.36034 1.27510 -4752.60 1.09091 0.41353 1.44481 -4753.70 1.06860 0.48310 0.92084 -4754.79 1.04285 0.57100 0.56872 -4755.89 1.03387 0.41367 0.46357 -4756.98 1.03449 0.36112 0.56478 -4758.08 1.04970 0.38618 0.84315 -4759.17 1.07074 0.31954 1.03048 -4760.27 1.09292 0.49624 0.65796 -4761.36 1.09868 0.46978 0.84000 -4762.46 1.06431 0.47219 1.03579 -4763.56 1.02277 0.29609 1.13130 -4764.65 1.00867 0.44712 1.00654 -4765.75 0.98815 0.51813 1.19082 -4766.85 0.96026 0.54966 0.45472 -4767.95 0.97212 0.68930 0.15100 -4769.04 1.02731 0.50188 0.43511 -4770.14 1.08621 0.43257 0.83498 -4771.24 1.11014 0.46584 0.58585 -4772.34 1.07452 0.38870 0.43321 -4773.44 1.04880 0.37933 0.83043 -4774.54 1.08854 0.27318 0.53221 -4775.64 1.13642 0.40156 0.59024 -4776.74 1.13389 0.39514 0.73221 -4777.84 1.12566 0.31642 0.45939 -4778.94 1.15154 0.28754 0.58919 -4780.04 1.15010 0.32733 0.29156 -4781.14 1.12032 0.34809 0.28115 -4782.24 1.11402 0.62815 -0.17603 -4783.34 1.08630 0.64390 -0.08711 -4784.44 1.05377 0.44003 -0.24456 -4785.54 1.06333 0.54816 -0.33961 -4786.65 1.06789 0.50639 0.46156 -4787.75 1.04538 0.48938 0.78371 -4788.85 1.05237 0.34146 0.63074 -4789.95 1.05914 0.30867 0.69408 -4791.06 1.04949 0.45378 0.66473 -4792.16 1.06019 0.43057 0.76069 -4793.26 1.08306 0.42676 0.49577 -4794.37 1.12965 0.18542 1.04866 -4795.47 1.17880 0.28857 0.99712 -4796.58 1.18069 0.26848 0.88884 -4797.68 1.15602 0.35956 0.81959 -4798.79 1.11440 0.46747 1.00969 -4799.89 1.06560 0.44430 1.12727 -4801.00 1.04525 0.42941 0.99380 -4802.10 1.08632 0.30160 1.12611 -4803.21 1.15006 0.05700 1.05709 -4804.31 1.15874 0.04002 1.03650 -4805.42 1.12269 0.17628 1.13695 -4806.53 1.10368 0.18630 1.46715 -4807.63 1.08581 0.35634 1.03408 -4808.74 1.05712 0.37705 0.79515 -4809.85 1.06291 0.37100 1.00086 -4810.96 1.09742 0.44287 0.93429 -4812.06 1.11894 0.32087 0.98864 -4813.17 1.11481 0.28010 1.10589 -4814.28 1.09928 0.27828 1.08500 -4815.39 1.11252 0.44333 0.97577 -4816.50 1.13376 0.37755 1.05720 -4817.61 1.15346 0.21083 1.06097 -4818.72 1.15206 0.09177 0.85434 -4819.83 1.16606 0.01844 0.88805 -4820.94 1.17034 0.05181 0.74373 -4822.05 1.15244 0.16056 0.51966 -4823.16 1.11685 0.28833 0.12161 -4824.27 1.05249 0.39099 -0.39937 -4825.38 1.03620 0.32169 -0.03768 -4826.49 1.09227 0.13157 0.32503 -4827.60 1.12358 0.26295 0.10845 -4828.71 1.09884 0.41918 0.32943 -4829.82 1.07697 0.26782 0.36954 -4830.94 1.07663 0.20822 -0.12408 -4832.05 1.06634 0.34212 0.01121 -4833.16 1.03649 0.53936 -0.05923 -4834.27 1.05137 0.36766 -0.05222 -4835.39 1.09183 0.24276 -0.10214 -4836.50 1.09466 0.06838 0.07720 -4837.62 1.09675 0.17624 0.27170 -4838.73 1.08797 0.20454 0.10531 -4839.84 1.05168 0.18214 -0.10349 -4840.96 1.01555 0.20182 0.22626 -4842.07 1.02686 0.17460 -0.23383 -4843.19 1.04519 0.29214 -0.25967 -4844.30 1.03549 0.28816 -0.01752 -4845.42 1.05370 0.26420 0.01825 -4846.53 1.10086 0.11697 -0.09730 -4847.65 1.11085 0.09787 0.02751 -4848.77 1.06984 0.18826 0.15460 -4849.88 1.04706 0.19229 0.30368 -4851.00 1.07115 0.21072 0.51682 -4852.12 1.08495 0.10310 -0.15574 -4853.24 1.08182 0.01105 -0.21848 -4854.35 1.07629 0.07671 0.25094 -4855.47 1.01978 0.17803 0.46764 -4856.59 0.95941 0.04768 0.29008 -4857.71 0.98627 0.03071 0.18363 -4858.83 1.02463 -0.12008 0.13900 -4859.94 0.97471 -0.21735 -0.47875 -4861.06 0.84406 -0.28872 -0.19121 -4862.18 0.74184 -0.37849 0.44035 -4863.30 0.78892 -0.33144 0.16334 -4864.42 0.90560 -0.21737 0.11049 -4865.54 0.96707 -0.00696 0.18209 -4866.66 1.00601 0.14453 0.17375 -4867.78 1.03252 0.15473 0.04658 -4868.91 1.02714 0.18921 0.33529 -4870.03 1.02545 0.26154 0.03341 -4871.15 0.96783 0.27378 -0.48942 -4872.27 0.86955 0.33074 -1.44878 -4873.39 0.86350 0.19237 -1.11912 -4874.51 0.96255 0.21745 -0.67653 -4875.64 1.01112 0.26765 -0.04347 -4876.76 1.01501 0.23144 0.30899 -4877.88 1.02875 0.14574 0.29331 -4879.01 1.04451 0.03018 -0.08388 -4880.13 1.08725 -0.21654 -0.02308 -4881.25 1.10265 0.08513 -0.15431 -4882.38 1.05124 0.40777 0.50946 -4883.50 1.03991 0.21542 0.60418 -4884.63 1.06313 0.14666 0.96145 -4885.75 1.02396 0.15377 0.90289 -4886.88 0.95978 0.31507 0.32185 -4888.00 0.95826 0.24315 0.29909 -4889.13 0.98729 0.12156 0.21399 -4890.25 0.98087 0.28294 -0.43890 -4891.38 0.90277 0.28690 -0.92620 -4892.51 0.86623 0.23082 -1.46677 -4893.63 0.96111 0.22968 -1.14596 -4894.76 1.09643 0.03394 0.00006 -4895.89 1.16034 -0.05455 0.99354 -4897.01 1.16233 -0.12922 1.11065 -4898.14 1.14865 -0.28045 0.84818 -4899.27 1.13940 0.05380 1.31157 -4900.40 1.09434 0.20810 1.10647 -4901.53 1.07309 0.10051 1.50692 -4902.66 1.08349 0.16571 0.95428 -4903.78 1.06135 0.20679 0.45752 -4904.91 1.03166 0.11293 0.50790 -4906.04 1.07316 0.16295 0.85583 -4907.17 1.12192 -0.00452 1.04778 -4908.30 1.10989 -0.01009 1.04709 -4909.43 1.05480 0.25578 1.12001 -4910.56 0.99424 0.37204 1.01340 -4911.69 0.96114 0.21612 1.10824 -4912.83 0.98738 0.12855 1.39871 -4913.96 1.03773 0.18598 1.52578 -4915.09 1.06590 0.09427 1.53313 -4916.22 1.09685 0.06039 1.62065 -4917.35 1.09405 0.10235 1.02341 -4918.48 1.01150 0.15593 0.52101 -4919.62 0.88365 0.30237 -0.26515 -4920.75 0.78121 0.52156 -1.49422 -4921.88 0.79453 0.37801 -1.19228 -4923.02 0.90220 0.22161 -0.51505 -4924.15 0.97440 0.19125 0.17812 -4925.28 0.97181 0.30087 1.02140 -4926.42 0.98853 0.34600 1.01293 -4927.55 1.04243 0.12818 1.06909 -4928.69 1.07079 0.14929 1.45856 -4929.82 1.09828 -0.05423 1.62066 -4930.96 1.11973 0.00649 1.64651 -4932.09 1.12024 0.01261 1.15093 -4933.23 1.09279 -0.06431 1.22006 -4934.37 1.02248 0.10229 1.58822 -4935.50 1.00146 0.10863 1.60121 -4936.64 1.05173 0.05989 1.29938 -4937.78 1.02690 0.21380 0.64052 -4938.91 0.94480 0.42343 -0.17635 -4940.05 0.90478 0.35242 0.03829 -4941.19 0.98032 0.04714 0.16939 -4942.33 1.07904 0.07195 -0.03055 -4943.46 1.11715 0.05993 0.76507 -4944.60 1.13840 -0.04183 0.82934 -4945.74 1.13243 0.05068 0.67812 -4946.88 1.09233 0.04247 0.90451 -4948.02 1.09456 -0.01143 0.98020 -4949.16 1.13443 0.02493 0.64922 -4950.30 1.15124 0.12985 0.66058 -4951.44 1.14608 -0.05043 0.71725 -4952.58 1.15597 -0.11305 0.94321 -4953.72 1.14262 -0.05871 0.61643 -4954.86 1.12072 -0.11970 0.25602 -4956.00 1.12949 -0.14307 -0.06972 -4957.14 1.05464 0.09266 -1.11686 -4958.28 0.90133 0.12234 -1.68998 -4959.43 0.89793 0.19150 -1.69807 -4960.57 1.06956 -0.07266 -1.17589 -4961.71 1.16952 -0.24087 -0.05897 -4962.85 1.15398 -0.17097 0.29884 -4964.00 1.16091 -0.02056 0.18350 -4965.14 1.14519 0.03649 0.09739 -4966.28 1.08809 0.19309 0.21875 -4967.43 1.05438 0.17674 0.72432 -4968.57 1.05463 0.13970 0.04172 -4969.71 1.06825 0.24713 -0.31440 -4970.86 1.07081 0.12919 0.18433 -4972.00 1.09783 0.04591 0.22033 -4973.15 1.13434 -0.11654 0.68792 -4974.29 1.15677 -0.06354 0.24732 -4975.44 1.16338 -0.11261 0.02703 -4976.58 1.15356 -0.04866 0.46201 -4977.73 1.12808 0.13120 0.85166 -4978.88 1.08368 0.17458 0.30494 -4980.02 1.05464 0.23929 -0.02004 -4981.17 1.05456 0.20620 -0.01924 -4982.32 1.02400 0.23963 -1.17718 -4983.46 0.94457 0.26458 -1.23849 -4984.61 0.90703 0.12473 -1.52475 -4985.76 0.94234 0.15028 -1.41610 -4986.91 1.00462 0.13032 -0.63064 -4988.06 1.07597 0.06779 -0.34276 -4989.21 1.12000 0.07030 -0.43344 -4990.35 1.09985 0.22724 -0.52847 -4991.50 1.07125 0.11329 -0.25674 -4992.65 1.07325 0.12813 -0.09979 -4993.80 1.08592 0.09929 0.00355 -4994.95 1.07990 -0.02317 -0.13285 -4996.10 1.08902 0.08664 -0.19303 -4997.25 1.10142 0.22512 -0.19341 -4998.40 1.10535 0.13260 -0.08922 -4999.55 1.07848 0.13001 -0.03877 -5000.71 1.03761 0.20936 -0.41002 -5001.86 1.00340 0.18012 -0.48840 -5003.01 0.99908 0.11092 -0.94526 -5004.16 1.01890 0.08255 -0.68900 -5005.31 1.00784 0.43413 -0.26587 -5006.47 0.94322 0.37601 -0.68630 -5007.62 0.91558 0.34387 -1.46880 -5008.77 0.99182 0.19902 -1.44232 -5009.93 1.06679 0.05093 -1.18529 -5011.08 1.07399 0.24234 -0.24186 -5012.23 1.03288 0.28310 -0.52124 -5013.39 0.96505 0.24955 -0.73455 -5014.54 0.91574 0.46676 -0.84060 -5015.70 0.92435 0.45369 -0.92936 -5016.85 0.97648 0.21949 -0.84963 -5018.01 0.99571 0.05720 -0.74906 -5019.16 0.96767 0.03089 0.00925 -5020.32 0.98870 0.21434 -0.06826 -5021.48 1.02157 0.21020 -0.26486 -5022.63 1.00180 0.41766 -0.47215 -5023.79 0.98878 0.39592 -1.05222 -5024.95 1.02872 0.09716 -0.48841 -5026.10 1.06376 -0.03254 -0.19954 -5027.26 1.04738 0.17800 -0.37796 -5028.42 1.00386 0.11993 -0.11046 -5029.58 1.01687 0.16831 -0.63868 -5030.73 1.07044 0.28787 -0.81440 -5031.89 1.10130 0.05570 -0.18304 -5033.05 1.12145 0.01807 -0.18123 -5034.21 1.16021 -0.10204 -0.47643 -5035.37 1.14143 -0.07492 -0.39324 -5036.53 1.04462 0.08730 -0.84803 -5037.69 1.01224 -0.01244 -0.65924 -5038.85 1.03446 0.24316 -0.83027 -5040.01 1.00821 0.27759 -0.98036 -5041.17 0.89846 0.43134 -0.93985 -5042.33 0.83212 0.51657 -1.05333 -5043.49 0.91675 0.36507 -0.82176 -5044.65 1.04968 0.20949 -1.15417 -5045.82 1.11362 0.11775 -0.49254 -5046.98 1.15822 -0.19289 -0.47801 -5048.14 1.15153 -0.05236 -0.65080 -5049.30 1.05551 0.15071 -0.52686 -5050.46 0.99158 0.13442 -1.26422 -5051.63 0.99933 0.14644 -1.49113 -5052.79 1.01247 0.24662 -1.39079 -5053.95 1.03900 0.23539 -0.66711 -5055.12 1.09123 0.07960 -0.88475 -5056.28 1.12902 0.06775 -1.03793 -5057.45 1.12270 0.18138 -1.16954 -5058.61 1.12215 0.18795 -0.75137 -5059.78 1.13306 0.06783 -0.28288 -5060.94 1.13565 -0.03184 -0.52619 -5062.11 1.15543 -0.07520 -0.98185 -5063.27 1.16692 0.01743 -1.21684 -5064.44 1.12304 0.20270 -0.86709 -5065.61 1.04031 0.26370 -0.88835 -5066.77 1.01454 0.24744 -1.27347 -5067.94 1.03878 0.27446 -1.61666 -5069.11 1.03304 0.23262 -1.61473 -5070.27 1.03433 0.21693 -1.80782 -5071.44 1.07891 0.22009 -1.36055 -5072.61 1.06993 0.30539 -1.18992 -5073.78 1.03185 0.22953 -1.28479 -5074.95 1.06193 0.13118 -1.05862 -5076.11 1.07773 -0.01500 -1.00899 -5077.28 1.06112 0.08236 -1.74811 -5078.45 1.07590 0.08381 -1.68911 -5079.62 1.03127 0.12013 -0.96324 -5080.79 0.91681 0.31347 -0.79633 -5081.96 0.91434 0.32674 -1.28012 -5083.13 0.98145 0.44012 -1.69356 -5084.30 0.99220 0.30555 -1.47836 -5085.47 1.01556 0.33744 -1.52446 -5086.64 1.06324 0.26081 -1.27870 -5087.82 1.07742 0.24779 -0.95887 -5088.99 1.07181 0.26088 -0.98125 -5090.16 1.08205 0.11337 -1.16371 -5091.33 1.09250 -0.00119 -1.17153 -5092.50 1.09732 0.17592 -1.47096 -5093.68 1.12423 0.04931 -0.83654 -5094.85 1.14722 -0.15612 -0.62962 -5096.02 1.12070 0.18188 -1.39125 -5097.20 1.07029 0.22895 -1.55248 -5098.37 1.01694 0.02487 -1.00296 -5099.54 0.94971 0.11635 -1.06755 -5100.72 0.94688 0.31181 -1.27744 -5101.89 1.03408 0.20413 -1.76813 -5103.07 1.09394 -0.04593 -1.87160 -5104.24 1.07832 0.17480 -1.46731 -5105.42 1.05152 0.24820 -1.43414 -5106.59 1.04327 0.22147 -1.44818 -5107.77 1.00996 0.28706 -1.40874 -5108.95 0.98234 0.42132 -1.57794 -5110.12 0.98575 0.35797 -1.61741 -5111.30 0.99092 0.27035 -1.37506 -5112.48 1.02180 0.23446 -1.72388 -5113.65 1.06176 0.24112 -1.81000 -5114.83 1.07858 0.14557 -1.27541 -5116.01 1.07990 0.04569 -0.85426 -5117.19 1.08835 0.02376 -1.21182 -5118.37 1.11517 0.11009 -1.42550 -5119.54 1.12991 0.05280 -1.07205 -5120.72 1.10487 0.08779 -1.56888 -5121.90 1.05959 0.24557 -1.51552 -5123.08 1.01503 0.30069 -1.12455 -5124.26 0.96835 0.46283 -1.21643 -5125.44 0.93912 0.44971 -1.46920 -5126.62 0.95417 0.31511 -1.43839 -5127.80 0.97074 0.26311 -1.34382 -5128.98 0.97493 0.31681 -1.36193 -5130.17 0.96097 0.44911 -1.47521 -5131.35 0.97622 0.28989 -1.56274 -5132.53 1.02896 0.27572 -1.23800 -5133.71 1.03678 0.09183 -1.12505 -5134.89 1.03193 0.10389 -1.66568 -5136.07 1.06027 0.11664 -1.64508 -5137.26 1.05264 0.13817 -1.43749 -5138.44 0.99783 0.12625 -1.20475 -5139.62 0.94827 0.18254 -1.82087 -5140.81 0.94002 0.25173 -2.07269 -5141.99 0.98437 0.10407 -1.57822 -5143.18 0.96574 0.17020 -1.33479 -5144.36 0.95008 0.21888 -0.94577 -5145.54 0.98956 0.16711 -1.43403 -5146.73 0.98607 0.27145 -1.45084 -5147.91 0.95757 0.37526 -1.40801 -5149.10 0.96193 0.32539 -1.41311 -5150.29 0.99001 0.26035 -1.79642 -5151.47 0.98813 0.31231 -1.82816 -5152.66 0.96181 0.37766 -1.26488 -5153.84 0.95905 0.51700 -1.44740 -5155.03 0.97159 0.51188 -2.10951 -5156.22 0.98519 0.21672 -1.99402 -5157.41 1.03205 0.00812 -1.40251 -5158.59 1.06729 -0.06097 -1.18988 -5159.78 1.07206 0.04495 -1.31472 -5160.97 1.06693 -0.03258 -1.41248 -5162.16 1.05535 -0.23008 -1.48389 -5163.35 1.01151 -0.02931 -1.77616 -5164.54 0.97273 0.17598 -1.58258 -5165.73 0.92576 0.20381 -2.03690 -5166.92 0.81006 0.47654 -2.25048 -5168.11 0.68199 0.66742 -2.60893 -5169.30 0.66406 0.56196 -2.72326 -5170.49 0.79234 0.49406 -3.12220 -5171.68 0.86299 0.42733 -3.56156 -5172.87 0.71048 0.62021 -3.07641 -5174.06 0.60969 0.68800 -3.08755 -5175.25 0.76685 0.58833 -4.05374 -5176.44 0.95645 0.35455 -3.74408 -5177.63 1.00984 0.48985 -3.31193 -5178.83 1.02708 0.35823 -2.63412 -5180.02 1.03825 0.36680 -3.43297 -5181.21 1.00881 0.47859 -3.82573 -5182.40 0.93018 0.69155 -3.94177 -5183.60 0.74156 0.63678 -3.53603 -5184.79 0.59364 0.71436 -3.19694 -5185.99 0.69642 0.49831 -3.10237 -5187.18 0.92488 0.21748 -3.72999 -5188.37 1.02566 0.03229 -2.86044 -5189.57 1.03370 -0.12074 -2.01502 -5190.76 1.05929 -0.16010 -2.07298 -5191.96 1.02137 -0.05665 -2.17953 -5193.16 0.91080 0.16679 -2.11096 -5194.35 0.91513 0.16841 -1.70691 -5195.55 0.97530 0.19401 -1.68068 -5196.74 0.98818 0.01776 -1.34403 -5197.94 0.99860 -0.05298 -1.03764 -5199.14 1.04286 -0.13617 -0.52682 -5200.34 1.07857 -0.09065 -0.53983 -5201.53 1.09166 -0.03752 -0.96573 -5202.73 1.07207 0.00627 -1.26979 -5203.93 1.05139 0.12431 -1.60656 -5205.13 0.99713 0.31515 -2.38287 -5206.33 0.91334 0.49587 -3.27979 -5207.52 0.88247 0.44090 -3.62592 -5208.72 0.87995 0.56708 -3.90729 -5209.92 0.87022 0.58315 -3.70108 -5211.12 0.92490 0.55191 -3.50814 -5212.32 1.01742 0.26101 -1.71457 -5213.52 1.08798 0.05227 -0.70618 -5214.72 1.11046 -0.06141 -0.14429 -5215.93 1.05152 -0.01480 -0.43414 -5217.13 0.98883 0.04205 -0.86114 -5218.33 1.00331 -0.06525 -0.88729 -5219.53 1.06097 -0.17136 -0.34572 -5220.73 1.10390 -0.18191 0.00360 -5221.93 1.12360 -0.14140 0.06378 -5223.14 1.10418 -0.17206 0.33730 -5224.34 1.05840 0.05852 0.24192 -5225.54 0.99900 0.35326 -0.39026 -5226.75 0.90958 0.40865 -0.68691 -5227.95 0.83933 0.34833 -1.55955 -5229.15 0.90047 -0.03498 -1.54303 -5230.36 1.02750 -0.11998 -1.66942 -5231.56 1.07935 -0.10639 -1.27883 -5232.77 1.06202 -0.07881 -1.16797 -5233.97 0.99583 -0.16519 -1.93823 -5235.18 0.97997 -0.06035 -1.02332 -5236.38 1.02963 -0.07260 -0.02989 -5237.59 1.08420 -0.32511 0.24680 -5238.79 1.12121 -0.28654 0.13538 -5240.00 1.12953 -0.33792 0.08973 -5241.21 1.12202 -0.24139 0.49993 -5242.41 1.12594 -0.31536 0.49819 -5243.62 1.10984 -0.47789 0.17528 -5244.83 1.11337 -0.32885 0.24686 -5246.04 1.14579 -0.37421 0.16324 -5247.25 1.10146 0.01648 0.24228 -5248.45 1.03734 0.29069 0.21676 -5249.66 1.03421 0.15503 0.06724 -5250.87 1.03037 0.03703 0.53602 -5252.08 1.00949 0.07568 0.13393 -5253.29 1.04644 0.11877 -0.27446 -5254.50 1.06274 0.04174 0.13807 -5255.71 1.02620 0.03440 0.20924 -5256.92 1.03126 0.03638 0.41352 -5258.13 1.10603 -0.21900 0.25006 -5259.34 1.16578 -0.36131 0.34652 -5260.55 1.15860 -0.27499 0.33960 -5261.76 1.10612 -0.17213 0.05700 -5262.98 1.00683 0.00120 -0.38375 -5264.19 0.92293 0.16107 -1.12755 -5265.40 0.86809 0.22060 -1.05846 -5266.61 0.82700 0.35134 -1.18029 -5267.83 0.86067 0.09260 -1.47175 -5269.04 0.90760 0.20185 -2.11546 -5270.25 0.79566 0.30881 -2.19446 -5271.47 0.74936 0.51854 -2.35665 -5272.68 0.89568 0.02626 -1.83446 -5273.89 1.00887 -0.17313 -1.13942 -5275.11 1.00395 -0.16100 -0.64234 -5276.32 0.97854 -0.17928 -0.33799 -5277.54 1.02201 -0.25019 -0.15490 -5278.75 1.11262 -0.44368 -0.23771 -5279.97 1.14603 -0.37982 0.26972 -5281.18 1.09877 -0.25218 0.41104 -5282.40 1.04543 -0.14839 -0.19473 -5283.62 0.99494 0.04889 -0.85916 -5284.83 0.98014 -0.09533 -0.90420 -5286.05 1.04328 -0.28464 -0.59090 -5287.27 1.13754 -0.49450 -0.22768 -5288.49 1.16893 -0.39223 0.07762 -5289.70 1.15110 -0.31868 0.08877 -5290.92 1.16866 -0.47564 0.53736 -5292.14 1.18960 -0.47910 0.30785 -5293.36 1.16287 -0.42260 0.25153 -5294.58 1.13827 -0.43753 0.64902 -5295.80 1.12783 -0.37599 0.86721 -5297.02 1.08277 -0.12771 0.05639 -5298.24 0.98514 0.17944 -0.51205 -5299.46 0.94602 0.05785 -0.47052 -5300.68 1.01650 -0.16902 -0.71450 -5301.90 1.06076 -0.19906 -0.25726 -5303.12 1.05692 -0.30314 -0.00025 -5304.34 1.10138 -0.49261 -0.37851 -5305.56 1.16601 -0.66436 0.15783 -5306.78 1.17701 -0.56165 0.46512 -5308.01 1.15532 -0.45978 0.52290 -5309.23 1.14864 -0.43765 0.36991 -5310.45 1.17249 -0.69071 0.66588 -5311.67 1.19189 -0.65974 0.49546 -5312.90 1.18293 -0.48331 0.45787 -5314.12 1.16428 -0.53893 0.73631 -5315.34 1.15690 -0.53074 0.44474 -5316.57 1.13126 -0.53100 0.70765 -5317.79 1.11006 -0.56162 0.50704 -5319.02 1.12114 -0.55277 0.88371 -5320.24 1.13499 -0.44677 0.72710 -5321.47 1.12982 -0.40586 0.16585 -5322.69 1.11807 -0.38149 0.29056 -5323.92 1.08554 -0.36384 -0.48992 -5325.14 1.02034 -0.14927 -1.53918 -5326.37 1.01629 -0.32216 -1.54823 -5327.60 1.01231 -0.11195 -1.29092 -5328.82 0.86946 0.05952 -1.57077 -5330.05 0.80341 0.28437 -1.70779 -5331.28 0.96122 -0.15667 -1.44471 -5332.51 1.08548 -0.37587 -0.68061 -5333.73 1.08381 -0.35701 0.19974 -5334.96 1.10404 -0.51440 0.31078 -5336.19 1.15191 -0.52479 0.23992 -5337.42 1.15005 -0.36415 0.24965 -5338.65 1.13795 -0.43788 0.34307 -5339.88 1.10163 -0.31368 -0.28426 -5341.11 1.01450 -0.26291 -0.42275 -5342.34 0.98990 -0.22605 -0.59293 -5343.57 1.06439 -0.27380 -0.35503 -5344.80 1.12208 -0.37335 -0.24245 -5346.03 1.10533 -0.28263 -0.49743 -5347.26 1.08670 -0.28986 -0.11949 -5348.49 1.08357 -0.29955 -0.36896 -5349.72 1.05634 -0.34493 -0.22162 -5350.96 1.05045 -0.34918 -0.39702 -5352.19 1.10240 -0.45900 -0.08470 -5353.42 1.13512 -0.51099 0.25841 -5354.65 1.13832 -0.53565 0.48462 -5355.89 1.17063 -0.74224 0.41037 -5357.12 1.19958 -0.73244 0.58384 -5358.35 1.19509 -0.61868 0.72862 -5359.59 1.19154 -0.62677 0.66692 -5360.82 1.18890 -0.65744 0.55458 -5362.06 1.16509 -0.54485 0.20762 -5363.29 1.13208 -0.46639 0.48350 -5364.53 1.11566 -0.66223 0.46726 -5365.76 1.09205 -0.72210 0.25899 -5367.00 1.07275 -0.37982 -0.61962 -5368.23 1.08014 -0.42232 -0.77832 -5369.47 1.07016 -0.55178 -0.46969 -5370.71 1.01702 -0.16941 -0.89338 -5371.94 0.92620 -0.11723 -1.64401 -5373.18 0.94495 -0.13576 -2.25106 -5374.42 1.06628 -0.45205 -1.46176 -5375.65 1.15022 -0.72002 -0.25689 -5376.89 1.16339 -0.58532 0.17149 -5378.13 1.14208 -0.47188 0.11277 -5379.37 1.13116 -0.48789 0.38146 -5380.61 1.13896 -0.62156 0.51096 -5381.85 1.12300 -0.58740 0.31361 -5383.09 1.10429 -0.47054 0.11301 -5384.33 1.08820 -0.53180 -0.31286 -5385.57 1.10522 -0.69172 -0.55850 -5386.81 1.14140 -0.53826 0.16190 -5388.05 1.12907 -0.51300 0.47592 -5389.29 1.10932 -0.48150 0.36167 -5390.53 1.08779 -0.41510 0.30139 -5391.77 1.05420 -0.33700 0.17339 -5393.01 1.04382 -0.37822 -0.11862 -5394.25 1.03547 -0.45154 -0.16140 -5395.50 1.03780 -0.31562 -0.45848 -5396.74 1.02821 -0.16001 -0.30707 -5397.98 0.96650 0.00815 -0.75399 -5399.22 0.96757 -0.32656 -0.74458 -5400.47 1.03711 -0.46249 -0.57511 -5401.71 1.05860 -0.44237 -0.12439 -5402.95 1.07954 -0.40239 -0.12617 -5404.20 1.07149 -0.48025 -0.08901 -5405.44 0.97136 -0.13172 -1.03841 -5406.69 0.89269 -0.01604 -1.55809 -5407.93 0.93335 -0.21216 -1.18309 -5409.18 1.01816 -0.34694 -0.39574 -5410.42 1.01719 -0.26444 -0.81184 -5411.67 0.98735 -0.12680 -1.15485 -5412.92 1.05307 -0.62033 -0.44670 -5414.16 1.10804 -0.67058 -0.25785 -5415.41 1.09796 -0.64653 -0.17258 -5416.66 1.08585 -0.87378 -0.61343 -5417.90 1.11955 -0.75330 -0.34708 -5419.15 1.14122 -0.57574 0.48222 -5420.40 1.11141 -0.50937 0.93421 -5421.65 1.08433 -0.49679 0.69095 -5422.90 1.09034 -0.48454 -0.37564 -5424.15 1.08806 -0.48124 -0.44053 -5425.39 1.04612 -0.53032 -0.31254 -5426.64 1.06392 -0.52220 -0.10761 -5427.89 1.14669 -0.80737 0.06152 -5429.14 1.12783 -0.56901 -0.13766 -5430.39 1.00648 -0.34984 -0.71857 -5431.64 0.98317 -0.36802 -1.30806 -5432.90 1.05915 -0.38783 -0.62082 -5434.15 1.04488 -0.41421 -0.72941 -5435.40 0.98785 -0.31924 -0.76906 -5436.65 0.99360 -0.19478 -0.69548 -5437.90 1.03622 -0.41079 -0.36758 -5439.15 1.11115 -0.56152 0.12580 -5440.41 1.16303 -0.67679 0.16841 -5441.66 1.17201 -0.71558 0.40896 -5442.91 1.16412 -0.79102 0.44212 -5444.17 1.15922 -0.68560 0.41078 -5445.42 1.12935 -0.72364 -0.26588 -5446.67 1.03684 -0.52013 -0.74364 -5447.93 0.96636 -0.29523 -1.08144 -5449.18 1.01260 -0.31762 -1.02699 -5450.44 1.12449 -0.66745 -0.23611 -5451.69 1.15928 -0.81511 0.13928 -5452.95 1.14960 -0.65843 0.21470 -5454.20 1.13897 -0.49605 -0.04693 -5455.46 1.06733 -0.38139 -0.12776 -5456.72 0.98214 -0.26420 -0.72614 -5457.97 1.02876 -0.40045 -1.13947 -5459.23 1.14211 -0.67491 -0.42628 -5460.49 1.16951 -0.71096 0.48569 -5461.74 1.13892 -0.48353 0.49850 -5463.00 1.08479 -0.42100 0.05512 -5464.26 1.03513 -0.60995 -0.26493 -5465.52 1.06063 -0.69216 -0.40308 -5466.78 1.11526 -0.76163 -0.06030 -5468.04 1.11400 -0.72520 0.23806 -5469.30 1.12824 -0.64084 0.33664 -5470.55 1.12243 -0.64242 0.55668 -5471.81 1.09509 -0.36186 -0.06907 -5473.07 1.09375 -0.40967 0.37108 -5474.33 1.08154 -0.55159 0.27230 -5475.60 1.07230 -0.53690 -0.15451 -5476.86 1.03210 -0.35793 -0.18881 -5478.12 0.96671 -0.40445 -0.37925 -5479.38 1.00717 -0.37866 -0.43868 -5480.64 1.09383 -0.51621 -0.31079 -5481.90 1.05908 -0.43291 0.15742 -5483.17 1.01357 -0.17955 0.10724 -5484.43 1.05794 -0.30979 0.01978 -5485.69 1.12333 -0.68440 0.00517 -5486.95 1.14353 -0.65905 -0.05611 -5488.22 1.10447 -0.34698 0.28884 -5489.48 1.06318 -0.51385 0.17793 -5490.75 1.08402 -0.46992 0.14100 -5492.01 1.10786 -0.60287 0.54181 -5493.28 1.12009 -0.56604 0.51642 -5494.54 1.10012 -0.56638 0.19397 -5495.81 1.09370 -0.61195 0.38988 -5497.07 1.11030 -0.66778 -0.16133 -5498.34 1.09191 -0.56771 -0.28025 -5499.60 1.10279 -0.61818 -0.49284 -5500.87 1.14306 -0.70520 -0.60762 -5502.14 1.11884 -0.66441 -0.25328 -5503.40 1.07368 -0.64105 -0.03183 -5504.67 1.08360 -0.65407 0.03436 -5505.94 1.09587 -0.46219 -0.05931 -5507.21 1.06267 -0.35194 -0.17115 -5508.47 1.06281 -0.45936 -0.22438 -5509.74 1.10171 -0.54620 0.17690 -5511.01 1.10953 -0.66159 0.21588 -5512.28 1.08158 -0.57039 0.10769 -5513.55 1.03938 -0.25595 -0.39099 -5514.82 1.03097 -0.33481 -0.45174 -5516.09 1.05705 -0.46035 -0.38049 -5517.36 1.07951 -0.42361 -0.05676 -5518.63 1.10405 -0.48461 -0.05811 -5519.90 1.13875 -0.71259 0.23397 -5521.17 1.15039 -0.63826 0.25921 -5522.44 1.13764 -0.63685 0.04541 -5523.72 1.13290 -0.68925 0.65356 -5524.99 1.13432 -0.75672 0.61065 -5526.26 1.12004 -0.72802 0.30954 -5527.53 1.09116 -0.63836 -0.22538 -5528.81 1.04376 -0.47175 -0.74863 -5530.08 1.01239 -0.50858 -0.91672 -5531.35 1.07526 -0.83444 -0.51337 -5532.63 1.12574 -0.80777 -0.10704 -5533.90 1.11088 -0.64481 0.06364 -5535.17 1.10146 -0.71352 0.44617 -5536.45 1.08465 -0.70828 0.55112 -5537.72 1.08212 -0.71303 0.32380 -5539.00 1.10081 -0.50652 0.13946 -5540.28 1.10720 -0.64789 0.02432 -5541.55 1.13124 -0.88075 0.39813 -5542.83 1.15320 -0.77787 0.47975 -5544.10 1.12016 -0.70383 0.38927 -5545.38 1.10484 -0.78141 0.21304 -5546.66 1.11705 -0.68615 0.32299 -5547.93 1.11141 -0.71290 -0.00446 -5549.21 1.13645 -0.85521 0.21063 -5550.49 1.16602 -0.80345 0.07614 -5551.77 1.16796 -0.96164 0.01763 -5553.05 1.15772 -0.79407 -0.19384 -5554.33 1.12373 -0.71232 0.14911 -5555.60 1.10069 -0.76765 0.10843 -5556.88 1.11021 -0.84583 0.05093 -5558.16 1.12913 -0.71207 0.23136 -5559.44 1.12321 -0.76117 -0.11929 -5560.72 1.12368 -0.85020 -0.07142 -5562.00 1.12599 -0.91254 0.27391 -5563.29 1.10391 -0.84790 -0.05539 -5564.57 1.08467 -0.68721 -0.26780 -5565.85 1.08543 -0.67084 -0.08073 -5567.13 1.07783 -0.66146 -0.02404 -5568.41 1.07064 -0.63649 -0.11394 -5569.69 1.07532 -0.61776 -0.46320 -5570.98 1.07665 -0.63948 -0.92708 -5572.26 1.07887 -0.63586 -0.85152 -5573.54 1.08179 -0.64876 -0.77354 -5574.83 1.08472 -0.66165 -0.69556 -5576.11 1.08765 -0.67455 -0.61758 -5577.39 1.09058 -0.68745 -0.53960 -5578.68 1.09351 -0.70035 -0.46162 -5579.96 1.09644 -0.71324 -0.38364 -5581.25 1.09937 -0.72614 -0.30566 -5582.53 1.10230 -0.73904 -0.22768 -5583.82 1.10523 -0.75193 -0.14970 -5585.11 1.10723 -0.77286 -0.01280 -5586.39 1.07973 -0.60060 -0.48083 -5587.68 1.00315 -0.45066 -1.65388 -5588.96 0.95313 -0.57032 -1.93570 -5590.25 0.97249 -0.43134 -1.60560 -5591.54 1.02021 -0.46588 -0.98832 -5592.83 1.06128 -0.57515 -0.52105 -5594.11 1.06146 -0.48887 -0.43053 -5595.40 1.04388 -0.63968 -0.71770 -5596.69 1.08752 -0.86358 -0.71636 -5597.98 1.13418 -0.83976 -0.64395 -5599.27 1.09004 -0.87577 -0.63189 -5600.56 1.05887 -0.69463 -0.72454 -5601.85 1.05211 -0.58918 -0.67602 -5603.14 1.01321 -0.49959 -0.65017 -5604.43 1.02111 -0.69866 -0.68064 -5605.72 1.09840 -0.78533 -0.57252 -5607.01 1.16257 -0.86967 -0.19957 -5608.30 1.17417 -0.92113 0.16215 -5609.59 1.16054 -0.82919 0.14024 -5610.88 1.16070 -0.82303 -0.13252 -5612.18 1.16641 -0.93958 -0.21585 -5613.47 1.18307 -1.10962 -0.07141 -5614.76 1.14218 -0.79842 0.16350 -5616.05 1.02919 -0.60070 -0.78609 -5617.35 0.97380 -0.51172 -1.71121 -5618.64 1.05083 -0.74345 -1.29335 -5619.94 1.09522 -0.85086 -0.63149 -5621.23 1.09324 -0.69505 -0.48538 -5622.52 1.11856 -0.79078 -0.13750 -5623.82 1.12925 -0.82630 0.08880 -5625.11 1.06644 -0.53702 -0.50881 -5626.41 1.02211 -0.35750 -0.40877 -5627.71 1.06441 -0.66527 -0.11763 -5629.00 1.10232 -0.80962 -0.06159 -5630.30 1.13208 -0.71493 -0.18254 -5631.59 1.16400 -0.91514 0.12126 -5632.89 1.16916 -0.96075 -0.06061 -5634.19 1.14668 -0.75732 -0.02601 -5635.49 1.12025 -0.81404 -0.17480 -5636.78 1.09665 -0.81979 -0.03087 -5638.08 1.07510 -0.64582 0.15680 -5639.38 1.08273 -0.73575 -0.06263 -5640.68 1.11007 -0.95415 0.49470 -5641.98 1.09400 -0.80254 0.29385 -5643.28 1.07375 -0.69470 0.38676 -5644.58 1.08993 -0.74351 0.09769 -5645.88 1.10571 -0.77915 0.13912 -5647.18 1.11664 -0.66182 0.12321 -5648.48 1.13049 -0.65919 -0.32067 -5649.78 1.11434 -0.65129 -0.13710 -5651.08 1.09654 -0.80188 0.05675 -5652.38 1.10579 -0.74431 0.13238 -5653.68 1.13205 -0.71562 -0.02866 -5654.98 1.11244 -0.74915 0.27881 -5656.29 1.07898 -0.67305 0.25189 -5657.59 1.08632 -0.81141 0.12954 -5658.89 1.04544 -0.51293 -0.18685 -5660.19 0.98896 -0.63515 -0.07306 -5661.50 1.04017 -0.72170 -0.29654 -5662.80 1.06828 -0.66255 0.06411 -5664.11 1.05536 -0.63506 -0.02053 -5665.41 1.08156 -0.88548 -0.02647 -5666.71 1.12118 -0.95929 0.21875 -5668.02 1.10736 -0.81820 0.51444 -5669.32 1.09138 -0.64600 0.07711 -5670.63 1.09806 -0.71959 0.00010 -5671.94 1.10302 -0.72459 0.34901 -5673.24 1.12477 -0.76157 0.05744 -5674.55 1.15451 -0.80586 -0.18768 -5675.86 1.14346 -0.86182 0.20205 -5677.16 1.13500 -1.05452 -0.15456 -5678.47 1.14890 -1.06797 0.09557 -5679.78 1.13586 -0.92712 0.42713 -5681.09 1.12820 -0.88355 0.14232 -5682.39 1.12214 -0.80738 -0.25523 -5683.70 1.07582 -0.63875 -0.38932 -5685.01 1.06820 -0.69976 -0.31250 -5686.32 1.09594 -0.88685 0.55516 -5687.63 1.08081 -0.82978 0.29022 -5688.94 1.06056 -0.71978 -0.90902 -5690.25 1.07834 -0.67991 -0.57854 -5691.56 1.10794 -0.89418 -0.28446 -5692.87 1.12366 -1.07662 0.08163 -5694.18 1.13481 -1.04636 0.06803 -5695.49 1.11982 -0.83446 -0.09755 -5696.80 1.12112 -0.84447 0.01701 -5698.12 1.12818 -0.77792 0.00910 -5699.43 1.09321 -0.66617 -0.18206 -5700.74 1.07327 -0.64947 0.06657 -5702.05 1.06392 -0.71127 0.06990 -5703.37 1.04229 -0.52028 -0.39655 -5704.68 1.07318 -0.57013 0.16273 -5705.99 1.08532 -0.78948 0.07792 -5707.31 1.05013 -0.71315 0.01344 -5708.62 1.01188 -0.59012 0.10134 -5709.94 0.99490 -0.53086 -0.18086 -5711.25 0.98517 -0.62499 -0.22393 -5712.57 0.99144 -0.56443 -0.10439 -5713.88 1.02632 -0.51262 0.21705 -5715.20 1.07772 -0.75590 -0.26070 -5716.52 1.10507 -0.92710 -0.03048 -5717.83 1.11243 -0.84152 0.25769 -5719.15 1.11363 -0.91971 -0.29761 -5720.47 1.13015 -1.04956 0.30185 -5721.78 1.14788 -1.02080 0.43606 -5723.10 1.15260 -1.00775 0.15832 -5724.42 1.15712 -1.04097 0.22293 -5725.74 1.16011 -1.01461 0.40253 -5727.05 1.13949 -0.82959 0.14915 -5728.37 1.11072 -0.78915 0.13471 -5729.69 1.12205 -0.87922 0.35657 -5731.01 1.14751 -0.75534 0.03376 -5732.33 1.11002 -0.80806 0.10916 -5733.65 1.09915 -0.76516 -0.13925 -5734.97 1.13824 -1.00444 -0.13180 -5736.29 1.15310 -1.07594 0.02542 -5737.61 1.15064 -1.02233 0.40673 -5738.94 1.12858 -0.87364 0.04604 -5740.26 1.12720 -0.84094 -0.16356 -5741.58 1.13181 -0.96014 0.34271 -5742.90 1.11943 -0.87898 -0.11449 -5744.22 1.11319 -0.65019 -0.08243 -5745.55 1.13359 -0.85314 0.30879 -5746.87 1.15142 -0.97832 -0.06807 -5748.19 1.12658 -0.86442 0.19930 -5749.52 1.09369 -0.81322 0.16622 -5750.84 1.11250 -1.03946 0.12216 -5752.17 1.13530 -1.01087 0.33341 -5753.49 1.09911 -0.85672 0.06921 -5754.81 1.04199 -0.80448 -0.00332 -5756.14 1.05702 -0.68947 0.36611 -5757.47 1.10806 -0.89987 0.22081 -5758.79 1.14279 -1.13842 0.17872 -5760.12 1.13905 -1.00662 -0.07662 -5761.44 1.10923 -0.90592 0.04673 -5762.77 1.06707 -0.72679 0.06349 -5764.10 1.04977 -0.71474 -0.46674 -5765.43 1.08765 -0.80220 -0.32883 -5766.75 1.14487 -1.14876 -0.20908 -5768.08 1.15629 -1.13670 -0.22353 -5769.41 1.14948 -1.07328 -0.04129 -5770.74 1.14223 -1.01164 0.03278 -5772.07 1.13869 -1.01277 0.10717 -5773.40 1.12542 -1.05965 0.33789 -5774.73 1.11904 -0.92322 0.03271 -5776.06 1.11481 -0.80306 -0.19901 -5777.39 1.11770 -0.99915 -0.16634 -5778.72 1.13610 -1.00638 -0.05774 -5780.05 1.12266 -0.87777 0.18396 -5781.38 1.06132 -0.65539 0.29505 -5782.71 1.00570 -0.53863 0.01172 -5784.04 1.01123 -0.61255 0.07403 -5785.37 1.02277 -0.46119 -0.23457 -5786.71 1.01626 -0.59484 -0.16867 -5788.04 1.05404 -0.55879 -0.37557 -5789.37 1.10637 -0.87356 -0.09585 -5790.70 1.10865 -0.98581 -0.13727 -5792.04 1.09407 -0.81657 -0.17029 -5793.37 1.08571 -0.88248 -0.15974 -5794.71 1.10348 -0.98608 -0.15662 -5796.04 1.12677 -1.09930 -0.18667 -5797.37 1.12730 -1.00328 0.03497 -5798.71 1.09705 -0.70488 0.37015 -5800.04 1.10382 -0.99576 0.11997 -5801.38 1.14540 -1.10195 -0.08240 -5802.72 1.15289 -1.10183 0.06811 -5804.05 1.13997 -1.12527 -0.13879 -5805.39 1.10833 -1.14274 -0.23507 -5806.73 1.08366 -0.94766 0.05521 -5808.06 1.09408 -0.84734 0.16439 -5809.40 1.10007 -0.94992 0.04958 -5810.74 1.11270 -1.10661 0.07356 -5812.08 1.12795 -1.01583 -0.13536 -5813.42 1.13106 -1.03351 0.17102 -5814.75 1.13151 -1.07634 0.19012 -5816.09 1.10392 -0.96607 0.37559 -5817.43 1.07734 -0.93532 0.22032 -5818.77 1.09241 -0.94095 -0.12819 -5820.11 1.14339 -1.04025 0.10093 -5821.45 1.15598 -1.12764 0.32040 -5822.79 1.14101 -1.07416 0.51299 -5824.13 1.13558 -1.04781 0.19231 -5825.48 1.13600 -1.00875 0.09872 -5826.82 1.14332 -1.11336 0.15802 -5828.16 1.13909 -1.01529 0.32052 -5829.50 1.13664 -1.14885 0.41417 -5830.84 1.14849 -1.25394 0.25321 -5832.19 1.13893 -1.09575 0.25976 -5833.53 1.12788 -1.06579 0.25958 -5834.87 1.12443 -0.92926 0.22479 -5836.22 1.11680 -1.05835 0.30410 -5837.56 1.12042 -1.01312 0.19300 -5838.90 1.12198 -0.91597 0.34067 -5840.25 1.12498 -0.97474 0.48736 -5841.59 1.14055 -1.00516 0.10287 -5842.94 1.14948 -1.14004 0.16522 -5844.28 1.15050 -1.19246 0.52920 -5845.63 1.14167 -1.12593 0.61406 -5846.98 1.13447 -1.16337 0.37501 -5848.32 1.11232 -0.97247 -0.01187 -5849.67 1.10780 -0.99193 0.09048 -5851.02 1.12530 -1.10687 0.33584 -5852.36 1.13561 -1.10106 0.03791 -5853.71 1.11452 -1.05157 0.04891 -5855.06 1.09301 -0.99085 0.15936 -5856.41 1.09883 -1.09818 0.21726 -5857.76 1.08250 -0.89574 -0.54948 -5859.11 1.04185 -0.98951 -0.65403 -5860.46 1.05936 -0.97259 -0.57184 -5861.80 1.10774 -0.92335 -0.50512 -5863.15 1.11336 -1.10744 -0.23594 -5864.50 1.10882 -1.11808 -0.47556 -5865.86 1.12356 -1.09135 -0.13601 -5867.21 1.11672 -1.00838 0.09218 -5868.56 1.10279 -0.90622 -0.47848 -5869.91 1.12417 -1.10300 -0.19085 -5871.26 1.14704 -1.26314 0.03265 -5872.61 1.14902 -1.20987 -0.05345 -5873.96 1.14170 -1.16924 0.24876 -5875.32 1.13562 -1.12309 -0.04245 -5876.67 1.13903 -1.16079 -0.19796 -5878.02 1.13688 -1.18049 -0.29474 -5879.38 1.12340 -0.95146 -0.44885 -5880.73 1.10807 -0.82994 -0.16244 -5882.09 1.10870 -0.86203 -0.15963 -5883.44 1.10892 -0.87817 -0.15838 -5884.80 1.10914 -0.89432 -0.15712 -5886.15 1.10936 -0.91047 -0.15587 -5887.51 1.10958 -0.92662 -0.15462 -5888.86 1.10980 -0.94276 -0.15337 -5890.22 1.11002 -0.95891 -0.15211 -5891.57 1.11025 -0.97506 -0.15086 -5892.93 1.11047 -0.99121 -0.14961 -5894.29 1.11069 -1.00735 -0.14836 -5895.65 1.11091 -1.02350 -0.14710 -5897.00 1.11113 -1.03965 -0.14585 -5898.36 1.11135 -1.05580 -0.14460 -5899.72 1.11157 -1.07194 -0.14334 -5901.08 1.11179 -1.08809 -0.14209 -5902.44 1.11201 -1.10424 -0.14084 -5903.80 1.11223 -1.12039 -0.13958 -5905.16 1.11376 -1.12512 -0.22209 -5906.52 1.10784 -1.01125 -0.40110 -5907.88 1.10125 -1.09707 0.05156 -5909.24 1.11409 -1.02343 0.01699 -5910.60 1.11477 -0.95069 -0.01144 -5911.96 1.11997 -1.08339 0.16562 -5913.32 1.12769 -1.18208 0.30855 -5914.68 1.10329 -1.07514 0.11624 -5916.04 1.07547 -0.96166 -0.16651 -5917.41 1.07241 -0.98287 -0.09108 -5918.77 1.09222 -1.03993 -0.27128 -5920.13 1.11425 -1.04086 -0.12932 -5921.49 1.12586 -1.06781 -0.11300 -5922.86 1.12304 -1.15306 -0.10077 -5924.22 1.11565 -1.11434 -0.02510 -5925.59 1.12898 -1.05934 -0.17056 -5926.95 1.14312 -1.26174 -0.13401 -5928.32 1.13138 -1.22151 0.09430 -5929.68 1.10853 -1.15036 0.08878 -5931.05 1.08740 -1.08649 -0.05099 -5932.41 1.09765 -1.16788 0.11658 -5933.78 1.12546 -1.06455 -0.09869 -5935.15 1.11448 -1.02178 -0.22929 -5936.51 1.09999 -1.05184 -0.00914 -5937.88 1.12011 -1.13763 -0.17385 -5939.25 1.13080 -1.12979 -0.23678 -5940.61 1.13232 -1.17222 0.11408 -5941.98 1.11674 -1.13913 -0.26936 -5943.35 1.10103 -0.99246 -0.32494 -5944.72 1.10887 -1.14687 -0.02904 -5946.09 1.12497 -1.18487 0.11367 -5947.46 1.13627 -1.35314 -0.05128 -5948.83 1.11693 -1.14587 -0.22312 -5950.20 1.09430 -1.14589 -0.17404 -5951.57 1.10508 -1.15338 -0.40443 -5952.94 1.10668 -1.12077 -0.27481 -5954.31 1.09137 -1.14560 -0.26958 -5955.68 1.10452 -1.15928 0.04437 -5957.05 1.11260 -1.19587 -0.06722 -5958.42 1.10207 -1.11690 -0.25647 -5959.80 1.10292 -0.97790 -0.03747 -5961.17 1.12177 -1.07173 0.12193 -5962.54 1.13666 -1.16915 0.11052 -5963.91 1.14136 -1.28166 0.00848 -5965.29 1.13387 -1.26687 -0.33325 -5966.66 1.11992 -1.11459 -0.24644 -5968.03 1.11790 -1.21730 -0.41853 -5969.41 1.13377 -1.24028 -0.28895 -5970.78 1.14669 -1.33909 0.06573 -5972.16 1.14621 -1.28001 0.01746 -5973.53 1.15007 -1.30708 -0.41338 -5974.91 1.14353 -1.30604 -0.35079 -5976.29 1.11832 -1.16663 -0.08819 -5977.66 1.08742 -1.14287 -0.22701 -5979.04 1.08458 -1.11573 -0.31751 -5980.42 1.10358 -1.05146 -0.33926 -5981.79 1.12496 -1.17406 -0.27204 -5983.17 1.12759 -1.28133 0.01231 -5984.55 1.09464 -1.17042 -0.01486 -5985.93 1.06407 -0.98314 -0.28721 -5987.30 1.07503 -1.06945 -0.52030 -5988.68 1.09522 -1.13203 -0.34293 -5990.06 1.11179 -1.21346 -0.22496 -5991.44 1.11876 -1.12803 0.07555 -5992.82 1.10925 -0.89610 0.12048 -5994.20 1.10827 -1.12304 0.40547 -5995.58 1.12565 -1.23288 0.18885 -5996.96 1.12419 -1.07509 0.36735 -5998.34 1.09107 -0.95558 0.65897 -5999.73 1.07611 -1.05510 0.26737 -6001.11 1.09811 -1.09250 -0.06908 -6002.49 1.10761 -1.11803 -0.12753 -6003.87 1.09025 -1.07873 0.17072 -6005.25 1.08148 -1.11475 0.22282 -6006.64 1.08814 -1.16109 0.67727 -6008.02 1.06917 -1.03993 0.63339 -6009.40 1.04009 -0.80824 0.31240 -6010.79 1.06086 -1.00763 0.68238 -6012.17 1.09488 -1.25856 0.36685 -6013.56 1.07712 -1.13948 0.72516 -6014.94 1.05918 -0.89750 0.75225 -6016.33 1.05707 -0.89886 0.36985 -6017.71 1.06656 -1.00450 0.17905 -6019.10 1.07171 -1.04571 0.21899 -6020.48 1.05589 -0.94862 0.74406 -6021.87 1.03639 -0.96116 0.38781 -6023.26 1.03555 -0.98984 0.21249 -6024.64 1.05122 -0.96143 0.43221 -6026.03 1.07055 -1.03450 0.39114 -6027.42 1.07720 -1.08434 0.50632 -6028.81 1.08089 -1.14015 1.22174 -6030.19 1.10366 -1.16670 0.64936 -6031.58 1.10441 -1.01048 0.62748 -6032.97 1.10706 -1.04577 0.81428 -6034.36 1.11466 -1.29450 0.59211 -6035.75 1.11143 -1.22966 0.75910 -6037.14 1.11960 -1.18991 0.76211 -6038.53 1.11337 -1.27263 0.47665 -6039.92 1.10933 -1.27021 0.67954 -6041.31 1.10432 -1.20469 0.92034 -6042.70 1.09059 -1.21423 0.79900 -6044.10 1.09358 -1.16124 0.48104 -6045.49 1.10782 -1.10605 0.60692 -6046.88 1.11677 -1.06938 0.59032 -6048.27 1.12015 -1.27971 0.27574 -6049.67 1.11634 -1.48119 0.57919 -6051.06 1.12182 -1.30208 0.59785 -6052.45 1.12177 -1.29804 0.45628 -6053.85 1.11360 -1.26314 0.40507 -6055.24 1.10198 -1.10149 0.06345 -6056.63 1.08602 -1.24045 -0.06415 -6058.03 1.08335 -1.16143 -0.31979 -6059.42 1.09605 -1.11068 -0.01339 -6060.82 1.11416 -1.24618 0.25000 -6062.22 1.11750 -1.25547 -0.07320 -6063.61 1.10246 -1.24215 0.04200 -6065.01 1.08530 -1.18322 -0.20705 -6066.40 1.05864 -1.12190 -0.20912 -6067.80 1.07176 -1.18182 -0.39617 -6069.20 1.11091 -1.28253 -0.60192 -6070.60 1.12516 -1.20357 -0.35575 -6071.99 1.12578 -1.34348 -0.45284 -6073.39 1.13371 -1.35754 -0.34781 -6074.79 1.13596 -1.47218 -0.16742 -6076.19 1.13121 -1.37059 -0.46398 -6077.59 1.12731 -1.14086 -0.32362 -6078.99 1.09217 -1.20833 -0.61661 -6080.39 1.07470 -1.27986 -0.58816 -6081.79 1.08512 -1.13184 -0.67855 -6083.19 1.08760 -1.01516 0.12035 -6084.59 1.08286 -1.14082 -0.16967 -6085.99 1.08009 -1.34089 -0.79210 -6087.39 1.08028 -1.51205 -0.96999 -6088.79 1.08426 -1.51190 -1.38909 -6090.20 1.08854 -1.08105 -0.85497 -6091.60 1.08210 -0.99086 -0.33103 -6093.00 1.07593 -0.98074 -0.07477 -6094.41 1.08395 -0.92534 -0.11351 -6095.81 1.10847 -1.15471 -0.08330 -6097.21 1.11182 -1.14419 -0.00136 -6098.62 1.11026 -1.17577 0.05811 -6100.02 1.11707 -1.21730 0.57315 - diff --git a/pro/science/kinematics/sp4 b/pro/science/kinematics/sp4 deleted file mode 100644 index 1e40816f3..000000000 --- a/pro/science/kinematics/sp4 +++ /dev/null @@ -1,1947 +0,0 @@ -# lam sp1 sp2 sp3 sp4 -# -3899.70 0.42980 2.05062 -3.10656 0.36787 -3900.60 0.42775 1.95443 -3.59570 -0.38724 -3901.50 0.43165 2.08841 -3.08170 0.05217 -3902.40 0.45027 2.01506 -3.29248 0.26460 -3903.29 0.44844 1.95142 -3.13016 0.09484 -3904.19 0.43377 1.94032 -3.52989 -0.35112 -3905.09 0.42470 1.82270 -4.72483 -0.10372 -3905.99 0.39739 1.83412 -4.48129 0.86077 -3906.89 0.41539 1.88684 -3.86309 0.99205 -3907.79 0.46227 1.88486 -3.60535 0.77770 -3908.69 0.51365 1.99150 -3.17207 0.90614 -3909.59 0.53143 2.13889 -3.06937 0.51760 -3910.49 0.53113 2.04428 -2.80293 0.78727 -3911.39 0.53146 2.04287 -3.04759 0.74681 -3912.29 0.53911 2.18971 -2.46810 0.95239 -3913.19 0.55291 2.07085 -2.17794 0.22360 -3914.09 0.54160 2.03969 -2.77406 0.54788 -3915.00 0.53949 1.96531 -2.82224 1.15778 -3915.90 0.52829 2.01008 -2.59573 1.19455 -3916.80 0.51716 2.03850 -2.97232 1.00895 -3917.70 0.50373 2.10201 -2.88983 0.59233 -3918.60 0.49795 2.06112 -3.11389 0.57445 -3919.51 0.46966 2.00052 -3.56043 1.36292 -3920.41 0.43186 2.01928 -4.01111 1.29986 -3921.31 0.39770 2.01933 -4.18545 1.22808 -3922.21 0.39250 2.10301 -4.42330 0.98964 -3923.12 0.42002 2.07587 -4.43384 0.85623 -3924.02 0.42657 2.04874 -3.99345 0.80226 -3924.92 0.42763 2.03787 -3.64776 1.10768 -3925.83 0.42933 1.99570 -4.39114 1.18303 -3926.73 0.40051 1.99792 -3.92717 1.57933 -3927.64 0.36480 1.79673 -3.93348 2.20059 -3928.54 0.30724 1.62575 -4.56243 2.15563 -3929.45 0.25967 1.56562 -4.05580 2.22184 -3930.35 0.24348 1.24527 -3.78694 2.27807 -3931.26 0.20483 1.08408 -3.58063 2.57990 -3932.16 0.16470 0.89196 -2.76525 2.87757 -3933.07 0.13626 0.53926 -2.06238 1.48071 -3933.97 0.11498 0.40097 -1.32964 1.20472 -3934.88 0.14132 0.35589 -1.83773 1.51800 -3935.78 0.16405 0.59871 -2.25476 1.53611 -3936.69 0.19320 0.92678 -2.82852 1.73451 -3937.60 0.24924 1.08756 -3.68837 1.93962 -3938.50 0.29131 1.35374 -3.97220 2.52679 -3939.41 0.33635 1.51786 -4.53265 2.65909 -3940.32 0.37269 1.51514 -4.78550 1.81442 -3941.23 0.38493 1.66294 -4.38643 1.73505 -3942.13 0.36971 1.97885 -3.90986 1.21696 -3943.04 0.36407 1.93524 -4.36518 0.94562 -3943.95 0.36262 1.88411 -4.74193 0.46527 -3944.86 0.35626 1.93233 -4.49231 0.98377 -3945.77 0.39474 1.95249 -4.70567 0.99903 -3946.67 0.43825 1.97761 -3.77886 0.67651 -3947.58 0.45713 2.01393 -3.23742 1.08998 -3948.49 0.45289 1.90629 -3.42058 0.86787 -3949.40 0.43751 1.90576 -3.07351 0.79642 -3950.31 0.46076 1.93849 -2.59631 0.30605 -3951.22 0.48755 1.85010 -2.62105 0.72123 -3952.13 0.48892 1.87719 -2.29519 0.68307 -3953.04 0.47734 1.83271 -2.68250 0.30398 -3953.95 0.48657 1.75202 -2.57306 1.29888 -3954.86 0.50629 1.77035 -2.12587 1.56013 -3955.77 0.50490 1.83236 -2.26515 0.87200 -3956.68 0.46993 1.85578 -2.46105 0.13491 -3957.60 0.41566 1.86964 -2.55005 0.56588 -3958.51 0.40598 1.94253 -2.75134 0.27848 -3959.42 0.42857 1.93946 -2.85779 0.41403 -3960.33 0.40642 1.98119 -3.04719 0.30467 -3961.24 0.35393 1.95597 -3.67292 -0.04632 -3962.15 0.30673 1.79952 -4.09915 0.17618 -3963.07 0.28703 1.61744 -4.35305 0.64213 -3963.98 0.30120 1.52036 -3.92664 0.94891 -3964.89 0.30231 1.44476 -3.34611 1.14874 -3965.80 0.28936 1.17689 -3.37488 1.72164 -3966.72 0.24678 0.98075 -2.95018 1.88119 -3967.63 0.18266 0.70454 -1.95319 1.01752 -3968.55 0.14565 0.42102 -1.77460 0.94424 -3969.46 0.12462 0.36470 -1.35778 1.11164 -3970.37 0.14002 0.47773 -1.38652 0.90763 -3971.29 0.17715 0.77422 -1.68689 0.75084 -3972.20 0.23732 1.01760 -2.29885 0.54845 -3973.12 0.30227 1.20513 -2.78495 1.30412 -3974.03 0.34047 1.39385 -3.06173 0.83703 -3974.95 0.39351 1.47702 -3.04006 0.46649 -3975.86 0.43867 1.62522 -2.73654 1.15047 -3976.78 0.46892 1.73931 -2.53712 0.65454 -3977.69 0.49616 1.75117 -2.52064 0.39415 -3978.61 0.52581 1.67346 -2.72674 -0.02448 -3979.53 0.54456 1.81494 -2.15509 0.08987 -3980.44 0.55794 2.00896 -1.31181 0.55871 -3981.36 0.57559 2.00316 -1.77728 -0.31312 -3982.28 0.57820 1.93819 -1.57312 0.18216 -3983.19 0.56782 1.92495 -1.89814 0.06654 -3984.11 0.57734 1.88821 -2.58258 0.29717 -3985.03 0.59005 1.86144 -1.90553 0.53447 -3985.95 0.59506 1.90431 -1.64395 0.77738 -3986.86 0.59715 1.82004 -1.59267 0.48443 -3987.78 0.61766 1.78679 -1.54112 0.70590 -3988.70 0.63781 1.95921 -1.28824 0.77999 -3989.62 0.63540 1.98864 -0.94200 1.04613 -3990.54 0.60072 2.07606 -1.08437 0.47870 -3991.46 0.61097 2.04821 -1.67493 0.04129 -3992.38 0.64330 2.02942 -1.08314 0.63868 -3993.29 0.66232 1.98453 -0.99582 1.09775 -3994.21 0.66907 1.99287 -1.46644 1.15611 -3995.13 0.64350 1.98318 -1.25042 1.07358 -3996.05 0.62457 1.91031 -1.28645 0.55948 -3996.97 0.60675 1.95833 -1.75902 0.53583 -3997.89 0.58025 1.93854 -1.70280 0.40177 -3998.82 0.58108 2.03556 -1.49126 0.52608 -3999.74 0.60502 2.05034 -1.18117 0.83708 -4000.66 0.65525 1.96221 -0.90807 0.61467 -4001.58 0.67018 1.94767 -0.86493 0.69190 -4002.50 0.68169 1.92423 -0.82350 0.80319 -4003.42 0.69193 1.93272 -0.68709 0.07072 -4004.34 0.68275 1.90605 -0.92467 0.41505 -4005.27 0.62072 1.90168 -1.47624 0.78878 -4006.19 0.57169 1.84113 -2.33913 0.18190 -4007.11 0.57438 1.79242 -2.43025 1.17259 -4008.03 0.61939 1.92767 -1.63509 1.41063 -4008.96 0.64442 1.99556 -1.02148 0.70721 -4009.88 0.66412 2.03198 -0.61524 0.42738 -4010.80 0.68021 1.89559 -0.51279 0.90164 -4011.73 0.68502 1.88022 -0.61128 0.82051 -4012.65 0.69123 1.92611 -0.24219 0.47211 -4013.57 0.70397 1.81141 -0.46189 1.03432 -4014.50 0.69551 1.79950 -0.70875 0.99389 -4015.42 0.67719 1.81215 -0.56819 0.96232 -4016.35 0.67538 1.83832 -0.84696 1.14602 -4017.27 0.66470 1.85574 -1.28568 0.70082 -4018.20 0.65818 1.82385 -1.41029 1.18404 -4019.12 0.67977 1.82750 -1.09866 1.60059 -4020.05 0.70426 1.85992 -0.83460 1.11563 -4020.97 0.69897 1.81194 -0.55442 0.88939 -4021.90 0.67888 1.87638 -0.58393 0.84961 -4022.83 0.67624 1.89208 -0.19982 1.05969 -4023.75 0.69303 1.79376 -0.68605 0.72836 -4024.68 0.68205 1.84111 -0.38801 0.75438 -4025.61 0.65230 1.89093 -0.51768 1.00654 -4026.53 0.67156 1.88118 -0.98472 0.60742 -4027.46 0.69402 1.88444 -0.60576 1.07818 -4028.39 0.71800 1.81729 -0.47217 1.33922 -4029.32 0.70893 1.87938 0.00700 0.66807 -4030.24 0.66543 1.83689 -0.89335 -0.17867 -4031.17 0.58664 1.89240 -1.66950 0.02614 -4032.10 0.53539 2.03929 -1.99076 -0.38698 -4033.03 0.53577 2.06791 -2.42848 -0.14921 -4033.96 0.52566 2.05448 -2.24170 0.25471 -4034.89 0.52228 2.05071 -2.26807 0.10292 -4035.82 0.57557 1.98256 -1.79319 0.18490 -4036.75 0.63859 1.85867 -1.19062 0.52763 -4037.67 0.69585 1.70390 -0.34482 1.07597 -4038.60 0.73180 1.65134 -0.09261 1.53759 -4039.53 0.72450 1.71783 -0.13186 1.19652 -4040.47 0.67683 1.77048 -0.49509 1.04068 -4041.40 0.66425 1.73002 -0.82375 1.30401 -4042.33 0.66608 1.73405 -0.62608 1.18712 -4043.26 0.66160 1.91295 -1.12319 0.41150 -4044.19 0.62387 1.92783 -1.32159 0.59944 -4045.12 0.52776 1.98076 -2.35676 0.10298 -4046.05 0.44594 1.87334 -3.47264 -0.05140 -4046.98 0.45238 1.85097 -3.68755 -0.34454 -4047.91 0.52909 1.89641 -3.09656 -0.15843 -4048.85 0.61116 1.91641 -1.77537 0.32081 -4049.78 0.65179 1.82335 -0.94705 1.06426 -4050.71 0.67958 1.68286 -0.56599 0.91068 -4051.64 0.69501 1.64438 -0.19800 1.40402 -4052.58 0.68159 1.65455 -0.75625 1.37396 -4053.51 0.67107 1.67235 -0.57127 1.09842 -4054.44 0.65245 1.68227 -1.00014 1.17480 -4055.38 0.63811 1.64382 -1.54136 1.23432 -4056.31 0.63344 1.70922 -1.07615 1.17685 -4057.25 0.63750 1.70880 -1.24358 0.95058 -4058.18 0.61583 1.68073 -1.28706 0.88329 -4059.11 0.61118 1.71052 -1.80255 0.82048 -4060.05 0.64534 1.75444 -1.45522 1.06696 -4060.98 0.67616 1.72808 -0.71602 0.53835 -4061.92 0.66252 1.79553 -0.85506 0.19982 -4062.86 0.59347 1.85728 -1.48974 0.11964 -4063.79 0.50646 1.87348 -2.39335 -0.31235 -4064.73 0.50589 1.89096 -3.29456 0.03116 -4065.66 0.55913 1.82912 -2.45635 0.57737 -4066.60 0.60193 1.73147 -1.95895 0.16203 -4067.54 0.59695 1.77261 -1.52674 0.56265 -4068.47 0.61310 1.80413 -1.07218 0.84684 -4069.41 0.66760 1.79153 -0.91566 0.24777 -4070.35 0.66812 1.84999 -0.56351 0.62413 -4071.28 0.61108 1.91890 -1.05824 0.19579 -4072.22 0.55473 1.88740 -2.39646 -0.64887 -4073.16 0.56983 1.80681 -2.44636 -0.05171 -4074.10 0.63019 1.80008 -1.47924 0.58634 -4075.04 0.67441 1.73952 -1.30384 0.36145 -4075.97 0.65690 1.73908 -0.91342 0.68167 -4076.91 0.62101 1.63489 -1.30249 0.67078 -4077.85 0.58678 1.57944 -1.61472 1.06917 -4078.79 0.58488 1.65371 -1.61754 1.10705 -4079.73 0.60966 1.73347 -1.21614 0.83300 -4080.67 0.66631 1.67908 -0.53772 1.08746 -4081.61 0.71082 1.65290 -0.33104 1.15918 -4082.55 0.71420 1.66263 0.18073 0.78711 -4083.49 0.70887 1.60133 -0.53451 1.21054 -4084.43 0.68275 1.55539 -0.75882 1.17242 -4085.37 0.66598 1.56553 -0.66029 1.07765 -4086.31 0.67352 1.53542 -0.79895 1.60407 -4087.25 0.72026 1.53156 -0.18274 1.43690 -4088.19 0.77306 1.46243 0.80213 1.37222 -4089.13 0.79681 1.39727 0.95419 1.31504 -4090.08 0.79396 1.43190 0.51959 1.25978 -4091.02 0.76479 1.49342 0.47057 0.51498 -4091.96 0.74797 1.51590 0.60651 0.60435 -4092.90 0.75798 1.41677 -0.06958 0.70722 -4093.84 0.74731 1.43469 0.13377 0.70666 -4094.79 0.73640 1.46705 0.69707 0.84287 -4095.73 0.70199 1.57542 0.13299 0.21555 -4096.67 0.66138 1.56891 -0.33773 -0.00385 -4097.62 0.63829 1.61122 -0.18594 -0.26578 -4098.56 0.62387 1.59594 0.05888 -0.76956 -4099.50 0.62307 1.43394 0.35342 -0.65783 -4100.45 0.59294 1.35791 0.71223 -0.93018 -4101.39 0.53540 1.09830 0.90569 -1.23624 -4102.34 0.49745 0.87645 0.95540 -0.84235 -4103.28 0.52326 0.83547 1.01661 -0.51821 -4104.23 0.56473 1.13392 0.57426 -0.29695 -4105.17 0.60814 1.36727 0.21257 -0.16740 -4106.12 0.64070 1.42511 0.40365 -0.20830 -4107.06 0.66422 1.39619 0.55237 0.23461 -4108.01 0.67317 1.46228 0.07167 0.39844 -4108.95 0.66862 1.52959 0.03932 -0.24017 -4109.90 0.66380 1.54181 -0.30094 0.04000 -4110.85 0.66259 1.53957 -0.45799 0.30822 -4111.79 0.66246 1.67810 -0.50517 -0.32942 -4112.74 0.66632 1.73020 -0.68702 -0.16214 -4113.69 0.68465 1.73175 -0.52336 0.11273 -4114.64 0.69956 1.66488 0.09105 0.12605 -4115.58 0.70090 1.73051 0.15876 0.05342 -4116.53 0.70198 1.72128 0.22596 0.07407 -4117.48 0.71027 1.71871 0.22680 0.40989 -4118.43 0.68961 1.65246 -0.10800 0.16986 -4119.38 0.66372 1.65312 -0.62992 0.22875 -4120.32 0.67251 1.62262 -0.42028 0.77562 -4121.27 0.68561 1.56706 -0.56139 0.76450 -4122.22 0.69215 1.57433 -0.41972 0.60797 -4123.17 0.68691 1.57564 0.05939 0.58135 -4124.12 0.70181 1.60104 -0.44568 0.63189 -4125.07 0.73020 1.57108 -0.30548 1.06284 -4126.02 0.74219 1.45795 0.00022 1.21675 -4126.97 0.72903 1.49890 -0.34804 1.23292 -4127.92 0.71502 1.57550 -0.94523 0.92336 -4128.87 0.70169 1.57525 -0.94826 0.95636 -4129.82 0.69403 1.65738 -0.45273 1.04175 -4130.77 0.69970 1.71336 -0.72462 0.85591 -4131.72 0.66182 1.76711 -1.29977 0.38069 -4132.68 0.60013 1.79743 -1.59928 -0.26010 -4133.63 0.58743 1.78881 -1.95063 -0.18376 -4134.58 0.61448 1.77564 -1.91579 0.23967 -4135.53 0.65281 1.70533 -1.35264 0.62764 -4136.48 0.70027 1.66230 -0.48716 0.62380 -4137.44 0.72654 1.65653 -0.32844 0.59003 -4138.39 0.73082 1.68139 -0.07791 0.25831 -4139.34 0.75210 1.64913 0.03063 0.87033 -4140.30 0.76467 1.63835 0.08085 0.43264 -4141.25 0.75156 1.67278 -0.00622 0.31056 -4142.20 0.70352 1.80059 -0.78437 0.28619 -4143.16 0.60801 2.02179 -1.71306 -0.22653 -4144.11 0.52920 2.03348 -2.56132 -0.57327 -4145.07 0.54986 1.95743 -2.37840 -0.64970 -4146.02 0.63257 1.89017 -1.71924 -0.16392 -4146.97 0.69908 1.82049 -1.07174 0.35624 -4147.93 0.71908 1.81144 -0.46145 0.00948 -4148.88 0.71897 1.72799 -0.15206 0.24278 -4149.84 0.71406 1.70530 -0.40132 0.74073 -4150.80 0.71363 1.62071 -0.74051 0.46421 -4151.75 0.72141 1.62394 -0.59948 0.78738 -4152.71 0.72073 1.70614 -0.78303 0.24353 -4153.66 0.69796 1.72147 -0.82478 0.37237 -4154.62 0.67255 1.61315 -1.31921 0.14976 -4155.58 0.67276 1.60733 -1.25618 0.39118 -4156.53 0.67850 1.61957 -0.84889 0.85706 -4157.49 0.69304 1.57788 -0.96918 0.46753 -4158.45 0.70610 1.63810 -0.83226 0.78050 -4159.41 0.72139 1.62395 -0.54922 0.50874 -4160.36 0.74201 1.59891 -0.28637 0.59484 -4161.32 0.75942 1.57683 -0.25435 0.83567 -4162.28 0.76817 1.54110 -0.14960 0.99576 -4163.24 0.78566 1.47878 -0.07587 1.19904 -4164.20 0.77924 1.55531 0.17558 1.28845 -4165.16 0.76602 1.60244 -0.08559 0.76486 -4166.12 0.74239 1.72774 -0.64286 -0.01812 -4167.08 0.70118 1.85755 -0.61279 -0.29305 -4168.03 0.69610 1.73269 -0.91664 0.31821 -4168.99 0.69772 1.76567 -1.31307 -0.20592 -4169.95 0.70748 1.74154 -0.56198 -0.11971 -4170.92 0.72945 1.65726 -0.50784 0.14577 -4171.88 0.68590 1.73462 -0.48507 0.17763 -4172.84 0.63421 1.74664 -0.90701 0.34017 -4173.80 0.61134 1.71707 -1.38243 0.09692 -4174.76 0.63686 1.67755 -1.31952 0.51269 -4175.72 0.66598 1.70404 -0.80363 0.52528 -4176.68 0.68024 1.64341 -1.06890 -0.09455 -4177.64 0.69343 1.55224 -0.85256 0.55144 -4178.61 0.70380 1.52267 -0.60520 1.14925 -4179.57 0.73982 1.46348 -0.69378 1.34367 -4180.53 0.76193 1.44086 -0.18335 1.28356 -4181.49 0.74181 1.52766 -0.50323 0.45130 -4182.46 0.69615 1.63261 -0.87543 0.25172 -4183.42 0.66834 1.63555 -1.27615 0.40138 -4184.38 0.71133 1.53480 -1.19443 0.45688 -4185.35 0.72075 1.58051 -0.67545 0.64772 -4186.31 0.69444 1.68189 -0.69863 0.97254 -4187.27 0.65914 1.64478 -1.08370 0.56707 -4188.24 0.62359 1.61330 -2.28064 -0.08714 -4189.20 0.64447 1.58744 -1.66247 0.23757 -4190.17 0.68911 1.63464 -0.68935 0.49387 -4191.13 0.69930 1.66984 -0.69274 0.62898 -4192.10 0.68615 1.67856 -0.99326 0.15927 -4193.06 0.72921 1.56722 -0.98115 0.49361 -4194.03 0.77204 1.53339 -0.30808 1.09652 -4194.99 0.75738 1.59135 0.01643 0.89875 -4195.96 0.72251 1.52523 -0.87770 0.41664 -4196.93 0.69568 1.56718 -1.13906 0.73942 -4197.89 0.66384 1.67769 -0.89024 0.58661 -4198.86 0.61857 1.73800 -1.27112 0.20143 -4199.83 0.60014 1.77036 -1.72842 0.10601 -4200.79 0.61784 1.80694 -1.62203 -0.03710 -4201.76 0.62485 1.79842 -1.78771 -0.25688 -4202.73 0.62483 1.75854 -2.01208 -0.12830 -4203.70 0.64743 1.69614 -1.50072 0.00635 -4204.66 0.68779 1.66027 -0.74303 0.29101 -4205.63 0.71680 1.62783 -0.33052 1.25779 -4206.60 0.72940 1.53978 -0.19798 1.02997 -4207.57 0.75106 1.52045 0.04092 0.88079 -4208.54 0.76201 1.55454 0.26101 1.31489 -4209.51 0.76085 1.52776 0.31088 0.84960 -4210.48 0.74745 1.58345 -0.23064 0.50057 -4211.45 0.72883 1.59557 -0.26508 0.91664 -4212.42 0.74282 1.58880 0.20534 0.85653 -4213.39 0.77729 1.57592 0.29007 0.94667 -4214.36 0.76858 1.60539 0.20844 0.72127 -4215.33 0.72869 1.62171 -0.09833 0.41508 -4216.30 0.68158 1.64204 -0.59775 0.92688 -4217.27 0.66301 1.70583 -0.99199 0.37164 -4218.24 0.69131 1.70514 -0.44071 0.60372 -4219.21 0.72478 1.69195 0.10488 0.38126 -4220.18 0.73278 1.79955 0.61998 0.03684 -4221.16 0.73570 1.85890 0.95392 0.43184 -4222.13 0.70456 2.07193 0.64660 0.00670 -4223.10 0.65918 2.17794 0.14872 -0.71337 -4224.07 0.60971 2.21871 -0.41338 -0.61788 -4225.05 0.54932 2.23528 -1.55670 -1.03970 -4226.02 0.47215 2.16819 -2.62226 -1.47870 -4226.99 0.39952 2.06423 -3.47674 -0.98096 -4227.96 0.38862 2.04110 -3.77957 -0.72968 -4228.94 0.46651 2.25337 -2.62478 -1.16409 -4229.91 0.56447 2.42603 -1.42712 -1.87748 -4230.89 0.63835 2.33588 -0.35748 -1.30783 -4231.86 0.67561 2.19184 0.41700 -0.41100 -4232.84 0.67227 2.11796 0.60440 -0.11972 -4233.81 0.66626 2.01278 0.27031 -0.14624 -4234.78 0.65981 1.95165 -0.15934 -0.21573 -4235.76 0.64136 1.92752 -0.70578 -0.61538 -4236.74 0.63878 1.80420 -1.40414 -0.10687 -4237.71 0.65594 1.69008 -1.36511 0.51911 -4238.69 0.68443 1.56278 -1.07146 0.30281 -4239.66 0.69952 1.66021 -0.87690 0.75300 -4240.64 0.69768 1.70256 -0.50480 0.56207 -4241.62 0.72358 1.71020 -0.30594 0.46692 -4242.59 0.74094 1.63929 -0.21361 0.38060 -4243.57 0.73114 1.55158 -0.10327 0.87329 -4244.55 0.75682 1.48857 -0.08036 1.54016 -4245.52 0.78626 1.45465 0.26514 1.20113 -4246.50 0.75862 1.53313 0.26864 0.73093 -4247.48 0.72216 1.53676 -0.26494 0.80696 -4248.46 0.69035 1.50160 -0.85193 1.36130 -4249.44 0.65687 1.53657 -1.39330 0.88050 -4250.42 0.61387 1.65358 -1.70819 0.40976 -4251.39 0.59566 1.84080 -1.87766 0.15300 -4252.37 0.63453 1.96058 -1.10350 -0.55367 -4253.35 0.66877 2.00254 -0.74829 -0.97188 -4254.33 0.62588 2.15789 -0.93224 -0.72382 -4255.31 0.58678 2.09317 -1.96732 -0.60096 -4256.29 0.62423 1.96465 -1.48375 -0.32540 -4257.27 0.71568 1.76055 -0.29912 0.11427 -4258.25 0.75994 1.68697 0.08226 0.66076 -4259.23 0.71486 1.73711 -0.31133 0.61388 -4260.21 0.64108 1.73377 -1.57866 0.11688 -4261.19 0.59639 1.71689 -2.54352 0.19129 -4262.18 0.62209 1.74035 -1.86101 0.19839 -4263.16 0.69631 1.71913 -0.71262 0.08954 -4264.14 0.75856 1.58315 -0.46538 0.61555 -4265.12 0.79939 1.48795 -0.33188 0.99927 -4266.10 0.79079 1.53611 0.10729 1.24439 -4267.09 0.77973 1.53657 0.12476 1.32433 -4268.07 0.76348 1.50200 -0.45715 0.94547 -4269.05 0.73462 1.51378 -1.04964 0.71507 -4270.03 0.71279 1.60093 -1.18552 0.90569 -4271.02 0.64092 1.65034 -1.92508 -0.01895 -4272.00 0.54800 1.76141 -2.65670 -0.25174 -4272.98 0.52862 1.84915 -2.73642 -0.26753 -4273.97 0.56173 1.93328 -2.75277 -0.40748 -4274.95 0.57310 1.94523 -2.48123 -0.14520 -4275.94 0.57793 1.96235 -1.93346 0.15589 -4276.92 0.63873 1.90479 -1.34571 -0.13460 -4277.91 0.73285 1.75026 -0.60811 0.19368 -4278.89 0.78371 1.56168 -0.11824 0.84218 -4279.88 0.76653 1.42281 -0.46164 1.34284 -4280.86 0.72345 1.42689 -1.20309 1.23327 -4281.85 0.69082 1.53221 -1.34430 0.98155 -4282.84 0.69334 1.64965 -1.14821 0.63374 -4283.82 0.71180 1.68026 -0.71538 0.18858 -4284.81 0.72930 1.56890 -0.54422 0.90661 -4285.79 0.72118 1.49594 -0.98354 1.50331 -4286.78 0.70337 1.41922 -1.34132 1.27104 -4287.77 0.69624 1.48969 -1.14809 1.15244 -4288.76 0.67561 1.64683 -1.16764 0.57922 -4289.74 0.61283 1.76129 -1.34519 -0.05260 -4290.73 0.55631 1.84727 -1.54537 0.21079 -4291.72 0.57942 1.77961 -1.58491 0.34744 -4292.71 0.66110 1.66881 -1.05249 0.48776 -4293.70 0.70198 1.55868 -0.90732 0.56953 -4294.69 0.70048 1.54303 -1.40046 0.43973 -4295.67 0.69778 1.51824 -1.60253 0.99149 -4296.66 0.69996 1.32972 -1.25285 1.34074 -4297.65 0.67627 1.35192 -1.40585 1.47823 -4298.64 0.62769 1.35280 -1.66648 1.50348 -4299.63 0.55476 1.34442 -2.23773 1.39962 -4300.62 0.50616 1.37143 -2.61239 1.42582 -4301.61 0.51705 1.35451 -2.80991 1.45414 -4302.60 0.54062 1.31272 -2.62763 1.51021 -4303.59 0.55709 1.25558 -2.57824 1.44212 -4304.59 0.57976 1.24851 -2.53490 2.24508 -4305.58 0.58365 1.20497 -2.56911 2.16401 -4306.57 0.57544 1.35212 -2.73361 1.38936 -4307.56 0.52612 1.46378 -2.50716 0.92485 -4308.55 0.47396 1.48531 -3.19033 1.17419 -4309.54 0.47331 1.36970 -3.63880 1.67091 -4310.54 0.52650 1.16838 -3.45391 2.16788 -4311.53 0.58177 1.03255 -3.67619 2.35793 -4312.52 0.61629 0.92908 -3.46608 2.71869 -4313.52 0.66121 0.96181 -2.72624 2.78997 -4314.51 0.69530 1.10883 -1.69241 1.86254 -4315.50 0.73603 1.23679 -0.62230 1.17636 -4316.50 0.80899 1.28797 0.33871 0.77943 -4317.49 0.88193 1.34145 1.19507 0.95713 -4318.48 0.89629 1.39527 1.69205 1.20034 -4319.48 0.87331 1.45098 1.38945 0.43811 -4320.47 0.86807 1.40227 1.14584 0.75796 -4321.47 0.87927 1.30950 1.05501 1.20309 -4322.46 0.85392 1.23435 0.28866 1.07062 -4323.46 0.78234 1.18539 -0.63321 1.51454 -4324.45 0.68277 1.24837 -1.57340 1.67020 -4325.45 0.59214 1.43623 -2.53773 1.10708 -4326.45 0.55509 1.59449 -2.79364 0.15468 -4327.44 0.61637 1.57222 -2.08408 -0.04823 -4328.44 0.75163 1.39726 -0.77772 0.34912 -4329.44 0.85327 1.26716 0.29463 1.08456 -4330.43 0.86992 1.19542 0.64453 1.34864 -4331.43 0.87692 1.13506 0.89494 1.24615 -4332.43 0.88599 1.07303 0.72004 1.21169 -4333.43 0.90611 1.00731 0.86236 1.33542 -4334.42 0.91543 0.91810 1.03076 1.16673 -4335.42 0.90825 0.93942 1.28839 1.24898 -4336.42 0.88307 0.99657 1.49766 1.31482 -4337.42 0.81189 1.00482 1.22053 0.25251 -4338.42 0.73321 0.99967 0.63640 -0.50006 -4339.42 0.67428 0.86482 0.49542 0.22176 -4340.42 0.64311 0.53100 0.94946 0.41396 -4341.42 0.65059 0.26806 1.15009 0.76077 -4342.42 0.70544 0.33391 1.34862 1.31992 -4343.42 0.77586 0.62607 1.34938 1.32079 -4344.42 0.80097 0.86093 1.00256 0.64845 -4345.42 0.81497 0.99893 0.86442 0.04928 -4346.42 0.84055 1.06472 0.92646 0.21811 -4347.42 0.86575 1.06407 0.78783 1.09759 -4348.42 0.86989 1.01971 0.58677 1.84050 -4349.42 0.89632 0.94808 0.95109 1.78469 -4350.42 0.89929 1.04536 1.10431 1.68988 -4351.42 0.82953 1.14897 0.39328 0.87085 -4352.43 0.72634 1.31477 -0.54631 0.67711 -4353.43 0.70390 1.33759 -1.18190 0.62678 -4354.43 0.76108 1.29566 -0.59913 1.14149 -4355.43 0.81315 1.23693 -0.35807 0.40203 -4356.44 0.83087 1.13286 -0.75105 0.69817 -4357.44 0.85783 1.06810 -0.51215 1.34125 -4358.44 0.88184 0.94877 -0.16286 1.32498 -4359.45 0.85579 1.03032 -0.16323 1.52894 -4360.45 0.84170 1.15348 -0.34692 1.00593 -4361.45 0.86968 1.13363 -0.05324 1.58311 -4362.46 0.89645 1.12306 0.60986 1.68146 -4363.46 0.89854 1.00263 0.30864 1.52344 -4364.47 0.89224 1.03285 -0.00788 1.65166 -4365.47 0.90868 1.06322 0.49135 1.80689 -4366.48 0.91774 0.97469 0.75459 2.36686 -4367.48 0.87630 1.03678 0.18155 1.65039 -4368.49 0.84551 1.07144 -0.03193 1.53994 -4369.50 0.84925 1.11440 -0.06436 1.74444 -4370.50 0.85127 1.07653 -0.26858 1.67746 -4371.51 0.85045 1.02147 -0.35108 1.69867 -4372.52 0.84051 1.12581 -0.37422 1.87956 -4373.52 0.83016 1.14861 -0.51922 1.63619 -4374.53 0.79914 1.16581 -0.83951 1.20204 -4375.54 0.75659 1.23459 -1.18874 1.34633 -4376.54 0.75057 1.28111 -1.08926 0.90119 -4377.55 0.77965 1.31438 -0.55885 0.75414 -4378.56 0.81713 1.27462 -0.12775 1.22068 -4379.57 0.82291 1.33965 -0.06376 0.87488 -4380.58 0.81000 1.41036 -0.26899 0.73413 -4381.59 0.78447 1.46783 -0.51082 0.44490 -4382.60 0.71213 1.58351 -1.35189 0.13371 -4383.60 0.58718 1.67817 -2.57274 -0.33949 -4384.61 0.51125 1.71087 -3.16043 0.02173 -4385.62 0.57313 1.64524 -3.00170 0.21802 -4386.63 0.69616 1.43081 -1.88559 0.83378 -4387.64 0.77625 1.28171 -0.94533 0.84438 -4388.65 0.79984 1.28698 -0.72558 1.10837 -4389.66 0.79563 1.20825 -0.99727 1.29469 -4390.68 0.79038 1.23901 -1.05333 1.13506 -4391.69 0.81284 1.15936 -0.93672 1.52587 -4392.70 0.84074 1.03449 -0.90758 1.29786 -4393.71 0.84999 1.06130 -0.49081 1.19499 -4394.72 0.83361 1.05710 -0.48254 1.16460 -4395.73 0.81640 1.03798 -0.64874 1.15883 -4396.75 0.84379 0.98914 -0.20747 1.43988 -4397.76 0.89371 0.92029 0.05903 1.70851 -4398.77 0.92070 0.89196 0.18642 1.83851 -4399.78 0.89818 0.88907 0.22245 1.68290 -4400.80 0.84058 0.99025 -0.38140 1.88106 -4401.81 0.80788 1.11135 -0.61967 1.35210 -4402.82 0.81252 1.23217 -0.28727 0.69155 -4403.84 0.77883 1.42583 -0.75088 0.31781 -4404.85 0.68262 1.62067 -1.75198 -0.47563 -4405.87 0.64105 1.70610 -2.31490 -0.50948 -4406.88 0.70391 1.65016 -1.54520 -0.19534 -4407.90 0.75938 1.54116 -0.92154 0.13581 -4408.91 0.78271 1.35685 -0.95662 0.52512 -4409.93 0.82830 1.17740 -0.51900 0.91763 -4410.94 0.88329 1.05115 0.10488 1.51815 -4411.96 0.92046 0.99531 0.67474 1.48734 -4412.97 0.93589 1.04945 0.84457 0.95752 -4413.99 0.90595 1.22436 0.69750 1.01892 -4415.01 0.82843 1.29390 -0.31293 -0.25146 -4416.02 0.75618 1.36730 -1.25390 -0.24078 -4417.04 0.77320 1.29169 -1.20633 0.18000 -4418.06 0.84644 1.06642 -0.29875 0.79786 -4419.07 0.91363 0.88998 0.13718 1.46395 -4420.09 0.95818 0.85157 0.84248 1.67474 -4421.11 0.96488 0.91169 0.96253 1.42532 -4422.13 0.92680 0.95258 0.43160 0.81454 -4423.15 0.88615 1.08537 -0.20111 0.70184 -4424.17 0.87313 1.18918 -0.08125 0.87343 -4425.18 0.85843 1.27317 0.55961 0.49125 -4426.20 0.84429 1.35269 0.12035 -0.01769 -4427.22 0.82348 1.41547 0.05560 -0.08182 -4428.24 0.83609 1.34483 0.34355 0.30643 -4429.26 0.87826 1.20230 0.42859 0.75349 -4430.28 0.88870 1.14697 0.10961 0.73247 -4431.30 0.88058 1.12346 0.11738 0.96257 -4432.32 0.89351 1.01522 0.15761 0.99738 -4433.34 0.90429 0.98868 0.40270 0.84013 -4434.36 0.85048 1.21702 0.31398 0.37560 -4435.39 0.76106 1.46071 -0.32577 -0.19582 -4436.41 0.74408 1.54256 -0.32933 -0.47865 -4437.43 0.82089 1.32000 -0.14366 -0.00037 -4438.45 0.90897 1.04377 0.52688 1.10796 -4439.47 0.95520 0.88929 0.91298 1.14709 -4440.49 0.96058 0.83626 0.66541 1.13616 -4441.52 0.91918 0.91316 0.21418 1.18702 -4442.54 0.85398 1.04844 0.06652 0.65259 -4443.56 0.82026 1.07266 0.04323 0.69190 -4444.59 0.84886 0.91873 -0.06781 1.39307 -4445.61 0.91721 0.76028 0.34395 1.52931 -4446.63 0.95000 0.81042 1.00199 1.79067 -4447.66 0.93589 0.81444 0.67912 1.43597 -4448.68 0.91766 0.83078 0.35584 1.33363 -4449.71 0.92557 0.83607 0.54273 1.11071 -4450.73 0.92767 0.81032 0.73368 1.11167 -4451.76 0.91849 0.87725 0.80256 1.38205 -4452.78 0.89724 1.01116 0.73634 0.88159 -4453.81 0.84995 1.20651 0.64192 0.73313 -4454.83 0.77295 1.42195 0.05254 -0.20608 -4455.86 0.70606 1.57200 -0.39502 -0.85754 -4456.88 0.72070 1.51647 -0.48424 -0.71163 -4457.91 0.78419 1.36332 -0.36388 -0.40766 -4458.94 0.79859 1.29779 -0.45908 0.02544 -4459.96 0.78769 1.26502 -0.45821 -0.08788 -4460.99 0.77980 1.34089 -0.33795 0.03513 -4462.02 0.78438 1.35581 -0.60047 -0.21314 -4463.05 0.81563 1.24092 -0.34708 -0.01872 -4464.07 0.86945 0.99977 0.02725 0.95254 -4465.10 0.90747 0.84197 0.26147 1.17953 -4466.13 0.90635 0.89942 0.16531 0.93535 -4467.16 0.89899 0.89471 0.27723 0.79803 -4468.19 0.89387 0.84028 0.73325 1.39787 -4469.22 0.89573 0.79777 0.27002 1.34851 -4470.25 0.87922 0.80470 -0.04937 1.24440 -4471.27 0.89015 0.80604 0.29010 1.32860 -4472.30 0.93474 0.75368 0.34506 1.69533 -4473.33 0.95864 0.73187 0.59795 1.74882 -4474.36 0.96909 0.70801 0.84043 1.50129 -4475.39 0.96326 0.77378 0.90935 0.93250 -4476.43 0.93760 0.85196 0.82607 0.82881 -4477.46 0.94858 0.74069 0.85708 1.12809 -4478.49 0.98684 0.58517 1.00752 1.97554 -4479.52 0.98579 0.61293 0.82454 1.91811 -4480.55 0.93313 0.74841 0.53442 1.33005 -4481.58 0.87390 0.92284 0.28843 0.67188 -4482.61 0.83979 0.97700 0.11353 0.36437 -4483.65 0.87370 0.91699 0.09994 0.70195 -4484.68 0.93619 0.77135 0.87445 1.30336 -4485.71 0.98298 0.65742 0.73320 1.52710 -4486.74 1.00795 0.56281 0.68593 1.50804 -4487.78 1.00131 0.56026 0.91329 1.82584 -4488.81 0.96605 0.67419 0.73822 1.26009 -4489.85 0.92030 0.78756 0.44780 1.22643 -4490.88 0.90423 0.81329 0.17484 1.21701 -4491.91 0.93115 0.72850 0.40879 1.11698 -4492.95 0.96711 0.65347 0.78228 1.60771 -4493.98 0.96103 0.71343 0.55601 1.27379 -4495.02 0.90514 0.86913 0.27583 0.87254 -4496.05 0.86854 0.98461 0.31498 0.57093 -4497.09 0.89497 0.94424 0.13460 0.63581 -4498.12 0.93910 0.78168 0.42194 1.11695 -4499.16 0.97105 0.65207 0.97837 1.32120 -4500.20 0.97759 0.63026 0.97152 1.37203 -4501.23 0.95799 0.62869 0.98170 1.60353 -4502.27 0.94954 0.59466 1.12130 1.74358 -4503.30 0.97238 0.61952 0.90012 1.59445 -4504.34 1.01934 0.50085 0.84026 1.41986 -4505.38 1.03651 0.46938 0.93390 1.36150 -4506.42 1.02612 0.54048 1.15970 1.52157 -4507.45 1.01800 0.51427 1.19548 1.72904 -4508.49 1.01076 0.51991 1.04302 1.53388 -4509.53 1.00763 0.51667 1.00870 1.56416 -4510.57 1.00551 0.52559 1.47414 1.75170 -4511.61 1.00609 0.57542 1.44071 1.56050 -4512.65 0.98455 0.68729 1.17238 1.41692 -4513.69 0.96155 0.70413 1.10312 1.25594 -4514.73 0.95441 0.67754 0.86467 1.12261 -4515.77 0.96642 0.58955 0.86201 1.45248 -4516.81 0.97436 0.52615 0.70436 1.53545 -4517.85 0.94966 0.67954 0.98746 1.48605 -4518.89 0.93332 0.73797 0.97522 1.32682 -4519.93 0.94971 0.69851 0.94917 1.52577 -4520.97 0.98070 0.49195 1.03584 1.54405 -4522.01 0.98594 0.44929 1.30138 1.93656 -4523.05 0.96268 0.56966 1.09321 1.81477 -4524.09 0.93186 0.60846 0.90543 1.41538 -4525.13 0.92596 0.66134 0.71350 1.76086 -4526.18 0.90321 0.73152 0.25691 1.55655 -4527.22 0.84338 0.91352 0.24740 0.88767 -4528.26 0.79592 1.11678 -0.03499 -0.00036 -4529.30 0.77437 1.10759 -0.37103 -0.11075 -4530.35 0.80415 0.97826 -0.48800 0.69492 -4531.39 0.84175 0.87745 -0.16746 0.86797 -4532.43 0.84608 0.93183 0.32198 0.38172 -4533.48 0.84117 0.94374 0.43995 0.24863 -4534.52 0.79571 1.11786 0.79348 0.06044 -4535.56 0.74528 1.29197 0.28299 -0.24401 -4536.61 0.77364 1.20427 0.07183 -0.24868 -4537.65 0.86007 0.95078 0.57669 0.78377 -4538.70 0.96618 0.56434 1.05592 1.49250 -4539.74 0.98460 0.51368 1.06946 1.26526 -4540.79 0.96347 0.63755 0.85191 1.18046 -4541.83 0.95749 0.62756 0.58916 1.30623 -4542.88 0.96052 0.60487 0.58400 1.17854 -4543.93 0.97302 0.55610 0.67475 1.33232 -4544.97 0.96105 0.63499 0.64555 1.18735 -4546.02 0.92632 0.72722 0.49899 0.96798 -4547.07 0.91942 0.69928 0.19455 0.79056 -4548.11 0.92051 0.72014 0.47085 1.09800 -4549.16 0.90591 0.62642 0.65625 1.03442 -4550.21 0.89669 0.53449 0.40518 1.25209 -4551.26 0.91883 0.47565 0.24768 1.78595 -4552.30 0.93897 0.56109 0.51425 1.81206 -4553.35 0.93567 0.60777 0.64802 1.08420 -4554.40 0.91911 0.61705 0.61279 1.10195 -4555.45 0.91707 0.61237 0.30547 0.95919 -4556.50 0.92320 0.61261 0.46846 1.27838 -4557.55 0.95663 0.48921 0.61607 1.47076 -4558.60 1.01222 0.35852 0.92501 1.60644 -4559.65 1.03057 0.33601 1.19871 1.81114 -4560.70 1.03106 0.36501 0.97568 1.59335 -4561.75 1.02605 0.38716 1.15117 2.12413 -4562.80 1.02503 0.36615 1.07546 2.05407 -4563.85 1.00815 0.40934 0.94484 1.49694 -4564.90 0.98025 0.40036 0.55033 1.59862 -4565.95 0.98198 0.39298 -0.05140 1.57212 -4567.00 1.00018 0.41276 0.00996 1.21737 -4568.06 1.03025 0.34335 0.30626 1.78966 -4569.11 1.05618 0.27783 0.74579 1.67275 -4570.16 1.03923 0.32826 0.74978 1.35119 -4571.21 0.98406 0.52291 0.60259 1.39667 -4572.26 0.95264 0.56144 0.50249 1.33754 -4573.32 0.97525 0.44228 0.40118 1.70567 -4574.37 1.01491 0.34345 0.61833 1.66341 -4575.42 1.03522 0.32809 0.90933 1.93783 -4576.48 1.02939 0.35768 1.13146 1.92156 -4577.53 1.02859 0.36647 0.85448 1.48526 -4578.59 1.01328 0.46179 0.72080 1.53016 -4579.64 0.97942 0.54233 0.68847 1.35026 -4580.69 0.94151 0.67095 0.25358 0.72209 -4581.75 0.92096 0.70266 -0.05593 0.97469 -4582.80 0.94696 0.50551 0.02128 1.13617 -4583.86 0.99168 0.30981 0.25312 1.41992 -4584.92 0.99310 0.33722 0.49578 1.70030 -4585.97 0.95708 0.50691 0.20446 1.07021 -4587.03 0.94122 0.63373 0.50192 0.87829 -4588.08 0.98198 0.49560 0.80303 1.36891 -4589.14 1.02620 0.26448 0.74217 1.75381 -4590.20 1.04303 0.19106 0.75671 1.78428 -4591.25 1.02074 0.30209 0.91811 1.67252 -4592.31 0.98490 0.39581 0.61615 1.57171 -4593.37 0.96664 0.45220 0.35593 1.44592 -4594.43 0.97133 0.46626 0.74003 1.63030 -4595.48 0.99443 0.42856 0.32550 1.76342 -4596.54 0.99695 0.43004 0.31441 1.28460 -4597.60 0.99646 0.37927 0.14423 1.25035 -4598.66 0.99921 0.34208 -0.10204 1.14704 -4599.72 0.99997 0.39363 0.21481 1.22564 -4600.78 0.98667 0.47957 0.43833 1.16895 -4601.84 0.96266 0.55486 0.41067 1.09875 -4602.90 0.96037 0.53460 0.07163 1.03790 -4603.96 0.96734 0.51225 0.35663 1.05289 -4605.02 0.98236 0.48060 0.36420 1.61390 -4606.08 0.99110 0.46591 0.31324 1.58643 -4607.14 0.99519 0.47825 0.59575 1.22719 -4608.20 1.01293 0.38387 0.65619 1.41861 -4609.26 1.03177 0.31729 0.73609 1.76455 -4610.32 1.06000 0.18815 0.74137 2.03793 -4611.38 1.04931 0.24441 0.53394 1.88720 -4612.45 1.01585 0.29780 0.47621 1.57733 -4613.51 0.99933 0.33722 0.43937 1.44484 -4614.57 1.00164 0.36516 0.47220 1.47672 -4615.63 1.02135 0.29838 0.42502 1.61091 -4616.70 1.01465 0.37069 0.81392 1.58796 -4617.76 0.99747 0.39823 0.91045 1.44690 -4618.82 1.00448 0.32137 0.67459 1.55778 -4619.89 1.00176 0.33214 0.39636 1.53151 -4620.95 1.01852 0.31144 0.67091 1.39864 -4622.02 1.04149 0.22649 0.66916 1.53746 -4623.08 1.03134 0.31449 0.77887 1.58830 -4624.14 1.01295 0.40764 0.75979 1.08572 -4625.21 1.00672 0.37745 0.49422 1.05351 -4626.27 0.99569 0.41598 0.69629 1.35518 -4627.34 0.99659 0.43027 0.97860 1.42794 -4628.40 1.02374 0.33578 1.03773 1.61788 -4629.47 1.03852 0.22355 0.99290 2.15218 -4630.54 1.03106 0.20941 0.71827 1.94986 -4631.60 1.03711 0.19576 0.73693 1.66286 -4632.67 1.03511 0.23156 0.64868 1.86324 -4633.74 1.01810 0.29479 0.63930 1.32539 -4634.80 1.01236 0.36381 0.71428 1.39942 -4635.87 1.01885 0.33436 0.85178 1.26251 -4636.94 1.01718 0.32774 0.54222 1.24503 -4638.01 0.99286 0.36609 0.33745 1.36054 -4639.07 0.96425 0.47132 0.22399 0.72898 -4640.14 0.95768 0.57085 0.33693 0.61014 -4641.21 0.97779 0.52389 0.54407 0.83112 -4642.28 1.01854 0.36395 0.76548 1.20470 -4643.35 1.04470 0.20640 0.72387 1.56858 -4644.42 1.02890 0.25199 0.48724 1.79898 -4645.49 0.99359 0.45160 0.70895 1.22928 -4646.56 0.95196 0.60486 0.62271 0.59500 -4647.63 0.92744 0.62966 0.20738 0.44950 -4648.70 0.94180 0.55399 0.10166 0.90809 -4649.77 0.97792 0.43796 0.22718 0.96591 -4650.84 0.99168 0.41746 0.46177 0.81163 -4651.91 0.99318 0.45139 0.65469 1.04913 -4652.98 0.98986 0.45797 0.58971 1.14708 -4654.05 0.98581 0.44649 0.87092 1.15321 -4655.13 0.97131 0.42633 0.48933 1.34774 -4656.20 0.96110 0.43661 0.05660 1.10637 -4657.27 0.97177 0.44062 0.43113 0.88877 -4658.34 1.00746 0.31873 0.56301 1.60018 -4659.41 1.05638 0.14031 0.70253 1.76204 -4660.49 1.08282 0.02998 0.67403 1.49919 -4661.56 1.08073 0.02022 0.70784 1.74704 -4662.63 1.06144 0.14948 0.56597 1.80010 -4663.71 1.03311 0.29424 0.38660 1.91961 -4664.78 1.01604 0.33250 0.29255 1.02608 -4665.86 1.00736 0.42297 0.51147 1.14402 -4666.93 0.96595 0.47844 0.14923 1.07901 -4668.01 0.89558 0.62555 -0.19600 0.58040 -4669.08 0.87137 0.74090 -0.31193 0.31106 -4670.16 0.92471 0.60574 0.07112 0.90894 -4671.23 0.99188 0.35578 0.43163 1.39453 -4672.31 1.02435 0.20983 0.58561 1.68906 -4673.38 1.02562 0.23703 0.39007 1.66204 -4674.46 1.00926 0.26029 0.30834 0.74258 -4675.54 0.99875 0.35531 0.63508 1.19702 -4676.61 1.02428 0.32118 0.92268 1.58071 -4677.69 1.05048 0.16556 0.72014 1.67383 -4678.77 1.02999 0.17663 0.30037 1.50614 -4679.84 0.99567 0.27480 0.12776 1.23284 -4680.92 0.97910 0.36657 -0.00263 1.42776 -4682.00 0.95388 0.50942 0.41828 1.15511 -4683.08 0.95407 0.52471 0.54919 1.01737 -4684.16 0.98177 0.43019 0.51488 1.25478 -4685.23 1.00020 0.31309 0.59901 1.38486 -4686.31 0.99517 0.35745 0.38655 1.29836 -4687.39 0.99331 0.39833 0.58072 1.40219 -4688.47 0.99502 0.36931 0.54100 0.93938 -4689.55 0.99457 0.35010 0.43528 1.26100 -4690.63 0.98514 0.34246 0.59773 1.43207 -4691.71 0.97741 0.32394 0.35473 0.96397 -4692.79 0.96211 0.40087 0.47539 1.40746 -4693.87 0.97045 0.39599 0.75694 1.67962 -4694.95 0.99394 0.34474 0.59439 1.20471 -4696.04 1.00387 0.26854 0.63304 1.41142 -4697.12 1.00583 0.21906 0.81464 1.86192 -4698.20 0.98187 0.34108 0.58851 1.30799 -4699.28 0.94868 0.49089 0.21785 0.63259 -4700.36 0.93442 0.53043 0.13351 1.21136 -4701.44 0.94776 0.44843 0.00310 0.94715 -4702.53 0.92057 0.46172 -0.31232 0.07062 -4703.61 0.86706 0.55114 -0.69507 0.09358 -4704.69 0.87916 0.50028 -0.37225 0.52846 -4705.78 0.92981 0.45272 0.19890 0.75190 -4706.86 0.94012 0.50979 0.51397 0.95308 -4707.94 0.91350 0.54574 0.35545 1.00198 -4709.03 0.90710 0.51035 0.04901 0.50533 -4710.11 0.91424 0.47468 0.02124 0.58567 -4711.20 0.93256 0.48452 0.27263 0.82057 -4712.28 0.97069 0.34404 0.59685 0.98364 -4713.37 0.99609 0.22902 0.49815 1.27295 -4714.45 0.97253 0.30790 0.47650 1.08837 -4715.54 0.94154 0.41531 0.49173 1.09473 -4716.63 0.96270 0.39911 0.47645 0.93858 -4717.71 0.99028 0.39962 0.88867 1.10784 -4718.80 0.99955 0.31442 1.00510 1.09579 -4719.88 1.00852 0.27026 0.98383 1.08193 -4720.97 1.01537 0.25608 1.02548 1.45051 -4722.06 1.01493 0.29726 1.19413 1.33490 -4723.15 1.00945 0.33688 1.06756 1.10596 -4724.23 1.00433 0.40533 0.99301 1.07766 -4725.32 1.02367 0.33661 1.09780 1.12165 -4726.41 1.02686 0.29026 1.05201 1.17520 -4727.50 0.99802 0.36651 0.69433 0.62981 -4728.59 0.95873 0.50025 0.34710 0.51881 -4729.68 0.94791 0.55427 0.24035 0.24531 -4730.76 0.95592 0.48594 0.30713 0.34135 -4731.85 0.96727 0.45258 0.54675 0.47779 -4732.94 0.98017 0.41942 0.68621 0.74590 -4734.03 0.99170 0.40522 0.79225 0.79476 -4735.12 1.00392 0.36109 0.85254 0.60215 -4736.21 0.99645 0.44119 0.94379 0.95116 -4737.31 0.97145 0.48540 0.78554 0.71825 -4738.40 0.96837 0.45389 0.57032 0.58234 -4739.49 0.99154 0.45203 0.92656 0.66672 -4740.58 1.00349 0.43964 0.98207 0.85675 -4741.67 0.99181 0.47664 0.91321 0.61100 -4742.76 0.98338 0.52916 1.06432 0.51458 -4743.85 0.99400 0.48686 1.23393 0.81548 -4744.95 1.01118 0.44257 1.13178 0.81914 -4746.04 1.01708 0.35927 1.05968 0.99982 -4747.13 1.01852 0.33387 1.16055 0.91429 -4748.23 1.03055 0.32131 1.30665 1.02817 -4749.32 1.03067 0.32180 1.18393 1.00327 -4750.41 1.02183 0.36649 1.15709 1.01656 -4751.51 1.01810 0.40043 1.20014 0.98825 -4752.60 1.01191 0.41343 1.16979 0.49775 -4753.70 0.99286 0.51178 1.17010 0.34273 -4754.79 0.97479 0.54395 0.91736 0.18714 -4755.89 0.97081 0.49363 0.80214 0.38709 -4756.98 0.97787 0.46347 0.60777 0.25388 -4758.08 0.97594 0.53567 0.78492 0.03286 -4759.17 0.96960 0.62072 1.19041 0.14199 -4760.27 0.97664 0.60720 1.44580 0.21555 -4761.36 0.98055 0.57002 1.39896 0.39568 -4762.46 0.95988 0.56983 1.04788 0.33272 -4763.56 0.93932 0.63395 0.87439 0.13379 -4764.65 0.94415 0.64286 1.04345 0.30329 -4765.75 0.94277 0.65943 0.85442 0.13236 -4766.85 0.92753 0.75726 0.76934 -0.20274 -4767.95 0.93038 0.76738 0.80936 -0.27999 -4769.04 0.93923 0.76786 1.37656 -0.07181 -4770.14 0.95466 0.77438 1.63445 -0.02914 -4771.24 0.96022 0.77722 1.61554 -0.18828 -4772.34 0.94042 0.77400 1.63645 -0.12203 -4773.44 0.92414 0.85201 1.53191 -0.29910 -4774.54 0.93990 0.82444 1.58291 -0.18810 -4775.64 0.95869 0.81834 1.84637 -0.21169 -4776.74 0.95831 0.88612 2.04303 -0.48959 -4777.84 0.94247 0.97076 2.02170 -0.76293 -4778.94 0.94257 1.00750 2.15107 -0.56745 -4780.04 0.93993 0.98363 2.12113 -0.66018 -4781.14 0.91618 1.01553 2.02373 -0.91575 -4782.24 0.91851 1.03796 1.99617 -1.09405 -4783.34 0.91412 1.02724 1.68072 -0.99693 -4784.44 0.90325 1.04645 1.57277 -0.97880 -4785.54 0.92024 0.91088 1.71583 -0.56312 -4786.65 0.93236 0.81935 1.56004 -0.37083 -4787.75 0.92742 0.77229 1.31445 -0.42096 -4788.85 0.93385 0.73561 1.09371 -0.13870 -4789.95 0.92952 0.78676 1.18963 -0.15247 -4791.06 0.94218 0.72656 1.23624 0.08932 -4792.16 0.96445 0.69001 1.47600 0.45433 -4793.26 0.98293 0.64646 1.55868 0.29367 -4794.37 1.00014 0.61435 1.66737 0.10942 -4795.47 1.01486 0.58542 1.66239 0.09386 -4796.58 1.02525 0.51170 1.94272 0.28622 -4797.68 1.02021 0.45888 1.80332 0.57713 -4798.79 1.00614 0.47373 1.29176 0.38637 -4799.89 0.98124 0.53529 1.26757 0.18296 -4801.00 0.97042 0.62680 1.28969 0.28081 -4802.10 0.98723 0.54735 1.21639 0.19780 -4803.21 1.01531 0.45363 1.70100 0.34290 -4804.31 1.02296 0.35913 1.44596 0.55003 -4805.42 1.01593 0.32465 1.31751 0.85799 -4806.53 1.00374 0.38384 1.41437 0.79349 -4807.63 0.99314 0.42970 1.25764 0.75833 -4808.74 0.99696 0.41889 1.15366 0.65730 -4809.85 1.00577 0.36765 1.09533 0.50308 -4810.96 1.01747 0.38970 1.48661 0.59238 -4812.06 1.02127 0.35930 1.43680 0.50542 -4813.17 1.01245 0.39243 1.39456 0.54161 -4814.28 1.01041 0.42457 1.35945 0.42346 -4815.39 1.01212 0.40681 1.23085 0.33355 -4816.50 1.01438 0.40792 1.57105 0.53214 -4817.61 1.01944 0.40393 1.74516 0.80867 -4818.72 1.02086 0.40058 1.54612 0.72686 -4819.83 1.01883 0.44247 1.68064 0.60996 -4820.94 1.01754 0.41365 1.70212 0.39582 -4822.05 1.01012 0.39802 1.73749 0.65652 -4823.16 0.97881 0.60871 1.62258 0.21552 -4824.27 0.93603 0.65077 1.22084 -0.03738 -4825.38 0.94200 0.62394 1.24389 -0.00711 -4826.49 0.98050 0.53526 1.45896 0.38456 -4827.60 0.99124 0.49664 1.56391 0.40305 -4828.71 0.96761 0.59578 1.67624 -0.11053 -4829.82 0.94979 0.63113 1.68545 0.13319 -4830.94 0.95086 0.57687 1.47301 0.23306 -4832.05 0.94990 0.62391 1.30759 -0.10894 -4833.16 0.93692 0.62428 1.48221 0.15170 -4834.27 0.95242 0.55981 1.42793 0.34737 -4835.39 0.97364 0.51040 1.40373 0.42226 -4836.50 0.96398 0.50277 1.67409 0.46846 -4837.62 0.95385 0.52911 1.47227 0.33704 -4838.73 0.94861 0.52458 1.45684 0.05738 -4839.84 0.93592 0.48997 1.09007 0.27285 -4840.96 0.92902 0.44815 0.76381 0.48780 -4842.07 0.92998 0.43533 1.02550 0.58629 -4843.19 0.92717 0.51437 1.20419 0.33050 -4844.30 0.91852 0.53087 1.34494 0.35909 -4845.42 0.93238 0.49704 1.36997 0.84227 -4846.53 0.96858 0.30369 1.54206 0.80359 -4847.65 0.97080 0.23673 1.68015 0.90447 -4848.77 0.95697 0.26317 1.42259 0.67878 -4849.88 0.95328 0.23393 1.24284 0.91312 -4851.00 0.96360 0.18549 1.57669 1.19007 -4852.12 0.95843 0.23163 1.50401 0.51068 -4853.24 0.95484 0.22914 1.43999 0.45108 -4854.35 0.95830 0.16189 1.62280 0.64599 -4855.47 0.93428 0.18879 1.46028 0.80672 -4856.59 0.90820 0.19422 1.26389 0.58933 -4857.71 0.90962 0.10091 1.30907 0.45692 -4858.83 0.92002 -0.07264 1.53682 0.67169 -4859.94 0.86157 -0.06371 1.48535 0.42957 -4861.06 0.74980 -0.20552 1.18075 0.30225 -4862.18 0.69461 -0.39016 1.11402 0.58531 -4863.30 0.74138 -0.37366 1.06567 0.88518 -4864.42 0.83438 -0.17265 1.22610 0.33674 -4865.54 0.89522 -0.01821 1.46885 0.35782 -4866.66 0.91956 0.05427 1.19416 0.58698 -4867.78 0.93324 0.07408 1.26075 0.38965 -4868.91 0.93326 0.18234 1.45099 0.51298 -4870.03 0.92606 0.28678 1.26426 0.33749 -4871.15 0.87415 0.41919 0.81012 -0.27919 -4872.27 0.81093 0.57714 0.13614 -0.37953 -4873.39 0.82294 0.54523 0.01473 -0.41932 -4874.51 0.89315 0.42478 0.48155 -0.11926 -4875.64 0.93439 0.35431 1.15011 0.38283 -4876.76 0.93919 0.34460 1.28794 0.48321 -4877.88 0.93723 0.32472 1.04997 0.67066 -4879.01 0.92989 0.33178 1.05270 0.35656 -4880.13 0.94116 0.32701 1.13559 0.58346 -4881.25 0.96785 0.31670 1.33191 0.57761 -4882.38 0.95262 0.43055 1.23996 0.14940 -4883.50 0.94444 0.41382 1.08386 0.43630 -4884.63 0.95680 0.34631 1.20425 0.46174 -4885.75 0.94143 0.41919 0.97904 -0.22755 -4886.88 0.91875 0.46466 0.48808 -0.10737 -4888.00 0.91815 0.47256 0.42482 -0.17284 -4889.13 0.92207 0.46844 0.56436 0.01891 -4890.25 0.89354 0.48577 0.23770 -0.19125 -4891.38 0.82827 0.64056 -0.48998 -0.62091 -4892.51 0.81561 0.68745 -0.64306 -0.83609 -4893.63 0.89853 0.49956 -0.00661 -0.34042 -4894.76 0.99719 0.23974 0.90365 0.29448 -4895.89 1.03533 0.16223 1.50772 0.42992 -4897.01 1.03762 0.16064 1.42207 0.57628 -4898.14 1.03670 0.12969 1.47117 0.70683 -4899.27 1.01906 0.22823 1.50832 0.26550 -4900.40 0.99293 0.28213 1.28202 0.51701 -4901.53 0.98532 0.30445 1.11883 0.61069 -4902.66 0.98189 0.33021 1.20338 0.37997 -4903.78 0.95947 0.38081 0.95580 -0.20623 -4904.91 0.95371 0.37517 0.71611 -0.22160 -4906.04 0.98595 0.28738 0.90548 0.20330 -4907.17 1.02439 0.16729 0.98737 0.41348 -4908.30 1.02284 0.13699 0.82881 0.32011 -4909.43 0.99904 0.18345 0.47292 0.15814 -4910.56 0.96487 0.22181 0.17922 0.32713 -4911.69 0.95184 0.22568 -0.05671 0.23359 -4912.83 0.97194 0.18830 0.20794 0.35094 -4913.96 0.97841 0.23939 0.44657 0.21305 -4915.09 0.97926 0.32884 0.81002 -0.12269 -4916.22 0.99582 0.30429 0.95822 0.08597 -4917.35 1.00404 0.21500 0.63711 0.08944 -4918.48 0.94601 0.34871 0.11735 -0.19496 -4919.62 0.83718 0.60505 -0.68464 -1.10842 -4920.75 0.76051 0.81295 -1.31624 -1.76761 -4921.88 0.78631 0.81105 -0.96086 -1.17725 -4923.02 0.87543 0.51782 -0.49946 -0.50819 -4924.15 0.92836 0.31651 0.10561 -0.51294 -4925.28 0.93529 0.32442 0.47040 -0.22541 -4926.42 0.95287 0.30644 0.41609 -0.16237 -4927.55 0.98758 0.19986 0.44826 -0.06999 -4928.69 1.01265 0.07477 0.23828 0.28344 -4929.82 1.02138 0.06093 0.68251 0.50027 -4930.96 1.02222 0.11132 0.74919 0.44039 -4932.09 1.01456 0.12954 0.84897 0.10892 -4933.23 0.98477 0.20047 0.91315 0.30203 -4934.37 0.93912 0.33604 0.39124 0.22679 -4935.50 0.93419 0.31842 0.27023 -0.15565 -4936.64 0.96453 0.22670 0.46776 0.28861 -4937.78 0.95211 0.32160 0.38709 -0.22452 -4938.91 0.90320 0.46978 0.01236 -0.48174 -4940.05 0.87785 0.52884 -0.16042 -0.65714 -4941.19 0.92103 0.46260 0.06029 -0.53179 -4942.33 0.97921 0.35037 0.79199 -0.13210 -4943.46 0.99651 0.33619 1.09035 -0.02804 -4944.60 1.01148 0.24839 1.08904 -0.01621 -4945.74 1.01012 0.26113 1.08258 -0.08693 -4946.88 0.99228 0.30990 0.79674 -0.16421 -4948.02 1.00475 0.22039 0.60194 -0.13646 -4949.16 1.02492 0.13919 0.91709 0.15044 -4950.30 1.03635 0.11299 0.81326 0.49421 -4951.44 1.03607 0.08303 0.64886 0.30852 -4952.58 1.02992 0.13203 0.88992 0.28702 -4953.72 1.02200 0.15660 0.93257 0.23912 -4954.86 1.00972 0.27185 0.96606 0.10232 -4956.00 0.98022 0.46105 1.05897 -0.12949 -4957.14 0.90382 0.57511 0.46816 -0.68091 -4958.28 0.80780 0.75071 -0.48071 -1.00766 -4959.43 0.83020 0.70982 -0.61120 -0.95655 -4960.57 0.94930 0.42616 0.45361 -0.28538 -4961.71 1.00618 0.39896 1.44504 0.09328 -4962.85 0.99935 0.44969 1.54390 -0.06914 -4964.00 0.99308 0.44824 1.53102 -0.42649 -4965.14 0.98150 0.49596 1.35281 -0.36111 -4966.28 0.96360 0.46266 0.94249 -0.33006 -4967.43 0.95185 0.49265 0.82261 -0.68532 -4968.57 0.94278 0.55710 0.88562 -0.59138 -4969.71 0.94640 0.54419 0.98994 -0.34462 -4970.86 0.95920 0.49003 0.82010 -0.23918 -4972.00 0.98602 0.31360 0.62834 -0.01579 -4973.15 1.00820 0.27640 0.95873 0.06829 -4974.29 1.01568 0.25334 1.15462 0.36384 -4975.44 1.01046 0.31738 1.30904 -0.03488 -4976.58 1.00769 0.34200 1.09683 0.00003 -4977.73 1.00109 0.32971 0.95316 0.03532 -4978.88 0.98203 0.40833 0.72852 -0.51529 -4980.02 0.96791 0.40371 0.62394 -0.41681 -4981.17 0.95247 0.46798 0.63266 -0.50131 -4982.32 0.88921 0.74713 0.56952 -1.24164 -4983.46 0.82905 0.87934 0.07327 -1.79856 -4984.61 0.84362 0.70415 -0.34497 -1.30441 -4985.76 0.88174 0.56024 -0.08433 -0.71072 -4986.91 0.91701 0.55720 0.15129 -0.58113 -4988.06 0.95645 0.49212 0.83330 -0.46537 -4989.21 0.96439 0.55665 1.18164 -0.41887 -4990.35 0.93368 0.63302 1.14615 -0.74938 -4991.50 0.90782 0.67799 1.11997 -0.63140 -4992.65 0.92046 0.66093 1.14096 -0.52798 -4993.80 0.94930 0.56384 1.09186 -0.54759 -4994.95 0.94761 0.50756 0.96471 -0.67699 -4996.10 0.95309 0.51409 1.05998 -0.36589 -4997.25 0.97118 0.50233 1.06028 -0.26074 -4998.40 0.97183 0.44768 0.94258 -0.62489 -4999.55 0.94517 0.57219 0.97565 -0.28644 -5000.71 0.89499 0.76537 0.69477 -1.32968 -5001.86 0.86911 0.79219 0.61279 -1.42837 -5003.01 0.88862 0.72579 0.42889 -0.87263 -5004.16 0.92338 0.57606 0.57925 -0.37051 -5005.31 0.92361 0.50121 0.52315 -0.39552 -5006.47 0.87107 0.62631 0.12092 -1.08067 -5007.62 0.83204 0.77217 0.08496 -1.34429 -5008.77 0.86178 0.79471 0.49356 -1.15133 -5009.93 0.91966 0.72209 0.97667 -1.01174 -5011.08 0.94613 0.58669 1.12098 -0.70438 -5012.23 0.92220 0.50748 0.46472 -0.75457 -5013.39 0.87430 0.64392 0.35801 -0.58105 -5014.54 0.83061 0.84084 0.29857 -1.09539 -5015.70 0.81568 0.97595 0.32580 -1.49981 -5016.85 0.85212 0.81551 0.31141 -0.97193 -5018.01 0.89340 0.59364 0.58454 -0.78770 -5019.16 0.91005 0.44523 0.47502 -0.60853 -5020.32 0.93233 0.40863 0.67124 -0.52431 -5021.48 0.92906 0.54573 0.83736 -0.71280 -5022.63 0.89137 0.76341 0.59853 -0.94507 -5023.79 0.86613 0.86622 0.49618 -1.25023 -5024.95 0.89416 0.71495 0.59529 -0.95670 -5026.10 0.92858 0.58504 1.00166 -0.58047 -5027.26 0.92198 0.58335 0.71962 -0.74468 -5028.42 0.88821 0.69592 0.38684 -1.16979 -5029.58 0.89008 0.75770 0.71417 -1.08907 -5030.73 0.93093 0.60003 0.82931 -0.66111 -5031.89 0.95156 0.48339 1.06456 -0.59260 -5033.05 0.95168 0.51814 1.31238 -0.63065 -5034.21 0.95844 0.55797 1.21349 -0.79429 -5035.37 0.93549 0.59032 1.42619 -0.84647 -5036.53 0.87886 0.78288 0.93634 -1.12021 -5037.69 0.87087 0.77807 0.41083 -1.27492 -5038.85 0.89258 0.71001 0.66263 -1.05250 -5040.01 0.86539 0.76047 0.64290 -1.37918 -5041.17 0.79664 0.92119 0.20567 -1.69969 -5042.33 0.76546 0.97491 -0.25743 -1.47173 -5043.49 0.81871 0.83986 -0.07855 -1.33729 -5044.65 0.89084 0.68265 0.60486 -1.34268 -5045.82 0.92654 0.65416 1.19093 -1.03861 -5046.98 0.96327 0.51141 1.37322 -0.51995 -5048.14 0.96850 0.44148 1.22503 -0.59664 -5049.30 0.92343 0.56089 0.61138 -0.98525 -5050.46 0.86604 0.74291 0.27849 -1.46489 -5051.63 0.84939 0.79404 0.27464 -1.52365 -5052.79 0.88988 0.64431 0.53701 -0.88679 -5053.95 0.91591 0.63111 0.91231 -1.06235 -5055.12 0.92094 0.74652 1.17851 -1.41118 -5056.28 0.91927 0.80053 1.12398 -1.69639 -5057.45 0.93297 0.71484 1.22252 -1.51430 -5058.61 0.94889 0.58041 1.33140 -1.11456 -5059.78 0.94942 0.58919 1.39193 -0.85746 -5060.94 0.94528 0.58050 1.33485 -0.90571 -5062.11 0.94438 0.60752 1.21127 -1.15738 -5063.27 0.94286 0.65499 1.22740 -1.27609 -5064.44 0.91137 0.72735 1.08258 -1.49559 -5065.61 0.85816 0.87925 0.89212 -1.61717 -5066.77 0.85232 0.87830 0.61748 -1.75703 -5067.94 0.87736 0.84033 0.51659 -1.38323 -5069.11 0.86116 0.88827 0.72551 -1.61720 -5070.27 0.86379 0.91416 0.89737 -1.98001 -5071.44 0.88384 0.84370 1.07062 -1.75322 -5072.61 0.87131 0.88429 0.84845 -1.71495 -5073.78 0.86481 0.86689 0.53609 -2.00591 -5074.95 0.89191 0.67842 0.72554 -1.52241 -5076.11 0.90008 0.70930 0.95547 -1.20669 -5077.28 0.88247 0.84055 1.07830 -1.63417 -5078.45 0.87994 0.84189 0.89895 -1.94440 -5079.62 0.86201 0.75294 0.72022 -1.47958 -5080.79 0.82607 0.74214 0.13690 -1.16527 -5081.96 0.81984 0.87540 0.12548 -1.49878 -5083.13 0.81972 0.97954 0.43610 -1.84313 -5084.30 0.82565 0.99346 0.44117 -2.05667 -5085.47 0.85725 0.83234 0.45470 -1.83829 -5086.64 0.90027 0.73147 0.72702 -1.88864 -5087.82 0.91615 0.72036 1.13341 -1.71402 -5088.99 0.89575 0.79458 0.93230 -1.74157 -5090.16 0.88767 0.83676 1.14846 -1.59086 -5091.33 0.88931 0.84629 1.13550 -1.63099 -5092.50 0.90680 0.73713 1.08400 -1.67783 -5093.68 0.93858 0.58467 1.09333 -0.94329 -5094.85 0.93680 0.61406 1.17805 -1.12974 -5096.02 0.89142 0.90159 1.28916 -1.91537 -5097.20 0.87489 0.88574 0.83571 -1.91956 -5098.37 0.88045 0.69135 0.31985 -1.49366 -5099.54 0.85576 0.71504 0.23758 -1.47141 -5100.72 0.82178 0.90272 0.34390 -1.63235 -5101.89 0.82959 1.02897 0.82375 -2.25226 -5103.07 0.85626 1.03302 1.29573 -2.30540 -5104.24 0.86617 0.97920 1.23358 -2.18494 -5105.42 0.86005 1.00335 0.99514 -2.31092 -5106.59 0.84702 1.00168 0.84203 -2.17060 -5107.77 0.83551 0.95337 0.54092 -1.99144 -5108.95 0.83394 0.90822 0.40819 -2.00254 -5110.12 0.85061 0.80661 0.33833 -1.85546 -5111.30 0.85753 0.81257 0.35162 -1.71559 -5112.48 0.86566 0.84102 0.79015 -1.72951 -5113.65 0.87653 0.87122 1.03090 -2.16297 -5114.83 0.88543 0.82753 1.17551 -1.63920 -5116.01 0.90029 0.68048 0.91387 -1.36130 -5117.19 0.90076 0.66634 0.93766 -1.17890 -5118.37 0.90338 0.70510 1.10488 -1.50921 -5119.54 0.90572 0.71425 1.10071 -1.48701 -5120.72 0.87890 0.86879 1.28637 -1.75013 -5121.90 0.86705 0.91229 0.86562 -2.09236 -5123.08 0.86058 0.83740 0.53910 -1.74212 -5124.26 0.82921 0.92049 0.47196 -1.76540 -5125.44 0.80110 1.03240 0.46362 -2.03495 -5126.62 0.80269 1.01241 0.35564 -2.59438 -5127.80 0.81979 0.98417 0.57920 -2.24725 -5128.98 0.82534 0.98550 0.63571 -2.04816 -5130.17 0.80310 1.05659 0.64701 -2.28912 -5131.35 0.80550 1.08424 0.60391 -2.37861 -5132.53 0.85295 0.83178 0.63643 -1.55641 -5133.71 0.87084 0.68947 0.66220 -1.55530 -5134.89 0.86190 0.76500 0.38714 -2.08218 -5136.07 0.87306 0.76711 0.51707 -2.05229 -5137.26 0.88367 0.68651 0.58315 -1.72654 -5138.44 0.85336 0.70630 0.31968 -1.46938 -5139.62 0.80712 0.75032 -0.13491 -1.90251 -5140.81 0.80587 0.75437 -0.05453 -1.70406 -5141.99 0.83836 0.64406 0.00670 -1.44299 -5143.18 0.83566 0.67704 -0.09393 -1.33279 -5144.36 0.82592 0.72541 -0.00648 -1.33333 -5145.54 0.83879 0.78164 0.20068 -1.75126 -5146.73 0.82440 0.97688 0.56923 -1.86334 -5147.91 0.81977 0.95197 0.40240 -1.96545 -5149.10 0.84113 0.77975 0.11004 -2.13435 -5150.29 0.84036 0.79868 0.27074 -1.86423 -5151.47 0.81634 0.92530 0.36005 -2.03314 -5152.66 0.79483 0.99863 0.55179 -2.33052 -5153.84 0.78240 1.10327 0.55348 -2.40741 -5155.03 0.77276 1.19569 0.51780 -2.94333 -5156.22 0.80012 1.06649 0.48809 -2.35720 -5157.41 0.85658 0.77088 0.59286 -1.86463 -5158.59 0.89474 0.60893 0.63241 -1.71469 -5159.78 0.90230 0.55047 0.51858 -1.54453 -5160.97 0.90173 0.56872 0.51014 -1.52265 -5162.16 0.89644 0.51858 0.35282 -1.42437 -5163.35 0.86648 0.60531 0.11204 -1.69296 -5164.54 0.84592 0.66450 -0.17984 -1.75761 -5165.73 0.81617 0.74209 -0.45145 -1.95353 -5166.92 0.69704 0.98931 -1.11847 -2.40688 -5168.11 0.58437 1.11399 -1.91380 -2.55057 -5169.30 0.58560 1.06434 -2.05425 -2.61819 -5170.49 0.65902 1.02789 -1.34838 -2.57228 -5171.68 0.65645 1.16135 -1.02751 -2.74214 -5172.87 0.56215 1.17581 -2.26075 -2.67183 -5174.06 0.51689 1.18142 -2.79559 -2.31741 -5175.25 0.60881 1.23316 -1.87728 -2.56604 -5176.44 0.73432 1.11451 -0.65819 -2.82503 -5177.63 0.78236 1.11233 0.05869 -2.89000 -5178.83 0.78635 1.12321 0.25862 -3.13762 -5180.02 0.77770 1.20498 0.18261 -3.17989 -5181.21 0.74331 1.29647 -0.24851 -3.47606 -5182.40 0.66803 1.38058 -0.97980 -3.58920 -5183.60 0.56047 1.32531 -2.16603 -3.13767 -5184.79 0.50690 1.14524 -3.15575 -2.46361 -5185.99 0.59239 0.99680 -2.77358 -2.60032 -5187.18 0.72967 0.89768 -1.36266 -2.57034 -5188.37 0.81618 0.73236 -0.25774 -2.18210 -5189.57 0.84410 0.58440 -0.17630 -1.88148 -5190.76 0.86564 0.49837 0.38433 -1.53726 -5191.96 0.84606 0.51096 0.20924 -1.52788 -5193.16 0.79199 0.69283 -0.25622 -1.84614 -5194.35 0.79845 0.72205 -0.25570 -1.86388 -5195.55 0.84047 0.58392 0.10898 -1.32120 -5196.74 0.86283 0.49044 0.15516 -1.07875 -5197.94 0.89302 0.34338 0.20944 -1.12618 -5199.14 0.92182 0.23520 0.50238 -1.04546 -5200.34 0.92635 0.33028 0.67267 -0.75738 -5201.53 0.92503 0.37988 0.84608 -1.12231 -5202.73 0.89904 0.48816 0.85064 -1.41794 -5203.93 0.84923 0.74204 1.01071 -1.59526 -5205.13 0.78577 0.96387 0.77892 -2.32295 -5206.33 0.72209 1.21649 0.18429 -2.72041 -5207.52 0.69615 1.32016 0.06110 -2.83825 -5208.72 0.69041 1.37012 0.02092 -3.21160 -5209.92 0.68469 1.39656 -0.10314 -3.42205 -5211.12 0.73822 1.21457 -0.04326 -2.77733 -5212.32 0.84696 0.72473 0.43419 -1.64689 -5213.52 0.94182 0.27180 0.68799 -0.80294 -5214.72 0.97804 0.06483 0.67021 -0.58182 -5215.93 0.94713 0.09144 0.39285 -0.60159 -5217.13 0.90989 0.18433 -0.00257 -0.78237 -5218.33 0.92356 0.10667 -0.03026 -0.56421 -5219.53 0.95719 0.00552 0.22484 -0.15097 -5220.73 0.99651 -0.09219 0.42454 0.15836 -5221.93 1.01663 -0.16713 0.42982 0.18264 -5223.14 1.00538 -0.12579 0.62041 -0.01533 -5224.34 0.96648 0.07234 0.48556 -0.52726 -5225.54 0.91135 0.29385 0.28247 -0.55282 -5226.75 0.84526 0.36942 -0.21743 -0.95217 -5227.95 0.80416 0.37950 -0.77910 -1.24696 -5229.15 0.84907 0.25213 -0.68517 -0.82323 -5230.36 0.93215 0.06334 -0.13543 -0.45322 -5231.56 0.96750 -0.02292 0.12674 -0.54156 -5232.77 0.93319 0.10498 0.06365 -0.71518 -5233.97 0.88682 0.22247 -0.17096 -0.95242 -5235.18 0.90688 0.08798 -0.23166 -0.71618 -5236.38 0.96795 -0.13706 -0.00050 0.11434 -5237.59 1.00559 -0.22294 0.32868 0.16063 -5238.79 1.01510 -0.20307 0.58614 0.03601 -5240.00 1.01224 -0.15006 0.42386 -0.00858 -5241.21 1.01042 -0.16686 0.43299 0.01892 -5242.41 1.00316 -0.11589 0.68971 -0.26942 -5243.62 0.99778 -0.11801 0.57598 0.11026 -5244.83 1.01345 -0.19196 0.33634 0.26238 -5246.04 1.01650 -0.18821 0.57222 0.18990 -5247.25 0.98336 0.00824 0.83430 -0.41129 -5248.45 0.95261 0.11343 0.54321 -0.57945 -5249.66 0.95703 0.06756 0.53188 -0.14468 -5250.87 0.95653 0.01658 0.47601 -0.02427 -5252.08 0.94061 0.06835 0.46131 -0.30390 -5253.29 0.94905 0.03624 0.42247 -0.20378 -5254.50 0.96161 0.00788 0.44741 -0.20847 -5255.71 0.95788 0.00537 0.21108 -0.21974 -5256.92 0.97433 -0.04639 0.20696 -0.11478 -5258.13 1.00831 -0.16678 0.46842 0.11192 -5259.34 1.02896 -0.22810 0.68274 0.08187 -5260.55 1.01984 -0.21466 0.75602 -0.00781 -5261.76 0.97981 -0.08538 0.52554 -0.32344 -5262.98 0.90451 0.18966 0.30882 -0.89638 -5264.19 0.84464 0.38297 -0.12651 -1.01105 -5265.40 0.81181 0.48891 -0.44121 -1.07656 -5266.61 0.78600 0.57811 -0.46466 -1.26797 -5267.83 0.80487 0.51220 -0.61903 -1.38582 -5269.04 0.80892 0.55204 -0.48011 -1.52873 -5270.25 0.72621 0.77047 -0.74386 -1.99569 -5271.47 0.71022 0.73691 -1.19905 -1.95932 -5272.68 0.82418 0.42545 -0.47121 -1.40040 -5273.89 0.91245 0.15134 0.19663 -0.56198 -5275.11 0.93073 0.01765 -0.21084 -0.37255 -5276.32 0.94272 -0.05570 -0.25889 -0.29378 -5277.54 0.96688 -0.15528 -0.03593 -0.15195 -5278.75 1.00797 -0.24154 0.35434 0.07906 -5279.97 1.03207 -0.26944 0.75143 0.10504 -5281.18 1.00086 -0.18462 0.47225 -0.15340 -5282.40 0.94686 -0.00988 0.27649 -0.35609 -5283.62 0.90860 0.12321 -0.23253 -0.97175 -5284.83 0.90516 0.09021 -0.35806 -0.91616 -5286.05 0.96426 -0.11773 0.06316 -0.20167 -5287.27 1.02923 -0.33427 0.52737 0.07876 -5288.49 1.03527 -0.36455 0.64799 0.19119 -5289.70 1.02252 -0.28656 0.60829 0.33584 -5290.92 1.02585 -0.27257 0.71477 -0.03279 -5292.14 1.03124 -0.24227 1.04488 0.21307 -5293.36 1.02739 -0.26426 0.87127 0.14875 -5294.58 1.02545 -0.31677 0.67827 0.23786 -5295.80 1.01531 -0.23958 0.72259 0.40596 -5297.02 0.95797 0.00674 0.58960 -0.41772 -5298.24 0.89021 0.31479 0.25558 -1.10620 -5299.46 0.87722 0.32428 0.07137 -1.28440 -5300.68 0.92472 0.13760 0.20075 -0.55878 -5301.90 0.95952 0.00578 0.45735 -0.36863 -5303.12 0.95813 -0.07755 0.19482 -0.25019 -5304.34 0.98550 -0.21035 0.05990 -0.03224 -5305.56 1.02719 -0.33363 0.51184 0.14254 -5306.78 1.03291 -0.34013 0.67956 0.27303 -5308.01 1.02133 -0.30630 0.60685 0.15285 -5309.23 1.02592 -0.28806 0.51633 0.20924 -5310.45 1.03684 -0.33099 0.86859 0.28017 -5311.67 1.04565 -0.37328 0.84345 0.20292 -5312.90 1.04147 -0.37011 0.78895 0.25207 -5314.12 1.03340 -0.32745 0.72076 0.29540 -5315.34 1.02941 -0.29879 0.56885 0.06637 -5316.57 1.02674 -0.35378 0.59492 0.18957 -5317.79 1.01918 -0.44277 0.29553 0.48789 -5319.02 1.02406 -0.39350 0.40409 0.40260 -5320.24 1.02387 -0.30669 0.46907 0.09547 -5321.47 1.01150 -0.23684 0.71818 0.06132 -5322.69 1.00301 -0.23726 0.74035 0.13002 -5323.92 0.96759 -0.16738 0.18899 -0.06918 -5325.14 0.91909 0.02922 -0.30222 -0.82190 -5326.37 0.92300 0.02887 -0.14342 -0.86211 -5327.60 0.89565 0.16733 0.04030 -1.09363 -5328.82 0.78502 0.50396 -0.62962 -1.67412 -5330.05 0.76361 0.53778 -1.01702 -1.91275 -5331.28 0.87987 0.21853 -0.33906 -1.04799 -5332.51 0.97417 -0.10543 0.24993 -0.12674 -5333.73 0.98253 -0.18106 0.32676 -0.01748 -5334.96 0.99536 -0.24544 0.47841 0.02319 -5336.19 1.01367 -0.31115 0.52492 0.41644 -5337.42 1.00915 -0.30513 0.76075 0.20909 -5338.65 1.00362 -0.27336 0.62760 -0.05711 -5339.88 0.97579 -0.15177 0.43312 -0.30673 -5341.11 0.92581 0.00810 -0.09960 -0.81208 -5342.34 0.91521 0.01107 -0.27811 -0.77318 -5343.57 0.96826 -0.15874 0.10941 -0.42644 -5344.80 0.98877 -0.16039 0.39014 -0.41433 -5346.03 0.96782 -0.04553 0.56544 -0.34403 -5347.26 0.95989 -0.07372 0.65701 -0.32720 -5348.49 0.96183 -0.08611 0.48062 -0.46286 -5349.72 0.94713 -0.02166 0.38693 -0.49574 -5350.96 0.95447 -0.11103 0.19225 -0.24405 -5352.19 1.00950 -0.34559 0.29819 0.17181 -5353.42 1.03006 -0.41100 0.35401 0.16753 -5354.65 1.01103 -0.29079 0.46412 -0.11408 -5355.89 1.02508 -0.33305 0.52953 0.09170 -5357.12 1.04830 -0.44273 0.52382 0.18308 -5358.35 1.05770 -0.48825 0.62515 0.31035 -5359.59 1.05665 -0.54055 0.48008 0.48564 -5360.82 1.05106 -0.49839 0.57035 0.62163 -5362.06 1.03923 -0.44147 0.39986 0.45618 -5363.29 1.02687 -0.41835 0.16834 0.14797 -5364.53 1.00873 -0.39271 0.13716 0.06990 -5365.76 0.98760 -0.29161 0.12532 0.00371 -5367.00 0.97729 -0.29754 -0.17722 -0.12806 -5368.23 0.98056 -0.32848 -0.16135 -0.09805 -5369.47 0.96945 -0.25736 -0.02204 -0.21884 -5370.71 0.90811 -0.01362 -0.10278 -0.74905 -5371.94 0.83222 0.29616 -0.33911 -1.61963 -5373.18 0.84930 0.21494 -0.57177 -1.53746 -5374.42 0.94571 -0.10568 -0.18169 -0.77645 -5375.65 1.01356 -0.34807 0.26747 0.10967 -5376.89 1.03562 -0.45106 0.40164 0.13737 -5378.13 1.03155 -0.44709 0.35062 0.03394 -5379.37 1.03240 -0.50704 0.05628 0.29789 -5380.61 1.04000 -0.57063 0.00238 0.53969 -5381.85 1.02753 -0.53671 0.15510 0.38720 -5383.09 1.00185 -0.45649 0.01770 -0.01161 -5384.33 0.97198 -0.31086 -0.10210 -0.30287 -5385.57 0.98200 -0.29535 -0.09352 -0.38913 -5386.81 1.01992 -0.46924 -0.09756 0.11247 -5388.05 1.03411 -0.54491 0.00100 0.28166 -5389.29 1.01960 -0.42955 0.16492 0.04816 -5390.53 0.99346 -0.32746 0.09791 -0.11206 -5391.77 0.97784 -0.28195 -0.08503 -0.21675 -5393.01 0.97141 -0.27762 -0.24649 -0.39884 -5394.25 0.95082 -0.19294 -0.22953 -0.55680 -5395.50 0.94945 -0.15026 -0.22651 -0.68020 -5396.74 0.93483 -0.06914 -0.03647 -0.77737 -5397.98 0.88407 0.11491 -0.38175 -1.29288 -5399.22 0.90544 -0.04251 -0.68155 -1.13316 -5400.47 0.96466 -0.27405 -0.29720 -0.21271 -5401.71 0.98603 -0.34852 -0.14540 -0.20962 -5402.95 0.99273 -0.36996 -0.21801 -0.25260 -5404.20 0.96408 -0.26860 -0.01036 -0.29908 -5405.44 0.88881 -0.01654 -0.53558 -1.03580 -5406.69 0.83763 0.19229 -0.95782 -1.69917 -5407.93 0.88813 0.04136 -0.55236 -1.13227 -5409.18 0.94218 -0.11588 0.10066 -0.77063 -5410.42 0.91497 0.04744 0.31174 -0.96932 -5411.67 0.90015 0.04227 -0.14191 -1.14637 -5412.92 0.95344 -0.20901 0.09113 -0.55197 -5414.16 0.99542 -0.39529 0.25407 -0.13420 -5415.41 0.98858 -0.46563 -0.12428 -0.04283 -5416.66 0.98449 -0.48811 -0.46729 0.29594 -5417.90 1.00463 -0.48022 -0.16576 0.03210 -5419.15 1.03111 -0.56731 -0.03368 0.07427 -5420.40 1.02050 -0.52886 0.09006 0.22715 -5421.65 1.00189 -0.43106 0.09674 -0.20725 -5422.90 1.00900 -0.48581 -0.08375 -0.12093 -5424.15 0.99415 -0.48456 -0.24158 0.05549 -5425.39 0.96614 -0.37867 -0.58860 -0.45294 -5426.64 0.98270 -0.42427 -0.32134 -0.20180 -5427.89 1.02330 -0.54416 -0.00360 0.22617 -5429.14 0.99711 -0.43680 -0.04573 -0.25895 -5430.39 0.90726 -0.08850 -0.14850 -1.05839 -5431.64 0.89448 -0.01054 -0.32809 -0.86620 -5432.90 0.94897 -0.17483 -0.06647 -0.87964 -5434.15 0.94048 -0.16807 0.08642 -0.72222 -5435.40 0.89928 -0.04248 -0.18921 -0.82002 -5436.65 0.91608 -0.12802 -0.47186 -0.93698 -5437.90 0.97240 -0.31627 -0.21829 -0.42826 -5439.15 1.00073 -0.35021 0.21111 -0.35012 -5440.41 1.01963 -0.43306 0.47362 -0.11337 -5441.66 1.03688 -0.54518 0.31315 0.14274 -5442.91 1.04390 -0.65042 -0.00480 0.17134 -5444.17 1.03108 -0.60010 0.09174 0.25376 -5445.42 0.99126 -0.46195 -0.08416 -0.36236 -5446.67 0.91140 -0.13679 -0.16092 -0.96736 -5447.93 0.85841 0.09760 -0.14349 -1.22965 -5449.18 0.90124 -0.04839 0.00074 -0.78838 -5450.44 0.98211 -0.30563 0.41255 -0.12069 -5451.69 1.00847 -0.36925 0.82975 -0.05808 -5452.95 1.00943 -0.41965 0.81131 -0.17859 -5454.20 0.99570 -0.33911 0.63403 -0.34236 -5455.46 0.93794 -0.17419 0.37157 -0.61219 -5456.72 0.88966 -0.06642 0.09751 -0.73249 -5457.97 0.92917 -0.17872 -0.12973 -0.48118 -5459.23 1.00195 -0.42379 0.12598 0.20274 -5460.49 1.01744 -0.53125 0.63343 0.29008 -5461.74 1.00910 -0.44002 0.41833 0.12913 -5463.00 0.98230 -0.31299 0.07793 -0.35069 -5464.26 0.95659 -0.27170 -0.12033 -0.59248 -5465.52 0.96932 -0.34732 -0.00082 -0.26024 -5466.78 1.00359 -0.46331 0.06932 0.08457 -5468.04 1.01508 -0.54926 0.16007 -0.04887 -5469.30 1.01890 -0.52530 0.10440 0.03057 -5470.55 1.01111 -0.46078 0.20756 -0.07126 -5471.81 1.00212 -0.42900 0.21378 -0.24086 -5473.07 1.00494 -0.46608 0.11150 -0.32447 -5474.33 0.99549 -0.44805 -0.12188 -0.45175 -5475.60 0.97527 -0.34087 0.05927 -0.64199 -5476.86 0.93492 -0.27990 -0.13021 -0.49981 -5478.12 0.90780 -0.23052 -0.54696 -0.54890 -5479.38 0.93907 -0.31498 -0.20391 -0.30741 -5480.64 0.98659 -0.44203 0.04708 -0.13363 -5481.90 0.97894 -0.38959 -0.21151 -0.33834 -5483.17 0.96545 -0.32530 -0.22793 -0.51710 -5484.43 0.98593 -0.44190 -0.12736 -0.19198 -5485.69 1.00998 -0.50801 -0.05780 -0.02808 -5486.95 1.01392 -0.54028 0.19344 0.21210 -5488.22 0.99254 -0.42951 0.03651 -0.19872 -5489.48 0.98556 -0.40310 0.01503 -0.33398 -5490.75 0.99716 -0.49262 -0.06194 -0.31493 -5492.01 1.01682 -0.56591 -0.01107 0.04226 -5493.28 1.02841 -0.62867 -0.03451 0.14361 -5494.54 1.01721 -0.58992 -0.10007 -0.05603 -5495.81 1.00795 -0.49760 0.26204 -0.10551 -5497.07 1.00044 -0.48504 0.15878 0.01547 -5498.34 0.97889 -0.41997 0.03389 -0.35177 -5499.60 0.98582 -0.44109 0.06773 -0.01180 -5500.87 1.00056 -0.50895 0.35814 -0.01642 -5502.14 0.97895 -0.43070 0.36351 -0.00809 -5503.40 0.96705 -0.41565 -0.07298 0.00483 -5504.67 0.98051 -0.43436 0.18541 -0.34501 -5505.94 0.98433 -0.38033 0.18345 -0.26609 -5507.21 0.95817 -0.30423 0.16777 -0.30549 -5508.47 0.96308 -0.36908 -0.02248 -0.21221 -5509.74 1.00534 -0.57770 -0.12815 -0.09802 -5511.01 1.01500 -0.58896 0.05943 -0.18099 -5512.28 0.96922 -0.29911 0.20834 -0.49156 -5513.55 0.93215 -0.09937 0.09491 -0.91116 -5514.82 0.92913 -0.10704 0.00725 -0.85741 -5516.09 0.94399 -0.16219 0.36870 -0.61787 -5517.36 0.97956 -0.34177 0.37158 -0.73862 -5518.63 1.01148 -0.49022 0.06093 -0.08857 -5519.90 1.02802 -0.56390 0.10961 0.32404 -5521.17 1.02525 -0.58483 0.25840 0.12555 -5522.44 1.03078 -0.65578 -0.07818 0.08855 -5523.72 1.03343 -0.68641 -0.00522 0.25906 -5524.99 1.02015 -0.62924 0.01160 -0.05163 -5526.26 1.01247 -0.62257 -0.17199 -0.03712 -5527.53 0.99071 -0.57703 -0.09573 -0.04054 -5528.81 0.92381 -0.35439 -0.62183 -0.76735 -5530.08 0.90947 -0.33515 -1.01647 -0.88023 -5531.35 0.98237 -0.54381 -0.65105 -0.05322 -5532.63 1.02408 -0.60996 -0.13048 -0.05126 -5533.90 1.01736 -0.59831 -0.11097 -0.22227 -5535.17 1.01016 -0.62060 0.02663 0.23828 -5536.45 1.00296 -0.59407 -0.06404 0.26456 -5537.72 1.01206 -0.60973 -0.24657 0.27928 -5539.00 1.01751 -0.59198 -0.15275 0.04230 -5540.28 1.01970 -0.61266 -0.04402 -0.04869 -5541.55 1.03497 -0.68427 0.04538 0.01771 -5542.83 1.03583 -0.70778 0.05246 -0.15031 -5544.10 1.01641 -0.59898 -0.13675 -0.12289 -5545.38 1.00837 -0.57953 -0.15607 -0.28706 -5546.66 1.01724 -0.61122 -0.22978 -0.42399 -5547.93 1.02152 -0.64032 -0.16892 -0.07025 -5549.21 1.03662 -0.72335 -0.19476 0.30328 -5550.49 1.04473 -0.72937 0.09580 0.33446 -5551.77 1.03704 -0.71579 0.12727 0.18129 -5553.05 1.03402 -0.73175 -0.05578 0.22730 -5554.33 1.02673 -0.73695 -0.17177 -0.03407 -5555.60 1.00595 -0.65844 -0.40015 0.28463 -5556.88 1.00918 -0.61752 -0.24259 0.08064 -5558.16 1.01459 -0.58012 0.09996 -0.19250 -5559.44 1.02130 -0.66058 0.03820 -0.00275 -5560.72 1.03580 -0.69274 -0.29293 0.04082 -5562.00 1.02739 -0.65297 -0.15892 0.03531 -5563.29 1.00864 -0.60312 -0.10753 -0.19825 -5564.57 0.99767 -0.56086 -0.30338 -0.05937 -5565.85 0.98895 -0.53060 -0.22622 -0.17784 -5567.13 0.97592 -0.39669 -0.21607 -0.38414 -5568.41 0.98080 -0.41656 -0.13647 -0.37275 -5569.69 0.97918 -0.45785 -0.31875 -0.26935 -5570.98 0.97437 -0.47677 -0.59154 -0.38462 -5572.26 0.98064 -0.48594 -0.55342 -0.28543 -5573.54 0.98173 -0.49016 -0.49603 -0.30504 -5574.83 0.98270 -0.49526 -0.44055 -0.32391 -5576.11 0.98374 -0.49932 -0.39122 -0.33523 -5577.39 0.98477 -0.50338 -0.34190 -0.34655 -5578.68 0.98581 -0.50743 -0.29257 -0.35787 -5579.96 0.98691 -0.51048 -0.24952 -0.36057 -5581.25 0.98789 -0.51367 -0.21086 -0.34541 -5582.53 0.98840 -0.52214 -0.14449 -0.33632 -5583.82 0.99061 -0.51955 -0.14831 -0.33737 -5585.11 0.99664 -0.52293 -0.18855 -0.37510 -5586.39 0.98789 -0.49816 -0.36006 -0.60011 -5587.68 0.92307 -0.33078 -0.75027 -0.83087 -5588.96 0.87543 -0.10422 -0.84646 -1.32615 -5590.25 0.88146 -0.06443 -0.41720 -1.23110 -5591.54 0.92628 -0.29018 -0.10409 -0.63965 -5592.83 0.97957 -0.51416 -0.28240 -0.41423 -5594.11 0.97857 -0.50204 -0.34267 -0.38821 -5595.40 0.94725 -0.38374 -0.27456 -0.63088 -5596.69 0.96858 -0.45748 -0.13732 -0.43179 -5597.98 0.99015 -0.50418 -0.03129 -0.10935 -5599.27 0.96583 -0.42138 -0.00142 -0.37192 -5600.56 0.95145 -0.36281 0.00595 -0.42950 -5601.85 0.94946 -0.38218 -0.12137 -0.31430 -5603.14 0.93572 -0.38691 -0.31463 -0.38025 -5604.43 0.94525 -0.44022 -0.55549 -0.49985 -5605.72 0.99706 -0.63309 -0.41480 -0.17327 -5607.01 1.03651 -0.76839 0.02394 0.30176 -5608.30 1.04582 -0.76795 0.15268 0.06483 -5609.59 1.04297 -0.76360 0.07577 0.18041 -5610.88 1.04411 -0.79290 0.05388 0.30212 -5612.18 1.05095 -0.82839 -0.02509 0.08212 -5613.47 1.05561 -0.85007 -0.07223 0.34237 -5614.76 1.01353 -0.68379 -0.25817 -0.23355 -5616.05 0.93333 -0.39675 -0.73495 -0.71187 -5617.35 0.90828 -0.35486 -1.03277 -0.72841 -5618.64 0.96375 -0.50806 -0.56391 -0.45030 -5619.94 1.00349 -0.56632 -0.13337 -0.18917 -5621.23 1.00205 -0.54816 0.20940 -0.22693 -5622.52 1.01397 -0.60828 0.15856 -0.29093 -5623.82 1.01841 -0.70062 -0.14678 0.03181 -5625.11 0.99052 -0.63997 -0.54924 -0.11533 -5626.41 0.97168 -0.51429 -0.68471 -0.51032 -5627.71 0.99356 -0.59392 -0.28774 -0.34236 -5629.00 1.02341 -0.72857 -0.26839 -0.10717 -5630.30 1.03238 -0.69836 -0.02062 0.06048 -5631.59 1.03566 -0.73186 0.27750 0.12273 -5632.89 1.03988 -0.81114 -0.04189 0.21118 -5634.19 1.03825 -0.84828 -0.28927 0.20056 -5635.49 1.03300 -0.84896 -0.49037 0.19943 -5636.78 1.02818 -0.80583 -0.50639 0.30980 -5638.08 1.02297 -0.78069 -0.34732 0.17806 -5639.38 1.02034 -0.79550 -0.44232 0.18425 -5640.68 1.02705 -0.82701 -0.22461 0.28273 -5641.98 1.02596 -0.78363 -0.52401 0.09097 -5643.28 1.02184 -0.74600 -0.20853 0.08717 -5644.58 1.02057 -0.72788 -0.13210 0.36372 -5645.88 1.02201 -0.71271 -0.56507 0.01047 -5647.18 1.03275 -0.74781 -0.30219 0.11471 -5648.48 1.03818 -0.77826 -0.18171 0.40917 -5649.78 1.03038 -0.76780 -0.26948 0.37597 -5651.08 1.02549 -0.78633 -0.47222 0.05171 -5652.38 1.03781 -0.84274 -0.42290 0.38169 -5653.68 1.04802 -0.88186 -0.38506 0.80924 -5654.98 1.04131 -0.89593 -0.59113 0.27189 -5656.29 1.02524 -0.85226 -0.67152 0.10702 -5657.59 1.01837 -0.79928 -0.55572 0.14401 -5658.89 0.98500 -0.67774 -0.64761 0.01013 -5660.19 0.95782 -0.59528 -0.91298 -0.18912 -5661.50 0.98844 -0.68447 -0.65773 0.04354 -5662.80 0.99617 -0.70230 -0.44405 -0.13117 -5664.11 0.98006 -0.62434 -0.39800 -0.43172 -5665.41 1.00972 -0.74207 -0.32957 -0.03167 -5666.71 1.04139 -0.89153 -0.54179 0.19180 -5668.02 1.03256 -0.87956 -0.42267 0.04992 -5669.32 1.02009 -0.82968 -0.33959 0.07866 -5670.63 1.01929 -0.79217 -0.26368 -0.08917 -5671.94 1.02008 -0.74238 -0.13325 -0.29798 -5673.24 1.03107 -0.77625 -0.21147 0.07435 -5674.55 1.04579 -0.84567 -0.13223 0.24155 -5675.86 1.04448 -0.90012 -0.29943 0.14575 -5677.16 1.04193 -0.90964 -0.34753 0.41867 -5678.47 1.04415 -0.88785 -0.11320 0.53686 -5679.78 1.04021 -0.88513 -0.33091 0.16142 -5681.09 1.03711 -0.86398 -0.33925 0.01426 -5682.39 1.02799 -0.81395 -0.36660 -0.15654 -5683.70 1.00400 -0.67358 -0.30935 -0.36980 -5685.01 1.01155 -0.79598 -0.61446 0.09328 -5686.32 1.03133 -0.93669 -0.68262 0.31863 -5687.63 1.00596 -0.78448 -0.42564 0.11715 -5688.94 0.97480 -0.64740 -0.28270 -0.31460 -5690.25 0.98085 -0.66923 -0.51414 -0.23032 -5691.56 1.01039 -0.81229 -0.59977 -0.00216 -5692.87 1.03346 -0.88771 -0.33530 0.26657 -5694.18 1.04420 -0.92664 -0.45245 0.25937 -5695.49 1.03804 -0.91455 -0.40352 0.20316 -5696.80 1.03234 -0.87677 -0.17437 0.30640 -5698.12 1.03341 -0.85647 -0.39215 0.21687 -5699.43 1.01309 -0.72508 -0.44868 0.03061 -5700.74 1.00382 -0.72247 -0.41989 -0.31362 -5702.05 1.00574 -0.78521 -0.60730 -0.32269 -5703.37 0.98972 -0.66542 -0.38968 -0.22749 -5704.68 0.99547 -0.73001 -0.46572 -0.16440 -5705.99 1.01484 -0.82578 -0.41239 0.12188 -5707.31 1.00215 -0.78678 -0.60035 -0.15169 -5708.62 0.97854 -0.69904 -0.96490 -0.30149 -5709.94 0.95845 -0.65447 -0.94766 -0.39024 -5711.25 0.94685 -0.63409 -1.23479 -0.66854 -5712.57 0.94510 -0.61199 -1.08411 -0.60153 -5713.88 0.97460 -0.65480 -0.75759 -0.14006 -5715.20 1.01336 -0.83240 -0.64496 0.05189 -5716.52 1.02729 -0.87782 -0.67823 -0.21280 -5717.83 1.02825 -0.88623 -0.55994 -0.21947 -5719.15 1.03362 -0.92207 -0.41944 0.06931 -5720.47 1.04200 -0.97233 -0.45135 0.04755 -5721.78 1.05099 -1.02122 -0.57634 -0.00902 -5723.10 1.05429 -0.99375 -0.45563 0.30299 -5724.42 1.05397 -1.00455 -0.42895 0.08869 -5725.74 1.05218 -0.94872 -0.15972 0.15977 -5727.05 1.03576 -0.87805 -0.35380 0.07905 -5728.37 1.01382 -0.81043 -0.39651 -0.11284 -5729.69 1.02108 -0.83625 -0.32772 0.15067 -5731.01 1.03894 -0.93563 -0.55313 -0.10966 -5732.33 1.02847 -0.86022 -0.28456 -0.47644 -5733.65 1.02762 -0.91893 -0.50772 -0.33487 -5734.97 1.04523 -0.99397 -0.50044 0.17173 -5736.29 1.04542 -0.96270 -0.17827 0.39681 -5737.61 1.03881 -0.91277 -0.31827 0.17923 -5738.94 1.03762 -0.91899 -0.52714 -0.18704 -5740.26 1.04177 -0.90787 -0.33971 0.06234 -5741.58 1.03961 -0.93452 -0.35802 0.28002 -5742.90 1.04320 -0.95116 -0.52453 0.26120 -5744.22 1.04599 -0.94713 -0.40111 0.04957 -5745.55 1.04651 -1.02573 -0.48097 0.01526 -5746.87 1.05066 -1.00534 -0.35580 0.28355 -5748.19 1.04008 -0.97404 -0.45897 -0.03444 -5749.52 1.03894 -1.00796 -0.75552 0.17920 -5750.84 1.04281 -0.99658 -0.62915 0.28245 -5752.17 1.04585 -1.02995 -0.69263 -0.13493 -5753.49 1.02346 -0.94922 -0.64472 -0.18059 -5754.81 1.00571 -0.93261 -1.00336 -0.33658 -5756.14 1.02340 -0.93644 -1.01212 0.15835 -5757.47 1.04645 -1.04089 -0.64677 0.16317 -5758.79 1.05357 -1.08568 -0.58965 -0.01278 -5760.12 1.05233 -1.06374 -0.68960 0.37374 -5761.44 1.04600 -1.02518 -0.83718 0.10864 -5762.77 1.02822 -0.92633 -0.62082 -0.35547 -5764.10 1.01396 -0.89727 -0.73501 -0.22929 -5765.43 1.02458 -0.93829 -0.78989 0.09777 -5766.75 1.04616 -1.00243 -0.47142 0.13226 -5768.08 1.05111 -1.06849 -0.42113 0.31817 -5769.41 1.05055 -1.03707 -0.41033 0.25519 -5770.74 1.05789 -1.08847 -0.30754 0.52919 -5772.07 1.04033 -1.03510 -0.30583 0.16761 -5773.40 1.03669 -0.95475 -0.51777 0.04041 -5774.73 1.03618 -0.94623 -0.49092 0.02854 -5776.06 1.03730 -0.95980 -0.37665 0.22856 -5777.39 1.03916 -0.96357 -0.43246 0.04755 -5778.72 1.04571 -1.03076 -0.72961 0.22730 -5780.05 1.03893 -1.01377 -0.54353 0.25077 -5781.38 1.00777 -0.89017 -0.54859 -0.03372 -5782.71 0.98801 -0.76689 -0.79000 -0.16908 -5784.04 0.98872 -0.78698 -1.01535 -0.39329 -5785.37 0.98888 -0.80042 -0.92459 -0.64734 -5786.71 0.99024 -0.77173 -0.93315 -0.66003 -5788.04 1.01121 -0.85282 -0.84627 -0.48144 -5789.37 1.03218 -0.96129 -0.45461 0.15660 -5790.70 1.02819 -0.99421 -0.64555 -0.28532 -5792.04 1.01252 -0.91163 -0.65733 -0.54748 -5793.37 1.01580 -0.92719 -0.72957 -0.15955 -5794.71 1.03079 -1.04649 -0.77567 0.08604 -5796.04 1.04720 -1.12090 -0.58445 0.47226 -5797.37 1.04485 -1.09396 -0.60043 0.58080 -5798.71 1.02596 -1.03575 -0.78941 0.17235 -5800.04 1.02299 -1.02553 -0.73983 -0.04902 -5801.38 1.03849 -1.05939 -0.55741 0.30154 -5802.72 1.04641 -1.08286 -0.61155 0.53890 -5804.05 1.04030 -1.11468 -0.50501 0.69337 -5805.39 1.02809 -1.06787 -0.89324 0.28115 -5806.73 1.02299 -1.04222 -0.98270 0.07192 -5808.06 1.02195 -1.04772 -0.53347 0.39717 -5809.40 1.02710 -1.03064 -0.60368 0.27685 -5810.74 1.02535 -0.99965 -0.52369 0.19486 -5812.08 1.02800 -1.05917 -0.49165 0.31291 -5813.42 1.03505 -1.07110 -0.37973 0.57360 -5814.75 1.02845 -1.04092 -0.25318 0.54718 -5816.09 1.01877 -1.01287 -0.29493 0.25426 -5817.43 1.01306 -1.03659 -0.59380 0.10843 -5818.77 1.01454 -1.03743 -0.61387 0.18181 -5820.11 1.02664 -1.04821 -0.30602 0.38899 -5821.45 1.03113 -1.05229 -0.20742 0.41738 -5822.79 1.03113 -1.07572 -0.21324 0.18304 -5824.13 1.03489 -1.06131 -0.31055 0.51288 -5825.48 1.03912 -1.07582 -0.43657 0.49361 -5826.82 1.03562 -1.09215 -0.28058 0.41959 -5828.16 1.04156 -1.11041 -0.31240 0.09705 -5829.50 1.03963 -1.06479 -0.43301 -0.04458 -5830.84 1.03696 -1.05693 -0.37222 0.30548 -5832.19 1.03912 -1.09860 -0.54722 0.36557 -5833.53 1.04039 -1.13615 -0.47485 0.69566 -5834.87 1.03088 -1.08854 -0.41445 0.35083 -5836.22 1.02399 -1.03124 -0.36373 0.36071 -5837.56 1.02213 -1.05949 -0.23653 0.44567 -5838.90 1.02609 -1.08545 -0.36916 0.10155 -5840.25 1.03550 -1.07222 -0.36892 0.38663 -5841.59 1.03489 -1.06020 -0.12962 0.28591 -5842.94 1.03779 -1.12869 -0.39789 0.14730 -5844.28 1.04295 -1.08244 -0.28705 0.51231 -5845.63 1.03345 -1.03517 -0.31503 0.42119 -5846.98 1.03398 -1.05443 -0.64993 0.10131 -5848.32 1.03650 -1.05947 -0.59323 0.22568 -5849.67 1.03354 -1.07606 -0.61971 0.01357 -5851.02 1.02832 -1.04878 -0.18758 0.27061 -5852.36 1.02712 -1.00660 -0.22653 0.21140 -5853.71 1.01789 -0.96822 -0.44686 0.01063 -5855.06 1.01820 -1.02008 -0.55940 -0.12209 -5856.41 1.00330 -0.96784 -0.50201 0.13328 -5857.76 0.96574 -0.74985 -0.17770 -0.27760 -5859.11 0.95040 -0.69431 -0.43045 -0.61476 -5860.46 0.98055 -0.86359 -0.65287 -0.11063 -5861.80 1.00714 -0.98144 -0.70243 0.08743 -5863.15 1.01223 -0.99285 -0.54719 0.16557 -5864.50 1.01557 -1.01083 -0.39149 -0.02316 -5865.86 1.01905 -1.00149 -0.18357 -0.03935 -5867.21 1.00955 -0.90254 -0.19574 -0.09815 -5868.56 1.00602 -0.90858 -0.20591 -0.25347 -5869.91 1.01773 -0.98344 -0.34095 0.01499 -5871.26 1.03063 -1.06698 -0.28150 0.29359 -5872.61 1.02724 -1.03875 -0.03073 0.16686 -5873.96 1.03264 -1.04208 -0.29666 0.10995 -5875.32 1.03268 -1.03250 -0.19460 0.25751 -5876.67 1.02338 -0.97737 0.01103 0.23973 -5878.02 1.02628 -1.01247 -0.01116 0.30462 -5879.38 1.01646 -0.94185 0.00147 0.11192 -5880.73 1.00259 -0.86253 0.06777 -0.20182 -5882.09 1.00091 -0.84227 0.12521 -0.29172 -5883.44 1.00160 -0.84408 0.11335 -0.30160 -5884.80 1.00230 -0.84564 0.10181 -0.30839 -5886.15 1.00303 -0.84681 0.08804 -0.31224 -5887.51 1.00376 -0.84798 0.07427 -0.31608 -5888.86 1.00450 -0.84915 0.06049 -0.31993 -5890.22 1.00523 -0.85032 0.04673 -0.32378 -5891.57 1.00596 -0.85149 0.03296 -0.32763 -5892.93 1.00669 -0.85266 0.01919 -0.33148 -5894.29 1.00742 -0.85383 0.00542 -0.33533 -5895.65 1.00815 -0.85500 -0.00835 -0.33917 -5897.00 1.00888 -0.85618 -0.02211 -0.34302 -5898.36 1.00961 -0.85734 -0.03589 -0.34687 -5899.72 1.01036 -0.85821 -0.05153 -0.34814 -5901.08 1.01106 -0.86028 -0.06061 -0.36414 -5902.44 1.01213 -0.86863 -0.03140 -0.50117 -5903.80 1.01206 -0.88244 -0.01706 -0.56339 -5905.16 1.01364 -0.87520 -0.10773 -0.52570 -5906.52 1.01695 -0.91239 -0.14526 -0.29339 -5907.88 1.01621 -0.94472 -0.23437 0.24666 -5909.24 1.02065 -0.96579 -0.16109 0.23966 -5910.60 1.03351 -1.03374 -0.38644 0.26326 -5911.96 1.03200 -1.06696 -0.37710 0.08886 -5913.32 1.02551 -0.97866 -0.28870 0.08551 -5914.68 1.01446 -0.96831 -0.36111 0.13224 -5916.04 1.00686 -0.96613 -0.70313 0.04771 -5917.41 1.01292 -0.97229 -0.66015 -0.23228 -5918.77 1.02153 -0.97300 -0.30635 -0.08184 -5920.13 1.02374 -1.01879 -0.34243 0.08800 -5921.49 1.03215 -1.05350 -0.48441 -0.05009 -5922.86 1.03000 -0.99245 -0.25025 -0.10393 -5924.22 1.02833 -1.00097 -0.16080 0.05464 -5925.59 1.03605 -1.06106 -0.51346 -0.03935 -5926.95 1.04117 -1.08903 -0.28706 0.03120 -5928.32 1.03982 -1.10592 -0.48690 0.25335 -5929.68 1.03040 -1.08022 -0.77373 -0.05707 -5931.05 1.02111 -1.09935 -0.81758 -0.15669 -5932.41 1.02425 -1.09135 -0.70822 -0.07946 -5933.78 1.03410 -1.10503 -0.63200 -0.12969 -5935.15 1.02717 -1.04084 -0.53153 -0.12591 -5936.51 1.02896 -1.05296 -0.69303 0.03900 -5937.88 1.03806 -1.10812 -0.50729 0.21488 -5939.25 1.03922 -1.12968 -0.54916 -0.00372 -5940.61 1.03051 -1.11152 -0.42538 0.31928 -5941.98 1.01374 -1.06286 -0.52742 0.04320 -5943.35 1.00849 -1.07759 -0.41819 0.03767 -5944.72 1.01708 -1.08224 -0.39726 0.30250 -5946.09 1.02402 -1.14297 -0.46783 0.30430 -5947.46 1.02400 -1.17157 -0.47838 0.18279 -5948.83 1.01822 -1.13073 -0.73036 0.20418 -5950.20 1.00518 -1.09125 -0.71301 0.05941 -5951.57 1.01492 -1.08572 -0.70890 0.18243 -5952.94 1.01691 -1.09097 -0.55145 0.30090 -5954.31 1.00351 -1.03578 -0.40300 0.13578 -5955.68 0.99981 -1.01895 -0.31757 0.21868 -5957.05 1.00788 -1.02941 -0.39176 0.28981 -5958.42 1.00509 -1.01326 -0.54287 0.47351 -5959.80 1.00644 -1.06319 -0.27464 0.31687 -5961.17 1.02046 -1.12685 -0.34723 0.37177 -5962.54 1.02788 -1.16649 -0.37347 0.48165 -5963.91 1.02869 -1.15263 -0.25865 0.58062 -5965.29 1.01622 -1.11386 -0.44816 0.45613 -5966.66 1.00087 -1.07475 -0.53027 0.27136 -5968.03 0.99317 -1.01673 -0.39549 0.31654 -5969.41 1.00361 -1.07411 -0.48330 0.37577 -5970.78 1.01823 -1.18857 -0.50976 0.37650 -5972.16 1.01976 -1.16864 -0.41415 0.30902 -5973.53 1.02369 -1.16370 -0.40188 0.38715 -5974.91 1.01635 -1.15805 -0.41875 0.36348 -5976.29 0.99656 -1.09617 -0.47534 0.12605 -5977.66 0.99288 -1.04916 -0.54309 -0.14689 -5979.04 0.99052 -0.99507 -0.52248 -0.04112 -5980.42 0.99903 -1.04282 -0.53636 0.10854 -5981.79 1.01457 -1.11623 -0.48350 0.14865 -5983.17 1.01307 -1.13267 -0.51714 0.13245 -5984.55 0.99879 -1.10664 -0.74711 -0.06330 -5985.93 0.98836 -1.03270 -0.89951 -0.05827 -5987.30 0.99356 -1.07258 -0.66733 0.06859 -5988.68 1.00377 -1.11331 -0.69697 0.18414 -5990.06 1.01056 -1.13314 -0.66945 0.06486 -5991.44 1.02265 -1.17888 -0.51669 0.10012 -5992.82 1.02099 -1.14370 -0.94589 0.13796 -5994.20 1.03011 -1.18944 -0.80555 0.16803 -5995.58 1.04520 -1.24437 -0.76308 0.12120 -5996.96 1.03941 -1.24321 -0.95524 -0.02085 -5998.34 1.02605 -1.17880 -0.85305 -0.28041 -5999.73 1.01926 -1.10648 -0.72617 -0.16027 -6001.11 1.02422 -1.13986 -0.64328 0.00574 -6002.49 1.02400 -1.14315 -0.74014 -0.15398 -6003.87 1.01848 -1.10552 -0.87728 -0.20797 -6005.25 1.01541 -1.14968 -0.90094 -0.09981 -6006.64 1.02801 -1.18920 -0.96834 -0.16929 -6008.02 1.01647 -1.13066 -1.06492 -0.49961 -6009.40 0.99541 -1.04896 -1.07952 -0.49251 -6010.79 1.00573 -1.09157 -1.05887 -0.40548 -6012.17 1.02935 -1.16500 -0.84645 -0.07106 -6013.56 1.02611 -1.17346 -0.86547 -0.16923 -6014.94 1.01283 -1.13060 -1.11359 -0.40012 -6016.33 1.01245 -1.11532 -1.08311 -0.12918 -6017.71 1.01094 -1.10146 -0.95414 -0.30282 -6019.10 1.01106 -1.09914 -0.92790 -0.33204 -6020.48 1.00543 -1.10420 -1.09163 -0.28187 -6021.87 0.99178 -1.07900 -1.19959 -0.44009 -6023.26 0.98900 -1.04538 -1.17208 -0.27610 -6024.64 0.99030 -1.09906 -1.00651 -0.37754 -6026.03 1.00070 -1.14634 -1.06581 -0.18734 -6027.42 1.02048 -1.19809 -1.20190 -0.23412 -6028.81 1.03224 -1.28652 -1.18303 -0.14693 -6030.19 1.03769 -1.29207 -1.09991 -0.17547 -6031.58 1.04299 -1.27891 -0.96095 -0.03490 -6032.97 1.04208 -1.26089 -0.76217 0.00198 -6034.36 1.04157 -1.28121 -0.76753 0.11777 -6035.75 1.04285 -1.31510 -0.87282 -0.02683 -6037.14 1.04136 -1.30667 -0.97393 -0.09476 -6038.53 1.03672 -1.28384 -0.79463 0.24898 -6039.92 1.02863 -1.23804 -0.47392 -0.03011 -6041.31 1.02412 -1.20655 -0.64793 -0.20526 -6042.70 1.02158 -1.22927 -0.96992 -0.02712 -6044.10 1.02220 -1.24369 -0.79432 0.18701 -6045.49 1.03175 -1.34855 -1.03573 0.08063 -6046.88 1.03482 -1.33268 -1.03150 -0.03551 -6048.27 1.03263 -1.32157 -1.00486 -0.04975 -6049.67 1.03349 -1.33167 -0.86106 -0.06427 -6051.06 1.03830 -1.32380 -0.85299 -0.13156 -6052.45 1.03442 -1.32647 -0.75419 -0.09316 -6053.85 1.02805 -1.30728 -0.83097 0.03284 -6055.24 1.02086 -1.27933 -0.87814 0.03985 -6056.63 1.01185 -1.21156 -0.94776 0.18098 -6058.03 1.00579 -1.21220 -0.91403 -0.31537 -6059.42 1.00673 -1.20364 -0.76997 0.02451 -6060.82 1.01645 -1.22920 -0.72087 0.09897 -6062.22 1.02365 -1.29359 -0.83490 0.09828 -6063.61 1.01954 -1.25674 -0.77584 0.11084 -6065.01 0.99711 -1.17521 -0.81459 -0.26000 -6066.40 0.97387 -1.09428 -0.91923 -0.21441 -6067.80 0.97750 -1.12446 -0.91163 -0.06010 -6069.20 1.00653 -1.23888 -0.81243 0.09194 -6070.60 1.01941 -1.28363 -0.73739 0.10776 -6071.99 1.02516 -1.34683 -0.86037 0.22736 -6073.39 1.02789 -1.35334 -0.80866 0.13043 -6074.79 1.02298 -1.29749 -0.71995 0.17169 -6076.19 1.02225 -1.31708 -0.95917 0.03335 -6077.59 1.02299 -1.30523 -1.01136 -0.05129 -6078.99 1.01105 -1.28315 -1.09751 0.14432 -6080.39 1.00191 -1.24783 -1.15069 -0.05959 -6081.79 1.00129 -1.19371 -0.84746 -0.00247 -6083.19 0.99773 -1.18672 -0.93859 -0.01887 -6084.59 1.00277 -1.21579 -1.03092 -0.09320 -6085.99 1.00116 -1.18782 -0.91111 0.02943 -6087.39 0.99991 -1.22520 -1.13837 -0.17640 -6088.79 1.00485 -1.26763 -1.07820 -0.00829 -6090.20 0.99567 -1.19102 -1.04260 -0.20610 -6091.60 0.98415 -1.12673 -1.02101 -0.17593 -6093.00 0.98565 -1.12844 -0.88569 -0.16001 -6094.41 1.00011 -1.20743 -1.11850 -0.05165 -6095.81 1.00998 -1.26021 -1.11058 0.04353 -6097.21 1.00859 -1.26898 -1.04958 -0.11706 -6098.62 1.00653 -1.25490 -1.06796 -0.01253 -6100.02 1.00673 -1.23297 -1.07903 -0.12435 - diff --git a/pro/science/kinematics/spbrg b/pro/science/kinematics/spbrg deleted file mode 100644 index dcf762f33..000000000 --- a/pro/science/kinematics/spbrg +++ /dev/null @@ -1,2329 +0,0 @@ - -# lam brg -# -3701.10 0.51622 -3701.96 0.50745 -3702.81 0.49295 -3703.66 0.47754 -3704.51 0.46380 -3705.37 0.44328 -3706.22 0.43533 -3707.07 0.42222 -3707.93 0.42581 -3708.78 0.43411 -3709.64 0.43879 -3710.49 0.45323 -3711.35 0.47288 -3712.20 0.48454 -3713.05 0.50514 -3713.91 0.51341 -3714.77 0.51662 -3715.62 0.51609 -3716.48 0.49833 -3717.33 0.48754 -3718.19 0.47006 -3719.04 0.45012 -3719.90 0.43282 -3720.76 0.41955 -3721.61 0.41112 -3722.47 0.41994 -3723.33 0.43857 -3724.19 0.45972 -3725.04 0.48730 -3725.90 0.50713 -3726.76 0.52339 -3727.62 0.53644 -3728.48 0.54439 -3729.33 0.53815 -3730.19 0.51375 -3731.05 0.48930 -3731.91 0.45809 -3732.77 0.42371 -3733.63 0.39507 -3734.49 0.36839 -3735.35 0.35542 -3736.21 0.34661 -3737.07 0.34879 -3737.93 0.35874 -3738.79 0.36767 -3739.65 0.38171 -3740.51 0.39575 -3741.38 0.39845 -3742.24 0.40454 -3743.10 0.39915 -3743.96 0.39130 -3744.82 0.37721 -3745.69 0.36888 -3746.55 0.35773 -3747.41 0.35182 -3748.27 0.34408 -3749.14 0.34781 -3750.00 0.35538 -3750.86 0.37082 -3751.73 0.39236 -3752.59 0.41252 -3753.46 0.42550 -3754.32 0.43985 -3755.19 0.44841 -3756.05 0.45693 -3756.91 0.45808 -3757.78 0.44740 -3758.65 0.43710 -3759.51 0.43411 -3760.38 0.42545 -3761.24 0.42249 -3762.11 0.42521 -3762.98 0.42497 -3763.84 0.43037 -3764.71 0.43288 -3765.58 0.42985 -3766.44 0.43788 -3767.31 0.44852 -3768.18 0.44494 -3769.05 0.44885 -3769.91 0.45872 -3770.78 0.46317 -3771.65 0.46990 -3772.52 0.48553 -3773.39 0.49315 -3774.26 0.50480 -3775.13 0.50420 -3775.99 0.51080 -3776.86 0.51683 -3777.73 0.52496 -3778.60 0.52978 -3779.47 0.54095 -3780.34 0.54414 -3781.21 0.55237 -3782.09 0.54869 -3782.96 0.54340 -3783.83 0.54386 -3784.70 0.52897 -3785.57 0.52337 -3786.44 0.50750 -3787.31 0.48703 -3788.19 0.47697 -3789.06 0.46088 -3789.93 0.45846 -3790.80 0.44778 -3791.68 0.43786 -3792.55 0.44286 -3793.42 0.43196 -3794.30 0.42161 -3795.17 0.41298 -3796.05 0.41001 -3796.92 0.40883 -3797.79 0.40990 -3798.67 0.40718 -3799.54 0.41137 -3800.42 0.42454 -3801.29 0.43843 -3802.17 0.44892 -3803.04 0.45715 -3803.92 0.47028 -3804.80 0.47592 -3805.67 0.48100 -3806.55 0.48515 -3807.42 0.49209 -3808.30 0.49167 -3809.18 0.48778 -3810.06 0.49044 -3810.93 0.48005 -3811.81 0.47572 -3812.69 0.47008 -3813.57 0.45569 -3814.44 0.44268 -3815.32 0.43091 -3816.20 0.41855 -3817.08 0.41148 -3817.96 0.40049 -3818.84 0.38678 -3819.72 0.37892 -3820.60 0.37315 -3821.48 0.36475 -3822.36 0.36259 -3823.24 0.35273 -3824.12 0.34512 -3825.00 0.34701 -3825.88 0.33317 -3826.76 0.32532 -3827.64 0.32487 -3828.52 0.31300 -3829.41 0.31125 -3830.29 0.30432 -3831.17 0.29993 -3832.05 0.29965 -3832.93 0.29155 -3833.82 0.29017 -3834.70 0.29262 -3835.58 0.28966 -3836.47 0.29531 -3837.35 0.28994 -3838.23 0.29897 -3839.12 0.30386 -3840.00 0.30934 -3840.89 0.32161 -3841.77 0.34095 -3842.65 0.35554 -3843.54 0.37041 -3844.42 0.38394 -3845.31 0.39167 -3846.20 0.40025 -3847.08 0.40453 -3847.97 0.40484 -3848.85 0.40722 -3849.74 0.41012 -3850.63 0.41387 -3851.51 0.40991 -3852.40 0.40807 -3853.29 0.40481 -3854.17 0.39932 -3855.06 0.40381 -3855.95 0.39289 -3856.84 0.38481 -3857.73 0.38192 -3858.61 0.38060 -3859.50 0.38014 -3860.39 0.37457 -3861.28 0.38308 -3862.17 0.39455 -3863.06 0.40175 -3863.95 0.41260 -3864.84 0.41442 -3865.73 0.41815 -3866.62 0.42227 -3867.51 0.42236 -3868.40 0.42074 -3869.29 0.41924 -3870.18 0.41144 -3871.07 0.40830 -3871.96 0.40583 -3872.86 0.40506 -3873.75 0.40542 -3874.64 0.40773 -3875.53 0.41004 -3876.42 0.41152 -3877.32 0.41332 -3878.21 0.41039 -3879.10 0.40685 -3880.00 0.40159 -3880.89 0.40369 -3881.78 0.40459 -3882.68 0.40290 -3883.57 0.41214 -3884.47 0.41335 -3885.36 0.41384 -3886.26 0.41485 -3887.15 0.42181 -3888.05 0.42906 -3888.94 0.43850 -3889.84 0.44988 -3890.73 0.46250 -3891.63 0.47241 -3892.52 0.48480 -3893.42 0.49684 -3894.32 0.50896 -3895.21 0.51759 -3896.11 0.51750 -3897.01 0.52290 -3897.91 0.53040 -3898.80 0.52719 -3899.70 0.52703 -3900.60 0.52856 -3901.50 0.51781 -3902.40 0.51849 -3903.29 0.52377 -3904.19 0.51643 -3905.09 0.51879 -3905.99 0.51951 -3906.89 0.52282 -3907.79 0.53834 -3908.69 0.54960 -3909.59 0.56015 -3910.49 0.57036 -3911.39 0.57914 -3912.29 0.58827 -3913.19 0.59151 -3914.09 0.58860 -3915.00 0.58774 -3915.90 0.58069 -3916.80 0.56914 -3917.70 0.56283 -3918.60 0.54987 -3919.51 0.53673 -3920.41 0.52398 -3921.31 0.50660 -3922.21 0.49451 -3923.12 0.48295 -3924.02 0.46716 -3924.92 0.45836 -3925.83 0.43502 -3926.73 0.41766 -3927.64 0.39363 -3928.54 0.36202 -3929.45 0.33192 -3930.35 0.30329 -3931.26 0.28072 -3932.16 0.25539 -3933.07 0.23759 -3933.97 0.23006 -3934.88 0.23825 -3935.78 0.24308 -3936.69 0.26122 -3937.60 0.28680 -3938.50 0.30796 -3939.41 0.33305 -3940.32 0.35969 -3941.23 0.37446 -3942.13 0.39728 -3943.04 0.41479 -3943.95 0.42968 -3944.86 0.44899 -3945.77 0.46741 -3946.67 0.48810 -3947.58 0.50715 -3948.49 0.52370 -3949.40 0.53834 -3950.31 0.55401 -3951.22 0.56711 -3952.13 0.57420 -3953.04 0.57618 -3953.95 0.57735 -3954.86 0.57940 -3955.77 0.57239 -3956.68 0.55647 -3957.60 0.54408 -3958.51 0.53125 -3959.42 0.51341 -3960.33 0.48608 -3961.24 0.45380 -3962.15 0.42555 -3963.07 0.39600 -3963.98 0.36968 -3964.89 0.34290 -3965.80 0.32221 -3966.72 0.29809 -3967.63 0.27992 -3968.55 0.27018 -3969.46 0.27328 -3970.37 0.28585 -3971.29 0.30301 -3972.20 0.32209 -3973.12 0.35611 -3974.03 0.39117 -3974.95 0.42740 -3975.86 0.46430 -3976.78 0.50024 -3977.69 0.53317 -3978.61 0.56167 -3979.53 0.59089 -3980.44 0.61058 -3981.36 0.62792 -3982.28 0.64074 -3983.19 0.64974 -3984.11 0.66143 -3985.03 0.66813 -3985.95 0.67209 -3986.86 0.68225 -3987.78 0.68821 -3988.70 0.69301 -3989.62 0.70123 -3990.54 0.70952 -3991.46 0.71827 -3992.38 0.71617 -3993.29 0.72190 -3994.21 0.72429 -3995.13 0.72561 -3996.05 0.73026 -3996.97 0.73057 -3997.89 0.72938 -3998.82 0.73476 -3999.74 0.73688 -4000.66 0.74508 -4001.58 0.75538 -4002.50 0.75982 -4003.42 0.75827 -4004.34 0.75672 -4005.27 0.74962 -4006.19 0.74995 -4007.11 0.75183 -4008.03 0.75436 -4008.96 0.76258 -4009.88 0.76966 -4010.80 0.77575 -4011.73 0.78238 -4012.65 0.79296 -4013.57 0.80095 -4014.50 0.79917 -4015.42 0.79552 -4016.35 0.80656 -4017.27 0.81412 -4018.20 0.81005 -4019.12 0.80600 -4020.05 0.80177 -4020.97 0.79761 -4021.90 0.80222 -4022.83 0.79946 -4023.75 0.80013 -4024.68 0.79871 -4025.61 0.79140 -4026.53 0.78921 -4027.46 0.78948 -4028.39 0.78335 -4029.32 0.77287 -4030.24 0.75844 -4031.17 0.74828 -4032.10 0.73512 -4033.03 0.72849 -4033.96 0.72862 -4034.89 0.73846 -4035.82 0.74811 -4036.75 0.75979 -4037.67 0.77060 -4038.60 0.78965 -4039.53 0.79600 -4040.47 0.79223 -4041.40 0.78986 -4042.33 0.78213 -4043.26 0.76382 -4044.19 0.75017 -4045.12 0.73614 -4046.05 0.72792 -4046.98 0.72935 -4047.91 0.73131 -4048.85 0.74546 -4049.78 0.75705 -4050.71 0.76354 -4051.64 0.77156 -4052.58 0.77228 -4053.51 0.77030 -4054.44 0.77164 -4055.38 0.76070 -4056.31 0.75424 -4057.25 0.74083 -4058.18 0.73066 -4059.11 0.73038 -4060.05 0.73327 -4060.98 0.72726 -4061.92 0.72075 -4062.86 0.71960 -4063.79 0.71342 -4064.73 0.70901 -4065.66 0.71486 -4066.60 0.72426 -4067.54 0.72843 -4068.47 0.73699 -4069.41 0.73932 -4070.35 0.74218 -4071.28 0.75187 -4072.22 0.74495 -4073.16 0.73685 -4074.10 0.73581 -4075.04 0.73418 -4075.97 0.73413 -4076.91 0.73227 -4077.85 0.72922 -4078.79 0.73545 -4079.73 0.74314 -4080.67 0.75855 -4081.61 0.77454 -4082.55 0.78453 -4083.49 0.79251 -4084.43 0.79830 -4085.37 0.80503 -4086.31 0.81646 -4087.25 0.82616 -4088.19 0.83289 -4089.13 0.83735 -4090.08 0.84298 -4091.02 0.83783 -4091.96 0.82841 -4092.90 0.81588 -4093.84 0.79858 -4094.79 0.78867 -4095.73 0.76877 -4096.67 0.74490 -4097.62 0.72807 -4098.56 0.71720 -4099.50 0.70324 -4100.45 0.68653 -4101.39 0.68637 -4102.34 0.68242 -4103.28 0.68492 -4104.23 0.69489 -4105.17 0.70189 -4106.12 0.71602 -4107.06 0.73319 -4108.01 0.73913 -4108.95 0.74901 -4109.90 0.75369 -4110.85 0.75789 -4111.79 0.76135 -4112.74 0.77180 -4113.69 0.77512 -4114.64 0.77749 -4115.58 0.78327 -4116.53 0.78536 -4117.48 0.78158 -4118.43 0.77810 -4119.38 0.77697 -4120.32 0.77644 -4121.27 0.77429 -4122.22 0.77181 -4123.17 0.77055 -4124.12 0.77977 -4125.07 0.77613 -4126.02 0.77058 -4126.97 0.77181 -4127.92 0.76032 -4128.87 0.75561 -4129.82 0.75366 -4130.77 0.74359 -4131.72 0.74216 -4132.68 0.73688 -4133.63 0.73471 -4134.58 0.73477 -4135.53 0.74081 -4136.48 0.74755 -4137.44 0.76031 -4138.39 0.76411 -4139.34 0.75672 -4140.30 0.75884 -4141.25 0.74960 -4142.20 0.73694 -4143.16 0.73421 -4144.11 0.72561 -4145.07 0.71981 -4146.02 0.71941 -4146.97 0.71968 -4147.93 0.72053 -4148.88 0.72174 -4149.84 0.71895 -4150.80 0.71639 -4151.75 0.71137 -4152.71 0.71410 -4153.66 0.71697 -4154.62 0.71307 -4155.58 0.71824 -4156.53 0.71953 -4157.49 0.72651 -4158.45 0.73702 -4159.41 0.74488 -4160.36 0.75372 -4161.32 0.75962 -4162.28 0.76472 -4163.24 0.77238 -4164.20 0.76682 -4165.16 0.76706 -4166.12 0.76679 -4167.08 0.75922 -4168.03 0.74842 -4168.99 0.74013 -4169.95 0.73363 -4170.92 0.72645 -4171.88 0.72140 -4172.84 0.71445 -4173.80 0.71168 -4174.76 0.70689 -4175.72 0.70668 -4176.68 0.70862 -4177.64 0.71606 -4178.61 0.71655 -4179.57 0.71587 -4180.53 0.71890 -4181.49 0.72998 -4182.46 0.73631 -4183.42 0.74246 -4184.38 0.74885 -4185.35 0.75280 -4186.31 0.75561 -4187.27 0.75620 -4188.24 0.75849 -4189.20 0.76149 -4190.17 0.76257 -4191.13 0.76167 -4192.10 0.76570 -4193.06 0.76429 -4194.03 0.75983 -4194.99 0.75499 -4195.96 0.74304 -4196.93 0.73316 -4197.89 0.72767 -4198.86 0.72389 -4199.83 0.72452 -4200.79 0.72757 -4201.76 0.73541 -4202.73 0.73990 -4203.70 0.75118 -4204.66 0.76620 -4205.63 0.77938 -4206.60 0.78608 -4207.57 0.79638 -4208.54 0.80543 -4209.51 0.80706 -4210.48 0.80210 -4211.45 0.80069 -4212.42 0.79873 -4213.39 0.79493 -4214.36 0.79345 -4215.33 0.79308 -4216.30 0.79666 -4217.27 0.80690 -4218.24 0.80764 -4219.21 0.81447 -4220.18 0.81627 -4221.16 0.81057 -4222.13 0.79893 -4223.10 0.78216 -4224.07 0.75598 -4225.05 0.73306 -4226.02 0.71552 -4226.99 0.70230 -4227.96 0.70040 -4228.94 0.71010 -4229.91 0.72718 -4230.89 0.74989 -4231.86 0.76539 -4232.84 0.77893 -4233.81 0.79210 -4234.78 0.79260 -4235.76 0.79514 -4236.74 0.80122 -4237.71 0.80374 -4238.69 0.80939 -4239.66 0.81711 -4240.64 0.82192 -4241.62 0.83534 -4242.59 0.84508 -4243.57 0.85199 -4244.55 0.85673 -4245.52 0.85339 -4246.50 0.85364 -4247.48 0.84714 -4248.46 0.83456 -4249.44 0.81838 -4250.42 0.80960 -4251.39 0.79954 -4252.37 0.79127 -4253.35 0.79269 -4254.33 0.79534 -4255.31 0.79663 -4256.29 0.79543 -4257.27 0.80051 -4258.25 0.80334 -4259.23 0.80709 -4260.21 0.81189 -4261.19 0.81829 -4262.18 0.82410 -4263.16 0.83079 -4264.14 0.84683 -4265.12 0.85446 -4266.10 0.85102 -4267.09 0.84341 -4268.07 0.83174 -4269.05 0.81120 -4270.03 0.79444 -4271.02 0.77273 -4272.00 0.75196 -4272.98 0.74272 -4273.97 0.73366 -4274.95 0.73936 -4275.94 0.75098 -4276.92 0.76404 -4277.91 0.77966 -4278.89 0.79716 -4279.88 0.80126 -4280.86 0.80666 -4281.85 0.81256 -4282.84 0.80578 -4283.82 0.80316 -4284.81 0.79317 -4285.79 0.78542 -4286.78 0.77560 -4287.77 0.76640 -4288.76 0.75406 -4289.74 0.74472 -4290.73 0.73941 -4291.72 0.73903 -4292.71 0.74041 -4293.70 0.73788 -4294.69 0.73027 -4295.67 0.72455 -4296.66 0.71029 -4297.65 0.69660 -4298.64 0.67302 -4299.63 0.64929 -4300.62 0.62902 -4301.61 0.61975 -4302.60 0.61123 -4303.59 0.60003 -4304.59 0.59504 -4305.58 0.59173 -4306.57 0.58810 -4307.56 0.58642 -4308.55 0.59506 -4309.54 0.60855 -4310.54 0.62797 -4311.53 0.65581 -4312.52 0.68545 -4313.52 0.73088 -4314.51 0.77210 -4315.50 0.81247 -4316.50 0.85629 -4317.49 0.88504 -4318.48 0.90433 -4319.48 0.90789 -4320.47 0.90250 -4321.47 0.89029 -4322.46 0.87547 -4323.46 0.85548 -4324.45 0.83591 -4325.45 0.82143 -4326.45 0.82176 -4327.44 0.83463 -4328.44 0.85212 -4329.44 0.87230 -4330.43 0.89102 -4331.43 0.91122 -4332.43 0.92395 -4333.43 0.92830 -4334.42 0.92004 -4335.42 0.91261 -4336.42 0.90148 -4337.42 0.87978 -4338.42 0.85766 -4339.42 0.84050 -4340.42 0.82663 -4341.42 0.82640 -4342.42 0.82603 -4343.42 0.84106 -4344.42 0.85745 -4345.42 0.86496 -4346.42 0.88909 -4347.42 0.90373 -4348.42 0.91075 -4349.42 0.91609 -4350.42 0.91188 -4351.42 0.90692 -4352.43 0.89935 -4353.43 0.88959 -4354.43 0.89073 -4355.43 0.89901 -4356.44 0.91035 -4357.44 0.91559 -4358.44 0.92613 -4359.45 0.93740 -4360.45 0.94401 -4361.45 0.95265 -4362.46 0.96655 -4363.46 0.97414 -4364.47 0.98024 -4365.47 0.97813 -4366.48 0.97143 -4367.48 0.97139 -4368.49 0.95803 -4369.50 0.94635 -4370.50 0.94054 -4371.51 0.92622 -4372.52 0.91895 -4373.52 0.91115 -4374.53 0.89958 -4375.54 0.89137 -4376.54 0.88869 -4377.55 0.88586 -4378.56 0.87662 -4379.57 0.86997 -4380.58 0.86041 -4381.59 0.83775 -4382.60 0.81954 -4383.60 0.80344 -4384.61 0.79405 -4385.62 0.79763 -4386.63 0.80086 -4387.64 0.80791 -4388.65 0.82911 -4389.66 0.83569 -4390.68 0.84830 -4391.69 0.86440 -4392.70 0.87198 -4393.71 0.88477 -4394.72 0.89914 -4395.73 0.90664 -4396.75 0.91317 -4397.76 0.91754 -4398.77 0.92283 -4399.78 0.92351 -4400.80 0.91350 -4401.81 0.90583 -4402.82 0.89318 -4403.84 0.88194 -4404.85 0.87365 -4405.87 0.86840 -4406.88 0.87589 -4407.90 0.88278 -4408.91 0.89550 -4409.93 0.91434 -4410.94 0.93056 -4411.96 0.94678 -4412.97 0.95673 -4413.99 0.95995 -4415.01 0.96420 -4416.02 0.96192 -4417.04 0.96712 -4418.06 0.97158 -4419.07 0.97325 -4420.09 0.98296 -4421.11 0.98797 -4422.13 0.98722 -4423.15 0.98594 -4424.17 0.98323 -4425.18 0.98305 -4426.20 0.98190 -4427.22 0.98302 -4428.24 0.98171 -4429.26 0.97999 -4430.28 0.98387 -4431.30 0.97651 -4432.32 0.97449 -4433.34 0.97030 -4434.36 0.96836 -4435.39 0.96299 -4436.41 0.96313 -4437.43 0.97653 -4438.45 0.98775 -4439.47 0.99459 -4440.49 0.99819 -4441.52 1.00118 -4442.54 1.00687 -4443.56 1.01403 -4444.59 1.02260 -4445.61 1.02663 -4446.63 1.03173 -4447.66 1.04353 -4448.68 1.04608 -4449.71 1.03894 -4450.73 1.03341 -4451.76 1.02078 -4452.78 1.00616 -4453.81 0.99002 -4454.83 0.97084 -4455.86 0.95521 -4456.88 0.94049 -4457.91 0.93477 -4458.94 0.92546 -4459.96 0.92795 -4460.99 0.93100 -4462.02 0.93043 -4463.05 0.94080 -4464.07 0.95526 -4465.10 0.97216 -4466.13 0.97853 -4467.16 0.98964 -4468.19 0.99832 -4469.22 1.00724 -4470.25 1.01265 -4471.27 1.02764 -4472.30 1.04032 -4473.33 1.05035 -4474.36 1.06493 -4475.39 1.07242 -4476.43 1.07363 -4477.46 1.08124 -4478.49 1.08808 -4479.52 1.07583 -4480.55 1.07187 -4481.58 1.06588 -4482.61 1.06274 -4483.65 1.06708 -4484.68 1.06984 -4485.71 1.07708 -4486.74 1.07977 -4487.78 1.07942 -4488.81 1.07407 -4489.85 1.06475 -4490.88 1.05943 -4491.91 1.04994 -4492.95 1.04330 -4493.98 1.03793 -4495.02 1.03992 -4496.05 1.03675 -4497.09 1.04542 -4498.12 1.05584 -4499.16 1.06519 -4500.20 1.08399 -4501.23 1.09704 -4502.27 1.11088 -4503.30 1.12761 -4504.34 1.13754 -4505.38 1.15286 -4506.42 1.15874 -4507.45 1.16103 -4508.49 1.16153 -4509.53 1.15833 -4510.57 1.15375 -4511.61 1.14464 -4512.65 1.13611 -4513.69 1.12618 -4514.73 1.11811 -4515.77 1.11336 -4516.81 1.11052 -4517.85 1.10588 -4518.89 1.10954 -4519.93 1.10744 -4520.97 1.10542 -4522.01 1.09862 -4523.05 1.08246 -4524.09 1.06827 -4525.13 1.05556 -4526.18 1.03156 -4527.22 1.01825 -4528.26 1.00225 -4529.30 0.98692 -4530.35 0.98152 -4531.39 0.98269 -4532.43 0.98074 -4533.48 0.98734 -4534.52 1.00385 -4535.56 1.00650 -4536.61 1.01805 -4537.65 1.03659 -4538.70 1.05440 -4539.74 1.06704 -4540.79 1.06587 -4541.83 1.07404 -4542.88 1.07589 -4543.93 1.07542 -4544.97 1.07316 -4546.02 1.06419 -4547.07 1.06224 -4548.11 1.06276 -4549.16 1.05258 -4550.21 1.05476 -4551.26 1.05729 -4552.30 1.05981 -4553.35 1.07126 -4554.40 1.07790 -4555.45 1.08844 -4556.50 1.10204 -4557.55 1.11721 -4558.60 1.12497 -4559.65 1.13443 -4560.70 1.14036 -4561.75 1.14020 -4562.80 1.14396 -4563.85 1.14527 -4564.90 1.13564 -4565.95 1.13123 -4567.00 1.13512 -4568.06 1.13598 -4569.11 1.13980 -4570.16 1.13627 -4571.21 1.13926 -4572.26 1.13738 -4573.32 1.13408 -4574.37 1.13455 -4575.42 1.13353 -4576.48 1.13087 -4577.53 1.12305 -4578.59 1.11487 -4579.64 1.10670 -4580.69 1.10214 -4581.75 1.09303 -4582.80 1.09099 -4583.86 1.09103 -4584.92 1.09481 -4585.97 1.09974 -4587.03 1.10297 -4588.08 1.11166 -4589.14 1.10905 -4590.20 1.10751 -4591.25 1.11487 -4592.31 1.11246 -4593.37 1.10685 -4594.43 1.10232 -4595.48 1.09676 -4596.54 1.09915 -4597.60 1.09405 -4598.66 1.09259 -4599.72 1.09456 -4600.78 1.09724 -4601.84 1.10262 -4602.90 1.10704 -4603.96 1.11397 -4605.02 1.12467 -4606.08 1.12738 -4607.14 1.14025 -4608.20 1.14960 -4609.26 1.15918 -4610.32 1.17029 -4611.38 1.17947 -4612.45 1.17914 -4613.51 1.18117 -4614.57 1.18345 -4615.63 1.18571 -4616.70 1.19170 -4617.76 1.19137 -4618.82 1.19008 -4619.89 1.19034 -4620.95 1.19349 -4622.02 1.19163 -4623.08 1.18861 -4624.14 1.18682 -4625.21 1.18417 -4626.27 1.18137 -4627.34 1.18220 -4628.40 1.17922 -4629.47 1.17597 -4630.54 1.17198 -4631.60 1.16993 -4632.67 1.16669 -4633.74 1.15316 -4634.80 1.14474 -4635.87 1.14596 -4636.94 1.12968 -4638.01 1.12258 -4639.07 1.11665 -4640.14 1.10835 -4641.21 1.10247 -4642.28 1.10111 -4643.35 1.09271 -4644.42 1.08622 -4645.49 1.08175 -4646.56 1.07920 -4647.63 1.07383 -4648.70 1.07378 -4649.77 1.07698 -4650.84 1.08526 -4651.91 1.09370 -4652.98 1.09751 -4654.05 1.10599 -4655.13 1.11758 -4656.20 1.12162 -4657.27 1.12757 -4658.34 1.13513 -4659.41 1.13402 -4660.49 1.13872 -4661.56 1.13667 -4662.63 1.12151 -4663.71 1.10968 -4664.78 1.09397 -4665.86 1.07936 -4666.93 1.06587 -4668.01 1.05743 -4669.08 1.05331 -4670.16 1.05073 -4671.23 1.05873 -4672.31 1.07097 -4673.38 1.07976 -4674.46 1.08329 -4675.54 1.09267 -4676.61 1.09469 -4677.69 1.09517 -4678.77 1.09515 -4679.84 1.09548 -4680.92 1.09160 -4682.00 1.09079 -4683.08 1.09212 -4684.16 1.09234 -4685.23 1.09573 -4686.31 1.09960 -4687.39 1.10334 -4688.47 1.10505 -4689.55 1.10857 -4690.63 1.11022 -4691.71 1.10973 -4692.79 1.10923 -4693.87 1.10926 -4694.95 1.10742 -4696.04 1.09915 -4697.12 1.09963 -4698.20 1.09343 -4699.28 1.08403 -4700.36 1.07807 -4701.44 1.07302 -4702.53 1.07171 -4703.61 1.06784 -4704.69 1.06403 -4705.78 1.06872 -4706.86 1.07192 -4707.94 1.07957 -4709.03 1.08027 -4710.11 1.08429 -4711.20 1.08938 -4712.28 1.10232 -4713.37 1.11182 -4714.45 1.11538 -4715.54 1.12649 -4716.63 1.13607 -4717.71 1.14661 -4718.80 1.16245 -4719.88 1.17170 -4720.97 1.17859 -4722.06 1.17736 -4723.15 1.18307 -4724.23 1.18060 -4725.32 1.16647 -4726.41 1.15956 -4727.50 1.15030 -4728.59 1.13771 -4729.68 1.12779 -4730.76 1.11599 -4731.85 1.10991 -4732.94 1.11559 -4734.03 1.12505 -4735.12 1.12686 -4736.21 1.13114 -4737.31 1.13751 -4738.40 1.14766 -4739.49 1.15707 -4740.58 1.16684 -4741.67 1.17528 -4742.76 1.18082 -4743.85 1.18561 -4744.95 1.19406 -4746.04 1.20138 -4747.13 1.19873 -4748.23 1.20187 -4749.32 1.20149 -4750.41 1.19463 -4751.51 1.19634 -4752.60 1.19054 -4753.70 1.18201 -4754.79 1.17640 -4755.89 1.17219 -4756.98 1.16788 -4758.08 1.16228 -4759.17 1.16383 -4760.27 1.15530 -4761.36 1.14635 -4762.46 1.13965 -4763.56 1.13154 -4764.65 1.12262 -4765.75 1.12263 -4766.85 1.12537 -4767.95 1.12426 -4769.04 1.12875 -4770.14 1.14177 -4771.24 1.14939 -4772.34 1.15790 -4773.44 1.16784 -4774.54 1.17531 -4775.64 1.17994 -4776.74 1.18122 -4777.84 1.18038 -4778.94 1.18089 -4780.04 1.17557 -4781.14 1.17192 -4782.24 1.16948 -4783.34 1.15557 -4784.44 1.15773 -4785.54 1.15456 -4786.65 1.15467 -4787.75 1.15282 -4788.85 1.15694 -4789.95 1.16396 -4791.06 1.16800 -4792.16 1.17759 -4793.26 1.18533 -4794.37 1.19753 -4795.47 1.20536 -4796.58 1.20738 -4797.68 1.20978 -4798.79 1.21148 -4799.89 1.20647 -4801.00 1.20512 -4802.10 1.20292 -4803.21 1.19742 -4804.31 1.19899 -4805.42 1.19579 -4806.53 1.19271 -4807.63 1.18962 -4808.74 1.18526 -4809.85 1.18283 -4810.96 1.18372 -4812.06 1.18816 -4813.17 1.19490 -4814.28 1.19851 -4815.39 1.20354 -4816.50 1.20653 -4817.61 1.21115 -4818.72 1.21233 -4819.83 1.21382 -4820.94 1.21108 -4822.05 1.20441 -4823.16 1.19694 -4824.27 1.19199 -4825.38 1.19039 -4826.49 1.19057 -4827.60 1.18217 -4828.71 1.17720 -4829.82 1.17412 -4830.94 1.17264 -4832.05 1.17300 -4833.16 1.16835 -4834.27 1.16542 -4835.39 1.16626 -4836.50 1.16891 -4837.62 1.16916 -4838.73 1.16184 -4839.84 1.16369 -4840.96 1.16195 -4842.07 1.15919 -4843.19 1.15747 -4844.30 1.15583 -4845.42 1.16196 -4846.53 1.16684 -4847.65 1.16268 -4848.77 1.15969 -4849.88 1.15700 -4851.00 1.15062 -4852.12 1.13966 -4853.24 1.12967 -4854.35 1.11522 -4855.47 1.09702 -4856.59 1.08498 -4857.71 1.06857 -4858.83 1.05157 -4859.94 1.03904 -4861.06 1.02619 -4862.18 1.02558 -4863.30 1.02438 -4864.42 1.03034 -4865.54 1.03625 -4866.66 1.04446 -4867.78 1.05158 -4868.91 1.05648 -4870.03 1.06601 -4871.15 1.07148 -4872.27 1.07456 -4873.39 1.08606 -4874.51 1.09409 -4875.64 1.10442 -4876.76 1.11535 -4877.88 1.12431 -4879.01 1.13300 -4880.13 1.13922 -4881.25 1.13797 -4882.38 1.14123 -4883.50 1.13632 -4884.63 1.12790 -4885.75 1.12146 -4886.88 1.11561 -4888.00 1.11622 -4889.13 1.11931 -4890.25 1.11933 -4891.38 1.12327 -4892.51 1.13941 -4893.63 1.15541 -4894.76 1.17923 -4895.89 1.19149 -4897.01 1.20401 -4898.14 1.21150 -4899.27 1.21497 -4900.40 1.21658 -4901.53 1.21419 -4902.66 1.21118 -4903.78 1.20590 -4904.91 1.20521 -4906.04 1.20205 -4907.17 1.19729 -4908.30 1.19193 -4909.43 1.19189 -4910.56 1.18636 -4911.69 1.18136 -4912.83 1.17845 -4913.96 1.17478 -4915.09 1.17140 -4916.22 1.16312 -4917.35 1.15424 -4918.48 1.13926 -4919.62 1.12903 -4920.75 1.12236 -4921.88 1.11740 -4923.02 1.12305 -4924.15 1.13851 -4925.28 1.15492 -4926.42 1.16688 -4927.55 1.18494 -4928.69 1.19918 -4929.82 1.20253 -4930.96 1.20704 -4932.09 1.21110 -4933.23 1.20697 -4934.37 1.19674 -4935.50 1.18822 -4936.64 1.18318 -4937.78 1.17367 -4938.91 1.17252 -4940.05 1.17784 -4941.19 1.18397 -4942.33 1.19445 -4943.46 1.20542 -4944.60 1.21889 -4945.74 1.23040 -4946.88 1.24284 -4948.02 1.24866 -4949.16 1.24824 -4950.30 1.24656 -4951.44 1.24523 -4952.58 1.23844 -4953.72 1.22843 -4954.86 1.21600 -4956.00 1.20227 -4957.14 1.18883 -4958.28 1.17941 -4959.43 1.17968 -4960.57 1.17859 -4961.71 1.17822 -4962.85 1.18032 -4964.00 1.18308 -4965.14 1.17597 -4966.28 1.17196 -4967.43 1.17104 -4968.57 1.16900 -4969.71 1.17246 -4970.86 1.17654 -4972.00 1.17971 -4973.15 1.18505 -4974.29 1.18337 -4975.44 1.17463 -4976.58 1.16620 -4977.73 1.16045 -4978.88 1.14307 -4980.02 1.13148 -4981.17 1.11794 -4982.32 1.10423 -4983.46 1.09537 -4984.61 1.09444 -4985.76 1.10350 -4986.91 1.10842 -4988.06 1.11800 -4989.21 1.12815 -4990.35 1.13533 -4991.50 1.14231 -4992.65 1.14365 -4993.80 1.14740 -4994.95 1.15059 -4996.10 1.14562 -4997.25 1.14125 -4998.40 1.13493 -4999.55 1.12801 -5000.71 1.12253 -5001.86 1.11904 -5003.01 1.11529 -5004.16 1.11353 -5005.31 1.11429 -5006.47 1.11683 -5007.62 1.11510 -5008.77 1.11550 -5009.93 1.11019 -5011.08 1.10131 -5012.23 1.09014 -5013.39 1.07976 -5014.54 1.06954 -5015.70 1.06144 -5016.85 1.05774 -5018.01 1.06057 -5019.16 1.06191 -5020.32 1.06928 -5021.48 1.07690 -5022.63 1.08206 -5023.79 1.09120 -5024.95 1.09673 -5026.10 1.10167 -5027.26 1.11004 -5028.42 1.11709 -5029.58 1.12161 -5030.73 1.12601 -5031.89 1.13243 -5033.05 1.13252 -5034.21 1.12850 -5035.37 1.12296 -5036.53 1.11181 -5037.69 1.09842 -5038.85 1.09019 -5040.01 1.08502 -5041.17 1.07835 -5042.33 1.07927 -5043.49 1.08639 -5044.65 1.09531 -5045.82 1.10947 -5046.98 1.12175 -5048.14 1.12432 -5049.30 1.12615 -5050.46 1.12539 -5051.63 1.12738 -5052.79 1.13388 -5053.95 1.14413 -5055.12 1.15072 -5056.28 1.15943 -5057.45 1.16633 -5058.61 1.17482 -5059.78 1.18057 -5060.94 1.17489 -5062.11 1.17071 -5063.27 1.16261 -5064.44 1.15344 -5065.61 1.14274 -5066.77 1.13583 -5067.94 1.12754 -5069.11 1.12238 -5070.27 1.11851 -5071.44 1.11706 -5072.61 1.11833 -5073.78 1.11357 -5074.95 1.10660 -5076.11 1.10640 -5077.28 1.10399 -5078.45 1.09185 -5079.62 1.08396 -5080.79 1.07629 -5081.96 1.07236 -5083.13 1.07907 -5084.30 1.08389 -5085.47 1.08834 -5086.64 1.09873 -5087.82 1.11048 -5088.99 1.12191 -5090.16 1.12646 -5091.33 1.13112 -5092.50 1.13791 -5093.68 1.13621 -5094.85 1.13077 -5096.02 1.12460 -5097.20 1.11758 -5098.37 1.11111 -5099.54 1.10357 -5100.72 1.09939 -5101.89 1.09610 -5103.07 1.09323 -5104.24 1.09363 -5105.42 1.09466 -5106.59 1.09160 -5107.77 1.09230 -5108.95 1.09232 -5110.12 1.09524 -5111.30 1.09678 -5112.48 1.10540 -5113.65 1.11381 -5114.83 1.12305 -5116.01 1.12590 -5117.19 1.13023 -5118.37 1.13439 -5119.54 1.13172 -5120.72 1.12156 -5121.90 1.11071 -5123.08 1.09513 -5124.26 1.08170 -5125.44 1.07459 -5126.62 1.07045 -5127.80 1.06712 -5128.98 1.06710 -5130.17 1.06947 -5131.35 1.07581 -5132.53 1.08374 -5133.71 1.09055 -5134.89 1.09095 -5136.07 1.09375 -5137.26 1.09554 -5138.44 1.08990 -5139.62 1.08403 -5140.81 1.08299 -5141.99 1.07782 -5143.18 1.07197 -5144.36 1.07020 -5145.54 1.06827 -5146.73 1.06115 -5147.91 1.06061 -5149.10 1.05780 -5150.29 1.05579 -5151.47 1.05851 -5152.66 1.06434 -5153.84 1.06876 -5155.03 1.06953 -5156.22 1.07879 -5157.41 1.08192 -5158.59 1.08020 -5159.78 1.08184 -5160.97 1.07071 -5162.16 1.04885 -5163.35 1.02437 -5164.54 0.99774 -5165.73 0.96642 -5166.92 0.93595 -5168.11 0.90654 -5169.30 0.88223 -5170.49 0.87510 -5171.68 0.86962 -5172.87 0.87097 -5174.06 0.87868 -5175.25 0.89266 -5176.44 0.90872 -5177.63 0.92453 -5178.83 0.93476 -5180.02 0.93616 -5181.21 0.93659 -5182.40 0.93290 -5183.60 0.93101 -5184.79 0.93396 -5185.99 0.94237 -5187.18 0.96616 -5188.37 0.98845 -5189.57 1.01137 -5190.76 1.02881 -5191.96 1.04467 -5193.16 1.05723 -5194.35 1.06923 -5195.55 1.08147 -5196.74 1.09157 -5197.94 1.10119 -5199.14 1.10751 -5200.34 1.11321 -5201.53 1.11015 -5202.73 1.09996 -5203.93 1.08833 -5205.13 1.07526 -5206.33 1.06416 -5207.52 1.05568 -5208.72 1.05438 -5209.92 1.05886 -5211.12 1.06987 -5212.32 1.08859 -5213.52 1.10483 -5214.72 1.12084 -5215.93 1.13583 -5217.13 1.14420 -5218.33 1.15514 -5219.53 1.16116 -5220.73 1.16001 -5221.93 1.15937 -5223.14 1.15281 -5224.34 1.14343 -5225.54 1.13776 -5226.75 1.13051 -5227.95 1.12723 -5229.15 1.12905 -5230.36 1.13971 -5231.56 1.14917 -5232.77 1.15671 -5233.97 1.16771 -5235.18 1.17672 -5236.38 1.18968 -5237.59 1.20010 -5238.79 1.20526 -5240.00 1.21249 -5241.21 1.21708 -5242.41 1.21870 -5243.62 1.21608 -5244.83 1.21490 -5246.04 1.20548 -5247.25 1.19747 -5248.45 1.19314 -5249.66 1.18564 -5250.87 1.17927 -5252.08 1.18269 -5253.29 1.18191 -5254.50 1.18259 -5255.71 1.18513 -5256.92 1.18876 -5258.13 1.18778 -5259.34 1.18042 -5260.55 1.16951 -5261.76 1.15248 -5262.98 1.13277 -5264.19 1.10912 -5265.40 1.08593 -5266.61 1.07303 -5267.83 1.06360 -5269.04 1.05877 -5270.25 1.06180 -5271.47 1.07231 -5272.68 1.09030 -5273.89 1.11473 -5275.11 1.13301 -5276.32 1.15267 -5277.54 1.17352 -5278.75 1.19263 -5279.97 1.20681 -5281.18 1.21375 -5282.40 1.22202 -5283.62 1.22654 -5284.83 1.23606 -5286.05 1.24448 -5287.27 1.25548 -5288.49 1.27097 -5289.70 1.27675 -5290.92 1.27976 -5292.14 1.27717 -5293.36 1.27059 -5294.58 1.26396 -5295.80 1.25450 -5297.02 1.24402 -5298.24 1.23434 -5299.46 1.23169 -5300.68 1.23404 -5301.90 1.24142 -5303.12 1.25275 -5304.34 1.26799 -5305.56 1.27892 -5306.78 1.29240 -5308.01 1.30448 -5309.23 1.30816 -5310.45 1.31221 -5311.67 1.31559 -5312.90 1.31411 -5314.12 1.31374 -5315.34 1.30420 -5316.57 1.29715 -5317.79 1.28919 -5319.02 1.27881 -5320.24 1.27248 -5321.47 1.26005 -5322.69 1.24212 -5323.92 1.22780 -5325.14 1.21312 -5326.37 1.19893 -5327.60 1.18760 -5328.82 1.17948 -5330.05 1.18168 -5331.28 1.19002 -5332.51 1.20176 -5333.73 1.21428 -5334.96 1.22670 -5336.19 1.23394 -5337.42 1.23978 -5338.65 1.24098 -5339.88 1.23795 -5341.11 1.23931 -5342.34 1.23901 -5343.57 1.23661 -5344.80 1.23748 -5346.03 1.24019 -5347.26 1.24746 -5348.49 1.25140 -5349.72 1.25569 -5350.96 1.26875 -5352.19 1.28291 -5353.42 1.29054 -5354.65 1.30209 -5355.89 1.31675 -5357.12 1.32140 -5358.35 1.32283 -5359.59 1.32358 -5360.82 1.31829 -5362.06 1.30789 -5363.29 1.29681 -5364.53 1.28650 -5365.76 1.27255 -5367.00 1.26372 -5368.23 1.25297 -5369.47 1.24178 -5370.71 1.23792 -5371.94 1.23725 -5373.18 1.24213 -5374.42 1.24913 -5375.65 1.25831 -5376.89 1.26623 -5378.13 1.27815 -5379.37 1.28302 -5380.61 1.28155 -5381.85 1.28331 -5383.09 1.28224 -5384.33 1.28292 -5385.57 1.27674 -5386.81 1.27047 -5388.05 1.26497 -5389.29 1.25661 -5390.53 1.24732 -5391.77 1.24132 -5393.01 1.23000 -5394.25 1.22346 -5395.50 1.21583 -5396.74 1.20519 -5397.98 1.20159 -5399.22 1.19969 -5400.47 1.19617 -5401.71 1.19372 -5402.95 1.19481 -5404.20 1.18885 -5405.44 1.18828 -5406.69 1.18316 -5407.93 1.18207 -5409.18 1.18894 -5410.42 1.19637 -5411.67 1.21377 -5412.92 1.22448 -5414.16 1.23577 -5415.41 1.24976 -5416.66 1.25903 -5417.90 1.26244 -5419.15 1.27182 -5420.40 1.27665 -5421.65 1.27275 -5422.90 1.27223 -5424.15 1.26745 -5425.39 1.26188 -5426.64 1.26097 -5427.89 1.25447 -5429.14 1.24712 -5430.39 1.23898 -5431.64 1.23500 -5432.90 1.23436 -5434.15 1.23599 -5435.40 1.23685 -5436.65 1.24431 -5437.90 1.25423 -5439.15 1.26251 -5440.41 1.27224 -5441.66 1.27522 -5442.91 1.27815 -5444.17 1.27595 -5445.42 1.26600 -5446.67 1.25687 -5447.93 1.24906 -5449.18 1.24335 -5450.44 1.23955 -5451.69 1.23781 -5452.95 1.23406 -5454.20 1.22844 -5455.46 1.22588 -5456.72 1.22480 -5457.97 1.23011 -5459.23 1.23314 -5460.49 1.23446 -5461.74 1.23622 -5463.00 1.23634 -5464.26 1.23617 -5465.52 1.23862 -5466.78 1.23784 -5468.04 1.23603 -5469.30 1.23624 -5470.55 1.23303 -5471.81 1.22641 -5473.07 1.21963 -5474.33 1.21572 -5475.60 1.20949 -5476.86 1.20446 -5478.12 1.20363 -5479.38 1.20386 -5480.64 1.20776 -5481.90 1.20681 -5483.17 1.20954 -5484.43 1.22156 -5485.69 1.22410 -5486.95 1.22818 -5488.22 1.23066 -5489.48 1.23369 -5490.75 1.23694 -5492.01 1.23981 -5493.28 1.24271 -5494.54 1.24037 -5495.81 1.24092 -5497.07 1.24405 -5498.34 1.24119 -5499.60 1.23630 -5500.87 1.23810 -5502.14 1.23140 -5503.40 1.22707 -5504.67 1.22707 -5505.94 1.22224 -5507.21 1.22072 -5508.47 1.21848 -5509.74 1.21429 -5511.01 1.21739 -5512.28 1.21281 -5513.55 1.21478 -5514.82 1.21765 -5516.09 1.22004 -5517.36 1.23333 -5518.63 1.24170 -5519.90 1.24414 -5521.17 1.25030 -5522.44 1.25309 -5523.72 1.25131 -5524.99 1.25012 -5526.26 1.24268 -5527.53 1.23756 -5528.81 1.23508 -5530.08 1.23464 -5531.35 1.23321 -5532.63 1.23731 -5533.90 1.24453 -5535.17 1.25090 -5536.45 1.25500 -5537.72 1.25417 -5539.00 1.25884 -5540.28 1.26510 -5541.55 1.26924 -5542.83 1.27131 -5544.10 1.27380 -5545.38 1.27867 -5546.66 1.28597 -5547.93 1.28644 -5549.21 1.29028 -5550.49 1.29179 -5551.77 1.29210 -5553.05 1.28756 -5554.33 1.28374 -5555.60 1.27998 -5556.88 1.27601 -5558.16 1.27530 -5559.44 1.27240 -5560.72 1.26257 -5562.00 1.25931 -5563.29 1.25962 -5564.57 1.24910 -5565.85 1.25057 -5567.13 1.25112 -5568.41 1.24758 -5569.69 1.24761 -5570.98 1.24677 -5572.26 1.24450 -5573.54 1.25297 -5574.83 1.25010 -5576.11 1.25202 -5577.39 1.25741 -5578.68 1.25316 -5579.96 1.24873 -5581.25 1.24230 -5582.53 1.23701 -5583.82 1.23304 -5585.11 1.22398 -5586.39 1.21435 -5587.68 1.20117 -5588.96 1.19472 -5590.25 1.19517 -5591.54 1.19264 -5592.83 1.19298 -5594.11 1.20000 -5595.40 1.20598 -5596.69 1.20599 -5597.98 1.20957 -5599.27 1.21745 -5600.56 1.21908 -5601.85 1.21986 -5603.14 1.22576 -5604.43 1.23486 -5605.72 1.24711 -5607.01 1.25488 -5608.30 1.26090 -5609.59 1.26960 -5610.88 1.27278 -5612.18 1.26832 -5613.47 1.26234 -5614.76 1.25514 -5616.05 1.24284 -5617.35 1.23787 -5618.64 1.23347 -5619.94 1.23074 -5621.23 1.22943 -5622.52 1.23164 -5623.82 1.23133 -5625.11 1.22703 -5626.41 1.22931 -5627.71 1.23675 -5629.00 1.23885 -5630.30 1.24071 -5631.59 1.24651 -5632.89 1.25130 -5634.19 1.25204 -5635.49 1.24889 -5636.78 1.24642 -5638.08 1.24533 -5639.38 1.24191 -5640.68 1.24220 -5641.98 1.24546 -5643.28 1.24332 -5644.58 1.24336 -5645.88 1.25022 -5647.18 1.25458 -5648.48 1.25370 -5649.78 1.25360 -5651.08 1.25233 -5652.38 1.25273 -5653.68 1.25575 -5654.98 1.25178 -5656.29 1.24023 -5657.59 1.23553 -5658.89 1.23115 -5660.19 1.23032 -5661.50 1.22730 -5662.80 1.22842 -5664.11 1.23053 -5665.41 1.23772 -5666.71 1.23857 -5668.02 1.24272 -5669.32 1.24931 -5670.63 1.25721 -5671.94 1.26364 -5673.24 1.26781 -5674.55 1.27436 -5675.86 1.27512 -5677.16 1.27621 -5678.47 1.27808 -5679.78 1.27875 -5681.09 1.27360 -5682.39 1.26752 -5683.70 1.25921 -5685.01 1.25233 -5686.32 1.25186 -5687.63 1.25193 -5688.94 1.25360 -5690.25 1.26208 -5691.56 1.26607 -5692.87 1.26731 -5694.18 1.27124 -5695.49 1.27366 -5696.80 1.27585 -5698.12 1.26799 -5699.43 1.26225 -5700.74 1.25526 -5702.05 1.24657 -5703.37 1.24059 -5704.68 1.23240 -5705.99 1.22691 -5707.31 1.22357 -5708.62 1.22532 -5709.94 1.22303 -5711.25 1.21841 -5712.57 1.22634 -5713.88 1.23873 -5715.20 1.25287 -5716.52 1.25950 -5717.83 1.27241 -5719.15 1.28379 -5720.47 1.29159 -5721.78 1.29826 -5723.10 1.30479 -5724.42 1.30766 -5725.74 1.30856 -5727.05 1.30720 -5728.37 1.30747 -5729.69 1.30457 -5731.01 1.30245 -5732.33 1.30243 -5733.65 1.30442 -5734.97 1.30296 -5736.29 1.29833 -5737.61 1.30024 -5738.94 1.30271 -5740.26 1.30422 -5741.58 1.30907 -5742.90 1.30320 -5744.22 1.29808 -5745.55 1.30338 -5746.87 1.30322 -5748.19 1.29746 -5749.52 1.29288 -5750.84 1.29162 -5752.17 1.28968 -5753.49 1.28925 -5754.81 1.28441 -5756.14 1.28411 -5757.47 1.28685 -5758.79 1.28271 -5760.12 1.28589 -5761.44 1.28703 -5762.77 1.28651 -5764.10 1.28948 -5765.43 1.29275 -5766.75 1.29710 -5768.08 1.29876 -5769.41 1.29410 -5770.74 1.29879 -5772.07 1.30129 -5773.40 1.29954 -5774.73 1.29546 -5776.06 1.28577 -5777.39 1.28338 -5778.72 1.27263 -5780.05 1.25601 -5781.38 1.25316 -5782.71 1.24463 -5784.04 1.24780 -5785.37 1.24602 -5786.71 1.23821 -5788.04 1.24499 -5789.37 1.25835 -5790.70 1.26579 -5792.04 1.27234 -5793.37 1.28068 -5794.71 1.29047 -5796.04 1.29750 -5797.37 1.30823 -5798.71 1.30934 -5800.04 1.31297 -5801.38 1.31228 -5802.72 1.31381 -5804.05 1.31758 -5805.39 1.31739 -5806.73 1.31320 -5808.06 1.31498 -5809.40 1.31359 -5810.74 1.31282 -5812.08 1.31338 -5813.42 1.30751 -5814.75 1.31127 -5816.09 1.31055 -5817.43 1.30711 -5818.77 1.31334 -5820.11 1.31934 -5821.45 1.31876 -5822.79 1.32483 -5824.13 1.32176 -5825.48 1.32190 -5826.82 1.32347 -5828.16 1.32739 -5829.50 1.33130 -5830.84 1.32490 -5832.19 1.31945 -5833.53 1.32309 -5834.87 1.32218 -5836.22 1.32089 -5837.56 1.31885 -5838.90 1.31919 -5840.25 1.32191 -5841.59 1.31592 -5842.94 1.32131 -5844.28 1.31461 -5845.63 1.30709 -5846.98 1.30375 -5848.32 1.29806 -5849.67 1.28952 -5851.02 1.28356 -5852.36 1.27694 -5853.71 1.27041 -5855.06 1.26355 -5856.41 1.25722 -5857.76 1.25143 -5859.11 1.24833 -5860.46 1.24666 -5861.80 1.25098 -5863.15 1.25102 -5864.50 1.24872 -5865.86 1.25117 -5867.21 1.26057 -5868.56 1.26466 -5869.91 1.26198 -5871.26 1.26487 -5872.61 1.26510 -5873.96 1.26057 -5875.32 1.25490 -5876.67 1.25054 -5878.02 1.24337 -5879.38 1.23132 -5880.73 1.21602 -5882.09 1.20047 -5883.44 1.17944 -5884.80 1.14851 -5886.15 1.12417 -5887.51 1.09848 -5888.86 1.06058 -5890.22 1.02634 -5891.57 1.00701 -5892.93 1.00040 -5894.29 1.00392 -5895.65 1.00629 -5897.00 1.01657 -5898.36 1.03803 -5899.72 1.06235 -5901.08 1.09775 -5902.44 1.12904 -5903.80 1.15626 -5905.16 1.17667 -5906.52 1.19671 -5907.88 1.20941 -5909.24 1.21191 -5910.60 1.22625 -5911.96 1.23077 -5913.32 1.22765 -5914.68 1.23372 -5916.04 1.23185 -5917.41 1.23316 -5918.77 1.23580 -5920.13 1.23999 -5921.49 1.24485 -5922.86 1.24580 -5924.22 1.24653 -5925.59 1.24807 -5926.95 1.25252 -5928.32 1.25161 -5929.68 1.25137 -5931.05 1.24953 -5932.41 1.25684 -5933.78 1.25447 -5935.15 1.25560 -5936.51 1.25672 -5937.88 1.25769 -5939.25 1.25990 -5940.61 1.26152 -5941.98 1.25633 -5943.35 1.26183 -5944.72 1.26134 -5946.09 1.26185 -5947.46 1.26426 -5948.83 1.25878 -5950.20 1.25248 -5951.57 1.25298 -5952.94 1.25600 -5954.31 1.25536 -5955.68 1.25355 -5957.05 1.25119 -5958.42 1.25218 -5959.80 1.25621 -5961.17 1.26337 -5962.54 1.27024 -5963.91 1.27058 -5965.29 1.27233 -5966.66 1.27687 -5968.03 1.27884 -5969.41 1.27416 -5970.78 1.27409 -5972.16 1.27742 -5973.53 1.27866 -5974.91 1.27428 -5976.29 1.26440 -5977.66 1.26057 -5979.04 1.26152 -5980.42 1.25673 -5981.79 1.25395 -5983.17 1.24982 -5984.55 1.25056 -5985.93 1.25496 -5987.30 1.24820 -5988.68 1.24976 -5990.06 1.25720 -5991.44 1.26040 -5992.82 1.26361 -5994.20 1.25928 -5995.58 1.26363 -5996.96 1.25799 -5998.34 1.25925 -5999.73 1.25964 -6001.11 1.25470 -6002.49 1.25022 -6003.87 1.24892 -6005.25 1.24490 -6006.64 1.24413 -6008.02 1.24236 -6009.40 1.23525 -6010.79 1.23615 -6012.17 1.24219 -6013.56 1.23818 -6014.94 1.23302 -6016.33 1.23442 -6017.71 1.23735 -6019.10 1.23882 -6020.48 1.23612 -6021.87 1.23687 -6023.26 1.24419 -6024.64 1.25017 -6026.03 1.25548 -6027.42 1.25923 -6028.81 1.26670 -6030.19 1.27624 -6031.58 1.27963 -6032.97 1.28424 -6034.36 1.28578 -6035.75 1.28120 -6037.14 1.28328 -6038.53 1.29511 -6039.92 1.29909 -6041.31 1.30105 -6042.70 1.29692 -6044.10 1.29979 -6045.49 1.30378 -6046.88 1.30344 -6048.27 1.30230 -6049.67 1.29972 -6051.06 1.29618 -6052.45 1.29621 -6053.85 1.30102 -6055.24 1.29080 -6056.63 1.28678 -6058.03 1.28389 -6059.42 1.28296 -6060.82 1.28550 -6062.22 1.28273 -6063.61 1.28508 -6065.01 1.28540 -6066.40 1.28837 -6067.80 1.28814 -6069.20 1.29176 -6070.60 1.30186 -6071.99 1.30742 -6073.39 1.30718 -6074.79 1.30632 -6076.19 1.29641 -6077.59 1.29224 -6078.99 1.28685 -6080.39 1.28113 -6081.79 1.27475 -6083.19 1.27328 -6084.59 1.27080 -6085.99 1.26854 -6087.39 1.26533 -6088.79 1.26498 -6090.20 1.26369 -6091.60 1.25916 -6093.00 1.26206 -6094.41 1.26389 -6095.81 1.25672 -6097.21 1.26248 -6098.62 1.26831 -6100.02 1.27170 -6101.43 1.25734 -6102.83 1.25303 -6104.24 1.25756 -6105.64 1.25882 -6107.05 1.25981 -6108.45 1.25851 -6109.86 1.26291 -6111.27 1.27209 -6112.68 1.27546 -6114.08 1.27198 -6115.49 1.27123 -6116.90 1.26640 -6118.31 1.26251 -6119.72 1.25662 -6121.13 1.25204 -6122.54 1.24507 -6123.95 1.24012 -6125.36 1.24145 -6126.77 1.24761 -6128.18 1.25189 -6129.59 1.24576 -6131.00 1.24677 -6132.41 1.24612 -6133.82 1.23895 -6135.24 1.23613 -6136.65 1.23412 -6138.06 1.23547 -6139.48 1.23619 -6140.89 1.23657 -6142.30 1.23912 -6143.72 1.24276 -6145.13 1.24869 -6146.55 1.25294 -6147.96 1.25515 -6149.38 1.25195 -6150.80 1.24164 -6152.21 1.23565 -6153.63 1.23362 -6155.05 1.22292 -6156.46 1.20951 -6157.88 1.19914 -6159.30 1.18883 -6160.72 1.16935 -6162.14 1.15872 -6163.56 1.15677 -6164.98 1.14547 -6166.40 1.15131 -6167.82 1.15647 -6169.24 1.15891 -6170.66 1.16376 -6172.08 1.17082 -6173.50 1.18144 -6174.92 1.18532 -6176.34 1.19418 -6177.76 1.20031 -6179.19 1.20430 -6180.61 1.21035 -6182.03 1.21581 -6183.46 1.20691 -6184.88 1.20273 -6186.31 1.20521 -6187.73 1.19673 -6189.15 1.19112 -6190.58 1.18268 -6192.01 1.17937 -6193.43 1.18204 -6194.86 1.18265 -6196.28 1.19175 -6197.71 1.19818 -6199.14 1.19720 -6200.57 1.19842 -6201.99 1.20416 -6203.42 1.20956 -6204.85 1.20827 -6206.28 1.20864 -6207.71 1.20569 -6209.14 1.20689 -6210.57 1.19302 -6212.00 1.18573 -6213.43 1.17937 -6214.86 1.16804 -6216.29 1.16336 -6217.72 1.15625 -6219.15 1.14959 -6220.59 1.14706 -6222.02 1.14463 -6223.45 1.14855 -6224.89 1.15378 -6226.32 1.15126 -6227.75 1.14801 -6229.19 1.14457 -6230.62 1.14914 -6232.06 1.14406 -6233.49 1.14665 -6234.93 1.14636 -6236.36 1.14885 -6237.80 1.15538 -6239.24 1.14247 -6240.67 1.13931 -6242.11 1.14116 -6243.55 1.13029 -6244.98 1.13211 -6246.42 1.13452 -6247.86 1.13390 -6249.30 1.13543 -6250.74 1.13503 -6252.18 1.13459 -6253.62 1.13242 -6255.06 1.12740 -6256.50 1.12960 -6257.94 1.12629 -6259.38 1.12894 -6260.82 1.13830 -6262.26 1.14273 -6263.71 1.15208 -6265.15 1.16170 -6266.59 1.16133 -6268.03 1.17118 -6269.48 1.18082 -6270.92 1.18316 -6272.37 1.18691 -6273.81 1.18358 -6275.25 1.18124 -6276.70 1.18628 -6278.15 1.19229 -6279.59 1.19121 -6281.04 1.19317 -6282.48 1.19822 -6283.93 1.20271 -6285.38 1.19758 -6286.82 1.19963 -6288.27 1.19822 -6289.72 1.20503 -6291.17 1.20926 -6292.62 1.20365 -6294.07 1.20029 -6295.52 1.20071 -6296.97 1.19687 -6298.42 1.19543 -6299.87 1.19233 -6301.32 1.18987 -6302.77 1.19461 -6304.22 1.19599 -6305.67 1.19741 -6307.12 1.19700 -6308.58 1.19597 -6310.03 1.19632 -6311.48 1.19511 -6312.94 1.19119 -6314.39 1.18249 -6315.84 1.18073 -6317.30 1.18039 -6318.75 1.18125 -6320.21 1.18335 - diff --git a/pro/science/kinematics/template.pro b/pro/science/kinematics/template.pro deleted file mode 100644 index 2baff1d3e..000000000 --- a/pro/science/kinematics/template.pro +++ /dev/null @@ -1,55 +0,0 @@ -; -; NAME: -; template -; -; PURPOSE: -; Given N template stars the code generates NT templates -; by combining random sampling of the N template stars -; -; CALLING SEQUENCE: -; template, starflux, startemp, ntemplate = ntemplate -; -; INPUTS: -; starflux - Template spectra [npix, N] -; -; -; OPTIONAL KEYWORDS: -; ntemplate - the number (NT) of generated templates -; -; OUTPUTS: -; startemp - The combined template spectra [npix, NT] -; -; starfact - the random numbers (1:10) which multiply the -; template stars in order to generate -; the combined templates. -; It is an array [N,NT] -; -; REVISION HISTORY: -; -; 2-Aug-2000 written by M. Bernardi -;------------------------------------------------------------------------------ -Pro template, starflux, startemp, starfact, ntemplate = ntemplate - - npix=(size(starflux))[1] - nstar= (size(starflux))[2] - - if (NOT keyword_set(ntemplate)) then ntemplate = 1 - - startemp=fltarr(npix,ntemplate) - starfact=intarr(nstar,ntemplate) - - for i=0,ntemplate-1 do begin - - nrand=long(randomu(105*i,nstar,/uniform)*10) - test=nrand[0]*starflux[*,0] - - for k=1,nstar-1 do begin - test = test+nrand[k]*starflux[*,k] - endfor - - startemp[*,i] = test - starfact[*,i] = nrand - endfor - -return -end \ No newline at end of file diff --git a/pro/science/kinematics/vdisprebin.pro b/pro/science/kinematics/vdisprebin.pro deleted file mode 100644 index b18341e8c..000000000 --- a/pro/science/kinematics/vdisprebin.pro +++ /dev/null @@ -1,23 +0,0 @@ -;------------------------------------------------------------------------------ -; This is a routine to rebin Eisenstein's stellar templates for use -; as velocity dispersion standards. This is basically a throw-away -; routine, until we properly generate such templates. -pro vdisprebin - - readcol, 'sp4', lam, s1, s2, s3, s4, format='(D,D,D,D)' - readcol, 'sp321', lam, s5, s6, s7, format='(D,D,D,D)' - newflux = [[s1],[s2],[s3],[s4],[s5],[s6],[s7]] - - ;---------- - ; Write output file - - loglam = alog10(lam) - dloglam = 1.d-4 - - sxaddpar, hdr, 'COEFF0', loglam[0] - sxaddpar, hdr, 'COEFF1', dloglam - mwrfits, float(newflux), 'spEigenVdisp.fits', hdr, /create - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/science/lickindex/gauss_smooth_wave.pro b/pro/science/lickindex/gauss_smooth_wave.pro deleted file mode 100644 index 08f3e9c1e..000000000 --- a/pro/science/lickindex/gauss_smooth_wave.pro +++ /dev/null @@ -1,28 +0,0 @@ -function gauss_smooth_wave, x, y, sigma, xout -; Input data in x and y -; smooth with sigma (vector same length and units of x) -; and evaluate at xout -; - - yout = xout * 0.0 - - - var = sigma*sigma - denom = 1.0/sqrt(2.0*!Pi * var) - - for i=0,n_elements(xout)-1 do begin - ; - ; Find all x's within 10 sigma - ; - diff = (x*1.d0-xout[i])^2 - thesex = where(diff LT 100.0*var[i]) - if (thesex[0] NE -1) then begin - kernel = exp(-0.5*diff[thesex]/var[i])*denom[i] - yout[i] = total(kernel*y[thesex])/total(kernel) - endif - endfor - - return, yout -end - - diff --git a/pro/science/lickindex/lickindices.pro b/pro/science/lickindex/lickindices.pro deleted file mode 100644 index c8e91a831..000000000 --- a/pro/science/lickindex/lickindices.pro +++ /dev/null @@ -1,58 +0,0 @@ -function lickindices, samples, ver1Ddir, contype, test = test, list = list - -; contype=0 without continuum -; contype=1 continuum obtained splining only the pseudo continuum regions -; contype=2 continuum obtained splining all the wavelength range -; contype=3 continuum obtained with a straight line - - if (keyword_set(list)) then begin - inputlist = samples - readcol, inputlist, samples, format='(a)' - endif - - nfiles=n_elements(samples) - - for j=0,nfiles-1 do begin - - sample=mrdfits(samples[j],1) - - good=where(sample.plate NE 0) - ngals=n_elements(good) - plate=sample[good[0]].plate - mjd=sample[good[0]].mjd - - for i=0,ngals-1 do begin - - ff = string('/usr/sdss/data05/spectro/'+ver1Ddir+'/' $ - +string(plate,format='(i4.4)')+$ - '/1d/spSpec-'+string(mjd,format='(i5.5)')+'-'$ - +string(plate,format='(i4.4)')+'-'$ - +string(sample[good[i]].fiberid,format='(i3.3)')+'.fit') - - spec = mrdfits(ff,0,hdr) - - npix= (size(spec[*,0]))[1] - wave=sxpar(hdr,'COEFF0')+ findgen(npix)*0.0001 - - one_indices, spec[*,0], wave, spec[*,2], sample[good[i]].z_1D, $ - contype, abslines, abslineserr, sn - - sample[good[i]].lickindex=abslines - sample[good[i]].lickindexerr=abslineserr - - endfor - - if (keyword_set(test)) then $ - namesample=string('spec_param_'+string(mjd,format='(i5.5)')+'_' $ - +string(plate, format='(i4.4)') $ - +string(test, format='(a)')+'.fit') $ - else $ - namesample=string('spec_param_'+string(mjd,format='(i5.5)')+'_' $ - +string(plate, format='(i4.4)')+'.fit') - mwrfits, sample, namesample, /create - - endfor - -return, sample - -end \ No newline at end of file diff --git a/pro/science/lickindex/one_indices.pro b/pro/science/lickindex/one_indices.pro deleted file mode 100644 index ea9833e9b..000000000 --- a/pro/science/lickindex/one_indices.pro +++ /dev/null @@ -1,175 +0,0 @@ -Pro one_indices, galfluxbest, galwavebest, galsigbest, bestredshift, pp, absline, errabsline, snoise, m = m , q = q, galsmooth = galsmooth - -; pp=0 without continuum -; pp=1 continuum obtained splining only the pseudo continuum regions -; pp=2 continuum obtained splining all the wavelength range -; pp=3 continuum obtained with a straight line - -indexl=[4143.375,4143.375,4223.500,4282.625,4370.375,4453.375,4515.500,4635.250,4848.875,4979.000,5070.375,5155.375,5161.375,5247.375,5314.125,5390.250,5698.375,5778.375,5878.625,5938.375,6191.375] -indexr=[4178.375,4178.375,4236.000,4317.625,4421.625,4475.875,4560.500,4721.500,4877.625,5055.250,5135.375,5197.875,5193.875,5287.375,5354.125,5417.750,5722.125,5798.375,5911.125,5995.875,6273.875] -contl=[4081.375,4245.375,4085.125,4245.375,4212.250,4242.250,4267.625,4320.125, 4360.375,4444.125,4447.125,4478.375,4505.500,4561.750,4612.750,4744.000,4828.875,4877.625,4947.750,5055.250,4896.375,5302.375,4896.375,5302.375,5143.875,5192.625,5234.875,5287.375,5306.625,5355.375,5379.000,5417.750,5674.625,5724.625,5767.125,5799.625,5862.375,5923.875,5818.375,6040.375,6068.375,6374.375] -contr=[4118.875,4285.375,4097.625,4285.375,4221.000,4252.250,4283.875,4336.375, 4371.625,4456.625,4455.875,4493.375,4515.500,4580.500,4631.500,4757.750,4848.875,4892.625,4979.000,5066.500,4958.875,5367.375,4958.875,5367.375,5162.625,5207.625,5249.875,5319.875,5317.875,5365.375,5390.250,5427.750,5698.375,5738.375,5777.125,5813.375,5877.375,5949.875,5850.875,6105.375,6143.375,6416.875] - -lindl= alog10(indexl) -lindr= alog10(indexr) -indl=alog10(contl) -indr=alog10(contr) - -npix=(size(galfluxbest))[1] - -x=galwavebest-alog10(1+bestredshift) - - -if (pp EQ 1 OR pp EQ 2) then begin - -galivar = 1.0/galsigbest^2 -galivar[where(finite(galivar) EQ 0)] = 0 - -mask = bytarr(npix) - - for k=0,41 do begin & $ - inside = where(x GE indl[k] AND x LE indr[k], ninside) & $ - if (ninside GT 0) then mask[inside] = 1 & $ - endfor - galerr = galivar * mask - -if (pp EQ 1) then galer=galerr -if (pp EQ 2) then galer=galivar - -fullbkpt = slatec_splinefit(x, galfluxbest, coeff, nbkpt=5, invvar=galer,upper=1.5, lower=0.5) -continuum = slatec_bvalu(x, fullbkpt, coeff) -galsub=galfluxbest/continuum -galnoise = galsigbest/continuum -endif - -xv=x -res=8.6/10^(xv)*0.43429 -if (pp EQ 0 OR pp EQ 3) then begin -y=galfluxbest -noise=1/galsigbest^2 -endif -if (pp EQ 1 OR pp EQ 2) then begin -y=galsub -noise=1/galnoise^2 -endif -inf = where(finite(noise) EQ 0) -if (inf[0] NE -1) then noise[inf]=0 -;galsmooth= gauss_smooth_wave(xv,y,res,xv) -galsmooth=y - -bcont=fltarr(21) -rcont=bcont -ind=bcont -dw=bcont -m=bcont -q=bcont -xmeanl=bcont -xmeanr=bcont -absline=bcont -errabsline=bcont -snoiseb=bcont -snoiser=bcont -snoise=bcont -acont=bcont -ew=bcont -magline=bcont -errew=bcont -errmagline=bcont -errin=bcont -errcont=bcont -errcontb=bcont -errcontr=bcont -tnb=bcont -tnr=bcont -tni=bcont - -k=0 -for nn=0,20 do begin - bw = where(x GE indl[k] AND x LE indr[k]) - rw = where(x GE indl[k+1] AND x LE indr[k+1]) - iw = where(x GE lindl[nn] AND x LE lindr[nn]) - - if (rw[0] NE -1 AND bw[0] NE -1 AND iw[0] NE -1) then begin - - tnb[nn]=total(noise[bw]) - tnr[nn]=total(noise[rw]) - tni[nn]=total(noise[iw]) - - if (tnb[nn] EQ 0.0 OR tnr[nn] EQ 0.0 OR tni[nn] EQ 0.0) then begin - absline[nn]=-1.0 - - endif else begin - - bcont[nn]=total(galsmooth[bw]*noise[bw])/tnb[nn] - rcont[nn]=total(galsmooth[rw]*noise[rw])/tnr[nn] & $ - ind[nn]=total(galsmooth[iw]*noise[iw])/tni[nn] & $ - errcontb[nn]=sqrt(1/total(noise[bw])) - errcontr[nn]=sqrt(1/total(noise[rw])) - errin[nn]=sqrt(1/total(noise[iw])) - errcont[nn]=sqrt(errcontb[nn]^2+errcontr[nn]^2) - - dw[nn]=10^(lindr[nn])-10^(lindl[nn]) & $ - snoiseb[nn]= bcont[nn]/mean(1/sqrt(noise[bw])) - snoiser[nn]= rcont[nn]/mean(1/sqrt(noise[rw])) - snoise[nn]= ind[nn]/mean(1/sqrt(noise[iw])) - - if (pp EQ 3) then begin & $ - xmeanl[nn]=10^((indr[k]+indl[k])/2) & $ - xmeanr[nn]=10^((indr[k+1]+indl[k+1])/2) & $ - m[nn]=(rcont[nn]-bcont[nn])/(xmeanr[nn]-xmeanl[nn]) & $ - q[nn]= bcont[nn]- m[nn]*xmeanl[nn] & $ - errm=errcont[nn]/(xmeanr[nn]-xmeanl[nn]) - errq=sqrt(errcontb[nn]^2+(errm*xmeanl[nn])^2) - err=sqrt((10^(x[iw])*errm)^2+errq^2) - contin=m[nn]*10^(x[iw])+q[nn] - acont[nn]=total(contin/err^2)/total(1/err^2) - errcont[nn]=sqrt(1/total(1/err^2)) - ind[nn]=total(y[iw]/galsigbest[iw]^2)/total(1/galsigbest[iw]^2) - errin[nn]=sqrt(1/total(1/galsigbest[iw]^2)) - -; galnew=y[iw]/(m[nn]*10^(x[iw])+q[nn]) & $ -; galnewerr=galsigbest[iw]/(m[nn]*10^(x[iw])+q[nn]) -; ind[nn]=total(galnew/galnewerr^2)/total(1/galnewerr^2) & $ -; errin[nn]=sqrt(1/total(1/galnewerr^2)) - - errcontb[nn]=errcontb[nn]/bcont[nn] - errcontr[nn]=errcontr[nn]/rcont[nn] - bcont[nn]=1 & $ - rcont[nn]=1 & $ - endif - - if (pp NE 3) then begin -acont[nn]=(bcont[nn]+rcont[nn])/2 -errcont[nn]=sqrt(errcontb[nn]^2+errcontr[nn]^2) - endif - -; EDITED by hogg -;ew[nn]=dw[nn]*(acont[nn]-ind[nn])/acont[nn] -;errew[nn]= ew[nn]* $ -; sqrt((errcont[nn]^2+errin[nn]^2)/(acont[nn]-ind[nn])^2+ $ -; errcont[nn]^2/acont[nn]^2) -ew[nn]=dw[nn]*(1.0-(ind[nn]/acont[nn])) -errew[nn]= (dw[nn]*ind[nn]/acont[nn])* $ - sqrt((errin[nn]/ind[nn])^2+(errcont[nn]/acont[nn])^2) - -magline[nn]=-2.5*alog10(ind[nn]/acont[nn]) -errmagline[nn]=2.5/2.303*sqrt(errin[nn]^2/ind[nn]^2+errcont[nn]^2/acont[nn]^2) - - -if (nn EQ 0 OR nn EQ 1 OR nn EQ 10 OR nn EQ 11 OR nn EQ 19 OR nn EQ 20) then begin -absline[nn]=magline[nn] -errabsline[nn]=errmagline[nn] -endif else begin -absline[nn]=ew[nn] -errabsline[nn]=errew[nn] -endelse - - endelse - endif - -k=k+2 - -endfor -return - -end \ No newline at end of file diff --git a/pro/science/lya/tess_equal_pts.pro b/pro/science/lya/tess_equal_pts.pro deleted file mode 100644 index 935957738..000000000 --- a/pro/science/lya/tess_equal_pts.pro +++ /dev/null @@ -1,261 +0,0 @@ -;+ -; NAME: -; tess_equal_pts -; -; PURPOSE: -; Tesselate a point distribution of points on the sky into chunks -; with an equal number per chunk -; -; CALLING SEQUENCE: -; tess_equal_pts, infile, [ outfile, nchunk=, ntry=, niter=, $ -; srange=, /debug, plotfile= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; infile - Input FITS binary table file containing RA,DEC -; outfile - Output FITS binary table with identical format at INFILE -; but with the addition of an ICHUNK tag running from 0 to -; NCHUNK-1; -; default to INFILE replacing '.fits' with '-ichunk.fits' -; nchunk - Number of tessellation chunks; default to 20 -; ntry - Number of offsets to test in each step in the annealing -; of the solution; default to 20 -; niter - Number of iterations of annealing; default to 200 -; srange - Range of mean offsets for testing tessellation center offsets; -; default to [0.01,3] deg; begin the iterations with offsets -; with an RMS distribution of SRANGE[1]; each iteration -; scales this down by 10% (if not improvement found) or up -; by 10% (if improvement is found) but always bounded by -; the SRANGE[0],SRANGE[1] -; debug - If set, then make sky plot at each iteration -; plotfile - If set, then make final PostScript plot; either string -; value for the file name, or set /PLOTFILE for default name -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; REVISION HISTORY: -; 30-May-2013 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -; The annealing code improves the following metric in each step which -; has three terms: -; 1. Standard dev. of the number of objects assigned to each chunk -; 2. Maximum number of objects in any chunk -; 3. Total of all object-to-chunk-center distances -; The first half of the iterations include the 3rd term, which is then -; tuned to zero for the second half of iterations -function tess_equal_val, cnum, dmin, nchunk=nchunk, detune=detune - vhist = lonarr(nchunk) - populate_image, vhist, cnum - term1 = stddev(vhist) - term2 = max(vhist) - term3 = total(dmin)*detune - return, term1 + term2 + term3 -end - -;------------------------------------------------------------------------------ -pro tess_equal_plot, objs, cobj, cnum, nchunk=nchunk, isort=isort, qngc=qngc, $ - psfile=psfile - - if (qngc) then begin - aitoff, 180-objs.ra, objs.dec, xplot, yplot - aitoff, 180-cobj.ra, cobj.dec, xplotc, yplotc - title = 'NGC Aitoff projection' - endif else begin - aitoff, 270-objs.ra, objs.dec, xplot, yplot - aitoff, 270-cobj.ra, cobj.dec, xplotc, yplotc - title = 'SGC Aitoff projection' - endelse - - ; Plot each chunk, sorted by RA of the chunk center - colorvec = ['red','green','blue','cyan','magenta','grey', $ - 'yellow','light red','light green','light blue', $ - 'light cyan','light magenta'] - if (keyword_set(psfile)) then $ - djs_plot, xplot, yplot, /nodata, xstyle=5, ystyle=5, title=title $ - else $ - splot, xplot, yplot, /nodata, xstyle=5, ystyle=5, title=title - for j=0L, nchunk-1L do begin - indx = where(cnum EQ isort[j], ct) - if (ct GT 0) then $ - if (keyword_set(psfile)) then $ - djs_oplot, xplot[indx], yplot[indx], psym=3, $ - color=djs_icolor(colorvec[j MOD n_elements(colorvec)]) $ - else $ - soplot, xplot[indx], yplot[indx], psym=3, $ - color=djs_icolor(colorvec[j MOD n_elements(colorvec)]) - endfor - if (keyword_set(psfile)) then $ - djs_oplot, xplotc, yplotc, psym=2 $ - else $ - soplot, xplotc, yplotc, psym=2 - - return -end - -;------------------------------------------------------------------------------ -pro tess_equal_pts, infile, outfile, nchunk=nchunk1, ntry=ntry1, niter=niter1, $ - srange=srange1, debug=debug, plotfile=plotfile1 - - if (NOT keyword_set(infile)) then $ - message, 'Must specify INFILE' - if (NOT keyword_set(outfile)) then begin - thisfile = fileandpath(infile, path=thispath) - ipos = strpos(thisfile, '.fits', /reverse_search) - if (ipos EQ -1) then ipos = strlen(thisfile) - outfile = djs_filepath(strmid(thisfile,0,ipos)+'-ichunk.fits', $ - root_dir=thispath) - endif - if (keyword_set(plotfile1)) then begin - if (size(plotfile1,/tname) EQ 'STRING') then begin - plotfile = plotfile1 - endif else begin - thisfile = fileandpath(outfile, path=thispath) - ipos = strpos(thisfile, '.fits', /reverse_search) - if (ipos EQ -1) then ipos = strlen(thisfile) - plotfile = djs_filepath(strmid(thisfile,0,ipos)+'.ps', $ - root_dir=thispath) - endelse - endif - - if (keyword_set(nchunk1)) then nchunk = nchunk1 $ - else nchunk = 20 - if (keyword_set(ntry1)) then ntry = ntry1 $ - else ntry = 20 - if (keyword_set(niter1)) then niter = niter1 $ - else niter = 200 - if (n_elements(srange1) EQ 2) then srange = srange1 $ - else srange = [0.01, 3.] - - objs = mrdfits(infile,1) - nobj = n_elements(objs) * keyword_set(objs) - if (nobj LT nchunk) then $ - message, 'Fewer objects than chunks!' - tags = tag_names(objs) - if (total(tags EQ 'RA') + total(tags EQ 'DEC') NE 2) then $ - message, 'Input file must contain RA,DEC!' - - if (keyword_set(debug) OR keyword_set(plotfile)) then begin - euler, objs.ra, objs.dec, ll, bb, 1 - qngc = total(bb GT 0) GT 0 - ll = 0 - bb = 0 - endif - - ; Start with a list of chunks centered on a random subset - ; of the object positions - ; Start with a list of chunks centered on a random subset - ; of the object positions - indx = (sort(randomu(1234,nobj)))[0:nchunk-1] - cobj = replicate(create_struct('ra', 0d, 'dec', 0d), nchunk) - cobj.ra = objs[indx].ra - cobj.dec = objs[indx].dec - - ; Compute the initial chunks and the metric - darr = dblarr(nchunk, nobj) - for ichunk=0L, nchunk-1L do $ - darr[ichunk,*] = djs_diff_angle(objs.ra, objs.dec, $ - cobj[ichunk].ra, cobj[ichunk].dec) - cnum = lonarr(nobj) ; chunk number for each object (closest center) - dmin = dblarr(nobj) ; distance to this - for i=0L, nobj-1L do begin - dmin[i] = min(darr[*,i], j) - cnum[i] = j - endfor - detune0 = 1000. * float(nchunk) / float(nobj) - detune = detune0 - tvalue = tess_equal_val(cnum, dmin, nchunk=nchunk, detune=detune) - - ; Make a list of possible offsets - ; inum - Chunk center number to change - ; ra, dec - New location for that center - ; dthis[NOBJ] - Distance to that center - ; dnew[NOBJ] - Best new distance - ; cnew[NOBJ] - Best new chunk number - ; vnew - New value - tobj = replicate(create_struct('inum', 0L,'ra', 0d, 'dec', 0d, $ - 'dthis', dblarr(nobj), 'dnew', dblarr(nobj), 'cnew', lonarr(nobj), $ - 'vnew', 0d), ntry) - - ; Iterate - scale = srange[1] - for iiter=0L, niter-1L do begin - tobj.inum = long(randomu(2345+iiter, ntry) * nchunk) < (nchunk-1) - for itry=0L, ntry-1L do begin - tobj[itry].ra = cobj[tobj[itry].inum].ra + randomn(3456+itry) * scale - tobj[itry].dec = cobj[tobj[itry].inum].dec + randomn(4567+itry) * scale - tobj[itry].dthis = djs_diff_angle(tobj[itry].ra, tobj[itry].dec, $ - objs.ra, objs.dec) - - ; The objects that could change are those where the chunk number - ; is already this chunk, or where the distance to this chunk is - ; smaller than the existing best distance - tobj[itry].cnew = cnum ; start with the existing chunk assignments - tobj[itry].dnew = dmin ; start with the existing chunk assignments - indx = where(cnum EQ tobj[itry].inum $ - OR tobj[itry].dthis LT dmin, nn) - for i=0L, nn-1L do begin - dtmp = darr[*,indx[i]] - dtmp[tobj[itry].inum] = tobj[itry].dthis[indx[i]] - tobj[itry].dnew[indx[i]] = min(dtmp, itmp) - tobj[itry].cnew[indx[i]] = itmp - endfor - - detune = detune0*float(0.5*niter-iiter)/niter > 0 - tobj[itry].vnew = tess_equal_val(tobj[itry].cnew, $ - tobj[itry].dnew, nchunk=nchunk, detune=detune) - endfor - - ; See if the best of these possible offsets improves the solution, - ; and if so then move to it - vbest = min(tobj.vnew, ibest) - if (vbest LT tvalue) then begin - cobj[tobj[ibest].inum].ra = tobj[ibest].ra - cobj[tobj[ibest].inum].dec = tobj[ibest].dec - darr[tobj[ibest].inum,*] = tobj[ibest].dthis - dmin = tobj[ibest].dnew - cnum = tobj[ibest].cnew - tvalue = vbest - scale = (scale*1.10) < srange[1] - endif else begin - scale = (scale/1.10) > srange[0] - endelse - print, 'Iteration ', iiter, ' of ', niter, ' metric=', tvalue, $ - ' scale=', scale - - if (keyword_set(debug)) then $ - tess_equal_plot, objs, cobj, cnum, nchunk=nchunk, isort=sort(cobj.ra), $ - qngc=qngc - endfor - - if (keyword_set(plotfile)) then begin - print, 'Writing plot file '+plotfile - dfpsplot, plotfile, /square, /encap, /color - tess_equal_plot, objs, cobj, cnum, nchunk=nchunk, isort=sort(cobj.ra), $ - qngc=qngc, /psfile - dfpsclose - endif - - for ichunk=0L, nchunk-1L do $ - print, 'Chunk #', ichunk,' contains ', $ - long(total(cnum EQ ichunk)), ' objects' - - ; Write output file - print, 'Writing output file '+outfile - outdat = struct_addtags(objs, replicate(create_struct('ichunk',0L),nobj)) -; outdat = replicate(create_struct('ra', 0d, 'dec', 0d, 'ichunk', 0L), nobj) -; outdat.ra = objs.ra -; outdat.dec = objs.dec - outdat.ichunk = cnum - mwrfits, outdat, outfile, /create - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/science/lya/zqso_nolya.pro b/pro/science/lya/zqso_nolya.pro deleted file mode 100644 index 9f98f3e18..000000000 --- a/pro/science/lya/zqso_nolya.pro +++ /dev/null @@ -1,108 +0,0 @@ - -; zciv = zqso_nolya(flux, invvar, loglam, pwidth=400, zold=zans) -function zqso_nolya, objflux, objivar, loglam, $ - npoly=npoly, pwidth=pwidth, eigenfile=eigenfile, zold=zold, $ - minrest=minrest, maxrest=maxrest, synthspec=synthspec - - if NOT keyword_set(minrest) then minrest=1170.0 - if NOT keyword_set(maxrest) then maxrest=1600.0 - - ndim = size(objflux, /n_dimen) - if (ndim EQ 1) then begin - nobj = 1 - npix = n_elements(objflux) - endif else begin - nobj = (size(objflux, /dimens))[1] - npix = (size(objflux, /dimens))[0] - endelse - - objdloglam = loglam[1,*] - loglam[0,*] - - if (n_elements(zold) GT 0 AND keyword_set(pwidth)) then begin - pmin = floor( alog10(1.0 + zold.z) / objdloglam - 0.5 * pwidth ) - pmax = floor( alog10(1.0 + zold.z) / objdloglam + 0.5 * pwidth ) - endif - - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates/') - if NOT keyword_set(eigenfile) then begin - if n_elements(zold) GT 0 then eigenfile=zold[0].tfile $ - else message, 'need eigenfile or zold' - endif - - efile = strtrim(eigendir+eigenfile,2) - - starflux = readfits(efile, shdr) - starloglam0 = sxpar(shdr, 'COEFF0') - stardloglam = sxpar(shdr, 'COEFF1') - - ndim = size(starflux, /n_dimen) - dims = size(starflux, /dimens) - npixstar = dims[0] - if (ndim EQ 1) then nstar = 1 $ - else nstar = dims[1] - - - rlam = loglam - replicate(1,npix) # alog10(1.0+zold.z) - objmask = rlam GT alog10(minrest) AND rlam LT alog10(maxrest) - - ;---------- - ; Add more eigen-templates that represent polynomial terms. - - if (keyword_set(npoly)) then $ - starflux = [ [starflux], [poly_array(npixstar,npoly)] ] - - ;---------- - ; Compute the redshift difference between the first pixel of the object - ; spectra and the template. - - poffset = ((loglam[0,*])[*] - starloglam0) / objdloglam - - ;---------------- - ; Compute the redshifts - - smoothflux = objflux*0.0 - tempivar = objivar*objmask - -; -; Need a subroutine for good continuum fitting, again?!? -; -; - - for i=0,nobj-1 do begin - qso_continuum_fit, loglam[*,i], objflux[*,i], objivar[*,i], $ - model=yfit - smoothflux[*,i] = yfit - endfor - - zans = zcompute(smoothflux, tempivar, starflux, poffset=poffset, $ - pmin=pmin, pmax=pmax, pspace=1, width=21) - - ;---------------- - ; Need to do at least one round of rejections - - ;---------- - ; Convert redshift (and error) from pixels to the conventional dimensionless - ; value. - - indx = where(zans.dof GT 0) - if (indx[0] NE -1) then begin - zans[indx].z = 10.^(objdloglam[indx] * zans[indx].z) - 1. - zans[indx].z_err = $ - alog(10d) * objdloglam[indx] * zans[indx].z_err * (1 + zans[indx].z) - endif - - - zreturn = zold - zreturn.z = (zans.z)[*] - zreturn.z_err = (zans.z_err)[*] - zreturn.tcolumn = -1 - zreturn.tcolumn[0] = 0 - zreturn.theta = 0 - zreturn.theta[0] = (zans.theta)[*] - zreturn.dof = (zans.dof)[*] - zreturn.rchi2 = (zans.chi2 / zans.dof )[*] - - - return, zreturn -end -;------------------------------------------------------------------------------ diff --git a/pro/science/qso/README b/pro/science/qso/README deleted file mode 100644 index 769156d22..000000000 --- a/pro/science/qso/README +++ /dev/null @@ -1,62 +0,0 @@ - -Simple routines in this directory can be used to make a linelist -based on MgII absorption: - -1) Read in data from 2d_v4_8 directory and apply a continuum fit. - Use pratical choices of zmin, zmax to trim sample: - Select [plates] and optional mjds from plate list - -getqso, [plates], [mjds], mgspec=mgspec, zmin=0.7, zmax=4.0 - - -2) Convert flux to Equivalent Width: EW = 1.0 - Flux/Cont - -rline_findew, mgspec, ew, ewinv, fopt, foptinv, sigma=1.0 - -3) Identify significant ew peaks, let's try 3sigma and see how many - false detections we can expect. - Npeak is Maximum number of peaks returned per spectrum, - we should double check to make sure this limit is not reached. - threshold is sigma limit for detection: - -peak_list = rline_findpeaks(ew, ewinv, npeak=80, threshold=3.0) - -4) Now loop through peak_list to identify MgII and other associated - Fe,MgI,Ca,... lines at common wavelength. - -id_list = qso_sortpeaks(peak_list, mgspec, linelist='mgII.lines') - -5) You will see a print out of the lines identified. To - plot the lines identified in a spectrum (i.e. 29), use: - (Red diamonds are pixels rejected during continuum fit procedure) - -quickplot, mgspec, 29, id_list - - -6) Now we need to summarize the results. An ascii table is best: - -;i Plate-MJD-Fiber RA DEC ZQSO ZABS EW_2796 EW_2803 EW_2852 ... -; The Equivalength Widths are output as "Milli-pixels" - -id_summarize, id_list, mgspec, summary=s - - -Summary of commands here: - -readcol, 'platelist.txt', plates, mjds -getqso, plates, mjds, mgspec=mgspec, zmin=0.7, zmax=4.0 -rline_findew, mgspec, ew, ewinv, fopt, foptinv, sigma=1.0 -peak_list = rline_findpeaks(ew, ewinv, npeak=80, threshold=3.0) -id_list = qso_sortpeaks(peak_list, mgspec, linelist='mgII.lines') -id_summarize, id_list, mgspec, summary=s -print_idsummary,s -ui = s[uniq(s.index)].index -mgspec3 = mgspec[ui] -save, mgspec, filename='~/QSO/Lens/plates_mgii.dat' - -nabs = mgii_pathlength(s, mgspec) -propfrac, s.zabs, s.zqso, ldist=ldist, sdist=sdist -s.rank = ldist * s.ew2796 * (20.0 - mgspec[s.index].plug.mag[3]) -print_idsummary,s, filename='mgii_table.ascii' - - diff --git a/pro/science/qso/create_absstruct.pro b/pro/science/qso/create_absstruct.pro deleted file mode 100644 index e9abf8192..000000000 --- a/pro/science/qso/create_absstruct.pro +++ /dev/null @@ -1,44 +0,0 @@ - -function create_absstruct, peak, index, zqso, this_wave, $ - restwave, f_value, label -; -; Prepare structure template -; - fill = { label : '', index : 0L, $ - pixel : 0.0, pixel_err : 0.0, $ - wave : 0.0d, wave_err : 0.0d, $ - ew_pix : 0.0, ew_r : 0.0, ew_sn : 0.0, $ - sigma_pix : 0.0, $ - restwave : 0.0d, f_value : 0.0, $ - zabs : 0.0, zabs_err : 0.0, z_qso : 0.0 } - - fill = replicate(fill,n_elements(peak)) - - pixel_width = 1.0d-4 * alog(10) - - fill.index = index - fill.pixel = peak.x - fill.pixel_err = peak.xerr - fill.wave = 10^this_wave - fill.wave_err = pixel_width*peak.xerr*10^this_wave - - fill.ew_pix = peak.y - fill.ew_sn = peak.sn - fill.ew_r = pixel_width * restwave * fill.ew_pix - fill.label = label - fill.restwave = restwave - fill.f_value = f_value - - fill.zabs = fill.wave / fill.restwave - 1.0 - fill.z_qso = zqso - - return, fill -end - - - - - - - - diff --git a/pro/science/qso/fitfineconst.pro b/pro/science/qso/fitfineconst.pro deleted file mode 100644 index 1132a22e7..000000000 --- a/pro/science/qso/fitfineconst.pro +++ /dev/null @@ -1,223 +0,0 @@ -;------------------------------------------------------------------------------ -;+ -; NAME: -; fitfineconst -; -; PURPOSE: -; Steinhardt's project to fit the fine structure constant from O_III lines -; -; CALLING SEQUENCE: -; fitfineconst, plate, fiber, mjd=, [ linewave=, lineratio=, $ -; bestshift=, besterr=, bestratio=, bestrchi2=, /debug, /doplot ] -; -; INPUTS: -; plate - Plate number -; fiber - Fiber number -; -; REQUIRED KEYWORDS: -; mjd - MJD number for this PLATE -; -; OPTIONAL INPUTS: -; linewave - Two-element array with the line wavelengths (in air). -; The fitting is done by shifting the 2nd line to fit the 1st. -; Default to [4958.911d0, 5006.843d0] Ang. -; lineratio - Input flux ratio of (line 2):(line 1) for scaling the -; errors; default to 2.0. -; debug - If set, then send debugging plots to the screen -; doplot - If set, then output a bunch of plots -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; bestshift - Best shift between lines in log10(Ang) -; besterr - Formal error in BESTSHIFT, but rescaled by BESTRCHI2 -; bestratio - Fit to flux ratio (line 2):(line 1) -; bestrchi2 - Reduced chi^2 of the best fit -; -; COMMENTS: -; -; EXAMPLES: -; IDL> fitfineconst, 276, 251, mjd=51909, /debug, /doplot, $ -; bestshift=bestshift, besterr=besterr -; -; PROCEDURES CALLED: -; combine1fiber -; djs_oplot -; find_nminima -; readspec -; -; REVISION HISTORY: -; 09-Jul-2002 Written by D. Schlegel & C. Steinhardt, Princeton. -;------------------------------------------------------------------------------ -function fitfineconst1, ishift, fitflux=fitflux, theta=theta - - common com_fitfine, npix1, npoly, lineratio, $ - nsamp, ipix1, ipix2, itrim, sigma2, bigpixshift, llamshift, $ - loglam, objflux, objivar, $ - bigloglam, bigflux, bigivar - - ; Get the 2nd line from the over-sampled spectrum that most - ; closely matches the wavelengths of the 1st line - ibigpix = ipix2 * nsamp + bigpixshift[ishift] - llamshift[ishift] = bigloglam[ibigpix[0]] - loglam[ipix1[0]] - - ; Trim to only good data points - igood = where(objivar[ipix1] NE 0 AND bigivar[ibigpix] NE 0, ngood) - itrim = ipix1[igood] - ibigpix = ibigpix[igood] - - ; THE "MODEL" SPECTRUM: bigloglam[ibigpix], bigflux[ibigpix] - ; THE "DATA" SPECTRUM: loglam[itrim], objflux[itrim] - ; Approximate the variance in the "DATA" spectrum as: - ; 1/objivar[itrim]^2 + 0.5/bigivar[ibigpix]^2 -; sigma2 = 1. / (objivar[itrim])^2 + (1./lineratio^2) / (bigivar[ibigpix])^2 - sigma2 = 1. / (objivar[itrim]) + (1./lineratio^2) / (bigivar[ibigpix]) - weight = 1. / sqrt(sigma2) - - ; Construct the basis vectors, which are polynomial terms - ; and the shifted 5007 line. -; basisvec = [[poly_array(npix1,npoly)], [bigflux[ibigpix]]] - basisvec = [[bigflux[ibigpix]], [poly_array(ngood,npoly)]] - mmatrix = fltarr(ngood,npoly+1) - for i=0, npoly do mmatrix[*,i] = basisvec[*,i] * weight - mtrans = transpose(mmatrix) - bvec = objflux[itrim] * weight - theta = invert(mtrans # mmatrix, /double) # mtrans # bvec - fitflux = theta ## basisvec - - ; The following two lines are equivalent evaluations of chi^2 - thischi2 = total( (objflux[itrim] - fitflux)^2 / sigma2) -; thischi2 = total( (mmatrix#theta - bvec)^2 ) - - return, thischi2 -end -;------------------------------------------------------------------------------ -pro fitfineconst, plate, fiber, mjd=mjd, debug=debug, doplot=doplot, $ - linewave=linewave, lineratio=lineratio1, $ - bestshift=bestshift, besterr=besterr, bestratio=bestratio, bestrchi2=bestrchi2 - - common com_fitfine, npix1, npoly, lineratio, $ - nsamp, ipix1, ipix2, itrim, sigma2, bigpixshift, llamshift, $ - loglam, objflux, objivar, $ - bigloglam, bigflux, bigivar - - if (n_elements(plate) NE 1 OR n_elements(fiber) NE 1 $ - OR n_elements(mjd) NE 1) then begin - doc_library, 'fitfineconst' - return - endif - - if (NOT keyword_set(linewave)) then linewave = [4958.911d0, 5006.843d0] - if (keyword_set(lineratio1)) then lineratio = lineratio1 $ - else lineratio = 2.0 - - plottitle = string(plate, fiber, mjd, $ - format='("Plate ",i4," Fiber ",i3," MJD ", i5)') - pixscale = 1.d-4 ; pixel scale in log10(lambda) - hwidth = 10 * pixscale ; 10 pixels half-width for fitting domain - npoly = 2 ; Number of polynomial terms for continuum-fitting - maxshift = 2.0 ; Maximum pixel shift to search - nsamp = 20 ; Sub-sampling factor for pixels - wtime = 0.05 ; Pause time in seconds between plots - - ;---------- - ; Set the wavelengths to fit -- the O_III lines at 4959,5007 - - wave1 = linewave[0] - wave2 = linewave[1] - airtovac, wave1 - airtovac, wave2 - llam1 = alog10(wave1) - llam2 = alog10(wave2) - linesep = (llam2 - llam1) - - ;---------- - ; Read the spectrum and its redshift - - readspec, plate, fiber, mjd=mjd, $ - loglam=loglam, flux=objflux, invvar=objivar, zans=zans, zline=zline - - ; If ZLINE is set, then use the redshift of the line - thisz = zans.z - if (keyword_set(zline)) then begin - ii = where(abs(zline.linewave - wave1) LT 3) - if (ii[0] NE -1) then thisz = zline[ii[0]].linez - endif - print, 'Using z=', thisz - - ; Compute the rest-frame wavelengths... - rloglam = loglam - alog10(1. + thisz) - - ;---------- - ; Oversample the object spectrum + its errors by a factor of NSAMP - - bigloglam = loglam[0] + (pixscale/nsamp) $ - * lindgen((n_elements(loglam)+1)*nsamp) - combine1fiber, loglam, objflux, objivar, $ - newloglam=bigloglam, newflux=bigflux, newivar=bigivar, maxiter=0 - - ;---------- - ; Loop over redshifts - - ; Pixel shifts from [-4,+4] pixels spaced every (1/nsamp) pixels - nshift = 2 * long(maxshift * nsamp) + 1 - bigpixshift = (lindgen(nshift)-(nshift-1)/2) - - llamshift = fltarr(nshift) - chi2vec = fltarr(nshift) - - ; Get the 1st line from the original spectrum - ipix1 = where(rloglam GE llam1 - hwidth $ - AND rloglam LT llam1 + hwidth, npix1) - ipix2 = where(rloglam GE llam2 - hwidth $ - AND rloglam LT llam2 + hwidth, npix2) - - for ishift=0, nshift-1 do begin - chi2vec[ishift] = fitfineconst1(ishift, fitflux=fitflux) - - if (keyword_set(debug)) then begin - plot, loglam[itrim], objflux[itrim], $ - xtitle='Log10(Wavelength [Ang])', ytitle='Flux', psym=-4 - djs_oplot, loglam[itrim], fitflux, color='green' - wait, wtime - endif - endfor - - ;---------- - ; Now fit for the best redshift using the chi^2 - - ; Fit around the 4 points nearest to the minima. - bestshift = find_nminima(chi2vec, llamshift, width=4*pixscale/nsamp, $ - xerr=besterr, ypeak=bestchi2, errcode=errcode, doplot=doplot, $ - xtitle='Line separation in log10(Ang)', $ - plottitle=plottitle) - if (keyword_set(debug)) then begin - print, 'Press any key...' - cc = get_kbrd(1) - endif - - ; Re-scale the errors by the chi^2 at the best fit - bestrchi2 = bestchi2 / (npix1 - 3) - besterr = besterr * sqrt(bestrchi2) - - junk = min( abs(llamshift - bestshift), ishift ) - junk = fitfineconst1(ishift, fitflux=fitflux, theta=theta) - bestratio = 1. / theta[0] - if (keyword_set(debug) OR keyword_set(doplot)) then begin - plot, loglam[itrim], objflux[itrim], $ - title=plottitle, $ - xtitle='Log10(Wavelength [Ang])', ytitle='Flux', psym=-4 - djs_oploterr, loglam[itrim], objflux[itrim], yerr=sqrt(sigma2) - djs_oplot, loglam[itrim], fitflux, color='green' - if (keyword_set(debug)) then begin - print, 'Press any key...' - cc = get_kbrd(1) - endif - endif - - print, 'BESTSHIFT = ', bestshift - print, 'BESTERR = ', besterr - print, 'BESTRATIO = ', bestratio - print, 'BESTRCHI2 = ', bestrchi2 -end -;------------------------------------------------------------------------------ diff --git a/pro/science/qso/getqso.pro b/pro/science/qso/getqso.pro deleted file mode 100644 index db1deacdf..000000000 --- a/pro/science/qso/getqso.pro +++ /dev/null @@ -1,69 +0,0 @@ - -; -; -; Read in QSO from a list of plate, mjds -; IDL> getqso, 410, 51877, zmin=0.3, zmax=2.2, imax=20.0, $ -; flux=flux, invvar=invvar, mask=mask, $ -; disp=disp, plugmap=plugmap, loglam=loglam, zans=zans, model=model -; - -pro getqso, plate, mjd, zmin=zmin, zmax=zmax, imax=imax, dangerous=dangerous, $ - flux=flux, invvar=invvar, mask=mask, mgspec=mgspec, $ - disp=disp, plugmap=plugmap, loglam=loglam, zans=zans, model=model - - - if NOT keyword_set(zmin) then zmin=0.0 - if NOT keyword_set(zmax) then zmax=10.0 - if NOT keyword_set(imax) then imax=30.0 - if NOT keyword_set(dangerous) then dangerous = 0 - - nplate = n_elements(plate) - nmjd = n_elements(mjd) - - if nmjd EQ 0 then mjd = lonarr(nplate) - nmjd = n_elements(mjd) - if nmjd NE nplate then begin - message, 'plate does not match mjd' - return - endif - - for i=0,nplate - 1 do begin - - readspec, plate[i], mjd=mjd[i], zans=zans, plug=plug, /silent - - if keyword_set(zans) then begin - good = where(strtrim(zans.class,2) EQ 'QSO' AND $ - (dangerous OR zans.zwarning EQ 0) AND $ - zans.z GT zmin AND zans.z LT zmax AND $ - plug.mag[3] LE imax ,ng) - - - if good[0] NE -1 then begin - zg = zans[good] - - if NOT keyword_set(fullplate) then fullplate=zg.plate $ - else fullplate = [fullplate, zg.plate] - - if NOT keyword_set(fullmjd) then fullmjd =zg.mjd $ - else fullmjd = [fullmjd, zg.mjd] - - if NOT keyword_set(fullfiber) then fullfiber=zg.fiberid $ - else fullfiber= [fullfiber, zg.fiberid] - endif - endif - endfor - - if NOT keyword_set(fullplate) then return - - readspec, fullplate, fullfiber, mjd=fullmjd, $ - flux=flux, invvar=invvar, andmask=mask, $ - disp=disp, plugmap=plugmap, loglam=loglam, zans=zans, /silent - - mgspec = qso_createspec(loglam, flux, invvar, plugmap, zans) - - return -end - - - - diff --git a/pro/science/qso/id_summarize.pro b/pro/science/qso/id_summarize.pro deleted file mode 100644 index 0ac7fed27..000000000 --- a/pro/science/qso/id_summarize.pro +++ /dev/null @@ -1,58 +0,0 @@ - -pro id_summarize, id_list, spec, summary=s, filename=filename - - mg1 = where(fix(id_list.restwave) EQ 2796,nin) - - if nin EQ 0 then return - - template = { index: 0L, plate: 0L, mjd : 0L, fiberid : 0L, $ - ra : 0.0d, dec : 0.0d, imag : 0.0, zqso : 0.0, zabs : 0.0, $ - ew2796: 0.0, ew2803: 0.0, ew2852: 0.0, ew2600 : 0.0, $ - ew2382 : 0.0 , rank: 0.0 } - - s = replicate(template,nin) - index = id_list[mg1].index - s.index = index - s.ra = spec[index].zans.plug_ra - s.dec = spec[index].zans.plug_dec - s.plate = spec[index].zans.plate - s.mjd = spec[index].zans.mjd - s.fiberid = spec[index].zans.fiberid - s.zqso = spec[index].zans.z -; -; Guess i' band magnitude -; - s.imag = spec[index].plug.mag[3] - 0.2 - -; -; Now fill in absorption information and print out -; - tag_wave = strmid(tag_names(template),2) - - for i=0,nin-1 do begin - - lines = where(id_list.index EQ id_list[mg1[i]].index AND $ - abs(id_list[mg1[i]].zabs - id_list.zabs) LT 0.001) - - zabs = 0.0 - weight = 0.0 - - for j=9,13 do begin - exist = where(tag_wave[j] EQ fix(id_list[lines].restwave)) - if exist[0] NE -1 then begin - s[i].(j) = id_list[lines[exist]].ew_pix - zabs = zabs + id_list[lines[exist]].zabs - weight = weight + 1.0 - endif - endfor - - s[i].zabs = zabs/weight - - endfor - - print_idsummary, s, filename=filename - -return -end - - diff --git a/pro/science/qso/look_mgii.pro b/pro/science/qso/look_mgii.pro deleted file mode 100644 index f686db963..000000000 --- a/pro/science/qso/look_mgii.pro +++ /dev/null @@ -1,135 +0,0 @@ - -function look_mgii, this_list, spec, index, pixel_sep, $ - restwave, f_value, label, acc=acc - - if NOT keyword_set(acc) then acc = 0.9 - - results = 0 - npix = n_elements(spec.loglam) - xvec = findgen(npix) - - nleft = n_elements(this_list) - work_list = this_list[sort(this_list.x)] - linterp, xvec, double(spec.loglam), work_list.x, work_wave - -; -; Locate MgII 2796/2803 lines in line list -; - mg1 = (where(fix(restwave) EQ 2796))[0] - if mg1 EQ -1 then return, 0 - - mg2 = (where(fix(restwave) EQ 2803))[0] - if mg2 EQ -1 then return, 0 - -; -; Now run through work_list and identify all MgII doublets -; Leave unidentified lines is the list -; - j = 0 - - while j LE nleft - 2 do begin - - indices_left = lindgen(nleft) - mgq = where(abs(work_list[j].x - work_list.x + pixel_sep[mg2]) $ - LT acc AND indices_left GT j, nq) - - if nq EQ 0 then j = j + 1 - if nq GT 1 then message, 'Multiple hits' - if nq EQ 1 then begin -; -; Don't blindly search for MgII above 7800 Ang. -; - good = 1 - if work_wave[mgq[0]] GT alog10(7800.0) then begin - print, 'Discarding because wavelength falls in sky lines' - good = 0 - endif - -; -; Reject odd EW ratios -; - ratio = work_list[j].y/work_list[mgq].y - if ratio GT 2.2 OR ratio LT 0.8 then begin - print, 'Discarding because EW ratio= ', ratio - good = 0 - endif - -; -; Reject zabs > zqso + 0.1 -; - if work_wave[j] GT alog10((1.1+spec.zans.z)*restwave[mg1]) then begin - print, 'Discarding because zabs > zqso + 0.1' - good=0 - endif - - - if good EQ 0 then j=j+1 $ - else begin - absstruct1 = create_absstruct(work_list[[j,mgq]], [index,index], $ - [spec.zans.z, spec.zans.z], work_wave[[j,mgq]], $ - restwave[[mg1,mg2]], f_value[[mg1,mg2]], label[[mg1,mg2]]) - print, 'found MgII ', index, [absstruct1.wave], $ - absstruct1[0].zabs, format='(a,i5, 2f10.4, f9.6)' - - if absstruct1[0].zabs GT spec.zans.z then $ - print, 'Warning zabs is larger than z_qso' - - if NOT keyword_set(results) then results = absstruct1 $ - else results = struct_append(results, absstruct1) - - now = where(indices_left NE j AND indices_left NE mgq[0],nleft) - if nleft EQ 0 then begin - work_list = 0 - work_wave = 0 - endif else begin - work_list = work_list[now] - work_wave = work_wave[now] - endelse - endelse - endif - - endwhile - - if NOT keyword_set(results) then return, 0 - -; -; Now loop through the remaining significant lines and look for match -; in the rest of line list -; - - mg1_found = where(fix(results.restwave) EQ 2796, nmgii) - -; -; Return if no MgII has been found -; - if nmgii EQ 0 then return, results - -; -; Else let's look for line with known separations from 2796.352 -; - for j=0,nleft-1 do begin - - for ii = 0, nmgii - 1 do begin - - matches = where(abs(work_list[j].x - pixel_sep - $ - results[mg1_found[ii]].pixel) LT acc, nmatch) - - if nmatch EQ 0 then continue - if nmatch GT 1 then message, 'Multiple Hits' - - matches = matches[0] - absstruct1 = create_absstruct(work_list[j], index, $ - spec.zans.z, work_wave[j], $ - restwave[matches], f_value[matches], label[matches]) - print, 'found ', absstruct1.label, index, absstruct1.wave, $ - absstruct1[0].zabs, format='(a,a, i5, f10.4, 10x, f9.6)' - - - results = struct_append(results, absstruct1) - - endfor - endfor - - - return, results -end diff --git a/pro/science/qso/mgII.lines b/pro/science/qso/mgII.lines deleted file mode 100755 index 3c3df30a9..000000000 --- a/pro/science/qso/mgII.lines +++ /dev/null @@ -1,19 +0,0 @@ -MgII 2796.352 0.6123 2.612e8 M 91 g -MgII 2803.531 0.3054 2.592e8 M 91 g -MgI 2852.964 1.810000 4.950e8 -FeII 2600.1729 0.21320 2.700e8 Cardelli/Savage 95 g (gamma in table, not Aki) -FeII 2586.650 0.06840 2.720E8 g f:ApJS 95 TLS, M91 was 0.06457 -FeII 2382.765 0.3006 3.100E8 M 91 g -FeII 2374.4612 0.03260 2.990E8 g f:ApJS 95 TLS, M91 was 0.02818 -FeII 2344.214 0.110800 2.680e8 C/S 95 g -CaII 3934.777 0.6346 1.456e8 M 91 g -CaII 3969.591 0.3145 1.414e8 M 91 g -MnII 2606.462 0.1927 2.648e8 M 91 -MnII 2594.499 0.2710 2.685e8 M 91 -MnII 2576.877 0.3508 2.741e8 M 91 -TiII 3384.740 0.3401 1.730e8 M 91 g -TiII 3242.929 0.1832 2.350e8 M 91 g -TiII 3230.131 0.05861 2.350e8 M 91 g -TiII 3073.877 0.1091 2.500e8 M 91 g -ZnII 2062.664 0.256000 3.965e8 f:ApJS 95 TLS, M91 was 0.252900 -ZnII 2026.136 0.489000 4.184e8 f:ApJS 95 TLS, M91 was 0.515000 diff --git a/pro/science/qso/mgii_pathlength.pro b/pro/science/qso/mgii_pathlength.pro deleted file mode 100644 index 52506f9af..000000000 --- a/pro/science/qso/mgii_pathlength.pro +++ /dev/null @@ -1,58 +0,0 @@ - -function mgii_pathlength, summary, mgspec, ew_limits=ew_limits, sigma=sigma, $ - binlnz=binlnz - -; -; These ew_limits are in **PIXELS**, for SDSS and MgII these -; correspond to rest EW of 0.32, 0.64, 0.97 Ang -; - if NOT keyword_set(ew_limits) then ew_limits = [0.5, 1.0, 1.5, 2.0] - number_ew = n_elements(ew_limits) - - if NOT keyword_set(sigma) then sigma=5.0 - if NOT keyword_set(binlnz) then binlnz = 0.05 - al = alog(10) - - template = { minlnz : 0.0, maxlnz : 0.0, $ - n_abs : ew_limits*0.0, pathlength : ew_limits*0.0 } - - lnrest = mgspec.loglam * al - alog(2803.531) - maxwave = max(lnrest * (mgspec.mask)) - minwave = min(lnrest + (9999.0 * (1 - mgspec.mask))) - - minlnz = fix(minwave / binlnz) * binlnz - nlnz = fix(maxwave / binlnz) - fix(minwave / binlnz) + 1 - maxlnz = minlnz + nlnz*binlnz - - results = replicate(template, nlnz) - results.minlnz = minlnz + findgen(nlnz)*binlnz - results.maxlnz = minlnz + (findgen(nlnz)+1.0)*binlnz - - summary_lnz = alog(1.0+summary.zabs) - for i=0,nlnz-1 do begin - - ; find good pixels : - pass2803 = where(lnrest GE results[i].minlnz AND $ - lnrest LT results[i].maxlnz) - if pass2803[0] EQ -1 then continue - - ewinv = (mgspec.finv)[pass2803] < (mgspec.finv)[pass2803-11] - - ewtest = sqrt(ewinv) # (ew_limits/sigma) - -; -; Sum total pathlength in each spectrum in units of ln(1.0+z) -; Each spectrum can contribute at most binlnz in pathlength -; - results[i].pathlength = total(ewtest GE 1.0, 1) * 1.0e-4 * al - - nabstest = (((summary_lnz GE results[i].minlnz) AND $ - (summary_lnz LT results[i].maxlnz)) * summary.ew2803) $ - # (1.0/ew_limits) - results[i].n_abs = total(nabstest GE 1.0, 1) - endfor - - return, results -end - - diff --git a/pro/science/qso/print_idsummary.pro b/pro/science/qso/print_idsummary.pro deleted file mode 100644 index 4df7a27c0..000000000 --- a/pro/science/qso/print_idsummary.pro +++ /dev/null @@ -1,34 +0,0 @@ - -pro print_idsummary, s, filename=filename - - nin = n_elements(s) - - - if keyword_set(filename) then begin - openw, ilun, filename, /get_lun - printf, ilun, 'INDEX Plate-MJD-FIB RA(2000) DEC iband z_qso RANK 2796 2803 2852 2600 2382' - endif else $ - print, 'INDEX Plate-MJD-FIB RA(2000) DEC iband z_qso RANK 2796 2803 2852 2600 2382' - - for i=0,nin-1 do begin - - if keyword_set(filename) then $ - printf, ilun, s[i].index , s[i].plate, s[i].mjd, s[i].fiberid, s[i].ra, $ - s[i].dec, s[i].imag, s[i].zqso, s[i].zabs, s[i].rank, $ - s[i].ew2796*1000, s[i].ew2803*1000, s[i].ew2852*1000, $ - s[i].ew2600*1000, s[i].ew2382*1000, $ - format = '(i5.5, i5.4, "-",i5,"-",i3.3, 2d11.6, f6.2, 2f8.5, f7.3, 5i5)' $ - else $ - print, s[i].index , s[i].plate, s[i].mjd, s[i].fiberid, s[i].ra, s[i].dec,$ - s[i].imag, s[i].zqso, s[i].zabs, s[i].rank, $ - s[i].ew2796*1000, s[i].ew2803*1000, $ - s[i].ew2852*1000, s[i].ew2600*1000, s[i].ew2382*1000, $ - format = '(i5.5, i5.4, "-",i5,"-",i3.3, 2d11.6, f6.2, 2f8.5, f7.3, 5i5)' - endfor - - if keyword_set(filename) then free_lun, ilun - -return -end - - diff --git a/pro/science/qso/propfrac.pro b/pro/science/qso/propfrac.pro deleted file mode 100644 index d3689a7ad..000000000 --- a/pro/science/qso/propfrac.pro +++ /dev/null @@ -1,32 +0,0 @@ - -; -; Calculate the line of sight proper distance between z1 and z2 -; with LambdaCDM (0.3,0.7) and Standard CDM cosmology (1.0,0.0) -; -pro propfrac, z1, z2, ldist=ldist, sdist=sdist - -; -; These two are proper distances good to z=10 -; - lambdaCDM = [ 0.0013107657d, 2.2809960d, -0.87851526d, -3.5277213d, $ - 6.1501481d, -4.2997680d, 1.3070295d, -0.10737073d] - - standardCDM = [ 0.0010117448d, 2.2989689d, -3.9564659d, 4.4823482d, $ - -3.6410577d, 2.0945059d, -0.76402620d, 0.13079970d] - - - lambda_dist1 = poly(alog10(1+z1), lambdaCDM) - standard_dist1 = poly(alog10(1+z1), standardCDM) - - lambda_dist2 = poly(alog10(1+z2), lambdaCDM) - standard_dist2 = poly(alog10(1+z2), standardCDM) - - x = lambda_dist1/lambda_dist2 - ldist = x * (1-x) - - x = standard_dist1/standard_dist2 - sdist = x * (1-x) - - return -end - diff --git a/pro/science/qso/qso_continuum_fit.pro b/pro/science/qso/qso_continuum_fit.pro deleted file mode 100644 index d5442e1cc..000000000 --- a/pro/science/qso/qso_continuum_fit.pro +++ /dev/null @@ -1,93 +0,0 @@ - -; -; Another Feeble attempt to fit all QSO continuum robustly, -; without prior knowledge of redshift or absorption properties -; -; -; BUGS: Large sky residuals are assumed to be emission lines with extra -; absorption. Need better masking of skylines (with bright sky?) -; - -pro qso_continuum_fit, loglam, flux, invvar, range=range, model=model, $ - mask=mask, firstpass=firstpass - - if (size(flux))[0] NE 1 then begin - print, 'just 1d arrays for now' - return - endif - - firstpass = 30 - smoothscale = 11 - weightsmooth = 25 - firstupper = 10.0 - firstlower = 2.0 - firstneighbor = fix(smoothscale / 2) - bkptdist = 10000. - - npix = (size(loglam,/dimen))[0] - - mask = invvar LE 0 - tempivar = invvar -; good = where(tempivar GT 0) -; if good[0] NE -1 then $ -; tempivar[good] = 1.0/(tempivar[good] + flux[good]^2/400.0) - maxiter = 20 - - - for iiter=1,maxiter do begin - weight = (flux > 0)^2 * tempivar + 1.0 - weight = smooth(weight^1.2, weightsmooth) - maxbkptdist = (total(weight) / 50.0) - minbkptdist = (total(weight) / 170.0) - tmpbkptdist = (bkptdist < maxbkptdist) > minbkptdist - weight = weight / tmpbkptdist - sumweight = weight - for i=1,npix-1 do sumweight[i] = sumweight[i-1] + weight[i] - - bkpt = loglam[uniq(long(sumweight))] - ;help,bkpt - - firstset = bspline_iterfit(loglam, flux, invvar=tempivar, bkpt=bkpt, $ - /groupbadpix, maxrej=1, maxiter=20, upper=8., lower=firstlower, yfit=yfit1) - - diff = (flux-yfit1) * sqrt(tempivar) - diffsmooth = smooth(diff,smoothscale) * sqrt(smoothscale) - - worst = min(diffsmooth,pl) - - diffmask = diffsmooth LT -1.0 * firstlower - smoothmask = smooth(diffmask*smoothscale, smoothscale) GT 0 - - firstmask = smoothmask AND (diffsmooth*diff GT firstlower^2) - - if total(firstmask) EQ 0 then break - mask = mask OR (firstmask GT 0) - - recoverdiff = (flux-yfit1) * sqrt(invvar) - recover = where(recoverdiff GT -0.5 * firstlower) - if recover[0] NE -1 then mask[recover] = 0 - tempivar = invvar * (mask EQ 0) - - plot, loglam, yfit1, /xs, /nodata - oplot, loglam, flux*(mask EQ 0) - oplot, loglam, yfit1, color=500 - oplot, bkpt, bkpt*0-1,ps=1 - - print, worst, pl -; -; What about edge effects (May 9, 2002)? -; - - endfor - - - -; secondpass = 20 -; secondset = bspline_iterfit(loglam, flux, invvar=tempivar, everyn=secondpass, $ -; yfit=yfit2) - - model = yfit1 - - return -end - diff --git a/pro/science/qso/qso_createspec.pro b/pro/science/qso/qso_createspec.pro deleted file mode 100644 index e7b210e4b..000000000 --- a/pro/science/qso/qso_createspec.pro +++ /dev/null @@ -1,41 +0,0 @@ - -function qso_createspec, loglam, flux, invvar, plug, zans, $ - restrange = restrange - -; -; This will include up to CaII lines?!? -; - if NOT keyword_set(restrange) then restrange=[1220.0,4000.0] - - nqso = n_elements(zans) - tt = { flux : flux[*,0], finv : invvar[*,0], loglam : float(loglam[*,0]) , $ - model : flux[*,0]*0.0, plug : plug[0], zans : zans[0], $ - cont : flux[*,0]*0.0, mask : long(flux[*,0]*0.0) } - - spec = replicate(tt,nqso) - spec.flux = 0.0 - spec.finv = 0.0 - spec.loglam = loglam - spec.plug = plug - spec.zans = zans - - for i=0, nqso - 1 do begin - - range = alog10((1+zans[i].z)*restrange) - print, zans[i].plate, zans[i].fiberid, format='(i,i)' - qso_slowcont, loglam[*,i], flux[*,i], invvar[*,i], $ - range=range[*], model=model, mask=mask - - good = where(model GT 0.0) - - if good[0] NE -1 then begin - spec[i].flux[good] = 1.0 - flux[good,i]/model[good] - spec[i].finv[good] = invvar[good,i]*model[good]^2 - spec[i].mask = mask - spec[i].cont = model - endif - endfor - -return, spec -end - diff --git a/pro/science/qso/qso_slowcont.pro b/pro/science/qso/qso_slowcont.pro deleted file mode 100644 index c6fbc3e14..000000000 --- a/pro/science/qso/qso_slowcont.pro +++ /dev/null @@ -1,57 +0,0 @@ - -pro qso_slowcont, loglam, flux, invvar, range=range, model=model, mask=mask - - if (size(flux))[0] NE 1 then begin - print, 'just 1d arrays for now' - return - endif - - good = where(invvar GT 0) - if good[0] EQ -1 then return - - spec_range=[min(loglam[good]),max(loglam[good])] - if keyword_set(range) then begin - range[0]= max([spec_range[0], range[0]]) - range[1]= min([spec_range[1], range[1]]) - endif else range=spec_range - - model = loglam * 0.0 - mask = long(model) - - inrange = where(loglam GE range[0] AND loglam LE range[1], nin) - - if inrange[0] EQ -1 then return - - maxiter = nin/5 > 10 - - modelset = bspline_iterfit(loglam[inrange], flux[inrange], $ - invvar=invvar[inrange], nord=4, yfit=yfit, $ - maxiter=maxiter, upper=10.0, lower=3.0, /silent, $ - outmask=outmask, everyn=20, maxrej=1, grow=5, /groupbadpix) - - diff = (flux[inrange] - yfit) * sqrt(invvar[inrange]) - close = where(diff LT 10.0 AND diff GT -2.0) - if close[0] NE -1 then outmask[close] = 1 - - modelset = bspline_iterfit(loglam[inrange], flux[inrange], $ - invvar=invvar[inrange]*outmask, nord=4, yfit=yfit, $ - maxiter=maxiter, upper=5.0, lower=2.0, /silent, $ - outmask=outmask, everyn=15, maxrej=1, /groupbadpix, grow=3) - - diff = (flux[inrange] - yfit) * sqrt(invvar[inrange]) - close = where(diff LT 10.0 AND diff GT -2.0) - if close[0] NE -1 then outmask[close] = 1 - - modelset = bspline_iterfit(loglam[inrange], flux[inrange], $ - invvar=invvar[inrange]*outmask, nord=4, yfit=yfit, $ - maxiter=maxiter, upper=5.0, lower=2.0, /silent, $ - outmask=outmask, everyn=15, maxrej=1, /groupbadpix, grow=1) - - if total(outmask EQ 0) LT maxiter then begin - model[inrange] = yfit - mask[inrange] = outmask NE 0 - endif - - return -end - diff --git a/pro/science/qso/qso_sortpeaks.pro b/pro/science/qso/qso_sortpeaks.pro deleted file mode 100644 index fe0fe158b..000000000 --- a/pro/science/qso/qso_sortpeaks.pro +++ /dev/null @@ -1,39 +0,0 @@ - -function qso_sortpeaks, full_list, tt, linelist=linelist - - if NOT keyword_set(linelist) then linelist = 'mgII.lines' - - readcol, linelist, linelabel, restwave, f_value, damping, $ - format='a,d,f,f' - - label = linelabel+string(format='(i4)',restwave) - logwave = alog10(restwave) - pixel_sep = logwave*1.0e4 - - mg1 = (where(fix(restwave) EQ 2796))[0] - if mg1 EQ -1 then return, 0 - - pixel_sep = pixel_sep - pixel_sep[mg1] - nsep = n_elements(pixel_sep) - - nspec = n_elements(tt) - all_mgii = 0 - - for i=0, nspec -1 do begin - - any = where(full_list.fiber EQ i, nthis) - - if nthis GE 2 then begin - - results = look_mgii(full_list[any], tt[i], i, pixel_sep, $ - restwave, f_value, label) - - if keyword_set(results) then begin - if NOT keyword_set(all_mgii) then all_mgii = results $ - else all_mgii = struct_append(all_mgii, results) - endif - endif - endfor - - return, all_mgii -end diff --git a/pro/science/qso/qsorefract.pro b/pro/science/qso/qsorefract.pro deleted file mode 100644 index 4fd782ea5..000000000 --- a/pro/science/qso/qsorefract.pro +++ /dev/null @@ -1,168 +0,0 @@ - -; Compute the refraction terms for QSOs. - -pro qsorefract, ztab=ztab, urefract=urefract, grefract=grefract, $ - ugcolor=ug, grcolor=gr, ricolor=ri, izcolor=iz - - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - plotfile = 'qso-refract.ps' - - ;---------- - ; Find the template QSO spectrum file - -; eigenfile = 'spEigenQSO-*.fits' - eigenfile = 'spEigenQSO.fits' - allfiles = findfile(djs_filepath(eigenfile, root_dir=eigendir), count=ct) - thisfile = allfiles[ (reverse(sort(allfiles)))[0] ] - splog, 'Selecting EIGENFILE=' + thisfile - - ;---------- - ; Read the QSO template spectrum - - qsoflux = readfits(thisfile, qhdr) - qsoflux = smooth(qsoflux[*,0],25) ; Just take the mean spectrum (smoothed) - naxis1 = sxpar(qhdr, 'NAXIS1') - loglam0 = sxpar(qhdr, 'COEFF0') - dloglam0 = sxpar(qhdr, 'COEFF1') - qsowave = 10.d0^(loglam0 + lindgen(naxis1) * dloglam0) - - ;---------- - ; Find the template stellar spectrum file - - eigenfile = 'spEigenStar-*.fits' - allfiles = findfile(djs_filepath(eigenfile, root_dir=eigendir), count=ct) - thisfile = allfiles[ (reverse(sort(allfiles)))[0] ] - splog, 'Selecting EIGENFILE=' + thisfile - - ;---------- - ; Read the stellar template spectrum - -; starflux = readfits(thisfile, shdr) -; naxis1 = sxpar(shdr, 'NAXIS1') -; loglam0 = sxpar(shdr, 'COEFF0') -; dloglam0 = sxpar(shdr, 'COEFF1') -; starwave = 10.d0^(loglam0 + lindgen(naxis1) * dloglam0) -; starname = sxpar(shdr,'NAME0') -; sxdelpar, shdr, 'NAME0' -; starname = [starname, sxpar(shdr,'NAME*')] -; nstar = n_elements(starname) - - ;---------- - ; Tabulate the index of refraction of air - ; from Meggers & Peters 1919, ApJ 50, 56. - - rwave = 2000. + findgen(33) * 250. - rval = [3255.82,3107.87,3014.05,2951.08,2906.85,2874.63,2850.43, $ - 2831.79,2817.12,2805.36,2795.78,2787.88,2781.27,2775.69,2770.94, $ - 2766.85,2763.31,2760.22,2757.51,2755.11,2752.99,2751.10,2749.40, $ - 2747.88,2746.50,2745.25,2744.12,2743.09,2742.14,2741.28,2740.48, $ - 2739.75,2739.07] * 1.0d-7 - - ;---------- - ; Measure refraction terms for QSOs - - ztab = 0.0 + 0.05 * findgen(80) - nz = n_elements(ztab) - rtabqso = fltarr(nz,5) - qsomag = fltarr(nz,5) - - for iz=0, nz-1 do begin - ; Redshift the QSO spectrum - tmpwave = qsowave * (1.0 + ztab[iz]) - tmpflux = qsoflux - - ; Apply Burles' Lyman forest opacity estimation - bluewardlya = (qsowave LT 1215.67) - bluewardlymanlimit = (920.0 - qsowave) > 0 - z_temp = 2.5 - zratio = (1 + ztab[iz]) / (1 + z_temp) - lyacorrection = 0.10 * (zratio^3.0 - 1.0) * bluewardlya $ - + 0.02 * (zratio^2.0 - 1.0) * bluewardlymanlimit - tmpflux = tmpflux * exp(-lyacorrection) - - ; Interpolate the index of refraction curve - tmprval = interpol(rval, rwave, tmpwave) - - ; Integrate over the SDSS filters -- counts photons, not energy - flambda2fnu = tmpwave^2 / 2.99792e18 - num1 = filter_thru(tmpflux * tmprval * flambda2fnu, $ - waveimg=tmpwave, /toair) - num2 = filter_thru(tmpflux * flambda2fnu, $ - waveimg=tmpwave, /toair) - rtabqso[iz,*] = num1 / num2 - qsomag[iz,*] = num2 - endfor - - ;---------- - ; Measure refraction terms for stars - -; rtabstar = fltarr(nstar,5) -; tmprval = interpol(rval, rwave, starwave) -; for istar=0, nstar-1 do begin -; num1 = filter_thru(starflux[*,istar] * tmprval, waveimg=starwave, /toair) -; num2 = filter_thru(starflux[*,istar], waveimg=starwave, /toair) -; rtabstar[istar,*] = num1 / num2 -; endfor - - ;---------- - ; Now make the dtheta-dtheta plot - - csize = 1.6 - scale = !radeg * 3600. ; Re-scale plots to arcsec at 45 deg from zenith - - if (keyword_set(plotfile)) then dfpsplot, plotfile, /square - - ; Compare against ave. r+i position - rnorm = 0.5 * (rtabqso[*,2] + rtabqso[*,3]) - xqso = (rtabqso[*,0] - rnorm) * scale - yqso = (rtabqso[*,1] - rnorm) * scale - djs_plot, xqso, yqso, psym=-4, charsize=csize, /ynozero, $ - title='QSO Refraction-Refraction Plot', $ - xtitle='u-band refraction [arcsec]', ytitle='g-band refraction [arcsec]' - for j=0, nz-1, 10 do $ - xyouts, xqso[j], yqso[j], 'z='+string(ztab[j],format='(f3.1)'), $ - charsize=csize - -; ii = [37,35,0,2,8,9,11,13,14,16,27,31,34] -; rnorm = 0.5 * (rtabstar[*,2] + rtabstar[*,3]) -; xstar = (rtabstar[*,0] - rnorm) * scale -; ystar = (rtabstar[*,1] - rnorm) * scale -; for i=0, n_elements(ii)-1 do $ -; djs_xyouts, xstar[ii[i]], ystar[ii[i]], strtrim(starname[ii[i]],2) - - ug = -2.5 * alog10(qsomag[*,0] / qsomag[*,1]) - gr = -2.5 * alog10(qsomag[*,1] / qsomag[*,2]) - ri = -2.5 * alog10(qsomag[*,2] / qsomag[*,3]) - iz = -2.5 * alog10(qsomag[*,3] / qsomag[*,4]) - - djs_plot, ug, gr, psym=-4, charsize=csize, /ynozero, $ - title='QSO Color-Color Plot', $ - xtitle='(u-g) [mag]', ytitle='(g-r) [mag]' - for j=0, nz-1, 10 do $ - xyouts, ug[j], gr[j], 'z='+string(ztab[j],format='(f3.1)'), $ - charsize=csize - - djs_plot, ug, xqso, psym=-4, charsize=csize, /ynozero, $ - title='QSO Color-Refraction Plot', $ - xtitle='(u-g) [mag]', ytitle='u-band refraction [arcsec]' - for j=0, nz-1, 10 do $ - xyouts, ug[j], xqso[j], 'z='+string(ztab[j],format='(f3.1)'), $ - charsize=csize - - !p.multi = [0,1,4] - djs_plot, ztab, ug, /ynozero, psym=-4, $ - xtitle='Redshift', ytitle='(u-g)', charsize=csize - djs_plot, ztab, gr, /ynozero, psym=-4, $ - xtitle='Redshift', ytitle='(g-r)', charsize=csize - djs_plot, ztab, xqso, /ynozero, psym=-4, $ - xtitle='Redshift', ytitle='Refract(u) [asec]', charsize=csize - djs_plot, ztab, yqso, /ynozero, psym=-4, $ - xtitle='Redshift', ytitle='Refract(g) [asec]', charsize=csize - !p.multi = 0 - - if (keyword_set(plotfile)) then dfpsclose - - urefract = xqso - grefract = yqso -end - diff --git a/pro/science/qso/qsorplot.pro b/pro/science/qso/qsorplot.pro deleted file mode 100644 index 2636e34ec..000000000 --- a/pro/science/qso/qsorplot.pro +++ /dev/null @@ -1,136 +0,0 @@ -; Make refraction-color plots for QSOs with real data. -pro qsorplot - - columns = ['Z','ZWARNING','CLASS','PRIMTARGET','PLUG_RA','PLUG_DEC', $ - 'OFFSETRA','OFFSETDEC','MODELFLUX','MODELFLUX_IVAR', $ - 'SPECTROSYNFLUX','SPECTROSYNFLUX_IVAR'] - spall = hogg_mrdfits(filepath('spAll.fits', $ - root_dir=getenv('BOSS_SPECTRO_REDUX')), 1, columns=columns, nchunk=20) - indx = where(strmatch(spall.class,'QSO*') $ - AND spall.zwarning EQ 0 $ - AND (spall.primtarget AND 2L^0 + 2L^1 + 2L^2 +2L^3 + 2L^4) NE 0 $ - AND spall.plug_dec GT -7.5 AND spall.plug_dec LT 7.5) - spall = spall[indx] - - qsorefract, ztab=ztab, urefract=urefracttab, grefract=grefracttab, $ - ugcolor=ugcolortab, grcolor=grcolortab, ricolor=ricolortab, $ - izcolor=izcolortab - ; Normalize refraction to 30 deg from zenith, e.g. on the equator - urefracttab = tan(30./!radeg) * urefracttab - grefracttab = tan(30./!radeg) * grefracttab - - modelmag = 22.5 - 2.5*alog10(spall.modelflux>0.1) - ugcolor = modelmag[0,*] - modelmag[1,*] - grcolor = modelmag[1,*] - modelmag[2,*] - ricolor = modelmag[2,*] - modelmag[3,*] - izcolor = modelmag[3,*] - modelmag[4,*] - - synthmag = 22.5 - 2.5*alog10(spall.spectrosynflux>0.1) - grspectro = synthmag[1,*] - synthmag[2,*] - rispectro = synthmag[2,*] - synthmag[3,*] - gispectro = synthmag[1,*] - synthmag[3,*] - - rref = 0.5 * (spall.offsetdec[2] + spall.offsetdec[3]) - urefract = spall.offsetdec[0] - rref - grefract = spall.offsetdec[1] - rref - - dz = 0.1 - nbin = 50 - zlo = 0.0 + findgen(nbin) * dz - zhi = zlo + dz - zmid = 0.5 * (zlo + zhi) - csize = 2.0 - - dfpsplot, 'qsorplot.ps', /color, /square - - urefract_hist = fltarr(nbin) - for ibin=0, nbin-1 do $ - urefract_hist[ibin] = median(urefract[where(spall.z GE zlo[ibin] $ - AND spall.z LT zhi[ibin])]) - djs_plot, spall.z, urefract, ps=3, xrange=[0,4], yrange=[-0.3,0.3], $ - xtitle='Redshift', ytitle='Refract-u', charsize=csize - djs_oplot, zmid, urefract_hist, psym=-4, color='red' - djs_oplot, ztab, urefracttab-1.1, color='cyan' - -fitval = interpol(urefracttab,ztab,spall.z) -ii=where(spall.z lt 3) -print,djsig(urefract[ii]) -print,djsig((urefract-fitval)[ii]) - - grefract_hist = fltarr(nbin) - for ibin=0, nbin-1 do $ - grefract_hist[ibin] = median(grefract[where(spall.z GE zlo[ibin] $ - AND spall.z LT zhi[ibin])]) - djs_plot, spall.z, grefract, ps=3, xrange=[0,4], yrange=[-0.3,0.3], $ - xtitle='Redshift', ytitle='Refract-g', charsize=csize - djs_oplot, zmid, grefract_hist, psym=-4, color='red' - djs_oplot, ztab, grefracttab-0.42, color='cyan' - - ugcolor_hist = fltarr(nbin) - for ibin=0, nbin-1 do $ - ugcolor_hist[ibin] = median(ugcolor[where(spall.z GE zlo[ibin] $ - AND spall.z LT zhi[ibin])]) - djs_plot, spall.z, ugcolor, ps=3, xrange=[0,4], yrange=[-0.5,1.5], $ - xtitle='Redshift', ytitle='(u-g)', charsize=csize - djs_oplot, zmid, ugcolor_hist, psym=-4, color='red' - djs_oplot, ztab, ugcolortab+0.0, color='cyan' -djs_oplot, ztab, ugcolortab+0.15*(2.-ztab), color='green' - - grcolor_hist = fltarr(nbin) - for ibin=0, nbin-1 do $ - grcolor_hist[ibin] = median(grcolor[where(spall.z GE zlo[ibin] $ - AND spall.z LT zhi[ibin])]) - djs_plot, spall.z, grcolor, ps=3, xrange=[0,4], yrange=[-0.5,1.5], $ - xtitle='Redshift', ytitle='(g-r)', charsize=csize - djs_oplot, zmid, grcolor_hist, psym=-4, color='red' - djs_oplot, ztab, grcolortab+0.0, color='cyan' - - ricolor_hist = fltarr(nbin) - for ibin=0, nbin-1 do $ - ricolor_hist[ibin] = median(ricolor[where(spall.z GE zlo[ibin] $ - AND spall.z LT zhi[ibin])]) - djs_plot, spall.z, ricolor, ps=3, xrange=[0,4], yrange=[-0.5,1.5], $ - xtitle='Redshift', ytitle='(r-i)', charsize=csize - djs_oplot, zmid, ricolor_hist, psym=-4, color='red' - djs_oplot, ztab, ricolortab+0.0, color='cyan' - - izcolor_hist = fltarr(nbin) - for ibin=0, nbin-1 do $ - izcolor_hist[ibin] = median(izcolor[where(spall.z GE zlo[ibin] $ - AND spall.z LT zhi[ibin])]) - djs_plot, spall.z, izcolor, ps=3, xrange=[0,4], yrange=[-0.5,1.5], $ - xtitle='Redshift', ytitle='(i-z)', charsize=csize - djs_oplot, zmid, izcolor_hist, psym=-4, color='red' - djs_oplot, ztab, izcolortab+0.20, color='cyan' - - grdiff = grspectro - grcolor - grsphist = fltarr(nbin) - for ibin=0, nbin-1 do $ - grsphist[ibin] = median(grdiff[where(spall.z GE zlo[ibin] $ - AND spall.z LT zhi[ibin])]) - djs_plot, spall.z, grdiff, psym=3, xrange=[0,5], yrange=[-1,1], charsize=csize - djs_oplot, zmid, grsphist, psym=-4, color='red' - djs_oplot, !x.crange, [0,0], color='cyan' - - ridiff = rispectro - ricolor - risphist = fltarr(nbin) - for ibin=0, nbin-1 do $ - risphist[ibin] = median(ridiff[where(spall.z GE zlo[ibin] $ - AND spall.z LT zhi[ibin])]) - djs_plot, spall.z, ridiff, psym=3, xrange=[0,5], yrange=[-1,1], charsize=csize - djs_oplot, zmid, risphist, psym=-4, color='red' - djs_oplot, !x.crange, [0,0], color='cyan' - - gidiff = gispectro - (grcolor + ricolor) - gisphist = fltarr(nbin) - for ibin=0, nbin-1 do $ - gisphist[ibin] = median(gidiff[where(spall.z GE zlo[ibin] $ - AND spall.z LT zhi[ibin])]) - djs_plot, spall.z, gidiff, psym=3, xrange=[0,5], yrange=[-1,1], charsize=csize - djs_oplot, zmid, gisphist, psym=-4, color='red' - djs_oplot, !x.crange, [0,0], color='cyan' - - dfpsclose -stop - -end diff --git a/pro/science/qso/quickplot.pro b/pro/science/qso/quickplot.pro deleted file mode 100644 index 931ecb0c9..000000000 --- a/pro/science/qso/quickplot.pro +++ /dev/null @@ -1,28 +0,0 @@ -pro quickplot, tt, index, list, z=z - - if NOT keyword_set(z) then pz = 1.0 else pz = 1.0 + z - - flux = (1.0 - tt[index].flux)*tt[index].cont - - splot, 10^tt[index].loglam/pz, flux, ps=10 - soplot, 10^tt[index].loglam/pz, tt[index].cont, color='blue', thick=3 - - bad = where(tt[index].mask EQ 0) - if bad[0] NE -1 then $ - soplot, 10^tt[index].loglam[bad]/pz, flux[bad], color='red', ps=4 - - if size(list,/tname) NE 'STRUCT' then return - lines = where(list.index EQ index) - - if lines[0] NE -1 then begin - - pix = long(list[lines].pixel) - soplot, list[lines].wave/pz, tt[index].cont[pix]*1.1+1.0, ps=1, $ - symsize=3.0, color='green' - sxyouts, list[lines].wave/pz, tt[index].cont[pix]*1.1+1.0, $ - list[lines].label, orient=90., charsize=1.8 - - endif - return -end - diff --git a/pro/science/sdss_spec_block.pro b/pro/science/sdss_spec_block.pro deleted file mode 100644 index 4a3d9bb88..000000000 --- a/pro/science/sdss_spec_block.pro +++ /dev/null @@ -1,138 +0,0 @@ -;+ -; NAME: -; sdss_spec_block -; PURPOSE: -; take a set of sdss spectra and output as a big block -; CALLING SEQUENCE: -; sdss_spec_block -; INPUTS: -; plate - [N] list of plates -; fiberid - [N] list of fibers -; mjd - [N] list of mjds -; OPTIONAL INPUTS: -; avloglam - [nl] wavelength grid -; vdisp - try to get everything to this velocity dispersion (in km/s) -; OPTIONAL KEYWORDS: -; deextinct - apply corrections for galactic extinction -; OUTPUTS: -; block_flux - [nl, N] list of fluxes (as output by readspec) -; block_ivar - [nl, N] list of inverse variances -; block_lamba - [nl] output wavelengths (angstroms) -; DEPENDENCIES: -; idlutils -; idlspec2d -; BUGS: -; Input and output wavelength grids MUST be logarithmically spaced. -; ivar is unchanged when vdisp is used -; revision history wrong -; COMMENTS: -; Units are in 10^{-17} ergs/cm^2/s/A -; Bolometric flux is kept constant in deredshifting step -; (ie. lambda -> lambda/(1+z), flux -> flux*(1+z), ivar -> -; ivar/(1+z)^2) -; REVISION HISTORY: -; 2001-11-17 written - Hogg (NYU) -;- -pro sdss_spec_block, plate, fiberid, mjd, block_flux=out_block_flux, $ - block_ivar=out_block_ivar, $ - block_lambda=out_block_lambda, $ - avloglam=avloglam, deextinct=deextinct, vdisp=vdisp, $ - minerror=minerror - -masksky=1 - -; set defaults -nspec= n_elements(plate) -if(n_elements(avloglam) eq 0) then $ - avloglam=double(alog10(3500.)+(alog10(9500.)-alog10(3500.))* $ - (dindgen(4000)+0.5)/4000.) -nlam= n_elements(avloglam) -if(n_elements(avlum) eq 0) then avlum=dblarr(nlam) -startavlum= avlum - -; group by plate and get all spectra -platelist=plate[uniq(plate,sort(plate))] -avlum= 0d -for iplate=0L, n_elements(platelist)-1L do begin - splog,'iplate= '+string(iplate) - - plate_indx=where(plate eq platelist[iplate],plate_count) - readspec, plate[plate_indx],fiberid[plate_indx],mjd=mjd[plate_indx], $ - flux=flux,flerr=flerr,invvar=invvar,andmask=andmask,ormask=ormask, $ - loglam=loglam, zans=zans - flux= double(flux) - invvar= double(invvar) - for i=0L,plate_count-1 do begin - splog,'i= '+string(i) - -; read spectrum and inverse variance - if keyword_set(masksky) then $ - invvar[*,i]= skymask(invvar[*,i], andmask[*,i], ormask[*,i]) - -; shift wavelength scale to rest-frame - restloglam= loglam[*,i]-alog10(1.d + zans[i].z) - -; de-extinct if desired - if(keyword_set(deextinct)) then begin - wave=10.^(loglam[*,i]) - alam=ext_ccm(wave) - glactc, zans[i].plug_ra, zans[i].plug_dec, 2000., gl, gb, 1, /deg - ebv=dust_getval(gl, gb) - extvoebv=3.1 - ext=ebv*alam*extvoebv - flux[*,i]=flux[*,i]*10.^(0.4*ext) - endif - -; slam onto new grid (MUST BE LOGARITHMIC SPACING) - lum=fltarr(n_elements(restloglam)) - combine1fiber, restloglam,flux[*,i]*(1.+zans[i].z), $ - invvar[*,i]/(1.+zans[i].z)^2, newloglam=avloglam, newflux=tmp1, $ - newivar=tmp2, maxiter=0 - lum= double(tmp1) - lum_ivar= double(tmp2) - -; smooth if desired - if(keyword_set(vdisp)) then begin - adddisp2=vdisp^2-zans[i].vdisp^2 - if(adddisp2 gt 0.) then begin -;; sigma=sqrt(adddisp2)/(2.99792e+5*alog(10.)) - lum=k_smooth(avloglam,lum,sqrt(adddisp2)) - lum_ivar_new=k_smooth(avloglam,lum_ivar,sqrt(adddisp2)) - iz=where(lum_ivar eq 0, nz) - if(nz gt 0) then $ - lum_ivar_new[iz]=0. - lum_ivar=lum_ivar_new - endif - endif - -;; apply minimum errors - if(keyword_set(minerror)) then begin - inz=where(lum_ivar gt 0., nnz) - if(nnz gt 0) then begin - fracerr=1./(sqrt(lum_ivar[inz])*lum[inz]) - fracerr=sqrt(fracerr^2+minerror^2) - lum_ivar[inz]=1./(fracerr*lum[inz])^2 - endif - endif - -; increment vectors - nl=n_elements(lum) - if(n_elements(block_flux) ne nl*nspec OR $ - n_elements(block_ivar) ne nl*nspec OR $ - n_elements(block_lambda) ne nl) then begin - block_flux=fltarr(nl,nspec) - block_ivar=fltarr(nl,nspec) - block_lambda=fltarr(nl) - endif - block_flux[*,plate_indx[i]]=lum - block_ivar[*,plate_indx[i]]=lum_ivar - block_lambda[*]=10.^(avloglam) - endfor -endfor - -out_block_flux=block_flux -out_block_ivar=block_ivar -out_block_lambda=block_lambda - -return -end diff --git a/pro/science/spec_param_str.pro b/pro/science/spec_param_str.pro deleted file mode 100644 index 71d615634..000000000 --- a/pro/science/spec_param_str.pro +++ /dev/null @@ -1,241 +0,0 @@ -;+ -; NAME: -; spec_param_str -; PURPOSE: -; Build structure SPEC_PARAM for parameters derived from analysis of -; galaxy spectra. -; CALLING SEQUENCE: -; str= spec_param_str(N) -; INPUTS: -; tsObjfile - tsObj file name -; ver1Ddir - 1D directory name (including version number) -; OPTIONAL INPUTS: -; KEYWORDS -; OUTPUTS: -; str - array of structures of type "SPEC_PARAM" with N elements -; COMMENTS: -; BUGS: -; heliocentric correction will have to be removed when the 2D bug is fixed -; REVISION HISTORY: -; 2000-Sep-07 written by Mariangela Bernardi -;- -;------------------------------------------------------------------------------ -function spec_param_str, tsObjfile, ver1Ddir, list = list - - if (keyword_set(list)) then begin - inputlist = tsObjfile - readcol, inputlist, tsObjfile, format='(a)' - endif - - nfiles=n_elements(tsObjfile) - - for j=0,nfiles-1 do begin - - photo = mrdfits(tsObjfile[j],1) - - nchar=strlen(tsObjfile[j]) - 19 - splate =strmid(tsObjfile[j], nchar+12, 3) - smjd = strmid(tsObjfile[j], nchar+6, 5) - plate= long(splate) - mjd = long(smjd) - - ngals=640 - ntemp= 32 - - tempearly = {SPEC_PARAM, vers_spec: ' ', $ - plate: 0L, mjd: 0L, fiberid: 0L, $ - run:0L, rerun: 0L, camcol: 0L, field: 0L, id: 0L, $ - parent: 0L, $ - specobjid: lonarr(5), $ - ra: 0.0, dec: 0.0, $ - l: 0.0, b: 0.0, $ - objc_rowc: 0.0, objc_colc: 0.0, $ - psfcounts: fltarr(5), psfcountserr: fltarr(5), $ - fracpsf: fltarr(5), $ - fibercounts: fltarr(5), fibercountserr: fltarr(5), $ - petrocounts: fltarr(5), petrocountserr: fltarr(5), $ - petrorad: fltarr(5), petroraderr: fltarr(5), $ - petror50: fltarr(5), petror50err: fltarr(5), $ - petror90: fltarr(5), petror90err: fltarr(5), $ - counts_model: fltarr(5), counts_modelerr: fltarr(5), $ - counts_dev: fltarr(5), counts_deverr: fltarr(5), $ - counts_exp: fltarr(5), counts_experr: fltarr(5), $ - dev_l: fltarr(5), exp_l: fltarr(5), $ - r_dev: fltarr(5), r_deverr: fltarr(5), $ - r_exp: fltarr(5), r_experr: fltarr(5), $ - ab_dev: fltarr(5), ab_deverr: fltarr(5), $ - ab_exp: fltarr(5), ab_experr: fltarr(5), $ - reddening: fltarr(5), $ - primtarget:0L, sectarget:0L, $ - flags: lonarr(5), flags2: lonarr(5), $ - firstint: 0.0, $ - type: ' ', $ - primtar: 0L, sectar: 0L, $ - z_1Dclass: 0L, z_1Dstatus: 0L, $ - z_1Dwarning: 0L, $ - z_1D: 0.0, z_1Derr: 0.0, z_1Dconf: 0.0, $ - sn_g: 0.0, sn_r: 0.0, sn_i: 0.0, $ - z: fltarr(ntemp), z_err: fltarr(ntemp), zconf: fltarr(ntemp), $ - sigma_cc: intarr(ntemp), sigma_ccerr: intarr(ntemp), $ - sigma_diff: intarr(ntemp), sigma_differr: intarr(ntemp), $ - sigma_quotient: intarr(ntemp), sigma_quotienterr: intarr(ntemp), $ - sigma_quot_diff: intarr(ntemp), sigma_quot_differr: intarr(ntemp), $ - sigma_pc: intarr(ntemp), sigma_pcerr: intarr(ntemp), $ - lickindex: fltarr(21), lickindexerr: fltarr(21) } - - - sample = replicate(tempearly, ngals) - - id=lonarr(3) - teta=fltarr(640) - - for i=0,ngals-1 do begin - - ii=i+1 - ff = string('/usr/sdss/data05/spectro/'+ver1Ddir+'/'+string(plate,$ - format='(i4.4)')+$ - '/1d/spSpec-'+string(mjd,format='(i5.5)')+'-'$ - +string(plate,format='(i4.4)')+'-'$ - +string(ii,format='(i3.3)')+'.fit') - - spec = mrdfits(ff,0,hdr) - - if ((size(spec))[2] GT 1) then begin - - type=sxpar(hdr,'OBJTYPE') - id[0]= sxpar(hdr,'PLATEID') - id[1]= sxpar(hdr,'MJD') - id[2]= sxpar(hdr,'FIBERID') - sobjid= sxpar(hdr,'OBJID') - sobjid=str_sep(sobjid,' ') - nobjid=n_elements(sobjid)-1 - objid=long(sobjid[1:nobjid]) - ra=sxpar(hdr,'RAOBJ') - dec=sxpar(hdr,'DECOBJ') - primtar= sxpar(hdr,'PRIMTARG') - sectar= sxpar(hdr,'SECTARG') - zclass=sxpar(hdr,'SPEC_CLN') - z=sxpar(hdr,'Z') - zerr= sxpar(hdr,'Z_ERR') - zconf= sxpar(hdr,'Z_CONF') - zstat= sxpar(hdr,'Z_STATUS') - zwarn= sxpar(hdr,'Z_WARNIN') - sng=sxpar(hdr,'SN_G') - snr=sxpar(hdr,'SN_R') - sni= sxpar(hdr,'SN_I') - helio2= sxpar(hdr,'V_RAD') - helio1= sxpar(hdr,'EARTH_RV') - - rar=double(ra * !PI/180.0) - decr=double(dec * !PI/180.0) - - for kk=0,ngals-1 do begin - raphoto=double(photo[kk].ra * !PI/180.0) - decphoto=double(photo[kk].dec * !PI/180.0) - teta[kk]=acos(sin(decr)*sin(decphoto)+cos(decr)*cos(decphoto)*$ - cos(rar-raphoto))*180/!PI*60*60. - endfor - - good=where(teta LE 1) - - if (good[0,0] EQ -1) then begin - print,'warning: no objects identified' - endif else begin - - if (n_elements(good) GT 1) then begin - print,'warning: two objects identified; choosing closest' - junk=min(teta[good],best) - good=good[best] - endif - -;;;;; WARNING: hel. redshift correction - - c=299792 - z=z+(helio1-2*helio2)/c - - sample[i].vers_spec = ver1Ddir - sample[i].plate=id[0] - sample[i].mjd=id[1] - sample[i].fiberid=id[2] - sample[i].run = photo[good].run - sample[i].rerun = photo[good].rerun - sample[i].camcol = photo[good].camcol - sample[i].field = photo[good].field - sample[i].id = photo[good].id - sample[i].parent = photo[good].parent - sample[i].specobjid= objid[*] - sample[i].ra=ra - sample[i].dec=dec - sample[i].l= photo[good].l - sample[i].b=photo[good].b - sample[i].objc_rowc = photo[good].objc_rowc - sample[i].objc_colc = photo[good].objc_colc - sample[i].psfcounts = photo[good].psfcounts - sample[i].psfcountserr = photo[good].psfcountserr - sample[i].fracpsf=photo[good].fracpsf - sample[i].fibercounts = photo[good].fibercounts - sample[i].fibercountserr = photo[good].fibercountserr - sample[i].petrocounts = photo[good].petrocounts - sample[i].petrocountserr = photo[good].petrocountserr - sample[i].petrorad = photo[good].petrorad - sample[i].petroraderr = photo[good].petroraderr - sample[i].petror50 = photo[good].petror50 - sample[i].petror50err = photo[good].petror50err - sample[i].petror90 = photo[good].petror90 - sample[i].petror90err = photo[good].petror90err - sample[i].counts_model = photo[good].counts_model - sample[i].counts_modelerr = photo[good].counts_modelerr - sample[i].counts_dev = photo[good].counts_dev - sample[i].counts_deverr = photo[good].counts_deverr - sample[i].counts_exp = photo[good].counts_exp - sample[i].counts_experr = photo[good].counts_experr - sample[i].dev_l = photo[good].dev_l - sample[i].exp_l = photo[good].exp_l - sample[i].r_dev = photo[good].r_dev - sample[i].r_deverr = photo[good].r_deverr - sample[i].r_dev = photo[good].r_exp - sample[i].r_deverr = photo[good].r_experr - sample[i].ab_dev = photo[good].ab_dev - sample[i].ab_deverr = photo[good].ab_deverr - sample[i].ab_exp = photo[good].ab_exp - sample[i].ab_experr = photo[good].ab_experr - sample[i].reddening = photo[good].reddening - sample[i].primtarget = photo[good].primtarget - sample[i].sectarget = photo[good].sectarget - sample[i].flags = photo[good].flags - sample[i].flags2 = photo[good].flags2 - sample[i].firstint = photo[good].firstint - sample[i].type=type - sample[i].primtar= primtar - sample[i].sectar= sectar - sample[i].z_1Dclass=zclass - sample[i].z_1Dstatus=zstat - sample[i].z_1Dwarning=zwarn - sample[i].z_1D=z - sample[i].z_1Derr=zerr - sample[i].z_1Dconf=zconf - sample[i].sn_g=sng - sample[i].sn_r=snr - sample[i].sn_i=sni - - endelse - - endif - - endfor - - namesample=string('spec_param_'+string(mjd,format='(i5.5)')+'_' $ - +string(plate, format='(i4.4)')+'.fit') - mwrfits, sample, namesample, /create - - if (size(fullsample,/tname) EQ 'STRUCT') then begin - fullsample = [fullsample, sample] - endif else begin - fullsample = sample - endelse - - endfor - -return, fullsample - -end diff --git a/pro/science/spectra_sample.pro b/pro/science/spectra_sample.pro deleted file mode 100644 index 3a44b2547..000000000 --- a/pro/science/spectra_sample.pro +++ /dev/null @@ -1,57 +0,0 @@ -function spectra_sample, samples, ver1Ddir, list = list - - if (keyword_set(list)) then begin - inputlist = samples - readcol, inputlist, samples, format='(a)' - endif - - nfiles=n_elements(samples) - - for j=0,nfiles-1 do begin - - sample=mrdfits(samples[j],1) - - good=where(sample.plate NE 0) - ngals=n_elements(good) - plate=sample[good[0]].plate - mjd=sample[good[0]].mjd - - i=10 - ff = string('/usr/sdss/data05/spectro/'+ver1Ddir+'/' $ - +string(plate,format='(i4.4)')+$ - '/1d/spSpec-'+string(mjd,format='(i5.5)')+'-'$ - +string(plate,format='(i4.4)')+'-'$ - +string(sample[good[i]].fiberid,format='(i3.3)')+'.fit') - spec = mrdfits(ff,0,hdr) - npix= (size(spec[*,0]))[1] - galspec=fltarr(npix,4,640) - npix1=npix - 1 - - for i=0,ngals-1 do begin - - ff = string('/usr/sdss/data05/spectro/'+ver1Ddir+'/' $ - +string(plate,format='(i4.4)')+$ - '/1d/spSpec-'+string(mjd,format='(i5.5)')+'-'$ - +string(plate,format='(i4.4)')+'-'$ - +string(sample[good[i]].fiberid,format='(i3.3)')+'.fit') - - spec = mrdfits(ff,0,hdr) - - galspec[0:npix1,0,good[i]]=spec[0:npix1,0] - galspec[0:npix1,1,good[i]]=spec[0:npix1,2] - zp=sxpar(hdr,'CRVAL1') - galspec[0:npix1,2,good[i]]=zp+findgen(npix)*0.0001 - galspec[0:npix1,3,good[i]]=spec[0:npix1,3] - - print,i,good[i] - endfor - - namesample=string('spectra_'+string(mjd,format='(i5.5)')+'_' $ - +string(plate, format='(i4.4)')+'.fit') - mwrfits, galspec, namesample, /create - - endfor - -return, galspec - -end \ No newline at end of file diff --git a/pro/apo2d/quickbias.pro b/pro/sos/quickbias.pro similarity index 100% rename from pro/apo2d/quickbias.pro rename to pro/sos/quickbias.pro diff --git a/pro/apo2d/quickboxcar.pro b/pro/sos/quickboxcar.pro similarity index 100% rename from pro/apo2d/quickboxcar.pro rename to pro/sos/quickboxcar.pro diff --git a/pro/apo2d/quickextract.pro b/pro/sos/quickextract.pro similarity index 85% rename from pro/apo2d/quickextract.pro rename to pro/sos/quickextract.pro index 08c213492..f2483fde5 100644 --- a/pro/apo2d/quickextract.pro +++ b/pro/sos/quickextract.pro @@ -35,7 +35,7 @@ ; BUGS: ; ; PROCEDURES CALLED: -; apo_checklimits() +; sos_checklimits() ; calcscatimage ; divideflat ; djs_mean() @@ -61,9 +61,9 @@ ; 3-Apr-2000 Written by S. Burles & D. Schlegel, APO ;- 6-Dec-2014 Included 'splitsky' by Vivek M. ;------------------------------------------------------------------------------ -Function quickextract, tsetfile, wsetfile, fflatfile, rawfile, outsci, fullplugfile, outdir, $ +Function quickextract, tsetfile, wsetfile, fflatfile, rawfile, outsci, fullplugfile, outdir, mjd, $ radius=radius, filtsz=filtsz, splitsky=splitsky, do_lock=do_lock, threshold=threshold,$ - sdssv_sn2=sdssv_sn2 + sdssv_sn2=sdssv_sn2, sn2_15=sn2_15, arc2trace=arc2trace, forcea2t=forcea2t print,'quickextract:',splitsky if (n_params() LT 4) then begin print, 'Syntax - rstruct = quickextract(tsetfile, wsetfile, fflatfile, $' @@ -86,7 +86,7 @@ print,'quickextract:',splitsky spectroid = strmid(camname,1,1) exptime = sxpar(hdr, 'EXPTIME') confid = strtrim(sxpar(hdr, 'CONFID'),2) - + fieldid = strtrim(sxpar(hdr,'FIELDID'),2) ;---------- ; Decide if this science exposure is bad if not keyword_set(threshold) then threshold=1000. @@ -111,9 +111,8 @@ print,'quickextract:',splitsky endelse obs = getenv('OBSERVATORY') if strmatch(obs, 'LCO', /fold_case) then sp = 2 else sp = 1 - plugsort = readplugmap(fullplugfile ,sp,/deredden, /apotags, fibermask=fibermask, $ + plugsort = readplugmap(fullplugfile ,sp,/deredden, /sostags, fibermask=fibermask, $ hdr=pmhdr, savdir=outdir, ccd=camname) - mwrfits, plugsort, 'test1.fits',/create fflat = mrdfits(fflatfile,0) fflatmask = mrdfits(fflatfile,1) @@ -142,11 +141,36 @@ print,'quickextract:',splitsky nterms=2 traceset2xy, tset, ytemp, xcen - + tset_field = (strsplit(tsetfile,'-',/extract))[2] + + if keyword_set(forcea2t) then begin + if (long(tset_field) eq long(fieldid)) then begin + splog,'Flat for Field Exists but forcing Arc2Trace' + tset_field = -1 + endif + endif + if keyword_set(arc2trace) then begin + if (long(tset_field) eq long(fieldid)) then begin + splog, 'Using flat associated with fieldid instead of arc2trace' + endif else begin + arcexpid = FILE_BASENAME(wsetfile) + arcexpid = (strsplit(arcexpid,'-',/extract))[3] + traceflat = filepath('spTraceTab-'+camname+'-'+arcexpid+'.fits',$ + root_dir=FILE_DIRNAME(outsci),$ + subdirectory=['trace',strtrim(mjd,2)]) + traceflat = file_search(traceflat, /fold_case, count=ct) + if ct gt 0 then begin + traceflat = traceflat[0] + xcen = mrdfits(traceflat,0) + splog, 'Using arc2trace: '+traceflat + endif + endelse + endif ;---------- ; Calculate the shift of the traces between the flat and science exposures - xnew = match_trace(image, invvar, xcen) + xnew = match_trace(image, invvar, xcen, /sos) + if not keyword_set(xnew) then return, 0 bestlag = median(xnew-xcen) minlag = min(xnew-xcen) maxlag = max(xnew-xcen) @@ -199,7 +223,7 @@ print,'quickextract:',splitsky ; Use the limits as set for the flats, since we don't set limits ; for the science exposure widths. Do not issue a warning message ; for smear exposures (which have low S/N), but only science exposures. - if (apo_checklimits('flat', 'XSIGMA', camname, max(medwidth)) $ + if (sos_checklimits('flat', 'XSIGMA', camname, max(medwidth)) $ EQ 'red' AND strtrim(sxpar(hdr,'FLAVOR'),2) NE 'smear') then $ splog, 'WARNING: Median spatial widths = ' $ + string(medwidth,format='(4f5.2)') + ' pix (LL LR UL UR)' @@ -240,7 +264,6 @@ print,'quickextract:',splitsky splog, 'tskys ', nts tskys = where((fibermask EQ 0), nts) splog, 'tskys ', nts - mwrfits, plugsort, 'test.fits',/create ;print,nskies splog, 'Nskys ',nskies ;fibermask[iskies] = 0 @@ -418,7 +441,8 @@ obs = getenv('OBSERVATORY') ; Find which fibers are sky fibers + object fibers iobj = where(strtrim(plugsort.objtype,2) NE 'SKY' AND plugsort.fiberid GT 0 AND meansn GT 0.2 AND strtrim(plugsort.objtype,2) NE 'NA' AND $ - plugsort.FIBER_OFFSET EQ 0 AND plugsort.mag[icolor] GT 0 AND not strmatch(plugsort.FIRSTCARTON, 'bhm_gua_*', /fold_case)) + plugsort.fibermask EQ 0 AND plugsort.FIBER_OFFSET EQ 0 AND plugsort.mag[icolor] GT 0 AND $ + not strmatch(plugsort.FIRSTCARTON, 'bhm_gua_*', /fold_case)) if (iobj[0] NE -1) then begin splog,'######################### CHECK ##############################' splog,'N-elements--quickextract-fitsn (mag) ', n_elements(plugsort[iobj].mag[icolor]),icolor @@ -426,11 +450,17 @@ obs = getenv('OBSERVATORY') splog,'--quickextract-fitsn (sn) ', meansn[iobj] splog,'######################### CHECK ##############################' coeffs = fitsn(plugsort[iobj].mag[icolor], meansn[iobj], $ - sncode='sos', filter=snfilter, sn2=sn2) + sncode='sos', filter=snfilter, sn2=sn2) if keyword_set(sdssv_sn2) then begin coeffs2 = fitsn(plugsort[iobj].mag[icolor], meansn[iobj], $ - sncode='sos2', filter=snfilter, sn2=sn2_v2) + sncode='sos2', filter=snfilter, sn2=sn2_v2) endif + if keyword_set(sn2_15) then begin + ; custom bright SN2 test + coeffs3 = fitsn(plugsort[iobj].mag[icolor], meansn[iobj], $ + sncode='sos15', filter=snfilter, sn2=sn2_m_15) + endif +splog, prelog = '' splog, sn2 ; Modification by Vivek for RM plates to have original depth of b=10 and r=22 ;Hardcoding plateids @@ -445,21 +475,16 @@ splog, sn2 if (keyword_set(rchi2)) then skychi2 = mean(rchi2) $ else skychi2 = 0.0 - if not keyword_set(sdssv_sn2) then begin - rstruct = create_struct('SCIFILE', fileandpath(outsci), $ - 'SKYPERSEC', float(skylevel), $ - 'XSIGMA_QUADRANT', float(medwidth), $ - 'XSIGMA', float(max(medwidth)), $ - 'SKYCHI2', float(skychi2), $ - 'FIBERMAG', plugsort.mag[icolor], $ - 'RAWFLUX', float(meanobjsub),$ - 'RAWFLUX_IVAR',float(meanobjsubivar),$ - 'SN2VECTOR', float(meansn^2), $ - 'SN2', float(sn2),$ - 'SEEING', float(sxpar(hdr, 'GSEEING')),$ - 'SN2_v2', !Values.F_NAN) - endif else begin - rstruct = create_struct('SCIFILE', fileandpath(outsci), $ + sn2_v2_def = !Values.F_NAN + sn2_15_def = !Values.F_NAN + if keyword_set(sdssv_sn2) then begin + if keyword_set(sn2_v2) then sn2_v2_def = float(sn2_v2) + endif + if keyword_set(sn2_15) then begin + if keyword_set(sn2_m_15) then sn2_15_def = float(sn2_m_15) + endif + + rstruct = create_struct('SCIFILE', fileandpath(outsci), $ 'SKYPERSEC', float(skylevel), $ 'XSIGMA_QUADRANT', float(medwidth), $ 'XSIGMA', float(max(medwidth)), $ @@ -470,19 +495,21 @@ splog, sn2 'SN2VECTOR', float(meansn^2), $ 'SN2', float(sn2),$ 'SEEING', float(sxpar(hdr, 'GSEEING')),$ - 'SN2_v2', float(sn2_v2)) - endelse + 'SN2_v2', sn2_v2_def, $ + 'SN2_15', sn2_15_def) + ;---------- ; Write out the extracted spectra sxaddpar, hdr, 'FRAMESN2', sn2 - if keyword_set(sdssv_sn2) then sxaddpar, hdr, 'FSN2_v2', sn2_v2 - - mwrfits, objsub, outsci, hdr, /create - mwrfits, objsubivar, outsci - mwrfits, meansn, outsci - mwrfits, sset, outsci -; mwrfits, relchi2set, outsci + if keyword_set(sdssv_sn2) then sxaddpar, hdr, 'FSN2_v2', sn2_v2_def + if keyword_set(sn2_15) then sxaddpar, hdr, 'FSN2_15', sn2_15_def + + mwrfits_named, objsub, outsci, hdr=hdr, name='OBJSUB', /create + mwrfits_named, objsubivar, outsci, name='OBJSUBIVAR' + mwrfits_named, meansn, outsci, name='MEANSN' + mwrfits_named, sset, outsci, name='SSET' +; mwrfits_named, relchi2set, outsci, name='RELCHI2' return, rstruct end diff --git a/pro/apo2d/quicktrace.pro b/pro/sos/quicktrace.pro similarity index 93% rename from pro/apo2d/quicktrace.pro rename to pro/sos/quicktrace.pro index 1e730bfcd..b2c7751c2 100644 --- a/pro/apo2d/quicktrace.pro +++ b/pro/sos/quicktrace.pro @@ -32,7 +32,7 @@ ; BUGS: ; ; PROCEDURES CALLED: -; apo_checklimits() +; sos_checklimits() ; extract_image ; fileandpath() ; findfile() @@ -91,12 +91,12 @@ function quicktrace, filename, tsetfile, plugmapfile=plugmapfile, nbin=nbin, $ ;---------- ; Read in the plug map file, and sort it if (NOT keyword_set(fps)) then begin - plugmap = readplugmap(plugmapfile, spectrographid, /deredden, /apotags, $ + plugmap = readplugmap(plugmapfile, spectrographid, /deredden, /sostags, $ hdr=hdrplug, fibermask=fibermask, /plates, mjd=sxpar(flathdr, 'MJD')) cartid = long(yanny_par_fc(hdrplug, 'cartridgeId')) endif else begin if keyword_set(plugmapfile)then begin - plugmap = readplugmap(plugmapfile, spectrographid, /deredden, /apotags,$ + plugmap = readplugmap(plugmapfile, spectrographid, /deredden, /sostags,$ hdr=hdrplug, fibermask=fibermask,ccd=camname, $ savdir=plugdir, mjd=sxpar(flathdr, 'MJD')) endif else fibermask = lonarr(500) @@ -173,7 +173,7 @@ splog, transpose(xsol[2056,*]) ncoeff=5, sigma=sigma, medwidth=medwidth,/quick, $ bundlefibers=bundlefibers, nbundle=nbundle) - if (apo_checklimits('flat', 'XSIGMA', camname, max(medwidth)) $ + if (sos_checklimits('flat', 'XSIGMA', camname, max(medwidth)) $ EQ 'red') then $ splog, 'WARNING: Median spatial widths = ' $ + string(medwidth,format='(4f5.2)') + ' pix (LL LR UL UR)' @@ -199,13 +199,13 @@ splog, transpose(xsol[2056,*]) ; Write traceset to FITS file if (sxpar(flathdr,'quality') EQ 'excellent') then begin - mwrfits, flux, tsetfile, /create - mwrfits, fluxivar, tsetfile - mwrfits, tset, tsetfile - mwrfits, plugmap, tsetfile - mwrfits, fibermask, tsetfile - mwrfits, [nbun], tsetfile - mwrfits, bundlefibers, tsetfile + mwrfits_named, flux, tsetfile, name='FLUX', /create + mwrfits_named, fluxivar, tsetfile, name='IVAR' + mwrfits_named, tset, tsetfile, name='TSET' + mwrfits_named, plugmap, tsetfile,name='PLUGMAP' + mwrfits_named, fibermask, tsetfile, name='FIBERMASK' + mwrfits_named, [nbun], tsetfile, name='NUM_BUNDLES' + mwrfits_named, bundlefibers, tsetfile,name='BUNDLE_FIBERS' endif else begin splog, 'Quality is not excellent - do not write tsetfile' endelse diff --git a/pro/apo2d/quickwave.pro b/pro/sos/quickwave.pro similarity index 92% rename from pro/apo2d/quickwave.pro rename to pro/sos/quickwave.pro index 133f87472..bdda4f692 100644 --- a/pro/apo2d/quickwave.pro +++ b/pro/sos/quickwave.pro @@ -33,7 +33,7 @@ ; BUGS: ; ; PROCEDURES CALLED: -; apo_checklimits() +; sos_checklimits() ; extract_boxcar() ; fiberflat() ; fileandpath() @@ -145,7 +145,7 @@ function quickwave, arcname, tsetfile, wsetfile, fflatfile, radius=radius, $ xmin=0.0, xmax=nx-1., bundlefibers=bundlefibers,$ medwidth=medwidth, numbundles=nbundle, /quick) ; - if (apo_checklimits('arc', 'WSIGMA', camname, max(medwidth)) $ + if (sos_checklimits('arc', 'WSIGMA', camname, max(medwidth)) $ EQ 'red') then $ splog, 'WARNING: Median wavelength widths = ' $ + string(medwidth,format='(4f5.2)') + ' pix (LL LR UL UR)';quadrupole @@ -163,8 +163,8 @@ function quickwave, arcname, tsetfile, wsetfile, fflatfile, radius=radius, $ minval=configuration->spcalib_fiberflat_minval(flux)) flat_flux = 0 ; clear memory flat_ivar = 0 ; clear memory - mwrfits, fflat, fflatfile, /create - mwrfits, fibermask, fflatfile + mwrfits_named, fflat, fflatfile, name='FFLAT,/create + mwrfits_named, fibermask, fflatfile, name='FIBERMASK' fflat = 0 ; clear memory ; endif @@ -174,11 +174,11 @@ function quickwave, arcname, tsetfile, wsetfile, fflatfile, radius=radius, $ ; Write out wavelength solution print, sxpar(archdr,'quality') if (sxpar(archdr,'quality') EQ 'excellent') then begin - mwrfits, wset, wsetfile, /create - mwrfits, flux, wsetfile - mwrfits, fluxivar, wsetfile - mwrfits, xpeak, wsetfile - mwrfits, ypeak, wsetfile + mwrfits_named, wset, wsetfile, name='WSET',/create + mwrfits_named, flux, wsetfile, name='FLUX' + mwrfits_named, fluxivar, wsetfile, name='IVAR' + mwrfits_named, xpeak, wsetfile, name='XPEAK' + mwrfits_named, ypeak, wsetfile, name='YPEAK' endif else begin splog, 'Quality is not excellent - do not write wsetfile' endelse diff --git a/pro/sos/setup_arc2trace.pro b/pro/sos/setup_arc2trace.pro new file mode 100644 index 000000000..aa62c2fd2 --- /dev/null +++ b/pro/sos/setup_arc2trace.pro @@ -0,0 +1,189 @@ +;+ +; NAME: +; setup_arc2trace +; +; PURPOSE: +; Setup files for arc_to_trace +; +; CALLING SEQUENCE: +; setup_arc2trace, tsetfile, arcfile, indir, outdir +; +; INPUTS: +; tsetfile - SOS traceset file +; arcfile - raw arc lamp calibration frame +; indir - location of raw exposure files +; outdir - current sosdir +; +; OPTIONAL INPUTS: +; +; OUTPUT: +; +; COMMENTS: +; +; EXAMPLES: +; +; BUGS: +; +; PROCEDURES CALLED: +; buildplan +; sdsshead +; yanny_read +; MRDFITS +; traceset2xy +; create_struct +; write_spflat +; yanny_write +; djs_filepath +; +; REVISION HISTORY: +; Written S.Morrison Nov 15, 2022 +;- +;------------------------------------------------------------------------------ +function buildplan, filename, cam, flavor, indir=indir, spexp=spexp + if keyword_set(indir) then $ + filename = djs_filepath(filename, root_dir=indir) + hdr = sdsshead(filename, do_lock=do_lock) + filename_short = FILE_BASENAME(filename) + filename_short = repstr(filename_short,'.gz','') + + CASE cam OF + 'b1': name = [filename_short,repstr(filename_short, 'b1','r1')] + 'r1': name = [repstr(filename_short, 'r1','b1'),filename_short] + 'b2': name = [filename_short,repstr(filename_short, 'b2','r2')] + 'r2': name = [repstr(filename_short, 'r2','b2'),filename_short] + endcase + + spexp1 = { $ + confid : strtrim(sxpar(hdr, 'CONFID'),2), $ + fieldid: strtrim(string(sxpar(hdr, 'FIELDID'),f='(i6.6)'),2), $ + mjd : LONG(sxpar(hdr, 'MJD')), $ + flavor : string(flavor), $ + exptime: float(sxpar(hdr, 'EXPTIME')), $ + name :name } + if keyword_set(spexp) then spexp = [spexp, spexp1] else spexp = spexp1 + return, spexp +end + + +pro setup_arc2trace, tsetfile, fflatfile, arcfile, indir, outdir, mjd, cam, fieldid + + obs = GETENV("OBSERVATORY") + + ; search for plan file + planfile = 'spPlanTrace-'+strtrim(mjd,2)+'_'+obs+'.par' + fullplanfile = djs_filepath(planfile, root_dir=outdir, subdirectory=['trace',strtrim(mjd,2)]) + file_dir = djs_filepath(strtrim(mjd,2), root_dir =outdir, subdirectory=['trace'] ) + if not file_test(file_dir,/DIRECTORY) then FILE_MKDIR, file_dir + + + while(djs_lockfile(fullplanfile+'.'+cam) eq 0) do wait, 5 + i = 0 + while(djs_lockfile(fullplanfile) eq 0) do begin + i = i+1 + if strmatch(cam, 'b?') then begin + altcam = repstr(cam,'b','r') + af = fullplanfile+'.'+altcam + if i ge 4 then begin + if (file_test(af,/dangling_symlink)+file_test(af,/symlink)) gt 0 then begin + splog, 'file locked by both cam process for > 20s' + break + endif + endif + endif + wait, 5 + endwhile + plan = file_search(fullplanfile) + + tsetsplit = strsplit((strsplit((file_basename(tsetfile)),'.',/extract))[0],'-',/extract) + ;tsetsplit = strsplit((strsplit(tsetfile,'.',/extract))[0],'-',/extract) + flatfile = 'sdR-'+tsetsplit[-1]+'-'+tsetsplit[-2]+'.fit' + + if keyword_set(plan) then begin + arcflavor = 'arc' + flatflavor = 'flat' + yanny_read, plan, pp, hdr=hdr + spexp = *pp + names = spexp.name + + endif else begin + arcflavor = 'TRACEARC' + flatflavor = 'TRACEFLAT' + names = [''] + endelse + + junk = where(strmatch(names, repstr(FILE_BASENAME(flatfile),'.gz','')), ct) + if ct eq 0 then begin + spexp = buildplan(flatfile, cam, flatflavor, indir=indir, spexp=spexp) + endif else begin + flatfile = djs_filepath(flatfile, root_dir=indir) + endelse + + junk = where(strmatch(names, repstr(FILE_BASENAME(arcfile),'.gz','')), ct) + if ct eq 0 then $ + spexp = buildplan(arcfile, cam, arcflavor, spexp=spexp) + + + flatinfoname = 'spTraceFlat-'+cam+'-' + if not file_test(djs_filepath(flatinfoname+'*', root_dir=file_dir) )then begin + ; convert tset to spflat format + flathdr = sdsshead(flatfile, do_lock=do_lock) + + tset = MRDFITS(tsetfile,2) + fibermask = MRDFITS(tsetfile,5) + traceset2xy, tset, ycen, xsol + + ftemp = create_struct( name='FLAT_STRUCT', $ + 'NAME', FILE_BASENAME(flatfile), $ + 'IARC', 0, 'PROFTYPE', 1, $ + 'MEDWIDTH', fltarr(4), 'FIBERMASK', ptr_new(fibermask), $ + 'TSET', ptr_new(tset), 'XSOL', ptr_new(xsol), $ + 'WIDTHSET', ptr_new(0), 'FFLAT', ptr_new(0), $ + 'SUPERFLATSET', ptr_new(0), 'HDR', ptr_new(flathdr)) + flatstruct = replicate(ftemp, 1) + + + toutdir = djs_filepath('', root_dir=outdir, subdirectory=['trace',strtrim(mjd,2)]) + FILE_MKDIR, toutdir + write_spflat, flatinfoname, 0, flatstruct, flathdr, [FILE_BASENAME(arcfile)], 0, 0, 0, $ + outdir=toutdir + endif else begin + flatinfoname1 = 'spFlat-'+cam+'-' + ; convert tset to spflat format + flathdr = sdsshead(flatfile, do_lock=do_lock) + splog, tsetfile + tset = MRDFITS(tsetfile,2) + fibermask = MRDFITS(tsetfile,5) + traceset2xy, tset, ycen, xsol + splog, fflatfile + fflat = MRDFITS(fflatfile, 0) + + ftemp = create_struct( name='FLAT_STRUCT', $ + 'NAME', FILE_BASENAME(flatfile), $ + 'IARC', 0, 'PROFTYPE', 1, $ + 'MEDWIDTH', fltarr(4), 'FIBERMASK', ptr_new(fibermask), $ + 'TSET', ptr_new(tset), 'XSOL', ptr_new(xsol), $ + 'WIDTHSET', ptr_new(0), 'FFLAT', ptr_new(fflat), $ + 'SUPERFLATSET', ptr_new(0), 'HDR', ptr_new(flathdr)) + flatstruct = replicate(ftemp, 1) + + toutdir = djs_filepath('', root_dir=outdir, subdirectory=[fieldid]) + ;toutdir = djs_filepath('', root_dir=outdir, subdirectory=[tsetsplit[-3]]) + FILE_MKDIR, toutdir + write_spflat, flatinfoname1, 0, flatstruct, flathdr, [FILE_BASENAME(arcfile)], 0, 0, 0, $ + outdir=toutdir + + + endelse + + + + hdr = '' + hdr = [hdr, "MJD " + strtrim(mjd,2) + " # Modified Julian Date"] + hdr = [hdr, "OBS " + obs + " # Observatory"] + hdr = [hdr, "RUN2D " + GETENV("IDLSPEC2D_VER") + " # 2D reduction name"] + + yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr, stnames='SPEXP' + djs_unlockfile, fullplanfile + djs_unlockfile, fullplanfile+'.'+cam +end +;------------------------------------------------------------------------------ diff --git a/pro/apo2d/apo_appendlog.pro b/pro/sos/sos_appendlog.pro similarity index 88% rename from pro/apo2d/apo_appendlog.pro rename to pro/sos/sos_appendlog.pro index 55d763df3..63f720ae9 100644 --- a/pro/apo2d/apo_appendlog.pro +++ b/pro/sos/sos_appendlog.pro @@ -1,12 +1,12 @@ ;+ ; NAME: -; apo_appendlog +; sos_appendlog ; ; PURPOSE: ; Append to logfile as written by APOREDUCE. ; ; CALLING SEQUENCE: -; apo_appendlog, logfile, rstruct, tstruct +; sos_appendlog, logfile, rstruct, tstruct ; ; INPUTS: ; logfile - FITS logfile as written by APOREDUCE. @@ -43,7 +43,7 @@ ; 02-Dec-2000 Written by D. Schlegel, Princeton ;- ;------------------------------------------------------------------------------ -pro apo_appendlog, logfile, rstruct, tstruct +pro sos_appendlog, logfile, rstruct, tstruct ;---------- ; Determine which HDU in the log file this structure will be appended. @@ -60,6 +60,7 @@ pro apo_appendlog, logfile, rstruct, tstruct endif else begin thishdu = -1 endelse + names = ['BIASDARK','FLAT','ARC','SCIENCE','TEXT'] ;---------- ; Lock the file to do this - otherwise we might read/write to a partially @@ -80,8 +81,6 @@ pro apo_appendlog, logfile, rstruct, tstruct iiter++ end -; while(djs_lockfile(logfile) EQ 0) do wait, 1 - ;---------- ; If the log file does not yet exist, then create it. Otherwise, ; append this structure to an existing structure, if it already exists. @@ -101,9 +100,9 @@ pro apo_appendlog, logfile, rstruct, tstruct ; Write HDU numbers 1 through 5 for ihdu=1, 5 do begin if (ihdu EQ thishdu) then $ - mwrfits, rstruct, logfile $ + mwrfits_named, rstruct, logfile, name=names[thishdu-1]$ else $ - mwrfits, dummy, logfile + mwrfits_named, dummy, logfile endfor endif else if (thishdu GT 0) then begin ; Modify an existing FITS file @@ -118,7 +117,7 @@ pro apo_appendlog, logfile, rstruct, tstruct if exists[0] EQ -1 then pp = struct_append(pp, rstruct) $ else copy_struct_inx, rstruct, pp, index_to=exists[0] - djs_modfits, logfile, pp, exten_no=thishdu + modfits_named, logfile, pp, exten_no=thishdu, name=names[thishdu-1] endif ;---------- @@ -140,14 +139,14 @@ pro apo_appendlog, logfile, rstruct, tstruct if (n_elements(tstruct) eq 1) and (strlen(strtrim(tstruct[0].text)) eq 0) then begin if exists[0] NE -1 then begin pp = pp[exists] - djs_modfits, logfile, pp, exten_no=5 - endif else djs_modfits, logfile, 0, exten_no=5, /delete_data + modfits_named, logfile, pp, exten_no=5, name='text' + endif else modfits_named, logfile, 0, exten_no=5, /delete_data endif else begin if exists[0] NE -1 then begin pp = pp[exists] pp = struct_append(pp, tstruct) endif else pp = tstruct - djs_modfits, logfile, pp, exten_no=5 + modfits_named, logfile, pp, exten_no=5, name='text' endelse endif diff --git a/pro/apo2d/apo_checklimits.pro b/pro/sos/sos_checklimits.pro similarity index 90% rename from pro/apo2d/apo_checklimits.pro rename to pro/sos/sos_checklimits.pro index 773deae65..5c1824125 100644 --- a/pro/apo2d/apo_checklimits.pro +++ b/pro/sos/sos_checklimits.pro @@ -1,12 +1,12 @@ ;+ ; NAME: -; apo_checklimits() +; sos_checklimits() ; ; PURPOSE: ; Convert output FITS file from APOREDUCE to HTML format. ; ; CALLING SEQUENCE: -; markstring = apo_checklimits(flavor, field, camera, value, [ /html ] ) +; markstring = sos_checklimits(flavor, field, camera, value, [ /html ] ) ; ; INPUTS: ; flavor - FLAVOR to match in the opLimits file. @@ -41,9 +41,9 @@ ; 30-Apr-2000 Written by D. Schlegel, APO ;- ;------------------------------------------------------------------------------ -function apo_checklimits, flavor, field, camera, value, html=html +function sos_checklimits, flavor, field, camera, value, html=html - common apo_limits, numlimits, textlimits + common sos_limits, numlimits, textlimits markstring = '' if (n_elements(value) EQ 0) then return, markstring @@ -73,7 +73,7 @@ function apo_checklimits, flavor, field, camera, value, html=html markstring = textlimits[ilim].color if (keyword_set(html)) then $ markstring = '' + + sos_color2hex(markstring) + ';font-weight:bold;">' endif endfor endif else begin @@ -89,7 +89,7 @@ function apo_checklimits, flavor, field, camera, value, html=html markstring = numlimits[ilim].color if (keyword_set(html)) then $ markstring = '' + + sos_color2hex(markstring) + ';font-weight:bold;">' endif endfor endelse diff --git a/pro/apo2d/apo_color2hex.pro b/pro/sos/sos_color2hex.pro similarity index 91% rename from pro/apo2d/apo_color2hex.pro rename to pro/sos/sos_color2hex.pro index aa6828d19..b7798d1b4 100644 --- a/pro/apo2d/apo_color2hex.pro +++ b/pro/sos/sos_color2hex.pro @@ -1,5 +1,5 @@ ;------------------------------------------------------------------------------ -function apo_color2hex, colorname +function sos_color2hex, colorname case strupcase(strtrim(colorname,2)) of 'RED': hexname = '#FF0000' diff --git a/pro/apo2d/apo_log2html.pro b/pro/sos/sos_log2html.pro similarity index 73% rename from pro/apo2d/apo_log2html.pro rename to pro/sos/sos_log2html.pro index 7288d42fc..b1397ac04 100644 --- a/pro/apo2d/apo_log2html.pro +++ b/pro/sos/sos_log2html.pro @@ -1,12 +1,12 @@ ;+ ; NAME: -; apo_log2html +; sos_log2html ; ; PURPOSE: ; Convert output FITS file from APOREDUCE to HTML format. ; ; CALLING SEQUENCE: -; apo_log2html, logfile, [ htmlfile ] +; sos_log2html, logfile, [ htmlfile ] ; ; INPUTS: ; logfile - Input log file as a FITS binary file with an extension @@ -27,7 +27,7 @@ ; BUGS: ; ; PROCEDURES CALLED: -; apo_checklimits() +; sos_checklimits() ; copy_struct_inx ; djs_filepath() ; djs_findfile() @@ -40,19 +40,19 @@ ; sxpar() ; ; INTERNAL SUPPORT ROUTINES: -; apo_color2hex() -; apo_log_header() -; apo_log_endfile() -; apo_log_tableline() -; apo_log_beginplate() -; apo_log_endplate() -; apo_log_fields() +; sos_color2hex() +; sos_log_header() +; sos_log_endfile() +; sos_log_tableline() +; sos_log_beginplate() +; sos_log_endplate() +; sos_log_fields() ; ; REVISION HISTORY: ; 30-Apr-2000 Written by D. Schlegel, APO ;- ;------------------------------------------------------------------------------ -function apo_log_header, title1 +function sos_log_header, title1 ; Include a Java script to auto-load this page every 60 seconds ; --> No. Disable this now. A copy of the file is made from APOREDUCE @@ -68,7 +68,7 @@ function apo_log_header, title1 end ;------------------------------------------------------------------------------ -function apo_log_endfile, title +function sos_log_endfile, title textout = '' @@ -76,7 +76,7 @@ function apo_log_endfile, title end ;------------------------------------------------------------------------------ -function apo_log_tableline, ncams +function sos_log_tableline, ncams textout = '' @@ -92,7 +92,7 @@ function apo_log_tableline, ncams end ;------------------------------------------------------------------------------ -function apo_log_beginplate, platenum, cartid, mjd, fieldid, camnames, outdir=outdir, fps=fps +function sos_log_beginplate, platenum, cartid, mjd, fieldid, camnames, outdir=outdir, fps=fps rowsep = ' ' colsep = ' ' @@ -118,7 +118,7 @@ function apo_log_beginplate, platenum, cartid, mjd, fieldid, camnames, outdir=ou textout = [''] textout = [textout, ''] - textout = [textout, apo_log_tableline(ncams)] + textout = [textout, sos_log_tableline(ncams)] if keyword_set(fps) then begin nextline = '
          '+var_str+' ' + platestr $ @@ -135,13 +135,13 @@ function apo_log_beginplate, platenum, cartid, mjd, fieldid, camnames, outdir=ou + colsep + 'UT' + colsep + 'QUALITY' textout = [textout, nextline] - textout = [textout, apo_log_tableline(ncams)] + textout = [textout, sos_log_tableline(ncams)] return, textout end ;------------------------------------------------------------------------------ -function apo_log_endplate +function sos_log_endplate textout = ['
          '] @@ -149,9 +149,9 @@ function apo_log_endplate end ;------------------------------------------------------------------------------ -function apo_log_fields, pp, fields, printnames=printnames, formats=formats +function sos_log_fields, pp, fields, printnames=printnames, formats=formats - common com_apo_log, camnames + common com_sos_log, camnames rowsep = ' ' colsep = ' ' @@ -180,10 +180,10 @@ function apo_log_fields, pp, fields, printnames=printnames, formats=formats utstring = string(jd_hr, jd_min, format='(i2.2,":",i2.2," Z")') airtempstring = string(pp[igood[0]].airtemp, format='(f6.1)') - exptimestring = apo_checklimits(pp[igood[0]].flavor, 'EXPTIME', $ + exptimestring = sos_checklimits(pp[igood[0]].flavor, 'EXPTIME', $ pp[igood[0]].camera, pp[igood[0]].exptime, /html) $ + string(pp[igood[0]].exptime, format='(f8.1)') - qualstring = apo_checklimits(pp[igood[0]].flavor, 'QUALITY', $ + qualstring = sos_checklimits(pp[igood[0]].flavor, 'QUALITY', $ pp[igood[0]].camera, pp[igood[0]].quality, /html) $ + pp[igood[0]].quality endif else begin @@ -205,7 +205,8 @@ function apo_log_fields, pp, fields, printnames=printnames, formats=formats tmpval = pp[icam].(itag) if (keyword_set(tmpval)) then $ value = string(tmpval, format=format) - value = apo_checklimits(flavor, fields[ifield], $ + if strcmp(strtrim(value,2),'NaN') then value = '-' + value = sos_checklimits(flavor, fields[ifield], $ camnames[icam], tmpval, /html) + value endif nextline = nextline + colsep + value @@ -219,18 +220,18 @@ function apo_log_fields, pp, fields, printnames=printnames, formats=formats textout = [textout, rowsep + nextline] endfor - textout = [textout, apo_log_tableline(ncams)] + textout = [textout, sos_log_tableline(ncams)] return, textout end ;------------------------------------------------------------------------------ -pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 - - common com_apo_log, camnames +pro sos_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2, obs=obs, sn2_15=sn2_15 + + common com_sos_log, camnames if (n_params() EQ 0) then begin - print, 'Syntax: apo_log2html, logfile, [ htmlfile ]' + print, 'Syntax: sos_log2html, logfile, [ htmlfile ]' return endif else if (n_params() EQ 1) then begin thisfile = fileandpath(logfile, path=thispath) @@ -250,7 +251,8 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 junk = fileandpath(htmlfile, path=outdir) ;camnames = ['b1', 'r1', 'b2', 'r2'] - if strmatch(getenv('OBSERVATORY'), 'apo',/fold_case) eq 1 then begin + if not keyword_set(obs) then obs = strtrim(STRLOWCASE(getenv('OBSERVATORY')),2) + if strmatch(obs, 'apo',/fold_case) eq 1 then begin camnames = ['b1', 'r1'] endif else begin camnames = ['b2', 'r2'] @@ -328,7 +330,7 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 ;---------- ; Consruct the header of the output text - title1 = getenv('OBSERVATORY')+' BOSS Spectro MJD=' + mjdstr + ' '+var_str+'=' + title1 = strupcase(obs)+' BOSS Spectro MJD=' + mjdstr + ' '+var_str+'=' platelist = var_str+'=' for iplate=0, nplates-1 do begin platestr = strtrim(string(allplates[iplate]),2) @@ -339,7 +341,7 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 platelist = platelist + ', ' endif endfor - textout = apo_log_header(title1) + textout = sos_log_header(title1) ; textout = [textout, ''] prevmjd = string(thismjd-1,format='(i5.5)') @@ -350,25 +352,32 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 ''] textout = [textout, $ ''] + + 'MJD='+prevmjd+''] textout = [textout, $ ''] textout = [textout, $ ''] + + 'MJD='+nextmjd+''] textout = [textout, $ ''] + + outf = fileandpath(htmlfile, path=outp) + arc_html = '../'+mjdstr+'/trace/'+mjdstr+'/arcs_'+mjdstr+'_'+obs+'.html' + if file_test(FILE_DIRNAME(djs_filepath(arc_html, root_dir=outp)), /DIRECTORY) then begin + textout = [textout, $ + ''] + endif textout = [textout, $ ''] textout = [textout, $ '
          Yesterday: ' $ - + 'MJD='+prevmjd+'BOSS Spectro MJD '+mjdstr+'Tomorrow: ' $ - + 'MJD='+nextmjd+'
          SOS Summary Plots
          '$ + +'Arc Shift Plots'$ + +'
          '+platelist+'
          '] -; textout = [textout, '' + platelist + ''] -; textout = [textout, ''] textout = [textout, $ - '

          IDLSPEC2D version ' + vers2d + ' (' $ - + 'documentation).'] + '

          IDLSPEC2D version ' + vers2d ];+ ' (' + $+ 'documentation).'] if keyword_set(run2d) then textout = [textout, '
          RUN2D '+run2d ] if (!version.release LT '5.4') then $ textout = [textout, $ @@ -380,6 +389,7 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 ;--------------------------------------------------------------------------- ; Loop over each plate ;--------------------------------------------------------------------------- + disk_warnings = '' for iplate=0, nplates-1 do begin ;---------- @@ -389,7 +399,7 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 thiscart = allcarts[iplate] if keyword_set(fps) then thisfield = allfields[iplate] else thisfield = thisplate textout = [textout, $ - apo_log_beginplate(thisplate, thiscart, thismjd, thisfield, camnames, outdir=outdir, fps=fps)] + sos_log_beginplate(thisplate, thiscart, thismjd, thisfield, camnames, outdir=outdir, fps=fps)] ;---------- ; Find all biases and loop over each exposure number with any @@ -418,7 +428,7 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 fields = ['PERCENTILE98'] formats = ['(i4)', '(f7.1)', '(f7.1)'] textout = [ textout, $ - apo_log_fields(pbias, fields, formats=formats) ] + sos_log_fields(pbias, fields, formats=formats) ] endfor endif @@ -448,7 +458,7 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 fields = ['NGOODFIBER', 'XMID', 'XSIGMA'] formats = ['(i4)', '(f7.1)', '(f5.2)'] textout = [ textout, $ - apo_log_fields(pflats, fields, formats=formats) ] + sos_log_fields(pflats, fields, formats=formats) ] endfor endif @@ -477,7 +487,7 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 formats = ['(f7.1)', '(f4.2)', '(i)', '(f5.2)'] fields = ['WAVEMID', 'BESTCORR', 'NLAMPS', 'WSIGMA'] textout = [ textout, $ - apo_log_fields(parcs, fields, formats=formats) ] + sos_log_fields(parcs, fields, formats=formats) ] endfor endif @@ -510,33 +520,46 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 for iexp=0, nexp-1 do begin textout = [ textout, $ - apo_log_fields(pscience[*,iexp], 'SKYPERSEC', $ + sos_log_fields(pscience[*,iexp], 'SKYPERSEC', $ printnames='SKY/SEC', formats='(f8.2)') ] endfor ;---------- ; Output SN2 for science exposures + + ;if keyword_set(fps) then this_sn2_15 = sn2_15 else this_sn2_15 = 0 + if keyword_set(fps) and (long(thisfield) lt 100000) then this_sn2_15 = sn2_15 else this_sn2_15 = 0 + this_sdssv_sn2 = 0 ; sdssv_sn2 + for iexp=0, nexp-1 do begin mjdstr = strtrim(string(thismjd),2) platestr4 = config_to_string(thisplate) expstring = string(pscience[*,iexp].expnum, format='(i8.8)') - if not keyword_set(sdssv_sn2) then begin - jpegfile1 = 'snplot-'+mjdstr+'-'+platestr4+'-'+expstring+'.jpeg' - printnames = '(S/N)^2' - textout = [ textout, $ - apo_log_fields(pscience[*,iexp], 'SN2', $ - printnames=printnames, formats='(f7.1)') ] - endif else begin - jpegfile1 = 'snplot-'+mjdstr+'-'+platestr4+'-'+expstring[0]+'.jpeg' - printnames1 = '(S/N)^2' - jpegfile_v2= 'snplot-sdssv-'+mjdstr+'-'+platestr4+'-'+expstring[0]+'.jpeg' - printnames_v2 = 'v2 (S/N)^2' - textout = [ textout, $ - apo_log_fields(pscience[*,iexp], ['SN2','SN2_V2'], $ - printnames=[printnames1,printnames_v2],$ - formats=['(f7.1)','(f7.1)']) ] - endelse + + jpegfile1 = 'snplot-'+mjdstr+'-'+platestr4+'-'+expstring[0]+'.jpeg' + jpegfile_15= 'snplot-sdssv15-'+mjdstr+'-'+platestr4+'-'+expstring[0]+'.jpeg' + jpegfile_v2= 'snplot-sdssv-'+mjdstr+'-'+platestr4+'-'+expstring[0]+'.jpeg' + sn2_lab = ['SN2'] + sn2_pnames = ['(S/N)^2'] + sn2_formats = ['(f7.1)'] + + if keyword_set(this_sdssv_sn2) then begin + sn2_lab = [sn2_lab,'SN2_V2'] + sn2_pnames = [sn2_pnames, 'v2 (S/N)^2'] + sn2_formats = [sn2_formats,'(f7.1)'] + endif + + if keyword_set(this_sn2_15) then begin + sn2_lab = [sn2_lab,'SN2_15'] + sn2_pnames = [sn2_pnames, 'Mag15 (S/N)^2'] + sn2_formats = [sn2_formats,'(f7.1)'] + endif + + textout = [ textout, $ + sos_log_fields(pscience[*,iexp], sn2_lab, $ + printnames=sn2_pnames,$ + formats=sn2_formats) ] endfor @@ -550,15 +573,12 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 'FLAVOR', 'TOTAL', $ 'CAMERA', '', $ 'TOTALSN2', 0.0 ) - if keyword_set(sdssv_sn2) then begin - rstruct = create_struct('MJD', 0L, $ - 'CONFIG', 0L, $ - 'EXPNUM', '', $ - 'TAI', '', $ - 'FLAVOR', 'TOTAL', $ - 'CAMERA', '', $ - 'TOTALSN2', 0.0, $ - 'TOTALSN2_v2', 0.0) + if keyword_set(this_sdssv_sn2) then begin + rstruct = struct_addtags(rstruct, create_struct('TOTALSN2_v2', 0.0 )) + endif + + if keyword_set(this_sn2_15) then begin + rstruct = struct_addtags(rstruct, create_struct('TOTALSN2_15', 0.0 )) endif @@ -570,47 +590,64 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 ; in the opLimits file (currently anything < 2.0 is bad). if (pscience[icam,iexp].flavor EQ 'science' $ AND strmatch(pscience[icam,iexp].quality, 'excellent') $ - AND apo_checklimits('science', 'SN2', $ + AND sos_checklimits('science', 'SN2', $ pscience[icam,iexp].camera, $ pscience[icam,iexp].sn2) EQ '') then begin ; AND pscience[icam,iexp].sn2 GE 2.0) then begin ptotal[icam].totalsn2 = ptotal[icam].totalsn2 + $ pscience[icam,iexp].sn2 endif - if keyword_set(sdssv_sn2) then begin + if keyword_set(this_sdssv_sn2) then begin if (pscience[icam,iexp].flavor EQ 'science' $ AND strmatch(pscience[icam,iexp].quality, 'excellent') $ - AND apo_checklimits('science', 'SN2', $ + AND sos_checklimits('science', 'SN2', $ pscience[icam,iexp].camera, $ pscience[icam,iexp].sn2_v2) EQ '') then begin ptotal[icam].TOTALSN2_v2 = ptotal[icam].TOTALSN2_v2 + $ pscience[icam,iexp].sn2_v2 endif endif + if keyword_set(this_sn2_15) then begin + if (pscience[icam,iexp].flavor EQ 'science' $ + AND strmatch(pscience[icam,iexp].quality, 'excellent') $ + AND sos_checklimits('science', 'SN2', $ + pscience[icam,iexp].camera, $ + pscience[icam,iexp].SN2_15) EQ '') then begin + ptotal[icam].TOTALSN2_15 = ptotal[icam].TOTALSN2_15 + $ + pscience[icam,iexp].SN2_15 + endif + endif endfor endfor mjdstr = strtrim(string(thismjd),2) platestr4 = config_to_string(thisplate) - if not keyword_set(sdssv_sn2) then begin - jpegfile = 'snplot-'+mjdstr+'-'+platestr4+'.jpeg' - printnames = 'TOTAL (S/N)^2' - textout = [ textout, $ - apo_log_fields(ptotal, 'TOTALSN2', $ - printnames=printnames, formats='(f7.1)') ] - endif else begin - jpegfile = 'snplot-'+mjdstr+'-'+platestr4+'.jpeg' - printnames = 'TOTAL (S/N)^2' - jpegfile_v2 = 'snplot-sdssv-'+mjdstr+'-'+platestr4+'.jpeg' - printnames_v2 = 'TOTAL v2 (S/N)^2' + jpegfile1 = 'snplot-'+mjdstr+'-'+platestr4+'.jpeg' + jpegfile_15= 'snplot-sdssv15-'+mjdstr+'-'+platestr4+'.jpeg' + jpegfile_v2= 'snplot-sdssv-'+mjdstr+'-'+platestr4+'.jpeg' + + sn2_lab = ['TOTALSN2'] + sn2_pnames = ['TOTAL (S/N)^2'] + sn2_formats = ['(f7.1)'] - textout = [ textout, $ - apo_log_fields(ptotal, ['TOTALSN2','TOTALSN2_V2'], $ - printnames=[printnames,printnames_v2], $ - formats=['(f7.1)','(f7.1)']) ] - endelse + if keyword_set(this_sdssv_sn2) then begin + sn2_lab = [sn2_lab,'TOTALSN2_V2'] + sn2_pnames = [sn2_pnames, 'Total v2 (S/N)^2'] + sn2_formats = [sn2_formats,'(f7.1)'] + endif + + if keyword_set(this_sn2_15) then begin + sn2_lab = [sn2_lab,'TOTALSN2_15'] + sn2_pnames = [sn2_pnames, 'Total Mag15 (S/N)^2'] + sn2_formats = [sn2_formats,'(f7.1)'] + endif + + textout = [ textout, $ + sos_log_fields(ptotal, sn2_lab, $ + printnames=sn2_pnames,$ + formats=sn2_formats) ] endif - textout = [textout, apo_log_endplate()] + textout = [textout, sos_log_endplate()] ;---------- ; Print all WARNINGs and ABORTs for this plate @@ -619,20 +656,36 @@ pro apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 else ii = -1 if (ii[0] NE -1) then begin ; Remove leading+trailing spaces - addtext = strtrim(PPTEXT[ii].text, 2) + addtext_temp = strtrim(PPTEXT[ii].text, 2) + addtext = '' ; Remove the first word from each line (which is the name of the ; IDL proc that generated the warning or abort message) - for jj=0, n_elements(addtext)-1 do $ - addtext[jj] = strmid( addtext[jj], strpos(addtext[jj],' ')+1 ) + for jj=0, n_elements(addtext_temp)-1 do $ + addtext_temp[jj] = strmid( addtext_temp[jj], strpos(addtext_temp[jj],' ')+1 ) + + foreach at, addtext_temp do begin + if strmatch(at, '*SOS disk*', /fold_case) eq 0 then begin + ;if keyword_set(addtext) then + addtext = [addtext, at] + endif else begin + at_sub = strjoin((strsplit(at,/extract))[-6:*],' ') + junk = where(strmatch(disk_warnings, at_sub, /fold_case), ct) + if ct eq 0 then begin + addtext = [addtext, at] + disk_warnings = [disk_warnings, at_sub] + endif + endelse + endforeach + addtext = repstr(addtext, 'WARNING', $ - 'WARNING') + 'WARNING') addtext = repstr(addtext, 'ABORT', $ - 'ABORT') + 'ABORT') textout = [textout, '

          ', addtext, '
          '] endif endfor - textout = [textout, apo_log_endfile()] + textout = [textout, sos_log_endfile()] for i=0, n_elements(textout)-1 do $ printf, html_lun, textout[i] diff --git a/pro/apo2d/apo_plotbias.pro b/pro/sos/sos_plotbias.pro similarity index 97% rename from pro/apo2d/apo_plotbias.pro rename to pro/sos/sos_plotbias.pro index b501afecb..826dfa67d 100644 --- a/pro/apo2d/apo_plotbias.pro +++ b/pro/sos/sos_plotbias.pro @@ -1,12 +1,12 @@ ;+ ; NAME: -; apo_plotbias +; sos_plotbias ; ; PURPOSE: ; Plot the histogram of bias values for all 4 cameras of a single exposure ; ; CALLING SEQUENCE: -; apo_plotbias, expnum, [ plotfile= ] +; sos_plotbias, expnum, [ plotfile= ] ; ; INPUTS: ; expnum - Exposure number @@ -51,7 +51,7 @@ ; 06-Dec-2000 Written by D. Schlegel, Princeton ;- ;------------------------------------------------------------------------------ -pro apo_plotbias, expnum, plotfile=plotfile +pro sos_plotbias, expnum, plotfile=plotfile if (n_params() LT 1) then begin print, 'Syntax - apoplotbias, expnum, [plotfile= ]' diff --git a/pro/apo2d/apo_plotsn.pro b/pro/sos/sos_plotsn.pro similarity index 76% rename from pro/apo2d/apo_plotsn.pro rename to pro/sos/sos_plotsn.pro index 58f8d21aa..1346c9b04 100644 --- a/pro/apo2d/apo_plotsn.pro +++ b/pro/sos/sos_plotsn.pro @@ -1,12 +1,12 @@ ;+ ; NAME: -; apo_plotsn +; sos_plotsn ; ; PURPOSE: ; Generate S/N plot for one plate from a FITS logfile written by APOREDUCE. ; ; CALLING SEQUENCE: -; apo_plotsn, logfile, plate, [ expnum=, plugdir=, plotfile= ] +; sos_plotsn, logfile, plate, [ expnum=, plugdir=, plotfile= ] ; ; INPUTS: ; logfile - Logfile as written by APOREDUCE. This is a FITS file @@ -33,7 +33,7 @@ ; BUGS: ; ; PROCEDURES CALLED: -; apo_checklimits() +; sos_checklimits() ; djs_lockfile() ; djs_unlockfile ; mrdfits @@ -45,8 +45,8 @@ ; 02-May-2000 Written by D. Schlegel, APO ;- ;------------------------------------------------------------------------------ -pro apo_plotsn, logfile, plate, expnum=expnum, plugdir=plugdir, $ - plotfile=plotfile, fps=fps, sdssv_sn2=sdssv_sn2 +pro sos_plotsn, logfile, plate, expnum=expnum, plugdir=plugdir, $ + plotfile=plotfile, fps=fps, sdssv_sn2=sdssv_sn2, ccd=ccd, sn2_15=sn2_15 if (NOT keyword_set(plate)) then return if (NOT keyword_set(plugdir)) then plugdir = './' @@ -58,8 +58,11 @@ pro apo_plotsn, logfile, plate, expnum=expnum, plugdir=plugdir, $ endelse platestr = plate_to_string(plate) - splog, 'Generating S/N plot for plate '+platestr - + if keyword_set(fps) then begin + splog, 'Generating S/N plot for Config '+platestr + endif else begin + splog, 'Generating S/N plot for plate '+platestr + endelse ;---------- ; Read the science frames for this plate @@ -81,14 +84,18 @@ pro apo_plotsn, logfile, plate, expnum=expnum, plugdir=plugdir, $ splog, 'debug:fullplugfile:',fullplugfile if (Not keyword_set(fps)) then begin - plugmap = readplugmap(fullplugfile,spd1,/deredden,/apotags, fibermask=fibermask,hdr=plhdr, /plates); included /deredden to match the SN2 in the html and plot-vivek + plugmap = readplugmap(fullplugfile,spd1,/deredden,/sostags, fibermask=fibermask,hdr=plhdr, /plates); included /deredden to match the SN2 in the html and plot-vivek endif else begin savdir=FILE_DIRNAME(plotfile) if strmatch(getenv('OBSERVATORY'), 'apo',/fold_case) eq 1 then begin - plugmap = readplugmap(fullplugfile, 1, /deredden, /apotags, fibermask=fibermask, hdr=plhdr, ccd='b1',savdir=savdir); included /deredden to match the SN2 in the html and plot-vivek + if not keyword_set(ccd) then ccd = 'b1' + sp = 1 endif else begin - plugmap = readplugmap(fullplugfile, 2, /deredden, /apotags, fibermask=fibermask, hdr=plhdr, ccd='b2',savdir=savdir); included /deredden to match the SN2 in the html and plot-vivek + if not keyword_set(ccd) then ccd = 'b2' + sp = 2 endelse + plugmap = readplugmap(fullplugfile, sp, /deredden, /sostags, fibermask=fibermask, hdr=plhdr, ccd=ccd,savdir=savdir); included /deredden to match the SN2 in the html and plot-vivek + endelse ;---------- ; Loop through reductions for all science frames, and add S/N @@ -106,11 +113,16 @@ pro apo_plotsn, logfile, plate, expnum=expnum, plugdir=plugdir, $ ; Test that the exposure falls within valid S/N^2 limits if keyword_set(sdssv_sn2) then begin - qkeep = apo_checklimits('science', 'SN2_v2', PPSCIENCE[ii].camera, $ + qkeep = sos_checklimits('science', 'SN2_v2', PPSCIENCE[ii].camera, $ PPSCIENCE[ii].sn2) NE 'red' endif else begin - qkeep = apo_checklimits('science', 'SN2', PPSCIENCE[ii].camera, $ - PPSCIENCE[ii].sn2) NE 'red' + if keyword_set(sn2_15) then begin + qkeep = sos_checklimits('science', 'SN2_15', PPSCIENCE[ii].camera, $ + PPSCIENCE[ii].sn2_15) NE 'red' + endif else begin + qkeep = sos_checklimits('science', 'SN2', PPSCIENCE[ii].camera, $ + PPSCIENCE[ii].sn2) NE 'red' + endelse endelse ; If EXPNUM is specified, then only use data from those exposure(s) @@ -151,9 +163,15 @@ pro apo_plotsn, logfile, plate, expnum=expnum, plugdir=plugdir, $ + ' '+var_str+'=' + strtrim(string(plate),2) sncode = 'sos2' endif else begin - plottitle = 'BOSS Spectro MJD=' + strtrim(string(mjd),2) $ - + ' '+var_str+'=' + strtrim(string(plate),2) - sncode = 'sos' + if keyword_set(sn2_15) then begin + plottitle = 'BOSS SDSS-V Mag=15 Spectro MJD=' + strtrim(string(mjd),2) $ + + ' '+var_str+'=' + strtrim(string(plate),2) + sncode = 'sos15' + endif else begin + plottitle = 'BOSS Spectro MJD=' + strtrim(string(mjd),2) $ + + ' '+var_str+'=' + strtrim(string(plate),2) + sncode = 'sos' + endelse endelse if (keyword_set(expnum)) then $ plottitle += ' exp=' + strtrim(expnum[0],2) diff --git a/pro/apo2d/aporeduce.pro b/pro/sos/sosreduce.pro similarity index 82% rename from pro/apo2d/aporeduce.pro rename to pro/sos/sosreduce.pro index be4ef3268..cf0df7e18 100644 --- a/pro/apo2d/aporeduce.pro +++ b/pro/sos/sosreduce.pro @@ -1,12 +1,12 @@ ;+ ; NAME: -; aporeduce +; sosreduce ; ; PURPOSE: ; Quick on-the-mountain reduction pipeline for 1 file at a time. ; ; CALLING SEQUENCE: -; aporeduce, filename, [ indir=, outdir=, $ +; sosreduce, filename, [ indir=, outdir=, $ ; plugfile=, plugdir=, minexp=, $ ; copydir=, /no_diskcheck, /no_lock ] ; @@ -51,12 +51,12 @@ ; scp1 does not exist on sos.apo.nmsu.edu, reverted to scp ; ; INTERNAL SUPPORT ROUTINES: -; apo_diskcheck +; sos_diskcheck ; ; PROCEDURES CALLED: -; apo_appendlog -; apo_log2html -; apo_plotsn +; sos_appendlog +; sos_log2html +; sos_plotsn ; djs_filepath() ; fits_wait() ; get_tai @@ -137,7 +137,7 @@ end ;------------------------------------------------------------------------------ ; Check disk space on the input or output disk. -pro apo_diskcheck, dirname +pro sos_diskcheck, dirname if (NOT keyword_set(dirname)) then return @@ -156,12 +156,13 @@ pro apo_diskcheck, dirname return end ;------------------------------------------------------------------------------ -pro aporeduce, filename, indir=indir, outdir=outdir, $ +pro sosreduce, filename, indir=indir, outdir=outdir, $ plugfile=plugfile, plugdir=plugdir, minexp=minexp, nocal=nocal,$ copydir=copydir, no_diskcheck=no_diskcheck, no_lock=no_lock, $ - fps=fps, noreject=noreject, sdssv_sn2=sdssv_sn2 + fps=fps, noreject=noreject, sdssv_sn2=sdssv_sn2, sn2_15=sn2_15,$ + arc2trace=arc2trace, forcea2t=forcea2t if (n_params() LT 1) then begin - doc_library, 'aporeduce' + doc_library, 'sosreduce' return endif @@ -189,7 +190,7 @@ pro aporeduce, filename, indir=indir, outdir=outdir, $ if (n_elements(filename) GT 1) then begin for ifile=0, n_elements(filename)-1 do $ - aporeduce, filename[ifile], indir=indir, outdir=outdir, $ + sosreduce, filename[ifile], indir=indir, outdir=outdir, $ plugfile=plugfile, plugdir=plugdir, minexp=minexp, $ copydir=copydir, no_diskcheck=no_diskcheck, no_lock=no_lock, $ fps=fps, noreject=noreject @@ -221,13 +222,14 @@ pro aporeduce, filename, indir=indir, outdir=outdir, $ return endif + if keyword_set(forcea2t) then arc2trace = 1 ;---------- ; Open the log file to catch WARNINGs and ABORTs. splgfile = filepath('splog-'+filec+'-'+filee+'.log', root_dir=outdir) splog, filename=splgfile, prelog=filename - splog, 'Log file ' + splgfile + ' opened' + systime() + splog, 'Log file ' + splgfile + ' opened ' + systime() t0 = systime(1) splog, 'IDL version: ' + string(!version,format='(99(a," "))') @@ -240,8 +242,8 @@ pro aporeduce, filename, indir=indir, outdir=outdir, $ ; Check disk space on both the input and the output disk. if (NOT keyword_set(no_diskcheck)) then begin - apo_diskcheck, indir - apo_diskcheck, outdir + sos_diskcheck, indir + sos_diskcheck, outdir endif ;---------- @@ -432,6 +434,10 @@ pro aporeduce, filename, indir=indir, outdir=outdir, $ if (flatexist) then begin rstruct = quickwave(fullname, tsetfile_last, wsetfile1, noreject=noreject,$ fflatfile1, lco = lco, do_lock=do_lock, nocal=nocal) + if keyword_set(arc2trace) then begin + setup_arc2trace, tsetfile_last, fflatfile1, fullname, indir, outdir, mjd, camnames[icam], fieldstr + + endif endif else begin splog, 'INFO: Arc exposure, waiting for flat before reducing' endelse @@ -444,9 +450,9 @@ pro aporeduce, filename, indir=indir, outdir=outdir, $ if (camnames[icam] eq 'r1') or (camnames[icam] eq 'r2') then splitsky = 1B else splitsky = 0B if (flatexist AND arcexist AND exptime GE minexp) then begin rstruct = quickextract(tsetfile_last, wsetfile_last, $ - fflatfile_last, fullname, outsci, fullplugfile, outdir,$ + fflatfile_last, fullname, outsci, fullplugfile, outdir, mjd,$ splitsky=splitsky, do_lock=do_lock,threshold=threshold,$ - sdssv_sn2=sdssv_sn2) + sdssv_sn2=sdssv_sn2,sn2_15=sn2_15,arc2trace=arc2trace,forcea2t=forcea2t) endif else begin if (NOT keyword_set(flatexist)) then $ splog, 'ABORT: Unable to reduce this science exposure (need flat)' @@ -548,7 +554,7 @@ pro aporeduce, filename, indir=indir, outdir=outdir, $ if (keyword_set(tstruct) OR keyword_set(rstruct)) then begin splog, 'Appending to FITS log file '+logfile - apo_appendlog, logfile, rstruct, tstruct + sos_appendlog, logfile, rstruct, tstruct splog, 'Done with append' endif @@ -568,7 +574,7 @@ pro aporeduce, filename, indir=indir, outdir=outdir, $ jpegfiletmp1 = filepath('snplot-'+mjdstr+'-'+confstr+'-'+filee+'-'+filec+'.jpeg', root_dir=outdir) jpegfile1 = filepath('snplot-'+mjdstr+'-'+confstr+'-'+filee+'.jpeg', root_dir=outdir) splog, 'Generating S/N plot '+plotfile1 - apo_plotsn, logfile, config, expnum=long(filee), plugdir=plugdir, plotfile=plotfile1, fps=fps + sos_plotsn, logfile, config, expnum=long(filee), plugdir=plugdir, plotfile=plotfile1, fps=fps, ccd=string(camnames[icam]) cmd = '/usr/bin/convert '+plotfile1+' '+jpegfiletmp1+' ; \mv '+jpegfiletmp1+' '+jpegfile1+' &' splog, 'SPAWN '+cmd, sh_out, sh_err spawn, cmd @@ -581,21 +587,50 @@ pro aporeduce, filename, indir=indir, outdir=outdir, $ jpegfile = filepath('snplot-'+mjdstr+'-'+confstr+'.jpeg', root_dir=outdir) jpegfiletmp = filepath('snplot-'+mjdstr+'-'+confstr+'-'+filec+'.jpeg', root_dir=outdir) splog, 'Generating S/N plot '+plotfile - apo_plotsn, logfile, config, plugdir=plugdir, plotfile=plotfile, fps=fps + sos_plotsn, logfile, config, plugdir=plugdir, plotfile=plotfile, fps=fps, ccd=string(camnames[icam]) cmd = '/usr/bin/convert '+plotfile+' '+jpegfiletmp+' ; \mv '+jpegfiletmp+' '+jpegfile+' &' splog, 'SPAWN '+cmd, sh_out, sh_err spawn, cmd splog, 'SPAWN out=', sh_out splog, 'SPAWN err=', sh_err splog, 'Done generating plot' + if keyword_set(sdssv_sn2) then begin ; Generate the added S/N^2 for this one exposure only - plotfile1 = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'-'+filee+'.ps', root_dir=outdir) - jpegfiletmp1 = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'-'+filee+'-'+filec+'.jpeg', root_dir=outdir) - jpegfile1 = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'-'+filee+'.jpeg', root_dir=outdir) + plotfile1_v2 = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'-'+filee+'.ps', root_dir=outdir) + jpegfiletmp1_v2 = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'-'+filee+'-'+filec+'.jpeg', root_dir=outdir) + jpegfile1_v2 = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'-'+filee+'.jpeg', root_dir=outdir) + splog, 'Generating SDSS-V S/N plot '+plotfile1_v2 + sos_plotsn, logfile, config, expnum=long(filee), plugdir=plugdir,$ + plotfile=plotfile1_v2, fps=fps,sdssv_sn2=sdssv_sn2, ccd=string(camnames[icam]) + cmd = '/usr/bin/convert '+plotfile1_v2+' '+jpegfiletmp1_v2+' ; \mv '+jpegfiletmp1_v2+' '+jpegfile1_v2+' &' + splog, 'SPAWN '+cmd, sh_out, sh_err + spawn, cmd + splog, 'SPAWN out=', sh_out + splog, 'SPAWN err=', sh_err + splog, 'Done generating plot' + + ; Generate the added S/N^2 for all exposures on this plate + plotfile_v2 = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'.ps', root_dir=outdir) + jpegfile_v2 = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'.jpeg', root_dir=outdir) + jpegfiletmp_v2 = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'-'+filec+'.jpeg', root_dir=outdir) + splog, 'Generating SDSS-V S/N plot '+plotfile_v2 + sos_plotsn, logfile, config, plugdir=plugdir, plotfile=plotfile_v2, fps=fps,sdssv_sn2=sdssv_sn2, ccd=string(camnames[icam]) + cmd = '/usr/bin/convert '+plotfile_v2+' '+jpegfiletmp_v2+' ; \mv '+jpegfiletmp_v2+' '+jpegfile_v2+' &' + splog, 'SPAWN '+cmd, sh_out, sh_err + spawn, cmd + splog, 'SPAWN out=', sh_out + splog, 'SPAWN err=', sh_err + splog, 'Done generating SDSS-V plot' + endif + if keyword_set(sn2_15) then begin + ; Generate the added S/N^2 for this one exposure only + plotfile1 = filepath('snplot-sdssv15-'+mjdstr+'-'+confstr+'-'+filee+'.ps', root_dir=outdir) + jpegfiletmp1 = filepath('snplot-sdssv15-'+mjdstr+'-'+confstr+'-'+filee+'-'+filec+'.jpeg', root_dir=outdir) + jpegfile1 = filepath('snplot-sdssv15-'+mjdstr+'-'+confstr+'-'+filee+'.jpeg', root_dir=outdir) splog, 'Generating SDSS-V S/N plot '+plotfile1 - apo_plotsn, logfile, config, expnum=long(filee), plugdir=plugdir,$ - plotfile=plotfile1, fps=fps,sdssv_sn2=sdssv_sn2 + sos_plotsn, logfile, config, expnum=long(filee), plugdir=plugdir,$ + plotfile=plotfile1, fps=fps,sn2_15=sn2_15, ccd=string(camnames[icam]) cmd = '/usr/bin/convert '+plotfile1+' '+jpegfiletmp1+' ; \mv '+jpegfiletmp1+' '+jpegfile1+' &' splog, 'SPAWN '+cmd, sh_out, sh_err spawn, cmd @@ -604,22 +639,22 @@ pro aporeduce, filename, indir=indir, outdir=outdir, $ splog, 'Done generating plot' ; Generate the added S/N^2 for all exposures on this plate - plotfile = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'.ps', root_dir=outdir) - jpegfile = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'.jpeg', root_dir=outdir) - jpegfiletmp = filepath('snplot-sdssv-'+mjdstr+'-'+confstr+'-'+filec+'.jpeg', root_dir=outdir) - splog, 'Generating SDSS-V S/N plot '+plotfile - apo_plotsn, logfile, config, plugdir=plugdir, plotfile=plotfile, fps=fps,sdssv_sn2=sdssv_sn2 + plotfile = filepath('snplot-sdssv15-'+mjdstr+'-'+confstr+'.ps', root_dir=outdir) + jpegfile = filepath('snplot-sdssv15-'+mjdstr+'-'+confstr+'.jpeg', root_dir=outdir) + jpegfiletmp = filepath('snplot-sdssv15-'+mjdstr+'-'+confstr+'-'+filec+'.jpeg', root_dir=outdir) + splog, 'Generating SDSS-V Mag 15 S/N plot '+plotfile + sos_plotsn, logfile, config, plugdir=plugdir, plotfile=plotfile, fps=fps,sn2_15=sn2_15, ccd=string(camnames[icam]) cmd = '/usr/bin/convert '+plotfile+' '+jpegfiletmp+' ; \mv '+jpegfiletmp+' '+jpegfile+' &' splog, 'SPAWN '+cmd, sh_out, sh_err spawn, cmd splog, 'SPAWN out=', sh_out splog, 'SPAWN err=', sh_err - splog, 'Done generating SDSS-V plot' + splog, 'Done generating SDSS-V Mag 15 plot' endif endif splog, 'Generating HTML file '+htmlfile - apo_log2html, logfile, htmlfile, fps=fps, sdssv_sn2=sdssv_sn2 + sos_log2html, logfile, htmlfile, fps=fps, sn2_15=sn2_15;, sdssv_sn2=sdssv_sn2 splog, 'Done generating HTML file' ; Generate a copy of the HTML file, 'logsheet-current.html', @@ -635,13 +670,28 @@ pro aporeduce, filename, indir=indir, outdir=outdir, $ spawn, 'sed ' + sedcommand + ' ' + htmlfile + ' > ' + currentfile if (keyword_set(copydir)) then begin + FILE_MKDIR, copydir splog, 'Copying files to ', copydir spawn, 'scp ' + htmlfile + ' ' + copydir spawn, 'scp ' + currentfile + ' ' + copydir - spawn, 'scp ' + logfile + ' ' + copydir - if (keyword_set(plotfile)) then $ - spawn, 'scp ' + plotfile + ' ' + plotfile1 $ - + ' ' + jpegfile + ' ' + jpegfile1 + ' ' + copydir + htmlfile_c = djs_filepath(file_basename(htmlfile), root_dir=copydir) + currentfile_c = djs_filepath(file_basename(currentfile), root_dir=copydir) + + yesterday = strtrim((long(mjd)-1),2) + sedcommand = ' -e "s/Yesterday: ' + htmlfile_c + spawn, 'sed ' + sedcommand + ' ' + currentfile + ' > ' + currentfile_c + + +; spawn, 'scp ' + logfile + ' ' + copydir +; if (keyword_set(plotfile)) then $ +; spawn, 'scp ' + plotfile + ' ' + plotfile1 $ +; + ' ' + jpegfile + ' ' + jpegfile1 + ' ' + copydir +; if (keyword_set(plotfile_v2)) then $ +; spawn, 'scp ' + plotfile_v2 + ' ' + plotfile1_v2 $ +; + ' ' + jpegfile_v2 + ' ' + jpegfile1_v2 + ' ' + copydir splog, 'Done.' endif endif diff --git a/pro/spec1d/.DS_Store b/pro/spec1d/.DS_Store deleted file mode 100644 index 5008ddfcf..000000000 Binary files a/pro/spec1d/.DS_Store and /dev/null differ diff --git a/pro/spec1d/RED b/pro/spec1d/RED deleted file mode 100644 index c376a5084..000000000 --- a/pro/spec1d/RED +++ /dev/null @@ -1,68 +0,0 @@ - -red344 = redindices(344) -red492 = redindices(492) -redall = [red344,red492] - -splot,redall.ew_mg2,redall.modelcolor[0],ps=4 -soplot,redall[i].ew_mg2,redall[i].modelcolor[0],ps=1,color='red',syms=2 - -i344=where(redall.plate EQ 344 AND redall.redsample) -i492=where(redall.plate EQ 492 AND redall.redsample) -i344=where(redall.plate EQ 344) -i492=where(redall.plate EQ 492) - -!p.multi = [0,1,2] -xrange = [0,3] -yrange = [-12,-2] -model_kcorr = redall.modelcolor[0] - 2*redall.z -model_dered = model_kcorr - redall.reddening[0] + redall.reddening[1] -djs_plot,model_kcorr[i344],redall[i344].ew_mg2,ps=1,color='red', $ - xr=xrange,yr=yrange -djs_oplot,model_kcorr[i492],redall[i492].ew_mg2,ps=4 -djs_plot,model_dered[i344],redall[i344].ew_mg2,ps=1,color='red', $ - xr=xrange,yr=yrange -djs_oplot,model_dered[i492],redall[i492].ew_mg2,ps=4 - -;------------------------------------------------------------------------------ -plate = [414,415,416,428,464,453,488,489,491,492] -redall = redindices(plate[0]) -for i=1,n_elements(plate)-1 do redall = [redall, redindices(plate[i])] -save, file='redall.ss' - -restore, 'redall.ss' -i1 = where(redall.reddening[0] LT 0.25 AND redall.redsample) -i2 = where(redall.reddening[0] GT 0.25 AND redall.redsample) -djs_plot,redall[i1].ew_mg2,redall[i1].modelcolor[0],ps=4 -djs_oplot,redall[i2].ew_mg2,redall[i2].modelcolor[0],ps=4,color='red' - -model_kcorr = redall.modelcolor[0] - 2*redall.z -model_dered = model_kcorr - redall.reddening[0] + redall.reddening[1] -!p.multi = [0,1,2] -yrange=[1.0,2.5] -djs_plot,redall[i1].ew_mg2,model_kcorr[i1],ps=1,yr=yrange,/ystyle -djs_oplot,redall[i2].ew_mg2,model_kcorr[i1],ps=1,color='red' -djs_plot,redall[i1].ew_mg2,model_dered[i1],ps=1,yr=yrange,/ystyle -djs_oplot,redall[i2].ew_mg2,model_dered[i1],ps=1,color='red' - -; Find residuals to Mg-color -acoeff = linfit(redall[i1].ew_mg2,model_dered[i1]) -cresid = model_kcorr - (acoeff[0] + acoeff[1] * redall.ew_mg2) -ugpredict = redall.reddening[0] - redall.reddening[1] -j = where(redall.redsample) -!p.multi=0 -djs_plot,ugpredict[j],cresid[j],ps=1, $ - xtitle='SFD (u-g)',ytitle='Residual (u-g)',charsize=2 -djs_oplot, [0,1], [0,1] - -;---------------------- -; Try a dispersion-color relation instead of Mg-color... -i=where(redall.reddening[0] LT 0.25 AND redall.redsample) -acoeff=linfit(redall[i].vdisp,redall[i].modelcolor[0]) -splot,alog10(redall[i].vdisp),redall[i].modelcolor[0],ps=1 -splot,alog10(redall[i].vdisp),redall[i].modelcolor[0] $ -- acoeff[0] - acoeff[1]*alog10(redall[i].vdisp),ps=1 -cresid = redall.modelcolor[0] - (acoeff[0] + acoeff[1] * alog10(redall.vdisp)) -ugpredict = redall.reddening[0] - redall.reddening[1] -j = where(redall.redsample) -splot,ugpredict[j],cresid[j],ps=4 - diff --git a/pro/spec1d/TODO b/pro/spec1d/TODO deleted file mode 100644 index b99de4d7e..000000000 --- a/pro/spec1d/TODO +++ /dev/null @@ -1,27 +0,0 @@ - -* Fix fudge bug fix in TWEAK_GAL code. Also, apodize the ends of the input - spectrum to minimize edge effects, or trim to points common to all test z's. - -* Output synthetic ugriz colors for each object measured from the actual - spectrum and from the synthesized spectrum (allowing u+z to be measured). - -* Some z errors are negative! - -* For PCA_SOLVE, trim to desired wavelength range before solving. - -* For eigenspectra, save a 2nd HDU which is the remaining inverse-variance. - -* Look at the e1/e0, e2,e0 values for the galaxies. - ---------------DONE------------------------------------------------------------- -* Write PLATELIST routine to list reduced plates. - -* For PCA_VSTND, get rid of bad endpoints made with too little data. - -* Final correlation coeff should be computed with same wavelength-range - for template, and masked + apodized the same as the object spectrum. - -* Minimize reduced chi2 instead of chi2 ? - -* Still need to compute errors in redshift, but how? - diff --git a/pro/spec1d/bandpassfilter.pro b/pro/spec1d/bandpassfilter.pro deleted file mode 100644 index d16d530b4..000000000 --- a/pro/spec1d/bandpassfilter.pro +++ /dev/null @@ -1,70 +0,0 @@ -;+ -; NAME: -; bandpassfilter -; -; PURPOSE: -; Apply a bandpass to Fourier-transformed data. -; -; CALLING SEQUENCE: -; newdata = bandpassfilter( datafft, [ klo_cut=, khi_cut= ] ) -; -; INPUTS: -; datafft - Vector of Fourier-transformed data -; -; OPTIONAL KEYWORDS: -; klo_cut - Low-frequency cutoff -; khi_cut - High-frequency cutoff -; -; OUTPUTS: -; newdata - Filtered version of DATAFFT -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Units??? -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 30-Mar-2000 Written by D. Schlegel, APO -;- -;------------------------------------------------------------------------------ -function bandpassfilter, datafft, klo_cut=klo_cut, khi_cut=khi_cut - - if (size(datafft, /n_dimen) NE 1) then $ - message, 'DATAFFT is not 1-dimensional' - - if (NOT keyword_set(klo_cut) AND NOT keyword_set(khi_cut)) then $ - return, datafft - - if (size(datafft, /tname) EQ 'DOUBLE') then PI = !dpi $ - else PI = !pi - - ndata = N_elements(datafft) - knums = fft_wavenums(ndata) - hipass = fltarr(ndata) + 1.0 - lopass = fltarr(ndata) + 1.0 - - if (keyword_set(klo_cut)) then begin - ii = where(abs(knums) LT klo_cut) - if (ii[0] NE -1) then begin - hipass[ii] = 0.5 * (1.0 - cos(PI*abs(knums[ii])/klo_cut)) - endif - endif - - if (keyword_set(khi_cut)) then begin - ii = where(abs(knums) GT khi_cut) - if (ii[0] NE -1) then begin - sep = max(knums) - khi_cut - lopass[ii] = $ - 0.5 * (1.0 - cos(PI*(max(knums) - abs(knums[ii]))/sep)) - endif - endif - - return, datafft * hipass * lopass -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/bin_spectra.pro b/pro/spec1d/bin_spectra.pro deleted file mode 100644 index 6046ddaae..000000000 --- a/pro/spec1d/bin_spectra.pro +++ /dev/null @@ -1,48 +0,0 @@ -;+ -; NAME: -; bin_spectra -; -; PURPOSE: -; Make binned spectra for the purposes of fitting for the -; bandpasses -; -; CALLING SEQUENCE: -; bin_spectra, flux, binbounds -; -; INPUTS: -; flux - flux in a set of spectra [NPIX,NSPEC] -; invvar - inverse variance in a set of spectra [NPIX,NSPEC] -; binbounds - boundaries of desired bins -; -; OPTIONAL INPUTS: -; -; OPTIONAL KEYWORDS: -; -; OUTPUTS: -; binflux - binned flux -; -; COMMENTS: -; Not currently binning the variances. Sorry. -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; -; DATA FILES: -; -; REVISION HISTORY: -; 05-APr-2000 Written by M. Blanton, Fermiland -;- -;------------------------------------------------------------------------------ -pro bin_spectra, flux, invvar, binbounds, binflux=binflux - - for i=0, n_elements(binbounds)-2 do begin - denominator= total(invvar[binbounds[i]:binbounds[i+1]-1,*],1,/double) - denominator= denominator + (denominator LE 0.0) - binflux[i,*]= $ - total((flux*invvar)[binbounds[i]:binbounds[i+1]-1,*],1,/double) / $ - denominator - endfor - -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/bolton_mlpca.pro b/pro/spec1d/bolton_mlpca.pro deleted file mode 100644 index ec09fa7a7..000000000 --- a/pro/spec1d/bolton_mlpca.pro +++ /dev/null @@ -1,110 +0,0 @@ -;+ -; -; NAME: -; bolton_mlpca -; -; PURPOSE: -; Bolton's maximum-likelihood PCA implementation for astronomy -; -; USAGE: -; tempset = bolton_mlpca(objflux=objflux, objivar=objivar [, $ -; nbasis=nbasis , convtest=convtest, maxiter=maxiter, $ -; coeffs=coeffs]) -; -; ARGUMENTS: -; objflux: NPIX x NOBJ array of REST-FRAME ALIGNED object spectra -; objivar: NPIX x NOBJ inverse variance array for objflux -; -; OPTIONAL INPUTS: -; nbasis: number of basis spectra to compute (default is 5) -; convtest: convergence param. to test for completion (default 1.d-10) -; maxiter: maximum number of iterations (default is 10000) -; -; RETURNS: -; tempset: an NPIX x NBASIS array of object template basis spectra -; coeffs: the best-fit coeffs of the input pectrum sample, -; such that tempset # coeffs gives the minimum chi2 model -; describing objflux -; -; WRITTEN: -; A. Bolton, U. of Utah, 2010 May -; -; COMMENTS: -; Implements the iterative Maximum-Likelihood PCA algorithm -; (no intercepts, uncorrelated errors) described by -; Wentzell et al. 1997, Journal of Chemometrics, 11, 339 -; -;- - -function bolton_mlpca, objflux=objflux, objivar=objivar, $ - nbasis=nbasis, convtest=convtest, maxiter=maxiter, coeffs=coeffs - -; Defaults: -if (not keyword_set(nbasis)) then nbasis = 5L -if (not keyword_set(convtest)) then convtest = 1.d-10 -if (not keyword_set(maxiter)) then maxiter = 10000 - -; Transpose and double-precisionize the data. -; Transposition is done to make these look right as matrices -; to the singular-value decompositon routines. -data = double(transpose(objflux)) -ivar = double(transpose(objivar)) -; Zero out zero-ivar pixels: -data = data * (ivar gt 0.d0) - -; For convenience: -nobj = (size(data))[1] -npix = (size(data))[2] -b_ones = replicate(1.d0, nbasis) -coeffs = replicate(0.d0, nbasis, nobj) -; The following assignment seeds the iterative process: -model = data - -niter = 0L -convergence_param = 1.d12 -while ((convergence_param gt convtest) and (niter lt maxiter)) do begin - niter++ - -; Truncated SVD in the object space: - la_svd, model, w, u, v, /double - vhat = v[0:nbasis-1,*] - -; Loop over pixels to find ML model: - for i = 0L, npix-1 do begin - ivhat = vhat * (b_ones # ivar[*,i]) - ialpha = ivhat # transpose(vhat) - alpha = invert(ialpha) - beta = ivhat # data[*,i] - model[*,i] = transpose(vhat) # (alpha # beta) - endfor - - chisq1 = total((data - model)^2 * ivar) - -; Truncated SVD in the pixel space: - la_svd, transpose(model), w, u, v, /double - vhat = v[0:nbasis-1,*] - -; Loop over objects to find ML model: - for i = 0, nobj-1 do begin - ivhat = vhat * (b_ones # ivar[i,*]) - ialpha = ivhat # transpose(vhat) - alpha = invert(ialpha) - beta = ivhat # transpose(data[i,*]) - coeffs[*,i] = alpha # beta -; model[i,*] = transpose(vhat) # (alpha # beta) - endfor - model = transpose(coeffs) # vhat - - chisq2 = total((data - model)^2 * ivar) - convergence_param = (chisq1 - chisq2) / chisq2 - print, niter, chisq2, convergence_param -endwhile - -; Tidy up by making all the basis functions non-negative: -vtot = total(vhat, 2) -signflip = double(1L - 2L * long(vtot lt 0.d0)) -vhat = vhat * (signflip # replicate(1.d0, npix)) -coeffs = coeffs * (signflip # replicate(1.d0, nobj)) - -return, transpose(vhat) -end diff --git a/pro/spec1d/bolton_mlpca_demo.pro b/pro/spec1d/bolton_mlpca_demo.pro deleted file mode 100644 index 23e5320de..000000000 --- a/pro/spec1d/bolton_mlpca_demo.pro +++ /dev/null @@ -1,95 +0,0 @@ -; -; bolton_mlpca_demo -; -; Demonstrator script for Bolton's ML-PCA EigenGal implementation. -; -; bolton@utah 2010may07 -; - -; Require the following, because that's what I've vetted this on: -setenv, 'RUN2D=v5_4_9' -setenv, 'RUN1D=v5_4_9' - -; The uber-deep plate: -plate = 3851 -mjd = 55298 - -; Get all sensible galaxies: -readspec, plate, mjd=mjd, zans=zans -nobj = n_elements(zans) -useit = replicate(1B, nobj) -; Things to mask following inspection, as detailed above: -maskid = [119,149,151,152,248,315,426,431,433]-1 -useit[maskid] = 0B -idx = where(useit and (strtrim(zans.objtype,2) eq 'GALAXY') $ - and (strtrim(zans.class,2) eq 'GALAXY'), ngal) -zans = zans[idx] - -readspec, plate, zans.fiberid, mjd=mjd, flux=flux, synflux=synflux, $ - loglam=loglam, zans=zans, wave=wave, invvar=invvar, tsobj=tsobj, /align - -; Get everthing aligned in rest-frame wavelength: -npix = (size(flux))[1] -dloglam = loglam[1] - loglam[0] -pixshift = round(alog10(1. + zans.z) / dloglam) -mp = max(pixshift) -totalpix = npix + mp -rest_flux = replicate(0., totalpix, ngal) -rest_ivar = replicate(0., totalpix, ngal) -rest_synflux = replicate(0., totalpix, ngal) - -for i = 0L, ngal-1 do begin & $ - rest_flux[mp-pixshift[i]:mp-pixshift[i]+npix-1,i] = flux[*,i] & $ - rest_ivar[mp-pixshift[i]:mp-pixshift[i]+npix-1,i] = invvar[*,i] & $ - rest_synflux[mp-pixshift[i]:mp-pixshift[i]+npix-1,i] = synflux[*,i] & $ -endfor - -; Make the rest-frame loglam baseline: -loglam0_rest = loglam[0] - mp * dloglam -loglam_rest = loglam0_rest + dloglam * findgen(totalpix) - -; Impose a minimum chi^2 cut on the extreme ends -; (somewhat arbitrarily set at "one sigma" of info per galaxy): -chi2vec = total(rest_flux^2 * rest_ivar, 2) -chi2filt = median(chi2vec, 15) -chi2min = float(ngal) -irange = minmax(where(chi2filt ge chi2min)) -rest_flux = rest_flux[irange[0]:irange[1],*] -rest_ivar = rest_ivar[irange[0]:irange[1],*] -rest_synflux = rest_synflux[irange[0]:irange[1],*] -loglam_rest = loglam_rest[irange[0]:irange[1]] -totalpix = n_elements(loglam_rest) - -; Cut it down again -- not enough galaxies covering -; the highest rest wavelengths in this sample. -; Including those sparsely covered ranges makes the -; algorithm go unstable. -; -; We can fix this with inclusion of more low-z galaxies. -p_lo = 0 -p_hi = 4799 -rest_flux = rest_flux[p_lo:p_hi,*] -rest_synflux = rest_synflux[p_lo:p_hi,*] -rest_ivar = rest_ivar[p_lo:p_hi,*] -loglam_rest = loglam_rest[p_lo:p_hi] - -galtempset = bolton_mlpca(objflux=rest_flux, objivar=rest_ivar, coeffs=coeffs) - -; Check these out: -modflux = galtempset # coeffs -i = -1L - -; Up-arrow repeat: -i++ & splot, 10.^loglam_rest, rest_flux[*,i], yrange=[-1.,7.] & soplot, 10.^loglam_rest, modflux[*,i], color=3 - -; Copied from pca_gal: -get_juldate, jd -mjdstr = STRING(LONG(jd-2400000L), FORMAT='(I5)') -outfile = 'spMlpcaGal-' + mjdstr + '.fits' -sxaddpar, hdr, 'OBJECT', 'GALAXY' -sxaddpar, hdr, 'COEFF0', 10.^loglam_rest[0] -sxaddpar, hdr, 'COEFF1', dloglam -sxaddpar, hdr, 'IDLUTILS', idlutils_version(), 'Version of idlutils' -sxaddpar, hdr, 'SPEC2D', idlspec2d_version(), 'Version of idlspec2d' -mwrfits, galtempset, outfile, hdr, /create - diff --git a/pro/spec1d/catplot.pro b/pro/spec1d/catplot.pro deleted file mode 100644 index 233d919e1..000000000 --- a/pro/spec1d/catplot.pro +++ /dev/null @@ -1,1909 +0,0 @@ -;+ -; NAME: -; catplot -; -; PURPOSE: -; Modified version of SPLOT by Tremonti for inspecting spectra. -; -; CALLING SEQUENCE: -; catplot, [x], y, $ -; [color=, psym=, symsize=, thick= ] -; -; soplot, [x], y, [/autoscale], $ -; [color=, psym=, symsize=, thick= ] -; -; sxyouts, x, y, string, [alignment=, charsize=, charthick=, color=, $ -; font=, orientation= ] -; -; serase, [nerase, /norefresh] -; -; INPUTS: -; -; OUTPUT: -; -; COMMENTS: -; This code is based upon Aaron Barth's ATV procedure. -; -; SpInspect added to menu bar. "Open SpInspect File" brings up a -; dialogue box. The spInspect File must have the format -; spInspect-pppp-mmmmm-inspector.par. Upon loading this file, plotspec -; is called to loop through the fibers on the specified plate. No -; changes are written to the spInspect File until "Update SpInspect File" -; is selected from the menu bar. -; -; EXAMPLES: -; -; BUGS: -; Doesn't use the passed XRANGE, YRANGE properly yet... -; Move around widgets to be more compact above plotting window. -; Write splot_readfits. -; Make POSITION= changeable based upon CHARSIZE. -; Gaussian fitting or integrated gaussian fitting. -; Allow one to step through an image row at a time? Or link to ATV? -; Use the WCS in splot_gettrack. -; Add widget button option to fix Y range or let it float, or fix YMIN=0. -; Include options for plotting contours, etc? -; Options for XLOG, YLOG -; For FITS files, take XTITLE, YTITLE from header -; Option to pass header as param in SPLOT -; SpInspect only reads the 1st of semi-colon separated variables in -; the manual_comments field. (Writes them just fine!) -; -; PROCEDURES CALLED: -; fits_read -; -; INTERNAL SUPPORT ROUTINES: -; splot_gausspix -; splot_startup -; splot_clearkeylist -; splot_displayall -; splot_readfits -; splot_writeeps -; splot_cleartext -; splot_zoom -; splot_gettrack -; splot_event -; splot_shutdown -; splot_resize -; splot_icolor() -; splot_setheader -; splot_headinfo -; splot_headinfo_event -; splot_plot1plot -; splot_plot1text -; splot_plotwindow -; splot_plotall -; sxyouts -; splot_move_cursor -; splot_set_minmax -; splot_get_minmax -; splot_refresh -; splot_help -; splot_help_event -; splot_plotparam_refresh -; splot_plotparam -; splot_plotparam_event -; serase -; splot_autoscale -; soplot -; splot -; splot_spinspect_new -; splot_spinspect_update -; splot_spinspect_event -; splot_spinspect -; -; REVISION HISTORY: -; 28-Sep-1999 Written by David Schlegel, Princeton. -; 19-Jun-2001 Gaussfit amplitude was wrong - fixed - D. Finkbeiner -; 17-Jun-2002 Added spInspect procedures - C. Tremonti -; Modified splot_startup, splot_events -;- -;------------------------------------------------------------------------------ -; Routine to evaluate a gaussian function integrated over a pixel of width 1, -; plus any number of polynomial terms for a background level -; A[0] = center of the Gaussian -; A[1] = sigma width of the Ith Gaussian -; A[2] = normalization of the Gaussian -; A[3...] = polynomial coefficients for background terms -; 19 June 2001 factor of sqrt(2*!pi) added to make amplitude correct - DPF - -pro splot_gausspix, x, a, f, pder - - ncoeff = N_elements(a) - fac = size(a, /tname) EQ 'DOUBLE' ? sqrt(2. * !dpi) : sqrt(2. * !pi) - f = (fac * a[2] * a[1]) * $ - (gaussint((x+0.5-a[0])/a[1]) -gaussint((x-0.5-a[0])/a[1])) - - if (ncoeff GT 3) then begin - f = f + poly(x, a[3:ncoeff-1]) - endif - - return -end - -;------------------------------------------------------------------------------ - -pro splot_startup - - common splot_state, state, graphkeys - common splot_images, main_image - common splot_pdata, nplot, maxplot, plot_ptr - common splot_wcs, astr, equinox - - keylist = { key:' ', x:0.0, y:0.0 } - - state = { $ - version: '0.9' , $ ; Version number of this release - head_ptr: ptr_new() , $ ; Pointer to FITS image header - imagename: '' , $ ; FITS image file name - base_id: 0L , $ ; ID of top-level base - base_min_size: [600L, 400L] , $ ; Min size for top-level base - draw_base_id: 0L , $ ; ID of base holding draw window - draw_window_id: 0L , $ ; Window ID of draw window - draw_widget_id: 0L , $ ; Widget ID of draw widget - location_bar_id: 0L , $ ; ID of (x,y) label - wcs_bar_id: 0L , $ ; ID of WCS label - xmin_text_id: 0L , $ ; ID of XMIN= widget - xmax_text_id: 0L , $ ; ID of XMAX= widget - ymin_text_id: 0L , $ ; ID of YMIN= widget - ymax_text_id: 0L , $ ; ID of YMAX= widget - comments_text_id: 0L , $ ; ID of comments output widget - keyboard_text_id: 0L , $ ; ID of keyboard input widget - nkey: 0 , $ ; Number of elements in keylist - keylist: replicate(keylist,5) , $ ; Record of keystrokes + cursor in plot - xrange: [0.0,1.0] , $ ; X range of plot window - yrange: [0.0,1.0] , $ ; Y range of plot window - xfix: 'float' , $ ; 0=fix, 1=float - yfix: 'fix' , $ ; 0=fix, 1=float - position: [0.15,0.15,0.95,0.95], $ ; POSITION for PLOT procedure - draw_window_size: [650L, 512L] , $ ; Size of main draw window - menu_ids: lonarr(25) , $ ; List of top menu items - mouse: [0L, 0L] , $ ; Cursor position in device coords - mphys: [0.0, 0.0] , $ ; Cursor position in data coordinates - base_pad: [0L, 0L] , $ ; Padding around draw base - pad: [0L, 0L] , $ ; Padding around draw widget - headinfo_base_id: 0L , $ ; headinfo base widget id - plotparam_base_id: 0L , $ ; plotting parameter base widget id - spinspect_base_id: 0L $ ; plotting parameter base widget id - } - -; Trim this list for the time being... ??? -; How to deal with elements that are arrays? -; graphlist = ['BACKGROUND', 'CHARSIZE', 'XCHARSIZE', 'YCHARSIZE', $ -; 'CHARTHICK', 'CLIP', 'COLOR', 'FONT', 'XGRIDSTYLE', 'YGRIDSTYLE', $ -; 'LINESTYLE', 'XMARGIN', 'YMARGIN', 'XMINOR', 'YMINOR', 'NOCLIP', $ -; 'NORMAL', 'ORIENTATION', 'POSITION', 'PSYM', 'XSTYLE', 'YSTYLE', $ -; 'SUBTITLE', 'SYMSIZE', 'THICK', 'XTHICK', 'YTHICK', $ -; 'XTICKFORMAT', 'YTICKFORMAT', 'TICKLEN', 'XTICKLEN', 'YTICKLEN', $ -; 'XTICKNAME', 'YTICKNAME', 'XTICKS', 'YTICKS', 'XTICKV', 'YTICKV', $ -; 'TITLE', 'XTITLE', 'YTITLE'] - graphlist = ['CHARSIZE', 'XCHARSIZE', 'YCHARSIZE', $ - 'CHARTHICK', 'XGRIDSTYLE', 'YGRIDSTYLE', $ - 'LINESTYLE', 'XMINOR', 'YMINOR', $ - 'PSYM', 'XSTYLE', 'YSTYLE', $ - 'SYMSIZE', 'THICK', 'XTHICK', 'YTHICK', $ - 'TITLE', 'XTITLE', 'YTITLE'] - graphkeys = $ - replicate( { box_id: 0L, $ - keyword: '', value: ptr_new() }, N_elements(graphlist) ) - graphkeys.keyword = graphlist - - - nplot = 0 - maxplot = 5000 - plot_ptr = ptrarr(maxplot) - - ; Load a simple color table with the basic 8 colors - red = [0, 1, 0, 0, 0, 1, 1, 1] - green = [0, 0, 1, 0, 1, 0, 1, 1] - blue = [0, 0, 0, 1, 1, 1, 0, 1] - tvlct, 255*red, 255*green, 255*blue - - ; Define the widgets. For the widgets that need to be modified later - ; on, save their widget ID's in state variables - - base = widget_base(title = 'splot', $ - /column, /base_align_right, app_mbar = top_menu, $ - uvalue = 'splot_base', /tlb_size_events) - state.base_id = base - - tmp_struct = {cw_pdmenu_s, flags:0, name:''} - top_menu_desc = [ $ - {cw_pdmenu_s, 1, 'File'}, $ ; file menu - {cw_pdmenu_s, 0, 'ReadFits'}, $ - {cw_pdmenu_s, 0, 'WriteEPS'}, $ - {cw_pdmenu_s, 2, 'Quit'}, $ - {cw_pdmenu_s, 1, 'Erase'}, $ ; erase menu - {cw_pdmenu_s, 0, 'EraseLast'}, $ - {cw_pdmenu_s, 0, 'EraseAllButFirst'}, $ - {cw_pdmenu_s, 2, 'EraseAll'}, $ - {cw_pdmenu_s, 1, 'ImageInfo'}, $ ; info menu - {cw_pdmenu_s, 2, 'ImageHeader'}, $ - {cw_pdmenu_s, 1, 'Plot'}, $ ; plot menu - {cw_pdmenu_s, 2, 'PlotParams'}, $ - {cw_pdmenu_s, 1, 'SpInspect'}, $ ; spInspect menu - {cw_pdmenu_s, 0, 'Open SpInspect File'}, $ - {cw_pdmenu_s, 2, 'Update SpInspect File'}, $ - {cw_pdmenu_s, 1, 'Help'}, $ ; help menu - {cw_pdmenu_s, 2, 'SPLOT Help'} $ - ] - - top_menu = cw_pdmenu(top_menu, top_menu_desc, $ - ids = state.menu_ids, $ - /mbar, $ - /help, $ - /return_id, $ - uvalue = 'top_menu') - - - button_base1 = widget_base(base, /row, /base_align_right) - button_base2 = widget_base(base, /row, /base_align_right) - button_base3 = widget_base(base, /row, /base_align_right) - - - state.xmin_text_id = cw_field(button_base1, $ - uvalue = 'xmin_text', /float, $ - title = 'XMIN=', $ - value = string(state.xrange[0]), $ - /return_events, $ - xsize = 12) - - state.xmax_text_id = cw_field(button_base1, $ - uvalue = 'xmax_text', /float, $ - title = 'XMAX=', $ - value = string(state.xrange[1]), $ - /return_events, $ - xsize = 12) - - fixlist = ['Fix', 'Float'] - mode_droplist_id = widget_droplist(button_base1, $ - title = '', $ - uvalue = 'xfix', $ - value = fixlist) - - state.ymin_text_id = cw_field(button_base2, $ - uvalue = 'ymin_text', /float, $ - title = 'YMIN=', $ - value = string(state.yrange[0]), $ - /return_events, $ - xsize = 12) - - state.ymax_text_id = cw_field(button_base2, $ - uvalue = 'ymax_text', /float, $ - title = 'YMAX=', $ - value = string(state.xrange[1]), $ - /return_events, $ - xsize = 12) - - fixlist = ['Fix', 'Float'] - mode_droplist_id = widget_droplist(button_base2, $ - title = '', $ - uvalue = 'yfix', $ - value = fixlist) - - tmp_string = string('',format='(a30)') - state.location_bar_id = widget_label(button_base1, $ - value = tmp_string, $ - uvalue = 'location_bar', frame=1) - - tmp_string = string('',format='(a30)') - state.wcs_bar_id = widget_label(button_base2, $ - value = tmp_string, $ - uvalue = 'wcs_bar', frame=1) - - state.comments_text_id = widget_label(button_base3, $ -; value = '', $ - value = tmp_string, $ - uvalue='comments_text', $ - xsize=state.draw_window_size[0]-90, frame=1) - - zoomone_button = widget_button(button_base3, $ - value = 'Zoom1', $ - uvalue = 'zoom_one') - - done_button = widget_button(button_base3, $ - value = 'Done', $ - uvalue = 'done') - - state.keyboard_text_id = widget_text(button_base3, $ - /all_events, $ - scr_xsize = 1, $ - scr_ysize = 1, $ - units = 0, $ - uvalue = 'keyboard_text', $ - value = '') - - state.draw_base_id = widget_base(base, $ - /column, /base_align_left, $ - /tracking_events, $ - uvalue = 'draw_base', $ - frame = 2) - - state.draw_widget_id = widget_draw(state.draw_base_id, $ - uvalue = 'draw_window', $ - /motion_events, /button_events, $ - scr_xsize = state.draw_window_size[0], $ - scr_ysize = state.draw_window_size[1]) - - ; Create the widgets on screen - widget_control, base, /realize - - widget_control, state.draw_widget_id, get_value = tmp_value - state.draw_window_id = tmp_value - - ; Find window padding sizes needed for resizing routines. - ; Add extra padding for menu bar, since this isn't included in - ; the geometry returned by widget_info. - ; Also add extra padding for margin (frame) in draw base. - - basegeom = widget_info(state.base_id, /geometry) - drawbasegeom = widget_info(state.draw_base_id, /geometry) - state.pad[0] = basegeom.xsize - state.draw_window_size[0] - state.pad[1] = basegeom.ysize - state.draw_window_size[1] + 30 - state.base_pad[0] = basegeom.xsize - drawbasegeom.xsize $ - + (2 * basegeom.margin) - state.base_pad[1] = basegeom.ysize - drawbasegeom.ysize + 30 $ - + (2 * basegeom.margin) - - xmanager, 'splot', state.base_id, /no_block - - return -end - -;------------------------------------------------------------------------------ - -pro splot_clearkeylist - - common splot_state - - state.nkey = 0 - state.keylist.key = ' ' - state.keylist.x = 0.0 - state.keylist.y = 0.0 - - return -end - -;------------------------------------------------------------------------------ - -pro splot_displayall - splot_refresh - return -end - -;------------------------------------------------------------------------------ - -pro splot_readfits -; ??? - - return -end - -;------------------------------------------------------------------------------ - -pro splot_writeeps - - common splot_state - - widget_control, /hourglass - - filename = dialog_pickfile(filter = '*.eps', $ - file = 'splot.eps', $ - group = state.base_id, $ - /write) - tmp_result = findfile(filename, count = nfiles) - - result = '' - if (nfiles GT 0 and filename NE '') then begin - mesg = strarr(2) - mesg[0] = 'Overwrite existing file:' - tmp_string = strmid(filename, strpos(filename, '/', /reverse_search) + 1) - mesg[1] = strcompress(tmp_string + '?', /remove_all) - result = dialog_message(mesg, $ - /default_no, $ - dialog_parent = state.base_id, $ - /question) - endif - - if ((nfiles EQ 0 OR result EQ 'Yes') AND filename NE '') then begin - - screen_device = !d.name - wset, state.draw_window_id - - aspect_ratio = $ - state.draw_window_size[1] / float(state.draw_window_size[0]) - - set_plot, 'ps' - device, $ - filename = filename, $ - /color, $ - bits_per_pixel = 8, $ -; /encapsul, $ - encapsul=0, $ - /inches, $ - xsize = 6.0, $ - ysize = 6.0 * aspect_ratio - - splot_plotall - - device, /close - set_plot, screen_device - endif - - splot_cleartext - - return -end - -;------------------------------------------------------------------------------ - -pro splot_cleartext - - ; Routine to clear the widget for keyboard input when the mouse is in - ; the text window. This de-allocates the input focus from the text - ; input widget. - - common splot_state - - widget_control, state.draw_base_id, /clear_events - widget_control, state.keyboard_text_id, set_value = '' - - return -end - -;------------------------------------------------------------------------------ - -pro splot_zoom, zchange, recenter = recenter - - common splot_state - - ; Routine to do zoom in/out and recentering of image - - case zchange of - 'in': begin - state.xrange = state.mphys[0] $ - + [-0.25, 0.25] * (state.xrange[1] - state.xrange[0]) - if (state.yfix EQ 'float') then splot_autoscale_y - end - 'out': begin - state.xrange = state.mphys[0] $ - + [-1.0, 1.0] * (state.xrange[1] - state.xrange[0]) - if (state.yfix EQ 'float') then splot_autoscale_y - end - 'one': begin - splot_autoscale_x - splot_autoscale_y - end - 'none': begin ; no change to zoom level: recenter on current mouse pos'n - state.xrange = state.mphys[0] $ - + [-0.5, 0.5] * (state.xrange[1] - state.xrange[0]) - end - else: print, 'Problem in splot_zoom!' - endcase - - splot_set_minmax - splot_refresh - - return -end - -;------------------------------------------------------------------------------ - -pro splot_gettrack - - common splot_state - common splot_wcs - - ; Update location bar with x, y - - xphysize = state.xrange[1] - state.xrange[0] - xdevsize = state.draw_window_size[0] $ - * (state.position[2] - state.position[0]) - xdev0 = state.draw_window_size[0] * state.position[0] - state.mphys[0] = $ - (state.mouse[0] - xdev0) * xphysize / xdevsize + state.xrange[0] - - yphysize = state.yrange[1] - state.yrange[0] - ydevsize = state.draw_window_size[1] $ - * (state.position[3] - state.position[1]) - ydev0 = state.draw_window_size[1] * state.position[1] - state.mphys[1] = $ - (state.mouse[1] - ydev0) * yphysize / ydevsize + state.yrange[0] - - loc_string = strcompress( string(state.mphys[0], state.mphys[1]) ) - - widget_control, state.location_bar_id, set_value=loc_string - - return -end - -;------------------------------------------------------------------------------ - -pro splot_event, event - - ; Main event loop for SPLOT widgets - - common splot_state - common splot_pdata - common splot_spinspect_state, spinspect_state, pdata, yanny_structs, $ - yanny_hdr - - widget_control, event.id, get_uvalue=uvalue - - case uvalue of - 'splot_base': begin ; main window resize: preserve display range - splot_resize, event - splot_refresh - splot_cleartext - end - - 'xfix': case event.index of - 0: state.xfix = 'fix' - 1: state.xfix = 'float' - else: print, 'Unknown selection!' - endcase - - 'yfix': case event.index of - 0: state.yfix = 'fix' - 1: state.yfix = 'float' - else: print, 'Unknown selection!' - endcase - - 'top_menu': begin ; selection from menu bar - widget_control, event.value, get_value = event_name - - case event_name of - - ; File menu options: - 'ReadFits' : splot_readfits - 'WriteEPS' : splot_writeeps - 'Quit' : splot_shutdown - - ; Erase options: - 'EraseLast' : if (nplot GE 1) then serase, 1 - 'EraseAllButFirst' : if (nplot GE 1) then serase, nplot-1 - 'EraseAll' : serase - - ; Info options: - 'ImageHeader': splot_headinfo - - ; Plot options: - 'PlotParams': splot_plotparam - - ; SpInspect options: - 'Open SpInspect File': splot_spinspect - 'Update SpInspect File': begin - widget_control, spinspect_state.spinspect_file_text_id, $ - get_value = filename - print, 'Writing file ' + filename - yanny_write, filename, pdata, structs = yanny_structs, $ - hdr = yanny_hdr - end - - ; Help options: - 'SPLOT Help': splot_help - - else: print, 'Unknown event in file menu!' - endcase - - end ; end of file menu options - - ; If the mouse enters the main draw base, set the input focus to - ; the invisible text widget, for keyboard input. - ; When the mouse leaves the main draw base, de-allocate the input - ; focus by setting the text widget value. - - 'draw_base': begin - case event.enter of - 0: begin - widget_control, state.keyboard_text_id, set_value = '' - end - 1: begin - widget_control, state.keyboard_text_id, /input_focus - end - endcase - end - - 'draw_window': begin ; mouse movement or button press - - if (event.type EQ 2) then begin ; motion event - tmp_event = [event.x, event.y] - state.mouse = tmp_event - splot_gettrack - endif - - if (event.type EQ 0) then begin - case event.press of - 1: splot_zoom, 'in', /recenter - 2: splot_zoom, 'none', /recenter - 4: splot_zoom, 'out', /recenter - else: print, 'trouble in splot_event, mouse zoom' - endcase - endif - - widget_control, state.keyboard_text_id, /input_focus - - end - - 'xmin_text': begin ; text entry in 'XMIN= ' box - splot_get_minmax, uvalue, event.value - splot_displayall - end - - 'xmax_text': begin ; text entry in 'XMAX= ' box - splot_get_minmax, uvalue, event.value - splot_displayall - end - - 'ymin_text': begin ; text entry in 'YMIN= ' box - splot_get_minmax, uvalue, event.value - splot_displayall - end - - 'ymax_text': begin ; text entry in 'YMAX= ' box - splot_get_minmax, uvalue, event.value - splot_displayall - end - - 'keyboard_text': begin ; keyboard input with mouse in display window - eventchar = string(event.ch) - - if (state.nkey LT N_elements(state.keylist)) then begin - state.keylist[state.nkey].key = eventchar - state.keylist[state.nkey].x = state.mphys[0] - state.keylist[state.nkey].y = state.mphys[1] - state.nkey = state.nkey + 1 - endif else begin - splot_clearkeylist - endelse - - case eventchar of - '1': splot_move_cursor, eventchar - '2': splot_move_cursor, eventchar - '3': splot_move_cursor, eventchar - '4': splot_move_cursor, eventchar - '6': splot_move_cursor, eventchar - '7': splot_move_cursor, eventchar - '8': splot_move_cursor, eventchar - '9': splot_move_cursor, eventchar - 'g': splot_gaussfit - else: ;any other key press does nothing - endcase - widget_control, state.keyboard_text_id, /clear_events - end - - 'zoom_one': splot_zoom, 'one' - - 'done': splot_shutdown - - else: print, 'No match for uvalue....' ; bad news if this happens - - endcase - - return -end - -;------------------------------------------------------------------------------ - -pro splot_shutdown - - ; Routine to kill the splot window(s) and clear variables to conserve - ; memory when quitting splot. Since we can't delvar the splot internal - ; variables, just set them equal to zero so they don't take up a lot - ; of space. Also clear the state and the color map vectors. - - common splot_state - common splot_images - common splot_pdata - - if (xregistered ('splot')) then begin - widget_control, state.base_id, /destroy - endif - - if (nplot GT 0) then begin - serase, /norefresh - plot_ptr = 0 - endif - - if (size(state, /tname) EQ 'STRUCT') then begin - if (size(state.head_ptr, /tname) EQ 'POINTER') then $ - ptr_free, state.head_ptr - main_image = 0 - state = 0 - endif - - return -end - -;------------------------------------------------------------------------------ - -pro splot_resize, event - - ; Routine to resize the draw window when a top-level resize event occurs. - - common splot_state - - tmp_event = [event.x, event.y] - - window = (state.base_min_size > tmp_event) - - newbase = window - state.base_pad - - newsize = window - state.pad - - widget_control, state.draw_base_id, $ - xsize = newbase[0], ysize = newbase[1] - widget_control, state.draw_widget_id, $ - xsize = newsize[0], ysize = newsize[1] - - state.draw_window_size = newsize - - return -end - -;------------------------------------------------------------------------------ - -function splot_icolor, color - - if (n_elements(color) EQ 0) then color='default' - - ncolor = N_elements(color) - - ; If COLOR is a string or array of strings, then convert color names - ; to integer values - if (size(color,/tname) EQ 'STRING') then begin ; Test if COLOR is a string - - ; Detemine the default color for the current device - if (!d.name EQ 'X') then defcolor = 7 $ ; white for X-windows - else defcolor = 0 ; black otherwise - - icolor = 0 * (color EQ 'black') $ - + 1 * (color EQ 'red') $ - + 2 * (color EQ 'green') $ - + 3 * (color EQ 'blue') $ - + 4 * (color EQ 'cyan') $ - + 5 * (color EQ 'magenta') $ - + 6 * (color EQ 'yellow') $ - + 7 * (color EQ 'white') $ - + defcolor * (color EQ 'default') - - if (!d.N_colors EQ 16777216) then begin - red = [0, 1, 0, 0, 0, 1, 1, 1] - green = [0, 0, 1, 0, 1, 0, 1, 1] - blue = [0, 0, 0, 1, 1, 1, 0, 1] - colors = 255L*red + ishft(255L*green,8) + ishft(255L*blue,16) - icolor = colors[icolor] - endif - - endif else begin - icolor = long(color) - endelse - - return, icolor -end - -;------------------------------------------------------------------------------ - -pro splot_setheader, head - - ; Routine to set the image header using a pointer to a - ; heap variable. If there is no header (i.e. if SPLOT has just been - ; passed a data array rather than a filename), then make the - ; header pointer a null pointer. - ; The reason for doing it this way is that we don't know in advance - ; how many lines the header will have, so we can't just save the - ; header itself as an array in the state structure. So instead, - ; save a pointer to the header in the state structure. - - common splot_state - common splot_wcs - - ; Kill the header info window when a new image is read in - - if (xregistered('splot_headinfo')) then begin - widget_control, state.headinfo_base_id, /destroy - endif - - if (n_elements(head) GT 1) then begin - ptr_free, state.head_ptr - state.head_ptr = ptr_new(head) - - ; Get astrometry information from header, if it exists - extast, head, astr, noparams - if (noparams EQ -1) then astr = 0 - - equ = get_equinox(head, code) - if (code EQ -1) then begin - astr = 0 - equinox = 'J2000' - endif else begin - if (equ EQ 2000.0) then equinox = 'J2000' - if (equ EQ 1950.0) then equinox = 'B1950' - if (equ NE 2000.0 and equ NE 1950.0) then $ - equinox = string(equ, format = '(f6.4)') - endelse - - endif else begin - ; If there's no image header... - ptr_free, state.head_ptr - state.head_ptr = ptr_new() - astr = 0 - - widget_control, state.wcs_bar_id, set_value = $ - '---No WCS Info---' - endelse - - return -end - -;------------------------------------------------------------------------------ - -pro splot_headinfo - - common splot_state - - ; If there's no header, kill the headinfo window and exit this routine. - if (NOT ptr_valid(state.head_ptr)) then begin - if (xregistered('splot_headinfo')) then begin - widget_control, state.headinfo_base_id, /destroy - endif - - mesg = 'No header information available for this image!' - junk = dialog_message(mesg, /error, $ - dialog_parent = state.base_id) - return - endif - - ; If there is header information but not headinfo window, - ; create the headinfo window. - if (NOT xregistered('splot_headinfo')) then begin - - headinfo_base = $ - widget_base(/floating, $ - /base_align_right, $ - group_leader = state.base_id, $ - /column, $ - title = 'SPLOT image header information', $ - uvalue = 'headinfo_base') - state.headinfo_base_id = headinfo_base - - h = *(state.head_ptr) - - headinfo_text = widget_text(headinfo_base, $ - /scroll, $ - value = h, $ - xsize = 85, $ - ysize = 24) - - headinfo_done = widget_button(headinfo_base, $ - value = 'Done', $ - uvalue = 'headinfo_done') - - widget_control, headinfo_base, /realize - xmanager, 'splot_headinfo', headinfo_base, /no_block - - endif - - return -end - -;------------------------------------------------------------------------------ - -pro splot_headinfo_event, event - - common splot_state - - widget_control, event.id, get_uvalue=uvalue - - case uvalue of - 'headinfo_done': widget_control, event.top, /destroy - else: - endcase - - return -end - -;------------------------------------------------------------------------------ - -pro splot_plot1plot, iplot - - common splot_state - common splot_pdata - - widget_control, /hourglass - - ; Convert color names to index numbers - options = (*(plot_ptr[iplot])).options - c = where(tag_names(options) EQ 'COLOR', ct) - if (ct EQ 1) then options.color = splot_icolor(options.color) - -; plot, [(*(plot_ptr[iplot])).x], [(*(plot_ptr[iplot])).y], $ -; /noerase, xstyle=5, ystyle=5, xrange=!x.crange, yrange=!y.crange, $ -; _EXTRA=options -; oplot, [(*(plot_ptr[iplot])).x], [(*(plot_ptr[iplot])).y], $ -; _EXTRA=options - plot, [(*(plot_ptr[iplot])).x], [(*(plot_ptr[iplot])).y], $ - /noerase, xstyle=5, ystyle=5, xrange=state.xrange, yrange=state.yrange, $ - _EXTRA=options - - return -end - -;---------------------------------------------------------------------- - -pro splot_plot1text, iplot - - common splot_pdata - - widget_control, /hourglass - - ; Convert color names to index numbers - options = (*(plot_ptr[iplot])).options - c = where(tag_names(options) EQ 'COLOR', ct) - if (ct EQ 1) then options.color = splot_icolor(options.color) - - string_tex = (*(plot_ptr[iplot])).text -; if (keyword_set(string_tex)) then string_tex = TeXtoIDL(string_tex) - xyouts, (*(plot_ptr[iplot])).x, (*(plot_ptr[iplot])).y, $ - string_tex, _EXTRA=options - - return -end - -;---------------------------------------------------------------------- - -pro splot_plotwindow - - common splot_state - common splot_pdata - - ; Set plot window - draw box - - !p.position = state.position ; ??? - if (nplot GT 0) then begin - - ; Always plot the box with color='default' - iplot = 0 - options = (*(plot_ptr[iplot])).options - c = where(tag_names(options) EQ 'COLOR', ct) - if (ct EQ 1) then options.color = splot_icolor('default') - - plot, [0], [0], /nodata, $ - xrange=state.xrange, yrange=state.yrange, xstyle=1, ystyle=1, $ - _EXTRA=options - endif else begin - plot, [0], [0], /nodata, $ - xrange=state.xrange, yrange=state.yrange, xstyle=1, ystyle=1 - endelse - - return -end - -;---------------------------------------------------------------------- - -pro splot_plotall - common splot_state - common splot_pdata - - ; Routine to overplot line plots from SPLOT and text from SXYOUTS - splot_plotwindow - - for iplot=0, nplot-1 do begin - case (*(plot_ptr[iplot])).type of - 'points' : splot_plot1plot, iplot - 'text' : splot_plot1text, iplot - else : print, 'Problem in splot_plotall!' - endcase - endfor - - return -end - -;------------------------------------------------------------------------------ - -pro sxyouts, x, y, text, _EXTRA=options - - common splot_pdata - common splot_state - - ; Routine to overplot text - - if (NOT xregistered('splot')) then begin - print, 'You need to start SPLOT first!' - return - endif - - if (N_params() LT 3) then begin - print, 'Too few parameters for SXYOUTS' - return - endif - - if (nplot LT maxplot) then begin - - ; Set default font to 1 - if (N_elements(options) EQ 0) then begin - options = {font: 1} - endif else begin - c = where(tag_names(options) EQ 'FONT', ct) - if (ct EQ 0) then options = create_struct(options, 'font', 1) - endelse - - pstruct = { $ - type: 'text', $ ; type of plot - x: x, $ ; x coordinate - y: y, $ ; y coordinate - text: text, $ ; text to plot - options: options $ ; plot keyword options - } - - plot_ptr[nplot] = ptr_new(pstruct) - nplot = nplot + 1 - - wset, state.draw_window_id - splot_plot1text, nplot-1 - endif else begin - print, 'Too many calls to SXYOUTS' - endelse - - return -end - -;------------------------------------------------------------------------------ - -pro splot_move_cursor, direction - - ; Use keypad arrow keys to step cursor one pixel at a time. - ; Get the new track image, and update the cursor position. - - common splot_state - - i = 1L - - case direction of - '2': state.mouse[1] = (state.mouse[1] - i) > 0 - '4': state.mouse[0] = (state.mouse[0] - i) > 0 - '8': state.mouse[1] = (state.mouse[1] + i) < (state.draw_window_size[1]-1) - '6': state.mouse[0] = (state.mouse[0] + i) < (state.draw_window_size[0]-1) - '7': begin - state.mouse[1] = (state.mouse[1] + i) < (state.draw_window_size[1]-1) - state.mouse[0] = (state.mouse[0] - i) > 0 - end - '9': begin - state.mouse[1] = (state.mouse[1] + i) < (state.draw_window_size[1]-1) - state.mouse[0] = (state.mouse[0] + i) < (state.draw_window_size[0]-1) - end - '3': begin - state.mouse[1] = (state.mouse[1] - i) > 0 - state.mouse[0] = (state.mouse[0] + i) < (state.draw_window_size[0]-1) - end - '1': begin - state.mouse[1] = (state.mouse[1] - i) > 0 - state.mouse[0] = (state.mouse[0] - i) > 0 - end - - endcase - - wset, state.draw_window_id - tvcrs, state.mouse[0], state.mouse[1], /device - - splot_gettrack - - ; Prevent the cursor move from causing a mouse event in the draw window - widget_control, state.draw_widget_id, /clear_events - - return -end - -;---------------------------------------------------------------------- - -pro splot_set_minmax - - ; Updates the MIN and MAX text boxes with new values. - - common splot_state - - widget_control, state.xmin_text_id, set_value=state.xrange[0] - widget_control, state.xmax_text_id, set_value=state.xrange[1] - widget_control, state.ymin_text_id, set_value=state.yrange[0] - widget_control, state.ymax_text_id, set_value=state.yrange[1] - -end - -;---------------------------------------------------------------------- - -pro splot_get_minmax, uvalue, newvalue - - ; Change the min and max state variables when user inputs new numbers - ; in the text boxes. - - common splot_state - - case uvalue of - - 'xmin_text': begin - reads, newvalue, tmp1 - state.xrange[0] = tmp1 - end - - 'xmax_text': begin - reads, newvalue, tmp1 - state.xrange[1] = tmp1 - end - - 'ymin_text': begin - reads, newvalue, tmp1 - state.yrange[0] = tmp1 - end - - 'ymax_text': begin - reads, newvalue, tmp1 - state.yrange[1] = tmp1 - end - - endcase - - splot_set_minmax - - return -end - -;------------------------------------------------------------------------------ - -pro splot_refresh - - common splot_state - - widget_control, /hourglass - - ; Display all plots - wset, state.draw_window_id - splot_plotall - splot_plotparam_refresh ; ??? - - splot_gettrack - - ; prevent unwanted mouse clicks - widget_control, state.draw_base_id, /clear_events - - - return -end -;------------------------------------------------------------------------------ - -pro splot_help - - common splot_state - - h = 'SPLOT HELP' - h = [h, ''] - h = [h, 'MENU BAR:'] - h = [h, 'File->ReadFits: Read in a new fits image from disk'] - h = [h, 'File->WritePS: Write a PostScript file of the current display'] - h = [h, 'File->Quit: Quits SPLOT'] - h = [h, 'Erase->EraseLast: Erases the most recent plot label'] - h = [h, 'Erase->EraseAll: Erases all plot labels'] - h = [h, 'ImageInfo->ImageHeader: Display the FITS header, if there is one.'] - h = [h, 'Plot->PlotParams: Edit plot options'] - h = [h, ''] - h = [h, 'CONTROL PANEL ITEMS:'] - h = [h,'XMIN: Shows X minimum for display; click to modify'] - h = [h,'XMAX: Shows X maximum for display; click to modify'] - h = [h,'YMIN: Shows Y minimum for display; click to modify'] - h = [h,'YMAX: Shows Y maximum for display; click to modify'] - h = [h, ''] - h = [h,'MOUSE:'] - h = [h,' Button1 = Zoom in & center'] - h = [h,' Button2 = Center on current position'] - h = [h,' Button3 = Zoom out & center'] - h = [h,'BUTTONS:'] - h = [h,'Zoom1: Rescale XRANGE and YRANGE to show all data'] - h = [h,'Done: Quits SPLOT'] - h = [h, ''] - h = [h,'Keyboard commands in display window:'] - h = [h,' Numeric keypad (with NUM LOCK on) moves cursor'] - h = [h,' g: gaussian fit (gaussian integrated over each pixel)'] - h = [h, ''] - h = [h,'IDL COMMAND LINE HELP:'] - h = [h,'To plot a 1-D array:'] - h = [h,' splot, xvector, yvector [, options]'] - h = [h,'To plot a 1-D array from a FITS file:'] - h = [h,' splot, filename [, options] (enclose file name in single quotes)'] - h = [h,'To overplot text on the draw window: '] - h = [h,' sxyouts, x, y, text_string [, options] (enclose string in single quotes)'] - h = [h, ''] - h = [h,'The options for SPLOT and SXYOUTS are essentially'] - h = [h, 'the same as those for the IDL PLOT and XYOUTS commands.'] - h = [h,'The default color is red for overplots done from the IDL command line.'] - h = [h, ''] - h = [h,'Other commands:'] - h = [h,'serase [, N]: erases all (or last N) plots and text'] - h = [h,'splot_shutdown: quits SPLOT'] - h = [h,'NOTE: If SPLOT should crash, type splot_shutdown at the IDL prompt.'] - h = [h, ''] - h = [h, ''] - h = [h,strcompress('SPLOT.PRO version '+state.version+' by D. Schlegel')] - h = [h,'For full instructions, or to download the most recent version, go to:'] - h = [h,'http://www.astro.princeton.edu/~schlegel/index.html'] - h = [h, ''] - h = [h,'For the companion program ATV, go to:'] - h = [h,'http://cfa-www.harvard.edu/~abarth/atv/atv.html'] - - if (NOT xregistered('splot_help')) then begin - - helptitle = strcompress('splot v' + state.version + ' help') - - help_base = widget_base(/floating, $ - group_leader = state.base_id, $ - /column, $ - /base_align_right, $ - title = helptitle, $ - uvalue = 'help_base') - - help_text = widget_text(help_base, $ - /scroll, $ - value = h, $ - xsize = 85, $ - ysize = 24) - - help_done = widget_button(help_base, $ - value = 'Done', $ - uvalue = 'help_done') - - widget_control, help_base, /realize - xmanager, 'splot_help', help_base, /no_block - - endif - - return -end - -;------------------------------------------------------------------------------ - -pro splot_help_event, event - - widget_control, event.id, get_uvalue = uvalue - - case uvalue of - 'help_done': widget_control, event.top, /destroy - else: - endcase - - return -end - -;------------------------------------------------------------------------------ - -pro splot_plotparam_refresh - - common splot_state - common splot_pdata - - if (nplot GT 0 AND xregistered('splot_plotparam')) then begin - options = (*(plot_ptr[0])).options ; Test if exists first ??? - opnames = tag_names(options) - - for i=0, N_elements(graphkeys)-1 do begin - c = where(opnames EQ graphkeys[i].keyword, ct) - if (ct EQ 1) then $ - widget_control, graphkeys[i].box_id, set_value=options.(c[0]) - endfor - endif - - return -end - -;------------------------------------------------------------------------------ - -pro splot_plotparam_event, event - - common splot_state - common splot_pdata - - options = (*plot_ptr[0]).options ; Test if exists first ??? - - widget_control, event.id, get_uvalue=uvalue - - case uvalue of - - 'plotparam_done': widget_control, event.top, /destroy - - else: begin - uvalue = strupcase(uvalue) - if (N_elements(options) EQ 0) then begin - options = create_struct(uvalue, event.value) - endif else begin - c = where(tag_names(options) EQ uvalue, ct) - if (ct EQ 0) then $ - options = create_struct(options, uvalue, event.value) $ - else options.(c[0]) = event.value - endelse - - (*plot_ptr[0]) = { $ - type: (*plot_ptr[0]).type, $ - x: (*plot_ptr[0]).x, $ - y: (*plot_ptr[0]).y, $ - options: options $ - } - - splot_refresh - end - - endcase - - return -end - -;------------------------------------------------------------------------------ - -pro splot_plotparam - - common splot_state - - if (NOT xregistered('splot_plotparam')) then begin - - plotparam_base = $ - widget_base(/floating, $ - /base_align_left, $ - group_leader = state.base_id, $ - /column, $ - title = 'SPLOT plot params', $ - uvalue = 'plotparam_base') - - tmp_string = string('',format='(a30)') - for i=0, N_elements(graphkeys)-1 do begin - graphkeys[i].box_id = $ ; ??? - cw_field(plotparam_base, $ - /string, $ - /return_events, $ - title = graphkeys[i].keyword+':', $ - uvalue = graphkeys[i].keyword, $ - value = tmp_string) - endfor - - plotparam_done = $ - widget_button(plotparam_base, $ - value = 'Done', $ - uvalue = 'plotparam_done') - - widget_control, plotparam_base, /realize - xmanager, 'splot_plotparam', plotparam_base, /no_block - endif - - splot_plotparam_refresh - - return -end - -;------------------------------------------------------------------------------ - -pro serase, nerase, norefresh=norefresh - - common splot_pdata - - ; Routine to erase line plots from SPLOT and text from SXYOUTS. - - ; The norefresh keyword is used when a new image - ; has just been read in, and by splot_shutdown. - - if (N_params() LT 1) then nerase = nplot $ - else if (nerase GT nplot) then nerase = nplot - - for iplot=nplot-nerase, nplot-1 do begin - ptr_free, plot_ptr[iplot] - plot_ptr[iplot] = ptr_new() - endfor - - nplot = nplot - nerase - - if (NOT keyword_set(norefresh) ) then splot_refresh - - return -end - -;------------------------------------------------------------------------------ - -pro splot_gaussfit - - common splot_state - common splot_pdata - - i = where(state.keylist.key EQ 'g', ct) - if (ct EQ 1) then begin - widget_control, state.comments_text_id, $ - set_value='GAUSSFIT: Press g at other side of feature to fit' - endif else if (ct EQ 2) then begin - ; Select all data points in the first PDATA array within the - ; selected X boundaries. - xmin = min([state.keylist[i].x, state.keylist[i].x]) - xmax = max([state.keylist[i].x, state.keylist[i].x]) - j = where((*(plot_ptr[0])).x GE xmin $ - AND (*(plot_ptr[0])).x LE xmax) - if (N_elements(j) GT 3) then begin - xtemp = (*(plot_ptr[0])).x[j] - xmid = median(xtemp) - xtemp = xtemp - xmid ; Do this for numerical stability in the fit - ytemp = (*(plot_ptr[0])).y[j] - ymin = min(ytemp) - ymax = max(ytemp, imax) - - ; Set initial guess for fitting coefficients - ; Fit a gaussian + a constant sky term - a = [xtemp[imax], 0.2*(max(xtemp)-min(xtemp)), ymax-ymin, ymin] - yfit = curvefit(xtemp, ytemp, xtemp*0+1.0, a, $ - /noderivative, function_name='splot_gausspix', chisq=chisq) - - ; If an absorption line is a better fit, use that - a_abs = [xtemp[imax], 0.2*(max(xtemp)-min(xtemp)), ymin-ymax, ymax] - yfit_abs = curvefit(xtemp, ytemp, xtemp*0+1.0, a_abs, $ - /noderivative, function_name='splot_gausspix', chisq=chisq_abs) - if (chisq_abs LT chisq AND chisq_abs NE 0) then begin - yfit = yfit_abs - a = a_abs - endif - - xtemp = xtemp + xmid - a[0] = a[0] + xmid - area = a[2] * sqrt(2.*!pi) - out_string = 'GAUSSFIT: ' $ - + ' x0= ' + strtrim(string(a[0]),2) $ - + ' sig= ' + strtrim(string(a[1]),2) $ - + ' Area= ' + strtrim(string(area),2) $ - + ' sky= ' + strtrim(string(a[3]),2) - widget_control, state.comments_text_id, set_value=out_string - soplot, xtemp, yfit, color='red', psym=10 - endif else begin - widget_control, state.comments_text_id, $ - set_value='GAUSSFIT: Too few points to fit' - endelse - splot_clearkeylist - endif else begin - splot_clearkeylist - endelse - - return -end - -;------------------------------------------------------------------------------ - -pro splot_autoscale_x - - common splot_state - common splot_pdata - - ; First set default values if no data - state.xrange[0] = 0.0 - state.xrange[1] = 1.0 - - if (nplot GT 0) then begin - - ; Set plotting limits for first SPLOT - state.xrange[0] = min( (*plot_ptr[0]).x ) - state.xrange[1] = max( (*plot_ptr[0]).x ) - - ; Enlarge plotting limits if necessary for other calls to SOPLOT - for i=1, nplot-1 do begin - if ((*plot_ptr[i]).type EQ 'points') then begin - state.xrange[0] = min( [state.xrange[0], (*plot_ptr[i]).x] ) - state.xrange[1] = max( [state.xrange[1], (*plot_ptr[i]).x] ) - endif - endfor - endif - - splot_set_minmax - - return -end - -;------------------------------------------------------------------------------ - -pro splot_autoscale_y - - common splot_state - common splot_pdata - - ; When determining Y plotting limits, only look at those data points - ; within the X plotting limits. - if (state.xrange[1] GE state.xrange[0]) then xrange = state.xrange $ - else xrange = state.xrange[[1,0]] - - ; First set default values if no data - state.yrange[0] = 0.0 - state.yrange[1] = 1.0 - - if (nplot GT 0) then begin - - ; Set plotting limits for first SPLOT - igood = where( (*plot_ptr[0]).x GE xrange[0] $ - AND (*plot_ptr[0]).x LE xrange[1]) - if (igood[0] NE -1) then begin - state.yrange[0] = min( (*plot_ptr[0]).y[igood] ) - state.yrange[1] = max( (*plot_ptr[0]).y[igood] ) - endif - - ; Enlarge plotting limits if necessary for other calls to SOPLOT - for i=1, nplot-1 do begin - if ((*plot_ptr[i]).type EQ 'points') then begin - igood = where( (*plot_ptr[i]).x GE xrange[0] $ - AND (*plot_ptr[i]).x LE xrange[1]) - if (igood[0] NE -1) then begin - state.yrange[0] = $ - min( [state.yrange[0], (*plot_ptr[i]).y[igood]] ) - state.yrange[1] = $ - max( [state.yrange[1], (*plot_ptr[i]).y[igood]] ) - endif - endif - endfor - endif - - splot_set_minmax - - return -end - -;------------------------------------------------------------------------------ - -pro soplot, x, y, autoscale=autoscale, replot=replot, $ - xrange=xrange, yrange=yrange, $ - position=position, _EXTRA=options - - common splot_state - common splot_pdata - - if (N_params() LT 1) then begin - print, 'Too few parameters for SOPLOT' - return - endif - - if (NOT xregistered('splot')) then begin - print, 'Must use SPLOT before SOPLOT' - endif - - if (keyword_set(xrange)) then state.xrange = xrange - if (keyword_set(yrange)) then state.yrange = yrange - if (keyword_set(position)) then state.position = position - - if (nplot LT maxplot) then begin - - if (N_elements(options) EQ 0) then $ - options = create_struct('color', 'default') - - if (N_params() EQ 1) then begin - pstruct = { $ - type: 'points', $ ; points - x: lindgen(N_elements(x)), $ ; x coordinate - y: x, $ ; y coordinate - options: options $ ; plot keyword options - } - endif else begin - pstruct = { $ - type: 'points', $ ; points - x: x, $ ; x coordinate - y: y, $ ; y coordinate - options: options $ ; plot keyword options - } - endelse - plot_ptr[nplot] = ptr_new(pstruct) - nplot = nplot + 1 - - wset, state.draw_window_id - - if (keyword_set(autoscale) AND NOT keyword_set(xrange)) then $ - splot_autoscale_x - if (keyword_set(autoscale) AND NOT keyword_set(yrange)) then $ - splot_autoscale_y - - if (keyword_set(replot)) then begin - splot_plotall - endif else begin - splot_plot1plot, nplot-1 - endelse - endif else begin - print, 'Too many calls to SPLOT' - endelse - - return -end - -;------------------------------------------------------------------------------ - -pro catplot, x, y, _EXTRA=KeywordsForSOPLOT - - common splot_state - common splot_images - common splot_pdata - - if (N_params() LT 1) then begin - print, 'Too few parameters for SPLOT' - return - endif - - imagename = '' - head = '' - - ; If X is a filename, read in the file - if ((N_params() NE 0) AND (size(x, /tname) EQ 'STRING') ) then begin - imagename = x - fits_read, imagename, main_image, head - x = main_image[*,0] ; Set X equal to the first row of the image ??? - endif - - if (NOT xregistered('splot')) then $ - splot_startup - - state.imagename = imagename - splot_setheader, head - - if (N_params() EQ 1) then begin - xplot = lindgen(N_elements(x)) - yplot = x - endif else begin - xplot = x - yplot = y - endelse - - serase, /norefresh - soplot, xplot, yplot, /autoscale, /replot, _EXTRA=KeywordsForSOPLOT - splot_plotparam_refresh - - return -end -;------------------------------------------------------------------------------ - -pro splot_spinspect_new - - common splot_spinspect_state, spinspect_state, pdata - - i = spinspect_state.fiberid - 1 - if i gt 639 then return - - widget_control, spinspect_state.class_text_id, $ - set_value = (*pdata[0])[i].class - widget_control, spinspect_state.subclass_text_id, $ - set_value = (*pdata[0])[i].subclass - widget_control, spinspect_state.z_text_id, $ - set_value = (*pdata[0])[i].z - - widget_control, spinspect_state.manual_class_text_id, $ - set_value = (*pdata[0])[i].manual_class - widget_control, spinspect_state.manual_subclass_text_id, $ - set_value = (*pdata[0])[i].manual_subclass - widget_control, spinspect_state.manual_z_text_id, $ - set_value = (*pdata[0])[i].manual_z - widget_control, spinspect_state.manual_comments_text_id, $ - set_value = (*pdata[0])[i].manual_comments - - plotspec, spinspect_state.plateid, spinspect_state.fiberid, $ - nsmooth = spinspect_state.nsmooth - - return -end - -;------------------------------------------------------------------------------ - -pro splot_spinspect_update - - common splot_spinspect_state, spinspect_state, pdata - - i = spinspect_state.fiberid - 1 - if i gt 639 then return - - (*pdata[0])[i].inspector =spinspect_state.inspector - - widget_control, spinspect_state.manual_class_text_id, $ - get_value = manual_class - (*pdata[0])[i].manual_class = manual_class - - widget_control, spinspect_state.manual_subclass_text_id, $ - get_value = manual_subclass - (*pdata[0])[i].manual_subclass = manual_subclass - - widget_control, spinspect_state.manual_z_text_id, $ - get_value = manual_z - (*pdata[0])[i].manual_z = manual_z - - widget_control, spinspect_state.manual_comments_text_id, $ - get_value = manual_comments - (*pdata[0])[i].manual_comments = manual_comments - - return -end - -;------------------------------------------------------------------------------ - -pro splot_spinspect_event, event - - common splot_spinspect_state, spinspect_state, pdata, yanny_structs, $ - yanny_hdr - - widget_control, event.id, get_uvalue=uvalue - - case uvalue of - 'spinspect_file_text': begin - widget_control, spinspect_state.spinspect_file_text_id, $ - get_value = filename - - spinspect_state.fiberid = 1 - spinspect_state.plateid = long(strmid(filename, 10, 4)) - spinspect_state.mjd = long(strmid(filename, 15, 5)) - inspector = (strmid(filename, 21, strlen(filename) - 21 - 4))[0] - spinspect_state.inspector = inspector - help, inspector, spinspect_state.inspector_text_id - widget_control, spinspect_state.inspector_text_id, $ - set_value = 'Inspector: ' + inspector - - print, 'Reading file ' + filename - yanny_read, filename, pdata, structs = yanny_structs, hdr = yanny_hdr - splot_spinspect_new - end - - 'nsmooth_text': begin - widget_control, spinspect_state.nsmooth_text_id, get_value = nsmooth - spinspect_state.nsmooth = nsmooth - plotspec, spinspect_state.plateid, spinspect_state.fiberid, $ - nsmooth = spinspect_state.nsmooth - end - - 'inspected': begin - print, 'Inspected Fiber ' + $ - string(spinspect_state.fiberid, format = '(I3)') - splot_spinspect_update - print, (*pdata[0])[spinspect_state.fiberid - 1] - if spinspect_state.fiberid ge 640 then return - spinspect_state.fiberid = spinspect_state.fiberid + 1 - splot_spinspect_new - end - - 'skip': begin - print, 'Fiber ' + $ - string(spinspect_state.fiberid, format = '(I3)') + $ - ' NOT inspected!' - print, (*pdata[0])[spinspect_state.fiberid - 1] - if spinspect_state.fiberid ge 640 then return - spinspect_state.fiberid = spinspect_state.fiberid + 1 - splot_spinspect_new - end - - 'back': begin - if spinspect_state.fiberid le 1 then return - spinspect_state.fiberid = spinspect_state.fiberid - 1 - print, 'Moving back to fiber ' + $ - string(spinspect_state.fiberid, format = '(I3)') - splot_spinspect_new - end - - 'goto': begin - widget_control, spinspect_state.goto_text_id, $ - get_value = newfiber - if newfiber lt 1 or newfiber gt 640 then return - spinspect_state.fiberid = newfiber - print, 'Moving to Fiber ' + string(newfiber, format = '(I3)') - splot_spinspect_new - end - endcase - - return -end -;------------------------------------------------------------------------------ - -pro splot_spinspect - - common splot_state - common splot_spinspect_state, spinspect_state, pdata - - if (NOT xregistered('splot_spinspect')) then begin - - spinspect_state = { $ - plateid: 0L , $ ; Current Plate id # - fiberid: 0L , $ ; Current Fiber id # - mjd: 0L , $ ; MJD of plate - inspector: "" , $ ; Name of Inspector - nsmooth: 5 , $ ; Pixels to smooth by - spinspect_file_text_id: 0L , $ ; ID of spInspect File = widget - inspector_text_id: 0L , $ ; ID of Inspector = widget - class_text_id: 0L , $ ; ID of Class = widget - subclass_text_id: 0L , $ ; ID of Subclass = widget - z_text_id: 0L , $ ; ID of Z = widget - manual_class_text_id: 0L , $ ; ID of Manual Class = widget - manual_subclass_text_id: 0L , $ ; ID of Manual Subclass = widget - manual_z_text_id: 0L , $ ; ID of Manual Z = widget - manual_comments_text_id: 0L , $ ; ID of Manual Comments = widget - nsmooth_text_id: 0L , $ ; ID of Smooth By = widget - goto_text_id: 0L $ ; ID Goto Fiber = widget - } - - spinspect_base = widget_base(/floating, $ - /base_align_left, $ - group_leader = state.base_id, $ - /column, $ - title = 'Splot spInspect Params', $ - uvalue = 'spinspect_base') - - button_base1 = widget_base(spinspect_base, /row, /base_align_left) - button_base2 = widget_base(spinspect_base, /row, /base_align_left) - button_base3 = widget_base(spinspect_base, /row, /base_align_left) - button_base4 = widget_base(spinspect_base, /row, /base_align_left) - button_base5 = widget_base(spinspect_base, /row, /base_align_left) - button_base6 = widget_base(spinspect_base, /row, /base_align_left) - - spinspect_state.spinspect_file_text_id = cw_field(button_base1, $ - uvalue = 'spinspect_file_text', /string, $ - title = ' SpInspect File:', $ - value = '', $ - xsize = 50, /return_events) - - spinspect_state.inspector_text_id = widget_label(button_base2, $ - uvalue = 'inspector_text', $ - value = ' Inspector: ' + spinspect_state.inspector, $ - xsize = 150, /align_left ) - - spinspect_state.class_text_id = cw_field(button_base3, $ - uvalue = 'class_text', $ - title = 'Spec1d Class:', $ - xsize = 8, /string, /noedit) - - spinspect_state.subclass_text_id = cw_field(button_base3, $ - uvalue = 'subclass_text', $ - title = ' Subclass:', $ - xsize = 12, /string, /noedit) - - spinspect_state.z_text_id = cw_field(button_base3, $ - uvalue = 'z_text', $ - title = ' Z:', $ - xsize = 8, /float, /noedit) - - spinspect_state.manual_class_text_id = cw_field(button_base4, $ - uvalue = 'manual_class_text', /string, $ - title = 'Manual Class:', $ - value = '', $ - xsize = 8) - - spinspect_state.manual_subclass_text_id = cw_field(button_base4, $ - uvalue = 'manual_subclass_text', /string, $ - title = ' Subclass:', $ - value = '', $ - xsize = 12) - - spinspect_state.manual_z_text_id = cw_field(button_base4, $ - uvalue = 'manual_z_text', /float, $ - title = ' Z:', $ - value = 0.0, $ - xsize = 8) - - spinspect_state.manual_comments_text_id = cw_field(button_base5, $ - uvalue = 'manual_comments_text', /string, $ - title = ' Comments:', $ - value = ' ', $ - xsize = 37) - - spinspect_state.nsmooth_text_id = cw_field(button_base5, $ - uvalue = 'nsmooth_text', /int, $ - title = ' Smooth by:', $ - value = spinspect_state.nsmooth, $ - /return_events, $ - xsize = 4) - - inspected_button = widget_button(button_base6, $ - value = ' Fiber Inspected ', ysize = 28, $ - uvalue = 'inspected') - - skip_button = widget_button(button_base6, $ - value = ' Skip Fiber ', ysize = 28, $ - uvalue = 'skip') - - back_button = widget_button(button_base6, $ - value = ' Back 1 Fiber ', ysize = 28, $ - uvalue = 'back') - - spinspect_state.goto_text_id = cw_field(button_base6, $ - uvalue = 'goto', /int, $ - title = ' Go to Fiber:', $ - value = 1, $ - /return_events, $ - xsize = 4) - - widget_control, spinspect_base, /realize - xmanager, 'splot_spinspect', spinspect_base, /no_block - endif - - return -end diff --git a/pro/spec1d/conflist.pro b/pro/spec1d/conflist.pro deleted file mode 100644 index 9afd8661d..000000000 --- a/pro/spec1d/conflist.pro +++ /dev/null @@ -1,1338 +0,0 @@ -;+ -; NAME: -; fieldlist -; -; PURPOSE: -; Make list of reduced fields -; -; CALLING SEQUENCE: -; fieldlist, [ /create, topdir=, outdir=, run2d=, run1d=, $ -; /purge2d, /purge1d, /killpartial, skipcart=, plist= ] -; -; INPUTS -; -; OPTIONAL INPUTS: -; create - If set, then re-generate the "fieldlist.fits" file; -; if not set, then simply read this file from a previous call. -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; outdir - Optional override of both topdir and $BOSS_SPECTRO_REDUX -; for output directory location -; run2d - Optional RUN2D subdirectories to include in outputs; -; set to '' to not search subdirectories; -; set to '*' to search all subdirs; default to $RUN2D -; run1d - Optional RUN1D subdirectories to include in outputs -; set to '' to not search subdirectories; -; set to '*' to search all subdirs; default to $RUN1D -; purge2d - If set, then delete all log files for fields that are -; considered to be 'RUNNING', but not those that are 'Done', -; 'Pending' or 'FAILED'. Those fields are then listed as -; 'Pending'. Setting /PURGE2D also sets /CREATE. -; Deleting these log files will cause the next invocation -; of BATCH2D to re-reduce those fields. -; purge1d - If set, then delete all log files for fields that are -; considered to be 'RUNNING', but not those that are 'Done', -; 'Pending' or 'FAILED'. Those fields are then listed as -; 'Pending'. Setting /PURGE1D also sets /CREATE. -; Deleting these log files will cause the next invocation -; of BATCH1D to re-reduce those fields. -; killpartial - If set, then delete all files associated with a combine -; of only some nights of a multi-night field. Such files -; can be produced by the Spectro-Robot when it fully reduces -; data from one night, but then more data is obtained for -; that plugging of the same field on a later date. This -; deletes spPlate and spZ files and their logs files. -; skipcart - cart number or list of cart numbers to drop from fieldlist -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; plist - Output structure with information for each field. -; -; COMMENTS: -; RUN2D: If option isn't set, use $RUN2D env var -; RUN2D/RUN1D = '*' means seach all subdirs -; Output directory: -; If OUTDIR is set, use that. -; Otherwise, if a single RUN2D is given, use $BOSS_SPECTRO_REDUX/[RUN2D]/ -; --> Note: RUN2D option, not $RUN2D environment variable -; Otherwise (none or multiple RUN2D), use $BOSS_SPECTRO_REDUX/ -; Option TOPDIR can override the value of $BOSS_SPECTRO_REDUX -; in the above, but it won't override OUTDIR -; -; TOPDIR is used to override $BOSS_SPECTRO_REDUX for both input and -; output. OUTDIR can be used to override TOPDIR for output if you want -; to get input from one dir while writing output to a different dir. -; -; The following files are generated in the output directory -; fieldlist.fits -; fieldlist.txt -; fieldlist.html -; fieldlist-mjdsort.txt -; fieldlist-mjdsort.html -; fieldquality.txt -; fieldquality.html -; fieldquality-mjdsort.txt -; fieldqualitymjdsort.html -; -; If INFILE is a list of plan files, i.e. -; spPlancomb-0306-51690.par -; then look for the following files for the 2D reductions: -; spPlancomb-0306-51690.par -; spDiagcomb-0306-51690.log -; spPlan2d-0306-51690.par (as specified by 'planfile2d' in spPlancomb) -; spDiag2d-0306-51690.log -; spField-0306-51690.fits (as specified by 'combinefile' in spPlancomb) -; and look for the following files for the 1D reductions: -; spPlan1d-0306-51690.par -; spZbest-0306-51690.fits -; spDiag1d-0306-51690.log -; -; FIELDSN2 is set to the minimum of the 4 cameras. -; DEREDSN2 like FIELDSN2, but with dereddened SN2 values -; PLATEQUALITY defaults to 'good'. -; PLATEQUALITY is set to 'bad' if MINSN2(B) < 10.0 or MINSN2(R) < 22.0 -; --> previously if MINSN2 < 13.0 -; PLATEQUALITY is set to 'bad' if FBADPIX > 0.10 -; PLATEQUALITY is set to 'bad' if min(NEXP_*) < 3 -; -; Decide which fields constitute unique tiles with the required S/N, -; then set QSURVEY=1. Require PLATEQUALITY='good'. -; Also require PROGNAME='main'. -; -; EXAMPLES: -; -; BUGS: -; Spawns the Unix commands 'tail' and 'grep', which is very slow. -; If the spField file is missing, it doesn't try to figure out which -; cart it really is and thus ignores skipcart -; -; DATA FILES: -; $PLATELIST_DIR/platePlans.par -; $SPECLOG_DIR/opfiles/spPlateList.par -; -; PROCEDURES CALLED: -; apo_checklimits() -; chunkinfo() -; copy_struct_inx -; djs_diff_angle() -; djs_filepath() -; fileandpath() -; headfits() -; mrdfits() -; repstr() -; rmfile -; splog -; struct_print -; sxpar() -; tai2airmass() -; yanny_free -; yanny_par() -; yanny_read -; yanny_readone() -; -; INTERNAL SUPPORT ROUTINES: -; platelist_write -; -; REVISION HISTORY: -; 29-Oct-2000 Written by D. Schlegel, Princeton -; 11-Jan-2011 Stephen Bailey, LBNL -; * Updated (S/N)^2 thresholds for "bad" -; * Added get_lastline to be faster than spawn tail -1 -; 21-Aug-2012 Stephen Bailey, LBNL -; * Changed default output directory to RUN2D -; 22-Jan-2019 Hector Ibarra, adapted for the BHM HJIM -;------------------------------------------------------------------------------ - -;---------- -; get lastline of a file faster than spawning 'tail -1' -function get_lastline, filename - ;;; spawn, 'tail -1 '+filename, lastline - - openr, ilun, filename, /get_lun - lastline = '' - while (NOT eof(ilun)) do begin - readf, ilun, lastline - endwhile - close, ilun - free_lun, ilun - - return, lastline -end - -pro platelist_write, plist, trimtags=trimtags, alias=alias, $ - fileprefix=fileprefix, title=title, toptext=toptext, outdir=outdir1 - - if (keyword_set(outdir1)) then begin - outdir = outdir1 - endif else begin - outdir = getenv('BOSS_SPECTRO_REDUX') - endelse - - ascfile = djs_filepath(fileprefix+'.txt', root_dir=outdir) - htmlfile = djs_filepath(fileprefix+'.html', root_dir=outdir) - - trimdat = struct_trimtags(plist, select_tags=trimtags[0,*]) - trimstring = struct_trimtags(plist, select_tags=trimtags[0,*], $ - format=trimtags[1,*]) - struct_print, trimstring, filename=ascfile, fdigit=3, alias=alias - - field_itag = where(trimtags[0,*] eq 'field', ft) - expt_itag= where(trimtags[0,*] eq 'exptime', et) - for itag=0L, n_tags(trimdat)-1L do begin - for iarr=0L, n_elements(trimdat[0].(itag))-1L do begin - for irow=0L, n_elements(trimdat)-1L do begin - if (ft ne 0) and (trimtags[0,itag] eq 'sn2_g1' or trimtags[0,itag] eq 'sn2_i1') $ - and (double(trimdat[irow].(expt_itag)[iarr]) lt 3600) then begin - if LONG(trimdat[irow].(field_itag)[iarr]) lt 16000 then begin - markstring = apo_checklimits('SUMMARY', strupcase(trimtags[0,itag]), $ - '', trimdat[irow].(itag)[iarr], /html) - endif else begin - if (double(trimdat[irow].(itag)[iarr]) gt 0.d) then begin - scaled = double(trimdat[irow].(itag)[iarr])/(double(trimdat[irow].(expt_itag)[iarr])/3600.d) - endif else scaled = double(trimdat[irow].(itag)[iarr]) - markstring = apo_checklimits('SUMMARY', strupcase(trimtags[0,itag]), '', scaled, /html) - endelse - endif else begin - markstring = apo_checklimits('SUMMARY', $ - strupcase(trimtags[0,itag]), '', $ - trimdat[irow].(itag)[iarr], /html) - endelse - trimstring[irow].(itag)[iarr] = markstring $ - + trimstring[irow].(itag)[iarr] - if strmatch(markstring,'' - endfor - endfor - endfor - struct_print, trimstring, /html, alias=alias, tarray=tarray, css=css - openw, lun, htmlfile, /get_lun - printf, lun, '' - printf, lun, '' - printf, lun, '' - printf, lun, '' - printf, lun, '' + title + '' - printf, lun, '' - for c=0L, n_elements(css)-1L do $ - printf, lun, css[c] - printf, lun, '' - printf, lun, '' - printf, lun, '

          ' + title + '

          ' - for i=0L, n_elements(toptext)-1L do $ - printf, lun, toptext[i] - - for i=0L, n_elements(tarray)-1L do tarray[i]=repstr(tarray[i],'NaN','-') - ifirst = where(plist.run2d NE shift(plist.run2d,1)) - for i=0, 2 do printf, lun, tarray[i] - for iline=0L, n_elements(plist)-1L do begin - ; Make a new html table for each new RUN2D - if (iline NE 0 AND total(iline EQ ifirst) NE 0) then $ - printf, lun, tarray[1] - printf, lun, tarray[3+iline] - endfor - printf, lun, '' - - printf, lun, '' - printf, lun, '' - close, lun - free_lun, lun - - return -end -;------------------------------------------------------------------------------ -pro conflist, plist=plist, create=create, topdir=topdir1, outdir=outdir1, $ - run2d=run2d1, run1d=run1d1, purge2d=purge2d, purge1d=purge1d, $ - killpartial=killpartial, skipcart=skipcart, fields=fields, $ - legacy=legacy, plates=plates - - RESOLVE_ALL, /QUIET, /SKIP_EXISTING, /CONTINUE_ON_ERROR - CPU, TPOOL_NTHREADS = 1 - - if (n_elements(run2d1) GT 0) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - - if (n_elements(run1d1) GT 0) then begin - run1d = strtrim(run1d1,2) - endif else begin - if (n_elements(run2d1) EQ 1) then begin - run1d = run2d - endif else begin - if (n_elements(run2d) GT 1) then begin - run1d = '*' - endif else begin - run1d = getenv('RUN1D') - endelse - endelse - endelse - - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - - if (keyword_set(outdir1)) then begin - outdir = outdir1 - if strmid(outdir, 0, 1) NE '/' then begin - cd, current=current_dir - outdir = current_dir + '/' + outdir - endif - endif else begin - ; If exactly one run2d is given, use that subdir - if (n_elements(run2d) EQ 1) && (run2d NE '*') then $ - outdir = topdir + '/' + run2d $ - else $ - outdir = topdir - endelse - ;platelist - if keyword_set(skipcart) then begin - splog, 'WARNING: Dropping fields from carts', skipcart - endif - - ;---------- - ; If the /CREATE flag is not set, and the platelist file already exists - ; on disk, then simply return the info in that file. - - ;fitsfile = djs_filepath('conflist.fits', root_dir=outdir) - fitsfile = djs_filepath('fieldlist-'+GETENV('RUN2D')+'.fits', root_dir=outdir) - - if (NOT keyword_set(create) AND NOT keyword_set(purge2d) $ - AND NOT keyword_set(purge1d)) then begin - thisfile = (findfile(fitsfile))[0] - if (keyword_set(thisfile)) then begin - plist = mrdfits(thisfile, 1, /silent) - return - endif - endif - - ;---------- - ; Generate the list of plan files or plate files if not specified - - fitsfile = djs_filepath('conflist.fits', root_dir=outdir) - fitsfile = djs_filepath('fieldlist-'+GETENV('RUN2D')+'.fits', root_dir=outdir) - if (keyword_set(run2d)) then $ - run2dlist = get_mjd_dir(topdir, mjd=run2d, /alldirs) $ - else $ - run2dlist = '' - - for j=0L, n_elements(run2dlist)-1L do begin - if (keyword_set(run2dlist[j])) then $ - thisdir = djs_filepath('', root_dir=topdir, subdir=run2dlist[j]) $ - else $ - thisdir = topdir - if not keyword_set(fields) then begin - dirlist = get_mjd_dir(thisdir, mjstart=0, mjend=999999) - endif else begin - dirlist = string(fields, format='(i05.5)') - endelse - if (keyword_set(dirlist)) then begin - for i=0L, n_elements(dirlist)-1L do begin - ; Select only those files matching the plate of the directory - thisfile = findfile(djs_filepath('spPlancomb-'+string(dirlist[i])+'*.par', $ - root_dir=thisdir, subdir=dirlist[i]), count=ct) - if (ct EQ 0) then $ - thisfile = findfile(djs_filepath('spField-'+string(dirlist[i])+'*.fits', $ - root_dir=thisdir, subdir=dirlist[i]), count=ct) - if (ct GT 0) then begin - if (keyword_set(fullfile)) then begin - fullfile = [fullfile, thisfile] - if (strmatch(run2dlist[j], '*eFED*', /fold_case) eq 1) then begin - fullrun2d = [fullrun2d, replicate(run2d,ct)] - endif else begin - fullrun2d = [fullrun2d, replicate(run2dlist[j],ct)] - endelse - endif else begin - fullfile = thisfile - if (strmatch(run2dlist[j], '*eFED*', /fold_case) eq 1) then begin - fullrun2d = replicate(run2d,ct) - endif else begin - fullrun2d = replicate(run2dlist[j],ct) - endelse - endelse - endif - endfor - endif - endfor - nfile = n_elements(fullfile) - if (nfile EQ 0) then return - - fullfile = fullfile[sort(fullfile)] ; Sort these files - - - ;---------- - ; Create output structure - plist = create_struct( $ - 'field' , 0L, $ - 'plate' , 0L, $ - 'DESIGNS' , '', $ - 'CONFIGS' , '', $ - 'mjd' , 0L, $ - 'obs' , '', $ - 'run2d' , '', $ - 'run1d' , '', $ - 'racen' , 0.0, $ - 'deccen' , 0.0, $ - 'epoch' , 0.0, $ - 'cartid' , ' ', $ - 'tai' , 0.0D, $ - 'tai_beg' , 0.0D, $ - 'tai_end' , 0.0D, $ - 'airmass' , 0.0, $ - 'exptime' , 0.0, $ - 'mapname' , ' ', $ - 'survey' , ' ', $ - 'programname' , ' ', $ - 'plotsn' , ' ', $ - 'data' , ' ', $ - 'plots' , ' ', $ - 'fieldquality' , ' ', $ - 'fieldsn2' , 0.0, $ - 'qsurvey' , 0L, $ - 'mjdlist' , ' ', $ -; 'tailist' , ' ', $ - 'nexp' , 0L, $ - 'nexp_b1' , 0L, $ - 'nexp_r1' , 0L, $ - 'nexp_b2' , 0L, $ - 'nexp_r2' , 0L, $ - 'expt_b1' , 0.0, $ - 'expt_r1' , 0.0, $ - 'expt_b2' , 0.0, $ - 'expt_r2' , 0.0, $ - 'sn2_g1' , !VALUES.F_NAN, $ - 'sn2_r1' , !VALUES.F_NAN, $ - 'sn2_i1' , !VALUES.F_NAN, $ - 'sn2_g2' , !VALUES.F_NAN, $ - 'sn2_r2' , !VALUES.F_NAN, $ - 'sn2_i2' , !VALUES.F_NAN, $ - 'goffstd' , 0., $ - 'grmsstd' , 0., $ - 'roffstd' , 0., $ - 'rrmsstd' , 0., $ - 'ioffstd' , 0., $ - 'irmsstd' , 0., $ - 'groffstd' , 0., $ - 'grrmsstd' , 0., $ - 'rioffstd' , 0., $ - 'rirmsstd' , 0., $ - 'goffgal' , 0., $ - 'grmsgal' , 0., $ - 'roffgal' , 0., $ - 'rrmsgal' , 0., $ - 'ioffgal' , 0., $ - 'irmsgal' , 0., $ - 'groffgal' , 0., $ - 'grrmsgal' , 0., $ - 'rioffgal' , 0., $ - 'rirmsgal' , 0., $ - 'nguide' , 0L , $ - 'seeing20' , 0.0, $ - 'seeing50' , 0.0, $ - 'seeing80' , 0.0, $ - 'rmsoff20' , 0.0, $ - 'rmsoff50' , 0.0, $ - 'rmsoff80' , 0.0, $ - 'airtemp' , 0.0, $ - 'xsigma' , 0.0, $ - 'xsigmin' , 0.0, $ - 'xsigmax' , 0.0, $ - 'wsigma' , 0.0, $ - 'wsigmin' , 0.0, $ - 'wsigmax' , 0.0, $ - 'xchi2' , 0.0, $ - 'xchi2min' , 0.0, $ - 'xchi2max' , 0.0, $ - 'skychi2' , 0.0, $ - 'schi2min' , 0.0, $ - 'schi2max' , 0.0, $ - 'fbadpix' , 0.0, $ - 'fbadpix1' , 0.0, $ - 'fbadpix2' , 0.0, $ - 'n_total' , 0L, $ - 'n_galaxy' , 0L, $ - 'n_qso' , 0L, $ - 'n_star' , 0L, $ - 'n_unknown' , 0L, $ - 'n_sky' , 0L, $ - 'n_std' , 0L, $ - 'n_target_qso' , 0L, $ - 'success_qso' , 0.0, $ - 'status2d' , 'Missing', $ - 'statuscombine', 'Missing', $ - 'status1d' , 'Missing', $ - 'Field_Cadence', '', $ - 'public' , ' ', $ - 'qualcomments' , ' ' , $ - 'moon_frac' , 0.0 ) - - - if keyword_set(legacy) then begin - add = create_struct( $ - 'tileid' , 0L, 'designid' , 0L, $ - 'chunk' , ' ', 'chunkhtml' , ' ', 'deredsn2' , 0.0, $ - 'dered_sn2_g1' , 0.0, 'dered_sn2_r1' , 0.0, 'dered_sn2_i1' , 0.0, $ - 'dered_sn2_g2' , 0.0, 'dered_sn2_r2' , 0.0, 'dered_sn2_i2' , 0.0, $ - 'n_target_main', 0L, 'n_target_lrg1', 0L, 'n_target_lrg2', 0L, 'n_target_elg', 0L, $ - 'success_main' , 0.0, 'success_lrg1' , 0.0, 'success_lrg2' , 0.0, 'success_elg' , 0.0 ) - - plist= struct_addtags(plist, add) - endif - - rawsn2 = 1 - sn2tag = 'fieldsn2' - dereddened_sn2 = 0 - - - ;; Which columns to keep for HTML and ASCII files - ;; For platelist - trimtags1 = [ $ - ['field' , 'i7'], $ - ['mjd' , 'i5'], $ - ['obs' , 'a'], $ - ['plots' , 'a'], $ - ['racen' , 'f6.2'], $ - ['deccen' , 'f6.2'], $ - ['run2d' , 'a'], $ - ['run1d' , 'a'], $ - ['data' , 'a'], $ - ['fieldquality' , 'a'], $ - ['exptime' , 'f0.1'], $ - [sn2tag , 'f5.1'], $ - ['n_galaxy' , 'i'], $ - ['n_qso' , 'i'], $ - ['n_star' , 'i'], $ - ['n_unknown' , 'i'], $ - ['n_sky' , 'i'], $ - ['n_std' , 'i'], $ - ['moon_frac' , 'f5.1'], $ - ['survey' , 'a'], $ - ['programname' , 'a'], $ - ['Field_Cadence', 'a' ], $ - ['designs' , 'a'], $ - ['public' , 'a'] ] - ;; For platequality - trimtags2 = [ $ - ['field' , 'i7'], $ - ['mjd' , 'i5'], $ - ['obs' , 'a'], $ - ['plots' , 'a'], $ - ['racen' , 'f6.2'], $ - ['deccen' , 'f6.2'], $ - ['run2d' , 'a'], $ - ['run1d' , 'a'], $ - ['sn2_g1' , 'f5.1'], $ - ['sn2_i1' , 'f5.1'], $ - ['sn2_g2' , 'f5.1'], $ - ['sn2_i2' , 'f5.1'], $ - ['fbadpix' , 'f5.3'], $ - ['success_qso' , 'f5.1'], $ - ['status2d' , 'a'], $ - ['statuscombine', 'a'], $ - ['status1d' , 'a'], $ - ['plotsn' , 'a'], $ - ['moon_frac' , 'f5.1'], $ - ['exptime' , 'f0.1'], $ - ['fieldquality' , 'a'], $ - ['Field_Cadence', 'a' ], $ - ['survey' , 'a'], $ - ['programname' , 'a'], $ - ['qualcomments' , 'a'] ] - - if keyword_set(legacy) then begin - trimtags1 = [[trimtags1], $ - [['chunkhtml' , 'a'], $ - ['tileid' , 'i']]] - trimtags2 = [[trimtags2], $ - [['success_lrg1' , 'f5.1'], $ - ['success_lrg2' , 'f5.1'], $ - ['success_elg' , 'f5.1']]] - endif - plist = replicate(plist, nfile) - - ;---------- - ; Read the data file with the public plate information - publicfile = filepath('spPlateList.par', $ - root_dir=getenv('SPECLOG_DIR'), subdirectory='opfiles') - publicdata = yanny_readone(publicfile, 'SPPLATELIST') - publicfilefps = filepath('spConfList.par', $ - root_dir=getenv('SDSSCORE_DIR'), subdirectory='opfiles') - publicdatafps = yanny_readone(publicfilefps, 'SPCONFLIST') - - - ;--------------------------------------------------------------------------- - ; Loop through all files - ;--------------------------------------------------------------------------- - - platefile = strarr(nfile) - combparfile = strarr(nfile) - comblogfile = strarr(nfile) - combpsfile = strarr(nfile) - zlogfile = ptrarr(nfile) - zbestfile = ptrarr(nfile) - zbestrun1d = ptrarr(nfile) - - conflist_warn = 0 - conflist_warnfps = 0 - - for ifile=0L, nfile-1L do begin - - splog, 'Looking at ' + fullfile[ifile] - - junk = fileandpath(fullfile[ifile], path=path) ; Determine PATH - - ;---------- - ; Test if INFILE specifies Yanny param files for spPlancomb. - if (strmid(fullfile[ifile],strlen(fullfile[ifile])-4) EQ '.par') then begin - combparfile[ifile] = fullfile[ifile] - yanny_read, fullfile[ifile], hdr=hdrp,/anonymous - platefile[ifile] = $ - djs_filepath('spField-' $ - +field_to_string(yanny_par(hdrp,'fieldid')) $ - +'-'+string(yanny_par(hdrp,'MJD'),format='(i5.5)'), root_dir=path) $ - +'.fits' - endif else begin - platefile[ifile] = fullfile[ifile] - combparfile[ifile] = repstr(platefile[ifile], 'spField', 'spPlancomb') - combparfile[ifile] = repstr(combparfile[ifile], '.fits', '.par') - endelse - ;---------- - ; Determine names of associated files - comblogfile[ifile] = repstr(combparfile[ifile], '.par', '.log') - comblogfile[ifile] = repstr(comblogfile[ifile], 'spPlancomb', 'spDiagcomb') - combpsfile[ifile] = repstr(comblogfile[ifile], '.log', '.ps') - platemjd = strmid(fileandpath(platefile[ifile]), 8, strpos(fileandpath(platefile[ifile]), '.fits') -8 ) - ; - ; run1d is ALWAYS set. If it is not input as a keyword, it has - ; the value '*' - ; - if (keyword_set(run1d[0])) then begin - allsubdirs = get_mjd_dir(path, mjd=run1d, /alldirs) - zbestrun1d[ifile] = ptr_new( allsubdirs[where(~strcmp(allsubdirs,'runz_',5))] ) - endif else $ - zbestrun1d[ifile] = ptr_new('') - nsubdir = n_elements(*zbestrun1d[ifile]) - zbestfile[ifile] = ptr_new(strarr(nsubdir)) - zlogfile[ifile] = ptr_new(strarr(nsubdir)) - for i=0L, nsubdir-1L do $ - (*zbestfile[ifile])[i] = djs_filepath('spZbest-'+platemjd+'.fits', $ - root_dir=path, subdir=((*zbestrun1d[ifile])[i])) - for i=0L, nsubdir-1L do $ - (*zlogfile[ifile])[i] = djs_filepath('spDiag1d-'+platemjd+'.log', $ - root_dir=path, subdir=((*zbestrun1d[ifile]))[i]) - - ; Read the combine plan file to get the list of all the 2D plan files - ; from its Yanny header. - ; Also get the mapping name from the combine par file in case we were - ; unable to get it from the spPlate file. - ;Redefine the mapname as epch_combine to force combine epochs of 3 days - jdtemp=(yanny_readone(combparfile[ifile], 'SPEXP', $ - hdr=hdrcomb,/anonymous))[0].mjd - plate_temp = (yanny_readone(combparfile[ifile], 'SPEXP', hdr=hdrcomb,/anonymous))[0] - plate_temp = (yanny_readone(combparfile[ifile], 'SPEXP', hdr=hdrcomb,/anonymous))[0].fieldid - epoch_temp = (yanny_readone(combparfile[ifile], 'SPEXP', $ - hdr=hdrcomb,/anonymous))[0].epoch_combine - if long(plate_temp) lt 16000 then $ - plist[ifile].mapname=strtrim(string(plate_temp),2)+'-'+strtrim(string(epoch_temp),2) $ - else plist[ifile].mapname = '' - jdtemp=jdtemp+2400000.5 - mphase,jdtemp,mfrac - plist[ifile].moon_frac=mfrac - plist[ifile].obs=yanny_par_fc(hdrcomb,'OBS') - ;---------- - ; Find the state of the 2D reductions (not the combine step) - - statusdone = 0 - statusrun = 0 - statusmissing = 0 - - ; Check status of individual 2D runs - planlist = yanny_par(hdrcomb, 'planfile2d') ; Assume we find this - logfile2d = '' ; List of 2D log files that exist - for iplan=0L, n_elements(planlist)-1L do begin - yanny_read, djs_filepath(planlist[iplan],root_dir=path), hdr=hdr2d, /anonymous - plist[ifile].mjdlist += ' ' + strtrim(yanny_par(hdr2d, 'MJD'),2) - thislogfile = repstr(planlist[iplan],'spPlan2d','spDiag2d') - thislogfile = repstr(thislogfile,'.par','.log') - thislogfile = (findfile(djs_filepath(thislogfile, root_dir=path)))[0] - if (keyword_set(thislogfile)) then begin - if (NOT keyword_set(logfile2d)) then logfile2d = thislogfile $ - else logfile2d = [logfile2d, thislogfile] - lastline = get_lastline(thislogfile) - if (strmatch(lastline[0], '*Successful completion*')) then begin - ; Case where this 2D log file completed - statusdone = statusdone + 1 - endif else begin - ; Case where this 2D log file isn't completed - statusrun = statusrun + 1 - endelse - endif else begin - ; Case where this 2D log file missing - statusmissing = statusmissing + 1 - endelse - endfor - - if (statusmissing GT 0 AND statusrun EQ 0) then begin - plist[ifile].status2d = 'Pending' - endif else if (statusmissing GT 0 OR statusrun GT 0) then begin - plist[ifile].status2d = 'RUNNING' - endif else begin - plist[ifile].status2d = 'Done' - endelse - - ;---------- - ; Read plate file - get status of Combine - - ; Get RUN2D from the directory name... - plist[ifile].run2d = fullrun2d[ifile] - hdr1 = headfits(platefile[ifile], /silent, errmsg=errmsg) - if (size(hdr1, /tname) EQ 'STRING') then begin - plist[ifile].n_total = sxpar(hdr1, 'NAXIS2') - plist[ifile].Field_Cadence = sxpar(hdr1, 'FIELDCAD', count=fc) - if fc eq 0 then plist[ifile].Field_Cadence = '' - plist[ifile].mjdlist = sxpar(hdr1, 'MJDLIST') -; plist[ifile].tailist = sxpar(hdr1, 'TAILIST') - plist[ifile].designs = sxpar(hdr1, 'DESIGNS') - plist[ifile].configs = sxpar(hdr1, 'CONFIGS') - if keyword_set(legacy) then begin - plist[ifile].tileid = sxpar(hdr1, 'TILEID') ; Get from platePlans - plist[ifile].racen = sxpar(hdr1, 'RA') ; Get from platePlans - plist[ifile].deccen = sxpar(hdr1, 'DEC') ; Get from platePlans - endif - plist[ifile].cartid = strtrim(sxpar(hdr1, 'CARTID'),2) - plist[ifile].tai = sxpar(hdr1, 'TAI') - plist[ifile].tai_beg = sxpar(hdr1, 'TAI-BEG') - plist[ifile].tai_end = sxpar(hdr1, 'TAI-END') - plist[ifile].airmass = sxpar(hdr1, 'AIRMASS') - plist[ifile].exptime = sxpar(hdr1, 'EXPTIME') - plist[ifile].nexp = sxpar(hdr1, 'NEXP') - ; If these keywords don't exist, these will just get 0 - plist[ifile].nexp_b1 = sxpar(hdr1, 'NEXP_B1') - plist[ifile].nexp_r1 = sxpar(hdr1, 'NEXP_R1') - plist[ifile].expt_b1 = sxpar(hdr1, 'EXPT_B1') - plist[ifile].expt_r1 = sxpar(hdr1, 'EXPT_R1') - plist[ifile].nexp_b2 = sxpar(hdr1, 'NEXP_B2') - plist[ifile].nexp_r2 = sxpar(hdr1, 'NEXP_R2') - plist[ifile].expt_b2 = sxpar(hdr1, 'EXPT_B2') - plist[ifile].expt_r2 = sxpar(hdr1, 'EXPT_R2') - sp1=0 - sp2=0 - testfield = sxpar(hdr1, 'FIELDID', count=ct) - if ct eq 0 then testfield = sxpar(hdr1, 'PLATEID', count=ct) - if long(testfield) lt 15000 then begin - sp1=1 - sp2=1 - endif else begin - if isa(sxpar(hdr1,'CARTID'), /NUMBER) then sp1=1 else $ - if strmatch(sxpar(hdr1,'CARTID'), '*FPS-S*', /fold_case) then sp2=1 else sp1=1 - endelse - if keyword_set(sp1) then begin - plist[ifile].sn2_g1 = sxpar(hdr1, 'SPEC1_G') - plist[ifile].sn2_r1 = sxpar(hdr1, 'SPEC1_R') - plist[ifile].sn2_i1 = sxpar(hdr1, 'SPEC1_I') - if keyword_set(dereddened_sn2) then begin - plist[ifile].dered_sn2_g1 = sxpar(hdr1, 'SN2EXT1G') - plist[ifile].dered_sn2_r1 = sxpar(hdr1, 'SN2EXT1R') - plist[ifile].dered_sn2_i1 = sxpar(hdr1, 'SN2EXT1I') - endif - endif - if keyword_set(sp2) then begin - plist[ifile].sn2_g2 = sxpar(hdr1, 'SPEC2_G') - plist[ifile].sn2_r2 = sxpar(hdr1, 'SPEC2_R') - plist[ifile].sn2_i2 = sxpar(hdr1, 'SPEC2_I') - if keyword_set(dereddened_sn2) then begin - plist[ifile].dered_sn2_g2 = sxpar(hdr1, 'SN2EXT2G') - plist[ifile].dered_sn2_r2 = sxpar(hdr1, 'SN2EXT2R') - plist[ifile].dered_sn2_i2 = sxpar(hdr1, 'SN2EXT2I') - endif - endif - plist[ifile].goffstd = sxpar(hdr1, 'GOFFSTD') - plist[ifile].grmsstd = sxpar(hdr1, 'GRMSSTD') - plist[ifile].roffstd = sxpar(hdr1, 'ROFFSTD') - plist[ifile].rrmsstd = sxpar(hdr1, 'RRMSSTD') - plist[ifile].ioffstd = sxpar(hdr1, 'IOFFSTD') - plist[ifile].irmsstd = sxpar(hdr1, 'IRMSSTD') - plist[ifile].groffstd = sxpar(hdr1, 'GROFFSTD') - plist[ifile].grrmsstd = sxpar(hdr1, 'GRRMSSTD') - plist[ifile].rioffstd = sxpar(hdr1, 'RIOFFSTD') - plist[ifile].rirmsstd = sxpar(hdr1, 'RIRMSSTD') - plist[ifile].goffgal = sxpar(hdr1, 'GOFFGAL') - plist[ifile].grmsgal = sxpar(hdr1, 'GRMSGAL') - plist[ifile].roffgal = sxpar(hdr1, 'ROFFGAL') - plist[ifile].rrmsgal = sxpar(hdr1, 'RRMSGAL') - plist[ifile].ioffgal = sxpar(hdr1, 'IOFFGAL') - plist[ifile].irmsgal = sxpar(hdr1, 'IRMSGAL') - plist[ifile].groffgal = sxpar(hdr1, 'GROFFGAL') - plist[ifile].grrmsgal = sxpar(hdr1, 'GRRMSGAL') - plist[ifile].rioffgal = sxpar(hdr1, 'RIOFFGAL') - plist[ifile].rirmsgal = sxpar(hdr1, 'RIRMSGAL') - plist[ifile].nguide = sxpar(hdr1, 'NGUIDE') - plist[ifile].seeing20 = sxpar(hdr1, 'SEEING20') - plist[ifile].seeing50 = sxpar(hdr1, 'SEEING50') - plist[ifile].seeing80 = sxpar(hdr1, 'SEEING80') - plist[ifile].rmsoff20 = sxpar(hdr1, 'RMSOFF20') - plist[ifile].rmsoff50 = sxpar(hdr1, 'RMSOFF50') - plist[ifile].rmsoff80 = sxpar(hdr1, 'RMSOFF80') - plist[ifile].airtemp = sxpar(hdr1, 'AIRTEMP') - plist[ifile].xsigma = sxpar(hdr1, 'XSIGMA') - plist[ifile].xsigmin = sxpar(hdr1, 'XSIGMIN') - plist[ifile].xsigmax = sxpar(hdr1, 'XSIGMAX') - plist[ifile].wsigma = sxpar(hdr1, 'WSIGMA') - plist[ifile].wsigmin = sxpar(hdr1, 'WSIGMIN') - plist[ifile].wsigmax = sxpar(hdr1, 'WSIGMAX') - plist[ifile].xchi2 = sxpar(hdr1, 'XCHI2') - plist[ifile].xchi2min = sxpar(hdr1, 'XCHI2MIN') - plist[ifile].xchi2max = sxpar(hdr1, 'XCHI2MAX') - plist[ifile].skychi2 = sxpar(hdr1, 'SKYCHI2') - plist[ifile].schi2min = sxpar(hdr1, 'SCHI2MIN') - plist[ifile].schi2max = sxpar(hdr1, 'SCHI2MAX') - plist[ifile].fbadpix = sxpar(hdr1, 'FBADPIX') - plist[ifile].fbadpix1 = sxpar(hdr1, 'FBADPIX1') - plist[ifile].fbadpix2 = sxpar(hdr1, 'FBADPIX2') - ;plist[ifile].mapname = strtrim(sxpar(hdr1, 'NAME')) - plist[ifile].racen = sxpar(hdr1, 'RADEG') - plist[ifile].deccen = sxpar(hdr1, 'DECDEG') - plist[ifile].epoch = sxpar(hdr1, 'EQUINOX') - plist[ifile].statuscombine = 'Done' - endif else begin - ; Case where no spField file exists - thislogfile = repstr(fileandpath(platefile[ifile]), 'spField','spDiagcomb') - thislogfile = repstr(thislogfile,'.fits','.log') - thislogfile = (findfile(djs_filepath(thislogfile, root_dir=path)))[0] - - if (keyword_set(thislogfile)) then begin - lastline = get_lastline(thislogfile) - if (strmatch(lastline[0], '*Successful completion*')) then begin - ; Case where this combine log file completed, - ; (but we're still missing the spPlate file, so must have failed) - plist[ifile].statuscombine = 'FAILED' - endif else begin - ; Case where this combine log file isn't completed - spawn, 'grep ABORT '+thislogfile, abortline - if (keyword_set(abortline)) then begin - plist[ifile].statuscombine = 'FAILED' ; Combining step aborted - endif else begin - plist[ifile].statuscombine = 'RUNNING' - endelse - endelse - endif else begin - ; Case where this combine log file missing - plist[ifile].statuscombine = 'Pending' - endelse - - if (keyword_set(purge2d) $ - AND plist[ifile].statuscombine NE 'Done') then begin - splog, 'PURGE2D ', logfile2d - rmfile, logfile2d - splog, 'PURGE2D ', comblogfile[ifile] - rmfile, comblogfile[ifile] - splog, 'PURGE2D ', combpsfile[ifile] - rmfile, combpsfile[ifile] - plist[ifile].status2d = 'Pending' - plist[ifile].statuscombine = 'Pending' - endif - endelse - - ;---------- - ; Get the following from the file names, since sometimes they - ; are wrong in the file headers!! - - fi = fileandpath(platefile[ifile]) - p1 = strpos(fi, '-') - p2 = strpos(fi, '-', p1+1) - p3 = strpos(fi, '.fits') - plist[ifile].mjd = long( strmid(fi, p2+1, p3-p2-1) ) - ;---------- - ; Determine the chunk name and the version of target used - tplates = 0 - tleg = 0 - plist[ifile].field = long( strmid(fi, p1+1, p2-p1-1) ) - if plist[ifile].field lt 16000 then begin - if plist[ifile].field lt 15000 then tleg = 1 else tplates = 1 - cinfo = chunkinfo(plist[ifile].field,plates=tplates,legacy=tleg) - plist[ifile].plate = long( strmid(fi, p1+1, p2-p1-1) ) - endif - - if keyword_set(cinfo) then begin - if tag_exist(plist, 'survey') then plist[ifile].survey = cinfo.survey - if tag_exist(plist, 'programname') then plist[ifile].programname = cinfo.programname - if tag_exist(plist, 'chunk') then plist[ifile].chunk = cinfo.chunk - if tag_exist(plist, 'tileid') then plist[ifile].tileid = cinfo.tileid - if tag_exist(plist, 'designid') then plist[ifile].designid = cinfo.designid - if tag_exist(plist, 'racen') then plist[ifile].racen = cinfo.racen - if tag_exist(plist, 'deccen') then plist[ifile].deccen = cinfo.deccen - if tag_exist(plist, 'epoch') then plist[ifile].epoch = cinfo.epoch - if tag_exist(plist, 'chunkhtml') then $ - plist[ifile].chunkhtml='
          '+cinfo.chunk+'' - endif else begin - if plist[ifile].field lt 16000 then begin - splog, 'Empty or missing platePlans.par file' - endif else begin - if strmatch(plist[ifile].Field_Cadence, '*bright*', /fold_case) eq 1 then plist[ifile].survey = 'mwm-bhm' - if strmatch(plist[ifile].Field_Cadence, '*dark*', /fold_case) eq 1 then plist[ifile].survey = 'bhm-mwm' - if strmatch(plist[ifile].Field_Cadence, 'dark_174x8', /fold_case) eq 1 then plist[ifile].programname = 'RM' - endelse - endelse - undefine, cinfo - - ;---------- - ; Determine which public data release has this plate+MJD - if plist[ifile].field lt 16000 then begin - if keyword_set(publicdata) then begin - j = where(plist[ifile].field EQ publicdata.plate $ - AND plist[ifile].mjd EQ publicdata.mjd) - if (j[0] NE -1) then begin - copy_struct_inx, publicdata[j[0]], plist, index_to=ifile - endif - endif else begin - if conflist_warn eq 0 then splog, 'Missing spPlateList.par file' - conflist_warn = 1 - endelse - endif else begin - if keyword_set(publicdatafps) then begin - j = where(plist[ifile].field EQ publicdatafps.field $ - AND plist[ifile].mjd EQ publicdatafps.mjd) - if (j[0] NE -1) then begin - copy_struct_inx, publicdatafps[j[0]], plist, index_to=ifile - endif - endif else begin - if conflist_warn eq 0 then splog, 'Missing spPlateList.par file' - conflist_warn = 1 - endelse - endelse - endfor - - ;---------- - ; Remove from the field list earlier reductions of the same plugging - ; (keeping only the most recent MJD of each plugging). - - qkeep = bytarr(nfile) - - ; First get the unique list of MAPNAME+RUN2D, then mark the most recent MJD - ; of each as the good one. - isort = sort(plist.mapname+plist.run2d) - isort = isort[ uniq(plist[isort].mapname+plist[isort].run2d) ] - maplist = plist[isort].mapname+plist[isort].run2d - for imap=0L, n_elements(maplist)-1L do begin - indx = where(plist.mapname+plist.run2d EQ maplist[imap]) - junk = max(plist[indx].mjd, imax) - qkeep[indx[imax]] = 1 - endfor - - ; Don't discard any where MAPNAME isn't set - indx = where(strtrim(plist.mapname) EQ '') - if (indx[0] NE -1) then qkeep[indx] = 1 - - ; List partially-combined fields that we're discarding from the list - for ifile=0L, nfile-1L do begin - if (qkeep[ifile] NE 1) then begin - splog, 'Discard partially-combined ' + combparfile[ifile] - if (keyword_set(killpartial)) then begin - killfiles = [ combparfile[ifile], $ - comblogfile[ifile], $ - combpsfile[ifile], $ - platefile[ifile], $ - *zbestfile[ifile], $ - *zlogfile[ifile] ] - for ikill=0L, n_elements(killfiles)-1L do $ - splog, 'KILLPARTIAL ', killfiles[ikill] - rmfile, killfiles - endif - - ; Drop fields from carts in skipcart - endif else begin - if keyword_set(skipcart) then begin - tmp = where(skipcart EQ plist[ifile].cartid, N) - if N GT 0 then begin - cartid = STRTRIM(STRING(plist[ifile].cartid), 1) - splog, 'Dropping ' + combparfile[ifile] + ' (cart ' + cartid + ')' - qkeep[ifile] = 0 - endif - endif - endelse - - endfor - - ;----- - ; Trim the field list, and update NFILE to this trimmed number - - ikeep = where(qkeep, nfile) - idelete = where(qkeep EQ 0, ndelete) - ; Free pointers for partial reductions - if (ndelete GT 0) then begin - for i=0L, ndelete-1L do begin - ptr_free, zlogfile[idelete[i]] - ptr_free, zbestfile[idelete[i]] - ptr_free, zbestrun1d[idelete[i]] - endfor - endif - - plist = plist[ikeep] - platefile = platefile[ikeep] - combparfile = combparfile[ikeep] - comblogfile = comblogfile[ikeep] - combpsfile = combpsfile[ikeep] - zlogfile = zlogfile[ikeep] - zbestfile = zbestfile[ikeep] - zbestrun1d = zbestrun1d[ikeep] - - ;---------- - ; Make a list of one S/N for each field which is the minimum of - ; G1, I1, G2, I2. - ; Assign a field quality, but do not over-write any field quality - ; from the manually-assigned one in the "spPlateList.par" file. - - qualstring = ['bad', 'marginal', 'good'] - for ifile=0L, nfile-1L do begin - if (strtrim(plist[ifile].statuscombine,2) EQ 'Done') then begin - strplt=field_to_string(plist[ifile].field) - strmjd=strtrim(string(plist[ifile].mjd),2) - plist[ifile].plotsn='SNPLOT' - - nexps=[plist[ifile].nexp_b1, plist[ifile].nexp_r1, $ - plist[ifile].nexp_b2, plist[ifile].nexp_r2] - valid = where(nexps ne 0, ct) - valid_spb = where([plist[ifile].nexp_b1,plist[ifile].nexp_b2] ne 0, ctb) - valid_spr = where([plist[ifile].nexp_r1,plist[ifile].nexp_r2] ne 0, ctr) - nexp_max = 0 - nexp_min = 0 - if ct ne 0 then begin - nexp_min = min(nexps[valid], max=nexp_max) - fieldsn2=[plist[ifile].sn2_g1, plist[ifile].sn2_i1, $ - plist[ifile].sn2_g2, plist[ifile].sn2_i2] - plist[ifile].fieldsn2 = min(fieldsn2[valid]) - - if keyword_set(dereddened_sn2) then begin - deredsn2=[plist[ifile].dered_sn2_g1, plist[ifile].dered_sn2_i1, $ - plist[ifile].dered_sn2_g2, plist[ifile].dered_sn2_i2] - plist[ifile].deredsn2 = min(deredsn2[valid]) - endif - - if keyword_set(rawsn2) then begin - sn2b = [plist[ifile].sn2_g1, plist[ifile].sn2_g2] - sn2r = [plist[ifile].sn2_i1, plist[ifile].sn2_i2] - endif else begin - if keyword_set(dereddened_sn2) then begin - sn2b = [plist[ifile].dered_sn2_g1, plist[ifile].dered_sn2_g1] - sn2r = [plist[ifile].dered_sn2_i1, plist[ifile].dered_sn2_i2] - endif - endelse - if ctb ne 0 then min_sn2_b = min(sn2b[valid_spb]) else min_sn2_b=0 - if ctr ne 0 then min_sn2_r = min(sn2r[valid_spr]) else min_sn2_r=0 - endif - iqual = 2 - prog = strtrim(plist[ifile].programname,2) - mjd = plist[ifile].mjd - is_elg_plate = strcmp(prog, 'ELG_NGC') OR strcmp(prog, 'ELG_SGC') - if plist[ifile].field < 15000 then begin - ;--- JEB 2018-05-23: if elg plate, plate is 'good' no matter what SN2 - if NOT is_elg_plate then begin - ;-- JEB 2018-05-23: new thresholds after 2017-10-03 - if (mjd GT 58029) AND ((min_sn2_b LT 8.0) OR (min_sn2_r LT 18.)) then $ - iqual = iqual < 0 - if (mjd LE 58029) AND ((min_sn2_b LT 10.0) OR (min_sn2_r LT 22.0)) then $ - iqual = iqual < 0 - endif - endif - if (plist[ifile].fbadpix GT 0.10) then iqual = iqual < 0 - ; For reductions before v5_1, NEXP_MIN and NEXP_MAX are always zero - ; HJIM decoment the next three lines - if (nexp_max GT 0) then begin - if plist[ifile].field < 16000 then begin - if (nexp_min LT 3) then iqual = iqual < 0 - endif - endif - - min_sn2_b_scaled=min_sn2_b/(plist[ifile].exptime/3600) - min_sn2_r_scaled=min_sn2_r/(plist[ifile].exptime/3600) - if ((min_sn2_b lt 10.) or (min_sn2_r lt 22.)) and $ - ((min_sn2_b_scaled lt 10.0) or (min_sn2_r_scaled lt 22.0)) then iqual = iqual < 0 - - if (NOT keyword_set(strtrim(plist[ifile].fieldquality))) then $ - plist[ifile].fieldquality = qualstring[iqual] - endif - endfor - - ;---------- - ; Decide which fields constitute unique tiles with the required S/N, - ; then set QSURVEY=1. - ; Also insist that PROGNAME='main'. - - ; First get the unique list of TILE - - if tag_exist(plist, 'tileid') then begin - isort = sort(plist.tileid) - isort = isort[ uniq(plist[isort].tileid) ] - tilelist = plist[isort].tileid - - for itile=0L, n_elements(tilelist)-1L do begin - indx = where(plist.tileid EQ tilelist[itile] $ - AND (strtrim(plist.fieldquality,2) EQ 'good' $ - OR strtrim(plist.fieldquality,2) EQ 'marginal') $ - AND (strtrim(plist.survey,2) EQ 'bhm-mwm' $ - OR strtrim(plist.survey,2) EQ 'bhm' $ - OR strtrim(plist.survey,2) EQ 'boss' $ - OR strtrim(plist.survey,2) EQ 'mwm'), ct) - if (ct GT 0) then begin - snbest = max(plist[indx].fieldsn2, ibest) - plist[indx[ibest]].qsurvey = 1 - endif - endfor - endif - ;--------------------------------------------------------------------------- - ; Read the Spectro-1D files - - for i=0L, nfile-1L do begin - - for j=0L, n_elements((*zbestfile[i]))-1L do begin - - if (j EQ 0) then begin - ifile = i ; First instance of z-file for this field - endif else begin - ifile = n_elements(plist) ; Append another entry to field list - plist = [plist, plist[i]] - endelse - - plist[ifile].run1d = (*zbestrun1d[i])[j] - - ;---------- - ; Read Zbest file - get status of 1D - - if (keyword_set((*zbestfile[i])[j])) then $ - hdr2 = headfits((*zbestfile[i])[j], /silent, errmsg=errmsg) $ - else $ - hdr2 = 0 - - if (size(hdr2, /tname) EQ 'STRING') then begin - strplt=field_to_string(plist[ifile].field) - strmjd=strtrim(string(plist[ifile].mjd),2) - - plist[ifile].data='DATA' - plist[ifile].plots='PLOTS' - zans = mrdfits((*zbestfile[i])[j], 1, /silent) - plug = mrdfits(platefile[i], 5, /silent) - class = strtrim(zans.class,2) - objtyp = strtrim(plug.objtype,2) - ; Use the ZWARNING flag if it exists to identify SKY or UNKNOWN. - if ((where(tag_names(zans) EQ 'ZWARNING'))[0] NE -1) then $ - zwarning = zans.zwarning $ - else $ - zwarning = bytarr(n_elements(zans)) - qsky = (zwarning AND 1) NE 0 - plist[ifile].n_galaxy = total(class EQ 'GALAXY' AND zwarning EQ 0 AND objtyp NE 'SPECTROPHOTO_STD' AND objtyp NE 'SKY') - plist[ifile].n_qso = total(class EQ 'QSO' AND zwarning EQ 0 AND objtyp NE 'SPECTROPHOTO_STD' AND objtyp NE 'SKY') - plist[ifile].n_star = total(class EQ 'STAR' AND zwarning EQ 0 AND objtyp NE 'SPECTROPHOTO_STD' AND objtyp NE 'SKY') - plist[ifile].n_std = total(objtyp EQ 'SPECTROPHOTO_STD') - plist[ifile].n_star =total(class EQ 'STAR' AND zwarning EQ 0 AND objtyp NE 'SPECTROPHOTO_STD' AND objtyp NE 'SKY'); $ - ;-total(objtyp EQ 'SPECTROPHOTO_STD' AND zwarning EQ 0) - plist[ifile].n_unknown = total((class EQ 'UNKNOWN' AND objtyp NE 'SPECTROPHOTO_STD' AND objtyp NE 'SKY') $ - OR (zwarning NE 0 AND qsky EQ 0)) - plist[ifile].n_sky = total(class EQ 'SKY' OR qsky EQ 1) - plist[ifile].status1d = 'Done' - nobj = n_elements(zans) - targets = strarr(nobj) - ;Decoment this part for the final version HJIM firstcarton - if Long(plist[ifile].field) lt 15000 then begin - if tag_exist(plug, 'primtarget') then $ - for iobj=0L, nobj-1L do $ - targets[iobj] = sdss_flagname('TARGET',plug[iobj].primtarget, /silent, /concat)+' ' - if (tag_exist(plug,'BOSS_TARGET1')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] = sdss_flagname('BOSS_TARGET1', plug[iobj].boss_target1, /silent, /concat)+' ' - ;; Adding sequels target mask bits - if (tag_exist(plug, 'EBOSS_TARGET0')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] += sdss_flagname('EBOSS_TARGET0', plug[iobj].eboss_target0, /silent, /concat)+' ' - ;; Adding eboss target mask bits - if (tag_exist(plug, 'EBOSS_TARGET1')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] += sdss_flagname('EBOSS_TARGET1', plug[iobj].eboss_target1, /silent, /concat)+' ' - if (tag_exist(plug, 'EBOSS_TARGET2')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] += sdss_flagname('EBOSS_TARGET2', plug[iobj].eboss_target2, /silent, /concat)+' ' - endif - for iobj=0L, nobj-1L do begin - if targets[iobj] eq '' then targets[iobj] = zans[iobj].class - endfor - - - - - ;; Objects which shouldn't count against the success statistics - bad_fiber = sdss_flagval('ZWARNING', 'LITTLE_COVERAGE') OR $ - sdss_flagval('ZWARNING', 'UNPLUGGED') OR $ - sdss_flagval('ZWARNING', 'BAD_TARGET') - if tag_exist(plist,'n_target_main') then begin - imain = where((strmatch(targets,'*GALAXY *') $ - OR strmatch(targets,'*GALAXY_BIG *') $ - OR strmatch(targets,'*GALAXY_BRIGHT_CORE *')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nmain) - plist[ifile].n_target_main = nmain - if (nmain GT 0) then plist[ifile].success_main = $ - 100 * total(zans[imain].zwarning EQ 0 $ - AND (strmatch(zans[imain].class,'GALAXY*') $ - OR strmatch(zans[imain].class,'QSO*'))) / nmain - endif - if tag_exist(plist,'n_target_lrg1') then begin - ilrg1 = where((strmatch(targets,'*GALAXY_RED *') $ - OR strmatch(targets,'*GALAXY_RED_II *') $ - OR strmatch(targets,'*GAL_LOZ *') $ - OR strmatch(targets,'*LRG*')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nlrg1) - plist[ifile].n_target_lrg1 = nlrg1 - if (nlrg1 GT 0) then plist[ifile].success_lrg1 = $ - 100 * total(zans[ilrg1].zwarning_noqso EQ 0 $ - AND strmatch(zans[ilrg1].class,'GALAXY*')) / nlrg1 - endif - if tag_exist(plist,'n_target_lrg2') then begin - ilrg2 = where((strmatch(targets,'*GAL_HIZ *') $ - OR strmatch(targets,'*GAL_CMASS*')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nlrg2) - plist[ifile].n_target_lrg2 = nlrg2 - if (nlrg2 GT 0) then plist[ifile].success_lrg2 = $ - 100 * total(zans[ilrg2].zwarning_noqso EQ 0 $ - AND strmatch(zans[ilrg2].class,'GALAXY*')) / nlrg2 - endif - if tag_exist(plist,'n_target_elg') then begin - ielg = where((strmatch(targets,'*ELG*')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nelg) - plist[ifile].n_target_elg = nelg - if (nelg GT 0) then plist[ifile].success_elg = $ - 100 * total(zans[ielg].zwarning_noqso EQ 0 $ - AND strmatch(zans[ielg].class,'GALAXY*')) / nelg - endif - if tag_exist(plist,'n_target_qso') then begin - iqso = where(strmatch(targets,'*QSO*') $ - AND (zans.zwarning AND bad_fiber) EQ 0, nqso) - plist[ifile].n_target_qso = nqso - if (nqso GT 0) then plist[ifile].success_qso = $ - 100 * total(zans[iqso].zwarning EQ 0 $ - AND strmatch(zans[iqso].class,'QSO*')) / nqso - endif - endif else begin - ;---------- - ; Find the state of the 1D reductions -- spZbest file is missing - - if (file_search((*zlogfile[i])[j])) then begin - lastline = get_lastline((*zlogfile[i])[j]) - if (strmatch(lastline[0], '*Successful completion*')) then begin - ; Case where this 1D log file completed, which is not - ; a case that should ever occur. - plist[ifile].status1d = 'FAILED'; Should have found spZbest - endif else begin - ; Case where this 1D log file isn't completed - if (keyword_set(purge1d)) then begin - splog, 'PURGE1D ', (*zlogfile[i])[j] - rmfile, (*zlogfile[i])[j] - plist[ifile].status1d = 'Pending' - endif else begin - plist[ifile].status1d = 'RUNNING' - endelse - endelse - endif else begin - plist[ifile].status1d = 'Pending' - endelse - endelse - endfor - endfor - - ;--------------------------------------------------------------------------- - ; Write ASCII + HTML output files - alias = [['PROGRAMNAME' , 'PROG' ], $ - ['DATA' , 'DATA' ], $ - ['DESIGNID' , 'DESIGN' ], $ - ['PLOTS' , 'PLOTS' ], $ - ['CHUNKHTML' , 'CHUNK' ], $ - ['FIELDSN2' , 'SN^2' ], $ - ['DEREDSN2' , 'SN^2' ], $ - ['EXPTIME' , 'EXPTIME' ], $ - ['N_GALAXY' , 'N_gal' ], $ - ['N_QSO' , 'N_QSO' ], $ - ['N_STAR' , 'N_star' ], $ - ['N_UNKNOWN' , 'N_unk' ], $ - ['N_SKY' , 'N_sky' ], $ - ['N_STD' , 'N_std' ], $ - ['FBADPIX' , 'Badpix' ], $ - ['STATUS2D' , '2D' ], $ - ['STATUSCOMBINE', 'Combine' ], $ - ['STATUS1D' , '1D' ], $ - ['DERED_SN2_G1' , 'SN2_G1' ], $ - ['DERED_SN2_I1' , 'SN2_I1' ], $ - ['DERED_SN2_G2' , 'SN2_G2' ], $ - ['DERED_SN2_I2' , 'SN2_I2' ], $ - ['PLOTSN' , 'SNPLOT' ], $ - ['FIELDQUALITY' , 'QUALITY' ] ] - - if keyword_set(legacy) then begin - trimtags1 = [[alias], $ - [['SUCCESS_MAIN' , '%Main' ], $ - ['SUCCESS_LRG1' , '%LRG1' ], $ - ['SUCCESS_LRG2' , '%LRG2' ], $ - ['SUCCESS_ELG' , '%ELG' ], $ - ['SUCCESS_QSO' , '%QSO' ]]] - endif - - isort2 = reverse(sort(strtrim(strcompress(plist.run2d+' ' +string(plist.mjd)),2))) - isort1 = reverse(sort(strtrim(strcompress(plist.run2d+' ' +string(99999-plist.field)),2))) - toptext = [ $ - '

          Last Update: '+ systime()+', Last Update MJD: '+ strtrim(string(current_mjd()),2)+'

          ', '
            ', $ - '
          • HOME
          • ', $ - '
          • Field list sorted by field,' $ - + ' MJD
          • ', $ - '
          • Field quality sorted by field,' $ - + ' MJD
          • ', $ - '
          • Field list as FITS
          • ','
          '] - map_sdss=1 - if map_sdss ne 0 then begin - spawn,'plot_sdss_sky' - toptext = [toptext, '

          ','
        '] - endif - - if dereddened_sn2 NE 0 then begin - toptext = [toptext, '

        (S/N)^2 values are corrected for galactic dust reddening

        '] - endif else begin - toptext = [toptext, '

        (S/N)^2 values are not corrected for galactic dust reddening

        '] - endelse - - platelist_write, plist[isort1], trimtags=trimtags1, alias=alias, $ - fileprefix='fieldlist', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Fields Observed List' - platelist_write, plist[isort2], trimtags=trimtags1, alias=alias, $ - fileprefix='fieldlist-mjdsort', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Fields Observed List' - - platelist_write, plist[isort1], trimtags=trimtags2, alias=alias, $ - fileprefix='fieldquality', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Field Quality List' - platelist_write, plist[isort2], trimtags=trimtags2, alias=alias, $ - fileprefix='fieldquality-mjdsort', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Field Quality List' - - ;---------- - ; Write the FITS binary table - plist = struct_selecttags(plist, except_tags='PLOTSN') - plist = struct_selecttags(plist, except_tags='DATA') - plist = struct_selecttags(plist, except_tags='PLOTS') - plist = struct_selecttags(plist, except_tags='CHUNKHTML') - plist = struct_selecttags(plist, except_tags='TILEID') - mwrfits, plist, fitsfile, /create - - for i=0L, n_elements(zlogfile)-1L do ptr_free, zlogfile[i] - for i=0L, n_elements(zbestfile)-1L do ptr_free, zbestfile[i] - for i=0L, n_elements(zbestrun1d)-1L do ptr_free, zbestrun1d[i] - - ;---------- - ; See if the fieldlist webapp is installed; if so, update fieldlist.json - ; Only do this if there is a single run2d - if n_elements(run2d) eq 1 then begin - appdir = getenv('BOSS_SPECTRO_REDUX')+'/'+run2d+'/fieldlist' - json_exists = file_test(appdir+'/data/fieldlist.json') - - if json_exists eq 1 then begin - cmd = appdir+'/bin/platelist2json.py '+fitsfile+' > '+appdir+'/data/fieldlist.json' - spawn, cmd - endif - endif - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/conflist_old5april2021.pro b/pro/spec1d/conflist_old5april2021.pro deleted file mode 100644 index 64ac1f1c3..000000000 --- a/pro/spec1d/conflist_old5april2021.pro +++ /dev/null @@ -1,1814 +0,0 @@ -;+ -; NAME: -; fieldlist -; -; PURPOSE: -; Make list of reduced fields -; -; CALLING SEQUENCE: -; fieldlist, [ /create, topdir=, outdir=, run2d=, run1d=, $ -; /purge2d, /purge1d, /killpartial, skipcart=, /rawsn2, plist= ] -; -; INPUTS -; -; OPTIONAL INPUTS: -; create - If set, then re-generate the "platelist.fits" file; -; if not set, then simply read this file from a previous call. -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; outdir - Optional override of both topdir and $BOSS_SPECTRO_REDUX -; for output directory location -; run2d - Optional RUN2D subdirectories to include in outputs; -; set to '' to not search subdirectories; -; set to '*' to search all subdirs; default to $RUN2D -; run1d - Optional RUN1D subdirectories to include in outputs -; set to '' to not search subdirectories; -; set to '*' to search all subdirs; default to $RUN1D -; purge2d - If set, then delete all log files for plates that are -; considered to be 'RUNNING', but not those that are 'Done', -; 'Pending' or 'FAILED'. Those plates are then listed as -; 'Pending'. Setting /PURGE2D also sets /CREATE. -; Deleting these log files will cause the next invocation -; of BATCH2D to re-reduce those plates. -; purge1d - If set, then delete all log files for plates that are -; considered to be 'RUNNING', but not those that are 'Done', -; 'Pending' or 'FAILED'. Those plates are then listed as -; 'Pending'. Setting /PURGE1D also sets /CREATE. -; Deleting these log files will cause the next invocation -; of BATCH1D to re-reduce those plates. -; killpartial - If set, then delete all files associated with a combine -; of only some nights of a multi-night plate. Such files -; can be produced by the Spectro-Robot when it fully reduces -; data from one night, but then more data is obtained for -; that plugging of the same plate on a later date. This -; deletes spPlate and spZ files and their logs files. -; skipcart - cart number or list of cart numbers to drop from platelist -; rawsn2 - If set, output original raw SN2 numbers in html and text -; files; otherwise use dereddened (dust extinction corrected) -; values. Both are always written to the FITS file output. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; plist - Output structure with information for each plate. -; -; COMMENTS: -; RUN2D: If option isn't set, use $RUN2D env var -; RUN2D/RUN1D = '*' means seach all subdirs -; Output directory: -; If OUTDIR is set, use that. -; Otherwise, if a single RUN2D is given, use $BOSS_SPECTRO_REDUX/[RUN2D]/ -; --> Note: RUN2D option, not $RUN2D environment variable -; Otherwise (none or multiple RUN2D), use $BOSS_SPECTRO_REDUX/ -; Option TOPDIR can override the value of $BOSS_SPECTRO_REDUX -; in the above, but it won't override OUTDIR -; -; TOPDIR is used to override $BOSS_SPECTRO_REDUX for both input and -; output. OUTDIR can be used to override TOPDIR for output if you want -; to get input from one dir while writing output to a different dir. -; -; The following files are generated in the output directory -; fieldlist.fits -; fieldlist.txt -; fieldlist.html -; fieldlist-mjdsort.txt -; fieldlist-mjdsort.html -; fieldquality.txt -; fieldquality.html -; fieldquality-mjdsort.txt -; fieldqualitymjdsort.html -; -; If INFILE is a list of plan files, i.e. -; spPlancomb-0306-51690.par -; then look for the following files for the 2D reductions: -; spPlancomb-0306-51690.par -; spDiagcomb-0306-51690.log -; spPlan2d-0306-51690.par (as specified by 'planfile2d' in spPlancomb) -; spDiag2d-0306-51690.log -; spField-0306-51690.fits (as specified by 'combinefile' in spPlancomb) -; and look for the following files for the 1D reductions: -; spPlan1d-0306-51690.par -; spZbest-0306-51690.fits -; spDiag1d-0306-51690.log -; -; PLATESN2 is set to the minimum of the 4 cameras. -; DEREDSN2 like PLATESN2, but with dereddened SN2 values -; PLATEQUALITY defaults to 'good'. -; PLATEQUALITY is set to 'bad' if MINSN2(B) < 10.0 or MINSN2(R) < 22.0 -; --> previously if MINSN2 < 13.0 -; PLATEQUALITY is set to 'bad' if FBADPIX > 0.10 -; PLATEQUALITY is set to 'bad' if min(NEXP_*) < 3 -; -; Decide which plates constitute unique tiles with the required S/N, -; then set QSURVEY=1. Require PLATEQUALITY='good'. -; Also require PROGNAME='main'. -; -; EXAMPLES: -; -; BUGS: -; Spawns the Unix commands 'tail' and 'grep', which is very slow. -; If the spField file is missing, it doesn't try to figure out which -; cart it really is and thus ignores skipcart -; -; DATA FILES: -; $PLATELIST_DIR/platePlans.par -; $SPECLOG_DIR/opfiles/spPlateList.par -; -; PROCEDURES CALLED: -; apo_checklimits() -; chunkinfo() -; copy_struct_inx -; djs_diff_angle() -; djs_filepath() -; fileandpath() -; headfits() -; mrdfits() -; repstr() -; rmfile -; splog -; struct_print -; sxpar() -; tai2airmass() -; yanny_free -; yanny_par() -; yanny_read -; yanny_readone() -; -; INTERNAL SUPPORT ROUTINES: -; platelist_write -; -; REVISION HISTORY: -; 29-Oct-2000 Written by D. Schlegel, Princeton -; 11-Jan-2011 Stephen Bailey, LBNL -; * Updated (S/N)^2 thresholds for "bad" -; * Added get_lastline to be faster than spawn tail -1 -; 21-Aug-2012 Stephen Bailey, LBNL -; * Changed default output directory to RUN2D -; 22-Jan-2019 Hector Ibarra, adapted for the BHM HJIM -;------------------------------------------------------------------------------ - -;---------- -; get lastline of a file faster than spawning 'tail -1' -function get_lastline, filename - ;;; spawn, 'tail -1 '+filename, lastline - - openr, ilun, filename, /get_lun - lastline = '' - while (NOT eof(ilun)) do begin - readf, ilun, lastline - endwhile - close, ilun - free_lun, ilun - - return, lastline -end - -pro platelist_write, plist, trimtags=trimtags, alias=alias, $ - fileprefix=fileprefix, title=title, toptext=toptext, outdir=outdir1 - - if (keyword_set(outdir1)) then begin - outdir = outdir1 - endif else begin - outdir = getenv('BOSS_SPECTRO_REDUX') - endelse - - ascfile = djs_filepath(fileprefix+'.txt', root_dir=outdir) - htmlfile = djs_filepath(fileprefix+'.html', root_dir=outdir) - - trimdat = struct_trimtags(plist, select_tags=trimtags[0,*]) - trimstring = struct_trimtags(plist, select_tags=trimtags[0,*], $ - format=trimtags[1,*]) - struct_print, trimstring, filename=ascfile, fdigit=3, alias=alias - - for itag=0L, n_tags(trimdat)-1L do begin - for iarr=0L, n_elements(trimdat[0].(itag))-1L do begin - for irow=0L, n_elements(trimdat)-1L do begin - markstring = apo_checklimits('SUMMARY', $ - strupcase(trimtags[0,itag]), '', $ - trimdat[irow].(itag)[iarr], /html) - trimstring[irow].(itag)[iarr] = markstring $ - + trimstring[irow].(itag)[iarr] - if strmatch(markstring,'' - endfor - endfor - endfor - struct_print, trimstring, /html, alias=alias, tarray=tarray, css=css - openw, lun, htmlfile, /get_lun - printf, lun, '' - printf, lun, '' - printf, lun, '' - printf, lun, '' - printf, lun, '' + title + '' - printf, lun, '' - for c=0L, n_elements(css)-1L do $ - printf, lun, css[c] - printf, lun, '' - printf, lun, '' - printf, lun, '

        ' + title + '

        ' - for i=0L, n_elements(toptext)-1L do $ - printf, lun, toptext[i] - -; for iline=0, n_elements(tarray)-1 do $ -; printf, lun, tarray[iline] - ifirst = where(plist.run2d NE shift(plist.run2d,1)) - for i=0, 2 do printf, lun, tarray[i] - for iline=0L, n_elements(plist)-1L do begin - ; Make a new html table for each new RUN2D - if (iline NE 0 AND total(iline EQ ifirst) NE 0) then $ - printf, lun, tarray[1] - printf, lun, tarray[3+iline] - endfor - printf, lun, '' - - printf, lun, '' - printf, lun, '' - close, lun - free_lun, lun - - return -end -;------------------------------------------------------------------------------ -pro conflist, plist=plist, create=create, $ - topdir=topdir1, outdir=outdir1, $ - run2d=run2d1, run1d=run1d1, $ - purge2d=purge2d, purge1d=purge1d, killpartial=killpartial, $ - skipcart=skipcart, rawsn2=rawsn2, fields=fields, $ - legacy=legacy, plates=plates - - if (n_elements(run2d1) GT 0) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - - if (n_elements(run1d1) GT 0) then begin - run1d = strtrim(run1d1,2) - endif else begin - if (n_elements(run2d1) EQ 1) then begin - run1d = run2d - endif else begin - if (n_elements(run2d) GT 1) then begin - run1d = '*' - endif else begin - run1d = getenv('RUN1D') - endelse - endelse - endelse - - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - - if (keyword_set(outdir1)) then begin - outdir = outdir1 - if strmid(outdir, 0, 1) NE '/' then begin - cd, current=current_dir - outdir = current_dir + '/' + outdir - endif - endif else begin - ; If exactly one run2d is given, use that subdir - if (n_elements(run2d) EQ 1) && (run2d NE '*') then $ - outdir = topdir + '/' + run2d $ - else $ - outdir = topdir - endelse - ;platelist - if keyword_set(skipcart) then begin - splog, 'WARNING: Dropping plates from carts', skipcart - endif - - ;---------- - ; If the /CREATE flag is not set, and the platelist file already exists - ; on disk, then simply return the info in that file. - - fitsfile = djs_filepath('conflist.fits', root_dir=outdir) - - if (NOT keyword_set(create) AND NOT keyword_set(purge2d) $ - AND NOT keyword_set(purge1d)) then begin - thisfile = (findfile(fitsfile))[0] - if (keyword_set(thisfile)) then begin - plist = mrdfits(thisfile, 1, /silent) - return - endif - endif - - ;---------- - ; Generate the list of plan files or plate files if not specified - - fitsfile = djs_filepath('conflist.fits', root_dir=outdir) - - if (keyword_set(run2d)) then $ - run2dlist = get_mjd_dir(topdir, mjd=run2d, /alldirs) $ - else $ - run2dlist = '' - - for j=0L, n_elements(run2dlist)-1L do begin - if (keyword_set(run2dlist[j])) then $ - thisdir = djs_filepath('', root_dir=topdir, subdir=run2dlist[j]) $ - else $ - thisdir = topdir - if not keyword_set(fields) then begin - if keyword_set(legacy) or keyword_set(plates) then begin - dirlist = get_mjd_dir(thisdir,/alldirs) - for ili=0, n_elements(dirlist)-1 do begin - if strmid(strtrim(dirlist[ili],2),4,1) ne 'p' then begin - if strmid(strtrim(dirlist[ili],2),5,1) ne 'p' then begin - dirlist[ili]='' - endif - endif - endfor - ii = where(dirlist NE '', ct) - if (ct EQ 0) then begin - splog, 'There is no plate directories' - return - endif else begin - dirlist = dirlist[ii] - endelse - endif else begin - dirlist = get_mjd_dir(thisdir, mjstart=0, mjend=999999) - endelse - endif else begin - dirlist = string(fields, format='(i05.5)') - endelse - if (keyword_set(dirlist)) then begin - for i=0L, n_elements(dirlist)-1L do begin - ; Select only those files matching the plate of the directory - thisfile = findfile(djs_filepath('spPlancomb-'+repstr(dirlist[i],'p','')+'*.par', $ - root_dir=thisdir, subdir=dirlist[i]), count=ct) - if (ct EQ 0) then $ - thisfile = findfile(djs_filepath('spField-'+string(repstr(dirlist[i],'p',''), format='(i05.5)')+'*.fits', $ - root_dir=thisdir, subdir=dirlist[i]), count=ct) - if (ct GT 0) then begin - if (keyword_set(fullfile)) then begin - fullfile = [fullfile, thisfile] - fullrun2d = [fullrun2d, replicate(run2dlist[j],ct)] - endif else begin - fullfile = thisfile - fullrun2d = replicate(run2dlist[j],ct) - endelse - endif - endfor - endif - endfor - nfile = n_elements(fullfile) - if (nfile EQ 0) then return - - fullfile = fullfile[sort(fullfile)] ; Sort these files - - ;---------- - ; Create output structure - if keyword_set(legacy) then begin - plist = create_struct( $ - 'plate' , 0L, $ - 'tileid' , 0L, $ - 'designid' , 0L, $ - 'mjd' , 0L, $ - 'run2d' , '', $ - 'run1d' , '', $ - 'racen' , 0.0, $ - 'deccen' , 0.0, $ - 'epoch' , 0.0, $ - 'cartid' , 0L, $ - 'tai' , 0.0D, $ - 'tai_beg' , 0.0D, $ - 'tai_end' , 0.0D, $ - 'airmass' , 0.0, $ - 'exptime' , 0.0, $ - 'mapname' , ' ', $ - 'survey' , ' ', $ - 'programname' , ' ', $ - 'chunk' , ' ', $ - 'chunkhtml' , ' ', $ - 'data' , ' ', $ - 'plotsn' , ' ', $ - 'plots' , ' ', $ - 'platequality' , ' ', $ - 'platesn2' , 0.0, $ - 'deredsn2' , 0.0, $ - 'qsurvey' , 0L, $ - 'mjdlist' , ' ', $ - 'nexp' , 0L, $ - 'nexp_b1' , 0L, $ - 'nexp_b2' , 0L, $ - 'nexp_r1' , 0L, $ - 'nexp_r2' , 0L, $ - 'expt_b1' , 0.0, $ - 'expt_b2' , 0.0, $ - 'expt_r1' , 0.0, $ - 'expt_r2' , 0.0, $ - 'sn2_g1' , 0.0, $ - 'sn2_r1' , 0.0, $ - 'sn2_i1' , 0.0, $ - 'sn2_g2' , 0.0, $ - 'sn2_r2' , 0.0, $ - 'sn2_i2' , 0.0, $ - 'dered_sn2_g1' , 0.0, $ - 'dered_sn2_r1' , 0.0, $ - 'dered_sn2_i1' , 0.0, $ - 'dered_sn2_g2' , 0.0, $ - 'dered_sn2_r2' , 0.0, $ - 'dered_sn2_i2' , 0.0, $ - 'goffstd' , 0., $ - 'grmsstd' , 0., $ - 'roffstd' , 0., $ - 'rrmsstd' , 0., $ - 'ioffstd' , 0., $ - 'irmsstd' , 0., $ - 'groffstd' , 0., $ - 'grrmsstd' , 0., $ - 'rioffstd' , 0., $ - 'rirmsstd' , 0., $ - 'goffgal' , 0., $ - 'grmsgal' , 0., $ - 'roffgal' , 0., $ - 'rrmsgal' , 0., $ - 'ioffgal' , 0., $ - 'irmsgal' , 0., $ - 'groffgal' , 0., $ - 'grrmsgal' , 0., $ - 'rioffgal' , 0., $ - 'rirmsgal' , 0., $ - 'nguide' , 0L , $ - 'seeing20' , 0.0, $ - 'seeing50' , 0.0, $ - 'seeing80' , 0.0, $ - 'rmsoff20' , 0.0, $ - 'rmsoff50' , 0.0, $ - 'rmsoff80' , 0.0, $ - 'airtemp' , 0.0, $ - 'xsigma' , 0.0, $ - 'xsigmin' , 0.0, $ - 'xsigmax' , 0.0, $ - 'wsigma' , 0.0, $ - 'wsigmin' , 0.0, $ - 'wsigmax' , 0.0, $ - 'xchi2' , 0.0, $ - 'xchi2min' , 0.0, $ - 'xchi2max' , 0.0, $ - 'skychi2' , 0.0, $ - 'schi2min' , 0.0, $ - 'schi2max' , 0.0, $ - 'fbadpix' , 0.0, $ - 'fbadpix1' , 0.0, $ - 'fbadpix2' , 0.0, $ - 'n_total' , 0L, $ - 'n_galaxy' , 0L, $ - 'n_qso' , 0L, $ - 'n_star' , 0L, $ - 'n_unknown' , 0L, $ - 'n_sky' , 0L, $ - 'n_std' , 0L, $ - 'n_target_main', 0L, $ - 'n_target_lrg1', 0L, $ - 'n_target_lrg2', 0L, $ - 'n_target_elg', 0L, $ - 'n_target_qso' , 0L, $ - 'success_main' , 0.0, $ - 'success_lrg1' , 0.0, $ - 'success_lrg2' , 0.0, $ - 'success_elg' , 0.0, $ - 'success_qso' , 0.0, $ - 'status2d' , 'Missing', $ - 'statuscombine', 'Missing', $ - 'status1d' , 'Missing', $ - 'public' , ' ', $ - 'qualcomments' , ' ' ) - endif else begin - if keyword_set(plates) then begin - plist = create_struct( $ - ;'field' , 0L, $ - 'plate' , 0L, $ - 'tileid' , 0L, $ - 'designid' , 0L, $ - 'mjd' , 0L, $ - 'run2d' , '', $ - 'run1d' , '', $ - 'racen' , 0.0, $ - 'deccen' , 0.0, $ - 'epoch' , 0.0, $ - 'cartid' , 0L, $ - 'tai' , 0.0D, $ - 'tai_beg' , 0.0D, $ - 'tai_end' , 0.0D, $ - 'airmass' , 0.0, $ - 'exptime' , 0.0, $ - 'mapname' , ' ', $ - 'survey' , ' ', $ - 'programname' , ' ', $ - 'chunk' , ' ', $ - 'chunkhtml' , ' ', $ - 'plotsn' , ' ', $ - 'data' , ' ', $ - 'plots' , ' ', $ - 'platequality' , ' ', $ - 'platesn2' , 0.0, $ - 'deredsn2' , 0.0, $ - 'qsurvey' , 0L, $ - 'mjdlist' , ' ', $ - 'nexp' , 0L, $ - 'nexp_b1' , 0L, $ - ;'nexp_b2' , 0L, $ - 'nexp_r1' , 0L, $ - ;'nexp_r2' , 0L, $ - 'expt_b1' , 0.0, $ - ;'expt_b2' , 0.0, $ - 'expt_r1' , 0.0, $ - ;'expt_r2' , 0.0, $ - 'sn2_g1' , 0.0, $ - 'sn2_r1' , 0.0, $ - 'sn2_i1' , 0.0, $ - ;'sn2_g2' , 0.0, $ - ;'sn2_r2' , 0.0, $ - ;'sn2_i2' , 0.0, $ - 'dered_sn2_g1' , 0.0, $ - 'dered_sn2_r1' , 0.0, $ - 'dered_sn2_i1' , 0.0, $ - ;'dered_sn2_g2' , 0.0, $ - ;'dered_sn2_r2' , 0.0, $ - ;'dered_sn2_i2' , 0.0, $ - 'goffstd' , 0., $ - 'grmsstd' , 0., $ - 'roffstd' , 0., $ - 'rrmsstd' , 0., $ - 'ioffstd' , 0., $ - 'irmsstd' , 0., $ - 'groffstd' , 0., $ - 'grrmsstd' , 0., $ - 'rioffstd' , 0., $ - 'rirmsstd' , 0., $ - 'goffgal' , 0., $ - 'grmsgal' , 0., $ - 'roffgal' , 0., $ - 'rrmsgal' , 0., $ - 'ioffgal' , 0., $ - 'irmsgal' , 0., $ - 'groffgal' , 0., $ - 'grrmsgal' , 0., $ - 'rioffgal' , 0., $ - 'rirmsgal' , 0., $ - 'nguide' , 0L , $ - 'seeing20' , 0.0, $ - 'seeing50' , 0.0, $ - 'seeing80' , 0.0, $ - 'rmsoff20' , 0.0, $ - 'rmsoff50' , 0.0, $ - 'rmsoff80' , 0.0, $ - 'airtemp' , 0.0, $ - 'xsigma' , 0.0, $ - 'xsigmin' , 0.0, $ - 'xsigmax' , 0.0, $ - 'wsigma' , 0.0, $ - 'wsigmin' , 0.0, $ - 'wsigmax' , 0.0, $ - 'xchi2' , 0.0, $ - 'xchi2min' , 0.0, $ - 'xchi2max' , 0.0, $ - 'skychi2' , 0.0, $ - 'schi2min' , 0.0, $ - 'schi2max' , 0.0, $ - 'fbadpix' , 0.0, $ - 'fbadpix1' , 0.0, $ - 'fbadpix2' , 0.0, $ - 'n_total' , 0L, $ - 'n_galaxy' , 0L, $ - 'n_qso' , 0L, $ - 'n_star' , 0L, $ - 'n_unknown' , 0L, $ - 'n_sky' , 0L, $ - 'n_std' , 0L, $ - ;'n_target_main', 0L, $ - ;'n_target_lrg1', 0L, $ - ;'n_target_lrg2', 0L, $ - ;'n_target_elg', 0L, $ - 'n_target_qso' , 0L, $ - ;'success_main' , 0.0, $ - ;'success_lrg1' , 0.0, $ - ;'success_lrg2' , 0.0, $ - ;'success_elg' , 0.0, $ - 'success_qso' , 0.0, $ - 'status2d' , 'Missing', $ - 'statuscombine', 'Missing', $ - 'status1d' , 'Missing', $ - 'public' , ' ', $ - 'qualcomments' , ' ', $ - 'moon_frac' , 0.0 ) - endif else begin - plist = create_struct( $ - 'field' , 0L, $ - 'tileid' , 0L, $ - 'designid' , 0L, $ - 'mjd' , 0L, $ - 'run2d' , '', $ - 'run1d' , '', $ - 'racen' , 0.0, $ - 'deccen' , 0.0, $ - 'epoch' , 0.0, $ - 'cartid' , 0L, $ - 'tai' , 0.0D, $ - 'tai_beg' , 0.0D, $ - 'tai_end' , 0.0D, $ - 'airmass' , 0.0, $ - 'exptime' , 0.0, $ - 'mapname' , ' ', $ - 'survey' , ' ', $ - 'programname' , ' ', $ - 'chunk' , ' ', $ - 'chunkhtml' , ' ', $ - 'plotsn' , ' ', $ - 'data' , ' ', $ - 'plots' , ' ', $ - 'fieldquality' , ' ', $ - 'platesn2' , 0.0, $ - 'deredsn2' , 0.0, $ - 'qsurvey' , 0L, $ - 'mjdlist' , ' ', $ - 'nexp' , 0L, $ - 'nexp_b1' , 0L, $ - ;'nexp_b2' , 0L, $ - 'nexp_r1' , 0L, $ - ;'nexp_r2' , 0L, $ - 'expt_b1' , 0.0, $ - ;'expt_b2' , 0.0, $ - 'expt_r1' , 0.0, $ - ;'expt_r2' , 0.0, $ - 'sn2_g1' , 0.0, $ - 'sn2_r1' , 0.0, $ - 'sn2_i1' , 0.0, $ - ;'sn2_g2' , 0.0, $ - ;'sn2_r2' , 0.0, $ - ;'sn2_i2' , 0.0, $ - 'dered_sn2_g1' , 0.0, $ - 'dered_sn2_r1' , 0.0, $ - 'dered_sn2_i1' , 0.0, $ - ;'dered_sn2_g2' , 0.0, $ - ;'dered_sn2_r2' , 0.0, $ - ;'dered_sn2_i2' , 0.0, $ - 'goffstd' , 0., $ - 'grmsstd' , 0., $ - 'roffstd' , 0., $ - 'rrmsstd' , 0., $ - 'ioffstd' , 0., $ - 'irmsstd' , 0., $ - 'groffstd' , 0., $ - 'grrmsstd' , 0., $ - 'rioffstd' , 0., $ - 'rirmsstd' , 0., $ - 'goffgal' , 0., $ - 'grmsgal' , 0., $ - 'roffgal' , 0., $ - 'rrmsgal' , 0., $ - 'ioffgal' , 0., $ - 'irmsgal' , 0., $ - 'groffgal' , 0., $ - 'grrmsgal' , 0., $ - 'rioffgal' , 0., $ - 'rirmsgal' , 0., $ - 'nguide' , 0L , $ - 'seeing20' , 0.0, $ - 'seeing50' , 0.0, $ - 'seeing80' , 0.0, $ - 'rmsoff20' , 0.0, $ - 'rmsoff50' , 0.0, $ - 'rmsoff80' , 0.0, $ - 'airtemp' , 0.0, $ - 'xsigma' , 0.0, $ - 'xsigmin' , 0.0, $ - 'xsigmax' , 0.0, $ - 'wsigma' , 0.0, $ - 'wsigmin' , 0.0, $ - 'wsigmax' , 0.0, $ - 'xchi2' , 0.0, $ - 'xchi2min' , 0.0, $ - 'xchi2max' , 0.0, $ - 'skychi2' , 0.0, $ - 'schi2min' , 0.0, $ - 'schi2max' , 0.0, $ - 'fbadpix' , 0.0, $ - 'fbadpix1' , 0.0, $ - 'fbadpix2' , 0.0, $ - 'n_total' , 0L, $ - 'n_galaxy' , 0L, $ - 'n_qso' , 0L, $ - 'n_star' , 0L, $ - 'n_unknown' , 0L, $ - 'n_sky' , 0L, $ - 'n_std' , 0L, $ - ;'n_target_main', 0L, $ - ;'n_target_lrg1', 0L, $ - ;'n_target_lrg2', 0L, $ - ;'n_target_elg', 0L, $ - 'n_target_qso' , 0L, $ - ;'success_main' , 0.0, $ - ;'success_lrg1' , 0.0, $ - ;'success_lrg2' , 0.0, $ - ;'success_elg' , 0.0, $ - 'success_qso' , 0.0, $ - 'status2d' , 'Missing', $ - 'statuscombine', 'Missing', $ - 'status1d' , 'Missing', $ - 'public' , ' ', $ - 'qualcomments' , ' ' ) - endelse - endelse - - if keyword_set(rawsn2) then begin - sn2tag = 'platesn2' - dereddened_sn2 = 0 - endif else begin - sn2tag = 'deredsn2' - dereddened_sn2 = 1 - endelse - - ;; Which columns to keep for HTML and ASCII files - if keyword_set(legacy) then begin - ;; For platelist - trimtags1 = [ $ - ['plate' , 'i6'], $ - ['mjd' , 'i5'], $ - ['plots' , 'a'], $ - ['racen' , 'f6.2'], $ - ['deccen' , 'f6.2'], $ - ['run2d' , 'a'], $ - ['run1d' , 'a'], $ - ['data' , 'a'], $ - ['platequality' , 'a'], $ - [sn2tag , 'f5.1'], $ - ['n_galaxy' , 'i3'], $ - ['n_qso' , 'i3'], $ - ['n_star' , 'i3'], $ - ['n_unknown' , 'i3'], $ - ['n_sky' , 'i3'], $ - ['n_std' , 'i3'], $ - ['moon_frac' , 'f5.1'], $ - ['survey' , 'a'], $ - ['programname' , 'a'], $ - ['chunkhtml' , 'a'], $ - ['tileid' , 'i'], $ - ['public' , 'a'] ] - ;; For platequality - trimtags2 = [ $ - ['plate' , 'i6'], $ - ['mjd' , 'i5'], $ - ['plots' , 'a'], $ - ['run2d' , 'a'], $ - ['run1d' , 'a'], $ - ['sn2_g1' , 'f5.1'], $ - ['sn2_i1' , 'f5.1'], $ - ['sn2_g2' , 'f5.1'], $ - ['sn2_i2' , 'f5.1'], $ - ['fbadpix' , 'f5.3'], $ -; ['success_main' , 'f5.1'], $ - ['success_lrg1' , 'f5.1'], $ - ['success_lrg2' , 'f5.1'], $ - ['success_elg' , 'f5.1'], $ - ['success_qso' , 'f5.1'], $ - ['status2d' , 'a'], $ - ['statuscombine', 'a'], $ - ['status1d' , 'a'], $ - ['plotsn' , 'a'], $ - ['moon_frac' , 'f5.1'], $ - ['platequality' , 'a'], $ - ['fieldquality' , 'a'], $ - ['survey' , 'a'], $ - ['programname' , 'a'], $ - ['qualcomments' , 'a'] ] - endif else begin - if keyword_set(plates) then begin - ;; For platelist - trimtags1 = [ $ - ['plate' , 'i6'], $ - ['mjd' , 'i5'], $ - ['plots' , 'a'], $ - ['racen' , 'f6.2'], $ - ['deccen' , 'f6.2'], $ - ['run2d' , 'a'], $ - ['run1d' , 'a'], $ - ['data' , 'a'], $ - ['platequality' , 'a'], $ - [sn2tag , 'f5.1'], $ - ['n_galaxy' , 'i3'], $ - ['n_qso' , 'i3'], $ - ['n_star' , 'i3'], $ - ['n_unknown' , 'i3'], $ - ['n_sky' , 'i3'], $ - ['n_std' , 'i3'], $ - ['moon_frac' , 'f5.1'], $ - ['survey' , 'a'], $ - ['programname' , 'a'], $ - ['chunkhtml' , 'a'], $ - ['designid' , 'i'], $ - ['public' , 'a'] ] - ;; For platequality - trimtags2 = [ $ - ['plate' , 'i6'], $ - ['mjd' , 'i5'], $ - ['plots' , 'a'], $ - ['run2d' , 'a'], $ - ['run1d' , 'a'], $ - ['sn2_g1' , 'f5.1'], $ - ['sn2_i1' , 'f5.1'], $ -; ['sn2_g2' , 'f5.1'], $ -; ['sn2_i2' , 'f5.1'], $ - ['fbadpix' , 'f5.3'], $ -; ['success_main' , 'f5.1'], $ -; ['success_lrg1' , 'f5.1'], $ -; ['success_lrg2' , 'f5.1'], $ -; ['success_elg' , 'f5.1'], $ - ['success_qso' , 'f5.1'], $ - ['status2d' , 'a'], $ - ['statuscombine', 'a'], $ - ['status1d' , 'a'], $ - ['plotsn' , 'a'], $ - ['moon_frac' , 'f5.1'], $ - ['platequality' , 'a'], $ - ['fieldquality' , 'a'], $ - ['survey' , 'a'], $ - ['programname' , 'a'], $ - ['qualcomments' , 'a'] ] - endif else begin - ;; For platelist - trimtags1 = [ $ - ['field' , 'i6'], $ - ['mjd' , 'i5'], $ - ['plots' , 'a'], $ - ['racen' , 'f6.2'], $ - ['deccen' , 'f6.2'], $ - ['run2d' , 'a'], $ - ['run1d' , 'a'], $ - ['data' , 'a'], $ - ['fieldquality' , 'a'], $ - [sn2tag , 'f5.1'], $ - ['n_galaxy' , 'i3'], $ - ['n_qso' , 'i3'], $ - ['n_star' , 'i3'], $ - ['n_unknown' , 'i3'], $ - ['n_sky' , 'i3'], $ - ['n_std' , 'i3'], $ - ['moon_frac' , 'f5.1'], $ - ['survey' , 'a'], $ - ['programname' , 'a'], $ - ['chunkhtml' , 'a'], $ - ;['tileid' , 'i'], $ - ['designid' , 'i'], $ - ['public' , 'a'] ] - ;; For platequality - trimtags2 = [ $ - ['field' , 'i6'], $ - ['mjd' , 'i5'], $ - ['plots' , 'a'], $ - ['run2d' , 'a'], $ - ['run1d' , 'a'], $ - ['sn2_g1' , 'f5.1'], $ - ['sn2_i1' , 'f5.1'], $ -; ['sn2_g2' , 'f5.1'], $ -; ['sn2_i2' , 'f5.1'], $ - ['fbadpix' , 'f5.3'], $ -; ['success_main' , 'f5.1'], $ -; ['success_lrg1' , 'f5.1'], $ -; ['success_lrg2' , 'f5.1'], $ -; ['success_elg' , 'f5.1'], $ - ['success_qso' , 'f5.1'], $ - ['status2d' , 'a'], $ - ['statuscombine', 'a'], $ - ['status1d' , 'a'], $ - ['plotsn' , 'a'], $ - ['moon_frac' , 'f5.1'], $ - ['fieldquality' , 'a'], $ - ['fieldquality' , 'a'], $ - ['survey' , 'a'], $ - ['programname' , 'a'], $ - ['qualcomments' , 'a'] ] - endelse - endelse - plist = replicate(plist, nfile) - - ;---------- - ; Read the data file with the public plate information - if keyword_set(legacy) or keyword_set(plates) then begin - publicfile = filepath('spPlateList.par', $ - root_dir=getenv('SPECLOG_DIR'), subdirectory='opfiles') - publicdata = yanny_readone(publicfile, 'SPPLATELIST') - endif else begin - publicfile = filepath('spConfList.par', $ - root_dir=getenv('SDSSCORE'), subdirectory='opfiles') - publicdata = yanny_readone(publicfile, 'SPCONFLIST') - endelse - ;print,publicfile - ;print,getenv('SDSSCORE') - ;print,publicdata - ;if (NOT keyword_set(publicdata)) then $ - ; message, 'Missing spConfList.par file' - - ;--------------------------------------------------------------------------- - ; Loop through all files - ;--------------------------------------------------------------------------- - - platefile = strarr(nfile) - combparfile = strarr(nfile) - comblogfile = strarr(nfile) - combpsfile = strarr(nfile) - zlogfile = ptrarr(nfile) - zbestfile = ptrarr(nfile) - zbestrun1d = ptrarr(nfile) - - for ifile=0L, nfile-1L do begin - - splog, 'Looking at ' + fullfile[ifile] - - junk = fileandpath(fullfile[ifile], path=path) ; Determine PATH - - ;---------- - ; Test if INFILE specifies Yanny param files for spPlancomb. - if (strmid(fullfile[ifile],strlen(fullfile[ifile])-4) EQ '.par') $ - then begin - combparfile[ifile] = fullfile[ifile] - ;hdrp=0 - ;print,fullfile[ifile] - yanny_read, fullfile[ifile], hdr=hdrp,/anonymous - ;print,plate_to_string(yanny_par(hdrp,'plateid')) - if keyword_set(legacy) or keyword_set(plates) then begin - ;plt_strt= - platefile[ifile] = $ - djs_filepath('spField-' $ - +field_to_string(yanny_par(hdrp,'plateid')) $ - +'-'+string(yanny_par(hdrp,'MJD'),format='(i5.5)'), root_dir=path) $ - +'.fits' - endif else begin - platefile[ifile] = $ - djs_filepath('spField-' $ - +field_to_string(yanny_par(hdrp,'fieldid')) $ - +'-'+string(yanny_par(hdrp,'MJD'),format='(i5.5)'), root_dir=path) $ - +'.fits' - endelse - endif else begin - platefile[ifile] = fullfile[ifile] - combparfile[ifile] = repstr(platefile[ifile], 'spField', 'spPlancomb') - combparfile[ifile] = repstr(combparfile[ifile], '.fits', '.par') - endelse - ;---------- - ; Determine names of associated files - ;print,combparfile[ifile] - comblogfile[ifile] = repstr(combparfile[ifile], '.par', '.log') - comblogfile[ifile] = repstr(comblogfile[ifile], 'spPlancomb', 'spDiagcomb') - combpsfile[ifile] = repstr(comblogfile[ifile], '.log', '.ps') - platemjd = strmid(fileandpath(platefile[ifile]), 8, strpos(fileandpath(platefile[ifile]), '.fits') -8 ) - ; - ; run1d is ALWAYS set. If it is not input as a keyword, it has - ; the value '*' - ; - if (keyword_set(run1d[0])) then begin - allsubdirs = get_mjd_dir(path, mjd=run1d, /alldirs) - zbestrun1d[ifile] = ptr_new( allsubdirs[where(~strcmp(allsubdirs,'runz_',5))] ) - endif else $ - zbestrun1d[ifile] = ptr_new('') - nsubdir = n_elements(*zbestrun1d[ifile]) - zbestfile[ifile] = ptr_new(strarr(nsubdir)) - zlogfile[ifile] = ptr_new(strarr(nsubdir)) - for i=0L, nsubdir-1L do $ - (*zbestfile[ifile])[i] = djs_filepath('spZbest-'+platemjd+'.fits', $ - root_dir=path, subdir=((*zbestrun1d[ifile])[i])) - for i=0L, nsubdir-1L do $ - (*zlogfile[ifile])[i] = djs_filepath('spDiag1d-'+platemjd+'.log', $ - root_dir=path, subdir=((*zbestrun1d[ifile]))[i]) - - ; Read the combine plan file to get the list of all the 2D plan files - ; from its Yanny header. - ; Also get the mapping name from the combine par file in case we were - ; unable to get it from the spPlate file. - plist[ifile].mapname = (yanny_readone(combparfile[ifile], 'SPEXP', $ - hdr=hdrcomb,/anonymous))[0].mapname - jdtemp=(yanny_readone(combparfile[ifile], 'SPEXP', $ - hdr=hdrcomb,/anonymous))[0].mjd - jdtemp=jdtemp+2400000.5 - mphase,jdtemp,mfrac - plist[ifile].moon_frac=mfrac - - ;---------- - ; Find the state of the 2D reductions (not the combine step) - - statusdone = 0 - statusrun = 0 - statusmissing = 0 - - ; Check status of individual 2D runs - planlist = yanny_par(hdrcomb, 'planfile2d') ; Assume we find this - logfile2d = '' ; List of 2D log files that exist - for iplan=0L, n_elements(planlist)-1L do begin - yanny_read, djs_filepath(planlist[iplan],root_dir=path), hdr=hdr2d, /anonymous - plist[ifile].mjdlist += ' ' + strtrim(yanny_par(hdr2d, 'MJD'),2) - thislogfile = repstr(planlist[iplan],'spPlan2d','spDiag2d') - thislogfile = repstr(thislogfile,'.par','.log') - thislogfile = (findfile(djs_filepath(thislogfile, root_dir=path)))[0] - ;print,thislogfile - if (keyword_set(thislogfile)) then begin - if (NOT keyword_set(logfile2d)) then logfile2d = thislogfile $ - else logfile2d = [logfile2d, thislogfile] - ;;; spawn, 'tail -1 '+thislogfile, lastline - lastline = get_lastline(thislogfile) - if (strmatch(lastline[0], '*Successful completion*')) then begin - ; Case where this 2D log file completed - statusdone = statusdone + 1 - endif else begin - ; Case where this 2D log file isn't completed - statusrun = statusrun + 1 - endelse - endif else begin - ; Case where this 2D log file missing - statusmissing = statusmissing + 1 - endelse - endfor - - if (statusmissing GT 0 AND statusrun EQ 0) then begin - plist[ifile].status2d = 'Pending' - endif else if (statusmissing GT 0 OR statusrun GT 0) then begin - plist[ifile].status2d = 'RUNNING' - endif else begin - plist[ifile].status2d = 'Done' - endelse - - ;---------- - ; Read plate file - get status of Combine - - ; Get RUN2D from the directory name... - plist[ifile].run2d = fullrun2d[ifile] - hdr1 = headfits(platefile[ifile], /silent, errmsg=errmsg) - if (size(hdr1, /tname) EQ 'STRING') then begin - plist[ifile].n_total = sxpar(hdr1, 'NAXIS2') -; if keyword_set(legacy) then begin -; plist[ifile].plate = sxpar(hdr1, 'PLATEID') -; endif else begin -; plist[ifile].field = sxpar(hdr1, 'FIELDID') -; endelse -; plist[ifile].mjd = sxpar(hdr1, 'MJD') - plist[ifile].mjdlist = sxpar(hdr1, 'MJDLIST') -; thisrun2d = sxpar(hdr1, 'RUN2D', count=ct) -; plist[ifile].run2d = (ct GT 0) ? thisrun2d : '' -; plist[ifile].tileid = sxpar(hdr1, 'TILEID') ; Get from platePlans -; plist[ifile].racen = sxpar(hdr1, 'RA') ; Get from platePlans -; plist[ifile].deccen = sxpar(hdr1, 'DEC') ; Get from platePlans - plist[ifile].cartid = sxpar(hdr1, 'CARTID') - plist[ifile].tai = sxpar(hdr1, 'TAI') - plist[ifile].tai_beg = sxpar(hdr1, 'TAI-BEG') - plist[ifile].tai_end = sxpar(hdr1, 'TAI-END') - plist[ifile].airmass = sxpar(hdr1, 'AIRMASS') -; plist[ifile].airmass = tai2airmass(plist[ifile].ra, $ -; plist[ifile].dec, tai=plist[ifile].tai) - plist[ifile].exptime = sxpar(hdr1, 'EXPTIME') - plist[ifile].nexp = sxpar(hdr1, 'NEXP') - plist[ifile].nexp_b1 = sxpar(hdr1, 'NEXP_B1') - plist[ifile].nexp_r1 = sxpar(hdr1, 'NEXP_R1') - plist[ifile].expt_b1 = sxpar(hdr1, 'EXPT_B1') - plist[ifile].expt_r1 = sxpar(hdr1, 'EXPT_R1') - plist[ifile].sn2_g1 = sxpar(hdr1, 'SPEC1_G') - plist[ifile].sn2_r1 = sxpar(hdr1, 'SPEC1_R') - plist[ifile].sn2_i1 = sxpar(hdr1, 'SPEC1_I') - ; If these keywords don't exist, these will just get 0 - plist[ifile].dered_sn2_g1 = sxpar(hdr1, 'SN2EXT1G') - plist[ifile].dered_sn2_r1 = sxpar(hdr1, 'SN2EXT1R') - plist[ifile].dered_sn2_i1 = sxpar(hdr1, 'SN2EXT1I') - if keyword_set(legacy) then begin - plist[ifile].nexp_b2 = sxpar(hdr1, 'NEXP_B2') - plist[ifile].nexp_r2 = sxpar(hdr1, 'NEXP_R2') - plist[ifile].expt_b2 = sxpar(hdr1, 'EXPT_B2') - plist[ifile].expt_r2 = sxpar(hdr1, 'EXPT_R2') - plist[ifile].sn2_g2 = sxpar(hdr1, 'SPEC2_G') - plist[ifile].sn2_r2 = sxpar(hdr1, 'SPEC2_R') - plist[ifile].sn2_i2 = sxpar(hdr1, 'SPEC2_I') - plist[ifile].dered_sn2_g2 = sxpar(hdr1, 'SN2EXT2G') - plist[ifile].dered_sn2_r2 = sxpar(hdr1, 'SN2EXT2R') - plist[ifile].dered_sn2_i2 = sxpar(hdr1, 'SN2EXT2I') - endif - plist[ifile].goffstd = sxpar(hdr1, 'GOFFSTD') - plist[ifile].grmsstd = sxpar(hdr1, 'GRMSSTD') - plist[ifile].roffstd = sxpar(hdr1, 'ROFFSTD') - plist[ifile].rrmsstd = sxpar(hdr1, 'RRMSSTD') - plist[ifile].ioffstd = sxpar(hdr1, 'IOFFSTD') - plist[ifile].irmsstd = sxpar(hdr1, 'IRMSSTD') - plist[ifile].groffstd = sxpar(hdr1, 'GROFFSTD') - plist[ifile].grrmsstd = sxpar(hdr1, 'GRRMSSTD') - plist[ifile].rioffstd = sxpar(hdr1, 'RIOFFSTD') - plist[ifile].rirmsstd = sxpar(hdr1, 'RIRMSSTD') - plist[ifile].goffgal = sxpar(hdr1, 'GOFFGAL') - plist[ifile].grmsgal = sxpar(hdr1, 'GRMSGAL') - plist[ifile].roffgal = sxpar(hdr1, 'ROFFGAL') - plist[ifile].rrmsgal = sxpar(hdr1, 'RRMSGAL') - plist[ifile].ioffgal = sxpar(hdr1, 'IOFFGAL') - plist[ifile].irmsgal = sxpar(hdr1, 'IRMSGAL') - plist[ifile].groffgal = sxpar(hdr1, 'GROFFGAL') - plist[ifile].grrmsgal = sxpar(hdr1, 'GRRMSGAL') - plist[ifile].rioffgal = sxpar(hdr1, 'RIOFFGAL') - plist[ifile].rirmsgal = sxpar(hdr1, 'RIRMSGAL') - plist[ifile].nguide = sxpar(hdr1, 'NGUIDE') - plist[ifile].seeing20 = sxpar(hdr1, 'SEEING20') - plist[ifile].seeing50 = sxpar(hdr1, 'SEEING50') - plist[ifile].seeing80 = sxpar(hdr1, 'SEEING80') - plist[ifile].rmsoff20 = sxpar(hdr1, 'RMSOFF20') - plist[ifile].rmsoff50 = sxpar(hdr1, 'RMSOFF50') - plist[ifile].rmsoff80 = sxpar(hdr1, 'RMSOFF80') - plist[ifile].airtemp = sxpar(hdr1, 'AIRTEMP') - plist[ifile].xsigma = sxpar(hdr1, 'XSIGMA') - plist[ifile].xsigmin = sxpar(hdr1, 'XSIGMIN') - plist[ifile].xsigmax = sxpar(hdr1, 'XSIGMAX') - plist[ifile].wsigma = sxpar(hdr1, 'WSIGMA') - plist[ifile].wsigmin = sxpar(hdr1, 'WSIGMIN') - plist[ifile].wsigmax = sxpar(hdr1, 'WSIGMAX') - plist[ifile].xchi2 = sxpar(hdr1, 'XCHI2') - plist[ifile].xchi2min = sxpar(hdr1, 'XCHI2MIN') - plist[ifile].xchi2max = sxpar(hdr1, 'XCHI2MAX') - plist[ifile].skychi2 = sxpar(hdr1, 'SKYCHI2') - plist[ifile].schi2min = sxpar(hdr1, 'SCHI2MIN') - plist[ifile].schi2max = sxpar(hdr1, 'SCHI2MAX') - plist[ifile].fbadpix = sxpar(hdr1, 'FBADPIX') - plist[ifile].fbadpix1 = sxpar(hdr1, 'FBADPIX1') - plist[ifile].fbadpix2 = sxpar(hdr1, 'FBADPIX2') - plist[ifile].mapname = strtrim(sxpar(hdr1, 'NAME')) - plist[ifile].statuscombine = 'Done' - endif else begin - ; Case where no spPlate file exists - thislogfile = repstr(fileandpath(platefile[ifile]), $ - 'spPlate','spDiagcomb') - thislogfile = repstr(thislogfile,'.fits','.log') - thislogfile = (findfile(djs_filepath(thislogfile, root_dir=path)))[0] - - if (keyword_set(thislogfile)) then begin - ;;; spawn, 'tail -1 '+thislogfile, lastline - lastline = get_lastline(thislogfile) - if (strmatch(lastline[0], '*Successful completion*')) then begin - ; Case where this combine log file completed, - ; (but we're still missing the spPlate file, so must have failed) - plist[ifile].statuscombine = 'FAILED' - endif else begin - ; Case where this combine log file isn't completed - spawn, 'grep ABORT '+thislogfile, abortline - if (keyword_set(abortline)) then begin - plist[ifile].statuscombine = 'FAILED' ; Combining step aborted - endif else begin - plist[ifile].statuscombine = 'RUNNING' - endelse - endelse - endif else begin - ; Case where this combine log file missing - plist[ifile].statuscombine = 'Pending' - endelse - - if (keyword_set(purge2d) $ - AND plist[ifile].statuscombine NE 'Done') then begin - splog, 'PURGE2D ', logfile2d - rmfile, logfile2d - splog, 'PURGE2D ', comblogfile[ifile] - rmfile, comblogfile[ifile] - splog, 'PURGE2D ', combpsfile[ifile] - rmfile, combpsfile[ifile] - plist[ifile].status2d = 'Pending' - plist[ifile].statuscombine = 'Pending' - endif - endelse - - ;---------- - ; Get the following from the file names, since sometimes they - ; are wrong in the file headers!! - - fi = fileandpath(platefile[ifile]) - p1 = strpos(fi, '-') - p2 = strpos(fi, '-', p1+1) - p3 = strpos(fi, '.fits') -; plist[ifile].field = long( strmid(fi, p1+1, p2-p1-1) ) - plist[ifile].mjd = long( strmid(fi, p2+1, p3-p2-1) ) - - ;---------- - ; Determine the chunk name and the version of target used - if keyword_set(plates) or keyword_set(legacy) then begin - plist[ifile].plate = long( strmid(fi, p1+1, p2-p1-1) ) - cinfo = chunkinfo(plist[ifile].plate,plates=plates,legacy=legacy) - endif else begin - plist[ifile].field = long( strmid(fi, p1+1, p2-p1-1) ) - cinfo = chunkinfo(plist[ifile].field,plates=plates,legacy=legacy) - endelse - if keyword_set(cinfo) then begin - plist[ifile].survey = cinfo.survey - plist[ifile].programname = cinfo.programname - plist[ifile].chunk = cinfo.chunk - plist[ifile].tileid = cinfo.tileid - plist[ifile].designid = cinfo.designid - plist[ifile].racen = cinfo.racen - plist[ifile].deccen = cinfo.deccen - plist[ifile].epoch = cinfo.epoch - plist[ifile].chunkhtml=''+cinfo.chunk+'' - endif else begin - splog, 'Empty or missing platePlans.par file' - endelse - - ;---------- - ; Determine which public data release has this plate+MJD - if keyword_set(publicdata) then begin - if keyword_set(plates) or keyword_set(legacy) then begin - j = where(plist[ifile].plate EQ publicdata.plate $ - AND plist[ifile].mjd EQ publicdata.mjd) - endif else begin - j = where(plist[ifile].field EQ publicdata.field $ - AND plist[ifile].mjd EQ publicdata.mjd) - endelse - if (j[0] NE -1) then begin - copy_struct_inx, publicdata[j[0]], plist, index_to=ifile - endif - endif else begin - splog, 'Missing spConfList.par file' - endelse - endfor - - ;---------- - ; Remove from the plate list earlier reductions of the same plugging - ; (keeping only the most recent MJD of each plugging). - - qkeep = bytarr(nfile) - - ; First get the unique list of MAPNAME+RUN2D, then mark the most recent MJD - ; of each as the good one. - isort = sort(plist.mapname+plist.run2d) - isort = isort[ uniq(plist[isort].mapname+plist[isort].run2d) ] - maplist = plist[isort].mapname+plist[isort].run2d - for imap=0L, n_elements(maplist)-1L do begin - indx = where(plist.mapname+plist.run2d EQ maplist[imap]) - junk = max(plist[indx].mjd, imax) - qkeep[indx[imax]] = 1 - endfor - - ; Don't discard any where MAPNAME isn't set - indx = where(strtrim(plist.mapname) EQ '') - if (indx[0] NE -1) then qkeep[indx] = 1 - - ; List partially-combined plates that we're discarding from the list - for ifile=0L, nfile-1L do begin - if (qkeep[ifile] NE 1) then begin - splog, 'Discard partially-combined ' + combparfile[ifile] - if (keyword_set(killpartial)) then begin - killfiles = [ combparfile[ifile], $ - comblogfile[ifile], $ - combpsfile[ifile], $ - platefile[ifile], $ - *zbestfile[ifile], $ - *zlogfile[ifile] ] - for ikill=0L, n_elements(killfiles)-1L do $ - splog, 'KILLPARTIAL ', killfiles[ikill] - rmfile, killfiles - endif - - ; Drop plates from carts in skipcart - endif else begin - if keyword_set(skipcart) then begin - tmp = where(skipcart EQ plist[ifile].cartid, N) - if N GT 0 then begin - cartid = STRTRIM(STRING(plist[ifile].cartid), 1) - splog, 'Dropping ' + combparfile[ifile] + ' (cart ' + cartid + ')' - qkeep[ifile] = 0 - endif - endif - endelse - - endfor - - ;----- - ; Trim the plate list, and update NFILE to this trimmed number - - ikeep = where(qkeep, nfile) - idelete = where(qkeep EQ 0, ndelete) - ; Free pointers for partial reductions - if (ndelete GT 0) then begin - for i=0L, ndelete-1L do begin - ptr_free, zlogfile[idelete[i]] - ptr_free, zbestfile[idelete[i]] - ptr_free, zbestrun1d[idelete[i]] - endfor - endif - - plist = plist[ikeep] - platefile = platefile[ikeep] - combparfile = combparfile[ikeep] - comblogfile = comblogfile[ikeep] - combpsfile = combpsfile[ikeep] - zlogfile = zlogfile[ikeep] - zbestfile = zbestfile[ikeep] - zbestrun1d = zbestrun1d[ikeep] - - ;---------- - ; Make a list of one S/N for each plate which is the minimum of - ; G1, I1, G2, I2. - ; Assign a plate quality, but do not over-write any plate quality - ; from the manually-assigned one in the "spPlateList.par" file. - - qualstring = ['bad', 'marginal', 'good'] - for ifile=0L, nfile-1L do begin - if (strtrim(plist[ifile].statuscombine,2) EQ 'Done') then begin - if keyword_set(plates) or keyword_set(legacy) then begin - strplt=strtrim(string(plist[ifile].plate),2) - strmjd=strtrim(string(plist[ifile].mjd),2) - endif else begin - strplt=strtrim(string(plist[ifile].field),2) - strmjd=strtrim(string(plist[ifile].mjd),2) - endelse - plist[ifile].plotsn='SNPLOT' - if keyword_set(legacy) then begin - nexp_min = min( $ - [plist[ifile].nexp_b1, plist[ifile].nexp_r1, $ - plist[ifile].nexp_b2, plist[ifile].nexp_r2], max=nexp_max) - plist[ifile].platesn2 = min( $ - [plist[ifile].sn2_g1, plist[ifile].sn2_i1, $ - plist[ifile].sn2_g2, plist[ifile].sn2_i2]) - plist[ifile].deredsn2 = min( $ - [plist[ifile].dered_sn2_g1, plist[ifile].dered_sn2_i1, $ - plist[ifile].dered_sn2_g2, plist[ifile].dered_sn2_i2]) - if keyword_set(rawsn2) then begin - min_sn2_b = min([plist[ifile].sn2_g1, plist[ifile].sn2_g2]) - min_sn2_r = min([plist[ifile].sn2_i1, plist[ifile].sn2_i2]) - endif else begin - min_sn2_b = min([plist[ifile].dered_sn2_g1, plist[ifile].dered_sn2_g1]) - min_sn2_r = min([plist[ifile].dered_sn2_i1, plist[ifile].dered_sn2_i2]) - endelse - endif else begin - nexp_min = min( $ - [plist[ifile].nexp_b1, plist[ifile].nexp_r1], max=nexp_max) - plist[ifile].platesn2 = min( $ - [plist[ifile].sn2_g1, plist[ifile].sn2_i1]) - plist[ifile].deredsn2 = min( $ - [plist[ifile].dered_sn2_g1, plist[ifile].dered_sn2_i1]) - if keyword_set(rawsn2) then begin - min_sn2_b = plist[ifile].sn2_g1 - min_sn2_r = plist[ifile].sn2_i1 - endif else begin - min_sn2_b = plist[ifile].dered_sn2_g1 - min_sn2_r = plist[ifile].dered_sn2_i1 - endelse - endelse - iqual = 2 - prog = strtrim(plist[ifile].programname,2) - mjd = plist[ifile].mjd - is_elg_plate = strcmp(prog, 'ELG_NGC') OR strcmp(prog, 'ELG_SGC') - if keyword_set(legacy) then begin - ;--- JEB 2018-05-23: if elg plate, plate is 'good' no matter what SN2 - if NOT is_elg_plate then begin - ;-- JEB 2018-05-23: new thresholds after 2017-10-03 - if (mjd GT 58029) AND ((min_sn2_b LT 8.0) OR (min_sn2_r LT 18.)) then $ - iqual = iqual < 0 - if (mjd LE 58029) AND ((min_sn2_b LT 10.0) OR (min_sn2_r LT 22.0)) then $ - iqual = iqual < 0 - endif - endif - if (plist[ifile].fbadpix GT 0.10) then iqual = iqual < 0 - ; For reductions before v5_1, NEXP_MIN and NEXP_MAX are always zero - ; HJIM decoment the next three lines - if (nexp_max GT 0) then begin - if (nexp_min LT 3) then iqual = iqual < 0 - endif - if keyword_set(legacy) or keyword_set(plates) then begin - if (NOT keyword_set(strtrim(plist[ifile].platequality))) then $ - plist[ifile].platequality = qualstring[iqual] - endif else begin - if (NOT keyword_set(strtrim(plist[ifile].fieldquality))) then $ - plist[ifile].fieldquality = qualstring[iqual] - endelse - endif - endfor - - ;---------- - ; Decide which plates constitute unique tiles with the required S/N, - ; then set QSURVEY=1. - ; Also insist that PROGNAME='main'. - - ; First get the unique list of TILE - isort = sort(plist.tileid) - isort = isort[ uniq(plist[isort].tileid) ] - tilelist = plist[isort].tileid - - if keyword_set(legacy) or keyword_set(plates) then begin - for itile=0L, n_elements(tilelist)-1L do begin - indx = where(plist.tileid EQ tilelist[itile] $ - AND (strtrim(plist.platequality,2) EQ 'good' $ - OR strtrim(plist.platequality,2) EQ 'marginal') $ - AND (strtrim(plist.survey,2) EQ 'bhm-mwm' $ - OR strtrim(plist.survey,2) EQ 'bhm' $ - OR strtrim(plist.survey,2) EQ 'boss' $ - OR strtrim(plist.survey,2) EQ 'mwm'), ct) - if (ct GT 0) then begin - snbest = max(plist[indx].platesn2, ibest) - plist[indx[ibest]].qsurvey = 1 - endif - endfor - endif else begin - for itile=0L, n_elements(tilelist)-1L do begin - indx = where(plist.tileid EQ tilelist[itile] $ - AND (strtrim(plist.fieldquality,2) EQ 'good' $ - OR strtrim(plist.fieldquality,2) EQ 'marginal') $ - AND (strtrim(plist.survey,2) EQ 'bhm-mwm' $ - OR strtrim(plist.survey,2) EQ 'bhm' $ - OR strtrim(plist.survey,2) EQ 'mwm'), ct) - if (ct GT 0) then begin - snbest = max(plist[indx].platesn2, ibest) - plist[indx[ibest]].qsurvey = 1 - endif - endfor - endelse - ;--------------------------------------------------------------------------- - ; Read the Spectro-1D files - - for i=0L, nfile-1L do begin - - for j=0L, n_elements((*zbestfile[i]))-1L do begin - - if (j EQ 0) then begin - ifile = i ; First instance of z-file for this plate - endif else begin - ifile = n_elements(plist) ; Append another entry to plate list - plist = [plist, plist[i]] - endelse - - plist[ifile].run1d = (*zbestrun1d[i])[j] - - ;---------- - ; Read Zbest file - get status of 1D - - if (keyword_set((*zbestfile[i])[j])) then $ - hdr2 = headfits((*zbestfile[i])[j], /silent, errmsg=errmsg) $ - else $ - hdr2 = 0 - - if (size(hdr2, /tname) EQ 'STRING') then begin - - if keyword_set(plates) or keyword_set(legacy) then begin - strplt=strtrim(string(plist[ifile].plate),2) - strmjd=strtrim(string(plist[ifile].mjd),2) - endif else begin - strplt=strtrim(string(plist[ifile].field),2) - strmjd=strtrim(string(plist[ifile].mjd),2) - endelse - plist[ifile].data='DATA' - plist[ifile].plots='PLOTS' - zans = mrdfits((*zbestfile[i])[j], 1, /silent) - plug = mrdfits(platefile[i], 5, /silent) - class = strtrim(zans.class,2) - objtyp = strtrim(plug.objtype,2) - ; Use the ZWARNING flag if it exists to identify SKY or UNKNOWN. - if ((where(tag_names(zans) EQ 'ZWARNING'))[0] NE -1) then $ - zwarning = zans.zwarning $ - else $ - zwarning = bytarr(n_elements(zans)) - qsky = (zwarning AND 1) NE 0 - plist[ifile].n_galaxy = total(class EQ 'GALAXY' AND zwarning EQ 0 AND objtyp NE 'SPECTROPHOTO_STD' AND objtyp NE 'SKY') - plist[ifile].n_qso = total(class EQ 'QSO' AND zwarning EQ 0 AND objtyp NE 'SPECTROPHOTO_STD' AND objtyp NE 'SKY') - plist[ifile].n_star = total(class EQ 'STAR' AND zwarning EQ 0 AND objtyp NE 'SPECTROPHOTO_STD' AND objtyp NE 'SKY') - plist[ifile].n_std = total(objtyp EQ 'SPECTROPHOTO_STD') - plist[ifile].n_star =total(class EQ 'STAR' AND zwarning EQ 0 AND objtyp NE 'SPECTROPHOTO_STD' AND objtyp NE 'SKY'); $ - ;-total(objtyp EQ 'SPECTROPHOTO_STD' AND zwarning EQ 0) - plist[ifile].n_unknown = total((class EQ 'UNKNOWN' AND objtyp NE 'SPECTROPHOTO_STD' AND objtyp NE 'SKY') $ - OR (zwarning NE 0 AND qsky EQ 0)) - plist[ifile].n_sky = total(class EQ 'SKY' OR qsky EQ 1) - plist[ifile].status1d = 'Done' - ;print,"TEST" - nobj = n_elements(zans) - targets = strarr(nobj) - ;Decoment this part for the final version HJIM firstcarton - if keyword_set(legacy) then begin - for iobj=0L, nobj-1L do $ - targets[iobj] = sdss_flagname('TARGET',plug[iobj].primtarget, $ - /silent, /concat)+' ' - if (tag_exist(plug,'BOSS_TARGET1')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] = sdss_flagname('BOSS_TARGET1', $ - plug[iobj].boss_target1, /silent, /concat)+' ' - ;; Adding sequels target mask bits - if (tag_exist(plug, 'EBOSS_TARGET0')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] += sdss_flagname('EBOSS_TARGET0', $ - plug[iobj].eboss_target0, /silent, /concat)+' ' - ;; Adding eboss target mask bits - if (tag_exist(plug, 'EBOSS_TARGET1')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] += sdss_flagname('EBOSS_TARGET1', $ - plug[iobj].eboss_target1, /silent, /concat)+' ' - if (tag_exist(plug, 'EBOSS_TARGET2')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] += sdss_flagname('EBOSS_TARGET2', $ - plug[iobj].eboss_target2, /silent, /concat)+' ' - endif else begin - for iobj=0L, nobj-1L do $ - targets[iobj] = zans[iobj].class - endelse - - - - - ;; Objects which shouldn't count against the success statistics - bad_fiber = sdss_flagval('ZWARNING', 'LITTLE_COVERAGE') OR $ - sdss_flagval('ZWARNING', 'UNPLUGGED') OR $ - sdss_flagval('ZWARNING', 'BAD_TARGET') - if keyword_set(legacy) then begin - imain = where((strmatch(targets,'*GALAXY *') $ - OR strmatch(targets,'*GALAXY_BIG *') $ - OR strmatch(targets,'*GALAXY_BRIGHT_CORE *')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nmain) - ilrg1 = where((strmatch(targets,'*GALAXY_RED *') $ - OR strmatch(targets,'*GALAXY_RED_II *') $ - OR strmatch(targets,'*GAL_LOZ *') $ - OR strmatch(targets,'*LRG*')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nlrg1) - ilrg2 = where((strmatch(targets,'*GAL_HIZ *') $ - OR strmatch(targets,'*GAL_CMASS*')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nlrg2) - ielg = where((strmatch(targets,'*ELG*')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nelg) -; iqso = where(strmatch(targets,'*QSO_HIZ *') $ -; OR strmatch(targets,'*QSO_CAP *') $ -; OR strmatch(targets,'*QSO_SKIRT *') $ -; OR strmatch(targets,'*QSO_FIRST_CAP *') $ -; OR strmatch(targets,'*QSO_FIRST_SKIRT *'), nqso) - iqso = where(strmatch(targets,'*QSO*') $ - AND (zans.zwarning AND bad_fiber) EQ 0, nqso) - plist[ifile].n_target_main = nmain - plist[ifile].n_target_lrg1 = nlrg1 - plist[ifile].n_target_lrg2 = nlrg2 - plist[ifile].n_target_elg = nelg - plist[ifile].n_target_qso = nqso - if (nmain GT 0) then $ - plist[ifile].success_main = $ - 100 * total(zans[imain].zwarning EQ 0 $ - AND (strmatch(zans[imain].class,'GALAXY*') $ - OR strmatch(zans[imain].class,'QSO*'))) / nmain - if (nlrg1 GT 0) then $ - plist[ifile].success_lrg1 = $ - 100 * total(zans[ilrg1].zwarning_noqso EQ 0 $ - AND strmatch(zans[ilrg1].class,'GALAXY*')) / nlrg1 - if (nlrg2 GT 0) then $ - plist[ifile].success_lrg2 = $ - 100 * total(zans[ilrg2].zwarning_noqso EQ 0 $ - AND strmatch(zans[ilrg2].class,'GALAXY*')) / nlrg2 - if (nelg GT 0) then $ - plist[ifile].success_elg = $ - 100 * total(zans[ielg].zwarning_noqso EQ 0 $ - AND strmatch(zans[ielg].class,'GALAXY*')) / nelg - if (nqso GT 0) then $ - plist[ifile].success_qso = $ - 100 * total(zans[iqso].zwarning EQ 0 $ - AND strmatch(zans[iqso].class,'QSO*')) / nqso - endif else begin - iqso = where(strmatch(targets,'*QSO*') $ - AND (zans.zwarning AND bad_fiber) EQ 0, nqso) - plist[ifile].n_target_qso = nqso - if (nqso GT 0) then $ - plist[ifile].success_qso = $ - 100 * total(zans[iqso].zwarning EQ 0 $ - AND strmatch(zans[iqso].class,'QSO*')) / nqso - endelse - endif else begin - ;---------- - ; Find the state of the 1D reductions -- spZbest file is missing - - print, run1d, ' ', (*zlogfile[i])[j] - ;print,(file_search((*zlogfile[i])[j])) - if (file_search((*zlogfile[i])[j])) then begin - ;;; spawn, 'tail -1 '+(*zlogfile[i])[j], lastline - lastline = get_lastline((*zlogfile[i])[j]) - ;print,lastline[0] - if (strmatch(lastline[0], '*Successful completion*')) then begin - ; Case where this 1D log file completed, which is not - ; a case that should ever occur. - plist[ifile].status1d = 'FAILED'; Should have found spZbest - endif else begin - ; Case where this 1D log file isn't completed - if (keyword_set(purge1d)) then begin - splog, 'PURGE1D ', (*zlogfile[i])[j] - rmfile, (*zlogfile[i])[j] - plist[ifile].status1d = 'Pending' - endif else begin - plist[ifile].status1d = 'RUNNING' - endelse - endelse - endif else begin - plist[ifile].status1d = 'Pending' - endelse - endelse - endfor - endfor - - ;--------------------------------------------------------------------------- - ; Write ASCII + HTML output files - if keyword_set(legacy) then begin - alias = [['PROGRAMNAME' , 'PROG' ], $ - ['DATA' , 'DATA' ], $ - ['PLOTS' , 'PLOTS' ], $ - ['CHUNKHTML' , 'CHUNK' ], $ - ['PLATESN2' , 'SN^2' ], $ - ['DEREDSN2' , 'SN^2' ], $ - ['N_GALAXY' , 'N_gal' ], $ - ['N_QSO' , 'N_QSO' ], $ - ['N_STAR' , 'N_star' ], $ - ['N_UNKNOWN' , 'N_unk' ], $ - ['N_SKY' , 'N_sky' ], $ - ['N_STD' , 'N_std' ], $ - ['FBADPIX' , 'Badpix' ], $ -; ['SUCCESS_MAIN' , '%Main' ], $ - ['SUCCESS_LRG1' , '%LRG1' ], $ - ['SUCCESS_LRG2' , '%LRG2' ], $ - ['SUCCESS_ELG' , '%ELG' ], $ - ['SUCCESS_QSO' , '%QSO' ], $ - ['STATUS2D' , '2D' ], $ - ['STATUSCOMBINE', 'Combine' ], $ - ['STATUS1D' , '1D' ], $ - ['DERED_SN2_G1' , 'SN2_G1' ], $ - ['DERED_SN2_G2' , 'SN2_G2' ], $ - ['DERED_SN2_I1' , 'SN2_G1' ], $ - ['DERED_SN2_I2' , 'SN2_I2' ], $ - ['PLOTSN' , 'SNPLOT' ], $ - ['PLATEQUALITY' , 'QUALITY' ] ] - endif else begin - if keyword_set(plates) then begin - alias = [['PROGRAMNAME' , 'PROG' ], $ - ['DATA' , 'DATA' ], $ - ['DESIGNID' , 'DESIGN' ], $ - ['PLOTS' , 'PLOTS' ], $ - ['CHUNKHTML' , 'CHUNK' ], $ - ['PLATESN2' , 'SN^2' ], $ - ['DEREDSN2' , 'SN^2' ], $ - ['N_GALAXY' , 'N_gal' ], $ - ['N_QSO' , 'N_QSO' ], $ - ['N_STAR' , 'N_star' ], $ - ['N_UNKNOWN' , 'N_unk' ], $ - ['N_SKY' , 'N_sky' ], $ - ['N_STD' , 'N_std' ], $ - ['FBADPIX' , 'Badpix' ], $ -; ['SUCCESS_MAIN' , '%Main' ], $ -; ['SUCCESS_LRG1' , '%LRG1' ], $ -; ['SUCCESS_LRG2' , '%LRG2' ], $ -; ['SUCCESS_ELG' , '%ELG' ], $ -; ['SUCCESS_QSO' , '%QSO' ], $ - ['STATUS2D' , '2D' ], $ - ['STATUSCOMBINE', 'Combine' ], $ - ['STATUS1D' , '1D' ], $ - ['DERED_SN2_G1' , 'SN2_G1' ], $ - ;['DERED_SN2_G2' , 'SN2_G2' ], $ - ['DERED_SN2_I1' , 'SN2_G1' ], $ - ;['DERED_SN2_I2' , 'SN2_I2' ], $ - ['PLOTSN' , 'SNPLOT' ], $ - ['PLATEQUALITY' , 'QUALITY' ] ] - endif else begin - alias = [['PROGRAMNAME' , 'PROG' ], $ - ['DATA' , 'DATA' ], $ - ['DESIGNID' , 'DESIGN' ], $ - ['PLOTS' , 'PLOTS' ], $ - ['CHUNKHTML' , 'CHUNK' ], $ - ['FIELDSN2' , 'SN^2' ], $ - ['DEREDSN2' , 'SN^2' ], $ - ['N_GALAXY' , 'N_gal' ], $ - ['N_QSO' , 'N_QSO' ], $ - ['N_STAR' , 'N_star' ], $ - ['N_UNKNOWN' , 'N_unk' ], $ - ['N_SKY' , 'N_sky' ], $ - ['N_STD' , 'N_std' ], $ - ['FBADPIX' , 'Badpix' ], $ -; ['SUCCESS_MAIN' , '%Main' ], $ -; ['SUCCESS_LRG1' , '%LRG1' ], $ -; ['SUCCESS_LRG2' , '%LRG2' ], $ -; ['SUCCESS_ELG' , '%ELG' ], $ -; ['SUCCESS_QSO' , '%QSO' ], $ - ['STATUS2D' , '2D' ], $ - ['STATUSCOMBINE', 'Combine' ], $ - ['STATUS1D' , '1D' ], $ - ['DERED_SN2_G1' , 'SN2_G1' ], $ - ;['DERED_SN2_G2' , 'SN2_G2' ], $ - ['DERED_SN2_I1' , 'SN2_G1' ], $ - ;['DERED_SN2_I2' , 'SN2_I2' ], $ - ['PLOTSN' , 'SNPLOT' ], $ - ['FIELDQUALITY' , 'QUALITY' ] ] - endelse - endelse - -; isort1 = reverse(sort(strtrim(strcompress(plist.run2d+' ' $ -; +string(99999-plist.field)),2))) - isort2 = reverse(sort(strtrim(strcompress(plist.run2d+' ' $ - +string(plist.mjd)),2))) - - if keyword_set(legacy) or keyword_set(plates) then begin - isort1 = reverse(sort(strtrim(strcompress(plist.run2d+' ' $ - +string(99999-plist.plate)),2))) - if keyword_set(plates) then begin - isort3 = reverse(sort(strtrim(strcompress(plist.run2d+' ' $ - +string(99999-plist.designid)),2))) - toptext = [ $ - '

        Last Update: '+ systime()+', Last Update MJD: '+ strtrim(string(current_mjd()),2)+'

        ', ''] - endif else begin - toptext = [ $ - '

        Last Update: '+ systime()+', Last Update MJD: '+ strtrim(string(current_mjd()),2)+'

        ', '
          ', $ - '
        • HOME
        • ', $ - '
        • Plate list sorted by plate,' $ - + ' MJD
        • ', $ - '
        • Plate quality sorted by plate,' $ - + ' MJD
        • ', $ - '
        • Plate list as FITS
        • ','
        '] - endelse - map_sdss=1 - if map_sdss ne 0 then begin - spawn,'plot_sdss_sky' - toptext = [toptext, '

        ','
      '] - endif - if dereddened_sn2 NE 0 then begin - toptext = [toptext, '

      (S/N)^2 values are corrected for galactic dust reddening

      '] - endif else begin - toptext = [toptext, '

      (S/N)^2 values are not corrected for galactic dust reddening

      '] - endelse - - platelist_write, plist[isort1], trimtags=trimtags1, alias=alias, $ - fileprefix='platelist', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Plates Observed List' - platelist_write, plist[isort2], trimtags=trimtags1, alias=alias, $ - fileprefix='platelist-mjdsort', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Plates Observed List' - - platelist_write, plist[isort1], trimtags=trimtags2, alias=alias, $ - fileprefix='platequality', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Plate Quality List' - platelist_write, plist[isort2], trimtags=trimtags2, alias=alias, $ - fileprefix='platequality-mjdsort', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Plate Quality List' - - if keyword_set(plates) then begin - platelist_write, plist[isort3], trimtags=trimtags1, alias=alias, $ - fileprefix='platelist-designsort', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Plates Observed List' - platelist_write, plist[isort3], trimtags=trimtags2, alias=alias, $ - fileprefix='platequality-designsort', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Plate Quality List' - endif - endif else begin - isort1 = reverse(sort(strtrim(strcompress(plist.run2d+' ' $ - +string(99999-plist.field)),2))) - toptext = [ $ - '

      Last Update: '+ systime()+', Last Update MJD: '+ strtrim(string(current_mjd()),2)+'

      ', '
        ', $ - '
      • HOME
      • ', $ - '
      • Field list sorted by field,' $ - + ' MJD
      • ', $ - '
      • Field quality sorted by field,' $ - + ' MJD
      • ', $ - '
      • Field list as FITS
      • ','
      '] - map_sdss=1 - if map_sdss ne 0 then begin - spawn,'plot_sdss_sky' - toptext = [toptext, '

      ','
    '] - endif - - if dereddened_sn2 NE 0 then begin - toptext = [toptext, '

    (S/N)^2 values are corrected for galactic dust reddening

    '] - endif else begin - toptext = [toptext, '

    (S/N)^2 values are not corrected for galactic dust reddening

    '] - endelse - - platelist_write, plist[isort1], trimtags=trimtags1, alias=alias, $ - fileprefix='fieldlist', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Fields Observed List' - platelist_write, plist[isort2], trimtags=trimtags1, alias=alias, $ - fileprefix='fieldlist-mjdsort', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Fields Observed List' - - platelist_write, plist[isort1], trimtags=trimtags2, alias=alias, $ - fileprefix='fieldquality', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Field Quality List' - platelist_write, plist[isort2], trimtags=trimtags2, alias=alias, $ - fileprefix='fieldquality-mjdsort', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Field Quality List' - - endelse - ;---------- - ; Write the FITS binary table - plist = struct_selecttags(plist, except_tags='PLOTSN') - plist = struct_selecttags(plist, except_tags='DATA') - plist = struct_selecttags(plist, except_tags='PLOTS') - plist = struct_selecttags(plist, except_tags='CHUNKHTML') - if not keyword_set(legacy) then $ - plist = struct_selecttags(plist, except_tags='TILEID') - mwrfits, plist, fitsfile, /create - - for i=0L, n_elements(zlogfile)-1L do ptr_free, zlogfile[i] - for i=0L, n_elements(zbestfile)-1L do ptr_free, zbestfile[i] - for i=0L, n_elements(zbestrun1d)-1L do ptr_free, zbestrun1d[i] - - ;---------- - ; See if the platelist webapp is installed; if so, update platelist.json - ; Only do this if there is a single run2d - if n_elements(run2d) eq 1 then begin - appdir = getenv('BOSS_SPECTRO_REDUX')+'/'+run2d+'/platelist' - json_exists = file_test(appdir+'/data/platelist.json') - - if json_exists eq 1 then begin - cmd = appdir+'/bin/platelist2json.py '+fitsfile+' > '+appdir+'/data/platelist.json' - spawn, cmd - endif - endif - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/cosbell.pro b/pro/spec1d/cosbell.pro deleted file mode 100644 index dbf517e9b..000000000 --- a/pro/spec1d/cosbell.pro +++ /dev/null @@ -1,21 +0,0 @@ -; Return a cosbell window function for subsequent applicaiton to data -; and variance - -function cosbell, npix, fraction, double=double - - if N_params() LT 2 then return, -1 - - if (keyword_set(double)) then PI = !dpi $ - else PI = !pi - - window = fltarr(npix)+1.0 - - nfirst = lindgen(fix(npix * fraction)) - nlast = npix - lindgen(fix(npix * fraction)) - 1 - - window[nfirst] = 0.5 * (1.0 - cos(!Pi*nfirst/(n_elements(nfirst)-1))) - window[nlast] = 0.5 * (1.0 - cos(!Pi*nfirst/(n_elements(nfirst)-1))) - - return, window -end - diff --git a/pro/spec1d/danvb_convert.pro b/pro/spec1d/danvb_convert.pro deleted file mode 100644 index a582e637c..000000000 --- a/pro/spec1d/danvb_convert.pro +++ /dev/null @@ -1,68 +0,0 @@ -; Convert the file "plateEDR.summ" from Dan van den Berk from ASCII -; format to a FITS binary table, "plateEDR.summ.fits". -pro danvb_convert - - filename = 'plateEDR.summ' - outfile = 'plateEDR.summ.fits' - - readcol, filename, plate, fiber, mjd, id_manual, flag_manual, ra, dec, $ - run, camcol, field, u_fib, g_fib, r_fib, i_fib, z_fib, z_manual, $ - z_1d, zerr_1d, z_confidence, z_status, class_1d, primtarget, $ - sectarget, $ - format='(L,L,L,A,L,D,D,L,L,L, F,F,F,F,F, F,F,F,L,L,L,L)', skipline=2 - readfmt, filename, '99X,70X,A100', comments, skipline=2 - comments = strtrim(comments,2) - - danstruct = create_struct( $ - 'plate' , 0L, $ - 'fiber' , 0L, $ - 'mjd' , 0L, $ - 'id_manual' , ' ', $ - 'flag_manual' , 0L, $ - 'ra' , 0D, $ - 'dec' , 0D, $ - 'run' , 0L, $ - 'camcol' , 0L, $ - 'field' , 0L, $ - 'u_fib' , 0., $ - 'g_fib' , 0., $ - 'r_fib' , 0., $ - 'i_fib' , 0., $ - 'z_fib' , 0., $ - 'z_manual' , 0., $ - 'z_1d' , 0., $ - 'zerr_1d' , 0., $ - 'z_confidence', 0., $ - 'z_status' , 0L, $ - 'class_1d' , 0L, $ - 'primtarget' , 0L, $ - 'sectarget' , 0L, $ - 'comments' , ' ') - danstruct = replicate(danstruct, n_elements(plate)) - danstruct.plate = plate - danstruct.fiber = fiber - danstruct.mjd = mjd - danstruct.id_manual = id_manual - danstruct.flag_manual = flag_manual - danstruct.ra = ra - danstruct.dec = dec - danstruct.run = run - danstruct.camcol = camcol - danstruct.field = field - danstruct.u_fib = u_fib - danstruct.g_fib = g_fib - danstruct.r_fib = r_fib - danstruct.i_fib = i_fib - danstruct.z_fib = z_fib - danstruct.z_manual = z_manual - danstruct.z_1d = z_1d - danstruct.zerr_1d = zerr_1d - danstruct.z_confidence = z_confidence - danstruct.z_status = z_status - danstruct.class_1d = class_1d - danstruct.primtarget = primtarget - danstruct.sectarget = sectarget - danstruct.comments = comments - - mwrfits, danstruct, outfile, /create -end diff --git a/pro/spec1d/danvb_qsolist.pro b/pro/spec1d/danvb_qsolist.pro deleted file mode 100644 index 6fb03ed3b..000000000 --- a/pro/spec1d/danvb_qsolist.pro +++ /dev/null @@ -1,83 +0,0 @@ -; Select /RSAMPLE to random-sample in each redshift bin -; rather than taking the 10 brightest. -pro danvb_qsolist, rsample=rsample - - danfilename = 'plateEDR.summ.fits' - outfile = 'eigeninput_qso.dat' - - ; Make the list of plates that are unique survey-quality. - ; Ignore plates at MJD<=51605 which had electronics problems. - ; Include only plates at MJD >= 51789 which have better spectro-photometry. - platelist, plist=plist - plist = plist[where(plist.qsurvey AND plist.mjd GE 51789)] - - ; Read Van den Berk's file - danvb = mrdfits(danfilename,1) - - ; Trim Van den Berk's file to only objects on the unique survey-quality - ; plates - qgood = bytarr(n_elements(danvb)) - for i=0, n_elements(danvb)-1 do $ - if ((where(danvb[i].plate EQ plist.plate))[0] NE -1) then qgood[i] = 1 - danvb = danvb[where(qgood)] - - ; Trim to manually-classified QSO's, ignoring where he set FLAG_MANUAL=1. - ; Note that he has at least two incorrect identifications: - ; 275/51910-353, 289/51990-313, both of which are really stars. - ; Object 412/51931-263 is not a z=5.8441 QSO. - ; Object 367/51997-506 may not be a z=5.298 QSO. - indx = where(strtrim(danvb.id_manual) EQ 'QSO' $ - AND danvb.z_manual GT 0.01 AND danvb.flag_manual NE 1) - danvb = danvb[indx] - - ; Read the P-1D outputs - readspec, danvb.plate, danvb.fiber, mjd=danvb.mjd, zans=zans - - ; Do one of the following: - ; (1) Random-sample this list to 10 objects in each delta-z=0.1 bin - ; (2) Or select the 10 brightest objects (according to ZANS.SN_MEDIAN) - ; in each delta-z=0.1 bin. - qgood = bytarr(n_elements(danvb)) - deltaz = 0.1 - nperbin = 10 - iseed = 1234L - for ibin=0, long(7.0/deltaz) do begin - zlo = deltaz * ibin - zhi = deltaz * (ibin+1) - ii = where(danvb.z_manual GE zlo AND danvb.z_manual LT zhi, ni) - if (ni GE 1 and ni LE nperbin) then begin - qgood[ii] = 1 - endif else if (ni GT nperbin) then begin - if (keyword_set(rsample)) then begin - rr = randomu(iseed, ni) - qgood[ii[ (sort(rr))[0:nperbin-1] ]] = 1 - endif else begin - thissn = zans[ii].sn_median - qgood[ii[ (sort(-thissn))[0:nperbin-1] ]] = 1 - endelse - endif - endfor - - indx = where(qgood) - danvb = danvb[indx] - zans = zans[indx] - - outstruct = create_struct( $ - 'plate' , 0L, $ - 'mjd' , 0L, $ - 'fiberid' , 0L, $ - 'z' , 0D, $ ; Cast as double so more digits written out - 'comment' , ' ' ) - outstruct = replicate(outstruct, n_elements(danvb)) - outstruct.plate = danvb.plate - outstruct.mjd = danvb.mjd - outstruct.fiberid = danvb.fiber - outstruct.z = danvb.z_manual - outstruct.comment = string(zans.sn_median, format='("S/N=",f5.2)') - ii = where(danvb.flag_manual EQ 2) - if (ii[0] NE -1) then $ - outstruct[ii].comment = outstruct[ii].comment + ' BAL' - - struct_print, outstruct, filename=outfile - -end diff --git a/pro/spec1d/desi_to_sdss.pro b/pro/spec1d/desi_to_sdss.pro deleted file mode 100644 index 8ca1b92fa..000000000 --- a/pro/spec1d/desi_to_sdss.pro +++ /dev/null @@ -1,166 +0,0 @@ -;+ -; NAME: -; desi_to_sdss -; -; PURPOSE: -; Convert a DESI extracted spectra file to an SDSS spPlate format -; -; CALLING SEQUENCE: -; desi_to_sdss, filename, plate, mjd, [ outfile= ] -; -; INPUTS: -; filename - DESI spectra file -; plate - Plate label, must be valid for sdss_specobjid() -; mjd - MJD label, must be valid for sdss_specobjid() -; -; OPTIONAL INPUTS: -; outfile - Output file name; default to spPlate-$PLATE-$MJD.fits where -; PLATE is derived from the GAMA field name and tile name, -; and MJD from the data of observation. GAMA field names -; 02, 09, 12, 15, 23 are mapped to plate numbers -; 1000, 2000, 3000, 4000, 5000 with the GAMA pointing number -; added to that. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The DESI spectra are interpolated to the log-wavelength mapping -; of SDSS spectra using a B-spline to the flux and the variance arrays. -; -; The DESI input file assumed to be of this format: -; http://desidatamodel.readthedocs.io/en/latest/DESI_SPECTRO_REDUX/SPECPROD/spectra-NSIDE/PIXGROUP/PIXNUM/spectra-NSIDE-PIXNUM.html#hdu01 -; -; EXAMPLES: -; Convert a DESI file and run the SDSS redshifting code: -; IDL> desi_to_sdss,'weird_obj89.darksky.fits',1,56000 -; IDL> spreduce1d,'spPlate-0001-56000.fits' -; IDL> zans=mrdfits('spZbest-0001-56000.fits',1) -; IDL> print,zans.z,zans.z_err -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 27-Apr-2018 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro desi_to_sdss, filename, plate, mjd, outfile=outfile1 - - if (size(filename,/tname) NE 'STRING') then begin - splog, 'Must specify FILENAME' - return - endif - if (NOT keyword_set(plate)) then $ - message, 'Must set PLATE' - if (NOT keyword_set(mjd)) then $ - message, 'Must set MJD' - - dradeg = 180d0 / !dpi - - plug1 = create_struct( $ - 'OBJID', lonarr(5), $ - 'RA', 0d0, $ - 'DEC', 0d0, $ - 'OBJTYPE', '', $ - 'SPECTROGRAPHID', 1L, $ - 'FIBERID', 0L ) - - fibermap = mrdfits(filename, 'FIBERMAP') - b_wave = mrdfits(filename, 'B_WAVELENGTH') - b_flux = mrdfits(filename, 'B_FLUX') - b_ivar = mrdfits(filename, 'B_IVAR') - b_mask = mrdfits(filename, 'B_MASK') - b_res = mrdfits(filename, 'B_RESOLUTION') - r_wave = mrdfits(filename, 'R_WAVELENGTH') - r_flux = mrdfits(filename, 'R_FLUX') - r_ivar = mrdfits(filename, 'R_IVAR') - r_mask = mrdfits(filename, 'R_MASK') - r_res = mrdfits(filename, 'R_RESOLUTION') - z_wave = mrdfits(filename, 'Z_WAVELENGTH') - z_flux = mrdfits(filename, 'Z_FLUX') - z_ivar = mrdfits(filename, 'Z_IVAR') - z_mask = mrdfits(filename, 'Z_MASK') - z_res = mrdfits(filename, 'Z_RESOLUTION') - if (keyword_set(fibermap) EQ 0) then $ - message, 'Unable to read file '+filename - - dims = size(b_flux,/dimens) - if (size(b_flux,/n_dimen) EQ 1) then nfiber = 1 $ - else nfiber = dims[1] - - ; Construt the output file name - if (keyword_set(outfile1)) then outfile = outfile1 $ - else outfile = 'spPlate-'+plate_to_string(plate)+'-' $ - +string(mjd,format='(i5.5)')+'.fits' - - ; Rebin to the SDSS spacing - dloglam = 1d-4 - newloglam = wavevector(alog10(min(b_wave)), alog10(max(z_wave)), binsz=dloglam) - newwave = 10^newloglam - nnew = n_elements(newloglam) - - newflux = fltarr(nnew,nfiber) - newivar = fltarr(nnew,nfiber) - - b_npix = (size(b_flux,/dimens))[0] - r_npix = (size(r_flux,/dimens))[0] - z_npix = (size(z_flux,/dimens))[0] - npix_all = (b_npix > r_npix) > z_npix - for i=0, nfiber-1 do begin - wave_all = dblarr(npix_all,3) - flux_all = fltarr(npix_all,3) - ivar_all = fltarr(npix_all,3) - wave_all[0:b_npix-1,0] = b_wave - if (b_npix LT npix_all) then $ - wave_all[b_npix:npix_all-1,0] = b_wave[b_npix-1] + dindgen(npix_all-b_npix) $ - * (b_wave[b_npix-1] - b_wave[b_npix-2]) - flux_all[0:b_npix-1,0] = b_flux[*,i] - ivar_all[0:b_npix-1,0] = b_ivar[*,i] - wave_all[0:r_npix-1,1] = r_wave - if (r_npix LT npix_all) then $ - wave_all[r_npix:npix_all-1,1] = r_wave[r_npix-1] + dindgen(npix_all-r_npix) $ - * (r_wave[r_npix-1] - r_wave[r_npix-2]) - flux_all[0:r_npix-1,1] = r_flux[*,i] - ivar_all[0:r_npix-1,1] = r_ivar[*,i] - wave_all[0:z_npix-1,2] = z_wave - if (z_npix LT npix_all) then $ - wave_all[z_npix:npix_all-1,2] = z_wave[z_npix-1] + dindgen(npix_all-z_npix) $ - * (z_wave[z_npix-1] - z_wave[z_npix-2]) - flux_all[0:z_npix-1,2] = z_flux[*,i] - ivar_all[0:z_npix-1,2] = z_ivar[*,i] - combine1fiber, alog10(wave_all), flux_all, ivar_all, $ - newloglam=newloglam, newflux=newflux1, newivar=newivar1 - newflux[*,i] = newflux1 - newivar[*,i] = newivar1 -print,i,nfiber,string(13b),format='(i4,i4,a,$)' - endfor -print - - andmask = lonarr(nnew,nfiber) - ormask = lonarr(nnew,nfiber) - dispmap = fltarr(nnew,nfiber) + 1. - skyimg = fltarr(nnew,nfiber) - plugmap = replicate(plug1, nfiber) - plugmap.ra = fibermap.ra_obs - plugmap.dec = fibermap.dec_obs - plugmap.objtype = fibermap.objtype - plugmap.fiberid = lindgen(nfiber) + 1 - - sxaddpar, hdr, 'PLATEID', plate - sxaddpar, hdr, 'MJD', mjd - sxaddpar, hdr, 'COEFF0', newloglam[0] ; wavelength solution - sxaddpar, hdr, 'COEFF1', dloglam ; wavelength solution - mwrfits, newflux, outfile, hdr, /create - mwrfits, newivar, outfile - mwrfits, andmask, outfile - mwrfits, ormask, outfile - mwrfits, dispmap, outfile - mwrfits, plugmap, outfile - mwrfits, skyimg, outfile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/diffplate.pro b/pro/spec1d/diffplate.pro deleted file mode 100644 index 7203a1608..000000000 --- a/pro/spec1d/diffplate.pro +++ /dev/null @@ -1,65 +0,0 @@ -pro diffplate, platenum, mjd=mjd - -platenum = 306 -mjd = [51637, 51690] - -;platenum = 302 -;mjd = [51616,51688] - -platenum = 406 -mjd = [51817, 51869] - - readspec, platenum, mjd=mjd[0], flux=flux1, flerr=flerr1, wave=wave1, $ - plugmap=plug1 -;flux1=flux1[2000:3800,*] -;flerr1=flerr1[2000:3800,*] - - readspec, platenum, mjd=mjd[1], flux=flux2, flerr=flerr2, wave=wave2, $ - plugmap=plug2 -;flux2=flux2[2000:3800,*] -;flerr2=flerr2[2000:3800,*] - -nfiber=640 - for ifiber=0, nfiber-1 do begin -; for ifiber=0, 50 do begin ; ??? -print, 'FIBER', ifiber+1 - adist = djs_diff_angle(plug1[ifiber].ra, plug1[ifiber].dec, $ - plug2.ra, plug2.dec) - dmin = min(adist, imin) - if (dmin LE 1./3600 AND max(flux1[*,ifiber]) GT 0 AND $ - max(flux2[*,imin]) GT 0) then begin - ; Match fiber IFIBER in first plate with fiber IMIN in second - zoffset = alog10(wave1[0,ifiber] / wave2[0,ifiber]) / 1.d-4 - res1 = veldisp(flux1[*,ifiber], flerr1[*,ifiber], $ - flux2[*,imin], flerr2[*,imin], zoffset=zoffset) - if (NOT keyword_set(result)) then begin - result = replicate(res1, nfiber) - endif - copy_struct_inx, res1, result, index_from=0, index_to=ifiber - endif - endfor - -md=djs_median(flux1,1) -stop - -set_plot,'ps' -device,file='diff-306b.ps' -djs_plot,alog10(result.zconf),result.z*70.,ps=1,syms=0.5,yr=100*[-1,1],$ - xtitle='log_{10}(zconf)', ytitle='\Delta z [km/s]', charsize=2, $ - title='Plate 306 MJD 51637 vs 51690', /ystyle -oplot,[-5,2],[0,0]-0 -device,/close -set_plot,'x' - -i=where(result.zconf LT 0.3) -j=where(result.z*70 GT -400 AND result.z*70 LT 400) -print,mean(result[i].z*70),mean(result[j].z*70) -print,median(result[i].z*70),median(result[j].z*70) -print,stddev(result[i].z*70),stddev(result[j].z*70) - -i=where(plug1.primtarget AND 64) -djs_oplot,alog10(md[i]),result[i].z*69.,ps=2,xr=[0,3],yr=500*[-1,1],$ - color='red' - - return -end diff --git a/pro/spec1d/fft_apodize.pro b/pro/spec1d/fft_apodize.pro deleted file mode 100644 index be021b500..000000000 --- a/pro/spec1d/fft_apodize.pro +++ /dev/null @@ -1,33 +0,0 @@ -;------------------------------------------------------------------------------ -; Apodize a spectrum with cos bell before doing FFT's. -; Use FLUXERR to select the first and last good points at which to -; start the apodizations. - -pro fft_apodize, flux, fluxerr - - npix = N_elements(flux) - - if (keyword_set(fluxerr)) then begin - igood = where(fluxerr GT 0, ngood) - if (ngood LE 2) then return - i1 = igood[0] - i2 = igood[ngood-1] - if (i1 GT 0) then flux[0:i1-1] = 0 - if (i2 LT npix-1) then flux[i2+1:npix-1] = 0 - endif else begin - i1 = 0 - i2 = npix-1 - endelse - - objbell = 0.0 * flux - objbell[i1:i2] = cosbell(i2-i1+1, 0.2, $ - double=(size(flux, /tname) EQ 'DOUBLE')) - - fluxmean = total(flux*objbell)/total(objbell) - flux = (flux - fluxmean) * objbell - if (keyword_set(fluxerr)) then $ - fluxerr = fluxerr * objbell - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/fft_wavenums.pro b/pro/spec1d/fft_wavenums.pro deleted file mode 100644 index cda1a2b17..000000000 --- a/pro/spec1d/fft_wavenums.pro +++ /dev/null @@ -1,12 +0,0 @@ -;------------------------------------------------------------------------------ -; Compute the frequencies for each bin for an IDL FFT using an array -; with NPIX elements. Return them in the range (-0.5,0.5]. - -function fft_wavenums, npix - - if (npix MOD 2 EQ 0) then $ - return, [findgen(npix/2+1),-npix/2.0 + 1.0 + findgen(npix/2-1)]/npix - - return, [findgen(npix/2+1),-(npix- 1.0)/2.0 + findgen(npix/2)]/npix -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/fftpad.pro b/pro/spec1d/fftpad.pro deleted file mode 100644 index f5a9d155a..000000000 --- a/pro/spec1d/fftpad.pro +++ /dev/null @@ -1,33 +0,0 @@ - -; -; Pad input array with mean with at least npix -; -; - -function fftpad, data, direction, _EXTRA=KeywordsForFft - - if (N_elements(direction) EQ 0) then direction = -1 - - npix = n_elements(data) - nextpower = fix(alog(2*npix) / alog(2.0)) + 1 - - if (nextpower GT 31) then begin - print, 'too many elements' - return, -1 - endif - - nfinalpix = 2L^nextpower - paddata = make_array(nfinalpix,type=size(data,/type), value = mean(data)) - - first = (nfinalpix - npix)/2 - paddata[first:first+npix-1] = data - - - ; - ; Here we need to apodize the paddata to get rid of ringing... - ; Skipping for now (laziness) - - - return, fft(paddata, direction, _Extra=KeywordsForFFT) -end - diff --git a/pro/spec1d/fieldmerge.pro b/pro/spec1d/fieldmerge.pro deleted file mode 100644 index 740091c4f..000000000 --- a/pro/spec1d/fieldmerge.pro +++ /dev/null @@ -1,950 +0,0 @@ -;+ -; NAME: -; fieldmerge -; -; PURPOSE: -; Merge all Spectro-1D outputs with photoPosPlate,spInspect files -; -; CALLING SEQUENCE: -; fieldmerge, [ field=, mjd=, except_tags=, indir=, outroot=, $ -; run2d=, /include_bad, /calc_noqso, /skip_line ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; field - fields to include; default to all files -; specified by the fieldLIST routine. -; mjd - Optional MJDs corresponding to the specified fields; -; if specified, then field and MJD should have the same -; number of elements. -; except_tags - Tag names to exclude; default to '*COVAR'. -; indir - Input directory with fieldlist.fits file; passed to -; fieldlist topir option which defaults to $BOSS_SPECTRO_REDUX -; outroot - Root name for output files; default to -; $BOSS_SPECTRO_REDUX/$RUN2D/spAll; the files are then -; spAll-$RUN2D.fits, spAll-$RUN2D.dat, spAllLine-$RUN2D.dat. -; run2d - List of RUN2D subdirectories to merge, one set of output -; files per name in $RUN2D; default to all values of RUN2D -; returned by fieldLIST. -; include_bad - If set, then include bad fields -; calc_noqso - If set, then also include redshift info for best non-QSO -; redshift fits. Defaults to being set. -; skip_line - If set, skip the generation of spAllLine.fits -; mergerun2d - If set, generate a single $BOSS_SPECTRO_REDUX/spAll.fits -; file combining all RUN2D versions in -; $BOSS_SPECTRO_REDUX/fieldlist.fits. -; Ignores run2d, $RUN2D, and does *not* write a separate -; file for each RUN2D. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Depends upon the fieldlist.fits file written by fieldLIST. -; Trims to only 'good' fields, or those in a public data release. -; -; The SPECPRIMARY output element is used to select a unique set of -; objects in the case of duplicate observations. Any objects observed -; multiple times will have SPECPRIMARY=1 for one instance only, and =0 -; for all other instances. The criteria (in order of importance) are -; as follows: -; 1) Prefer observations with positive SN_MEDIAN in r-band -; 2) Prefer fieldQUALITY='good' over any other field quality -; 3) Prefer observations with ZWARNING=0 -; 4) Prefer objects with larger SN_MEDIAN in r-band -; -; Temporary files are created first, such as 'spAll.fits.tmp', which -; are renamed at the end of the routine to 'spAll.fits', etc. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; copy_struct -; copy_struct_inx -; djs_filepath() -; headfits() -; hogg_mrdfits() -; mrdfits() -; mwrfits_chunks -; fieldlist -; readspec -; repstr -; spheregroup -; splog -; struct_print -; sxaddpar -; sxpar() -; -; REVISION HISTORY: -; 30-Oct-2000 Written by D. Schlegel, Princeton -; 29-Jul-2010 Added EXCLUDE_CLASS and SKIP_LINE, A. Bolton, Utah -; 17-Mar-2011 Changed EXCLUDE_CLASS behavior, A. Bolton, Utah -; 30-Jun-2011 Changed EXCLUDE_CLASS to more specific and correct -; CALC_NOQSO, including proper rchi2diff, A. Bolton, Utah -; 04-Oct-2012 Added SPECBOSS tag (ASB, Utah). -;------------------------------------------------------------------------------ - - - -pro fieldmerge1, field=field, mjd=mjd, except_tags1=except_tags1, $ - indir=indir, outroot1=outroot1, run2d=run2d, include_bad=include_bad, $ - calc_noqso=calc_noqso, skip_line=skip_line, plist=plist, legacy=legacy, $ - plates=plates, photo_file=photo_file, XCSAO=XCSAO, $ - lite=lite, skip_specprimary=skip_specprimary - - dtheta = 2.0 / 3600. - - if (n_elements(except_tags1) GT 0) then except_tags = except_tags1 $ - else except_tags = '*COVAR' - if (keyword_set(outroot1)) then begin - outroot = [outroot1, outroot1+'Line'] - endif else begin - outroot = ['spAll','spAllLine'] - if (keyword_set(field) and keyword_set(mjd)) then begin - outroot='spectra/full/'+field_to_string(field)+'/'+strtrim(string(mjd),2)+'/'+outroot+'-'+field_to_string(field)+'-'+strtrim(string(mjd),2) - endif else begin - if (keyword_set(run2d)) then outroot = outroot + '-' + repstr(run2d,'/','-') - endelse - outroot = djs_filepath(outroot, root_dir=getenv('BOSS_SPECTRO_REDUX'), $ - subdir=run2d) - endelse - if (n_elements(calc_noqso) eq 0) then calc_noqso = 1B - - t1 = systime(1) - thismem = memory() - splog, outroot - - ;---------- - ; Read fieldlist if needed - - if (NOT keyword_set(plist)) then $ - conflist, plist=plist, topdir=indir, run2d=run2d - if (NOT keyword_set(plist)) then return - - ;---------- - ; Find out if this plist includes dereddened SN2 values - - plist_tags = tag_names(plist) - ii = where(plist_tags EQ 'DEREDSN2', n) - if n GT 0 then has_deredsn2 = 1 else has_deredsn2 = 0 - - ;---------- - ; Trim to good (or non-bad public) plates - - if (keyword_set(field) and keyword_set(mjd)) then begin - nplate = n_elements(plist) - - field_plate=plist.field - qkeep = bytarr(nplate) - if (keyword_set(mjd)) then begin - qkeep = qkeep OR (field_plate EQ field AND plist.mjd EQ mjd) - endif - ikeep = where(qkeep, nkeep) - if (nkeep EQ 0) then return - plist = plist[ikeep] - endif - - if (keyword_set(run2d)) then begin - qkeep = strmatch(strtrim(plist.run2d),run2d) - ikeep = where(qkeep, nkeep) - if (nkeep EQ 0) then return - plist = plist[ikeep] - endif - - qdone = strtrim(plist.status1d,2) EQ 'Done' - ;HJIM decomet this part for the final version - if (NOT keyword_set(include_bad)) then begin - qdone = qdone AND $ - (strtrim(plist.fieldquality,2) EQ 'good' $ - OR strtrim(plist.fieldquality,2) EQ 'marginal' $ - OR (strtrim(plist.public,2) NE '' AND $ - strtrim(plist.fieldquality,2) NE 'bad') ) - endif - - indx = where(qdone eq 1, ct) - ;print, indx - if (ct EQ 0) then return - plist = plist[indx] - - nfile = n_elements(plist) - nout = total(plist.n_total) - splog, 'Total number of objects = ', nout - - ;---------- - ; Find the first tsObj file that exists for use in constructing the - ; output structure. - ifile = 0 - ;;HJIM coment the next line for the final version - ;tsobj0=1 - brake_t=0 - no_photo_file=1 - ; If the photoPlate files are chosen, add the tsObj structure - if keyword_set(photo_file) then begin - while (NOT keyword_set(tsobj0)) and brake_t eq 0 do begin - ;HJIM Coment the upper line and decoment the lower line - readspec, plist[ifile].field, mjd=plist[ifile].mjd, $ - run2d=strtrim(plist[ifile].run2d), tsobj=tsobj0, $ - legacy=legacy, plates=plates, /silent - tsobj0 = tsobj0[0] - brake_t=1 - no_photo_file=0 - if (NOT keyword_set(tsobj0)) then begin - brake_t=0 - no_photo_file=1 - ifile = ifile + 1 - if (ifile EQ nfile) then $ - brake_t=1 - endif - endwhile - endif - - ;---------- - ; Create the additional tags to add to the output structure - - pstuff = create_struct( $ - 'programname' , ' ', $ - 'survey' , ' ', $ - 'fieldquality', ' ', $ - 'fieldsn2' , 0.0, $ - 'exp_disp_med', 0.D, $ - 'fiberid_list', ' ', $ - 'lambda_eff' , 0.0, $ - 'bluefiber' , 0L, $ - 'zoffset' , 0.0, $ - 'xfocal' , ' ', $ - 'yfocal' , ' ', $ - 'calibflux' , fltarr(5), $ - 'calibflux_ivar', fltarr(5),$ - 'gaia_bp', 0.0, $ - 'gaia_rp', 0.0, $ - 'gaia_g', 0.0, $ - 'cadence', ' ', $ - 'firstcarton', ' ', $ - 'carton_to_target_pk', ' ', $ - 'RACAT', 0.D,$ - 'DECCAT', 0.D,$ - 'COORD_EPOCH', 0.0,$ - 'PMRA', 0.0,$ - 'PMDEC', 0.0,$ - 'PARALLAX', 0.0,$ - 'catalogid' , long64(0), $ - 'catalogid_v0' , long64(0), $ - 'catalogid_v0p5' , long64(0), $ - ;'catalogid_v1' , long64(0), $ - 'gaia_id_dr2', long64(0), $ - 'FIBER2MAG', fltarr(5), $ - 'PSFMAG', fltarr(5), $ - 'CATDB_MAG', fltarr(5), $ - 'OPTICAL_PROV', '', $ - 'obs', '',$ - 'field', 0L, $ -; 'plate', 0L, $ - 'designs', '', $ - 'configs', '', $ - 'nexp', 0, $ - 'exptime', 0, $ - 'airmass', 0.0, $ - 'Seeing20', 0.0, $ - 'Seeing50', 0.0, $ - 'Seeing80', 0.0, $ - 'Assigned', ' ', $ - 'on_target', ' ', $ - 'valid', ' ', $ - 'healpix', 0L, $ - 'healpixgrp', 0, $ - 'healpix_path', ' ', $ - 'mjd_final', 0.D, $ - 'mjd_list', ' ', $ - 'tai_list', ' ', $ - 'fieldsnr2g_list', ' ', $ - 'fieldsnr2r_list', ' ', $ - 'fieldsnr2i_list', ' ', $ - 'RA_LIST', ' ', $ - 'DEC_LIST', ' ', $ - 'DELTA_RA_LIST', ' ',$ - 'DELTA_DEC_LIST', ' ',$ - 'moon_dist', ' ', $ - 'moon_phase', ' ', $ - 'ebv', 0.0, $ - 'ebv_type', '', $ - 'wise_mag', fltarr(4), $ - 'twomass_mag', fltarr(3), $ - 'guvcat_mag', fltarr(2), $ - ;'gaia_parallax', 0.0, $ - ;'gaia_pmra', 0.0, $ - ;'gaia_pmdec', 0.0,$ - 'fiber_offset', 0.0,$ - 'SPEC_FILE', ' ') - - if not keyword_set(skip_specprimary) then $ - pstuff = struct_addtags(pstuff, {specprimary:0B, specboss:0B, $ - boss_specobj_id:0L, nspecobs:0}) - - if keyword_set(legacy) then $ - pstuff = struct_addtags(pstuff, {chunk:'',DEREDSN2:'',primtarget:0L,sectarget:0L}) - - if keyword_set(XCSAO) then $ - pstuff = struct_addtags(pstuff, {XCSAO_rv: !values.f_nan, XCSAO_erv: !values.f_nan,$ - XCSAO_Rxc: !values.f_nan, $ - XCSAO_Teff: !values.f_nan, XCSAO_eteff: !values.f_nan,$ - XCSAO_Logg: !values.f_nan, XCSAO_elogg: !values.f_nan,$ - XCSAO_Feh: !values.f_nan, XCSAO_efeh: !values.f_nan}) - ;---------- - ; Loop through each file - - splog, 'Reading ZANS files' - for ifile=0L, nfile-1 do begin - splog, 'Reading ZANS file ',ifile+1, ' of ', nfile - field_plate=field_to_string(plist[ifile].field) - - readspec, field_plate, mjd=plist[ifile].mjd, $ - run2d=strtrim(plist[ifile].run2d), run1d=strtrim(plist[ifile].run1d), $ - zans=zans, objhdr=objhdr, $ ;; zmanual=zmanual, - plugmap=plugmap, legacy=legacy, plates=plates, /silent, unsigned=(ifile EQ 0) - - zans = struct_selecttags(zans, except_tags=['OBJID','TILE','ELODIE_FILENAME', 'ELODIE_OBJECT',$ - 'ELODIE_SPTYPE','ELODIE_BV','ELODIE_TEFF','ELODIE_LOGG',$ - 'ELODIE_FEH','ELODIE_Z','ELODIE_Z_ERR','ELODIE_Z_MODELERR',$ - 'ELODIE_RCHI2','ELODIE_DOF']) - - - - -; ASB 2011 Mar: append info on best non-galaxy and non-qso redshifts/classes: -; ASB 2011 Jun: changed to do the "no-qso" case exclusively, and more correctly. -; ASB 2011 Jul: moved this into SPREDUCE1D. Retained for now, but -; test to see if the tags are already present. To be -; removed following verification. - if (keyword_set(calc_noqso) and (tag_exist(zans, 'z_noqso') eq 0)) then begin - splog, ' Finding non-QSO redshift info.' - - ;;- JB : Change field string format PLATEPROBLEM - pstring = field_to_string(field_plate) - mstring = string(plist[ifile].mjd, format='(i5.5)') - zallfile = getenv('BOSS_SPECTRO_REDUX') + '/' + $ - strtrim(plist[ifile].run2d, 2) + '/' + $ - pstring + '/' + strtrim(plist[ifile].run1d, 2) + $ - '/spZall-' + pstring + '-' + mstring + '.fits' - zall = mrdfits(zallfile,1) - nfib = max(zall.fiberid) - min(zall.fiberid) + 1L - nzall = n_elements(zall) / nfib - zall = reform(zall, nzall, nfib) - class_all = strtrim(zall.class,2) - id_noqso = replicate(-1L, nfib) - rchi2diff_noqso = replicate(0., nfib) - for ii = 0L, nfib-1 do begin - wh_noqso = where(class_all[*,ii] ne 'QSO') - wh_noqso = (wh_noqso[sort(wh_noqso)])[0:1] - id_noqso[ii] = wh_noqso[0] - rchi2diff_noqso[ii] = total(zall[wh_noqso[0]:wh_noqso[1]-1,ii].rchi2diff) - endfor - zans_noqso = zall[id_noqso,lindgen(nfib)] - noqso_struc = replicate( $ - {z_noqso: 0., z_err_noqso: 0., zwarning_noqso: 0L, $ - class_noqso: ' ', subclass_noqso: ' ', $ - rchi2diff_noqso: 0.}, nfib) - noqso_struc.z_noqso = zans_noqso.z - noqso_struc.z_err_noqso = zans_noqso.z_err - noqso_struc.class_noqso = zans_noqso.class - noqso_struc.subclass_noqso = zans_noqso.subclass - noqso_struc.rchi2diff_noqso = rchi2diff_noqso -; Re-set the small-delta-chi2 bit: - minrchi2diff = 0.01 - small_rchi2diff = rchi2diff_noqso lt minrchi2diff - zw_new = zans_noqso.zwarning - zflagval = sdss_flagval('ZWARNING', 'SMALL_DELTA_CHI2') - zw_new = zw_new - (zw_new and zflagval) - zw_new = zw_new or (zflagval * small_rchi2diff) - noqso_struc.zwarning_noqso = zw_new - zans = struct_addtags(zans, noqso_struc) - noqso_struc = 0 - zall = 0 - zans_noqso = 0 - endif - - if keyword_set(xcsao) then begin - pstring = field_to_string(field_plate) - mstring = string(plist[ifile].mjd, format='(i5.5)') - XCSAOfile = getenv('BOSS_SPECTRO_REDUX') + '/' + $ - strtrim(plist[ifile].run2d, 2) + '/' + $ - pstring + '/' + strtrim(plist[ifile].run1d, 2) + $ - '/spXCSAO-' + pstring + '-' + mstring + '.fits' - if FILE_TEST(XCSAOfile) then begin - splog, 'Reading XCSAO file: spXCSAO-' + pstring + '-' + mstring + '.fits' - XCSAO = mrdfits(XCSAOfile,1) - endif else splog, 'No XCSAO file for spXCSAO-' + pstring + '-' + mstring + '.fits' - endif - if (ifile EQ 0) then begin - htags = ['SDSSV_BOSS_TARGET0'] - pstuff = struct_addtags(pstuff, $ - struct_selecttags(plugmap[0], select_tags=htags)) - ;pstuff = create_struct(pstuff, plutt[0]) - outdat1 = create_struct(pstuff, struct_selecttags(zans[0], except_tags=['field','fiberid_list'])) - struct_assign, {junk:0}, outdat1 ; Zero-out all elements - if keyword_set(xcsao) then begin - outdat1.xcsao_rv=!values.f_nan - outdat1.xcsao_erv=!values.f_nan - outdat1.XCSAO_Rxc=!values.f_nan - outdat1.XCSAO_Teff=!values.f_nan - outdat1.XCSAO_eteff=!values.f_nan - outdat1.XCSAO_Logg=!values.f_nan - outdat1.XCSAO_elogg=!values.f_nan - outdat1.XCSAO_Feh=!values.f_nan - outdat1.XCSAO_efeh=!values.f_nan - endif - outdat = replicate(outdat1, nout) - endif - - indx = lindgen(plist[ifile].n_total) - if (ifile GT 0) then indx += total(plist[0:ifile-1].n_total) - - tmpdat = outdat[indx] - copy_struct, zans, tmpdat - outdat[indx] = tmpdat - - ; Fill in the first columns of this output structure -; if tag_exist(plist,'programname') then begin -; outdat[indx].programname = plist[ifile].programname -; endif else outdat[indx].programname=plugmap.program - - outdat = strct_to_struct(plugmap,'*','PROGRAM',outdat,indx, outtag='programname') - outdat = strct_to_struct(plist,ifile,'CHUNK',outdat,indx) - outdat = strct_to_struct(plist,ifile,'PLATEQUALITY',outdat,indx, altTag='fieldquality') - outdat = strct_to_struct(plist,ifile,'PLATESN2',outdat,indx,outtag='fieldsn2', altTag='fieldsn2') - if has_deredsn2 then outdat = strct_to_struct(plist,ifile,'deredsn2',outdat,indx) - outdat = strct_to_struct(plugmap,'*','EXP_DISP_MED', outdat,indx) -; outdat = strct_to_struct(plist,ifile,'exptime',outdat,indx) - outdat = strct_to_struct(plist,ifile,'DESIGNID',outdat,indx) -; outdat = strct_to_struct(plist,ifile,'DESIGNS',outdat,indx) -; outdat = strct_to_struct(plist,ifile,'CONFIGS',outdat,indx) -; outdat = strct_to_struct(plist,ifile,'SURVEY',outdat,indx) - outdat = strct_to_struct(plist,ifile,'OBS',outdat,indx) - outdat = strct_to_struct(plugmap,'*','SURVEY',outdat,indx) - - outdat = strct_to_struct(plugmap,'*','AIRMASS',outdat,indx) - outdat = strct_to_struct(plugmap,'*','SEEING20',outdat,indx) - outdat = strct_to_struct(plugmap,'*','SEEING50',outdat,indx) - outdat = strct_to_struct(plugmap,'*','SEEING80',outdat,indx) - outdat = strct_to_struct(plugmap,'*','MJDLIST',outdat,indx, outTag='mjd_list') - outdat = strct_to_struct(plugmap,'*','TAILIST',outdat,indx, outTag='tai_list') - outdat = strct_to_struct(plugmap,'*','DESIGNS',outdat,indx) - outdat = strct_to_struct(plugmap,'*','CONFIGS',outdat,indx) - - - - ; Get PRIMTARGET+SECTARGET with those values from - ; the plug-map structure in spfield file. - ; HJIM decoment the next three lines for the final version - outdat = strct_to_struct(plugmap,'*','primtarget',outdat,indx) - outdat = strct_to_struct(plugmap,'*','sectarget',outdat,indx) - - outdat = strct_to_struct(plugmap,'*','lambda_eff',outdat,indx) - outdat = strct_to_struct(plugmap,'*','zoffset',outdat,indx) - outdat = strct_to_struct(plugmap,'*','XFOCAL_LIST',outdat,indx,outTag='xfocal') - outdat = strct_to_struct(plugmap,'*','YFOCAL_LIST',outdat,indx,outTag='yfocal') - outdat = strct_to_struct(plugmap,'*','bluefiber',outdat,indx) - - outdat = strct_to_struct(plugmap,'*','CALIBFLUX',outdat,indx) - outdat = strct_to_struct(plugmap,'*','CALIBFLUX_IVAR',outdat,indx) - outdat = strct_to_struct(plugmap,'*','CALIBFLUX_IVAR',outdat,indx) - outdat = strct_to_struct(plugmap,'*','GAIA_BP',outdat,indx,altTag='BP_MAG',altOutTag='GAIA_BP') - outdat = strct_to_struct(plugmap,'*','GAIA_RP',outdat,indx,altTag='RP_MAG',altOutTag='GAIA_RP') - outdat = strct_to_struct(plugmap,'*','GAIA_G',outdat,indx,altTag='GAIA_G_MAG',altOutTag='GAIA_G') - outdat = strct_to_struct(plugmap,'*','SDSSV_BOSS_TARGET0',outdat,indx) - outdat = strct_to_struct(plugmap,'*','CADENCE',outdat,indx) - outdat = strct_to_struct(plugmap,'*','FIRSTCARTON',outdat,indx) - outdat = strct_to_struct(plugmap,'*','CARTON_TO_TARGET_PK',outdat,indx) - outdat = strct_to_struct(plugmap,'*','ASSIGNED_LIST',outdat,indx, outTag='ASSIGNED') - outdat = strct_to_struct(plugmap,'*','ON_TARGET_LIST',outdat,indx, outTag='ON_TARGET') - outdat = strct_to_struct(plugmap,'*','VALID_LIST',outdat,indx, outTag='VALID') - outdat = strct_to_struct(plugmap,'*','ICATALOGID',outdat,indx, outTag='CATALOGID') - - junk = where(strmatch(tag_names(plugmap), 'catversion',/FOLD_CASE) eq 1, ct) - if ct gt 0 then begin - catversion = plugmap.catversion - v0 = where(strmatch(catversion, '0.0*') eq 1, ct) - if ct gt 0 then outdat = strct_to_struct(plugmap, v0, 'ICATALOGID', outdat, indx[v0], outTag='CATALOGID_V0') - - v0p5 = where(strmatch(catversion, '0.5*') eq 1, ct) - if ct gt 0 then outdat = strct_to_struct(plugmap, v0p5, 'ICATALOGID', outdat, indx[v0p5], outTag='CATALOGID_V0p5') - -; v1 = where(strmatch(catversion, '1.*') eq 1, ct) -; if ct gt 0 then outdat = strct_to_struct(plugmap, v1, 'ICATALOGID', outdat, indx[v1], outTag='CATALOGID_V1') - endif - - outdat = strct_to_struct(plugmap,'*','gaia_id_dr2',outdat,indx) - outdat = strct_to_struct(plugmap,'*','FIBER2MAG',outdat,indx,altTag='mag') - outdat = strct_to_struct(plugmap,'*','PSFMAG',outdat,indx) - outdat = strct_to_struct(plugmap,'*','CATDB_MAG',outdat,indx) - outdat = strct_to_struct(plugmap,'*','OPTICAL_PROV',outdat,indx) - outdat = strct_to_struct(plugmap,'*','NEXP',outdat,indx) - outdat = strct_to_struct(plugmap,'*','EXPTIME',outdat,indx) -; outdat = strct_to_struct(plugmap,'*','field',outdat,indx, altTag='plate', altOutTag='field') - outdat = strct_to_struct(plugmap,'*','mjd_final',outdat,indx) - outdat = strct_to_struct(plugmap,'*','RACAT',outdat,indx) - outdat = strct_to_struct(plugmap,'*','DECCAT',outdat,indx) - outdat = strct_to_struct(plugmap,'*','COORD_EPOCH',outdat,indx) - outdat = strct_to_struct(plugmap,'*','PMRA',outdat,indx) - outdat = strct_to_struct(plugmap,'*','PMDEC',outdat,indx) - outdat = strct_to_struct(plugmap,'*','PARALLAX',outdat,indx) - outdat = strct_to_struct(plugmap,'*','TAI_LIST',outdat,indx) - - outdat = strct_to_struct(plugmap,'*','fieldsnr2g_list',outdat,indx,altTag='platesnr2g_list', altOutTag='fieldsnr2g_list') - outdat = strct_to_struct(plugmap,'*','fieldsnr2r_list',outdat,indx,altTag='platesnr2r_list', altOutTag='fieldsnr2r_list') - outdat = strct_to_struct(plugmap,'*','fieldsnr2i_list',outdat,indx,altTag='platesnr2i_list', altOutTag='fieldsnr2i_list') - - outdat = strct_to_struct(plugmap,'*','RA_LIST',outdat,indx) - outdat = strct_to_struct(plugmap,'*','DEC_LIST',outdat,indx) - outdat = strct_to_struct(plugmap,'*','DELTA_RA_LIST',outdat,indx) - outdat = strct_to_struct(plugmap,'*','DELTA_DEC_LIST',outdat,indx) - - outdat = strct_to_struct(plugmap,'*','MOON_DIST',outdat,indx) - outdat = strct_to_struct(plugmap,'*','MOON_PHASE',outdat,indx) - outdat = strct_to_struct(plugmap,'*','EBV',outdat,indx,altTag='SFD_EBV', altOutTag='EBV') - outdat = strct_to_struct(plugmap,'*','EBV_TYPE',outdat,indx) - outdat = strct_to_struct(plugmap,'*','WISE_MAG',outdat,indx) - outdat = strct_to_struct(plugmap,'*','TWOMASS_MAG',outdat,indx) - outdat = strct_to_struct(plugmap,'*','GUVCAT_MAG',outdat,indx) - ;outdat = strct_to_struct(plugmap,'*','GAIA_PARALLAX',outdat,indx) - ;outdat = strct_to_struct(plugmap,'*','GAIA_PMRA',outdat,indx) - ;outdat = strct_to_struct(plugmap,'*','GAIA_PMDEC',outdat,indx) - outdat = strct_to_struct(plugmap,'*','fiber_offset',outdat,indx) - - - if keyword_set(xcsao) then begin - if FILE_TEST(XCSAOfile) then begin - outdat = strct_to_struct(XCSAO,'*','rv',outdat,indx,outTag='XCSAO_rv') - outdat = strct_to_struct(XCSAO,'*','erv',outdat,indx,outTag='XCSAO_erv') - outdat = strct_to_struct(XCSAO,'*','R',outdat,indx,outTag='XCSAO_Rxc') - outdat = strct_to_struct(XCSAO,'*','Teff',outdat,indx,outTag='XCSAO_Teff') - outdat = strct_to_struct(XCSAO,'*','Teff',outdat,indx,outTag='XCSAO_Teff') - outdat = strct_to_struct(XCSAO,'*','eteff',outdat,indx,outTag='XCSAO_eteff') - outdat = strct_to_struct(XCSAO,'*','Logg',outdat,indx,outTag='XCSAO_Logg') - outdat = strct_to_struct(XCSAO,'*','elogg',outdat,indx,outTag='XCSAO_elogg') - outdat = strct_to_struct(XCSAO,'*','Feh',outdat,indx,outTag='XCSAO_Feh') - outdat = strct_to_struct(XCSAO,'*','efeh',outdat,indx,outTag='XCSAO_efeh') - endif - endif - - spec_file = outdat[indx].spec_file - for fid = 0L, n_elements(spec_file)-1 do begin - spec_file[fid] = 'spec-'+ field_to_string((outdat[indx].field)[fid]) + '-' + $ - strtrim(string(plist[ifile].mjd),2) + '-' +$ - strtrim(plugmap[fid].catalogid,2)+'.fits' - endfor - outdat[indx].spec_file = spec_file - - ; Add the cas-styled specobjid to output - if not tag_exist(outdat, 'specobjid') then $ - outdat = struct_addtags(outdat, replicate({specobjid:0ULL},n_elements(outdat))) - words= STREGEX(STRTRIM(outdat[indx].run2d,2),'^v([0-9]+)_([0-9]+)_([0-9]+)', /SUB, /EXTRACT) - ; did it parse as vXX_YY_ZZ? - if words[0] ne '' then begin - rerun= (long(words[1,*])-5L)*10000L+ (long(words[2,*])*100L)+ (long(words[3,*])) - endif else begin - splog, "WARNING: Unable to parse RERUN from ", (outdat[indx])[uniq(outdat[indx].run2d)].run2d, " for CAS-style SPECOBJID; Using 0 instead" - rerun= intarr(n_elements(outdat[indx].field)) - endelse - outdat[indx].specobjid = sdss_specobjid_17(outdat[indx].field,outdat[indx].target_index,$ - outdat[indx].mjd,rerun) - - - healpix_now=1 - if keyword_set(healpix_now) then begin - - mwm_root='$MWM_HEALPIX' - healpix_path_t=outdat[indx].healpix_path - plt_t=field_to_string(outdat[indx].field) - - val_indx = where(finite(outdat[indx].RACAT) and finite(outdat[indx].DECCAT) $ - and (outdat[indx].RACAT ne -999.0) and (outdat[indx].DECCAT ne -999.0), ct) - if ct gt 0 then begin - healp=coords_to_healpix(outdat[indx[val_indx]].RACAT,outdat[indx[val_indx]].DECCAT) - outdat[indx[val_indx]].healpix=healp.healpix - outdat[indx[val_indx]].healpixgrp=healp.healpixgrp - - for fid = 0L, n_elements(zans)-1 do begin - if ((plugmap[fid].icatalogid eq 0) and $ - finite(plugmap[fid].RA) and finite(plugmap[fid].DEC)) then healpix_path_t[fid] = '' $ - else begin - healpix_path_t[fid]=mwm_root + '/'+ $ - strtrim(string(healp[fid].healpixgrp),2) + '/' + $ - strtrim(string(healp[fid].healpix),2) + '/boss/' + $ - strtrim(plist[ifile].run2d, 2)+ '/' + $ - 'spec-' + strtrim(string(plt_t[0]),2) + '-' + $ - strtrim(string(plist[ifile].mjd),2) + $ - '-' + strtrim(plugmap[fid].catalogid,2)+'.fits' - endelse - endfor - outdat[indx].healpix_path=healpix_path_t - endif - endif else begin - - outdat = strct_to_struct(plugmap,'*','HEALPIX',outdat,indx) - outdat = strct_to_struct(plugmap,'*','HEALPIXGRP',outdat,indx) - if (tag_exist(plugmap,'HEALPIX_PATH') or tag_exist(plugmap,'HEALPIX_DIR')) then begin - if tag_exist(plugmap,'HEALPIX_DIR') then healpix_path_t=plugmap.healpix_dir $ - else healpix_path_t=plugmap.healpix_path - for fid = 0L, n_elements(zans)-1 do begin - healpix_path_t[fid] = repstr(healpix_path_t[fid],'XXXX',strtrim(string(plist[ifile].mjd),2)) - endfor - outdat[indx].healpix_path=healpix_path_t - endif - endelse - endfor - - splog, 'Time to read data = ', systime(1)-t1, ' sec' - - ;---------- - ; Set the SPECPRIMARY flag to 0 or 1 - if not keyword_set(skip_specprimary) then begin - t2 = systime(1) - - ; Determine the score for each object - ; 1) Prefer observations with positive SN_MEDIAN in r-band - ; 2) Prefer fieldQUALITY='good' over any other field quality - ; 3) Prefer observations with ZWARNING=0 - ; 4) Prefer objects with larger SN_MEDIAN in r-band - ; ASBjuly2011: test against ZWARNING_NOQSO for GALAXY targets: - zw_primtest = outdat.zwarning - if tag_exist(outdat, 'ZWARNING_NOQSO') then begin - wh_galtarget = where(strmatch(outdat.objtype, 'GALAXY*'), ngaltarget) - if (ngaltarget gt 0) then zw_primtest[wh_galtarget] = outdat[wh_galtarget].zwarning_noqso - endif - if (n_elements(outdat[0].sn_median) EQ 1) then jfilt = 0 else jfilt = 2 - score = 4 * (outdat.sn_median[jfilt] GT 0) $ - + 2 * (strmatch(outdat.fieldquality,'good*') EQ 1) $ - + 1 * (zw_primtest EQ 0) $ - + (outdat.sn_median[jfilt]>0) / max(outdat.sn_median[jfilt]+1.) - - ingroup = spheregroup(outdat.fiber_ra, outdat.fiber_dec, dtheta, $ - multgroup=multgroup, firstgroup=firstgroup, $ - nextgroup=nextgroup) - - ; Set the unique object IDs - if tag_exist(outdat, 'boss_specobj_id') then outdat.boss_specobj_id = ingroup + 1L - - if tag_exist(outdat, 'specprimary') then sp = 1 else sp = 0 - if tag_exist(outdat, 'nspecobs') then ns =1 else ns = 0 - for j=0L, n_elements(firstgroup)-1L do begin - if (firstgroup[j] NE -1) then begin - if (multgroup[j] EQ 1) then begin - if sp then outdat[firstgroup[j]].specprimary = 1 - if ns then outdat[firstgroup[j]].nspecobs = 1 - endif else begin - indx = lonarr(multgroup[j]) - indx[0] = firstgroup[j] - for k=0L, multgroup[j]-2L do indx[k+1] = nextgroup[indx[k]] - foo = max(score[indx], ibest) - if sp then outdat[indx[ibest]].specprimary = 1 - if ns then outdat[indx].nspecobs = multgroup[j] - endelse - endif - endfor - - - ; ASB: Copy specprimary into specboss - ; (Thinking is that specprimary can be superseded downstream.) - if tag_exist(outdat, 'specboss') then outdat.specboss = outdat.specprimary - - splog, 'Time to assign primaries = ', systime(1)-t2, ' sec' - endif - - ;---------- - ; Pre-condition to FITS structure to have same-length strings - ; (for any given tag name) by concatenating spaces. - - ntag = n_tags(outdat) - tags = tag_names(outdat) - for itag=0L, ntag-1L do begin - if (size(outdat[0].(itag), /tname) EQ 'STRING') then begin - if (NOT keyword_set(silent)) then $ - splog, 'Padding whitespace for string array ' + tags[itag] - taglen = strlen(strtrim(outdat.(itag))) - maxlen = max(taglen) - padspace = string('', format='(a'+string(maxlen)+')') - outdat.(itag) = strmid(outdat.(itag) + padspace, 0, maxlen) - endif - endfor - - ;---------- - ; Write the output FITS file, writing one field at a time - - ; Don't allow duplicate tags between the tsObj structure and what - ; is already in the output structure. For ex, MJD is in both. - if no_photo_file eq 0 then begin - tsobj0 = struct_selecttags(tsobj0, except_tags=tag_names(outdat));;HJIM Decoment this part - platedat1 = create_struct(outdat[0], tsobj0) - endif else begin - platedat1 = outdat[0] - endelse - if (keyword_set(except_tags)) then $ - platedat1 = struct_selecttags(platedat1, except_tags=except_tags) - struct_assign, {junk:0}, platedat1 ; Zero-out all elements - - splog, 'Writing FITS file ' + outroot[0]+'.fits' - for ifile=0L, nfile-1 do begin - field_plate=plist[ifile].field - splog, 'Writing field ', ifile+1, ' of ', nfile - str_p='field' - - platedat = replicate(platedat1, plist[ifile].n_total) - indx = lindgen(plist[ifile].n_total) - if (ifile GT 0) then indx += total(plist[0:ifile-1].n_total) - if keyword_set(photo_file) then begin - readspec, field_plate, mjd=plist[ifile].mjd, $ - run2d=strtrim(plist[ifile].run2d), tsobj=tsobj, $ - legacy=legacy, plates=plates, /silent - if (keyword_set(tsobj)) then $ - copy_struct, tsobj, platedat $ - else $ - splog, 'WARNING: No tsObj file found for '+str_p+' ', outdat[indx[0]].field - endif else begin - readspec, field_plate, mjd=plist[ifile].mjd, $ - run2d=strtrim(plist[ifile].run2d), $ - legacy=legacy, plates=plates, /silent - endelse - copy_struct, outdat[indx], platedat - - ; All strings must be the same length, or appending to the FITS file - ; will result in corruption. The only string in the tsobj structure - ; is for the RERUN. - ; HJIM Decoment the next line - if no_photo_file eq 0 then $ - platedat.rerun = string(platedat.rerun+' ',format='(a3)') - - mwrfits_chunks, platedat, outroot[0]+'.fits.tmp', $ - create=(ifile EQ 0), append=(ifile GT 0) - endfor - - outdat = 0 ; Clear memory - - ;---------- - ; Create the structure for ASCII output field - - adat1 = create_struct( $ - str_p , 0L, $ - 'mjd' , 0L, $ - 'fiberid' , 0L, $ - 'class' , '', $ - 'subclass' , '', $ - 'z' , 0.0, $ - 'z_err' , 0.0, $ - 'zwarning' , 0L, $ - 'fiber_ra' , 0.0d, $ - 'fiber_dec' , 0.0d, $ - 'specprimary', 0L, $ - 'fieldsn2' , 0.0, $ - 'objtype' , '', $ - 'tileid' , 0L, $ - 'objc_type' , '', $ - 'modelflux' , fltarr(5) ) - - - if keyword_set(legacy) then $ - adat1 = struct_addtags(adat1, {chunk:'',DEREDSN2:'',$ - specprimary:0B,specboss:0B,boss_specobj_id:0L,$ - nspecobs:0}) - - tag_alias = [['SPECPRIMARY','PRIMARY'], $ - ['FIBERID','FIBER']];, $ - - ; Read the tags that we need from the FITS file - outdat = hogg_mrdfits(outroot[0]+'.fits.tmp', 1, nrowchunk=10000L, $ - columns=tag_names(adat1), /unsigned) - adat = replicate(adat1, n_elements(outdat)) - copy_struct, outdat, adat - - ; Replace any blank strings for CLASS with "". - ii = where(strtrim(adat.class,2) EQ '') - if (ii[0] NE -1) then adat[ii].class = '""' - - ; Replace any blank strings for SUBCLASS with "". - ; If SUBCLASS contains several words, then use a plus sign between - ; the words rather than a space. - adat.subclass = strtrim(adat.subclass,2) - ii = where(adat.subclass EQ '') - if (ii[0] NE -1) then adat[ii].subclass = '""' - adat.subclass = repstr(adat.subclass, ' ', '+') - - objtypes = ['UNKNOWN', 'CR', 'DEFECT', 'GALAXY', 'GHOST', 'KNOWNOBJ', $ - 'STAR', 'TRAIL', 'SKY'] - ;HJIM decomet the next line - if no_photo_file eq 0 then $ - adat.objc_type = objtypes[outdat.objc_type] - - outdat = 0 ; Clear memory - - splog, 'Writing ASCII file ' + outroot[0]+'.dat' - struct_print, adat, filename=outroot[0]+'.dat.tmp', alias=tag_alias - - adat = 0 ; Clear memory - - ;---------- - ; Create the merged line data - - if (not keyword_set(skip_line)) then begin - splog, 'Writing FITS zline file ' + outroot[1]+'.fits' - for ifile=0L, nfile-1 do begin - field_plate=plist[ifile].field - splog, 'Writing zline ', ifile+1, ' of ', nfile - readspec, field_plate, mjd=plist[ifile].mjd, $ - run2d=strtrim(plist[ifile].run2d), run1d=strtrim(plist[ifile].run1d), $ - zline=linedat, legacy=legacy, plates=plates, /silent - if not (tag_exist(linedat,'field')) then begin - adatag = create_struct('field',field_plate) - endif - if (ifile EQ 0) then begin - nobj = total(plist.n_total) - nper = n_elements(linedat) / plist[0].n_total - sxaddpar, linehdr, 'DIMS0', nper, ' Number of emission lines' - sxaddpar, linehdr, 'DIMS1', nobj, ' Number of objects' - linedat1 = linedat[0] - struct_assign, {junk:0}, linedat1 - if keyword_set(adatag) then begin - linedat1=create_struct(adatag,linedat1) - endif - endif - ; Demand that the structure has the same format as the first - ; one written. - linedat_out = replicate(linedat1, n_elements(linedat)) - ;adatag_in = replicate(adatag, n_elements(linedat)) - struct_assign, linedat, linedat_out - ;struct_assign, adatag_in, linedat_out - if keyword_set(adatag) then begin - linedat_out.field=field_plate - endif - mwrfits_chunks, linedat_out, outroot[1]+'.fits.tmp', linehdr, $ - create=(ifile EQ 0), append=(ifile GT 0) - endfor - endif - - if keyword_set(lite) then begin - exclude_spall_tags=['FIELDID_LIST','XFOCAL','YFOCAL','DESIGNS','CONFIGS',$ - 'MJD_LIST','TAI_LIST','FIELDSN2G_LIST','FIELDSN2R_LIST',$ - 'FIELDSN2I_LIST','RA_LIST', 'DEC_LIST', 'BLUEFIBER',$ - 'DELTA_RA_LIST', 'DELTA_DEC_LIST',$ - 'ZOFFSET','SDSSV_BOSS_TARGET0','ASSIGNED',$ - 'ON_TARGET','VALID','MOON_DIST','MOON_PHASE','FIBERID_LIST',$ - 'FIELDSNR2G_LIST','FIELDSNR2R_LIST','FIELDSNR2I_LIST',$ - 'TCOLUMN','NPOLY','THETA','FRACNSIGMA','FRACNSIGHI',$ - 'FRACNSIGLO','HEALPIX_PATH','carton_to_target_pk'] - - spall = mrdfits(outroot[0]+'.fits.tmp',1) - spall_lite = struct_selecttags(spall,except_tags=exclude_spall_tags) - spall_lite = struct_addtags(spall_lite, replicate(create_struct('ASSIGNED',0S,$ - 'ON_TARGET',0S,$ - 'VALID',0S,$ - 'MOON_DIST',0.0,$ - 'MOON_PHASE',0.0,$ - 'carton_to_target_pk',0LL),n_elements(spall))) - for i=0, n_elements(spall)-1 do begin - spall_lite[i].ASSIGNED = min(FIX(strsplit(spall[i].ASSIGNED,/extract))) - spall_lite[i].ON_TARGET = min(FIX(strsplit(spall[i].ON_TARGET,/extract))) - spall_lite[i].VALID = min(FIX(strsplit(spall[i].VALID,/extract))) - spall_lite[i].MOON_DIST = avg(float(strsplit(spall[i].MOON_DIST,/extract))) - spall_lite[i].MOON_PHASE = avg(float(strsplit(spall[i].MOON_PHASE,/extract))) - spall_lite[i].carton_to_target_pk = LONG64(spall[i].carton_to_target_pk) - endfor - spall_name=REPSTR(outroot[0],'spAll','spAll-lite') - MWRFITS, spall_lite, spall_name+'.fits.tmp', fits_hdr, Status=Status - spawn, ['gzip', spall_name+'.fits.tmp'], /noshell - endif - - ;---------- - ; Rename temporary files - ;print, outroot[0] - spawn, ['mv', outroot[0]+'.fits.tmp', outroot[0]+'.fits'], /noshell - spawn, ['gzip', outroot[0]+'.dat.tmp'], /noshell - spawn, ['mv', outroot[0]+'.dat.tmp.gz', outroot[0]+'.dat.gz'], /noshell - if (not keyword_set(skip_line)) then $ - spawn, ['mv', outroot[1]+'.fits.tmp', outroot[1]+'.fits'], /noshell - if keyword_set(lite) then $ - spawn, ['mv', spall_name+'.fits.tmp.gz', spall_name+'.fits.gz'], /noshell - thismem = memory() - maxmem = thismem[3] - splog, 'Maximum memory usage = ', maxmem/1.d6, ' MB' - splog, 'Total time = ', systime(1)-t1, ' sec' - - return -end - -;------------------------------------------------------------------------------ -pro fieldmerge, run2d=run2d, indir=indir, mergerun2d=mergerun2d, programs=programs, $ - legacy=legacy, plates=plates, skip_specprimary=skip_specprimary, lite=lite, _EXTRA=Extra - -RESOLVE_ALL, /QUIET, /SKIP_EXISTING, /CONTINUE_ON_ERROR -CPU, TPOOL_NTHREADS = 1 - - undefine, logfile - if TAG_EXIST(Extra,'field',/QUIET) then begin - logfile='fieldmerge' - logfile=logfile+'-'+field_to_string(Extra.field) - if TAG_EXIST(Extra,'mjd',/QUIET) then logfile=logfile+'-'+strtrim(Extra.mjd,2) - logfile = djs_filepath(logfile, root_dir='') - - logfile=logfile+'.log' - cpbackup, logfile - splog, filename=logfile - splog, 'Log file ' + logfile + ' opened ' + systime() - endif - - if keyword_set(mergerun2d) then begin - conflist, outdir=getenv('BOSS_SPECTRO_REDUX'), plist=plist - fieldmerge1, plist=plist, legacy=legacy, skip_specprimary=skip_specprimary, $ - plates=plates, lite=lite, _EXTRA=Extra - - endif else begin - - conflist, plist=plist, topdir=indir, run2d=run2d - ;print, plist;indir - if (NOT keyword_set(plist)) then return - - if keyword_set(programs) then begin - splog, 'Selecting only plates with programname:' - splog, programs - nmatch = lonarr(n_elements(plist)) - for i=0, n_elements(programs)-1 do $ - nmatch+= strmatch(strtrim(plist.PROGRAMNAME,2), strtrim(programs[i],2) ) - indx = where( nmatch GT 0, ct) - if (ct EQ 0) then begin - splog, 'No plates found with programnames : ' - splog, programs - return - endif - plist=plist[indx] - fieldmerge1, plist=plist, run2d=run2d, legacy=legacy, skip_specprimary=skip_specprimary, $ - plates=plates, lite=lite, _EXTRA=Extra - return - endif - - - - alldir = strtrim(plist.run2d) - alldir = alldir[uniq(alldir, sort(alldir))] - if (keyword_set(run2d)) then begin - nmatch = lonarr(n_elements(alldir)) - for i=0, n_elements(run2d)-1 do $ - nmatch += strmatch(alldir,run2d[i]) - indx = where(nmatch GT 0, ct) - if (ct EQ 0) then return - alldir = alldir[indx] - endif - splog, alldir - for i=0, n_elements(alldir)-1 do $ - fieldmerge1, run2d=alldir[i], indir=indir, legacy=legacy, skip_specprimary=skip_specprimary, $ - plates=plates, lite=lite, _EXTRA=Extra - - endelse - - splog, 'Successful completion of FIELDMERGE at ' + systime() - ;---------- - ; Close log files - splog, /close -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/filter_check.pro b/pro/spec1d/filter_check.pro deleted file mode 100644 index 9e719b784..000000000 --- a/pro/spec1d/filter_check.pro +++ /dev/null @@ -1,112 +0,0 @@ -;+ -; NAME: -; filter_check -; -; PURPOSE: -; Fit for the filter curves by comparing photometry and spectrophotometry -; -; CALLING SEQUENCE: -; -; filter_check,spallfile,binboundsfile -; -; INPUTS: -; spallfile - spectro info -; -; OPTIONAL INPUTS: -; -; binboundsfile - bin boundaries -; -; OPTIONAL KEYWORDS: -; -; OUTPUTS: -; binRfile - file containing output stuff -; -; COMMENTS: -; -; BUGS: -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; -; DATA FILES: -; -; REVISION HISTORY: -; 05-APr-2000 Written by M. Blanton, Fermiland -;- -;------------------------------------------------------------------------------ -pro filter_check, spselect, flux,invvar,loglam, binRbase, $ -binbounds=binbounds, nosubtract=nosubtract - - ;-------- - ; Solve in each band - nselect=n_elements(spselect) - for band=1, 3 do begin - - ;-------- - ; Create photocounts - photomags=spselect[*].psfCounts[band] $ - +(spselect[*].fiberCounts[2]-spselect[*].psfCounts[2]) - photocounts=10.^(-0.4*photomags)-spselect[*].counts_spectro*0.79 - - ;-------- - ; Read in bin boundaries, bin spectra if desired - if(keyword_set(binbounds)) then begin - ;filename=binboundsbase+'.'+strtrim(string(i),2)+'.dat' - ;openr,11,filename - ;readf,nbins - ;binbounds=lonarr(nbins+1) - ;readf,binbounds - ;close,11 - nbins=n_elements(binbounds)-1 - binflux=fltarr(nbins+1-keyword_set(nosubtract),nselect) - bin_spectra,flux,invvar,binbounds,binflux=binflux - endif else begin - if(keyword_set(nosubtract)) then return - nbins=0 - binflux=fltarr(1,nselect) - endelse - - ;-------- - ; Flux convolved with bins - if(not keyword_set(nosubtract)) then $ - binflux[nbins,*]=spselect[*].counts_spectro[band] - - ;------- - ; Iterate - indx=lindgen(n_elements(spselect)) - for iter=0, 1 do begin - - ;-------- - ; Find solution - filter_solve,binflux[*,indx],photocounts[indx],binR - - ;------- - ; Sigma clip - resid=transpose(binflux##binR)-photocounts - rms=djsig(resid[indx]) - help,rms - mean=djs_mean(resid[indx]) - help,mean - indx=where((resid/rms)^2 lt 100.) - - endfor - print, binR -erase & plot, 10.0^(0.5*(loglam[binbounds[0:nbins-1]]+loglam[binbounds[1:nbins]])),binR,psym=10 -stop -erase & plot, spselect.psfcounts[1]-spselect.psfcounts[2], resid, psym=1 -djs_oplot, photocounts[indx], resid[indx], psym=1, color='red' - -stop - - ;-------- - ; Output solution - filename=binRbase+'.'+strtrim(string(band),2)+'.dat' - openw,11,filename - printf,11,binR - close,11 - - endfor - -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/filter_check_chi2.pro b/pro/spec1d/filter_check_chi2.pro deleted file mode 100644 index 295d0c826..000000000 --- a/pro/spec1d/filter_check_chi2.pro +++ /dev/null @@ -1,43 +0,0 @@ -;+ -; NAME: -; filter_check_chi2 -; -; PURPOSE: -; Calculate the chi^2 for a particular set of bandpass residuals. -; -; CALLING SEQUENCE: -; chi2 = filter_check_chi2(binflux, binR, photocounts) -; -; INPUTS: -; binflux - binned flux -; binR - parameters to use for flux -; photocounts - psf_band + (fiber_r-psf_r) (not dereddened) -; -; OPTIONAL INPUTS: -; -; OPTIONAL KEYWORDS: -; -; OUTPUTS: -; chi2 - resulting chi2 -; -; COMMENTS: -; -; BUGS: -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; -; DATA FILES: -; -; REVISION HISTORY: -; 05-APr-2000 Written by M. Blanton, Fermiland -;- -;------------------------------------------------------------------------------ -pro filter_check_chi2, binflux, binR, photocounts - - fullbinR=(fltarr((size(binflux))[1])+1)##binR - chi2=total(binflux*fullbinR,/double)-total(photocounts,/double) - -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/filter_select.pro b/pro/spec1d/filter_select.pro deleted file mode 100644 index dcc2ba285..000000000 --- a/pro/spec1d/filter_select.pro +++ /dev/null @@ -1,170 +0,0 @@ -;+ -; NAME: -; filter_select -; -; PURPOSE: -; Gather spectra based on an input file of the form created by platemerge (the spAll file). -; Calculate the ugriz throughput for each object in the plates, possibly -; putting limits on target type, MJD, or signal-to-noise -; (essentially by requiring survey quality). -; -; CALLING SEQUENCE: -; filter_select, spallfile, outfile, [mjdlimits= , primtarget=, -; filter_prefix=, mingisn2=, rpsfmodel=] -; -; INPUTS: -; spallfile - spAll.fit file as created by platemerge -; filter_prefix - Use alternate prefix for filter curves to use -; (allowed are sdss or doi) -; -; OPTIONAL INPUTS: -; -; OPTIONAL KEYWORDS: -; mjdlimits - Only look in a certain range of MJDs -; primtarget - Require a certain target type -; mingisn2 - Minimum plate SN^2 in g AND i -; -; OUTPUTS: -; outfile - Fits file with all the spAll.fit info, but with -; synthetic ugriz replaced with the desired filter -; curves -; -; COMMENTS: -; -; BUGS: -; Depends on spec_append, internal routine of readspec -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; filter_thru() -; spec_append -; readspec -; mrdfits() -; mwrfits -; -; REVISION HISTORY: -; 05-APr-2000 Written by M. Blanton, Fermiland -;- -;------------------------------------------------------------------------------ -pro filter_select, spallfile, outbase, filter_prefix, mjdlimits=mjdlimits, $ - primtarget=primtarget, mingisn2=mingisn2, firstn=firstn, $ - rfluxlimits=rfluxlimits, rpsfmodel=rpsfmodel, $ - flux=flux,invvar=invvar,loglam=loglam, spselect=spselect, $ - outspectra=outspectra - - ;-------- - ; Read in the file - spall=mrdfits(spallfile,1) - nall=n_elements(spall) - splog,string(nall)+' objects total' - - ;-------- - ; Select desired spectra - - ; set all initially to selected - select=intarr(nall) - select[*]=1 - - ; throw out those outside MJD limits (inclusive) - if(keyword_set(mjdlimits)) then begin - indx=where(spall.mjd lt mjdlimits[0] or spall.mjd gt mjdlimits[1],count) - if(count gt 0) then select[indx]=0 - endif - - ; throw out those outside flux limit (inclusive) - if(keyword_set(rfluxlimits)) then begin - indx=where(spall.psfCounts[2] lt rfluxlimits[0] or $ - spall.psfCounts[2] gt rfluxlimits[1],count) - if(count gt 0) then select[indx]=0 - endif - - ; throw out those outside flux limit (inclusive) - if(keyword_set(rpsfmodel)) then begin - indx=where(spall.psfcounts[2]-spall.counts_model[2] gt rpsfmodel,count) - if(count gt 0) then select[indx]=0 - endif - - if(keyword_set(primtarget)) then begin - indx=where((spall.primtarget and primtarget) eq 0,count) - if(count gt 0) then select[indx]=0 - endif - - if(keyword_set(mingisn2)) then begin - indx=where(spall.spec1_g lt mingisn2 or $ - spall.spec2_g lt mingisn2 or $ - spall.spec1_i lt mingisn2 or $ - spall.spec2_i lt mingisn2,count ) - if(count gt 0) then select[indx]=0 - endif - indx=where(select gt 0,count) - - if(keyword_set(firstn)) then begin - if (count gt firstn) then count=firstn - endif - - if(count eq 0) then begin - splog,'no objects ' - return - endif - - spselect=spall[indx[0:count-1]] - nselect=n_elements(spselect) - - ;-------- - ; Gather all of the spectra - splog,string(nselect)+' objects selected - - readspec,spselect.plate, $ - spselect.fiberid, $ - mjd=spselect.mjd, $ - flux=compflux,invvar=compinvvar, $ - loglam=comploglam,andmask=compandmask, ormask=compormask - compinvvar = skymask(compinvvar, compandmask, compormask) - compandmask = 0 ; Free memory - compormask = 0 ; Free memory - - npixobj=n_elements(comploglam)/nselect -; loglammin=max(comploglam[0,*]) -; loglammax=min(comploglam[npixobj-1,*]) - loglammin=3.5855 - loglammax=3.9610 - nloglam=round(10000l*(loglammax-loglammin)) - flux=fltarr(nloglam,nselect) - invvar=fltarr(nloglam,nselect) - loglam=fltarr(nloglam,nselect) - for i = 0, nselect-1 do begin - ilmin=10000*(loglammin-comploglam[0,i]) - flux[*,i]=compflux[ilmin:ilmin+nloglam-1,i] - invvar[*,i]=compinvvar[ilmin:ilmin+nloglam-1,i] - loglam[*,i]=comploglam[ilmin:ilmin+nloglam-1,i] - end - - ;-------- - ; Send the spectra and fluxes to the synthesizer; - ; an attempt to do here what is done in spreduce1d.pro - waveimg=10d^loglam - flambda2fnu = 1.e+6 * waveimg^2 / (3631.*2.99792e18) - flux=flux*rebin(flambda2fnu, nloglam, nselect) - fthru=filter_thru(flux, waveimg=waveimg, mask=(invvar eq 0), $ - filter_prefix=filter_prefix, /toair) - - for band=0, 4 do begin - spselect[*].counts_spectro[band]=fthru[*,band] - endfor - - if (keyword_set(outspectra)) then begin - mwrfits,spselect,outbase+'.fits',/create - openw,11,outbase+'.flux' - openw,12,outbase+'.invvar' - openw,13,outbase+'.loglam' - writeu,11,float(flux) - writeu,12,float(invvar) - writeu,13,float(loglam) - close,11 - close,12 - close,13 - endif - -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/filter_solve.pro b/pro/spec1d/filter_solve.pro deleted file mode 100644 index 0d66ae17a..000000000 --- a/pro/spec1d/filter_solve.pro +++ /dev/null @@ -1,62 +0,0 @@ -;+ -; NAME: -; filter_solve -; -; PURPOSE: -; Minimize the chi^2 by varying the filter residuals. Basically solve Ax=b. -; -; CALLING SEQUENCE: -; filter_solve,binflux,photocounts,binR -; -; INPUTS: -; binflux - binned flux -; photocounts - psf_band + (fiber_r-psf_r) (not dereddened) -; -; OPTIONAL INPUTS: -; -; OPTIONAL KEYWORDS: -; -; OUTPUTS: -; -; binR - best fit filter parameters -; -; COMMENTS: -; -; BUGS: -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; -; DATA FILES: -; -; REVISION HISTORY: -; 05-APr-2000 Written by M. Blanton, Fermiland -;- -;------------------------------------------------------------------------------ -pro filter_solve, binflux, photocounts, binR - - ;------------------ - ; Make A and invert - nbins=(size(binflux))[1] - covar=fltarr(nbins,nbins) - for i = 0, nbins-1 do begin - for j = 0, nbins-1 do begin - covar[i,j]=total(binflux[i,*]*binflux[j,*],/double) - endfor - endfor - invcovar=invert(covar,/double) - - ;--------- - ; Make b - rhs=fltarr(1,nbins) - for i = 0, nbins-1 do begin - rhs[0,i]=total(binflux[i,*]*photocounts,/double) - endfor - - ;--------- - ; Multiply to get binR - binR=invcovar##rhs - -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/find_npeaks.pro b/pro/spec1d/find_npeaks.pro deleted file mode 100644 index 3a1c83b56..000000000 --- a/pro/spec1d/find_npeaks.pro +++ /dev/null @@ -1,81 +0,0 @@ -; This used to be used by ZCOMPUTE, but is no longer. -function find_npeaks, yflux, xvec, nfind=nfind, minsep=minsep, $ - width=width, ypeak=ypeak, xerr=xerr, npeak=npeak - - ndata = n_elements(yflux) - if (ndata EQ 1) then $ - return, 0 - - if (NOT keyword_set(xvec)) then xvec = lindgen(ndata) - if (NOT keyword_set(nfind)) then nfind = 1 - if (n_elements(minsep) EQ 0) then minsep = 0 - if (NOT keyword_set(width)) then width = 3 - if (xvec[1] GT xvec[0]) then isign = 1 $ ; ascending X - else isign = -1 ; descending X - - ;---------- - ; Make a copy of YFLUX for finding local maxima; this will be modified - ; each time a peak is found by filling with values of YDONE where we - ; are no longer allowed to search. - - ycopy = yflux - yderiv = [ycopy[1:ndata-1] - ycopy[0:ndata-2], 0] - ydone = min(ycopy) - - ;---------- - ; Find up to NFIND peaks - - for ifind=0, nfind-1 do begin - - ;---------- - ; Locate next maximum - - junk = max(ycopy, imax) - - ;---------- - ; Centroid on this peak - - xpeak1 = zfitmax(yflux, xvec, xguess=xvec[imax], width=width, $ - xerr=xerr1, ypeak=ypeak1) - - ;---------- - ; Save return values - - if (ifind EQ 0) then begin - xpeak = xpeak1 - xerr = xerr1 - ypeak = ypeak1 - endif else begin - xpeak = [xpeak, xpeak1] - xerr = [xerr, xerr1] - ypeak = [ypeak, ypeak1] - endelse - - ;---------- - ; Exclude from future peak-finding all points within MINSEP of this - ; peak, up until the function is increasing again. - - junk = min(abs(xvec - xvec[imax]), ixc) - ix1 = (reverse(where(isign*xvec LT (isign*xvec[imax] - minsep) $ - AND shift(yderiv,1) LT 0)))[0] - if (ix1 EQ -1) then ix1 = 0 - ix2 = (where(isign*xvec GT (isign*xvec[imax] + minsep) AND yderiv GT 0))[0] - if (ix2 EQ -1) then ix2 = ndata-1 - - ycopy[ix1:ix2] = ydone -;print,xpeak1,ix1,ixc,ix2, xvec[imax] -;splot,yflux -;soplot,ycopy,color='red' - - ;---------- - ; Test to see if we can find any more peaks - - junk = where(ycopy GT ydone, ct) - if (ct EQ 0) then ifind = nfind - - endfor - - npeak = n_elements(xpeak) - - return, xpeak -end diff --git a/pro/spec1d/findchi2min.pro b/pro/spec1d/findchi2min.pro deleted file mode 100644 index 312a90a5b..000000000 --- a/pro/spec1d/findchi2min.pro +++ /dev/null @@ -1,59 +0,0 @@ -;------------------------------------------------------------------------------ -; This routine used to be used by VDISPFIT, but is no longer as of 10-Feb-02. -;------------------------------------------------------------------------------ -pro findchi2min, x, chi2, minchi2, minsigma, errsigma, npts=npts, $ - deltachisq=deltachisq, nfine=nfine, $ - plottitle=plottitle, doplot=doplot, debug=debug - - if (NOT keyword_set(deltachisq)) then deltachisq = 1.0 - if (NOT keyword_set(nfine)) then nfine = 100 - - ; spline chi2 curve and return desired values - - nx = n_elements(x) - if (nx EQ 0) then return - - minx = min(x, max=maxx) - y2 = spl_init(x, chi2) - - x2 = findgen(nx*nfine+1)/(nx*nfine) * (maxx - minx) + minx - chifit = spl_interp(x, chi2, y2, x2) - - minchi2 = min(chifit,fitplace) - - minsigma = x2[fitplace] - - ; attempt to scale chi^2 to get errors correct ??? - - usethisdelta = deltachisq - if (keyword_set(npts)) then begin - scale = minchi2/npts - if (scale GT 1.0) then usethisdelta = deltachisq * scale - endif - - range = where(chifit - minchi2 LT usethisdelta) - - if (range[0] EQ -1) then return - - uppersigma = x2[max(range)] - minsigma - lowersigma = minsigma - x2[min(range)] - - errsigma = 0.5*(uppersigma + lowersigma) - - if (keyword_set(doplot)) then begin - plot, x, chi2, psym=1, $ - title=plottitle - djs_oplot, x2, chifit - djs_oplot, x2[range], chifit[range], color='red' - - ; Wait for a keystroke... - if (keyword_set(debug)) then begin - print, 'Press any key...' - cc = strupcase(get_kbrd(1)) - endif - - endif - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/findfiber.pro b/pro/spec1d/findfiber.pro deleted file mode 100644 index 7b36710a9..000000000 --- a/pro/spec1d/findfiber.pro +++ /dev/null @@ -1,25 +0,0 @@ -function findfiber, in, out - - nfiber = n_elements(in) - - - for i=0, nfiber - 1 do begin - - tt = where(in[i].objid[0] EQ out.run AND in[i].objid[1] EQ out.rerun AND $ - in[i].objid[2] EQ out.camcol AND in[i].objid[3] EQ out.field AND $ - in[i].objid[4] EQ out.id, n) - - if n NE 1 then begin - tt = 0 - print, i, 'object not found' - endif - - if i EQ 0 then flist = tt[0] $ - else flist = [flist, tt[0]] - - endfor - - return, flist -end - - diff --git a/pro/spec1d/findspec.pro b/pro/spec1d/findspec.pro deleted file mode 100644 index a8a09f396..000000000 --- a/pro/spec1d/findspec.pro +++ /dev/null @@ -1,258 +0,0 @@ -;+ -; NAME: -; findspec -; -; PURPOSE: -; Routine for finding SDSS spectra that match a given RA, DEC. -; -; CALLING SEQUENCE: -; findspec, [ra, dec, infile=, outfile=, searchrad=, slist=, $ -; topdir=, run2d=, run1d=, /best, /print, /sdss ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; ra - Right ascension; scalar or array in degrees. -; dec - Declination; scalar or array in degrees. -; infile - Input file with RA, DEC positions, one per line. -; If set, then this over-rides values passed in RA,DEC. -; outfile - If set, then print matches to this file. -; searchrad - Search radius in degrees; default to 3./3600 (3 arcsec). -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; run2d - Override environment variable RUN2D, searching only for -; those RUN2D reductions -; run1d - Override environment variable RUN1D, searching only for -; those RUN1D reductions -; best - If set, then return the best match for each location, where -; best is defined to be the closest object on the plate with -; the best S/N. -; This also forces the return of one structure element in SLIST -; per position, so that you get exactly a paired list between -; RA,DEC and SLIST. -; print - If set, then print matches to the terminal. -; sdss - This is a shortcut option that is exactly equivalent to -; topdir=GETENV('SPECTRO_REDUX'), run2d='26' -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; slist - Structure containing information for each match. -; -; COMMENTS: -; The search radius is set to within 1.55 degress of a plate center, -; then within 3 arcsec of an object. -; -; findspec.pro is currently setup to use BOSS data, but it still works -; with SDSS-I,II data with the following procedure: -; -; findspec, ra, dec, topdir=GETENV('SPECTRO_REDUX'), run2d='26' -; -; or -; -; findspec, ra, dec, /sdss -; -; EXAMPLES: -; Make a file "file.in" with the following two lines: -; 218.7478 -0.3745007 -; 217.7803 -0.8900855 -; -; Then run the command: -; IDL> findspec,infile='file.in',/sdss,/print -; -; This should print: -; -;PLATE MJD FIBERID RA DEC MATCHRAD -;----- ----- ------- ------------- -------------- ----------- -; 306 51637 101 218.7478 -0.3745007 0.0000 -; 306 51690 117 218.7478 -0.3745007 0.0000 -; 306 51637 201 217.7803 -0.8900855 2.9996e-05 -; 306 51690 217 217.7803 -0.8900855 2.9996e-05 -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_readcol -; djs_diff_angle() -; platelist -; readspec -; struct_print -; -; REVISION HISTORY: -; 15-Feb-2001 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro findspec, ra, dec, infile=infile, outfile=outfile, searchrad=searchrad, $ - slist=slist, topdir=topdir1, run2d=run2d1, run1d=run1d1, $ - best=best, print=print1, sdss=sdss - - common com_findspec, plist, nlist, lasttopdir, last2d=last2d, last1d=last1d - - if (keyword_set(sdss)) then begin - topdir1 = getenv('SPECTRO_REDUX') - run2d1 = '26' - endif - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - splog, 'Setting RUN1D=', run2d - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - - if (keyword_set(lasttopdir) EQ 0) then lasttopdir = '' - if (keyword_set(last2d) EQ 0) then last2d = '' - if (keyword_set(last1d) EQ 0) then last1d = '' - if (keyword_set(plist) EQ 0 OR topdir NE lasttopdir $ - OR run2d NE last2d OR run1d NE last1d) then begin - lasttopdir = topdir - last2d = run2d - last1d = run1d - platelist, plist=plist, topdir=topdir, run2d=run2d, run1d=run1d -; platelist_files = file_search(topdir+'/platelist.fits') -; plates_files = file_search(topdir+'/plates-*.fits') -; if (strlen(platelist_files[0]) GT 0) then $ -; plist = mrdfits(platelist_files[0],1,/silent) -; if (strlen(plates_files[0]) GT 0) then $ -; plist = mrdfits(plates_files[0],1,/silent) -; if (NOT keyword_set(plist)) then $ -; message, 'Plate list (platelist.fits or plates-*.fits) not found in ' + topdir - nlist = n_elements(plist) - endif - - qdone = strmatch(plist.status1d,'Done*') - if (tag_exist(plist, 'RUN2D')) then begin - qdone2d = bytarr(nlist) - for i=0, n_elements(run2d)-1 do $ - qdone2d = qdone2d OR strmatch(strtrim(plist.run2d,2), run2d[i]) - qdone = qdone AND qdone2d - endif - if (tag_exist(plist, 'RUN1D')) then begin - qdone1d = bytarr(nlist) - for i=0, n_elements(run1d)-1 do $ - qdone1d = qdone1d OR strmatch(strtrim(plist.run1d,2), run1d[i]) - qdone = qdone AND qdone1d - endif - idone = where(qdone, ndone) - if (ndone EQ 0) then begin - splog, 'No reduced plates!' - slist = 0 - return - endif - - ;---------- - ; Read an input file if specified - - if (keyword_set(infile)) then begin - djs_readcol, infile, ra, dec, format='(D,D)' - endif - nobj = n_elements(ra) - - if (NOT keyword_set(searchrad)) then searchrad = 3./3600. - - ;---------- - ; Create output structure - - blanklist = create_struct(name='slist', $ - 'plate' , 0L, $ - 'mjd' , 0L, $ - 'fiberid' , 0L, $ - 'ra' , 0.d, $ - 'dec' , 0.d, $ - 'matchrad', 0.0 ) - - ; Set default return values - if (keyword_set(best)) then slist = replicate(blanklist, nobj) $ - else slist = 0 - - ;---------- - ; Match all plates with objects - - nplate = n_elements(plist) - spherematch, ra, dec, plist[idone].racen, plist[idone].deccen, $ - searchrad+1.55, imatch1, itmp, dist12, maxmatch=0 - if (imatch1[0] EQ -1) then return - imatch2 = idone[itmp] - - ;---------- - ; Read all relevant plates - - ; Read the number of fibers per plate, or assume 640 if old SDSS-I platelist - if (tag_exist(plist,'N_TOTAL')) then n_total = plist.n_total $ - else n_total = replicate(640L, n_elements(plist)) - - iplate = imatch2[uniq(imatch2,sort(imatch2))] - i0 = 0L - for i=0L, n_elements(iplate)-1L do begin - readspec, plist[iplate[i]].plate, mjd=plist[iplate[i]].mjd, $ - plugmap=plugmap1, topdir=topdir, run2d=run2d, /silent - if (n_elements(plugmap1) EQ 1) then $ - message, 'Failed reading plate ='+strtrim(plist[iplate[i]].plate,2) $ - + ' MJD='+strtrim(plist[iplate[i]].mjd,2) - if (i EQ 0) then plugmap = replicate(create_struct('PLATE',0L,'MJD',0L, $ - 'FIBERID',0L,'RA',0d,'DEC',0d), total(n_total[iplate])) - index_to=i0+lindgen(n_total[iplate[i]]) - plugmap[index_to].plate = plist[iplate[i]].plate - plugmap[index_to].mjd = plist[iplate[i]].mjd - plugmap[index_to].fiberid = plugmap1.fiberid - plugmap[index_to].ra = plugmap1.ra - plugmap[index_to].dec = plugmap1.dec -; copy_struct_inx, plugmap1, plugmap, index_to=index_to - - i0 += n_total[iplate[i]] - endfor - spherematch, ra, dec, plugmap.ra, plugmap.dec, searchrad, $ - i1, i2, d12, maxmatch=0 - if (i1[0] EQ -1) then return - - if (NOT keyword_set(best)) then begin - - ;------------------------------------------------------------------------ - ; RETURN ALL MATCHES - ;------------------------------------------------------------------------ - - slist = replicate(blanklist, n_elements(i1)) - slist.plate = plugmap[i2].plate - slist.mjd = plugmap[i2].mjd - slist.fiberid = plugmap[i2].fiberid - slist.ra = plugmap[i2].ra - slist.dec = plugmap[i2].dec - slist.matchrad = d12 - - endif else begin - ;------------------------------------------------------------------------ - ; RETURN ONLY BEST MATCH PER OBJECT - ;------------------------------------------------------------------------ - - ; Read the median S/N for each spectrum - readspec, plugmap[i2].plate, mjd=plugmap[i2].mjd, $ - plugmap[i2].fiberid, zans=zans, topdir=topdir, $ - run2d=run2d, run1d=run1d, /silent - - ; We have all the possible matches. Now sort those in the order - ; of each input object, but with the last entry being the best - ; according to the SN_MEDIAN value. - isort = sort(i1 + (zans.sn_median>0)/max(zans.sn_median+1.)) - i1 = i1[isort] - i2 = i2[isort] - d12 = d12[isort] - - iuniq = uniq(i1) - slist[i1[iuniq]].plate = plugmap[i2[iuniq]].plate - slist[i1[iuniq]].mjd = plugmap[i2[iuniq]].mjd - slist[i1[iuniq]].fiberid = plugmap[i2[iuniq]].fiberid - slist[i1[iuniq]].ra = plugmap[i2[iuniq]].ra - slist[i1[iuniq]].dec = plugmap[i2[iuniq]].dec - slist[i1[iuniq]].matchrad = d12[iuniq] - endelse - - ;---------- - ; Print to terminal and/or output file - - if (keyword_set(print1)) then struct_print, slist - if (keyword_set(outfile)) then struct_print, slist, filename=outfile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/fitredshift.pro b/pro/spec1d/fitredshift.pro deleted file mode 100644 index e4eecca98..000000000 --- a/pro/spec1d/fitredshift.pro +++ /dev/null @@ -1,275 +0,0 @@ -;+ -; NAME: -; fitredshift -; -; PURPOSE: -; Find the most significant correlation peak (soon to be peaks) -; return optional keywords in units of pixels -; -; CALLING SEQUENCE: -; fitredshift, fluxfft, starfft, $ -; [ nsearch=, zfit=, z_err=, veldispfit=, veldisp_err=, /doplot ] -; -; INPUTS: -; fluxfft - complex fft of prepared galaxy spectrum -; fluxerr - error vector for flux (only test if it is zero) -; starfft - complex fft of stellar template -; starerr - error vector for flux (only test if it is zero) -; -; OPTIONAL KEYWORDS: -; nsearch - number of peaks to search, almost always only 1 is searched -; zmin - Minimum z (in pixels) to allow (should be < 0) -; doplot - plot the correlation peak and fits in an xwindow -; -; OPTIONAL OUTPUTS: -; zfit - best fit z, this should evolve into an array of z's -; with accompanying z_errs and z_confidences -; z_err - centroid errors from gaussfit of correlation peak -; veldisp - sigma of cross-correlation peak -; veldisp_err- error on sigma -; -; COMMENTS: -; -; Use doplot keyword to see how well peak is being fit -; Still need to work on exact selection criteria for MOST significant peak -; or even better: measure all peaks with probability > 1% -; -; EXAMPLES: -; -; BUGS: -; -; Hardwired exclusion of blueshifts greater than 100 pixels -; this helps the noisiest cases -; -; PROCEDURES CALLED: -; findmaxarea -; curvefit -; gauss_funct -; -; REVISION HISTORY: -; 25-Mar-2000 Written by S. Burles, FNAL -; 26-Jun-2000 D. Finkbeiner - modified to properly weight corr -; vector for variable overlap -; 26-Jun-2000 (v 1.5) altered algorithm to set peak search boundary -; at the half height of the peak, rather than zero. This fixes -; cases where there is a close double peak. -;- -;------------------------------------------------------------------------------ -; This routine locates the 20 highest peaks, and measures -; the peak, center, and area of each. xcen and peak -; contain the best velues. - -pro findmaxarea, look, xcen, peak, maxarea, cen=cen, area=area, pks=pks - - ruin = look - nx = n_elements(look) - x = findgen(nx) - area = fltarr(20) - dev = fltarr(20) - cen = fltarr(20) - pks = fltarr(20) - - for i=0, 19 do begin - - pks[i] = max(ruin,velcen) - - if pks[i] GT 0.0 then begin - - ; find bounds of positive deviation with cap at +/- 3 pixels - lowerbound = max([where(ruin LT 0 AND x LT velcen),velcen-4]) + 1 - upperbound = min([where(ruin LT 0 AND x GT velcen),velcen+4]) - 1 - area[i] = total(ruin[lowerbound:upperbound]) - - dev[i] = stddev([look[velcen-100:lowerbound-1],$ - look[upperbound+1:velcen+100]], /double) - cen[i] = velcen - ruin[lowerbound:upperbound] = 0.0 - endif else i=20 - endfor - - meandev = mean(dev) - dev = dev/meandev - - maxarea = max(area,areaplace) - maxpks = max(pks,pksplace) - - place = pksplace - if (areaplace NE pksplace) then begin - print, 'Max area position does not equal Max peak position', $ - cen[areaplace], cen[pksplace] - print, 'Using Area + 1.5*peak to decide' - maxcomb = max(area + 1.5*pks,place) - endif - - xcen = cen[place] - peak = pks[place] - return -end - -;------------------------------------------------------------------------------ -pro fitredshift, fluxfft, fluxerr, starfft, starerr, $ - nsearch=nsearch, zmin=zmin, zfit=zfit, z_err=z_err, $ - veldispfit=veldisp, veldisp_err=veldisp_err, zconf=zconf, doplot=doplot - - if (NOT keyword_set(nsearch)) then nsearch = 5 - -; returned value defaults - zfit = 0. - z_err = 999. - zconf = 0. - veldisp = 0. - veldisp_err = 999. - -; check dimensions - ASSUME everything is already padded to 2^N - IF stddev([n_elements(fluxfft), n_elements(fluxerr), $ - n_elements(starfft), n_elements(starerr)]) NE 0 THEN BEGIN - help, fluxfft, fluxerr, starfft, starerr - message, 'dimensions do not match!' - ENDIF - - IF (total(abs(fluxfft)) EQ 0) OR (total(abs(starfft)) EQ 0) THEN BEGIN - print, 'FITREDSHIFT: FAILED - array full of zeros' - return - ENDIF - - -; The following compiles GAUSS_FUNCT, which is in the routine GAUSSFIT - junk = gaussfit(findgen(7),findgen(7)) - -; compute correlation of object flux to stellar template - corr = float(fft(fluxfft * conj(starfft),/inverse)) - nx = n_elements(corr) - pad = nx / 2 - -; shift corr vector so there is no discontinuity at zero lag. - corr = shift(corr, pad) - -; Need to fill an array of length fluxfilt which records the number -; of good pixels cross-correlated between star and galaxy as a function -; of shift. We construct this from the error vectors. - - denom = shift(double( $ - fft(fft(fluxerr NE 0)*conj(fft(starerr NE 0)), /inverse)), pad) *nx - - reweight = pad / (denom > 10.0) ; never use less than 10 pix - - -; This loop finds the redshift by searching the nsearch highest peaks - - good = 0 - x = lindgen(nx) - - for i=0, nsearch-1 do begin - - newcorr = corr * sqrt(reweight) ; A hack!!!??? - - if (keyword_set(zmin)) then begin -; ??? - newcorr[0:pad+zmin-1] = 0.0 - endif - - findmaxarea, newcorr, velcen, peak, cen=cen, area=area, pks=pks - - ; Let xtemp be centered about velcen for all newcorr values above 0.0 - - lowerbound = max(where(newcorr LT peak/2 AND x LT velcen)) - upperbound = min(where(newcorr LT peak/2 AND x GT velcen)) - xtemp = x[lowerbound:upperbound] - velcen - if (!version.release LT '5.4') then begin - parabola = poly_fit(xtemp, newcorr[xtemp+velcen], 2, yfit) - endif else begin - parabola = poly_fit(double(xtemp), double(newcorr[xtemp+velcen]), 2, $ - yfit=yfit) - endelse - - if (parabola[2] GE 0.0) then begin - print, 'peak is not well fit at ', velcen - newcorr[xtemp+velcen] = 0.0 - endif else if (total(newcorr[xtemp+velcen]) LT 0.0) then begin - print, 'total newcorr is less than zero at ', velcen - newcorr[xtemp+velcen] = 0.0 - endif else if (total(yfit) LT 0.0) then begin - print, 'total fit is less than zero at ', velcen - newcorr[xtemp+velcen] = 0.0 - endif else begin - i = nsearch - good = 1 -; let's attempt to fit a gaussian with no background terms - endelse - - endfor - - if (NOT good) then begin - print, 'No good peaks found' - return - endif - - xcen = (-0.5 * parabola[1]/parabola[2]) - height = (poly([xcen], parabola))[0] - - ytemp = yfit > 0.0 - guesssig = sqrt(total((xtemp-xcen)^2 * ytemp) / total(ytemp)) - - left = long(velcen + xcen - 1) - lindgen(100) - right = long(velcen + xcen + 1) + lindgen(100) - asig = stddev(newcorr[left]-newcorr[right], /double) / sqrt(2.) - - ; Here's my attempt to fit a gaussian to the correlation peak - ; The main problem here is to decide where the baseline of the - ; gaussian falls. FWHM and sigma depend on where the gaussian fit - ; goes to zero. Very troubling. - -; new xtemp - lowerbound = max(where(newcorr LT height/2 AND x LT velcen))-2 - upperbound = min(where(newcorr LT height/2 AND x GT velcen))+2 - xtemp2 = x[lowerbound:upperbound] - velcen - - - - if (asig GT 0) then weights = xtemp2*0.0 + 1.0/asig^2 $ - else weights = xtemp2*0.0 + 1.0 - - base = -height/3. ; empirical guess of gaussian baseline - - a = double([height, xcen, guesssig, base]) -; gaussf = curvefit(xtemp,newcorr[xtemp+velcen] + height/3.0, weights, $ -; a+0D, gausserrors, function_name="GAUSS_FUNCT") -; gaussf = gaussf - height/3.0 - - gaussf = curvefit(xtemp2,newcorr[xtemp2+velcen], weights, $ - a, gausserrors, function_name="GAUSS_FUNCT", iter=iter) - - IF abs(a[1]) GT 3 THEN BEGIN - message, 'curvefit failed to converge!!!', /info - print, 'Reverting to parabola solution' - - ENDIF - - -; if (keyword_set(doplot)) then begin -; wset,0 - djs_plot, x-velcen, newcorr, ps =10, xr=[-40,40], $ - title='Best correlation peak w/fits (Green:gauss, Red: Parabola)' - djs_oplot, xtemp, poly(xtemp, parabola), color='red' - djs_oplot, xtemp2, gaussf, color='green' -; endif - - zfit = velcen + a[1] - pad - z_err = gausserrors[1] - veldisp = a[2] - veldisp_err = gausserrors[2] - -; zconf = a[0] ; height of gaussian - - twopiei = 2.0 * !dpi * complex(0.0,1.0) - knums = fft_wavenums(n_elements(starfft)) - phase = exp( - twopiei * knums * zfit) - model = double(fft(starfft*phase,/inv)) - gal = double(fft(fluxfft, /inv)) - - starmask = where(starerr NE 0) - chisq = total((model-gal)^2*fluxerr*starmask)/total(starmask) - zconf = chisq - - return -end diff --git a/pro/spec1d/fixfits1d.pro b/pro/spec1d/fixfits1d.pro deleted file mode 100644 index 50d8499c9..000000000 --- a/pro/spec1d/fixfits1d.pro +++ /dev/null @@ -1,78 +0,0 @@ -;------------------------------------------------------------------------------ -pro fixfits1d - - vers = 'v4_1_2' - - filename = findfile('0*/spZ*.fits', count=nfile) - - for ifile=0, nfile-1 do begin - print, 'Modifying ' + filename[ifile] - - hdr = headfits(filename[ifile]) - - sxaddpar, hdr, 'NAXIS', 0 - sxdelpar, hdr, 'NAXIS1' - sxdelpar, hdr, 'NAXIS2' - sxaddpar, hdr, 'EXTEND', 'T', after='NAXIS' - sxdelpar, hdr, 'WCSDIM' - - sxaddpar, hdr, 'VERSUTIL', vers - sxaddpar, hdr, 'VERSREAD', vers - sxaddpar, hdr, 'VERS2D', vers - sxaddpar, hdr, 'VERSCOMB', vers - sxaddpar, hdr, 'VERS1D', vers, $ - 'Version of idlspec2d for 1D reduction', after='VERSCOMB' - - modfits, filename[ifile], 0, hdr - endfor -end - -;------------------------------------------------------------------------------ -pro fixfits2d - - vers = 'v4_1_2' - - filename = findfile('0*/spPlate*.fits', count=nfile) - - for ifile=0, nfile-1 do begin - ;---------- - ; Fix the first HDU - - print, 'Modifying ' + filename[ifile] - - hdr = headfits(filename[ifile]) - nhead = n_elements(hdr) - - sxdelpar, hdr, 'WCSDIM' - sxdelpar, hdr, 'FOCUS' - - sxaddpar, hdr, 'VERSUTIL', vers - sxaddpar, hdr, 'VERSREAD', vers - sxaddpar, hdr, 'VERS2D', vers - sxaddpar, hdr, 'VERSCOMB', vers - - ; Make certain we have exactly the same number of header cards - for iadd=0, nhead-n_elements(hdr)-1 do $ - sxaddpar, hdr, 'HISTORY', ' ' - - modfits, filename[ifile], 0, hdr - - ;---------- - ; Fix the other HDU's - - for ihdu=1, 4 do begin - nexthdr = headfits(filename[ifile], exten=ihdu) - sxaddpar, nexthdr, 'WAT0_001', sxpar(hdr, 'WAT0_001') - sxaddpar, nexthdr, 'WAT1_001', sxpar(hdr, 'WAT1_001') - sxaddpar, nexthdr, 'CRVAL1', sxpar(hdr, 'CRVAL1') - sxaddpar, nexthdr, 'CD1_1', sxpar(hdr, 'CD1_1') - sxaddpar, nexthdr, 'CRPIX1', sxpar(hdr, 'CRPIX1') - sxaddpar, nexthdr, 'CTYPE1', sxpar(hdr, 'CTYPE1') - sxaddpar, nexthdr, 'DC-FLAG', sxpar(hdr, 'DC-FLAG') - - modfits, filename[ifile], 0, nexthdr, exten_no=ihdu - endfor - - endfor -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/fixmjd.pro b/pro/spec1d/fixmjd.pro deleted file mode 100644 index a954f44c1..000000000 --- a/pro/spec1d/fixmjd.pro +++ /dev/null @@ -1,60 +0,0 @@ -; Fix the MJD in the output files spPlate, spZbest, spZall to be consistent -; with the file name. These are the header keywords MJD in HDU#0 of all -; files, and the MJD element of the structures in the spZbest,spZall files. -;------------------------------------------------------------------------------ -pro fixmjd - - ;--------------------------------------------------------------------------- - ; Fix spPlate files - - filename = findfile('0*/spPlate*.fits', count=nfile) - - for ifile=0, nfile-1 do begin - print, 'Reading ' + filename[ifile] - - mjdname = long( strmid( fileandpath(filename[ifile]), 13, 5) ) - - hdr = headfits(filename[ifile]) - mjdhdr = sxpar(hdr, 'MJD') - - if (mjdname NE mjdhdr) then begin - print, 'MODIFY!' - sxaddpar, hdr, 'MJD', mjdname - djs_modfits, filename[ifile], 0, hdr - endif - endfor - - ;--------------------------------------------------------------------------- - ; Fix spZbest,spZall files - - filename = findfile('0*/spZbest*.fits', count=nfile) - - for ifile=0, nfile-1 do begin - print, 'Reading ' + filename[ifile] - - mjdname = long( strmid( fileandpath(filename[ifile]), 13, 5) ) - - hdr = headfits(filename[ifile]) - mjdhdr = sxpar(hdr, 'MJD') - - if (mjdname NE mjdhdr) then begin - print, 'MODIFY!' - ; Modify spZbest file - sxaddpar, hdr, 'MJD', mjdname - djs_modfits, filename[ifile], 0, hdr - zans = mrdfits(filename[ifile], 1, hdr1) - zans.mjd = mjdname - djs_modfits, filename[ifile], zans, exten_no=1 - - ; Modify spZall file - zallfile = repstr(filename[ifile], 'spZbest', 'spZall') - hdr = headfits(zallfile) - sxaddpar, hdr, 'MJD', mjdname - djs_modfits, zallfile, 0, hdr - zans = mrdfits(zallfile, 1, hdr1) - zans.mjd = mjdname - djs_modfits, zallfile, zans, exten_no=1 - endif - endfor -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/fixvdisp.pro b/pro/spec1d/fixvdisp.pro deleted file mode 100644 index 05cc416f9..000000000 --- a/pro/spec1d/fixvdisp.pro +++ /dev/null @@ -1,43 +0,0 @@ -; * Fix the MJD in the output files spZbest, spZall to be consistent -; with the file name. -; * Compute VDISP,VDISP_ERR for galaxies and add to structures. -;------------------------------------------------------------------------------ -pro fixvdisp - - ;--------------------------------------------------------------------------- - ; Fix spZbest files - - filename = findfile('0*/spZbest*.fits', count=nfile) - - for ifile=0, nfile-1 do begin - print, 'Reading ' + filename[ifile] - - zans = mrdfits(filename[ifile], 1, zhdr) - spawn, 'mv -f ' + filename[ifile] + ' ' + filename[ifile]+'.OLD' - - mjdname = long( strmid( fileandpath(filename[ifile]), 13, 5) ) - - ; Compute the velocity dispersions only if there are galaxies - ; in this file, and VDISP doesn't yet exist in the structure. - igal = where(strtrim(zans.class,2) EQ 'GALAXY') - qdo = (where(tag_names(zans) EQ 'VDISP'))[0] EQ -1 - if (qdo EQ 1 AND igal[0] NE -1) then begin - thisplatefile = repstr(filename[ifile], 'spZbest', 'spPlate') - objflux = mrdfits(thisplatefile, 0, objhdr) - objivar = mrdfits(thisplatefile, 1) - - vdispfit, objflux[*,igal], objivar[*,igal], hdr=objhdr, $ - zobj=zans[igal].z, sigma=sigma, sigerr=sigerr - - newans = struct_addtags(zans, $ - replicate(create_struct('VDISP', 0.0, 'VDISP_ERR', 0.0), 640)) - newans[igal].vdisp = sigma - newans[igal].vdisp_err = sigerr - - sxaddpar, zhdr, 'MJD', mjdname ; Force the MJD to be correct - mwrfits, 0, filename[ifile], zhdr, /create - mwrfits, newans, filename[ifile] - endif - endfor -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/fourier_difference.pro b/pro/spec1d/fourier_difference.pro deleted file mode 100644 index c25368098..000000000 --- a/pro/spec1d/fourier_difference.pro +++ /dev/null @@ -1,122 +0,0 @@ - -;+ -; NAME: -; fourier_difference -; -; PURPOSE: -; Perform a chi2 fit to the fourier difference between a single -; galaxy and a broadened stellar template to calculate velocity dispersion -; and uncertainty on velocity dispersion -; -; CALLING SEQUENCE: -; answers = fourier_difference(galfft, starfft, galvar0, starvar0, $ -; testsigma=, lowlimit=, highlimit=, $ -; deltachisq=deltachisq, /doplot) -; -; INPUTS: -; galfft - Fourier transform of galaxy -; starfft - Fourier transform of stellar template -; galvar0 - error in galaxy fft (0th element of galaxy error FFT) -; starvar0 - error in stellar fft (0th element of stellar error FFT) -; -; OPTIONAL KEYWORDS: -; testsigma - Array of sigma values to calculate chi2 -; lowlimit - lower boundary of chi2 sum (in knums units) -; highlimit - upper boundary of chi2 sum (in knums units) -; deltachisq - chi2 difference from minimum to set error on velocity dispersion -; doplot - Output plots to xwindow -; -; OUTPUTS: -; answers - Four element array with: -; [minchi2, minsigma, errsigma, bestalpha] -; bestalpha is the normalization constant between galaxy and star -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; Currently, this is very slow, as we have to check 11 normalizations -; for each element in testsigma array -; -; Need to ensure that confidence level returned as errsigma is proper -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 25-Mar-2000 Written by S. Burles, FNAL -;- -;------------------------------------------------------------------------------ -function alpha_chisq, alpha, gal, star, galvar, starvar, br, minchi2 - - ntry = n_elements(alpha) - if (ntry EQ 0) then return, -1 - - chisq = fltarr(ntry) - for i=0,ntry -1 do begin - diff = gal - star*br*alpha[i] - rediff = float(diff*conj(diff)) - chisq[i] = total(rediff/(galvar + starvar*alpha[i]^2*br^2)) - endfor - - findchi2min, alpha, chisq, minchi2, bestalpha - - return, bestalpha -end - -;------------------------------------------------------------------------------ -function fourier_difference, galfft, starfft, galvar0, starvar0, $ - testsigma=testsigma, lowlimit = lowlimit, highlimit=highlimit, $ - deltachisq=deltachisq, doplot=doplot - - if (NOT keyword_set(lowlimit)) then lowlimit = 1.0/80.0 - if (NOT keyword_set(highlimit)) then highlimit = 1.0/2.2 - - if (size(galfft, /tname) EQ 'DOUBLE') then PI = !dpi $ - else PI = !pi - - knums = fft_wavenums(N_elements(galfft)) - - inside = where(abs(knums) GT lowlimit AND $ - abs(knums) LT highlimit, ninside) - - if (inside[0] EQ -1) then begin - print, 'No pixels in correct frequency range' - return, -1 - endif - - if (n_elements(testsigma) EQ 0) then testsigma = findgen(30)*0.2 - - ; This is a slow minimizer, stepping through 30 sigmas to - ; find best one. This method is the fft difference method - - nloop = n_elements(testsigma) - chi2diff = fltarr(nloop) - sigma = fltarr(nloop) - alpha = fltarr(nloop) - - alphatry = findgen(11)*0.2 - - for i=0,nloop-1 do begin - broad = exp(-(knums*testsigma[i] * 2.0 * PI)^2/2.0) - - alpha[i] = alpha_chisq(alphatry, galfft[inside], starfft[inside], $ - galvar0, starvar0, broad[inside], bestchisq) - chi2diff[i] = bestchisq - -; answer = amoeba(1.0e-2, function_name='alpha_chisq', $ -; p0 = [1.1], scale=[0.1], nmax = 20, function_value=areturn) - - endfor - - findchi2min, testsigma, chi2diff, minchi2, minsigma, errsigma, $ - deltachisq = deltachisq, doplot=doplot, npts=ninside - -; oplot, testsigma, alpha, ps=2 - minc = min(chi2diff, alphaplace) - bestalpha =alpha[alphaplace] - return, [minchi2, minsigma, errsigma, bestalpha] -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/fourier_quotient.pro b/pro/spec1d/fourier_quotient.pro deleted file mode 100644 index db7a85732..000000000 --- a/pro/spec1d/fourier_quotient.pro +++ /dev/null @@ -1,157 +0,0 @@ -;+ -; NAME: -; fourier_quotient -; -; PURPOSE: -; Perform a chi2 fit to the fourier quotient of a single -; galaxy and a broadened stellar template to calculate velocity dispersion -; and uncertainty on velocity dispersion -; -; CALLING SEQUENCE: -; answers = fourier_quotient(galfft, starfft, galvar0, starvar0, $ -; testsigma=, lowlimit=, highlimit=, $ -; deltachisq=, /doplot) -; -; INPUTS: -; galfft - Fourier transform of galaxy -; starfft - Fourier transform of stellar template -; galvar0 - error in galaxy fft (0th element of galaxy error FFT) -; starvar0 - error in stellar fft (0th element of stellar error FFT) -; -; OPTIONAL KEYWORDS: -; testsigma - Array of sigma values to calculate chi2 -; lowlimit - lower boundary of chi2 sum (in knums units) -; highlimit - upper boundary of chi2 sum (in knums units) -; deltachisq - chi2 difference from minimum to set error on velocity dispersion -; doplot - Output plots to xwindow -; -; OUTPUTS: -; answers - Four element array with: -; [minchi2, minsigma, errsigma, bestalpha] -; bestalpha is the normalization constant between galaxy and star -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; Same inputs and outputs as fourier_difference -; -; EXAMPLES: -; -; BUGS: -; -; Need to ensure that confidence level returned as errsigma is proper -; -; PROCEDURES CALLED: -; -; -; REVISION HISTORY: -; 25-Mar-2000 Written by S. Burles, FNAL -; 27-Jun-2000 Completely rewritten - Finkbeiner & SWAT team -;- -;------------------------------------------------------------------------------ -function fourier_quotient, galfft, starfft, galvar0, starvar0, $ - testsigma2=testsigma2, lowlimit = lowlimit, highlimit=highlimit, $ - deltachisq=deltachisq, doplot=doplot, broadarr=broadarr - -; testsigma2 is trial velocity dispersion^2 - - if (NOT keyword_set(lowlimit)) then lowlimit = 1.0/80.0 - if (NOT keyword_set(highlimit)) then highlimit = 1.0/5. - - - knums = fft_wavenums(n_elements(galfft)) - inside = where(abs(knums) GT lowlimit AND $ - abs(knums) LT highlimit, ninside) - - if (inside[0] EQ -1) then begin - print, 'No pixels in correct frequency range' - return, -1 - endif - - if (n_elements(testsigma2) EQ 0) then testsigma2 = findgen(30)*0.2 - - nloop = n_elements(testsigma2) - chi2 = fltarr(nloop) - sigma = fltarr(nloop) - alpha = fltarr(nloop) - - alphatry = findgen(21)*0.1 - - galnorm = djsig(float(galfft[inside]), sigrej=5) - starnorm = djsig(float(starfft[inside]), sigrej=5) - - q = galfft[inside]/starfft[inside]*starnorm/galnorm - -; Reject outliers on q (they can be quite large and drive the fit) - qs = exp(smooth(alog(q), 25, /edge)) - dif = float(alog((q/qs))) - djs_iterstat, dif, sigma=qsig, sigrej=5 - wbad = where(abs(dif) GT qsig*5, ct) - IF ct GT 0 THEN q[wbad] = qs[wbad] - -; Now reevaluate smoothed q - qs = exp(smooth(alog(q), 9, /edge)) -qs = median(q, 75) - - var = (galvar0/ float(galfft[inside]*conj(galfft[inside])) + $ - starvar0 / float(starfft[inside]*conj(starfft[inside])) * $ - float(q)^2) - -; Define broadarr (array of broadening functions) if not already defined - ones = 1.+fltarr(n_elements(q)) - IF NOT keyword_set(broadarr) THEN BEGIN - broadarr = dblarr(n_elements(inside), nloop) - for i=0,nloop-1 do begin - IF testsigma2[i] EQ 0 THEN broad = ones ELSE BEGIN - fsig = 1.d/(2.*!dpi)/sqrt(abs(testsigma2[i])) - broad = gauss_periodic(knums[inside], [1., 0., fsig], shft=1.) - IF testsigma2[i] LT 0 THEN broad = 1./broad - ENDELSE - broadarr[*, i] = broad - ENDFOR - - - ENDIF - - for i=0,nloop-1 do begin - broad = broadarr[*, i] - broad = broad/max(broad) - - alpha[i] = total(float(qs) * broad)/total(broad^2) -; nul residual (for just noise) - nul = sqrt(alpha[i]^2*broad^2+1) - res = broad*alpha[i]*starfft[inside]/starnorm-galfft[inside]/galnorm - -;IF i EQ 50 THEN stop - chi2[i] = total(abs(res)^2)/n_elements(inside)/mean(nul) - -; alpha[i] = total(float(q) * broad / var)/total(broad^2/var) - - endfor - -; Now do loop of negatives - -; now plot - - deltachisq = 1./n_elements(inside) - findchi2min, testsigma2, chi2, minchi2, minsigma, errsigma, $ - deltachisq = deltachisq, npts= ninside - - bestalpha = (interpol(alpha, testsigma2, minsigma))[0] - fsig= 1.d/(2.*!dpi)/sqrt(minsigma) - broad = gauss_periodic(knums[inside], [1., 0., fsig], shft=1.) - res = broad*starfft[inside]-galfft[inside] - -if NOT keyword_set(errsigma) then return, 0 ; ??? - errsigma = errsigma*sqrt(minchi2) - - IF keyword_set(doplot) THEN BEGIN - plot, knums[inside], qs, ps=3, yr=[-1, 2] - oplot, knums[inside], broad*bestalpha, ps=3 - plot, testsigma2, chi2, ps=-7 - oplot,[0,100],[1,1]*minchi2+deltachisq - ENDIF - - return, [minchi2, minsigma, errsigma, bestalpha] -end diff --git a/pro/spec1d/fundamental_line.pro b/pro/spec1d/fundamental_line.pro deleted file mode 100644 index bef4a8ae3..000000000 --- a/pro/spec1d/fundamental_line.pro +++ /dev/null @@ -1,76 +0,0 @@ -;+ -; NAME: -; fundamental_line -; PURPOSE: -; Crush the fundamental plane to a measly line. -; CALLING SEQUENCE: -; INPUTS: -; OPTIONAL INPUTS: -; KEYWORDS -; OUTPUTS: -; COMMENTS: -; BUGS: -; Using RA and Dec for matches rather than OBJID because tsObj files -; sometimes busted; search code for "HACK". -; EXAMPLES: -; PROCEDURES CALLED: -; REVISION HISTORY: -; 25-Jun-2000 Written by Hogg (IAS) -;- -pro fundamental_line, spname=spname,tsname=tsname,omegam=omegam,omegal=omegal -;; set cosmographic parameters - if NOT keyword_set(omegam) then omegam= 0.2 - if NOT keyword_set(omegal) then omegal= 0.0 -;; set aperture radii for photo radial profile outputs, in arcsec - photorad= [0.23,0.68,1.03,1.76,3.00,4.63,7.43,11.42,18.20,28.20,44.21, $ - 69.00,107.81,168.20,263.00] - maxnrad= 15 -;; set aperture radii for measurements, in arcsec at one Hubble length! - physrad= [1.0,2.0,3.0] -;; if no filenames set, use debugging defaults - if NOT keyword_set(spname) then $ - spname= '/data/spectro/2d_3c/0306/2dnew/spPlate-0306-51690.fits' - if NOT keyword_set(tsname) then $ - tsname= '/data/spectro/plates/tsObj-51637-306.fit' -;; read object IDs and the photo outputs (tsObj) -; HACK: USING RA AND DEC BECAUSE TSOBJ ARE SOMETIMES BUSTED - plugmap= mrdfits(spname,4) - ra= plugmap.ra - dec= plugmap.dec - tsobj= mrdfits(tsname,1) -;; load redshifts -;; begin loop over spectra - for spectrum=0,n_elements(plugmap)-1 do begin - z= 0.20 - help, z -;; compute aperture radii in arcsec, from redshifts and cosmography - rad= physrad/angdidis(z,omegam,omegal) -;; identify relevant entry in the tsObj file - obj= where((abs(tsobj.dec-dec[spectrum]) LT (1.0/3600.0)) AND $ - (abs(tsobj.ra-ra[spectrum]) LT $ - (1.0/(3600.0*cos(dec[spectrum]*!DPI/180.0)))),nobj) - obj= obj[0] - help, nobj -;; check that the object exists, the object is unique, and that -;; there are enough entries in the i and r-band radial profiles - if (nobj EQ 1) AND $ - (photorad[(tsobj.nprof)[3,obj]] GE max(rad)) AND $ - (photorad[(tsobj.nprof)[4,obj]] GE max(rad)) then begin -;; compute aperture luptitudes with interpolation - lupr= interpol((tsobj.profmean)[*,3,obj],photorad,rad) - lupi= interpol((tsobj.profmean)[*,4,obj],photorad,rad) -;; compute 2 (fairly) independent surface brightnesses - sb= 10.0^(0.4*(24.0-lupr)) - print, sb - area= !DPI*rad^2 - pseudosky= (sb[2]*area[2]-sb[1]*area[1])/(area[2]-area[1]) - help, pseudosky - sbinner= sb[0]-pseudosky - sbouter= (sb[1]*area[1]-sb[0]*area[0])/(area[1]-area[0])-pseudosky -help, sbinner,sbouter - endif -stop - endfor -;; done - return -end diff --git a/pro/spec1d/gama_to_sdss.pro b/pro/spec1d/gama_to_sdss.pro deleted file mode 100644 index eeb89b088..000000000 --- a/pro/spec1d/gama_to_sdss.pro +++ /dev/null @@ -1,160 +0,0 @@ -;+ -; NAME: -; gama_to_sdss -; -; PURPOSE: -; Convert a 2dF GAMA extracted spectra file to an SDSS spPlate format -; -; CALLING SEQUENCE: -; gama_to_sdss, filename, [ outfile= ] -; -; INPUTS: -; filename - 2dF GAMA spectra file, where HDU #0 is the flux [NPIX,NFIBER], -; HDU #1 is the variance, and HDU #2 contains catalog info -; -; OPTIONAL INPUTS: -; outfile - Output file name; default to spPlate-$PLATE-$MJD.fits where -; PLATE is derived from the GAMA field name and tile name, -; and MJD from the data of observation. GAMA field names -; 02, 09, 12, 15, 23 are mapped to plate numbers -; 1000, 2000, 3000, 4000, 5000 with the GAMA pointing number -; added to that. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The 2dF spectra are interpolated to the log-wavelength mapping -; of SDSS spectra using a B-spline to the flux and the variance arrays. -; -; EXAMPLES: -; Convert a 2dF GAMA file and run the SDSS redshifting code: -; IDL> gama_to_sdss,'SG09_Y3_012.fits',outfile='spPlate-2012-55246.fits' -; IDL> spreduce1d,'spPlate-2012-55246.fits' -; -; BUGS: -; The 2dF wavelength scale is assumed to be vacuum barycentric. -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 23-Feb-2011 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro gama_to_sdss, filename, outfile=outfile1 - - if (size(filename,/tname) NE 'STRING') then begin - splog, 'Must specify FILENAME' - return - endif - - plate = long(strmid(fileandpath(filename),8,3)) - fieldname = strmid(fileandpath(filename),2,2) - case fieldname of - '02' : plate += 1000L - '09' : plate += 2000L - '12' : plate += 3000L - '15' : plate += 4000L - '23' : plate += 5000L - else : plate += 9000L - endcase - - dradeg = 180d0 / !dpi - - plug1 = create_struct( $ - 'OBJID', lonarr(5), $ - 'RA', 0d0, $ - 'DEC', 0d0, $ - 'OBJTYPE', '', $ - 'SPECTROGRAPHID', 1L, $ - 'FIBERID', 0L ) - - flux = mrdfits(filename, 0, hdr) - if (keyword_set(flux) EQ 0) then $ - message, 'Unable to read file '+filename - var = mrdfits(filename, 1) - cat = mrdfits(filename, 2) - dims = size(flux,/dimens) - npix = dims[0] - nfiber = dims[1] - dwave = sxpar(hdr,'CDELT1') - wave = (dindgen(npix) - sxpar(hdr,'CRPIX1') - 1) * dwave $ - + sxpar(hdr,'CRVAL1') - - ; Construt the output file name - mjd = sxpar(hdr,'UTMJD') - if (keyword_set(outfile1)) then outfile = outfile1 $ - else outfile = 'spPlate-'+plate_to_string(plate)+'-' $ - +string(mjd,format='(i5.5)')+'.fits' - - ; Rebin to the SDSS spacing - dloglam = 1d-4 - newloglam = wavevector(alog10(min(wave)), alog10(max(wave)), binsz=dloglam) - newwave = 10^newloglam - nnew = n_elements(newloglam) - gmask = finite(flux) AND finite(var) AND var GT 0 - ibad = where(gmask EQ 0, nbad) - if (nbad GT 0) then flux[ibad] = 0 - if (nbad GT 0) then var[ibad] = 0 - - -; Simple linear interpolation - newbadmask = fltarr(nnew,nfiber) - for i=0, nfiber-1 do begin -; newflux[*,i] = rebin_spectrum(flux[*,i], wave, newwave) -; newvar[*,i] = rebin_spectrum(var[*,i], wave, newwave) - newbadmask[*,i] = rebin_spectrum(float(gmask[*,i] EQ 0), wave, newwave) - endfor - newmask = newbadmask EQ 0 -; newivar = newmask / (newvar + (newmask EQ 0)) - - newflux = fltarr(nnew,nfiber) - newivar = fltarr(nnew,nfiber) - loglam = alog10(wave) - for i=0, nfiber-1 do begin - combine1fiber, loglam, flux[*,i], 1./(var[*,i] + (var[*,i] EQ 0)), $ - newloglam=newloglam, newflux=newflux1, newivar=newivar1 - newflux[*,i] = newflux1 - newivar[*,i] = newivar1 - endfor - newflux = float(newflux) * newmask - newivar = float(newivar) * newmask - - ; Get the units right, making them per Ang although the spacing - ; is no longer uniform in wavelength - wratio = rebin((10d0^(dloglam) - 1d0) * newwave / dwave, [nnew, nfiber]) - newflux /= wratio - newivar *= wratio^2 - - andmask = lonarr(npix,nfiber) - ormask = lonarr(npix,nfiber) - dispmap = fltarr(npix,nfiber) + 1. - skyimg = fltarr(npix,nfiber) - plugmap = replicate(plug1, nfiber) - plugmap.ra = cat.ra * dradeg - plugmap.dec = cat.dec * dradeg - objtype = strmid(cat.name,0,1) - plugmap.objtype = (objtype EQ 'G' ? 'GALAXY' : '') $ - + (objtype EQ 'X' ? 'SKY' : '') $ - + (objtype EQ 'S' ? 'SPECTROPHOTO_STD' : '') $ - + (objtype EQ 'P' ? 'NA' : '') $ - + (objtype EQ 'F' ? 'NA' : '') ; fiducial/guide - plugmap.objtype = 'GALAXY' ; default value - plugmap.fiberid = lindgen(nfiber) + 1 - - sxaddpar, hdr, 'PLATEID', plate - sxaddpar, hdr, 'MJD', mjd - sxaddpar, hdr, 'COEFF0', newloglam[0] ; wavelength solution - sxaddpar, hdr, 'COEFF1', dloglam ; wavelength solution - mwrfits, newflux, outfile, hdr, /create - mwrfits, newivar, outfile - mwrfits, andmask, outfile - mwrfits, ormask, outfile - mwrfits, dispmap, outfile - mwrfits, plugmap, outfile - mwrfits, skyimg, outfile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/gauss_periodic.pro b/pro/spec1d/gauss_periodic.pro deleted file mode 100644 index ecd3c69e2..000000000 --- a/pro/spec1d/gauss_periodic.pro +++ /dev/null @@ -1,21 +0,0 @@ -; DPF 29 Mar 2000 -; Compute gaussian with periodic boundary conditions -FUNCTION gauss_periodic, x, a, shft=shft - - amp = a[0] - cen = a[1] - sig = a[2] - - n = n_elements(x) - IF (NOT keyword_set(shft)) THEN $ ; assume linear - shft = ((max(x)-min(x))*n)/(n-1) - - g = 0 - FOR i=-3, 3 DO BEGIN - z = (x-cen-i*shft)/sig - ez = exp(-z^2/2.d) - g = g+amp*ez - ENDFOR - - return, g -END diff --git a/pro/spec1d/hogg_extinction.pro b/pro/spec1d/hogg_extinction.pro deleted file mode 100644 index 062735ea3..000000000 --- a/pro/spec1d/hogg_extinction.pro +++ /dev/null @@ -1,104 +0,0 @@ -;+ -; NAME: -; hogg_extinction -; PURPOSE: -; Plot some things having to do with extinction. -; COMMENTS: -; - Check out Burki et al, A&ASS, 112, 383 (1995). -; BUGS: -; - Many things hard-coded. -; - No comment header. -;- -pro hogg_extinction -prefix= 'hogg_extinction' -camname= ['b1','b2','r1','r2'] -ncam= 4 - -outfilename= prefix+'.fits' -if (NOT file_test(outfilename)) then begin - if (NOT keyword_set(efficiency)) then begin - savefile= 'plot_thru.ss' - if (NOT file_test(savefile)) then plot_thru - splog, 'restoring '+savefile - restore, savefile - endif - k0= dblarr(n_elements(loglam)) - k0_invvar= k0 - camamp= dblarr(n_elements(loglam),ncam) - camamp_invvar= camamp - - for ii=0L,n_elements(loglam)-1L do begin - if ((ii MOD 100) EQ 0) then splog, 1D1^(loglam[ii]) - vgood= where((efficiency[ii,*] GT 0.0) AND $ - (airmass GT 1.0) AND $ - (airmass LT 1.5),nvgood) - if (nvgood GT 100) then begin - lne= reform(alog(efficiency[ii,vgood]),nvgood) - aa= [[airmass[vgood]]] - thiscamlist= [-1] - for cc=0,ncam-1 do begin - thiscam= double(strmid(explist[vgood],0,2) EQ camname[cc]) - if (total(thiscam) GT 0.0) then begin - thiscamlist= [thiscamlist,cc] - aa= [[aa],[thiscam]] - endif - endfor - thiscamlist= thiscamlist[1:n_elements(thiscamlist)-1] - ww= replicate(1d0,nvgood) - hogg_iter_linfit, transpose(aa),lne,ww,xx,covar=covar -; plot, airmass[good[vgood]],lne,psym=1 -; oplot, !X.CRANGE,transpose([[1,1],[!X.CRANGE]]##xx),psym=0 - k0[ii]= xx[0] - k0_invvar[ii]= 1.0/covar[0,0] - for cc=0,n_elements(thiscamlist)-1 do begin - camamp[ii,thiscamlist[cc]]= xx[1+cc] - camamp_invvar[ii,thiscamlist[cc]]= 1.0/covar[1+cc,1+cc] - endfor - endif - endfor - splog, 'writing file '+outfilename - mwrfits, [[loglam],[k0],[k0_invvar],[camamp],[camamp_invvar]], $ - outfilename,/create -endif - -set_plot, 'ps' -device, filename= prefix+'.ps',/color -hogg_plot_defaults -readcol, '~/Longslit/calib/extinction/atm_trans_am1.0.dat', $ - longwave,longthru -longwave= alog10(longwave*1D4) -longthru= -2.5*alog10(longthru) -readcol, '~/primus/data/atmosphere.dat', $ - primwave,primthru -primwave= alog10(primwave) -filename= prefix+'.fits' -foo= mrdfits(filename) -good= where((foo[*,2] GT 0.0)) -hoggwave= foo[good,0] -hoggthru= foo[good,1] -hoggthru= -1.086*hoggthru -burkwave= hoggwave -burkthru= 0.17*(1D1^burkwave/4400.0)^(-4.05)+0.08*(1D1^burkwave/4400.0)^(-1.39) -xrange= alog10([3500,9500]) -plot, hoggwave,hoggthru,psym=10,/nodata, $ - xrange=xrange,xtitle= 'log!d10!n wavelength (A)', $ - yrange=[0.01,1.5],ytitle= 'extinction (mag/airmass)', $ - title='all cameras',/ylog -oplot, longwave,longthru,color=djs_icolor('grey'),psym=10 -oplot, primwave,primthru,color=djs_icolor('grey'),psym=10 -oplot, burkwave,burkthru,color=djs_icolor('grey') -oplot, hoggwave,hoggthru,psym=10 -; oplot, 1D1^foo[good,0],foo[good,1]+2.0/sqrt(foo[good,2]),psym=10 -; oplot, 1D1^foo[good,0],foo[good,1]-2.0/sqrt(foo[good,2]),psym=10 -for cc=0,ncam-1 do begin - plot, 1D1^foo[good,0],foo[good,cc+3],psym=10, $ - xrange=xrange,xtitle= 'wavelength (A)', $ - yrange=[-5,0],ytitle= 'ln(throughput)', $ - title=camname[cc] -; oplot, 1D1^foo[good,0],foo[good,3]+2.0/sqrt(foo[good,4]),psym=10 -; oplot, 1D1^foo[good,0],foo[good,3]-2.0/sqrt(foo[good,4]),psym=10 -endfor -device,/close - -return -end diff --git a/pro/spec1d/kurucz_fitsfile.pro b/pro/spec1d/kurucz_fitsfile.pro deleted file mode 100644 index c97a36c4a..000000000 --- a/pro/spec1d/kurucz_fitsfile.pro +++ /dev/null @@ -1,88 +0,0 @@ -;+ -; NAME: -; kurucz_fitsfile -; -; PURPOSE: -; Generate a single FITS file from a list of ASCII-formatted Kurucz models -; -; CALLING SEQUENCE: -; kurucz_fitsfile, [ fileprefix, outfile ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; fileprefix - Use all files in the current directory matching this string; -; default to 'a*.spc' -; outfile - Name of output FIST file; default 'kurucz_stds_raw_v5.fits' -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The input ASCII files were generated by Christy Tremonti using -; Kurucz' code. The file name is assumed to encode the stellar -; parameters of metallicity (FEH), effective temperature (TEFF) -; and gravity (G). For example, the file 'am05k2_5000_4.0.spc' -; is interpreted to have FEH=-0.5, TEFF=5000, G=4.0. I don't know -; what the "k2" in the filename means. -; -; HDU#0 of the output file has the fluxes. -; HDU#1 of the output file is a FITS binary table with the stellar parameters. -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; mwrfits -; sxpaddpar -; -; REVISION HISTORY: -; 18-Jan-2003 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro kurucz_fitsfile, fileprefix, outfile - - if (NOT keyword_set(fileprefix)) then fileprefix = 'a*.spc' - if (NOT keyword_set(outfile)) then $ - outfile = 'kurucz_stds_raw_v5.fits' - - files = findfile(fileprefix, count=nfile) - if (nfile EQ 0) then begin - print, 'No input files found' - return - endif - - kindx = replicate( create_struct( $ - 'MODEL', '', $ - 'FEH' , 0., $ - 'TEFF' , 0., $ - 'G' , 0., $ - 'MAG' , fltarr(5)), nfile) - - for ifile=0L, nfile-1 do begin - print, 'Reading file ', ifile+1, ' of ', nfile - readcol, files[ifile], wave, flux, format='(D,F)' - if (ifile EQ 0) then begin - npix = n_elements(flux) - allflux = fltarr(npix, nfile) - endif - allflux[*,ifile] = flux - kindx[ifile].model = files[ifile] - kindx[ifile].feh = 0.1 * float(strmid(files[ifile],2,2)) $ - * (strmid(files[ifile],1,1) EQ 'm' ? -1 : 1) - kindx[ifile].teff = float(strmid(files[ifile],7,4)) - kindx[ifile].g = float(strmid(files[ifile],12,3)) - endfor - - hdr = [''] - sxaddpar, hdr, 'CRVAL1', double(wave[0]) - sxaddpar, hdr, 'CD1_1', (wave[npix-1] - wave[0]) / (npix - 1) - sxaddpar, hdr, 'CRPIX1', 1L - sxaddpar, hdr, 'CTYPE1', 'LINEAR', ' Air wavelegnths [Ang]' - - mwrfits, allflux, outfile, hdr, /create - mwrfits, kindx, outfile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/lambda_match.pro b/pro/spec1d/lambda_match.pro deleted file mode 100644 index 077aeff35..000000000 --- a/pro/spec1d/lambda_match.pro +++ /dev/null @@ -1,42 +0,0 @@ -; 27-Jun-2000 D. Finkbeiner -; Force spectra on to same wavelength system -; 28-Jun-2000 DF vectorized to handle arr being a 2-d array - -PRO lambda_match, refwave, objwave, arr - -; right now assume objwave is just 1d array - - nref = n_elements(refwave) ; number of samples in reference array - nwave = (size(objwave))[1] - sarr = (size(arr))[1] ; size of spectra - narr = n_elements(arr)/sarr ; number of spectra - - IF sarr NE nwave THEN BEGIN - print, 'LAMBDA_MATCH: Objwave and arr must have same dimensions' - help, objwave, arr - return - ENDIF - - rat = mean(objwave[*, 0]/refwave) - shf = round(alog10(rat)*10000) - - IF shf GT 0 THEN BEGIN - print, 'LAMBDA_MATCH ', shf, ' pixel shift' - arr = [fltarr(shf, narr), arr] - ENDIF ELSE BEGIN - IF shf LT 0 THEN BEGIN - arr = arr[(-shf):sarr-1, *] - ENDIF - ENDELSE - - npad = nref-nwave-shf ; how many more to add at end - - IF npad GT 0 THEN BEGIN - arr = [arr, fltarr(npad, narr)] - ENDIF - IF npad LT 0 THEN BEGIN ; remove if too many - arr = arr[0:nref-1, *] - ENDIF - - return -END diff --git a/pro/spec1d/make_regress1d.pro b/pro/spec1d/make_regress1d.pro deleted file mode 100644 index 0b35eb928..000000000 --- a/pro/spec1d/make_regress1d.pro +++ /dev/null @@ -1,143 +0,0 @@ -;+ -; NAME: -; make_regress1d -; -; PURPOSE: -; Generate a regression table from spectro 1-D from Chicago-1D outputs files. -; -; CALLING SEQUENCE: -; make_regress1d, [listfile, indir=, outfile= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; listfile - List with plate number and MJD (one such pair per line) -; for plates to use. Default to the file -; $IDLSPEC2D_DIR/etc/regress1d_all.plates, which lists plates -; 300 to 309. -; indir - Input directory for the Chicago-1D output files, of the -; format 'spDiag1d-'+mjd+'-'+plate+'.par, i.e. -; 'spDiag1d-51666-0300.par'; default to '.' -; outfile - Name of output file; default to -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; An ASCII file with minimal object information and redshifts is tabulated -; from the Chicago-1D outputs. -; -; The Chicago outputs are changed in some special cases that are assumed -; to be missing or wrong. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_readcol -; -; INTERNAL SUPPORT ROUTINES: -; create_zregress() -; -; DATA FILES: -; $IDLSPEC2D_DIR/etc/regress1d_all.plates -; -; REVISION HISTORY: -; 27-Jun-2000 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -function create_zregress, num - - ftemp = create_struct( name='ZREGRESS', $ - 'PLATE', 0L, $ - 'MJD', 0L, $ - 'FIBERID', 0L, $ - 'Z', 0.D, $ - 'CLASS', '', $ - 'PRIMTARGET', 0L, $ - 'SECTARGET', 0L, $ - 'COMMENTS', '' ) - - zregress = replicate(ftemp, num) - - return, zregress -end - -;------------------------------------------------------------------------------ -pro make_regress1d, listfile, indir=indir, outfile=outfile - - if (NOT keyword_set(listfile)) then $ - listfile = filepath('regress1d_all.plates', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='etc') - if (NOT keyword_set(indir)) then indir = '.' - if (NOT keyword_set(outfile)) then outfile = 'regress1d_all.dat' - - djs_readcol, listfile, platevec, mjdvec - - nplate = n_elements(platevec) - - zregress = create_zregress(nplate * 640) - - ii = 0 - for iplate=0, nplate-1 do begin - ; Read the Yanny param file for Chicago-1D outputs for this plate - mjdstr = string(mjdvec[iplate],format='(i5.5)') - platestr = plate_to_string(platevec[iplate]) - filename = filepath('spDiag1d-' + mjdstr + '-' + platestr + '.par', $ - root_dir=indir) - yanny_read, filename, tt, /quick - cdiag = *tt[0] - yanny_free, tt - - ; Change the CLASS for 'SPEC_HIZ_QSO' to 'SPEC_QSO' - kk = where(cdiag.class EQ 'SPEC_HIZ_QSO') - if (kk[0] NE -1) then cdiag[kk].class = 'SPEC_QSO' - - for ifiber=0, 639 do begin - zregress[ii].plate = platevec[iplate] - zregress[ii].mjd = mjdvec[iplate] - zregress[ii].fiberid = ifiber + 1 - jj = (where(cdiag.fiberid EQ ifiber+1))[0] - if (jj NE -1) then begin - zregress[ii].primtarget = cdiag[jj].primtarget - zregress[ii].sectarget = cdiag[jj].sectarget - zregress[ii].z = cdiag[jj].zfinal - zregress[ii].class = ' ' + strmid(cdiag[jj].class,5) + ' ' - endif else begin - zregress[ii].class = ' MISSING ' - endelse - - ; Find out if this is a sky fiber, and change CLASS to 'SKY' - if (zregress[ii].sectarget AND 2^4) then begin - zregress[ii].z = 0 - zregress[ii].class = ' SKY' - endif - - ; Declare as 'UNKNOWN' the following cases: - ; Any object with redshift less than -1000 - ; A QSO with a redshift less than 1000 - if (zregress[ii].z LT -1000./3e5 OR $ - (zregress[ii].z LT 1000./3d5 AND $ - strtrim(zregress[ii].class,2) EQ 'QSO')) then begin - zregress[ii].z = 0 - zregress[ii].class = ' UNKNOWN' - endif - - ii = ii + 1 - endfor - endfor - - get_lun, olun - openw, olun, outfile - printf, olun, $ - '#PLATE MJD FIBER Z CLASS PRIMTARGET SECTARGET COMMENTS' - for jj=0, n_elements(zregress)-1 do begin - printf, olun, zregress[jj], format='(i6,i5,i4,f10.5,a10,i12,i12,a)' - endfor - close, olun - free_lun, olun - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/matchplugmap.pro b/pro/spec1d/matchplugmap.pro deleted file mode 100644 index 2ec0027d2..000000000 --- a/pro/spec1d/matchplugmap.pro +++ /dev/null @@ -1,29 +0,0 @@ -;------------------------------------------------------------------------------ -pro matchplugmap, plug1, plug2, indx1, indx2, mindist=mindist - - if (NOT keyword_set(mindist)) then mindist = 1.0 / 3600 - - nfiber1 = n_elements(plug1) - nfiber2 = n_elements(plug2) - indx1 = lindgen(nfiber1) - indx2 = lonarr(nfiber1) - 1L - - for ifiber=0, nfiber1-1 do begin - adist = djs_diff_angle(plug1[ifiber].ra, plug1[ifiber].dec, $ - plug2.ra, plug2.dec) - dmin = min(adist, imin) - if (dmin LE mindist) then indx2[ifiber] = imin - endfor - - igood = where(indx2 NE -1L) - if (igood[0] NE -1) then begin - indx1 = indx1[igood] - indx2 = indx2[igood] - endif else begin - indx1 = -1L - indx2 = -1L - endelse - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/multisynthspec.pro b/pro/spec1d/multisynthspec.pro deleted file mode 100644 index 69f2477ad..000000000 --- a/pro/spec1d/multisynthspec.pro +++ /dev/null @@ -1,165 +0,0 @@ -;+ -; NAME: -; multisynthspec -; -; PURPOSE: -; Construct synthetic spectrum from eigen-templates. -; -; CALLING SEQUENCE: -; synflux = multisynthspec(zans, [ loglam=, hdr=, eigendir= ]) -; -; INPUTS: -; zans - Structure(s) with redshift-fit information (from SPREDUCE1D). -; -; OPTIONAL KEYWORDS: -; loglam - Log-10 wavelengths at which to synthesize the spectrum; -; this can either be a single vector if all spectra have -; the same wavelength mapping, or an array of [NPIX,NOBJ]. -; hdr - If specified, then use this header to construct LOGLAM. -; Either LOGLAM or HDR must be specified. -; eigendir - Directory for EIGENFILE; default to $IDLSPEC2D/templates. -; -; OUTPUTS: -; synflux - Synthetic spectra -; -; COMMENTS: -; This routine is meant to be faster than SYNTHSPEC when generating -; many spectra that share the same templates. This works by generating -; the B-spline coefficients only once per template, then evaluating -; these B-splines at the exact wavelengths of each output spectrum. -; This will NOT be exactly the same as the results from SYNTHSPEC, -; because the individual eigen-spectra are spline-shifted before adding -; them up, rather than adding them up then spline-shifting (as SYNTHSPEC -; does). -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $IDLSPEC2D_DIR/etc/TEMPLATEFILES -; -; PROCEDURES CALLED: -; combine1fiber -; concat_dir() -; poly_array() -; readfits() -; sxpar() -; -; REVISION HISTORY: -; 20-Aug-2000 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -function multisynthspec, zans, loglam=objloglam, hdr=hdr, eigendir=eigendir - - nobj = n_elements(zans) - if (n_elements(eigendir) EQ 0) then $ - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - - ;---------- - ; Determine the wavelength mapping for the object spectra, - ; which are the same for all of them. - - if (keyword_set(objloglam)) then begin - dims = size(objloglam, /dimens) - naxis1 = dims[0] - objdloglam = objloglam[1] - objloglam[0] - endif else if (keyword_set(hdr)) then begin - naxis1 = sxpar(hdr, 'NAXIS1') - objloglam0 = sxpar(hdr, 'COEFF0') - objdloglam = sxpar(hdr, 'COEFF1') - objloglam = objloglam0 + dindgen(naxis1) * objdloglam - endif else begin - print, 'Either LOGLAM or HDR must be specified' - return, -1 - endelse - - ;---------- - ; Construct the output spectra - - newflux = fltarr(naxis1, nobj) - - ;---------- - ; Get name(s) of template file, ignoring any that are blank strings - - tfiles = strtrim(zans.tfile,2) - alltfile = tfiles[ uniq(tfiles, sort(tfiles)) ] - if (N_elements(alltfile) EQ 1 AND alltfile[0] EQ '') then return, newflux - alltfile = alltfile[where(alltfile NE '')] - - ;--------------------------------------------------------------------------- - ; Loop through each template file - - for ifile=0, n_elements(alltfile)-1 do begin - - ; List of objects that use this template file - iobj = where(tfiles EQ alltfile[ifile], niobj) - itheta = lonarr(niobj) - - ;---------- - ; Read the template file. - ; (Assume that the wavelength binning is the same as for the objects - ; in log-wavelength.) - - starflux = readfits(djs_filepath(alltfile[ifile], root_dir=eigendir), $ - shdr) - starloglam0 = sxpar(shdr, 'COEFF0') - stardloglam = sxpar(shdr, 'COEFF1') - - ndim = size(starflux, /n_dimen) - dims = size(starflux, /dimens) - npixstar = dims[0] - starloglam = starloglam0 + dindgen(npixstar) * stardloglam - if (ndim EQ 1) then nstar = 1 $ - else nstar = dims[1] - - ;---------- - ; Add as many polynomial terms as we might need for this template file - - maxnpoly = max([ zans[iobj].npoly ]) - if (keyword_set(maxnpoly)) then $ - starflux = [ [starflux], [poly_array(npixstar,maxnpoly)] ] - - ;---------- - ; Loop through each column in this template file - - for istar=0, nstar+maxnpoly-1 do begin - - ; Identify the coefficients for each object using this template/column - if (istar LT nstar) then begin - for i=0, niobj-1 do $ - itheta[i] = (where(zans[iobj[i]].tcolumn EQ istar))[0] - endif else begin - for i=0, niobj-1 do $ - if (istar-nstar LT zans[iobj[i]].npoly) then $ - itheta[i] = (where(zans[iobj[i]].tcolumn EQ -1))[0] + istar-nstar $ - else $ - itheta[i] = -1 - endelse - - indx = where(itheta NE -1, nthis) - if (indx[0] NE -1) then begin - thisobj = iobj[indx] - thistheta = fltarr(nthis) - for i=0, nthis-1 do $ - thistheta[i] = zans[thisobj[i]].theta[itheta[indx[i]]] - if (size(objloglam, /n_dimen) EQ 1) then $ - thisloglam = objloglam # replicate(1,nthis) $ - else $ - thisloglam = objloglam[*,thisobj] - for i=0, nthis-1 do $ - thisloglam[*,i] = thisloglam[*,i] - alog10(1+zans[thisobj[i]].z) - - combine1fiber, starloglam, starflux[*,istar], $ - newloglam=thisloglam, newflux=addflux - addflux = reform(addflux, naxis1, nthis) - - for i=0, nthis-1 do $ - newflux[*,thisobj[i]] = newflux[*,thisobj[i]] $ - + addflux[*,i] * thistheta[i] - endif - endfor - endfor - - return, newflux -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/pca_cvstar.pro b/pro/spec1d/pca_cvstar.pro deleted file mode 100644 index 9a27ac9ee..000000000 --- a/pro/spec1d/pca_cvstar.pro +++ /dev/null @@ -1,137 +0,0 @@ -;------------------------------------------------------------------------------ -pro pca_cvstar - - wavemin = 0. - wavemax = 0. - snmax = 100 - niter = 10 - nkeep = 3 - minuse = 3 - - get_juldate, jd - mjdstr = string(long(jd-2400000L), format='(i5)') - outfile = 'spEigenCVstar-' + mjdstr + '.fits' - plotfile = 'spEigenCVstar-' + mjdstr + '.ps' - - dfpsplot, plotfile, /color, /landscape - colorvec = ['default', 'red', 'green', 'blue'] - - ;---------- - ; Read the input spectra - - eigenfile = filepath('eigeninput_cvstar.dat', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='templates') - djs_readcol, eigenfile, skip=2, plate, mjd, fiber, zfit, subclass, $ - format='(L,L,L,D,A)' -; indx = where(strmid(subclass,0,1) EQ 'CV') -; plate = plate[indx] -; mjd = mjd[indx] -; fiber = fiber[indx] -; zfit = zfit[indx] -; subclass = subclass[indx] - - readspec, plate, fiber, mjd=mjd, flux=objflux, invvar=objivar, $ - andmask=andmask, ormask=ormask, loglam=objloglam, plugmap=plugmap - - ;---------- - ; Insist that all of the requested spectra exist - - imissing = where(plugmap.fiberid EQ 0, nmissing) - if (nmissing GT 0) then begin - for i=0, nmissing-1 do $ - print, 'Missing plate=', slist[imissing[i]].plate, $ - ' mjd=', slist[imissing[i]].mjd, $ - ' fiber=', slist[imissing[i]].fiberid - message, string(nmissing) + ' missing object(s)' - endif - - ;---------- - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - - objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - - nobj = (size(objflux, /dimens))[1] - objdloglam = objloglam[1] - objloglam[0] - - if (keyword_set(snmax)) then begin - ifix = where(objflux^2 * objivar GT snmax^2) - if (ifix[0] NE -1) then objivar[ifix] = (snmax/objflux[ifix])^2 - endif - - ;---------- - ; Do PCA solution - - pcaflux = pca_solve(objflux, objivar, objloglam, zfit, $ - wavemin=wavemin, wavemax=wavemax, $ - niter=niter, nkeep=nkeep, newloglam=newloglam, eigenval=eigenval, $ - usemask=usemask, acoeff=acoeff) - pcaflux = float(pcaflux) - -;readspec, plate, fiber, mjd=mjd, plugmap=plugmap -;readspec, plate, fiber, mjd=mjd, zans=zans -;aratio = acoeff[1,*]/acoeff[0,*] -;ug = plugmap.mag[0] - plugmap.mag[1] -;gr = plugmap.mag[1] - plugmap.mag[2] -;ri = plugmap.mag[2] - plugmap.mag[3] -;iz = plugmap.mag[3] - plugmap.mag[4] -;plot, gr, aratio, ps=4 -;stop - - ;---------- - ; Fill in bad data with a running median of good data - - qgood = usemask GE minuse - igood = where(qgood, ngood) - ibad = where(qgood EQ 0, nbad) - medflux = 0 * pcaflux - if (nbad GT 0) then begin - for i=0, nkeep-1 do begin - medflux[igood,i] = $ - djs_median(pcaflux[igood,i], width=51, boundary='nearest') - medflux[*,i] = djs_maskinterp(medflux[*,i], qgood EQ 0, /const) - endfor - pcaflux[ibad,*] = medflux[ibad,*] - endif - - ;---------- - ; Make plots - - djs_plot, 10^newloglam, pcaflux[*,0], $ - xrange=minmax(10^newloglam), yrange=minmax(pcaflux), /xstyle, $ - color=colorvec[0], $ - xtitle='Wavelength [Ang]', ytitle='Flux [arbitrary units]', $ - title='CV Stars: Eigenspectra' - for i=1, nkeep-1 do begin - djs_oplot, 10^newloglam, pcaflux[*,i], $ - color=colorvec[i MOD n_elements(colorvec)] - endfor - - aratio10 = acoeff[1,*] / acoeff[0,*] - aratio20 = acoeff[2,*] / acoeff[0,*] - djs_plot, aratio10, aratio20, /nodata, $ - xtitle='Eigenvalue Ratio (a_1/a_0)', $ - ytitle='Eigenvalue Ratio (a_2/a_0)', $ - title='CV Stars: Eigenvalue Ratios' - for j=0, n_elements(aratio10)-1 do $ - djs_xyouts, aratio10[j], aratio20[j], align=0.5, $ - string(plate_to_string(plate[j]), fiber[j], format='(a,"-",i3)'), $ - color=colorvec[j MOD n_elements(colorvec)] - - ;---------- - ; Write output file - - sxaddpar, hdr, 'OBJECT', 'STAR_CV' - sxaddpar, hdr, 'COEFF0', newloglam[0] - sxaddpar, hdr, 'COEFF1', objdloglam - for i=0, n_elements(eigenval)-1 do $ - sxaddpar, hdr, 'EIGEN'+strtrim(string(i),1), eigenval[i] - - mwrfits, pcaflux, outfile, hdr, /create - - dfpsclose - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/pca_cvstar_boss.pro b/pro/spec1d/pca_cvstar_boss.pro deleted file mode 100644 index b3a029e99..000000000 --- a/pro/spec1d/pca_cvstar_boss.pro +++ /dev/null @@ -1,143 +0,0 @@ -; Written by Schlegel (????) -; Tweaked by Bolton (utah2011jun) for BOSS CV sample. - -;------------------------------------------------------------------------------ -pro pca_cvstar_boss - - wavemin = 0. - wavemax = 0. - snmax = 100 - niter = 10 - nkeep = 3 - minuse = 3 - - get_juldate, jd - mjdstr = string(long(jd-2400000L), format='(i5)') - outfile = 'spEigenCVstar-' + mjdstr + '.fits' - plotfile = 'spEigenCVstar-' + mjdstr + '.ps' - - dfpsplot, plotfile, /color, /landscape - colorvec = ['default', 'red', 'green', 'blue'] - - ;---------- - ; Read the input spectra - -; if (not keyword_set(eigenfile)) then $ - eigenfile = filepath('eigeninput_cvstar_boss.dat', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='templates') -; djs_readcol, eigenfile, skip=2, plate, mjd, fiber, zfit, subclass, $ -; format='(L,L,L,D,A)' - readcol, eigenfile, plate, mjd, fiber, zfit, subclass, $ - format='L,L,L,F,A', comment='#' -; indx = where(strmid(subclass,0,1) EQ 'CV') -; plate = plate[indx] -; mjd = mjd[indx] -; fiber = fiber[indx] -; zfit = zfit[indx] -; subclass = subclass[indx] - - readspec, plate, fiber, mjd=mjd, flux=objflux, invvar=objivar, $ - andmask=andmask, ormask=ormask, loglam=objloglam, plugmap=plugmap - - ;---------- - ; Insist that all of the requested spectra exist - - imissing = where(plugmap.fiberid EQ 0, nmissing) - if (nmissing GT 0) then begin - for i=0, nmissing-1 do $ - print, 'Missing plate=', slist[imissing[i]].plate, $ - ' mjd=', slist[imissing[i]].mjd, $ - ' fiber=', slist[imissing[i]].fiberid - message, string(nmissing) + ' missing object(s)' - endif - - ;---------- - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - - objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - - nobj = (size(objflux, /dimens))[1] - objdloglam = objloglam[1] - objloglam[0] - - if (keyword_set(snmax)) then begin - ifix = where(objflux^2 * objivar GT snmax^2) - if (ifix[0] NE -1) then objivar[ifix] = (snmax/objflux[ifix])^2 - endif - - ;---------- - ; Do PCA solution - - pcaflux = pca_solve(objflux, objivar, objloglam, zfit, $ - wavemin=wavemin, wavemax=wavemax, $ - niter=niter, nkeep=nkeep, newloglam=newloglam, eigenval=eigenval, $ - usemask=usemask, acoeff=acoeff) - pcaflux = float(pcaflux) - -;readspec, plate, fiber, mjd=mjd, plugmap=plugmap -;readspec, plate, fiber, mjd=mjd, zans=zans -;aratio = acoeff[1,*]/acoeff[0,*] -;ug = plugmap.mag[0] - plugmap.mag[1] -;gr = plugmap.mag[1] - plugmap.mag[2] -;ri = plugmap.mag[2] - plugmap.mag[3] -;iz = plugmap.mag[3] - plugmap.mag[4] -;plot, gr, aratio, ps=4 -;stop - - ;---------- - ; Fill in bad data with a running median of good data - - qgood = usemask GE minuse - igood = where(qgood, ngood) - ibad = where(qgood EQ 0, nbad) - medflux = 0 * pcaflux - if (nbad GT 0) then begin - for i=0, nkeep-1 do begin - medflux[igood,i] = $ - djs_median(pcaflux[igood,i], width=51, boundary='nearest') - medflux[*,i] = djs_maskinterp(medflux[*,i], qgood EQ 0, /const) - endfor - pcaflux[ibad,*] = medflux[ibad,*] - endif - - ;---------- - ; Make plots - - djs_plot, 10^newloglam, pcaflux[*,0], $ - xrange=minmax(10^newloglam), yrange=minmax(pcaflux), /xstyle, $ - color=colorvec[0], $ - xtitle='Wavelength [Ang]', ytitle='Flux [arbitrary units]', $ - title='CV Stars: Eigenspectra' - for i=1, nkeep-1 do begin - djs_oplot, 10^newloglam, pcaflux[*,i], $ - color=colorvec[i MOD n_elements(colorvec)] - endfor - - aratio10 = acoeff[1,*] / acoeff[0,*] - aratio20 = acoeff[2,*] / acoeff[0,*] - djs_plot, aratio10, aratio20, /nodata, $ - xtitle='Eigenvalue Ratio (a_1/a_0)', $ - ytitle='Eigenvalue Ratio (a_2/a_0)', $ - title='CV Stars: Eigenvalue Ratios' - for j=0, n_elements(aratio10)-1 do $ - djs_xyouts, aratio10[j], aratio20[j], align=0.5, $ - string(plate_to_string(plate[j]), fiber[j], format='(a,"-",i3)'), $ - color=colorvec[j MOD n_elements(colorvec)] - - ;---------- - ; Write output file - - sxaddpar, hdr, 'OBJECT', 'STAR_CV' - sxaddpar, hdr, 'COEFF0', newloglam[0] - sxaddpar, hdr, 'COEFF1', objdloglam - for i=0, n_elements(eigenval)-1 do $ - sxaddpar, hdr, 'EIGEN'+strtrim(string(i),1), eigenval[i] - - mwrfits, pcaflux, outfile, hdr, /create - - dfpsclose - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/pca_elodie.pro b/pro/spec1d/pca_elodie.pro deleted file mode 100644 index a9e07cc24..000000000 --- a/pro/spec1d/pca_elodie.pro +++ /dev/null @@ -1,88 +0,0 @@ -;------------------------------------------------------------------------------ -; Generate the eigen-vectors from the Elodie eschelle data, -; for use in fitting velocity dispersions. -;------------------------------------------------------------------------------ -pro pca_elodie - - outfile = 'spEigenElodie.fits' - - ;---------- - ; Read all the Elodie spectra - - allfiles = elodie_filelist(minwave=minwave) - nfile = n_elements(allfiles) - - t0 = systime(1) - for ifile=0, nfile-1 do begin - splog, 'Reading file ', ifile+1, ' of ', nfile - thisflux = read_elodie(allfiles[ifile], loglam=loglam, minloglamclip=alog10(minwave)) - if (NOT keyword_set(allflux)) then allflux = thisflux $ - else allflux = [[allflux],[thisflux]] - endfor - npix = n_elements(loglam) - splog, 'Time to read all files = ', systime(1) - t0 - - ;---------- - ; Trim wavelengths to those covered by the majority of the objects - - fracgpix = total(allflux NE 0, 2) / nfile - igood = where(fracgpix GT 0.95) - i1 = igood[0] - i2 = (reverse(igood))[0] - loglam = loglam[i1:i2] - allflux = allflux[i1:i2,*] - - ;---------- - ; Interpolate over bad data, of which there is very little - - allflux = djs_maskinterp(allflux, allflux EQ 0, /const, iaxis=0) - - ;---------- - ; Compute something like the equiv. width for H-alpha, so that we - ; can reject active stars - - lwav = 6564.6 - i1 = where(loglam GT alog10(lwav-5) AND loglam LT alog10(lwav+5), num1) - i2 = where(loglam GT alog10(lwav-10) AND loglam LT alog10(lwav+10), num2) - - sum1 = total(allflux[i1,*],1) / num1 - sum2 = total(allflux[i2,*],1) / num2 - fline = sum1 / (sum2 + (sum2 LE 0)) - - ;---------- - ; Compute the wavelength coverage for each object - - fraccov = total(allflux NE 0,1) / npix - - ;---------- - ; Select objects for PCA - - istar = where(fline LT 1.1 AND fraccov GT 0.95, nstar) - splog, 'Selecting ', nstar, ' objects of ', nfile - t0 = systime(1) - pres = pcomp(transpose(allflux[*,istar]), eigenval=eigenval, /double) - splog, 'Time to compute PCA = ', systime(1) - t0 - pres = transpose(pres) - - ;---------- - ; Keep only the most significant eigenvectors - - ikeep = where(eigenval GT 0.01) - eigenval = eigenval[ikeep] - pres = float( pres[*,ikeep] ) - - ;---------- - ; Write output file - - dloglam = loglam[1] - loglam[0] - sxaddpar, hdr, 'OBJECT', 'GALAXY' - sxaddpar, hdr, 'COEFF0', loglam[0] - sxaddpar, hdr, 'COEFF1', dloglam - for i=0, n_elements(eigenval)-1 do $ - sxaddpar, hdr, 'EIGEN'+strtrim(string(i),1), eigenval[i] - - mwrfits, pres, outfile, hdr, /create - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/pca_gal.pro b/pro/spec1d/pca_gal.pro deleted file mode 100644 index cc4dce290..000000000 --- a/pro/spec1d/pca_gal.pro +++ /dev/null @@ -1,228 +0,0 @@ -;+ -; NAME: -; pca_gal -; -; PURPOSE: -; Wrapper on pca_solve.pro -; -; CALLING SEQUENCE: -; pca_gal, [inputfile=inputfile], [wavemin=wavemin], [wavemax=wavemax], $ -; [binsz=binsz], [niter=niter], [savefile=savefile], [/flux] -; -; INPUTS: -; None -; -; OPTIONAL INPUTS: -; inputfile - File containing plate, mjd, fiber, redshift. If not -; specified, it will read eigeninput_gal.dat from -; $IDLSPEC2D_DIR/templates -; wavemin - minimum wavelength, default 1850 A. -; wavemax - maximum wavelength, default 9300 A. -; binsz - Override the bin size of the final wavelength mapping. -; flux - Plot redshift-shifted spectra. -; niter - Number of iterations to pass to pca_solve, default 10. -; savefile - Save the input spectra to a named file for debugging. -; -; OUTPUTS: -; None, but creates the files spEigenGal-MJD.fits & spEigenGal-MJD.ps -; -; DATA FILES: -; $IDLSPEC2D_DIR/templates/eigeninput_gal.dat -; -; PROCEDURES CALLED: -; get_juldate -; dfpsplot -; djs_readcol -; readspec -; skymask() -; wavevector() -; pca_solve() -; djs_median() -; djs_plot -; djs_oplot -; djs_xyouts -; sxaddpar -; mwrfits -; dfpsclose -; -; REVISION HISTORY: -; Written a long time ago. -; Updated for BOSS inputs by B. A. Weaver, NYU -; -; VERSION: -; $Id: pca_gal.pro 50005 2011-05-26 18:56:10Z weaver $ -; -;------------------------------------------------------------------------------ -PRO pca_gal, inputfile=inputfile, wavemin=wavemin, wavemax=wavemax, $ - binsz=binsz, flux=flux, niter=niter, savefile=savefile - ; - ; Define initial parameters - ; - IF ~KEYWORD_SET(inputfile) THEN BEGIN - inputfile = FILEPATH('eigeninput_gal.dat', $ - ROOT_DIR=GETENV('IDLSPEC2D_DIR'), SUBDIRECTORY='templates') - ENDIF - IF ~KEYWORD_SET(wavemin) THEN wavemin = 1850. ; Good to z=1 - IF ~KEYWORD_SET(wavemax) THEN wavemax = 10000. - snmax = 100 - IF ~KEYWORD_SET(niter) THEN niter = 10 - nkeep = 4 - minuse = 10 - ; - ; Name the output files - ; - get_juldate, jd - mjdstr = STRING(LONG(jd-2400000.5), FORMAT='(I5)') - outfile = 'spEigenGal-' + mjdstr + '.fits' - plotfile = 'spEigenGal-' + mjdstr + '.ps' - dfpsplot, plotfile, /color, /landscape - colorvec = ['default', 'red', 'green', 'blue', 'magenta', 'cyan'] - ; - ; Read the input spectra - ; - djs_readcol, inputfile, plate, mjd, fiber, zfit, format='(L,L,L,D)' - readspec, plate, fiber, mjd=mjd, flux=objflux, invvar=objivar, $ - andmask=andmask, ormask=ormask, plugmap=plugmap, loglam=objloglam - ; - ; Insist that all of the requested spectra exist - ; - imissing = WHERE(plugmap.fiberid EQ 0, nmissing) - IF (nmissing GT 0) THEN BEGIN - FOR i=0, nmissing-1 DO $ - PRINT, 'Missing plate=', plate[imissing[i]], $ - ' mjd=', mjd[imissing[i]], $ - ' fiber=', fiber[imissing[i]] - MESSAGE, STRING(nmissing) + ' missing object(s)' - ENDIF - ; - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - ; - objivar = skymask(objivar, andmask, ormask) - andmask = 0 ; Free memory - ormask = 0 ; Free memory - nobj = (SIZE(objflux, /dimens))[1] - IF (KEYWORD_SET(snmax)) THEN BEGIN - ifix = WHERE(objflux^2 * objivar GT snmax^2) - IF (ifix[0] NE -1) THEN objivar[ifix] = (snmax/objflux[ifix])^2 - ENDIF - ; - ; Set the new wavelength mapping here... - ; If the binsz keyword is not set, then bin size is determined from the - ; first spectrum returned by readspec. This is fine in the case where - ; all the spectra have the same bin size (though their starting - ; wavelengths may differ). However, this may not be a safe - ; assumption in the future. - ; - IF ~KEYWORD_SET(binsz) THEN binsz = objloglam[1,0] - objloglam[0,0] - newloglam = wavevector(ALOG10(wavemin), ALOG10(wavemax), binsz=binsz) - ; - ; Do PCA solution - ; - pcaflux = pca_solve(objflux, objivar, objloglam, zfit, $ - wavemin=wavemin, wavemax=wavemax, $ - niter=niter, nkeep=nkeep, newloglam=newloglam, eigenval=eigenval, $ - acoeff=acoeff, usemask=usemask, newflux=newflux, newivar=newivar) - pcaflux = FLOAT(pcaflux) - ; - ; Fill in bad data with a running median of good data - ; - qgood = usemask GE minuse - igood = WHERE(qgood, ngood) - ibad = WHERE(qgood EQ 0, nbad) - medflux = 0 * pcaflux - IF (nbad GT 0) THEN BEGIN - FOR i=0, nkeep-1 DO BEGIN - medflux[igood,i] = $ - djs_median(pcaflux[igood,i], width=51, boundary='nearest') - medflux[*,i] = djs_maskinterp(medflux[*,i], qgood EQ 0, /const) - ENDFOR - pcaflux[ibad,*] = medflux[ibad,*] - ENDIF - ; - ; Dump input fluxes to a file for debugging purposes. - ; - IF KEYWORD_SET(savefile) THEN $ - SAVE, newloglam, newflux, newivar, FILENAME=savefile - ; - ; Make plots - ; - nspectra = (SIZE(newflux,/DIMENSIONS))[1] - IF KEYWORD_SET(flux) THEN BEGIN - nfluxes = 30L - separation = 5.0 - nplots = nspectra/nfluxes - IF nspectra MOD nfluxes GT 0 THEN nplots = nplots + 1L - FOR k = 0L, nplots-1L DO BEGIN - istart = k*nfluxes - iend = ((istart + nfluxes) < nspectra) - 1L - djs_plot, 10^newloglam, newflux[*,istart], $ - xrange=minmax(10^newloglam), $ - yrange=[MIN(newflux[*,istart]),MAX(newflux[*,iend])+separation*(nfluxes-1)], /xstyle, $ - color=colorvec[0], $ - xtitle='Wavelength [\AA]', $ - ytitle='Flux [10^{-17} erg cm^{-2} s^{-1} \AA^{-1}] + Constant', $ - title=STRING(istart+1L,iend+1L,FORMAT='("Galaxies: Input Spectra ",I4,"-",I4)') ;, /xlog - FOR i=istart+1L, iend DO $ - djs_oplot, 10^newloglam, newflux[*,i]+separation*(i MOD nfluxes), $ - color=colorvec[i MOD N_ELEMENTS(colorvec)] - ENDFOR - ENDIF - djs_plot, 10^newloglam, TOTAL(newivar EQ 0,2)/nspectra, $ - color=colorvec[0], xtitle='Wavelength [\AA]', $ - ytitle='Fraction of spectra with missing data', $ - title='Missing Data' - djs_plot, 10^newloglam, pcaflux[*,0], $ - xrange=minmax(10^newloglam), yrange=minmax(pcaflux), /xstyle, $ - color=colorvec[0], $ - xtitle='Wavelength [\AA]', ytitle='Flux [arbitrary units]', $ - title='Galaxies: Eigenspectra' ;, /xlog - FOR i=1, nkeep-1 DO $ - djs_oplot, 10^newloglam, pcaflux[*,i], $ - color=colorvec[i MOD N_ELEMENTS(colorvec)] - aratio10 = acoeff[1,*] / acoeff[0,*] - aratio20 = acoeff[2,*] / acoeff[0,*] - aratio30 = acoeff[3,*] / acoeff[0,*] - djs_plot, aratio10, aratio20, /nodata, $ - xtitle='Eigenvalue Ratio (a_1/a_0)', $ - ytitle='Eigenvalue Ratio (a_2/a_0)', $ - title='Galaxies: Eigenvalue Ratios' - FOR j=0, N_ELEMENTS(aratio10)-1 DO $ - djs_xyouts, aratio10[j], aratio20[j], align=0.5, $ - STRING(plate[j], fiber[j], FORMAT='(I4.4,"-",I4.4)'), $ - color=colorvec[j MOD N_ELEMENTS(colorvec)],charsize=0.5 - djs_plot, aratio20, aratio30, /nodata, $ - xtitle='Eigenvalue Ratio (a_2/a_0)', $ - ytitle='Eigenvalue Ratio (a_3/a_0)', $ - title='Galaxies: Eigenvalue Ratios' - FOR j=0, N_ELEMENTS(aratio20)-1 DO $ - djs_xyouts, aratio20[j], aratio30[j], align=0.5, $ - STRING(plate[j], fiber[j], FORMAT='(I4.4,"-",I4.4)'), $ - color=colorvec[j MOD N_ELEMENTS(colorvec)],charsize=0.5 - ; - ; Write output file - ; - sxaddpar, hdr, 'OBJECT', 'GALAXY' - sxaddpar, hdr, 'COEFF0', newloglam[0] - sxaddpar, hdr, 'COEFF1', binsz - sxaddpar, hdr, 'IDLUTILS', idlutils_version(), 'Version of idlutils' - sxaddpar, hdr, 'SPEC2D', idlspec2d_version(), 'Version of idlspec2d' - sxaddpar, hdr, 'RUN2D', GETENV('RUN2D'), 'Version of 2d reduction' - sxaddpar, hdr, 'RUN1D', GETENV('RUN1D'), 'Version of 1d reduction' - FOR i=0, N_ELEMENTS(eigenval)-1 DO $ - sxaddpar, hdr, 'EIGEN'+STRTRIM(STRING(i),1), eigenval[i] - mwrfits, pcaflux, outfile, hdr, /create - ; - ; Create a table of inputs - ; - sxaddpar, hdr2, 'FILENAME', inputfile - inputs0 = {inputs, plate:0L, mjd:0L, fiber:0L, redshift:0.0D} - inputs = REPLICATE(inputs0,N_ELEMENTS(plate)) - inputs.plate = plate - inputs.mjd = mjd - inputs.fiber = fiber - inputs.redshift = zfit - mwrfits, inputs, outfile, hdr2 - dfpsclose - RETURN -END -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/pca_lrgtest.pro b/pro/spec1d/pca_lrgtest.pro deleted file mode 100644 index 1d8d7c942..000000000 --- a/pro/spec1d/pca_lrgtest.pro +++ /dev/null @@ -1,168 +0,0 @@ -;+ -; NAME: -; pca_lrgtest -; -; PURPOSE: -; Build PCA templates for LRGs within a specified redshift range. -; -; CALLING SEQUENCE: -; pca_lrgtest, [ platenums, nkeep=, zrange= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; platenums - Plate number(s) from which to select the LRGs; if not set, -; then select all 'main' survey plates with QSURVEY=1 -; in the plate list file (which are required to be unique -; tiles with good quality observations) -; nkeep - Number of PCA templates to keep (and to use for -; noisy data replacement); default to 2. -; zrange - 2-element array with redshift range for fitting; if not set, -; then call this routine iteratively with redshift ranges -; starting at [0,0.05] and extending to [0.45,0.50], spaced -; every 0.05 in redshift. -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The output are written to FITS files named "spLRG_xxx_yyy.fits" where -; "xxx" is the starting redshift times 100, and "yyy" is the ending -; redshift times ten. -; -; EXAMPLES: -; Create a set of PCA templates for LRGs from plates 400 through 409: -; IDL> pca_lrgtest, 400+lindgen(10) -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_maskinterp() -; djs_median -; mwrfits -; pca_solve() -; platelist -; readspec -; splog -; skymask() -; sxaddhist -; sxaddpar -; wavevector() -; -; REVISION HISTORY: -; 23-Mar-2001 Written by David Schlegel, Princeton. -; 17-Sep-2003 Modified for N. Padmanabhan -;- -;------------------------------------------------------------------------------ -pro pca_lrgtest, platenums, nkeep=nkeep, zrange=zrange - - if (NOT keyword_set(zrange)) then begin - for z1=0.0, 0.46, 0.05 do begin - pca_lrgtest, platenums, nkeep=nkeep, zrange=[z1,z1+0.05] - endfor - return - endif - - ;---------- - ; Set defaults - - wavemin = 2500. - wavemax = 9200. - snmax = 100 - niter = 10 - if (NOT keyword_set(nkeep)) then nkeep = 2 - minuse = 5 - outfile = string(long(zrange[0]*100), long(zrange[1]*100), $ - format='("spLRG_", i3.3, "_", i3.3, ".fits")') - - ;---------- - ; Get the list of plates if not specified - - if (NOT keyword_set(platenums)) then begin - platelist, plist=plist - platenums = plist[ where(plist.qsurvey) ].plate - endif - - ;---------- - ; Read the input spectra. - ; Select good spectra of galaxies that were actually targetted - ; as LRGs in the main survey. - - readspec, platenums, zans=zans, plug=plug - indx = where(((plug.primtarget AND 2LL^5) NE 0 $ - OR (plug.primtarget AND 2LL^26) NE 0) $ - AND strtrim(zans.class) EQ 'GALAXY' $ - AND zans.zwarning EQ 0 $ - AND zans.z GE zrange[0] AND zans.z LE zrange[1]) - zans = zans[indx] - splog, 'Number of objects = ', n_elements(zans) - - readspec, zans.plate, zans.fiberid, mjd=zans.mjd, $ - flux=objflux, invvar=objivar, $ - andmask=andmask, ormask=ormask, plugmap=plugmap, loglam=objloglam - - ;---------- - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - - objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - - nobj = (size(objflux, /dimens))[1] - objdloglam = objloglam[1] - objloglam[0] - - if (keyword_set(snmax)) then begin - ifix = where(objflux^2 * objivar GT snmax^2) - if (ifix[0] NE -1) then objivar[ifix] = (snmax/objflux[ifix])^2 - endif - - ;---------- - ; Set the new wavelength mapping here... - - newloglam = wavevector(alog10(wavemin), alog10(wavemax), binsz=objdloglam) - - ;---------- - ; Do PCA solution - - pcaflux = pca_solve(objflux, objivar, objloglam, zans.z, $ - niter=niter, nkeep=nkeep, newloglam=newloglam, eigenval=eigenval, $ - usemask=usemask) - pcaflux = float(pcaflux) - - ;---------- - ; Fill in bad data with a running median of good data - - qgood = usemask GE minuse - igood = where(qgood, ngood) - ibad = where(qgood EQ 0, nbad) - medflux = 0 * pcaflux - if (nbad GT 0) then begin - for i=0, nkeep-1 do begin - medflux[igood,i] = $ - djs_median(pcaflux[igood,i], width=51, boundary='nearest') - medflux[*,i] = djs_maskinterp(medflux[*,i], qgood EQ 0, /const) - endfor - pcaflux[ibad,*] = medflux[ibad,*] - endif - - ;---------- - ; Write output file - - sxaddpar, hdr, 'OBJECT', $ - 'LRG z=' + string(zrange[0]) + ' ' + string(zrange[1]) - sxaddpar, hdr, 'COEFF0', newloglam[0] - sxaddpar, hdr, 'COEFF1', objdloglam - sxaddpar, hdr, 'NPLATE', n_elements(platenums), ' Number of plates used' - sxaddpar, hdr, 'NGALAXY', n_elements(zans), ' Number of galaxies in fit' - for i=0, n_elements(eigenval)-1 do $ - sxaddpar, hdr, 'EIGEN'+strtrim(string(i),1), eigenval[i] - for i=0, n_elements(platenums)-1 do $ - sxaddhist, 'Plate ' + strtrim(platenums[i],2) + ' with ' $ - + strtrim(long(total(zans.plate EQ platenums[i])),2) + ' galaxies', hdr - - mwrfits, pcaflux, outfile, hdr, /create - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/pca_qso.pro b/pro/spec1d/pca_qso.pro deleted file mode 100644 index e170a63c2..000000000 --- a/pro/spec1d/pca_qso.pro +++ /dev/null @@ -1,277 +0,0 @@ -;+ -; NAME: -; pca_qso -; -; PURPOSE: -; Wrapper on pca_solve.pro -; -; CALLING SEQUENCE: -; pca_qso, [inputfile=inputfile], [wavemin=wavemin], [wavemax=wavemax], $ -; [binsz=binsz], [niter=niter], [savefile=savefile], [/flux], $ -; [/allatonce] -; -; INPUTS: -; None -; -; OPTIONAL INPUTS: -; inputfile - File containing plate, mjd, fiber, redshift. If not -; specified, it will read eigeninput_qso.dat from -; $IDLSPEC2D_DIR/templates -; wavemin - minimum wavelength, default 460 A. -; wavemax - maximum wavelength, default 10000 A. -; binsz - Override the bin size of the final wavelength mapping. -; flux - Plot redshift-shifted spectra. -; niter - Number of iterations to pass to pca_solve, default 200. -; savefile - Save the input spectra to a named file for debugging. -; allatonce - Solve for components all at once instead of one at a time. -; -; OUTPUTS: -; None, but creates the files spEigenQSO-MJD.fits & spEigenQSO-MJD.ps -; -; DATA FILES: -; $IDLSPEC2D_DIR/templates/eigeninput_qso.dat -; -; PROCEDURES CALLED: -; get_juldate -; dfpsplot -; djs_readcol -; readspec -; skymask() -; wavevector() -; pca_solve() -; computechi2() -; djs_median() -; djs_plot -; djs_oplot -; djs_xyouts -; sxaddpar -; mwrfits -; dfpsclose -; -; REVISION HISTORY: -; Written a long time ago. -; Updated for BOSS inputs by B. A. Weaver, NYU -; -; VERSION: -; $Id: pca_qso.pro 50208 2012-01-24 15:47:52Z weaver $ -; -;------------------------------------------------------------------------------ -PRO pca_qso, inputfile=inputfile, wavemin=wavemin, wavemax=wavemax, $ - binsz=binsz, flux=flux, niter=niter, savefile=savefile - ; - ; Define initial parameters - ; - IF ~KEYWORD_SET(inputfile) THEN BEGIN - inputfile = FILEPATH('eigeninput_qso.dat', $ - ROOT_DIR=GETENV('IDLSPEC2D_DIR'), SUBDIRECTORY='templates') - ENDIF - IF ~KEYWORD_SET(wavemin) THEN wavemin = 460. ; Good to z=1 - IF ~KEYWORD_SET(wavemax) THEN wavemax = 10000. - snmax = 100 - IF ~KEYWORD_SET(niter) THEN niter = 200 - nkeep = 4 - minuse = 3 - ; - ; Name the output files - ; - get_juldate, jd - mjdstr = STRING(LONG(jd-2400000.5), FORMAT='(I5)') - outfile = 'spEigenQSO-' + mjdstr + '.fits' - plotfile = 'spEigenQSO-' + mjdstr + '.ps' - dfpsplot, plotfile, /color, /landscape - colorvec = ['default', 'red', 'green', 'blue', 'magenta', 'cyan'] - ; - ; Read the input spectra - ; - djs_readcol, inputfile, plate, mjd, fiber, zfit, format='(L,L,L,D)' - readspec, plate, fiber, mjd=mjd, flux=objflux, invvar=objivar, $ - andmask=andmask, ormask=ormask, plugmap=plugmap, loglam=objloglam - ; - ; Insist that all of the requested spectra exist - ; - imissing = WHERE(plugmap.fiberid EQ 0, nmissing) - IF (nmissing GT 0) THEN BEGIN - FOR i=0, nmissing-1 DO $ - PRINT, 'Missing plate=', plate[imissing[i]], $ - ' mjd=', mjd[imissing[i]], $ - ' fiber=', fiber[imissing[i]] - MESSAGE, STRING(nmissing) + ' missing object(s)' - ENDIF - ; - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - ; - objivar = skymask(objivar, andmask, ormask) - andmask = 0 ; Free memory - ormask = 0 ; Free memory - nobj = (SIZE(objflux, /dimens))[1] - IF (KEYWORD_SET(snmax)) THEN BEGIN - ifix = WHERE(objflux^2 * objivar GT snmax^2) - IF (ifix[0] NE -1) THEN objivar[ifix] = (snmax/objflux[ifix])^2 - ENDIF - ; - ; Set the new wavelength mapping here... - ; If the binsz keyword is not set, then bin size is determined from the - ; first spectrum returned by readspec. This is fine in the case where - ; all the spectra have the same bin size (though their starting - ; wavelengths may differ). However, this may not be a safe - ; assumption in the future. - ; - IF ~KEYWORD_SET(binsz) THEN binsz = objloglam[1,0] - objloglam[0,0] - newloglam = wavevector(ALOG10(wavemin), ALOG10(wavemax), binsz=binsz) - IF KEYWORD_SET(allatonce) THEN BEGIN - ; - ; Do PCA solution -- all components at once. - ; - ; The following would solve for all the eigen-vectors at once. - ; This can result in an unphysical 1st eigencomponent, probably - ; because each spectrum only covers a small range of rest wavelength. - ; - pcaflux = pca_solve(objflux, objivar, objloglam, zfit, $ - wavemin=wavemin, wavemax=wavemax, $ - niter=niter, nkeep=nkeep, newloglam=newloglam, eigenval=eigenval) - ENDIF ELSE BEGIN - ; - ; Do PCA solution -- but one component at a time. - ; - FOR ikeep=0, nkeep-1 DO BEGIN - splog, 'Solving for eigencomponent #', ikeep+1, ' of ', nkeep - pcaflux1 = pca_solve(objflux, objivar, objloglam, zfit, $ - wavemin=wavemin, wavemax=wavemax, $ - niter=niter, nkeep=1, newloglam=newloglam, $ - newflux=newflux, newivar=newivar, eigenval=eigenval1, $ - acoeff=acoeff1, usemask=usemask) - IF (ikeep EQ 0) THEN BEGIN - saveflux = newflux - pcaflux = pcaflux1 - eigenval = eigenval1 - ; acoeff = acoeff1 - ENDIF ELSE BEGIN - pcaflux = [[pcaflux], [pcaflux1]] - ; - ; These eigenvalues are not normalized properly!!!??? - ; - eigenval = [eigenval, eigenval1] - ; acoeff = [acoeff, acoeff1] - ENDELSE - ; - ; Re-solve for the coefficients using all PCA components so far - ; - acoeff = FLTARR(ikeep+1,nobj) - FOR iobj=0, nobj-1 DO BEGIN - junk = computechi2(saveflux[*,iobj], SQRT(newivar[*,iobj]), $ - pcaflux, acoeff=theta) - acoeff[*,iobj] = theta - ENDFOR - ; - ; Prevent re-binning of spectra on subsequent calls to PCA_SOLVE(). - ; - objloglam = 0 - ; objflux = newflux - acoeff1 ## pcaflux1 - objflux = saveflux - acoeff ## pcaflux - objivar = newivar - ENDFOR - ENDELSE - pcaflux = FLOAT(pcaflux) - ; - ; Fill in bad data with a running median of good data - ; - qgood = usemask GE minuse - igood = WHERE(qgood, ngood) - ibad = WHERE(qgood EQ 0, nbad) - medflux = 0 * pcaflux - IF (nbad GT 0) THEN BEGIN - FOR i=0, nkeep-1 DO BEGIN - medflux[igood,i] = $ - djs_median(pcaflux[igood,i], width=51, boundary='nearest') - medflux[*,i] = djs_maskinterp(medflux[*,i], qgood EQ 0, /const) - ENDFOR - pcaflux[ibad,*] = medflux[ibad,*] - ENDIF - ; - ; Dump input fluxes to a file for debugging purposes. - ; - IF KEYWORD_SET(savefile) THEN $ - SAVE, newloglam, newflux, newivar, FILENAME=savefile - ; - ; Make plots - ; - nspectra = (SIZE(newflux,/DIMENSIONS))[1] - IF KEYWORD_SET(flux) THEN BEGIN - nfluxes = 30L - separation = 5.0 - nplots = nspectra/nfluxes - IF nspectra MOD nfluxes GT 0 THEN nplots = nplots + 1L - FOR k = 0L, nplots-1L DO BEGIN - istart = k*nfluxes - iend = ((istart + nfluxes) < nspectra) - 1L - djs_plot, 10^newloglam, newflux[*,istart], $ - xrange=minmax(10^newloglam), $ - yrange=[MIN(newflux[*,istart]),MAX(newflux[*,iend])+separation*(nfluxes-1)], /xstyle, $ - color=colorvec[0], $ - xtitle='Wavelength [\AA]', $ - ytitle='Flux [10^{-17} erg cm^{-2} s^{-1} \AA^{-1}] + Constant', $ - title=STRING(istart+1L,iend+1L,FORMAT='("QSOs: Input Spectra ",I4,"-",I4)') ;, /xlog - FOR i=istart+1L, iend DO $ - djs_oplot, 10^newloglam, newflux[*,i]+separation*(i MOD nfluxes), $ - color=colorvec[i MOD N_ELEMENTS(colorvec)] - ENDFOR - ENDIF - djs_plot, 10^newloglam, TOTAL(newivar EQ 0,2)/nspectra, $ - color=colorvec[0], xtitle='Wavelength [\AA]', $ - ytitle='Fraction of spectra with missing data', $ - title='Missing Data' - djs_plot, 10^newloglam, pcaflux[*,0], $ - xrange=minmax(10^newloglam), yrange=minmax(pcaflux), /xstyle, $ - color=colorvec[0], $ - xtitle='Wavelength [\AA]', ytitle='Flux [arbitrary units]', $ - title='QSOs: Eigenspectra' ;, /xlog - FOR i=1, nkeep-1 DO $ - djs_oplot, 10^newloglam, pcaflux[*,i], $ - color=colorvec[i MOD N_ELEMENTS(colorvec)] - aratio10 = acoeff[1,*] / acoeff[0,*] - aratio20 = acoeff[2,*] / acoeff[0,*] - aratio30 = acoeff[3,*] / acoeff[0,*] - djs_plot, aratio10, aratio20, /nodata, $ - xtitle='Eigenvalue Ratio (a_1/a_0)', $ - ytitle='Eigenvalue Ratio (a_2/a_0)', $ - title='QSOs: Eigenvalue Ratios' - FOR j=0, N_ELEMENTS(aratio10)-1 DO $ - djs_xyouts, aratio10[j], aratio20[j], align=0.5, $ - STRING(plate[j], fiber[j], FORMAT='(I4.4,"-",I4.4)'), $ - color=colorvec[j MOD N_ELEMENTS(colorvec)],charsize=0.5 - djs_plot, aratio20, aratio30, /nodata, $ - xtitle='Eigenvalue Ratio (a_2/a_0)', $ - ytitle='Eigenvalue Ratio (a_3/a_0)', $ - title='QSOs: Eigenvalue Ratios' - FOR j=0, N_ELEMENTS(aratio20)-1 DO $ - djs_xyouts, aratio20[j], aratio30[j], align=0.5, $ - STRING(plate[j], fiber[j], FORMAT='(I4.4,"-",I4.4)'), $ - color=colorvec[j MOD N_ELEMENTS(colorvec)],charsize=0.5 - ; - ; Write output file - ; - sxaddpar, hdr, 'OBJECT', 'QSO' - sxaddpar, hdr, 'COEFF0', newloglam[0] - sxaddpar, hdr, 'COEFF1', binsz - sxaddpar, hdr, 'IDLUTILS', idlutils_version(), 'Version of idlutils' - sxaddpar, hdr, 'SPEC2D', idlspec2d_version(), 'Version of idlspec2d' - sxaddpar, hdr, 'RUN2D', GETENV('RUN2D'), 'Version of 2d reduction' - sxaddpar, hdr, 'RUN1D', GETENV('RUN1D'), 'Version of 1d reduction' - FOR i=0, N_ELEMENTS(eigenval)-1 DO $ - sxaddpar, hdr, 'EIGEN'+STRTRIM(STRING(i),1), eigenval[i] - mwrfits, pcaflux, outfile, hdr, /create - ; - ; Create a table of inputs - ; - sxaddpar, hdr2, 'FILENAME', inputfile - inputs0 = {inputs, plate:0L, mjd:0L, fiber:0L, redshift:0.0D} - inputs = REPLICATE(inputs0,N_ELEMENTS(plate)) - inputs.plate = plate - inputs.mjd = mjd - inputs.fiber = fiber - inputs.redshift = zfit - mwrfits, inputs, outfile, hdr2 - dfpsclose - RETURN -END -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/pca_solve.pro b/pro/spec1d/pca_solve.pro deleted file mode 100644 index 01ca06ef5..000000000 --- a/pro/spec1d/pca_solve.pro +++ /dev/null @@ -1,266 +0,0 @@ -;+ -; NAME: -; pca_solve -; -; PURPOSE: -; Iteratively find PCA solution for noisy or gappy spectra. -; -; CALLING SEQUENCE: -; res = pca_solve( objflux, objivar, objloglam, [ zfit, $ -; wavemin=, wavemax=, newloglam=, $ -; maxiter=, niter=, nkeep=, nreturn=, eigenval=, acoeff=, outmask=, $ -; usemask=, /quiet, _EXTRA= ] ) -; -; INPUTS: -; objflux - Object fluxes [NPIX,NSPEC] -; objivar - Object inverse variances [NPIX,NSPEC] -; -; OPTIONAL INPUTS: -; objloglam - Object wavelengths in log10(Angstroms) -; [NPIX] if the same wavelength mapping for all spectra, -; or [NPIX,NSPEC] if the wavelength mappings are different. -; zfit - Redshifts of each input spectrum [NSPEC]; if set, then -; each input spectrum is de-redshifted to z=0. -; wavemin - Minimum wavelength to use in PCA solution, in Angstroms; -; default to the minimum (de-redshifted) input wavelength. -; wavemax - Maximum wavelength to use in PCA solution, in Angstroms -; default to the minimum (de-redshifted) input wavelength. -; newloglam - PCA wavelength sampling in log-10(Angstroms) [NNEWPIX] -; maxiter - Number of rejection iterations; default to 0 (no rejection) -; niter - Number of PCA iterations; default to 10. -; nkeep - Number of PCA components to keep in each iteration -; and use in replacing noisy or missing data; default to 3. -; nreturn - Number of PCA components to return; default to the same as -; NKEEP. -; quiet - Minimal output to splog -; _EXTRA - Keywords for DJS_REJECT(). -; -; OUTPUTS: -; res - PCA spectra in rest-frame [NNEWPIX,NKEEP] -; -; OPTIONAL OUTPUTS: -; newloglam - PCA wavelength sampling in log-10(Angstroms) [NNEWPIX] -; newflux - Rebinned OBJFLUX on the wavelength-mapping NEWLOGLAM. -; newivar - Rebinned OBJIVAR on the wavelength-mapping NEWLOGLAM. -; eigenval - Eigenvalue for each output eigenspectra [NRETURN] -; acoeff - PCA coefficients [NRETURN,NOBJ] -; outmask - Output mask from DJS_REJECT() [NNEWPIX,NOBJ] -; usemask - Number of unmasked spectra used for each pixel, so these -; are integers in the range 0 to NSPEC [NNEWPIX]; this is -; equivalent to TOTAL(OUTMASK,2). -; -; COMMENTS: -; The best-fit eigenspectra for each of the input spectra can be determined -; for object number IOBJ by ACOEFF[*,IOBJ] # RES. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; combine1fiber -; computechi2() -; djs_mean() -; djs_reject() -; splog -; wavevector() -; -; REVISION HISTORY: -; 10-Oct-2000 Written by D. Schlegel, Princeton -; 07-Jul-2003 added quiet keyword - C. Tremonti -; -; VERSION: -; $Id: pca_solve.pro 49529 2010-06-03 17:46:50Z kushner $ -; -;- -FUNCTION pca_solve, objflux, objivar, objloglam, zfit, $ - wavemin=wavemin, wavemax=wavemax, newloglam=newloglam, $ - newflux=newflux, newivar=newivar, maxiter=maxiter, $ - niter=niter, nkeep=nkeep, nreturn=nreturn, eigenval=eigenval, $ - acoeff=acoeff, outmask=outmask, usemask=usemask, quiet=quiet, $ - _EXTRA=KeywordsForReject - ; - ; - ; - IF (N_ELEMENTS(maxiter) EQ 0) THEN maxiter = 0 - IF ~KEYWORD_SET(niter) THEN niter = 10 - IF ~KEYWORD_SET(nkeep) THEN nkeep = 3 - IF ~KEYWORD_SET(nreturn) THEN nreturn = nkeep - ndim = SIZE(objflux, /N_DIMEN) - dims = SIZE(objflux, /DIMENS) - npix = dims[0] - IF (ndim EQ 1) THEN nobj = 1 ELSE nobj = dims[1] - splog, 'Building PCA from ', nobj, ' object spectra' - ; - ; The redshift of each object in pixels would be LOGSHIFT/OBJDLOGLAM - ; - IF KEYWORD_SET(zfit) THEN logshift = ALOG10(1.0D + zfit) $ - ELSE logshift = DBLARR(nobj) - ; - ; Determine the new wavelength mapping - ; - IF KEYWORD_SET(objloglam) THEN BEGIN ; ??? - IF KEYWORD_SET(newloglam) THEN $ - objdloglam = ABS(newloglam[1] - newloglam[0]) $ - ELSE BEGIN - igood = WHERE(objloglam NE 0) - objdloglam = ABS(objloglam[1] - objloglam[0]) - logmin = MIN(objloglam[igood]) - MAX(logshift) - logmax = MAX(objloglam[igood]) - MIN(logshift) - IF KEYWORD_SET(wavemin) THEN logmin = logmin > ALOG10(wavemin) - IF KEYWORD_SET(wavemax) THEN logmax = logmax < ALOG10(wavemax) - newloglam = wavevector(logmin, logmax, binsz=objdloglam) - ENDELSE - nnew = N_ELEMENTS(newloglam) - newflux = DBLARR(nnew,nobj) - newivar = DBLARR(nnew,nobj) - ndim = SIZE(objloglam, /N_DIMEN) - IF (ndim EQ 1) THEN qwavevec = 0B $ - ELSE BEGIN - qwavevec = 1B - IF ((SIZE(objloglam, /DIMENS))[1] NE nobj) THEN $ - MESSAGE, 'Wrong number of dimensions for OBJLOGLAM' - ENDELSE - ; - ; Shift each spectra to z=0 and sample at the output wavelengths - ; - FOR iobj=0L, nobj-1L DO BEGIN - indx = WHERE(objloglam[*,iobj*qwavevec] GT 0) - splog,'OBJECT ',iobj - combine1fiber, objloglam[indx,iobj*qwavevec]-logshift[iobj], $ - objflux[indx,iobj], objivar[indx,iobj], $ - newloglam=newloglam, binsz=objdloglam, newflux=flux1, $ - newivar=ivar1 ;, /verbose - newflux[*,iobj] = flux1 - newivar[*,iobj] = ivar1 - ENDFOR - ENDIF ELSE BEGIN - newflux = objflux - newivar = objivar - nnew = (SIZE(objflux,/DIMENS))[0] - ENDELSE - ; - ; Construct the synthetic weight vector, to be used when replacing - ; the low-S/N object pixels with the reconstructions. - ; - synwvec = DBLARR(nnew) + 1.0D ; Set to 1 if no data for this wavelength - FOR ipix=0L, nnew-1L DO BEGIN - indx = WHERE(newivar[ipix,*] NE 0) - IF (indx[0] NE -1) THEN $ - synwvec[ipix] = djs_mean(newivar[ipix,indx]) - ENDFOR - ; - ; Compute a mean spectrum, and use this to replace masked pixels. - ; Use only the NUSE spectra with flux levels at least 5% of the median - ; flux level. For wavelengths with no unmasked data in any spectrum, - ; just average all the spectra for lack of anything better to do. - ; - ; normflux = TOTAL(newflux,1) / nnew - ; iuse = WHERE(normflux GT 0.05 * MEDIAN(normflux), nuse) - ; synflux = DBLARR(nnew) - ; usemask = LONARR(nnew) - ; FOR ipix=0L, nnew-1L DO BEGIN - ; ibad = WHERE(newivar[ipix,iuse] EQ 0, nbad) - ; usemask[ipix] = nuse - nbad - ; IF (nbad LT nuse) THEN BEGIN - ; synflux[ipix] = TOTAL( newflux[ipix,iuse] * newivar[ipix,iuse]) $ - ; / TOTAL(newivar[ipix,iuse] * normflux[iuse]) - ; ENDIF ELSE BEGIN - ; synflux[ipix] = TOTAL( newflux[ipix,iuse] / normflux[iuse]) / nuse - ; ENDELSE - ; ENDFOR - ; FOR iobj=0L, nobj-1L DO BEGIN - ; ibad = WHERE(newivar[*,iobj] EQ 0) - ; IF (ibad[0] NE -1) THEN $ - ; newflux[ibad,iobj] = synflux[ibad] * normflux[iobj] - ; ENDFOR - ; - ; Construct the USEMASK from the output mask (OUTMASK) instead of - ; from NEWIVAR. - ; - ; IF (nobj EQ 1) THEN usemask = newivar NE 0 $ - ; ELSE usemask = TOTAL(newivar NE 0, 2) - ; - ; If there is only 1 object spectrum, then all we can do is return it - ; (after it has been re-binned). - ; - IF (nobj EQ 1) THEN BEGIN - IF ARG_PRESENT(eigenval) THEN eigenval = 1.0D - IF ARG_PRESENT(acoeff) THEN acoeff = 1.0D - IF ARG_PRESENT(outmask) THEN outmask = LONARR(nnew) + 1L - IF ARG_PRESENT(usemask) THEN usemask = LONARR(nnew) + 1L - RETURN, newflux - ENDIF - ; - ; Rejection iteration loop - ; - qdone = 0 - iiter = 0 - ; - ; Begin with all points good (unless the inverse variance is zero). - ; - ; outmask = MAKE_ARRAY(DIMENSION=SIZE(newflux,/DIMENS), /BYTE) + 1B - outmask = 0 - inmask = newivar NE 0 - WHILE ((qdone EQ 0) AND (iiter LE maxiter)) DO BEGIN - qdone = djs_reject(newflux, ymodel, inmask=inmask, outmask=outmask, $ - invvar=newivar, _EXTRA=KeywordsForReject) - ; - ; Iteratively do the PCA solution - ; - filtflux = newflux - acoeff = DBLARR(nkeep,nobj) - t0=SYSTIME(1) - FOR ipiter=0L, niter-1L DO BEGIN - eigenval = 1 ; Set so that the PCOMP() routine returns this. - coeff = 1 ; Set so that the PCOMP() routine returns this. - totflux = DBLARR(nobj) - FOR iobj=0L, nobj-1L DO $ - totflux[iobj] = TOTAL(ABS(filtflux[*,iobj] - filtflux[0,iobj])) - igoodobj = WHERE(totflux GT 0, ngoodobj) - IF (ngoodobj EQ nobj) THEN BEGIN - pres = PCOMP(TRANSPOSE(filtflux), EIGENVAL=eigenval, /DOUBLE) - ENDIF ELSE BEGIN - tmp_pres = PCOMP(TRANSPOSE(filtflux[*,igoodobj]), $ - EIGENVAL=tmp_eigenval, /DOUBLE) - pres = DBLARR(nobj,nnew) - pres[igoodobj,*] = tmp_pres - eigenval = DBLARR(1,nobj) - eigenval[0,igoodobj] = tmp_eigenval - ENDELSE - maskivar = newivar * outmask - sqivar = SQRT(maskivar) - ; bvec = filtflux * sqivar - ; mmatrix = pres[0:nkeep-1,*] - ; FOR i=0L, nkeep-1L DO $ - ; mmatrix[i,*] = mmatrix[i,*] * sqivar - ; mmatrixt = TRANSPOSE(mmatrix) - FOR iobj=0L, nobj-1L DO BEGIN - chi2 = computechi2(newflux[*,iobj], sqivar[*,iobj], $ - TRANSPOSE(pres[0:nkeep-1,*]), acoeff=theta) - synflux = theta # pres[0:nkeep-1,*] - filtflux[*,iobj] = (maskivar[*,iobj] * newflux[*,iobj] + $ - synwvec * synflux) / (maskivar[*,iobj] + synwvec) - acoeff[*,iobj] = theta - ; splot,filtflux[*,iobj] - ; soplot,synflux,color='red' - ENDFOR - ; writefits, 'test-'+STRTRIM(STRING(ipiter),1)+'.fits', $ - ; FLOAT(TRANSPOSE(pres[0:nkeep-1,*])) - IF ~KEYWORD_SET(quiet) THEN $ - splog, 'Elapsed time for iteration #', ipiter, ' = ', $ - SYSTIME(1)-t0 - ENDFOR ; End PCA iterations - ; - ; Now set YMODEL for rejecting points - ; - ymodel = acoeff ## TRANSPOSE(pres[0:nkeep-1,*]) - iiter = iiter + 1 - ENDWHILE ; End rejection iterations - IF ARG_PRESENT(usemask) THEN BEGIN - IF (nobj EQ 1) THEN usemask = outmask $ - ELSE usemask = TOTAL(outmask, 2) - ENDIF - eigenval = eigenval[0:nreturn-1] - RETURN, TRANSPOSE(pres[0:nreturn-1,*]) -END diff --git a/pro/spec1d/pca_star.pro b/pro/spec1d/pca_star.pro deleted file mode 100644 index 5878ded44..000000000 --- a/pro/spec1d/pca_star.pro +++ /dev/null @@ -1,255 +0,0 @@ -;+ -; NAME: -; pca_star -; -; PURPOSE: -; Wrapper on pca_solve.pro -; -; CALLING SEQUENCE: -; pca_star, [inputfile=inputfile], $ -; [binsz=binsz], [niter=niter], [savefile=savefile], [/flux] -; -; INPUTS: -; None -; -; OPTIONAL INPUTS: -; inputfile - File containing plate, mjd, fiber, redshift. If not -; specified, it will read eigeninput_star.par from -; $IDLSPEC2D_DIR/templates -; flux - Plot input spectra. -; niter - Number of iterations to pass to pca_solve, default 10. -; savefile - Save the input spectra to a named file for debugging. -; -; OUTPUTS: -; None, but creates the files spEigenStar-MJD.fits & spEigenStar-MJD.ps -; -; DATA FILES: -; $IDLSPEC2D_DIR/templates/eigeninput_star.dat -; -; PROCEDURES CALLED: -; get_juldate -; dfpsplot -; yanny_read -; yanny_free -; readspec -; skymask() -; wavevector() -; pca_solve() -; computechi2() -; djs_median() -; djs_plot -; djs_oplot -; djs_xyouts -; sxaddpar -; mwrfits -; dfpsclose -; -; REVISION HISTORY: -; Written a long time ago. -; Updated for BOSS inputs by B. A. Weaver, NYU -; -; VERSION: -; $Id: pca_star.pro 50208 2012-01-24 15:47:52Z weaver $ -; -;------------------------------------------------------------------------------ -PRO pca_star, inputfile=inputfile, flux=flux, niter=niter, savefile=savefile - ; - ; Define initial parameters - ; - IF ~KEYWORD_SET(inputfile) THEN BEGIN - inputfile = FILEPATH('eigeninput_star.par', $ - ROOT_DIR=GETENV('IDLSPEC2D_DIR'), SUBDIRECTORY='templates') - ENDIF - wavemin = 0 - wavemax = 0 - snmax = 100 - IF ~KEYWORD_SET(niter) THEN niter = 10 - cspeed = 2.99792458d5 - ; - ; Name the output files - ; - - get_juldate, jd - mjdstr = STRING(LONG(jd-2400000.5), FORMAT='(I5)') - outfile = 'spEigenStar-' + mjdstr + '.fits' - plotfile = 'spEigenStar-' + mjdstr + '.ps' - dfpsplot, plotfile, /color, /landscape - colorvec = ['default', 'red', 'green', 'blue', 'magenta', 'cyan'] - ; - ; Read the input spectra - ; - yanny_read, inputfile, pdat - slist = *pdat[0] - yanny_free, pdat - readspec, slist.plate, slist.fiberid, mjd=slist.mjd, $ - flux=objflux, invvar=objivar, $ - andmask=andmask, ormask=ormask, plugmap=plugmap, loglam=objloglam, /align - ; - ; Insist that all of the requested spectra exist - ; - imissing = WHERE(plugmap.fiberid EQ 0, nmissing) - IF (nmissing GT 0) THEN BEGIN - FOR i=0, nmissing-1 DO $ - PRINT, 'Missing plate=', plate[imissing[i]], $ - ' mjd=', mjd[imissing[i]], $ - ' fiber=', fiber[imissing[i]] - MESSAGE, STRING(nmissing) + ' missing object(s)' - ENDIF - ; - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - ; - objivar = skymask(objivar, andmask, ormask) - andmask = 0 ; Free memory - ormask = 0 ; Free memory - nobj = (SIZE(objflux, /dimens))[1] - objdloglam = objloglam[1] - objloglam[0] - IF (KEYWORD_SET(snmax)) THEN BEGIN - ifix = WHERE(objflux^2 * objivar GT snmax^2) - IF (ifix[0] NE -1) THEN objivar[ifix] = (snmax/objflux[ifix])^2 - ENDIF - ; - ; Find the list of unique star types - ; - isort = SORT(slist.class) - classlist = slist[isort[UNIQ(slist[isort].class)]].class - ; - ; LOOP OVER EACH STAR TYPE - ; - FOR iclass=0, N_ELEMENTS(classlist)-1 DO BEGIN - ; - ; Find the subclasses for this stellar type - ; - indx = WHERE(slist.class EQ classlist[iclass], nindx) - thesesubclass = slist[indx].subclass - isort = SORT(thesesubclass) - subclasslist = thesesubclass[isort[UNIQ(thesesubclass[isort])]] - nsubclass = N_ELEMENTS(subclasslist) - ; - ; Solve for 2 eigencomponents if we have specified subclasses - ; for this stellar type. - ; - IF (nsubclass EQ 1) THEN nkeep = 1 ELSE nkeep = 2 - newloglam = objloglam - pcaflux = pca_solve(objflux[*,indx], objivar[*,indx], objloglam, $ - slist[indx].cz/cspeed, wavemin=wavemin, wavemax=wavemax, $ - niter=niter, nkeep=nkeep, newloglam=newloglam, $ - eigenval=eigenval, acoeff=acoeff, usemask=usemask) - ; - ; Interpolate over bad flux values in the middle of a spectrum, - ; and set fluxes to zero at the blue+red ends of the spectrum. - ; - ; minuse = 1 ; ? - minuse = FLOOR((nindx+1) / 3.) - qbad = usemask LT minuse - ; - ; Interpolate over all bad pixels - ; - FOR j=0, nkeep-1 DO $ - pcaflux[*,j] = djs_maskinterp(pcaflux[*,j], qbad EQ 1, /const) - ; - ; Set bad pixels at the very start or end of the spectrum to zero instead - ; - npix = N_ELEMENTS(qbad) - IF (qbad[0]) THEN $ - pcaflux[0:(where(qbad EQ 0))[0]-1,*] = 0 - IF (qbad[npix-1]) THEN $ - pcaflux[(REVERSE(WHERE(qbad EQ 0)))[0]+1:npix-1,*] = 0 - ; - ; The following would plot the 0th object and overplot the best-fit PCA - ; - ; ii=0 - ; splot,10^newloglam,objflux[*,indx[ii]] - ; junk=pcaflux[*,0] * (acoeff[0,ii])[0] + pcaflux[*,1] * (acoeff[1,ii])[0] - ; soplot,10^newloglam,junk,color='red' - ; - ; Re-normalize the first eigenspectrum to a mean of 1 - ; - norm = MEAN(pcaflux[*,0]) - pcaflux = pcaflux / norm - acoeff = acoeff * norm - ; - ; Now loop through each stellar subclass and reconstruct - ; an eigenspectrum for that subclass - ; - thesesubclassnum = LONARR(N_ELEMENTS(thesesubclass)) - FOR isub=0, nsubclass-1 DO BEGIN - ii = WHERE(thesesubclass EQ subclasslist[isub]) - thesesubclassnum[ii] = isub - IF (nkeep EQ 1) THEN BEGIN - thisflux = pcaflux - ENDIF ELSE BEGIN - aratio = acoeff[1,ii] / acoeff[0,ii] - thisratio = MEDIAN(aratio, /EVEN) - thisflux = pcaflux[*,0] + thisratio * pcaflux[*,1] - ENDELSE - ; - ; The output wavelength mapping is the same for everything, - ; so we can simply stack the PCA spectra. - ; - IF KEYWORD_SET(fullflux) THEN fullflux = [[fullflux], [thisflux]] $ - ELSE fullflux = thisflux - IF KEYWORD_SET(namearr) THEN namearr = [namearr, subclasslist[isub]] $ - ELSE namearr = subclasslist[isub] - plotflux = thisflux / MAX(thisflux) ; Re-scale for plotting - IF (isub EQ 0) THEN $ - djs_plot, 10^newloglam, plotflux, color=colorvec[0], $ - xtitle='Wavelength [\AA]', ytitle='Flux [arbitrary units]', $ - title='STAR '+classlist[iclass]+': Eigenspectra Reconstructions' $ - ELSE $ - djs_oplot, 10^newloglam, plotflux, $ - color=colorvec[isub MOD N_ELEMENTS(colorvec)] - nnew = N_ELEMENTS(newloglam) - XYOUTS, 10^newloglam[nnew-1], plotflux[nnew-1], $ - subclasslist[isub], align=-0.5, $ - color=djs_icolor(colorvec[isub MOD N_ELEMENTS(colorvec)]) - ENDFOR - IF (nkeep GT 1) THEN BEGIN - allratio = TRANSPOSE(acoeff[1,*] / acoeff[0,*]) - isort = SORT(thesesubclassnum) - djs_plot, thesesubclassnum[isort], allratio[isort], ps=-4, $ - xrange=[-1,nsubclass], xstyle=1, xtickname=subclasslist, $ - xtickv=LINDGEN(nsubclass), xticks=nsubclass-1, $ - xtitle='Subclass', ytitle='Eigenvalue Ratio (a_1/a_0)', $ - title='STAR '+classlist[iclass]+': Eigenvalue Ratios' - FOR j=0, N_ELEMENTS(indx)-1 DO $ - XYOUTS, thesesubclassnum[isort[j]], allratio[isort[j]], $ - align=0.0, orient=45, $ - STRING(slist[indx[isort[j]]].plate, slist[indx[isort[j]]].fiberid, $ - FORMAT='(I4,"-",I3)') - ENDIF - ENDFOR - ; - ; Construct header for output file - ; - sxaddpar, hdr, 'OBJECT', 'STAR' - sxaddpar, hdr, 'COEFF0', newloglam[0] - sxaddpar, hdr, 'COEFF1', objdloglam - sxaddpar, hdr, 'IDLUTILS', idlutils_version(), 'Version of idlutils' - sxaddpar, hdr, 'SPEC2D', idlspec2d_version(), 'Version of idlspec2d' - sxaddpar, hdr, 'RUN2D', GETENV('RUN2D'), 'Version of 2d reduction' - sxaddpar, hdr, 'RUN1D', GETENV('RUN1D'), 'Version of 1d reduction' - ; - ; Add a space to the name below, so that 'F' appears as a string and - ; not as a logical. - ; - FOR i=0, N_ELEMENTS(namearr)-1 do $ - sxaddpar, hdr, 'NAME'+STRTRIM(STRING(i),2), namearr[i]+' ' - ; - ; Write output file - ; - mwrfits, FLOAT(fullflux), outfile, hdr, /create - ; - ; Create a table of inputs - ; - sxaddpar, hdr2, 'FILENAME', inputfile - inputs0 = {inputs, plate:0L, mjd:0L, fiber:0L, redshift:0.0D} - inputs = REPLICATE(inputs0,N_ELEMENTS(slist)) - inputs.plate = slist.plate - inputs.mjd = slist.mjd - inputs.fiber = slist.fiberid - inputs.redshift = slist.cz/cspeed - mwrfits, inputs, outfile, hdr2 - dfpsclose - RETURN -END -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/pca_star_boss.pro b/pro/spec1d/pca_star_boss.pro deleted file mode 100644 index beb5b7b8b..000000000 --- a/pro/spec1d/pca_star_boss.pro +++ /dev/null @@ -1,141 +0,0 @@ -; Generate both an output FITS file and a PostScript plot. -; -; Loosely based on pca_star by Schlegel (????), -; Substantially rewritten by Bolton (utah2011june) to inherit Indo-US archetype spectra, -; to do PCA of BOSS spectra for weird types not represented in Indo-US, -; and to simplify some of the pleasantries. -;------------------------------------------------------------------------------ -pro pca_star_boss, filename - -; Read in the BOSS-sampled indo-US archetype spectra -; and define the target baseline from them: -ius_fname = filepath('spArchIndoUS.fits', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='templates') - -influx = mrdfits(ius_fname,0,ius_hdr) -coeff0 = sxpar(ius_hdr, 'COEFF0') -coeff1 = sxpar(ius_hdr, 'COEFF1') -npix = sxpar(ius_hdr, 'NAXIS1') -newloglam = findgen(npix) * coeff1 + coeff0 -n_ius = sxpar(ius_hdr, 'NAXIS2') - - snmax = 100 - niter = 10 - cspeed = 2.99792458d5 - - minfrac = 0.75 ; minimum fraction of spectra contributing to a pixel - pbuff = 25 ; pixel buffer for averaging for padding value - - get_juldate, jd - mjdstr = string(long(jd-2400000L), format='(i5)') - outfile = 'spEigenStar-' + mjdstr + '.fits' - plotfile = 'spEigenStar-' + mjdstr + '.ps' - - ;---------- - ; Read the input spectra - - if (NOT keyword_set(filename)) then $ - filename = filepath('eigeninput_star_boss.dat', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='templates') - thisfile = (findfile(filename))[0] - if (NOT keyword_set(thisfile)) then begin - print, 'File not found: ' + filename - return - endif - readcol, thisfile, plate, mjd, fiberid, zstar, subclass, $ - format='L,L,L,F,A', comment='#' - - readspec, plate, fiberid, mjd=mjd, plugmap=plugmap, $ - flux=flux, invvar=invvar, loglam=loglam, andmask=andmask, ormask=ormask, /align - - ;---------- - ; Insist that all of the requested spectra exist - - imissing = where(plugmap.fiberid EQ 0, nmissing) - if (nmissing GT 0) then begin - for i=0, nmissing-1 do $ - print, 'Missing plate=', slist[imissing[i]].plate, $ - ' mjd=', slist[imissing[i]].mjd, $ - ' fiber=', slist[imissing[i]].fiberid - message, string(nmissing) + ' missing object(s)' - endif - - ;---------- - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - - invvar = skymask(invvar, andmask, ormask) - andmask = 0 ; Free memory - ormask = 0 ; Free memory - - nobj = (size(flux, /dimens))[1] - objdloglam = loglam[1] - loglam[0] - - if (keyword_set(snmax)) then begin - ifix = where(flux^2 * invvar GT snmax^2) - if (ifix[0] NE -1) then invvar[ifix] = (snmax/flux[ifix])^2 - endif - - ;---------- - ; Find the list of unique star types - - classlist = subclass[sort(subclass)] - classlist = classlist[uniq(classlist)] - -; How many classes are there? -nclass = n_elements(classlist) - -; Array to hold the new templates: -tflux = fltarr(npix, nclass) - - ;---------- - ; LOOP OVER EACH STAR TYPE - - for iclass=0, n_elements(classlist)-1 do begin - - ;---------- - ; Find the examples of this stellar type - - indx = where(subclass EQ classlist[iclass], nindx) - -; Do the PCA: - pcaflux = pca_solve(flux[*,indx], invvar[*,indx], loglam, $ - zstar[indx], niter=niter, usemask=usemask, $ - newloglam=newloglam, nkeep=1, nreturn=1) - -; Pad the cruddy bits by hand: - minuse = round(minfrac * nindx) - wh_use = where(usemask ge minuse) - umax = max(wh_use) - umin = min(wh_use) - hi_mean = mean(pcaflux[umax-pbuff+1:umax]) - lo_mean = mean(pcaflux[umin:umin+pbuff-1]) - pcaflux[0:umin-1] = lo_mean - pcaflux[umax+1:npix-1] = hi_mean - -; Assign to output array: - - tflux[*,iclass] = pcaflux - - endfor - - ;---------- - ; Construct header for output file - -hdr = ius_hdr -sxdelpar, hdr, 'NAXIS1' -sxdelpar, hdr, 'NAXIS2' -for i = 0L, nclass-1 do sxaddpar, hdr, 'NAME'+strtrim(string(i)+n_ius,2), classlist[i], $ - 'BOSS PCA template' - -; Concatenate output arrays: -outflux = [[influx], [tflux]] -n_out = (size(outflux))[2] - -; Normalize to have average flux of unity in each spectrum: -for i = 0L, n_out-1 do outflux[*,i] = outflux[*,i] / mean(outflux[*,i]) - - mwrfits, float(outflux), outfile, hdr, /create - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/pca_vstnd.pro b/pro/spec1d/pca_vstnd.pro deleted file mode 100644 index 289184746..000000000 --- a/pro/spec1d/pca_vstnd.pro +++ /dev/null @@ -1,56 +0,0 @@ -;------------------------------------------------------------------------------ -pro pca_vstnd - -; wavemin = 3300 -; wavemax = 8800 - snmax = 100 - niter = 10 - nkeep = 2 - - get_juldate, jd - mjdstr = string(long(jd-2400000L), format='(i5)') - outfile = 'spEigenVstnd-' + mjdstr + '.fits' - - ;---------- - ; Read the input spectra - - eigenfile = filepath('eigeninput_vstnd.dat', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='templates') - djs_readcol, eigenfile, skip=2, plate, mjd, fiber, zfit, format='(L,L,L,D)' - - readspec, plate, fiber, mjd=mjd, flux=objflux, invvar=objivar, $ - andmask=andmask, ormask=ormask, plugmap=plugmap, loglam=objloglam - - ;---------- - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - - objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - - nobj = (size(objflux, /dimens))[1] - objdloglam = objloglam[1] - objloglam[0] - - if (keyword_set(snmax)) then begin - ifix = where(objflux^2 * objivar GT snmax^2) - if (ifix[0] NE -1) then objivar[ifix] = (snmax/objflux[ifix])^2 - endif - - ;---------- - - pcaflux = pca_solve(objflux, objivar, objloglam, zfit, $ - wavemin=wavemin, wavemax=wavemax, $ - niter=niter, nkeep=nkeep, newloglam=newloglam, eigenval=eigenval) - pcaflux = float(pcaflux) - - sxaddpar, hdr, 'OBJECT', 'VELOCITY_STANDARD' - sxaddpar, hdr, 'COEFF0', newloglam[0] - sxaddpar, hdr, 'COEFF1', objdloglam - for i=0, n_elements(eigenval)-1 do $ - sxaddpar, hdr, 'EIGEN'+strtrim(string(i),1), eigenval[i] - - mwrfits, pcaflux, outfile, hdr, /create - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/plate_spec_image.pro b/pro/spec1d/plate_spec_image.pro deleted file mode 100644 index 24eaf8816..000000000 --- a/pro/spec1d/plate_spec_image.pro +++ /dev/null @@ -1,121 +0,0 @@ -;+ -; NAME: -; plate_spec_image -; PURPOSE: -; Create spectroscopic images for a plate -; CALLING SEQUENCE: -; plate_spec_image, plate, mjd=, run2d=, run1d=, topdir= -; INPUTS -; plate - plate # -; mjd - MJD of observation -; OPTIONAL INPUTS: -; run1d - 1d rerun number ('' by default) -; run2d - 2d rerun number ('' by default) -; topdir - directory to use instead of $BOSS_SPECTRO_REDUX -; xra - [2] wavelength range to plot (Ang) -; OPTIONAL KEYWORDS: -; /noclobber - do not clobber existing image PNG files -; (will clobber HTML) -; COMMENTS: -; Creates files in: -; $BOSS_SPECTRO_REDUX/images/[run2d]/[run1d]/[plate4]-[mjd] -; with the naming convention: -; spec-image-[plate4]-[mjd]-[fiber4].png -; spec-image-[plate4]-[mjd]-[fiber4].thumb.png -; Also creates an index.html file which is just a table of -; the thumbnails. -; REVISION HISTORY: -; 15-May-2009 by M. Blanton, NYU -; VERSION: -; $Id: plate_spec_image.pro 64936 2015-09-21 18:50:32Z julianbautista $ -;------------------------------------------------------------------------------ -pro plate_spec_image, plate, mjd=mjd, run2d=run2d, run1d=run1d, $ - topdir=topdir, xra=xra, silent=silent, $ - noclobber=noclobber, legacy=legacy, plates=plates - - RESOLVE_ALL, /QUIET, /SKIP_EXISTING, /CONTINUE_ON_ERROR - CPU, TPOOL_NTHREADS = 1 - -if(NOT keyword_set(run2d)) then run2d='' -if(NOT keyword_set(run1d)) then run1d='' -if(NOT keyword_set(topdir)) then topdir= getenv('BOSS_SPECTRO_REDUX') - - -get_field_type, fieldid=plate, mjd=mjd, legacy=legacy, plates=plates, fps=fps - -pmjd=field_to_string(plate)+'-'+string(mjd, f='(i5.5)') -outdir=topdir+'/images/'+run2d+'/'+run1d+'/'+pmjd -file_mkdir, outdir -readspec, plate, mjd=mjd, zans=zans, run2d=run2d, run1d=run1d, $ - topdir=topdir,legacy=legacy,plates=plates, plug=plug - -if(n_tags(zans) eq 0) then begin - splog, 'No 1d reductions for this plate.' - return -endif - -if file_test(outdir+'/index.html') then rmfile, outdir+'/index.html' -openw, unit, outdir+'/tmp-index.html', /get_lun -printf, unit, '' -printf, unit, '' -; printf, unit, '' -printf, unit, '' -printf, unit, '' -printf, unit, '' -printf, unit, ''+pmjd+'' -printf, unit, '' -; printf, unit, '' -printf, unit, '' -printf, unit, '' -printf, unit, '' -nper=5L -for i=0L, n_elements(zans)-1L do begin - if((i mod nper) eq 0) then $ - printf, unit, '' - fiber=zans[i].target_index - ra=zans[i].fiber_ra - dec=zans[i].fiber_dec - if keyword_set(legacy) then begin - pmjdf= pmjd+'-'+string(f='(i4.4)', fiber) - endif else begin - if keyword_set(plates) then begin - catalogid=plug[i].catalogid - if catalogid eq 0 then begin - pmjdf= pmjd+'-'+strtrim(fiber,2) - endif else begin - pmjdf= pmjd+'-'+strtrim(string(catalogid),2) - endelse - endif else begin - catalogid=plug[i].catalogid - pmjdf=pmjd+'-'+strtrim(string(catalogid),2) - endelse - endelse - stamp='http://skyserver.sdss.org/dr16/SkyServerWS/ImgCutout/getjpeg?TaskName=Skyserver.Chart.Image&ra='+strtrim(string(f='(f40.5)', ra),2)+'&dec='+strtrim(string(f='(f40.5)', dec),2)+'&scale=0.1&width=512&height=512&opt=G&query=&Grid=on' - currbase='spec-image-'+pmjdf - outbase=outdir+'/'+currbase - msg='plotting target_indx:'+strtrim(fiber,2) - if not keyword_set(legacy) then msg+=' catalogid:'+strtrim(catalogid,2) - msg+= ' ('+strtrim(i+1,2)+'/'+strtrim(n_elements(zans),2)+')' - splog, msg - sdss_spec_image, outbase, plate, fiber, mjd=mjd, $ - run2d=run2d, run1d=run1d, topdir=topdir, xra=xra, silent=silent, $ - noclobber=noclobber, legacy=legacy, plates=plates - printf, unit, '' - if(((i mod nper) eq nper-1L) OR (i eq n_elements(zans)-1L)) then $ - printf, unit, '' -endfor -printf, unit, '
    '+pmjdf+ $ - '
    ' - printf, unit, ''+pmjdf+'' - printf, unit, '
    ' -printf, unit, '' -printf, unit, '' -close, unit -free_lun, unit -file_move, outdir+'/tmp-index.html', outdir+'/index.html', /overwrite, /verbose -return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/platecompare.pro b/pro/spec1d/platecompare.pro deleted file mode 100644 index b9d235df6..000000000 --- a/pro/spec1d/platecompare.pro +++ /dev/null @@ -1,246 +0,0 @@ -;+ -; NAME: -; platecompare -; -; PURPOSE: -; Interactive comparison of descrepant redshifts for the same objects. -; -; CALLING SEQUENCE: -; platecompare, plate, [mjd=, run2d=, run1d=, psfile= ] -; -; INPUTS: -; plate - Plate number(s) -; -; OPTIONAL INPUTS: -; mjd - MJD for each plate number. If specified, then this -; must have one MJD per plate number. If not specified, -; then all MJD's associated with each plate are read. -; That list of MJD's comes from the PLATELIST command. -; run2d - Names of 2D reductions if comparing different versions -; of the same data. -; run1d - Names of 1D redutions if comparing different versions -; of the same data; must have same number of elements as RUN2D; -; if not set, then default to the same versions as RUN2D -; psfile - If set, then send plot to a PostScript file instead of -; to the SPLOT interactive widget. The PostScript file name -; can be set explicitly, e.g. with PSFILE='test.ps'. Or if -; you simply set this as a flag, e.g. with /PSFILE, then the -; default file name is platecompare-pppp.ps, -; where pppp is the first plate number. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Duplicate objects are found by matching positions to within 1 arcsec. -; -; Plot any objects that show a descrepency in redshifts between any -; of the observations, or any objects that have ZWARNING set to zero -; in one observation and non-zero in another. -; -; EXAMPLES: -; Compare data from different pluggings of the same plate: -; IDL> platecompare, [406,406,406], mjd=[51817,51869,51876] -; -; Compare date from two plates, 360 and 362, which are actually the -; same tile on the sky: -; IDL> platecompare, [360,360,362], mjd=[51780,51816,51999] -; -; Compare different reductions of the same data, in this case plate 401/51788: -; IDL> platecompare, 401, mjd=51788, run2d=['v5_4_14','v5_4_30'], $ -; run1d=['v5_4_14','v5_4_30'] -; -; BUGS: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_angle_group -; djs_icolor() -; djs_oplot -; djs_plot -; platelist -; readspec -; sdss_flagname() -; struct_append() -; -; REVISION HISTORY: -; 14-Aug-2001 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -pro platecompare, plate, mjd=mjd, run2d=run2d, run1d=run1d1, psfile=psfile - - if (n_params() LT 1) then begin - print, 'Syntax - platecompare, plate, [mjd= ]' - return - endif - - charsize = 1.5 - - if (keyword_set(run2d)) then begin - if (keyword_set(run1d1)) then run1d = run1d1 $ - else run1d = run2d - if (n_elements(run2d) NE n_elements(run1d)) then $ - message, 'Number of elements in RUN2D and RUN1D must agree!' - endif - - - if (keyword_set(mjd)) then begin - if (n_elements(plate) EQ 1) then begin - platevec = replicate(plate, n_elements(mjd)) - endif else if (n_elements(mjd) NE n_elements(plate)) then begin - print, 'Number of elements in PLATE and MJD do not agree.' - return - endif else begin - platevec = plate - endelse - mjdvec = mjd - endif else begin - for iplate=0, n_elements(plate)-1 do begin - platelist, plist=plist - ii = where(plist.plate EQ plate[iplate], ni) - if (ni GT 0) then begin - if (NOT keyword_set(platevec)) then $ - platevec = replicate(plate[iplate],ni) $ - else $ - platevec = [platevec, replicate(plate[iplate],ni)] - if (NOT keyword_set(mjdvec)) then mjdvec = plist[ii].mjd $ - else platevec = [platevec, plist[ii].mjd] - endif - endfor - if (NOT keyword_set(platevec)) then begin - print, 'No matches found for plate ', plate - return - endif - endelse - - cspeed = 2.99792458e5 - - ; Read the redshift files - if (NOT keyword_set(run2d)) then begin - readspec, platevec, mjd=mjdvec, zans=zansall, plug=plugall - endif else begin - for itop=0, n_elements(run2d)-1 do begin - readspec, platevec, mjd=mjdvec, zans=zans1, plug=plug1, $ - run2d=run2d[itop], run1d=run1d[itop] - zansall = struct_append(zansall, zans1) - plugall = struct_append(plugall, plug1) - if (itop EQ 0) then begin - all2d = replicate(run2d[itop], n_elements(zans1)) - all1d = replicate(run1d[itop], n_elements(zans1)) - endif else begin - all2d = [all2d, replicate(run2d[itop], n_elements(zans1))] - all1d = [all1d, replicate(run1d[itop], n_elements(zans1))] - endelse - endfor - endelse - - if (NOT keyword_set(zansall)) then begin - print, 'Data not found for plate ', platevec[0], ' MJD=', mjdvec[0] - return - endif - - ; Group duplicate objects together - ngroup = djs_angle_group(zansall.plug_ra, zansall.plug_dec, 1./3600., $ - gstart=gstart, gcount=gcount, gindx=gindx) - print, 'Number of duplicate objects: ', ngroup - if (ngroup EQ 0) then return - - ; Open the PostScript file - if (keyword_set(psfile)) then begin - if (size(psfile,/tname) EQ 'STRING') then psfilename = psfile $ - else psfilename = string(plate_to_string(platevec[0]), $ - format='("platecompare-",a,".ps")') - dfpsplot, psfilename, /color - endif - - for igroup=0, ngroup-1 do begin - thiszans = zansall[gindx[gstart[igroup]:gstart[igroup]+gcount[igroup]-1]] - thisplug = plugall[gindx[gstart[igroup]:gstart[igroup]+gcount[igroup]-1]] - if (keyword_set(run2d)) then begin - thisr2d = all2d[gindx[gstart[igroup]:gstart[igroup]+gcount[igroup]-1]] - thisr1d = all1d[gindx[gstart[igroup]:gstart[igroup]+gcount[igroup]-1]] - endif - - vdiff = (max(thiszans.z) - min(thiszans.z)) * cspeed - totalwarn = total(thiszans.zwarning NE 0) - vbad = ((vdiff GT 250.) AND strmatch(thiszans[0].class,'GALAXY*')) $ - OR ((vdiff GT 500.) AND strmatch(thiszans[0].class,'QSO*')) $ - OR ((vdiff GT 50.) AND strmatch(thiszans[0].class,'STAR*')) $ - OR (totalwarn NE 0 AND totalwarn NE n_elements(thiszans)) - vbad = vbad AND ((thiszans[0].zwarning AND 1) EQ 0) ; Not SKY fiber - - xrange = [3600, 9300] - textcolor = 'green' - - if (vbad) then begin - !p.multi = [0, 1, gcount[igroup]] - if (thiszans[0].sn_median[2] LT 1) then nsmooth = 7 $ - else if (thiszans[0].sn_median[2] LT 3) then nsmooth = 5 $ - else if (thiszans[0].sn_median[2] LT 5) then nsmooth = 3 $ - else nsmooth = 1 - - for ii=0, gcount[igroup]-1 do begin - primtarget = sdss_flagname('TARGET', thisplug[ii].primtarget, $ - /concat) - sectarget = sdss_flagname('TTARGET', thisplug[ii].sectarget, $ - /concat) - title = string(plate_to_string(thiszans[ii].plate), thiszans[ii].mjd, $ - thiszans[ii].fiberid, $ - format='("Plate ", a, "-", i5, " Fiber ", i3)') - ; Replace undescores with double-underscores that will - ; survive the conversion to TeX in DJS_PLOT - if (keyword_set(run2d)) then $ - title = title + ' ' + repstr(thisr2d[ii],'_','__') $ - + ' ' + repstr(thisr1d[ii],'_','__') - cz = thiszans[ii].z * cspeed - zstring = string(strtrim(thiszans[ii].class), $ - strtrim(' '+thiszans[ii].subclass), $ - format='(a, a)') - if (abs(cz) LT 3000) then $ - zstring = zstring + string(cz, format='(" z=", f6.0)') + ' km/s' $ - else $ - zstring = zstring + string(thiszans[ii].z, format='(" z=", f8.5)') - if (thiszans[ii].zwarning NE 0) then $ - zstring = zstring + $ - ' ZWARNING=' + strtrim(string(thiszans[ii].zwarning),2) - print, zstring - if (keyword_set(run2d)) then read2d = thisr2d[ii] $ - else read2d = 0 - if (keyword_set(run2d)) then read1d = thisr1d[ii] $ - else read1d = 0 - readspec, thiszans[ii].plate, thiszans[ii].fiberid, $ - mjd=thiszans[ii].mjd, wave=wave, flux=objflux, synflux=synflux, $ - run2d=read2d, run1d=read1d - ytitle = 'F_\lambda' - if (nsmooth GT 1) then begin - objflux = smooth(objflux, nsmooth) - synflux = smooth(synflux, nsmooth) - ytitle = ytitle $ - + string(nsmooth, format='(" (nsmooth=", i2, ")")') - endif - yrange = minmax(synflux) - if (yrange[0] EQ yrange[1]) then yrange = minmax(objflux) - ymin = (1.2 * yrange[0] - 0.2 * yrange[1]) < 0 - ymax = -0.2 * yrange[0] + 1.2 * yrange[1] - if (ymax EQ ymin) then ymax = ymin + 1 - yrange = [ymin, ymax] - djs_plot, wave, objflux, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=zstring, ytitle=ytitle, title=title, charsize=charsize - djs_oplot, wave, synflux, color='blue' - xpos = 0.95 * !x.crange[0] + 0.05 * !x.crange[1] - ypos = 0.08 * !y.crange[0] + 0.92 * !y.crange[1] - xyouts, xpos, ypos, primtarget+' '+sectarget, $ - color=djs_icolor(textcolor), charsize=charsize - endfor - if (NOT keyword_set(psfile)) then $ - cc = strupcase(get_kbrd(1)) - endif - endfor - - if (keyword_set(psfile)) then dfpsclose - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/platehist.pro b/pro/spec1d/platehist.pro deleted file mode 100644 index 94eb44ebe..000000000 --- a/pro/spec1d/platehist.pro +++ /dev/null @@ -1,81 +0,0 @@ -; Make a plot of the number of spectra as a function of time (MJD) -pro platehist - - platelist, plist=plist - - ; The following trims to all survey quality data, including repeats - plist = plist[ where(strmatch(plist.platequality,'good*') $ - OR strmatch(plist.platequality,'marginal*')) ] - - nbin = max(plist.mjd)-min(plist.mjd)+1 - mjdvec = min(plist.mjd) + lindgen(nbin) - totvec = lonarr(nbin) - galvec = lonarr(nbin) - qsovec = lonarr(nbin) - starvec = lonarr(nbin) - skyvec = lonarr(nbin) - unkvec = lonarr(nbin) -; for i=0, nbin-1 do $ -; totvec[i] = total(640 - plist[where(plist.mjd LE mjdvec[i])].n_sky) - for i=0, nbin-1 do $ - totvec[i] = total(640 * n_elements(where(plist.mjd LE mjdvec[i]))) - for i=0, nbin-1 do $ - galvec[i] = total(plist[where(plist.mjd LE mjdvec[i])].n_galaxy) - for i=0, nbin-1 do $ - qsovec[i] = total(plist[where(plist.mjd LE mjdvec[i])].n_qso) - for i=0, nbin-1 do $ - starvec[i] = total(plist[where(plist.mjd LE mjdvec[i])].n_star) - for i=0, nbin-1 do $ - skyvec[i] = total(plist[where(plist.mjd LE mjdvec[i])].n_sky) - for i=0, nbin-1 do $ - unkvec[i] = total(plist[where(plist.mjd LE mjdvec[i])].n_unknown) - - mjd2datelist, min(mjdvec), max(mjdvec), step='year', $ - mjdlist=mjdlist, datelist=datelist - - csize = 1.6 - - dfpsplot, 'platehist.ps', /color, /square - djs_plot, minmax(mjdlist), minmax(totvec), /nodata, charsize=csize, $ - xtickformat='(i10)', /xstyle, $ - xtitle='Modified Julian Date', ytitle='Cumulative Number', $ - title='SDSS Survey Quality Spectra' - djs_oplot, mjdvec, totvec, psym=10 - djs_oplot, mjdvec, galvec, psym=10, color='red' - djs_oplot, mjdvec, qsovec, psym=10, color='green' - djs_oplot, mjdvec, starvec, psym=10, color='blue' - djs_oplot, mjdvec, skyvec, psym=10, color='magenta' - djs_oplot, mjdvec, unkvec, psym=10, color='yellow' - - xyouts, mjdvec[nbin-1], totvec[nbin-1], $ - string(totvec[nbin-1], format='("Total (",i6,")")'), $ - charsize=csize, align=0.5 - xyouts, mjdvec[nbin-1], galvec[nbin-1], $ - string(galvec[nbin-1], format='("Galaxies (",i6,")")'), $ - charsize=csize, align=0.5 - xyouts, mjdvec[nbin-1], qsovec[nbin-1], $ - string(qsovec[nbin-1], format='("QSOs (",i6,")")'), $ - charsize=csize, align=0.5 - xyouts, mjdvec[nbin-1], starvec[nbin-1], $ - string(starvec[nbin-1], format='("Stars (",i6,")")'), $ - charsize=csize, align=0.5 - xyouts, mjdvec[nbin-1], skyvec[nbin-1], $ - string(skyvec[nbin-1], format='("Sky (",i6,")")'), $ - charsize=csize, align=0.5 - xyouts, mjdvec[nbin-1], unkvec[nbin-1], $ - string(unkvec[nbin-1], format='("Unclassified (",i6,")")'), $ - charsize=csize, align=0.5 - - for i=0, n_elements(mjdlist)-1 do begin - if (i NE 0 AND i NE n_elements(mjdlist)-1) then $ - djs_oplot, [mjdlist[i],mjdlist[i]], !y.crange, linestyle=1 - xoff = 0.02 * (!x.crange[1] - !x.crange[0]) - xplot = mjdlist[i] + 2*xoff - xyouts, xplot, total(!y.crange * [0.60,0.40]), $ - datelist[i], orient=90, charsize=csize, align=0.5 - endfor - - dfpsclose - - return -end diff --git a/pro/spec1d/platelinks.pro b/pro/spec1d/platelinks.pro deleted file mode 100644 index ef93e3d02..000000000 --- a/pro/spec1d/platelinks.pro +++ /dev/null @@ -1,119 +0,0 @@ -;+ -; NAME: -; platelinks -; -; PURPOSE: -; Build links from another directory to the spectroscopic output files. -; -; CALLING SEQUENCE: -; platelinks, outdir, [ public= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; outdir - Directory in which to build all links. These links are -; built to the files in $BOSS_SPECTRO_REDUX. -; public - If set with /PUBLIC, then build links to any files with -; anything in the PUBLIC field of the plate list. -; If set to a string, then select those plates that contain -; the substring PUBLIC within their PUBLIC field. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; IDL> platelinks, '/u/schlegel/spectro_EDR', public='EDR' -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; djs_filepath() -; fileandpath() -; platelist -; splog -; -; REVISION HISTORY: -; 21-Jan-2003 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -pro platelinks, outdir, public=public - - indir = getenv('BOSS_SPECTRO_REDUX') - if (NOT keyword_set(outdir)) then begin - splog, 'OUTDIR must be specified' - return - endif - - ;---------- - ; Get the list of plates - - platelist, plist=plist - if (NOT keyword_set(plist)) then begin - splog, 'No plates in platelist file' - return - endif - - if (keyword_set(public)) then begin - if (size(public,/tname) EQ 'STRING') then begin - itrim = where(strmatch(plist.public,'*'+public+'*'), nplate) - sumfiles = ['spAll-'+public+'.fits', 'spAll-'+public+'.dat', $ - 'spAllLine-'+public+'.fits'] - endif else begin - itrim = where(strtrim(plist.public) NE '', nplate) - sumfiles = ['spAll-public.fits', 'spAll-public.dat', $ - 'spAllLine-public.fits'] - endelse - if (nplate EQ 0) then begin - splog, 'No plates matching PUBLIC keyword' - return - endif - plist = plist[itrim] - endif else begin - sumfiles = ['spAll.fits', 'spAll.dat', 'spAllLines.dat'] - endelse - - ;---------- - ; Build links to the summary files - - for ifile=0, n_elements(sumfiles)-1 do begin - file1 = djs_filepath(sumfiles[ifile], root_dir=indir) - file2 = djs_filepath(sumfiles[ifile], root_dir=outdir) - junk = findfile(file1, count=ct) - if (ct GT 0) then begin - junk = fileandpath(file2, path=thisdir) - spawn, ['mkdir', '-p', thisdir] - spawn, ['ln', '-s', file1, file2] - endif - endfor - - ;---------- - ; Loop over each plate, and build links - - nplate = n_elements(plist) - for iplate=0, nplate-1 do begin - platestr = plate_to_string(plist[iplate].plate) - mjdstr = string(plist[iplate].mjd, format='(i5.5)') - files = [ $ - 'spPlate-'+platestr+'-'+mjdstr+'.fits', $ - 'spZbest-'+platestr+'-'+mjdstr+'.fits', $ - 'spZline-'+platestr+'-'+mjdstr+'.fits', $ - 'spZall-'+platestr+'-'+mjdstr+'.fits' ] - for ifile=0, n_elements(files)-1 do begin - file1 = djs_filepath(files[ifile], root_dir=indir, subdir=platestr) - file2 = djs_filepath(files[ifile], root_dir=outdir, subdir=platestr) - junk = findfile(file1, count=ct) - if (ct GT 0) then begin - junk = fileandpath(file2, path=thisdir) - spawn, ['mkdir', '-p', thisdir], /noshell - spawn, ['ln', '-s', file1, file2], /noshell - endif - endfor - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/platelist.pro b/pro/spec1d/platelist.pro deleted file mode 100644 index 4788bc1bf..000000000 --- a/pro/spec1d/platelist.pro +++ /dev/null @@ -1,1172 +0,0 @@ -;+ -; NAME: -; platelist -; -; PURPOSE: -; Make list of reduced plates -; -; CALLING SEQUENCE: -; platelist, [ /create, topdir=, outdir=, run2d=, run1d=, $ -; /purge2d, /purge1d, /killpartial, skipcart=, /rawsn2, plist= ] -; -; INPUTS -; -; OPTIONAL INPUTS: -; create - If set, then re-generate the "platelist.fits" file; -; if not set, then simply read this file from a previous call. -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; outdir - Optional override of both topdir and $BOSS_SPECTRO_REDUX -; for output directory location -; run2d - Optional RUN2D subdirectories to include in outputs; -; set to '' to not search subdirectories; -; set to '*' to search all subdirs; default to $RUN2D -; run1d - Optional RUN1D subdirectories to include in outputs -; set to '' to not search subdirectories; -; set to '*' to search all subdirs; default to $RUN1D -; purge2d - If set, then delete all log files for plates that are -; considered to be 'RUNNING', but not those that are 'Done', -; 'Pending' or 'FAILED'. Those plates are then listed as -; 'Pending'. Setting /PURGE2D also sets /CREATE. -; Deleting these log files will cause the next invocation -; of BATCH2D to re-reduce those plates. -; purge1d - If set, then delete all log files for plates that are -; considered to be 'RUNNING', but not those that are 'Done', -; 'Pending' or 'FAILED'. Those plates are then listed as -; 'Pending'. Setting /PURGE1D also sets /CREATE. -; Deleting these log files will cause the next invocation -; of BATCH1D to re-reduce those plates. -; killpartial - If set, then delete all files associated with a combine -; of only some nights of a multi-night plate. Such files -; can be produced by the Spectro-Robot when it fully reduces -; data from one night, but then more data is obtained for -; that plugging of the same plate on a later date. This -; deletes spPlate and spZ files and their logs files. -; skipcart - cart number or list of cart numbers to drop from platelist -; rawsn2 - If set, output original raw SN2 numbers in html and text -; files; otherwise use dereddened (dust extinction corrected) -; values. Both are always written to the FITS file output. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; plist - Output structure with information for each plate. -; -; COMMENTS: -; RUN2D: If option isn't set, use $RUN2D env var -; RUN2D/RUN1D = '*' means seach all subdirs -; Output directory: -; If OUTDIR is set, use that. -; Otherwise, if a single RUN2D is given, use $BOSS_SPECTRO_REDUX/[RUN2D]/ -; --> Note: RUN2D option, not $RUN2D environment variable -; Otherwise (none or multiple RUN2D), use $BOSS_SPECTRO_REDUX/ -; Option TOPDIR can override the value of $BOSS_SPECTRO_REDUX -; in the above, but it won't override OUTDIR -; -; TOPDIR is used to override $BOSS_SPECTRO_REDUX for both input and -; output. OUTDIR can be used to override TOPDIR for output if you want -; to get input from one dir while writing output to a different dir. -; -; The following files are generated in the output directory -; platelist.fits -; platelist.txt -; platelist.html -; platelist-mjdsort.txt -; platelist-mjdsort.html -; platequality.txt -; platequality.html -; platequality-mjdsort.txt -; platequalitymjdsort.html -; -; If INFILE is a list of plan files, i.e. -; spPlancomb-0306-51690.par -; then look for the following files for the 2D reductions: -; spPlancomb-0306-51690.par -; spDiagcomb-0306-51690.log -; spPlan2d-0306-51690.par (as specified by 'planfile2d' in spPlancomb) -; spDiag2d-0306-51690.log -; spPlate-0306-51690.fits (as specified by 'combinefile' in spPlancomb) -; and look for the following files for the 1D reductions: -; spPlan1d-0306-51690.par -; spZbest-0306-51690.fits -; spDiag1d-0306-51690.log -; -; PLATESN2 is set to the minimum of the 4 cameras. -; DEREDSN2 like PLATESN2, but with dereddened SN2 values -; PLATEQUALITY defaults to 'good'. -; PLATEQUALITY is set to 'bad' if MINSN2(B) < 10.0 or MINSN2(R) < 22.0 -; --> previously if MINSN2 < 13.0 -; PLATEQUALITY is set to 'bad' if FBADPIX > 0.10 -; PLATEQUALITY is set to 'bad' if min(NEXP_*) < 3 -; -; Decide which plates constitute unique tiles with the required S/N, -; then set QSURVEY=1. Require PLATEQUALITY='good'. -; Also require PROGNAME='main'. -; -; EXAMPLES: -; -; BUGS: -; Spawns the Unix commands 'tail' and 'grep', which is very slow. -; If the spPlate file is missing, it doesn't try to figure out which -; cart it really is and thus ignores skipcart -; -; DATA FILES: -; $PLATELIST_DIR/platePlans.par -; $SPECLOG_DIR/opfiles/spPlateList.par -; -; PROCEDURES CALLED: -; apo_checklimits() -; chunkinfo() -; copy_struct_inx -; djs_diff_angle() -; djs_filepath() -; fileandpath() -; headfits() -; mrdfits() -; repstr() -; rmfile -; splog -; struct_print -; sxpar() -; tai2airmass() -; yanny_free -; yanny_par() -; yanny_read -; yanny_readone() -; -; INTERNAL SUPPORT ROUTINES: -; platelist_write -; -; REVISION HISTORY: -; 29-Oct-2000 Written by D. Schlegel, Princeton -; 11-Jan-2011 Stephen Bailey, LBNL -; * Updated (S/N)^2 thresholds for "bad" -; * Added get_lastline to be faster than spawn tail -1 -; 21-Aug-2012 Stephen Bailey, LBNL -; * Changed default output directory to RUN2D -;------------------------------------------------------------------------------ - -;---------- -; get lastline of a file faster than spawning 'tail -1' -function get_lastline, filename - ;;; spawn, 'tail -1 '+filename, lastline - - openr, ilun, filename, /get_lun - lastline = '' - while (NOT eof(ilun)) do begin - readf, ilun, lastline - endwhile - close, ilun - free_lun, ilun - - return, lastline -end - -pro platelist_write, plist, trimtags=trimtags, alias=alias, $ - fileprefix=fileprefix, title=title, toptext=toptext, outdir=outdir1 - - if (keyword_set(outdir1)) then begin - outdir = outdir1 - endif else begin - outdir = getenv('BOSS_SPECTRO_REDUX') - endelse - - ascfile = djs_filepath(fileprefix+'.txt', root_dir=outdir) - htmlfile = djs_filepath(fileprefix+'.html', root_dir=outdir) - - trimdat = struct_trimtags(plist, select_tags=trimtags[0,*]) - trimstring = struct_trimtags(plist, select_tags=trimtags[0,*], $ - format=trimtags[1,*]) - struct_print, trimstring, filename=ascfile, fdigit=3, alias=alias - - for itag=0L, n_tags(trimdat)-1L do begin - for iarr=0L, n_elements(trimdat[0].(itag))-1L do begin - for irow=0L, n_elements(trimdat)-1L do begin - markstring = apo_checklimits('SUMMARY', $ - strupcase(trimtags[0,itag]), '', $ - trimdat[irow].(itag)[iarr], /html) - trimstring[irow].(itag)[iarr] = markstring $ - + trimstring[irow].(itag)[iarr] - if strmatch(markstring,'' - endfor - endfor - endfor - struct_print, trimstring, /html, alias=alias, tarray=tarray, css=css - openw, lun, htmlfile, /get_lun - printf, lun, '' - printf, lun, '' - printf, lun, '' - printf, lun, '' - printf, lun, '' + title + '' - printf, lun, '' - for c=0L, n_elements(css)-1L do $ - printf, lun, css[c] - printf, lun, '' - printf, lun, '' - printf, lun, '

    ' + title + '

    ' - for i=0L, n_elements(toptext)-1L do $ - printf, lun, toptext[i] - -; for iline=0, n_elements(tarray)-1 do $ -; printf, lun, tarray[iline] - ifirst = where(plist.run2d NE shift(plist.run2d,1)) - for i=0, 2 do printf, lun, tarray[i] - for iline=0L, n_elements(plist)-1L do begin - ; Make a new html table for each new RUN2D - if (iline NE 0 AND total(iline EQ ifirst) NE 0) then $ - printf, lun, tarray[1] - printf, lun, tarray[3+iline] - endfor - printf, lun, '' - - printf, lun, '' - printf, lun, '' - close, lun - free_lun, lun - - return -end -;------------------------------------------------------------------------------ -pro platelist, plist=plist, create=create, $ - topdir=topdir1, outdir=outdir1, $ - run2d=run2d1, run1d=run1d1, $ - purge2d=purge2d, purge1d=purge1d, killpartial=killpartial, $ - skipcart=skipcart, rawsn2=rawsn2, plates=plates - - if (n_elements(run2d1) GT 0) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - - if (n_elements(run1d1) GT 0) then begin - run1d = strtrim(run1d1,2) - endif else begin - if (n_elements(run2d1) EQ 1) then begin - run1d = run2d - endif else begin - if (n_elements(run2d) GT 1) then begin - run1d = '*' - endif else begin - run1d = getenv('RUN1D') - endelse - endelse - endelse - - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - - if (keyword_set(outdir1)) then begin - outdir = outdir1 - if strmid(outdir, 0, 1) NE '/' then begin - cd, current=current_dir - outdir = current_dir + '/' + outdir - endif - endif else begin - ; If exactly one run2d is given, use that subdir - if (n_elements(run2d) EQ 1) && (run2d NE '*') then $ - outdir = topdir + '/' + run2d $ - else $ - outdir = topdir - endelse - - if keyword_set(skipcart) then begin - splog, 'WARNING: Dropping plates from carts', skipcart - endif - - ;---------- - ; If the /CREATE flag is not set, and the platelist file already exists - ; on disk, then simply return the info in that file. - - fitsfile = djs_filepath('platelist.fits', root_dir=outdir) - - if (NOT keyword_set(create) AND NOT keyword_set(purge2d) $ - AND NOT keyword_set(purge1d)) then begin - thisfile = (findfile(fitsfile))[0] - if (keyword_set(thisfile)) then begin - plist = mrdfits(thisfile, 1, /silent) - return - endif - endif - - ;---------- - ; Generate the list of plan files or plate files if not specified - - fitsfile = djs_filepath('platelist.fits', root_dir=outdir) - - if (keyword_set(run2d)) then $ - run2dlist = get_mjd_dir(topdir, mjd=run2d, /alldirs) $ - else $ - run2dlist = '' - - for j=0L, n_elements(run2dlist)-1L do begin - if (keyword_set(run2dlist[j])) then $ - thisdir = djs_filepath('', root_dir=topdir, subdir=run2dlist[j]) $ - else $ - thisdir = topdir - if not keyword_set(plates) then $ - dirlist = get_mjd_dir(thisdir, mjstart=1, mjend=999999) $ - else $ - dirlist = plate_to_string(plates) - if (keyword_set(dirlist)) then begin - for i=0L, n_elements(dirlist)-1L do begin - ; Select only those files matching the plate of the directory - thisfile = findfile(djs_filepath('spPlancomb-'+dirlist[i]+'*.par', $ - root_dir=thisdir, subdir=dirlist[i]), count=ct) - if (ct EQ 0) then $ - thisfile = findfile(djs_filepath('spPlate-'+dirlist[i]+'*.fits', $ - root_dir=thisdir, subdir=dirlist[i]), count=ct) - if (ct GT 0) then begin - if (keyword_set(fullfile)) then begin - fullfile = [fullfile, thisfile] - fullrun2d = [fullrun2d, replicate(run2dlist[j],ct)] - endif else begin - fullfile = thisfile - fullrun2d = replicate(run2dlist[j],ct) - endelse - endif - endfor - endif - endfor - nfile = n_elements(fullfile) - if (nfile EQ 0) then return - - fullfile = fullfile[sort(fullfile)] ; Sort these files - - ;---------- - ; Create output structure - - plist = create_struct( $ - 'plate' , 0L, $ - 'tileid' , 0L, $ - 'mjd' , 0L, $ - 'run2d' , '', $ - 'run1d' , '', $ - 'racen' , 0.0, $ - 'deccen' , 0.0, $ - 'epoch' , 0.0, $ - 'cartid' , 0L, $ - 'tai' , 0.0D, $ - 'tai_beg' , 0.0D, $ - 'tai_end' , 0.0D, $ - 'airmass' , 0.0, $ - 'exptime' , 0.0, $ - 'mapname' , ' ', $ - 'survey' , ' ', $ - 'programname' , ' ', $ - 'chunk' , ' ', $ - 'platequality' , ' ', $ - 'platesn2' , 0.0, $ - 'deredsn2' , 0.0, $ - 'qsurvey' , 0L, $ - 'mjdlist' , ' ', $ - 'nexp' , 0L, $ - 'nexp_b1' , 0L, $ - 'nexp_b2' , 0L, $ - 'nexp_r1' , 0L, $ - 'nexp_r2' , 0L, $ - 'expt_b1' , 0.0, $ - 'expt_b2' , 0.0, $ - 'expt_r1' , 0.0, $ - 'expt_r2' , 0.0, $ - 'sn2_g1' , 0.0, $ - 'sn2_r1' , 0.0, $ - 'sn2_i1' , 0.0, $ - 'sn2_g2' , 0.0, $ - 'sn2_r2' , 0.0, $ - 'sn2_i2' , 0.0, $ - 'dered_sn2_g1' , 0.0, $ - 'dered_sn2_r1' , 0.0, $ - 'dered_sn2_i1' , 0.0, $ - 'dered_sn2_g2' , 0.0, $ - 'dered_sn2_r2' , 0.0, $ - 'dered_sn2_i2' , 0.0, $ - 'goffstd' , 0., $ - 'grmsstd' , 0., $ - 'roffstd' , 0., $ - 'rrmsstd' , 0., $ - 'ioffstd' , 0., $ - 'irmsstd' , 0., $ - 'groffstd' , 0., $ - 'grrmsstd' , 0., $ - 'rioffstd' , 0., $ - 'rirmsstd' , 0., $ - 'goffgal' , 0., $ - 'grmsgal' , 0., $ - 'roffgal' , 0., $ - 'rrmsgal' , 0., $ - 'ioffgal' , 0., $ - 'irmsgal' , 0., $ - 'groffgal' , 0., $ - 'grrmsgal' , 0., $ - 'rioffgal' , 0., $ - 'rirmsgal' , 0., $ - 'nguide' , 0L , $ - 'seeing20' , 0.0, $ - 'seeing50' , 0.0, $ - 'seeing80' , 0.0, $ - 'rmsoff20' , 0.0, $ - 'rmsoff50' , 0.0, $ - 'rmsoff80' , 0.0, $ - 'airtemp' , 0.0, $ - 'xsigma' , 0.0, $ - 'xsigmin' , 0.0, $ - 'xsigmax' , 0.0, $ - 'wsigma' , 0.0, $ - 'wsigmin' , 0.0, $ - 'wsigmax' , 0.0, $ - 'xchi2' , 0.0, $ - 'xchi2min' , 0.0, $ - 'xchi2max' , 0.0, $ - 'skychi2' , 0.0, $ - 'schi2min' , 0.0, $ - 'schi2max' , 0.0, $ - 'fbadpix' , 0.0, $ - 'fbadpix1' , 0.0, $ - 'fbadpix2' , 0.0, $ - 'n_total' , 0L, $ - 'n_galaxy' , 0L, $ - 'n_qso' , 0L, $ - 'n_star' , 0L, $ - 'n_unknown' , 0L, $ - 'n_sky' , 0L, $ - 'n_target_main', 0L, $ - 'n_target_lrg1', 0L, $ - 'n_target_lrg2', 0L, $ - 'n_target_elg', 0L, $ - 'n_target_qso' , 0L, $ - 'success_main' , 0.0, $ - 'success_lrg1' , 0.0, $ - 'success_lrg2' , 0.0, $ - 'success_elg' , 0.0, $ - 'success_qso' , 0.0, $ - 'status2d' , 'Missing', $ - 'statuscombine', 'Missing', $ - 'status1d' , 'Missing', $ - 'public' , ' ', $ - 'qualcomments' , ' ' ) - - if keyword_set(rawsn2) then begin - sn2tag = 'platesn2' - dereddened_sn2 = 0 - endif else begin - sn2tag = 'deredsn2' - dereddened_sn2 = 1 - endelse - - ;; Which columns to keep for HTML and ASCII files - ;; For platelist - trimtags1 = [ $ - ['plate' , 'i6'], $ - ['mjd' , 'i5'], $ - ['racen' , 'f6.2'], $ - ['deccen' , 'f6.2'], $ - ['run2d' , 'a'], $ - ['run1d' , 'a'], $ - ['platequality' , 'a'], $ - [sn2tag , 'f5.1'], $ - ['n_galaxy' , 'i3'], $ - ['n_qso' , 'i3'], $ - ['n_star' , 'i3'], $ - ['n_unknown' , 'i3'], $ - ['n_sky' , 'i3'], $ - ['survey' , 'a'], $ - ['programname' , 'a'], $ - ['chunk' , 'a'], $ - ['tileid' , 'i'], $ - ['public' , 'a'] ] - - ;; For platequality - trimtags2 = [ $ - ['plate' , 'i6'], $ - ['mjd' , 'i5'], $ - ['run2d' , 'a'], $ - ['run1d' , 'a'], $ - ['sn2_g1' , 'f5.1'], $ - ['sn2_i1' , 'f5.1'], $ - ['sn2_g2' , 'f5.1'], $ - ['sn2_i2' , 'f5.1'], $ - ['fbadpix' , 'f5.3'], $ -; ['success_main' , 'f5.1'], $ - ['success_lrg1' , 'f5.1'], $ - ['success_lrg2' , 'f5.1'], $ - ['success_elg' , 'f5.1'], $ - ['success_qso' , 'f5.1'], $ - ['status2d' , 'a'], $ - ['statuscombine', 'a'], $ - ['status1d' , 'a'], $ - ['platequality' , 'a'], $ - ['qualcomments' , 'a'] ] - plist = replicate(plist, nfile) - - ;---------- - ; Read the data file with the public plate information - - publicfile = filepath('spPlateList.par', $ - root_dir=getenv('SPECLOG_DIR'), subdirectory='opfiles') - publicdata = yanny_readone(publicfile, 'SPPLATELIST') - if (NOT keyword_set(publicdata)) then $ - message, 'Missing spPlateList.par file' - - ;--------------------------------------------------------------------------- - ; Loop through all files - ;--------------------------------------------------------------------------- - - platefile = strarr(nfile) - combparfile = strarr(nfile) - comblogfile = strarr(nfile) - combpsfile = strarr(nfile) - zlogfile = ptrarr(nfile) - zbestfile = ptrarr(nfile) - zbestrun1d = ptrarr(nfile) - - for ifile=0L, nfile-1L do begin - - splog, 'Looking at ' + fullfile[ifile] - - junk = fileandpath(fullfile[ifile], path=path) ; Determine PATH - - ;---------- - ; Test if INFILE specifies Yanny param files for spPlancomb. - - if (strmid(fullfile[ifile],strlen(fullfile[ifile])-4) EQ '.par') $ - then begin - combparfile[ifile] = fullfile[ifile] - yanny_read, fullfile[ifile], hdr=hdrp - platefile[ifile] = $ - djs_filepath('spPlate-' $ - +plate_to_string(yanny_par(hdrp,'plateid')) $ - +'-'+string(yanny_par(hdrp,'MJD'),format='(i5.5)'), root_dir=path) $ - +'.fits' - endif else begin - platefile[ifile] = fullfile[ifile] - combparfile[ifile] = repstr(platefile[ifile], 'spPlate', 'spPlancomb') - combparfile[ifile] = repstr(combparfile[ifile], '.fits', '.par') - endelse - - ;---------- - ; Determine names of associated files - - comblogfile[ifile] = repstr(combparfile[ifile], '.par', '.log') - comblogfile[ifile] = repstr(comblogfile[ifile], 'spPlancomb', 'spDiagcomb') - combpsfile[ifile] = repstr(comblogfile[ifile], '.log', '.ps') - platemjd = strmid(fileandpath(platefile[ifile]), 8, strpos(fileandpath(platefile[ifile]), '.fits') -8 ) - ; - ; run1d is ALWAYS set. If it is not input as a keyword, it has - ; the value '*' - ; - if (keyword_set(run1d[0])) then begin - allsubdirs = get_mjd_dir(path, mjd=run1d, /alldirs) - zbestrun1d[ifile] = ptr_new( allsubdirs[where(~strcmp(allsubdirs,'runz_',5))] ) - endif else $ - zbestrun1d[ifile] = ptr_new('') - nsubdir = n_elements(*zbestrun1d[ifile]) - zbestfile[ifile] = ptr_new(strarr(nsubdir)) - zlogfile[ifile] = ptr_new(strarr(nsubdir)) - for i=0L, nsubdir-1L do $ - (*zbestfile[ifile])[i] = djs_filepath('spZbest-'+platemjd+'.fits', $ - root_dir=path, subdir=((*zbestrun1d[ifile])[i])) - for i=0L, nsubdir-1L do $ - (*zlogfile[ifile])[i] = djs_filepath('spDiag1d-'+platemjd+'.log', $ - root_dir=path, subdir=((*zbestrun1d[ifile]))[i]) - - ; Read the combine plan file to get the list of all the 2D plan files - ; from its Yanny header. - ; Also get the mapping name from the combine par file in case we were - ; unable to get it from the spPlate file. - plist[ifile].mapname = (yanny_readone(combparfile[ifile], 'SPEXP', $ - hdr=hdrcomb))[0].mapname - - ;---------- - ; Find the state of the 2D reductions (not the combine step) - - statusdone = 0 - statusrun = 0 - statusmissing = 0 - - ; Check status of individual 2D runs - planlist = yanny_par(hdrcomb, 'planfile2d') ; Assume we find this - logfile2d = '' ; List of 2D log files that exist - for iplan=0L, n_elements(planlist)-1L do begin - yanny_read, djs_filepath(planlist[iplan],root_dir=path), hdr=hdr2d - plist[ifile].mjdlist += ' ' + strtrim(yanny_par(hdr2d, 'MJD'),2) - thislogfile = repstr(planlist[iplan],'spPlan2d','spDiag2d') - thislogfile = repstr(thislogfile,'.par','.log') - thislogfile = (findfile(djs_filepath(thislogfile, root_dir=path)))[0] - if (keyword_set(thislogfile)) then begin - if (NOT keyword_set(logfile2d)) then logfile2d = thislogfile $ - else logfile2d = [logfile2d, thislogfile] - ;;; spawn, 'tail -1 '+thislogfile, lastline - lastline = get_lastline(thislogfile) - if (strmatch(lastline[0], '*Successful completion*')) then begin - ; Case where this 2D log file completed - statusdone = statusdone + 1 - endif else begin - ; Case where this 2D log file isn't completed - statusrun = statusrun + 1 - endelse - endif else begin - ; Case where this 2D log file missing - statusmissing = statusmissing + 1 - endelse - endfor - - if (statusmissing GT 0 AND statusrun EQ 0) then begin - plist[ifile].status2d = 'Pending' - endif else if (statusmissing GT 0 OR statusrun GT 0) then begin - plist[ifile].status2d = 'RUNNING' - endif else begin - plist[ifile].status2d = 'Done' - endelse - - ;---------- - ; Read plate file - get status of Combine - - ; Get RUN2D from the directory name... - plist[ifile].run2d = fullrun2d[ifile] - hdr1 = headfits(platefile[ifile], /silent, errmsg=errmsg) - if (size(hdr1, /tname) EQ 'STRING') then begin - plist[ifile].n_total = sxpar(hdr1, 'NAXIS2') -; plist[ifile].plate = sxpar(hdr1, 'PLATEID') -; plist[ifile].mjd = sxpar(hdr1, 'MJD') - plist[ifile].mjdlist = sxpar(hdr1, 'MJDLIST') -; thisrun2d = sxpar(hdr1, 'RUN2D', count=ct) -; plist[ifile].run2d = (ct GT 0) ? thisrun2d : '' -; plist[ifile].tileid = sxpar(hdr1, 'TILEID') ; Get from platePlans -; plist[ifile].racen = sxpar(hdr1, 'RA') ; Get from platePlans -; plist[ifile].deccen = sxpar(hdr1, 'DEC') ; Get from platePlans - plist[ifile].cartid = sxpar(hdr1, 'CARTID') - plist[ifile].tai = sxpar(hdr1, 'TAI') - plist[ifile].tai_beg = sxpar(hdr1, 'TAI-BEG') - plist[ifile].tai_end = sxpar(hdr1, 'TAI-END') - plist[ifile].airmass = sxpar(hdr1, 'AIRMASS') -; plist[ifile].airmass = tai2airmass(plist[ifile].ra, $ -; plist[ifile].dec, tai=plist[ifile].tai) - plist[ifile].exptime = sxpar(hdr1, 'EXPTIME') - plist[ifile].nexp = sxpar(hdr1, 'NEXP') - plist[ifile].nexp_b1 = sxpar(hdr1, 'NEXP_B1') - plist[ifile].nexp_b2 = sxpar(hdr1, 'NEXP_B2') - plist[ifile].nexp_r1 = sxpar(hdr1, 'NEXP_R1') - plist[ifile].nexp_r2 = sxpar(hdr1, 'NEXP_R2') - plist[ifile].expt_b1 = sxpar(hdr1, 'EXPT_B1') - plist[ifile].expt_b2 = sxpar(hdr1, 'EXPT_B2') - plist[ifile].expt_r1 = sxpar(hdr1, 'EXPT_R1') - plist[ifile].expt_r2 = sxpar(hdr1, 'EXPT_R2') - plist[ifile].sn2_g1 = sxpar(hdr1, 'SPEC1_G') - plist[ifile].sn2_r1 = sxpar(hdr1, 'SPEC1_R') - plist[ifile].sn2_i1 = sxpar(hdr1, 'SPEC1_I') - plist[ifile].sn2_g2 = sxpar(hdr1, 'SPEC2_G') - plist[ifile].sn2_r2 = sxpar(hdr1, 'SPEC2_R') - plist[ifile].sn2_i2 = sxpar(hdr1, 'SPEC2_I') - - ; If these keywords don't exist, these will just get 0 - plist[ifile].dered_sn2_g1 = sxpar(hdr1, 'SN2EXT1G') - plist[ifile].dered_sn2_r1 = sxpar(hdr1, 'SN2EXT1R') - plist[ifile].dered_sn2_i1 = sxpar(hdr1, 'SN2EXT1I') - plist[ifile].dered_sn2_g2 = sxpar(hdr1, 'SN2EXT2G') - plist[ifile].dered_sn2_r2 = sxpar(hdr1, 'SN2EXT2R') - plist[ifile].dered_sn2_i2 = sxpar(hdr1, 'SN2EXT2I') - - plist[ifile].goffstd = sxpar(hdr1, 'GOFFSTD') - plist[ifile].grmsstd = sxpar(hdr1, 'GRMSSTD') - plist[ifile].roffstd = sxpar(hdr1, 'ROFFSTD') - plist[ifile].rrmsstd = sxpar(hdr1, 'RRMSSTD') - plist[ifile].ioffstd = sxpar(hdr1, 'IOFFSTD') - plist[ifile].irmsstd = sxpar(hdr1, 'IRMSSTD') - plist[ifile].groffstd = sxpar(hdr1, 'GROFFSTD') - plist[ifile].grrmsstd = sxpar(hdr1, 'GRRMSSTD') - plist[ifile].rioffstd = sxpar(hdr1, 'RIOFFSTD') - plist[ifile].rirmsstd = sxpar(hdr1, 'RIRMSSTD') - plist[ifile].goffgal = sxpar(hdr1, 'GOFFGAL') - plist[ifile].grmsgal = sxpar(hdr1, 'GRMSGAL') - plist[ifile].roffgal = sxpar(hdr1, 'ROFFGAL') - plist[ifile].rrmsgal = sxpar(hdr1, 'RRMSGAL') - plist[ifile].ioffgal = sxpar(hdr1, 'IOFFGAL') - plist[ifile].irmsgal = sxpar(hdr1, 'IRMSGAL') - plist[ifile].groffgal = sxpar(hdr1, 'GROFFGAL') - plist[ifile].grrmsgal = sxpar(hdr1, 'GRRMSGAL') - plist[ifile].rioffgal = sxpar(hdr1, 'RIOFFGAL') - plist[ifile].rirmsgal = sxpar(hdr1, 'RIRMSGAL') - plist[ifile].nguide = sxpar(hdr1, 'NGUIDE') - plist[ifile].seeing20 = sxpar(hdr1, 'SEEING20') - plist[ifile].seeing50 = sxpar(hdr1, 'SEEING50') - plist[ifile].seeing80 = sxpar(hdr1, 'SEEING80') - plist[ifile].rmsoff20 = sxpar(hdr1, 'RMSOFF20') - plist[ifile].rmsoff50 = sxpar(hdr1, 'RMSOFF50') - plist[ifile].rmsoff80 = sxpar(hdr1, 'RMSOFF80') - plist[ifile].airtemp = sxpar(hdr1, 'AIRTEMP') - plist[ifile].xsigma = sxpar(hdr1, 'XSIGMA') - plist[ifile].xsigmin = sxpar(hdr1, 'XSIGMIN') - plist[ifile].xsigmax = sxpar(hdr1, 'XSIGMAX') - plist[ifile].wsigma = sxpar(hdr1, 'WSIGMA') - plist[ifile].wsigmin = sxpar(hdr1, 'WSIGMIN') - plist[ifile].wsigmax = sxpar(hdr1, 'WSIGMAX') - plist[ifile].xchi2 = sxpar(hdr1, 'XCHI2') - plist[ifile].xchi2min = sxpar(hdr1, 'XCHI2MIN') - plist[ifile].xchi2max = sxpar(hdr1, 'XCHI2MAX') - plist[ifile].skychi2 = sxpar(hdr1, 'SKYCHI2') - plist[ifile].schi2min = sxpar(hdr1, 'SCHI2MIN') - plist[ifile].schi2max = sxpar(hdr1, 'SCHI2MAX') - plist[ifile].fbadpix = sxpar(hdr1, 'FBADPIX') - plist[ifile].fbadpix1 = sxpar(hdr1, 'FBADPIX1') - plist[ifile].fbadpix2 = sxpar(hdr1, 'FBADPIX2') - plist[ifile].mapname = strtrim(sxpar(hdr1, 'NAME')) - plist[ifile].statuscombine = 'Done' - endif else begin - ; Case where no spPlate file exists - thislogfile = repstr(fileandpath(platefile[ifile]), $ - 'spPlate','spDiagcomb') - thislogfile = repstr(thislogfile,'.fits','.log') - thislogfile = (findfile(djs_filepath(thislogfile, root_dir=path)))[0] - - if (keyword_set(thislogfile)) then begin - ;;; spawn, 'tail -1 '+thislogfile, lastline - lastline = get_lastline(thislogfile) - if (strmatch(lastline[0], '*Successful completion*')) then begin - ; Case where this combine log file completed, - ; (but we're still missing the spPlate file, so must have failed) - plist[ifile].statuscombine = 'FAILED' - endif else begin - ; Case where this combine log file isn't completed - spawn, 'grep ABORT '+thislogfile, abortline - if (keyword_set(abortline)) then begin - plist[ifile].statuscombine = 'FAILED' ; Combining step aborted - endif else begin - plist[ifile].statuscombine = 'RUNNING' - endelse - endelse - endif else begin - ; Case where this combine log file missing - plist[ifile].statuscombine = 'Pending' - endelse - - if (keyword_set(purge2d) $ - AND plist[ifile].statuscombine NE 'Done') then begin - splog, 'PURGE2D ', logfile2d - rmfile, logfile2d - splog, 'PURGE2D ', comblogfile[ifile] - rmfile, comblogfile[ifile] - splog, 'PURGE2D ', combpsfile[ifile] - rmfile, combpsfile[ifile] - plist[ifile].status2d = 'Pending' - plist[ifile].statuscombine = 'Pending' - endif - endelse - - ;---------- - ; Get the following from the file names, since sometimes they - ; are wrong in the file headers!! - - fi = fileandpath(platefile[ifile]) - p1 = strpos(fi, '-') - p2 = strpos(fi, '-', p1+1) - p3 = strpos(fi, '.fits') - plist[ifile].plate = long( strmid(fi, p1+1, p2-p1-1) ) - plist[ifile].mjd = long( strmid(fi, p2+1, p3-p2-1) ) - - ;---------- - ; Determine the chunk name and the version of target used - - cinfo = chunkinfo(plist[ifile].plate) - plist[ifile].survey = cinfo.survey - plist[ifile].programname = cinfo.programname - plist[ifile].chunk = cinfo.chunk - plist[ifile].tileid = cinfo.tileid - plist[ifile].racen = cinfo.racen - plist[ifile].deccen = cinfo.deccen - plist[ifile].epoch = cinfo.epoch - - ;---------- - ; Determine which public data release has this plate+MJD - - j = where(plist[ifile].plate EQ publicdata.plate $ - AND plist[ifile].mjd EQ publicdata.mjd) - if (j[0] NE -1) then begin - copy_struct_inx, publicdata[j[0]], plist, index_to=ifile - endif - - endfor - - ;---------- - ; Remove from the plate list earlier reductions of the same plugging - ; (keeping only the most recent MJD of each plugging). - - qkeep = bytarr(nfile) - - ; First get the unique list of MAPNAME+RUN2D, then mark the most recent MJD - ; of each as the good one. - isort = sort(plist.mapname+plist.run2d) - isort = isort[ uniq(plist[isort].mapname+plist[isort].run2d) ] - maplist = plist[isort].mapname+plist[isort].run2d - for imap=0L, n_elements(maplist)-1L do begin - indx = where(plist.mapname+plist.run2d EQ maplist[imap]) - junk = max(plist[indx].mjd, imax) - qkeep[indx[imax]] = 1 - endfor - - ; Don't discard any where MAPNAME isn't set - indx = where(strtrim(plist.mapname) EQ '') - if (indx[0] NE -1) then qkeep[indx] = 1 - - ; List partially-combined plates that we're discarding from the list - for ifile=0L, nfile-1L do begin - if (qkeep[ifile] NE 1) then begin - splog, 'Discard partially-combined ' + combparfile[ifile] - if (keyword_set(killpartial)) then begin - killfiles = [ combparfile[ifile], $ - comblogfile[ifile], $ - combpsfile[ifile], $ - platefile[ifile], $ - *zbestfile[ifile], $ - *zlogfile[ifile] ] - for ikill=0L, n_elements(killfiles)-1L do $ - splog, 'KILLPARTIAL ', killfiles[ikill] - rmfile, killfiles - endif - - ; Drop plates from carts in skipcart - endif else begin - if keyword_set(skipcart) then begin - tmp = where(skipcart EQ plist[ifile].cartid, N) - if N GT 0 then begin - cartid = STRTRIM(STRING(plist[ifile].cartid), 1) - splog, 'Dropping ' + combparfile[ifile] + ' (cart ' + cartid + ')' - qkeep[ifile] = 0 - endif - endif - endelse - - endfor - - ;----- - ; Trim the plate list, and update NFILE to this trimmed number - - ikeep = where(qkeep, nfile) - idelete = where(qkeep EQ 0, ndelete) - ; Free pointers for partial reductions - if (ndelete GT 0) then begin - for i=0L, ndelete-1L do begin - ptr_free, zlogfile[idelete[i]] - ptr_free, zbestfile[idelete[i]] - ptr_free, zbestrun1d[idelete[i]] - endfor - endif - - plist = plist[ikeep] - platefile = platefile[ikeep] - combparfile = combparfile[ikeep] - comblogfile = comblogfile[ikeep] - combpsfile = combpsfile[ikeep] - zlogfile = zlogfile[ikeep] - zbestfile = zbestfile[ikeep] - zbestrun1d = zbestrun1d[ikeep] - - ;---------- - ; Make a list of one S/N for each plate which is the minimum of - ; G1, I1, G2, I2. - ; Assign a plate quality, but do not over-write any plate quality - ; from the manually-assigned one in the "spPlateList.par" file. - - qualstring = ['bad', 'marginal', 'good'] - for ifile=0L, nfile-1L do begin - if (strtrim(plist[ifile].statuscombine,2) EQ 'Done') then begin - nexp_min = min( $ - [plist[ifile].nexp_b1, plist[ifile].nexp_b2, $ - plist[ifile].nexp_r1, plist[ifile].nexp_r2], max=nexp_max) - plist[ifile].platesn2 = min( $ - [plist[ifile].sn2_g1, plist[ifile].sn2_i1, $ - plist[ifile].sn2_g2, plist[ifile].sn2_i2]) - plist[ifile].deredsn2 = min( $ - [plist[ifile].dered_sn2_g1, plist[ifile].dered_sn2_i1, $ - plist[ifile].dered_sn2_g2, plist[ifile].dered_sn2_i2]) - if keyword_set(rawsn2) then begin - min_sn2_b = min([plist[ifile].sn2_g1, plist[ifile].sn2_g2]) - min_sn2_r = min([plist[ifile].sn2_i1, plist[ifile].sn2_i2]) - endif else begin - min_sn2_b = min([plist[ifile].dered_sn2_g1, $ - plist[ifile].dered_sn2_g2]) - min_sn2_r = min([plist[ifile].dered_sn2_i1, $ - plist[ifile].dered_sn2_i2]) - endelse - iqual = 2 - prog = strtrim(plist[ifile].programname,2) - mjd = plist[ifile].mjd - is_elg_plate = strcmp(prog, 'ELG_NGC') OR strcmp(prog, 'ELG_SGC') - ;--- JEB 2018-05-23: if elg plate, plate is 'good' no matter what SN2 - if NOT is_elg_plate then begin - ;-- JEB 2018-05-23: new thresholds after 2017-10-03 - if (mjd GT 58029) AND ((min_sn2_b LT 8.0) OR (min_sn2_r LT 18.)) then $ - iqual = iqual < 0 - if (mjd LE 58029) AND ((min_sn2_b LT 10.0) OR (min_sn2_r LT 22.0)) then $ - iqual = iqual < 0 - endif - if (plist[ifile].fbadpix GT 0.10) then iqual = iqual < 0 - ; For reductions before v5_1, NEXP_MIN and NEXP_MAX are always zero - if (nexp_max GT 0) then begin - if (nexp_min LT 3) then iqual = iqual < 0 - endif - if (NOT keyword_set(strtrim(plist[ifile].platequality))) then $ - plist[ifile].platequality = qualstring[iqual] - endif - endfor - - ;---------- - ; Decide which plates constitute unique tiles with the required S/N, - ; then set QSURVEY=1. - ; Also insist that PROGNAME='main'. - - ; First get the unique list of TILE - isort = sort(plist.tileid) - isort = isort[ uniq(plist[isort].tileid) ] - tilelist = plist[isort].tileid - - for itile=0L, n_elements(tilelist)-1L do begin - indx = where(plist.tileid EQ tilelist[itile] $ - AND (strtrim(plist.platequality,2) EQ 'good' $ - OR strtrim(plist.platequality,2) EQ 'marginal') $ - AND strtrim(plist.survey,2) EQ 'boss', ct) - if (ct GT 0) then begin - snbest = max(plist[indx].platesn2, ibest) - plist[indx[ibest]].qsurvey = 1 - endif - endfor - - ;--------------------------------------------------------------------------- - ; Read the Spectro-1D files - - for i=0L, nfile-1L do begin - - for j=0L, n_elements((*zbestfile[i]))-1L do begin - - if (j EQ 0) then begin - ifile = i ; First instance of z-file for this plate - endif else begin - ifile = n_elements(plist) ; Append another entry to plate list - plist = [plist, plist[i]] - endelse - - plist[ifile].run1d = (*zbestrun1d[i])[j] - - ;---------- - ; Read Zbest file - get status of 1D - - if (keyword_set((*zbestfile[i])[j])) then $ - hdr2 = headfits((*zbestfile[i])[j], /silent, errmsg=errmsg) $ - else $ - hdr2 = 0 - - if (size(hdr2, /tname) EQ 'STRING') then begin - zans = mrdfits((*zbestfile[i])[j], 1, /silent) - plug = mrdfits(platefile[i], 5, /silent) - class = strtrim(zans.class,2) - ; Use the ZWARNING flag if it exists to identify SKY or UNKNOWN. - if ((where(tag_names(zans) EQ 'ZWARNING'))[0] NE -1) then $ - zwarning = zans.zwarning $ - else $ - zwarning = bytarr(n_elements(zans)) - qsky = (zwarning AND 1) NE 0 - plist[ifile].n_galaxy = total(class EQ 'GALAXY' AND zwarning EQ 0) - plist[ifile].n_qso = total(class EQ 'QSO' AND zwarning EQ 0) - plist[ifile].n_star = total(class EQ 'STAR' AND zwarning EQ 0) - plist[ifile].n_unknown = total(class EQ 'UNKNOWN' $ - OR (zwarning NE 0 AND qsky EQ 0)) - plist[ifile].n_sky = total(class EQ 'SKY' OR qsky EQ 1) - plist[ifile].status1d = 'Done' - - nobj = n_elements(zans) - targets = strarr(nobj) - - for iobj=0L, nobj-1L do $ - targets[iobj] = sdss_flagname('TARGET',plug[iobj].primtarget, $ - /silent, /concat)+' ' - if (tag_exist(plug,'BOSS_TARGET1')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] = sdss_flagname('BOSS_TARGET1', $ - plug[iobj].boss_target1, /silent, /concat)+' ' - ;; Adding sequels target mask bits - if (tag_exist(plug, 'EBOSS_TARGET0')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] += sdss_flagname('EBOSS_TARGET0', $ - plug[iobj].eboss_target0, /silent, /concat)+' ' - ;; Adding eboss target mask bits - if (tag_exist(plug, 'EBOSS_TARGET1')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] += sdss_flagname('EBOSS_TARGET1', $ - plug[iobj].eboss_target1, /silent, /concat)+' ' - if (tag_exist(plug, 'EBOSS_TARGET2')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] += sdss_flagname('EBOSS_TARGET2', $ - plug[iobj].eboss_target2, /silent, /concat)+' ' - - - - - ;; Objects which shouldn't count against the success statistics - bad_fiber = sdss_flagval('ZWARNING', 'LITTLE_COVERAGE') OR $ - sdss_flagval('ZWARNING', 'UNPLUGGED') OR $ - sdss_flagval('ZWARNING', 'BAD_TARGET') - - imain = where((strmatch(targets,'*GALAXY *') $ - OR strmatch(targets,'*GALAXY_BIG *') $ - OR strmatch(targets,'*GALAXY_BRIGHT_CORE *')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nmain) - ilrg1 = where((strmatch(targets,'*GALAXY_RED *') $ - OR strmatch(targets,'*GALAXY_RED_II *') $ - OR strmatch(targets,'*GAL_LOZ *') $ - OR strmatch(targets,'*LRG*')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nlrg1) - ilrg2 = where((strmatch(targets,'*GAL_HIZ *') $ - OR strmatch(targets,'*GAL_CMASS*')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nlrg2) - ielg = where((strmatch(targets,'*ELG*')) $ - AND (zans.zwarning_noqso AND bad_fiber) EQ 0, nelg) -; iqso = where(strmatch(targets,'*QSO_HIZ *') $ -; OR strmatch(targets,'*QSO_CAP *') $ -; OR strmatch(targets,'*QSO_SKIRT *') $ -; OR strmatch(targets,'*QSO_FIRST_CAP *') $ -; OR strmatch(targets,'*QSO_FIRST_SKIRT *'), nqso) - iqso = where(strmatch(targets,'*QSO*') $ - AND (zans.zwarning AND bad_fiber) EQ 0, nqso) - - plist[ifile].n_target_main = nmain - plist[ifile].n_target_lrg1 = nlrg1 - plist[ifile].n_target_lrg2 = nlrg2 - plist[ifile].n_target_elg = nelg - plist[ifile].n_target_qso = nqso - if (nmain GT 0) then $ - plist[ifile].success_main = $ - 100 * total(zans[imain].zwarning EQ 0 $ - AND (strmatch(zans[imain].class,'GALAXY*') $ - OR strmatch(zans[imain].class,'QSO*'))) / nmain - if (nlrg1 GT 0) then $ - plist[ifile].success_lrg1 = $ - 100 * total(zans[ilrg1].zwarning_noqso EQ 0 $ - AND strmatch(zans[ilrg1].class,'GALAXY*')) / nlrg1 - if (nlrg2 GT 0) then $ - plist[ifile].success_lrg2 = $ - 100 * total(zans[ilrg2].zwarning_noqso EQ 0 $ - AND strmatch(zans[ilrg2].class,'GALAXY*')) / nlrg2 - if (nelg GT 0) then $ - plist[ifile].success_elg = $ - 100 * total(zans[ielg].zwarning_noqso EQ 0 $ - AND strmatch(zans[ielg].class,'GALAXY*')) / nelg - if (nqso GT 0) then $ - plist[ifile].success_qso = $ - 100 * total(zans[iqso].zwarning EQ 0 $ - AND strmatch(zans[iqso].class,'QSO*')) / nqso - endif else begin - ;---------- - ; Find the state of the 1D reductions -- spZbest file is missing - - print, run1d, ' ', (*zlogfile[i])[j] - - if (file_search((*zlogfile[i])[j])) then begin - ;;; spawn, 'tail -1 '+(*zlogfile[i])[j], lastline - lastline = get_lastline((*zlogfile[i])[j]) - if (strmatch(lastline[0], '*Successful completion*')) then begin - ; Case where this 1D log file completed, which is not - ; a case that should ever occur. - plist[ifile].status1d = 'FAILED'; Should have found spZbest - endif else begin - ; Case where this 1D log file isn't completed - if (keyword_set(purge1d)) then begin - splog, 'PURGE1D ', (*zlogfile[i])[j] - rmfile, (*zlogfile[i])[j] - plist[ifile].status1d = 'Pending' - endif else begin - plist[ifile].status1d = 'RUNNING' - endelse - endelse - endif else begin - plist[ifile].status1d = 'Pending' - endelse - endelse - endfor - endfor - - ;--------------------------------------------------------------------------- - ; Write ASCII + HTML output files - - alias = [['PROGRAMNAME' , 'PROG' ], $ - ['PLATESN2' , 'SN^2' ], $ - ['DEREDSN2' , 'SN^2' ], $ - ['N_GALAXY' , 'N_gal' ], $ - ['N_QSO' , 'N_QSO' ], $ - ['N_STAR' , 'N_star' ], $ - ['N_UNKNOWN' , 'N_unk' ], $ - ['N_SKY' , 'N_sky' ], $ - ['FBADPIX' , 'Badpix' ], $ -; ['SUCCESS_MAIN' , '%Main' ], $ - ['SUCCESS_LRG1' , '%LRG1' ], $ - ['SUCCESS_LRG2' , '%LRG2' ], $ - ['SUCCESS_ELG' , '%ELG' ], $ - ['SUCCESS_QSO' , '%QSO' ], $ - ['STATUS2D' , '2D' ], $ - ['STATUSCOMBINE', 'Combine' ], $ - ['STATUS1D' , '1D' ], $ - ['DERED_SN2_G1' , 'SN2_G1' ], $ - ['DERED_SN2_G2' , 'SN2_G2' ], $ - ['DERED_SN2_I1' , 'SN2_G1' ], $ - ['DERED_SN2_I2' , 'SN2_I2' ], $ - ['PLATEQUALITY' , 'QUALITY' ] ] - - isort1 = reverse(sort(strtrim(strcompress(plist.run2d+' ' $ - +string(99999-plist.plate)),2))) - isort2 = reverse(sort(strtrim(strcompress(plist.run2d+' ' $ - +string(plist.mjd)),2))) - - toptext = [ $ - '

    Last Update: '+ systime()+'

    ', '
      ', $ - '
    • HOME
    • ', $ - '
    • Plate list sorted by plate,' $ - + ' MJD
    • ', $ - '
    • Plate quality sorted by plate,' $ - + ' MJD
    • ', $ - '
    • Plate list as FITS
    • ','
    '] - - if dereddened_sn2 NE 0 then begin - toptext = [toptext, '

    (S/N)^2 values are corrected for galactic dust reddening

    '] - endif else begin - toptext = [toptext, '

    (S/N)^2 values are not corrected for galactic dust reddening

    '] - endelse - - platelist_write, plist[isort1], trimtags=trimtags1, alias=alias, $ - fileprefix='platelist', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Plates Observed List' - platelist_write, plist[isort2], trimtags=trimtags1, alias=alias, $ - fileprefix='platelist-mjdsort', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Plates Observed List' - - platelist_write, plist[isort1], trimtags=trimtags2, alias=alias, $ - fileprefix='platequality', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Plate Quality List' - platelist_write, plist[isort2], trimtags=trimtags2, alias=alias, $ - fileprefix='platequality-mjdsort', toptext=toptext, outdir=outdir, $ - title='SDSS Spectroscopy Plate Quality List' - - ;---------- - ; Write the FITS binary table - - mwrfits, plist, fitsfile, /create - - for i=0L, n_elements(zlogfile)-1L do ptr_free, zlogfile[i] - for i=0L, n_elements(zbestfile)-1L do ptr_free, zbestfile[i] - for i=0L, n_elements(zbestrun1d)-1L do ptr_free, zbestrun1d[i] - - ;---------- - ; See if the platelist webapp is installed; if so, update platelist.json - ; Only do this if there is a single run2d - if n_elements(run2d) eq 1 then begin - appdir = getenv('BOSS_SPECTRO_REDUX')+'/'+run2d+'/platelist' - json_exists = file_test(appdir+'/data/platelist.json') - - if json_exists eq 1 then begin - cmd = appdir+'/bin/platelist2json.py '+fitsfile+' > '+appdir+'/data/platelist.json' - spawn, cmd - endif - endif - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/platemerge.pro b/pro/spec1d/platemerge.pro deleted file mode 100644 index 412a05cbf..000000000 --- a/pro/spec1d/platemerge.pro +++ /dev/null @@ -1,647 +0,0 @@ -;+ -; NAME: -; platemerge -; -; PURPOSE: -; Merge all Spectro-1D outputs with photoPosPlate,spInspect files -; -; CALLING SEQUENCE: -; platemerge, [ plate=, mjd=, except_tags=, indir=, outroot=, $ -; run2d=, /include_bad, /calc_noqso, /skip_line ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; plate - Plates to include; default to all files -; specified by the PLATELIST routine. -; mjd - Optional MJDs corresponding to the specified PLATEs; -; if specified, then PLATE and MJD should have the same -; number of elements. -; except_tags - Tag names to exclude; default to '*COVAR'. -; indir - Input directory with platelist.fits file; passed to -; platelist topir option which defaults to $BOSS_SPECTRO_REDUX -; outroot - Root name for output files; default to -; $BOSS_SPECTRO_REDUX/$RUN2D/spAll; the files are then -; spAll-$RUN2D.fits, spAll-$RUN2D.dat, spAllLine-$RUN2D.dat. -; run2d - List of RUN2D subdirectories to merge, one set of output -; files per name in $RUN2D; default to all values of RUN2D -; returned by PLATELIST. -; include_bad - If set, then include bad plates -; calc_noqso - If set, then also include redshift info for best non-QSO -; redshift fits. Defaults to being set. -; skip_line - If set, skip the generation of spAllLine.fits -; mergerun2d - If set, generate a single $BOSS_SPECTRO_REDUX/spAll.fits -; file combining all RUN2D versions in -; $BOSS_SPECTRO_REDUX/platelist.fits. -; Ignores run2d, $RUN2D, and does *not* write a separate -; file for each RUN2D. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Depends upon the platelist.fits file written by PLATELIST. -; Trims to only 'good' plates, or those in a public data release. -; -; The SPECPRIMARY output element is used to select a unique set of -; objects in the case of duplicate observations. Any objects observed -; multiple times will have SPECPRIMARY=1 for one instance only, and =0 -; for all other instances. The criteria (in order of importance) are -; as follows: -; 1) Prefer observations with positive SN_MEDIAN in r-band -; 2) Prefer PLATEQUALITY='good' over any other plate quality -; 3) Prefer observations with ZWARNING=0 -; 4) Prefer objects with larger SN_MEDIAN in r-band -; -; Temporary files are created first, such as 'spAll.fits.tmp', which -; are renamed at the end of the routine to 'spAll.fits', etc. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; copy_struct -; copy_struct_inx -; djs_filepath() -; headfits() -; hogg_mrdfits() -; mrdfits() -; mwrfits_chunks -; platelist -; readspec -; repstr -; spheregroup -; splog -; struct_print -; sxaddpar -; sxpar() -; -; REVISION HISTORY: -; 30-Oct-2000 Written by D. Schlegel, Princeton -; 29-Jul-2010 Added EXCLUDE_CLASS and SKIP_LINE, A. Bolton, Utah -; 17-Mar-2011 Changed EXCLUDE_CLASS behavior, A. Bolton, Utah -; 30-Jun-2011 Changed EXCLUDE_CLASS to more specific and correct -; CALC_NOQSO, including proper rchi2diff, A. Bolton, Utah -; 04-Oct-2012 Added SPECBOSS tag (ASB, Utah). -;------------------------------------------------------------------------------ - -pro platemerge1, plate=plate, mjd=mjd, except_tags=except_tags1, $ - indir=indir, outroot=outroot1, run2d=run2d, include_bad=include_bad, $ - calc_noqso=calc_noqso, skip_line=skip_line, plist=plist - - dtheta = 2.0 / 3600. - - if (n_elements(except_tags1) GT 0) then except_tags = except_tags1 $ - else except_tags = '*COVAR' - if (keyword_set(outroot1)) then begin - outroot = [outroot1, outroot1+'Line'] - endif else begin - outroot = ['spAll','spAllLine'] - if (keyword_set(run2d)) then outroot = outroot + '-' + run2d - outroot = djs_filepath(outroot, root_dir=getenv('BOSS_SPECTRO_REDUX'), $ - subdir=run2d) - endelse - if (n_elements(calc_noqso) eq 0) then calc_noqso = 1B - - t1 = systime(1) - thismem = memory() - - ;---------- - ; Read platelist if needed - - if (NOT keyword_set(plist)) then $ - platelist, plist=plist, topdir=indir, run2d=run2d - - if (NOT keyword_set(plist)) then return - - ;---------- - ; Find out if this plist includes dereddened SN2 values - - plist_tags = tag_names(plist) - ii = where(plist_tags EQ 'DEREDSN2', n) - if n GT 0 then has_deredsn2 = 1 else has_deredsn2 = 0 - - ;---------- - ; Trim to good (or non-bad public) plates - - if (keyword_set(plate)) then begin - nplate = n_elements(plist) - if (keyword_set(mjd) AND n_elements(mjd) NE nplate) then $ - message, 'Number of elements in PLATE and MJD must agree' - - qkeep = bytarr(nplate) - if (keyword_set(mjd)) then begin - for i=0L, n_elements(plate)-1 do begin - for j=0L, n_elements(mjd)-1 do begin - qkeep = qkeep OR (plist.plate EQ plate[i] AND plist.mjd EQ mjd[j]) - endfor - endfor - endif else begin - for i=0L, n_elements(plate)-1 do $ - qkeep = qkeep OR plist.plate EQ plate[i] - endelse - ikeep = where(qkeep, nkeep) - if (nkeep EQ 0) then return - plist = plist[ikeep] - endif - - if (keyword_set(run2d)) then begin - qkeep = strmatch(strtrim(plist.run2d),run2d) - ikeep = where(qkeep, nkeep) - if (nkeep EQ 0) then return - plist = plist[ikeep] - endif - - qdone = strtrim(plist.status1d,2) EQ 'Done' - if (NOT keyword_set(include_bad)) then begin - qdone = qdone AND $ - (strtrim(plist.platequality,2) EQ 'good' $ - OR strtrim(plist.platequality,2) EQ 'marginal' $ - OR (strtrim(plist.public,2) NE '' AND $ - strtrim(plist.platequality,2) NE 'bad') ) - endif - indx = where(qdone, ct) - if (ct EQ 0) then return - plist = plist[indx] - - nfile = n_elements(plist) - nout = total(plist.n_total) - splog, 'Total number of objects = ', nout - - ;---------- - ; Find the first tsObj file that exists for use in constructing the - ; output structure. - - ifile = 0 - while (NOT keyword_set(tsobj0)) do begin - readspec, plist[ifile].plate, mjd=plist[ifile].mjd, $ - run2d=strtrim(plist[ifile].run2d), tsobj=tsobj0, /silent - if (keyword_set(tsobj0)) then begin - tsobj0 = tsobj0[0] - endif else begin - ifile = ifile + 1 - if (ifile EQ nfile) then $ - message, 'No photoPosPlate files found!' - endelse - endwhile - - ;---------- - ; Create the additional tags to add to the output structure - - pstuff = create_struct( $ - 'programname' , ' ', $ - 'chunk' , ' ', $ - 'platequality', ' ', $ - 'platesn2' , 0.0, $ - 'deredsn2' , 0.0, $ - 'primtarget' , 0L, $ - 'sectarget' , 0L, $ - 'lambda_eff' , 0.0, $ - 'bluefiber' , 0L, $ - 'zoffset' , 0.0, $ - 'xfocal' , 0.0, $ - 'yfocal' , 0.0, $ - 'boss_target1', 0LL, $ - 'boss_target2', 0LL, $ - 'ancillary_target1', 0LL, $ - 'ancillary_target2', 0LL, $ - 'eboss_target0', 0LL, $ - ;;- JB adding 4 new bits - 'eboss_target1', 0LL, $ - 'eboss_target2', 0LL, $ - 'eboss_target_id', 0LL, $ - 'thing_id_targeting', 0LL, $ - 'specprimary' , 0B, $ - 'specboss' , 0B, $ - 'boss_specobj_id' , 0L, $ - 'nspecobs' , 0, $ -;;- SB Oct 2012: remove QSO VAC inputs for DR10 -;; 'z_person' , 0.0, $ -;; 'class_person', 0L, $ -;; 'z_conf_person', 0L, $ -;; 'comments_person', '', $ - 'calibflux' , fltarr(5), $ - 'calibflux_ivar', fltarr(5) ) - - ;---------- - ; Loop through each file - - splog, 'Reading ZANS files' - for ifile=0L, nfile-1 do begin - print, 'Reading ZANS file ',ifile+1, ' of ', nfile - - readspec, plist[ifile].plate, mjd=plist[ifile].mjd, $ - run2d=strtrim(plist[ifile].run2d), run1d=strtrim(plist[ifile].run1d), $ - zans=zans, objhdr=objhdr, $ ;; zmanual=zmanual, - plugmap=plugmap, /silent, unsigned=(ifile EQ 0) - - zans = struct_selecttags(zans, except_tags='OBJID') - -; ASB 2011 Mar: append info on best non-galaxy and non-qso redshifts/classes: -; ASB 2011 Jun: changed to do the "no-qso" case exclusively, and more correctly. -; ASB 2011 Jul: moved this into SPREDUCE1D. Retained for now, but -; test to see if the tags are already present. To be -; removed following verification. -;; if keyword_set(calc_noqso) then begin - if (keyword_set(calc_noqso) and (tag_exist(zans, 'z_noqso') eq 0)) then begin - print, ' Finding non-QSO redshift info.' - - ;;- JB : Change plate string format PLATEPROBLEM - pstring = plate_to_string(plist[ifile].plate) - mstring = string(plist[ifile].mjd, format='(i5.5)') - zallfile = getenv('BOSS_SPECTRO_REDUX') + '/' + $ - strtrim(plist[ifile].run2d, 2) + '/' + $ - pstring + '/' + strtrim(plist[ifile].run1d, 2) + $ - '/spZall-' + pstring + '-' + mstring + '.fits' - zall = mrdfits(zallfile,1) - nfib = max(zall.fiberid) - min(zall.fiberid) + 1L - nzall = n_elements(zall) / nfib - zall = reform(zall, nzall, nfib) - class_all = strtrim(zall.class,2) - id_noqso = replicate(-1L, nfib) - rchi2diff_noqso = replicate(0., nfib) - for ii = 0L, nfib-1 do begin - wh_noqso = where(class_all[*,ii] ne 'QSO') - wh_noqso = (wh_noqso[sort(wh_noqso)])[0:1] - id_noqso[ii] = wh_noqso[0] - rchi2diff_noqso[ii] = total(zall[wh_noqso[0]:wh_noqso[1]-1,ii].rchi2diff) - endfor - zans_noqso = zall[id_noqso,lindgen(nfib)] - noqso_struc = replicate( $ - {z_noqso: 0., z_err_noqso: 0., zwarning_noqso: 0L, $ - class_noqso: ' ', subclass_noqso: ' ', $ - rchi2diff_noqso: 0.}, nfib) - noqso_struc.z_noqso = zans_noqso.z - noqso_struc.z_err_noqso = zans_noqso.z_err - noqso_struc.class_noqso = zans_noqso.class - noqso_struc.subclass_noqso = zans_noqso.subclass - noqso_struc.rchi2diff_noqso = rchi2diff_noqso -; Re-set the small-delta-chi2 bit: - minrchi2diff = 0.01 - small_rchi2diff = rchi2diff_noqso lt minrchi2diff - zw_new = zans_noqso.zwarning - zflagval = sdss_flagval('ZWARNING', 'SMALL_DELTA_CHI2') - zw_new = zw_new - (zw_new and zflagval) - zw_new = zw_new or (zflagval * small_rchi2diff) - noqso_struc.zwarning_noqso = zw_new - zans = struct_addtags(zans, noqso_struc) - noqso_struc = 0 - zall = 0 - zans_noqso = 0 - endif - - if (ifile EQ 0) then begin - outdat1 = create_struct(pstuff, zans[0]) - struct_assign, {junk:0}, outdat1 ; Zero-out all elements - outdat = replicate(outdat1, nout) - endif - - indx = lindgen(plist[ifile].n_total) - if (ifile GT 0) then indx += total(plist[0:ifile-1].n_total) - - ; The following is very slow, so we do this differently... -; copy_struct_inx, zans, outdat, index_to=indx - tmpdat = outdat[indx] - copy_struct, zans, tmpdat - outdat[indx] = tmpdat - - ; Fill in the first columns of this output structure - outdat[indx].programname = plist[ifile].programname - outdat[indx].chunk = plist[ifile].chunk - outdat[indx].platequality = plist[ifile].platequality - outdat[indx].platesn2 = plist[ifile].platesn2 - if has_deredsn2 then $ - outdat[indx].deredsn2 = plist[ifile].deredsn2 - - ; Read the following from the manual inspection - ;- SB Oct 2012: removed for DR10 - ;; if (keyword_set(zmanual[0])) then begin - ;; outdat[indx].z_person = zmanual.z_person - ;; outdat[indx].class_person = zmanual.class_person - ;; outdat[indx].z_conf_person = zmanual.z_conf_person - ;; outdat[indx].comments_person = zmanual.comments - ;; endif - - ; Get PRIMTARGET+SECTARGET with those values from - ; the plug-map structure in spPlate file. - outdat[indx].primtarget = plugmap.primtarget - outdat[indx].sectarget = plugmap.sectarget - outdat[indx].lambda_eff = plugmap.lambda_eff - if (tag_exist(plugmap,'zoffset')) then $ - outdat[indx].zoffset = plugmap.zoffset - if (tag_exist(plugmap,'xfocal')) then $ - outdat[indx].xfocal = plugmap.xfocal - if (tag_exist(plugmap,'yfocal')) then $ - outdat[indx].yfocal = plugmap.yfocal - if (tag_exist(plugmap,'bluefiber')) then $ - outdat[indx].bluefiber = plugmap.bluefiber - if (tag_exist(plugmap,'boss_target1')) then $ - outdat[indx].boss_target1 = plugmap.boss_target1 - if (tag_exist(plugmap,'boss_target2')) then $ - outdat[indx].boss_target2 = plugmap.boss_target2 - if (tag_exist(plugmap,'ancillary_target1')) then $ - outdat[indx].ancillary_target1 = plugmap.ancillary_target1 - if (tag_exist(plugmap,'ancillary_target2')) then $ - outdat[indx].ancillary_target2 = plugmap.ancillary_target2 - if (tag_exist(plugmap,'eboss_target0')) then $ - outdat[indx].eboss_target0 = plugmap.eboss_target0 - ;;- JB adding 4 new bits - if (tag_exist(plugmap, 'eboss_target1')) then $ - outdat[indx].eboss_target1 = plugmap.eboss_target1 - if (tag_exist(plugmap, 'eboss_target2')) then $ - outdat[indx].eboss_target2 = plugmap.eboss_target2 - if (tag_exist(plugmap, 'eboss_target_id')) then $ - outdat[indx].eboss_target_id = plugmap.eboss_target_id - if (tag_exist(plugmap, 'thing_id_targeting')) then $ - outdat[indx].thing_id_targeting = plugmap.thing_id_targeting - - ; Read the following from the plug-map if those tags exist - if (tag_exist(plugmap,'CALIBFLUX')) then $ - outdat[indx].calibflux = plugmap.calibflux - if (tag_exist(plugmap,'CALIBFLUX_IVAR')) then $ - outdat[indx].calibflux_ivar = plugmap.calibflux_ivar - endfor - - splog, 'Time to read data = ', systime(1)-t1, ' sec' - - ;---------- - ; Set the SPECPRIMARY flag to 0 or 1 - - t2 = systime(1) - - ; Determine the score for each object - ; 1) Prefer observations with positive SN_MEDIAN in r-band - ; 2) Prefer PLATEQUALITY='good' over any other plate quality - ; 3) Prefer observations with ZWARNING=0 - ; 4) Prefer objects with larger SN_MEDIAN in r-band -; ASBjuly2011: test against ZWARNING_NOQSO for GALAXY targets: - zw_primtest = outdat.zwarning - if tag_exist(outdat, 'ZWARNING_NOQSO') then begin - wh_galtarget = where(strmatch(outdat.objtype, 'GALAXY*'), ngaltarget) - if (ngaltarget gt 0) then zw_primtest[wh_galtarget] = outdat[wh_galtarget].zwarning_noqso - endif - if (n_elements(outdat[0].sn_median) EQ 1) then jfilt = 0 $ - else jfilt = 2 - score = 4 * (outdat.sn_median[jfilt] GT 0) $ - + 2 * (strmatch(outdat.platequality,'good*') EQ 1) $ -;;; + 1 * (outdat.zwarning EQ 0) $ ; replaced with line below ASBjuly2011 - + 1 * (zw_primtest EQ 0) $ - + (outdat.sn_median[jfilt]>0) / max(outdat.sn_median[jfilt]+1.) - - ingroup = spheregroup(outdat.plug_ra, outdat.plug_dec, dtheta, $ - multgroup=multgroup, firstgroup=firstgroup, nextgroup=nextgroup) - - ; Set the unique object IDs - outdat.boss_specobj_id = ingroup + 1L - - for j=0L, n_elements(firstgroup)-1L do begin - if (firstgroup[j] NE -1) then begin - if (multgroup[j] EQ 1) then begin - outdat[firstgroup[j]].specprimary = 1 - outdat[firstgroup[j]].nspecobs = 1 - endif else begin - indx = lonarr(multgroup[j]) - indx[0] = firstgroup[j] - for k=0L, multgroup[j]-2L do indx[k+1] = nextgroup[indx[k]] - foo = max(score[indx], ibest) - outdat[indx[ibest]].specprimary = 1 - outdat[indx].nspecobs = multgroup[j] - endelse - endif - endfor - - ; ASB: Copy specprimary into specboss - ; (Thinking is that specprimary can be superseded downstream.) - outdat.specboss = outdat.specprimary - - splog, 'Time to assign primaries = ', systime(1)-t2, ' sec' - - ;---------- - ; Pre-condition to FITS structure to have same-length strings - ; (for any given tag name) by concatenating spaces. - - ntag = n_tags(outdat) - tags = tag_names(outdat) - for itag=0L, ntag-1L do begin - if (size(outdat[0].(itag), /tname) EQ 'STRING') then begin - if (NOT keyword_set(silent)) then $ - print, 'Padding whitespace for string array ' + tags[itag] - taglen = strlen(strtrim(outdat.(itag))) - maxlen = max(taglen) - padspace = string('', format='(a'+string(maxlen)+')') - outdat.(itag) = strmid(outdat.(itag) + padspace, 0, maxlen) - endif - endfor - - ;---------- - ; Write the output FITS file, writing one plate at a time - - ; Don't allow duplicate tags between the tsObj structure and what - ; is already in the output structure. For ex, MJD is in both. - tsobj0 = struct_selecttags(tsobj0, except_tags=tag_names(outdat)) - platedat1 = create_struct(outdat[0], tsobj0) - if (keyword_set(except_tags)) then $ - platedat1 = struct_selecttags(platedat1, except_tags=except_tags) - struct_assign, {junk:0}, platedat1 ; Zero-out all elements - - splog, 'Writing FITS file ' + outroot[0]+'.fits' - for ifile=0L, nfile-1 do begin - print, 'Writing plate ', ifile+1, ' of ', nfile - - platedat = replicate(platedat1, plist[ifile].n_total) - indx = lindgen(plist[ifile].n_total) - if (ifile GT 0) then indx += total(plist[0:ifile-1].n_total) - readspec, plist[ifile].plate, mjd=plist[ifile].mjd, $ - run2d=strtrim(plist[ifile].run2d), tsobj=tsobj, /silent - if (keyword_set(tsobj)) then $ - copy_struct, tsobj, platedat $ - else $ - splog, 'WARNING: No tsObj file found for plate ', outdat[indx[0]].plate - copy_struct, outdat[indx], platedat - - ; All strings must be the same length, or appending to the FITS file - ; will result in corruption. The only string in the tsobj structure - ; is for the RERUN. - platedat.rerun = string(platedat.rerun+' ',format='(a3)') - - mwrfits_chunks, platedat, outroot[0]+'.fits.tmp', $ - create=(ifile EQ 0), append=(ifile GT 0) - endfor - - outdat = 0 ; Clear memory - - ;---------- - ; Create the structure for ASCII output - - adat1 = create_struct( $ - 'plate' , 0L, $ - 'mjd' , 0L, $ - 'fiberid' , 0L, $ - 'class' , '', $ - 'subclass' , '', $ - 'z' , 0.0, $ - 'z_err' , 0.0, $ - 'zwarning' , 0L, $ - 'plug_ra' , 0.0d, $ - 'plug_dec' , 0.0d, $ - 'specprimary', 0L, $ - 'chunk' , '', $ - 'platesn2' , 0.0, $ - 'deredsn2' , 0.0, $ - 'objtype' , '', $ - 'boss_target1', 0LL, $ - 'ancillary_target1', 0LL, $ - 'eboss_target0', 0LL, $ - ;;- JB adding 4 new bits - 'eboss_target1', 0LL, $ - 'eboss_target2', 0LL, $ - 'eboss_target_id', 0LL, $ - 'thing_id_targeting', 0LL, $ - 'tileid' , 0L, $ - 'objc_type' , '', $ - 'modelflux' , fltarr(5) ) - ;; 'z_person' , 0.0, $ - ;; 'class_person', 0L, $ - ;; 'z_conf_person', 0L ) - - tag_alias = [['SPECPRIMARY','PRIMARY'], $ - ['FIBERID','FIBER'], $ - ['BOSS_TARGET1','BOSS1'], $ - ['EBOSS_TARGET0','EBOSS0'], $ - ;;- JB adding 4 new aliases - ['EBOSS_TARGET1','EBOSS1'], $ - ['EBOSS_TARGET2','EBOSS2'], $ - ['EBOSS_TARGET_ID','EBOSSID'], $ - ['THING_ID_TARGETING','THIDTARG'],$ - ['ANCILLARY_TARGET1','ANCILLARY1']] - - ; Read the tags that we need from the FITS file - outdat = hogg_mrdfits(outroot[0]+'.fits.tmp', 1, nrowchunk=10000L, $ - columns=tag_names(adat1), /unsigned) - adat = replicate(adat1, n_elements(outdat)) - copy_struct, outdat, adat - - ; Replace any blank strings for CLASS with "". - ii = where(strtrim(adat.class,2) EQ '') - if (ii[0] NE -1) then adat[ii].class = '""' - - ; Replace any blank strings for SUBCLASS with "". - ; If SUBCLASS contains several words, then use a plus sign between - ; the words rather than a space. - adat.subclass = strtrim(adat.subclass,2) - ii = where(adat.subclass EQ '') - if (ii[0] NE -1) then adat[ii].subclass = '""' - adat.subclass = repstr(adat.subclass, ' ', '+') - - objtypes = ['UNKNOWN', 'CR', 'DEFECT', 'GALAXY', 'GHOST', 'KNOWNOBJ', $ - 'STAR', 'TRAIL', 'SKY'] - adat.objc_type = objtypes[outdat.objc_type] - - outdat = 0 ; Clear memory - - splog, 'Writing ASCII file ' + outroot[0]+'.dat' - struct_print, adat, filename=outroot[0]+'.dat.tmp', alias=tag_alias - - adat = 0 ; Clear memory - - ;---------- - ; Create the merged line data - - if (not keyword_set(skip_line)) then begin - splog, 'Writing FITS zline file ' + outroot[1]+'.fits' - for ifile=0L, nfile-1 do begin - splog, 'Writing zline ', ifile+1, ' of ', nfile - readspec, plist[ifile].plate, mjd=plist[ifile].mjd, $ - run2d=strtrim(plist[ifile].run2d), run1d=strtrim(plist[ifile].run1d), $ - zline=linedat, /silent - - if (ifile EQ 0) then begin - nobj = total(plist.n_total) - nper = n_elements(linedat) / plist[0].n_total - sxaddpar, linehdr, 'DIMS0', nper, ' Number of emission lines' - sxaddpar, linehdr, 'DIMS1', nobj, ' Number of objects' - linedat1 = linedat[0] - struct_assign, {junk:0}, linedat1 - endif - - ; Demand that the structure has the same format as the first - ; one written. - linedat_out = replicate(linedat1, n_elements(linedat)) - struct_assign, linedat, linedat_out - - mwrfits_chunks, linedat_out, outroot[1]+'.fits.tmp', linehdr, $ - create=(ifile EQ 0), append=(ifile GT 0) - endfor - endif - - ;---------- - ; Rename temporary files - - spawn, ['mv', outroot[0]+'.fits.tmp', outroot[0]+'.fits'], /noshell - spawn, ['gzip', outroot[0]+'.dat.tmp'], /noshell - spawn, ['mv', outroot[0]+'.dat.tmp.gz', outroot[0]+'.dat.gz'], /noshell - if (not keyword_set(skip_line)) then $ - spawn, ['mv', outroot[1]+'.fits.tmp', outroot[1]+'.fits'], /noshell - - thismem = memory() - maxmem = thismem[3] - splog, 'Maximum memory usage = ', maxmem/1.d6, ' MB' - splog, 'Total time = ', systime(1)-t1, ' sec' - - return -end - -;------------------------------------------------------------------------------ -pro platemerge, run2d=run2d, indir=indir, mergerun2d=mergerun2d, programs=programs, $ - _EXTRA=Extra - - if keyword_set(mergerun2d) then begin - platelist, outdir=getenv('BOSS_SPECTRO_REDUX'), plist=plist - platemerge1, plist=plist, _EXTRA=Extra - - endif else begin - - platelist, plist=plist, topdir=indir, run2d=run2d - - if (NOT keyword_set(plist)) then return - - if keyword_set(programs) then begin - print, 'Selecting only plates with programname:' - print, programs - nmatch = lonarr(n_elements(plist)) - for i=0, n_elements(programs)-1 do $ - nmatch+= strmatch(strtrim(plist.PROGRAMNAME,2), strtrim(programs[i],2) ) - indx = where( nmatch GT 0, ct) - if (ct EQ 0) then begin - print, 'No plates found with programnames : ' - print, programs - return - endif - plist=plist[indx] - platemerge1, plist=plist, run2d=run2d, _EXTRA=Extra - return - endif - - - - alldir = strtrim(plist.run2d) - alldir = alldir[uniq(alldir, sort(alldir))] - if (keyword_set(run2d)) then begin - nmatch = lonarr(n_elements(alldir)) - for i=0, n_elements(run2d)-1 do $ - nmatch += strmatch(alldir,run2d[i]) - indx = where(nmatch GT 0, ct) - if (ct EQ 0) then return - alldir = alldir[indx] - endif - - for i=0, n_elements(alldir)-1 do $ - platemerge1, run2d=alldir[i], indir=indir, _EXTRA=Extra - - endelse -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/plotm67.pro b/pro/spec1d/plotm67.pro deleted file mode 100644 index 1aaa048bb..000000000 --- a/pro/spec1d/plotm67.pro +++ /dev/null @@ -1,34 +0,0 @@ -; Plot velocity errors from M67 plate (plate 321) -pro plotm67 - - dfpsplot, 'm67vels.ps' - - cspeed = 3.e5 - csize = 2.0 - - readspec, 321, zans=zans, plug=plug - indx = where(plug.expl GT -900 and zans.zwarning EQ 0 $ - AND strmatch(zans.class,'STAR*')) - zans = zans[indx] - plug = plug[indx] - - cz_dave = zans.z * cspeed - cz_err = zans.z_err * cspeed - cz_cat = plug.expl - vdiff = cz_dave - cz_cat - - plot, cz_cat, cz_dave, psym=4, charsize=csize, $ - xtitle='Catalog cz [km/s]', ytitle='SDSS cz [km/s]', $ - title='Velocities in M67 (Plate 321)' - djs_oploterr, cz_cat, cz_dave, yerr=cz_err - djs_oplot, !x.crange, !x.crange - - ibad = where(abs(vdiff) GT 20) - djs_xyouts, cz_cat[ibad], cz_dave[ibad], $ - ' '+strtrim(zans.subclass,2), charsize=csize - - dfpsclose - - return -end - diff --git a/pro/spec1d/plotspec.pro b/pro/spec1d/plotspec.pro deleted file mode 100644 index 737ab5de5..000000000 --- a/pro/spec1d/plotspec.pro +++ /dev/null @@ -1,719 +0,0 @@ -;+ -; NAME: -; plotspec -; -; PURPOSE: -; Routine for plotting spectra from Princeton-1D spectro outputs. -; -; CALLING SEQUENCE: -; plotspec, plate, [ fiberid, mjd=, znum=, zmanual=, $ -; nsmooth=, /zline, /nosyn, /noerr, $ -; /sky, /ormask, /andmask, psfile=, /restframe, /netimage, $ -; /zwarning, /allexp, _EXTRA= ] -; -; INPUTS: -; plate - Plate number(s) -; -; OPTIONAL INPUTS: -; fiberid - Fiber number(s); if not set, then plot all fibers for -; each plate specified. -; mjd - MJD number(s); if not set, then select the most recent -; data for each plate (largest MJD). -; znum - If set, then return not the best-fit redshift, but the -; ZUM-th best-fit; e.g., set ZNUM=2 for second-best fit. -; zmanual - If set, then do an on-the-fly fit to either a galaxy -; template (if ZMANUAL[0]<1) or QSO (if ZMANUAL[0]>=1), -; overriding ZNUM. If this is a 2-element array, then fit -; between all redshifts in the range [ZMANUAL[0],ZMANUAL[1]]. -; Do not include any polynomial terms with the PCA templates. -; nsmooth - If set, then boxcar smooth both the object and synthetic -; spectra with a width equal to NSMOOTH. -; zline - If set, then overplot the emission line fits. -; nosyn - If set, then do not overplot the synthetic fit spectrum (blue). -; noerr - If set, then do not overplot the error vector (red). -; sky - If set, then overplot the sky spectrum (green). -; ormask - If set, then plot the OR-mask bits in yellow crosses. -; andmask - If set, then plot the AND-mask bits in red squares. -; psfile - If set, then send plot to a PostScript file instead of -; to the SPLOT interactive widget. The PostScript file name -; can be set explicitly, e.g. with PSFILE='test.ps'. Or if -; you simply set this as a flag, e.g. with /PSFILE, then the -; default file name is "spec-pppp-mmmmm-fff.ps", -; where pppp=plate number, mmmmm=MJD, fff=fiber ID. -; If FIBERID is specified, then put all plots in a single file -; named "spec-pppp-mmmmm.ps". -; restframe - If set, then plot the wavelengths in the rest frame, -; e.g. divide the wavelengths by (1+z). -; netimage - If set, then launch a Netscape browser with the object -; image from Steve Kent's web site. This only works if -; Netscape is running and has permissions at the site -; "http://sdssmosaic.fnal.gov:8015". ??? -; This is disabled if PSFILE is set. -; zwarning - If set, then only select those non-sky fibers where the -; ZWARNING flag has been set; can be used with or without -; specifying fiber numbers with FIBERID. -; allexp - If set, then plot all the individual exposure spectra, -; rather than the co-added spectrum. -; _EXTRA - Keywords for SPLOT and XYOUTS, such as XRANGE, YRANGE, THICK, -; or keywords for READSPEC and READONESPEC such as TOPDIR, -; RUN2D, RUN1D. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The data are read with READSPEC. See the documentation for that -; routine to see how to set environment variables that describe where -; the data files are. -; -; EXAMPLES: -; Plot the spectrum of plate 401, fiber #100 using the SPLOT plotting tool: -; IDL> plotspec, 401, 100 -; -; The spectrum is shown in white, the errors in red (except masked points -; are set to zero), and the best-fit eigenspectrum in blue. The mouse -; buttons will zoom in (left), recenter (center), or zoom out (right). -; The frame can be saved as a PostScript file by selecting File->WriteEPS -; from the left-hand corner. -; -; Make the same plot, but boxcar-smooth the spectrum and limit the -; wavelength range to [4000,5000] Angstroms: -; IDL> plotspec, 401, 100, nsmooth=10, xrange=[5000,6000] -; -; Some plates are observed on multiple nights. To select one of the two -; observations of plate 306: -; IDL> plotspec, 306, 20, mjd=51690 -; -; Loop through all the spectra for plate 401, interactively: -; IDL> plotspec, 401 -; -; Plot all the spectra from plate 401 to a single PostScript file: -; IDL> plotspec, 401, /psfile -; -; Plot all the spectra from plate 401 to 640 individual PostScript files: -; IDL> plotspec, 401, lindgen(640)+1, /psfile -; -; Plot a list of 3 objects, each with its own plate, MJD, and fiberid: -; IDL> plate = [400,400,401] -; IDL> mjd = [51820,51820,51788] -; IDL> fiberid = [10,11,20] -; IDL> plotspec, plate, mjd=mjd, fiberid -; -; BUGS: -; If the user interactively rescales in Y, then the labels for ORMASK -; and ANDMASK are no longer lined up vertically with the bit mask plot. -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_icolor() -; djs_oplot -; djs_plot -; djs_xyouts -; plotspec_image -; readspec -; soplot -; splot -; sdss_flagname() -; sxyouts -; synthspec() -; textoidl() -; -; INTERNAL SUPPORT ROUTINES: -; plotspec_mask -; plotspec1 -; -; REVISION HISTORY: -; 01-Sep-2000 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro plotspec_mask, wave, thismask, psfile=psfile, nolabel=nolabel, $ - _EXTRA=Extra - - bitlabel = sdss_flagname('SPPIXMASK', 2UL^32-1, /silent) - bitnum = where(bitlabel NE '', nlabel) - bitlabel = bitlabel[bitnum] - - for ilabel=0, nlabel-1 do begin - ypos = ( (ilabel+1) * !y.crange[1] + (nlabel-ilabel) * !y.crange[0] ) $ - / (nlabel+1) - ynorm = ( (ilabel+0.8) * !y.window[1] + (nlabel-ilabel) * !y.window[0] ) $ - / float(nlabel+1) - ipix = where((thismask AND 2L^bitnum[ilabel]) NE 0, npix) - if (npix GT 0) then begin - if (keyword_set(psfile)) then begin - djs_oplot, [wave[ipix]], [replicate(ypos,npix)], $ - _EXTRA=Extra - endif else begin - soplot, [wave[ipix]], [replicate(ypos,npix)], $ - _EXTRA=Extra - endelse - endif - if (NOT keyword_set(nolabel)) then begin - if (keyword_set(psfile)) then begin - djs_xyouts, !x.window[1], ynorm, bitlabel[ilabel]+' ', $ - charsize=1.4, align=1.0, _EXTRA=Extra, /normal - endif else begin - sxyouts, !x.window[1], ynorm, bitlabel[ilabel]+' ', $ - charsize=1.4, align=1.0, _EXTRA=Extra, /normal - endelse - endif - endfor - - return -end -;------------------------------------------------------------------------------ -pro plotspec1, plate, fiberid, mjd=mjd, znum=znum, zmanual=zmanual, $ - nsmooth=nsmooth1, zline=q_zline, nosyn=nosyn, noerr=noerr, sky=sky, $ - ormask=ormask, andmask=andmask, $ - psfile=psfile, xrange=passxr, yrange=passyr, noerase=noerase, $ - restframe=restframe, netimage=netimage, allexp=allexp, _EXTRA=Extra, $ - legacy=legacy, plates=plates - - cspeed = 2.99792458e5 - textcolor = 'green' - linecolor = 'magenta' - orcolor = 'yellow' - andcolor = 'red' - - readspec, plate, fiberid, mjd=mjd, znum=znum, flux=objflux, $ - wave=wave, plug=plug, zans=zans, _EXTRA=Extra, /silent, $ - legacy=legacy, plates=plates - if (NOT keyword_set(objflux)) then begin - print, plate, mjd, fiberid, $ - format='("Spectrum not found for plate=", i6, " MJD=", i5, " fiber=", i3)' - return - endif - if (keyword_set(allexp)) then begin - readonespec, plate, fiberid, mjd=mjd, wave=allwave, flux=allflux, $ - _EXTRA=Extra, /silent - ndim = size(allflux,/n_dimen) - if (ndim EQ 1) then nexp = 1 $ - else nexp = (size(allflux,/dimens))[1] - endif - if (keyword_set(restframe)) then begin - wave = wave / (1. + zans.z) - if (keyword_set(allwave)) then allwave = allwave / (1. + zans.z) - endif - if (NOT keyword_set(noerr)) then $ - readspec, plate, fiberid, mjd=mjd, flerr=objerr, _EXTRA=Extra, /silent, $ - legacy=legacy, plates=plates - if (keyword_set(zmanual)) then begin - readspec, plate, fiberid, mjd=mjd, invvar=objivar, loglam=loglam, $ - objhdr=hdr, _EXTRA=Extra, /silent, legacy=legacy, plates=plates - if (zmanual[0] LT 1.) then eigenfile = 'spEigenGal-*.fits' $ - else eigenfile = 'spEigenQSO-*.fits' - npoly = 0 - if (n_elements(zmanual) EQ 1) then zrange=[zmanual,zmanual] $ - else zrange=zmanual[0:1] - res_manual = zfind(objflux, objivar, hdr=hdr, $ - eigenfile=eigenfile, npoly=npoly, zmin=zrange[0], zmax=zrange[1], $ - pspace=1, nfind=1, width=1) - synflux = synthspec(res_manual, loglam=loglam) - endif else begin - if (NOT keyword_set(nosyn)) then $ - readspec, plate, fiberid, mjd=mjd, znum=znum, synflux=synflux, $ - _EXTRA=Extra, /silent, legacy=legacy, plates=plates - endelse - if (keyword_set(sky)) then $ - readspec, plate, fiberid, mjd=mjd, sky=sky, _EXTRA=Extra, /silent, $ - legacy=legacy, plates=plates - if (keyword_set(ormask)) then $ - readspec, plate, fiberid, mjd=mjd, ormask=ormask, _EXTRA=Extra, /silent, $ - legacy=legacy, plates=plates - if (keyword_set(andmask)) then $ - readspec, plate, fiberid, mjd=mjd, andmask=andmask, _EXTRA=Extra, /silent, $ - legacy=legacy, plates=plates - if (keyword_set(zans) AND keyword_set(q_zline)) then $ - readspec, plate, fiberid, mjd=mjd, zline=zline, lineflux=lineflux, $ - _EXTRA=Extra, /silent, legacy=legacy, plates=plates - - if (keyword_set(nsmooth1)) then nsmooth = nsmooth1 $ - else nsmooth = 1 - - if (nsmooth GT 1) then begin - objflux = smooth(objflux, nsmooth) - if (keyword_set(allflux)) then begin - for iexp=0, nexp-1 do $ - allflux[*,iexp] = smooth(allflux[*,iexp], nsmooth) - endif - if (keyword_set(synflux)) then $ - synflux = smooth(synflux, nsmooth) - if (keyword_set(lineflux)) then $ - lineflux = smooth(lineflux, nsmooth) - endif - - ;plug.mag - targstring = strmatch(plug.objtype,'SKY*') ? 'SKY ' : '' - if (tag_exist(plug,'PRIMTARGET')) then $ - targstring += sdss_flagname('TARGET', plug.primtarget, /concat)+' ' - if (tag_exist(plug,'SECTARGET')) then $ - targstring += sdss_flagname('TTARGET', plug.sectarget, /concat)+' ' - if (tag_exist(plug,'BOSS_TARGET1')) then $ - targstring += sdss_flagname('BOSS_TARGET1', plug.boss_target1, /concat)+' ' - if (tag_exist(plug,'BOSS_TARGET2')) then $ - targstring += sdss_flagname('BOSS_TARGET2', plug.boss_target2, /concat)+' ' - ;- JEB adding eboss target bits - if (tag_exist(plug,'EBOSS_TARGET0')) then $ - targstring += sdss_flagname('EBOSS_TARGET0', plug.eboss_target0, /concat)+' ' - if (tag_exist(plug,'EBOSS_TARGET1')) then $ - targstring += sdss_flagname('EBOSS_TARGET1', plug.eboss_target1, /concat)+' ' - if (tag_exist(plug,'EBOSS_TARGET2')) then $ - targstring += sdss_flagname('EBOSS_TARGET2', plug.eboss_target2, /concat)+' ' - if (tag_exist(plug,'ANCILLARY_TARGET1')) then targstring += $ - sdss_flagname('ANCILLARY_TARGET1', plug.ancillary_target1, /concat)+' ' - if (tag_exist(plug,'ANCILLARY_TARGET2')) then targstring += $ - sdss_flagname('ANCILLARY_TARGET2', plug.ancillary_target2, /concat)+' ' - targstring = strtrim(targstring) ; get rid of trailing spaces - - csize = 1.75 - if (keyword_set(passyr)) then begin - yrange = passyr - ymin = yrange[0] - ymax = yrange[1] - endif else begin - if (keyword_set(synflux)) then $ - yrange = minmax(synflux) $ - else $ - yrange = minmax(objflux) - - if (yrange[0] EQ yrange[1]) then yrange = minmax(objflux) - ymin = (1.3 * yrange[0] - 0.3 * yrange[1]) < 0 - ymax = -0.3 * yrange[0] + 1.3 * yrange[1] - if (ymax EQ ymin) then ymax = ymin + 1 - yrange = [ymin, ymax] - endelse - if (keyword_set(passxr)) then xrange = passxr $ - else xrange = minmax(wave) - if (keyword_set(ormask) OR keyword_set(andmask)) then $ - xrange[1] = 1.15 * xrange[1] - 0.15 * xrange[0] - - title = 'Plate ' + strtrim(string(plate),2) $ - + ' Fiber ' + strtrim(string(fiberid),2) $ - + ' MJD=' + strtrim(string(mjd),2) - if (keyword_set(restframe)) then xtitle = 'Rest-Frame Wavelength [Ang]' $ - else xtitle = 'Observed Wavelength [Ang]' - if (keyword_set(psfile)) then begin - djs_plot, xrange, yrange, /nodata, xrange=xrange, yrange=yrange, $ - xtitle=xtitle, ytitle=TeXtoIDL('Flux [10^{-17} erg/s/cm^2/Ang]'), $ - title=title, charsize=csize, _EXTRA=KeywordsForSplot, /xstyle, /ystyle - if (keyword_set(allexp)) then begin - for iexp=0, nexp-1 do $ - djs_oplot, allwave[*,iexp], allflux[*,iexp], $ - psym=(nsmooth GT 1) ? 0 : 3, _EXTRA=KeywordsForSplot - endif else begin - djs_oplot, wave, objflux, _EXTRA=KeywordsForSplot - endelse - if (NOT keyword_set(noerr)) then $ - djs_oplot, wave, objerr, color='red', _EXTRA=KeywordsForSplot - if (keyword_set(sky)) then $ - djs_oplot, wave, sky, color='green', lw=2, _EXTRA=KeywordsForSplot - if (keyword_set(synflux)) then $ - djs_oplot, wave, synflux, color='blue', lw=2, _EXTRA=KeywordsForSplot - endif else begin - if (NOT keyword_set(noerase)) then $ - splot, xrange, yrange, /nodata, xrange=xrange, yrange=yrange, $ - xtitle=xtitle, ytitle=TeXtoIDL('Flux [10^{-17} erg/s/cm^2/Ang]'), $ - title=title, charsize=csize, _EXTRA=KeywordsForSplot - if (keyword_set(allexp)) then begin - for iexp=0, nexp-1 do $ - soplot, allwave[*,iexp], allflux[*,iexp], $ - _EXTRA=KeywordsForSplot - endif else begin - soplot, wave, objflux, _EXTRA=KeywordsForSplot - endelse - if (NOT keyword_set(noerr)) then $ - soplot, wave, objerr, color='red', _EXTRA=KeywordsForSplot - if (keyword_set(sky)) then $ - soplot, wave, sky, color='green', lw=2, _EXTRA=KeywordsForSplot - if (keyword_set(synflux)) then $ - soplot, wave, synflux, color='blue', lw=2, _EXTRA=KeywordsForSplot - endelse - - xpos = 0.9 * !x.window[0] + 0.1 * !x.window[1] - dypos = 0.05 * (!y.window[0] - !y.window[1]) - ypos = !y.window[1] + 1.5 * dypos - - if (keyword_set(zmanual) OR keyword_set(zans)) then begin - if (keyword_set(zmanual)) then begin - zstring = res_manual.tfile $ - + ' z=' + string(res_manual.z,format='(f8.5)') - endif else begin - zstring = zans.class + ' ' + zans.subclass - cz = zans.z * cspeed - if (abs(cz) LT 3000) then $ - zstring += ' cz=' + string(cz,format='(f6.0)') + ' km/s' $ - else $ - zstring += ' z=' + string(zans.z,format='(f8.5)') - if (zans.zwarning NE 0) then $ - zstring += ' (' $ - + sdss_flagname('ZWARNING', zans.zwarning, /concat) + ')' - if (keyword_set(znum)) then $ - zstring += ' (fit #' + strtrim(string(znum),2) + ')' - endelse - - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, zstring, $ - charsize=csize, color=djs_icolor(textcolor), /normal, $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, xpos, ypos, zstring, $ - charsize=csize, color=textcolor, /normal, $ - _EXTRA=KeywordsForSplot - - ypos = ypos + dypos - - if (keyword_set(res_manual)) then thisrchi2 = res_manual.rchi2 $ - else thisrchi2 = zans.rchi2 - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, $ - TeXtoIDL('X^2_r =' + strtrim(string(thisrchi2, format='(f7.3)'),2)), $ - charsize=csize, color=djs_icolor(textcolor), /normal, $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, xpos, ypos, $ - TeXtoIDL('X^2_r =' + strtrim(string(thisrchi2, format='(f7.3)'),2)), $ - charsize=csize, color=textcolor, /normal, $ - _EXTRA=KeywordsForSplot - endif - - if (keyword_set(lineflux)) then begin - if (keyword_set(psfile)) then $ - djs_oplot, wave, lineflux, color=linecolor, lw=2, _EXTRA=KeywordsForSplot $ - else $ - soplot, wave, lineflux, color=linecolor, lw=2, _EXTRA=KeywordsForSplot - - linewave = zline.linewave $ - * (1 + zline.linez * (keyword_set(restframe) EQ 0)) - ; Convert line sigma from km/sec to Angstroms - linesigma = linewave * zline.linesigma / cspeed - linepeak = zline.linecontlevel + zline.linearea / (sqrt(2*!pi) * linesigma) - for iline=0, n_elements(zline)-1 do begin - if (zline[iline].linearea_err GT 0) then begin - if (keyword_set(psfile)) then $ - xyouts, linewave[iline], linepeak[iline], $ - ' '+zline[iline].linename, orient=90, $ - charsize=0.75*csize, color=djs_icolor(linecolor), $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, linewave[iline], linepeak[iline], $ - ' '+zline[iline].linename, orient=90, $ - charsize=0.75*csize, color=linecolor, $ - _EXTRA=KeywordsForSplot - endif - endfor - endif - - if (keyword_set(ormask)) then begin - plotspec_mask, wave, ormask, psfile=psfile, $ - psym=1, symsize=0.6, color=orcolor, $ - nolabel=keyword_set(andmask), _EXTRA=KeywordsForSplot - endif - - if (keyword_set(andmask)) then begin - plotspec_mask, wave, andmask, psfile=psfile, $ - psym=6, symsize=0.6, color=andcolor, _EXTRA=KeywordsForSplot - endif - - if (keyword_set(targstring)) then begin - ypos = ypos + dypos - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, 'Target = '+targstring, $ - charsize=csize, color=djs_icolor(textcolor), /normal, $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, xpos, ypos, 'Target = '+targstring, $ - charsize=csize, color=textcolor, /normal, $ - _EXTRA=KeywordsForSplot - endif - - if (keyword_set(netimage) AND NOT keyword_set(psfile)) then begin - netstring = 'http://sdssmosaic.fnal.gov:8015/template/tsSingle.tml?run=' $ - + strtrim(string(plug.objid[0]),2) $ - + '&camcol=' + strtrim(string(plug.objid[2]),2) $ - + '&field=' + strtrim(string(plug.objid[3]),2) $ - + '&ra=' + strtrim(string(plug.ra),2) $ - + '&dec=' + strtrim(string(plug.dec),2) - spawn, '\netscape -remote "openURL(' + netstring + ')"' -print,netstring - endif - - return -end -;------------------------------------------------------------------------------ -pro plotspec, plate, fiberid, mjd=mjd, znum=znum, nsmooth=nsmooth, $ - zline=zline, nosyn=nosyn, noerr=noerr, sky=sky, $ - ormask=ormask, andmask=andmask, $ - psfile=psfile, xrange=xrange, yrange=yrange, noerase=noerase, $ - restframe=restframe, netimage=netimage, zwarning=zwarning, allspec=allspec, $ - _EXTRA=Extra, legacy=legacy, plates=plates, confid=confid - - if (n_params() LT 1) then begin - doc_library, 'plotspec' - return - endif - - quiet = !quiet - !quiet = 1 - - ;---------- - ; If MJD is not set, then find the MJD for each plate - - nplate = n_elements(plate) - if (NOT keyword_set(mjd)) then begin - mjd = lonarr(nplate) - for iplate=0, nplate-1 do begin - mjd1 = 0 - readspec, plate[iplate], mjd=mjd1, _EXTRA=Extra, /silent - if (NOT keyword_set(mjd1)) then begin - print, 'No MJD found for plate ', plate[iplate] - !quiet = quiet - return - endif - mjd[iplate] = mjd1 - endfor - endif else begin - if (n_elements(mjd) NE nplate) then begin - print, 'Number of elements in PLATE and MJD do not agree' - !quiet = quiet - return - endif - endelse - - ;---------- - ; If /ZWARNING is set, then find the flagged fibers to plot. - - if (keyword_set(zwarning)) then begin - if (keyword_set(fiberid)) then begin - print, 'FIBERID and /ZWARNING cannot both be set.' - !quiet = quiet - return - endif - - for iplate=0L, nplate-1L do begin - readspec, plate[iplate], mjd=mjd[iplate], $ - _EXTRA=Extra, /silent, zans=zans - if (NOT keyword_set(zans)) then begin - print, 'No spZ file found for selecting ZWARNING flags' - !quiet = quiet - return - endif - indx = where((zans.zwarning AND 1) EQ 0 AND zans.zwarning NE 0, nthis) - if (nthis GT 0) then begin - if (NOT keyword_set(fiberid)) then begin - platelist = replicate(plate[iplate], nthis) - mjdlist = replicate(mjd[iplate], nthis) - fiberid = zans[indx].fiberid - endif else begin - platelist = [platelist, replicate(plate[iplate], nthis)] - mjdlist = [mjdlist, replicate(mjd[iplate], nthis)] - fiberid = [fiberid, zans[indx].fiberid] - endelse - endif - endfor - if (NOT keyword_set(fiberid)) then begin - print, 'No non-sky fibers with ZWARNING flag set' - !quiet = quiet - return - endif - nfiber = n_elements(fiberid) - print, 'Selecting ', nfiber, ' non-sky fibers with ZWARNING flag set' - endif - - ;---------- - ; Set FIBERID to [1,...,NFIBER] (for each plate) if not set. - ; - ; If writing to a PostScript file, then all plots are in the same file - ; either if PSFILE is that file name, or if FIBERID is not specified - ; (and then all spectra are being plotted). - - if (NOT keyword_set(fiberid)) then begin - readspec, plate, mjd=mjd, 0*plate+1, nfiber=nfiber_tmp, $ - _EXTRA=Extra, /silent - nfiber_tot = long(total(nfiber_tmp)) - if (nfiber_tot EQ 0) then begin - print, 'No fibers found' - !quiet = quiet - return - endif - platelist = lonarr(nfiber_tot) - mjdlist = lonarr(nfiber_tot) - fiberid = lonarr(nfiber_tot) - j = 0L - for iplate=0L, nplate-1L do begin - platelist[j:j+nfiber_tmp[iplate]-1] = plate[iplate] - mjdlist[j:j+nfiber_tmp[iplate]-1] = mjd[iplate] - fiberid[j:j+nfiber_tmp[iplate]-1] = lindgen(nfiber_tmp[iplate]) + 1 - j += nfiber_tmp[iplate] - endfor - if (keyword_set(psfile)) then begin - q_onefile = 1 - psfilename = string(plate_to_string(plate[0]), mjd[0], $ - format='("spec-",a,"-",i5.5,".ps")') - endif - endif - -; if (min(fiberid) LT 1 OR max(fiberid) GT 640) then begin -; print, 'Invalid FIBERID (must be between 1 and 640)' -; return -; endif - - ;---------- - ; If FIBERID is specified, and writing to a PostScript file, - ; then open only one PS file for all plots. - - nfiber = n_elements(fiberid) - if (size(psfile,/tname) EQ 'STRING' AND nfiber GT 1) then begin - psfilename = psfile - q_onefile = 1 - endif - - ;---------- - ; If /ZWARNING is not set, then construct the PLATELIST,MJDLIST. - - if (n_elements(platelist) EQ 0) then begin - if (nplate EQ 1) then begin - platelist = replicate(plate, nfiber) - mjdlist = replicate(mjd, nfiber) - endif else begin - platelist = plate - mjdlist = mjd - endelse - endif else if (n_elements(platelist) NE n_elements(fiberid)) then begin - print, 'Number of elements in PLATE and FIBERID do not agree.' - !quiet = quiet - return - endif - - ;---------- - ; Loop over each plot - - ifiber = 0L - while (ifiber LT nfiber) do begin - - ;---------- - ; Open the PostScript file if appropriate - - if (keyword_set(psfile)) then begin - if (NOT keyword_set(q_onefile)) then begin - if (size(psfile,/tname) EQ 'STRING') then $ - psfilename = psfile $ - else $ - psfilename = string(plate_to_string(platelist[ifiber]), mjdlist[ifiber], $ - fiberid[ifiber], format='("spec-", a,"-",i5.5,"-",i3.3,".ps")') - endif - - if (NOT keyword_set(q_onefile) OR ifiber EQ 0) then begin - dfpsplot, psfilename, /color, /square - endif - endif - - plotspec1, platelist[ifiber], fiberid[ifiber], mjd=mjdlist[ifiber], $ - znum=znum, zmanual=zmanual, nsmooth=nsmooth, zline=zline, $ - nosyn=nosyn, noerr=noerr, $ - sky=sky, ormask=ormask, andmask=andmask, psfile=psfile, $ - xrange=xrange, yrange=yrange, noerase=noerase, netimage=netimage, $ - restframe=restframe, allexp=allexp, _EXTRA=Extra, $ - legacy=legacy, plates=plates - - if (keyword_set(psfile)) then begin - if (NOT keyword_set(q_onefile) OR ifiber EQ nfiber-1) then dfpsclose - ifiber = ifiber + 1 - endif else begin - if (ifiber LT nfiber-1) then begin - if (keyword_set(nsmooth)) then $ - sstring = ' (currently=' + strtrim(string(nsmooth),2) + ')' $ - else $ - sstring = '' - - print, 'Press b=back one fiber' - print, ' p=select new plate' - print, ' f=select new fiber number' - print, ' n=change which PCA-fit to plot' - print, ' q=quit (and enter interactive mode for this plot)' - print, ' s=change boxcar smoothing' + sstring - print, ' x=change X plotting range' - print, ' y=change Y plotting range' - print, ' z=manual z' - print, ' v=view reconstructed frame' - print, ' any other key=forward' - - cc = strupcase(get_kbrd(1)) - print, cc - case cc of - 'V': begin - if (keyword_set(getenv('PHOTOOP_DIR'))) then begin - readspec, platelist[ifiber], fiberid[ifiber], $ - mjd=mjdlist[ifiber], zans=zans, _EXTRA=Extra, /silent, $ - legacy=legacy, plates=plates - plotspec_image, ra=zans.plug_ra, dec=zans.plug_dec, $ - cutout=300, /calibrate, /register, /allid - endif else begin - print, 'Need to set up photoop product to display images' - endelse - end - 'B': begin - ifiber = (ifiber - 1) > 0 - zmanual = 0. - end - 'P': begin - read, plate, mjd, prompt='Enter new plate and MJD (enter 0 for unknown MJD): ' - if (NOT keyword_set(mjd)) then $ - readspec, plate, mjd=mjd, _EXTRA=Extra, /silent, $ - legacy=legacy, plates=plates - if (NOT keyword_set(mjd)) then begin - print, 'MJD not found for plate ', plate - !quiet = quiet - return - endif - readspec, plate, mjd=mjd, nfiber=nfiber, $ - _EXTRA=Extra, /silent, $ - legacy=legacy, plates=plates - platelist = replicate(plate,nfiber) - mjdlist = replicate(mjd,nfiber) - zmanual = 0. - end - 'N': begin - read, znum, prompt='Enter 1=best redshift, 2=2nd best, ...: ' - znum = long(znum) > 0 - zmanual = 0. - end - 'F': begin - read, newfiber, prompt='Enter new fiber number: ' - ifiber = ((long(newfiber)-1) > 0) < (nfiber-1) - zmanual = 0. - end - 'Q': ifiber = nfiber - 'S': begin - read, nsmooth, prompt='Enter boxcar smoothing width (0=none): ' - nsmooth = long(nsmooth) > 0 - end - 'X': begin - read, xmin, xmax, prompt='Enter new X range values (0 0=full range): ' - if (xmin EQ 0 AND xmax EQ 0) then xrange = 0 $ - else xrange = [xmin, xmax] - end - 'Y': begin - read, ymin, ymax, prompt='Enter new Y range values (0 0=full range): ' - if (ymin EQ 0 AND ymax EQ 0) then yrange = 0 $ - else yrange = [ymin, ymax] - end - 'Z': begin - read, zmanual, prompt='Enter redshift guess (zmin zmax)...: ' - end - else: begin - ifiber = ifiber + 1 - zmanual = 0. - end - endcase - endif else begin - ifiber = nfiber - endelse - endelse - endwhile - - !quiet = quiet - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/plotspec_image.pro b/pro/spec1d/plotspec_image.pro deleted file mode 100644 index 9502d4800..000000000 --- a/pro/spec1d/plotspec_image.pro +++ /dev/null @@ -1,44 +0,0 @@ -;+ -; NAME: -; plotspec_image -; -; PURPOSE: -; Procedure to display an image, launched from PLOTSPEC -; -; CALLING SEQUENCE: -; plotspec_image, ra, dec, [ _EXTRA= ] -; -; INPUTS: -; ra - Right ascension (degrees) -; dec - Declination (degrees) -; -; OPTIONAL INPUTS: -; _EXTRA - Keywords to pass to FPBIN_TO_FRAME -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; atv -; fpbin_to_frame() -; -; REVISION HISTORY: -; 30-Sep-2005 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro plotspec_image, ra, dec, _EXTRA=EXTRA - - fpframe = fpbin_to_frame(ra=ra, dec=dec, rerun='*', $ - _EXTRA=EXTRA, hdr=hdr) - atv, fpframe, head=hdr - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/plotspecqa.pro b/pro/spec1d/plotspecqa.pro deleted file mode 100644 index 0418aa66e..000000000 --- a/pro/spec1d/plotspecqa.pro +++ /dev/null @@ -1,74 +0,0 @@ -;+ -; NAME: -; plotspecqa -; -; PURPOSE: -; Wrapper for PLOTSPEC to plot standard stars and/or sky spectra. -; -; CALLING SEQUENCE: -; plotspecqa, [ /standards, /skies, _EXTRA= ] -; -; INPUTS: -; plate - Plate number(s) -; -; OPTIONAL INPUTS: -; standards - Select standard stars for plotting -; skies - Select sky spectra for plotting -; _EXTRA - Kewords for PLOTSPEC -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; plotspec -; readspec -; splog -; -; REVISION HISTORY: -; 15-Mar-2006 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro plotspecqa, plate, fiberid, mjd=mjd, standards=standards, skies=skies, $ - _EXTRA=EXTRA - - if (keyword_set(standards) OR keyword_set(skies)) then begin - for iplate=0L, n_elements(plate)-1L do begin - if (keyword_set(mjd)) then thismjd = mjd[iplate] $ - else thismjd = 0 - readspec, plate[iplate], fiberid, mjd=thismjd, plugmap=plug - if (NOT keyword_set(plug)) then begin - splot, 'No plugmap structure found for the selected plate' - return - endif - qstandards = keyword_set(standards) $ - AND (strmatch(plug.objtype,'SPECTROPHOTO_STD*') $ - OR strmatch(plug.objtype,'REDDEN_STD*')) - qskies = keyword_set(skies) AND strmatch(plug.objtype,'SKY*') - iplot = where(qstandards OR qskies, nplot) - if (nplot EQ 0) then begin - splog, 'No standard stars or skies selected' - return - endif - if (keyword_set(standards)) then $ - splog, 'Selected ', fix(total(qstandards)), $ - ' standards on plate ', plate[iplate] - if (keyword_set(skies)) then $ - splog, 'Selected ', fix(total(qskies)), $ - ' skies on plate ', plate[iplate] - plotspec, plate[iplate], plug[iplot].fiberid, mjd=thismjd, $ - _EXTRA=EXTRA - endfor - endif else begin - plotspec, plate, fiberid, mjd=mjd, _EXTRA=EXTRA - endelse - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/plotzrepeats.pro b/pro/spec1d/plotzrepeats.pro deleted file mode 100644 index d00f1e818..000000000 --- a/pro/spec1d/plotzrepeats.pro +++ /dev/null @@ -1,99 +0,0 @@ -; Routine to compare redshift errors between multiple observations -; of the same plate. -pro plotzrepeats, plate, mjd - - if (NOT keyword_set(plate)) then plate = 406 - if (NOT keyword_set(mjd)) then mjd = [51817,51869,51876,51900] - - cspeed = 3.e5 - dtheta = 1.0/3600. - - plotfile = string(plate_to_string(plate), format='("zrepeat-", a,".ps")') - - ;---------- - ; Read in all MJDs for this plate - - nmjd = n_elements(mjd) - if (nmjd LE 1) then begin - print, 'No duplicate MJDs for this plate' - return - endif - readspec, replicate(plate,nmjd), mjd=mjd, zans=zans, plug=plug - - ;---------- - ; Find all pairs of the same object - - nmatch = djs_angle_match(zans.plug_ra, zans.plug_dec, dtheta=dtheta, $ - mcount=mcount, mindx=mindx, mdist=mdist, mmax=nmjd) - - ii = where(mindx NE -1, npair) - indx1 = long(ii / nmjd) - indx2 = mindx[ii] - - ;---------- - ; Loop over each class of object - - !p.multi = [0,1,2] - csize = 2.0 - dfpsplot, plotfile - - classlist = ['GALAXY', 'STAR', 'QSO'] - - for iclass=0, n_elements(classlist)-1 do begin - jj = where(strmatch(zans[indx1].class, classlist[iclass]+'*') $ - AND strmatch(zans[indx2].class, classlist[iclass]+'*') $ - AND zans[indx1].z_err GT 0 $ - AND zans[indx2].z_err GT 0 $ - AND zans[indx1].zwarning EQ 0 $ - AND zans[indx2].zwarning EQ 0, nj) - - if (classlist[iclass] EQ 'QSO') then yrange=[-2000,2000] $ - else if (classlist[iclass] EQ 'STAR') then yrange = [-200,200] $ - else yrange = [-200,200] - - if (nj GT 1) then begin - - if (nj LT 1000) then psym = 4 $ - else psym = 3 - - vdiff = (zans[indx1[jj]].z - zans[indx2[jj]].z) * cspeed - verr = sqrt(zans[indx1[jj]].z_err^2 + zans[indx2[jj]].z_err^2) $ - * cspeed - chi = vdiff / verr - cmed = median(abs(chi)) - - print, classlist[iclass] - abschi = abs(chi) - chisort = abschi[sort(abschi)] - chi67 = chisort[fix(0.67*n_elements(chisort))] - print, 'Median(|chi|) = ', cmed - print, 'Median(verr) = ', median(verr) - print, '|Chi| at 67% = ', chi67 - - plothist, chi, bin=0.20, xrange=[-8,8], /xstyle, $ - xtitle=textoidl('\chi = (z_1-z_2) / z_{err}'), $ - ytitle='Number', charsize=csize, $ - title=classlist[iclass]+' Redshift Errors from Repeats' - - djs_xyouts, -7, 0.9*!y.crange[1], charsize=0.75*csize, $ - 'Median(cz_{err})=' + string(median(verr), format='(f6.1)') + ' km/s' - djs_xyouts, -7, 0.8*!y.crange[1], charsize=0.75*csize, $ - '\chi at 67% =' + string(chi67, format='(f5.2)') - -; xplot = plug[indx1[jj]].sn_median - xplot = plug[indx1[jj]].mag[2] - plot, xplot, vdiff, $ - psym=psym, symsize=0.5, yrange=yrange, charsize=csize, $ -; xtitle='Median S/N per pixel', $ - xtitle='r-mag', xrange=[15,22], /xstyle, $ - ytitle=textoidl('(z_1-z_2) [km/s]'), $ - title=classlist[iclass]+' Redshift Errors from Repeats' - djs_oplot, !x.crange, [0,0] - djs_oploterr, xplot, vdiff, $ - yerr=verr - endif - endfor - - dfpsclose - -end diff --git a/pro/spec1d/poly_fill.pro b/pro/spec1d/poly_fill.pro deleted file mode 100644 index 3dc7ab79f..000000000 --- a/pro/spec1d/poly_fill.pro +++ /dev/null @@ -1,35 +0,0 @@ -;+ -; NAME: -; poly_fill -; -; PURPOSE: -; Compare various interpolation methods. -; -; VERSION: -; $Id: poly_fill.pro 50641 2014-11-17 20:39:17Z weaver $ -;- -PRO poly_fill, lambda, flux, invvar, spectrum - l = 250 - goodpts = WHERE( invvar[*,spectrum] GT 0, ngood ) - nflux = N_ELEMENTS(flux[*,spectrum]) - mingood = MIN(goodpts) - maxgood = MAX(goodpts) - smoothflux = SMOOTH(flux[*,spectrum],l,/EDGE_TRUNCATE) - interpflux = djs_maskinterp(flux[*,spectrum],invvar[*,spectrum] EQ 0,/const) - pixels = LINDGEN(nflux) - newflux = interpflux - IF mingood GT 0 THEN BEGIN - damp1 = FLOAT(mingood < l) - newflux *= 0.5*(1.0+ERF(FLOAT(pixels-mingood)/damp1)) - ENDIF - IF maxgood LT nflux-1 THEN BEGIN - damp2 = FLOAT(maxgood < l) - newflux *= 0.5*(1.0+ERF(FLOAT(maxgood-pixels)/damp2)) - ENDIF - djs_plot, lambda, flux[*,spectrum], color='white', xtitle='Wavelength [\AA]', $ - ytitle='Flux [10^{-17} erg cm^{-2} s^{-1} \AA^{-1}]' - djs_oplot, lambda, interpflux, color='red' - djs_oplot, lambda, newflux, color='green' - djs_oplot, lambda, smoothflux, color='blue' - RETURN -END diff --git a/pro/spec1d/primfac.pro b/pro/spec1d/primfac.pro deleted file mode 100644 index 5b9c9b9e8..000000000 --- a/pro/spec1d/primfac.pro +++ /dev/null @@ -1,17 +0,0 @@ -; D. Finkbeiner -; Prime factor routine for calculating FFT efficiency. -; totally bonehead. -PRO primfac, n_in - - n = float(n_in) - FOR i=2L, n+1 DO BEGIN - WHILE n/i-long(n/i) EQ 0.0 DO BEGIN - n = n/i - print, i, format='(I6,$)' - ENDWHILE - - ENDFOR - print - return -END - diff --git a/pro/spec1d/qsorebin.pro b/pro/spec1d/qsorebin.pro deleted file mode 100644 index 713e00648..000000000 --- a/pro/spec1d/qsorebin.pro +++ /dev/null @@ -1,59 +0,0 @@ -;------------------------------------------------------------------------------ -pro qsorebin - - objdloglam = 1.d-4 - wavemin = 525. - wavemax = 9300. - minuse = 40 - - ;---------- - ; Read the template files - ; Assume that the wavelength binning is the same as for the objects - ; in log-wavelength. - - tfile = filepath('qso.template', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='templates') - djs_readcol, tfile, twave, tflux, terr, lq, uq, usemask, $ - format='(D,F,F,F,F,L)' - tloglam0 = alog10(twave[0]) - tdloglam = alog10(twave[1] / twave[0]) - igood = where(terr GT 0) - tivar = 0 * terr - tivar[igood] = 1. / (terr[igood])^2 - - ;---------- - ; Set the new wavelength mapping here... - - newloglam = wavevector(alog10(wavemin), alog10(wavemax), binsz=objdloglam) - - ;---------- - ; Re-bin to the same pixel bin size. - - newflux = interpol(tflux, alog10(twave), newloglam) - newivar = interpol(tivar, alog10(twave), newloglam) - newuse = interpol(float(usemask), alog10(twave), newloglam) - - ;---------- - ; Fill in bad data with a running median of good data - - qgood = newuse GE minuse AND newivar GT 0 - igood = where(qgood, ngood) - ibad = where(qgood EQ 0, nbad) - medflux = 0 * newflux - if (nbad GT 0) then begin - medflux[igood] = djs_median(newflux[igood], width=51, boundary='nearest') - medflux = djs_maskinterp(medflux, qgood EQ 0, /const) - newflux[ibad] = medflux[ibad] - endif - - ;---------- - ; Write output file - - sxaddpar, hdr, 'COEFF0', newloglam[0] - sxaddpar, hdr, 'COEFF1', objdloglam - mwrfits, float(newflux), 'spEigenQSO.fits', hdr, /create - - return -end -;------------------------------------------------------------------------------ - diff --git a/pro/spec1d/readspec_footprint.pro b/pro/spec1d/readspec_footprint.pro deleted file mode 100644 index 2e18fcb0a..000000000 --- a/pro/spec1d/readspec_footprint.pro +++ /dev/null @@ -1,131 +0,0 @@ -;+ -; NAME: -; readspec_footprint -; -; PURPOSE: -; Routine for reading 1D spectro outputs on a given plate footprint -; -; CALLING SEQUENCE: -; readspec, plate, [mjd=, topdir=, /best, /silent, $ -; zans=, plugmap=, tsobj= ] -; -; INPUTS: -; plate - Plate number -; -; OPTIONAL INPUTS: -; mjd - MJD number(s); if not set, then select the most recent -; data for this plate (largest MJD). -; best - If set, then select the best observation of each object, -; using the same algorithm to choose the primary observation -; in the PLATEMERGE routine (for spAll files). -; silent - If set, then call MRDFITS with /SILENT. -; topdir - Top-level directory for data; default to the environment -; variable $BOSS_SPECTRO_REDUX. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; mjd - If not specified, then this returns the MJD of PLATE -; zans - Redshift output structure [NFIBER] -; plugmap - Plug-map entries [NFIBER] -; tsobj - tsObj-structure output [NFIBER] -; -; COMMENTS: -; Read all of the SDSS spectroscopic observations within 1.49 degrees -; of the center of the specified plate. If /BEST is set, then trim -; to the best observation of each object. -; -; EXAMPLES: -; Read all the SDSS spectroscopic observations on the SDSS-3 test -; plate 2634, trimming to the best observations of each object: -; IDL> readspec_footprint, 2634, zans=zans, /best -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_diff_angle() -; platelist -; readspec -; spheregroup() -; sxpar() -; -; REVISION HISTORY: -; 24-Apr-2007 Written by David Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro readspec_footprint, platenum, mjd=mjd, best=best, silent=silent, $ - zans=zans, plugmap=plug, tsobj=tsobj - - if (n_elements(platenum) EQ 0) then $ - message, 'PLATE is not specified or is not a scalar' - - ; Find all plates that may overlap this first plate - readspec, platenum, mjd=mjd, objhdr=hdr, silent=silent - if (NOT keyword_set(hdr)) then $ - message, 'Plate does not exist ' + string(platenum) - ra = sxpar(hdr, 'RA') - dec = sxpar(hdr, 'DEC') - platelist, plist=plist - plist = plist[where(strmatch(plist.status1d,'Done*'))] -; plist = plist[where(strmatch(plist.status1d,'Done*') $ -; AND (strmatch(plist.platequality,'good*') $ -; OR strmatch(plist.platequality,'marginal*')))] - adist = djs_diff_angle(plist.ra, plist.dec, ra, dec) - plist = plist[where(adist LE 3.)] - - ; Read all these plates - readspec, plist.plate, mjd=plist.mjd, zans=zans, silent=silent - if (arg_present(plug)) then $ - readspec, plist.plate, mjd=plist.mjd, plug=plug, silent=silent - if (arg_present(tsobj)) then $ - readspec, plist.plate, mjd=plist.mjd, tsobj=tsobj, silent=silent - - ; Store the plate quality for each object - pquality = strarr(n_elements(zans)) - for iplate=0L, n_elements(plist)-1L do begin - indx = where(zans.plate EQ plist[iplate].plate $ - AND zans.mjd EQ plist[iplate].mjd) - pquality[indx] = plist[iplate].platequality - endfor - - ; Trim to only those within the footprint of the requested plate - adist = djs_diff_angle(zans.plug_ra, zans.plug_dec, ra, dec) - indx = where(adist LT 1.49) - zans = zans[indx] - if (arg_present(plug)) then plug = plug[indx] - if (arg_present(tsobj)) then tsobj = tsobj[indx] - pquality = pquality[indx] - - ; Trim to the best observation of each object, using the same - ; scoring algorithm as in PLATEMERGE - if (keyword_set(best)) then begin - specprimary = bytarr(n_elements(zans)) - score = 4 * (zans.sn_median GT 0) $ - + 2 * (strmatch(pquality,'good*') EQ 1) $ - + 1 * (zans.zwarning EQ 0) $ - + (zans.sn_median>0) / max(zans.sn_median+1.) - dtheta = 2.0 / 3600. - ingroup = spheregroup(zans.plug_ra, zans.plug_dec, dtheta, $ - multgroup=multgroup, firstgroup=firstgroup, nextgroup=nextgroup) - for j=0L, n_elements(firstgroup)-1L do begin - if (firstgroup[j] NE -1) then begin - if (multgroup[j] EQ 1) then begin - specprimary[firstgroup[j]] = 1 - endif else begin - indx = lonarr(multgroup[j]) - indx[0] = firstgroup[j] - for k=0L, multgroup[j]-2L do indx[k+1] = nextgroup[indx[k]] - foo = max(score[indx], ibest) - specprimary[indx[ibest]] = 1 - endelse - endif - endfor - indx = where(specprimary) - zans = zans[indx] - if (arg_present(plug)) then plug = plug[indx] - if (arg_present(tsobj)) then tsobj = tsobj[indx] - endif - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/redindices.pro b/pro/spec1d/redindices.pro deleted file mode 100644 index de5677a2a..000000000 --- a/pro/spec1d/redindices.pro +++ /dev/null @@ -1,167 +0,0 @@ -;------------------------------------------------------------------------------ -; De-redshift and rebin spectra to specified wavelengths [WAVE1,WAVE2] -pro redindices_rebin, objloglam, objflux, objivar, zfit, $ - wave1, wave2, newloglam, newflux, newivar - - if (size(objflux,/n_dimen) EQ 1) then nobj = 1 $ - else nobj = (size(objflux,/dimens))[1] - - dloglam = 1.d-4 ; fix the wavelength spacing - loglam1 = alog10(wave1) - 5 * dloglam ; pad with 5 pixels on left - loglam2 = alog10(wave2) + 5 * dloglam ; pad with 5 pixels on right - newloglam = loglam1 + dindgen((loglam2-loglam1) / dloglam) * dloglam - nnew = n_elements(newloglam) - newflux = fltarr(nnew,nobj) - newivar = fltarr(nnew,nobj) - - ;---------- - ; Shift each spectra to z=0 and sample at the output wavelengths - - logshift = alog10(1.d + zfit) - for iobj=0, nobj-1 do begin - indx = where(objloglam[*,iobj] GT 0) -print, format='("Shift object ",i5," of ",i5,a1,$)', $ - iobj, nobj, string(13b) - combine1fiber, objloglam[indx,iobj]-logshift[iobj], $ - objflux[indx,iobj], objivar[indx,iobj], $ - newloglam=newloglam, binsz=dloglam, newflux=flux1, newivar=ivar1 - newflux[*,iobj] = flux1 - newivar[*,iobj] = ivar1 - endfor -print,'' - - return -end - -;------------------------------------------------------------------------------ -function redindices_mean, flux, ivar, mnerr=mnerr - - if (size(flux,/n_dimen) EQ 1) then nobj = 1 $ - else nobj = (size(flux,/dimens))[1] - - mn = fltarr(nobj) - mnerr = fltarr(nobj) - - for iobj=0, nobj-1 do begin - wtot = total(ivar[*,iobj]) - mn[iobj] = total(flux[*,iobj] * ivar[*,iobj]) / (wtot + (wtot EQ 0)) - mnerr[iobj] = 1. / sqrt(wtot + (wtot EQ 0)) - endfor - - return, mn -end - -;------------------------------------------------------------------------------ -function redindices_ew, objloglam, objflux, objivar, zfit, $ - lowave, midwave, hiwave - - redindices_rebin, objloglam, objflux, objivar, zfit, $ - lowave[0], hiwave[1], newloglam, newflux, newivar - ii = where(newloglam GE alog10(lowave[0]) AND newloglam LE alog10(lowave[1])) - mean1 = redindices_mean(newflux[ii,*], newivar[ii,*], mnerr=mnerr1) - ii = where(newloglam GE alog10(midwave[0]) $ - AND newloglam LE alog10(midwave[1])) - mean2 = redindices_mean(newflux[ii,*], newivar[ii,*], mnerr=mnerr2) - ii = where(newloglam GE alog10(hiwave[0]) AND newloglam LE alog10(hiwave[1])) - mean3 = redindices_mean(newflux[ii,*], newivar[ii,*], mnerr=mnerr3) - continuum = (mean1 + mean3) / 2. - ew = (mean2 - continuum) * (midwave[1] - midwave[0]) / continuum - - return, ew -end - -;------------------------------------------------------------------------------ -function redindices, plate, mjd=mjd - -print, '--> WORKING ON PLATE ', plate - maglimit = 18.0 ; de-reddened r-band magnitude limit - - ;---------- - ; Pre-select galaxies - - readspec, plate, mjd=mjd, zans=zans, plug=plug, tsobj=tsobj - indx = where(strtrim(zans.class) EQ 'GALAXY' AND zans.zwarning EQ 0 $ - AND plug.mag[2] - tsobj.reddening[2,*] LT maglimit) - - ;---------- - ; Read the 2D output file - - readspec, plate, plug[indx].fiberid, mjd=mjd, $ - flux=objflux, invvar=objivar, loglam=objloglam, $ - andmask=andmask, ormask=ormask - zans = zans[indx] - tsobj = tsobj[indx] - - ;---------- - ; Mask around bright sky lines - - objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - - ;---------- - ; Measure the 4000-Ang break. - -print, 'Measuring 4000-Ang break' - lowave = [3800.,3900.] - hiwave = [4025.,4200.] - redindices_rebin, objloglam, objflux, objivar, zans.z, $ - lowave[0], hiwave[1], newloglam, newflux, newivar - ii = where(newloglam GE alog10(lowave[0]) AND newloglam LE alog10(lowave[1])) - mean1 = redindices_mean(newflux[ii,*], newivar[ii,*], mnerr=mnerr1) - ii = where(newloglam GE alog10(hiwave[0]) AND newloglam LE alog10(hiwave[1])) - mean2 = redindices_mean(newflux[ii,*], newivar[ii,*], mnerr=mnerr2) - dinv4000 = mean1 / mean2 - - ;---------- - ; Measure the Halpha+[NII] equiv. width - -print, 'Measuring H-alpha EW' - thiswave = 6564. - lowave = thiswave + [-75,-35] - midwave = thiswave + [-35,35] - hiwave = thiswave + [35,75] - ew_halpha = redindices_ew(objloglam, objflux, objivar, zans.z, $ - lowave, midwave, hiwave) - - ;---------- - ; Measure the Mg2 equiv. width - -print, 'Measuring Mg2 EW' - lowave = [4897,4958] - midwave = [5156,5197] - hiwave = [5303,5367] - airtovac, lowave - airtovac, midwave - airtovac, hiwave - ew_mg2 = redindices_ew(objloglam, objflux, objivar, zans.z, $ - lowave, midwave, hiwave) - - ;---------- - ; Now select our sample - - iselect = where(dinv4000 LT 0.6 AND ew_halpha LT 3.0) - - modelcolor = tsobj.counts_model[0:3,*] - tsobj.counts_model[1:4,*] - - redstruct = create_struct( $ - 'modelcolor', fltarr(4), $ - 'redsample', 0L, $ - 'dinv4000', 0.0, $ - 'ew_halpha', 0.0, $ - 'ew_mg2', 0.0, $ - zans[0], $ - tsobj[0], $ - name='REDSTRUCT' ) - redstruct = replicate(redstruct, n_elements(tsobj)) - redstruct.modelcolor = modelcolor - redstruct.dinv4000 = dinv4000 - redstruct.ew_halpha = ew_halpha - redstruct.ew_mg2 = ew_mg2 - redstruct[iselect].redsample = 1 - struct_assign, zans, redstruct, /nozero - struct_assign, tsobj, redstruct, /nozero - - return, redstruct -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/redmonsterlist.pro b/pro/spec1d/redmonsterlist.pro deleted file mode 100644 index 3e1cf453d..000000000 --- a/pro/spec1d/redmonsterlist.pro +++ /dev/null @@ -1,93 +0,0 @@ -; List of number of galaxies and quasars per plate, the number of redshifts -; that differ from prior reductions, and the fraction of various 2D flags set. - -;------------------------------------------------------------------------------ -pro redmonsterlist, olddir=olddir - -; if (NOT keyword_set(olddir)) then olddir = '/u/dss/spectro_v4_7' - - splog, filename='monsterlist.log' - - platelist, plist=plist - idone = where(strtrim(plist.statuscombine,2) EQ 'Done') - plist = plist[idone] - - splog, 'PLATE MJD %Gal %QSO Whoppr Reject ' $ - + 'Scattr X-Talk BrtSky BadFlx BadChi Monstr' $ - + (keyword_set(olddir) ? ' Ndiff ':''), /noname - - splog, '----- ----- ------ ------ ------ ------ ' $ - + '------ ------ ------ ------ ------ ------' $ - + (keyword_set(olddir) ? ' ------':''), /noname - - for i=0, n_elements(plist)-1 do begin - readspec, plist[i].plate, mjd=plist[i].mjd, $ - plug=plug, ormask=ormask, zans=zans, /silent - - if (keyword_set(olddir)) then $ - readspec, plist[i].plate, mjd=plist[i].mjd, $ - zans=oldz, topdir=olddir, /silent - - if (keyword_set(zans) AND keyword_set(oldz)) then begin - zdiff = 3.e5 * abs(zans.z - oldz.z) - junk = where(zdiff GT 500. AND zans.zwarning EQ 0 $ - and oldz.zwarning EQ 0, ndiff) - endif else begin - ndiff = 0 - endelse - - igal = where((plug.primtarget AND $ - (2L^6 + 2L^7 + 2L^8 + 2L^5 + 2L^26)) NE 0, ngal) - iqso = where((plug.primtarget AND $ - (2L^0 + 2L^1 + 2L^2 + 2L^3 + 2L^4 + 2L^25)) NE 0, nqso) - - if (ngal GT 0 AND keyword_set(zans)) then begin - junk = where(zans[igal].zwarning EQ 0 $ - AND (strtrim(zans[igal].class) EQ 'GALAXY' $ - OR strtrim(zans[igal].class) EQ 'QSO'), nggal) - fgal = 100 * float(nggal) / ngal - endif else begin - fgal = 0. - endelse - if (nqso GT 0 AND keyword_set(zans)) then begin - junk = where(zans[iqso].zwarning EQ 0 $ - AND strtrim(zans[iqso].class) EQ 'QSO', ngqso) - fqso = 100 * float(ngqso) / nqso - endif else begin - fqso = 0. - endelse - - junk = where((ormask AND (2L^8+2L^9)) NE 0, nwhopper) - junk = where((ormask AND (2L^18+2L^19)) NE 0, nreject) - junk = where((ormask AND 2L^20) NE 0, nscatter) - junk = where((ormask AND 2L^21) NE 0, nxtalk) - junk = where((ormask AND 2L^23) NE 0, nbsky) - junk = where((ormask AND 2L^26) NE 0, nbadflux) - junk = where((ormask AND 2L^27) NE 0, nbadchi) - junk = where((ormask AND 2L^28) NE 0, nmonster) - - npix = n_elements(ormask) - fwhopper = 100 * float(nwhopper) / npix - freject = 100 * float(nreject) / npix - fscatter = 100 * float(nscatter) / npix - fxtalk = 100 * float(nxtalk) / npix - fbsky = 100 * float(nbsky) / npix - fbadflux = 100 * float(nbadflux) / npix - fbadchi = 100 * float(nbadchi) / npix - fmonster = 100 * float(nmonster) / npix - - if (keyword_set(olddir)) then $ - splog, string(plist[i].plate, plist[i].mjd, fgal, fqso, $ - fwhopper, freject, fscatter, fxtalk, fbsky, fbadflux, $ - fbadchi, fmonster, ndiff, $ - format='(i5,i6,2f7.1," ",8f7.2,i7)'), /noname $ - else $ - splog, string(plist[i].plate, plist[i].mjd, fgal, fqso, $ - fwhopper, freject, fscatter, fxtalk, fbsky, fbadflux, $ - fbadchi, fmonster, $ - format='(i5,i6,2f7.1," ",8f7.2)'), /noname - endfor - - splog, /close -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/redplate.pro b/pro/spec1d/redplate.pro deleted file mode 100644 index b9ecab3ee..000000000 --- a/pro/spec1d/redplate.pro +++ /dev/null @@ -1,19 +0,0 @@ -; Find the reddening for a bunch of plates. -pro redplate, legacy=legacy, plates=plates - - ;platelist, plist=plist - conflist, plist=plist, legacy=legacy, plates=plates - ;print, plist - plist = plist[where(plist.qsurvey, nplate)] - ;print, plist - ebv = fltarr(nplate) - for iplate=0, nplate-1 do begin - readspec, plist[iplate].field, mjd=plist[iplate].mjd, plug=plug, $ - legacy=legacy, plates=plates - euler, plug.ra, plug.dec, ll, bb, 1 - ebv[iplate] = mean(dust_getval(ll,bb,/interp, /noloop)) - print, 'Field ', iplate, ' of ', nplate,' ebv ',ebv[iplate] - endfor - -stop -end diff --git a/pro/spec1d/reformat_spec.pro b/pro/spec1d/reformat_spec.pro deleted file mode 100644 index 996ab4bcf..000000000 --- a/pro/spec1d/reformat_spec.pro +++ /dev/null @@ -1,484 +0,0 @@ -;+ -; NOTE: reprocess the single spectra spSepc files -; NAME: -; reformat_spec -; -; PURPOSE: -; Reformat spectra into a single fits file per object, combining all necessary -; pieces from spField, spZall, spZline and spZbest -; -; For each object, there is one file per target, -; containing the finall coadded spectrum, and each blue-red merged single spectrum per exposure -; frames. The file contains the next headers: -; -; HDU 0 : Header info -; HDU 1 : Coadded spectrum -; HDU 2 : Summary metadata copied from spZbest -; HDU 3 : Summary metadata copied from spZall -; HDU 4 : Line fitting metadata from spZline -; HDU 5 : Individual frame spectra per exposure -; -; The format of each spec file is: -; -; HDU 0 : -; Header : from input spField with additional keywords from specObj: -; -; Keyword specObjColumn Comment -; ------- ----------- ------- -; [*] PLUG_RA PLUG_RA RA of object [deg] -; [*] PLUG_DEC PLUG_DEC dec of object [deg] -; TARGET_ID TARGET_ID Unique object identifier -; -; [*] Note that RA and DEC already exist in the spPlate headers -; but they are the telescope boresite RA and DEC, not the -; RA and DEC of the object. -; -; Data : None -; HDU 1 : Coadded Spectrum -; Header : Minimum to define table -; Data : Binary table with columns taken from the original spSpec and spZbest: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum in coadd -; or_mask : mask bits which affect at least one spectrum in coadd -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; model : best fit model for classification & redshift (from spZbest) -; -; HDU 2 : Copy of row for this object from spZbest table + plugmap info of spFrame -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZbest*.fits -; -; HDU 3 : Copy of rows for this object from spZall table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 4 : Copy of rows for this object from spZline table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 5 .. +n_exp : Individual frames. -; For each exposure there is one HDU. -; These are in the order of the FPS confiuration_id, and -; -; Header : Minimum to define table -; Data: Binary table with columns taken from the original spSpec: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum -; or_mask : mask bits which affect at least one spectrum -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; -; CALLING SEQUENCE: -; reformat_spec, [ platefile, fiberid=, run1d=, /doplot, /debug, chop_data= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; fieldfile - Field file(s) from spectro-2D; default to all files -; matching 'spField*.fits' -; run1d - Optional override value for the environment variable $RUN1D -; doplot - If set, then generate plots. Send plots to a PostScript -; file spDiagDebug1d-$PLATE-$MJD.ps unless /DEBUG is set. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Input files are read from the current directory. -; Output files are written to the subdirectory $RUN2D/SPECTRA/$MJD. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; The procedure requires these files: -; ZALLFILE = 'spZall-Field-MJD.fits' -; ZBESTFILE = 'spZbest-Field-MJD.fits' -; ZLINEFILE = 'spZline-Field-MJD.fits' -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 27-Jan-2020 Written by Hector Ibarra at UIUC -;------------------------------------------------------------------------------ -; -pro struct_delete_field, struct, tag - ;Delete an existing field from a structure. - ; - ;Inputs: - ; tag (string) Case insensitive tag name describing structure field to - ; delete. Leading and trailing spaces will be ignored. If the requested - ; field does not exist, the structure is returned unchanged and without - ; error. - ; - ;Input/Output: - ; struct (structure) structure to be modified. - ; - ;Examples: - ; - ; Delete sme.wave from structure: - ; - ; IDL> struct_delete_field, sme, 'wave' - ; - ;History: - ; 2003-Jul-26 Valenti Adapted from struct_replace_field.pro. - ; 2020-Jan-27 HJIM Adapted for bhm. - if n_params() lt 2 then begin - print, 'syntax: struct_delete_field, struct, tag' - return - endif - - ;Check that input is a structure. - if size(struct, /tname) ne 'STRUCT' then begin - message, 'first argument is not a structure' - endif - - ;Get list of structure tags. - tags = tag_names(struct) - ntags = n_elements(tags) - - ;Check whether the requested field exists in input structure. - ctag = strupcase(strtrim(tag, 2)) ;canoncial form of tag - itag = where(tags eq ctag, nmatch) - if nmatch eq 0 then return - itag = itag[0] ;convert to scalar - ;print,itag - ;Copy any fields that precede target field. - if itag gt 0 then begin ;target field occurs first - ;new = create_struct(tags[0], struct.(0)) ;initialize structure - valt=struct.(0);initialize structure - nd=SIZE(valt, /N_DIMENSIONS) - if nd eq 1 then begin - if n_elements(valt) eq 5 or n_elements(valt) eq 10 then begin - valf=valt - siz_str=1 - endif else begin - valf=valt[0] - siz_str=n_elements(valt) - endelse - endif else begin - if nd eq 2 then begin - if n_elements(valt) eq 100 then begin - valf=valt - siz_str=1 - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - endelse - if tags[0] eq 'NEXP' then begin - valf=0 - endif - if tags[0] eq 'TARGET_INDEX' then begin - valf=0 - endif - new=replicate(create_struct(tags[0],valf),siz_str) - new.(0)=valt - for i=1, itag-1 do begin ;insert leading unchange - valt=struct.(i) - nd=SIZE(valt, /N_DIMENSIONS) - if nd eq 1 then begin - if n_elements(valt) eq 5 or n_elements(valt) eq 10 then begin - valf=valt - siz_str=1 - endif else begin - valf=valt[0] - siz_str=n_elements(valt) - endelse - endif else begin - if nd eq 2 then begin - if n_elements(valt) eq 100 then begin - valf=valt - siz_str=1 - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - endelse - if tags[i] eq 'NEXP' then begin - valf=0 - endif - if tags[i] eq 'TARGET_INDEX' then begin - valf=0 - endif - values_t=replicate(create_struct(tags[i],valf),siz_str) - new=struct_addtags(new,values_t) - new.(i)=valt - endfor - endif - - ;Replicate remainder of structure after desired tag. - for i=itag+1, ntags-1 do begin - valt=struct.(i) - nd=SIZE(valt, /N_DIMENSIONS) - if nd eq 1 then begin - if n_elements(valt) eq 5 or n_elements(valt) eq 10 or n_elements(valt) eq 35 or n_elements(valt) eq 4 or n_elements(valt) eq 3 or n_elements(valt) eq 2 then begin; the magnitude vector has 5 elements - valf=valt - siz_str=1 - endif else begin - valf=valt[0] - siz_str=n_elements(valt) - endelse - endif else begin - if nd eq 2 then begin - if n_elements(valt) eq 100 then begin - valf=valt - siz_str=1 - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - endif else begin - if nd eq 3 then begin - if n_elements(valt[*,*,0]) eq 100 then begin - valf=valt[*,*,0] - siz_str=n_elements(valt[0,0,*]) - endif ;else begin - ; valf=valt[*,0] - ; siz_str=n_elements(valt[0,*]) - ;endelse - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - ;print,valt[*,*,0] - ;valf=valt[*,0] - ;siz_str=n_elements(valt[0,*]) - endelse - endelse - if tags[i] eq 'NEXP' then begin - valf=0 - endif - if tags[i] eq 'TARGET_INDEX' then begin - valf=0 - endif - values_t=replicate(create_struct(tags[i],valf),siz_str) - new=struct_addtags(new,values_t) - new.(i-1)=valt - endfor - - ;Replace input structure with new structure. - struct = new - -end - -;------------------------------------------------------------------------------ - -pro reformat_spec, platefile, run1d=run1d1, doplot=doplot, spectradir=spectradir, $ - run2d=run2d, plates=plates, legacy=legacy, sky=sky, lite=lite,XCSAO=XCSAO - -RESOLVE_ALL, /QUIET, /SKIP_EXISTING, /CONTINUE_ON_ERROR -CPU, TPOOL_NTHREADS = 1 - - spectro_redux = getenv('BOSS_SPECTRO_REDUX') - if (NOT keyword_set(platefile)) then begin - platefile = findfile('spField*.fits*', count=nplate) - endif else begin - if (size(platefile,/tname) NE 'STRING') then $ - message, 'FieldFILE must be a file name' - if (keyword_set(platefile)) then nplate = n_elements(platefile) $ - else nplate = 0 - endelse - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - - if (keyword_set(run2d)) then run2d = strtrim(run2d,2) $ - else run2d = getenv('RUN2D') - comb=spectro_redux+'/'+run2d+'/' - if (NOT keyword_set(spectradir)) then spectradir=comb - rsky=1 - if (keyword_set(sky)) then rsky = sky - ;---------- - ; If multiple plate files exist, then call this script recursively - ; for each such plate file. - - if (nplate EQ 0) then begin - splog, 'No fields files specified or found' - return - endif else begin - if (nplate EQ 1) then begin - platefile = platefile[0] - endif else begin - for i=0, nplate-1 do begin - reformat_spec, platefile[i], run1d=run1d, doplot=doplot, spectradir=spectradir, $ - run2d=run2d, plates=plates, legacy=legacy, lite=lite - endfor - return - endelse - endelse - - platemjd=(strsplit(repstr(platefile,".fits",""), '-',/extract))[1:2] - fieldid=platemjd[0] - thismjd=platemjd[1] - platemjd=strjoin(platemjd, '-') - zallfile = djs_filepath('spZall-' + platemjd + '.fits', root_dir=run1d) - zbestfile = djs_filepath('spZbest-' + platemjd + '.fits', root_dir=run1d) - zlinefile = djs_filepath('spZline-' + platemjd + '.fits', root_dir=run1d) - if keyword_set(XCSAO) then XCSAOFILE = djs_filepath('spXCSAO-' + platemjd + '.fits', root_dir=run1d) - if not FILE_TEST(XCSAOfile) then XCSAO = 0 - logfile = djs_filepath('spec-' + platemjd + '.log', root_dir='') - - if (keyword_set(logfile)) then begin - cpbackup, logfile - splog, filename=logfile - splog, 'Log file ' + logfile + ' opened ' + systime() - endif - splog,'Writing the final output files' - plugmap = mrdfits(platefile,5,/silent) - zall = mrdfits(zallfile,1,/silent) - zbest = mrdfits(zbestfile,1,/silent) - zline = mrdfits(zlinefile,1,/silent) - zmodel = mrdfits(zbestfile,2,/silent) - if keyword_set(XCSAO) then begin - XCSAO = mrdfits(XCSAOFILE,1,/silent) - XCSAO_str={XCSAO_rv:0.D,XCSAO_erv:0.D,$ - XCSAO_Rxc:0.D, $ - XCSAO_Teff:0.D,XCSAO_eteff:0.D,$ - XCSAO_Logg:0.D,XCSAO_elogg:0.D,$ - XCSAO_Feh:0.D,XCSAO_efeh:0.D} - endif - - target_ind=plugmap.target_index - single_basefile='coadd/'+thismjd+'/spSpec-'+platemjd+'-' - single_out_basefile='spec-'+platemjd+'-' - - if keyword_set(lite) then begin - lit_p='/lite' - endif else begin - lit_p='/full' - endelse - - spawn,'mkdir -p '+spectradir+'spectra' - spawn,'mkdir -p '+spectradir+'spectra'+lit_p - spawn,'mkdir -p '+spectradir+'spectra'+lit_p+'/'+fieldid - spawn,'mkdir -p '+spectradir+'spectra'+lit_p+'/'+fieldid+'/'+thismjd - dir_finalsp=spectradir+'spectra'+lit_p+'/'+fieldid+'/'+thismjd - - get_field_type, fieldid=fieldid, mjd=thismjd, legacy=legacy, plates=plates, fps=fps - - - foreach target_i, target_ind, itarget do begin -; for itarget=0, n_elements(target_ind)-1 do begin - plug_target=plugmap[itarget] - if fieldid lt 16000 then begin - otype=strtrim(plug_target.objtype,2) - spec=1 - if rsky eq 0 and otype eq 'SKY' then spec=0 - endif else begin - fibt=strtrim(plug_target.fibertype,2) - otype=strtrim(plug_target.objtype,2) - spec=1 - if rsky eq 0 and otype eq 'SKY' then spec=0 - endelse - if spec eq 1 then begin - if fieldid lt 15000 then begin - indx0 = (where((zbest.target_index EQ target_i))) - zbest_target=zbest[indx0] - zbest_model = zmodel[*,indx0] - endif else begin - zbest_target=zbest[itarget] - zbest_model = zmodel[*,itarget] - endelse - indx = (where((zall.target_index EQ target_i))) - tags = tag_names(zall) - ntags = n_elements(tags) - zall_targ=zall[indx] - indx2 = (where((zline.target_index EQ target_i))) - tags = tag_names(zline) - ntags = n_elements(tags) - zline_targ=zline[indx2] - if keyword_set(XCSAO) then begin - indx3 = (where((XCSAO.TARGET_INDEX EQ target_i))) - tags_rv = tag_names(XCSAO) - ntags_rv = n_elements(tags_rv) - XCSAO_targ=replicate(XCSAO_str,1) - if (tag_exist(XCSAO,'RV')) then XCSAO_targ.XCSAO_rv=XCSAO[indx3].RV - if (tag_exist(XCSAO,'ERV')) then XCSAO_targ.XCSAO_erv=XCSAO[indx3].ERV - if (tag_exist(XCSAO,'R')) then XCSAO_targ.XCSAO_Rxc = XCSAO[indx3].R - if (tag_exist(XCSAO,'Teff')) then XCSAO_targ.XCSAO_Teff = XCSAO[indx3].Teff - if (tag_exist(XCSAO,'eteff')) then XCSAO_targ.XCSAO_eteff = XCSAO[indx3].eteff - if (tag_exist(XCSAO,'Logg')) then XCSAO_targ.XCSAO_Logg = XCSAO[indx3].Logg - if (tag_exist(XCSAO,'elogg')) then XCSAO_targ.XCSAO_elogg = XCSAO[indx3].elogg - if (tag_exist(XCSAO,'Feh')) then XCSAO_targ.XCSAO_Feh = XCSAO[indx3].Feh - if (tag_exist(XCSAO,'efeh')) then XCSAO_targ.XCSAO_efeh = XCSAO[indx3].efeh - endif - - - - if keyword_set(legacy) then begin - single_file=single_basefile+string(plug_target.target_index,format='(i4.4)')+'.fits' - endif else begin - single_file=single_basefile+strtrim(plug_target.catalogid,2)+'.fits' - endelse - junk = mrdfits(single_file,0,hdr0,/silent) - coadd = mrdfits(single_file,1,/silent) - values_t=replicate(create_struct('model',0.0),n_elements(coadd.flux)) - coadd=struct_addtags(coadd,values_t) - - coadd.model=zbest_model - struct_delete_field,plug_target,'objtype' - struct_delete_field,zbest_target,'fiberid' - struct_delete_field,zall_targ,'fiberid' - struct_delete_field,zline_targ,'fiberid' - if keyword_set(legacy) then struct_delete_field,zbest_target,'field' - fin_plug=struct_addtags(plug_target,struct_selecttags(zbest_target, except_tags=['field','fiberid_list','target_index','fiber_ra','fiber_dec'])) - if keyword_set(XCSAO) then fin_plug=struct_addtags(fin_plug,XCSAO_targ) - nexp=plug_target.nexp - if keyword_set(legacy) then begin - file_name=single_out_basefile+string(plug_target.target_index,format='(i4.4)')+'.fits' - endif else begin - file_name=single_out_basefile+strtrim(plug_target.catalogid,2)+'.fits' - endelse - fulloutname_spec = djs_filepath(file_name, root_dir=dir_finalsp) - ;splog,'File '+file_name+' was created' - ; HDU # 0 header - mwrfits, junk, fulloutname_spec, hdr0, /create, /silent - ; HDU # 1 header - sxaddpar, coadd_val, 'EXTNAME', 'COADD', ' Coadded spectrum' - mwrfits, coadd, fulloutname_spec, coadd_val, /silent - sxdelpar, coadd_val, 'COMMENT' - ;delvar,coadd_val - ; HDU # 2 Summary metadata copied from spZbest - sxaddpar, hdrplug, 'EXTNAME', 'SPALL', ' Spall structure' - mwrfits, fin_plug, fulloutname_spec, hdrplug, /silent - sxdelpar, hdrplug, 'COMMENT' - ;delvar,hdrplug - ; HDU # 3 Summary metadata copied from spZpall - sxaddpar, hdrzall, 'EXTNAME', 'ZALL', ' Zall structure' - mwrfits, zall_targ, fulloutname_spec, hdrzall, /silent - sxdelpar, hdrplug, 'COMMENT' - ;delvar,hdrplug - ; HDU # 4 Summary metadata copied from spZlines - sxaddpar, hdrzline, 'EXTNAME', 'ZLINE', ' Zlines structure' - mwrfits, zline_targ, fulloutname_spec, hdrzline, /silent - sxdelpar, hdrplug, 'COMMENT' - ;delvar,hdrplug - ;print,nexp - ;print,single_file - if not keyword_set(lite) then begin - for i=0, nexp-1 do begin - single = mrdfits(single_file,3+i,hdri, /silent) - sxdelpar, hdri, 'COMMENT' - mwrfits, single, fulloutname_spec, hdri, /silent - endfor - endif - splog,'File '+file_name+' was created, target '+strtrim(string(itarget+1),2)+' of '+strtrim(string(n_elements(target_ind)),2)+' targets' - endif - ;stop - endforeach - splog, 'Successful completion of REFORMAT_SPEC at ' + systime() - if (keyword_set(logfile)) then splog, /close - end diff --git a/pro/spec1d/rline_findew.pro b/pro/spec1d/rline_findew.pro deleted file mode 100644 index 8b37a105f..000000000 --- a/pro/spec1d/rline_findew.pro +++ /dev/null @@ -1,54 +0,0 @@ -pro rline_findew, spec, sigma=sigma, ew, ewinv, fopt, finv - - if NOT keyword_set(sigma) then sigma=1.0 - - boxarea = 5*sigma - hpix = fix(boxarea-1)/2 - intarea = 2*hpix+1 - boxcar = replicate(1,intarea) - if boxarea-intarea GT 0 then $ - boxcar = [0.5*(boxarea-intarea),boxcar, 0.5*(boxarea-intarea)] - - ;---------------------------------------------------------------------------- - ; - ; Do boxcar convolution first - ; - ;---------------------------------------------------------------------------- - - mask = float(spec.finv LE 0) - nspec = n_elements(spec) - - smask = convol(mask, boxcar, /edge_truncate) - - var = 1.0/(spec.finv + mask) - - sub = spec.flux - spec.model - zero = where(mask) - if zero[0] NE -1 then sub[zero] = 0 - - ew = convol(sub, boxcar, /edge_truncate) - ewvar = convol(var, boxcar, /edge_truncate) - - ewinv = ewvar * 0.0 - good = where(mask EQ 0 AND ewvar GT 0) - if good[0] NE -1 then ewinv[good] = 1.0/ewvar[good] - - ;---------------------------------------------------------------------------- - ; - ; Now do optimized gaussian detection - ; - ;---------------------------------------------------------------------------- - - gkernel = gauss_kernel(sigma) - - finv = convol(spec.finv, gkernel^2, /edge_truncate) - fnumerator = convol(sub*spec.finv, gkernel, /edge_truncate) - - smask = convol(mask, gkernel, /edge_truncate) - good = where(smask LT 0.4 AND finv GT 0) - fopt = 0.0*finv - - if good[0] NE -1 then fopt[good] = fnumerator[good] / finv[good] - - return -end diff --git a/pro/spec1d/rline_findpeaks.pro b/pro/spec1d/rline_findpeaks.pro deleted file mode 100644 index 2a60334a8..000000000 --- a/pro/spec1d/rline_findpeaks.pro +++ /dev/null @@ -1,100 +0,0 @@ -;+ -; NAME: -; rline_findpeaks -; -; PURPOSE: -; Given a two dimensional array for Equivalent Width (EW) and -; weights (EW inverse variance), this function returns a structure -; containing peak positions, heights, and significance level (SN). -; -; Only postive peaks are detected, so transform the array is negative -; peaks are sought. -; -; CALLING SEQUENCE: -; peak_list = rline_findpeaks(ew, ewinv, npeak=, threshold=, minsep=) -; -; INPUTS: -; ew - Positive equivalent width array -; ewinv - Associated inverse variance -; -; OPTIONAL INPUTS: -; npeak - Maximum number of peaks to locate (default 20) -; threshold - Minimum significance level (sigma) to return (default 5.0) -; minsep - Minimum pixel separation to between peaks (default 2.5) -; -; OPTIONAL KEYWORDS: -; -; OUTPUTS: -; peak_list - Array of structures with peak information -; -; COMMENTS: -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; find_npeaks -; -; DATA FILES: -; -; REVISION HISTORY: -; 05-Jan-2001 Written by S. Burles, Fermiland -; 17-Dec-2001 Commented, updated to work with new find_npeaks.pro -;- -;------------------------------------------------------------------------------ -function rline_findpeaks, ew, ewinv, npeak = npeak, threshold=threshold, $ - minsep=minsep - - npix = (size(ew,/dim))[0] - nspec = (size(ew,/dim))[1] - xtab = lindgen(npix) - - if NOT keyword_set(npeak) then npeak = 20 - if NOT keyword_set(threshold) then threshold=5.0 - if NOT keyword_set(minsep) then minsep=2.5 - - sn = ew * sqrt(ewinv) - - ttemp = { fiber : -1L, x : -1.0, y: -1.0, sn : 0.0, xerr : 0.0 , $ - class : 'UNK'} - - full_list = 0 - - - for i=0, nspec -1 do begin - - xpeak = find_npeaks(sn[*,i], nfind=npeak, ypeak=ypeak, xerr=xerr, $ - minsep=minsep) - - high = where(ypeak GE threshold, nhigh) - if nhigh GT 1 then begin - mask = lonarr(nhigh) + 1 - for j=nhigh-1,1,-1 do begin - identical = where(abs(xpeak[high[j]] - xpeak[high[0:j-1]]) LT minsep) - if identical[0] NE -1 then mask[j] = 0 - endfor - goodmask = where(mask, nhigh) - if nhigh GT 0 then high=high[goodmask] - endif - - if nhigh GT 0 then begin - linterp, xtab, ew[*,i], xpeak[high], y - tt = replicate(ttemp, nhigh) - tt.fiber = i - tt.x = xpeak[high] - tt.y = y - tt.sn = ypeak[high] - tt.xerr = xerr[high] - - if keyword_set(full_list) then full_list = [full_list, tt] $ - else full_list = tt - - endif - endfor - - return, full_list -end - - - - - diff --git a/pro/spec1d/rline_getplate.pro b/pro/spec1d/rline_getplate.pro deleted file mode 100644 index 6d89cea21..000000000 --- a/pro/spec1d/rline_getplate.pro +++ /dev/null @@ -1,68 +0,0 @@ - -; PRIMTARGET - If set, then select only objects where at least one bit -; in its PRIMTARGET flag matches one bit in this parameter. -; CLASS - If set, then only select objects that match this classification, -; i.e. 'GALAXY' -; MAXRCHI2 - If set, then only select objects whose reduced chi^2 is -; less than or equal to this value. -; QUICK - If set, then only return ZANS and PLUG in the return structure. -;------------------------------------------------------------------------------ -function rline_getplate, plate, mjd=mjd, $ - primtarget=primtarget, class=class, maxrchi2=maxrchi2, quick=quick - - ; First read the plug-map - - readspec, plate, mjd=mjd, plug=plug, zans=zans - if (NOT keyword_set(plug)) then return, 0 - - ; Set MASK=1 for objects to return - - mask = lonarr(n_elements(plug)) + 1 - - if (keyword_set(primtarget)) then $ - mask = mask * (plug.primtarget NE 0) $ - * ((plug.primtarget AND primtarget) NE 0) - - if (keyword_set(class)) then $ - mask = mask * (strtrim(zans.class,2) EQ class) - - if (keyword_set(maxrchi2)) then $ - mask = mask * (zans.rchi2 LE maxrchi2) - - igood = where(mask) - if (igood[0] EQ -1) then return, 0 - - if (keyword_set(quick)) then begin - tt = { plug : plug[0], $ - zans : zans[0] } - tt = replicate(tt, n_elements(igood)) - tt.zans = zans[igood] - tt.plug = plug[igood] - return, tt - endif - - readspec, zans[igood].plate, zans[igood].fiberid, mjd=zans[igood].mjd, $ - flux=flux, invvar=finv, loglam=loglam, plug=plug, zans=zans - - model = loglam * 0 - for i=0,n_elements(zans)-1 do $ - model[*,i] = synthspec(zans[i], loglam=loglam[*,i]) - - tt = { flux : flux[*,0], $ - finv : finv[*,0], $ - loglam : float(loglam[*,0]) , $ - model : float(model[*,0]), $ - plug : plug[0], $ - zans : zans[0] } - - tt = replicate(tt, n_elements(zans)) - tt.flux = temporary(flux) - tt.finv = temporary(finv) - tt.loglam = temporary(loglam) - tt.model = temporary(model) - tt.plug = temporary(plug) - tt.zans = temporary(zans) - - return, tt -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/rline_loop.pro b/pro/spec1d/rline_loop.pro deleted file mode 100644 index 2aa45581a..000000000 --- a/pro/spec1d/rline_loop.pro +++ /dev/null @@ -1,95 +0,0 @@ -pro rline_loop, plate=plate, mjd=mjd - - primtarget = 32 ; BRG's - - ;---------- - ; Get a list of plates - - if (keyword_set(plate)) then begin - nplate = n_elements(plate) - if (NOT keyword_set(mjd)) then mjd = lonarr(nplate) ; zeros - plist = replicate(create_struct('plate', 0L, 'mjd', 0L), nplate) - plist.plate = plate - plist.mjd = mjd - endif else begin - ; If PLATE is not specified, then determine a list of good plates... - platelist, plist=plist - ii = where(plist.nums[0] GT 0 $ -; AND plist.plate GE 300 AND plist.plate LE 349 $ ; ???? - AND plist.snvec[0] GT 15 AND plist.snvec[1] GT 15 $ - AND plist.snvec[2] GT 15 AND plist.snvec[3] GT 15) - plist = plist[ii] - endelse - - ;---------- - ; Loop through each plate - - nplate = n_elements(plist) - for iplate=0, nplate-1 do begin - - splog, 'WORKING ON PLATE ', plist[iplate].plate, $ - ' MJD ', plist[iplate].mjd - spec = rline_getplate(plist[iplate].plate, mjd=plist[iplate].mjd, $ - primtarget=primtarget, class='GALAXY', maxrchi2=2.0) - - if (keyword_set(spec)) then begin - - ; Accumulate ZANS and PLUG for the full sample - sampzans = struct_append(sampzans, spec.zans) - sampplug = struct_append(sampplug, spec.plug) - - rline_findew, spec, ew, ewinv, fopt, finv - pks = rline_findpeaks(ew, ewinv) - - ; Convert the peak position from pixel to log-wavelength - npix = n_elements(spec[0].loglam) - xvec = findgen(npix) - linterp, xvec, spec[0].loglam, pks.x, xloglam - - if (keyword_set(pks)) then begin - lines = rline_matchpeaks(spec, pks) - for ipk=0, n_elements(lines)-1 do $ - allpks = struct_append( allpks, $ - create_struct('zans', spec[pks[ipk].fiber].zans, $ - 'plug', spec[pks[ipk].fiber].plug, $ - pks[ipk], $ - 'xloglam', xloglam[ipk], $ - lines[ipk]) ) - - endif - endif - endfor - -save,file='rline.ss' -stop - -j = where(allpks.lambda EQ 0 AND allpks.xloglam LT alog10(7500)) -goodpks = allpks[j] -readspec, goodpks.zans.plate, goodpks.zans.fiberid, mjd=goodpks.zans.mjd, $ - flux=flux, flerr=flerr, invvar=invvar, andmask=andmask, ormask=ormask, $ - loglam=loglam, wave=wave, zans=zans -synflux = 0 * flux -for i=0, n_elements(goodpks)-1 do $ - synflux[*,i] = synthspec(goodpks[i].zans, loglam=loglam[*,i]) -save,file='goodpks.ss' - -restore,'goodpks.ss' -k=1 -thiswave = 10^goodpks[k].xloglam -ii=where(wave[*,k] NE 0) -splot,wave[ii,k],flux[ii,k], xrange=thiswave+[-200,200] -soplot,wave[ii,k],synflux[ii,k],color='blue' -soplot,wave[ii,k],flerr[ii,k],color='red' -soplot,[thiswave,thiswave],!y.crange,color='green - - -j = where(allpks.lambda EQ 0 AND allpks.xloglam LT alog10(7500)) -splot,10^allpks.xloglam,allpks.sn,ps=3 -soplot,10^allpks[j].xloglam,allpks[j].sn,ps=3,color='red' -k = j[where(allpks[j].sn GT 20)] - -jj=j[0] -plotspec,allpks[jj].zans.plate,allpks[jj].zans.fiberid -soplot,10^allpks[jj].xloglam,1,ps=4,charsize=4,color='green' - -end diff --git a/pro/spec1d/rline_matchpeaks.pro b/pro/spec1d/rline_matchpeaks.pro deleted file mode 100644 index bd9901f22..000000000 --- a/pro/spec1d/rline_matchpeaks.pro +++ /dev/null @@ -1,61 +0,0 @@ -;------------------------------------------------------------------------------ -function linematch1, loglam, dloglam, zshift - - common com_linelist, linelist - - ;---------- - ; Read line lists and convert to vacuum - - if (NOT keyword_set(linelist)) then begin - linefile = filepath('linematch.par', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='etc') - yanny_read, linefile, pdata - linelist = *pdata[0] - yanny_free, pdata - vaclambda = linelist.lambda - airtovac, vaclambda - linelist.lambda = vaclambda - endif - - ;---------- - ; Make a line list where the emission line wavelengths are redshifted - ; to that of the galaxy. - - thislist = linelist.lambda * (1 + zshift * (linelist.type EQ 'EMISSION')) -;for i=0,n_elements(thislist)-1 do $ -; print,linelist[i].type,linelist[i].lambda,thislist[i] - - ;---------- - ; Identify this feature with the nearest line. - - logdist = min(abs(loglam - alog10(thislist)), imin) - if (logdist LE dloglam) then return, linelist[imin] - - ; Return no match - retval = linelist[0] - struct_assign, {junk:0}, retval ; Zero-out all elements - return, retval -end -;------------------------------------------------------------------------------ -function rline_matchpeaks, specstruct, pkstruct - - ;---------- - ; Loop through each possible line - - npix = n_elements(specstruct[0].loglam) - xvec = findgen(npix) - - dloglam = 4.0e-4 ; Sky+object line exclusion width of 4 pixels - - npeak = n_elements(pkstruct) - for ipeak=0, npeak-1 do begin - thisspec = specstruct[ pkstruct[ipeak].fiber ] - linterp, xvec, thisspec.loglam, pkstruct[ipeak].x, thisloglam - thisline = linematch1(thisloglam, dloglam, thisspec.zans.z) - if (ipeak EQ 0) then allline = thisline $ - else allline = [allline, thisline] - endfor - - return, allline -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/rline_plotsamp.pro b/pro/spec1d/rline_plotsamp.pro deleted file mode 100644 index 92472380e..000000000 --- a/pro/spec1d/rline_plotsamp.pro +++ /dev/null @@ -1,47 +0,0 @@ -pro rline_plotsamp - - restore, 'rline_sample.ss' - - dfpsplot, 'rline_samp.ps', /color - - psize = 2.0 - pthick = 2 - - xrange = [0.0, 0.6] - yrange = [15.5,21.5] - plot, [0], [0], /nodata, $ - position=[0.15,0.50,0.95,0.92], $ - ytitle='r-band mag', $ - xrange=xrange, yrange=yrange, xstyle=1, ystyle=1, $ - charsize=psize, charthick=pthick, $ - xtickname=replicate(' ',30), $ - title='SDSS Luminous Red Galaxy Sample' - - oplot, sampzans.z, sampplug.mag[2], ps=3 - - binsz = 0.01 - nbin = long( (xrange[1]-xrange[0]) / binsz ) + 1 - xhist = findgen(nbin) * binsz - yhist = lonarr(nbin) - for i=0, n_elements(sampzans.z)-1 do begin - ibin = long(sampzans[i].z / binsz + 0.5) - if (ibin GE 0 AND ibin LT nbin) then yhist[ibin] = yhist[ibin] + 1 - endfor - - yrange = [0,1.05*max(yhist)] - plot, [0], [0], /nodata, /noerase, $ - position=[0.15,0.15,0.95,0.50], $ - xtitle='Redshift', ytitle='Number', $ - xrange=xrange, yrange=yrange, xstyle=1, ystyle=1, $ - charsize=psize, charthick=pthick - -; oplot, xhist, yhist, psym=10, thick=2 - plothist, sampzans.z, bin=binsz, thick=2, /fill, /overplot - - djs_xyouts, 0.4, 0.8*!y.crange[1], $ - 'N_{gal} = '+strtrim(string(n_elements(sampzans)),2), charsize=psize - - dfpsclose - - return -end diff --git a/pro/spec1d/rline_plotsome.pro b/pro/spec1d/rline_plotsome.pro deleted file mode 100644 index 4799a04c5..000000000 --- a/pro/spec1d/rline_plotsome.pro +++ /dev/null @@ -1,132 +0,0 @@ -; This reads the save save written by RLINE_SAMPLE. -; Set PLOTNUM to 0, 1, or 2 for plot number -pro rline_plotsome, plotnum - - if (NOT keyword_set(plotnum)) then plotnum = 0 -; nsmooth = 3 - - restore, 'goodpks.ss' - - junk = {pinfo, iselect: 0L, string1: '', string2: ''} - pinfo = replicate( {pinfo}, 4 ) - - if (plotnum EQ 0) then begin - pinfo.iselect= [ 15 , 213 , 226 , 140 ] - pinfo.string1= [ 'H\alpha' , 'H\alpha' , 'H\alpha' , 'H\alpha' ] - pinfo.string2= [ 'z=0.072' , 'z=0.136' , 'z=0.039' , 'z=0.018' ] - endif else if (plotnum EQ 1) then begin - pinfo.iselect= [ 106 , 37 , 35 , 276 ] - pinfo.string1= [ 'O II' , 'O II' , 'O II' , 'O II' ] - pinfo.string2= [ 'z=0.272' , 'z=0.441' , 'z=0.806' , 'z=0.156' ] - endif else if (plotnum EQ 2) then begin - pinfo.iselect= [ 179 , 93 , 143 , 66 ] - pinfo.string1= [ 'Ly\alpha ??', 'Ly\alpha ??', 'Ly\alpha ??', 'Ly\alpha ??' ] - pinfo.string2= [ 'z=4.22' , 'z=2.17' , 'z=2.24' , 'z=5.13' ] - endif - - dfpsplot, 'rline-panel-'+strtrim(string(plotnum),2)+'.ps', /color - - iselect = pinfo.iselect - psize = 1.5 - pthick = 2 -pthick=1 - - ; Interpolate over bad sky regions - invvar = skymask(invvar, andmask) - fluxinterp = djs_maskinterp(flux, invvar EQ 0, /const, iaxis=0) - - nplot = n_elements(iselect) - yoffset = 0.90 / nplot -; ypos = [0.10, 0.10+yoffset] ; Do this to not separate each spectrum in Y - ypos = [0.10, 0.06+yoffset] ; Do this to separate each spectrum in Y - for iplot=0, nplot-1 do begin - if (iplot EQ 0) then begin - xtitle='Wavelength [Ang]' - noerase = 0 - xtickname = '' - endif else begin - xtitle='' - noerase = 1 - xtickname = replicate(' ',30) - endelse - if (iplot EQ nplot-1) then begin - title1 = 'FULL SDSS SPECTRUM' - title2 = 'ROGUE LINES' - endif - ytitle = 'Flux' - - ; Info on the rogue line - thispeak = goodpks[iselect[iplot]] - thiswave = 10.^thispeak.xloglam - - ; Info on the foreground/background galaxy - thisz = thispeak.zans.z - - iw = where(wave[*,iselect[iplot]] NE 0) - xplot = wave[iw,iselect[iplot]] - yplot1 = fluxinterp[iw,iselect[iplot]] - yplot2 = flux[iw,iselect[iplot]] - synplot = synflux[iw,iselect[iplot]] - errplot = flerr[iw,iselect[iplot]] - - ; Smooth... - if (keyword_set(nsmooth)) then begin - yplot1 = smooth(yplot1,nsmooth) - synplot = smooth(synplot,nsmooth) - errplot = smooth(errplot,nsmooth) - endif - - ; Plot the whole spectrum - - xrange = [3700,9200] - yrange = 1.3 * minmax(smooth(yplot1,5)) - yrange[0] = yrange[0] < 0 - yrange[0] = yrange[0] > (-0.1 * yrange[1]) - - plot, xplot, yplot1, /nodata, noerase=noerase, $ - position=[0.10,ypos[0],0.65,ypos[1]], $ - xtitle=xtitle, ytitle=ytitle, $ - xrange=xrange, yrange=yrange, xstyle=1, ystyle=1, $ - charsize=psize, charthick=pthick, $ - xtickname=xtickname, title=title1 - djs_oplot, xplot, yplot1, thick=pthick - djs_oplot, xplot, synplot, color='blue', thick=pthick - djs_oplot, xplot, errplot, color='red', thick=pthick - djs_xyouts, 0.9*xrange[0]+0.1*xrange[1], 0.2*yrange[0]+0.8*yrange[1], $ - 'Galaxy @ z='+string(thisz,format='(f5.2)'), $ - charsize=psize, charthick=pthick - - ; Indicate the rogue em. line - - yarr = [yrange[0], 0.75*yrange[0]+0.25*yrange[1]] - djs_arrow, thiswave, yarr[0], thiswave, yarr[1], $ - color='green', thick=pthick, /data - - ; Plot the spectrum around the rogue em. line - - xrange = thiswave+[-100,100] - plot, xplot, yplot2, /nodata, /noerase, $ - position=[0.65,ypos[0],0.97,ypos[1]], $ - xrange=xrange, yrange=yrange, xstyle=1, ystyle=1, $ - charsize=psize, charthick=pthick, $ - ytickname=replicate(' ',30), title=title2 - djs_oplot, xplot, yplot2, thick=pthick, ps=10 - djs_oplot, xplot, synplot, color='blue', thick=pthick - - djs_xyouts, 0.35*xrange[0]+0.65*xrange[1], 0.2*yrange[0]+0.8*yrange[1], $ - pinfo[iplot].string1, charsize=psize, charthick=pthick, color='green' - djs_xyouts, 0.35*xrange[0]+0.65*xrange[1], 0.35*yrange[0]+0.65*yrange[1], $ - pinfo[iplot].string2, charsize=psize, charthick=pthick, color='green' - - ; Indicate the rogue em. line - - djs_arrow, thiswave, yarr[0], thiswave, yarr[1], $ - color='green', thick=pthick, /data - - ypos = ypos + yoffset - endfor - - dfpsclose - - return -end diff --git a/pro/spec1d/rline_sample.pro b/pro/spec1d/rline_sample.pro deleted file mode 100644 index bd83bc916..000000000 --- a/pro/spec1d/rline_sample.pro +++ /dev/null @@ -1,47 +0,0 @@ -; This is a hacked version of RLINE_LOOP, for just getting the full -; sample selection of BRG's. -pro rline_sample, plate=plate, mjd=mjd - - primtarget = 32 ; BRG's - - ;---------- - ; Get a list of plates - - if (keyword_set(plate)) then begin - nplate = n_elements(plate) - if (NOT keyword_set(mjd)) then mjd = lonarr(nplate) ; zeros - plist = replicate(create_struct('plate', 0L, 'mjd', 0L), nplate) - plist.plate = plate - plist.mjd = mjd - endif else begin - ; If PLATE is not specified, then determine a list of good plates... - platelist, plist=plist - ii = where(plist.nums[0] GT 0 $ -; AND plist.plate GE 300 AND plist.plate LE 349 $ ; ???? - AND plist.snvec[0] GT 15 AND plist.snvec[1] GT 15 $ - AND plist.snvec[2] GT 15 AND plist.snvec[3] GT 15) - plist = plist[ii] - endelse - - ;---------- - ; Loop through each plate - - nplate = n_elements(plist) - for iplate=0, nplate-1 do begin - - splog, 'WORKING ON PLATE ', plist[iplate].plate, $ - ' MJD ', plist[iplate].mjd - spec = rline_getplate(plist[iplate].plate, mjd=plist[iplate].mjd, $ - primtarget=primtarget, class='GALAXY', maxrchi2=2.0, /quick) - - if (keyword_set(spec)) then $ - sampzans = struct_append(sampzans, spec.zans) - if (keyword_set(spec)) then $ - sampplug = struct_append(sampplug, spec.plug) - - endfor - -save,file='rline_sample.ss' -stop - -end diff --git a/pro/spec1d/sdss_spec_image.pro b/pro/spec1d/sdss_spec_image.pro deleted file mode 100644 index a8f6464cb..000000000 --- a/pro/spec1d/sdss_spec_image.pro +++ /dev/null @@ -1,350 +0,0 @@ -;+ -; NAME: -; sdss_spec_image -; PURPOSE: -; Create an image of a spectrum -; CALLING SEQUENCE: -; sdss_spec_image, outbase, plate, fiber, mjd=, xra= -; INPUTS: -; outbase - output file base -; plate - plate # -; fiber - fiber # -; mjd - MJD of observation -; OPTIONAL INPUTS: -; xra - [2] wavelength limits to plot (Ang) -; OPTIONAL KEYWORDS: -; /noclobber - do not clobber existing image files -; COMMENTS: -; Creates the files: -; [outbase].jpg -; [outbase].thumb.jpg -; which have a picture of the specified spectrum, -; with some nice annotation. -; REVISION HISTORY: -; Written by MRB, NYU 14-05-2010 -;------------------------------------------------------------------------------ -function sdss_spec_smooth, loglam,flux,vdisp - -if vdisp GT 1.0 then begin - nlambda= n_elements(loglam) - pixsize= $ - abs(alog(10.)*2.99792e+5*(loglam[nlambda-1]-loglam[0])/double(nlambda)) - smoothing= vdisp/pixsize ; pixels - npix= long(4.0*ceil(smoothing))*2L+3 - klam= findgen(npix)-float(npix-1.)/2. - kernel= exp(-0.5*(klam/smoothing)^2)/sqrt(2.*!DPI)/smoothing - kernel= kernel/total(kernel) - if(n_elements(kernel) ge n_elements(flux)) then $ - smoothed_spec= flux $ - else $ - smoothed_spec= convol(flux,kernel,/edge_truncate) -endif else begin - smoothed_spec= flux -endelse - -return, smoothed_spec - -end -;; -pro sdss_spec_image, outbase, plate, fiber, mjd=mjd, run2d=run2d, $ - run1d=run1d, topdir=topdir, xra=xra, silent=silent, $ - noclobber=noclobber, legacy=legacy, plates=plates - -common com_sdss_spec_image, plans - -if(n_tags(plans) eq 0) then $ - plans= yanny_readone(getenv('PLATELIST_DIR')+'/platePlans.par') -sscale=1.5 -if(NOT keyword_set(xsize)) then xsize= 10.5*sscale -if(NOT keyword_set(ysize)) then ysize= 7.5*sscale -if(NOT keyword_set(xra)) then xra= [3501., 10499.] - -if(n_elements(outbase) eq 0 OR $ - n_elements(plate) eq 0 OR $ - n_elements(fiber) eq 0) then $ - message, 'Usage: sdss_spec_image, outbase, plate, fiber, mjd=' - -if(n_elements(outbase) gt 1 OR $ - n_elements(plate) gt 1 OR $ - n_elements(fiber) gt 1) then $ - message, 'OUTBASE, PLATE, FIBER must be scalar' - -if(keyword_set(noclobber) gt 0 and $ - file_test(outbase+'.png') gt 0 and $ - file_test(outbase+'.thumb.png') gt 0) then $ - return - -readspec, plate, fiber, mjd=mjd, zans=zans, flux=flux, wave=wave, $ - invvar=invvar, run2d=run2d, run1d=run1d, topdir=topdir, plug=plug, $ - silent=silent, legacy=legacy, plates=plates - -ipl= where(plate eq plans.plateid, npl) -igd= where(invvar gt 0, ngd) -if(ngd gt 0) then begin - ist= min(igd) - ind= max(igd) - flux= flux[ist:ind] - invvar= invvar[ist:ind] - wave= wave[ist:ind] -endif - -if(NOT keyword_set(axis_char_scale)) then axis_char_scale= 1.75*sscale -if(NOT keyword_set(tiny)) then tiny=1.d-4 - -bangp=!P -bangx=!X -bangy=!Y -!P.FONT= -1 -set_plot, "PS" -!P.BACKGROUND= djs_icolor('white') -!P.COLOR= djs_icolor('black') - -device, file=outbase+'.ps',/inches,xsize=xsize,ysize=ysize, $ - xoffset=(8.5-xsize)/2.0,yoffset=(11.0-ysize)/2.0,/color -!P.THICK= 2.0*sscale -!P.CHARTHICK= !P.THICK & !X.THICK= !P.THICK & !Y.THICK= !P.THICK -!P.CHARSIZE= 1.0 -!P.PSYM= 0 -!P.LINESTYLE= 0 -!P.TITLE= '' -!X.STYLE= 1 -!X.CHARSIZE= axis_char_scale -!X.MARGIN= [1,1]*0.5 -!X.OMARGIN= [7,7]*axis_char_scale -!X.RANGE= 0 -!X.TICKS= 0 -!Y.STYLE= 1 -!Y.CHARSIZE= !X.CHARSIZE -!Y.MARGIN= 0.6*!X.MARGIN -!Y.OMARGIN= 0.6*!X.OMARGIN -!Y.RANGE= 0 -!Y.TICKS= !X.TICKS -!P.MULTI= [1,1,1] -xyouts, 0,0,'!6' -colorname= ['red','green','blue','magenta','cyan','dark yellow', $ - 'purple','light green','orange','navy','light magenta', $ - 'yellow green'] -ncolor= n_elements(colorname) -loadct,0,/silent - -sflux= sdss_spec_smooth(alog10(wave), flux, 100.) - -igd= where(invvar gt 0 and abs(wave-5577.) gt 4. and wave lt 10000. and wave gt 3700., ngd) - -if(ngd gt 0) then $ - yra= minmax(sflux[igd]) $ -else $ - yra= minmax(sflux) -size= 0.07*(yra[1]-yra[0]) -yra=yra+[-1.2,1.7]*size*1.7 -if(yra[0] lt -2.) then yra[0]=-1.999 - -djs_plot, [0], [0], xra=xra, yra=yra, /nodata, $ - xtitle='!6Wavelength (Angstroms)!6', $ - ytitle='!8f_\lambda !6(10^{-17} erg/s/cm^2/Ang)!6' - -if(npl gt 0) then begin - title0= 'Survey: !8'+strtrim(plans[ipl].survey,2)+ $ - '!6 Program: !8'+strtrim(plans[ipl].programname,2) - targets='' - targ_title='Target' - if(plans[ipl].survey eq 'sdss') then $ - targets= strtrim(strjoin(sdss_flagname('TARGET', plug.primtarget),' '),2) - if(plans[ipl].survey eq 'segue1') then $ - targets= strtrim(strjoin(sdss_flagname('SEGUE1_TARGET', plug.primtarget),' '),2) - if(plans[ipl].survey eq 'boss') then $ - targets= strtrim(strjoin(sdss_flagname('BOSS_TARGET1', plug.boss_target1),' '),2)+ $ - ' '+strtrim(strjoin(sdss_flagname('ANCILLARY_TARGET1', plug.ancillary_target1),' '),2) - if(plans[ipl].survey eq 'bhm-mwm') then begin - targ_title='Firstcarton' - targets= plug.firstcarton - endif - if(plans[ipl].survey eq 'bhm') then begin - targ_title='Firstcarton' - targets= plug.firstcarton - endif - if(plans[ipl].survey eq 'mwm') then begin - targ_title='Firstcarton' - targets= plug.firstcarton - endif - if(plans[ipl].survey eq 'mwm-bhm') then begin - targ_title='Firstcarton' - targets= plug.firstcarton - endif - if (strtrim(targets,2) eq 'NA') then begin - targ_title='Firstcarton' - targets=strtrim(plug.objtype,2) - endif - title0= title0+' !6'+targ_title+': !8'+targets+'!6' -endif else begin - prog=strtrim(plug.program,2) - if strlen(prog) eq 0 then prog='NA' - fcart=strtrim(plug.firstcarton,2) - if strlen(fcart) eq 0 then fcart='NA' - title0= 'Program: !8'+prog+'!6,'+$ - ' Firstcarton: !8'+fcart+'!6' -endelse - - -lab_temp='Field=' - -if tag_exist(zans,'fiber_ra') then begin - title1= 'RA='+strtrim(string(f='(f40.5)', zans.fiber_ra),2)+', '+ $ - 'Dec='+strtrim(string(f='(f40.5)', zans.fiber_dec),2)+', '+ $ - lab_temp+strtrim(string(zans.field),2)+', '+ $ - 'TargetIndex='+strtrim(string(zans.target_index),2)+', '+ $ - 'MJD='+strtrim(string(zans.mjd),2) -endif else begin - title1= 'RA='+strtrim(string(f='(f40.5)', zans.plug_ra),2)+', '+ $ - 'Dec='+strtrim(string(f='(f40.5)', zans.plug_dec),2)+', '+ $ - lab_temp+strtrim(string(zans.field),2)+', '+ $ - 'Fiber='+strtrim(string(zans.fiberid),2)+', '+ $ - 'MJD='+strtrim(string(zans.mjd),2) -endelse - -if (not keyword_set(legacy)) then begin - title0=title0+', '+'CatID='+strtrim(string(plug.catalogid),2) -endif - - -if(zans.z lt 1000./299792.) then $ - zstr= '!8cz='+strtrim(string(long(zans.z*299792.)),2)+'+/-'+ $ - strtrim(string(long(zans.z_err*299792.)),2)+'!6 km/s' $ -else $ - zstr= '!8z='+strtrim(string(f='(f40.5)',zans.z),2)+'\pm!8'+ $ - strtrim(string(f='(f40.5)',zans.z_err),2) +'!6' -title2= zstr+', Class='+strtrim(zans.class) -if tag_exist(zans,'subclass') then title2+=' '+strtrim(zans.subclass) -mag_vec=plug.mag -m_i=mag_vec[3] -title2=title2+', mag!8_{i,fib2}='+strtrim(string(f='(f40.2)',m_i),2)+'!6' -warnings= strtrim(strjoin(sdss_flagname('ZWARNING', zans.zwarning),' '),2) -;;; print, zans.zwarning -if(keyword_set(warnings) gt 0) then $ - title3= 'Warnings: '+warnings $ -else $ - title3='No warnings' -title3=title3+', idlspec2d='+run2d - - - -xst= !X.CRANGE[0]+0.01*(!X.CRANGE[1]-!X.CRANGE[0]) -if(keyword_set(title0)) then begin - yst= !Y.CRANGE[0]+1.14*(!Y.CRANGE[1]-!Y.CRANGE[0]) - xyouts, xst, yst, title0, charsize=1.2*sscale -endif -yst= !Y.CRANGE[0]+1.10*(!Y.CRANGE[1]-!Y.CRANGE[0]) -djs_xyouts, xst, yst, title1, charsize=1.2*sscale -yst= !Y.CRANGE[0]+1.06*(!Y.CRANGE[1]-!Y.CRANGE[0]) -djs_xyouts, xst, yst, title2, charsize=1.2*sscale -yst= !Y.CRANGE[0]+1.02*(!Y.CRANGE[1]-!Y.CRANGE[0]) -xyouts, xst, yst, title3, charsize=1.2*sscale - -err= fltarr(n_elements(sflux)) -igd= where(invvar gt 0, ngd) -if(ngd gt 0) then $ - err[igd]= sqrt(1./invvar[igd]) -ibd= where(invvar le 0, nbd) -if(nbd gt 0) then $ - err[ibd]= (yra[1]-yra[0]) -fillx= [wave, reverse(wave)] -filly= [sflux+err, reverse(sflux-err)] -fillx= [fillx, fillx[0]] -filly= [filly, filly[0]] - -oploterror, wave, sflux, err, /nohat, errcolor=djs_icolor('light gray'), errthick=4 -;polyfill, fillx, filly, noclip=0, color=djs_icolor('light gray') - -djs_oplot, wave, sflux, th=6 - - -awave= [ 4300., 5895., 5175., 8498., 8542., 8662., 3968., 3938.] -aname= [ "G", "Na D", "Mg", "CaII", "", "", "H", "K"] - -ewave= [3727., 3869.7867, 4105.8884, 4341.6803, 4364.3782, $ - 4862.6778, 4960.2140, 5008.1666, 5876., 6301.9425, $ - 6549.7689, 6564.6127, 6585.1583, 6718.1642, 6732.5382, $ - 7137.6370, 2800., 1216., 1549., 1640., 1909., 2326., 1400. ] - -ename= textoidl(['OII', 'NeIII', 'H\delta', 'H\gamma', 'OIII', $ - 'H\beta', '', 'OIII', 'HeI', 'OI', 'NII', $ - 'H\alpha', 'NII', '', 'SII', 'ArIII', 'MgII', 'Ly\alpha', $ - 'CIV', 'HeII', 'CIII', 'CII', 'SiIV+OIV']) - -xsize= 0.07*(xra[1]-xra[0]) - -yoff= replicate(0., n_elements(ewave)) -xoff= replicate(0., n_elements(ewave)) -ioff= where(abs(ewave-6585.) lt 3., noff) -xoff[ioff]=0.3*xsize -yoff[ioff]=-0.5*size -ioff= where(abs(ewave-6549.) lt 3., noff) -xoff[ioff]=-0.3*xsize -yoff[ioff]=-0.5*size -ioff= where(abs(ewave-4862.) lt 3., noff) -xoff[ioff]=-0.1*xsize -ioff= where(abs(ewave-5008.) lt 3., noff) -xoff[ioff]=0.05*xsize -ioff= where(abs(ewave-4364.) lt 3., noff) -xoff[ioff]=0.20*xsize -ioff= where(abs(ewave-4341.) lt 3., noff) -xoff[ioff]=-0.05*xsize -yoff[ioff]=size - -ewave=ewave*(1.+zans.z) -iwave= where(ewave gt xra[0] and ewave lt xra[1], nwave) -for j=0L, nwave-1L do begin - i= iwave[j] - inear= where(wave gt ewave[i]-100. and wave lt ewave[i]+100 and $ - invvar gt 0 and abs(wave-5577.) gt 4., nnear) - if(nnear gt 0) then begin - eval= max(sflux[inear]) - djs_oplot, [ewave[i], ewave[i]], $ - eval[0]*1.05+[0.,size]+yoff[i], color='blue', th=3 - djs_xyouts, ewave[i]+xoff[i], eval[0]*1.05+yoff[i]+size*1.2, align=0.5, $ - ename[i], noclip=0, charsize=sscale, charthick=2. - endif -endfor - -yoff= replicate(-size*0.2, n_elements(awave)) -xoff= replicate(0., n_elements(awave)) - -ioff= where(abs(awave-3938.) lt 3., noff) -xoff[ioff]=-0.07*xsize -ioff= where(abs(awave-3968.) lt 3., noff) -xoff[ioff]=0.07*xsize - -awave=awave*(1.+zans.z) -iwave= where(awave gt xra[0]+100. and awave lt xra[1]-100., nwave) -for j=0L, nwave-1L do begin - i= iwave[j] - inear= where(wave gt awave[i]-100. and wave lt awave[i]+100 and $ - invvar gt 0 and abs(wave-5577.) gt 4., nnear) - if(nnear gt 0) then begin - aval= min(sflux[inear]) - djs_oplot, [awave[i], awave[i]], $ - aval[0]*0.95-[0.,size]+yoff[i], color='red', th=3 - djs_xyouts, awave[i]+xoff[i], aval[0]*0.95+yoff[i]-size*1.5, align=0.5, $ - aname[i], noclip=0, charsize=sscale, charthick=2. - endif -endfor - -device,/close -if(keyword_set(bangp)) then !P=bangp -if(keyword_set(bangx)) then !X=bangx -if(keyword_set(bangy)) then !Y=bangy -set_plot,'x' - -if(not keyword_set(silent)) then splog, 'Converting to JPG image.' -spawn, ['convert',outbase+'.ps', '-quality', '100', outbase+'.jpg'], /nosh -spawn, ['convert',outbase+'.jpg', outbase+'.gif'], /nosh -spawn, ['convert',outbase+'.gif', outbase+'.png'], /nosh -if(not keyword_set(silent)) then splog, 'Making thumbnail image.' -spawn, ['convert',outbase+'.png', '-scale', '180x130', outbase+'.thumb.png'], $ - /nosh -rmfile, outbase+'.ps' -rmfile, outbase+'.jpg' -rmfile, outbase+'.gif' -if(not keyword_set(silent)) then splog, 'Done.' - -end diff --git a/pro/spec1d/solvefilter.pro b/pro/spec1d/solvefilter.pro deleted file mode 100644 index 8a8c441a1..000000000 --- a/pro/spec1d/solvefilter.pro +++ /dev/null @@ -1,823 +0,0 @@ -;+ -; NAME: -; solvefilter -; -; PURPOSE: -; Solve for the 2.5-m imaging filter curves by using the spectra. -; -; CALLING SEQUENCE: -; solvefilter, [ filttype=, filternum=, plate=, mjd=, $ -; starerr=, qsoerr=, wavemin=, wavemax=, magrej=, sncut=, maxiter=, $ -; fluxpath=, value=, fixed= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; filttype - Type of functional form for the filter curve. Options are: -; 'sdss': Modified SDSS filter curve (default). 3 params. -; 'tanh': Function with tanh() shape at edges. 5 params. -; filternum - Filter number, 1=g, 2=r, 3=i; default to 3. -; plate - Plate number(s); if not specified, then select all DR1 plates -; with number > 431. -; mjd - MJD for each PLATE. -; starerr - Fractional error to add in quadrature to photometric errors -; for stars; default to 0.05; if <=0, then do not use stars. -; qsoerr - Fractional error to add in quadrature to photometric errors -; for QSOs; default to 0.15; if <=0, then do not use QSOs. -; wavemin - Minimum wavelength for spectra during computation; -; default to 3800 Ang. -; wavemax - Maximum wavelength for spectra during computation; -; default to 9300 Ang. -; magrej - Reject any objects where the raw photo vs. spectro magnitude -; difference is more than MAGREJ from the median difference -; for that plate. This will reject wild outliers, which are -; often objects where there is a bright blend but the PHOTO -; flux is only for a fainter child. Default value is 0.5 mag. -; Or, QSOs that have varied. -; sncut - Minimum SN_MEDIAN (median S/N per pixel) for spectroscopic -; objects used in sample; default to 2.0 -; maxiter - Maximum number of iterations in call to MPFIT(); default to 200 -; fluxpath - Path name for spPlate files used for reading the spectra. -; The spZ files are still read from $BOSS_SPECTRO_REDUX/$PLATE -; regardless of this keyword. -; value - Initial guess values for the fit parameters. The default -; values are chosen to closely match the Gunn Jun-2001 curves. -; fixed - A vector of elements set to 0 for each parameter to be fit, -; and 1 for each parameter value to fix. Default to fitting -; all parameters. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; For FILTTYPE='tanh', the following function response(loglam) is fit: -; m = (a[4] - 1) / (a[1] - a[0]) -; b = 1 - m * a[0] -; Filter = tahn((loglam - a[0])*a[2]) + 1) -; * tahn((a[1] - loglam)*a[3]) + 1) -; * (m * loglam + b) -; There are a total of five a[] parameters above. -; The default initial-guess values for g-band are: -; a = [alog10(3950), alog10(5325), 100, 140, 2.0] -; The default initial-guess values for r-band are: -; a = [alog10(5580), alog10(6750), 130, 160, 1.2] -; The default initial-guess values for i-band are: -; a = [alog10(6915), alog10(8210), 150, 220, 0.55] -; -; For FILTTYPE='sdss', we fit a modified version of the Gunn Jun-2001 -; filter curves. The wavelength scale is remapped with a shift and -; rescaling, which has the effect of moving the filter edges. The -; filter shape is also multiplied by a function that is linear in -; log-wavelength, which has the effect of changing the broad-band -; slope of the filter. Given a filter curve Gunnfilt(loglam), it is -; re-mapped as follows: -; slopeterm = (loglam - 3.5)^theta[2] -; Filter(loglam) = Gunnfilt((loglam + a[1]) * a[0]) * slopeterm -; The default initial-guess values for the three a[] parameters are always: -; a = [0, 1.0, 0.01] -; The effect of a positive a[2] makes the filter slope more upwards -; with wavelength, and a negative a[2] makes it slope more downwards. -; -; Iteratively solve for the SDSS 2.5-m filter curves, using one of -; the several possible parameterizations as specified by FILTTYPE. -; For each possible filter curve, we regress the spectroscopic magnitude -; vs. the photometric magnitude. In order to not be sensitive to -; photometric calibration errors, each group of objects (same RUN, RERUN, -; CAMCOL, PLATE, SPECTROGRAPHID) is allowed to have a floating zero-point -; offset. These offsets are plotted as MAGOFFSET in one of the final plots. -; -; We only use spectroscopically-confirmed stars and QSOs, not any galaxies. -; Anything targetted as a galaxy is rejected. Any blended objects are -; rejected. Anything with the following bits set is rejected: -; OBJECT2_SATUR_CENTER, OBJECT2_INTERP_CENTER, OBJECT2_PSF_FLUX_INTERP. -; These last cuts remove stars with CRs in the core on the i-band images -; that were targetted as QSOs -- this was actually due to a bug in PHOTO -; that called stars CRs when the seeing was too good, then the incorrect -; CR-removal made the i-band 2 mags fainter, and these things were targetted -; as QSOs. -; -; All calculations are done in vacuum wavelengths, but then converted -; to air wavelengths at the end. -; -; EXAMPLES: -; Solve for the i-band filter using Tremonti's re-reductions of the spectra: -; IDL> solvefilter, filternum=3, fluxpath='/scr/wire50/cat/recalib/kurucz' -; -; BUGS: -; I should average together more telluric spectra for better S/N. -; I should use the extinction coeff for each imaging night. -; Do Christy's flux-calibrations improve things? -; Do any objects argue for light leaks? -; Should we more heavily weight the QSOs? -; -; DATA FILES: -; $IDLUTILS/data/filters/sdss_jun2001_$FILTER_atm.dat -; $BOSS_SPECTRO_REDUX/0432/spFrame-r2-00007466.fits* (for telluric-correction) -; $BOSS_SPECTRO_REDUX/$PLATE/spPlate-$PLATE-$MJD.fits -; $BOSS_SPECTRO_REDUX/$PLATE/spZbest-$PLATE-$MJD.fits -; $BOSS_SPECTRO_REDUX/plates/tsObj*-$PLATE.fit -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_int2bin() -; djs_maskinterp() -; djs_oplot -; djs_plot -; djs_xyouts -; headfits() -; idlspec2d_version() -; mpfit() -; mrdfits() -; readcol -; readspec -; sdss_run2mu() (in photoop product) -; skymask() -; splog -; tai2airmass() -; traceset2xy -; wavevector() -; -; INTERNAL SUPPORT ROUTINES: -; solvefiltshape() -; solvefiltfn() -; -; REVISION HISTORY: -; 05-Nov-2002 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -forward_function mpfit, solvefiltfn - -;------------------------------------------------------------------------------ -; Construct the filter curve corresponding to this set of parameters -; Return the Gunn filter curve if THETA is not set. - -function solvefiltshape, theta, loglam - - common com_solvefilt, groupnum, bigloglam, taugunn, $ - bigflux, photoflux, photoinvsig, tauextinct, ntot, nbigpix, $ - airmass, gunnfilt, filternum, filttype, groupratio, spectroflux - - if (NOT keyword_set(theta)) then $ - return, gunnfilt[*,filternum] - - case filttype of - 'tanh': begin - mm = (theta[4] - 1.d0) / (theta[1] - theta[0]) - bb = 1.d0 - mm * theta[0] - fcurve = (tanh((loglam - theta[0])*theta[2]) + 1.d0) $ - * (tanh((theta[1] - loglam)*theta[3]) + 1.d0) $ - * (mm * loglam + bb) - end - 'sdss': begin - slopeterm = (bigloglam - 3.5d0)^theta[2] - linterp, bigloglam, gunnfilt[*,filternum] * slopeterm, $ - (bigloglam - theta[0]) * theta[1], fcurve - end - endcase - - if (total(finite(fcurve)) NE n_elements(fcurve)) then $ - message, 'NaN in filter shape' - - fcurve = fcurve > 0 - - return, fcurve -end -;------------------------------------------------------------------------------ -function solvefiltfn, theta - - common com_solvefilt, groupnum, bigloglam, taugunn, $ - bigflux, photoflux, photoinvsig, tauextinct, ntot, nbigpix, $ - airmass, gunnfilt, filternum, filttype, groupratio, spectroflux - - ngroup = max(groupnum) + 1 - groupratio = dblarr(ngroup) - - ; Construct the filter curve corresponding to this set of parameters - fcurve = solvefiltshape(theta, bigloglam) - sumfilt = total(fcurve) - - ; Change from f_lambda to f_nu - flambda2fnu = 10^(2*bigloglam) / 2.99792d18 * 10^((48.6 - 2.5*17.)/2.5) - - ; Loop through each group of spectra, integrate over the filter curve, - ; and minimize the spectro/photo flux normalization for that group. - spectroflux = dblarr(ntot) - leftall = dblarr(ntot) - rightall = dblarr(ntot) - for igroup=0L, ngroup-1 do begin - indx = where(groupnum EQ igroup, nthis) - - ; Get the extinction curve for these objects. If THETA is undefined, - ; then use the Gunn extinction curve. - meanair = mean(airmass[indx]) -; if (NOT keyword_set(theta)) then fextinct = exp(-meanair * taugunn) $ - if (NOT keyword_set(theta)) then fextinct = 1. $ ; ??? - else fextinct = exp(-meanair * tauextinct) - fmult = fcurve * flambda2fnu * fextinct - - spectroflux[indx] = $ - total(bigflux[*,indx] * rebin(fmult,nbigpix,nthis), 1) $ - / (sumfilt + (sumfilt LE 0)) - leftval = spectroflux[indx] * photoinvsig[indx] - rightval = photoflux[indx] * photoinvsig[indx] - denom = total(leftval^2) - if (denom GT 0) then groupratio[igroup] = total(leftval * rightval) / denom $ - else groupratio[igroup] = 1 - leftval = leftval * groupratio[igroup] - leftall[indx] = leftval - rightall[indx] = rightval - endfor - - ; Return a vector of all the chi's. - return, leftall - rightall -end -;------------------------------------------------------------------------------ -pro solvefilter, filttype=filttype1, filternum=filternum1, $ - plate=plate, mjd=mjd, starerr=starerr, qsoerr=qsoerr, $ - wavemin=wavemin, wavemax=wavemax, $ - magrej=magrej, sncut=sncut, maxiter=maxiter, fluxpath=fluxpath, $ - value=value, fixed=fixed - - ;---------- - ; Set common block - - common com_solvefilt, groupnum, bigloglam, taugunn, $ - bigflux, photoflux, photoinvsig, tauextinct, ntot, nbigpix, $ - airmass, gunnfilt, filternum, filttype, groupratio, spectroflux - - if (keyword_set(filttype1)) then filttype = filttype1 $ - else filttype = 'sdss' - if (n_elements(filternum1) NE 0) then filternum = filternum1 $ - else filternum = 3 ; Default to i-band - if (n_elements(starerr) EQ 0) then starerr = 0.05 - if (n_elements(qsoerr) EQ 0) then qsoerr = 0.15 - if (NOT keyword_set(wavemin)) then wavemin = 3800.d0 - if (NOT keyword_set(wavemax)) then wavemax = 9300.d0 - if (NOT keyword_set(magrej)) then magrej = 0.5 - if (NOT keyword_set(sncut)) then sncut = 2.0 - if (NOT keyword_set(maxiter)) then maxiter = 200 - wcovcut = 0.32 - filtname = ['u','g','r','i','z'] - if (starerr LE 0) then usestars = 0 $ - else usestars = 1 - if (qsoerr LE 0) then useqsos = 0 $ - else useqsos = 1 - - if (filternum LT 1 OR filternum GT 3) then $ - message, 'I only can cope with FILTERNUM=1,2, or 3' - - t0 = systime(1) - - bigloglam = wavevector(alog10(wavemin), alog10(wavemax)) - nbigpix = n_elements(bigloglam) - - ;---------- - ; Read Gunn's measurement of the filter -- including the telluric bands. - - gunnfilt = dblarr(nbigpix,n_elements(filtname)) - for ifilt=0, n_elements(filtname)-1 do begin - filename = filepath('sdss_jun2001_'+filtname[ifilt]+'_atm.dat', $ - root_dir=getenv('IDLUTILS_DIR'), subdirectory=['data','filters']) - readcol, filename, fwave1, fthru1, fthru2, fthru3, fext1, /silent - - ; Convert wavelengths to vacuum. - airtovac, fwave1 - - fthru = 0.5 * (fthru1 + fthru2) / fext1 ; Average these two columns - linterp, alog10(fwave1), fthru, bigloglam, gunnfilt1 - gunnfilt[*,ifilt] = gunnfilt1 - - ; Assemble the data to get the atmospheric extinction curve - if (ifilt EQ 0) then begin - fwave = fwave1 - fext = fext1 - endif else begin - fwave = [fwave, fwave1] - fext = [fext, fext1] - endelse - endfor - - isort = uniq(fwave, sort(fwave)) - fwave = fwave[isort] - fext = fext[isort] - linterp, alog10(fwave), fext, bigloglam, gunnextinct - taugunn = -alog(gunnextinct) / 1.3 ; Scale from 1.3 to 1.0 airmasses - - ;---------- - ; Set the structure to pass to MPFIT - - blankpar = {value:0.D, fixed:0, limited:[0b,0b], $ - limits:[0.D,0], mpmaxstep: 0.D} - - case filttype of - 'tanh': begin - parinfo = replicate(blankpar, 5) - if (filternum EQ 1) then $ - parinfo.value = [alog10(3950), alog10(5325), 100, 140, 2.0] - if (filternum EQ 2) then $ - parinfo.value = [alog10(5580), alog10(6750), 130, 160, 1.2] - if (filternum EQ 3) then $ - parinfo.value = [alog10(6915), alog10(8210), 150, 220, 0.55] - parinfo.limited = [[0,1], [1,0], [1,0], [1,0], [1,0]] - logmid = 0.5 * (parinfo[0].value + parinfo[1].value) - parinfo.limits = [[0,logmid-5.d-4], [logmid+5.d-4,0], $ - [0.0,0], [0.0,0], [0,0]] - parinfo.mpmaxstep = [5.d-4, 5.d-4, 10., 10., 0.05] - end - 'sdss': begin - parinfo = replicate(blankpar, 3) - parinfo.value = [0.d-5, 1.000, 0.01] - parinfo.mpmaxstep = [5.d-4, 0.01, 0.02] - end - else: message, 'Unknown FILTTYPE' - endcase - - if (keyword_set(value)) then parinfo.value = value - if (keyword_set(fixed)) then parinfo.fixed = fixed - - ;---------- - ; Construct the atmospheric extinction curve - - ; Start with a simple expression for the extinction -; tausimple = 10^(12.4 - 3.6 * bigloglam) - - ; Start with Gunn's extinction curve, but interpolating - ; over the telluric bands which will be replaced with - ; high-resolution spectra of those features. - bigwave = 10^bigloglam - vactoair, bigwave - tmask = (bigwave GT 6800 AND bigwave LT 7000) $ - OR (bigwave GT 7100 AND bigwave LT 7400) $ - OR (bigwave GT 7550 AND bigwave LT 7750) $ - OR (bigwave GT 8050 AND bigwave LT 8350) - tausimple = djs_maskinterp(taugunn, tmask, /const) - - framefile = filepath('spFrame-r2-00007466.fits*', $ - root_dir=getenv('BOSS_SPECTRO_REDUX'), subdir='0432') - fcalibfile = filepath('spFluxcalib-r2-00007466.fits*', $ - root_dir=getenv('BOSS_SPECTRO_REDUX'), subdir='0432') - framefile = (findfile(framefile))[0] - fcalibfile = (findfile(fcalibfile))[0] - hdr = headfits(framefile) - thisair = sxpar(hdr, 'AIRMASS') - wset = mrdfits(framefile, 3) - traceset2xy, wset, xx, tloglam - telluric = mrdfits(fcalibfile, 0) - linterp, tloglam[*,0], telluric[*,0], bigloglam, tellcorr - tautelluric = -alog(tellcorr)/thisair ; Scale back to one airmass - tauextinct = (tausimple + tautelluric) > 0 - - ;---------- - ; Find the list of good plates if not provided. - ; Default to using all DR1 plates with PLATE>431. - - if (keyword_set(plate)) then begin - splog, 'Using user-supplied list of plates' - plist = replicate(create_struct('plate', 0L, 'mjd', 0L), $ - n_elements(plate)) - plist.plate = plate - if (keyword_set(mjd)) then begin - plist.mjd = mjd - endif else begin - ; Determine the MJD for each plate number - readspec, plate, replicate(1,n_elements(plate)), mjd=mjd1 - plist.mjd = mjd1 - endelse - endif else begin - splog, 'Find list of good plates' - platelist, plist=plist - iuse = where(strmatch(plist.public,'*DR1*') AND plist.plate GT 431 $ - AND strmatch(plist.status1d,'Done*')) - plist = plist[iuse] - endelse - - ;---------- - ; Make certain that the data exists for all these plates, - ; especially if PATH is set to read the flux vectors from - ; some non-standard directory. - - splog, 'Test existence of flux data for all plates' - nplate = n_elements(plist) - qkeep = bytarr(nplate) - for iplate=0, nplate-1 do begin - readspec, plist[iplate].plate, mjd=plist[iplate].mjd, path=fluxpath, $ - objhdr=objhdr - if (keyword_set(objhdr)) then qkeep[iplate] = 1B - endfor - ikeep = where(qkeep, nplate) - if (nplate EQ 0) then $ - message, 'No plate data found in specified path' - plist = plist[ikeep] - splog, 'Number of usable plates = ', nplate - - ;---------- - ; Loop over each plate, and accumulate groups of objects - - nplate = n_elements(plist) - gcounter = 0L - for iplate=0, nplate-1 do begin - splog, 'Reading redshift data for plate #', plist[iplate].plate, $ - ' (', iplate+1, ' of ', nplate, ')' - readspec, plist[iplate].plate, mjd=plist[iplate].mjd, $ - zans=zans, tsobj=tsobj, plug=plug, /silent - - ; Identify objects targetted as galaxies (we don't want these) - qgalaxy = (plug.primtarget AND 2L^6+2L^7+2L^8+2L^5+2L^26) NE 0 - - ; Identify objects that are not blends - bflag = djs_int2bin(ulong(tsobj.objc_flags), ndigit=32) - bflag2 = djs_int2bin(ulong(tsobj.objc_flags2), ndigit=32) - qblend = transpose(bflag[3,*] EQ 1 AND bflag[6,*] EQ 0) - qbright = transpose(bflag[1,*]) - qchild = transpose(bflag[4,*]) - qsingle = (qblend EQ 0) AND (qbright EQ 0) AND (qchild EQ 0) - - ; Find which objects have interpolated pixels near the center - ; (we'll throw them out) - qinterp = transpose(bflag2[11,*] OR bflag2[12,*] OR bflag2[15,*]) - - ; Compute the airmass for each object -; junk = sdss_run2mu(tsobj.run, tsobj.field, tai=tai) -; airmass1 = tai2airmass(zans.plug_ra, zans.plug_dec, tai=tai) -; if (min(airmass1) LT 0.99 OR max(airmass1) GT 3.5) then $ -; message, 'Invalid AIRMASS' - airmass1 = tsobj.airmass[2] - - ; Group objects with the same run+rerun+camcol+plate+spectrographid - idstring = string(tsobj.run) + string(tsobj.rerun) $ - + string(tsobj.camcol) + string(zans.plate) + string(plug.spectrographid) - idlist = idstring[ uniq(idstring, sort(idstring)) ] - ngroup = n_elements(idlist) - - ; Reject wild mag outliers, which are often objects where there - ; is a bright blend but the PHOTO flux is only for a fainter child - magdiff = - 2.5 * alog10(zans.spectroflux[filternum]) $ - - tsobj.psfflux[filternum] - meddiff = median(magdiff) - - qstar = strmatch(zans.class,'STAR*') - qqso = strmatch(zans.class,'QSO*') - - for igroup=0, ngroup-1 do begin - indx = where(idstring EQ idlist[igroup]) - - igood = where(zans[indx].zwarning EQ 0 $ - AND qsingle[indx] EQ 1 $ - AND qgalaxy[indx] EQ 0 $ - AND qinterp[indx] EQ 0 $ - AND (qstar[indx]*usestars OR qqso[indx]*useqsos) $ - AND magdiff[indx] GT meddiff-magrej $ - AND magdiff[indx] LT meddiff+magrej $ - AND zans[indx].wcoverage GT wcovcut $ - AND zans[indx].sn_median GT sncut, ngood) - - if (ngood GE 2) then begin - if (gcounter EQ 0) then begin - groupnum = replicate(gcounter, ngood) - zall = zans[indx[igood]] - tsall = tsobj[indx[igood]] - airmass = airmass1[indx[igood]] - endif else begin - groupnum = [groupnum, replicate(gcounter, ngood)] - zall = [zall, zans[indx[igood]]] - tsall = [tsall, tsobj[indx[igood]]] - airmass = [airmass, airmass1[indx[igood]]] - endelse - gcounter = gcounter + 1 - endif - endfor - endfor - ntot = n_elements(zall) - splog, 'Number of spectra = ', ntot - splog, 'Number of groups = ', max(groupnum)+1 - - ;---------- - ; Construct the big matrices - - bigflux = fltarr(nbigpix, ntot) - - ;---------- - ; Read in the actual spectra - - splog, 'Reading spectra' - for iplate=0, nplate-1 do begin - splog, 'Reading spectra for plate #', plist[iplate].plate, $ - ' (', iplate+1, ' of ', nplate, ')' - indx = where(zall.plate EQ plist[iplate].plate $ - AND zall.mjd EQ plist[iplate].mjd, nthis) - if (nthis GT 0) then begin - ; Read in the spectra, and interpolate over bad points - fiberid = zall[indx].fiberid - readspec, plist[iplate].plate, mjd=plist[iplate].mjd, fiberid, $ - flux=objflux, loglam=loglam, invvar=objivar, $ - andmask=andmask, ormask=ormask, path=fluxpath, /align - npix = n_elements(loglam) - objivar = skymask(objivar, andmask, ormask) - objflux = djs_maskinterp(objflux, objivar LE 0, iaxis=0, /const) - - if (bigloglam[0] LT loglam[0]) then begin - i1 = (where(bigloglam GE loglam[0]))[0] - j1 = 0L - endif else begin - i1 = 0L - j1 = (where(loglam GE bigloglam[0]))[0] - endelse - ncopy = (nbigpix - i1) < (npix - j1) - bigflux[i1:i1+ncopy-1,indx] = objflux[j1:j1+ncopy-1,*] - endif - endfor -objflux = 0 -andmask = 0 -ormask = 0 -objivar = 0 - - ;---------- - ; Decide upon the object counts and errors from PHOTO. - -; photoflux = 10.d0^(-tsall.psfcounts[filternum]/2.5) -; photoflerr = tsall.psfcountserr[filternum] * abs(photoflux) - photoflux = tsall.psfflux[filternum] - photoflivar = tsall.psfflux_ivar[filternum] - qgood = photoflivar GT 0 - - ; Add an additional error term - qstar = strmatch(zall.class,'STAR*') - qqso = strmatch(zall.class,'QSO*') -; photoinvsig = 1. / sqrt( photoflerr^2 $ -; + (qstar * starerr * abs(photoflux))^2 $ -; + (qqso * qsoerr * abs(photoflux))^2 ) - photoinvsig = qgood / sqrt( 1./(photoflivar+qgood-1) $ - + (qstar * starerr * abs(photoflux))^2 $ - + (qqso * qsoerr * abs(photoflux))^2 ) - - ; Now convert these to AB flux, according to the numbers derived - ; by Hogg on 13 Aug 2002. - aboffsets = [-0.042, 0.036, 0.015, 0.013, -0.002] - photoflux = photoflux * 10.d0^(-aboffsets[filternum]/2.5) - - ;---------- - ; Compute the chi^2 for the initial guess parameters - - origchi = solvefiltfn(parinfo.value) - dof = ntot - n_elements(parinfo) - ngroup - origrchi2 = total(origchi^2) / dof - splog, 'Start Chi2/DOF = ', origrchi2 - - ;---------- - ; Do the actual fit to the filter curve - - t1 = systime(1) - theta = mpfit('solvefiltfn', $ - parinfo=parinfo, perror=perror, maxiter=maxiter, $ - nfev=nfev, niter=niter, status=status) - t2 = systime(1) - chivec = solvefiltfn(theta) - chi2pdof = total(chivec^2) / dof - - splog, 'Time for non-linear fitting = ', t2-t1, ' sec' - splog, 'Number of iterations = ', niter - splog, 'Number of function evaluations = ', nfev - splog, 'Fit values = ', theta - splog, 'Fit errors = ', perror - splog - splog, 'Median |chi| = ', median(abs(chivec)) - splog, 'Final Chi2/DOF = ', chi2pdof - - ;---------- - ; Identify the 10 most deviant points - - nworst = 10 - iworst = (reverse(sort(abs(chivec))))[0:nworst-1] - - ;---------- - ; Reconstruct the filters at 1.3 airmasses - - ; Gunn filter curve - finitial = solvefiltshape(parinfo.value, bigloglam) * exp(-1.3 * tauextinct) - finitial = finitial * mean(gunnfilt[*,filternum]) / mean(finitial) - junk1 = solvefiltfn() ; Force evaluation of spectroflux - initdiff1 = -2.5 * alog10(spectroflux / photoflux) - initdiff2 = -2.5 * alog10(spectroflux * groupratio[groupnum] / photoflux) - - ; 1st guess filter curve - fguess = solvefiltshape(parinfo.value, bigloglam) * exp(-1.3 * tauextinct) - fguess = fguess * mean(gunnfilt[*,filternum]) / mean(fguess) - junk1 = solvefiltfn(parinfo.value) ; Force evaluation of spectroflux - guessdiff1 = -2.5 * alog10(spectroflux / photoflux) - guessdiff2 = -2.5 * alog10(spectroflux * groupratio[groupnum] / photoflux) - - ; Best-fit filter curve - fbest = solvefiltshape(theta, bigloglam) * exp(-1.3 * tauextinct) - fbest = fbest * mean(gunnfilt[*,filternum]) / mean(fbest) - fbest = fbest * (fbest GT 0) + 0.0 * (fbest LE 0) ; Get rid of values -0.00 - junk2 = solvefiltfn(theta) ; Force evaluation of spectroflux - magdiff1 = -2.5 * alog10(spectroflux / photoflux) - magdiff2 = -2.5 * alog10(spectroflux * groupratio[groupnum] / photoflux) - - ;---------- - ; Derive the reduced chi^2 for each plate - - rchi2plate = fltarr(nplate) - for iplate=0, nplate-1 do begin - indx = where(zall.plate EQ plist[iplate].plate $ - AND zall.mjd EQ plist[iplate].mjd, nthis) - if (nthis GT 0) then begin - ngroup1 = n_elements(uniq(groupnum[indx])) - thisdof = nthis - ngroup1 - rchi2plate[iplate] = total(chivec[indx]^2) / thisdof - endif - endfor - - ;---------- - ; Compute the magnitude shift that we needed to apply to each - ; group of spectroscopic mags to agree with the photo mags - - magoffset = -2.5 * alog10(groupratio) - - ;---------- - ; Make plots - - datestring = strlowcase(string((strsplit(systime(),/extract))[[2,1,4]], $ - format='(i2.2,a,a)')) - plottitle = 'Best-Fit ' + filtname[filternum]+'-band Filter ' + datestring - plotfile = 'sdss_djs_' + datestring + '_' + filtname[filternum] + '.ps' - - csize = 1.1 - dfpsplot, plotfile, /square, /color - - xrange = [ bigwave[(where(fbest GT 0.01))[0]] - 300, $ - bigwave[(reverse(where(fbest GT 0.01)))[0]] + 300 ] - plot, bigwave, gunnfilt[*,filternum]>fguess>fbest, /nodata, $ - xtitle='Air Wavelength [Ang]', ytitle='Filter Response at 1.3 Airmass', $ - charsize=csize, xrange=xrange, /xstyle, title=plottitle - djs_oplot, bigwave, gunnfilt[*,filternum], color='cyan' - djs_oplot, bigwave, fguess, color='red' - djs_oplot, bigwave, fbest, color='green' - xplot = total(!x.crange * [0.95,0.05]) - yplot = !y.crange[1] - djs_xyouts, xplot, 0.32*yplot, 'Mamoru/Gunn Jun-2001', $ - charsize=csize, color='cyan' - djs_xyouts, xplot, 0.26*yplot, 'Initial guess for fit' $ - + ' \chi^2_r=' + string(origrchi2,format='(f6.3)'), $ - charsize=csize, color='red' - djs_xyouts, xplot, 0.20*yplot, 'Schlegel Best-Fit '+datestring $ - + ' \chi^2_r=' + string(chi2pdof,format='(f6.3)'), $ - charsize=csize, color='green' - djs_xyouts, xplot, 0.14*yplot, 'DOF =' + string(dof) $ - + ' \Delta \chi^2 =' + string((origrchi2-chi2pdof)*dof), $ - charsize=csize - - !p.multi = [0,1,2] - iplot = where(rchi2plate GT 0) - djs_plot, [plist[iplot].plate], [rchi2plate[iplot]], psym=4, $ - xtitle='Plate Number', ytitle='\chi^2 / DOF', $ - charsize=csize, title=plottitle - - ; These are the values that we would *subtract* from the spectro mags - iuniq = uniq(groupnum) - plot, [zall[iuniq].plate], [magoffset], psym=4, $ - xtitle='Plate Number', ytitle='(SPECTRO - PHOTO) Mag Offset per group', $ - charsize=csize, title=plottitle - !p.multi = 0 - - !p.multi = [0,1,2] - plot, zall.plate + zall.fiberid/1000., guessdiff1, psym=3, $ - xtitle='Plate Number', ytitle='(SPECTRO - PHOTO) w/out mag offsets', $ - charsize=csize, title='Initial Guess Filter' - oplot, !x.crange, [0,0] - plot, zall.plate + zall.fiberid/1000., magdiff1, psym=3, $ - yrange=!y.crange, /ystyle, $ ; Use same Y plotting limits as above - xtitle='Plate Number', ytitle='(SPECTRO - PHOTO) w/out mag offsets', $ - charsize=csize, title=plottitle - oplot, !x.crange, [0,0] - - plot, zall.plate + zall.fiberid/1000., guessdiff2, psym=3, $ - xtitle='Plate Number', ytitle='(SPECTRO - PHOTO) w/ mag offsets', $ - charsize=csize, title='Initial Guess Filter' - oplot, !x.crange, [0,0] - plot, zall.plate + zall.fiberid/1000., magdiff2, psym=3, $ - yrange=!y.crange, /ystyle, $ ; Use same Y plotting limits as above - xtitle='Plate Number', ytitle='(SPECTRO - PHOTO) w/ mag offsets', $ - charsize=csize, title=plottitle - oplot, !x.crange, [0,0] - ; Label the NWORST worst points, according to their chi-deviation - djs_xyouts, total(!x.crange*[0.95,0.05]), total(!y.crange*[0.08,0.92]), $ - 'Worst outliers by \chi^2 in red', color='red' - djs_oplot, zall[iworst].plate+zall[iworst].fiberid/1000., $ - magdiff[iworst], psym=4, color='red' - for i=0, nworst-1 do $ - djs_xyouts, zall[iworst[i]].plate+zall[iworst[i]].fiberid/1000., $ - magdiff2[iworst[i]], string(plate_to_string(zall[iworst[i]].plate), $ - zall[iworst[i]].mjd, zall[iworst[i]].fiberid, $ - format='(" ",a,"/",i5,"-",i3," ")'), orient=90, $ - align=(magdiff2[iworst[i]] LT 0), color='red' - - istar = where(strmatch(zall.class,'STAR*'), nstar) - iqso = where(strmatch(zall.class,'QSO*'), nqso) -; photocolor = tsall.psfcounts[2] - tsall.psfcounts[3] - photocolor = -2.5 * alog10(tsall.psfflux[2] / tsall.psfflux[3]) - - if (nstar GT 1) then begin - plot, photocolor[istar], guessdiff2[istar], psym=3, charsize=csize, $ - xtitle='(r-i) for stars', ytitle='(SPECTRO - PHOTO) w/ mag offsets', $ - title='Initial Guess Filter' - oplot, !x.crange, [0,0] - isort = sort(photocolor[istar]) - djs_oplot, photocolor[istar[isort]], $ - djs_median(guessdiff2[istar[isort]],width=51 DR9 paper included LOZ and CMASS targets but shouldn't have -ostruc.n_qso_allspec = total(is_qso) -ostruc.n_qso_alluniq = total(is_qso * is_uniq) - -; Ancillary targets: -is_ancil = ((spall.ancillary_target1 gt 0) or (spall.ancillary_target2 gt 0)) * with_data -ostruc.n_ancil = total(is_ancil) -ostruc.n_ancil_uniq = total(is_ancil * (spall.specprimary gt 0)) - -; Stars -is_star = (strtrim(spall.class, 2) eq 'STAR') AND (spall.zwarning eq 0) * with_data -ostruc.n_star = total(is_star) -ostruc.n_star_uniq = total(is_star * (spall.specprimary gt 0)) - -; Spectrophotometric standards: -is_std = strmatch(spall.objtype, '*SPECTROPHOTO_STD*') * with_data -ostruc.n_std = total(is_std) -ostruc.n_std_uniq = total(is_std * (spall.specprimary gt 0)) - -; Sky fibers: -is_sky = strmatch(spall.objtype, '*SKY*') * with_data -ostruc.n_sky = total(is_sky) -ostruc.n_sky_uniq = total(is_sky * (spall.specprimary gt 0)) - -; Everything else: -is_other = (is_cmass eq 0) * (is_loz eq 0) * (is_qsotarg eq 0) * (is_ancil eq 0) * $ - (is_sky eq 0) * (is_std eq 0) * with_data -ostruc.n_other = total(is_other) -ostruc.n_other_uniq = total(is_other * (spall.specprimary gt 0)) - -; Unknown -is_unknown = (((is_cmass OR is_loz) AND (spall.zwarning_noqso gt 0)) OR $ - (spall.zwarning gt 0)) AND with_data -is_unknown *= is_unknown and (is_sky eq 0) -ostruc.n_unknown = total(is_unknown) -ostruc.n_unknown_uniq = total(is_unknown * is_uniq) - -if keyword_set(printtable) then begin - print, "Plates ", ostruc.n_plugging, ostruc.n_plate - print, "Spectra ", ostruc.n_spectra_eff, ostruc.n_spectra_uniq - print, "All Galaxies ", ostruc.n_gal, ostruc.n_gal_uniq - print, "CMASS Galaxies ", ostruc.n_cmass_totgal, ostruc.n_cmass_isgal - print, "LOWZ Galaxies ", ostruc.n_loz_totgal, ostruc.n_loz_isgal - print, "All Quasars ", ostruc.n_qso_allspec, ostruc.n_qso_alluniq - print, "Main Quasars ", ostruc.n_qso_totisqso, ostruc.n_qso_isqso - print, " with 2.15 <= z <= 3.5", ostruc.n_qso_totlya, ostruc.n_qso_lya - print, "Ancillary spectra ", ostruc.n_ancil, ostruc.n_ancil_uniq - print, "Stars ", ostruc.n_star, ostruc.n_star_uniq - print, "Standard Stars ", ostruc.n_std, ostruc.n_std_uniq - print, "Sky ", ostruc.n_sky, ostruc.n_sky_uniq - print, "Unknown ", ostruc.n_unknown, ostruc.n_unknown_uniq -end - -;;------------------------------------------------------------------- -;; START FPG QSO SCAN COMPARISON -;; ; spAll subset for objects with FPG inspections: -;; wh_fpg = where(spall.z_conf_person gt 0) -;; spall_fpg = spall[wh_fpg] -;; -;; ; spAll subset for QSO target specprimary: -;; wh_qso = where(is_qsotarg and (spall.specprimary gt 0)) -;; spall_qso = spall[wh_qso] -;; -;; ;help, where(spall_qso.z_conf_person eq 0) -;; ; LONG = Array[299] -;; -;; ; See if all the FPG stuff matches internally: -;; ;spherematch, spall_fpg.plug_ra, spall_fpg.plug_dec, spall_fpg.plug_ra, spall_fpg.plug_dec, $ -;; ; 1.0/3600., m1, m2, d12, maxmatch=0 -;; ;wh_cross = where(m1 ne m2) -;; ;m1 = m1[wh_cross] -;; ;m2 = m2[wh_cross] -;; ;splot, spall_fpg[m1].z_person, spall_fpg[m2].z_person, ps=1, color=2 -;; ;print, minmax(spall_fpg[m1].z_person - spall_fpg[m2].z_person) -;; ;print, minmax(spall_fpg[m1].z_conf_person - spall_fpg[m2].z_conf_person) -;; ;print, minmax(spall_fpg[m1].class_person - spall_fpg[m2].class_person) -;; ; There are a couple strange mis-matches, but all seems to be in -;; ; reasonably good agreements... -;; -;; spherematch, spall_qso.plug_ra, spall_qso.plug_dec, spall_fpg.plug_ra, spall_fpg.plug_dec, $ -;; 1./3600., m_qso, m_fpg, d12, maxmatch=0 -;; -;; ; Fill in: -;; spall_qso[m_qso].z_person = spall_fpg[m_fpg].z_person -;; spall_qso[m_qso].z_conf_person = spall_fpg[m_fpg].z_conf_person -;; spall_qso[m_qso].class_person = spall_fpg[m_fpg].class_person -;; -;; ; Comparison computations: -;; dzmax = 0.05 -;; pipe_zgood = (spall_qso.zwarning eq 0) and (strtrim(spall_qso.class, 2) eq 'QSO') -;; fpg_zgood = (spall_qso.z_conf_person ge 3) and (spall_qso.class_person eq 3) -;; pipe_zconf = (spall_qso.zwarning eq 0) -;; fpg_zconf = (spall_qso.z_conf_person ge 3) -;; in_agreement = abs(spall_qso.z - spall_qso.z_person) le dzmax -;; is_scanned = spall_qso.z_conf_person gt 0 -;; in_range_pipe = (spall_qso.z ge 2.1) and (spall_qso.z le 3.0) -;; in_range_fpg = (spall_qso.z_person ge 2.1) and (spall_qso.z_person le 3.0) -;; -;; -;; -;; ; Various other trial comparisons, none of which appear to be super-informative: -;; ;whx = where(is_scanned * pipe_zgood * (spall_qso.z_conf_person ge 3) * $ -;; ; (spall_qso.class_person eq 4) * (spall_qso.z ge 2.0)) -;; -;; ;whx = where(is_scanned * pipe_zgood * (spall_qso.z_conf_person ge 3) * (spall_qso.z ge 2.0) * $ -;; ; (spall_qso.class_person eq 1)) -;; -;; -;; ; N.B.: If it's a GALAXY, FPG doesn't usually provide a redshift. -;; -;; ; Number scanned by FPG: -;; ostruc.n_qso_scanned = total(is_scanned) -;; -;; ; "Impurity": both confident, but in disagreement: -;; is_impure = (in_agreement eq 0) * pipe_zgood * in_range_pipe * fpg_zconf -;; -;; ;wh_junk = where(is_impure) -;; ;uuplotspec, spall_qso[wh_junk].plate, spall_qso[wh_junk].fiberid, mjd=spall_qso[wh_junk].mjd -;; ; A few absorption issues, a few line mis-IDs. -;; -;; ; "Incompleteness": FPG confident, pipeline not: -;; is_incomplete = fpg_zgood * (pipe_zgood eq 0) * in_range_fpg -;; ;wh_junk = where(is_incomplete) -;; ;uuplotspec, spall_qso[wh_junk].plate, spall_qso[wh_junk].fiberid, mjd=spall_qso[wh_junk].mjd -;; ; Low SNR, negative emission, small-delta-chi2 between two reasonably -;; ; close z's. Those are the main explanations. -;; -;; ostruc.n_lya_incomp = total(is_incomplete) -;; ostruc.n_lya_impure = total(is_impure) -;; -;; END FPG QSO SCAN COMPARISON -;;------------------------------------------------------------------- - -return, ostruc - -end diff --git a/pro/spec1d/spreduce1d.pro b/pro/spec1d/spreduce1d.pro deleted file mode 100644 index fa5ee5289..000000000 --- a/pro/spec1d/spreduce1d.pro +++ /dev/null @@ -1,987 +0,0 @@ -;+ -; NAME: -; spreduce1d -; -; PURPOSE: -; 1-D reduction of spectra from 1 plate -; -; CALLING SEQUENCE: -; spreduce1d, [ platefile, fiberid=, run1d=, /doplot, /debug, chop_data= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; platefile - Plate file(s) from spectro-2D; default to all files -; matching 'spPlate*.fits' -; fiberid - If specified, then only reduce these fiber numbers; -; this must be a vector with unique values between 1 and -; the number of fibers in the plate file -; run1d - Optional override value for the environment variable $RUN1D -; doplot - If set, then generate plots. Send plots to a PostScript -; file spDiagDebug1d-$PLATE-$MJD.ps unless /DEBUG is set. -; debug - If set, then send plots to the X display and wait for -; a keystroke after each plot; setting /DEBUG forces /DOPLOT. -; chop_data - If set, then trim wavelength range to the specified range -; in vacuum Ang (if a 2-element array), or to a default -; trim range of [3600,10400] Ang. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Input files are read from the current directory. -; Output files are written to the subdirectory $RUN1D. -; -; Names of output files are derived from PLATEFILE. -; For example, if PLATEFILE='spPlate-0306-51690.fits', then -; ZALLFILE = 'spZall-0306-51690.fits' -; ZBESTFILE = 'spZbest-0306-51690.fits' -; ZLINEFILE = 'spZline-0306-51690.fits' -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $IDLSPEC2D_DIR/templates/TEMPLATEFILES -; -; PROCEDURES CALLED: -; cpbackup -; dfpsclose -; dfpsplot -; djs_filepath() -; elodie_best() -; fileandpath() -; filter_thru() -; mrdfits() -; mwrfits -; qaplot_fcalibvec -; splog -; skymask() -; speclinefit -; star_dvelocity() -; struct_addtags() -; sxaddpar -; sxdelpar -; sxpar() -; synthspec() -; vdispfit -; zfind() -; zrefind() -; -; REVISION HISTORY: -; 28-Jun-2000 Written by D. Schlegel, Princeton -; 2010-2011: various template-related tweaks and Z_NOQSO, A. Bolton, Utah -; 01-Oct-2012: Adding ZNUM_NOQSO to the Z_NOQSO section, Joel Brownstein, Utah -;------------------------------------------------------------------------------ -pro spreduce1d, platefile, fiberid=fiberid, run1d=run1d1, $ - doplot=doplot, debug=debug, chop_data=chop_data1, nodistortion=nodistortion - - if (NOT keyword_set(nodistortion)) then nodistortion=0 - - if (NOT keyword_set(platefile)) then begin - platefile = findfile('spPlate*.fits*', count=nplate) - endif else begin - if (size(platefile,/tname) NE 'STRING') then $ - message, 'PLATEFILE must be a file name' - if (keyword_set(platefile)) then nplate = n_elements(platefile) $ - else nplate = 0 - endelse - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - if (keyword_set(debug)) then doplot = 1 - if (keyword_set(chop_data1)) then begin - if (n_elements(chop_data1) EQ 1) then chop_data = [3850., 9200.] $ - else chop_data = chop_data1 -; endif else chop_data = 0 - endif else chop_data = [3600., 10400.] - - ;---------- - ; If multiple plate files exist, then call this script recursively - ; for each such plate file. - - if (nplate EQ 0) then begin - splog, 'No plate files specified or found' - return - endif else if (nplate EQ 1) then begin - platefile = platefile[0] - endif else begin - for i=0, nplate-1 do begin - spreduce1d, platefile[i], fiberid=fiberid, run1d=run1d, $ - doplot=doplot, debug=debug, chop_data=chop_data - endfor - return - endelse - - thismem = memory() - maxmem = 0 - - ;---------- - ; Determine names of output files - - ;; Doesn't work if spPlate file has different prefix, like spPPlate - ;; platemjd = strmid(fileandpath(platefile), 8, 10) - - ; Match {prefix}-({plate}-{mjd}).{extension} - ; plate can have any number of digits; MJD must be 5 digits - tmp = fileandpath(platefile) - platemjd = (stregex(tmp,'.+\-([0-9]+\-[0-9]{5})\..+', /extract,/subexpr))[1] - - zallfile = djs_filepath('spZall-' + platemjd + '.fits', root_dir=run1d) - zbestfile = djs_filepath('spZbest-' + platemjd + '.fits', root_dir=run1d) - zlinefile = djs_filepath('spZline-' + platemjd + '.fits', root_dir=run1d) - logfile = djs_filepath('spDiag1d-' + platemjd + '.log', root_dir=run1d) - plotfile = djs_filepath('spDiag1d-' + platemjd + '.ps', root_dir=run1d) - fdistortfile = 'spFluxdistort-' + platemjd + '.fits' - - if (keyword_set(doplot) AND NOT keyword_set(debug)) then begin - debugfile = djs_filepath('spDiagDebug1d-' + platemjd + '.ps') - cpbackup, debugfile - dfpsplot, debugfile, /color - endif - - ; Create output directory -; if (keyword_set(run1d)) then spawn, 'mkdir -p '+run1d - if (keyword_set(run1d)) then FILE_MKDIR,run1d - - stime0 = systime(1) - - if (keyword_set(logfile)) then begin - cpbackup, logfile - splog, filename=logfile - splog, 'Log file ' + logfile + ' opened ' + systime() - endif - if (keyword_set(plotfile)) then $ - splog, 'Plot file ' + plotfile - if (keyword_set(debugfile)) then $ - splog, 'Debug plot file ' + debugfile - splog, 'IDL version: ' + string(!version,format='(99(a," "))') - spawn, 'uname -a', uname - splog, 'UNAME: ' + uname[0], /noshell - splog, 'DISPLAY=' + getenv('DISPLAY') - - splog, 'idlspec2d version ' + idlspec2d_version() - splog, 'idlutils version ' + idlutils_version() - - ;---------- - ; Read the 2D output file - - objflux = mrdfits(platefile,0,hdr) - if (NOT keyword_set(hdr)) then $ - message, 'Plate file not valid: ' + platefile - plateid = long(sxpar(hdr, 'PLATEID')) - npixobj = sxpar(hdr, 'NAXIS1') - nobj = sxpar(hdr, 'NAXIS2') > 1 - objivar = mrdfits(platefile,1) - andmask = mrdfits(platefile,2) - ormask = mrdfits(platefile,3) -; dispmap = mrdfits(platefile,4) - plugmap = mrdfits(platefile,5) - skyflux = mrdfits(platefile,6) - - objloglam0 = sxpar(hdr, 'COEFF0') - objdloglam = sxpar(hdr, 'COEFF1') - - if (nodistortion EQ 1) then begin - fluxdistort = mrdfits(fdistortfile, 0) - objflux /= fluxdistort - objivar *= fluxdistort^2 - endif - - - - ;---------- - ; For plate files before Spectro-2D v5, there are no sky vectors, - ; and this last HDU is something else. - if (n_elements(skyflux) NE n_elements(objflux)) then skyflux = 0 - - ;---------- - ; Getting the chunk info to get SURVEY and PROGAMNAME - cinfo = chunkinfo(plateid) - - ;--------- - ; For eboss and sequels galaxies, the zrange_gal is larger - ; Changing the zrange_gal as function of programnam from chunkinfo - if strcmp(strlowcase(cinfo.survey),'eboss') OR $ - strcmp(strlowcase(cinfo.programname),'sequels',7) then $ - zrange_gal = [-0.01, 2.0] $ - else zrange_gal = [-0.01, 1.0] - - ;zrange_gal = [-0.01, 1.0] ; Templates extend to 1200 Ang for 3600 Ang - zrange_qso = [0.0033, 7.00] ; Templates extend to 450 Ang for 3600 Ang - zrange_star = [-0.004, 0.004] - zrange_cvstar = [-0.0033, 0.0033] - - ;---------- - ; For special plates, there may be a redshift-fitting range other - ; than the defaults if specified in the spPlateZrange file - zrfile = findfile(filepath('spPlateZrange.par', $ - root_dir=getenv('SPECLOG_DIR'), subdir='opfiles'), count=ct) - if (ct GT 0) then zrparam = yanny_readone(zrfile[0]) - if (keyword_set(zrparam)) then begin - i = where(zrparam.plate EQ plateid, ct) - if (ct GT 0) then zrange_gal = zrparam[i[0]].zrange_gal - endif - - ;---------- - ; Compute the S/N in SDSS filters (before doing /chop_data) - - objloglam = objloglam0 + lindgen(npixobj) * objdloglam - snmed = sn_median(objloglam, objflux, objivar, sn_all=sn_all) - - ;---------- - ; Chop wavelength range of data for all fits if /CHOP_DATA specified - ; This is for templates that are shorter than the input spectra - - if (keyword_set(chop_data)) then begin - i1 = ceil( (alog10(chop_data[0]) - objloglam0) / objdloglam ) - i2 = floor( (alog10(chop_data[1]) - objloglam0) / objdloglam ) - if (i1 GE 0) then objivar[0:i1,*] = 0 - if (i2 LE npixobj-1) then objivar[i2:npixobj-1,*] = 0 - splog, 'Trim wavelength range to ', chop_data - endif - - anyandmask = transpose(andmask[0,*]) - anyormask = transpose(ormask[0,*]) - - for ipix=1, npixobj-1 do $ - anyandmask = anyandmask OR transpose(andmask[ipix,*]) - for ipix=1, npixobj-1 do $ - anyormask = anyormask OR transpose(ormask[ipix,*]) - - objivar = skymask(objivar, andmask, ormask) - andmask = 0 ; Free memory - ormask = 0 ; Free memory - - ;---------- - ; Trim to specified fibers if FIBERID is set - - if (keyword_set(fiberid)) then begin - if (min(fiberid) LE 0 OR max(fiberid) GT nobj) then $ - message, 'Invalid value for FIBERID: must be between 0 and '+string(nobj) - objflux = objflux[*,fiberid-1] - objivar = objivar[*,fiberid-1] - anyandmask = anyandmask[fiberid-1] - anyormask = anyormask[fiberid-1] - plugmap = plugmap[fiberid-1] - if (keyword_set(skyflux)) then skyflux = skyflux[*,fiberid-1] - nobj = n_elements(fiberid) - endif else begin - fiberid = lindgen(nobj) + 1 - endelse - splog, 'Number of fibers = ', nobj - - ;---------- - ; Look for where the S/N is unreasonably large - ; or where flux is unphysically negative. - - for iobj=0L, nobj-1 do begin - junk = where(abs(objflux[*,iobj]) * sqrt(objivar[*,iobj]) GT 200., ct) - if (ct GT 0) then $ - splog, 'WARNING: Fiber #', fiberid[iobj], $ - ' has ', ct, ' pixels with S/N > 200' - - junk = where(objflux[*,iobj] * sqrt(objivar[*,iobj]) LE -10., ct) - if (ct GT 0) then $ - splog, 'WARNING: Fiber #', fiberid[iobj], $ - ' has ', ct, ' pixels with Flux < -10*Noise' - endfor - - ;---------- - ; Mask out points that are unphysically negative (10-sigma negatives), - ; and mask the neighboring 2 pixels in each direction. - - for iobj=0L, nobj-1 do begin - thismask = objflux[*,iobj] * sqrt(objivar[*,iobj]) LE -10. - thismask = smooth(float(thismask),5) GT 0 - objivar[*,iobj] = objivar[*,iobj] * (1 - thismask) - endfor - - ;---------- - ; Find GALAXY redshifts - - npoly = 3 - pspace = 2 - nfind = 5 - plottitle = 'Galaxy Redshift' - - eigenfile = 'spEigenGal-?????.fits' - - splog, 'Compute GALAXY redshifts:', $ - ' ZMIN=', zrange_gal[0], ' ZMAX=', zrange_gal[1], ' PSPACE=', pspace - t0 = systime(1) - res_gal = zfind(objflux, objivar, hdr=hdr, $ - eigenfile=eigenfile, npoly=npoly, zmin=zrange_gal[0], zmax=zrange_gal[1], $ - pspace=pspace, nfind=nfind, width=5*pspace, $ - plottitle=plottitle, doplot=doplot, debug=debug, /verbose) - - splog, 'CPU time to compute GALAXY redshifts = ', systime(1)-t0 - - splog, 'Locally re-fitting GALAXY redshifts' - t0 = systime(1) - res_gal = zrefind(objflux, objivar, hdr=hdr, $ - pwidth=5, pspace=1, width=5, zold=res_gal, $ - plottitle=plottitle, doplot=doplot, debug=debug) - splog, 'CPU time to re-fit GALAXY redshifts = ', systime(1)-t0 - - ; Only solve for velocity dispersions for the best-fit - splog, 'Find velocity dispersions for galaxies' - t0 = systime(1) - ifind = 0 - vdans = vdispfit(objflux, objivar, hdr=hdr, zobj=res_gal[ifind,*].z, $ - eigenfile='spEigenElodie.fits', columns=lindgen(24), yfit=dispflux) - res_gal[ifind,*].vdisp = reform([vdans.vdisp],1,nobj) - res_gal[ifind,*].vdisp_err = reform([vdans.vdisp_err],1,nobj) - res_gal[ifind,*].vdispchi2 = reform([vdans.vdispchi2],1,nobj) - res_gal[ifind,*].vdispnpix = reform([vdans.vdispnpix],1,nobj) - res_gal[ifind,*].vdispdof = reform([vdans.vdispdof],1,nobj) - splog, 'CPU time to fit GALAXY velocity dispersions = ', systime(1)-t0 - - res_gal.class = 'GALAXY' - res_gal.subclass = ' ' - - res_all = res_gal ; Append results - - ;---------- - ; Find QSO redshifts - - npoly = 3 - pspace = 4 - nfind = 5 - plottitle = 'QSO Redshift' - - eigenfile = 'spEigenQSO-?????.fits' - - splog, 'Compute QSO redshifts:', $ - ' ZMIN=', zrange_qso[0], ' ZMAX=', zrange_qso[1], ' PSPACE=', pspace - t0 = systime(1) - res_qso = zfind(objflux, objivar, hdr=hdr, $ - eigenfile=eigenfile, npoly=npoly, zmin=zrange_qso[0], zmax=zrange_qso[1], $ - pspace=pspace, nfind=nfind, width=7*pspace, $ - plottitle=plottitle, doplot=doplot, debug=debug, /verbose) - splog, 'CPU time to compute QSO redshifts = ', systime(1)-t0 - - splog, 'Locally re-fitting QSO redshifts' - t0 = systime(1) - res_qso = zrefind(objflux, objivar, hdr=hdr, $ - pwidth=11, pspace=1, width=11, zold=res_qso, $ - plottitle=plottitle, doplot=doplot, debug=debug) - splog, 'CPU time to re-fit QSO redshifts = ', systime(1)-t0 - - res_qso.class = 'QSO' - res_qso.subclass = ' ' - - res_all = [res_all, res_qso] ; Append results - - ;---------- - ; Find STAR redshifts - - npoly = 4 - pspace = 1 - nfind = 1 - - eigenfile = 'spEigenStar-?????.fits' - - ; Select the stars eigen-file here to detemine how many templates are in it - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - allfiles = findfile(djs_filepath(eigenfile, root_dir=eigendir), count=ct) - if (ct EQ 0) then $ - message, 'Unable to find EIGENFILE matching '+eigenfile - eigenfile = fileandpath(allfiles[ (reverse(sort(allfiles)))[0] ]) - shdr = headfits(djs_filepath(eigenfile, root_dir=eigendir)) - nstar = sxpar(shdr, 'NAXIS2') > 1 - - for istar=0, nstar-1 do begin - subclass = strtrim( sxpar(shdr, 'NAME'+strtrim(string(istar),2)), 2) - plottitle = subclass + '-Star Redshift' - - splog, 'Compute STAR (' + subclass + ') redshifts:', $ - ' ZMIN=', zrange_star[0], ' ZMAX=', zrange_star[1], ' PSPACE=', pspace - t0 = systime(1) - res_star = zfind(objflux, objivar, hdr=hdr, $ - eigenfile=eigenfile, columns=istar, npoly=npoly, $ - zmin=zrange_star[0], zmax=zrange_star[1], $ - pspace=1, nfind=nfind, width=5*pspace, $ - plottitle=plottitle, doplot=doplot, debug=debug) - splog, 'CPU time to compute STAR redshifts = ', systime(1)-t0 - - res_star.class = 'STAR' - res_star.subclass = subclass - - res_all = [res_all, res_star] ; Append results - endfor - - ;---------- - ; Find CV STAR redshifts - - npoly = 3 - pspace = 1 - nfind = 1 - - eigenfile = 'spEigenCVstar-?????.fits' - - subclass = 'CV' - plottitle = subclass + '-Star Redshift' - - splog, 'Compute STAR (' + subclass + ') redshifts:', $ - ' ZMIN=', zrange_cvstar[0], ' ZMAX=', zrange_cvstar[1], ' PSPACE=', pspace - t0 = systime(1) - res_cvstar = zfind(objflux, objivar, hdr=hdr, $ - eigenfile=eigenfile, npoly=npoly, $ - zmin=zrange_cvstar[0], zmax=zrange_cvstar[1], $ - pspace=1, nfind=nfind, width=5*pspace, $ - plottitle=plottitle, doplot=doplot, debug=debug) - splog, 'CPU time to compute STAR redshifts = ', systime(1)-t0 - - res_cvstar.class = 'STAR' - res_cvstar.subclass = subclass - - res_all = [res_all, res_cvstar] ; Append results - - ;---------- - nper = (size(res_all,/dimens))[0] - - ;---------- - ; Sort results for each object by ascending order in chi^2/DOF, - ; but putting any results with zero degrees-of-freedom at the end. - - minvdiff = 1000.0 ; km/s - cspeed = 2.99792458e5 - - for iobj=0, nobj-1 do begin - res1 = res_all[*,iobj] - - rchi2 = res1.rchi2 - - isort = sort(rchi2 + (res1.dof EQ 0)*max(rchi2)) - for ii=0, nper-1 do begin - res_all[ii,iobj] = res1[isort[ii]] - endfor - - ; Find the difference in reduced chi^2 between each result and the next - res1 = res_all[*,iobj] - rchi2 = res1.rchi2 - for ii=0, nper-2 do begin - ; JEB adding a (1+z) term when converting Delta z into Delta v - inext = (where( $ - abs(res1[ii+1:nper-1].z - res1[ii].z) GT minvdiff/cspeed * (1+res1[ii].z) $ - AND res1[ii+1:nper-1].dof GT 0))[0] - if (inext NE -1) then $ - res_all[ii,iobj].rchi2diff = rchi2[ii+1+inext] - rchi2[ii] - endfor - endfor - - ;---------- - ; Generate the synthetic spectra, and count the fraction of points - ; that deviate more than N sigma (where N goes from 1 to NFSIG). - - t0 = systime(1) - nfsig = 10 - chi68p = fltarr(nper,nobj) - fracnsigma = fltarr(nfsig,nper,nobj) - fracnsighi = fltarr(nfsig,nper,nobj) - fracnsiglo = fltarr(nfsig,nper,nobj) - spectroflux = fltarr(5,nper,nobj) - spectrosynflux = fltarr(5,nper,nobj) - spectroskyflux = fltarr(5,nper,nobj) - - wavevec = 10d^objloglam - flambda2fnu = wavevec^2 / 2.99792e18 - - ; The 22.5 is to convert to nanomaggies. - fthru = filter_thru(objflux * rebin(flambda2fnu,npixobj,nobj), $ - waveimg=wavevec, mask=(objivar EQ 0)) - spectroflux[*,0,*] = transpose(fthru) * 10^((22.5 + 48.6 - 2.5*17.)/2.5) - - if (keyword_set(skyflux)) then begin - sthru = filter_thru(skyflux * rebin(flambda2fnu,npixobj,nobj), $ - waveimg=wavevec, mask=(objivar EQ 0)) - spectroskyflux[*,0,*] = $ - transpose(sthru) * 10^((22.5 + 48.6 - 2.5*17.)/2.5) - endif - - ; Loop in reverse order, so that we look at the best-fit spectra last, - ; and keep those spectra around for later. - -; Save time for now and only look at best fit, since SYNTHSPEC and -; FILTER_THRU are so slow ??? -; for iper=nper-1, 0, -1 do begin - for iper=0, 0, -1 do begin - ; Copy this for all fits, since the measured magnitudes are the same - spectroflux[*,iper,*] = spectroflux[*,0,*] - spectroskyflux[*,iper,*] = spectroskyflux[*,0,*] - - synflux = synthspec(res_all[iper,*], loglam=objloglam) - - for iobj=0, nobj-1 do begin - ; Ignore points blue-ward of rest-frame 1216 Ang, since these numbers - ; would then be dominated by LyA absorption in QSOs. - igood = where(objivar[*,iobj] GT 0 $ - AND wavevec GT 1216.*(1+res_all[iper,iobj].z), ngood) - if (ngood GT 0) then begin - chivec = (objflux[igood,iobj] - synflux[igood,iobj]) $ - * sqrt(objivar[igood,iobj]) - abschivec = abs(chivec) - chi68p[iper,iobj] = (abschivec[sort(abschivec)])[floor(0.68*ngood)] - for isig=0, nfsig-1 do begin - fracnsigma[isig,iper,iobj] = total(abschivec GT isig+1) / ngood - fracnsighi[isig,iper,iobj] = total(chivec GT isig+1) / ngood - fracnsiglo[isig,iper,iobj] = total(chivec LT (-isig-1)) / ngood - endfor - endif - endfor - - ; The 22.5 is to convert to nanomaggies. - fthru = filter_thru(synflux * rebin(flambda2fnu,npixobj,nobj), $ - waveimg=wavevec) - spectrosynflux[*,iper,*] = $ - transpose(fthru) * 10^((22.5 + 48.6 - 2.5*17.)/2.5) - endfor -flambda2fnu = 0 ; Free memory - - splog, 'CPU time to generate chi^2 statistics = ', systime(1)-t0 - - ;---------- - ; Zero-out the dispersion template if the best-fit was not a galaxy. - - for iobj=0, nobj-1 do begin - if (strtrim(res_gal[iobj].class,2) NE 'GALAXY') then $ - dispflux[*,iobj] = 0 - endfor - - ;---------- - ; Add other fields to the output structure - - splog, 'Adding other fields to output structure' - res1 = { plate: long(plateid), $ - tile: long(sxpar(hdr, 'TILEID')), $ - mjd: long(sxpar(hdr, 'MJD')), $ - fiberid: 0L , $ - run2d: strtrim(sxpar(hdr, 'RUN2D'),2), $ - run1d: run1d, $ - objid: lindgen(5), $ - objtype: ' ' , $ - plug_ra: 0.0d , $ - plug_dec: 0.0d } - res_prepend = make_array(value=res1, dimension=size(res_all,/dimens)) - res_all = struct_addtags(res_prepend, res_all) - - for iobj=0, nobj-1 do begin - res_all[*,iobj].fiberid = fiberid[iobj] - res_all[*,iobj].objid = plugmap[iobj].objid - res_all[*,iobj].objtype = plugmap[iobj].objtype - res_all[*,iobj].plug_ra = plugmap[iobj].ra - res_all[*,iobj].plug_dec = plugmap[iobj].dec - endfor - - res1 = { wavemin: 0.0, $ - wavemax: 0.0, $ - wcoverage: 0.0, $ - zwarning: 0L, $ - sn_median: fltarr(5), $ - sn_median_all: 0.0, $ - chi68p: 0.0, $ - fracnsigma: fltarr(nfsig), $ - fracnsighi: fltarr(nfsig), $ - fracnsiglo: fltarr(nfsig), $ - spectroflux: fltarr(5), $ - spectroflux_ivar: fltarr(5), $ - spectrosynflux: fltarr(5), $ - spectrosynflux_ivar: fltarr(5), $ - spectroskyflux: fltarr(5), $ - anyandmask: 0L, $ - anyormask: 0L, $ - spec1_g: float(sxpar(hdr, 'SPEC1_G')), $ - spec1_r: float(sxpar(hdr, 'SPEC1_R')), $ - spec1_i: float(sxpar(hdr, 'SPEC1_I')), $ - spec2_g: float(sxpar(hdr, 'SPEC2_G')), $ - spec2_r: float(sxpar(hdr, 'SPEC2_R')), $ - spec2_i: float(sxpar(hdr, 'SPEC2_I')) } - res_append = make_array(value=res1, dimension=size(res_all,/dimens)) - res_all = struct_addtags(res_all, res_append) - - for iobj=0, nobj-1 do begin - igood = where(objivar[*,iobj] NE 0, ngood) - res_all[*,iobj].wavemin = $ - 10^(objloglam0 + (igood[0]>0)*objdloglam) * (ngood NE 0) - res_all[*,iobj].wavemax = $ - 10^(objloglam0 + (igood[(ngood-1)>0])*objdloglam) * (ngood NE 0) - res_all[*,iobj].wcoverage = ngood * objdloglam - res_all[*,iobj].anyandmask = anyandmask[iobj] - res_all[*,iobj].anyormask = anyormask[iobj] - for j=0, 4 do $ - res_all[*,iobj].sn_median[j] = snmed[j,iobj] - res_all[*,iobj].sn_median_all = sn_all[iobj] - endfor - - res_all.chi68p = chi68p - res_all.fracnsigma = fracnsigma - res_all.fracnsighi = fracnsighi - res_all.fracnsiglo = fracnsiglo - res_all.spectroflux = spectroflux - res_all.spectrosynflux = spectrosynflux - res_all.spectroskyflux = spectroskyflux - - ;---------- - ; Generate output headers for spZbest, spZall, spZline files. - - sxaddpar, hdr, 'NAXIS', 0 - sxdelpar, hdr, 'NAXIS1' - sxdelpar, hdr, 'NAXIS2' - sxaddpar, hdr, 'EXTEND', 'T', after='NAXIS' - sxaddpar, hdr, 'RUN1D', run1d, after='RUN2D', ' Spectro-1D reduction name' - sxaddpar, hdr, 'VERS1D', idlspec2d_version(), $ - ' Version of idlspec2d for 1D reduction', after='RUN1D' - spawn, 'uname -n', uname - sxaddpar, hdr, 'UNAME', uname[0] - if (keyword_set(chop_data)) then begin - sxaddpar, hdr, 'CHOP_MIN', chop_data[0] - sxaddpar, hdr, 'CHOP_MAX', chop_data[1] - endif - - ;---------- - ; Call the line-fitting code for this plate - - splog, 'Call line-fitting code' - -; Should be equivalent ??? -; speclinefit, platefile, fiberid=fiberid, $ -; zhdr=hdr, zans=(res_all[0,*])[*], synflux=synflux, dispflux=dispflux, $ -; zline=zline, doplot=doplot, debug=debug - - speclinefit, fiberid=fiberid, $ - hdr=hdr, objflux=objflux, objivar=objivar, $ - zhdr=hdr, zans=(res_all[0,*])[*], synflux=synflux, dispflux=dispflux, $ - outfile=zlinefile, zline=zline, doplot=doplot, debug=debug - - ;---------- - ; Classify galaxies and QSO's based upon emission lines: - ; log10(OIII/Hbeta) > 0.7 - 1.2 * (log10(NII/Halpha) - 0.4) AGN - ; < STARFORMING - ; If the H_alpha E.W. > 50 Ang, then upgrade STARFORMING -> STARBURST. - ; If any galaxies or quasars have lines detected at the 10-sigma level - ; with sigmas > 200 km/sec at the 5-sigma level, call them BROADLINE. - - nline = (size(zline, /dimens))[0] - i5007 = where(strtrim(zline.linename,2) EQ '[O_III] 5007') - ihbeta = where(strtrim(zline.linename,2) EQ 'H_beta') - ihalpha = where(strtrim(zline.linename,2) EQ 'H_alpha') - i6583 = where(strtrim(zline.linename,2) EQ '[N_II] 6583') - - q_good = zline[i5007].linearea_err GT 0 $ - AND zline[ihbeta].linearea_err GT 0 $ - AND zline[ihalpha].linearea_err GT 0 $ - AND zline[i6583].linearea_err GT 0 - q_good = q_good $ - AND zline[i5007].linearea GT 3 * zline[i5007].linearea_err $ - AND zline[ihbeta].linearea GT 3 * zline[ihbeta].linearea_err $ - AND zline[ihalpha].linearea GT 3 * zline[ihalpha].linearea_err $ - AND zline[i6583].linearea GT 3 * zline[i6583].linearea_err - q_agn = zline[i5007].linearea * (zline[i6583].linearea)^(1.2) $ - GT 10^(0.22) * zline[ihbeta].linearea * (zline[ihalpha].linearea)^(1.2) - q_obj = strtrim((res_all[0,*].class)[*],2) EQ 'GALAXY' $ - OR strtrim((res_all[0,*].class)[*],2) EQ 'QSO' - q_stronghalpha = zline[ihalpha].lineew GT 50 $ - AND zline[ihalpha].lineew_err GT 0 $ - AND zline[ihalpha].lineew GT 3 * zline[ihalpha].lineew_err - - ; Find the maximum of (sigma - 5*sigma_err) for all lines of each object - ; Insist that the lines be detected at the 10-sigma level. - maxsigma = fltarr(nobj) - for iobj=0, nobj-1 do $ - for iline=0, nline-1 do $ - if (strtrim(zline[iline,iobj].linename,2) NE 'Ly_alpha' $ - AND zline[iline,iobj].linearea GT 10*zline[iline,iobj].linearea_err $ -; ASB: adding d.o.f. test: - AND (zline[iline,iobj].linedof GE 1.) $ - AND zline[iline,iobj].linesigma_err GT 0) then $ - maxsigma[iobj] = maxsigma[iobj] > $ - (zline[iline,iobj].linesigma - 5*zline[iline,iobj].linesigma_err) - - indx = where(q_good AND q_obj AND q_agn) - if (indx[0] NE -1) then res_all[0,indx].subclass $ - = strtrim(res_all[0,indx].subclass + ' AGN', 2) - - indx = where(q_good AND q_obj AND (q_agn EQ 0) AND (q_stronghalpha EQ 0)) - if (indx[0] NE -1) then res_all[0,indx].subclass $ - = strtrim(res_all[0,indx].subclass + ' STARFORMING', 2) - - indx = where(q_good AND q_obj AND (q_agn EQ 0) AND (q_stronghalpha EQ 1)) - if (indx[0] NE -1) then res_all[0,indx].subclass $ - = strtrim(res_all[0,indx].subclass + ' STARBURST', 2) - - indx = where(q_obj AND maxsigma GT 200.) - if (indx[0] NE -1) then res_all[0,indx].subclass $ - = strtrim(res_all[0,indx].subclass + ' BROADLINE', 2) - - ;---------- - ; Find the best-fit Elodie star for all objects classified as stars - - fitindx = where(strtrim(res_all[0,*].class,2) EQ 'STAR', nfit) - splog, 'Fitting to Elodie spectra for ', nfit, ' stars' - t0 = systime(1) - - res_elodie = elodie_best(objflux, objivar, hdr=hdr, fitindx=fitindx) - - splog, 'CPU time to fit to Elodie = ', systime(1)-t0 - - ;---------- - ; Find the velocity shifts for all objects classified as stars - -if (0) then begin ; ??? - fitindx = where(strtrim(res_all[0,*].class,2) EQ 'STAR', nfit) - if (nfit EQ 0) then thisid = 0 $ - else thisid = res_all[0,fitindx].fiberid - splog, 'Fitting velocity shifts for ', nfit, ' stars' - t0 = systime(1) - - res_vshift = star_dvelocity(res_all[0].plate, mjd=res_all[0].mjd, $ - fiberid=thisid, path='.') - res_vshift = res_vshift[ res_all[0,*].fiberid-1 ] - - splog, 'CPU time to fit to star velocity shifts = ', systime(1)-t0 -endif - - ;---------- - ; Compute the errors in the magnitudes. - ; Do this by looking at the dispersion in the sky-fiber fluxes. - ; We assign identical errors (in linear flux units) to all fibers. - - iskies = where(strtrim(plugmap.objtype,2) EQ 'SKY', nskies) - if (nskies GT 1) then begin - for ifilt=0, 4 do begin - res_all.spectroflux_ivar[ifilt] = $ - 1. / stddev(res_all[0,iskies].spectroflux[ifilt],/double) - res_all.spectrosynflux_ivar[ifilt] = $ - 1. / stddev(res_all[0,iskies].spectrosynflux[ifilt],/double) - endfor - endif else begin - splog, 'WARNING: Only ', nskies, ' sky fibers' - endelse - - ;---------- - ; Set ZWARNING flags. - - splog, 'Setting flags' - zwarning = lonarr(nper,nobj) - - ; Missing data - for iobj=0, nobj-1 do begin - if (total(objivar[*,iobj]) EQ 0.0) then $ - zwarning[*,iobj] = zwarning[*,iobj] OR sdss_flagval('ZWARNING', 'NODATA') - endfor - - ; Warning: Sky fiber. - for iobj=0, nobj-1 do begin - if (strtrim(plugmap[iobj].objtype,2) EQ 'SKY') then $ - zwarning[*,iobj] = zwarning[*,iobj] OR sdss_flagval('ZWARNING', 'SKY') - endfor - - ; Warning: Catastrophically bad targeting data. -; if tag_exist(plugmap, 'CALIB_STATUS') then begin -; astrombad_flag = sdss_flagval('CALIB_STATUS', 'ASTROMBAD') -; for iobj=0, nobj-1 do if (max(plugmap[iobj].calib_status AND astrombad_flag) GT 0) then $ -; zwarning[*,iobj] = zwarning[*,iobj] OR sdss_flagval('ZWARNING', 'BAD_TARGET') -; endif - if (total(tag_names(plugmap) EQ 'RUN') GT 0) then begin - badflag = sdss_astrombad(plugmap.run, plugmap.camcol, plugmap.field) - for iobj=0, nobj-1 do if (badflag[iobj] ne 0) then $ - zwarning[*,iobj] = zwarning[*,iobj] OR sdss_flagval('ZWARNING', 'BAD_TARGET') - endif - - ; Warning: too little wavelength coverage. - qflag = res_all.wcoverage LT 0.18 - zwarning = zwarning OR qflag * sdss_flagval('ZWARNING', 'LITTLE_COVERAGE') - - ; Warning: delta-chi^2 is too small as compared to the next best ID. - minrchi2diff = 0.01 - qflag = res_all.rchi2diff LT minrchi2diff $ - OR res_all.rchi2diff LT minrchi2diff * res_all.rchi2 - zwarning = zwarning OR qflag * sdss_flagval('ZWARNING', 'SMALL_DELTA_CHI2') - - ; Warning: synthetic spectrum is negative (for STAR only). - qflag = (strtrim(res_all.class) EQ 'STAR' $ - AND strtrim(res_all.subclass) NE 'CV' $ - AND res_all.theta[0] LE 0) - zwarning = zwarning OR qflag * sdss_flagval('ZWARNING', 'NEGATIVE_MODEL') - - ; Warning: Fraction of points above 5 sigma is too large (> 5%), - ; except for QSO's where we just look at the fraction of high outliers - ; since we expect absorption lines that could give many low outliers. -; Commenting out "MANY_OUTLIERS" flagging, ASB 2010 Aug: -; qflag = (strtrim(res_all.class) NE 'QSO' AND fracnsigma[4,*,*] GT 0.05) $ -; OR (strtrim(res_all.class) EQ 'QSO' AND fracnsighi[4,*,*] GT 0.05) -; zwarning = zwarning OR qflag * sdss_flagval('ZWARNING', 'MANY_OUTLIERS') - - ; Warning: Redshift-error warning flag set to -1, which means that - ; the chi^2 minimum was at the edge of the redshift-fitting range. -; qflag = res_all.z_err EQ -1 -; zwarning = zwarning OR qflag * sdss_flagval('ZWARNING', 'Z_FITLIMIT') - - ; Warning: For QSOs, if C_IV, CIII], Mg_II, H_beta or H_alpha are negative - ; and have at least a few pixels on each side of the fit (LINENPIXLEFT >= 4, - ; LINENPIXRIGHT >= 4, and DOF >= 4). Must be at least 3-sigma negative. - for iobj=0, nobj-1 do begin - if (strtrim(res_all[0,iobj].class,2) EQ 'QSO') then begin - indx = where(zline.fiberid EQ res_all[0,iobj].fiberid $ - AND (strmatch(zline.linename, 'C_IV 1549*') $ - OR strmatch(zline.linename, 'C_III] 1908*') $ - OR strmatch(zline.linename, 'Mg_II 2799*') $ - OR strmatch(zline.linename, 'H_beta*') $ - OR strmatch(zline.linename, 'H_alpha*')) ) - if (indx[0] NE -1) then begin - qflag = total( $ - zline[indx].linearea + 3*zline[indx].linearea_err LT 0 $ - AND zline[indx].linearea_err GT 0 $ - AND zline[indx].linenpixleft GE 4 $ - AND zline[indx].linenpixright GE 4 $ - AND zline[indx].linedof GE 4) NE 0 - zwarning[0,iobj] = zwarning[0,iobj] $ - OR qflag * sdss_flagval('ZWARNING', 'NEGATIVE_EMISSION') - endif - endif - endfor - - ; Warning: The fiber was marked as unplugged, which means it is - ; probably a broken fiber and only getting some sky photons - ; and no real object photons. - qflag = (anyandmask AND sdss_flagval('SPPIXMASK', 'NOPLUG')) NE 0 - for iobj=0, nobj-1 do $ - zwarning[*,iobj] = zwarning[*,iobj] $ - OR (qflag[iobj] * sdss_flagval('ZWARNING', 'UNPLUGGED')) - - res_all.zwarning = zwarning - zans = struct_addtags((res_all[0,*])[*], res_elodie) -; zans = struct_addtags(zans, res_vshift) - - ;---------- - ; Compute & assign the "_NOQSO" values: - ; (bolton@utah 2011july) - ; 01-Oct-2012: Adding ZNUM_NOQSO to the NOQSO structure, Joel Brownstein, Utah - - print, ' Determining non-QSO redshift info.' - class_all = strtrim(res_all.class,2) - id_noqso = replicate(-1L, nobj) - rchi2diff_noqso = replicate(0., nobj) - - ;adding a column to hold the value of znum_noqso - znum_noqso = lonarr(nobj) - - for ii = 0L, nobj-1 do begin - wh_noqso = where(class_all[*,ii] ne 'QSO') - wh_noqso = (wh_noqso[sort(wh_noqso)])[0:1] - znum_noqso[ii] = wh_noqso[0] + 1 ;znum_noqso calculation - id_noqso[ii] = wh_noqso[0] - rchi2diff_noqso[ii] = total(res_all[wh_noqso[0]:wh_noqso[1]-1,ii].rchi2diff) - endfor - zans_noqso = (res_all[id_noqso,lindgen(nobj)])[*] - noqso_struc = replicate( $ - {z_noqso: 0., z_err_noqso: 0., znum_noqso:0L, zwarning_noqso: 0L, $ - class_noqso: ' ', subclass_noqso: ' ', $ - rchi2diff_noqso: 0.}, nobj) - noqso_struc.z_noqso = zans_noqso.z - noqso_struc.z_err_noqso = zans_noqso.z_err - noqso_struc.znum_noqso = znum_noqso - noqso_struc.class_noqso = zans_noqso.class - noqso_struc.subclass_noqso = zans_noqso.subclass - noqso_struc.rchi2diff_noqso = rchi2diff_noqso -; Re-set the small-delta-chi2 bit: -;; minrchi2diff = 0.01 ; (set above) - small_rchi2diff = rchi2diff_noqso lt minrchi2diff - zw_new = zans_noqso.zwarning - zflagval = sdss_flagval('ZWARNING', 'SMALL_DELTA_CHI2') - zw_new = zw_new - (zw_new and zflagval) - zw_new = zw_new or (zflagval * small_rchi2diff) - noqso_struc.zwarning_noqso = zw_new - zans = struct_addtags(zans, noqso_struc) - noqso_struc = 0 - zans_noqso = 0 - - ;----------- - ; Compute redshift-marginalized velocity-dispersion - ; likelihood curves for galaxies (bolton@utah 2011aug): - wh_v = where(strmatch(zans.objtype, 'GALAXY*') and $ - strmatch(zans.class_noqso, 'GALAXY*'), n_v) - if (n_v gt 0) then begin - vdans_new = vdispfit(objflux[*,wh_v], objivar[*,wh_v], objloglam, $ - zobj=zans[wh_v].z_noqso, eigenfile='spEigenElodie.fits', columns=lindgen(5), $ - npoly=5, z_err=(zans[wh_v].z_err_noqso > 3.e-5), dzpix=3, /return_chisq) - vdans_new = reform(vdans_new) - nchi2 = n_elements(vdans_new[0].chi2arr) - vstruc_new = replicate({vdisp_lnl: replicate(0., nchi2)}, nobj) - vstruc_new[wh_v].vdisp_lnl = - vdans_new.chi2arr / 2. - zans = struct_addtags(zans, vstruc_new) - endif - - ;---------- - ; Add the cas-styled specobjid to output - zans = struct_addtags(zans, replicate({specobjid:0LL},n_elements(zans))) - words= STREGEX(STRTRIM(zans.run2d,2),'^v([0-9]+)_([0-9]+)_([0-9]+)', /SUB, /EXTRACT) - ; did it parse as vXX_YY_ZZ? - if words[0] ne '' then begin - rerun= (long(words[1,*])-5L)*10000L+ (long(words[2,*])*100L)+ (long(words[3,*])) - endif else begin - splog, "WARNING: Unable to parse RERUN from", zans.run2d, "for CAS-style SPECOBJID; Using 0 instead" - rerun= intarr(n_elements(zans.plate)) - endelse - zans.specobjid = sdss_specobjid(zans.plate,zans.fiberid,zans.mjd,rerun) - - ;---------- - ; Write the output files - - splog, 'Writing output files' - sxaddpar, hdr, 'NAXIS', 0 - sxdelpar, hdr, 'NAXIS1' - sxdelpar, hdr, 'NAXIS2' - sxaddpar, hdr, 'EXTEND', 'T', after='NAXIS' - sxaddpar, hdr, 'VERS1D', idlspec2d_version(), $ - 'Version of idlspec2d for 1D reduction', after='VERSCOMB' - spawn, 'uname -n', uname - sxaddpar, hdr, 'UNAME', uname[0] - - mwrfits, 0, zbestfile, hdr, /create ; Retain the original header in first HDU - mwrfits, zans, zbestfile - mwrfits, synflux, zbestfile - mwrfits, dispflux, zbestfile - - sxaddpar, hdr, 'DIMS0', nper, ' Number of fits per objects' - sxaddpar, hdr, 'DIMS1', nobj, ' Number of objects' - mwrfits, 0, zallfile, hdr, /create ; Retain the original header in first HDU - mwrfits, res_all, zallfile - - if (keyword_set(debugfile)) then dfpsclose - - ;---------- - ; Generate final QA plots - - splog, 'Generating QA plots' - - if (keyword_set(plotfile)) then begin - cpbackup, plotfile - dfpsplot, plotfile, /color - endif - - plottitle = string(plate_to_string(zans[0].plate), zans[0].mjd, $ - format='("Flux-Calibration Errors Plate=", a, " MJD=", i5)') - qaplot_fcalibvec, objloglam, objflux, objivar, synflux, plugmap, zans, $ - plottitle=plottitle - - if (keyword_set(plotfile)) then dfpsclose - - ; Track memory usage - thismem = memory() - maxmem = maxmem > thismem[3] - splog, 'Max memory usage = ', string(maxmem/1e6,format='(f7.1)'), ' MB' - - ;---------- - ; Close log file - - splog, 'Total time for SPREDUCE1D = ', systime(1)-stime0, ' seconds', $ - format='(a,f6.0,a)' - splog, 'Successful completion of SPREDUCE1D at ' + systime() - if (keyword_set(logfile)) then splog, /close - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/spspec2spfullsky.pro b/pro/spec1d/spspec2spfullsky.pro index 90e625fdc..c15709f54 100644 --- a/pro/spec1d/spspec2spfullsky.pro +++ b/pro/spec1d/spspec2spfullsky.pro @@ -54,24 +54,24 @@ CPU, TPOOL_NTHREADS = 1 if not keyword_set(mjd) then begin mjd = '*' - spFieldname = filepath('spFullsky-'+strtrim(coadd,2)+'.fits',root_dir = topdir, subdirectory = [strtrim(coadd,2)]) - plotsnfile = filepath('spSN2d-'+strtrim(coadd,2)+'.ps',root_dir = topdir, subdirectory = [strtrim(coadd,2)]) - logfile = filepath('spSpec2spFullsky-'+strtrim(coadd,2)+'.log',root_dir = topdir, subdirectory = [strtrim(coadd,2)]) + spFieldname = filepath('spFullsky-'+strtrim(coadd,2)+'.fits',root_dir=get_field_dir(topdir,'',coadd,/custom)) + plotsnfile = filepath('spSN2d-'+strtrim(coadd,2)+'.ps',root_dir=get_field_dir(topdir,'',coadd,/custom)) + logfile = filepath('spSpec2spFullsky-'+strtrim(coadd,2)+'.log',root_dir=get_field_dir(topdir,'',coadd,/custom)) endif else begin - spFieldname = filepath('spFullsky-'+strtrim(coadd,2)+'-'+strtrim(mjd,2)+'.fits',root_dir = topdir, subdirectory = [strtrim(coadd,2)]) - plotsnfile = filepath('spSN2d-'+strtrim(coadd,2)+'-'+strtrim(mjd,2)+'.ps',root_dir = topdir, subdirectory = [strtrim(coadd,2)]) - logfile = filepath('spSpec2spFullsky-'+strtrim(coadd,2)+'-'+strtrim(mjd,2)+'.log',root_dir = topdir, subdirectory = [strtrim(coadd,2)]) + spFieldname = filepath('spFullsky-'+strtrim(coadd,2)+'-'+strtrim(mjd,2)+'.fits',root_dir=get_field_dir(topdir,'',coadd,/custom)) + plotsnfile = filepath('spSN2d-'+strtrim(coadd,2)+'-'+strtrim(mjd,2)+'.ps',root_dir=get_field_dir(topdir,'',coadd,/custom)) + logfile = filepath('spSpec2spFullsky-'+strtrim(coadd,2)+'-'+strtrim(mjd,2)+'.log',root_dir=get_field_dir(topdir,'',coadd,/custom)) endelse - + print, spFieldname if not keyword_set(runmjd) then runmjd = mjd ;cpbackup, logfile ;splog, filename=logfile ;splog, 'Log file ' + logfile + ' opened ' + systime() - splog, filepath('spSpec*.fits', root_dir=topdir, subdirectory=[strtrim(coadd,2), 'coadd', strtrim(mjd,2)]) - spSpecfiles = findfile(filepath('spSpec*.fits', root_dir=topdir, $ - subdirectory=[strtrim(coadd,2), 'coadd', strtrim(mjd,2)]), count = nspSpec) + splog, filepath('spSpec*.fits',root_dir = get_field_dir(topdir,'',coadd,/custom), subdirectory=['coadd', strtrim(mjd,2)]) + spSpecfiles = findfile(filepath('spSpec*.fits',root_dir = get_field_dir(topdir,'',coadd,/custom), $ + subdirectory=['coadd', strtrim(mjd,2)]), count = nspSpec) if nspSpec eq 0 then begin splog, 'No spSpec files found' @@ -154,50 +154,43 @@ CPU, TPOOL_NTHREADS = 1 platesn, FLUX, IVAR, ANDMASK, PLUGMAP, finalwave, obs='apo', hdr=hdr0, plotfile=plotsnfile - mwrfits, FLUX, spFieldname, hdr0, /create, /silent + mwrfits_named, FLUX, spFieldname, hdr=hdr0, name='FLUX', /create, /silent ; HDU #1 IVAR mkhdr, hdr1, IVAR, /image, /extend add_iraf_keywords, hdr1, wavemin, binsz sxaddpar, hdr1, 'BUNIT', '1/(1E-17 erg/cm^2/s/Ang)^2' - sxaddpar, hdr1, 'EXTNAME', 'IVAR', ' Inverse Variance' - mwrfits, IVAR, spFieldname, hdr1, /silent + mwrfits_named, IVAR, spFieldname, hdr=hdr1, name='IVAR', desc=' Inverse Variance', /silent ; HDU #2 ANDMASK mkhdr, hdr2, ANDMASK, /image, /extend add_iraf_keywords, hdr2, wavemin, binsz - sxaddpar, hdr2, 'EXTNAME', 'ANDMASK', ' AND Mask' - mwrfits, ANDMASK, spFieldname, hdr2, /silent + mwrfits_named, ANDMASK, spFieldname, hdr=hdr2,name='ANDMASK', desc=' AND Mask', /silent ; HDU #3 ORMASK mkhdr, hdr3, ORMASK, /image, /extend add_iraf_keywords, hdr3, wavemin, binsz - sxaddpar, hdr3, 'EXTNAME', 'ORMASK', ' OR Mask' - mwrfits, ORMASK, spFieldname, hdr3, /silent + mwrfits_named, ORMASK, spFieldname, hdr=hdr3, name='ORMASK', desc=' OR Mask',/silent ; HDU #4 WAVEDISP mkhdr, hdr4, WAVEDISP, /image, /extend add_iraf_keywords, hdr4, wavemin, binsz sxaddpar, hdr4, 'BUNIT', 'pixels' - sxaddpar, hdr4, 'EXTNAME', 'WAVEDISP', ' Wavelength dispersion' - mwrfits, WAVEDISP, spFieldname, hdr4, /silent + mwrfits_named, WAVEDISP, spFieldname, hdr=hdr4, name='WAVEDISP', desc=' Wavelength dispersion', /silent ; HDU #5 PLUGMAP - sxaddpar, hdr5, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - mwrfits, PLUGMAP, spFieldname, hdr5, /silent + mwrfits_named, PLUGMAP, spFieldname, hdr=hdr5, name='PLUGMAP', desc=' Plugmap structure', /silent ; HDU #6 SKY mkhdr, hdr6, SKY, /image, /extend add_iraf_keywords, hdr6, wavemin, binsz - sxaddpar, hdr6, 'EXTNAME', 'SKY', ' Subtracted sky flux' - mwrfits, SKY, spFieldname, hdr6, /silent + mwrfits_named, SKY, spFieldname, hdr=hdr6, name='SKY', desc=' Subtracted sky flux',/silent ; HDU #7 SPECRESL mkhdr, hdr7, SPECRESL, /image, /extend add_iraf_keywords, hdr7, wavemin, binsz sxaddpar, hdr7, 'BUNIT', 'angstroms' - sxaddpar, hdr7, 'EXTNAME', 'SPECRESL', ' Spectral resolution' - mwrfits, SPECRESL, spFieldname, hdr7, /silent + mwrfits_named, SPECRESL, spFieldname, hdr=hdr7, name='SPECRESL', desc=' Spectral resolution',/silent coaddhdr = hdr0 splog, 'Successful completion of spSpec2spField at ' + systime() diff --git a/pro/spec1d/spspec_target_merge.pro b/pro/spec1d/spspec_target_merge.pro index c715dd41d..0da13428f 100644 --- a/pro/spec1d/spspec_target_merge.pro +++ b/pro/spec1d/spspec_target_merge.pro @@ -55,7 +55,8 @@ pro spspec_target_merge, customplan, topdir=topdir customplan = fileandpath(customplan, path=custom_dir) if not keyword_set(custom_dir) then $ - custom_dir = filepath(yanny_par(hdr,'NAME'), root_dir=getenv('BOSS_SPECTRO_REDUX'), subdirectory=[getenv('RUN2D')]) + custom_dir = get_field_dir(topdir,'',yanny_par(hdr,'NAME'),/custom) + ;filepath(yanny_par(hdr,'NAME'), root_dir=getenv('BOSS_SPECTRO_REDUX'), subdirectory=[getenv('RUN2D')]) custom = yanny_par(hdr,'NAME') runmjd = yanny_par(hdr,'CreateMJD') targid = yanny_par(hdr,'TARGID') @@ -93,17 +94,22 @@ pro spspec_target_merge, customplan, topdir=topdir ; foreach exp, targ.FIELDS_LIST, i do begin if fields[i] eq -1 then continue foreach cid, targ.CATALOGID_LIST do begin - - spspecfile = filepath('spSpec-'+fmjds[i]+'-'+strtrim(cid,2)+'.fits', root_dir = topdir, $ - subdirectory=[field_to_string(fields[i]), 'coadd',strtrim(mjds[i],2)]) + spspecfile = filepath('spSpec-'+fmjds[i]+'-'+strtrim(cid,2)+'.fits', $ + root_dir = get_field_dir(topdir, '', fields[i]),$ + subdirectory=['coadd',strtrim(mjds[i],2)]) + ;spspecfile = filepath('spSpec-'+fmjds[i]+'-'+strtrim(cid,2)+'.fits', root_dir = topdir, $ + ; subdirectory=[field_to_string(fields[i]), 'coadd',strtrim(mjds[i],2)]) valid_tar = File_test(spspecfile,/READ) if keyword_set(valid_tar) then break endforeach if not keyword_set(valid_tar) then begin foreach cid, targ.CATALOGID_LIST do begin - spspecfile = filepath('spSpec-'+fmjds[i]+'-'+strtrim(cid,2)+'.fits', root_dir = topdir, $ - subdirectory=[field_to_string(fields[i]), 'coadd',strtrim(mjds[i],2)]) + spspecfile = filepath('spSpec-'+fmjds[i]+'-'+strtrim(cid,2)+'.fits', $ + root_dir = get_field_dir(topdir, '', fields[i]),$ + subdirectory=['coadd',strtrim(mjds[i],2)]) +; spspecfile = filepath('spSpec-'+fmjds[i]+'-'+strtrim(cid,2)+'.fits', root_dir = topdir, $ +; subdirectory=[field_to_string(fields[i]), 'coadd',strtrim(mjds[i],2)]) splog, 'Missing specfile ',fileandpath(spspecfile),' for '+targid+':',strtrim(targ.TARGID,2),' SKIPPING' endforeach break @@ -204,7 +210,7 @@ pro spspec_target_merge, customplan, topdir=topdir list_cols = ['MOON_DIST', 'MOON_PHASE', 'FIBERID_LIST', 'RA_LIST', 'DEC_LIST', $ 'DELTA_RA_LIST', 'DELTA_DEC_LIST','EXPTIME','FIRSTCARTON_LIST', $ 'CARTON_TO_TARGET_PK_LIST', 'ASSIGNED_LIST', 'ON_TARGET_LIST', $ - 'VALID_LIST', 'DECOLLIDED_LIST', 'XFOCAL_LIST', 'YFOCAL_LIST', $ + 'VALID_LIST', 'DECOLLIDED_LIST', 'TOO_LIST','XFOCAL_LIST', 'YFOCAL_LIST', $ 'TAI_LIST', 'MJDLIST', 'DESIGNS', 'CONFIGS', 'AIRMASS_LIST', $ 'FIELDSNR2G_LIST', 'FIELDSNR2R_LIST', 'FIELDSNR2I_LIST', $ 'SEEING20_LIST', 'SEEING50_LIST', 'SEEING80_LIST'] @@ -213,6 +219,8 @@ pro spspec_target_merge, customplan, topdir=topdir temp_fibermap.ASSIGNED_LIST = strjoin(replicate('1',temp_fibermap.NEXP),' ') temp_fibermap.ON_TARGET_LIST = strjoin(replicate('1',temp_fibermap.NEXP),' ') temp_fibermap.VALID_LIST = strjoin(replicate('1',temp_fibermap.NEXP),' ') + temp_fibermap.DECOLLIDED_LIST = strjoin(replicate('0',temp_fibermap.NEXP),' ') + temp_fibermap.TOO_LIST = strjoin(replicate('0',temp_fibermap.NEXP),' ') temp_fibermap.DELTA_RA_LIST = strjoin(replicate('0.0',temp_fibermap.NEXP),' ') temp_fibermap.DELTA_DEC_LIST = strjoin(replicate('0.0',temp_fibermap.NEXP),' ') endif @@ -358,6 +366,7 @@ pro spspec_target_merge, customplan, topdir=topdir sxaddpar, bighdr, 'COEFF0', wavemin, ' Central wavelength (log10) of first pixel' sxaddpar, bighdr, 'COEFF1', binsz, ' Log10 dispersion per pixel' + sxdelpar, bighdr, 'EXTNAME' merge_spechdrmodel, hdr=bighdr finalvalues = create_struct('FLUX',0.0, 'LOGLAM',0.0, 'IVAR',0.0, $ @@ -375,20 +384,19 @@ pro spspec_target_merge, customplan, topdir=topdir ; HDU # 0 header - mwrfits, junk_d, coaddname, bighdr, /create, /silent + mwrfits_named, junk_d, coaddname, hdr=bighdr, /create, /silent ; HDU # 1 header - sxaddpar, coadd_hdr, 'EXTNAME', 'COADD', ' Coadded spectrum' - mwrfits, finalvalues, coaddname, coadd_hdr, /silent - sxdelpar, coadd_hdr, 'COMMENT' + mwrfits_named, finalvalues, coaddname, hdr=coadd_hdr, name= 'COADD', desc=' Coadded spectrum', /silent + coadd_hdr = 0 + ;sxdelpar, coadd_hdr, 'COMMENT' ; HDU #2 is plugmap - sxaddpar, hdrplug, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - mwrfits, fibermap, coaddname, hdrplug, /silent + mwrfits_named, fibermap, coaddname, hdr=hdrplug, name='PLUGMAP', desc=' Plugmap structure', /silent sxdelpar, hdrplug, 'COMMENT' for i = 0, (fibermap.NEXP)-1 do begin - mwrfits, *(exps[i]), coaddname, *(hdrs[i]), /SILENT + mwrfits_named, *(exps[i]), coaddname, hdr=*(hdrs[i]), /SILENT sxdelpar, hdr, 'COMMENT' endfor endforeach @@ -397,9 +405,9 @@ pro spspec_target_merge, customplan, topdir=topdir coaddhdr = 0 coadd = custom - spSpecfiles = findfile(filepath('spSpec*.fits', root_dir=topdir, $ - subdirectory=[strtrim(custom,2), 'coadd', strtrim(ec,2)]), $ - count = nspSpec) + spSpecfiles = findfile(filepath('spSpec*.fits', root_dir=get_field_Dir(topdir, '', custom, /custom),$ + subdirectory=['coadd', strtrim(ec,2)]), count = nspSpec) + if nspSpec le 1 then begin splog, 'Skipping '+strtrim(ec,2)+' with '+strtrim(nspSpec,2)+' targets' continue diff --git a/pro/spec1d/spx_to_sdss.pro b/pro/spec1d/spx_to_sdss.pro deleted file mode 100644 index a5cb7efe5..000000000 --- a/pro/spec1d/spx_to_sdss.pro +++ /dev/null @@ -1,120 +0,0 @@ -;+ -; NAME: -; spx_to_sdss -; -; PURPOSE: -; Convert an spX-extracted spectra file to an SDSS spPlate format -; -; CALLING SEQUENCE: -; spx_to_sdss, filename, [ platefile=, outfile= ] -; -; INPUTS: -; filename - spX spectra file, where HDU #0 is the flux [NPIX,NFIBER], -; HDU #1 is the inverse variance [NPIX,NFIBER], -; and HDU #2 contains wavelengths [NPIX] -; platefile - Name of spPlate file from which copy HDU#2 through #5; -; default to 'spPlate-$PLATE-$MJD' using the PLATE and MJD -; from the FILENAME header; necessary to specify this if -; the final spPlate file for these data is from a later MJD -; -; OPTIONAL INPUTS: -; outfile - Output file name; default to spPPlate-$PLATE-$MJD.fits -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The input spectra are interpolated to the log-wavelength mapping -; of SDSS spectra using a B-spline to the flux and the variance arrays. -; -; EXAMPLES: -; Convert an spX file and run the SDSS redshifting code: -; IDL> spx_to_sdss,'spXvfsc-r2-00104772.fits', $ -; platefile='spPlate-3647-55178.fits', $ -; outfile='spPPlate-3647-55178.fits' -; IDL> spreduce1d,'spPPlate-3647-55178.fits' -; -; BUGS: -; The wavelength scale is assumed to be vacuum barycentric. -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 21-Apr-2014 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro spx_to_sdss, filename, platefile=platefile1, outfile=outfile1 - - if (size(filename,/tname) NE 'STRING') then begin - splog, 'Must specify FILENAME' - return - endif - - ; Read the input file - flux = mrdfits(filename, 0, hdr) - plate = sxpar(hdr,'PLATEID') - mjd = sxpar(hdr,'MJD') - if (keyword_set(flux) EQ 0) then $ - message, 'Unable to read file '+filename - invvar = mrdfits(filename, 1) - wave = mrdfits(filename, 2) - dims = size(flux,/dimens) - npix = dims[0] - nfiber = dims[1] - - ; Read other HDUs of the spPlate file from existing BOSS reductions - readspec, plate, mjd=mjd, andmask=andmask, ormask=ormask, disp=dismap, $ - plugmap=plugmap, sky=skyimg - - ; Construt the output file name - if (keyword_set(platefile1)) then platefile = platefile1 $ - else platefile = 'spPlate-'+plate_to_string(plate)+'-' $ - +string(mjd,format='(i5.5)')+'.fits' - if (keyword_set(outfile1)) then outfile = outfile1 $ - else outfile = 'spPPlate-'+plate_to_string(plate)+'-' $ - +string(mjd,format='(i5.5)')+'.fits' - - ; Rebin to the SDSS spacing - dloglam = 1d-4 - newloglam = wavevector(alog10(min(wave)), alog10(max(wave)), $ - binsz=dloglam) - newwave = 10^newloglam - nnew = n_elements(newloglam) - - ; Simple linear interpolation of bad pixels - ; Mask all pixels with INVVAR=0 or their neighbors - gmask = invvar NE 0 ; =1 for good - newbadmask = fltarr(nnew,nfiber) - for i=0, nfiber-1 do $ - newbadmask[*,i] = rebin_spectrum(float(gmask[*,i] EQ 0), wave, newwave) - newmask = newbadmask EQ 0 ; =1 for good - - ; Resample the flux and invvar using the COMBINE1FIBER logic - newflux = fltarr(nnew,nfiber) - newivar = fltarr(nnew,nfiber) - loglam = alog10(wave) - for i=0, nfiber-1 do begin - combine1fiber, loglam, flux[*,i], invvar[*,i], $ - newloglam=newloglam, newflux=newflux1, newivar=newivar1 - newflux[*,i] = newflux1 - newivar[*,i] = newivar1 - endfor - newflux = float(newflux) * newmask - newivar = float(newivar) * newmask - - sxaddpar, hdr, 'PLATEID', plate - sxaddpar, hdr, 'MJD', mjd - sxaddpar, hdr, 'COEFF0', newloglam[0] ; wavelength solution - sxaddpar, hdr, 'COEFF1', dloglam ; wavelength solution - mwrfits, newflux, outfile, hdr, /create - mwrfits, newivar, outfile - mwrfits, andmask, outfile - mwrfits, ormask, outfile - mwrfits, dispmap, outfile - mwrfits, plugmap, outfile - mwrfits, skyimg, outfile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/uuplotspec.pro b/pro/spec1d/uuplotspec.pro deleted file mode 100644 index 905e704e5..000000000 --- a/pro/spec1d/uuplotspec.pro +++ /dev/null @@ -1,2059 +0,0 @@ -;+ -; NAME: -; uuplotspec -; -; PURPOSE: -; Based on D. Schlegel's plotspec routine for plotting spectra from Princeton-1D spectro outputs, -; a floating X-Window was added in order to provide a functional interface for navigation and control and -; to provide feedback to an online database at https://internal.sdss.org/inspection -; -; -; CALLING SEQUENCE: -; uuplotspec, plate, [ fiberid, mjd=, znum=, zmanual=, $ -; nsmooth=, /zline, /nosyn, /noerr, $ -; /sky, /ormask, /andmask, psfile=, /restframe, $ -; /zwarning, /allexp, topdir=, run1d=, run2d=, _EXTRA= ] -; -; INPUTS: -; plate - Plate number(s) -; -; OPTIONAL INPUTS: -; fiberid - Fiber number(s); if not set, then plot all fibers for -; each plate specified. -; mjd - MJD number(s); if not set, then select the most recent -; data for each plate (largest MJD). -; znum - If set, then return not the best-fit redshift, but the -; ZUM-th best-fit; e.g., set ZNUM=2 for second-best fit. -; zmanual - If set, then do an on-the-fly fit to either a galaxy -; template (if ZMANUAL[0]<1) or QSO (if ZMANUAL[0]>=1), -; overriding ZNUM. If this is a 2-element array, then fit -; between all redshifts in the range [ZMANUAL[0],ZMANUAL[1]]. -; Do not include any polynomial terms with the PCA templates. -; nsmooth - If set, then boxcar smooth both the object and synthetic -; spectra with a width equal to NSMOOTH. -; zline - If set, then overplot the emission line fits. -; nosyn - If set, then do not overplot the synthetic fit spectrum (blue). -; noerr - If set, then do not overplot the error vector (red). -; sky - If set, then overplot the sky spectrum (green). -; ormask - If set, then plot the OR-mask bits in yellow crosses. -; andmask - If set, then plot the AND-mask bits in red squares. -; psfile - If set, then send plot to a PostScript file instead of -; to the SPLOT interactive widget. The PostScript file name -; can be set explicitly, e.g. with PSFILE='test.ps'. Or if -; you simply set this as a flag, e.g. with /PSFILE, then the -; default file name is "spec-pppp-mmmmm-fff.ps", -; where pppp=plate number, mmmmm=MJD, fff=fiber ID. -; If FIBERID is specified, then put all plots in a single file -; named "spec-pppp-mmmmm.ps". -; restframe - If set, then plot the wavelengths in the rest frame, -; e.g. divide the wavelengths by (1+z). -; zwarning - If set, then only select those non-sky fibers where the -; ZWARNING flag has been set; can be used with or without -; specifying fiber numbers with FIBERID. -; allexp - If set, then plot all the individual exposure spectra, -; rather than the co-added spectrum. -; topdir - TOPDIR; if not set, then default to BOSS_SPECTRO_REDUX -; run1d - RUN1D; if not set, then default to RUN1D -; run2d - RUN2D; if not set, then default to RUN2D -; _EXTRA - Keywords for SPLOT and XYOUTS, such as XRANGE, YRANGE, THICK, -; or keywords for READSPEC and READONESPEC such as TOPDIR, -; RUN2D, RUN1D. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The data are read with READSPEC. See the documentation for that -; routine to see how to set environment variables that describe where -; the data files are. -; -; EXAMPLES: -; Plot the spectrum of plate 401, fiber #100 using the SPLOT plotting tool: -; IDL> uuplotspec, 401, 100 -; -; The spectrum is shown in white, the errors in red (except masked points -; are set to zero), and the best-fit eigenspectrum in blue. The mouse -; buttons will zoom in (left), recenter (center), or zoom out (right). -; The frame can be saved as a PostScript file by selecting File->WriteEPS -; from the left-hand corner. -; -; Make the same plot, but boxcar-smooth the spectrum and limit the -; wavelength range to [4000,5000] Angstroms: -; IDL> uuplotspec, 401, 100, nsmooth=10, xrange=[5000,6000] -; -; Some plates are observed on multiple nights. To select one of the two -; observations of plate 306: -; IDL> uuplotspec, 306, 20, mjd=51690 -; -; Loop through all the spectra for plate 401, interactively: -; IDL> uuplotspec, 401 -; -; Plot all the spectra from plate 401 to a single PostScript file: -; IDL> uuplotspec, 401, /psfile -; -; Plot all the spectra from plate 401 to 640 individual PostScript files: -; IDL> uuplotspec, 401, lindgen(640)+1, /psfile -; -; Plot a list of 3 objects, each with its own plate, MJD, and fiberid: -; IDL> plate = [400,400,401] -; IDL> mjd = [51820,51820,51788] -; IDL> fiberid = [10,11,20] -; IDL> uuplotspec, plate, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, fiberid -; -; BUGS: -; If the user interactively rescales in Y, then the labels for ORMASK -; and ANDMASK are no longer lined up vertically with the bit mask plot. -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; djs_icolor() -; djs_oplot -; djs_plot -; djs_xyouts -; plotspec_image -; readspec -; soplot -; splot -; sdss_flagname() -; sxyouts -; synthspec() -; textoidl() -; -; INTERNAL SUPPORT ROUTINES (plotspec): -; plotspec_mask -; plotspec1 -; -; REVISION HISTORY (plotspec): -; 01-Sep-2000 Written by D. Schlegel, Princeton -; -; INTERNAL SUPPORT ROUTINES (uuplotspec): -; uuplotspec_mask -; uuplotspec1 -; uuplotspec_init (modified from plotspec) -; FLOATING WINDOW BASE ROUTINES -; uuPlotspecBase -; uuPlotspecBase_event -; uuPlotspecBase_refresh -; uuLogin -; uuLogin_event -; DATABASE BRIDGE -; uuDatabase_query -; uuDatabase_query_select -; uuDatabase_download -; uuDatabase_member -; uuDatabase_comment -; uuDatabase_select_comment -; uuDatabase_recentcommentlist -; uuDatabase_generate_yanny -; UTILITY FUNCTIONS -; is_numeric -; is_integer -; undefine -; -; REVISION HISTORY (uuplotspec): -; 14-May-2010 Written by Joel R. Brownstein, University of Utah -;- -;------------------------------------------------------------------------------ -pro uuplotspec_mask, wave, thismask, psfile=psfile, nolabel=nolabel, $ - _EXTRA=Extra - ;============================================================================== - ; Plotspec procedure: identical to plotspec_mask - ;============================================================================== - - bitlabel = sdss_flagname('SPPIXMASK', 2UL^32-1, /silent) - bitnum = where(bitlabel NE '', nlabel) - bitlabel = bitlabel[bitnum] - - for ilabel=0, nlabel-1 do begin - ypos = ( (ilabel+1) * !y.crange[1] + (nlabel-ilabel) * !y.crange[0] ) $ - / (nlabel+1) - ynorm = ( (ilabel+0.8) * !y.window[1] + (nlabel-ilabel) * !y.window[0] ) $ - / float(nlabel+1) - ipix = where((thismask AND 2L^bitnum[ilabel]) NE 0, npix) - if (npix GT 0) then begin - if (keyword_set(psfile)) then begin - djs_oplot, [wave[ipix]], [replicate(ypos,npix)], $ - _EXTRA=Extra - endif else begin - soplot, [wave[ipix]], [replicate(ypos,npix)], $ - _EXTRA=Extra - endelse - endif - if (NOT keyword_set(nolabel)) then begin - if (keyword_set(psfile)) then begin - djs_xyouts, !x.window[1], ynorm, bitlabel[ilabel]+' ', $ - charsize=1.4, align=1.0, _EXTRA=Extra, /normal - endif else begin - sxyouts, !x.window[1], ynorm, bitlabel[ilabel]+' ', $ - charsize=1.4, align=1.0, _EXTRA=Extra, /normal - endelse - endif - endfor - - return -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuplotspec1, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, $ - psfile=psfile, xrange=passxr, yrange=passyr, $ - allexp=allexp, _EXTRA=Extra - ;============================================================================== - ; Plotspec procedure: modified from plotspec1 to accept keywords from the - ; uuplotspec floating window event handler - ;============================================================================== - common plotspec_state, platelist, fiberidlist, mjdlist, topdirlist, run1dlist, run2dlist, ifiber, plug, zans, zans0, zans0_znum_noqso, keyword, keywordset, uumessage - common uuPlotspecBase_state, uuState, recentcommentlist - - cspeed = 2.99792458e5 - textcolor = 'green' - linecolor = 'magenta' - orcolor = 'yellow' - andcolor = 'red' - - readspec, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, znum=keyword.znum, flux=objflux, $ - wave=wave, plug=plug, zans=zans, _EXTRA=Extra, /silent - if keyword.znum eq 0 then begin - zans0 = zans.z - zans0_znum_noqso = zans.znum_noqso - endif - if (NOT keyword_set(objflux)) then begin - uumessage = "Spectrum not found for plate="+strtrim(plate,2)+", MJD="+strtrim(mjd,2)+", fiberID="+strtrim(fiberid,2) & print, uumessage - return - endif - if (keywordset.allexp) then begin - readonespec, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, wave=allwave, flux=allflux, $ - _EXTRA=Extra, /silent - if (n_elements(allflux) gt 1) then begin - ndim = size(allflux,/n_dimen) - if (ndim EQ 1) then nexp = 1 $ - else nexp = (size(allflux,/dimens))[1] - endif else begin - keywordset.allexp=0 - widget_control, uuState.uukeywordsid, get_value=uukeywordset - uukeywordset[6] = keywordset.allexp - widget_control, uuState.uukeywordsid, set_value=uukeywordset - uumessage = 'File not found: spCFrame*.fits' - endelse - endif - if (keywordset.restframe) then begin - wave = wave / (1. + zans.z) - if (keyword_set(allwave)) then allwave = allwave / (1. + zans.z) - endif - if (NOT keywordset.noerr) then $ - readspec, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, flerr=objerr, _EXTRA=Extra, /silent - if (keywordset.zmanual) then begin - readspec, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, invvar=objivar, loglam=loglam, $ - objhdr=hdr, _EXTRA=Extra, /silent - if (keyword.zmanual[0] LT 1.) then eigenfile = 'spEigenGal-*.fits' $ - else eigenfile = 'spEigenQSO-*.fits' - npoly = 0 - zrange=keyword.zmanual - - res_manual = zfind(objflux, objivar, hdr=hdr, $ - eigenfile=eigenfile, npoly=npoly, zmin=zrange[0], zmax=zrange[1], $ - pspace=1, nfind=1, width=1) - keyword.manualz = res_manual.z - synflux = synthspec(res_manual, loglam=loglam) - endif else begin - if (NOT keywordset.nosyn) then $ - readspec, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, znum=keyword.znum, synflux=synflux, $ - _EXTRA=Extra, /silent - endelse - if (keywordset.sky) then $ - readspec, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, sky=sky, _EXTRA=Extra, /silent - if (keywordset.ormask) then $ - readspec, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, ormask=ormask, _EXTRA=Extra, /silent - if (keywordset.andmask) then $ - readspec, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, andmask=andmask, _EXTRA=Extra, /silent - if (keyword_set(zans) AND keywordset.zline) then $ - readspec, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, zline=zline, lineflux=lineflux, $ - _EXTRA=Extra, /silent - - if (keywordset.nsmooth) then nsmooth = keyword.nsmooth else nsmooth = 1 - - if (nsmooth GT 1) then begin - objflux = smooth(objflux, nsmooth) - if (keyword_set(allflux)) then begin - for iexp=0, nexp-1 do $ - allflux[*,iexp] = smooth(allflux[*,iexp], nsmooth) - endif - if (keyword_set(synflux)) then $ - synflux = smooth(synflux, nsmooth) - if (keyword_set(lineflux)) then $ - lineflux = smooth(lineflux, nsmooth) - endif - - targstring = strmatch(plug.objtype,'SKY*') ? 'SKY ' : '' - if (tag_exist(plug,'PRIMTARGET')) then $ - targstring += sdss_flagname('TARGET', plug.primtarget, /concat)+' ' - if (tag_exist(plug,'SECTARGET')) then $ - targstring += sdss_flagname('TTARGET', plug.sectarget, /concat)+' ' - if (tag_exist(plug,'BOSS_TARGET1')) then $ - targstring += sdss_flagname('BOSS_TARGET1', plug.boss_target1, /concat)+' ' - if (tag_exist(plug,'BOSS_TARGET2')) then $ - targstring += sdss_flagname('BOSS_TARGET2', plug.boss_target2, /concat)+' ' - ;- JEB adding eboss target bits - if (tag_exist(plug,'EBOSS_TARGET0')) then $ - targstring += sdss_flagname('EBOSS_TARGET0', plug.eboss_target0, /concat)+' ' - if (tag_exist(plug,'EBOSS_TARGET1')) then $ - targstring += sdss_flagname('EBOSS_TARGET1', plug.eboss_target1, /concat)+' ' - if (tag_exist(plug,'EBOSS_TARGET2')) then $ - targstring += sdss_flagname('EBOSS_TARGET2', plug.eboss_target2, /concat)+' ' - if (tag_exist(plug,'ANCILLARY_TARGET1')) then targstring += $ - sdss_flagname('ANCILLARY_TARGET1', plug.ancillary_target1, /concat)+' ' - if (tag_exist(plug,'ANCILLARY_TARGET2')) then targstring += $ - sdss_flagname('ANCILLARY_TARGET2', plug.ancillary_target2, /concat)+' ' - targstring = strtrim(targstring) ; get rid of trailing spaces - - csize = 1.75 - if (keyword_set(passyr)) then begin - yrange = passyr - ymin = yrange[0] - ymax = yrange[1] - endif else begin - if (keyword_set(synflux)) then $ - yrange = minmax(synflux) $ - else $ - yrange = minmax(objflux) - - if (yrange[0] EQ yrange[1]) then yrange = minmax(objflux) - ymin = (1.3 * yrange[0] - 0.3 * yrange[1]) < 0 - ymax = -0.3 * yrange[0] + 1.3 * yrange[1] - if (ymax EQ ymin) then ymax = ymin + 1 - yrange = [ymin, ymax] - endelse - if (keyword_set(passxr)) then xrange = passxr $ - else xrange = minmax(wave) - if (keywordset.ormask OR keywordset.andmask) then $ - xrange[1] = 1.15 * xrange[1] - 0.15 * xrange[0] - - title = 'Plate ' + strtrim(string(plate),2) $ - + ' Fiber ' + strtrim(string(fiberid),2) $ - + ' MJD=' + strtrim(string(mjd),2) - if (keywordset.restframe) then xtitle = 'Rest-Frame Wavelength [Ang]' $ - else xtitle = 'Observed Wavelength [Ang]' - if (keyword_set(psfile)) then begin - djs_plot, xrange, yrange, /nodata, xrange=xrange, yrange=yrange, $ - xtitle=xtitle, ytitle=TeXtoIDL('Flux [10^{-17} erg/s/cm^2/Ang]'), $ - title=title, charsize=csize, _EXTRA=KeywordsForSplot, /xstyle, /ystyle - if (keywordset.allexp) then begin - for iexp=0, nexp-1 do $ - djs_oplot, allwave[*,iexp], allflux[*,iexp], $ - _EXTRA=KeywordsForSplot - endif else begin - djs_oplot, wave, objflux, _EXTRA=KeywordsForSplot - endelse - if (NOT keywordset.noerr) then $ - djs_oplot, wave, objerr, color='red', _EXTRA=KeywordsForSplot - if (keywordset.sky) then $ - djs_oplot, wave, sky, color='green', lw=2, _EXTRA=KeywordsForSplot - if (keyword_set(synflux)) then $ - djs_oplot, wave, synflux, color='blue', lw=2, _EXTRA=KeywordsForSplot - endif else begin - if (NOT keyword_set(noerase)) then $ - splot, xrange, yrange, /nodata, xrange=xrange, yrange=yrange, $ - xtitle=xtitle, ytitle=TeXtoIDL('Flux [10^{-17} erg/s/cm^2/Ang]'), $ - title=title, charsize=csize, _EXTRA=KeywordsForSplot - if (keywordset.allexp) then begin - for iexp=0, nexp-1 do $ - soplot, allwave[*,iexp], allflux[*,iexp], _EXTRA=KeywordsForSplot - endif else begin - soplot, wave, objflux, _EXTRA=KeywordsForSplot - endelse - if (NOT keywordset.noerr) then $ - soplot, wave, objerr, color='red', _EXTRA=KeywordsForSplot - if (keywordset.sky) then $ - soplot, wave, sky, color='green', lw=2, _EXTRA=KeywordsForSplot - if (keyword_set(synflux)) then $ - soplot, wave, synflux, color='blue', lw=2, _EXTRA=KeywordsForSplot - endelse - - xpos = 0.9 * !x.window[0] + 0.1 * !x.window[1] - dypos = 0.05 * (!y.window[0] - !y.window[1]) - ypos = !y.window[1] + 1.5 * dypos - - if ((keywordset.zmanual) OR keyword_set(zans)) then begin - keyword.manualclass = strtrim(zans.class,2) - if (keywordset.zmanual) then begin - zstring = res_manual.tfile $ - + ' z=' + string(res_manual.z,format='(f8.5)') - endif else begin - keyword.manualz=zans.z - zstring = zans.class + ' ' + zans.subclass - cz = zans.z * cspeed - if (abs(cz) LT 3000) then $ - zstring += ' cz=' + string(cz,format='(f6.0)') + ' km/s' $ - else $ - zstring += ' z=' + string(zans.z,format='(f8.5)') - if (zans.zwarning NE 0) then $ - zstring += ' (' $ - + sdss_flagname('ZWARNING', zans.zwarning, /concat) + ')' - if (keywordset.znum) then $ - zstring += ' (fit #' + strtrim(string(keyword.znum),2) + ')' - endelse - - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, zstring, $ - charsize=csize, color=djs_icolor(textcolor), /normal, $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, xpos, ypos, zstring, $ - charsize=csize, color=textcolor, /normal, $ - _EXTRA=KeywordsForSplot - - ypos = ypos + dypos - - if (keyword_set(res_manual)) then thisrchi2 = res_manual.rchi2 $ - else thisrchi2 = zans.rchi2 - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, $ - TeXtoIDL('X^2_r =' + strtrim(string(thisrchi2, format='(f7.3)'),2)), $ - charsize=csize, color=djs_icolor(textcolor), /normal, $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, xpos, ypos, $ - TeXtoIDL('X^2_r =' + strtrim(string(thisrchi2, format='(f7.3)'),2)), $ - charsize=csize, color=textcolor, /normal, $ - _EXTRA=KeywordsForSplot - endif - - if (keyword_set(lineflux)) then begin - if (keyword_set(psfile)) then $ - djs_oplot, wave, lineflux, color=linecolor, lw=2, _EXTRA=KeywordsForSplot $ - else $ - soplot, wave, lineflux, color=linecolor, lw=2, _EXTRA=KeywordsForSplot - - linewave = zline.linewave $ - * (1 + zline.linez * (keywordset.restframe EQ 0)) - ; Convert line sigma from km/sec to Angstroms - linesigma = linewave * zline.linesigma / cspeed - linepeak = zline.linecontlevel + zline.linearea / (sqrt(2*!pi) * linesigma) - for iline=0, n_elements(zline)-1 do begin - if (zline[iline].linearea_err GT 0) then begin - if (keyword_set(psfile)) then $ - xyouts, linewave[iline], linepeak[iline], $ - ' '+zline[iline].linename, orient=90, $ - charsize=0.75*csize, color=djs_icolor(linecolor), $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, linewave[iline], linepeak[iline], $ - ' '+zline[iline].linename, orient=90, $ - charsize=0.75*csize, color=linecolor, $ - _EXTRA=KeywordsForSplot - endif - endfor - endif - - if (keywordset.ormask) then begin - uuplotspec_mask, wave, ormask, psfile=psfile, $ - psym=1, symsize=0.6, color=orcolor, $ - nolabel=keywordset.andmask, _EXTRA=KeywordsForSplot - endif - - if (keywordset.andmask) then begin - uuplotspec_mask, wave, andmask, psfile=psfile, $ - psym=6, symsize=0.6, color=andcolor, _EXTRA=KeywordsForSplot - endif - - if (keyword_set(targstring)) then begin - ypos = ypos + dypos - if (keyword_set(psfile)) then $ - xyouts, xpos, ypos, 'Target = '+targstring, $ - charsize=csize, color=djs_icolor(textcolor), /normal, $ - _EXTRA=KeywordsForSplot $ - else $ - sxyouts, xpos, ypos, 'Target = '+targstring, $ - charsize=csize, color=textcolor, /normal, $ - _EXTRA=KeywordsForSplot - endif - - return -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuplotspec_init, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, $ - psfile=psfile, xrange=xrange, yrange=yrange, $ - _EXTRA=Extra - ;============================================================================== - ; Plotspec procedure: modified from plotspec to accept keywords from the - ; uuplotspec floating window event handler - ;============================================================================== - - common plotspec_state, platelist, fiberidlist, mjdlist, topdirlist, run1dlist, run2dlist, ifiber, plug, zans, zans0, zans0_znum_noqso, keyword, keywordset, uumessage - - quiet = !quiet - !quiet = 1 - ;---------- - ; If MJD is not set, then find the MJD for each plate - - nplate = n_elements(plate) - if (NOT keyword_set(mjd)) then begin - mjd = lonarr(nplate) - for iplate=0, nplate-1 do begin - mjd1 = 0 - readspec, plate[iplate], mjd=mjd1, topdir=topdir[iplate], run1d=run1d[iplate], run2d=run2d[iplate], _EXTRA=Extra, /silent - if (NOT keyword_set(mjd1)) then begin - uumessage = 'No MJD found for plate '+strtrim(plate[iplate],2) & print, uumessage - !quiet = quiet - return - endif - mjd[iplate] = mjd1 - endfor - endif else begin - if (n_elements(mjd) NE nplate) then begin - uumessage = 'Number of elements in PLATE and MJD do not agree' & print, uumessage - !quiet = quiet - return - endif - endelse - - ;---------- - ; If /ZWARNING is set, then find the flagged fibers to plot. - - if (keywordset.zwarning) then begin - if (keyword_set(fiberid)) then begin - uumessage = 'FIBERID and /ZWARNING cannot both be set.' & print, uumessage - !quiet = quiet - return - endif - - for iplate=0L, nplate-1L do begin - readspec, plate[iplate], mjd=mjd[iplate], topdir=topdir[iplate], run1d=run1d[iplate], run2d=run2d[iplate], $ - _EXTRA=Extra, /silent, zans=zans - if (NOT keyword_set(zans)) then begin - uumessage = 'No spZ file found for selecting ZWARNING flags' & print, uumessage - !quiet = quiet - return - endif - indx = where((zans.zwarning AND 1) EQ 0 AND zans.zwarning NE 0, nthis) - if (nthis GT 0) then begin - if (NOT keyword_set(fiberid)) then begin - platelist = replicate(plate[iplate], nthis) - mjdlist = replicate(mjd[iplate], nthis) - fiberid = zans[indx].fiberid - topdirlist = replicate(topdir[iplate], nthis) - run1dlist = replicate(run1d[iplate], nthis) - run2dlist = replicate(run2d[iplate], nthis) - endif else begin - platelist = [platelist, replicate(plate[iplate], nthis)] - mjdlist = [mjdlist, replicate(mjd[iplate], nthis)] - fiberid = [fiberid, zans[indx].fiberid] - topdirlist = [topdirlist, replicate(topdir[iplate], nthis)] - run1dlist = [run1dlist, replicate(run1d[iplate], nthis)] - run2dlist = [run2dlist, replicate(run2d[iplate], nthis)] - endelse - endif - endfor - if (NOT keyword_set(fiberid)) then begin - uumessage = 'No non-sky fibers with ZWARNING flag set' & print, uumessage - !quiet = quiet - return - endif - nfiber = n_elements(fiberid) - uumessage = 'Selecting '+strtrim(nfiber,2)+' non-sky fibers with ZWARNING flag set' & print, uumessage - endif - - ;---------- - ; Set FIBERID to [1,...,NFIBER] (for each plate) if not set. - ; - ; If writing to a PostScript file, then all plots are in the same file - ; either if PSFILE is that file name, or if FIBERID is not specified - ; (and then all spectra are being plotted). - - if (NOT keyword_set(fiberid)) then begin - readspec, plate, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, 0*plate+1, nfiber=nfiber_tmp, $ - _EXTRA=Extra, /silent - nfiber_tot = long(total(nfiber_tmp)) - if (nfiber_tot EQ 0) then begin - uumessage = 'No fibers found' & print, uumessage - !quiet = quiet - return - endif - platelist = lonarr(nfiber_tot) - mjdlist = lonarr(nfiber_tot) - fiberid = lonarr(nfiber_tot) - topdirlist = strarr(nfiber_tot) - run1dlist = strarr(nfiber_tot) - run2dlist = strarr(nfiber_tot) - j = 0L - for iplate=0L, nplate-1L do begin - platelist[j:j+nfiber_tmp[iplate]-1] = plate[iplate] - mjdlist[j:j+nfiber_tmp[iplate]-1] = mjd[iplate] - fiberid[j:j+nfiber_tmp[iplate]-1] = lindgen(nfiber_tmp[iplate]) + 1 - topdirlist[j:j+nfiber_tmp[iplate]-1] = topdir[iplate] - run1dlist[j:j+nfiber_tmp[iplate]-1] = run1d[iplate] - run2dlist[j:j+nfiber_tmp[iplate]-1] = run2d[iplate] - j += nfiber_tmp[iplate] - endfor - if (keyword_set(psfile)) then begin - q_onefile = 1 - psfilename = string(plate_to_string(plate[0]), mjd[0], $ - format='("spec-",a,"-",i5.5,".ps")') - endif - endif else begin - if (n_elements(platelist) ne 0) then undefine, platelist - if (n_elements(mjdlist) ne 0) then undefine, mjdlist - if (n_elements(fiberidlist) ne 0) then undefine, fiberidlist - if (n_elements(topdirlist) ne 0) then undefine, topdirlist - if (n_elements(run1dlist) ne 0) then undefine, run1dlist - if (n_elements(run2dlist) ne 0) then undefine, run2dlist - endelse - - ; if (min(fiberid) LT 1 OR max(fiberid) GT 640) then begin - ; uumessage = 'Invalid FIBERID (must be between 1 and 640)' & print, uumessage - ; return - ; endif - - ;---------- - ; If FIBERID is specified, and writing to a PostScript file, - ; then open only one PS file for all plots. - - nfiber = n_elements(fiberid) - if (size(psfile,/tname) EQ 'STRING' AND nfiber GT 1) then begin - psfilename = psfile - q_onefile = 1 - endif - - ;---------- - ; If /ZWARNING is not set, then construct the PLATELIST,MJDLIST. - - if (n_elements(platelist) EQ 0) then begin - if (nplate EQ 1) then begin - platelist = replicate(plate, nfiber) - mjdlist = replicate(mjd, nfiber) - topdirlist = replicate(topdir, nfiber) - run1dlist = replicate(run1d, nfiber) - run2dlist = replicate(run2d, nfiber) - endif else begin - platelist = plate - mjdlist = mjd - topdirlist = topdir - run1dlist = run1d - run2dlist = run2d - endelse - endif else if (n_elements(platelist) NE n_elements(fiberid)) then begin - uumessage = 'Number of elements in PLATE and FIBERID do not agree.' & print, uumessage - !quiet = quiet - return - endif else if (n_elements(platelist) NE n_elements(topdirlist)) then begin - uumessage = 'Number of elements in PLATE and TOPDIR do not agree.' & print, uumessage - !quiet = quiet - return - endif else if (n_elements(platelist) NE n_elements(run1dlist)) then begin - uumessage = 'Number of elements in PLATE and RUN1D do not agree.' & print, uumessage - !quiet = quiet - return - endif else if (n_elements(platelist) NE n_elements(run2dlist)) then begin - uumessage = 'Number of elements in PLATE and RUN2D do not agree.' & print, uumessage - !quiet = quiet - return - endif - - ;---------- - ; Loop over each plot if creating postscript files. - ; otherwise navigate to each plate-mjd-fiberid identified by ifiber, - ; starting with first in the platelist (ifiber=0) - - - if (keyword_set(psfile)) then begin - - ifiber = 0L - while (ifiber LT nfiber) do begin - - ;---------- - ; Open the PostScript file if appropriate - - if (NOT keyword_set(q_onefile)) then begin - if (size(psfile,/tname) EQ 'STRING') then $ - psfilename = psfile $ - else $ - psfilename = string(plate_to_string(platelist[ifiber]), mjdlist[ifiber], $ - fiberid[ifiber], format='("spec-",a,"-",i5.5,"-",i3.3,".ps")') - endif - - if (NOT keyword_set(q_onefile) OR ifiber EQ 0) then begin - dfpsplot, psfilename, /color, /square - endif - - uuplotspec1, platelist[ifiber], fiberid[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber], $ - psfile=psfile, $ - xrange=xrange, yrange=yrange, $ - allexp=allexp, _EXTRA=Extra - - if (NOT keyword_set(q_onefile) OR ifiber EQ nfiber-1) then dfpsclose - ifiber = ifiber + 1 - endwhile - endif else begin - ifiber = 0 - fiberidlist = fiberid - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber], $ - psfile=psfile, $ - xrange=xrange, yrange=yrange, $ - allexp=allexp, _EXTRA=Extra - - endelse - - !quiet = quiet - return -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuDatabase_query, query, response=response, filename=filename, code=code - ;============================================================================== - ; Database Function: communicate with database URL by HTTP - ;============================================================================== - - common uuPlotspecBase_state, uuState, recentcommentlist - response = make_array(1, 1, /string, value='NULL') - if uuState.username eq '' and uuState.password eq '' then return - - code = 0 - catch, query_error - if (query_error ne 0) then begin - - catch,/cancel - uuState.oUrl->GetProperty, response_code=response_code - code = strtrim(response_code,2) - if response_code eq 401 then print, "Authentication failure [code="+code+"]." else $ - print, "WARNING: unable to connect to host at https://internal.sdss.org/inspection/eboss/query?"+strtrim(query,2)+" [code="+code+"]." - return - endif - uuState.oUrl->SetProperty, URL_QUERY = query - if keyword_set(filename) then begin - response = uuState.oUrl->get(filename=filename) - endif else response = uuState.oUrl->get(/string) - - uuState.oUrl->GetProperty, response_code=response_code - catch,/cancel - -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -function is_numeric,input - ;============================================================================== - ; utility function: check input is a numeric value - ;============================================================================== - on_ioerror, false - test = (double(input) eq double(input)) - return, test - false: return, 0 -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -function is_integer,input - ;============================================================================== - ; utility function: check input is a integer value - ;============================================================================== - on_ioerror, false - test = (long(input) eq double(input)) - return, test - false: return, 0 -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro undefine, key - ;============================================================================== - ; utility function: refresh common block variables when called. - ;============================================================================== - on_error, 1 - IF n_params() eq 0 then message, 'One argument required in call to UNDEFINE' - tempvar = size(temporary(key)) -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; -; NAME: -; SETINTERSECTION -; -; PURPOSE: -; -; This function is used to find the intersection between two sets of integers. -; -; AUTHOR: -; -; FANNING SOFTWARE CONSULTING -; David Fanning, Ph.D. -; 1645 Sheely Drive -; Fort Collins, CO 80526 USA -; Phone: 970-221-0438 -; E-mail: davidf@dfanning.com -; Coyote's Guide to IDL Programming: http://www.dfanning.com/ -; -; CATEGORY: -; -; Utilities -; -; CALLING SEQUENCE: -; -; intersection = SetIntersection(set_a, set_b) -; -; RETURN VALUE: -; -; intersection: A vector of values that are found in both set_a and set_b. -; -; ARGUMENTS: -; -; set_a: A vector of integers. -; -; set_b: A vector of integers. -; -; KEYWORDRS: -; -; NORESULT: Set this keyword to a value that will be returned from the function -; if no intersection between the two sets of numbers is found. By default, -1. -; -; SUCCESS: An output keyword that is set to 1 if an intersection was found, and to 0 otherwise. -; -; EXAMPLE: -; -; IDL> set_a = [1,2,3,4,5] -; IDL> set_b = [4,5,6,7,8,9,10,11] -; IDL> Print, SetIntersection(set_a, set_b) -; 4 5 -; -; See http://www.dfanning.com/tips/set_operations.html for other types of set operations. -; -; NOTES: -; -; If you read the Set Operations article pointed to above, you will see quite a lot of -; discussion about what kinds of algorithms are faster than others. The Histogram -; algorithms implemented here are sometimes NOT the fastest algorithms, especially -; for sparse arrays. If this is a concern in your application, please be sure to read -; that article. -; -; MODIFICATION HISTORY: -; -; Written by: David W. Fanning, October 31, 2009, from code originally supplied to the IDL -; newsgroup by Research Systems software engineers. -; Yikes, bug in original code only allowed positive integers. Fixed now. 2 Nov 2009. DWF. -; Fixed a problem when one or both of the sets was a scalar value. 18 Nov 2009. DWF. -; -;******************************************************************************************; -; Copyright (c) 2009, by Fanning Software Consulting, Inc. ; -; All rights reserved. ; -; ; -; 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 following disclaimer. ; -; * Redistributions in binary form must reproduce the above copyright ; -; notice, this list of conditions and the following disclaimer in the ; -; documentation and/or other materials provided with the distribution. ; -; * Neither the name of Fanning Software Consulting, Inc. 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 FANNING SOFTWARE CONSULTING, INC. ''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 FANNING SOFTWARE CONSULTING, INC. 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; ; -; 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. ; -;******************************************************************************************; -FUNCTION SetIntersection, set_a, set_b, $ - NORESULT=noresult, $ - SUCCESS=success - - Compile_Opt StrictArr, DefInt32 - - ; Set up noresult value. - IF N_Elements(noresult) EQ 0 THEN noresult = -1 - - ; Error handling. - Catch, theError - IF theError NE 0 THEN BEGIN - Catch, /CANCEL - void = Error_Message() - success = 0 - RETURN, noresult - ENDIF - - ; Check parameters. - IF N_Params() NE 2 THEN Message, 'Two input parameters or sets are required.' - - ; The input sets must be integers. - IF (Size(set_a, /TYPE) GT 3) AND (Size(set_a, /TYPE) LT 12) THEN $ - Message, 'Set A must be an integer array.' - IF (Size(set_b, /TYPE) GT 3) AND (Size(set_b, /TYPE) LT 12) THEN $ - Message, 'Set B must be an integer array.' - - ; If either of the sets is a scalar, make it a vector. - IF N_Elements(set_a) EQ 1 && (Size(set_a))[0] EQ 0 THEN set_a = [set_a] - IF N_Elements(set_b) EQ 1 && (Size(set_b))[0] EQ 0 THEN set_b = [set_b] - - ; Assume success. - success = 1 - - ; Find the intersection of the ranges. - mina = Min(set_a, Max=maxa) - minb = Min(set_b, Max=maxb) - minab = mina > minb - maxab = maxa < maxb - - ; If the set ranges don't intersect, leave now. - IF ((maxa LT minab) AND (minb GT maxab)) OR ((maxb LT minab) AND (mina GT maxab)) THEN BEGIN - success = 0 - RETURN, noresult - ENDIF - - ; Find the intersection. - r = Where((Histogram(set_a, Min=minab, Max=maxab) NE 0) AND $ - (Histogram(set_b, Min=minab, Max=maxab) NE 0), count) - - ; Was there an intersection? If not, leave now. - IF count EQ 0 THEN BEGIN - success = 0 - RETURN, noresult - ENDIF - - ; Here is the result. - result = Temporary(r) + minab - - ; Return the result. Make sure to return scalar if only a single element. - IF N_Elements(result) EQ 1 THEN RETURN, result[0] ELSE RETURN, result - -END -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -Function uuLogin, Group_Leader=group_leader - ;============================================================================== - ; Login Function: create a modal window to accept username/password - ;============================================================================== - common uuPlotspecBase_state, uuState, recentcommentlist - - if n_elements(group_leader) eq 0 then uuLogin = Widget_Base(Title='Login', Row=3) ELSE uuLogin = Widget_Base(Title='Login', Row=4, /Modal, Group_Leader=group_leader) - uuLoginrow1 = widget_base(uuLogin,/row) - uuLoginrow2 = widget_base(uuLogin,/row) - uuLoginrow4 = widget_base(uuLogin,Col=2) - uuLoginrow4col1 = widget_base(uuLoginrow4) - uuLoginrow4col2 = widget_base(uuLoginrow4) - - uuState.usernameid = cw_field(uuLoginrow1,/row,title = 'Username:',value = '', /string,/return_events,uvalue='username') - label = widget_label(uuLoginrow2, Value='Password:',uvalue='label') - password = widget_text(uuLoginrow2, Scr_XSize=142, All_Events=1, Editable=0,uvalue='password') - void = widget_label(uuLoginrow4col1, Value=' ') - submitloginbutton = widget_button(uuLoginrow4col2,value='Login',uvalue='submitlogin',xsize=80,ysize=36) - device, get_screen_size=screenSize - xCenter = screenSize[0] / 2 - yCenter = screenSize[1] / 2 - geom = widget_info(uuLogin, /Geometry) - xHalfSize = geom.Scr_XSize / 2 - yHalfSize = geom.Scr_YSize / 2 - widget_control, uuLogin, XOffset = xCenter-xHalfSize, YOffset = yCenter-yHalfSize - widget_control, uuLogin, /Realize - ptr = ptr_New("") - widget_control, uuLogin, set_uvalue=ptr - xmanager, 'uuLogin', uuLogin - uuState.password = *ptr - ptr_Free, ptr - return, ((uuState.username ne '') and (uuState.password ne '')) - -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -PRO uuLogin_event, event - ;============================================================================== - ; Login Function: login window event handler to validate username/password - ;============================================================================== - common uuPlotspecBase_state, uuState, recentcommentlist - - widget_control, uuState.usernameid, get_value=theusername - uuState.username=theusername - widget_control, event.id, get_uvalue=uvalue - if (uvalue eq 'submitlogin') then begin - widget_control, event.top, Get_UValue=ptr - if (uuState.username ne '') and (*ptr ne '') then begin - widget_control, event.top, /Destroy - return - endif - endif else if (uvalue eq 'password') and (event.type eq 0) then begin - if (event.ch eq 10) then begin - widget_control, event.top, /Destroy - return - endif else begin - widget_control, event.id, Get_Value=text - text = text[0] - length = StrLen(text) - selection = Widget_Info(event.id, /Text_Select) - widget_control, event.id, /Use_Text_Select, Set_Value='*' - widget_control, event.id, Set_Text_Select=event.offset + 1 - widget_control, event.top, Get_UValue=ptr - if *ptr eq "" THEN *ptr=String(event.ch) ELSE *ptr = *ptr + String(event.ch) - widget_control, event.top, set_uvalue=ptr - endelse - endif else if (uvalue eq 'password') and (event.type eq 2) then begin - widget_control, event.top, Get_UValue=ptr - text = *ptr - length = StrLen(text) - *ptr = StrMid(text, 0, length-event.length) - passwordLen = StrLen(*ptr) - if (passwordLen gt 0) then widget_control, event.id, Set_Value=Replicate('*', passwordLen) else widget_control, event.id, Set_Value='' - widget_control, event.id, Set_Text_Select=event.offset - widget_control, event.top, set_uvalue=ptr - endif else if (uvalue eq 'username') then begin - widget_control, event.top, /Destroy - return - endif - -END -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuPlotspecBase - ;============================================================================== - ; Plotspec Base Function: create a floating window to accomodate plotspec - ; arguments (promoted to textfields) and plotspec keywords (promoted to - ; nonexclusive buttons). The state of the window is maintained by the common - ; uuState structure. - ;============================================================================== - common splot_state, state, graphkeys - common plotspec_state, platelist, fiberidlist, mjdlist, topdirlist, run1dlist, run2dlist, ifiber, plug, zans, zans0, zans0_znum_noqso, keyword, keywordset, uumessage - common uuPlotspecBase_state, uuState, recentcommentlist - if (NOT xregistered('uuplotspecbase')) then begin - issues = ['None', 'Low S/N', 'Spectral Discontinuity', 'Line Ambiguity', 'Distorted Red/Blue Spectrum', 'Sky Subtraction', 'Non-masked Artifacts', 'Little/No Data', 'Other/Unknown'] - oUrl = OBJ_NEW('IDLnetUrl') - oUrl->SetProperty, URL_SCHEME = 'http' - oUrl->SetProperty, URL_HOST = 'inspection.sdss.utah.edu/eboss/query' - ;oUrl->SetProperty, URL_HOST = 'neo.local/internal/inspection/eboss/query' - oUrl->SetProperty, AUTHENTICATION = 2 - uuState = {uuplotspecbase:0L,commentheader:0L,commentbase:0L,yannybase:0L,run1d:0L,run2d:0L,loginbuttonid:0L,plateid:0L,mjdid:0L,fiberid:0L,ifiberid:0L,nfiberid:0L,usernameid:0L,username:'',password:'',loggedin:0,fullname:'',sid:'',messageid:0L,recentcommentid:0L,commentid:0L,comment:'',issueid:0L,issues:issues,issue:issues[0],zid:0L,zmanual0id:0L,zmanual1id:0L,uukeywordsid:0L,z:'',znumid:0L,nsmoothid:0L,classid:0L,class:'',zconfid:0,zconf:'',yannyid:0L,yanny:'spinspect',yannygroupid:0L,yannygroup:0,valid:0,action:'',oUrl:oUrl} - - recentcommentlist = [{comment:'Paste from recent comments ',commentid:0L}] - if (xregistered('splot')) then begin - uuState.uuplotspecbase = widget_base(/base_align_left,/floating,xsize=630, group_leader = state.base_id, /column, title='uuplotspec', uvalue = 'uuplotspecbase') - uurow0 = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'uurow0') - uurow1 = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'uurow1') - uurow2 = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'uurow2') - uurow3 = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'uurow3') - uuState.plateid = cw_field(uurow0,/row,title = 'Plate-MJD-FiberID:',uvalue='uunav',value = '', /string,/return_events,xsize=4) - uuState.mjdid = cw_field(uurow0,/row,title = '',uvalue='uunav',value = '', /string,/return_events,xsize=5) - uuState.fiberid = cw_field(uurow0,/row,title = '',uvalue='uunav',value = '', /string,/return_events,xsize=4) - uunavButton = cw_bgroup(uurow0, [' Get ', ' < ',' > '],uvalue='uunav', /ROW, SPACE=2,ysize=31) - uuState.ifiberid = cw_field(uurow0,/row,title = '',uvalue='uuifiberid',value = '0', /string,/return_events,xsize=4) - uuState.nfiberid = widget_label(uurow0,value = '0 of 0') - void = widget_label(uurow0,value =' ') - uuState.loginbuttonid = widget_button(uurow0,value = 'Logout', uvalue = 'uuLoginbutton',xsize=80,ysize=36) - void = widget_label(uurow0,value = ' ') - uuState.zmanual0id = cw_field(uurow1,/row,title = ' zmanual:',uvalue='uuzmanual0field',value ='', /string,/return_events,xsize=5) - uuState.zmanual1id = cw_field(uurow1,/row,title = '',uvalue='uuzmanual1field',value ='', /string,/return_events,xsize=5) - uuzmanualbutton = cw_bgroup(uurow1, [' z Manual '],uvalue='uuzmanualbutton',/ROW, SPACE=2,ysize=31) - ;void = widget_label(uurow1,value =' ') - uuState.znumid = cw_field(uurow1,/row,title = ' Num:',uvalue='uuznumfield',value ='', /string,/return_events,xsize=2) - uuznumbutton = cw_bgroup(uurow1, [' z Num '],uvalue='uuznumbutton',/ROW,ysize=31) - znumchangeid= cw_bgroup(uurow1, ['+','-','noqso'],/row,uvalue='uuznumchangebutton', space=0) - ;void = widget_label(uurow1,value = ' ') - uuState.nsmoothid = cw_field(uurow1,/row,title = ' N:',uvalue='uunsmoothfield',value ='', /string,/return_events,xsize=2) - uunsmoothbutton = cw_bgroup(uurow1, [' N Smooth '],uvalue='uunsmoothbutton',/ROW,ysize=31) - void = widget_label(uurow1,value = ' ') - uukeywords = ['zline','nosyn','noerr','sky','ormask','andmask','allexp','restframe','zwarning'] - uukeywordset = [keywordset.zline,keywordset.nosyn,keywordset.noerr,keywordset.sky,keywordset.ormask,keywordset.andmask,keywordset.allexp,keywordset.restframe,keywordset.zwarning] - uuState.uukeywordsid = cw_bgroup(uurow2,uukeywords,/row,/nonexclusive,set_value=uukeywordset,uvalue='uukeywords') - void = widget_label(uurow2,value = ' ') - uuState.messageid = widget_label(uurow3,uvalue='uumessagefield',value = 'Please Login via your https://trac.sdss.org/ account', xsize=600, frame=1) - void = widget_label(uurow3,value = ' ') - uuState.commentheader = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'commentheader') - uuState.commentbase = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'commentbase') - uuState.yannybase = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'yannybase') - uuDatabase_member, 'login' - uuPlotspecBase_refresh - widget_control, uuState.uuplotspecbase, /realize - xmanager, 'uuplotspecbase', uuState.uuplotspecbase, /no_block - endif - endif - return -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuPlotspecBase_event, event - ;============================================================================== - ; Plotspec Base Function: event handler for the uuplotspec floating window. - ;============================================================================== - common splot_state, state, graphkeys - common plotspec_state, platelist, fiberidlist, mjdlist, topdirlist, run1dlist, run2dlist, ifiber, plug, zans, zans0, zans0_znum_noqso, keyword, keywordset, uumessage - common uuPlotspecBase_state, uuState, recentcommentlist - - if (uuState.loggedin) then uumessage='' else uumessage = 'Please Login to provide spectrum feedback to https://internal.sdss.org/inspection/eboss/' - widget_control, event.id, get_uvalue=uvalue - case uvalue of - - 'uuLoginbutton': begin - if (uuState.loggedin) then begin - uuState.action = 'logout' - uuDatabase_member, uuState.action - uumessage = 'Please Login to provide spectrum feedback to https://internal.sdss.org/inspection/eboss/' - uuPlotspecBase_refresh - endif else if uuLogin(Group_Leader=event.top) then begin - uuState.action = 'login' - uuDatabase_member, uuState.action - if (uuState.loggedin) then uumessage = 'Logged in on '+SYSTIME() else uumessage = "Invalid Login. Please try again." - uuPlotspecBase_refresh - if (uuState.loggedin) then uuDatabase_select_comment - endif - end - - 'uunav': begin - keywordset.zmanual=0 - keyword.zmanual=[0D,0D] - keyword.manualz = 0D - widget_control, uuState.zmanual0id, set_value='' - widget_control, uuState.zmanual1id, set_value='' - keywordset.znum=0 - keyword.znum=0D - widget_control, uuState.znumid, set_value='' - if (uuState.loggedin) then begin - widget_control, uuState.zid, set_value='' - widget_control, uuState.commentid, set_value='' - endif - widget_control, uuState.plateid, get_value=plate - widget_control, uuState.mjdid, get_value=mjd - widget_control, uuState.fiberid, get_value=fiberid - if (plate ne '') and is_integer(plate) and (n_elements(fiberidlist) eq 1) then begin - if (mjd ne '') and is_integer(mjd) then begin - uumessage = "Getting all fibers for this plate/mjd" & print, uumessage - uuplotspec_init, plate, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d - endif else begin - uumessage = "Getting all fibers for this plate" & print, uumessage - uuplotspec_init, plate, topdir=topdir, run1d=run1d, run2d=run2d - endelse - if (fiberid ne '') and is_integer(fiberid) then ifiber = long(fiberid[0])-1 - endif - case event.value of - 1: begin ; < Button - if (ifiber gt 0) then ifiber = ifiber - 1 else begin - ifiber = n_elements(fiberidlist)-1 - uumessage = "Wrapping around to show final fiber" & print, uumessage - endelse - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - end - 2: begin ; > Button - if (ifiber lt n_elements(fiberidlist)-1) then ifiber = ifiber + 1 else begin - ifiber = 0 - uumessage = "Wrapping around to show initial fiber" & print, uumessage - endelse - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - end - else: begin ; Get Button or plate-mjd-fiberid field - if (plate ne '') and is_integer(plate) and is_integer(mjd) and is_integer(fiberid) then begin - platefibers = where(platelist eq plate[0], ncomplement=nonplatefibers) - if (nonplatefibers ne n_elements(fiberidlist)) then begin - if (mjd eq '' and fiberid eq '') then begin - ifiber = platefibers[0] - endif else if (mjd ne '' and fiberid eq '') then begin - mjdfibers = where(mjdlist eq mjd[0], ncomplement=nonmjdfibers) - if (nonmjdfibers ne n_elements(fiberidlist)) then begin - plateandmjdfibers = setIntersection(platefibers,mjdfibers) - ifiber = plateandmjdfibers[0] - endif else ifiber = -1 - endif else if (mjd eq '' and fiberid ne '') then begin - fiberidfibers = where(fiberidlist eq fiberid[0], ncomplement=nonfiberidfibers) - if (nonfiberidfibers ne n_elements(fiberidlist)) then begin - plateandfiberidfibers = setIntersection(platefibers,fiberidfibers) - ifiber = plateandfiberidfibers[0] - endif else ifiber = -1 - endif else if (mjd ne '' and fiberid ne '') then begin - mjdfibers = where(mjdlist eq mjd[0], ncomplement=nonmjdfibers) - fiberidfibers = where(fiberidlist eq fiberid[0], ncomplement=nonfiberidfibers) - if (nonmjdfibers ne n_elements(fiberidlist)) and (nonfiberidfibers ne n_elements(fiberidlist)) then begin - plateandmjdandfiberidfibers = setIntersection(setIntersection(platefibers,mjdfibers),fiberidfibers) - ifiber = plateandmjdandfiberidfibers[0] - endif else ifiber = -1 - endif - endif else ifiber = -1 - if (ifiber ne -1) then begin - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - endif else if (mjd ne '') then begin - uumessage = "Getting new plate/mjd" & print, uumessage - uuplotspec_init, plate, mjd=mjd, topdir=topdirlist[0], run1d=run1dlist[0], run2d=run2dlist[0] - endif else begin - uumessage = "Getting new plate" & print, uumessage - uuplotspec_init, plate, topdir=topdirlist[0], run1d=run1dlist[0], run2d=run2dlist[0] - endelse - endif - if (ifiber eq -1) then ifiber=0 - end - endcase - widget_control, uuState.plateid, set_value=strtrim(platelist[ifiber],2) - widget_control, uuState.mjdid, set_value=strtrim(mjdlist[ifiber],2) - widget_control, uuState.fiberid, set_value=strtrim(fiberidlist[ifiber],2) - nfibertext = strtrim(ifiber+1,2)+' of '+strtrim(n_elements(fiberidlist),2)+' ' - nfibertext = 'of '+strtrim(n_elements(fiberidlist),2)+' ' - widget_control, uuState.ifiberid, set_value = strtrim(ifiber+1,2) - widget_control, uuState.nfiberid, set_value = strmid(nfibertext,0,16) - if (uuState.loggedin) then begin - widget_control, uuState.run1d, set_value=run1dlist[ifiber] - widget_control, uuState.run2d, set_value=run2dlist[ifiber] - uuDatabase_select_comment - endif - end - - 'uuifiberid': begin - widget_control, uuState.ifiberid, get_value=ifiber0 - if (ifiber0 ne '') and (is_integer(ifiber0)) then begin - if (ifiber0 ge 1) and (ifiber0 le n_elements(fiberidlist)) then begin - if (ifiber ne long(ifiber0)-1) then begin - ifiber = long(ifiber0)-1 - keywordset.zmanual=0 - keyword.zmanual=[0D,0D] - keyword.manualz = 0D - widget_control, uuState.zmanual0id, set_value='' - widget_control, uuState.zmanual1id, set_value='' - keywordset.znum=0 - keyword.znum=0D - widget_control, uuState.znumid, set_value='' - if (uuState.loggedin) then begin - widget_control, uuState.zid, set_value='' - widget_control, uuState.commentid, set_value='' - endif - widget_control, uuState.plateid, set_value=strtrim(platelist[ifiber],2) - widget_control, uuState.mjdid, set_value=strtrim(mjdlist[ifiber],2) - widget_control, uuState.fiberid, set_value=strtrim(fiberidlist[ifiber],2) - if (uuState.loggedin) then begin - widget_control, uuState.run1d, set_value=strtrim(run1dlist[ifiber],2) - widget_control, uuState.run2d, set_value=strtrim(run2dlist[ifiber],2) - uuDatabase_select_comment - endif - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - endif - endif else ifiber0 = -1 - endif else ifiber0 = -1 - if (ifiber0 eq -1) then begin - widget_control, uuState.ifiberid, set_value=strtrim(ifiber+1,2) - uumessage = "Please enter a valid fiber index from 1 to "+strtrim(n_elements(fiberidlist),2) & print, uumessage - endif - end - - 'uuzmanualbutton': begin - keywordset.znum=0 - keyword.znum=0D - widget_control, uuState.znumid, set_value='' - widget_control, uuState.zmanual0id, get_value=zmanual0 - widget_control, uuState.zmanual1id, get_value=zmanual1 - zmanual0=double(zmanual0) - zmanual1=double(zmanual1) - if (zmanual0 ne '' and zmanual1 ne '') and (zmanual1 lt zmanual0) then begin - zmanual01 = zmanual1 - zmanual1 = zmanual0 - zmanual0 = zmanual01 - widget_control, uuState.zmanual0id, set_value=zmanual0 - widget_control, uuState.zmanual1id, set_value=zmanual1 - endif else if (zmanual0 eq '' and zmanual1 ne '') then begin - zmanual0=double(zmanual1) - zmanual1='' - widget_control, uuState.zmanual0id, set_value=zmanual0 - widget_control, uuState.zmanual1id, set_value='' - endif - if (zmanual0 ne '') then begin - keywordset.zmanual=1 - if (zmanual1 ne '') then keyword.zmanual=[zmanual0,zmanual1] else keyword.zmanual=[zmanual0,zmanual0] - endif else begin - keywordset.zmanual=0 - keyword.zmanual=[0D,0D] - endelse - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - if (uuState.loggedin) and (zmanual0 ne '') then begin - widget_control, uuState.zid, set_value=keyword.manualz - if (keyword.manualclass eq 'GALAXY') then widget_control, uuState.classid, set_droplist_select=1 else if (keyword.manualclass eq 'QSO') then widget_control, uuState.classid, set_droplist_select=2 else if (keyword.manualclass eq 'STAR') then widget_control, uuState.classid, set_droplist_select=3 else widget_control, uuState.classid, set_droplist_select=0 - endif else if (uuState.loggedin) then begin - widget_control, uuState.zid, set_value='' - widget_control, uuState.classid, set_droplist_select=0 - endif - end - - 'uuzmanual0field': begin - keywordset.znum=0 - keyword.znum=0D - widget_control, uuState.znumid, set_value='' - widget_control, uuState.zmanual0id, get_value=zmanual0 - widget_control, uuState.zmanual1id, get_value=zmanual1 - zmanual0=double(zmanual0) - zmanual1=double(zmanual1) - if (zmanual0 ne '' and zmanual1 ne '') and (zmanual1 lt zmanual0) then begin - zmanual01 = zmanual1 - zmanual1 = zmanual0 - zmanual0 = zmanual01 - widget_control, uuState.zmanual0id, set_value=zmanual0 - widget_control, uuState.zmanual1id, set_value=zmanual1 - endif else if (zmanual0 eq '' and zmanual1 ne '') then begin - zmanual0=double(zmanual1) - zmanual1='' - widget_control, uuState.zmanual0id, set_value=zmanual0 - widget_control, uuState.zmanual1id, set_value='' - endif - if (zmanual0 ne '') then begin - keywordset.zmanual=1 - if (zmanual1 ne '') then keyword.zmanual=[zmanual0,zmanual1] else keyword.zmanual=[zmanual0,zmanual0] - endif else begin - keywordset.zmanual=0 - keyword.zmanual=[0D,0D] - endelse - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - if (uuState.loggedin) and (zmanual0 ne '') then begin - widget_control, uuState.zid, set_value=keyword.manualz - if (keyword.manualclass eq 'GALAXY') then widget_control, uuState.classid, set_droplist_select=1 else if (keyword.manualclass eq 'QSO') then widget_control, uuState.classid, set_droplist_select=2 else if (keyword.manualclass eq 'STAR') then widget_control, uuState.classid, set_droplist_select=3 else widget_control, uuState.classid, set_droplist_select=0 - endif else if (uuState.loggedin) then begin - widget_control, uuState.zid, set_value='' - widget_control, uuState.classid, set_droplist_select=0 - endif - end - - 'uuzmanual1field': begin - keywordset.znum=0 - keyword.znum=0D - widget_control, uuState.znumid, set_value='' - widget_control, uuState.zmanual0id, get_value=zmanual0 - widget_control, uuState.zmanual1id, get_value=zmanual1 - zmanual0=double(zmanual0) - zmanual1=double(zmanual1) - if (zmanual0 ne '' and zmanual1 ne '') and (zmanual1 lt zmanual0) then begin - zmanual01 = zmanual1 - zmanual1 = zmanual0 - zmanual0 = zmanual01 - widget_control, uuState.zmanual0id, set_value=zmanual0 - widget_control, uuState.zmanual1id, set_value=zmanual1 - endif else if (zmanual0 eq '' and zmanual1 ne '') then begin - zmanual0=double(zmanual1) - zmanual1='' - widget_control, uuState.zmanual0id, set_value=zmanual0 - widget_control, uuState.zmanual1id, set_value='' - endif - if (zmanual0 ne '') then begin - keywordset.zmanual=1 - if (zmanual1 ne '') then keyword.zmanual=[zmanual0,zmanual1] else keyword.zmanual=[zmanual0,zmanual0] - endif else begin - keywordset.zmanual=0 - keyword.zmanual=[0D,0D] - endelse - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - if (uuState.loggedin) and (zmanual0 ne '') then begin - widget_control, uuState.zid, set_value=keyword.manualz - if (keyword.manualclass eq 'GALAXY') then widget_control, uuState.classid, set_droplist_select=1 else if (keyword.manualclass eq 'QSO') then widget_control, uuState.classid, set_droplist_select=2 else if (keyword.manualclass eq 'STAR') then widget_control, uuState.classid, set_droplist_select=3 else widget_control, uuState.classid, set_droplist_select=0 - endif else if (uuState.loggedin) then begin - widget_control, uuState.zid, set_value='' - widget_control, uuState.classid, set_droplist_select=0 - endif - end - - 'uuznumbutton': begin - keywordset.zmanual=0 - keyword.zmanual=[0D,0D] - keyword.manualz = 0D - widget_control, uuState.zmanual0id, set_value='' - widget_control, uuState.zmanual1id, set_value='' - widget_control, uuState.znumid, get_value=znum - if (znum ne '') then begin - keywordset.znum=1 - keyword.znum=znum - endif else begin - keywordset.znum=0 - keyword.znum=0L - endelse - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - if (uuState.loggedin) and (znum ne '') then begin - widget_control, uuState.zid, set_value=keyword.manualz - if (keyword.manualclass eq 'GALAXY') then widget_control, uuState.classid, set_droplist_select=1 else if (keyword.manualclass eq 'QSO') then widget_control, uuState.classid, set_droplist_select=2 else if (keyword.manualclass eq 'STAR') then widget_control, uuState.classid, set_droplist_select=3 else widget_control, uuState.classid, set_droplist_select=0 - uuState.z = keyword.manualz - uuState.class = keyword.manualclass - endif else if (uuState.loggedin) then begin - widget_control, uuState.zid, set_value='' - widget_control, uuState.classid, set_droplist_select=0 - endif - end - - 'uuznumfield': begin - keywordset.zmanual=0 - keyword.zmanual=[0D,0D] - keyword.manualz = 0D - widget_control, uuState.zmanual0id, set_value='' - widget_control, uuState.zmanual1id, set_value='' - widget_control, uuState.znumid, get_value=znum - if (znum ne '') then begin - keywordset.znum=1 - keyword.znum=znum - endif else begin - keywordset.znum=0 - keyword.znum=0L - endelse - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - if (uuState.loggedin) and (znum ne '') then begin - widget_control, uuState.zid, set_value=keyword.manualz - if (keyword.manualclass eq 'GALAXY') then widget_control, uuState.classid, set_droplist_select=1 else if (keyword.manualclass eq 'QSO') then widget_control, uuState.classid, set_droplist_select=2 else if (keyword.manualclass eq 'STAR') then widget_control, uuState.classid, set_droplist_select=3 else widget_control, uuState.classid, set_droplist_select=0 - uuState.z = keyword.manualz - uuState.class = keyword.manualclass - endif else if (uuState.loggedin) then begin - widget_control, uuState.zid, set_value='' - widget_control, uuState.classid, set_droplist_select=0 - endif - end - - 'uuznumchangebutton': begin - keywordset.zmanual=0 - keyword.zmanual=[0D,0D] - keyword.manualz = 0D - widget_control, uuState.zmanual0id, set_value='' - widget_control, uuState.zmanual1id, set_value='' - widget_control, uuState.znumid, get_value=znum - if (znum ne '' and is_integer(znum)) then begin - case event.value of - 0: begin - keyword.znum=znum+1 - keywordset.znum=1 - widget_control, uuState.znumid, set_value=keyword.znum - end - 1: begin - if (znum gt 1) then begin - keyword.znum=znum-1 - keywordset.znum=1 - widget_control, uuState.znumid, set_value=keyword.znum - endif else begin - keyword.znum=0 - keywordset.znum=0 - widget_control, uuState.znumid, set_value='' - endelse - end - 2: begin - keyword.znum=zans0_znum_noqso - keywordset.znum=1 - widget_control, uuState.znumid, set_value=keyword.znum - end - endcase - endif else begin - case event.value of - 0: begin - keyword.znum=1 - keywordset.znum=1 - widget_control, uuState.znumid, set_value=keyword.znum - end - 1: begin - keyword.znum=0 - keywordset.znum=0 - widget_control, uuState.znumid, set_value='' - end - 2: begin - keyword.znum=zans0_znum_noqso - keywordset.znum=1 - widget_control, uuState.znumid, set_value=keyword.znum - end - endcase - endelse - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - if (uuState.loggedin) and (keyword.znum ne '') then begin - widget_control, uuState.zid, set_value=keyword.manualz - if (keyword.manualclass eq 'GALAXY') then widget_control, uuState.classid, set_droplist_select=1 else if (keyword.manualclass eq 'QSO') then widget_control, uuState.classid, set_droplist_select=2 else if (keyword.manualclass eq 'STAR') then widget_control, uuState.classid, set_droplist_select=3 else widget_control, uuState.classid, set_droplist_select=0 - uuState.z = keyword.manualz - uuState.class = keyword.manualclass - endif else if (uuState.loggedin) then begin - widget_control, uuState.zid, set_value='' - widget_control, uuState.classid, set_droplist_select=0 - endif - end - - 'uunsmoothbutton': begin - widget_control, uuState.nsmoothid, get_value=nsmooth - if (nsmooth ne '') and (nsmooth ne '1') then begin - keywordset.nsmooth=1 - keyword.nsmooth=nsmooth - endif else begin - keywordset.nsmooth=0 - keyword.nsmooth=1L - endelse - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - end - - 'uunsmoothfield': begin - widget_control, uuState.nsmoothid, get_value=nsmooth - if (nsmooth ne '') and (nsmooth ne '1') then begin - keywordset.nsmooth=1 - keyword.nsmooth=nsmooth - endif else begin - keywordset.nsmooth=0 - keyword.nsmooth=1L - endelse - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - end - - 'uukeywords': begin - widget_control, uuState.uukeywordsid, get_value=uukeyword - i=0 - keywordset.zline=uukeyword[i++] - keywordset.nosyn=uukeyword[i++] - keywordset.noerr=uukeyword[i++] - keywordset.sky=uukeyword[i++] - keywordset.ormask=uukeyword[i++] - keywordset.andmask=uukeyword[i++] - keywordset.allexp=uukeyword[i++] - keywordset.restframe=uukeyword[i++] - keywordset.zwarning=uukeyword[i++] - case event.value of - 8: begin ; zwarning - widget_control, uuState.plateid, get_value=plate - widget_control, uuState.mjdid, get_value=mjd - widget_control, uuState.fiberid, get_value=fiberid - if (plate ne '') and is_integer(plate) and is_integer(mjd) and is_integer(fiberid) then begin - if (mjd eq '' and fiberid eq '') then begin - uuplotspec_init, plate, topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - endif else if (mjd ne '' and fiberid eq '') then begin - uuplotspec_init, plate, mjd=mjd, topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - endif else if (mjd eq '' and fiberid ne '') then begin - uuplotspec_init, plate, topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - platefibers = where(platelist eq plate[0], ncomplement=nonplatefibers) - if (nonplatefibers ne n_elements(fiberidlist)) then begin - fiberidfibers = where(fiberidlist eq fiberid[0], ncomplement=nonfiberidfibers) - if (nonfiberidfibers ne n_elements(fiberidlist)) then begin - plateandfiberidfibers = setIntersection(platefibers,fiberidfibers) - ifiber = plateandfiberidfibers[0] - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - endif else begin - uumessage = "Getting new plate" & print, uumessage - uuplotspec_init, plate, topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - endelse - endif else begin - uumessage = "Getting new plate" & print, uumessage - uuplotspec_init, plate, topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - endelse - endif else if (mjd ne '' and fiberid ne '') then begin - uuplotspec_init, plate, topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - platefibers = where(platelist eq plate[0], ncomplement=nonplatefibers) - if (nonplatefibers ne n_elements(fiberidlist)) then begin - mjdfibers = where(mjdlist eq mjd[0], ncomplement=nonmjdfibers) - fiberidfibers = where(fiberidlist eq fiberid[0], ncomplement=nonfiberidfibers) - if (nonmjdfibers ne n_elements(fiberidlist)) and (nonfiberidfibers ne n_elements(fiberidlist)) then begin - plateandmjdandfiberidfibers = setIntersection(setIntersection(platefibers,mjdfibers),fiberidfibers) - ifiber = plateandmjdandfiberidfibers[0] - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - endif else begin - uumessage = "Getting new plate/mjd" & print, uumessage - uuplotspec_init, plate, mjd=mjd, topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - endelse - endif else begin - uumessage = "Getting new plate/mjd" & print, uumessage - uuplotspec_init, plate, mjd=mjd, topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - endelse - endif - endif - widget_control, uuState.plateid, set_value=strtrim(platelist[ifiber],2) - widget_control, uuState.mjdid, set_value=strtrim(mjdlist[ifiber],2) - widget_control, uuState.fiberid, set_value=strtrim(fiberidlist[ifiber],2) - nfibertext = strtrim(ifiber+1,2)+' of '+strtrim(n_elements(fiberidlist),2)+' ' - widget_control, uuState.nfiberid, set_value = strmid(nfibertext,0,16) - end - else: begin - uuplotspec1, platelist[ifiber], fiberidlist[ifiber], mjd=mjdlist[ifiber], topdir=topdirlist[ifiber], run1d=run1dlist[ifiber], run2d=run2dlist[ifiber] - end - endcase - - end - - 'uuclasslist': begin - widget_control, uuState.classid, get_value=class - if (event.index gt 0) then uuState.class = class[event.index] else uuState.class='' - end - - 'uuzconflist': begin - widget_control, uuState.zconfid, get_value=zconf - if (event.index gt 0) then uuState.zconf = zconf[event.index] else uuState.zconf='' - end - - 'uuissuelist': begin - uuState.issue = uuState.issues[event.index] - end - 'uurecentcommentlist': begin - uuDatabase_select_comment, commentid=strtrim(recentcommentlist[event.index].commentid,2) - widget_control, uuState.recentcommentid, set_droplist_select=0 - end - - 'uuyannybutton': begin - widget_control, uuState.yannyid, get_value=yanny - if (yanny eq '') then begin - yanny = uuState.yanny - widget_control, uuState.yannyid, set_value=yanny - endif - if (strlen(yanny) gt 128) then begin - yanny = strmid(yanny,0,128) - widget_control, uuState.yannyid, set_value=yanny - endif - uuState.yanny = yanny - uuDatabase_generate_yanny - end - - 'uuyannyfield': begin - widget_control, uuState.yannyid, get_value=yanny - if (yanny eq '') then begin - yanny = uuState.yanny - widget_control, uuState.yannyid, set_value=yanny - endif - if (strlen(yanny) gt 128) then begin - yanny = strmid(yanny,0,128) - widget_control, uuState.yannyid, set_value=yanny - endif - uuState.yanny = yanny - uuDatabase_select_comment - uumessage = 'Switching to Yanny file: '+strtrim(uuState.yanny,2) - end - - 'uuyannygroup': begin - widget_control, uuState.yannyid, get_value=yanny - if (yanny eq '') then begin - yanny = uuState.yanny - widget_control, uuState.yannyid, set_value=yanny - endif - if (strlen(yanny) gt 128) then begin - yanny = strmid(yanny,0,128) - widget_control, uuState.yannyid, set_value=yanny - endif - uuState.yanny = yanny - widget_control, uuState.yannygroupid, get_value=yannygroup - if (yanny eq 'spinspect' and yannygroup ne 0) then begin - widget_control, uuState.yannygroupid, set_value=0 - uumessage = 'Choose a custom name for the Yanny file to group all fibers together' - endif - uuState.yannygroup = yannygroup - end - - else: begin - uuState.valid = 1 - widget_control, uuState.zid, get_value=z - widget_control, uuState.commentid, get_value=comment - widget_control, uuState.yannyid, get_value=yanny - if (yanny eq '') then begin - yanny = uuState.yanny - widget_control, uuState.yannyid, set_value=yanny - endif - if (strlen(yanny) gt 128) then begin - yanny = strmid(yanny,0,128) - widget_control, uuState.yannyid, set_value=yanny - endif - uuState.yanny = yanny - if (z eq '') and (comment eq '') and (uuState.class eq '') then begin - uumessage = 'Enter a comment, or manual z or class inspection' - uuState.valid=0 - endif else begin - if (strlen(comment) le 256) then begin - uuState.comment = comment - endif else begin - uumessage = 'Comment cannot exceed 256 characters' - uuState.valid = 0 - endelse - if (is_numeric(z)) then begin - uuState.z = z - endif else begin - if (uumessage ne '') then uumessage = uumessage + ', and z must be numeric' else uumessage = 'z must be numeric' - uuState.valid = 0 - endelse - endelse - - if (uuState.valid) then begin - uuDatabase_comment - uuDatabase_recentcommentlist - widget_control, uuState.recentcommentid, set_value=recentcommentlist.comment - endif - end - - endcase - - widget_control, uuState.messageid, set_value=uumessage[0] - if keyword_set(uumessage[0]) and keyword_set(strpos(uumessage[0],'Please Login')) then print, uumessage[0] - - return -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuPlotspecBase_refresh - ;============================================================================== - ; Plotspec Base Function: refreshes the uuplotspec floating window to keep - ; it up to date during navigation functions and database functions. - ;============================================================================== - common splot_state, state, graphkeys - common plotspec_state, platelist, fiberidlist, mjdlist, topdirlist, run1dlist, run2dlist, ifiber, plug, zans, zans0, zans0_znum_noqso, keyword, keywordset, uumessage - common uuPlotspecBase_state, uuState, recentcommentlist - if (uuState.action eq 'login') or (uuState.action eq 'logout') then begin - widget_control, uuState.commentheader, /DESTROY - widget_control, uuState.commentbase, /DESTROY - widget_control, uuState.yannybase, /DESTROY - endif - widget_control, uuState.plateid, set_value = strtrim(platelist[ifiber],2) - widget_control, uuState.mjdid, set_value = strtrim(mjdlist[ifiber],2) - widget_control, uuState.fiberid, set_value=strtrim(fiberidlist[ifiber],2) - widget_control, uuState.ifiberid, set_value = strtrim(ifiber+1,2) - nfibertext = 'of '+strtrim(n_elements(fiberidlist),2)+' ' - widget_control, uuState.nfiberid, set_value = strmid(nfibertext,0,16) - if (keywordset.zmanual) then begin - if (keyword.zmanual[0] ne keyword.zmanual[1]) then zmanual = strtrim(keyword.zmanual,2) else zmanual = [strtrim(keyword.zmanual[0],2),''] - endif else zmanual = ['',''] - widget_control, uuState.zmanual0id, set_value = zmanual[0] - widget_control, uuState.zmanual1id, set_value = zmanual[1] - if (keywordset.znum) then znum = strtrim(keyword.znum,2) else znum = '' - widget_control, uuState.znumid, set_value = znum - if (keyword.nsmooth eq 1) then keywordset.nsmooth = 0 - if (keywordset.nsmooth) then nsmooth = strtrim(keyword.nsmooth,2) else nsmooth = '1' - widget_control, uuState.nsmoothid, set_value = nsmooth - ;============================================================================== - ; LOGGED IN - ;============================================================================== - if (uuState.loggedin) then begin - widget_control, uuState.loginbuttonid, set_value = 'Logout' - uuState.commentheader = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'commentheader') - uuState.commentbase = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'commentbase') - uuState.yannybase = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'yannybase') - commentheader_col0 = widget_base(uuState.commentheader,/align_left, group_leader = state.base_id, /col, uvalue = 'commentheader_col0') - commentheader_col1 = widget_base(uuState.commentheader,/align_right, group_leader = state.base_id, /col, uvalue = 'commentheader_col1'); - commentheader_col2 = widget_base(uuState.commentheader,/align_right, group_leader = state.base_id, /col, uvalue = 'commentheader_col2'); - commentheader_col3 = widget_base(uuState.commentheader,/align_right, group_leader = state.base_id, /col, uvalue = 'commentheader_col3'); - commentheader_col4 = widget_base(uuState.commentheader,/align_right, group_leader = state.base_id, /col, uvalue = 'commentheader_col4'); - commentbase_col0 = widget_base(uuState.commentbase,/align_right, group_leader = state.base_id, /col, uvalue = 'commentbase_col0') - commentbase_col1 = widget_base(uuState.commentbase,/align_right, group_leader = state.base_id, /col, uvalue = 'commentbase_col1'); - commentbase_col2 = widget_base(uuState.commentbase,/align_right, group_leader = state.base_id, /col, uvalue = 'commentbase_col2'); - yannybase_col0 = widget_base(uuState.yannybase,/align_right, group_leader = state.base_id, /col, uvalue = 'yannybase_col0') - yannybase_col1 = widget_base(uuState.yannybase,/align_right, group_leader = state.base_id, /col, uvalue = 'yannybase_col1'); - yannybase_col2 = widget_base(uuState.yannybase,/align_right, group_leader = state.base_id, /col, uvalue = 'yannybase_col2'); - yannybase_col3 = widget_base(uuState.yannybase,/align_right, group_leader = state.base_id, /col, uvalue = 'yannybase_col3'); - widget_control, uuState.messageid, set_value = ' ' - void = widget_label(commentheader_col0,value ='Provide Feedback via Manual Inspection ') - uuState.recentcommentid = widget_droplist(commentbase_col0,title=' ', uvalue='uurecentcommentlist',value = recentcommentlist.comment) - uuState.issueid = widget_droplist(commentbase_col0,title=' Issue:', uvalue='uuissuelist',value = uuState.issues) - uuState.commentid = cw_field(commentbase_col0,/row,title = 'Comment:',uvalue='uucommentfield',value = '', /string,/return_events,xsize=50) - uuState.yannyid = cw_field(yannybase_col0,/row,title = 'Yanny:',uvalue='uuyannyfield',value = uuState.yanny, /string,/return_events,xsize=10) - yannygroup = ['Group by plate-mjd','All fibers'] - uuState.yannygroupid = cw_bgroup(yannybase_col1,yannygroup,/row,/exclusive,set_value=0,uvalue='uuyannygroup') - void = cw_field(yannybase_col2,/row,title = '',uvalue='uuusername',value = uuState.username, /string,/noedit, xsize=17) - ;void = widget_label(commentheader_col1,value = 'RUN1D:') - ;uustate.run1d = widget_label(commentheader_col2,uvalue='uurun1d',value = run1dlist[ifiber], xsize=60, frame=1) - uustate.run1d = cw_field(commentheader_col2,/row,title = 'RUN1D:',uvalue='uurun1d',value = run1dlist[ifiber], /string,/noedit,xsize=9) - ;void = widget_label(commentheader_col3,value = 'RUN2D:') - ;uustate.run2d = widget_label(commentheader_col4,uvalue='uurun2d',value = run2dlist[ifiber], xsize=60, frame=1) - uustate.run2d = cw_field(commentheader_col4,/row,title = 'RUN2D:',uvalue='uurun2d',value = run2dlist[ifiber], /string,/noedit,xsize=9) - void = widget_label(uuState.commentheader,value = ' ') - uuState.zid = cw_field(commentbase_col1,/row,title = ' z:',uvalue='uuzfield',value = '', /string,/return_events,xsize=9) - uuState.classid = widget_droplist(commentbase_col1,title=' Class:', uvalue='uuclasslist',value = [' ','GALAXY','QSO','STAR']) - uuState.zconfid = widget_droplist(commentbase_col1,title='z conf:', uvalue='uuzconflist',value = [' ','3','2','1','0']) - submit = widget_button(commentbase_col2,value = 'Submit'+string(10B)+'Feedback',uvalue='uusubmitbutton', xsize=80,ysize=110) - yanny = widget_button(yannybase_col3,value = 'Make Yanny',uvalue='uuyannybutton', xsize=80,ysize=36) - void = widget_label(uuState.commentbase,value = ' ') - void = widget_label(uuState.yannybase,value = ' ') - - ;============================================================================== - ; NOT LOGGED IN - ;============================================================================== - endif else begin - widget_control, uuState.loginbuttonid, set_value = 'Login' - widget_control, uuState.messageid, set_value = 'Please Login to provide spectrum feedback to https://internal.sdss.org/inspection/eboss/' - uuState.commentheader = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'commentheader') - uuState.commentbase = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'commentbase') - uuState.yannybase = widget_base(uuState.uuplotspecbase,/align_right, group_leader = state.base_id, /row, uvalue = 'yannybase') - endelse -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuDatabase_member, action - ;============================================================================== - ; Database Function: authenticate member (login) and get recent comments - ;============================================================================== - common uuPlotspecBase_state, uuState, recentcommentlist - if uuState.username ne '' and uuState.password ne '' then begin - uuState.oUrl->SetProperty, URL_USERNAME = uuState.username - uuState.oUrl->SetProperty, URL_PASSWORD = uuState.password - endif - uuDatabase_query_key_value, 'func', 'member', query=query, /init - uuDatabase_query_key_value, 'action', action, query=query - item = {username:''} - uuDatabase_query_select, query, item, select - if (n_elements(select) eq 1) then begin - uuState.username=select[0].username - uuState.loggedin=keyword_set(select[0].username) - endif else begin - uuState.username='' - uuState.loggedin=0 - endelse - uuState.sid='' - if (uuState.loggedin) then uuDatabase_recentcommentlist -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuDatabase_comment - ;============================================================================== - ; Database Function: insert comment and receive message response from database - ;============================================================================== - common plotspec_state, platelist, fiberidlist, mjdlist, topdirlist, run1dlist, run2dlist, ifiber, plug, zans, zans0, zans0_znum_noqso, keyword, keywordset, uumessage - common uuPlotspecBase_state, uuState, recentcommentlist - - escapedcomment = uuState.comment - if (strpos(escapedcomment,'%') ge 0) then escapedcomment = STRJOIN(STRSPLIT(escapedcomment,'%',/EXTRACT),'%25') - if (strpos(escapedcomment,'&') ge 0) then escapedcomment = STRJOIN(STRSPLIT(escapedcomment,'&',/EXTRACT),'%26') - uuDatabase_query_key_value, 'func', 'comment', query=query, /init - uuDatabase_query_key_value, 'plate', platelist[ifiber], query=query - uuDatabase_query_key_value, 'mjd', mjdlist[ifiber], query=query - uuDatabase_query_key_value, 'fiberid', fiberidlist[ifiber], query=query - uuDatabase_query_key_value, 'run2d', run2dlist[ifiber], query=query - uuDatabase_query_key_value, 'run1d', run1dlist[ifiber], query=query - uuDatabase_query_key_value, 'comment', escapedcomment, query=query - uuDatabase_query_key_value, 'zans', zans0, query=query - if keyword_set(keyword.znum) then znum = keyword.znum else znum = 0 - uuDatabase_query_key_value, 'znum', znum, query=query - uuDatabase_query_key_value, 'plug_ra', plug.ra, query=query - uuDatabase_query_key_value, 'plug_dec', plug.dec, query=query - uuDatabase_query_key_value, 'zinspec', uuState.z, query=query - uuDatabase_query_key_value, 'classinspec', uuState.class, query=query - uuDatabase_query_key_value, 'issue', uuState.issue, query=query - uuDatabase_query_key_value, 'zconf', uuState.zconf, query=query - uuDatabase_query_key_value, 'yanny', uuState.yanny, query=query - uuDatabase_query_key_value, 'yannygroup', uuState.yannygroup, query=query - uuDatabase_query_key_value, 'action', 'submit', query=query - item = {message:''} - uuDatabase_query_select, query, item, select - if (n_elements(select) eq 1) then begin - if (select[0].message eq '') then begin - uumessage='Null response from webserver. Please contact admin@sdss.org' - widget_control, uuState.zid, set_value='' - widget_control, uuState.commentid, set_value='' - widget_control, uuState.classid, set_droplist_select=0 - widget_control, uuState.zconfid, set_droplist_select=0 - endif else uumessage=select[0].message - endif else uumessage='Bad response from webserver. Please contact admin@sdss.org' -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -function uuDatabase_download, url - ;============================================================================== - ; Database Function: download a dynamic resource from the database using a - ; Java method to launch the OS default browser. - ;============================================================================== - catch = 1 - catch, awt_error - if (awt_error ne 0) then begin - catch,/cancel - return, 1 - endif - oJavaDesktop = OBJ_NEW('IDLJavaObject$Static$JAVA_AWT_DESKTOP', 'java.awt.Desktop') - oJavaURI = OBJ_NEW('IDLJavaObject$JAVA_NET_URI', 'java.net.URI', url) - if (oJavaDesktop->isDesktopSupported()) then begin - oBrowser = oJavaDesktop->getDesktop(); - oBrowser->browse,oJavaURI - OBJ_DESTROY, oBrowser - catch = 0 - endif - OBJ_DESTROY, oJavaURI, oJavaDesktop - return, catch -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuDatabase_generate_yanny - ;============================================================================== - ; Database Function: generate a yanny file from feedback in the database - ;============================================================================== - common uuPlotspecBase_state, uuState, recentcommentlist - common plotspec_state, platelist, fiberidlist, mjdlist, topdirlist, run1dlist, run2dlist, ifiber, plug, zans, zans0, zans0_znum_noqso, keyword, keywordset, uumessage - - uuDatabase_query_key_value, 'func', 'yanny', query=query, /init - uuDatabase_query_key_value, 'action', 'generate', query=query - uuDatabase_query_key_value, 'run2d', run2dlist[ifiber], query=query - uuDatabase_query_key_value, 'run1d', run1dlist[ifiber], query=query - uuDatabase_query_key_value, 'yanny', uuState.yanny, query=query - uuDatabase_query_key_value, 'yannygroup', uuState.yannygroup, query=query - - cd, current=current - yannyfile =djs_filepath(uuState.yanny+'.par',root_dir=current) - spawn, 'touch '+yannyfile - writeable = file_test(yannyfile,/write) - if writeable then begin - uuDatabase_query, query, file=yannyfile, code=code - uumessage = "Generated "+yannyfile - endif else uumessage = "Error: cannot write to "+yannyfile -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuDatabase_recentcommentlist - ;============================================================================== - ; Database Function: select list of recent comments from database - ;============================================================================== - common uuPlotspecBase_state, uuState, recentcommentlist - - uuDatabase_query_key_value, 'func', 'comment', query=query, /init - uuDatabase_query_key_value, 'action', 'list', query=query - item = {commentid:0L,comment:''} - uuDatabase_query_select, query, item, select - if (n_elements(select) eq 0) then begin - recentcommentlist = [{comment:'Paste from recent comments ',commentid:0L}] - endif else begin - recentcommentlist = select - recentcommentlist[0].comment='Paste from recent comments ' - recentcommentlist[0].commentid=0L - endelse -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuDatabase_select_comment, commentid=commentid - ;============================================================================== - ; Database Function: select comment from database - ;============================================================================== - common uuPlotspecBase_state, uuState, recentcommentlist - common plotspec_state, platelist, fiberidlist, mjdlist, topdirlist, run1dlist, run2dlist, ifiber, plug, zans, zans0, zans0_znum_noqso, keyword, keywordset, uumessage - - if keyword_set(commentid) then begin - uuDatabase_query_key_value, 'func', 'comment', query=query, /init - uuDatabase_query_key_value, 'action', 'select', query=query - uuDatabase_query_key_value, 'commentid', commentid, query=query - endif else begin - uuDatabase_query_key_value, 'func', 'comment', query=query, /init - uuDatabase_query_key_value, 'action', 'select', query=query - uuDatabase_query_key_value, 'plate', platelist[ifiber], query=query - uuDatabase_query_key_value, 'mjd', mjdlist[ifiber], query=query - uuDatabase_query_key_value, 'fiberid', fiberidlist[ifiber], query=query - uuDatabase_query_key_value, 'run2d', run2dlist[ifiber], query=query - uuDatabase_query_key_value, 'run1d', run1dlist[ifiber], query=query - uuDatabase_query_key_value, 'yanny', uuState.yanny, query=query - uuDatabase_query_key_value, 'yannygroup', uuState.yannygroup, query=query - endelse - item = {comment:'',commentid:0L,issueid:0L,zinspec:'',classinspec:'',zconf:'',modified:''} - uuDatabase_query_select, query, item, select - - if (n_elements(select) eq 1) then begin - if (select[0].commentid ne '0') then begin - widget_control, uuState.commentid, set_value=select[0].comment - uuState.issue = uuState.issues[select[0].issueid-1] - widget_control, uuState.issueid, set_droplist_select=long(select[0].issueid-1) - if ~keyword_set(commentid) then begin - uuState.z = select[0].zinspec - widget_control, uuState.zid, set_value=uuState.z - uuState.class = select[0].classinspec - keyword.manualclass = uuState.class - if (uuState.class eq 'GALAXY') then widget_control, uuState.classid, set_droplist_select=1 else if (uuState.class eq 'QSO') then widget_control, uuState.classid, set_droplist_select=2 else if (uuState.class eq 'STAR') then widget_control, uuState.classid, set_droplist_select=3 else widget_control, uuState.classid, set_droplist_select=0 - uuState.zconf = select[0].zconf - if keyword_set(uuState.zconf) then widget_control, uuState.zconfid, set_droplist_select=long(4-uuState.zconf) else widget_control, uuState.zconfid, set_droplist_select=0L - if keyword_set(select[0].modified) then uumessage = "Showing feedback for "+strtrim(platelist[ifiber],2)+"-"+strtrim(mjdlist[ifiber],2)+"-"+string(fiberidlist[ifiber], format = '(I04)')+" ["+strtrim(run2dlist[ifiber],2)+"] submitted on "+select[0].modified - - endif - commentid = select[0].commentid - endif else commentid = 0 - endif else commentid = 0 - if ~keyword_set(commentid) then begin - widget_control, uuState.commentid, set_value='' - uuState.z = '' - widget_control, uuState.zid, set_value=uuState.z - uuState.class = '' - widget_control, uuState.classid, set_droplist_select=0L - uuState.zconf = '' - widget_control, uuState.zconfid, set_droplist_select=0L - uuState.issue = uuState.issues[0L] - widget_control, uuState.issueid, set_droplist_select=0L - endif -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuDatabase_query_key_value, key, value, query=query, init=init - ;============================================================================== - ; Database Function: append key/value pair to query string - ;============================================================================== - if keyword_set(init) then query = "" else if keyword_set(query) then query += "&" - if keyword_set((size(value))[0]) then value=value[0] - query += strtrim(key,2)+"="+strtrim(value,2) -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -function uuDatabase_json_parse, response, item, tags - ;============================================================================== - ; Database Function: parse response from database on selected response. - ; This method is run if a condition (prior to IDL 8.3) caught, otherwise - ; use built-in method json_parse (introduced in IDL 8.3) - ;============================================================================== - select = item - ;print, "=======================================" - ;print, "== build a structure by parsing for the tags in ["+strjoin(tags,", ")+"]" - ;print, "== found in the json response="+response - ;print, "== by populating select=" - - ; Julian add logic here! - - comapos = 0 - for i=0, n_elements(tags)-1 do begin - posvalue = strpos( response, '":', comapos) +2 ;get pos of value string - if i EQ n_elements(tags)-1 then begin - valuestr = strmid( response, posvalue, strlen(response)-1-posvalue) - ;print, tags[i]+" >"+valuestr+"<" - endif else begin - comapos = strpos( response, ',"', comapos+1) - valuestr = strmid( response, posvalue, comapos-posvalue) - ;print, tags[i]+" >"+valuestr+"<" - endelse - selecttype = size( select.(i) , /type) - if strpos(valuestr,'"') NE -1 then $ - valuestr = strmid(valuestr,1,strlen(valuestr)-2) - ;print, tags[i]+" >"+valuestr+"<" - select.(i) = fix( valuestr, type=selecttype) - ;print, select.(i) - endfor - - - - ;help, select, /str - return, select -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuDatabase_query_select, query, item, select - ;============================================================================== - ; Database Function: parse response from database on selected item - ;============================================================================== - uuDatabase_query, query, response=response, code=code - tags = strlowcase(tag_names(item)) - ntags = n_elements(tags) - nresponse = n_elements(response) - select = replicate(item,nresponse) - if keyword_set(code) then response[0] = 'NULL' else if ~keyword_set(strpos(response[0],'HTML template')) then begin - print, response[0] - response[0] = 'NULL' - endif - if response[0] eq 'NULL' then return - for i = 0,nresponse-1 do begin - catch, parse_error - if (parse_error ne 0) then begin - catch,/cancel - select[i] = uuDatabase_json_parse(response[i], item, tags) - endif else begin - hash = json_parse(response[i]) - catch,/cancel - for j = 0,ntags-1 do begin - tag = tags[j] - if hash->haskey(tag) then select[i].(j) = hash[tag] - endfor - endelse - endfor - -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -pro uuplotspec, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, znum=znum, nsmooth=nsmooth, $ - zline=zline, nosyn=nosyn, noerr=noerr, sky=sky, $ - ormask=ormask, andmask=andmask, $ - psfile=psfile, xrange=xrange, yrange=yrange, allexp=allexp, $ - restframe=restframe, zwarning=zwarning, $ - _EXTRA=Extra - ;============================================================================== - ; Main program: reorganize keywords for plotspec (uuplotspec_init) and - ; setup the uuPlotspecBase floating window. - ;============================================================================== - - common splot_state, state, graphkeys - common plotspec_state, platelist, fiberidlist, mjdlist, topdirlist, run1dlist, run2dlist, ifiber, plug, zans, zans0, zans0_znum_noqso, keyword, keywordset, uumessage - - if (getenv('IDLUTILS_DIR') eq '') then begin - print, 'Please set your IDLUTILS_DIR environment variable, and start again' - return - endif - - if (n_params() LT 1) then begin - doc_library, 'uuplotspec' - return - endif - - if (xregistered ('splot')) then widget_control, state.base_id, /destroy - keyword = {zmanual:[0D,0D],znum:0L,nsmooth:1L,manualz:0D,manualclass:''} - keywordset = {zmanual:0L,znum:keyword_set(znum),nsmooth:keyword_set(nsmooth),zline:keyword_set(zline),nosyn:keyword_set(nosyn),noerr:keyword_set(noerr),sky:keyword_set(sky),ormask:keyword_set(ormask),andmask:keyword_set(andmask),psfile:keyword_set(psfile),xrange:keyword_set(xrange),yrange:keyword_set(yrange),allexp:keyword_set(allexp),restframe:keyword_set(restframe),zwarning:keyword_set(zwarning)} - if (not keyword_set(topdir)) or (n_elements(topdir) lt n_elements(plate)) then topdir = replicate(getenv('BOSS_SPECTRO_REDUX'),n_elements(plate)) - if (not keyword_set(run1d)) or (n_elements(run1d) lt n_elements(plate)) then run1d = replicate(getenv('RUN1D'),n_elements(plate)) - if (not keyword_set(run2d)) or (n_elements(run2d) lt n_elements(plate)) then run2d = replicate(getenv('RUN2D'),n_elements(plate)) - if (keyword_set(zmanual)) then begin - if (n_elements(zmanual) eq 1) then begin - keywordset.zmanual = 1 - keyword.zmanual = [zmanual[0],zmanual[0]] - endif else if (n_elements(zmanual) gt 1) then begin - keywordset.zmanual = 1 - keyword.zmanual = zmanual[0:1] - endif - endif - if (keywordset.znum) then keyword.znum = znum - if (keywordset.nsmooth) then keyword.nsmooth = nsmooth - uumessage ='' - uuplotspec_init, plate, fiberid, mjd=mjd, topdir=topdir, run1d=run1d, run2d=run2d, $ - psfile=psfile, xrange=xrange, yrange=yrange, $ - _EXTRA=Extra - - if (uumessage eq '') then begin - uuPlotspecBase - splot_set_minmax - endif - -end -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/pro/spec1d/vdisp_platefit.pro b/pro/spec1d/vdisp_platefit.pro deleted file mode 100644 index a4dfae217..000000000 --- a/pro/spec1d/vdisp_platefit.pro +++ /dev/null @@ -1,110 +0,0 @@ -;+ -; NAME: -; vdisp_platefit -; -; PURPOSE: -; re-run redshift-marginalized vdispfit over a plate and write out results. -; -; CALLING SEQUENCE: -; vdisp_platefit, plate, mjd -; -; READS: -; spPlate and spZbest files -; -; WRITES: -; spZvfit file, which is just spZbest HDU1 with vdisp_lnl changed. -; -; WRITTEN: -; A. Bolton, Utah, Dec 2011 (chopped out & modified from spreduce1d) -; -;------------------------------------------------------------------------------ -pro vdisp_platefit, plate, mjd - -pfile = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') + $ - '/' + plate_to_string(plate) + '/spPlate-' + plate_to_string(plate) + $ - '-' + string(mjd, format='(i5.5)') + '.fits' - -if (not file_test(pfile)) then begin - splog, 'spPlate file not found:' - splog, pfile - return -endif - -pstring = plate_to_string(plate) - -zfile = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') + $ - '/' + pstring + '/' + getenv('RUN1D') + $ - '/spZbest-' + pstring + $ - '-' + string(mjd, format='(i5.5)') + '.fits' - -ozfile = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') + $ - '/' + pstring + '/' + getenv('RUN1D') + $ - '/spZvfit-' + pstring + $ - '-' + string(mjd, format='(i5.5)') + '.fits' - -if (not file_test(zfile)) then begin - splog, 'spZbest file not found:' - splog, zfile - return -endif - -objflux = mrdfits(pfile,0,hdr) -if (NOT keyword_set(hdr)) then $ - message, 'Plate file not valid: ' + pfile -npixobj = sxpar(hdr, 'NAXIS1') -nobj = sxpar(hdr, 'NAXIS2') -objivar = mrdfits(pfile,1) -andmask = mrdfits(pfile,2) -ormask = mrdfits(pfile,3) -plugmap = mrdfits(pfile,5) -skyflux = mrdfits(pfile,6) -objloglam0 = sxpar(hdr, 'COEFF0') -objdloglam = sxpar(hdr, 'COEFF1') -zhdr = headfits(zfile) -zans = mrdfits(zfile,1) -objloglam = objloglam0 + lindgen(npixobj) * objdloglam - -anyandmask = transpose(andmask[0,*]) -anyormask = transpose(ormask[0,*]) -for ipix=1, npixobj-1 do $ - anyandmask = anyandmask OR transpose(andmask[ipix,*]) -for ipix=1, npixobj-1 do $ - anyormask = anyormask OR transpose(ormask[ipix,*]) -objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - -;---------- -; Mask out points that are unphysically negative (10-sigma negatives), -; and mask the neighboring 2 pixels in each direction. -for iobj=0L, nobj-1 do begin - thismask = objflux[*,iobj] * sqrt(objivar[*,iobj]) LE -10. - thismask = smooth(float(thismask),5) GT 0 - objivar[*,iobj] = objivar[*,iobj] * (1 - thismask) -endfor - -;----------- -; Compute redshift-marginalized velocity-dispersion -; likelihood curves for galaxies (bolton@utah 2011aug): -wh_v = where(strmatch(zans.objtype, 'GALAXY*') and $ - strmatch(zans.class_noqso, 'GALAXY*'), n_v) -if (n_v gt 0) then begin - vdans_new = vdispfit(objflux[*,wh_v], objivar[*,wh_v], objloglam, $ - zobj=zans[wh_v].z_noqso, eigenfile='spEigenElodie.fits', $ - columns=lindgen(5), npoly=5, dzpix=3, /return_chisq) - vdans_new = reform(vdans_new) - nchi2 = n_elements(vdans_new[0].chi2arr) - vstruc_new = replicate({vdisp_lnl: replicate(0., nchi2)}, nobj) - vstruc_new[wh_v].vdisp_lnl = - vdans_new.chi2arr / 2. - newzans = struct_selecttags(zans, except_tags='vdisp_lnl') - newzans = struct_addtags(newzans, vstruc_new) -endif - -;---------- -; Write the output file: -mwrfits, 0, ozfile, zhdr, /create ; Retain the original spZbest header -mwrfits, newzans, ozfile - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/vdispfit_marg.pro b/pro/spec1d/vdispfit_marg.pro deleted file mode 100644 index e1e164e67..000000000 --- a/pro/spec1d/vdispfit_marg.pro +++ /dev/null @@ -1,61 +0,0 @@ -;+ -; NAME: -; vdispfit_marg -; -; PURPOSE: -; Compute velocity dispersions for objects using the marginalized likelihood functions -; -; CALLING SEQUENCE: -; vdispfit_marg, vdisp_lnl, vdisp_marg=vdisp_marg, vdisp_err_marg=vdisp_err_marg -; -; INPUTS: -; vdisp_lnl - Natural logarithm of the likelihoods; array of [NSIG, NOBJECT] -; -; OUTPUTS: -; vdisp_marg - Velocity dispersions in km/s; array of [NOBJECT] -; vdisp_err_marg - Velocity dispersion errors in km/s; array of [NOBJECT] -; -; PROCEDURES CALLED: -; find_nminima -; -; REVISION HISTORY: -; Dec. 2012 Written by Yiping Shu, Utah -; July 2013 Modified by Joel Brownstein, replacing -; nobj=(size(vdisp_lnl))[2] -; with -; nobj = ((size(vdisp_lnl))[0] eq 2) ? (size(vdisp_lnl))[2] : 1 -;------------------------------------------------------------------------------ - -pro vdispfit_marg, vdisp_lnl, vdisp_marg=vdisp_marg, vdisp_err_marg=vdisp_err_marg - - ;nobj=(size(vdisp_lnl))[2] - - ; Modified on July 13, 2013 - ; to handle the case when VDISP_LNL = Array[35, nobj] = Array[35] when nobj=1 - nobj = ((size(vdisp_lnl))[0] eq 2) ? (size(vdisp_lnl))[2] : 1 - - vdisp_marg=fltarr(nobj) - vdisp_err_marg=fltarr(nobj) - - ; Construct the velocity dispersion baseline, consistent with vdispfit.pro - dsig=25.0 - bigsig=findgen(35)*dsig - - for iobj=0L, nobj-1 do begin - chi2arr=-2.0*reform(vdisp_lnl[*, iobj]) ; Compute the chi square array from likelihood - junk=min(chi2arr, imin) - ; Use the 3 points nearest the minimum of the chi square curve to compute - ; a more accurate velocity dispersion - ; Following the same strategy as vdispfit.pro - if (imin gt 0) then $ - sigma=find_nminima(chi2arr, bigsig, width=1.5*dsig, ypeak=minchi2, xerr=sig_err, $ - errcode=errcode) $ - else $ - sigma=find_nminima([chi2arr[1], chi2arr], [-bigsig[1], bigsig], width=1.5*dsig, $ - ypeak=minchi2, xerr=sig_err, errcode=errcode) - if (sigma ge max(bigsig)) then sig_err=-3L - vdisp_marg[iobj]=sigma > 0.0 - ; Set vdisp_err_marg to the error-code if it is non-zero - vdisp_err_marg[iobj]=sig_err*(errcode EQ 0)+errcode - endfor -end diff --git a/pro/spec1d/vdisptest.pro b/pro/spec1d/vdisptest.pro deleted file mode 100644 index 3065e609b..000000000 --- a/pro/spec1d/vdisptest.pro +++ /dev/null @@ -1,171 +0,0 @@ -; Tests for looking at the velocity dispersion fits for plate 406. -; Loop from the highest-S/N galaxies to the lowest. -pro vdisptest, plate, fiberid, mjd=mjd, doplot=doplot, debug=debug, $ - eigenfile=eigenfile, columns=columns, $ - brightest=brightest, slowplot=slowplot, plotfile=plotfile1 - - if (NOT keyword_set(plate)) then plate = 406 - if (NOT keyword_set(fiberid)) then fiberid = 1 + lindgen(640) - if (NOT keyword_set(eigenfile)) then eigenfile='spEigenElodie.fits' - if (NOT keyword_set(columns)) then columns=lindgen(24) - -; if (n_elements(slowplot) EQ 0) then slowplot = 1 -;debug = 1 -;doplot = 1 -;brightsort = 1 -;plate = 406 -;mjd = 52238 -;slowplot = 1 - - stime0 = systime(1) - - readspec, plate, fiberid, mjd=mjd, flux=objflux, invvar=objivar, $ - synflux=synflux, zans=zans - readspec, plate, mjd=mjd, fiberid[0], loglam=loglam ; same for every object - - if (keyword_set(plotfile1)) then begin - if (size(plotfile1,/tname) EQ 'STRING') then plotfile = plotfile1 $ - else plotfile = string(plate_to_string(plate), mjd, $ - format='("vdisp-", a,"-",i5.5,".ps")') - dfpsplot, plotfile, /color - endif - if (keyword_set(debug) OR keyword_set(plotfile)) then doplot = 1 - if (keyword_set(plotfile)) then debug = 0 - - if (keyword_set(brightest)) then begin - igal = where(strtrim(zans.class,2) EQ 'GALAXY' AND zans.zwarning EQ 0, $ - ngal) - igal = igal[ reverse(sort(zans[igal].sn_median)) ] ; Sort by S/N - endif else begin - ngal = (n_elements(zans)) - igal = lindgen(ngal) - endelse - - for jj=0, ngal-1 do begin - print, 'Working on object ', jj+1, ' of ', ngal - - plottitle = string(plate_to_string(plate), zans[igal[jj]].fiberid, $ - format='("Vel. Disp. Plate ", a," Fiber ",i3)') - - restwave = 10^loglam / (1 + zans[igal[jj]].z) - vdans1 = vdispfit(objflux[*,igal[jj]], objivar[*,igal[jj]], $ - loglam, zobj=zans[igal[jj]].z, $ - eigenfile=eigenfile, eigendir=eigendir, columns=columns, $ - yfit=yfit1, plottitle=plottitle, doplot=doplot, debug=debug) - if (jj EQ 0) then begin - vdans = vdans1 - yfit = yfit1 - endif else begin - vdans = [[vdans],[vdans1]] - yfit = [[yfit],[yfit1]] - endelse - - print,'Fiber = ', zans[igal[jj]].fiberid, ' sigma=', vdans1.vdisp, $ - ' +/- ', vdans1.vdisp_err - print, 'Chi^2/DOF = ', vdans1.vdispchi2 / (vdans1.vdispdof > 1) - - ipix = where(objivar[*,igal[jj]] GT 0 AND yfit1 NE 0, npix) - if (keyword_set(doplot) AND npix GT 1) then begin - !p.multi = 0 - csize = 2 - ymax = 1.25 * max(djs_median(objflux[ipix,igal[jj]],width=101)) - ymin = -0.2 * ymax - djs_plot, [restwave[ipix]], [objflux[ipix,igal[jj]]], $ - yrange=[ymin,ymax], $ - color='default', xtitle='Rest-frame Wavelength', ytitle='Flux', $ - title=plottitle, charsize=csize - djs_oplot, [restwave[ipix]], [yfit1[ipix]], color='red' - djs_oplot, !x.crange, [0,0] - djs_oplot, restwave[ipix], $ - objflux[ipix,igal[jj]]-synflux[ipix,igal[jj]], $ - color='blue' - djs_oplot, restwave[ipix], objflux[ipix,igal[jj]]-yfit1[ipix], $ - color='red' - - xplot = 0.9 * !x.crange[0] + 0.1 * !x.crange[1] - yplot = 0.1 * !y.crange[0] + 0.9 * !y.crange[1] - djs_xyouts, xplot, yplot, string(vdans1.vdisp, vdans1.vdisp_err, $ - format='("\sigma = ", f4.0, " +/- ", f4.0)'), charsize=csize - yplot = 0.2 * !y.crange[0] + 0.8 * !y.crange[1] - djs_xyouts, xplot, yplot, $ - string(vdans1.vdispchi2 / (vdans1.vdispdof > 1), $ - format='("\chi^2/DOF = ", f4.2)'), charsize=csize - - if (keyword_set(debug)) then begin - print, 'Press any key...' - cc = strupcase(get_kbrd(1)) - endif - - chivec1 = (objflux[ipix,igal[jj]]-yfit1[ipix]) $ - * sqrt(objivar[ipix,igal[jj]]) - chivec2 = (objflux[ipix,igal[jj]]-synflux[ipix,igal[jj]]) $ - * sqrt(objivar[ipix,igal[jj]]) - binsz = 0.1 - !p.multi = 0 - plothist, chivec1, bin=binsz, xrange=[-10,10], $ - xtitle=textoidl('\chi'), ytitle=textoidl('\chi Distribution'), $ - title=plottitle, charsize=csize - plothist, chivec2, bin=binsz, /overplot, color=djs_icolor('blue') - xplot = !x.crange[0] + findgen(101)*(!x.crange[1]-!x.crange[0])/100 - yplot = exp(-0.5*xplot^2) * npix * binsz / sqrt(2.*!pi) - djs_oplot, xplot, yplot, color='red' - - if (keyword_set(debug)) then begin - print, 'Press any key...' - cc = strupcase(get_kbrd(1)) - endif - endif - - ; Now fit for a different number of stellar eigentemplates - if (keyword_set(slowplot)) then begin - neigen = 50 - vdmany = 0 - for ieigen=1, neigen do begin - ; Burles counter... - print, format='("Num eigen ",i5," of ",i5,a1,$)', $ - ieigen, neigen, string(13b) - - vdans1 = vdispfit(objflux[*,igal[jj]], objivar[*,igal[jj]], $ - loglam, zobj=zans[igal[jj]].z, $ - eigenfile=eigenfile, eigendir=eigendir, columns=lindgen(ieigen)) - if (NOT keyword_set(vdmany)) then vdmany = vdans1 $ - else vdmany = [vdmany,vdans1] - endfor - if (NOT keyword_set(vdall)) then vdall = vdmany $ - else vdall = [[vdall],[vdmany]] - - !p.multi = [0,1,3] - !x.range = 0 - !y.range = 0 - csize = 2 - djs_plot, lindgen(neigen)+1, vdmany.vdisp, /ynozero, $ - xtitle='Number of eigenspectra', ytitle='Vel-Disp. [km/s]', $ - charsize=csize, title=plottitle - oploterr, lindgen(neigen)+1, vdmany.vdisp, vdmany.vdisp_err - djs_plot, lindgen(neigen)+1, vdmany.vdispchi2, /ynozero, psym=-4, $ - xtitle='Number of eigenspectra', ytitle='\chi^2 of vel-disp.', $ - charsize=csize - chi2diff = vdmany[0:neigen-2].vdispchi2 - vdmany[1:neigen-1].vdispchi2 - ymax = max(chi2diff[2:neigen-2]) - djs_plot, lindgen(neigen)+1, chi2diff, /ynozero, psym=-4, $ - yrange=[-0.1*ymax,1.1*ymax], $ - xtitle='Number of eigenspectra', ytitle='\Delta(\chi^2)', $ - charsize=csize - djs_oplot, !x.crange, [0,0] - !p.multi = 0 - - if (keyword_set(debug)) then begin - print, 'Press any key...' - cc = strupcase(get_kbrd(1)) - endif - endif - endfor - - splog, 'Total time = ', systime(1)-stime0, ' seconds', $ - format='(a,f6.0,a)' - - if (keyword_set(plotfile)) then dfpsclose -stop - - return -end diff --git a/pro/spec1d/veldisp.pro b/pro/spec1d/veldisp.pro deleted file mode 100644 index db09ba7ad..000000000 --- a/pro/spec1d/veldisp.pro +++ /dev/null @@ -1,249 +0,0 @@ -;+ -; NAME: -; veldisp -; -; PURPOSE: -; Fit a series of galaxy spectrum with a single stellar template. -; For each object, this procedure will first find the best redshift -; between object and template. The correlation function is formed -; in fitredshift, and the best redshift and width of the correlation -; peak is calculated (along with error estimates). Next perform chi2 -; fitting with fourier_difference and fourier_quotient methods -; -; CALLING SEQUENCE: -; veldisp, objflux, objivar, starflux, starivar, result, $ -; klo_cut=, khi_cut=, maxsig=, sigmastep=, zoffset= ] -; -; INPUTS: -; objflux - Array of object spectra [NPIX] or [NPIX,NOBJ] -; objivar - Array of object inverse variance [NPIX] or [NPIX,NOBJ] -; starflux - Template spectrum [nstarpix] -; starivar - Template inverse variance [nstarpix] -; -; OPTIONAL KEYWORDS: -; klo_cut - Low frequency cutoff for cross-correlation peak finding; -; default to 1/128. -; khi_cut - High frequency cutoff for cross-correlation peak finding; -; default to 1/3. -; maxsig - Maximum velocity dispersion to search for; default to 2 pix -; sigmastep - Steps between each test sigma; default to 0.2 pix -; zoffset - ??? -; -; OUTPUTS: -; result - Structure array with outputs -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; We assume that objflux and star have the same zeropoint -; And that all spectra are binned log-linear in wavelength -; If there is a zeropoint difference between objects and star -; this needs to be included after veldisp has run. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; bandpassfilter() -; djs_maskinterp() -; djs_mean() -; fft_apodize -; fitredshift -; fourier_difference() -; fourier_quotient() -; -; REVISION HISTORY: -; 25-Mar-2000 Written by S. Burles, FNAL -; 29-Mar-2000 Modified by D. Finkbeiner & D. Schlegel, APO -; 25-Jun-2000 Cleaned up and commented by D. Finkbeiner, APO -;- -;------------------------------------------------------------------------------ -function veldisp_struc, nn - - struc = { $ - z : 0., $ - z_err : 0., $ - zconf : 0., $ - sigma2_cc : 0., $ - sigma2_cc_err : 0., $ - sigma2_quotient : 0., $ - sigma2_quotient_err : 0. } - - if (keyword_set(nn)) then return, replicate(struc, nn) $ - else return, struc -end - -;------------------------------------------------------------------------------ -; this routine: -; 1) interpolates accross missing pixels -; 2) normalizes spectrum to unit flux (or variance) -; 3) apodizes spectrum with cos bell in real space -; 4) pads with zeros up to TWICE the next higher value of 2^N -; 5) computes FFT - -pro veldisp_fft, flux_in, err_in, npixbig, fluxfft, fluxfilt, fluxvar0, $ - err, klo_cut=klo_cut, khi_cut=khi_cut - - flux = flux_in-mean(flux_in) - err = err_in - - ; Interpolate over bad regions - flux = djs_maskinterp(flux, err LE 0.0, /const) - - ; Apodize - fft_apodize, flux, err - - ; Pad - npad = npixbig - n_elements(flux) - if (npad GT 0) then begin - flux = [flux, fltarr(npad)] - err = [err, fltarr(npad)] - endif - - ; Take FFT - fluxfft = fft(flux) * npixbig - fluxvariancefft = fft(err^2) * npixbig - fluxvar0 = float(fluxvariancefft[0]) - - ; Band-pass filter the object spectrum - w = where(err NE 0) - fluxfilt = bandpassfilter(fluxfft, klo_cut=klo_cut, khi_cut=khi_cut) - norm = stddev((float(fft(fluxfilt, /inv)))[w],/double) - - fluxfilt = fluxfilt / norm - - if (total(finite(fluxfilt) EQ 0) NE 0) then $ - message, 'Infinite value in FFT' - - return -end - -;------------------------------------------------------------------------------ -function veldisp, objflux, objivar, starflux, starivar, zoffset=zoffset, $ - klo_cut=klo_cut, khi_cut=khi_cut, maxsig=maxsig, sigmastep=sigmastep - - if (NOT keyword_set(klo_cut)) then klo_cut = 1./128. - if (NOT keyword_set(khi_cut)) then khi_cut = 1./3. - if (NOT keyword_set(maxsig)) then maxsig = 2.0 - if (NOT keyword_set(sigmastep)) then sigmastep = 0.2 - - if (size(objflux, /tname) EQ 'DOUBLE') then PI = !dpi $ - else PI = !pi - - ;--------------------------------------------------------------------------- - ; Check dimensions of input arrays - - ndim = size(objflux, /n_dimen) - dims = size(objflux, /dimens) - npixobj = dims[0] - if (ndim EQ 1) then nobj = 1 $ - else if (ndim EQ 2) then nobj = dims[1] $ - else message, 'OBJFLUX is neither 1-D or 2-D' - - ndim = size(starflux, /n_dimen) - dims = size(starflux, /dimens) - npixstar = dims[0] - if (ndim EQ 1) then nstar = 1 $ - else if (ndim EQ 2) then nstar = dims[1] $ - else message, 'STARFLUX is neither 1-D or 2-D' - - if total(abs(size(starflux, /dimens)-size(starivar, /dimens))) NE 0 $ - OR size(starflux, /n_dimen) NE size(starivar, /n_dimen) THEN $ - message, 'Dimensions of STARFLUX and STARIVAR do not match' - - if total(abs(size(objflux, /dimens)-size(objivar, /dimens))) NE 0 $ - OR size(objflux, /n_dimen) NE size(objivar, /n_dimen) THEN $ - message, 'Dimensions of OBJFLUX and OBJIVAR do not match' - - ;--------------------------------------------------------------------------- - ; Decide how large the padded spectra should be, based upon the - ; larger of the size of STARFLUX and OBJFLUX. - ; Pad to larger (or equal) 2^N, and then doubled for isolated B.C. - - npixbig = 2L^(fix(alog(npixstar > npixobj)/alog(2) + 1.9999)) - - result = veldisp_struc(nobj) - - ;--------------------------------------------------------------------------- - ; Compute FFT for stellar template - - for istar=0, nstar-1 do begin - - veldisp_fft, starflux[*,istar], starivar[*,istar], npixbig, starfft, $ - starfilt, starvar0, starivar_pad, $ - klo_cut=klo_cut, khi_cut=khi_cut - - fitredshift, starfilt, starivar_pad, starfilt, starivar_pad, $ - nsearch=5, zfit=starcen, z_err=starcen_err, $ - veldispfit=starsigma, veldisp_err=starsigma_err - - ;--------------------------------------------------------------------------- - ; LOOP OVER OBJECT SPECTRA - - splog, 'Object# z [pixels] veldisp_cc^2 veldisp_q^2' - - for iobj=0, nobj-1 do begin - - veldisp_fft, objflux[*,iobj], objivar[*,iobj], npixbig, $ - fluxfft, fluxfilt, fluxvar0, fluxivar_pad, $ - klo_cut=klo_cut, khi_cut=khi_cut - - fitredshift, fluxfilt, fluxivar_pad, starfilt, starivar_pad, $ - nsearch=5, zfit=fitcen, z_err=fitcen_err, $ - veldispfit=galsigma, veldisp_err=galsigma_err, zconf=zconf - - result[iobj].z[istar] = fitcen - if (keyword_set(zoffset)) then $ - result[iobj].z[istar] = result[iobj].z[istar] + zoffset[istar] - result[iobj].z_err[istar] = fitcen_err - result[iobj].zconf[istar] = zconf - -; if (keyword_set(doplot)) then begin -; wset,2 -; djs_plot, starflux/normstar, xr=[0,2000], yr=[0,2.0], $ -; title='Rest frame spectra of template (white) and galaxy (red)' -; djs_oplot, $ -; smooth(shift(objflux[*,iobj]/normobj, -fitcen),5), $ -; color='red' -; endif - -; Should really store sigma squared, and allow negative values; error -; should reflect it - DPF ??? - if (galsigma GT starsigma AND starsigma GT 0.0) then begin - result[iobj].sigma2_cc[istar] = galsigma^2 - starsigma^2 - -; fix this ??? - result[iobj].sigma2_cc_err[istar] = sqrt((galsigma*galsigma_err)^2 + $ - (starsigma*starsigma_err)^2)/result[iobj].sigma2_cc[istar] - endif - - twopiei = 2.0 * PI * complex(0.0,1.0) - knums = fft_wavenums(npixbig) - phase = exp( - twopiei * knums * fitcen) - starshift = starfft * phase - - testsigma = findgen(ceil(float(maxsig)/sigmastep) + 1) * sigmastep - - answerq = fourier_quotient(fluxfft, starshift, fluxvar0, $ - starvar0, testsigma2=testsigma^2, deltachisq=1.0, $ - lowlimit = 1.0/250.0, highlimit=1.0/5., broadarr=broadarr) - - if (n_elements(answerq) EQ 4) then begin - result[iobj].sigma2_quotient[istar] = answerq[1] - result[iobj].sigma2_quotient_err[istar] = answerq[2] - bestalpha_q = answerq[3] - endif - - r = result[iobj] - splog, iobj, r.z[istar], r.z_err[istar], $ - r.sigma2_cc[istar], r.sigma2_cc_err[istar], $ - r.sigma2_quotient[istar], r.sigma2_quotient_err[istar], $ - format='(i5,f9.1," +/-",f7.1,2(f9.3," +-",f6.3))' - - endfor - endfor - - return, result -end diff --git a/pro/spec1d/writespec.pro b/pro/spec1d/writespec.pro deleted file mode 100644 index 18ca85b0b..000000000 --- a/pro/spec1d/writespec.pro +++ /dev/null @@ -1,88 +0,0 @@ -;+ -; NAME: -; writespec -; -; PURPOSE: -; Routine for writing Princeton-1D spectro outputs to an ASCII file -; -; CALLING SEQUENCE: -; writespec, plate, fiberid, [ mjd=, filename= ] -; -; INPUTS: -; plate - Plate number(s) -; fiber - Fiber number(s), 1-indexed -; -; OPTIONAL INPUTS: -; mjd - MJD number(s); if not set, then select the most recent -; data for this plate (largest MJD). -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; mjd - If not specified, then this is returned as an array of one -; MJD per object. -; filename - Output file name; default to spec-pppp-mmmmm-fff.dat, -; where pppp=plate number, mmmmm=MJD, fff=fiber ID. -; -; COMMENTS: -; The data are read with READSPEC. See the documentation for that -; routine to see how to set environment variables that describe where -; the data files are. -; -; EXAMPLES: -; Write the spectrum of plate 401, fiber #100, to an ASCII file as follows: -; IDL> writespec, 401, 100 -; The default file name will be "spec-0401-51788-100.dat". This can be -; changed by setting the FILENAME keyword: -; IDL> writespec, 401, 100, filename='junk.dat' -; -; BUGS: -; -; PROCEDURES CALLED: -; readspec -; sdss_flagname() -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 25-Sep-2000 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro writespec, plate, fiberid, mjd=mjd, filename=filename, legacy=legacy, plates=plates - - readspec, plate, fiberid, mjd=mjd, flux=objflux, flerr=objerr, $ - loglam=loglam, plug=plug, legacy=legacy, plates=plates - wave = 10d^loglam - - primtarget = sdss_flagname('TARGET', plug.primtarget, /concat) - sectarget = sdss_flagname('TTARGET', plug.sectarget, /concat) - - ;platestr = plate_to_string(plate) - platestr = string(plate, format='(i4.4)') - mjdstr = string(mjd, format='(i5.5)') - fibstr = string(fiberid, format='(i4.4)') - - if (NOT keyword_set(filename)) then $ - filename = 'spec-' + platestr + '-' + mjdstr + '-' + fibstr + '.dat' - - openw, olun, filename, /get_lun - - printf, olun, '# Plate ' + platestr - printf, olun, '# MJD ' + mjdstr - printf, olun, '# Fiber ' + fibstr - printf, olun, '# PRIMTARGET = ' + primtarget - printf, olun, '# SECTARGET = ' + sectarget - printf, olun, '#' - printf, olun, '# Wavelength Flux Error' - printf, olun, '# [Ang] [10^(-17) erg/cm/s/Ang] [10^(-17) erg/cm/s/Ang]' - for i=0, n_elements(objflux)-1 do begin - printf, olun, wave[i], objflux[i], objerr[i], $ - format='(f10.3, e12.4, e12.4)' - endfor - - close, olun - free_lun, olun - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/zfind.pro b/pro/spec1d/zfind.pro deleted file mode 100644 index 02a929071..000000000 --- a/pro/spec1d/zfind.pro +++ /dev/null @@ -1,275 +0,0 @@ -;+ -; NAME: -; zfind -; -; PURPOSE: -; Find possible redshift matches for a set of spectra using a set of -; eigen-templates. -; -; CALLING SEQUENCE: -; result = zfind( objflux, objivar, hdr=hdr, $ -; [ starflux=, starloglam0=, stardloglam=, $ -; eigenfile=, eigendir=, columns=, npoly=, $ -; zmin=, zmax=, zguess=, pwidth=, nfind=, width=, $ -; zans_fixed=, _EXTRA= ] -; -; INPUTS: -; objflux - Object fluxes [NPIXOBJ,NOBJ] -; objivar - Object inverse variances [NPIXOBJ,NOBJ] -; -; REQUIRED KEYWORDS: -; hdr - FITS header for objects, used to construct the wavelengths -; from the following keywords: COEFF0, COEFF1. -; -; OPTIONAL KEYWORDS: -; starflux - Eigenspectra [NPIXSTAR,NSTAR]. -; starloglam0- Zero-point of log-10(Angstrom) wavelength mapping of STARFLUX. -; stardloglam- Wavelength spacing for STARFLUX in log-10(Angstroms) -; eigenfile - Input FITS file with an [NPIXSTAR,NSTAR] image with -; either templates or eigenspectra. If a wildcard appears -; in the file name, then the file that appears last in a sort -; is used. -; The header keywords COEFF0, COEFF1 are used to specify -; the wavelength mapping in log-10 Angstroms. -; This must be set if STARFLUX,STARLOGLAM0 are not set. -; eigendir - Directory for EIGENFILE; default to $IDLSPEC2D/templates. -; columns - Column numbers of the eigenspectra image to use in the -; PCA fit; default to all columns. -; npoly - Number of polynomial terms to append to eigenspectra; -; default to none. -; zmin - Minimum redshift to consider; default to no lower bound. -; zmax - Maximum redshift to consider; default to no upper bound. -; zguess - Initial guess for redshift; search for a solution about -; this value. If specified with PWIDTH, then ZMIN and ZMAX -; are ignoreed. -; pwidth - Search width in pixels about the intial guess redshift ZGUESS. -; If specified with ZGUESS, then ZMIN and ZMAX are ignored. -; nfind - Keyword for ZCOMPUTE(). -; width - Keyword for ZCOMPUTE(). -; _EXTRA - Keywords for ZCOMPUTE(), such as PSPACE, DOPLOT, DEBUG, VERBOSE -; -; OUTPUTS: -; result - Structure with redshift-fit information. Structure -; elements are left blank if fewer than NFIND peaks are found. -; -; OPTIONAL OUTPUTS: -; zans_fixed - Structure with fit information for those templates -; fixed in redshift if FIXED_TEMPLATE is passed. -; -; COMMENTS: -; One can specify a search domain for the redshift with ZMIN and ZMAX, or -; with ZGUESS and PWIDTH. If none of those parameters are set, then all -; possible redshifts that overlap the object and star (template) are tested. -; -; Mask any pixels on the templates where the first template contains zeros. -; This is useful, in particular, where the stellar templates have zeros -; at the beginning or end of the spectral range due lack of wavelength -; coverage. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; concat_dir() -; djs_filepath() -; fileandpath() -; readfits() -; splog -; sxpar() -; zcompute() -; -; INTERNAL SUPPORT ROUTINES: -; sp1d_struct() -; -; REVISION HISTORY: -; 28-Jun-2000 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -function sp1d_struct - - result = create_struct( $ - name = 'ZANS', $ - 'class' , '', $ - 'subclass' , '', $ - 'z' , 0.0, $ - 'z_err' , 0.0, $ - 'rchi2' , 0.0, $ - 'dof' , 0L, $ - 'rchi2diff' , 0.0, $ - 'tfile' , '', $ - 'tcolumn' , lonarr(10) - 1L, $ - 'npoly' , 0L, $ - 'theta' , fltarr(10), $ - 'theta_covar', fltarr(10,10), $ - 'vdisp' , 0.0, $ - 'vdisp_err' , 0.0, $ - 'vdispz' , 0.0, $ - 'vdispz_err' , 0.0, $ - 'vdispchi2' , 0.0, $ - 'vdispnpix' , 0.0, $ - 'vdispdof' , 0L $ - ) - - return, result -end - -;------------------------------------------------------------------------------ -function zfind, objflux, objivar, hdr=hdr, $ - starflux=starflux, starloglam0=starloglam0, stardloglam=stardloglam, $ - eigenfile=eigenfile, eigendir=eigendir, columns=columns, npoly=npoly, $ - zmin=zmin, zmax=zmax, zguess=zguess, pwidth=pwidth, $ - nfind=nfind, width=width, zans_fixed=zans_fixed, _EXTRA=EXTRA - - if (n_elements(eigendir) EQ 0) then $ - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - - ndim = size(objflux, /n_dimen) - if (ndim EQ 1) then nobj = 1 $ - else nobj = (size(objflux, /dimens))[1] - npixobj = (size(objflux))[1] - - ;---------- - ; Determine the wavelength mapping for the object spectra, - ; which are the same for all of them. - - objloglam0 = sxpar(hdr, 'COEFF0') - objdloglam = sxpar(hdr, 'COEFF1') - - if (n_elements(zmin) NE 0) then $ - pmin = floor( alog10(1.0 + zmin) / objdloglam ) - if (n_elements(zmax) NE 0) then $ - pmax = ceil( alog10(1.0 + zmax) / objdloglam ) - - if (n_elements(zguess) GT 0 AND keyword_set(pwidth)) then begin - if (keyword_set(width)) then width1 = width $ - else width1 = pwidth - pmin = floor( alog10(1.0 + zguess) / objdloglam - 0.5 * (pwidth+1+width1) ) - pmax = floor( alog10(1.0 + zguess) / objdloglam + 0.5 * (pwidth+1+width1) ) - endif - - if (keyword_set(eigenfile)) then begin - ;---------- - ; Find the most recent template file matching EIGENFILE - - allfiles = findfile(djs_filepath(eigenfile, root_dir=eigendir), count=ct) - if (ct EQ 0) then $ - message, 'Unable to find EIGENFILE matching '+eigenfile - thisfile = allfiles[ (reverse(sort(allfiles)))[0] ] - splog, 'Selecting EIGENFILE=' + thisfile - if (keyword_set(columns)) then $ - splog, 'Selecting columns=', columns - - ;---------- - ; Read the template file, and optionally trim to only those columns - ; specified by COLUMNS. - ; Assume that the wavelength binning is the same as for the objects - ; in log-wavelength. - - starflux = readfits(thisfile, shdr,/silent) - if n_elements(starflux) LE 1 then begin - splog, 'Looking for a bspline structure ', thisfile - bspline_set = mrdfits(thisfile, 1, shdr, /silent) - endif else begin - starloglam0 = sxpar(shdr, 'COEFF0') - stardloglam0 = sxpar(shdr, 'COEFF1') - endelse - endif - - if (NOT keyword_set(bspline_set) AND NOT keyword_set(starflux) AND $ - NOT keyword_set(starloglam0)) then begin - message, 'Either EIGENFILE or STARFLUX,STARLOGLAM0 must be set' - endif - - if (keyword_set(stardloglam)) then begin - message, 'Object wavelength spacing and STARDLOGLAM must be the same' - endif - - ndim = size(starflux, /n_dimen) - dims = size(starflux, /dimens) - npixstar = dims[0] - if (ndim EQ 0) then nstar = 0 $ - else if (ndim EQ 1) then nstar = 1 $ - else nstar = dims[1] - - ; Trim to specified columns - if (keyword_set(nstar)) then begin - if (n_elements(columns) NE 0) then starflux = starflux[*,columns] $ - else columns = lindgen(nstar) - endif - - ;---------- - ; Add more eigen-templates that represent polynomial terms. - - if (keyword_set(npoly) AND keyword_set(starflux)) then begin - starflux = [ [starflux], [poly_array(npixstar,npoly)] ] - endif else if (keyword_set(npoly)) then begin - starflux = poly_array(npixobj,npoly) - endif - - ;---------- - ; Compute the redshift difference between the first pixel of the object - ; spectra and the template. - - poffset = 0 - if keyword_set(starloglam0) then poffset = (objloglam0 - starloglam0) / objdloglam - - ;---------- - ; Compute the redshifts - - if keyword_set(bspline_set) then begin - ; call the QSO composite fit with multiplicative polynomials - - starset = bspline_set - starset.xmin = (starset.xmin - objloglam0) / objdloglam - starset.xmax = (starset.xmax - objloglam0) / objdloglam - starset.fullbkpt = (starset.fullbkpt - objloglam0) / objdloglam - - zans = zcompute_qso(objflux, objivar, starset, starflux, poffset=poffset, $ - pmin=pmin, pmax=pmax, nfind=nfind, width=width, $ - plottitle=plottitle, zans_fixed=zans_fixed, _EXTRA=EXTRA) - endif else begin - ; Mask any pixels on the templates where the first template contains zeros - starmask = starflux[*,0] NE 0 - zans = zcompute(objflux, objivar, starflux, starmask, poffset=poffset, $ - pmin=pmin, pmax=pmax, nfind=nfind, width=width, $ - plottitle=plottitle, zans_fixed=zans_fixed, _EXTRA=EXTRA) - endelse - - ;---------- - ; Convert redshift (and error) from pixels to the conventional dimensionless - ; value. Do not modify any errors that are less than zero, since those - ; can be used as just warning flags from the fit. - -; ASB: change to disallow negative-model stellar fits before the ZWARNING stage: -; indx = where(zans.dof GT 0, npeak) - indx = where((zans.dof GT 0) and ((n_elements(columns) NE 1) or (zans.theta[0] GT 0.)), npeak) - if (npeak GT 0) then $ - zans[indx].z = 10.^(objdloglam * zans[indx].z) - 1. - - jndx = where(zans.dof GT 0 and zans.z_err GE 0) - if (jndx[0] NE -1) then $ - zans[jndx].z_err = $ - alog(10d) * objdloglam * zans[jndx].z_err * (1 + zans[jndx].z) - - ;---------- - ; Copy valid peaks into the output structure - - result = replicate(sp1d_struct(), nfind, nobj) - if (npeak GT 0) then begin - result[indx].z = zans[indx].z - result[indx].z_err = zans[indx].z_err - result[indx].rchi2 = zans[indx].chi2 / (zans[indx].dof > 1) - result[indx].dof = zans[indx].dof - ntheta = n_elements(zans[0].theta) - result[indx].theta[0:ntheta-1] = zans[indx].theta - result[indx].theta_covar[0:ntheta-1,0:ntheta-1] = zans[indx].theta_covar - if (keyword_set(eigenfile)) then $ - result[indx].tfile = fileandpath(thisfile) - for icol=0, n_elements(columns)-1 do $ - result[indx].tcolumn[icol] = columns[icol] - if (keyword_set(npoly)) then result.npoly = npoly - endif - - return, result -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/zfitmax.pro b/pro/spec1d/zfitmax.pro deleted file mode 100644 index e56ac8073..000000000 --- a/pro/spec1d/zfitmax.pro +++ /dev/null @@ -1,71 +0,0 @@ -;------------------------------------------------------------------------------ -; Fit the maximum of YARR -function zfitmax, yarr, xarr, xguess=xguess, width=width, xerr=xerr, ypeak=ypeak - - npts = n_elements(yarr) - if (NOT keyword_set(xarr)) then xarr = findgen(npts) - if (NOT keyword_set(xguess)) then begin - ypeak = max(yarr, imax) - xguess = xarr[imax] - endif else begin - junk = min(abs(xarr - xguess), indx) - ypeak = yarr[indx[0]] - endelse - if (NOT keyword_set(width)) then width = 1 - - ; Set return values in the event of a bad fit - xerr = 0.0 - - ; Insist that there be at least 1 point to the left and right of XGUESS. - junk = where(xarr LT xguess, nleft) - junk = where(xarr GT xguess, nright) - if (nleft EQ 0 OR nright EQ 0) then $ - return, xguess - - xleft = xguess - width - xright = xguess + width - indx = where(xarr GE xleft AND xarr LE xright, ct) - if (ct LT 3) then $ - return, xguess - -; if (!version.release LT '5.4') then begin -; coeff = poly_fit(xarr[indx]-xguess, yarr[indx], 2, $ -; yfit, junk, junk, corrm) -; endif else begin -; coeff = poly_fit(xarr[indx]-xguess, yarr[indx], 2, $ -; yfit=yfit, covar=corrm, /double) -; endelse -; xbest = -0.5 * coeff[1] / coeff[2] + xguess -; xerr = - 0.5 * sqrt(corrm[1,1]) / coeff[2] $ -; + 0.5 * coeff[1] * sqrt(corrm[2,2]) / (coeff[2])^2 - - ; Replace above with SVDFIT, and it should work with IDL 5.3 or 5.4. - ; The above code gave wrong XERR from IDL 5.4 due to changes in POLY_FIT(). - ndegree = 3 - coeff = svdfit(xarr[indx]-xguess, yarr[indx], ndegree, $ - yfit=yfit, sigma=corrsig, /double) - yerror = sqrt(total( (yarr[indx]-yfit)^2 / (n_elements(indx)-ndegree) )) - xbest = -0.5 * coeff[1] / coeff[2] + xguess - xerr = - 0.5 * corrsig[1] / coeff[2] $ - + 0.5 * coeff[1] * corrsig[2] / (coeff[2])^2 - xerr = xerr * yerror ; Rescale by the apparent errors in Y - ; Would be equiv. to SVDFIT(WEIGHTS=REPLICATE(1.,N_ELEMENTS(INDX))/YERROR) - - ; Insist that XBEST is a maximum (not a minimum) - if (coeff[2] GE 0) then $ - return, xguess - - ; Insist that the maximum is in the fitting range, and not out of bounds - if (xbest LT xleft OR xbest GT xright) then $ - return, xguess - -; psigma = sqrt( total((xarr[indx] - xbest)^2 * yfit) / total(yfit) ) ; ??? - ypeak = poly(xbest-xguess, coeff) -;xtmp = min(xarr[indx]) + 0.1*findgen(50) -;plot,xarr[indx], yarr[indx],/yno,ps=-1 -;djs_oplot, xtmp, poly(xtmp-xguess,coeff), color='red' -;djs_oplot, [xbest], [ypeak], ps=4,color='red' - - return, xbest -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/zplot.pro b/pro/spec1d/zplot.pro deleted file mode 100644 index 92b7d48f7..000000000 --- a/pro/spec1d/zplot.pro +++ /dev/null @@ -1,282 +0,0 @@ -;------------------------------------------------------------------------------ -pro zplot_circle, radius, label=label, ltheta=ltheta, _EXTRA=KeywordsForPlot - - if (n_elements(radius) GT 1) then begin - for i=0, n_elements(radius)-1 do begin - if (keyword_set(label)) then $ - zplot_circle, radius[i], label=label[i], ltheta=ltheta, $ - _EXTRA=KeywordsForPlot $ - else $ - zplot_circle, radius[i], ltheta=ltheta, _EXTRA=KeywordsForPlot - endfor - return - endif - - nsamp = 100 ; Number of samples for half the circle - theta = 180. * findgen(nsamp) / (nsamp * !radeg) - xplot = radius[0] * cos(theta) - yplot = radius[0] * sin(theta) - xplot = [xplot, reverse(xplot), xplot[0]] - yplot = [yplot, -yplot, yplot[0]] - djs_oplot, xplot, yplot, _EXTRA=KeywordsForPlot - - if (keyword_set(label) AND NOT keyword_set(ltheta)) then ltheta = 90. - if (n_elements(ltheta) EQ 1) then begin - if (NOT keyword_set(label)) then begin - label = strtrim(string(radius[0]),2) - ; Trim trailing zeros from this string if they're after a decimal point - if (strpos(label,'.') NE -1) then begin - ipos = strlen(label) - 1 - while (ipos GT 0 AND strmid(label,ipos,1) EQ '0') do begin - label = strmid(label,0,ipos) - ipos = ipos - 1 - endwhile - endif - endif - - xplot = cos(ltheta / !radeg) $ - * (radius[0] + 0.01*(!x.crange[1]-!x.crange[0])) - yplot = sin(ltheta / !radeg) $ - * (radius[0] + 0.01*(!y.crange[1]-!y.crange[0])) - align = sin(0.5 * ltheta / !radeg) - djs_xyouts, xplot, yplot, 'z=' + label, align=align - endif - - return -end -;------------------------------------------------------------------------------ -pro zplot_exclude, theta, ramid=ramid - - if (NOT keyword_set(ramid)) then ramid = 0 - nplot = 40 - maxrad = sqrt( (max(abs(!x.crange)))^2 + (max(abs(!y.crange)))^2 ) - - xplot = cos((theta - ramid) / !radeg) - yplot = sin((theta - ramid) / !radeg) - - for i=0, nplot-1 do begin - rfac = i * maxrad / nplot - djs_oplot, rfac*xplot, rfac*yplot, linestyle=2, _EXTRA=KeywordsForPlot - endfor - djs_oplot, [0, rfac*xplot[0]], [0, rfac*yplot[0]] - djs_oplot, [0, rfac*xplot[1]], [0, rfac*yplot[1]] - - return -end -;------------------------------------------------------------------------------ -pro zplot_exclude_galaxy, _EXTRA=extra - - ; The Galactic plane crosses the equatorial plane at RA= 102.86, 282.86 - zplot_exclude, 102.86 + [-15,15], _EXTRA=extra - zplot_exclude, 282.86 + [-15,15], _EXTRA=extra - - return -end -;------------------------------------------------------------------------------ -pro zplot_label, ramid=ramid - - xplot = [!x.crange[1], 0, !x.crange[0], 0] - yplot = [0, !y.crange[1], 0, !y.crange[0]] - for i=0, n_elements(xplot)-1 do begin - theta = (atan(yplot[i], xplot[i]) * !radeg - ramid) / 15. ; in hours - if (theta LT 0) then theta = theta + 24. - if (xplot[i] EQ 0) then align = 0.5 $ - else if (xplot[i] GT 0) then align = 0.0 $ - else align = 1.0 - if (yplot[i] GT 0) then thisy = 1.01 * yplot[i] $ - else if (yplot[i] LT 0) then thisy = 1.04 * yplot[i] $ - else thisy = yplot[i] - djs_xyouts, xplot[i], thisy, $ - ' '+strtrim(string(round(theta)),2)+'^h ', align=align - endfor - - return -end -;------------------------------------------------------------------------------ -pro zplot, decrange=decrange - - ramid = 0.0 - if (NOT keyword_set(decrange)) then decrange = [-5,5] - - ; Exclude plates 202,260,326 -; plate = [265,266,267,268,269,270,271,274,275,276,277,278,279, $ -; 280,281,282,283,284,285,291,292,293,297,298,299, $ -; 300,301,302,303,304,305,306,307,308,309, $ -; 310,311,312,313,314,315, $ -; 338,339,340,341,342,343,344,345,346,348, $ -; 373,374,379,380,381,382,383,384,385,386,387, $ -; 388,389,390,391,392,393,394,395,396,397,398,399, $ -; 400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,415,416] - platelist, plist=plist - ii = where(plist.deccen GE decrange[0] AND plist.deccen LE decrange[1] $ - AND plist.qsurvey AND strtrim(plist.status1d,2) EQ 'Done') - - readspec, plist[ii].plate, mjd=plist[ii].mjd, plug=plug, zans=zans - - xplot = zans.z * cos((plug.ra - ramid) / !radeg) - yplot = zans.z * sin((plug.ra - ramid) / !radeg) - - nobj = n_elements(zans) - targets = strarr(nobj) - - for iobj=0L, nobj-1L do $ - targets[iobj] = sdss_flagname('TARGET',plug[iobj].primtarget, $ - /silent, /concat)+' ' - if (tag_exist(plug,'BOSS_TARGET1')) then $ - for iobj=0L, nobj-1L do $ - targets[iobj] = sdss_flagname('BOSS_TARGET1', $ - plug[iobj].boss_target1, /silent, /concat)+' ' - - spec_gal = strtrim(zans.class,2) EQ 'GALAXY' AND zans.zwarning EQ 0 - spec_qso = strtrim(zans.class,2) EQ 'QSO' AND zans.zwarning EQ 0 - - imain = where(spec_gal AND strmatch(targets,'*GALAXY *') $ - OR strmatch(targets,'*GALAXY_BIG *') $ - OR strmatch(targets,'*GALAXY_BRIGHT_CORE *'), nmain) - qlrg1 = strmatch(targets,'*GALAXY_RED *') $ - OR strmatch(targets,'*GALAXY_RED_II *') $ - OR strmatch(targets,'*GAL_LOZ *') - qlrg2 = strmatch(targets,'*GAL_HIZ *') $ - OR strmatch(targets,'*GAL_CMASS*') - ilrg = where(spec_gal AND (qlrg1 OR qlrg2), nlrg) - iqso = where(spec_qso AND strmatch(targets,'*QSO_*'), nqso) - - !x.margin = [4,4] - !y.margin = [2,2] - - ;---------- - ; Plot to z=0.15 - - dfpsplot, 'zplot-main.ps', /color, /square - zmax = 0.151 -; !p.region = [-zmax,zmax,-zmax,zmax] - plot, [0], [0], /nodata, xrange=[-zmax,zmax], yrange=[-zmax,zmax], $ - xstyle=1, ystyle=1, xticks=1, yticks=1, $ - xtickname=[' ',' '], ytickname=[' ',' '], $ - title=string(nmain, format='("EQUATORIAL STRIPE (", i6, " galaxies)")') - if (nmain GT 1) then $ - djs_oplot, xplot[imain], yplot[imain], ps=3 - if (nlrg GT 1) then $ - djs_oplot, xplot[ilrg], yplot[ilrg], ps=3, color='red' - if (nqso GT 1) then $ - djs_oplot, xplot[iqso], yplot[iqso], ps=3, color='blue' - zplot_circle, [0.05, 0.10], ltheta=70 - zplot_circle, [0.15] - zplot_exclude_galaxy, ramid=ramid - zplot_label, ramid=ramid - dfpsclose - - ;---------- - ; Plot to z=0.80 - - dfpsplot, 'zplot-lrg.ps', /color, /square - zmax = 0.801 - plot, [0], [0], /nodata, xrange=[-zmax,zmax], yrange=[-zmax,zmax], $ - xstyle=1, ystyle=1, xticks=1, yticks=1, $ - xtickname=[' ',' '], ytickname=[' ',' '], $ - title=string(nlrg, format='("EQUATORIAL STRIPE (", i6, " LRGs)")') - if (nmain GT 1) then $ - djs_oplot, xplot[imain], yplot[imain], ps=3 - if (nlrg GT 1) then $ - djs_oplot, xplot[ilrg], yplot[ilrg], ps=1, symsize=0.25, color='red' - if (nqso GT 1) then $ - djs_oplot, xplot[iqso], yplot[iqso], ps=3, symsize=0.25, color='blue' - zplot_circle, [0.20, 0.40, 0.60], ltheta=70 - zplot_circle, [0.80] - zplot_exclude_galaxy, ramid=ramid - zplot_label, ramid=ramid - dfpsclose - - ;---------- - ; Select a subsample of LRGs such that it is more uniform with redshift - ; Cap at MAXPER galaxies within a 0.025 bin. - ; Select those objects not at random, but closest to Dec=0 - qsamp = bytarr(nlrg) - dz = 0.025 - maxper = 500 - dec_ref = -1. ; deg - for zthis=0.0, 1.0, dz do begin - ii = where(zans[ilrg].z GE zthis AND zans[ilrg].z LT zthis+dz, nn) - if (nn GT 0) then begin - if (nn LT maxper) then qsamp[ii] = 1B $ -; else qsamp[ii[ (sort(randomu(1234,nn)))[0L:maxper-1L] ]] = 1B - else qsamp[ii[ (sort(abs(zans[ilrg[ii]].plug_dec - dec_ref)))[0L:maxper-1L] ]] = 1B - endif - endfor - isamp = ilrg[where(qsamp, nsamp)] - - ;---------- - ; Plot to z=0.80 subsampled - - dfpsplot, 'zplot-lrg-samp.ps', /color, /square - zmax = 0.801 - plot, [0], [0], /nodata, xrange=[-zmax,zmax], yrange=[-zmax,zmax], $ - xstyle=5, ystyle=5, xticks=1, yticks=1, $ - xtickname=[' ',' '], ytickname=[' ',' '], $ - title=string(nlrg, format='("EQUATORIAL STRIPE (", i6, " LRGs)")') - if (nmain GT 1) then $ - djs_oplot, xplot[imain], yplot[imain], ps=3 - if (nsamp GT 1) then $ - djs_oplot, xplot[isamp], yplot[isamp], ps=1, symsize=0.25, color='red' - if (nqso GT 1) then $ - djs_oplot, xplot[iqso], yplot[iqso], ps=3, symsize=0.25, color='blue' - zplot_circle, [0.20, 0.40, 0.60], ltheta=70 - zplot_circle, [0.80] - zplot_exclude_galaxy, ramid=ramid - zplot_label, ramid=ramid - dfpsclose - - ;---------- - ; Plot to z=4 - - dfpsplot, 'zplot-qso.ps', /color, /square - zmax = 4.01 - plot, [0], [0], /nodata, xrange=[-zmax,zmax], yrange=[-zmax,zmax], $ - xstyle=1, ystyle=1, xticks=1, yticks=1, $ - xtickname=[' ',' '], ytickname=[' ',' '], $ - title=string(nqso, format='("EQUATORIAL STRIPE (", i6, " QSOs)")') - if (nmain GT 1) then $ - djs_oplot, xplot[imain], yplot[imain], ps=3 - if (nlrg GT 1) then $ - djs_oplot, xplot[ilrg], yplot[ilrg], ps=3, color='red' - if (nqso GT 1) then $ - djs_oplot, xplot[iqso], yplot[iqso], ps=1, $ - symsize=zans[iqso].z/8., color='blue' - zplot_circle, [1,2,3], ltheta=70 - zplot_circle, [4] - zplot_exclude_galaxy, ramid=ramid - zplot_label, ramid=ramid - dfpsclose - - ;---------- - ; Plot to z=5 - - zmin = 0.01 - logzmin = alog10(zmin) - xplot = (alog10(zans.z>zmin)-logzmin) * cos((plug.ra - ramid) / !radeg) - yplot = (alog10(zans.z>zmin)-logzmin) * sin((plug.ra - ramid) / !radeg) - - dfpsplot, 'zplot-log.ps', /color, /square - logzmax = alog10(5.01) - lzrange = logzmax - logzmin - plot, [0], [0], /nodata, xrange=[-lzrange,lzrange], $ - yrange=[-lzrange,lzrange], $ - xstyle=1, ystyle=1, xticks=1, yticks=1, $ - xtickname=[' ',' '], ytickname=[' ',' '], $ - title=string(nmain+nlrg+nqso, format='("EQUATORIAL STRIPE (", i6, " objects)")') - if (nmain GT 1) then $ - djs_oplot, xplot[imain], yplot[imain], ps=3 - if (nlrg GT 1) then $ - djs_oplot, xplot[ilrg], yplot[ilrg], ps=3, color='red' - if (nqso GT 1) then $ - djs_oplot, xplot[iqso], yplot[iqso], ps=1, $ - symsize=zans[iqso].z/8., color='blue' - zplot_circle, alog10([0.03,0.1,0.5,2])-logzmin, $ - label=['0.03', '0.1','0.5','2'], ltheta=70 - zplot_circle, alog10(5)-logzmin, label='5', ltheta=70 - zplot_exclude_galaxy, ramid=ramid - zplot_label, ramid=ramid - dfpsclose - - return -end diff --git a/pro/spec1d/zplot_pie.pro b/pro/spec1d/zplot_pie.pro deleted file mode 100644 index e0fab2335..000000000 --- a/pro/spec1d/zplot_pie.pro +++ /dev/null @@ -1,127 +0,0 @@ -;+ -; NAME: -; zplot_pie -; -; PURPOSE: -; Plot pie diagram -; -; CALLING SEQUENCE: -; zplot_pie, [ rarange=, decrange=, zmax=, deltaz=, plotfile ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; rarange - RA range; default to [130.,250] deg -; decrange - Declination range; default to [-0.5,0.5] -; zmax - Maximum redshift; default to 0.15 -; deltaz - Spacing for labeling the redshift; default to 0.05 -; plotfile - Plot file; default to 'zplot.ps' -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; Plot the pie diagram for the Southern stripe (stripe 82): -; IDL> zplot, rarange=[-45,50] -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; dfpsclose -; dfpsplot -; platelist -; readspec -; -; REVISION HISTORY: -; 14-May-2007 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro zplot_pie, rarange=rarange, decrange=decrange, zmax=zmax, deltaz=deltaz, $ - plotfile=plotfile - - if (n_elements(rarange) NE 2) then rarange = [130.,250] - if (n_elements(decrange) NE 2) then decrange = [-0.5,0.5] - if (NOT keyword_set(zmax)) then zmax = 0.15 - if (NOT keyword_set(deltaz)) then deltaz = 0.05 - if (NOT keyword_set(plotfile)) then plotfile = 'zplot.ps' - - psym = 6 - symsize = 0.25 - - ramid = 0.5*(rarange[0]+rarange[1]) - ra0 = ramid - 90. - - platelist, plist=plist - ii = where(plist.dec GT decrange[0]-3. AND plist.dec LT decrange[1]+3. $ - AND plist.qsurvey AND strtrim(plist.status1d,2) EQ 'Done') - readspec, plist[ii].plate, mjd=plist[ii].mjd, plug=plug, zans=zans - - xplot = zans.z * cos((plug.ra - ra0) / !radeg) - yplot = zans.z * sin((plug.ra - ra0) / !radeg) - - ; Select all galaxies in this pie slice - spec_gal = strtrim(zans.class,2) EQ 'GALAXY' AND zans.zwarning EQ 0 - if (rarange[0] GE 0) then $ - qgoodra = zans.plug_ra GE rarange[0] AND zans.plug_ra LE rarange[1] $ - else $ - qgoodra = zans.plug_ra GE rarange[0]+360 OR zans.plug_ra LE rarange[1] - iplot = where(spec_gal AND zans.z LT zmax AND qgoodra $ - AND zans.plug_dec GT decrange[0] AND zans.plug_dec LT decrange[1]) - - !x.margin = [4,4] - !y.margin = [2,2] - thick = 2 - csize = 1.2 - - dfpsplot, plotfile, /square - plot, [0], [0], /nodata, xrange=[-zmax,zmax], yrange=[-zmax,zmax], $ - xstyle=5, ystyle=5 - oplot, xplot[iplot], yplot[iplot], psym=psym, symsize=symsize, $ - thick=thick, charthick=thick - - ravec = rarange[0]-ra0 + 0.1*findgen(10.*(rarange[1]-rarange[0])+1) - xtmp = [0,zmax * cos(ravec/!radeg),0] - ytmp = [0,zmax * sin(ravec/!radeg),0] - oplot, xtmp, ytmp, thick=thick - - dra = 20. - for thisra = 0., 359.99, dra do $ - if (thisra GE rarange[0] AND thisra LE rarange[1]) then $ - xyouts, 1.02*zmax*cos((thisra-ra0)/!radeg), $ - 1.02*zmax*sin((thisra-ra0)/!radeg), $ - textoidl(strtrim(string(thisra,format='(i3)'),2)+'^o'), $ - align=0.5, orient=thisra-ramid, charthick=thick, charsize=csize - for thisra = 0., 359.99, dra do $ - if (thisra GE rarange[0] AND thisra LE rarange[1]) then $ - oplot, [0.95,1]*zmax*cos((thisra-ra0)/!radeg), $ - [0.95,1]*zmax*sin((thisra-ra0)/!radeg), thick=thick - dra = 5. - for thisra = 0., 359.99, dra do $ - if (thisra GE rarange[0] AND thisra LE rarange[1]) then $ - oplot, [0.975,1]*zmax*cos((thisra-ra0)/!radeg), $ - [0.975,1]*zmax*sin((thisra-ra0)/!radeg), thick=thick - - theta = (rarange[0]-ra0)/!radeg - xyouts, 0.5*deltaz*cos(theta) + 0.06*zmax*sin(theta), $ - 0.5*deltaz*sin(theta) - 0.06*zmax*cos(theta), $ - 'z=', $ - align=0.5, orient=rarange[0]-ramid+90., charthick=thick, charsize=csize - for thisz=deltaz, deltaz*floor(zmax/deltaz), deltaz do $ - xyouts, thisz*cos(theta) + 0.06*zmax*sin(theta), $ - thisz*sin(theta) - 0.06*zmax*cos(theta), $ - strtrim(string(thisz,format='(f4.2)'),2), $ - align=0.5, orient=rarange[0]-ramid+90., charthick=thick, charsize=csize - for thisz=deltaz, deltaz*floor(zmax/deltaz), deltaz do $ - oplot, thisz*cos(theta) + [0,-0.05*zmax*sin(theta)], $ - thisz*sin(theta) + [0,0.05*zmax*cos(theta)], $ - thick=thick - dfpsclose - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/ztweak.pro b/pro/spec1d/ztweak.pro deleted file mode 100644 index 3d92c37e1..000000000 --- a/pro/spec1d/ztweak.pro +++ /dev/null @@ -1,171 +0,0 @@ -;+ -; NAME: -; ztweak -; -; PURPOSE: -; Tweak redshifts -; -; CALLING SEQUENCE: -; ztweak, platefile -; -; INPUTS: -; platefile - Plate file from spectro-2D -; -; OPTIONAL INPUTS: -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $IDLSPEC2D_DIR/etc/TEMPLATEFILES -; -; PROCEDURES CALLED: -; spec_append -; struct_addtags() -; sxpar() -; veldisp -; -; REVISION HISTORY: -; 19-Jul-2000 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -pro ztweak, platefile - - eigenfile = 'spEigenVstnd.fits' - if (n_elements(eigendir) EQ 0) then $ - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - -platefile = 'spPlate-0306-51690.fits' -djs_readcol, '/home/schlegel/idlspec2d/etc/regress1d_all.dat', $ - chicplate, junk, chicfiberid, chicz, chicclass, format='(L,L,L,F,A)' -ii=where(chicplate EQ 306) -chicz=chicz[ii] -chicclass=chicclass[ii] - - zstruct1 = create_struct( $ - 'class' , '', $ - 'z' , 0.0, $ - 'chi2' , 0.0, $ - 'dof' , 0.0 ) - zstruct = replicate(zstruct1, 640) - zstruct.class = chicclass - zstruct.z = chicz - - ;---------- - ; Read the 2D output file - - objflux = mrdfits(platefile,0,hdr) - npix = sxpar(hdr, 'NAXIS1') - nobj = sxpar(hdr, 'NAXIS2') - objivar = mrdfits(platefile,1) - andmask = mrdfits(platefile,2) - ormask = mrdfits(platefile,3) - - ;---------- - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - - objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - - ;---------- - ; Determine the wavelength mapping for the object spectra, - ; which are the same for all of them. - - objloglam0 = sxpar(hdr, 'COEFF0') - objdloglam = sxpar(hdr, 'COEFF1') - objloglam = objloglam0 + lindgen(npix) * objdloglam - - ;---------- - ; Read the velocity standard template file. - ; (Assume that the wavelength binning is the same as for the objects - ; in log-wavelength.) - - starflux = readfits(djs_filepath(eigenfile, root_dir=eigendir), shdr) - starloglam0 = sxpar(shdr, 'COEFF0') - stardloglam = sxpar(shdr, 'COEFF1') - ndim = size(starflux, /n_dimen) - dims = size(starflux, /dimens) - starloglam = starloglam0 + stardloglam * dindgen(dims[0]) - if (ndim EQ 1) then nstar = 1 $ - else nstar = dims[1] - - ;--------------------------------------------------------------------------- - ; LOOP OVER EACH OBJECT - ;--------------------------------------------------------------------------- - - for iobj=0, nobj-1 do begin -print,'OBJECT ', iobj - - ;---------- - ; Construct a list of test redshifts near the initial redshift guess - - zinit = zstruct[iobj].z -ntest = 20 - ztest = zinit + (lindgen(ntest) - ntest/2) * 20. / 3.e5 ; space at 20 km/s - rchi2arr = fltarr(ntest) - - ;---------- - ; Loop over each possible redshift, and redshift the spectrum of - ; the velocity standard. - ; Create a mask where the star does not overlap the object. - - for itest=0, ntest-1 do begin - - newstarflux = fltarr(npix,nstar) - for istar=0, nstar-1 do begin - combine1fiber, starloglam + alog10(1 + ztest[itest]), $ - starflux[*,istar], $ - newloglam=objloglam, newflux=tmpflux, maxiter=0 - newstarflux[*,istar] = tmpflux - if (istar EQ 0) then newstarmask = tmpflux NE 0 - endfor - - ;---------- - ; Construct template as the star flux + emission lines + poly terms - -npoly = 3 - - ; Convert from air wavelengths in Ang to log-10 wavelength in vacuum, - ; redshifted to the test redshift. - - linelist = [4861.3632, 4958.911, 5006.843, 6548.05, 6562.801, $ - 6583.45, 6716.44, 6730.82] - vaclist = linelist - airtovac, vaclist - vaclist = alog10(vaclist * (1 + ztest[itest])) -linesig = 2.e-4 ; Set the width to sigma = 2pix = 140 km/s (FWHM = 323 km/s) - for iline=0, n_elements(vaclist)-1 do $ - newstarflux = [ [newstarflux], $ - [gaussian(objloglam,[1.,vaclist[iline],linesig])] ] - - if (keyword_set(npoly)) then $ - newstarflux = [ [newstarflux], [poly_array(npix,npoly)] ] - - ;---------- - ; Compute the chi^2 - - zans = zcompute(objflux[*,iobj], objivar[*,iobj], $ - newstarflux, newstarmask, nfind=1, pmin=0, pmax=0) - rchi2arr[itest] = zans.chi2 / (zans.dof + (zans.dof EQ 0)) - - endfor - - ;---------- - ; Determine the best reduced chi^2 - - bestval = min(rchi2arr, ibest) - if (bestval NE 0) then zstruct[iobj].z = ztest[ibest] - - endfor -stop - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/ztweak2.pro b/pro/spec1d/ztweak2.pro deleted file mode 100644 index 4b30c2094..000000000 --- a/pro/spec1d/ztweak2.pro +++ /dev/null @@ -1,153 +0,0 @@ -;+ -; NAME: -; ztweak2 -; -; PURPOSE: -; Tweak redshifts -; -; CALLING SEQUENCE: -; ztweak, platefile -; -; INPUTS: -; platefile - Plate file from spectro-2D -; -; OPTIONAL INPUTS: -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $IDLSPEC2D_DIR/etc/TEMPLATEFILES -; -; PROCEDURES CALLED: -; spec_append -; struct_addtags() -; sxpar() -; veldisp -; -; REVISION HISTORY: -; 19-Jul-2000 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -pro ztweak2, platefile - -platefile = 'spPlate-0321-51612-60sec.fits' - - zstruct1 = create_struct( $ - 'class' , '', $ - 'z' , 0.0, $ - 'chi2' , 0.0, $ - 'dof' , 0.0 ) - zstruct = replicate(zstruct1, 640) - - ;---------- - ; Read the 2D output file - - objflux = mrdfits(platefile,0,hdr) - npix = sxpar(hdr, 'NAXIS1') - nobj = sxpar(hdr, 'NAXIS2') - objivar = mrdfits(platefile,1) - andmask = mrdfits(platefile,2) - ormask = mrdfits(platefile,3) - plug = mrdfits(platefile,5) - - ;---------- - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - - objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - -zstruct.z = plug.expl / 3.e5 -j = where(plug.expl NE -999 AND plug.expl NE 0) -zstruct[j].class = 'STAR' - - ;---------- - ; Determine the wavelength mapping for the object spectra, - ; which are the same for all of them. - - objloglam0 = sxpar(hdr, 'COEFF0') - objdloglam = sxpar(hdr, 'COEFF1') - - ;---------- - ; Read the template files - ; Assume that the wavelength binning is the same as for the objects - ; in log-wavelength. - - starflux = objflux[*,93] - starivar = objivar[*,93] - stardloglam = objdloglam -zstar = 33.9 / 3.e5 ; redshift of this star ??? - starloglam0 = objloglam0 - alog10(1 + zstar) ; ??? - - ;---------- - ; Construct template as the star flux + emission lines + polynomial terms - -npstar = n_elements(starflux) -npoly = 4 - -; linelist = [4861.3632, 4958.911, 5006.843, 6548.05, 6562.801, $ -; 6583.45, 6716.44, 6730.82] -; ; Convert from air wavelengths in Angstroms to log-10 wavelength in vacuum -; vaclist = linelist -; airtovac, vaclist -; vaclist = alog10(vaclist) -;linesig = 2.e-4 ; Set the width to sigma = 2pix = 140 km/s (FWHM = 323 km/s) -; for iline=0, n_elements(vaclist)-1 do $ -; starflux = [ [starflux], $ -; [gaussian(starloglam,[1.,vaclist[iline],linesig])] ] - - if (keyword_set(npoly)) then $ - starflux = [ [starflux], [poly_array(npstar,npoly)] ] - - ;---------- - ; Compute the redshift difference between the first pixel of the object - ; spectra and each template - - zoffset = (objloglam0 - starloglam0) / objdloglam - - ;---------- - ; Compute the redshifts - - for iobj=0, nobj-1 do begin -print, 'Object #', iobj - if (zstruct[iobj].class EQ 'STAR') then begin - zpixobj = alog10(1 + zstruct[iobj].z) / objdloglam - znew = computez(objflux[*,iobj], objivar[*,iobj], $ - starflux, starivar NE 0, zoffset=zoffset, $ - zmin=long(zpixobj-5), zmax=long(zpixobj+5)) - zstruct[iobj].z = 10.^(znew.z * objdloglam) - 1. - zstruct[iobj].chi2 = znew.chi2 - zstruct[iobj].dof = znew.dof - endif - endfor -stop -j=where(zstruct.class EQ 'STAR') -splot,plug[j].expl,3e5*zstruct[j].z-plug[j].expl,ps=3,yr=[-40,40] -j1=where(zstruct.class EQ 'STAR' AND plug.fiberid LE 320) -j2=where(zstruct.class EQ 'STAR' AND plug.fiberid GT 320) -soplot,plug[j1].expl,3e5*zstruct[j1].z-plug[j1].expl,color='red',ps=3 - -zdiff=(zstruct.z-chicz)*3e5 -jj=where(zstruct.class EQ 'GALAXY' AND $ - zdiff LT 0 AND zdiff GT -400 AND chicz LT 0.5, ct) - -get_lun, olun -openw, olun, 'eigeninputs.dat' -printf, olun, 'Plate MJD Fib z ' -printf, olun, '----- ----- ---- ---------' -for i=0, ct-1 do $ - printf, olun, 306, 51690, jj[i]+1, zstruct[jj[i]].z, $ - format='(i5,i7,i5,f12.6)' -close, olun -free_lun, olun - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/ztweak_gal.pro b/pro/spec1d/ztweak_gal.pro deleted file mode 100644 index 601c6fd17..000000000 --- a/pro/spec1d/ztweak_gal.pro +++ /dev/null @@ -1,249 +0,0 @@ -;+ -; NAME: -; ztweak_gal -; -; PURPOSE: -; Tweak galaxy redshifts -; -; CALLING SEQUENCE: -; ztweak_gal, platefile, [subsamp= ] -; -; INPUTS: -; platefile - Plate file from spectro-2D -; -; OPTIONAL INPUTS: -; subsamp - ??? -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; Make sure we use exactly the same object pixels for eadh test z ??? -; Convovle the emission lines just like the stars - incl. instrumental -; response??? -; -; DATA FILES: -; $IDLSPEC2D_DIR/etc/TEMPLATEFILES -; -; PROCEDURES CALLED: -; spec_append -; struct_addtags() -; sxpar() -; veldisp -; -; REVISION HISTORY: -; 19-Jul-2000 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -pro ztweak_gal, platefile, subsamp=subsamp - - eigenfile = 'spEigenVstnd*.fits' - if (n_elements(eigendir) EQ 0) then $ - eigendir = concat_dir(getenv('IDLSPEC2D_DIR'), 'templates') - - if (NOT keyword_set(subsamp)) then subsamp = 10 - -platefile = 'spPlate-0306-51690.fits' -djs_readcol, getenv('IDLSPEC2D_DIR') + '/etc/regress1d_all.dat', $ - chicplate, junk, chicfiberid, chicz, chicclass, format='(L,L,L,F,A)' -ii=where(chicplate EQ 306) -chicz=chicz[ii] -chicclass=chicclass[ii] - - zstruct1 = create_struct( $ - 'class' , '', $ - 'z' , 0.0, $ - 'chi2' , 0.0, $ - 'dof' , 0.0 ) - zstruct = replicate(zstruct1, 640) - zstruct.class = chicclass - zstruct.z = chicz - - ;---------- - ; Read the 2D output file - - objflux = mrdfits(platefile,0,hdr) - npix = sxpar(hdr, 'NAXIS1') - nobj = sxpar(hdr, 'NAXIS2') - objivar = mrdfits(platefile,1) - andmask = mrdfits(platefile,2) - ormask = mrdfits(platefile,3) - - ;---------- - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - - objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - - ;---------- - ; Determine the wavelength mapping for the object spectra, - ; which are the same for all of them. - - objloglam0 = sxpar(hdr, 'COEFF0') - objdloglam = sxpar(hdr, 'COEFF1') - objloglam = objloglam0 + lindgen(npix) * objdloglam - - ;---------- - ; Find the most recent template file matching EIGENFILE - - allfiles = findfile(djs_filepath(eigenfile, root_dir=eigendir), count=ct) - if (ct EQ 0) then $ - message, 'Unable to find EIGENFILE matching '+eigenfile - thisfile = allfiles[ (reverse(sort(allfiles)))[0] ] - splog, 'Selecting EIGENFILE=', thisfile - - ;---------- - ; Read the velocity standard template file. - ; (Assume that the wavelength binning is the same as for the objects - ; in log-wavelength.) - - starflux = readfits(thisfile, shdr) - starloglam0 = sxpar(shdr, 'COEFF0') - stardloglam = sxpar(shdr, 'COEFF1') - ndim = size(starflux, /n_dimen) - dims = size(starflux, /dimens) - npstar = dims[0] - starloglam = starloglam0 + stardloglam * dindgen(npstar) - if (ndim EQ 1) then nstar = 1 $ - else nstar = dims[1] - - ;--------------------------------------------------------------------------- - ; GENERATE OVER-SAMPLED EIGENSPECTRA - ;--------------------------------------------------------------------------- - - nbigpix = npstar * subsamp - bigloglam = rebin(starloglam, nbigpix) - - bigstarflux = fltarr(nbigpix,nstar) - for istar=0, nstar-1 do begin - combine1fiber, starloglam, starflux[*,istar], $ - newloglam=bigloglam, newflux=tmpflux, maxiter=0 - bigstarflux[*,istar] = tmpflux - if (istar EQ 0) then bigstarmask = tmpflux NE 0 - endfor - - ;---------- - ; Construct template as the star flux + emission lines + poly terms - -npoly = 3 - - ; Convert from air wavelengths in Ang to log-10 wavelength in vacuum. - - linelist = [4861.3632, 4958.911, 5006.843, 6548.05, 6562.801, $ - 6583.45, 6716.44, 6730.82] - vaclist = linelist - airtovac, vaclist - vaclist = alog10(vaclist) -linesig = 2.e-4 ; Set the width to sigma = 2pix = 140 km/s (FWHM = 323 km/s) - for iline=0, n_elements(vaclist)-1 do $ - bigstarflux = [ [bigstarflux], $ - [gaussian(bigloglam,[1.,vaclist[iline],linesig])] ] - - if (keyword_set(npoly)) then $ - bigstarflux = [ [bigstarflux], [poly_array(nbigpix,npoly)] ] - - ;---------- - ; Compute the redshift difference between the first pixel of the object - ; spectra and the template. - ; This is for the original sampling, not the over-sampled template. - - poffset = (objloglam0 - starloglam0) / objdloglam - - ;--------------------------------------------------------------------------- - ; LOOP OVER EACH OBJECT - ;--------------------------------------------------------------------------- - - for iobj=0, nobj-1 do begin -print,'OBJECT ', iobj - - ; PINIT = the galaxy pixel that should correspond to the first - ; template pixel; this is a fractional value - - zinit = zstruct[iobj].z - pinit = - poffset + alog10(1. + zinit) / objdloglam - - ; P1VEC = the pixel number in the over-sampled template that corresponds - ; to the first galaxy pixel; this is an integer, but could be negative - -ntest = 100 - p1vec = long(-pinit * subsamp + (lindgen(ntest) - ntest/2)) - zvec = 10.d^( (float(-p1vec)/subsamp + poffset) * objdloglam) - 1 -; The above doesn't quite seem to be correct - always off by 1 pix??? -zvec = dblarr(ntest) - - ;---------- - ; Loop over each possible redshift, and redshift the spectrum of - ; the velocity standard. - - rchi2arr = fltarr(ntest) - - for itest=0, ntest-1 do begin - - ; P1 = First pixel in over-sampled template to use - ; INDX = Indicies of the over-sampled template to use; - ; these will be separated by SUBSAMP - ; Q1 = First pixel in object spectrum to use - ; Q2 = Last pixel in object spectrum to use - ; NPSMALL = Number of pixels for trimmed object and template; - ; if this is negative, then the two spectra do not overlap - - p1 = p1vec[itest] - - if (p1 GE 0) then begin - q1 = 0L - endif else begin - q1 = (-p1+subsamp-1) / subsamp ; integer-valued - p1 = p1 + subsamp + q1 * subsamp ; now positive-valued - endelse - - npsmall = ((nbigpix - p1) / subsamp) < (npix - q1) ; integer-valued - - if (npsmall GT 1) then begin - - indx = p1 + subsamp * lindgen(npsmall) -zvec[itest] = 10d^(objloglam[q1] - bigloglam[indx[0]]) - 1 ; This is correct??? - - ;---------- - ; Compute the chi^2 - - q2 = q1 + npsmall - 1 - zans = zcompute(objflux[q1:q2,iobj], objivar[q1:q2,iobj], $ - bigstarflux[indx,*], nfind=1, pmin=0, pmax=0) - rchi2arr[itest] = zans.chi2 / (zans.dof + (zans.dof EQ 0)) - endif - - endfor - - ;---------- - ; Determine the best reduced chi^2 - - bestval = min(rchi2arr, ibest) - if (bestval NE 0) then zstruct[iobj].z = zvec[ibest] -splot, zvec, rchi2arr - - endfor -stop - -djs_readcol, getenv('IDLSPEC2D_DIR') + '/templates/eigeninput_gal.dat', $ - plate, mjd, fiberid, zold, format='(L,L,L,F)' -ii = fiberid-1 -splot,zold,(zstruct[ii].z-zold)*3e5,ps=4,syms=0.4 -openw, olun, 'eigeninput_gal.dat', /get_lun -for j=0, n_elements(ii)-1 do $ - printf, olun, plate[j], mjd[j], fiberid[j], zstruct[ii[j]].z, $ - format='(i5, i7, i5, f12.6)' -close, olun - -vdiff = (zstruct[ii].z-zold)*3e5 -vdiff = vdiff - median(vdiff) -ibad = where(abs(vdiff) GT 100) -print,fiberid[ibad] - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec1d/ztweak_star.pro b/pro/spec1d/ztweak_star.pro deleted file mode 100644 index 274f2fc6d..000000000 --- a/pro/spec1d/ztweak_star.pro +++ /dev/null @@ -1,145 +0,0 @@ -;+ -; NAME: -; ztweak_star -; -; PURPOSE: -; Find the best-fit Elodie spectrum to a set of spectra. -; -; CALLING SEQUENCE: -; ztweak_star, [ filename, zmin=, zmax=, /overwrite ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; filename - Yanny parameter file with at least the entries PLATE, -; MJD, FIBERID, and optionally CZ. -; Default to "$IDLSPEC2D_DIR/templates/eigeninput_star.par". -; zmin - Minimum redshift to consider; default to -0.00333 -; (-1000 km/sec). -; zmax - Minimum redshift to consider; default to +0.00333 -; (+1000 km/sec). -; overwrite - If set, then overwrite the input file with CZ replaced -; with the best-fit value. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; No attempt is made to precisely match the instrumental dispersion -; of the SDSS spectra and the Elodie spectra. The Elodie spectra are -; smoothed to an instrumental dispersion of 70 km/sec. -; -; PROCEDURES CALLED: -; elodie_best() -; readspec -; struct_addtags() -; yanny_free -; yanny_read -; -; REVISION HISTORY: -; 03-Apr-2002 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -pro ztweak_star, filename, zmin=zmin, zmax=zmax, overwrite=overwrite - - snmax = 100 - if (NOT keyword_set(zmin)) then zmin = -0.00333 - if (NOT keyword_set(zmax)) then zmax = 0.00333 - cspeed = 2.99792458d5 - - ;---------- - ; Read the input spectra - - if (NOT keyword_set(filename)) then $ - filename = filepath('eigeninput_star.par', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='templates') - yanny_read, filename, pdat, hdr=hdr, enums=enums, stnames=stnames - slist = *pdat[0] - yanny_free, pdat - nobj = n_elements(slist) - - ;---------- - ; If CZ doesn't exist in the structure, then add it as all zeros. - - if ((where(tag_names(slist) EQ 'CZ'))[0] EQ -1) then $ - slist = struct_addtags(slist, replicate( {cz: 0.0}, nobj) ) - -; ??? -;ii=where(strtrim(slist.class,2) EQ 'K') -;slist=slist[ii] -;slist=slist[0:9] -;slist.plate = 406 -;slist.mjd = 51869 -;slist.fiberid = [9,18,21,34,39,53,62,64,80,102] -;nobj = n_elements(slist) - readspec, slist.plate, slist.fiberid, mjd=slist.mjd, $ - flux=objflux, invvar=objivar, $ - andmask=andmask, ormask=ormask, plugmap=plugmap, loglam=objloglam, /align - - ;---------- - ; Insist that all of the requested spectra exist - - imissing = where(plugmap.fiberid EQ 0, nmissing) - if (nmissing GT 0) then begin - for i=0, nmissing-1 do $ - print, 'Missing plate=', slist[imissing[i]].plate, $ - ' mjd=', slist[imissing[i]].mjd, $ - ' fiber=', slist[imissing[i]].fiberid - message, string(nmissing) + ' missing object(s)' - endif - - ;---------- - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - - objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - - if (keyword_set(snmax)) then begin - ifix = where(objflux^2 * objivar GT snmax^2) - if (ifix[0] NE -1) then objivar[ifix] = (snmax/objflux[ifix])^2 - endif - - ;---------- - ; Find the best-fit Elodie star for each spectrum - - objdloglam = objloglam[1] - objloglam[0] - res = elodie_best(objflux, objivar, $ - objloglam0=objloglam[0], objdloglam=objdloglam, zmin=zmin, zmax=zmax) - - ;---------- - ; Print the differences between the input velocities and best-fit ones - - cz_in = slist.cz - cz_out = res.elodie_z * cspeed - cz_diff = cz_out - cz_in - - splog, file='ztweak_star.log' - splog, 'PLATE MJD FIBER CZ_IN CZ_OUT CZ_DIFF SPTYPE ' - splog, '----- ----- ----- ------- ------- ------- --------' - for iobj=0, nobj-1 do $ - splog, slist[iobj].plate, slist[iobj].mjd, slist[iobj].fiberid, $ - cz_in[iobj], cz_out[iobj], cz_diff[iobj], res[iobj].elodie_sptype, $ - format='(i5,i7,i6,3f8.1," ",a8)' - splog, /close - - ;---------- - ; Optionally overwrite the input file. - ; Do not use the input STRUCTS from YANNY_READ, since we may have - ; modified the structure. - - if (keyword_set(overwrite)) then begin - slist.cz = cz_out - yanny_write, filename, ptr_new(slist), hdr=hdr, enums=enums, $ - stnames=stnames - endif - -stop - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/arcsky_fit.pro b/pro/spec2d/arcsky_fit.pro deleted file mode 100644 index 01df69be4..000000000 --- a/pro/spec2d/arcsky_fit.pro +++ /dev/null @@ -1,43 +0,0 @@ - -function arcsky_fit, x, y, numarcs, arccoeff, skycoeff, $ - function_name=function_name, yfit=yfit - if (N_params() LT 5) then begin - print, 'function arcsky_fit(xarc, yarc, arccoeff, xsky, ysky, ' - print, ' ycoeff, function_name=function_name)' - print,'function_name can be flegendre or fchebyshev' - return, -1 - endif - - - if(NOT keyword_set(function_name)) then $ - function_name = 'flegendre' - - if(function_name EQ 'flegendre') then begin - arclegarr = flegendre(x, arccoeff) - skylegarr = flegendre(x, skycoeff) -; -; Zero out these components so the arc lines don't affect the -; second set of coefficients -; - skylegarr[0:numarcs-1,*] = 0.0 - legarr = [[arclegarr],[skylegarr]] - endif - if(function_name EQ 'fchebyshev') then begin - arclegarr = fchebyshev(x, arccoeff) - skylegarr = fchebyshev(x, skycoeff) - skylegarr[0:numarcs-1,*] = 0.0 - legarr = [[arclegarr],[skylegarr]] - endif - - beta = transpose(y # legarr) - - alpha = transpose(legarr)#legarr - - svdc, alpha, w, u, v, /double - - res = svsol(u, w, v, beta, /double) - - yfit = legarr # res - return, res -end - diff --git a/pro/spec2d/atvspec.pro b/pro/spec2d/atvspec.pro deleted file mode 100644 index 252f2f559..000000000 --- a/pro/spec2d/atvspec.pro +++ /dev/null @@ -1,134 +0,0 @@ - -;+ -; NAME: -; atvspec -; -; PURPOSE: -; Display cutouts of all raw images around specified wavelengths -; -; CALLING SEQUENCE: -; atvspec, plate, fiberid, wave=, [ mjd=, xsize=, ysize=, $ -; psym=, symsize=, color=, _EXTRA=, /verbose ] -; -; INPUTS: -; plate - Plate (scalar) -; fiberid - Fiber ID (scalar) -; wave - Wavelength(s) at which to display raw images (vacuum Ang) -; -; OPTIONAL INPUTS: -; mjd - MJD (scalar) -; xsize - X dimension of cutout of raw images; default to 50 pix -; ysize - Y dimension of cutout of raw images; default to 50 pix -; psym - PSYM keyword for ATVPLOT; default to 6 (squares) -; symsize - SYMSIZE keyword for ATVPLOT; default to 3 -; color - COLOR keyword for ATVPLOT; default to 'red' -; verbose - If set, then print X,Y locations on CCD -; _EXTRA - Keywords for ATV, such as /ALIGN or /STRETCH -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Display cutouts from the raw images, with each row of cutouts -; corresponding to each WAVE and each column corresponding to the -; exposure numbers. Assume wavelengths < 6000 Ang should display -; the blue images, and > 6000 Ang should dislpay the red images. -; -; EXAMPLES: -; Display raw images around two bright sky lines -; IDL> atvspec, 3686, 1, mjd=55268, wave=[5578.8876,6302.0466] -; -; BUGS: -; -; REVISION HISTORY: -; 08-Jul-2010 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro atvspec, plate, fiberid, mjd=mjd, wave=wavecen, $ - xsize=xsize1, ysize=ysize1, psym=psym1, symsize=symsize1, color=color1, $ - verbose=verbose, _EXTRA=KeywordsForATV - - if (n_params() LT 2 OR keyword_set(wavecen) EQ 0) then begin - print, 'Must set PLATE, FIBERID, WAVECEN' - return - endif - - ; Set defaults - nwave = n_elements(wavecen) - if (keyword_set(xsize1)) then xsize = xsize1 else xsize = 50L - if (keyword_set(ysize1)) then ysize = ysize1 else ysize = 50L - if (keyword_set(psym1)) then psym = psym1 else psym = 6 - if (keyword_set(symsize1)) then symsize = symsize1 else symsize = 3 - if (keyword_set(color1)) then color = color1 else color = 'red' - - readonespec, plate, fiberid, mjd=mjd, wave=wave, ximg=ximg, $ - framehdr=framehdr, expnum=expnum - nfile = n_elements(expnum) - if (nfile EQ 0) then begin - print, 'No files found' - return - end - cameras = strarr(nfile) - for i=0, nfile-1 do cameras[i] = strtrim(sxpar(*framehdr[i], 'CAMERAS'),2) - mjds = strarr(nfile) - for i=0, nfile-1 do mjds[i] = strtrim(sxpar(*framehdr[i], 'MJD'),2) - filename = strarr(nfile) - for i=0, nfile-1 do begin - filename[i] = 'sdR-'+cameras[i] $ - +'-'+string(expnum[i],format='(i8.8)')+'.fit*' - filename[i] = filepath(filename[i], root_dir=getenv('BOSS_SPECTRO_DATA'), $ - subdir=mjds[i]) - filename[i] = findfile(filename[i], count=ct) - endfor - - explist = expnum[uniq(expnum,sort(expnum))] - nexp = n_elements(explist) - - npix = (size(wave,/dimens))[0] - xvec = lindgen(npix) - - bigimg = fltarr(nexp*xsize,nwave*ysize) - - xlist = fltarr(nexp,nwave) - ylist = fltarr(nexp,nwave) - lastfile = '' - for iexp=0, nexp-1 do begin - for iwave=0, nwave-1 do begin - thiscam = wavecen[iwave] LT 6000 ? 'b' : 'r' - j = (where(strmid(cameras,0,1) EQ thiscam $ - AND expnum EQ explist[iexp], ct))[0] - if (ct GT 0 AND keyword_set(filename[j>0])) then begin - if (filename[j] NE lastfile) then $ - sdssproc, filename[j], thisimg, /silent, /nopixflat, /nopixmask $ - else $ - lastfile = filename[j] - thisdim = size(thisimg,/dimens) - - ; Find the x,y location on this particular image - linterp, wave[*,j], xvec, wavecen[iwave], ycen - linterp, xvec, ximg[*,j], ycen, xcen - if (keyword_set(verbose)) then $ - print, fileandpath(filename[j]), ' X=', xcen, ' Y=', ycen - x0 = ((round(xcen) - xsize/2) > 0) < (thisdim[0]-xsize) - x1 = x0 + xsize-1 - y0 = ((round(ycen) - ysize/2) > 0) < (thisdim[1]-ysize) - y1 = y0 + ysize-1 - bigimg[iexp*xsize:(iexp+1)*xsize-1,iwave*ysize:(iwave+1)*ysize-1] $ - = thisimg[x0:x1,y0:y1] - xlist[iexp,iwave] = xcen - x0 + iexp*xsize - ylist[iexp,iwave] = ycen - y0 + iwave*ysize - endif - endfor - endfor - - atv, bigimg, _EXTRA=KeywordsForATV - atvplot, xlist, ylist, psym=psym, symsize=symsize, color=color - for iexp=1, nexp-1 do $ - atvplot, iexp*xsize+0.5+[0,0], [-0.5,nwave*ysize-0.5], color=color - for iwave=1, nwave-1 do $ - atvplot, [-0.5,nexp*xsize-0.5], iwave*ysize+0.5+[0,0], color=color - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/batchpbs.pro b/pro/spec2d/batchpbs.pro deleted file mode 100644 index 7024f1891..000000000 --- a/pro/spec2d/batchpbs.pro +++ /dev/null @@ -1,315 +0,0 @@ -;+ -; NAME: -; batchpbs -; -; PURPOSE: -; Batch process Spectro-2D and Spectro-1D reductions based upon -; already-built plan files. -; -; CALLING SEQUENCE: -; batchpbs, [ platenums, topdir=, run2d=, run1d=, platestart=, plateend=, $ -; mjd=, mjstart=, mjend=, upsvers2d=, upsvers1d=, /zcode, queue=, /skip2d, $ -; /clobber, /nosubmit ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; platenums - Plate numbers to reduce; default to '*' -; topdir - Optional override value for the environment variable -; $BOSS_SPECTRO_REDUX. Used as input directory for generating -; batch scripts and written into the scripts themselves. -; run2d - Optional override value for the environment variable $RUN2D -; run1d - Optional override value for the environment variable $RUN1D -; platestart - Starting plate number. -; plateend - Ending plate number. -; mjd - MJD dates to reduce; default to all. -; Select based upon the MJD of the combine plan file, and -; reduce data from all nights needed for that combined plate+MJD. -; mjstart - Starting MJD dates to reduce. -; mjend - Ending MJD dates to reduce. -; upsvers2d - If set, then do a "setup idlspec2d $UPSVERS2D" on the -; remote machine before executing Spectro-2D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; upsvers1d - If set, then do a "setup idlspec2d $UPSVERS2D" on the -; remote machine before executing Spectro-1D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; zcode - If set, run Zcode in auto mode. -; makepng - If set, run plate_spec_image png generation code. -; queue - If set, sets the submit queue. -; skip2d - If set, then skip the Spectro-2D reductions. -; skip1d - If set, then skip the Spectro-1D reductions. -; clobber - If set, then reduce all specified plates. The default is -; to not reduce plates where the script file already exists. -; nosubmit - If set, generate script file but don't submit to queue -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; This is currently written to batch all Spectro-2D and Spectro-1D -; reductions, without the option of doing only one or the other. -; -; Script files are generated for partial reductions of a plate, -; although those jobs are not submitted. It would be less confusing -; to not make those script files. -; -; REVISION HISTORY: -; 17-Jan-2010 Written by D. Schlegel, LBL -; 03-Oct-2012 Added /skip1d option, Stephen Bailey LBL -;- -;------------------------------------------------------------------------------ -pro batchpbs, platenums1, topdir=topdir1, run2d=run2d1, run1d=run1d1, $ - platestart=platestart, plateend=plateend, $ - mjd=mjd, mjstart=mjstart, mjend=mjend, $ - upsvers2d=upsvers2d, upsvers1d=upsvers1d, $ - rawdata_dir=rawdata_dir, $ - boss_spectro_redux=boss_spectro_redux, $ - zcode=zcode, makepng=makepng, $ - queue=queue, skip2d=skip2d, skip1d=skip1d, clobber=clobber, nosubmit=nosubmit - - if (size(platenums1,/tname) EQ 'STRING') then platenums = platenums1 $ - else if (keyword_set(platenums1)) then $ - platenums = string(platenums1,format='(i4.4)') $ - else platenums = '*' - - ;---------- - ; Determine the top-level of the output directory tree - - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - splog, 'Setting TOPDIR=', topdir - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - splog, 'Setting RUN1D=', run1d - - topdir2d = djs_filepath('', root_dir=topdir, subdir=run2d) - if (keyword_set(run1d)) then run1dstr = ',run1d="'+run1d+'"' $ - else run1dstr = '' - if (keyword_set(run2d)) then run2dstr = ',run2d="'+run2d+'"' $ - else run2dstr = '' - - ;---------- - ; Create list of plate directories - ; Limit the list to only those specified by PLATENUMS,PLATESTART,PLATEEND - - platedirs = get_mjd_dir(topdir2d, mjd=platenums, mjstart=platestart, $ - mjend=plateend) - - if (NOT keyword_set(platedirs[0])) then begin - splog, 'No directories found' - return - endif - ndir = n_elements(platedirs) - - ;---------- - ; In each plate directory, find all 'spPlancomb*.par' files - - for idir=0L, ndir-1L do begin - planfile = findfile( $ - djs_filepath('spPlancomb*.par', root_dir=topdir2d, $ - subdir=platedirs[idir]), count=nfile) - - for ifile=0, nfile-1 do begin - yanny_read, planfile[ifile], hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - - ; Decide if THISMJD is within the bounds specified by MJD,MJSTART,MJEND - if (mjd_match(thismjd, mjd=mjd, mjstart=mjstart, mjend=mjend)) $ - then begin - if (keyword_set(platelist)) then begin - platelist = [platelist, platedirs[idir]] - planlist = [planlist, planfile[ifile]] - endif else begin - platelist = platedirs[idir] - planlist = planfile[ifile] - endelse - endif - endfor - endfor - - nplate = n_elements(planlist) - if (nplate EQ 0) then begin - splog, 'No plan files found' - return - endif - -; Do not use spPlancomb files that only have a subset of the MJDs !!!??? - - ;---------- - ; For each combine plan file, generate the IDL script files - - fullscriptfile = strarr(nplate) - plateid = lonarr(nplate) - mjd_beg = lonarr(nplate) - mjd_end = lonarr(nplate) - - fq = "'" - qbatch = bytarr(nplate) + 1B ; default to reduce all plates - for iplate=0, nplate-1 do begin - ; Find all relevant 2D plan files - yanny_read, planlist[iplate], hdr=hdr - planfile2d = yanny_par(hdr, 'planfile2d') - plateid[iplate] = yanny_par(hdr, 'plateid') - mjd = yanny_par(hdr, 'MJD') - platemjd = string(plateid[iplate],format='(i4.4)') + '-' $ - + string(mjd,format='(i5.5)') - platefile = 'spPlate-'+platemjd+'.fits' - - ; Track the beginning and ending MJD going into this plate - mjd_beg[iplate] = min(strmid(planfile2d,14,5)) - mjd_end[iplate] = max(strmid(planfile2d,14,5)) - - ; Split the combine plan file name into a directory and file name - planfilecomb = fileandpath(planlist[iplate], path=pathcomb) - - ; Construct the name of the batch file - ; "script" -> "redux" to make names fit within qstat column widths - ; fullscriptfile[iplate] = djs_filepath('script-'+platemjd, $ - fullscriptfile[iplate] = djs_filepath('redux-'+platemjd, $ - root_dir=pathcomb) - if (keyword_set(skip2d)) then fullscriptfile[iplate] += '-' + run1d - - ; Write the batch file - if (keyword_set(clobber) EQ 0) then $ - qbatch[iplate] = file_test(fullscriptfile[iplate]) EQ 0 - - if (qbatch[iplate]) then begin - openw, olun, fullscriptfile[iplate], /get_lun - printf, olun, '# Auto-generated batch file '+systime() - printf, olun, '#PBS -l nodes=1' - printf, olun, '#PBS -l walltime=48:00:00' - printf, olun, '#PBS -W umask=0022' - printf, olun, '#PBS -V' - printf, olun, '#PBS -j oe' - ; set queue if asked - if (keyword_set(queue)) then $ - printf, olun, '#PBS -q ' + queue - printf, olun, 'cd $PBS_O_WORKDIR' - - ; Override environment variables if requested - if (keyword_set(rawdata_dir)) then begin - printf, olun, 'export BOSS_SPECTRO_DATA='+rawdata_dir - endif - if (keyword_set(boss_spectro_redux)) then begin - printf, olun, 'export BOSS_SPECTRO_REDUX='+boss_spectro_redux - endif - - printf, olun, '' - printf, olun, '#- Echo commands to make debugging easier' - printf, olun, 'set -o verbose' - - ; printf, olun, '' - ; printf, olun, '#- Dump job environment for debugging' - ; envlog = 'env-'+platemjd+'.txt' - ; printf, olun, 'printenv > '+envlog - - if topdir ne getenv('BOSS_SPECTRO_REDUX') then begin - printf, olun, '' - printf, olun, '#- Override default BOSS_SPECTRO_REDUX' - printf, olun, 'export BOSS_SPECTRO_REDUX='+topdir - endif - - printf, olun, '' - printf, olun, '#- The real work' - if (keyword_set(skip2d) EQ 0) then begin - ; Set up requested code version - if (keyword_set(upsvers2d)) then $ - printf, olun, 'setup idlspec2d '+upsvers2d - - ; Create sorted photoPlate files - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'sdss_plate_sort,"'+planfile2d[i]+'"'+fq+' | idl' - - ; Run Spectro-2D - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'spreduce2d,"'+planfile2d[i]+'"'+fq+' | idl' - printf, olun, 'echo '+fq+'spcombine_v5,"'+planfilecomb+'"'+fq+' | idl' - endif - - ; Run Spectro-1D - if (keyword_set(skip1d) EQ 0) then begin - if (keyword_set(upsvers1d)) then $ - printf, olun, 'setup idlspec2d '+upsvers1d - printf, olun, 'echo '+fq+'spreduce1d,"'+platefile+'"'+run1dstr+fq+' | idl' - endif - - ; Run Zcode - if (keyword_set(zcode)) then begin - printf, olun, '' - printf, olun, 'setup runz' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a -G -t GAL' - endif - - ; splog, "run1d is ", run1d - ; splog, "run2d is ", run2d - - ; Make pretty pictures - ; pipe through inverse grep to remove 1000 - ; "Number of Polygon vertices exceeds limit for some PostScript printers" - ; messages. - if (keyword_set(makepng)) then begin - idlcmd = "plate_spec_image, " + string(plateid[iplate],format='(i4.4)') - idlcmd += ", mjd=" + string(mjd,format='(i5.5)') - idlcmd += ", run1d='" + run1d + "'" - idlcmd += ", run2d='" + run2d + "'" - idlcmd += ", /silent" - printf, olun, '' - printf, olun, '#- Make pretty pictures' - printf, olun, 'idl -e "' + idlcmd + '" 2>&1 | grep -v "Number of Polygon vertices"' - endif - - close, olun - free_lun, olun - endif - endfor - - ;---------- - ; Do not reduce any plan files that are only partial reductions - ; (If we tried, then we would get multiple instances of SPREDUCE2D - ; running on the same data.) - ; Make this decision regardless of the values of CLOBBER. - - for i=0, nplate-1 do begin - indx = where(plateid EQ plateid[i] AND mjd_end GT mjd_end[i] $ - AND mjd_beg LE mjd_end[i], ct) - if (ct GT 0) then qbatch[i] = 0B - endfor - - ;---------- - ; Trim the plate list to only those needing reductions - - ibatch = where(qbatch, nbatch) - if (nbatch EQ 0) then begin - splog, 'All plates have been reduced' - return - endif - - ;---------- - ; Submit jobs to the PBS queue - - for i=0L, nbatch-1L do begin - thisfile = fileandpath(fullscriptfile[ibatch[i]], path=thispath) - if (keyword_set(thispath)) then cd, thispath, current=origdir - if keyword_set(nosubmit) then begin - splog, 'Generated '+thisfile+' but not submitting to queue' - endif else begin - splog, 'Submitting '+thisfile - spawn, 'qsub '+thisfile - endelse - endfor - cd, origdir - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/batchpbs_queue.pro b/pro/spec2d/batchpbs_queue.pro deleted file mode 100644 index 6d0511cd3..000000000 --- a/pro/spec2d/batchpbs_queue.pro +++ /dev/null @@ -1,380 +0,0 @@ -;+ -; NAME: -; batchpbs_queue -; -; PURPOSE: -; Batch process Spectro-2D and Spectro-1D reductions based upon -; already-built plan files. -; -; CALLING SEQUENCE: -; batchpbs_queue, [ platenums, topdir=, run2d=, run1d=, platestart=, plateend=, $ -; mjd=, mjstart=, mjend=, upsvers2d=, upsvers1d=, /zcode, queue=, /skip2d, $ -; /clobber, /nosubmit ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; platenums - Plate numbers to reduce; default to '*' -; topdir - Optional override value for the environment variable -; $BOSS_SPECTRO_REDUX. Used as input directory for generating -; batch scripts and written into the scripts themselves. -; run2d - Optional override value for the environment variable $RUN2D -; run1d - Optional override value for the environment variable $RUN1D -; platestart - Starting plate number. -; plateend - Ending plate number. -; mjd - MJD dates to reduce; default to all. -; Select based upon the MJD of the combine plan file, and -; reduce data from all nights needed for that combined plate+MJD. -; mjstart - Starting MJD dates to reduce. -; mjend - Ending MJD dates to reduce. -; upsvers2d - If set, then do a "module switch idlspec2d idlspec2d/$UPSVERS2D" on the -; remote machine before executing Spectro-2D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; upsvers1d - If set, then do a "module switch idlspec2d idlspec2d/$UPSVERS2D" on the -; remote machine before executing Spectro-1D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; upsversutils - If set, then do a "module switch idlutils idlutils/$IDLUTILS" on the -; remote machine. -; zcode - If set, run Zcode in auto mode. -; queue - If set, sets the submit queue. -; skip2d - If set, then skip the Spectro-2D reductions. -; skip1d - If set, then skip the Spectro-1D reductions. -; clobber - If set, then reduce all specified plates. The default is -; to not reduce plates where the script file already exists. -; pbs_batch - If set, collect the pbs_nodes into an PBS array -; pbs_nodes - If set, collect the pbs qsub commands into pbs_nodes script files -; in order to run on clusters without node sharing (ie Utah). -; default to node sharing, and keep the pbs qsub commands in the -; individual plate-mjd SCRIPT files. -; pbs_ppn - If set, use #PBS -l nodes=1:ppn=pbs_ppn, otherwise -; default to #PBS -l nodes=1 -; pbs_alloc - If set, use #PBS -A pbs_alloc, otherwise -; default to none -; pbs_walltime - If set, use #PBS -l walltime=pbs_walltime, otherwise -; default to none -; hard - If set, use hard-coded node/proc files instead of load balancing (default). -; ember - If set, then setup the defaults for the ember cluster at the University of Utah: -; pbs_nodes = 12 (for 12 nodes, without node sharing) -; pbs_ppn = 12 (12 processors per node) -; pbs_alloc = 'bolton-em' (Bolton's account, limited to 12 nodes: ember253-260,377-380) -; pbs_walltime='336:00:00' -; kingspeak - If set, then setup the defaults for the kingspeak cluster at the University of Utah: -; pbs_nodes = 16 (for 12 nodes, without node sharing) -; pbs_ppn = 16 (16 processors per node) -; ;pbs_alloc = 'sdss-kp' (SDSS account, limited to 30 nodes: kp01-kp30) -; pbs_walltime='336:00:00' -; riemann - If set, then setup the defaults for the riemann cluster at LBL: -; pbs_nodes = 12 (for 12 nodes, without node sharing) -; pbs_ppn = 8 (8 processors per node) -; pbs_walltime='336:00:00' -; nosubmit - If set, generate script file but don't submit to queue -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; This is currently written to batch all Spectro-2D and Spectro-1D -; reductions, without the option of doing only one or the other. -; -; Script files are generated for partial reductions of a plate, -; although those jobs are not submitted. It would be less confusing -; to not make those script files. -; -; REVISION HISTORY: -; 17-Jan-2010 Written by D. Schlegel, LBL -; 03-Oct-2012 Added /skip1d option, Stephen Bailey LBL -; 20-Sep-2013 Added pbs_queue support, Joel Brownstein Utah -;- -;------------------------------------------------------------------------------ -pro batchpbs_queue, platenums1, topdir=topdir1, run2d=run2d1, run1d=run1d1, $ - platestart=platestart, plateend=plateend, $ - mjd=mjd, mjstart=mjstart, mjend=mjend, $ - upsvers2d=upsvers2d, upsvers1d=upsvers1d, upsversutils=upsversutils, $ - rawdata_dir=rawdata_dir, $ - boss_spectro_redux=boss_spectro_redux, $ - zcode=zcode, $ - queue=queue, skip2d=skip2d, skip1d=skip1d, clobber=clobber, hard=hard, $ - pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_alloc=pbs_alloc, pbs_batch=pbs_batch, $ - pbs_walltime=pbs_walltime, riemann=riemann, ember=ember, kingspeak=kingspeak, nosubmit=nosubmit - - if (size(platenums1,/tname) EQ 'STRING') then platenums = platenums1 $ - else if (keyword_set(platenums1)) then $ - platenums = string(platenums1,format='(i4.4)') $ - else platenums = '*' - - ;---------- - ; Determine the top-level of the output directory tree - - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - splog, 'Setting TOPDIR=', topdir - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - splog, 'Setting RUN1D=', run1d - - topdir2d = djs_filepath('', root_dir=topdir, subdir=run2d) - if (keyword_set(run1d)) then run1dstr = ',run1d="'+run1d+'"' $ - else run1dstr = '' - if (keyword_set(run2d)) then run2dstr = ',run2d="'+run2d+'"' $ - else run2dstr = '' - - ;---------- - ; Do some pbs management: - - if keyword_set(riemann) then begin - if not keyword_set(pbs_nodes) then pbs_nodes=28 - if not keyword_set(pbs_ppn) then pbs_ppn=8 - if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - endif else if keyword_set(ember) then begin - pbs_batch = 1L - if not keyword_set(pbs_nodes) then pbs_nodes=12 - if not keyword_set(pbs_ppn) then pbs_ppn=12 - if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - if not keyword_set(pbs_a) then pbs_a = 'bolton-em' - endif else if keyword_set(kingspeak) then begin - pbs_batch = 1L - if not keyword_set(pbs_nodes) then pbs_nodes=30 - if not keyword_set(pbs_ppn) then pbs_ppn=16 - if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - ;if not keyword_set(pbs_a) then pbs_a = 'bolton-em' - endif - - ;---------- - ; Create list of plate directories - ; Limit the list to only those specified by PLATENUMS,PLATESTART,PLATEEND - - platedirs = get_mjd_dir(topdir2d, mjd=platenums, mjstart=platestart, $ - mjend=plateend) - - if (NOT keyword_set(platedirs[0])) then begin - splog, 'No directories found' - return - endif - ndir = n_elements(platedirs) - - ;---------- - ; In each plate directory, find all 'spPlancomb*.par' files - - for idir=0L, ndir-1L do begin - planfile = findfile( $ - djs_filepath('spPlancomb*.par', root_dir=topdir2d, $ - subdir=platedirs[idir]), count=nfile) - - for ifile=0, nfile-1 do begin - yanny_read, planfile[ifile], hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - - ; Decide if THISMJD is within the bounds specified by MJD,MJSTART,MJEND - if (mjd_match(thismjd, mjd=mjd, mjstart=mjstart, mjend=mjend)) $ - then begin - if (keyword_set(platelist)) then begin - platelist = [platelist, platedirs[idir]] - planlist = [planlist, planfile[ifile]] - endif else begin - platelist = platedirs[idir] - planlist = planfile[ifile] - endelse - endif - endfor - endfor - - nplate = n_elements(planlist) - if (nplate EQ 0) then begin - splog, 'No plan files found' - return - endif - -; Do not use spPlancomb files that only have a subset of the MJDs !!!??? - - ;---------- - ; For each combine plan file, generate the IDL script files - - fullscriptfile = strarr(nplate) - plateid = lonarr(nplate) - mjd_beg = lonarr(nplate) - mjd_end = lonarr(nplate) - - fq = "'" - qbatch = bytarr(nplate) + 1B ; default to reduce all plates - for iplate=0, nplate-1 do begin - ; Find all relevant 2D plan files - yanny_read, planlist[iplate], hdr=hdr - planfile2d = yanny_par(hdr, 'planfile2d') - plateid[iplate] = yanny_par(hdr, 'plateid') - mjd = yanny_par(hdr, 'MJD') - platemjd = string(plateid[iplate],format='(i4.4)') + '-' $ - + string(mjd,format='(i5.5)') - platefile = 'spPlate-'+platemjd+'.fits' - - ; Track the beginning and ending MJD going into this plate - mjd_beg[iplate] = min(strmid(planfile2d,14,5)) - mjd_end[iplate] = max(strmid(planfile2d,14,5)) - - ; Split the combine plan file name into a directory and file name - planfilecomb = fileandpath(planlist[iplate], path=pathcomb) - - ; Construct the name of the batch file - ; "script" -> "redux" to make names fit within qstat column widths - ; fullscriptfile[iplate] = djs_filepath('script-'+platemjd, $ - fullscriptfile[iplate] = djs_filepath('redux-'+platemjd, $ - root_dir=pathcomb) - if (keyword_set(skip2d)) then fullscriptfile[iplate] += '-' + run1d - - ; Write the batch file - if (keyword_set(clobber) EQ 0) then $ - qbatch[iplate] = file_test(fullscriptfile[iplate]) EQ 0 - - if (qbatch[iplate]) then begin - openw, olun, fullscriptfile[iplate], /get_lun - if not keyword_set(pbs_batch) then begin - printf, olun, '# Auto-generated batch file '+systime() - printf, olun, '#PBS -l nodes=1' - printf, olun, '#PBS -l walltime=48:00:00' - printf, olun, '#PBS -W umask=0022' - printf, olun, '#PBS -V' - printf, olun, '#PBS -j oe' - ; set queue if asked - if (keyword_set(queue)) then printf, olun, '#PBS -q ' + queue - printf, olun, 'cd $PBS_O_WORKDIR' - endif - - ; Override environment variables if requested - if (keyword_set(rawdata_dir)) then begin - printf, olun, 'export BOSS_SPECTRO_DATA='+rawdata_dir - endif - if (keyword_set(boss_spectro_redux)) then begin - printf, olun, 'export BOSS_SPECTRO_REDUX='+boss_spectro_redux - endif - - printf, olun, '' - printf, olun, '#- Echo commands to make debugging easier' - printf, olun, 'set -o verbose' - - ; printf, olun, '' - ; printf, olun, '#- Dump job environment for debugging' - ; envlog = 'env-'+platemjd+'.txt' - ; printf, olun, 'printenv > '+envlog - - if topdir ne getenv('BOSS_SPECTRO_REDUX') then begin - printf, olun, '' - printf, olun, '#- Override default BOSS_SPECTRO_REDUX' - printf, olun, 'export BOSS_SPECTRO_REDUX='+topdir - endif - - printf, olun, '' - printf, olun, '#- The real work' - if (keyword_set(skip2d) EQ 0) then begin - ; Set up requested code version - if (keyword_set(upsvers2d)) then printf, olun, 'module switch idlspec2d idlspec2d/'+upsvers2d - if (keyword_set(upsversutils)) then printf, olun, 'module switch idlutils idlutils/'+upsversutils - - ; Create sorted photoPlate files - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'sdss_plate_sort,"'+planfile2d[i]+'"'+fq+' | idl' - - ; Run Spectro-2D - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'spreduce2d,"'+planfile2d[i]+'"'+fq+' | idl' - printf, olun, 'echo '+fq+'spcombine_v5,"'+planfilecomb+'"'+fq+' | idl' - endif - - ; Run Spectro-1D - if (keyword_set(skip1d) EQ 0) then begin - if keyword_set(skip2d) or (~keyword_set(skip2d) and ~keyword_set(upsvers2d)) then begin - if (keyword_set(upsvers1d)) then printf, olun, 'module switch idlspec2d idlspec2d'+upsvers1d - if (keyword_set(upsversutils)) then printf, olun, 'module switch idlutils idlutils/'+upsversutils - endif - printf, olun, 'echo '+fq+'spreduce1d,"'+platefile+'"'+run1dstr+fq+' | idl' - endif - - ; Run Zcode - if (keyword_set(zcode)) then begin - printf, olun, '' - printf, olun, 'module load runz' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a -G -t GAL' - endif - - ; splog, "run1d is ", run1d - ; splog, "run2d is ", run2d - - ; Make pretty pictures - ;- post-DR9, no longer supported; use spectrawebapp or plotspec instead - ; idlcmd = "plate_spec_image, " + string(plateid[iplate],format='(i4.4)') - ; idlcmd += ", mjd=" + string(mjd,format='(i5.5)') - ; idlcmd += ", run1d='" + run1d + "'" - ; idlcmd += ", run2d='" + run2d + "'" - ; idlcmd += ", /silent" - ; printf, olun, '' - ; printf, olun, '#- Make pretty pictures' - ; printf, olun, 'idl -e "' + idlcmd + '"' - - close, olun - free_lun, olun - endif - endfor - - ;---------- - ; Do not reduce any plan files that are only partial reductions - ; (If we tried, then we would get multiple instances of SPREDUCE2D - ; running on the same data.) - ; Make this decision regardless of the values of CLOBBER. - - for i=0, nplate-1 do begin - indx = where(plateid EQ plateid[i] AND mjd_end GT mjd_end[i] $ - AND mjd_beg LE mjd_end[i], ct) - if (ct GT 0) then qbatch[i] = 0B - endfor - - ;---------- - ; Trim the plate list to only those needing reductions - - ibatch = where(qbatch, nbatch) - if (nbatch EQ 0) then begin - splog, 'All plates have been reduced' - return - endif - scriptfile = fullscriptfile[ibatch] - - ;---------- - ; Submit jobs to the PBS queue - - if keyword_set(pbs_batch) then begin - - pbs_queue, key=key, label='boss pipeline', nodes=pbs_nodes, walltime=pbs_walltime, /create - for i=0L, nbatch-1L do begin - thisfile = fileandpath(scriptfile[i], path=dir) - script = "source "+scriptfile[i] - outfile = scriptfile[i]+".o" - pbs_queue, key=key, dir=dir, script=script, outfile=outfile, /append - endfor - pbs_queue, key=key, /commit, submit=~keyword_set(nosubmit), nosubmit=nosubmit, hard=hard - endif else begin - - for i=0L, nbatch-1L do begin - thisfile = fileandpath(scriptfile[i], path=thispath) - if (keyword_set(thispath)) then cd, thispath, current=origdir - if keyword_set(nosubmit) then begin - splog, 'Generated '+thisfile+' but not submitting to queue' - endif else begin - splog, 'Submitting '+thisfile - spawn, 'qsub '+thisfile - endelse - endfor - cd, origdir - endelse - - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/bbspec_extract.pro b/pro/spec2d/bbspec_extract.pro index 15bcf05b0..a8c9d1c71 100644 --- a/pro/spec2d/bbspec_extract.pro +++ b/pro/spec2d/bbspec_extract.pro @@ -98,7 +98,7 @@ pro bbspec_extract_shiftpsf, pbasis, phdr, psffile, ximg=ximg ; if the PSF is only solved for the first fibers in the first rows if (ihdu EQ 0 AND keyword_set(ximg)) then basis1 = ximg[0:ny-1,0:nfiber-1] - mwrfits, basis1, psffile, hdr1, create=(ihdu EQ 0), /silent + mwrfits_named, basis1, psffile, hdr=hdr1,name='BASIS_'+strtrim(ihdu,2), create=(ihdu EQ 0), /silent endfor return @@ -167,8 +167,8 @@ pro bbspec_extract, image, invvar, flux, fluxivar, basisfile=basisfile, $ ; Write the image file scatimg = fitscatter(image, invvar, ximg, nbundles=nbundles, bundlefibers=bundlefibers) - mwrfits, image - scatimg, imgfile, /create, /silent - mwrfits, invvar, imgfile, /silent + mwrfits_named, image - scatimg, imgfile, name='FLUX', /create, /silent + mwrfits_named, invvar, imgfile, name='IVAR', /silent pyfile = djs_filepath('extract_spectra.py', root_dir=getenv('BBSPEC_DIR'), $ subdir='bin') diff --git a/pro/spec2d/bbspec_pixpsf.pro b/pro/spec2d/bbspec_pixpsf.pro index d7e530c02..e6405114a 100644 --- a/pro/spec2d/bbspec_pixpsf.pro +++ b/pro/spec2d/bbspec_pixpsf.pro @@ -166,12 +166,12 @@ pro bbspec_pixpsf, arcstr, flatstr, pradius=pradius, rradius=rradius, $ sxaddpar, outhdr0, 'NFLUX', ny sxaddpar, outhdr0, 'NSPEC', nfiber sxaddpar, outhdr0, 'PSFPARAM', 'X' - mwrfits, allx, outfile, outhdr0, /create + mwrfits_named, allx, outfile, hdr=outhdr0, name='ALLX' /create sxaddpar, outhdr0, 'PSFPARAM', 'Y' sxdelpar, outhdr0, 'SIMPLE' ; Can't have SIMPLE in extensions - mwrfits, ally, outfile, outhdr0 + mwrfits_named, ally, outfile, hdr=outhdr0, name='ALLY' sxaddpar, outhdr0, 'PSFPARAM', 'LogLam' - mwrfits, loglam, outfile, outhdr0 + mwrfits_named, loglam, outfile, hdr=outhdr0, name='LOGLAM' ; HDU #3 has list of polynomial exponents polydat = replicate(create_struct('IMODEL', 0L, 'XEXP', 0L, 'YEXP', 0L), $ @@ -179,7 +179,7 @@ pro bbspec_pixpsf, arcstr, flatstr, pradius=pradius, rradius=rradius, $ polydat.imodel = lindgen(npoly[0]*npoly[1]) polydat.xexp = (djs_laxisgen(npoly, iaxis=0))[*] polydat.yexp = (djs_laxisgen(npoly, iaxis=1))[*] - mwrfits, polydat, outfile + mwrfits_named, polydat, outfile, name='POLYDAT' ; HDU #4 has the indexing for each fiber ID fibdat = replicate(create_struct('IGROUP', 0L, 'X0', 0.0, 'XSCALE', 0.0, $ @@ -190,11 +190,11 @@ pro bbspec_pixpsf, arcstr, flatstr, pradius=pradius, rradius=rradius, $ fibdat.xscale = 0.001 fibdat.y0 = 0 fibdat.yscale = 0.001 - mwrfits, fibdat, outfile + mwrfits_named, fibdat, outfile, name='FIBDAT' ; HDU #5 has the PSF images indexed [X,Y,IMODEL,IGROUP] mkhdr, outhdr1, psfimg_all - mwrfits, psfimg_all, outfile + mwrfits_named, psfimg_all, outfile, name='PSFIMG_ALL' return end diff --git a/pro/spec2d/bbspec_test.pro b/pro/spec2d/bbspec_test.pro deleted file mode 100644 index e815c19d4..000000000 --- a/pro/spec2d/bbspec_test.pro +++ /dev/null @@ -1,154 +0,0 @@ -;+ -; NAME: -; bbspec_test -; -; PURPOSE: -; Run bbspec 2D extraction code as an after-burner to existing reductions -; -; CALLING SEQUENCE: -; bbspec_test, scifile, [ outfile=, /clobber, /batch, _EXTRA= ] -; -; INPUTS: -; scifile - spFrame file name -; -; OPTIONAL INPUTS: -; outfile - Output FITS file with 2D image model; default to -; 'ymodel-test.fits' -; clobber - If set, then clobber any existing PSF and re-generate it -; batch - If set, then batch each bundle of 20 fibers to a different -; PBS job; FRANGE keyword cannot also be set -; _EXTRA - Keywords for BBSPEC_EXTRACT, such as FRANGE,YRANGE -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine calls the bbspec PSF-construction and 2D extraction -; code as an afterburner to the pipeline, assuming that there already -; exists an spFrame, spArc, spFlat. Existing spBasisPSF files are not -; over-written unless /CLOBBER is set. -; -; If the spBasisPSF file cotains only the first N fibers, then only -; those N fibers are extracted. If /BATCH is set, then N must be -; a multiple of 20 since the code is then called in explicit batches -; of 20 fibers. -; -; The output file contains 3 HDUs with the 2-D model image, -; extracted fluxes, and extracted inverse variances. -; -; EXAMPLES: -; -; BUGS: -; -; REVISION HISTORY: -; 24-May-2011 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -function bbspec_test_batch, scifile, _EXTRA=Extra - - fq = "'" - idlcmd = 'bbspec_test,'+fq+scifile+fq - jobid = bbspec_batch(idlcmd, _EXTRA=Extra) - - return, jobid -end -;------------------------------------------------------------------------------ -pro bbspec_test, scifile, outfile=outfile1, clobber=clobber, batch=batch, $ - _EXTRA=Extra - - t0 = systime(1) - - if (n_params() NE 1) then $ - message, 'Wrong number of parameters' - rawdata_dir = getenv('BOSS_SPECTRO_DATA') - if (keyword_set(batch) AND keyword_set(Extra)) then begin - if (tag_exist(Extra,'FRANGE')) then $ - message, 'Cannot specify both BATCH and FRANGE' - endif - - hdr = headfits(scifile) - if (NOT keyword_set(hdr)) then $ - message, 'Error reading file '+scifile - mjdstr = string(sxpar(hdr, 'MJD'),format='(i5.5)') - indir = concat_dir(rawdata_dir, mjdstr) - - rawfile = 'sdR-'+strmid(sxpar(hdr, 'FILENAME'),4,11)+'.fit*' - splog, 'Reading raw science image' - sdssproc, rawfile, image, invvar, indir=indir, $ - /applycrosstalk, minflat=0.8, maxflat=1.2 - if (NOT keyword_set(image)) then $ - message, 'Unable to find raw science frame' - - arcstr = strmid(sxpar(hdr, 'ARCFILE'),4,11) - flatstr = strmid(sxpar(hdr, 'FLATFILE'),4,11) - if (keyword_set(outfile1)) then outfile = outfile1 $ - else outfile = 'ymodel-test.fits' - - arcfile = (findfile('spArc-'+arcstr+'.fits*', count=ct))[0] - if (ct EQ 0) then $ - message, 'Unable to find spArc file' - flatfile = (findfile('spFlat-'+flatstr+'.fits*', count=ct))[0] - if (ct EQ 0) then $ - message, 'Unable to find spFlat file' - - basisfile = 'spBasisPSF-*-' + strmid(sxpar(hdr, 'ARCFILE'),4,11) + '.fits' - junk = (findfile(basisfile+'*', count=ct))[0] - splog, 'Selecting file '+basisfile - if (ct EQ 0 OR keyword_set(clobber)) then begin - splog, 'Generating sdProc file for arc' - arcname = 'sdR-'+arcstr+'.fit' - sdssproc, arcname, indir=indir, /outfile, /applycrosstalk - splog, 'Generating spBasisPSF file '+basisfile - pyfile = djs_filepath('make-my-psf.py', root_dir=getenv('BBSPEC_DIR'), $ - subdir='examples') - cmd = 'python '+pyfile+' '+arcstr+' '+flatstr - spawn, cmd, res, errcode - if (keyword_set(errcode)) then begin - splog, errcode - message, 'Error calling '+cmd - endif - endif else begin - splog, 'Use existing PSF file '+basisfile - endelse - - splog, 'Reading existing traceset '+flatfile - xset = mrdfits(flatfile, 1) - traceset2xy, xset, xx, ximg - - splog, 'Running 2D extraction' - if (NOT keyword_set(batch)) then begin - bbspec_extract, image, invvar, flux, fluxivar, basisfile=basisfile, $ - ximg=ximg, ymodel=bb_ymodel, _EXTRA=Extra - endif else begin - nfiber = sxpar(headfits(basisfile),'NAXIS2') - njob = nfiber / 20 - jobid = lonarr(njob) - splog, 'Batching ', njob, ' jobs for ', nfiber, ' fibers in PSF file' - tmproot = 'tmp-'+strmid(scifile,8,11)+'-' $ - +string(lindgen(njob),format='(i2.2)') - tmpoutfile = tmproot+'.fits' - for i=0, njob-1 do $ - if (file_test(tmpoutfile[i])) then file_delete, tmpoutfile[i] - for i=0, njob-1 do $ - jobid[i] = bbspec_test_batch(scifile, _EXTRA=Extra, $ - frange=[i*20,i*20+19], outfile=tmpoutfile[i], tmproot=tmproot[i]+'-') - bbspec_batch_wait, jobid - bb_ymodel = 0 - flux = 0 - fluxivar = 0 - for i=0, njob-1 do bb_ymodel += mrdfits(tmpoutfile[i],0) - for i=0, njob-1 do flux += mrdfits(tmpoutfile[i],1) - for i=0, njob-1 do fluxivar += mrdfits(tmpoutfile[i],2) - endelse - - splog, 'Writing file '+outfile - mwrfits, bb_ymodel, outfile, /create - mwrfits, flux, outfile - mwrfits, fluxivar, outfile - - splog, 'Elapsed time = ', systime(1)-t0, ' sec' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/bolton_sn_fit.pro b/pro/spec2d/bolton_sn_fit.pro deleted file mode 100644 index 6743c25ef..000000000 --- a/pro/spec2d/bolton_sn_fit.pro +++ /dev/null @@ -1,85 +0,0 @@ -;+ -; -; NAME: -; bolton_sn_fit -; -; PURPOSE: -; robust fit to SN^2 versus fibermag -; -; USAGE: -; sn2ref = bolton_sn_fit(fibermag, sn2vector [, $ -; lims=lims, refmag=refmag, quantile=quantile, doplot=doplot]) -; -; ARGUMENTS: -; fibermag: x coordinate for fit -; sn2vector: y coordinate, log10'ed before fitting -; -; OPTIONAL ARGUMENTS: -; lims: 2-element vector giving low-to-high (i.e., -; bright-to-faint) fibermag limit over which to fit. -; (default = [20., 22]) -; refmag: reference fibermag at which to eval final fit -; (default = 21.) -; quantile: reject points beyond this quantile in terms -; of absolute deviation from first-pass fit. -; (default = 0.8 -- i.e., reject most deviant 20%) -; doplot: set keyword for simple splot diagnostic. -; -; COMMENTS: -; Does LADFIT, rejects outliers, does LADFIT again! -; -; ** CURRENT DEFAULTS ARE FOR BOSS R-CHANNEL!! ** -; ** FOR B-CHANNEL, OVERRIDE DEFAULTS!! ** -; -; So far, only spot-tested, but seems fairly robust. -; -; WRITTEN: -; Bolton @ Utah 2010 May, with pair-coding by Olmstead. -; -;- - -function bolton_sn_fit, fibermag, sn2vector, lims=lims, refmag=refmag, $ - quantile=quantile, doplot=doplot,camera=camera,sn2=sn2 - - -if (not keyword_set(refmag)) then refmag = 21. -if (not keyword_set(quantile)) then quantile = 0.8 - -if (not keyword_set(camera)) then camera =' ' -if (keyword_set(camera)) then begin - if camera eq 'b1' or camera eq 'b2' then begin - lims =[21,23] - refmag=22 - endif -endif -if (not keyword_set(lims)) then lims = [20., 22] - -wh = where((fibermag gt lims[0]) and (fibermag lt lims[1]), nwh) -xloc = fibermag[wh] -yloc = alog10(sn2vector[wh]) -lfit = ladfit(xloc, yloc) -yfit1 = poly(xloc, lfit) -resid = abs(yloc - yfit1) -resid_srt = resid[sort(resid)] -cutval = resid_srt[long(quantile * nwh)] -wsub = where(resid lt cutval) -lfit2 = ladfit(xloc[wsub], yloc[wsub]) -yfit2 = poly(xloc, lfit2) -sn2_fid = 10.^poly(refmag, lfit2) - -if keyword_set(doplot) then begin - splot, xloc, yloc, ps=6, color=2,ytitle='S/N^2 '+sn2_fid,xtitle='fibermag '+camera - soplot, xloc[wsub], yloc[wsub], ps=4, color=1 - soplot, xloc, yfit1, ps=1, color=3 - soplot, xloc, yfit2, ps=1, color=6 -endif -;return,camera -if keyword_set(camera) then print,camera -if keyword_set(sn2) then print,sn2 -return, sn2_fid -;if (keyword_set(camera)) then begin -; return, camera -;endif - -end - diff --git a/pro/spec2d/bolton_std_throughput.pro b/pro/spec2d/bolton_std_throughput.pro deleted file mode 100644 index f2503c002..000000000 --- a/pro/spec2d/bolton_std_throughput.pro +++ /dev/null @@ -1,161 +0,0 @@ -;+ -; -; NAME: -; bolton_std_throughput -; -; PURPOSE: -; Compute BOSS end-to-end throughput estimate from -; spectrophotometric standard stars -; -; USAGE: -; tput_struc = bolton_std_throughput(fileid, $ -; plate=plate, mjd=mjd [, radius=radius, plug=plug]) -; -; ARGUMENTS: -; Required: -; fileid: a file identifier of the 'b1-00124616' variety -; (no 'sdR-', no '.fit*') for a science frame. -; (one of the following two is mandatory:) -; plate: plate, to give subdir of spCFrame file -; mjd: mjd, to give subdir of sdR file -; Optional: -; radius: pixel radius for boxcar extraction -; -; RETURNS: -; a structure containing wavelength and end-to-end -; throughput information calculated for all standard stars -; in the observation. -; -; Optional output: -; plug: plugmap structure for the standard stars. -; -; NOTES: -; This procedure uses sdR files and spCFrame files. -; It needs to find them via the environment variables -; $BOSS_SPECTRO_DATA -; $BOSS_SPECTRO_REDUX -; $RUN2D -; -; Calculated throughput is total end-to-end, incl. atmosphere -; through CCD QE, also including any seeing-related fiber loss. -; Telescope is 2.5m with central area of 27% obscured. -; -; WRITTEN: -; A. Bolton, U. of Utah, 2011 Feb. -; -;- - -function bolton_std_throughput, fileid, plate=plate, mjd=mjd, $ - radius=radius, plug=plug, dosky=dosky, hdr=hdr - -if (not keyword_set(radius)) then radius = 3.0 -if (not keyword_set(dosky)) then dosky=0 - -; Find the files. -; If plate passed, get MJD from spCFrame header. -; if MJD passed, get plate from sdR header. -if keyword_set(plate) then begin - ; spCFrame: - cframe = getenv('BOSS_SPECTRO_REDUX') + '/' $ - + getenv('RUN2D') + '/' + plate_to_string(plate ) + $ - '/spCFrame-' + fileid + '.fit*' - cframe = (file_search(cframe))[0] - if (cframe eq '') then begin - splog, 'spCFrame file not found for ' + fileid - return, 0 - endif - mjd = sxpar(headfits(cframe), 'MJD') - ; sdR: - sciframe = getenv('BOSS_SPECTRO_DATA') + '/' $ - + string(mjd, format='(i5)') + $ - '/sdR-' + fileid + '.fit*' - sciframe = (file_search(sciframe))[0] - if (sciframe eq '') then begin - splog, 'sdR file not found for ' + fileid - return, 0 - endif -endif else if keyword_set(mjd) then begin - ; sdR: - sciframe = getenv('BOSS_SPECTRO_DATA') + '/' $ - + string(mjd, format='(i5)') + $ - '/sdR-' + fileid + '.fit*' - sciframe = (file_search(sciframe))[0] - if (sciframe eq '') then begin - splog, 'sdR file not found for ' + fileid - return, 0 - endif - plate = sxpar(headfits(sciframe), 'PLATEID') - ; spCFrame: - cframe = getenv('BOSS_SPECTRO_REDUX') + '/' $ - + getenv('RUN2D') + '/' + plate_to_string(plate) + $ - '/spCFrame-' + fileid + '.fit*' - cframe = (file_search(cframe))[0] - if (cframe eq '') then begin - splog, 'spCFrame file not found for ' + fileid - return, 0 - endif -endif else begin - splog, 'Need either plate or MJD to find file!' - return, 0 -endelse - -; Get the stuff we need from the sdR file: -sdssproc, sciframe, image, invvar, hdr=i_hdr - -; Get the stuff we need from the spCFrame file: -flux = mrdfits(cframe, 0, c_hdr) -ivar = mrdfits(cframe, 1) -loglam = mrdfits(cframe, 3) -plug = mrdfits(cframe, 5) -sky = mrdfits(cframe, 6) -xpos = mrdfits(cframe, 7) -hdr=c_hdr - -; Downselect to standard stars. -; Also get rid of blue-side spCFrame row padding, if necessary. -npix = (size(image))[2] -if dosky then $ - wh_std = where(strtrim(plug.objtype,2) eq 'SKY', n_std) $ -else $ - wh_std = where(strtrim(plug.objtype,2) eq 'SPECTROPHOTO_STD', n_std) -plug = plug[wh_std] -flux = flux[0:npix-1,wh_std] -ivar = ivar[0:npix-1,wh_std] -loglam = loglam[0:npix-1,wh_std] -sky = sky[0:npix-1,wh_std] -xpos = xpos[0:npix-1,wh_std] -ypos = findgen(npix) # replicate(1., n_std) - -; Extract raw counts: -c_extract = extract_boxcar(image * (invvar gt 0.), xpos, ypos, radius=radius) - -; Convert fluxed spectrum from flux per angstrom to flux per pixel: -wave = 10.^loglam -dwave = 0.5 * (wave[2:npix-1,*] - wave[0:npix-3,*]) -dwave = [dwave[0,*], dwave, dwave[npix-3,*]] -flux_per_pix = (flux + sky) * dwave - -; Collecting area of SDSS telescope in cm^2 -; (27% central obscuration of area as per project book): -t_area = (1. - 0.27) * !pi * (250. / 2.)^2 -; Exposure time: -exptime = sxpar(c_hdr, 'EXPTIME') - -; Convert fluxed spectrum into ergs per pixel: -energy_per_pix = flux_per_pix * t_area * exptime * 1.e-17 - -; Convert energy into photons: -h_cgs = 6.626e-27 -c_cgs = 2.998e10 -lambda_cgs = wave * 1.e-8 -energy_per_phot = h_cgs * c_cgs / lambda_cgs -photons_per_pix = energy_per_pix / energy_per_phot - -; Compute throughput: -tput = (photons_per_pix gt 0.) * (ivar gt 0.) * c_extract / (photons_per_pix > 1.) - -; Pack up and return: -ostruc = {plate: plate, fileid: fileid, exptime: exptime, wave: wave, tput: tput, fiberid:plug.fiberid, counts:c_extract} - -return, ostruc -end diff --git a/pro/spec2d/bosslog.pro b/pro/spec2d/bosslog.pro deleted file mode 100644 index 2f8345bb8..000000000 --- a/pro/spec2d/bosslog.pro +++ /dev/null @@ -1,94 +0,0 @@ -pro bosslog - - ;---------- - ; Find all the spFrame files, and sort by exposure number - - spawn, 'ls -d ' + getenv('BOSS_SPECTRO_DATA') + '/?????', mjdlist - - for imjd=0L, n_elements(mjdlist)-1 do begin - splog, 'Searching for files in ' + mjdlist[imjd] - flist = findfile( $ - filepath('sdR-??-????????.fit*', root_dir=mjdlist[imjd]), count=ct) - if (ct GT 0) then begin - if (NOT keyword_set(files)) then files = flist $ - else files = [files, flist] - endif - endfor - - files = files[ sort(fileandpath(files)) ] - nfile = n_elements(files) - - ;---------- - ; Construct a structure with all the header info - ; Use a specific file as a template - - file_template = files[(where(strmatch(files,'*sdR-b1-00061798.fit*')))[0]] - hdr = headfits(file_template) - struct1 = create_struct('SIMPLE', 'T') - hname = 'SIMPLE' - - ;Tag names to extract from the template file - cards = ['decdeg', 'exposure', 'exptime', 'ff', 'ffs', 'flavor', $ - 'hgcd', 'mjd', 'ne', 'plateid', 'ra', 'radeg', 'cameras', $ - 'filename', 'tai-beg', 'dec', 'cartid', 'name', 'mapid', 'hartmann'] - cards = strupcase(cards) - - for j=1L, n_elements(hdr)-1L do begin - hname1 = strtrim(strmid(hdr[j],0,8),2) - junk = where(cards eq hname1, count) - if (count ne 0) then begin - thisname = repstr(hname1,'-','_') - if (thisname EQ 'NE') then thisname = 'NEON' - if (hname1 NE ' ' AND hname1 NE 'END' ) then begin - value = (sxpar(hdr,thisname))[0] - struct1 = create_struct(struct1, thisname, value) - hname = [hname, hname1] ; Header names - endif - endif - endfor - - structs = replicate(struct1, nfile) - tags = tag_names(struct1) ; Tag names - - for ifile=0, nfile-1L do begin - splog, 'Reading file ', ifile, ' of ', nfile, $ - ': ', fileandpath(files[ifile]) - - catch, theError - if theError ne 0 then begin - print, 'Something wrong happened' - continue - endif - - hdr = headfits(files[ifile]) - - ; Get the mjd, camera, and exposure from the filename itself - junk = strsplit(files[ifile], '/', length=l) - n = n_elements(junk) - mjd = strmid(files[ifile], junk[n-2], l[n-2]) - filename = strmid(files[ifile], junk[n-1], l[n-1]) - junk = strsplit(filename, '-', length=l) - camera = strmid(filename, junk[1], l[1]) - exposure = strmid(filename, junk[2], 8) - - for j=0L, n_elements(hname)-1L do begin - value = sxpar(hdr, hname[j]) - if (hname[j] eq 'MJD') then value = mjd - if (hname[j] eq 'CAMERAS') then value = camera - if (hname[j] eq 'EXPOSURE') then value = exposure - structs[ifile].(j) = value - endfor - endfor - - catch, /cancel - - mwrfits, structs, 'bosstest.fits' ,/create - - return - end - - - - - - \ No newline at end of file diff --git a/pro/spec2d/bossred.pro b/pro/spec2d/bossred.pro deleted file mode 100644 index ff81d648e..000000000 --- a/pro/spec2d/bossred.pro +++ /dev/null @@ -1,15 +0,0 @@ -pro bossred,planfile,flags,clobber - -planfile=file_basename(planfile) -temp=strsplit(file_basename(planfile,'.par'),'-',/extract) -plate=temp[1] -mjd=temp[2] - -cd,getenv('BOSS_SPECTRO_REDUX')+'/holtz/'+plate+'p' - -;spreduce2d,planfile,/plates -;rm_combine_script,'spPlancomb-'+plate+'-'+mjd+'.par', /xyfit,/loaddesi,/plates, run2d='holtz' - -spawn,['runrvs','spPlancomb-'+plate+'-'+mjd+'.par'],/noshell - -end diff --git a/pro/spec2d/checkflavor.pro b/pro/spec2d/checkflavor.pro deleted file mode 100644 index 37e14194d..000000000 --- a/pro/spec2d/checkflavor.pro +++ /dev/null @@ -1,37 +0,0 @@ -function checkflavor, image, flavor, camname -; -; Purpose is to take global statistics of frame and decide -; - - totalpix = n_elements(image) - if (totalpix EQ 0) then return, 'unk' - - imagemed = median(image) - - binsize = 100 - hist = histogram(image,binsize=binsize,min=imagemed) - totalhist = total(hist) - nhist = n_elements(hist) - - if (totalhist EQ 0) then return, 'unk' - - over = fltarr(5) - if (nhist GT 1) then over[0] = total(hist[1:*])/totalhist - if (nhist GT 5) then over[1] = total(hist[5:*])/totalhist - if (nhist GT 10) then over[2] = total(hist[10:*])/totalhist - if (nhist GT 100) then over[3] = total(hist[100:*])/totalhist - if (nhist GT 300) then over[4] = total(hist[300:*])/totalhist - -; -; guess flavors -; - newflavor = 'unk' - if (over[0] GT 0.02 AND over[1] GT 0.0005 AND $ - over[2] GT 0.0002) then newflavor = flavor - if (over[0] GT 0.2 AND over[2] GT 0.04) then newflavor = 'arc' - if (over[2] GT 0.5) then newflavor ='flat' - if (over[4] GT 0.2) then newflavor ='satur' - print, over, flavor, newflavor, camname - - return, flavor -end diff --git a/pro/spec2d/chunkinfo.pro b/pro/spec2d/chunkinfo.pro deleted file mode 100644 index 376ef9cad..000000000 --- a/pro/spec2d/chunkinfo.pro +++ /dev/null @@ -1,84 +0,0 @@ -;+ -; NAME: -; chunkinfo -; -; PURPOSE: -; Return chunk information for a given plate number. -; -; CALLING SEQUENCE: -; cinfo = chunkinfo(plateid) -; -; INPUTS: -; -; OPTIONAL INPUTS: -; plateid - Plate ID number; scalar or array of integers -; -; OUTPUTS: -; cinfo - Structure with chunk information for each plate -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $PLATELIST_DIR/platePlans.par -; -; PROCEDURES CALLED: -; yanny_readone() -; -; REVISION HISTORY: -; 08-Feb-2001 Written by D. Schlegel, Princeton -;------------------------------------------------------------------------------ -function chunkinfo, plateid,legacy=legacy,plates=plates - - common com_chunkinfo, chunkdata - - nplate = n_elements(plateid) - - ;---------- - ; Read the data file with the chunk information - - if (NOT keyword_set(chunkdata)) then begin - if keyword_set(plates) or keyword_set(legacy) then begin - chunkfile = filepath('platePlans.par', root_dir=getenv('PLATELIST_DIR'));PLATELIST_DIR - endif else begin - chunkfile = filepath('configPlans.par', root_dir=getenv('CONFIGLIST_DIR'));PLATELIST_DIR - endelse - chunkdata = yanny_readone(chunkfile) - endif - if (NOT keyword_set(chunkdata)) then begin - if keyword_set(plates) or keyword_set(legacy) then begin - splog, 'Empty or missing platePlans.par file' - endif else begin - splog, 'Empty or missing configPlans.par file' - endelse - return, 0 - endif - - ;---------- - ; Create output structure, setting all information to blanks. - ; For plates with no chunk info, return this blank information. - - retval = chunkdata[0] - struct_assign, {junk:0}, retval - retval = replicate(retval, nplate) - - ;---------- - ; Find the chunk data for each plate - - for iplate=0L, nplate-1L do begin - if keyword_set(plates) or keyword_set(legacy) then begin - indx = where(chunkdata.plateid EQ plateid[iplate], ct) - endif else begin - indx = where(chunkdata.field EQ plateid[iplate], ct) - endelse - if (ct GT 0) then retval[iplate] = chunkdata[indx[0]] - endfor - - return, retval -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/correct_crosstalk.pro b/pro/spec2d/correct_crosstalk.pro deleted file mode 100644 index 37c7ed655..000000000 --- a/pro/spec2d/correct_crosstalk.pro +++ /dev/null @@ -1,156 +0,0 @@ -;+ -; NAME: -; CORRECT_CROSSTALK -; -; PURPOSE: -; If there is keyword_set(image) is true this procedure corrects an image for crosstalk. The input image is overwritten by the corrected image. -; If there is keyword_set(invvar) is true this procedure returns the diagonal of the resulting covariance matrix of the crosstalk-corrected -; image. The input invvar is overwritten by the corrected invvar. For now covariance matrices are not being used and the current implementation -; assumes this. -; -; The amplifier layout and crosstalk terms are provided. -; -; CALLING SEQUENCE: -; CORRECT_CROSSTALK, Image, Crosstalk, Ampgrid -; -; INPUTS: -; Image - 2-dimensional array containing the image to be corrected. Note that this array is overwritten with the OUTPUT -; Crosstalk - An N by N grid containing the amplifier cross-talk. N is the total number of amplifiers. If NOT keyword_set(Crosstalk) -; then no correction is applied. -; Ampgrid - A 2-element array describing how the amplifiers are distributed on the chip. For now, the code only -; knows how to deal with [2,2] -; -; OPTIONAL INPUTS: -; Invvar - 2-dimensional array containing the inverse variance that corresponds with the input image. This array is -; overwritten with the output -; -; KEYWORD PARAMETERS: -; -; OUTPUTS: -; Image - The cross-talk corrected image. The input image is overwritten -; -; OPTIONAL OUTPUTS: -; -; COMMON BLOCKS: -; -; SIDE EFFECTS: -; The input image is overwritten -; -; EXAMPLE: -; infile='/Users/akim/Work/sdss3/testData/realdata/rawdata/55089/sdR-r1-00101369.fit' -; sdssproc, infile, image, indir=indir, /applybias, /silent -; configuration=obj_new('configuration', 55120) -; correct_crosstalk,image, configuration->crosstalk_crosstalk('r1'), configuration->crosstalk_ampgrid('r1') -; -; MODIFICATION HISTORY: -; Written by: Alex Kim, Oct 16, 2009 -;- - - -pro correct_crosstalk, image, crosstalk, ampgrid, invvar - - if (NOT keyword_set(crosstalk)) then return - - if (ampgrid[0] NE 2 or ampgrid[1] NE 2) then begin - splog, 'ABORT: Not implemented for this amplifier grid' - return - endif - - invxtalk = invert(crosstalk) - - if (keyword_set(image)) then begin - ; - ; Break apart the image - ; - - ;determine the size of the image - dim=size(image,/dim) - - ;get each amplifier readout and flip to same readout order - im0=image[0:dim[0]/2-1,0:dim[1]/2-1] - im1=rotate(image[dim[0]/2:*,0:dim[1]/2-1],5) - im2=rotate(image[0:dim[0]/2-1,dim[1]/2:*],7) - im3=rotate(image[dim[0]/2:*,dim[1]/2:*],2) - - ;containers for the answer - - im0p=im0 - im1p=im1 - im2p=im2 - im3p=im3 - - ; do every pixel - for i=0l,n_elements(im0)-1 do begin - yvec=[im0[i],im1[i],im2[i],im3[i]] - ans=invxtalk##yvec - im0p[i]=ans[0] - im1p[i]=ans[1] - im2p[i]=ans[2] - im3p[i]=ans[3] - endfor - - ;flip back - im1p=rotate(temporary(im1p),5) - im2p=rotate(temporary(im2p),7) - im3p=rotate(temporary(im3p),2) - - image[0:dim[0]/2-1,0:dim[1]/2-1]=im0p - image[dim[0]/2:*,0:dim[1]/2-1]=im1p - image[0:dim[0]/2-1,dim[1]/2:*]=im2p - image[dim[0]/2:*,dim[1]/2:*]=im3p - endif - - if (keyword_set(invvar)) then begin - - invxtalktrans=transpose(invxtalk) - - ; - ; Break apart the image - ; - - ;determine the size of the image - dim=size(invvar,/dim) - - ;get each amplifier readout and flip to same readout order - im0=invvar[0:dim[0]/2-1,0:dim[1]/2-1] - im1=rotate(invvar[dim[0]/2:*,0:dim[1]/2-1],5) - im2=rotate(invvar[0:dim[0]/2-1,dim[1]/2:*],7) - im3=rotate(invvar[dim[0]/2:*,dim[1]/2:*],2) - - ;containers for the answer - - im0p=im0 - im1p=im1 - im2p=im2 - im3p=im3 - - ; do every pixel - for i=0l,n_elements(im0)-1 do begin - v=fltarr(4,4) - v(indgen(4),indgen(4))=[im0[i],im1[i],im2[i],im3[i]] - w=where(v(indgen(4),indgen(4)) eq 0,neq0) - if (neq0 gt 0) then v[w,w]=1/65535. - v=invert(v) - ans = invxtalk ## v ## invxtalktrans - ans = invert(ans) - - ;this works for now while we are only dealing with diagonals - if (neq0 gt 0) then ans[w,w]=0 - im0p[i]=ans[0,0] - im1p[i]=ans[1,1] - im2p[i]=ans[2,2] - im3p[i]=ans[3,3] - endfor - - ;flip back - im1p=rotate(temporary(im1p),5) - im2p=rotate(temporary(im2p),7) - im3p=rotate(temporary(im3p),2) - - invvar[0:dim[0]/2-1,0:dim[1]/2-1]=im0p - invvar[dim[0]/2:*,0:dim[1]/2-1]=im1p - invvar[0:dim[0]/2-1,dim[1]/2:*]=im2p - invvar[dim[0]/2:*,dim[1]/2:*]=im3p - endif - -end diff --git a/pro/spec2d/djs_polyfit.pro b/pro/spec2d/djs_polyfit.pro deleted file mode 100644 index eb5bd6181..000000000 --- a/pro/spec2d/djs_polyfit.pro +++ /dev/null @@ -1,69 +0,0 @@ -;+ -; NAME: -; djs_polyfit -; -; PURPOSE: -; Version of POLYFITW that uses SVD fitting -; -; CALLING SEQUENCE: -; res = djs_polyfit(x, y, ndegree, [ variance=, yfit= ] ) -; -; INPUTS: -; x - -; y - -; ndegree - Degree of polynomial fit, where NDEGREE+1 terms are fit -; -; OPTIONAL INPUTS: -; -; OUTPUTS: -; res - Polynominal coefficients [NDEGREE+1] -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Perform polynomial fits using SVD. If the fit is singular, then -; redo the fit with fewer terms until it is not singular. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 16-Feb-2011 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -function djs_polyfit, x, y, ndegree, variance=variance1, yfit=yfit - - npix = n_elements(x) - if (n_elements(y) NE npix) then $ - message, 'Number of elements in X and Y must agree!' - if (ndegree LT 0) then $ - message, 'NDEGREE must be non-negative' - if (keyword_set(variance1)) then begin - if (n_elements(variance1) NE npix) then $ - message, 'Number of elements in X and VARIANCE must agree!' - variance = double(reform(variance1, npix)) - endif else begin - variance = 0 - endelse - - nfit = fix(ndegree) + 1 - status = 1 - while (nfit GT 0 AND status NE 0) do begin - res = svdfit(reform(double(x),npix), reform(double(y),npix), $ - nfit, variance=variance, yfit=yfit, status=status, singular=singular, $ - sing_values=sing_values) - nfit -= 1 - endwhile - - ; If some degrees of freedom were dropped, then add them back in as zeros - ndrop = fix(ndegree) + 1 - n_elements(res) - if (ndrop GT 0) then res = [res, fltarr(ndrop)] - - return, res -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/extract2.pro b/pro/spec2d/extract2.pro deleted file mode 100644 index 9db80eb9b..000000000 --- a/pro/spec2d/extract2.pro +++ /dev/null @@ -1,39 +0,0 @@ - -;------------------------------------------------------------------------------ -; Find isolated fibers and return a boxcar extraction + optimal extraction -; Use this only on sparse-fiber flats, such as in MJD=51441 -; Ex: -; extract2, 'sdR-01-00001409.fit', fbox1, flux1, indir='51441' -; extract2, 'sdR-01-00001415.fit', fbox2, flux2, indir='51441' -; extract2, 'sdR-01-00001417.fit', fbox3, flux3, indir='51441' - -pro extract2, flatname, fbox, flux, indir=indir, xcen=xcen, ycen=ycen - - sdssproc, flatname, flatimg, flativar, indir=indir - - xcen = trace320crude(flatimg, yset=ycen, maxdev=0.15) - xy2traceset, ycen, xcen, tset, ncoeff=5, maxdev=0.1 - traceset2xy, tset, ycen, xsol - - fbox = extract_boxcar(flatimg, xsol) - - ; Select isolated fibers that are lit - illum = total(fbox,1) / 2048. GT 1.e4 ; Illuminated or not - isol = where(illum AND shift(illum,-1) EQ 0 AND shift(illum,1) EQ 0) - - ; Re-extract with wide boxcar - fbox = extract_boxcar(flatimg, xsol, radius=5.0) - - extract_image, flatimg, flativar, xsol, 1.0, flux, fluxivar, $ - proftype=1, wfixed=[1], highrej=20, lowrej=25, nPoly=6, relative=1 - - ; Trim to isolated fibers if there are any - if (isol[0] EQ -1) then isol = indgen(320) - fbox = fbox[*,isol] - flux = flux[*,isol] - xcen = xsol[*,isol] - ycen = ycen[*,isol] - - return -end - diff --git a/pro/spec2d/extract_bundle_image.pro b/pro/spec2d/extract_bundle_image.pro index 6071657aa..5fca6c954 100644 --- a/pro/spec2d/extract_bundle_image.pro +++ b/pro/spec2d/extract_bundle_image.pro @@ -361,13 +361,13 @@ oldma = nTrace if keyword_set(outname) and keyword_set(debug) then begin bkgname = repstr(outname, 'spFrame', 'sdProc_bksub') - mwrfits, fimage, bkgname, /create - mwrfits, fimage_raw, bkgname - mwrfits, ybkg, bkgname - mwrfits, mbkg, bkgname - mwrfits, invvar, bkgname - mwrfits, xcen, bkgname - mwrfits, sigma, bkgname + mwrfits_named, fimage, bkgname, name='FIMG', /create + mwrfits_named, fimage_raw, bkgname, name='RAW_FIMG' + mwrfits_named, ybkg, bkgname, name='YBKG' + mwrfits_named, mbkg, bkgname, name='MBKG' + mwrfits_named, invvar, bkgname, name='IVAR' + mwrfits_named, xcen, bkgname, name='XCEN' + mwrfits_named, sigma, bkgname, name='SIGMA' endif ; end of test on smoothe background fit endif @@ -505,11 +505,11 @@ endif endfor if keyword_set(outname) and keyword_set(debug) then begin bkg_subname = repstr(outname, 'spFrame', 'spFrame_bksub') - mwrfits, flux, bkg_subname, /create - mwrfits, finv, bkg_subname + mwrfits_named, flux, bkg_subname, name='flux', '/create + mwrfits_named, finv, bkg_subname, name='ivar' - extname = repstr(outname, 'spFrame', 'extraction/sigma_') - mwrfits, sigout, extname, /create + extractname = repstr(outname, 'spFrame', 'extraction/sigma_') + mwrfits_named, sigout, extractname, /create endif ; JG : look at chi2pdf to detect outliers and mask them out ; use same highrej sigma threshold as for CCD pixel rejection diff --git a/pro/spec2d/extract_object.pro b/pro/spec2d/extract_object.pro index 463819eb8..bd62253af 100644 --- a/pro/spec2d/extract_object.pro +++ b/pro/spec2d/extract_object.pro @@ -276,9 +276,9 @@ pro extract_object, outname, objhdr, image, invvar, rdnoise, plugsort, wset, $ if keyword_set(debug) then begin testfile1 = repstr(outname, 'spFrame', 'spFrame_preext') - mwrfits, image, testfile1, /create - mwrfits, invvar, testfile1 - mwrfits, rdnoise, testfile1 + mwrfits_named, image, testfile1, name='Image',/create + mwrfits_named, invvar, testfile1, name='IVAR' + mwrfits_named, rdnoise, testfile1, name='READNOISE' endif ; ASB: switching to bundle-wise extraction: @@ -310,8 +310,8 @@ highrej=50 pixelmask_bits('FULLREJECT'))) EQ 0) thisfile = 'ymodel-'+fileandpath(outname) - mwrfits, bb_ymodel, thisfile, /create - mwrfits, ymodel, thisfile + mwrfits_named, bb_ymodel, thisfile, name='BB_YMODEL',/create + mwrfits_named, ymodel, thisfile, name='YMODEL' splog, 'BBSPEC output file ymodel-'+thisfile endif @@ -347,10 +347,10 @@ highrej=50 ; Flat-field the extracted object fibers with the global flat if keyword_set(debug) then begin testfile = repstr(outname, 'spFrame', 'spFrame_preflat') - mwrfits, flux, testfile, /create - mwrfits, fluxivar, testfile - mwrfits, fflat, testfile - mwrfits, ybkg, testfile + mwrfits_named, flux, testfile, name='FLUX', /create + mwrfits_named, fluxivar, testfile, name='IVAR' + mwrfits_named, fflat, testfile, name='FFLAT' + mwrfits_named, ybkg, testfile, name='YBKG' endif divideflat, flux, invvar=fluxivar, fflat, /quiet @@ -581,7 +581,7 @@ highrej=50 ;npix = (size(skyimg,/dimen))[0] ntra = (size(skyimg,/dimen))[1] if color eq 'blue' then begin - maxlim=4.5 + maxlim=5.5 locateskylines, skylinefile, skyimg, fluxivar, vacset, $ xarc, arcshift=arcshift_t, $ xsky=xsky_t, skywaves=skywaves_t, skyshift=skyshift_t,maxlim=maxlim,/vacum @@ -783,26 +783,27 @@ highrej=50 ;---------- ; Write extracted, lambda-calibrated, sky-subtracted spectra to disk if keyword_set(debug) then begin - mwrfits, superfit, testfile - mwrfits, skyimg, testfile + mwrfits_named, superfit, testfile, name='SUPERFLAT' + mwrfits_named, skyimg, testfile, name='SKYIMG' endif - mwrfits, flambda, outname, objhdr, /create - mwrfits, flambdaivar, outname - mwrfits, finalmask, outname - mwrfits, vacset, outname - mwrfits, dispset, outname - mwrfits, plugsort, outname - mwrfits, skyimg, outname - mwrfits, xnow, outname - mwrfits, superfit, outname + mwrfits_named, flambda, outname, hdr = objhdr, name = 'FLUX',/create + mwrfits_named, flambdaivar, outname, name = 'INVVAR' + mwrfits_named, finalmask, outname, name = 'MASK' + mwrfits_named, vacset, outname, name = 'WSET' + mwrfits_named, dispset, outname, name='DISPSET' + mwrfits_named, plugsort, outname, name = 'PLUGMAP' + mwrfits_named, skyimg, outname, name = 'SKY' + mwrfits_named, xnow, outname, name = 'X' + mwrfits_named, superfit, outname, name = 'SUPERFLAT' if (keyword_set(reslset)) then $ - mwrfits, reslset, outname - mwrfits, residual, outname -; mwrfits, skystruct, outname -; mwrfits, scatter, outname + mwrfits_named, reslset, outname, name = 'RESLSET' + mwrfits_named, residual, outname, name = 'RESID' + +; mwrfits_named, skystruct, outname, name='SKYSTRCT' +; mwrfits_named, scatter, outname, name='SCATTER' ; if (keyword_set(do_telluric)) then $ -; mwrfits, telluricfactor, outname ; This array only exists for red frames. +; mwrfits_named, telluricfactor, outname, name='TELLURICFACTOR'; This array only exists for red frames. spawn, ['gzip', '-f', outname], /noshell heap_gc diff --git a/pro/spec2d/extract_profile.pro b/pro/spec2d/extract_profile.pro deleted file mode 100644 index 11af93f8c..000000000 --- a/pro/spec2d/extract_profile.pro +++ /dev/null @@ -1,153 +0,0 @@ -;+ -; NAME: -; extract_profile -; -; PURPOSE: -; Extract the flux with profile weighting at centroid positions. -; -; CALLING SEQUENCE: -; fextract = extract_profile( fimage, invvar, xcen, ycen, -; [ferror=ferror, fscattered=fscattered, fwidth=fwidth, -; sigma=sigma, nPoly=nPoly, maxIter=maxIter, -; refit=refit, highrej=highrej, lowrej=lowrej, boxap=boxap]) -; -; INPUTS: -; fimage - Image[nCol,nRow] -; invvar - Inverse Variance[nCol,nRow] -; xcen - Initial guesses for X centers[nFibers,nRow] -; ycen - Y positions corresponding to "xcen[nFibers]" [nRow] -; -; OPTIONAL KEYWORDS: -; ferror - error array (-1 if bad pixel) -; fscattered - scattered light contribution -; fwidth - final profile width used -; -; sigma - sigma of gaussian profile; default to 1.0 -; nPoly - order of chebyshev scattered light background; default to 5 -; maxIter - maximum number of profile fitting iterations; default to 5 -; refit - order of chebyshev to fit to profile widths vs. row, -; default is 0, which does no refitting -; highrej - positive sigma deviation to be rejected (default 5.0) -; lowrej - negative sigma deviation to be rejected (default 5.0) -; boxap - boxcar aperture size in pixels -; default is 0, which does no boxcar extraction -; -; OUTPUTS: -; fextract - Extracted flux at each position specified by (xcen, ycen) -; [nFibers,nRow] -; 2: Scattered light estimate -; 3: Final profile width -; 4: Boxcar extracted flux -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; Dynamic link to extract_profile.c -; -; REVISION HISTORY: -; 24-Mar-1999 David Schlegel, Princeton. -; 24-Jun-1999 Stolen and modified by Scott Burles, Chicago. -;- -;------------------------------------------------------------------------------ -function extract_profile, fimage, invvar, xcen, ycen, ferror=ferror, $ - fscattered=fscattered, fwidth=fwidth, sigma=sigma, nPoly=nPoly,$ - maxIter=maxIter, refit=refit, highrej=highrej, lowrej=lowrej, boxap=boxap,$ - ymod=ymod - - ; Need 4 parameters - if (N_params() LT 4) then begin - print, 'Syntax - fextract = extract_profile(fimage, invvar, xcen, ycen, [ferror=ferror,' - print, ' fscattered=fscattered, fwidth=fwidth, sigma=sigma, nPoly=nPoly, ymod=ymod] )' - return, -1 - endif - if (NOT keyword_set(sigma)) then begin - sigma = xcen*0.0 + 1.0 - endif else if ((size(sigma))[0] LT 1) then begin - sigma1 = sigma - sigma = xcen*0.0 + sigma1 - endif - - if (NOT keyword_set(nPoly)) then nPoly = 5 - if (NOT keyword_set(maxIter)) then maxIter = 5 - if (NOT keyword_set(refit)) then refit = 0 - if (NOT keyword_set(highrej)) then highrej = 5.0 - if (NOT keyword_set(lowrej)) then lowrej = 5.0 - if (NOT keyword_set(boxap)) then boxap = 0.0 - - if (N_elements(fimage) NE N_elements(invvar)) then $ - message, 'Number of elements in FIMAGE and INVVAR must be equal' - -; -; Check XCEN and YCEN to see if the dimensions are consistent -; and applicable -; -; - ndim = size(fimage,/n_dim) - if (ndim NE 2) then $ - message, 'FIMAGE must be 2-dimensional' - dims = size(fimage,/dim) - nx = dims[0] - ny = dims[1] - nRowExtract = 1 - if ((size(xcen))[0] EQ 1) then begin - nTrace = (size(xcen))[1] - if ((size(ycen))[0] EQ 0) then begin - y1 = ycen - ycen = fltarr(1) - ycen[0] = y1 - endif else begin - y1 = ycen[0] - ycen = fltarr(1) - ycen[0] = y1 - endelse -; -; Check that xcen is sorted in increasing order -; with separations of at 3 pixels. -; - endif else if ((size(xcen))[0] EQ 2) then begin - nTrace = (size(xcen))[1] - nRowExtract = (size(xcen))[2] - if (N_elements(ycen) NE nRowExtract) then $ - message, 'Number of rows in XCEN does not equal nelements in YCEN' - ycenf = reform(ycen,nRowExtract) - - check = where(xcen[0:nTrace-1,*] GE xcen[1:nTrace-2,*] - 3,count) -; if(count GT 0) then $ -; message, 'XCEN is not sorted or not separated by greater than 3 pixels.' - endif - - - nPoly = LONG(nPoly) - maxIter = LONG(maxIter) - refit = LONG(refit) - -; if (min(xcen) LT 0 OR max(xcen) GT nx) then $ -; message, 'XCEN contains values out of range' - if (min(ycen) LT 0 OR max(ycen) GT ny) then $ - message, 'YCEN contains values out of range' - - fextract = fltarr(nTrace,nRowExtract) - ferror = fltarr(nTrace,nRowExtract) - fwidth = fltarr(nTrace,nRowExtract) - - ymod = fimage*0.0 - fscattered = fimage*0.0 - - soname = filepath('libspec2d.'+idlutils_so_ext(), $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='lib') - - result = call_external(soname, 'extract_profile',$ - nx, ny, float(fimage), float(invvar), float (ymod), nTrace, $ - LONG(nRowExtract), float(xcen), LONG(ycen), float(sigma), float(fextract),$ - float(ferror), float(fscattered), float(fwidth),$ - LONG(nPoly), LONG(maxIter), LONG(refit), float(highrej), float(lowrej), $ - float(boxap)) - - - return, fextract -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/fiberfraction.pro b/pro/spec2d/fiberfraction.pro deleted file mode 100644 index fd0697a2f..000000000 --- a/pro/spec2d/fiberfraction.pro +++ /dev/null @@ -1,80 +0,0 @@ -;+ -; NAME: -; fiberfraction -; -; PURPOSE: -; Calculates the fraction of light from an object with the specified Gaussian -; fwhm that enters a fiber of the specified diameter when the object's centroid -; is offset from the fiber center by the specified amount. All inputs should -; be specified in the same units. The default diameter is the BOSS fiber size -; in arcsecs, so requires that fwhm and offset also be specified in arcsecs. -; Accuracy gets worse with increasing diameter/fwhm, but should be at least 0.5% -; for fwhm > diameter/4 (or fwhm > 0.5 arcsec for BOSS fibers). -; -; CALLING SEQUENCE: -; result = fiberfraction(psffwhm, offsets, fibersize) -; -; INPUTS: -; psffwhm - The 2D Gaussian PSF FWHM. -; offsets - A scalar or vector of offsets from the fiber center. -; fibersize - The diameter of the fiber size. -; -; OPTIONAL INPUTS: -; -; OUTPUT: -; Returns an object matching dimension of the offsets input variable of the fraction -; of light that enters a fiber. -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; REVISION HISTORY: -; 25-July-2013 Written by Daniel Margala (dmargala@uci.edu), UC Irvine. -;- -;------------------------------------------------------------------------------ - -function fiberfraction, fwhm, offsets, diameter - if (fwhm le 0) then begin - splog, "Invalid fwhm <= 0." - return, -1 - endif - index = where(offsets lt 0, count) - if (count ne 0) then begin - splog, "Invalid offset < 0." - return, -1 - endif - if (diameter le 0) then begin - splog, "Invalid diameter <= 0." - return, -1 - endif - if (diameter gt 4.0*fwhm) then begin - splog, "diameter > 4*fwhm not implemented." - return, -1 - endif - - ; Calculate dimensionless ratios - sigma = fwhm/2.3548200450309493820 ; constant is 2*sqrt(2*log(2)) - t = offsets/sigma - ss = diameter/(2.*sigma) - tSqby2 = t*t/2. - ssSqby2 = ss*ss/2. - - ; Use a series expansion the BesselI[0,x] appearing in the radial inegral. - lastSum = replicate(0., n_elements(offsets)) - sum = 1-exp(-ssSqby2) - prod = replicate(1., n_elements(offsets)) - k = 0 - while (++k lt 1000) do begin - lastSum = sum - prod *= tSqby2 - term = prod*igamma(k+1,ssSqby2)/gamma(k+1) - sum += term - index = where(abs(term) lt 1e-2*sum, count) - if (count eq n_elements(offsets)) then break - endwhile - - return, sum*exp(-tSqby2) -end diff --git a/pro/spec2d/finalarcfit.pro b/pro/spec2d/finalarcfit.pro deleted file mode 100644 index b9998e06b..000000000 --- a/pro/spec2d/finalarcfit.pro +++ /dev/null @@ -1,62 +0,0 @@ -;------------------------------------------------------------------------------ -pro finalarcfit, x, loglam, wset, ncoeff, ic, nsetcoeff=nsetcoeff, $ - fibermask=fibermask, xweight=xweight, yfit=yfit, $ - maxsig=maxsig, plot=plot, _EXTRA=extra - - dims = size(x, /dimens) - nfiber = dims[0] - nlines = dims[1] - if (n_elements(fibermask) NE nfiber) then $ - fibermask = bytarr(nfiber) - if (n_elements(xweight) NE n_elements(x)) then $ - xweight = bytarr(nfiber,nlines) + 1 - - lmatrix = loglam # (dblarr(nfiber)+1) - xy2traceset, transpose(x), lmatrix, wset, ncoeff=ncoeff, $ - invvar=transpose(xweight), _EXTRA=extra, $ - yfit=yfitfirst, xmin=wset.xmin, xmax=wset.xmax - - wsave = wset - - ;------ - ; Fit and replace all the coefficients numbered 1 through NCOEFF-1 - ; with their fit value. Fit a Chebyshev with NSETCOEFF coefficients, and - ; a split in the baseline at the central fibers. - - fitcoeff = ncoeff - ic - - coeffmask = (fibermask EQ 0) # (fltarr(fitcoeff) + 1) - xy2traceset, dindgen(nfiber) # (dblarr(fitcoeff) + 1.0), $ - transpose(wset.coeff[ic:ncoeff-1,*]), tmpset, $ - invvar=coeffmask, func='chebyshev_split', $ - ncoeff=nsetcoeff, maxsig=maxsig, yfit=yfitcoeff - wset.coeff[ic:ncoeff-1,*] = transpose(yfitcoeff) - - ; Fit the first ic coefficients, keep the others fixed - - ia = bytarr(ncoeff) - ia[0:ic-1] = 1 - - xy2traceset, transpose(x), lmatrix, wset, xmin=wset.xmin, xmax=wset.xmax, $ - ncoeff=ncoeff, invvar=transpose(xweight), $ - yfit=yfit, inputans=wset.coeff, ia=ia, $ - maxsig=2.0, _EXTRA=extra - - fibermed = fltarr(nfiber) - fibererr = fltarr(nfiber) - for i=0, nfiber-1 do fibermed[i] = median(lmatrix[*,i] - yfit[*,i]) - for i=0, nfiber-1 do fibererr[i] = $ - sqrt(total((lmatrix[*,i] - yfit[*,i] - fibermed[i])^2)/nfiber) - - if (keyword_set(plot)) then begin - plot, findgen(nfiber) ## (dblarr(nlines) + 1), lmatrix-yfit, psym=3, $ - yr=[-max(fibererr),max(fibererr)],xr=[-1,nfiber], /xstyle, /ystyle - oplot, fibermed, psym=1 - errplot, findgen(nfiber),fibermed-fibererr, fibermed+fibererr - - plot, 10^lmatrix, (lmatrix-yfit)*(3.0e5/70.0), psym=3, yrange=[-0.1,0.1] - endif - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/fit_skyset.pro b/pro/spec2d/fit_skyset.pro deleted file mode 100644 index 0097fb21d..000000000 --- a/pro/spec2d/fit_skyset.pro +++ /dev/null @@ -1,82 +0,0 @@ -; Inputs: xarc, yarc, arclambda, xsky, ysky, skylambda, skycoeff -; Outputs: goodlines, wset -; optional input keywords ymin, ymax, func - -pro fit_skyset, xarc, yarc, arclambda, xsky, ysky, skylambda, skycoeff, $ - goodlines, wset, ymin=ymin, ymax=ymax, func=func - - if (keyword_set(func) EQ 0) then func = 'legendre' - if (keyword_set(ymin) EQ 0) then ymin = wset.xmin - if (keyword_set(ymax) EQ 0) then ymax = wset.xmax - - narctrace=(size(xarc))[1] - nskytrace=(size(xsky))[1] - if (nskytrace NE narctrace) then $ - message, 'Different number of traces found in arcs and skies' - ntrace = narctrace - narclines = (size(xarc))[2] - nskylines = (size(xsky))[2] - - ncoeff = (size(wset.coeff))[1] - npix=2048 - - ymid = 0.5*(wset.xmax + wset.xmin) - yrange = wset.xmax - wset.xmin - xx = dindgen(2048) - pixarray = 2.0d0*dindgen(npix)/(npix-1) - 1.0d0 - - if (func EQ 'legendre') then f_pixarray = flegendre(pixarray,ncoeff) - if (func EQ 'chebyshev') then f_pixarray = fchebyshev(pixarray,ncoeff) - - if (func EQ 'legendre') then function_name = 'flegendre' - if (func EQ 'chebyshev') then function_name = 'fchebyshev' - - x = [[xarc], [xsky]] - lambda = [arclambda, skylambda] - -;wavnorm = 2.0d*xnew/(npix-1) - 1.0d - wavnorm = 2.0d*x/(ymax-ymin) - 1.0d - - nline = n_elements(lambda) - - goodlines = lonarr(nline,ntrace) + 1 - - for i=0, ntrace-1 do begin - - done = 0 - - while (done EQ 0) do begin - - use = where(goodlines[*,i] NE 0) - ncurarc = long(total(goodlines[0:narclines-1,i])) - - res = arcsky_fit((wavnorm[i,use])[*], lambda[use], ncurarc, $ - ncoeff, skycoeff, function_name=function_name, yfit=yfit) - diff = yfit - lambda[use] - - -; -; Take lines within 20 km/s - throw out 1 at a time -; - bad = where(abs(diff) GT 3.0d-5, nbad) - if (nbad EQ 0) then done = 1 $ - else begin - maxdiff = max(abs(diff),badplace) - goodlines[use[badplace],i] = 0 - endelse - endwhile - - wset.coeff[*,i] = res[0:ncoeff-1] - wset.coeff[0:skycoeff-1,i] = $ - wset.coeff[0:skycoeff-1,i] + res[ncoeff:*] - - newfit = flegendre((wavnorm[i,use])[*], ncoeff) # wset.coeff[*,i] - -; for j=ncurarc,n_elements(use) - 1 do $ -; splog, 'Line ', j, yfit[j], lambda[use[j]], diff[j], newfit[j] - - print, format='($, ".",i4.4,a5)',i,string([8b,8b,8b,8b,8b]) - endfor - - return -end diff --git a/pro/spec2d/fitansimage.pro b/pro/spec2d/fitansimage.pro deleted file mode 100644 index b14fa525c..000000000 --- a/pro/spec2d/fitansimage.pro +++ /dev/null @@ -1,150 +0,0 @@ -;+ -; NAME: -; fitansimage -; -; PURPOSE: -; Convert output from extract_image (ansimage) into a smooth -; function of fiber number and row -; -; CALLING SEQUENCE: -; fitans = fitansimage(ansimage, nterms, ntrace, npoly, nfirst, yrow, $ -; tempflux, fluxm = [1,1,0], scatfit=scatfit, $ -; smallflux, fluxm=fluxm, nord=nord, nscatbkpts=nscatbkpts, $ -; ymin=ymin, ymax=ymax, fullrows=fullrows) -; -; INPUTS: -; ansimage - Keyword Output from extract_image -; nterms - number of profile terms -; ntrace - Number of fibers (currently hardwired to 320) -; npoly - Order of chebyshev polynomial in scattered light -; yrow - Array of rows extracted in first pass -; smallflux - Flux extracted in first pass -; -; OPTIONAL KEYWORDS: -; fluxm - Factor profile terms contribute to total flux -; (asymmetric terms are set to zero) -; -; OUTPUTS: -; fitans - Smooth version of ansimage (expanded to 2048 rows) -; -; OPTIONAL OUTPUTS: -; scatfit - Image of scattered light from smoothing polynomials -; -; COMMENTS: -; fitansimage takes the output from extract_image, and smooths -; the corresponding parameters of nfibers and npoly with -; functions of order nord -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; traceset2xy -; xy2traceset -; -; REVISION HISTORY: -; ??-Oct-1999 Written by S. Burles, Chicago -; 25-Feb-2000 Modified to be more robust (yeah!) -; but requires exactly 320 fibers (boo) ??? -;- -;------------------------------------------------------------------------------ -function fitansimage, ansimage, nparams, nfibers, npoly, yrow, $ - smallflux, fluxm=fluxm, nord=nord, nscatbkpts=nscatbkpts, $ - ymin=ymin, ymax=ymax, fullrows=fullrows, $ - scatfit=scatfit - - if (N_params() LT 6) then begin - print, 'Syntax - fitansimage(ansimage, nparams, nfibers, npoly, ' - print, ' yrow, tempflux, fluxm=fluxm, nord=nord, nscatbkpts=nscatbkpts, ' - print, ' ymin=ymin, ymax=ymax, fullrows=fullrows)' - return, -1 - endif - - if(NOT keyword_set(fluxm)) then $ - fluxm = make_array(nparams,/long,value=1) - if(NOT keyword_set(nord)) then nord=3 ;quadratic - if(NOT keyword_set(nscatbkpts)) then nscatbkpts=20 ;scattered light - if(NOT keyword_set(ymin)) then ymin=0.0 - if(NOT keyword_set(ymax)) then ymax=2047.0 - if(NOT keyword_set(fullrows)) then fullrows=2048 - - nrows = n_elements(yrow) - - - ynorm = (2.0*yrow-(ymax+ymin))/(ymax-ymin) - yfnorm = (2.0*findgen(fullrows)-(ymax+ymin))/(ymax-ymin) - fitans = fltarr(nparams*nfibers+npoly,fullrows) - newflux = fltarr(nfibers,fullrows) - iTrace = lindgen(nfibers)*nparams - iParams = lindgen(nparams) - iFiber = findgen(nfibers) - - for i=0,nfibers-1 do fitans[i*nparams,*] = 1.0 - - fillans = where(smallflux GT 0) - if (nfibers NE 320 OR fillans[0] EQ -1) then $ - splog, 'ABORT: ansimage not well defined for traces' $ - else begin - - answeight = fltarr(nrows, 20, 16) - answeight[fillans] = 1.0 - - ; smallans will be used to fit a smooth function for fitans - for i=1,nparams-1 do begin - - smallans = fltarr(nrows, 20, 16) - smallans[fillans] = $ - (transpose(ansimage[itrace+i, *]))[fillans] $ - / smallflux[fillans] - - squashweight = total(answeight,2) - xy2traceset,yrow # replicate(1,16),djs_median(smallans,2),set1, $ - ncoeff=nord, xmin=ymin, xmax=ymax, invvar= squashweight - - x = findgen(fullrows) # replicate(1,16) - traceset2xy, set1, x, tempans - - x = ((findgen(16) + 0.5)*20) # replicate(1,fullrows) - xy2traceset,x, transpose(tempans), finalsigmaset, $ - ncoeff=nord+2, xmin=0, xmax=nfibers - - x = findgen(nfibers) # replicate(1,fullrows) - traceset2xy, finalsigmaset, x, finalshift - - fitans[iTrace+i,*] = finalshift - endfor - endelse - - ;-------------------------------------------------------- - ; Normalize fitans with total flux - ; - - for i=0,nfibers - 1 do $ - newflux[i,*] = fluxm # fitans[iParams+i*nparams,*] - - for j=0,nparams-1 do $ - fitans[j+iTrace,*] = fitans[j+iTrace,*] / newflux - - - ;--------------------------------------------------- - ; Now do background terms - ; First expand terms into nrows x nrows image - ; Without the step function at halfway - - scatfit = fltarr(fullrows,fullrows) - - for i=0, nPoly-1 do begin - fullbkpt = slatec_splinefit(ynorm, ansimage[nfibers*nparams+i,*], $ - coeff, nbkpts = nscatbkpts) - fitans[nfibers*nparams+i,*] = slatec_bvalu(yfnorm, fullbkpt, coeff) - endfor - - fullcheb = fchebyshev(yfnorm, nPoly) - for i=0,fullrows-1 do $ - scatfit[*,i] = fullcheb # fitans[nfibers*nparams:*,i] - - return, fitans - -end - diff --git a/pro/spec2d/fitdispersion.pro b/pro/spec2d/fitdispersion.pro index b5c845c37..ed33a6013 100644 --- a/pro/spec2d/fitdispersion.pro +++ b/pro/spec2d/fitdispersion.pro @@ -168,11 +168,11 @@ function fitdispersion, arc_flux, arc_fluxivar, xcen_inp, $ ncoeff=ncoeff, xmin=xmin, xmax=xmax, maxdev=0.2 if keyword_set(arc_test_file) then begin - mwrfits, width, arc_test_file, /create - mwrfits, gmask, arc_test_file - mwrfits, width_bundle, arc_test_file - mwrfits, width_final, arc_test_file - mwrfits, dispset, arc_test_file + mwrfits_named, width, arc_test_file, name='WIDTH',/create + mwrfits_named, gmask, arc_test_file, name='GMASK' + mwrfits_named, width_bundle, arc_test_file, name='WIDTH_BUNDLE' + mwrfits_named, width_final, arc_test_file, name='WIDTH_FINAL' + mwrfits_named, dispset, arc_test_file, name='DISPSET' endif ;---------- diff --git a/pro/spec2d/fitsn.pro b/pro/spec2d/fitsn.pro index 4857091fb..65e9a9c99 100644 --- a/pro/spec2d/fitsn.pro +++ b/pro/spec2d/fitsn.pro @@ -52,7 +52,7 @@ function fitsn, mag, snvec, sigrej=sigrej, maxiter=maxiter, redden=redden, $ sncode=sncode, filter=filter, sigma=sigma, specsnlimit=specsnlimit1, $ sn2=sn2, dered_sn2=dered_sn2 - + splog, prelog=sncode common com_fitsn, specsnlimit if (NOT keyword_set(sigrej)) then sigrej = 3 @@ -96,7 +96,10 @@ function fitsn, mag, snvec, sigrej=sigrej, maxiter=maxiter, redden=redden, $ splog, 'Expanded fit range contains ', ngood, ' values' endif ;print,ngood,"TEST" - if (ngood LE 2) then return, 0 + if (ngood LE 2) then begin + splog, prelog = '' + return, 0 + endif logsn = snvec*0.0 - 1.0 ; Arbitrarily set bad values to -1, though these ; values are masked from the fit anyway @@ -104,8 +107,6 @@ function fitsn, mag, snvec, sigrej=sigrej, maxiter=maxiter, redden=redden, $ if (ngood GE 3) then begin coeffs = [median(logsn[igood] - slope * mag[igood]), slope] - ; JEB - letting the slope free - ;coeffs = linfit( mag[igood], logsn[igood], /double) yfit = coeffs[0] + coeffs[1] * mag sigma = djsig(logsn[igood] - yfit[igood], sigrej=sigrej) sn2 = 10^(2.0*poly(snmag,coeffs)) @@ -116,7 +117,10 @@ function fitsn, mag, snvec, sigrej=sigrej, maxiter=maxiter, redden=redden, $ ; for i=0, maxiter-1 do begin ; igood = where(mask, ngood) -; if (ngood LT 3) then return, 0 +; if (ngood LT 3) then begin +; splog, prelog = '' +; return, 0 +; endif ; coeffs = poly_fit(mag[igood], logsn[igood], 1, /double) ; yfit = poly(mag, coeffs) ; sn2 = 10^(2.0*poly(snmag,coeffs)) @@ -124,10 +128,16 @@ function fitsn, mag, snvec, sigrej=sigrej, maxiter=maxiter, redden=redden, $ ; diff = logsn - yfit ; djs_iterstat, diff[igood], sigrej=sigrej, sigma=sigma, mask=smask ; treject = total(1-smask) -; if (treject EQ 0) then return, coeffs +; if (treject EQ 0) then begin +; splog, prelog = '' +; return, coeffs +; endif ; ; mask[igood] = mask[igood] * smask -; if (total(mask) LE 2) then return, 0 +; if (total(mask) LE 2) then begin +; splog, prelog = '' +; return, 0 +; endif ; endfor ;---------- @@ -144,7 +154,7 @@ function fitsn, mag, snvec, sigrej=sigrej, maxiter=maxiter, redden=redden, $ 'z' : dered_sn2 = sn2 ;+ coeffs[1]*redden[4] endcase endif - + splog, prelog = '' return, coeffs end ;------------------------------------------------------------------------------ diff --git a/pro/spec2d/fitspectraresol.pro b/pro/spec2d/fitspectraresol.pro index a48f931bf..bff7c7544 100644 --- a/pro/spec2d/fitspectraresol.pro +++ b/pro/spec2d/fitspectraresol.pro @@ -202,13 +202,13 @@ function fitspectraresol, arc_flux, arc_fluxivar, xcen_inp, wset, $ if keyword_set(arc_test_file) then begin ; debug_fits = 'fitspectraresol.fits' - mwrfits, resol, arc_test_file, /create - mwrfits, gmask, arc_test_file - mwrfits, resol_bundle, arc_test_file - mwrfits, resol_final, arc_test_file - mwrfits, reslset, arc_test_file - mwrfits, waves, arc_test_file - mwrfits, spc_r, arc_test_file + mwrfits_named, resol, arc_test_file, name='RESOL', /create + mwrfits_named, gmask, arc_test_file, name='GMASK' + mwrfits_named, resol_bundle, arc_test_file, name='RESOL_BUNDLE' + mwrfits_named, resol_final, arc_test_file, name='RESOL_FINAL' + mwrfits_named, reslset, arc_test_file, name='RESLSET' + mwrfits_named, waves, arc_test_file, name='WAVES' + mwrfits_named, spc_r, arc_test_file, name='SPC_R' endif ;---------- diff --git a/pro/spec2d/fitwithmx.pro b/pro/spec2d/fitwithmx.pro deleted file mode 100644 index 74a82c34a..000000000 --- a/pro/spec2d/fitwithmx.pro +++ /dev/null @@ -1,48 +0,0 @@ -function fitwithmx, invset, lambda, xpos, nord=nord -; -; lambda is log 10 wavelength -; - if (NOT keyword_set(nord)) then nord=4 - ndim = (size(xpos))[0] - if (ndim NE 2) then $ - message, 'xpos is not 2d' - nfiber = (size(xpos))[1] - nline = (size(xpos))[2] - -; evaluate invset at every lambda - pix1 = traceset2pix(invset,lambda) - - x=findgen(nfiber)/float(nfiber) - xnew = xpos - -;--------------------------------------------------------------------------- -; Poly fits for each arcline -;--------------------------------------------------------------------------- - - for i=0,nline-1 do begin - mx=pix1[*,i] - dif=xpos[*,i]-mx - if (!version.release LT '5.4') then begin - dum=poly_fit(x,dif,nord,yfit) - endif else begin - dum=poly_fit(x,dif,nord,yfit=yfit,/double) - endelse - - res1=yfit-dif - good=abs(res1) lt 4*stddev(res1,/double) - good=abs(res1) lt 4*stddev(res1*good,/double) - if (!version.release LT '5.4') then begin - kent=polyfitw(x,dif,good,nord,yfit) - endif else begin - kent=polyfitw(x,dif,good,nord,yfit,/double) - endelse - - xnew[*,i] = mx+yfit - endfor - - return, xnew -end - - - - diff --git a/pro/spec2d/flux2maggie.pro b/pro/spec2d/flux2maggie.pro deleted file mode 100644 index 1d894c8e1..000000000 --- a/pro/spec2d/flux2maggie.pro +++ /dev/null @@ -1,73 +0,0 @@ -;+ -; NAME: -; flux2maggie -; -; PURPOSE: -; Integrate a spectrum under filter curves to get maggies or magnitudes -; -; CALLING SEQUENCE: -; spectroflux = flux2maggie( objflux, waveimg=, _EXTRA=EXTRA, mag=mag ) -; -; INPUTS: -; objflux - Flux image in units of 10^-17 erg/s/cm^2/Ang [NPIX,NOBJ] -; waveimg - Wavelength image in Angstroms [NPIX,NOBJ], or this could -; be a single vector if the wavelength mapping is the same -; for all traces (note the latter is faster to compute) -; -; OPTIONAL INPUTS: -; -; OPTIONAL KEYWORDS: -; EXTRA - Keywords for FILTER_THRU() -; -; OUTPUTS: -; spectroflux- Integrated response in all 5 SDSS filters, ordered ugriz; -; dimensions are [NOBJ,5] or [5] if NOBJ=1 -; -; OPTIONAL OUTPUTS: -; mag - Magnitudes in all 5 SDSS filters, ordered ugriz; -; dimensions are [NOBJ,5] or [5] if NOBJ=1 -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; filter_thru() -; -; REVISION HISTORY: -; 08-Apr-2009 Written by D. Schlegel, LBNL -;- -;------------------------------------------------------------------------------ -function flux2maggie, objflux, waveimg=waveimg, mag=mag, $ - _EXTRA=KeywordsForFilterThru - - dims = size(objflux, /dimens) - npix = dims[0] - if (npix EQ 0) then $ - message, 'FLUX not defined' - if (n_elements(dims) EQ 1) then nobj = 1 $ - else nobj = dims[1] - - dim2 = size(waveimg, /dimens) - if (dim2[0] NE dims[0]) then $ - message, 'Dimensions of FLUX and WAVE do not agree' - if (n_elements(dim2) GT 1) then begin - if (dim2[1] NE dims[1]) then $ - message, 'Dimensions of FLUX and WAVE do not agree' - endif - - spectroflux = fltarr(5,nobj) - - flambda2fnu = waveimg^2 / 2.99792e18 - fthru = filter_thru(objflux * rebin(flambda2fnu,npix,nobj), $ - waveimg=waveimg, _EXTRA=KeywordsForFilterThru) - spectroflux = transpose(fthru) * 10^((22.5 + 48.6 - 2.5*17.)/2.5) - - if (arg_present(mag)) then $ - mag = 22.5 - 2.5*alog10(spectroflux) - - return, spectroflux -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/flux_distortion.pro b/pro/spec2d/flux_distortion.pro index 9e0cab82b..87728e674 100644 --- a/pro/spec2d/flux_distortion.pro +++ b/pro/spec2d/flux_distortion.pro @@ -513,6 +513,7 @@ function flux_distortion, objflux, objivar, andmask, ormask, plugmap=plugmap, $ !y.omargin = yomargin dfpsclose + ps2pdf, plotfile endif if (keyword_set(platefile)) then begin diff --git a/pro/spec2d/fluxcorr_new.pro b/pro/spec2d/fluxcorr_new.pro deleted file mode 100644 index d70393395..000000000 --- a/pro/spec2d/fluxcorr_new.pro +++ /dev/null @@ -1,349 +0,0 @@ -;+ -; NAME: -; fluxcorr_new -; -; PURPOSE: -; Compute the frame-by-frame relative scaling for each object on a plate. -; -; CALLING SEQUENCE: -; fluxcorr_new, bsmearfile, rsmearfile, bscifile, rscifile, corrfile -; -; INPUTS: -; bsmearfile - spFrame fits file chosen as blue smear image -; rsmearfile - spFrame fits file chosen as red smear image -; bscifile - spFrame fits file(s) blue science image -; rscifile - spFrame fits file(s) red science image -; corrfile - Fits file to output flux correction vectors. -; -; OPTIONAL KEYWORDS: -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; fluxcorr_new is used to calculate and write to file a low order -; polynomial function which registers the flux in the science exposures -; to the median flux levels in the smear exposures. -; -; Based on S/N, the produced function per fiber can be given by one -; of three methods. For the highest S/N fibers, typically 10\% of the -; fibers including spectrophoto stds, the full 3rd order fit is done. -; For medium S/N fibers, only a one parameter scaling of the best -; spectrophoto correction is produced. -; For the lowest S/N fibers, the spectrophoto correction is used without -; any scaling. Beware, this means a stellar spectrophoto correction -; is applied to all low S/N fibers, even if they are not -; seeing-limited targets. -; -; EXAMPLES: -; -; BUGS: -; Blue wavelength region is hardwired: b1 = findgen(60)*4.0e-3 + 3.568 -; Red wavelength region is hardwired : r1 = findgen(54)*4.0e-3 + 3.756 -; Order of polynomial is hardwired: 3 -; -; PROCEDURES CALLED: -; djs_iterstat -; mrdfits() -; mwrfits -; pixelmask_bits() -; traceset2xy -; xy2traceset -; -; INTERNAL SUPPORT ROUTINES: -; median_rebin(): Used to rebin spectra in large wavelength blocks -; passed in parameter range -; -; REVISION HISTORY: -; 17-Oct-2000 Written by S. Burles -; -;- -;------------------------------------------------------------------------------ -function median_rebin, flux, ivar, loglam, range, mask=mask, sigrej=sigrej - - if NOT keyword_set(sigrej) then sigrej = 20.0 - - nr = (size(range))[2] - ntrace = (size(flux))[2] - - fit = fltarr(nr, ntrace) - mask = fit - - for itrace=0,ntrace-1 do begin - for irange = 0, nr -1 do begin - inside = where(loglam[*,itrace] GE range[0,irange] $ - AND loglam[*,itrace] LT range[1,irange], ninside) - if ninside GT 0 then begin - good = where(ivar[inside,itrace] GT 0, ngood) - - if ngood GT 1 then begin - djs_iterstat, flux[inside[good],itrace], median=md, sigma=sig - fit[irange, itrace] = md - if ngood GT 0.5 * ninside then $ - mask[irange, itrace] = total(ivar[inside[good],itrace]) - sn = sig * sqrt(mask[irange, itrace]) - if sn GT sigrej OR sn LE 0 then mask[irange, itrace] = 0.0 - endif - endif - endfor - endfor - -return, fit -end - -;------------------------------------------------------------------------------ -pro fluxcorr_new, bsmearfile, rsmearfile, bscifile, rscifile, corrfile - - splog, 'Smear image blue=', bsmearfile - splog, 'Smear image red= ', rsmearfile - - ;---------- - ; Read the plug-map file (for identifying sky fibers) - - bsmearflux = mrdfits(bsmearfile,0,bhdr) - bsmearivar = mrdfits(bsmearfile,1) - bsmearmask = mrdfits(bsmearfile,2) - bsmearset = mrdfits(bsmearfile,3) - plugmap = mrdfits(bsmearfile,5) - traceset2xy, bsmearset, xx, bsmearloglam - - b1 = findgen(60)*4.0e-3 + 3.568 - b2 = findgen(60)*4.0e-3 + b1[1] - - brange = transpose([[b1],[b2]]) - bwave = djs_median(brange,1) - - bfit = median_rebin(bsmearflux, bsmearivar, bsmearloglam, brange, $ - mask=bmask) - - - - rsmearflux = mrdfits(rsmearfile,0,rhdr) - rsmearivar = mrdfits(rsmearfile,1) - rsmearmask = mrdfits(rsmearfile,2) - rsmearset = mrdfits(rsmearfile,3) - traceset2xy, rsmearset, xx, rsmearloglam - - r1 = findgen(54)*4.0e-3 + 3.756 - r2 = findgen(54)*4.0e-3 + r1[1] - - rrange = transpose([[r1],[r2]]) - rwave = djs_median(rrange,1) - - rfit = median_rebin(rsmearflux, rsmearivar, rsmearloglam, rrange, $ - mask=rmask) - - bsn = djs_median(bsmearflux * sqrt(bsmearivar),1) - rsn = djs_median(rsmearflux * sqrt(rsmearivar),1) - smearsnmed = transpose([[bsn],[rsn]]) - badval = ( fibermask_bits('NOPLUG') OR fibermask_bits('BADTRACE') $ - OR fibermask_bits('BADFLAT') OR fibermask_bits('BADARC') $ - OR fibermask_bits('NEARWHOPPER') ) - qsmear = (bsmearmask[0,*] OR rsmearmask[0,*]) AND badval - - - ;--------------------------------------------------------- - ; now put blue and red together - ; - - smearflux = [bfit,rfit] - smearivar = [bmask, rmask] - nfiber = (size(smearflux,/dimens))[1] - - ; -------------------------------------------------------- - ; Create basic smear mask - ; - smearmask = lonarr(nfiber) - if (strtrim(sxpar(bhdr, 'FLAVOR'),2) EQ 'smear' AND $ - strtrim(sxpar(rhdr, 'FLAVOR'),2) EQ 'smear') then $ - smearmask = smearmask OR pixelmask_bits('SMEARIMAGE') - - ;---------- - - - wave = [bwave,rwave] # replicate(1,nfiber) - - ncoeff = 3 ; ??? - - nfiles = n_elements(corrfile) - - for ifile=0, nfiles-1 do begin - - splog, 'Fluxing science image blue=', bscifile[ifile] - splog, 'Fluxing science image red=', rscifile[ifile] - - fitimg = smearflux*0.0 + 1.0 - xy2traceset, wave, fitimg, corrset, ncoeff=ncoeff - - corrset.coeff[0,*] = 1.0 - corrset.coeff[1:*,*] = 0.0 - - ; if they are the same, set both high and med SN flagbits - - thismask = smearmask OR pixelmask_bits('SMEARHIGHSN') - thismask = thismask OR pixelmask_bits('SMEARMEDSN') - qsci = lonarr(nfiber) - - ; Special case: If the science image and smear image is the same, - ; then force their ratio to be unity. - - if (NOT (bsmearfile EQ bscifile[ifile] AND $ - rsmearfile EQ rscifile[ifile])) then begin - - thismask = smearmask - bfit = bwave # replicate(0,nfiber) - bmask = bwave # replicate(0,nfiber) - bsn = fltarr(nfiber) - checkblue = 0 - - if bscifile[ifile] NE '' then begin - bsciflux = mrdfits(bscifile[ifile],0) - bsciivar = mrdfits(bscifile[ifile],1) - bscimask = mrdfits(bscifile[ifile],2) - bsciset = mrdfits(bscifile[ifile],3) - traceset2xy, bsciset, xx, bsciloglam - - bfit = median_rebin(bsciflux, bsciivar, bsciloglam, brange, $ - mask=bmask) - bsn = djs_median(bsciflux * sqrt(bsciivar),1) - checkblue = 1 - qsci = qsci OR ( bscimask[0,*] AND badval) - - endif else $ - splog, 'WARNING: no blue science frame for ', corrfile[ifile] - - - rfit = rwave # replicate(0,nfiber) - rmask = rwave # replicate(0,nfiber) - rsn = fltarr(nfiber) - checkred = 0 - - if rscifile[ifile] NE '' then begin - - rsciflux = mrdfits(rscifile[ifile],0) - rsciivar = mrdfits(rscifile[ifile],1) - rscimask = mrdfits(rscifile[ifile],2) - rsciset = mrdfits(rscifile[ifile],3) - traceset2xy, rsciset, xx, rsciloglam - - rfit = median_rebin(rsciflux, rsciivar, rsciloglam, rrange, $ - mask=rmask) - rsn = djs_median(rsciflux * sqrt(rsciivar),1) - checkred = 1 - qsci = qsci OR ( rscimask[0,*] AND badval) - - endif else $ - splog, 'WARNING: no red science frame for ', corrfile[ifile] - - scisnmed = transpose([[bsn],[rsn]]) - - sciflux = [bfit,rfit] - sciivar = [bmask,rmask] - - ;------------------------------------------------------------- - ; 3 levels of S/N - ; level 1: High S/N, independent coefficient solution - ; level 2: Med S/N, Scaled Spectrophoto solution - ; level 3: Low S/N, median spectrophoto solution - - highsn = where((scisnmed[0,*] GT 2.5 OR checkblue EQ 0) $ - AND (scisnmed[1,*] GT 5.0 OR checkred EQ 0) $ - AND smearsnmed[0,*] GT 1.0 $ - AND smearsnmed[1,*] GT 1.0 $ - AND qsci EQ 0 AND qsmear EQ 0) - - spectrophoto = -1L - fibersn = lonarr(nfiber) + 3 - - if highsn[0] NE -1 then begin - - spectrophoto = where(strtrim(plugmap[highsn].objtype,2) EQ $ - 'SPECTROPHOTO_STD', nspectrophoto) - - if spectrophoto[0] EQ -1 then $ - spectrophoto = where(strtrim(plugmap[highsn].objtype,2) EQ $ - 'REDDEN_STD', nspectrophoto) - - fibersn[highsn] = 1 - endif - - if spectrophoto[0] EQ -1 then begin - splog, "WARNING: No spectrophoto with high S/N" - corrset.coeff = 0.0 - endif else begin - - spectrophoto = highsn[spectrophoto] - - - medsn = where((scisnmed[0,*] GT 1.0 $ - OR scisnmed[1,*] GT 2.0 ) $ - AND (smearsnmed[0,*] GT 0.2 $ - OR smearsnmed[1,*] GT 0.5) AND fibersn NE 1 ) - - if medsn[0] NE -1 then fibersn[medsn] = 2 - - xy2traceset, wave, smearflux, highsnset, $ - invvar=smearivar, ncoeff=ncoeff, inputfunc=sciflux, $ - lower = 3, upper = 3 - - traceset2xy, highsnset, wave, highsnimage - - medianset = highsnset - finalset = highsnset - - if nspectrophoto EQ 1 then begin - mediancoeff = highsnset.coeff[*,spectrophoto] - splog, "WARNING: Only 1 spectrophoto with high S/N" - endif else mediancoeff = djs_median(highsnset.coeff[*,spectrophoto],2) - - medianset.coeff = mediancoeff # replicate(1,nfiber) - - traceset2xy, medianset, wave, medianimage - - smearnormflux = smearflux - smearnormivar = smearivar - divideflat, smearnormflux, invvar=smearnormivar, medianimage - - if medsn[0] NE -1 then begin - - xy2traceset, wave, smearnormflux, medsnset, $ - invvar=smearnormivar, ncoeff=1, inputfunc=sciflux, $ - lower = 3, upper = 3, yfit=yy - - finalset.coeff[*,medsn] = mediancoeff # medsnset.coeff[0,medsn] - endif - - lowsn = where(fibersn EQ 3, nlowsn) - if nlowsn GT 0 then $ - finalset.coeff[*,lowsn] = mediancoeff # replicate(1,nlowsn) - - corrset = finalset - traceset2xy, corrset, wave, corrimage - - totalsmearsn = total(smearsnmed,1) - bad = where(djs_median(corrimage,1) GT $ - (4.0+totalsmearsn)*median(corrimage),nbad) - if bad[0] NE -1 then begin - splog, 'Warning: Large deviations in flux correction ' - splog, 'Warning: Replacing with median solution in fibers:', $ - string(bad + 1) - corrset.coeff[*,bad] = mediancoeff # replicate(1,nbad) - fibersn[bad] = 3 - endif - ; Set maskbits and append to end of corrfile - - thismask = thismask OR (fibersn LE 2) * pixelmask_bits('SMEARMEDSN') - thismask = thismask OR (fibersn EQ 1) * pixelmask_bits('SMEARHIGHSN') - - endelse - endif - - mwrfits, corrset, corrfile[ifile], /create - mwrfits, thismask, corrfile[ifile] - - endfor - - return -end diff --git a/pro/spec2d/focalplane.pro b/pro/spec2d/focalplane.pro deleted file mode 100644 index 39c5bdaaa..000000000 --- a/pro/spec2d/focalplane.pro +++ /dev/null @@ -1,285 +0,0 @@ -; This code analyzes the focal plane mapping data taken for plate 174 -; on MJD 51779. See sdss-commish/265 for the posted results. -;------------------------------------------------------------------------------ -pro focal_binplot, xdata, ydata, _EXTRA=EXTRA - - binsz = 50 - nbin = 650 / binsz - xmin = -325 - - xmed = fltarr(nbin) - ymed = fltarr(nbin) - ysig = fltarr(nbin) - - djs_plot, xdata, ydata, _EXTRA=EXTRA - - ;---------- - ; Fit the median Y in bins of 50 mm, and overplot in green. - - for ibin=0, nbin-1 do begin - indx = where(xdata GE (xmin + ibin*binsz) $ - AND xdata LT (xmin + (ibin+1)*binsz)) - ymed[ibin] = median(ydata[indx]) - ysig[ibin] = djsig(ydata[indx]) - xmed[ibin] = xmin + (ibin+0.5)*binsz - djs_oplot, [xmed[ibin]], [ymed[ibin]], color='green', ps=4 - djs_oploterr, xmed[ibin], ymed[ibin], yerr=ysig[ibin], /cap, color='green' -print, xmed[ibin], ymed[ibin], ysig[ibin] - endfor - - ;---------- - ; Fit a sinusoidal curve to the median Y values, and overplot in red. - - bestchisq = 9e9 - for xoffset=0,350,10 do begin - for scale=0.1,3,0.02 do begin - ymodel = sin(scale*(xmed + xoffset) / !radeg) - res = linfit(ymodel, ymed, chisq=chisq) - if (chisq LT bestchisq) then begin - bestchisq = chisq - bestymodel = ymodel - bestscale = scale - bestxoffset = xoffset - bestres = res - endif - endfor - endfor - - print, 'Y = SIN(',bestscale,' * (X + ', bestxoffset,'))' - djs_oplot, xmed, bestres[0] + bestres[1]*bestymodel, color='red' - - return -end - -;------------------------------------------------------------------------------ -pro focal_fit, xfocal, yfocal, xmeasure, ymeasure, weights, xfit, yfit - - dx = 0.03 + 0.02 * (findgen(21) - 10) - dy = -0.02 + 0.02 * (findgen(21) - 10) - scale = 0.9996 + 0.0001 * (findgen(11) - 5) - rot = 0.020 + 0.002 * (findgen(11) - 5) ; In degrees - - bestdist = 1.e9 - - for ix=0, n_elements(dx)-1 do begin - for iy=0, n_elements(dy)-1 do begin - for is=0, n_elements(scale)-1 do begin - for ir=0, n_elements(rot)-1 do begin - cosrot = cos(rot[ir] / !radeg) - sinrot = sin(rot[ir] / !radeg) - xmeasure2 = scale[is] * (xmeasure * cosrot + ymeasure * sinrot) + dx[ix] - ymeasure2 = scale[is] * (ymeasure * cosrot - xmeasure * sinrot) + dy[iy] - dist2 = total(weights * ( (xmeasure2-xfocal)^2 + (ymeasure2-yfocal)^2 )) - if (dist2 LT bestdist) then begin -print,dx[ix],dy[iy],scale[is],rot[ir],dist2 - bestdist = dist2 - xfit = xmeasure2 - yfit = ymeasure2 - endif - endfor - endfor - endfor - endfor - - return -end -;------------------------------------------------------------------------------ -pro focal1 - - !p.thick = 2 - !x.thick = 2 - !y.thick = 2 - dfpsplot, 'focalplane.ps', /color - - filtsz = 21 ; Filter size for median filtering - wrange = [4600., 5600.] ; Wavelength range to average flux - minflux = 200 ; Minimum mean flux to use a fiber - - plugfile = 'plPlugMapM-0174-51775-01.par' - - junk = { filelist, expnum: 0L, dra : 0.0, ddec : 0.0 } - dlist = { filelist, 6124, 0.0, 0.0 } - dlist = [dlist, { filelist, 6125, -1.0, 0.0 }] - dlist = [dlist, { filelist, 6128, 1.0, 0.0 }] - dlist = [dlist, { filelist, 6129, 0.0, -1.0 }] - dlist = [dlist, { filelist, 6130, 0.0, 1.0 }] - dlist = [dlist, { filelist, 6131, 0.0, 0.0 }] - -; dlist = { filelist, 6131, 0.0, 0.0 } - dlist = [dlist, { filelist, 6132, -2.0, 0.0 }] - dlist = [dlist, { filelist, 6133, 2.0, 0.0 }] - dlist = [dlist, { filelist, 6134, 0.0, -2.0 }] - dlist = [dlist, { filelist, 6135, 0.0, 2.0 }] - dlist = [dlist, { filelist, 6136, 0.0, 0.0 }] - -; dlist = { filelist, 6136, 0.0, 0.0 } - dlist = [dlist, { filelist, 6137, -3.0, 0.0 }] - dlist = [dlist, { filelist, 6138, 3.0, 0.0 }] - dlist = [dlist, { filelist, 6139, 0.0, -3.0 }] - dlist = [dlist, { filelist, 6140, 0.0, 3.0 }] - dlist = [dlist, { filelist, 6141, 0.0, 0.0 }] - - ;---------- - ; Construct the data array for the mean fluxes - - nexp = n_elements(dlist) - nfiber = 640 - fluxarr = fltarr(nfiber, nexp) - xyoffset = fltarr(nfiber, 2) - xyofferr = fltarr(nfiber, 2) - - ;---------- - ; Read in the plug map - - yanny_read, plugfile, pp - plug = *pp[0] - plug = sortplugmap(plug) - - ;---------- - ; Read the wavelength mapping - - wsetfile1 = 'wset-51779-0174-00006114-b1.fits' - wset1 = mrdfits(wsetfile1,1) - xx = 0 - traceset2xy, wset1, xx, loglam1 - wsetfile2 = 'wset-51779-0174-00006114-b2.fits' - wset2 = mrdfits(wsetfile2,1) - traceset2xy, wset2, xx, loglam2 - waves = 10.^[[loglam1], [loglam2]] - wmask = waves GE wrange[0] AND waves LE wrange[1] - - ;---------- - ; Read the fluxes and compute the mean in the specified wavelength range - - for iexp=0, nexp-1 do begin - fluxfile1 = 'sci-0174-b1-' + string(dlist[iexp].expnum,format='(i8.8)') $ - + '.fits' - flux1 = mrdfits(fluxfile1) - ivar1 = mrdfits(fluxfile1, 1) - - fluxfile2 = 'sci-0174-b2-' + string(dlist[iexp].expnum,format='(i8.8)') $ - + '.fits' - flux2 = mrdfits(fluxfile2) - ivar2 = mrdfits(fluxfile2, 1) - - flux = [[flux1], [flux2]] - ivar = [[ivar1], [ivar2]] - - ; Interpolate over bad pixels, then median filter... - flux = djs_maskinterp(flux, ivar EQ 0, iaxis=0) - for i=0, nfiber-1 do $ - flux[*,i] = djs_median(flux[*,i], width=filtsz) - - ; Compute the mean flux within the specified wavelength range - fluxarr[*,iexp] = total(flux * wmask, 1) / total(wmask, 1) - - ; Insist that at least 50% of the pixels are good for a fiber, - ; or set the flux equal to zero. - fracgood = total((ivar GT 0) * wmask, 1) / total(wmask ,1) - fluxarr[*,iexp] = fluxarr[*,iexp] * (fracgood GT 0.5) - endfor - - ;---------- - ; Loop over each dimension, finding centroids - - for iaxis=0, 1 do begin - - if (iaxis EQ 0) then begin - iuse = where(dlist.ddec EQ 0) - dx = dlist[iuse].dra - endif else begin - iuse = where(dlist.dra EQ 0) - dx = dlist[iuse].ddec - endelse - - for ifiber=0, nfiber-1 do begin - - if (!version.release LT '5.4') then begin - coeff = poly_fit(dx, transpose(fluxarr[ifiber,iuse]), 2, $ - yfit, junk, junk, corrm) - endif else begin - coeff = poly_fit(dx, transpose(fluxarr[ifiber,iuse]), 2, $ - yfit=yfit, covar=corrm, /double) - endelse - - xyoffset[ifiber,iaxis] = -0.5 * coeff[1] / coeff[2] - xyofferr[ifiber,iaxis] = - 0.5 * sqrt(corrm[1,1]) / coeff[2] $ - + 0.5 * coeff[1] * sqrt(corrm[2,2]) / (coeff[2])^2 - - endfor - endfor - - ;---------- - ; Select good points to fit - - qgood = bytarr(nfiber) + 1 - qgood = qgood AND (fluxarr[*,0] GT minflux) -; for iexp=0, nexp-1 do $ -; qgood = qgood AND (fluxarr[*,iexp] GT minflux) - qgood = qgood AND abs(xyoffset[*,0]) LT 1.5 AND abs(xyoffset[*,1] LT 1.5) $ - AND xyofferr[*,0] LT 0.30 AND xyofferr[*,1] LT 0.30 $ - AND finite(xyoffset[*,0]) AND finite(xyoffset[*,1]) - ibad = where(finite(xyoffset[*,0]) EQ 0 OR finite(xyoffset[*,1]) EQ 0) - if (ibad[0] NE -1) then begin - xyoffset[ibad,0] = 0 - xyoffset[ibad,1] = 0 - endif - - - ;---------- - ; Allow shifts in X, Y, scale and rotation to the measurements - - xfocal = plug.xfocal - yfocal = plug.yfocal - xmeasure = plug.xfocal + xyoffset[*,0] - ymeasure = plug.yfocal + xyoffset[*,1] - focal_fit, xfocal, yfocal, xmeasure, ymeasure, qgood, xfit, yfit - - ;---------- - ; Reject the worst points and refit - - dvec = sqrt( (xfit - xfocal)^2 + (yfit - yfocal)^2 ) - djs_iterstat, dvec, sigrej=3.5, mask=outmask - qgood = qgood * outmask - focal_fit, xfocal, yfocal, xmeasure, ymeasure, qgood, xfit, yfit - - !p.multi = 0 - igood = where(qgood) - pscale = 50 - hsize = !d.x_size / 100. - csize = 1.6 - plot, [0], [0], xrange=[-350,350], yrange=[-350,350], /xstyle, /ystyle, $ - xtitle='X focal [mm]', ytitle='Y focal [mm]', $ - title='Focal Plane Distortions at 5000 Ang', charsize=csize - arrow, xfocal[igood], yfocal[igood], $ - (xfocal + pscale*(xfit-xfocal))[igood], $ - (yfocal + pscale*(yfit-yfocal))[igood], $ - hsize=hsize, /data - arrow, -300, -300, -300+pscale, -300, hsize=hsize, /data - xyouts, -300+pscale+20, -300, '1 arcsec', charsize=csize - -print,djsig((xfit-xfocal)[igood]),djsig((yfit-yfocal)[igood]) -print,djsig( sqrt( ((xfit-xfocal)[igood])^2 + ((yfit-yfocal)[igood])^2 ) ) - -wait, 5 - !p.multi = [0,2,2] - yrange = [-1,1] - psym = 1 - symsize = 0.5 - focal_binplot, xfocal[igood], (xfit-xfocal)[igood], $ - psym=psym, symsize=symsize, yrange=yrange, $ - xtitle='X focal [mm]', ytitle='\Delta X [arcsec]', $ - title='Focal Plane Mapping at 5000 Ang' - focal_binplot, xfocal[igood], (yfit-yfocal)[igood], $ - psym=psym, symsize=symsize, yrange=yrange, $ - xtitle='X focal [mm]', ytitle='\Delta Y [arcsec]' - focal_binplot, yfocal[igood], (xfit-xfocal)[igood], $ - psym=psym, symsize=symsize, yrange=yrange, $ - xtitle='Y focal [mm]', ytitle='\Delta X [arcsec]' - focal_binplot, yfocal[igood], (yfit-yfocal)[igood], $ - psym=psym, symsize=symsize, yrange=yrange, $ - xtitle='Y focal [mm]', ytitle='\Delta Y [arcsec]' - - dfpsclose - -end diff --git a/pro/spec2d/genflatmask.pro b/pro/spec2d/genflatmask.pro deleted file mode 100644 index 8de5a538b..000000000 --- a/pro/spec2d/genflatmask.pro +++ /dev/null @@ -1,122 +0,0 @@ -;+ -; NAME: -; genflatmask -; -; PURPOSE: -; Read or generate a mask for pixels to ignore when generating flat-fields. -; -; CALLING SEQUENCE: -; maskimg = genflatmask( [ flatname, spectrographid=, color=, indir=, ] ) -; -; OPTIONAL INPUTS: -; flatname - Name of flat-field image -; Note that many flats from many nights can be combined. -; -; OPTIONAL KEYWORDS: -; spectrographid - Spectrograph ID (1 or 2); reqired if FLATNAME not set. -; color - Spectrograph color ('red' or 'blue'); -; reqired if FLATNAME not set. -; indir - Input directory for FLATNAME; default to '.' -; -; OUTPUTS: -; maskimg - Mask image with 0=good, 1=bad -; -; COMMENTS: -; If FLATNAME is specified, then a bad pixel mask is generated from -; that flat-field image assuming it has a mean value approximately equal -; to one. If not, then read the mask from the distribution of IDLSPEC2D -; in the "etc" subdirectory. -; -; Mask values =0 for good pixels, =1 for bad. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; mrdfits() -; readfits() -; -; DATA FILES: -; $IDLSPEC2D_DIR/etc/flatmask-b1.fits.gz -; $IDLSPEC2D_DIR/etc/flatmask-b2.fits.gz -; $IDLSPEC2D_DIR/etc/flatmask-r1.fits.gz -; $IDLSPEC2D_DIR/etc/flatmask-r2.fits.gz -; -; REVISION HISTORY: -; 16-Dec-1999 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -function genflatmask, flatname, spectrographid=spectrographid, color=color, $ - indir=indir - - if (keyword_set(flatname)) then begin - - if (NOT keyword_set(indir)) then indir = '.' - - if (keyword_set(indir)) then inpath = filepath(flatname, root_dir=indir) $ - else inpath = flatname - fullname = (findfile(inpath, count=ct))[0] - if (ct NE 1) then $ - message, 'Cannot find image ' + flatname - - flatimg = readfits(flatname) - dims = size(flatimg,/dimens) - nx = dims[0] - ny = dims[1] - - ; First mask all points less than 0.5 and everything within NGROW pixels - - ngrow = 2 - maskimg1 = flatimg LT 0.5 - ; Remove edge effects... - maskimg1[0,*] = 0 - maskimg1[nx-1,*] = 0 - maskimg1[*,0] = 0 - maskimg1[*,ny-1] = 0 - maskimg1 = smooth(maskimg1 * (2*ngrow+1)^2, ngrow) GT 0 - - ; Now find large regions of points less than 0.9, - ; and grow them by many pixels - maskimg2 = flatimg LT 0.9 - ; Remove edge effects... - maskimg2[0,*] = 0 - maskimg2[nx-1,*] = 0 - maskimg2[*,0] = 0 - maskimg2[*,ny-1] = 0 - maskimg2 = smooth((smooth(maskimg2+0.0,7,/edge) GT 0.5) +0., 35) GT 0.15 - - maskimg = maskimg1 OR maskimg2 - - endif else begin - - if (NOT keyword_set(spectrographid) OR NOT keyword_set(color)) then $ - message, 'Must specify SPECTROGRAPHID and COLOR if FLATNAME not set' - - ; Generate the name of the mask file in the IDLSPEC2D distribution, - ; and the name of the temporary gunzip-ed version. - - rootname = 'flatmask-' + string(format='(a1,i1)',color,spectrographid) $ - + '.fits' - masknamein = filepath(rootname+'.gz', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='etc') -; masknameout = filepath(rootname, root_dir=tmpdir) - - ; Make sure that the mask file exists - - junk = findfile(masknamein, count=ct) - if (ct NE 1) then $ - message, 'Cannot find mask ' + masknamein - - ; Gunzip the mask file, read it, and dispose of the file - -; spawn, 'zcat ' + masknamein + ' > ' + masknameout -; maskimg = readfits(masknameout) -; rmfile, masknameout - maskimg = mrdfits(masknamein) - - endelse - - return, maskimg -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/get_mjd_dir.pro b/pro/spec2d/get_mjd_dir.pro deleted file mode 100644 index 5f4c69396..000000000 --- a/pro/spec2d/get_mjd_dir.pro +++ /dev/null @@ -1,132 +0,0 @@ -;+ -; NAME: -; get_mjd_dir -; -; PURPOSE: -; Get directory list of matching MJD directories. -; -; CALLING SEQUENCE: -; mjdlist = get_mjd_dir( [topdir, mjd=, mjstart=, mjend= ]) -; -; INPUTS: -; -; OPTIONAL INPUTS: -; topdir - Search for MJD directories under this top level directory. -; mjd - Look for raw data files in TOPINDIR/MJD; default to all -; subdirectories. Note that this need not be integer-valued, -; but could be for example '51441_test'. Wildcards are allowed, -; e.g. '514*'. Leading zeros are significant, so that '1*' -; will not match the directory '0123'. -; mjstart - Starting MJD. -; mjend - Ending MJD. -; -; OUTPUT: -; mjdlist - List of matching directories (string array). -; -; COMMENTS: -; Do not include in the output list any empty directories. -; -; EXAMPLES: -; If the path '/data/rawdata' contains the subdirectories '0123', '0124', -; '0200', 'test0123' and the file '0125', then: -; IDL> print, get_mjd_dir('/data/rawdata') -; 0123 0124 0200 test -; IDL> print, get_mjd_dir('/data/rawdata', mjstart=124) -; 0124 0200 -; IDL> print, get_mjd_dir('/data/rawdata', mjd='012*') -; 0123 0124 -; -; BUGS: -; -; PROCEDURES CALLED: -; fileandpath() -; -; REVISION HISTORY: -; 30-May-2000 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -function get_mjd_dir, topdir, mjd=mjd, mjstart=mjstart, mjend=mjend, alldirs=alldirs - - ;---------- - ; Save the current directory name, and change directories to TOPDIR - - if (keyword_set(topdir)) then begin - ; Return if the TOPDIR is not a directory - if (file_test(topdir, /directory) EQ 0) then return, '' - cd, topdir, current=olddir - endif else begin - cd, current=olddir - cd, olddir - topdir = olddir - endelse - - ;---------- - ; Find all directories, or all directories matching MJD - - if (keyword_set(mjd)) then begin - if (NOT keyword_set(topdir)) then topdir = '.' - for i=0, N_elements(mjd)-1 do begin - tmpstring1 = filepath(strtrim(string(mjd[i]),2), root_dir=topdir) - tmpstring = keyword_set(tmpstring) ? $ - [tmpstring,tmpstring1] : tmpstring1 - endfor - mjdlist = file_search(tmpstring, /test_directory) - mjdlist = mjdlist[uniq(mjdlist, sort(mjdlist))] - endif else begin - mjdlist = file_search(/test_directory) - endelse - if (NOT keyword_set(mjdlist)) then return, '' - - ;---------- - ; Strip leading directory names from MJDLIST. - - mjdonly = strarr(n_elements(mjdlist)) - for imjd=0, N_elements(mjdlist)-1 do begin - mjdonly[imjd] = fileandpath(mjdlist[imjd], path=newtopdir) - - ; Remove any directories not >= MJDSTART or <= MJDEND, if those - ; keywords are set. - if (keyword_set(mjstart) OR keyword_set(mjend)) then begin - cc = strmid(mjdonly[imjd],0,1) ; first character of this dir name - if (cc GE '0' AND cc LE '9') then begin - fixmjd = long(mjdonly[imjd]) - if (keyword_set(mjstart)) then $ - if (fixmjd LT long(mjstart)) then $ - mjdonly[imjd] = '' - if (keyword_set(mjend)) then $ - if (fixmjd GT long(mjend)) then $ - mjdonly[imjd] = '' - endif else begin - ; Reject this directory name because it does not start w/ a number - mjdonly[imjd] = '' - endelse - endif - - ; Remove any directories that do not contain any files (or that are - ; not directories at all). - ; Comment-out this test, since it's so slow. -; if (keyword_set(mjdonly[imjd])) then begin -; junk = findfile(filepath('', root_dir=mjdlist[imjd]), count=ct) -; if (ct EQ 0) then mjdonly[imjd] = '' -; endif - - if not keyword_set(alldirs) then begin - ; remove any non-integer directory names from mjdonly - if not valid_num(mjdonly[imjd]) then mjdonly[imjd] = '' - endif - - endfor - - ii = where(mjdonly NE '', ct) - if (ct EQ 0) then begin - return, '' - endif else begin - mjdlist = mjdlist[ii] - mjdonly = mjdonly[ii] - endelse - - cd, olddir - if (keyword_set(newtopdir)) then topdir = newtopdir - return, mjdonly -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/idlspec2dbhm_version.pro b/pro/spec2d/idlspec2dbhm_version.pro deleted file mode 100644 index 0e55fa62d..000000000 --- a/pro/spec2d/idlspec2dbhm_version.pro +++ /dev/null @@ -1,18 +0,0 @@ -;+ -; NAME: -; idlspec2dbhm_version -; PURPOSE: -; Return the version name for the black hole mapper idlspec2d product -; CALLING SEQUENCE: -; vers = idlspec2dbhm_version() -; OUTPUTS: -; vers - Version name for the product idlspec2d -; COMMENTS: -; Depends on shell script in $IDLSPEC2D_DIR/bin -;- -;------------------------------------------------------------------------------ -function idlspec2dbhm_version - spawn, 'idlspec2d_version', stdout, /noshell - return, stdout[0] -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/locateskylines.pro b/pro/spec2d/locateskylines.pro index 6d3a031bf..61c85e386 100644 --- a/pro/spec2d/locateskylines.pro +++ b/pro/spec2d/locateskylines.pro @@ -185,7 +185,7 @@ pro locateskylines, skylinefile, fimage, ivar, wset, xarc, arcshift=arcshift, $ if keyword_set(maxlim) then begin mxl=maxlim endif else begin - mxl=3.5 + mxl=5.5 endelse if (maxshift GT mxl) then begin;3.5 splog, 'WARNING: Maximum sky-line shift is ', maxshift, ' (DISABLING)' diff --git a/pro/spec2d/logsheet.pro b/pro/spec2d/logsheet.pro deleted file mode 100644 index 19ba5d499..000000000 --- a/pro/spec2d/logsheet.pro +++ /dev/null @@ -1,156 +0,0 @@ -;+ -; NAME: -; logsheet -; -; PURPOSE: -; Make a summary of header keywords in a directory of raw SDSS spectro files. -; -; CALLING SEQUENCE: -; logsheet, [mjd=, camera=, /collimator, outfile=] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd - Directory name; default to largest numbered MJD -; matching the directory "$BOSS_SPECTRO_DATA/?????". -; camera - Camera name of files to list; '??' for all cameras; -; default to 'b1' -; collimator - Include collimator positions -; outfile - Output file -; -; OUTPUTS: -; -; COMMENTS: -; First look at files matching "sdR*.fit.gz" in the directory -; $BOSS_SPECTRO_DATA/$MJD, and if none found then look for files -; matching "sdR*.fit". -; -; EXAMPLES: -; Print a log sheet of the most recent MJD: -; IDL> logsheet -; -; Print a log sheet of the most recent MJD, but only for the 'b1' camera: -; IDL> logsheet, camera='b1' -; -; Print a log sheet of the spectroscopic data from MJD=52000 (if it -; still exists on disk), and write to the file 'junk.log'. -; IDL> logsheet, mjd=52000, outfile='junk.log' -; -; PROCEDURES CALLED: -; djs_filepath() -; sdsshead() -; sxpar() -; -; REVISION HISTORY: -; 06-Oct-1999 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro logsheet, mjd=mjd, camera=camera, collimator=collimator, outfile=outfile - - quiet = !quiet - !quiet = 1 - - if (NOT keyword_set(camera)) then camera = 'b1' - - ;---------- - ; Set input directory for sdR files - - rawdata_dir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(rawdata_dir)) then $ - rawdata_dir = '/data/spectro' - - ;---------- - ; If MJD is not specified, then find the most recent MJD for output files - - if (NOT keyword_set(mjd)) then begin - mjdlist = get_mjd_dir(rawdata_dir, mjstart=1, mjend=99999, mjd='?????') - mjd = (reverse(mjdlist[sort(mjdlist)]))[0] - splog, 'Selecting MJD=', mjd, ' (override this with MJD keyword)' - endif - - ;---------- - ; First look at files matching "sdR*.fit.gz", and if none found - ; then look for files matching "sdR*.fit". - - mjdstr = string(mjd, format='(i5.5)') - filename = 'sdR-' + camera + '-*.fit*' - fullname = findfile(djs_filepath(filename+'.gz', $ - root_dir=rawdata_dir, subdir=mjdstr), count=nfile) - if (nfile EQ 0) then $ - fullname = findfile(djs_filepath(filename, $ - root_dir=rawdata_dir, subdir=mjdstr), count=nfile) - - if (nfile EQ 0) then begin - print, 'No files found.' - !quiet = quiet - return - endif - - ; Open output file - if (keyword_set(outfile)) then begin - openw, olun, outfile, /get_lun - endif else begin - olun = -1 - endelse - - ; Remove the path from the file names - shortname = strarr(nfile) - for i=0, nfile-1 do begin - res = str_sep(fullname[i],'/') - shortname[i] = res[N_elements(res)-1] - endfor - - ; Sort the files based upon exposure number + camera number - isort = sort( strmid(shortname,7,8) + strmid(shortname,4,2) ) - fullname = fullname[isort] - shortname = shortname[isort] - - printf, olun, $ - 'UT FILENAME NAME PLATE CART EXPTIME FLAVOR QUALITY ' - printf, olun, $ - '------- --------------- -------------- ----- ----- ------- --------- ---------' - - for i=0, nfile-1 do begin - hdr = sdsshead(fullname[i]) - - jd = 2400000.5D + sxpar(hdr, 'TAI-BEG') / (24.D*3600.D) - caldat, jd, jd_month, jd_day, jd_year, jd_hr, jd_min, jd_sec - utstring = string(jd_hr, jd_min, format='(i2.2,":",i2.2," Z")') - - printname = strmid(shortname[i],0,15) - plugname = sxpar(hdr, 'NAME') + ' ' - plateid = sxpar(hdr, 'PLATEID') - cartid = sxpar(hdr, 'CARTID') - exptime = sxpar(hdr, 'EXPTIME') - flavor = sxpar(hdr, 'FLAVOR') + ' ' - quality = sxpar(hdr, 'QUALITY') + ' ' - if (keyword_set(collimator)) then $ - collstring = string(sxpar(hdr, 'COLLA'),format='(i6)') $ - + string(sxpar(hdr, 'COLLB'),format='(i6)') $ - + string(sxpar(hdr, 'COLLC'),format='(i6)') + ' ' $ - else $ - collstring = '' - - ; Put a blank line before a new plate - if (i EQ 0) then lastplate = plateid - if (plateid NE lastplate) then begin - printf, olun, ' ' - lastplate = plateid - endif - - printf, olun, utstring, printname, $ - plugname, plateid, cartid, exptime, flavor, quality, collstring, $ - format='(a7, " ", a15, " ", a14, " ", i5, " ", i5, f8.1, " ", a9, " ", a9, a)' - endfor - - ; Close output file - if (keyword_set(outfile)) then begin - close, olun - free_lun, olun - endif - - !quiet = quiet - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/make_skyinvvar.pro b/pro/spec2d/make_skyinvvar.pro deleted file mode 100644 index f2c8c544c..000000000 --- a/pro/spec2d/make_skyinvvar.pro +++ /dev/null @@ -1,75 +0,0 @@ -;+ -; NAME: -; make_skyinvvar -; -; PURPOSE: -; To reconstruct the contribution of the sky and detector background -; to the total variance. Use spPlate*fits files. -; -; CALLING SEQUENCE: -; skyinvvar = make_skyinvvar(filename) -; -; INPUTS: -; filename - Input spPlate file name -; i.e. 'spPlate-0858-52316.fits' -; -; OPTIONAL INPUTS: -; -; OUTPUT: -; skyinnvar - Inverse variance as derived from a polynomial fit of -; variance vs. flux (size [npix]) -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Return 0's on failure -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 18-Jun-2002 Written by Scott Burles, MIT -;- -;------------------------------------------------------------------------------ -function make_skyinvvar, spplatefilename, ncoeff=ncoeff - - if NOT keyword_set(ncoeff) then ncoeff=3 - - if (size(spplatefilename,/tname) NE 'STRING') then return, 0 - filename = spplatefilename[0] - - flux = mrdfits(filename,0,hdr) - invvar = mrdfits(filename,1) - - skyestimate = 0 - if (size(invvar))[0] NE 2 then return, 0 - - - npix = (size(invvar))[1] - nfiber = (size(invvar))[2] - - x = transpose(flux) - it = transpose(invvar) - mask = it GT 0 - y = 1.0/(it + (mask EQ 0)) - xy2traceset, x, y, tset, invvar=mask*it, ncoeff=ncoeff, yfit=yfit - - getzeropoint = transpose(fltarr(npix)) -; -; Evaluate tset at zero flux to get background variance estimate -; - traceset2xy, tset, getzeropoint, skyvariance - -; -; Return inverse variance of sky background: -; - skyinvvar = 1.0/(skyvariance + (skyvariance LE 0)) * (skyvariance GT 0) - - return, skyinvvar -end - diff --git a/pro/spec2d/match_trace.pro b/pro/spec2d/match_trace.pro index cb7d42ee8..a45e4455d 100644 --- a/pro/spec2d/match_trace.pro +++ b/pro/spec2d/match_trace.pro @@ -47,8 +47,8 @@ ;- ;------------------------------------------------------------------------------ function match_trace, image, invvar, xcen, xpoly=xpoly, ypoly=ypoly, $ - first=first, maxiter=maxiter, radius=radius - + first=first, maxiter=maxiter, radius=radius, sos=sos +on_error, 2 if NOT keyword_set(xpoly) then xpoly=3 if NOT keyword_set(ypoly) then ypoly=3 if NOT keyword_set(maxiter) then maxiter=10 @@ -119,11 +119,20 @@ function match_trace, image, invvar, xcen, xpoly=xpoly, ypoly=ypoly, $ alpha = full1 # full2 beta = full1 # diff[*] + CATCH, Error_status + IF Error_status NE 0 THEN BEGIN + splog, 'Error index: ', Error_status + splog, 'ABORT: ERROR in MATCH_TRACE: ', !ERROR_STATE.MSG + ; Handle the error by extending A: + if keyword_set(sos) then return, 0 + CATCH, /CANCEL + ENDIF + choldc, alpha, p ans = cholsol(alpha,p,beta) shift[*] = full2 # ans - - + CATCH, /CANCEL + outmask = 0 qdone = djs_reject(diff, shift, outmask=outmask, $ invvar=ivar,upper=8,lower=8) diff --git a/pro/spec2d/mjd_match.pro b/pro/spec2d/mjd_match.pro deleted file mode 100644 index 10ce7d3ca..000000000 --- a/pro/spec2d/mjd_match.pro +++ /dev/null @@ -1,59 +0,0 @@ -;+ -; NAME: -; mjd_match -; -; PURPOSE: -; Decide if any of these MJD's are within the bounds specified by -; MJD,MJSTART,MJEND. -; -; CALLING SEQUENCE: -; qmjd = mjd_match(mjdlist, [mjd=, mjstart=, mjend=]) -; -; INPUTS: -; mjdlist - One MJD or an array of MJD's. -; -; OPTIONAL INPUTS: -; mjd - Match against these specific MJD's. -; mjstart - Starting MJD. -; mjend - Ending MJD. -; -; OUTPUT: -; qmjd - Set to 1 if any of the MJD's in MJDLIST are within -; the bounds specified by MJD,MJSTART,MJEND. -; Otherwise, set to 0. -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 22-Aug-2001 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -function mjd_match, mjdlist, mjd=mjd, mjstart=mjstart, mjend=mjend - - qmjd = 1B - ; If MJD keyword set, then QMJD=1 only if any of the - ; elements of MJDLIST1 agree with those in MJD. - if (keyword_set(mjd)) then $ - qmjd = qmjd AND ((where( $ - mjdlist # (lonarr(n_elements(mjd))+1) - $ - (lonarr(n_elements(mjdlist))+1) # mjd EQ 0))[0] NE -1) - - ; If MJSTART keyword set, then QMJD=1 only if any of the - ; elements of MJDLIST1 is >= MJSTART. - if (keyword_set(mjstart)) then $ - qmjd = qmjd AND ((where(mjdlist GE mjstart))[0] NE -1) - - ; If MJEND keyword set, then QMJD=1 only if any of the - ; elements of MJDLIST1 is <= MJEND. - if (keyword_set(mjend)) then $ - qmjd = qmjd AND ((where(mjdlist LE mjend))[0] NE -1) - - return, qmjd -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/myfluxcorr.pro b/pro/spec2d/myfluxcorr.pro deleted file mode 100644 index 3ec25c9ac..000000000 --- a/pro/spec2d/myfluxcorr.pro +++ /dev/null @@ -1,183 +0,0 @@ -pro myfluxcorr, bsmearfile, rsmearfile, bscifile, rscifile, corrfile, $ - adderr=adderr, rset=rset, bset=bset - - ;---------- - ; Read the plug-map file (for identifying sky fibers) - - bsmearflux = mrdfits(bsmearfile,0) - bsmearivar = mrdfits(bsmearfile,1) - bsmearmask = mrdfits(bsmearfile,2) - bsmearset = mrdfits(bsmearfile,3) - plugmap = mrdfits(bsmearfile,5) - traceset2xy, bsmearset, xx, bsmearloglam - correct_dlam, bsmearflux, bsmearivar, bsmearset, dlam=1.0e-4 - if keyword_set(bset) then bsmearfluxcalib = bspline_valu(bsmearloglam, bset) - - rsmearflux = mrdfits(rsmearfile,0) - rsmearivar = mrdfits(rsmearfile,1) - rsmearmask = mrdfits(rsmearfile,2) - rsmearset = mrdfits(rsmearfile,3) - traceset2xy, rsmearset, xx, rsmearloglam - correct_dlam, rsmearflux, rsmearivar, rsmearset, dlam=1.0e-4 - if keyword_set(rset) then rsmearfluxcalib = bspline_valu(rsmearloglam, rset) - - ;--------------------------------------------------------- - ; now put blue and red together - ; - smearwave = [temporary(bsmearloglam),temporary(rsmearloglam)] - smearflux = [temporary(bsmearflux),temporary(rsmearflux)] - smearivar = [temporary(bsmearivar),temporary(rsmearivar)] - - if keyword_set(rset) then begin - smearfluxcalib = [temporary(bsmearfluxcalib),$ - temporary(rsmearfluxcalib)] - divideflat, smearflux, invvar=smearivar, smearfluxcalib, minval=0.0001 - endif - - ;-------------------------------------------------------------------- - ; bkpts from 3700 to 9300 - ; - wavemin = alog10(3700.0) - wavemax = alog10(9300.0) - waverange = wavemax - wavemin - wavemid = 0.5*(wavemin + wavemax) - bkpt = findgen(500)*8.0e-4 + alog10(3700.0) - ncoeff = 3 ; ??? - - nfiber = (size(smearwave,/dimens))[1] - - smearset = ptrarr(nfiber) - - for ifiber=0, nfiber-1 do begin - - print, ifiber - - ; Schlegel counter of step number... - ; print, format='("Step ",i5," of ",i5,a1,$)', $ - ; ifiber, nfiber, string(13b) - - sset = 0 - good = where(smearivar[*,ifiber] GT 0, ngood) - if ngood GT 10 then begin - inside = where(bkpt GT min(smearwave[good,ifiber]) AND $ - bkpt LT max(smearwave[good,ifiber]),ninside) - - if ninside GT 1 then begin - outside = [inside[0]-1,inside,inside[ninside-1]+1] - - sset = bspline_iterfit(smearwave[*,ifiber], smearflux[*,ifiber], $ - invvar=smearivar[*,ifiber], bkpt=bkpt[outside], $ - lower=5, upper=5, requiren=2) - - endif - endif - smearset[ifiber] = ptr_new(sset) - endfor - - - - nfiles = n_elements(corrfile) - - for ifile = 0, nfiles - 1 do begin - - if (bsmearfile EQ bscifile[ifile] AND $ - rsmearfile EQ rscifile[ifile]) then begin - ;---------- - ; Special case: If the science image and smear image is the same, - ; then force their ratio to be unity. - - fitimg = smearwave*0.0 + 1.0 - xy2traceset, smearwave, fitimg, corrset, ncoeff=ncoeff - - corrset.coeff[0,*] = 1.0 - corrset.coeff[1:*,*] = 0.0 - - endif else begin - - bsciflux = mrdfits(bscifile[ifile],0) - bsciivar = mrdfits(bscifile[ifile],1) - bscimask = mrdfits(bscifile[ifile],2) - bsciset = mrdfits(bscifile[ifile],3) - traceset2xy, bsciset, xx, bsciloglam - correct_dlam, bsciflux, bsciivar, bsciset, dlam=1.0e-4 - if keyword_set(bset) then bscifluxcalib = bspline_valu(bsciloglam, bset) - - rsciflux = mrdfits(rscifile[ifile],0) - rsciivar = mrdfits(rscifile[ifile],1) - rscimask = mrdfits(rscifile[ifile],2) - rsciset = mrdfits(rscifile[ifile],3) - traceset2xy, rsciset, xx, rsciloglam - correct_dlam, rsciflux, rsciivar, rsciset, dlam=1.0e-4 - if keyword_set(rset) then rscifluxcalib = bspline_valu(rsciloglam, rset) - - sciwave = [temporary(bsciloglam),temporary(rsciloglam)] - sciflux = [temporary(bsciflux),temporary(rsciflux)] - sciivar = [temporary(bsciivar),temporary(rsciivar)] - - if keyword_set(rset) then begin - scifluxcalib = [temporary(bscifluxcalib),temporary(rscifluxcalib)] - divideflat, sciflux, invvar=sciivar, scifluxcalib, minval=0.0001 - endif - - - smearfit = sciwave * 0.0 - - for ifiber=0,nfiber - 1 do $ - smearfit[*,ifiber] = bspline_valu(sciwave[*,ifiber],*(smearset[ifiber])) - - ;---------- - ; Convert these fits into a trace set - - xy2traceset, sciwave, sciflux, corrset, $ - invvar=sciivar, xmin=wavemin, xmax=wavemax, $ - ncoeff=ncoeff, yfit=crazyimg, inputfunc=smearfit - - traceset2xy, corrset, sciwave, fitimg - - ;---------- - ; Which fits are considered bad? - ; Require the median S/N per pix for the science exposure to be > 2.0. - ; Require the median S/N per pix for the smear exposure to be > 2.0. - ; Require the fits for a fiber are never less than 0.2 * median. - ; Require the fits for a fiber are never greater than 5 * median. - ; Require the fiber isn't SKY. - - scisnmed = djs_median(sciflux * sqrt(sciivar), 1) - smearsnmed = djs_median(smearflux * sqrt(smearivar), 1) - - medfit = median(fitimg) - splog, 'Median flux-correction factor = ', medfit - - qgood = scisnmed GT 3.0 $ - AND strtrim(plugmap.objtype,2) NE 'SKY' - - igood = where(qgood EQ 1, ngood) - splog, 'Total of', ngood, ' good flux-correction vectors' - if (igood[0] EQ -1) then $ - message, 'Trouble in flux-correction fits' - - ;---------- - ; Make a mean fit for the good fits - - meanfit = total(fitimg[*,igood],2) / ngood - meanwave = total(sciwave[*,igood],2) / ngood - xy2traceset, meanwave, meanfit, cset1, ncoeff=ncoeff - - ;---------- - ; Replace bad fits with the mean fit - - ibad = where(qgood EQ 0, nbad) - splog, 'Replacing', nbad, ' bad flux-correction vectors' - if nbad GT 0 then $ - corrset.coeff[*,ibad] = cset1.coeff # replicate(1,nbad) - - endelse - - mwrfits, corrset, corrfile[ifile], /create - - endfor - - ptr_free,smearset - - return -end diff --git a/pro/spec2d/myratiofit.pro b/pro/spec2d/myratiofit.pro deleted file mode 100644 index c931dfaf8..000000000 --- a/pro/spec2d/myratiofit.pro +++ /dev/null @@ -1,71 +0,0 @@ - -;------------------------------------------------------------------------------ -; Compute the polynomial function to multiply by YDATA2 to get YDATA1. -; ??? Need to iterate with the values of COEFF, and applying those to -; the errors in YDATA2. -function myratiofit, xdata, ydata1, yivar1, ydata2, yivar2, ncoeff=ncoeff - - ndata = n_elements(xdata) - acoeff = dblarr(ncoeff) - acoeff[0] = 1.0 - - ; Renormalize X to [-1,1] - xnorm = 2.0 * (xdata - min(xdata)) / (max(xdata) - min(xdata)) -1.0 - - ; Construct the matrix A, such that the first row is YDATA1, - ; the second row is YDATA1 * XNORM, the third is YDATA1 * XNORM^2 - amatrix = fltarr(ndata,ncoeff) - for icoeff=0, ncoeff-1 do $ - amatrix[*,icoeff] = ydata2 * xnorm^icoeff - - mask1 = yivar1 GT 0 ; =1 for good - mask2 = yivar2 GT 0 ; =1 for good - invsig = 1.0 / sqrt( 1.0 / (yivar1 + (1-mask1)) $ - + 1.0 / (yivar2 + (1-mask2)) ) * mask1 * mask2 - - ;---------- - ; Rejection loop - - iiter = 0 - maxiter = 10 - ymodel = 0 - outmask = bytarr(ndata) + 1b ; Begin with all points good - while (NOT keyword_set(qdone) AND iiter LE maxiter) do begin - ; At most, reject 5% of all points, distributed in 5 regions - qdone = djs_reject(ydata1, ymodel, invvar=invsig^2, $ - groupsize=ceil(ndata/5), maxrej=ceil(0.01*ndata), $ - outmask=outmask, upper=5, lower=5) - - mmatrix = amatrix - for icoeff=0, ncoeff-1 do $ - mmatrix[*,icoeff] = mmatrix[*,icoeff] * invsig * outmask - bvec = ydata1 * invsig * outmask - - mmatrixt = transpose( mmatrix ) - mm = mmatrixt # mmatrix - - ; Use SVD to invert the matrix -; mmi = invert(mm, /double) - if (ncoeff EQ 1) then begin - mmi = 1.0 / mm - endif else begin - svdc, mm, ww, uu, vv, /double - mmi = 0 * vv - for i=0L, ncoeff-1 do mmi[i,*] = vv[i,*] / ww[i] - mmi = mmi ## transpose(uu) - endelse - - acoeff = mmi # (mmatrixt # bvec) - yratio = fltarr(ndata) + acoeff[0] - for icoeff=1, ncoeff-1 do $ - yratio = yratio + acoeff[icoeff] * xnorm^icoeff - - ymodel = yratio * ydata2 - - iiter = iiter + 1 - endwhile - - return, yratio -end - -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/plotsignal.pro b/pro/spec2d/plotsignal.pro deleted file mode 100644 index 727e7e6e9..000000000 --- a/pro/spec2d/plotsignal.pro +++ /dev/null @@ -1,203 +0,0 @@ -;+ -; NAME: -; plotsignal -; -; PURPOSE: -; Plot the signal (not S/N) seen on each plate+exposure+CCD. -; -; CALLING SEQUENCE: -; plotsignal, plate, [ expnum, camname=, /addsky ] -; -; INPUTS: -; plate - Plate number -; -; OPTIONAL INPUTS: -; expnum - Exposure number(s); default to all exposures that have -; an spFrame-b1 file on disk -; camname - Camera name(s); default to ['b2','r2','b1','r1'] -; addsky - If set, then add the sky signal back in, rather than -; using the sky-subtracted signal -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Most of our diagnostic plots show the S/N of the spectrographs. -; These plots show the signal, and provide plots for each exposure. -; -; One PostScript file is produced, with one page with one page per -; exposure number. The file names are: -; spSignal-$PLATE.ps -; spSignal-$PLATE-addsky.ps -- If /ADDSKY is specified -; -; The spectro magnitudes are scaled to the 1st exposure on each -; plate+MJD+camera combination. There is a simple scaling for the -; exposure time, but otherwise more-cloudy exposures will show as -; negative (red) residuals. -; -; This plots the signal after sky-subtraction, unless /ADDSKY is set. -; -; EXAMPLES: -; Plot the signal seen on all exposures for plate 1489: -; IDL> plotsignal, 1489 -; -; BUGS: -; -; PROCEDURES CALLED: -; bspline_valu() -; dfpsclose -; dfpsplot -; djs_filepath() -; djs_oplot -; djs_plot -; djs_xyouts -; filter_thru() -; mrdfits() -; splog -; sxpar() -; traceset2xy -; -; REVISION HISTORY: -; 30-Dec-2003 Written by D. Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro plotsignal, plate, expnum, camname=camname, addsky=addsky - - ;---------- - ; Check inputs and set defaults - - if (NOT keyword_set(plate)) then begin - print, 'PLATE must be specified!' - return - endif - if (NOT keyword_set(camname)) then camname = ['b2','r2','b1','r1'] - topdir = getenv('BOSS_SPECTRO_REDUX') - csize = 1.1 - platestr = plate_to_string(plate) - - ;---------- - ; If EXPNUM is not set, then find all the exposure numbers that - ; produced an spFrame file for the b1 CCD. - - if (NOT keyword_set(expnum)) then begin - framefile = findfile(filepath('spFrame-b1-????????.fits*', $ - root_dir=topdir, subdir=platestr), count=ct) - if (ct EQ 0) then begin - print, 'No spFrame files found' - return - endif - expnum = long(strmid(fileandpath(framefile),11,8)) - endif - - ; Open the plot file -- one page per exposure number - if (keyword_set(addsky)) then $ - plotfile = string(plate_to_string(plate), format='("spSignal-",a,"-addsky.ps")') $ - else $ - plotfile = string(plate_to_string(plate), format='("spSignal-",a,".ps")') - dfpsplot, plotfile, /color, /square - - last_mjd = lonarr(n_elements(camname)) - last_exptime = fltarr(n_elements(camname)) - magoffset = fltarr(n_elements(camname)) - - for iexp=0, n_elements(expnum)-1 do begin - splog, 'Working on exposure #', expnum[iexp] - - !p.multi = [0,2,2] - for icam=0, n_elements(camname)-1 do begin - speccolor = strmid(camname[icam],0,1) - specid = fix(strmid(camname[icam],1,1)) - - ; Read the spFrame file - framefile = string(camname[icam], expnum[iexp], $ - format='("spFrame-",a2,"-",i8.8,".fits*")') - framefile = (findfile(filepath(framefile, root_dir=topdir, $ - subdir=platestr)))[0] - if (NOT keyword_set(framefile)) then message, 'File not found!!' - fluximg = mrdfits(framefile, 0, hdr, /silent) - fluxivar = mrdfits(framefile, 1, /silent) - wset = mrdfits(framefile, 3, /silent) - plug = mrdfits(framefile, 5, /silent) - mjd = sxpar(hdr, 'MJD') - exptime = sxpar(hdr, 'EXPTIME') - - ; Optionally add the sky flux back in - if (keyword_set(addsky)) then $ - fluximg = fluximg + mrdfits(framefile, 6, /silent) - - ; Compute the wavelengths - traceset2xy, wset, junk, loglam - waveimg = 10d^loglam - - ; Read the spFluxcalib file -- if not found, then use a default - fcalibfile = string(plate_to_string(plate), mjd, camname[icam], $ - format='("spFluxcalib-",a,"-",i5.5,"-",a2,".fits*")') - fcalibfile = (findfile(filepath(fcalibfile, root_dir=topdir, $ - subdir=platestr)))[0] - if (NOT keyword_set(fcalibfile)) then begin - splog, 'Flux-calib file not found -- using defaults' - fcalibfile = filepath('spFluxcalib-'+camname[icam]+'.fits', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdir='examples') - endif - - ; Compute the spectro-photometric calibration - calibset = mrdfits(fcalibfile, 1, /silent) - calibfac = bspline_valu(loglam, calibset) - - ; Integrate over the appropriate filter curve - flambda2fnu = waveimg^2 / 2.99792e18 - specflux = filter_thru(fluximg/calibfac $ - * rebin(flambda2fnu,2048,320), $ - waveimg=waveimg, mask=(fluxivar LE 0)) - - ifilt = (speccolor EQ 'b') ? 1 : 3 ; Either g-band or i-band - specmag = -(48.6 - 2.5*17.) - 2.5*alog10(specflux[*,ifilt]>1e-15) - photomag = plug.mag[ifilt] - magdiff = photomag - specmag - - ; Scale the magnitudes to the 1st exposure on this plate+MJD+camera, - ; using the exposure times. - if (mjd NE last_mjd[icam]) then begin - magoffset[icam] = median(magdiff) - last_mjd[icam] = mjd - last_exptime[icam] = exptime - endif - magdiff = magdiff - magoffset[icam] $ - - 2.5 * alog10(exptime / last_exptime[icam]) - - symsize = abs(magdiff) * 1. - qgood = photomag LT 20.5 AND specmag LT 21 - - if (icam EQ 0) then $ - title=string(plate_to_string(plate), mjd, strtrim(expnum[iexp],2), $ - format='("Plate ", a, " MJD ", i5, " Exp# ", a)') $ - else $ - title = '' - - plot, [0], [0], /nodata, xchars=csize, ychars=csize, $ - xtitle='X [mm]', ytitle='Y [mm]', $ - xrange=[-320,320], yrange=[-320,320], xstyle=1, ystyle=1, $ - xmargin=xmargin, ymargin=ymargin, title=title - ii = where(magdiff GT 0 AND qgood, ct) - if (ct GT 1) then $ - djs_oplot, plug[ii].xfocal, plug[ii].yfocal, symsize=symsize[ii], $ - color='green', psym=2 - ii = where(magdiff LT 0 AND qgood, ct) - if (ct GT 1) then $ - djs_oplot, plug[ii].xfocal, plug[ii].yfocal, symsize=symsize[ii], $ - color='red', psym=2 - xyouts, -300, 280, camname[icam], charsize=csize - djs_oplot, [-300], [-280], psym=2, color='green' - djs_oplot, [-300], [-300], psym=2, color='red' - djs_xyouts, -300, -280, ' 1 mag brighter', color='green' - djs_xyouts, -300, -300, ' 1 mag fainter', color='red' - endfor - endfor - - ; Close the plot file - dfpsclose - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/plotsky.pro b/pro/spec2d/plotsky.pro deleted file mode 100644 index 5afd855fc..000000000 --- a/pro/spec2d/plotsky.pro +++ /dev/null @@ -1,64 +0,0 @@ -pro plotsky, plate, expnum, camname=camname, plotfile=plotfile1, $ - _EXTRA=KeywordsForPlot - - if (NOT keyword_set(camname)) then camname = 'r1' - if (NOT keyword_set(plate) OR NOT keyword_set(expnum)) then return - - filename = string(camname, expnum, $ - format='("spFrame-",a2,"-",i8.8,".fits*")') - fullname = (findfile(filepath(filename, root_dir=getenv('BOSS_SPECTRO_REDUX'), $ - subdir=plate_to_string(plate)), count=ct))[0] - if (ct EQ 0) then begin - splog, 'File not found ' + filename - return - endif - - if (keyword_set(plotfile1)) then begin - if (size(plotfile1,/tname) EQ 'STRING') then plotfile = plotfile1 $ - else plotfile = string(plate_to_string(plate), camname, expnum, $ - format='("sky-", a, "-", a2, "-", i8.8, ".ps")') - endif - - ifiber = 160 - - hdr = headfits(fullname) - exptime = sxpar(hdr,'EXPTIME') > 1 - mjd = sxpar(hdr,'MJD') > 1 - wset = mrdfits(fullname, 3) - skyimg = mrdfits(fullname, 6) - traceset2xy, wset, xx, yy - wave = 10.d0^yy[*,ifiber] - skyvec = skyimg[*,ifiber] / exptime - - plottitle = 'Sky for PLATE=' + plate_to_string(plate) $ - + '/' + string(mjd,format='(i5)') $ - + ' Cam=' + camname $ - + ' Exp=' + strtrim(string(expnum),2) - xtitle = 'Wavelength [Ang]' - ytitle = 'Sky Flux [e-/sec]' - xrange = minmax(wave) - yrange = [0, 1.1*max(skyvec)] - xplot = total(xrange * [0.95,0.05]) - yplot = total(yrange * [0.10,0.90]) - expstring = 'EXPTIME = ' + string(exptime, format='(i4)') + ' sec' - - csize = 1.4 - if (keyword_set(plotfile)) then begin - dfpsplot, plotfile, /square - plot, wave, skyvec, charsize=csize, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle=ytitle, title=plottitle, $ - _EXTRA=KeywordsForPlot - xyouts, xplot, yplot, expstring, charsize=csize - dfpsclose - endif else begin - splot, wave, skyvec, charsize=csize, $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle=ytitle, title=plottitle, $ - _EXTRA=KeywordsForPlot - sxyouts, xplot, yplot, expstring, charsize=csize - endelse - - return -end - diff --git a/pro/spec2d/plotsn.pro b/pro/spec2d/plotsn.pro index 8693e6eff..0e5ec510b 100644 --- a/pro/spec2d/plotsn.pro +++ b/pro/spec2d/plotsn.pro @@ -272,10 +272,11 @@ pro plotsn, snvec1, plugmap1, filter=filter1, plotmag=plotmag1, snmin=snmin1, $ if (ngood GE 3) then $ afit = fitsn(thismag[igood], snvec[iband,igood],sncode=sncode, sigma=sigma, $ - filter=filter[iband], specsnlimit=specsnlimit1, redden=redden, _EXTRA=KeywordsForFitSN) $ + filter=filter[iband], specsnlimit=specsnlimit1, redden=redden, sn2=sn2_test, _EXTRA=KeywordsForFitSN) $ else $ afit = fitsn([0], [0], sncode=sncode,sigma=sigma, $ - filter=filter[iband], specsnlimit=specsnlimit1, redden=redden, _EXTRA=KeywordsForFitSN) + filter=filter[iband], specsnlimit=specsnlimit1, redden=redden, sn2=sn2_test, _EXTRA=KeywordsForFitSN) + splog,sn2_test if (iband EQ 0) then specsnlimit = specsnlimit1 $ else specsnlimit = [specsnlimit, specsnlimit1] fitmag = specsnlimit1.fitmag @@ -312,14 +313,15 @@ pro plotsn, snvec1, plugmap1, filter=filter1, plotmag=plotmag1, snmin=snmin1, $ endelse symsize = 0.4 + if STRMATCH(sncode, 'sos15',/fold_case) then ylim = [0.5,500.0] else ylim = [0.5,100.0] plot, thismag[igood], snvec[iband,igood], /nodata, /ylog, $ ; xtickname=xtickname, $ xrange=plotmag, $ xtitle=xtitle1, ytitle='S/N in '+filter[iband]+'-band', $ - /xstyle, yrange=[0.5,100], /ystyle, charsize=csize + /xstyle, yrange=ylim, /ystyle, charsize=csize if (iband EQ 0 AND keyword_set(plottitle)) then $ - xyouts, plotmag[1], 106.0, 'S/N for '+plottitle, align=0.5, $ + xyouts, plotmag[1], ylim[1]+6.0, 'S/N for '+plottitle, align=0.5, $ charsize=csize ;---------- @@ -434,14 +436,14 @@ pro plotsn, snvec1, plugmap1, filter=filter1, plotmag=plotmag1, snmin=snmin1, $ symsize=symsize djs_xyouts, [!x.crange[0] + (!x.crange[1] - !x.crange[0])*0.60], $ 10^[!y.crange[0] + (!y.crange[1] - !y.crange[0])*0.83], $ - string(format='("Spec1: ", f5.1)', snplate[0,iband]), charsize=textsize + string(format='("Spec1: ", f7.1)', snplate[0,iband]), charsize=textsize djs_oplot, [!x.crange[0] + (!x.crange[1] - !x.crange[0])*0.57], $ 10^[!y.crange[0] + (!y.crange[1] - !y.crange[0])*0.75], psym=6, $ symsize=symsize, color='magenta' djs_xyouts, [!x.crange[0] + (!x.crange[1] - !x.crange[0])*0.60], $ 10^[!y.crange[0] + (!y.crange[1] - !y.crange[0])*0.73], $ - string(format='("Spec2: ", f5.1)', snplate[1,iband]), charsize=textsize + string(format='("Spec2: ", f7.1)', snplate[1,iband]), charsize=textsize splog, snlabel, snplate[*,iband], format='(a20, 2(f10.3))' diff --git a/pro/spec2d/plotsn_elg.pro b/pro/spec2d/plotsn_elg.pro deleted file mode 100644 index 8c081ec7d..000000000 --- a/pro/spec2d/plotsn_elg.pro +++ /dev/null @@ -1,603 +0,0 @@ -;+ -; NAME: -; plotsn_elg -; -; PURPOSE: -; Plot S/N and residuals in up to 3 bands -; Modified form of plotsn to handle the plotting of ELG plates -; -; CALLING SEQUENCE: -; plotsn_elg, snvec, plugmap, [ filter=, plotmag=, plottitle=, snmin=, $ -; plotfile=, synthmag=, snplate=,nexp=, dered_snplate=, specsnlimit=, _EXTRA= ] -; -; INPUTS: -; snvec - S/N array [NBAND,NFIBER] -; plugmap - Plugmap structure [NFIBER] -; -; OPTIONAL KEYWORDS: -; filter - Filter names; default to 'g','r','i' -; plotmag - Magnitude range for plotting; default to [16,23], but -; extend the range to include FITMAG if necessary. -; snmin - Minimum S/N value to use in fits; default to 0.5 -; plottitle - Title for top of plot -; plotfile - Optional plot file -; synthmag - Vector of synthetic magnitudes dimensionsed [5,NFIBER]; -; if set, then make more than the first page of plots -; _EXTRA - Keywords for FITSN, such as SNCODE -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; snplate - Best fit (S/N)^2 at fiducial magnitude(s); array of [2,NBAND] -; to give the number in each spectrograph and each filter -; dered_snplate - Best fit (S/N)^2 extinction corrected like SOS pipeline -; specsnlimit- Returned from FITSN -; coeffs - Coefficients from FITSN for each band and spectrograph -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_arrow -; djs_icolor() -; djs_iterstat -; djs_oplot -; djs_plot -; djs_xyouts -; fitsn() -; splog -; -; INTERNAL SUPPORT ROUTINES: -; plotsn_good() -; plotsn1 -; -; REVISION HISTORY: -; 08-Sep-2016 plotsn_elg : exclusively for ELG plates -Vivek M. -; 23-Feb-2015 Added coeffs optinal output to recover FITSN results -; 28-Jan-2003 Add E(B-V) keyword to allow for spectra which have -; foreground reddening removed -; 20-Oct-2002 Plot range on synthmag vs fiber mag plot changed by C. Tremonti -; 15-Apr-2000 Written by S. Burles, FNAL -;- -;------------------------------------------------------------------------------ -; Select good objects, and within FITMAG is specified -function plotsn_good, plugmap, jband, snvec, iband, igood, s1, s2, $ - fitmag=fitmag, snmin=snmin - - qgood = strtrim(plugmap.objtype,2) NE 'SKY' AND plugmap.mag[jband] GT 0 $ - AND snvec[iband,*] GT snmin AND strtrim(plugmap.objtype,2) NE 'NA' - if (keyword_set(fitmag)) then $ - qgood *= (plugmap.mag[jband] GT fitmag[0] $ - AND plugmap.mag[jband] LT fitmag[1]) - igood = where(qgood, ngood) - if (ngood LT 3) then $ - splog, 'Warning: Too few non-sky objects to plot in band #', iband - - ; The following variables are defined only for non-SKY objects... - s1 = where(plugmap.spectrographid EQ 1 AND qgood) - s2 = where(plugmap.spectrographid EQ 2 AND qgood) - - return, ngood -end -;------------------------------------------------------------------------------ -pro plotsn1, plugc, synthmag, i1, i2, plottitle=plottitle, objtype=objtype - - pmulti = !p.multi - ymargin = !y.margin - yomargin = !y.omargin - - !p.multi = [0,2,5] - !y.margin = [1,0] - !y.omargin = [5,3] - symsize = 0.5 - psym = 1 - csize = 1.5 - textsize = 1.0 - xrange = [14.,24.] - yrange = [-0.6,0.6] - - magdiff = synthmag - plugc.mag - - for ipanel=0, 4 do begin - case ipanel of - 0: begin - yplot = magdiff[1,*] - ytext = 'g-mag' - end - 1: begin - yplot = magdiff[2,*] - ytext = 'r-mag' - end - 2: begin - yplot = magdiff[3,*] - ytext = 'i-mag' - end - 3: begin - yplot = magdiff[1,*] - magdiff[2,*] - ytext = '(g-r) color' - end - 4: begin - yplot = magdiff[2,*] - magdiff[3,*] - ytext = '(r-i) color' - end - endcase - - if (ipanel EQ 0) then thistitle = plottitle+' '+objtype $ - else thistitle = '' - if (ipanel EQ 4) then xtitle = 'PHOTO Magnitude (r)' $ - else xtitle = '' - if (ipanel EQ 4) then xtickname = '' $ - else xtickname = strarr(20)+' ' - - plot, xrange, [0,0], $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle='(Spectro - PHOTO) mag', $ - title=thistitle, charsize=csize, xtickname=xtickname - xyouts, xrange[0]+1, 0.75*yrange[1], 'Spectro-1: '+ytext, $ - charsize=textsize - if (i1[0] NE -1) then begin - djs_oplot, [plugc[i1].mag[2]], [yplot[i1]], $ - psym=psym, symsize=symsize - djs_iterstat, yplot[i1], median=mn, sigma=sig - mntext = string(mn, format='(" Median= ",f6.3)') - devtext = string(sig, format='(" Stdev= ",f6.3)') - xyouts, 0.5*xrange[0]+0.5*xrange[1], 0.40*yrange[0], charsize=textsize, $ - mntext - xyouts, 0.5*xrange[0]+0.5*xrange[1], 0.70*yrange[0], charsize=textsize, $ - devtext - splog, 'Spectro-1: ' + objtype + ' ' + ytext + mntext + devtext - endif - - plot, xrange, [0,0], $ - xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - xtitle=xtitle, ytitle='(Spectro - PHOTO) mag', $ - title=thistitle, charsize=csize, xtickname=xtickname - xyouts, xrange[0]+1, 0.75*yrange[1], 'Spectro-2: '+ytext, $ - charsize=textsize - if (i2[0] NE -1) then begin - djs_oplot, [plugc[i2].mag[2]], [yplot[i2]], $ - psym=psym, symsize=symsize - djs_iterstat, yplot[i2], median=mn, sigma=sig - mntext = string(mn, format='(" Median= ",f6.3)') - devtext = string(sig, format='(" Stdev= ",f6.3)') - xyouts, 0.5*xrange[0]+0.5*xrange[1], 0.40*yrange[0], charsize=textsize, $ - mntext - xyouts, 0.5*xrange[0]+0.5*xrange[1], 0.70*yrange[0], charsize=textsize, $ - devtext - splog, 'Spectro-2: ' + objtype + ' ' + ytext + mntext + devtext - endif - endfor - - !p.multi = pmulti - !y.margin = ymargin - !y.omargin = yomargin - - return -end -;------------------------------------------------------------------------------ -pro plotsn_elg, snvec1, plugmap1, filter=filter1, plotmag=plotmag1, snmin=snmin1, $ - plottitle=plottitle, plotfile=plotfile,sncode=sncode, synthmag=synthmag, snplate=snplate,nexp=nexp1, $ - dered_snplate=dered_snplate, specsnlimit=specsnlimit, coeffs=coeffs, redden=redden, _EXTRA=KeywordsForFitSN - - if (keyword_set(filter1)) then filter = filter1 $ - else filter = ['g','r','i'] - if (keyword_set(plotmag1)) then plotmag = plotmag1 $ - else plotmag = [16.0, 23.0] - if (keyword_set(snmin1)) then snmin = snmin1 $ - else snmin = 0.2 - if (keyword_set(nexp1)) then nexp = nexp1 $ - else nexp = 1 - nband = n_elements(filter) - nfibers = n_elements(plugmap1) - - if (size(snvec1,/n_dimen) EQ 1) then snvec = reform(snvec1,1,nfibers) $ - else snvec = snvec1 - if (n_elements(snvec) NE nband*nfibers) then $ - message, 'Dimension of SNVEC not consistent with PLUGMAP' - - ; Use the CALIBFLUX magnitudes instead of MAG, if they exist - ; from the call to READPLUGMAP() that generated this structure. - ; For small fluxes, set MAG=0 so that they are ignored in the plots. - ; Also, if CALIBFLUX_IVAR exist for any of the objects, then set MAG=0 - ; for the objects w/out it (e.g., for objects without calibObj photometry). - plugmap = plugmap1 - if (tag_exist(plugmap,'CALIBFLUX')) then begin - minflux = 0.1 - plugmap.mag =(22.5 - 2.5*alog10(plugmap.calibflux > minflux)) $ - * (plugmap.calibflux GT minflux) -; if (total(plugmap.calibflux_ivar GT 0) GT 0) then $ -; plugmap.mag *= (plugmap.calibflux_ivar GT 0) - endif - - ; Define jband as the index into the plugmap magnitudes, - ; for example, jband=[1,2,3] if g,r,i filters - jband = lonarr(nband) - for iband=0, nband-1 do begin - jband[iband] = where(filter[iband] EQ ['u','g','r','i','z']) - endfor - - ;---------- - ; Open plot file - - if (keyword_set(plotfile)) then begin - if (nband LE 2) then ysize=7.0 $ - else ysize=9.5 - dfpsplot, plotfile, /color, square=(nband LE 2) - endif - - oldmulti = !p.multi - !p.multi = [0,2,nband] - - snplate = fltarr(2,nband) - dered_snplate = fltarr(2,nband) - - pmulti = !p.multi - ymargin = !y.margin - yomargin = !y.omargin - - !p.multi = [0,2,nband] - !y.margin = [1,0] - !y.omargin = [5,3] - csize = 1.0 - textsize = 1.0 - - ;--------------------------------------------------------------------------- - ; Loop over each band in the plot - ;--------------------------------------------------------------------------- - - ;- JEB array containing coefficients from sn fits: slope and intercept for sp1 and sp2 - coeffs = fltarr(nband,4) - - ;---- - ; JEB - dereddening before fitting - if NOT keyword_set(redden) then $ - redden = fltarr(5) $ - else if n_elements(redden) NE 5 then begin - splog,' Error REDDEN does not have 5 elements ' - endif - splog, 'Dereddening before fit with REDDEN=', redden, format='(a,5f7.3)' - - for iband=0, nband-1 do begin - if sncode eq 'sos' then begin ; For SoS, do not apply the reddening -vivek - thismag = plugmap.mag[jband[iband]] - endif else begin - ; JEB - Correcting for extinction before fitting S/N - thismag = plugmap.mag[jband[iband]] - redden[jband[iband]] - endelse - ; JEB - Should correct for extinction here too! - ngood = plotsn_good(plugmap, jband[iband], snvec, iband, igood, s1, s2, $ - snmin=snmin) - ;---------- - ; Fit the data as S/N vs. mag - - if (ngood GE 3) then $ - afit = fitsn(thismag[igood], snvec[iband,igood],sncode=sncode, sigma=sigma, $ - filter=filter[iband], specsnlimit=specsnlimit1, redden=redden, $ - _EXTRA=KeywordsForFitSN) $ - else $ - afit = fitsn([0], [0], sigma=sigma, $ - filter=filter[iband],sncode=sncode, specsnlimit=specsnlimit1, redden=redden, $ - _EXTRA=KeywordsForFitSN) - if (iband EQ 0) then specsnlimit = specsnlimit1 $ - else specsnlimit = [specsnlimit, specsnlimit1] - fitmag = specsnlimit1.fitmag - snmag = specsnlimit1.snmag - ; Residuals from this fit - sndiff = alog10(snvec[iband,*]>0.01) - poly(thismag, afit) - - if (ngood GT 3) then begin - ;--------------------------------------------------------------------- - ; 1st PAGE PLOT 1: (S/N) vs. magnitude - ;--------------------------------------------------------------------- - - ;---------- - ; Extend the plotting range if necessary to include FITMAG and SNMAG - - plotmag[0] = plotmag[0] < (fitmag[0]-0.5) - plotmag[1] = plotmag[1] > (fitmag[1]+0.5) - plotmag[0] = plotmag[0] < (snmag-0.5) - plotmag[1] = plotmag[1] > (snmag+0.5) - snlabel = '(S/N)^2 @ '+filter[iband]+' ='+string(snmag,format='(f7.2)') - - ;---------- - ; Set up the plot - - if (iband LT nband-1) then begin - xtickname = strarr(20)+' ' ; Disable X axis on all but bottom plot - xtickname = '' - xtitle1 = '' - xtitle2 = '' - endif else begin - xtickname = '' - xtitle1 = 'mag' - xtitle2 = 'X [mm]' - endelse - symsize = 0.4 - - plot, thismag[igood], snvec[iband,igood], /nodata, /ylog, $ -; xtickname=xtickname, $ - xrange=plotmag, $ - xtitle=xtitle1, ytitle='S/N in '+filter[iband]+'-band', $ - /xstyle, yrange=[0.5,100], /ystyle, charsize=csize - - if (iband EQ 0 AND keyword_set(plottitle)) then $ - xyouts, plotmag[1], 106.0, 'S/N for '+plottitle, align=0.5, $ - charsize=csize - - ;---------- - ; Plot the fiducial line (black line) - -; djs_oplot, plotmag, 10^poly(plotmag, specsnlimit1.fiducial_coeff) - - ;---------- - ; Plot the data points, (S/N) vs. magnitude. - - ; Identify which points fall above and below this fit. - ; Color code green for positive residuals, red for negative. - ; Use different symbols for each spectrograph. -; psymvec = (plugmap.spectrographid EQ 1) * 7 $ -; + (plugmap.spectrographid EQ 2) * 6 -; colorvec = replicate('red', nfibers) -; ipos = where(sndiff GE 0) -; if (ipos[0] NE -1) then colorvec[ipos] = 'green' - - ; Color code spec1=cyan X, spec2=magenta square - ; Use different symbols for each spectrograph. - psymvec = (plugmap.spectrographid EQ 1) * 7 $ - + (plugmap.spectrographid EQ 2) * 6 - colorvec = replicate('cyan', nfibers) - ipos = where(plugmap.spectrographid EQ 2) - if (ipos[0] NE -1) then colorvec[ipos] = 'magenta' - - ; Sort the points randomly, such that not all the spec2 points - ; are plotted on top of the spec1 points - isort = sort(randomu(1234,n_elements(thismag))) - - ; Plot the points that would fall off the bottom of the plot - ; as points near the bottom - djs_oplot, [thismag[isort]], $ - [snvec[iband,isort] > 1.1*(snmin>10^!y.crange[0])], $ - psym=psymvec[isort], symsize=symsize, color=colorvec[isort] - - ; Now overplot the fit line -; if (keyword_set(afit)) then $ -; djs_oplot, plotmag, 10^poly(plotmag, afit) - - ;---------- - ; Plot a fit to the data in the range specified by FITMAG, - ; independently for each spectrograph. - ; Also, draw an arrow that terminates at the S/N at the magnitude - ; where we measure the canonical (S/N)^2. - afit1 = 0 - sig1 = 0 - if (s1[0] NE -1) then begin - afit1 = fitsn(thismag[s1], snvec[iband,s1], $ - filter=filter[iband],sncode=sncode, _EXTRA=KeywordsForFitSN, $ - sigma=sig1, sn2=sn2, dered_sn2=dered_sn2, redden=redden) - if filter[iband] eq 'g' then begin - snplate[0,iband] = nexp*4.0 ; hardwiring 4.0 for blue camera ELG plates -vivek - endif else begin - snplate[0,iband] =2.11 * sn2 ; Multiplying 2.11, the new scale factor for ELG plates when the r camera SN2 threshold is 18 -vivek - endelse - dered_snplate[0,iband] = dered_sn2 - endif - sig2 = 0 - afit2 = 0 - if (s2[0] NE -1) then begin - afit2 = fitsn(thismag[s2], snvec[iband,s2], $ - filter=filter[iband],sncode=sncode, _EXTRA=KeywordsForFitSN, $ - sigma=sig2, sn2=sn2, dered_sn2=dered_sn2, redden=redden) - if filter[iband] eq 'g' then begin - snplate[1,iband] =nexp*4.0 ; hardwiring 4.0 for blue camera ELG plates -vivek - endif else begin - snplate[1,iband] = 2.11 * sn2 ; Multiplying with 2.11, the new scale factor for ELG plates when the r camera SN2 threshold is 18 -vivek - endelse - dered_snplate[1,iband] = dered_sn2 - endif - - if n_elements(afit1) EQ 2 then coeffs[iband,0:1] = afit1 - if n_elements(afit2) EQ 2 then coeffs[iband,2:3] = afit2 - - - ylimits = 10^[0.80 * !y.crange[0] + 0.20 * !y.crange[1], $ - 0.35 * !y.crange[0] + 0.65 * !y.crange[1] ] - oplot, fitmag[0]+[0,0], ylimits, linestyle=1, thick=3 - oplot, fitmag[1]+[0,0], ylimits, linestyle=1, thick=3 - - ;---------- - ; Label the plot - - ; Overplot the fit lines - if (keyword_set(afit1)) then begin - djs_oplot, plotmag, 10^poly(plotmag, afit1) - if filter[iband] eq 'g' then begin - xyouts, plotmag[0]+0.5, 1.35, string(format='(a,f6.3,f7.3,a)', $ - 'log S/N = ', afit1, ' * '+filter[iband]), charsize=textsize - endif else begin - xyouts, plotmag[0]+0.5, 1.35, string(format='(a,f6.3,f7.3,a)', $ - 'log S/N = 0.21 + ', afit1, ' * '+filter[iband]), charsize=textsize - endelse - endif - if (keyword_set(afit2)) then begin - djs_oplot, plotmag, 10^poly(plotmag, afit2), color='magenta' - if filter[iband] eq 'g' then begin - xyouts, plotmag[0]+0.5, 0.90, string(format='(a,f6.3,f7.3,a)', $ - 'log S/N = ', afit2, ' * '+filter[iband]), charsize=textsize - endif else begin - xyouts, plotmag[0]+0.5, 0.90, string(format='(a,f6.3,f7.3,a)', $ - 'log S/N = 0.21 + ', afit2, ' * '+filter[iband]), charsize=textsize - endelse - endif - ; Overplot arrows at fiducial mag - if (snplate[0,iband] GT 0) then $ - djs_arrow, snmag, sqrt(snplate[0,iband])*2, snmag, $ - sqrt(snplate[0,iband]), /data - if (snplate[1,iband] GT 0) then $ - djs_arrow, snmag, sqrt(snplate[1,iband])*2, snmag, $ - sqrt(snplate[1,iband]), /data - - if (keyword_set(sig1)) then $ - xyouts, plotmag[0]+0.5, 0.60, $ - string(format='(a,f4.2,f6.2)','Stdev=', sig1, sig2), $ - charsize=textsize - - djs_xyouts, [!x.crange[0] + (!x.crange[1] - !x.crange[0])*0.3], $ - 10^[!y.crange[0] + (!y.crange[1] - !y.crange[0])*0.93], $ - snlabel, charsize=textsize - - djs_oplot, [!x.crange[0] + (!x.crange[1] - !x.crange[0])*0.57], $ - 10^[!y.crange[0] + (!y.crange[1] - !y.crange[0])*0.85], psym=7, $ - symsize=symsize - djs_xyouts, [!x.crange[0] + (!x.crange[1] - !x.crange[0])*0.60], $ - 10^[!y.crange[0] + (!y.crange[1] - !y.crange[0])*0.83], $ - string(format='("Spec1: ", f5.1)', snplate[0,iband]), charsize=textsize - - djs_oplot, [!x.crange[0] + (!x.crange[1] - !x.crange[0])*0.57], $ - 10^[!y.crange[0] + (!y.crange[1] - !y.crange[0])*0.75], psym=6, $ - symsize=symsize, color='magenta' - djs_xyouts, [!x.crange[0] + (!x.crange[1] - !x.crange[0])*0.60], $ - 10^[!y.crange[0] + (!y.crange[1] - !y.crange[0])*0.73], $ - string(format='("Spec2: ", f5.1)', snplate[1,iband]), charsize=textsize - - splog, snlabel, snplate[*,iband], format='(a20, 2(f10.3))' - - ;--------------------------------------------------------------------- - ; 1st PAGE PLOT 2: Throughput deviations plotted on the focal plane - ;--------------------------------------------------------------------- - - plot, [0], [0], /nodata, xtickname=xtickname, $ - xtitle=xtitle2, ytitle='Y [mm]', $ - xrange=[-350,350], yrange=[-350,350], xstyle=1, ystyle=1, charsize=csize - ; Limit this plot to only those objects which are good - ng2 = plotsn_good(plugmap, jband[iband], snvec, iband, ig2, s1, s2, $ - snmin=snmin) - if (ng2 GT 0) then begin - colorvec = (sndiff[ig2] GE 0) * djs_icolor('green') $ - + (sndiff[ig2] LT 0) * djs_icolor('red') - symvec = (abs(sndiff[ig2]) * 5 < 2) > 0.2 - djs_oplot, [plugmap[ig2].xfocal], [plugmap[ig2].yfocal], $ - symsize=symvec, color=colorvec, psym=2 - endif - - djs_oplot, [-290], [290], symsize=2, psym=2, color='green' - djs_xyouts, -260, 290, '+0.4 mag', color='green' - djs_oplot, [-290], [250], symsize=2, psym=2, color='red' - djs_xyouts, -260, 250, '-0.4 mag', color='red' - - endif - endfor - - !p.multi = pmulti - !y.margin = ymargin - !y.omargin = yomargin - - if (NOT keyword_set(synthmag)) then begin - if (keyword_set(plotfile)) then dfpsclose - return - endif - - ;--------------------------------------------------------------------------- - ; PAGE 2: Plot spectro-mag vs. PHOTO-mag - ; Loop over each band in the plot - ;--------------------------------------------------------------------------- - - pmulti = !p.multi - ymargin = !y.margin - yomargin = !y.omargin - - !p.multi = [0,2,nband] - !y.margin = [1,0] - !y.omargin = [5,3] - - magdiff = synthmag - plugmap.mag - radius = sqrt(plugmap.xfocal^2 + plugmap.yfocal^2) - for iband=0, nband-1 do begin - - ngood = plotsn_good(plugmap, jband[iband], snvec, iband, igood, s1, s2, $ - snmin=snmin) ; fitmag=specsnlimit[iband].fitmag) - if (ngood GE 3) then begin - - if (iband LT nband-1) then begin - xtickname = strarr(20)+' ' - xtitle1 = '' - xtitle2 = '' - endif else begin - xtickname = '' - xtitle1 = 'Radius [mm]' - xtitle2 = 'X [mm]' - endelse - psym = strmatch(plugmap.objtype, 'QSO*') * 1 $ ; Plus - + strmatch(plugmap.objtype, 'GALAXY*') * 6 ; Square - psym = psym + (psym EQ 0) * 2 ; Asterisk for anything else - - plot, [0], [0], /nodata, $ - xtickname=xtickname, xrange=[0,350], xtitle=xtitle1, $ - ytitle='(Spectro-PHOTO) '+filter[iband]+'-mag', $ - /xstyle, yrange=[-0.6,0.6], /ystyle, charsize=csize - oplot, !x.crange, [0,0] - if (ngood GT 0) then begin - thisdiff = transpose(magdiff[jband[iband],igood]) - colorvec = (thisdiff LT 0) * djs_icolor('green') $ - + (thisdiff GE 0) * djs_icolor('red') - symvec = (abs(thisdiff) * 5 < 2) > 0.1 - djs_oplot, [radius[igood]], [thisdiff], $ - symsize=0.5, color=colorvec, psym=psym[igood] - endif - oplot, [15], [0.5], psym=6 - oplot, [15], [0.4], psym=1 - oplot, [15], [0.3], psym=2 - xyouts, 30, 0.5, 'Galaxy' - xyouts, 30, 0.4, 'QSO' - xyouts, 30, 0.3, 'other' - - if (iband EQ 0 AND keyword_set(plottitle)) then $ - xyouts, !x.crange[1], 1.03*!y.crange[1]-0.03*!y.crange[0], $ - 'Throughput for '+plottitle, align=0.5, charsize=csize - - plot, [0], [0], /nodata, xtickname=xtickname, $ - xtitle=xtitle2, ytitle='Y [mm]', $ - xrange=[-350,350], yrange=[-350,350], /xstyle, /ystyle, charsize=csize - if (ngood GT 0) then begin - djs_oplot, [plugmap[igood].xfocal], [plugmap[igood].yfocal], $ - symsize=symvec, color=colorvec, psym=psym[igood] - endif - - djs_oplot, [-290], [290], symsize=2, psym=2, color='green' - djs_xyouts, -260, 290, '+0.4 mag', color='green' - djs_oplot, [-290], [250], symsize=2, psym=2, color='red' - djs_xyouts, -260, 250, '-0.4 mag', color='red' - - endif - endfor - - !p.multi = pmulti - !y.margin = ymargin - !y.omargin = yomargin - - ;------------------------------------------------------------------------ - ; Plots of spectro mags vs. PHOTO mags - ;------------------------------------------------------------------------ - - qstd = strmatch(plugmap.objtype, '*STD*') - i1 = where(plugmap.spectrographid EQ 1 AND qstd AND plugmap.mag[2] NE 0) - i2 = where(plugmap.spectrographid EQ 2 AND qstd AND plugmap.mag[2] NE 0) - plotsn1, plugmap, synthmag, i1, i2, plottitle=plottitle, objtype='Std-stars' - - qgal = strmatch(plugmap.objtype, 'GALAXY*') - i1 = where(plugmap.spectrographid EQ 1 AND qgal AND plugmap.mag[2] NE 0) - i2 = where(plugmap.spectrographid EQ 2 AND qgal AND plugmap.mag[2] NE 0) - plotsn1, plugmap, synthmag, i1, i2, plottitle=plottitle, objtype='Galaxies' - - qstellar = qgal EQ 0 - i1 = where(plugmap.spectrographid EQ 1 AND qstellar AND plugmap.mag[2] NE 0) - i2 = where(plugmap.spectrographid EQ 2 AND qstellar AND plugmap.mag[2] NE 0) - plotsn1, plugmap, synthmag, i1, i2, plottitle=plottitle, objtype='Stars+QSOs' - - if (keyword_set(plotfile)) then dfpsclose - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/plotsn_jb.pro b/pro/spec2d/plotsn_jb.pro index c8f784adf..737ca480b 100644 --- a/pro/spec2d/plotsn_jb.pro +++ b/pro/spec2d/plotsn_jb.pro @@ -485,7 +485,10 @@ pro plotsn_jb, snvec1, plugmap1, filter=filter1, plotmag=plotmag1, snmin=snmin1, !y.omargin = yomargin if (NOT keyword_set(synthmag)) then begin - if (keyword_set(plotfile)) then dfpsclose + if (keyword_set(plotfile)) then begin + dfpsclose + ps2dpf, plotfile + endif return endif diff --git a/pro/spec2d/plugmapkeys.idl b/pro/spec2d/plugmapkeys.idl deleted file mode 100644 index b1ba899a0..000000000 --- a/pro/spec2d/plugmapkeys.idl +++ /dev/null @@ -1,36 +0,0 @@ -key_match_dict=Dictionary("completeTileVersion", "CTILEVER", "mjdDesign", "MJDDesg", "pointing", "POINTING", $ - "mag_quality", "MAG_QUAL", "plateId", "PLATEID", "ha", "HA", "ha_observable_min", "HA_MIN", $ - "ha_observable_max","HA_MAX", "programname", "PROGNAME", "temp", "TEMP_plt", "design_platescale_alt", "DSGPSALT",$ - "design_platescale_az", "DSGPGANG", "design_parallactic_angle", "DSGPRANG", "guider_coeff_0","GUIDECO0",$ - "guider_coeff_1","GUIDECO1", "guider_coeff_2","GUIDECO2", "guider_coeff_3","GUIDECO3", "guider_coeff_4","GUIDECO4",$ - "guider_coeff_5","GUIDECO5", "guider_coeff_6","GUIDECO6", "guider_coeff_7","GUIDECO7", "guider_coeff_8","GUIDECO8",$ - "guider_coeff_9","GUIDECO9", "locationId","LOCID", "instruments", "INSTRUME", "npointings","NPOINT", $ - "noffsets","NOFFSETS", "minstdinblockboss_shared", "MINSKYBL", "maxskyinblockboss_shared", "MAXSTDBL", $ - "gfibertype", "GFIBTYPE", "guidetype", "GUTYPE", "guidenums1", "GUNUM1", "guidemag_minmax", "GUMAG_MM", $ - "guide_lambda_eff", "GULAMEFF", "nguidemax", "NGU_MAX", "ferrulesizeboss_shared", "FERSZE_B", $ - "buffersizeboss_shared", "BUFSZE_B", "ferrulesizeapogee_shared", "FERSZE_A", "buffersizeapogee_shared", "BUFSZE_A",$ - "ferrulesizeguide", "FERSZE_G", "buffersizeguide", "BUFSZE_G", "platedesignstandards", "PLTDNSTD", $ - "standardtype", "STDTYPE", "platedesignskies", "PLTDNSKY", "skytype", "SKYTYPE", "plugmapstyle", "PMAPSTY", $ - "bossmagtype", "B_MAGTYP", "pointing_name", "PNT_NAME", "max_off_fiber_for_ha", "MAXOFFHA", $ - "collectfactor", "COLLFACT", "designid", "DESIDPLT", "platedesignversion", "PTDSNVER", $ - "platetype", "PLATETYP", "ninputs", "NINPUTS", "plateinput1", "PLTINP1", "plateinput2", "PLTINP2", $ - "plateinput3", "PLTINP3", "plateinput4", "PLTINP4", "plateinput5", "PLTINP5", "plateinput6", "PLTINP6",$ - "plateinput7", "PLTINP7", "plateinput8", "PLTINP8", "plateinput9", "PLTINP9", "plateinput10", "PLTINP10",$ - "priority", "PRIORITY", "relaxed_fiber_classes", "RELFIBCL", "targettypes", "TARGTYPE", $ - "napogee_shared_standard", "N_APPSTD", "napogee_shared_science", "N_APPSCI", $ - "napogee_shared_sky", "N_APPSKY", "nboss_shared_standard", "N_BOSSTD", "nboss_shared_science", "N_BOSSCI", $ - "nboss_shared_sky", "N_BOSSKY", "minskyinblockboss_shared", "MINB_SKY", "minstandardinblockboss_shared", "MINB_STD", $ - "reddeningMed", "REDDEN_M", "tileId", "TILEID", "theta", "THETA", "platerun", "PLT_RUN", $ - "platedesign_version", "PLTDSGVR", "haMin", "HAMIN", "haMax", "HAMAX", "raCen", "RACEN", "decCen", "DECCEN",$ - "fscanVersion", "FSCANVER", "pluggers", "PLUGGERS", "plateId", "PLATEID", "fscanMJD", "FSCANMJD", $ - "fscanId", "FSCANID", "fscanDate", "FSCANDAT", "fscanFile", "FSCANFIL", "fscanMode", "FSCANMOD", $ - "fscanSpeed", "FSCANSP", "fscanRows", "FSCANROW", "fscanCols", "FSCANCOL", $ - "fscanBias", "FSCANBIA", "motorId1", "MOTORID1", "motorId2", "MOTORID2", "motorId3", "MOTORID3", "cartridgeId", "CARTID", $ - "fmapVersion", "FMAPVER", "idlutilsVersion", "IDLUTILS", "idlVersion", "IDLVER", "configuration_id", "CONFIGID", $ - "robostrategy_run", "RS_RUN", "fps_calibrations_version", "FPSCALVR", "design_id", "DESIGNID", "field_id", "FIELDID", $ - "epoch", "EPOCH", "obstime", "OBSTIME", "MJD", "MJD", "observatory", "OBS", "temperature", "TEMP", "pa", "PA", $ - "is_dithered", "IS_DITHR", "parent_configuration", "PARENT_C", "dither_radius", "DITH_R", "cartridgeId", "CARTID", $ - "jaeger_version", "JAEGER_V", "coordio_version", "COORDIOV", "kaiju_version", "KAIJU_V", "focal_scale", "FOCAL_SC", $ - "cloned_from", "CLONEFRO", "fvc_centroid_method", "FVC_CMET", "fvc_rms", "FVC_RMS", "fvc_90_perc","FVC90PER", $ - "fvc_percent_reached","FVCPER_R", "fvc_image_path", "FVC_PATH") -key_match_dict2=Dictionary("rotator_angle", "ROTANGLE") diff --git a/pro/spec2d/prerun_readplugmap.pro b/pro/spec2d/prerun_readplugmap.pro deleted file mode 100644 index b9158ad6a..000000000 --- a/pro/spec2d/prerun_readplugmap.pro +++ /dev/null @@ -1,1236 +0,0 @@ -;+ -; NAME: -; prerun_readplugmap -; -; PURPOSE: -; Read plugmap file prior to spreduce2d and preforms all crossmatch calcuations, writing correction values to file -; -; CALLING SEQUENCE: -; plugmap = prerun_readplugmap( plugfile, [ plugdir=, $ -; /apotags, exptime=, hdr=, fibermask=, _EXTRA= ] ) -; -; INPUTS: -; plugfile - Name of Yanny-parameter plugmap file -; -; OPTIONAL INPUTS: -; plugdir - Directory for PLUGFILE -; apotags - If set, then add a number of tags to the output structure -; constructed from the Yanny header. These tags are: -; CARTID, PLATEID, TILEID, RAPLATE, DECPLATE, REDDEN_MED. -; Also add the tags FIBERSN[3], SYTHMAG[3] which are used -; by the on-the-mountain reductions. -; exptime - Default exposure time SCI_EXPTIME to add to the output; -; if there are multiple pointings and EXPTIME is set, then -; the exposure time in each pointing is scaled such that -; their sum is EXPTIME. -; _EXTRA - Keywords for PLUG2TSOBJ(), such as MJD,INDIR -; -; OUTPUTS: -; plugmap - Plugmap structure -; -; OPTIONAL OUTPUTS: -; hdr - Header from Yanny-formatted plugmap file -; fibermask - Byte array with bits set for unknown fibers -; -; COMMENTS: -; Do not use the calibObj structure if more than 10% of the non-sky -; objects do not have fluxes. -; -; Reads $IDLSPEC2D_DIR/opfiles/washers.par for ZOFFSET status overrides. -; The original plugmap files reflect what we wanted to do; the overrides -; and the return of this function reflect what we actually did. -; -; EXAMPLES: -; -; BUGS: -; The AB corrections are hard-wired to be the same as in the photoop -; product as of 18 Feb 2004. -; -; PROCEDURES CALLED: -; djs_filepath() -; dust_getval() -; euler -; plug2tsobj() -; sdss_flagval() -; splog -; struct_addtags() -; yanny_par_fc() -; yanny_read -; -; INTERNAL FUNCTIONS CALLED: -; calibrobj -; ApogeeToBOSSRobomap -; BossToApogeeRobomap -; NoAssignRobomap -; readFPSobsSummary -; readPlateplugmap_sort -; readPlateplugMap -; mags2Flux -; rename_tags -; -; EXTERNAL FUNCTIONS CALLED: -; yanny_to_fits_hdr -; -; REVISION HISTORY: -; 29-Jan-2001 Written by S. Burles, FNAL -; 07-Aug-2012 Added ZOFFSET overrides; S. Bailey, LBL -; 21-Jun-2021 Editted by S Morrison to add correction check for catalog -; 15-Oct-2021 Modified by S Morrison to prepare for FPS: -; -adding readFPSobsSummary, ApogeeToBOSSRobomap, BossToApogeeRobomap -; -breaking readPlateplugMap in to a new function to preseve for FPS -; 15-Nov-2021 Modified by S Morrison to read and fill plugmap once and save it in fits file -; 15-Dec-2021 Add mag2Flux conversion for SOS -; -;- -;------------------------------------------------------------------------------ - - - -function flag_offset_fibers, hdr, fibermap - if (long(yanny_par_fc(hdr, 'is_dithered')) eq 0) then begin - offsets = where((fibermap.DELTA_RA NE 0 OR fibermap.DELTA_DEC NE 0), ct) - if ct ne 0 then fibermap[offsets].fiber_offset = 1 - endif - return, fibermap -end - -;------------------------------------------------------------------------------ - -function mags2Flux, fibermap, correction, apo=apo - flag=make_array(n_elements(fibermap),/integer,value=1) - - if tag_exist(fibermap, 'CatDB_mag') then begin - mags=fibermap.CatDB_mag - optical_prov = fibermap.OPTICAL_PROV - endif else begin - mags=fibermap.mag - optical_prov = Make_array(n_elements(fibermap),/STRING,value='fiber2mag') - endelse - - pratio = [2.085, 2.085, 2.116, 2.134, 2.135]; ratio of fiber2flux - splog, 'PSF/fiber flux ratios = ', pratio - for ifilt=0,4 do begin - ibad = where(fibermap.calibflux[ifilt] EQ 0 $ - AND mags[ifilt,*] GT 0 $ - AND mags[ifilt,*] LT 50$ - AND flag eq 1, nbad) - if (nbad GT 0) then begin - splog, 'Using plug-map fluxes for ', nbad, $ - ' values in filter ', ifilt - endif - - ibad = where(fibermap.calibflux[ifilt] EQ 0 $ - AND mags[ifilt,*] GT 0 $ - AND mags[ifilt,*] LT 50$ - AND flag eq 1$ - AND ~strmatch(optical_prov,'*psf*'), nbad) - if (nbad GT 0) then begin - fibermap[ibad].calibflux[ifilt] = $ - 10.^((22.5 - fibermap[ibad].mag[ifilt]) / 2.5)*pratio[ifilt] - fibermap[ibad].calibflux_ivar[ifilt] = 0 - endif - ibad = where(fibermap.calibflux[ifilt] EQ 0 $ - AND mags[ifilt,*] GT 0 $ - AND mags[ifilt,*] LT 50$ - AND flag eq 1$ - AND strmatch(optical_prov,'*psf*'), nbad) - if (nbad GT 0) then begin - fibermap[ibad].calibflux[ifilt] = $ - 10.^((22.5 - fibermap[ibad].CatDB_mag[ifilt]) / 2.5) - fibermap[ibad].calibflux_ivar[ifilt] = 0 - endif - - endfor - ;------------ - ; Apply AB corrections to the CALIBFLUX values (but not to MAG) - factor = exp(-correction/2.5 * alog(10)) - for j=0,4 do fibermap.calibflux[j] = fibermap.calibflux[j] * factor[j] - for j=0,4 do $ - fibermap.calibflux_ivar[j] = fibermap.calibflux_ivar[j] / factor[j]^2 - - return, fibermap -end - -;------------------------------------------------------------------------------ - -function psf2Fiber_mag, fibermap, plates=plates, legacy=legacy - - pratio = [2.085, 2.085, 2.116, 2.134, 2.135] - - if keyword_set(plates) or keyword_set(legacy) then begin - fibermap = struct_addtags(fibermap, replicate(create_struct('OPTICAL_PROV', 'fiber2mag'), n_elements(fibermap))) - endif - - fibermap = struct_addtags(fibermap, replicate(create_struct('CatDB_mag', fltarr(5)), n_elements(fibermap))) - fibermap = struct_addtags(fibermap, replicate(create_struct('Fiber2mag', fltarr(5)), n_elements(fibermap))) - fibermap = struct_addtags(fibermap, replicate(create_struct('PSFmag', fltarr(5)), n_elements(fibermap))) - - if keyword_set(plates) then begin - mags=fibermap.mag - mags[where(mags eq -10)]=-999 - fibermap.mag = mags - endif - - fibermap.CatDB_mag = fibermap.mag - fibermap.Fiber2mag = fibermap.mag - fibermap.PSFmag = fibermap.mag - imatch = where(strmatch(fibermap.OPTICAL_PROV, "*psf*"), ct) - if ct gt 0 then begin - mags=fibermap[imatch].mag - for ifilt=0, 4 do mags[ifilt,*]=mags[ifilt,*]+2.5*alog10(pratio[ifilt]) - mags[where(mags lt -99)]=-999 - if ct gt 0 then fibermap[imatch].mag=mags - if ct gt 0 then fibermap[imatch].Fiber2mag=mags - endif - - imatch = where(not strmatch(fibermap.OPTICAL_PROV, "*psf*"), ct) - if ct gt 0 then begin - mags=fibermap[imatch].mag - for ifilt=0, 4 do mags[ifilt,*]=mags[ifilt,*]-2.5*alog10(pratio[ifilt]) - mags[where(mags lt -99)]=-999 - imatch = where(not strmatch(fibermap.OPTICAL_PROV, "*psf*"), ct) - if ct gt 0 then fibermap[imatch].PSFmag=mags - endif - - imatch = where(strmatch(fibermap.OPTICAL_PROV, "*undefined*"), ct) - if ct gt 0 then fibermap[imatch].Fiber2mag=make_array(5,/float, value=-999) - if ct gt 0 then fibermap[imatch].PSFmag=make_array(5,/float, value=-999) - - imatch = where(strmatch(fibermap.OPTICAL_PROV, "*other*"), ct) - if ct gt 0 then fibermap[imatch].Fiber2mag=make_array(5,/float, value=-999) - if ct gt 0 then fibermap[imatch].PSFmag=make_array(5,/float, value=-999) - - imatch = where(strmatch(fibermap.OPTICAL_PROV, ""), ct) - if ct gt 0 then fibermap[imatch].Fiber2mag=make_array(5,/float, value=-999) - if ct gt 0 then fibermap[imatch].PSFmag=make_array(5,/float, value=-999) - - return, fibermap -end - -;------------------------------------------------------------------------------i - -function get_survey, plugmap - - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('SURVEY', ''), n_elements(plugmap))) - - MWM_fibers = where(strmatch(plugmap.program, '*MWM*', /FOLD_CASE) EQ 1, ctMWM) - if ctMWM gt 0 then plugmap[MWM_fibers].survey = 'MWM' - - BHM_fibers = where(strmatch(plugmap.program, '*BHM*', /FOLD_CASE) EQ 1, ctBHM) - if ctBHM gt 0 then plugmap[BHM_fibers].survey = 'BHM' - - COM_fibers = where(strmatch(plugmap.program, '*commissioning*', /FOLD_CASE) EQ 1, ctCOM) - if ctCOM gt 0 then plugmap[COM_fibers].survey = 'COMMISSIONING' - - OPS_fibers = where(strmatch(plugmap.program, '*ops*', /FOLD_CASE) EQ 1, ctOPS) - if ctOPS gt 0 then plugmap[OPS_fibers].survey = 'ops' - - OPEN_fibers = where(strmatch(plugmap.program, '*open_fiber*', /FOLD_CASE) EQ 1, ctOPEN) - if ctOPEN gt 0 then plugmap[OPEN_fibers].survey = 'open_fiber' - - return, plugmap -end - -;------------------------------------------------------------------------------ - -function get_survey_plates, plugmap - if not tag_exist(plugmap, 'SURVEY') then begin - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('SURVEY', ''), n_elements(plugmap))) - endif - - MWM_fibers = where(strmatch(plugmap.FIRSTCARTON, '*MWM*', /FOLD_CASE) EQ 1, ctMWM) - if ctMWM gt 0 then plugmap[MWM_fibers].survey = 'MWM' - - BHM_fibers = where(strmatch(plugmap.FIRSTCARTON, '*BHM*', /FOLD_CASE) EQ 1, ctBHM) - if ctBHM gt 0 then plugmap[BHM_fibers].survey = 'BHM' - - sky_fibers = where(strmatch(plugmap.FIRSTCARTON, '*SKY*', /FOLD_CASE) EQ 1, ctSKY) - if ctSKY gt 0 then plugmap[sky_fibers].survey = 'OPS' - - OPS_fibers = where(strmatch(plugmap.FIRSTCARTON, '*OPS*', /FOLD_CASE) EQ 1, ctOPS) - if ctOPS gt 0 then plugmap[OPS_fibers].survey = 'OPS' - - return, plugmap -end - -;------------------------------------------------------------------------------ - -function calibrobj, plugfile, fibermap, fieldid, rafield, decfield, design_id=design_id,$ - programname=programname, plates=plates, legacy=legacy, fps=fps, $ - MWM_fluxer=MWM_fluxer,apotags=apotags, lco=lco, RS_plan=RS_plan, $ - no_db=no_db, KeywordsForPhoto=KeywordsForPhoto - - ; The correction vector is here --- adjust this as necessary. - ; These are the same numbers as in SDSSFLUX2AB in the photoop product. - correction = [-0.042, 0.036, 0.015, 0.013, -0.002] - - splog, 'Adding fields from calibObj file' - addtags = replicate(create_struct( $ - 'mapper', '', $ - 'CatVersion', '', $ - 'fieldCadence', '', $ - 'CartonName', '', $ - 'CALIBFLUX', fltarr(5), $ - 'CALIBFLUX_IVAR', fltarr(5), $ - 'CALIB_STATUS', lonarr(5), $ - 'SFD_EBV', 0., $ - 'EBV_BAYESTAR15', 0., $ - 'EBV_RJCE', 0., $ - 'gaia_id_dr2', long64(-1), $ - 'WISE_MAG', [-999., -999., -999., -999], $ - 'TWOMASS_MAG', [-999., -999., -999.], $ - 'GUVCAT_MAG', [-999., -999.]), n_elements(fibermap)) - fibermap = struct_addtags(fibermap, addtags) - - - fibermap.CartonName = fibermap.FirstCarton - if not keyword_set(fps) then begin - addtags = replicate(create_struct( $ - 'PARALLAX', -999., $ - 'PMRA', -999., $ - 'PMDEC', -999.), n_elements(fibermap)) - fibermap = struct_addtags(fibermap, addtags) - endif - - splog, "Running 'run_plugmap_supplements.py' to retreive supplementary info:" - if keyword_set(no_db) then begin - flags = " --sfd --no_db" - if keyword_set(lco) then flags = flags + ' --lco ' - if not keyword_set(fps) then flags = flags + ' --gaia ' - endif else begin - if keyword_set(fps) then begin - flags = " --mags --rjce --gaia --sfd --cart " - flags = flags + '--designID ' + strtrim(design_id,2) - flags = flags + ' --rs_plan ' + RS_plan +' ' - if keyword_set(lco) then flags = flags + ' --lco ' - endif else flags=" --mags --astrometry --rjce --gaia --cart --sfd" - if not keyword_set(legacy) then flags = flags+" --id_gaia" - endelse - if keyword_set(logfile) then begin - flags = flags+" --log "+ logfile - endif - - catfile=FILE_BASENAME(plugfile,'.par')+'.inp' - supfile=FILE_BASENAME(plugfile,'.par')+'_supp.fits' - - ra_temp=fibermap.ra - dec_temp=fibermap.dec - catid_temp=fibermap.catalogid - fiberid_temp=fibermap.fiberid - if keyword_set(fps) then begin - carton_to_target_pk = fibermap.carton_to_target_pk - spht = strmatch(fibermap.program, '*ops_std*', /FOLD_CASE) - endif else begin - carton_to_target_pk = INTARR(n_elements(catid_temp))-1 - spht = strmatch(fibermap.objtype, '*SPECTROPHOTO_STD*', /FOLD_CASE) - endelse - stdflag=BYTARR(n_elements(ra_temp)) - ispht = where(spht, nspht) - stdflag[ispht]=1 - euler, fibermap.ra, fibermap.dec, ll, bb, 1 - dist=DBLARR(n_elements(ra_temp))-1.d - - if (keyword_set(no_db) and keyword_set(getenv('GAIA_DATA')) $ - and not keyword_set(fps)) then begin - rm_read_gaia, rafield,decfield,stsph,dist_std=dist_std - dist[ispht]=dist_std - endif - - if keyword_set(fps) then begin - PARALLAX = fibermap.PARALLAX - invalid = where(PARALLAX le -999.0, ct) - if ct gt 0 then PARALLAX[where(PARALLAX le -999.0)] = 0 - dist_std=1.0/abs((PARALLAX-0.0)*1e-3);zero point parallax - if ct gt 0 then dist_std[where(fibermap.PARALLAX le -999.0)] = 0 - dist=dist_std - endif - - openw,lun1,catfile,/get_lun - for istd=0, n_elements(ra_temp)-1 do begin - printf,lun1,strtrim(string(ra_temp[istd]),2)+$ - " "+strtrim(string(dec_temp[istd]),2)+$ - " "+string(catid_temp[istd])+$ - " "+string(carton_to_target_pk[istd],/PRINT)+$ - " "+string(stdflag[istd],/PRINT)+$ - " "+string(ll[istd])+" "+string(bb[istd])+" "+string(dist[istd])+$ - " "+string(fiberid_temp[istd]) - endfor - free_lun, lun1 - - ;Obtain the WISE, TWOMASS, GUVCAT and GAIA pm - wise_temp=fltarr(4,n_elements(fibermap)) - two_temp=fltarr(3,n_elements(fibermap)) - guv_temp=fltarr(2,n_elements(fibermap)) - parallax_temp=fltarr(n_elements(fibermap)) - pmra_temp=fltarr(n_elements(fibermap)) - pmdec_temp=fltarr(n_elements(fibermap)) - - cmd = "run_plugmap_supplements.py " + catfile + flags - splog,cmd - FILE_DELETE, supfile, /ALLOW_NONEXISTENT - - - while not FILE_TEST(supfile) DO spawn, cmd, dat - if not keyword_set(logfile) then $ - foreach row, dat do splog, row - supplements = mrdfits(supfile,1,/SILENT) - - if not keyword_set(no_db) then begin - wise_temp[0,*]=supplements.w1mpro - wise_temp[1,*]=supplements.w2mpro - wise_temp[2,*]=supplements.w3mpro - wise_temp[3,*]=supplements.w4mpro - two_temp[0,*]=supplements.j2mass - two_temp[1,*]=supplements.h2mass - two_temp[2,*]=supplements.k2mass - guv_temp[0,*]=supplements.fuv - guv_temp[1,*]=supplements.nuv - - fibermap.wise_mag=wise_temp - fibermap.twomass_mag=two_temp - fibermap.guvcat_mag=guv_temp - - indx = where(supplements.v05_rev_mag eq 1, ct) - if ct gt 0 then begin - mag_temp = fibermap.mag - mag_temp[1,indx] = supplements[indx].mag_g - mag_temp[2,indx] = supplements[indx].mag_r - mag_temp[3,indx] = supplements[indx].mag_i - mag_temp[4,indx] = supplements[indx].mag_z - - fibermap.mag = mag_temp - fibermap[indx].BP_MAG = supplements[indx].gaia_bp - fibermap[indx].RP_MAG = supplements[indx].gaia_rp - fibermap[indx].GAIA_G_MAG = supplements[indx].gaia_g - fibermap[indx].H_MAG = supplements[indx].mag_h - fibermap[indx].optical_prov = supplements[indx].optical_prov - endif - - indx = where(supplements.catcoord eq 1, ct) - if ct gt 0 then begin - fibermap[indx].racat = supplements[indx].racat - fibermap[indx].deccat = supplements[indx].deccat - endif - - indx = where(supplements.updatedCatID eq 1, ct) - if ct gt 0 then begin - fibermap[indx].catalogid = supplements[indx].catid - endif - - if not keyword_set(fps) then begin - parallax_temp=supplements.parallax - pmra_temp=supplements.pmra - pmdec_temp=supplements.pmdec - - fibermap.parallax=parallax_temp - fibermap.pmra=pmra_temp - fibermap.pmdec=pmdec_temp - endif - - fibermap.mapper = supplements.mapper - fibermap.CatVersion = supplements.CatVersion - fibermap.fieldCadence = supplements.fieldCadence - fibermap.FIRSTCARTON = supplements.carton - fibermap.FIRSTCARTON = supplements.carton - endif else begin - fibermap.fieldCadence = 'fps' - fibermap.FirstCarton = fibermap.CartonName - endelse - - if keyword_set(legacy) then begin - fibermap.fieldCadence = 'legacy' - fibermap.FirstCarton = fibermap.CartonName - endif else begin - if (not keyword_set(no_db)) then begin - fibermap.gaia_id_dr2 = supplements.gaia_id - endif - if keyword_set(plates) then begin - fibermap.fieldCadence = 'plates' - fibermap.CatVersion = '0.0' - fibermap.FirstCarton = fibermap.CartonName - endif - endelse - - - fibermap.sfd_ebv = supplements.ebv_sfd - - if ((keyword_set(getenv('DUST_DIR'))) and (total(fibermap.sfd_ebv) eq 0)) then begin - ; Read the SFD dust maps - fibermap.sfd_ebv = dust_getval(ll, bb, /interp) - endif - - ebv_RJCE = fibermap.sfd_ebv - EBV_BAYESTAR15 = fibermap.sfd_ebv - - - if not keyword_set(no_db) then begin - ;--------- - ;Redefine the Extintion using the RJCE extintion method, see Majewski, Zasowski & Nidever (2011) and Zasowski et al. (2013) - ebv_RJCE = supplements.EBV_RJCE - fibermap.ebv_RJCE=ebv_RJCE - - ;Redefine the Extintion using the Bayestar 3D dust extintion maps - EBV_BAYESTAR15 = supplements.REDDENING_GAIA - fibermap.EBV_BAYESTAR15=EBV_BAYESTAR15 - endif - - ;---------- - ; Attempt to read the calibObj photometry data - if keyword_set(legacy) then begin - tsobj = plug2tsobj(fieldid, plates=plates, legacy=legacy, _EXTRA=KeywordsForPhoto) - ; Do not use the calibObj structure if more than 20% of the non-sky - ; objects do not have fluxes. - if (keyword_set(tsobj)) then begin - qexist = tsobj.psfflux[2] NE 0 - qsky = strmatch(fibermap.objtype,'SKY*') - splog, 'Matched ', fix(total(qsky EQ 0 AND qexist)), $ - ' of ', fix(total(qsky EQ 0)), ' non-SKY objects' - if (total((qsky EQ 0) AND qexist) LT 0.80*total(qsky EQ 0)) then begin - splog, 'Discarding calibObj structure because < 80% matches' - tsobj = 0 - endif - endif - - if (keyword_set(tsobj)) then begin - ; Propagate CALIB_STATUS information: - if tag_exist(tsobj, 'CALIB_STATUS') then $ - fibermap.calib_status = tsobj.calib_status - ; Assume that all objects not called a 'GALAXY' are stellar objects - qstar = strmatch(fibermap.objtype, 'GALAXY*') EQ 0 - istar = where(qstar AND qexist, nstar) - igal = where(qstar EQ 0 AND qexist, ngal) - if (tag_exist(tsobj,'FIBER2FLUX')) then begin - fiberflux = transpose(tsobj.fiber2flux) - fiberflux_ivar = transpose(tsobj.fiber2flux_ivar) - pratio = [2.085, 2.085, 2.116, 2.134, 2.135] - endif else begin - fiberflux = transpose(tsobj.fiberflux) - fiberflux_ivar = transpose(tsobj.fiberflux_ivar) - pratio = [1.343, 1.336, 1.354, 1.363, 1.367] - endelse - if (nstar GT 0) then begin - fibermap[istar].calibflux = tsobj[istar].psfflux - fibermap[istar].calibflux_ivar = tsobj[istar].psfflux_ivar - endif - splog, 'PSF/fiber flux ratios = ', pratio - if (ngal GT 0) then begin - for ifilt=0, 4 do begin - fibermap[igal].calibflux[ifilt] = $ - fiberflux[igal,ifilt] * pratio[ifilt] - fibermap[igal].calibflux_ivar[ifilt] = $ - fiberflux_ivar[igal,ifilt] / (pratio[ifilt])^2 - endfor - endif - ; Reject any fluxes based upon suspect PHOTO measurements, - ; as indicated by the PHOTO flags. - badbits2 = sdss_flagval('OBJECT2','SATUR_CENTER') $ - OR sdss_flagval('OBJECT2','INTERP_CENTER') $ - OR sdss_flagval('OBJECT2','PSF_FLUX_INTERP') - qgoodphot = (tsobj.flags2 AND badbits2) EQ 0 - fibermap.calibflux = fibermap.calibflux * qgoodphot - fibermap.calibflux_ivar = fibermap.calibflux_ivar * qgoodphot - endif else begin - if not keyword_set(fps) then begin - splog, 'WARNING: No calibObj structure found for plate ', fieldid - endif else splog, 'WARNING: No calibObj structure found for field ', fieldid - endelse - endif - FILE_DELETE, catfile, /ALLOW_NONEXISTENT - FILE_DELETE, supfile, /ALLOW_NONEXISTENT - - if keyword_set(fps) then fibermap = psf2Fiber_mag(fibermap) - fibermap = mags2Flux(fibermap, correction) - return, fibermap -end - -;------------------------------------------------------------------------------ - -function rename_tags, struct, oldtags, newtags - tags = tag_names(struct) - FOR i=0L, n_elements(tags)-1 DO BEGIN - w=where(oldtags EQ tags[i], nw) - IF nw NE 0 THEN taguse = newtags[w[0]] ELSE taguse = tags[i] - IF i EQ 0 THEN newst = create_struct(taguse, struct[0].(i)) $ - ELSE newst = create_struct(newst, taguse, struct[0].(i)) - ENDFOR - newstruct = replicate(newst, n_elements(struct)) - FOR i=0L, n_elements(tags)-1 DO newstruct.(i) = struct.(i) - return, newstruct -END -;------------------------------------------------------------------------------ - -function robosort, robomap - nfiber=n_elements(robomap) - robomap = struct_addtags(robomap, $ - replicate(create_struct('ConfFiberid', ''), n_elements(robomap))) - robomap.ConfFiberid = robomap.fiberid - - blankmap = robomap[0] - struct_assign, {junk:0}, blankmap - robosort = replicate(blankmap, nfiber) - sps_id = [1,2,-1] - spec_start = 0 - spec_end = 0 - foreach sid, sps_id, idx do begin - indx = where(robomap.spectrographid eq sid, nfib) - tmp_robomap = robomap[indx] - fiberid = tmp_robomap.fiberid - iplace=sort(fiberid) - tmp_robomap = tmp_robomap[iplace] - spec_end = spec_start+nfib-1 - if strmatch(tmp_robomap[0].fibertype,'BOSS*',/fold_case) then begin - tmp_robomap.fiberid = indgen(nfib,/long)+1 - endif - - - robosort[spec_start:spec_end] = tmp_robomap - spec_start = spec_end+1 - endforeach - ;struct_print, robosort, filename = 'test.html', /html - return, robosort -end - -;------------------------------------------------------------------------------ - -function NoCatidPlugmapmap, plugmap - - sign = MAKE_ARRAY(n_elements(plugmap.DEC), /STRING, VALUE = '+') - sign[where(plugmap.DEC lt 0)] = '-' - - radec, plugmap.RA, plugmap.DEC, ihr, imin, xsec, ideg, imn, xsc - ideg = abs(ideg) - imn = abs(imn) - xsc = abs(xsc) - xsc_str=string(xsc,format='(f04.1)') - xsec_str=string(xsec,format='(f04.1)') - - dummy_catid = 'u'+strtrim(string(ihr,format='(I2.2)'),2)+$ - string(imin,format='(I2.2)')+xsec_str+$ - sign+strtrim(string(abs(ideg),format='(I2.2)'),2)+$ - string(imn,format='(I2.2)')+xsc_str - - iunassigned = where(plugmap.iCATALOGID EQ 0, ct) - if ct eq 0 then return, plugmap - plugmap_boss=plugmap[iunassigned] - boss_dummpycat=dummy_catid[iunassigned] - plugmap_boss.CATALOGID = boss_dummpycat - plugmap_boss.iCATALOGID = 0 - plugmap[iunassigned]=plugmap_boss - - - return, plugmap -end - -;------------------------------------------------------------------------------ - -function NoAssignRobomap, robomap - - sign = MAKE_ARRAY(n_elements(robomap.DEC), /STRING, VALUE = '+') - sign[where(robomap.DEC lt 0)] = '-' - - radec, robomap.RA, robomap.DEC, ihr, imin, xsec, ideg, imn, xsc - ideg = abs(ideg) - imn = abs(imn) - xsc = abs(xsc) - xsc_str=string(xsc,format='(f04.1)') - xsec_str=string(xsec,format='(f04.1)') - - dummy_catid = 'u'+strtrim(string(ihr,format='(I2.2)'),2)+$ - string(imin,format='(I2.2)')+xsec_str+$ - sign+strtrim(string(abs(ideg),format='(I2.2)'),2)+$ - string(imn,format='(I2.2)')+xsc_str - - All_apogee_fibers = where(robomap.spectrographId eq 2) - - iunassigned_boss = where(robomap.spectrographId eq 1 AND robomap.Assigned EQ 0, ct) - if ct eq 0 then return, robomap - robomap_boss=robomap[iunassigned_boss] - boss_dummpycat=dummy_catid[iunassigned_boss] - robomap_boss.CATALOGID = boss_dummpycat - robomap_boss.iCATALOGID = 0 - robomap[iunassigned_boss]=robomap_boss - - - return, robomap -end - -;------------------------------------------------------------------------------ - -function readFPSobsSummary, plugfile, robomap, stnames, mjd, hdr=hdr, $ - apotags=apotags, exptime=exptime, fibermask=fibermask, $ - no_db=no_db, _EXTRA=KeywordsForPhoto - - ; The correction vector is here --- adjust this as necessary. - ; These are the same numbers as in SDSSFLUX2AB in the photoop product. - correction = [-0.042, 0.036, 0.015, 0.013, -0.002] - - - robomap = robosort(robomap) - nfiber=n_elements(robomap) - - - robomap = rename_tags(robomap, 'CATALOGID','iCATALOGID') - robomap = struct_addtags(robomap, $ - replicate(create_struct('CATALOGID', ''), n_elements(robomap))) - robomap.CATALOGID=strtrim(robomap.iCATALOGID,1) - robomap = NoAssignRobomap(robomap) - - if (NOT keyword_set(fibermask)) then fibermask = LONarr(nfiber) $ - else if (n_elements(fibermask) NE nfiber) then $ - message, 'Number of elements in FIBERMASK do not match NFIBER' - - - robomap = struct_addtags(robomap, $ - replicate(create_struct('BADSTDMASK', 0L), n_elements(robomap))) - - robomap = struct_addtags(robomap, $ - replicate(create_struct('OFFSETID', 0L), n_elements(robomap))) - robomap.offsetid = 1 - - - robomap = struct_addtags(robomap, $ - replicate(create_struct('fiber_offset', 0L), n_elements(robomap))) - robomap = flag_offset_fibers( hdr, robomap) - - robomap = struct_addtags(robomap, $ - replicate(create_struct('fibermask', 0L), n_elements(robomap))) - - robomap = struct_addtags(robomap, $ - replicate(create_struct('OBJTYPE', ''), n_elements(robomap))) - robomap.OBJTYPE = robomap.category - - - if (yanny_par_fc(hdr, 'is_dithered'))[0] or (yanny_par_fc(hdr, 'parent_configuration') NE '-999') then begin - iAssigned = where((robomap.Assigned EQ 1) AND (robomap.valid EQ 1), nAssigned) - endif else begin - iAssigned = where((robomap.Assigned EQ 1) AND (robomap.on_target EQ 1) AND (robomap.valid EQ 1), nAssigned) - endelse - - fibermask = fibermask OR fibermask_bits('NOPLUG') - if nAssigned ne 0 then fibermask[iAssigned] = fibermask[iAssigned] - fibermask_bits('NOPLUG') ; TODO: NEED TO UPDATE with new fibermask bit value - - if (keyword_set(apotags)) then begin - robomap = psf2Fiber_mag(robomap) - addtags = { configuration_id : long((yanny_par_fc(hdr, 'configuration_id'))[0]), $ - targeting_vers : (yanny_par_fc(hdr, 'robostrategy_run'))[0], $ - observation_id : long((yanny_par_fc(hdr, 'observation_id'))[0]), $ - fieldid : long((yanny_par_fc(hdr, 'field_id'))[0]), $ - MJD : long((yanny_par_fc(hdr, 'MJD'))[0]), $ - rafield : float((yanny_par_fc(hdr, 'raCen'))[0]), $ - decfield : float((yanny_par_fc(hdr, 'decCen'))[0]), $ - redden_med : float((yanny_par_fc(hdr, 'reddeningMed'))[0]), $ - fibersn : fltarr(3), $ - synthmag : fltarr(3), $ - hrmed : float((yanny_par_fc(hdr, 'haMed'))[0]),$ - CALIBFLUX : fltarr(5), $ - CALIBFLUX_IVAR : fltarr(5) $ - } - robomap = struct_addtags(robomap, replicate(addtags, n_elements(robomap))) - healpix_now=0; There is no need for healpix info in the SOS - endif else begin - healpix_now=0; HJIM: I decided to pass this part as an afterburner for the spAll file - endelse - - mjd=long((yanny_par_fc(hdr, 'MJD'))[0]) - ;---------- - if strmatch(yanny_par_fc(hdr, 'observatory'), 'LCO', /fold_case) then lco=1 else lco=0 - ; Read calibObj or photoPlate photometry data - if not keyword_set(apotags) then begin - fieldid = (yanny_par_fc(hdr, 'field_id'))[0] - ra_field=float(yanny_par_fc(hdr, 'raCen')) - dec_field=float(yanny_par_fc(hdr, 'decCen')) - robomap=calibrobj(plugfile,robomap, fieldid, ra_field, dec_field, /fps, lco=lco, $ - design_id = (yanny_par_fc(hdr, 'design_id'))[0],$ - apotags=apotags, RS_plan=(yanny_par_fc(hdr, 'robostrategy_run'))[0], $ - no_db=no_db, KeywordsForPhoto=KeywordsForPhoto) - endif else robomap = mags2Flux(robomap,correction, /apo) - ;----- - ;robomap = struct_addtags(robomap, replicate({orig_objtype:''}, n_elements(robomap))) - ;robomap.orig_objtype=robomap.objtype - ;print,robomap.orig_objtype - robomap[where(strtrim(robomap.objtype,2) EQ 'sky_boss')].objtype = 'SKY' - robomap[where(strtrim(robomap.objtype,2) EQ 'ops_sky')].objtype = 'SKY' - robomap[where(strtrim(robomap.program,2) EQ 'ops_std')].objtype = 'SPECTROPHOTO_STD' - robomap.fibermask=fibermask - - robomap = get_survey(robomap) - - return, robomap -end - -;------------------------------------------------------------------------------ - - -function readPlateplugmap_sort, plugmap, hdr, fibermask=fibermask, plates=plates - - qobj = strmatch(plugmap.holetype,'OBJECT') - indx = where(qobj, nfiber) - if (NOT keyword_set(fibermask)) then fibermask = LONARR(nfiber) $ - else if (n_elements(fibermask) NE nfiber) then $ - message, 'Number of elements in FIBERMASK do not match NFIBER' - - badstdmask = bytarr(nfiber) - - - blankmap = plugmap[0] - struct_assign, {junk:0}, blankmap - plugsort = replicate(blankmap, nfiber) - plugsort.holetype = 'OBJECT' - plugsort.objtype = 'NA' - plugsort.fiberid = -1 - - plugsort = struct_addtags(plugsort, $ - replicate(create_struct('BADSTDMASK', 0L), n_elements(plugsort))) - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('BADSTDMASK', 0L), n_elements(plugmap))) - - if keyword_set(plates) then begin - programname = (yanny_par_fc(hdr, 'programname'))[0] - program_tag1 = replicate( $ - {program: programname}, nfiber) - program_tag2 = replicate( $ - {program: programname}, n_elements(plugmap)) - - plugsort = struct_addtags(plugsort, $ - replicate(create_struct('ORG_FIBERID', 0L), n_elements(plugsort))) - - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('ORG_FIBERID', 0L), n_elements(plugmap))) - plugmap.ORG_FIBERID=plugmap.fiberid - - plugsort = struct_addtags(plugsort, program_tag1) - plugmap = struct_addtags(plugmap, program_tag2) - if strmatch(programname, '*MWM*', /fold_case) eq 1 then begin - spht = strmatch(plugmap.objtype, 'SPECTROPHOTO_STD') - for i=0, n_elements(plugmap)-1 do begin - if spht[i] then begin - if plugmap[i].mag[3] ge 18.0 then begin - badstdmask[i] = 1 - plugmap[i].badstdmask = 1 - endif - endif - endfor - endif - igood = where(qobj AND plugmap.fiberid GT 0 AND plugmap.spectrographid EQ 1 AND badstdmask EQ 0, ngood); check the number -1 - iplugged = where(qobj AND plugmap.fiberid GT 0 AND plugmap.spectrographid EQ 1, nplugged); check the number -1 - igoodapoge = where(qobj AND plugmap.fiberid GT 0 AND plugmap.spectrographid EQ 2 AND badstdmask EQ 0, napogee) - endif else begin - igood = where(qobj AND plugmap.fiberid GT 0, ngood) - iplugged = igood - endelse - if (ngood EQ 0) then $ - message, 'No fibers found in plugmap!' - iplace = plugmap[iplugged].fiberid - 1 - plugsort[iplace] = plugmap[iplugged] - ; Set the appropriate fibermask bit if a fiber not found in plugmap file. - ; Do this by first setting all bits to 1, then unsetting the good ones. - fibermask = fibermask OR fibermask_bits('NOPLUG') - fibermask[iplace] = fibermask[iplace] - fibermask_bits('NOPLUG') - - ; Fill in unplugged fibers with arbitrary entries, and assign - ; them a FIBERID. After this, plugsort.fiberid should run from 1...nfiber - imissing = where(plugsort.fiberid LE 0, nmissing) - splog, 'Number of missing fibers: ', nmissing-napogee - splog, 'Number of Invalid Standards: ',total(badstdmask,/INTEGER) - - if (nmissing GT 0) then begin - if keyword_set(plates) then begin - ifill = where(qobj AND plugmap.fiberid LE 0 OR plugmap.spectrographid EQ 2, nfill) - endif else begin - ifill = where(qobj AND plugmap.fiberid LE 0, nfill) - endelse - plugsort[imissing] = plugmap[ifill] - plugsort[imissing].fiberid = imissing + 1 - plugsort[imissing].spectrographid = 1 - endif - ;print,nmissing,nfill,ngood,nfiber - ;print,plugsort.fiberid - plugsort = struct_addtags(plugsort, $ - replicate(create_struct('fibermask', 0L), n_elements(plugsort))) - plugsort.fibermask=fibermask - - plugsort = struct_addtags(plugsort, $ - replicate(create_struct('fiber_offset', 0L), n_elements(plugsort))) - plugsort = struct_addtags(plugsort, $ - replicate(create_struct('delta_ra', 0.0D), n_elements(plugsort))) - plugsort = struct_addtags(plugsort, $ - replicate(create_struct('delta_dec', 0.0D), n_elements(plugsort))) - - return, plugsort -end - -;------------------------------------------------------------------------------ - -function readPlateplugMap, plugfile, plugmap,stnames, spectrographid, mjd, $ - apotags=apotags, exptime=exptime, $ - hdr=hdr, fibermask=fibermask, plates=plates, $ - legacy=legacy, no_db=no_db, _EXTRA=KeywordsForPhoto - - ; The correction vector is here --- adjust this as necessary. - ; These are the same numbers as in SDSSFLUX2AB in the photoop product. - correction = [-0.042, 0.036, 0.015, 0.013, -0.002] - - ;---------- - ; Trim to object fibers only, sort them, and trim to spectrographid - - plugmap = readPlateplugmap_sort(plugmap, hdr ,fibermask=fibermask, plates=plates) - ;---------- - ; Add the tags OFFSETID and SCI_EXPTIME for - - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('OFFSETID', 0L, 'SCI_EXPTIME', 0.), $ - n_elements(plugmap))) - i = (where(stnames EQ 'PLUGMAPPOINT', ct))[0] - if (ct GT 0) then begin - splog, 'Using OFFSETID and SCI_EXPTIME from PLUGMAPPOINT structure' - plugpoint = *pstruct[i] - for j=0L, n_elements(plugpoint)-1L do begin - k = where(abs(plugmap.xfocal - plugpoint[j].xfocal) LT 0.0001 $ - AND abs(plugmap.yfocal - plugpoint[j].yfocal) LT 0.0001, ct) - if (ct GT 0) then begin - plugmap[k[0]].offsetid = plugpoint[j].offsetid - plugmap[k[0]].sci_exptime = plugpoint[j].sci_exptime - endif - endfor - endif else begin - ; Use default values - plugmap.offsetid = 1 - sci_exptime = 1 - endelse - if (keyword_set(exptime)) then begin - iuniq = uniq(plugmap.offsetid, sort(plugmap.offsetid)) - exptot = total(plugmap[iuniq].sci_exptime) - if (exptot GT 0) then begin - splog, 'Rescaling SCI_EXPTIME values by ', exptime/exptot - plugmap.sci_exptime = plugmap.sci_exptime * exptime/exptot - endif - endif - - plateid = (yanny_par_fc(hdr, 'plateId'))[0] - redden_med = yanny_par_fc(hdr, 'reddeningMed') - if (n_elements(redden_med) NE 5) then begin - splog, 'WARNING: Wrong number of elements for reddeningMed' - redden_med = fltarr(5) - endif - - ;---------- - ; Append some information from the plateHoles file - - platelist_dir = getenv('PLATELIST_DIR') - platefile = 'plateHoles-' + string(plateid,format='(i6.6)') + '.par' - if (keyword_set(platelist_dir)) then begin - thisfile = (findfile(djs_filepath(platefile, $ - root_dir=platelist_dir, subdir=['plates','*','*']), count=ct))[0] - if (ct GT 0) then begin - plateholes = yanny_readone(thisfile, /anonymous) - iobj = where(strmatch(plateholes.holetype,'BOSS*')) - isort = lonarr(n_elements(plugmap)) - 1 - for i=0L, n_elements(plugmap)-1 do $ - isort[i] = where(plateholes.xfocal EQ plugmap[i].xfocal $ - AND plateholes.yfocal EQ plugmap[i].yfocal) - plateholes = plateholes[isort>0] - blankhole = plateholes[0] - struct_assign, {junk: 0}, blankhole - ibad = where(iobj EQ -1, nbad) - for i=0L, nbad-1 do plateholes[ibad[i]] = blankhole - if keyword_set(plates) then begin - htags = ['SOURCETYPE','LAMBDA_EFF','ZOFFSET','BLUEFIBER', $ - 'BOSS_TARGET*','ANCILLARY_TARGET*', 'EBOSS_TARGET*', $ - 'CATALOGID','SDSSV_BOSS_TARGET*','FIRSTCARTON', $ -; 'GAIA_G','GAIA_BP','GAIA_RP', $ - 'RUN','RERUN','CAMCOL','FIELD','ID', 'THING_ID_TARGETING'] - - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('Gaia_G_mag', 0.0, 'BP_mag', 0.0, $ - 'RP_mag', 0.0 ), n_elements(plugmap))) - plugmap = strct_to_struct(plateholes,'*','GAIA_G',plugmap,'*',outtag='Gaia_G_mag') - plugmap = strct_to_struct(plateholes,'*','GAIA_BP',plugmap,'*',outtag='BP_mag') - plugmap = strct_to_struct(plateholes,'*','GAIA_RP',plugmap,'*',outtag='RP_mag') - - endif else begin - htags = ['SOURCETYPE','LAMBDA_EFF','ZOFFSET','BLUEFIBER', $ - 'BOSS_TARGET*','ANCILLARY_TARGET*', 'EBOSS_TARGET*', $ - 'RUN','RERUN','CAMCOL','FIELD','ID', 'THING_ID_TARGETING'] - endelse - plugmap = struct_addtags(plugmap, $ - struct_selecttags(plateholes, select_tags=htags)) - - ;- We never used washers < 175 microns - ii = where(plugmap.zoffset lt 175) - plugmap[ii].zoffset = 0 - - ;- Check opfiles/washers.par for overrides to ZOFFSET - ;;; print, "Reading washers.par" - washers_file = getenv('IDLSPEC2D_DIR') + '/opfiles/washers.par' - washers = yanny_readone(washers_file) - - ; extract plugmap file name to match header keyword NAME - ; plPlugMapM-5317-56000-01.par -> 5317-56000-01 - tmp = strsplit(file_basename(plugfile), '-.', /extract) - plugname = strjoin(tmp[1:3], '-') - mjd = long(tmp[2]) - - ii = where(washers.plugname eq plugname, n) - if (n gt 1) then $ - message, "ERROR: multiple washers.par entries for " + plugname - if (n eq 1) then begin - status = washers[ii[0]].status - splog, "INFO: washer ZOFFSET override ", plugname, " ", status - if (status ne 'Y') then begin - if (status eq 'N') then plugmap.zoffset = 0.0 - if (status eq 'L') then plugmap.zoffset = (plugmap.zoffset ne 0) * 300.0 - if (status eq 'T') then plugmap.zoffset = (plugmap.zoffset eq 300) * 300.0 - if (status eq 'X') then begin - splog, "WARNING: We know that we don't know ZOFFSET washer status for ", plugname - splog, "WARNING: setting washer ZOFFSET to default 0.0 for ", plugname - plugmap.zoffset = 0.0 - endif - endif ; status ne 'Y' - endif else begin - ; No explicit override; check mjd before washers were available - ; don't print info for current plates to keep SoS quiet - if (mjd lt 56200) then splog, "INFO: no washers.par entry for ", plugname - if (mjd lt 55442) then begin - splog, "INFO: setting ZOFFSET=0 for MJD", mjd, " < 55442" - plugmap.zoffset = 0.0 - endif - ; No more washers after plate 7184 - if (plateid gt 7184) then plugmap.zoffset = 0.0 - endelse - endif ; ct gt 0 - endif ; platelist_dir set - - if keyword_set(plates) then begin - ;Check if plate is in list of plates to be corrected - catfile_dir = getenv('IDLSPEC2D_DIR')+ '/catfiles/' - catfile=catfile_dir+'Corrected_values_plate'+plateid+'_design*.fits' - if ~FILE_TEST(catfile_dir) then $ - splog, 'WARNING: No Catalogid Correction Files found in '+catfile_dir - if FILE_TEST(catfile) then begin - ;loads corrected catalog file - splog, 'Correcting Catalogid, Carton, and SDSS Magnitudes for ',plateid - catdata=mrdfits (catfile,1,/silent) - - addtags = replicate(create_struct( $ - 'SDSSV_APOGEE_TARGET0', 0L, $ - 'GRI_GAIA_TRANSFORM', 0L, $ - 'org_catid',0LL), n_elements(plugmap)) - plugmap = struct_addtags(plugmap, addtags) - plugmap.org_catid = plugmap.catalogid - ;;; File Check - matchlength=2.0/3600 ;Fiber Diameter in Degrees - for j=0L, n_elements(plugmap)-1 do begin - spherematch, catdata.RA, catdata.DEC, plugmap[j].RA, plugmap[j].DEC, matchlength, id, match2, distance12 - if id eq -1 then begin - splog, "WARNING: No Match for Correction of fiber ",j," @RA:",plugmap[j].RA," ",plugmap[j].DEC - endif else begin - if plugmap[j].catalogid ne catdata[id].Original_CatalogID then begin - splog, "WARNING: Catalogid Missmatch ",j," @RA DEC:",plugmap[j].RA," ",plugmap[j].DEC - endif else begin - splog, "Correcting Fiber ",STRTRIM(j,1)," Info @RA DEC:",plugmap[j].RA," ",plugmap[j].DEC - plugmap[j].catalogid=catdata[id].Final_CatalogID - plugmap[j].mag[1]=catdata[id].GMAG - plugmap[j].mag[2]=catdata[id].RMAG - plugmap[j].mag[3]=catdata[id].IMAG - plugmap[j].mag[4]=catdata[id].ZMAG - plugmap[j].FIRSTCARTON=catdata[id].First_carton - plugmap[j].SDSSV_APOGEE_TARGET0=catdata[id].APOGEE_FLAG - plugmap[j].sdssv_boss_target0=catdata[id].BOSS_FLAG - plugmap[j].GRI_GAIA_TRANSFORM=catdata[id].TRANSFORMATION_FLAG - ;Instrument ;Fiber_Type - endelse - endelse - endfor - endif - endif - - temp = plugmap.mag - nfilt = n_elements(temp[*,0]) - for ifilt = 0,nfilt-1 do begin - tempf = temp[ifilt,*] - inan = where(tempf eq 0.0, ct) - if ct eq 0 then continue - tempf[inan] = -999. - temp[ifilt, *] = tempf - endfor - plugmap.mag = temp - - colnames = TAG_NAMES(plugmap) - foreach col, ['GAIA_G_MAG','BP_MAG','RP_MAG'] do begin - temp = plugmap.(where(colnames eq col)) - inan = where(temp eq 0.0, ct) - if ct eq 0 then continue - temp[inan] = -999. - plugmap.(where(colnames eq col)) = temp - endforeach - - - plugmap = psf2Fiber_mag(plugmap, plates=plates, legacy=legacy) - - - plugmap = rename_tags(plugmap, 'CATALOGID','iCATALOGID') - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('CATALOGID', ''), n_elements(plugmap))) - plugmap.CATALOGID=strtrim(plugmap.iCATALOGID,1) - - plugmap = NoCatidPlugmapmap(plugmap) - - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('racat', 0.d), n_elements(plugmap))) - plugmap.racat=plugmap.ra - - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('deccat', 0.d), n_elements(plugmap))) - plugmap.deccat=plugmap.dec - - ;zerocatid = where(plugmap.iCATALOGID eq 0, ct) - ;if ct gt 0 then plugmap[zerocatid].CATALOGID = strtrim(plugmap[zerocatid].FIBERID) - ;---------- - ; Optionally add tags for SOS - - if (keyword_set(apotags)) then begin - addtags = { cartid : strtrim((yanny_par_fc(hdr, 'cartridgeId'))[0],2), $ - plateid : long(plateid), $ - tileid : long((yanny_par_fc(hdr, 'tileId'))[0]), $ - raplate : float((yanny_par_fc(hdr, 'raCen'))[0]), $ - decplate : float((yanny_par_fc(hdr, 'decCen'))[0]), $ - redden_med : float(redden_med), $ - fibersn : fltarr(3), $ - synthmag : fltarr(3) } - plugmap = struct_addtags(plugmap, replicate(addtags, n_elements(plugmap))) - healpix_now=0; There is no need for healpix info in the SOS - endif else begin - healpix_now=0; HJIM: I decided to pass this part as an afterburner for the spAll file - endelse - - if keyword_set(plates) then begin - programname = (yanny_par_fc(hdr, 'programname'))[0] - if strmatch(programname, '*eFEDS*', /fold_case) eq 1 then begin - psffibercor = [0.7978, 0.8138, 0.8230, 0.8235] - spht = strmatch(plugmap.FIRSTCARTON, '*bhm_spiders_clusters-efeds*') - for i=0, n_elements(plugmap)-1 do begin - if spht[i] then begin - plugmap[i].mag=plugmap[i].mag-psffibercor - endif - endfor - endif - - endif - ;---------- - if not keyword_set(apotags) then begin - ; Read calibObj or photoPlate photometry data - programname = (yanny_par_fc(hdr, 'programname'))[0] - ra_plate=float(yanny_par_fc(hdr, 'raCen')) - dec_plate=float(yanny_par_fc(hdr, 'decCen')) - plugmap=calibrobj(plugfile,plugmap, plateid, ra_plate,dec_plate, plates=plates,$ - no_db=no_db, legacy=legacy, KeywordsForPhoto=KeywordsForPhoto) - endif - ;----- - - if tag_exist(plugmap,'ORG_FIBERID') || tag_exist(plugmap,'org_catid') then begin - plugmap = struct_trimtags(plugmap,except_tags=['ORG_FIBERID','org_catid']) - endif - - plugmap = get_survey_plates(plugmap) - - return, plugmap -end - - -;------------------------------------------------------------------------------ -function prerun_readplugmap, plugfile, outfile, plugdir=plugdir, apotags=apotags, logfile=logfile, $ - exptime=exptime, hdr=hdr, fibermask=fibermask, cartid=cartid, plates=plates, legacy=legacy, $ - nfiles=nfiles, no_db=no_db, _EXTRA=KeywordsForPhoto - - if keyword_set(logfile) then begin - cpbackup, logfile - splog, filename=logfile - splog, 'Log file ' + logfile + ' opened ' + systime() - endif - - hdr = 0 ; Default return value - if (keyword_set(fibermask)) then begin - message, 'FIBERMASK is already set!' - endif - - if keyword_set(plates) or keyword_set(legacy) then begin - PMobjName='PLUGMAPOBJ' - maptype='PlugMap' - thisfile = (findfile(djs_filepath(plugfile, root_dir=plugdir), count=ct))[0] - endif else begin - PMobjName='FIBERMAP' - maptype='confSummary' - if keyword_set(plugdir) then begin - thisfile = (findfile(djs_filepath(plugfile, root_dir=plugdir, subdir='*/*'), count=ct))[0] - endif else begin - thisfile = plugfile - ct=1 - endelse - endelse - ;---------- - ; Read the file - if (ct NE 1) then begin - print, plugdir - print, plugfile - print, ct - splog, 'WARNING: Cannot find '+maptype+' file ' + plugfile - return, 0 - endif - - yanny_read, thisfile, pstruct, hdr=hdr, stnames=stnames, /anonymous - if (NOT keyword_set(pstruct)) then begin - tthisfile = (findfile(djs_filepath(plugfile, root_dir = getenv('SDSSCORE_DIR'), subdir=strlowcase(getenv('OBSERVATORY'))+'/summary_files/*/*/'), count=ct))[0] - splog, djs_filepath(plugfile, root_dir = getenv('SDSSCORE_DIR'), subdir=strlowcase(getenv('OBSERVATORY'))+'/summary_files/*/*/') - if ct ne 0 then yanny_read, tthisfile, pstruct, hdr=hdr, stnames=stnames, /anonymous - endif - if (NOT keyword_set(pstruct)) then begin - splog, 'WARNING: Invalid '+PMobjName+' file ' + thisfile - return, 0 - endif - - plugmap = *pstruct[(where(stnames EQ PMobjName))[0]] - plugmap.ra = (360d0 + plugmap.ra) MOD 360d0 - plugmap[where((plugmap.ra) lt 0)].ra = 359.9 - plugmap[where(abs(plugmap.dec) gt 90)].dec = 89.9 - - if keyword_set(plates) or keyword_set(legacy) then begin - plugmap = readPlateplugMap(plugfile,plugmap,stnames, mjd=mjd,$ - apotags=apotags, deredden=deredden, $ - exptime=exptime, $ - hdr=hdr, fibermask=fibermask, $ - plates=plates,legacy=legacy, $ - no_db=no_db, _EXTRA=KeywordsForPhoto) - endif else begin - plugmap = readFPSobsSummary(plugfile,plugmap,stnames, mjd=mjd, $ - apotags=apotags,deredden=deredden, $ - exptime=exptime, $ - hdr=hdr,fibermask=fibermask, $ - no_db=no_db, _EXTRA=KeywordsForPhoto) - - endelse - ; struct_print, plugmap, filename=repstr(plugfile,'.par','.html'), /html - - - - ;fits_hdr = yanny_to_fits_hdr(hdr, cartid=cartid) - - if not file_test(outfile) then begin - undefine, sumhdr - sxaddpar, sumhdr, 'EXTNAME', 'Summary', ' Table of plugmap/confSummary header parameters' - hdr_struct = yannyhdr_to_struct(hdr, plugfile, plugdir=plugdir, cartid=cartid) - MWRFITS, hdr_struct, outfile, sumhdr, Status=Status, /silent - endif else begin - hdr_struct=MRDFITS(outfile, 'Summary', sumhdr,/silent) - hdr_struct=yannyhdr_to_struct(hdr, plugfile, plugdir=plugdir, hdr_struct=hdr_struct, cartid=cartid) - ;modfits, outfile, hdr_struct, EXTNAME='Summary' - update_fitsTable, outfile, 'Summary', ' Table of plugmap/confSummary header parameters', hdr_struct - endelse - hdr=struct_to_yannyhdr(FILE_BASENAME(plugfile), hdr_struct=hdr_struct) - undefine, fits_hdr - sxaddpar, fits_hdr, 'EXTNAME', FILE_BASENAME(plugfile), ' Complete Plugmap/confSummary' - MWRFITS, plugmap, outfile, fits_hdr, Status=Status, /silent - if keyword_set(logfile) then splog, /close - return, plugmap -end diff --git a/pro/spec2d/qaplot_scatlight.pro b/pro/spec2d/qaplot_scatlight.pro deleted file mode 100644 index c458332d1..000000000 --- a/pro/spec2d/qaplot_scatlight.pro +++ /dev/null @@ -1,127 +0,0 @@ -;+ -; NAME: -; qaplot_scatlight -; -; PURPOSE: -; Generate QA plots for scattered light -; -; CALLING SEQUENCE: -; qaplot_scatlight, scatfit, yrow, wset=, xcen=, [ fibermask=, title= ] -; -; INPUTS: -; scatfit - Scattered light image after fitting [NX,NY/8] -; yrow - extracted rows in scatfit -; -; REQUIRED KEYWORDS: -; wset - Wavelength solution -; xcen - X positions corresponding to the extracted wavelength sol'n -; [NY,NTRACE] -; -; OPTIONAL KEYWORDS: -; fibermask - Fiber status bits, set nonzero for bad status [NFIBER] -; title - TITLE of plot -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_median() -; djs_oploterr -; djs_plot -; traceset2xy -; -; REVISION HISTORY: -; 13-Dec-1999 Written by D. Schlegel, Princeton -; 22-Jan-2000 Trying to speed up, S. Burles -;- -;------------------------------------------------------------------------------ - -pro qaplot_scatlight, scatfit, yrow, wset=wset, xcen=xcen, $ - fibermask=fibermask, title=title - - if (N_params() LT 2) then begin - print, 'Syntax - qaplot_scatlight, scatfit, yrow, [ wset=, xcen=, $' - print, ' fibermask=, title= ]' - return - endif - - if (NOT keyword_set(fibermask)) then fibermask = bytarr(nfiber) - if (NOT keyword_set(title)) then title = '' - - scatmed = median(scatfit) - scatmax = max(scatfit) - if (scatmed GT 20) then $ - splog, 'WARNING: Scattered light median = ', scatmed, ' electrons' $ - else $ - splog, 'Scattered light median = ', scatmed, ' electrons' - if (scatmax GT 40) then $ - splog, 'WARNING: Scattered light max = ', scatmax, ' electrons' $ - else $ - splog, 'Scattered light max = ', scatmax, ' electrons' - - ;--------------------------------------------------------------------------- - ; Plot contour image of scattered light - - contour, (scatfit[*,yrow])[yrow,*], yrow, yrow, $ - /follow, nlevels = 10, /xstyle, /ystyle, $ - xtitle='X [pix]', ytitle='Y [pix]', $ - title=title, c_charsize=1.5 - - ;--------------------------------------------------------------------------- - ; Plot spectrum of scattered light - - ; Compute the wavelengths for all vectors from the trace set - traceset2xy, wset, ycen, loglam - - ;$ "Extract" Scattered Light, and divide by 2.0 * radius - - lamsort = sort(loglam) - dims = size(loglam, /dimens) - ny = dims[0] - nfiber = dims[1] - - xsafe = (xcen > 1) < ny - 2 - scatextract = (extract_boxcar(scatfit, xsafe, radius=1.0)) / 2.0 - - midindex = lindgen(nfiber)*ny + ny/2 - binwave = 10^loglam[lamsort[midindex]] - - scattemp = reform(scatextract[lamsort],ny,nfiber) - meanval = total(scattemp,1)/ny - medianval = djs_median(scattemp,1) - - minval = fltarr(nfiber) - maxval = fltarr(nfiber) - - for ibin=0,nfiber - 1 do minval[ibin] = min(scattemp[*,ibin]) - for ibin=0,nfiber - 1 do maxval[ibin] = max(scattemp[*,ibin]) - - xrange = 10^[min(loglam), max(loglam)] + [-100,100] ; Pad by 100 Angstroms - - ; Plot - set Y limits according to MAXVAL - djs_plot, binwave, maxval, /nodata, xrange=xrange, xstyle=1, $ - xtitle='\lambda [A]', ytitle='Brightness [electrons/pix]', $ - title=title - djs_oploterr, binwave, (minval+maxval)/2.0, yerr=(maxval-minval)/2.0 - djs_oplot, binwave, medianval - djs_oplot, binwave, meanval, color='red' - - xpos = binwave[fix(nfiber/20)] - xyouts, xpos, 0.15*!y.crange[1] + 0.85*!y.crange[0], $ - 'Error bars denote full range' - xyouts, xpos, 0.10*!y.crange[1] + 0.90*!y.crange[0], $ - 'Min value =' + string(min(medianval),format='(f9.3)') - xyouts, xpos, 0.05*!y.crange[1] + 0.95*!y.crange[0], $ - 'Max value =' + string(max(medianval),format='(f9.3)') - xyouts, 0.95, 0., systime(), /normal, align=1 ; , charsize=0.5 - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/qaplot_skydev.pro b/pro/spec2d/qaplot_skydev.pro deleted file mode 100644 index 14a84ce60..000000000 --- a/pro/spec2d/qaplot_skydev.pro +++ /dev/null @@ -1,102 +0,0 @@ -;+ -; NAME: -; qaplot_skydev -; -; PURPOSE: -; Generate QA plot: scatter in sky line positions -; -; CALLING SEQUENCE: -; qaplot_skydev, flux, fluxivar, vacset, plugsort, color, $ -; [fibermask=, title=] -; -; INPUTS: -; flux - Pre-skysubtracted flux array [Nrow, Ntrace] -; fluxivar - Associated inverse variance -; vacset - Vacuum Wavelength solution -; plugsort - Plugmap struct [Ntrace] -; color - string specifying 'red' or 'blue' spectra -; -; OPTIONAL KEYWORDS: -; fibermask - Fiber status bits, set nonzero for bad status [NFIBER] -; title - TITLE of plot -; -; OUTPUTS: -; Output plots only -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This code has been deprecated in favor of QAPLOT_SKYSHIFT. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_oplot -; djs_plot -; trace_gweight -; traceset2xy -; traceset2pix -; djs_median -; -; REVISION HISTORY: -; 22-Jan-2000 Written by S. Burles, Chicago -;- -;------------------------------------------------------------------------------ - -pro qaplot_skydev, flux, fluxivar, vacset, plugsort, color, $ - fibermask=fibermask, title=title - - if (N_params() LT 5) then begin - print, 'Syntax - qaplot_skydev, flux, fluxivar, vacset, plugsort,$' - print, ' color, [fibermask=, title= ]' - return - endif - - nTrace = (size(flux))[2] -; -; Here are guesses at strong skylines in red and blue -; (corrected to vacuum wavelengths) -; - if (color EQ 'red') then $ - possible = [5891.8, 6866.2, 7278.6, 7343.2, $ - 7753.0, 7796.5, 7824.0, 7916.0, 7967.1, $ - 7995.6, 8028.2, 8401.6, 8432.5, 8829.6, $ - 8888.2, 8922.0, 8960.6] $ - else if (color EQ 'blue') then $ - possible = [4047.706, 4359.553, 5462.252, 5578.894, 5891.583] - - logpos = alog10(possible) - - pix = traceset2pix(vacset, logpos) - ycen = long(pix) - for i=0,nTrace - 1 do ycen[*,i] = i - - skycen = trace_gweight(flux, pix, ycen, $ - invvar=fluxivar, xerr=skyerr, sigma=1.0) - skycen = trace_gweight(flux, skycen, ycen, $ - invvar=fluxivar, xerr=skyerr, sigma=1.0) - skycen = trace_gweight(flux, skycen, ycen, $ - invvar=fluxivar, xerr=skyerr, sigma=1.0) - - traceset2xy, vacset, skycen, skywave - - skymed = djs_median(skywave,2) - - veldiff = (skywave-skymed # (fltarr(nTrace) +1.0)) * 3.0e5 * 2.302585 - - veldiff = veldiff * (skyerr LT 990) - - djs_plot, possible # (fltarr(nTrace) +1.0), veldiff, ps=3, $ - yr=[-40,40], xtitle='Wavelength of sky lines', $ - ytitle='Offsets from median (km/s)', $ - title=title+' Skyline Positions' - - skies = where(plugsort.objtype EQ 'SKY',nskies) - if (skies[0] NE -1) then $ - djs_oplot, possible # (fltarr(nskies) +1.0), veldiff[*,skies], $ - ps=4, color='red' - - return -end diff --git a/pro/spec2d/readobssummary.pro b/pro/spec2d/readobssummary.pro deleted file mode 100644 index f9bc78901..000000000 --- a/pro/spec2d/readobssummary.pro +++ /dev/null @@ -1,464 +0,0 @@ -;+ -; NAME: -; readobssummary -; -; PURPOSE: -; Read the obsSummary file and append tags as requested -; -; CALLING SEQUENCE: -; plugmap = readobssummary( obssfile, [ spectrographid, plugdir=, $ -; /apotags, /deredden, /calibobj, exptime=, hdr=, fibermask=, _EXTRA= ] ) -; -; INPUTS: -; obssfile - Name of Yanny-parameter obsSummary file -; -; OPTIONAL INPUTS: -; spectrographid - The spectrograph number, either 1 or 2; -; if not set (or 0), then return all object fibers -; plugdir - Directory for obsSummary -; apotags - If set, then add a number of tags to the output structure -; constructed from the Yanny header. These tags are: -; CARTID, CONFIID, FIELDID, TILEID, RACONF, DECCONF, REDDEN_MED. -; Also add the tags FIBERSN[3], SYTHMAG[3] which are used -; by the on-the-mountain reductions. -; deredden - If set, then deredden the MAG fields using the median -; reddening value for the entire field as found in the -; Yanny header of the plugmap file; this is done for the -; on-the-mountain reductions. -; exptime - Default exposure time SCI_EXPTIME to add to the output; -; if there are multiple pointings and EXPTIME is set, then -; the exposure time in each pointing is scaled such that -; their sum is EXPTIME. -; calibobj - If set, then add a CALIBFLUX,CALIBFLUX_IVAR entries based upon -; the calibObj (deprecated) or photoPlate files. -; For stellar objects, this contains the -; PSF fluxes in nMgy. For galaxies, it contains the fiber fluxes -; multiplied by the median (PSF/fiber) flux ratio for stars. -; The MAG fields are left unchanged. -; For objects with no calibObj entry, simply set these fields as: -; CALIBFLUX = 22.5 - 2.5*alog10(MAG), CALIBFLUX_IVAR = 0. -; We apply the putative AB corrections to these fluxes -; (but not to the MAG values). -; Also add the SFD reddening values as SFD_EBV. -; _EXTRA - Keywords for PLUG2TSOBJ(), such as MJD,INDIR -; -; OUTPUTS: -; plugmap - Plugmap structure -; -; OPTIONAL OUTPUTS: -; hdr - Header from Yanny-formatted plugmap file -; fibermask - Byte array with bits set for unknown fibers -; -; COMMENTS: -; Do not use the calibObj structure if more than 10% of the non-sky -; objects do not have fluxes. -; -; Reads $IDLSPEC2D_DIR/opfiles/washers.par for ZOFFSET status overrides. -; The original plugmap files reflect what we wanted to do; the overrides -; and the return of this function reflect what we actually did. -; -; EXAMPLES: -; -; BUGS: -; The AB corrections are hard-wired to be the same as in the photoop -; product as of 18 Feb 2004. -; -; PROCEDURES CALLED: -; djs_filepath() -; dust_getval() -; euler -; plug2tsobj() -; sdss_flagval() -; splog -; struct_addtags() -; yanny_par() -; yanny_read -; -; REVISION HISTORY: -; 29-Jan-2001 Written by S. Burles, FNAL -; 07-Aug-2012 Added ZOFFSET overrides; S. Bailey, LBL -; 16-Jan-2019 Renamed as readobssummary by H. J. Ibarra-Medel -;- -;------------------------------------------------------------------------------ -function readobssum_sort, plugmap, fibermask=fibermask - - qobj = strmatch(plugmap.fibertype,'BOSS') - qobjapo = strmatch(plugmap.fibertype,'APOGEE') - indx = where(qobj, nfiber1) - indx = where(qobjapo, nfiber2) - nfiber=nfiber1+nfiber2 - if (NOT keyword_set(fibermask)) then fibermask = bytarr(nfiber) $ - else if (n_elements(fibermask) NE nfiber) then $ - message, 'Number of elements in FIBERMASK do not match NFIBER' - - blankmap = plugmap[0] - struct_assign, {junk:0}, blankmap - plugsort = replicate(blankmap, nfiber) - plugsort.fibertype = '' - plugsort.objtype = 'NA' - plugsort.fiberid = -1 - - igood = where(qobj AND plugmap.fiberid GT 0, ngood) - if (ngood EQ 0) then $ - message, 'No fibers found in obsSummary file!' - iplace = plugmap[igood].fiberid - 1 - plugsort[iplace] = plugmap[igood] - - ; Set the appropriate fibermask bit if a fiber not found in plugmap file. - ; Do this by first setting all bits to 1, then unsetting the good ones. - fibermask = fibermask OR fibermask_bits('NOPLUG') - fibermask[iplace] = fibermask[iplace] - fibermask_bits('NOPLUG') - - ; Fill in unplugged fibers with arbitrary entries, and assign - ; them a FIBERID. After this, plugsort.fiberid should run from 1...nfiber - imissing = where(plugsort.fiberid LE 0, nmissing) - splog, 'Number of missing fibers: ', nmissing - if (nmissing GT 0) then begin - ;ifill = where(qobjapo AND plugmap.fiberid LE 0, nfill); HJIM Change qobj by qobjapo - ifill = where(qobjapo, nfill) - ;print, nfill,ngood,nfiber2 - plugsort[imissing] = plugmap[ifill] - plugsort[imissing].fiberid = imissing + 1 - endif - - return, plugsort -end -;------------------------------------------------------------------------------ -function readobssummary, obssfile, spectrographid, plugdir=plugdir, $ - apotags=apotags, deredden=deredden, exptime=exptime, calibobj=calibobj, $ - hdr=hdr, fibermask=fibermask, n_names=n_names, _EXTRA=KeywordsForPhoto - if n_elements(obssfile) GT 1 then begin - nnames=1 - ;sconfig = strarr(n_elements(config)) - for i=0, n_elements(obssfile)-1 do begin - if i EQ 0 then begin - plugmap = readobssummary(obssfile[i], spectrographid, plugdir=plugdir, $ - apotags=apotags, deredden=deredden, exptime=exptime, calibobj=calibobj, $ - hdr=hdr, fibermask=fibermask, n_names=nnames, _EXTRA=KeywordsForPhoto) - hdr=['cut',hdr] - fibermask=[-100,fibermask] - endif - if i GT 0 then begin - fibermask1=0 - plugmap1 = readobssummary(obssfile[i], spectrographid, plugdir=plugdir, $ - apotags=apotags, deredden=deredden, exptime=exptime, calibobj=calibobj, $ - hdr=hdr1, fibermask=fibermask1, n_names=nnames, _EXTRA=KeywordsForPhoto) - plugmap = [plugmap ,plugmap1] - hdr= [hdr,'cut',hdr1] - fibermask = [fibermask,-100, fibermask1] - endif - endfor - hdr= [hdr,'cut'] - fibermask = [fibermask,-100] - return, plugmap - endif - - hdr = 0 ; Default return value - if (keyword_set(fibermask)) then $ - message, 'FIBERMASK is already set!' - - ; The correction vector is here --- adjust this as necessary. - ; These are the same numbers as in SDSSFLUX2AB in the photoop product. - correction = [-0.042, 0.036, 0.015, 0.013, -0.002] - - ;---------- - ; Read the file - thisfile = (findfile(djs_filepath(obssfile, root_dir=plugdir), $ - count=ct))[0] - if (ct NE 1) then begin - splog, 'WARNING: Cannot find obsSummary file ' + obssfile - return, 0 - endif - - yanny_read, thisfile, pstruct, hdr=hdr, stnames=stnames, /anonymous - if (NOT keyword_set(pstruct)) then begin - splog, 'WARNING: Invalid obsSummary file ' + thisfile - return, 0 - endif - plugmap = *pstruct[(where(stnames EQ 'FIBERMAP'))[0]] - - plugmap.ra = (360d0 + plugmap.ra) MOD 360d0 - - ;---------- - ; Trim to object fibers only, sort them, and trim to spectrographid - - plugmap = readobssum_sort(plugmap, fibermask=fibermask) - - ;---------- - ; Add the tags OFFSETID and SCI_EXPTIME for - - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('OFFSETID', 0L, 'SCI_EXPTIME', 0.), $ - n_elements(plugmap))) - i = (where(stnames EQ 'PLUGMAPPOINT', ct))[0] - if (ct GT 0) then begin - splog, 'Using OFFSETID and SCI_EXPTIME from PLUGMAPPOINT structure' - plugpoint = *pstruct[i] - for j=0L, n_elements(plugpoint)-1L do begin - k = where(abs(plugmap.xfocal - plugpoint[j].xfocal) LT 0.0001 $ - AND abs(plugmap.yfocal - plugpoint[j].yfocal) LT 0.0001, ct) - if (ct GT 0) then begin - plugmap[k[0]].offsetid = plugpoint[j].offsetid - plugmap[k[0]].sci_exptime = plugpoint[j].sci_exptime - endif - endfor - endif else begin - ; Use default values - plugmap.offsetid = 1 - ;sci_exptime = 1 - plugmap.sci_exptime = 1 - endelse - if (keyword_set(exptime)) then begin - iuniq = uniq(plugmap.offsetid, sort(plugmap.offsetid)) - exptot = total(plugmap[iuniq].sci_exptime) - if (exptot GT 0) then begin - splog, 'Rescaling SCI_EXPTIME values by ', exptime/exptot - plugmap.sci_exptime = plugmap.sci_exptime * exptime/exptot - endif - endif - - plateid = (yanny_par(hdr, 'bhmfield_id'))[0] - redden_med = yanny_par(hdr, 'reddeningMed') - if (n_elements(redden_med) NE 5) then begin - splog, 'WARNING: Wrong number of elements for reddeningMed' - redden_med = fltarr(5) - endif - - ;---------- - ; Append some information from the plateHoles file - - platelist_dir = getenv('PLATELIST_DIR') - platefile = 'plateHoles-' + string(plateid,format='(i6.6)') + '.par' - if (keyword_set(platelist_dir)) then begin - thisfile = (findfile(djs_filepath(platefile, $ - root_dir=platelist_dir, subdir=['plates','*','*']), count=ct))[0] - if (ct GT 0) then begin - plateholes = yanny_readone(thisfile, /anonymous) - iobj = where(strmatch(plateholes.holetype,'BOSS*')) - plateholes = plateholes[iobj] - isort = lonarr(n_elements(plugmap)) - 1 - for i=0L, n_elements(plugmap)-1 do $ - isort[i] = where(plateholes.xfocal EQ plugmap[i].xfocal $ - AND plateholes.yfocal EQ plugmap[i].yfocal) - plateholes = plateholes[isort>0] - blankhole = plateholes[0] - struct_assign, {junk: 0}, blankhole - ibad = where(iobj EQ -1, nbad) - for i=0L, nbad-1 do plateholes[ibad[i]] = blankhole - htags = ['SOURCETYPE','LAMBDA_EFF','ZOFFSET','BLUEFIBER', $ - 'BOSS_TARGET*','ANCILLARY_TARGET*', 'EBOSS_TARGET*', $ - 'RUN','RERUN','CAMCOL','FIELD','ID', 'THING_ID_TARGETING'] - plugmap = struct_addtags(plugmap, $ - struct_selecttags(plateholes, select_tags=htags)) - - ;- We never used washers < 175 microns - ii = where(plugmap.zoffset lt 175) - plugmap[ii].zoffset = 0 - - ;- Check opfiles/washers.par for overrides to ZOFFSET - ;;; print, "Reading washers.par" - washers_file = getenv('IDLSPEC2D_DIR') + '/opfiles/washers.par' - washers = yanny_readone(washers_file) - - ; extract plugmap file name to match header keyword NAME - ; plPlugMapM-5317-56000-01.par -> 5317-56000-01 - tmp = strsplit(file_basename(pobssfile), '-.', /extract) - plugname = strjoin(tmp[1:3], '-') - mjd = long(tmp[2]) - - ii = where(washers.plugname eq plugname, n) - if (n gt 1) then $ - message, "ERROR: multiple washers.par entries for " + plugname - if (n eq 1) then begin - status = washers[ii[0]].status - splog, "INFO: washer ZOFFSET override ", plugname, " ", status - if (status ne 'Y') then begin - if (status eq 'N') then plugmap.zoffset = 0.0 - if (status eq 'L') then plugmap.zoffset = (plugmap.zoffset ne 0) * 300.0 - if (status eq 'T') then plugmap.zoffset = (plugmap.zoffset eq 300) * 300.0 - if (status eq 'X') then begin - splog, "WARNING: We know that we don't know ZOFFSET washer status for ", plugname - splog, "WARNING: setting washer ZOFFSET to default 0.0 for ", plugname - plugmap.zoffset = 0.0 - endif - endif ; status ne 'Y' - endif else begin - ; No explicit override; check mjd before washers were available - ; don't print info for current plates to keep SoS quiet - if (mjd lt 56200) then splog, "INFO: no washers.par entry for ", plugname - if (mjd lt 55442) then begin - splog, "INFO: setting ZOFFSET=0 for MJD", mjd, " < 55442" - plugmap.zoffset = 0.0 - endif - ; No more washers after plate 7184 - if (plateid gt 7184) then plugmap.zoffset = 0.0 - endelse - endif ; ct gt 0 - endif ; platelist_dir set - - ;---------- - ; Optionally add tags for SOS - - if (keyword_set(apotags)) then begin - confiid = (yanny_par(hdr, 'configuration_id'))[0] - addtags = { $ - cartid : long((yanny_par(hdr, 'cartridgeId'))[0]), $ - confid : long(confiid), $ - ;tileid : long((yanny_par(hdr, 'tileId'))[0]), $ - raplate : float((yanny_par(hdr, 'raCen'))[0]), $ - decplate : float((yanny_par(hdr, 'decCen'))[0]), $ - redden_med : float(redden_med), $ - fibersn : fltarr(3), $ - synthmag : fltarr(3) } - plugmap = struct_addtags(plugmap, replicate(addtags, n_elements(plugmap))) - endif - - ;---------- - ; Read calibObj or photoPlate photometry data - - if (keyword_set(calibobj)) then begin - splog, 'Adding fields from calibObj file' - addtags = replicate(create_struct( $ - 'CALIBFLUX', fltarr(5), $ - 'CALIBFLUX_IVAR', fltarr(5), $ - 'CALIB_STATUS', lonarr(5), $ - 'SFD_EBV', 0.), n_elements(plugmap)) - plugmap = struct_addtags(plugmap, addtags) - - ;---------- - ; Read the SFD dust maps - - euler, plugmap.ra, plugmap.dec, ll, bb, 1 - plugmap.sfd_ebv = dust_getval(ll, bb, /interp) - - ;---------- - ; Attempt to read the calibObj photometry data - - tsobj = plug2tsobj(plateid, _EXTRA=KeywordsForPhoto) - - ; Do not use the calibObj structure if more than 20% of the non-sky - ; objects do not have fluxes. - if (keyword_set(tsobj)) then begin - qexist = tsobj.psfflux[2] NE 0 - qsky = strmatch(plugmap.objtype,'SKY*') - splog, 'Matched ', fix(total(qsky EQ 0 AND qexist)), $ - ' of ', fix(total(qsky EQ 0)), ' non-SKY objects' - if (total((qsky EQ 0) AND qexist) LT 0.80*total(qsky EQ 0)) then begin - splog, 'Discarding calibObj structure because < 80% matches' - tsobj = 0 - endif - endif - - if (keyword_set(tsobj)) then begin - - ; Propagate CALIB_STATUS information: - if tag_exist(tsobj, 'CALIB_STATUS') then $ - plugmap.calib_status = tsobj.calib_status - - ; Assume that all objects not called a 'GALAXY' are stellar objects - qstar = strmatch(plugmap.objtype, 'GALAXY*') EQ 0 - istar = where(qstar AND qexist, nstar) - igal = where(qstar EQ 0 AND qexist, ngal) - if (tag_exist(tsobj,'FIBER2FLUX')) then begin - fiberflux = transpose(tsobj.fiber2flux) - fiberflux_ivar = transpose(tsobj.fiber2flux_ivar) - pratio = [2.085, 2.085, 2.116, 2.134, 2.135] - endif else begin - fiberflux = transpose(tsobj.fiberflux) - fiberflux_ivar = transpose(tsobj.fiberflux_ivar) - pratio = [1.343, 1.336, 1.354, 1.363, 1.367] - endelse - if (nstar GT 0) then begin - plugmap[istar].calibflux = tsobj[istar].psfflux - plugmap[istar].calibflux_ivar = tsobj[istar].psfflux_ivar -; ; Compute the ratio of PSF/FIBER flux for stars in each filter, -; ; using only stars that are brighter than 30 nMgy (= 18.8 mag). -; ; If no such stars, then this ratio is set to unity. -; for ifilt=0, 4 do begin -; v1 = tsobj[istar].psfflux[ifilt] -; v2 = fiberflux[istar,ifilt] -; jj = where(v1 GT 30 AND v2 GT 30, ct) -; if (ct GT 0) then pratio[ifilt] = median([ v1[jj] / v2[jj] ]) -; endfor - endif - splog, 'PSF/fiber flux ratios = ', pratio - if (ngal GT 0) then begin - for ifilt=0, 4 do begin - plugmap[igal].calibflux[ifilt] = $ - fiberflux[igal,ifilt] * pratio[ifilt] - plugmap[igal].calibflux_ivar[ifilt] = $ - fiberflux_ivar[igal,ifilt] / (pratio[ifilt])^2 - endfor - endif - - ; Reject any fluxes based upon suspect PHOTO measurements, - ; as indicated by the PHOTO flags. - badbits2 = sdss_flagval('OBJECT2','SATUR_CENTER') $ - OR sdss_flagval('OBJECT2','INTERP_CENTER') $ - OR sdss_flagval('OBJECT2','PSF_FLUX_INTERP') - qgoodphot = (tsobj.flags2 AND badbits2) EQ 0 - plugmap.calibflux = plugmap.calibflux * qgoodphot - plugmap.calibflux_ivar = plugmap.calibflux_ivar * qgoodphot - endif else begin - splog, 'WARNING: No calibObj structure found for plate ', plateid - endelse - - ;---------- - ; For any objects that do not have photometry from the calibObj - ; structure, simply translate the flux from the plugmap MAG values - ; (as long as those values are in the range 0 < MAG < +50). - - for ifilt=0, 4 do begin - ibad = where(plugmap.calibflux[ifilt] EQ 0 $ - AND plugmap.mag[ifilt] GT 0 $ - AND plugmap.mag[ifilt] LT 50, nbad) - if (nbad GT 0) then begin - splog, 'Using plug-map fluxes for ', nbad, $ - ' values in filter ', ifilt - plugmap[ibad].calibflux[ifilt] = $ - 10.^((22.5 - plugmap[ibad].mag[ifilt]) / 2.5) - plugmap[ibad].calibflux_ivar[ifilt] = 0 - endif - endfor - - ;---------- - ; Apply AB corrections to the CALIBFLUX values (but not to MAG) - - factor = exp(-correction/2.5 * alog(10)) - for j=0,4 do plugmap.calibflux[j] = plugmap.calibflux[j] * factor[j] - for j=0,4 do $ - plugmap.calibflux_ivar[j] = plugmap.calibflux_ivar[j] / factor[j]^2 - endif - - ;----- - ; The following lines are modified to apply the new extinctiion coefficients. - ; They are just the ratios of new/old, - redden_corr=[0.822308,0.870815,0.830607,0.813998,0.853955] - if (keyword_set(deredden)) then begin - splog, 'Applying reddening vector ', redden_med - for ifilt=0, 4 do begin - ; if (plateid ge 7572) then begin - plugmap.mag[ifilt] = plugmap.mag[ifilt] - redden_med[ifilt] - ; endif else begin - ; plugmap.mag[ifilt] = plugmap.mag[ifilt] - redden_med[ifilt]*redden_corr[ifilt] - ; splog, 'modified extinction co-efficients: ',redden_med[ifilt]*redden_corr[ifilt] - ; endelse - endfor - endif - ;a=plugmap.run - ; Optionally trim to selected spectrograph - ; HJIB-- for the bhm this part is not needed - ;nfiber = n_elements(plugmap) - ;if (keyword_set(spectrographid)) then begin - ; indx = (spectrographid-1)*nfiber/2 + lindgen(nfiber/2) - ; plugmap = plugmap[indx] - ; fibermask = fibermask[indx] - ;endif - if (keyword_set(n_names)) EQ 0 then begin - hdr= ['cut',hdr,'cut'] - fibermask = [-100,fibermask,-100] - endif - - return, plugmap -end -;------------------------------------------------------------------------------ \ No newline at end of file diff --git a/pro/spec2d/readplugmap.old b/pro/spec2d/readplugmap.old deleted file mode 100644 index e516f999e..000000000 --- a/pro/spec2d/readplugmap.old +++ /dev/null @@ -1,433 +0,0 @@ -;+ -; NAME: -; readplugmap -; -; PURPOSE: -; Read plugmap file and append tags as requested -; -; CALLING SEQUENCE: -; plugmap = readplugmap( plugfile, [ spectrographid, plugdir=, $ -; /apotags, /deredden, /calibobj, exptime=, hdr=, fibermask=, _EXTRA= ] ) -; -; INPUTS: -; plugfile - Name of Yanny-parameter plugmap file -; -; OPTIONAL INPUTS: -; spectrographid - The spectrograph number, either 1 or 2; -; if not set (or 0), then return all object fibers -; plugdir - Directory for PLUGFILE -; apotags - If set, then add a number of tags to the output structure -; constructed from the Yanny header. These tags are: -; CARTID, PLATEID, TILEID, RAPLATE, DECPLATE, REDDEN_MED. -; Also add the tags FIBERSN[3], SYTHMAG[3] which are used -; by the on-the-mountain reductions. -; deredden - If set, then deredden the MAG fields using the median -; reddening value for the entire plate as found in the -; Yanny header of the plugmap file; this is done for the -; on-the-mountain reductions. -; exptime - Default exposure time SCI_EXPTIME to add to the output; -; if there are multiple pointings and EXPTIME is set, then -; the exposure time in each pointing is scaled such that -; their sum is EXPTIME. -; calibobj - If set, then add a CALIBFLUX,CALIBFLUX_IVAR entries based upon -; the calibObj (deprecated) or photoPlate files. -; For stellar objects, this contains the -; PSF fluxes in nMgy. For galaxies, it contains the fiber fluxes -; multiplied by the median (PSF/fiber) flux ratio for stars. -; The MAG fields are left unchanged. -; For objects with no calibObj entry, simply set these fields as: -; CALIBFLUX = 22.5 - 2.5*alog10(MAG), CALIBFLUX_IVAR = 0. -; We apply the putative AB corrections to these fluxes -; (but not to the MAG values). -; Also add the SFD reddening values as SFD_EBV. -; _EXTRA - Keywords for PLUG2TSOBJ(), such as MJD,INDIR -; -; OUTPUTS: -; plugmap - Plugmap structure -; -; OPTIONAL OUTPUTS: -; hdr - Header from Yanny-formatted plugmap file -; fibermask - Byte array with bits set for unknown fibers -; -; COMMENTS: -; Do not use the calibObj structure if more than 10% of the non-sky -; objects do not have fluxes. -; -; Reads $IDLSPEC2D_DIR/opfiles/washers.par for ZOFFSET status overrides. -; The original plugmap files reflect what we wanted to do; the overrides -; and the return of this function reflect what we actually did. -; -; EXAMPLES: -; -; BUGS: -; The AB corrections are hard-wired to be the same as in the photoop -; product as of 18 Feb 2004. -; -; PROCEDURES CALLED: -; djs_filepath() -; dust_getval() -; euler -; plug2tsobj() -; sdss_flagval() -; splog -; struct_addtags() -; yanny_par() -; yanny_read -; -; REVISION HISTORY: -; 29-Jan-2001 Written by S. Burles, FNAL -; 07-Aug-2012 Added ZOFFSET overrides; S. Bailey, LBL -;- -;------------------------------------------------------------------------------ -function readplugmap_sort, plugmap, fibermask=fibermask - - qobj = strmatch(plugmap.holetype,'BOSS') - qobjapo = strmatch(plugmap.holetype,'APOGEE') - indx = where(qobj, nfiber1) - indx = where(qobjapo, nfiber2) - nfiber=nfiber1+nfiber2 - if (NOT keyword_set(fibermask)) then fibermask = bytarr(nfiber) $ - else if (n_elements(fibermask) NE nfiber) then $ - message, 'Number of elements in FIBERMASK do not match NFIBER' - - blankmap = plugmap[0] - struct_assign, {junk:0}, blankmap - plugsort = replicate(blankmap, nfiber) - plugsort.holetype = '' - plugsort.objtype = 'NA' - plugsort.fiberid = -1 - - igood = where(qobj AND plugmap.fiberid GT 0, ngood) - if (ngood EQ 0) then $ - message, 'No fibers found in plugmap!' - iplace = plugmap[igood].fiberid - 1 - plugsort[iplace] = plugmap[igood] - - ; Set the appropriate fibermask bit if a fiber not found in plugmap file. - ; Do this by first setting all bits to 1, then unsetting the good ones. - fibermask = fibermask OR fibermask_bits('NOPLUG') - fibermask[iplace] = fibermask[iplace] - fibermask_bits('NOPLUG') - - ; Fill in unplugged fibers with arbitrary entries, and assign - ; them a FIBERID. After this, plugsort.fiberid should run from 1...nfiber - imissing = where(plugsort.fiberid LE 0, nmissing) - splog, 'Number of missing fibers: ', nmissing - if (nmissing GT 0) then begin - ;ifill = where(qobjapo AND plugmap.fiberid LE 0, nfill); HJIM Change qobj by qobjapo - ifill = where(qobjapo, nfill) - ;print, nfill,ngood,nfiber2 - plugsort[imissing] = plugmap[ifill] - plugsort[imissing].fiberid = imissing + 1 - endif - - return, plugsort -end -;------------------------------------------------------------------------------ -function readplugmap, plugfile, spectrographid, plugdir=plugdir, $ - apotags=apotags, deredden=deredden, exptime=exptime, calibobj=calibobj, $ - hdr=hdr, fibermask=fibermask, _EXTRA=KeywordsForPhoto - - hdr = 0 ; Default return value - if (keyword_set(fibermask)) then $ - message, 'FIBERMASK is already set!' - - ; The correction vector is here --- adjust this as necessary. - ; These are the same numbers as in SDSSFLUX2AB in the photoop product. - correction = [-0.042, 0.036, 0.015, 0.013, -0.002] - - ;---------- - ; Read the file - - thisfile = (findfile(djs_filepath(plugfile, root_dir=plugdir), $ - count=ct))[0] - if (ct NE 1) then begin - splog, 'WARNING: Cannot find plugmap file ' + plugfile - return, 0 - endif - - yanny_read, thisfile, pstruct, hdr=hdr, stnames=stnames, /anonymous - if (NOT keyword_set(pstruct)) then begin - splog, 'WARNING: Invalid plugmap file ' + thisfile - return, 0 - endif - plugmap = *pstruct[(where(stnames EQ 'ROBOMAPOBJ'))[0]] - - plugmap.ra = (360d0 + plugmap.ra) MOD 360d0 - - ;---------- - ; Trim to object fibers only, sort them, and trim to spectrographid - - plugmap = readplugmap_sort(plugmap, fibermask=fibermask) - - ;---------- - ; Add the tags OFFSETID and SCI_EXPTIME for - - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('OFFSETID', 0L, 'SCI_EXPTIME', 0.), $ - n_elements(plugmap))) - i = (where(stnames EQ 'PLUGMAPPOINT', ct))[0] - if (ct GT 0) then begin - splog, 'Using OFFSETID and SCI_EXPTIME from PLUGMAPPOINT structure' - plugpoint = *pstruct[i] - for j=0L, n_elements(plugpoint)-1L do begin - k = where(abs(plugmap.xfocal - plugpoint[j].xfocal) LT 0.0001 $ - AND abs(plugmap.yfocal - plugpoint[j].yfocal) LT 0.0001, ct) - if (ct GT 0) then begin - plugmap[k[0]].offsetid = plugpoint[j].offsetid - plugmap[k[0]].sci_exptime = plugpoint[j].sci_exptime - endif - endfor - endif else begin - ; Use default values - plugmap.offsetid = 1 - sci_exptime = 1 - endelse - if (keyword_set(exptime)) then begin - iuniq = uniq(plugmap.offsetid, sort(plugmap.offsetid)) - exptot = total(plugmap[iuniq].sci_exptime) - if (exptot GT 0) then begin - splog, 'Rescaling SCI_EXPTIME values by ', exptime/exptot - plugmap.sci_exptime = plugmap.sci_exptime * exptime/exptot - endif - endif - - plateid = (yanny_par(hdr, 'confiId'))[0] - redden_med = yanny_par(hdr, 'reddeningMed') - if (n_elements(redden_med) NE 5) then begin - splog, 'WARNING: Wrong number of elements for reddeningMed' - redden_med = fltarr(5) - endif - - ;---------- - ; Append some information from the plateHoles file - - platelist_dir = getenv('PLATELIST_DIR') - platefile = 'plateHoles-' + string(plateid,format='(i6.6)') + '.par' - if (keyword_set(platelist_dir)) then begin - thisfile = (findfile(djs_filepath(platefile, $ - root_dir=platelist_dir, subdir=['plates','*','*']), count=ct))[0] - if (ct GT 0) then begin - plateholes = yanny_readone(thisfile, /anonymous) - iobj = where(strmatch(plateholes.holetype,'BOSS*')) - plateholes = plateholes[iobj] - isort = lonarr(n_elements(plugmap)) - 1 - for i=0L, n_elements(plugmap)-1 do $ - isort[i] = where(plateholes.xfocal EQ plugmap[i].xfocal $ - AND plateholes.yfocal EQ plugmap[i].yfocal) - plateholes = plateholes[isort>0] - blankhole = plateholes[0] - struct_assign, {junk: 0}, blankhole - ibad = where(iobj EQ -1, nbad) - for i=0L, nbad-1 do plateholes[ibad[i]] = blankhole - htags = ['SOURCETYPE','LAMBDA_EFF','ZOFFSET','BLUEFIBER', $ - 'BOSS_TARGET*','ANCILLARY_TARGET*', 'EBOSS_TARGET*', $ - 'RUN','RERUN','CAMCOL','FIELD','ID', 'THING_ID_TARGETING'] - plugmap = struct_addtags(plugmap, $ - struct_selecttags(plateholes, select_tags=htags)) - - ;- We never used washers < 175 microns - ii = where(plugmap.zoffset lt 175) - plugmap[ii].zoffset = 0 - - ;- Check opfiles/washers.par for overrides to ZOFFSET - ;;; print, "Reading washers.par" - washers_file = getenv('IDLSPEC2D_DIR') + '/opfiles/washers.par' - washers = yanny_readone(washers_file) - - ; extract plugmap file name to match header keyword NAME - ; plPlugMapM-5317-56000-01.par -> 5317-56000-01 - tmp = strsplit(file_basename(plugfile), '-.', /extract) - plugname = strjoin(tmp[1:3], '-') - mjd = long(tmp[2]) - - ii = where(washers.plugname eq plugname, n) - if (n gt 1) then $ - message, "ERROR: multiple washers.par entries for " + plugname - if (n eq 1) then begin - status = washers[ii[0]].status - splog, "INFO: washer ZOFFSET override ", plugname, " ", status - if (status ne 'Y') then begin - if (status eq 'N') then plugmap.zoffset = 0.0 - if (status eq 'L') then plugmap.zoffset = (plugmap.zoffset ne 0) * 300.0 - if (status eq 'T') then plugmap.zoffset = (plugmap.zoffset eq 300) * 300.0 - if (status eq 'X') then begin - splog, "WARNING: We know that we don't know ZOFFSET washer status for ", plugname - splog, "WARNING: setting washer ZOFFSET to default 0.0 for ", plugname - plugmap.zoffset = 0.0 - endif - endif ; status ne 'Y' - endif else begin - ; No explicit override; check mjd before washers were available - ; don't print info for current plates to keep SoS quiet - if (mjd lt 56200) then splog, "INFO: no washers.par entry for ", plugname - if (mjd lt 55442) then begin - splog, "INFO: setting ZOFFSET=0 for MJD", mjd, " < 55442" - plugmap.zoffset = 0.0 - endif - ; No more washers after plate 7184 - if (plateid gt 7184) then plugmap.zoffset = 0.0 - endelse - endif ; ct gt 0 - endif ; platelist_dir set - - ;---------- - ; Optionally add tags for SOS - - if (keyword_set(apotags)) then begin - addtags = { $ - cartid : long((yanny_par(hdr, 'cartridgeId'))[0]), $ - plateid : long(plateid), $ - tileid : long((yanny_par(hdr, 'tileId'))[0]), $ - raplate : float((yanny_par(hdr, 'raCen'))[0]), $ - decplate : float((yanny_par(hdr, 'decCen'))[0]), $ - redden_med : float(redden_med), $ - fibersn : fltarr(3), $ - synthmag : fltarr(3) } - plugmap = struct_addtags(plugmap, replicate(addtags, n_elements(plugmap))) - endif - - ;---------- - ; Read calibObj or photoPlate photometry data - - if (keyword_set(calibobj)) then begin - splog, 'Adding fields from calibObj file' - addtags = replicate(create_struct( $ - 'CALIBFLUX', fltarr(5), $ - 'CALIBFLUX_IVAR', fltarr(5), $ - 'CALIB_STATUS', lonarr(5), $ - 'SFD_EBV', 0.), n_elements(plugmap)) - plugmap = struct_addtags(plugmap, addtags) - - ;---------- - ; Read the SFD dust maps - - euler, plugmap.ra, plugmap.dec, ll, bb, 1 - plugmap.sfd_ebv = dust_getval(ll, bb, /interp) - - ;---------- - ; Attempt to read the calibObj photometry data - - tsobj = plug2tsobj(plateid, _EXTRA=KeywordsForPhoto) - - ; Do not use the calibObj structure if more than 20% of the non-sky - ; objects do not have fluxes. - if (keyword_set(tsobj)) then begin - qexist = tsobj.psfflux[2] NE 0 - qsky = strmatch(plugmap.objtype,'SKY*') - splog, 'Matched ', fix(total(qsky EQ 0 AND qexist)), $ - ' of ', fix(total(qsky EQ 0)), ' non-SKY objects' - if (total((qsky EQ 0) AND qexist) LT 0.80*total(qsky EQ 0)) then begin - splog, 'Discarding calibObj structure because < 80% matches' - tsobj = 0 - endif - endif - - if (keyword_set(tsobj)) then begin - - ; Propagate CALIB_STATUS information: - if tag_exist(tsobj, 'CALIB_STATUS') then $ - plugmap.calib_status = tsobj.calib_status - - ; Assume that all objects not called a 'GALAXY' are stellar objects - qstar = strmatch(plugmap.objtype, 'GALAXY*') EQ 0 - istar = where(qstar AND qexist, nstar) - igal = where(qstar EQ 0 AND qexist, ngal) - if (tag_exist(tsobj,'FIBER2FLUX')) then begin - fiberflux = transpose(tsobj.fiber2flux) - fiberflux_ivar = transpose(tsobj.fiber2flux_ivar) - pratio = [2.085, 2.085, 2.116, 2.134, 2.135] - endif else begin - fiberflux = transpose(tsobj.fiberflux) - fiberflux_ivar = transpose(tsobj.fiberflux_ivar) - pratio = [1.343, 1.336, 1.354, 1.363, 1.367] - endelse - if (nstar GT 0) then begin - plugmap[istar].calibflux = tsobj[istar].psfflux - plugmap[istar].calibflux_ivar = tsobj[istar].psfflux_ivar -; ; Compute the ratio of PSF/FIBER flux for stars in each filter, -; ; using only stars that are brighter than 30 nMgy (= 18.8 mag). -; ; If no such stars, then this ratio is set to unity. -; for ifilt=0, 4 do begin -; v1 = tsobj[istar].psfflux[ifilt] -; v2 = fiberflux[istar,ifilt] -; jj = where(v1 GT 30 AND v2 GT 30, ct) -; if (ct GT 0) then pratio[ifilt] = median([ v1[jj] / v2[jj] ]) -; endfor - endif - splog, 'PSF/fiber flux ratios = ', pratio - if (ngal GT 0) then begin - for ifilt=0, 4 do begin - plugmap[igal].calibflux[ifilt] = $ - fiberflux[igal,ifilt] * pratio[ifilt] - plugmap[igal].calibflux_ivar[ifilt] = $ - fiberflux_ivar[igal,ifilt] / (pratio[ifilt])^2 - endfor - endif - - ; Reject any fluxes based upon suspect PHOTO measurements, - ; as indicated by the PHOTO flags. - badbits2 = sdss_flagval('OBJECT2','SATUR_CENTER') $ - OR sdss_flagval('OBJECT2','INTERP_CENTER') $ - OR sdss_flagval('OBJECT2','PSF_FLUX_INTERP') - qgoodphot = (tsobj.flags2 AND badbits2) EQ 0 - plugmap.calibflux = plugmap.calibflux * qgoodphot - plugmap.calibflux_ivar = plugmap.calibflux_ivar * qgoodphot - endif else begin - splog, 'WARNING: No calibObj structure found for plate ', plateid - endelse - - ;---------- - ; For any objects that do not have photometry from the calibObj - ; structure, simply translate the flux from the plugmap MAG values - ; (as long as those values are in the range 0 < MAG < +50). - - for ifilt=0, 4 do begin - ibad = where(plugmap.calibflux[ifilt] EQ 0 $ - AND plugmap.mag[ifilt] GT 0 $ - AND plugmap.mag[ifilt] LT 50, nbad) - if (nbad GT 0) then begin - splog, 'Using plug-map fluxes for ', nbad, $ - ' values in filter ', ifilt - plugmap[ibad].calibflux[ifilt] = $ - 10.^((22.5 - plugmap[ibad].mag[ifilt]) / 2.5) - plugmap[ibad].calibflux_ivar[ifilt] = 0 - endif - endfor - - ;---------- - ; Apply AB corrections to the CALIBFLUX values (but not to MAG) - - factor = exp(-correction/2.5 * alog(10)) - for j=0,4 do plugmap.calibflux[j] = plugmap.calibflux[j] * factor[j] - for j=0,4 do $ - plugmap.calibflux_ivar[j] = plugmap.calibflux_ivar[j] / factor[j]^2 - endif - - ;----- - ; The following lines are modified to apply the new extinctiion coefficients. - ; They are just the ratios of new/old, - redden_corr=[0.822308,0.870815,0.830607,0.813998,0.853955] - if (keyword_set(deredden)) then begin - splog, 'Applying reddening vector ', redden_med - for ifilt=0, 4 do begin - ; if (plateid ge 7572) then begin - plugmap.mag[ifilt] = plugmap.mag[ifilt] - redden_med[ifilt] - ; endif else begin - ; plugmap.mag[ifilt] = plugmap.mag[ifilt] - redden_med[ifilt]*redden_corr[ifilt] - ; splog, 'modified extinction co-efficients: ',redden_med[ifilt]*redden_corr[ifilt] - ; endelse - endfor - endif - ;a=plugmap.run - ; Optionally trim to selected spectrograph - ; HJIB-- for the bhm this part is not needed - ;nfiber = n_elements(plugmap) - ;if (keyword_set(spectrographid)) then begin - ; indx = (spectrographid-1)*nfiber/2 + lindgen(nfiber/2) - ; plugmap = plugmap[indx] - ; fibermask = fibermask[indx] - ;endif - - return, plugmap -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/readplugmap.old_2 b/pro/spec2d/readplugmap.old_2 deleted file mode 100644 index 966be784b..000000000 --- a/pro/spec2d/readplugmap.old_2 +++ /dev/null @@ -1,999 +0,0 @@ -;+ -; NAME: -; readplugmap -; -; PURPOSE: -; Read plugmap file and append tags as requested -; -; CALLING SEQUENCE: -; plugmap = readplugmap( plugfile, [ spectrographid, plugdir=, $ -; /apotags, /deredden, /calibobj, exptime=, hdr=, fibermask=, _EXTRA= ] ) -; -; INPUTS: -; plugfile - Name of Yanny-parameter plugmap file -; -; OPTIONAL INPUTS: -; spectrographid - The spectrograph number, either 1 or 2; -; if not set (or 0), then return all object fibers -; plugdir - Directory for PLUGFILE -; apotags - If set, then add a number of tags to the output structure -; constructed from the Yanny header. These tags are: -; CARTID, PLATEID, TILEID, RAPLATE, DECPLATE, REDDEN_MED. -; Also add the tags FIBERSN[3], SYTHMAG[3] which are used -; by the on-the-mountain reductions. -; deredden - If set, then deredden the MAG fields using the median -; reddening value for the entire plate as found in the -; Yanny header of the plugmap file; this is done for the -; on-the-mountain reductions. -; exptime - Default exposure time SCI_EXPTIME to add to the output; -; if there are multiple pointings and EXPTIME is set, then -; the exposure time in each pointing is scaled such that -; their sum is EXPTIME. -; calibobj - If set, then add a CALIBFLUX,CALIBFLUX_IVAR entries based upon -; the calibObj (deprecated) or photoPlate files. -; For stellar objects, this contains the -; PSF fluxes in nMgy. For galaxies, it contains the fiber fluxes -; multiplied by the median (PSF/fiber) flux ratio for stars. -; The MAG fields are left unchanged. -; For objects with no calibObj entry, simply set these fields as: -; CALIBFLUX = 22.5 - 2.5*alog10(MAG), CALIBFLUX_IVAR = 0. -; We apply the putative AB corrections to these fluxes -; (but not to the MAG values). -; Also add the SFD reddening values as SFD_EBV. -; _EXTRA - Keywords for PLUG2TSOBJ(), such as MJD,INDIR -; -; OUTPUTS: -; plugmap - Plugmap structure -; -; OPTIONAL OUTPUTS: -; hdr - Header from Yanny-formatted plugmap file -; fibermask - Byte array with bits set for unknown fibers -; -; COMMENTS: -; Do not use the calibObj structure if more than 10% of the non-sky -; objects do not have fluxes. -; -; Reads $IDLSPEC2D_DIR/opfiles/washers.par for ZOFFSET status overrides. -; The original plugmap files reflect what we wanted to do; the overrides -; and the return of this function reflect what we actually did. -; -; EXAMPLES: -; -; BUGS: -; The AB corrections are hard-wired to be the same as in the photoop -; product as of 18 Feb 2004. -; -; PROCEDURES CALLED: -; djs_filepath() -; dust_getval() -; euler -; plug2tsobj() -; sdss_flagval() -; splog -; struct_addtags() -; yanny_par() -; yanny_read -; -; INTERNAL FUNCTIONS CALLED: -; calibrobj -; ApogeeToBOSSRobomap -; BossToApogeeRobomap -; readFPSobsSummary -; readPlateplugmap_sort -; readPlateplugMap -; -; REVISION HISTORY: -; 29-Jan-2001 Written by S. Burles, FNAL -; 07-Aug-2012 Added ZOFFSET overrides; S. Bailey, LBL -; 21-Jun-2021 Editted by S Morrison to add correction check for catalog -; 15-Oct-2021 Modified by S Morrison to prepare for FPS: -; -adding readFPSobsSummary, ApogeeToBOSSRobomap, BossToApogeeRobomap -; -breaking readPlateplugMap in to a new function to preseve for FPS -;- -;------------------------------------------------------------------------------ -function calibrobj, plugfile, fibermap, fieldid, rafield, decfield, programname=programname,$ - plates=plates, legacy=legacy, fps=fps, MWM_fluxer=MWM_fluxer,$ - gaiaext=gaiaext, KeywordsForPhoto=KeywordsForPhoto - - ; The correction vector is here --- adjust this as necessary. - ; These are the same numbers as in SDSSFLUX2AB in the photoop product. - correction = [-0.042, 0.036, 0.015, 0.013, -0.002] - - splog, 'Adding fields from calibObj file' - addtags = replicate(create_struct( $ - 'CALIBFLUX', fltarr(5), $ - 'CALIBFLUX_IVAR', fltarr(5), $ - 'CALIB_STATUS', lonarr(5), $ - 'SFD_EBV', 0., $ - 'WISE_MAG', fltarr(4), $ - 'TWOMASS_MAG', fltarr(3), $ - 'GUVCAT_MAG', fltarr(2), $ - 'GAIA_PARALLAX', 0.0, $ - 'GAIA_PMRA', 0.0, $ - 'GAIA_PMDEC', 0.0), n_elements(fibermap)) - - fibermap = struct_addtags(fibermap, addtags) - - ra_temp=fibermap.ra - dec_temp=fibermap.dec - ;---------- - ;Obtain the WISE, TWOMASS, GUVCAT and GAIA pm - wise_temp=fltarr(4,n_elements(fibermap)) - two_temp=fltarr(3,n_elements(fibermap)) - guv_temp=fltarr(2,n_elements(fibermap)) - parallax_temp=fltarr(n_elements(fibermap)) - pmra_temp=fltarr(n_elements(fibermap)) - pmdec_temp=fltarr(n_elements(fibermap)) - - splog, "Obtaing the WISE, TWOMASS, GUVCAT and GAIA parallax and pm" - openw,lun,'catalog.inp',/get_lun - for istd=0, n_elements(ra_temp)-1 do begin - printf,lun,strtrim(string(ra_temp[istd]),2)+" "+strtrim(string(dec_temp[istd]),2) - endfor - free_lun, lun - - cmd = "catalogdb_photo_file catalog.inp" - spawn, cmd, alldat - if n_elements(ra_temp) eq n_elements(alldat) then begin - for istd=0, n_elements(ra_temp)-1 do begin - dat=alldat[istd] - tp=strsplit(dat,' ',/extract) - if n_elements(tp) eq 1 then begin - splog, "No additional Photometric data for fiber "+string(istd+1)+": "+dat - continue - endif - splog, "Photometric Data for fiber "+string(istd+1)+": "+dat - wise_temp[0,istd]=float(tp[0]) - wise_temp[1,istd]=float(tp[1]) - wise_temp[2,istd]=float(tp[2]) - wise_temp[3,istd]=float(tp[3]) - two_temp[0,istd]=float(tp[4]) - two_temp[1,istd]=float(tp[5]) - two_temp[2,istd]=float(tp[6]) - guv_temp[0,istd]=float(tp[7]) - guv_temp[1,istd]=float(tp[8]) - parallax_temp[istd]=float(tp[9]) - pmra_temp[istd]=float(tp[10]) - pmdec_temp[istd]=float(tp[11]) - endfor - endif else splog, 'No additional Photometric data' - if FILE_TEST('catalog.inp') then FILE_DELETE, 'catalog.inp', /QUIET - fibermap.wise_mag=wise_temp - fibermap.twomass_mag=two_temp - fibermap.guvcat_mag=guv_temp - fibermap.gaia_parallax=parallax_temp - fibermap.gaia_pmra=pmra_temp - fibermap.gaia_pmdec=pmdec_temp - ;---------- - ; Read the SFD dust maps - euler, fibermap.ra, fibermap.dec, ll, bb, 1 - fibermap.sfd_ebv = dust_getval(ll, bb, /interp) - ;--------- - ;Redefine the Extintion using the RJCE extintion method, see Majewski, Zasowski & Nidever (2011) and Zasowski et al. (2013) - rjce_extintion=0 - if keyword_set(rjce_extintion) then begin - if keyword_set(plates) and keyword_set(programname) then begin - if strmatch(programname, '*MWM*', /fold_case) eq 1 then begin - spht = strmatch(fibermap.objtype, 'SPECTROPHOTO_STD') - ispht = where(spht, nspht) - stsph=fibermap(ispht) - catid=stsph.catalogid - ebv_std=stsph.sfd_ebv - fib_std=stsph.fiberId - splog, "RJCE extintion" - for istd=0, n_elements(catid)-1 do begin - cmd = "catalogdb_ev "+strtrim(string(catid[istd]),2) - spawn, cmd, dat - dat=double(dat) - if (finite(dat) ne 0) and (dat gt 0) and (dat le 1.2*ebv_std[istd]) then begin - splog,"change SFD E(B-V) "+strtrim(string(ebv_std[istd]),2)+$ - " by RJCE E(B-V) " + strtrim(string(dat),2)+" on SPECTROPHOTO_STD fiber "+$ - strtrim(string(fib_std[istd]),2) + $" with CATALOGID "+$ - strtrim(string(catid[istd]),2) - ebv_std[istd]=dat - endif - endfor - stsph.sfd_ebv=ebv_std - fibermap(ispht)=stsph - splog, "done with RJCE extintion" - gaiaext=0 - endif - endif - endif - if keyword_set(MWM_fluxer) then begin - if keyword_set(plates) and keyword_set(programname) then begin - if ((strmatch(programname, '*MWM*', /fold_case) eq 1) $ - || (strmatch(programname, '*OFFSET*', /fold_case) eq 1)) then begin - gaiaext = 1 - endif - endif else begin - euler, rafield, decfield, ll_field, bb_field, 1 - if abs(bb_field) lt 15 then gaiaext = 1 - endelse - endif - if keyword_set(gaiaext) then begin - ;--------- - ;Redefine the Extintion using the Bayestar 3D dust extintion maps - if keyword_set(fps) then stdtype = 'standard_boss' else stdtype = 'SPECTROPHOTO_STD' - spht = strmatch(fibermap.objtype, stdtype, /FOLD_CASE) - ispht = where(spht, nspht) - stsph=fibermap(ispht) - ll_std=ll[ispht] - bb_std=bb[ispht] - rm_read_gaia, rafield,decfield,stsph,dist_std=dist_std - ebv_std=stsph.sfd_ebv - fib_std=stsph.fiberId - splog, "running dust_3d_map" - ll_std_str='['+strjoin(strtrim(ll_std,1),',')+']' - bb_std_str='['+strjoin(strtrim(bb_std,1),',')+']' - dist_std_str='['+strjoin(strtrim(dist_std,1),',')+']' - cmd = "dust_3d_map_arr.py "+ll_std_str+" "+bb_std_str+" "+dist_std_str - spawn, cmd, dat_arr - remchar, dat_arr, '[' - remchar, dat_arr, ']' - dat_arr=double(STRSPLIT(strjoin(dat_arr,' '),/EXTRACT)) - for istd=0, n_elements(dist_std)-1 do begin - dat=dat_arr[istd] - if (finite(dat) ne 0) and (dat le ebv_std[istd]) then begin - splog,"change E(B-V) "+strtrim(string(ebv_std[istd]),2)+" by " + $ - strtrim(string(dat),2)+" on "+stdtype+" fiber "+strtrim(string(fib_std[istd]),2) + $ - "; Gaia DR2 parallax distance: "+strtrim(string(dist_std[istd]),2)+" pc" - ebv_std[istd]=dat - endif - endfor - stsph.sfd_ebv=ebv_std - fibermap(ispht)=stsph - splog, "done with 3D dust matches" - endif - - ;---------- - ; Attempt to read the calibObj photometry data - if keyword_set(legacy) OR keyword_set(plates) then begin - tsobj = plug2tsobj(fieldid, /plates, /legacy, _EXTRA=KeywordsForPhoto) - endif else tsobj = plug2tsobj(fieldid, _EXTRA=KeywordsForPhoto) - - ; Do not use the calibObj structure if more than 20% of the non-sky - ; objects do not have fluxes. - if (keyword_set(tsobj)) then begin - qexist = tsobj.psfflux[2] NE 0 - qsky = strmatch(fibermap.objtype,'SKY*') - splog, 'Matched ', fix(total(qsky EQ 0 AND qexist)), $ - ' of ', fix(total(qsky EQ 0)), ' non-SKY objects' - if (total((qsky EQ 0) AND qexist) LT 0.80*total(qsky EQ 0)) then begin - splog, 'Discarding calibObj structure because < 80% matches' - tsobj = 0 - endif - endif - - if (keyword_set(tsobj)) then begin - ; Propagate CALIB_STATUS information: - if tag_exist(tsobj, 'CALIB_STATUS') then $ - fibermap.calib_status = tsobj.calib_status - ; Assume that all objects not called a 'GALAXY' are stellar objects - qstar = strmatch(fibermap.objtype, 'GALAXY*') EQ 0 - istar = where(qstar AND qexist, nstar) - igal = where(qstar EQ 0 AND qexist, ngal) - if (tag_exist(tsobj,'FIBER2FLUX')) then begin - fiberflux = transpose(tsobj.fiber2flux) - fiberflux_ivar = transpose(tsobj.fiber2flux_ivar) - pratio = [2.085, 2.085, 2.116, 2.134, 2.135] - endif else begin - fiberflux = transpose(tsobj.fiberflux) - fiberflux_ivar = transpose(tsobj.fiberflux_ivar) - pratio = [1.343, 1.336, 1.354, 1.363, 1.367] - endelse - if (nstar GT 0) then begin - fibermap[istar].calibflux = tsobj[istar].psfflux - fibermap[istar].calibflux_ivar = tsobj[istar].psfflux_ivar - endif - splog, 'PSF/fiber flux ratios = ', pratio - if (ngal GT 0) then begin - for ifilt=0, 4 do begin - fibermap[igal].calibflux[ifilt] = $ - fiberflux[igal,ifilt] * pratio[ifilt] - fibermap[igal].calibflux_ivar[ifilt] = $ - fiberflux_ivar[igal,ifilt] / (pratio[ifilt])^2 - endfor - endif - ; Reject any fluxes based upon suspect PHOTO measurements, - ; as indicated by the PHOTO flags. - badbits2 = sdss_flagval('OBJECT2','SATUR_CENTER') $ - OR sdss_flagval('OBJECT2','INTERP_CENTER') $ - OR sdss_flagval('OBJECT2','PSF_FLUX_INTERP') - qgoodphot = (tsobj.flags2 AND badbits2) EQ 0 - fibermap.calibflux = fibermap.calibflux * qgoodphot - fibermap.calibflux_ivar = fibermap.calibflux_ivar * qgoodphot - endif else begin - if not keyword_set(fps) then begin - splog, 'WARNING: No calibObj structure found for plate ', fieldid - endif else splog, 'WARNING: No calibObj structure found for field ', fieldid - endelse - ;---------- - ; For any objects that do not have photometry from the calibObj - ; structure, simply translate the flux from the fibermap MAG values - ; (as long as those values are in the range 0 < MAG < +50). - - for ifilt=0, 4 do begin - pratio = [2.085, 2.085, 2.116, 2.134, 2.135];ratio of fiber2flux - splog, 'PSF/fiber flux ratios = ', pratio - ibad = where(fibermap.calibflux[ifilt] EQ 0 $ - AND fibermap.mag[ifilt] GT 0 $ - AND fibermap.mag[ifilt] LT 50, nbad) - if (nbad GT 0) then begin - splog, 'Using plug-map fluxes for ', nbad, $ - ' values in filter ', ifilt - fibermap[ibad].calibflux[ifilt] = $ - 10.^((22.5 - fibermap[ibad].mag[ifilt]) / 2.5)*pratio[ifilt] - fibermap[ibad].calibflux_ivar[ifilt] = 0 - endif - endfor - - ;---------- - ; Apply AB corrections to the CALIBFLUX values (but not to MAG) - factor = exp(-correction/2.5 * alog(10)) - for j=0,4 do fibermap.calibflux[j] = fibermap.calibflux[j] * factor[j] - for j=0,4 do $ - fibermap.calibflux_ivar[j] = fibermap.calibflux_ivar[j] / factor[j]^2 - return, fibermap -end - -;------------------------------------------------------------------------------ - -function rename_tags, struct, oldtags, newtags - tags = tag_names(struct) - FOR i=0L, n_elements(tags)-1 DO BEGIN - w=where(oldtags EQ tags[i], nw) - IF nw NE 0 THEN taguse = newtags[w[0]] ELSE taguse = tags[i] - IF i EQ 0 THEN newst = create_struct(taguse, struct[0].(i)) $ - ELSE newst = create_struct(newst, taguse, struct[0].(i)) - ENDFOR - newstruct = replicate(newst, n_elements(struct)) - FOR i=0L, n_elements(tags)-1 DO newstruct.(i) = struct.(i) - return, newstruct -END - -function ApogeeToBOSSRobomap, robomap - iassigned_apogee = where(robomap.spectrographId eq 0 AND robomap.Assigned EQ 1) - uassigned_boss = where(robomap.spectrographId eq 1 AND robomap.Assigned EQ 0) - - boss = where(robomap.spectrographID eq 1) - - Assigned_Apogee_fiberIDs = robomap[iassigned_apogee].fiberID - paired_BOSS_fiberIDs = Assigned_Apogee_fiberIDs - - match, robomap[boss].fiberid, paired_BOSS_fiberIDs, matched_fiber, paired - - catid_apogee = robomap[iassigned_apogee[paired]].CATALOGID - catid_apogee='u'+(strtrim(catid_apogee,1)) - - ;robomap[boss][matched_fiber].CATALOGID= string(robomap[[matched_fiber].CATALOGID) - - robomap_boss=robomap[boss] - robomap_boss[matched_fiber].CATALOGID = catid_apogee - robomap[boss]=robomap_boss - - - return, robomap -end - -function BossToApogeeRobomap, robomap - iassigned_boss = where(robomap.spectrographId eq 1 AND robomap.Assigned EQ 1) - uassigned_apogee = where(robomap.spectrographId eq 0 AND robomap.Assigned EQ 0) - - apogee = where(robomap.spectrographID eq 0) - - - Assigned_BOSS_fiberIDs = robomap[iassigned_boss].fiberID - paired_Apogee_fiberIDs = Assigned_BOSS_fiberIDs - - match, robomap[apogee].fiberid, paired_Apogee_fiberIDs, matched_fiber, paired - - catid_BOSS = robomap[iassigned_boss[paired]].CATALOGID - catid_BOSS='u'+(strtrim(catid_BOSS,1)) - - robomap_apogee=robomap[apogee] - robomap_apogee[matched_fiber].CATALOGID = catid_BOSS - robomap[apogee]=robomap_apogee - - return, robomap -end - -function NoAssignRobomap, robomap - - sign = MAKE_ARRAY(n_elements(robomap.DEC), /STRING, VALUE = '+') - sign[where(robomap.DEC lt 0)] = '-' - - radec, robomap.RA, robomap.DEC, ihr, imin, xsec, ideg, imn, xsc - xsc_str=string(xsc,format='(f4.1)') - xsc_str[where(xsc lt 10)]='0'+string(9.813,format='(f3.1)') - - xsec_str=string(xsec,format='(f4.1)') - xsec_str[where(xsec lt 10)]='0'+string(9.813,format='(f3.1)') - - dummy_catid = 'u'+strtrim(string(ihr,format='(I2.2)'),2)+$ - string(imin,format='(I2.2)')+xsec_str+$ - sign+strtrim(string(abs(ideg),format='(I3.3)'),2)+$ - string(imn,format='(I2.2)')+xsc_str - - All_apogee_fibers = where(robomap.spectrographId eq 0) - - iunassigned_boss = where(robomap.spectrographId eq 1 AND robomap.Assigned EQ 0) - iunassigned_apogee = where(robomap.spectrographId eq 0 AND robomap.Assigned EQ 0) - - match, robomap[iunassigned_boss].fiberid, robomap[iunassigned_apogee].fiberID, matched_fiber, paired - robomap_boss=robomap[iunassigned_boss] - boss_dummpycat=dummy_catid[iunassigned_boss] - robomap_boss[matched_fiber].CATALOGID = boss_dummpycat[matched_fiber] - robomap[iunassigned_boss]=robomap_boss - - match, robomap[iunassigned_apogee].fiberid, robomap[iunassigned_boss].fiberID, matched_fiber, paired - robomap_apogee=robomap[iunassigned_apogee] - apogee_dummpycat=dummy_catid[iunassigned_apogee] - robomap_apogee[matched_fiber].CATALOGID = apogee_dummpycat[matched_fiber] - robomap[iunassigned_apogee]=robomap_apogee - - foreach boss_fiber, iunassigned_boss do begin - ind = where(boss_fiber eq All_apogee_fibers, count) - if count eq 0 then robomap[boss_fiber].CATALOGID = dummy_catid[boss_fiber] - endforeach - - return, robomap -end - -;------------------------------------------------------------------------------ - -function readFPSobsSummary, plugfile, robomap, stnames, spectrographid, mjd,$ - deredden=deredden, hdr=hdr, apotags=apotags, exptime=exptime, $ - calibobj=calibobj, fibermask=fibermask, gaiaext=gaiaext, $ - MWM_fluxer=MWM_fluxer, _EXTRA=KeywordsForPhoto - - ; The correction vector is here --- adjust this as necessary. - ; These are the same numbers as in SDSSFLUX2AB in the photoop product. - correction = [-0.042, 0.036, 0.015, 0.013, -0.002] - - if not TAG_EXIST(robomap,'fiberid') then begin - robomap = struct_addtags(robomap, $ - replicate(create_struct('fiberid', 0L), n_elements(robomap))) - robomap.fiberid=robomap.POSITIONERID - endif - - nfiber=n_elements(robomap) - - robomap = rename_tags(robomap, 'CATALOGID','iCATALOGID') - robomap = struct_addtags(robomap, $ - replicate(create_struct('CATALOGID', ''), n_elements(robomap))) - robomap.CATALOGID=strtrim(robomap.iCATALOGID,1) - robomap = ApogeeToBOSSRobomap(robomap) - robomap = BossToApogeeRobomap(robomap) - robomap = NoAssignRobomap(robomap) - - if (NOT keyword_set(fibermask)) then fibermask = bytarr(nfiber) $ - else if (n_elements(fibermask) NE nfiber) then $ - message, 'Number of elements in FIBERMASK do not match NFIBER' - - - robomap = struct_addtags(robomap, $ - replicate(create_struct('BADSTDMASK', 0L), n_elements(robomap))) - - robomap = struct_addtags(robomap, $ - replicate(create_struct('fibermask', 0L), n_elements(robomap))) - - robomap = struct_addtags(robomap, $ - replicate(create_struct('OBJTYPE', ''), n_elements(robomap))) - robomap.OBJTYPE = robomap.category - - robomap = rename_tags(robomap, 'ra','ra_obs') - robomap = rename_tags(robomap, 'dec','dec_obs') - - robomap = rename_tags(robomap, 'racat','ra') - robomap = rename_tags(robomap, 'deccat','dec') - - iunAssigned = where(robomap.Assigned EQ 0, nAssigned) - - fibermask = fibermask OR fibermask_bits('NOPLUG') - fibermask[iunAssigned] = fibermask[iunAssigned] - fibermask_bits('NOPLUG') ; TODO: NEED TO UPDATE with new fibermask bit value - - - if (keyword_set(apotags)) then begin - addtags = { configuration_id : long((yanny_par(hdr, 'configuration_id'))[0]), $ - targeting_vers : long((yanny_par(hdr, 'targeting_version'))[0]), $ - observation_id : long((yanny_par(hdr, 'observation_id'))[0]), $ - bhmfield_id : long((yanny_par(hdr, 'bhmfield_id'))[0]), $ - MJD : long((yanny_par(hdr, 'MJD'))[0]), $ - rafield : float((yanny_par(hdr, 'RACEN'))[0]), $ - decfield : float((yanny_par(hdr, 'DECCEN'))[0]), $ - redden_med : float((yanny_par(hdr, 'reddeningMed'))[0]), $ - fibersn : fltarr(3), $ - synthmag : fltarr(3), $ - hrmed : float((yanny_par(hdr, 'haMed'))[0])$ - } - robomap = struct_addtags(robomap, replicate(addtags, n_elements(robomap))) - healpix_now=0; There is no need for healpix info in the SOS - endif else begin - healpix_now=0; HJIM: I decided to pass this part as an afterburner for the spAll file - endelse - - mjd=long((yanny_par(hdr, 'MJD'))[0]) - ;---------- - ; Read calibObj or photoPlate photometry data - if (keyword_set(calibobj)) then begin - fieldid = (yanny_par(hdr, 'field_id'))[0] - ra_field=float(yanny_par(hdr, 'raCen')) - dec_field=float(yanny_par(hdr, 'decCen')) - robomap=calibrobj(plugfile,robomap, fieldid, ra_field, dec_field, /fps, $ - gaiaext=gaiaext, MWM_fluxer=MWM_fluxer, $ - KeywordsForPhoto=KeywordsForPhoto) - endif - - ;----- -; if (keyword_set(deredden)) then begin -; redden_med = yanny_par(hdr, 'reddeningMed',index=par_idx) -; if par_idx ne -1 then begin -; splog, 'Applying reddening vector ', redden_med -; for ifilt=0, 4 do robomap.mag[ifilt] = robomap.mag[ifilt] - redden_med[ifilt] -; endif else splog, 'No reddening vector to apply' -; endif - - if (keyword_set(spectrographid)) then begin - indx = where(robomap.spectrographid eq spectrographid) - robomap = robomap[indx] - fibermask = fibermask[indx] - endif - ;robomap.fibermask=fibermask - return, robomap -end - -;------------------------------------------------------------------------------ - - -function readPlateplugmap_sort, plugmap, hdr, fibermask=fibermask, plates=plates - - qobj = strmatch(plugmap.holetype,'OBJECT') - indx = where(qobj, nfiber) - if (NOT keyword_set(fibermask)) then fibermask = bytarr(nfiber) $ - else if (n_elements(fibermask) NE nfiber) then $ - message, 'Number of elements in FIBERMASK do not match NFIBER' - - badstdmask = bytarr(nfiber) - - - blankmap = plugmap[0] - struct_assign, {junk:0}, blankmap - plugsort = replicate(blankmap, nfiber) - plugsort.holetype = 'OBJECT' - plugsort.objtype = 'NA' - plugsort.fiberid = -1 - - plugsort = struct_addtags(plugsort, $ - replicate(create_struct('BADSTDMASK', 0L), n_elements(plugsort))) - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('BADSTDMASK', 0L), n_elements(plugmap))) - - if keyword_set(plates) then begin - programname = (yanny_par(hdr, 'programname'))[0] - program_tag1 = replicate( $ - {program: programname}, nfiber) - program_tag2 = replicate( $ - {program: programname}, n_elements(plugmap)) - - plugsort = struct_addtags(plugsort, $ - replicate(create_struct('ORG_FIBERID', 0L), n_elements(plugsort))) - - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('ORG_FIBERID', 0L), n_elements(plugmap))) - plugmap.ORG_FIBERID=plugmap.fiberid - - plugsort = struct_addtags(plugsort, program_tag1) - plugmap = struct_addtags(plugmap, program_tag2) - if strmatch(programname, '*MWM*', /fold_case) eq 1 then begin - spht = strmatch(plugmap.objtype, 'SPECTROPHOTO_STD') - for i=0, n_elements(plugmap)-1 do begin - if spht[i] then begin - if plugmap[i].mag[3] ge 18.0 then begin - badstdmask[i] = 1 - plugmap[i].badstdmask = 1 - endif - endif - endfor - endif - igood = where(qobj AND plugmap.fiberid GT 0 AND plugmap.spectrographid EQ 1 AND badstdmask EQ 0, ngood); check the number -1 - iplugged = where(qobj AND plugmap.fiberid GT 0 AND plugmap.spectrographid EQ 1, nplugged); check the number -1 - igoodapoge = where(qobj AND plugmap.fiberid GT 0 AND plugmap.spectrographid EQ 2 AND badstdmask EQ 0, napogee) - endif else begin - igood = where(qobj AND plugmap.fiberid GT 0, ngood) - iplugged = igood - endelse - if (ngood EQ 0) then $ - message, 'No fibers found in plugmap!' - iplace = plugmap[iplugged].fiberid - 1 - plugsort[iplace] = plugmap[iplugged] - ; Set the appropriate fibermask bit if a fiber not found in plugmap file. - ; Do this by first setting all bits to 1, then unsetting the good ones. - fibermask = fibermask OR fibermask_bits('NOPLUG') - fibermask[iplace] = fibermask[iplace] - fibermask_bits('NOPLUG') - - ; Fill in unplugged fibers with arbitrary entries, and assign - ; them a FIBERID. After this, plugsort.fiberid should run from 1...nfiber - imissing = where(plugsort.fiberid LE 0, nmissing) - splog, 'Number of missing fibers: ', nmissing-napogee - splog, 'Number of Invalid Standards: ',total(badstdmask,/INTEGER) - - if (nmissing GT 0) then begin - if keyword_set(plates) then begin - ifill = where(qobj AND plugmap.fiberid LE 0 OR plugmap.spectrographid EQ 2, nfill) - endif else begin - ifill = where(qobj AND plugmap.fiberid LE 0, nfill) - endelse - plugsort[imissing] = plugmap[ifill] - plugsort[imissing].fiberid = imissing + 1 - endif - return, plugsort -end - -;------------------------------------------------------------------------------ - -function readPlateplugMap, plugfile, plugmap,stnames, spectrographid, mjd, $ - apotags=apotags, deredden=deredden, exptime=exptime, calibobj=calibobj, $ - hdr=hdr, fibermask=fibermask, plates=plates, gaiaext=gaiaext, $ - legacy=legacy, MWM_fluxer=MWM_fluxer, _EXTRA=KeywordsForPhoto - - ; The correction vector is here --- adjust this as necessary. - ; These are the same numbers as in SDSSFLUX2AB in the photoop product. - correction = [-0.042, 0.036, 0.015, 0.013, -0.002] - - ;---------- - ; Trim to object fibers only, sort them, and trim to spectrographid - - plugmap = readPlateplugmap_sort(plugmap, hdr ,fibermask=fibermask, plates=plates) - ;---------- - ; Add the tags OFFSETID and SCI_EXPTIME for - - plugmap = struct_addtags(plugmap, $ - replicate(create_struct('OFFSETID', 0L, 'SCI_EXPTIME', 0.), $ - n_elements(plugmap))) - i = (where(stnames EQ 'PLUGMAPPOINT', ct))[0] - if (ct GT 0) then begin - splog, 'Using OFFSETID and SCI_EXPTIME from PLUGMAPPOINT structure' - plugpoint = *pstruct[i] - for j=0L, n_elements(plugpoint)-1L do begin - k = where(abs(plugmap.xfocal - plugpoint[j].xfocal) LT 0.0001 $ - AND abs(plugmap.yfocal - plugpoint[j].yfocal) LT 0.0001, ct) - if (ct GT 0) then begin - plugmap[k[0]].offsetid = plugpoint[j].offsetid - plugmap[k[0]].sci_exptime = plugpoint[j].sci_exptime - endif - endfor - endif else begin - ; Use default values - plugmap.offsetid = 1 - sci_exptime = 1 - endelse - if (keyword_set(exptime)) then begin - iuniq = uniq(plugmap.offsetid, sort(plugmap.offsetid)) - exptot = total(plugmap[iuniq].sci_exptime) - if (exptot GT 0) then begin - splog, 'Rescaling SCI_EXPTIME values by ', exptime/exptot - plugmap.sci_exptime = plugmap.sci_exptime * exptime/exptot - endif - endif - - plateid = (yanny_par(hdr, 'plateId'))[0] - redden_med = yanny_par(hdr, 'reddeningMed') - if (n_elements(redden_med) NE 5) then begin - splog, 'WARNING: Wrong number of elements for reddeningMed' - redden_med = fltarr(5) - endif - - ;---------- - ; Append some information from the plateHoles file - - platelist_dir = getenv('PLATELIST_DIR') - platefile = 'plateHoles-' + string(plateid,format='(i6.6)') + '.par' - if (keyword_set(platelist_dir)) then begin - thisfile = (findfile(djs_filepath(platefile, $ - root_dir=platelist_dir, subdir=['plates','*','*']), count=ct))[0] - if (ct GT 0) then begin - plateholes = yanny_readone(thisfile, /anonymous) - iobj = where(strmatch(plateholes.holetype,'BOSS*')) - isort = lonarr(n_elements(plugmap)) - 1 - for i=0L, n_elements(plugmap)-1 do $ - isort[i] = where(plateholes.xfocal EQ plugmap[i].xfocal $ - AND plateholes.yfocal EQ plugmap[i].yfocal) - plateholes = plateholes[isort>0] - blankhole = plateholes[0] - struct_assign, {junk: 0}, blankhole - ibad = where(iobj EQ -1, nbad) - for i=0L, nbad-1 do plateholes[ibad[i]] = blankhole - if keyword_set(plates) then begin - htags = ['SOURCETYPE','LAMBDA_EFF','ZOFFSET','BLUEFIBER', $ - 'BOSS_TARGET*','ANCILLARY_TARGET*', 'EBOSS_TARGET*', $ - 'CATALOGID','SDSSV_BOSS_TARGET*','FIRSTCARTON', $ - 'GAIA_G','GAIA_BP','GAIA_RP', $ - 'RUN','RERUN','CAMCOL','FIELD','ID', 'THING_ID_TARGETING'] - endif else begin - htags = ['SOURCETYPE','LAMBDA_EFF','ZOFFSET','BLUEFIBER', $ - 'BOSS_TARGET*','ANCILLARY_TARGET*', 'EBOSS_TARGET*', $ - 'RUN','RERUN','CAMCOL','FIELD','ID', 'THING_ID_TARGETING'] - endelse - plugmap = struct_addtags(plugmap, $ - struct_selecttags(plateholes, select_tags=htags)) - - ;- We never used washers < 175 microns - ii = where(plugmap.zoffset lt 175) - plugmap[ii].zoffset = 0 - - ;- Check opfiles/washers.par for overrides to ZOFFSET - ;;; print, "Reading washers.par" - washers_file = getenv('IDLSPEC2D_DIR') + '/opfiles/washers.par' - washers = yanny_readone(washers_file) - - ; extract plugmap file name to match header keyword NAME - ; plPlugMapM-5317-56000-01.par -> 5317-56000-01 - tmp = strsplit(file_basename(plugfile), '-.', /extract) - plugname = strjoin(tmp[1:3], '-') - mjd = long(tmp[2]) - - ii = where(washers.plugname eq plugname, n) - if (n gt 1) then $ - message, "ERROR: multiple washers.par entries for " + plugname - if (n eq 1) then begin - status = washers[ii[0]].status - splog, "INFO: washer ZOFFSET override ", plugname, " ", status - if (status ne 'Y') then begin - if (status eq 'N') then plugmap.zoffset = 0.0 - if (status eq 'L') then plugmap.zoffset = (plugmap.zoffset ne 0) * 300.0 - if (status eq 'T') then plugmap.zoffset = (plugmap.zoffset eq 300) * 300.0 - if (status eq 'X') then begin - splog, "WARNING: We know that we don't know ZOFFSET washer status for ", plugname - splog, "WARNING: setting washer ZOFFSET to default 0.0 for ", plugname - plugmap.zoffset = 0.0 - endif - endif ; status ne 'Y' - endif else begin - ; No explicit override; check mjd before washers were available - ; don't print info for current plates to keep SoS quiet - if (mjd lt 56200) then splog, "INFO: no washers.par entry for ", plugname - if (mjd lt 55442) then begin - splog, "INFO: setting ZOFFSET=0 for MJD", mjd, " < 55442" - plugmap.zoffset = 0.0 - endif - ; No more washers after plate 7184 - if (plateid gt 7184) then plugmap.zoffset = 0.0 - endelse - - if keyword_set(plates) then begin - ;Check if plate is in list of plates to be corrected - catfile_dir = getenv('IDLSPEC2D_DIR')+ '/catfiles/' - catfile=catfile_dir+'Corrected_values_plate'+plateid+'_design*.fits' - if ~FILE_TEST(catfile_dir) then $ - splog, 'WARNING: No Catalogid Correction Files found in '+catfile_dir - if FILE_TEST(catfile) then begin - ;loads corrected catalog file - splog, 'Correcting Catalogid, Carton, and SDSS Magnitudes for ',plateid - catdata=mrdfits (catfile,1) - - addtags = replicate(create_struct( $ - 'SDSSV_APOGEE_TARGET0', 0L, $ - 'GRI_GAIA_TRANSFORM', 0L, $ - 'org_catid',0LL), n_elements(plugmap)) - plugmap = struct_addtags(plugmap, addtags) - plugmap.org_catid = plugmap.catalogid - ;;; File Check - matchlength=2.0/3600 ;Fiber Diameter in Degrees - for j=0L, n_elements(plugmap)-1 do begin - spherematch, catdata.RA, catdata.DEC, plugmap[j].RA, plugmap[j].DEC, matchlength, id, match2, distance12 - if id eq -1 then begin - splog, "WARNING: No Match for Correction of fiber ",j," @RA:",plugmap[j].RA," ",plugmap[j].DEC - endif else begin - if plugmap[j].catalogid ne catdata[id].Original_CatalogID then begin - splog, "WARNING: Catalogid Missmatch ",j," @RA DEC:",plugmap[j].RA," ",plugmap[j].DEC - endif else begin - splog, "Correcting Fiber ",STRTRIM(j,1)," Info @RA DEC:",plugmap[j].RA," ",plugmap[j].DEC - plugmap[j].catalogid=catdata[id].Final_CatalogID - plugmap[j].mag[1]=catdata[id].GMAG - plugmap[j].mag[2]=catdata[id].RMAG - plugmap[j].mag[3]=catdata[id].IMAG - plugmap[j].mag[4]=catdata[id].ZMAG - plugmap[j].FIRSTCARTON=catdata[id].First_carton - plugmap[j].SDSSV_APOGEE_TARGET0=catdata[id].APOGEE_FLAG - plugmap[j].sdssv_boss_target0=catdata[id].BOSS_FLAG - plugmap[j].GRI_GAIA_TRANSFORM=catdata[id].TRANSFORMATION_FLAG - ;Instrument ;Fiber_Type - endelse - endelse - endfor - endif - endif - endif ; ct gt 0 - endif ; platelist_dir set - ;---------- - ; Optionally add tags for SOS - - if (keyword_set(apotags)) then begin - addtags = { cartid : long((yanny_par(hdr, 'cartridgeId'))[0]), $ - plateid : long(plateid), $ - tileid : long((yanny_par(hdr, 'tileId'))[0]), $ - raplate : float((yanny_par(hdr, 'raCen'))[0]), $ - decplate : float((yanny_par(hdr, 'decCen'))[0]), $ - redden_med : float(redden_med), $ - fibersn : fltarr(3), $ - synthmag : fltarr(3) } - plugmap = struct_addtags(plugmap, replicate(addtags, n_elements(plugmap))) - healpix_now=0; There is no need for healpix info in the SOS - endif else begin - healpix_now=0; HJIM: I decided to pass this part as an afterburner for the spAll file - endelse - - if keyword_set(plates) then begin - programname = (yanny_par(hdr, 'programname'))[0] - if strmatch(programname, '*eFEDS*', /fold_case) eq 1 then begin - psffibercor = [0.7978, 0.8138, 0.8230, 0.8235] - spht = strmatch(plugmap.FIRSTCARTON, '*bhm_spiders_clusters-efeds*') - for i=0, n_elements(plugmap)-1 do begin - if spht[i] then begin - plugmap[i].mag=plugmap[i].mag-psffibercor - endif - endfor - endif - splog, 'Adding healpix info' - addtags = replicate(create_struct('HEALPIX', 0L, $ - 'HEALPIXGRP', 0, $ - 'HEALPIX_DIR', ' '), n_elements(plugmap)) - plugmap = struct_addtags(plugmap, addtags) - - if keyword_set(healpix_now) then begin - mwm_root='$MWM_HEALPIX' - run2d=getenv('RUN2D') - healpix_dir_t=plugmap.healpix_dir - healp=coords_to_healpix(string(plugmap.ra), string(plugmap.dec)) - plugmap.healpix=healp.healpix - plugmap.healpixgrp=healp.healpixgrp - for fid = 0L, n_elements(plugmap)-1 do begin - if not keyword_set(legacy) then begin - healpix_dir_t[fid]=mwm_root + $ - strtrim(string(healp[fid].healpixgrp),2) + '/' + $ - strtrim(string(healp[fid].healpix),2) + '/boss/' + $ - strtrim(run2d, 2)+ '/' + 'spec-' + $ - string(plateid,format='(i6.6)') + '-XXXX' + '-' + $ - string(plugmap[fid].catalogid,format='(i11.11)')+'.fits' - endif - endfor - plugmap.healpix_dir=healpix_dir_t - endif - endif - ;---------- - ; Read calibObj or photoPlate photometry data - if (keyword_set(calibobj)) then begin - programname = (yanny_par(hdr, 'programname'))[0] - ra_plate=float(yanny_par(hdr, 'raCen')) - dec_plate=float(yanny_par(hdr, 'decCen')) - plugmap=calibrobj(plugfile,plugmap, plateid, ra_plate,dec_plate, plates=plates,$ - legacy=legacy, MWM_fluxer=MWM_fluxer, $ - gaiaext=gaiaext, KeywordsForPhoto=KeywordsForPhoto) - endif - - ;----- - ; The following lines are modified to apply the new extinctiion coefficients. - ; They are just the ratios of new/old, - redden_corr=[0.822308,0.870815,0.830607,0.813998,0.853955] - if (keyword_set(deredden)) then begin - splog, 'Applying reddening vector ', redden_med - for ifilt=0, 4 do begin - if (plateid ge 7572) then begin - plugmap.mag[ifilt] = plugmap.mag[ifilt] - redden_med[ifilt] - endif else begin - plugmap.mag[ifilt] = plugmap.mag[ifilt] - redden_med[ifilt]*redden_corr[ifilt] - splog, 'modified extinction co-efficients: ',redden_med[ifilt]*redden_corr[ifilt] - endelse - endfor - endif - - - ; Optionally trim to selected spectrograph - if keyword_set(plates) then begin - nfiber = 1000 - plugmap.spectrographid=1 - endif else begin - nfiber = n_elements(plugmap) - endelse - if (keyword_set(spectrographid)) then begin - print,spectrographid,nfiber - indx = (spectrographid-1)*nfiber/2 + lindgen(nfiber/2) - plugmap = plugmap[indx] - fibermask = fibermask[indx] - endif - - - if tag_exist(plugmap,'ORG_FIBERID') || tag_exist(plugmap,'org_catid') then begin - plugmap = struct_trimtags(plugmap,except_tags=['ORG_FIBERID','org_catid']) - endif - - return, plugmap -end - - -;------------------------------------------------------------------------------ -function readplugmap, plugfile, spectrographid, plugdir=plugdir, $ - apotags=apotags, deredden=deredden, exptime=exptime, calibobj=calibobj, $ - hdr=hdr, fibermask=fibermask, plates=plates, legacy=legacy, gaiaext=gaiaext, $ - MWM_fluxer=MWM_fluxer, nfiles=nfiles, _EXTRA=KeywordsForPhoto - - if n_elements(plugfile) GT 1 then begin - for i=0, n_elements(plugfile)-1 do begin - plugmap1 = readplugmap(plugfile[i], spectrographid, plugdir=plugdir, $ - apotags=apotags, deredden=deredden, exptime=exptime, calibobj=calibobj, $ - hdr=hdr1, fibermask=fibermask1, plates=plates, legacy=legacy, gaiaext=gaiaext, $ - MWM_fluxer=MWM_fluxer,/nfiles, _EXTRA=KeywordsForPhoto) - if keyword_set(plugmap) then plugmap = [plugmap ,plugmap1] else plugmap = plugmap1 - if keyword_set(hdr) then hdr = [hdr,'cut',hdr1] else hdr = ['cut',hdr1] - if keyword_set(fibermask) then fibermask = [fibermask,-100, fibermask1] $ - else fibermask=[-100,fibermask1] - Undefine, fibermask1 - endfor - hdr = [hdr,'cut'] - fibermask=[fibermask,-100] - return, plugmap - endif - hdr = 0 ; Default return value - if (keyword_set(fibermask)) then begin - message, 'FIBERMASK is already set!' - endif - - if keyword_set(plates) or keyword_set(legacy) then begin - PMobjName='PLUGMAPOBJ' - maptype='PlugMap' - endif else begin - PMobjName='FIBERMAP' - maptype='confSummary' - endelse - ;---------- - ; Read the file - thisfile = (findfile(djs_filepath(plugfile, root_dir=plugdir), count=ct))[0] - if (ct NE 1) then begin - splog, 'WARNING: Cannot find '+PMobjName+' file ' + plugfile - return, 0 - endif - - yanny_read, thisfile, pstruct, hdr=hdr, stnames=stnames, /anonymous - if (NOT keyword_set(pstruct)) then begin - splog, 'WARNING: Invalid '+PMobjName+' file ' + thisfile - return, 0 - endif - - plugmap = *pstruct[(where(stnames EQ PMobjName))[0]] - - plugmap.ra = (360d0 + plugmap.ra) MOD 360d0 - - if (keyword_set(plates) or keyword_set(legacy)) then begin - plugmap = readPlateplugMap(plugfile,plugmap,stnames, spectrographid, mjd=mjd,$ - apotags=apotags, deredden=deredden, $ - exptime=exptime, calibobj=calibobj, $ - hdr=hdr, fibermask=fibermask, gaiaext=gaiaext, $ - plates=plates,legacy=legacy, $ - MWM_fluxer=MWM_fluxer, _EXTRA=KeywordsForPhoto) - endif else begin - plugmap = readFPSobsSummary(plugfile,plugmap,stnames, spectrographid, mjd=mjd, $ - apotags=apotags,deredden=deredden, $ - exptime=exptime, calibobj=calibobj, $ - hdr=hdr,fibermask=fibermask, gaiaext=gaiaext, $ - MWM_fluxer=MWM_fluxer, _EXTRA=KeywordsForPhoto) - if not keyword_set(nfiles) then begin - hdr= ['cut',hdr,'cut'] - fibermask = [-100,fibermask,-100] - endif - endelse - - ;struct_print, plugmap, filename='plugmap_'+STRTRIM(MJD,1)+'.html', /html - MWRFITS, junk, repstr(plugfile,'.par','.fits'), hdr, /create, /silent - - sxaddpar, plugmap_val, 'EXTNAME', 'FIBERMAP', ' Complete Plugmap/confSummary' - MWRFITS, plugmap, repstr(plugfile,'.par','.fits'), plugmap_val, Status=Status - sxdelpar, plugmap_val, 'COMMENT' - - sxaddpar, fibermask_val, 'EXTNAME', 'FIBERMASK', ' Fibermask' - MWRFITS, fibermask, repstr(plugfile,'.par','.fits'),fibermask_val ,Status=Status - sxdelpar, fibermask_val, 'COMMENT' - - return, plugmap -end - diff --git a/pro/spec2d/readplugmap.pro b/pro/spec2d/readplugmap.pro index 1526df1ab..abd8dbdf3 100644 --- a/pro/spec2d/readplugmap.pro +++ b/pro/spec2d/readplugmap.pro @@ -7,7 +7,7 @@ ; ; CALLING SEQUENCE: ; plugmap = readplugmap( plugfile, [ spectrographid, plugdir=, $ -; /apotags, /deredden, /calibobj, exptime=, hdr=, fibermask=, _EXTRA= ] ) +; /sostags, /deredden, /calibobj, exptime=, hdr=, fibermask=, _EXTRA= ] ) ; ; INPUTS: ; plugfile - Name of Yanny-parameter plugmap file @@ -16,7 +16,7 @@ ; spectrographid - The spectrograph number, either 1 or 2; ; if not set (or 0), then return all object fibers ; plugdir - Directory for PLUGFILE -; apotags - If set, then add a number of tags to the output structure +; sostags - If set, then add a number of tags to the output structure ; constructed from the Yanny header. These tags are: ; CARTID, PLATEID, TILEID, RAPLATE, DECPLATE, REDDEN_MED. ; Also add the tags FIBERSN[3], SYTHMAG[3] which are used @@ -124,10 +124,10 @@ function clean_fibermap, fibermap, plates=plates return, fibermap end -pro run_readfibermap, spFibermap, spplan=spplan, $ +pro run_readfibermap, spFibermap, spplan=spplan, sostags=sostags,$ mjd=mjd, ccd=ccd, plugfile=plugfile, filehdr=filehdr - if keyword_set(apotags) then begin + if keyword_set(sostags) then begin flags = ' --clobber --SOS --log' flags = flags + ' --topdir /data/boss/sos/'+strtrim(mjd,2) flags = flags + ' --confSummary '+plugfile @@ -137,14 +137,14 @@ pro run_readfibermap, spFibermap, spplan=spplan, $ if strmatch(obs, '*LCO*',/fold_case) then $ flags = flags + ' --lco' - cmd = "readfibermaps.py "+ flags + cmd = "readfibermaps "+ flags splog,cmd spawn, cmd, dat endif else begin flags = ' --spplan2d '+spplan flags = flags + ' --clobber' - cmd = "readfibermaps.py "+ flags + cmd = "readfibermaps "+ flags splog,cmd spawn, cmd, dat splog, dat @@ -156,7 +156,7 @@ end function readplugmap, plugfile, spectrographid, plugdir=plugdir, savdir=savdir, $ - apotags=apotags, deredden=deredden, exptime=exptime, calibobj=calibobj, $ + sostags=sostags, deredden=deredden, exptime=exptime, calibobj=calibobj, $ hdr=hdr, fibermask=fibermask, plates=plates, legacy=legacy, $ gaiaext=gaiaext, map3d = map3d, MWM_fluxer=MWM_fluxer,$ nfiles=nfiles, ccd=ccd, cartid=cartid, no_db=no_db, $ @@ -166,15 +166,16 @@ function readplugmap, plugfile, spectrographid, plugdir=plugdir, savdir=savdir, if keyword_set(plates) or keyword_set(legacy) then begin yanny_read, (findfile(djs_filepath(plugfile[0], root_dir=plugdir), count=ct))[0], junk, hdr=filehdr, /anonymous fieldid = field_to_string((yanny_par_fc(filehdr, 'plateId'))[0]) + mjd = (yanny_par_fc(filehdr, 'fscanMJD'))[0] if keyword_set(KeywordsForPhoto) then begin junk = where(strmatch(tag_names(KeywordsForPhoto), 'mjd',/fold_case),ct) if ct ne 0 then mjd = strtrim(KeywordsForPhoto.MJD,2) - endif else mjd = (yanny_par_fc(filehdr, 'fscanMJD'))[0] + endif if not keyword_set(cartid) then cartid=(yanny_par_fc(filehdr, 'cartridgeId'))[0] confid = string((yanny_par_fc(filehdr, 'fscanId'))[0],format='(i2.2)') if strmatch(plugfile, 'plPlugMapM-*-*-*[az].par', /FOLD_CASE) then $ confid = confid+(yanny_par_fc(filehdr, 'pointing'))[0] - if keyword_set(apotags) AND keyword_set(ccd) then begin + if keyword_set(sostags) AND keyword_set(ccd) then begin spFibermap = 'spfibermap-'+fieldid+'-'+mjd+'-'+ccd+'.fits' endif else begin spFibermap = 'spfibermap-'+fieldid+'-'+mjd+'.fits' @@ -184,23 +185,22 @@ function readplugmap, plugfile, spectrographid, plugdir=plugdir, savdir=savdir, endif else begin if keyword_set(plugdir) then begin -;splog, 'DEBUG:', djs_filepath(plugfile[0], root_dir=plugdir, subdir='*/*') yanny_read, (findfile(djs_filepath(plugfile[0], root_dir=plugdir, subdir='*/*'), count=ct))[0], junk, hdr=filehdr, /anonymous endif else begin -;splog, 'DEBUG:', plugfile[0] yanny_read, plugfile[0], junk, hdr=filehdr, /anonymous endelse -;splog, filehdr fieldid = field_to_string(long(yanny_par_fc(filehdr, 'field_id'))) mjd = (yanny_par_fc(filehdr, 'MJD'))[0] - if keyword_set(apotags) then begin - if keyword_set(KeywordsForPhoto) then begin - junk = where(strmatch(tag_names(KeywordsForPhoto), 'mjd',/fold_case),ct) - if ct ne 0 then mjd = strtrim(KeywordsForPhoto.MJD,2) - endif + if keyword_set(KeywordsForPhoto) then begin + junk = where(strmatch(tag_names(KeywordsForPhoto), 'mjd',/fold_case),ct) + mjdc = mjd + if ct ne 0 then mjdc = strtrim(KeywordsForPhoto.MJD,2) + if mjdc ne mjd then splog, 'Warning: MJD mismatch for ',plugfile[0] + ;if keyword_set(sostags) then + mjd = mjdc endif confid = (yanny_par_fc(filehdr, 'configuration_id'))[0] - if keyword_set(apotags) AND keyword_set(ccd) then begin + if keyword_set(sostags) AND keyword_set(ccd) then begin spFibermap = 'spfibermap-'+fieldid+'-'+mjd+'-'+ccd+'.fits' endif else begin spFibermap = 'spfibermap-'+fieldid+'-'+mjd+'.fits' @@ -209,9 +209,15 @@ function readplugmap, plugfile, spectrographid, plugdir=plugdir, savdir=savdir, if keyword_set(savdir) then spFibermap=djs_filepath(spFibermap, root_dir=savdir) endelse + if not keyword_set(FILE_TEST(spFibermap)) then begin + if keyword_set(sostags) AND keyword_set(ccd) then begin + ccd1 = repstr(ccd, 'b', 'r') + spFibermap = 'spfibermap-'+fieldid+'-'+mjd+'-'+ccd1+'.fits' + endif + endif if not keyword_set(FILE_TEST(spFibermap)) then begin splog, 'Missing spFibermap file: ', spFibermap - run_readfibermap, spFibermap, spplan=spplan, $ + run_readfibermap, spFibermap, spplan=spplan, sostags=sostags,$ mjd=mjd, ccd=ccd, plugfile=plugfile, filehdr=filehdr if not keyword_set(FILE_TEST(spFibermap)) then $ message, 'Missing spFibermap file: '+ spFibermap @@ -232,7 +238,7 @@ function readplugmap, plugfile, spectrographid, plugdir=plugdir, savdir=savdir, map_ext = where(strmatch(hdr_struct.EXTNAME, file_basename(pf)+"*", /fold_case),ct) if ct eq 0 then begin splog,file_basename(pf)+ ' Missing from '+spFibermap - run_readfibermap, spFibermap, spplan=spplan, $ + run_readfibermap, spFibermap, spplan=spplan, sostags=sostags,$ mjd=mjd, ccd=ccd, plugfile=plugfile, filehdr=filehdr map_ext = where(strmatch(hdr_struct.EXTNAME, file_basename(pf)+"*", /fold_case),ct) if ct eq 0 then begin @@ -277,7 +283,7 @@ function readplugmap, plugfile, spectrographid, plugdir=plugdir, savdir=savdir, 'EBV',!Values.F_NAN, $ 'EBV_TYPE', 'SFD'), n_elements(plugmap)) plugmap = struct_addtags(plugmap, addtags) - if not keyword_set(apotags) then plugmap.EBV=plugmap.sfd_ebv + if not keyword_set(sostags) then plugmap.EBV=plugmap.sfd_ebv if keyword_set(calibobj) then begin rjce_extintion = 0 if keyword_set(rjce_extintion) then begin @@ -418,7 +424,7 @@ function readplugmap, plugfile, spectrographid, plugdir=plugdir, savdir=savdir, plugmap = outplugmap endif endelse - if keyword_set(apotags) then fibermask=fibermask[where(fibermask ne -100)] + if keyword_set(sostags) then fibermask=fibermask[where(fibermask ne -100)] tags_to_delete=['SFD_EBV','EBV_BAYESTAR15','ebv_rjce'] foreach tag, tags_to_delete do begin @@ -426,13 +432,13 @@ function readplugmap, plugfile, spectrographid, plugdir=plugdir, savdir=savdir, plugmap = struct_trimtags(plugmap,except_tags=[tag]) endforeach - if (not keyword_set(apotags)) then plugmap = clean_fibermap(plugmap) + if (not keyword_set(sostags)) then plugmap = clean_fibermap(plugmap) fibermask=fibermask ; splog, plugmap ; splog, fibermask ; help, plugmap -; MWRFITS, plugmap, 'fibermap.fits', Status=Status, /silent +; MWRFITS_named, plugmap, 'fibermap.fits', name='PLUGMAP', Status=Status, /silent ; struct_print, plugmap, filename='fibermap.html', /html return, plugmap end diff --git a/pro/spec2d/reject_arc.pro b/pro/spec2d/reject_arc.pro index e6e93b1fd..a66ad6d89 100644 --- a/pro/spec2d/reject_arc.pro +++ b/pro/spec2d/reject_arc.pro @@ -107,6 +107,15 @@ function reject_arc, img, hdr, nsatrow=nsatrow, fbadpix=fbadpix, noreject=noreje endif endelse + ff = sxpar(hdr, 'FF') + if (keyword_set(ff)) then begin + ff_sum = fix( total( fix( str_sep(ff,' ') ) ) ) + if (ff_sum gt 0) then begin + qbad = 1 + splog, 'WARNING: Reject Arc: Flat-field lamps turned on!' + endif + endif + if not strmatch(sxpar(hdr,'HARTMANN'), 'out*', /fold_case) then begin splog,'WARNING: Hartmann doors closed' endif diff --git a/pro/spec2d/reject_flat.pro b/pro/spec2d/reject_flat.pro index 755df5121..c0922c20c 100644 --- a/pro/spec2d/reject_flat.pro +++ b/pro/spec2d/reject_flat.pro @@ -75,6 +75,52 @@ function reject_flat, img, hdr, nsatrow=nsatrow, fbadpix=fbadpix, $ splog,'WARNING: Hartmann doors closed' endif + + lamp_ne = sxpar(hdr, 'NE') + lamp_hgcd = sxpar(hdr, 'HGCD') + lamp_hear = sxpar(hdr, 'HEAR') + + if strmatch(string(sxpar(hdr,'CARTID')), '*FPS-S*', /fold_case) then obs='LCO' else obs='APO' + + if keyword_set(lamp_ne) then begin + ne_sum = fix( total( fix( str_sep(lamp_ne,' ') ) ) ) + ne_max = n_elements(str_sep(strtrim(lamp_ne,2),' ')) + endif else begin + ne_sum = 0 + endelse + + if keyword_set(lamp_hgcd) then begin + hgcd_sum = fix( total( fix( str_sep(lamp_hgcd,' ') ) ) ) + hgcd_max = n_elements(str_sep(strtrim(lamp_hgcd,2),' ')) + endif else begin + hgcd_sum = 0 + endelse + + if keyword_set(lamp_hear) then begin + hear_sum = fix( total( fix( str_sep(lamp_hear,' ') ) ) ) + hear_max = n_elements(str_sep(strtrim(lamp_hear,2),' ')) + endif else begin + hear_sum = 0 + endelse + if strmatch(obs, 'APO', /fold_case) then begin + if (ne_sum gt 0) then begin + splog, 'WARNING: Reject Flat: ' + strtrim(ne_sum,2) + '/'+strtrim(ne_max,2)+ ' Ne lamps are On' + qbad = 1 + endif + if (hgcd_sum gt 0) then begin + splog, 'WARNING: Reject Flat: ' + strtrim(hgcd_sum,2) + '/'+strtrim(hgcd_max,2)+ ' HgCd lamps are On' + qbad = 1 + endif + endif else begin + if (ne_sum gt 0) then begin + splog, 'WARNING: Reject Flat: ' + strtrim(ne_sum,2) + '/'+strtrim(ne_max,2)+ ' Ne lamps are On' + qbad =1 + endif + if (hear_sum gt 0) then begin + splog, 'WARNING: Reject Flat: ' + strtrim(hear_sum,2) + '/'+strtrim(hear_max,2)+ ' HeAr lamps are On' + qbad = 1 + endif + endelse endif if (keyword_set(fbadpix)) then begin diff --git a/pro/spec2d/run_sdssproc.pro b/pro/spec2d/run_sdssproc.pro deleted file mode 100644 index 61c12b2a9..000000000 --- a/pro/spec2d/run_sdssproc.pro +++ /dev/null @@ -1,273 +0,0 @@ -;+ -; -; NAME: -; run_sdssproc -; -; PURPOSE: -; run SDSSPROC over many raw sdR files and write image and invvar files. -; -; USAGE: -; run_sdssproc [, indir=indir, outdir=outdir, mjdlist=mjdlist, $ -; clobber=clobber, gzip=gzip, minflat=minflat, maxflat=maxflat, $ -; pbsnodes=pbsnodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, $ -; pbs_walltime=pbs_walltime, pbs_scratch=pbs_scratch, ember=ember] - -; ARGUMENTS: -; indir: raw data directory, defaulting to $BOSS_SPECTRO_DATA -; outdir: top directory to write processed files, defaulting -; to $PROCDATA_DIR if set, otherwise working dir ('.') -; mjdlist: list of MJDs to process, defaulting to all MJDs -; found under indir -; clobber: set this to foce clobbering of existing image and invvar files. -; gzip: set this to cause output files to be gzipped (default is no gzip) -; minflat: sdssproc "minflat" keyword, default to 0.8 -; maxflat: sdssproc "maxflat" keyword, default to 1.2 -; pbs_nodes - If set, collect the pbs qsub commands into pbs_nodes script files -; in order to run on clusters without node sharing (ie Utah). -; default to node sharing, and keep the pbs qsub commands in the -; individual plate-mjd SCRIPT files. -; pbs_ppn - If set, use #PBS -l nodes=1:ppn=pbs_ppn, otherwise -; default to #PBS -l nodes=1 -; pbs_a - If set, use #PBS -A pbs_a, otherwise -; default to none -; pbs_walltime - If set, use #PBS -l walltime=pbs_walltime, otherwise -; default to none -; pbs_scratch- If set, then write to the pbs_scratch before rsync'ing with -; the plate-mjd output directories in $BOSS_SPECTRO_REDUX, -; default to none -; ember - If set, then setup the defaults for the University of Utah: -; pbs_nodes = 8 (for 8 nodes, without node sharing) -; pbs_ppn = 12 (12 processors per node) -; pbs_a = 'bolton-em' (Bolton's account, limited to 8 nodes: ember253 - ember260) -; pbs_walltime='48:00:00' -; pbs_scratch = $PBS_SCRATCH/userID/procdata/' if $PBS_SCRATCH is set, otherwise /scratch/local/userID/procdata/ -; -; -; WRITTEN: -; bolton@utah 2011jan -; 10-Jan-2011 modified by Joel R. Brownstein, University of Utah, -; to generalize to cluster computers by writing PBS commands to bundled pbs batch files, -; which source job files containing the calls to sdssproc, -; via the keywords pbs_nodes, pbs_ppn, pbs_a -; and with University of Utah defaults preset via the -; keyword ember. -; 14-jan-2011 bolton fix of non-pbs bug. -; 14-Jan-2011 Brownstein added pbs_scratch -;- - -pro run_sdssproc, indir=indir, outdir=outdir, mjdlist=mjdlist, clobber=clobber, $ - gzip=gzip, minflat=minflat, maxflat=maxflat, $ - pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, $ - pbs_walltime=pbs_walltime, pbs_scratch=pbs_scratch, ember=ember - - ; Defaults and prep: - if (n_elements(minflat) ne 1) then minflat = 0.8 - if (n_elements(maxflat) ne 1) then maxflat = 1.2 - if (not keyword_set(indir)) then indir = getenv('BOSS_SPECTRO_DATA') - if (not keyword_set(outdir)) then if getenv('PROCDATA_DIR') ne '' then outdir=getenv('PROCDATA_DIR') else outdir = '.' - if (not keyword_set(mjdlist)) then mjdlist = fileandpath(file_search(indir+'/?????')) - mjdlist = fileandpath(mjdlist) - - if keyword_set(pbs_nodes) or keyword_set(ember) then begin ; initialize for a pbs/ember user - home = getenv('HOME') - if (home ne '') then begin - pos0 = strpos(home,'/',/reverse_search)+1 - pos1 = strlen(home) - userID = strmid(home,pos0,pos1-pos0) - endif else userID = 'user' - print, 'RUN_SDSSPROC: Starting for user: ',userID - endif - - if keyword_set(ember) then begin - if not keyword_set(pbs_nodes) then pbs_nodes=8 - if not keyword_set(pbs_ppn) then pbs_ppn=12 - if not keyword_set(pbs_walltime) then pbs_walltime='48:00:00' - if not keyword_set(pbs_a) then pbs_a = 'bolton-em' - if not keyword_set(pbs_scratch) then begin - scratch_dir = getenv('PBS_SCRATCH') - if (scratch_dir eq '') then scratch_dir = '/scratch/local/' - pbs_scratch = djs_filepath(userID+'/procdata',root_dir=scratch_dir) - endif - endif - - s_mjdlist = strtrim(string(mjdlist), 2) - nmjd = n_elements(s_mjdlist) - - if (nmjd lt 1) then begin - print, 'No MJDs specified or found.' - return - endif - - if keyword_set(pbs_nodes) then begin ; initialize the pbs node/processor hierarchy - pbs_root_dir = getenv('BOSS_PBS') - if (pbs_root_dir eq '') then pbs_root_dir = djs_filepath('pbs',root_dir=outdir) $ - else pbs_root_dir = djs_filepath('procdata',root_dir=pbs_root_dir) - pbs_dir = djs_filepath(userID,root_dir=pbs_root_dir) + '/' - if file_test(pbs_dir) then begin - shift_pbs_dir = djs_filepath(userID+'.*',root_dir=pbs_root_dir) + '/' - shift_pbs = file_search(shift_pbs_dir, count=nshift_pbs) - max_shift = -1L - for i=0,nshift_pbs-1 do begin - pos0 = strpos(shift_pbs[i],'/'+userID+'.',/reverse_search)+strlen('/'+userID+'.') - pos1 = strlen(shift_pbs[i]) - next_shift = fix(strmid(shift_pbs[i],pos0,pos1-pos0)) - max_shift = (next_shift gt max_shift) ? next_shift : max_shift - endfor - shift_pbs_dir = djs_filepath(userID+'.'+strtrim(max_shift+1,2),root_dir=pbs_root_dir) + '/' - print, 'RUN_SDSSPROC: Renaming previous PBS directory to: '+shift_pbs_dir - file_move, pbs_dir, shift_pbs_dir - file_mkdir, pbs_dir - endif else file_mkdir, pbs_dir - - source_cmd = 'source ' - if keyword_set(gzip) then tar_cmd = 'tar -czf ' else tar_cmd = 'tar -cf ' - linefeed = String(10B) - - pbs_batch_dir = djs_filepath('batch',root_dir=pbs_dir) - pbs_job_dir = djs_filepath('job/' + s_mjdlist,root_dir=pbs_dir) - if not file_test(pbs_batch_dir) then file_mkdir, pbs_batch_dir - pbs_node_index = 'node'+ strtrim(indgen(pbs_nodes),2) - pbs_node_file = djs_filepath(pbs_node_index+'.pbs',root_dir=pbs_batch_dir) - if keyword_set(pbs_ppn) then begin - pbs_ppn_index = '_proc'+ strtrim(indgen(pbs_ppn),2) - pbs_batch_file = strarr(pbs_nodes,pbs_ppn) - pbs_batch_script = strarr(pbs_nodes,pbs_ppn) - for pbs_node = 0,pbs_nodes-1 do pbs_batch_file[pbs_node,*] = djs_filepath(pbs_node_index[pbs_node]+pbs_ppn_index+'.pbs',root_dir=pbs_batch_dir) - pbs_proc = 0 - endif - pbs_node = 0 - endif - - ; Loop over MJDs: - for i = 0L, nmjd - 1 do begin - out_this = outdir + '/' + s_mjdlist[i] - - if keyword_set(pbs_nodes) then begin - if (file_test(pbs_job_dir[i]) eq 0) then file_mkdir, pbs_job_dir[i] - if keyword_set(pbs_scratch) then begin - scratch_this = djs_filepath(s_mjdlist[i],root_dir=pbs_scratch) - if (file_test(scratch_this) eq 0) then file_mkdir, scratch_this - endif - endif - - if (file_test(out_this) eq 0) then file_mkdir, out_this - - sdr_full = file_search(indir + '/' + s_mjdlist[i] + '/' + 'sdR-[b,r][1,2]-????????.fit*') - nsdr = n_elements(sdr_full) - - print, 'MJD = ' + s_mjdlist[i] + ': Found ' + strtrim(string(nsdr),2) + ' sdR files.' - - if keyword_set(pbs_nodes) then pbs_job_file = djs_filepath('sdssproc'+strtrim(indgen(nsdr),2)+'.job',root_dir=pbs_job_dir[i]) - - for j = 0L, nsdr - 1 do begin - sdr_file = fileandpath(sdr_full[j]) - sdr_base = (strsplit(sdr_file, '.', /extract))[0] - outfile = out_this + '/' + sdr_base + '-IMAGE.fits' - varfile = out_this + '/' + sdr_base + '-INVVAR.fits' - if keyword_set(pbs_scratch) then begin - scratch_outfile = djs_filepath(s_mjdlist[i],root_dir=pbs_scratch) - if (file_test(scratch_this) eq 0) then file_mkdir, scratch_this - scratch_outfile = scratch_this + '/' + sdr_base + '-IMAGE.fits' - scratch_varfile = scratch_this + '/' + sdr_base + '-INVVAR.fits' - endif - - if (keyword_set(clobber) or (file_test(outfile+'*') eq 0) or (file_test(varfile+'*') eq 0)) then begin - spawn, 'rm -f ' + outfile+'*' - spawn, 'rm -f ' + varfile+'*' - - if keyword_set(pbs_nodes) then begin ;batch mode - openw, pbs_job, pbs_job_file[j] ,/get_lun - if keyword_set(pbs_scratch) then begin - s_outfile = "'" + scratch_outfile + "'" - s_varfile = "'" + scratch_varfile + "'" - endif else begin - s_outfile = "'" + outfile + "'" - s_varfile = "'" + varfile + "'" - endelse - s_sdr_full = "'" + sdr_full[j] + "'" - printf, pbs_job, 'idl -e "sdssproc, '+s_sdr_full+', outfile='+s_outfile + $ - ', varfile='+s_varfile+', /applycrosstalk, minflat='+strtrim(minflat,2) + $ - ', maxflat='+strtrim(maxflat,2)+', /silent"' - if keyword_set(gzip) then begin - if keyword_set(pbs_scratch) then begin - printf, pbs_job, 'gzip ' + scratch_outfile - printf, pbs_job, 'gzip ' + scratch_varfile - endif else begin - printf, pbs_job, 'gzip ' + outfile - printf, pbs_job, 'gzip ' + varfile - endelse - endif - - if keyword_set(pbs_scratch) then begin ; finish up: tar to a pipe to copy scratch into place - printf, pbs_job, 'cd '+scratch_this - printf, pbs_job, 'tar cf - '+sdr_base + '*.* | (cd '+ out_this + ' ; tar xfp - )' - printf, pbs_job, 'rm -f ' + sdr_base + '*.* - endif - - close, pbs_job - free_lun, pbs_job - - endif else begin ; interactive mode - print, ' File ' + strtrim(string(j),2) + ' (' + sdr_base + ')' - sdssproc, sdr_full[j], outfile=outfile, varfile=varfile, /applycrosstalk, $ - minflat=minflat, maxflat=maxflat, /silent - if keyword_set(gzip) then begin - spawn, 'gzip ' + outfile - spawn, 'gzip ' + varfile - endif - endelse - - endif - - if keyword_set(pbs_nodes) then begin ; finalize the pbs_job's by delegating to pbs_node's and pbs_batch_script's - if keyword_set(pbs_ppn) then begin - pbs_batch_script[pbs_node,pbs_proc] += source_cmd + pbs_job_file[j] + linefeed - pbs_proc += 1 - if pbs_proc ge pbs_ppn then begin - pbs_node += 1 - pbs_proc = 0 - if pbs_node ge pbs_nodes then pbs_node = 0 - endif - endif - endif - - endfor - - endfor - - pbs_batch_complete = 0L - if keyword_set(pbs_nodes) then begin ; write the pbs_batch_script's to pbs_batch_file's - for pbs_node = 0, pbs_nodes-1 do begin - openw, pbs_node_batch, pbs_node_file[pbs_node] ,/get_lun - printf, pbs_node_batch, '# Auto-generated batch file '+systime() - if keyword_set(pbs_a) then printf, pbs_node_batch, '#PBS -A '+pbs_a - if keyword_set(pbs_walltime) then printf, pbs_node_batch, '#PBS -l walltime='+pbs_walltime - printf, pbs_node_batch, '#PBS -W umask=0022' - printf, pbs_node_batch, '#PBS -V' - printf, pbs_node_batch, '#PBS -j oe' - if keyword_set(pbs_ppn) then begin - printf, pbs_node_batch, '#PBS -l nodes=1:ppn='+strtrim(pbs_ppn,2) - for pbs_proc = 0, pbs_ppn-1 do begin - pbs_batch_complete = (pbs_batch_script[pbs_node,pbs_proc] eq '') - if not pbs_batch_complete then begin - openw, pbs_batch, pbs_batch_file[pbs_node,pbs_proc], append=pbs_ppn_append, /get_lun - printf, pbs_batch, pbs_batch_script[pbs_node,pbs_proc] - close, pbs_batch - free_lun, pbs_batch - printf, pbs_node_batch, source_cmd+pbs_batch_file[pbs_node,pbs_proc] + ' &' - endif else break - endfor - endif else printf, pbs_node_batch, '#PBS -l nodes=1" - printf, pbs_node_batch, 'wait' - close, pbs_node_batch - free_lun, pbs_node_batch - if pbs_batch_complete then break - endfor - - cd, pbs_batch_dir - for pbs_node=0L, pbs_nodes-1 do spawn, 'qsub '+pbs_node_file[pbs_node] - - endif - - return -end diff --git a/pro/spec2d/sdss_field_sort.pro b/pro/spec2d/sdss_field_sort.pro deleted file mode 100644 index e9b8e879f..000000000 --- a/pro/spec2d/sdss_field_sort.pro +++ /dev/null @@ -1,190 +0,0 @@ -;+ -; NAME: -; sdss_plate_sort -; -; PURPOSE: -; Resort the photoPlate files to the fiber numbering of a plugmap -; -; CALLING SEQUENCE: -; sdss_plate_sort, [ planfile ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; planfile - Name(s) of output plan file; default to looping through -; all plan files matching 'spPlan2d*.par' -; -; OUTPUT: -; -; COMMENTS: -; The following files are input: -; $PHOTOPLATE_DIR/$PLATE/photoMatchPlate-$PLATE.fits -; $PHOTOPLATE_DIR/$PLATE/photoPlate-$PLATE.fits -; $PHOTOPLATE_DIR/$PLATE/photoPosPlate-$PLATE.fits -; The following files are output in the same directories as -; the plan files: -; photoMatchPlate-$PLATE-$MJD.fits -; photoPlate-$PLATE-$MJD.fits -; photoPosPlate-$PLATE-$MJD.fits -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 12-Apr-2010 Written by David Schlegel, LBL -; 09-Apr-2014 Fix upstream bug where failed position matches could -; still have thing_id>=0. SJB -; Also replace failed match ra,dec with plug_ra,plug_dec -;- -;------------------------------------------------------------------------------ -pro sdss_field_sort, planfile - - if (NOT keyword_set(planfile)) then planfile = findfile('spPlan2d*.par') - - ;---------- - ; If multiple plan files exist, then call this script recursively - ; for each such plan file. - - nplan = n_elements(planfile) - if (nplan GT 1) then begin - for i=0, nplan-1 do $ - sdss_plate_sort, planfile[i] - return - endif - - ;---------- - ; Strip path from plan file name, and change to that directory - - thisplan = fileandpath(planfile[0], path=thispath) - cd, thispath, current=origdir - if (NOT keyword_set(thispath)) then cd, origdir - - ;---------- - ; Find the SPEXP structure - - allseq = yanny_readone(thisplan, 'SPEXP', hdr=hdr, /anon) - if (N_elements(allseq) EQ 0) then begin - splog, 'ABORT: No SPEXP structures in plan file ' + thisplan - cd, origdir - return - endif - mjd = yanny_par_fc(hdr, 'MJD') - - ;---------- - ; Find keywords from the header - - sortstr = string(allseq.fieldid) + ' ' + string(allseq.mjd) - ilist = uniq(sortstr,uniq(sortstr)) - for i=0, n_elements(ilist)-1 do begin - fieldstr = field_to_string(allseq[ilist[i]].fieldid) ;- JEB plate number problem OK - mjdstr = string(allseq[ilist[i]].mjd,format='(i5.5)') - calobjobssfile = (findfile(filepath('confSummaryF-'+allseq[ilist[i]].mapname+'.par',$ - root_dir=getenv('SDSSCORE'), subdir=['*','*']), count=ct))[0] - if (ct ne 0) then calobjobssfile = 'confSummaryF-'+allseq[ilist[i]].mapname+'.par' $ - else calobjobssfile = 'confSummary-'+allseq[ilist[i]].mapname+'.par' - plugdir = getenv('SDSSCORE')+'/'+mjdstr - matchfile = (findfile(djs_filepath('photoMatchField-'+fieldstr+'*.fits*', $ - root_dir=getenv('SDSSCORE')+'/photofield/', subdir=fieldstr)))[0] - infile1 = (findfile(djs_filepath('photoField-'+fieldstr+'*.fits*', $ - root_dir=getenv('SDSSCORE')+'/photofield/', subdir=fieldstr)))[0] - infile2 = (findfile(djs_filepath('photoPosField-'+fieldstr+'*.fits*', $ - root_dir=getenv('SDSSCORE')+'/photofield/', subdir=fieldstr)))[0] - outfile0 = 'photoMatchField-'+fieldstr+'-'+mjdstr+'.fits' - outfile1 = 'photoField-'+fieldstr+'-'+mjdstr+'.fits' - outfile2 = 'photoPosField-'+fieldstr+'-'+mjdstr+'.fits' - - plugmap = readplugmap(calobjobssfile, plugdir=plugdir, mjd=mjd) - - if (keyword_set(matchfile)) then $ - matchdat = mrdfits(matchfile, 1, hdr0) $ - else matchdat = 0 - if (keyword_set(infile1)) then $ - objdat1 = mrdfits(infile1, 1, hdr1) $ - else objdat1 = 0 - if (keyword_set(infile2)) then $ - objdat2 = mrdfits(infile2, 1, hdr2) $ - else objdat2 = 0 - ;print, 'photoPosField-'+fieldstr+'*.fits*' - ;print, getenv('SDSSCORE')+'/photofield/'+fieldstr - ;---------- - ; Fix bug where position match failures could still have thing_id >= 0 - - ibad = where((objdat2.ra EQ 0.0) AND (objdat2.dec EQ 0.0) $ - AND (objdat2.thing_id GE 0), nbad) - if (nbad GT 0) then begin - splog, "Correcting " + strtrim(string(nbad),2) $ - + " failed matches that still had thing_id>=0" - objdat2[ibad].thing_id = -1 - endif - - qplug_exist = keyword_set(plugmap) - qobj_exist = keyword_set(matchdat) * keyword_set(objdat1) $ - * keyword_set(objdat2) - - if (qplug_exist EQ 0) then $ - splog, 'WARNING: Missing confSummary files!' - if (qobj_exist EQ 0) then $ - splog, 'WARNING: Missing photoField files!' - - if (qplug_exist AND qobj_exist) then begin - - splog, 'Input photoMatchField file = '+matchfile - splog, 'Input photoField file = '+infile1 - splog, 'Input photoPosField file = '+infile2 - - ;---------- - ; spherematch plugmap and match file - - spherematch, plugmap.ra, plugmap.dec, $ - ((matchdat.match_ra+360.0) MOD 360), matchdat.match_dec, $ - 1./3600, i1, i2, d12 - nfiber = n_elements(plugmap) - - if (n_elements(i1) NE nfiber) then $ - message, 'ERROR: Failure matching all objects!' - if (total(i1[sort(i1)] EQ lindgen(nfiber)) LT nfiber) then $ - message, 'ERROR: Double-matching of some objects!' - if (total(i2[sort(i2)] EQ lindgen(nfiber)) LT nfiber) then $ - message, 'ERROR: Double-matching of some objects!' - isort = lonarr(nfiber) - isort[i1] = lindgen(nfiber) - - ;---------- - ; Reorder match arrays to plugmap fiber order - - matchdat = matchdat[i2[isort]] - objdat1 = objdat1[i2[isort]] - objdat2 = objdat2[i2[isort]] - - ;---------- - ; Replace failed matches with plug_ra,plug_dec - ; Photometric information is already 0, and thing_id=-1 - - nomatch = where(objdat2.thing_id LT 0, nmiss) - if (nmiss GT 0) then begin - splog, "Updating " + strtrim(string(nmiss),2) $ - + " failed matches to use plug_ra,plug_dec" - objdat2[nomatch].ra = plugmap[nomatch].ra - objdat2[nomatch].dec = plugmap[nomatch].dec - endif - - ;---------- - ; Write output files - - splog, 'Writing '+outfile0 - mwrfits, matchdat, outfile0, hdr0, /create - splog, 'Writing '+outfile1 - mwrfits, objdat1, outfile1, hdr1, /create - splog, 'Writing '+outfile2 - mwrfits, objdat2, outfile2, hdr2, /create - endif - endfor - - ; Change back to original directory - cd, origdir - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/sdss_plate_sort.old b/pro/spec2d/sdss_plate_sort.old deleted file mode 100644 index 8d1d9b8ab..000000000 --- a/pro/spec2d/sdss_plate_sort.old +++ /dev/null @@ -1,184 +0,0 @@ -;+ -; NAME: -; sdss_plate_sort -; -; PURPOSE: -; Resort the photoPlate files to the fiber numbering of a plugmap -; -; CALLING SEQUENCE: -; sdss_plate_sort, [ planfile ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; planfile - Name(s) of output plan file; default to looping through -; all plan files matching 'spPlan2d*.par' -; -; OUTPUT: -; -; COMMENTS: -; The following files are input: -; $PHOTOPLATE_DIR/$PLATE/photoMatchPlate-$PLATE.fits -; $PHOTOPLATE_DIR/$PLATE/photoPlate-$PLATE.fits -; $PHOTOPLATE_DIR/$PLATE/photoPosPlate-$PLATE.fits -; The following files are output in the same directories as -; the plan files: -; photoMatchPlate-$PLATE-$MJD.fits -; photoPlate-$PLATE-$MJD.fits -; photoPosPlate-$PLATE-$MJD.fits -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 12-Apr-2010 Written by David Schlegel, LBL -; 09-Apr-2014 Fix upstream bug where failed position matches could -; still have thing_id>=0. SJB -; Also replace failed match ra,dec with plug_ra,plug_dec -;- -;------------------------------------------------------------------------------ -pro sdss_plate_sort, planfile - - if (NOT keyword_set(planfile)) then planfile = findfile('spPlan2d*.par') - - ;---------- - ; If multiple plan files exist, then call this script recursively - ; for each such plan file. - - nplan = n_elements(planfile) - if (nplan GT 1) then begin - for i=0, nplan-1 do $ - sdss_plate_sort, planfile[i] - return - endif - - ;---------- - ; Strip path from plan file name, and change to that directory - - thisplan = fileandpath(planfile[0], path=thispath) - cd, thispath, current=origdir - if (NOT keyword_set(thispath)) then cd, origdir - - ;---------- - ; Find the SPEXP structure - - allseq = yanny_readone(thisplan, 'SPEXP', hdr=hdr, /anon) - if (N_elements(allseq) EQ 0) then begin - splog, 'ABORT: No SPEXP structures in plan file ' + thisplan - cd, origdir - return - endif - - ;---------- - ; Find keywords from the header - - sortstr = string(allseq.plateid) + ' ' + string(allseq.mjd) - ilist = uniq(sortstr,uniq(sortstr)) - for i=0, n_elements(ilist)-1 do begin - platestr = plate_to_string(allseq[ilist[i]].plateid) ;- JEB plate number problem OK - mjdstr = string(allseq[ilist[i]].mjd,format='(i5.5)') - plugfile = 'plPlugMapM-'+allseq[ilist[i]].mapname+'.par' - plugdir = getenv('SPECLOG_DIR')+'/'+mjdstr - matchfile = (findfile(djs_filepath('photoMatchPlate-'+platestr+'*.fits*', $ - root_dir=getenv('PHOTOPLATE_DIR'), subdir=platestr)))[0] - infile1 = (findfile(djs_filepath('photoPlate-'+platestr+'*.fits*', $ - root_dir=getenv('PHOTOPLATE_DIR'), subdir=platestr)))[0] - infile2 = (findfile(djs_filepath('photoPosPlate-'+platestr+'*.fits*', $ - root_dir=getenv('PHOTOPLATE_DIR'), subdir=platestr)))[0] - outfile0 = 'photoMatchPlate-'+platestr+'-'+mjdstr+'.fits' - outfile1 = 'photoPlate-'+platestr+'-'+mjdstr+'.fits' - outfile2 = 'photoPosPlate-'+platestr+'-'+mjdstr+'.fits' - - plugmap = readplugmap(plugfile, plugdir=plugdir) - if (keyword_set(matchfile)) then $ - matchdat = mrdfits(matchfile, 1, hdr0) $ - else matchdat = 0 - if (keyword_set(infile1)) then $ - objdat1 = mrdfits(infile1, 1, hdr1) $ - else objdat1 = 0 - if (keyword_set(infile2)) then $ - objdat2 = mrdfits(infile2, 1, hdr2) $ - else objdat2 = 0 - - ;---------- - ; Fix bug where position match failures could still have thing_id >= 0 - - ibad = where((objdat2.ra EQ 0.0) AND (objdat2.dec EQ 0.0) $ - AND (objdat2.thing_id GE 0), nbad) - if (nbad GT 0) then begin - splog, "Correcting " + strtrim(string(nbad),2) $ - + " failed matches that still had thing_id>=0" - objdat2[ibad].thing_id = -1 - endif - - qplug_exist = keyword_set(plugmap) - qobj_exist = keyword_set(matchdat) * keyword_set(objdat1) $ - * keyword_set(objdat2) - - if (qplug_exist EQ 0) then $ - splog, 'WARNING: Missing plPlugMapM files!' - if (qobj_exist EQ 0) then $ - splog, 'WARNING: Missing photoPlate files!' - - if (qplug_exist AND qobj_exist) then begin - - splog, 'Input photoMatchPlate file = '+matchfile - splog, 'Input photoPlate file = '+infile1 - splog, 'Input photoPosPlate file = '+infile2 - - ;---------- - ; spherematch plugmap and match file - - spherematch, plugmap.ra, plugmap.dec, $ - ((matchdat.match_ra+360.0) MOD 360), matchdat.match_dec, $ - 1./3600, i1, i2, d12 - nfiber = n_elements(plugmap) - - if (n_elements(i1) NE nfiber) then $ - message, 'ERROR: Failure matching all objects!' - if (total(i1[sort(i1)] EQ lindgen(nfiber)) LT nfiber) then $ - message, 'ERROR: Double-matching of some objects!' - if (total(i2[sort(i2)] EQ lindgen(nfiber)) LT nfiber) then $ - message, 'ERROR: Double-matching of some objects!' - isort = lonarr(nfiber) - isort[i1] = lindgen(nfiber) - - ;---------- - ; Reorder match arrays to plugmap fiber order - - matchdat = matchdat[i2[isort]] - objdat1 = objdat1[i2[isort]] - objdat2 = objdat2[i2[isort]] - - ;---------- - ; Replace failed matches with plug_ra,plug_dec - ; Photometric information is already 0, and thing_id=-1 - - nomatch = where(objdat2.thing_id LT 0, nmiss) - if (nmiss GT 0) then begin - splog, "Updating " + strtrim(string(nmiss),2) $ - + " failed matches to use plug_ra,plug_dec" - objdat2[nomatch].ra = plugmap[nomatch].ra - objdat2[nomatch].dec = plugmap[nomatch].dec - endif - - ;---------- - ; Write output files - - splog, 'Writing '+outfile0 - mwrfits, matchdat, outfile0, hdr0, /create - splog, 'Writing '+outfile1 - mwrfits, objdat1, outfile1, hdr1, /create - splog, 'Writing '+outfile2 - mwrfits, objdat2, outfile2, hdr2, /create - endif - endfor - - ; Change back to original directory - cd, origdir - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/sdss_plate_sort.pro b/pro/spec2d/sdss_plate_sort.pro deleted file mode 100644 index 05907bd67..000000000 --- a/pro/spec2d/sdss_plate_sort.pro +++ /dev/null @@ -1,184 +0,0 @@ -;+ -; NAME: -; sdss_plate_sort -; -; PURPOSE: -; Resort the photoPlate files to the fiber numbering of a plugmap -; -; CALLING SEQUENCE: -; sdss_plate_sort, [ planfile ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; planfile - Name(s) of output plan file; default to looping through -; all plan files matching 'spPlan2d*.par' -; -; OUTPUT: -; -; COMMENTS: -; The following files are input: -; $PHOTOPLATE_DIR/$PLATE/photoMatchPlate-$PLATE.fits -; $PHOTOPLATE_DIR/$PLATE/photoPlate-$PLATE.fits -; $PHOTOPLATE_DIR/$PLATE/photoPosPlate-$PLATE.fits -; The following files are output in the same directories as -; the plan files: -; photoMatchPlate-$PLATE-$MJD.fits -; photoPlate-$PLATE-$MJD.fits -; photoPosPlate-$PLATE-$MJD.fits -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 12-Apr-2010 Written by David Schlegel, LBL -; 09-Apr-2014 Fix upstream bug where failed position matches could -; still have thing_id>=0. SJB -; Also replace failed match ra,dec with plug_ra,plug_dec -;- -;------------------------------------------------------------------------------ -pro sdss_plate_sort, planfile - - if (NOT keyword_set(planfile)) then planfile = findfile('spPlan2d*.par') - - ;---------- - ; If multiple plan files exist, then call this script recursively - ; for each such plan file. - - nplan = n_elements(planfile) - if (nplan GT 1) then begin - for i=0, nplan-1 do $ - sdss_plate_sort, planfile[i] - return - endif - - ;---------- - ; Strip path from plan file name, and change to that directory - - thisplan = fileandpath(planfile[0], path=thispath) - cd, thispath, current=origdir - if (NOT keyword_set(thispath)) then cd, origdir - - ;---------- - ; Find the SPEXP structure - - allseq = yanny_readone(thisplan, 'SPEXP', hdr=hdr, /anon) - if (N_elements(allseq) EQ 0) then begin - splog, 'ABORT: No SPEXP structures in plan file ' + thisplan - cd, origdir - return - endif - mjd = yanny_par_fc(hdr, 'MJD') - ;---------- - ; Find keywords from the header - - sortstr = string(allseq.plateid) + ' ' + string(allseq.mjd) - ilist = uniq(sortstr,uniq(sortstr)) - for i=0, n_elements(ilist)-1 do begin - platestr = plate_to_string(allseq[ilist[i]].plateid) ;- JEB plate number problem OK - mjdstr = string(allseq[ilist[i]].mjd,format='(i5.5)') - plugfile = 'plPlugMapM-'+allseq[ilist[i]].mapname+'.par' - plugdir = getenv('SPECLOG_DIR')+'/'+mjdstr - matchfile = (findfile(djs_filepath('photoMatchPlate-'+platestr+'*.fits*', $ - root_dir=getenv('PHOTOPLATE_DIR'), subdir=platestr)))[0] - infile1 = (findfile(djs_filepath('photoPlate-'+platestr+'*.fits*', $ - root_dir=getenv('PHOTOPLATE_DIR'), subdir=platestr)))[0] - infile2 = (findfile(djs_filepath('photoPosPlate-'+platestr+'*.fits*', $ - root_dir=getenv('PHOTOPLATE_DIR'), subdir=platestr)))[0] - outfile0 = 'photoMatchPlate-'+platestr+'-'+mjdstr+'.fits' - outfile1 = 'photoPlate-'+platestr+'-'+mjdstr+'.fits' - outfile2 = 'photoPosPlate-'+platestr+'-'+mjdstr+'.fits' - - plugmap = readplugmap(plugfile, plugdir=plugdir, mjd=mjd) - if (keyword_set(matchfile)) then $ - matchdat = mrdfits(matchfile, 1, hdr0) $ - else matchdat = 0 - if (keyword_set(infile1)) then $ - objdat1 = mrdfits(infile1, 1, hdr1) $ - else objdat1 = 0 - if (keyword_set(infile2)) then $ - objdat2 = mrdfits(infile2, 1, hdr2) $ - else objdat2 = 0 - - ;---------- - ; Fix bug where position match failures could still have thing_id >= 0 - - ibad = where((objdat2.ra EQ 0.0) AND (objdat2.dec EQ 0.0) $ - AND (objdat2.thing_id GE 0), nbad) - if (nbad GT 0) then begin - splog, "Correcting " + strtrim(string(nbad),2) $ - + " failed matches that still had thing_id>=0" - objdat2[ibad].thing_id = -1 - endif - - qplug_exist = keyword_set(plugmap) - qobj_exist = keyword_set(matchdat) * keyword_set(objdat1) $ - * keyword_set(objdat2) - - if (qplug_exist EQ 0) then $ - splog, 'WARNING: Missing plPlugMapM files!' - if (qobj_exist EQ 0) then $ - splog, 'WARNING: Missing photoPlate files!' - - if (qplug_exist AND qobj_exist) then begin - - splog, 'Input photoMatchPlate file = '+matchfile - splog, 'Input photoPlate file = '+infile1 - splog, 'Input photoPosPlate file = '+infile2 - - ;---------- - ; spherematch plugmap and match file - - spherematch, plugmap.ra, plugmap.dec, $ - ((matchdat.match_ra+360.0) MOD 360), matchdat.match_dec, $ - 1./3600, i1, i2, d12 - nfiber = n_elements(plugmap) - - if (n_elements(i1) NE nfiber) then $ - message, 'ERROR: Failure matching all objects!' - if (total(i1[sort(i1)] EQ lindgen(nfiber)) LT nfiber) then $ - message, 'ERROR: Double-matching of some objects!' - if (total(i2[sort(i2)] EQ lindgen(nfiber)) LT nfiber) then $ - message, 'ERROR: Double-matching of some objects!' - isort = lonarr(nfiber) - isort[i1] = lindgen(nfiber) - - ;---------- - ; Reorder match arrays to plugmap fiber order - - matchdat = matchdat[i2[isort]] - objdat1 = objdat1[i2[isort]] - objdat2 = objdat2[i2[isort]] - - ;---------- - ; Replace failed matches with plug_ra,plug_dec - ; Photometric information is already 0, and thing_id=-1 - - nomatch = where(objdat2.thing_id LT 0, nmiss) - if (nmiss GT 0) then begin - splog, "Updating " + strtrim(string(nmiss),2) $ - + " failed matches to use plug_ra,plug_dec" - objdat2[nomatch].ra = plugmap[nomatch].ra - objdat2[nomatch].dec = plugmap[nomatch].dec - endif - - ;---------- - ; Write output files - - splog, 'Writing '+outfile0 - mwrfits, matchdat, outfile0, hdr0, /create - splog, 'Writing '+outfile1 - mwrfits, objdat1, outfile1, hdr1, /create - splog, 'Writing '+outfile2 - mwrfits, objdat2, outfile2, hdr2, /create - endif - endfor - - ; Change back to original directory - cd, origdir - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/sdssproc.pro b/pro/spec2d/sdssproc.pro index 9d12d0ed2..08745f3dc 100755 --- a/pro/spec2d/sdssproc.pro +++ b/pro/spec2d/sdssproc.pro @@ -1498,6 +1498,10 @@ endif ; Merge sdR datamodels ;--------------------------------------------------------------------------- quality = sxpar(hdr, 'QUALITY') +if isa(sxpar(hdr,'CARTID'), /NUMBER) then begin + plateid = sxpar(hdr, 'PLATEID') + if keyword_set(plateid) then sxaddpar, hdr, 'FIELDID', plateid +endif merge_sdrmodel, data=image, hdr=hdr sxaddpar, hdr, 'QUALITY', quality, "Exposure Quality", after="FLAVOR" @@ -1511,9 +1515,9 @@ if keyword_set(ecalibfile) then sxaddpar, hdr, 'OPECALIB', ecalibfile sxdelpar, hdr, 'UNSIGNED' if (keyword_set(outfile)) then begin - mwrfits, image, outfile, hdr, /create - mwrfits, invvar, outfile - mwrfits, rdnoiseimg, outfile + mwrfits_named, image, outfile, hdr=hdr, name='FLUX', /create + mwrfits_named, invvar, outfile, name='IVAR' + mwrfits_named, rdnoiseimg, outfile, name='RDNOISE' endif return diff --git a/pro/spec2d/select_arc.pro b/pro/spec2d/select_arc.pro deleted file mode 100644 index 5cdca00bc..000000000 --- a/pro/spec2d/select_arc.pro +++ /dev/null @@ -1,64 +0,0 @@ -;+ -; NAME: -; select_arc -; -; PURPOSE: -; Select best arc from an arc structure produced with SPCALIB. -; -; CALLING SEQUENCE: -; bestarc = select_arc ( arcstruct ) -; -; INPUTS: -; arcstruct - Structure array with extracted arc calibration information -; -; OPTIONAL KEYWORDS: -; -; OUTPUTS: -; bestarc - Structure with extracted arc calibration information -; for that arc selected from ARCSTRUCT -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djsig() -; -; REVISION HISTORY: -; 25-Jan-2000 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ - -function select_arc, arcstruct - - indx = where(arcstruct.qbad EQ 0, ct) - if (ct EQ 0) then begin - splog, 'No good arcs' - return, 0 - endif else if (ct EQ 1) then begin - splog, 'One good arc: ' + arcstruct[indx[0]].name - return, arcstruct[indx[0]] - endif - - ; Select the arcs with the most matched arc lines; trim INDX to that list - nmax = max( arcstruct[indx].nmatch ) - indx = indx[ where(arcstruct[indx].nmatch EQ nmax) ] - - ; Of that list, find the one with the arc with the smallest residuals - ibest = 0 - bestsig = 0 - for ii=0, N_elements(indx)-1 do begin - sig = djsig( *arcstruct[indx[ii]].xdif_tset ) - if (ii EQ 0 OR sig LT bestsig) then begin - ibest = indx[ii] - bestsig = sig - endif - endfor - - return, arcstruct[ibest] -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/skyline_dispersion.pro b/pro/spec2d/skyline_dispersion.pro deleted file mode 100644 index 303857fd6..000000000 --- a/pro/spec2d/skyline_dispersion.pro +++ /dev/null @@ -1,166 +0,0 @@ -;+ -; NAME: -; skyline_dispersion -; -; PURPOSE: -; Measure and apply broadening to dispersion solution from an arc traceset -; to agree with widths of sky lines, which may be broader due to flexure. -; -; CALLING SEQUENCE: -; skydispset = skyline_dispersion(flux, fluxivar, xcen, iskies, dispset) -; -; INPUTS: -; flux - Object extracted flux [NPIX,NTRACE] -; fluxivar - Corresponding inverse variance [NPIX,NTRACE] -; xcen - xpeaks of sky lines [NTRACE,NLINES] -; iskies - Fiber indices corresponding to good sky fibers; -; default to using all fibers if this is not set. -; dispset - Original arcline solution for resolution vs. pixel -; (typically measured in native pixels) -; -; OPTIONAL KEYWORDS: -; -; OUTPUTS: -; skydispset - Modified version of DISPSET with dispersions broadened -; to agree with the sky line widths. -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The pixel dispersion can be broadened, but never made smaller. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_iterstat -; extract_image -; splog -; traceset2xy -; xy2traceset -; -; REVISION HISTORY: -; 20-Feb-2002 Written by S. Burles, MIT (Adapted from fitdispersion) -;- -;------------------------------------------------------------------------------ -function skyline_dispersion, flux, fluxivar, xcen, iskies, dispset - - ndim = size(xcen, /n_dimen) - dims = size(xcen, /dimens) - if (ndim EQ 1) then begin - ntrace = 1 - nline = dims[0] - endif else begin - ntrace = dims[0] - nline = dims[1] - endelse - if (n_elements(iskies) EQ 0) then iskies = lindgen(ntrace) - npix = (size(flux,/dimen))[0] - xmin = 0.0 - xmax = npix - 1.0 - nskies = n_elements(iskies) - splog, 'Number of sky lines = ', nline - splog, 'Number of fibers = ', ntrace - splog, 'Number of sky fibers = ', nskies - - ;---------- - ; Sort sky-line positions, which must be done for EXTRACT_IMAGE. - - isort = sort(xcen[0,*]) - xsky = xcen[*,isort] - ysky = rebin(lindgen(ntrace), ntrace, nline) - - ;---------- - ; Construct a mask that is nonzero only for those pixels within - ; +/- 12 pixels from each sky line center on each fiber. - - smask = make_array(size=size(flux), /byte) - for itrace=0, ntrace-1 do begin - for iline=0, nline-1 do begin - i1 = floor(xsky[itrace,iline] - 12) > 0 - i2 = ceil(xsky[itrace,iline] + 12) < (npix - 1) - if (i1 LT npix-1 AND i2 GT 0) then smask[i1:i2,itrace] = 1 - endfor - endfor - - ;---------- - ; Measure the arc-line dispersions at the location of each sky line - - traceset2xy, dispset, transpose(xsky), arcwidth - sigma = transpose(arcwidth) - - ;---------- - ; Extract sky lines from the [NPIX,NTRACE] image, measuring the - ; wavelength sigmas during extraction for every fiber (sky and non-sky). - ; SKYLINEFLUX = [NFIBER,NLINE] - ; SKYLINEIVAR = [NFIBER,NLINE] - - extract_image, flux, fluxivar*smask, xsky, transpose(arcwidth), $ - skylineflux, skylineivar, ansimage=ansimage, wfixed=[1,1], $ - highrej=10, lowrej=10, relative=1, npoly=5, proftype=1 - - ;---------- - ; Compare the width terms for arcs and sky lines in only the sky fibers - ; GMASK = [NLINE,NFIBER] - ; SKYGMASK = [NLINE,NFIBER] --> Same as above, but nonzero only for skies - ; ARCWIDTH = [NLINE,NFIBER] - ; SKYWIDTH = [NLINE,NFIBER] - - gmask = transpose(skylineivar) GT 0 AND transpose(skylineflux) GT 0 - - skywidth = arcwidth * (1 + ansimage[lindgen(nline)*2+1,*] $ - / (transpose(skylineflux) * gmask + (1-gmask)) ) - quad_diff = skywidth^2 - arcwidth^2 - - skygmask = 0 * gmask - skygmask[*,iskies] = gmask[*,iskies] - - ;---------- - ; Log the differences between the arc and sky-line widths for each line - ; (only using sky fibers). - - for iline=0, nline-1 do begin - igood = where(skygmask[iline,iskies] GT 0, ngood) - if (ngood GT 0) then begin - djs_iterstat, arcwidth[iline,igood], median=med1, sigma=sig1 - djs_iterstat, skywidth[iline,igood], median=med2, sigma=sig2 - djs_iterstat, quad_diff[iline,igood], median=med3, sigma=sig3 - splog, 'Line #', iline, ' median sigma(arc)=', med1, $ - ' sigma(sky)=', med2 - splog, 'Line #', iline, ' sigma^2(add)=', med3, ' +/- ', sig3 - endif - endfor - - ;---------- - ; Measure the median value of the quadrature difference between - ; the sky-line widths and arc-line widths (only using sky fibers). - - igood = where(skygmask GT 0, ngood) - if (ngood GT 0) then begin - djs_iterstat, quad_diff[igood], median=addsig2, sigma=addsig2_err - splog, 'Flexure sigma^2(add) = ', addsig2, ' +/- ', addsig2_err - if (addsig2 LT 0) then $ - splog, 'Warning: Truncating sigma to add in quadrature to zero' - endif else begin - splog, 'Flexure sigma^2(add) = (undefined)' - endelse - - ;---------- - ; Re-fit the modified line-dispersion vectors, using the same - ; number of coefficients as for the input trace set. - - if (keyword_set(addsig2)) then begin - traceset2xy, dispset, xtmp, newsigma - newsigma = sqrt(newsigma^2 + (addsig2 > 0)) - - ncoeff = (size(dispset.coeff, /dimens))[0] - xy2traceset, xtmp, newsigma, skydispset, ncoeff=ncoeff, $ - xmin=dispset.xmin, xmax=dispset.xmax, yfit=yfit - endif else begin - skydispset = dispset - endelse - - return, skydispset -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/skysubtract.pro b/pro/spec2d/skysubtract.pro index 6e8ba8e04..10b772b3b 100644 --- a/pro/spec2d/skysubtract.pro +++ b/pro/spec2d/skysubtract.pro @@ -227,10 +227,9 @@ obs=obs_bkup ; JG debugging ; sxaddpar, bighdr, 'BUNIT', 'electrons-2' -; mwrfits, saved_skyivar, "skyivar.fits", bighdr, /create +; mwrfits_named, saved_skyivar, "skyivar.fits", bighdr, name='saved_skyivar', /create ; sxaddpar, hdrfloat, 'BUNIT', 'electrons-2' -; sxaddpar, hdrfloat, 'EXTNAME', 'MODEL' -; mwrfits, skyivar, "skyivar.fits", hdrfloat +; mwrfits_named, skyivar, "skyivar.fits", hdr = hdrfloat, name='MODEL' ; message,'JG: exit for debug' ;---------- diff --git a/pro/spec2d/smooth_halo.pro b/pro/spec2d/smooth_halo.pro deleted file mode 100644 index 5606bb5bb..000000000 --- a/pro/spec2d/smooth_halo.pro +++ /dev/null @@ -1,89 +0,0 @@ -;+ -; NAME: -; smooth_halo() -; -; PURPOSE: -; Given a model image of the CCD, smooth and return a halo image -; -; CALLING SEQUENCE: -; smooth = smooth_halo ( image, wset ) -; -; INPUTS: -; image - Image to smooth, this should be something like ymodel -; form extract_image -; west - Wavelength solution -; -; OPTIONAL KEYWORDS: -; -; OUTPUTS: -; smooth - Smoothed halo image, same size as image -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; Only does a 1d halo correction, does not spread the halo scattering -; in the dispersion correction. -; Parameters for halo term are hardwired and only qualitatively tested -; on a few frames. -; -; PROCEDURES CALLED: -; traceset2xy -; -; REVISION HISTORY: -; 29-Sep-2000 Written by S. Burles, FNAL -;- -;------------------------------------------------------------------------------ -function halo, image, sigma, exp=exp - - nx = (size(image))[1] - ny = (size(image))[2] - nexp = n_elements(exp) - - ker = gauss_kernel(sigma) - m = floor(n_elements(ker)/2.) - - imaget = [fltarr(m,nx), transpose(image), fltarr(m,nx)] - smooth = transpose((convol(imaget, ker))[m:m+ny-1,*]) - - - for i=0,ny-1 do begin - imaget = [fltarr(m), smooth[*,i], fltarr(m)] - smooth[*,i] = (convol(imaget, ker))[m:m+nx-1] - - if keyword_set(exp) then begin - kere = gauss_kernel(exp[(i < (nexp - 1))], exp=exp) - me = floor(n_elements(kere)/2.) - imaget = [fltarr(me), smooth[*,i], fltarr(me)] - smooth[*,i] = (convol(imaget, kere))[me:me+nx-1] - endif - - endfor - - return, smooth -end - -function smooth_halo, image, wset - - nx = (size(image))[1] - ny = (size(image))[2] - traceset2xy, wset, xx, lam - -; -; convert to microns -; - lam = 10^(djs_median(lam,2)-4) - - ; smooth = 0.03 * halo(image, 10.0) - - exp = 50.0 * lam^2 - correction = exp(9.0*lam - 9.7) - smooth2 = halo(image, 4.0, exp=exp) - - ; return, smooth + smooth2 * (correction ## replicate(1,ny)) - return, smooth2 * (correction ## replicate(1,ny)) -end - diff --git a/pro/spec2d/smooth_halo2d.pro b/pro/spec2d/smooth_halo2d.pro deleted file mode 100644 index cc6522f48..000000000 --- a/pro/spec2d/smooth_halo2d.pro +++ /dev/null @@ -1,83 +0,0 @@ -;+ -; NAME: -; smooth_halo2d() -; -; PURPOSE: -; Given a model image of the CCD, smooth and return a halo image -; -; CALLING SEQUENCE: -; smooth = smooth_halo2d ( image, wset, [kernel_size= ] ) -; -; INPUTS: -; image - Image to smooth, this should be something like ymodel -; form extract_image -; wset - Wavelength solution -; -; OPTIONAL KEYWORDS: -; kernel_size - size of box relative to r0, default = 3. -; a value of 5 or higher may be safer. -; -; OUTPUTS: -; smooth - Smoothed halo image, same size as image -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; 2d version with surface brightness function given by J Gunn -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; traceset2xy -; -; REVISION HISTORY: -; 29-Sep-2000 Original Written by S. Burles, FNAL -; 3-Feb-2005 Finally attempted 2-d convolution, not too slow... -;- -;------------------------------------------------------------------------------ -function smooth_halo2d, image, wset, kernel_size=kernel_size - - if NOT keyword_set(kernel_size) then kernel_size=3. - - nx = (size(image))[1] - ny = (size(image))[2] - traceset2xy, wset, xx, lam - -; -; convert to microns and just use median wavelength per row -; - lam = 10^(djs_median(lam,2)-4) - - - r0 = 50.0 * lam^2 - f = exp(11.51*(lam - 1.05)) - - smooth_model = image * 0. - - for irow = 0,ny-1 do begin - nr = long(kernel_size * r0[irow]) + 1 - qkernel = fltarr(nr, nr) - x = findgen(nr) # replicate(1,nr) - r = sqrt(x^2 + transpose(x^2)) - - qBs = f[irow] / (1.0 - f[irow]) / 2.0 / !Pi/ r0[irow] * exp(-r/r0[irow])/ (r > 1) - - Bs = transpose([reverse(qbs[1:*,*]) , qbs]) - Bs = [reverse(Bs[1:*,*]), Bs] - - inc = lindgen(2*nr-1) + irow - (nr-1) - good = where(inc GE 0 AND inc LT ny, ng) - for ic =0,ng-1 do $ - smooth_model[*,inc[good[ic]]] = smooth_model[*,inc[good[ic]]] + $ - convol(image[*,irow], bs[*,good[ic]], /edge_trunc) - - ; Schlegel counter of step number... -; print, format='("Step ",i5," of ",i5,a1,$)', $ -; irow, ny, string(13b) - - endfor - return, smooth_model -end - diff --git a/pro/spec2d/spallflat.pro b/pro/spec2d/spallflat.pro deleted file mode 100644 index 9a5225179..000000000 --- a/pro/spec2d/spallflat.pro +++ /dev/null @@ -1,77 +0,0 @@ -;+ -; NAME: -; spallflat -; -; PURPOSE: -; Calling script for SPFLATTEN that generates pixel flats as specified in -; a plan file. -; -; CALLING SEQUENCE: -; spallflat, planfile=planfile -; -; INPUTS: -; -; OPTIONAL INPUTS: -; planfile - Name of output plan file; default to 'spPlanFlat.par' -; -; OUTPUT: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; spflatten -; yanny_par() -; yanny_read -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 02-Nov-1999 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ - -pro spallflat, planfile=planfile - - if (NOT keyword_set(planfile)) then planfile = 'spPlanFlat.par' - - yanny_read, planfile, pdata, hdr=hdr - - ; Find the ONEEXP structure - for i=0, N_elements(pdata)-1 do $ - if (tag_names(*pdata[i], /structure_name) EQ 'ONEEXP') then $ - allseq = *pdata[i] - if (N_elements(allseq) EQ 0) then $ - message, 'No ONEEXP structures in plan file ' + planfile - - ; Find keywords from the header - inputDir = yanny_par(hdr, 'inputDir') - flatDir = yanny_par(hdr, 'flatDir') - mjd = long(yanny_par(hdr, 'MJD')) - - camnames = ['b1', 'r2', 'b2', 'r1'] - camnums = ['01', '02', '03', '04'] - ncam = N_elements(camnames) - - for icam=0, ncam-1 do begin - j = where(allseq[*].flavor EQ 'flat' $ - AND allseq[*].name[icam] NE 'UNKNOWN', ct) - if (ct NE 0) then begin - flatname = allseq[j].name[icam] - outfile = 'pixflat-' + string(mjd,format='(i5.5)') $ - + '-' + camnums[icam] + '.fits' - - print, '' - print, 'Generating pixel flat ' + flatDir+outfile - spflatten, flatname, outfile=outfile, $ - indir=inputDir, outdir=flatDir, tmpdir=flatDir - - endif - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spbiasave.pro b/pro/spec2d/spbiasave.pro deleted file mode 100644 index bfb1a99d0..000000000 --- a/pro/spec2d/spbiasave.pro +++ /dev/null @@ -1,157 +0,0 @@ -;+ -; NAME: -; spbiasave -; -; PURPOSE: -; Average together a set (or all!) 2D pixel biases. -; -; CALLING SEQUENCE: -; spbiasave, [ mjd=, mjstart=, mjend=, mjout=, indir=, outdir=, docam= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd - Valid MJD's for input pixel biases. -; mjstart - Valid starting MJD for input pixel biases. -; mjend - Valid ending MJD for input pixel biases. -; mjout - MJD for name of output average pixel bias; default to 0, -; resulting in file names like 'pixbiasave-00000-b1.fits'. -; indir - Input directory; default to current directory. -; outdir - Output directory; default to same as INDIR. -; docam - Camera names; default to all cameras: ['b1', 'b2', 'r1', 'r2'] -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Some sigma-clipping is done before combining each pixel, clipping -; at 2-sigma if more than 7 frames, and a lower sigma for fewer frames. -; -; The output file has two HDU's, the first being the average bias, -; the second being the standard deviation at each pixel. -; --> Comment this out for the time being!!??? -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_filepath() -; djs_iterstat -; fileandpath() -; headfits() -; mrdfits() -; splog -; sxaddpar -; sxpar() -; writefits -; -; REVISION HISTORY: -; 26-Feb-2002 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro spbiasave, mjd=mjd, mjstart=mjstart, mjend=mjend, mjout=mjout, $ - indir=indir, outdir=outdir, docam=docam - - if (NOT keyword_set(indir)) then indir = '' - if (NOT keyword_set(outdir)) then outdir = indir - if (NOT keyword_set(mjout)) then mjout = 0L - - if (keyword_set(docam)) then camnames = docam $ - else camnames = ['b1', 'b2', 'r1', 'r2'] - ncam = N_elements(camnames) - - for icam=0, ncam-1 do begin - - ; Find all input pixel biases for this camera that match the - ; specified input MJD's. - files = findfile(djs_filepath('pixbias-*-'+camnames[icam]+'.fits', $ - root_dir=indir), count=nfile) - if (nfile GT 0) then begin - thismjd = long(strmid(fileandpath(files),8,5)) - qkeep = bytarr(nfile) + 1 - if (keyword_set(mjstart)) then $ - qkeep = qkeep AND (thismjd GE mjstart) - if (keyword_set(mjend)) then $ - qkeep = qkeep AND (thismjd LE mjend) - if (keyword_set(mjd)) then $ - for ifile=0, nfile-1 do $ - qkeep[ifile] = qkeep[ifile] $ - AND (total(thismjd[ifile] EQ long(mjd)) NE 0) - ikeep = where(qkeep, nfile) - if (nfile GT 0) then files = files[ikeep] - endif - - splog, 'Found ' + string(nfile) + ' files for camera ' + camnames[icam] - - if (nfile GT 0) then begin - ;---------- - ; Read all the images into a single array - - hdr = headfits(files[0]) - naxis1 = sxpar(hdr,'NAXIS1') - naxis2 = sxpar(hdr,'NAXIS2') - npix = naxis1 * naxis2 - pixarr = fltarr(naxis1, naxis2, nfile) - for ifile=0, nfile-1 do $ - pixarr[*,*,ifile] = mrdfits(files[ifile]) - - ;---------- - ; Generate a map of the sigma at each pixel (doing some rejection). - ; This is a horrible loop over each pixel, but shouldn't take more - ; than a few minutes. - - if (nfile LE 2) then sigrej = 1.0 $ ; Irrelevant for only 1 or 2 biases - else if (nfile EQ 3) then sigrej = 1.1 $ - else if (nfile EQ 4) then sigrej = 1.3 $ - else if (nfile EQ 5) then sigrej = 1.6 $ - else if (nfile EQ 6) then sigrej = 1.9 $ - else sigrej = 2.0 - maxiter = 2 - - aveimg = fltarr(naxis1, naxis2) - sigimg = fltarr(naxis1, naxis2) - for ipix=0L, npix-1 do begin - vals = pixarr[lindgen(nfile)*npix+ipix] - djs_iterstat, vals, $ - sigrej=sigrej, maxiter=maxiter, sigma=sigma1, mean=mean1 - aveimg[ipix] = mean1 - sigimg[ipix] = sigma1 - endfor - - ;---------- - ; Reject pixels in the average bias where the dispersion between - ; the input biases was large - -; maskimg = sigimg LT 0.05 -; junk = where(maskimg EQ 0, nbad) -; splog, 'Reject ', nbad, ' pixels' -; -; aveimg = aveimg * maskimg - -pixarr = 0 ; Clear memory - - ;---------- - ; Append comments to the header - - for ifile=0, nfile-1 do $ - sxaddpar, hdr, 'COMMENT', 'Include file ' + fileandpath(files[ifile]) - - ;---------- - ; Write the output file - - outfile = djs_filepath( string(mjout, camnames[icam], $ - format='("pixbiasave-",i5.5,"-",a2,".fits")'), root_dir=outdir) - - splog, 'Writing file ' + outfile - writefits, outfile, aveimg, hdr -; mwrfits, sigimg, outfile - - endif - - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spbiasgen.pro b/pro/spec2d/spbiasgen.pro deleted file mode 100644 index 609eb2e17..000000000 --- a/pro/spec2d/spbiasgen.pro +++ /dev/null @@ -1,251 +0,0 @@ -;+ -; NAME: -; spbiasgen -; -; PURPOSE: -; Routine to generate mean biases for a night. -; -; CALLING SEQUENCE: -; spbiasgen, [ mjd=, expnum=, expstart=, expend=, timesep=, $ -; indir=, outdir=, docam=, sigrej=, maxiter=, /noproc ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd - If INDIR not set, then look for files in $BOSS_SPECTRO_DATA/MJD. -; expnum - If set, then use these exposure numbers -; expstart - If set, then only use exposure numbers >= EXPSTART -; expend - If set, then only use exposure numbers >= EXPEND -; timesep - Discard any bias that isn't within TIMESEP after another bias; -; default to 300 sec. The time is obtained from TAI-BEG in the -; FITS header. Note that this always discards the first bias in -; any sequence. -; indir - Look for input files in this directory; default to current -; directory if neither MJD or INDIR are set. -; outdir - Output directory; default to same as INDIR. -; docam - Camera names; default to all cameras: ['b1', 'b2', 'r1', 'r2'] -; sigrej - Sigma rejection level; default to 1, 1, 1.1, 1.3, 1.6 or 1.9 -; for 1,2,3,4,5 or 6 flats. For more then 6 flats, default -; to 2.0. -; maxiter - Number of rejection iterations; default to 3. -; noproc - If set, then use MRDFITS to process images, otherwise use -; SDSSPROC and remove the overscan regions -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine looks for biases in a given night that are logged as such. -; Discard the first bias in any sequence, and generate a mean bias from -; all the others for each camera. There must be at least 3 frames. -; A sigma-clipped mean is computed for each pixel. -; -; Trigger a failure if there are more than 25 biases for a given camera, -; since that is probably too many to load into memory. -; -; Four FITS files are produced, one for each camera: -; pixbias-MJD-CAMERA.fits -; where MJD is the 5-digit modified Julian date, and CAMERA -; is 'b1', 'b2', 'r1', and 'r2'. -; -; The header contains the number of files used in each camera (NEXP), -; and an identifier for each of those files (EXPID*). Those identifiers -; contain the camera name, MJD, and exposure number, all dash-separated. -; -; EXAMPLES: -; The following SDSS-I nights probably contain a bias sequence: -; 51686 51781 51809 51852 51893 51950 51978 52010 52038 52069 -; 52245 52276 52305 52333 52363 52392 52423 52454 52514 52551 -; 52573 52602 52633 52655 52689 52718 52747 (<- should declare some bad!) -; 52808 52868 52899 52956 52983 53014 53044 53073 53100 53132 -; 53162 53220 53257 ...??? -; 53610 53633 -; (Those are the nights with a pixel flat sequence.) There are other -; nights with many biases that may be useful, but may have been done -; for other testing purposes: -; 52084 52085 52121 52229 52294 52550 52572 52601 52629 -; 52657 52660 52661 52717 52807 52863 52864 52865 52926 -; Generate one of these sets of biases with: -; spbiasgen, mjd=51893, expstart=7607, expend=7616, outdir='.' -; -; For BOSS: -; spbiasgen,mjd=55268,expstart=111620,expend=111645,outdir='.' -; spbiasgen,mjd=55271,expstart=111881,expend=111905,outdir='.' -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_avsigclip() -; djs_filepath() -; fileandpath() -; get_tai -; sdsshead() -; sdssproc -; splog -; sxaddpar -; sxpar() -; writefits -; -; INTERNAL SUPPORT ROUTINES: -; spbiasgen1 -; -; REVISION HISTORY: -; 30-Aug-2001 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro spbiasgen1, files, outfile=outfile, outdir=outdir, $ - sigrej=sigrej, maxiter=maxiter, noproc=noproc - - nfile = n_elements(files) - - if (NOT keyword_set(sigrej)) then begin - if (nfile LE 2) then sigrej = 1.0 $ ; Irrelevant for only 1 or 2 files - else if (nfile EQ 3) then sigrej = 1.1 $ - else if (nfile EQ 4) then sigrej = 1.3 $ - else if (nfile EQ 5) then sigrej = 1.6 $ - else if (nfile EQ 6) then sigrej = 1.9 $ - else sigrej = 2.0 - endif - if (NOT keyword_set(maxiter)) then maxiter = 3 - - for ifile=0, nfile-1 do begin - splog, 'Reading file #', ifile+1, ' of ', nfile - if (keyword_set(noproc)) then begin - thisimg = mrdfits(files[ifile], 0, hdr, /fscale) - endif else begin - sdssproc, files[ifile], thisimg, thisivar, hdr=hdr, $ - bcfile='opBC-empty.par' - endelse - if (ifile EQ 0) then begin - hdr0 = hdr - imgarr = make_array(dimension=[size(thisimg,/dimens),nfile], /float) - inmask = make_array(dimension=[size(thisimg,/dimens),nfile], /byte) - sxaddpar, hdr0, 'NEXP', nfile, 'Number of exposures in this file', $ - before='EXPTIME' - endif - imgarr[*,*,ifile] = thisimg - if (keyword_set(thisivar)) then $ - inmask[*,*,ifile] = thisivar LE 0 - - sxaddpar, hdr0, string(ifile+1,format='("EXPID",i3.3)'), $ - string( sxpar(hdr,'CAMERAS'), sxpar(hdr,'EXPOSURE'), $ - format='(a2,"-",i8.8)'), $ - 'ID string for exposure ' + strtrim(ifile+1,2), before='EXPTIME' - endfor - - mnimg = djs_avsigclip(imgarr, sigrej=sigrej, maxiter=maxiter, $ - inmask=inmask) - - writefits, djs_filepath(outfile, root_dir=outdir), mnimg, hdr0 - - return -end -;------------------------------------------------------------------------------ -pro spbiasgen, mjd=mjd, expnum=expnum, expstart=expstart, expend=expend, $ - timesep=timesep, indir=indir, outdir=outdir, docam=docam, noproc=noproc - - if (NOT keyword_set(timesep)) then timesep = 300 - if (keyword_set(docam)) then camnames = docam $ - else camnames = ['b1', 'b2', 'r1', 'r2'] - ncam = N_elements(camnames) - - ;---------- - ; Find all file names in the directory corresponding to this MJD - - if (keyword_set(mjd) AND NOT keyword_set(indir)) then begin - indir = filepath('', root_dir=getenv('BOSS_SPECTRO_DATA'), $ - subdirectory=string(mjd,format='(i5.5)')) - endif - if (keyword_set(indir) AND NOT keyword_set(outdir)) then $ - outdir = indir - - files = findfile(djs_filepath('sdR-*.fit*',root_dir=indir), count=nfile) - if (nfile EQ 0) then begin - splog, 'No files found.' - return - endif - - ;---------- - ; Trim to exposure numbers specified by EXPNUM,EXPSTART,EXPEND - - if (keyword_set(expnum) OR keyword_set(expstart) OR keyword_set(expend)) $ - then begin - qkeep = bytarr(nfile) + 1b - exposure = long( strmid(fileandpath(files),7,8) ) - if (keyword_set(expnum)) then begin - for ifile=0, nfile-1 do $ - qkeep[ifile] = (total(exposure[ifile] EQ long(expnum)) NE 0) - endif - if (keyword_set(expstart)) then $ - qkeep = qkeep AND (exposure GE long(expstart)) - if (keyword_set(expend)) then $ - qkeep = qkeep AND (exposure LE long(expend)) - ikeep = where(qkeep, nfile) - if (nfile EQ 0) then begin - splog, 'No files found matching EXPNUM,EXPSTART,EXPEND.' - return - endif - splog, 'Trimming to ', nfile, ' files specified by EXPNUM,EXPSTART,EXPEND.' - files = files[ikeep] - endif - - ;---------- - ; Parse the FITS headers - - cameras = strarr(nfile) - flavor = strarr(nfile) - mjdarr = lonarr(nfile) - exposure = lonarr(nfile) - taitime = dblarr(nfile) - - print, 'Reading FITS headers...', format='(a,$)' - for ifile=0, nfile-1 do begin - hdr = sdsshead(files[ifile]) - cameras[ifile] = strtrim(sxpar(hdr, 'CAMERAS'),2) - flavor[ifile] = strtrim(sxpar(hdr, 'FLAVOR'),2) - mjdarr[ifile] = sxpar(hdr, 'MJD') - exposure[ifile] = sxpar(hdr, 'EXPOSURE') - get_tai, hdr, tai_beg, tai_mid, tai_end - taitime[ifile] = tai_beg - print, '.', format='(a,$)' - endfor - print - - for icam=0, ncam-1 do begin - ; Select biases for this camera - ibias = where(cameras EQ camnames[icam] $ - AND (strtrim(flavor,2) EQ 'bias' OR strtrim(flavor,2) EQ 'dark'), nbias) - - ; Discard any bias that isn't within TIMESEP seconds after - ; another bias (this always discards the first one in any sequence). - jbias = ibias ; This is a copy of those indices, putting -1 for bad ones - for i=0, nbias-1 do begin - junk = where(taitime[ibias[i]] GE taitime[ibias] $ - AND taitime[ibias[i]] LE taitime[ibias] + timesep, nmatch) - if (nmatch LE 1) then jbias[i] = -1 ; One match is the frame itself. - endfor - j = where(jbias NE -1, nbias) - if (nbias GT 25) then begin - splog, 'Too many biases (' + string(nbias) + ') to load into memory' - splog, 'Skipping pixbias generation for camera ' + camnames[icam] - endif else if (nbias GE 3) then begin - jbias = jbias[j] - - pixbiasname = 'pixbias-' + string(mjdarr[jbias[0]],format='(i5.5)') $ - + '-' + camnames[icam] + '.fits' - splog, 'Generating pixel bias ' + pixbiasname - splog, 'Output directory ' + outdir - spbiasgen1, files[jbias], outfile=pixbiasname, outdir=outdir, $ - sigrej=sigrej, maxiter=maxiter, noproc=noproc - - endif else begin - splog, 'Expected at least 3 biases (not including 1st), got ' $ - + strtrim(string(nbias),2) - splog, 'Skipping pixbias generation for camera ' + camnames[icam] - endelse - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spbuild_traceflat.pro b/pro/spec2d/spbuild_traceflat.pro new file mode 100644 index 000000000..3db350b6c --- /dev/null +++ b/pro/spec2d/spbuild_traceflat.pro @@ -0,0 +1,87 @@ + +pro spbuild_traceflat, plan2d=plan2d, mjd=mjd, obs=obs, flat=flat, arc=arc, debug=debug + if not keyword_set(plan2d) then plan2d = ['SOS'] + print,plan2d + foreach thisplan, plan2d do begin + if not strmatch(plan2d, 'SOS', /fold_case) then begin + allseq = yanny_readone(thisplan, 'SPEXP', hdr=hdr, /anon) + print, allseq + obs = yanny_par(hdr, 'OBS') + mjd = yanny_par(hdr, 'MJD') + if mjd lt 59146 then begin + legacy = 1 + plates = 0 + endif else begin + if mjd lt 59564 then begin + legacy = 0 + plates = 1 + endif else begin + legacy = 0 + plates = 0 + endelse + endelse + + if strmatch(obs,'LCO',/fold_Case) then rawdir=getenv('BOSS_SPECTRO_DATA_S') $ + else rawdir=getenv('BOSS_SPECTRO_DATA_N') + + if keyword_set(legacy) then ccds=['b1','b2','r1','r2'] else begin + if strmatch(obs,'LCO',/fold_Case) then ccds=['b2','r2'] else ccds=['b1','r1'] + endelse + logfile_base = repstr(repstr(plan2d, 'spPlan2d', 'spTrace'),'.par','') + logfile = logfile_base+'.log' + psfile = logfile_base+'.ps' + + stime0 = systime(1) + cpbackup, logfile + splog, filename=logfile + splog, 'Log file '+ logfile + ' opened ' + systime() + cpbackup, psfile + set_plot, 'ps' + device, filename=psfile, /color + splog, 'Plot file ' + psfile + endif else begin + rawdir = '/data/spectro' + ccds = ['SOS'] + endelse + splog, 'CCDs', ccds + + rawdir = filepath(strtrim(mjd,2), root_dir=rawdir) + config_dir = filepath('', root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='examples') + ;ecalibfile = findopfile('opECalib*par', mjd, config_dir, /abort_notfound, silent=silent) + + fieldid = long(yanny_par(hdr, 'fieldname')) + foreach ccd, ccds, icam do begin + if not strmatch(plan2d, 'SOS', /fold_case) then begin + j = where(allseq.flavor EQ 'TRACEFLAT' $ + AND allseq.name[icam] NE 'UNKNOWN', nflat ) + flatname = allseq[j].name[icam] + j = where(allseq.flavor EQ 'TRACEARC' $ + AND allseq.name[icam] NE 'UNKNOWN', nflat ) + arcname = allseq[j].name[icam] + flatinfoname = 'spTraceFlat-'+ccd+'-' + arcinfoname = 'spTraceArc-'+ccd+'-' + endif else begin + flatinfoname = repstr(repstr( flat, 'sdr', 'spTraceFlat'), '.fit', '.fits') + arcinfoname = repstr(repstr( arc, 'sdr', 'spTraceArc'), '.fit', '.fits') + endelse + + print, rawdir + if FILE_TEST(filepath(flatname+'.gz', root_dir=rawdir)) then begin + junk = mrdfits(filepath(flatname+'.gz', root_dir=rawdir),0, framehdr, /silent) + endif else junk = mrdfits(filepath(flatname, root_dir=rawdir),0, framehdr, /silent) + cartid=sxpar(framehdr, 'cartid') + plottitle = repstr(flatinfoname,'.fits','.ps') + + plottitle = ' FIELDID='+strtrim(yanny_par(hdr, 'fieldname'),2) +' '+ ' MJD='+strtrim(mjd,2)+' ' + spcalib, flatname, arcname, cartid=cartid, indir=rawdir, ecalibfile=ecalibfile, $ + plottitle=plottitle, flatinfoname=flatinfoname, arcinfoname=arcinfoname,$ + plates = plates, legacy=legacy, timesep=0, saveraw = debug, debug=debug + + endforeach + splog, 'Total time for run_spcalib = ', systime(1)-stime0, ' seconds', format='(a,f6.0,a)' + splog, 'Successful completion of run_spcalib at ' + systime() + splog, /close + device, /close + set_plot, 'x' + endforeach +end diff --git a/pro/spec2d/spcalib.pro b/pro/spec2d/spcalib.pro index 372eaca12..bd1d025fd 100644 --- a/pro/spec2d/spcalib.pro +++ b/pro/spec2d/spcalib.pro @@ -109,6 +109,7 @@ function create_arcstruct, narc 'FIBERMASK', ptr_new(), $ 'RESLSET', ptr_new(), $ 'MEDRESOL', fltarr(4), $ + 'TRACEFLAT', 0,$ 'HDR', ptr_new()) arcstruct = replicate(ftemp, narc) @@ -135,6 +136,7 @@ function create_flatstruct, nflat 'NBRIGHT', 0, $ 'YMODEL', ptr_new(),$ 'SCATTER', ptr_new(),$ + 'FIELDID', 0,$ 'HDR', ptr_new()) flatstruct = replicate(ftemp, nflat) @@ -152,7 +154,8 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ writeflatmodel=writeflatmodel, writearcmodel=writearcmodel, $ bbspec=bbspec,plates=plates,legacy=legacy, noreject=noreject, $ nbundles=nbundles, bundlefibers=bundlefibers, saveraw=saveraw, $ - noarc=noarc, nowrite=nowrite + noarc=noarc, nowrite=nowrite, traceflat=traceflat, $ + force_arc2trace=force_arc2trace, outdir=outdir if (NOT keyword_set(indir)) then indir = '.' if (NOT isa(timesep)) then timesep = 50400 @@ -258,6 +261,7 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ flatstruct[iflat].tset = ptr_new(tset) flatstruct[iflat].xsol = ptr_new(xsol) flatstruct[iflat].fibermask = ptr_new(tmp_fibmask) + flatstruct[iflat].fieldid = Long(sxpar(flathdr, 'FIELDID')) flatstruct[iflat].hdr = ptr_new(flathdr) endif else begin xsol = 0 @@ -343,6 +347,18 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ arcstruct = create_arcstruct(narc) for iarc=0, narc-1 do begin + ccd = strtrim(sxpar(flathdr, 'CAMERAS'),2) + arcid = FILE_BASENAME(arcname[iarc]) + arcid = (strsplit((strsplit(arcid,'-',/extract))[2],'.',/extract))[0] + traceflat = filepath('spTraceTab-'+ccd+'-'+arcid+'.fits',root_dir='.',$ + subdirectory=['..','trace',strtrim(sxpar(flathdr, 'MJD'),2)]) + traceflat = file_search(traceflat, /fold_case, count=ct) + if ct gt 0 then begin + traceflat = traceflat[0] + traceflat_xsol = ptr_new(mrdfits(traceflat,0)) + endif else traceflat = 0 + + noarc=0 splog, iarc+1, narc, format='("Extracting arc #",I3," of",I3)' @@ -395,7 +411,20 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ endelse if (NOT qbadarc) then begin - xsol = *(flatstruct[iflat].xsol) + if Long(sxpar(archdr, 'FIELDID')) eq flatstruct[iflat].fieldid then begin + if not keyword_set(force_arc2trace) then begin + traceflat = 0 + endif else begin + if keyword_set(traceflat) then $ + splog, 'Matching Flat and spTraceTab exists, overriding Flat with spTraceTab' + endelse + endif + if keyword_set(traceflat) then begin + splog, 'Using adjusted xsol from ',traceflat + xsol = *(traceflat_xsol) + endif else begin + xsol = *(flatstruct[iflat].xsol) + endelse widthset = *(flatstruct[iflat].widthset) tmp_fibmask = *(flatstruct[iflat].fibermask) proftype = flatstruct[iflat].proftype @@ -427,7 +456,16 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ lowrej = 100 ; JG wfixed = [1,0] ; ASB: Don't fit for width terms. - + ;;;;;;; debug;;;;;;;;; + print, '-------------------------' + print, nbundles + print, '-------------------------' + print, bundlefibers + print, '-------------------------' + print, max(xcor-xsol), min(xcor-xsol) + print, max(sigma2), min(sigma2), median(sigma2) + print, '-------------------------' + splog, 'Extracting arc' pixelmask=lonarr(size(flux,/dimens)) ; JG : add a mask extract_bundle_image, arcimg, arcivar, arcrdnoise, xcor, sigma2, $ @@ -442,20 +480,18 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ flatextfile = string(format='(a,i8.8,a)',flatinfoname, sxpar(flathdr, 'EXPOSURE'), '.fits') arcextfile = repstr(repstr(arcname[iarc], 'sdR', 'spArcFlux'),'.fit','.fits') - mwrfits, flux, arcextfile, /create - mwrfits, fluxivar, arcextfile + mwrfits_named, flux, arcextfile, name='FLUX',/create + mwrfits_named, fluxivar, arcextfile, name='IVAR' endif ;JG debug ;outname="arc.fits" ;sxaddpar, bighdr, 'BUNIT', 'electrons/row' - ;mwrfits, flux, outname, bighdr, /create + ;mwrfits_named, flux, outname, hdr=bighdr, name='FLUX','/create ;sxaddpar, hdrfloat, 'BUNIT', 'electrons/row' - ;sxaddpar, hdrfloat, 'EXTNAME', 'IVAR', ' Inverse variance' - ;mwrfits, fluxivar, outname, hdrfloat - ;sxaddpar, hdrfloat, 'EXTNAME', 'MASK', ' Inverse variance' - ;mwrfits, pixelmask, outname, hdrfloat + ;mwrfits_named, fluxivar, outname, hdr=hdrfloat, name='IVAR', desc=' Inverse variance' + ;mwrfits_named, pixelmask, outname, hdr=hdrfloat, name='MASK', desc=' MASK' ;STOP @@ -538,7 +574,8 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ arcstruct[iarc].fibermask = ptr_new(tmp_fibmask) arcstruct[iarc].medwidth = wsigarr arcstruct[iarc].medresol = sresarr - arcstruct[iarc].reslset = ptr_new(reslset) + arcstruct[iarc].traceflat = traceflat + arcstruct[iarc].reslset = ptr_new(reslset) ;------------------------------------------------------------------ ; Write information on arc lamp processing @@ -606,6 +643,7 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ widthset = *(flatstruct[iflat].widthset) wset = *(arcstruct[iarc].wset) xsol = *(flatstruct[iflat].xsol) + traceflat = arcstruct[iarc].traceflat tmp_fibmask = *(flatstruct[iflat].fibermask) proftype = flatstruct[iflat].proftype @@ -648,9 +686,9 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ flatextfile = string(format='(a,i8.8,a)',flatinfoname, sxpar(flathdr, 'EXPOSURE'), '.fits') flatextfile = repstr(flatextfile, 'spFlat', 'spFlatFlux') - mwrfits, flux, flatextfile, flathdr, /create - mwrfits, fluxivar, flatextfile - endif + mwrfits_named, flux, flatextfile, hdr=flathdr, name='FLUX' /create + mwrfits_named, fluxivar, flatextfile, name='IVAR' + endif if (keyword_set(bbspec)) then begin basisfile = 'spBasisPSF-*-'+strmid(arcstruct[iarc].name,4,11)+'.fits' @@ -667,8 +705,8 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ * (fluxivar[0:dims[0]-1,0:dims[1]-1] GT 0) ; <- Retain old rejection outfile = 'ymodel-'+strmid(flatstruct[iflat].name,4,11)+'.fits' - mwrfits, bb_ymodel, outfile, /create - mwrfits, ymodel, outfile + mwrfits_named, bb_ymodel, outfile, name='BB_YMODEL', /create + mwrfits_named, ymodel, outfile, name='YMODEL' endif ;x splog, 'First extraction chi^2 ', minmax(fchisq) @@ -723,12 +761,16 @@ pro spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ if (keyword_set(flatinfoname)) then begin write_spflat, flatinfoname, iflat, flatstruct, flathdr, $ - arcname, nbright, ymodel, scatter, $ + arcname, nbright, ymodel, scatter, outdir=outdir,$ nowrite=nowrite, writeflatmodel=writeflatmodel ymodel = 0 endif + if keyword_set(traceflat) then begin + flatstruct[iflat].xsol = traceflat_xsol + endif + obj_destroy,configuration endif endfor diff --git a/pro/spec2d/spcoadd_v5.pro b/pro/spec2d/spcoadd_v5.pro deleted file mode 100644 index db16f4ce4..000000000 --- a/pro/spec2d/spcoadd_v5.pro +++ /dev/null @@ -1,824 +0,0 @@ -;+ -; NAME: -; spcoadd_v5 -; -; PURPOSE: -; Combine several reduced frames of the same objects -; -; CALLING SEQUENCE: -; spcoadd_v5, spframes, outputname, $ -; [ mjd=, binsz=, zeropoint=, nord=, wavemin=, $ -; bkptbin=, window=, maxsep=, adderr=, plotsnfile=, $ -; combinedir=, bestexpnum= ] -; -; INPUTS: -; spframes - Name(s) of spFrame files (written by SPREDUCE) -; outputname - Output file name -; plotsnfile - Name of output plot file -; -; OPTIONAL KEYWORDS: -; mjd - The MJD to put in the output header -; binsz - Bin size (in log-10 wavelength) in output spectra; -; default to 1d-4, which corresponds to 69.02977415 km/s. -; zeropoint - Log10(lambda) zero-point of the output spectra; -; the output wavelength bins are chosen such that -; one bin falls exactly on this value; -; default to 3.5D, which corresponds to 3162.27766 Ang. -; nord - Order for spline fit; default to 3 (cubic spline). -; wavemin - Log-10 wavelength of first pixel in output spectra; -; default to the nearest bin to the smallest wavelength -; of the input spectra. -; bkptbin - Parameter for COMBINE1FIBER -; window - Window size for apodizing the errors of the spectrum -; from each individual frame; -; default to 100 pixels apodization on each end of the -; spectra. -; maxsep - Parameter for COMBINE1FIBER -; adderr - Additional error to add to the formal errors, as a -; fraction of the flux. -; combinedir - Optional output directory -; bestexpnum - Exposure number for best exposure, to which all other -; exposures are tied; this is only used in this procedure -; for logging in the FITS header -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; All input files must have the same number of pixels per spectrum, -; i.e. 2048 wavelength samplings, although those wavelengths can -; be different. -; -; Flux-correction files are also read in, where they are assumed to -; have the name spFluxcorr-EEEEEEEE-S.fits, where EEEEEEEE is the exposure -; number and S is the spectrograph ID (1 or 2). -; -; EXAMPLES: -; -; BUGS: -; This routine used to combine data from multiple (different) plug maps. -; Objects are matched based upon their positions agreeing to 2 arc sec. -; This is *not* true any longer, especially when applying the -; flux-distortion solutions. -; -; PROCEDURES CALLED: -; combine1fiber -; correct_dlam -; divideflat -; djs_diff_angle() -; fcalib_default() -; fiber_rollcall -; flux_distortion() -; idlspec2d_version() -; mkhdr -; mrdfits() -; mwrfits -; pixelmask_bits() -; platesn -; splog -; spframe_read -; sxaddpar -; sxdelpar -; sxpar() -; traceset2xy -; -; INTERNAL SUPPORT PROCEDURES: -; makelabel() -; add_iraf_keywords -; -; REVISION HISTORY: -; 02-Jan-2000 Written by D. Schlegel; modified from COMBINE2DOUT -;- -;------------------------------------------------------------------------------ -function makelabel, hdr - - camera = strtrim(sxpar(hdr, 'CAMERAS'),2) - expos = strtrim(string(sxpar(hdr, 'EXPOSURE')),2) - flat = strmid(sxpar(hdr, 'FLATFILE'),7,8) - arc = strmid(sxpar(hdr, 'ARCFILE'),7,8) - - label = string(camera, expos, flat, arc, $ - format='(a2,"-",i8.8,"-",a8,"-",a8)') - - return, label -end - -;------------------------------------------------------------------------------ -pro add_iraf_keywords, hdr, wavemin, binsz - - sxaddpar, hdr, 'WAT0_001', 'system=linear' - sxaddpar, hdr, 'WAT1_001', $ - 'wtype=linear label=Wavelength units=Angstroms' - sxaddpar, hdr, 'CRVAL1', wavemin, $ - ' Central wavelength (log10) of first pixel' - sxaddpar, hdr, 'CD1_1', binsz, ' Log10 dispersion per pixel' - sxaddpar, hdr, 'CRPIX1', 1, ' Starting pixel (1-indexed)' - sxaddpar, hdr, 'CTYPE1', 'LINEAR' - sxaddpar, hdr, 'DC-FLAG', 1, ' Log-linear flag' - - return -end - -;------------------------------------------------------------------------------ -pro spcoadd_v5, spframes, outputname, $ - mjd=mjd, binsz=binsz, zeropoint=zeropoint, nord=nord, wavemin=wavemin, $ - bkptbin=bkptbin, window=window, maxsep=maxsep, adderr=adderr, $ - docams=camnames, plotsnfile=plotsnfile, combinedir=combinedir, $ - bestexpnum=bestexpnum - - if (NOT keyword_set(binsz)) then binsz = 1.0d-4 $ - else binsz = double(binsz) - if (NOT keyword_set(zeropoint)) then zeropoint = 3.5D - if (n_elements(window) EQ 0) then window = 100 - if (NOT keyword_set(combinedir)) then combinedir='' - - string1 = repstr(outputname,'spPlate','spFluxdistort') - string2 = repstr(string1,'.fits','.ps') - distortfitsfile = djs_filepath(string1, root_dir=combinedir) - distortpsfile = djs_filepath(string2, root_dir=combinedir) - - ;---------- - ; Sort filenames such that this list contains first the blue then the red - - nfiles = n_elements(spframes) - if (nfiles EQ 0) then return - - filenames = spframes[sort(spframes)] - - ;--------------------------------------------------------------------------- - ;HJIM -- Change in the default number of cameras - if NOT keyword_set(camnames) then camnames = ['b1','r1'] - ncam = N_elements(camnames) - nexpvec = lonarr(ncam) - exptimevec = fltarr(ncam) - - ;--------------------------------------------------------------------------- - ; Loop through each 2D output and read in the data - ;--------------------------------------------------------------------------- - - ; Start by determining the size of all the files - npixarr = lonarr(nfiles) - for ifile=0, nfiles-1 do begin - spframe_read, filenames[ifile], hdr=objhdr - npixarr[ifile] = sxpar(objhdr,'NAXIS1') - endfor - npixmax = max(npixarr) - nobj = sxpar(objhdr,'NAXIS2') ; Number of fibers per spectrograph - - for ifile=0, nfiles-1 do begin - ;---------- - ; Read in all data from this input file. - ; Reading the plug-map structure will fail if its structure is - ; different between different files. - - splog, 'Reading file #', ifile, ': ', filenames[ifile], $ - prename=filenames[ifile] - spframe_read, filenames[ifile], objflux=tempflux, objivar=tempivar, $ - mask=temppixmask, wset=tempwset, dispset=tempdispset, plugmap=tempplug, $ - skyflux=tempsky, ximg=tempximg, superflat=tempsuperflat, $ - hdr=hdr, adderr=adderr, /xythrucorr - - if (ifile EQ 0) then $ - hdrarr = ptr_new(hdr) $ - else $ - hdrarr = [hdrarr, ptr_new(hdr)] - - ;---------- - ; Read header info - - thismjd = sxpar(hdr, 'MJD') - if (NOT keyword_set(mjdlist)) then mjdlist = thismjd $ - else mjdlist = [mjdlist, thismjd] - cameras = strtrim(sxpar(hdr, 'CAMERAS'),2) - expstr = string(sxpar(hdr, 'EXPOSURE'), format='(i8.8)') - - ;---------- - ; Solve for wavelength and lambda-dispersion at each pixel in the image - - ;need to reset junk since the array lengths change - junk=0 - traceset2xy, tempwset, junk, tempwave - traceset2xy, tempdispset, junk, tempdispersion - ;---------- - ; Here is the correct conversion from pixels to log-lambda dispersion. - ; We are converting from the dispersion in units of spFrame pixel sizes - ; to the dispersion in units of the new rebinned pixel size, which is - ; BINSZ in log-lambda units. - - ; this probably should be fixed elsewhere but limit where the fit range - tempxmax=tempwset.xmax - tempwset.xmax=(size(tempdispersion,/dimens))[0]-1 - correct_dlam, tempdispersion, 0, tempwset, dlam=binsz, /inverse - tempwset.xmax=tempxmax - - ;---------- - - dims = size(tempflux, /dimens) - npix = dims[0] - nfib = dims[1] - - ;---------- - ; Make a map of the size of each pixel in delta-(log10-Angstroms), - ; and re-normalize the flux to electrons/(dloglam) - - correct_dlam, tempflux, tempivar, tempwset, dlam=binsz - correct_dlam, tempsky, 0, tempwset, dlam=binsz - - ;---------- - ; Determine if this is a blue or red spectrum - - icam = (where(cameras EQ camnames))[0] - if (icam EQ -1) then $ - message, 'Unknown camera ' + cameras - nexpvec[icam] = nexpvec[icam] + 1 - exptimevec[icam] = exptimevec[icam] + sxpar(hdr, 'EXPTIME') - - ;---------- - ; Apply spectro-photometric calibration - - expnum = sxpar(hdr, 'EXPOSURE') - calibfile = djs_filepath(string(camnames[icam], expnum, $ - format='("spFluxcalib-", a2, "-", i8.8, ".fits")'), $ - root_dir=combinedir) - calibfile = (findfile(calibfile+'*'))[0] - - if (keyword_set(calibfile)) then begin - calibfac = mrdfits(calibfile, 0, calibhdr, /silent) - endif else begin - splog, 'WARNING: Reading default flux-calib vectors for camera=' $ - + camnames[icam] - calibfac = fcalib_default(camnames[icam], tempwave, exptimevec[icam]) - endelse - minval = 0.05 * mean(calibfac) - divideflat, tempflux, invvar=tempivar, calibfac, minval=minval, /quiet - divideflat, tempsky, calibfac, minval=minval, /quiet - temppixmask = temppixmask $ - OR ((calibfac LE minval OR keyword_set(calibfile) EQ 0) $ - * pixelmask_bits('BADFLUXFACTOR')) - - ;---------- - ; Apply flux-correction factor between spectro-photometric exposure - ; and this exposure. There's also an optional additive term. - ; So the flux is first multiplied by HDU#0, then we add HDU#1. - - corrfile = djs_filepath(string(camnames[icam], expnum, $ - format='("spFluxcorr-", a2, "-", i8.8, ".fits")'), $ - root_dir=combinedir) - thisfile = (findfile(corrfile+'*'))[0] - if (NOT keyword_set(thisfile)) then $ - message,' Could not find flux-corr file ' + corrfile - - aterm = mrdfits(thisfile, 0, corrhdr, /silent) - bterm = mrdfits(thisfile, 1) - invertcorr = 1. / aterm - minval = 0.05 / mean(aterm) - nrownative=(size(tempflux,/dimens))[0] - divideflat, tempflux, invvar=tempivar, invertcorr[0:nrownative-1,*], minval=minval - tempflux = tempflux + bterm - divideflat, tempsky, invertcorr[0:nrownative-1,*], minval=minval - temppixmask = temppixmask $ - OR (invertcorr LE minval) * pixelmask_bits('BADFLUXFACTOR') - - ;---------- - ; Apodize the errors - ; Do this only for the dichroic overlap region, which are the first - ; rows in both the blue and red CCD's. - - if (keyword_set(window)) then begin - swin = window < npix - indx = lindgen(swin) - tempivar[indx,*] = $ - tempivar[indx,*] * (indx # replicate(1,nfib)) / swin - endif - - ;---------- - ; Concatenate data from all images - - if (ifile EQ 0) then begin - ; Construct the image arrays - flux = make_array(npixmax,nobj*nfiles,type=size(tempflux,/type)) - fluxivar = make_array(npixmax,nobj*nfiles,type=size(tempivar,/type)) - wave = make_array(npixmax,nobj*nfiles,type=size(tempwave,/type)) - dispersion = make_array(npixmax,nobj*nfiles,type=size(tempdisp,/type)) - pixelmask = make_array(npixmax,nobj*nfiles,type=size(temppixmask,/type)) - skyflux = make_array(npixmax,nobj*nfiles,type=size(tempsky,/type)) - ximg = make_array(npixmax,nobj*nfiles,type=size(tempximg,/type)) - superflat = make_array(npixmax,nobj*nfiles,type=size(tempsuperflat,/type)) - - ; Append as vectors... - camerasvec = cameras - label = makelabel(hdr) - filenum = lonarr(nfib) + ifile - plugmap = tempplug - - ; Use plugmap from MJD of first file as the reference plugging - mapname = sxpar(hdr, 'NAME') - mjdstr = strtrim(string(mjd), 2) - plugfile = getenv('SPECLOG_DIR')+'/'+mjdstr+'/plRoboMapM-'+mapname+'.par' ; HJIM change plPlugMap - finalplugmap = readplugmap(plugfile, /calibobj, mjd=thismjd) - - endif else begin - ; Append as vectors... - camerasvec = [camerasvec, cameras] - label = [label, makelabel(hdr)] - filenum = [filenum, lonarr(nfib) + ifile] - plugmap = [plugmap, tempplug] - endelse - - flux[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempflux - fluxivar[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempivar - wave[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempwave - ; Pad the wavelengths with reasonable values - if (npixarr[ifile] LT npixmax) then begin - dwave = tempwave[npixarr[ifile]-1,*] - tempwave[npixarr[ifile]-2,*] - addwave = tempwave[npixarr[ifile]-1,*] $ - ## (1+lonarr(npixmax-npixarr[ifile])) $ - + dwave ## (1+lindgen(npixmax-npixarr[ifile])) - wave[npixarr[ifile]:npixmax-1,nobj*ifile:nobj*(ifile+1)-1] = addwave - endif - dispersion[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempdispersion - pixelmask[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = temppixmask - skyflux[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempsky - ximg[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempximg - superflat[0:npixarr[ifile]-1,nobj*ifile:nobj*(ifile+1)-1] = tempsuperflat - - splog, prename='' - endfor - - tempflux = 0 - tempivar = 0 - tempwave = 0 - tempdispersion = 0 - temppixmask = 0 - tempsky = 0 - - ;---------- - ; Check how many exposures we have in each of the (4) cameras - - for icam=0, ncam-1 do begin - junk = where(camerasvec EQ camnames[icam], nmatch) - splog, 'Files for camera ' + camnames[icam] + ':', nmatch - if (icam EQ 0) then nminfile = nmatch $ - else nminfile = nminfile < nmatch - endfor -; ??? Should make this routine robust to fewer files!!! - if (nminfile LT 1) then begin - splog, 'ABORT: At least 1 file needed for each camera' - return - endif - - ;--------------------------------------------------------------------------- - ; Construct output data structures, including the wavelength scale - ;--------------------------------------------------------------------------- - - totalpix = (size(flux, /dimens))[0] - - nonzero = where(fluxivar GT 0.0) - minfullwave = min(wave[nonzero]) - maxfullwave = max(wave[nonzero]) - - ; Get max and min wavelength from good pixels - - if (NOT keyword_set(wavemin)) then begin - spotmin = long((minfullwave - zeropoint)/binsz) + 1L - spotmax = long((maxfullwave - zeropoint)/binsz) - wavemin = spotmin * binsz + zeropoint - wavemax = spotmax * binsz + zeropoint - endif else begin - spotmin = 0L - if (NOT keyword_set(wavemax)) then begin - spotmax = long((maxfullwave - wavemin)/binsz) - wavemax = spotmax * binsz + wavemin - endif else spotmax = long((wavemax - wavemin)/binsz) - endelse - - nfinalpix = spotmax - spotmin + 1L - finalwave = dindgen(nfinalpix) * binsz + wavemin - -; nfiber = max(plugmap.fiberid) -; nfiber = 2 * nfib -; HJIM -- change the number of fibers - nfiber = max(plugmap.fiberid) - - finalflux = fltarr(nfinalpix, nfiber) - finalivar = fltarr(nfinalpix, nfiber) - finalandmask = lonarr(nfinalpix, nfiber) - finalormask = lonarr(nfinalpix, nfiber) - finaldispersion = fltarr(nfinalpix, nfiber) - finalsky = fltarr(nfinalpix, nfiber) - ; Use first plugmap as reference plugmap instead - ;;; finalplugmap = replicate(plugmap[0], nfiber) - ;;; struct_assign, {fiberid: 0L}, finalplugmap ; Zero out all elements in this - ; FINALPLUGMAP structure. - - ;---------- - ; Issue a warning about any object fibers with OBJTYPE = 'NA', which - ; should be impossible, but the special plate 673 and possibly others - ; had some such fibers. - - ibad = where(strtrim(plugmap.objtype,2) EQ 'NA', nbad) - if (nbad GT 0) then $ - splog, 'WARNING: ', nbad, ' fibers have OBJTYPE=NA in the plug-map' - - ;--------------------------------------------------------------------------- - ; Combine each fiber, one at a time - ;--------------------------------------------------------------------------- - - for ifiber=0, nfiber-1 do begin - - ; Find the first occurance of fiber number IFIBER+1 - indx = (where(plugmap.fiberid EQ ifiber+1))[0] - - if (indx NE -1) then begin - splog, 'Fiber', ifiber+1, ' ', plugmap[indx].objtype, $ - plugmap[indx].mag, format = '(a, i5.4, a, a, f6.2, 5f6.2)' - - finalplugmap[ifiber] = plugmap[indx] - - ; Identify all objects with the same XFOCAL,YFOCAL plate position, and - ; combine all these objects into a single spectrum. - ; If all pluggings are identical, then this will always be - ; the same fiber ID. - ; Also, insist that the object type is not 'NA', which would - ; occur for unplugged fibers. <--- Disable this for BOSS ??? - - indx = where(abs(plugmap.xfocal - plugmap[indx].xfocal) LT 0.0001 $ - AND abs(plugmap.yfocal - plugmap[indx].yfocal) LT 0.0001) -; AND strtrim(plugmap.objtype,2) NE 'NA') - endif - ;a=plugmap.run - if (indx[0] NE -1) then begin - temppixmask = pixelmask[*,indx] - combine1fiber, wave[*,indx], flux[*,indx], fluxivar[*,indx], $ - finalmask=temppixmask, indisp=dispersion[*,indx], $ - skyflux=skyflux[*,indx], $ - newloglam=finalwave, newflux=bestflux, newivar=bestivar, $ - andmask=bestandmask, ormask=bestormask, newdisp=bestdispersion, $ - newsky=bestsky, $ - nord=nord, binsz=binsz, bkptbin=bkptbin, maxsep=maxsep, $ - maxiter=50, upper=3.0, lower=3.0, maxrej=1 - - finalflux[*,ifiber] = bestflux - finalivar[*,ifiber] = bestivar - finalandmask[*,ifiber] = bestandmask - finalormask[*,ifiber] = bestormask - finaldispersion[*,ifiber] = bestdispersion - finalsky[*,ifiber] = bestsky - - ; The following adds the COMBINEREJ bit to the input pixel masks - pixelmask[*,indx] = temppixmask - endif else begin - splog, 'Fiber', ifiber+1, ' NO DATA' - finalandmask[*,ifiber] = pixelmask_bits('NODATA') - finalormask[*,ifiber] = pixelmask_bits('NODATA') - endelse - endfor - ;---------- - ; Modify the 1st file's header to use for the combined plate header. - - bighdr = *hdrarr[0] - - ;--------------------------------------------------------------------------- - ; FLUX DISTORTION IMAGE - ;--------------------------------------------------------------------------- - - ; Compute the flux distortion image - corrimg = flux_distortion(finalflux, finalivar, finalandmask, finalormask, $ - plugmap=finalplugmap, loglam=finalwave, plotfile=distortpsfile, hdr=bighdr) - - igood = where(finalivar GT 0) - thismin = min(corrimg[igood], max=thismax) - cratio = thismin / thismax - if (cratio LT 1./100) then begin - splog, 'WARNING: Flux distortion image dynamic range = ', 1./cratio, $ - ' (DISABLE)' - corrimg[*] = 1. - endif else begin - splog, 'Flux distortion image dynamic range = ', 1./cratio - endelse - - ; Plot S/N and throughput **before** this distortion-correction. - splog, prelog='Initial' - platesn, finalflux, finalivar, finalandmask, finalplugmap, finalwave, $ - hdr=bighdr, plotfile=djs_filepath(plotsnfile+'.orig', root_dir=combinedir) - splog, prelog='' - - ; Apply this flux-distortion to the final, co-added fluxes. - invcorrimg = 1. / corrimg - minicorrval = 0.05 / mean(corrimg) - divideflat, finalflux, invvar=finalivar, invcorrimg, minval=minicorrval - divideflat, bestsky, invcorrimg, minval=minicorrval - finalandmask = finalandmask $ - OR (invcorrimg LE minicorrval) * pixelmask_bits('BADFLUXFACTOR') - finalormask = finalormask $ - OR (invcorrimg LE minicorrval) * pixelmask_bits('BADFLUXFACTOR') - - ; Plot S/N and throughput **after** this distortion-correction. - ; (This over-writes header cards written in the first call.) - splog, prelog='Final' - platesn, finalflux, finalivar, finalandmask, finalplugmap, finalwave, $ - hdr=bighdr, plotfile=djs_filepath(plotsnfile, root_dir=combinedir) - splog, prelog='' - - ;--------------------------------------------------------------------------- - ; Write the corrected spCFrame files. - ; All the fluxes + their errors are calibrated. - ; The wavelengths + dispersions are converted from trace sets to 2D images. - ; The pixel mask has the COMBINEREJ bit set. - ;--------------------------------------------------------------------------- - - for ifile=0, nfiles-1 do begin - thisfile = fileandpath(filenames[ifile], path=thispath) - thisfile = djs_filepath(repstr(thisfile,'spFrame','spCFrame'), $ - root_dir=thispath) - splog, 'Writing file #', ifile, ': ', thisfile, prename=filenames[ifile] - indx = where(filenum EQ ifile, nthis) - - hdr = *hdrarr[ifile] - sxaddpar, hdr, 'BUNIT', '1E-17 erg/cm^2/s/Ang' - - ; Apply the flux-distortion image to each individual frame, by - ; interpolating off the full wavelength-scale distortion image - ; onto the wavelength mapping of each individual exposure+CCD. - for i=0L, nthis-1 do begin - thisflux1 = flux[*,indx[i]] - thisivar1 = fluxivar[*,indx[i]] - thissky1 = skyflux[*,indx[i]] - j = plugmap[indx[i]].fiberid - 1 - thisicorr = interpol(invcorrimg[*,j], finalwave, wave[*,indx[i]]) - divideflat, thisflux1, invvar=thisivar1, thisicorr, minval=minicorrval - flux[*,indx[i]] = thisflux1 - fluxivar[*,indx[i]] = thisivar1 - - divideflat, thissky1, thisicorr, minval=minicorrval - skyflux[*,indx[i]] = thissky1 - endfor - - mwrfits, flux[*,indx], thisfile, hdr, /create - - fxaddpar, exthdr, 'EXTNAME', 'IVAR', ' Inverse variance' - mwrfits, fluxivar[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'MASK', ' Pixel mask' - mwrfits, pixelmask[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'WAVELENGTH', ' Wavelength solution' - mwrfits, wave[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'WAVEDISP', ' Wavelength dispersion' - mwrfits, dispersion[*,indx], thisfile, exthdr - - ;; need a different header for plugmap structure - ;; undefine it first so that mwrfits doesn't duplicate comments - ;; on successive writes - undefine, plughdr - fxaddpar, plughdr, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - mwrfits, plugmap[indx], thisfile, plughdr - - fxaddpar, exthdr, 'EXTNAME', 'SKY', ' Subtracted sky flux' - mwrfits, skyflux[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'X', ' Trace X locations on CCD' - mwrfits, ximg[*,indx], thisfile, exthdr - - fxaddpar, exthdr, 'EXTNAME', 'SUPERFLAT', ' Superflat' - mwrfits, superflat[*,indx], thisfile, exthdr - - endfor - splog, prename='' - - ;---------- - ; Clear memory - - wave = 0 - flux = 0 - fluxivar = 0 - temppixmask = 0 - dispersion = 0 - skyflux = 0 - superflat = 0 - - ;--------------------------------------------------------------------------- - ; Create the output header - ;--------------------------------------------------------------------------- - - ;---------- - ; Print roll call of bad fibers and bad pixels. - - fiber_rollcall, finalandmask, finalwave - - ;---------- - ; Remove header cards that were specific to this first exposure - ; (where we got the header). - - ncoeff = sxpar(bighdr, 'NWORDER') - for i=2, ncoeff-1 do sxdelpar, bighdr, 'COEFF'+strtrim(string(i),2) - - sxdelpar, bighdr, ['SPA', 'IPA', 'IPARATE'] - sxdelpar, bighdr, 'EXPOSURE' - sxdelpar, bighdr, 'REQTIME' - sxdelpar, bighdr, 'QUALITY' - sxdelpar, bighdr, 'FILENAME' - sxdelpar, bighdr, 'SEQID' - sxdelpar, bighdr, 'DARKTIME' - sxdelpar, bighdr, 'CAMERAS' - sxdelpar, bighdr, 'PLUGMAPO' - for i=1, 4 do sxdelpar, bighdr, 'GAIN'+strtrim(string(i),2) - for i=1, 4 do sxdelpar, bighdr, 'RDNOISE'+strtrim(string(i),2) - sxdelpar, bighdr, ['CAMCOL', 'CAMROW'] - sxdelpar, bighdr, ['AMPLL', 'AMPLR', 'AMPUL', 'AMPUR'] - sxdelpar, bighdr, ['FFS', 'FF', 'NE', 'HGCD'] - sxdelpar, bighdr, ['SPEC1', 'SPEC2'] - sxdelpar, bighdr, 'NBLEAD' - sxdelpar, bighdr, 'PIXFLAT' - sxdelpar, bighdr, 'PIXBIAS' - sxdelpar, bighdr, 'FLATFILE' - sxdelpar, bighdr, 'ARCFILE' - sxdelpar, bighdr, 'OBJFILE' - sxdelpar, bighdr, 'FRAMESN2' - sxdelpar, bighdr, 'DEREDSN2' - - ;---------- - ; Average together some of the fields from the individual headers. - - cardname = [ 'AZ', 'ALT', 'TAI', 'WTIME', 'AIRTEMP', 'DEWPOINT', $ - 'DEWDEP', 'DUSTA', 'DUSTB', 'DUSTC', 'DUSTD', 'GUSTS', 'HUMIDITY', $ - 'HUMIDOUT', 'PRESSURE', 'WINDD', 'WINDS', 'TEMP01', 'TEMP02', $ - 'TEMP03', 'TEMP04', 'HELIO_RV', 'V_RAD', 'SEEING20', 'SEEING50', 'SEEING80', $ - 'RMSOFF20', 'RMSOFF50', 'RMSOFF80', 'XCHI2', 'SKYCHI2', $ - 'WSIGMA', 'XSIGMA' ] - sxcombinepar, hdrarr, cardname, bighdr, func='average' - - sxcombinepar, hdrarr, 'TAI-BEG', bighdr, func='min' - sxcombinepar, hdrarr, 'TAI-END', bighdr, func='max' - - sxcombinepar, hdrarr, 'XCHI2', bighdr, func='max', outcard='XCHI2MAX', $ - after='XCHI2' - sxcombinepar, hdrarr, 'XCHI2', bighdr, func='min', outcard='XCHI2MIN', $ - after='XCHI2' - - sxcombinepar, hdrarr, 'SKYCHI2', bighdr, func='max', outcard='SCHI2MAX', $ - after='SKYCHI2' - sxcombinepar, hdrarr, 'SKYCHI2', bighdr, func='min', outcard='SCHI2MIN', $ - after='SKYCHI2' - - sxcombinepar, hdrarr, 'WSIGMA', bighdr, func='max', outcard='WSIGMAX', $ - after='WSIGMA' - sxcombinepar, hdrarr, 'WSIGMA', bighdr, func='min', outcard='WSIGMIN', $ - after='WSIGMA' - - sxcombinepar, hdrarr, 'XSIGMA', bighdr, func='max', outcard='XSIGMAX', $ - after='XSIGMA' - sxcombinepar, hdrarr, 'XSIGMA', bighdr, func='min', outcard='XSIGMIN', $ - after='XSIGMA' - - ; Add the NGUIDE keywords for all headers of one flavor of CAMERAS - ; (e.g., for all the 'b1' exposures if the first frame is 'b1'.) - cardname = 'NGUIDE' - sxcombinepar, hdrarr[0], cardname, bighdr, func='total' - cameras0 = sxpar(*(hdrarr[0]), 'CAMERAS') - for ihdr=1, n_elements(hdrarr)-1 do begin - if (sxpar(*(hdrarr[ihdr]), 'CAMERAS') EQ cameras0) then $ - sxcombinepar, hdrarr[ihdr], cardname, bighdr, func='total' - endfor - - ;---------- - ; Use the MJD passed as a keyword, which will typically be for the most - ; observation, and be consistent with the output file names - - if (keyword_set(mjd)) then $ - sxaddpar, bighdr, 'MJD', mjd - - ; Get the list of MJD's used for these reductions, then convert to a string - mjdlist = mjdlist[uniq(mjdlist, sort(mjdlist))] - mjdlist = strtrim(strcompress(string(mjdlist,format='(99a)')),2) - sxaddpar, bighdr, 'MJDLIST', mjdlist, after='MJD' - - ;---------- - ; Add new header cards - - sxaddpar, bighdr, 'VERSCOMB', idlspec2d_version(), $ - ' Version of idlspec2d for combining multiple spectra', after='VERS2D' - sxaddpar, bighdr, 'NEXP', nfiles, $ - ' Number of exposures in this file', before='EXPTIME' - for ifile=0,nfiles-1 do $ - sxaddpar, bighdr, string('EXPID',ifile+1, format='(a5,i3.3)'), label[ifile], $ - ' ID string for exposure '+strtrim(ifile+1,2), before='EXPTIME' - if (keyword_set(bestexpnum)) then $ - sxaddpar, bighdr, 'BESTEXP', bestexpnum, before='EXPID001' - - sxaddpar, bighdr, 'EXPTIME', min(exptimevec), $ - ' Minimum of exposure times for all cameras' - for icam=0, ncam-1 do $ - sxaddpar, bighdr, 'NEXP_'+camnames[icam], nexpvec[icam], $ - ' '+camnames[icam]+' camera number of exposures', before='EXPTIME' - for icam=0, ncam-1 do $ - sxaddpar, bighdr, 'EXPT_'+camnames[icam], exptimevec[icam], $ - ' '+camnames[icam]+' camera exposure time (seconds)', before='EXPTIME' - sxaddpar, bighdr, 'SPCOADD', systime(), $ - ' SPCOADD finished', after='EXPTIME' - - sxaddpar, bighdr, 'NWORDER', 2, ' Linear-log10 coefficients' - sxaddpar, bighdr, 'NWORDER', 2, ' Linear-log10 coefficients' - sxaddpar, bighdr, 'WFITTYPE', 'LOG-LINEAR', ' Linear-log10 dispersion' - sxaddpar, bighdr, 'COEFF0', wavemin, $ - ' Central wavelength (log10) of first pixel' - sxaddpar, bighdr, 'COEFF1', binsz, ' Log10 dispersion per pixel' - - sxaddpar, bighdr, 'NAXIS1', n_elements(bestflux) - sxaddpar, bighdr, 'NAXIS2', nfiber - - spawn, 'uname -n', uname - sxaddpar, bighdr, 'UNAME', uname[0] - - ;---------- - ; Check for smear exposure used and place info in header - -; smearused = total((finalandmask AND pixelmask_bits('SMEARIMAGE')) NE 0) $ -; GT 0 ? 'T' : 'F' -; sxaddpar, bighdr, 'SMEARUSE', smearused, ' Smear image used?' - - ;---------- - ; Compute the fraction of bad pixels in total, and on each spectrograph. - ; Bad pixels are any with SKYMASK(INVVAR)=0, excluding those where - ; the NODATA bit is set in the pixel mask. - - ifib1 = where(finalplugmap.spectrographid EQ 1, nfib1) - ifib2 = where(finalplugmap.spectrographid EQ 2, nfib2) - qbadpix = skymask(finalivar, finalandmask, finalormask) EQ 0 $ - AND (finalandmask AND pixelmask_bits('NODATA')) EQ 0 - if (nfib1 GT 0) then $ - fbadpix1 = total(qbadpix[*,ifib1]) / (nfib1 * nfinalpix) $ - else $ - fbadpix1 = 0 - if (nfib2 GT 0) then $ - fbadpix2 = total(qbadpix[*,ifib2]) / (nfib2 * nfinalpix) $ - else $ - fbadpix2 = 0 - if (nfib1 GT 0 AND nfib2 GT 0) then $ - fbadpix = total(qbadpix[*,[ifib1,ifib2]]) / ((nfib1+nfib2) * nfinalpix) $ - else if (nfib1 GT 0) then $ - fbadpix = fbadpix1 $ - else if (nfib2 GT 0) then $ - fbadpix = fbadpix1 $ - else $ - fbadpix = 0 - - sxaddpar, bighdr, 'FBADPIX', fbadpix, ' Fraction of bad pixels' - sxaddpar, bighdr, 'FBADPIX1', fbadpix1, ' Fraction of bad pixels on spectro-1' - sxaddpar, bighdr, 'FBADPIX2', fbadpix2, ' Fraction of bad pixels on spectro-2' - - ;---------- - ; Add keywords for IRAF-compatability - - add_iraf_keywords, bighdr, wavemin, binsz - - mkhdr, hdrfloat, finalivar, /image, /extend - add_iraf_keywords, hdrfloat, wavemin, binsz - - mkhdr, hdrlong, finalandmask, /image, /extend - add_iraf_keywords, hdrlong, wavemin, binsz - - ;--------------------------------------------------------------------------- - ; Write combined output file - ;--------------------------------------------------------------------------- - - ; First write the file with the flux distortion vectors - mwrfits, corrimg, distortfitsfile, bighdr, /create - - fulloutname = djs_filepath(outputname, root_dir=combinedir) - - ; HDU #0 is flux - sxaddpar, bighdr, 'BUNIT', '1E-17 erg/cm^2/s/Ang' - mwrfits, finalflux, fulloutname, bighdr, /create - - ; HDU #1 is inverse variance - sxaddpar, hdrfloat, 'BUNIT', '1/(1E-17 erg/cm^2/s/Ang)^2' - sxaddpar, hdrfloat, 'EXTNAME', 'IVAR', ' Inverse variance' - mwrfits, finalivar, fulloutname, hdrfloat - - ; HDU #2 is AND-pixelmask - sxaddpar, hdrlong, 'EXTNAME', 'ANDMASK', ' AND Mask' - mwrfits, finalandmask, fulloutname, hdrlong - - ; HDU #3 is OR-pixelmask - sxaddpar, hdrlong, 'EXTNAME', 'ORMASK', ' OR Mask' - mwrfits, finalormask, fulloutname, hdrlong - - ; HDU #4 is dispersion map - sxaddpar, hdrfloat, 'BUNIT', 'pixels' - sxaddpar, hdrfloat, 'EXTNAME', 'WAVEDISP', ' Wavelength dispersion' - mwrfits, finaldispersion, fulloutname, hdrfloat - - ; HDU #5 is plugmap - sxaddpar, hdrplug, 'EXTNAME', 'PLUGMAP', ' Plugmap structure' - mwrfits, finalplugmap, fulloutname, hdrplug - - ; HDU #6 is the sky - sxaddpar, hdrsky, 'EXTNAME', 'SKY', ' Subtracted sky flux' - mwrfits, finalsky, fulloutname, hdrsky - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spcombine_v5.pro b/pro/spec2d/spcombine_v5.pro deleted file mode 100644 index 661351cb5..000000000 --- a/pro/spec2d/spcombine_v5.pro +++ /dev/null @@ -1,359 +0,0 @@ -;+ -; NAME: -; spcombine_v5 -; -; PURPOSE: -; Calling script for SPCOADD_V5. -; -; CALLING SEQUENCE: -; spcombine_v5, [ planfile, docams=, adderr=, /xdisplay, minsn2= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; planfile - Name(s) of output plan file; default to reducing all -; plan files matching 'spPlancomb*.par' -; docams - Cameras to combine; default to ['b1', 'b2', 'r1', 'r2'] -; adderr - Additional error to add to the formal errors, as a -; fraction of the flux; default to 0.03 (3 per cent). -; xdisplay - Send plots to X display rather than to plot file -; minsn2 - Minimum S/N^2 to include science frame in coadd; default -; to 0 to only include those with S/N > 0. -; Note that all exposures with a score less than 0.2 times -; the score of the best exposure are discarded; for those -; purposes, the score used is the worst of all 4 cameras. -; -; OUTPUT: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; We currently hard-wire the rejection of all smears and -; any with (S/N)^2 less than 20% of the best exposure. -; -; PROCEDURES CALLED: -; cpbackup -; dfpsclose -; dfpsplot -; headfits -; idlspec2d_version() -; idlutils_version() -; spcoadd_v5 -; spflux_v5 -; spfluxcorr_v5 -; splog -; sxpar() -; yanny_free -; yanny_par() -; yanny_read -; -; INTERNAL SUPPORT ROUTINES: -; -; REVISION HISTORY: -; 06-Jul-2000 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro spcombine_v5, planfile, docams=docams, adderr=adderr, xdisplay=xdisplay, $ - minsn2=minsn2 - - if (NOT keyword_set(planfile)) then planfile = findfile('spPlancomb*.par') - if (n_elements(adderr) EQ 0) then adderr = 0.03 - - thismem = memory() - maxmem = 0 - - ;---------- - ; If multiple plan files exist, then call this script recursively - ; for each such plan file. - - if (N_elements(planfile) GT 1) then begin - for i=0, N_elements(planfile)-1 do $ - spcombine_v5, planfile[i], docams=docams, adderr=adderr, $ - xdisplay=xdisplay, minsn=minsn - return - endif - ; HJIM -- change the default number of cameras - if (NOT keyword_set(docams)) then docams = ['b1', 'r1'] - - ;---------- - ; Strip path from plan file name, and change to that directory - - thisplan = fileandpath(planfile[0], path=outdir) - cd, outdir, current=origdir - if (NOT keyword_set(outdir)) then cd, origdir - - ;---------- - ; Find the SPEXP structure - - allseq = yanny_readone(thisplan, 'SPEXP', hdr=hdr, /anon) - if (N_elements(allseq) EQ 0) then begin - splog, 'ABORT: No SPEXP structures in plan file ' + thisplan - cd, origdir - return - endif - - ;---------- - ; Find keywords from the header and construct output file names - - thismjd = long(yanny_par(hdr, 'MJD')) - if (NOT keyword_set(thismjd)) then $ - thismjd = max(allseq.mjd) - ;confimjd = plate_to_string(yanny_par(hdr,'confid')) $ ;- JEB plate number problem OK ; HJIM -- change plate number by configuration number - confimjd = string(yanny_par(hdr,'confid')) $ - + '-' + string(thismjd,format='(i5.5)') - logfile = 'spDiagcomb-' + confimjd + '.log' - plotfile = 'spDiagcomb-' + confimjd + '.ps' - fcalibprefix = 'spFluxcalib-' + confimjd - combinefile = 'spPlate-' + confimjd + '.fits' - plotsnfile = 'spSN2d-' + confimjd + '.ps' - - stime0 = systime(1) - - ;---------- - ; For Special plates that don't have SDSS photometry get - ; minsn2 from the par file or spreduce will fail - confid = plate_to_string(yanny_par(hdr, 'confid')) ;- JEB plate number problem OK; HJIM -- change plate number by configuration number - if (n_elements(minsn2) EQ 0) then begin - snfile = findfile(filepath('spPlateMinSN2.par', root_dir=getenv('SPECLOG_DIR'), $ - subdir='opfiles'), count=ct) - if (ct GT 0) then snparam = yanny_readone(snfile[0]) - if (keyword_set(snparam)) then begin - i = where(snparam.plate EQ confid, ct); Change plate name in spPlateMinSN2.par ???? - if (ct GT 0) then minsn2 = snparam[i[0]].minsn2 else minsn2 = 0.0 - endif - endif - ;---------- - ; Open log files for output - - if (keyword_set(logfile)) then begin - cpbackup, djs_filepath(logfile, root_dir=outdir) - splog, filename=djs_filepath(logfile, root_dir=outdir) - splog, 'Log file ' + logfile + ' opened ' + systime() - splog, 'IDL version: ' + string(!version,format='(99(a," "))') - spawn, 'uname -a', uname - splog, 'UNAME: ' + uname[0] - endif - if (keyword_set(plotfile) AND NOT keyword_set(xdisplay)) then begin - cpbackup, djs_filepath(plotfile, root_dir=outdir) - set_plot, 'ps' - dfpsplot, djs_filepath(plotfile, root_dir=outdir), /color - splog, 'Plot file ' + plotfile - endif - splog, 'Plan file ', thisplan - splog, 'DOCAMS = ', docams - - splog, 'idlspec2d version ' + idlspec2d_version() - splog, 'idlutils version ' + idlutils_version() - - ; HJIM -- change the default number of cameras - camnames = ['b1', 'r1'] - ncam = N_elements(camnames) - - ;---------- - ; Select frames that match the cameras specified by DOCAM. - - for ido=0, n_elements(docams)-1 do begin - ii = (where(camnames EQ docams[ido], camct))[0] - if (camct NE 1) then message, 'Non-unique camera ID: ' + docams[ido] - if (ido EQ 0) then icams = ii $ - else icams = [icams,ii] - endfor - - ;---------- - ; Compute a score for each frame and each exposure. - ; Replace all UNKNOWN file names with nulls. - ; The score will be MINSN2 if the file name is set to "NULL" - ; or does not exist. - - dims = size(allseq) - nexp = n_elements(allseq) - ndocam = n_elements(icams) - score = fltarr(ndocam, nexp) - (minsn2<0) - camspecid = lonarr(ndocam, nexp) - expnum = lonarr(ndocam, nexp) - camerasarr= strarr(ndocam, nexp) - for i=0L, nexp-1 do begin - for j=0L, ndocam-1 do begin - if (allseq[i].name[icams[j]] EQ 'UNKNOWN') then begin - allseq[i].name[icams[j]] = '' - endif else begin - thisfile = (lookforgzip(djs_filepath(allseq[i].name[icams[j]], $ - root_dir=outdir)))[0] - if (keyword_set(thisfile)) then begin - hdr = headfits(thisfile) - score[j,i] = sxpar(hdr, 'FRAMESN2') - cameras = strtrim(sxpar(hdr, 'CAMERAS'),2) - camspecid[j,i] = strmid(cameras, 1, 1) - camerasarr[j,i] = cameras - expnum[j,i] = sxpar(hdr, 'EXPOSURE') - endif else begin - expnum[j,i] = long(strmid(allseq[i].name[icams[j]],11,8)) - allseq[i].name[icams[j]] = '' - endelse - endelse - endfor - endfor - - ;HJIM-This part is no more needed for the BHM - ;---------- - ; If all data is missing from one of the cameras, then discard - ; both cameras from that spectrograph. - - ; Case where we discard spectrograph #1 - ; If there are no exposures with both b1+b2 cameras - ; then discard all spectrograph#1 data - ;if (total( total(camerasarr EQ 'b1',1) GT 0 AND $ - ; total(camerasarr EQ 'r1',1) GT 0 ) EQ 0) then begin - ; ii = where(docams EQ 'b2' OR docams EQ 'r2', ct) - ; if (ct GT 0) then begin - ; splog, 'Discarding spectro-1 data' - ; camerasarr = camerasarr[ii,*] - ; camspecid = camspecid[ii,*] - ; docams = docams[ii] - ; expnum = expnum[ii,*] - ; icams = icams[ii] - ; score = score[ii,*] - ; endif - ;endif - - ; Case where we discard spectrograph #2 - ; If there are no exposures with both b1+b2 cameras - ; then discard all spectrograph#1 data - ;if (total( total(camerasarr EQ 'b2',1) GT 0 AND $ - ; total(camerasarr EQ 'r2',1) GT 0 ) EQ 0) then begin - ; ii = where(docams EQ 'b1' OR docams EQ 'r1', ct) - ; if (ct GT 0) then begin - ; splog, 'Discarding spectro-2 data' - ; camerasarr = camerasarr[ii,*] - ; camspecid = camspecid[ii,*] - ; docams = docams[ii] - ; expnum = expnum[ii,*] - ; icams = icams[ii] - ; score = score[ii,*] - ; endif - ;endif - - ; Discard the smear exposures by setting their scores equal to (MINSN2<0) - qsmear = allseq.flavor EQ 'smear' - for iexp=0L, nexp-1 do $ - score[*,iexp] = score[*,iexp] * (qsmear[iexp] EQ 0) $ - + (minsn2<0) * qsmear[iexp] - - ;---------- - ; Select the "best" exposure based upon the minimum score in all cameras - - expscore = fltarr(nexp) - for iexp=0L, nexp-1 do $ - expscore[iexp] = min([score[*,iexp]]) - bestscore = max(expscore, ibest) - splog, 'Best exposure = ', expnum[0,ibest], ' score = ', bestscore - - ;---------- - ; Discard exposures whose score is less than some fraction of the - ; best exposure, or whose score is less than some absolute value. - ; These numbers are hard-wired!!!??? - - ibad = where(expscore LE minsn2 OR expscore LT 0.20*bestscore, nbad) - if (nbad GT 0) then begin - for j=0, nbad-1 do splog, 'WARNING: Discarding ' $ - + allseq[ibad[j]].flavor + ' exposure #', $ - expnum[0,ibad[j]], ' with score=', expscore[ibad[j]] - score[*,ibad] = (minsn2<0) - endif - - ;---------- - ; Compute the xy offset fiber input throughput corrections - ; Writes spXYthrucorr-{camera}-{expid}.fits.gz - - objname = allseq.name[icams] - for i=0, nexp-1L do begin - if (expscore[i] GT minsn2 AND expscore[i] GE 0.2*bestscore) then begin - for j=0, (size(objname,/dim))[0]-1L do begin - xythrucorr, objname[j,i], outdir=outdir, mjd=thismjd, /useguide - endfor - endif - endfor - - ;---------- - ; Compute the spectro-photometry - - i1 = where(camspecid EQ 1 AND score GT minsn2, ct1) - i2 = where(camspecid EQ 2 AND score GT minsn2, ct2) - objname = allseq.name[icams] - - configuration=obj_new("configuration",thismjd) - splog, prename='sp1' - if (ct1 GT 0) then begin - spflux_v5, objname[i1], adderr=adderr, combinedir=outdir, $ - minfracthresh=configuration->spflux_v5_minfracthresh() - endif - splog, prename='sp2' - if (ct2 GT 0) then begin - spflux_v5, objname[i2], adderr=adderr, combinedir=outdir, $ - minfracthresh=configuration->spflux_v5_minfracthresh() - endif - splog, prename='' - - ; Track memory usage - thismem = memory() - maxmem = maxmem > thismem[3] - splog, 'Max memory usage = ', string(maxmem/1e6,format='(f7.1)'), ' MB' - - ;---------- - ; Compute the flux-correction vectors - -; if (ct1 GT 0) then $ -; spfluxcorr_v5, objname[i1], adderr=adderr, combinedir=outdir, $ -; bestexpnum=expnum[0,ibest] -; if (ct2 GT 0) then $ -; spfluxcorr_v5, objname[i2], adderr=adderr, combinedir=outdir, $ -; bestexpnum=expnum[0,ibest] - - cmd = "fluxcorr_prior.py "+planfile+" -xythrucorr" - print, "running", cmd - spawn, cmd - print, "done with fluxcorr" - - ; Track memory usage - thismem = memory() - maxmem = maxmem > thismem[3] - splog, 'Max memory usage = ', string(maxmem/1e6,format='(f7.1)'), ' MB' - - ;---------- - ; Close plot file - S/N plots are then put in the PLOTSNFILE file. - - if (keyword_set(plotfile) AND NOT keyword_set(xdisplay)) then dfpsclose - - ;---------- - ; Co-add the fluxed exposures - - ii = where(score GT minsn2, ct) - if (ct GT 0) then begin - spcoadd_v5, objname[ii], combinefile, mjd=thismjd, combinedir=outdir, $ - adderr=adderr, docams=docams, plotsnfile=plotsnfile, $ - bestexpnum=expnum[0,ibest] - endif else $ - splog, 'ABORT: No exposures with SCORE > ' + strtrim(string(minsn2),2) - obj_destroy,configuration - heap_gc ; garbage collection - - ; Track memory usage - thismem = memory() - maxmem = maxmem > thismem[3] - splog, 'Max memory usage = ', string(maxmem/1e6,format='(f7.1)'), ' MB' - - splog, 'Total time for SPCOMBINE = ', systime(1)-stime0, ' seconds', $ - format='(a,f6.0,a)' - splog, 'Successful completion of SPCOMBINE at ' + systime() - - ;---------- - ; Close log files and change to original directory - - if (keyword_set(logfile)) then splog, /close - cd, origdir - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spflatgen.pro b/pro/spec2d/spflatgen.pro deleted file mode 100644 index 92fce96a6..000000000 --- a/pro/spec2d/spflatgen.pro +++ /dev/null @@ -1,186 +0,0 @@ -;+ -; NAME: -; spflatgen -; -; PURPOSE: -; Wrapper for SPFLATTEN2 for generating pixel-to-pixel flat-fields. -; -; CALLING SEQUENCE: -; spflatgen, [ mjd=, expnum=, expstart=, expend=, $ -; indir=, outdir=, docam= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; mjd - If INDIR not set, then look for files in $BOSS_SPECTRO_DATA/MJD. -; expnum - If set, then use these exposure numbers -; expstart - If set, then only use exposure numbers >= EXPSTART -; expend - If set, then only use exposure numbers >= EXPEND -; indir - Look for input files in this directory; default to current -; directory if neither MJD or INDIR are set. -; outdir - Output directory; default to same as INDIR. -; docam - Camera names; default to all cameras: ['b1', 'b2', 'r1', 'r2'] -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine looks for flats and arcs in a given night that are logged -; (according to the headers) to be spectroscopic pixel flats. We expect -; at least 7 flats in a sequence plus one or more arcs. If this is not -; true for a given camera, then no pixel flats are generated for that camera. -; -; Trigger a failure if there are more than 25 biases for a given camera, -; since that is probably too many to load into memory. -; -; Four FITS files are produced, one for each camera: -; pixflat-MJD-CAMERA.fits -; where MJD is the 5-digit modified Julian date, and CAMERA -; is 'b1', 'b2', 'r1', and 'r2'. -; -; The header contains the number of files used in each camera (NEXP), -; and an identifier for each of those files (EXPID*). Those identifiers -; contain the camera name, MJD, flat exposure number, and arc exposure -; number, all dash-separated. -; -; EXAMPLES: -; The following nights look like they contain a flat sequence: -; 51686 51781 51809 51852 51893 51950 51978 52010 52038 52069 -; 52161 62193 52216 52245 52276 52304 52333 52363 52392 52423 -; 52454 52514 52551 52573 52602 52633 52655 52689 52719 52747 -; 52777 52808 52868 52899 52956 52983 53014 53044 53073 53100 -; 53132 53162 53220 53257 ...??? -; 53610 53633 -; 53649 (15 dithers) -; 53651 (15 dithers) -; Generate one of these sets of flats with: -; spflatgen, mjd=51781, outdir='.' -; -; The initial set of pixel flats were generated using six of the -; flats taken on MJD=51441 from three different plates: exposure -; numbers 1351,1352,1362,1363,1372,1373 with exp #1350 as the -; fiducial flat and #1347 as the arc. -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_filepath() -; sdsshead() -; spflatten2 -; splog -; sxpar() -; -; REVISION HISTORY: -; 06-Jul-2001 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -pro spflatgen, mjd=mjd, expnum=expnum, expstart=expstart, expend=expend, $ - indir=indir, outdir=outdir, docam=docam - - if (keyword_set(docam)) then camnames = docam $ - else camnames = ['b1', 'b2', 'r1', 'r2'] - ncam = N_elements(camnames) - - ;---------- - ; Find all file names in the directory corresponding to this MJD - - if (keyword_set(mjd) AND NOT keyword_set(indir)) then begin - indir = filepath('', root_dir=getenv('BOSS_SPECTRO_DATA'), $ - subdirectory=string(mjd,format='(i5.5)')) - endif - if (keyword_set(indir) AND NOT keyword_set(outdir)) then $ - outdir = indir - - files = findfile(djs_filepath('sdR-*.fit*',root_dir=indir), count=nfile) - if (nfile EQ 0) then begin - splog, 'No files found.' - return - endif - - ;---------- - ; Trim to exposure numbers specified by EXPNUM,EXPSTART,EXPEND - - if (keyword_set(expnum) OR keyword_set(expstart) OR keyword_set(expend)) $ - then begin - qkeep = bytarr(nfile) + 1b - exposure = long( strmid(fileandpath(files),7,8) ) - if (keyword_set(expnum)) then begin - for ifile=0, nfile-1 do $ - qkeep[ifile] = (total(exposure[ifile] EQ long(expnum)) NE 0) - endif - if (keyword_set(expstart)) then $ - qkeep = qkeep AND (exposure GE long(expstart)) - if (keyword_set(expend)) then $ - qkeep = qkeep AND (exposure LE long(expend)) - ikeep = where(qkeep, nfile) - if (nfile EQ 0) then begin - splog, 'No files found matching EXPNUM,EXPSTART,EXPEND.' - return - endif - splog, 'Trimming to ', nfile, ' files specified by EXPNUM,EXPSTART,EXPEND.' - files = files[ikeep] - endif - - ;---------- - ; Parse the FITS headers - - cameras = strarr(nfile) - obscomm = strarr(nfile) - quality = strarr(nfile) - mjdarr = lonarr(nfile) - exposure = lonarr(nfile) - - print, 'Reading FITS headers...', format='(a,$)' - for ifile=0, nfile-1 do begin - hdr = sdsshead(files[ifile]) - cameras[ifile] = strtrim(sxpar(hdr, 'CAMERAS'),2) - obscomm[ifile] = strtrim(sxpar(hdr, 'OBSCOMM'),2) - quality[ifile] = strtrim(sxpar(hdr, 'QUALITY'),2) - mjdarr[ifile] = sxpar(hdr, 'MJD') - exposure[ifile] = sxpar(hdr, 'EXPOSURE') - print, '.', format='(a,$)' - endfor - print - - for icam=0, ncam-1 do begin - ; Select flats and arcs for this camera - iflats = where(cameras EQ camnames[icam] $ - AND quality NE 'bad' $ - AND obscomm EQ '{dithered flats-flat}', nflat) - iarcs = where(cameras EQ camnames[icam] $ - AND quality NE 'bad' $ - AND obscomm EQ '{dithered flats-arc}', narc) - - ; Re-sort each list by exposure number - if (nflat GT 0) then $ - iflats = iflats[ sort(exposure[iflats]) ] - if (narc GT 0) then $ - iarcs = iarcs[ sort(exposure[iarcs]) ] - - ; Trim the flats to only the list of contiguous flats, - ; according to their exposure numbers - if (nflat GT 0) then $ - iflats = iflats[ where(exposure[iflats] - exposure[iflats[0]] $ - - lindgen(nflat) EQ 0, nflat) ] - - if (nflat GT 25) then begin - splog, 'Too many flats (' + string(nbias) + ') to load into memory' - splog, 'Skipping pixflat generation for camera ' + camnames[icam] - endif else if (nflat GE 7 AND narc GE 1) then begin - pixflatname = 'pixflat-' + string(mjdarr[iflats[0]],format='(i5.5)') $ - + '-' + camnames[icam] + '.fits' - splog, 'Generating pixel flat ' + pixflatname - splog, 'Output directory ' + outdir - spflatten2, files[iflats[(nflat-1)/2]], files[iarcs[0]], files[iflats], $ - outfile=pixflatname, outdir=outdir - endif else begin - splog, 'Expected sequence of at least 7 flats + 1 arc, got ' $ - + strtrim(string(nflat),2) + ' + ' + strtrim(string(narc),2) - splog, 'Skipping pixflat generation for camera ' + camnames[icam] - endelse - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spflatten.pro b/pro/spec2d/spflatten.pro deleted file mode 100644 index 817fa5afa..000000000 --- a/pro/spec2d/spflatten.pro +++ /dev/null @@ -1,175 +0,0 @@ -;+ -; NAME: -; spflatten -; -; PURPOSE: -; Create pixel-to-pixel flat-field from a stack of SDSS spectral flats. -; -; CALLING SEQUENCE: -; spflatten, flatname, [ pixflat, sigrej=, maxiter=, $ -; outfile=, indir=, outdir=, tmpdir=, $ -; bkspace=, nord=, lower=, upper= ] -; -; INPUTS: -; flatname - Name(s) of raw SDSS flat-field image(s). -; Note that many flats from many nights can be combined. -; -; OPTIONAL INPUTS: -; sigrej - Sigma rejection level; default to 1, 1, 1.1, 1.3, 1.6 or 1.9 -; for 1,2,3,4,5 or 6 flats. For more then 6 flats, default -; to 2.0. -; maxiter - Number of rejection iterations; default to 2. -; outfile - Write the image PIXFLAT to this file. -; indir - Input directory for FLATNAME; default to './' -; outdir - Output directory for OUTFILE; default to './' -; tmpdir - Directory for temporary files; default to same as OUTDIR -; -; PARAMETERS FOR SLATEC_SPLINEFIT: -; bkspace -; nord -; lower -; upper -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; pixflat - Image containing all the information about pixel-to-pixel -; variations. Illumination variations are removed. -; -; COMMENTS: -; This program writes 2*nflat temporary files to disk to save internal memory. -; But it still creates an two arrays (FLATARR (float) and OUTMASK (byte)) -; that is as large as all of the input flats. -; Thus, if you are using ten 16 MB flat images, -; that array will be 10*(16+4)=200 MB (in addition to a few other images). -; -; EXAMPLES: -; -; BUGS: -; Not sure what to do if exactly 2 frames are passed. -; -; PROCEDURES CALLED: -; djs_avsigclip() -; extract_image -; readfits() -; slatec_bvalu() -; slatec_splinefit() -; sdssproc -; writefits -; -; REVISION HISTORY: -; 13-Oct-1999 Written by D. Schlegel, APO -;- -;------------------------------------------------------------------------------ - -pro spflatten, flatname, pixflat, sigrej=sigrej, maxiter=maxiter, $ - outfile=outfile, indir=indir, outdir=outdir, tmpdir=tmpdir, $ - bkspace=bkspace, nord=nord, lower=lower, upper=upper - - if (NOT keyword_set(indir)) then indir = './' - if (NOT keyword_set(outdir)) then outdir = './' - if (NOT keyword_set(tmpdir)) then tmpdir = outdir - - if (N_elements(bkspace) EQ 0) then bkspace = 15 - if (N_elements(nord) EQ 0) then nord = 4 - if (N_elements(lower) EQ 0) then lower = 10 - if (N_elements(upper) EQ 0) then upper = 10 - - nflat = N_elements(flatname) - ngrow = 2 - - if (NOT keyword_set(sigrej)) then begin - if (nflat LE 2) then sigrej = 1.0 $ ; Irrelevant for only 1 or 2 flats - else if (nflat EQ 3) then sigrej = 1.1 $ - else if (nflat EQ 4) then sigrej = 1.3 $ - else if (nflat EQ 5) then sigrej = 1.6 $ - else if (nflat EQ 6) then sigrej = 1.9 $ - else sigrej = 2.0 - endif - if (NOT keyword_set(maxiter)) then maxiter = 2 - - tmpname1 = filepath('tmp.flatimg.'+strtrim(string(indgen(nflat)),2)+'.fits',$ - root_dir=tmpdir) - tmpname2 = filepath('tmp.ymodel.'+strtrim(string(indgen(nflat)),2)+'.fits',$ - root_dir=tmpdir) - - for iflat=0, nflat-1 do begin - - ;---------------------- - ; Read flat-field image - - sdssproc, flatname[iflat], flatimg, flativar, indir=indir, hdr=flathdr, /nopixflat - - dims = size(flatimg, /dimens) - nx = dims[0] - ny = dims[1] - - ;---------------------- - ; Create the array of preliminary flats - - if (iflat EQ 0) then pixflatarr = fltarr(nx,ny,nflat) - - ;---------------------- - ; Determine YMODEL image -print, 'Working on file ', fullname[0] - - ; There are still systematics in the result from EXTRACT_IMAGE, - ; so instead fit down each column of the image (which is slowly - ; varying) by just doing a median filter or spline fit. - ymodel = 0.0 * flatimg - yaxis = findgen(ny) - for i=0, nx-1 do begin - print, format='($, ".",i4.4,a5)',i,string([8b,8b,8b,8b,8b]) -; ymodel[i,*] = median(transpose(flatimg[i,*]), 25) - fullbkpt = slatec_splinefit(yaxis, flatimg[i,*], coeff, $ - invvar=flativar[i,*], bkspace=bkspace, nord=nord, $ - lower=lower, upper=upper, maxiter=3) - ymodel[i,*] = slatec_bvalu(yaxis, fullbkpt, coeff) - endfor - - pixflatarr[*,*,iflat] = (flatimg > 1) / (ymodel > 1) - - ;---------------------- - ; Write FLATIMG and YMODEL to disk - if (nflat GT 1) then begin - writefits, tmpname1[iflat], flatimg - writefits, tmpname2[iflat], ymodel - endif -flatimg = 0 -ymodel = 0 - - endfor - - if (nflat EQ 1) then begin - - pixflat = temporary(pixflatarr) - - endif else begin - ; Find deviant pixels in each pixflat - meanimg = djs_avsigclip(pixflatarr, 3, sigrej=sigrej, maxiter=maxiter, $ - outmask=outmask) -meanimg = 0 -pixflatarr = 0 - outmask = temporary(1-outmask) ; Change to 0=bad, 1=good - - flatimgsum = 0 - ymodelsum = 0 - for iflat=0, nflat-1 do begin - - flatimgsum = flatimgsum + outmask[*,*,iflat] * readfits(tmpname1[iflat]) - ymodelsum = ymodelsum + outmask[*,*,iflat] * readfits(tmpname2[iflat]) - - rmfile, tmpname1[iflat] - rmfile, tmpname2[iflat] - - endfor - - pixflat = (flatimgsum > 1) / (ymodelsum > 1) - endelse - - if (keyword_set(outfile)) then $ - writefits, outdir+outfile, pixflat - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spflatten2.pro b/pro/spec2d/spflatten2.pro deleted file mode 100644 index 7be869d6e..000000000 --- a/pro/spec2d/spflatten2.pro +++ /dev/null @@ -1,450 +0,0 @@ -;+ -; NAME: -; spflatten2 -; -; PURPOSE: -; Create pixel-to-pixel flat-field from a stack of SDSS spectral flats. -; -; CALLING SEQUENCE: -; spflatten2, flatname, arcname, allflats, [ pixflat, sigrej=, maxiter=, $ -; oldflat=, outfile=, indir=, outdir=, tmpdir=, $ -; pixspace=, nord=, lower=, upper=, mincounts=, /nodelete ] -; -; INPUTS: -; flatname - Name of flat image for tracing arc -; arcname - Name of arc image -; allflats - Name(s) of raw SDSS flat-field image(s). -; Note that many flats from many nights can be combined. -; -; OPTIONAL INPUTS: -; sigrej - Sigma rejection level; default to 1, 1, 1.1, 1.3, 1.6 or 1.9 -; for 1,2,3,4,5 or 6 flats. For more then 6 flats, default -; to 2.0. -; maxiter - Number of rejection iterations; default to 2. -; oldflat - Name of old flat-field from which to select pixels to mask; -; if not set, then read the masks in this source distribution. -; outfile - Write the image PIXFLAT to this file. -; indir - Input directory for FLATNAME; default to current directory -; outdir - Output directory for OUTFILE; default to current directory -; tmpdir - Directory for temporary files; default to current directory -; pixspace - Approximate spacing in pixels for break points in the -; spline fits to individual fibers; default to 50 pixels. -; Note that this spacing need be small enough to fit out -; the flux variations of multiple fibers crossing a single -; column, but it need not fit out the actual flat-field -; variations. -; mincounts - The summed model image must have a minimum of this many counts -; at each pixel, or the output flat is set to zero for that -; pixel; default to 100 counts. -; nodelete - If set, then do not delete temporary files. -; -; PARAMETERS FOR SLATEC_SPLINEFIT: -; nord - Default to 4 -; lower - Default to 2 -; upper - Default to 2 -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; pixflat - Image containing all the information about pixel-to-pixel -; variations. Illumination variations are removed. -; -; COMMENTS: -; This program writes 2*nflat temporary files to disk to save internal memory. -; But it still creates an two arrays (FLATARR (float) and OUTMASK (byte)) -; that is as large as all of the input flats. -; Thus, if you are using ten 16 MB flat images, -; that array will be 10*(16+4)=200 MB (in addition to a few other images). -; -; The header contains the number of files used in each camera (NEXP), -; and an identifier for each of those files (EXPID*). Those identifiers -; contain the camera name, MJD, flat exposure number, and arc exposure -; number, all dash-separated. -; -; EXAMPLES: -; -; BUGS: -; Not sure what to do if exactly 2 frames are passed. -; Pass UPPER and LOWER. -; Look for bad fibers or outlier fibers to exclude from superflat. -; Right now, we can get bad spline fits across the large hole in the -; b1 flat-field if the break points fall too close to the edges of -; that hole. Try to keep more data points between the last break point -; and the beginning of the hole, or do a linear interpolation across -; the hole. -; -; PROCEDURES CALLED: -; bspline_iterfit() -; bspline_valu() -; calcscatimage() -; djs_avsigclip() -; djs_filepath() -; extract_image -; fileandpath() -; genflatmask() -; readfits() -; repstr() -; rmfile -; sdssproc -; sxaddpar -; sxpar() -; superflat() -; tracefibercrude() -; traceset2xy -; writefits -; xy2traceset -; -; REVISION HISTORY: -; 13-Oct-1999 Written by D. Schlegel, APO -;- -;------------------------------------------------------------------------------ -pro spflatten2, flatname, arcname, allflats, pixflat, $ - sigrej=sigrej, maxiter=maxiter, lco=lco,$ - oldflat=oldflat, outfile=outfile, indir=indir, outdir=outdir, tmpdir=tmpdir, $ - pixspace=pixspace, nord=nord, lower=lower, upper=upper, mincounts=mincounts, $ - nodelete=nodelete - - if (N_elements(pixspace) EQ 0) then pixspace = 50 - if (N_elements(nord) EQ 0) then nord = 4 - if (N_elements(lower) EQ 0) then lower = 2 - if (N_elements(upper) EQ 0) then upper = 2 - if (NOT keyword_set(mincounts)) then mincounts = 100. - - nflat = N_elements(allflats) - ngrow = 2 - - if (NOT keyword_set(sigrej)) then begin - if (nflat LE 2) then sigrej = 1.0 $ ; Irrelevant for only 1 or 2 flats - else if (nflat EQ 3) then sigrej = 1.1 $ - else if (nflat EQ 4) then sigrej = 1.3 $ - else if (nflat EQ 5) then sigrej = 1.6 $ - else if (nflat EQ 6) then sigrej = 1.9 $ - else sigrej = 2.0 - endif - if (NOT keyword_set(maxiter)) then maxiter = 2 - - tmpname1 = repstr(fileandpath(allflats), 'sdR', 'tmp-flat') - tmpname1 = repstr(tmpname1, '.gz', '') - tmpname1 = djs_filepath(tmpname1, root_dir=tmpdir) - - tmpname2 = repstr(fileandpath(allflats), 'sdR', 'tmp-ymodel') - tmpname2 = repstr(tmpname2, '.gz', '') - tmpname2 = djs_filepath(tmpname2, root_dir=tmpdir) - - ;--------------------------------------------------------------------------- - ; First find the wavelength solution - ;--------------------------------------------------------------------------- - - ;------ - ; Read flat-field image that corresponds to the arc - - splog, 'Reading flat ', flatname - sdssproc, flatname[0], flatimg, flativar, indir=indir, hdr=flathdr, $ - /applybias, spectrographid=spectrographid, color=color - - dims = size(flatimg, /dimens) - nx = dims[0] - ny = dims[1] - - ;------ - ; Create spatial tracing from flat-field image - - splog, 'Tracing all fibers in ', flatname - xsol = tracefibercrude(flatimg, flativar, yset=ycen, maxdev=0.15) - - splog, 'Fitting traces in ', flatname - xy2traceset, ycen, xsol, tset, ncoeff=5, maxdev=0.1 - traceset2xy, tset, ycen, xsol - - ;------ - ; Read the arc - - splog, 'Reading arc ', arcname - sdssproc, arcname, arcimg, arcivar, indir=indir, hdr=archdr, $ - /applybias, color=color - - ;------ - ; Extract the arc image - - splog, 'Extracting arc image with simple gaussian' - sigma = 1.0 - proftype = 3 ; ??? - highrej = 15 - lowrej = 15 - npoly = 1 - wfixed = [1,1] ; Just fit the first gaussian term - - extract_image, arcimg, arcivar, xsol, sigma, flux, fluxivar, $ - proftype=proftype, wfixed=wfixed, $ - highrej=highrej, lowrej=lowrej, npoly=npoly, relative=1 -arcimg = 0 -arcivar = 0 - - ;------ - ; Compute wavelength calibration for arc lamp - - arccoeff = 5 - - splog, 'Searching for wavelength solution' - fitarcimage, flux, fluxivar, xpeak, ypeak, wset, ncoeff=arccoeff, $ - color=color, lampfile=lampfile, bestcorr=corr, lco=lco - if (NOT keyword_set(wset)) then $ - message, 'ABORT: Failed to find wavelength solution!' - - ;--------------------------------------------------------------------------- - ; Construct wavelength image - ;--------------------------------------------------------------------------- - - ;------ - ; Compute wavelength at every pixel on the CCD - ; WAVEIMG will be in units of log10(lambda) - - waveimg = fltarr(nx,ny) - - traceset2xy, wset, xx, loglam - - xy2traceset, transpose(xsol), transpose(loglam), tmpset, $ - func='legendre', ncoeff=5, xmin=0, xmax=nx-1, upper=2.0, lower=2.0 - xtmp = 0 - traceset2xy, tmpset, xtmp, waveimg - - ;--------------------------------------------------------------------------- - ; Read or create a mask image - ;--------------------------------------------------------------------------- - - maskimg = genflatmask(oldflat, spectrographid=spectrographid, color=color, $ - indir=indir) - - ; If a column contains fewer than 5 good points, mask that entire column - for i=0, nx-1 do begin - junk = where(maskimg[i,*] EQ 0, ngind) - if (ngind LT 5) then begin - splog, 'Masking column ', i - maskimg[i,*] = 1 - endif - endfor - - junk = where(maskimg NE 0, ct) - splog, 'Number of pixels in bad pixel mask = ', ct - - ;--------------------------------------------------------------------------- - ; Construct the flat - ;--------------------------------------------------------------------------- - -; ; Always select the same break points in log-wavelength for all fibers -; -; nbkpts = fix(ny / pixspace) + 2 -; bkpt = (findgen(nbkpts)-1) * (max(waveimg) - min(waveimg)) / (nbkpts-1) $ -; + min(waveimg) - - for iflat=0, nflat-1 do begin - - ;---------------------- - ; Read flat-field image - - sdssproc, allflats[iflat], flatimg, flativar, indir=indir, hdr=flathdr, $ - /applybias, /nopixflat - if (iflat EQ 0) then begin - hdr0 = flathdr - sxaddpar, hdr0, 'NEXP', nflat, 'Number of exposures in this file', $ - before='EXPTIME' - endif - - sxaddpar, hdr0, string(iflat+1,format='("EXPID",i3.3)'), $ - string( sxpar(flathdr,'CAMERAS'), $ - sxpar(flathdr,'EXPOSURE'), sxpar(archdr,'EXPOSURE'), $ - format='(a2,"-",i8.8,"-",i8.8)'), $ - 'ID string for exposure ' + strtrim(iflat+1,2), before='EXPTIME' - - ;---------------------- - ; Create spatial tracing from flat-field image - - xsol = tracefibercrude(flatimg, flativar, yset=ycen, maxdev=0.15) - - xy2traceset, ycen, xsol, tset, ncoeff=5, maxdev=0.1 - traceset2xy, tset, ycen, xsol - - ;---------------------- - ; Extract the flat-field vectors - ; Apply the bad pixel mask, MASKIMG, so that we avoid those bad regions - ; when computing the supersky vector. - - sigma = 1.0 - proftype = 3 ; exp^-|x|^3 really good for "in" focus red exposures - highrej = 15 - lowrej = 15 - npoly = 9 ; Try fitting 9 polynomial background terms to each row - wfixed = [1,1] ; Just fit the first gaussian term - - extract_image, flatimg, flativar * (1-maskimg), $ - xsol, sigma, flux, fluxivar, $ - proftype=proftype, wfixed=wfixed, $ - highrej=highrej, lowrej=lowrej, npoly=npoly, /relative, $ - ansimage=ansimage - - ;---------------------- - ; Construct the "superflat" vector for this particular frame - - x2 = xsol / 2048. ; CCD-X position - asset = superflat(flux, fluxivar, wset, x2=x2, $ - fibermask=fibermask, minval=0.0, lower=lower, upper=upper, $ - nord=4, npoly=3) -flux = 0 -fluxivar = 0 - x2 = float(djs_laxisgen([nx,ny],iaxis=0)) / 2048. ; CCD-X position - fitimg = float( bspline_valu(waveimg, asset, x2=x2) ) -fitimg = fitimg > 0.02 ; ??? - - ;---------------------- - ; Construct the scattered light image - - dims = size(xsol,/dimens) - nrow = dims[0] - ntrace = dims[1] - nterms = n_elements(wfixed) - yfnorm = (2.0*findgen(nrow)-nrow)/nrow - scatfit = fchebyshev(yfnorm,npoly) # ansimage[ntrace*nterms:*,*] - - ;---------------------- - ; Subtract scattered light, then divide by the superflat image. - ; Then we're left with an image that should show a flat response - ; if every pixel were the equally sensitive, except we'll still - ; see the 320 fiber profiles. - - flatimg = (flatimg - scatfit) / fitimg - flativar = flativar * fitimg^2 - fitimg = 0 - -; Test extraction... -;extract_image, flatimg, flativar, xsol, sigma, tmpflux, tmpivar, $ -; proftype=proftype, wfixed=wfixed, $ -; highrej=highrej, lowrej=lowrej, npoly=npoly, relative=1 -;splot, median(tmpflux[*,0], 11) -;for i=0,15 do soplot, median(tmpflux[*,i*15], 11) - - ;---------------------- - ; Create the array of preliminary flats - - if (iflat EQ 0) then begin - pixflatarr = fltarr(nx,ny,nflat) - inmask = bytarr(nx,ny,nflat) - endif - - ;---------------------- - ; Determine YMODEL image - - splog, 'Solving for YMODEL' - -;splot,transpose(10^waveimg[1000,*]),transpose(flatimg[1000,*]) -;for i=0,5 do soplot, transpose(10^waveimg[i*10,*]),transpose(flatimg[i*10,*]) - - ymodel = 0.0 * flatimg - for i=0, nx-1 do begin - ; Burles counter for column number... - print, format='($, ".",i4.4,a5)',i,string([8b,8b,8b,8b,8b]) - - indx = where(maskimg[i,*] EQ 0 AND flativar[i,*] GT 0, ngind) - - ; If fewer than 5 good points, then fit all points in this column. - ; Also, change the values of FLATIVAR to prevent SLATEC_SPLINEFIT() - ; from crashing. - if (ngind LT 5) then begin - indx = lindgen(ny) - flativar[i,*] = 1.0 - endif - - ;------ - ; The following spline fit chooses breaks points evenly separated - ; in log-wavelength. - -; yaxis = waveimg[i,*] -; fullbkpt = slatec_splinefit(yaxis[indx], flatimg[i,indx], coeff, $ -; invvar=flativar[i,indx], bkpt=bkpt, nord=nord, $ -; lower=lower, upper=upper, maxiter=3) - - ;------ - ; The following spline fit chooses breaks points evenly separated - ; in row number. - - yaxis = findgen(ny) - - sset = bspline_iterfit(yaxis[indx], transpose(flatimg[i,indx]), $ - invvar=transpose(flativar[i,indx]), nord=nord, bkspace=pixspace, $ - upper=4, lower=4, maxiter=3, maxrej=ceil(0.05*n_elements(indx)), $ - requiren=1) - ymodel[i,*] = bspline_valu(yaxis, sset) - -; fullbkpt = slatec_splinefit(yaxis[indx], flatimg[i,indx], coeff, $ -; invvar=flativar[i,indx], bkspace=pixspace, nord=nord, $ -; lower=4, upper=4, maxiter=3) -; ymodel[i,*] = slatec_bvalu(yaxis, fullbkpt, coeff) - - endfor - - ;---------------------- - ; Set a pixel mask that is bad for YMODEL counts <= 1, or for pixels - ; more than 2 pixels to the left (right) of the first (last) fiber. - - inmask[*,*,iflat] = ymodel GT 1 ; =1 for good - for iy=0, ny-1 do begin - x1 = long(xsol[iy,0]) - 3 - x2 = long(xsol[iy,ntrace-1]) + 3 - if (x1 GE 0) then inmask[0:x1,iy,iflat] = 0 - if (x2 LE nx-1) then inmask[x2:nx-1,iy,iflat] = 0 - endfor - - pixflatarr[*,*,iflat] = (flatimg * inmask[*,*,iflat]) $ - / (ymodel * inmask[*,*,iflat] + (inmask[*,*,iflat] EQ 0)) - - ;---------------------- - ; Write FLATIMG and YMODEL to disk - if (nflat GT 1) then begin - writefits, tmpname1[iflat], flatimg - writefits, tmpname2[iflat], ymodel - endif -flatimg = 0 -ymodel = 0 - - endfor - - if (nflat EQ 1) then begin - - pixflat = temporary(pixflatarr) - - endif else begin - ; Find deviant pixels in each pixflat - inmask = temporary(1b - inmask) ; Change to =0 for good - meanimg = djs_avsigclip(pixflatarr, 3, sigrej=sigrej, maxiter=maxiter, $ - inmask=inmask, outmask=outmask) -meanimg = 0 -pixflatarr = 0 - - outmask = temporary(1-outmask) ; Change to 0=bad, 1=good - - flatimgsum = 0 - ymodelsum = 0 - for iflat=0, nflat-1 do begin - - junk = where(outmask[*,*,iflat] EQ 0, ct) - splog, 'Number of pixels masked in ', allflats[iflat], ' = ', ct - - flatimgsum = flatimgsum + outmask[*,*,iflat] * readfits(tmpname1[iflat]) - ymodelsum = ymodelsum + outmask[*,*,iflat] * readfits(tmpname2[iflat]) - - if (NOT keyword_set(nodelete)) then begin - rmfile, tmpname1[iflat] - rmfile, tmpname2[iflat] - endif - - endfor - - qgood = ymodelsum GE mincounts - pixflat = qgood * (flatimgsum > 0) / (ymodelsum + (1-qgood)) - endelse - - if (keyword_set(outfile)) then $ - writefits, djs_filepath(outfile, root_dir=outdir), pixflat, hdr0 - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spflux_read_desi.pro b/pro/spec2d/spflux_read_desi.pro deleted file mode 100644 index e43532042..000000000 --- a/pro/spec2d/spflux_read_desi.pro +++ /dev/null @@ -1,175 +0,0 @@ -;+ -; NAME: -; spflux_read_desi -; -; PURPOSE: -; Read the Kurucz models at the specified log-lambda and resolution -; -; CALLING SEQUENCE: -; spflux_read_desi -; modelflux = spflux_read_desi( loglam, dispimg, [ iselect=, $ -; kindx_return= ] ) -; -; INPUTS: -; loglam - Log10 wavelengths (vacuum Angstroms) [NPIX] -; dispimg - Dispersion image, in units of pixels [NPIX] -; -; OPTIONAL INPUTS: -; iselect - If set, then only return these model numbers; default to -; returning all models -; -; OUTPUTS: -; modelflux - Model fluxes [NPIX,NMODEL] -; -; OPTIONAL OUTPUTS: -; kindx_return- Structure with model parameters for each model -; -; COMMENTS: -; Note that this function allocates a ridiculous amount of memory -; for caching the oversampled spectra at many dispersions in GRIDFLUX. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $IDLSPEC2D_DIR/templates/star_templates_v2.2.fits -; -function spflux_read_desi, loglam, dispimg, iselect=iselect1, $ - kindx_return=kindx_return - - common com_spflux_kurucz, kfile, kflux, kindx, kloglam, nmodel, $ - gridsig, gridlam, gridflux - - if (n_elements(loglam) NE n_elements(dispimg)) then $ - message, 'LOGLAM and DISPIMG must have same number of elements!' - - ;---------- - ; Read the DESI stellar models - - if (NOT keyword_set(kfile)) then begin - ; Read the file with the desi models as generated - ; The units should already be erg/cm^2/s/Ang. - splog, 'Reading DESI stellar models' - kfile = filepath('desi_stellar_templates_v2.2_trimmed.fits', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='templates') - krawflux = mrdfits(kfile, 0, hdr, /silent) ; flux - kindx = mrdfits(kfile, 1, /silent) - dims = size(krawflux, /dimens) - nrawpix = dims[0] - nmodel = dims[1] - waves = mrdfits(kfile, 2, /silent) - - ; The models will be sub-sampled relative to the SDSS pix scale of 1d-4: - subsamp = 5 - kdlog = 1.d-4 / subsamp - - ;-- JEB 2018-05 desi templates are already in vacuum wavelength - ; These models are sampled linearly in **air** wavelength. - ; Re-map them to linear in (vacuum) log-wavelength. - ; airtovac, waves ; Remap wavelengths from air to vacuum - rawloglam = alog10(waves) - splog, 'Remapping models to log-wavelengths' - minlog1 = min(rawloglam, max=maxlog1) - kloglam = wavevector(minlog1, maxlog1, binsz=kdlog) - npix = n_elements(kloglam) - kflux = fltarr(npix,nmodel) - for imodel=0L, nmodel-1 do begin - splog, ' rebinning model '+strtrim(imodel,2) - kflux[*,imodel] = rebin_spectrum(krawflux[*,imodel], rawloglam, kloglam) - endfor - - ;-- JEB 2018-05 removing this step since desi templates are in loglam already - ; The above rebinning conserves flux, so we are no longer in - ; units of erg/cm^2/s/Ang. Divide by one power of wavelength - ; to recover those units. (The -4. is an arbitrary scaling.) - ;for imodel=0L, nmodel-1 do $ - ; kflux[*,imodel] = kflux[*,imodel] / 10.d0^(kloglam-4.) - - - ;-- JEB 2018-05 removing convolution - ; Convolve the Kurucz models with a boxcar response - ; representing the size of the SDSS pixels. - ;splog, 'Convolving Kurucz models with SDSS pixel size' - ;if (subsamp GT 1) then begin - ; if ((subsamp MOD 2) EQ 0) then $ - ; kern = ([0.5, fltarr(subsamp-1) + 1.0, 0.5]) / subsamp $ - ; else $ - ; kern = (fltarr(subsamp) + 1.0) / subsamp - ; for imodel=0L, nmodel-1 do begin - ; kflux[*,imodel] = convol(kflux[*,imodel], kern, /center) - ; endfor - ;endif - - ; Compute the spectro-photo fluxes for these spectra - ; by just using these high-resolution redshift=0 spectra. - ; Formally, I should re-compute these fluxes after redshifting - ; and convolving with the dispersion, but I'm choosing to - ; ignore those tiny effects. -; wavevec = 10.d0^kloglam -; flambda2fnu = wavevec^2 / 2.99792e18 -; fthru = filter_thru(kflux * rebin(flambda2fnu,npix,nmodel), $ -; waveimg=wavevec, /toair) -; mag = - 2.5 * alog10( fthru * 10^((48.6 - 2.5*17.)/2.5) ) -; kindx.mag = transpose(mag) - - ; Construct a grid of these models at various possible resolutions - splog, 'Convolving Kurucz models with dispersions' - gridsig = 0.70 + findgen(21) * 0.05 ; span range [0.7,1.7] - nkpix = 7 * subsamp + 1 - nres = n_elements(gridsig) - gridlam = kloglam ; Keep the same wavelength mapping - gridflux = fltarr(npix, nres, nmodel) - for ires=0L, nres-1 do begin -; print, format='("Grid ",i5," of ",i5,a1,$)', ires, nres, string(13b) - kern = exp(-0.5 * (findgen(nkpix*2+1) - nkpix)^2 $ - / (gridsig[ires]*subsamp)^2) - kern = kern / total(kern) - for imodel=0L, nmodel-1 do begin - gridflux[*,ires,imodel] = convol(kflux[*,imodel], kern, /center) - endfor - endfor - print - endif - - ;---------- - ; Return just with KINDX if LOGLAM,DISPIMG are not set - - if (n_elements(iselect1) GT 0) then iselect = iselect1 $ - else iselect = lindgen(nmodel) - nselect = n_elements(iselect) - if (arg_present(kindx_return)) then kindx_return = kindx[iselect] - if (NOT keyword_set(loglam)) then return, 0 - - ;---------- - ; Map the wavelength values and dispersion values onto pixel numbers - ; on the grid of models. - - xpos = (loglam - gridlam[0]) / (gridlam[1] - gridlam[0]) - xpos = (xpos > 0) < (n_elements(gridlam)-1) - ypos = (dispimg - gridsig[0]) / (gridsig[1] - gridsig[0]) - ypos = (ypos > 0) < (n_elements(gridsig)-1) - - ;---------- - ; Interpolate within these models - - ndim = size(loglam, /n_dimen) - dims = size(loglam, /dimens) - npix = dims[0] - if (ndim EQ 1) then nobj = 1 $ - else nobj = dims[1] - modflux = fltarr(npix, nobj, nselect) - for iobj=0L, nobj-1 do begin - for j=0L, nselect-1 do begin - imodel = iselect[j] - modflux[*,iobj,j] = interpolate(gridflux[*,*,imodel], $ - xpos[*,iobj], ypos[*,iobj]) - endfor - endfor - - return, modflux -end -;------------------------------------------------------------------------------ - - - diff --git a/pro/spec2d/spflux_v5.pro b/pro/spec2d/spflux_v5.pro deleted file mode 100644 index 9f6b33463..000000000 --- a/pro/spec2d/spflux_v5.pro +++ /dev/null @@ -1,1271 +0,0 @@ -;+ -; NAME: -; spflux_v5 -; -; PURPOSE: -; Compute flux-calibration vectors for each CCD+exposure from std stars -; -; CALLING SEQUENCE: -; spflux_v5, objname, [ adderr=, combinedir=, minfracthresh= ] -; -; INPUTS: -; objname - File names (including path) for spFrame files, all from -; either spectro-1 or spectro-2, but not both! -; -; OPTIONAL INPUTS: -; adderr - Additional error to add to the formal errors, as a -; fraction of the flux; default to 0.03 (3 per cent) -; combinedir - Directory for output files -; minfracthresh - the threshold for the minimum number of good pixels -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; One output file is written for every input file OBJNAME, -; prefixed with spFluxcalib. It containts the following: -; HDU #0: Calibration image -; HDU #1: Trace-set used to construct the former -; HDU #2: Structure with info on each standard star -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; airtovac -; bspline_bkpts() -; bspline_iterfit() -; bspline_valu() -; combine1fiber -; computechi2() -; correct_dlam -; djs_filepath() -; djs_maskinterp() -; djs_median() -; djs_oplot -; djs_plot -; djs_xyouts -; euler -; ext_odonnell -; fileandpath() -; filter_thru() -; find_nminima() -; get_tai -; mrdfits() -; mwrfits -; pixelmask_bits() -; rebin_spectrum() -; spframe_read -; skymask() -; spflux_read_desi() -; splog -; tai2airmass() -; wavevector() -; -; INTERNAL SUPPORT ROUTINES: -; spflux_masklines() -; spflux_medianfilt() -; spflux_bestmodel() -; spflux_goodfiber() -; spflux_bspline() -; spflux_mratio_flatten() -; spflux_plotcalib -; sxaddpar -; sxpar() -; -; REVISION HISTORY: -; 05-Feb-2004 Written by D. Schlegel, Princeton -;- -;------------------------------------------------------------------------------ -; Create a mask of 1's and 0's, where wavelengths that should not be used -; for fluxing (like near stellar features) are masked. -; 0 = not near lines, 1 = near lines -; HWIDTH = half width in log-wavelength for masking stellar lines - -function spflux_balmerfix, calibimg, loglam -; Implement J. Bautista's simple Balmer-line interpolation recipe -; Coded by A. Bolton, 2014-Jan-17 - -; Set up the wavelength ranges to interpolate over: -lamcen = [4860.09, 4339.36, 4100.70, 3969.07, 3888.07] -lam_hw = [35., 35., 35., 30., 25.] -loglam_hi = alog10(lamcen + lam_hw) -loglam_lo = alog10(lamcen - lam_hw) - -n_band = n_elements(lamcen) -n_spec = (size(calibimg))[2] - -new_calibimg = calibimg - -; We'll do this in a plodding loopy way: -for i = 0, n_spec-1 do begin - for j = 0, n_band-1 do begin - ; Test for band coverage: - n_below = total(loglam[*,i] lt loglam_lo[j]) - n_above = total(loglam[*,i] gt loglam_hi[j]) - if ((n_below gt 0) and (n_above gt 0)) then begin - wh_mask = where((loglam[*,i] ge loglam_lo[j]) and (loglam[*,i] le loglam_hi[j])) - idx_lo = min(wh_mask) - 1 - idx_hi = max(wh_mask) + 1 - ndiff = idx_hi - idx_lo - ramp_up = findgen(ndiff+1) / float(ndiff) - new_calibimg[idx_lo:idx_hi,i] = $ - calibimg[idx_hi,i] * ramp_up + calibimg[idx_lo,i] * (1. - ramp_up) - endif - endfor -endfor - -return, new_calibimg -end - - -function spflux_masklines, loglam, hwidth=hwidth, stellar=stellar, $ - telluric=telluric - - if (NOT keyword_set(hwidth)) then $ - hwidth = 5.7e-4 ; Default is to mask +/- 5.7 pix = 400 km/sec - - mask = bytarr(size(loglam,/dimens)) - - if (keyword_set(stellar)) then begin - starwave = [ $ - 3830.0 , $ ; ? (H-7 is at 3835 Ang) - 3889.0 , $ ; H-6 - 3933.7 , $ ; Ca_k - 3968.5 , $ ; Ca_H (and H-5 at 3970. Ang) - 4101.7 , $ ; H-delta - 4300. , $ ; G-band - 4305. , $ ; G-band - 4310. , $ ; more G-band - 4340.5 , $ ; H-gamma - 4861.3 , $ ; H-beta - 5893.0 , $ ; Mg - 6562.8 , $ ; H-alpha - 8500.8 , $ - 8544.6 , $ - 8665.0 , $ - 8753.3 , $ - 8866.1 , $ - 9017.5 , $ - 9232.0 ] - airtovac, starwave - - for i=0L, n_elements(starwave)-1 do begin - mask = mask OR (loglam GT alog10(starwave[i])-hwidth $ - AND loglam LT alog10(starwave[i])+hwidth) - endfor - endif - - if (keyword_set(telluric)) then begin - tellwave1 = [6850., 7150., 7560., 8105., 8930.] - tellwave2 = [6960., 7350., 7720., 8240., 9030.] - for i=0L, n_elements(tellwave1)-1 do begin - mask = mask OR (loglam GT alog10(tellwave1[i]) $ - AND loglam LT alog10(tellwave2[i])) - endfor - endif - - return, mask -end - -; reject oulier points when several exposures of same star -function spflux_reject_outliers, medflux, sqivar, loglam -; JG : we can have crazy flux points in one spectrum that is driving -; the chi2, we have to identify them without altering the model the -; selection - - qgood = 1-0*medflux - ;print, size(qgood) - ;print, size(medflux) - - ndim=size(medflux, /n_dimen) - if (ndim lt 2 ) then begin -; cant do anything here - return, qgood - endif - dims=size(medflux, /dimens) - nwave=dims[0] - nspec=dims[1] - - ivar=sqivar^2 - - ; do the combined median-filtered spectrum on average loglam grid - minloglam=1000. - maxloglam=0. - for i=0,nspec-1 do begin - selection=where(ivar[*,i] gt 0) - if ( size(selection,/dimens) eq 0 ) then continue - tmp=min(loglam[selection,i]) - minloglam=(tmp < minloglam) - tmp=max(loglam[selection,i]) - maxloglam=(tmp > maxloglam) - endfor - if ( maxloglam lt minloglam ) then begin - splog, "warning no valid data" - return, qgood - endif - lstep=0.0001 - nloglam=(maxloglam-minloglam)/lstep+2 - newloglam=lindgen(nloglam)*lstep+minloglam - nnwave=size(newloglam,/dimens) - - nbadtot=0 - for iloop=0, 30 do begin - -; mean spec - newflux=0.*newloglam - newfluxivar=0.*newloglam - for ispec=0L, nspec -1 do begin - newflux = newflux + INTERPOL(ivar[*,ispec]*medflux[*,ispec],loglam[*,ispec],newloglam) - newfluxivar = newfluxivar + INTERPOL(ivar[*,ispec],loglam[*,ispec],newloglam) - endfor - newflux = newflux/(newfluxivar+(newfluxivar eq 0)) - - ;( combine1fiber is very bizarre, we don't use it) - - -; map back to individual spec loglam - meanflux=medflux*0. - for ispec=0L, nspec -1 do begin - meanflux[*,ispec]=INTERPOL(newflux,newloglam,loglam[*,ispec]) - endfor - - nbadloop=0 - chi2=ivar*(medflux-meanflux)^2 - for ispec=0, nspec-1 do begin - bad=where(chi2[*,ispec] gt 9.,nbad) - if ( nbad gt 0 ) then begin - qgood[bad,ispec]=0 - ivar[bad,ispec]=0 - nbadloop = nbadloop + nbad - nbadtot = nbadtot + nbad - ;print , "spec=",ispec," nbad=",nbad - - endif - endfor - - chi2=ivar*(medflux-meanflux)^2 - tchi2=total(chi2) - dof=total(ivar gt 0.)-nnwave - ; print, "iter=", iloop, " CHI2/NDF (rejection)=",tchi2/dof, " nbad=",nbadloop - if ( nbadloop eq 0 ) then break - endfor - -; test -; mwrfits, medflux, "medflux.fits", /create -; mwrfits, sqrt(ivar), "medflux.fits" -; mwrfits, loglam, "medflux.fits" -; mwrfits, meanflux, "medflux.fits" -; mwrfits, chi2 , "medflux.fits" -; STOP - - splog, "CHI2/NDF (rejection)=",tchi2/dof," nbad=", nbadtot - - return, qgood -end - -;------------------------------------------------------------------------------ -; Divide the spectrum by a median-filtered spectrum. -; The median-filtered version is computed ignoring stellar absorp. features. - -function spflux_medianfilt, loglam, objflux, objivar, width=width, $ - newivar=newivar, _EXTRA=KeywordsForMedian - - ndim = size(objflux, /n_dimen) - dims = size(objflux, /dimens) - npix = dims[0] - if (ndim EQ 1) then nspec = 1 $ - else nspec = dims[1] - - ;---------- - ; Loop over each spectrum - - medflux = 0 * objflux - if (arg_present(objivar)) then newivar = 0 * objivar - for ispec=0L, nspec-1 do begin - - ; For the median-filter, ignore points near stellar absorp. features, - ; but keep points near telluric bands. - qgood = 1 - spflux_masklines(loglam[*,ispec], /stellar) - - ; JG : It was not a good idea to mask objivar=0 here - ; if (arg_present(objivar)) then qgood = qgood*(objivar gt 0) ; JG - - - - ; Median-filter, but skipping masked points - igood = where(qgood, ngood) - thisback = fltarr(dims[0]) - if (ngood GT width) then begin - thisback[igood] = djs_median(objflux[igood,ispec], width=width, $ - _EXTRA=KeywordsForMedian) - endif - thisback = djs_maskinterp(thisback, (qgood EQ 0), /const) - - ; Force the ends of the background to be the same as the spectrum, - ; which will force the ratio of the two to be unity. - hwidth = ceil((width-1)/2.) - thisback[0:hwidth] = objflux[0:hwidth,ispec] - thisback[npix-1-hwidth:npix-1] = objflux[npix-1-hwidth:npix-1,ispec] - czero2 = where(thisback eq 0., count2) - if count2 gt 0 then thisback[czero2] = 1. - medflux[*,ispec] = objflux[*,ispec] / thisback - if (arg_present(objivar)) then $ - newivar[*,ispec] = objivar[*,ispec] * thisback^2 - endfor - - return, medflux -end -;------------------------------------------------------------------------------ -function spflux_bestmodel, loglam, objflux, objivar, dispimg, kindx=kindx1, $ - plottitle=plottitle, newobjivar=newobjivar - - filtsz = 99 ; ??? - cspeed = 2.99792458e5 - - ndim = size(objflux, /n_dimen) - dims = size(objflux, /dimens) - npix = dims[0] - if (ndim EQ 1) then nspec = 1 $ - else nspec = dims[1] - - ;---------- - ; Median-filter the object fluxes - - medflux = spflux_medianfilt(loglam, objflux, objivar, $ - width=filtsz, boundary='reflect', newivar=medivar) - sqivar = sqrt(medivar) - - ;---------- - ; Mask out the telluric bands - - sqivar = sqivar * (1 - spflux_masklines(loglam, /telluric)) - - ;---------- - ; JG : find pixel outliers and mask them - - qgood = spflux_reject_outliers(medflux, sqivar,loglam) ; JG - nbad=total(qgood eq 0) ; JG - if (nbad gt 0 ) then begin ; JG - sqivar= sqivar*qgood ; JG - medivar= medivar*qgood ; JG - objivar= objivar*qgood ; JG - nok = total(sqivar>0) ; JG - splog, 'Warning: discarding ', nbad, ' pixels, leaving ',nok ;JG - endif ; JG - - ;---------- - ; Load the Kurucz models into memory - - junk = spflux_read_desi(kindx=kindx) - nmodel = n_elements(kindx) - - ;---------- - ; Fit the redshift just by using a canonical model - - ifud = where(kindx.teff EQ 6000 AND kindx.g EQ 4 AND kindx.feh EQ -1.5) - if (ifud[0] EQ -1) then $ - message, 'Could not find fiducial model!' - nshift = 20 - logshift = (-nshift/2. + findgen(nshift)) * 1.d-4 - chivec = fltarr(nshift) - for ishift=0L, nshift-1 do begin - modflux = spflux_read_desi(loglam-logshift[ishift], $ - dispimg, iselect=ifud) - ; Median-filter this model - medmodel = spflux_medianfilt(loglam, modflux, $ - width=filtsz, boundary='reflect') ;-- JEB adding reflect (correctly) - - for ispec=0L, nspec-1 do begin - chivec[ishift] = chivec[ishift] + computechi2(medflux[*,ispec], $ - sqivar[*,ispec], medmodel[*,ispec]) - endfor - endfor - zshift = (10.d^logshift - 1) ; Convert log-lambda shift to redshift - zpeak = find_nminima(chivec, zshift, errcode=errcode) - splog, 'Best-fit velocity for std star = ', zpeak * cspeed, ' km/s' - if (errcode NE 0) then $ - splog, 'Warning: Error code ', errcode, ' fitting std star' - - ;---------- - ; Generate the Kurucz models at the specified wavelengths + dispersions, - ; using the best-fit redshift - - modflux = spflux_read_desi(loglam-alog10(1.+zpeak), dispimg) - - ;---------- - ; Loop through each model, computing the best chi^2 - ; as the sum of the best-fit chi^2 to each of the several spectra - ; for this same object. - ; We do this after a median-filtering of both the spectra + the models. - - chiarr = fltarr(nmodel,nspec) - chivec = fltarr(nmodel) - for imodel=0L, nmodel-1 do begin - ; Median-filter this model - medmodel = spflux_medianfilt(loglam, modflux[*,*,imodel], $ - width=filtsz, boundary='reflect') ;-- JEB adding reflect (correctly) - - for ispec=0L, nspec-1 do begin - chiarr[imodel,ispec] = computechi2(medflux[*,ispec], $ - sqivar[*,ispec], medmodel[*,ispec]) - endfor - - chivec[imodel] = total(chiarr[imodel,*]) - - endfor - - - - - - ;---------- - ; Return the best-fit model - - minchi2 = min(chivec, ibest) - dof = total(sqivar NE 0) - splog, 'Best-fit total chi2/DOF = ', minchi2/(dof>1) - bestflux = modflux[*,*,ibest] - ;-- JEB update medmodel for QA plots - medmodel = spflux_medianfilt(loglam, bestflux, $ - width=filtsz, boundary='reflect') ;-- JEB adding reflect (correctly) - -; if minchi2/(dof>1) gt 5 then begin ; JG -; -; print, "WRITING" -; -; medmodel = spflux_medianfilt(loglam, bestflux, $ -; width=filtsz, /reflect) -; chi2 = (sqivar[*,*]*(medflux[*,*]-medmodel[*,*]))^2 -; mwrfits, medflux, "medflux.fits", /create -; mwrfits, sqivar, "medflux.fits" - ; mwrfits, loglam, "medflux.fits" - ; mwrfits, medmodel, "medflux.fits" - ;; mwrfits, chi2, "medflux.fits" - ; mwrfits, qgood, "medflux.fits" -; for ispec=0, nspec-1 do begin -; bad=where(qgood[*,ispec] eq 0,nbad) -; print , "for spec=",ispec," nbad=",nbad -; endfor -; STOP -; endif - - ;---------- - ; Compute the chi^2 just around the stellar absorp. lines - ; for the best-fit model star - - mlines = spflux_masklines(loglam, hwidth=12e-4, /stellar) - linesqivar = sqivar * mlines - linechi2 = 0. - for ispec=0L, nspec-1 do begin - thismodel = spflux_medianfilt(loglam, modflux[*,ispec,ibest], $ - width=filtsz, boundary='reflect') ;-- JEB adding reflect (correctly) - linechi2 = linechi2 + computechi2(medflux[*,ispec], $ - linesqivar[*,ispec], thismodel) - endfor - linedof = total(linesqivar NE 0) - splog, 'Best-fit line chi2/DOF = ', linechi2/(linedof>1) - - ;---------- - ; Compute the median S/N for all the spectra of this object, - ; and for those data just near the absorp. lines - - sn_median = median(objflux * sqrt(objivar)) - indx = where(mlines, ct) - if (ct GT 1) then $ - linesn_median = median(objflux[indx] * sqrt(objivar[indx])) $ - else $ - linesn_median = 0. - splog, 'Full median S/N = ', sn_median - splog, 'Line median S/N = ', linesn_median - - kindx1 = create_struct(kindx[ibest], $ - 'IMODEL', ibest, $ - 'Z', zpeak, $ - 'SN_MEDIAN', sn_median, $ - 'CHI2', minchi2, $ - 'DOF', dof, $ - 'LINESN_MEDIAN', linesn_median, $ - 'LINECHI2', linechi2, $ - 'LINEDOF', linedof) - - ;---------- - ; Plot the filtered object spectrum, overplotting the best-fit Kurucz model - - ; Select the observation to plot that has the highest S/N, - ; and one that goes blueward of 4000 Ang. - snvec = total(objflux * sqrt(objivar), 1) $ - * (10.^loglam[0,*] LT 4000 OR 10.^loglam[npix-1,*] LT 4000) - junk = max(snvec, iplot) ; Best blue exposure - - snvec = total(objflux * sqrt(objivar), 1) $ - * (10.^loglam[0,*] GT 8600 OR 10.^loglam[npix-1,*] GT 8600) - junk = max(snvec, jplot) ; Best red exposure - - ; medbest = spflux_medianfilt(loglam, bestflux, $ - ; width=filtsz, /reflect) - ; mwrfits, medflux, "medflux.fits", /create - ; mwrfits, sqivar, "medflux.fits" - ; mwrfits, loglam, "medflux.fits" - ; mwrfits, medmodel, "medflux.fits" - ; mwrfits, bestflux, "medflux.fits" - ; mwrfits, medbest, "medflux.fits" - - - - csize = 0.85 - djs_plot, [3840., 4120.], [0.0, 1.4], /xstyle, /ystyle, /nodata, $ - xtitle='Wavelength [Ang]', ytitle='Normalized Flux', $ - title=plottitle - if (iplot[0] NE -1) then begin - djs_oplot, 10^loglam[*,iplot], medflux[*,iplot] - djs_oplot, 10^loglam[*,iplot], medmodel[*,iplot], color='red' - endif - xyouts, 3860, 1.25, kindx1.model, charsize=csize - djs_xyouts, 4000, 0.3, charsize=csize, $ - string(minchi2/(dof>1), format='("Total \chi^2/DOF=",f5.2)') - djs_xyouts, 4000, 0.2, charsize=csize, $ - string(linechi2/(linedof>1), format='("Lines \chi^2/DOF=",f5.2)') - djs_xyouts, 3860, 0.1, string(kindx1.feh, kindx1.teff, kindx1.g, $ - zpeak*cspeed, $ - format='("Fe/H=", f4.1, " T_{eff}=", f6.0, " g=", f3.1, " cz=",f5.0)'), $ - charsize=csize - - djs_plot, [8440., 9160.], [0.0, 1.4], /xstyle, /ystyle, /nodata, $ - xtitle='Wavelength [Ang]', ytitle='Normalized Flux' - if (jplot[0] NE -1) then begin - djs_oplot, 10^loglam[*,jplot], medflux[*,jplot] - djs_oplot, 10^loglam[*,jplot], medmodel[*,jplot], color='red' - endif - - ;;-- JEB desi test - ;STOP - - if (keyword_set(newobjivar)) then newobjivar=objivar ; JG - - return, bestflux -end -;------------------------------------------------------------------------------ -function spflux_goodfiber, pixmask - qgood = ((pixmask AND pixelmask_bits('NOPLUG')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('BADTRACE')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('BADFLAT')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('BADARC')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('MANYBADCOLUMNS')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('NEARWHOPPER')) EQ 0) $ - AND ((pixmask AND pixelmask_bits('MANYREJECTED')) EQ 0) - return, qgood -end - -; JG : add masking of bad extraction ! -function spflux_goodextraction, pixmask - qgood = ((pixmask AND pixelmask_bits('FULLREJECT')) EQ 0) -; AND ((pixmask AND pixelmask_bits('NODATA')) EQ 0) -; AND ((pixmask AND pixelmask_bits('NOSKY')) EQ 0) $ -; AND ((pixmask AND pixelmask_bits('PARTIALREJECT')) EQ 0) -; AND ((pixmask AND pixelmask_bits('BRIGHTSKY')) EQ 0) $ -; AND ((pixmask AND pixelmask_bits('NEARBADPIXEL')) EQ 0) $ -; AND ((pixmask AND pixelmask_bits('LOWFLAT')) EQ 0) - return, qgood -end - - -;------------------------------------------------------------------------------ -function spflux_bspline, loglam, mratio, mrativar, outmask=outmask, $ - everyn=everyn, airmass=airmass - - isort = sort(loglam) - nord = 3 - - ; Choose the break points using the EVERYN option, but masking - ; out more pixels near stellar features just when selecting them. - mask1 = 1 - spflux_masklines(loglam, hwidth=12.e-4, /stellar) - ii = where(mrativar[isort] GT 0 AND mask1[isort] EQ 1) - bkpt = 0 - fullbkpt = bspline_bkpts(loglam[isort[ii]], everyn=everyn, $ - bkpt=bkpt, nord=nord) - - outmask1 = 0 - if (keyword_set(airmass)) then begin - x2 = airmass[isort] - endif - sset = bspline_iterfit(loglam[isort], mratio[isort], $ - invvar=mrativar[isort], lower=3, upper=3, fullbkpt=fullbkpt, $ - maxrej=ceil(0.05*n_elements(indx)), outmask=outmask1, nord=nord, $ - x2=x2, npoly=2*keyword_set(airmass), requiren=(everyn-1)>1) - if (max(sset.coeff) EQ 0) then $ - message, 'B-spline fit failed!!' - if (arg_present(outmask)) then begin - outmask = bytarr(size(loglam,/dimens)) - outmask[isort] = outmask1 - endif - - return, sset -end - -;------------------------------------------------------------------------------ -function spflux_mratio_flatten, loglam1, mratio1, mrativar1, pres=pres - - ;-------- - ; Re-form the input data arrays from multi-dimensional to N x M - - ndim = size(loglam1, /n_dimen) - dims = size(loglam1, /dimens) - npix = dims[0] - nobj = n_elements(loglam1) / npix - loglam = reform(loglam1, npix, nobj) - mratio = reform(mratio1, npix, nobj) - mrativar = reform(mrativar1, npix, nobj) - - ;-------- - ; Re-bin the spectra to the same spacing - - minlog1 = min(loglam, max=maxlog1) - newloglam = wavevector(minlog1, maxlog1) - nnewpix = n_elements(newloglam) - - newratio = fltarr(nnewpix, nobj) - newivar = fltarr(nnewpix, nobj) - - for iobj=0L, nobj-1 do begin - isort = sort(loglam[*,iobj]) - combine1fiber, loglam[isort,iobj], mratio[isort,iobj], $ - mrativar[isort,iobj], $ - newloglam=newloglam, newflux=newratio1, newivar=newivar1 - newratio[*,iobj] = newratio1 - newivar[*,iobj] = newivar1 - endfor - - ;-------- - ; Compute the straight weighted mean at each wavelength - ; (Avoid divide-by- zeros.) - - if (ndim EQ 1) then begin - meanratio = (newratio * newivar) / (newivar + (newivar EQ 0)) - endif else begin - denom = total(newivar, 2) - meanratio = total(newratio * newivar, 2) / (denom + (denom EQ 0)) - endelse - - qbadpix = meanratio LE 0 - ibadpix = where(qbadpix, nbadpix) - if (nbadpix GT 0) then newivar[ibadpix,*] = 0 - - ;-------- - ; Actually take this "mean" and turn it into something more like - ; a median, to protect us against standard stars that have bad - ; magnitudes from the imaging. - -; Comment-out ??? -; igoodpix = where(qbadpix EQ 0) -; if (ndim EQ 1) then medratio = newratio $ -; else medratio = djs_median(newratio, 2) -; rescale = median( medratio[igoodpix] / meanratio[igoodpix] ) -; if (rescale LE 0) then begin -; splog, 'Warning: RESCALE = ', rescale -; endif else begin -; meanratio = rescale * meanratio -; splog, 'Rescale factor median/mean = ', rescale -; endelse - - ;-------- - ; Now for each object, compute the polynomial fit of it relative to the mean - - npoly = 3 ; ??? - flatarr = fltarr(npix, nobj) - pres = fltarr(npoly, nobj) - for iobj=0L, nobj-1 do begin - ii = where(newivar[*,iobj] GT 0, ct) - if (ct GT npoly+1) then begin ; At least NPOLY+1 pixels for a fit... - thisloglam = newloglam[ii] - thisratio = newratio[ii,iobj] / meanratio[ii] - thisivar = newivar[ii,iobj] * meanratio[ii]^2 - - ; This fit requires no rejection, because this function falls - ; within an iteration loop that rejects points. - - ; The following is a weighted fit... -; pres1 = poly_fit(thisloglam-3.5d0, thisratio, npoly-1, $ -; measure_errors=1./sqrt(thisivar)) - - ; The following would be an unweighted fit... -; pres1 = poly_fit(thisloglam-3.5d0, thisratio, npoly-1) - - ; The following is an unweighted fit but with outlier-rejection... - poly_iter, thisloglam-3.5d0, thisratio, npoly-1, 3., coeff=pres1 - - flatarr[*,iobj] = poly(loglam[*,iobj]-3.5d0, pres1) - pres[*,iobj] = reform(pres1, npoly) - endif else begin - flatarr[*,iobj] = 1 - pres[*,iobj] = 0 - pres[0,iobj] = 1 - endelse - endfor - - if (ndim GT 1) then $ - pres = reform(pres, [npoly, dims[1:ndim-1]]) - return, reform(flatarr, dims) -end - -;------------------------------------------------------------------------------ -pro spflux_plotcalib, mratiologlam, mratioflux, mrativar, $ - fitloglam, fitflux, fitflux2, logrange=logrange, plottitle=plottitle - - xrange = 10.^logrange - ii = where(fitloglam GE logrange[0] AND fitloglam LE logrange[1]) - yrange = [0.9 * min(fitflux[ii]), 1.1 * max(fitflux[ii])] - if (size(mratioflux, /n_dimen) EQ 1) then nfinal = 1 $ - else nfinal = (size(mratioflux, /dimens))[2] - - djs_plot, xrange, yrange, /xstyle, /ystyle, /nodata, $ - xtitle='Wavelength [Ang]', ytitle='Counts/(10^{-17}erg/cm^2/s/Ang', $ - title=plottitle - for k=0, nfinal-1 do begin - jj = where(mratiologlam[*,0,k] GE logrange[0] $ - AND mratiologlam[*,0,k] LE logrange[1] $ - AND mrativar[*,0,k] GT 0, ct) - if (ct GT 1) then $ - djs_oplot, 10.^mratiologlam[jj,0,k], mratioflux[jj,0,k], psym=3 - endfor - djs_oplot, 10.^fitloglam[ii], fitflux[ii], color='green' - if (total(fitflux2) GT 0) then $ - djs_oplot, 10.^fitloglam[ii], fitflux2[ii], color='red' - - return -end - -;------------------------------------------------------------------------------ -pro spflux_v5, objname, adderr=adderr, combinedir=combinedir, $ - minfracthresh=minfracthresh - if (not keyword_set(minfracthresh)) then minfracthresh=0.80 - if (n_elements(adderr) EQ 0) then adderr = 0.03 - nfile = n_elements(objname) - - ;---------- - ; Get the list of spectrograph ID and camera names - - plateid = lonarr(nfile) - mjd = lonarr(nfile) - camname = strarr(nfile) - expnum = lonarr(nfile) - spectroid = lonarr(nfile) - npixarr = lonarr(nfile) - for ifile=0, nfile-1 do begin - spframe_read, objname[ifile], hdr=hdr - plateid[ifile] = strtrim(sxpar(hdr, 'CONFID'),2) - mjd[ifile] = strtrim(sxpar(hdr, 'MJD'),2) - camname[ifile] = strtrim(sxpar(hdr, 'CAMERAS'),2) - spectroid[ifile] = strmid(camname[ifile],1,1) - expnum[ifile] = sxpar(hdr, 'EXPOSURE') - npixarr[ifile] = sxpar(hdr, 'NAXIS1') - endfor - maxmjd = max(mjd) - - ;---------- - ; Figure out which objects are F stars. - ; Assume that the plug map is the same for all exposures. - - spframe_read, objname[0], plugmap=plugmap, hdr=hdr - objtype = strtrim(plugmap.objtype,2) - iphoto = where((objtype EQ 'SPECTROPHOTO_STD' OR objtype EQ 'REDDEN_STD') $ - AND plugmap.offsetid EQ 1, nphoto) - if (nphoto EQ 0) then begin - splog, 'WARNING: No SPECTROPHOTO or REDDEN stars for flux calibration' - return - endif - - ;---------- - ; Read the raw F-star spectra - - npix = max(npixarr) - nfiber = n_elements(plugmap) ; Number of fibers in one spectrograph - loglam = fltarr(npix, nfile, nphoto) - objflux = fltarr(npix, nfile, nphoto) - objivar = fltarr(npix, nfile, nphoto) - dispimg = fltarr(npix, nfile, nphoto) - airmass = fltarr(npix, nfile, nfiber) - for ifile=0L, nfile-1 do begin - spframe_read, objname[ifile], iphoto, wset=wset1, loglam=loglam1, $ - objflux=objflux1, objivar=objivar1, dispimg=dispimg1, $ - mask=mask1, hdr=hdr1, adderr=adderr, /xythrucorr - - cart = strtrim(sxpar(hdr1, 'CARTID'),2) - if cart eq 'FPS-S' then obs = 'LCO' else obs = 'APO' - ; Compute the airmass for every pixel of every object - ; (every pixel is the same, of course) - get_tai, hdr1, tai_beg, tai, tai_end - for j=0, nfiber-1 do $ - airmass[0:npixarr[ifile]-1,ifile,j] = tai2airmass(plugmap[j].ra, plugmap[j].dec, tai=tai, site=obs) - - ; Make a map of the size of each pixel in delta-(log10-Angstroms). - ; Re-normalize the flux to ADU/(dloglam). - ; Re-normalize the dispersion from /(raw pixel) to /(new pixel). - correct_dlam, objflux1, objivar1, wset1, dlam=dloglam - correct_dlam, dispimg1, 0, wset1, dlam=dloglam, /inverse - - ; Mask pixels on bad fibers - objivar1 = objivar1 * spflux_goodfiber(mask1) -; JG : why not mask all bad pixels here ? - objivar1 = objivar1 * spflux_goodextraction(mask1) ; added by JG -; JG : there are negative fluxes outside of wavelength valid range -; that we need to kill (kill -3 sigma outliers) - objivar1 = objivar1 * (objflux1 gt -3*sqrt(objivar1)) ; added by JG - - loglam[0:npixarr[ifile]-1,ifile,*] = loglam1 - ;it wont do having a tail of zeros in the wavelength so add some dummy values - if (npix GT npixarr[ifile]) then begin - dllam=loglam1[npixarr[ifile]-1,*]-loglam1[npixarr[ifile]-2,*] - for j=0, nphoto-1 do $ - loglam[npixarr[ifile]:*,ifile,j] = loglam1[npixarr[ifile]-1,j]+dllam[0,j]*(1+findgen(npix-npixarr[ifile])) - endif - objflux[0:npixarr[ifile]-1,ifile,*] = objflux1 - ;hopefully the inverse variance of 0 of non-filled objects will indicate the uselessness - ; of the extra - objivar[0:npixarr[ifile]-1,ifile,*] = skymask(objivar1, mask1, mask1) - dispimg[0:npixarr[ifile]-1,ifile,*] = dispimg1 - endfor - - ;---------- - ; Keep track of which F stars are good - - qfinal = bytarr(nphoto) + 1B - - ;---------- - ; For each star, find the best-fit model. - - !p.multi = [0,2,3] - modflux = 0 * objflux - for ip=0L, nphoto-1 do begin - thisfiber = iphoto[ip] + 1 + nfiber * (spectroid[0] - 1) - splog, prelog='Fiber '+string(thisfiber,format='(I4)') - - plottitle = 'CONFIGURATION=' + plate_to_string(plateid[0]) $ - + ' MJD=' + string(maxmjd, format='(i5.5)') $ - + ' Spectro-Photo Star' $ - + ' Fiber ' + strtrim(thisfiber,2) - - -; Find the best-fit model -- evaluated -; for each exposure [NPIX,NEXP] - newobjivar=objivar[*,*,ip]; JG : propagation of ivar - thismodel = spflux_bestmodel(loglam[*,*,ip], objflux[*,*,ip], $ - objivar[*,*,ip], dispimg[*,*,ip], kindx=thisindx, plottitle=plottitle, newobjivar=newobjivar) - objivar[*,*,ip]=newobjivar[*,*]; JG : propagation of ivar - - ; Also evaluate this model over a big wavelength range [3006,10960] Ang. - tmploglam = 3.4780d0 + lindgen(5620) * 1.d-4 - tmpdispimg = 0 * tmploglam + 1.0 ; arbitrarily select this resolution - tmpflux = spflux_read_desi(tmploglam, tmpdispimg, $ - iselect=thisindx.imodel) - - ; The returned models are redshifted, but not fluxed or - ; reddened. Do that now... we compare data vs. model reddened. - extcurve1 = ext_odonnell(10.^loglam[*,*,ip], 3.1) - thismodel = thismodel $ - * 10.^(-extcurve1 * 3.1 * plugmap[iphoto[ip]].ebv / 2.5) - extcurve2 = ext_odonnell(10.^tmploglam, 3.1) - tmpflux = tmpflux $ - * 10.^(-extcurve2 * 3.1 * plugmap[iphoto[ip]].ebv / 2.5) - - ; Now integrate the apparent magnitude for this spectrum, - ; The units of FTHRU are such that m = -2.5*alog10(FTHRU) + (48.6-2.5*17) - ; Note that these computed magnitudes, THISMAG, should be equivalent - ; to THISINDX.MAG in the case of no reddening. - wavevec = 10.d0^tmploglam - flambda2fnu = wavevec^2 / 2.99792e18 - fthru = filter_thru(tmpflux * flambda2fnu, waveimg=wavevec, /toair) - thismag = -2.5 * alog10(fthru) - (48.6-2.5*17) - - ; Compute SCALEFAC = (plugmap flux) / (uncalibrated flux) - if (tag_exist(plugmap, 'CALIBFLUX')) then begin - scalefac = plugmap[iphoto[ip]].calibflux[2] $ - / 10.^((22.5-thismag[2])/2.5) - ; Reject this star if we don't know its flux. - if (plugmap[iphoto[ip]].calibflux[2] LE 0) then begin - splog, 'Warning: Rejecting std star in fiber = ', $ - iphoto[ip] + 1 + nfiber * (spectroid[0] - 1), $ - ' with unknown calibObj flux' - qfinal[ip] = 0 - endif - endif else begin - splog, 'WARNING: No CALIBFLUX for zero-pointing the fluxes' - scalefac = 10.^((thismag[2] - plugmap[iphoto[ip]].mag[2])/2.5) - endelse - thismodel = thismodel * scalefac - - modflux[*,*,ip] = thismodel - if (ip EQ 0) then kindx = replicate( create_struct( $ - 'PLATE', 0L, $ - 'MJD', 0L, $ - 'FIBERID', 0L, $ - 'QGOOD', 0, $ - thisindx, $ - 'MODELFLUX', fltarr(npix)), $ - nphoto) - copy_struct_inx, thisindx, kindx, index_to=ip - kindx[ip].plate = plateid[0] - kindx[ip].mjd = maxmjd - kindx[ip].fiberid = thisfiber - splog, prelog='' - endfor - !p.multi = 0 - - ;---------- - ; Reject any stars where more than 20% of the pixels marked are bad - ; in any observation. - - fracgood = fltarr(nphoto) - for ip=0L, nphoto-1 do begin - for i=0L, nfile-1 do begin - markasbad = (qfinal[ip]) AND (mean(objivar[*,i,ip] GT 0) LT minfracthresh) - if (markasbad) then begin - splog, 'Warning: Rejecting std star in fiber = ', $ - iphoto[ip] + 1 + nfiber * (spectroid[0] - 1), $ - ' with too many IVAR=0 pixels' - qfinal[ip] = 0B - endif - endfor - endfor - ifinal = where(qfinal,nfinal) ; This is the list of the good stars - if (nfinal EQ 0) then begin - splog, 'ABORT: No good fluxing stars!' - return - endif - - ;---------- - ; Reject any stars with a bad chi^2/DOF either - ; in the full spectrum or in just the absorp. line regions. - ; Do not reject more than half the stars. - - chi2limit = 2.0 ; ??? - chi2list = (kindx.chi2 / (kindx.dof>1)) $ - > (kindx.linechi2 / (kindx.linedof>1)) - chi2list = chi2list + 100 * (kindx.linedof LT 10) ; Bad if < 10 pixels - while (max(chi2list) GT chi2limit AND total(qfinal) GT nphoto/2.) do begin - chi2max = max(chi2list, iworst) - splog, 'Rejecting std star in fiber = ', $ - iphoto[iworst] + 1 + nfiber * (spectroid[0] - 1), $ - ' with chi2=', chi2max - chi2list[iworst] = 0 - qfinal[iworst] = 0B - endwhile - - ;---------- - ; Reject any stars with a very low S/N in the absorp. line regions. - ; Do not reject more than half the stars. - - snlimit = 2.0 ; ??? - ; Do not reject any stars that are already rejected above... - snlist = kindx.linesn_median + (snlimit+1) * (qfinal EQ 0) - while (min(snlist) LT snlimit AND total(qfinal) GT nphoto/2.) do begin - snmin = min(snlist, iworst) - splog, 'Rejecting std star in fiber = ', $ - iphoto[iworst] + 1 + nfiber * (spectroid[0] - 1), $ - ' with median line S/N=', snmin - snlist[iworst] = snlimit + 1 - qfinal[iworst] = 0B - endwhile - - if (total(qfinal) EQ 0) then begin - splog, 'ABORT: No good spectro-photo stars!' - return - endif - - ;---------- - ; Loop over each exposure, and compute the PCA fit to MRATIO - ; using outlier-rejection. - ; Iterate, rejecting entire stars if they are terrible fits. - - iblue = where(strmatch(camname,'b*'), nblue) - ired = where(strmatch(camname,'r*'), nred) - - qdone = 0L - iiter = 0L - while (qdone EQ 0) do begin - iiter = iiter + 1 - splog, 'Iteration #', iiter - - ifinal = where(qfinal,nfinal) ; This is the list of the good stars - - ;---------- - ; The MRATIO vectors are the "raw" flux-calib vectors for each expos+CCD - - mmask = modflux GT 0 - mratio = objflux / (modflux*mmask + (1-mmask)) - mrativar = objivar * modflux^2 - flatarr = 0 * mratio - - ; Ignore regions around the stellar features - mrativar = mrativar * (1 - spflux_masklines(loglam, /stellar)) - - ;---------- - ; For each camera (blue or red), divide-out a low-order polynomial from - ; MRATIO each star to get them all to the same mean flux levels. - ; This takes out gross throughput differences between exposures. - ; Also, it will remove the ~5% large-scale spectrophotometry errors - ; between invidual stars, both from spectrograph throughput variations - ; and from slight mis-typing of the stars. - - if (nblue GT 0) then $ - flatarr[*,iblue,ifinal] = spflux_mratio_flatten(loglam[*,iblue,ifinal], $ - mratio[*,iblue,ifinal], mrativar[*,iblue,ifinal], pres=pres_b) - - if (nred GT 0) then $ - flatarr[*,ired,ifinal] = spflux_mratio_flatten(loglam[*,ired,ifinal], $ - mratio[*,ired,ifinal], mrativar[*,ired,ifinal], pres=pres_r) - - mratio[*,*,ifinal] = mratio[*,*,ifinal] / flatarr[*,*,ifinal] - mrativar[*,*,ifinal] = mrativar[*,*,ifinal] * flatarr[*,*,ifinal]^2 - - ;---------- - ; Do the B-spline fits for the blue CCDs. - - if (nblue GT 0) then begin - everyn = nblue * nfinal * 10 - sset_b = spflux_bspline(loglam[*,iblue,ifinal], $ - mratio[*,iblue,ifinal], mrativar[*,iblue,ifinal], $ - everyn=everyn, outmask=mask_b) - endif - - ;---------- - ; Do the B-spline fits for the red CCDs. - ; Fit a 2-dimension B-spline using the airmass as the 2nd dimension, - ; but only if the airmass spans at least 0.10 and there are at - ; least 3 good stars. - - if (nred GT 0) then begin - everyn = nred * nfinal * 1.5 - if (max(airmass) - min(airmass) GT 0.10 AND nfinal GE 3) then begin ; ??? - ; Get an airmass value for every *pixel* being fit - thisair = airmass[*,ired,iphoto[ifinal]] - endif else begin - thisair = 0 - endelse - sset_r = spflux_bspline(loglam[*,ired,ifinal], $ - mratio[*,ired,ifinal], mrativar[*,ired,ifinal], $ - everyn=everyn, outmask=mask_r, airmass=thisair) - - endif - - ;---------- - ; Find which star has the most pixels rejected, and reject - ; that star if it's bad enough - - fracgood = fltarr(nfinal) - for k=0L, nfinal-1 do begin - if (nblue GT 0) then fracgood[k] += 0.5 * mean(mask_b[*,*,k]) - if (nred GT 0) then fracgood[k] += 0.5 * mean(mask_r[*,*,k]) - endfor - minfrac = min(fracgood, iworst) - if (minfrac LT minfracthresh) then begin - if (nfinal LE nphoto/2.) then begin - splog, 'WARNING: Already rejected ', nphoto-nfinal, ' of ', $ - nphoto, ' std stars' - qdone = 1B - endif else begin - splog, 'Rejecting std star in fiber = ', $ - iphoto[ifinal[iworst]] + 1 + nfiber * (spectroid[0] - 1), $ - ' with fracgood=', minfrac - qfinal[ifinal[iworst]] = 0B - endelse - endif else begin - qdone = 1B ; No other stars to reject - endelse - endwhile - - kindx[ifinal].qgood = 1 - splog, 'Rejected ', nphoto-nfinal, ' of ', nphoto, ' std stars' - - ;---------- - ; Plot fluxing vectors and their polynomial offsets for individual stars - ; in individual exposures. - - mratfit = 0 * mratio - if (nblue GT 0) then $ - mratfit[*,iblue,ifinal] = bspline_valu(loglam[*,iblue,ifinal], sset_b) - if (nred GT 0) then $ - if (tag_exist(sset_r,'NPOLY')) then $ - mratfit[*,ired,ifinal] = bspline_valu(loglam[*,ired,ifinal], sset_r, $ - x2=airmass[*,ired,iphoto[ifinal]]) $ - else $ - mratfit[*,ired,ifinal] = bspline_valu(loglam[*,ired,ifinal], sset_r) - - !p.multi = [0,1,2] - explist = expnum[uniq(expnum, sort(expnum))] - colorvec = ['default','red','green','blue','cyan','magenta','grey'] - xrange = 10^minmax(loglam[*,*,ifinal]) - ii = where(mrativar[*,*,ifinal] GT 0, ct) - if (ct GT 1) then yrange = minmax((mratfit[*,*,ifinal])[ii]) $ - else yrange = minmax(mratfit[*,*,ifinal]) - plottitle = 'CONFIGURATION=' + plate_to_string(plateid[0]) $ - + ' MJD=' + string(maxmjd, format='(i5.5)') - for iexp=0, n_elements(explist)-1 do begin - djs_plot, [0], [0], xrange=xrange, yrange=yrange, /xstyle, /ystyle, $ - /nodata, xtitle='Wavelength [Ang]', ytitle='Flux-calib', $ - title=plottitle+' Exp #' + string(explist[iexp], format='(i8.8)') - kk = where(expnum EQ explist[iexp], kct) ; blue+red files for this exp - for j=0, nfinal-1 do begin - thiscolor = colorvec[j MOD n_elements(colorvec)] - for k=0, kct-1 do begin - djs_oplot, 10^loglam[*,kk[k],ifinal[j]], $ -; mratio[*,kk[k],ifinal[j]] * flatarr[*,kk[k],ifinal[j]], $ - mratio[*,kk[k],ifinal[j]], $ - psym=3, color=thiscolor -; djs_oplot, 10^loglam[*,kk[k],ifinal[j]], $ -;; mratfit[*,kk[k],ifinal[j]] * flatarr[*,kk[k],ifinal[j]], $ -; mratfit[*,kk[k],ifinal[j]], $ -; color=thiscolor - endfor - djs_xyouts, 0.9*xrange[0]+0.1*xrange[1], $ - yrange[0] + (j+1)*(yrange[1]-yrange[0])/(nfinal+1), $ - 'Fiber '+strtrim(iphoto[ifinal[j]]+(spectroid[0]-1)*nfiber,2), $ - color=thiscolor - endfor - endfor - !p.multi = 0 - - ;---------- - ; Construct the final (B-splined) flux-calibration vectors - - for ifile=0, nfile-1 do begin - splog, prelog=fileandpath(objname[ifile]) - ; Is this a blue CCD? - ii = where(ifile EQ iblue, ct) - if (ct EQ 1) then begin - thisloglam = loglam[*,ifile,ifinal] - thisset = sset_b - thisflatarr = flatarr[*,iblue[ii],ifinal] - thispres = pres_b[*,ii,ifinal] - endif - - ; Is this a red CCD? - ii = where(ifile EQ ired, ct) - if (ct EQ 1) then begin - thisloglam = loglam[*,ifile,ifinal] - thisset = sset_r - thisflatarr = flatarr[*,ired[ii],ifinal] - thispres = pres_r[*,ii,ifinal] - endif - - thismratio = mratio[*,ifile,ifinal] - thismrativar = mrativar[*,ifile,ifinal] - if (tag_exist(thisset,'NPOLY')) then $ - x2 = airmass[*,ifile,iphoto[ifinal]] $ - else $ - x2 = 0 - - ; Evaluate the B-spline for the stars at their measured wavelengths - ; in this exposure, then modulated by the mean FLATARR - ; for the stars in this exposure. - ; We re-fit the B-spline to exactly recover what we had before, - ; just modulated by the lower-order polynomial FLATARR. - - logmin = min(thisloglam[where(thismrativar GT 0)], max=logmax) - tmploglam = wavevector(logmin, logmax) - flatarr_mean = 0 * tmploglam - for i=0L, nfinal-1 do $ - flatarr_mean = flatarr_mean $ - + poly(tmploglam-3.5d0, thispres[*,0,i]) / nfinal - - ; Rather than re-generating the B-spline, I'll simply cheat and - ; multiply the B-spline coefficients at their wavelengths. - ; This is a bit of a hack, since there are NORD more values - ; for FULLBKPT than there are for COEFF, so there's not exactly - ; a 1-to-1 mapping between the two. - tmpmult = interpol(flatarr_mean, tmploglam, thisset.fullbkpt) - tmpmult = tmpmult[1:n_elements(thisset.fullbkpt)-thisset.nord] - if (keyword_set(x2)) then begin - for ipoly=0, thisset.npoly-1 do $ - thisset.coeff[ipoly,*] = thisset.coeff[ipoly,*] * tmpmult - for ipoly=0, thisset.npoly-1 do $ - thisset.icoeff[ipoly,*] = thisset.icoeff[ipoly,*] * tmpmult - endif else begin - thisset.coeff = thisset.coeff * tmpmult - thisset.icoeff = thisset.icoeff * tmpmult - endelse - - if (keyword_set(x2)) then begin - x2_min = min(x2, max=x2_max) - splog, 'Exposure ', objname[ifile], $ - ' spans airmass range ', x2_min, x2_max - tmpflux1 = bspline_valu(tmploglam, thisset, x2=x2_min+0*tmploglam) - tmpflux2 = bspline_valu(tmploglam, thisset, x2=x2_max+0*tmploglam) - endif else begin - tmpflux1 = bspline_valu(tmploglam, thisset) - tmpflux2 = 0 - endelse - - ;---------- - ; Make plots of the spectro-photometry data for this exposure only, - ; overplotting the global fit to all exposures in red. - - ; The following info is just used for the plot title - plottitle = 'CONFIGURATION=' + plate_to_string(plateid[ifile]) $ - + ' MJD=' + string(mjd[ifile], format='(i5.5)') $ - + ' Spectro-Photo Calib for ' + camname[ifile] + '-' $ - + string(expnum[ifile], format='(i8.8)') - - !p.multi = [0,1,2] - logrange = logmax - logmin - spflux_plotcalib, $ - thisloglam, thismratio, thismrativar, $ - tmploglam, tmpflux1/flatarr_mean, tmpflux2/flatarr_mean, $ - logrange=(logmin+[0,1]*logrange/2.), plottitle=plottitle - spflux_plotcalib, $ - thisloglam, thismratio, thismrativar, $ - tmploglam, tmpflux1/flatarr_mean, tmpflux2/flatarr_mean, $ - logrange=(logmin+[1,2]*logrange/2.) - !p.multi = 0 - - ;---------- - ; Create header cards describing the fit range - - hdr = [''] - sxaddpar, hdr, 'WAVEMIN', 10.^logmin - sxaddpar, hdr, 'WAVEMAX', 10.^logmax - - ;---------- - ; Generate the pixel map of the flux-calibration for this exposure+CCD - - spframe_read, objname[ifile], loglam=loglam1 - if (tag_exist(thisset,'NPOLY')) then x2 = airmass[*,ifile,*] $ - else x2 = 0 - calibimg = float( bspline_valu(loglam1, thisset, x2=x2) ) - ; Here is the very simple Balmer fix, hard-coded for now!!! (ASB 2014-Jan-17) - calibimg = spflux_balmerfix(calibimg, loglam1) - - ; Set to zero any pixels outside the known flux-calibration region - qbad = loglam1 LT logmin OR loglam1 GT logmax - ibad = where(qbad, nbad) - if (nbad GT 0) then calibimg[ibad] = 0 - - minval = min(calibimg[where(qbad EQ 0)], max=maxval) - if (maxval/minval GT 20. OR minval LT 0) then $ - splog, 'WARNING: Min/max fluxcalib = ', minval, maxval $ - else $ - splog, 'Min/max fluxcalib = ', minval, maxval - - ;---------- - ; Write the output file - - ; Put the Kurucz models for this exposure in the output structure - kindx.modelflux = reform(modflux[*,ifile,*], npix, nphoto) - - calibfile = djs_filepath(string(camname[ifile], expnum[ifile], $ - format='("spFluxcalib-", a2, "-", i8.8, ".fits")'), $ - root_dir=combinedir) - mwrfits, calibimg, calibfile, hdr, /create - mwrfits, thisset, calibfile - mwrfits, kindx, calibfile - spawn, ['gzip','-f',calibfile], /noshell - splog, prelog='' - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spfluxcorr_v5.pro b/pro/spec2d/spfluxcorr_v5.pro deleted file mode 100644 index 0483aa49a..000000000 --- a/pro/spec2d/spfluxcorr_v5.pro +++ /dev/null @@ -1,395 +0,0 @@ -;+ -; NAME: -; spfluxcorr_v5 -; -; PURPOSE: -; Compute flux-correction vectors for each CCD+exposure -; -; CALLING SEQUENCE: -; spfluxcorr_v5, objname, [ adderr=, combinedir=, bestexpnum= ] -; -; INPUTS: -; objname - File names (including path) for spFrame files, all from -; either spectro-1 or spectro-2, but not both! -; bestexpnum - Exposure number for best exposure, to which all other -; exposures are tied. -; -; OPTIONAL INPUTS: -; adderr - Additional error to add to the formal errors, as a -; fraction of the flux; default to 0.03 (3 per cent). -; combinedir - Directory for output files -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; -; PROCEDURES CALLED: -; djs_filepath() -; djs_reject() -; fcalib_default() -; mrdfits() -; mwrfits -; solve_poly_ratio -; splog -; soplot -; splot -; -; INTERNAL SUPPORT ROUTINES: -; fcorr_goodvector() -; -; REVISION HISTORY: -; 05-Feb-2004 Written by D. Schlegel, Princeton -; 11-Aug-2009 Edited by A. Kim: b and r spectra don't necessarily have the same dimension -; 05-Apr-2012 A. Bolton, Utah: increase sigrej & maxpoly; -; fit to refractive index rather than loglam; -; npoly=maxpoly for rejection step -;- -;------------------------------------------------------------------------------ -; Return 1 if the flux-correction vector appears to be in bounds. -function fcorr_goodvector, ymult1 - - ymin = min(ymult1, max=ymax) - - return, ymin GT 0.1 AND ymax LT 10. -end -;------------------------------------------------------------------------------ -pro spfluxcorr_v5, objname, adderr=adderr, combinedir=combinedir, $ - bestexpnum=bestexpnum - - common com_fcorr_lam, minlog, maxlog - - if (n_elements(adderr) EQ 0) then adderr = 0.03 - - ; The following parameters are used for the first pass, which is used only - ; in rejecting points. - maxiter1 = 5 - ; bolton@utah 2012mar: increase sigrej: - ;sigrej = 2.5 - sigrej = 6.0 - - ; The following parameters are used for the final fits, where there is - ; no more rejection and the errors are re-scaled in each iteration. - ; bolton@utah 2012mar: increase maxpoly: - ;maxpoly = 3 - maxpoly = 5 - nback = 0 - - t0 = systime(1) - - ;---------- - ; Get the list of spectrograph ID and camera names - - nfile = n_elements(objname) - camname = strarr(nfile) - camcolor = strarr(nfile) - expnum = lonarr(nfile) - spectroid = lonarr(nfile) - exptime = fltarr(nfile) - for ifile=0, nfile-1 do begin - spframe_read, objname[ifile], hdr=hdr - camname[ifile] = strtrim(sxpar(hdr, 'CAMERAS'),2) - camcolor[ifile] = strmid(camname[ifile],0,1) - spectroid[ifile] = strmid(camname[ifile],1,1) - expnum[ifile] = sxpar(hdr, 'EXPOSURE') - exptime[ifile] = sxpar(hdr, 'EXPTIME') - endfor - - explist = expnum[uniq(expnum, sort(expnum))] - nexp = n_elements(explist) - - ;---------- - ; Read the plug-map from the first file. - ; We only need this to know which are SKY fibers. - - spframe_read, objname[0], plugmap=plugmap - isky = where(strmatch(plugmap.objtype,'SKY*'), nsky) - - ;---------- - ; Get the fiducial wavelength mapping from the "best" exposure - - ibest_b = (where(camcolor EQ 'b' AND expnum EQ bestexpnum, nblue))[0] - ibest_r = (where(camcolor EQ 'r' AND expnum EQ bestexpnum, nred))[0] - - if (nblue GT 0) then spframe_read, objname[ibest_b], loglam=loglamb - if (nred GT 0) then spframe_read, objname[ibest_r], loglam=loglamr - dimsb = size(loglamb, /dimens) - dimsr = size(loglamr, /dimens) - npix = max([dimsb[0],dimsr[0]]) - nobj = max([dimsb[1],dimsr[1]]) - loglam = fltarr(npix, nobj, 2) - loglam[0:dimsb[0]-1,0:dimsb[1]-1,0] = loglamb - loglam[0:dimsr[0]-1,0:dimsr[1]-1,1] = loglamr - ; extrapolate wavelengths where there is no data - if (dimsb[0] LT npix) then begin - dllam=loglamb[dimsb[0]-1,*]-loglamb[dimsb[0]-2,*] - for j=0, nobj-1 do $ - loglam[dimsb[0]:*,j,0] = loglamb[dimsb[0]-1,j]+dllam[0,j]*(1+findgen(npix-dimsb[0])) - endif - if (dimsr[0] LT npix) then begin - dllam=loglamr[dimsr[0]-1,*]-loglamr[dimsr[0]-2,*] - for j=0, nobj-1 do $ - loglam[dimsr[0]:*,j,0] = loglamr[dimsr[0]-1,j]+dllam[0,j]*(1+findgen(npix-dimsr[0])) - endif - - loglamb = 0 ; clear memory - loglamr = 0 - - ;---------- - ; Read all the spectra + errors, and re-sample to the fiducial wavelengths - - allflux = fltarr(npix,nobj,nfile) - allivar = fltarr(npix,nobj,nfile) - - for ifile=0L, nfile-1 do begin - splog, 'Reading + rebinning raw spectra ', objname[ifile] - ; Should we also read in the mask and reject around bright sky, etc ? - icolor = (camcolor[ifile] EQ 'b') ? 0 : 1 - - ; Read the raw spectra for this file - spframe_read, objname[ifile], objflux=objflux1, objivar=objivar1, $ - wset=wset1, loglam=loglam1, adderr=adderr, /xythrucorr - - ; Re-normalize the flux to ADU/(dloglam) - binsz = 1.0d-4 - correct_dlam, objflux1, objivar1, wset1, dlam=binsz - - ; Apply the spectro-calib vector for this file - calibfile = djs_filepath(string(camname[ifile], expnum[ifile], $ - format='("spFluxcalib-", a2, "-", i8.8, ".fits")'), $ - root_dir=combinedir) - calibfile = (findfile(calibfile+'*'))[0] -; ??? - if (keyword_set(calibfile)) then begin - calibfac = mrdfits(calibfile, 0, /silent) - endif else begin - splog, 'WARNING: Reading default flux-calib vectors for camera=' $ - + camname[ifile] - calibfac = fcalib_default(camname[ifile], loglam1, exptime[ifile]) - endelse - minval = 0.05 * mean(calibfac) - divideflat, objflux1, invvar=objivar1, calibfac, minval=minval - - if (expnum[ifile] EQ bestexpnum) then begin - nrownative=(size(objflux1,/dimens))[0] - allflux[0:nrownative-1,*,ifile] = objflux1 - allivar[0:nrownative-1,*,ifile] = objivar1 - endif else begin - nrownative=(size(objflux1,/dimens))[0] - for iobj=0L, nobj-1 do begin - ; We have to call COMBINE1FIBER with ascending wavelengths... - if (loglam1[0,iobj] GT loglam1[1,iobj]) then begin - combine1fiber, reverse(loglam1[*,iobj]), $ - reverse(objflux1[*,iobj]), reverse(objivar1[*,iobj]), $ - newloglam=reverse(loglam[0:nrownative-1,iobj,icolor]), $ - newflux=newflux1, newivar=newivar1 - allflux[0:nrownative-1,iobj,ifile] = reverse(newflux1) - allivar[0:nrownative-1,iobj,ifile] = reverse(newivar1) - endif else begin - combine1fiber, loglam1[*,iobj], $ - objflux1[*,iobj], objivar1[*,iobj], $ - newloglam=loglam[0:nrownative-1,iobj,icolor], $ - newflux=newflux1, newivar=newivar1 - allflux[0:nrownative-1,iobj,ifile] = newflux1 - allivar[0:nrownative-1,iobj,ifile] = newivar1 - endelse - endfor - endelse - endfor - - ;---------- - ; Loop over each object, solving for the correction vectors - - ; Rescale the wavelengths to be in the range [0,1] - ; bolton@utah 2012mar: change to implement dependence on - ; refractive index rather than log-wavelength: - minlog = min(loglam, max=maxlog) - ;;xarray = (loglam - minlog) / (maxlog - minlog) - wave = 10.d^double(loglam) - vacwave = wave - vactoair, wave - nrefract = vacwave / wave - nrmin = min(nrefract) - nrmax = max(nrefract) - xarray = (nrefract - nrmin) / (nrmax - nrmin) - - ymult = fltarr(npix,nobj,nfile) + 1. - yadd = fltarr(npix,nobj,nfile) - - i1 = [ibest_b,ibest_r] - for iobj=0L, nobj-1 do begin - outmask = 0 - - ; This first iteration loop allows generous fitting parameters, - ; and is primarily to reject outlier points. - iiter = 0L - while (iiter LT maxiter1) do begin - ; Loop over exposures - sigvec = 0 * allflux[*,iobj,i1] - for iexp=0L, nexp-1 do begin - if (explist[iexp] EQ bestexpnum) then begin - ymult1 = 0 - yadd1 = 0 - endif else begin - i_b = where(camcolor EQ 'b' AND expnum EQ explist[iexp], ct1) - i_r = where(camcolor EQ 'r' AND expnum EQ explist[iexp], ct2) - i2 = [i_b,i_r] - if (keyword_set(outmask)) then qgood = outmask $ - else qgood = 1 - thisivar = 0 * allivar[*,iobj,i1] - indx = where(allivar[*,iobj,i2] GT 0 $ - AND allivar[*,iobj,i1] GT 0, ct) - if (ct GT 0) then $ - thisivar[indx] = 1. / (1./(allivar[*,iobj,i1])[indx] $ - + 1./(allivar[*,iobj,i2])[indx]) - solve_poly_ratio, xarray[*,iobj,*], $ - allflux[*,iobj,i2], allflux[*,iobj,i1], thisivar*qgood, $ -; npoly=3, nback=2, yfit=yfit1, ymult=ymult1, yadd=yadd1 - npoly=maxpoly, nback=2, yfit=yfit1, ymult=ymult1, yadd=yadd1 - - ; SIGVEC1 = the returned sigma per pixel, even for masked pixels - ; which were excluded from the fit - sigvec1 = (yfit1 - (allflux[*,iobj,i1])[*]) * sqrt(thisivar) - sigvec = sigvec > abs(sigvec1) - endelse - - if (keyword_set(ymult1)) then begin - ymult[*,iobj,i2] = ymult1 - yadd[*,iobj,i2] = yadd1 - endif - endfor ; End loop over exposures - - if (djs_reject(sigvec, 0*sigvec, invvar=0*sigvec+1, outmask=outmask, $ - lower=sigrej, upper=sigrej)) $ - then iiter = maxiter1 $ - else $ - iiter = iiter + 1 - endwhile - - ; This second iteration rescales the errors. - ; No more pixels will be rejected in this loop. - ; Loop over exposures - for iexp=0L, nexp-1 do begin - if (explist[iexp] NE bestexpnum) then begin - i_b = where(camcolor EQ 'b' AND expnum EQ explist[iexp], ct1) - i_r = where(camcolor EQ 'r' AND expnum EQ explist[iexp], ct2) - i2 = [i_b,i_r] - - ; Set default values in caes all fits are bad - ymult[*,iobj,i2] = 1 - yadd[*,iobj,i2] = 0 - - qgood =allivar[*,iobj,i2] GT 0 $ - AND allivar[*,iobj,i1] GT 0 $ - AND outmask GT 0 - igood = where(qgood, ct) - npoly1 = 0 - -; JG : dont do this if ct < 500 (because solve_poly_ratio can fail and -; kill the whole run!) -; JG : this is not a nice fix - if ( ct LT 500 ) then ct = 0 - - if (ct GT 0) then begin - lastchi2 = 0 - lastnpoly = 0 - inparams = 0 - ; Loop through adding more polynomial terms up to MAXPOLY. - ; Replace the fluxing vectors with the new ones as long - ; as the new ones are still good (no crazy values), and - ; the chi^2 is significantly improved (by at least 5). - while (npoly1 LT maxpoly) do begin - npoly1 = npoly1 + 1 - - ; Do a 1st pass re-fitting without scaling the errors. - thisivar = 0 * allivar[*,iobj,i1] - indx = where(allivar[*,iobj,i2] GT 0 $ - AND allivar[*,iobj,i1] GT 0, ct) - if (ct GT 0) then $ - thisivar[indx] = 1. / (1./(allivar[*,iobj,i1])[indx] $ - + 1./(allivar[*,iobj,i2])[indx]) - solve_poly_ratio, xarray[*,iobj,*], $ - allflux[*,iobj,i2], allflux[*,iobj,i1], $ - thisivar*qgood, npoly=npoly1, nback=0, $ - ymult=ymult1, yadd=yadd1, acoeff=inparams - - ; Now fit using the non-linear code that rescales the errors. - solve_poly_ratio, xarray[*,iobj,*], $ - allflux[*,iobj,i2], allflux[*,iobj,i1], $ - allivar[*,iobj,i2], allivar[*,iobj,i1] * qgood, $ - npoly=npoly1, nback=nback, inparams=inparams, $ - yfit=yfit1, ymult=ymult1, yadd=yadd1, acoeff=thiscoeff, $ - totchi2=thischi2, status=status, perror=perror - - if (npoly1 EQ 1 OR lastchi2-thischi2 GT 5.) then begin - if (fcorr_goodvector(ymult1)) then begin - ymult[*,iobj,i2] = ymult1 - yadd[*,iobj,i2] = yadd1 - lastchi2 = thischi2 - lastnpoly = npoly1 - inparams = thiscoeff - endif else begin - splog, 'Warning: Bad fluxcorr for object ', iobj, $ - ' at npoly=', npoly1 - endelse - endif - endwhile - - ; Optional debugging plots -; if (keyword_set(debug)) then begin -; print, 'STATUS = ', status -; print, 'Best-fit coeffs = ', acoeff -; print, 'Errors = = ', perror -; -; set_plot,'x' -; splot, 10^loglam[0:2047], smooth(bflux[0:2047], 9), $ -; xrange=[3800,9200] -; soplot, 10^loglam[2048:4095], smooth(bflux[2048:4095], 9) -; soplot, 10^loglam[0:2048], smooth(yfit1[0:2047], 9), $ -; color='red' -; soplot, 10^loglam[2048:4095], smooth(yfit1[2048:4095], 9), $ -; color='red' -; cc = strupcase(get_kbrd(1)) -; endif - - endif - splog, 'Fiber #', nobj*(spectroid[0]-1)+iobj+1, $ - ' exposure #', explist[iexp], ' npoly=', lastnpoly - endif - endfor - - endfor - - ;---------- - ; Force the sky fibers to have no correction (meaning values of unity) - - if (nsky GT 0) then begin - ymult[*,isky,*] = 1 - yadd[*,isky,*] = 0 - endif - - ;---------- - ; Write the output files - - for ifile=0L, nfile-1 do begin - corrfile = djs_filepath(string(camname[ifile], expnum[ifile], $ - format='("spFluxcorr-", a2, "-", i8.8, ".fits")'), $ - root_dir=combinedir) - splog, 'Writing file ' + corrfile - mwrfits, ymult[*,*,ifile], corrfile, /create - mwrfits, yadd[*,*,ifile], corrfile - spawn, ['gzip','-f',corrfile], /noshell - endfor - - splog, 'Time to compute fluxcorr vectors = ', systime(1)-t0, ' sec' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spgain.pro b/pro/spec2d/spgain.pro deleted file mode 100644 index 9e2c65a92..000000000 --- a/pro/spec2d/spgain.pro +++ /dev/null @@ -1,189 +0,0 @@ -;+ -; NAME: -; spgain -; -; PURPOSE: -; Measure the gain + read noise for SDSS spectroscopic images -; -; CALLING SEQUENCE: -; spgain, flatfile1, flatfile2, [ biasfile1, biasfile2, indir=, $ -; xskip=, yskip=, /simulate, gain=, rnoise=] -; -; INPUTS: -; flatfile1 - File name for flat #1 -; flatfile2 - File name for flat #2 -; biasfile1 - File name for bias #1 -; biasfile2 - File name for bias #2 -; -; OPTIONAL KEYWORDS: -; indir - Input directory for all files -; xskip - Number of columns to ignore at beginning and end of each -; amplifier; default to 50 -; yskip - Number of rows to ignore at beginning and end of each -; amplifier; default to 5 -; simulate - If set, then replace the images with simulated images with -; a gain of 1.3 e-/ADU and read noise of 3.5 ADU. -; -; OUTPUTS: -; gain - Gain in electrons/ADU for each amplifier (array) -; rnoise - Read noise in electrons for each amplifier (array) -; -; COMMENTS: -; -; EXAMPLES: -; Compute the read nosie and gain using the bias frames and flats -; taken for this very purpose on MJD 53114 (18/19 April 2004). -; For the b1 CCD: -; IDL> spgain, 'sdR-r2-00026145.fit.gz', 'sdR-r2-00026146.fit.gz', $ -; 'sdR-r2-00026147.fit.gz', 'sdR-r2-00026148.fit.gz' -; -; BUGS: -; -; PROCEDURES CALLED: -; djs_iterstat -; sdssproc -; -; REVISION HISTORY: -; 21-Nov-1999 Written by D. Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro spgain, flatfile1, flatfile2, biasfile1, biasfile2, indir=indir, $ - xskip=xskip, yskip=yskip, gain=gain, rnoise=rnoise, $ - simulate=simulate - - if (N_params() NE 2 AND N_params() NE 4) then $ - message, 'Must specify either 2 or 4 file names' - - if (NOT keyword_set(xskip)) then xskip = 50 - if (NOT keyword_set(yskip)) then yskip = 5 - - namp = 2 ; 2 amplifiers - - gain = fltarr(namp) - rnoise = fltarr(namp) - gain_rms = fltarr(namp) - rnoise_rms = fltarr(namp) - - ; Read flats - sdssproc, flatfile1, flatimg1, indir=indir, hdr=hdr - sdssproc, flatfile2, flatimg2, indir=indir - - ; Read biases - if (N_params() EQ 4) then begin - sdssproc, biasfile1, biasimg1, indir=indir - sdssproc, biasfile2, biasimg2, indir=indir - endif else begin - biasmean1 = 0 - biasmean2 = 0 - biasdifsig = 0 - endelse - - ; Take out the gain so that all images are still in ADU... - config_dir = filepath('', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='examples') - ecalibfile = findopfile('opECalib*par', sxpar(hdr,'MJD'), config_dir, $ - /abort_notfound, /silent) - ecalib = yanny_readone(filepath(ecalibfile, root_dir=config_dir)) - i = where(ecalib.camrow EQ sxpar(hdr,'CAMROW') $ - AND ecalib.camcol EQ sxpar(hdr,'CAMCOL')) - gain_input = [fltarr(1024,2048)+ecalib[i].gain2, $ - fltarr(1024,2048)+ecalib[i].gain3] - flatimg1 = flatimg1 / gain_input - flatimg2 = flatimg2 / gain_input - if (N_params() EQ 4) then begin - biasimg1 = biasimg1 / gain_input - biasimg2 = biasimg2 / gain_input - endif - - if (keyword_set(simulate)) then begin - simgain = 1.3 - simnoise = 3.5 - fakeimg = flatimg1 > 0 -; fakeimg = smooth(randomu(123456,2048,2048) * 100., 5) -; fakeimg = fltarr(2048,2048) + 1000. - flatimg1= fakeimg + randomn(123,2048,2048) * simnoise $ - + randomn(987,2048,2048) * sqrt(fakeimg) / sqrt(simgain) - flatimg2= fakeimg + randomn(234,2048,2048) * simnoise $ - + randomn(888,2048,2048) * sqrt(fakeimg) / sqrt(simgain) - biasimg1 = randomn(345,2048,2048) * simnoise - biasimg2 = randomn(456,2048,2048) * simnoise - endif - - dims = size(flatimg1, /dimens) - nx = dims[0] - ny = dims[1] - ximg = djs_laxisgen([nx, ny], iaxis=0) - ampimg = 1 + (ximg GT nx/2) - ampimg[0:xskip-1,*] = 0 - ampimg[nx-xskip:nx-1,*] = 0 - ampimg[*,0:yskip-1] = 0 - ampimg[*,ny-yskip:ny-1] = 0 - - nloop = 100L - ngoodpix = lonarr(nloop,2) - gainarr = fltarr(nloop,2) - rnoisearr = fltarr(nloop,2) - - ; Loop over different count levels - for iloop=0, nloop-1 do begin - for iamp=0, 1 do begin - flux1 = (iloop+1) * 200. + 1000. - flux2 = (iloop+2) * 200. + 1000. - indx = where(flatimg1 GE flux1 AND flatimg1 LT flux2 $ - AND ampimg EQ iamp+1, ct) - ngoodpix[iloop,iamp] = ct - - if (ct GT 1000) then begin ; At least 1000 pixels... - - ; Correction factor for measured sigmas... - corrfac = sqrt(ct / (ct-1.)) - - flatsub1 = flatimg1[indx] - flatsub2 = flatimg2[indx] - - ; Compute statistics for flats - djs_iterstat, flatsub1, sigrej=sigrej, mean=flatmean1 - djs_iterstat, flatsub2, sigrej=sigrej, mean=flatmean2 - djs_iterstat, flatsub2 - flatsub1, sigrej=sigrej, $ - sigma=flatdifsig - flatdifsig = corrfac * flatdifsig - - ; Compute statistics for biases - if (N_params() EQ 4) then begin - biassub1 = biasimg1[indx] - biassub2 = biasimg2[indx] - - djs_iterstat, biassub1, sigrej=sigrej, mean=biasmean1 - djs_iterstat, biassub2, sigrej=sigrej, mean=biasmean2 - djs_iterstat, biassub2 - biassub1, sigrej=sigrej, $ - sigma=biasdifsig - biasdifsig = corrfac * biasdifsig - endif - - gainarr[iloop,iamp] = $ - (flatmean1 + flatmean2 - biasmean1 - biasmean2) / $ - (flatdifsig^2 - biasdifsig^2) - rnoisearr[iloop,iamp] = biasdifsig / sqrt(2.) - - endif - endfor - endfor - - ; Compute the median gain + read noise for each amplifier - for iamp=0, namp-1 do begin - ii = where(gainarr[*,iamp] GT 0) - djs_iterstat, gainarr[ii,iamp], median=med1, sigma=sig1 - gain[iamp] = med1 - gain_rms[iamp] = sig1 - if (N_params() EQ 4) then begin - djs_iterstat, rnoisearr[ii,iamp], median=med1, sigma=sig1 - rnoise[iamp] = med1 - rnoise_rms[iamp] = sig1 - endif - splog, 'Amplifier #', iamp, ' Gain=', gain[iamp], ' +/-', $ - gain_rms[iamp], ' Rnoise=', rnoise[iamp], ' +/-', rnoise_rms[iamp], ' DN' - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spplan1d.pro b/pro/spec2d/spplan1d.pro deleted file mode 100644 index f7b40bc71..000000000 --- a/pro/spec2d/spplan1d.pro +++ /dev/null @@ -1,390 +0,0 @@ -;+ -; NAME: -; spplan1d -; -; PURPOSE: -; Create plan file(s) for combining Spectro-2D outputs. -; -; CALLING SEQUENCE: -; spplan1d, [ topdir=, run2d=, mjd=, mjstart=, mjend=, $ -; platenum=, platestart=, plateend=, /clobber ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; topdir - Optional override value for the environment -; variable $BHM_SPECTRO_REDUX. -; run2d - Optional override value for the environment variable $RUN2D -; mjd - Use data from these MJD's. -; mjstart - Starting MJD. -; mjend - Ending MJD. -; platenum - Look for input data files in TOPINDIR/PLATENUM; default to -; search all subdirectories. Note that this need not be -; integer-valued, but could be for example '0306_test'. -; platestart - Starting plate number. -; plateend - Ending plate number. -; clobber - If set, then over-write conflicting plan files; default to -; not over-write files. -; -; OUTPUT: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; This routine spawns the Unix command 'mkdir'. -; The use of CONCAT_DIR may not be valid for non-Unix OS's. -; -; PROCEDURES CALLED: -; concat_dir() -; fileandpath() -; get_mjd_dir() -; idlspec2d_version() -; idlutils_version() -; mjd_match() -; splog -; sdsshead() -; sxpar() -; yanny_free -; yanny_par() -; yanny_read -; yanny_write -; -; REVISION HISTORY: -; 04-Jul-2000 Written by David Schlegel, Princeton. -; 15-Nov-2018 Modified by Hector Ibarra for the BHM -;- -;------------------------------------------------------------------------------ - - -pro spplan1d, topdir=topdir1, run2d=run2d1, $ - mjd=mjd, mjstart=mjstart, mjend=mjend, $ - confinum=confinum, confistart=confistart, confiend=confiend, $ - fieldnum=fieldnum, fieldstart=fieldstart, fieldend=fieldend, $ - clobber=clobber, lco=lco, legacy=legacy, plates=plates - - RESOLVE_ALL, /QUIET, /SKIP_EXISTING, /CONTINUE_ON_ERROR - - ;---------- - ; Determine the top-level of the directory tree - ;---------- - if (keyword_set(topdir1)) then topdir = topdir1 else topdir = getenv('BOSS_SPECTRO_REDUX') - splog, 'Setting TOPDIR=', topdir - - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - if (keyword_set(run2d)) then $ - topdir = djs_filepath('', root_dir=topdir, subdir=run2d) - - finfo = file_info(topdir) - if (finfo.directory EQ 0) then begin - splog, 'Directory does not exist: '+topdir - return - endif - - - - fieldlist = get_mjd_dir(topdir, mjd=fieldnum, mjstart=fieldstart, $ - mjend=fieldend) - splog, 'Number of field directories = ', n_elements(fieldlist) - - - ; Loop through each input configuration directory - for ifield=0, N_elements(fieldlist)-1 do begin - fielddir = fieldlist[ifield] - fieldid = long(fileandpath(fielddir)) - get_field_type, fieldid=fieldid, legacy=legacy, plates=plates, fps=fps - splog, '' - splog, 'Field directory ', fielddir - ;---------- - ; Find all 2D plan files - allplan = findfile(djs_filepath('spPlan2d*.par', root_dir=topdir, $ - subdirectory=fielddir), count=nplan) - ;---------- - ; Read all the 2D plan files - ; The string array PLANLIST keeps a list of the plan file that each - ; element of the ALLEXP structure came from, and MJDLIST keeps the - ; list of each MJD - allexp = 0 - planlist = 0 - ditherlist = 0 - for iplan=0, nplan-1 do begin - yanny_read, allplan[iplan], pp, hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - thisdither = yanny_par(hdr, 'DITHER') - for ii=0, n_elements(pp)-1 do begin - sname = tag_names(*pp[ii], /structure_name) - if (sname EQ 'SPEXP') then begin - nadd = n_elements(*pp[ii]) - if (NOT keyword_set(allexp)) then begin - allexp = *pp[ii] - planlist = replicate(fileandpath(allplan[iplan]), nadd) - mjdlist = replicate(thismjd, nadd) - ditherlist = replicate(thisdither, nadd) - endif else begin - allexp = [allexp, *pp[ii]] - planlist = [planlist, $ - replicate(fileandpath(allplan[iplan]), nadd)] - mjdlist = [mjdlist, replicate(thismjd, nadd)] - ditherlist = [ditherlist, replicate(thisdither, nadd)] - endelse - endif - endfor - yanny_free, pp - endfor - - if keyword_set(legacy) or keyword_set(plates) then begin - if (keyword_set(allexp)) then begin - ;---------- - ; Determine all the plate plugging names - allmaps = allexp.mapname - allmaps = allmaps[ uniq(allmaps, sort(allmaps)) ] - ;---------- - ; Loop through all plate plugging names - ;print,allmaps - ;stop - for imap=0, n_elements(allmaps)-1 do begin - indx = where(allexp.mapname EQ allmaps[imap] $ - AND (allexp.flavor EQ 'science' OR allexp.flavor EQ 'smear')) - if (indx[0] NE -1) then spexp = allexp[indx] $ - else spexp = 0 - ;---------- - ; Decide if any of these MJD's are within the bounds - ; specified by MJD,MJSTART,MJEND. If so, then set QMJD=1 - qmjd = 1B - if (keyword_set(spexp)) then begin - mjdlist1 = mjdlist[indx] - qmjd = mjd_match(mjdlist1, mjd=mjd, mjstart=mjstart, mjend=mjend) - if (qmjd EQ 0) then $ - splog, 'Skip MAP=', allmaps[imap], ' with MJD=', $ - mjdlist1[ uniq(mjdlist1, sort(mjdlist1)) ] - endif - if (keyword_set(spexp) AND qmjd) then begin - ;---------- - ; Determine the 2D plan files that are relevant - planlist1 = planlist[indx] - planlist1 = planlist1[ uniq(planlist1, sort(planlist1)) ] - ditherlist1 = ditherlist[indx] - ;---------- - ; Replace the prefix 'sdR' with 'spFrame' in the science frames - ; and the suffix '.fit' with '.fits' - ;HJIM epoch definition for the plate program - RM_plates=[15000,15001,15002,15038,15070,15071,15171,15172,15173,15252,15253] - plt=spexp[0].fieldid - junk = where(RM_plates eq plt ,ct) - epc=1000;this number force to coadd during all the pluggin mapname - if ct gt 0 then epc=3 - spexp_org=spexp - stop_loop=0 - while stop_loop eq 0 do begin - indx_ep = where(spexp.mjd lt min(spexp.mjd)+epc) - spexp=spexp[indx_ep] - epoch_tag = replicate( $ - {epoch_combine: min(spexp.mjd)}, n_elements(spexp)) - spexp = struct_addtags(spexp, epoch_tag) - newnames = spexp.name - for i=0, n_elements(newnames)-1 do begin - jj = strpos(newnames[i], '-') - kk = strpos(newnames[i], '.', /reverse_search) - if (jj NE -1 AND kk NE -1) then $ - newnames[i] = 'spFrame' + strmid(newnames[i], jj, kk-jj) $ - + '.fits' - endfor - spexp.name = newnames - - ;---------- - ; Determine names of output files - pltid = spexp[0].fieldid - platestr = field_to_string(pltid) - thismjd = max(spexp.mjd) - mjdstr = string(thismjd, format='(i05.5)') - outdir = concat_dir(topdir, fielddir) - planfile = 'spPlancomb-' + platestr + '-' + mjdstr + '.par' - ;---------- - ; Create keyword pairs for plan file - hdr = '' - hdr = [hdr, "fieldid " + platestr + " # Field number"] - hdr = [hdr, "MJD " + mjdstr $ - + " # Modified Julian Date for most recent observation"] - hdr = [hdr, "OBS " + "APO # Observatory"] - hdr = [hdr, "RUN2D " + run2d + " # 2D reduction name"] - sq = "'" - hdr = [hdr, "planfile2d " $ - + string(sq+planlist1+sq+' ', format='(99a)') $ - + " # Plan file(s) for 2D spectral reductions"] - hdr = [hdr, "planfilecomb '" + planfile $ - + "' # Plan file for combine (this file)"] - hdr = [hdr, "idlspec2dVersion '" + idlspec2d_version() $ - + "' # Version of idlspec2d when building plan file"] - hdr = [hdr, "idlutilsVersion '" + idlutils_version() $ - + "' # Version of idlutils when building plan file"] - spawn, 'speclog_version', logvers, /noshell - hdr = [hdr, "speclogVersion '" + logvers $ - + "' # Version of speclog when building plan file"] - hdr = [hdr, "DITHER '"+ ditherlist1[0] $ - + " # Is the Field Dithered (T: True, F: False)"] - ;---------- - ; Write output file - spawn, 'mkdir -p ' + outdir - fullplanfile = djs_filepath(planfile, root_dir=outdir) - qexist = keyword_set(findfile(fullplanfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing plan file: ' + planfile $ - else $ - splog, 'WARNING: Will not over-write plan file: ' + planfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing plan file ', fullplanfile - yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr, stnames='SPEXP' - endif - if max(spexp_org.mjd) eq max(spexp.mjd) then begin - stop_loop=1 - endif else begin - stop_loop=0 - endelse - indx_ep = where(spexp_org.mjd gt max(spexp.mjd)) - if (indx_ep[0] NE -1) then spexp = spexp_org[indx_ep] - endwhile - endif - endfor ; End loop through plate plugging names - endif - endif else begin - if (keyword_set(allexp)) then begin - indx = where((allexp.flavor EQ 'science' OR allexp.flavor EQ 'smear')) - if (indx[0] NE -1) then begin - spexp = allexp[indx] - planlist = planlist[indx] - ditherlist1 = ditherlist[indx] - endif else begin - spexp = 0 - endelse - ;---------- - ; Decide if any of these MJD's are within the bounds - ; specified by MJD,MJSTART,MJEND. If so, then set QMJD=1 - qmjd = 1B - if (keyword_set(spexp)) then begin - mjdlist1 = mjdlist[indx] - qmjd = mjd_match(mjdlist1, mjd=mjd, mjstart=mjstart, mjend=mjend) - if (qmjd EQ 0) then $ - splog, 'Skip FIELD=', spexp[0].fieldid, ' with MJD=', $ - mjdlist1[ uniq(mjdlist1, sort(mjdlist1)) ] - endif - if (keyword_set(spexp) AND qmjd) then begin - RM_fields=[] - fld=spexp[0].fieldid - junk = where(RM_fields eq fld ,ct) - epc=1 ; only coadd single night - if ct gt 0 then epc=3 - spexp_org=spexp - planlist_org=planlist - stop_loop=0 - while stop_loop eq 0 do begin - indx_ep = where(spexp.mjd lt min(spexp.mjd)+epc) - spexp=spexp[indx_ep] - epoch_tag = replicate( $ - {epoch_combine: min(spexp.mjd)}, n_elements(spexp)) - spexp = struct_addtags(spexp, epoch_tag) - - ;---------- - ; Determine the 2D plan files that are relevant - planlist1 = planlist[indx_ep] - ;---------- - ; Replace the prefix 'sdR' with 'spFrame' in the science frames - ; and the suffix '.fit' with '.fits' - if keyword_set(mjd) then begin - runspexp=[] - planlist1f=[] - foreach runmjd, mjd do begin - nind=where(spexp.mjd EQ mjd,ct) - if ct ne 0 then begin - runspexp=[runspexp,spexp[nind]] - planlist1f=[planlist1f,planlist1[nind]] - endif - endforeach - if n_elements(planlist1f) eq 0 then goto, NoMatch - planlist1=planlist1f[0] - endif - if (keyword_set(mjstart) AND keyword_set(mjend) AND qmjd) then begin - nind=where((spexp.mjd LE mjend) and (spexp.mjd GE mjstart)) - spexp=spexp[nind] - planlist1f=planlist1[nind] - planlist1=planlist1f[0] - endif - planlist1 = planlist1[ uniq(planlist1, sort(planlist1)) ] - newnames = spexp.name - for i=0, n_elements(newnames)-1 do begin - jj = strpos(newnames[i], '-') - kk = strpos(newnames[i], '.', /reverse_search) - if (jj NE -1 AND kk NE -1) then $ - newnames[i] = 'spFrame' + strmid(newnames[i], jj, kk-jj) $ - + '.fits' - endfor - spexp.name = newnames - ;---------- - ; Determine names of output files - fieldstr = spexp[0].fieldid - thismjd = max(spexp.mjd) - mjdstr = string(thismjd, format='(i05.5)') - outdir = concat_dir(topdir, fielddir) - planfile = 'spPlancomb-' + fieldstr + '-' + mjdstr + '.par' - ;---------- - ; Create keyword pairs for plan file - hdr = '' - hdr = [hdr, "fieldid " + fieldstr + " # Field number"] - hdr = [hdr, "MJD " + mjdstr $ - + " # Modified Julian Date for most recent observation"] - if keyword_set(lco) then $ - hdr = [hdr, "OBS " + "LCO # Observatory"] $ - else hdr = [hdr, "OBS " + "APO # Observatory"] - hdr = [hdr, "RUN2D " + run2d + " # 2D reduction name"] - sq = "'" - hdr = [hdr, "planfile2d " $ - + string(sq+planlist1+sq+' ', format='(99a)') $ - + " # Plan file(s) for 2D spectral reductions"] - hdr = [hdr, "planfilecomb '" + planfile $ - + "' # Plan file for combine (this file)"] - hdr = [hdr, "idlspec2dVersion '" + idlspec2d_version() $ - + "' # Version of idlspec2d when building plan file"] - hdr = [hdr, "idlutilsVersion '" + idlutils_version() $ - + "' # Version of idlutils when building plan file"] - spawn, 'speclog_version', logvers, /noshell - hdr = [hdr, "speclogVersion '" + logvers $ - + "' # Version of speclog when building plan file"] - hdr = [hdr, "DITHER '"+ ditherlist1[0] $ - + " # Is the Field Dithered (T: True, F: False)"] - ;---------- - ; Write output file - spawn, 'mkdir -p ' + outdir - fullplanfile = djs_filepath(planfile, root_dir=outdir) - qexist = keyword_set(findfile(fullplanfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing plan file: ' + planfile $ - else $ - splog, 'WARNING: Will not over-write plan file: ' + planfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing plan file ', fullplanfile - yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr, stnames='SPEXP' - endif - NoMatch: - if max(spexp_org.mjd) eq max(spexp.mjd) then begin - stop_loop=1 - endif else begin - stop_loop=0 - endelse - indx_ep = where(spexp_org.mjd gt max(spexp.mjd)) - if (indx_ep[0] NE -1) then begin - spexp = spexp_org[indx_ep] - planlist=planlist_org[indx_ep] - endif - endwhile - endif - endif - endelse - endfor - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spplan1d_old_5april2021.pro b/pro/spec2d/spplan1d_old_5april2021.pro deleted file mode 100644 index ae6263451..000000000 --- a/pro/spec2d/spplan1d_old_5april2021.pro +++ /dev/null @@ -1,436 +0,0 @@ -;+ -; NAME: -; spplan1d -; -; PURPOSE: -; Create plan file(s) for combining Spectro-2D outputs. -; -; CALLING SEQUENCE: -; spplan1d, [ topdir=, run2d=, mjd=, mjstart=, mjend=, $ -; platenum=, platestart=, plateend=, /clobber ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; topdir - Optional override value for the environment -; variable $BHM_SPECTRO_REDUX. -; run2d - Optional override value for the environment variable $RUN2D -; mjd - Use data from these MJD's. -; mjstart - Starting MJD. -; mjend - Ending MJD. -; platenum - Look for input data files in TOPINDIR/PLATENUM; default to -; search all subdirectories. Note that this need not be -; integer-valued, but could be for example '0306_test'. -; platestart - Starting plate number. -; plateend - Ending plate number. -; clobber - If set, then over-write conflicting plan files; default to -; not over-write files. -; -; OUTPUT: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; This routine spawns the Unix command 'mkdir'. -; The use of CONCAT_DIR may not be valid for non-Unix OS's. -; -; PROCEDURES CALLED: -; concat_dir() -; fileandpath() -; get_mjd_dir() -; idlspec2d_version() -; idlutils_version() -; mjd_match() -; splog -; sdsshead() -; sxpar() -; yanny_free -; yanny_par() -; yanny_read -; yanny_write -; -; REVISION HISTORY: -; 04-Jul-2000 Written by David Schlegel, Princeton. -; 15-Nov-2018 Modified by Hector Ibarra for the BHM -;- -;------------------------------------------------------------------------------ -pro spplan1d, topdir=topdir1, run2d=run2d1, $ - mjd=mjd, mjstart=mjstart, mjend=mjend, $ - confinum=confinum, confistart=confistart, confiend=confiend, $ - fieldnum=fieldnum, fieldstart=fieldstart, fieldend=fieldend, $ - clobber=clobber, lco=lco, legacy=legacy, plates=plates, $ - platnum=platnum, platstart=platstart, platend=platend - - ;---------- - ; Determine the top-level of the directory tree - ; - if keyword_set(lco) then begin - obsdir='LCO' - BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_S' - endif else begin - obsdir='APO' - BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_N' - endelse - obsdir='';coment this line for the final version HJIM - ;---------- - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - topdir=concat_dir(topdir, obsdir) - splog, 'Setting TOPDIR=', topdir - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - if (keyword_set(run2d)) then $ - topdir = djs_filepath('', root_dir=topdir, subdir=run2d) - finfo = file_info(topdir) - if (finfo.directory EQ 0) then begin - splog, 'Directory does not exist: '+topdir - return - endif - - if keyword_set(platstart) or keyword_set(platend) then begin - if (not keyword_set(legacy)) and (not keyword_set(plates)) then begin - splog, 'To reduce the plate format you must set the /legacy or /plates key word, process halt' - exit - endif - endif - - if keyword_set(legacy) or keyword_set(plates) then begin - ;---------- - ; Create a list of the plate directories (as strings) and select only the plate directories - platelist = get_mjd_dir(topdir, mjd=platnum, mjstart=platstart, $ - mjend=platend,/alldirs) - for ili=0, n_elements(platelist)-1 do begin - if strmid(strtrim(platelist[ili],2),4,1) ne 'p' then begin - if strmid(strtrim(platelist[ili],2),5,1) ne 'p' then begin - platelist[ili]='' - endif - endif - endfor - ii = where(platelist NE '', ct) - if (ct EQ 0) then begin - splog, 'There is no plate directories' - return - endif else begin - platelist = platelist[ii] - endelse - splog, 'Number of plate directories = ', n_elements(platelist) - endif else begin - ;---------- - ; Create a list of the configuration directories (as strings) - ; HJIM-- Change fiber by confi - fieldlist = get_mjd_dir(topdir, mjd=fieldnum, mjstart=fieldstart, $ - mjend=fieldend) - splog, 'Number of bhm field directories = ', n_elements(fieldlist) - endelse - - ;HJIM -- reduce the number of spectrographs to one - camnames = ['b1', 'r1'] - ncam = N_elements(camnames) - if keyword_set(legacy) then begin - camnames = ['b1', 'r1', 'b2', 'r2'] - endif - - - if keyword_set(legacy) or keyword_set(plates) then begin - ;--------------------------------------------------------------------------- - ; Loop through each input plate directory - for iplate=0, N_elements(platelist)-1 do begin - platedir = platelist[iplate] - splog, '' - splog, 'Plate directory ', platedir - ;---------- - ; Find all 2D plan files - allplan = findfile(djs_filepath('spPlan2d*.par', root_dir=topdir, $ - subdirectory=platedir), count=nplan) - ;---------- - ; Read all the 2D plan files - ; The string array PLANLIST keeps a list of the plan file that each - ; element of the ALLEXP structure came from, and MJDLIST keeps the - ; list of each MJD - allexp = 0 - planlist = 0 - for iplan=0, nplan-1 do begin - temp_plan=strsplit(allplan[iplan],'/',/extract) - temp_mjd=strsplit(temp_plan[n_elements(temp_plan)-1],'-',/extract) - temp_mjd=long(repstr(temp_mjd[n_elements(temp_mjd)-1],'.par')) - if keyword_set(plates) then begin - min_mjd=59030;LIMIT the use of single spectrograph after mjd 59005 - max_mjd=70000; Needs to change - endif else begin - min_mjd=0 - max_mjd=59030 - endelse - if temp_mjd ge min_mjd and temp_mjd lt max_mjd then begin - yanny_read, allplan[iplan], pp, hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - for ii=0, n_elements(pp)-1 do begin - sname = tag_names(*pp[ii], /structure_name) - if (sname EQ 'SPEXP') then begin - nadd = n_elements(*pp[ii]) - if (NOT keyword_set(allexp)) then begin - allexp = *pp[ii] - planlist = replicate(fileandpath(allplan[iplan]), nadd) - mjdlist = replicate(thismjd, nadd) - endif else begin - allexp = [allexp, *pp[ii]] - planlist = [planlist, $ - replicate(fileandpath(allplan[iplan]), nadd)] - mjdlist = [mjdlist, replicate(thismjd, nadd)] - endelse - endif - endfor - endif - yanny_free, pp - endfor - if (keyword_set(allexp)) then begin - ;---------- - ; Determine all the plate plugging names - allmaps = allexp.mapname - allmaps = allmaps[ uniq(allmaps, sort(allmaps)) ] - ;---------- - ; Loop through all plate plugging names - for imap=0, n_elements(allmaps)-1 do begin - indx = where(allexp.mapname EQ allmaps[imap] $ - AND (allexp.flavor EQ 'science' OR allexp.flavor EQ 'smear')) - if (indx[0] NE -1) then spexp = allexp[indx] $ - else spexp = 0 - ;---------- - ; Decide if any of these MJD's are within the bounds - ; specified by MJD,MJSTART,MJEND. If so, then set QMJD=1 - qmjd = 1B - if (keyword_set(spexp)) then begin - mjdlist1 = mjdlist[indx] - qmjd = mjd_match(mjdlist1, mjd=mjd, mjstart=mjstart, mjend=mjend) - if (qmjd EQ 0) then $ - splog, 'Skip MAP=', allmaps[imap], ' with MJD=', $ - mjdlist1[ uniq(mjdlist1, sort(mjdlist1)) ] - endif - ;print, allmaps[imap], qmjd, keyword_set(spexp) - if (keyword_set(spexp) AND qmjd) then begin - ;---------- - ; Determine the 2D plan files that are relevant - planlist1 = planlist[indx] - planlist1 = planlist1[ uniq(planlist1, sort(planlist1)) ] - ;---------- - ; Replace the prefix 'sdR' with 'spFrame' in the science frames - ; and the suffix '.fit' with '.fits' - newnames = spexp.name - for i=0, n_elements(newnames)-1 do begin - jj = strpos(newnames[i], '-') - kk = strpos(newnames[i], '.', /reverse_search) - if (jj NE -1 AND kk NE -1) then $ - newnames[i] = 'spFrame' + strmid(newnames[i], jj, kk-jj) $ - + '.fits' - endfor - spexp.name = newnames - ;---------- - ; Determine names of output files - pltid = spexp[0].plateid - platestr = plate_to_string(pltid) - thismjd = max(spexp.mjd) - mjdstr = string(thismjd, format='(i05.5)') - outdir = concat_dir(topdir, platedir) - planfile = 'spPlancomb-' + platestr + '-' + mjdstr + '.par' - ;---------- - ; Create keyword pairs for plan file - hdr = '' - hdr = [hdr, "plateid " + platestr + " # Plate number"] - hdr = [hdr, "MJD " + mjdstr $ - + " # Modified Julian Date for most recent observation"] - hdr = [hdr, "RUN2D " + run2d + " # 2D reduction name"] - sq = "'" - hdr = [hdr, "planfile2d " $ - + string(sq+planlist1+sq+' ', format='(99a)') $ - + " # Plan file(s) for 2D spectral reductions"] - hdr = [hdr, "planfilecomb '" + planfile $ - + "' # Plan file for combine (this file)"] - hdr = [hdr, "idlspec2dVersion '" + idlspec2d_version() $ - + "' # Version of idlspec2d when building plan file"] - hdr = [hdr, "idlutilsVersion '" + idlutils_version() $ - + "' # Version of idlutils when building plan file"] - spawn, 'speclog_version', logvers, /noshell - hdr = [hdr, "speclogVersion '" + logvers $ - + "' # Version of speclog when building plan file"] - ;---------- - ; Write output file - spawn, 'mkdir -p ' + outdir - fullplanfile = djs_filepath(planfile, root_dir=outdir) - qexist = keyword_set(findfile(fullplanfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing plan file: ' + planfile $ - else $ - splog, 'WARNING: Will not over-write plan file: ' + planfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing plan file ', fullplanfile - yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr - endif - endif - endfor ; End loop through plate plugging names - endif - endfor - endif else begin - ;--------------------------------------------------------------------------- - ; Loop through each input configuration directory - for ifield=0, N_elements(fieldlist)-1 do begin - fielddir = fieldlist[ifield] - splog, '' - splog, 'bhm field directory ', fielddir - ;---------- - ; Find all 2D plan files - allplan = findfile(djs_filepath('spPlan2d*.par', root_dir=topdir, $ - subdirectory=fielddir), count=nplan) - ;---------- - ; Read all the 2D plan files - ; The string array PLANLIST keeps a list of the plan file that each - ; element of the ALLEXP structure came from, and MJDLIST keeps the - ; list of each MJD - allexp = 0 - planlist = 0 - for iplan=0, nplan-1 do begin - yanny_read, allplan[iplan], pp, hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - for ii=0, n_elements(pp)-1 do begin - sname = tag_names(*pp[ii], /structure_name) - if (sname EQ 'SPEXP') then begin - nadd = n_elements(*pp[ii]) - if (NOT keyword_set(allexp)) then begin - allexp = *pp[ii] - planlist = replicate(fileandpath(allplan[iplan]), nadd) - mjdlist = replicate(thismjd, nadd) - endif else begin - allexp = [allexp, *pp[ii]] - planlist = [planlist, $ - replicate(fileandpath(allplan[iplan]), nadd)] - mjdlist = [mjdlist, replicate(thismjd, nadd)] - endelse - endif - endfor - yanny_free, pp - endfor - if (keyword_set(allexp)) then begin - ;---------- - ; Determine all the fps configuration names - ;allmaps = allexp.mapname - ;allmaps = allmaps[ uniq(allmaps, sort(allmaps)) ] - ;---------- - ; Loop through all fps configuration names - ;for imap=0, n_elements(allmaps)-1 do begin - ;indx = where(allexp.mapname EQ allmaps[imap] $ - ; AND (allexp.flavor EQ 'science' OR allexp.flavor EQ 'smear')) - indx = where((allexp.flavor EQ 'science' OR allexp.flavor EQ 'smear')) - if (indx[0] NE -1) then begin - spexp = allexp[indx] - endif else begin - spexp = 0 - endelse - ;---------- - ; Decide if any of these MJD's are within the bounds - ; specified by MJD,MJSTART,MJEND. If so, then set QMJD=1 - qmjd = 1B - if (keyword_set(spexp)) then begin - mjdlist1 = mjdlist[indx] - qmjd = mjd_match(mjdlist1, mjd=mjd, mjstart=mjstart, mjend=mjend) - if (qmjd EQ 0) then $ - splog, 'Skip FIELD=', spexp[0].fieldid, ' with MJD=', $ - mjdlist1[ uniq(mjdlist1, sort(mjdlist1)) ] - endif - ;print, allmaps[imap], qmjd, keyword_set(spexp) - if (keyword_set(spexp) AND qmjd) then begin - ;spexp=spexp[qmjd] - ;---------- - ; Determine the 2D plan files that are relevant - planlist1 = planlist[indx] - ;planlist1 = planlist1[qmjd] - ;print, planlist1u - ;---------- - ; Replace the prefix 'sdR' with 'spFrame' in the science frames - ; and the suffix '.fit' with '.fits' - if keyword_set(mjd) then begin - nind=where(spexp.mjd EQ mjd) - spexp=spexp[nind] - planlist1f=planlist1[nind] - planlist1=planlist1f[0] - endif - if (keyword_set(mjstart) AND keyword_set(mjend) AND qmjd) then begin - nind=where((spexp.mjd LE mjend) and (spexp.mjd GE mjstart)) - spexp=spexp[nind] - planlist1f=planlist1[nind] - planlist1=planlist1f[0] - endif - planlist1 = planlist1[ uniq(planlist1, sort(planlist1)) ] - ;print, planlist1 - ;exit - newnames = spexp.name - ;print, newnames - for i=0, n_elements(newnames)-1 do begin - jj = strpos(newnames[i], '-') - kk = strpos(newnames[i], '.', /reverse_search) - if (jj NE -1 AND kk NE -1) then $ - newnames[i] = 'spFrame' + strmid(newnames[i], jj, kk-jj) $ - + '.fits' - endfor - spexp.name = newnames - ;exit - ;---------- - ; Determine names of output files - ; HJIM -- change plate by confi - ;conid = spexp[0].confiid - ;confistr = config_to_string(conid) - ;confistr = spexp[0].confiid - fieldstr = spexp[0].fieldid - thismjd = max(spexp.mjd) - ;thismjd =spexp.mjd - mjdstr = string(thismjd, format='(i05.5)') - outdir = concat_dir(topdir, fielddir) - planfile = 'spPlancomb-' + fieldstr + '-' + mjdstr + '.par' - print, planfile - ;---------- - ; Create keyword pairs for plan file - hdr = '' - ;hdr = [hdr, "confiid " + confistr + " # FPS Configuration number"] - hdr = [hdr, "fieldid " + fieldstr + " # BHM Field number"] - hdr = [hdr, "MJD " + mjdstr $ - + " # Modified Julian Date for most recent observation"] - hdr = [hdr, "RUN2D " + run2d + " # 2D reduction name"] - sq = "'" - hdr = [hdr, "planfile2d " $ - + string(sq+planlist1+sq+' ', format='(99a)') $ - + " # Plan file(s) for 2D spectral reductions"] - hdr = [hdr, "planfilecomb '" + planfile $ - + "' # Plan file for combine (this file)"] - hdr = [hdr, "idlspec2dVersion '" + idlspec2d_version() $ - + "' # Version of idlspec2d when building plan file"] - hdr = [hdr, "idlutilsVersion '" + idlutils_version() $ - + "' # Version of idlutils when building plan file"] - spawn, 'speclog_version', logvers, /noshell - hdr = [hdr, "speclogVersion '" + logvers $ - + "' # Version of speclog when building plan file"] - ;---------- - ; Write output file - spawn, 'mkdir -p ' + outdir - fullplanfile = djs_filepath(planfile, root_dir=outdir) - qexist = keyword_set(findfile(fullplanfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing plan file: ' + planfile $ - else $ - splog, 'WARNING: Will not over-write plan file: ' + planfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing plan file ', fullplanfile - yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr - endif - endif - ;endfor ; End loop through fps configuration names - endif - endfor - endelse - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spplan1d_special.pro b/pro/spec2d/spplan1d_special.pro deleted file mode 100644 index fba84b166..000000000 --- a/pro/spec2d/spplan1d_special.pro +++ /dev/null @@ -1,534 +0,0 @@ -;+ -; NAME: -; spplan1d -; -; PURPOSE: -; Create plan file(s) for combining Spectro-2D outputs. -; -; CALLING SEQUENCE: -; spplan1d, [ topdir=, run2d=, mjd=, mjstart=, mjend=, $ -; platenum=, platestart=, plateend=, /clobber ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; topdir - Optional override value for the environment -; variable $BHM_SPECTRO_REDUX. -; run2d - Optional override value for the environment variable $RUN2D -; mjd - Use data from these MJD's. -; mjstart - Starting MJD. -; mjend - Ending MJD. -; platenum - Look for input data files in TOPINDIR/PLATENUM; default to -; search all subdirectories. Note that this need not be -; integer-valued, but could be for example '0306_test'. -; platestart - Starting plate number. -; plateend - Ending plate number. -; clobber - If set, then over-write conflicting plan files; default to -; not over-write files. -; -; OUTPUT: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; This routine spawns the Unix command 'mkdir'. -; The use of CONCAT_DIR may not be valid for non-Unix OS's. -; -; PROCEDURES CALLED: -; concat_dir() -; fileandpath() -; get_mjd_dir() -; idlspec2d_version() -; idlutils_version() -; mjd_match() -; splog -; sdsshead() -; sxpar() -; yanny_free -; yanny_par() -; yanny_read -; yanny_write -; -; REVISION HISTORY: -; 04-Jul-2000 Written by David Schlegel, Princeton. -; 15-Nov-2018 Modified by Hector Ibarra for the BHM -;- -;------------------------------------------------------------------------------ -pro spplan1d_special, topdir=topdir1, run2d=run2d1, $ - mjd=mjd, mjstart=mjstart, mjend=mjend, $ - confinum=confinum, confistart=confistart, confiend=confiend, $ - fieldnum=fieldnum, fieldstart=fieldstart, fieldend=fieldend, $ - clobber=clobber, lco=lco, legacy=legacy, plates=plates, $ - platnum=platnum, platstart=platstart, platend=platend - - ;---------- - ; Determine the top-level of the directory tree - ; - if keyword_set(lco) then begin - obsdir='LCO' - BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_S' - endif else begin - obsdir='APO' - BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_N' - endelse - obsdir='';coment this line for the final version HJIM - ;---------- - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - topdir=concat_dir(topdir, obsdir) - splog, 'Setting TOPDIR=', topdir - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - if (keyword_set(run2d)) then $ - topdir = djs_filepath('', root_dir=topdir, subdir=run2d) - finfo = file_info(topdir) - if (finfo.directory EQ 0) then begin - splog, 'Directory does not exist: '+topdir - return - endif - - ;reduxdir = getenv('BOSS_SPECTRO_REDUX') - topdir2=topdir+'/eFEDS' - path=topdir+'/conflist.fits' - data=mrdfits(path,1) - ind=uniq(data.plate) - plates_f=data[ind].plate - program=data[ind].PROGRAMNAME - ind=where(strmatch(program, '*eFED*', /fold_case) eq 1,nplates) - plates_f=plates_f[ind] - platelist=plate_to_string(plates_f) - ;if keyword_set(platstart) or keyword_set(platend) then begin - ; if (not keyword_set(legacy)) and (not keyword_set(plates)) then begin - ; splog, 'To reduce the plate format you must set the /legacy or /plates key word, process halt' - ; exit - ; endif - ;endif - -; if keyword_set(legacy) or keyword_set(plates) then begin -; ;---------- -; ; Create a list of the plate directories (as strings) and select only the plate directories -; ;platelist = get_mjd_dir(topdir, mjd=platnum, mjstart=platstart, $ -; ; mjend=platend,/alldirs) -; for ili=0, n_elements(platelist)-1 do begin -; platelist[ili]=platelist[ili]+'p' -; if strmid(strtrim(platelist[ili],2),4,1) ne 'p' then begin -; if strmid(strtrim(platelist[ili],2),5,1) ne 'p' then begin -; platelist[ili]='' -; endif -; endif -; endfor -; ii = where(platelist NE '', ct) -; if (ct EQ 0) then begin -; splog, 'There is no plate directories' -; return -; endif else begin -; platelist = platelist[ii] -; endelse -; splog, 'Number of plate directories = ', n_elements(platelist) -; endif else begin - ;---------- - ; Create a list of the configuration directories (as strings) - ; HJIM-- Change fiber by confi - fieldlist = get_mjd_dir(topdir, mjd=fieldnum, mjstart=fieldstart, $ - mjend=fieldend) - splog, 'Number of field directories = ', n_elements(fieldlist) - endelse - - ;HJIM -- reduce the number of spectrographs to one - camnames = ['b1', 'r1'] - ncam = N_elements(camnames) - if keyword_set(legacy) then begin - camnames = ['b1', 'r1', 'b2', 'r2'] - endif - - - if keyword_set(legacy) or keyword_set(plates) then begin - ;--------------------------------------------------------------------------- - ; Loop through each input plate directory - spawn, 'mkdir -p ' + topdir2 - for iplate=0, N_elements(platelist)-1 do begin - platedir = '00000p'; - platedirt = platelist[iplate] - splog, '' - splog, 'Plate directory ', platedirt;,platelist[iplate] - outdir = concat_dir(topdir2, platedir) - spawn, 'mkdir -p ' + outdir - ;---------- - ; Find all 2D plan files - allplan = findfile(djs_filepath('spPlan2d*.par', root_dir=topdir, $ - subdirectory=platedirt), count=nplan) - for ifile=0, nplan-1 do begin - ;print,allplan[ifile] - spawn, 'cp ' + allplan[ifile] + ' ' + outdir + '/' - endfor - tempf = findfile(djs_filepath('spArc-*', root_dir=topdir, $ - subdirectory=platedirt), count=ntemp) - for ifile=0, ntemp-1 do begin - spawn, 'cp ' + tempf[ifile] + ' ' + outdir + '/' - endfor - tempf = findfile(djs_filepath('spDiag2d*', root_dir=topdir, $ - subdirectory=platedirt), count=ntemp) - for ifile=0, ntemp-1 do begin - spawn, 'cp ' + tempf[ifile] + ' ' + outdir + '/' - endfor - tempf = findfile(djs_filepath('spFlat-*', root_dir=topdir, $ - subdirectory=platedirt), count=ntemp) - for ifile=0, ntemp-1 do begin - spawn, 'cp ' + tempf[ifile] + ' ' + outdir + '/' - endfor - tempf = findfile(djs_filepath('spFrame-*', root_dir=topdir, $ - subdirectory=platedirt), count=ntemp) - for ifile=0, ntemp-1 do begin - spawn, 'cp ' + tempf[ifile] + ' ' + outdir + '/' - endfor - endfor - ;for iplate=0, N_elements(platelist)-1 do begin - allplan = findfile(djs_filepath('spPlan2d*.par', root_dir=topdir2, $ - subdirectory=platedir), count=nplan) - ;---------- - ; Read all the 2D plan files - ; The string array PLANLIST keeps a list of the plan file that each - ; element of the ALLEXP structure came from, and MJDLIST keeps the - ; list of each MJD - allexp = 0 - planlist = 0 - for iplan=0, nplan-1 do begin - temp_plan=strsplit(allplan[iplan],'/',/extract) - temp_mjd=strsplit(temp_plan[n_elements(temp_plan)-1],'-',/extract) - temp_mjd=long(repstr(temp_mjd[n_elements(temp_mjd)-1],'.par')) - if keyword_set(plates) then begin - min_mjd=59030;LIMIT the use of single spectrograph after mjd 59005 - max_mjd=70000; Needs to change - endif else begin - min_mjd=0 - max_mjd=59030 - endelse - if temp_mjd ge min_mjd and temp_mjd lt max_mjd then begin - ;print,temp_mjd,nplan,temp_plan,'HOLA' - yanny_read, allplan[iplan], pp, hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - ;print,thismjd,temp_mjd - for ii=0, n_elements(pp)-1 do begin - sname = tag_names(*pp[ii], /structure_name) - if (sname EQ 'SPEXP') then begin - nadd = n_elements(*pp[ii]) - if (NOT keyword_set(allexp)) then begin - allexp = *pp[ii] - planlist = replicate(fileandpath(allplan[iplan]), nadd) - mjdlist = replicate(thismjd, nadd) - endif else begin - allexp = [allexp, *pp[ii]] - planlist = [planlist, $ - replicate(fileandpath(allplan[iplan]), nadd)] - mjdlist = [mjdlist, replicate(thismjd, nadd)] - endelse - endif - endfor - endif - yanny_free, pp - endfor - ;print,mjdlist - ;stop - if (keyword_set(allexp)) then begin - ;---------- - ; Determine all the plate plugging names - allmaps = allexp.mapname - allmaps = allmaps[ uniq(allmaps, sort(allmaps)) ] - ;---------- - ; Loop through all plate plugging names - ;print,allmaps - ;stop - ;for imap=0, n_elements(allmaps)-1 do begin - ;indx = where(allexp.mapname EQ allmaps[imap] $ - ; AND (allexp.flavor EQ 'science' OR allexp.flavor EQ 'smear')) - indx = where(allexp.flavor EQ 'science' OR allexp.flavor EQ 'smear') - if (indx[0] NE -1) then spexp = allexp[indx] $ - else spexp = 0 - ;---------- - ; Decide if any of these MJD's are within the bounds - ; specified by MJD,MJSTART,MJEND. If so, then set QMJD=1 - qmjd = 1B - if (keyword_set(spexp)) then begin - mjdlist1 = mjdlist[indx] - qmjd = mjd_match(mjdlist1, mjd=mjd, mjstart=mjstart, mjend=mjend) - ;if (qmjd EQ 0) then $ - ;splog, 'Skip MAP=', allmaps[imap], ' with MJD=', $ - ;mjdlist1[ uniq(mjdlist1, sort(mjdlist1)) ] - endif - ;print, allmaps[imap], qmjd, keyword_set(spexp) - if (keyword_set(spexp) AND qmjd) then begin - ;---------- - ; Determine the 2D plan files that are relevant - planlist1 = planlist[indx] - planlist1 = planlist1[ uniq(planlist1, sort(planlist1)) ] - ;---------- - ; Replace the prefix 'sdR' with 'spFrame' in the science frames - ; and the suffix '.fit' with '.fits' - ;print,planlist1 - ;print,spexp.mjd - ;print,max(spexp.mjd)-min(spexp.mjd) - ;HJIM epoch definition for the plate program - ;planlist1_org=planlist1 - RM_plates=plates_f;[15000,15001,15002,15038,15070,15071,15171,15172,15173,15252,15253] - plt=spexp[0].plateid - junk = where(RM_plates eq plt ,ct) - epc=1000;this number force to coadd during all the pluggin mapname - ;if ct gt 0 then epc=3 - spexp_org=spexp - stop_loop=0 - ;print,spexp.mjd - ;if max(spexp_org.mjd)-min(spexp_org.mjd) gt 3 then begin - ;while max(spexp.mjd)-min(spexp.mjd) gt 3 do begin - while stop_loop eq 0 do begin - ;minmjdepoch=min(spexp.mjd) - ;if max(spexp_org.mjd) eq max(spexp.mjd) then begin - ; stop_loop=1 - ;endif else begin - ; stop_loop=0 - ;endelse - indx_ep = where(spexp.mjd lt min(spexp.mjd)+epc) - ;print,max(spexp.mjd)-min(spexp.mjd) - spexp=spexp[indx_ep] - epoch_tag = replicate( $ - {epoch_combine: min(spexp.mjd)}, n_elements(spexp)) - spexp = struct_addtags(spexp, epoch_tag) - ;print,ptr_new(spexp) - ;print,temp.mjd - ;print,spexp.mjd - ;endwhile - ;endif - ;print,max(spexp[0].mjd) - ;stop - newnames = spexp.name - for i=0, n_elements(newnames)-1 do begin - jj = strpos(newnames[i], '-') - kk = strpos(newnames[i], '.', /reverse_search) - if (jj NE -1 AND kk NE -1) then $ - newnames[i] = 'spFrame' + strmid(newnames[i], jj, kk-jj) $ - + '.fits' - endfor - spexp.name = newnames - spexp.plateid='00000';platedir - ;---------- - ; Determine names of output files - pltid = spexp[0].plateid - platestr = plate_to_string(pltid) - thismjd = max(spexp.mjd) - ;print,min(spexp.mjd),max(spex.mjd) - mjdstr = string(thismjd, format='(i05.5)') - planfile = 'spPlancomb-' + platestr + '-' + mjdstr + '.par' - ;---------- - ; Create keyword pairs for plan file - hdr = '' - hdr = [hdr, "plateid " + platestr + " # Plate number"] - hdr = [hdr, "MJD " + mjdstr $ - + " # Modified Julian Date for most recent observation"] - hdr = [hdr, "RUN2D " + run2d + " # 2D reduction name"] - sq = "'" - hdr = [hdr, "planfile2d " $ - + string(sq+planlist1+sq+' ', format='(99a)') $ - + " # Plan file(s) for 2D spectral reductions"] - hdr = [hdr, "planfilecomb '" + planfile $ - + "' # Plan file for combine (this file)"] - hdr = [hdr, "idlspec2dVersion '" + idlspec2d_version() $ - + "' # Version of idlspec2d when building plan file"] - hdr = [hdr, "idlutilsVersion '" + idlutils_version() $ - + "' # Version of idlutils when building plan file"] - spawn, 'speclog_version', logvers, /noshell - hdr = [hdr, "speclogVersion '" + logvers $ - + "' # Version of speclog when building plan file"] - ;---------- - ; Write output file - fullplanfile = djs_filepath(planfile, root_dir=outdir) - qexist = keyword_set(findfile(fullplanfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing plan file: ' + planfile $ - else $ - splog, 'WARNING: Will not over-write plan file: ' + planfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing plan file ', fullplanfile - yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr, stnames='SPEXP' - endif - if max(spexp_org.mjd) eq max(spexp.mjd) then begin - stop_loop=1 - endif else begin - stop_loop=0 - endelse - indx_ep = where(spexp_org.mjd gt max(spexp.mjd)) - ;iprint,spexp_org.mjd,'HOLA1' - ;print,spexp.mjd,'HOLA1' - ;print,indx_ep - if (indx_ep[0] NE -1) then spexp = spexp_org[indx_ep] - ;print,spexp.mjd,'HOLA2' - endwhile - ;endif;End of the epoch definition for the plate program - endif - ;endfor ; End loop through plate plugging names - endif - ;endfor - endif else begin - ;--------------------------------------------------------------------------- - ; Loop through each input configuration directory - for ifield=0, N_elements(fieldlist)-1 do begin - fielddir = fieldlist[ifield] - splog, '' - splog, 'bhm field directory ', fielddir - ;---------- - ; Find all 2D plan files - allplan = findfile(djs_filepath('spPlan2d*.par', root_dir=topdir, $ - subdirectory=fielddir), count=nplan) - ;---------- - ; Read all the 2D plan files - ; The string array PLANLIST keeps a list of the plan file that each - ; element of the ALLEXP structure came from, and MJDLIST keeps the - ; list of each MJD - allexp = 0 - planlist = 0 - for iplan=0, nplan-1 do begin - yanny_read, allplan[iplan], pp, hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - for ii=0, n_elements(pp)-1 do begin - sname = tag_names(*pp[ii], /structure_name) - if (sname EQ 'SPEXP') then begin - nadd = n_elements(*pp[ii]) - if (NOT keyword_set(allexp)) then begin - allexp = *pp[ii] - planlist = replicate(fileandpath(allplan[iplan]), nadd) - mjdlist = replicate(thismjd, nadd) - endif else begin - allexp = [allexp, *pp[ii]] - planlist = [planlist, $ - replicate(fileandpath(allplan[iplan]), nadd)] - mjdlist = [mjdlist, replicate(thismjd, nadd)] - endelse - endif - endfor - yanny_free, pp - endfor - if (keyword_set(allexp)) then begin - ;---------- - ; Determine all the fps configuration names - ;allmaps = allexp.mapname - ;allmaps = allmaps[ uniq(allmaps, sort(allmaps)) ] - ;---------- - ; Loop through all fps configuration names - ;for imap=0, n_elements(allmaps)-1 do begin - ;indx = where(allexp.mapname EQ allmaps[imap] $ - ; AND (allexp.flavor EQ 'science' OR allexp.flavor EQ 'smear')) - indx = where((allexp.flavor EQ 'science' OR allexp.flavor EQ 'smear')) - if (indx[0] NE -1) then begin - spexp = allexp[indx] - endif else begin - spexp = 0 - endelse - ;---------- - ; Decide if any of these MJD's are within the bounds - ; specified by MJD,MJSTART,MJEND. If so, then set QMJD=1 - qmjd = 1B - if (keyword_set(spexp)) then begin - mjdlist1 = mjdlist[indx] - qmjd = mjd_match(mjdlist1, mjd=mjd, mjstart=mjstart, mjend=mjend) - if (qmjd EQ 0) then $ - splog, 'Skip FIELD=', spexp[0].fieldid, ' with MJD=', $ - mjdlist1[ uniq(mjdlist1, sort(mjdlist1)) ] - endif - ;print, allmaps[imap], qmjd, keyword_set(spexp) - if (keyword_set(spexp) AND qmjd) then begin - ;spexp=spexp[qmjd] - ;---------- - ; Determine the 2D plan files that are relevant - planlist1 = planlist[indx] - ;planlist1 = planlist1[qmjd] - ;print, planlist1u - ;---------- - ; Replace the prefix 'sdR' with 'spFrame' in the science frames - ; and the suffix '.fit' with '.fits' - if keyword_set(mjd) then begin - nind=where(spexp.mjd EQ mjd) - spexp=spexp[nind] - planlist1f=planlist1[nind] - planlist1=planlist1f[0] - endif - if (keyword_set(mjstart) AND keyword_set(mjend) AND qmjd) then begin - nind=where((spexp.mjd LE mjend) and (spexp.mjd GE mjstart)) - spexp=spexp[nind] - planlist1f=planlist1[nind] - planlist1=planlist1f[0] - endif - planlist1 = planlist1[ uniq(planlist1, sort(planlist1)) ] - ;print, planlist1 - ;exit - newnames = spexp.name - ;print, newnames - for i=0, n_elements(newnames)-1 do begin - jj = strpos(newnames[i], '-') - kk = strpos(newnames[i], '.', /reverse_search) - if (jj NE -1 AND kk NE -1) then $ - newnames[i] = 'spFrame' + strmid(newnames[i], jj, kk-jj) $ - + '.fits' - endfor - spexp.name = newnames - ;exit - ;---------- - ; Determine names of output files - ; HJIM -- change plate by confi - ;conid = spexp[0].confid - ;confistr = config_to_string(conid) - ;confistr = spexp[0].confid - fieldstr = spexp[0].fieldid - thismjd = max(spexp.mjd) - ;thismjd =spexp.mjd - mjdstr = string(thismjd, format='(i05.5)') - outdir = concat_dir(topdir, fielddir) - planfile = 'spPlancomb-' + fieldstr + '-' + mjdstr + '.par' - print, planfile - ;---------- - ; Create keyword pairs for plan file - hdr = '' - ;hdr = [hdr, "confid " + confistr + " # FPS Configuration number"] - hdr = [hdr, "fieldid " + fieldstr + " # BHM Field number"] - hdr = [hdr, "MJD " + mjdstr $ - + " # Modified Julian Date for most recent observation"] - hdr = [hdr, "RUN2D " + run2d + " # 2D reduction name"] - sq = "'" - hdr = [hdr, "planfile2d " $ - + string(sq+planlist1+sq+' ', format='(99a)') $ - + " # Plan file(s) for 2D spectral reductions"] - hdr = [hdr, "planfilecomb '" + planfile $ - + "' # Plan file for combine (this file)"] - hdr = [hdr, "idlspec2dVersion '" + idlspec2d_version() $ - + "' # Version of idlspec2d when building plan file"] - hdr = [hdr, "idlutilsVersion '" + idlutils_version() $ - + "' # Version of idlutils when building plan file"] - spawn, 'speclog_version', logvers, /noshell - hdr = [hdr, "speclogVersion '" + logvers $ - + "' # Version of speclog when building plan file"] - ;---------- - ; Write output file - spawn, 'mkdir -p ' + outdir - fullplanfile = djs_filepath(planfile, root_dir=outdir) - qexist = keyword_set(findfile(fullplanfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing plan file: ' + planfile $ - else $ - splog, 'WARNING: Will not over-write plan file: ' + planfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing plan file ', fullplanfile - yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr - endif - endif - ;endfor ; End loop through fps configuration names - endif - endfor - endelse - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spplan2d.pro b/pro/spec2d/spplan2d.pro deleted file mode 100644 index 0976a67a4..000000000 --- a/pro/spec2d/spplan2d.pro +++ /dev/null @@ -1,816 +0,0 @@ -;+ -; NAME: -; spplan2d -; -; PURPOSE: -; Create plan file(s) for running the Spectro-2D pipeline. -; -; CALLING SEQUENCE: -; spplan2d, [ topdir=, run2d=, mjd=, mjstart=, mjend=, minexp=, $ -; /clobber, /dr13 ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; run2d - Optional override value for the environment variable $RUN2D -; mjd - Look for raw data files in BOSS_SPECTRO_DATA/MJD; default to -; search all subdirectories. Note that this need not be -; integer-valued, but could be for example '51441_test'. -; mjstart - Starting MJD. -; mjend - Ending MJD. -; minexp - Minimum exposure time for science frames; default to 1 sec. -; clobber - If set, then over-write conflicting plan files; default to -; not over-write files. -; -; OUTPUT: -; -; COMMENTS: -; The environment variables SDSSCORE and BOSS_SPECTRO_DATA must be set. -; -; Look for the raw FITS data files in: -; BOSS_SPECTRO_DATA/MJD/sdR-cs-eeeeeeee.fit -; where c=color, s=spectrograph number, eeeeeeee=exposure number. -; -; The output 2D plan files created are: -; TOPOUTDIR/PLATE/spPlan2d-cccc-mmmmm.par -; where cccc=configuration number, mmmmm=MJD. -; -; For the earliest data (before MJD=51455), then NAME keyword in the FITS -; files did not properly describe the confsummary name. In those cases, -; look for the actual confsummary files in SDSSCORE. -; -; Exclude all files where the QUALITY header keyword is not 'excellent'. -; -; EXAMPLES: -; Create the plan file(s) for reducing the data for MJD=51441, with that -; top level directory set to '/u/schlegel/2d_test' -; > spplan2d, '/u/schlegel/2d_test', mjd=51441 -; -; BUGS: -; This routine spawns the Unix command 'mkdir'. -; The use of CONCAT_DIR may not be valid for non-Unix OS's. -; -; PROCEDURES CALLED: -; concat_dir() -; fileandpath() -; get_mjd_dir() -; idlspec2d_version() -; idlutils_version() -; splog -; sdsshead() -; spplan_findrawdata -; spplan_create_spexp -; sxpar() -; yanny_write -; -; REVISION HISTORY: -; 02-Nov-1999 Written by David Schlegel, Princeton. -; 05-Sep-2015 Plate number armaggedon correction by JEB. -; 15-Nov-2018 Modified by Hector Ibarra for the BHM -;- -;------------------------------------------------------------------------------ - -function log_baddata, fieldver, platetype=platetype, field=field, exp=exp, mjd=mjd, $ - note=note, DR=DR, bad=bad - if keyword_set(bad) then return, 1 - msg = 'Skipping '+fieldver+ ' ' - if keyword_set(platetype) then msg+= platetype - if keyword_set(field) then msg+=' field '+strtrim(field,2) $ - else if keyword_set(platetype) then msg+= ' field ' - if keyword_set(exp) then msg+=' exposure '+strtrim(exp,2) - if keyword_set(mjd) then msg+=' mjd '+strtrim(mjd,2) - ;if keyword_set(DR) then msg+=' for '+DR - if keyword_set(note) then msg+=' for '+note - splog, msg - return, 1 -end - -;------------------------------------------------------------------------------ -function find_row, mbaddata, fver=fver, field=field, mjd=mjd, exp=exp, $ - dr=dr, mjl=mjl, mjg=mjg, ct=ct - - - if keyword_set(fver) then begin - match = where((strmatch(mbaddata.fieldver, fver, /fold_case) eq 1), ct) - if ct ne 0 then mbaddata=mbaddata[match] else return, 0 - endif - if keyword_set(field) then begin - match = where(mbaddata.fieldid eq field, ct) - if ct ne 0 then mbaddata=mbaddata[match] else return, 0 - endif - if keyword_set(mjd) then begin - match = where((mbaddata.mjd eq mjd or mbaddata.mjd eq -1), ct) - if ct ne 0 then mbaddata=mbaddata[match] else return, 0 - endif - if keyword_set(mjl) then begin - match = where(mbaddata.mjd lt mjl, ct) - if ct ne 0 then mbaddata=mbaddata[match] else return, 0 - endif - if keyword_set(mjg) then begin - match = where(mbaddata.mjd gt mjg, ct) - if ct ne 0 then mbaddata=mbaddata[match] else return, 0 - endif - if keyword_set(exp) then begin - match = where((mbaddata.expid eq exp or mbaddata.expid eq ''), ct) - if ct ne 0 then mbaddata=mbaddata[match] else return, 0 - endif - if keyword_set(dr) then begin - match = where(strmatch(mbaddata.dr, dr, /fold_case) eq 1, ct) - if ct ne 0 then mbaddata=mbaddata[match] else return, 0 - endif else begin - match = where(strmatch(mbaddata.dr, '', /fold_case) eq 1, ct) - if ct ne 0 then mbaddata=mbaddata[match] else return, 0 - endelse - return, mbaddata -end -;------------------------------------------------------------------------------ - -function check_baddata, flavor, field, mjd, exposure=exposure, platetype=platetype, $ - dr13=dr13, legacy=legacy, plates=plates - - COMMON BADDATA1, baddata - if not keyword_set(baddata) then begin - baddata = yanny_readone(filepath('Baddata.par',root_dir=getenv('IDLSPEC2D_DIR'),$ - subdir='opfiles'), hdr=hdr) - ;struct_print,baddata - endif - - field = long(field) - mjd = long(mjd) - if keyword_set(exposure) then exp=strtrim(string(exposure,f='(i8.8)'),2) else exp="" - if keyword_set(platetype) then ptype = platetype else ptype="" - - undefine, bad - mbaddata = baddata - - if keyword_set(legacy) then begin - if keyword_set(dr13) then print,'dr13' - if keyword_set(dr13) and (strmatch(ptype, 'boss', /fold_case) eq 0) then begin - bad=log_baddata('LEGACY', platetype=platetype, bad=bad, $ - note="Skipping eBOSS plates and RM plates for DR13") - if keyword_set(bad) then flavor = 'unknown' - endif - mbaddata = find_row(mbaddata, fver='*LEGACY*', mjl=59030, ct=ct) - if ct eq 0 then return, flavor - - - if keyword_set(dr13) then begin; Skipping eBOSS plates and RM plates for DR13 - mbaddata = find_row(mbaddata, dr='*DR13*', ct=ct) - if ct eq 0 then return, flavor - - mbaddata = find_row(mbaddata, mjg=mjd, field=field, ct=ct) - if ct eq 0 then return, flavor - if ct eq 1 then $ - bad=log_baddata(mbaddata[0].fieldver, platetype=platetype, field=field, $ - exp=exposure, mjd=mjd, bad=bad, note=mbaddata[0].Note) - if keyword_set(bad) then flavor = 'unknown' - endif - - endif else begin - if keyword_set(plates) then begin - mbaddata = find_row(mbaddata, fver='*PLATES*', mjl=59550, mjg=59030, ct=ct) - if ct eq 0 then return, flavor - endif else begin - mbaddata = find_row(mbaddata, fver='*FPS*', ct=ct) - if ct eq 0 then return, flavor - endelse - endelse - - if keyword_set(exposure) then begin - mbaddata = find_row(mbaddata, exp=exp, ct=ct) - if ct eq 0 then return, flavor - if ct eq 1 then $ - bad=log_baddata(mbaddata[0].fieldver, platetype=platetype, field=field, $ - exp=exp, mjd=mjd, bad=bad, note=mbaddata[0].Note) - if keyword_set(bad) then flavor = 'unknown' - endif - mbaddata = find_row(mbaddata, field=field, mjd=mjd, ct=ct) - if ct eq 0 then return, flavor - if ct eq 1 then $ - bad=log_baddata(mbaddata[0].fieldver, platetype=platetype, field=field, $ - exp=exp, mjd=mjd, bad=bad, note=mbaddata[0].Note) - if keyword_set(bad) then flavor = 'unknown' - return, flavor - end - -;------------------------------------------------------------------------------ - -pro spplan2d, topdir=topdir1, run2d=run2d1, mjd=mjd, lco=lco, $ - mjstart=mjstart, mjend=mjend, minexp=minexp, clobber=clobber, dr13=dr13, $ - _extra=foo, legacy=legacy, plates=plates, nocomm=nocomm, nodither=nodither,$ - matched_flats=matched_flats, test_twilight=test_twilight, release=release,$ - nomatched_arcs=nomatched_arcs - -RESOLVE_ALL, /QUIET, /SKIP_EXISTING, /CONTINUE_ON_ERROR - - - if (NOT keyword_set(minexp)) then minexp = 1 - if keyword_set(lco) then begin - sdsscore_obs='lco' - BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_S' - endif else begin - sdsscore_obs='apo' - BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_N' - endelse - ;---------- - ; Determine the top-level of the output directory tree - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - splog, 'Setting TOPDIR=', topdir - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - - ;---------- - ; Read environment variable for BOSS_SPECTRO_DATA for finding raw data files. - - rawdata_dir = getenv(BOSS_SPECTRO_DATA) - if (NOT keyword_set(rawdata_dir)) then $ - message, 'Must set environment variable BOSS_SPECTRO_DATA' - splog, 'Setting BOSS_SPECTRO_DATA=', rawdata_dir - - speclog_dir = getenv('SPECLOG_DIR') - if (NOT keyword_set(speclog_dir)) then $ - message, 'Must set environment variable SPECLOG_DIR' - splog, 'Setting SPECLOG_DIR=', speclog_dir - sdsscore_dir = getenv('SDSSCORE_DIR') - if (NOT keyword_set(sdsscore_dir)) then $ - message, 'Must set environment variable SDSSCORE_DIR' - sdsscore_dir = concat_dir(sdsscore_dir, sdsscore_obs) - sdsscore_dir = concat_dir(sdsscore_dir, 'summary_files') - splog, 'Setting SDSSCORE_DIR=', sdsscore_dir - spawn, 'speclog_version', logvers, /noshell - - ;---------- - ; Create a list of the MJD directories (as strings) - - mjdlist = get_mjd_dir(rawdata_dir, mjd=mjd, mjstart=mjstart, mjend=mjend) - nmjd = n_elements(mjdlist) - splog, 'Number of MJDs = ', nmjd - ;;HJIM -- reduce the number of spectrographs to one - - plateflavors = ['BHM', 'BHM&MWM', 'EBOSS', 'BOSS'] - - ;--------------------------------------------------------------------------- - ; Loop through each input MJD directory - - dithered_pmjds = [] - - for imjd=0, nmjd-1 do begin - - - mjddir = mjdlist[imjd] - thismjd = long(mjdlist[imjd]) - - get_field_type, mjd=thismjd, legacy=legacy, plates=plates, fps=fps - - inputdir = concat_dir(rawdata_dir, mjddir) - if keyword_set(legacy) or keyword_set(plates) then begin - plugdir = concat_dir(speclog_dir, mjddir) - endif else begin - confdir = sdsscore_dir - endelse - splog, '' - splog, 'Data directory ', inputdir - - ; Find all raw FITS files in this directory - fullname = spplan_findrawdata(inputdir, nfile) - splog, 'Number of FITS files found: ', nfile - - if (nfile GT 0) then begin - - ;---------- - ; Remove the path from the file names - - shortname = strarr(nfile) - for i=0, nfile-1 do shortname[i] = fileandpath(fullname[i]) - - ;---------- - ; Find all useful header keywords - ; HJIM-- Change FIBERID by CONFID - - EXPTIME = fltarr(nfile) - EXPOSURE = lonarr(nfile) - FLAVOR = strarr(nfile) - DITHER = strarr(nfile) - CAMERAS = strarr(nfile) - MAPNAME = strarr(nfile) - TAI = fltarr(nfile) - if keyword_set(legacy) or keyword_set(plates) then begin - FIELDID = lonarr(nfile) - endif else begin - FIELDID = strarr(nfile) ; Added by HJIM - CONFID = strarr(nfile) ; Added by HJIM - CONFNAME = strarr(nfile) ; Added by HJIM - endelse - - - for i=0, nfile-1 do begin - if (i eq 0) then begin - hdr = sdsshead(fullname[i]) - endif else begin - hdr = sdsshead(fullname[i],/silentwarn) - endelse - if (size(hdr,/tname) EQ 'STRING') then begin - - EXPTIME[i] = sxpar(hdr, 'EXPTIME') - EXPOSURE[i] = long( sxpar(hdr, 'EXPOSURE') ) - FLAVOR[i] = strtrim(sxpar(hdr, 'FLAVOR'),2) - CAMERAS[i] = strtrim(sxpar(hdr, 'CAMERAS'),2) - TAI[i] = sxpar(hdr, 'TAI-BEG') - DITHER[i] = 'F' - if keyword_set(legacy) or keyword_set(plates) then begin - MAPNAME[i] = strtrim(sxpar(hdr, 'NAME'),2) - FIELDID[i] = long( sxpar(hdr, 'PLATEID') ) - platetype = sxpar(hdr, 'PLATETYP', count=nhdr) - endif else begin - MAPNAME[i] = strtrim(sxpar(hdr, 'CONFID'),2) - map_name = strarr(1) - map_name[0]=MAPNAME[i] - CONFNAME[i] = map_name[0] - CONFID[i] = strtrim( sxpar(hdr, 'CONFID') );change long plate format to string format - platetype = 'BHM&MWM' ;sxpar(hdr, 'CONFTYP', count=nhdr) - nhdr = 1 - endelse - ;; Check CONFTYP for BOSS or EBOSS (e.g. not MANGA) - ;; If keyword is missing (older data), assume this is BOSS - if (nhdr GT 0) then begin - platetype = strupcase(strtrim(platetype,2)) - junk = where(plateflavors eq platetype, ct) - if ct eq 0 then begin - if keyword_set(legacy) or keyword_set(plates) then begin - splog, 'Skipping ' + platetype + $ - ' plate ', FIELDID[i], $ - ' exposure ', EXPOSURE[i] - FLAVOR[i] = 'unknown' - endif else begin - splog, 'Skipping ' + platetype + $ - ' configuration '+ CONFID[i] + $ - ' exposure ', EXPOSURE[i] - FLAVOR[i] = 'unknown' - endelse - endif else begin - if keyword_set(legacy) then begin - FLAVOR[i] = check_baddata(FLAVOR[i], FIELDID[i], thismjd, $ - exposure=EXPOSURE[i], platetype=platetype, $ - dr13=dr13, /legacy) - endif - endelse - endif - if keyword_set(legacy) then begin - FLAVOR[i] = check_baddata(FLAVOR[i], FIELDID[i], thismjd, $ - exposure=sxpar( hdr, 'EXPOSURE'), /legacy) - endif - ; Exclude all files where the QUALITY keyword is not 'excellent'. - quality = strtrim(sxpar(hdr, 'QUALITY'),2) - if (quality NE 'excellent') then begin - splog, 'Warning: Non-excellent quality '+FLAVOR[i]+' file ' $ - + fileandpath(fullname[i]) + ' ('+quality+')' - FLAVOR[i] = 'unknown' - endif - ; Exclude files where the plate or configuration number does not match that - ; in the map name - if keyword_set(legacy) or keyword_set(plates) then begin - ; JEB -- plate number - if (plate_to_string(FIELDID[i]) NE strmid(MAPNAME[i],0,strpos(MAPNAME[i],'-'))) $ - && (FLAVOR[i] NE 'bias') then begin - platestr = strtrim(string(FIELDID[i]), 2) - splog, 'Warning: Plate number ' + platestr + ' flavor '+ FLAVOR[i] $ - + ' inconsistent with map name ' + fileandpath(fullname[i]) - FLAVOR[i] = 'unknown' - endif - endif else begin - ; HJIM -- configuration number - if (strtrim(CONFID[i],2) NE strtrim((map_name[0]),2)) && (FLAVOR[i] NE 'bias') then begin - platestr = strtrim(CONFID[i]) - - splog, 'Warning: Configuration number ' + platestr + ' flavor '+ FLAVOR[i] $ - + ' inconsistent with map name ' + fileandpath(fullname[i]) - FLAVOR[i] = 'unknown' - endif - if FLAVOR[i] EQ 'science' then begin - junk = where(strsplit(strtrim(sxpar(hdr, 'FFS'),2),/extract) ne '1', ct) - if ct eq 0 then begin - splog, 'Warning: Flat Field Shutters closed for science exposure '+strtrim(EXPOSURE[i],2) - FLAVOR[i] = 'unknown' - endif - endif - endelse - if (sxpar(hdr, 'MJD') NE thismjd) then $ - splog, 'Warning: Wrong MJD in file '+fileandpath(fullname[i]) - if keyword_set(legacy) or keyword_set(plates) then begin - ; MAPNAME should be of the form '000000-51683-01'. - ; If it only contains the FIELDID ;; (for MJD <= 51454), - ; then find the actual plug-map file. - if (strlen(MAPNAME[i]) LE 4) then begin - plugfile = 'plPlugMapM-' $ - + string(long(MAPNAME[i]), format='(i4.4)') + '-*.par' - plugfile = (findfile(filepath(plugfile, root_dir=plugdir), $ - count=ct))[0] - if (ct EQ 1) then $ - MAPNAME[i] = strmid(fileandpath(plugfile), 11, 13) - endif - endif else begin - if (strlen(MAPNAME[i]) LE 15) then begin - confile = 'confSummaryF-' + map_name[0] + '.par' - confile = (findfile(filepath(confile, root_dir=confdir, subdir='*/*'), count=ct))[0] - if (ct ne 0) then begin - MAPNAME[i] = map_name[0] - confile = 'confSummaryF-'+ map_name[0]+'.par' - endif else begin - confile = 'confSummary-' + map_name[0] + '.par' - confile = (findfile(filepath(confile, root_dir=confdir, subdir='*/*'), count=ct))[0] - if (ct EQ 1) then MAPNAME[i] = map_name[0];strmid(fileandpath(confile), 11, 15) - confile = 'confSummary-'+ map_name[0]+'.par' - endelse - if strmatch(map_name[0],'NaN',/fold_case) or strmatch(map_name[0],'/',/fold_case) then begin - thisfield=field_to_string(0) - endif else begin - thisplan=(findfile(filepath(confile, root_dir=confdir,subdir='*/*')))[0] - allseq = yanny_readone(thisplan, 'SPEXP', hdr=hdr1, /anon) - thisfield=field_to_string(yanny_par(hdr1,'field_id')) - if yanny_par(hdr1,'field_id') eq -999 then thisfield=field_to_string(0) - if strlen(thisfield) eq 0 then thisfield=field_to_string(0) - endelse - FIELDID[i]=thisfield - - if keyword_set(nodither) then begin - if (yanny_par(hdr1, 'is_dithered'))[0] or $ - (yanny_par(hdr1, 'parent_configuration') NE '-999') then begin - FLAVOR[i] = 'unknown' - DITHER[i] = 'T' - dithered_pmjds = [dithered_pmjds, long(thisfield)] - dithered_pmjds = dithered_pmjds[UNIQ(dithered_pmjds, sort(dithered_pmjds))] - endif - endif else begin - if (yanny_par(hdr1, 'is_dithered'))[0] or $ - (yanny_par(hdr1, 'parent_configuration') NE '-999') then DITHER['i'] = 'T' - endelse - endif - endelse - if strmatch(FLAVOR[i], 'flat',/fold_case) then continue - FLAVOR[i] = check_baddata(FLAVOR[i], FIELDID[i], thismjd, exposure=EXPOSURE[i]) - - endif - endfor - - ;---------- - ; - if keyword_set(legacy) or keyword_set(plates) then begin - ;---------- - ; Determine all the plate plugging names - allmaps = MAPNAME[ uniq(MAPNAME, sort(MAPNAME)) ] - ;---------- - ; Loop through all plate plugging names - for imap=0, n_elements(allmaps)-1 do begin - spexp = 0 ; Zero-out this output structure - ;---------- - ; Loop through all exposure numbers for this plate-plugging - theseexp = EXPOSURE[ where(MAPNAME EQ allmaps[imap]) ] - allexpnum = theseexp[ uniq(theseexp, sort(theseexp)) ] - for iexp=0, n_elements(allexpnum)-1 do begin - indx = where(MAPNAME EQ allmaps[imap] $ - AND EXPOSURE EQ allexpnum[iexp] $ - AND FLAVOR NE 'unknown', ct) - - if (ct GT 0) then begin - spexp1 = spplan_create_spexp(allexpnum[iexp], $ - '', thismjd, FIELDID[indx[0]], $ - MAPNAME[indx[0]], FLAVOR[indx[0]], EXPTIME[indx[0]], $ - shortname[indx], CAMERAS[indx], lco=lco, minexp=minexp, $ - legacy=legacy, dither = DITHER[indx[0]]) - if (keyword_set(spexp1)) then begin - if (keyword_set(spexp)) then spexp = [spexp, spexp1] $ - else spexp = spexp1 - endif - endif - endfor - ;---------- - ; Discard these observations if the plate number is not - ; in the range 1 to 9990. - if (keyword_set(spexp)) then begin - pltid = long(spexp[0].fieldid) - dither = spexp[0].dither - if (pltid GT 0) then begin - platestr = field_to_string(pltid) - endif else begin - splog, 'WARNING: Plate number '+strtrim(string(pltid),2)+' invalid for MAPNAME=' + allmaps[imap] - platestr = field_to_string(0) - spexp = 0 - endelse - endif else begin - splog, "WARNING: no good exposures for MAPNAME="+allmaps[imap] - pltid = 0 - endelse - mjdstr = string(thismjd, format='(i05.5)') - ;---------- - ; Discard these observations if there is not at least one flat, - ; one arc, and one science exposure - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'flat', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No flats for MAPNAME=' + allmaps[imap] - spexp = 0 - endif - endif - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'arc', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No arcs for MAPNAME=' + allmaps[imap] - spexp = 0 - endif - endif - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'science' OR spexp.flavor EQ 'smear', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No science frames for MAPNAME=' + allmaps[imap] - spexp = 0 - endif - endif - if (keyword_set(spexp)) then begin - ;---------- - ; Determine names of output files - outdir = djs_filepath('', root_dir=topdir, $ - subdir=[run2d,platestr]);HJIM add p to identify plate diretories - planfile = 'spPlan2d-' + platestr + '-' + mjdstr + '.par' - logfile = 'spDiag2d-' + platestr + '-' + mjdstr + '.log' - plotfile = 'spDiag2d-' + platestr + '-' + mjdstr + '.ps' - ;---------- - ; Create keyword pairs for plan file - hdr = '' - hdr = [hdr, "fieldname " + platestr + " # field number"] - hdr = [hdr, "MJD " + mjdstr $ - + " # Modified Julian Date"] - hdr = [hdr, "OBS " + "APO # Observatory"] - hdr = [hdr, "RUN2D " + run2d + " # 2D reduction name"] - hdr = [hdr, "planfile2d '" + planfile $ - + "' # Plan file for 2D spectral reductions (this file)"] - hdr = [hdr, "idlspec2dVersion '" + idlspec2d_version() $ - + "' # Version of idlspec2d when building plan file"] - hdr = [hdr, "idlutilsVersion '" + idlutils_version() $ - + "' # Version of idlutils when building plan file"] - hdr = [hdr, "speclogVersion '" + logvers $ - + "' # Version of speclog when building plan file"] - hdr = [hdr, "DITHER '"+ dither $ - + " # Is the Field Dithered (T: True, F: False)"] - ;---------- - ; Write output file - ; Create output directory if it does not yet exist - if (file_test(outdir, /directory) EQ 0) then begin - ; Bad if this exists as a file - if (file_test(outdir)) then $ - message, 'Expecting directory not file '+outdir - spawn, 'mkdir -p ' + outdir - endif - ; Bad if this exists as an unwriteable dir - if (file_test(outdir, /directory, /write) EQ 0) then $ - message, 'Cannot write to directory '+outdir - fullplanfile = filepath(planfile, root_dir=outdir) - qexist = keyword_set(findfile(fullplanfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing plan file: ' + planfile $ - else $ - splog, 'WARNING: Will not over-write plan file: ' + planfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing plan file ', fullplanfile - yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr - endif - endif - endfor ; End loop through plate plugging names - endif else begin - ; Determine all the conofiguration names - allfield = FIELDID[ uniq(FIELDID, sort(FIELDID))] - allconfs = CONFNAME[ uniq(FIELDID, sort(FIELDID))] - ;---------- - ; Loop through all configuration pointing names - ;for imap=0, n_elements(allconfs)-1 do begin - for imap=0, n_elements(allfield)-1 do begin - if keyword_set(nocomm) then begin - if (long(allfield[imap]) ge 16000 and long(allfield[imap]) lt 100000) then continue - endif - if keyword_set(nodither) and n_elements(dithered_pmjds) gt 0 then begin - junk = where(dithered_pmjds eq long(allfield[imap]), ct) - if ct ne 0 then begin - splog, 'Skipping dither Field '+ allfield[imap] - continue - endif - endif - - if keyword_set(release) then begin - t = check_baddata('', allfield[imap], thismjd) - if t eq 'unknown' then continue - endif - spexp = 0 ; Zero-out this output structure - ;---------- - ; Loop through all exposure numbers for this configuration pointing - ;theseexp = EXPOSURE[ where(CONFNAME EQ allconfs[imap]) ] - theseexp = EXPOSURE[ where(FIELDID EQ allfield[imap]) ] - allexpnum = theseexp[ uniq(theseexp, sort(theseexp)) ] - for iexp=0, n_elements(allexpnum)-1 do begin - ;indx = where(CONFNAME EQ allconfs[imap] $ - indx = where(FIELDID EQ allfield[imap] $ - AND EXPOSURE EQ allexpnum[iexp] $ - AND FLAVOR NE 'unknown', ct) - if keyword_set(test_twilight) then $ - indx = where(FIELDID EQ allfield[imap] $ - AND EXPOSURE EQ allexpnum[iexp] $ - AND FLAVOR NE 'unknown' $ - AND FLAVOR NE 'flat', ct) - if (ct GT 0) then begin - spexp1 = spplan_create_spexp(allexpnum[iexp], $ - CONFID[indx[0]], thismjd, FIELDID[indx[0]], $ - MAPNAME[indx[0]], FLAVOR[indx[0]], EXPTIME[indx[0]], $ - shortname[indx], CAMERAS[indx], lco=lco, minexp=minexp, $ - dither = DITHER[indx[0]]) - if (keyword_set(spexp1)) then begin - if (keyword_set(spexp)) then spexp = [spexp, spexp1] $ - else spexp = spexp1 - endif - endif - endfor - ;---------- - ; Discard these observations if the plate number is not - ; in the range 1 to 9990. - ; HJIM -- change plate by configuration - if (keyword_set(spexp)) then begin - conid =config_to_long(spexp[0].confid) - fieid =config_to_long(spexp[0].fieldid) - if (conid GE 0) then begin - if (fieid GE 0) then begin - fieldstr = field_to_string(fieid) - endif else begin - splog, 'WARNING: Field number '+strtrim(string(fieid),2)+' invalid for COFNAME=' + allconfs[imap] - fieldstr = field_to_string(0) - endelse - ;confistr = spexp[0].confid; - confistr = config_to_string(conid) - ;print, confistr - endif else begin - if (fieid GE 0) then begin - fieldstr = field_to_string(fieid) - endif else begin - splog, 'WARNING: Field number '+strtrim(string(fieid),2)+' invalid for COFNAME=' + allconfs[imap] - fieldstr = field_to_string(0) - endelse - splog, 'WARNING: Configuration number '+strtrim(string(conid),2)+' invalid for COFNAME=' + allconfs[imap] - confistr = config_to_string(0) - spexp = 0 - endelse - endif else begin - splog, "WARNING: no good exposures for CONFNAME="+allconfs[imap] - conid = 0 - fieid = 0 - endelse - - mjdstr = string(thismjd, format='(i05.5)') - if not keyword_set(matched_flats) then begin - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'science', cts) - if cts ne 0 then begin - indx = where(spexp.flavor EQ 'flat', ct) - if (ct EQ 0) then begin - f_exp = EXPOSURE[ where(FLAVOR EQ 'flat') ] - f_exp = f_exp[ uniq(f_exp, sort(f_exp)) ] - for iexp=0, n_elements(f_exp)-1 do begin - index = where(EXPOSURE eq f_exp[iexp], ct) - if ct gt 0 then begin - spexp1 = spplan_create_spexp(f_exp[iexp], CONFID[index[0]],$ - thismjd, (spexp.fieldid)[0], MAPNAME[index[0]],$ - FLAVOR[index[0]], EXPTIME[index[0]], $ - shortname[index], CAMERAS[index], lco=lco, $ - minexp=minexp, dither = DITHER[indx[0]] ) - if (keyword_set(spexp1)) then spexp = [spexp, spexp1] - endif - endfor - endif - endif - endif - endif - ;---------- - ; Discard these observations if there is not at least one flat, - ; one arc, and one science exposure - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'flat', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No flats for CONFNAME=' + allconfs[imap] - spexp = 0 - endif - endif - - if (keyword_set(spexp)) then begin - if ((spexp.fieldid)[0] eq 100499) and ((spexp.mjd)[0] eq 59797) then begin - ; replace a bad arc lamp with the next closest one - a_exp = 345103 - index = where(EXPOSURE eq a_exp, ct) - spexp1 = spplan_create_spexp(a_exp, CONFID[index[0]],$ - thismjd, (spexp.fieldid)[0], MAPNAME[index[0]],$ - FLAVOR[index[0]], EXPTIME[index[0]], $ - shortname[index], CAMERAS[index], lco=lco, $ - minexp=minexp, dither = DITHER[indx[0]]) - spexp = [spexp, spexp1] - endif - - if keyword_set(nomatched_arcs) then begin - junk = where(spexp.flavor EQ 'science', cts) - if cts ne 0 then begin - indx = where(spexp.flavor EQ 'arc', ct) - if (ct EQ 0) then begin - f_exp = EXPOSURE[ where(FLAVOR EQ 'arc') ] - f_exp = f_exp[ uniq(f_exp, sort(f_exp)) ] - for iexp=0, n_elements(f_exp)-1 do begin - index = where(EXPOSURE eq f_exp[iexp], ct) - if ct gt 0 then begin - spexp1 = spplan_create_spexp(f_exp[iexp], CONFID[index[0]],$ - thismjd, (spexp.fieldid)[0], MAPNAME[index[0]],$ - FLAVOR[index[0]], EXPTIME[index[0]], $ - shortname[index], CAMERAS[index], lco=lco, $ - minexp=minexp, dither = DITHER[indx[0]]) - if (keyword_set(spexp1)) then spexp = [spexp, spexp1] - endif - endfor - endif - endif - endif - junk = where(spexp.flavor EQ 'arc', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No arcs for CONFNAME=' + allconfs[imap] - spexp = 0 - endif - endif - - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'science' $ - OR spexp.flavor EQ 'smear', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No science frames for CONFNAME=' + allconfs[imap] - spexp = 0 - endif - endif - - if (keyword_set(spexp)) then begin - struct_delete_field, spexp, 'DITHER' - - ;---------- - ; Determine names of output files - ; HJIM -- change fiberid by field_id - outdir = djs_filepath('', root_dir=topdir, $ - subdir=[run2d,fieldstr]) - planfile = 'spPlan2d-' + fieldstr + '-' + mjdstr + '.par' - logfile = 'spDiag2d-' + fieldstr + '-' + mjdstr + '.log' - plotfile = 'spDiag2d-' + fieldstr + '-' + mjdstr + '.ps' - ;---------- - ; Create keyword pairs for plan file - hdr = '' - hdr = [hdr, "fieldname " + fieldstr + " # field number"] - hdr = [hdr, "MJD " + mjdstr $ - + " # Modified Julian Date"] - if keyword_set(lco) then $ - hdr = [hdr, "OBS " + "LCO # Observatory"] $ - else hdr = [hdr, "OBS " + "APO # Observatory"] - hdr = [hdr, "RUN2D " + run2d + " # 2D reduction name"] - hdr = [hdr, "planfile2d '" + planfile $ - + "' # Plan file for 2D spectral reductions (this file)"] - hdr = [hdr, "idlspec2dVersion '" + idlspec2d_version() $ - + "' # Version of idlspec2d when building plan file"] - hdr = [hdr, "idlutilsVersion '" + idlutils_version() $ - + "' # Version of idlutils when building plan file"] - hdr = [hdr, "speclogVersion '" + logvers $ - + "' # Version of speclog when building plan file"] - hdr = [hdr, "DITHER '"+ dither $ - + " # Is the Field Dithered (T: True, F: False)"] - ;---------- - ; Write output file - ; Create output directory if it does not yet exist - if (file_test(outdir, /directory) EQ 0) then begin - ; Bad if this exists as a file - if (file_test(outdir)) then $ - message, 'Expecting directory not file '+outdir - spawn, 'mkdir -p ' + outdir - endif - ; Bad if this exists as an unwriteable dir - if (file_test(outdir, /directory, /write) EQ 0) then $ - message, 'Cannot write to directory '+outdir - fullplanfile = filepath(planfile, root_dir=outdir) - qexist = keyword_set(findfile(fullplanfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing plan file: ' + planfile $ - else $ - splog, 'WARNING: Will not over-write plan file: ' + planfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing plan file ', fullplanfile - yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr - endif - endif - endfor ; End loop through configuration names - endelse - endif - endfor - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spplan2d_new.pro b/pro/spec2d/spplan2d_new.pro deleted file mode 100644 index 5b5e26e7d..000000000 --- a/pro/spec2d/spplan2d_new.pro +++ /dev/null @@ -1,636 +0,0 @@ -;+ -; NAME: -; spplan2d -; -; PURPOSE: -; Create plan file(s) for running the Spectro-2D pipeline. -; -; CALLING SEQUENCE: -; spplan2d, [ topdir=, run2d=, mjd=, mjstart=, mjend=, minexp=, $ -; /clobber, /dr13 ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; run2d - Optional override value for the environment variable $RUN2D -; mjd - Look for raw data files in BOSS_SPECTRO_DATA/MJD; default to -; search all subdirectories. Note that this need not be -; integer-valued, but could be for example '51441_test'. -; mjstart - Starting MJD. -; mjend - Ending MJD. -; minexp - Minimum exposure time for science frames; default to 1 sec. -; clobber - If set, then over-write conflicting plan files; default to -; not over-write files. -; -; OUTPUT: -; -; COMMENTS: -; The environment variables SDSSCORE and BOSS_SPECTRO_DATA must be set. -; -; Look for the raw FITS data files in: -; BOSS_SPECTRO_DATA/MJD/sdR-cs-eeeeeeee.fit -; where c=color, s=spectrograph number, eeeeeeee=exposure number. -; -; The output 2D plan files created are: -; TOPOUTDIR/PLATE/spPlan2d-cccc-mmmmm.par -; where cccc=configuration number, mmmmm=MJD. -; -; For the earliest data (before MJD=51455), then NAME keyword in the FITS -; files did not properly describe the confsummary name. In those cases, -; look for the actual confsummary files in SDSSCORE. -; -; Exclude all files where the QUALITY header keyword is not 'excellent'. -; -; EXAMPLES: -; Create the plan file(s) for reducing the data for MJD=51441, with that -; top level directory set to '/u/schlegel/2d_test' -; > spplan2d, '/u/schlegel/2d_test', mjd=51441 -; -; BUGS: -; This routine spawns the Unix command 'mkdir'. -; The use of CONCAT_DIR may not be valid for non-Unix OS's. -; -; PROCEDURES CALLED: -; concat_dir() -; fileandpath() -; get_mjd_dir() -; idlspec2d_version() -; idlutils_version() -; splog -; sdsshead() -; spplan_findrawdata -; spplan_create_spexp -; sxpar() -; yanny_write -; -; REVISION HISTORY: -; 02-Nov-1999 Written by David Schlegel, Princeton. -; 05-Sep-2015 Plate number armaggedon correction by JEB. -; 15-Nov-2018 Modified by Hector Ibarra for the BHM -;- -;------------------------------------------------------------------------------ -pro spplan2d_new, topdir=topdir1, run2d=run2d1, mjd=mjd, lco=lco, $ - mjstart=mjstart, mjend=mjend, minexp=minexp, clobber=clobber, dr13=dr13, $ - _extra=foo, legacy=legacy, plates=plates, nocomm=nocomm, $ - twilight_flats=twilight_flats, test_twilight=test_twilight - - RESOLVE_ALL, /QUIET, /SKIP_EXISTING, /CONTINUE_ON_ERROR - - if (NOT keyword_set(minexp)) then minexp = 1 - if keyword_set(lco) then begin - obsdir='LCO' - sdsscore_obs='lco' - BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_S' - endif else begin - obsdir='APO' - sdsscore_obs='apo' - BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_N' - endelse - obsdir='';coment this line for the final version HJIM - ;---------- - ; Determine the top-level of the output directory tree - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - ;topdir=concat_dir(topdir, obsdir) - splog, 'Setting TOPDIR=', topdir - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - - ;---------- - ; Read environment variable for BOSS_SPECTRO_DATA for finding raw data files. - - rawdata_dir = getenv(BOSS_SPECTRO_DATA) - if (NOT keyword_set(rawdata_dir)) then $ - message, 'Must set environment variable BOSS_SPECTRO_DATA' - ;rawdata_dir = concat_dir(rawdata_dir, obsdir) - splog, 'Setting BOSS_SPECTRO_DATA=', rawdata_dir - - if keyword_set(legacy) or keyword_set(plates) then begin - speclog_dir = getenv('SPECLOG_DIR') - if (NOT keyword_set(speclog_dir)) then $ - message, 'Must set environment variable SPECLOG_DIR' - splog, 'Setting SPECLOG_DIR=', speclog_dir - endif else begin - sdsscore_dir = getenv('SDSSCORE_DIR') - if (NOT keyword_set(sdsscore_dir)) then $ - message, 'Must set environment variable SDSSCORE_DIR' - sdsscore_dir = concat_dir(sdsscore_dir, sdsscore_obs) - sdsscore_dir = concat_dir(sdsscore_dir, 'summary_files') - splog, 'Setting SDSSCORE_DIR=', sdsscore_dir - endelse - spawn, 'speclog_version', logvers, /noshell - - ;---------- - ; Create a list of the MJD directories (as strings) - - mjdlist = get_mjd_dir(rawdata_dir, mjd=mjd, mjstart=mjstart, mjend=mjend) - nmjd = n_elements(mjdlist) - splog, 'Number of MJDs = ', nmjd - ;;HJIM -- reduce the number of spectrographs to one - camnames = ['b1', 'r1'] - plateflavor0='BHM' - plateflavor1='BHM&MWM' - if keyword_set(plates) then begin - plateflavor0='BHM';'BOSSHALF' - plateflavor1='BHM&MWM';'APOGEE-BOSS' - endif - if keyword_set(legacy) then begin - camnames = ['b1', 'r1', 'b2', 'r2'] - plateflavor0='EBOSS' - plateflavor1='BOSS' - endif - ncam = N_elements(camnames) - - ;--------------------------------------------------------------------------- - ; Loop through each input MJD directory - - for imjd=0, nmjd-1 do begin - - mjddir = mjdlist[imjd] - thismjd = long(mjdlist[imjd]) - inputdir = concat_dir(rawdata_dir, mjddir) - if keyword_set(legacy) or keyword_set(plates) then begin - plugdir = concat_dir(speclog_dir, mjddir) - endif else begin - confdir = sdsscore_dir; concat_dir(sdsscore_dir, mjddir);HJIM Needs to check the final path for the confsummary file - endelse - splog, '' - splog, 'Data directory ', inputdir - - ; Find all raw FITS files in this directory - fullname = spplan_findrawdata(inputdir, nfile) - splog, 'Number of FITS files found: ', nfile - - if (nfile GT 0) then begin - - ;---------- - ; Remove the path from the file names - - shortname = strarr(nfile) - for i=0, nfile-1 do shortname[i] = fileandpath(fullname[i]) - - ;---------- - ; Find all useful header keywords - ; HJIM-- Change FIBERID by CONFID - - EXPTIME = fltarr(nfile) - EXPOSURE = lonarr(nfile) - FLAVOR = strarr(nfile) - CAMERAS = strarr(nfile) - MAPNAME = strarr(nfile) - TAI = fltarr(nfile) - if keyword_set(legacy) or keyword_set(plates) then begin - PLATEID = lonarr(nfile) - endif else begin - FIELDID = strarr(nfile) ; Added by HJIM - CONFID = strarr(nfile) ; Added by HJIM - CONFNAME = strarr(nfile) ; Added by HJIM - endelse - - - for i=0, nfile-1 do begin - if (i eq 0) then begin - hdr = sdsshead(fullname[i]) - endif else begin - hdr = sdsshead(fullname[i],/silentwarn) - endelse - if (size(hdr,/tname) EQ 'STRING') then begin - - EXPTIME[i] = sxpar(hdr, 'EXPTIME') - EXPOSURE[i] = long( sxpar(hdr, 'EXPOSURE') ) - FLAVOR[i] = strtrim(sxpar(hdr, 'FLAVOR'),2) - CAMERAS[i] = strtrim(sxpar(hdr, 'CAMERAS'),2) - TAI[i] = sxpar(hdr, 'TAI-BEG') - if keyword_set(legacy) or keyword_set(plates) then begin - MAPNAME[i] = strtrim(sxpar(hdr, 'NAME'),2) - PLATEID[i] = long( sxpar(hdr, 'PLATEID') ) - platetype = sxpar(hdr, 'PLATETYP', count=nhdr) - endif else begin - MAPNAME[i] = strtrim(sxpar(hdr, 'CONFID'),2) - map_name = strarr(1) - map_name[0]=MAPNAME[i] ; strsplit(MAPNAME[i],'-',/extract) - CONFNAME[i] = map_name[0] - CONFID[i] = strtrim( sxpar(hdr, 'CONFID') );change long plate format to string format - platetype = 'BHM&MWM' ;sxpar(hdr, 'CONFTYP', count=nhdr) - nhdr = 1 - endelse - ;; Check CONFTYP for BOSS or EBOSS (e.g. not MANGA) - ;; If keyword is missing (older data), assume this is BOSS - if (nhdr GT 0) then begin - platetype = strupcase(strtrim(platetype,2)) - if (platetype NE plateflavor0) && (platetype NE plateflavor1) then begin - if keyword_set(legacy) or keyword_set(plates) then begin - splog, 'Skipping ' + platetype + $ - ' plate ', PLATEID[i], $ - ' exposure ', EXPOSURE[i] - FLAVOR[i] = 'unknown' - endif else begin - splog, 'Skipping ' + platetype + $ - ' configuration '+ CONFID[i] + $ - ' exposure ', EXPOSURE[i] - FLAVOR[i] = 'unknown' - endelse - endif else begin - if keyword_set(legacy) then begin - ;; Skip also eBOSS plates and some RM plates for DR13 - if keyword_set(dr13) then begin - if (platetype NE 'BOSS') OR $ - ( (PLATEID[i] EQ 7338 OR PLATEID[i] EQ 7339 OR PLATEID[i] EQ 7340) AND thismjd GT 57000) $ - then begin - splog, 'Skipping ' + platetype + $ - ' plate ', PLATEID[i], $ - ' exposure ', EXPOSURE[i], ' for DR13', thismjd - FLAVOR[i] = 'unknown' - endif - endif - endif - endelse - endif - if keyword_set(legacy) then begin - ;-- Removing exposure 258988 of plate 9438 mjd 58125 because of trail in data - if sxpar( hdr, 'EXPOSURE') EQ 258988L then FLAVOR[i] = 'unknown' - endif - ; Exclude all files where the QUALITY keyword is not 'excellent'. - quality = strtrim(sxpar(hdr, 'QUALITY'),2) - if (quality NE 'excellent') then begin - splog, 'Warning: Non-excellent quality '+FLAVOR[i]+' file ' $ - + fileandpath(fullname[i]) + ' ('+quality+')' - FLAVOR[i] = 'unknown' - endif - ; Exclude files where the plate or configuration number does not match that - ; in the map name - if keyword_set(legacy) or keyword_set(plates) then begin - ; JEB -- plate number - if (plate_to_string(PLATEID[i]) NE strmid(MAPNAME[i],0,strpos(MAPNAME[i],'-'))) $ - && (FLAVOR[i] NE 'bias') then begin - platestr = strtrim(string(PLATEID[i]), 2) - splog, 'Warning: Plate number ' + platestr $ - + ' flavor '+ FLAVOR[i] $ - + ' inconsistent with map name ' + fileandpath(fullname[i]) - FLAVOR[i] = 'unknown' - endif - endif else begin - ; HJIM -- configuration number - if (strtrim(CONFID[i],2) NE strtrim((map_name[0]),2)) $ - && (FLAVOR[i] NE 'bias') then begin - platestr = strtrim(CONFID[i]) - - splog, 'Warning: Configuration number ' + platestr $ - + ' flavor '+ FLAVOR[i] $ - + ' inconsistent with map name ' + fileandpath(fullname[i]) - FLAVOR[i] = 'unknown' - endif - endelse - if (sxpar(hdr, 'MJD') NE thismjd) then $ - splog, 'Warning: Wrong MJD in file '+fileandpath(fullname[i]) - if keyword_set(legacy) or keyword_set(plates) then begin - ; MAPNAME should be of the form '000000-51683-01'. - ; If it only contains the PLATEID ;; (for MJD <= 51454), - ; then find the actual plug-map file. - if (strlen(MAPNAME[i]) LE 4) then begin - plugfile = 'plPlugMapM-' $ - + string(long(MAPNAME[i]), format='(i4.4)') + '-*.par' - plugfile = (findfile(filepath(plugfile, root_dir=plugdir), $ - count=ct))[0] - if (ct EQ 1) then $ - MAPNAME[i] = strmid(fileandpath(plugfile), 11, 13) - endif - endif else begin - if (strlen(MAPNAME[i]) LE 15) then begin - confile = 'confSummaryF-' + map_name[0] + '-*.par' - confile = (findfile(filepath(confile, root_dir=confdir, subdir='*'), count=ct))[0] - if (ct ne 0) then begin - MAPNAME[i] = strmid(fileandpath(confile), 11, 15) - confile = 'confSummaryF-'+ map_name[0]+'.par' - endif else begin - confile = 'confSummary-' + map_name[0] + '-*.par' - confile = (findfile(filepath(confile, root_dir=confdir, subdir='*'), count=ct))[0] - if (ct EQ 1) then MAPNAME[i] = strmid(fileandpath(confile), 11, 15) - confile = 'confSummary-'+ map_name[0]+'.par' - endelse - thisplan=(findfile(filepath(confile, root_dir=confdir,subdir='*')))[0] - allseq = yanny_readone(thisplan, 'SPEXP', hdr=hdr1, /anon) - thisfield=field_to_string(yanny_par(hdr1,'field_id')) - if yanny_par(hdr1,'field_id') eq -999 then thisfield=field_to_string(0) - if strlen(thisfield) eq 0 then thisfield=field_to_string(0) - FIELDID[i]=thisfield - endif - endelse - endif - endfor - - ;---------- - ; - if keyword_set(legacy) or keyword_set(plates) then begin - ;---------- - ; Determine all the plate plugging names - allmaps = MAPNAME[ uniq(MAPNAME, sort(MAPNAME)) ] - ;---------- - ; Loop through all plate plugging names - for imap=0, n_elements(allmaps)-1 do begin - spexp = 0 ; Zero-out this output structure - ;---------- - ; Loop through all exposure numbers for this plate-plugging - theseexp = EXPOSURE[ where(MAPNAME EQ allmaps[imap]) ] - allexpnum = theseexp[ uniq(theseexp, sort(theseexp)) ] - for iexp=0, n_elements(allexpnum)-1 do begin - indx = where(MAPNAME EQ allmaps[imap] $ - AND EXPOSURE EQ allexpnum[iexp] $ - AND FLAVOR NE 'unknown', ct) - - if (ct GT 0) then begin - spexp1 = spplan_create_spexp_legacy(allexpnum[iexp], $ - PLATEID[indx[0]], thismjd, $ - MAPNAME[indx[0]], FLAVOR[indx[0]], EXPTIME[indx[0]], $ - shortname[indx], CAMERAS[indx], minexp=minexp, plates=plates) - if (keyword_set(spexp1)) then begin - if (keyword_set(spexp)) then spexp = [spexp, spexp1] $ - else spexp = spexp1 - endif - endif - endfor - ;---------- - ; Discard these observations if the plate number is not - ; in the range 1 to 9990. - if (keyword_set(spexp)) then begin - pltid = long(spexp[0].plateid) - ;if (pltid GT 0 AND pltid LT 9990) then begin - ; platestr = string(pltid, format='(i04.4)') - if (pltid GT 0) then begin - platestr = plate_to_string(pltid) - endif else begin - splog, 'WARNING: Plate number '+strtrim(string(pltid),2)+' invalid for MAPNAME=' + allmaps[imap] - platestr = '0000' - spexp = 0 - endelse - endif else begin - splog, "WARNING: no good exposures for MAPNAME="+allmaps[imap] - pltid = 0 - endelse - mjdstr = string(thismjd, format='(i05.5)') - ;---------- - ; Discard these observations if there is not at least one flat, - ; one arc, and one science exposure - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'flat', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No flats for MAPNAME=' + allmaps[imap] - spexp = 0 - endif - endif - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'arc', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No arcs for MAPNAME=' + allmaps[imap] - spexp = 0 - endif - endif - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'science' $ - OR spexp.flavor EQ 'smear', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No science frames for MAPNAME=' + allmaps[imap] - spexp = 0 - endif - endif - if (keyword_set(spexp)) then begin - ;---------- - ; Determine names of output files - outdir = djs_filepath('', root_dir=topdir, $ - subdir=[run2d,platestr]);HJIM add p to identify plate diretories - planfile = 'spPlan2d-' + platestr + '-' + mjdstr + '.par' - logfile = 'spDiag2d-' + platestr + '-' + mjdstr + '.log' - plotfile = 'spDiag2d-' + platestr + '-' + mjdstr + '.ps' - ;---------- - ; Create keyword pairs for plan file - hdr = '' - hdr = [hdr, "plateid " + platestr + " # Plate number"] - hdr = [hdr, "MJD " + mjdstr $ - + " # Modified Julian Date"] - hdr = [hdr, "RUN2D " + run2d + " # 2D reduction name"] - hdr = [hdr, "planfile2d '" + planfile $ - + "' # Plan file for 2D spectral reductions (this file)"] - hdr = [hdr, "idlspec2dVersion '" + idlspec2d_version() $ - + "' # Version of idlspec2d when building plan file"] - hdr = [hdr, "idlutilsVersion '" + idlutils_version() $ - + "' # Version of idlutils when building plan file"] - hdr = [hdr, "speclogVersion '" + logvers $ - + "' # Version of speclog when building plan file"] - ;---------- - ; Write output file - ; Create output directory if it does not yet exist - if (file_test(outdir, /directory) EQ 0) then begin - ; Bad if this exists as a file - if (file_test(outdir)) then $ - message, 'Expecting directory not file '+outdir - spawn, 'mkdir -p ' + outdir - endif - ; Bad if this exists as an unwriteable dir - if (file_test(outdir, /directory, /write) EQ 0) then $ - message, 'Cannot write to directory '+outdir - fullplanfile = filepath(planfile, root_dir=outdir) - qexist = keyword_set(findfile(fullplanfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing plan file: ' + planfile $ - else $ - splog, 'WARNING: Will not over-write plan file: ' + planfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing plan file ', fullplanfile - yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr - endif - endif - endfor ; End loop through plate plugging names - endif else begin - ; Determine all the conofiguration names - allfield = FIELDID[ uniq(FIELDID, sort(FIELDID))] - allconfs = CONFNAME[ uniq(FIELDID, sort(FIELDID))] - ;---------- - ; Loop through all configuration pointing names - ;for imap=0, n_elements(allconfs)-1 do begin - for imap=0, n_elements(allfield)-1 do begin - if keyword_set(nocomm) then begin - if (long(allfield[imap]) gt 16000 and long(allfield[imap]) lt 100000) then continue - endif - spexp = 0 ; Zero-out this output structure - ;---------- - ; Loop through all exposure numbers for this configuration pointing - ;theseexp = EXPOSURE[ where(CONFNAME EQ allconfs[imap]) ] - theseexp = EXPOSURE[ where(FIELDID EQ allfield[imap]) ] - allexpnum = theseexp[ uniq(theseexp, sort(theseexp)) ] - for iexp=0, n_elements(allexpnum)-1 do begin - ;indx = where(CONFNAME EQ allconfs[imap] $ - indx = where(FIELDID EQ allfield[imap] $ - AND EXPOSURE EQ allexpnum[iexp] $ - AND FLAVOR NE 'unknown', ct) - if keyword_set(test_twilight) then $ - indx = where(FIELDID EQ allfield[imap] $ - AND EXPOSURE EQ allexpnum[iexp] $ - AND FLAVOR NE 'unknown' $ - AND FLAVOR NE 'flat', ct) - if (ct GT 0) then begin - spexp1 = spplan_create_spexp(allexpnum[iexp], $ - CONFID[indx[0]], thismjd, FIELDID[indx[0]], $ - MAPNAME[indx[0]], FLAVOR[indx[0]], EXPTIME[indx[0]], $ - shortname[indx], CAMERAS[indx], minexp=minexp) - if (keyword_set(spexp1)) then begin - if (keyword_set(spexp)) then spexp = [spexp, spexp1] $ - else spexp = spexp1 - endif - endif - endfor - ;---------- - ; Discard these observations if the plate number is not - ; in the range 1 to 9990. - ; HJIM -- change plate by configuration - if (keyword_set(spexp)) then begin - conid =config_to_long(spexp[0].confid) - fieid =config_to_long(spexp[0].fieldid) - ;if (pltid GT 0 AND pltid LT 9990) then begin - ; platestr = string(pltid, format='(i04.4)') - if (conid GE 0) then begin - if (fieid GE 0) then begin - fieldstr = field_to_string(fieid);Modified this to add the number of digits for the FieldID - endif else begin - splog, 'WARNING: Field number '+strtrim(string(fieid),2)+' invalid for COFNAME=' + allconfs[imap] - fieldstr = field_to_string(0) - endelse - ;confistr = spexp[0].confid; - confistr = config_to_string(conid) - ;print, confistr - endif else begin - if (fieid GE 0) then begin - fieldstr = field_to_string(fieid);Modified this to add the number of digits for the FieldID - endif else begin - splog, 'WARNING: Field number '+strtrim(string(fieid),2)+' invalid for COFNAME=' + allconfs[imap] - fieldstr = field_to_string(0);Modified this to add the number of digits for the FieldID - endelse - splog, 'WARNING: Configuration number '+strtrim(string(conid),2)+' invalid for COFNAME=' + allconfs[imap] - confistr = config_to_string(0) - spexp = 0 - endelse - endif else begin - splog, "WARNING: no good exposures for CONFNAME="+allconfs[imap] - conid = 0 - fieid = 0 - endelse - - mjdstr = string(thismjd, format='(i05.5)') - if keyword_set(twilight_flats) then begin - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'science', cts) - if cts ne 0 then begin - junk = where(spexp.flavor EQ 'flat', ct) - if (ct EQ 0) then begin - f_indx = where(FLAVOR EQ 'flat') - f_tai = TAI[f_indx] - s_indx = where(shortname EQ (spexp.name[0])[0]) -print, abs(f_tai - TAI[s_indx]) - d_tai = min(abs(f_tai - TAI[s_indx]), match) - f_use=f_indx[match[0]] - f_use=where(EXPOSURE EQ EXPOSURE[f_use]) - spexp1 = spplan_create_spexp(EXPOSURE[f_use[0]], CONFID[f_use[0]], - thismjd, (spexp.fieldid)[0], MAPNAME[f_use[0]],$ - FLAVOR[f_use[0]], EXPTIME[f_use[0]], $ - shortname[f_use], CAMERAS[f_use], minexp=minexp) - if (keyword_set(spexp1)) then begin - if (keyword_set(spexp)) then spexp = [spexp, spexp1] $ - else spexp = spexp1 - endif - endif - endif - endif - ;---------- - ; Discard these observations if there is not at least one flat, - ; one arc, and one science exposure - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'flat', ct) - if (ct EQ 0) then begin - ; if (flatt EQ 0) then begin - splog, 'WARNING: No flats for CONFNAME=' + allconfs[imap] - spexp = 0 - ; endif - endif - ;endif else begin - ; flatt =1 - ;endelse - endif - - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'arc', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No arcs for CONFNAME=' + allconfs[imap] - spexp = 0 - endif - endif - - if (keyword_set(spexp)) then begin - junk = where(spexp.flavor EQ 'science' $ - OR spexp.flavor EQ 'smear', ct) - if (ct EQ 0) then begin - splog, 'WARNING: No science frames for CONFNAME=' + allconfs[imap] - spexp = 0 - endif - endif - - if (keyword_set(spexp)) then begin - ;---------- - ; Determine names of output files - ; HJIM -- change fiberid by field_id - outdir = djs_filepath('', root_dir=topdir, $ - subdir=[run2d,fieldstr]) - planfile = 'spPlan2d-' + fieldstr + '-' + mjdstr + '.par' - logfile = 'spDiag2d-' + fieldstr + '-' + mjdstr + '.log' - plotfile = 'spDiag2d-' + fieldstr + '-' + mjdstr + '.ps' - ;---------- - ; Create keyword pairs for plan file - hdr = '' - hdr = [hdr, "confname " + confistr + " # FPS configuration number"] - hdr = [hdr, "fieldname " + fieldstr + " # BHM field number"] - hdr = [hdr, "MJD " + mjdstr $ - + " # Modified Julian Date"] - hdr = [hdr, "RUN2D " + run2d + " # 2D reduction name"] - hdr = [hdr, "planfile2d '" + planfile $ - + "' # Plan file for 2D spectral reductions (this file)"] - hdr = [hdr, "idlspec2dVersion '" + idlspec2d_version() $ - + "' # Version of idlspec2d when building plan file"] - hdr = [hdr, "idlutilsVersion '" + idlutils_version() $ - + "' # Version of idlutils when building plan file"] - hdr = [hdr, "speclogVersion '" + logvers $ - + "' # Version of speclog when building plan file"] - ;---------- - ; Write output file - ; Create output directory if it does not yet exist - if (file_test(outdir, /directory) EQ 0) then begin - ; Bad if this exists as a file - if (file_test(outdir)) then $ - message, 'Expecting directory not file '+outdir - spawn, 'mkdir -p ' + outdir - endif - ; Bad if this exists as an unwriteable dir - if (file_test(outdir, /directory, /write) EQ 0) then $ - message, 'Cannot write to directory '+outdir - fullplanfile = filepath(planfile, root_dir=outdir) - qexist = keyword_set(findfile(fullplanfile)) - if (qexist) then begin - if (keyword_set(clobber)) then $ - splog, 'WARNING: Over-writing plan file: ' + planfile $ - else $ - splog, 'WARNING: Will not over-write plan file: ' + planfile - endif - if ((NOT qexist) OR keyword_set(clobber)) then begin - splog, 'Writing plan file ', fullplanfile - yanny_write, fullplanfile, ptr_new(spexp), hdr=hdr - endif - endif - endfor ; End loop through configuration names - endelse - endif - endfor - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spplan_create_spexp.pro b/pro/spec2d/spplan_create_spexp.pro deleted file mode 100644 index 1efd8ad8e..000000000 --- a/pro/spec2d/spplan_create_spexp.pro +++ /dev/null @@ -1,43 +0,0 @@ -;------------------------------------------------------------------------------ -function spplan_create_spexp, expnum, confname, mjd, field, mapname, flavor, exptime, $ - filename, cameras, lco=lco, minexp=minexp, legacy=legacy, dither=dither - - if (flavor NE 'flat' AND flavor NE 'arc' $ - AND flavor NE 'science' AND flavor NE 'smear') then $ - return, 0 - if (keyword_set(minexp)) then begin - if (flavor EQ 'science' AND exptime LT minexp) then $ - return, 0 - endif - - badname = 'UNKNOWN' - ; HJIM -- change the number of spectrographs - camnames = ['b1','r1'] - if keyword_set(lco) then camnames = ['b2','r2'] - if keyword_set(legacy) then begin - camnames = ['b1', 'b2', 'r1', 'r2'] - endif - ncam = N_elements(camnames) - ; HJIM -- change plateid by confname - spexp = {spexp, $ - confid : string(confname), $ - fieldid : string(field), $ - mjd : long(mjd), $ - mapname : string(mapname), $ - flavor : string(flavor), $ - exptime : float(exptime), $ - name : strarr(ncam), $ - dither : dither } - for icam=0, ncam-1 do begin - ii = where(cameras EQ camnames[icam], ct) - if (ct GT 1) then $ - message, 'Multiple files with EXPOSURE=' + string(expnum) $ - + ' CAMERAS=' + camnames[icam] - if (ct EQ 1) then $ - spexp.name[icam] = filename[ii[0]] $ - else $ - spexp.name[icam] = badname - endfor - - return, spexp -end diff --git a/pro/spec2d/spplan_create_spexp_legacy.pro b/pro/spec2d/spplan_create_spexp_legacy.pro deleted file mode 100644 index 7d21f5b9f..000000000 --- a/pro/spec2d/spplan_create_spexp_legacy.pro +++ /dev/null @@ -1,40 +0,0 @@ -;------------------------------------------------------------------------------ -function spplan_create_spexp_legacy, expnum, plateid, mjd, mapname, flavor, exptime, $ - filename, cameras, minexp=minexp, plates=plates - - if (flavor NE 'flat' AND flavor NE 'arc' $ - AND flavor NE 'science' AND flavor NE 'smear') then $ - return, 0 - if (keyword_set(minexp)) then begin - if (flavor EQ 'science' AND exptime LT minexp) then $ - return, 0 - endif - - badname = 'UNKNOWN' - camnames = ['b1', 'b2', 'r1', 'r2'] - if keyword_set(plates) then begin - camnames = ['b1','r1'] - endif - ncam = N_elements(camnames) - - spexp = {spexp, $ - plateid : long(plateid), $ - mjd : long(mjd), $ - mapname : string(mapname), $ - flavor : string(flavor), $ - exptime : float(exptime), $ - name : strarr(ncam) } - - for icam=0, ncam-1 do begin - ii = where(cameras EQ camnames[icam], ct) - if (ct GT 1) then $ - message, 'Multiple files with EXPOSURE=' + string(expnum) $ - + ' CAMERAS=' + camnames[icam] - if (ct EQ 1) then $ - spexp.name[icam] = filename[ii[0]] $ - else $ - spexp.name[icam] = badname - endfor - - return, spexp -end diff --git a/pro/spec2d/spplan_findrawdata.pro b/pro/spec2d/spplan_findrawdata.pro deleted file mode 100644 index 37875f07e..000000000 --- a/pro/spec2d/spplan_findrawdata.pro +++ /dev/null @@ -1,28 +0,0 @@ -;------------------------------------------------------------------------------ -function spplan_findrawdata, inputdir, nfile - - fullnames = file_search(filepath(['sdR*.fit','sdR*.fits'], $ - root_dir=inputdir), count=nfile) - gzipnames = file_search(filepath(['sdR*.fit.gz','sdR*.fits.gz'], $ - root_dir=inputdir), count=n) - - if n EQ 0 then return, fullnames - - place = strpos(gzipnames, '.gz', /reverse_search) - for i=0,n-1 do begin - - if place[i] GT 1 then begin - tempname = strmid(gzipnames[i], 0, place[i]) - junk = where(fullnames EQ tempname,count) - if count GE 1 then continue - if fullnames[0] EQ '' then fullnames = tempname $ - else fullnames = [fullnames, tempname] - endif - endfor - - ss = sort(fullnames) - fullnames = fullnames[ss] - nfile = n_elements(fullnames) - - return, fullnames -end diff --git a/pro/spec2d/spreduce.old b/pro/spec2d/spreduce.old deleted file mode 100644 index 282e0a36a..000000000 --- a/pro/spec2d/spreduce.old +++ /dev/null @@ -1,374 +0,0 @@ -;+ -; NAME: -; spreduce -; -; PURPOSE: -; Extract, wavelength-calibrate, and flatten SDSS spectral frame(s). -; -; CALLING SEQUENCE: -; spreduce, flatname, arcname, objname, [ run2d=, $ -; plugfile=, lampfile=, indir=, plugdir=, outdir=, $ -; ecalibfile=, plottitle=, /do_telluric, writeflatmodel=, writearcmodel=, $ -; /bbspec ] -; -; INPUTS: -; flatname - Name(s) of flat-field SDSS image(s) -; arcname - Name(s) of arc SDSS image(s) -; objname - Name(s) of object SDSS image(s) -; -; REQUIRED KEYWORDS: -; plugfile - Name of plugmap file (Yanny parameter file) -; -; OPTIONAL KEYWORDS: -; run2d - 2D reduction name, to include in output headers -; lampfile - Name of file describing arc lamp lines; -; default to the file 'lamphgcdne.dat' in $IDLSPEC2D_DIR/etc. -; indir - Input directory for FLATNAME, ARCNAME, OBJNAME; -; default to '.' -; plugdir - Input directory for PLUGFILE; default to '.' -; outdir - Directory for output files; default to '.' -; ecalibfile - opECalib.par file for SDSSPROC -; plottitle - Prefix for titles in QA plots. -; do_telluric- Passed to EXTRACT_OBJECT -; writeflatmodel - passed to SPCALIB to write out flat image -; model info to file -; writearcmodel - passed to SPCALIB to write out arc image -; model info to file -; bbspec - use bbspec extraction code -; splitsky - split sky model between spatial halves -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; Should test that arcs and flats are valid images with CHECKFLAVOR. -; -; PROCEDURES CALLED: -; extract_object -; fibermask_bits() -; get_tai -; qaplot_arcline -; qaplot_fflat -; readobssumary() -; reject_science() -; select_arc() -; select_flat() -; sortplugmap -; sdssproc -; spcalib -; splog -; sxaddpar -; sxpar() -; -; DATA FILES: -; $IDLSPEC2D_DIR/etc/skylines.dat -; -; REVISION HISTORY: -; 12-Oct-1999 Written by D. Schlegel & S. Burles, APO -; Apr-2010 Added "write[flat,arc]model" pass-through (A. Bolton, Utah) -;- Nov-2018 Adapted for the SDSS-V BHM (H.Ibarra) -; Apr-2019 Backwards for SDSS-IV data (H.Ibarra) -;------------------------------------------------------------------------------ -pro spreduce, flatname, arcname, objname, run2d=run2d, $ - objobssfile=objobssfile, calobjobssfile=calobjobssfile, lampfile=lampfile, $ - ;plugfile=plugfile, lampfile=lampfile, $ - indir=indir, plugdir=plugdir, outdir=outdir, $ - ecalibfile=ecalibfile, plottitle=plottitle, do_telluric=do_telluric, $ - writeflatmodel=writeflatmodel, writearcmodel=writearcmodel, bbspec=bbspec, $ - splitsky=splitsky, nitersky=nitersky,corrline=corrline - - if (NOT keyword_set(indir)) then indir = '.' - if (NOT keyword_set(plugdir)) then plugdir=indir - if (NOT keyword_set(outdir)) then outdir = '.' - if (NOT keyword_set(nitersky)) then nitersky = 1 - stime0 = systime(1) - - ;--------------------------------------------------------------------------- - ; Locate skyline file for sky wavelength calibration - ;--------------------------------------------------------------------------- - - if (keyword_set(skylinefile)) then begin - fullskyfile = (findfile(skylinefile, count=ct))[0] - endif else begin - skydefault = filepath('skylines.dat', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='etc') - fullskyfile = (findfile(skydefault, count=ct))[0] - endelse - if (NOT keyword_set(fullskyfile)) then $ - message, 'No SKYLINEFILE found '+skylinefile - - ;--------------------------------------------------------------------------- - ; Determine spectrograph ID and color from first object file - ;--------------------------------------------------------------------------- - - sdssproc, objname[0], indir=indir, spectrographid=spectrographid, $ - color=color, ecalibfile=ecalibfile, hdr=objhdr - - ;--------------------------------------------------------------------------- - ; Read the first obsSummary file and sort - ; Look for photoPlate file in directory OUTDIR - ;--------------------------------------------------------------------------- - - ;objobssum = readobssummary(objobssfile, spectrographid, $ - ; plugdir=plugdir, mjd=sxpar(objhdr,'MJD'), indir=outdir, $ - ; exptime=sxpar(objhdr,'EXPTIME'), hdr=hdrobj, fibermask=fibermaskobj) - ;if (NOT keyword_set(objobssum)) then begin - ; for i=0, n_elements(objobssum)-1 do begin - ; splog, 'ABORT: obsSummary file not found ' $ - ; + djs_filepath(objobssum[i], root_dir=plugdir) - ; endfor - ; return - ;endif - ;it=0 - ;print, n_elements(strtrim(objobssum[500*it:500*(it+1)-1].objtype,2)) - ;exit - calobssum = readobssummary(calobjobssfile, spectrographid, $ - plugdir=plugdir, /calibobj, mjd=sxpar(objhdr,'MJD'), indir=outdir, $ - exptime=sxpar(objhdr,'EXPTIME'), hdr=hdrcal, fibermask=fibermaskcal) - if (NOT keyword_set(calobssum)) then begin - for i=0, n_elements(calobjobssfile)-1 do begin - splog, 'ABORT: obsSummary file not found ' $ - + djs_filepath(calobjobssfile[i], root_dir=plugdir) - endfor - return - endif - - ;--------------------------------------------------------------------------- - ; REDUCE CALIBRATION FRAMES - ;--------------------------------------------------------------------------- - - flatinfoname = filepath( $ - 'spFlat-'+string(format='(a1,i1,a)',color,spectrographid, $ - '-'), root_dir=outdir) - - arcinfoname = filepath( $ - 'spArc-'+string(format='(a1,i1,a)',color,spectrographid, $ - '-'), root_dir=outdir) - - heap_gc ; Garbage collection for all lost pointers - nt=where(hdrcal EQ 'cut') - cartid = long(yanny_par(hdrcal[nt[0]+1:nt[0+1]-1], 'cartridgeId')) - spcalib, flatname, arcname, fibermask=fibermaskcal, cartid=cartid, $ - lampfile=lampfile, indir=indir, $ - ecalibfile=ecalibfile, plottitle=plottitle, $ - flatinfoname=flatinfoname, arcinfoname=arcinfoname, $ - arcstruct=arcstruct, flatstruct=flatstruct, $ - writeflatmodel=writeflatmodel, writearcmodel=writearcmodel, $ - bbspec=bbspec - - ;---------- - ; Find the mid-point in time for all of the science observations - - for iobj=0, n_elements(objname)-1 do begin - objhdr = sdsshead(objname[iobj], indir=indir) - get_tai, objhdr, tai_beg, tai_mid, tai_end - if (iobj EQ 0) then begin - tai1 = tai_beg - tai2 = tai_end - endif else begin - tai1 = tai1 < tai_beg - tai2 = tai2 > tai_end - endelse - endfor - tai_mid = 0.5 * (tai1 + tai2) - - ;---------- - ; Select one set of flats+arcs for all science exposures. - ; We *could* use a different flat+arc for each exposure, - ; which is something we have done in the past. - ; Instead, now just choose the flat taken nearest the mid-point - ; of all the science integrations, and take its corresponding arc. - - bestflat = select_flat(flatstruct, tai_mid) - if (NOT keyword_set(bestflat)) then begin - splog, 'ABORT: No good flats (saturated?)' - return - endif - splog, 'Best flat = ', bestflat.name - -; bestarc = select_arc(arcstruct) - bestarc = arcstruct[ bestflat.iarc ] - - if (NOT keyword_set(bestarc)) then begin - splog, 'ABORT: No good arcs (saturated?)' - return - endif - - splog, 'Best arc = ', bestarc.name - if ((color EQ 'blue' AND bestarc.bestcorr LT 0.5) $ - OR (color EQ 'red' AND bestarc.bestcorr LT 0.5) ) then begin - splog, 'ABORT: Best arc correlation = ', bestarc.bestcorr - return - endif else $ - if ((color EQ 'blue' AND bestarc.bestcorr LT 0.7) $ - OR (color EQ 'red' AND bestarc.bestcorr LT 0.7) ) then begin - splog, 'WARNING: Best arc correlation = ', bestarc.bestcorr - endif - - lambda = *(bestarc.lambda) - xpeak = *(bestarc.xpeak) - wset = *(bestarc.wset) - dispset = *(bestarc.dispset) - - qaplot_arcline, *(bestarc.xdif_tset), wset, lambda, $ - rejline=*(bestarc.rejline), $ - color=color, title=plottitle+' Arcline Fit for '+bestarc.name - - ; Generate the sdProc files for the arc images and the PSF models - if (keyword_set(bbspec)) then begin - sdssproc, bestarc.name, indir=indir, /outfile, /applycrosstalk - arcstr = strmid(bestarc.name,4,11) - flatstr = strmid(bestflat.name,4,11) - ; Assume files exist: sdProc-$arcstr spArc-$arcstr spFlat-$flatstr - ;- Create PSF file - pyfile = djs_filepath('make-my-psf.py', root_dir=getenv('BBSPEC_DIR'), $ - subdir='examples') - cmd = 'python '+pyfile+' '+arcstr+' '+flatstr - spawn, cmd, res, errcode - if (keyword_set(errcode)) then begin - splog, errcode - message, 'Error calling '+cmd - endif - bbspec_pixpsf, arcstr, flatstr, /batch - endif - - ;--------------------------------------------------------------------------- - ; LOOP THROUGH OBJECT FRAMES - ;--------------------------------------------------------------------------- - - objobssum = readobssummary(objobssfile, spectrographid, $ - plugdir=plugdir, /calibobj, mjd=sxpar(objhdr,'MJD'), indir=outdir, $ - exptime=sxpar(objhdr,'EXPTIME'), hdr=hdrobj, fibermask=fibermaskobj) - if (NOT keyword_set(objobssum)) then begin - for i=0, n_elements(objobssfile)-1 do begin - splog, 'ABORT: obsSummary file not found ' $ - + djs_filepath(objobssfile[i], root_dir=plugdir) - endfor - return - endif - - nt=where(hdrobj EQ 'cut') - ;print, nt - ;print, n_elements(objname) - ;print, n_elements(objobssfile) - ;print, n_elements(objobssum) - ;print, n_elements(hdrobj) - for iobj=0, N_elements(objname)-1 do begin - - stimeobj = systime(1) - splog, prelog=objname[iobj] - - ;---------- - ; Read object image - ; Minflat will mask all pixels with low 2d pixelflat values - - splog, 'Reading object ', objname[iobj] - sdssproc, objname[iobj], image, invvar, rdnoiseimg=rdnoise, $ - indir=indir, hdr=objhdr, $ - spectrographid=spectrographid, color=color, $ - ecalibfile=ecalibfile, minflat=0.8, maxflat=1.2, $ - nsatrow=nsatrow, fbadpix=fbadpix, /applycrosstalk, ccdmask=ccdmask - - ;----- - ; Decide if this science exposure is bad - - qbadsci = reject_science(image, objhdr, nsatrow=nsatrow, fbadpix=fbadpix) - - sxaddpar, objhdr, 'RUN2D', run2d, ' Spectro-2D reduction name' - - ; In case TAI-BEG,TAI-END were missing from the header, add them in. - get_tai, objhdr, tai_beg, tai_mid, tai_end - sxaddpar, objhdr, 'TAI-BEG', tai_beg - sxaddpar, objhdr, 'TAI-END', tai_end - - sxaddpar, objhdr, 'FRAMESN2', 0.0 - ;sxaddpar, objhdr, 'TILEID', long(yanny_par(hdrplug, 'tileId')), $ - ; 'Cartridge used in this plugging', after='PLATEID' - ;print, iobj - ;print, nt - ;print, nt[iobj]+1,nt[iobj+1]-1 - ;print, hdrobj[nt[iobj]+1:nt[iobj+1]-1] - sxaddpar, objhdr, 'CARTID', long(yanny_par(hdrobj[nt[iobj]+1:nt[iobj+1]-1], 'cartridgeId')), $ - 'Cartridge used in this plugging', after='PLATEID' - redden = float(yanny_par(hdrobj[nt[iobj]+1:nt[iobj+1]-1], 'reddeningMed')) - if (n_elements(redden) NE 5) then redden = fltarr(5) - for j=0, n_elements(redden)-1 do $ - sxaddpar, objhdr, string('REDDEN',j+1, format='(a6,i2.2)'), redden[j], $ - ' Median extinction in '+(['u','g','r','i','z'])[j]+'-band' - - if (qbadsci) then begin - - ; We will have already output an abort message in the REJECT_SCIENCE() proc. - splog, 'Skipping reduction of this bad science exposure' - - endif else if (NOT keyword_set(bestflat)) then begin - - splog, 'ABORT: No good flats' - - endif else begin - - xsol = *(bestflat.xsol) - fflat = *(bestflat.fflat) - superflatset = *(bestflat.superflatset) - widthset = *(bestflat.widthset) - dispset = *(bestarc.dispset) - proftype = bestflat.proftype - - sxaddpar, objhdr, 'XSIGMA', max(bestflat.medwidth) - sxaddpar, objhdr, 'WSIGMA', max(bestarc.medwidth) - - qaplot_fflat, fflat, wset, $ - title=plottitle+'Fiber-Flats for '+bestflat.name - - ;---------- - ; Combine FIBERMASK bits from the plug-map file, best flat - ; and best arc - nt1=where(fibermaskobj EQ -100) - fibermask = fibermaskobj[nt1[iobj]+1:nt1[iobj+1]-1] $ - OR (*(bestflat.fibermask) AND fibermask_bits('BADTRACE')) $ - OR (*(bestflat.fibermask) AND fibermask_bits('BADFLAT')) $ - OR (*(bestarc.fibermask) AND fibermask_bits('BADARC')) - - ;---------- - ; Determine output file name and modify the object header - - framenum = sxpar(objhdr, 'EXPOSURE') - outname = filepath( $ - 'spFrame-'+string(format='(a1,i1,a,i8.8,a)',color,spectrographid, $ - '-',framenum,'.fits'), root_dir=outdir) - - sxaddpar, objhdr, 'obsSFILE', fileandpath(objobssfile[iobj]) - sxaddpar, objhdr, 'FLATFILE', fileandpath(bestflat.name) - sxaddpar, objhdr, 'ARCFILE', fileandpath(bestarc.name) - sxaddpar, objhdr, 'OBJFILE', fileandpath(objname[iobj]) - sxaddpar, objhdr, 'LAMPLIST', fileandpath(lampfile) - sxaddpar, objhdr, 'SKYLIST', fileandpath(fullskyfile) - - ;----- - ; Extract the object frame - - extract_object, outname, objhdr, image, invvar, rdnoise, objobssum[500*iobj:500*(iobj+1)-1], wset, $ - xpeak, lambda, xsol, fflat, fibermaskobj[nt1[iobj]+1:nt1[iobj+1]-1], color=color, $ - proftype=proftype, superflatset=superflatset, $ - widthset=widthset, dispset=dispset, skylinefile=fullskyfile, $ - plottitle=plottitle, do_telluric=do_telluric, bbspec=bbspec, $ - splitsky=splitsky, ccdmask=ccdmask, nitersky=nitersky, corrline=corrline - - splog, 'Elapsed time = ', systime(1)-stimeobj, ' seconds', $ - format='(a,f6.0,a)' - endelse - - endfor - - heap_gc ; Garbage collection for all lost pointers - splog, 'Elapsed time = ', systime(1)-stime0, ' seconds', $ - format='(a,f6.0,a)', prelog='' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spreduce.pro b/pro/spec2d/spreduce.pro index 5cee110f3..c00f4e3d3 100644 --- a/pro/spec2d/spreduce.pro +++ b/pro/spec2d/spreduce.pro @@ -85,7 +85,7 @@ pro spreduce, flatname, arcname, objname, run2d=run2d, plugfile=plugfile, $ splitsky=splitsky, nitersky=nitersky, plates=plates, legacy=legacy, saveraw=saveraw,$ gaiaext=gaiaext, map3d = map3d, MWM_fluxer=MWM_fluxer, no_db=no_db,debug=debug,$ corrline=corrline, nbundles=nbundles, bundlefibers=bundlefibers, $ - noreject=noreject + noreject=noreject, force_arc2trace=force_arc2trace if (NOT keyword_set(indir)) then indir = '.' if (NOT keyword_set(plugdir)) then plugdir=indir @@ -131,7 +131,6 @@ pro spreduce, flatname, arcname, objname, run2d=run2d, plugfile=plugfile, $ + djs_filepath(plugfile, root_dir=plugdir) return endif - fibermaskobj = fibermask endif else begin fps=1 calobssum = readplugmap(plugfile, spectrographid, plugdir=plugdir,$ @@ -179,7 +178,8 @@ airmass = tai2airmass(sxpar(objhdr,'RADEG'),sxpar(objhdr,'DECDEG'), tai=tai, sit plottitle=plottitle, flatinfoname=flatinfoname, arcinfoname=arcinfoname, $ arcstruct=arcstruct, flatstruct=flatstruct, writeflatmodel=writeflatmodel, $ writearcmodel=writearcmodel, bbspec=bbspec, plates=plates, legacy=legacy, $ - nbundles=nbundles, bundlefibers=bundlefibers, saveraw=saveraw, debug=debug + nbundles=nbundles, bundlefibers=bundlefibers, saveraw=saveraw, debug=debug, $ + traceflat=traceflat, force_arc2trace=force_arc2trace endif else begin cartid = strtrim(yanny_par_fc(hdrplug, 'cartridgeId'),2) @@ -188,7 +188,8 @@ airmass = tai2airmass(sxpar(objhdr,'RADEG'),sxpar(objhdr,'DECDEG'), tai=tai, sit plottitle=plottitle, flatinfoname=flatinfoname, arcinfoname=arcinfoname, $ arcstruct=arcstruct, flatstruct=flatstruct, writeflatmodel=writeflatmodel, $ writearcmodel=writearcmodel, bbspec=bbspec, plates=plates, legacy=legacy, $ - nbundles=nbundles, bundlefibers=bundlefibers, saveraw=saveraw, debug=debug + nbundles=nbundles, bundlefibers=bundlefibers, saveraw=saveraw, debug=debug, $ + traceflat=traceflat endelse @@ -394,7 +395,7 @@ airmass = tai2airmass(sxpar(objhdr,'RADEG'),sxpar(objhdr,'DECDEG'), tai=tai, sit OR (*(bestflat.fibermask) AND fibermask_bits('BADFLAT')) $ OR (*(bestarc.fibermask) AND fibermask_bits('BADARC')) endif else begin - fibermask = fibermaskobj $ + fibermask = fibermask $ OR (*(bestflat.fibermask) AND fibermask_bits('BADTRACE')) $ OR (*(bestflat.fibermask) AND fibermask_bits('BADFLAT')) $ OR (*(bestarc.fibermask) AND fibermask_bits('BADARC')) @@ -410,6 +411,8 @@ airmass = tai2airmass(sxpar(objhdr,'RADEG'),sxpar(objhdr,'DECDEG'), tai=tai, sit if keyword_set(fps) then $ sxaddpar, objhdr, 'confSFILE', fileandpath(plugfile[iobj]) $ else sxaddpar, objhdr, 'PLUGFILE', fileandpath(plugfile) + if keyword_set(traceflat) then $ + sxaddpar, objhdr, 'TRACFLAT', fileandpath(traceflat) sxaddpar, objhdr, 'FLATFILE', fileandpath(bestflat.name) sxaddpar, objhdr, 'ARCFILE', fileandpath(bestarc.name) sxaddpar, objhdr, 'OBJFILE', fileandpath(objname[iobj]) diff --git a/pro/spec2d/spreduce2d.pro b/pro/spec2d/spreduce2d.pro index 9e33ab0bd..045dbb406 100644 --- a/pro/spec2d/spreduce2d.pro +++ b/pro/spec2d/spreduce2d.pro @@ -68,7 +68,7 @@ pro spreduce2d, planfile, docams=docams, do_telluric=do_telluric, saveraw=saveraw,$ xdisplay=xdisplay, writeflatmodel=writeflatmodel, writearcmodel=writearcmodel, $ bbspec=bbspec, nitersky=nitersky, lco=lco, plates=plates, legacy=legacy, $ - gaiaext=gaiaext, MWM_fluxer=MWM_fluxer, map3d = map3d, $ + gaiaext=gaiaext, MWM_fluxer=MWM_fluxer, map3d = map3d, force_arc2trace=force_arc2trace,$ corrline=corrline, no_db=no_db, debug=debug, noreject=noreject RESOLVE_ALL, /QUIET, /SKIP_EXISTING, /CONTINUE_ON_ERROR @@ -87,7 +87,7 @@ pro spreduce2d, planfile, docams=docams, do_telluric=do_telluric, saveraw=savera xdisplay=xdisplay, writeflatmodel=writeflatmodel, noreject=noreject, $ writearcmodel=writearcmodel, bbspec=bbspec, nitersky=nitersky, $ plates=plates, legacy=legacy, corr_line=corr_line,MWM_fluxer=MWM_fluxer, $ - no_db=no_db, saveraw=saveraw, debug=debug + no_db=no_db, saveraw=saveraw, debug=debug, force_arc2trace=force_arc2trace return endif @@ -400,8 +400,9 @@ pro spreduce2d, planfile, docams=docams, do_telluric=do_telluric, saveraw=savera writeflatmodel=writeflatmodel, writearcmodel=writearcmodel, $ bbspec=bbspec, splitsky=splitsky, nitersky=nitersky,$ gaiaext=gaiaext, map3d = map3d, MWM_fluxer=MWM_fluxer,$ - corrline=corrline, no_db=no_db, debug=debug - endif + corrline=corrline, no_db=no_db, debug=debug,$ + force_arc2trace=force_arc2trace + endif splog, 'Time to reduce camera ', camnames[icam], ' = ', $ systime(1)-stime2, ' seconds', format='(a,a,a,f6.0,a)' heap_gc ; garbage collection @@ -412,6 +413,13 @@ pro spreduce2d, planfile, docams=docams, do_telluric=do_telluric, saveraw=savera systime(1)-stime1, ' seconds', format='(a,f6.0,a)' endfor ; End loop for fps config name endelse + + if (keyword_set(plotfile) AND NOT keyword_set(xdisplay)) then begin + device, /close + ps2pdf, plotfile + set_plot, 'x' + endif + ; Track memory usage thismem = memory() maxmem = maxmem > thismem[3] @@ -423,12 +431,6 @@ pro spreduce2d, planfile, docams=docams, do_telluric=do_telluric, saveraw=savera ;---------- ; Close log files - - if (keyword_set(plotfile) AND NOT keyword_set(xdisplay)) then begin - device, /close - set_plot, 'x' - endif - if (keyword_set(logfile)) then splog, /close ; Change back to original directory diff --git a/pro/spec2d/spreduce_legacy.pro b/pro/spec2d/spreduce_legacy.pro deleted file mode 100644 index f178907b5..000000000 --- a/pro/spec2d/spreduce_legacy.pro +++ /dev/null @@ -1,351 +0,0 @@ -;+ -; NAME: -; spreduce -; -; PURPOSE: -; Extract, wavelength-calibrate, and flatten SDSS spectral frame(s). -; -; CALLING SEQUENCE: -; spreduce, flatname, arcname, objname, [ run2d=, $ -; plugfile=, lampfile=, indir=, plugdir=, outdir=, $ -; ecalibfile=, plottitle=, /do_telluric, writeflatmodel=, writearcmodel=, $ -; /bbspec ] -; -; INPUTS: -; flatname - Name(s) of flat-field SDSS image(s) -; arcname - Name(s) of arc SDSS image(s) -; objname - Name(s) of object SDSS image(s) -; -; REQUIRED KEYWORDS: -; plugfile - Name of plugmap file (Yanny parameter file) -; -; OPTIONAL KEYWORDS: -; run2d - 2D reduction name, to include in output headers -; lampfile - Name of file describing arc lamp lines; -; default to the file 'lamphgcdne.dat' in $IDLSPEC2D_DIR/etc. -; indir - Input directory for FLATNAME, ARCNAME, OBJNAME; -; default to '.' -; plugdir - Input directory for PLUGFILE; default to '.' -; outdir - Directory for output files; default to '.' -; ecalibfile - opECalib.par file for SDSSPROC -; plottitle - Prefix for titles in QA plots. -; do_telluric- Passed to EXTRACT_OBJECT -; writeflatmodel - passed to SPCALIB to write out flat image -; model info to file -; writearcmodel - passed to SPCALIB to write out arc image -; model info to file -; bbspec - use bbspec extraction code -; splitsky - split sky model between spatial halves -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; Should test that arcs and flats are valid images with CHECKFLAVOR. -; -; PROCEDURES CALLED: -; extract_object -; fibermask_bits() -; get_tai -; qaplot_arcline -; qaplot_fflat -; readplugmap() -; reject_science() -; select_arc() -; select_flat() -; sortplugmap -; sdssproc -; spcalib -; splog -; sxaddpar -; sxpar() -; -; DATA FILES: -; $IDLSPEC2D_DIR/etc/skylines.dat -; -; REVISION HISTORY: -; 12-Oct-1999 Written by D. Schlegel & S. Burles, APO -; Apr-2010 Added "write[flat,arc]model" pass-through (A. Bolton, Utah) -;- -;------------------------------------------------------------------------------ -pro spreduce_legacy, flatname, arcname, objname, run2d=run2d, $ - plugfile=plugfile, lampfile=lampfile, $ - indir=indir, plugdir=plugdir, outdir=outdir, $ - ecalibfile=ecalibfile, plottitle=plottitle, do_telluric=do_telluric, $ - writeflatmodel=writeflatmodel, writearcmodel=writearcmodel, bbspec=bbspec, $ - splitsky=splitsky, nitersky=nitersky, plates=plates, legacy=legacy, gaiaext=gaiaext, $ - corrline=corrline,MWM_fluxer=MWM_fluxer - - if (NOT keyword_set(indir)) then indir = '.' - if (NOT keyword_set(plugdir)) then plugdir=indir - if (NOT keyword_set(outdir)) then outdir = '.' - if (NOT keyword_set(nitersky)) then nitersky = 1 - - stime0 = systime(1) - - ;--------------------------------------------------------------------------- - ; Locate skyline file for sky wavelength calibration - ;--------------------------------------------------------------------------- - - if (keyword_set(skylinefile)) then begin - fullskyfile = (findfile(skylinefile, count=ct))[0] - endif else begin - skydefault = filepath('skylines.dat', $ - ;skydefault = filepath('skylines_MANGA.dat', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='etc') - fullskyfile = (findfile(skydefault, count=ct))[0] - endelse - if (NOT keyword_set(fullskyfile)) then $ - message, 'No SKYLINEFILE found '+skylinefile - - ;--------------------------------------------------------------------------- - ; Determine spectrograph ID and color from first object file - ;--------------------------------------------------------------------------- - - sdssproc, objname[0], indir=indir, spectrographid=spectrographid, $ - color=color, ecalibfile=ecalibfile, hdr=objhdr - - ;--------------------------------------------------------------------------- - ; Read PLUGMAP file and sort - ; Look for photoPlate file in directory OUTDIR - ;--------------------------------------------------------------------------- - - plugmap = readplugmap(plugfile, spectrographid, $ - plugdir=plugdir, /calibobj, mjd=sxpar(objhdr,'MJD'), indir=outdir, $ - exptime=sxpar(objhdr,'EXPTIME'), hdr=hdrplug, fibermask=fibermask, plates=plates, gaiaext=gaiaext,MWM_fluxer=MWM_fluxer) - if (NOT keyword_set(plugmap)) then begin - splog, 'ABORT: Plug map not found ' $ - + djs_filepath(plugfile, root_dir=plugdir) - return - endif - - ;--------------------------------------------------------------------------- - ; REDUCE CALIBRATION FRAMES - ;--------------------------------------------------------------------------- - - flatinfoname = filepath( $ - 'spFlat-'+string(format='(a1,i1,a)',color,spectrographid, $ - '-'), root_dir=outdir) - - arcinfoname = filepath( $ - 'spArc-'+string(format='(a1,i1,a)',color,spectrographid, $ - '-'), root_dir=outdir) - - heap_gc ; Garbage collection for all lost pointers - - cartid = long(yanny_par_fc(hdrplug, 'cartridgeId')) - spcalib, flatname, arcname, fibermask=fibermask, cartid=cartid, $ - lampfile=lampfile, indir=indir, $ - ecalibfile=ecalibfile, plottitle=plottitle, $ - flatinfoname=flatinfoname, arcinfoname=arcinfoname, $ - arcstruct=arcstruct, flatstruct=flatstruct, $ - writeflatmodel=writeflatmodel, writearcmodel=writearcmodel, $ - bbspec=bbspec, plates=plates, legacy=legacy - - ;---------- - ; Find the mid-point in time for all of the science observations - - for iobj=0, n_elements(objname)-1 do begin - objhdr = sdsshead(objname[iobj], indir=indir) - get_tai, objhdr, tai_beg, tai_mid, tai_end - if (iobj EQ 0) then begin - tai1 = tai_beg - tai2 = tai_end - endif else begin - tai1 = tai1 < tai_beg - tai2 = tai2 > tai_end - endelse - endfor - tai_mid = 0.5 * (tai1 + tai2) - - ;---------- - ; Select one set of flats+arcs for all science exposures. - ; We *could* use a different flat+arc for each exposure, - ; which is something we have done in the past. - ; Instead, now just choose the flat taken nearest the mid-point - ; of all the science integrations, and take its corresponding arc. - - bestflat = select_flat(flatstruct, tai_mid) - if (NOT keyword_set(bestflat)) then begin - splog, 'ABORT: No good flats (saturated?)' - return - endif - splog, 'Best flat = ', bestflat.name - -; bestarc = select_arc(arcstruct) - bestarc = arcstruct[ bestflat.iarc ] - - if (NOT keyword_set(bestarc)) then begin - splog, 'ABORT: No good arcs (saturated?)' - return - endif - - splog, 'Best arc = ', bestarc.name - if ((color EQ 'blue' AND bestarc.bestcorr LT 0.5) $ - OR (color EQ 'red' AND bestarc.bestcorr LT 0.5) ) then begin - splog, 'ABORT: Best arc correlation = ', bestarc.bestcorr - return - endif else $ - if ((color EQ 'blue' AND bestarc.bestcorr LT 0.7) $ - OR (color EQ 'red' AND bestarc.bestcorr LT 0.7) ) then begin - splog, 'WARNING: Best arc correlation = ', bestarc.bestcorr - endif - - lambda = *(bestarc.lambda) - xpeak = *(bestarc.xpeak) - wset = *(bestarc.wset) - dispset = *(bestarc.dispset) - reslset = *(bestarc.reslset) - - qaplot_arcline, *(bestarc.xdif_tset), wset, lambda, $ - rejline=*(bestarc.rejline), $ - color=color, title=plottitle+' Arcline Fit for '+bestarc.name - - ; Generate the sdProc files for the arc images and the PSF models - if (keyword_set(bbspec)) then begin - sdssproc, bestarc.name, indir=indir, /outfile, /applycrosstalk - arcstr = strmid(bestarc.name,4,11) - flatstr = strmid(bestflat.name,4,11) - ; Assume files exist: sdProc-$arcstr spArc-$arcstr spFlat-$flatstr - ;- Create PSF file - pyfile = djs_filepath('make-my-psf.py', root_dir=getenv('BBSPEC_DIR'), $ - subdir='examples') - cmd = 'python '+pyfile+' '+arcstr+' '+flatstr - spawn, cmd, res, errcode - if (keyword_set(errcode)) then begin - splog, errcode - message, 'Error calling '+cmd - endif - bbspec_pixpsf, arcstr, flatstr, /batch - endif - - ;--------------------------------------------------------------------------- - ; LOOP THROUGH OBJECT FRAMES - ;--------------------------------------------------------------------------- - - for iobj=0, N_elements(objname)-1 do begin - - stimeobj = systime(1) - splog, prelog=objname[iobj] - - ;---------- - ; Read object image - ; Minflat will mask all pixels with low 2d pixelflat values - - splog, 'Reading object ', objname[iobj] - sdssproc, objname[iobj], image, invvar, rdnoiseimg=rdnoise, $ - indir=indir, hdr=objhdr, $ - spectrographid=spectrographid, color=color, $ - ecalibfile=ecalibfile, minflat=0.8, maxflat=1.2, $ - nsatrow=nsatrow, fbadpix=fbadpix, /applycrosstalk, ccdmask=ccdmask - - ;----- - ; Decide if this science exposure is bad - if keyword_set(plates) then begin - srvymode=sxpar(objhdr, 'SRVYMODE') - if strmatch(srvymode, 'MWM lead', /fold_case) eq 1 then begin - threshold=2000. - endif else begin - threshold=1000. - endelse - endif else begin - threshold=1000. - endelse - qbadsci = reject_science(image, objhdr, nsatrow=nsatrow, fbadpix=fbadpix, threshold=threshold) - - sxaddpar, objhdr, 'RUN2D', run2d, ' Spectro-2D reduction name' - - ; In case TAI-BEG,TAI-END were missing from the header, add them in. - get_tai, objhdr, tai_beg, tai_mid, tai_end - sxaddpar, objhdr, 'TAI-BEG', tai_beg - sxaddpar, objhdr, 'TAI-END', tai_end - - sxaddpar, objhdr, 'FRAMESN2', 0.0 - sxaddpar, objhdr, 'TILEID', long(yanny_par_fc(hdrplug, 'tileId')), $ - 'Cartridge used in this plugging', after='PLATEID' - sxaddpar, objhdr, 'CARTID', long(yanny_par_fc(hdrplug, 'cartridgeId')), $ - 'Cartridge used in this plugging', after='PLATEID' - redden = float(yanny_par_fc(hdrplug, 'reddeningMed')) - if (n_elements(redden) NE 5) then redden = fltarr(5) - for j=0, n_elements(redden)-1 do $ - sxaddpar, objhdr, string('REDDEN',j+1, format='(a6,i2.2)'), redden[j], $ - ' Median extinction in '+(['u','g','r','i','z'])[j]+'-band' - - if (qbadsci) then begin - - ; We will have already output an abort message in the REJECT_SCIENCE() proc. - splog, 'Skipping reduction of this bad science exposure' - - endif else if (NOT keyword_set(bestflat)) then begin - - splog, 'ABORT: No good flats' - - endif else begin - - xsol = *(bestflat.xsol) - fflat = *(bestflat.fflat) - superflatset = *(bestflat.superflatset) - widthset = *(bestflat.widthset) - dispset = *(bestarc.dispset) - proftype = bestflat.proftype - reslset = *(bestarc.reslset) - - sxaddpar, objhdr, 'XSIGMA', max(bestflat.medwidth) - sxaddpar, objhdr, 'WSIGMA', max(bestarc.medwidth) - sxaddpar, objhdr, 'WDISPR', max(bestarc.medresol) - - qaplot_fflat, fflat, wset, $ - title=plottitle+'Fiber-Flats for '+bestflat.name - - ;---------- - ; Combine FIBERMASK bits from the plug-map file, best flat - ; and best arc - - fibermask = fibermask $ - OR (*(bestflat.fibermask) AND fibermask_bits('BADTRACE')) $ - OR (*(bestflat.fibermask) AND fibermask_bits('BADFLAT')) $ - OR (*(bestarc.fibermask) AND fibermask_bits('BADARC')) - - ;---------- - ; Determine output file name and modify the object header - - framenum = sxpar(objhdr, 'EXPOSURE') - outname = filepath( $ - 'spFrame-'+string(format='(a1,i1,a,i8.8,a)',color,spectrographid, $ - '-',framenum,'.fits'), root_dir=outdir) - - sxaddpar, objhdr, 'PLUGFILE', fileandpath(plugfile) - sxaddpar, objhdr, 'FLATFILE', fileandpath(bestflat.name) - sxaddpar, objhdr, 'ARCFILE', fileandpath(bestarc.name) - sxaddpar, objhdr, 'OBJFILE', fileandpath(objname[iobj]) - sxaddpar, objhdr, 'LAMPLIST', fileandpath(lampfile) - sxaddpar, objhdr, 'SKYLIST', fileandpath(fullskyfile) - - ;----- - ; Extract the object frame - - extract_object, outname, objhdr, image, invvar, rdnoise, plugmap, wset, $ - xpeak, lambda, xsol, fflat, fibermask, color=color, $ - proftype=proftype, superflatset=superflatset, reslset=reslset, $ - widthset=widthset, dispset=dispset, skylinefile=fullskyfile, $ - plottitle=plottitle, do_telluric=do_telluric, bbspec=bbspec, $ - splitsky=splitsky, ccdmask=ccdmask, nitersky=nitersky,corrline=corrline - - splog, 'Elapsed time = ', systime(1)-stimeobj, ' seconds', $ - format='(a,f6.0,a)' - endelse - - endfor - - heap_gc ; Garbage collection for all lost pointers - splog, 'Elapsed time = ', systime(1)-stime0, ' seconds', $ - format='(a,f6.0,a)', prelog='' - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spthroughput.pro b/pro/spec2d/spthroughput.pro deleted file mode 100644 index 5eafa86ac..000000000 --- a/pro/spec2d/spthroughput.pro +++ /dev/null @@ -1,136 +0,0 @@ -;+ -; NAME: -; spthroughput -; -; PURPOSE: -; Return the throughput and efficiency for a given plate+camera+exposure -; -; CALLING SEQUENCE: -; photons_per_flux_per_sec = spthroughput( plate, [ indx ], camname=, $ -; expnum=, [ loglam=, exptime=, airmass=, hdr=, efficiency=, /median ] -; -; INPUTS: -; plate - Plate number -; camname - Camera name, 'b1', 'b2', 'r1', or 'r2' -; expnum - Exposure number -; -; OPTIONAL INPUTS: -; indx - Fiber index number(s) 0-indexed; default to [0,N-1] -; where N is the number of fibers in one spectrograph -; loglam - Wavelengths in vacuum log10-Angstroms; if specified, then this -; is a vector of the same wavelengths for all fibers -; median - If set, and LOGLAM is input, then median-filter all -; of the fibers at each wavelength -; -; OUTPUTS: -; photons_per_flux_per_sec - Calibration vector(s) of photons per -; (10^-17 erg/s/cm^2/Ang); return 0 if the flux-calibration -; failed for this camera and default values were used -; -; OPTIONAL OUTPUTS: -; loglam - Wavelength scale in vacuum log-10-Angstroms for the native -; pixel scale, if LOGLAM is not specified; this is an -; array with the same dimensions as PHOTONS_PER_FLUX_PER_SEC -; exptime - Exposure time (seconds) -; airmass - Airmass for this exposure -; hdr - Header for the spFrame file -; efficiency - Fractional efficiency using the parameters of the SDSS -; telescope mirror sizes; return 0 if the flux-calibration -; failed for this camera and default values were used -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; The fiber flats (FFLAT) should also be included. -; -; DATA FILES: -; -; PROCEDURES CALLED: -; correct_dlam -; djs_filepath() -; mrdfits() -; spframe_read -; sxpar() -; -; REVISION HISTORY: -; 29-Mar-2006 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -function spthroughput, plate, indx1, camname=camname, expnum=expnum, $ - loglam=loglam, exptime=exptime, airmass=airmass, hdr=objhdr, $ - efficiency=efficiency, median=median - - efficiency = 0 ; default return value - - if (n_elements(plate) NE 1) then $ - message, 'PLATE must be a scalar!' - if (size(camname,/tname) NE 'STRING') then $ - message, 'CAMNAME is not valid!' - if (NOT keyword_set(expnum)) then $ - message, 'EXPNUM must be set!' - if (keyword_set(loglam)) then $ - if (size(loglam,/n_dimen) NE 1) then $ - message, 'LOGLAM must be 1-dimensional vector!' - - outdir = getenv('BOSS_SPECTRO_REDUX') + '/' + getenv('RUN2D') $ - + '/' + plate_to_string(plate) - filename1 = djs_filepath('spFrame-' $ - +string(format='(a2,a,i8.8,a)',camname,'-',expnum, $ - '.fits*'), root_dir=outdir) - filename2 = djs_filepath('spFluxcalib-' $ - +string(format='(a2,a,i8.8,a)',camname,'-',expnum, $ - '.fits*'), root_dir=outdir) - spframe_read, filename1, loglam=loglam1, hdr=objhdr, wset=wset, $ - superflat=superflat - if (NOT keyword_set(loglam1)) then return, 0 - calibfac = mrdfits(filename2, 0, /silent) - if (NOT keyword_set(calibfac)) then return, 0 - flatexp = long(strmid(sxpar(objhdr, 'FLATFILE'),7,8)) - exptime = sxpar(objhdr, 'EXPTIME') - if (arg_present(airmass)) then airmass = sxpar(objhdr, 'AIRMASS') - if (arg_present(seeing)) then seeing = sxpar(objhdr, 'SEEING50') - - if (n_elements(indx1) GT 0) then indx = indx1 $ - else indx = lindgen(sxpar(objhdr,'NAXIS2')) - nfiber = n_elements(indx) - - correct_dlam, calibfac, 0, wset, /inverse - loglam1 = loglam1[*,indx] - calibfac = superflat[*,indx] * calibfac[*,indx] / exptime - if (keyword_set(loglam)) then begin - photons_per_flux_per_sec = fltarr(n_elements(loglam),nfiber) - minlog = min(loglam1, max=maxlog) - for ifiber=0L, nfiber-1L do $ - photons_per_flux_per_sec[*,ifiber] = interpol(calibfac[*,ifiber], $ - loglam1[*,ifiber], loglam) * (loglam GE minlog AND loglam LE maxlog) - if (keyword_set(median) AND nfiber GT 1) then begin - photons_per_flux_per_sec = djs_median(photons_per_flux_per_sec, 2) - nfiber = 1 - endif - endif else begin - photons_per_flux_per_sec = calibfac - loglam = loglam1 - endelse - - if (arg_present(efficiency)) then begin - ; 2.5-m telescope with 1.3-m obscured by secondary baffling - tel_area = !pi * (125.^2 - 65.0^2) ; cm^2 - wave = 10^loglam - npix = (size(loglam, /dimens))[0] - dloglam = abs([loglam[1:npix-1,*]-loglam[0:npix-2,*], $ - loglam[npix-1,*]-loglam[npix-2,*]]) - dwave = wave * alog(10.) * dloglam - efficiency = fltarr(npix,nfiber) - if (size(photons_per_flux_per_sec, /n_dimen) GT 1) then begin - wave = rebin(wave, npix, nfiber) - dwave = rebin(dwave, npix, nfiber) - endif - efficiency = 1e17 * photons_per_flux_per_sec / dwave / tel_area $ - * 6.62e-27 * 3.e10 / (wave * 1e-8) - endif - - return, photons_per_flux_per_sec -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/sshiftvec.pro b/pro/spec2d/sshiftvec.pro deleted file mode 100644 index a7346d228..000000000 --- a/pro/spec2d/sshiftvec.pro +++ /dev/null @@ -1,81 +0,0 @@ -;+ -; NAME: -; sshiftvec -; -; PURPOSE: -; Shift vector or image (line-at-a-time) using a damped sinc function. -; -; CALLING SEQUENCE: -; simage = sshiftvec( fimage, shift, [ sincrad=sincrad, dampfac=dampfac, $ -; eps=eps ] ) -; -; INPUTS: -; fimage - Input vector (1D) or image (2D) -; shift - Distance to shift -; -; OPTIONAL KEYWORDS: -; sincrad - Half-width of sinc convolution kernal; default to 10 pixels -; dampfac - Damping factor for gaussian; default to 3.25 -; eps - Smallest fractional shift allowed; default to 1.0e-5 -; -; OUTPUTS: -; simage - Shifted image -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; This routine is based upon the IDL routine SSHIFT from Marc Buie, -; which in turn is based upon the Zodiac routine shiftc/sshift. -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; Dynamic link to sshiftvec.c -; -; REVISION HISTORY: -; 14-Apr-1999 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -function sshiftvec, fimage, shift, sincrad=sincrad, dampfac=dampfac, eps=eps - - ; Need 2 parameters - if (N_params() LT 2) then begin - print, 'Syntax - simage = sshiftvec( fimage, shift, [ sincrad=sincrad, $' - print, ' dampfac=dampfac, eps=eps ] )' - return, -1 - endif - - if (NOT keyword_set(sincrad)) then sincrad = 10L - if (NOT keyword_set(dampfac)) then dampfac = 3.25 - if (NOT keyword_set(eps)) then eps = 1.0e-5 - - szf = size(fimage) - szs = size(shift) - if (szf[0] EQ 1) then begin - nx = szf[1] - ny = 1L - if (szs[0] EQ 0) then shiftvec = shift $ - else message, 'Invalid dimensions for SHIFT' - endif else if (szf[0] EQ 2) then begin - nx = szf[1] - ny = szf[2] - if (szs[0] EQ 0) then shiftvec = replicate(shift,ny) $ - else if (szs[0] EQ 1 AND szs[1] EQ ny) then shiftvec = shift $ - else message, 'Invalid dimensions for SHIFT' - endif else begin - message, 'Invalid dimensions for FIMAGE' - endelse - - ibad = where(shiftvec GT nx, nbad) - if (nbad GT 0) then message, 'Shift too large' - - simage = float(0 * fimage) - soname = filepath('libspec2d.'+idlutils_so_ext(), $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='lib') - result = call_external(soname, 'sshiftvec', $ - nx, ny, float(fimage), float(shiftvec), simage, $ - long(sincrad), float(dampfac), float(eps)) - - return, simage -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/throughput_calib.pro b/pro/spec2d/throughput_calib.pro deleted file mode 100644 index 84d1de219..000000000 --- a/pro/spec2d/throughput_calib.pro +++ /dev/null @@ -1,93 +0,0 @@ -;+ -; NAME: -; throughput_calib -; -; PURPOSE: -; Calculate spectroscopic throughput with fluxcalib files -; -; CALLING SEQUENCE: -; throughput = throughput_calib(file, loglam, $ -; primary=primary, exposure=exposure, pixelsize=pixelsize -; -; INPUTS: -; file - full name of fluxcalib fits file -; loglam - optional, alog10 wavelengths. -; throughput is set to zero outside of the wavelength range -; of both bspline set and the wavemin,wavemax header cards -; -; OPTIONAL KEYWORDS: -; primary - effective primary aperature in cm^2 (default 40000) -; exposure - effective exposure time of calibration exposure -; pixelsize - physical CCD pixel size (guess alog10 1.0e-4) -; this could also be passed as a keyword in the header -; -; OUTPUTS: -; throughput - percent throughput at each loglam position -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; loglam = 3.57 + findgen(400)/1000. -; cd,getenv('BOSS_SPECTRO_REDUX') -; allfiles = findfile('0*/*calib*fits', count=nf) -; throughput = fltarr(400, nf) -; for i=0,nf-1 do throughput[*,i] = throughput_calib(allfiles[i],loglam) -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 26-Jun-2001 Scott Burles (Paris) -;- -;------------------------------------------------------------------------------ -function throughput_calib, file, loglam, $ - primary=primary, exposure=exposure, pixelsize=pixelsize - - hdr = headfits(file) - tt = mrdfits(file,1) - - minwave = sxpar(hdr,'WAVEMIN') ? alog10(sxpar(hdr,'WAVEMIN')) : $ - min(tt.fullbkpt) - maxwave = sxpar(hdr,'WAVEMAX') ? alog10(sxpar(hdr,'WAVEMAX')) : $ - max(tt.fullbkpt) - - if NOT keyword_set(loglam) then $ - loglam = findgen(500) / 499.0 * (maxwave - minwave) + minwave - - throughput = loglam * 0.0 - - good = where(loglam GE minwave AND loglam LE maxwave) - if good[0] EQ -1 then return, throughput - - glam = loglam[good] - - calib = bspline_valu(glam, tt) - - ; calib is in units of counts/pix/(10^-17 ergs/s/cm^2/Ang) - - if NOT keyword_set(pixelsize) then $ - pixelsize = alog(10.0) * 1.0e-4 * 10^glam - - if NOT keyword_set(primary) then primary = 40000.0 ;primary aperture - if NOT keyword_set(exposure) then begin - if sxpar(hdr,'CALTIME') then exposure=sxpar(hdr,'CALTIME') $ - else exposure = 55.0 ;guess at smear exposure - endif - - ; factor is number of photons per 10^-17 erg at glam: - - factor = (10^glam/12400.0) / 1.609e5 - throughput[good] = calib / factor / pixelsize / primary / exposure - - if max(throughput[good]) GT 0.5 then begin - splog,'Throughput over 50%, likely wrong exposure time' - splog,'Switching time from '+string(exposure)+' to 900 seconds' - throughput[good] = throughput[good] * exposure / 900.0 - endif - - return, throughput -end - - diff --git a/pro/spec2d/trace320cen.pro b/pro/spec2d/trace320cen.pro deleted file mode 100644 index da7da2466..000000000 --- a/pro/spec2d/trace320cen.pro +++ /dev/null @@ -1,190 +0,0 @@ -;+ -; NAME: -; trace320cen -; -; PURPOSE: -; Find the 320 fiber positions for the central row of an image. -; -; CALLING SEQUENCE: -; xfiber = trace320cen( fimage, [mthresh=, ystart=, nmed=, xgood=, $ -; bundlebreakrange=, nextpeakrange=, bundlegap=, -; numberFibersPerSide=, deltax=, mthreshfactor= ] ) -; -; INPUTS: -; fimage - Image -; -; OPTIONAL INPUTS: -; mthresh - Threshold for peak-finding in convolved row; default to 0.5 -; times the dispersion (found with djs_iterstat). -; ystart - Y position in image to search for initial X centers; default -; to the central row -; nmed - Number of rows to median filter around YSTART; -; default to 21 -; bundlebreakrange - range in which the bundle break is expected in -; units of deltax -; nextpeakrange - range in which the next peak is expected in -; units of deltax -; bundlegap - approximate gap between bundles -; numberFibersPerSide - default 320 if not set -; deltax - the expected spacing between fibers in pixel units -; mtheshfactor - noise factor for getting lines -; -; OUTPUTS: -; xfiber - Vector of 320 X centers -; -; OPTIONAL OUTPUTS: -; xgood - Set to 1 for fibers that were actually found, 0 otherwise -; -; COMMENTS: -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; djs_iterstat -; -; REVISION HISTORY: -; 13-Sep-1999 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -function trace320cen, fimage, mthresh=mthresh, ystart=ystart, nmed=nmed, $ - xgood=xgood, bundlebreakreange=bundlebreakrange, nextpeakrange=nextpeakrange, $ -bundlegap=bundlegap, numberFibersPerSide=nfiber, deltax=deltax, mthreshfactor=mthreshfactor - - if (NOT keyword_set(bundlebreakrange)) then bundlebreakrange=[1,1.6] - if (NOT keyword_set(nextpeakrange)) then nextpeakrange=[0.35,0.25] - if (NOT keyword_set(bundlegap)) then bundlegap=0.28 - - ; Need 1 parameter - if (N_params() LT 1) then begin - print, 'Syntax - xfiber = trace320cen( fimage, [ mthresh=, ystart=, nmed= ]' - return, -1 - endif - - nx = (size(fimage))[1] - ny = (size(fimage))[2] - if (NOT keyword_set(ystart)) then ystart = ny/2 - if (NOT keyword_set(nmed)) then nmed = 21 - - if (NOT keyword_set(nfiber)) then nfiber = 320 ; Number of fibers per side - npbundle = 20 ; Number of fibers per bundle - nbun = nfiber / npbundle ; Number of bundles - if (NOT keyword_set(deltax)) then deltax = 6.25 - - ; Make a sub-image copy of the image and error map - ylo = ystart - (nmed-1)/2 > 0 - yhi = ystart + (nmed-1)/2 < ny-1 - subimg = fimage[*,ylo:yhi] - - ; Make a copy of the image and error map - if (keyword_set(invvar)) then begin - subivar = invvar[*,ylo:yhi] - endif else begin - subivar = 1.0 / (subimg > 1) - endelse - - ; Median filter along each column of the subimage - imrow = djs_median(subimg, 2) - - ; Convolve with a symmetric function - kern = [-0.25,-0.25,0.25,0.50,0.25,-0.25,-0.25] - conrow = convol(imrow, kern) - - ; Set threshold based upon the dispersion in the filtered row - if (NOT keyword_set(mthreshfactor)) then mthreshfactor=0.5 - if (NOT keyword_set(mthresh)) then begin - djs_iterstat, imrow, sigma=sig - mthresh = mthreshfactor * sig - endif - - ; Find all local peaks that are also above MTHRESH in the convolved row - rderiv = conrow[1:nx-1] - conrow[0:nx-2] - izero = where( rderiv[0:nx-3] GT 0 AND rderiv[1:nx-2] LE 0 $ - AND conrow[1:nx-2] GT mthresh) - xpeak = izero + 0.5 + rderiv[izero] / (rderiv[izero] - rderiv[izero+1]) - - ; Go through a first iteration of finding 320 centers, but just to - ; identify the bundle gaps and where exactly the first fiber should be. - xfiber = fltarr(nfiber) - ibiggap = intarr(nfiber-1) - nbiggap = 0 - xfiber[0] = xpeak[0] - for j=1, nfiber-1 do begin - - ; Default case if no peak found - xfiber[j] = xfiber[j-1] + deltax - - k = where(xpeak GT xfiber[j-1], ct) - if (ct GT 0) then begin - dx = min(xpeak[k] - xfiber[j-1], i) - if (dx GT 0.75*deltax AND dx LT 1.20 * deltax) then begin - xfiber[j] = xpeak[k[i]] - endif else if (dx GT bundlebreakrange[0] * deltax AND dx LT bundlebreakrange[1] * deltax) then begin - ; Try to find break between bundles of 20 by looking - ; from [1,1.6]*deltax after last center - xfiber[j] = xpeak[k[i]] - ibiggap[nbiggap] = j - nbiggap = nbiggap + 1 - splog, 'Big gap at fiber=', j, ', x=', xfiber[j], $ - ', dx=', xfiber[j]-xfiber[j-1], format='(a,i4,a,f7.2,a,f5.2)' - endif else begin - xfiber[j] = xfiber[j-1] + deltax - endelse - endif - endfor - - ; Assume that we may have either missing or extra fibers in the beginning. - ; Find where this first fiber should be relative to the bundle gaps. - ;; ffiber = fix( median( (ibiggap[0:nbiggap-1]+20) MOD 20 ) ) - ;this identifies the last fiber before a gap - gaps = shift(xfiber,-1)-xfiber - gaps=gaps[0:n_elements(gaps)-2] - normgaps=gaps/deltax - bundlegap=median(normgaps(where(normgaps gt 2.2 and normgaps lt 3.8))) - ffiber=min(where(abs(normgaps-bundlegap) lt 0.1)) - if (ffiber LE 10) then begin - xcen = xfiber[ffiber]; up to 10 bogus peaks - endif else begin - ;;trying a robust determination of the location of the "first" fiber - ;used to be something wrong xcen = xfiber[0] - (20-ffiber) * deltax ; missing up to 10 fibers - gaps = shift(xfiber,-1)-xfiber - gaps=gaps[0:ffiber] - w=where(gaps/deltax LT 1.5) - guessdeltax=median(gaps(w)) - xcenGuess = xfiber[ffiber] - 19 * guessdeltax - xChoices=xfiber[0]+deltax*(findgen(41)-20) - dum2=min(abs(xChoices-xcenGuess),in) - xcen=xChoices[in] - endelse - - ; Second iteration, where we insist upon the bundle gap positions - xgood = lonarr(nfiber) - for ibun=0, nbun-1 do begin - for jbun=0, npbundle-1 do begin - n = ibun * npbundle + jbun ; 0-indexed fiber number - - dx = min(abs(xpeak - xcen), i) - ; Be more lenient about finding the next peak where it should be - ; if we are at a big gap. - if ((jbun EQ 0 AND dx LT nextpeakrange[0] * deltax) OR $ - (jbun NE 0 AND dx LT nextpeakrange[1] * deltax)) then begin - xfiber[n] = xpeak[i] - xgood[n] = 1 - endif else begin - xfiber[n] = xcen - xgood[n] = 0 - endelse - - xcen = xfiber[n] + deltax - endfor - xcen = xcen + bundlegap * deltax ; Add approximate bundle gap - endfor - -;plot,imrow,xr=[0,300],yr=[-50,50],/xst -;djs_oplot,xpeak,xpeak*0+40,ps=1 -;djs_oplot,xfiber,xfiber*0+50,ps=1,color='red' -;djs_oplot,xfiber[indgen(16)*20],intarr(16)+50,ps=1,color='blue' -;djs_oplot,conrow,color='green' - - return, xfiber -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/trace320crude.pro b/pro/spec2d/trace320crude.pro deleted file mode 100644 index a285d17e1..000000000 --- a/pro/spec2d/trace320crude.pro +++ /dev/null @@ -1,401 +0,0 @@ -;+ -; NAME: -; trace320crude -; -; PURPOSE: -; Calling script to return 320 full traces using TRACE_CRUDE. -; -; CALLING SEQUENCE: -; xset = trace320crude( fimage, invvar, [ ystart=, nmed=, $ -; xmask=, yset=, maxerr=, maxshifte=, maxshift0=, xerr=, maxdev=, ngrow=, $ -; fibermask=, cartid=, flathdr=, padding=, plottitle= ] ) -; -; INPUTS: -; fimage - Image -; cartid - Cartridge ID from plugmap -; -; OPTIONAL INPUTS FOR TRACE320CEN: -; ystart - Y position in image to search for initial X centers; default -; to the central row -; nmed - Number of rows to median filter around YSTART; default to 21 -; plottitle - -; -; OPTIONAL INPUTS FOR TRACE_CRUDE: -; flathdr - FITS header for determining CARTID and MJD -; invvar - Inverse variance (weight) image -; radius - Radius for centroiding; default to 3.0 -; maxerr - Maximum error in centroid allowed for valid recentering; -; default to 0.2 -; maxshifte - Maximum shift in centroid allowed for valid recentering; -; default to 0.1 -; maxshift0 - Maximum shift in centroid allowed for initial row; -; default to 0.5 -; padding - number added to ndegree in loop to fix deviant centroids -; -; OPTIONAL INPUTS: -; maxdev - Maximum deviation of X in pixels; default to rejecting any -; XPOS positions that deviate by more than 1.0 pixels from -; a polynomial remapping of the centroids from other rows. -; ngrow - For each trace, replace all centroids within NGROW rows -; of a bad centroid with the predicted centroid locations. -; Default to 5. -; fibermask - Fiber status bits, set nonzero for bad status [NFIBER] -; -; OUTPUTS: -; xset - X centers for all traces -; -; OPTIONAL OUTPUTS: -; yset - Y centers for all traces -; xerr - Errors for XSET -; xmask - Mask set to 1 for good fiber centers, 0 for bad; -; same dimensions as XSET. -; fibermask - (Modified.) -; -; COMMENTS: -; Without djs_maskinterp, hot columns skew traces -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; djs_maskinterp() -; fibermask_bits() -; trace_crude() -; trace_fweight() -; trace320cen() -; -; REVISION HISTORY: -; 13-Sep-1999 Written by David Schlegel, Princeton. -; 8-Jul-2001 Added djs_maskinterp call -; 05-Oct-2010 ASB added masking of rows with invvar all zero -;- -;------------------------------------------------------------------------------ -function trace320crude, image, invvar, ystart=ystart, nmed=nmed, $ - xmask=xmask, radius=radius, yset=yset, maxerr=maxerr, maxshifte=maxshifte, $ - maxshift0=maxshift0, xerr=xerr, maxdev=maxdev, ngrow=ngrow, $ - fibermask=fibermask, cartid=cartid, flathdr=flathdr, padding=padding, $ - plottitle=plottitle,plates=plates,legacy=legacy - - if (NOT keyword_set(maxdev)) then maxdev = 1.0 - if (NOT keyword_set(ngrow)) then ngrow = 5 - if (NOT keyword_set(radius)) then radius = 3.0 - if (NOT keyword_set(padding)) then padding=0 - - if keyword_set(plates) then begin - opfibersFile='opFibersP.par' - endif else begin - if keyword_set(legacy) then begin - opfibersFile='opFibers.par' - endif else begin - fps=1 - opfibersFile='opFibersFPS.par' -; opfibersFile='opFibersP.par' - endelse - endelse - - fiberparam = yanny_readone(djs_filepath(opfibersFile, $ - root_dir=getenv('IDLSPEC2D_DIR'), subdir='opfiles'), 'FIBERPARAM') - if (NOT keyword_set(fiberparam)) then message, opfibersFile+' file not found!' - -; cartid = sxpar(flathdr, 'CARTID') - camname = strtrim(sxpar(flathdr, 'CAMERAS'),2) - mjd = sxpar(flathdr, 'MJD') - if keyword_set(fps) then begin - if not keyword_set(cartid) then print, 'cartid' - if not keyword_set(camname) then print, 'camname' - if not keyword_set(mjd) then print, 'mjd' - - if (keyword_set(cartid) * keyword_set(camname) * keyword_set(mjd) EQ 0) $ - then message, 'Must set CAMERAS, MJD in flat header!' - i = where(fiberparam.cartid EQ strtrim(cartid,2) AND fiberparam.camname EQ camname $ - AND fiberparam.mjd LE mjd, ct) - if (ct EQ 0) then $ - message, 'No match for this MJD in '+opfibersFile+'!' - endif else begin - if (keyword_set(cartid) * keyword_set(camname) * keyword_set(mjd) EQ 0) $ - then message, 'Must set CARTID, CAMERAS, MJD in flat header!' - i = where(fiberparam.cartid EQ cartid AND fiberparam.camname EQ camname $ - AND fiberparam.mjd LE mjd, ct) - if (ct EQ 0) then $ - message, 'No match for this CARTID + MJD in '+opfibersFile+'!' - endelse - - - isort = i[reverse(sort(fiberparam[i].mjd))] - - - if keyword_set(fps) then begin - if (ct gt 1) then begin - i = where(fiberparam[isort].mjd GT mjd, ni) - if i EQ -1 then fiberparam =fiberparam[isort[-1]] $ - ELSE begin - if ni gt 1 then begin - fiberparam =(fiberparam[isort])[i[0]] - endif else fiberparam =(fiberparam[isort])[i] - endelse - endif - fiberparam = fiberparam[isort[0]] - endif else fiberparam = fiberparam[isort[0]] - ; Assume the fiber bundles used are the first NBUNDLE ones... - nbundle = (long(total(fiberparam.fiberspace NE 0)))[0] - if (total(fiberparam.fiberspace[0:nbundle-1] EQ 0) GT 0) then $ - message, 'Some FIBERSPACE parameters are zero!' - - ;---------- - ; If INVVAR is set, then start by interpolating over bad pixels - - if (keyword_set(invvar)) then $ - fimage = djs_maskinterp(image, (invvar LE 0), iaxis=0) $ - else $ - fimage = image - - ;---------- - ; Find the 320 X-centers in the row specified by YSTART - - ; XGOOD=1 for fibers that were actually found, 0 otherwise - xposition = trace_cen(fimage, xstart=fiberparam.bundlegap[0], $ - ystart=ystart, nmed=nmed, $ - nfiber=fiberparam.nfiber, nbundle=nbundle, $ - fiberspace=fiberparam.fiberspace[0:nbundle-1], $ - bundlespace=fiberparam.bundlegap[1:nbundle-1], $ - xgood=xgood, plottitle=plottitle, fluxvec=fluxvec, fmodel=fmodel) - ;splot,fluxvec & soplot,fmodel,color='red' - - ntrace = n_elements(xposition) - if (NOT keyword_set(fibermask)) then fibermask = bytarr(ntrace) - - ;---------- - ; Trace - - xset = trace_crude(fimage, invvar, xstart=xposition, ystart=ystart, $ - radius=radius, yset=yset, maxerr=maxerr, maxshifte=maxshifte, $ - maxshift0=maxshift0, xerr=xerr) - xmask = xerr LT 990 ; =1 for good centers, =0 for bad - - ; Mask contributions from completely bad rows (ticket #1025) - nullrow = total(invvar gt 0., 1) eq 0. - wh_null = where(nullrow, n_null) - if (n_null gt 0) then xmask[wh_null,*] = 0B - - ;-------------------------------------------------------------------- - ; Mark this trace as potentially bad (xgood[itrace] = 0) - ; if either the initial extraction row had bad pixels, - ; or the initial extraction row was off the left or right - ; edge of the CCD. - - ncol = (size(invvar,/dimen))[0] - if ncol GT 0 then begin - for itrace=0, ntrace-1 do begin - ix1 = floor(xposition[itrace]-radius) > 0L - ix2 = ceil(xposition[itrace]+radius) < (ncol-1) - if (ix1 GT ncol-1 OR ix2 LT 0) then begin - ; Case where the initial extraction position - ; was off the left or right edge of the CCD. - xgood[itrace] = 0 - endif else begin - ; Check if any bad pixels at initial centroiding position. - junk = where(invvar[ix1:ix2,ystart] LE 0, nbad) - if (nbad GT 0) then xgood[itrace] = 0 - endelse - endfor - endif - - ;---------- - ; Compare the traces in each row to those in row YSTART. - ; Our assumption is that those centers should be a polynomial mapping - ; of the centers from row YSTART. Centers that are deviant from this - ; mapping are replaced with the position predicted by this mapping. - - ny = (size(fimage, /dimens))[1] - ndegree = 4 ; Five terms - - ;---------- - ; Loop to find all deviant centroids, and add these to the mask XMASK. - ; XMASK=1 for good. - - for iy=0, ny-1 do begin - xcheck = xgood AND xmask[iy,*] ; Test for good fiber & good centroid -; ASB: change to require some sensible minimum fraction of traces: -; if (total(xcheck) GT ndegree+2) then begin - if (total(xcheck) GT ((ndegree+2) > (0.2 * ntrace))) then begin -; if (!version.release LT '5.4') then begin -; coeff = polyfitw(xposition, xset[iy,*], xcheck, ndegree, xfit) -; endif else begin -; coeff = polyfitw(xposition, xset[iy,*], xcheck, ndegree, xfit, /double) - -; ??? -;res = djs_polyfit(xposition, reform(xset[iy,*]), ndegree, variance=xcheck, yfit=xfit) -;-- the following line is to be tested (JEB 2017-02-28) - res=mpfitfun('poly',xposition,reform(xset[iy,*]),xcheck,fltarr(ndegree+1),weights=xcheck,yfit=xfit,/quiet) - -;res = svdfit(xposition, reform(xset[iy,*]), ndegree+1, variance=xcheck, yfit=xfit, status=stat) -;indx = where(xcheck) -;coeff = poly_fit(xposition[indx], xset[iy,indx], ndegree, /double,status=stat) -;xfit = poly(xposition, coeff) -; endelse - - xdiff = xfit - xset[iy,*] - ibad = where(abs(xdiff) GT maxdev) - if (ibad[0] NE -1) then xmask[iy,ibad] = 0 - endif else begin - xmask[iy,*] = 0 ; Too few good centroids in this row; mark all as bad - endelse - endfor - - ;---------- - ; Smooth the bad centroids to NGROW adjacent rows (of the same trace) - - for itrace=0, ntrace-1 do begin - xmask[*,itrace] = smooth( xmask[*,itrace]+0.0, 2*ngrow+1) EQ 1 - endfor - - ;---------- - ; Loop to fix deviant centroids - - for iy=0, ny-1 do begin - ixbad = where(xmask[iy,*] EQ 0, nbad) - if (nbad GT 0 AND nbad LT ntrace-1-(ndegree+padding)) then begin - ixgood = where(xmask[iy,*] EQ 1) - - if (!version.release LT '5.4') then begin - coeff = polyfitw(xposition, xset[iy,*], xmask[iy,*], $ - ndegree, xfit) - endif else begin - coeff = polyfitw(xposition, xset[iy,*], xmask[iy,*], $ - ndegree, xfit, /double) - endelse - - xset[iy,ixbad] = xfit[ixbad] - endif - endfor - - ;---------- - ; Perform a second centering iteration on the fibers initially rejected - ; by TRACE320CEN. Those fibers might not actually be bad, but might - ; have just had bad pixels near YSTART. - ; - ; The below procedure fails just as bad as the first one when mutliple - ; bad columns exist. And as far as I can tell, xgood is never set to 0. - ; - ; indx = where(xgood EQ 0, ct) - ; for ii=0, ct-1 do begin - ; itrace = indx[ii] - ; - ; tmp_xpos = trace_fweight(fimage, xset[*,itrace], yset[*,itrace], $ - ; radius=radius, xerr=tmp_xerr, invvar=invvar) - ; - ; xset[*,itrace] = tmp_xpos - ; xerr[*,itrace] = tmp_xerr - ; xmask[*,itrace] = tmp_xerr LT 990 ; =1 for good centers, =0 for bad - ; endfor - - - ;---------------------------------------------------------------------- - ; This is new code to replace traces which have been - ; affected by bad columns (or masked pixels in general) at the - ; starting row. Any start position which is offset from the true - ; position will produce systematic errors in all of the centroids - ; which are corrected above and based on xposition. - ; - ; This algorithm works as follows: - ; 1) Select from the near eight neighbors (-4 to +4) traces - ; which have fewer than 100 bad pixels. (Checktrace) - ; 2) Calculate the mean trace of the selected neighbors = meantrace - ; 3) Calculate the offset of the problem trace with the selected neighbors - ; a) use only rows (goodrows) which have good centroids in - ; all selected neighbors AND in the problem trace. - ; b) calculate median offset w.r.t. neighbors in goodrows only - ; c) Use this mean offset to correct the meantrace to the correct - ; zero point position - - problemtraces = where(xgood EQ 0, ct) - nrow = (size(xset,/dimen))[1] - tracenum = lindgen(ntrace) - tmp_xpos = trace_fweight(fimage, xset, yset, $ - radius=radius, xerr=tmp_xerr, invvar=invvar) - - xorig = xset - badpix = total(tmp_xerr EQ 999,1) - - if ct GT 0 then $ - splog, 'Warning: Fixing traces: ', fix(problemtraces) - for ii=0, ct-1 do begin - itrace = problemtraces[ii] - -;---------------------------------------------------------------------------- -; Really simple minded loop to check for nearest 8 neighbors who might -; be suitable for substitution -; - checktrace = -1 - for icheck = itrace-4 > 0, (itrace+4) < (ntrace-1) do begin - - ;------------------------------------------------------------------- - ; accept only good traces (xgood), which are not itself, and - ; have less than 100 bad centroids returned from trace_fweight - ; - if xgood[icheck] AND icheck NE itrace AND $ - badpix[icheck] LT 100 then begin - if checktrace[0] EQ -1 then checktrace = icheck $ - else checktrace = [checktrace, icheck] - endif - endfor - - ;------------------------------------------------------------------- - ; Checktrace contains the selected good neighbors - ; - ncheck = n_elements(checktrace) - - ;--------------------------------------------------------------------- - ; Need at least two good neighbors to perform correction - ; - if ncheck GE 2 then begin - clean = total(tmp_xerr[*,checktrace] EQ 999,2) EQ 0 - meantrace = total(xset[*,checktrace],2)/ncheck - - goodrows = where(clean AND tmp_xerr[*,itrace] NE 999, ngoodrows) - - ;--------------------------------------------------------------------- - ; Require at least 100 common good rows to carry-on - ; - if ngoodrows GE 100 then begin - xmask[goodrows,itrace] = 1 - xset_good = xset[goodrows,*] - offset = tmp_xpos[goodrows,itrace] # replicate(1,ncheck) - $ - xset_good[*,checktrace] - shift = mean(djs_median(offset,1)) - xset[*,itrace] = meantrace + shift - endif else begin - splog, 'Fiber ', fix(itrace), ' Only ', $ - fix(ngoodrows), ' rows to adjust trace, skipping' - xmask[itrace,*] = 0 - endelse - - endif else begin - splog, 'Fiber ', fix(itrace), ' Only ', $ - fix(ncheck), ' neighboring good fibers, skipping' - xmask[itrace,*] = 0 - endelse - - endfor - - ;---------- - ; Replace XSET with a smooth trace-set - -; xy2traceset, yset, xset, tset, ncoeff=5, yfit=xnew, invvar=xmask, $ -; maxdev=maxdev, maxrej=1, /sticky -; xset = xnew - - ;---------- - ; Set FIBERMASK bit for any fiber with more than 20% of its positions - ; --->let's change it to 45%, there are far too many traces flagged as - ; BADTRACE with so many bad columns and a 3 pixel radius!) ??? - ; masked, which includes any positions off the CCD. Do not pay any - ; attention to XGOOD, since that may indicate that a fiber is only - ; bad near YSTART. - - ibad = where(total(1-xmask, 1) GT 0.45*ny) - if (ibad[0] NE -1) then $ - fibermask[ibad] = fibermask[ibad] OR fibermask_bits('BADTRACE') - - return, xset -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/trace_fix.pro b/pro/spec2d/trace_fix.pro deleted file mode 100644 index e8f5e0034..000000000 --- a/pro/spec2d/trace_fix.pro +++ /dev/null @@ -1,125 +0,0 @@ -;+ -; NAME: -; trace_fix -; -; PURPOSE: -; Fix a set of trace centers by replacing traces that converge. -; -; CALLING SEQUENCE: -; xnew = trace_fix( xcen, [minsep= , ngrow=, ycen=, xerr=]) -; -; INPUTS: -; xcen - X centers for all traces [ny,nTrace] -; -; OPTIONAL INPUTS: -; minsep - Minimum separation between adjacent traces. Smaller -; separations are regarded as bad traces. Default to 5.5. -; ngrow - Replace all pixels within MINSEP of its adjacent trace, -; plus NGROW of its neighboring pixels. Default to 20. -; ycen - Y centers corresponding to XCEN. -; xerr - X errors corresponding to XCEN. -; -; OUTPUTS: -; xnew - Modified XCEN; traces may be removed or shifted. -; ycen - Modified YCEN; columns may be removed. -; xerr - Modified XERR; columns may be removed. -; -; COMMENTS: -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; -; INTERNAL PROCEDURES: -; remove_column -; -; REVISION HISTORY: -; 13-Aug-1999 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -; Remove column number COLNUM from an array, ARR. - -pro remove_column, arr, colnum - - if (keyword_set(arr)) then begin - ncol = (size(arr,/dim))[1] - - if (colnum EQ 0) then arr = arr[*,1:ncol-1] $ - else if (colnum EQ ncol-1) then arr = arr[*,0:ncol-2] $ - else arr = [ [arr[*,0:colnum-1]], [arr[*,colnum+1:ncol-1]] ] - endif - - return -end -;------------------------------------------------------------------------------ -function trace_fix, xcen, minsep=minsep, ngrow=ngrow, ycen=ycen, xerr=xerr - - if (NOT keyword_set(minsep)) then minsep = 5.5 - if (NOT keyword_set(ngrow)) then ngrow = 20 - - xnew = xcen - ny = (size(xnew,/dimens))[0] - ntrace = (size(xnew,/dim))[1] - - ; Decide where neighboring traces are too close to one another. - ; Do this in every row by looking at distances between neighboring centers. - xdiff = abs( xnew[*,1:ntrace-1] - xnew[*,0:ntrace-2] ) - xbad = xdiff LT minsep - - ; First, look for any traces that are ALWAYS too close to their neighbor. - itrace = 0 - while (itrace LT ntrace-1) do begin - if (total(xbad[*,itrace]) EQ ny) then begin - ; Either trace number ITRACE or ITRACE+1 should be discarded. - ; Get rid of the one with the most curvature. - disp1 = stddev(xnew[0:ny-2,itrace] - xnew[1:ny-1,itrace], /double) - disp2 = stddev(xnew[0:ny-2,itrace+1] - xnew[1:ny-1,itrace+1], /double) - if (disp1 GT disp2) then badnum = itrace $ - else badnum = itrace + 1 - remove_column, xnew, badnum - remove_column, ycen, badnum - remove_column, xerr, badnum - - ; With one trace removed, recompute NTRACE, XDIFF, and XBAD - ntrace = ntrace-1 - xdiff = abs( xnew[*,1:ntrace-1] - xnew[*,0:ntrace-2] ) - xbad = xdiff LT minsep - endif else begin - itrace = itrace+1 - endelse - endwhile - - ; Now look for traces that are sometimes too close to their neighbors, - ; and shift them so that they are not any more. - for itrace=0, ntrace-2 do begin - ibad = where(xbad[*,itrace], nbad) - if (nbad GT 0) then begin - igood = where(NOT xbad[*,itrace], ngood) - - ; Identify which trace number has gone bad - if (itrace EQ 0) then begin - space1 = median( xnew[igood,itrace+1] - xnew[igood,itrace] ) - space2 = median( xnew[ibad,itrace+1] - xnew[ibad,itrace] ) - if (space2 GT space1+1.5) then ifix = itrace+1 $ - else ifix = itrace - endif else begin - space1 = median( xnew[igood,itrace] - xnew[igood,itrace-1] ) - space2 = median( xnew[ibad,itrace] - xnew[ibad,itrace-1] ) - if (space2 GT space1+1.5) then ifix = itrace $ - else ifix = itrace+1 - endelse - - ; Fix trace number IFIX - if (ifix GT 1) then begin - ; Grow the bad pixels to their neighbors - ibad = where( smooth(float(xbad[*,itrace]), 1+2*ngrow) GT 0) - xadd = median( xnew[igood,ifix] - xnew[igood,ifix-1] ) - xnew[ibad,ifix] = xnew[ibad,ifix-1] + xadd - endif - - endif - endfor - - return, xnew -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/trace_sparse_crude.pro b/pro/spec2d/trace_sparse_crude.pro deleted file mode 100644 index 6cefc1758..000000000 --- a/pro/spec2d/trace_sparse_crude.pro +++ /dev/null @@ -1,132 +0,0 @@ -;+ -; -; NAME: -; trace_sparse_crude -; -; PURPOSE: -; Semi-crude, semi-robust tracing of sparse flats. -; -; USAGE: -; trace_sparse_crude, image, xpos, ypos [, csize=csize, $ -; maxpeaks=maxpeaks, pthresh=pthresh, fthresh=fthresh, $ -; dxfit=dxfit, sigma_guess=sigma_guess, maxdev=maxdev, $ -; ncoeff=ncoeff] -; -; ARGUMENTS: -; image: flatfield image array with traces running -; approx. vertically. Best to * by (invvar gt 0.) -; to mask known artifacts/bad columns from SDSSPROC. -; -; OPTIONAL ARGUMENTS: -; csize: chunk size for dividing up image (def = 50) -; maxpeaks: max # of traces to find (def = 40) -; pthresh, fthresh: peaks must be fthresh times the -; pthresh quantile in the row x-sec'n to be detected. -; (def: pthresh = 0.975, fthresh = 1.0) -; dxfit: fit peak pos'n with +/- dxfit pixels data (def = 7) -; sigma_guess: Gaussian sigma guess (def = 1.) -; maxdev: maximum pixel deviation for tracefit (def = 0.1) -; ncoeff: poly order for tracefit (def = 5) -; -; WRITTEN: -; A. Bolton @ Utah 2010may -; -;- - -; Supporting pixel-integrated Gaussian function: -function gausspix_ampli, x, par - return, par[0] * (gaussint((x - par[1] + 0.5d0) / par[2]) - gaussint((x - par[1] - 0.5d0) / par[2])) -end - -pro trace_sparse_crude, image, xpos, ypos, csize=csize, maxpeaks=maxpeaks, pthresh=pthresh, $ - fthresh=fthresh, dxfit=dxfit, sigma_guess=sigma_guess, maxdev=maxdev, ncoeff=ncoeff - -xpos = 0 -ypos = 0 - -; Defaults: -if (not keyword_set(csize)) then csize = 50L -if (not keyword_set(maxpeaks)) then maxpeaks = 40L -;if (not keyword_set(cthresh)) then cthresh = 0.975 -if (not keyword_set(pthresh)) then pthresh = 0.975 -if (not keyword_set(fthresh)) then fthresh = 1. -if (not keyword_set(dxfit)) then dxfit = 7L -if (not keyword_set(sigma_guess)) then sigma_guess = 1.0 -if (not keyword_set(maxdev)) then maxdev = 0.1 -if (not keyword_set(ncoeff)) then ncoeff = 5L - -nx = (size(image))[1] -ny = (size(image))[2] - -; Divide into chunks: -nchunk = ny / csize -ylo = csize * lindgen(nchunk) -yhi = ylo + csize - 1 -ychunk = 0.5 * (float(ylo) + float(yhi)) -xpeak = fltarr(maxpeaks, nchunk) -npeakvec = replicate(-1L, nchunk) - -; Loop over chunks: -splog, 'Peakfinding in chunk-wise medians.' -med_vectors = fltarr(nx, nchunk) -for j = 0L, nchunk-1 do begin - med_csec = median(image[*,ylo[j]:yhi[j]], dimen=2) - med_vectors[*,j] = med_csec - med_srt = abs(med_csec[sort(abs(med_csec))]) - cval = fthresh * med_srt[long(pthresh * nx)] - ipeak = where((med_csec gt shift(med_csec, -1)) and (med_csec ge shift(med_csec, 1)) $ - and (med_csec gt cval), npeak) - npeakvec[j] = npeak - npeak = npeak < maxpeaks - if (npeak gt 0) then xpeak[0:npeak-1,j] = ipeak[0:npeak-1] -endfor - -; Find the mode of the number of peaks, and call that the "real" number: -histo = histogram(npeakvec, locations=histbase) -maxhist = max(histo, wmax) -nreal = histbase[wmax] - -; Reduce the arrays to those chunks containing all real peaks: -goodchunk = where(npeakvec eq nreal, ngood) - -; Only look at the "good" chunks: -ychunk = ychunk[goodchunk] -xpeak = xpeak[0:nreal-1,goodchunk] -ypeak = replicate(1., nreal) # ychunk -ylo = ylo[goodchunk] -yhi = yhi[goodchunk] -med_vectors = med_vectors[*,goodchunk] - -; Sub-pixel fitting for peak locations: -xpeak_new = 0. * xpeak -splog, 'Fitting for sub-pixel peak locations.' -for j = 0L, ngood - 1 do begin - for i = 0L, nreal - 1 do begin - xlo = long(round(xpeak[i,j] - dxfit)) > 0 - xhi = long(round(xpeak[i,j] + dxfit)) < (nx - 1) - data = med_vectors[xlo:xhi,j] - xbase = findgen(n_elements(data)) - pguess = [total(data), mean(xbase), sigma_guess] - err = 1. + 0. * xbase - pfit = mpfitfun('gausspix_ampli', xbase, data, err, pguess, /quiet) - xpeak_new[i,j] = xlo + pfit[1] - endfor -endfor - -; Fit traceset: -splog, 'Fitting smooth trace position functions.' -xy2traceset, transpose(ypeak), transpose(xpeak_new), tset, ncoeff=ncoeff, maxdev=maxdev - -; Make new yset: -ypos = (findgen(max(yhi) - min(ylo) + 1) + min(ylo)) # replicate(1., nreal) - -; Compute xset from it: -traceset2xy, tset, ypos, xpos - -;xpos = xpos_ret - -;stop - -return -end - diff --git a/pro/spec2d/tracefibercrude.pro b/pro/spec2d/tracefibercrude.pro index 2823b97f7..164ffd349 100644 --- a/pro/spec2d/tracefibercrude.pro +++ b/pro/spec2d/tracefibercrude.pro @@ -274,7 +274,7 @@ function tracefibercrude, image, invvar, ystart=ystart, nmed=nmed, $ badpix = total(tmp_xerr EQ 999,1) if ct GT 0 then $ - splog, 'Warning: Fixing traces: ', fix(problemtraces) + splog, 'Warning: Fixing traces: '+strjoin(strtrim(fix(problemtraces)+1,2),' ')+'(1-indexed)' for ii=0, ct-1 do begin itrace = problemtraces[ii] @@ -321,14 +321,14 @@ function tracefibercrude, image, invvar, ystart=ystart, nmed=nmed, $ shift = mean(djs_median(offset,1)) xset[*,itrace] = meantrace + shift endif else begin - splog, 'Fiber ', fix(itrace), ' Only ', $ - fix(ngoodrows), ' rows to adjust trace, skipping' + splog, 'Fiber '+ strtrim(fix(itrace)+1,2)+ ' Only '+ $ + strtrim(fix(ngoodrows),2)+ ' rows to adjust trace, skipping' xmask[itrace,*] = 0 endelse endif else begin - splog, 'Fiber ', fix(itrace), ' Only ', $ - fix(ncheck), ' neighboring good fibers, skipping' + splog, 'Fiber '+ strtrim(fix(itrace)+1)+' Only '+ $ + strtrim(fix(ncheck),2)+' neighboring good fibers, skipping' xmask[itrace,*] = 0 endelse diff --git a/pro/spec2d/tweaktrace.pro b/pro/spec2d/tweaktrace.pro deleted file mode 100644 index e4bf96b26..000000000 --- a/pro/spec2d/tweaktrace.pro +++ /dev/null @@ -1,56 +0,0 @@ -;+ -; NAME: -; tweaktrace -; -; PURPOSE: -; Use fitans to tweak trace and sigma -; This just perturbs the input values of xcen and sigma -; -; CALLING SEQUENCE: -; tweaktrace, x, sigma, centershift, sigmashift, maxshift=maxshift -; -; INPUTS: -; x - the input trace positions -; sigma - the input sigma widths of profiles -; centershift - the pixel shift in x -; sigmashift - the fractional change of sigma -; -; OPTIONAL KEYWORDS: -; maxshift - the absolute allowed shift in x (default = 1.0) -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 19-Oct-1999 Written by S. Burles, Chicago -;- -;------------------------------------------------------------------------------ -pro tweaktrace, x, sigma, centershift, sigmashift, maxshift=maxshift - - if (n_params() LT 4) then begin - print, 'Syntax - tweaktrace, x, sigma, centershift, sigmashift,' - return - endif - - if (NOT keyword_set(maxshift)) then maxshift=1.0 - -; -; For proftypes 1 and 2, the following represents first order shifts -; - - splog, 'median shift ', median(centershift) - splog, 'max shift ', max(centershift) - splog, 'min shift ', min(centershift) - - x = x - ((centershift < maxshift) > (-maxshift)) * sigma - sigma = (sigmashift + 1.0) * sigma - - return -end diff --git a/pro/spec2d/update_fitstable.pro b/pro/spec2d/update_fitstable.pro deleted file mode 100644 index 289360cb4..000000000 --- a/pro/spec2d/update_fitstable.pro +++ /dev/null @@ -1,18 +0,0 @@ -;------------------------------------------------------------------------------ - -pro update_fitsTable, fitsfile, name, extdescription, hstruct - fits_info, fitsfile, EXTNAME=fitsexts, textout=fitsfile+'.prt' - file_delete, fitsfile+'.tmp', fitsfile+'.prt', /ALLOW_NONEXISTENT, /QUIET - - foreach ext, fitsexts, i do begin - if strmatch(strtrim(ext,2), name, /fold_case) eq 0 then begin - fibermap=MRDFITS(fitsfile, i, fits_hdr, /silent) - MWRFITS, fibermap, fitsfile+'.tmp', fits_hdr, Status=Status, /silent - endif else begin - undefine, sumhdr - sxaddpar, sumhdr, 'EXTNAME', name, extdescription - MWRFITS, hstruct, fitsfile+'.tmp', sumhdr, Status=Status, /silent - endelse - endforeach - FILE_MOVE, fitsfile+'.tmp', fitsfile, /overwrite -end diff --git a/pro/spec2d/uubatchcp.pro b/pro/spec2d/uubatchcp.pro deleted file mode 100644 index 81c17bc1e..000000000 --- a/pro/spec2d/uubatchcp.pro +++ /dev/null @@ -1,172 +0,0 @@ -;+ -; NAME: -; uubatchcp -; -; PURPOSE: -; To copy run2d and run1d reductions from scratch to boss_spectro_redux -; For an individual CPU cycle called by uubatchpbs -; To function on clusters without node sharing (e.g. University of Utah) -; -; CALLING SEQUENCE: -; uubatchcp, [ planfile, topdir=, run2d=, run1d=, scratchdir=, /zcode, /galaxy, /skip2d] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; planfile - Name(s) of pipeline plan file; default to reducing all -; plan files matching 'spPlan2d*.par' -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; run2d - Optional override value for the environment variable $RUN2D -; run1d - Optional override value for the environment variable $RUN1D -; scratchdir - If set, then treat this as topdir until the computation is complete -; zcode - If set, cp reductions produced by Zcode in auto mode. -; galaxy - If set, cp reductions produced by Galaxy (Portsmouth, PCA) Suite of Products. -; skip2d - If set, then skip the Spectro-2D reductions. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; REVISION HISTORY: -; 01-May-2011 Adapted for uubatchpbs by Joel R. Brownstein, University of Utah, -; to allow reductions to be first written to $BOSS_SCRATCH_DIR -; primarily to prevent uubatchpbs from crashing in case -; $BOSS_SPECTRO_REDUX is full, and also to select which subset of the -; pipeline products are moved into BOSS_SPECTRO_REDUX for retention. -;- -;------------------------------------------------------------------------------ -pro uubatchcp_init, plan - - common uubatchcp_data, has_platemjd, platemjd, plate, mjd - - ;---------- - ; Find the SPEXP structure - - allseq = yanny_readone(plan, 'SPEXP', hdr=hdr, /anon) - has_platemjd = (N_elements(allseq) GT 0) - if (has_platemjd) then begin - - ;---------- - ; Find keywords from the header - - mjd = string(yanny_par(hdr, 'MJD'), format='(i05.5)') - plate = string(yanny_par(hdr,'plateid'), format='(i04.4)') - platemjd = '-' + plate + '-' + mjd - - endif - -end -;------------------------------------------------------------------------------ -pro uubatchcp, planfile, topdir=topdir, run2d=run2d, run1d=run1d, scratchdir=scratchdir, $ - zcode=zcode, galaxy=galaxy, skip2d=skip2d - - common uubatchcp_data - - ;---------- - ; Determine the top-level of the output directory tree - - if (not keyword_set(topdir)) then topdir = getenv('BOSS_SPECTRO_REDUX') - if strpos(topdir,'/',strlen(topdir)-1) lt 0 then topdir+='/' - - if (not keyword_set(scratchdir)) then scratchdir = getenv('BOSS_SCRATCH_DIR') - if (not keyword_set(scratchdir)) then begin - splog, " Please set scratchdir keyword or $BOSS_SCRATCH_DIR" - return - endif - if strpos(scratchdir,'/',strlen(scratchdir)-1) lt 0 then scratchdir+='/' - - if (topdir eq scratchdir) then begin - splog, " Nothing to do because topdir=scratchdir" - return - endif - - if (keyword_set(run2d)) then run2d = strtrim(run2d,2) $ - else run2d = getenv('RUN2D') - if (keyword_set(run1d)) then run1d = strtrim(run1d,2) $ - else run1d = getenv('RUN1D') - - if (NOT keyword_set(planfile)) then begin - planfiles = djs_filepath('spPlan2d-*.par', root_dir=topdir, subdir=run2d+'/*') - planfile = findfile(planfiles) - endif - - ;---------- - ; If multiple plan files exist, then call this script recursively - ; for each such plan file. - - if (N_elements(planfile) GT 1) then begin - for i=0, N_elements(planfile)-1 do $ - uubatchcp, planfile[i], topdir=topdir, run2d=run2d, run1d=run1d, scratchdir=scratchdir, $ - zcode=zcode, galaxy=galaxy, skip2d=skip2d - return - endif - - uubatchcp_init, planfile[0] - - if (has_platemjd) then begin - - plate2d = run2d + '/' + plate - - topdir2d = djs_filepath('', root_dir=topdir, subdir=plate2d) - scratchdir2d = djs_filepath('', root_dir=scratchdir, subdir=plate2d) - - if (not file_test(scratchdir2d)) then begin - splog, "Nothing to copy. "+scratchdir2d+" does not exist." - return - endif - - ;splog, "Found bossredux scratch: "+scratchdir2d - - if (not file_test(topdir2d)) then file_mkdir, topdir2d - - cameras = ['r1','r2','b1','b2'] - - if (not keyword_set(skip2d)) then begin - scratchdir2d_files = djs_filepath('*'+platemjd+'.*', root_dir=scratchdir2d) - found = where(file_test(scratchdir2d_files) ne 0, nfound) - if (nfound gt 0) then begin - scratchdir2d_files_found = scratchdir2d_files[found] - file_copy, scratchdir2d_files, topdir2d, /overwrite, /require_directory - splog, "Copy run2d plate-mjd output files to "+topdir2d - endif else splog, "Warning - run2d plate-mjd output files missing"+platemjd - for c=0,n_elements(cameras)-1 do begin - camera_files = djs_filepath('*'+cameras[c]+'*.*', root_dir=scratchdir2d) - found = where(file_test(camera_files) ne 0, nfound) - if (nfound gt 0) then begin - camera_files_found = camera_files[found] - wh = where(file_test(djs_filepath(file_basename(camera_files_found), root_dir=topdir2d)) eq 0,nc) - if (nc gt 0) then begin - file_copy, camera_files_found[wh], topdir2d, /require_directory - splog, "Copy run2d "+cameras[c]+" output files to "+topdir2d - endif - endif else splog, "Warning - run2d "+cameras[c]+" output files missing"+platemjd - endfor - endif - - - topdir1d = djs_filepath('', root_dir=topdir2d, subdir=run1d) - scratchdir1d = djs_filepath('', root_dir=scratchdir2d, subdir=run1d) - - if (not file_test(scratchdir1d)) then begin - splog, "Warning - "+scratchdir1d+" does not exist." - return - endif - - if (not file_test(topdir1d)) then file_mkdir, topdir1d - - scratchdir1d_files = djs_filepath('*'+platemjd+'.*', root_dir=scratchdir1d) - found = where(file_test(scratchdir1d_files) ne 0, nfound) - if (nfound gt 0) then begin - scratchdir1d_files_found = scratchdir1d_files[found] - file_copy, scratchdir1d_files, topdir1d, /overwrite, /require_directory - splog, "Copy run1d output files to "+topdir1d - endif else splog, "Warning - run1d output files missing"+platemjd - - endif - -end \ No newline at end of file diff --git a/pro/spec2d/uubatchpbs.pro b/pro/spec2d/uubatchpbs.pro deleted file mode 100644 index 0c41ba7a1..000000000 --- a/pro/spec2d/uubatchpbs.pro +++ /dev/null @@ -1,921 +0,0 @@ -;+ -; NAME: -; uubatchpbs -; -; PURPOSE: -; Batch process Spectro-2D and Spectro-1D reductions based upon -; already-built plan files. -; ADAPTED FROM: batchpbs.pro -; To function on clusters without node sharing (e.g. University of Utah) -; -; CALLING SEQUENCE: -; uubatchpbs, [ platenums, topdir=, run2d=, run1d=, platestart=, plateend=, $ -; mjd=, mjstart=, mjend=, upsvers2d=, upsvers1d=, upsversutils=, rawdata_dir=, $ -; boss_spectro_redux=, scratchdir=, /zcode, /galaxy, upsversgalaxy=, boss_galaxy_redux=, boss_galaxy_scratch=, $ -; pbsdir=, /verbose, queue=, qos=, ebossvers=ebossvers, /daily, /skip2d, $ -; /skip_granada_fsps, /skip_portsmouth_stellarmass, /skip_portsmouth_emlinekin, /skip_wisconsin_pca, $ -; /clobber, /nosubmit, /test, /slurm, $ -; pbsnodes=pbsnodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_walltime=pbs_walltime, /pbs_batch, /kingspeak] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; platenums - Plate numbers to reduce; default to '*' -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; run2d - Optional override value for the environment variable $RUN2D -; run1d - Optional override value for the environment variable $RUN1D -; platestart - Starting plate number. -; plateend - Ending plate number. -; mjd - MJD dates to reduce; default to all. -; Select based upon the MJD of the combine plan file, and -; reduce data from all nights needed for that combined plate+MJD. -; mjstart - Starting MJD dates to reduce. -; mjend - Ending MJD dates to reduce. -; upsvers2d - If set, then do a "module switch idlspec2d idlspec2d$UPSVERS2D" on the -; remote machine before executing Spectro-2D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; upsvers1d - If set, then do a "module switch idlspec2d idlspec2d$UPSVERS2D" on the -; remote machine before executing Spectro-1D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; upsversutils - If set, then do a "module switch idlutils idlutils/$IDLUTILS" on the -; remote machine. -; scratchdir - If set, then treat this as topdir until the computation is complete -; zcode - If set, run Zcode in auto mode. -; galaxy - If set, run Galaxy (Granada, Portsmouth, Wisconsin) Suite of Products. -; upsversgalaxy - If set, then do a "module switch galaxy galaxy/$GALAXY" on the -; remote machine. -; boss_galaxy_redux - Optional override value for the environment variable $BOSS_GALAXY_REDUX, -; boss_galaxy_scratch - Optional override value for the environment variable $GALAXY_SCRATCH_DIR. -; pbsdir - Optional override value for the environment variable $PBS_SCRATCH_DIR. -; verbose - If set, then add "set -o verbose" for easier debugging. -; queue - If set, sets the submit queue. -; qos - If set, sets the submit qos. -; ebossvers - If set, switch to this version of the eboss module -; daily - If set, switch to the daily module (overrides ebossvers) -; skip2d - If set, then skip the Spectro-2D reductions. -; skip_wisconsin_pca - If galaxy set and if not set [default], then run wisconsin_pca code -; skip_granada_fsps - If galaxy set and if not set [default], then run granada_fsps code -; skip_portsmouth_stellarmass - If galaxy set and if not set [default], then run portsmouth_stellarmass -; skip_portsmouth_emlinekin - If galaxy set and if not set [default], then run portsmouth_emlinekin -; clobber - If set, then reduce all specified plates. The default is -; to not reduce plates where the script file already exists. -; pbs_batch - If set, collect the pbs_nodes into an PBS array -; pbs_nodes - If set, collect the pbs qsub commands into pbs_nodes script files -; in order to run on clusters without node sharing (ie Utah). -; default to node sharing, and keep the pbs qsub commands in the -; individual plate-mjd SCRIPT files. -; pbs_ppn - If set, use #PBS -l nodes=1:ppn=pbs_ppn, otherwise -; default to #PBS -l nodes=1 -; pbs_a - If set, use #PBS -A pbs_a, otherwise -; default to none -; pbs_walltime - If set, use #PBS -l walltime=pbs_walltime, otherwise -; default to none -; kingspeak -If set, then setup the defaults for the kingspeak cluster at the University of Utah: -; pbs_nodes = 27 (for 27 nodes, without node sharing) -; pbs_ppn = 16 (16 processors per node) -; pbs_a = 'sdss-kp' (SDSS account, limited to 27 nodes) -; pbs_walltime='336:00:00' -; slurm=1 -; nosubmit - If set, generate script file but don't submit to queue -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; This is currently written to batch all Spectro-2D and Spectro-1D -; reductions, without the option of doing only one or the other. -; -; Script files are generated for partial reductions of a plate, -; although those jobs are not submitted. It would be less confusing -; to not make those script files. -; -; REVISION HISTORY: -; 17-Jan-2010 Written by D. Schlegel, LBL -; 01-Jan-2011 Adapted from batchpbs by Joel R. Brownstein, University of Utah, -; to generalize to cluster computers that do not have pbs node sharing -; by relocating the PBS commands to bundled script files, -; in general via the keywords pbs_nodes, pbs_ppn, pbs_a -; and with LBL defaults preset via the keyword riemann. -; and with University of Utah defaults preset via the keyword ember or kingspeak. -; 02-Apr-2015 Modified by Joel R. Brownstein, University of Utah, in order to refactor the -; #PBS directives into a method (uubatchpbs_directives) in order to add a keyword -; to switch directives to #SBATCH for slurm (Simple Linux Utility for Resource Management). -; 05-Sep-2015 6-digit plate number armaggedon fixed by Julian Bautista, University of Utah -; 30-Jun-2020 Corrected printed file names by Sean Morrison -;- -;------------------------------------------------------------------------------ - -pro uubatchpbs_directives, pbs_batch_lun=pbs_batch_lun, slurm=slurm, pbs_dir=pbs_dir, pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_mem_per_cpu=pbs_mem_per_cpu, pbs_a=pbs_a, pbs_walltime=pbs_walltime, qos=qos, batch_array=batch_array,pbs_cpus=pbs_cpus,pbs_share=pbs_share, nplate=nplate, full_run=full_run, run2d=run2d - - if keyword_set(slurm) then begin - printf, pbs_batch_lun, '#!/bin/bash' - printf, pbs_batch_lun, '# Auto-generated by uubatchpbs.pro '+systime() - if keyword_set(pbs_a) then begin - account = pbs_a - if keyword_set(qos) then account = account + strtrim((qos eq 'sdss-fast') ? '-fast' : qos,2) - printf, pbs_batch_lun, '#SBATCH --account='+account - if keyword_set(pbs_share) then begin - temp_strin=strsplit(pbs_a, /EXTRACT, '-') - partition = temp_strin[0]+'-shared-'+temp_strin[1] - endif else begin - partition = pbs_a - endelse - printf, pbs_batch_lun, '#SBATCH --partition='+partition - endif - printf, pbs_batch_lun, '#SBATCH --nodes=1' - if keyword_set(pbs_share) then begin - if keyword_set(pbs_ppn) then printf, pbs_batch_lun, '#SBATCH --ntasks='+strtrim(min([nplate,pbs_ppn]),2) - endif else begin - if keyword_set(pbs_ppn) then printf, pbs_batch_lun, '#SBATCH --ntasks='+strtrim(pbs_ppn,2) - endelse - pbs_mem_per_cpu=6000 - if keyword_set(pbs_mem_per_cpu) then printf, pbs_batch_lun, '#SBATCH --mem-per-cpu='+strtrim(pbs_mem_per_cpu,2) - ;printf, pbs_batch_lun, '#SBATCH --job-name=uubatch' - printf, pbs_batch_lun, '#SBATCH --job-name=uubatch'+run2d - if keyword_set(pbs_walltime) then printf, pbs_batch_lun, '#SBATCH --time='+pbs_walltime - if keyword_set(batch_array) then begin - printf, pbs_batch_lun, '#SBATCH --array=1-'+strtrim(pbs_nodes,2) - printf, pbs_batch_lun, '#SBATCH --output=uubatch_%A[%a].out' - printf, pbs_batch_lun, '#SBATCH --err=uubatch_%A[%a].err' - endif else begin - printf, pbs_batch_lun, '#SBATCH --output=uubatch_%j.out' - printf, pbs_batch_lun, '#SBATCH --err=uubatch_%j.err' - if keyword_set(full_run) then begin - printf, pbs_batch_lun, 'export OMP_NUM_THREADS=1' - printf, pbs_batch_lun, 'export OPENBLAS_NUM_THREADS=1' - printf, pbs_batch_lun, 'export MKL_NUM_THREADS=1' - printf, pbs_batch_lun, 'export VECLIB_MAXIMUM_THREADS=1' - printf, pbs_batch_lun, 'export NUMEXPR_NUM_THREADS=1' - printf, pbs_batch_lun, 'export TPOOL_NTHREADS = 1' - endif - endelse - printf, pbs_batch_lun, 'umask 0027' - if (keyword_set(daily)) then printf, pbs_batch_lun, 'module switch eboss eboss/daily' $ - else if (keyword_set(ebossvers)) then printf, pbs_batch_lun, 'module switch eboss eboss/'+strtrim(ebossvers,2) - if keyword_set(batch_array) then begin - printf, pbs_batch_lun, 'SBATCH_NODE=$( printf "%02d\n" "$SLURM_ARRAY_TASK_ID" )' - printf, pbs_batch_lun, 'source '+pbs_dir+'node${SBATCH_NODE}.pbs' - endif - endif else begin - printf, pbs_batch_lun, '#!/bin/bash' - printf, pbs_batch_lun, '# Auto-generated by uubatchpbs.pro '+systime() - if keyword_set(pbs_a) then printf, pbs_batch_lun, '#PBS -A '+pbs_a - if keyword_set(pbs_walltime) then printf, pbs_batch_lun, '#PBS -l walltime='+pbs_walltime - printf, pbs_batch_lun, '#PBS -W umask=0027' - printf, pbs_batch_lun, '#PBS -V' - printf, pbs_batch_lun, '#PBS -j oe' - printf, pbs_batch_lun, '#PBS -t 1-'+strtrim(pbs_nodes,2) - printf, pbs_batch_lun, '#PBS -N uubatch'+run2d - if (keyword_set(queue)) then printf, pbs_batch_lun, '#PBS -q ' + queue - if (keyword_set(qos)) then printf, pbs_batch_lun, '#PBS -l qos=' + qos - if keyword_set(pbs_ppn) then printf, pbs_batch_lun, '#PBS -l nodes=1:ppn='+strtrim(pbs_ppn,2) $ - else printf, pbs_batch_lun, '#PBS -l nodes=1' - if (keyword_set(daily)) then printf, pbs_batch_lun, 'module switch eboss eboss/daily' $ - else if (keyword_set(ebossvers)) then printf, pbs_batch_lun, 'module switch eboss eboss/'+strtrim(ebossvers,2) - if keyword_set(batch_array) then begin - printf, pbs_batch_lun, 'PBS_JOBID=$( printf "%02d\n" "$PBS_ARRAYID" )' - printf, pbs_batch_lun, 'source '+pbs_dir+'node${PBS_JOBID}.pbs' - endif - endelse -end - -;------------------------------------------------------------------------------ - -pro trim_keywords, keywords - if not strmatch(strmid(keywords,keywords.LastIndexOf(','),strlen(keywords)-keywords.LastIndexOf(',')),'*[a-z]*') then begin - keywords=strmid(keywords,0,keywords.LastIndexOf(',')) - endif - keywords=keywords -end - -;------------------------------------------------------------------------------ - -pro uubatchpbs, platenums1, topdir=topdir1, run2d=run2d1, run1d=run1d1, $ - platestart=platestart, plateend=plateend, $ - mjd=mjd, mjstart=mjstart, mjend=mjend, $ - upsvers2d=upsvers2d, upsvers1d=upsvers1d, upsversutils=upsversutils, $ - rawdata_dir=rawdata_dir, slurm=slurm, skip_specprimary=skip_specprimary,$ - boss_spectro_redux=boss_spectro_redux, scratchdir=scratchdir, $ - zcode=zcode, galaxy=galaxy, upsversgalaxy=upsversgalaxy, pbsdir=pbsdir, $ - boss_galaxy_redux=boss_galaxy_redux, boss_galaxy_scratch=boss_galaxy_scratch, $ - verbose=verbose, queue=queue, qos=qos, ebossvers=ebossvers, daily=daily, skip2d=skip2d, clobber=clobber, $ - nosubmit=nosubmit, test=test, no_merge_spall=no_merge_spall, no_db=no_db, no2d=no2d, $ - skip_granada_fsps=skip_granada_fsps, skip_portsmouth_stellarmass=skip_portsmouth_stellarmass, $ - skip_portsmouth_emlinekin=skip_portsmouth_emlinekin, skip_wisconsin_pca=skip_wisconsin_pca, $ - pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_batch=pbs_batch, MWM_fluxer=MWM_fluxer, $ - no_reject=no_reject, noxcsao=noxcsao, fibermap_clobber=fibermap_clobber, onestep_coadd=onestep_coadd, $ - pbs_walltime=pbs_walltime, lco=lco, all_obs=all_obs, plate_s=plate_s, legacy=legacy, full_run=full_run, _EXTRA=Extra - - RESOLVE_ALL, /QUIET, /SKIP_EXISTING, /CONTINUE_ON_ERROR - - if (size(platenums1,/tname) EQ 'STRING') then platenums = platenums1 $ - else if (keyword_set(platenums1)) then $ - platenums = plate_to_string(platenums1) $ - else platenums = '*' - - onestep_coadd_def = keyword_set(onestep_coadd) - no_reject_def = keyword_set(no_reject) - - - ;---------- - ; Determine the top-level of the output directory tree - if (keyword_set(topdir1)) then topdir = topdir1 $ - else begin - topdir = getenv('BOSS_SPECTRO_REDUX') - if strpos(topdir,'/',strlen(topdir)-1) lt 0 then topdir+='/' - if keyword_set(test) and not (strlen(topdir)-rstrpos(dir,'/test/') eq strlen('/test/')) then topdir=djs_filepath('',root_dir=topdir, subdir='test') - endelse - if strpos(topdir,'/',strlen(topdir)-1) lt 0 then topdir+='/' - splog, 'Setting TOPDIR=', topdir - - if (not keyword_set(scratchdir)) then scratchdir = getenv('BOSS_SCRATCH_DIR') - if (keyword_set(scratchdir)) then begin - if keyword_set(test) then scratchdir=djs_filepath('',root_dir=scratchdir, subdir='test') - if strpos(scratchdir,'/',strlen(scratchdir)-1) lt 0 then scratchdir+='/' - if (scratchdir eq topdir) then scratchdir = 0 $ - else splog, 'Setting SCRATCHDIR=', scratchdir - endif - - if keyword_set(galaxy) then begin - if (keyword_set(boss_galaxy_redux)) then boss_galaxy_redux = strtrim(boss_galaxy_redux,2) else begin - boss_galaxy_redux = getenv('BOSS_GALAXY_REDUX') - if strpos(boss_galaxy_redux,'/',strlen(boss_galaxy_redux)-1) lt 0 then boss_galaxy_redux+='/' - if keyword_set(test) and not (strlen(boss_galaxy_redux)-rstrpos(boss_galaxy_redux,'/test/') eq strlen('/test/')) then boss_galaxy_redux=djs_filepath('',root_dir=boss_galaxy_redux, subdir='test') - endelse - if strpos(boss_galaxy_redux,'/',strlen(boss_galaxy_redux)-1) lt 0 then boss_galaxy_redux+='/' - splog, 'Setting BOSS_GALAXY_REDUX=', boss_galaxy_redux - - if (keyword_set(boss_galaxy_scratch)) then boss_galaxy_scratch = strtrim(boss_galaxy_scratch,2) else begin - boss_galaxy_scratch = getenv('GALAXY_SCRATCH_DIR') - if strpos(boss_galaxy_scratch,'/',strlen(boss_galaxy_scratch)-1) lt 0 then boss_galaxy_scratch+='/' - if keyword_set(test) and not (strlen(boss_galaxy_scratch)-rstrpos(boss_galaxy_scratch,'/test/') eq strlen('/test/')) then boss_galaxy_scratch=djs_filepath('',root_dir=boss_galaxy_scratch, subdir='test') - endelse - if strpos(boss_galaxy_scratch,'/',strlen(boss_galaxy_scratch)-1) lt 0 then boss_galaxy_scratch+='/' - splog, 'Setting GALAXY_SCRATCH_DIR=', boss_galaxy_scratch - endif - - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - splog, 'Setting RUN1D=', run1d - if (keyword_set(upsvers1d)) then splog, 'Setting IDLSPEC2D=', upsvers1d $ - else if (keyword_set(upsvers2d)) then splog, 'Setting IDLSPEC2D=', upsvers2d - if (keyword_set(upsversutils)) then splog, 'Setting IDLUTILS=', upsversutils - if (keyword_set(upsversgalaxy)) then splog, 'Setting GALAXY=', upsversgalaxy - - if (keyword_set(pbsdir)) then pbsdir = strtrim(pbsdir,2) else begin - pbsdir = getenv('SLURM_SCRATCH_DIR') - if strpos(pbsdir,'/',strlen(pbsdir)-1) lt 0 then pbsdir+='/' - if keyword_set(test) and not (strlen(pbsdir)-rstrpos(pbsdir,'/test/') eq strlen('/test/')) then pbsdir=djs_filepath('',root_dir=pbsdir, subdir='test') - endelse - if strpos(pbsdir,'/',strlen(pbsdir)-1) lt 0 then pbsdir+='/' - splog, 'Setting PBS_SCRATCH_DIR=', pbsdir - - topdir2d = djs_filepath('', root_dir=topdir, subdir=run2d) - - if (keyword_set(run1d)) then begin - run1dstr = ', run1d="'+run1d+'"' - run1dstr_py = '--run1d "'+run1d+'"' - endif else begin - run1dstr = '' - run1dstr_py = '' - endelse - if (keyword_set(run2d)) then run2dstr = ',run2d="'+run2d+'"' $ - else run2dstr = '' - - pbs_share=0 - if keyword_set(slurm) then begin - if not keyword_set(pbs_nodes) then pbs_nodes=getenv('SLURM_NODES') - if not keyword_set(pbs_ppn) then pbs_ppn=getenv('SLURM_PPN') - if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - if not keyword_set(pbs_a) then pbs_a = getenv('SLURM_ALLOC') - if not keyword_set(pbs_mem_per_cpu) then pbs_mem_per_cpu=getenv('SLURM_MEM_PER_CPU') - if not keyword_set(pbs_share) then begin - if getenv('SLURM_VERS') eq 'notchpeak' then pbs_share=1 - endif - endif - - sub = keyword_set(slurm) ? 'sbatch' : 'qsub' - - if ((keyword_set(slurm)) and (pbs_nodes gt 1)) then pbs_batch = 1L - - ;---------- - ; Create list of plate directories - ; Limit the list to only those specified by PLATENUMS,PLATESTART,PLATEEND - platedirs = get_mjd_dir(topdir2d, mjd=platenums, mjstart=platestart, mjend=plateend) - - if (NOT keyword_set(platedirs[0])) then begin - splog, 'No directories found' - return - endif - ndir = n_elements(platedirs) - - ;---------- - ; In each plate directory, find all 'spPlancomb*.par' files - - for idir=0L, ndir-1L do begin - planfile = findfile( $ - djs_filepath('spPlancomb*.par', root_dir=topdir2d, subdir=platedirs[idir]), count=nfile) - for ifile=0, nfile-1 do begin - yanny_read, planfile[ifile], hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - obs = yanny_par_fc(hdr, 'obs') - if obs eq '' then obs='apo' - - if not keyword_set(all_obs) then begin - if keyword_set(lco) then begin - if strmatch(obs, 'apo', /fold_case) then continue - endif else begin - if strmatch(obs, 'lco', /fold_case) then continue - endelse - endif - ; Decide if THISMJD is within the bounds specified by MJD,MJSTART,MJEND - if (mjd_match(thismjd, mjd=mjd, mjstart=mjstart, mjend=mjend)) then begin - if (keyword_set(platelist)) then begin - platelist = [platelist, platedirs[idir]] - planlist = [planlist, planfile[ifile]] - endif else begin - platelist = platedirs[idir] - planlist = planfile[ifile] - endelse - endif - endfor - endfor - nplate = n_elements(planlist) - if (nplate EQ 0) then begin - splog, 'No plan files found' - return - endif - -; Do not use spPlancomb files that only have a subset of the MJDs !!!??? - - ;---------- - ; For each combine plan file, generate the IDL script files - - fullscriptfile = strarr(nplate) - plateid = lonarr(nplate) - mjd_beg = lonarr(nplate) - mjd_end = lonarr(nplate) - - fq = "'" - qbatch = bytarr(nplate) + 1B ; default to reduce all plates - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ; PBS_NODES: - ; Setup the bundled script files if pbs_nodes keyword is set - if keyword_set(pbs_nodes) then begin - - if keyword_set(pbs_ppn) then nodes_required = ceil(float(nplate)/pbs_ppn) else nodes_required = nplate - if nodes_required lt pbs_nodes then pbs_nodes = nodes_required - ncycle = ceil(float(nplate)/(pbs_nodes*pbs_ppn)) - if pbs_share eq 1 then begin - if nplate le pbs_ppn then pbs_ncpus=nplate else pbs_ncpus = pbs_ppn - endif else begin - pbs_ncpus = pbs_ppn - endelse - - home = getenv('HOME') - if (home ne '') then begin - pos0 = strpos(home,'/',/reverse_search)+1 - pos1 = strlen(home) - userID = strmid(home,pos0,pos1-pos0) - endif else userID = 'user' - - date = strtrim(bin_date(),2) - for i=1,n_elements(date)-1 do $ - if (strlen(date[i]) eq 1) then date[i] = '0'+date[i] - - splog, 'Starting for user: ',userID - userID+='_'+string(date, format='(A4,A2,A2,A2,A2,A2)') - - if (pbsdir eq '') then begin - if keyword_set(scratchdir) then pbsdir = djs_filepath('pbs/'+run2d,root_dir=scratchdir) $ - else pbsdir = djs_filepath('pbs/'+run2d,root_dir=topdir) - endif else pbs_dir = djs_filepath('bossredux/'+run2d,root_dir=pbsdir) - pbs_dir = djs_filepath('',root_dir=pbsdir,subdir=run2d+'/'+userID) - if file_test(pbs_dir) then begin - shift_pbs_dir = djs_filepath('',root_dir=pbsdir,subdir=run2d+'/'+userID+'.*') - shift_pbs = file_search(shift_pbs_dir, count=nshift_pbs) - max_shift = -1L - for i=0,nshift_pbs-1 do begin - pos0 = strpos(shift_pbs[i],'/'+userID+'.',/reverse_search)+strlen('/'+userID+'.') - pos1 = strlen(shift_pbs[i]) - next_shift = fix(strmid(shift_pbs[i],pos0,pos1-pos0)) - max_shift = (next_shift gt max_shift) ? next_shift : max_shift - endfor - shift_pbs_dir = djs_filepath('',root_dir=pbsdir,subdir=run2d+'/'+userID+ '.' + strtrim(max_shift+1,2)) - splog, 'Renaming previous PBS directory to: '+shift_pbs_dir - file_move, pbs_dir, shift_pbs_dir - file_mkdir, pbs_dir - endif else file_mkdir, pbs_dir - splog, "cd "+pbs_dir - - pbs_node_index = 'node'+ string(indgen(pbs_nodes)+1,format='(i2.2)') - pbs_node_script = djs_filepath(pbs_node_index+'.pbs',root_dir=pbs_dir) - pbs_node_lun = intarr(pbs_nodes) - if keyword_set(pbs_ppn) then begin - pbs_ppn_index = '_proc'+ string(indgen(pbs_ppn)+1,format='(i2.2)') - pbs_ppn_script = strarr(pbs_nodes,pbs_ppn) - endif - - if keyword_set(pbs_ppn) then splog, 'Preparing to '+sub+' '+strtrim(pbs_nodes,2)+' nodes ('+strtrim(pbs_ppn,2)+' processors per node) for '+strtrim(nplate,2)+' plates.' $ - else splog, 'Preparing to '+sub+' '+strtrim(nplate,2)+' plates.' - - for pbs_node = 0, pbs_nodes-1 do begin - openw, get_lun, pbs_node_script[pbs_node] ,/get_lun - pbs_node_lun[pbs_node] = get_lun - uubatchpbs_directives, pbs_batch_lun=pbs_node_lun[pbs_node], slurm=slurm, pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_walltime=pbs_walltime, qos=qos, $ - pbs_cpus=pbs_cpus, pbs_share=pbs_share,full_run=full_run, nplate=nplate, run2d=run2d - if keyword_set(pbs_ppn) then begin - pbs_ppn_script[pbs_node,*] = djs_filepath(pbs_node_index[pbs_node] + pbs_ppn_index +'.pbs',root_dir=pbs_dir) - for pbs_proc = 0, pbs_ppn-1 do printf, pbs_node_lun[pbs_node], 'source '+pbs_ppn_script[pbs_node,pbs_proc] + ' &' - endif - close, pbs_node_lun[pbs_node] - endfor - - if keyword_set(pbs_batch) then begin - pbs_batch_script = djs_filepath('uubatch.pbs',root_dir=pbs_dir) - openw, pbs_batch_lun, pbs_batch_script, /get_lun - uubatchpbs_directives, pbs_batch_lun=pbs_batch_lun, slurm=slurm, pbs_dir=pbs_dir, pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_walltime=pbs_walltime, $ - pbs_share=pbs_share, qos=qos, nplate=nplate,full_run=full_run, /batch_array, run2d=run2d - close, pbs_batch_lun - free_lun, pbs_batch_lun - endif - - endif - pbs_node = 0 - pbs_proc = 0 - pbs_ppn_append = 0 - - if keyword_set(galaxy) then begin - n_redux = 5 - galaxy_redux = replicate({group:'', product:'', file:'', counter:0L, done:0L, skip:0B, keyword:''},n_redux) - galaxy_redux.group = ['granada','portsmouth','portsmouth','utah','wisconsin'] - galaxy_redux.product = ['fsps','stellarmass','emlinekin','bells','pca'] - galaxy_redux.skip = [keyword_set(skip_granada_fsps),keyword_set(skip_portsmouth_stellarmass),keyword_set(skip_portsmouth_emlinekin),keyword_set(skip_utah_bells),keyword_set(skip_wisconsin_pca)] - galaxy_redux.keyword = ['/skip_granada_fsps','/skip_portsmouth_stellarmass','/skip_portsmouth_emlinekin','/skip_utah_bells','/skip_wisconsin_pca'] - endif - - cycle = 0 - for iplate=0, nplate-1 do begin - ; Find all relevant 2D plan files - yanny_read, planlist[iplate], hdr=hdr - planfile2d = yanny_par(hdr, 'planfile2d') - plateid[iplate] = yanny_par(hdr, 'fieldid') - obs = yanny_par_fc(hdr, 'obs') - if obs eq '' then obs='apo' - mjd = yanny_par(hdr, 'MJD') - platemjd = field_to_string(plateid[iplate]) + '-' + string(mjd,format='(i5.5)') - platefile = 'spField-'+platemjd+'.fits' - - get_field_type, fieldid=plateid[iplate], mjd=mjd, legacy=legacy, plates=plate_s, fps=fps - - if keyword_set(legacy) or keyword_set(plate_s) then onestep_coadd=1 else onestep_coadd = onestep_coadd_def - if keyword_set(onestep_coadd) then no_reject = 0 else no_reject = no_reject_def - - ; Track the beginning and ending MJD going into this plate - plan2dfile = file_basename(planfile2d,'.par') - if n_elements(planfile2d) gt 1 then begin - mjd_beg[iplate]=min(((strsplit(plan2dfile,'-',/extract)).ToArray())[*,2]) - mjd_end[iplate]=max(((strsplit(plan2dfile,'-',/extract)).ToArray())[*,2]) - endif else begin - mjd_beg[iplate] = min(((strsplit(plan2dfile,'-',/extract)))[2]) - mjd_end[iplate] = max(((strsplit(plan2dfile,'-',/extract)))[2]) - endelse - - ; Split the combine plan file name into a directory and file name - planfilecomb = fileandpath(planlist[iplate], path=pathcomb) - - if keyword_set(scratchdir) then begin - scratchdir2d = djs_filepath(field_to_string(plateid[iplate]), root_dir=scratchdir, subdir=run2d) - scratchdir1d = djs_filepath('', root_dir=scratchdir2d, subdir=run1d) - fullscriptfile[iplate] = djs_filepath('redux-'+platemjd, root_dir=scratchdir2d) - redux_file = djs_filepath('redux-'+platemjd, root_dir=topdir2d,subdir=field_to_string(plateid[iplate])) - endif else begin - fullscriptfile[iplate] = djs_filepath('redux-'+platemjd, root_dir=pathcomb) - redux_file = fullscriptfile[iplate] - endelse - if (keyword_set(skip2d)) then fullscriptfile[iplate] += '-' + run1d - - if keyword_set(clobber) then file_delete, redux_file, /quiet, /allow_nonexistent $ - else qbatch[iplate] = file_test(redux_file) ? 0B : 1B - - if keyword_set(galaxy) then begin - galaxy_outdir = djs_filepath('', root_dir=boss_galaxy_redux, subdir=run2d+'/'+field_to_string(plateid[iplate])+'/'+run1d) - - galaxy_redux_file = strarr(n_redux) - for r=0,n_redux-1 do galaxy_redux_file[r] = djs_filepath(galaxy_redux[r].group + '_' + galaxy_redux[r].product + '_redux-'+ platemjd, root_dir=galaxy_outdir, subdir=galaxy_redux[r].group + '/' + galaxy_redux[r].product) - - keywords = '' - for r=0,n_redux-1 do begin - if keyword_set(galaxy_redux[r].skip) then begin - keywords += ', '+galaxy_redux[r].keyword - if file_test(galaxy_redux_file[r]) then galaxy_redux[r].done += 1L - endif else begin - galaxy_redux[r].counter += 1L - if keyword_set(clobber) then file_delete, galaxy_redux_file[r], /quiet, /allow_nonexistent - endelse - endfor - if keyword_set(test) then keywords += ', /test' - endif - - if (qbatch[iplate]) then begin - - if keyword_set(scratchdir) then begin - - ; Construct run2d and run1d directories for each plate within scratchdir - if (not file_test(scratchdir2d)) then file_mkdir, scratchdir2d - - ; cp the plan files to scratch if needed: - file_copy, planlist[iplate], scratchdir2d, /over - planfile2d_source = file_search(djs_filepath(planfile2d,root_dir=topdir2d,subdir=field_to_string(plateid[iplate])),count=has_plan2d) - if keyword_set(has_plan2d) then file_copy, planfile2d_source, scratchdir2d, /over - endif - - openw, olun, fullscriptfile[iplate], /get_lun - printf, olun, '# Auto-generated batch file '+systime() - if not keyword_set(pbs_nodes) then begin - if keyword_set(pbs_ppn) then printf, olun, '#PBS -l nodes=1:ppn='+strtrim(pbs_ppn,2) $ - else printf, olun, '#PBS -l nodes=1' - if keyword_set(pbs_a) then printf, olun, '#PBS -A '+pbs_a - if keyword_set(pbs_walltime) then printf, olun, '#PBS -l walltime='+pbs_walltime - printf, olun, '#PBS -W umask=0027' - printf, olun, '#PBS -V' - printf, olun, '#PBS -j oe' - ; set queue if asked - if (keyword_set(queue)) then printf, olun, '#PBS -q ' + queue - printf, olun, 'cd $PBS_O_WORKDIR' - endif else begin - if keyword_set(scratchdir) then printf, olun, 'cd '+scratchdir2d $ - else printf, olun, 'cd '+pathcomb - endelse - ; Define the observatory data - if strmatch(obs, 'lco', /fold_case) then begin - printf, olun, 'export BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_S' - printf, olun, 'export GCAM_DATA=$GCAM_DATA_S' - endif else begin - printf, olun, 'export BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_N' - printf, olun, 'export GCAM_DATA=$GCAM_DATA_N' - endelse - ; Override environment variables if requested - if (keyword_set(rawdata_dir)) then begin - printf, olun, 'export BOSS_SPECTRO_DATA='+rawdata_dir - endif - if (keyword_set(boss_spectro_redux)) then begin - printf, olun, 'export BOSS_SPECTRO_REDUX='+boss_spectro_redux - endif - - if keyword_set(verbose) then begin - printf, olun, '' - printf, olun, '#- Echo commands to make debugging easier' - printf, olun, 'set -o verbose' - printf, olun, '' - printf, olun, '#- The real work' - endif - - ; Delete old files in clobber keyword is set - Added by TH 5 Aug 2015 - if keyword_set(clobber) then begin - file_delete, 'spec2d-'+platemjd+'.started', /quiet, /allow_nonexistent - file_delete, 'spec2d-'+platemjd+'.done', /quiet, /allow_nonexistent - file_delete, 'spec1d-'+platemjd+'.started', /quiet, /allow_nonexistent - file_delete, 'spec1d-'+platemjd+'.done', /quiet, /allow_nonexistent - file_delete, 'specombine-'+platemjd+'.started', /quiet, /allow_nonexistent - file_delete, 'specombine-'+platemjd+'.done', /quiet, /allow_nonexistent - file_delete, 'redmonster-'+platemjd+'.started', /quiet, /allow_nonexistent - file_delete, 'redmonster-'+platemjd+'.done', /quiet, /allow_nonexistent - endif - - if (keyword_set(skip2d) EQ 0) then begin - ; Set up requested code version - if (keyword_set(upsvers2d)) then $ - printf, olun, 'module switch idlspec2d idlspec2d/'+upsvers2d - if (keyword_set(upsversutils)) then printf, olun, 'module switch idlutils idlutils/'+upsversutils - - ; Create sorted photoPlate files - if keyword_set(legacy) then begin - for i=0, n_elements(planfile2d)-1 do begin - if keyword_set(plate_s) then begin - printf, olun, 'echo '+fq+'sdss_plate_sort,"'+planfile2d[i]+'"'+fq+' | idl' - endif else begin - printf, olun, 'echo '+fq+'sdss_field_sort,"'+planfile2d[i]+'"'+fq+' | idl' - endelse - endfor - endif - ; Run Spectro-2D - - spreduce2d_keys='' - rm_combine_keys='/xyfit, /loaddesi,' - if keyword_set(plate_s) then begin - if keyword_set(legacy) then begin - spreduce2d_keys = spreduce2d_keys +' /legacy,' - rm_combine_keys = rm_combine_keys +' /legacy, /onestep_coadd' - endif else begin - spreduce2d_keys = spreduce2d_keys +' /plates,' - rm_combine_keys = rm_combine_keys +' /plates,' - if keyword_set(MWM_fluxer) then begin - spreduce2d_keys = spreduce2d_keys +' /MWM_fluxer,' - rm_combine_keys = rm_combine_keys +' /MWM_fluxer,' - endif - if keyword_set(no_reject) then begin - rm_combine_keys = rm_combine_keys +' /no_reject,' - endif - if keyword_set(onestep_coadd) then begin - rm_combine_keys = rm_combine_keys +' /onestep_coadd,' - endif - endelse - endif else begin - if keyword_set(MWM_fluxer) then begin - spreduce2d_keys = spreduce2d_keys +' /MWM_fluxer,' - rm_combine_keys = rm_combine_keys +' /MWM_fluxer,' - endif - if keyword_set(no_reject) then begin - rm_combine_keys = rm_combine_keys +' /no_reject,' - endif - if keyword_set(onestep_coadd) then begin - rm_combine_keys = rm_combine_keys +' /onestep_coadd,' - endif - endelse - if keyword_set(no2d) then begin - rm_combine_keys = rm_combine_keys +' /skipfluxing,' - rm_combine_keys = rm_combine_keys +' /skipfcorr,' - ;rm_combine_keys = rm_combine_keys +' /nofcorr,' - ;rm_combine_keys = rm_combine_keys +' /nodist,' - endif - - if keyword_set(no_db) then spreduce2d_keys = spreduce2d_keys +' /no_db,' - - if not keyword_set(no2d) then begin - for i=0, n_elements(planfile2d)-1 do begin - pmjd=STRJOIN((STRSPLIT((STRSPLIT(planfile2d[i],'.',/EXTRACT))[0],'-',/extract))[1:*],'-') - printf, olun, 'touch spec2d-'+pmjd+'.started' ; Added TH 4 Aug 2015 ; updated SM 40 Jun 2020 - printf, olun, 'echo '+fq+'spreduce2d, '+spreduce2d_keys+' "'+planfile2d[i]+'"'+fq+' | idl' - printf, olun, 'touch spec2d-'+pmjd+'.done' ; Added TH 4 Aug 2015 ; updated SM 40 Jun 2020 - endfor - endif - printf, olun, 'touch specombine-'+platemjd+'.started' ; Added HI 21 Nov 2018 - printf, olun, 'echo '+fq+'rm_combine_script,"'+planfilecomb+'", '+rm_combine_keys+' run2d="'+run2d+'"'+fq+' | idl' - printf, olun, 'touch specombine-'+platemjd+'.done' ; Added HI 21 Nov 2018 - endif - - ; Run Spectro-1D - if (keyword_set(upsvers1d)) then $ - printf, olun, 'module switch idlspec2d idlspec2d/'+upsvers1d - if (keyword_set(upsversutils)) then printf, olun, 'module switch idlutils idlutils/'+upsversutils - printf, olun, 'touch spec1d-'+platemjd+'.started' ; Added TH 4 Aug 2015 - printf, olun, 'echo '+fq+'spreduce1d_empca,"'+platefile+'"'+run1dstr+fq+' | idl' - if not keyword_set(noxcsao) then printf, olun, 'run_PyXCSAO.py '+platefile+' '+run1dstr_py - printf, olun, 'touch spec1d-'+platemjd+'.done' ; Added TH 4 Aug 2015 - printf, olun, '' - printf, olun, '#- Make final spectra files' - - reformat_keywords='' - conflist_keywords='/create, ' - fieldmerge_keywords='/include_bad, ' - if keyword_set(plate_s) then begin - if keyword_set(legacy) then begin - reformat_keywords=reformat_keywords+'/legacy, ' - conflist_keywords=conflist_keywords+'/legacy, ' - fieldmerge_keywords=fieldmerge_keywords+'/legacy, ' - endif else begin - reformat_keywords=reformat_keywords+'/plates, ' - conflist_keywords=conflist_keywords+'/plates, ' - fieldmerge_keywords=fieldmerge_keywords+'/plates, ' - endelse - endif - - if not keyword_set(noxcsao) then begin - reformat_keywords=reformat_keywords+'/XCSAO, ' - fieldmerge_keywords=fieldmerge_keywords+'/XCSAO, ' - endif - - if keyword_set(skip_specprimary) then begin - fieldmerge_keywords=fieldmerge_keywords+'/skip_specprimary, ' - endif - - trim_keywords, reformat_keywords - trim_keywords, conflist_keywords - trim_keywords, fieldmerge_keywords - - printf, olun, 'echo '+fq+'reformat_spec, "'+platefile+'", '+reformat_keywords +run1dstr+fq+' | idl' - printf, olun, 'echo '+fq+'conflist, '+ conflist_keywords+ fq+' | idl' - printf, olun, 'echo '+fq+'fieldmerge, field='+strtrim(string(plateid[iplate]),2)+', mjd='+strtrim(string(mjd),2)+', '+fieldmerge_keywords+fq+' | idl' - printf, olun, 'echo '+fq+'reformat_spec, "'+platefile+'", /lite, '+reformat_keywords +run1dstr+fq+' | idl' - - - - ; Run Zcode - if (keyword_set(zcode)) then begin - printf, olun, '' - printf, olun, 'module load runz' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a -G -t GAL' - endif - - ; Run Galaxy Suite of Products - if (keyword_set(galaxy)) then begin - if (keyword_set(upsversgalaxy)) then printf, olun, 'module switch galaxy galaxy/'+upsversgalaxy - printf, olun, 'export BOSS_GALAXY_REDUX='+boss_galaxy_redux - printf, olun, 'export GALAXY_SCRATCH_DIR='+boss_galaxy_scratch - skip_keywords = '' - if keyword_set(skip_granada_fsps) then skip_keywords += ', /skip_granada_fsps' - if keyword_set(skip_wisconsin_pca) then skip_keywords += ', /skip_wisconsin_pca' - if keyword_set(skip_portsmouth_stellarmass) then skip_keywords += ', /skip_portsmouth_stellarmass' - if keyword_set(skip_portsmouth_emlinekin) then skip_keywords += ', /skip_portsmouth_emlinekin' - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'galaxy_pipeline,"'+planfile2d[i]+'"'+skip_keywords+fq+' | idl' - endif - - - ; Run reformat_spectra for spec files, full and lite - - printf, olun, '' - printf, olun, '#- Make Spectro-Photometric Calibration QA Figures' - printf, olun, 'echo '+fq+'spcalib_qa, fieldid='+strtrim(string(plateid[iplate]),2)+', mjd='+strtrim(string(mjd),2)+', run2d="'+run2d+'"'+fq+' | idl' - - ; splog, "run1d is ", run1d - ; splog, "run2d is ", run2d - - ; Make pretty pictures - idlcmd = "plate_spec_image, " + field_to_string(plateid[iplate]) - idlcmd += ", mjd=" + string(mjd,format='(i5.5)') - idlcmd += ", run1d='" + run1d + "'" - idlcmd += ", run2d='" + run2d + "'" - idlcmd += ", /silent" - if keyword_set(plate_s) then begin - if keyword_set(legacy) then begin - idlcmd += ", /legacy" - endif else begin - idlcmd += ", /plates" - endelse - endif - printf, olun, '' - printf, olun, '#- Make pretty pictures' - printf, olun, 'idl -e "' + idlcmd + '"' - - if not keyword_set(no_merge_spall) then begin - printf, olun, '#- update spAll file' - printf, olun, 'echo '+fq+'fieldmerge, '+fieldmerge_keywords+ ', /lite' +fq+' | idl' - endif - - printf, olun, '#- Make the healpix links' - printf, olun, 'sas_mwm_healpix --spectro boss --mjd '+strtrim(string(mjd),2)+' --telescope apo25m --drpver '+run2d+' -v' - - ; If using scratchdir, uubatchcp (selected) final reductions to topdir - if (keyword_set(scratchdir)) then begin - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'uubatchcp,"'+planfile2d[i]+'", topdir="'+topdir+'", run2d="'+run2d+'", run1d="'+run1d+'", scratchdir="'+scratchdir+'"'+fq+' | idl' - endif - - close, olun - free_lun, olun - - ;---------- - ; Do not reduce any plan files that are only partial reductions - ; (If we tried, then we would get multiple instances of SPREDUCE2D - ; running on the same data.) - ; Make this decision regardless of the values of CLOBBER. - - indx = where(plateid EQ plateid[iplate] AND mjd_end GT mjd_end[iplate] $ - AND mjd_beg LE mjd_end[iplate], ct) - if (ct GT 0) then qbatch[iplate] = 0B - - ; Run the scriptfile from a bundled PBS script file (node) - ; in the absence of node sharing - if (keyword_set(pbs_nodes)) then begin - script_cmd = (ct GT 0) ? '#skip ' : 'source ' - if not keyword_set(pbs_node) and not keyword_set(pbs_proc) then begin - cycle += 1 - splog, "Preparing node cycle "+string(cycle,format='(i2)')+'/'+strtrim(ncycle,2) - endif - if keyword_set(pbs_ppn) then begin - openw, pbs_ppn_lun, pbs_ppn_script[pbs_node,pbs_proc], append=pbs_ppn_append, /get_lun - printf, pbs_ppn_lun, script_cmd+fullscriptfile[iplate]+' > '+fullscriptfile[iplate]+'.o' $ - + ' 2> '+fullscriptfile[iplate]+'.e' - close, pbs_ppn_lun - free_lun, pbs_ppn_lun - pbs_node += 1 - if pbs_node ge pbs_nodes then begin - pbs_node = 0 - pbs_proc += 1 - if pbs_proc ge pbs_ppn then begin - pbs_proc = 0 - if not pbs_ppn_append then pbs_ppn_append = 1 - endif - endif - endif else begin - openw, pbs_node_lun[pbs_node], pbs_node_script[pbs_node], /append - printf, pbs_node_lun[pbs_node], script_cmd+fullscriptfile[iplate]+' &' - close, pbs_node_lun[pbs_node] - pbs_node += 1 - if pbs_node ge pbs_nodes then pbs_node = 0 - endelse - endif - endif - - endfor - - if keyword_set(pbs_ppn) and not keyword_set(pbs_ppn_append) then begin - pbs_node_i = pbs_node - pbs_proc_i = pbs_proc - for pbs_proc = pbs_proc_i,pbs_ppn-1 do begin - for pbs_node = pbs_node_i,pbs_nodes-1 do begin - openw, pbs_ppn_lun, pbs_ppn_script[pbs_node,pbs_proc], /get_lun - printf, pbs_ppn_lun, "#done" - close, pbs_ppn_lun - free_lun, pbs_ppn_lun - endfor - pbs_node_i = 0 - endfor - endif else print, 'completed' - - ; Close the bundled script files if pbs_nodes keyword is set - if keyword_set(pbs_nodes) then begin - for pbs_node = 0, pbs_nodes-1 do begin - openw, pbs_node_lun[pbs_node], pbs_node_script[pbs_node], /append - printf, pbs_node_lun[pbs_node], 'wait' - printf, pbs_node_lun[pbs_node], 'echo "DONE"' - close, pbs_node_lun[pbs_node] - free_lun, pbs_node_lun[pbs_node] - endfor - endif - - ;---------- - ; Trim the plate list to only those needing reductions - - ibatch = where(qbatch, nbatch) - if (nbatch EQ 0) then begin - splog, 'All plates have been reduced' - return - endif - - if keyword_set(pbs_batch) and keyword_set(galaxy) then begin - galaxy_redux_file = djs_filepath('galaxy_redux.fits',root_dir=pbs_dir) - splog, "CREATE: "+galaxy_redux_file - mwrfits, galaxy_redux, galaxy_redux_file, /create, /silent - endif - - void = where(qbatch eq 1B,n_todo) - void = where(qbatch eq 0B,n_done) - message = string("boss_redux",format='(a22)')+': ' - message += "#BOSS PLATES DONE = " + string(n_done,format='(i4)') + " #BOSS PLATES TO DO = " + string(n_todo,format='(i4)') - if not keyword_set(clobber) then splog, message $ - else splog, message + ". [/clobber]" - if keyword_set(galaxy) then begin - for r=0,n_redux-1 do begin - message = string(strtrim(galaxy_redux[r].group,2) + "_" + strtrim(galaxy_redux[r].product,2),format='(a22)')+': ' - message += "#GALAXY JOBS DONE = " + string(galaxy_redux[r].done,format='(i4)') + " #GALAXY JOBS TO DO = " + string(galaxy_redux[r].counter,format='(i4)') - if not galaxy_redux[r].skip then splog, message $ - else splog, message + ". ["+galaxy_redux[r].keyword+"]" - endfor - endif - - ;---------- - ; Submit jobs to the PBS queue - ;exit - if (not keyword_set(pbs_nodes)) then begin - for i=0L, nbatch-1L do begin - thisfile = fileandpath(fullscriptfile[ibatch[i]], path=thispath) - if (keyword_set(thispath)) then cd, thispath, current=origdir - if keyword_set(nosubmit) then begin - splog, 'Generated '+thisfile+' but not submitting to queue' - endif else begin - splog, sub+' '+thisfile - spawn, sub+' '+thisfile, identifier - splog, strupcase(sub)+'> '+identifier - endelse - endfor - cd, origdir - endif else begin - cd, pbs_dir - if keyword_set(pbs_batch) then begin - if keyword_set(nosubmit) then begin - splog, 'Generated '+pbs_batch_script+' but not submitting to queue' - endif else begin - splog, 'Submitting '+pbs_batch_script - spawn, sub+' '+pbs_batch_script - endelse - endif else begin - for i=0L, pbs_nodes-1 do begin - if keyword_set(nosubmit) then begin - splog, 'Generated '+pbs_node_script[i]+' but not submitting to queue' - endif else begin - splog, 'Submitting '+pbs_node_script[i] - spawn, sub+' '+pbs_node_script[i] - endelse - endfor - endelse - endelse - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/uubatchpbs_run.pro b/pro/spec2d/uubatchpbs_run.pro deleted file mode 100644 index 1288fe86b..000000000 --- a/pro/spec2d/uubatchpbs_run.pro +++ /dev/null @@ -1,488 +0,0 @@ -;+ -; NAME: -; uubatchpbs_run -; -; PURPOSE: -; Batch process Spectro-2D and Spectro-1D reductions based upon -; already-built plan files. -; ADAPTED FROM: batchpbs.pro -; To function on clusters without node sharing (e.g. University of Utah) -; -; CALLING SEQUENCE: -; uubatchpbs_run, [ platenums, topdir=, run2d=, run1d=, platestart=, plateend=, $ -; mjd=, mjstart=, mjend=, upsvers2d=, upsvers1d=, rawdata_dir=, $ -; boss_spectro_redux=, run_custom=, /zcode, /galaxy, queue=, /skip2d, $ -; /clobber, /nosubmit, $ -; pbsnodes=pbsnodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_walltime=pbs_walltime, ember=ember] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; platenums - Plate numbers to reduce; default to '*' -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; run2d - Optional override value for the environment variable $RUN2D -; run1d - Optional override value for the environment variable $RUN1D -; platestart - Starting plate number. -; plateend - Ending plate number. -; mjd - MJD dates to reduce; default to all. -; Select based upon the MJD of the combine plan file, and -; reduce data from all nights needed for that combined plate+MJD. -; mjstart - Starting MJD dates to reduce. -; mjend - Ending MJD dates to reduce. -; upsvers2d - If set, then do a "setup idlspec2d $UPSVERS2D" on the -; remote machine before executing Spectro-2D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; upsvers1d - If set, then do a "setup idlspec2d $UPSVERS2D" on the -; remote machine before executing Spectro-1D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; run_custom - If set, then run this custom idl code instead of pipeline. -; zcode - If set, run Zcode in auto mode. -; galaxy - If set, run Galaxy (Portsmouth, PCA) Suite of Products. -; queue - If set, sets the submit queue. -; skip2d - If set, then skip the Spectro-2D reductions. -; clobber - If set, then reduce all specified plates. The default is -; to not reduce plates where the script file already exists. -; pbs_nodes - If set, collect the pbs qsub commands into pbs_nodes script files -; in order to run on clusters without node sharing (ie Utah). -; default to node sharing, and keep the pbs qsub commands in the -; individual plate-mjd SCRIPT files. -; pbs_ppn - If set, use #PBS -l nodes=1:ppn=pbs_ppn, otherwise -; default to #PBS -l nodes=1 -; pbs_a - If set, use #PBS -A pbs_a, otherwise -; default to none -; pbs_walltime - If set, use #PBS -l walltime=pbs_walltime, otherwise -; default to none -; ember - If set, then setup the defaults for the ember cluster at the University of Utah: -; pbs_nodes = 8 (for 8 nodes, without node sharing) -; pbs_ppn = 12 (12 processors per node) -; pbs_a = 'bolton-em' (Bolton's account, limited to 8 nodes: ember253 - ember260) -; pbs_walltime='48:00:00' -; nosubmit - If set, generate script file but don't submit to queue -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; This is currently written to batch all Spectro-2D and Spectro-1D -; reductions, without the option of doing only one or the other. -; -; Script files are generated for partial reductions of a plate, -; although those jobs are not submitted. It would be less confusing -; to not make those script files. -; -; REVISION HISTORY: -; 17-Jan-2010 Written by D. Schlegel, LBL -; 01-Jan-2011 Adapted from batchpbs by Joel R. Brownstein, University of Utah, -; to generalize to cluster computers that do not have pbs node sharing -; by relocating the PBS commands to bundled script files, -; in general via the keywords pbs_nodes, pbs_ppn, pbs_a -; and with University of Utah defaults preset via the keyword ember. -;- -;------------------------------------------------------------------------------ -pro uubatchpbs_run, platenums1, topdir=topdir1, run2d=run2d1, run1d=run1d1, $ - platestart=platestart, plateend=plateend, $ - mjd=mjd, mjstart=mjstart, mjend=mjend, $ - upsvers2d=upsvers2d, upsvers1d=upsvers1d, $ - rawdata_dir=rawdata_dir, $ - boss_spectro_redux=boss_spectro_redux, run_custom=run_custom, $ - zcode=zcode, galaxy=galaxy, $ - queue=queue, skip2d=skip2d, clobber=clobber, nosubmit=nosubmit, $ - pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, $ - pbs_walltime=pbs_walltime, ember=ember - - if (size(platenums1,/tname) EQ 'STRING') then platenums = platenums1 $ - else if (keyword_set(platenums1)) then $ - platenums = plate_to_string(platenums1) $ - else platenums = '*' - - ;---------- - ; Determine the top-level of the output directory tree - - if (keyword_set(topdir1)) then topdir = topdir1 $ - else topdir = getenv('BOSS_SPECTRO_REDUX') - if strpos(topdir,'/',strlen(topdir)-1) lt 0 then topdir+='/' - splog, 'Setting TOPDIR=', topdir - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - splog, 'Setting RUN1D=', run1d - - topdir2d = djs_filepath('', root_dir=topdir, subdir=run2d) - if (keyword_set(run1d)) then run1dstr = ',run1d="'+run1d+'"' $ - else run1dstr = '' - if (keyword_set(run2d)) then run2dstr = ',run2d="'+run2d+'"' $ - else run2dstr = '' - - if keyword_set(ember) then begin - if not keyword_set(pbs_nodes) then pbs_nodes=8 - if not keyword_set(pbs_ppn) then pbs_ppn=12 - if not keyword_set(pbs_walltime) then pbs_walltime='48:00:00' - if not keyword_set(pbs_a) then pbs_a = 'bolton-em' - endif - - ;redux_type = 'redux' - redux_type = 'galaxy_redux' - - ;---------- - ; Create list of plate directories - ; Limit the list to only those specified by PLATENUMS,PLATESTART,PLATEEND - - platedirs = get_mjd_dir(topdir2d, mjd=platenums, mjstart=platestart, $ - mjend=plateend) - - if (NOT keyword_set(platedirs[0])) then begin - splog, 'No directories found' - return - endif - ndir = n_elements(platedirs) - - ;---------- - ; In each plate directory, find all 'spPlancomb*.par' files - - for idir=0L, ndir-1L do begin - planfile = findfile( $ - djs_filepath('spPlancomb*.par', root_dir=topdir2d, $ - subdir=platedirs[idir]), count=nfile) - - for ifile=0, nfile-1 do begin - yanny_read, planfile[ifile], hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - - ; Decide if THISMJD is within the bounds specified by MJD,MJSTART,MJEND - if (mjd_match(thismjd, mjd=mjd, mjstart=mjstart, mjend=mjend)) $ - then begin - if (keyword_set(platelist)) then begin - platelist = [platelist, platedirs[idir]] - planlist = [planlist, planfile[ifile]] - endif else begin - platelist = platedirs[idir] - planlist = planfile[ifile] - endelse - endif - endfor - endfor - - nplate = n_elements(planlist) - if (nplate EQ 0) then begin - splog, 'No plan files found' - return - endif - -; Do not use spPlancomb files that only have a subset of the MJDs !!!??? - - ;---------- - ; For each combine plan file, generate the IDL script files - - fullscriptfile = strarr(nplate) - plateid = lonarr(nplate) - mjd_beg = lonarr(nplate) - mjd_end = lonarr(nplate) - - fq = "'" - qbatch = bytarr(nplate) + 1B ; default to reduce all plates - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ; PBS_NODES: - ; Setup the bundled script files if pbs_nodes keyword is set - if keyword_set(pbs_nodes) then begin - - if nplate lt pbs_nodes then pbs_nodes = nplate - - home = getenv('HOME') - if (home ne '') then begin - pos0 = strpos(home,'/',/reverse_search)+1 - pos1 = strlen(home) - userID = strmid(home,pos0,pos1-pos0) - endif else userID = 'user' - print, 'UUBATCHBPS: Starting for user: ',userID - - pbs_root_dir = getenv('BOSS_PBS') - if (pbs_root_dir eq '') then pbs_root_dir = djs_filepath('pbs/'+run2d,root_dir=topdir) $ - else pbs_root_dir = djs_filepath('bossredux/'+run2d,root_dir=pbs_root_dir) - pbs_dir = djs_filepath(userID,root_dir=pbs_root_dir) + '/' - if file_test(pbs_dir) then begin - shift_pbs_dir = djs_filepath(userID+'.*',root_dir=pbs_root_dir) + '/' - shift_pbs = file_search(shift_pbs_dir, count=nshift_pbs) - max_shift = -1L - for i=0,nshift_pbs-1 do begin - pos0 = strpos(shift_pbs[i],'/'+userID+'.',/reverse_search)+strlen('/'+userID+'.') - pos1 = strlen(shift_pbs[i]) - next_shift = fix(strmid(shift_pbs[i],pos0,pos1-pos0)) - max_shift = (next_shift gt max_shift) ? next_shift : max_shift - endfor - shift_pbs_dir = djs_filepath(userID + '.' + strtrim(max_shift+1,2),root_dir=pbs_root_dir) + '/' - print, 'UUBATCHBPS: Renaming previous PBS directory to: '+shift_pbs_dir - file_move, pbs_dir, shift_pbs_dir - file_mkdir, pbs_dir - endif else file_mkdir, pbs_dir - - pbs_node_index = 'node'+ strtrim(indgen(pbs_nodes),2) - pbs_node_script = djs_filepath(pbs_node_index+'.pbs',root_dir=pbs_dir) - pbs_node_lun = intarr(pbs_nodes) - if keyword_set(pbs_ppn) then begin - pbs_ppn_index = '_proc'+ strtrim(indgen(pbs_ppn),2) - pbs_ppn_script = strarr(pbs_nodes,pbs_ppn) - endif - - for pbs_node = 0, pbs_nodes-1 do begin - openw, get_lun, pbs_node_script[pbs_node] ,/get_lun - pbs_node_lun[pbs_node] = get_lun - printf, pbs_node_lun[pbs_node], '# Auto-generated batch file '+systime() - if keyword_set(pbs_a) then printf, pbs_node_lun[pbs_node], '#PBS -A '+pbs_a - if keyword_set(pbs_walltime) then printf, pbs_node_lun[pbs_node], '#PBS -l walltime='+pbs_walltime - printf, pbs_node_lun[pbs_node], '#PBS -W umask=0022' - printf, pbs_node_lun[pbs_node], '#PBS -V' - printf, pbs_node_lun[pbs_node], '#PBS -j oe' - if (keyword_set(queue)) then printf, pbs_node_lun[pbs_node], '#PBS -q ' + queue - if keyword_set(pbs_ppn) then begin - printf, pbs_node_lun[pbs_node], '#PBS -l nodes=1:ppn='+strtrim(pbs_ppn,2) - pbs_ppn_script[pbs_node,*] = djs_filepath(pbs_node_index[pbs_node] + pbs_ppn_index +'.pbs',root_dir=pbs_dir) - for pbs_proc = 0, pbs_ppn-1 do printf, pbs_node_lun[pbs_node], 'source '+pbs_ppn_script[pbs_node,pbs_proc] + ' &' - endif else printf, pbs_node_lun[pbs_node], '#PBS -l nodes=1' - endfor - - endif - pbs_node = 0 - pbs_proc = 0 - pbs_ppn_append = 0 - - for iplate=0, nplate-1 do begin - ; Find all relevant 2D plan files - yanny_read, planlist[iplate], hdr=hdr - planfile2d = yanny_par(hdr, 'planfile2d') - plateid[iplate] = yanny_par(hdr, 'plateid') - mjd = yanny_par(hdr, 'MJD') - platemjd = plate_to_string(plateid[iplate]) + '-' $ - + string(mjd,format='(i5.5)') - platefile = 'spPlate-'+platemjd+'.fits' - - ; Track the beginning and ending MJD going into this plate - mjd_beg[iplate] = min(strmid(planfile2d,strpos(planfile2d,'-',10)+1,5)) - mjd_end[iplate] = max(strmid(planfile2d,strpos(planfile2d,'-',10)+1,5)) - - ; Split the combine plan file name into a directory and file name - planfilecomb = fileandpath(planlist[iplate], path=pathcomb) - - ; Construct the name of the batch file - ; "script" -> "redux" to make names fit within qstat column widths - ; fullscriptfile[iplate] = djs_filepath('script-'+platemjd, $ - fullscriptfile[iplate] = djs_filepath(redux_type+'-'+platemjd, $ - root_dir=pathcomb) - if (keyword_set(skip2d)) then fullscriptfile[iplate] += '-' + run1d - - ; Write the batch file - if (keyword_set(clobber) EQ 0) then $ - qbatch[iplate] = file_test(fullscriptfile[iplate]) EQ 0 - - if (qbatch[iplate]) then begin - openw, olun, fullscriptfile[iplate], /get_lun - printf, olun, '# Auto-generated batch file '+systime() - if not keyword_set(pbs_nodes) then begin - if keyword_set(pbs_ppn) then printf, olun, '#PBS -l nodes=1:ppn='+strtrim(pbs_ppn,2) $ - else printf, olun, '#PBS -l nodes=1' - if keyword_set(pbs_a) then printf, olun, '#PBS -A '+pbs_a - printf, olun, '#PBS -l walltime=48:00:00' - printf, olun, '#PBS -W umask=0022' - printf, olun, '#PBS -V' - printf, olun, '#PBS -j oe' - ; set queue if asked - if (keyword_set(queue)) then printf, olun, '#PBS -q ' + queue - printf, olun, 'cd $PBS_O_WORKDIR' - endif else printf, olun, 'cd '+pathcomb - - ; Override environment variables if requested - if (keyword_set(rawdata_dir)) then begin - printf, olun, 'export BOSS_SPECTRO_DATA='+rawdata_dir - endif - if (keyword_set(boss_spectro_redux)) then begin - printf, olun, 'export BOSS_SPECTRO_REDUX='+boss_spectro_redux - endif - - printf, olun, '' - printf, olun, '#- Echo commands to make debugging easier' - printf, olun, 'set -o verbose' - - ; printf, olun, '' - ; printf, olun, '#- Dump job environment for debugging' - ; envlog = 'env-'+platemjd+'.txt' - ; printf, olun, 'printenv > '+envlog - - printf, olun, '' - printf, olun, '#- The real work' - if (keyword_set(skip2d) EQ 0) then begin - ; Set up requested code version - if (keyword_set(upsvers2d)) then $ - printf, olun, 'setup idlspec2d '+upsvers2d - - if (not keyword_set(run_custom)) then begin - ; Create sorted photoPlate files - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'sdss_plate_sort,"'+planfile2d[i]+'"'+fq+' | idl' - - ; Run Spectro-2D - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'spreduce2d,"'+planfile2d[i]+'"'+fq+' | idl' - printf, olun, 'echo '+fq+'spcombine_v5,"'+planfilecomb+'"'+fq+' | idl' - endif - endif - - ; Run Spectro-1D - if (keyword_set(upsvers1d)) then $ - printf, olun, 'setup idlspec2d '+upsvers1d - if not keyword_set(run_custom) then printf, olun, 'echo '+fq+'spreduce1d,"'+platefile+'"'+run1dstr+fq+' | idl' - - ; Run Zcode - if (keyword_set(zcode)) then begin - printf, olun, '' - printf, olun, 'setup runz' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a -G -t GAL' - endif - - ; Run Galaxy (Portsmouth, PCA) Suite of Products - if (keyword_set(galaxy)) then begin - printf, olun, 'export BOSS_SPECTRO_REDUX='+topdir - printf, olun, 'export RUN2D='+run2d - printf, olun, 'export RUN1D='+run1d - printf, olun, 'setup galaxy' - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'galaxy_pipeline,"'+planfile2d[i]+'"'+fq+' | idl' - endif - - ; Run Custom Code - if (keyword_set(run_custom)) then begin - for i=0, n_elements(planfile2d)-1 do $ - ;printf, olun, 'echo '+fq+run_custom',"'+planfile2d[i]+'"'+fq+' | idl' - printf, olun, 'export BOSS_SPECTRO_REDUX='+topdir - printf, olun, 'export RUN2D='+run2d - printf, olun, 'export RUN1D='+run1d - printf, olun, 'echo '+fq+run_custom+', '+strtrim(plateid[iplate],2)+', '+strtrim(mjd,2)+fq+' | idl' - endif - - ; splog, "run1d is ", run1d - ; splog, "run2d is ", run2d - - ; Make pretty pictures - ;- post-DR9, no longer supported; use spectrawebapp or plotspec instead - ; idlcmd = "plate_spec_image, " + string(plateid[iplate],format='(i4.4)') - ; idlcmd += ", mjd=" + string(mjd,format='(i5.5)') - ; idlcmd += ", run1d='" + run1d + "'" - ; idlcmd += ", run2d='" + run2d + "'" - ; idlcmd += ", /silent" - ; printf, olun, '' - ; printf, olun, '#- Make pretty pictures' - ; printf, olun, 'idl -e "' + idlcmd + '"' - - close, olun - free_lun, olun - - ;---------- - ; Do not reduce any plan files that are only partial reductions - ; (If we tried, then we would get multiple instances of SPREDUCE2D - ; running on the same data.) - ; Make this decision regardless of the values of CLOBBER. - - indx = where(plateid EQ plateid[iplate] AND mjd_end GT mjd_end[iplate] $ - AND mjd_beg LE mjd_end[iplate], ct) - if (ct GT 0) then qbatch[iplate] = 0B - - ; Run the scriptfile from a bundled PBS script file (node) - ; in the absence of node sharing - if (keyword_set(pbs_nodes)) then begin - script_cmd = (ct GT 0) ? '#skip ' : 'source ' - if keyword_set(pbs_ppn) then begin - openw, pbs_ppn_lun, pbs_ppn_script[pbs_node,pbs_proc], append=pbs_ppn_append, /get_lun - printf, pbs_ppn_lun, script_cmd+fullscriptfile[iplate]+' > '+fullscriptfile[iplate]+'.o' - close, pbs_ppn_lun - free_lun, pbs_ppn_lun - pbs_node += 1 - if pbs_node ge pbs_nodes then begin - pbs_node = 0 - pbs_proc += 1 - if pbs_proc ge pbs_ppn then begin - pbs_proc = 0 - if not pbs_ppn_append then pbs_ppn_append = 1 - endif - endif - endif else begin - printf, pbs_node_lun[pbs_node], script_cmd+fullscriptfile[iplate]+' & - pbs_node += 1 - if pbs_node ge pbs_nodes then pbs_node = 0 - endelse - endif - endif - - endfor - - if not pbs_ppn_append then begin - pbs_node_i = pbs_node - pbs_proc_i = pbs_proc - for pbs_proc = pbs_proc_i,pbs_ppn-1 do begin - for pbs_node = pbs_node_i,pbs_nodes-1 do begin - openw, pbs_ppn_lun, pbs_ppn_script[pbs_node,pbs_proc], /get_lun - printf, pbs_ppn_lun, "#done" - close, pbs_ppn_lun - free_lun, pbs_ppn_lun - endfor - pbs_node_i = 0 - endfor - endif else print, 'completed' - - ; Close the bundled script files if pbs_nodes keyword is set - if keyword_set(pbs_nodes) then begin - for pbs_node = 0, pbs_nodes-1 do begin - printf, pbs_node_lun[pbs_node], 'wait' - close, pbs_node_lun[pbs_node] - free_lun, pbs_node_lun[pbs_node] - endfor - endif - - ;---------- - ; Trim the plate list to only those needing reductions - - ibatch = where(qbatch, nbatch) - if (nbatch EQ 0) then begin - splog, 'All plates have been reduced' - return - endif - - ;---------- - ; Submit jobs to the PBS queue - - if (not keyword_set(pbs_nodes)) then begin - for i=0L, nbatch-1L do begin - thisfile = fileandpath(fullscriptfile[ibatch[i]], path=thispath) - if (keyword_set(thispath)) then cd, thispath, current=origdir - if keyword_set(nosubmit) then begin - splog, 'Generated '+thisfile+' but not submitting to queue' - endif else begin - splog, 'Submitting '+thisfile - spawn, 'qsub '+thisfile - endelse - endfor - cd, origdir - endif else begin - cd, pbs_dir - for i=0L, pbs_nodes-1 do begin - if keyword_set(nosubmit) then begin - splog, 'Generated '+pbs_node_script[i]+' but not submitting to queue' - endif else begin - splog, 'Submitting '+pbs_node_script[i] - spawn, 'qsub '+pbs_node_script[i] - endelse - endfor - endelse - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/uubatchpbs_special.pro b/pro/spec2d/uubatchpbs_special.pro deleted file mode 100644 index 9913e1857..000000000 --- a/pro/spec2d/uubatchpbs_special.pro +++ /dev/null @@ -1,982 +0,0 @@ -;+ -; NAME: -; uubatchpbs -; -; PURPOSE: -; Batch process Spectro-2D and Spectro-1D reductions based upon -; already-built plan files. -; ADAPTED FROM: batchpbs.pro -; To function on clusters without node sharing (e.g. University of Utah) -; -; CALLING SEQUENCE: -; uubatchpbs, [ platenums, topdir=, run2d=, run1d=, platestart=, plateend=, $ -; mjd=, mjstart=, mjend=, upsvers2d=, upsvers1d=, upsversutils=, rawdata_dir=, $ -; boss_spectro_redux=, scratchdir=, /zcode, /galaxy, upsversgalaxy=, boss_galaxy_redux=, boss_galaxy_scratch=, $ -; pbsdir=, /verbose, queue=, qos=, ebossvers=ebossvers, /daily, /skip2d, $ -; /skip_granada_fsps, /skip_portsmouth_stellarmass, /skip_portsmouth_emlinekin, /skip_wisconsin_pca, $ -; /clobber, /nosubmit, /test, /slurm, $ -; pbsnodes=pbsnodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_walltime=pbs_walltime, /pbs_batch, /riemann, /ember, /kingspeak] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; platenums - Plate numbers to reduce; default to '*' -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; run2d - Optional override value for the environment variable $RUN2D -; run1d - Optional override value for the environment variable $RUN1D -; platestart - Starting plate number. -; plateend - Ending plate number. -; mjd - MJD dates to reduce; default to all. -; Select based upon the MJD of the combine plan file, and -; reduce data from all nights needed for that combined plate+MJD. -; mjstart - Starting MJD dates to reduce. -; mjend - Ending MJD dates to reduce. -; upsvers2d - If set, then do a "module switch idlspec2d idlspec2d$UPSVERS2D" on the -; remote machine before executing Spectro-2D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; upsvers1d - If set, then do a "module switch idlspec2d idlspec2d$UPSVERS2D" on the -; remote machine before executing Spectro-1D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; upsversutils - If set, then do a "module switch idlutils idlutils/$IDLUTILS" on the -; remote machine. -; scratchdir - If set, then treat this as topdir until the computation is complete -; zcode - If set, run Zcode in auto mode. -; galaxy - If set, run Galaxy (Granada, Portsmouth, Wisconsin) Suite of Products. -; upsversgalaxy - If set, then do a "module switch galaxy galaxy/$GALAXY" on the -; remote machine. -; boss_galaxy_redux - Optional override value for the environment variable $BOSS_GALAXY_REDUX, -; boss_galaxy_scratch - Optional override value for the environment variable $GALAXY_SCRATCH_DIR. -; pbsdir - Optional override value for the environment variable $PBS_SCRATCH_DIR. -; verbose - If set, then add "set -o verbose" for easier debugging. -; queue - If set, sets the submit queue. -; qos - If set, sets the submit qos. -; ebossvers - If set, switch to this version of the eboss module -; daily - If set, switch to the daily module (overrides ebossvers) -; skip2d - If set, then skip the Spectro-2D reductions. -; skip_wisconsin_pca - If galaxy set and if not set [default], then run wisconsin_pca code -; skip_granada_fsps - If galaxy set and if not set [default], then run granada_fsps code -; skip_portsmouth_stellarmass - If galaxy set and if not set [default], then run portsmouth_stellarmass -; skip_portsmouth_emlinekin - If galaxy set and if not set [default], then run portsmouth_emlinekin -; clobber - If set, then reduce all specified plates. The default is -; to not reduce plates where the script file already exists. -; pbs_batch - If set, collect the pbs_nodes into an PBS array -; pbs_nodes - If set, collect the pbs qsub commands into pbs_nodes script files -; in order to run on clusters without node sharing (ie Utah). -; default to node sharing, and keep the pbs qsub commands in the -; individual plate-mjd SCRIPT files. -; pbs_ppn - If set, use #PBS -l nodes=1:ppn=pbs_ppn, otherwise -; default to #PBS -l nodes=1 -; pbs_a - If set, use #PBS -A pbs_a, otherwise -; default to none -; pbs_walltime - If set, use #PBS -l walltime=pbs_walltime, otherwise -; default to none -; ember - If set, then setup the defaults for the ember cluster at the University of Utah: -; pbs_nodes = 12 (for 12 nodes, without node sharing) -; pbs_ppn = 12 (12 processors per node) -; pbs_a = 'bolton-em' (Bolton's account, limited to 12 nodes: ember253-260,377-380) -; pbs_walltime='336:00:00' -; slurm=1 -; kingspeak -If set, then setup the defaults for the kingspeak cluster at the University of Utah: -; pbs_nodes = 27 (for 27 nodes, without node sharing) -; pbs_ppn = 16 (16 processors per node) -; pbs_a = 'sdss-kp' (SDSS account, limited to 27 nodes) -; pbs_walltime='336:00:00' -; slurm=1 -; riemann - If set, then setup the defaults for the riemann cluster at LBL: -; pbs_nodes = 12 (for 12 nodes, without node sharing) -; pbs_ppn = 8 (8 processors per node) -; pbs_walltime='336:00:00' -; slurm=0 -; nosubmit - If set, generate script file but don't submit to queue -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; This is currently written to batch all Spectro-2D and Spectro-1D -; reductions, without the option of doing only one or the other. -; -; Script files are generated for partial reductions of a plate, -; although those jobs are not submitted. It would be less confusing -; to not make those script files. -; -; REVISION HISTORY: -; 17-Jan-2010 Written by D. Schlegel, LBL -; 01-Jan-2011 Adapted from batchpbs by Joel R. Brownstein, University of Utah, -; to generalize to cluster computers that do not have pbs node sharing -; by relocating the PBS commands to bundled script files, -; in general via the keywords pbs_nodes, pbs_ppn, pbs_a -; and with LBL defaults preset via the keyword riemann. -; and with University of Utah defaults preset via the keyword ember or kingspeak. -; 02-Apr-2015 Modified by Joel R. Brownstein, University of Utah, in order to refactor the -; #PBS directives into a method (uubatchpbs_directives) in order to add a keyword -; to switch directives to #SBATCH for slurm (Simple Linux Utility for Resource Management). -; 05-Sep-2015 6-digit plate number armaggedon fixed by Julian Bautista, University of Utah -; 30-Jun-2020 Corrected printed file names by Sean Morrison -;- -;------------------------------------------------------------------------------ - -pro uubatchpbs_directives, pbs_batch_lun=pbs_batch_lun, slurm=slurm, pbs_dir=pbs_dir, pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_mem_per_cpu=pbs_mem_per_cpu, pbs_a=pbs_a, pbs_walltime=pbs_walltime, qos=qos, batch_array=batch_array,pbs_cpus=pbs_cpus,pbs_share=pbs_share, nplate=nplate, full_run=full_run - - if keyword_set(slurm) then begin - printf, pbs_batch_lun, '#!/bin/bash' - printf, pbs_batch_lun, '# Auto-generated by uubatchpbs.pro '+systime() - if keyword_set(pbs_a) then begin - account = pbs_a - if keyword_set(qos) then account = account + strtrim((qos eq 'sdss-fast') ? '-fast' : qos,2) - printf, pbs_batch_lun, '#SBATCH --account='+account - if keyword_set(pbs_share) then begin - temp_strin=strsplit(pbs_a, /EXTRACT, '-') - partition = temp_strin[0]+'-shared-'+temp_strin[1] - endif else begin - partition = pbs_a - endelse - printf, pbs_batch_lun, '#SBATCH --partition='+partition - endif - printf, pbs_batch_lun, '#SBATCH --nodes=1' - if keyword_set(pbs_share) then begin - if keyword_set(pbs_ppn) then printf, pbs_batch_lun, '#SBATCH --ntasks='+strtrim(min([nplate,pbs_ppn]),2) - endif else begin - if keyword_set(pbs_ppn) then printf, pbs_batch_lun, '#SBATCH --ntasks='+strtrim(pbs_ppn,2) - endelse - if keyword_set(pbs_mem_per_cpu) then printf, pbs_batch_lun, '#SBATCH --mem-per-cpu='+strtrim(pbs_mem_per_cpu,2) - ;printf, pbs_batch_lun, '#SBATCH --job-name=uubatch' - printf, pbs_batch_lun, '#SBATCH --job-name=uubatch' - if keyword_set(pbs_walltime) then printf, pbs_batch_lun, '#SBATCH --time='+pbs_walltime - if keyword_set(batch_array) then begin - printf, pbs_batch_lun, '#SBATCH --array=1-'+strtrim(pbs_nodes,2) - printf, pbs_batch_lun, '#SBATCH --output=uubatch_%A[%a].out' - printf, pbs_batch_lun, '#SBATCH --err=uubatch_%A[%a].err' - endif else begin - printf, pbs_batch_lun, '#SBATCH --output=uubatch_%j.out' - printf, pbs_batch_lun, '#SBATCH --err=uubatch_%j.err' - if keyword_set(full_run) then begin - printf, pbs_batch_lun, 'export OMP_NUM_THREADS=1' - printf, pbs_batch_lun, 'export OPENBLAS_NUM_THREADS=1' - printf, pbs_batch_lun, 'export MKL_NUM_THREADS=1' - printf, pbs_batch_lun, 'export VECLIB_MAXIMUM_THREADS=1' - printf, pbs_batch_lun, 'export NUMEXPR_NUM_THREADS=1' - printf, pbs_batch_lun, 'export TPOOL_NTHREADS = 1' - endif - endelse - printf, pbs_batch_lun, 'umask 0027' - if (keyword_set(daily)) then printf, pbs_batch_lun, 'module switch eboss eboss/daily' $ - else if (keyword_set(ebossvers)) then printf, pbs_batch_lun, 'module switch eboss eboss/'+strtrim(ebossvers,2) - if keyword_set(riemann) and keyword_set(galaxy) and not keyword_set(skip_portsmouth_stellarmass) then printf, pbs_batch_lun, 'source /home/boss/.intel64' - if keyword_set(batch_array) then begin - printf, pbs_batch_lun, 'SBATCH_NODE=$( printf "%02d\n" "$SLURM_ARRAY_TASK_ID" )' - printf, pbs_batch_lun, 'source '+pbs_dir+'node${SBATCH_NODE}.pbs' - endif - endif else begin - printf, pbs_batch_lun, '#!/bin/bash' - printf, pbs_batch_lun, '# Auto-generated by uubatchpbs.pro '+systime() - if keyword_set(pbs_a) then printf, pbs_batch_lun, '#PBS -A '+pbs_a - if keyword_set(pbs_walltime) then printf, pbs_batch_lun, '#PBS -l walltime='+pbs_walltime - printf, pbs_batch_lun, '#PBS -W umask=0027' - printf, pbs_batch_lun, '#PBS -V' - printf, pbs_batch_lun, '#PBS -j oe' - printf, pbs_batch_lun, '#PBS -t 1-'+strtrim(pbs_nodes,2) - printf, pbs_batch_lun, '#PBS -N uubatch' - if (keyword_set(queue)) then printf, pbs_batch_lun, '#PBS -q ' + queue - if (keyword_set(qos)) then printf, pbs_batch_lun, '#PBS -l qos=' + qos - if keyword_set(pbs_ppn) then printf, pbs_batch_lun, '#PBS -l nodes=1:ppn='+strtrim(pbs_ppn,2) $ - else printf, pbs_batch_lun, '#PBS -l nodes=1' - if (keyword_set(daily)) then printf, pbs_batch_lun, 'module switch eboss eboss/daily' $ - else if (keyword_set(ebossvers)) then printf, pbs_batch_lun, 'module switch eboss eboss/'+strtrim(ebossvers,2) - if keyword_set(riemann) and keyword_set(galaxy) and not keyword_set(skip_portsmouth_stellarmass) then printf, pbs_batch_lun, 'source /home/boss/.intel64' - if keyword_set(batch_array) then begin - printf, pbs_batch_lun, 'PBS_JOBID=$( printf "%02d\n" "$PBS_ARRAYID" )' - printf, pbs_batch_lun, 'source '+pbs_dir+'node${PBS_JOBID}.pbs' - endif - endelse -end - -;------------------------------------------------------------------------------ - -pro trim_keywords, keywords - if not strmatch(strmid(keywords,keywords.LastIndexOf(','),strlen(keywords)-keywords.LastIndexOf(',')),'*[a-z]*') then begin - keywords=strmid(keywords,0,keywords.LastIndexOf(',')) - endif - keywords=keywords -end - -;------------------------------------------------------------------------------ - -pro uubatchpbs_special, platenums1, topdir=topdir1, run2d=run2d1, run1d=run1d1, $ - platestart=platestart, plateend=plateend, $ - mjd=mjd, mjstart=mjstart, mjend=mjend, $ - upsvers2d=upsvers2d, upsvers1d=upsvers1d, upsversutils=upsversutils, $ - rawdata_dir=rawdata_dir, slurm=slurm, $ - boss_spectro_redux=boss_spectro_redux, scratchdir=scratchdir, $ - zcode=zcode, galaxy=galaxy, upsversgalaxy=upsversgalaxy, pbsdir=pbsdir, $ - boss_galaxy_redux=boss_galaxy_redux, boss_galaxy_scratch=boss_galaxy_scratch, $ - verbose=verbose, queue=queue, qos=qos, ebossvers=ebossvers, daily=daily, skip2d=skip2d, clobber=clobber, $ - nosubmit=nosubmit, test=test, $ - skip_granada_fsps=skip_granada_fsps, skip_portsmouth_stellarmass=skip_portsmouth_stellarmass, $ - skip_portsmouth_emlinekin=skip_portsmouth_emlinekin, skip_wisconsin_pca=skip_wisconsin_pca, $ - pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_batch=pbs_batch, MWM_fluxer=MWM_fluxer, $ - noxcsao=noxcsao, $ - pbs_walltime=pbs_walltime, lco=lco, plate_s=plate_s, legacy=legacy, full_run=full_run, _EXTRA=Extra -;, riemann=riemann, ember=ember, kingspeak=kingspeak - - - if (size(platenums1,/tname) EQ 'STRING') then platenums = platenums1 $ - else if (keyword_set(platenums1)) then $ - platenums = plate_to_string(platenums1) $ - else platenums = '*' - - ;---------- - ; Determine the top-level of the output directory tree - if keyword_set(lco) then begin - obsdir='LCO' - endif else begin - obsdir='APO' - endelse - obsdir='';coment this line for the final version HJIM - if (keyword_set(topdir1)) then topdir = topdir1 $ - else begin - topdir = getenv('BOSS_SPECTRO_REDUX') - ;topdir=concat_dir(topdir, obsdir) - if strpos(topdir,'/',strlen(topdir)-1) lt 0 then topdir+='/' - if keyword_set(test) and not (strlen(topdir)-rstrpos(dir,'/test/') eq strlen('/test/')) then topdir=djs_filepath('',root_dir=topdir, subdir='test') - endelse - if strpos(topdir,'/',strlen(topdir)-1) lt 0 then topdir+='/' - splog, 'Setting TOPDIR=', topdir - - - if keyword_set(galaxy) then begin - if (keyword_set(boss_galaxy_redux)) then boss_galaxy_redux = strtrim(boss_galaxy_redux,2) else begin - boss_galaxy_redux = getenv('BOSS_GALAXY_REDUX') - if strpos(boss_galaxy_redux,'/',strlen(boss_galaxy_redux)-1) lt 0 then boss_galaxy_redux+='/' - if keyword_set(test) and not (strlen(boss_galaxy_redux)-rstrpos(boss_galaxy_redux,'/test/') eq strlen('/test/')) then boss_galaxy_redux=djs_filepath('',root_dir=boss_galaxy_redux, subdir='test') - endelse - if strpos(boss_galaxy_redux,'/',strlen(boss_galaxy_redux)-1) lt 0 then boss_galaxy_redux+='/' - splog, 'Setting BOSS_GALAXY_REDUX=', boss_galaxy_redux - - if (keyword_set(boss_galaxy_scratch)) then boss_galaxy_scratch = strtrim(boss_galaxy_scratch,2) else begin - boss_galaxy_scratch = getenv('GALAXY_SCRATCH_DIR') - if strpos(boss_galaxy_scratch,'/',strlen(boss_galaxy_scratch)-1) lt 0 then boss_galaxy_scratch+='/' - if keyword_set(test) and not (strlen(boss_galaxy_scratch)-rstrpos(boss_galaxy_scratch,'/test/') eq strlen('/test/')) then boss_galaxy_scratch=djs_filepath('',root_dir=boss_galaxy_scratch, subdir='test') - endelse - if strpos(boss_galaxy_scratch,'/',strlen(boss_galaxy_scratch)-1) lt 0 then boss_galaxy_scratch+='/' - splog, 'Setting GALAXY_SCRATCH_DIR=', boss_galaxy_scratch - endif - - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - splog, 'Setting RUN1D=', run1d - if (keyword_set(upsvers1d)) then splog, 'Setting IDLSPEC2D=', upsvers1d $ - else if (keyword_set(upsvers2d)) then splog, 'Setting IDLSPEC2D=', upsvers2d - if (keyword_set(upsversutils)) then splog, 'Setting IDLUTILS=', upsversutils - if (keyword_set(upsversgalaxy)) then splog, 'Setting GALAXY=', upsversgalaxy - - if (keyword_set(pbsdir)) then pbsdir = strtrim(pbsdir,2) else begin - ;pbsdir = getenv('PBS_SCRATCH_DIR') - pbsdir = getenv('SLURM_SCRATCH_DIR') - if strpos(pbsdir,'/',strlen(pbsdir)-1) lt 0 then pbsdir+='/' - if keyword_set(test) and not (strlen(pbsdir)-rstrpos(pbsdir,'/test/') eq strlen('/test/')) then pbsdir=djs_filepath('',root_dir=pbsdir, subdir='test') - endelse - if strpos(pbsdir,'/',strlen(pbsdir)-1) lt 0 then pbsdir+='/' - splog, 'Setting PBS_SCRATCH_DIR=', pbsdir - - topdir2d = djs_filepath('', root_dir=topdir, subdir=run2d) - - if (keyword_set(run1d)) then begin - run1dstr = ', run1d="'+run1d+'"' - run1dstr_py = '--run1d "'+run1d+'"' - endif else begin - run1dstr = '' - run1dstr_py = '' - endelse - if (keyword_set(run2d)) then run2dstr = ',run2d="'+run2d+'"' $ - else run2dstr = '' - - ;if keyword_set(riemann) then begin - ; if not keyword_set(pbs_nodes) then pbs_nodes=28 - ; if not keyword_set(pbs_ppn) then pbs_ppn=8 - ; if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - ; slurm = 1 - ;endif else if keyword_set(ember) then begin - ; if not keyword_set(pbs_nodes) then pbs_nodes=12 - ; if not keyword_set(pbs_ppn) then pbs_ppn=12 - ; if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - ; if not keyword_set(pbs_a) then pbs_a = 'bolton-em' - ; slurm = 1 - ;endif else if keyword_set(kingspeak) then begin - ; if not keyword_set(pbs_nodes) then pbs_nodes=getenv('SLURM_NODES') - ; if not keyword_set(pbs_ppn) then pbs_ppn=getenv('SLURM_PPN') - ; if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - ; if not keyword_set(pbs_a) then pbs_a = getenv('SLURM_ALLOC') - ; slurm = 1 - pbs_share=0 - if keyword_set(slurm) then begin -; if not keyword_set(pbs_nodes) then pbs_nodes=getenv('SLURM_NODES') - if not keyword_set(pbs_nodes) then pbs_nodes=getenv('SLURM_NODES') - if not keyword_set(pbs_ppn) then pbs_ppn=getenv('SLURM_PPN') - if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - if not keyword_set(pbs_a) then pbs_a = getenv('SLURM_ALLOC') - if not keyword_set(pbs_mem_per_cpu) then pbs_mem_per_cpu=getenv('SLURM_MEM_PER_CPU') - if not keyword_set(pbs_share) then begin - if getenv('SLURM_VERS') eq 'notchpeak' then pbs_share=1 - endif - endif - - sub = keyword_set(slurm) ? 'sbatch' : 'qsub' - - if ((keyword_set(slurm)) and (pbs_nodes gt 1)) then pbs_batch = 1L - - ;---------- - ; Create list of plate directories - ; Limit the list to only those specified by PLATENUMS,PLATESTART,PLATEEND -; if keyword_set(plate_s) then begin -; platedirs = get_mjd_dir(topdir2d, mjd=platenums, mjstart=platestart, $ -; mjend=plateend,/alldirs) -; for ili=0, n_elements(platedirs)-1 do begin -; ;print,strmid(strtrim(platedirs[ili],2),5,1) -; ;print,strmid(strtrim(platedirs[ili],2),4,1) -; if strmid(strtrim(platedirs[ili],2),4,1) ne 'p' then begin -; if strmid(strtrim(platedirs[ili],2),5,1) ne 'p' then begin -; platedirs[ili]='' -; endif -; endif -; endfor -; ii = where(platedirs NE '', ct) -; if (ct EQ 0) then begin -; splog, 'No plate directories found' -; return -; endif else begin -; platedirs = platedirs[ii] -; endelse -; endif else begin - - platedirs = get_mjd_dir(topdir2d, mjd=platenums, mjstart=platestart, $ - mjend=plateend) -; endelse - - if (NOT keyword_set(platedirs[0])) then begin - splog, 'No directories found' - return - endif - ndir = n_elements(platedirs) - - ;---------- - ; In each plate directory, find all 'spPlancomb*.par' files - - for idir=0L, ndir-1L do begin - planfile = findfile( $ - djs_filepath('spPlancomb*.par', root_dir=topdir2d, $ - subdir=platedirs[idir]), count=nfile) - for ifile=0, nfile-1 do begin - temp_plan=strsplit(planfile[ifile],'/',/extract) - temp_mjd=strsplit(temp_plan[n_elements(temp_plan)-1],'-',/extract) - temp_mjd=long(repstr(temp_mjd[n_elements(temp_mjd)-1],'.par')) - if keyword_set(plate_s) and not keyword_set(legacy) then begin - min_mjd=59030;LIMIT the use of single spectrograph after mjd 59005 - max_mjd=70000; Needs to change - endif else begin - if keyword_set(legacy) then begin - min_mjd=0 - max_mjd=59030 - endif else begin - min_mjd=0 - max_mjd=70000 - endelse - endelse - if temp_mjd ge min_mjd and temp_mjd lt max_mjd then begin - ;print,planfile[ifile] - yanny_read, planfile[ifile], hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - ; Decide if THISMJD is within the bounds specified by MJD,MJSTART,MJEND - ;if (mjd_match(thismjd, mjd=mjd, mjstart=mjstart, mjend=mjend)) then begin - if (keyword_set(platelist)) then begin - platelist = [platelist, platedirs[idir]] - planlist = [planlist, planfile[ifile]] - endif else begin - platelist = platedirs[idir] - planlist = planfile[ifile] - endelse - ;endif - endif - endfor - endfor - - nplate = n_elements(planlist) - if (nplate EQ 0) then begin - splog, 'No plan files found' - return - endif - -; Do not use spPlancomb files that only have a subset of the MJDs !!!??? - - ;---------- - ; For each combine plan file, generate the IDL script files - - fullscriptfile = strarr(nplate) - plateid = lonarr(nplate) - mjd_beg = lonarr(nplate) - mjd_end = lonarr(nplate) - - fq = "'" - qbatch = bytarr(nplate) + 1B ; default to reduce all plates - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ; PBS_NODES: - ; Setup the bundled script files if pbs_nodes keyword is set - if keyword_set(pbs_nodes) then begin - - if keyword_set(pbs_ppn) then nodes_required = ceil(float(nplate)/pbs_ppn) else nodes_required = nplate - if nodes_required lt pbs_nodes then pbs_nodes = nodes_required - ncycle = ceil(float(nplate)/(pbs_nodes*pbs_ppn)) - if pbs_share eq 1 then begin - if nplate le pbs_ppn then pbs_ncpus=nplate else pbs_ncpus = pbs_ppn - endif else begin - pbs_ncpus = pbs_ppn - endelse - - home = getenv('HOME') - if (home ne '') then begin - pos0 = strpos(home,'/',/reverse_search)+1 - pos1 = strlen(home) - userID = strmid(home,pos0,pos1-pos0) - endif else userID = 'user' - - date = strtrim(bin_date(),2) - for i=1,n_elements(date)-1 do $ - if (strlen(date[i]) eq 1) then date[i] = '0'+date[i] - - splog, 'Starting for user: ',userID - userID+='_'+string(date, format='(A4,A2,A2,A2,A2,A2)') - - if (pbsdir eq '') then begin - if keyword_set(scratchdir) then pbsdir = djs_filepath('pbs/'+run2d,root_dir=scratchdir) $ - else pbsdir = djs_filepath('pbs/'+run2d,root_dir=topdir) - endif else pbs_dir = djs_filepath('bossredux/'+run2d,root_dir=pbsdir) - pbs_dir = djs_filepath('',root_dir=pbsdir,subdir=run2d+'/'+userID) - if file_test(pbs_dir) then begin - shift_pbs_dir = djs_filepath('',root_dir=pbsdir,subdir=run2d+'/'+userID+'.*') - shift_pbs = file_search(shift_pbs_dir, count=nshift_pbs) - max_shift = -1L - for i=0,nshift_pbs-1 do begin - pos0 = strpos(shift_pbs[i],'/'+userID+'.',/reverse_search)+strlen('/'+userID+'.') - pos1 = strlen(shift_pbs[i]) - next_shift = fix(strmid(shift_pbs[i],pos0,pos1-pos0)) - max_shift = (next_shift gt max_shift) ? next_shift : max_shift - endfor - shift_pbs_dir = djs_filepath('',root_dir=pbsdir,subdir=run2d+'/'+userID+ '.' + strtrim(max_shift+1,2)) - splog, 'Renaming previous PBS directory to: '+shift_pbs_dir - file_move, pbs_dir, shift_pbs_dir - file_mkdir, pbs_dir - endif else file_mkdir, pbs_dir - splog, "cd "+pbs_dir - - pbs_node_index = 'node'+ string(indgen(pbs_nodes)+1,format='(i2.2)') - pbs_node_script = djs_filepath(pbs_node_index+'.pbs',root_dir=pbs_dir) - pbs_node_lun = intarr(pbs_nodes) - if keyword_set(pbs_ppn) then begin - pbs_ppn_index = '_proc'+ string(indgen(pbs_ppn)+1,format='(i2.2)') - pbs_ppn_script = strarr(pbs_nodes,pbs_ppn) - endif - - if keyword_set(pbs_ppn) then splog, 'Preparing to '+sub+' '+strtrim(pbs_nodes,2)+' nodes ('+strtrim(pbs_ppn,2)+' processors per node) for '+strtrim(nplate,2)+' plates.' $ - else splog, 'Preparing to '+sub+' '+strtrim(nplate,2)+' plates.' - - for pbs_node = 0, pbs_nodes-1 do begin - openw, get_lun, pbs_node_script[pbs_node] ,/get_lun - pbs_node_lun[pbs_node] = get_lun - uubatchpbs_directives, pbs_batch_lun=pbs_node_lun[pbs_node], slurm=slurm, pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_walltime=pbs_walltime, qos=qos, $ - pbs_cpus=pbs_cpus, pbs_share=pbs_share,full_run=full_run, nplate=nplate - if keyword_set(pbs_ppn) then begin - pbs_ppn_script[pbs_node,*] = djs_filepath(pbs_node_index[pbs_node] + pbs_ppn_index +'.pbs',root_dir=pbs_dir) - for pbs_proc = 0, pbs_ppn-1 do printf, pbs_node_lun[pbs_node], 'source '+pbs_ppn_script[pbs_node,pbs_proc] + ' &' - endif - close, pbs_node_lun[pbs_node] - endfor - - if keyword_set(pbs_batch) then begin - pbs_batch_script = djs_filepath('uubatch.pbs',root_dir=pbs_dir) - openw, pbs_batch_lun, pbs_batch_script, /get_lun - uubatchpbs_directives, pbs_batch_lun=pbs_batch_lun, slurm=slurm, pbs_dir=pbs_dir, pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_walltime=pbs_walltime, $ - pbs_share=pbs_share, qos=qos, nplate=nplate,full_run=full_run, /batch_array - close, pbs_batch_lun - free_lun, pbs_batch_lun - endif - - endif - pbs_node = 0 - pbs_proc = 0 - pbs_ppn_append = 0 - - if keyword_set(galaxy) then begin - n_redux = 5 - galaxy_redux = replicate({group:'', product:'', file:'', counter:0L, done:0L, skip:0B, keyword:''},n_redux) - galaxy_redux.group = ['granada','portsmouth','portsmouth','utah','wisconsin'] - galaxy_redux.product = ['fsps','stellarmass','emlinekin','bells','pca'] - galaxy_redux.skip = [keyword_set(skip_granada_fsps),keyword_set(skip_portsmouth_stellarmass),keyword_set(skip_portsmouth_emlinekin),keyword_set(skip_utah_bells),keyword_set(skip_wisconsin_pca)] - galaxy_redux.keyword = ['/skip_granada_fsps','/skip_portsmouth_stellarmass','/skip_portsmouth_emlinekin','/skip_utah_bells','/skip_wisconsin_pca'] - endif - - cycle = 0 - for iplate=0, nplate-1 do begin - ; Find all relevant 2D plan files - yanny_read, planlist[iplate], hdr=hdr - planfile2d = yanny_par(hdr, 'planfile2d') - ;print,planfile2d - if keyword_set(plate_s) then begin - plateid[iplate] = yanny_par(hdr, 'plateid') - endif else begin - plateid[iplate] = yanny_par(hdr, 'fieldid') - endelse - mjd = yanny_par(hdr, 'MJD') - platemjd = field_to_string(plateid[iplate]) + '-' $ - + string(mjd,format='(i5.5)') - platefile = 'spField-'+platemjd+'.fits' - - ; Track the beginning and ending MJD going into this plate - mjd_beg[iplate] = min(strmid(planfile2d,14,5)) - mjd_end[iplate] = max(strmid(planfile2d,14,5)) - - ; Split the combine plan file name into a directory and file name - planfilecomb = fileandpath(planlist[iplate], path=pathcomb) - - if keyword_set(scratchdir) then begin - scratchdir2d = djs_filepath(field_to_string(plateid[iplate]), root_dir=scratchdir, subdir=run2d) - scratchdir1d = djs_filepath('', root_dir=scratchdir2d, subdir=run1d) - fullscriptfile[iplate] = djs_filepath('redux-'+platemjd, root_dir=scratchdir2d) - redux_file = djs_filepath('redux-'+platemjd, root_dir=topdir2d,subdir=field_to_string(plateid[iplate])) - endif else begin - fullscriptfile[iplate] = djs_filepath('redux-'+platemjd, root_dir=pathcomb) - redux_file = fullscriptfile[iplate] - endelse - if (keyword_set(skip2d)) then fullscriptfile[iplate] += '-' + run1d - - if keyword_set(clobber) then file_delete, redux_file, /quiet, /allow_nonexistent $ - else qbatch[iplate] = file_test(redux_file) ? 0B : 1B - - if keyword_set(galaxy) then begin - galaxy_outdir = djs_filepath('', root_dir=boss_galaxy_redux, subdir=run2d+'/'+field_to_string(plateid[iplate])+'/'+run1d) - - galaxy_redux_file = strarr(n_redux) - for r=0,n_redux-1 do galaxy_redux_file[r] = djs_filepath(galaxy_redux[r].group + '_' + galaxy_redux[r].product + '_redux-'+ platemjd, root_dir=galaxy_outdir, subdir=galaxy_redux[r].group + '/' + galaxy_redux[r].product) - - keywords = '' - for r=0,n_redux-1 do begin - if keyword_set(galaxy_redux[r].skip) then begin - keywords += ', '+galaxy_redux[r].keyword - if file_test(galaxy_redux_file[r]) then galaxy_redux[r].done += 1L - endif else begin - galaxy_redux[r].counter += 1L - if keyword_set(clobber) then file_delete, galaxy_redux_file[r], /quiet, /allow_nonexistent - endelse - endfor - if keyword_set(test) then keywords += ', /test' - endif - - if (qbatch[iplate]) then begin - - if keyword_set(scratchdir) then begin - - ; Construct run2d and run1d directories for each plate within scratchdir - if (not file_test(scratchdir2d)) then file_mkdir, scratchdir2d - - ; cp the plan files to scratch if needed: - file_copy, planlist[iplate], scratchdir2d, /over - planfile2d_source = file_search(djs_filepath(planfile2d,root_dir=topdir2d,subdir=field_to_string(plateid[iplate])),count=has_plan2d) - if keyword_set(has_plan2d) then file_copy, planfile2d_source, scratchdir2d, /over - endif - - openw, olun, fullscriptfile[iplate], /get_lun - printf, olun, '# Auto-generated batch file '+systime() - if not keyword_set(pbs_nodes) then begin - if keyword_set(pbs_ppn) then printf, olun, '#PBS -l nodes=1:ppn='+strtrim(pbs_ppn,2) $ - else printf, olun, '#PBS -l nodes=1' - if keyword_set(pbs_a) then printf, olun, '#PBS -A '+pbs_a - if keyword_set(pbs_walltime) then printf, olun, '#PBS -l walltime='+pbs_walltime - printf, olun, '#PBS -W umask=0027' - printf, olun, '#PBS -V' - printf, olun, '#PBS -j oe' - ; set queue if asked - if (keyword_set(queue)) then printf, olun, '#PBS -q ' + queue - printf, olun, 'cd $PBS_O_WORKDIR' - endif else begin - if keyword_set(scratchdir) then printf, olun, 'cd '+scratchdir2d $ - else printf, olun, 'cd '+pathcomb - endelse - - ; Define the observatory data - if (keyword_set(lco)) then begin - printf, olun, 'export BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_S' - endif else begin - printf, olun, 'export BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_N' - endelse - ; Override environment variables if requested - if (keyword_set(rawdata_dir)) then begin - printf, olun, 'export BOSS_SPECTRO_DATA='+rawdata_dir - endif - if (keyword_set(boss_spectro_redux)) then begin - printf, olun, 'export BOSS_SPECTRO_REDUX='+boss_spectro_redux - endif - if (keyword_set(run2d)) then begin - printf, olun, 'export RUN2D='+run2d - endif - if (keyword_set(run1d)) then begin - printf, olun, 'export RUN1D='+run1d - endif - if keyword_set(verbose) then begin - printf, olun, '' - printf, olun, '#- Echo commands to make debugging easier' - printf, olun, 'set -o verbose' - printf, olun, '' - printf, olun, '#- The real work' - endif - - ; Delete old files in clobber keyword is set - Added by TH 5 Aug 2015 - if keyword_set(clobber) then begin - file_delete, 'spec2d-'+platemjd+'.started', /quiet, /allow_nonexistent - file_delete, 'spec2d-'+platemjd+'.done', /quiet, /allow_nonexistent - file_delete, 'spec1d-'+platemjd+'.started', /quiet, /allow_nonexistent - file_delete, 'spec1d-'+platemjd+'.done', /quiet, /allow_nonexistent - file_delete, 'redmonster-'+platemjd+'.started', /quiet, /allow_nonexistent - file_delete, 'redmonster-'+platemjd+'.done', /quiet, /allow_nonexistent - endif - - if (keyword_set(skip2d) EQ 0) then begin - ; Set up requested code version - if (keyword_set(upsvers2d)) then $ - printf, olun, 'module switch idlspec2d idlspec2d/'+upsvers2d - if (keyword_set(upsversutils)) then printf, olun, 'module switch idlutils idlutils/'+upsversutils - - ; Create sorted photoPlate files - ;for i=0, n_elements(planfile2d)-1 do begin - ; if keyword_set(plate_s) then begin - ; printf, olun, 'echo '+fq+'sdss_plate_sort,"'+planfile2d[i]+'"'+fq+' | idl' - ; endif else begin - ; printf, olun, 'echo '+fq+'sdss_field_sort,"'+planfile2d[i]+'"'+fq+' | idl' - ; endelse - ;endfor - ; Run Spectro-2D - - ;spreduce2d_keys='' - rm_combine_keys='/xyfit, /loaddesi,' - if keyword_set(plate_s) then begin - if keyword_set(legacy) then begin - ;spreduce2d_keys = spreduce2d_keys +' /legacy,' - rm_combine_keys = rm_combine_keys +' /legacy,' - endif else begin - ;spreduce2d_keys = spreduce2d_keys +' /plates,' - rm_combine_keys = rm_combine_keys +' /plates,' - if keyword_set(MWM_fluxer) then $ - ;spreduce2d_keys = spreduce2d_keys +' /MWM_fluxer,' - rm_combine_keys = rm_combine_keys +' /MWM_fluxer,' - endelse - endif - - ;for i=0, n_elements(planfile2d)-1 do begin - ; pmjd=STRJOIN((STRSPLIT((STRSPLIT(planfile2d[i],'.',/EXTRACT))[0],'-',/extract))[1:*],'-') - ; ;printf, olun, 'touch spec2d-'+platemjd+'.started' ; Added TH 4 Aug 2015 - ; printf, olun, 'touch spec2d-'+pmjd+'.started' ; Added TH 4 Aug 2015 ; updated SM 40 Jun 2020 - ; printf, olun, 'echo '+fq+'spreduce2d, '+spreduce2d_keys+' "'+planfile2d[i]+'"'+fq+' | idl' - ; ;printf, olun, 'touch spec2d-'+platemjd+'.done' ; Added TH 4 Aug 2015 - ; printf, olun, 'touch spec2d-'+pmjd+'.done' ; Added TH 4 Aug 2015 ; updated SM 40 Jun 2020 - ;endfor - ;printf, olun, 'echo '+fq+'spcombine_v5,"'+planfilecomb+'"'+fq+' | idl' - printf, olun, 'touch specombine-'+platemjd+'.started' ; Added HI 21 Nov 2018 - ;printf, olun, 'echo '+fq+'spcombine_v5,"'+planfilecomb+'",minsn2=0.0'+fq+' | idl' - ;printf, olun, 'echo '+fq+'spcombine_v5,"'+planfilecomb+'",minsn2=0.0'+fq+' | idl' - printf, olun, 'echo '+fq+'rm_combine_script,"'+planfilecomb+'", '+rm_combine_keys+' bscore=0.01, run2d="'+run2d+'"'+fq+' | idl' - printf, olun, 'touch specombine-'+platemjd+'.done' ; Added HI 21 Nov 2018 - endif - - ; Run Spectro-1D - if (keyword_set(upsvers1d)) then $ - printf, olun, 'module switch idlspec2d idlspec2d/'+upsvers1d - if (keyword_set(upsversutils)) then printf, olun, 'module switch idlutils idlutils/'+upsversutils - printf, olun, 'touch spec1d-'+platemjd+'.started' ; Added TH 4 Aug 2015 - ;printf, olun, 'echo '+fq+'spreduce1d,"'+platefile+'"'+run1dstr+fq+' | idl' - printf, olun, 'echo '+fq+'spreduce1d_empca,"'+platefile+'"'+run1dstr+fq+' | idl' - if not keyword_set(noxcsao) then printf, olun, 'run_PyXCSAO.py '+platefile+' '+run1dstr_py - printf, olun, 'touch spec1d-'+platemjd+'.done' ; Added TH 4 Aug 2015 - printf, olun, '' - printf, olun, '#- Make final spectra files' - - reformat_keywords='' - conflist_keywords='/create, ' - fieldmerge_keywords='/include_bad, ' - if keyword_set(plate_s) then begin - if keyword_set(legacy) then begin - reformat_keywords=reformat_keywords+'/legacy, ' - conflist_keywords=conflist_keywords+'/legacy, ' - fieldmerge_keywords=fieldmerge_keywords+'/legacy, ' - endif else begin - reformat_keywords=reformat_keywords+'/plates, ' - conflist_keywords=conflist_keywords+'/plates, ' - fieldmerge_keywords=fieldmerge_keywords+'/plates, ' - endelse - endif - - if not keyword_set(noxcsao) then begin - reformat_keywords=reformat_keywords+'/XCSAO, ' - fieldmerge_keywords=fieldmerge_keywords+'/XCSAO, ' - endif - trim_keywords, fieldmerge_keywords - fieldmerge_keywords=fieldmerge_keywords+' '+run2dstr+', programs="*eFEDS*", ' - - trim_keywords, reformat_keywords - trim_keywords, conflist_keywords - trim_keywords, fieldmerge_keywords - - printf, olun, 'echo '+fq+'reformat_spec, "'+platefile+'", '+reformat_keywords +run1dstr+' '+run2dstr+fq+' | idl' - printf, olun, 'echo '+fq+'conflist, '+ conflist_keywords+' '+run1dstr+' '+run2dstr+fq+' | idl' - printf, olun, 'echo '+fq+'fieldmerge, field='+strtrim(string(plateid[iplate]),2)+', mjd='+strtrim(string(mjd),2)+', '+fieldmerge_keywords+fq+' | idl' - printf, olun, 'echo '+fq+'reformat_spec, "'+platefile+'", /lite, '+reformat_keywords +run1dstr+' '+run2dstr+fq+' | idl' - -; if keyword_set(plate_s) then begin -; if keyword_set(legacy) then begin -; printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'", /legacy '+run1dstr+fq+' | idl' -; printf, olun, 'echo '+fq+'conflist, /legacy, /create '+fq+' | idl' -; printf, olun, 'echo '+fq+'fieldmerge, field='+strtrim(string(plateid[iplate]),2)+', mjd='+strtrim(string(mjd),2)+', /legacy, /include_bad '+fq+' | idl' -; printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'", /lite , /legacy '+run1dstr+fq+' | idl' -; endif else begin -; printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'", /plates '+run1dstr+fq+' | idl' -; printf, olun, 'echo '+fq+'conflist, /plates, /create '+fq+' | idl' -; printf, olun, 'echo '+fq+'fieldmerge, field='+strtrim(string(plateid[iplate]),2)+', mjd='+strtrim(string(mjd),2)+', /plates, /include_bad '+fq+' | idl' -; printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'", /lite , /plates '+run1dstr+fq+' | idl' -; endelse -; endif else begin -; printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'"'+run1dstr+fq+' | idl' -; printf, olun, 'echo '+fq+'conflist, /create '+fq+' | idl' -; printf, olun, 'echo '+fq+'fieldmerge, field='+strtrim(string(plateid[iplate]),2)+', mjd='+strtrim(string(mjd),2)+', /include_bad '+fq+' | idl' -; printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'", /lite '+run1dstr+fq+' | idl' -; endelse - - - ; Run Zcode - if (keyword_set(zcode)) then begin - printf, olun, '' - printf, olun, 'module load runz' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a -G -t GAL' - endif - - ; Run Galaxy Suite of Products - if (keyword_set(galaxy)) then begin - if (keyword_set(upsversgalaxy)) then printf, olun, 'module switch galaxy galaxy/'+upsversgalaxy - printf, olun, 'export BOSS_GALAXY_REDUX='+boss_galaxy_redux - printf, olun, 'export GALAXY_SCRATCH_DIR='+boss_galaxy_scratch - skip_keywords = '' - if keyword_set(skip_granada_fsps) then skip_keywords += ', /skip_granada_fsps' - if keyword_set(skip_wisconsin_pca) then skip_keywords += ', /skip_wisconsin_pca' - if keyword_set(skip_portsmouth_stellarmass) then skip_keywords += ', /skip_portsmouth_stellarmass' - if keyword_set(skip_portsmouth_emlinekin) then skip_keywords += ', /skip_portsmouth_emlinekin' - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'galaxy_pipeline,"'+planfile2d[i]+'"'+skip_keywords+fq+' | idl' - endif - - - ; Run reformat_spectra for spec files, full and lite - - - - - - ; splog, "run1d is ", run1d - ; splog, "run2d is ", run2d - - ; Make pretty pictures - ;- post-DR9, no longer supported; use spectrawebapp or plotspec instead - idlcmd = "plate_spec_image, " + field_to_string(plateid[iplate]);string(plateid[iplate],format='(i4.4)') - idlcmd += ", mjd=" + string(mjd,format='(i5.5)') - idlcmd += ", run1d='" + run1d + "'" - idlcmd += ", run2d='" + run2d + "'" - idlcmd += ", /silent" - if keyword_set(plate_s) then begin - if keyword_set(legacy) then begin - idlcmd += ", /legacy" - endif else begin - idlcmd += ", /plates" - endelse - endif - printf, olun, '' - printf, olun, '#- Make pretty pictures' - printf, olun, 'idl -e "' + idlcmd + '"' - - printf, olun, '#- update spAll file' - printf, olun, 'echo '+fq+'fieldmerge, '+fieldmerge_keywords+fq+' | idl' - -; if keyword_set(plate_s) then begin -; if keyword_set(legacy) then begin -; printf, olun, 'echo '+fq+'fieldmerge, /legacy, /include_bad '+fq+' | idl' -; endif else begin -; printf, olun, 'echo '+fq+'fieldmerge, /plates, /include_bad '+fq+' | idl' -; endelse -; endif else begin -; printf, olun, 'echo '+fq+'fieldmerge, /include_bad '+fq+' | idl' -; endelse - - ;printf, olun, '#- Make the healpix links' - ;printf, olun, 'module load sas/main' - ;printf, olun, 'module switch python miniconda' - ;iprintf, olun, 'module load miniconda/3.7.7' - ;printf, olun, 'module load apogee_drp/master' - ;printf, olun, 'module load dlnpyutils/master' - ;printf, olun, 'sas_mwm_healpix --spectro boss --mjd '+strtrim(string(mjd),2)+' --telescope apo25m --drpver '+run2d+' -v' - - ; If using scratchdir, uubatchcp (selected) final reductions to topdir - if (keyword_set(scratchdir)) then begin - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'uubatchcp,"'+planfile2d[i]+'", topdir="'+topdir+'", run2d="'+run2d+'", run1d="'+run1d+'", scratchdir="'+scratchdir+'"'+fq+' | idl' - endif - - close, olun - free_lun, olun - - ;---------- - ; Do not reduce any plan files that are only partial reductions - ; (If we tried, then we would get multiple instances of SPREDUCE2D - ; running on the same data.) - ; Make this decision regardless of the values of CLOBBER. - - indx = where(plateid EQ plateid[iplate] AND mjd_end GT mjd_end[iplate] $ - AND mjd_beg LE mjd_end[iplate], ct) - if (ct GT 0) then qbatch[iplate] = 0B - - ; Run the scriptfile from a bundled PBS script file (node) - ; in the absence of node sharing - if (keyword_set(pbs_nodes)) then begin - script_cmd = (ct GT 0) ? '#skip ' : 'source ' - if not keyword_set(pbs_node) and not keyword_set(pbs_proc) then begin - cycle += 1 - splog, "Preparing node cycle "+string(cycle,format='(i2)')+'/'+strtrim(ncycle,2) - endif - if keyword_set(pbs_ppn) then begin - openw, pbs_ppn_lun, pbs_ppn_script[pbs_node,pbs_proc], append=pbs_ppn_append, /get_lun - printf, pbs_ppn_lun, script_cmd+fullscriptfile[iplate]+' > '+fullscriptfile[iplate]+'.o' $ - + ' 2> '+fullscriptfile[iplate]+'.e' - close, pbs_ppn_lun - free_lun, pbs_ppn_lun - pbs_node += 1 - if pbs_node ge pbs_nodes then begin - pbs_node = 0 - pbs_proc += 1 - if pbs_proc ge pbs_ppn then begin - pbs_proc = 0 - if not pbs_ppn_append then pbs_ppn_append = 1 - endif - endif - endif else begin - openw, pbs_node_lun[pbs_node], pbs_node_script[pbs_node], /append - printf, pbs_node_lun[pbs_node], script_cmd+fullscriptfile[iplate]+' &' - close, pbs_node_lun[pbs_node] - pbs_node += 1 - if pbs_node ge pbs_nodes then pbs_node = 0 - endelse - endif - endif - - endfor - - if keyword_set(pbs_ppn) and not keyword_set(pbs_ppn_append) then begin - pbs_node_i = pbs_node - pbs_proc_i = pbs_proc - for pbs_proc = pbs_proc_i,pbs_ppn-1 do begin - for pbs_node = pbs_node_i,pbs_nodes-1 do begin - openw, pbs_ppn_lun, pbs_ppn_script[pbs_node,pbs_proc], /get_lun - printf, pbs_ppn_lun, "#done" - close, pbs_ppn_lun - free_lun, pbs_ppn_lun - endfor - pbs_node_i = 0 - endfor - endif else print, 'completed' - - ; Close the bundled script files if pbs_nodes keyword is set - if keyword_set(pbs_nodes) then begin - for pbs_node = 0, pbs_nodes-1 do begin - openw, pbs_node_lun[pbs_node], pbs_node_script[pbs_node], /append - printf, pbs_node_lun[pbs_node], 'wait' - printf, pbs_node_lun[pbs_node], 'echo "DONE"' - close, pbs_node_lun[pbs_node] - free_lun, pbs_node_lun[pbs_node] - endfor - endif - - ;---------- - ; Trim the plate list to only those needing reductions - - ibatch = where(qbatch, nbatch) - if (nbatch EQ 0) then begin - splog, 'All plates have been reduced' - return - endif - - if keyword_set(pbs_batch) and keyword_set(galaxy) then begin - galaxy_redux_file = djs_filepath('galaxy_redux.fits',root_dir=pbs_dir) - splog, "CREATE: "+galaxy_redux_file - mwrfits, galaxy_redux, galaxy_redux_file, /create, /silent - endif - - void = where(qbatch eq 1B,n_todo) - void = where(qbatch eq 0B,n_done) - message = string("boss_redux",format='(a22)')+': ' - message += "#BOSS PLATES DONE = " + string(n_done,format='(i4)') + " #BOSS PLATES TO DO = " + string(n_todo,format='(i4)') - if not keyword_set(clobber) then splog, message $ - else splog, message + ". [/clobber]" - if keyword_set(galaxy) then begin - for r=0,n_redux-1 do begin - message = string(strtrim(galaxy_redux[r].group,2) + "_" + strtrim(galaxy_redux[r].product,2),format='(a22)')+': ' - message += "#GALAXY JOBS DONE = " + string(galaxy_redux[r].done,format='(i4)') + " #GALAXY JOBS TO DO = " + string(galaxy_redux[r].counter,format='(i4)') - if not galaxy_redux[r].skip then splog, message $ - else splog, message + ". ["+galaxy_redux[r].keyword+"]" - endfor - endif - - ;---------- - ; Submit jobs to the PBS queue - ;exit - if (not keyword_set(pbs_nodes)) then begin - for i=0L, nbatch-1L do begin - thisfile = fileandpath(fullscriptfile[ibatch[i]], path=thispath) - if (keyword_set(thispath)) then cd, thispath, current=origdir - if keyword_set(nosubmit) then begin - splog, 'Generated '+thisfile+' but not submitting to queue' - endif else begin - splog, sub+' '+thisfile - spawn, sub+' '+thisfile, identifier - splog, strupcase(sub)+'> '+identifier - endelse - endfor - cd, origdir - endif else begin - cd, pbs_dir - if keyword_set(pbs_batch) then begin - if keyword_set(nosubmit) then begin - splog, 'Generated '+pbs_batch_script+' but not submitting to queue' - endif else begin - splog, 'Submitting '+pbs_batch_script - spawn, sub+' '+pbs_batch_script - endelse - endif else begin - for i=0L, pbs_nodes-1 do begin - if keyword_set(nosubmit) then begin - splog, 'Generated '+pbs_node_script[i]+' but not submitting to queue' - endif else begin - splog, 'Submitting '+pbs_node_script[i] - spawn, sub+' '+pbs_node_script[i] - endelse - endfor - endelse - endelse - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/uubatchpbs_special_old.pro b/pro/spec2d/uubatchpbs_special_old.pro deleted file mode 100644 index 79e5bc327..000000000 --- a/pro/spec2d/uubatchpbs_special_old.pro +++ /dev/null @@ -1,935 +0,0 @@ -;+ -; NAME: -; uubatchpbs -; -; PURPOSE: -; Batch process Spectro-2D and Spectro-1D reductions based upon -; already-built plan files. -; ADAPTED FROM: batchpbs.pro -; To function on clusters without node sharing (e.g. University of Utah) -; -; CALLING SEQUENCE: -; uubatchpbs, [ platenums, topdir=, run2d=, run1d=, platestart=, plateend=, $ -; mjd=, mjstart=, mjend=, upsvers2d=, upsvers1d=, upsversutils=, rawdata_dir=, $ -; boss_spectro_redux=, scratchdir=, /zcode, /galaxy, upsversgalaxy=, boss_galaxy_redux=, boss_galaxy_scratch=, $ -; pbsdir=, /verbose, queue=, qos=, ebossvers=ebossvers, /daily, /skip2d, $ -; /skip_granada_fsps, /skip_portsmouth_stellarmass, /skip_portsmouth_emlinekin, /skip_wisconsin_pca, $ -; /clobber, /nosubmit, /test, /slurm, $ -; pbsnodes=pbsnodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_walltime=pbs_walltime, /pbs_batch, /riemann, /ember, /kingspeak] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; platenums - Plate numbers to reduce; default to '*' -; topdir - Optional override value for the environment -; variable $BOSS_SPECTRO_REDUX. -; run2d - Optional override value for the environment variable $RUN2D -; run1d - Optional override value for the environment variable $RUN1D -; platestart - Starting plate number. -; plateend - Ending plate number. -; mjd - MJD dates to reduce; default to all. -; Select based upon the MJD of the combine plan file, and -; reduce data from all nights needed for that combined plate+MJD. -; mjstart - Starting MJD dates to reduce. -; mjend - Ending MJD dates to reduce. -; upsvers2d - If set, then do a "module switch idlspec2d idlspec2d$UPSVERS2D" on the -; remote machine before executing Spectro-2D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; upsvers1d - If set, then do a "module switch idlspec2d idlspec2d$UPSVERS2D" on the -; remote machine before executing Spectro-1D. This allows -; you to batch jobs using a version other than that which -; is declared current under UPS. -; upsversutils - If set, then do a "module switch idlutils idlutils/$IDLUTILS" on the -; remote machine. -; scratchdir - If set, then treat this as topdir until the computation is complete -; zcode - If set, run Zcode in auto mode. -; galaxy - If set, run Galaxy (Granada, Portsmouth, Wisconsin) Suite of Products. -; upsversgalaxy - If set, then do a "module switch galaxy galaxy/$GALAXY" on the -; remote machine. -; boss_galaxy_redux - Optional override value for the environment variable $BOSS_GALAXY_REDUX, -; boss_galaxy_scratch - Optional override value for the environment variable $GALAXY_SCRATCH_DIR. -; pbsdir - Optional override value for the environment variable $PBS_SCRATCH_DIR. -; verbose - If set, then add "set -o verbose" for easier debugging. -; queue - If set, sets the submit queue. -; qos - If set, sets the submit qos. -; ebossvers - If set, switch to this version of the eboss module -; daily - If set, switch to the daily module (overrides ebossvers) -; skip2d - If set, then skip the Spectro-2D reductions. -; skip_wisconsin_pca - If galaxy set and if not set [default], then run wisconsin_pca code -; skip_granada_fsps - If galaxy set and if not set [default], then run granada_fsps code -; skip_portsmouth_stellarmass - If galaxy set and if not set [default], then run portsmouth_stellarmass -; skip_portsmouth_emlinekin - If galaxy set and if not set [default], then run portsmouth_emlinekin -; clobber - If set, then reduce all specified plates. The default is -; to not reduce plates where the script file already exists. -; pbs_batch - If set, collect the pbs_nodes into an PBS array -; pbs_nodes - If set, collect the pbs qsub commands into pbs_nodes script files -; in order to run on clusters without node sharing (ie Utah). -; default to node sharing, and keep the pbs qsub commands in the -; individual plate-mjd SCRIPT files. -; pbs_ppn - If set, use #PBS -l nodes=1:ppn=pbs_ppn, otherwise -; default to #PBS -l nodes=1 -; pbs_a - If set, use #PBS -A pbs_a, otherwise -; default to none -; pbs_walltime - If set, use #PBS -l walltime=pbs_walltime, otherwise -; default to none -; ember - If set, then setup the defaults for the ember cluster at the University of Utah: -; pbs_nodes = 12 (for 12 nodes, without node sharing) -; pbs_ppn = 12 (12 processors per node) -; pbs_a = 'bolton-em' (Bolton's account, limited to 12 nodes: ember253-260,377-380) -; pbs_walltime='336:00:00' -; slurm=1 -; kingspeak -If set, then setup the defaults for the kingspeak cluster at the University of Utah: -; pbs_nodes = 27 (for 27 nodes, without node sharing) -; pbs_ppn = 16 (16 processors per node) -; pbs_a = 'sdss-kp' (SDSS account, limited to 27 nodes) -; pbs_walltime='336:00:00' -; slurm=1 -; riemann - If set, then setup the defaults for the riemann cluster at LBL: -; pbs_nodes = 12 (for 12 nodes, without node sharing) -; pbs_ppn = 8 (8 processors per node) -; pbs_walltime='336:00:00' -; slurm=0 -; nosubmit - If set, generate script file but don't submit to queue -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; EXAMPLES: -; -; BUGS: -; This is currently written to batch all Spectro-2D and Spectro-1D -; reductions, without the option of doing only one or the other. -; -; Script files are generated for partial reductions of a plate, -; although those jobs are not submitted. It would be less confusing -; to not make those script files. -; -; REVISION HISTORY: -; 17-Jan-2010 Written by D. Schlegel, LBL -; 01-Jan-2011 Adapted from batchpbs by Joel R. Brownstein, University of Utah, -; to generalize to cluster computers that do not have pbs node sharing -; by relocating the PBS commands to bundled script files, -; in general via the keywords pbs_nodes, pbs_ppn, pbs_a -; and with LBL defaults preset via the keyword riemann. -; and with University of Utah defaults preset via the keyword ember or kingspeak. -; 02-Apr-2015 Modified by Joel R. Brownstein, University of Utah, in order to refactor the -; #PBS directives into a method (uubatchpbs_directives) in order to add a keyword -; to switch directives to #SBATCH for slurm (Simple Linux Utility for Resource Management). -; 05-Sep-2015 6-digit plate number armaggedon fixed by Julian Bautista, University of Utah -;- -;------------------------------------------------------------------------------ - -pro uubatchpbs_directives, pbs_batch_lun=pbs_batch_lun, slurm=slurm, pbs_dir=pbs_dir, pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_mem_per_cpu=pbs_mem_per_cpu, pbs_a=pbs_a, pbs_walltime=pbs_walltime, qos=qos, batch_array=batch_array,pbs_cpus=pbs_cpus,pbs_share=pbs_share, nplate=nplate, full_run=full_run - - if keyword_set(slurm) then begin - printf, pbs_batch_lun, '#!/bin/bash' - printf, pbs_batch_lun, '# Auto-generated by uubatchpbs.pro '+systime() - if keyword_set(pbs_a) then begin - account = pbs_a - if keyword_set(qos) then account = account + strtrim((qos eq 'sdss-fast') ? '-fast' : qos,2) - printf, pbs_batch_lun, '#SBATCH --account='+account - if keyword_set(pbs_share) then begin - temp_strin=strsplit(pbs_a, /EXTRACT, '-') - partition = temp_strin[0]+'-shared-'+temp_strin[1] - endif else begin - partition = pbs_a - endelse - printf, pbs_batch_lun, '#SBATCH --partition='+partition - endif - printf, pbs_batch_lun, '#SBATCH --nodes=1' - if keyword_set(pbs_share) then begin - if keyword_set(pbs_ppn) then printf, pbs_batch_lun, '#SBATCH --ntasks='+strtrim(min([nplate,pbs_ppn]),2) - endif else begin - if keyword_set(pbs_ppn) then printf, pbs_batch_lun, '#SBATCH --ntasks='+strtrim(pbs_ppn,2) - endelse - if keyword_set(pbs_mem_per_cpu) then printf, pbs_batch_lun, '#SBATCH --mem-per-cpu='+strtrim(pbs_mem_per_cpu,2) - ;printf, pbs_batch_lun, '#SBATCH --job-name=uubatch' - printf, pbs_batch_lun, '#SBATCH --job-name=uubatch' - if keyword_set(pbs_walltime) then printf, pbs_batch_lun, '#SBATCH --time='+pbs_walltime - if keyword_set(batch_array) then begin - printf, pbs_batch_lun, '#SBATCH --array=1-'+strtrim(pbs_nodes,2) - printf, pbs_batch_lun, '#SBATCH --output=uubatch_%A[%a].out' - printf, pbs_batch_lun, '#SBATCH --err=uubatch_%A[%a].err' - endif else begin - printf, pbs_batch_lun, '#SBATCH --output=uubatch_%j.out' - printf, pbs_batch_lun, '#SBATCH --err=uubatch_%j.err' - if keyword_set(full_run) then begin - printf, pbs_batch_lun, 'export OMP_NUM_THREADS=1' - printf, pbs_batch_lun, 'export OPENBLAS_NUM_THREADS=1' - printf, pbs_batch_lun, 'export MKL_NUM_THREADS=1' - printf, pbs_batch_lun, 'export VECLIB_MAXIMUM_THREADS=1' - ;printf, pbs_batch_lun, 'export NUMEXPR_NUM_THREADS=1' - ;printf, pbs_batch_lun, 'export TPOOL_NTHREADS=1' - endif - endelse - printf, pbs_batch_lun, 'umask 0027' - if (keyword_set(daily)) then printf, pbs_batch_lun, 'module switch eboss eboss/daily' $ - else if (keyword_set(ebossvers)) then printf, pbs_batch_lun, 'module switch eboss eboss/'+strtrim(ebossvers,2) - if keyword_set(riemann) and keyword_set(galaxy) and not keyword_set(skip_portsmouth_stellarmass) then printf, pbs_batch_lun, 'source /home/boss/.intel64' - if keyword_set(batch_array) then begin - printf, pbs_batch_lun, 'SBATCH_NODE=$( printf "%02d\n" "$SLURM_ARRAY_TASK_ID" )' - printf, pbs_batch_lun, 'source '+pbs_dir+'node${SBATCH_NODE}.pbs' - endif - endif else begin - printf, pbs_batch_lun, '#!/bin/bash' - printf, pbs_batch_lun, '# Auto-generated by uubatchpbs.pro '+systime() - if keyword_set(pbs_a) then printf, pbs_batch_lun, '#PBS -A '+pbs_a - if keyword_set(pbs_walltime) then printf, pbs_batch_lun, '#PBS -l walltime='+pbs_walltime - printf, pbs_batch_lun, '#PBS -W umask=0027' - printf, pbs_batch_lun, '#PBS -V' - printf, pbs_batch_lun, '#PBS -j oe' - printf, pbs_batch_lun, '#PBS -t 1-'+strtrim(pbs_nodes,2) - printf, pbs_batch_lun, '#PBS -N uubatch' - if (keyword_set(queue)) then printf, pbs_batch_lun, '#PBS -q ' + queue - if (keyword_set(qos)) then printf, pbs_batch_lun, '#PBS -l qos=' + qos - if keyword_set(pbs_ppn) then printf, pbs_batch_lun, '#PBS -l nodes=1:ppn='+strtrim(pbs_ppn,2) $ - else printf, pbs_batch_lun, '#PBS -l nodes=1' - if (keyword_set(daily)) then printf, pbs_batch_lun, 'module switch eboss eboss/daily' $ - else if (keyword_set(ebossvers)) then printf, pbs_batch_lun, 'module switch eboss eboss/'+strtrim(ebossvers,2) - if keyword_set(riemann) and keyword_set(galaxy) and not keyword_set(skip_portsmouth_stellarmass) then printf, pbs_batch_lun, 'source /home/boss/.intel64' - if keyword_set(batch_array) then begin - printf, pbs_batch_lun, 'PBS_JOBID=$( printf "%02d\n" "$PBS_ARRAYID" )' - printf, pbs_batch_lun, 'source '+pbs_dir+'node${PBS_JOBID}.pbs' - endif - endelse -end - -;------------------------------------------------------------------------------ - -pro uubatchpbs_special, platenums1, topdir=topdir1, run2d=run2d1, run1d=run1d1, $ - platestart=platestart, plateend=plateend, $ - mjd=mjd, mjstart=mjstart, mjend=mjend, $ - upsvers2d=upsvers2d, upsvers1d=upsvers1d, upsversutils=upsversutils, $ - rawdata_dir=rawdata_dir, slurm=slurm, $ - boss_spectro_redux=boss_spectro_redux, scratchdir=scratchdir, $ - zcode=zcode, galaxy=galaxy, upsversgalaxy=upsversgalaxy, pbsdir=pbsdir, $ - boss_galaxy_redux=boss_galaxy_redux, boss_galaxy_scratch=boss_galaxy_scratch, $ - verbose=verbose, queue=queue, qos=qos, ebossvers=ebossvers, daily=daily, skip2d=skip2d, clobber=clobber, nosubmit=nosubmit, test=test, $ - skip_granada_fsps=skip_granada_fsps, skip_portsmouth_stellarmass=skip_portsmouth_stellarmass, $ - skip_portsmouth_emlinekin=skip_portsmouth_emlinekin, skip_wisconsin_pca=skip_wisconsin_pca, $ - pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_batch=pbs_batch, $ - pbs_walltime=pbs_walltime, lco=lco, plate_s=plate_s, legacy=legacy, full_run=full_run, _EXTRA=Extra -;, riemann=riemann, ember=ember, kingspeak=kingspeak - if (size(platenums1,/tname) EQ 'STRING') then platenums = platenums1 $ - else if (keyword_set(platenums1)) then $ - platenums = plate_to_string(platenums1) $ - else platenums = '*' - - ;---------- - ; Determine the top-level of the output directory tree - if keyword_set(lco) then begin - obsdir='LCO' - endif else begin - obsdir='APO' - endelse - obsdir='';coment this line for the final version HJIM - if (keyword_set(topdir1)) then topdir = topdir1 $ - else begin - topdir = getenv('BOSS_SPECTRO_REDUX') - ;topdir=concat_dir(topdir, obsdir) - if strpos(topdir,'/',strlen(topdir)-1) lt 0 then topdir+='/' - if keyword_set(test) and not (strlen(topdir)-rstrpos(dir,'/test/') eq strlen('/test/')) then topdir=djs_filepath('',root_dir=topdir, subdir='test') - endelse - if strpos(topdir,'/',strlen(topdir)-1) lt 0 then topdir+='/' - splog, 'Setting TOPDIR=', topdir - - if (not keyword_set(scratchdir)) then scratchdir = getenv('BOSS_SCRATCH_DIR') - if (keyword_set(scratchdir)) then begin - if keyword_set(test) then scratchdir=djs_filepath('',root_dir=scratchdir, subdir='test') - if strpos(scratchdir,'/',strlen(scratchdir)-1) lt 0 then scratchdir+='/' - if (scratchdir eq topdir) then scratchdir = 0 $ - else splog, 'Setting SCRATCHDIR=', scratchdir - endif - - if keyword_set(galaxy) then begin - if (keyword_set(boss_galaxy_redux)) then boss_galaxy_redux = strtrim(boss_galaxy_redux,2) else begin - boss_galaxy_redux = getenv('BOSS_GALAXY_REDUX') - if strpos(boss_galaxy_redux,'/',strlen(boss_galaxy_redux)-1) lt 0 then boss_galaxy_redux+='/' - if keyword_set(test) and not (strlen(boss_galaxy_redux)-rstrpos(boss_galaxy_redux,'/test/') eq strlen('/test/')) then boss_galaxy_redux=djs_filepath('',root_dir=boss_galaxy_redux, subdir='test') - endelse - if strpos(boss_galaxy_redux,'/',strlen(boss_galaxy_redux)-1) lt 0 then boss_galaxy_redux+='/' - splog, 'Setting BOSS_GALAXY_REDUX=', boss_galaxy_redux - - if (keyword_set(boss_galaxy_scratch)) then boss_galaxy_scratch = strtrim(boss_galaxy_scratch,2) else begin - boss_galaxy_scratch = getenv('GALAXY_SCRATCH_DIR') - if strpos(boss_galaxy_scratch,'/',strlen(boss_galaxy_scratch)-1) lt 0 then boss_galaxy_scratch+='/' - if keyword_set(test) and not (strlen(boss_galaxy_scratch)-rstrpos(boss_galaxy_scratch,'/test/') eq strlen('/test/')) then boss_galaxy_scratch=djs_filepath('',root_dir=boss_galaxy_scratch, subdir='test') - endelse - if strpos(boss_galaxy_scratch,'/',strlen(boss_galaxy_scratch)-1) lt 0 then boss_galaxy_scratch+='/' - splog, 'Setting GALAXY_SCRATCH_DIR=', boss_galaxy_scratch - endif - - if (keyword_set(run2d1)) then run2d = strtrim(run2d1,2) $ - else run2d = getenv('RUN2D') - splog, 'Setting RUN2D=', run2d - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - splog, 'Setting RUN1D=', run1d - if (keyword_set(upsvers1d)) then splog, 'Setting IDLSPEC2D=', upsvers1d $ - else if (keyword_set(upsvers2d)) then splog, 'Setting IDLSPEC2D=', upsvers2d - if (keyword_set(upsversutils)) then splog, 'Setting IDLUTILS=', upsversutils - if (keyword_set(upsversgalaxy)) then splog, 'Setting GALAXY=', upsversgalaxy - - if (keyword_set(pbsdir)) then pbsdir = strtrim(pbsdir,2) else begin - ;pbsdir = getenv('PBS_SCRATCH_DIR') - pbsdir = getenv('SLURM_SCRATCH_DIR') - if strpos(pbsdir,'/',strlen(pbsdir)-1) lt 0 then pbsdir+='/' - if keyword_set(test) and not (strlen(pbsdir)-rstrpos(pbsdir,'/test/') eq strlen('/test/')) then pbsdir=djs_filepath('',root_dir=pbsdir, subdir='test') - endelse - if strpos(pbsdir,'/',strlen(pbsdir)-1) lt 0 then pbsdir+='/' - splog, 'Setting PBS_SCRATCH_DIR=', pbsdir - - topdir2d = djs_filepath('', root_dir=topdir, subdir=run2d) - - if (keyword_set(run1d)) then run1dstr = ',run1d="'+run1d+'"' $ - else run1dstr = '' - if (keyword_set(run2d)) then run2dstr = ',run2d="'+run2d+'"' $ - else run2dstr = '' - - ;if keyword_set(riemann) then begin - ; if not keyword_set(pbs_nodes) then pbs_nodes=28 - ; if not keyword_set(pbs_ppn) then pbs_ppn=8 - ; if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - ; slurm = 1 - ;endif else if keyword_set(ember) then begin - ; if not keyword_set(pbs_nodes) then pbs_nodes=12 - ; if not keyword_set(pbs_ppn) then pbs_ppn=12 - ; if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - ; if not keyword_set(pbs_a) then pbs_a = 'bolton-em' - ; slurm = 1 - ;endif else if keyword_set(kingspeak) then begin - ; if not keyword_set(pbs_nodes) then pbs_nodes=getenv('SLURM_NODES') - ; if not keyword_set(pbs_ppn) then pbs_ppn=getenv('SLURM_PPN') - ; if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - ; if not keyword_set(pbs_a) then pbs_a = getenv('SLURM_ALLOC') - ; slurm = 1 - pbs_share=0 - if keyword_set(slurm) then begin -; if not keyword_set(pbs_nodes) then pbs_nodes=getenv('SLURM_NODES') - if not keyword_set(pbs_nodes) then pbs_nodes=getenv('SLURM_NODES') - if not keyword_set(pbs_ppn) then pbs_ppn=getenv('SLURM_PPN') - if not keyword_set(pbs_walltime) then pbs_walltime='336:00:00' - if not keyword_set(pbs_a) then pbs_a = getenv('SLURM_ALLOC') - if not keyword_set(pbs_mem_per_cpu) then pbs_mem_per_cpu=getenv('SLURM_MEM_PER_CPU') - if not keyword_set(pbs_share) then begin - if getenv('SLURM_VERS') eq 'notchpeak' then pbs_share=1 - endif - endif - - sub = keyword_set(slurm) ? 'sbatch' : 'qsub' - - if ((keyword_set(slurm)) and (pbs_nodes gt 1)) then pbs_batch = 1L - - ;---------- - ; Create list of plate directories - ; Limit the list to only those specified by PLATENUMS,PLATESTART,PLATEEND - if keyword_set(plate_s) then begin - platedirs = get_mjd_dir(topdir2d, mjd=platenums, mjstart=platestart, $ - mjend=plateend,/alldirs) - for ili=0, n_elements(platedirs)-1 do begin - ;print,strmid(strtrim(platedirs[ili],2),5,1) - ;print,strmid(strtrim(platedirs[ili],2),4,1) - if strmid(strtrim(platedirs[ili],2),4,1) ne 'p' then begin - if strmid(strtrim(platedirs[ili],2),5,1) ne 'p' then begin - platedirs[ili]='' - endif - endif - endfor - ii = where(platedirs NE '', ct) - if (ct EQ 0) then begin - splog, 'No plate directories found' - return - endif else begin - platedirs = platedirs[ii] - endelse - endif else begin - platedirs = get_mjd_dir(topdir2d, mjd=platenums, mjstart=platestart, $ - mjend=plateend) - endelse - - if (NOT keyword_set(platedirs[0])) then begin - splog, 'No directories found' - return - endif - ndir = n_elements(platedirs) - - ;---------- - ; In each plate directory, find all 'spPlancomb*.par' files - - for idir=0L, ndir-1L do begin - planfile = findfile( $ - djs_filepath('spPlancomb*.par', root_dir=topdir2d, $ - subdir=platedirs[idir]), count=nfile) - ;print,planfile - for ifile=0, nfile-1 do begin - temp_plan=strsplit(planfile[ifile],'/',/extract) - temp_mjd=strsplit(temp_plan[n_elements(temp_plan)-1],'-',/extract) - temp_mjd=long(repstr(temp_mjd[n_elements(temp_mjd)-1],'.par')) - ;print,temp_plan - if keyword_set(plate_s) and not keyword_set(legacy) then begin - min_mjd=59030;LIMIT the use of single spectrograph after mjd 59005 - max_mjd=70000; Needs to change - endif else begin - if keyword_set(legacy) then begin - min_mjd=0 - max_mjd=59030 - endif else begin - min_mjd=0 - max_mjd=70000 - endelse - endelse - if temp_mjd ge min_mjd and temp_mjd lt max_mjd then begin - ;print,planfile[ifile] - yanny_read, planfile[ifile], hdr=hdr - thismjd = long(yanny_par(hdr, 'MJD')) - ; Decide if THISMJD is within the bounds specified by MJD,MJSTART,MJEND - ;print,thismjd - ;if (mjd_match(thismjd, mjd=mjd, mjstart=mjstart, mjend=mjend)) then begin - ;print,planfile[ifile] - if (keyword_set(platelist)) then begin - platelist = [platelist, platedirs[idir]] - planlist = [planlist, planfile[ifile]] - endif else begin - platelist = platedirs[idir] - planlist = planfile[ifile] - endelse - ;endif - endif - endfor - endfor - - nplate = n_elements(planlist) - if (nplate EQ 0) then begin - splog, 'No plan files found' - return - endif - -; Do not use spPlancomb files that only have a subset of the MJDs !!!??? - - ;---------- - ; For each combine plan file, generate the IDL script files - - fullscriptfile = strarr(nplate) - plateid = lonarr(nplate) - mjd_beg = lonarr(nplate) - mjd_end = lonarr(nplate) - - fq = "'" - qbatch = bytarr(nplate) + 1B ; default to reduce all plates - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; - ; PBS_NODES: - ; Setup the bundled script files if pbs_nodes keyword is set - if keyword_set(pbs_nodes) then begin - - if keyword_set(pbs_ppn) then nodes_required = ceil(float(nplate)/pbs_ppn) else nodes_required = nplate - if nodes_required lt pbs_nodes then pbs_nodes = nodes_required - ncycle = ceil(float(nplate)/(pbs_nodes*pbs_ppn)) - if pbs_share eq 1 then begin - if nplate le pbs_ppn then pbs_ncpus=nplate else pbs_ncpus = pbs_ppn - endif else begin - pbs_ncpus = pbs_ppn - endelse - - home = getenv('HOME') - if (home ne '') then begin - pos0 = strpos(home,'/',/reverse_search)+1 - pos1 = strlen(home) - userID = strmid(home,pos0,pos1-pos0) - endif else userID = 'user' - - date = strtrim(bin_date(),2) - for i=1,n_elements(date)-1 do $ - if (strlen(date[i]) eq 1) then date[i] = '0'+date[i] - - splog, 'Starting for user: ',userID - userID+='_'+string(date, format='(A4,A2,A2,A2,A2,A2)') - - if (pbsdir eq '') then begin - if keyword_set(scratchdir) then pbsdir = djs_filepath('pbs/'+run2d,root_dir=scratchdir) $ - else pbsdir = djs_filepath('pbs/'+run2d,root_dir=topdir) - endif else pbs_dir = djs_filepath('bossredux/'+run2d,root_dir=pbsdir) - pbs_dir = djs_filepath('',root_dir=pbsdir,subdir=run2d+'/'+userID) - if file_test(pbs_dir) then begin - shift_pbs_dir = djs_filepath('',root_dir=pbsdir,subdir=run2d+'/'+userID+'.*') - shift_pbs = file_search(shift_pbs_dir, count=nshift_pbs) - max_shift = -1L - for i=0,nshift_pbs-1 do begin - pos0 = strpos(shift_pbs[i],'/'+userID+'.',/reverse_search)+strlen('/'+userID+'.') - pos1 = strlen(shift_pbs[i]) - next_shift = fix(strmid(shift_pbs[i],pos0,pos1-pos0)) - max_shift = (next_shift gt max_shift) ? next_shift : max_shift - endfor - shift_pbs_dir = djs_filepath('',root_dir=pbsdir,subdir=run2d+'/'+userID+ '.' + strtrim(max_shift+1,2)) - splog, 'Renaming previous PBS directory to: '+shift_pbs_dir - file_move, pbs_dir, shift_pbs_dir - file_mkdir, pbs_dir - endif else file_mkdir, pbs_dir - splog, "cd "+pbs_dir - - pbs_node_index = 'node'+ string(indgen(pbs_nodes)+1,format='(i2.2)') - pbs_node_script = djs_filepath(pbs_node_index+'.pbs',root_dir=pbs_dir) - pbs_node_lun = intarr(pbs_nodes) - if keyword_set(pbs_ppn) then begin - pbs_ppn_index = '_proc'+ string(indgen(pbs_ppn)+1,format='(i2.2)') - pbs_ppn_script = strarr(pbs_nodes,pbs_ppn) - endif - - if keyword_set(pbs_ppn) then splog, 'Preparing to '+sub+' '+strtrim(pbs_nodes,2)+' nodes ('+strtrim(pbs_ppn,2)+' processors per node) for '+strtrim(nplate,2)+' plates.' $ - else splog, 'Preparing to '+sub+' '+strtrim(nplate,2)+' plates.' - - for pbs_node = 0, pbs_nodes-1 do begin - openw, get_lun, pbs_node_script[pbs_node] ,/get_lun - pbs_node_lun[pbs_node] = get_lun - uubatchpbs_directives, pbs_batch_lun=pbs_node_lun[pbs_node], slurm=slurm, pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_walltime=pbs_walltime, qos=qos, $ - pbs_cpus=pbs_cpus, pbs_share=pbs_share,full_run=full_run, nplate=nplate - if keyword_set(pbs_ppn) then begin - pbs_ppn_script[pbs_node,*] = djs_filepath(pbs_node_index[pbs_node] + pbs_ppn_index +'.pbs',root_dir=pbs_dir) - for pbs_proc = 0, pbs_ppn-1 do printf, pbs_node_lun[pbs_node], 'source '+pbs_ppn_script[pbs_node,pbs_proc] + ' &' - endif - close, pbs_node_lun[pbs_node] - endfor - - if keyword_set(pbs_batch) then begin - pbs_batch_script = djs_filepath('uubatch.pbs',root_dir=pbs_dir) - openw, pbs_batch_lun, pbs_batch_script, /get_lun - uubatchpbs_directives, pbs_batch_lun=pbs_batch_lun, slurm=slurm, pbs_dir=pbs_dir, pbs_nodes=pbs_nodes, pbs_ppn=pbs_ppn, pbs_a=pbs_a, pbs_walltime=pbs_walltime, $ - pbs_share=pbs_share, qos=qos, nplate=nplate,full_run=full_run, /batch_array - close, pbs_batch_lun - free_lun, pbs_batch_lun - endif - - endif - pbs_node = 0 - pbs_proc = 0 - pbs_ppn_append = 0 - - if keyword_set(galaxy) then begin - n_redux = 5 - galaxy_redux = replicate({group:'', product:'', file:'', counter:0L, done:0L, skip:0B, keyword:''},n_redux) - galaxy_redux.group = ['granada','portsmouth','portsmouth','utah','wisconsin'] - galaxy_redux.product = ['fsps','stellarmass','emlinekin','bells','pca'] - galaxy_redux.skip = [keyword_set(skip_granada_fsps),keyword_set(skip_portsmouth_stellarmass),keyword_set(skip_portsmouth_emlinekin),keyword_set(skip_utah_bells),keyword_set(skip_wisconsin_pca)] - galaxy_redux.keyword = ['/skip_granada_fsps','/skip_portsmouth_stellarmass','/skip_portsmouth_emlinekin','/skip_utah_bells','/skip_wisconsin_pca'] - endif - - cycle = 0 - for iplate=0, nplate-1 do begin - ; Find all relevant 2D plan files - yanny_read, planlist[iplate], hdr=hdr - planfile2d = yanny_par(hdr, 'planfile2d') - ;print,planfile2d - if keyword_set(plate_s) then begin - plateid[iplate] = yanny_par(hdr, 'plateid') - endif else begin - plateid[iplate] = yanny_par(hdr, 'fieldid') - endelse - mjd = yanny_par(hdr, 'MJD') - platemjd = field_to_string(plateid[iplate]) + '-' $ - + string(mjd,format='(i5.5)') - platefile = 'spField-'+platemjd+'.fits' - - ; Track the beginning and ending MJD going into this plate - mjd_beg[iplate] = min(strmid(planfile2d,14,5)) - mjd_end[iplate] = max(strmid(planfile2d,14,5)) - - ; Split the combine plan file name into a directory and file name - planfilecomb = fileandpath(planlist[iplate], path=pathcomb) - - if keyword_set(scratchdir) then begin - scratchdir2d = djs_filepath(field_to_string(plateid[iplate]), root_dir=scratchdir, subdir=run2d) - scratchdir1d = djs_filepath('', root_dir=scratchdir2d, subdir=run1d) - fullscriptfile[iplate] = djs_filepath('redux-'+platemjd, root_dir=scratchdir2d) - redux_file = djs_filepath('redux-'+platemjd, root_dir=topdir2d,subdir=field_to_string(plateid[iplate])) - endif else begin - fullscriptfile[iplate] = djs_filepath('redux-'+platemjd, root_dir=pathcomb) - redux_file = fullscriptfile[iplate] - endelse - if (keyword_set(skip2d)) then fullscriptfile[iplate] += '-' + run1d - - if keyword_set(clobber) then file_delete, redux_file, /quiet, /allow_nonexistent $ - else qbatch[iplate] = file_test(redux_file) ? 0B : 1B - - if keyword_set(galaxy) then begin - galaxy_outdir = djs_filepath('', root_dir=boss_galaxy_redux, subdir=run2d+'/'+field_to_string(plateid[iplate])+'/'+run1d) - - galaxy_redux_file = strarr(n_redux) - for r=0,n_redux-1 do galaxy_redux_file[r] = djs_filepath(galaxy_redux[r].group + '_' + galaxy_redux[r].product + '_redux-'+ platemjd, root_dir=galaxy_outdir, subdir=galaxy_redux[r].group + '/' + galaxy_redux[r].product) - - keywords = '' - for r=0,n_redux-1 do begin - if keyword_set(galaxy_redux[r].skip) then begin - keywords += ', '+galaxy_redux[r].keyword - if file_test(galaxy_redux_file[r]) then galaxy_redux[r].done += 1L - endif else begin - galaxy_redux[r].counter += 1L - if keyword_set(clobber) then file_delete, galaxy_redux_file[r], /quiet, /allow_nonexistent - endelse - endfor - if keyword_set(test) then keywords += ', /test' - endif - - if (qbatch[iplate]) then begin - - if keyword_set(scratchdir) then begin - - ; Construct run2d and run1d directories for each plate within scratchdir - if (not file_test(scratchdir2d)) then file_mkdir, scratchdir2d - - ; cp the plan files to scratch if needed: - file_copy, planlist[iplate], scratchdir2d, /over - planfile2d_source = file_search(djs_filepath(planfile2d,root_dir=topdir2d,subdir=field_to_string(plateid[iplate])),count=has_plan2d) - if keyword_set(has_plan2d) then file_copy, planfile2d_source, scratchdir2d, /over - endif - - openw, olun, fullscriptfile[iplate], /get_lun - printf, olun, '# Auto-generated batch file '+systime() - if not keyword_set(pbs_nodes) then begin - if keyword_set(pbs_ppn) then printf, olun, '#PBS -l nodes=1:ppn='+strtrim(pbs_ppn,2) $ - else printf, olun, '#PBS -l nodes=1' - if keyword_set(pbs_a) then printf, olun, '#PBS -A '+pbs_a - if keyword_set(pbs_walltime) then printf, olun, '#PBS -l walltime='+pbs_walltime - printf, olun, '#PBS -W umask=0027' - printf, olun, '#PBS -V' - printf, olun, '#PBS -j oe' - ; set queue if asked - if (keyword_set(queue)) then printf, olun, '#PBS -q ' + queue - printf, olun, 'cd $PBS_O_WORKDIR' - endif else begin - if keyword_set(scratchdir) then printf, olun, 'cd '+scratchdir2d $ - else printf, olun, 'cd '+pathcomb - endelse - - ; Define the observatory data - if (keyword_set(lco)) then begin - printf, olun, 'export BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_S' - endif else begin - printf, olun, 'export BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_N' - endelse - ; Override environment variables if requested - if (keyword_set(rawdata_dir)) then begin - printf, olun, 'export BOSS_SPECTRO_DATA='+rawdata_dir - endif - if (keyword_set(boss_spectro_redux)) then begin - printf, olun, 'export BOSS_SPECTRO_REDUX='+boss_spectro_redux - endif - if (keyword_set(run2d)) then begin - printf, olun, 'export RUN2D='+run2d - endif - if (keyword_set(run1d)) then begin - printf, olun, 'export RUN1D='+run1d - endif - if keyword_set(verbose) then begin - printf, olun, '' - printf, olun, '#- Echo commands to make debugging easier' - printf, olun, 'set -o verbose' - printf, olun, '' - printf, olun, '#- The real work' - endif - - ; Delete old files in clobber keyword is set - Added by TH 5 Aug 2015 - if keyword_set(clobber) then begin - file_delete, 'spec2d-'+platemjd+'.started', /quiet, /allow_nonexistent - file_delete, 'spec2d-'+platemjd+'.done', /quiet, /allow_nonexistent - file_delete, 'spec1d-'+platemjd+'.started', /quiet, /allow_nonexistent - file_delete, 'spec1d-'+platemjd+'.done', /quiet, /allow_nonexistent - file_delete, 'redmonster-'+platemjd+'.started', /quiet, /allow_nonexistent - file_delete, 'redmonster-'+platemjd+'.done', /quiet, /allow_nonexistent - endif - - if (keyword_set(skip2d) EQ 0) then begin - ; Set up requested code version - if (keyword_set(upsvers2d)) then $ - printf, olun, 'module switch idlspec2d idlspec2d/'+upsvers2d - if (keyword_set(upsversutils)) then printf, olun, 'module switch idlutils idlutils/'+upsversutils - - ; Create sorted photoPlate files - ;for i=0, n_elements(planfile2d)-1 do begin - ;if keyword_set(plate_s) then begin - ; printf, olun, 'echo '+fq+'sdss_plate_sort,"'+planfile2d[i]+'"'+fq+' | idl' - ;endif else begin - ; printf, olun, 'echo '+fq+'sdss_field_sort,"'+planfile2d[i]+'"'+fq+' | idl' - ;endelse - ;endfor - ; Run Spectro-2D - ;for i=0, n_elements(planfile2d)-1 do begin - ; printf, olun, 'touch spec2d-'+platemjd+'.started' ; Added TH 4 Aug 2015 - ; if keyword_set(plate_s) then begin - ; if keyword_set(legacy) then begin - ; printf, olun, 'echo '+fq+'spreduce2d,/legacy,"'+planfile2d[i]+'"'+fq+' | idl' - ; endif else begin - ; printf, olun, 'echo '+fq+'spreduce2d,/plates,"'+planfile2d[i]+'"'+fq+' | idl' - ; endelse - ; endif else begin - ; printf, olun, 'echo '+fq+'spreduce2d,"'+planfile2d[i]+'"'+fq+' | idl' - ; endelse - ; printf, olun, 'touch spec2d-'+platemjd+'.done' ; Added TH 4 Aug 2015 - ;endfor - ;printf, olun, 'echo '+fq+'spcombine_v5,"'+planfilecomb+'"'+fq+' | idl' - printf, olun, 'touch specombine-'+platemjd+'.started' ; Added HI 21 Nov 2018 - ;printf, olun, 'echo '+fq+'spcombine_v5,"'+planfilecomb+'",minsn2=0.0'+fq+' | idl' - ;printf, olun, 'echo '+fq+'spcombine_v5,"'+planfilecomb+'",minsn2=0.0'+fq+' | idl' - if keyword_set(plate_s) then begin - if keyword_set(legacy) then begin - printf, olun, 'echo '+fq+'rm_combine_script,"'+planfilecomb+'", /xyfit,/loaddesi,/legacy, bscore=0.01, run2d="'+run2d+'"'+fq+' | idl' - endif else begin - printf, olun, 'echo '+fq+'rm_combine_script,"'+planfilecomb+'", /xyfit,/loaddesi,/plates, bscore=0.01, run2d="'+run2d+'"'+fq+' | idl' - endelse - endif else begin - printf, olun, 'echo '+fq+'rm_combine_script,"'+planfilecomb+'", /xyfit,/loaddesi, bscore=0.01, run2d="'+run2d+'"'+fq+' | idl' - endelse - printf, olun, 'touch specombine-'+platemjd+'.done' ; Added HI 21 Nov 2018 - endif - - ; Run Spectro-1D - if (keyword_set(upsvers1d)) then $ - printf, olun, 'module switch idlspec2d idlspec2d/'+upsvers1d - if (keyword_set(upsversutils)) then printf, olun, 'module switch idlutils idlutils/'+upsversutils - printf, olun, 'touch spec1d-'+platemjd+'.started' ; Added TH 4 Aug 2015 - ;printf, olun, 'echo '+fq+'spreduce1d,"'+platefile+'"'+run1dstr+fq+' | idl' - printf, olun, 'echo '+fq+'spreduce1d_empca,"'+platefile+'"'+run1dstr+fq+' | idl' - printf, olun, 'touch spec1d-'+platemjd+'.done' ; Added TH 4 Aug 2015 - printf, olun, '' - printf, olun, '#- Make final spectra files' - if keyword_set(plate_s) then begin - if keyword_set(legacy) then begin - printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'", /legacy '+run1dstr+' '+run2dstr+fq+' | idl' - printf, olun, 'echo '+fq+'conflist, /legacy, /create '+run1dstr+' '+run2dstr+fq+' | idl' - printf, olun, 'echo '+fq+'fieldmerge, field='+strtrim(string(plateid[iplate]),2)+', mjd='+strtrim(string(mjd),2)+' '+run2dstr+', programs="*eFEDS*", /legacy, /include_bad '+fq+' | idl' - printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'", /lite , /legacy '+run1dstr+' '+run2dstr+fq+' | idl' - endif else begin - printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'", /plates '+run1dstr+' '+run2dstr+fq+' | idl' - printf, olun, 'echo '+fq+'conflist, /plates, /create '+run1dstr+' '+run2dstr+fq+' | idl' - printf, olun, 'echo '+fq+'fieldmerge, field='+strtrim(string(plateid[iplate]),2)+', mjd='+strtrim(string(mjd),2)+' '+run2dstr+', programs="*eFEDS*", /plates, /include_bad '+fq+' | idl' - printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'", /lite , /plates '+run1dstr+' '+run2dstr+fq+' | idl' - endelse - endif else begin - printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'"'+run1dstr+' '+run2dstr+fq+' | idl' - printf, olun, 'echo '+fq+'conflist, /create '+run1dstr+' '+run2dstr+fq+' | idl' - printf, olun, 'echo '+fq+'fieldmerge, field='+strtrim(string(plateid[iplate]),2)+', mjd='+strtrim(string(mjd),2)+' '+run2dstr+', programs="*eFEDS*", /include_bad '+fq+' | idl' - printf, olun, 'echo '+fq+'reformat_spec,"'+platefile+'", /lite '+run1dstr+' '+run2dstr+fq+' | idl' - endelse - - - ; Run Zcode - if (keyword_set(zcode)) then begin - printf, olun, '' - printf, olun, 'module load runz' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a' - printf, olun, 'runz_BOSS.sh ' + platefile +' -a -G -t GAL' - endif - - ; Run Galaxy Suite of Products - if (keyword_set(galaxy)) then begin - if (keyword_set(upsversgalaxy)) then printf, olun, 'module switch galaxy galaxy/'+upsversgalaxy - printf, olun, 'export BOSS_GALAXY_REDUX='+boss_galaxy_redux - printf, olun, 'export GALAXY_SCRATCH_DIR='+boss_galaxy_scratch - skip_keywords = '' - if keyword_set(skip_granada_fsps) then skip_keywords += ', /skip_granada_fsps' - if keyword_set(skip_wisconsin_pca) then skip_keywords += ', /skip_wisconsin_pca' - if keyword_set(skip_portsmouth_stellarmass) then skip_keywords += ', /skip_portsmouth_stellarmass' - if keyword_set(skip_portsmouth_emlinekin) then skip_keywords += ', /skip_portsmouth_emlinekin' - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'galaxy_pipeline,"'+planfile2d[i]+'"'+skip_keywords+fq+' | idl' - endif - - - ; Run reformat_spectra for spec files, full and lite - - - - - - ; splog, "run1d is ", run1d - ; splog, "run2d is ", run2d - - ; Make pretty pictures - ;- post-DR9, no longer supported; use spectrawebapp or plotspec instead - idlcmd = "plate_spec_image, " + field_to_string(plateid[iplate]);string(plateid[iplate],format='(i4.4)') - idlcmd += ", mjd=" + string(mjd,format='(i5.5)') - idlcmd += ", run1d='" + run1d + "'" - idlcmd += ", run2d='" + run2d + "'" - idlcmd += ", /silent" - if keyword_set(plate_s) then begin - if keyword_set(legacy) then begin - idlcmd += ", /legacy" - endif else begin - idlcmd += ", /plates" - endelse - endif - printf, olun, '' - printf, olun, '#- Make pretty pictures' - printf, olun, 'idl -e "' + idlcmd + '"' - - printf, olun, '#- update spAll file' - if keyword_set(plate_s) then begin - if keyword_set(legacy) then begin - printf, olun, 'echo '+fq+'fieldmerge '+run2dstr+', programs="*eFEDS*", /legacy, /include_bad '+fq+' | idl' - endif else begin - printf, olun, 'echo '+fq+'fieldmerge '+run2dstr+', programs="*eFEDS*", /plates, /include_bad '+fq+' | idl' - endelse - endif else begin - printf, olun, 'echo '+fq+'fieldmerge '+run2dstr+', programs="*eFEDS*", /include_bad '+fq+' | idl' - endelse - - ;printf, olun, '#- Make the healpix links' - ;printf, olun, 'module load sas/main' - ;printf, olun, 'module switch python miniconda' - ;iprintf, olun, 'module load miniconda/3.7.7' - ;printf, olun, 'module load apogee_drp/master' - ;printf, olun, 'module load dlnpyutils/master' - ;printf, olun, 'sas_mwm_healpix --spectro boss --mjd '+strtrim(string(mjd),2)+' --telescope apo25m --drpver '+run2d+' -v' - - ; If using scratchdir, uubatchcp (selected) final reductions to topdir - if (keyword_set(scratchdir)) then begin - for i=0, n_elements(planfile2d)-1 do $ - printf, olun, 'echo '+fq+'uubatchcp,"'+planfile2d[i]+'", topdir="'+topdir+'", run2d="'+run2d+'", run1d="'+run1d+'", scratchdir="'+scratchdir+'"'+fq+' | idl' - endif - - close, olun - free_lun, olun - - ;---------- - ; Do not reduce any plan files that are only partial reductions - ; (If we tried, then we would get multiple instances of SPREDUCE2D - ; running on the same data.) - ; Make this decision regardless of the values of CLOBBER. - - indx = where(plateid EQ plateid[iplate] AND mjd_end GT mjd_end[iplate] $ - AND mjd_beg LE mjd_end[iplate], ct) - if (ct GT 0) then qbatch[iplate] = 0B - - ; Run the scriptfile from a bundled PBS script file (node) - ; in the absence of node sharing - if (keyword_set(pbs_nodes)) then begin - script_cmd = (ct GT 0) ? '#skip ' : 'source ' - if not keyword_set(pbs_node) and not keyword_set(pbs_proc) then begin - cycle += 1 - splog, "Preparing node cycle "+string(cycle,format='(i2)')+'/'+strtrim(ncycle,2) - endif - if keyword_set(pbs_ppn) then begin - openw, pbs_ppn_lun, pbs_ppn_script[pbs_node,pbs_proc], append=pbs_ppn_append, /get_lun - printf, pbs_ppn_lun, script_cmd+fullscriptfile[iplate]+' > '+fullscriptfile[iplate]+'.o' $ - + ' 2> '+fullscriptfile[iplate]+'.e' - close, pbs_ppn_lun - free_lun, pbs_ppn_lun - pbs_node += 1 - if pbs_node ge pbs_nodes then begin - pbs_node = 0 - pbs_proc += 1 - if pbs_proc ge pbs_ppn then begin - pbs_proc = 0 - if not pbs_ppn_append then pbs_ppn_append = 1 - endif - endif - endif else begin - openw, pbs_node_lun[pbs_node], pbs_node_script[pbs_node], /append - printf, pbs_node_lun[pbs_node], script_cmd+fullscriptfile[iplate]+' &' - close, pbs_node_lun[pbs_node] - pbs_node += 1 - if pbs_node ge pbs_nodes then pbs_node = 0 - endelse - endif - endif - - endfor - - if keyword_set(pbs_ppn) and not keyword_set(pbs_ppn_append) then begin - pbs_node_i = pbs_node - pbs_proc_i = pbs_proc - for pbs_proc = pbs_proc_i,pbs_ppn-1 do begin - for pbs_node = pbs_node_i,pbs_nodes-1 do begin - openw, pbs_ppn_lun, pbs_ppn_script[pbs_node,pbs_proc], /get_lun - printf, pbs_ppn_lun, "#done" - close, pbs_ppn_lun - free_lun, pbs_ppn_lun - endfor - pbs_node_i = 0 - endfor - endif else print, 'completed' - - ; Close the bundled script files if pbs_nodes keyword is set - if keyword_set(pbs_nodes) then begin - for pbs_node = 0, pbs_nodes-1 do begin - openw, pbs_node_lun[pbs_node], pbs_node_script[pbs_node], /append - printf, pbs_node_lun[pbs_node], 'wait' - printf, pbs_node_lun[pbs_node], 'echo "DONE"' - close, pbs_node_lun[pbs_node] - free_lun, pbs_node_lun[pbs_node] - endfor - endif - - ;---------- - ; Trim the plate list to only those needing reductions - - ibatch = where(qbatch, nbatch) - if (nbatch EQ 0) then begin - splog, 'All plates have been reduced' - return - endif - - if keyword_set(pbs_batch) and keyword_set(galaxy) then begin - galaxy_redux_file = djs_filepath('galaxy_redux.fits',root_dir=pbs_dir) - splog, "CREATE: "+galaxy_redux_file - mwrfits, galaxy_redux, galaxy_redux_file, /create, /silent - endif - - void = where(qbatch eq 1B,n_todo) - void = where(qbatch eq 0B,n_done) - message = string("boss_redux",format='(a22)')+': ' - message += "#BOSS PLATES DONE = " + string(n_done,format='(i4)') + " #BOSS PLATES TO DO = " + string(n_todo,format='(i4)') - if not keyword_set(clobber) then splog, message $ - else splog, message + ". [/clobber]" - if keyword_set(galaxy) then begin - for r=0,n_redux-1 do begin - message = string(strtrim(galaxy_redux[r].group,2) + "_" + strtrim(galaxy_redux[r].product,2),format='(a22)')+': ' - message += "#GALAXY JOBS DONE = " + string(galaxy_redux[r].done,format='(i4)') + " #GALAXY JOBS TO DO = " + string(galaxy_redux[r].counter,format='(i4)') - if not galaxy_redux[r].skip then splog, message $ - else splog, message + ". ["+galaxy_redux[r].keyword+"]" - endfor - endif - - ;---------- - ; Submit jobs to the PBS queue - ;exit - if (not keyword_set(pbs_nodes)) then begin - for i=0L, nbatch-1L do begin - thisfile = fileandpath(fullscriptfile[ibatch[i]], path=thispath) - if (keyword_set(thispath)) then cd, thispath, current=origdir - if keyword_set(nosubmit) then begin - splog, 'Generated '+thisfile+' but not submitting to queue' - endif else begin - splog, sub+' '+thisfile - spawn, sub+' '+thisfile, identifier - splog, strupcase(sub)+'> '+identifier - endelse - endfor - cd, origdir - endif else begin - cd, pbs_dir - if keyword_set(pbs_batch) then begin - if keyword_set(nosubmit) then begin - splog, 'Generated '+pbs_batch_script+' but not submitting to queue' - endif else begin - splog, 'Submitting '+pbs_batch_script - spawn, sub+' '+pbs_batch_script - endelse - endif else begin - for i=0L, pbs_nodes-1 do begin - if keyword_set(nosubmit) then begin - splog, 'Generated '+pbs_node_script[i]+' but not submitting to queue' - endif else begin - splog, 'Submitting '+pbs_node_script[i] - spawn, sub+' '+pbs_node_script[i] - endelse - endfor - endelse - endelse - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/write_sparc.pro b/pro/spec2d/write_sparc.pro index 3f03acb6a..dbdc5e527 100644 --- a/pro/spec2d/write_sparc.pro +++ b/pro/spec2d/write_sparc.pro @@ -15,7 +15,7 @@ pro write_sparc, arcinfoname, iarc, arcstruct, archdr, $ quad = ['LL','LR','UL','UR'] foreach mw,arcstruct[iarc].medwidth, idx do $ sxaddpar, archdr, 'MEDWIDT'+strtrim(idx,2), mw, $ - ' Median spectral dispersion widths in '+quad[idx]+' quadrant' + ' Median spectral dispersion width in '+quad[idx]+' quadrant' foreach mw,arcstruct[iarc].MEDRESOL, idx do $ sxaddpar, archdr, 'MEDREX'+strtrim(idx,2), mw, $ @@ -34,36 +34,18 @@ pro write_sparc, arcinfoname, iarc, arcstruct, archdr, $ sxpar(archdr, 'EXPOSURE'), '.fits') endelse - sxaddpar, archdr, 'EXTNAME', 'flux' - mwrfits, flux, arcinfofile, archdr, /create - - sxaddpar, hdr, 'EXTNAME', 'lambda' - mwrfits, [transpose(lambda), xpeak], arcinfofile - - sxaddpar, hdr, 'EXTNAME', 'wset' - mwrfits, *arcstruct[iarc].wset, arcinfofile - - sxaddpar, hdr, 'EXTNAME', 'fibermask' - mwrfits, *arcstruct[iarc].fibermask, arcinfofile - - sxaddpar, hdr, 'EXTNAME', 'dispset' - mwrfits, *arcstruct[iarc].dispset, arcinfofile - - sxaddpar, hdr, 'EXTNAME', 'reslset' - mwrfits, *arcstruct[iarc].reslset, arcinfofile - - sxaddpar, hdr, 'EXTNAME', 'rejline' - mwrfits, *arcstruct[iarc].rejline, arcinfofile - - sxaddpar, hdr, 'EXTNAME', 'XDIF_TSET' - mwrfits, *arcstruct[iarc].XDIF_TSET, arcinfofile - - sxaddpar, hdr, 'EXTNAME', 'FIBERMASK' - mwrfits, *arcstruct[iarc].FIBERMASK, arcinfofile + mwrfits_named, flux, arcinfofile, hdr = archdr, name = 'FLUX', /create + mwrfits_named, [transpose(lambda), xpeak], arcinfofile, name = 'LAMBDA' + mwrfits_named, *arcstruct[iarc].wset, arcinfofile, name = 'WSET' + mwrfits_named, *arcstruct[iarc].fibermask, arcinfofile, name = 'FIBERMASK' + mwrfits_named, *arcstruct[iarc].dispset, arcinfofile, name = 'DISPSET' + mwrfits_named, *arcstruct[iarc].reslset, arcinfofile, name = 'RESLSET' + mwrfits_named, *arcstruct[iarc].rejline, arcinfofile, name = 'REJLINE' + mwrfits_named, *arcstruct[iarc].XDIF_TSET, arcinfofile, name = 'XDIF_TSET' ;width = fltarr(n_elements(lambda), ntrace) ;width[ilamp, *] = width_final - ;mwrfits, width, arcinfofile ;--- !!!!!!!!!!!!! for debug purposes only + ;mwrfits_named, width, arcinfofile, name='WIDTH' ;--- !!!!!!!!!!!!! for debug purposes only spawn, ['gzip', '-f', arcinfofile], /noshell @@ -71,9 +53,9 @@ pro write_sparc, arcinfoname, iarc, arcstruct, archdr, $ if keyword_set(writearcmodel) then begin arcmodelfile = string(format='(a,i8.8,a)',arcinfoname + $ 'MODELIMG-', sxpar(archdr, 'EXPOSURE'), '.fits') - mwrfits, arcimg, arcmodelfile, /create - mwrfits, arcivar, arcmodelfile - mwrfits, ymodel, arcmodelfile + mwrfits_named, arcimg, arcmodelfile, name= 'ARCIMG', /create + mwrfits_named, arcivar, arcmodelfile, name= 'ARCIVAR' + mwrfits_named, ymodel, arcmodelfile, name= 'YMODEL' spawn, ['gzip', '-f', arcmodelfile], /noshell endif endif diff --git a/pro/spec2d/write_spflat.pro b/pro/spec2d/write_spflat.pro index d0bcf0e4b..01e8ac6eb 100644 --- a/pro/spec2d/write_spflat.pro +++ b/pro/spec2d/write_spflat.pro @@ -31,29 +31,12 @@ pro write_spflat, flatinfoname, iflat, flatstruct, flathdr, $ flatinfofile = string(format='(a,i8.8,a)',flatinfoname, $ sxpar(flathdr, 'EXPOSURE'), '.fits') endelse - sxaddpar, flathdr, 'EXTNAME', 'fflat' - mwrfits, *flatstruct[iflat].fflat, flatinfofile, flathdr, /create - - sxaddpar, hdr, 'EXTNAME', 'tset' - mwrfits, *flatstruct[iflat].tset, flatinfofile, hdr - - sxaddpar, hdr, 'EXTNAME', 'fibermask' - mwrfits, *flatstruct[iflat].fibermask, flatinfofile, hdr - - sxaddpar, hdr, 'EXTNAME', 'widthset' - mwrfits, *flatstruct[iflat].widthset, flatinfofile, hdr - - sxaddpar, hdr, 'EXTNAME', 'superflatset' - mwrfits, *flatstruct[iflat].superflatset, flatinfofile, hdr - - ; sxaddpar, hdr, 'EXTNAME', 'qbad' - ; mwrfits, flatstruct[iflat].qbad, flatinfofile, hdr - - sxaddpar, hdr, 'EXTNAME', 'xsol' - mwrfits, *flatstruct[iflat].xsol, flatinfofile, hdr - - ; sxaddpar, hdr, 'EXTNAME', 'name' - ; mwrfits, flatstruct[iflat].name, flatinfofile, hdr + mwrfits_named, *flatstruct[iflat].fflat, flatinfofile, hdr = flathdr, name='FFLAT', /create + mwrfits_named, *flatstruct[iflat].tset, flatinfofile, name='TSET' + mwrfits_named, *flatstruct[iflat].fibermask, flatinfofile, name='FIBERMASK' + mwrfits_named, *flatstruct[iflat].widthset, flatinfofile, name='WIDTHSET' + mwrfits_named, *flatstruct[iflat].superflatset, flatinfofile, name='SUPERFLATSET' + mwrfits_named, *flatstruct[iflat].xsol, flatinfofile, name='XSOL' spawn, ['gzip', '-f', flatinfofile], /noshell @@ -62,9 +45,9 @@ pro write_spflat, flatinfoname, iflat, flatstruct, flathdr, $ if keyword_set(writeflatmodel) then begin flatmodelfile = string(format='(a,i8.8,a)',flatinfoname + $ 'MODELIMG-', sxpar(flathdr, 'EXPOSURE'), '.fits') - mwrfits, flatimg, flatmodelfile, /create - mwrfits, flativar, flatmodelfile - mwrfits, ymodel + scatter, flatmodelfile + mwrfits_named, flatimg, flatmodelfile, name = 'FLATIMG'/create + mwrfits_named, flativar, flatmodelfile, name = 'FLATIVAR' + mwrfits_named, ymodel + scatter,flatmodelfile, name = 'ymodel + scatter' spawn, ['gzip', '-f', flatmodelfile], /noshell endif endif diff --git a/pro/spec2d/write_uros.pro b/pro/spec2d/write_uros.pro deleted file mode 100644 index 93459fcb9..000000000 --- a/pro/spec2d/write_uros.pro +++ /dev/null @@ -1,290 +0,0 @@ -;+ -; NAME: -; write_uros -; -; PURPOSE: -; Generate ASCII files of individual exposures on spectra for Uros Seljak -; -; CALLING SEQUENCE: -; write_uros, plate, [ fiber, ] mjd= -; -; INPUTS: -; plate - Plate number(s) -; -; REQUIRED KEYWORDS: -; mjd - MJD number(s); if not set, then select the most recent -; data for this plate (largest MJD). -; -; OPTIONAL INPUTS: -; fiber - Fiber number(s), 1-indexed; if not set, or zero, then -; read all fibers for each plate. We assume that there -; are exactly 640 fibers. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; The following file is written for each individual (CCD) spectrum -; of each object: -; spUros-$PLATE-$MJD-$FIBER-$EXPNUM-$CAMERA.fits -; -; In general, there will be (3 exposures) x (2 cameras) = 6 spectra -; for each plate+MJD+fiber combination. -; -; Output the following for each individual spectrum of each object: -; log-Wave : Log10(wavelength [Ang]) -; Flux : Flux in units of flat-fielded electrons -; InverseVar : Inverse variance for the above -; Sky ; Sky -; Pixelmask : Pixel mask -; Dispers : Wavelength dispersion in the **native** pixel scale -; (e.g., relative to the local wavelength spacing) -; Calibfac : Flux-calibration vector for this plate+spectrograph -; Invercorr : Flux-correction vector for this exposure relative -; to the flux-calibrated (smear) exposure -; Flatvec : Flat-field vector, relative to a quartz lamp, combined -; with the atmospheric telluric correction (in the red) -; Rnois : Read noise in electrons (or photons) -; -; The fluxes have already been divided by the fiber-to-fiber flats -; (superfit) and the telluric-correction vector (telluricfactor). -; Convert the fluxes back to photon number as follows: -; Flux_photons = Flux * Flatvec -; Sky_photons = Sky * Flatvec -; InverseVar_photons = InverseVar / Flatvec^2 -; The read noise portion (Rnois) is already in units of electrons, -; or equivalently photons. -; -; Before combining multiple spectra, we re-normalize as follows: -; Flux_ergs = Flux / (Calibfac * Invercorr) -; InverseVar = InverseVar * (Calibfac * Invercorr)^2 * Window -; where Window is a linear apodization of the first 100 pixels -; of each spectrum (the blue/red overlap region, so the red side -; of the blue camera, and the blue side of the red camera). -; Once the flux has been normalized, it is in units of 10^(-17) erg/cm/s/Ang -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; $BOSS_SPECTRO_REDUX/$PLATE/spFrame-$CAMERA-$EXPNUM.fits* -; $BOSS_SPECTRO_REDUX/$PLATE/spFluxcalib-$PLATE-$MJD-$CAMERA.fits -; $BOSS_SPECTRO_REDUX/$PLATE/spFluxcorr-$EXPNUM-$SPECID.fits -; $BOSS_SPECTRO_REDUX/$PLATE/spPlate-$PLATE-$MJD.fits -; -; PROCEDURES CALLED: -; bspline_valu() -; mrdfits() -; readspec -; sxpar() -; traceset2xy -; yanny_free -; yanny_read() -; -; INTERNAL SUPPORT ROUTINES: -; write_uros1 -; -; REVISION HISTORY: -; 14-Jun-2002 Written by David Schlegel, Princeton. -; This is based upon the code in SPCOADD_FRAMES. -;- -;------------------------------------------------------------------------------ -pro write_uros1, plate, fiber, mjd=mjd - - topdir = getenv('BOSS_SPECTRO_REDUX') - if (NOT keyword_set(topdir)) then $ - message, 'Environment variable BOSS_SPECTRO_REDUX must be set!' - - if (fiber LE 320) then specid = 1 $ - else specid = 2 - platestr = string(plate, format='(i4.4)') - - ;---------- - ; Find the names of individual exposures - - readspec, plate, fiber, mjd=mjd, objhdr=objhdr - if (NOT keyword_set(objhdr)) then begin - print, 'WARNING: Object not found ', plate, mjd, fiber - return - endif - - icard = where(strmatch(objhdr, 'EXPID*')) - expspec = long(strmid(objhdr[icard], 12, 1)) - expcams = strmid(objhdr[icard], 11, 2) - expnums = long(strmid(objhdr[icard], 20, 8)) - iuse = where(expspec EQ specid, nuse) - - for ifile=0, nuse-1 do begin - - framefile = string(expcams[iuse[ifile]], expnums[iuse[ifile]], $ - format='("spFrame-",a2,"-",i8.8,".fits*")') - corrfile = string(expnums[iuse[ifile]], expspec[iuse[ifile]], $ - format='("spFluxcorr-",i8.8,"-",i1,".fits*")') - fcalibfile = string(plate,mjd,expcams[iuse[ifile]], $ - format='("spFluxcalib-",i4.4,"-",i5.5,"-",a2,".fits*")') - outfile = string(plate,mjd,fiber,expnums[iuse[ifile]], $ - expcams[iuse[ifile]], $ - format='("spUros-",i4.4,"-",i5.5,"-",i4.4,"-",i8.8,"-",a2,".dat")') - - framefile = (findfile(filepath(framefile, root_dir=topdir, $ - subdir=platestr)))[0] - corrfile = (findfile(filepath(corrfile, root_dir=topdir, $ - subdir=platestr)))[0] - fcalibfile = (findfile(filepath(fcalibfile, root_dir=topdir, $ - subdir=platestr)))[0] - - splog, 'Reading file #', ifile, ': ', framefile - rownum = (fiber-1) MOD 320 - range = [rownum,rownum] - tempflux = mrdfits(framefile, 0, temphdr, range=range) - tempivar = mrdfits(framefile, 1, range=range) - temppixmask = mrdfits(framefile, 2, range=range) - wsetall = mrdfits(framefile, 3) - dispsetall = mrdfits(framefile, 4, range=range) - tempsky = mrdfits(framefile, 6, range=range) - tempflat = mrdfits(framefile, 7, range=range) - temptelluric = mrdfits(framefile, 8, range=range) - if (keyword_set(temptelluric)) then tempflat = tempflat * temptelluric - - ;---------- - ; Trim the wavelength + dispersion structures to only the requested object - - tempwset = create_struct('func', wsetall.func, $ - 'xmin', wsetall.xmin, $ - 'xmax', wsetall.xmax, $ - 'coeff', wsetall.coeff[*,rownum]) - tempdispset = create_struct('func', dispsetall.func, $ - 'xmin', dispsetall.xmin, $ - 'xmax', dispsetall.xmax, $ - 'coeff', dispsetall.coeff[*,rownum]) - - ;---------- - ; Add an additional error term equal to ADDERR of the flux. - - if (keyword_set(adderr)) then begin - gmask = tempivar NE 0 ; =1 for good points - tempivar = 1.0 / ( 1.0/(tempivar + (1-gmask)) $ - + (adderr * (tempflux>0))^2 ) * gmask - endif - - ;---------- - ; Solve for wavelength and lambda-dispersion at each pixel - ; for this object. - - traceset2xy, tempwset, junk, tempwave - - traceset2xy, tempdispset, junk, tempdispersion - - ;---------- - ; Compute spectro-photometric calibration - - calibhdr = headfits(fcalibfile) - cwavemin = sxpar(calibhdr, 'WAVEMIN') - cwavemax = sxpar(calibhdr, 'WAVEMAX') - calibset = mrdfits(fcalibfile, 1) - calibfac = bspline_valu(tempwave, calibset) - - ; Set to bad any pixels whose wavelength is outside the known - ; flux-calibration region. - ibad = where(tempwave LT alog10(cwavemin) OR tempwave GT alog10(cwavemax)) - if (ibad[0] NE -1) then calibfac[ibad] = 0 - - ; Set lower-threshhold on calib-factor - ; This isn't exactly what is done in SPCOADD_FRAMES, - ; since the median is taken over all fibers. - minval = 0.05 * mean(calibfac) - calibfac = calibfac * (calibfac GT minval) - - ;---------- - ; Compute flux-correction factors - - corrall = mrdfits(corrfile, 1) - corrset = create_struct('func', corrall.func, $ - 'xmin', corrall.xmin, $ - 'xmax', corrall.xmax, $ - 'coeff', corrall.coeff[*,rownum]) - traceset2xy, corrset, tempwave, corrimg - invertcorr = 1.0 / corrimg - - ; Set lower-threshhold on calib-factor - ; This isn't exactly what is done in SPCOADD_FRAMES, - ; since the median is taken over all fibers. - medcorr = median(corrimg) - medcorr = medcorr + (medcorr LE 0) ; prevent divide-by-zeros - minval = 0.05 / medcorr - invertcorr = invertcorr * (invertcorr GT minval) - - ;---------- - ; Read the opECalib file to get the gain + read noise - - config_dir = filepath('', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='examples') - ecalibfile = findopfile('opECalib*par', sxpar(temphdr,'MJD'), $ - config_dir, /abort_notfound) - yanny_read, filepath(ecalibfile, root_dir=config_dir), pdata - ecalib = *pdata[0] - yanny_free, pdata - jj = where(ecalib.camrow EQ sxpar(temphdr,'CAMROW') $ - AND ecalib.camcol EQ sxpar(temphdr,'CAMCOL')) - ecalib = ecalib[jj[0]] - if (fiber LE 320) then begin - rdnoise = ecalib.readnoisedn2 * ecalib.gain2 - endif else begin - rdnoise = ecalib.readnoisedn3 * ecalib.gain3 - endelse - - ;---------- - ; Write the output file - - splog, 'Writing file ', outfile - openw, lun, outfile, /get_lun - printf, lun, '#log-Wave Flux InverseVar Sky ' $ - + ' Pixelmask Dispers Calibfac Invercorr Flatvec Rnois' - printf, lun, '#-------- ------------- ------------- -------------' $ - + ' ----------- --------- --------- --------- --------- -----' - for ipix=0, n_elements(tempflux)-1 do $ - printf, lun, tempwave[ipix], tempflux[ipix], tempivar[ipix], $ - tempsky[ipix], temppixmask[ipix], tempdispersion[ipix], $ - calibfac[ipix], invertcorr[ipix], tempflat[ipix], rdnoise, $ - format='(1x,f8.6,1x,e13.6,1x,e13.6,1x,e13.6,1x,i11,1x,f9.4,1x,f9.4,1x,f9.4,f9.4,f6.2)' - close, lun - free_lun, lun - endfor - - return -end -;------------------------------------------------------------------------------ -pro write_uros, plate, fiber, mjd=mjd - - if (n_params() LT 1 OR NOT keyword_set(mjd)) then begin - doc_library, 'write_uros' - return - endif - if (n_elements(plate) NE n_elements(mjd)) then begin - print, 'Number of elements in PLATE and MJD must agree' - return - endif - - if (NOT keyword_set(fiber)) then begin - thisplate = (transpose(plate # replicate(1,640)))[*] - thismjd = (transpose(mjd # replicate(1,640)))[*] - thisfiber = ((lindgen(640)+1) # replicate(1,n_elements(plate)))[*] - endif else begin - if (n_elements(plate) NE n_elements(fiber)) then begin - print, 'Number of elements in PLATE and FIBER must agree' - return - endif - thisplate = plate - thismjd = mjd - thisfiber = fiber - endelse - - for iobj=0, n_elements(plate)-1 do begin - write_uros1, thisplate[iobj], thisfiber[iobj], mjd=thismjd[iobj] - endfor - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/xythrucorr.pro b/pro/spec2d/xythrucorr.pro deleted file mode 100644 index 67677f47d..000000000 --- a/pro/spec2d/xythrucorr.pro +++ /dev/null @@ -1,322 +0,0 @@ -;+ -; NAME: -; xythrucorr -; -; PURPOSE: -; Calculate throughput corrections based upon xy offsets of holes -; relative to calibration reference wavelength -; -; CALLING SEQUENCE: -; xythrucorr, framefile, [outfilename, outdir] -; -; INPUTS: -; framefile - spFrame filename -; -; OPTIONAL INPUTS: -; outfilename - output file name [default spXYthrucorr-{cam}-{expid}.fits] -; outdir - output directory to prepend to output file name -; -; OUTPUTS: -; Writes spXYfluxcorr-{cam}-{expid}.fits with multiplicative xy input -; flux corretion factor, matched to the wavelength grid of the -; input spFrame file. -; -; COMMENTS: -; This has a dependency upon platedesign. -; If SEEING50 is 0.0, then the seeing information has not yet been -; propagated from the guider and the correction will be 1.0 for -; everything. -; -; TODO: -; Some of the calculations are common to a plate and don't need to be -; redone for each exposure. This could be refactored to do all exposures -; for a plate at once. -; -; BUGS: -; This will gzip the output file whether you want that or not -; -; PROCEDURES CALLED: -; plate_center -; plate_ad2xy -; ha_fit -; ha_apply -; yanny_readone -; djs_filepath -; splog -; -; REVISION HISTORY: -; 22-Oct-2014 Written by Daniel Margala (dmargala@uci.edu), UC Irvine. -; 17-Dec-2014 Adapted by Stephen Bailey, LBL for per-exposure files -;- - -pro xythrucorr, framefile, outfilename=outfilename, outdir=outdir, $ - debug=debug, useguide=useguide, mjd =mjd - -if not keyword_set(useguide) then useguide = 0 - -;; Make sure platedesign is setup first -platedesign_dir = getenv('PLATEDESIGN_DIR') -if not keyword_set(platedesign_dir) then begin - message, 'ERROR - xythrucorr requires platedesign to be setup first' -endif - -;HJIM -- change plate by confi -spframe_read, framefile, hdr=hdr, loglam=loglam -plateid = sxpar(hdr, 'CONFID') -mjd = sxpar(hdr, 'MJD') -camname = strtrim(sxpar(hdr, 'CAMERAS')) -fwhm = sxpar(hdr, 'SEEING50') - -;; Determine output filename -if not keyword_set(outfilename) then begin - expnum = sxpar(hdr, 'EXPOSURE') - outfilename = djs_filepath(string(camname, expnum, $ - format='("spXYthrucorr-", a2, "-", i8.8, ".fits")'), root_dir=outdir ) -endif else begin - outfilename = djs_filepath(outfilename, root_dir=outdir) -endelse - -;; If guider data hasn't been propagated yet, fwhm will be 0. -;; Don't crash but also don't write a crazy corretion. -if (fwhm EQ 0.0) then begin - splog, "WARNING - Seeing info not yet in "+framefile - splog, "WARNING - not generating XY throughput corrections" - outputcorr = loglam * 0.0 + 1.0 - mwrfits, outputcorr, outfilename, /create - spawn, ['gzip','-f',outfilename], /noshell - return -endif - -; Calculate the hour angle (ha) at the mid-point of the exposure -ra = sxpar(hdr, 'RADEG') -dec = sxpar(hdr, 'DECDEG') -taimid = 0.5*(sxpar(hdr, 'TAI-BEG') + sxpar(hdr, 'TAI-END')) -jd = 2400000.5D + taimid / (24.D*3600.D) -eq2hor, ra, dec, jd, alt, az, ha, obsname='apo' - -; Assume guiding for 5400 Angstroms light -guideon=5400. -; Assume this is pointing number one and no offset -pointing=1L -offset=0L - -; Set path to directory for the specified plate number -platedir= plate_dir(plateid) - -; Construct path to input plateHoles file, contains fiber positions and other relevant information -holefile= platedir+'/plateHolesSorted-'+strtrim(string(f='(i6.6)',plateid),2)+'.par' -;; splog, 'Opening plateHoles file: '+holefile -check_file_exists, holefile, plateid=plateid - -; Parse contents of input file, -; the input file has a global header and a data entry with multiple fields for each fiber -plateholes = yanny_readone(holefile, hdr=phdr, /anon) -definition= lines2struct(phdr) -default= definition - -; Read design hour angle, temperature -; Temperature is set per plate in the platePlans.par file -design_ha=float(strsplit(definition.ha, /extr)) -temp=float(definition.temp) - -design_platescale_alt=float(definition.design_platescale_alt) -mm_to_arcsec = 3600./design_platescale_alt -fiber_diameter = 2.0 - -; Calculate ra and dec for center of the plate -; The values are accessible through 'racen' and 'deccen' after this -; This is necessary for handling multiple pointing plates (and -; we keep it general for multi-offset plates). -plate_center, definition, default, pointing, offset, $ - racen=racen, deccen=deccen - -if useguide then begin - ; Grab all guide fibers. These targets are used to fit - ; for guiding parameters: rotation, scale, xshift, yshift. - ifit= where(plateholes.HOLETYPE eq 'GUIDE') - guide_ra = plateholes[ifit].target_ra - guide_dec = plateholes[ifit].target_dec - guide_xfocal = plateholes[ifit].xfocal - guide_yfocal = plateholes[ifit].yfocal - guide_lambda_eff = plateholes[ifit].lambda_eff - - - ;; Calculate xtmp, ytmp at the exposure hour angle - plate_ad2xy, definition, default, pointing, offset, guide_ra, guide_dec, $ - guide_lambda_eff, xf=xtmp, yf=ytmp, lst=racen+ha, $ - airtemp=temp - - ;; Fit rotation, scale, shift parameters in guide targets - ha_fit, guide_xfocal, guide_yfocal, xtmp, ytmp, $ - xnew=xtmp2, ynew=ytmp2, rot=rot, scale=scale, $ - xshift=xshift, yshift=yshift - - splog, format='(%"using guide stars - ha, design_ha, rot, scale, xshift, yshift: %f, %f, %f, %f, %f, %f",$)',$ - ha, design_ha[pointing-1L], rot, scale, xshift, yshift - -endif - - - - -; trim to BOSS targets (not guide, not light trap, not center hole...) -plateholes = plateholes[where(plateholes.HOLETYPE eq 'BOSS')] - -; Sort plateholes into the same fiber order as plugmap -plugmapname = getenv('SPECLOG_DIR') + '/' + strtrim(mjd,2) + '/' $ - + sxpar(hdr, 'PLUGFILE') -plugmap = readplugmap(plugmapname, thismjd) - -spherematch, plugmap.ra, plugmap.dec, $ - plateholes.target_ra, plateholes.target_dec, $ - 1./3600, i1, i2, d12 -nfiber = n_elements(plateholes.target_ra) -isort = lonarr(nfiber) -isort[i1] = lindgen(nfiber) - -plateholes = plateholes[i2[isort]] - -; Shorthand: Collect ra/dec/lambda/x/y info for each target -ra= plateholes.target_ra -dec= plateholes.target_dec -lambda= plateholes.lambda_eff ;; e.g., 5400 for LRGs, 4000 for QSOs -xforig= plateholes.xfocal -yforig= plateholes.yfocal - - -; Calculate xfocal and yfocal for this pointing (should be similar -; to xforig/yforig up to round-off) -plate_ad2xy, definition, default, pointing, offset, ra, dec, $ - lambda, xf=xfocal, yf=yfocal, lst=racen+design_ha[pointing-1L], $ - airtemp=temp - -if not useguide then begin - ; Grab all fibers with with lambda_eff at 5400. These targets are used to fit - ; for guiding parameters: rotation, scale, xshift, yshift. - ifit= where(plateholes.lambda_eff eq guideon, nfit) - - ;; Calculate xtmp, ytmp at the exposure hour angle - plate_ad2xy, definition, default, pointing, offset, ra, dec, $ - lambda, xf=xtmp, yf=ytmp, lst=racen+ha, $ - airtemp=temp - - ;; Fit rotation, scale, shift parameters in guide targets - ha_fit, xfocal[ifit], yfocal[ifit], xtmp[ifit], ytmp[ifit], $ - xnew=xtmp2, ynew=ytmp2, rot=rot, scale=scale, $ - xshift=xshift, yshift=yshift - - splog, format='(%"ha, design_ha, rot, scale, xshift, yshift: %f, %f, %f, %f, %f, %f",$)',$ - ha, design_ha[pointing-1L], rot, scale, xshift, yshift -endif - - -;; Trim to science fibers for this camera -if strmid(camname,1,1) EQ 1 then begin - ;ii = where( (plateholes.fiberid GT 0) AND (plateholes.fiberid LE 500), nspec) - ii = where( (plugmap.fiberid GT 0) AND (plugmap.fiberid LE 500), nspec) -endif else begin - ;ii = where( (plateholes.fiberid GT 500) AND (plateholes.fiberid LE 1000), nspec) - ii = where( (plugmap.fiberid GT 500) AND (plugmap.fiberid LE 1000), nspec) -endelse -xfocal = xfocal[ii] -yfocal = yfocal[ii] -ra = ra[ii] -dec = dec[ii] -objtype = plugmap[ii].OBJTYPE - -; DM (2015/01/13): commenting this step since we apply guiding adjustments to -; to target centroids in loop below -;; Apply rotation, scale, shift adjustments (i4000 targets) - ha_apply, xfocal, yfocal, xnew=xfocal_exp, ynew=yfocal_exp, $ - rot=rot, scale=scale, xshift=xshift, yshift=yshift - -;; Calculate xfocal and yfocal at the reference wavelength, where the targets -lambda_ref= replicate(5400., nspec) - -plate_ad2xy, definition, default, pointing, offset, ra, dec, $ - lambda_ref, xf=xfocalref, yf=yfocalref, $ - lst=racen+design_ha[pointing-1L], airtemp=temp - -; DM (2015/01/13): commenting this step since we apply guiding adjustments to -; to target centroids in loop below -;; Apply rotation, scale, shift adjustments (i4000 targets) - ha_apply, xfocalref, yfocalref, xnew=xfocalref_exp, ynew=yfocalref_exp, $ - rot=rot, scale=scale, xshift=xshift, yshift=yshift - -; set up wavelengths to calculate offsets at -nlambda = 71L -lambda_min = 3500. -lambda_max = 10500. -lambda_array = lambda_min+(lambda_max-lambda_min)*(findgen(nlambda)/float(nlambda-1L)) - -;; Create empty arrays to store guiding corrections -;; and position offsets at each wavelength -tpcorr= fltarr(nspec, nlambda) + 1.0 -tpcorr1= fltarr(nspec, nlambda) + 1.0 - -for i=0L, nlambda-1L do begin - new_lambda = replicate(lambda_array[i], nspec) - ;; Calculate xtmp, ytmp at this wavelength for observed hour angle - plate_ad2xy, definition, default, pointing, offset, ra, dec, $ - new_lambda, xf=xtmp, yf=ytmp, $ - lst=racen+ha, airtemp=temp - - ;; Calculate x0, y0 at this wavelength for design hour anle - ;;plate_ad2xy, definition, default, pointing, offset, ra, dec, $ - ;; new_lambda, xf=x0, yf=y0, $ - ;; lst=racen+design_ha[pointing-1L], airtemp=temp - - - - ;; Apply rotation, scale, shift adjustments - ha_apply, xtmp, ytmp, xnew=xnew, ynew=ynew, rot=rot, scale=scale, $ - xshift=xshift, yshift=yshift - - ;; Calculate throughput for this wavelength at the reference hole position (relative to 5400A) - ;ref_offsets = mm_to_arcsec*sqrt((xnew-xfocalref)^2+(ynew-yfocalref)^2) - ref_offsets = mm_to_arcsec*sqrt((xnew-xfocalref_exp)^2+(ynew-yfocalref_exp)^2) - tpref = fiberfraction(fwhm, ref_offsets, fiber_diameter) - - - ;; Calculate throughput for this wavelength at the actual hole position - offsets = mm_to_arcsec*sqrt((xnew-xfocal_exp)^2+(ynew-yfocal_exp)^2) - tp = fiberfraction(fwhm, offsets, fiber_diameter) - - ;; Save throughput correction for this wavelength - tpcorr[*,i] = tpref/tp - tpcorr1[*,i] = replicate(fiberfraction(fwhm, 0, fiber_diameter), nspec)/tp - -endfor - -;; Interpolate to sample wavelengths specific to this exposure -wave = 10^loglam -nwave = (size(loglam, /dim))[0] -outputcorr= fltarr(nwave, nspec) + 1. -outputcorr1= fltarr(nwave, nspec) + 1. -for i=0L,nspec-1L do begin - outputcorr[*,i] = interpol(tpcorr[i,*], lambda_array, wave[*,i]) - if strtrim(objtype[i], 2) NE 'SKY' then $ - outputcorr1[*,i] = interpol(tpcorr1[i,*], lambda_array, wave[*,i]) -endfor - -if keyword_set(debug) then stop - -outhdr = hdr -sxaddpar, outhdr, 'MID_HA', ha -sxaddpar, outhdr, 'DES_HA', design_ha[pointing-1L] -sxaddpar, outhdr, 'DES_PALT', design_platescale_alt -sxaddpar, outhdr, 'TEMP', temp -sxaddpar, outhdr, 'ROT', rot -sxaddpar, outhdr, 'SCALE', scale -sxaddpar, outhdr, 'XSHIFT', xshift -sxaddpar, outhdr, 'ySHIFT', yshift - -;; Write it -splog, 'Writing '+outfilename -mwrfits, outputcorr1, outfilename, outhdr, /create -;mwrfits, outputcorr1, outfilename -;mwrfits, wave, outfilename -spawn, ['gzip','-f',outfilename], /noshell - -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/yanny_to_fits_hdr.pro b/pro/spec2d/yanny_to_fits_hdr.pro deleted file mode 100644 index 66f233c92..000000000 --- a/pro/spec2d/yanny_to_fits_hdr.pro +++ /dev/null @@ -1,41 +0,0 @@ -function yanny_to_fits_hdr, hdr, cartid=cartid - @plugmapkeys.idl - - nhead=n_elements(hdr) - for i=0, nhead-1 do begin - if strmid(hdr[i],0,1) EQ "#" then continue - if strmid(hdr[i],0,8) EQ "EVILSCAN" then continue - key = (str_sep( strtrim(hdr[i],2), ' '))[0] - if strlen(key) eq 0 then continue - if key_match_dict.haskey(key) then begin - matched_key =key_match_dict[key] - val=yanny_par(hdr, key) - if n_elements(val) gt 1 then begin - outval='' - for j =0, n_elements(val)-1 do outval=outval + (yanny_par(hdr, key))[j]+' ' - val=strmid(outval,0,strlen(outval)-1) - endif - sxaddpar, fits_hdr, matched_key, val, ' '+key - endif else begin - if key_match_dict2.haskey(key) then begin - matched_key =key_match_dict2[key] - val=yanny_par(hdr, key) - if n_elements(val) gt 1 then begin - outval='' - for j =0, n_elements(val)-1 do outval=outval + (yanny_par(hdr, key))[j]+' ' - val=strmid(outval,0,strlen(outval)-1) - endif - sxaddpar, fits_hdr, matched_key, val, ' '+key - endif else begin - splog, key+' not saved to fibermap fits header' - continue - endelse - endelse - endfor - if not keyword_set(cartid) then begin - if strtrim(yanny_par(hdr,'observatory'),2) eq 'APO' then begin - sxaddpar, fits_hdr, 'CARTID', 'FPS-N', ' cartridgeId' - endif else sxaddpar, fits_hdr, 'CARTID', 'FPS-S', ' cartridgeId' - endif else sxaddpar, fits_hdr, 'CARTID', cartid, ' cartridgeId - return, fits_hdr -end diff --git a/pro/specdb/README b/pro/specdb/README deleted file mode 100644 index e146a6f21..000000000 --- a/pro/specdb/README +++ /dev/null @@ -1,57 +0,0 @@ - -yanny_read,'evil.par',a -a=*a[0] -a=a[100:104] -;postgres_write,'junk1.dat',a -mysql_write,'junk2.dat',a - ------------------------------------------------------------------------------- - -yanny_read, 'plPlugMapM-0198-51433-01.par', pdata -mysql_write, 'plPlugMapM-0198-51433-01.dat', *pdata[0], table='plug' -yanny_free, pdata - -b = mrdfits('tsObj-51433-0198.fit',1) -mysql_write, 'tsObj-51433-0198.dat', b, table='obj', modifiers='not null' - -a=*pdata[0] -for i=0, n_elements(a)-1 do $ - print, where(a[i].objid[0] EQ b.run AND a[i].objid[1] EQ b.rerun AND $ - a[i].objid[2] EQ b.camcol AND a[i].objid[3] EQ b.field AND $ - a[i].objid[4] EQ b.id) ------------------------------------------------------------------------------- - -/usr/local/mysql/bin/mysql -p evildb < plPlugMapM-0198-51433-01.dat.def -/usr/local/mysql/bin/mysql -p evildb < tsObj-51433-0198.dat.def - -/usr/local/mysql/bin/mysql -p evildb - -select * where plug.objid_3 = 34; - -select plug.objid_3 from plug where plug.objid_3 = 314; - -select run,camcol,rerun,field,id from plug,obj where plug.objid_3 = 314 - and plug.objid_0 = obj.run and plug.objid_3 = obj.field - and plug.objid_3 = 314; - -select - plug.objid_0,plug.objid_1,plug.objid_2,plug.objid_3,plug.objid_4, - run,rerun,camcol,field,id -# into outfile '/home/schlegel/data/testdb/out' - from plug,obj - where plug.objid_0=obj.run and plug.objid_1=rerun - and plug.objid_2=camcol and plug.objid_3=obj.field and plug.objid_4=obj.id - and run=94 and camcol=6 and rerun=0 and id=116; - -select - plug.objid_0,plug.objid_1,plug.objid_2,plug.objid_3,plug.objid_4, - plug.primtarget,plug.fiberid -# into outfile '/home/schlegel/data/testdb/out' - from plug,obj - where plug.objid_0=obj.run and plug.objid_1=rerun - and plug.objid_2=camcol and plug.objid_3=obj.field and plug.objid_4=obj.id - and plug.primtarget & 1; - -create index junk on obj (run,rerun,camcol,field,id); -alter table obj drop index junk; - diff --git a/pro/specdb/mysql_write.pro b/pro/specdb/mysql_write.pro deleted file mode 100644 index 987848e9a..000000000 --- a/pro/specdb/mysql_write.pro +++ /dev/null @@ -1,165 +0,0 @@ -;+ -; NAME: -; mysql_write -; -; PURPOSE: -; Write an IDL structure to a MySQL-readable file -; -; CALLING SEQUENCE: -; mysql_write, filename, pdata, [table=, delim=, modifiers=, /append, $ -; scriptfile= ] -; -; INPUTS: -; filename - Output file name -; pdata - Structure to write -; -; OPTIONAL INPUTS: -; table - Name of table; default to the structure name or 'anonymous' -; delim - MySQL delimiter; default to the tab character -; modifiers - Modifiers for all variables, such as 'not null'; -; default to '' -; append - If set, then append to an existing file -; scriptfile - Name of file for writing MySQL importing script -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Unsupported IDL variable types: COMPLEX, DCOMPLEX. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 22-Apr-2000 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro mysql_write, filename, pdata, table=table, delim=delim, $ - modifiers=modifiers, append=append, scriptfile=scriptfile - - if (NOT keyword_set(delim)) then delim = string(9B) ; tab character - if (n_elements(modifiers) EQ 0) then modifiers = ''; - - tname = ['MEDIUMTEXT', 'BINARY(1)', $ - 'INT2', 'INT4', 'INT8', $ - 'INT2 UNSIGNED', 'INT4 UNSIGNED', 'INT8 UNSIGNED', $ - 'FLOAT4', 'FLOAT8'] - idlname = ['STRING', 'BYTE', $ - 'INT', 'LONG', 'LONG64', $ - 'UINT', 'ULONG', 'ULONG64', $ - 'FLOAT', 'DOUBLE'] - - reserved_names = ['dec'] - reserved_replace = ['decc'] - - ntag = N_tags( pdata ) - tags = strlowcase( tag_names( pdata ) ) - if (keyword_set(table)) then stname = table $ - else stname = strlowcase( tag_names( pdata, /structure_name) ) - if (stname EQ '') then stname = 'anonymous' - - ; Replace variable names that are reserved by MySQL to non-conflicting names - for itag=0L, ntag-1 do begin - ii = where(tags[itag] EQ reserved_names) - if (ii[0] NE -1) then tags[itag] = reserved_replace[ii[0]] - endfor - - ;--------------------------------------------------------------------------- - ; Write the table definition - ;--------------------------------------------------------------------------- - - if (keyword_set(scriptfile)) then begin - get_lun, olun - openw, olun, scriptfile - endif else begin - olun = -1 - endelse - - printf, olun, 'create table ' + stname - printf, olun, format='("(",$)' - - for itag=0L, ntag-1 do begin ; Loop through each variable - tt = size( pdata[0].(itag), /tname ) - dims = size( pdata[0].(itag), /dimens ) - ndim = size( pdata[0].(itag), /n_dimen ) - nel = n_elements( pdata[0].(itag) ) - tagname = tname[(where(idlname EQ tt))[0]] - - if (itag EQ 0) then sline = '' $ - else sline = ' ' - - if (nel EQ 1) then begin - sline = sline + tags[itag] + ' ' + tagname + ' ' + modifiers - endif else begin - varname = tags[itag] - for j=0L, ndim-1 do $ - varname = varname + '_' + $ - strtrim(string( djs_laxisgen(dims, iaxis=j+0L) ), 2) - for j=0L, nel-1 do begin - sline = sline + varname[j] + ' ' + tagname + ' ' + modifiers - if (j NE nel-1) then sline = sline + ', ' - endfor - endelse - - if (itag EQ ntag-1) then sline = sline + ');' $ - else sline = sline + ',' - - printf, olun, sline - endfor - - printf, olun, 'load data local infile ' + string(39B) + filename $ - + string(39B) +' into table ' + stname + ';' - - if (keyword_set(scriptfile)) then begin - close, olun - free_lun, olun - endif - - ;--------------------------------------------------------------------------- - ; Write the data to a MySQL-importable file - ;--------------------------------------------------------------------------- - - get_lun, olun - openw, olun, filename, append=append - - for iel=0L, N_elements(pdata)-1 do begin ; Loop thru each row - - for itag=0L, ntag-1 do begin ; Loop through each variable - words = pdata[iel].(itag) - nword = N_elements(words) - - ; If WORDS is type STRING, then check for white-space - ; in any of its elements. If there is white space, then - ; put double-quotes around that element. - if (size(words,/tname) EQ 'STRING') then begin - for iw=0L, nword-1 do $ - if (strpos(words[iw],' ') NE -1) then $ - words[iw] = '"' + words[iw] + '"' - endif else begin - words = strtrim(string(words+0),2) ; Add +0 to recast byte as int - endelse - - if (itag EQ 0) then sline = '' $ - else sline = sline + delim - - if (nword EQ 1) then begin - sline = sline + words - endif else begin - sline = sline + words[0] - for i=1L, N_elements( (pdata)[iel].(itag) )-1 do $ - sline = sline + delim + words[i] - endelse - endfor - printf, olun, sline - endfor - - close, olun - free_lun, olun - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/specdb/photo_loader.pro b/pro/specdb/photo_loader.pro deleted file mode 100644 index 612ce2e6f..000000000 --- a/pro/specdb/photo_loader.pro +++ /dev/null @@ -1,142 +0,0 @@ -;+ -; NAME: -; photo_loader -; -; PURPOSE: -; Write PHOTO outputs from SDSS_READOBJ() to an ASCII stream for direct input -; into Postgres -; -; CALLING SEQUENCE: -; photo_loader, runnum, camcol, rerun=, [ table=, /create, /clobber ] -; -; INPUTS: -; runnum - Run number -; camcol - Camera column -; rerun - Rerun name -; -; OPTIONAL INPUTS: -; table - Database table name; default to "photo" -; create - If set, then assume that the database definition -; does not exist and create it -; clobber - If set, then clobber any existing table by this name -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Unsupported IDL variable types: UINT, ULONG, ULONG64, COMPLEX, DCOMPLEX. -; IDL type BYTE is converted to a 2-byte integer. -; -; EXAMPLES: -; echo "photo_loader,3511,1,rerun=131,/create" | idl | psql foo -; -; BUGS: -; -; PROCEDURES CALLED: -; sdss_readobj() -; -; REVISION HISTORY: -; 02-May-2003 Written by D. Schlegel and D. Hogg, Princeton. -;- -;------------------------------------------------------------------------------ -pro photo_loader, runnum, camcol, rerun=rerun, table=stname, create=create, $ - clobber=clobber - - if (NOT keyword_set(stname)) then stname = 'photo' - delim = string(9B) ; tab character - select_tags = ['RUN', 'RERUN', 'CAMCOL', 'FIELD', 'ID', 'PARENT', $ - 'RA', 'DEC', $ - 'OBJC_TYPE', 'OBJC_FLAGS*', 'FLAGS*', $ - 'PSP_STATUS', 'PSF_FWHM', 'AIRMASS', 'EXTINCTION', 'CLOUDCAM', $ - 'PETRORAD*', 'PETROR50*', 'PETROR90*', $ - 'MODELFLUX*', 'PSFFLUX*', 'PETROFLUX*', $ - 'RUN_GLOBAL_STATUS', 'RUN_LOCAL_STATUS'] - - tname = ['TEXT', 'INT2', 'INT2', 'INT4', 'INT8', 'FLOAT4', 'FLOAT8'] - idlname = ['STRING', 'BYTE', 'INT', 'LONG', 'LONG64', 'FLOAT', 'DOUBLE'] - - ;--------------------------------------------------------------------------- - ; Read the imaging data - ;--------------------------------------------------------------------------- - - pdata = sdss_readobj(runnum, camcol, $ - rerun=rerun, select_tags=select_tags, /silent) - ntag = N_tags( pdata ) - tags = strlowcase( tag_names( pdata ) ) - - ;--------------------------------------------------------------------------- - ; Write the table definition - ;--------------------------------------------------------------------------- - - if (keyword_set(create) OR keyword_set(clobber)) then begin - - if (keyword_set(clobber)) then print, 'drop table ' + stname + ';' - - print, 'create table ' + stname - print, format='("(",$)' - - for itag=0, ntag-1 do begin ; Loop through each variable - tt = size( pdata[0].(itag), /tname ) - dims = size( pdata[0].(itag), /dimens ) - ndim = size( pdata[0].(itag), /n_dimen ) - tagname = tname[(where(idlname EQ tt))[0]] - - if (itag EQ 0) then sline = '' $ - else sline = ' ' - sline = sline + tags[itag] + ' ' + tagname - for j=0, ndim-1 do begin - sline = sline + '[' + strtrim(string(dims[j]),2) + ']' - endfor - if (itag EQ ntag-1) then sline = sline + ');' $ - else sline = sline + ',' - - print, sline - endfor - endif - - print, 'copy ' + stname + ' from stdin;' - - ;--------------------------------------------------------------------------- - ; Write the data as a Postgres-importable ASCII stream - ;--------------------------------------------------------------------------- - - for iel=0L, N_elements(pdata)-1 do begin ; Loop thru each row - - for itag=0L, ntag-1 do begin ; Loop through each variable - words = pdata[iel].(itag) - nword = N_elements(words) - - ; If WORDS is type STRING, then check for white-space - ; in any of its elements. If there is white space, then - ; put double-quotes around that element. - if (size(words,/tname) EQ 'STRING') then begin - for iw=0L, nword-1 do $ - if (strpos(words[iw],' ') NE -1) then $ - words[iw] = '"' + words[iw] + '"' - endif else begin - words = strtrim(string(words),2) - endelse - - if (itag EQ 0) then sline = '' $ - else sline = sline + delim - - if (nword EQ 1) then begin - sline = sline + words - endif else begin - sline = sline + '{' + words[0] - for i=1L, N_elements( (pdata)[iel].(itag) )-1 do $ - sline = sline + ',' + words[i] - sline = sline + '}' - endelse - endfor - print, sline - endfor - - print, '\.' ; End of data-input - - flush, -1 ; Bug in IDL that does not flush devices on exit - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/specdb/postgres_write.pro b/pro/specdb/postgres_write.pro deleted file mode 100644 index 8635f4451..000000000 --- a/pro/specdb/postgres_write.pro +++ /dev/null @@ -1,138 +0,0 @@ -;+ -; NAME: -; postgres_write -; -; PURPOSE: -; Write an IDL structure to a Postgres-readable file -; -; CALLING SEQUENCE: -; postgres_write, filename, pdata, [table=, delim=, /append, $ -; scriptfile= ] -; -; INPUTS: -; filename - Output file name -; pdata - Structure to write -; -; OPTIONAL INPUTS: -; table - Name of table; default to the structure name or 'anonymous' -; delim - Postgres delimiter; default to the tab character -; append - If set, then append to an existing file -; scriptfile - Name of file for writing Postgres importing script -; -; OUTPUT: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Unsupported IDL variable types: UINT, ULONG, ULONG64, COMPLEX, DCOMPLEX. -; IDL type BYTE is converted to a 2-byte integer. -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 06-Apr-2000 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -pro postgres_write, filename, pdata, table=table, delim=delim, append=append, $ - scriptfile=scriptfile - - if (NOT keyword_set(delim)) then delim = string(9B) ; tab character - - tname = ['TEXT', 'INT2', 'INT2', 'INT4', 'INT8', 'FLOAT4', 'FLOAT8'] - idlname = ['STRING', 'BYTE', 'INT', 'LONG', 'LONG64', 'FLOAT', 'DOUBLE'] - - ntag = N_tags( pdata ) - tags = strlowcase( tag_names( pdata ) ) - if (keyword_set(table)) then stname = table $ - else stname = strlowcase( tag_names( pdata, /structure_name) ) - if (stname EQ '') then stname = 'anonymous' - - ;--------------------------------------------------------------------------- - ; Write the table definition - ;--------------------------------------------------------------------------- - - if (keyword_set(scriptfile)) then begin - get_lun, olun - openw, olun, scriptfile - endif else begin - olun = -1 - endelse - - printf, olun, 'create table ' + stname - printf, olun, format='("(",$)' - - for itag=0L, ntag-1 do begin ; Loop through each variable - tt = size( pdata[0].(itag), /tname ) - dims = size( pdata[0].(itag), /dimens ) - ndim = size( pdata[0].(itag), /n_dimen ) - tagname = tname[(where(idlname EQ tt))[0]] - - if (itag EQ 0) then sline = '' $ - else sline = ' ' - sline = sline + tags[itag] + ' ' + tagname - for j=0L, ndim-1 do begin - sline = sline + '[' + strtrim(string(dims[j]),2) + ']' - endfor - if (itag EQ ntag-1) then sline = sline + ');' $ - else sline = sline + ',' - - printf, olun, sline - endfor - - printf, olun, '\copy ' + stname + ' from ' + string(39B) + filename $ - + string(39B) + ';' - - if (keyword_set(scriptfile)) then begin - close, olun - free_lun, olun - endif - - ;--------------------------------------------------------------------------- - ; Write the data to a Postgres-importable file - ;--------------------------------------------------------------------------- - - get_lun, olun - openw, olun, filename, append=append - - for iel=0L, N_elements(pdata)-1 do begin ; Loop thru each row - - for itag=0L, ntag-1 do begin ; Loop through each variable - words = pdata[iel].(itag) - nword = N_elements(words) - - ; If WORDS is type STRING, then check for white-space - ; in any of its elements. If there is white space, then - ; put double-quotes around that element. - if (size(words,/tname) EQ 'STRING') then begin - for iw=0L, nword-1 do $ - if (strpos(words[iw],' ') NE -1) then $ - words[iw] = '"' + words[iw] + '"' - endif else begin - words = strtrim(string(words+0),2) ; Add +0 to recast byte as int - endelse - - if (itag EQ 0) then sline = '' $ - else sline = sline + delim - - if (nword EQ 1) then begin - sline = sline + words - endif else begin - sline = sline + '{' + words[0] - for i=1L, N_elements( (pdata)[iel].(itag) )-1 do $ - sline = sline + ',' + words[i] - sline = sline + '}' - endelse - endfor - printf, olun, sline - endfor - - close, olun - free_lun, olun - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/specdb/specdb_create.pro b/pro/specdb/specdb_create.pro deleted file mode 100644 index 45882aa4a..000000000 --- a/pro/specdb/specdb_create.pro +++ /dev/null @@ -1,132 +0,0 @@ -;+ -; NAME: -; specdb_create -; -; PURPOSE: -; Create spectro database. -; -; CALLING SEQUENCE: -; specdb_create, [ topdir, astrolog= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; topdir - Search for reduced data files in TOPDIR/MJD/*. -; This should be an absolute file path, and we default to -; '/home/data/2d_test'. -; astrolog - Search for plug-map files in PLUGDIR/MJD/*. -; If not specified, then look for these files in the same -; place as the reduced data. -; -; OUTPUT: -; -; COMMENTS: -; Look for the input files in: -; $TOPDIR/MJD/2d/spSpec2d-b1-*.fits - pppp=plate -; $SPECLOG/MJD/plPlugMapM-pppp-mmmmm-aa.par - Plug map files, aa=mapper -; -; EXAMPLES: -; -; BUGS: -; -; PROCEDURES CALLED: -; headfits() -; mrdfits() -; yanny_read -; -; INTERNAL SUPPORT ROUTINES: -; spsummary_create() -; -; REVISION HISTORY: -; 27-Mar-2000 Written by David Schlegel, Princeton. -;- -;------------------------------------------------------------------------------ -function spsummary_create, ct - - ftemp = create_struct( name='SPSUMMARY', $ - 'PLATE', 0L, $ - 'FIBERID', 0L, $ - 'MJD', 0L, $ - 'OBJID', intarr(5), $ - 'RA', 0D, $ - 'DEC', 0D, $ - 'MAG', fltarr(5), $ - 'OBJTYPE', '', $ - 'PRIMTARGET', 0L, $ - 'SECTARGET', 0L, $ - 'Z', 0.0 ) - - spsummary = replicate(ftemp, ct) - - return, spsummary -end - -;------------------------------------------------------------------------------ - -pro specdb_create, topdir, astrolog=astrolog - - if (NOT keyword_set(topdir)) then begin - if ((findfile('/usr/sdss/data05/spectro/2d_test'))[0] NE '') then $ - topdir = '/usr/sdss/data05/spectro/rawdata' $ - else if ((findfile('/home/data/2d_test'))[0] NE '') then $ - topdir = '/home/data/2d_test' $ - else if ((findfile('rawdata'))[0] NE '') then $ - topdir = '' $ - else begin - print, 'Must specify TOPDIR' - return - endelse - endif - - ;---------- - ; Find the list reduced plate numbers - - cd, topdir, current=olddir - allplates = findfile() - - ;---------- - ; Loop over each reduced plate - - for iplate=0, N_elements(allplates)-1 do begin - - plateid = allplates[iplate] - platenum = fix(plateid) -; platestr = string(plateid, format='(i4.4)') - - spfiles = findfile( filepath('spSpec2d-b1-*.fits', $ - root_dir=plateid, subdirectory='2d'), count=nfile ) - - ;---------- - ; Loop over each reduced file for this plate - - for ifile=0, nfile-1 do begin -print,spfiles[ifile] - - sp_one = spsummary_create(640) - - ; From HDU=2, get the plug map information - plugmap = mrdfits(spfiles[ifile], 2) - struct_assign, plugmap, sp_one - sp_one.objtype = strtrim(sp_one.objtype,2) ; Trim trailing spaces - - ; From the header, get the MJD - hdr = headfits(spfiles[ifile]) - sp_one.mjd = long( sxpar(hdr, 'MJD') ) - - ; Random numbers for z for now... ??? - sp_one.z = randomu(1234,640) - - if (keyword_set(sp_all)) then $ - sp_all = [sp_all, sp_one] $ - else $ - sp_all = sp_one - - endfor - endfor - - cd, olddir -stop - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/bolton_biasgen.pro b/pro/specflat/bolton_biasgen.pro similarity index 98% rename from pro/spec2d/bolton_biasgen.pro rename to pro/specflat/bolton_biasgen.pro index 3b3938d31..d66de7bf2 100644 --- a/pro/spec2d/bolton_biasgen.pro +++ b/pro/specflat/bolton_biasgen.pro @@ -164,7 +164,7 @@ for i = 0L, nf-1 do begin endfor ; Write out final pixel bias (probably want more header cards at some point): -mwrfits, outbias, outfile, hdr0, /create +mwrfits_named, outbias, outfile, hdr=hdr0, name='Bias', desc=' Bias Frame', /create ;writefits,'wf-'+outfile,outbias,hdr0 ;stop return diff --git a/pro/spec2d/boss_gain.pro b/pro/specflat/boss_gain.pro similarity index 100% rename from pro/spec2d/boss_gain.pro rename to pro/specflat/boss_gain.pro diff --git a/pro/specflat/bpm_ledflat_combine.pro b/pro/specflat/bpm_ledflat_combine.pro deleted file mode 100644 index 58a37c8f3..000000000 --- a/pro/specflat/bpm_ledflat_combine.pro +++ /dev/null @@ -1,62 +0,0 @@ -pro bpm_ledflat_combine2 - -imb1=mrdfits('pixflatave-55055-b1.old.fits.gz',0,hdrb1) -imb2=mrdfits('pixflatave-55055-b2.old.fits.gz',0,hdrb2) -imr1=mrdfits('pixflatave-55055-r1.old.fits.gz',0,hdrr1) -imr2=mrdfits('pixflatave-55055-r2.old.fits.gz',0,hdrr2) -imr2new=mrdfits('pixflatave-55300-r2.old.fits.gz',0,hdrnewr2) - -imbpmb1=mrdfits('bpm-b1-count.fit.gz') -imbpmb2=mrdfits('bpm-b2-count.fit.gz') -imbpmr1=mrdfits('bpm-r1-count.fit.gz') -imbpmr2=mrdfits('bpm-r2-count.fit.gz') -imbpmr2new=mrdfits('bpm-r2-55300-count.fit.gz') - - -imoutb1=imb1*imbpmb1 -imoutb2=imb2*imbpmb2 -imoutr1=imr1*imbpmr1 -imoutr2=imr2*imbpmr2 -imoutr2new=imr2new*imbpmr2new - -;for b1 ;bad columns by eye - - -;for b2 - -imoutb2[334,1335:2057]=0 -imoutb2[1966,1636:2057]=0 -imoutb2[2493,2056:3411]=0 -imoutb2[1825:1826,0:2057]=0 ;charge transfer - -;for r1 -imoutr1[2181:2182,0:2064]=0 -imoutr1[3648:3650,0:2064]=0 -imoutr1[693,2064:4127]=0 -imoutr1[781,2064:4127]=0 - -;for r2 - -imoutr2[2111,1800:2065]=0 -imoutr2[551,2060:4127]=0 -imoutr2[1113,2060:2505]=0 -;for new r2 - -imoutr2new[508,2064:4127]=0 -imoutr2new[2627:2628,2064:4127]=0 -imoutr2new[2671:2672,2064:4127]=0 -imoutr2new[2924:2926,2064:3023]=0 -imoutr2new[2984:2985,2064:4127]=0 -imoutr2new[3882,2064:4127]=0 -imoutr2new[3955:3956,2064:4127]=0 -imoutr2new[3872:3882,2612:3664]=0 -imoutr2new[3947:3955,2845:3108]=0 - - -writefits,'pixflatave-55055-b1.fits',imoutb1,hdrb1 -writefits,'pixflatave-55055-b2.fits',imoutb2,hdrb2 -writefits,'pixflatave-55055-r1.fits',imoutr1,hdrr1 -writefits,'pixflatave-55055-r2.fits',imoutr2,hdrr2 -writefits,'pixflatave-55300-r2.fits',imoutr2new,hdrnewr2 - -end diff --git a/pro/specflat/combinebpm.pro b/pro/specflat/combinebpm.pro index 4efdf1322..1a38a49bd 100644 --- a/pro/specflat/combinebpm.pro +++ b/pro/specflat/combinebpm.pro @@ -513,7 +513,7 @@ sxaddpar,hdr, 'BM16',16,'warm bad column, ticket 1368,1369' sxaddpar,hdr, 'BM32',32,'by hand corrections' filename_badpix='badpixels-'+string(mjd,format='(i5.5)')+'-'+docams+'.fits' -mwrfits,bpms,filename_badpix,hdr,/create +mwrfits_named,bpms,filename_badpix,hdr=hdr, name='BPM', desc=' Bad Pixel Mask',/create ;stop diff --git a/pro/specflat/flatfield.pro b/pro/specflat/flatfield.pro deleted file mode 100644 index 1a8f9336a..000000000 --- a/pro/specflat/flatfield.pro +++ /dev/null @@ -1,183 +0,0 @@ -;+ -; NAME: -; flatfield -; -; PURPOSE: -; This takes an LED flatfield and compares pixel by pixel the value -; of that pixel compared to the median in a subregion about it -; -; CALLING SEQUENCE: -; -;flatfield, filename,filenamebias,docams= -; INPUTS: -; -; docams - camera to look at ; default to ['b1','b2','r1','r2'] -; filename - name of flat -; filenamebis - name of bias -; OPTIONAL KEYWORDS -; -; OUTPUTS: -; -; -; -; 'bpm-sigma.fit' -; -; 'bpm-count.fit' -; -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; -; This will take an LED flat and a bias to make a flatfield -; -; -; -; EXAMPLES: -; Create a flatfield using LED flats from 55141/55142 -; -; -; (assuming the files exist in /data/spectro/:) -; IDL> flatfield, -; -; -; -; PROCEDURES CALLED: -; sxpar() - -; -; REVISION HISTORY: -; -; 22-Jan-2010 M. Olmstead, Utah -;- - - - - -pro flatfield, expflat,expbias,docams=docams,indir=indir - -if (NOT keyword_set(docams)) then docams =['b1','b2','r1','r2'] -if (NOT keyword_set(indir)) then begin ;set BOSS_SPECTRO_DATA - indir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(indir)) then $ - indir='/data/spectro' - indir = indir + '/*' -endif - -ncam = n_elements(docams) - -quiet = !quiet -!quiet = 1 - -if (ncam GT 1) then begin - for icam=0, ncam-1 do begin ;cycle through cameras - flatfield,expflat,expbias,docams=docams[icam],indir=indir - endfor - !quiet = quiet - return -endif - -filename = 'sdR-' + docams[0] + '-' + string(expflat, format='(i8.8)') + '.fit*' -filenamebias = 'sdR-' + docams[0] + '-' + string(expbias, format='(i8.8)') + '.fit*' ;get files -filename = (findfile(djs_filepath(filename, root_dir=indir), count=ct1))[0] -filenamebias = (findfile(djs_filepath(filenamebias, root_dir=indir), count=ct2))[0] - -if (ct1 EQ 0 ) then begin - print, 'flat file not found' -stop - return -endif -if (ct2 EQ 0 ) then begin - print, 'bias file not found' - return -endif - - -imflat2=readfits(filename,hdr) -imbias2=readfits(filenamebias) -imflat3=imflat2-imbias2 ;bias subtract -location=0. -nx=sxpar(hdr,'NAXIS1') -ny=sxpar(hdr,'NAXIS2') -outfitosbias=fltarr(nx,ny) -imflatosbias=fltarr(nx,ny) - -if docams eq 'b1' then gain = [1.048, 1.048, 1.018, 1.006] ; b1 gain -if docams eq 'b2' then gain = [1.040, 0.994, 1.002, 1.010] ; b2 gain -if docams eq 'r1' then gain = [1.966, 1.566, 1.542, 1.546] ;r1 gain -if docams eq 'r2' then gain = [1.956, 1.618, 1.538, 1.538] ;r2 gain - - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; pixel by pixel bias subtraction -;imflat[0:2175,0:2111]=imflat3[0:2175,0:2111]*gain[0] -;imflat[2176:4351,0:2111]=imflat3[2176:4351,0:2111]*gain[1] -;imflat[0:2175,2112:4223]=imflat3[0:2175,2112:4223]*gain[2] -;imflat[2176:4351,2112:4223]=imflat3[2176:4351,2112:4223]*gain[3] - - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;bias subtraction -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;of overscan -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;after pixel by pixel - - os2 = [ median(imflat3[10:67,56:2111]), $ - median(imflat3[4284:4340,56:2111]), $ - median(imflat3[10:67,2112:4167]), $ - median(imflat3[4284:4340,2112:4167]) ] - - -imflatosbias[0:2175,0:2111] = gain[0] * (imflat3[0:2175,0:2111] - os2[0]) -imflatosbias[2176:4351,0:2111] = gain[1] * (imflat3[2176:4351,0:2111] - os2[1]) -imflatosbias[0:2175,2112:4223] = gain[2] * (imflat3[0:2175,2112:4223] - os2[2]) -imflatosbias[2176:4351,2112:4223] = gain[3] * (imflat3[2176:4351,2112:4223] - os2[3]) - -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -imflat2=0 -imbias2=0 - -;===================================================================== -mx=10. ;number of pixels or left and right for median count -my=10 -counti=210 -countj=210 -;================================== -sampleosbias=fltarr(2*mx+1,2*my+1) - -for i=200,nx-200 do begin ;making a rectangle around the point and median comparing it - for j=200,ny-200 do begin - sampleosbias=imflatosbias(i-mx:i+mx,j-my:j+my) - djs_iterstat,sampleosbias,median=medianosbias - outfitosbias[i,j]=imflatosbias[i,j]/medianosbias - endfor - if (i gt 100+location) then begin ;a status counter - location=location+100 - print,i - endif -endfor - -if docams eq 'b2' then begin ;setting 3 bad columns = 0 for b2 - for j=1693,2111 do begin - outfitosbias[2094,j]=0 - endfor - - for j=2112,3457 do begin - outfitosbias[2621,j]=0 - endfor - - for j=1392,2111 do begin - outfitosbias[462,j]=0 - endfor -endif - -imout=outfitosbias[119:4232,48:4175] -filenameout='pixflat-'+docams+'.fit' -writefits, imout,outfitosbias - -; - -;============================================================================ - - - - -end diff --git a/pro/specflat/ledflat.pro b/pro/specflat/ledflat.pro deleted file mode 100644 index c3af52878..000000000 --- a/pro/specflat/ledflat.pro +++ /dev/null @@ -1,256 +0,0 @@ -;+ -; NAME: -; ledflat -; -; PURPOSE: -; Compute pixel-flats from LED flat-field images -; -; CALLING SEQUENCE: -; ledflat, expnum, [ docams=, indir=, threshrms=, threshlo=, nuse= ] -; -; INPUTS: -; expnum - Exposure number(s) -; -; OPTIONAL KEYWORDS: -; docams - Cameras to analyze; default to ['b1','b2','r1','r2']. -; indir - Input directory for files; default to searching for -; files in $BOSS_SPECTRO_DATA/*. If $BOSS_SPECTRO_DATA is not set, -; then it is assumed to be /data/spectro. -; threshrms - Threshold for masking pixels whose fractional RMS (after -; outlier-rejection) is larger than this value; default 0.05 -; threshlo - Threshold for low pixels compared to local median; -; default to 0.05 -; nuse - Maximum number of images to use in computing statistics -; at each pixel; default to 5 or the number of exposures, -; whichever is smaller -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Output file names are pixflat-$DOCAMS-$MJD.fits, where the MJD -; is from the first input file header. -; -; This algorithm is designed to work best if there are several LED -; flats observed with the LED moved around such that it is not always -; illuminating the same way. For any given pixel, the flat value -; is determined from the image that has the lowest variance near that pix. -; -; EXAMPLES: -; Solve for pixel flats from LED images using data from both -; MJD 55141 and MJD 55142. Select only those images with mean >5000 e-. -; > ledflat, [103045+lindgen(5),103075+lindgen(3)], docams=['b1','b2'] -; > ledflat, [103070+lindgen(8)], docams=['r1','r2'] -; -; BUGS: -; Images should be bias-subtracted first??? -; Non-linearities should be applied first ??? -; Requires commenting-out the masking of the top+bottom of images in SDSSPROC! -; Low-flux images should get automatically discarded. -; -; This implementation has Poisson noise at the level of a single image. -; A better implementation would perhaps first combine the exposures -; from the same MJD or MJD+exptime first to beat down the Poisson noise. -; -; REVISION HISTORY: -; 18-Mar-2010 Written by D. Schlegel, LBL -;- -;------------------------------------------------------------------------------ -pro ledflat, expnum, docams=docams, indir=indir1, threshrms=threshrms1, $ - threshlo=threshlo1, nuse=nuse1 - - defaultcams = ['b1','b2','r1','r2'] - if (NOT keyword_set(docams)) then docams = defaultcams - - ;---------- - ; Set defaults - - if (keyword_set(indir1)) then begin - indir = indir1 - endif else begin - indir = getenv('BOSS_SPECTRO_DATA') - if (NOT keyword_set(indir)) then $ - indir = '/data/spectro' - indir = indir + '/*' - endelse - - if (keyword_set(threshrms1)) then threshrms = threshrms1 $ - else threshrms = 0.05 - if (keyword_set(threshlo1)) then threshlo = threshlo1 $ - else threshlo = 0.05 - if (keyword_set(nuse1)) then nuse = nuse1 $ - else nuse = (5 < n_elements(expnum)) - minval = 1 ; clip images at this min value - - ;---------- - ; If DOCAMS is an array, then call this routine recursively - - ncam = n_elements(docams) - if (ncam GT 1) then begin - for icam=0, ncam-1 do begin - ledflat, expnum, docams=docams[icam], indir=indir, $ - threshrms=threshrms, threshlo=threshlo, nuse=nuse - endfor - return - endif - - ;---------- - - nfile = n_elements(expnum) - filtsz = 25 - kern = fltarr(filtsz,filtsz) + 1 - - for i=0, nfile-1 do begin - ; Locate the input file (either compressed or un-compressed) - filename1 = 'sdR-' + docams + '-' + string(expnum[i], format='(i8.8)') $ - + '.fit*' - filename1 = (findfile(djs_filepath(filename1, root_dir=indir), $ - count=ct1))[0] - if (ct1 EQ 0) then $ - message, 'File not found for EXPNUM=' + string(expnum[i]) - - splog,'Reading file ',i+1,' of ', nfile,': ',filename1 - sdssproc, filename1, rawimg, rawivar, hdr=hdr, /applybias, /nopixmask, /nopixflat - medimg = median(rawimg, filtsz) > minval - filtimg = rawimg / medimg - ; Compute the local variance around each pixel, but clip - ; crazy values to cliprange - cliprange = [0.90,1.10] - varimg = convol( (((filtimg>cliprange[0])1) -; for i=0, nfile-1 do imgarr[*,*,i] -= meanperpix -; devperpix = sqrt(total((imgarr*(1-outmask))^2,3) / (totmask>1)) -; -; ; Test the RMS per pix as a fractional RMS of the mean of that pixel -; masklo = (stackimg LT threshlo) OR (totmask EQ 0) ; =1 bad -; maskrms = (devperpix/(stackimg*(1-masklo)+masklo) GT threshrms) $ -; OR masklo ; =1 bad - - ; Test the RMS per pix as a fractional RMS of the mean of that pixel - masklo = (meanperpix LT threshlo) OR (totmask EQ 0) ; =1 bad - maskrms = (devperpix/(meanperpix*(1-masklo)+masklo) GT threshrms) $ - OR masklo ; =1 bad - - ; Mask those pixels at the edge of the field as bad in apermask, - ; and unmask those same pixels in maskrms - case docams of - 'b1': maxr = 2800 - 'b2': maxr = 2600 - 'r1': maxr = 2600 - 'r2': maxr = 2600 - endcase - rr = sqrt( (djs_laxisgen(dims,iaxis=0) - dims[0]/2. - 0.5)^2 $ - + (djs_laxisgen(dims,iaxis=1) - dims[1]/2. - 0.5)^2 ) - apermask = rr GT maxr ; =1 bad - rr = 0 ; clear memory - maskrms *= (1-apermask) - - ; Search for bad columns, and mask them to the end of the amplifier read. - ; A bad column is assumed to begin whenever we have at least 40 out of 51 - ; pixels in a single column that are bad. - ; Do this separately on the bottom and top half of the CCD, since the - ; pixels are read out in different directions. - ; But don't search for bad columns at a distance more than maxr from center - badcolmask = bytarr(dims) - kern1d = fltarr(1,51) + 1 - for ix=0, dims[0]-1 do begin - ; Bottom half of CCD... - bad1d = convol(maskrms[ix,0:dims[1]/2-1], kern1d, $ - /center, /edge_truncate) GE 40 - indx = where(bad1d, ct) - if (ct GT 0) then begin - badcolmask[ix,indx[0]:dims[1]/2-1] = 1B - splog, 'Bad column on bottom ', ix - endif - ; Top half of CCD... - bad1d = convol(maskrms[ix,dims[1]/2:dims[1]-1], kern1d, $ - /center, /edge_truncate) GE 40 - indx = reverse(where(bad1d, ct)) - if (ct GT 0) then begin - badcolmask[ix,dims[1]/2:dims[1]/2+indx[0]] = 1B - splog, 'Bad column on top ', ix - endif - endfor - - finalimg = meanperpix * (1-apermask) * (1-maskrms) * (1-badcolmask) - - ; Report fraction of bad pixels - splog, 'Fraction of pix beyond optics aperture =', $ - mean(apermask) - splog, 'Fraction of pix lost to bad columns =', $ - total(badcolmask*(1-apermask)) / total(1-apermask) - splog, 'Fraction of pix lost to bad RMS =', $ - total(maskrms(1-badcolmask)*(1-apermask)) $ - / total((1-badcolmask)*(1-apermask)) - rms_report = [0.01,0.02,0.03,0.04,0.05,0.50] - for i=0, n_elements(rms_report)-1 do $ - print, 'Fraction of pix deviant by ', rms_report[i], ' = ', $ - total((abs(1-finalimg) GT rms_report[i]) $ - * (1-apermask)*(1-maskrms)*(1-badcolmask)) $ - / total((1-apermask)*(1-apermask)*(1-maskrms)*(1-badcolmask)) - - ; Use the MJD from the first file in the output name - mjdstr = string(thismjd,format='(i5.5)') - outfile = 'pixflat-'+docams+'-'+mjdstr+'.fits' - splog, 'Writing '+outfile - mwrfits, finalimg, outfile, hdr, /create - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/spec2d/spflatave.pro b/pro/specflat/spflatave.pro similarity index 99% rename from pro/spec2d/spflatave.pro rename to pro/specflat/spflatave.pro index f4a8cd62f..5200693b3 100644 --- a/pro/spec2d/spflatave.pro +++ b/pro/specflat/spflatave.pro @@ -189,7 +189,7 @@ pixflatarr = 0 ; Clear memory splog, 'Writing file ' + outfile writefits, outfile, aveimg, hdr -; mwrfits, sigimg, outfile +; mwrfits_named, sigimg, outfile, name='SIGIMG' endif diff --git a/pro/templates/README.txt b/pro/templates/README.txt deleted file mode 100644 index 69d90a690..000000000 --- a/pro/templates/README.txt +++ /dev/null @@ -1,22 +0,0 @@ -This directory initiated by A. Bolton on 15 May 2010. - -Initial contents are a quick-and-dirty attempt to get BOSS templates -up and running, and include usage of both the traditional pca_solve -and a newly implemented "bolton_mlpca" (which is checked in under -pro/spec1d). - -These routines have generated the following files, checked into the -traditional (one level up) templates dir: - -spMLpcaCVstar-55332.fits -spMLpcaGal-55332.fits -spMLpcaQSO-55332.fits -spMLpcaStar-55332.fits - -These conform to the spEigen* convention, but are named differently -to avoid confusion. They will need to be renamed (or the spreduce1d -filename expectations changed) in order to be fed in. - -The QSO templates were generated (most recently) using pca_solve, -and the rest with bolton_mlpca. - diff --git a/pro/templates/align_rest.pro b/pro/templates/align_rest.pro deleted file mode 100644 index 0e768dbce..000000000 --- a/pro/templates/align_rest.pro +++ /dev/null @@ -1,42 +0,0 @@ -;+ -; -; NAME: -; align_rest -; -; PURPOSE: -; Align spectra in rest wavelength given redshift. -; -; COMMENTS: -; Assumes constant log-lam binning, rounds to nearest pixel. -; -; WRITTEN: -; bolton@utah 2010may -; -;- - -pro align_rest, in_loglam=in_loglam, in_flux=in_flux, in_invvar=in_invvar, z=z, $ - out_loglam=out_loglam, out_flux=out_flux, out_invvar=out_invvar - -npix = (n_elements(in_loglam)) -nobj = (size(in_flux))[2] - -dloglam = in_loglam[1] - in_loglam[0] -pixshift = round(alog10(1.d0 + z) / dloglam) -maxp = max(pixshift) -minp = min(pixshift) -totalpix = npix + maxp - minp - -out_flux = make_array(totalpix, nobj, type=size(in_flux, /type), value=0) -out_invvar = make_array(totalpix, nobj, type=size(in_invvar, /type), value=0) - -for i = 0L, nobj-1 do begin - out_flux[maxp-pixshift[i]:maxp-pixshift[i]+npix-1,i] = in_flux[*,i] - out_invvar[maxp-pixshift[i]:maxp-pixshift[i]+npix-1,i] = in_invvar[*,i] -endfor - -; Make the rest-frame loglam baseline: -loglam0_rest = in_loglam[0] - maxp * dloglam -out_loglam = loglam0_rest + dloglam * findgen(totalpix) - -return -end diff --git a/pro/templates/feconv_uv_shen b/pro/templates/feconv_uv_shen deleted file mode 100644 index 589fd7400..000000000 --- a/pro/templates/feconv_uv_shen +++ /dev/null @@ -1,3426 +0,0 @@ -# This is a new UV Fe template -# [1000, 2200] use Vestergaard01 [Fe_UVtemplt_A.asc] -# [2200, 3090] use Salvainder06, which extrapolates undernearth the MgII line; -# The Salvainder template has a coarse wavelength sampling than Vestergaard, -# so I interpolate it to the Vestergaard wavelength dispersion -# [3090, 3500] use Tsuzuki06, the wavelength dispersion is similar -# (although slightly larger) to Vestergaard -## log10(wave) flux (erg/s/cm2/A) dispersion=103.6 km/s - 3.03140e+00 0.00000e+00 - 3.03155e+00 0.00000e+00 - 3.03170e+00 0.00000e+00 - 3.03185e+00 0.00000e+00 - 3.03200e+00 0.00000e+00 - 3.03215e+00 0.00000e+00 - 3.03230e+00 0.00000e+00 - 3.03245e+00 0.00000e+00 - 3.03260e+00 0.00000e+00 - 3.03275e+00 0.00000e+00 - 3.03290e+00 0.00000e+00 - 3.03305e+00 0.00000e+00 - 3.03320e+00 0.00000e+00 - 3.03335e+00 0.00000e+00 - 3.03350e+00 0.00000e+00 - 3.03365e+00 0.00000e+00 - 3.03380e+00 0.00000e+00 - 3.03395e+00 0.00000e+00 - 3.03410e+00 0.00000e+00 - 3.03425e+00 0.00000e+00 - 3.03440e+00 0.00000e+00 - 3.03455e+00 0.00000e+00 - 3.03470e+00 0.00000e+00 - 3.03485e+00 0.00000e+00 - 3.03500e+00 0.00000e+00 - 3.03515e+00 0.00000e+00 - 3.03530e+00 0.00000e+00 - 3.03545e+00 0.00000e+00 - 3.03560e+00 0.00000e+00 - 3.03575e+00 0.00000e+00 - 3.03590e+00 0.00000e+00 - 3.03605e+00 0.00000e+00 - 3.03620e+00 0.00000e+00 - 3.03635e+00 0.00000e+00 - 3.03650e+00 0.00000e+00 - 3.03665e+00 0.00000e+00 - 3.03680e+00 0.00000e+00 - 3.03695e+00 0.00000e+00 - 3.03710e+00 0.00000e+00 - 3.03725e+00 0.00000e+00 - 3.03740e+00 0.00000e+00 - 3.03755e+00 0.00000e+00 - 3.03770e+00 0.00000e+00 - 3.03785e+00 0.00000e+00 - 3.03800e+00 0.00000e+00 - 3.03815e+00 0.00000e+00 - 3.03830e+00 0.00000e+00 - 3.03845e+00 0.00000e+00 - 3.03860e+00 0.00000e+00 - 3.03875e+00 0.00000e+00 - 3.03890e+00 0.00000e+00 - 3.03905e+00 0.00000e+00 - 3.03920e+00 0.00000e+00 - 3.03935e+00 0.00000e+00 - 3.03950e+00 0.00000e+00 - 3.03965e+00 0.00000e+00 - 3.03980e+00 0.00000e+00 - 3.03995e+00 0.00000e+00 - 3.04010e+00 0.00000e+00 - 3.04025e+00 0.00000e+00 - 3.04040e+00 0.00000e+00 - 3.04055e+00 0.00000e+00 - 3.04070e+00 0.00000e+00 - 3.04085e+00 0.00000e+00 - 3.04100e+00 0.00000e+00 - 3.04115e+00 0.00000e+00 - 3.04130e+00 0.00000e+00 - 3.04145e+00 0.00000e+00 - 3.04160e+00 0.00000e+00 - 3.04175e+00 0.00000e+00 - 3.04190e+00 0.00000e+00 - 3.04205e+00 0.00000e+00 - 3.04220e+00 0.00000e+00 - 3.04235e+00 0.00000e+00 - 3.04250e+00 0.00000e+00 - 3.04265e+00 0.00000e+00 - 3.04280e+00 0.00000e+00 - 3.04295e+00 0.00000e+00 - 3.04310e+00 0.00000e+00 - 3.04325e+00 0.00000e+00 - 3.04340e+00 0.00000e+00 - 3.04355e+00 0.00000e+00 - 3.04370e+00 0.00000e+00 - 3.04385e+00 0.00000e+00 - 3.04400e+00 0.00000e+00 - 3.04415e+00 0.00000e+00 - 3.04430e+00 0.00000e+00 - 3.04445e+00 0.00000e+00 - 3.04460e+00 0.00000e+00 - 3.04475e+00 0.00000e+00 - 3.04490e+00 0.00000e+00 - 3.04505e+00 0.00000e+00 - 3.04520e+00 0.00000e+00 - 3.04535e+00 0.00000e+00 - 3.04550e+00 0.00000e+00 - 3.04565e+00 0.00000e+00 - 3.04580e+00 0.00000e+00 - 3.04595e+00 0.00000e+00 - 3.04610e+00 0.00000e+00 - 3.04625e+00 0.00000e+00 - 3.04640e+00 0.00000e+00 - 3.04655e+00 0.00000e+00 - 3.04670e+00 0.00000e+00 - 3.04685e+00 0.00000e+00 - 3.04700e+00 0.00000e+00 - 3.04715e+00 0.00000e+00 - 3.04730e+00 0.00000e+00 - 3.04745e+00 0.00000e+00 - 3.04760e+00 0.00000e+00 - 3.04775e+00 0.00000e+00 - 3.04790e+00 0.00000e+00 - 3.04805e+00 0.00000e+00 - 3.04820e+00 0.00000e+00 - 3.04835e+00 0.00000e+00 - 3.04850e+00 0.00000e+00 - 3.04865e+00 0.00000e+00 - 3.04880e+00 0.00000e+00 - 3.04895e+00 0.00000e+00 - 3.04910e+00 0.00000e+00 - 3.04925e+00 0.00000e+00 - 3.04940e+00 0.00000e+00 - 3.04955e+00 0.00000e+00 - 3.04970e+00 0.00000e+00 - 3.04985e+00 0.00000e+00 - 3.05000e+00 0.00000e+00 - 3.05015e+00 0.00000e+00 - 3.05030e+00 0.00000e+00 - 3.05045e+00 0.00000e+00 - 3.05060e+00 0.00000e+00 - 3.05075e+00 0.00000e+00 - 3.05090e+00 0.00000e+00 - 3.05105e+00 0.00000e+00 - 3.05120e+00 0.00000e+00 - 3.05135e+00 0.00000e+00 - 3.05150e+00 0.00000e+00 - 3.05165e+00 0.00000e+00 - 3.05180e+00 0.00000e+00 - 3.05195e+00 0.00000e+00 - 3.05210e+00 0.00000e+00 - 3.05225e+00 0.00000e+00 - 3.05240e+00 0.00000e+00 - 3.05255e+00 0.00000e+00 - 3.05270e+00 0.00000e+00 - 3.05285e+00 0.00000e+00 - 3.05300e+00 0.00000e+00 - 3.05315e+00 0.00000e+00 - 3.05330e+00 0.00000e+00 - 3.05345e+00 0.00000e+00 - 3.05360e+00 0.00000e+00 - 3.05375e+00 0.00000e+00 - 3.05390e+00 0.00000e+00 - 3.05405e+00 0.00000e+00 - 3.05420e+00 0.00000e+00 - 3.05435e+00 0.00000e+00 - 3.05450e+00 0.00000e+00 - 3.05465e+00 0.00000e+00 - 3.05480e+00 0.00000e+00 - 3.05495e+00 0.00000e+00 - 3.05510e+00 0.00000e+00 - 3.05525e+00 0.00000e+00 - 3.05540e+00 0.00000e+00 - 3.05555e+00 0.00000e+00 - 3.05570e+00 0.00000e+00 - 3.05585e+00 0.00000e+00 - 3.05600e+00 0.00000e+00 - 3.05615e+00 0.00000e+00 - 3.05630e+00 0.00000e+00 - 3.05645e+00 0.00000e+00 - 3.05660e+00 0.00000e+00 - 3.05675e+00 0.00000e+00 - 3.05690e+00 0.00000e+00 - 3.05705e+00 0.00000e+00 - 3.05720e+00 0.00000e+00 - 3.05735e+00 0.00000e+00 - 3.05750e+00 0.00000e+00 - 3.05765e+00 0.00000e+00 - 3.05780e+00 0.00000e+00 - 3.05795e+00 0.00000e+00 - 3.05810e+00 0.00000e+00 - 3.05825e+00 0.00000e+00 - 3.05840e+00 0.00000e+00 - 3.05855e+00 0.00000e+00 - 3.05870e+00 0.00000e+00 - 3.05885e+00 0.00000e+00 - 3.05900e+00 0.00000e+00 - 3.05915e+00 0.00000e+00 - 3.05930e+00 0.00000e+00 - 3.05945e+00 0.00000e+00 - 3.05960e+00 0.00000e+00 - 3.05975e+00 0.00000e+00 - 3.05990e+00 0.00000e+00 - 3.06005e+00 0.00000e+00 - 3.06020e+00 0.00000e+00 - 3.06035e+00 0.00000e+00 - 3.06050e+00 0.00000e+00 - 3.06065e+00 0.00000e+00 - 3.06080e+00 0.00000e+00 - 3.06095e+00 0.00000e+00 - 3.06110e+00 0.00000e+00 - 3.06125e+00 0.00000e+00 - 3.06140e+00 0.00000e+00 - 3.06155e+00 0.00000e+00 - 3.06170e+00 0.00000e+00 - 3.06185e+00 0.00000e+00 - 3.06200e+00 0.00000e+00 - 3.06215e+00 0.00000e+00 - 3.06230e+00 0.00000e+00 - 3.06245e+00 0.00000e+00 - 3.06260e+00 0.00000e+00 - 3.06275e+00 0.00000e+00 - 3.06290e+00 0.00000e+00 - 3.06305e+00 0.00000e+00 - 3.06320e+00 0.00000e+00 - 3.06335e+00 0.00000e+00 - 3.06350e+00 0.00000e+00 - 3.06365e+00 0.00000e+00 - 3.06380e+00 0.00000e+00 - 3.06395e+00 0.00000e+00 - 3.06410e+00 0.00000e+00 - 3.06425e+00 0.00000e+00 - 3.06440e+00 0.00000e+00 - 3.06455e+00 0.00000e+00 - 3.06470e+00 0.00000e+00 - 3.06485e+00 0.00000e+00 - 3.06500e+00 0.00000e+00 - 3.06515e+00 0.00000e+00 - 3.06530e+00 0.00000e+00 - 3.06545e+00 0.00000e+00 - 3.06560e+00 0.00000e+00 - 3.06575e+00 0.00000e+00 - 3.06590e+00 0.00000e+00 - 3.06605e+00 0.00000e+00 - 3.06620e+00 0.00000e+00 - 3.06635e+00 0.00000e+00 - 3.06650e+00 0.00000e+00 - 3.06665e+00 0.00000e+00 - 3.06680e+00 0.00000e+00 - 3.06695e+00 0.00000e+00 - 3.06710e+00 0.00000e+00 - 3.06725e+00 0.00000e+00 - 3.06740e+00 0.00000e+00 - 3.06755e+00 0.00000e+00 - 3.06770e+00 0.00000e+00 - 3.06785e+00 0.00000e+00 - 3.06800e+00 0.00000e+00 - 3.06815e+00 0.00000e+00 - 3.06830e+00 0.00000e+00 - 3.06845e+00 0.00000e+00 - 3.06860e+00 0.00000e+00 - 3.06875e+00 0.00000e+00 - 3.06890e+00 0.00000e+00 - 3.06905e+00 0.00000e+00 - 3.06920e+00 0.00000e+00 - 3.06935e+00 0.00000e+00 - 3.06950e+00 0.00000e+00 - 3.06965e+00 0.00000e+00 - 3.06980e+00 0.00000e+00 - 3.06995e+00 0.00000e+00 - 3.07010e+00 0.00000e+00 - 3.07025e+00 0.00000e+00 - 3.07040e+00 0.00000e+00 - 3.07055e+00 0.00000e+00 - 3.07070e+00 0.00000e+00 - 3.07085e+00 0.00000e+00 - 3.07100e+00 0.00000e+00 - 3.07115e+00 0.00000e+00 - 3.07130e+00 0.00000e+00 - 3.07145e+00 0.00000e+00 - 3.07160e+00 0.00000e+00 - 3.07175e+00 0.00000e+00 - 3.07190e+00 0.00000e+00 - 3.07205e+00 0.00000e+00 - 3.07220e+00 0.00000e+00 - 3.07235e+00 0.00000e+00 - 3.07250e+00 0.00000e+00 - 3.07265e+00 0.00000e+00 - 3.07280e+00 0.00000e+00 - 3.07295e+00 0.00000e+00 - 3.07310e+00 0.00000e+00 - 3.07325e+00 0.00000e+00 - 3.07340e+00 0.00000e+00 - 3.07355e+00 0.00000e+00 - 3.07370e+00 0.00000e+00 - 3.07385e+00 0.00000e+00 - 3.07400e+00 0.00000e+00 - 3.07415e+00 0.00000e+00 - 3.07430e+00 0.00000e+00 - 3.07445e+00 0.00000e+00 - 3.07460e+00 0.00000e+00 - 3.07475e+00 0.00000e+00 - 3.07490e+00 0.00000e+00 - 3.07505e+00 0.00000e+00 - 3.07520e+00 0.00000e+00 - 3.07535e+00 0.00000e+00 - 3.07550e+00 0.00000e+00 - 3.07565e+00 0.00000e+00 - 3.07580e+00 0.00000e+00 - 3.07595e+00 0.00000e+00 - 3.07610e+00 0.00000e+00 - 3.07625e+00 0.00000e+00 - 3.07640e+00 0.00000e+00 - 3.07655e+00 0.00000e+00 - 3.07670e+00 0.00000e+00 - 3.07685e+00 0.00000e+00 - 3.07700e+00 0.00000e+00 - 3.07715e+00 0.00000e+00 - 3.07730e+00 0.00000e+00 - 3.07745e+00 0.00000e+00 - 3.07760e+00 0.00000e+00 - 3.07775e+00 0.00000e+00 - 3.07790e+00 0.00000e+00 - 3.07805e+00 0.00000e+00 - 3.07820e+00 0.00000e+00 - 3.07835e+00 0.00000e+00 - 3.07850e+00 0.00000e+00 - 3.07865e+00 0.00000e+00 - 3.07880e+00 0.00000e+00 - 3.07895e+00 0.00000e+00 - 3.07910e+00 0.00000e+00 - 3.07925e+00 0.00000e+00 - 3.07940e+00 0.00000e+00 - 3.07955e+00 0.00000e+00 - 3.07970e+00 0.00000e+00 - 3.07985e+00 0.00000e+00 - 3.08000e+00 0.00000e+00 - 3.08015e+00 0.00000e+00 - 3.08030e+00 0.00000e+00 - 3.08045e+00 0.00000e+00 - 3.08060e+00 0.00000e+00 - 3.08075e+00 0.00000e+00 - 3.08090e+00 0.00000e+00 - 3.08105e+00 0.00000e+00 - 3.08120e+00 0.00000e+00 - 3.08135e+00 0.00000e+00 - 3.08150e+00 0.00000e+00 - 3.08165e+00 0.00000e+00 - 3.08180e+00 0.00000e+00 - 3.08195e+00 0.00000e+00 - 3.08210e+00 0.00000e+00 - 3.08225e+00 0.00000e+00 - 3.08240e+00 0.00000e+00 - 3.08255e+00 0.00000e+00 - 3.08270e+00 0.00000e+00 - 3.08285e+00 0.00000e+00 - 3.08300e+00 0.00000e+00 - 3.08315e+00 0.00000e+00 - 3.08330e+00 0.00000e+00 - 3.08345e+00 0.00000e+00 - 3.08360e+00 0.00000e+00 - 3.08375e+00 0.00000e+00 - 3.08390e+00 0.00000e+00 - 3.08405e+00 0.00000e+00 - 3.08420e+00 0.00000e+00 - 3.08435e+00 0.00000e+00 - 3.08450e+00 0.00000e+00 - 3.08465e+00 0.00000e+00 - 3.08480e+00 0.00000e+00 - 3.08495e+00 0.00000e+00 - 3.08510e+00 0.00000e+00 - 3.08525e+00 0.00000e+00 - 3.08540e+00 0.00000e+00 - 3.08555e+00 0.00000e+00 - 3.08570e+00 0.00000e+00 - 3.08585e+00 0.00000e+00 - 3.08600e+00 0.00000e+00 - 3.08615e+00 0.00000e+00 - 3.08630e+00 0.00000e+00 - 3.08645e+00 0.00000e+00 - 3.08660e+00 0.00000e+00 - 3.08675e+00 0.00000e+00 - 3.08690e+00 0.00000e+00 - 3.08705e+00 0.00000e+00 - 3.08720e+00 0.00000e+00 - 3.08735e+00 0.00000e+00 - 3.08750e+00 0.00000e+00 - 3.08765e+00 0.00000e+00 - 3.08780e+00 0.00000e+00 - 3.08795e+00 0.00000e+00 - 3.08810e+00 0.00000e+00 - 3.08825e+00 0.00000e+00 - 3.08840e+00 0.00000e+00 - 3.08855e+00 0.00000e+00 - 3.08870e+00 0.00000e+00 - 3.08885e+00 0.00000e+00 - 3.08900e+00 0.00000e+00 - 3.08915e+00 0.00000e+00 - 3.08930e+00 0.00000e+00 - 3.08945e+00 0.00000e+00 - 3.08960e+00 0.00000e+00 - 3.08975e+00 0.00000e+00 - 3.08990e+00 0.00000e+00 - 3.09005e+00 0.00000e+00 - 3.09020e+00 0.00000e+00 - 3.09035e+00 0.00000e+00 - 3.09050e+00 0.00000e+00 - 3.09065e+00 0.00000e+00 - 3.09080e+00 0.00000e+00 - 3.09095e+00 0.00000e+00 - 3.09110e+00 0.00000e+00 - 3.09125e+00 0.00000e+00 - 3.09140e+00 0.00000e+00 - 3.09155e+00 0.00000e+00 - 3.09170e+00 0.00000e+00 - 3.09185e+00 0.00000e+00 - 3.09200e+00 0.00000e+00 - 3.09215e+00 0.00000e+00 - 3.09230e+00 0.00000e+00 - 3.09245e+00 0.00000e+00 - 3.09260e+00 0.00000e+00 - 3.09275e+00 0.00000e+00 - 3.09290e+00 0.00000e+00 - 3.09305e+00 0.00000e+00 - 3.09320e+00 0.00000e+00 - 3.09335e+00 0.00000e+00 - 3.09350e+00 0.00000e+00 - 3.09365e+00 0.00000e+00 - 3.09380e+00 0.00000e+00 - 3.09395e+00 0.00000e+00 - 3.09410e+00 0.00000e+00 - 3.09425e+00 0.00000e+00 - 3.09440e+00 0.00000e+00 - 3.09455e+00 0.00000e+00 - 3.09470e+00 0.00000e+00 - 3.09485e+00 0.00000e+00 - 3.09500e+00 0.00000e+00 - 3.09515e+00 0.00000e+00 - 3.09530e+00 0.00000e+00 - 3.09545e+00 0.00000e+00 - 3.09560e+00 0.00000e+00 - 3.09575e+00 0.00000e+00 - 3.09590e+00 0.00000e+00 - 3.09605e+00 0.00000e+00 - 3.09620e+00 0.00000e+00 - 3.09635e+00 0.00000e+00 - 3.09650e+00 0.00000e+00 - 3.09665e+00 0.00000e+00 - 3.09680e+00 0.00000e+00 - 3.09695e+00 0.00000e+00 - 3.09710e+00 5.58372e-16 - 3.09725e+00 1.99309e-15 - 3.09740e+00 1.06707e-15 - 3.09755e+00 1.04100e-15 - 3.09770e+00 1.60694e-16 - 3.09785e+00 2.36544e-15 - 3.09800e+00 2.77270e-15 - 3.09815e+00 3.72062e-15 - 3.09830e+00 6.02322e-15 - 3.09845e+00 6.76999e-15 - 3.09860e+00 4.96414e-15 - 3.09875e+00 4.30998e-15 - 3.09890e+00 0.00000e+00 - 3.09905e+00 0.00000e+00 - 3.09920e+00 0.00000e+00 - 3.09935e+00 0.00000e+00 - 3.09950e+00 0.00000e+00 - 3.09965e+00 0.00000e+00 - 3.09980e+00 0.00000e+00 - 3.09995e+00 0.00000e+00 - 3.10010e+00 0.00000e+00 - 3.10025e+00 0.00000e+00 - 3.10040e+00 0.00000e+00 - 3.10055e+00 0.00000e+00 - 3.10070e+00 0.00000e+00 - 3.10085e+00 0.00000e+00 - 3.10100e+00 0.00000e+00 - 3.10115e+00 0.00000e+00 - 3.10130e+00 0.00000e+00 - 3.10145e+00 0.00000e+00 - 3.10160e+00 0.00000e+00 - 3.10175e+00 0.00000e+00 - 3.10190e+00 0.00000e+00 - 3.10205e+00 0.00000e+00 - 3.10220e+00 0.00000e+00 - 3.10235e+00 0.00000e+00 - 3.10250e+00 0.00000e+00 - 3.10265e+00 0.00000e+00 - 3.10280e+00 0.00000e+00 - 3.10295e+00 5.71611e-16 - 3.10310e+00 2.08250e-15 - 3.10325e+00 3.36317e-15 - 3.10340e+00 2.79468e-15 - 3.10355e+00 2.27290e-15 - 3.10370e+00 7.85197e-17 - 3.10385e+00 5.60702e-18 - 3.10400e+00 2.29109e-15 - 3.10415e+00 2.62249e-15 - 3.10430e+00 2.82090e-15 - 3.10445e+00 3.44552e-15 - 3.10460e+00 3.69595e-15 - 3.10475e+00 4.20493e-15 - 3.10490e+00 4.82810e-15 - 3.10505e+00 3.66104e-15 - 3.10520e+00 4.68919e-15 - 3.10535e+00 5.99280e-15 - 3.10550e+00 6.24943e-15 - 3.10565e+00 3.27648e-15 - 3.10580e+00 6.54997e-16 - 3.10595e+00 0.00000e+00 - 3.10610e+00 0.00000e+00 - 3.10625e+00 0.00000e+00 - 3.10640e+00 0.00000e+00 - 3.10655e+00 0.00000e+00 - 3.10670e+00 0.00000e+00 - 3.10685e+00 0.00000e+00 - 3.10700e+00 0.00000e+00 - 3.10715e+00 0.00000e+00 - 3.10730e+00 0.00000e+00 - 3.10745e+00 0.00000e+00 - 3.10760e+00 0.00000e+00 - 3.10775e+00 4.11022e-16 - 3.10790e+00 1.11977e-15 - 3.10805e+00 1.34049e-15 - 3.10820e+00 2.24700e-15 - 3.10835e+00 3.23383e-15 - 3.10850e+00 2.39424e-15 - 3.10865e+00 1.84195e-15 - 3.10880e+00 9.93534e-16 - 3.10895e+00 1.47563e-15 - 3.10910e+00 2.96344e-15 - 3.10925e+00 3.54854e-15 - 3.10940e+00 4.12558e-15 - 3.10955e+00 3.76067e-15 - 3.10970e+00 4.46471e-15 - 3.10985e+00 3.37997e-15 - 3.11000e+00 2.39836e-15 - 3.11015e+00 1.85936e-15 - 3.11030e+00 1.17760e-15 - 3.11045e+00 1.70788e-15 - 3.11060e+00 7.53774e-16 - 3.11075e+00 2.64109e-15 - 3.11090e+00 2.46937e-15 - 3.11105e+00 1.13950e-15 - 3.11120e+00 1.28214e-16 - 3.11135e+00 0.00000e+00 - 3.11150e+00 0.00000e+00 - 3.11165e+00 0.00000e+00 - 3.11180e+00 0.00000e+00 - 3.11195e+00 0.00000e+00 - 3.11210e+00 0.00000e+00 - 3.11225e+00 0.00000e+00 - 3.11240e+00 0.00000e+00 - 3.11255e+00 0.00000e+00 - 3.11270e+00 0.00000e+00 - 3.11285e+00 0.00000e+00 - 3.11300e+00 0.00000e+00 - 3.11315e+00 0.00000e+00 - 3.11330e+00 0.00000e+00 - 3.11345e+00 0.00000e+00 - 3.11360e+00 0.00000e+00 - 3.11375e+00 0.00000e+00 - 3.11390e+00 0.00000e+00 - 3.11405e+00 0.00000e+00 - 3.11420e+00 0.00000e+00 - 3.11435e+00 0.00000e+00 - 3.11450e+00 0.00000e+00 - 3.11465e+00 0.00000e+00 - 3.11480e+00 0.00000e+00 - 3.11495e+00 0.00000e+00 - 3.11510e+00 0.00000e+00 - 3.11525e+00 0.00000e+00 - 3.11540e+00 0.00000e+00 - 3.11555e+00 0.00000e+00 - 3.11570e+00 0.00000e+00 - 3.11585e+00 0.00000e+00 - 3.11600e+00 0.00000e+00 - 3.11615e+00 0.00000e+00 - 3.11630e+00 0.00000e+00 - 3.11645e+00 0.00000e+00 - 3.11660e+00 0.00000e+00 - 3.11675e+00 0.00000e+00 - 3.11690e+00 0.00000e+00 - 3.11705e+00 0.00000e+00 - 3.11720e+00 0.00000e+00 - 3.11735e+00 0.00000e+00 - 3.11750e+00 0.00000e+00 - 3.11765e+00 0.00000e+00 - 3.11780e+00 0.00000e+00 - 3.11795e+00 0.00000e+00 - 3.11810e+00 0.00000e+00 - 3.11825e+00 0.00000e+00 - 3.11840e+00 0.00000e+00 - 3.11855e+00 0.00000e+00 - 3.11870e+00 0.00000e+00 - 3.11885e+00 0.00000e+00 - 3.11900e+00 0.00000e+00 - 3.11915e+00 0.00000e+00 - 3.11930e+00 0.00000e+00 - 3.11945e+00 0.00000e+00 - 3.11960e+00 0.00000e+00 - 3.11975e+00 0.00000e+00 - 3.11990e+00 0.00000e+00 - 3.12005e+00 0.00000e+00 - 3.12020e+00 0.00000e+00 - 3.12035e+00 0.00000e+00 - 3.12050e+00 0.00000e+00 - 3.12065e+00 0.00000e+00 - 3.12080e+00 0.00000e+00 - 3.12095e+00 0.00000e+00 - 3.12110e+00 0.00000e+00 - 3.12125e+00 0.00000e+00 - 3.12140e+00 0.00000e+00 - 3.12155e+00 0.00000e+00 - 3.12170e+00 0.00000e+00 - 3.12185e+00 0.00000e+00 - 3.12200e+00 0.00000e+00 - 3.12215e+00 0.00000e+00 - 3.12230e+00 0.00000e+00 - 3.12245e+00 0.00000e+00 - 3.12260e+00 0.00000e+00 - 3.12275e+00 0.00000e+00 - 3.12290e+00 0.00000e+00 - 3.12305e+00 0.00000e+00 - 3.12320e+00 0.00000e+00 - 3.12335e+00 0.00000e+00 - 3.12350e+00 0.00000e+00 - 3.12365e+00 0.00000e+00 - 3.12380e+00 0.00000e+00 - 3.12395e+00 0.00000e+00 - 3.12410e+00 0.00000e+00 - 3.12425e+00 0.00000e+00 - 3.12440e+00 0.00000e+00 - 3.12455e+00 0.00000e+00 - 3.12470e+00 0.00000e+00 - 3.12485e+00 0.00000e+00 - 3.12500e+00 0.00000e+00 - 3.12515e+00 0.00000e+00 - 3.12530e+00 0.00000e+00 - 3.12545e+00 0.00000e+00 - 3.12560e+00 0.00000e+00 - 3.12575e+00 0.00000e+00 - 3.12590e+00 0.00000e+00 - 3.12605e+00 0.00000e+00 - 3.12620e+00 0.00000e+00 - 3.12635e+00 0.00000e+00 - 3.12650e+00 0.00000e+00 - 3.12665e+00 0.00000e+00 - 3.12680e+00 0.00000e+00 - 3.12695e+00 0.00000e+00 - 3.12710e+00 0.00000e+00 - 3.12725e+00 0.00000e+00 - 3.12740e+00 0.00000e+00 - 3.12755e+00 0.00000e+00 - 3.12770e+00 0.00000e+00 - 3.12785e+00 0.00000e+00 - 3.12800e+00 0.00000e+00 - 3.12815e+00 0.00000e+00 - 3.12830e+00 0.00000e+00 - 3.12845e+00 0.00000e+00 - 3.12860e+00 0.00000e+00 - 3.12875e+00 0.00000e+00 - 3.12890e+00 0.00000e+00 - 3.12905e+00 0.00000e+00 - 3.12920e+00 0.00000e+00 - 3.12935e+00 0.00000e+00 - 3.12950e+00 0.00000e+00 - 3.12965e+00 0.00000e+00 - 3.12980e+00 0.00000e+00 - 3.12995e+00 0.00000e+00 - 3.13010e+00 0.00000e+00 - 3.13025e+00 0.00000e+00 - 3.13040e+00 0.00000e+00 - 3.13055e+00 0.00000e+00 - 3.13070e+00 0.00000e+00 - 3.13085e+00 0.00000e+00 - 3.13100e+00 0.00000e+00 - 3.13115e+00 0.00000e+00 - 3.13130e+00 0.00000e+00 - 3.13145e+00 0.00000e+00 - 3.13160e+00 8.71126e-16 - 3.13175e+00 1.52566e-15 - 3.13190e+00 2.14720e-15 - 3.13205e+00 3.12396e-15 - 3.13220e+00 3.15771e-15 - 3.13235e+00 2.60450e-15 - 3.13250e+00 3.01140e-15 - 3.13265e+00 3.11838e-15 - 3.13280e+00 3.45096e-15 - 3.13295e+00 3.93911e-15 - 3.13310e+00 5.15440e-15 - 3.13325e+00 6.76224e-15 - 3.13340e+00 6.34890e-15 - 3.13355e+00 4.73104e-15 - 3.13370e+00 4.67807e-15 - 3.13385e+00 5.20744e-15 - 3.13400e+00 4.98392e-15 - 3.13415e+00 5.52921e-15 - 3.13430e+00 5.33596e-15 - 3.13445e+00 5.73973e-15 - 3.13460e+00 4.88994e-15 - 3.13475e+00 3.50042e-15 - 3.13490e+00 3.91320e-15 - 3.13505e+00 4.41735e-15 - 3.13520e+00 4.18883e-15 - 3.13535e+00 3.14767e-15 - 3.13550e+00 2.43305e-15 - 3.13565e+00 3.01984e-15 - 3.13580e+00 1.76431e-15 - 3.13595e+00 1.65385e-15 - 3.13610e+00 1.78182e-15 - 3.13625e+00 4.55002e-15 - 3.13640e+00 2.15856e-15 - 3.13655e+00 7.30377e-16 - 3.13670e+00 2.40993e-15 - 3.13685e+00 2.79867e-15 - 3.13700e+00 1.35379e-15 - 3.13715e+00 1.34847e-15 - 3.13730e+00 1.43606e-16 - 3.13745e+00 1.83074e-15 - 3.13760e+00 1.53225e-15 - 3.13775e+00 6.23143e-16 - 3.13790e+00 4.10060e-16 - 3.13805e+00 2.36323e-15 - 3.13820e+00 3.01895e-15 - 3.13835e+00 1.96480e-15 - 3.13850e+00 3.76305e-16 - 3.13865e+00 5.87297e-16 - 3.13880e+00 1.95635e-16 - 3.13895e+00 0.00000e+00 - 3.13910e+00 0.00000e+00 - 3.13925e+00 0.00000e+00 - 3.13940e+00 2.00191e-15 - 3.13955e+00 3.55556e-15 - 3.13970e+00 1.26998e-15 - 3.13985e+00 3.16882e-16 - 3.14000e+00 3.97925e-16 - 3.14015e+00 2.45813e-16 - 3.14030e+00 2.97480e-15 - 3.14045e+00 2.69837e-15 - 3.14060e+00 9.15351e-16 - 3.14075e+00 2.47449e-15 - 3.14090e+00 3.35618e-15 - 3.14105e+00 4.07217e-15 - 3.14120e+00 3.86003e-15 - 3.14135e+00 1.50262e-15 - 3.14150e+00 9.96977e-17 - 3.14165e+00 0.00000e+00 - 3.14180e+00 8.30823e-16 - 3.14195e+00 1.27412e-15 - 3.14210e+00 6.25265e-16 - 3.14225e+00 3.61812e-16 - 3.14240e+00 2.92424e-16 - 3.14255e+00 1.19192e-15 - 3.14270e+00 1.63713e-15 - 3.14285e+00 1.72137e-15 - 3.14300e+00 1.15368e-15 - 3.14315e+00 0.00000e+00 - 3.14330e+00 0.00000e+00 - 3.14345e+00 0.00000e+00 - 3.14360e+00 0.00000e+00 - 3.14375e+00 0.00000e+00 - 3.14390e+00 0.00000e+00 - 3.14405e+00 0.00000e+00 - 3.14420e+00 0.00000e+00 - 3.14435e+00 4.16019e-16 - 3.14450e+00 6.70789e-16 - 3.14465e+00 2.23541e-15 - 3.14480e+00 2.16258e-15 - 3.14495e+00 1.24146e-15 - 3.14510e+00 1.34108e-15 - 3.14525e+00 0.00000e+00 - 3.14540e+00 0.00000e+00 - 3.14555e+00 0.00000e+00 - 3.14570e+00 0.00000e+00 - 3.14585e+00 0.00000e+00 - 3.14600e+00 0.00000e+00 - 3.14615e+00 0.00000e+00 - 3.14630e+00 0.00000e+00 - 3.14645e+00 0.00000e+00 - 3.14660e+00 0.00000e+00 - 3.14675e+00 0.00000e+00 - 3.14690e+00 0.00000e+00 - 3.14705e+00 0.00000e+00 - 3.14720e+00 0.00000e+00 - 3.14735e+00 0.00000e+00 - 3.14750e+00 0.00000e+00 - 3.14765e+00 0.00000e+00 - 3.14780e+00 0.00000e+00 - 3.14795e+00 0.00000e+00 - 3.14810e+00 0.00000e+00 - 3.14825e+00 0.00000e+00 - 3.14840e+00 0.00000e+00 - 3.14855e+00 0.00000e+00 - 3.14870e+00 0.00000e+00 - 3.14885e+00 0.00000e+00 - 3.14900e+00 0.00000e+00 - 3.14915e+00 0.00000e+00 - 3.14930e+00 0.00000e+00 - 3.14945e+00 0.00000e+00 - 3.14960e+00 0.00000e+00 - 3.14975e+00 0.00000e+00 - 3.14990e+00 0.00000e+00 - 3.15005e+00 0.00000e+00 - 3.15020e+00 0.00000e+00 - 3.15035e+00 0.00000e+00 - 3.15050e+00 0.00000e+00 - 3.15065e+00 0.00000e+00 - 3.15080e+00 0.00000e+00 - 3.15095e+00 0.00000e+00 - 3.15110e+00 0.00000e+00 - 3.15125e+00 1.03468e-15 - 3.15140e+00 6.38805e-16 - 3.15155e+00 1.95994e-15 - 3.15170e+00 1.86710e-15 - 3.15185e+00 2.23404e-15 - 3.15200e+00 2.67321e-15 - 3.15215e+00 3.36049e-15 - 3.15230e+00 2.91211e-15 - 3.15245e+00 5.81199e-15 - 3.15260e+00 4.92843e-15 - 3.15275e+00 2.20273e-15 - 3.15290e+00 3.08276e-15 - 3.15305e+00 3.36948e-15 - 3.15320e+00 3.52559e-15 - 3.15335e+00 4.59348e-15 - 3.15350e+00 4.13290e-15 - 3.15365e+00 3.94441e-15 - 3.15380e+00 4.69643e-15 - 3.15395e+00 5.69814e-15 - 3.15410e+00 4.54698e-15 - 3.15425e+00 3.87937e-15 - 3.15440e+00 3.13493e-15 - 3.15455e+00 4.10936e-15 - 3.15470e+00 2.64748e-15 - 3.15485e+00 4.75476e-15 - 3.15500e+00 5.04312e-15 - 3.15515e+00 4.25556e-15 - 3.15530e+00 5.82699e-15 - 3.15545e+00 6.70981e-15 - 3.15560e+00 7.68258e-15 - 3.15575e+00 5.85779e-15 - 3.15590e+00 6.29435e-15 - 3.15605e+00 6.03602e-15 - 3.15620e+00 4.09719e-15 - 3.15635e+00 4.73063e-15 - 3.15650e+00 5.57684e-15 - 3.15665e+00 6.62558e-15 - 3.15680e+00 5.18783e-15 - 3.15695e+00 3.21509e-15 - 3.15710e+00 4.25017e-15 - 3.15725e+00 3.49455e-15 - 3.15740e+00 2.65679e-15 - 3.15755e+00 4.47504e-15 - 3.15770e+00 5.66079e-15 - 3.15785e+00 7.46600e-15 - 3.15800e+00 3.95012e-15 - 3.15815e+00 4.18637e-15 - 3.15830e+00 6.86152e-15 - 3.15845e+00 5.23482e-15 - 3.15860e+00 5.25220e-15 - 3.15875e+00 5.05024e-15 - 3.15890e+00 4.75158e-15 - 3.15905e+00 4.85471e-15 - 3.15920e+00 4.10076e-15 - 3.15935e+00 4.89295e-15 - 3.15950e+00 6.50075e-15 - 3.15965e+00 6.02511e-15 - 3.15980e+00 5.63460e-15 - 3.15995e+00 5.99632e-15 - 3.16010e+00 5.58869e-15 - 3.16025e+00 5.05957e-15 - 3.16040e+00 5.58386e-15 - 3.16055e+00 6.26710e-15 - 3.16070e+00 5.31032e-15 - 3.16085e+00 4.87959e-15 - 3.16100e+00 4.90780e-15 - 3.16115e+00 5.15417e-15 - 3.16130e+00 5.38172e-15 - 3.16145e+00 4.87395e-15 - 3.16160e+00 4.91210e-15 - 3.16175e+00 6.20467e-15 - 3.16190e+00 5.99565e-15 - 3.16205e+00 5.52028e-15 - 3.16220e+00 7.31473e-15 - 3.16235e+00 5.86392e-15 - 3.16250e+00 5.12261e-15 - 3.16265e+00 5.15887e-15 - 3.16280e+00 5.08985e-15 - 3.16295e+00 3.93365e-15 - 3.16310e+00 3.78457e-15 - 3.16325e+00 4.29803e-15 - 3.16340e+00 4.18625e-15 - 3.16355e+00 4.78264e-15 - 3.16370e+00 5.29062e-15 - 3.16385e+00 4.69664e-15 - 3.16400e+00 3.70821e-15 - 3.16415e+00 3.16359e-15 - 3.16430e+00 3.72310e-15 - 3.16445e+00 5.16599e-15 - 3.16460e+00 4.18741e-15 - 3.16475e+00 2.87134e-15 - 3.16490e+00 3.36596e-15 - 3.16505e+00 4.71507e-15 - 3.16520e+00 4.16196e-15 - 3.16535e+00 3.89680e-15 - 3.16550e+00 3.66618e-15 - 3.16565e+00 1.97609e-15 - 3.16580e+00 3.10281e-15 - 3.16595e+00 4.00671e-15 - 3.16610e+00 4.40707e-15 - 3.16625e+00 4.62562e-15 - 3.16640e+00 3.92900e-15 - 3.16655e+00 3.10470e-15 - 3.16670e+00 3.35484e-15 - 3.16685e+00 3.49895e-15 - 3.16700e+00 3.38252e-15 - 3.16715e+00 4.06959e-15 - 3.16730e+00 3.87187e-15 - 3.16745e+00 2.49928e-15 - 3.16760e+00 2.58369e-15 - 3.16775e+00 3.01453e-15 - 3.16790e+00 3.89064e-15 - 3.16805e+00 5.21422e-15 - 3.16820e+00 5.50647e-15 - 3.16835e+00 4.32808e-15 - 3.16850e+00 6.53307e-15 - 3.16865e+00 7.22165e-15 - 3.16880e+00 4.10403e-15 - 3.16895e+00 2.91918e-15 - 3.16910e+00 4.70344e-15 - 3.16925e+00 6.17809e-15 - 3.16940e+00 6.02121e-15 - 3.16955e+00 6.41893e-15 - 3.16970e+00 6.68253e-15 - 3.16985e+00 7.50035e-15 - 3.17000e+00 6.90577e-15 - 3.17015e+00 6.87767e-15 - 3.17030e+00 6.96811e-15 - 3.17045e+00 6.85986e-15 - 3.17060e+00 7.38948e-15 - 3.17075e+00 6.24520e-15 - 3.17090e+00 6.68720e-15 - 3.17105e+00 7.77225e-15 - 3.17120e+00 4.97645e-15 - 3.17135e+00 7.89794e-15 - 3.17150e+00 6.04570e-15 - 3.17165e+00 5.67253e-15 - 3.17180e+00 6.22472e-15 - 3.17195e+00 3.83197e-15 - 3.17210e+00 3.58242e-15 - 3.17225e+00 2.88935e-15 - 3.17240e+00 2.26054e-15 - 3.17255e+00 2.28958e-15 - 3.17270e+00 2.17657e-15 - 3.17285e+00 2.12015e-15 - 3.17300e+00 1.06952e-15 - 3.17315e+00 2.45107e-15 - 3.17330e+00 3.65029e-15 - 3.17345e+00 3.52162e-15 - 3.17360e+00 3.78065e-15 - 3.17375e+00 5.10351e-15 - 3.17390e+00 5.21092e-15 - 3.17405e+00 6.85980e-15 - 3.17420e+00 7.44574e-15 - 3.17435e+00 7.29312e-15 - 3.17450e+00 8.40248e-15 - 3.17465e+00 8.13161e-15 - 3.17480e+00 7.62617e-15 - 3.17495e+00 6.74900e-15 - 3.17510e+00 5.84120e-15 - 3.17525e+00 6.23092e-15 - 3.17540e+00 6.48259e-15 - 3.17555e+00 7.26509e-15 - 3.17570e+00 7.64686e-15 - 3.17585e+00 8.19678e-15 - 3.17600e+00 7.47115e-15 - 3.17615e+00 6.72187e-15 - 3.17630e+00 7.45944e-15 - 3.17645e+00 6.50648e-15 - 3.17660e+00 6.51847e-15 - 3.17675e+00 6.78517e-15 - 3.17690e+00 6.60238e-15 - 3.17705e+00 7.06176e-15 - 3.17720e+00 5.39950e-15 - 3.17735e+00 4.80305e-15 - 3.17750e+00 4.70999e-15 - 3.17765e+00 4.36756e-15 - 3.17780e+00 3.27337e-15 - 3.17795e+00 4.64300e-15 - 3.17810e+00 3.95310e-15 - 3.17825e+00 3.16882e-15 - 3.17840e+00 3.01785e-15 - 3.17855e+00 4.03629e-15 - 3.17870e+00 4.39120e-15 - 3.17885e+00 4.49656e-15 - 3.17900e+00 3.33298e-15 - 3.17915e+00 4.17559e-15 - 3.17930e+00 5.70726e-15 - 3.17945e+00 5.50145e-15 - 3.17960e+00 7.83180e-15 - 3.17975e+00 7.60031e-15 - 3.17990e+00 1.08614e-14 - 3.18005e+00 8.71209e-15 - 3.18020e+00 1.07533e-14 - 3.18035e+00 7.85470e-15 - 3.18050e+00 7.68562e-15 - 3.18065e+00 1.07697e-14 - 3.18080e+00 9.00904e-15 - 3.18095e+00 9.31803e-15 - 3.18110e+00 9.27986e-15 - 3.18125e+00 1.11480e-14 - 3.18140e+00 1.30833e-14 - 3.18155e+00 8.20151e-15 - 3.18170e+00 7.41455e-15 - 3.18185e+00 8.30894e-15 - 3.18200e+00 6.20707e-15 - 3.18215e+00 3.07289e-15 - 3.18230e+00 2.31599e-15 - 3.18245e+00 3.49768e-15 - 3.18260e+00 6.58650e-16 - 3.18275e+00 0.00000e+00 - 3.18290e+00 1.19253e-15 - 3.18305e+00 5.58149e-16 - 3.18320e+00 6.49105e-16 - 3.18335e+00 0.00000e+00 - 3.18350e+00 0.00000e+00 - 3.18365e+00 0.00000e+00 - 3.18380e+00 0.00000e+00 - 3.18395e+00 0.00000e+00 - 3.18410e+00 0.00000e+00 - 3.18425e+00 0.00000e+00 - 3.18440e+00 0.00000e+00 - 3.18455e+00 0.00000e+00 - 3.18470e+00 0.00000e+00 - 3.18485e+00 0.00000e+00 - 3.18500e+00 0.00000e+00 - 3.18515e+00 0.00000e+00 - 3.18530e+00 0.00000e+00 - 3.18545e+00 0.00000e+00 - 3.18560e+00 0.00000e+00 - 3.18575e+00 0.00000e+00 - 3.18590e+00 0.00000e+00 - 3.18605e+00 0.00000e+00 - 3.18620e+00 0.00000e+00 - 3.18635e+00 0.00000e+00 - 3.18650e+00 0.00000e+00 - 3.18665e+00 0.00000e+00 - 3.18680e+00 0.00000e+00 - 3.18695e+00 0.00000e+00 - 3.18710e+00 0.00000e+00 - 3.18725e+00 0.00000e+00 - 3.18740e+00 0.00000e+00 - 3.18755e+00 0.00000e+00 - 3.18770e+00 0.00000e+00 - 3.18785e+00 0.00000e+00 - 3.18800e+00 0.00000e+00 - 3.18815e+00 0.00000e+00 - 3.18830e+00 0.00000e+00 - 3.18845e+00 0.00000e+00 - 3.18860e+00 0.00000e+00 - 3.18875e+00 0.00000e+00 - 3.18890e+00 0.00000e+00 - 3.18905e+00 0.00000e+00 - 3.18920e+00 0.00000e+00 - 3.18935e+00 0.00000e+00 - 3.18950e+00 0.00000e+00 - 3.18965e+00 0.00000e+00 - 3.18980e+00 0.00000e+00 - 3.18995e+00 0.00000e+00 - 3.19010e+00 0.00000e+00 - 3.19025e+00 0.00000e+00 - 3.19040e+00 1.12838e-16 - 3.19055e+00 1.52523e-15 - 3.19070e+00 2.50152e-15 - 3.19085e+00 4.11401e-15 - 3.19100e+00 3.36144e-15 - 3.19115e+00 8.13946e-16 - 3.19130e+00 3.47340e-17 - 3.19145e+00 0.00000e+00 - 3.19160e+00 0.00000e+00 - 3.19175e+00 0.00000e+00 - 3.19190e+00 0.00000e+00 - 3.19205e+00 0.00000e+00 - 3.19220e+00 0.00000e+00 - 3.19235e+00 0.00000e+00 - 3.19250e+00 0.00000e+00 - 3.19265e+00 0.00000e+00 - 3.19280e+00 0.00000e+00 - 3.19295e+00 0.00000e+00 - 3.19310e+00 0.00000e+00 - 3.19325e+00 0.00000e+00 - 3.19340e+00 0.00000e+00 - 3.19355e+00 0.00000e+00 - 3.19370e+00 0.00000e+00 - 3.19385e+00 0.00000e+00 - 3.19400e+00 0.00000e+00 - 3.19415e+00 0.00000e+00 - 3.19430e+00 0.00000e+00 - 3.19445e+00 0.00000e+00 - 3.19460e+00 0.00000e+00 - 3.19475e+00 0.00000e+00 - 3.19490e+00 0.00000e+00 - 3.19505e+00 0.00000e+00 - 3.19520e+00 0.00000e+00 - 3.19535e+00 0.00000e+00 - 3.19550e+00 0.00000e+00 - 3.19565e+00 0.00000e+00 - 3.19580e+00 0.00000e+00 - 3.19595e+00 0.00000e+00 - 3.19610e+00 0.00000e+00 - 3.19625e+00 0.00000e+00 - 3.19640e+00 0.00000e+00 - 3.19655e+00 0.00000e+00 - 3.19670e+00 0.00000e+00 - 3.19685e+00 0.00000e+00 - 3.19700e+00 0.00000e+00 - 3.19715e+00 0.00000e+00 - 3.19730e+00 0.00000e+00 - 3.19745e+00 0.00000e+00 - 3.19760e+00 0.00000e+00 - 3.19775e+00 0.00000e+00 - 3.19790e+00 0.00000e+00 - 3.19805e+00 0.00000e+00 - 3.19820e+00 0.00000e+00 - 3.19835e+00 0.00000e+00 - 3.19850e+00 0.00000e+00 - 3.19865e+00 0.00000e+00 - 3.19880e+00 0.00000e+00 - 3.19895e+00 0.00000e+00 - 3.19910e+00 0.00000e+00 - 3.19925e+00 0.00000e+00 - 3.19940e+00 0.00000e+00 - 3.19955e+00 0.00000e+00 - 3.19970e+00 8.18626e-16 - 3.19985e+00 8.57952e-16 - 3.20000e+00 1.28274e-15 - 3.20015e+00 2.07526e-15 - 3.20030e+00 1.13192e-15 - 3.20045e+00 4.73631e-16 - 3.20060e+00 4.65423e-16 - 3.20075e+00 7.31635e-16 - 3.20090e+00 2.15862e-16 - 3.20105e+00 1.16197e-15 - 3.20120e+00 6.97938e-16 - 3.20135e+00 4.17332e-16 - 3.20150e+00 4.62380e-16 - 3.20165e+00 1.07188e-15 - 3.20180e+00 2.73741e-15 - 3.20195e+00 2.90819e-15 - 3.20210e+00 2.57542e-15 - 3.20225e+00 2.96890e-15 - 3.20240e+00 3.89670e-15 - 3.20255e+00 3.39211e-15 - 3.20270e+00 2.69734e-15 - 3.20285e+00 2.81578e-15 - 3.20300e+00 2.89097e-15 - 3.20315e+00 3.03790e-15 - 3.20330e+00 3.44188e-15 - 3.20345e+00 4.48003e-15 - 3.20360e+00 4.34677e-15 - 3.20375e+00 4.19668e-15 - 3.20390e+00 4.67665e-15 - 3.20405e+00 3.40117e-15 - 3.20420e+00 3.09420e-15 - 3.20435e+00 3.61153e-15 - 3.20450e+00 2.96434e-15 - 3.20465e+00 3.33092e-15 - 3.20480e+00 3.32020e-15 - 3.20495e+00 2.92890e-15 - 3.20510e+00 2.91665e-15 - 3.20525e+00 3.64980e-15 - 3.20540e+00 3.23572e-15 - 3.20555e+00 4.06972e-15 - 3.20570e+00 4.71999e-15 - 3.20585e+00 4.03288e-15 - 3.20600e+00 2.68387e-15 - 3.20615e+00 2.57296e-15 - 3.20630e+00 4.32245e-15 - 3.20645e+00 3.75870e-15 - 3.20660e+00 3.35831e-15 - 3.20675e+00 2.55436e-15 - 3.20690e+00 2.19120e-15 - 3.20705e+00 2.27436e-15 - 3.20720e+00 2.50857e-15 - 3.20735e+00 2.79560e-15 - 3.20750e+00 3.76259e-15 - 3.20765e+00 4.09276e-15 - 3.20780e+00 4.43583e-15 - 3.20795e+00 3.52103e-15 - 3.20810e+00 2.44140e-15 - 3.20825e+00 2.61207e-15 - 3.20840e+00 2.73682e-15 - 3.20855e+00 1.84500e-15 - 3.20870e+00 1.76876e-15 - 3.20885e+00 1.82311e-15 - 3.20900e+00 2.91366e-15 - 3.20915e+00 3.68269e-15 - 3.20930e+00 3.32138e-15 - 3.20945e+00 3.41190e-15 - 3.20960e+00 4.14423e-15 - 3.20975e+00 3.02268e-15 - 3.20990e+00 5.08357e-15 - 3.21005e+00 6.16296e-15 - 3.21020e+00 4.61898e-15 - 3.21035e+00 4.13177e-15 - 3.21050e+00 3.91144e-15 - 3.21065e+00 2.69842e-15 - 3.21080e+00 1.20574e-15 - 3.21095e+00 6.05623e-17 - 3.21110e+00 5.58407e-16 - 3.21125e+00 1.11525e-15 - 3.21140e+00 0.00000e+00 - 3.21155e+00 0.00000e+00 - 3.21170e+00 0.00000e+00 - 3.21185e+00 0.00000e+00 - 3.21200e+00 0.00000e+00 - 3.21215e+00 0.00000e+00 - 3.21230e+00 0.00000e+00 - 3.21245e+00 0.00000e+00 - 3.21260e+00 0.00000e+00 - 3.21275e+00 0.00000e+00 - 3.21290e+00 0.00000e+00 - 3.21305e+00 0.00000e+00 - 3.21320e+00 0.00000e+00 - 3.21335e+00 0.00000e+00 - 3.21350e+00 0.00000e+00 - 3.21365e+00 0.00000e+00 - 3.21380e+00 0.00000e+00 - 3.21395e+00 0.00000e+00 - 3.21410e+00 0.00000e+00 - 3.21425e+00 0.00000e+00 - 3.21440e+00 0.00000e+00 - 3.21455e+00 0.00000e+00 - 3.21470e+00 0.00000e+00 - 3.21485e+00 0.00000e+00 - 3.21500e+00 0.00000e+00 - 3.21515e+00 0.00000e+00 - 3.21530e+00 0.00000e+00 - 3.21545e+00 0.00000e+00 - 3.21560e+00 0.00000e+00 - 3.21575e+00 0.00000e+00 - 3.21590e+00 0.00000e+00 - 3.21605e+00 0.00000e+00 - 3.21620e+00 8.97304e-16 - 3.21635e+00 1.62639e-15 - 3.21650e+00 1.25217e-15 - 3.21665e+00 8.72224e-16 - 3.21680e+00 1.55556e-15 - 3.21695e+00 7.18142e-16 - 3.21710e+00 1.42237e-15 - 3.21725e+00 1.93466e-15 - 3.21740e+00 1.84417e-15 - 3.21755e+00 2.10689e-15 - 3.21770e+00 5.79780e-16 - 3.21785e+00 8.01491e-18 - 3.21800e+00 1.64214e-15 - 3.21815e+00 2.37109e-15 - 3.21830e+00 1.89422e-15 - 3.21845e+00 2.45693e-15 - 3.21860e+00 2.43425e-15 - 3.21875e+00 2.30540e-15 - 3.21890e+00 2.12163e-15 - 3.21905e+00 2.48697e-15 - 3.21920e+00 3.04385e-15 - 3.21935e+00 2.94632e-15 - 3.21950e+00 2.33405e-15 - 3.21965e+00 2.37642e-15 - 3.21980e+00 1.69804e-15 - 3.21995e+00 1.27078e-15 - 3.22010e+00 1.17207e-15 - 3.22025e+00 4.02439e-16 - 3.22040e+00 0.00000e+00 - 3.22055e+00 0.00000e+00 - 3.22070e+00 0.00000e+00 - 3.22085e+00 0.00000e+00 - 3.22100e+00 0.00000e+00 - 3.22115e+00 0.00000e+00 - 3.22130e+00 0.00000e+00 - 3.22145e+00 0.00000e+00 - 3.22160e+00 0.00000e+00 - 3.22175e+00 0.00000e+00 - 3.22190e+00 0.00000e+00 - 3.22205e+00 0.00000e+00 - 3.22220e+00 0.00000e+00 - 3.22235e+00 0.00000e+00 - 3.22250e+00 0.00000e+00 - 3.22265e+00 0.00000e+00 - 3.22280e+00 0.00000e+00 - 3.22295e+00 0.00000e+00 - 3.22310e+00 0.00000e+00 - 3.22325e+00 0.00000e+00 - 3.22340e+00 0.00000e+00 - 3.22355e+00 0.00000e+00 - 3.22370e+00 0.00000e+00 - 3.22385e+00 0.00000e+00 - 3.22400e+00 0.00000e+00 - 3.22415e+00 0.00000e+00 - 3.22430e+00 0.00000e+00 - 3.22445e+00 0.00000e+00 - 3.22460e+00 0.00000e+00 - 3.22475e+00 0.00000e+00 - 3.22490e+00 0.00000e+00 - 3.22505e+00 0.00000e+00 - 3.22520e+00 0.00000e+00 - 3.22535e+00 0.00000e+00 - 3.22550e+00 0.00000e+00 - 3.22565e+00 0.00000e+00 - 3.22580e+00 0.00000e+00 - 3.22595e+00 0.00000e+00 - 3.22610e+00 0.00000e+00 - 3.22625e+00 0.00000e+00 - 3.22640e+00 0.00000e+00 - 3.22655e+00 0.00000e+00 - 3.22670e+00 0.00000e+00 - 3.22685e+00 0.00000e+00 - 3.22700e+00 0.00000e+00 - 3.22715e+00 0.00000e+00 - 3.22730e+00 0.00000e+00 - 3.22745e+00 0.00000e+00 - 3.22760e+00 0.00000e+00 - 3.22775e+00 0.00000e+00 - 3.22790e+00 0.00000e+00 - 3.22805e+00 0.00000e+00 - 3.22820e+00 0.00000e+00 - 3.22835e+00 0.00000e+00 - 3.22850e+00 0.00000e+00 - 3.22865e+00 0.00000e+00 - 3.22880e+00 0.00000e+00 - 3.22895e+00 0.00000e+00 - 3.22910e+00 0.00000e+00 - 3.22925e+00 0.00000e+00 - 3.22940e+00 0.00000e+00 - 3.22955e+00 0.00000e+00 - 3.22970e+00 0.00000e+00 - 3.22985e+00 0.00000e+00 - 3.23000e+00 0.00000e+00 - 3.23015e+00 0.00000e+00 - 3.23030e+00 0.00000e+00 - 3.23045e+00 0.00000e+00 - 3.23060e+00 1.19972e-17 - 3.23075e+00 4.72210e-16 - 3.23090e+00 7.20397e-16 - 3.23105e+00 1.46872e-15 - 3.23120e+00 1.01675e-15 - 3.23135e+00 1.47561e-15 - 3.23150e+00 1.57372e-15 - 3.23165e+00 1.62652e-15 - 3.23180e+00 2.39976e-15 - 3.23195e+00 3.11256e-15 - 3.23210e+00 3.98632e-15 - 3.23225e+00 3.62096e-15 - 3.23240e+00 3.83882e-15 - 3.23255e+00 3.51808e-15 - 3.23270e+00 3.51959e-15 - 3.23285e+00 3.32010e-15 - 3.23300e+00 3.53620e-15 - 3.23315e+00 3.78890e-15 - 3.23330e+00 4.13394e-15 - 3.23345e+00 3.13051e-15 - 3.23360e+00 2.70716e-15 - 3.23375e+00 2.96595e-15 - 3.23390e+00 3.76013e-15 - 3.23405e+00 5.16008e-15 - 3.23420e+00 5.26395e-15 - 3.23435e+00 5.61664e-15 - 3.23450e+00 5.93031e-15 - 3.23465e+00 6.04771e-15 - 3.23480e+00 5.91096e-15 - 3.23495e+00 5.64955e-15 - 3.23510e+00 4.83190e-15 - 3.23525e+00 5.60810e-15 - 3.23540e+00 5.71680e-15 - 3.23555e+00 5.29710e-15 - 3.23570e+00 5.06629e-15 - 3.23585e+00 5.42487e-15 - 3.23600e+00 6.18118e-15 - 3.23615e+00 5.30854e-15 - 3.23630e+00 4.22991e-15 - 3.23645e+00 3.95490e-15 - 3.23660e+00 3.73129e-15 - 3.23675e+00 3.61882e-15 - 3.23690e+00 3.56679e-15 - 3.23705e+00 2.44040e-15 - 3.23720e+00 2.71193e-15 - 3.23735e+00 3.51028e-15 - 3.23750e+00 3.43497e-15 - 3.23765e+00 3.37542e-15 - 3.23780e+00 3.30248e-15 - 3.23795e+00 2.78842e-15 - 3.23810e+00 2.39751e-15 - 3.23825e+00 2.86186e-15 - 3.23840e+00 2.50023e-15 - 3.23855e+00 1.71540e-15 - 3.23870e+00 8.96600e-16 - 3.23885e+00 0.00000e+00 - 3.23900e+00 0.00000e+00 - 3.23915e+00 0.00000e+00 - 3.23930e+00 0.00000e+00 - 3.23945e+00 0.00000e+00 - 3.23960e+00 0.00000e+00 - 3.23975e+00 0.00000e+00 - 3.23990e+00 0.00000e+00 - 3.24005e+00 0.00000e+00 - 3.24020e+00 0.00000e+00 - 3.24035e+00 0.00000e+00 - 3.24050e+00 0.00000e+00 - 3.24065e+00 0.00000e+00 - 3.24080e+00 0.00000e+00 - 3.24095e+00 0.00000e+00 - 3.24110e+00 0.00000e+00 - 3.24125e+00 0.00000e+00 - 3.24140e+00 0.00000e+00 - 3.24155e+00 0.00000e+00 - 3.24170e+00 0.00000e+00 - 3.24185e+00 0.00000e+00 - 3.24200e+00 0.00000e+00 - 3.24215e+00 0.00000e+00 - 3.24230e+00 0.00000e+00 - 3.24245e+00 0.00000e+00 - 3.24260e+00 0.00000e+00 - 3.24275e+00 0.00000e+00 - 3.24290e+00 0.00000e+00 - 3.24305e+00 0.00000e+00 - 3.24320e+00 0.00000e+00 - 3.24335e+00 0.00000e+00 - 3.24350e+00 0.00000e+00 - 3.24365e+00 0.00000e+00 - 3.24380e+00 0.00000e+00 - 3.24395e+00 0.00000e+00 - 3.24410e+00 0.00000e+00 - 3.24425e+00 0.00000e+00 - 3.24440e+00 0.00000e+00 - 3.24455e+00 1.45022e-16 - 3.24470e+00 8.02991e-16 - 3.24485e+00 2.87935e-15 - 3.24500e+00 4.02014e-15 - 3.24515e+00 4.60221e-15 - 3.24530e+00 4.52167e-15 - 3.24545e+00 4.15068e-15 - 3.24560e+00 4.82358e-15 - 3.24575e+00 2.20628e-15 - 3.24590e+00 1.44888e-15 - 3.24605e+00 2.22367e-15 - 3.24620e+00 2.54760e-15 - 3.24635e+00 2.13172e-15 - 3.24650e+00 1.89007e-15 - 3.24665e+00 1.63224e-15 - 3.24680e+00 1.05017e-15 - 3.24695e+00 9.39143e-16 - 3.24710e+00 2.49809e-15 - 3.24725e+00 4.02035e-15 - 3.24740e+00 3.97365e-15 - 3.24755e+00 3.73401e-15 - 3.24770e+00 3.03703e-15 - 3.24785e+00 3.07613e-15 - 3.24800e+00 3.67777e-15 - 3.24815e+00 4.08248e-15 - 3.24830e+00 3.68102e-15 - 3.24845e+00 3.09483e-15 - 3.24860e+00 3.23425e-15 - 3.24875e+00 3.60479e-15 - 3.24890e+00 2.75961e-15 - 3.24905e+00 2.39864e-15 - 3.24920e+00 2.93166e-15 - 3.24935e+00 1.97982e-15 - 3.24950e+00 1.83073e-15 - 3.24965e+00 1.18883e-15 - 3.24980e+00 1.08008e-15 - 3.24995e+00 1.22270e-15 - 3.25010e+00 1.55169e-15 - 3.25025e+00 1.59015e-15 - 3.25040e+00 9.13673e-16 - 3.25055e+00 6.08857e-17 - 3.25070e+00 -4.24584e-19 - 3.25085e+00 -4.24584e-19 - 3.25100e+00 -4.24584e-19 - 3.25115e+00 -4.24584e-19 - 3.25130e+00 -4.24584e-19 - 3.25145e+00 -4.24584e-19 - 3.25160e+00 -4.24584e-19 - 3.25175e+00 -4.24584e-19 - 3.25190e+00 -4.24584e-19 - 3.25205e+00 -4.24584e-19 - 3.25220e+00 -4.24584e-19 - 3.25235e+00 -4.24584e-19 - 3.25250e+00 -4.24584e-19 - 3.25265e+00 -4.24584e-19 - 3.25280e+00 1.58552e-15 - 3.25295e+00 1.86533e-15 - 3.25310e+00 1.38383e-15 - 3.25325e+00 5.53007e-16 - 3.25340e+00 5.32382e-16 - 3.25355e+00 6.04069e-16 - 3.25370e+00 8.57139e-17 - 3.25385e+00 -3.21591e-21 - 3.25400e+00 -2.66696e-22 - 3.25415e+00 -1.40697e-23 - 3.25430e+00 -5.18716e-25 - 3.25445e+00 0.00000e+00 - 3.25460e+00 0.00000e+00 - 3.25475e+00 0.00000e+00 - 3.25490e+00 0.00000e+00 - 3.25505e+00 0.00000e+00 - 3.25520e+00 0.00000e+00 - 3.25535e+00 0.00000e+00 - 3.25550e+00 0.00000e+00 - 3.25565e+00 0.00000e+00 - 3.25580e+00 0.00000e+00 - 3.25595e+00 5.18439e-17 - 3.25610e+00 4.76451e-16 - 3.25625e+00 5.42101e-16 - 3.25640e+00 4.34997e-18 - 3.25655e+00 0.00000e+00 - 3.25670e+00 1.83583e-17 - 3.25685e+00 2.43892e-16 - 3.25700e+00 5.57953e-16 - 3.25715e+00 4.11516e-16 - 3.25730e+00 0.00000e+00 - 3.25745e+00 0.00000e+00 - 3.25760e+00 2.02861e-16 - 3.25775e+00 5.38784e-16 - 3.25790e+00 9.79569e-16 - 3.25805e+00 1.12059e-15 - 3.25820e+00 1.38947e-15 - 3.25835e+00 1.22870e-15 - 3.25850e+00 1.37987e-16 - 3.25865e+00 3.58884e-17 - 3.25880e+00 4.39136e-16 - 3.25895e+00 0.00000e+00 - 3.25910e+00 0.00000e+00 - 3.25925e+00 8.90606e-17 - 3.25940e+00 7.28579e-18 - 3.25955e+00 0.00000e+00 - 3.25970e+00 0.00000e+00 - 3.25985e+00 0.00000e+00 - 3.26000e+00 8.71334e-16 - 3.26015e+00 2.23080e-15 - 3.26030e+00 1.88260e-15 - 3.26045e+00 1.66367e-15 - 3.26060e+00 2.63119e-15 - 3.26075e+00 2.12233e-15 - 3.26090e+00 2.49234e-15 - 3.26105e+00 2.76778e-15 - 3.26120e+00 2.10741e-15 - 3.26135e+00 3.12956e-15 - 3.26150e+00 3.15231e-15 - 3.26165e+00 1.84919e-15 - 3.26180e+00 1.52944e-15 - 3.26195e+00 1.02781e-15 - 3.26210e+00 1.36455e-15 - 3.26225e+00 1.10900e-15 - 3.26240e+00 1.49178e-15 - 3.26255e+00 1.37937e-15 - 3.26270e+00 1.64165e-15 - 3.26285e+00 1.71662e-15 - 3.26300e+00 1.29325e-15 - 3.26315e+00 6.68235e-16 - 3.26330e+00 6.84173e-16 - 3.26345e+00 5.90206e-16 - 3.26360e+00 6.22759e-16 - 3.26375e+00 3.64534e-16 - 3.26390e+00 5.80287e-16 - 3.26405e+00 2.28142e-16 - 3.26420e+00 0.00000e+00 - 3.26435e+00 6.97149e-16 - 3.26450e+00 1.28713e-15 - 3.26465e+00 1.83362e-15 - 3.26480e+00 1.33589e-15 - 3.26495e+00 1.14321e-15 - 3.26510e+00 1.51886e-15 - 3.26525e+00 2.07439e-15 - 3.26540e+00 2.28666e-15 - 3.26555e+00 1.34986e-15 - 3.26570e+00 5.64394e-16 - 3.26585e+00 8.87229e-16 - 3.26600e+00 2.57381e-15 - 3.26615e+00 3.65545e-15 - 3.26630e+00 3.26608e-15 - 3.26645e+00 3.64121e-15 - 3.26660e+00 4.31208e-15 - 3.26675e+00 2.70044e-15 - 3.26690e+00 3.06468e-15 - 3.26705e+00 3.63047e-15 - 3.26720e+00 2.38490e-15 - 3.26735e+00 1.38177e-15 - 3.26750e+00 1.92545e-16 - 3.26765e+00 3.52764e-16 - 3.26780e+00 2.00981e-16 - 3.26795e+00 0.00000e+00 - 3.26810e+00 6.55999e-16 - 3.26825e+00 7.96925e-16 - 3.26840e+00 2.30606e-15 - 3.26855e+00 3.05738e-15 - 3.26870e+00 2.82618e-15 - 3.26885e+00 2.65286e-15 - 3.26900e+00 2.45024e-15 - 3.26915e+00 5.76092e-16 - 3.26930e+00 1.74848e-17 - 3.26945e+00 0.00000e+00 - 3.26960e+00 0.00000e+00 - 3.26975e+00 0.00000e+00 - 3.26990e+00 0.00000e+00 - 3.27005e+00 0.00000e+00 - 3.27020e+00 0.00000e+00 - 3.27035e+00 0.00000e+00 - 3.27050e+00 0.00000e+00 - 3.27065e+00 0.00000e+00 - 3.27080e+00 5.62587e-18 - 3.27095e+00 3.56394e-17 - 3.27110e+00 9.62664e-16 - 3.27125e+00 9.81005e-16 - 3.27140e+00 8.44826e-16 - 3.27155e+00 1.01494e-15 - 3.27170e+00 1.99060e-15 - 3.27185e+00 1.04459e-15 - 3.27200e+00 1.15813e-15 - 3.27215e+00 0.00000e+00 - 3.27230e+00 0.00000e+00 - 3.27245e+00 0.00000e+00 - 3.27260e+00 0.00000e+00 - 3.27275e+00 0.00000e+00 - 3.27290e+00 0.00000e+00 - 3.27305e+00 2.81683e-16 - 3.27320e+00 2.89602e-16 - 3.27335e+00 0.00000e+00 - 3.27350e+00 1.96029e-16 - 3.27365e+00 1.96494e-16 - 3.27380e+00 0.00000e+00 - 3.27395e+00 3.11361e-17 - 3.27410e+00 2.64682e-16 - 3.27425e+00 5.13417e-17 - 3.27440e+00 0.00000e+00 - 3.27455e+00 1.32785e-15 - 3.27470e+00 3.26562e-15 - 3.27485e+00 4.22718e-15 - 3.27500e+00 6.09343e-15 - 3.27515e+00 6.61155e-15 - 3.27530e+00 6.35311e-15 - 3.27545e+00 6.31810e-15 - 3.27560e+00 5.76050e-15 - 3.27575e+00 4.03629e-15 - 3.27590e+00 7.97137e-16 - 3.27605e+00 0.00000e+00 - 3.27620e+00 3.72003e-18 - 3.27635e+00 8.34665e-16 - 3.27650e+00 4.87692e-16 - 3.27665e+00 3.94797e-16 - 3.27680e+00 1.00510e-15 - 3.27695e+00 0.00000e+00 - 3.27710e+00 3.58190e-16 - 3.27725e+00 1.18915e-15 - 3.27740e+00 0.00000e+00 - 3.27755e+00 2.94164e-16 - 3.27770e+00 7.00041e-16 - 3.27785e+00 4.96329e-17 - 3.27800e+00 0.00000e+00 - 3.27815e+00 8.13268e-16 - 3.27830e+00 2.24837e-16 - 3.27845e+00 0.00000e+00 - 3.27860e+00 0.00000e+00 - 3.27875e+00 7.17585e-16 - 3.27890e+00 9.92308e-16 - 3.27905e+00 2.08621e-16 - 3.27920e+00 8.06011e-16 - 3.27935e+00 7.82603e-16 - 3.27950e+00 0.00000e+00 - 3.27965e+00 0.00000e+00 - 3.27980e+00 6.55011e-16 - 3.27995e+00 1.50817e-15 - 3.28010e+00 0.00000e+00 - 3.28025e+00 0.00000e+00 - 3.28040e+00 0.00000e+00 - 3.28055e+00 0.00000e+00 - 3.28070e+00 0.00000e+00 - 3.28085e+00 0.00000e+00 - 3.28100e+00 0.00000e+00 - 3.28115e+00 9.75185e-17 - 3.28130e+00 5.15629e-16 - 3.28145e+00 1.62934e-16 - 3.28160e+00 1.58327e-16 - 3.28175e+00 1.61420e-17 - 3.28190e+00 2.88183e-16 - 3.28205e+00 6.21163e-17 - 3.28220e+00 8.20488e-16 - 3.28235e+00 1.02535e-15 - 3.28250e+00 5.40644e-17 - 3.28265e+00 0.00000e+00 - 3.28280e+00 0.00000e+00 - 3.28295e+00 2.96378e-16 - 3.28310e+00 0.00000e+00 - 3.28325e+00 0.00000e+00 - 3.28340e+00 0.00000e+00 - 3.28355e+00 2.06469e-16 - 3.28370e+00 2.88327e-17 - 3.28385e+00 2.70004e-16 - 3.28400e+00 4.03526e-17 - 3.28415e+00 0.00000e+00 - 3.28430e+00 2.48771e-16 - 3.28445e+00 8.96556e-16 - 3.28460e+00 2.76012e-18 - 3.28475e+00 5.99802e-18 - 3.28490e+00 0.00000e+00 - 3.28505e+00 2.13915e-15 - 3.28520e+00 3.34186e-15 - 3.28535e+00 2.12450e-15 - 3.28550e+00 1.55457e-15 - 3.28565e+00 1.31556e-15 - 3.28580e+00 8.31188e-16 - 3.28595e+00 2.64477e-16 - 3.28610e+00 0.00000e+00 - 3.28625e+00 6.42653e-17 - 3.28640e+00 9.07565e-16 - 3.28655e+00 1.79903e-15 - 3.28670e+00 2.42881e-15 - 3.28685e+00 2.75933e-15 - 3.28700e+00 2.66806e-15 - 3.28715e+00 1.92814e-15 - 3.28730e+00 2.45490e-15 - 3.28745e+00 2.47196e-15 - 3.28760e+00 2.71978e-15 - 3.28775e+00 2.48098e-15 - 3.28790e+00 2.55884e-15 - 3.28805e+00 1.97752e-15 - 3.28820e+00 1.60480e-15 - 3.28835e+00 1.69532e-16 - 3.28850e+00 5.93210e-16 - 3.28865e+00 1.28830e-15 - 3.28880e+00 1.90177e-15 - 3.28895e+00 2.63196e-15 - 3.28910e+00 3.55361e-15 - 3.28925e+00 3.64786e-15 - 3.28940e+00 4.16355e-15 - 3.28955e+00 6.48725e-15 - 3.28970e+00 7.01568e-15 - 3.28985e+00 6.81429e-15 - 3.29000e+00 6.75526e-15 - 3.29015e+00 7.98940e-15 - 3.29030e+00 7.82879e-15 - 3.29045e+00 7.61006e-15 - 3.29060e+00 6.65903e-15 - 3.29075e+00 7.00513e-15 - 3.29090e+00 6.73354e-15 - 3.29105e+00 5.78261e-15 - 3.29120e+00 3.93991e-15 - 3.29135e+00 4.44735e-15 - 3.29150e+00 4.72358e-15 - 3.29165e+00 4.02003e-15 - 3.29180e+00 4.14893e-15 - 3.29195e+00 4.36009e-15 - 3.29210e+00 3.19232e-15 - 3.29225e+00 2.75316e-15 - 3.29240e+00 2.94951e-15 - 3.29255e+00 2.64753e-15 - 3.29270e+00 2.52365e-15 - 3.29285e+00 3.64694e-15 - 3.29300e+00 4.05093e-15 - 3.29315e+00 2.77084e-15 - 3.29330e+00 1.78460e-15 - 3.29345e+00 1.43025e-15 - 3.29360e+00 1.83440e-15 - 3.29375e+00 1.37542e-15 - 3.29390e+00 5.40695e-16 - 3.29405e+00 1.09125e-16 - 3.29420e+00 8.00969e-16 - 3.29435e+00 1.38983e-15 - 3.29450e+00 1.06314e-15 - 3.29465e+00 6.83553e-16 - 3.29480e+00 2.38143e-16 - 3.29495e+00 8.52448e-16 - 3.29510e+00 1.80402e-15 - 3.29525e+00 1.87830e-15 - 3.29540e+00 1.90466e-15 - 3.29555e+00 2.24336e-15 - 3.29570e+00 1.75807e-15 - 3.29585e+00 1.15527e-15 - 3.29600e+00 1.51727e-15 - 3.29615e+00 1.72735e-15 - 3.29630e+00 1.76093e-15 - 3.29645e+00 1.98043e-15 - 3.29660e+00 3.29942e-15 - 3.29675e+00 4.48936e-15 - 3.29690e+00 4.28552e-15 - 3.29705e+00 4.36547e-15 - 3.29720e+00 4.32178e-15 - 3.29735e+00 3.85893e-15 - 3.29750e+00 3.28421e-15 - 3.29765e+00 4.03115e-15 - 3.29780e+00 3.69578e-15 - 3.29795e+00 2.73718e-15 - 3.29810e+00 2.88296e-15 - 3.29825e+00 5.09558e-15 - 3.29840e+00 4.85903e-15 - 3.29855e+00 4.43065e-15 - 3.29870e+00 5.37827e-15 - 3.29885e+00 5.17452e-15 - 3.29900e+00 5.23751e-15 - 3.29915e+00 5.09446e-15 - 3.29930e+00 4.22812e-15 - 3.29945e+00 3.48787e-15 - 3.29960e+00 4.39891e-15 - 3.29975e+00 4.80318e-15 - 3.29990e+00 3.83260e-15 - 3.30005e+00 3.20985e-15 - 3.30020e+00 3.05956e-15 - 3.30035e+00 2.71356e-15 - 3.30050e+00 3.35766e-15 - 3.30065e+00 3.31522e-15 - 3.30080e+00 3.58355e-15 - 3.30095e+00 2.91000e-15 - 3.30110e+00 2.81135e-15 - 3.30125e+00 2.71192e-15 - 3.30140e+00 3.52722e-15 - 3.30155e+00 2.65655e-15 - 3.30170e+00 2.85144e-15 - 3.30185e+00 4.07994e-15 - 3.30200e+00 3.97949e-15 - 3.30215e+00 3.03693e-15 - 3.30230e+00 2.24415e-15 - 3.30245e+00 2.35003e-15 - 3.30260e+00 2.34385e-15 - 3.30275e+00 1.83425e-15 - 3.30290e+00 8.98164e-16 - 3.30305e+00 1.19537e-16 - 3.30320e+00 1.02585e-15 - 3.30335e+00 1.99667e-15 - 3.30350e+00 1.81040e-15 - 3.30365e+00 4.52507e-16 - 3.30380e+00 1.26955e-15 - 3.30395e+00 1.37197e-15 - 3.30410e+00 1.70395e-15 - 3.30425e+00 1.90454e-15 - 3.30440e+00 1.01753e-15 - 3.30455e+00 9.38557e-16 - 3.30470e+00 1.11319e-15 - 3.30485e+00 1.19353e-15 - 3.30500e+00 9.26646e-16 - 3.30515e+00 1.40415e-15 - 3.30530e+00 1.38770e-15 - 3.30545e+00 1.92709e-15 - 3.30560e+00 2.68422e-15 - 3.30575e+00 1.42949e-15 - 3.30590e+00 1.02118e-15 - 3.30605e+00 1.20160e-15 - 3.30620e+00 1.94391e-15 - 3.30635e+00 1.46174e-15 - 3.30650e+00 1.20977e-15 - 3.30665e+00 2.07787e-15 - 3.30680e+00 1.81780e-15 - 3.30695e+00 1.19496e-15 - 3.30710e+00 1.26459e-15 - 3.30725e+00 1.67548e-15 - 3.30740e+00 9.96873e-16 - 3.30755e+00 6.52538e-16 - 3.30770e+00 2.02752e-16 - 3.30785e+00 9.21227e-16 - 3.30800e+00 1.33680e-15 - 3.30815e+00 1.31588e-15 - 3.30830e+00 1.96245e-15 - 3.30845e+00 2.55807e-15 - 3.30860e+00 3.41177e-15 - 3.30875e+00 3.05880e-15 - 3.30890e+00 2.57964e-15 - 3.30905e+00 2.50119e-15 - 3.30920e+00 3.01281e-15 - 3.30935e+00 2.67489e-15 - 3.30950e+00 1.71342e-15 - 3.30965e+00 1.12639e-15 - 3.30980e+00 1.25931e-15 - 3.30995e+00 1.12883e-15 - 3.31010e+00 8.38417e-16 - 3.31025e+00 1.06435e-15 - 3.31040e+00 9.84575e-16 - 3.31055e+00 1.35347e-15 - 3.31070e+00 1.18028e-15 - 3.31085e+00 8.15378e-16 - 3.31100e+00 9.81876e-16 - 3.31115e+00 2.37641e-16 - 3.31130e+00 1.97493e-16 - 3.31145e+00 8.51956e-16 - 3.31160e+00 1.96379e-15 - 3.31175e+00 1.95952e-15 - 3.31190e+00 1.62095e-15 - 3.31205e+00 1.51750e-15 - 3.31220e+00 1.83784e-15 - 3.31235e+00 1.89685e-15 - 3.31250e+00 3.02206e-15 - 3.31265e+00 3.70530e-15 - 3.31280e+00 4.25895e-15 - 3.31295e+00 4.07899e-15 - 3.31310e+00 4.63209e-15 - 3.31325e+00 5.07955e-15 - 3.31340e+00 4.95198e-15 - 3.31355e+00 5.35998e-15 - 3.31370e+00 5.55215e-15 - 3.31385e+00 5.79478e-15 - 3.31400e+00 5.23281e-15 - 3.31415e+00 5.44235e-15 - 3.31430e+00 5.53335e-15 - 3.31445e+00 4.49348e-15 - 3.31460e+00 4.11336e-15 - 3.31475e+00 4.31536e-15 - 3.31490e+00 4.98643e-15 - 3.31505e+00 5.62114e-15 - 3.31520e+00 6.22733e-15 - 3.31535e+00 6.19649e-15 - 3.31550e+00 5.57524e-15 - 3.31565e+00 4.87423e-15 - 3.31580e+00 4.66711e-15 - 3.31595e+00 3.17096e-15 - 3.31610e+00 1.69874e-15 - 3.31625e+00 1.47675e-15 - 3.31640e+00 1.35214e-15 - 3.31655e+00 4.41106e-16 - 3.31670e+00 5.64887e-16 - 3.31685e+00 1.53992e-15 - 3.31700e+00 2.27549e-15 - 3.31715e+00 2.66692e-15 - 3.31730e+00 3.49357e-15 - 3.31745e+00 5.11269e-15 - 3.31760e+00 5.45805e-15 - 3.31775e+00 5.96585e-15 - 3.31790e+00 5.06111e-15 - 3.31805e+00 4.26938e-15 - 3.31820e+00 3.36659e-15 - 3.31835e+00 1.09634e-15 - 3.31850e+00 1.33477e-15 - 3.31865e+00 1.92509e-15 - 3.31880e+00 1.85824e-15 - 3.31895e+00 1.49468e-15 - 3.31910e+00 2.28124e-15 - 3.31925e+00 2.86377e-15 - 3.31940e+00 2.42688e-15 - 3.31955e+00 2.12131e-15 - 3.31970e+00 2.19874e-15 - 3.31985e+00 2.60156e-15 - 3.32000e+00 2.36706e-15 - 3.32015e+00 1.07278e-15 - 3.32030e+00 1.31775e-15 - 3.32045e+00 1.23811e-15 - 3.32060e+00 1.11070e-15 - 3.32075e+00 8.69688e-16 - 3.32090e+00 1.34616e-15 - 3.32105e+00 2.91755e-15 - 3.32120e+00 2.48890e-15 - 3.32135e+00 1.55908e-15 - 3.32150e+00 1.83374e-15 - 3.32165e+00 1.70787e-15 - 3.32180e+00 2.86694e-15 - 3.32195e+00 1.49150e-15 - 3.32210e+00 1.47299e-15 - 3.32225e+00 1.45780e-15 - 3.32240e+00 1.29276e-15 - 3.32255e+00 1.26602e-15 - 3.32270e+00 1.42280e-15 - 3.32285e+00 1.50492e-15 - 3.32300e+00 2.30227e-15 - 3.32315e+00 2.41559e-15 - 3.32330e+00 3.30623e-15 - 3.32345e+00 3.52203e-15 - 3.32360e+00 2.36484e-15 - 3.32375e+00 2.35211e-15 - 3.32390e+00 1.91227e-15 - 3.32405e+00 2.10101e-15 - 3.32420e+00 2.06232e-15 - 3.32435e+00 1.35607e-15 - 3.32450e+00 1.42262e-15 - 3.32465e+00 2.00043e-15 - 3.32480e+00 2.28651e-15 - 3.32495e+00 2.55458e-15 - 3.32510e+00 2.08387e-15 - 3.32525e+00 1.52119e-15 - 3.32540e+00 5.13591e-16 - 3.32555e+00 0.00000e+00 - 3.32570e+00 0.00000e+00 - 3.32585e+00 0.00000e+00 - 3.32600e+00 0.00000e+00 - 3.32615e+00 0.00000e+00 - 3.32630e+00 0.00000e+00 - 3.32645e+00 0.00000e+00 - 3.32660e+00 0.00000e+00 - 3.32675e+00 0.00000e+00 - 3.32690e+00 0.00000e+00 - 3.32705e+00 0.00000e+00 - 3.32720e+00 0.00000e+00 - 3.32735e+00 0.00000e+00 - 3.32750e+00 0.00000e+00 - 3.32765e+00 0.00000e+00 - 3.32780e+00 0.00000e+00 - 3.32795e+00 0.00000e+00 - 3.32810e+00 0.00000e+00 - 3.32825e+00 0.00000e+00 - 3.32840e+00 0.00000e+00 - 3.32855e+00 0.00000e+00 - 3.32870e+00 0.00000e+00 - 3.32885e+00 0.00000e+00 - 3.32900e+00 0.00000e+00 - 3.32915e+00 0.00000e+00 - 3.32930e+00 0.00000e+00 - 3.32945e+00 0.00000e+00 - 3.32960e+00 0.00000e+00 - 3.32975e+00 0.00000e+00 - 3.32990e+00 0.00000e+00 - 3.33005e+00 0.00000e+00 - 3.33020e+00 0.00000e+00 - 3.33035e+00 0.00000e+00 - 3.33050e+00 0.00000e+00 - 3.33065e+00 0.00000e+00 - 3.33080e+00 0.00000e+00 - 3.33095e+00 0.00000e+00 - 3.33110e+00 0.00000e+00 - 3.33125e+00 0.00000e+00 - 3.33140e+00 0.00000e+00 - 3.33155e+00 0.00000e+00 - 3.33170e+00 0.00000e+00 - 3.33185e+00 0.00000e+00 - 3.33200e+00 0.00000e+00 - 3.33215e+00 0.00000e+00 - 3.33230e+00 0.00000e+00 - 3.33245e+00 0.00000e+00 - 3.33260e+00 0.00000e+00 - 3.33275e+00 0.00000e+00 - 3.33290e+00 0.00000e+00 - 3.33305e+00 0.00000e+00 - 3.33320e+00 0.00000e+00 - 3.33335e+00 0.00000e+00 - 3.33350e+00 0.00000e+00 - 3.33365e+00 0.00000e+00 - 3.33380e+00 0.00000e+00 - 3.33395e+00 0.00000e+00 - 3.33410e+00 0.00000e+00 - 3.33425e+00 0.00000e+00 - 3.33440e+00 0.00000e+00 - 3.33455e+00 0.00000e+00 - 3.33470e+00 0.00000e+00 - 3.33485e+00 0.00000e+00 - 3.33500e+00 0.00000e+00 - 3.33515e+00 1.09514e-16 - 3.33530e+00 4.50275e-16 - 3.33545e+00 1.21476e-15 - 3.33560e+00 1.70301e-15 - 3.33575e+00 1.50019e-15 - 3.33590e+00 2.16359e-15 - 3.33605e+00 2.21413e-15 - 3.33620e+00 2.65965e-15 - 3.33635e+00 2.35833e-15 - 3.33650e+00 2.09996e-15 - 3.33665e+00 2.58495e-15 - 3.33680e+00 3.34935e-15 - 3.33695e+00 3.18139e-15 - 3.33710e+00 2.57594e-15 - 3.33725e+00 1.91127e-15 - 3.33740e+00 1.25694e-15 - 3.33755e+00 9.71013e-16 - 3.33770e+00 7.95434e-16 - 3.33785e+00 4.11010e-16 - 3.33800e+00 7.82120e-16 - 3.33815e+00 4.16696e-16 - 3.33830e+00 8.26340e-16 - 3.33845e+00 2.09820e-17 - 3.33860e+00 0.00000e+00 - 3.33875e+00 0.00000e+00 - 3.33890e+00 0.00000e+00 - 3.33905e+00 0.00000e+00 - 3.33920e+00 3.03537e-16 - 3.33935e+00 9.81256e-16 - 3.33950e+00 1.25617e-15 - 3.33965e+00 1.52486e-15 - 3.33980e+00 8.26781e-16 - 3.33995e+00 4.49846e-16 - 3.34010e+00 4.40610e-16 - 3.34025e+00 2.76016e-17 - 3.34040e+00 0.00000e+00 - 3.34055e+00 3.55411e-16 - 3.34070e+00 4.69253e-16 - 3.34085e+00 0.00000e+00 - 3.34100e+00 0.00000e+00 - 3.34115e+00 0.00000e+00 - 3.34130e+00 0.00000e+00 - 3.34145e+00 0.00000e+00 - 3.34160e+00 0.00000e+00 - 3.34175e+00 0.00000e+00 - 3.34190e+00 0.00000e+00 - 3.34205e+00 0.00000e+00 - 3.34220e+00 0.00000e+00 - 3.34235e+00 0.00000e+00 - 3.34250e+00 3.91710e-17 - 3.34265e+00 1.15183e-16 - 3.34280e+00 1.91221e-16 - 3.34295e+00 2.67286e-16 - 3.34310e+00 3.43376e-16 - 3.34325e+00 4.19493e-16 - 3.34340e+00 4.95637e-16 - 3.34355e+00 6.00529e-16 - 3.34370e+00 7.07203e-16 - 3.34385e+00 8.13915e-16 - 3.34400e+00 9.20663e-16 - 3.34415e+00 1.02745e-15 - 3.34430e+00 1.13427e-15 - 3.34445e+00 1.14125e-15 - 3.34460e+00 9.88538e-16 - 3.34475e+00 8.35777e-16 - 3.34490e+00 6.82963e-16 - 3.34505e+00 5.30097e-16 - 3.34520e+00 3.77178e-16 - 3.34535e+00 2.24206e-16 - 3.34550e+00 4.70520e-16 - 3.34565e+00 7.91984e-16 - 3.34580e+00 1.11356e-15 - 3.34595e+00 1.43524e-15 - 3.34610e+00 1.75704e-15 - 3.34625e+00 2.07895e-15 - 3.34640e+00 2.22788e-15 - 3.34655e+00 1.99779e-15 - 3.34670e+00 1.76762e-15 - 3.34685e+00 1.53736e-15 - 3.34700e+00 1.30703e-15 - 3.34715e+00 1.07662e-15 - 3.34730e+00 8.46131e-16 - 3.34745e+00 7.01633e-16 - 3.34760e+00 5.78619e-16 - 3.34775e+00 4.55564e-16 - 3.34790e+00 3.32465e-16 - 3.34805e+00 2.09324e-16 - 3.34820e+00 8.61411e-17 - 3.34835e+00 0.00000e+00 - 3.34850e+00 0.00000e+00 - 3.34865e+00 0.00000e+00 - 3.34880e+00 0.00000e+00 - 3.34895e+00 0.00000e+00 - 3.34910e+00 0.00000e+00 - 3.34925e+00 0.00000e+00 - 3.34940e+00 0.00000e+00 - 3.34955e+00 0.00000e+00 - 3.34970e+00 0.00000e+00 - 3.34985e+00 0.00000e+00 - 3.35000e+00 0.00000e+00 - 3.35015e+00 0.00000e+00 - 3.35030e+00 4.29003e-17 - 3.35045e+00 1.66723e-16 - 3.35060e+00 2.90589e-16 - 3.35075e+00 4.14498e-16 - 3.35090e+00 5.38450e-16 - 3.35105e+00 6.62444e-16 - 3.35120e+00 7.86481e-16 - 3.35135e+00 1.00730e-15 - 3.35150e+00 1.24003e-15 - 3.35165e+00 1.47284e-15 - 3.35180e+00 1.70573e-15 - 3.35195e+00 1.93871e-15 - 3.35210e+00 2.17176e-15 - 3.35225e+00 2.27902e-15 - 3.35240e+00 2.23238e-15 - 3.35255e+00 2.18572e-15 - 3.35270e+00 2.13905e-15 - 3.35285e+00 2.09235e-15 - 3.35300e+00 2.04565e-15 - 3.35315e+00 1.99928e-15 - 3.35330e+00 1.96812e-15 - 3.35345e+00 1.93695e-15 - 3.35360e+00 1.90577e-15 - 3.35375e+00 1.87458e-15 - 3.35390e+00 1.84338e-15 - 3.35405e+00 1.81216e-15 - 3.35420e+00 1.80000e-15 - 3.35435e+00 1.80000e-15 - 3.35450e+00 1.80000e-15 - 3.35465e+00 1.80000e-15 - 3.35480e+00 1.80000e-15 - 3.35495e+00 1.80000e-15 - 3.35510e+00 1.80663e-15 - 3.35525e+00 1.83793e-15 - 3.35540e+00 1.86924e-15 - 3.35555e+00 1.90056e-15 - 3.35570e+00 1.93190e-15 - 3.35585e+00 1.96324e-15 - 3.35600e+00 1.99459e-15 - 3.35615e+00 2.25959e-15 - 3.35630e+00 2.57334e-15 - 3.35645e+00 2.88721e-15 - 3.35660e+00 3.20118e-15 - 3.35675e+00 3.51526e-15 - 3.35690e+00 3.82945e-15 - 3.35705e+00 3.90656e-15 - 3.35720e+00 3.70220e-15 - 3.35735e+00 3.49776e-15 - 3.35750e+00 3.29326e-15 - 3.35765e+00 3.08868e-15 - 3.35780e+00 2.88403e-15 - 3.35795e+00 2.70000e-15 - 3.35810e+00 2.70000e-15 - 3.35825e+00 2.70000e-15 - 3.35840e+00 2.70000e-15 - 3.35855e+00 2.70000e-15 - 3.35870e+00 2.70000e-15 - 3.35885e+00 2.70000e-15 - 3.35900e+00 2.61617e-15 - 3.35915e+00 2.50563e-15 - 3.35930e+00 2.39505e-15 - 3.35945e+00 2.28444e-15 - 3.35960e+00 2.17379e-15 - 3.35975e+00 2.06310e-15 - 3.35990e+00 2.13609e-15 - 3.36005e+00 2.45257e-15 - 3.36020e+00 2.76915e-15 - 3.36035e+00 3.08585e-15 - 3.36050e+00 3.40265e-15 - 3.36065e+00 3.71957e-15 - 3.36080e+00 4.01830e-15 - 3.36095e+00 4.17686e-15 - 3.36110e+00 4.33548e-15 - 3.36125e+00 4.49416e-15 - 3.36140e+00 4.65289e-15 - 3.36155e+00 4.81168e-15 - 3.36170e+00 4.97052e-15 - 3.36185e+00 4.94823e-15 - 3.36200e+00 4.88465e-15 - 3.36215e+00 4.82105e-15 - 3.36230e+00 4.75743e-15 - 3.36245e+00 4.69378e-15 - 3.36260e+00 4.63011e-15 - 3.36275e+00 4.60839e-15 - 3.36290e+00 4.62432e-15 - 3.36305e+00 4.64026e-15 - 3.36320e+00 4.65619e-15 - 3.36335e+00 4.67214e-15 - 3.36350e+00 4.68809e-15 - 3.36365e+00 4.72427e-15 - 3.36380e+00 4.82003e-15 - 3.36395e+00 4.91583e-15 - 3.36410e+00 5.01167e-15 - 3.36425e+00 5.10753e-15 - 3.36440e+00 5.20343e-15 - 3.36455e+00 5.29936e-15 - 3.36470e+00 5.37944e-15 - 3.36485e+00 5.45944e-15 - 3.36500e+00 5.53946e-15 - 3.36515e+00 5.61952e-15 - 3.36530e+00 5.69960e-15 - 3.36545e+00 5.77971e-15 - 3.36560e+00 5.71622e-15 - 3.36575e+00 5.60399e-15 - 3.36590e+00 5.49172e-15 - 3.36605e+00 5.37941e-15 - 3.36620e+00 5.26706e-15 - 3.36635e+00 5.15468e-15 - 3.36650e+00 5.10825e-15 - 3.36665e+00 5.12432e-15 - 3.36680e+00 5.14039e-15 - 3.36695e+00 5.15646e-15 - 3.36710e+00 5.17255e-15 - 3.36725e+00 5.18864e-15 - 3.36740e+00 5.21892e-15 - 3.36755e+00 5.28332e-15 - 3.36770e+00 5.34774e-15 - 3.36785e+00 5.41218e-15 - 3.36800e+00 5.47664e-15 - 3.36815e+00 5.54113e-15 - 3.36830e+00 5.58731e-15 - 3.36845e+00 5.44211e-15 - 3.36860e+00 5.29687e-15 - 3.36875e+00 5.15157e-15 - 3.36890e+00 5.00622e-15 - 3.36905e+00 4.86083e-15 - 3.36920e+00 4.71538e-15 - 3.36935e+00 4.67108e-15 - 3.36950e+00 4.63874e-15 - 3.36965e+00 4.60639e-15 - 3.36980e+00 4.57402e-15 - 3.36995e+00 4.54164e-15 - 3.37010e+00 4.50925e-15 - 3.37025e+00 4.52315e-15 - 3.37040e+00 4.55556e-15 - 3.37055e+00 4.58798e-15 - 3.37070e+00 4.62041e-15 - 3.37085e+00 4.65286e-15 - 3.37100e+00 4.68531e-15 - 3.37115e+00 4.63777e-15 - 3.37130e+00 4.52410e-15 - 3.37145e+00 4.41038e-15 - 3.37160e+00 4.29663e-15 - 3.37175e+00 4.18284e-15 - 3.37190e+00 4.06901e-15 - 3.37205e+00 4.03845e-15 - 3.37220e+00 4.13609e-15 - 3.37235e+00 4.23376e-15 - 3.37250e+00 4.33146e-15 - 3.37265e+00 4.42920e-15 - 3.37280e+00 4.52697e-15 - 3.37295e+00 4.57522e-15 - 3.37310e+00 4.47738e-15 - 3.37325e+00 4.37951e-15 - 3.37340e+00 4.28160e-15 - 3.37355e+00 4.18366e-15 - 3.37370e+00 4.08569e-15 - 3.37385e+00 4.00000e-15 - 3.37400e+00 4.00000e-15 - 3.37415e+00 4.00000e-15 - 3.37430e+00 4.00000e-15 - 3.37445e+00 4.00000e-15 - 3.37460e+00 4.00000e-15 - 3.37475e+00 4.00036e-15 - 3.37490e+00 4.03311e-15 - 3.37505e+00 4.06587e-15 - 3.37520e+00 4.09864e-15 - 3.37535e+00 4.13142e-15 - 3.37550e+00 4.16422e-15 - 3.37565e+00 4.19702e-15 - 3.37580e+00 4.24476e-15 - 3.37595e+00 4.29400e-15 - 3.37610e+00 4.34326e-15 - 3.37625e+00 4.39253e-15 - 3.37640e+00 4.44183e-15 - 3.37655e+00 4.49114e-15 - 3.37670e+00 4.50000e-15 - 3.37685e+00 4.50000e-15 - 3.37700e+00 4.50000e-15 - 3.37715e+00 4.50000e-15 - 3.37730e+00 4.50000e-15 - 3.37745e+00 4.50000e-15 - 3.37760e+00 4.46322e-15 - 3.37775e+00 4.41377e-15 - 3.37790e+00 4.36431e-15 - 3.37805e+00 4.31483e-15 - 3.37820e+00 4.26533e-15 - 3.37835e+00 4.21582e-15 - 3.37850e+00 4.28991e-15 - 3.37865e+00 4.42204e-15 - 3.37880e+00 4.55422e-15 - 3.37895e+00 4.68644e-15 - 3.37910e+00 4.81870e-15 - 3.37925e+00 4.95102e-15 - 3.37940e+00 4.95831e-15 - 3.37955e+00 4.89211e-15 - 3.37970e+00 4.82589e-15 - 3.37985e+00 4.75964e-15 - 3.38000e+00 4.69337e-15 - 3.38015e+00 4.62707e-15 - 3.38030e+00 4.60000e-15 - 3.38045e+00 4.60000e-15 - 3.38060e+00 4.60000e-15 - 3.38075e+00 4.60000e-15 - 3.38090e+00 4.60000e-15 - 3.38105e+00 4.60000e-15 - 3.38120e+00 4.44950e-15 - 3.38135e+00 4.18359e-15 - 3.38150e+00 3.91759e-15 - 3.38165e+00 3.65150e-15 - 3.38180e+00 3.38532e-15 - 3.38195e+00 3.11904e-15 - 3.38210e+00 3.00000e-15 - 3.38225e+00 3.00000e-15 - 3.38240e+00 3.00000e-15 - 3.38255e+00 3.00000e-15 - 3.38270e+00 3.00000e-15 - 3.38285e+00 3.00000e-15 - 3.38300e+00 3.00000e-15 - 3.38315e+00 3.00000e-15 - 3.38330e+00 3.00000e-15 - 3.38345e+00 3.00000e-15 - 3.38360e+00 3.00000e-15 - 3.38375e+00 3.00000e-15 - 3.38390e+00 3.00000e-15 - 3.38405e+00 3.00000e-15 - 3.38420e+00 3.00000e-15 - 3.38435e+00 3.00000e-15 - 3.38450e+00 3.00000e-15 - 3.38465e+00 3.00000e-15 - 3.38480e+00 3.01971e-15 - 3.38495e+00 3.05323e-15 - 3.38510e+00 3.08676e-15 - 3.38525e+00 3.12029e-15 - 3.38540e+00 3.15384e-15 - 3.38555e+00 3.18741e-15 - 3.38570e+00 3.28392e-15 - 3.38585e+00 3.41826e-15 - 3.38600e+00 3.55264e-15 - 3.38615e+00 3.68707e-15 - 3.38630e+00 3.82155e-15 - 3.38645e+00 3.95608e-15 - 3.38660e+00 4.05665e-15 - 3.38675e+00 4.14079e-15 - 3.38690e+00 4.22496e-15 - 3.38705e+00 4.30915e-15 - 3.38720e+00 4.39337e-15 - 3.38735e+00 4.47763e-15 - 3.38750e+00 4.50000e-15 - 3.38765e+00 4.50000e-15 - 3.38780e+00 4.50000e-15 - 3.38795e+00 4.50000e-15 - 3.38810e+00 4.50000e-15 - 3.38825e+00 4.50000e-15 - 3.38840e+00 4.43179e-15 - 3.38855e+00 4.34731e-15 - 3.38870e+00 4.26279e-15 - 3.38885e+00 4.17825e-15 - 3.38900e+00 4.09368e-15 - 3.38915e+00 4.00907e-15 - 3.38930e+00 4.07556e-15 - 3.38945e+00 4.16022e-15 - 3.38960e+00 4.24491e-15 - 3.38975e+00 4.32963e-15 - 3.38990e+00 4.41438e-15 - 3.39005e+00 4.49915e-15 - 3.39020e+00 4.73509e-15 - 3.39035e+00 4.97263e-15 - 3.39050e+00 5.21026e-15 - 3.39065e+00 5.44796e-15 - 3.39080e+00 5.68575e-15 - 3.39095e+00 5.89831e-15 - 3.39110e+00 5.88132e-15 - 3.39125e+00 5.86431e-15 - 3.39140e+00 5.84731e-15 - 3.39155e+00 5.83029e-15 - 3.39170e+00 5.81327e-15 - 3.39185e+00 5.83755e-15 - 3.39200e+00 6.00787e-15 - 3.39215e+00 6.17824e-15 - 3.39230e+00 6.34868e-15 - 3.39245e+00 6.51918e-15 - 3.39260e+00 6.68973e-15 - 3.39275e+00 6.76983e-15 - 3.39290e+00 6.68449e-15 - 3.39305e+00 6.59913e-15 - 3.39320e+00 6.51373e-15 - 3.39335e+00 6.42831e-15 - 3.39350e+00 6.34285e-15 - 3.39365e+00 6.31705e-15 - 3.39380e+00 6.35126e-15 - 3.39395e+00 6.38547e-15 - 3.39410e+00 6.41970e-15 - 3.39425e+00 6.45394e-15 - 3.39440e+00 6.48820e-15 - 3.39455e+00 6.50000e-15 - 3.39470e+00 6.50000e-15 - 3.39485e+00 6.50000e-15 - 3.39500e+00 6.50000e-15 - 3.39515e+00 6.50000e-15 - 3.39530e+00 6.50000e-15 - 3.39545e+00 6.57074e-15 - 3.39560e+00 6.65661e-15 - 3.39575e+00 6.74250e-15 - 3.39590e+00 6.82843e-15 - 3.39605e+00 6.91439e-15 - 3.39620e+00 6.99993e-15 - 3.39635e+00 6.98272e-15 - 3.39650e+00 6.96551e-15 - 3.39665e+00 6.94830e-15 - 3.39680e+00 6.93108e-15 - 3.39695e+00 6.91385e-15 - 3.39710e+00 6.89662e-15 - 3.39725e+00 6.87938e-15 - 3.39740e+00 6.86213e-15 - 3.39755e+00 6.84488e-15 - 3.39770e+00 6.82762e-15 - 3.39785e+00 6.81036e-15 - 3.39800e+00 6.84835e-15 - 3.39815e+00 6.96927e-15 - 3.39830e+00 7.09024e-15 - 3.39845e+00 7.21125e-15 - 3.39860e+00 7.33229e-15 - 3.39875e+00 7.45339e-15 - 3.39890e+00 7.39355e-15 - 3.39905e+00 7.22044e-15 - 3.39920e+00 7.04728e-15 - 3.39935e+00 6.87405e-15 - 3.39950e+00 6.70076e-15 - 3.39965e+00 6.52742e-15 - 3.39980e+00 6.35401e-15 - 3.39995e+00 6.18055e-15 - 3.40010e+00 6.00702e-15 - 3.40025e+00 5.83344e-15 - 3.40040e+00 5.65979e-15 - 3.40055e+00 5.51391e-15 - 3.40070e+00 5.68768e-15 - 3.40085e+00 5.86150e-15 - 3.40100e+00 6.03539e-15 - 3.40115e+00 6.20933e-15 - 3.40130e+00 6.38334e-15 - 3.40145e+00 6.44260e-15 - 3.40160e+00 6.26847e-15 - 3.40175e+00 6.09429e-15 - 3.40190e+00 5.92004e-15 - 3.40205e+00 5.74574e-15 - 3.40220e+00 5.57137e-15 - 3.40235e+00 5.60306e-15 - 3.40250e+00 5.77754e-15 - 3.40265e+00 5.95209e-15 - 3.40280e+00 6.12670e-15 - 3.40295e+00 6.30136e-15 - 3.40310e+00 6.47609e-15 - 3.40325e+00 6.39438e-15 - 3.40340e+00 6.27199e-15 - 3.40355e+00 6.14955e-15 - 3.40370e+00 6.02708e-15 - 3.40385e+00 5.90455e-15 - 3.40400e+00 5.84888e-15 - 3.40415e+00 6.18167e-15 - 3.40430e+00 6.51457e-15 - 3.40445e+00 6.84758e-15 - 3.40460e+00 7.18072e-15 - 3.40475e+00 7.51396e-15 - 3.40490e+00 7.59145e-15 - 3.40505e+00 7.34573e-15 - 3.40520e+00 7.09992e-15 - 3.40535e+00 6.85403e-15 - 3.40550e+00 6.60806e-15 - 3.40565e+00 6.36200e-15 - 3.40580e+00 6.12901e-15 - 3.40595e+00 5.90037e-15 - 3.40610e+00 5.67165e-15 - 3.40625e+00 5.44285e-15 - 3.40640e+00 5.21397e-15 - 3.40655e+00 4.99769e-15 - 3.40670e+00 4.96246e-15 - 3.40685e+00 4.92721e-15 - 3.40700e+00 4.89195e-15 - 3.40715e+00 4.85667e-15 - 3.40730e+00 4.82139e-15 - 3.40745e+00 4.86954e-15 - 3.40760e+00 5.04609e-15 - 3.40775e+00 5.22269e-15 - 3.40790e+00 5.39936e-15 - 3.40805e+00 5.57609e-15 - 3.40820e+00 5.75289e-15 - 3.40835e+00 5.81297e-15 - 3.40850e+00 5.83067e-15 - 3.40865e+00 5.84836e-15 - 3.40880e+00 5.86607e-15 - 3.40895e+00 5.88378e-15 - 3.40910e+00 5.88956e-15 - 3.40925e+00 5.76550e-15 - 3.40940e+00 5.64141e-15 - 3.40955e+00 5.51727e-15 - 3.40970e+00 5.39308e-15 - 3.40985e+00 5.26886e-15 - 3.41000e+00 5.16042e-15 - 3.41015e+00 5.07163e-15 - 3.41030e+00 4.98280e-15 - 3.41045e+00 4.89395e-15 - 3.41060e+00 4.80506e-15 - 3.41075e+00 4.71615e-15 - 3.41090e+00 4.77280e-15 - 3.41105e+00 4.86178e-15 - 3.41120e+00 4.95079e-15 - 3.41135e+00 5.03983e-15 - 3.41150e+00 5.12890e-15 - 3.41165e+00 5.20000e-15 - 3.41180e+00 5.20000e-15 - 3.41195e+00 5.20000e-15 - 3.41210e+00 5.20000e-15 - 3.41225e+00 5.20000e-15 - 3.41240e+00 5.20000e-15 - 3.41255e+00 5.18935e-15 - 3.41270e+00 5.17149e-15 - 3.41285e+00 5.15362e-15 - 3.41300e+00 5.13574e-15 - 3.41315e+00 5.11786e-15 - 3.41330e+00 5.09977e-15 - 3.41345e+00 4.95662e-15 - 3.41360e+00 4.81342e-15 - 3.41375e+00 4.67017e-15 - 3.41390e+00 4.52686e-15 - 3.41405e+00 4.38351e-15 - 3.41420e+00 4.27754e-15 - 3.41435e+00 4.22375e-15 - 3.41450e+00 4.16994e-15 - 3.41465e+00 4.11610e-15 - 3.41480e+00 4.06225e-15 - 3.41495e+00 4.00839e-15 - 3.41510e+00 4.22750e-15 - 3.41525e+00 4.49703e-15 - 3.41540e+00 4.76665e-15 - 3.41555e+00 5.03636e-15 - 3.41570e+00 5.30617e-15 - 3.41585e+00 5.56086e-15 - 3.41600e+00 5.77685e-15 - 3.41615e+00 5.99292e-15 - 3.41630e+00 6.20907e-15 - 3.41645e+00 6.42528e-15 - 3.41660e+00 6.64158e-15 - 3.41675e+00 6.47624e-15 - 3.41690e+00 6.16962e-15 - 3.41705e+00 5.86288e-15 - 3.41720e+00 5.55604e-15 - 3.41735e+00 5.24910e-15 - 3.41750e+00 5.00682e-15 - 3.41765e+00 5.04295e-15 - 3.41780e+00 5.07910e-15 - 3.41795e+00 5.11526e-15 - 3.41810e+00 5.15144e-15 - 3.41825e+00 5.18762e-15 - 3.41840e+00 5.37867e-15 - 3.41855e+00 5.65025e-15 - 3.41870e+00 5.92193e-15 - 3.41885e+00 6.19370e-15 - 3.41900e+00 6.46556e-15 - 3.41915e+00 6.69250e-15 - 3.41930e+00 6.63809e-15 - 3.41945e+00 6.58366e-15 - 3.41960e+00 6.52921e-15 - 3.41975e+00 6.47474e-15 - 3.41990e+00 6.42025e-15 - 3.42005e+00 6.06892e-15 - 3.42020e+00 5.54186e-15 - 3.42035e+00 5.01462e-15 - 3.42050e+00 4.48719e-15 - 3.42065e+00 3.95959e-15 - 3.42080e+00 3.49059e-15 - 3.42095e+00 3.41777e-15 - 3.42110e+00 3.34492e-15 - 3.42125e+00 3.27205e-15 - 3.42140e+00 3.19915e-15 - 3.42155e+00 3.12622e-15 - 3.42170e+00 2.97150e-15 - 3.42185e+00 2.77082e-15 - 3.42200e+00 2.57007e-15 - 3.42215e+00 2.36925e-15 - 3.42230e+00 2.16837e-15 - 3.42245e+00 2.00593e-15 - 3.42260e+00 2.04248e-15 - 3.42275e+00 2.07904e-15 - 3.42290e+00 2.11561e-15 - 3.42305e+00 2.15220e-15 - 3.42320e+00 2.18880e-15 - 3.42335e+00 2.11104e-15 - 3.42350e+00 1.98285e-15 - 3.42365e+00 1.85461e-15 - 3.42380e+00 1.72633e-15 - 3.42395e+00 1.59801e-15 - 3.42410e+00 1.52169e-15 - 3.42425e+00 1.61341e-15 - 3.42440e+00 1.70517e-15 - 3.42455e+00 1.79695e-15 - 3.42470e+00 1.88877e-15 - 3.42485e+00 1.98062e-15 - 3.42500e+00 2.07251e-15 - 3.42515e+00 2.16442e-15 - 3.42530e+00 2.25637e-15 - 3.42545e+00 2.34834e-15 - 3.42560e+00 2.44035e-15 - 3.42575e+00 2.50000e-15 - 3.42590e+00 2.50000e-15 - 3.42605e+00 2.50000e-15 - 3.42620e+00 2.50000e-15 - 3.42635e+00 2.50000e-15 - 3.42650e+00 2.50000e-15 - 3.42665e+00 2.50000e-15 - 3.42680e+00 2.50000e-15 - 3.42695e+00 2.50000e-15 - 3.42710e+00 2.50000e-15 - 3.42725e+00 2.50000e-15 - 3.42740e+00 2.54695e-15 - 3.42755e+00 2.63937e-15 - 3.42770e+00 2.73183e-15 - 3.42785e+00 2.82431e-15 - 3.42800e+00 2.91683e-15 - 3.42815e+00 3.01501e-15 - 3.42830e+00 3.16315e-15 - 3.42845e+00 3.31133e-15 - 3.42860e+00 3.45957e-15 - 3.42875e+00 3.60785e-15 - 3.42890e+00 3.75619e-15 - 3.42905e+00 3.85229e-15 - 3.42920e+00 3.92651e-15 - 3.42935e+00 4.00076e-15 - 3.42950e+00 4.07503e-15 - 3.42965e+00 4.14932e-15 - 3.42980e+00 4.18818e-15 - 3.42995e+00 4.15100e-15 - 3.43010e+00 4.11382e-15 - 3.43025e+00 4.07662e-15 - 3.43040e+00 4.03940e-15 - 3.43055e+00 4.00218e-15 - 3.43070e+00 3.82469e-15 - 3.43085e+00 3.63843e-15 - 3.43100e+00 3.45211e-15 - 3.43115e+00 3.26573e-15 - 3.43130e+00 3.07928e-15 - 3.43145e+00 3.10724e-15 - 3.43160e+00 3.29381e-15 - 3.43175e+00 3.48046e-15 - 3.43190e+00 3.66717e-15 - 3.43205e+00 3.85394e-15 - 3.43220e+00 4.08155e-15 - 3.43235e+00 4.45535e-15 - 3.43250e+00 4.82928e-15 - 3.43265e+00 5.20334e-15 - 3.43280e+00 5.57753e-15 - 3.43295e+00 5.95185e-15 - 3.43310e+00 5.98369e-15 - 3.43325e+00 5.96496e-15 - 3.43340e+00 5.94622e-15 - 3.43355e+00 5.92748e-15 - 3.43370e+00 5.90873e-15 - 3.43385e+00 5.91002e-15 - 3.43400e+00 5.92879e-15 - 3.43415e+00 5.94755e-15 - 3.43430e+00 5.96633e-15 - 3.43445e+00 5.98511e-15 - 3.43460e+00 6.00000e-15 - 3.43475e+00 6.00000e-15 - 3.43490e+00 6.00000e-15 - 3.43505e+00 6.00000e-15 - 3.43520e+00 6.00000e-15 - 3.43535e+00 6.00000e-15 - 3.43550e+00 5.96649e-15 - 3.43565e+00 5.92883e-15 - 3.43580e+00 5.89115e-15 - 3.43595e+00 5.85346e-15 - 3.43610e+00 5.81575e-15 - 3.43625e+00 5.76705e-15 - 3.43640e+00 5.71045e-15 - 3.43655e+00 5.65384e-15 - 3.43670e+00 5.59720e-15 - 3.43685e+00 5.54055e-15 - 3.43700e+00 5.58062e-15 - 3.43715e+00 5.86409e-15 - 3.43730e+00 6.14765e-15 - 3.43745e+00 6.43131e-15 - 3.43760e+00 6.71508e-15 - 3.43775e+00 6.99893e-15 - 3.43790e+00 6.98114e-15 - 3.43805e+00 6.96220e-15 - 3.43820e+00 6.94326e-15 - 3.43835e+00 6.92431e-15 - 3.43850e+00 6.90535e-15 - 3.43865e+00 6.85917e-15 - 3.43880e+00 6.80226e-15 - 3.43895e+00 6.74533e-15 - 3.43910e+00 6.68838e-15 - 3.43925e+00 6.63141e-15 - 3.43940e+00 6.58295e-15 - 3.43955e+00 6.54495e-15 - 3.43970e+00 6.50693e-15 - 3.43985e+00 6.46890e-15 - 3.44000e+00 6.43085e-15 - 3.44015e+00 6.33155e-15 - 3.44030e+00 5.96987e-15 - 3.44045e+00 5.60808e-15 - 3.44060e+00 5.24615e-15 - 3.44075e+00 4.88411e-15 - 3.44090e+00 4.52193e-15 - 3.44105e+00 4.23129e-15 - 3.44120e+00 3.94517e-15 - 3.44135e+00 3.65895e-15 - 3.44150e+00 3.37262e-15 - 3.44165e+00 3.08620e-15 - 3.44180e+00 2.90652e-15 - 3.44195e+00 2.77276e-15 - 3.44210e+00 2.63896e-15 - 3.44225e+00 2.50512e-15 - 3.44240e+00 2.37122e-15 - 3.44255e+00 2.24624e-15 - 3.44270e+00 2.13140e-15 - 3.44285e+00 2.01651e-15 - 3.44300e+00 1.90159e-15 - 3.44315e+00 1.78662e-15 - 3.44330e+00 1.69054e-15 - 3.44345e+00 1.65219e-15 - 3.44360e+00 1.61383e-15 - 3.44375e+00 1.57546e-15 - 3.44390e+00 1.53707e-15 - 3.44405e+00 1.50533e-15 - 3.44420e+00 1.65899e-15 - 3.44435e+00 1.81270e-15 - 3.44450e+00 1.96646e-15 - 3.44465e+00 2.12028e-15 - 3.44480e+00 2.27415e-15 - 3.44495e+00 1.96382e-15 - 3.44510e+00 1.55964e-15 - 3.44525e+00 1.15531e-15 - 3.44540e+00 7.50845e-16 - 3.44555e+00 3.46240e-16 - 3.44570e+00 2.73858e-16 - 3.44585e+00 3.89540e-16 - 3.44600e+00 5.05261e-16 - 3.44615e+00 6.21022e-16 - 3.44630e+00 7.36823e-16 - 3.44645e+00 7.91223e-16 - 3.44660e+00 7.71909e-16 - 3.44675e+00 7.52589e-16 - 3.44690e+00 7.33262e-16 - 3.44705e+00 7.13928e-16 - 3.44720e+00 6.78352e-16 - 3.44735e+00 6.00965e-16 - 3.44750e+00 5.23550e-16 - 3.44765e+00 4.46109e-16 - 3.44780e+00 3.68641e-16 - 3.44795e+00 3.11067e-16 - 3.44810e+00 4.07969e-16 - 3.44825e+00 5.04904e-16 - 3.44840e+00 6.01873e-16 - 3.44855e+00 6.98875e-16 - 3.44870e+00 7.95911e-16 - 3.44885e+00 7.07020e-16 - 3.44900e+00 6.09917e-16 - 3.44915e+00 5.12781e-16 - 3.44930e+00 4.15611e-16 - 3.44945e+00 3.18407e-16 - 3.44960e+00 3.00000e-16 - 3.44975e+00 3.00000e-16 - 3.44990e+00 3.00000e-16 - 3.45005e+00 3.00000e-16 - 3.45020e+00 3.00000e-16 - 3.45035e+00 7.32429e-16 - 3.45050e+00 1.37552e-15 - 3.45065e+00 2.01884e-15 - 3.45080e+00 2.66238e-15 - 3.45095e+00 3.30615e-15 - 3.45110e+00 3.82281e-15 - 3.45125e+00 4.23276e-15 - 3.45140e+00 4.64285e-15 - 3.45155e+00 5.05309e-15 - 3.45170e+00 5.46346e-15 - 3.45185e+00 5.74142e-15 - 3.45200e+00 5.83920e-15 - 3.45215e+00 5.93701e-15 - 3.45230e+00 6.03485e-15 - 3.45245e+00 6.13273e-15 - 3.45260e+00 6.27967e-15 - 3.45275e+00 6.53432e-15 - 3.45290e+00 6.78907e-15 - 3.45305e+00 7.04390e-15 - 3.45320e+00 7.29882e-15 - 3.45335e+00 7.49172e-15 - 3.45350e+00 7.45247e-15 - 3.45365e+00 7.41321e-15 - 3.45380e+00 7.37394e-15 - 3.45395e+00 7.33465e-15 - 3.45410e+00 7.29303e-15 - 3.45425e+00 7.23406e-15 - 3.45440e+00 7.17507e-15 - 3.45455e+00 7.11606e-15 - 3.45470e+00 7.05703e-15 - 3.45485e+00 6.99595e-15 - 3.45500e+00 6.87781e-15 - 3.45515e+00 6.75962e-15 - 3.45530e+00 6.64140e-15 - 3.45545e+00 6.52313e-15 - 3.45560e+00 6.40482e-15 - 3.45575e+00 6.22971e-15 - 3.45590e+00 6.05213e-15 - 3.45605e+00 5.87448e-15 - 3.45620e+00 5.69677e-15 - 3.45635e+00 5.51900e-15 - 3.45650e+00 5.55294e-15 - 3.45665e+00 5.61224e-15 - 3.45680e+00 5.67156e-15 - 3.45695e+00 5.73089e-15 - 3.45710e+00 5.79025e-15 - 3.45725e+00 5.86618e-15 - 3.45740e+00 5.94538e-15 - 3.45755e+00 6.02460e-15 - 3.45770e+00 6.10386e-15 - 3.45785e+00 6.18314e-15 - 3.45800e+00 6.09072e-15 - 3.45815e+00 5.95188e-15 - 3.45830e+00 5.81299e-15 - 3.45845e+00 5.67406e-15 - 3.45860e+00 5.53508e-15 - 3.45875e+00 5.42575e-15 - 3.45890e+00 5.32641e-15 - 3.45905e+00 5.22703e-15 - 3.45920e+00 5.12762e-15 - 3.45935e+00 5.02817e-15 - 3.45950e+00 4.95722e-15 - 3.45965e+00 4.89751e-15 - 3.45980e+00 4.83778e-15 - 3.45995e+00 4.77803e-15 - 3.46010e+00 4.71826e-15 - 3.46025e+00 4.67231e-15 - 3.46040e+00 4.63244e-15 - 3.46055e+00 4.59255e-15 - 3.46070e+00 4.55265e-15 - 3.46085e+00 4.51273e-15 - 3.46100e+00 4.44561e-15 - 3.46115e+00 4.36572e-15 - 3.46130e+00 4.28581e-15 - 3.46145e+00 4.20587e-15 - 3.46160e+00 4.12590e-15 - 3.46175e+00 3.89713e-15 - 3.46190e+00 3.59704e-15 - 3.46205e+00 3.29685e-15 - 3.46220e+00 2.99655e-15 - 3.46235e+00 2.69615e-15 - 3.46250e+00 2.62725e-15 - 3.46265e+00 2.66733e-15 - 3.46280e+00 2.70742e-15 - 3.46295e+00 2.74753e-15 - 3.46310e+00 2.78766e-15 - 3.46325e+00 2.80000e-15 - 3.46340e+00 2.80000e-15 - 3.46355e+00 2.80000e-15 - 3.46370e+00 2.80000e-15 - 3.46385e+00 2.80000e-15 - 3.46400e+00 2.80000e-15 - 3.46415e+00 2.80000e-15 - 3.46430e+00 2.80000e-15 - 3.46445e+00 2.80000e-15 - 3.46460e+00 2.80000e-15 - 3.46475e+00 2.81496e-15 - 3.46490e+00 2.83511e-15 - 3.46505e+00 2.85526e-15 - 3.46520e+00 2.87542e-15 - 3.46535e+00 2.89558e-15 - 3.46550e+00 3.23086e-15 - 3.46565e+00 3.65463e-15 - 3.46580e+00 4.07855e-15 - 3.46595e+00 4.50261e-15 - 3.46610e+00 4.92682e-15 - 3.46625e+00 5.16723e-15 - 3.46640e+00 5.36937e-15 - 3.46655e+00 5.57159e-15 - 3.46670e+00 5.77387e-15 - 3.46685e+00 5.97623e-15 - 3.46700e+00 5.82135e-15 - 3.46715e+00 5.61886e-15 - 3.46730e+00 5.41629e-15 - 3.46745e+00 5.21366e-15 - 3.46760e+00 5.01096e-15 - 3.46775e+00 4.96164e-15 - 3.46790e+00 4.92107e-15 - 3.46805e+00 4.88048e-15 - 3.46820e+00 4.83989e-15 - 3.46835e+00 4.80253e-15 - 3.46850e+00 4.94472e-15 - 3.46865e+00 5.08695e-15 - 3.46880e+00 5.22924e-15 - 3.46895e+00 5.37157e-15 - 3.46910e+00 5.49003e-15 - 3.46925e+00 5.38829e-15 - 3.46940e+00 5.28652e-15 - 3.46955e+00 5.18471e-15 - 3.46970e+00 5.08287e-15 - 3.46985e+00 4.96959e-15 - 3.47000e+00 4.80652e-15 - 3.47015e+00 4.64341e-15 - 3.47030e+00 4.48023e-15 - 3.47045e+00 4.31700e-15 - 3.47060e+00 4.18264e-15 - 3.47075e+00 4.12139e-15 - 3.47090e+00 4.06011e-15 - 3.47105e+00 3.99882e-15 - 3.47120e+00 3.93750e-15 - 3.47135e+00 3.98741e-15 - 3.47150e+00 4.21239e-15 - 3.47165e+00 4.43746e-15 - 3.47180e+00 4.66260e-15 - 3.47195e+00 4.88782e-15 - 3.47210e+00 4.94859e-15 - 3.47225e+00 4.84614e-15 - 3.47240e+00 4.74366e-15 - 3.47255e+00 4.64115e-15 - 3.47270e+00 4.53860e-15 - 3.47285e+00 4.38483e-15 - 3.47300e+00 4.20011e-15 - 3.47315e+00 4.01533e-15 - 3.47330e+00 3.83049e-15 - 3.47345e+00 3.64558e-15 - 3.47360e+00 3.81683e-15 - 3.47375e+00 4.10466e-15 - 3.47390e+00 4.39259e-15 - 3.47405e+00 4.68062e-15 - 3.47420e+00 4.96875e-15 - 3.47435e+00 5.00000e-15 - 3.47450e+00 5.00000e-15 - 3.47465e+00 5.00000e-15 - 3.47480e+00 5.00000e-15 - 3.47495e+00 4.97820e-15 - 3.47510e+00 4.40074e-15 - 3.47525e+00 3.82308e-15 - 3.47540e+00 3.24523e-15 - 3.47555e+00 2.66717e-15 - 3.47570e+00 2.15239e-15 - 3.47585e+00 1.90448e-15 - 3.47600e+00 1.65649e-15 - 3.47615e+00 1.40841e-15 - 3.47630e+00 1.16024e-15 - 3.47645e+00 1.22003e-15 - 3.47660e+00 1.84088e-15 - 3.47675e+00 2.46194e-15 - 3.47690e+00 3.08321e-15 - 3.47705e+00 3.70470e-15 - 3.47720e+00 3.86944e-15 - 3.47735e+00 3.62067e-15 - 3.47750e+00 3.37182e-15 - 3.47765e+00 3.12288e-15 - 3.47780e+00 2.87385e-15 - 3.47795e+00 2.42028e-15 - 3.47810e+00 1.88035e-15 - 3.47825e+00 1.34024e-15 - 3.47840e+00 7.99936e-16 - 3.47855e+00 2.59449e-16 - 3.47870e+00 1.62983e-16 - 3.47885e+00 1.21378e-16 - 3.47900e+00 7.97590e-17 - 3.47915e+00 3.81256e-17 - 3.47930e+00 1.40886e-17 - 3.47945e+00 1.80737e-16 - 3.47960e+00 3.47444e-16 - 3.47975e+00 5.14207e-16 - 3.47990e+00 6.81029e-16 - 3.48005e+00 7.52092e-16 - 3.48020e+00 5.85155e-16 - 3.48035e+00 4.18161e-16 - 3.48050e+00 2.51109e-16 - 3.48065e+00 8.39989e-17 - 3.48080e+00 1.03961e-16 - 3.48095e+00 3.12992e-16 - 3.48110e+00 5.22096e-16 - 3.48125e+00 7.31272e-16 - 3.48140e+00 9.40521e-16 - 3.48155e+00 1.11987e-15 - 3.48170e+00 1.28739e-15 - 3.48185e+00 1.45496e-15 - 3.48200e+00 1.62259e-15 - 3.48215e+00 1.79028e-15 - 3.48230e+00 1.48395e-15 - 3.48245e+00 1.14835e-15 - 3.48260e+00 8.12622e-16 - 3.48275e+00 4.76782e-16 - 3.48290e+00 2.29587e-16 - 3.48305e+00 3.97623e-16 - 3.48320e+00 5.65716e-16 - 3.48335e+00 7.33868e-16 - 3.48350e+00 9.02078e-16 - 3.48365e+00 9.82413e-16 - 3.48380e+00 9.40332e-16 - 3.48395e+00 8.98236e-16 - 3.48410e+00 8.56125e-16 - 3.48425e+00 8.14000e-16 - 3.48440e+00 7.57790e-16 - 3.48455e+00 6.94559e-16 - 3.48470e+00 6.31305e-16 - 3.48485e+00 5.68030e-16 - 3.48500e+00 5.04733e-16 - 3.48515e+00 5.97643e-16 - 3.48530e+00 7.03211e-16 - 3.48545e+00 8.08815e-16 - 3.48560e+00 9.14456e-16 - 3.48575e+00 1.02416e-15 - 3.48590e+00 1.15102e-15 - 3.48605e+00 1.27792e-15 - 3.48620e+00 1.40486e-15 - 3.48635e+00 1.53185e-15 - 3.48650e+00 1.50186e-15 - 3.48665e+00 1.29007e-15 - 3.48680e+00 1.07820e-15 - 3.48695e+00 8.66265e-16 - 3.48710e+00 6.54252e-16 - 3.48725e+00 8.68317e-16 - 3.48740e+00 1.22899e-15 - 3.48755e+00 1.58978e-15 - 3.48770e+00 1.95070e-15 - 3.48785e+00 2.29171e-15 - 3.48800e+00 2.03676e-15 - 3.48815e+00 1.78173e-15 - 3.48830e+00 1.52661e-15 - 3.48845e+00 1.27141e-15 - 3.48860e+00 1.02310e-15 - 3.48875e+00 7.89000e-16 - 3.48890e+00 5.54818e-16 - 3.48905e+00 3.20554e-16 - 3.48920e+00 8.62097e-17 - 3.48935e+00 0.00000e+00 - 3.48950e+00 0.00000e+00 - 3.48965e+00 0.00000e+00 - 3.48980e+00 0.00000e+00 - 3.48995e+00 0.00000e+00 - 3.49010e+00 0.00000e+00 - 3.49025e+00 0.00000e+00 - 3.49040e+00 0.00000e+00 - 3.49055e+00 1.25969e-15 - 3.49070e+00 1.46103e-15 - 3.49085e+00 9.58959e-16 - 3.49100e+00 1.85369e-15 - 3.49115e+00 3.39050e-16 - 3.49130e+00 6.32265e-16 - 3.49145e+00 1.71376e-15 - 3.49160e+00 2.31339e-15 - 3.49175e+00 1.58243e-15 - 3.49190e+00 1.71564e-15 - 3.49205e+00 1.99633e-15 - 3.49220e+00 2.21548e-15 - 3.49235e+00 2.99010e-15 - 3.49250e+00 3.38457e-15 - 3.49265e+00 2.81350e-15 - 3.49280e+00 1.79567e-15 - 3.49295e+00 2.99586e-15 - 3.49310e+00 1.78522e-15 - 3.49325e+00 1.22350e-15 - 3.49340e+00 3.79803e-15 - 3.49355e+00 3.68060e-15 - 3.49370e+00 6.46233e-15 - 3.49385e+00 3.88248e-15 - 3.49400e+00 3.70825e-15 - 3.49415e+00 1.41341e-15 - 3.49430e+00 3.54376e-15 - 3.49445e+00 2.25609e-15 - 3.49460e+00 1.71736e-15 - 3.49475e+00 2.00557e-15 - 3.49490e+00 2.23947e-15 - 3.49505e+00 2.62428e-15 - 3.49520e+00 1.32346e-15 - 3.49535e+00 3.44202e-15 - 3.49550e+00 3.53889e-15 - 3.49565e+00 2.92156e-15 - 3.49580e+00 2.98477e-15 - 3.49595e+00 2.25387e-15 - 3.49610e+00 4.28911e-15 - 3.49625e+00 2.26328e-15 - 3.49640e+00 2.71085e-15 - 3.49655e+00 3.43183e-15 - 3.49670e+00 3.16016e-15 - 3.49685e+00 1.14976e-15 - 3.49700e+00 8.66365e-16 - 3.49715e+00 1.12132e-15 - 3.49730e+00 1.76086e-15 - 3.49745e+00 1.18991e-15 - 3.49760e+00 1.43861e-15 - 3.49775e+00 1.82433e-15 - 3.49790e+00 1.48070e-15 - 3.49805e+00 1.54405e-15 - 3.49820e+00 2.09097e-15 - 3.49835e+00 1.50079e-15 - 3.49850e+00 3.04812e-15 - 3.49865e+00 2.20347e-15 - 3.49880e+00 2.20314e-15 - 3.49895e+00 1.60239e-15 - 3.49910e+00 2.97950e-15 - 3.49925e+00 1.76206e-15 - 3.49940e+00 1.45246e-15 - 3.49955e+00 2.18664e-15 - 3.49970e+00 3.25106e-15 - 3.49985e+00 3.46897e-15 - 3.50000e+00 4.84960e-15 - 3.50015e+00 4.58076e-15 - 3.50030e+00 5.22645e-15 - 3.50045e+00 3.79335e-15 - 3.50060e+00 3.20773e-15 - 3.50075e+00 3.91559e-15 - 3.50090e+00 3.59015e-15 - 3.50105e+00 4.19452e-15 - 3.50120e+00 4.10724e-15 - 3.50135e+00 2.26526e-15 - 3.50150e+00 8.56969e-16 - 3.50165e+00 1.65665e-15 - 3.50180e+00 2.80329e-15 - 3.50195e+00 3.10914e-15 - 3.50210e+00 4.23770e-15 - 3.50225e+00 5.03076e-15 - 3.50240e+00 5.16399e-15 - 3.50255e+00 5.87276e-15 - 3.50270e+00 5.75247e-15 - 3.50285e+00 6.85489e-15 - 3.50300e+00 6.83703e-15 - 3.50315e+00 5.75704e-15 - 3.50330e+00 5.77748e-15 - 3.50345e+00 6.90001e-15 - 3.50360e+00 6.20853e-15 - 3.50375e+00 4.33134e-15 - 3.50390e+00 4.83990e-15 - 3.50405e+00 6.75518e-15 - 3.50420e+00 7.95706e-15 - 3.50435e+00 7.47772e-15 - 3.50450e+00 6.82484e-15 - 3.50465e+00 5.91637e-15 - 3.50480e+00 3.98660e-15 - 3.50495e+00 3.66090e-15 - 3.50510e+00 1.92368e-15 - 3.50525e+00 1.53096e-15 - 3.50540e+00 1.43001e-15 - 3.50555e+00 2.08400e-15 - 3.50570e+00 2.49110e-15 - 3.50585e+00 2.24809e-15 - 3.50600e+00 1.49117e-15 - 3.50615e+00 2.83899e-15 - 3.50630e+00 4.22931e-15 - 3.50645e+00 5.63549e-15 - 3.50660e+00 5.64861e-15 - 3.50675e+00 5.77701e-15 - 3.50690e+00 5.49236e-15 - 3.50705e+00 5.11407e-15 - 3.50720e+00 3.35311e-15 - 3.50735e+00 1.59414e-15 - 3.50750e+00 3.15504e-15 - 3.50765e+00 2.55553e-15 - 3.50780e+00 2.85241e-15 - 3.50795e+00 1.89691e-15 - 3.50810e+00 2.43663e-15 - 3.50825e+00 3.41908e-15 - 3.50840e+00 4.35092e-15 - 3.50855e+00 4.19944e-15 - 3.50870e+00 5.98172e-15 - 3.50885e+00 6.86695e-15 - 3.50900e+00 6.10517e-15 - 3.50915e+00 5.62651e-15 - 3.50930e+00 4.94382e-15 - 3.50945e+00 4.72225e-15 - 3.50960e+00 5.22342e-15 - 3.50975e+00 5.99038e-15 - 3.50990e+00 5.65645e-15 - 3.51005e+00 4.22816e-15 - 3.51020e+00 5.38394e-15 - 3.51035e+00 3.27519e-15 - 3.51050e+00 5.43649e-15 - 3.51065e+00 4.23392e-15 - 3.51080e+00 4.57733e-15 - 3.51095e+00 5.49156e-15 - 3.51110e+00 5.87711e-15 - 3.51125e+00 5.14931e-15 - 3.51140e+00 5.45817e-15 - 3.51155e+00 6.22322e-15 - 3.51170e+00 6.96478e-15 - 3.51185e+00 5.28469e-15 - 3.51200e+00 5.94455e-15 - 3.51215e+00 5.80854e-15 - 3.51230e+00 6.78032e-15 - 3.51245e+00 6.33139e-15 - 3.51260e+00 8.77003e-15 - 3.51275e+00 8.10470e-15 - 3.51290e+00 7.19953e-15 - 3.51305e+00 7.02153e-15 - 3.51320e+00 5.74826e-15 - 3.51335e+00 4.84775e-15 - 3.51350e+00 4.60969e-15 - 3.51365e+00 4.03697e-15 - 3.51380e+00 5.46154e-15 - 3.51395e+00 5.08760e-15 - 3.51410e+00 4.31471e-15 - 3.51425e+00 5.06297e-15 - 3.51440e+00 5.24502e-15 - 3.51455e+00 4.66554e-15 - 3.51470e+00 4.11978e-15 - 3.51485e+00 5.57269e-15 - 3.51500e+00 5.26105e-15 - 3.51515e+00 7.45922e-15 - 3.51530e+00 7.15998e-15 - 3.51545e+00 8.84556e-15 - 3.51560e+00 9.21646e-15 - 3.51575e+00 6.96825e-15 - 3.51590e+00 7.82726e-15 - 3.51605e+00 7.81218e-15 - 3.51620e+00 6.54473e-15 - 3.51635e+00 5.03451e-15 - 3.51650e+00 4.76717e-15 - 3.51665e+00 5.40071e-15 - 3.51680e+00 5.40904e-15 - 3.51695e+00 5.40714e-15 - 3.51710e+00 4.05779e-15 - 3.51725e+00 5.40939e-15 - 3.51740e+00 5.37976e-15 - 3.51755e+00 4.33810e-15 - 3.51770e+00 4.31249e-15 - 3.51785e+00 4.98489e-15 - 3.51800e+00 6.42613e-15 - 3.51815e+00 6.10706e-15 - 3.51830e+00 4.08943e-15 - 3.51845e+00 3.11898e-15 - 3.51860e+00 4.66214e-15 - 3.51875e+00 3.66066e-15 - 3.51890e+00 4.66626e-15 - 3.51905e+00 5.20858e-15 - 3.51920e+00 5.23944e-15 - 3.51935e+00 3.82465e-15 - 3.51950e+00 4.06978e-15 - 3.51965e+00 3.56386e-15 - 3.51980e+00 4.55084e-15 - 3.51995e+00 4.31673e-15 - 3.52010e+00 3.69161e-15 - 3.52025e+00 4.19169e-15 - 3.52040e+00 3.74537e-15 - 3.52055e+00 4.09671e-15 - 3.52070e+00 4.06505e-15 - 3.52085e+00 1.79202e-15 - 3.52100e+00 3.09784e-15 - 3.52115e+00 3.70848e-15 - 3.52130e+00 3.81137e-15 - 3.52145e+00 3.51460e-15 - 3.52160e+00 4.39040e-15 - 3.52175e+00 3.79543e-15 - 3.52190e+00 3.35511e-15 - 3.52205e+00 3.57800e-15 - 3.52220e+00 3.41999e-15 - 3.52235e+00 2.88216e-15 - 3.52250e+00 3.21377e-15 - 3.52265e+00 3.67258e-15 - 3.52280e+00 2.61198e-15 - 3.52295e+00 3.63323e-15 - 3.52310e+00 4.16821e-15 - 3.52325e+00 4.59546e-15 - 3.52340e+00 4.89721e-15 - 3.52355e+00 2.97247e-15 - 3.52370e+00 5.21153e-15 - 3.52385e+00 3.16206e-15 - 3.52400e+00 2.37596e-15 - 3.52415e+00 3.67950e-15 - 3.52430e+00 2.40656e-15 - 3.52445e+00 2.17611e-15 - 3.52460e+00 2.99999e-15 - 3.52475e+00 2.60048e-15 - 3.52490e+00 3.09491e-15 - 3.52505e+00 3.64558e-15 - 3.52520e+00 2.98891e-15 - 3.52535e+00 2.83346e-15 - 3.52550e+00 2.51958e-15 - 3.52565e+00 1.99154e-15 - 3.52580e+00 2.15286e-15 - 3.52595e+00 2.37259e-15 - 3.52610e+00 2.47938e-15 - 3.52625e+00 2.33037e-15 - 3.52640e+00 3.00644e-15 - 3.52655e+00 2.71741e-15 - 3.52670e+00 2.24483e-15 - 3.52685e+00 3.10826e-15 - 3.52700e+00 2.49567e-15 - 3.52715e+00 1.32431e-15 - 3.52730e+00 2.28716e-15 - 3.52745e+00 3.62501e-15 - 3.52760e+00 1.59886e-15 - 3.52775e+00 2.30942e-15 - 3.52790e+00 3.44917e-15 - 3.52805e+00 2.98438e-15 - 3.52820e+00 2.71002e-15 - 3.52835e+00 2.30670e-15 - 3.52850e+00 2.71236e-15 - 3.52865e+00 3.52673e-15 - 3.52880e+00 3.41460e-15 - 3.52895e+00 4.05625e-15 - 3.52910e+00 3.02871e-15 - 3.52925e+00 2.12813e-15 - 3.52940e+00 2.45676e-15 - 3.52955e+00 2.19615e-15 - 3.52970e+00 2.51912e-15 - 3.52985e+00 2.00314e-15 - 3.53000e+00 1.70735e-15 - 3.53015e+00 2.98845e-15 - 3.53030e+00 3.02063e-15 - 3.53045e+00 3.10779e-15 - 3.53060e+00 3.42779e-15 - 3.53075e+00 4.06957e-15 - 3.53090e+00 4.07273e-15 - 3.53105e+00 3.21514e-15 - 3.53120e+00 3.20980e-15 - 3.53135e+00 3.82195e-15 - 3.53150e+00 3.23838e-15 - 3.53165e+00 4.42469e-15 - 3.53180e+00 5.50358e-15 - 3.53195e+00 4.63786e-15 - 3.53210e+00 3.25010e-15 - 3.53225e+00 3.56365e-15 - 3.53240e+00 4.74552e-15 - 3.53255e+00 5.10373e-15 - 3.53270e+00 3.97927e-15 - 3.53285e+00 4.09236e-15 - 3.53300e+00 3.82809e-15 - 3.53315e+00 3.35244e-15 - 3.53330e+00 3.59391e-15 - 3.53345e+00 3.24671e-15 - 3.53360e+00 3.68034e-15 - 3.53375e+00 2.76564e-15 - 3.53390e+00 2.65159e-15 - 3.53405e+00 2.13779e-15 - 3.53420e+00 2.89580e-15 - 3.53435e+00 2.89341e-15 - 3.53450e+00 3.10253e-15 - 3.53465e+00 2.76451e-15 - 3.53480e+00 2.03507e-15 - 3.53495e+00 1.38610e-15 - 3.53510e+00 1.21254e-15 - 3.53525e+00 9.16742e-16 - 3.53540e+00 1.47841e-15 - 3.53555e+00 2.15617e-15 - 3.53570e+00 2.44237e-15 - 3.53585e+00 3.09425e-15 - 3.53600e+00 2.61210e-15 - 3.53615e+00 3.11043e-15 - 3.53630e+00 2.76930e-15 - 3.53645e+00 3.13596e-15 - 3.53660e+00 4.20168e-15 - 3.53675e+00 3.90864e-15 - 3.53690e+00 3.77998e-15 - 3.53705e+00 3.51008e-15 - 3.53720e+00 2.98633e-15 - 3.53735e+00 1.39353e-15 - 3.53750e+00 1.43285e-15 - 3.53765e+00 1.60785e-15 - 3.53780e+00 2.96182e-15 - 3.53795e+00 2.63391e-15 - 3.53810e+00 2.78488e-15 - 3.53825e+00 3.12154e-15 - 3.53840e+00 3.29095e-15 - 3.53855e+00 3.64282e-15 - 3.53870e+00 4.03354e-15 - 3.53885e+00 2.74985e-15 - 3.53900e+00 3.34792e-15 - 3.53915e+00 2.83680e-15 - 3.53930e+00 3.10733e-15 - 3.53945e+00 3.32319e-15 - 3.53960e+00 3.29306e-15 - 3.53975e+00 3.43229e-15 - 3.53990e+00 3.77674e-15 - 3.54005e+00 4.33874e-15 - 3.54020e+00 4.27141e-15 - 3.54035e+00 3.22790e-15 - 3.54050e+00 3.34232e-15 - 3.54065e+00 3.62246e-15 - 3.54080e+00 3.38650e-15 - 3.54095e+00 3.59674e-15 - 3.54110e+00 3.26759e-15 - 3.54125e+00 3.46374e-15 - 3.54140e+00 2.70696e-15 - 3.54155e+00 2.52063e-15 - 3.54170e+00 2.81578e-15 - 3.54185e+00 2.76422e-15 - 3.54200e+00 2.54984e-15 - 3.54215e+00 3.52570e-15 - 3.54230e+00 2.69887e-15 - 3.54245e+00 2.19507e-15 - 3.54260e+00 3.07877e-15 - 3.54275e+00 3.55051e-15 - 3.54290e+00 3.75245e-15 - 3.54305e+00 3.59685e-15 - 3.54320e+00 4.01998e-15 - 3.54335e+00 4.85150e-15 - 3.54350e+00 5.72184e-15 - 3.54365e+00 4.12521e-15 - 3.54380e+00 3.99631e-15 - 3.54395e+00 2.96919e-15 diff --git a/pro/templates/irontemplate.dat b/pro/templates/irontemplate.dat deleted file mode 100644 index d8a8fdb9d..000000000 --- a/pro/templates/irontemplate.dat +++ /dev/null @@ -1,2002 +0,0 @@ -# Boroson optical Fe template -# log10(wave) flux (erg/s/cm2/A) -3.566514 2.698728E-16 -3.5666678989 1.989182E-16 -3.5668217978 1.149670E-16 -3.5669756967 6.660908E-17 -3.5671295956 7.540848E-17 -3.5672834945 1.299832E-16 -3.5674373934 1.622967E-16 -3.5675912923 2.003827E-16 -3.5677451912 3.407178E-16 -3.5678990901 5.344449E-16 -3.568052989 6.888640E-16 -3.5682068879 8.109969E-16 -3.5683607868 8.989126E-16 -3.5685146857 9.012872E-16 -3.5686685846 8.248234E-16 -3.5688224835 7.478125E-16 -3.5689763824 7.368375E-16 -3.5691302813 8.431189E-16 -3.5692841802 1.049535E-15 -3.5694380791 1.306436E-15 -3.569591978 1.538648E-15 -3.5697458769 1.679577E-15 -3.5698997758 1.684525E-15 -3.5700536747 1.588856E-15 -3.5702075736 1.522729E-15 -3.5703614725 1.532254E-15 -3.5705153714 1.609884E-15 -3.5706692703 1.708356E-15 -3.5708231692 1.774999E-15 -3.5709770681 1.880132E-15 -3.571130967 2.044323E-15 -3.5712848659 2.174241E-15 -3.5714387648 2.214679E-15 -3.5715926637 2.146825E-15 -3.5717465626 2.035392E-15 -3.5719004615 1.981764E-15 -3.5720543604 1.987683E-15 -3.5722082593 2.028712E-15 -3.5723621582 2.029391E-15 -3.5725160571 1.963501E-15 -3.572669956 1.889710E-15 -3.5728238549 1.862299E-15 -3.5729777538 1.927705E-15 -3.5731316527 2.069765E-15 -3.5732855516 2.243653E-15 -3.5734394505 2.380650E-15 -3.5735933494 2.426872E-15 -3.5737472483 2.371895E-15 -3.5739011472 2.236101E-15 -3.5740550461 2.068745E-15 -3.574208945 1.927959E-15 -3.5743628439 1.870079E-15 -3.5745167428 1.880385E-15 -3.5746706417 1.933989E-15 -3.5748245406 2.036122E-15 -3.5749784395 2.170964E-15 -3.5751323384 2.298792E-15 -3.5752862373 2.391165E-15 -3.5754401362 2.430571E-15 -3.5755940351 2.421006E-15 -3.575747934 2.375504E-15 -3.5759018329 2.339148E-15 -3.5760557318 2.310696E-15 -3.5762096307 2.194944E-15 -3.5763635296 1.975093E-15 -3.5765174285 1.701170E-15 -3.5766713274 1.452495E-15 -3.5768252263 1.313619E-15 -3.5769791252 1.254723E-15 -3.5771330241 1.257414E-15 -3.577286923 1.374452E-15 -3.5774408219 1.549676E-15 -3.5775947208 1.621248E-15 -3.5777486197 1.610338E-15 -3.5779025186 1.614050E-15 -3.5780564175 1.574797E-15 -3.5782103164 1.464164E-15 -3.5783642153 1.345207E-15 -3.5785181142 1.260289E-15 -3.5786720131 1.233374E-15 -3.578825912 1.206947E-15 -3.5789798109 1.089858E-15 -3.5791337098 9.506917E-16 -3.5792876087 8.561120E-16 -3.5794415076 8.090377E-16 -3.5795954065 8.039220E-16 -3.5797493054 8.222692E-16 -3.5799032043 8.433552E-16 -3.5800571032 8.487856E-16 -3.5802110021 8.360813E-16 -3.580364901 8.121645E-16 -3.5805187999 7.951857E-16 -3.5806726988 8.085142E-16 -3.5808265977 8.714530E-16 -3.5809804966 1.016914E-15 -3.5811343955 1.273173E-15 -3.5812882944 1.484668E-15 -3.5814421933 1.528661E-15 -3.5815960922 1.426935E-15 -3.5817499911 1.251557E-15 -3.58190389 1.121007E-15 -3.5820577889 1.105392E-15 -3.5822116878 1.234618E-15 -3.5823655867 1.427857E-15 -3.5825194856 1.597409E-15 -3.5826733845 1.682842E-15 -3.5828272834 1.681555E-15 -3.5829811823 1.650847E-15 -3.5831350812 1.618731E-15 -3.5832889801 1.599557E-15 -3.583442879 1.574085E-15 -3.5835967779 1.525302E-15 -3.5837506768 1.448867E-15 -3.5839045757 1.363467E-15 -3.5840584746 1.303549E-15 -3.5842123735 1.331261E-15 -3.5843662724 1.490471E-15 -3.5845201713 1.704452E-15 -3.5846740702 1.903637E-15 -3.5848279691 2.044608E-15 -3.584981868 2.131849E-15 -3.5851357669 2.204627E-15 -3.5852896658 2.265112E-15 -3.5854435647 2.310082E-15 -3.5855974636 2.330743E-15 -3.5857513625 2.330831E-15 -3.5859052614 2.323474E-15 -3.5860591603 2.377713E-15 -3.5862130592 2.571962E-15 -3.5863669581 2.797031E-15 -3.586520857 2.953413E-15 -3.5866747559 3.018672E-15 -3.5868286548 2.937452E-15 -3.5869825537 2.637697E-15 -3.5871364526 2.252067E-15 -3.5872903515 1.946274E-15 -3.5874442504 1.720358E-15 -3.5875981493 1.568332E-15 -3.5877520482 1.481080E-15 -3.5879059471 1.443341E-15 -3.588059846 1.441782E-15 -3.5882137449 1.432429E-15 -3.5883676438 1.403897E-15 -3.5885215427 1.445909E-15 -3.5886754416 1.562041E-15 -3.5888293405 1.674403E-15 -3.5889832394 1.718239E-15 -3.5891371383 1.649782E-15 -3.5892910372 1.559219E-15 -3.5894449361 1.471238E-15 -3.589598835 1.294887E-15 -3.5897527339 1.025721E-15 -3.5899066328 7.115400E-16 -3.5900605317 4.399486E-16 -3.5902144306 2.855044E-16 -3.5903683295 2.679488E-16 -3.5905222284 3.700252E-16 -3.5906761273 5.413918E-16 -3.5908300262 7.099348E-16 -3.5909839251 8.104870E-16 -3.591137824 8.321092E-16 -3.5912917229 7.855016E-16 -3.5914456218 7.016064E-16 -3.5915995207 6.189381E-16 -3.5917534196 5.747399E-16 -3.5919073185 5.742571E-16 -3.5920612174 6.164321E-16 -3.5922151163 7.048268E-16 -3.5923690152 7.946225E-16 -3.5925229141 8.121717E-16 -3.592676813 7.765785E-16 -3.5928307119 7.167831E-16 -3.5929846108 6.281585E-16 -3.5931385097 5.143579E-16 -3.5932924086 3.850998E-16 -3.5934463075 2.853765E-16 -3.5936002064 2.663771E-16 -3.5937541053 3.735255E-16 -3.5939080042 5.951898E-16 -3.5940619031 8.526760E-16 -3.594215802 1.054382E-15 -3.5943697009 1.121040E-15 -3.5945235998 1.138663E-15 -3.5946774987 1.170461E-15 -3.5948313976 1.206383E-15 -3.5949852965 1.246144E-15 -3.5951391954 1.288968E-15 -3.5952930943 1.291814E-15 -3.5954469932 1.224343E-15 -3.5956008921 1.086674E-15 -3.595754791 9.445888E-16 -3.5959086899 9.078720E-16 -3.5960625888 9.292761E-16 -3.5962164877 9.424674E-16 -3.5963703866 9.364835E-16 -3.5965242855 9.105101E-16 -3.5966781844 8.795269E-16 -3.5968320833 8.473130E-16 -3.5969859822 8.225034E-16 -3.5971398811 8.423151E-16 -3.59729378 9.261688E-16 -3.5974476789 1.075009E-15 -3.5976015778 1.216195E-15 -3.5977554767 1.276488E-15 -3.5979093756 1.336276E-15 -3.5980632745 1.424236E-15 -3.5982171734 1.495146E-15 -3.5983710723 1.507197E-15 -3.5985249712 1.428841E-15 -3.5986788701 1.305622E-15 -3.598832769 1.163289E-15 -3.5989866679 9.874677E-16 -3.5991405668 8.058054E-16 -3.5992944657 6.590680E-16 -3.5994483646 5.555733E-16 -3.5996022635 4.953412E-16 -3.5997561624 4.771897E-16 -3.5999100613 4.371348E-16 -3.6000639602 2.983137E-16 -3.6002178591 1.943480E-16 -3.600371758 1.977548E-16 -3.6005256569 2.634041E-16 -3.6006795558 3.092086E-16 -3.6008334547 2.450959E-16 -3.6009873536 1.775827E-16 -3.6011412525 1.681323E-16 -3.6012951514 1.782345E-16 -3.6014490503 1.835276E-16 -3.6016029492 1.677440E-16 -3.6017568481 2.107436E-16 -3.601910747 3.379137E-16 -3.6020646459 4.809132E-16 -3.6022185448 5.633041E-16 -3.6023724437 5.203100E-16 -3.6025263426 4.338550E-16 -3.6026802415 3.615625E-16 -3.6028341404 2.917754E-16 -3.6029880393 2.794215E-16 -3.6031419382 3.858143E-16 -3.6032958371 5.152727E-16 -3.603449736 5.935440E-16 -3.6036036349 5.949700E-16 -3.6037575338 5.592722E-16 -3.6039114327 5.494293E-16 -3.6040653316 5.342657E-16 -3.6042192305 5.169469E-16 -3.6043731294 5.459925E-16 -3.6045270283 6.226667E-16 -3.6046809272 7.197079E-16 -3.6048348261 7.602452E-16 -3.604988725 7.139193E-16 -3.6051426239 6.093615E-16 -3.6052965228 5.116453E-16 -3.6054504217 4.779960E-16 -3.6056043206 4.853606E-16 -3.6057582195 5.071352E-16 -3.6059121184 5.191758E-16 -3.6060660173 5.029369E-16 -3.6062199162 4.547386E-16 -3.6063738151 3.972768E-16 -3.606527714 3.606515E-16 -3.6066816129 3.753560E-16 -3.6068355118 4.029252E-16 -3.6069894107 4.099755E-16 -3.6071433096 4.038324E-16 -3.6072972085 4.095316E-16 -3.6074511074 4.569181E-16 -3.6076050063 5.773572E-16 -3.6077589052 7.229381E-16 -3.6079128041 7.077851E-16 -3.608066703 6.154763E-16 -3.6082206019 6.349195E-16 -3.6083745008 6.608226E-16 -3.6085283997 6.672800E-16 -3.6086822986 7.393832E-16 -3.6088361975 8.887299E-16 -3.6089900964 1.088876E-15 -3.6091439953 1.273980E-15 -3.6092978942 1.382606E-15 -3.6094517931 1.370982E-15 -3.609605692 1.274204E-15 -3.6097595909 1.145706E-15 -3.6099134898 1.018656E-15 -3.6100673887 9.213661E-16 -3.6102212876 8.712472E-16 -3.6103751865 8.322837E-16 -3.6105290854 7.822113E-16 -3.6106829843 7.315503E-16 -3.6108368832 7.328534E-16 -3.6109907821 8.372490E-16 -3.611144681 9.718518E-16 -3.6112985799 1.079960E-15 -3.6114524788 1.135979E-15 -3.6116063777 1.184267E-15 -3.6117602766 1.271846E-15 -3.6119141755 1.376548E-15 -3.6120680744 1.480363E-15 -3.6122219733 1.570245E-15 -3.6123758722 1.618091E-15 -3.6125297711 1.625520E-15 -3.61268367 1.652540E-15 -3.6128375689 1.666347E-15 -3.6129914678 1.599427E-15 -3.6131453667 1.451450E-15 -3.6132992656 1.253692E-15 -3.6134531645 1.068192E-15 -3.6136070634 9.398861E-16 -3.6137609623 8.932688E-16 -3.6139148612 9.272382E-16 -3.6140687601 9.836438E-16 -3.614222659 9.760806E-16 -3.6143765579 9.216723E-16 -3.6145304568 8.654480E-16 -3.6146843557 8.714716E-16 -3.6148382546 9.418101E-16 -3.6149921535 1.042853E-15 -3.6151460524 1.124288E-15 -3.6152999513 1.162981E-15 -3.6154538502 1.166234E-15 -3.6156077491 1.154622E-15 -3.615761648 1.128631E-15 -3.6159155469 1.039883E-15 -3.6160694458 8.851779E-16 -3.6162233447 6.952985E-16 -3.6163772436 5.549833E-16 -3.6165311425 4.977806E-16 -3.6166850414 4.921415E-16 -3.6168389403 4.864092E-16 -3.6169928392 4.490326E-16 -3.6171467381 4.173836E-16 -3.617300637 4.077711E-16 -3.6174545359 4.191137E-16 -3.6176084348 4.290587E-16 -3.6177623337 4.208976E-16 -3.6179162326 3.919062E-16 -3.6180701315 3.395350E-16 -3.6182240304 2.777769E-16 -3.6183779293 2.632995E-16 -3.6185318282 2.904469E-16 -3.6186857271 3.147093E-16 -3.618839626 3.628012E-16 -3.6189935249 4.496654E-16 -3.6191474238 5.740192E-16 -3.6193013227 6.715225E-16 -3.6194552216 7.022114E-16 -3.6196091205 7.446061E-16 -3.6197630194 8.345257E-16 -3.6199169183 9.743052E-16 -3.6200708172 1.171867E-15 -3.6202247161 1.406780E-15 -3.620378615 1.642786E-15 -3.6205325139 1.819277E-15 -3.6206864128 1.907897E-15 -3.6208403117 1.979908E-15 -3.6209942106 1.970330E-15 -3.6211481095 1.771835E-15 -3.6213020084 1.471301E-15 -3.6214559073 1.162377E-15 -3.6216098062 9.124144E-16 -3.6217637051 7.541783E-16 -3.621917604 6.831398E-16 -3.6220715029 6.613137E-16 -3.6222254018 6.594398E-16 -3.6223793007 6.440116E-16 -3.6225331996 5.517882E-16 -3.6226870985 4.234844E-16 -3.6228409974 3.803582E-16 -3.6229948963 3.653986E-16 -3.6231487952 3.368391E-16 -3.6233026941 3.227992E-16 -3.623456593 3.381869E-16 -3.6236104919 3.855599E-16 -3.6237643908 4.105015E-16 -3.6239182897 4.018614E-16 -3.6240721886 3.817025E-16 -3.6242260875 3.330223E-16 -3.6243799864 2.719187E-16 -3.6245338853 2.476844E-16 -3.6246877842 2.296361E-16 -3.6248416831 1.986564E-16 -3.624995582 1.879820E-16 -3.6251494809 2.223458E-16 -3.6253033798 3.147812E-16 -3.6254572787 4.138362E-16 -3.6256111776 5.156957E-16 -3.6257650765 6.718238E-16 -3.6259189754 8.584082E-16 -3.6260728743 1.063924E-15 -3.6262267732 1.287769E-15 -3.6263806721 1.505503E-15 -3.626534571 1.679734E-15 -3.6266884699 1.774403E-15 -3.6268423688 1.746587E-15 -3.6269962677 1.583251E-15 -3.6271501666 1.442778E-15 -3.6273040655 1.429540E-15 -3.6274579644 1.555193E-15 -3.6276118633 1.705254E-15 -3.6277657622 1.773601E-15 -3.6279196611 1.694555E-15 -3.62807356 1.486680E-15 -3.6282274589 1.222160E-15 -3.6283813578 1.016551E-15 -3.6285352567 9.036226E-16 -3.6286891556 8.730804E-16 -3.6288430545 8.996481E-16 -3.6289969534 9.371375E-16 -3.6291508523 9.267589E-16 -3.6293047512 8.775457E-16 -3.6294586501 8.258192E-16 -3.629612549 8.235899E-16 -3.6297664479 8.303719E-16 -3.6299203468 8.066989E-16 -3.6300742457 7.900995E-16 -3.6302281446 8.268725E-16 -3.6303820435 9.530895E-16 -3.6305359424 1.127260E-15 -3.6306898413 1.293961E-15 -3.6308437402 1.410113E-15 -3.6309976391 1.473664E-15 -3.631151538 1.496510E-15 -3.6313054369 1.473093E-15 -3.6314593358 1.403737E-15 -3.6316132347 1.331254E-15 -3.6317671336 1.334601E-15 -3.6319210325 1.462267E-15 -3.6320749314 1.674184E-15 -3.6322288303 1.798842E-15 -3.6323827292 1.803522E-15 -3.6325366281 1.745736E-15 -3.632690527 1.724267E-15 -3.6328444259 1.761625E-15 -3.6329983248 1.828467E-15 -3.6331522237 1.875404E-15 -3.6333061226 1.893311E-15 -3.6334600215 1.903703E-15 -3.6336139204 1.932255E-15 -3.6337678193 1.960681E-15 -3.6339217182 1.944965E-15 -3.6340756171 1.835342E-15 -3.634229516 1.667855E-15 -3.6343834149 1.549616E-15 -3.6345373138 1.545453E-15 -3.6346912127 1.633395E-15 -3.6348451116 1.645994E-15 -3.6349990105 1.617964E-15 -3.6351529094 1.631438E-15 -3.6353068083 1.719180E-15 -3.6354607072 1.805848E-15 -3.6356146061 1.763493E-15 -3.635768505 1.605414E-15 -3.6359224039 1.437198E-15 -3.6360763028 1.355688E-15 -3.6362302017 1.362993E-15 -3.6363841006 1.383444E-15 -3.6365379995 1.316103E-15 -3.6366918984 1.318801E-15 -3.6368457973 1.343344E-15 -3.6369996962 1.260899E-15 -3.6371535951 1.133418E-15 -3.637307494 1.052308E-15 -3.6374613929 1.191439E-15 -3.6376152918 1.005805E-15 -3.6377691907 9.667329E-16 -3.6379230896 9.611512E-16 -3.6380769885 9.386914E-16 -3.6382308874 8.940378E-16 -3.6383847863 8.213426E-16 -3.6385386852 7.765560E-16 -3.6386925841 7.765560E-16 -3.638846483 7.878523E-16 -3.6390003819 7.934340E-16 -3.6391542808 8.157609E-16 -3.6393081797 8.436694E-16 -3.6394620786 8.772926E-16 -3.6396159775 9.052010E-16 -3.6397698764 9.498549E-16 -3.6399237753 1.022550E-15 -3.6400776742 1.050591E-15 -3.6402315731 1.061755E-15 -3.640385472 1.117572E-15 -3.6405393709 1.162359E-15 -3.6406932698 1.162359E-15 -3.6408471687 1.190668E-15 -3.6410010676 1.172821E-15 -3.6411549665 1.168986E-15 -3.6413088654 1.222661E-15 -3.6414627643 1.332101E-15 -3.6416166632 1.516820E-15 -3.6417705621 1.740994E-15 -3.641924461 1.900366E-15 -3.6420783599 1.900187E-15 -3.6422322588 1.737812E-15 -3.6423861577 1.542069E-15 -3.6425400566 1.372483E-15 -3.6426939555 1.261725E-15 -3.6428478544 1.226925E-15 -3.6430017533 1.253048E-15 -3.6431556522 1.298173E-15 -3.6433095511 1.302549E-15 -3.64346345 1.258980E-15 -3.6436173489 1.192123E-15 -3.6437712478 1.146640E-15 -3.6439251467 1.150606E-15 -3.6440790456 1.210033E-15 -3.6442329445 1.305405E-15 -3.6443868434 1.459200E-15 -3.6445407423 1.683023E-15 -3.6446946412 1.916331E-15 -3.6448485401 2.114615E-15 -3.645002439 2.229350E-15 -3.6451563379 2.173778E-15 -3.6453102368 1.941467E-15 -3.6454641357 1.599711E-15 -3.6456180346 1.274645E-15 -3.6457719335 1.040890E-15 -3.6459258324 9.172782E-16 -3.6460797313 8.637054E-16 -3.6462336302 8.373042E-16 -3.6463875291 8.064316E-16 -3.646541428 7.741048E-16 -3.6466953269 7.459063E-16 -3.6468492258 7.240496E-16 -3.6470031247 7.119986E-16 -3.6471570236 7.077108E-16 -3.6473109225 7.325797E-16 -3.6474648214 8.979799E-16 -3.6476187203 1.121500E-15 -3.6477726192 1.263200E-15 -3.6479265181 1.317474E-15 -3.648080417 1.331293E-15 -3.6482343159 1.365946E-15 -3.6483882148 1.435056E-15 -3.6485421137 1.490284E-15 -3.6486960126 1.474941E-15 -3.6488499115 1.391955E-15 -3.6490038104 1.315375E-15 -3.6491577093 1.307846E-15 -3.6493116082 1.311638E-15 -3.6494655071 1.331492E-15 -3.649619406 1.384866E-15 -3.6497733049 1.451499E-15 -3.6499272038 1.484607E-15 -3.6500811027 1.469571E-15 -3.6502350016 1.475550E-15 -3.6503889005 1.509064E-15 -3.6505427994 1.543035E-15 -3.6506966983 1.533456E-15 -3.6508505972 1.461613E-15 -3.6510044961 1.339625E-15 -3.651158395 1.211140E-15 -3.6513122939 1.153339E-15 -3.6514661928 1.199110E-15 -3.6516200917 1.295711E-15 -3.6517739906 1.449250E-15 -3.6519278895 1.667206E-15 -3.6520817884 1.943443E-15 -3.6522356873 2.139504E-15 -3.6523895862 2.163456E-15 -3.6525434851 2.039066E-15 -3.652697384 1.850161E-15 -3.6528512829 1.669286E-15 -3.6530051818 1.532097E-15 -3.6531590807 1.483614E-15 -3.6533129796 1.531129E-15 -3.6534668785 1.647671E-15 -3.6536207774 1.799809E-15 -3.6537746763 1.990554E-15 -3.6539285752 2.238797E-15 -3.6540824741 2.397911E-15 -3.654236373 2.462304E-15 -3.6543902719 2.526197E-15 -3.6545441708 2.645836E-15 -3.6546980697 2.797021E-15 -3.6548519686 2.893362E-15 -3.6550058675 2.934406E-15 -3.6551597664 2.892130E-15 -3.6553136653 2.745852E-15 -3.6554675642 2.520871E-15 -3.6556214631 2.257902E-15 -3.655775362 2.007918E-15 -3.6559292609 1.825795E-15 -3.6560831598 1.706872E-15 -3.6562370587 1.638547E-15 -3.6563909576 1.631780E-15 -3.6565448565 1.668298E-15 -3.6566987554 1.726133E-15 -3.6568526543 1.789199E-15 -3.6570065532 1.887279E-15 -3.6571604521 2.007508E-15 -3.657314351 2.092672E-15 -3.6574682499 2.160256E-15 -3.6576221488 2.259443E-15 -3.6577760477 2.432976E-15 -3.6579299466 2.603287E-15 -3.6580838455 2.672234E-15 -3.6582377444 2.597946E-15 -3.6583916433 2.540478E-15 -3.6585455422 2.526904E-15 -3.6586994411 2.496873E-15 -3.65885334 2.372908E-15 -3.6590072389 2.183581E-15 -3.6591611378 1.988545E-15 -3.6593150367 1.815585E-15 -3.6594689356 1.720324E-15 -3.6596228345 1.717629E-15 -3.6597767334 1.763934E-15 -3.6599306323 1.819202E-15 -3.6600845312 1.894816E-15 -3.6602384301 2.042027E-15 -3.660392329 2.201090E-15 -3.6605462279 2.351381E-15 -3.6607001268 2.510457E-15 -3.6608540257 2.710042E-15 -3.6610079246 2.901308E-15 -3.6611618235 2.986897E-15 -3.6613157224 2.870416E-15 -3.6614696213 2.615321E-15 -3.6616235202 2.344626E-15 -3.6617774191 2.153598E-15 -3.661931318 1.987962E-15 -3.6620852169 1.814847E-15 -3.6622391158 1.679773E-15 -3.6623930147 1.561120E-15 -3.6625469136 1.442822E-15 -3.6627008125 1.327901E-15 -3.6628547114 1.278476E-15 -3.6630086103 1.265735E-15 -3.6631625092 1.218258E-15 -3.6633164081 1.117800E-15 -3.663470307 1.043546E-15 -3.6636242059 1.068674E-15 -3.6637781048 1.169674E-15 -3.6639320037 1.300307E-15 -3.6640859026 1.455036E-15 -3.6642398015 1.682393E-15 -3.6643937004 1.881382E-15 -3.6645475993 1.991521E-15 -3.6647014982 2.026437E-15 -3.6648553971 2.086829E-15 -3.665009296 2.204734E-15 -3.6651631949 2.362180E-15 -3.6653170938 2.550395E-15 -3.6654709927 2.681453E-15 -3.6656248916 2.676590E-15 -3.6657787905 2.528020E-15 -3.6659326894 2.295815E-15 -3.6660865883 2.028941E-15 -3.6662404872 1.746187E-15 -3.6663943861 1.546859E-15 -3.666548285 1.406901E-15 -3.6667021839 1.249521E-15 -3.6668560828 1.131389E-15 -3.6670099817 1.084352E-15 -3.6671638806 1.091038E-15 -3.6673177795 1.070443E-15 -3.6674716784 1.097950E-15 -3.6676255773 1.232188E-15 -3.6677794762 1.448073E-15 -3.6679333751 1.595500E-15 -3.668087274 1.622911E-15 -3.6682411729 1.583174E-15 -3.6683950718 1.558975E-15 -3.6685489707 1.586937E-15 -3.6687028696 1.653623E-15 -3.6688567685 1.708701E-15 -3.6690106674 1.688891E-15 -3.6691645663 1.571426E-15 -3.6693184652 1.392536E-15 -3.6694723641 1.180663E-15 -3.669626263 9.998044E-16 -3.6697801619 8.908845E-16 -3.6699340608 7.565884E-16 -3.6700879597 6.078082E-16 -3.6702418586 4.940746E-16 -3.6703957575 4.709647E-16 -3.6705496564 4.788977E-16 -3.6707035553 4.551890E-16 -3.6708574542 3.923201E-16 -3.6710113531 3.381726E-16 -3.671165252 2.955150E-16 -3.6713191509 2.567754E-16 -3.6714730498 2.782740E-16 -3.6716269487 3.823747E-16 -3.6717808476 5.133306E-16 -3.6719347465 5.662674E-16 -3.6720886454 5.294958E-16 -3.6722425443 4.626090E-16 -3.6723964432 4.422011E-16 -3.6725503421 4.223676E-16 -3.672704241 4.032299E-16 -3.6728581399 4.007694E-16 -3.6730120388 4.227237E-16 -3.6731659377 3.978738E-16 -3.6733198366 3.276306E-16 -3.6734737355 2.946406E-16 -3.6736276344 3.505365E-16 -3.6737815333 4.383454E-16 -3.6739354322 4.736074E-16 -3.6740893311 4.812030E-16 -3.67424323 5.215830E-16 -3.6743971289 6.310988E-16 -3.6745510278 8.032010E-16 -3.6747049267 9.333841E-16 -3.6748588256 9.686989E-16 -3.6750127245 9.417975E-16 -3.6751666234 8.742219E-16 -3.6753205223 7.585726E-16 -3.6754744212 6.063224E-16 -3.6756283201 4.411259E-16 -3.675782219 2.885547E-16 -3.6759361179 1.813694E-16 -3.6760900168 1.404696E-16 -3.6762439157 1.030165E-16 -3.6763978146 7.430761E-17 -3.6765517135 7.340888E-17 -3.6767056124 7.203155E-17 -3.6768595113 2.164958E-17 -3.6770134102 -2.480165E-18 -3.6771673091 9.001133E-17 -3.677321208 2.183785E-16 -3.6774751069 2.599711E-16 -3.6776290058 2.360815E-16 -3.6777829047 3.268512E-16 -3.6779368036 3.963577E-16 -3.6780907025 3.704167E-16 -3.6782446014 2.707253E-16 -3.6783985003 1.893876E-16 -3.6785523992 1.553490E-16 -3.6787062981 1.779330E-16 -3.678860197 2.391096E-16 -3.6790140959 3.134085E-16 -3.6791679948 3.613691E-16 -3.6793218937 3.775054E-16 -3.6794757926 3.707562E-16 -3.6796296915 3.263994E-16 -3.6797835904 2.703991E-16 -3.6799374893 2.244536E-16 -3.6800913882 2.038775E-16 -3.6802452871 2.106482E-16 -3.680399186 2.437063E-16 -3.6805530849 2.722720E-16 -3.6807069838 2.967110E-16 -3.6808608827 3.455525E-16 -3.6810147816 4.247217E-16 -3.6811686805 4.728697E-16 -3.6813225794 4.691320E-16 -3.6814764783 4.474220E-16 -3.6816303772 4.479915E-16 -3.6817842761 4.571791E-16 -3.681938175 4.966066E-16 -3.6820920739 4.132132E-16 -3.6822459728 4.132132E-16 -3.6823998717 4.132132E-16 -3.6825537706 3.964680E-16 -3.6827076695 3.964680E-16 -3.6828615684 4.132132E-16 -3.6830154673 4.132132E-16 -3.6831693662 4.132132E-16 -3.6833232651 4.243765E-16 -3.683477164 4.243765E-16 -3.6836310629 4.243765E-16 -3.6837849618 4.132132E-16 -3.6839388607 4.132132E-16 -3.6840927596 3.964680E-16 -3.6842466585 3.853045E-16 -3.6844005574 3.853045E-16 -3.6845544563 3.853045E-16 -3.6847083552 3.685594E-16 -3.6848622541 3.685594E-16 -3.685016153 3.685594E-16 -3.6851700519 3.685594E-16 -3.6853239508 3.573961E-16 -3.6854778497 3.573961E-16 -3.6856317486 3.685594E-16 -3.6857856475 3.573961E-16 -3.6859395464 3.685594E-16 -3.6860934453 3.573961E-16 -3.6862473442 3.685594E-16 -3.6864012431 3.685594E-16 -3.686555142 3.685594E-16 -3.6867090409 3.853045E-16 -3.6868629398 3.908862E-16 -3.6870168387 4.803265E-16 -3.6871707376 4.579997E-16 -3.6873246365 4.970717E-16 -3.6874785354 5.251132E-16 -3.6876324343 5.641851E-16 -3.6877863332 5.641851E-16 -3.6879402321 6.032571E-16 -3.688094131 5.920938E-16 -3.6882480299 6.257170E-16 -3.6884019288 6.815340E-16 -3.6885558277 6.424621E-16 -3.6887097266 7.151572E-16 -3.6888636255 7.039938E-16 -3.6890175244 8.269243E-16 -3.6891714233 8.045975E-16 -3.6893253222 7.990157E-16 -3.6894792211 8.325060E-16 -3.68963312 8.269243E-16 -3.6897870189 8.828743E-16 -3.6899409178 8.548329E-16 -3.6900948167 8.715779E-16 -3.6902487156 8.772926E-16 -3.6904026145 9.038517E-16 -3.6905565134 8.828743E-16 -3.6907104123 1.041468E-15 -3.6908643112 1.089367E-15 -3.6910182101 1.137013E-15 -3.691172109 1.218919E-15 -3.6913260079 1.343183E-15 -3.6914799068 1.474572E-15 -3.6916338057 1.636165E-15 -3.6917877046 1.882448E-15 -3.6919416035 2.231662E-15 -3.6920955024 2.602546E-15 -3.6922494013 2.829090E-15 -3.6924033002 2.784728E-15 -3.6925571991 2.548541E-15 -3.692711098 2.263103E-15 -3.6928649969 2.057892E-15 -3.6930188958 1.810923E-15 -3.6931727947 1.334392E-15 -3.6933266936 1.226254E-15 -3.6934805925 1.134204E-15 -3.6936344914 1.082134E-15 -3.6937883903 9.940816E-16 -3.6939422892 9.059339E-16 -3.6940961881 8.619553E-16 -3.694250087 8.459632E-16 -3.6944039859 8.258776E-16 -3.6945578848 8.138835E-16 -3.6947117837 8.058873E-16 -3.6948656826 7.898951E-16 -3.6950195815 7.898951E-16 -3.6951734804 7.538175E-16 -3.6953273793 7.658115E-16 -3.6954812782 7.338272E-16 -3.6956351771 7.057455E-16 -3.695789076 7.218330E-16 -3.6959429749 6.897533E-16 -3.6960968738 6.777592E-16 -3.6962507727 6.617669E-16 -3.6964046716 6.817572E-16 -3.6965585705 6.937514E-16 -3.6967124694 7.097436E-16 -3.6968663683 7.218330E-16 -3.6970202672 7.658115E-16 -3.6971741661 8.058873E-16 -3.697328065 8.258776E-16 -3.6974819639 8.779475E-16 -3.6976358628 9.059339E-16 -3.6977897617 9.340156E-16 -3.6979436606 9.980797E-16 -3.6980975595 1.033237E-15 -3.6982514584 1.056873E-15 -3.6984053573 1.094803E-15 -3.6985592562 1.161096E-15 -3.6987131551 1.307750E-15 -3.698867054 1.369316E-15 -3.6990209529 1.383497E-15 -3.6991748518 1.516083E-15 -3.6993287507 1.572921E-15 -3.6994826496 1.771800E-15 -3.6996365485 1.951657E-15 -3.6997904474 2.022677E-15 -3.6999443463 2.074788E-15 -3.7000982452 2.236345E-15 -3.7002521441 2.392922E-15 -3.700406043 2.520635E-15 -3.7005599419 2.518265E-15 -3.7007138408 2.352914E-15 -3.7008677397 2.066589E-15 -3.7010216386 1.755172E-15 -3.7011755375 1.554318E-15 -3.7013294364 1.461751E-15 -3.7014833353 1.415726E-15 -3.7016372342 1.362456E-15 -3.7017911331 1.251964E-15 -3.701945032 1.123191E-15 -3.7020989309 1.013232E-15 -3.7022528298 9.175014E-16 -3.7024067287 8.659908E-16 -3.7025606276 8.427863E-16 -3.7027145265 8.093473E-16 -3.7028684254 7.477189E-16 -3.7030223243 6.848218E-16 -3.7031762232 6.539226E-16 -3.7033301221 6.497954E-16 -3.703484021 6.366328E-16 -3.7036379199 6.198236E-16 -3.7037918188 5.352664E-16 -3.7039457177 4.395074E-16 -3.7040996166 4.261853E-16 -3.7042535155 4.549492E-16 -3.7044074144 4.322926E-16 -3.7045613133 3.891986E-16 -3.7047152122 4.167168E-16 -3.7048691111 5.210579E-16 -3.70502301 5.777622E-16 -3.7051769089 5.377330E-16 -3.7053308078 4.590704E-16 -3.7054847067 4.439889E-16 -3.7056386056 4.363584E-16 -3.7057925045 4.056768E-16 -3.7059464034 3.798444E-16 -3.7061003023 4.063087E-16 -3.7062542012 4.294018E-16 -3.7064081001 4.342773E-16 -3.706561999 3.962489E-16 -3.7067158979 3.206995E-16 -3.7068697968 3.373661E-16 -3.7070236957 4.044948E-16 -3.7071775946 4.708496E-16 -3.7073314935 5.280612E-16 -3.7074853924 5.975226E-16 -3.7076392913 6.199177E-16 -3.7077931902 5.983704E-16 -3.7079470891 5.842398E-16 -3.708100988 6.198495E-16 -3.7082548869 6.710967E-16 -3.7084087858 6.898347E-16 -3.7085626847 6.658379E-16 -3.7087165836 6.255259E-16 -3.7088704825 5.685972E-16 -3.7090243814 5.351860E-16 -3.7091782803 5.988990E-16 -3.7093321792 7.653033E-16 -3.7094860781 8.823149E-16 -3.709639977 8.930917E-16 -3.7097938759 8.907361E-16 -3.7099477748 9.554372E-16 -3.7101016737 1.027571E-15 -3.7102555726 1.054401E-15 -3.7104094715 1.027427E-15 -3.7105633704 9.841275E-16 -3.7107172693 9.622833E-16 -3.7108711682 9.334008E-16 -3.7110250671 8.838887E-16 -3.711178966 8.733902E-16 -3.7113328649 8.548329E-16 -3.7114867638 8.380878E-16 -3.7116406627 8.492512E-16 -3.7117945616 8.269243E-16 -3.7119484605 8.492512E-16 -3.7121023594 9.052010E-16 -3.7122562583 9.667329E-16 -3.7124101572 1.061755E-15 -3.7125640561 1.145614E-15 -3.712717955 1.453006E-15 -3.7128718539 1.542447E-15 -3.7130257528 1.754818E-15 -3.7131796517 2.051180E-15 -3.7133335506 2.182451E-15 -3.7134874495 2.178508E-15 -3.7136413484 2.052099E-15 -3.7137952473 1.793444E-15 -3.7139491462 1.495411E-15 -3.7141030451 1.291807E-15 -3.714256944 1.244296E-15 -3.7144108429 1.282926E-15 -3.7145647418 1.325155E-15 -3.7147186407 1.354191E-15 -3.7148725396 1.408832E-15 -3.7150264385 1.448687E-15 -3.7151803374 1.433957E-15 -3.7153342363 1.452422E-15 -3.7154881352 1.611591E-15 -3.7156420341 1.837172E-15 -3.715795933 1.952612E-15 -3.7159498319 1.850279E-15 -3.7161037308 1.563135E-15 -3.7162576297 1.236286E-15 -3.7164115286 1.008259E-15 -3.7165654275 9.257529E-16 -3.7167193264 9.076247E-16 -3.7168732253 8.509222E-16 -3.7170271242 7.570045E-16 -3.7171810231 7.144559E-16 -3.717334922 7.578684E-16 -3.7174888209 8.625537E-16 -3.7176427198 9.740986E-16 -3.7177966187 1.047379E-15 -3.7179505176 1.106810E-15 -3.7181044165 1.191678E-15 -3.7182583154 1.322923E-15 -3.7184122143 1.494935E-15 -3.7185661132 1.699094E-15 -3.7187200121 1.888881E-15 -3.718873911 1.975669E-15 -3.7190278099 1.897578E-15 -3.7191817088 1.694458E-15 -3.7193356077 1.508961E-15 -3.7194895066 1.344559E-15 -3.7196434055 1.166525E-15 -3.7197973044 1.003472E-15 -3.7199512033 9.546156E-16 -3.7201051022 9.331098E-16 -3.7202590011 9.275280E-16 -3.7204129 9.331098E-16 -3.7205667989 9.667329E-16 -3.7207206978 1.022550E-15 -3.7208745967 1.084082E-15 -3.7210284956 1.134317E-15 -3.7211823945 1.257381E-15 -3.7213362934 1.357984E-15 -3.7214901923 1.670959E-15 -3.7216440912 1.872299E-15 -3.7217979901 2.121751E-15 -3.721951889 2.309131E-15 -3.7221057879 2.440074E-15 -3.7222596868 2.421912E-15 -3.7224135857 2.284460E-15 -3.7225674846 2.115485E-15 -3.7227213835 1.975221E-15 -3.7228752824 1.853115E-15 -3.7230291813 1.701508E-15 -3.7231830802 1.518255E-15 -3.7233369791 1.331056E-15 -3.723490878 1.169232E-15 -3.7236447769 1.051531E-15 -3.7237986758 1.007184E-15 -3.7239525747 9.976986E-16 -3.7241064736 9.724388E-16 -3.7242603725 9.400339E-16 -3.7244142714 9.830704E-16 -3.7245681703 1.065496E-15 -3.7247220692 1.183793E-15 -3.7248759681 1.342387E-15 -3.725029867 1.531723E-15 -3.7251837659 1.762846E-15 -3.7253376648 2.058868E-15 -3.7254915637 2.348088E-15 -3.7256454626 2.473618E-15 -3.7257993615 2.322518E-15 -3.7259532604 1.993182E-15 -3.7261071593 1.700877E-15 -3.7262610582 1.532732E-15 -3.7264149571 1.455705E-15 -3.726568856 1.407348E-15 -3.7267227549 1.346074E-15 -3.7268766538 1.359342E-15 -3.7270305527 1.430933E-15 -3.7271844516 1.434511E-15 -3.7273383505 1.279940E-15 -3.7274922494 1.074106E-15 -3.7276461483 9.354684E-16 -3.7278000472 8.692283E-16 -3.7279539461 8.077311E-16 -3.728107845 7.211445E-16 -3.7282617439 6.826600E-16 -3.7284156428 7.012608E-16 -3.7285695417 7.410485E-16 -3.7287234406 7.775010E-16 -3.7288773395 8.414570E-16 -3.7290312384 1.001236E-15 -3.7291851373 1.231211E-15 -3.7293390362 1.428151E-15 -3.7294929351 1.485930E-15 -3.729646834 1.376835E-15 -3.7298007329 1.177315E-15 -3.7299546318 1.008454E-15 -3.7301085307 8.759453E-16 -3.7302624296 7.935916E-16 -3.7304163285 7.832519E-16 -3.7305702274 7.950121E-16 -3.7307241263 7.395535E-16 -3.7308780252 6.555600E-16 -3.7310319241 5.835126E-16 -3.731185823 5.005081E-16 -3.7313397219 3.781910E-16 -3.7314936208 3.198368E-16 -3.7316475197 3.698969E-16 -3.7318014186 4.213029E-16 -3.7319553175 4.160949E-16 -3.7321092164 4.299464E-16 -3.7322631153 4.783742E-16 -3.7324170142 4.879932E-16 -3.7325709131 4.606386E-16 -3.732724812 4.561519E-16 -3.7328787109 5.074889E-16 -3.7330326098 5.780747E-16 -3.7331865087 6.888624E-16 -3.7333404076 7.961492E-16 -3.7334943065 8.355337E-16 -3.7336482054 8.148661E-16 -3.7338021043 8.247468E-16 -3.7339560032 8.878838E-16 -3.7341099021 9.869468E-16 -3.734263801 1.091888E-15 -3.7344176999 1.167211E-15 -3.7345715988 1.180744E-15 -3.7347254977 1.125346E-15 -3.7348793966 1.072622E-15 -3.7350332955 1.005928E-15 -3.7351871944 8.882014E-16 -3.7353410933 7.384921E-16 -3.7354949922 6.174867E-16 -3.7356488911 5.088818E-16 -3.73580279 4.122172E-16 -3.7359566889 3.668056E-16 -3.7361105878 3.528905E-16 -3.7362644867 2.930337E-16 -3.7364183856 2.068248E-16 -3.7365722845 1.399236E-16 -3.7367261834 1.492418E-16 -3.7368800823 2.133825E-16 -3.7370339812 2.239615E-16 -3.7371878801 1.096240E-16 -3.737341779 3.247111E-17 -3.7374956779 6.128125E-17 -3.7376495768 1.190176E-16 -3.7378034757 1.590517E-16 -3.7379573746 2.159245E-16 -3.7381112735 2.585955E-16 -3.7382651724 2.701829E-16 -3.7384190713 3.087025E-16 -3.7385729702 3.848271E-16 -3.7387268691 4.321309E-16 -3.738880768 4.002092E-16 -3.7390346669 3.594479E-16 -3.7391885658 3.345502E-16 -3.7393424647 3.055689E-16 -3.7394963636 2.724487E-16 -3.7396502625 2.693168E-16 -3.7398041614 3.150248E-16 -3.7399580603 3.785294E-16 -3.7401119592 4.308138E-16 -3.7402658581 4.956118E-16 -3.740419757 5.548770E-16 -3.7405736559 5.639559E-16 -3.7407275548 5.697496E-16 -3.7408814537 5.903368E-16 -3.7410353526 5.843368E-16 -3.7411892515 5.385585E-16 -3.7413431504 4.658623E-16 -3.7414970493 3.930628E-16 -3.7416509482 3.813187E-16 -3.7418048471 4.125335E-16 -3.741958746 4.903170E-16 -3.7421126449 6.161175E-16 -3.7422665438 7.795614E-16 -3.7424204427 9.507222E-16 -3.7425743416 1.068710E-15 -3.7427282405 1.143875E-15 -3.7428821394 1.209174E-15 -3.7430360383 1.258858E-15 -3.7431899372 1.243342E-15 -3.7433438361 1.108368E-15 -3.743497735 8.400323E-16 -3.7436516339 2.346828E-16 -3.7438055328 2.583434E-16 -3.7439594317 4.255206E-16 -3.7441133306 5.001780E-16 -3.7442672295 4.348040E-16 -3.7444211284 2.511525E-16 -3.7445750273 4.705268E-17 -3.7447289262 -9.560884E-17 -3.7448828251 -1.322299E-16 -3.745036724 -1.058939E-16 -3.7451906229 -8.717324E-17 -3.7453445218 -6.963881E-18 -3.7454984207 8.847386E-17 -3.7456523196 9.925278E-17 -3.7458062185 4.191034E-17 -3.7459601174 2.496418E-17 -3.7461140163 1.037704E-16 -3.7462679152 2.150024E-16 -3.7464218141 2.296577E-16 -3.746575713 1.514245E-16 -3.7467296119 1.010642E-16 -3.7468835108 1.144795E-16 -3.7470374097 1.298972E-16 -3.7471913086 1.748200E-16 -3.7473452075 2.467492E-16 -3.7474991064 1.571958E-16 -3.7476530053 4.922532E-17 -3.7478069042 7.373337E-17 -3.7479608031 8.758321E-17 -3.748114702 -8.362714E-17 -3.7482686009 -2.151201E-16 -3.7484224998 -2.252307E-16 -3.7485763987 -1.653345E-16 -3.7487302976 -1.267123E-16 -3.7488841965 -1.379825E-16 -3.7490380954 -1.570793E-16 -3.7491919943 -1.541270E-16 -3.7493458932 -1.067317E-16 -3.7494997921 -3.051775E-17 -3.749653691 -3.324393E-17 -3.7498075899 -1.192402E-16 -3.7499614888 -1.487081E-16 -3.7501153877 -8.492818E-17 -3.7502692866 -5.182402E-17 -3.7504231855 -7.126088E-17 -3.7505770844 -6.960324E-17 -3.7507309833 -3.640675E-17 -3.7508848822 -2.134481E-17 -3.7510387811 -1.050406E-17 -3.75119268 5.650641E-17 -3.7513465789 1.071412E-16 -3.7515004778 8.264966E-17 -3.7516543767 6.591441E-17 -3.7518082756 8.774457E-17 -3.7519621745 7.656627E-17 -3.7521160734 6.508135E-17 -3.7522699723 1.099195E-16 -3.7524238712 2.168442E-16 -3.7525777701 3.425926E-16 -3.752731669 4.062785E-16 -3.7528855679 3.616547E-16 -3.7530394668 2.714855E-16 -3.7531933657 2.571427E-16 -3.7533472646 2.235862E-16 -3.7535011635 2.276100E-16 -3.7536550624 3.136902E-16 -3.7538089613 3.527469E-16 -3.7539628602 2.744243E-16 -3.7541167591 2.326643E-16 -3.754270658 2.299830E-16 -3.7544245569 2.015714E-16 -3.7545784558 2.348208E-16 -3.7547323547 2.544737E-16 -3.7548862536 1.860749E-16 -3.7550401525 1.053290E-16 -3.7551940514 8.349077E-17 -3.7553479503 8.343020E-17 -3.7555018492 7.976890E-17 -3.7556557481 3.703948E-17 -3.755809647 6.394252E-18 -3.7559635459 1.770002E-17 -3.7561174448 2.313755E-17 -3.7562713437 3.235666E-19 -3.7564252426 -1.067770E-17 -3.7565791415 -3.562621E-17 -3.7567330404 -2.271531E-17 -3.7568869393 -1.986208E-17 -3.7570408382 -4.935788E-17 -3.7571947371 -5.349437E-17 -3.757348636 -2.429672E-17 -3.7575025349 2.157139E-17 -3.7576564338 4.820422E-17 -3.7578103327 8.114576E-19 -3.7579642316 -3.849426E-17 -3.7581181305 -2.608861E-17 -3.7582720294 2.663919E-19 -3.7584259283 2.931369E-17 -3.7585798272 1.577938E-17 -3.7587337261 4.328000E-17 -3.758887625 1.650248E-17 -3.7590415239 2.035399E-17 -3.7591954228 2.606331E-17 -3.7593493217 1.845092E-17 -3.7595032206 2.606331E-17 -3.7596571195 2.606331E-17 -3.7598110184 2.606331E-17 -3.7599649173 1.650248E-17 -3.7601188162 2.035399E-17 -3.7602727151 2.986956E-17 -3.760426614 2.986956E-17 -3.7605805129 6.074454E-17 -3.7607344118 3.557882E-17 -3.7608883107 9.667187E-18 -3.7610422096 -7.578488E-17 -3.7611961085 -3.972288E-17 -3.7613500074 2.426665E-17 -3.7615039063 -2.528690E-17 -3.7616578052 -1.354469E-16 -3.7618117041 -1.643278E-16 -3.761965603 -1.199403E-16 -3.7621195019 -6.751107E-17 -3.7622734008 -3.874583E-17 -3.7624272997 -5.313141E-17 -3.7625811986 -4.343373E-17 -3.7627350975 3.576851E-17 -3.7628889964 8.202116E-17 -3.7630428953 -1.043841E-17 -3.7631967942 -9.472751E-17 -3.7633506931 -7.546852E-17 -3.763504592 -1.550324E-17 -3.7636584909 5.196971E-18 -3.7638123898 2.598062E-17 -3.7639662887 7.997473E-17 -3.7641201876 1.420726E-17 -3.7642740865 1.420726E-17 -3.7644279854 1.948348E-17 -3.7645818843 1.948348E-17 -3.7647357832 2.739789E-17 -3.7648896821 1.948348E-17 -3.765043581 2.475978E-17 -3.7651974799 1.948348E-17 -3.7653513788 1.420726E-17 -3.7655052777 1.948348E-17 -3.7656591766 1.948348E-17 -3.7658130755 1.420726E-17 -3.7659669744 1.948348E-17 -3.7661208733 1.948348E-17 -3.7662747722 1.948348E-17 -3.7664286711 1.420726E-17 -3.76658257 1.420726E-17 -3.7667364689 8.930957E-18 -3.7668903678 1.420726E-17 -3.7670442667 8.930957E-18 -3.7671981656 1.156909E-17 -3.7673520645 1.156909E-17 -3.7675059634 1.684537E-17 -3.7676598623 1.156909E-17 -3.7678137612 1.156909E-17 -3.7679676601 1.684537E-17 -3.768121559 1.684537E-17 -3.7682754579 1.156909E-17 -3.7684293568 1.156909E-17 -3.7685832557 1.156909E-17 -3.7687371546 1.156909E-17 -3.7688910535 1.156909E-17 -3.7690449524 1.156909E-17 -3.7691988513 1.156909E-17 -3.7693527502 3.591870E-18 -3.7695066491 8.930957E-18 -3.769660548 8.930957E-18 -3.7698144469 1.420726E-17 -3.7699683458 1.420726E-17 -3.7701222447 8.930957E-18 -3.7702761436 8.930957E-18 -3.7704300425 8.930957E-18 -3.7705839414 8.930957E-18 -3.7707378403 8.930957E-18 -3.7708917392 8.930957E-18 -3.7710456381 8.930957E-18 -3.771199537 8.930957E-18 -3.7713534359 1.420726E-17 -3.7715073348 8.930957E-18 -3.7716612337 8.930957E-18 -3.7718151326 8.930957E-18 -3.7719690315 9.537591E-19 -3.7721229304 -4.074991E-17 -3.7722768293 7.916201E-17 -3.7724307282 1.142686E-16 -3.7725846271 1.209461E-16 -3.772738526 9.245111E-17 -3.7728924249 7.623000E-17 -3.7730463238 1.133233E-16 -3.7732002227 1.147238E-16 -3.7733541216 7.680175E-17 -3.7735080205 1.173937E-16 -3.7736619194 4.883230E-17 -3.7738158183 2.401762E-18 -3.7739697172 -2.809269E-17 -3.7741236161 -3.433490E-17 -3.774277515 5.016129E-18 -3.7744314139 4.176931E-17 -3.7745853128 2.389268E-17 -3.7747392117 -2.137657E-17 -3.7748931106 -3.293264E-17 -3.7750470095 3.311433E-17 -3.7752009084 2.380628E-17 -3.7753548073 -2.346747E-17 -3.7755087062 -3.669050E-17 -3.7756626051 -1.767038E-17 -3.775816504 -1.441057E-17 -3.7759704029 1.952962E-17 -3.7761243018 7.744338E-17 -3.7762782007 6.925511E-17 -3.7764320996 1.073563E-16 -3.7765859985 1.062959E-16 -3.7767398974 1.012026E-16 -3.7768937963 1.338202E-16 -3.7770476952 1.921617E-16 -3.7772015941 2.927837E-16 -3.777355493 3.838821E-16 -3.7775093919 4.527209E-16 -3.7776632908 5.056702E-16 -3.7778171897 4.728638E-16 -3.7779710886 3.846783E-16 -3.7781249875 1.709982E-16 -3.7782788864 4.994403E-17 -3.7784327853 9.008534E-17 -3.7785866842 8.394393E-17 -3.7787405831 -2.345519E-17 -3.778894482 -7.704739E-17 -3.7790483809 -4.918720E-17 -3.7792022798 -1.496199E-17 -3.7793561787 2.489006E-17 -3.7795100776 2.750994E-17 -3.7796639765 2.367203E-17 -3.7798178754 3.149819E-17 -3.7799717743 5.595796E-17 -3.7801256732 2.348126E-17 -3.7802795721 2.975216E-17 -3.780433471 3.445535E-17 -3.7805873699 2.975216E-17 -3.7807412688 3.445535E-17 -3.7808951677 2.975216E-17 -3.7810490666 2.818445E-17 -3.7812029655 2.975216E-17 -3.7813568644 3.445535E-17 -3.7815107633 3.445535E-17 -3.7816646622 3.445535E-17 -3.7818185611 3.445535E-17 -3.78197246 3.445535E-17 -3.7821263589 3.445535E-17 -3.7822802578 3.762815E-17 -3.7824341567 3.762815E-17 -3.7825880556 3.762815E-17 -3.7827419545 4.233135E-17 -3.7828958534 3.762815E-17 -3.7830497523 4.233135E-17 -3.7832036512 4.233135E-17 -3.7833575501 4.546678E-17 -3.783511449 6.938047E-18 -3.7836653479 1.917005E-17 -3.7838192468 6.166358E-17 -3.7839731457 6.905097E-17 -3.7841270446 8.916885E-17 -3.7842809435 1.483303E-16 -3.7844348424 2.118091E-16 -3.7845887413 2.229001E-16 -3.7847426402 1.052769E-16 -3.7848965391 3.712588E-17 -3.785050438 5.091727E-17 -3.7852043369 -3.743462E-18 -3.7853582358 -8.420312E-17 -3.7855121347 -6.063274E-17 -3.7856660336 3.460553E-18 -3.7858199325 3.649526E-17 -3.7859738314 4.016080E-17 -3.7861277303 3.575623E-17 -3.7862816292 7.462064E-17 -3.7864355281 1.315823E-16 -3.786589427 1.369762E-16 -3.7867433259 1.319123E-16 -3.7868972248 1.089606E-16 -3.7870511237 1.059664E-16 -3.7872050226 1.671044E-16 -3.7873589215 2.444516E-16 -3.7875128204 2.362697E-16 -3.7876667193 1.849103E-16 -3.7878206182 1.696785E-16 -3.7879745171 2.050976E-16 -3.788128416 2.961706E-16 -3.7882823149 4.020666E-16 -3.7884362138 4.989913E-16 -3.7885901127 6.769072E-16 -3.7887440116 8.071593E-16 -3.7888979105 8.152574E-16 -3.7890518094 7.498808E-16 -3.7892057083 6.974774E-16 -3.7893596072 5.559238E-16 -3.7895135061 3.824815E-16 -3.789667405 2.794040E-16 -3.7898213039 2.420740E-16 -3.7899752028 2.281119E-16 -3.7901291017 1.908162E-16 -3.7902830006 1.218059E-16 -3.7904368995 1.052582E-16 -3.7905907984 1.852999E-16 -3.7907446973 2.258037E-16 -3.7908985962 1.983412E-16 -3.7910524951 1.909848E-16 -3.791206394 2.091782E-16 -3.7913602929 1.342268E-16 -3.7915141918 7.470322E-17 -3.7916680907 1.117198E-16 -3.7918219896 1.814175E-16 -3.7919758885 1.606555E-16 -3.7921297874 7.802275E-17 -3.7922836863 1.030670E-17 -3.7924375852 -4.780019E-17 -3.7925914841 1.616986E-18 -3.792745383 9.004680E-17 -3.7928992819 6.824544E-18 -3.7930531808 -2.236040E-17 -3.7932070797 1.073233E-16 -3.7933609786 2.028064E-16 -3.7935148775 2.197115E-16 -3.7936687764 2.753586E-16 -3.7938226753 3.444027E-16 -3.7939765742 3.158192E-16 -3.7941304731 2.610035E-16 -3.794284372 3.214435E-16 -3.7944382709 4.207568E-16 -3.7945921698 5.269345E-16 -3.7947460687 7.069367E-16 -3.7948999676 8.315344E-16 -3.7950538665 9.235298E-16 -3.7952077654 1.027076E-15 -3.7953616643 1.108226E-15 -3.7955155632 1.097391E-15 -3.7956694621 1.091253E-15 -3.795823361 1.101089E-15 -3.7959772599 1.021932E-15 -3.7961311588 9.919383E-16 -3.7962850577 8.117782E-16 -3.7964389566 5.809126E-16 -3.7965928555 4.744541E-16 -3.7967467544 4.663653E-16 -3.7969006533 4.458646E-16 -3.7970545522 3.610677E-16 -3.7972084511 2.839576E-16 -3.79736235 2.719154E-16 -3.7975162489 3.525974E-16 -3.7976701478 4.661324E-16 -3.7978240467 4.312169E-16 -3.7979779456 4.311224E-16 -3.7981318445 4.045866E-16 -3.7982857434 2.861519E-16 -3.7984396423 2.485974E-16 -3.7985935412 2.090019E-16 -3.7987474401 2.056624E-16 -3.798901339 2.039926E-16 -3.7990552379 1.922645E-16 -3.7992091368 2.140112E-16 -3.7993630357 2.173507E-16 -3.7995169346 2.407671E-16 -3.7996708335 2.691928E-16 -3.7998247324 3.176953E-16 -3.7999786313 3.461210E-16 -3.8001325302 4.999775E-16 -3.8002864291 5.518196E-16 -3.800440328 6.316599E-16 -3.8005942269 6.972747E-16 -3.8007481258 7.405213E-16 -3.8009020247 7.303615E-16 -3.8010559236 4.960165E-16 -3.8012098225 4.115611E-16 -3.8013637214 3.553785E-16 -3.8015176203 3.042028E-16 -3.8016715192 3.856282E-16 -3.8018254181 4.077132E-16 -3.801979317 3.880327E-16 -3.8021332159 3.022508E-16 -3.8022871148 2.378246E-16 -3.8024410137 2.269854E-16 -3.8025949126 2.018658E-16 -3.8027488115 1.967640E-16 -3.8029027104 2.047845E-16 -3.8030566093 2.314274E-16 -3.8032105082 1.920753E-16 -3.8033644071 1.260744E-16 -3.803518306 4.914809E-17 -3.8036722049 3.448096E-17 -3.8038261038 7.224633E-17 -3.8039800027 7.434166E-17 -3.8041339016 1.121070E-16 -3.8042878005 1.414912E-16 -3.8044416994 2.726835E-16 -3.8045955983 2.426711E-16 -3.8047494972 1.642706E-16 -3.8049033961 1.469677E-16 -3.805057295 1.232624E-16 -3.8052111939 1.149166E-16 -3.8053650928 9.938561E-17 -3.8055189917 2.849139E-17 -3.8056728906 -1.010604E-16 -3.8058267895 -7.127173E-17 -3.8059806884 -3.666637E-18 -3.8061345873 1.810243E-17 -3.8062884862 3.370580E-17 -3.8064423851 -3.601948E-18 -3.806596284 -2.662490E-17 -3.8067501829 2.178824E-17 -3.8069040818 8.758419E-17 -3.8070579807 1.409784E-16 -3.8072118796 1.992583E-16 -3.8073657785 2.060430E-16 -3.8075196774 1.674055E-16 -3.8076735763 2.025416E-16 -3.8078274752 1.959270E-16 -3.8079813741 5.091716E-17 -3.808135273 1.424803E-16 -3.8082891719 2.138298E-16 -3.8084430708 3.659911E-16 -3.8085969697 4.561172E-16 -3.8087508686 3.764904E-16 -3.8089047675 2.000730E-16 -3.8090586664 1.206360E-16 -3.8092125653 1.915173E-16 -3.8093664642 1.661600E-16 -3.8095203631 9.111663E-17 -3.809674262 7.382596E-17 -3.8098281609 4.295064E-16 -3.8099820598 7.173342E-16 -3.8101359587 5.572684E-16 -3.8102898576 2.840389E-16 -3.8104437565 1.271298E-16 -3.8105976554 1.451487E-16 -3.8107515543 9.901442E-17 -3.8109054532 2.589187E-17 -3.8110593521 -1.040571E-16 -3.811213251 -1.456842E-16 -3.8113671499 -1.503460E-16 -3.8115210488 -8.903719E-17 -3.8116749477 7.603606E-17 -3.8118288466 7.396350E-17 -3.8119827455 1.618361E-17 -3.8121366444 1.184319E-17 -3.8122905433 4.840807E-18 -3.8124444422 -6.044864E-18 -3.8125983411 -9.505907E-18 -3.81275224 -9.924434E-18 -3.8129061389 -4.309465E-18 -3.8130600378 1.025761E-17 -3.8132139367 9.737080E-18 -3.8133678356 3.934217E-18 -3.8135217345 3.668341E-18 -3.8136756334 1.830200E-18 -3.8138295323 -4.105728E-19 -3.8139834312 -1.476590E-18 -3.8141373301 -1.403812E-18 -3.814291229 -5.271589E-19 -3.8144451279 8.789423E-19 -3.8145990268 9.503974E-19 -3.8147529257 3.311634E-19 -3.8149068246 5.823352E-22 -3.8150607235 5.545154E-19 -3.8152146224 8.799084E-19 -3.8153685213 -8.635766E-19 -3.8155224202 -3.278097E-18 -3.8156763191 -4.495336E-18 -3.815830218 -4.887221E-18 -3.8159841169 -4.940028E-18 -3.8161380158 -6.151100E-18 -3.8162919147 -6.008375E-18 -3.8164458136 -6.655932E-18 -3.8165997125 -8.880876E-18 -3.8167536114 -8.587908E-18 -3.8169075103 -8.826348E-18 -3.8170614092 -7.466172E-18 -3.8172153081 -4.525909E-18 -3.817369207 -6.994057E-18 -3.8175231059 -1.589616E-17 -3.8176770048 -3.120914E-17 -3.8178309037 -4.578171E-17 -3.8179848026 -5.579342E-17 -3.8181387015 -7.151753E-17 -3.8182926004 -8.721602E-17 -3.8184464993 -9.750302E-17 -3.8186003982 -9.075111E-17 -3.8187542971 -5.776765E-17 -3.818908196 -5.242710E-18 -3.8190620949 5.159204E-17 -3.8192159938 9.645694E-17 -3.8193698927 1.353587E-16 -3.8195237916 1.794153E-16 -3.8196776905 2.192135E-16 -3.8198315894 2.416321E-16 -3.8199854883 2.318154E-16 -3.8201393872 1.997756E-16 -3.8202932861 8.151734E-17 -3.820447185 -3.506981E-19 -3.8206010839 -1.357730E-17 -3.8207549828 1.239916E-16 -3.8209088817 9.995015E-17 -3.8210627806 3.606155E-17 -3.8212166795 7.412915E-17 -3.8213705784 -2.016852E-18 -3.8215244773 -1.906248E-17 -3.8216783762 3.434220E-17 -3.8218322751 -3.574728E-17 -3.821986174 -4.512246E-17 -3.8221400729 6.258250E-17 -3.8222939718 3.331115E-17 -3.8224478707 -1.792009E-17 -3.8226017696 -3.151362E-17 -3.8227556685 -2.201241E-17 -3.8229095674 4.031441E-17 -3.8230634663 1.050453E-16 -3.8232173652 6.318449E-17 -3.8233712641 -7.692735E-17 -3.823525163 -6.607763E-17 -3.8236790619 -2.261578E-18 -3.8238329608 -7.174932E-18 -3.8239868597 5.881757E-17 -3.8241407586 1.215942E-16 -3.8242946575 2.600828E-18 -3.8244485564 -7.046357E-17 -3.8246024553 -8.603406E-19 -3.8247563542 1.114752E-17 -3.8249102531 8.394123E-18 -3.825064152 -1.063695E-18 -3.8252180509 3.577997E-17 -3.8253719498 4.245439E-17 -3.8255258487 4.107928E-17 -3.8256797476 6.105789E-17 -3.8258336465 3.273691E-17 -3.8259875454 -8.394241E-17 -3.8261414443 -1.228591E-16 -3.8262953432 -1.444213E-17 -3.8264492421 -3.213445E-17 -3.826603141 -1.081658E-16 -3.8267570399 -4.508890E-17 -3.8269109388 1.315369E-16 -3.8270648377 6.450953E-17 -3.8272187366 -7.927272E-17 -3.8273726355 -4.024481E-17 -3.8275265344 7.124495E-17 -3.8276804333 1.576783E-16 -3.8278343322 1.246094E-16 -3.8279882311 6.021736E-18 -3.82814213 -1.918362E-17 -3.8282960289 -6.426102E-17 -3.8284499278 -1.169935E-16 -3.8286038267 -6.241336E-17 -3.8287577256 2.555517E-17 -3.8289116245 1.732069E-17 -3.8290655234 -5.909988E-17 -3.8292194223 -3.518876E-17 -3.8293733212 2.643866E-17 -3.8295272201 2.592501E-17 -3.829681119 3.321470E-17 -3.8298350179 7.991261E-17 -3.8299889168 3.300617E-17 -3.8301428157 -8.802598E-17 -3.8302967146 -6.897948E-17 -3.8304506135 -5.317624E-17 -3.8306045124 -1.931244E-17 -3.8307584113 1.125062E-16 -3.8309123102 -3.419295E-17 -3.8310662091 -2.148701E-17 -3.831220108 8.423389E-17 -3.8313740069 9.389758E-17 -3.8315279058 5.793091E-17 -3.8316818047 6.439047E-17 -3.8318357036 1.675765E-17 -3.8319896025 -1.211527E-16 -3.8321435014 -1.537678E-16 -3.8322974003 -6.805312E-17 -3.8324512992 4.528461E-18 -3.8326051981 -1.231091E-17 -3.832759097 7.734398E-17 -3.8329129959 3.745989E-17 -3.8330668948 -1.571201E-17 -3.8332207937 1.542834E-17 -3.8333746926 5.406053E-17 -3.8335285915 -3.352734E-17 -3.8336824904 -2.503160E-17 -3.8338363893 4.542862E-17 -3.8339902882 -1.315623E-17 -3.8341441871 7.837791E-18 -3.834298086 -4.430362E-17 -3.8344519849 -3.391876E-17 -3.8346058838 9.103753E-17 -3.8347597827 8.219937E-17 -3.8349136816 -7.174351E-17 -3.8350675805 -5.331717E-17 -3.8352214794 7.499532E-18 -3.8353753783 1.366329E-18 -3.8355292772 2.970748E-17 -3.8356831761 4.633840E-17 -3.835837075 4.207570E-17 -3.8359909739 6.197236E-17 -3.8361448728 9.749333E-17 -3.8362987717 3.090059E-17 -3.8364526706 -1.960495E-16 -3.8366065695 -1.810492E-16 -3.8367604684 8.381030E-17 -3.8369143673 1.185893E-16 -3.8370682662 6.404204E-18 -3.8372221651 -3.672820E-17 -3.837376064 -9.795915E-17 -3.8375299629 -6.843666E-17 -3.8376838618 6.603257E-18 -3.8378377607 6.578503E-17 -3.8379916596 3.804237E-17 -3.8381455585 -8.515180E-17 -3.8382994574 -1.219067E-16 -3.8384533563 -1.906481E-17 -3.8386072552 1.547201E-16 -3.8387611541 8.083934E-17 -3.838915053 -1.572470E-16 -3.8390689519 -1.437267E-16 -3.8392228508 2.689584E-17 -3.8393767497 8.861066E-17 -3.8395306486 4.720536E-17 -3.8396845475 -9.133599E-17 -3.8398384464 -1.120506E-16 -3.8399923453 6.846991E-17 -3.8401462442 -2.776849E-17 -3.8403001431 -2.572858E-16 -3.840454042 -2.343655E-16 -3.8406079409 -2.490309E-16 -3.8407618398 -1.657684E-16 -3.8409157387 -4.976869E-17 -3.8410696376 -1.823831E-17 -3.8412235365 -7.124500E-17 -3.8413774354 6.733912E-20 -3.8415313343 -4.491795E-17 -3.8416852332 -2.448095E-17 -3.8418391321 -1.530229E-17 -3.841993031 -8.637534E-17 -3.8421469299 -1.705677E-16 -3.8423008288 -6.641352E-17 -3.8424547277 1.593523E-17 -3.8426086266 -6.768556E-17 -3.8427625255 -2.054368E-16 -3.8429164244 -1.541208E-16 -3.8430703233 -1.095510E-17 -3.8432242222 3.575178E-17 -3.8433781211 -1.608600E-17 -3.84353202 -3.771520E-17 -3.8436859189 1.007859E-16 -3.8438398178 1.826025E-16 -3.8439937167 -2.831928E-17 -3.8441476156 -9.245682E-17 -3.8443015145 -9.602940E-17 -3.8444554134 2.606214E-17 -3.8446093123 8.609836E-17 -3.8447632112 1.141282E-16 -3.8449171101 6.974914E-17 -3.845071009 1.478911E-16 -3.8452249079 2.661259E-16 -3.8453788068 2.409104E-16 -3.8455327057 1.553497E-16 -3.8456866046 1.193340E-16 -3.8458405035 -4.954169E-17 -3.8459944024 -6.686478E-18 -3.8461483013 2.136776E-16 -3.8463022002 3.860162E-17 -3.8464560991 -1.080225E-16 -3.846609998 -1.402242E-17 -3.8467638969 -4.072534E-18 -3.8469177958 -8.157160E-17 -3.8470716947 -9.928645E-17 -3.8472255936 -3.230160E-17 -3.8473794925 7.345554E-17 -3.8475333914 4.116114E-17 -3.8476872903 8.164508E-17 -3.8478411892 1.420267E-16 -3.8479950881 9.358126E-17 -3.848148987 1.826633E-16 -3.8483028859 2.712941E-16 -3.8484567848 2.293469E-16 -3.8486106837 3.305184E-16 -3.8487645826 4.150788E-16 -3.8489184815 3.783264E-16 -3.8490723804 2.594377E-16 -3.8492262793 2.896920E-16 -3.8493801782 1.797611E-16 -3.8495340771 7.714691E-17 -3.849687976 1.022295E-16 -3.8498418749 -2.333195E-17 -3.8499957738 1.179493E-19 -3.8501496727 7.673123E-17 -3.8503035716 8.688673E-17 -3.8504574705 1.207331E-16 -3.8506113694 1.568392E-16 -3.8507652683 6.314631E-17 -3.8509191672 -1.016128E-16 -3.8510730661 -5.712814E-18 -3.851226965 2.688059E-18 -3.8513808639 -8.044102E-17 -3.8515347628 -2.321254E-16 -3.8516886617 -2.705444E-17 -3.8518425606 -3.171990E-17 -3.8519964595 -1.020666E-16 -3.8521503584 -3.626021E-17 -3.8523042573 8.915848E-17 -3.8524581562 1.064814E-16 -3.8526120551 9.133408E-17 -3.852765954 -5.002852E-17 -3.8529198529 -9.822025E-17 -3.8530737518 -2.499171E-18 -3.8532276507 4.711451E-17 -3.8533815496 9.956999E-17 -3.8535354485 1.338714E-16 -3.8536893474 -8.490447E-18 -3.8538432463 -1.527984E-16 -3.8539971452 -8.923238E-17 -3.8541510441 6.532106E-17 -3.854304943 1.702106E-16 -3.8544588419 2.693289E-16 -3.8546127408 4.825801E-16 -3.8547666397 7.554945E-16 -3.8549205386 8.332509E-16 -3.8550744375 5.768339E-16 -3.8552283364 2.578836E-16 -3.8553822353 1.118549E-17 -3.8555361342 -1.847176E-16 -3.8556900331 -3.096397E-16 -3.855843932 -2.608025E-16 -3.8559978309 -1.940220E-16 -3.8561517298 -1.125563E-16 -3.8563056287 1.885353E-16 -3.8564595276 2.969378E-16 -3.8566134265 1.960454E-16 -3.8567673254 1.648633E-16 -3.8569212243 1.900846E-16 -3.8570751232 7.880371E-17 -3.8572290221 -9.010440E-17 -3.857382921 7.606081E-17 -3.8575368199 6.619838E-17 -3.8576907188 -2.791259E-16 -3.8578446177 -1.410026E-16 -3.8579985166 7.990443E-17 -3.8581524155 2.605298E-16 -3.8583063144 -2.073706E-17 -3.8584602133 -2.073706E-17 -3.8586141122 -3.265079E-17 -3.8587680111 -3.265079E-17 -3.85892191 -5.066252E-17 -3.8590758089 -6.257583E-17 -3.8592297078 -7.448914E-17 -3.8593836067 -2.087470E-17 -3.8595375056 4.144045E-17 -3.8596914045 -1.278539E-16 -3.8598453034 -1.280297E-16 -3.8599992023 -4.153024E-17 -3.8601531012 1.514707E-18 -3.8603070001 4.779892E-17 -3.860460899 2.244002E-18 -3.8606147979 -8.597151E-17 -3.8607686968 -5.446951E-17 -3.8609225957 3.284497E-17 -3.8610764946 2.420841E-17 -3.8612303935 -9.452041E-18 -3.8613842924 6.646668E-17 -3.8615381913 -5.671521E-18 -3.8616920902 3.966909E-17 -3.8618459891 4.312901E-17 -3.861999888 1.817457E-17 -3.8621537869 1.414714E-17 -3.8623076858 1.464880E-17 -3.8624615847 -6.462925E-17 -3.8626154836 2.202068E-16 -3.8627693825 8.464720E-16 -3.8629232814 1.077106E-15 -3.8630771803 1.004375E-15 -3.8632310792 7.410537E-16 -3.8633849781 5.377079E-16 -3.863538877 4.958023E-16 -3.8636927759 4.197567E-16 -3.8638466748 5.525145E-16 -3.8640005737 7.694672E-16 -3.8641544726 8.243937E-16 -3.8643083715 6.535973E-16 -3.8644622704 4.986530E-16 -3.8646161693 6.730852E-16 -3.8647700682 1.016554E-15 -3.8649239671 1.114428E-15 -3.865077866 6.798062E-16 -3.8652317649 3.711938E-16 -3.8653856638 2.662631E-16 -3.8655395627 2.364158E-16 -3.8656934616 1.101863E-16 -3.8658473605 6.727580E-17 -3.8660012594 1.067270E-16 -3.8661551583 1.673686E-16 -3.8663090572 1.041668E-16 -3.8664629561 -6.216735E-17 -3.866616855 2.912819E-17 -3.8667707539 2.683574E-16 -3.8669246528 4.115320E-16 -3.8670785517 1.741934E-16 -3.8672324506 4.676829E-17 -3.8673863495 2.567793E-16 -3.8675402484 2.947001E-16 -3.8676941473 1.150726E-16 -3.8678480462 2.306693E-16 -3.8680019451 3.020725E-16 -3.868155844 2.718739E-16 -3.8683097429 2.182109E-16 -3.8684636418 2.495065E-16 -3.8686175407 3.932619E-16 -3.8687714396 2.966331E-16 -3.8689253385 1.016503E-16 -3.8690792374 7.195143E-17 -3.8692331363 2.060594E-16 -3.8693870352 2.717985E-16 -3.8695409341 2.834100E-16 -3.869694833 2.331426E-16 -3.8698487319 2.468807E-16 -3.8700026308 3.161000E-16 -3.8701565297 3.830391E-16 -3.8703104286 3.794172E-16 -3.8704643275 2.848957E-16 -3.8706182264 2.023498E-16 -3.8707721253 1.324592E-16 -3.8709260242 1.862198E-16 -3.8710799231 2.437312E-16 -3.871233822 3.831289E-16 -3.8713877209 4.021751E-16 -3.8715416198 2.544426E-16 -3.8716955187 2.861099E-16 -3.8718494176 3.679255E-16 -3.8720033165 3.492639E-16 -3.8721572154 3.578172E-16 -3.8723111143 5.160756E-16 -3.8724650132 6.283951E-16 -3.8726189121 6.963773E-16 -3.872772811 5.785341E-16 -3.8729267099 4.935335E-16 -3.8730806088 3.703241E-16 -3.8732345077 2.885236E-16 -3.8733884066 3.573020E-16 -3.8735423055 5.026484E-16 -3.8736962044 3.802193E-16 -3.8738501033 1.831901E-16 -3.8740040022 1.281398E-16 -3.8741579011 -1.238354E-16 diff --git a/pro/templates/mlpca_cvstar.pro b/pro/templates/mlpca_cvstar.pro deleted file mode 100644 index 101e27b99..000000000 --- a/pro/templates/mlpca_cvstar.pro +++ /dev/null @@ -1,73 +0,0 @@ -;+ -; -; NAME: -; mlpca_cvstar -; -; PURPOSE: -; Generate ML-PCA templates for CV stars -; -; bolton@utah 2010may -; -;- - - -pro mlpca_cvstar, infile - -infile = 'mlpcainput_star.txt' - -readcol, infile, plate, mjd, fiberid, z, subc, format='L,L,L,F,A' - -subc = strtrim(subc) - -; Exclude non-CVs: -wh = where(subc eq 'CV') -plate = plate[wh] -mjd = mjd[wh] -fiberid = fiberid[wh] -z = z[wh] -subc = subc[wh] - -nobj = n_elements(plate) - -readspec, plate, fiberid, mjd=mjd, flux=flux, invvar=invvar, $ - loglam=loglam, zans=zans, /align, /silent - -; Get everything aligned in rest-frame wavelength: -align_rest, in_loglam=loglam, in_flux=flux, in_invvar=invvar, z=z, $ - out_loglam=rest_loglam, out_flux=rest_flux, out_invvar=rest_ivar - -; Require most spectra to be present for good pixels. -; This should be done in a more assiduous subtype-by-subtype manner, -; and thus there are conceivable cases where this might blow up in -; our face down the line. - -ngoodspec = total(rest_ivar gt 0., 2) -mingoodspec = round (0.8 * nobj) -p_lo = min(where(ngoodspec ge mingoodspec)) -p_hi = max(where(ngoodspec ge mingoodspec)) -rest_flux = rest_flux[p_lo:p_hi,*] -rest_ivar = rest_ivar[p_lo:p_hi,*] -rest_loglam = rest_loglam[p_lo:p_hi] - - -cvstartempset = bolton_mlpca(objflux=rest_flux, objivar=rest_ivar, coeffs=coeffs, nbasis=2) - - ;---------- - ; Construct header for output file - -get_juldate, jd -mjdstr = STRING(LONG(jd-2400000L), FORMAT='(I5)') -outfile = 'spMLpcaCVstar-' + mjdstr + '.fits' -sxaddpar, hdr, 'OBJECT', 'STAR_CV' -sxaddpar, hdr, 'COEFF0', rest_loglam[0] -sxaddpar, hdr, 'COEFF1', rest_loglam[1] - rest_loglam[0] - - - ;---------- - ; Write output file - - mwrfits, float(cvstartempset), outfile, hdr, /create - - -return -end diff --git a/pro/templates/mlpca_star.pro b/pro/templates/mlpca_star.pro deleted file mode 100644 index ee6da95f6..000000000 --- a/pro/templates/mlpca_star.pro +++ /dev/null @@ -1,97 +0,0 @@ -;+ -; -; NAME: -; mlpca_star -; -; PURPOSE: -; Generate ML-PCA templates for stars -; -; bolton@utah 2010may -; -;- - - -pro mlpca_star, infile - -infile = 'mlpcainput_star.txt' - -readcol, infile, plate, mjd, fiberid, z, subc, format='L,L,L,F,A' - -subc = strtrim(subc) - -; Exclude CVs: -wh = where(subc ne 'CV') -plate = plate[wh] -mjd = mjd[wh] -fiberid = fiberid[wh] -z = z[wh] -subc = subc[wh] - -nobj = n_elements(plate) - -readspec, plate, fiberid, mjd=mjd, flux=flux, invvar=invvar, $ - loglam=loglam, zans=zans, /align, /silent - -; Get everything aligned in rest-frame wavelength: -align_rest, in_loglam=loglam, in_flux=flux, in_invvar=invvar, z=z, $ - out_loglam=rest_loglam, out_flux=rest_flux, out_invvar=rest_ivar - -; Require most spectra to be present for good pixels. -; This should be done in a more assiduous subtype-by-subtype manner, -; and thus there are conceivable cases where this might blow up in -; our face down the line. - -ngoodspec = total(rest_ivar gt 0., 2) -mingoodspec = round (0.8 * nobj) -p_lo = min(where(ngoodspec ge mingoodspec)) -p_hi = max(where(ngoodspec ge mingoodspec)) -rest_flux = rest_flux[p_lo:p_hi,*] -rest_ivar = rest_ivar[p_lo:p_hi,*] -rest_loglam = rest_loglam[p_lo:p_hi] - -; Number of unique subtypes: -u_subc = subc[sort(subc)] -u_subc = u_subc[uniq(u_subc)] - -ntype = n_elements(u_subc) -npix = n_elements(rest_loglam) - -startempset = dblarr(npix, ntype) -model = 0.d0 * rest_flux - -; Loop over sub-types: -for i = 0L, ntype-1 do begin & $ - wh = where(subc eq u_subc[i]) & $ - startempset[*,i] = bolton_mlpca(objflux=rest_flux[*,wh], objivar=rest_ivar[*,wh], coeffs=coeffs, nbasis=1) & $ - model[*,wh] = startempset[*,i] # coeffs & $ -endfor - -; Inspect: -;i = -1L -;i++ & splot, rest_loglam, rest_flux[*,i] * (rest_ivar[*,i] gt 0) & soplot, rest_loglam, model[*,i], color=3 -i=-1L -i++ & splot, 10.^rest_loglam, startempset[*,i] & print, u_subc[i] - - ;---------- - ; Construct header for output file - -get_juldate, jd -mjdstr = STRING(LONG(jd-2400000L), FORMAT='(I5)') -outfile = 'spMLpcaStar-' + mjdstr + '.fits' -;outfile = 'spEigenStar-' + mjdstr + '.fits' -sxaddpar, hdr, 'OBJECT', 'STAR' -sxaddpar, hdr, 'COEFF0', rest_loglam[0] -sxaddpar, hdr, 'COEFF1', rest_loglam[1] - rest_loglam[0] -; Add a space to the name below, so that 'F' appears as a string and -; not as a logical. -for i=0, ntype-1 do $ - sxaddpar, hdr, 'NAME'+strtrim(string(i),2), u_subc[i]+' ' - - ;---------- - ; Write output file - - mwrfits, float(startempset), outfile, hdr, /create - - -return -end diff --git a/pro/templates/mlpcainput_gal_01.txt b/pro/templates/mlpcainput_gal_01.txt deleted file mode 100644 index 4acdb1af9..000000000 --- a/pro/templates/mlpcainput_gal_01.txt +++ /dev/null @@ -1,534 +0,0 @@ - 3676 55186 901 4.04038e-05 - 3686 55268 34 0.00139460 - 3688 55273 970 0.00156350 - 3692 55186 475 0.00754717 - 3859 55246 545 0.00983189 - 3589 55186 274 0.0138830 - 3590 55201 822 0.0153552 - 3736 55214 16 0.0171632 - 3589 55186 666 0.0179394 - 3659 55181 667 0.0197854 - 3744 55209 752 0.0207557 - 3679 55209 348 0.0214849 - 3681 55243 28 0.0217325 - 3681 55243 626 0.0219393 - 3696 55277 316 0.0235374 - 3682 55244 852 0.0237650 - 3677 55205 734 0.0241886 - 3682 55244 562 0.0246565 - 3667 55186 472 0.0263411 - 3655 55240 584 0.0273628 -# 3752 55236 751 0.0278150 - 3606 55182 450 0.0299672 - 3674 55182 1000 0.0316453 - 3662 55182 193 0.0394267 - 3682 55244 782 0.0407994 - 3680 55210 892 0.0426899 - 3655 55240 660 0.0517073 - 3655 55240 614 0.0523040 - 3697 55290 352 0.0532437 - 3589 55186 78 0.0539350 - 3639 55205 436 0.0560126 - 3662 55182 256 0.0578559 - 3662 55182 260 0.0580777 - 3659 55181 438 0.0583784 - 3606 55182 742 0.0585173 - 3615 55179 306 0.0593308 - 3667 55186 830 0.0616040 - 3661 55212 532 0.0619316 - 3804 55267 987 0.0619553 - 3690 55182 754 0.0643348 - 3655 55240 594 0.0655384 - 3655 55240 608 0.0669889 - 3736 55214 992 0.0681121 - 3767 55214 459 0.0687502 - 3655 55240 366 0.0706419 - 3655 55240 402 0.0707912 - 3689 55180 188 0.0717372 - 3663 55176 498 0.0744701 - 3694 55209 109 0.0756329 - 3681 55243 364 0.0778084 - 3735 55209 294 0.0783650 - 3655 55240 758 0.0802747 - 3589 55186 280 0.0805622 - 3682 55244 924 0.0826765 - 3682 55244 764 0.0833341 - 3682 55244 102 0.0863774 - 3776 55209 855 0.0876694 - 3751 55234 371 0.0880834 - 3674 55182 979 0.0937545 - 3661 55212 236 0.0944106 - 3659 55181 396 0.0972684 - 3677 55205 616 0.0977789 - 3658 55205 103 0.0987073 - 3804 55267 545 0.100160 - 3683 55178 938 0.100547 - 3656 55241 600 0.108177 - 3589 55186 156 0.110194 - 3587 55182 92 0.110317 - 3655 55240 520 0.113256 - 3736 55214 283 0.114383 - 3690 55182 413 0.115563 - 3667 55186 918 0.116346 - 3609 55201 578 0.117156 - 3696 55277 39 0.117843 - 3697 55290 272 0.119231 - 3697 55290 8 0.119847 - 3661 55212 748 0.120741 - 3660 55209 978 0.123983 - 3589 55186 124 0.124043 - 3692 55186 768 0.125506 - 3782 55244 953 0.128754 - 3660 55209 83 0.130446 - 3696 55277 818 0.131274 - 3680 55210 708 0.132216 - 3662 55182 180 0.133259 - 3662 55182 530 0.134367 - 3679 55209 936 0.138179 - 3658 55205 242 0.139969 - 3685 55261 882 0.142865 - 3588 55184 936 0.143522 - 3655 55240 426 0.146358 - 3736 55214 544 0.146613 -# 3655 55240 424 0.147420 - 3751 55234 721 0.148397 - 3665 55247 531 0.149460 - 3789 55269 106 0.149817 - 3589 55186 673 0.150811 - 3770 55234 79 0.151008 - 3693 55208 580 0.154025 - 3688 55273 214 0.155262 - 3664 55245 357 0.155422 - 3655 55240 871 0.160621 - 3677 55205 773 0.161217 - 3790 55208 27 0.163929 - 3661 55212 626 0.164469 - 3661 55212 908 0.166854 - 3695 55212 324 0.172153 - 3804 55267 1 0.172870 - 3590 55201 308 0.174059 - 3656 55241 938 0.177471 - 3662 55182 410 0.178102 - 3609 55201 892 0.179829 -# 3651 55259 146 0.180113 - 3686 55268 140 0.183247 - 3686 55268 686 0.183707 - 3736 55214 116 0.186151 - 3681 55243 150 0.187228 - 3856 55269 329 0.189970 - 3663 55176 494 0.194655 - 3760 55268 180 0.194961 - 3685 55261 527 0.198447 - 3609 55201 384 0.198634 - 3615 55208 198 0.199775 - 3735 55209 212 0.205577 -# 3660 55209 819 0.205796 - 3752 55236 385 0.207748 - 3688 55273 928 0.209516 - 3677 55205 560 0.210617 - 3667 55186 358 0.213288 - 3679 55209 851 0.214525 - 3659 55181 788 0.214869 - 3782 55244 944 0.215389 - 3606 55182 39 0.215985 - 3745 55234 852 0.216491 - 3873 55277 240 0.217637 - 3681 55243 128 0.218273 - 3851 55302 554 0.219987 -# 3686 55268 93 0.220599 - 3694 55209 859 0.222165 - 3688 55273 74 0.222978 - 3687 55269 27 0.228094 - 3774 55244 448 0.229501 - 3862 55276 482 0.229803 - 3862 55276 428 0.230144 - 3693 55208 925 0.232159 - 3678 55208 90 0.232681 - 3781 55243 8 0.234697 - 3677 55205 813 0.236372 - 3736 55214 561 0.237755 - 3692 55186 623 0.238927 - 3805 55269 278 0.239423 - 3849 55274 325 0.239864 - 3874 55280 668 0.240426 - 3662 55182 439 0.247464 - 3586 55181 815 0.249939 - 3744 55209 230 0.250428 - 3681 55243 319 0.250502 - 3658 55205 99 0.251182 - 3680 55210 184 0.252679 - 3854 55247 344 0.254889 - 3685 55261 259 0.255157 - 3587 55182 267 0.255456 - 3696 55277 499 0.259440 - 3590 55201 797 0.259664 - 3852 55243 830 0.259689 - 3682 55244 757 0.259876 - 3609 55201 207 0.260624 -# 3651 55259 39 0.262809 - 3696 55277 119 0.263967 - 3777 55210 735 0.264345 - 3657 55244 571 0.268882 - 3775 55207 610 0.268957 - 3697 55290 374 0.269560 - 3863 55280 398 0.270071 - 3843 55278 848 0.270998 - 3666 55185 723 0.271703 - 3816 55272 940 0.271859 - 3829 55300 780 0.275197 - 3697 55290 897 0.277908 - 3766 55213 622 0.282366 - 3852 55243 80 0.284138 - 3858 55273 168 0.285637 - 3676 55186 325 0.285802 - 3678 55208 105 0.286442 - 3659 55181 32 0.288254 - 3855 55268 628 0.291095 - 3664 55245 113 0.291263 - 3862 55276 868 0.291617 - 3693 55208 975 0.293464 - 3655 55240 379 0.294266 - 3865 55272 382 0.294596 - 3658 55205 32 0.294946 - 3590 55201 915 0.301400 - 3609 55201 53 0.303143 - 3694 55209 759 0.308507 - 3853 55268 858 0.309243 - 3772 55277 974 0.310194 - 3696 55277 649 0.311099 - 3697 55290 283 0.312222 - 3694 55209 545 0.315028 - 3859 55246 260 0.315290 - 3677 55205 836 0.316398 - 3662 55182 57 0.316820 - 3751 55234 200 0.318163 - 3679 55209 525 0.318719 - 3874 55280 570 0.319147 - 3689 55180 625 0.319702 - 3752 55236 322 0.321304 - 3761 55272 280 0.321562 - 3587 55182 771 0.322231 - 3615 55208 981 0.324349 - 3859 55246 538 0.324829 - 3697 55290 949 0.326156 - 3686 55268 845 0.326916 - 3657 55244 681 0.327050 - 3832 55289 147 0.327909 - 3678 55208 223 0.330096 - 3751 55234 38 0.330136 - 3735 55209 2 0.330587 - 3853 55268 842 0.335582 - 3766 55213 345 0.337518 - 3680 55210 246 0.339048 - 3785 55273 966 0.340222 - 3862 55276 929 0.340926 - 3853 55268 783 0.340998 - 3658 55205 842 0.342864 - 3772 55277 132 0.344985 - 3855 55268 960 0.346697 - 3784 55269 168 0.347995 - 3805 55269 775 0.348626 - 3873 55277 850 0.350472 - 3760 55268 233 0.351708 - 3783 55246 354 0.352019 - 3666 55185 775 0.352211 - 3691 55274 323 0.353054 - 3695 55212 58 0.362523 - 3779 55222 270 0.363750 - 3879 55244 476 0.364730 - 3676 55186 895 0.368631 - 3683 55178 383 0.369350 - 3609 55201 389 0.369748 - 3816 55272 626 0.372923 - 3650 55244 693 0.375163 - 3783 55246 800 0.376125 - 3784 55269 368 0.378307 - 3679 55209 545 0.378542 - 3789 55269 288 0.379392 - 3650 55244 323 0.379535 - 3794 55241 916 0.382881 - 3639 55205 359 0.383593 - 3661 55212 768 0.384133 - 3862 55276 766 0.384140 - 3833 55290 109 0.384856 - 3677 55205 837 0.385883 - 3854 55247 40 0.386261 - 3861 55274 618 0.390306 - 3690 55182 449 0.391873 - 3778 55213 151 0.392210 - 3679 55209 581 0.393380 - 3774 55244 874 0.394699 - 3857 55272 620 0.395132 - 3586 55181 243 0.398014 - 3774 55244 768 0.399160 - 3609 55201 185 0.401169 - 3673 55178 605 0.402134 - 3766 55213 675 0.402162 - 3781 55243 810 0.402240 - 3770 55234 205 0.402931 - 3782 55244 85 0.404553 - 3696 55277 301 0.404783 - 3663 55176 287 0.404893 - 3976 55302 106 0.408477 - 3694 55209 973 0.409921 - 3760 55268 40 0.416162 - 3589 55186 559 0.418400 - 3683 55178 849 0.418820 - 3656 55241 614 0.419009 - 3863 55280 505 0.419222 - 3854 55247 851 0.420282 - 3793 55214 452 0.421812 - 3663 55176 886 0.423798 - 3693 55208 527 0.424376 - 3876 55245 12 0.424946 - 3936 55302 267 0.426817 - 3873 55277 90 0.433761 - 3777 55210 497 0.433980 - 3695 55212 473 0.434043 - 3679 55209 762 0.434588 - 3793 55214 148 0.436446 - 3793 55214 333 0.437078 - 3687 55269 809 0.437246 - 3673 55178 795 0.438713 - 3792 55212 180 0.439957 - 3965 55302 261 0.444158 - 3851 55302 895 0.447948 - 3660 55209 81 0.448702 - 3856 55269 789 0.450497 - 3736 55214 106 0.452541 - 3693 55208 659 0.452653 - 3781 55243 199 0.452663 - 3780 55240 393 0.452804 - 3679 55209 521 0.454143 - 3651 55259 987 0.455266 - 3776 55209 333 0.456840 - 3615 55179 931 0.457207 - 3783 55246 137 0.458062 - 3650 55244 973 0.459967 - 3976 55302 430 0.460373 - 3976 55302 383 0.461334 - 3781 55243 619 0.462481 - 3856 55269 97 0.462721 - 3774 55244 494 0.466974 - 3804 55267 90 0.469682 - 3658 55205 956 0.470001 - 3805 55269 393 0.472062 - 3854 55247 129 0.473589 - 3861 55274 107 0.474313 - 3588 55184 11 0.475224 - 3766 55213 490 0.475536 - 3775 55207 573 0.477954 - 3965 55302 733 0.480199 - 3860 55269 917 0.481805 - 3832 55289 985 0.482078 - 3679 55209 937 0.482109 - 3851 55302 521 0.482347 - 3790 55208 198 0.482563 - 3662 55182 747 0.483387 - 3658 55205 69 0.483896 - 3776 55209 237 0.483960 - 3853 55268 63 0.485236 - 3778 55213 631 0.486116 - 3976 55302 921 0.492902 - 3781 55243 733 0.498217 - 3736 55214 495 0.498310 - 3675 55183 862 0.498401 - 3684 55246 351 0.500679 - 3735 55209 533 0.501730 - 3736 55214 837 0.504048 - 3870 55273 487 0.505759 - 3849 55274 93 0.505830 - 3774 55244 329 0.505984 - 3760 55268 929 0.506495 - 3694 55209 11 0.507794 - 3660 55209 169 0.507891 - 3784 55269 813 0.513372 - 3639 55205 255 0.514767 - 3860 55269 881 0.515869 - 3777 55210 339 0.515960 - 3976 55302 321 0.518329 - 3690 55182 6 0.522390 - 3752 55236 347 0.525184 - 3769 55240 823 0.527223 - 3789 55269 199 0.528729 - 3684 55246 843 0.528960 - 3766 55213 781 0.529049 - 3774 55244 125 0.529596 - 3804 55267 757 0.530769 - 3685 55261 116 0.531024 - 3856 55269 617 0.532923 - 3853 55268 149 0.534954 - 3792 55212 687 0.537414 - 3870 55273 875 0.537647 - 3789 55269 707 0.539466 - 3879 55244 941 0.541167 - 3794 55241 887 0.546131 - 3692 55186 792 0.547737 - 3794 55241 925 0.548021 - 3788 55246 10 0.548360 - 3776 55209 999 0.548792 - 3833 55290 149 0.551212 - 3833 55290 153 0.551719 - 3778 55213 841 0.552352 - 3776 55209 195 0.552426 - 3858 55273 137 0.553746 - 3770 55234 443 0.557415 - 3695 55212 523 0.558571 - 3692 55186 977 0.559909 - 3854 55247 898 0.564127 - 3865 55272 899 0.565852 - 3767 55214 177 0.569058 - 3829 55300 453 0.569854 - 3606 55182 435 0.570094 - 3784 55269 917 0.570744 - 3860 55269 979 0.572160 - 3782 55244 359 0.572324 - 3858 55273 917 0.572631 - 3775 55207 843 0.573675 - 3766 55213 249 0.574530 - 3865 55272 263 0.575234 - 3777 55210 821 0.576325 - 3858 55273 53 0.579840 - 3858 55273 613 0.580753 - 3782 55244 483 0.581943 - 3615 55179 875 0.581974 - 3856 55269 349 0.587160 - 3662 55182 517 0.588014 - 3855 55268 775 0.588245 - 3870 55273 309 0.588848 - 3615 55179 106 0.588858 - 3674 55182 133 0.589139 - 3785 55273 851 0.590776 - 3870 55273 647 0.592163 - 3690 55182 551 0.593419 - 3805 55269 17 0.596000 - 3793 55214 349 0.598927 - 3775 55207 341 0.601331 - 3829 55300 875 0.603324 - 3794 55241 81 0.604773 - 3751 55234 657 0.605577 - 3781 55243 815 0.606822 - 3783 55246 839 0.607078 - 3879 55244 255 0.608339 - 3851 55302 9 0.608761 - 3785 55241 605 0.610240 - 3606 55182 211 0.610924 - 3590 55201 291 0.611840 - 3693 55208 735 0.613675 - 3683 55178 737 0.617553 - 3856 55269 647 0.619310 - 3783 55246 613 0.619690 - 3789 55269 100 0.621390 - 3851 55302 888 0.621411 - 3774 55244 357 0.622039 - 3854 55247 333 0.623883 - 3794 55241 577 0.624201 - 3667 55186 963 0.629837 - 3832 55289 763 0.632102 - 3783 55246 307 0.632976 - 3766 55213 907 0.633778 - 3777 55210 495 0.634346 - 3862 55276 417 0.636189 - 3761 55272 123 0.636562 - 3852 55243 683 0.637249 - 3760 55268 311 0.638915 - 3861 55274 264 0.640639 - 3851 55302 491 0.643804 - 3760 55268 505 0.645139 - 3865 55272 437 0.647135 - 3816 55272 295 0.648964 - 3860 55269 777 0.649269 - 3673 55178 173 0.649780 - 3782 55244 195 0.649812 - 3774 55244 213 0.651133 - 3851 55302 21 0.652171 - 3606 55182 482 0.652808 - 3784 55269 981 0.652943 - 3587 55182 225 0.653793 - 3879 55244 251 0.654912 - 3679 55209 221 0.658720 - 3865 55272 51 0.660946 - 3676 55186 607 0.662554 - 3781 55243 337 0.663248 - 3781 55243 283 0.664163 - 3833 55290 415 0.669531 - 3695 55212 353 0.673953 - 3779 55222 343 0.674299 - 3770 55234 255 0.675252 - 3615 55208 43 0.676381 - 3692 55186 815 0.676610 - 3861 55274 375 0.677364 - 3829 55300 871 0.678253 - 3639 55205 691 0.678480 - 3664 55245 263 0.678802 - 3656 55241 47 0.681998 - 3677 55205 889 0.683173 - 3804 55267 583 0.683342 - 3829 55300 847 0.684023 - 3586 55181 19 0.684061 - 3692 55186 249 0.685458 - 3615 55179 241 0.687611 - 3879 55244 7 0.690046 - 3857 55272 709 0.690531 - 3587 55182 200 0.693666 - 3777 55210 618 0.697421 - 3879 55244 659 0.697968 - 3685 55261 125 0.698121 - 3858 55273 235 0.699162 - 3854 55247 130 0.700179 - 3816 55272 5 0.701787 - 3851 55302 127 0.703848 - 3776 55209 849 0.704536 - 3657 55244 881 0.704540 - 3829 55300 101 0.708142 - 3879 55244 643 0.710019 - 3873 55277 107 0.712028 - 3879 55244 297 0.713959 - 3869 55273 751 0.715994 - 3784 55269 519 0.716010 - 3870 55273 559 0.716626 - 3856 55269 633 0.719933 - 3793 55214 167 0.720040 - 3879 55244 595 0.721562 - 3859 55246 427 0.721852 - 3852 55243 677 0.722030 - 3606 55182 843 0.724833 - 3785 55241 859 0.726695 - 3683 55178 417 0.730650 - 3788 55246 155 0.731244 - 3659 55181 293 0.731359 - 3854 55247 859 0.737637 - 3879 55244 443 0.739905 - 3692 55186 235 0.746354 - 3865 55272 90 0.748232 - 3615 55179 385 0.750630 - 3856 55269 337 0.751430 - 3680 55210 165 0.751886 - 3836 55302 893 0.751886 - 3761 55272 67 0.752674 - 3852 55243 989 0.757830 - 3778 55213 567 0.759972 - 3870 55273 473 0.761131 - 3855 55268 841 0.761228 - 3770 55234 877 0.763216 - 3774 55244 127 0.765864 - 3681 55243 827 0.766042 - 3853 55268 195 0.773596 - 3783 55246 105 0.778172 - 3685 55261 486 0.778500 - 3692 55186 199 0.787773 - 3836 55302 45 0.789892 - 3783 55246 175 0.793330 - 3855 55268 949 0.793612 - 3879 55244 815 0.809334 - 3679 55209 225 0.815133 - 3679 55209 211 0.817698 - 3639 55205 51 0.821603 - 3855 55268 755 0.823825 - 3766 55213 914 0.831806 - 3829 55300 873 0.833060 - 3666 55185 119 0.839667 - 3770 55234 435 0.840549 - 3785 55273 893 0.841338 - 3793 55214 281 0.918215 - 3832 55289 865 0.919855 diff --git a/pro/templates/mlpcainput_qso_combined.txt b/pro/templates/mlpcainput_qso_combined.txt deleted file mode 100644 index f4607be4b..000000000 --- a/pro/templates/mlpcainput_qso_combined.txt +++ /dev/null @@ -1,443 +0,0 @@ - 3586 55181 154 0.0420945 - 3657 55244 896 0.0483416 - 3659 55181 768 0.0832433 - 3658 55205 538 0.129583 - 3656 55241 784 0.142721 - 3775 55207 200 0.143926 - 3588 55184 488 0.186315 - 3651 55259 492 0.186787 - 3684 55246 101 0.186970 - 3859 55246 798 0.188737 - 3685 55261 236 0.189951 - 3697 55290 346 0.198218 - 3772 55277 526 0.202154 - 3674 55182 998 0.211167 - 3656 55241 631 0.217916 - 3589 55186 202 0.228215 - 3615 55179 614 0.229505 - 3606 55182 714 0.232403 - 3588 55184 569 0.235185 - 3651 55259 294 0.237453 - 3736 55214 998 0.238758 - 3852 55243 342 0.238852 - 3859 55246 544 0.240239 - 3681 55243 366 0.240400 - 3687 55269 998 0.240568 - 3589 55186 428 0.241570 - 3639 55205 118 0.244655 - 3615 55179 824 0.247087 - 3744 55209 711 0.247224 - 3735 55209 856 0.249325 - 3590 55201 984 0.249455 - 3651 55259 479 0.260416 - 3736 55214 612 0.263715 - 3615 55179 862 0.265973 - 3851 55302 348 0.268550 - 3606 55182 138 0.269485 - 3590 55201 606 0.272319 - 3639 55205 616 0.275344 - 3736 55214 462 0.280164 - 3615 55179 970 0.288982 - 3609 55201 340 0.297638 -# lo-z above this line, -# rest of the sample below this line - 3586 55181 98 0.716719 - 3586 55181 520 0.397226 - 3586 55181 714 3.32344 - 3586 55181 816 3.36065 - 3586 55181 940 0.330541 - 3587 55182 132 3.43889 - 3587 55182 258 4.03822 - 3587 55182 292 3.20921 - 3587 55182 356 2.69896 - 3587 55182 372 1.38449 - 3587 55182 460 3.81650 - 3587 55182 588 1.63209 - 3587 55182 820 1.15972 - 3587 55182 990 2.35923 - 3588 55184 36 2.39725 - 3588 55184 148 3.25205 - 3588 55184 540 4.76001 - 3589 55186 452 3.66650 - 3589 55186 493 2.73573 - 3589 55186 586 2.43442 - 3589 55186 694 3.33301 - 3589 55186 788 1.15206 - 3590 55201 168 4.29650 - 3590 55201 202 3.11838 - 3590 55201 220 3.44290 - 3590 55201 222 4.15781 - 3590 55201 338 4.17565 - 3590 55201 360 2.86046 - 3590 55201 362 2.71370 - 3590 55201 674 2.06669 - 3590 55201 773 2.68391 - 3590 55201 956 2.93172 - 3606 55182 157 4.04697 - 3606 55182 276 4.20559 - 3606 55182 578 4.45531 - 3606 55182 676 0.793187 - 3609 55201 36 0.772995 - 3609 55201 302 4.17014 - 3609 55201 390 3.62275 - 3609 55201 468 3.25332 - 3609 55201 536 0.698450 - 3609 55201 709 2.36048 - 3609 55201 780 2.25759 - 3609 55201 908 3.84008 - 3615 55179 64 1.32713 - 3615 55179 482 3.94718 - 3615 55179 906 2.65538 - 3615 55208 14 3.40449 - 3639 55205 212 1.01831 - 3639 55205 550 2.88518 - 3639 55205 604 2.63679 - 3639 55205 647 3.27322 - 3639 55205 728 1.99356 - 3650 55244 572 3.43605 - 3650 55244 736 3.61986 - 3655 55240 4 1.98477 - 3655 55240 258 0.589437 - 3655 55240 273 2.24316 - 3655 55240 438 0.769919 - 3655 55240 472 2.99619 - 3655 55240 686 2.23411 - 3655 55240 878 1.59152 - 3656 55241 140 4.29199 - 3656 55241 430 0.253939 - 3656 55241 826 0.373594 - 3656 55241 872 1.58529 - 3656 55241 892 3.11683 - 3657 55244 312 1.55978 - 3657 55244 347 0.526406 - 3657 55244 638 0.661763 - 3658 55205 14 2.55234 - 3658 55205 46 0.706818 - 3658 55205 64 3.98028 - 3658 55205 115 3.34533 - 3658 55205 232 1.72484 - 3658 55205 294 3.66267 - 3658 55205 528 0.196234 - 3658 55205 840 0.386271 - 3659 55181 12 0.798387 - 3659 55181 272 2.14725 - 3659 55181 314 0.739038 - 3659 55181 398 1.78747 - 3659 55181 790 2.25781 - 3659 55181 938 3.00624 - 3659 55181 962 4.13269 - 3660 55209 331 0.267200 - 3660 55209 364 2.78408 - 3660 55209 594 1.49883 - 3660 55209 618 0.904593 - 3660 55209 632 4.99962 - 3660 55209 734 2.25382 - 3660 55209 822 4.37445 - 3661 55212 170 1.56293 - 3661 55212 284 1.76822 - 3661 55212 511 2.69073 - 3661 55212 786 0.613129 - 3661 55212 798 1.82473 - 3661 55212 882 0.572772 - 3662 55182 244 3.21888 - 3662 55182 486 3.60176 - 3662 55182 570 4.04253 - 3662 55182 836 0.952739 - 3662 55182 948 1.76787 - 3663 55176 396 0.371364 - 3663 55176 692 3.28205 - 3663 55176 856 1.29690 - 3664 55245 580 1.64036 - 3664 55245 598 0.903709 - 3665 55247 8 0.434812 - 3665 55247 92 3.24359 - 3665 55247 136 4.37314 - 3665 55247 554 2.32303 - 3665 55247 582 1.29218 - 3665 55247 788 2.84015 - 3666 55185 820 3.68274 - 3667 55186 54 1.30881 - 3667 55186 478 3.17558 - 3667 55186 758 2.70074 - 3667 55186 800 2.17594 - 3673 55178 150 3.09860 - 3673 55178 306 4.15375 - 3673 55178 352 2.19861 - 3673 55178 560 4.27329 - 3674 55182 102 1.72748 - 3674 55182 196 3.30612 - 3674 55182 700 2.33136 - 3674 55182 846 1.73532 - 3674 55182 954 1.37593 - 3675 55183 130 0.439769 - 3675 55183 164 4.08219 - 3675 55183 178 0.364136 - 3675 55183 240 3.64994 - 3675 55183 346 1.56742 - 3675 55183 360 2.10535 - 3675 55183 478 1.69824 - 3675 55183 532 1.85609 - 3675 55183 538 1.60522 - 3675 55183 576 3.44314 - 3675 55183 742 1.35808 - 3675 55183 876 1.92940 - 3675 55183 998 1.95574 - 3676 55186 102 1.02460 - 3676 55186 228 1.47405 - 3676 55186 284 4.17113 - 3676 55186 596 4.43433 - 3676 55186 816 2.30355 - 3677 55205 778 0.854257 - 3677 55205 978 2.68673 - 3678 55208 82 2.98180 - 3678 55208 158 0.456000 - 3678 55208 368 0.729885 - 3678 55208 448 3.16330 - 3678 55208 476 3.13168 - 3678 55208 512 2.59418 - 3678 55208 536 0.872226 - 3678 55208 640 0.896332 - 3678 55208 722 1.30508 - 3678 55208 858 2.23400 - 3679 55209 4 2.64632 - 3679 55209 112 0.501156 - 3679 55209 368 2.49980 - 3679 55209 636 2.63694 - 3679 55209 696 1.59080 - 3679 55209 726 1.94189 - 3680 55210 88 0.379872 - 3680 55210 210 0.470305 - 3680 55210 242 0.511595 - 3680 55210 336 3.73365 - 3680 55210 366 5.10341 - 3680 55210 528 1.76880 - 3680 55210 876 3.90360 - 3683 55178 36 0.909931 - 3683 55178 360 1.84321 - 3683 55178 436 1.39199 - 3683 55178 508 3.25161 - 3683 55178 826 3.84925 - 3683 55178 832 2.42370 - 3683 55245 876 3.81549 - 3683 55245 880 1.08290 - 3683 55245 896 2.65653 - 3686 55268 464 1.40681 - 3689 55180 62 0.349873 - 3689 55180 148 1.16922 - 3689 55180 198 2.96798 - 3689 55180 334 3.77560 - 3689 55180 832 1.44605 - 3690 55182 52 0.744620 - 3690 55182 578 0.877204 - 3690 55182 670 2.89573 - 3690 55182 776 0.305947 - 3690 55182 838 0.349799 - 3692 55186 12 1.05355 - 3692 55186 100 3.64648 - 3692 55186 136 1.51307 - 3692 55186 254 3.23839 - 3692 55186 674 1.12294 - 3692 55186 852 1.80552 - 3692 55186 934 2.46494 - 3693 55208 48 1.33842 - 3693 55208 70 1.91372 - 3693 55208 136 0.878530 - 3693 55208 140 1.41821 - 3693 55208 222 3.48972 - 3693 55208 234 1.31222 - 3693 55208 236 0.741228 - 3693 55208 424 0.870690 - 3693 55208 792 0.475326 - 3693 55208 802 1.35732 - 3694 55209 362 3.47731 - 3694 55209 486 2.17165 - 3694 55209 548 1.51688 - 3694 55209 654 0.666208 - 3694 55209 716 1.55999 - 3694 55209 808 2.50081 - 3695 55212 34 0.564744 - 3695 55212 102 0.887757 - 3695 55212 367 0.945216 - 3695 55212 444 2.15353 - 3695 55212 520 1.63022 - 3695 55212 596 1.37210 - 3695 55212 608 0.819979 - 3695 55212 816 1.02898 - 3695 55212 902 3.98139 - 3695 55212 918 1.23233 - 3735 55209 519 0.746827 - 3735 55209 532 4.16390 - 3735 55209 763 0.848251 - 3735 55209 776 3.68729 - 3735 55209 834 4.43954 - 3735 55209 968 2.16933 - 3736 55214 14 3.00115 - 3736 55214 302 3.99388 - 3736 55214 444 2.96420 - 3736 55214 454 1.08140 - 3736 55214 556 3.00171 - 3736 55214 938 2.87392 - 3736 55214 940 2.77497 - 3736 55214 976 2.96662 - 3744 55209 88 2.50998 - 3744 55209 318 0.548105 - 3744 55209 402 2.18056 - 3744 55209 576 3.52859 - 3744 55209 732 3.50291 - 3744 55209 952 2.71698 - 3745 55234 281 2.18972 - 3745 55234 429 3.53480 - 3745 55234 576 3.81717 - 3745 55234 624 3.11847 - 3751 55234 96 2.09023 - 3751 55234 302 4.02265 - 3751 55234 332 3.80815 - 3751 55234 358 2.19069 - 3751 55234 392 2.42917 - 3751 55234 447 1.56355 - 3751 55234 514 0.579557 - 3751 55234 676 2.74925 - 3751 55234 756 3.90789 - 3752 55236 112 4.22777 - 3752 55236 428 4.23291 - 3752 55236 558 2.65293 - 3752 55236 764 2.41253 - 3766 55213 72 1.16204 - 3766 55213 275 0.472817 - 3766 55213 572 1.05846 - 3766 55213 864 2.85730 - 3766 55213 878 4.54109 - 3766 55213 990 3.69759 - 3767 55214 224 0.631992 - 3767 55214 244 0.580003 - 3767 55214 300 1.94959 - 3767 55214 380 1.00740 - 3767 55214 548 0.391223 - 3767 55214 592 3.60147 - 3767 55214 634 2.13373 - 3767 55214 648 2.10348 - 3767 55214 672 3.62583 - 3767 55214 694 3.68110 - 3767 55214 772 2.15416 - 3767 55214 776 2.14963 - 3767 55214 782 1.89370 - 3767 55214 806 1.22153 - 3767 55214 888 1.84260 - 3767 55214 902 3.42118 - 3769 55240 148 2.43720 - 3769 55240 392 3.70074 - 3769 55240 396 2.27333 - 3770 55234 24 2.21139 - 3770 55234 46 1.98888 - 3770 55234 48 1.03351 - 3770 55234 86 1.00671 - 3770 55234 128 2.96311 - 3770 55234 380 2.49524 - 3770 55234 542 2.59497 - 3770 55234 751 3.73020 - 3770 55234 996 3.42194 - 3775 55207 54 0.915833 - 3775 55207 216 1.62179 - 3775 55207 222 1.74552 - 3775 55207 342 3.94975 - 3775 55207 434 1.16753 - 3775 55207 438 1.22528 - 3775 55207 486 3.01993 - 3775 55207 584 2.63170 - 3775 55207 690 3.41611 - 3775 55207 826 0.724452 - 3776 55209 12 1.34167 - 3776 55209 42 3.55306 - 3776 55209 102 1.83999 - 3776 55209 120 2.98722 - 3776 55209 194 3.91977 - 3776 55209 212 1.66780 - 3776 55209 226 0.829318 - 3776 55209 366 2.69401 - 3776 55209 406 1.65277 - 3776 55209 437 3.33650 - 3776 55209 464 1.48001 - 3776 55209 538 2.92836 - 3776 55209 576 2.70670 - 3776 55209 738 2.91064 - 3776 55209 768 4.40541 - 3776 55209 834 2.46060 - 3776 55209 932 1.96596 - 3776 55209 946 3.59185 - 3776 55209 958 2.45676 - 3777 55210 16 1.34256 - 3777 55210 214 4.02778 - 3777 55210 258 3.86941 - 3777 55210 310 1.01912 - 3777 55210 332 2.28215 - 3777 55210 340 1.16508 - 3777 55210 364 0.838536 - 3777 55210 628 2.80664 - 3777 55210 663 3.64152 - 3777 55210 679 2.52045 - 3777 55210 839 0.892077 - 3777 55210 849 2.18107 - 3777 55210 996 3.89414 - 3778 55213 125 1.06090 - 3778 55213 146 1.85366 - 3778 55213 164 2.25338 - 3778 55213 178 0.563455 - 3778 55213 314 3.40972 - 3778 55213 428 0.596622 - 3778 55213 430 3.22621 - 3778 55213 496 3.90402 - 3778 55213 504 3.54453 - 3778 55213 650 0.398866 - 3778 55213 674 3.57655 - 3778 55213 796 3.80165 - 3778 55213 818 1.35520 - 3779 55222 250 3.06769 - 3779 55222 282 0.732499 - 3779 55222 358 3.65618 - 3779 55222 426 1.54831 - 3779 55222 660 3.44762 - 3779 55222 722 2.50931 - 3779 55222 930 4.12912 - 3779 55222 950 3.30751 - 3780 55240 234 2.90576 - 3780 55240 482 2.18669 - 3780 55240 514 2.21570 - 3780 55240 654 2.54025 - 3780 55240 806 4.75227 - 3790 55208 40 2.49780 - 3790 55208 396 0.562868 - 3790 55208 410 3.36070 - 3790 55208 471 3.09039 - 3790 55208 663 0.831073 - 3790 55208 792 1.98340 - 3790 55208 846 3.24847 - 3790 55208 870 3.15338 - 3790 55208 924 1.63381 - 3790 55208 992 2.30831 - 3792 55212 16 4.26124 - 3792 55212 396 1.71437 - 3792 55212 570 1.68449 - 3792 55212 738 2.83044 - 3792 55212 814 0.769906 - 3792 55212 874 3.10274 - 3792 55212 926 1.67386 - 3792 55212 942 0.250134 - 3792 55212 964 2.14456 - 3792 55212 972 0.584992 - 3793 55214 330 3.98456 - 3793 55214 418 0.387920 - 3793 55214 540 1.49458 - 3793 55214 652 0.904256 - 3793 55214 708 1.47528 - 3793 55214 798 2.20106 - 3793 55214 928 1.97591 - 3793 55214 959 3.19635 - 3793 55214 982 3.02068 - 3793 55214 997 4.03635 - 3794 55241 238 0.532580 - 3794 55241 376 3.00036 - 3794 55241 582 4.29057 - 3794 55241 634 1.31676 - 3794 55241 806 4.13014 - 3794 55241 834 3.05023 - 3794 55241 932 3.86844 diff --git a/pro/templates/mlpcainput_star.txt b/pro/templates/mlpcainput_star.txt deleted file mode 100644 index be01d8717..000000000 --- a/pro/templates/mlpcainput_star.txt +++ /dev/null @@ -1,626 +0,0 @@ - 3606 55182 219 -0.0001904 A0 - 3852 55243 766 0.0003623 A0 - 3865 55272 694 -0.0000462 A0 - 3589 55186 10 -0.0006318 A0 - 3650 55244 142 -0.0005536 A0 - 3665 55247 774 -0.0003994 A0 - 3662 55182 764 0.0002076 A0 - 3675 55183 172 0.0003042 A0 - 3650 55244 160 0.0000917 A0 - 3843 55278 216 -0.0000053 A0 - 3647 55241 483 -0.0005597 A0 - 3769 55240 79 0.0004967 A0 - 3760 55268 863 0.0002492 A0 - 3794 55241 264 0.0006174 A0 - 3863 55280 644 -0.0002588 A0 - 3615 55208 844 -0.0006226 A0 - 3769 55240 977 0.0005900 A0 - 3676 55186 400 0.0002127 A0 - 3851 55302 660 -0.0003175 A0 - 3650 55244 723 -0.0005320 A0 - 3870 55273 782 -0.0001735 A0p - 3784 55269 770 0.0003999 A0p - 3780 55240 446 0.0003937 A0p - 3745 55234 938 -0.0005634 A0p - 3793 55214 68 0.0002407 A0p - 3769 55240 890 0.0005796 A0p - 3744 55209 520 -0.0005862 A0p - 3586 55181 900 0.0000123 A0p - 3776 55209 658 0.0002431 A0p - 3647 55241 14 -0.0004581 A0p - 3776 55209 510 -0.0000475 A0p - 3639 55205 528 -0.0005529 A0p - 3650 55244 716 -0.0000504 A0p - 3778 55213 538 -0.0004123 A0p - 3744 55209 166 -0.0005562 A0p - 3778 55213 106 -0.0000753 A0p - 3665 55247 953 -0.0000145 A0p - 3778 55213 255 -0.0004499 A0p - 3664 55245 266 -0.0003455 A0p - 3853 55268 316 -0.0005263 A0p - 3667 55186 846 -0.0000043 B 6 - 3856 55269 78 0.0001129 B 6 - 3788 55246 828 0.0003217 B 6 - 3659 55181 80 -0.0000509 B 6 - 3674 55182 505 -0.0001347 B 6 - 3859 55246 825 -0.0006704 B 6 - 3783 55246 549 0.0002665 B 6 - 3662 55182 788 -0.0005471 B 6 - 3657 55244 992 -0.0003108 B 6 - 3615 55179 78 -0.0000817 B 6 - 3843 55278 482 -0.0000320 B 6 - 3676 55186 804 -0.0003783 B 6 - 3869 55273 826 0.0000006 B 6 - 3781 55243 649 -0.0002402 B 6 - 3792 55212 544 -0.0004570 B 6 - 3832 55289 278 0.0000049 B 6 - 3689 55180 406 -0.0000539 B 6 - 3854 55247 546 -0.0003810 B 6 - 3659 55181 632 -0.0004969 B 6 - 3861 55274 51 -0.0001009 B 6 - 3861 55274 64 0.0000097 B 9 - 3674 55182 786 -0.0002123 B 9 - 3965 55302 982 0.0001296 B 9 - 3766 55213 128 0.0004425 B 9 - 3804 55267 180 -0.0002190 B 9 - 3686 55268 308 0.0002068 B 9 - 3655 55240 832 0.0001729 B 9 - 3777 55210 432 0.0006616 B 9 - 3861 55274 788 0.0002405 B 9 - 3781 55243 782 0.0003598 B 9 - 3776 55209 702 0.0000302 B 9 - 3590 55201 844 -0.0000575 B 9 - 3691 55274 696 -0.0000772 B 9 - 3789 55269 384 0.0006308 B 9 - 3677 55205 452 -0.0002340 B 9 - 3689 55180 362 0.0002564 B 9 - 3651 55259 736 -0.0004598 B 9 - 3849 55274 766 -0.0001141 CV - 3853 55268 214 0.0006107 CV - 3692 55186 734 -0.0000485 CV - 3857 55272 404 0.0013802 CV - 3794 55241 24 0.0010447 CV - 3655 55240 318 0.0007692 CV - 3682 55244 654 0.0001470 CV - 3695 55212 686 -0.0001604 CV - 3873 55277 914 0.0001494 CV - 3766 55213 594 0.0005507 CV - 3651 55259 602 0.0028874 CV - 3781 55243 176 0.0003115 CV - 3680 55210 324 0.0001090 CV - 3779 55222 890 0.0007930 CV - 3780 55240 436 0.0002156 CV - 3656 55241 540 -0.0001264 CV - 3849 55274 648 -0.0005725 CV - 3776 55209 966 0.0005356 CV - 3684 55246 764 -0.0000299 CV - 3859 55246 960 0.0001503 CV - 3789 55269 260 0.0003877 CV - 3677 55205 806 0.0006071 CV - 3792 55212 644 -0.0004744 CV - 3662 55182 866 0.0004235 CV - 3683 55178 930 0.0006330 CV - 3656 55241 898 0.0002349 CV - 3767 55214 840 0.0017246 CV - 3856 55269 690 0.0000840 CV - 3833 55290 892 0.0028837 CV - 3793 55214 598 0.0019548 CV - 3586 55181 854 0.0001531 CV - 3854 55247 628 0.0002558 CV - 3859 55246 98 0.0004482 CV - 3676 55186 676 0.0004773 CV - 3609 55201 16 0.0019571 CV - 3861 55274 212 0.0026599 CV - 3860 55269 842 0.0015019 CV - 3869 55273 616 0.0004192 CV - 3779 55222 940 0.0001983 CV - 3666 55185 796 0.0004494 CV - 3849 55274 270 0.0006141 CV - 3976 55302 678 0.0002652 CV - 3697 55290 998 0.0003401 CV - 3744 55209 330 0.0002802 Carbon - 3832 55289 978 0.0010336 Carbon - 3936 55302 816 0.0005033 Carbon - 3849 55274 365 0.0004696 Carbon - 3793 55214 80 0.0004562 Carbon - 3794 55241 116 0.0004990 Carbon - 3769 55240 78 0.0011572 Carbon - 3673 55178 440 0.0002619 Carbon - 3783 55246 706 0.0010544 Carbon - 3870 55273 344 0.0002461 Carbon - 3694 55209 672 0.0014906 CarbonWD - 3852 55243 630 0.0032205 CarbonWD - 3965 55302 464 0.0038096 CarbonWD - 3852 55243 48 0.0037264 CarbonWD - 3745 55234 924 0.0018479 CarbonWD - 3793 55214 359 0.0008556 Carbon_lines - 3745 55234 558 0.0003727 Carbon_lines - 3664 55245 377 0.0003308 Carbon_lines - 3586 55181 344 0.0004455 Carbon_lines - 3879 55244 32 -0.0004688 Carbon_lines - 3857 55272 672 -0.0002832 Carbon_lines - 3587 55182 733 -0.0002069 Carbon_lines - 3861 55274 712 -0.0002670 Carbon_lines - 3662 55182 594 -0.0000073 F2 - 3783 55246 808 0.0007009 F2 - 3752 55236 608 0.0000455 F2 - 3687 55269 612 -0.0007401 F2 - 3679 55209 826 -0.0001441 F2 - 3666 55185 130 -0.0000242 F2 - 3691 55274 188 0.0004582 F2 - 3588 55184 316 -0.0001647 F2 - 3862 55276 472 -0.0001835 F2 - 3695 55212 418 -0.0000129 F2 - 3691 55274 396 0.0000739 F2 - 3752 55236 138 -0.0000819 F2 - 3836 55302 935 0.0002259 F2 - 3688 55273 480 -0.0002087 F2 - 3683 55245 660 0.0000641 F2 - 3752 55236 302 0.0002408 F2 - 3692 55186 730 0.0001345 F2 - 3680 55210 256 0.0000992 F2 - 3792 55212 87 0.0005831 F2 - 3696 55277 160 -0.0001740 F2 - 3688 55273 188 0.0001001 F5 - 3666 55185 686 0.0000865 F5 - 3788 55246 624 0.0007044 F5 - 3745 55234 467 -0.0007296 F5 - 3778 55213 12 0.0001083 F5 - 3590 55201 617 -0.0004958 F5 - 3665 55247 786 -0.0006238 F5 - 3861 55274 162 -0.0001239 F5 - 3865 55272 130 -0.0003123 F5 - 3777 55210 282 0.0008167 F5 - 3775 55207 662 0.0005052 F5 - 3693 55208 112 -0.0000640 F5 - 3782 55244 506 0.0013893 F5 - 3777 55210 436 0.0011110 F5 - 3682 55244 872 -0.0011297 F5 - 3936 55302 132 0.0002304 F5 - 3861 55274 858 0.0000472 F5 - 3965 55302 856 0.0001454 F5 - 3859 55246 16 -0.0002104 F5 - 3639 55205 508 -0.0006874 F5 - 3666 55185 600 -0.0000426 F9 - 3689 55180 394 -0.0000051 F9 - 3694 55209 652 -0.0003897 F9 - 3675 55183 572 -0.0001019 F9 - 3655 55240 460 -0.0005381 F9 - 3655 55240 176 0.0000354 F9 - 3780 55240 856 -0.0001833 F9 - 3655 55240 712 -0.0000417 F9 - 3687 55269 174 -0.0001434 F9 - 3857 55272 447 0.0007014 F9 - 3692 55186 310 0.0003035 F9 - 3667 55186 132 -0.0000460 F9 - 3752 55236 312 0.0001310 F9 - 3674 55182 796 0.0001603 F9 - 3690 55182 906 -0.0001657 F9 - 3694 55209 624 -0.0001029 F9 - 3679 55209 758 -0.0007300 F9 - 3751 55234 740 0.0000003 F9 - 3685 55261 938 -0.0004352 F9 - 3659 55181 930 -0.0000758 F9 - 3655 55240 162 -0.0000189 G0 - 3659 55181 678 -0.0001627 G0 - 3664 55245 500 -0.0000352 G0 - 3664 55245 665 -0.0000062 G0 - 3769 55240 74 0.0007602 G0 - 3666 55185 210 -0.0000450 G0 - 3674 55182 794 -0.0000604 G0 - 3766 55213 784 0.0009658 G0 - 3664 55245 734 0.0000644 G0 - 3674 55182 722 -0.0001503 G0 - 3695 55212 338 -0.0000547 G0 - 3833 55290 179 0.0000096 G0 - 3651 55259 354 -0.0001193 G0 - 3936 55302 168 -0.0000559 G0 - 3789 55269 664 -0.0001895 G0 - 3685 55261 890 0.0000479 G0 - 3659 55181 832 -0.0001404 G0 - 3657 55244 120 -0.0002595 G0 - 3695 55212 664 -0.0000023 G0 - 3687 55269 784 0.0000777 G2 - 3695 55212 214 -0.0000734 G2 - 3785 55241 914 0.0001631 G2 - 3678 55208 454 -0.0000064 G2 - 3766 55213 860 0.0001998 G2 - 3660 55209 206 -0.0001167 G2 - 3879 55244 872 -0.0003298 G2 - 3663 55176 186 -0.0000270 G2 - 3751 55234 546 0.0001153 G2 - 3689 55180 505 -0.0005410 G2 - 3936 55302 918 -0.0006969 G2 - 3779 55222 268 0.0001856 G2 - 3666 55185 184 0.0001028 G2 - 3873 55277 682 0.0001549 G2 - 3656 55241 978 -0.0000111 G2 - 3667 55186 910 0.0006119 G2 - 3683 55178 598 -0.0005996 G2 - 3778 55213 272 0.0000912 G2 - 3769 55240 933 0.0006864 G2 - 3685 55261 992 -0.0000763 G2 - 3665 55247 590 0.0002117 G2 - 3691 55274 212 0.0000854 G5 - 3770 55234 979 0.0003695 G5 - 3681 55243 336 0.0001002 G5 - 3816 55272 192 0.0002410 G5 - 3678 55208 494 0.0000304 G5 - 3752 55236 162 0.0000606 G5 - 3859 55246 598 0.0001429 G5 - 3676 55186 766 0.0000056 G5 - 3662 55182 482 0.0000010 G5 - 3686 55268 838 -0.0000364 G5 - 3586 55181 460 -0.0005122 G5 - 3816 55272 820 0.0005973 G5 - 3862 55276 295 -0.0005056 G5 - 3692 55186 445 -0.0000900 G5 - 3674 55182 306 -0.0000141 G5 - 3673 55178 672 0.0003520 G5 - 3679 55209 700 0.0000909 G5 - 3679 55209 976 -0.0001970 G5 - 3680 55210 316 0.0000321 G5 - 3675 55183 88 0.0000243 G5 - 3785 55241 940 0.0003749 K1 - 3639 55205 138 -0.0000513 K1 - 3766 55213 290 0.0001288 K1 - 3761 55272 116 -0.0003422 K1 - 3660 55209 912 0.0000644 K1 - 3667 55186 301 0.0000509 K1 - 3770 55234 98 0.0002308 K1 - 3662 55182 372 0.0001339 K1 - 3781 55243 668 0.0009496 K1 - 3766 55213 524 0.0000077 K1 - 3679 55209 468 -0.0003826 K1 - 3779 55222 956 0.0002465 K1 - 3792 55212 268 0.0004621 K1 - 3769 55240 48 0.0005767 K1 - 3681 55243 284 -0.0001699 K1 - 3816 55272 610 0.0004327 K1 - 3680 55210 78 -0.0001679 K1 - 3873 55277 692 -0.0000895 K1 - 3805 55269 680 0.0002685 K1 - 3662 55182 730 -0.0002361 K1 - 3777 55210 982 0.0002964 K1 - 3965 55302 308 -0.0002001 K1 - 3662 55182 292 -0.0001064 K1 - 3936 55302 823 -0.0000484 K3 - 3663 55176 206 -0.0001607 K3 - 3781 55243 740 -0.0000016 K3 - 3682 55244 668 0.0000382 K3 - 3804 55267 692 -0.0001052 K3 - 3659 55181 219 -0.0000159 K3 - 3874 55280 114 -0.0001512 K3 - 3936 55302 416 -0.0004085 K3 - 3685 55261 378 0.0000147 K3 - 3836 55302 552 0.0010612 K3 - 3661 55212 993 0.0000270 K3 - 3936 55302 636 0.0001235 K3 - 3774 55244 534 0.0002266 K3 - 3873 55277 700 -0.0000745 K3 - 3687 55269 213 0.0001137 K3 - 3767 55214 134 0.0001312 K3 - 3689 55180 990 0.0000219 K3 - 3760 55268 672 -0.0000247 K3 - 3667 55186 474 0.0000560 K3 - 3793 55214 816 0.0002482 K3 - 3658 55205 929 0.0000546 K5 - 3659 55181 948 -0.0000927 K5 - 3736 55214 165 -0.0001912 K5 - 3659 55181 44 0.0001128 K5 - 3851 55302 374 -0.0005211 K5 - 3853 55268 961 -0.0001477 K5 - 3660 55209 474 0.0000455 K5 - 3655 55240 798 0.0001778 K5 - 3655 55240 364 0.0001077 K5 - 3751 55234 736 -0.0000337 K5 - 3665 55247 472 -0.0001125 K5 - 3681 55243 294 0.0000070 K5 - 3761 55272 832 0.0000278 K5 - 3760 55268 660 0.0000229 K5 - 3676 55186 48 0.0001578 K5 - 3647 55181 567 -0.0005333 K5 - 3606 55182 428 -0.0000515 K5 - 3609 55201 68 -0.0004884 K5 - 3689 55180 204 -0.0002012 K5 - 3683 55245 644 -0.0000567 K5 - 3687 55269 402 0.0000231 K7 - 3661 55212 674 -0.0001287 K7 - 3658 55205 834 0.0001029 K7 - 3664 55245 682 0.0000870 K7 - 3661 55212 1000 -0.0000390 K7 - 3874 55280 485 -0.0000046 K7 - 3588 55184 406 -0.0002458 K7 - 3678 55208 848 -0.0001400 K7 - 3782 55244 184 0.0000573 K7 - 3785 55241 56 0.0001911 K7 - 3752 55236 935 0.0000339 K7 - 3690 55182 840 0.0000873 K7 - 3859 55246 776 -0.0000425 K7 - 3695 55212 438 0.0000662 K7 - 3657 55244 714 -0.0000729 K7 - 3689 55180 156 0.0000595 K7 - 3606 55182 842 -0.0000031 K7 - 3656 55241 324 0.0000188 K7 - 3770 55234 412 0.0001206 K7 - 3693 55208 292 0.0000399 K7 - 3861 55274 652 -0.0000438 L - 3767 55214 868 0.0000677 L - 3775 55207 954 -0.0000184 L - 3639 55205 18 0.0000244 L - 3767 55214 346 -0.0000387 L - 3681 55243 220 -0.0000257 L - 3772 55277 622 0.0001427 L - 3736 55214 750 0.0000298 L - 3861 55274 980 0.0000060 L - 3692 55186 322 0.0001219 L - 3860 55269 766 -0.0000315 L - 3780 55240 782 0.0000394 L - 3829 55300 287 -0.0001087 L - 3774 55244 14 0.0001153 L - 3681 55243 876 -0.0000742 L - 3804 55267 771 -0.0000304 L - 3860 55269 807 -0.0000817 L - 3760 55268 340 -0.0001398 L - 3804 55267 26 0.0000246 L - 3744 55209 449 -0.0019552 L - 3587 55182 564 -0.0000313 L - 3679 55209 10 -0.0000318 L - 3859 55246 106 -0.0000233 L - 3744 55209 876 -0.0000701 L - 3655 55240 904 0.0002035 L - 3606 55182 386 -0.0001325 L - 3790 55208 112 -0.0019541 L - 3760 55268 382 -0.0000259 L - 3696 55277 233 -0.0000402 M0V - 3589 55186 640 -0.0007101 M0V - 3793 55214 557 0.0002340 M0V - 3833 55290 590 0.0001749 M0V - 3804 55267 954 -0.0000566 M0V - 3590 55201 430 -0.0000111 M0V - 3936 55302 274 0.0000118 M0V - 3751 55234 457 0.0002357 M0V - 3785 55273 877 0.0005926 M0V - 3859 55246 266 -0.0007015 M0V - 3590 55201 521 0.0000517 M0V - 3832 55289 78 0.0001521 M0V - 3936 55302 482 -0.0001284 M0V - 3804 55267 430 0.0003908 M0V - 3751 55234 531 -0.0003107 M0V - 3785 55273 355 0.0000281 M0V - 3590 55201 414 0.0000091 M0V - 3659 55181 407 0.0000400 M0V - 3589 55186 861 0.0001210 M0V - 3681 55243 752 -0.0001313 M0V - 3661 55212 787 0.0000999 M1 - 3662 55182 474 -0.0000031 M1 - 3692 55186 716 -0.0002008 M1 - 3662 55182 2 -0.0001052 M1 - 3816 55272 518 0.0001000 M1 - 3785 55273 511 -0.0001896 M1 - 3688 55273 289 0.0000957 M1 - 3774 55244 711 -0.0000642 M1 - 3766 55213 219 0.0003434 M1 - 3863 55280 267 -0.0002449 M1 - 3751 55234 619 0.0000071 M1 - 3685 55261 735 -0.0000277 M1 - 3656 55241 366 -0.0001197 M1 - 3816 55272 674 -0.0001466 M1 - 3833 55290 247 0.0003947 M1 - 3772 55277 164 -0.0000135 M1 - 3586 55181 683 -0.0002768 M1 - 3679 55209 733 -0.0000683 M1 - 3694 55209 120 -0.0001276 M1 - 3804 55267 664 -0.0006639 M1 - 3854 55247 702 -0.0002447 M1 - 3694 55209 139 0.0000263 M2 - 3662 55182 53 0.0001072 M2 - 3778 55213 537 0.0000313 M2 - 3692 55186 853 -0.0000164 M2 - 3661 55212 631 -0.0000167 M2 - 3587 55182 822 -0.0000115 M2 - 3658 55205 77 0.0000269 M2 - 3680 55210 909 -0.0000721 M2 - 3691 55274 127 0.0000360 M2 - 3860 55269 903 -0.0000648 M2 - 3693 55208 333 -0.0002830 M2 - 3863 55280 194 -0.0002641 M2 - 3661 55212 669 -0.0000489 M2 - 3680 55210 427 0.0000537 M2 - 3695 55212 421 -0.0002897 M2 - 3587 55182 311 -0.0001717 M2 - 3686 55268 604 -0.0002947 M2 - 3656 55241 687 0.0001597 M2 - 3688 55273 677 -0.0000983 M2 - 3678 55208 410 -0.0001317 M2 - 3685 55261 193 0.0000821 M2V - 3745 55234 744 -0.0005124 M2V - 3687 55269 756 -0.0000998 M2V - 3663 55176 675 0.0001162 M2V - 3689 55180 218 -0.0002606 M2V - 3767 55214 582 0.0000633 M2V - 3659 55181 577 0.0001505 M2V - 3589 55186 588 -0.0006595 M2V - 3663 55176 327 0.0000965 M2V - 3663 55176 235 -0.0003258 M2V - 3675 55183 890 -0.0009352 M2V - 3695 55212 442 -0.0002429 M2V - 3785 55241 452 0.0003265 M2V - 3586 55181 858 -0.0000109 M2V - 3665 55247 145 0.0001182 M3 - 3774 55244 231 0.0000378 M3 - 3776 55209 773 0.0000115 M3 - 3639 55205 132 0.0001794 M3 - 3688 55273 263 -0.0001102 M3 - 3678 55208 629 -0.0000901 M3 - 3673 55178 439 -0.0000622 M3 - 3659 55181 875 0.0004577 M3 - 3745 55234 835 0.0000841 M3 - 3833 55290 937 0.0002246 M3 - 3673 55178 281 0.0001483 M3 - 3783 55246 8 0.0003709 M3 - 3683 55178 813 0.0000425 M3 - 3774 55244 815 0.0000306 M3 - 3843 55278 121 0.0002561 M3 - 3677 55205 102 0.0000375 M3 - 3751 55234 82 0.0003820 M3 - 3661 55212 625 -0.0000403 M3 - 3788 55246 359 0.0002210 M3 - 3659 55181 759 -0.0000121 M3 - 3651 55259 781 -0.0000278 M3 - 3590 55201 288 -0.0000085 M4 - 3589 55186 616 0.0000315 M4 - 3769 55240 766 -0.0001010 M4 - 3690 55182 613 0.0000814 M4 - 3767 55214 387 0.0003323 M4 - 3606 55182 26 -0.0000608 M4 - 3779 55222 171 0.0000087 M4 - 3744 55209 434 -0.0000758 M4 - 3609 55201 994 0.0000867 M4 - 3760 55268 315 -0.0001374 M4 - 3667 55186 323 -0.0001159 M4 - 3683 55245 283 0.0000179 M4 - 3682 55244 410 -0.0004501 M4 - 3766 55213 87 0.0000553 M4 - 3590 55201 640 -0.0000395 M4 - 3664 55245 108 -0.0000553 M4 - 3854 55247 13 -0.0000940 M4 - 3589 55186 468 0.0001121 M4 - 3745 55234 336 -0.0001030 M4 - 3659 55181 863 0.0001690 M4 - 3735 55209 940 0.0000581 M5 - 3735 55209 267 -0.0000284 M5 - 3606 55182 540 -0.0000070 M5 - 3656 55241 193 -0.0001020 M5 - 3587 55182 528 0.0000351 M5 - 3589 55186 2 0.0000400 M5 - 3863 55280 248 -0.0001008 M5 - 3590 55201 74 0.0000089 M5 - 3744 55209 716 -0.0000661 M5 - 3587 55182 170 0.0001255 M5 - 3587 55182 86 -0.0000705 M5 - 3735 55209 164 0.0000847 M5 - 3735 55209 976 0.0000331 M5 - 3588 55184 436 0.0000903 M5 - 3870 55273 336 0.0001059 M5 - 3639 55205 758 0.0000657 M5 - 3735 55209 990 0.0000895 M5 - 3589 55186 410 0.0000980 M5 - 3615 55208 848 0.0000470 M5 - 3833 55290 898 0.0002636 M5 - 3793 55214 424 -0.0000259 M6 - 3860 55269 722 -0.0001629 M6 - 3651 55259 466 0.0000313 M6 - 3860 55269 640 0.0000167 M6 - 3854 55247 930 -0.0000509 M6 - 3744 55209 379 0.0000133 M6 - 3590 55201 358 0.0000850 M6 - 3589 55186 561 0.0001084 M6 - 3651 55259 332 0.0000677 M6 - 3870 55273 124 0.0000238 M6 - 3843 55278 17 -0.0001575 M6 - 3870 55273 768 -0.0000101 M6 - 3775 55207 496 -0.0000127 M6 - 3858 55273 330 -0.0000537 M6 - 3660 55209 952 0.0001963 M6 - 3606 55182 943 -0.0001738 M6 - 3651 55259 132 -0.0000647 M6 - 3615 55179 418 0.0000384 M6 - 3775 55207 646 0.0000601 M6 - 3793 55214 992 0.0000877 M6 - 3689 55180 874 0.0001399 M7 - 3650 55244 475 -0.0000295 M7 - 3664 55245 490 -0.0002868 M7 - 3805 55269 654 -0.0000166 M7 - 3862 55276 848 -0.0000031 M7 - 3744 55209 724 0.0000186 M7 - 3588 55184 178 0.0001522 M7 - 3805 55269 865 0.0001084 M7 - 3684 55246 694 -0.0000585 M7 - 3870 55273 486 0.0001366 M7 - 3863 55280 580 -0.0000068 M7 - 3651 55259 558 0.0001473 M7 - 3804 55267 990 0.0001996 M7 - 3694 55209 752 0.0000768 M7 - 3651 55259 442 0.0000551 M7 - 3781 55243 538 0.0000883 M7 - 3870 55273 544 -0.0000675 M7 - 3793 55214 714 0.0000458 M7 - 3615 55179 428 0.0000240 M7 - 3587 55182 134 0.0001622 M7 - 3647 55241 575 0.0001626 M8 - 3694 55209 629 0.0002456 M8 - 3857 55272 290 -0.0000639 M8 - 3832 55289 372 0.0001099 M8 - 3852 55243 554 -0.0000304 M8 - 3780 55240 220 -0.0000482 M8 - 3781 55243 124 0.0002657 M8 - 3862 55276 986 0.0001496 M8 - 3804 55267 328 0.0001527 M8 - 3936 55302 440 0.0000244 M8 - 3855 55268 212 0.0000823 M8 - 3793 55214 40 0.0000841 M8 - 3665 55247 984 0.0000480 M8 - 3775 55207 970 -0.0000037 M8 - 3859 55246 652 0.0000480 M8 - 3858 55273 252 0.0000242 M8 - 3788 55246 914 0.0000833 M8 - 3673 55178 814 0.0001077 M8 - 3858 55273 216 0.0000079 M8 - 3870 55273 708 0.0000135 M8 - 3655 55240 518 -0.0003092 O - 3655 55240 512 -0.0001850 O - 3665 55247 624 0.0000879 O - 3805 55269 380 -0.0001098 O - 3735 55209 829 -0.0000798 O - 3674 55182 974 0.0000210 O - 3769 55240 816 0.0005179 O - 3858 55273 856 -0.0002564 OB - 3853 55268 212 -0.0002425 OB - 3673 55178 102 -0.0001979 OB - 3869 55273 780 0.0001334 OB - 3663 55176 370 0.0000063 OB - 3833 55290 322 0.0000698 OB - 3767 55214 6 0.0001019 OB - 3658 55205 602 -0.0001487 OB - 3781 55243 856 -0.0000158 OB - 3862 55276 622 -0.0000677 OB - 3794 55241 156 -0.0000340 OB - 3639 55205 246 0.0000053 OB - 3870 55273 772 0.0001150 OB - 3804 55267 196 0.0003211 OB - 3779 55222 908 0.0004132 OB - 3782 55244 745 0.0001252 OB - 3663 55176 874 0.0000345 OB - 3782 55244 982 0.0001487 OB - 3775 55207 794 -0.0000140 OB - 3849 55274 64 0.0000784 OB - 3694 55209 630 -0.0002440 WD - 3853 55268 793 -0.0004059 WD - 3679 55209 311 -0.0001098 WD - 3782 55244 54 0.0000851 WD - 3790 55208 812 0.0001055 WD - 3657 55244 154 0.0005162 WD - 3854 55247 666 -0.0001509 WD - 3615 55208 810 -0.0001538 WD - 3745 55234 104 0.0001303 WD - 3658 55205 594 0.0000123 WD - 3752 55236 696 -0.0002229 WD - 3760 55268 446 -0.0001921 WD - 3805 55269 882 -0.0000763 WD - 3853 55268 496 0.0002610 WD - 3936 55302 689 0.0000325 WD - 3684 55246 420 0.0000116 WD - 3855 55268 20 -0.0002203 WD - 3770 55234 900 -0.0000562 WD - 3655 55240 898 -0.0002688 WD - 3783 55246 238 -0.0001506 WD - 3696 55277 194 0.0040370 WDmagnetic - 3694 55209 954 -0.0010919 WDmagnetic - 3852 55243 676 -0.0010623 WDmagnetic - 3663 55176 802 0.0017269 WDmagnetic - 3862 55276 750 0.0026647 WDmagnetic - 3660 55209 322 0.0023477 WDmagnetic - 3859 55246 860 -0.0004204 WDmagnetic - 3767 55214 562 -0.0017315 WDmagnetic - 3779 55222 424 -0.0000348 WDmagnetic diff --git a/pro/templates/pca_cvstar_boss.pro b/pro/templates/pca_cvstar_boss.pro deleted file mode 100644 index cb7e8c0eb..000000000 --- a/pro/templates/pca_cvstar_boss.pro +++ /dev/null @@ -1,152 +0,0 @@ -;------------------------------------------------------------------------------ -pro pca_cvstar_boss -; Written by Schlegel (right?) -; Hacked up a bit from pca_cvstar by Bolton (U. Utah) for BOSS: -; - nkeep = 2 rather than 3 -; - run2d/run1d hard-coded along with other stuff -; - plotting commands removed -; - input & output filenames changed -; 2011-April - - wavemin = 0. - wavemax = 0. - snmax = 100 - niter = 10 -; nkeep = 3 -; minuse = 3 - nkeep = 2 - minuse = 2 - run2d = 'v5_4_35' - run1d = 'v5_4_35' - - get_juldate, jd - mjdstr = string(long(jd-2400000L), format='(i5)') - outfile = 'spBOSSEigenCVstar-' + mjdstr + '.fits' -; plotfile = 'spBOSSEigenCVstar-' + mjdstr + '.ps' - -; dfpsplot, plotfile, /color, /landscape -; colorvec = ['default', 'red', 'green', 'blue'] - - ;---------- - ; Read the input spectra - - eigenfile = filepath('eigeninput_cvstar_boss.dat', $ - root_dir=getenv('IDLSPEC2D_DIR'), subdirectory='templates') -; root_dir='.') -; djs_readcol, eigenfile, skip=2, plate, mjd, fiber, zfit, subclass, $ -; format='(L,L,L,D,A)' - djs_readcol, eigenfile, skip=0, plate, mjd, fiber, zfit, $ - format='(L,L,L,D)' -; indx = where(strmid(subclass,0,1) EQ 'CV') -; plate = plate[indx] -; mjd = mjd[indx] -; fiber = fiber[indx] -; zfit = zfit[indx] -; subclass = subclass[indx] - - readspec, plate, fiber, mjd=mjd, flux=objflux, invvar=objivar, $ - andmask=andmask, ormask=ormask, loglam=objloglam, plugmap=plugmap, $ - run2d=run2d, run1d=run1d - - ;---------- - ; Insist that all of the requested spectra exist - - imissing = where(plugmap.fiberid EQ 0, nmissing) - if (nmissing GT 0) then begin - for i=0, nmissing-1 do $ - print, 'Missing plate=', slist[imissing[i]].plate, $ - ' mjd=', slist[imissing[i]].mjd, $ - ' fiber=', slist[imissing[i]].fiberid - message, string(nmissing) + ' missing object(s)' - endif - - ;---------- - ; Do not fit where the spectrum may be dominated by sky-sub residuals. - - objivar = skymask(objivar, andmask, ormask) -andmask = 0 ; Free memory -ormask = 0 ; Free memory - - nobj = (size(objflux, /dimens))[1] - objdloglam = objloglam[1] - objloglam[0] - - if (keyword_set(snmax)) then begin - ifix = where(objflux^2 * objivar GT snmax^2) - if (ifix[0] NE -1) then objivar[ifix] = (snmax/objflux[ifix])^2 - endif - - ;---------- - ; Do PCA solution - - pcaflux = pca_solve(objflux, objivar, objloglam, zfit, $ - wavemin=wavemin, wavemax=wavemax, $ - niter=niter, nkeep=nkeep, newloglam=newloglam, eigenval=eigenval, $ - usemask=usemask, acoeff=acoeff) - pcaflux = float(pcaflux) - -;readspec, plate, fiber, mjd=mjd, plugmap=plugmap -;readspec, plate, fiber, mjd=mjd, zans=zans -;aratio = acoeff[1,*]/acoeff[0,*] -;ug = plugmap.mag[0] - plugmap.mag[1] -;gr = plugmap.mag[1] - plugmap.mag[2] -;ri = plugmap.mag[2] - plugmap.mag[3] -;iz = plugmap.mag[3] - plugmap.mag[4] -;plot, gr, aratio, ps=4 -;stop - - ;---------- - ; Fill in bad data with a running median of good data - - qgood = usemask GE minuse - igood = where(qgood, ngood) - ibad = where(qgood EQ 0, nbad) - medflux = 0 * pcaflux - if (nbad GT 0) then begin - for i=0, nkeep-1 do begin - medflux[igood,i] = $ - djs_median(pcaflux[igood,i], width=51, boundary='nearest') - medflux[*,i] = djs_maskinterp(medflux[*,i], qgood EQ 0, /const) - endfor - pcaflux[ibad,*] = medflux[ibad,*] - endif - - ;---------- - ; Make plots - -; djs_plot, 10^newloglam, pcaflux[*,0], $ -; xrange=minmax(10^newloglam), yrange=minmax(pcaflux), /xstyle, $ -; color=colorvec[0], $ -; xtitle='Wavelength [Ang]', ytitle='Flux [arbitrary units]', $ -; title='CV Stars: Eigenspectra' -; for i=1, nkeep-1 do begin -; djs_oplot, 10^newloglam, pcaflux[*,i], $ -; color=colorvec[i MOD n_elements(colorvec)] -; endfor - -; aratio10 = acoeff[1,*] / acoeff[0,*] -; aratio20 = acoeff[2,*] / acoeff[0,*] -; djs_plot, aratio10, aratio20, /nodata, $ -; xtitle='Eigenvalue Ratio (a_1/a_0)', $ -; ytitle='Eigenvalue Ratio (a_2/a_0)', $ -; title='CV Stars: Eigenvalue Ratios' -; for j=0, n_elements(aratio10)-1 do $ -; djs_xyouts, aratio10[j], aratio20[j], align=0.5, $ -; string(plate[j], fiber[j], format='(i4,"-",i3)'), $ -; color=colorvec[j MOD n_elements(colorvec)] - - ;---------- - ; Write output file - - sxaddpar, hdr, 'OBJECT', 'STAR_CV' - sxaddpar, hdr, 'COEFF0', newloglam[0] - sxaddpar, hdr, 'COEFF1', objdloglam - for i=0, n_elements(eigenval)-1 do $ - sxaddpar, hdr, 'EIGEN'+strtrim(string(i),1), eigenval[i] - - mwrfits, pcaflux, outfile, hdr, /create - -; dfpsclose - - return -end -;------------------------------------------------------------------------------ diff --git a/pro/templates/pca_gal_dev.pro b/pro/templates/pca_gal_dev.pro deleted file mode 100644 index 17741f8c7..000000000 --- a/pro/templates/pca_gal_dev.pro +++ /dev/null @@ -1,188 +0,0 @@ -;+ -; -; NAME: -; pca_gal_dev -; -; PURPOSE: -; Developmental PCA of BOSS Galaxies -; -; WRITTEN: -; bolton@utah 2010may -; -;- - -pro mlpca_gal_dev, infile - -setenv, 'RUN2D=v5_4_9' -setenv, 'RUN1D=v5_4_9' - -; The uber-deep plate: -plate = 3851 -mjd = 55298 - -; Get all sensible galaxies: -readspec, plate, mjd=mjd, zans=zans -nobj = n_elements(zans) -useit = replicate(1B, nobj) -; Things to mask following inspection, as detailed above: -maskid = [119,149,151,152,248,315,426,431,433, $ - 213, 293, 168]-1 -useit[maskid] = 0B -idx = where(useit and (strtrim(zans.objtype,2) eq 'GALAXY') $ - and (strtrim(zans.class,2) eq 'GALAXY'), ngal) -zans = zans[idx] - -; Get some low-z galaxies as well: - -infile = 'mlpcainput_gal_01.txt' - -readcol, infile, fplate, fmjd, ffiberid, fz, format='L,L,L,F', comment='#' - - -i_lo = 0 -i_hi = 125 - - -fplate = fplate[i_lo:i_hi] -fmjd = fmjd[i_lo:i_hi] -ffiberid = ffiberid[i_lo:i_hi] -fz = fz[i_lo:i_hi] - -plate = [fplate, zans.plate] -fiberid = [ffiberid, zans.fiberid] -mjd = [fmjd, zans.mjd] -z = [fz, zans.z] - - -nobj = n_elements(plate) - -readspec, plate, fiberid, mjd=mjd, flux=flux, invvar=invvar, $ - loglam=loglam, zans=zans, /align, /silent - -; B-spline to anything short of 3700Ang observed or 3400Ang rest: -; (this didn't really work right) -;idx = 10L * lindgen(50) + 5L - -;plate = plate[idx] -;mjd = mjd[idx] -;fiberid = fiberid[idx] -;z = z[idx] - -;@junkbuffer.pro - -;dloglam = loglam[1] - loglam[0] -;bluefitlim = alog10(((1. + z) * 3400.) > 3700.) -;bkspace = 30 * dloglam -;flux_sm = flux -;for i = 0L, nobj-1 do begin & $ -; pmax = max(where(loglam lt bluefitlim[i], nwh)) & $ -; if (nwh gt 0) then begin & $ -; sset = bspline_iterfit(loglam[0:pmax], flux[0:pmax,i], nord=3, $ -; invvar=invvar[0:pmax,i], bkspace=bkspace, yfit=yfit, /silent) & $ -; flux_sm[0:pmax,i] = yfit & $ -; endif & $ -;endfor - -; Observed and rest-frame smoothing: - -flux_sm2 = flux -invvar_sm2 = invvar -nsmooth = 31 -npix = n_elements(loglam) -for i = 0L, nobj-1 do begin & $ - numer = smooth(flux[*,i] * (invvar[*,i] gt 0), nsmooth) & $ - denom = smooth(float(invvar[*,i] gt 0), nsmooth) > 1. & $ - flux_sm2[*,i] = numer / denom & $ - gmin = min(where(invvar[*,i] gt 0.)) + nsmooth/2 & $ - gmax = max(where(invvar[*,i] gt 0.)) - nsmooth/2 & $ - invvar_sm2[0:gmin,i] = 0. & $ - invvar_sm2[gmax:npix-1,i] = 0. & $ -endfor - -flux_sm = flux -bluefitlim = alog10(((1. + z) * 3400.) > 3700.) -;bluefitlim = replicate(alog10(3700.), nobj) -redfitlim = replicate(alog10(9700.), nobj) -for i = 0L, nobj-1 do begin & $ - pmax = max(where(loglam lt bluefitlim[i], nwh)) & $ - if (nwh gt 0) then flux_sm[0:pmax,i] = flux_sm2[0:pmax,i] & $ - pmin = min(where(loglam gt redfitlim[i], nwh)) & $ - if (nwh gt 0) then flux_sm[pmin:npix-1,i] = flux_sm2[pmin:npix-1,i] & $ -endfor - - -; Get everything aligned in rest-frame wavelength: -align_rest, in_loglam=loglam, in_flux=flux_sm, in_invvar=invvar_sm2, z=z, $ - out_loglam=rest_loglam, out_flux=rest_flux, out_invvar=rest_ivar - - -ngoodspec = total(rest_ivar gt 0., 2) -mingoodspec = 20 -p_lo = min(where(ngoodspec ge mingoodspec)) -p_hi = max(where(ngoodspec ge mingoodspec)) -rest_flux = rest_flux[p_lo:p_hi,*] -rest_ivar = rest_ivar[p_lo:p_hi,*] -rest_loglam = rest_loglam[p_lo:p_hi] - -; Cap the signal to noise so we don't get bossed around by low-z -; galaxies: - -;snrmax = 10. -;snr = abs(rest_flux) * sqrt(rest_ivar) -;snrfact = snr / snrmax -;rest_ivar = rest_ivar / (snrfact > 1.)^2 - -; Determine practical convergence as when total chi^2 (in the well-fit -; scenario) changes by less than, say, 0.1 between the two steps of -; the MLPCA iteration process. -;ndof = total(rest_ivar gt 0) -;convtest = 0.1 / float(ndof) - -; Somewhat heuristic: -convtest = 1.d-6 - -; Do the ML-PCA analysis: -galtempset = bolton_mlpca(objflux=rest_flux, objivar=rest_ivar, coeffs=coeffs, convtest=convtest, maxiter=25) - -; Pad it out to 1800 angstroms rest with constant replication: -dloglam = rest_loglam[1] - rest_loglam[0] -n_new = round((rest_loglam[0] - alog10(1800.)) / dloglam) - -new_loglam = [reverse(-dloglam * (dindgen(n_new) + 1.) + rest_loglam[0]), rest_loglam] - - -n_mean = 15L -mean_vec = total(galtempset[0:n_mean-1,*], 1) / float(n_mean) -new_tempset = [replicate(1.d0, n_new) # mean_vec, galtempset] - -;res_gal = pca_solve(rest_flux, rest_ivar, acoeff=acoeff, nkeep=5) - -; The models that come out of pca_solve don't seem to fit as well in -; many cases as those from bolton_mlpca. Is this an under-convergence issue? - - -;; Generate model & inspect, if running via command line: -;model = galtempset # coeffs -;model = res_gal # acoeff -;i = -1L -;i++ & splot, rest_loglam, rest_flux[*,i] * (rest_ivar[*,i] gt 0) & soplot, rest_loglam, model[*,i], color=3 - -; Copied from pca_gal: -get_juldate, jd -mjdstr = STRING(LONG(jd-2400000L), FORMAT='(I5)') -outfile = 'spMLpcaGal-' + mjdstr + '-01.fits' -;outfile = 'spEigenGal-' + mjdstr + '.fits' -sxaddpar, hdr, 'OBJECT', 'GALAXY' -;sxaddpar, hdr, 'COEFF0', rest_loglam[0] -;sxaddpar, hdr, 'COEFF1', rest_loglam[1] - rest_loglam[0] -sxaddpar, hdr, 'COEFF0', new_loglam[0] -sxaddpar, hdr, 'COEFF1', new_loglam[1] - new_loglam[0] -sxaddpar, hdr, 'IDLUTILS', idlutils_version(), 'Version of idlutils' -sxaddpar, hdr, 'SPEC2D', idlspec2d_version(), 'Version of idlspec2d' -;mwrfits, float(galtempset), outfile, hdr, /create -mwrfits, float(new_tempset), outfile, hdr, /create -;mwrfits, float(res_gal), outfile, hdr, /create - - -return -end diff --git a/pro/templates/pca_qso_dev.pro b/pro/templates/pca_qso_dev.pro deleted file mode 100644 index 1fb239d8a..000000000 --- a/pro/templates/pca_qso_dev.pro +++ /dev/null @@ -1,100 +0,0 @@ -;+ -; -; NAME: -; pca_qso_dev -; -; PURPOSE: -; Developmental PCA routine for BOSS QSOs -; -; WRITTEN: -; bolton@utah 2010may -; -;- - -pro pca_qso_dev, infile - -; infile = 'mlpcainput_qso_01.txt' -; infile = 'mlpcainput_qso_02.txt' -infile = 'mlpcainput_qso_combined.txt' - -readcol, infile, plate, mjd, fiberid, z, format='L,L,L,F', comment='#' - -nobj = n_elements(plate) - -readspec, plate, fiberid, mjd=mjd, flux=flux, invvar=invvar, $ - loglam=loglam, zans=zans, /align, /silent - -; res_qso = pca_solve(flux, invvar, loglam, z, nkeep=5, acoeff=acoeff) - -; pca_solve Doing ths straight away gives a chunky output... - -; The smoothing that we're using: -flux_sm2 = flux -invvar_sm2 = invvar -nsmooth = 31 -npix = n_elements(loglam) -for i = 0L, nobj-1 do begin & $ - numer = smooth(flux[*,i] * (invvar[*,i] gt 0), nsmooth) & $ - denom = smooth(float(invvar[*,i] gt 0), nsmooth) > 1. & $ - flux_sm2[*,i] = numer / denom & $ - gmin = min(where(invvar[*,i] gt 0.)) + nsmooth/2 & $ - gmax = max(where(invvar[*,i] gt 0.)) - nsmooth/2 & $ - invvar_sm2[0:gmin,i] = 0. & $ - invvar_sm2[gmax:npix-1,i] = 0. & $ -endfor - -flux_sm = flux -bluefitlim = alog10(((1. + z) * 800.) > 3600.) -;bluefitlim = replicate(alog10(3700.), nobj) -;redfitlim = replicate(alog10(9700.), nobj) -for i = 0L, nobj-1 do begin & $ - pmax = max(where(loglam lt bluefitlim[i], nwh)) & $ - if (nwh gt 0) then flux_sm[0:pmax,i] = flux_sm2[0:pmax,i] & $ -; pmin = min(where(loglam gt redfitlim[i], nwh)) & $ -; if (nwh gt 0) then flux_sm[pmin:npix-1,i] = flux_sm2[pmin:npix-1,i] & $ -endfor - -; Get everything aligned in rest-frame wavelength: -align_rest, in_loglam=loglam, in_flux=flux_sm, in_invvar=invvar_sm2, z=z, $ - out_loglam=rest_loglam, out_flux=rest_flux, out_invvar=rest_ivar - -; Make sure we have enough to work with: -;ngoodspec = total(rest_ivar gt 0., 2) -;mingoodspec = 10 -;p_lo = min(where(ngoodspec ge mingoodspec)) -;p_hi = max(where(ngoodspec ge mingoodspec)) -;rest_flux = rest_flux[p_lo:p_hi,*] -;rest_ivar = rest_ivar[p_lo:p_hi,*] -;rest_loglam = rest_loglam[p_lo:p_hi] - -; Determine practical convergence as when total chi^2 (in the well-fit -; scenario) changes by less than, say, 0.1 between the two step of -; the MLPCA iteration process. -;ndof = total(rest_ivar gt 0) -;convtest = 0.1 / float(ndof) - -;qsotempset = bolton_mlpca(objflux=rest_flux, objivar=rest_ivar, coeffs=coeffs, convtest=convtest, maxiter=10) - -res_qso = pca_solve(rest_flux, rest_ivar, nkeep=5, acoeff=acoeff) - -;; Generate model & inspect, if running via command line: -;model = qsotempset # coeffs -;model = res_qso # acoeff -;i = -1L -;i++ & splot, rest_loglam, rest_flux[*,i] * (rest_ivar[*,i] gt 0) & soplot, rest_loglam, model[*,i], color=3 - -; Copied from pca_gal: -get_juldate, jd -mjdstr = STRING(LONG(jd-2400000L), FORMAT='(I5)') -outfile = 'spMLpcaQSO-' + mjdstr + '-01.fits' -;outfile = 'spEigenQSO-' + mjdstr + '.fits' -sxaddpar, hdr, 'OBJECT', 'QSO' -sxaddpar, hdr, 'COEFF0', rest_loglam[0] -sxaddpar, hdr, 'COEFF1', rest_loglam[1] - rest_loglam[0] -sxaddpar, hdr, 'IDLUTILS', idlutils_version(), 'Version of idlutils' -sxaddpar, hdr, 'SPEC2D', idlspec2d_version(), 'Version of idlspec2d' -;mwrfits, float(qsotempset), outfile, hdr, /create -mwrfits, float(res_qso), outfile, hdr, /create - -return -end diff --git a/pro/templates/sky_residual_pca.fits b/pro/templates/sky_residual_pca.fits deleted file mode 100644 index 1a00d6f6f..000000000 Binary files a/pro/templates/sky_residual_pca.fits and /dev/null differ diff --git a/pro/templates/spEigenQSO-EMPCA-cleaned.fits b/pro/templates/spEigenQSO-EMPCA-cleaned.fits deleted file mode 100644 index fe0f0177f..000000000 Binary files a/pro/templates/spEigenQSO-EMPCA-cleaned.fits and /dev/null differ diff --git a/pro/testsuite/check_cmass_changes.scr.pro b/pro/testsuite/check_cmass_changes.scr.pro deleted file mode 100644 index 4f9e8d7d8..000000000 --- a/pro/testsuite/check_cmass_changes.scr.pro +++ /dev/null @@ -1,94 +0,0 @@ -; -; check_cmass_changes.scr.pro -; -; script to check changed CMASS redshifts. -; -; bolton@utah nov 2012 -; - -if (not keyword_set(v_old)) then v_old = 'v5_5_12' -if (not keyword_set(v_new)) then v_new = 'v5_6_5' - -; The two spAll files: -f_old = getenv('BOSS_SPECTRO_REDUX') + '/' $ - + v_old + '/spAll-' + v_old + '.fits' -f_new = getenv('BOSS_SPECTRO_REDUX') + '/' $ - + v_new + '/spAll-' + v_new + '.fits' - -; columns: -cols = ['plate', 'mjd', 'fiberid', $ - 'plug_ra', 'plug_dec', 'boss_target1', $ - 'run2d', 'run1d', 'class', 'z', 'zwarning', $ - 'class_noqso', 'z_noqso', 'zwarning_noqso'] - -sp_old = hogg_mrdfits(f_old, 1, columns=cols) -sp_new = hogg_mrdfits(f_new, 1, columns=cols) - -match_spall, sp_old, sp_new, m_old, m_new - -print, minmax(sp_new[m_new].plate - sp_old[m_old].plate) -; 0 0 -print, minmax(sp_new[m_new].mjd - sp_old[m_old].mjd) -; 0 0 -print, minmax(sp_new[m_new].fiberid - sp_old[m_old].fiberid) -; 0 0 - -sp_old = sp_old[m_old] -sp_new = sp_new[m_new] - -cmass_val = sdss_flagval('boss_target1', 'gal_cmass') -qso_val = sdss_flagval('boss_target1', 'qso_core_main') or $ - sdss_flagval('boss_target1', 'qso_bonus_main') - -;;; Galaxies -dz = 0.001 -is_cmass = ((sp_old.boss_target1 and cmass_val) gt 0) and $ - ((sp_new.boss_target1 and cmass_val) gt 0) -is_goodold = (sp_old.zwarning_noqso eq 0) -is_goodnew = (sp_new.zwarning_noqso eq 0) -is_goodboth = (sp_old.zwarning_noqso eq 0) and $ - (sp_new.zwarning_noqso eq 0) -is_zdiff = (abs(sp_new.z_noqso - sp_old.z_noqso) gt dz) - -;- Changed redshift -print, total(is_cmass * is_goodboth) -; 667155 -print, total(is_cmass * is_goodboth * is_zdiff) / total(is_cmass * is_goodboth) -; 0.000197855 - -;- GOOD to BAD -ngood2bad = total(is_cmass * is_goodold * (1-is_goodnew)) -ngood = total(is_cmass * is_goodold) -print, ngood2bad, ngood, ngood2bad/ngood -; 1377.00 668532. 0.00205974 - -;- BAD to GOOD -nbad2good = total(is_cmass * (1-is_goodold) * is_goodnew) -nbad = total(is_cmass * (1-is_goodold)) -print, nbad2good, nbad, nbad2good/nbad -; 1638.00 20200.0 0.0810891 - - -;;; QSOs -is_qso = ((sp_old.boss_target1 and qso_val) gt 0) -is_goodboth_qso = (sp_old.zwarning eq 0) and (sp_new.zwarning eq 0) -is_zdiff_qso = (abs(sp_new.z - sp_old.z) gt dz) - -print, total(is_qso * is_goodboth_qso) -; 229047 -print, total(is_qso * is_goodboth_qso * is_zdiff_qso) / total(is_qso * is_goodboth_qso) -; 0.0130410 - -; GOOD to BAD -ngood2bad = total(is_qso * is_goodold * (1-is_goodnew)) -ngood = total(is_qso * is_goodold) -print, ngood2bad, ngood, ngood2bad/ngood -; 8014.00 170532. 0.0469941 - -;- BAD to GOOD -nbad2good = total(is_qso * (1-is_goodold) * is_goodnew) -nbad = total(is_qso * (1-is_goodold)) -print, nbad2good, nbad, nbad2good/nbad -; 8307.00 120636. 0.0688600 - - diff --git a/pro/testsuite/compare_dr.pro b/pro/testsuite/compare_dr.pro deleted file mode 100644 index 467327eb4..000000000 --- a/pro/testsuite/compare_dr.pro +++ /dev/null @@ -1,108 +0,0 @@ -; Compare redshifts in common between two sets of reductions -pro compare_dr_loz, sp1, sp2, indx, qgood1, qgood2 - indx = where((sp1.boss_target1 AND $ - sdss_flagval('boss_target1','GAL_LOZ')) NE 0) - qgood1 = sp1[indx].zwarning_noqso EQ 0 - qgood2 = sp2[indx].zwarning_noqso EQ 0 - return -end -pro compare_dr_cmass, sp1, sp2, indx, qgood1, qgood2 - indx = where((sp1.boss_target1 AND $ - sdss_flagval('boss_target1','GAL_CMASS')) NE 0) - qgood1 = sp1[indx].zwarning_noqso EQ 0 - qgood2 = sp2[indx].zwarning_noqso EQ 0 - return -end -pro compare_dr_qso, sp1, sp2, indx, qgood1, qgood2 - indx = where(strtrim(sp1.objtype,2) EQ 'QSO') - qgood1 = sp1[indx].zwarning EQ 0 - qgood2 = sp2[indx].zwarning EQ 0 - return -end -pro compare_dr, run1=run1, run2=run2 - if (NOT keyword_set(run1)) then run1 = 'v5_4_45' ; for DR9 - if (NOT keyword_set(run2)) then run2 = 'v5_5_12' ; for DR10 - - columns = ['plate','mjd','fiberid', $ - 'boss_target1','boss_target2','ancillary_target1', $ - 'objtype','class','subclass','class_noqso','subclass_noqso', $ - 'z','zwarning','z_noqso','zwarning_noqso'] - - ; Read the spAll files, and match them - file1 = filepath('spAll-'+run1+'.fits', $ - root_dir=getenv('BOSS_SPECTRO_REDUX'), subdir=run1) - file2 = filepath('spAll-'+run2+'.fits', $ - root_dir=getenv('BOSS_SPECTRO_REDUX'), subdir=run2) - sp1 = hogg_mrdfits(file1, 1, nchunk=20, columns=columns) - sp2 = hogg_mrdfits(file2, 1, nchunk=20, columns=columns) - n1 = n_elements(sp1) - n2 = n_elements(sp2) - iname1 = strarr(n1) - for i=0L, n1-1L do iname1[i] = $ - string(sp1[i].plate, sp1[i].mjd, sp1[i].fiberid, format='(i6.6,i5.5,i4.4)') - iname2 = strarr(n2) - for i=0L, n2-1L do iname2[i] = $ - string(sp2[i].plate, sp2[i].mjd, sp2[i].fiberid, format='(i6.6,i5.5,i4.4)') - isort1 = sort(iname1) - sp1 = sp1[isort1] - iname1 = iname1[isort1] - isort2 = sort(iname2) - sp2 = sp2[isort2] - iname2 = iname2[isort2] - ilist1 = lonarr(n1) - 1L - ilist2 = lonarr(n1) - 1L - i1 = 0L - i2 = 0L - while (i1 LT n1) do begin - if (iname1[i1] EQ iname2[i2]) then begin - ilist1[i1] = i1 - ilist2[i1] = i2 - i1++ - i2++ - endif else begin - if (iname1[i1] LT iname2[i2]) then i1++ $ - else i2++ - endelse - endwhile - ikeep = where(ilist1 NE -1) - sp1 = sp1[ilist1[ikeep]] - sp2 = sp2[ilist2[ikeep]] - - vdiff = (sp1.z - sp2.z) * 3e5 - vdiff_noqso = (sp1.z_noqso - sp2.z_noqso) * 3e5 - - compare_dr_loz, sp1, sp2, indx, qgood1, qgood2 - igood = indx[where(qgood1*qgood2)] - splog, '' - splog, n_elements(indx), ' LOWZ targets' - splog, mean(qgood1*qgood2), ' fraction good' - splog, median(vdiff_noqso[igood]), ' median vdiff' - splog, djsig(vdiff_noqso[igood]), ' rms vdiff' - splog, mean(abs(vdiff_noqso[igood]) GT 300), ' fraction changed redshift' - splog, mean(qgood1 EQ 0 AND qgood2 EQ 1), ' fraction good -> bad' - splog, mean(qgood2 EQ 0 AND qgood1 EQ 1), ' fraction bad -> good' - - compare_dr_cmass, sp1, sp2, indx, qgood1, qgood2 - igood = indx[where(qgood1*qgood2)] - splog, '' - splog, n_elements(indx), ' CMASS targets' - splog, mean(qgood1*qgood2), ' fraction good' - splog, median(vdiff_noqso[igood]), ' median vdiff' - splog, djsig(vdiff_noqso[igood]), ' rms vdiff' - splog, mean(abs(vdiff_noqso[igood]) GT 300), ' fraction changed redshift' - splog, mean(qgood1 EQ 0 AND qgood2 EQ 1), ' fraction good -> bad' - splog, mean(qgood2 EQ 0 AND qgood1 EQ 1), ' fraction bad -> good' - - compare_dr_qso, sp1, sp2, indx, qgood1, qgood2 - igood = indx[where(qgood1*qgood2)] - splog, '' - splog, n_elements(indx), ' QSO targets' - splog, mean(qgood1*qgood2), ' fraction good' - splog, median(vdiff[igood]), ' median vdiff' - splog, djsig(vdiff[igood]), ' rms vdiff' - splog, mean(abs(vdiff[igood]) GT 1500), ' fraction changed redshift' - splog, mean(qgood1 EQ 0 AND qgood2 EQ 1), ' fraction good -> bad' - splog, mean(qgood2 EQ 0 AND qgood1 EQ 1), ' fraction bad -> good' - - return -end diff --git a/pro/testsuite/match_spall.pro b/pro/testsuite/match_spall.pro deleted file mode 100644 index 4f213ad7b..000000000 --- a/pro/testsuite/match_spall.pro +++ /dev/null @@ -1,75 +0,0 @@ -;+ -; -; NAME: -; match_spall -; -; PURPOSE: -; Match two spall structure rows on common -; plate-mjd-fiberid, making the assumption -; that they are ganged sensibly by Nfib. -; -; USAGE: -; match_spall, sp1, sp2, m1, m2 [, nfib=nfib] -; -; INPUTS: -; sp1, sp2: two spAll structures with the tags -; PLATE, MJD, and FIBERID at a minimum -; nfib (optional): number of fibers per plate, -; default to 1000. -; -; OUTPUTS: -; m1, m2: matching indices such that sp1[m1] is -; a row-by-row match to sp2[m2]. -; -; WRITTEN: -; bolton@utah 2012nov -; -;- - -pro match_spall, sp1, sp2, m1, m2, nfib=nfib - -if (not keyword_set(nfib)) then nfib = 1000L - -ns1 = n_elements(sp1) -ns2 = n_elements(sp2) - -nfib = 1000L -np1 = ns1 / nfib -np2 = ns2 / nfib - -idx1 = nfib * lindgen(np1) -idx2 = nfib * lindgen(np2) - -pl1 = sp1[idx1].plate -mj1 = sp1[idx1].mjd -key1 = plate_to_string(pl1) + '-' + string(mj1, format='(i5.5)') - -pl2 = sp2[idx2].plate -mj2 = sp2[idx2].mjd -key2 = plate_to_string(pl2) + '-' + string(mj2, format='(i5.5)') - -key_uniq = [key1, key2] -key_uniq = key_uniq[sort(key_uniq)] -key_uniq = key_uniq[uniq(key_uniq)] - -n_uniq = n_elements(key_uniq) - -; Find those that are in both arrays: -inboth = replicate(0B, n_uniq) -for i = 0L, n_uniq - 1 do inboth[i] = (total(key1 eq key_uniq[i]) gt 0) and (total(key2 eq key_uniq[i]) gt 0) - -key_both = key_uniq[where(inboth)] -n_common = n_elements(key_both) - -m1 = replicate(-1L, nfib * n_common) -m2 = replicate(-1L, nfib * n_common) - -for i = 0L, n_common - 1 do begin & $ - wh1 = (where(key1 eq key_both[i]))[0] & $ - m1[nfib*i:nfib*(i+1)-1] = nfib * wh1 + lindgen(nfib) & $ - wh2 = (where(key2 eq key_both[i]))[0] & $ - m2[nfib*i:nfib*(i+1)-1] = nfib * wh2 + lindgen(nfib) & $ -endfor - -return -end diff --git a/pro/testsuite/sphoto_resid_qso.pro b/pro/testsuite/sphoto_resid_qso.pro deleted file mode 100644 index fd9d4d8cd..000000000 --- a/pro/testsuite/sphoto_resid_qso.pro +++ /dev/null @@ -1,149 +0,0 @@ -; Look at spectro-photo residuals from QSOs -; TOPDIR - Top-level directory for plate list and spectra -; RUN2D - RUN2D version for plate list and spectra -; SYNTOPDIR - Top-level directory for SYNFLUX -; SYNRUN2D - RUN2D version for SYNFLUX -; SYNRUN1D - RUN1D version for SYNFLUX -; MINFLUX - Use data only where SYNFLUX is greater than this value; -; default to 0.5 -; RLIMIT - Trim to only objects where the spectroscopic r-band -; magnitude is brighter than this; default to 20.5 -pro sphoto_resid_qso, topdir=topdir, run2d=run2d, $ - syntopdir=syntopdir, synrun2d=synrun2d, synrun1d=synrun1d, $ - minflux=minflux1, rlimit=rlimit1 - - if (keyword_set(minflux1)) then minflux = minflux1 $ - else minflux = 0.5 - if (keyword_set(rlimit1)) then rlimit = rlimit1 $ - else rlimit = 20.5 - -; Look at Bailey's new test reductions -topdir=getenv('BOSS_SPECTRO_REDUX')+'/test/boss' -run2d='v5_5_11a' -syntopdir=getenv('BOSS_SPECTRO_REDUX') -synrun2d='v5_5_11' -synrun1d='v5_5_11' - -; Look at the DR9 reductions -;topdir=getenv('BOSS_SPECTRO_REDUX') -;run2d='v5_4_45' -;syntopdir=getenv('BOSS_SPECTRO_REDUX') -;synrun2d='v5_4_45' -;synrun1d='v5_4_45' - -; Look at the DR8 reductions -;topdir='/clusterfs/riemann/raid006/dr8/common/sdss-spectro/redux' -;run2d='26' -;syntopdir=topdir -;synrun2d='26' -;synrun1d='' - - ; The plate must be good in both sets of reductions if there are two - if (run2d EQ '26') then begin - plist = mrdfits(topdir+'/plates-dr8.fits',1) - plist2 = plist - endif else begin - platelist, plist=plist, topdir=topdir, run2d=run2d - platelist, plist=plist2, topdir=syntopdir, run2d=synrun2d - endelse - maxplate = (max(plist.plate) > max(plist2.plate)) + 1 - match, plist.plate+plist.mjd*maxplate, $ - plist2.plate+plist2.mjd*maxplate, i1, i2 - igood = i1[ where(strmatch(plist[i1].platequality,'good*') $ - AND plist[i1].platesn2 GT 0 $ - AND strmatch(plist2[i2].platequality,'good*') $ - AND plist2[i2].platesn2 GT 0, ngood) ] - splog, 'Trim to ', ngood, ' good plates' - plist = plist[igood] - - readspec, topdir=syntopdir, run2d=synrun2d, run1d=synrun1d, $ - plist.plate, mjd=plist.mjd, $ - zans=zans, plug=plug - rmag = 22.5 - 2.5*alog10(zans.spectrosynflux[2]>0.1) - qq = strmatch(zans.class,'QSO*') AND zans.zwarning EQ 0 $ - AND strmatch(plug.objtype,'QSO*') AND rmag LT rlimit - - ii=where(qq,ct) - splog, 'Reading ', ct, ' objects' - readspec, zans[ii].plate, mjd=zans[ii].mjd, zans[ii].fiberid, $ - topdir=topdir, run2d=run2d, /align, $ - wave=wave, flux=flux, invvar=invvar - readspec, zans[ii].plate, mjd=zans[ii].mjd, zans[ii].fiberid, $ - topdir=syntopdir, run2d=synrun2d, run1d=synrun1d, /align, $ - wave=swave, synflux=synflux - - ; Trim to the same wavelengths if necessary - if (min(wave) NE min(swave) OR max(wave) NE max(swave)) then begin - minwave = min(wave) > min(swave) - maxwave = max(wave) < max(swave) - indx1 = where(wave GE minwave AND wave LE maxwave) - indx2 = where(swave GE minwave AND swave LE maxwave) - wave = wave[indx1] - flux = flux[indx1,*] - invvar = invvar[indx1,*] - swave = swave[indx2] - synflux = synflux[indx2,*] - endif - - ; Mask all lines within 100 Ang of our line list, and blueward of LyA - thisz = zans[ii].z - lines = yanny_readone(djs_filepath('emlines.par', $ - root_dir=getenv('IDLSPEC2D_DIR'),subdir='etc')) - wstart = lines.lambda-100 - wend = lines.lambda+100 - wstart[0]=0. ; mask everything blueward of Lyman-alpha - mask=(invvar GT 0) ; more aggressive masking??? - for i=0L, ct-1 $ - do for j=0, n_elements(lines)-1 do $ - mask[*,i] *= (wave/(thisz[i]+1) LT wstart[j] $ - OR wave/(thisz[i]+1) GT wend[j]) - - ratio = 0*wave - for i=0L, n_elements(wave)-1L do begin - djs_iterstat, flux[i,*]/(synflux[i,*]>minflux), $ - invvar=invvar[i,*]*(synflux[i,*]>minflux)^2*(synflux[i,*] GT minflux), $ - mean=mn1 - ratio[i] = mn1 - endfor - - ; Output the correction vector - datfile = 'sphoto_resid_qso-'+run2d+'.dat' - ratio_interp = djs_maskinterp(ratio, $ - finite(ratio) EQ 0 OR ratio LT 0.5 OR ratio GT 1.5, /const) - splog, filename=datfile - splog, /noname, '# Multiplicative spectro-photometry errors' - splog, /noname, '# Number of plates = ', n_elements(plist) - splog, /noname, '# Number of objects = ', n_elements(ii) - splog, /noname, '# TOPDIR =', topdir - splog, /noname, '# RUN2D =', run2d - splog, /noname, '# SYNTOPDIR =', syntopdir - splog, /noname, '# SYNRUN2D =', synrun2d - splog, /noname, '# SYNRUN1D =', synrun1d - splog, /noname, '# MINFLUX =', minflux - splog, /noname, '# RLIMIT =', rlimit - splog, /noname, '# ' - splog, /noname, '# Log(wave) Resid' - for j=0L, n_elements(wave)-1L do $ - splog, /noname, alog10(wave[j]), ratio_interp[j] - splog,/close - - ssfile = 'sphoto_resid_qso-'+run2d+'.ss' - save, file=ssfile, wave, ratio - - -;; Read the LRGs on a single plate -;readspec, 4010+lindgen(20), zans=zans2, flux=flux2, invvar=invvar2, wave=wave2, $ -; synflux=synflux2, plug=plug2, /align -;k=where(strmatch(zans2.class,'GAL*') AND zans2.zwarning EQ 0 $ -; AND strmatch(plug2.objtype,'GAL*')) -;ratio2 = 0*wave2 -;for i=0L, n_elements(wave2)-1 do begin $ -; djs_iterstat, flux2[i,k]/synflux2[i,k], $ -; invvar=invvar2[i,k]*(synflux2[i,k]>0.1)^2*(synflux2[i,k] GT 0.1), mean=mn1 & ratio2[i]=mn1 -;splot,wave,calibmed,yr=[0.9,1.1],xr=[3600,5000] -;soplot,wave2,ratio2,color='red' -;soplot,wave,calibmed,yr=[0.9,1.1],xr=[3600,5000] - -stop - return -end diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 000000000..d6d10a586 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,12 @@ +[tool.poetry] +name = "idlspec2d" +version = "v6_2_0epsilon" +description = "SDSS BOSS Data Reduction Pipeline" +authors = ["Sean Morrison "] +homepage = "https://github.com/sdss/idlspec2d" +repository = "https://github.com/sdss/idlspec2d" +documentation = "https://sdss-idlspec2d.readthedocs.org" +keywords = ["astronomy", "software", "pipeline"] +packages = [ + { include = "boss_drp", from = "python" } +] diff --git a/python/boss_drp/Flatlib/__init__.py b/python/boss_drp/Flatlib/__init__.py new file mode 100644 index 000000000..73fc3f001 --- /dev/null +++ b/python/boss_drp/Flatlib/__init__.py @@ -0,0 +1,4 @@ +from .analysis import * +from .build import * +from .plot import * +from .reduce import * diff --git a/python/boss_drp/Flatlib/analysis.py b/python/boss_drp/Flatlib/analysis.py new file mode 100644 index 000000000..eaa118698 --- /dev/null +++ b/python/boss_drp/Flatlib/analysis.py @@ -0,0 +1,481 @@ +#!/usr/bin/env python3 +from boss_drp import favicon, idlspec2d_dir +from boss_drp.prep.GetconfSummary import get_confSummary +from boss_drp.utils import chpc2html +from boss_drp.Flatlib.plot import (plot_flat, plot_raw, get_raw, build_savename, + plot_thruput_v_sextant, read_fiberAssignments, + plot_thruput_timeseries) +from jinja2 import Template + +from astropy.io import fits,ascii +from astropy.table import Table +from astropy.table import unique as tabunique +import argparse +from os import getenv, makedirs, remove +from glob import glob +import os.path as ptt +import plotly.graph_objects as go +from plotly.subplots import make_subplots +import plotly.colors as pc + +import numpy as np +import pandas as pd +import random +from matplotlib import pyplot as plt +from datetime import date, datetime +from astropy.time import Time +from pydl.pydlutils import yanny +import warnings +import bs4 +from tqdm import tqdm +today=datetime.now() + + +def ID_lowFiber(filename, save_dir, med, confFiberid, threshold=0.8, clobber=False): + if np.isnan(med).all(): + return() + makedirs(save_dir, exist_ok=True) + flagged = np.where(med < threshold) + if len(med.shape) == 1: + flagged=flagged[0] + else: + flagged=flagged[1] + flagged=np.unique(flagged) + if len(confFiberid.shape)!=1: + confFiberid = confFiberid[0] + + #flagged = flagged + 1 + flagged = np.column_stack((flagged + 1, confFiberid[flagged])) + filename=ptt.basename(filename) + filename=ptt.splitext(ptt.splitext(filename)[0])[0] + filename=filename+'_lt'+str(threshold)+'.txt' + if (not ptt.exists(ptt.join(save_dir,filename))): + np.savetxt(ptt.join(save_dir,filename), flagged, fmt='%d', delimiter=',', header='Trace,Slit') + elif clobber is True: + np.savetxt(ptt.join(save_dir,filename), flagged, fmt='%d', delimiter=',', header='Trace,Slit') + return + + + +def find_confSummary(confid, obs): + confSummary = get_confSummary(confid, obs=obs, no_remote=True, sort= True, filter=True) + return(confSummary) + +def create_att_path(obs,mjd, expsids,ccd=None, ftype='sdR', subdir=''): + #fpath=np.char.add(obs,'/'+subdir) + fpath=np.char.add(subdir,mjd) + fpath=np.char.add(fpath,'/'+ftype+'-') + if ccd is not None: fpath=np.char.add(fpath,ccd+'-') + fpath=np.char.add(fpath, expsids) + return(fpath) + +def make_beta_plots(Allflat,directory, version, obsf, meds_b, meds_r, qbad_b, qbad_r, beta_b, beta_r, fiberids, beta, dbeta, subf): + now =today.strftime("Last Updated: %a %b %d %H:%M:%S %Y (MJD: "+'{:.3f}'.format(Time(today).mjd)+")") + outtitle = f'beta {beta}-{beta+dbeta}' + output_dir=ptt.join(directory, obsf, 'beta',subf) + outfile=ptt.join(output_dir,f'beta{str(beta).zfill(3)}-{str(beta+dbeta).zfill(3)}.html') + title = '\n'.join([f"

    SDSS-V {obsf.upper()} BOSS Flat Libray Analysis:{version}

    ", + f"

    {beta} < BETA < {beta+dbeta}

    ", + f"

    {now}

    "]) + mask_b = np.full_like(meds_b, np.NaN) + mask_b[np.where((beta_b >= beta) & (beta_b <=beta+dbeta))] = 1 + mask_b[:,np.where(np.nansum(mask_b,axis=0)<=1)[0]] = np.NaN + + mask_r = np.full_like(meds_r, np.NaN) + mask_r[np.where((beta_r >= beta) & (beta_r <=beta+dbeta))] = 1 + mask_r[:,np.where(np.nansum(mask_r,axis=0)<=1)[0]] = np.NaN + + if not ((np.nansum(mask_b) > 0) or (np.nansum(mask_r) > 0)): + if ptt.exists(outfile): + remove(outfile) + return + makedirs(output_dir,exist_ok=True) + + med_plot(Allflat,directory,outfile, version, obsf, meds_b*mask_b, meds_r*mask_r, + qbad_b, qbad_r, fiberids, title=title, name=outtitle, + mask_b=mask_b, mask_r=mask_r) + + +def make_pos_plots(Allflat,directory, version, obs, meds_b, meds_r, qbad_b, qbad_r, fiberids, drot, dalt, alt, rot, subf): + now =today.strftime("Last Updated: %a %b %d %H:%M:%S %Y (MJD: "+'{:.3f}'.format(Time(today).mjd)+")") + if drot is None: + output_dir=ptt.join(directory, obs, 'alt',subf) + indx = np.where((Allflat['ALT'].value >= alt) & (Allflat['ALT'].value <= alt+dalt))[0] + outfile=ptt.join(output_dir,f'alt{str(alt).zfill(3)}-{str(alt+dalt).zfill(3)}.html') + outtitle=f'alt{alt}-{alt+dalt}' + title = '\n'.join([f"

    SDSS-V {obs.upper()} BOSS Flat Libray Analysis:{version}

    ", + f"

    {alt} < ALT < {alt+dalt}

    ", + f"

    {now}

    "]) + elif dalt is None: + output_dir=ptt.join(directory, obs, 'rot',subf) + indx = np.where((Allflat['ROT'].value >= rot) & (Allflat['ROT'].value <= rot+drot))[0] + outfile=ptt.join(output_dir,f'rot{str(rot).zfill(3)}-{str(rot+drot).zfill(3)}.html') + outtitle=f'rot{rot}-{rot+drot}' + title = '\n'.join([f"

    SDSS-V {obs.upper()} BOSS Flat Libray Analysis:{version}

    ", + f"

    {rot} < ROT < {rot+drot}

    ", + f"

    {now}

    "]) + else: + output_dir=ptt.join(directory, obs, 'tele_pos',subf) + indx = np.where((Allflat['ALT'].value >= alt) & (Allflat['ALT'].value <= alt+dalt) & + (Allflat['ROT'].value >= rot) & (Allflat['ROT'].value <= rot+drot))[0] + outfile=ptt.join(output_dir,f'alt{str(alt).zfill(3)}-{str(alt+dalt).zfill(3)}_rot{str(rot).zfill(3)}-{str(rot+drot).zfill(3)}.html') + outtitle=f'alt{alt}-{alt+dalt}_rot{rot}-{rot+drot}' + title = '\n'.join([f"

    SDSS-V {obs.upper()} BOSS Flat Libray Analysis:{version}

    ", + f"

    {alt} < ALT < {alt+dalt}; {rot} < ROT < {rot+drot}

    ", + f"

    {now}

    "]) + if len(indx) == 0: + if ptt.exists(outfile): + remove(outfile) + return + makedirs(output_dir,exist_ok=True) + med_plot(Allflat[indx],directory,outfile, version, obs, meds_b[indx], meds_r[indx], + qbad_b[indx], qbad_r[indx], fiberids[indx], title=title, name=outtitle) + +def position_plots(Allflat,directory, version, obs, meds_b, meds_r, qbad_b, qbad_r,beta_b, beta_r, fiberids, plates=False): + makedirs(ptt.join(directory, obs, 'tele_pos'),exist_ok=True) + makedirs(ptt.join(directory, obs, 'Rot'), exist_ok=True) + makedirs(ptt.join(directory, obs, 'alt'), exist_ok=True) + if plates is False: makedirs(ptt.join(directory, obs, 'beta_ang'),exist_ok=True) + fibers=fiberids#np.tile(np.arange(1,501),(len(qbad_b),1)) + + tqdm.write('Making drot=dalt plots') + for step in [5,10,15]: + for alt in np.arange(25,90,step): + for rot in np.arange(0, 360, step): + make_pos_plots(Allflat,directory, version, obs, meds_b, meds_r, qbad_b, qbad_r, fibers, step, step, alt, rot, str(step)) + + tqdm.write('Making drot or dalt plots') + for step in [5,10,15]: + for deg in np.arange(25,90,step): + make_pos_plots(Allflat, directory, version, obs, meds_b, meds_r, qbad_b, qbad_r, fibers, None, step, deg, None, str(step)) + make_pos_plots(Allflat, directory, version, obs, meds_b, meds_r, qbad_b, qbad_r, fibers, step, None, None, rot, str(step)) + tqdm.write('Making dBeta plots') + if plates is False: + for step in [5,10,15]: + for beta in np.arange(0,180,step): + make_beta_plots(Allflat,directory, version, obs, meds_b, meds_r, qbad_b, qbad_r, beta_b, beta_r, fibers, beta, step, str(step)) + +def hex_to_rgb_tuple(hex_color): + # Convert hex to RGB tuple + rgb_tuple = tuple(int(hex_color.lstrip('#')[i:i+2], 16) for i in (0, 2, 4)) + return f'rgb({rgb_tuple[0]},{rgb_tuple[1]},{rgb_tuple[2]})' + +def generate_discrete_sequence(base_scale, num_colors): + # Convert all base scale colors to RGB strings + base_scale_rgb = [hex_to_rgb_tuple(color) for color in base_scale] + + # Create a linear space for interpolating colors across the entire base scale + t_values = np.linspace(0, 1, num_colors) + + # Generate the discrete color sequence + discrete_sequence = [] + for t in t_values: + # Find the appropriate position in the base scale + scaled_t = t * (len(base_scale_rgb) - 1) + idx = int(scaled_t) + fractional_t = scaled_t - idx + + # Handle edge case where idx is at the last color + if idx >= len(base_scale_rgb) - 1: + discrete_sequence.append(base_scale_rgb[-1]) + else: + color = pc.find_intermediate_color(base_scale_rgb[idx], base_scale_rgb[idx + 1], fractional_t, colortype='rgb') + discrete_sequence.append(color) + + return discrete_sequence + +def col2html(row, raw=False, ccd = 'Blue', directory=''): + bsd = 'BOSS_SPECTRO_DATA_N' if row['Obs'] == 'apo' else 'BOSS_SPECTRO_DATA_S' + bsd = chpc2html(getenv(bsd)) + if raw: + template = ('PNG '+ + 'FITs') + else: + template = ('PNG '+ + 'FITs '+ + 'Trans') + col = f'{ccd} Raw' if raw else f'{ccd} Reduced' + return(template.format(value=row[col], directory = chpc2html(directory), + bsd=bsd, obs= row['Obs'])) + +def med_plot(Allflat,directory,filename, ver, obsf, meds_b, meds_r, qbad_b, qbad_r, + fiberids, title=None, name=None, mask_b=None, mask_r=None): + ccds = ['b1','r1'] if obsf == 'apo' else ['b2','r2'] + umjs = np.unique(Allflat['MJD']) + discrete_palette = generate_discrete_sequence(pc.sequential.Viridis, len(umjs)) + random.shuffle(discrete_palette) + + obs = Allflat['OBS'].value.tolist() + mjd =Allflat['MJD'].value.astype(str).tolist() + expsids = np.char.zfill(Allflat['EXP'].value.astype(str),8) + red_reduced=create_att_path(obs,mjd,expsids,ccd=ccds[1],ftype='spFlat') + red_raw=create_att_path(obs,mjd,expsids,ccd=ccds[1],ftype='sdR') + blue_reduced=create_att_path(obs,mjd,expsids,ccd=ccds[0],ftype='spFlat') + blue_raw=create_att_path(obs,mjd,expsids,ccd=ccds[0],ftype='sdR') + red_trans=create_att_path(obs,mjd,expsids,ccd=ccds[1], ftype='spFlat', subdir='transmission/') + blue_trans=create_att_path(obs,mjd,expsids,ccd=ccds[0], ftype='spFlat', subdir='transmission/') + + meta = pd.DataFrame({'exp':np.char.zfill(Allflat['EXP'].value.astype(str),8), + 'MJD':Allflat['MJD'].value.astype(str).tolist(), + 'TAI':Allflat['TAI'].value.tolist(), + 'qbad_b':qbad_b, + 'qbad_r':qbad_r, + 'airmass':Allflat['AIRMASS'].value.tolist(), + 'Alt':Allflat['ALT'].value.tolist(), + 'rot':Allflat['ROT'].value.tolist(), + 'Obs':Allflat['OBS'].value.tolist(), + 'Blue Raw':blue_raw, + 'Blue Reduced':blue_reduced, + 'Red Raw':red_raw, + 'Red Reduced':red_reduced}) + + meta['Blue Raw'] = meta.apply(lambda row: col2html(row, raw = True, ccd = 'Blue', directory=directory), axis=1) + meta['Blue Reduced'] = meta.apply(lambda row: col2html(row, ccd = 'Blue', directory=directory), axis=1) + meta['Red Raw'] = meta.apply(lambda row: col2html(row, raw = True, ccd = 'Red', directory=directory), axis=1) + meta['Red Reduced'] = meta.apply(lambda row: col2html(row, raw = False, ccd = 'Red', directory=directory), axis=1) + + hr = '
    '.join(["exp: {exp}, qbad: ({qbad_b},{qbad_r})", + "MJD: {MJD}, TAI: {TAI}", + "Airmass: {airmass}, Alt: {Alt}, Rot: {rot}", + "Observatory: {Obs}"]) + ht = [hr.format(**row.to_dict()) for i,row in meta.iterrows()] + figs = {} + for type in ['all','select']: + figs[type] = make_subplots(rows=2, cols=1, shared_xaxes=True, shared_yaxes=False,vertical_spacing=0.02) + groups = [] + for i in range(len(qbad_b)): + vis = True + if type == 'select': + vis = True if Allflat['MJD'][i] == max(umjs) else 'legendonly' + + color = discrete_palette[np.where(umjs == Allflat['MJD'][i])[0][0]] + if str(Allflat['MJD'][i]) not in groups: + showlegend = True + groups.append(str(Allflat['MJD'][i])) + else: showlegend = False + params = {'mode':'lines','name': str(Allflat['MJD'][i]), + 'legendgroup':str(Allflat['MJD'][i]), 'visible':vis, + 'line':dict(color=color,dash='solid', width=.5,)} + params['text']=[ht[0]]*len(fiberids[i]) + params['hovertemplate']='
    Fiber:%{x}, Throughput:%{y}
    %{text}' + figs[type].add_trace(go.Scatter(x= fiberids[i], y=meds_b[i], + showlegend=showlegend,**params), row=1, col=1) + figs[type].add_trace(go.Scatter(x= fiberids[i], y=meds_r[i], showlegend=False, + **params), row=2, col=1) + figs[type].update_layout(autosize=True, height=None, margin=dict(l=0,r=0,t=20,b=0)) + figs[type].update_xaxes(title='Trace Fiber', row=2, col=1) + figs[type].update_yaxes(title='Med Flat Blue', row=1, col=1) + figs[type].update_yaxes(title='Med Flat Red', row=2, col=1) + + if mask_b is None: + mask_b=np.isfinite(meds_b) + if mask_r is None: + mask_r=np.isfinite(meds_r) + + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + ys_b = {'div':(np.nanmax(meds_b,axis=0) - np.nanmin(meds_b,axis=0))/np.nanmean(meds_b,axis=0)*100, + 'std':np.nanstd(meds_b,ddof=1,axis=0), + 'mad':np.nanmedian(np.absolute(meds_b - np.nanmedian(meds_b, axis=0)),axis=0), + 'count':np.nansum(mask_b,axis=0)} + ys_r = {'div':(np.nanmax(meds_r,axis=0) - np.nanmin(meds_r,axis=0))/np.nanmean(meds_r,axis=0)*100, + 'std':np.nanstd(meds_r,ddof=1,axis=0), + 'mad':np.nanmedian(np.absolute(meds_r - np.nanmedian(meds_r, axis=0)),axis=0), + 'count':np.nansum(mask_r,axis=0)} + labels ={'div':'% Max Dev','std':'STD','mad':'Med Abs Deviation','count':'N Flats'} + for type in ys_b.keys(): + figs[type] = make_subplots(rows=2, cols=1, shared_xaxes=True, shared_yaxes=False,vertical_spacing=0.02) + + params = {'mode':'lines','name': type, 'legendgroup':type, + 'line':dict(color='black',dash='solid', width=.5)} + params['text']=[ht[0]]*len(fiberids[i]) + params['hovertemplate']='
    Fiber:%{x}, '+labels[type]+':%{y}
    %{text}' + + figs[type].add_trace(go.Scatter(x= fiberids[0], y=ys_b[type], showlegend=False,**params), row=1, col=1) + figs[type].add_trace(go.Scatter(x= fiberids[0], y=ys_r[type], showlegend=False,**params), row=2, col=1) + figs[type].update_layout(autosize=True, height=None, margin=dict(l=0,r=0,t=20,b=0)) + figs[type].update_xaxes(title='Trace Fiber', row=2, col=1) + figs[type].update_yaxes(title=f'{labels[type]} Blue', row=1, col=1) + figs[type].update_yaxes(title=f'{labels[type]} Red', row=2, col=1) + + if title is None: + now =today.strftime("Last Updated: %a %b %d %H:%M:%S %Y (MJD: "+'{:.3f}'.format(Time(today).mjd)+")") + title = '\n'.join([f"

    SDSS-V {obsf.upper()} BOSS Flat Libray Analysis:{ver}

    ", + f"

    {now}

    ", + f"

    N Flats Included: {str(np.nansum(mask_b,axis=0)[0])}

    "]) + + if name is None: + name = f"{obsf.upper()} BOSS Flats: {ver}" + + fignames = {'all':f'BOSSFlats_{obsf.upper()}_{ver}', + 'select':f'BOSSFlats_{obsf.upper()}_{ver}_select', + 'div':f'BOSSFlats_{obsf.upper()}_{ver}_PerMaxDev', + 'std':f'BOSSFlats_{obsf.upper()}_{ver}_STD', + 'mad':f'BOSSFlats_{obsf.upper()}_{ver}_MAD', + 'count':f'BOSSFlats_{obsf.upper()}_{ver}_Count'} + for fig in figs.keys(): + config = {'toImageButtonOptions': {'format': 'png','filename': fignames[fig], + 'scale': 6 }, # Multiply title/legend/axis/canvas sizes by this factor + 'responsive': True} # Ensure the figure is responsive + + fig_params = dict(full_html=False, default_height='900px', default_width='100%', + include_plotlyjs='cdn', config=config) + figs[fig] = figs[fig].to_html(**fig_params) + plotly_jinja_data = {"fig": figs['all'], + "fig_selct": figs['select'], + "fig_meta": meta.to_html(classes='scrollable-table',escape=False, index=False), + "fig_dev": figs['div'], + "fig_std": figs['std'], + "fig_mad": figs['mad'], + "fig_count": figs['count'], + "title":title, "name":name, "favicon":favicon} + + with open(filename, "w", encoding="utf-8") as output_file: + with open(ptt.join(idlspec2d_dir,'templates','html','FieldLib_template.html')) as template_file: + j2_template = Template(template_file.read()) + output_file.write(j2_template.render(plotly_jinja_data)) + + + +def csv_dump(Allflat, directory, version, fobs, meds_dic, qbad_dic, beta_dic, confs_dic, confFiberids_dic): + makedirs(ptt.join(directory,fobs,'csv'), exist_ok=True) + fiberid = np.arange(1,501) + exps=np.char.zfill(Allflat['EXP'].value.astype(str),8) + rot=Allflat['ROT'].value + alt=Allflat['ALT'].value + obs=Allflat['OBS'].value + mjd=Allflat['MJD'].value + try: tai=Allflat['TAI'].value + except: tai=np.full_like(Allflat['MJD'].value.tolist(), np.NaN) + ccds = ['b1','r1'] if fobs == 'apo' else ['b2','r2'] + + for i,row in enumerate(tqdm(meds_dic[ccds[0]], desc='CSV EXP', leave=False, position = 1)): + flat_meta=pd.DataFrame() + for ccd in ccds: + flat_meta=pd.concat([flat_meta,pd.DataFrame({'FIBERID':fiberid, 'CONFFIBERID': confFiberids_dic[ccd][i], + 'EXPID':[exps[i]]*500, + 'SPECTROGRAPH':[ccd]*500,'CONFIGID':confs_dic[ccd][i], + 'MED_FLAT_VALUE':meds_dic[ccd][i], 'ROT':rot[i]*500, + 'ALT':[alt[i]]*500, 'OBS':np.array([obs[i]]*500), + 'MJD':[mjd[i]]*500, 'TAI':[tai[i]]*500, + 'BETA':beta_dic[ccd][i]})], ignore_index=False) + flat_meta.to_csv(ptt.join(directory,fobs,'csv','summary_'+exps[i]+'.csv'),index=False) + +def analysis(directory, version, mjd=None, noplot=False, obs='apo', + lowFiber=.8, run='all', TraceIDs=False): + Allflat=Table(fits.getdata(ptt.join(directory,'calibs','allflats.fits'),1)) + Allflat = Allflat[Allflat['OBS'] == obs] + Allflat= tabunique(Allflat, keys='EXP') + Allflat.sort('EXP') + #Allflat = Allflat[:10] + if run in ['all','med']: + if mjd is None: + outfile=ptt.join(directory,"FlatAnalysis-"+version+"_"+obs+".html") + else: + Allflat=Allflat[np.where(np.array(Allflat['MJD'].value.tolist()).astype(int) == int(mjd))] + outfile=ptt.join(directory,"FlatAnalysis-"+version+"-mjd"+str(mjd)+"_"+obs+".html") + if max(np.asarray(Allflat['MJD'].value).astype(int)) < 59550: + plates = True + else: plates = False + meds_dic={} + qbad_dic={} + beta_dic={} + assigns_dic={} + confs_dic={} + confFiberids_dic={} + ccds = ['b1','r1'] if obs == 'apo' else ['b2','r2'] + if run in ['all','med','pos','csv','lowfiber']: + for ccd in tqdm(ccds, desc='CCDs', position=0): + meds=None + qbad=[] + confFiberids = None + betas=None + confs=None + for i, exp in enumerate(tqdm(Allflat['EXP'].value.tolist(),desc='Exposure', position=1, leave=False)): + + if obs not in assigns_dic.keys(): + assigns_dic[obs]=read_fiberAssignments(ptt.join(directory,'fiberAssignments',obs,'fiberAssignments.csv')) + ff = ptt.join(directory,'calibs', obs, str(Allflat['MJD'].value.tolist()[i]),'spFlat-'+ccd+'-'+str(exp).zfill(8)+'.fits.gz') + try: + data=fits.getdata(ff,0) + mid=data.shape[1]//2 + data=data[:,mid-1000:mid+1000] + med=np.median(data,axis=1) + except: + data=None + med = np.full(500,np.NaN) + if data is not None: + hdr=fits.getheader(ff,0) + try: + confid = hdr['CONFID'] + except: + confid = None + if confid is not None: + confSummary = find_confSummary(confid, obs) + else: + confSummary = None + else: + confSummary = None + if confSummary is not None: + beta = confSummary['beta'].value + confFiberid = confSummary['fiberId'].value + else: + beta = np.full(500,np.NaN) + confFiberid = np.full(500,np.NaN) + + if betas is None: + meds = med + betas = beta + confFiberids = confFiberid + confs = np.array([confid]*len(beta)) + else: + meds=np.vstack([meds,med]) + betas=np.vstack([betas,beta]) + confFiberids=np.vstack([confFiberids,confFiberid]) + confs=np.vstack([confs,np.array([confid]*len(beta))]) + + if run in ['all','med','pos','lowfiber']: + ID_lowFiber(ff, ptt.join(directory, 'calibs', obs, 'lowFlagged', str(Allflat['MJD'].value.tolist()[i])) ,med, confFiberids, threshold=lowFiber) + if run in ['lowfiber','csv']: continue + if ptt.exists(ff) : + qbad.append(0) + if noplot is False: + mjdstr=str(Allflat['MJD'].value.tolist()[i]) + makedirs(ptt.join(directory, 'calibs', obs, mjdstr),exist_ok=True) + makedirs(ptt.join(directory, 'calibs', obs, 'transmission', mjdstr),exist_ok=True) + if not ptt.exists(build_savename(ff,ptt.join(directory, 'calibs', obs, mjdstr))): + plot_flat(ff,ptt.join(directory, 'calibs', obs, mjdstr)) + raw_flat=get_raw(ff,obs, mjdstr) + plot_raw(raw_flat,ptt.join(directory, 'calibs', obs, mjdstr)) + plot_thruput_v_sextant(ff,str(Allflat['MJD'].value.tolist()[i]), ptt.join(directory, 'calibs', obs, 'transmission', mjdstr), assigns_dic[obs]) + plot_thruput_v_sextant(ff,str(Allflat['MJD'].value.tolist()[i]), ptt.join(directory, 'calibs', obs, mjdstr), assigns_dic[obs]) + else: qbad.append(1) + if run not in ['csv']: + ID_lowFiber('merged_'+ccd, ptt.join(directory, 'calibs',obs, 'lowFlagged') ,meds, confFiberids, threshold=lowFiber, clobber=True) + meds_dic[ccd]=meds + qbad_dic[ccd]=np.asarray(qbad) + beta_dic[ccd]=betas + confs_dic[ccd]=confs + confFiberids_dic[ccd]=confFiberids + if run in ['lowfiber','csv']: continue + if run == 'lowfiber': return + + if run in ['all', 'med']: + tqdm.write('Producing med_plot') + + tabs=med_plot(Allflat,ptt.join(directory,'calibs'), + ptt.join(directory,f"FlatAnalysis-{version}_{obs}.html"), + version, obs, meds_dic[ccds[0]], + meds_dic[ccds[1]], qbad_dic[ccds[0]], + qbad_dic[ccds[1]], confFiberids_dic[ccds[0]]) + if run in ['all', 'pos']: + position_plots(Allflat, ptt.join(directory,'calibs'), version, obs, + meds_dic[ccds[0]], meds_dic[ccds[1]], + qbad_dic[ccds[0]], qbad_dic[ccds[1]], + beta_dic[ccds[0]], beta_dic[ccds[1]], + confFiberids_dic[ccds[0]], plates=plates) + if run in ['all','csv']: + csv_dump(Allflat, ptt.join(directory,'calibs'), version, obs, meds_dic, qbad_dic, beta_dic, confs_dic,confFiberids_dic) + if run in ['timeSeries', 'all']: + plot_thruput_timeseries(ptt.join(directory,'calibs', obs,'csv'), Traceid=TraceIDs) diff --git a/python/boss_drp/Flatlib/build.py b/python/boss_drp/Flatlib/build.py new file mode 100644 index 000000000..929cc5c8c --- /dev/null +++ b/python/boss_drp/Flatlib/build.py @@ -0,0 +1,54 @@ + +import glob +import os.path as ptt +from os import getenv +from astropy.io import fits +from astropy.coordinates import AltAz, EarthLocation +from astropy.time import Time +import astropy.units as u +from astropy.table import Table +from datetime import datetime, timedelta +from tqdm import tqdm +from collections import OrderedDict +def build(dir_, obs): + cols = {'MJD':'MJD','ROT':'ROTPOS','ALT':'ALT','AZ':'AZ','EXP':'exposure','TAI':'TAI','CARTID':'CARTID'} + catfile = ptt.join(dir_,'calibs','allflats.fits') + if ptt.exists(catfile): + catalog = Table.read(catfile, format='fits') + else: + catalog = None + for obs in obs: + sp= 1 if obs =='apo' else 2 + if obs == 'apo': + sp = 1 + location = EarthLocation(lat = 32.780361*u.deg, lon=254.179532*u.deg, height=2788*u.m) + tf = '%Y-%m-%dT%H:%M:%S' + else: + location = EarthLocation(lat = -29.01597*u.deg, lon=289.307920*u.deg, height=2380*u.m) + sp = 2 + tf = '%Y-%m-%dT%H:%M:%S.%f' + flatlib = ptt.join(dir_,'calibs',obs,'?????',f'spFlat-b{sp}*.fits*') + for ff in tqdm(glob.glob(flatlib)): + if catalog is not None: + if ptt.basename(ff).split('.')[0].split('-')[-1] in catalog['EXP']: + continue + hdr = fits.getheader(ff) + meta = OrderedDict({}) + for col in cols.keys(): + if col== 'TAI': + meta['TAI'] = hdr['TAI-BEG'] + (hdr['EXPTIME']/2.0) + else: + meta[col] = hdr[cols[col]] + meta['OBS'] = obs + meta['qbad_b'] = 1 + meta['qbad_r'] = 1 + obstime = Time(datetime.strptime(hdr['DATE-OBS'], tf) + timedelta(seconds=hdr['EXPTIME']/2.0)) + altaz = AltAz(alt= meta['ALT']*u.deg,az=meta['AZ']*u.deg,obstime=obstime,location=location) + meta['AIRMASS'] = altaz.secz.value + if catalog is None: + for key in meta.keys(): + meta[key] = [meta[key]] + catalog = Table(meta) + else: + catalog.add_row(meta) + catalog.write(catfile, overwrite=True) diff --git a/python/boss_drp/Flatlib/plot.py b/python/boss_drp/Flatlib/plot.py new file mode 100644 index 000000000..eadc98f3e --- /dev/null +++ b/python/boss_drp/Flatlib/plot.py @@ -0,0 +1,268 @@ +#!/usr/bin/env python3 +import os.path as ptt +import matplotlib.pyplot as plt +from mpl_toolkits.axes_grid1 import make_axes_locatable +from os import getenv, makedirs, sep, rename +from astropy.io import fits +import argparse +import glob +import numpy as np +import pandas as pd +import requests +from tqdm import tqdm + +def plot_flat(filename, save_dir): + loc=get_mdj_obs(filename) + outname, shortname = build_savename(filename,save_dir,return_short=True) + try: + flat_arr=fits.getdata(filename,0) + except: + print('error with '+filename) + flat_arr = [[np.NaN,np.NaN],[np.NaN,np.NaN]] + plt.figure(figsize=(12, 2), dpi=100) + plt.imshow(flat_arr,cmap='gray') + plt.xlabel('pixel') + plt.ylabel('Fiber') + plt.title('MJD:'+str(loc['mjd'])+' '+shortname) + plt.savefig(outname,bbox_inches='tight') + plt.close('all') + return + +def build_savename(filename, save_dir,return_short=False, mod=''): + makedirs(save_dir, exist_ok=True) + filename=ptt.basename(filename) + filename=ptt.splitext(ptt.splitext(filename)[0])[0] + if return_short is True: + return(ptt.join(save_dir, filename+mod+'.png'),filename) + return(ptt.join(save_dir, filename+mod+'.png')) + + +def read_fiberAssignments(filename): + if not ptt.exists(filename): + makedirs(ptt.dirname(filename), exist_ok=True) + if 'lco' in filename: + url = 'https://raw.githubusercontent.com/sdss/fps_calibrations/main/lco/wok_calibs/duPontFlatCMM/fiberAssignments.csv' + else: + url = 'https://raw.githubusercontent.com/sdss/fps_calibrations/main/apo/wok_calibs/sloanFlatCMM/fiberAssignments.csv' + response = requests.get(url) + if response.status_code == 200: + # Write the content to a local file + with open(filename, 'wb') as f: + f.write(response.content) + else: + raise Exception(f'Failed to download file: {response.status_code}') + + fiberAssign=pd.read_csv(filename,index_col=0) + fiberAssign=fiberAssign[np.isfinite(fiberAssign.BOSSFiber)] + fiberAssign=fiberAssign.sort_values(by=['BOSSFiber']) + return(fiberAssign) + +def plot_thruput_v_sextant(filename,mjd, save_dir, fiberAssignments): + outname, shortname = build_savename(filename, save_dir, return_short=True, mod='_trans') + def reject_outliers(data, m=2): + return data[abs(data - np.mean(data)) < m * np.std(data)] + + try: + data=fits.getdata(filename,0) + except: + print('error with '+filename) + data = [[np.NaN,np.NaN],[np.NaN,np.NaN]] + mean=np.mean(data,axis=1) + arr0=mean + arr=(reject_outliers(mean,m=3)) + filtdata=data + while np.abs(np.mean(arr)-np.mean(arr0)) > .0001: + arr0=arr + arr=reject_outliers(arr,m=3) + trans=mean/np.mean(arr) + + ax=plt.subplot() + for i in range(1, 7): + filt=np.where(fiberAssignments.Sextant.values == i)[0] + im=ax.scatter(fiberAssignments.Sextant.values[filt], trans[filt], marker='.', + lw=.1,ec='k',c=np.arange(len(filt)), cmap='CMRmap') + ax.set_xlabel('Sextant') + ax.set_ylabel('Relative Transmission (to mean)') + plt.title('MJD:'+str(mjd)+' '+shortname) + divider = make_axes_locatable(ax) + cax = divider.append_axes("right", size="2%", pad=0.05) + cbar=plt.colorbar(im, cax=cax) + cbar.set_label('Fiber within Sextant') + plt.savefig(outname, bbox_inches='tight') + plt.close('all') + return + +def plot_thruput_timeseries(csv_dir, Traceid=False): + files = glob.glob(ptt.join(csv_dir,'summary_*.csv')) + ts_r = None + ts_b = None + ids_b = None + ids_r = None + for file in tqdm(files, desc='Reading CSVs', leave=False, position=1): + df = pd.read_csv(file) + df_b = df[df['SPECTROGRAPH'].isin(['b1','b2'])] + df_r = df[df['SPECTROGRAPH'].isin(['r1','r2'])] + + if ts_r is None: + if not Traceid: + ids_b = df_b['CONFFIBERID'] + ids_r = df_r['CONFFIBERID'] + else: + ids_b = df_b['FIBERID'] + ids_r = df_r['FIBERID'] + ts_b = pd.DataFrame([df_b['MED_FLAT_VALUE'].tolist()], index=[df.iloc[0]['MJD']], columns = ids_b) + ts_r = pd.DataFrame([df_r['MED_FLAT_VALUE'].tolist()], index=[df.iloc[0]['MJD']], columns = ids_r) + + + else: + if not Traceid: + ids_b = df_b['CONFFIBERID'] + ids_r = df_r['CONFFIBERID'] + else: + ids_b = df_b['FIBERID'] + ids_r = df_r['FIBERID'] + mjd_u = df.iloc[0]['MJD'] + if mjd_u not in ts_b.index: + try: + ts_b.loc[mjd_u] = dict(zip(ids_b.tolist(),df_b['MED_FLAT_VALUE'].tolist())) + except: + tqdm.write('Error with '+file) + else: + temp = ts_b.loc[mjd_u].copy() + new_data = dict(zip(ids_b.tolist(), df_b['MED_FLAT_VALUE'].tolist())) + for key, value in new_data.items(): + temp[key] = value # Replace the value for duplicate keys + ts_b.loc[mjd_u] = temp + if mjd_u not in ts_r.index: + try: + ts_r.loc[mjd_u] = dict(zip(ids_r.tolist(),df_r['MED_FLAT_VALUE'].tolist())) + except: + tqdm.write('Error with '+file) + else: + temp = ts_r.loc[mjd_u].copy() + new_data = dict(zip(ids_r.tolist(), df_r['MED_FLAT_VALUE'].tolist())) + for key, value in new_data.items(): + temp[key] = value # Replace the value for duplicate keys + ts_r.loc[mjd_u] = temp + + ts_b = ts_b.sort_index() + ts_r = ts_r.sort_index() + makedirs(ptt.join(ptt.dirname(csv_dir),'timeseries'), exist_ok=True) + if Traceid: + flag = 'Trace ' #fiberid on chip + else: + flag = 'Fiber ' #Fiberid on slit + cols = ts_b.columns.tolist()+ts_r.columns.tolist() + cols = np.sort(np.unique(np.asarray(cols))).astype(int).tolist() + for i in range(len(cols)): + if((i % 10) == 0): + fig, axs= plt.subplots(2,1,figsize=(10,5), dpi =100) + s =i + axs[0].plot(ts_b.index.tolist(), ts_b[cols[i]], marker='.', label=f'{flag}{cols[i]}') + axs[1].plot(ts_r.index.tolist(), ts_r[cols[i]], marker='.', label=f'{flag}{cols[i]}') + axs[0].set_ylabel('Blue Relative \nTransmission (to mean)') + axs[1].set_ylabel('Red Relative \nTransmission (to mean)') + axs[1].set_xlabel('MJD') + axs[0].set_ylim([-.05,1.2]) + axs[1].set_ylim([-.05,1.2]) + axs[0].legend(ncols=10, fontsize=7, framealpha=.2,bbox_to_anchor=(0.5, 1.15),loc='upper center')#,bbox_transform=axs[0].transAxes,) + axs[1].legend(ncols=10, fontsize=7, framealpha=.2,bbox_to_anchor=(0.5, 1.15),loc='upper center')#,bbox_transform=axs[0].transAxes,) +# axs[0].legend(ncols=10, fontsize=8, framealpha=.2,bbox_to_anchor=(0.5, 1.05),loc='center',bbox_transform=axs[0].transAxes,) +# axs[1].legend(ncols=10, fontsize=8, framealpha=.2,bbox_to_anchor=(0.5, 1.05),loc='center',bbox_transform=axs[0].transAxes,) + if((i % 10) == 9) or (i==499): + fig.tight_layout() + plt.subplots_adjust()#top=.93) # Adjust top to fit the legends + if Traceid: + plt.savefig(ptt.join(ptt.dirname(csv_dir),'timeseries', + f'timeseries_Tracefiber{str(s+1).zfill(3)}-{str(i+1).zfill(3)}.png'),bbox_inches='tight') + else: + plt.savefig(ptt.join(ptt.dirname(csv_dir),'timeseries', + f'timeseries_fiber{str(s+1).zfill(3)}-{str(i+1).zfill(3)}.png'),bbox_inches='tight') + plt.close('all') + + if Traceid: + build_preview(ptt.dirname(csv_dir),'timeseries_Tracefiber', deep=1, nper=2,pattern='timeseries_Tracefiber*png') + with open(ptt.join(ptt.dirname(csv_dir),'timeseries_Tracefiber_data_blue.html'),'w') as f: f.write(ts_b.to_html()) + with open(ptt.join(ptt.dirname(csv_dir),'timeseries_Tracefiber_data_red.html'),'w') as f: f.write(ts_r.to_html()) + + else: + build_preview(ptt.dirname(csv_dir),'timeseries', deep=1, nper=2,pattern='timeseries_fiber*png') + with open(ptt.join(ptt.dirname(csv_dir),'timeseries_data_red.html'),'w') as f: f.write(ts_r.to_html()) + with open(ptt.join(ptt.dirname(csv_dir),'timeseries_data_blue.html'),'w') as f: f.write(ts_b.to_html()) + +def plot_raw(filename, save_dir): + loc=get_mdj_obs(filename) + img_arr=fits.getdata(filename,0) + filename=ptt.basename(filename) + filename=ptt.splitext(ptt.splitext(filename)[0])[0] + plt.figure(figsize=(6, 6), dpi=100) + plt.imshow(img_arr,cmap='gray') + plt.xlabel('pixel') + plt.ylabel('pixel') + plt.title('MJD:'+str(loc['mjd'])+' '+filename) + plt.savefig(ptt.join(save_dir, filename+'.png'),bbox_inches='tight') + plt.close('all') + return + +def get_mdj_obs(filename): + mjd=ptt.basename(ptt.dirname(ptt.normpath(filename))) + obs=ptt.basename(ptt.dirname(ptt.dirname(ptt.normpath(filename)))) + return({'mjd':mjd,'obs':obs}) + +def get_raw(filename, obs, mjd): + filename=ptt.basename(filename) + filename=filename.replace('spFlat-','sdR-') + filename=filename.replace('.fits.gz','.fit.gz') + if obs.lower() == 'apo': env='BOSS_SPECTRO_DATA_N' + else: env='BOSS_SPECTRO_DATA_S' + filename=ptt.join(getenv(env),str(mjd),filename) + return(filename) + +def build_preview(directory, name, deep=1, nper=2,pattern='spFlat-??-????????.png'): + sub = sep.join(['*']*deep) + figs = glob.glob(ptt.join(directory,sub,pattern)) + with open(ptt.join(directory, 'tmp-index.html'), 'w') as f: + f.write(''+'\n') + f.write(''+'\n') + f.write(''+'\n') + f.write(''+'\n') + f.write(''+'\n') + f.write(''+name+''+'\n') + f.write(''+'\n') + f.write(''+'\n') + f.write(''+'\n') + f.write(''+'\n') + + + + for i,ff in enumerate(figs): + ff = ptt.relpath(ff,start = directory) + f.write(f'\n') + if(((i % nper) == nper-1) or (i == len(figs)-1)): f.write(''+'\n') + f.write('
    {ff}
    '+'\n') + f.write(''+'\n') + f.write(''+'\n') + rename(ptt.join(directory, 'tmp-index.html'), ptt.join(directory, f'{name}.html')) + +def plot(dir_, flat, savedir ='.', assigns=None): + if assigns is None: + assigns = {} + for obs in ['apo','lco']: + assigns[obs]=read_fiberAssignments(ptt.join(dir_,'fiberAssignments',obs,'fiberAssignments.csv')) + loc=get_mdj_obs(flat) + makedirs(ptt.join(savedir,loc['mjd']), exist_ok=True) + makedirs(ptt.join(savedir,'transmission',loc['mjd']), exist_ok=True) + + plot_flat(flat,ptt.join(savedir,loc['mjd'])) + build_preview(savedir, 'flats', deep=1) + + raw_flat = get_raw(flat, loc['obs'], loc['mjd']) + plot_raw(raw_flat, ptt.join(savedir,loc['mjd'])) + build_preview(savedir, 'raw', deep=1, pattern='sdR*.png', nper=4) + + plot_thruput_v_sextant(flat,loc['mjd'], ptt.join(savedir, 'transmission',loc['mjd']), assigns[loc['obs']]) + build_preview(ptt.join(savedir, 'transmission'), 'transmission', deep=1,pattern='spFlat*_trans.png',nper=2) + return diff --git a/python/boss_drp/Flatlib/reduce.py b/python/boss_drp/Flatlib/reduce.py new file mode 100644 index 000000000..50d187dac --- /dev/null +++ b/python/boss_drp/Flatlib/reduce.py @@ -0,0 +1,226 @@ +#!/usr/bin/env python3 +from boss_drp.utils import (find_nearest_indx, load_env) +from boss_drp.field import field_dir +from boss_drp.prep.spplan_trace import spplanTrace + +try: + from slurm import queue + noslurm = False +except: + import warnings + class SlurmWarning(Warning): + def __init__(self, message): + self.message = message + def __str__(self): + return repr(self.message) + warnings.warn('No slurm package installed: printing command to STDOUT for manual run',SlurmWarning) + noslurm = True + +from pydl.pydlutils.yanny import yanny, read_table_yanny +from astropy.io import fits +from astropy.table import Table +from os import getenv, symlink, makedirs +import os.path as ptt +from glob import glob +import argparse +import numpy as np +import sys +import io +from tqdm import tqdm +from shutil import copy2 + +def match_arc(arcs, flat, single_cal= True): + m_arc = np.where(arcs['fieldid'].data == flat['fieldid'])[0] + if len(m_arc) != 0: + m_arc = m_arc[-1] + arcs = Table(arcs[m_arc]) + else: + if single_cal is True: + texp = np.nanmean(flat['TAI'].data) + try: + idx = find_nearest_indx(arcs['TAI'].data, texp) + except: + return(None) + arcs = Table(arcs[idx]) + return(arcs) + + +def create_run(dir_, specdir, mjd, obs='lco',no_run=False, + submit=False, nodes =None, clobber=False, link=False): + if type(mjd) is str: mjd=[mjd] + + cmds = [] + logs = [] + for mj in tqdm(mjd, desc='MJD',leave=False, position=0): + legacy=False; plates=False + if int(mj) < 59030: legacy= True + elif int(mj) < 59550: plates= True + idl = 'run_spcalib, mjd={mjd}' + if plates is True: idl +=', /plates' + if legacy is True: idl +=', /legacy' + if obs.lower() == 'lco': idl +=', /lco' + + plan = read_table_yanny(ptt.join(dir_,'calibs',obs,str(mj),f'spPlanTrace-{mj}_{obs.upper()}.par'), 'SPEXP') + plan.convert_bytestring_to_unicode() + + def get_tai(row, specdir, mjd): + f = ptt.join(specdir,mjd,row['name'][0]) + try: + hdr = fits.getheader(f) + except: + hdr = fits.getheader(f+'.gz') + return(hdr['TAI-BEG'] + hdr['EXPTIME']/2.0) + + plan['TAI'] = [get_tai(row, specdir, mj) for row in plan] + flats = np.where(plan['flavor'] == 'flat')[0] + arcs = np.where(plan['flavor'] == 'arc')[0] + outdir = ptt.join(dir_,'calibs',obs,str(mj)) + + for f in tqdm(flats, desc='flat', leave=False, position=1): + flatnames = plan['name'][f] + field = plan['fieldid'][f] + for i, flatname in enumerate(flatnames): + flatinfoname = flatname.replace('.fit','.fits').replace('sdR','spFlat') + if not clobber: + if ptt.exists(ptt.join(outdir, flatinfoname)): + continue + if link: +# if getenv('RUN2D') == 'master': +# ff = ptt.join(getenv('BOSS_SPECTRO_REDUX'),getenv('RUN2D'),field,flatinfoname) +# else: + ff = ptt.join(field_dir(ptt.join(getenv('BOSS_SPECTRO_REDUX'),getenv('RUN2D')),field),flatinfoname) + if ptt.exists(ff): + if ptt.exists(ptt.join(outdir,flatinfoname)): + continue + symlink(ff,ptt.join(outdir,flatinfoname)) + continue + elif ptt.exists(ff+'.gz'): + if ptt.exists(ptt.join(outdir,flatinfoname+'.gz')): + continue + symlink(ff+'.gz',ptt.join(outdir,flatinfoname)+'.gz') + continue + if no_run: + continue + plottitle = flatinfoname.replace('.fits','.ps') + marcs = match_arc(plan[arcs], plan[f]) + if marcs is None: + continue + for arc in marcs: + arcname = arc['name'][i] + arcinfoname = arcname.replace('.fit','fits').replace('sdr','spArc') + try: + cartid = fits.getheader(ptt.join(specdir,f'{mj}',flatname))['cartid'] + except: + cartid = fits.getheader(ptt.join(specdir,f'{mj}',flatname+'.gz'))['cartid'] + idl = ('spcalib, {flatname}, {arcname}, cartid={cartid}, rawdir={specdir}, '+ + 'plottitle={plottitle}, timesep=0, outdir={outdir}, '+ + 'flatinfoname={flatinfoname}, arcinfoname={arcinfoname} ') + if int(mj)< 59030: + idl += ', /legacy' + elif int(mj)<59550: + idl += ', /plates' + idl = idl.format(flatname=flatname,arcname=arcname,cartid=cartid, + specdir=specdir,plottitle=plottitle,outdir=outdir, + flatinfoname=flatinfoname, arcinfoname=arcinfoname) + script = 'idl -e "{idl}"'.format(idl=idl) + logfile = ptt.join(dir_,'logs',f'{mjd}', flatinfoname.replace('.fits','.log')) + cmds.append(script) + logs.append(logfile) + + if no_run: + return + if len(cmds)> 0: + return + + if not noslurm: + queue1 = queue(verbose=True) + + + share=True + maxnodes = 5 + alloc = getenv('SLURM_ALLOC') + maxcore = int(getenv('SLURM_PPN')) + if nodes is not None: + maxnodes = Nones + ncmds = len(cmds) + nnodes = int(np.ceil(ncmds/maxcore)) + + if nnodes > maxnodes: + nnodes=maxnodes + ncore = int(np.ceil(nmjds/nnodes)) + if ncore > maxcore: + ncore = maxcore + + + if len(mjd) == 1: mjs = ' '+mjd[0] + else: mjs='' + + if not noslurm: + queue1.create(label='BOSSFlatlib_'+getenv('RUN2D')+mjs, nodes=nnodes, + ppn=ncore, qos='sdss', shared=share, walltime='168:00:00', alloc=alloc) + + for i, cmd in enumerate(cmds): + if not noslurm: + queue1.append(cmd, outfile = logs[i]+'.o', errfile = logs[i]+'.e') + else: + print(cmd+' > '+logs[i]+'.o 2> '+logs[i]+'.e') + queue1.commit(hard=True, submit=submit) + + +def reduce(dir_, mjd, link=False, lco=False, plates=False, nodes=None,no_run=False, + legacy=False, fps=False, nosubmit=False, deep=False, link_all=False): + + if fps or legacy or plates: + specdir= 'BOSS_SPECTRO_DATA_S' if lco else 'BOSS_SPECTRO_DATA_N' + specdir = getenv(specdir) + mjd=[ptt.basename(x) for x in glob(ptt.join(specdir,'?????'))] + mjd=np.asarray(mjd,dtype=int) + mjd = mjd[np.where(mjd >= 59550)[0]] if fps else mjd[np.where(mjd < 59550)[0]] + if plates: + mjd = mjd[np.where(mjd >= 59030)[0]] + if legacy: + mjd = mjd[np.where(mjd <59030)[0]] + mjd = mjd.astype(str).tolist() + + obs = 'lco' if lco else 'apo' + makedirs(ptt.join(dir_,'calibs',obs), exist_ok = True) + if not deep: + libmjd = [ptt.basename(ptt.dirname(x)) for x in glob(ptt.join(dir_,'calibs',obs,'?????','spPlanTrace*'))] + else: + libmjd = [] + mjds=[] + for mj in mjd: + if mj not in libmjd: + if ptt.exists(ptt.join(getenv('BOSS_SPECTRO_REDUX'),getenv('RUN2D'), + 'trace',mj,f'spPlanTrace-{mj}_{obs.upper()}.par')): + makedirs(ptt.join(dir_,'calibs',obs,mj), exist_ok= True) + if not ptt.exists(ptt.join(dir_,'calibs', obs,mj, + f'spPlanTrace-{mj}_{obs.upper()}.par')): + copy2(ptt.join(getenv('BOSS_SPECTRO_REDUX'),getenv('RUN2D'), + 'trace',mj,f'spPlanTrace-{mj}_{obs.upper()}.par'), + ptt.join(dir_,'calibs', obs,mj, + f'spPlanTrace-{mj}_{obs.upper()}.par')) + mjds.append(mj) + continue + if not no_run: + makedirs(ptt.join(dir_,'calibs',obs,mj), exist_ok= True) + + nmjds = spplanTrace(mjd=mj,lco=lco, legacy=legacy, plates=plates, + sav_dir=ptt.join(dir_,'calibs',obs), flib=True) + + if nmjds is not None: + mjds.append(mj) + + if link_all: + sp = '2' if lco else '1' + for f in tqdm(glob(ptt.join(getenv('BOSS_SPECTRO_REDUX'),getenv('RUN2D'), + f'??????','??????','spFlat-?{sp}-????????.fits.gz'))): + tmjd = str(fits.getval(f,'MJD')) + if tmjd in mjd: + os.makedirs(ptt.join(dir_,'calibs',obs,tmjd), exist_ok=True) + if not ptt.exists(ptt.join(dir_,'calibs',obs,tmjd,ptt.basename(f))): + os.symlink(ptt.abspath(f), ptt.join(dir_,'calibs',obs,tmjd,ptt.basename(f))) + + create_run(dir_, specdir, mjds, obs = obs, submit=(not nosubmit), + link=link, nodes =nodes, no_run=no_run) + diff --git a/python/boss_drp/__init__.py b/python/boss_drp/__init__.py new file mode 100644 index 000000000..d42ec3262 --- /dev/null +++ b/python/boss_drp/__init__.py @@ -0,0 +1,41 @@ +#import subprocess +#import os +#from pkg_resources import resource_filename + +from sdsstools import get_package_version +#from sdsstools import get_config, Configuration +import os +import numpy as np +import warnings +__version__ = get_package_version(__file__, 'boss_drp') or 'dev' + + + + +try: + daily_dir = os.getenv('DAILY_DIR') +except: + daily_dir = None + pass +if daily_dir is None: + daily_dir = os.path.join(os.getenv('HOME'),'daily') + os.environ['DAILY_DIR'] = daily_dir + +class MissingEnvVarWarning(UserWarning): + pass + +class MissingEnvVarError(Exception): + pass + +try: + idlspec2d_dir = os.getenv('IDLSPEC2D_DIR') +except: + idlspec2d_dir = None +if idlspec2d_dir is None: + warnings.warn('IDLSPEC2D_DIR ENV Variable is not set',MissingEnvVarWarning) + os.environ['IDLSPEC2D_DIR'] = os.path.dirname(os.path.dirname(os.path.dirname(__file__))) +idlspec2d_dir = os.getenv('IDLSPEC2D_DIR') + + + +favicon ="https://www.sdss.org/wp-content/uploads/2022/04/cropped-cropped-site_icon_SDSSV-192x192.png" diff --git a/bin/field.py b/python/boss_drp/field.py similarity index 57% rename from bin/field.py rename to python/boss_drp/field.py index 4adbaf2bf..99254bd8a 100644 --- a/bin/field.py +++ b/python/boss_drp/field.py @@ -1,8 +1,66 @@ #!/usr/bin/env python3 +import numpy as np +import os.path as ptt def field_to_string(field): + if field == '*': + field = str(0).zfill(6) + field = field.replace('0','?') + return(field) return(str(field).zfill(6)) +def field_spec_dir(topdir,run2d,field, mjd, epoch=False, full=True, custom=False, custom_name=None): + stype = 'full' if full else 'lite' + if epoch: + dir_ = ptt.join(topdir, run2d, 'spectra', 'epoch', stype, fieldgroup(field, custom=custom), + field_to_string(field), str(mjd)) + elif custom_name is not None: + dir_ = ptt.join(topdir, run2d, 'spectra', custom_name, stype, fieldgroup(field, custom=custom), + field, str(mjd)) + else: + dir_ = ptt.join(topdir, run2d, 'spectra','daily', stype, fieldgroup(field, custom=custom), + field_to_string(field), str(mjd)) + return(dir_) + +def field_png_dir(imagebase, run2d, run1d, field, mjd, epoch=False, custom = False, custom_name=None): + sfield = field_to_string(field) + if epoch: + dir_ = ptt.join(imagebase, run2d, 'images', 'epoch', run1d, fieldgroup(field, custom=custom), + sfield, sfield+'-'+str(mjd)) + elif custom_name is not None: + dir_ = ptt.join(imagebase, run2d, 'images',custom_name, run1d, fieldgroup(field, custom=custom), + field, field+'-'+str(mjd)) + else: + dir_ = ptt.join(imagebase, run2d, 'images', 'daily', run1d, fieldgroup(field, custom=custom), + sfield, sfield+'-'+str(mjd)) + return(dir_) + +def field_dir(topdir2d, fielddir, custom=False): + if custom: + dir_ = ptt.join(topdir2d, 'fields', + fieldgroup(fielddir, custom=True), + fielddir) + elif fielddir == '*': + zfield = field_to_string(0) + zfieldgrp = fieldgroup(zfield).replace('0','?') + zfield = zfield.replace('0','?') + dir_ = ptt.join(topdir2d, 'fields', zfieldgrp, zfield) + else: + dir_ = ptt.join(topdir2d, 'fields', fieldgroup(fielddir), fielddir) + return(dir_) + +def fieldgroup(field, custom=False): + field = str(field) + if custom: + if len(field.split('_')) == 1: + return(field) + else: + return('_'.join(field.split('_')[:-1])) + elif str(field).isnumeric(): + return(str(np.floor(int(field)/1000).astype(int)).zfill(3)+'XXX') + else: + return(field) + class Fieldtype: def __init__(self, fieldid=None, mjd=None): self.fieldid=fieldid diff --git a/python/boss_drp/post/__init__.py b/python/boss_drp/post/__init__.py new file mode 100644 index 000000000..281b145e5 --- /dev/null +++ b/python/boss_drp/post/__init__.py @@ -0,0 +1,2 @@ +from .plot_sky_coverage import plot_sky_targets, plot_sky_locations +from .plot_QA import plot_QA diff --git a/bin/fieldlist.py b/python/boss_drp/post/fieldlist.py similarity index 61% rename from bin/fieldlist.py rename to python/boss_drp/post/fieldlist.py index 0d717fdb0..85ac1b9ad 100755 --- a/bin/fieldlist.py +++ b/python/boss_drp/post/fieldlist.py @@ -1,32 +1,34 @@ #!/usr/bin/env python3 +from boss_drp import idlspec2d_dir, favicon +from boss_drp.field import field_to_string, field_dir, field_png_dir, field_spec_dir +from boss_drp.utils import match as wwhere +from boss_drp.utils import (grep, get_lastline, merge_dm, Splog, jdate, retry) +from boss_drp.post import plot_sky_targets, plot_sky_locations import argparse import sys +import os import os.path as ptt -import logging import numpy as np from pydl.pydlutils.yanny import yanny, read_table_yanny +from pydl.pydlutils import sdss from astropy.io import fits from astropy.table import Table, Column, unique -from os import getenv, remove, makedirs, rename +import astropy.time from glob import glob import time import datetime -import astropy.time -import os -import re -import time -from pydl.pydlutils import sdss -import mmap -from merge_dm import merge_dm -from splog import Splog import matplotlib matplotlib.use('agg') from matplotlib import pyplot as plt +import gc +from jinja2 import Template + splog = Splog() -# this version does not + +# this version does not # - remove partial epochs # - allow purge of partial # - check for aborted combines @@ -37,224 +39,22 @@ pulic_plate_data = None spPlatelistMessage =False try: - sdss.set_maskbits(maskbits_file=getenv("IDLUTILS_DIR")+"/data/sdss/sdssMaskbits.par") + sdss.set_maskbits(maskbits_file=ptt.join(os.getenv("IDLUTILS_DIR"),"data","sdss","sdssMaskbits.par")) except: splog.log('Environmental Varable IDLUTILS_DIR must be set') exit() - -def plot_sky(topdir, flist, flist_file): - idx = np.where(np.char.strip(flist['STATUS1D'].data) == 'Done')[0] - - RA = flist['RACEN'].data[idx] - DEC = flist['DECCEN'].data[idx] - prog = np.char.upper(flist[idx]['PROGRAMNAME'].data) - fcad = np.char.lower(flist[idx]['FIELD_CADENCE'].data) - fsur = np.char.lower(flist[idx]['SURVEY'].data) - status = np.char.lower(flist[idx]['STATUS1D'].data) - -# plot the RA/DEC in an area-preserving projection -# convert coordinates to degrees - RA *= np.pi / 180 - DEC *= np.pi / 180 - phi = np.linspace(0, 2.*np.pi, 36) #36 points - r = np.radians(1.5) - C0=C1=C2=C3=C4=C5=C6=C7=0 - - fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.0)) - ax = plt.axes(projection='mollweide') - plt.grid(True) - plt.title('SDSS plate/field locations') - for i in range(0, len(RA)): - - if RA[i] < np.pi: - x = RA[i] + r*np.cos(phi) - else: - x = RA[i] + r*np.cos(phi)-2*np.pi - y = DEC[i] + r*np.sin(phi) - if 'dark' in fcad[i].lower(): - label = 'FPS DARK' if C0 == 0 else None - ax.plot(x, y, color = 'blue', label = label, alpha=.5) - C0 = 1 - elif 'bright' in fcad[i]: - label = 'FPS BRIGHT' if C1 == 0 else None - ax.plot(x, y, color = 'orange', label = label, alpha=.5) - C1 = 1 - elif 'plate' in fcad[i]: - label = 'PLATE' if C2 == 0 else None - ax.plot(x, y, color = 'green', label = label, alpha=.5) - C2 = 1 - else: -# pass - label = 'MANUAL' if C3 == 0 else None - ax.plot(x, y, color = 'saddlebrown', label = label, alpha=.5) - C3 = 1 - - plt.legend(loc=1,fontsize=10) - xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] - ax.set_xticklabels(xlab) - fig.tight_layout() - plt.savefig(ptt.join(topdir,'SDSSVc_s.png'),dpi=50,bbox_inches='tight') - plt.savefig(ptt.join(topdir,'SDSSVc.png'),dpi=500,bbox_inches='tight') - plt.close() - - C0=C1=C2=C3=C4=C5=C6=C7=C8=C9=0 - -#################################################################################### - fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.0)) - ax = plt.axes(projection='mollweide') - plt.grid(True) - plt.title('SDSS-V plate/field locations') - for i in range(0, len(RA)): - if RA[i] < np.pi: - x = RA[i] + r*np.cos(phi) - else: - x = RA[i] + r*np.cos(phi)-2*np.pi - y = DEC[i] + r*np.sin(phi) - if 'RM' in prog[i]: - label = 'RM' if C0 == 0 else None - ax.plot(x, y, color = 'blue', label = label) - C0 = 1 - elif 'MWM' in prog[i]: - label = 'MWM' if C1 == 0 else None - ax.plot(x, y, color = 'red', label = label) - C1 = 1 - elif 'AQMES-Medium'.upper() in prog[i]: - label = 'AQMES-Medium' if C2 == 0 else None - ax.plot(x, y, color = 'pink', label = label) - C2 = 1 - elif 'AQMES-Wide'.upper() in prog[i]: - label = 'AQMES-Wide' if C3 == 0 else None - ax.plot(x, y, color = 'orange', label = label) - C3 = 1 - elif 'AQMES-Bonus'.upper() in prog[i]: - label = 'AQMES-Bonus' if C4 == 0 else None - ax.plot(x, y, color = 'magenta', label = label) - C4 = 1 - elif 'eFEDS'.upper() in prog[i]: - label = 'eFEDS' if C5 == 0 else None - ax.plot(x, y, color = 'green', label = label) - C5 = 1 - elif 'OFFSET'.upper() in prog[i]: - label = 'OFFSET' if C6 == 0 else None - ax.plot(x, y, color = 'black', label = label) - C6 = 1 - elif 'mwm-bhm' in fsur[i]: - label = 'MWM-BHM FPS' if C7 == 0 else None - ax.plot(x, y, color = 'navy', label = label) - C7 = 1 - elif 'bhm-mwm' in fsur[i]: - label = 'BHM-MWM FPS' if C8 == 0 else None - ax.plot(x, y, color = 'lightcoral', label = label) - C8 = 1 - else: - ax.plot(x, y, color = 'saddlebrown') - C9 = 1 - plt.legend(loc=1,fontsize=10) - xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] - ax.set_xticklabels(xlab) - fig.tight_layout() - plt.savefig(ptt.join(topdir,'SDSSV_s.png'),dpi=50,bbox_inches='tight') - plt.savefig(ptt.join(topdir,'SDSSV.png'),dpi=500,bbox_inches='tight') - plt.close() - -#################################################################################### - file_c = flist_file.replace('fieldlist','spAll')+'.gz' - if os.path.exists(file_c): - hdu_list = fits.open(file_c) - table_hdu = hdu_list[1] - table_data = table_hdu.data - else: table_data=Table(names=('RACAT','DECCAT', 'PROGRAMNAME','NSPECOBS')) - RA1=table_data.field('RACAT') - DEC1=table_data.field('DECCAT') - Nobs=table_data.field('NSPECOBS') - - if len(RA1) == 0: - RA1 =np.asarray([np.NaN]) - DEC1=np.asarray([np.NaN]) - Nobs=np.zeros_like(DEC1) - RA1 *= np.pi / 180 - DEC1 *= np.pi / 180 - for i in range(0, len(RA1)): - if RA1[i] >= np.pi: - RA1[i]=RA1[i]-2*np.pi - - fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.0)) - ax = plt.axes(projection='mollweide') - with np.errstate(invalid="ignore"): - plt.scatter(RA1, DEC1, s=2, c=Nobs, cmap=plt.cm.jet, - edgecolors='none', linewidths=0) - plt.grid(True) - plt.title('SDSS Observed Targets') - cb = plt.colorbar(cax=plt.axes([0.05, 0.1, 0.9, 0.05]), - orientation='horizontal') - xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] - ax.set_xticklabels(xlab) - cb.set_label('Nobs') - plt.savefig(ptt.join(topdir,'SDSSV2_s.png'),dpi=50,bbox_inches='tight') - plt.savefig(ptt.join(topdir,'SDSSV2.png'),dpi=500,bbox_inches='tight') - plt.close() - -#################################################################################### - allpointings = Table() - idx = np.where(np.char.strip(flist['STATUS1D'].data) == 'Done')[0] - if len(idx) == 0: - allpointings['RA'] = [np.NaN] - allpointings['DEC'] = [np.NaN] - allpointings['Nexp'] = [np.NaN] - else: - allpointings['RA'] = flist['RACEN'].data[idx] - allpointings['DEC'] = flist['DECCEN'].data[idx] - allpointings['Nexp'] = flist['NEXP'].data[idx] - - - pointings = unique(allpointings, keys=['RA','DEC']) - pointings.add_column(0, name='Nobs') - pointings['Nexp'] = 0 - - pointings.add_column(0.0, name='x') - pointings.add_column(0.0, name='y') - for row in pointings: - idx = np.where((allpointings['RA'].data == row['RA']) & - (allpointings['DEC'].data == row['DEC']))[0] - row['Nobs'] = len(idx) - row['Nexp'] = np.sum(allpointings[idx]['Nexp'].data) - if row['RA']*np.pi / 180 < np.pi: - row['x'] = row['RA']*np.pi / 180 - else: - row['x'] = row['RA']*np.pi / 180 - 2*np.pi - row['y'] = row['DEC']*np.pi / 180 - - - fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.0)) - ax = plt.axes(projection='mollweide') - with np.errstate(invalid="ignore"): - plt.scatter(pointings['x'].data, pointings['y'].data, s=30, - c=pointings['Nobs'].data, marker= 'x', - cmap=plt.cm.jet,alpha=.5) - - plt.grid(True) - plt.title('SDSS field locations') - cb = plt.colorbar(cax=plt.axes([0.05, 0.1, 0.9, 0.05]), - orientation='horizontal') - - xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] - ax.set_xticklabels(xlab) - cb.set_label('Number of Field-MJD ') - plt.savefig(ptt.join(topdir,'SDSSV3.png'),dpi=500,bbox_inches='tight') - plt.savefig(ptt.join(topdir,'SDSSV3_s.png'),dpi=50,bbox_inches='tight') - plt.close() - - -def field_to_string(field): - return(str(int(field)).zfill(6)) - def getquality(row,basehtml,epoch=False, dereddened_sn2=False, rawsn2=False): sfield = field_to_string(row['FIELD']) if epoch is True: - row['PLOTSN'] = 'SNPLOT' + plotsn = ptt.join(field_dir(ptt.join(basehtml,row['RUN2D']),row['FIELD']), + 'epoch','spSN2d-'+sfield+'-'+str(row['MJD'])+'.pdf') else: - row['PLOTSN'] = 'SNPLOT' + plotsn = ptt.join(field_dir(ptt.join(basehtml,row['RUN2D']),row['FIELD']), + 'spSN2d-'+sfield+'-'+str(row['MJD'])+'.pdf') + if not ptt.exists(plotsn): + plotsn = plotsn.replace('.pdf','.ps') + row['PLOTSN'] = 'SNPLOT' row['FIELDQUALITY'] = '' @@ -332,21 +132,21 @@ def getquality(row,basehtml,epoch=False, dereddened_sn2=False, rawsn2=False): return(row) -def getoutputs(row,basehtml,epoch=False): +def getoutputs(row,basehtml,epoch=False, custom=None): sfield = field_to_string(row['FIELD']) - if epoch is True: - row['PLOTS'] = 'PLOTS' - row['DATA'] = 'DATA' - else: - row['PLOTS'] = 'PLOTS' - row['DATA'] = 'DATA' - + cc = False if custom is None else True + PLOTS = field_png_dir(basehtml,row['RUN2D'],row['RUN1D'],row['FIELD'], + row['MJD'],epoch=epoch, custom_name=custom, custom=cc) + DATA = field_spec_dir(basehtml,row['RUN2D'],row['FIELD'],row['MJD'], + epoch=epoch, custom_name=custom, custom=cc) + row['PLOTS'] = 'PLOTS' + row['DATA'] = 'DATA' return(row) def get_chunkinfo(row): global chunkdata if chunkdata is None: - chunkfile = ptt.join(getenv('PLATELIST_DIR'), 'platePlans.par') + chunkfile = ptt.join(os.getenv('PLATELIST_DIR'), 'platePlans.par') try: chunkdata = Table(yanny(chunkfile)['PLATEPLANS']) except: @@ -366,13 +166,7 @@ def get_chunkinfo(row): row['CHUNKHTML'] = ''+cinfo['chunk']+'' return(row) -def wwhere(array, value): - value = value.replace('*','[\w]*') - r = re.compile(value, re.IGNORECASE) - ret = np.full(len(array), False) - idx = [i for i, x in enumerate(array) if r.search(x)] - ret[idx] = True - return(ret) + def read_spec1d(row, path, fieldfile, epoch=False): spZfile = ptt.join(path, row['RUN1D'], 'spZbest-'+row['FIELD']+'-'+row['MJD']+'.fits') @@ -491,7 +285,7 @@ def publicdata(row): global pulic_plate_data global spPlatelistMessage if pulic_plate_data is None: - publicfile = ptt.join(getenv('SPECLOG_DIR'), 'opfiles', 'spPlateList.par') + publicfile = ptt.join(os.getenv('SPECLOG_DIR'), 'opfiles', 'spPlateList.par') try: pulic_plate_data=read_table_yanny(publicfile,'SPPLATELIST') pulic_plate_data.convert_bytestring_to_unicode() @@ -525,7 +319,10 @@ def get_survey(row, fieldfile): #f"spfibermap-{row['FIELD']}-{row['MJD']}.fits", -1) row['FIELD_CADENCE'] = fmap[0]['FIELDCADENCE'] except: + fmap = None pass + else: + fmap = None if 'FIELD_CADENCE' in row.keys(): if 'bright' in row['FIELD_CADENCE'].lower(): @@ -551,8 +348,56 @@ def get_survey(row, fieldfile): if row['FIELD_CADENCE'] == '': row['FIELD_CADENCE'] = 'Commissioning' + if 'DESIGN_VERS' not in row.keys(): + try: + if fmap is None: + fmap = fits.getdata(fieldfile.replace('spField','spfibermap'),-1) + row['DESIGN_VERS'] = fmap[0]['DESIGN_VERS'] + except: + pass + + return(row) + +def get_DesignMode(path,plan,row, epoch=False): + yplan = yanny(ptt.join(path,plan)) + hdr = yplan.new_dict_from_pairs() + planlist = hdr['planfile2d'] + planlist = planlist.replace("'","").split(' ') + designMode = [] + cfids = yplan['SPEXP']['mapname'].astype(str) + + if epoch: + path = ptt.join(path,'..') + + for plan2d in planlist: + yp2d = yanny(ptt.join(path,plan2d)) + hdr = yp2d.new_dict_from_pairs() + mjd = hdr['MJD'] + field = hdr['fieldname'] + spFibermap = 'spfibermap-'+field_to_string(field)+'-'+str(mjd)+'.fits' + if ptt.exists(ptt.join(path,spFibermap)): + with fits.open(ptt.join(path,spFibermap)) as hdul: + for i, ext in enumerate(hdul[1].data['EXTNAME']): + en = (ext.replace('.par','').replace('plPlugMapM-','') + .replace('confSummaryF-','') + .replace('confSummary-','')) + if en in cfids: + try: + designMode.append(hdul[1].data['DESIGN_MODE'][i]) + except Exception as e: + print(e) + pass + if len(designMode) == 0: + row['DESIGN_MODE'] = '' + else: + designMode = np.unique(np.asarray(designMode)) + if len(designMode) > 1: + row['DESIGN_MODE'] = 'mixed_mode' + else: + row['DESIGN_MODE'] = designMode[0] return(row) + def get_2d_status(path,plan,row, epoch=False): @@ -598,7 +443,7 @@ def get_2d_status(path,plan,row, epoch=False): st.append(0) row['MJDLIST'] = ' '.join(mjdlist) if epoch: - if sum(st) >0 and st[-1] ==1: + if sum(st) >0 and (st[-1] ==1 or int(mjdlist[-1]) < jdate.mjd - 2): statusmissing = False statusrun = False @@ -611,28 +456,9 @@ def get_2d_status(path,plan,row, epoch=False): return(row) -def get_lastline(filepath): - with open(filepath, 'rb') as f: - try: # catch OSError in case of a one line file - f.seek(-2, os.SEEK_END) - while f.read(1) != b'\n': - f.seek(-2, os.SEEK_CUR) - except OSError: - f.seek(0) - last_line = f.readline().decode() - return(last_line) - -def grep(filepath, grepstr): - with open(filepath, 'rb', 0) as f: - s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) - if s.find(grepstr.encode('UTF-8')) != -1: - return(True) - return(False) - - - -def get_cols(fieldfile, Field_list, run2d, run1d, legacy = False, skipcart=None, basehtml=None, epoch=False): +def get_cols(fieldfile, Field_list, run2d, run1d, legacy = False, + skipcart=None, basehtml=None, epoch=False, custom=None): if ptt.exists(fieldfile): thisrun1d = np.unique([ptt.basename(ptt.abspath(x)) for x in glob(ptt.join(ptt.dirname(fieldfile),'*')+'/')]).tolist() for dir_ in ['coadd','extraction','flat_extraction','epoch']: @@ -721,13 +547,14 @@ def get_cols(fieldfile, Field_list, run2d, run1d, legacy = False, skipcart=None, else: combineplan = fieldfile.replace('spField', 'spPlancomb').replace('.fits','.par') row = get_2d_status(ptt.dirname(combineplan),ptt.basename(combineplan),row, epoch=epoch) + row = get_DesignMode(ptt.dirname(combineplan),ptt.basename(combineplan),row, epoch=epoch) if row['STATUS2D'] != 'RUNNING': row = read_spec1d(row, ptt.dirname(combineplan), fieldfile, epoch=epoch) elif row['STATUS2D'] != 'Done': row['STATUSCOMBINE'] = 'Pending' row['STATUS1D'] = 'Pending' if row['STATUS1D'] == 'Done': - row = getoutputs(row,basehtml, epoch=epoch) + row = getoutputs(row,basehtml, epoch=epoch, custom=custom) else: row['PLOTS'] = '' row['DATA'] = '' @@ -739,6 +566,7 @@ def get_cols(fieldfile, Field_list, run2d, run1d, legacy = False, skipcart=None, Field_list.add_row(row) else: ## no spField exists + splog.info(f'{ptt.basename(fieldfile)} not found, checking intermediate status') row={} row['RUN2D'] = run2d if epoch: @@ -793,6 +621,7 @@ def get_cols(fieldfile, Field_list, run2d, run1d, legacy = False, skipcart=None, combineplan = fieldfile.replace('spField', 'spPlancomb').replace('.fits','.par') row = get_2d_status(ptt.dirname(combineplan),ptt.basename(combineplan),row, epoch=epoch) + row = get_DesignMode(ptt.dirname(combineplan),ptt.basename(combineplan),row, epoch=epoch) if row['STATUSCOMBINE'] in ['RUNNING']: @@ -833,20 +662,24 @@ def get_key(fp): except: return int(ptt.splitext(int_part)[0]) -def fieldlist(create=False, topdir=getenv('BOSS_SPECTRO_REDUX'), run2d=[getenv('RUN2D')], run1d=[getenv('RUN1D')], outdir=None, - legacy=False, custom=None, skipcart=None, basehtml=None, datamodel= None, epoch=False, logfile=None, noplot=False, - field=None, mjd=None, **kwrd): - +def fieldlist(create=False, topdir=os.getenv('BOSS_SPECTRO_REDUX'), run2d=[os.getenv('RUN2D')], + run1d=[os.getenv('RUN1D')], outdir=None, legacy=False, custom=None, + skipcart=None, basehtml=None, datamodel= None, epoch=False, return_tab=False, + logfile=None, noplot=False, field=None, mjd=None, debug=False, **kwrd): + if datamodel is None: - datamodel = ptt.join(getenv('IDLSPEC2D_DIR'), 'datamodel', 'fieldList_dm.par') + datamodel = ptt.join(idlspec2d_dir, 'datamodel', 'fieldList_dm.par') global oplimit_filename - oplimit_filename = ptt.join(getenv('IDLSPEC2D_DIR'),'examples','opLimits.par') + oplimit_filename = ptt.join(idlspec2d_dir,'examples','opLimits.par') - if basehtml is None: - basehtml = '../' - if epoch is True: - basehtml = '../../' + if (field is not None) and (mjd is not None): + if basehtml is None: + basehtml = '../' + if epoch is True: + basehtml = '../../' + else: + basehtml = '../../../' if run1d is None: run1d = run2d @@ -857,13 +690,15 @@ def fieldlist(create=False, topdir=getenv('BOSS_SPECTRO_REDUX'), run2d=[getenv(' srun2d = '-'.join(run2d) if outdir is None: if epoch is True: - outdir = ptt.join(topdir, srun2d, 'epoch') + outdir = ptt.join(topdir, srun2d, 'summary', 'epoch') else: - outdir = ptt.join(topdir, srun2d) - makedirs(outdir, exist_ok = True) + outdir = ptt.join(topdir, srun2d, 'summary', 'daily') + os.makedirs(outdir, exist_ok = True) # if the create flag not set and the fieldlist file already exists then return the info in that file - fitsfile = ptt.join(outdir, 'fieldlist-'+srun2d+'.fits') - + if epoch is True: + fitsfile = ptt.join(outdir, 'fieldlist-'+srun2d+'-epoch.fits') + else: + fitsfile = ptt.join(outdir, 'fieldlist-'+srun2d+'.fits') if (field is None) and (mjd is None): global splog if logfile is None: @@ -877,7 +712,7 @@ def fieldlist(create=False, topdir=getenv('BOSS_SPECTRO_REDUX'), run2d=[getenv(' else: splog = kwrd['fmsplog'] - + splog.no_exception = debug if ptt.exists(fitsfile) and create is False: return(Table(fits.getdata(fitsfile,1))) @@ -902,22 +737,26 @@ def fieldlist(create=False, topdir=getenv('BOSS_SPECTRO_REDUX'), run2d=[getenv(' elif custom is None: base = 'spPlancomb' if epoch is not False: - fullfiles = sorted(glob(ptt.join(path,'*', 'epoch', base+'-*.par')), key=get_key) + fullfiles = sorted(glob(ptt.join(field_dir(path,'*'),'epoch', base+'-*.par')), key=get_key) else: - fullfiles = sorted(glob(ptt.join(path,'*', base+'-*.par')), key=get_key) + fullfiles = sorted(glob(ptt.join(field_dir(path,'*'), base+'-*.par')), key=get_key) - for ff in fullfiles: + nfields = len(fullfiles) + for ifield, ff in enumerate(fullfiles): if (field is not None) and (mjd is not None): if f"{field}-{mjd}" not in ff: continue - splog.log('Reading '+ff) ff = ff.replace('.par','.fits').replace(base, 'spField') - Field_list = get_cols(ff, Field_list, r2, run1d, legacy=legacy, skipcart=skipcart, basehtml=basehtml, epoch=epoch) + splog.log('Reading '+ff+ f' ({ifield+1}/{nfields})') + Field_list = get_cols(ff, Field_list, r2, run1d, legacy=legacy, + skipcart=skipcart, basehtml=basehtml, + epoch=epoch, custom=custom) if 'TILEID' in Field_list.colnames: + splog.log('Checking for best field in each unique tile') #---------- # Decide which fields constitute unique tiles with the required S/N, # then set QSURVEY=1. @@ -929,6 +768,8 @@ def fieldlist(create=False, topdir=getenv('BOSS_SPECTRO_REDUX'), run2d=[getenv(' fqual = np.char.lower(Field_list['FIELDQUALITY'].data.astype(str)) tilelist = np.sort(np.unique(Field_list['TILEID'].data)) qsurv = Field_list['QSURVEY'] + ibest = None + indx = None for itile in tilelist: indx = np.where((tids == itile) & ((fqual == 'good') | (fqual == 'marginal')) & @@ -937,74 +778,99 @@ def fieldlist(create=False, topdir=getenv('BOSS_SPECTRO_REDUX'), run2d=[getenv(' if (len(indx) > 0): ibest = np.argmax(Field_list[indx]['FIELDSN2'].data) qsurv[indx[ibest]] = 1 - - if (field is None) and (mjd is None): - try: - write_fieldlist(outdir, Field_list, srun2d, datamodel, basehtml, - splog=splog, legacy=legacy, noplot=noplot, tmpext=tmpext) - except: - time.sleep(60) - write_fieldlist(outdir, Field_list, srun2d, datamodel, basehtml, - splog=splog, legacy=legacy, noplot=noplot, tmpext=tmpext) + del tids + del surv + del fqual + del tilelist + del qsurv + del indx + try: + del ibest + except: + pass + del fullfiles - splog.log('Successful completion of fieldlist at '+ time.ctime()) - splog.close() + if (field is None) and (mjd is None): + write_fieldlist(outdir, Field_list, ptt.basename(fitsfile), srun2d, datamodel, basehtml, + splog=splog, legacy=legacy, noplot=noplot, tmpext=tmpext) if (field is not None) and (mjd is not None): idx = np.where((Field_list['FIELD'] == field) & (Field_list['MJD'] == int(mjd)))[0] if len(idx) > 0: return(Field_list[idx[0]]) - return(Field_list) -def write_fieldlist(outdir, Field_list, srun2d, datamodel, basehtml, splog=None, legacy=False, noplot=False, tmpext = '.tmp'): - #if ptt.exists(ptt.join(outdir,'fieldlist-'+srun2d+'.fits')): - # remove(ptt.join(outdir,'fieldlist-'+srun2d+'.fits')) - fhdu = merge_dm(table=Field_list, ext = 'FIELDLIST', name = 'FIELDLIST', - dm =datamodel, splog=splog, drop_cols=['PLOTSN','DATA','PLOTS']) if not noplot: - plot_sky(outdir, Field_list, ptt.join(outdir,'fieldlist-'+srun2d+'.fits')) + if not return_tab: + del Field_list + Field_list = None + else: + Field_list = None + retry(plot_sky_locations, retries=3, delay=5, logger=splog.log, + topdir=outdir, flist_file=ptt.basename(fitsfile), splog=splog) + if not ptt.exists(ptt.join(outdir,'SDSSV2.png')): + retry(plot_sky_targets, retries=3, delay=5, logger=splog.log, + topdir=outdir, + spall_file=ptt.join(outdir,'spAll-'+srun2d+'.fits'+'.gz'), + splog=splog, nobs=True) + elif return_tab: + Field_list = Table.read(fitsfile) + Field_list.convert_bytestring_to_unicode() + else: + Field_list = None + splog.log('Successful completion of fieldlist at '+ time.ctime()) + splog.close() + return(Field_list) - hdu = merge_dm(ext='Primary', hdr = {'RUN2D':srun2d,'Date':time.ctime()}, dm = datamodel, splog=splog) - - splog.info('writing: '+ptt.join(outdir,'fieldlist-'+srun2d+'.fits')) - hdul = fits.HDUList([hdu, fhdu]) - hdul.writeto(ptt.join(outdir,'fieldlist-'+srun2d+'.fits'+tmpext), overwrite=True) - rename(ptt.join(outdir,'fieldlist-'+srun2d+'.fits'+tmpext), ptt.join(outdir,'fieldlist-'+srun2d+'.fits')) - - cols = {'FIELD':'FIELD','MJD':'MJD','OBS':'OBSERVATORY','PLOTS':'PLOTS','RACEN':'RACEN','DECCEN':'DECCEN', - 'RUN2D':'RUN2D','RUN1D':'RUN1D','DATA':'DATA','QUALITY':'FIELDQUALITY','EXPTIME':'EXPTIME', - 'SN^2':'FIELDSN2','N_gal':'N_GALAXY','N_QSO':'N_QSO','N_star':'N_STAR','N_unk':'N_UNKNOWN', - 'N_sky':'N_SKY','N_std':'N_STD','MOON_FRAC':'MOON_FRAC','SURVEY':'SURVEY','PROG':'PROGRAMNAME', +def write_fieldlist(outdir, Field_list, fitsfile, srun2d, datamodel, basehtml, splog=None, legacy=False, noplot=False, tmpext = '.tmp'): + cols = {'FIELD':'FIELD','MJD':'MJD','OBSERVATORY':'OBS','PLOTS':'PLOTS','RACEN':'RACEN','DECCEN':'DECCEN', + 'RUN2D':'RUN2D','RUN1D':'RUN1D','DATA':'DATA','FIELDQUALITY':'QUALITY','EXPTIME':'EXPTIME', + 'FIELDSN2':'SN^2','N_GALAXY':'N_gal','N_QSO':'N_QSO','N_STAR':'N_star','N_UNKNOWN':'N_unk', + 'N_SKY':'N_sky','N_STD':'N_std','MOON_FRAC':'MOON_FRAC','SURVEY':'SURVEY','PROGRAMNAME':'PROG', + 'DESIGN_MODE':'DESIGN_MODE',#'DESIGN_VERS':'DESIGN_VERS', 'FIELD_CADENCE':'FIELD_CADENCE','DESIGNS':'DESIGNS','PUBLIC':'PUBLIC'} - - html_writer(basehtml, Field_list.copy(), outdir, 'fieldlist.html', srun2d, legacy, sort='field', order=cols, title = 'SDSS BOSS Spectroscopy Fields Observed List') - html_writer(basehtml, Field_list.copy(), outdir, 'fieldlist-mjdsort.html', srun2d, legacy, sort='mjd',order=cols, title = 'SDSS BOSS Spectroscopy Fields Observed List') - - html_writer(basehtml, Field_list[Field_list['OBSERVATORY'] == 'LCO'].copy(), outdir, 'fieldlist_LCO.html', srun2d, legacy, sort='field', order=cols, title = 'SDSS BOSS Spectroscopy LCO Fields Observed List') - html_writer(basehtml, Field_list[Field_list['OBSERVATORY'] == 'LCO'].copy(), outdir, 'fieldlist_LCO-mjdsort.html', srun2d, legacy, sort='mjd',order=cols, title = 'SDSS BOSS Spectroscopy LCO Fields Observed List') - - html_writer(basehtml, Field_list[Field_list['OBSERVATORY'] == 'APO'].copy(), outdir, 'fieldlist_APO.html', srun2d, legacy, sort='field', order=cols, title = 'SDSS BOSS Spectroscopy APO Fields Observed List') - html_writer(basehtml, Field_list[Field_list['OBSERVATORY'] == 'APO'].copy(), outdir, 'fieldlist_APO-mjdsort.html', srun2d, legacy, sort='mjd',order=cols, title = 'SDSS BOSS Spectroscopy APO Fields Observed List') - - - cols = {'FIELD':'FIELD','MJD':'MJD','OBS':'OBSERVATORY','PLOTS':'PLOTS','RACEN':'RACEN','DECCEN':'DECCEN', + try: + html_writer(basehtml, Field_list, outdir, 'fieldlist', srun2d, legacy, order=cols, title = 'SDSS BOSS Spectroscopy {obs} Fields Observed List') + except: + time.sleep(60) + html_writer(basehtml, Field_list, outdir, 'fieldlist', srun2d, legacy, order=cols, title = 'SDSS BOSS Spectroscopy {obs} Fields Observed List') + cols = {'FIELD':'FIELD','MJD':'MJD','OBSERVATORY':'OBS','PLOTS':'PLOTS','RACEN':'RACEN','DECCEN':'DECCEN', 'RUN2D':'RUN2D','RUN1D':'RUN1D', 'SN2_G1':'SN2_G1','SN2_I1':'SN2_I1','SN2_G2':'SN2_G2', - 'SN2_I2':'SN2_I2','Badpix':'FBADPIX','SUCCESS_QSO':'SUCCESS_QSO','2D':'STATUS2D', - 'Combine':'STATUSCOMBINE','1D':'STATUS1D','SNPLOT':'PLOTSN','MOON_FRAC':'MOON_FRAC', - 'EXPTIME':'EXPTIME','QUALITY':'FIELDQUALITY','FIELD_CADENCE':'FIELD_CADENCE', - 'SURVEY':'SURVEY','PROG':'PROGRAMNAME','QUALCOMMENTS':'QUALCOMMENTS'} - - html_writer(basehtml, Field_list.copy(), outdir, 'fieldquality.html', srun2d, legacy, sort='field', order=cols, title='SDSS BOSS Spectroscopy Field Quality List') - html_writer(basehtml, Field_list.copy(), outdir, 'fieldquality-mjdsort.html', srun2d, legacy, sort='mjd',order=cols, title='SDSS BOSS Spectroscopy Field Quality List') - - html_writer(basehtml, Field_list[Field_list['OBSERVATORY'] == 'LCO'].copy(), outdir, 'fieldquality_LCO.html', srun2d, legacy, sort='field', order=cols, title='SDSS BOSS Spectroscopy LCO Field Quality List') - html_writer(basehtml, Field_list[Field_list['OBSERVATORY'] == 'LCO'].copy(), outdir, 'fieldquality_LCO-mjdsort.html', srun2d, legacy, sort='mjd',order=cols, title='SDSS BOSS Spectroscopy LCO Field Quality List') + 'SN2_I2':'SN2_I2','FBADPIX':'Badpix','SUCCESS_QSO':'SUCCESS_QSO','STATUS2D':'2D', + 'STATUSCOMBINE':'Combine','STATUS1D':'1D','PLOTSN':'SNPLOT','MOON_FRAC':'MOON_FRAC', + 'EXPTIME':'EXPTIME','FIELDQUALITY':'QUALITY','FIELD_CADENCE':'FIELD_CADENCE', + 'DESIGN_MODE':'DESIGN_MODE',#'DESIGN_VERS':'DESIGN_VERS', + 'SURVEY':'SURVEY','PROGRAMNAME':'PROG','QUALCOMMENTS':'QUALCOMMENTS'} - html_writer(basehtml, Field_list[Field_list['OBSERVATORY'] == 'APO'].copy(), outdir, 'fieldquality_APO.html', srun2d, legacy, sort='field', order=cols, title='SDSS BOSS Spectroscopy APO Field Quality List') - html_writer(basehtml, Field_list[Field_list['OBSERVATORY'] == 'APO'].copy(), outdir, 'fieldquality_APO-mjdsort.html', srun2d, legacy, sort='mjd',order=cols, title='SDSS BOSS Spectroscopy APO Field Quality List') + try: + html_writer(basehtml, Field_list, outdir, 'fieldquality', srun2d, legacy, order=cols, title='SDSS BOSS Spectroscopy {obs} Field Quality List') + except: + time.sleep(60) + html_writer(basehtml, Field_list, outdir, 'fieldquality', srun2d, legacy, order=cols, title='SDSS BOSS Spectroscopy {obs} Field Quality List') +# if not noplot: +# splog.info('Producing Sky Plots') +# plot_sky(outdir, Field_list, ptt.join(outdir,'fieldlist-'+srun2d+'.fits'), nobs=False) + + splog.info('Formatting Fits File') + Field_list = merge_dm(table=Field_list, ext = 'FIELDLIST', name = 'FIELDLIST', + dm =datamodel, splog=splog, drop_cols=['PLOTSN','DATA','PLOTS']) + hdu = merge_dm(ext='Primary', hdr = {'RUN2D':srun2d,'Date':time.ctime()}, dm = datamodel, splog=splog) + + splog.info('writing: '+ptt.join(outdir,fitsfile)) + hdul = fits.HDUList([hdu, Field_list]) + try: + hdul.writeto(ptt.join(outdir,fitsfile+tmpext), overwrite=True) + os.rename(ptt.join(outdir,fitsfile+tmpext), ptt.join(outdir,fitsfile)) + except: + time.sleep(60) + hdul.writeto(ptt.join(outdir,fitsfile+tmpext), overwrite=True) + os.rename(ptt.join(outdir,fitsfile+tmpext), ptt.join(outdir,fitsfile)) + Field_list = None + hdul = None + hdu = None + return def color2hex(colorname): if colorname.strip().upper() == 'RED': return('#FF0000') @@ -1031,7 +897,7 @@ def html_format(column, cols_dic): if oplimits is None: oplimits = yanny(oplimit_filename) - raw_name = cols_dic[column.name] + raw_name = column.name #cols_dic[column.name] tl = Table(oplimits['TEXTLIMIT']) tl.convert_bytestring_to_unicode() match = tl[np.where((tl['field'].data == raw_name.upper()) & (tl['flavor'].data == 'SUMMARY') & (tl['camera'].data == '*'))[0]] @@ -1045,15 +911,20 @@ def html_format(column, cols_dic): column = column.apply(formatter, tl=match, strlimit=strlimit) return(column) -def html_writer(basehtml, Field_list, path, name, run2d, legacy, sort='field', order=None, title='SDSS Spectroscopy Fields Observed List'): - run2d = run2d.replace('-',',') +def html_writer(basehtml, Field_list, path, name, run2d, legacy, sorts=['field','mjd'], order=None, + title='SDSS Spectroscopy Fields Observed List', obss=[None, 'LCO','APO']): + #run2d = run2d.replace('-',',') if order is not None: - for col in order.keys(): - Field_list.rename_column(order[col],col) - - Field_list.keep_columns(list(order.keys())) - Field_list = Field_list[list(order.keys())] - fl_pd = Field_list.to_pandas() + #for col in order.keys(): + #Field_list.rename_column(order[col],col) + + #Field_list.keep_columns(list(order.keys())) + #Field_list = Field_list[list(order.keys())] + #fl_pd = Field_list[list(order.keys())].to_pandas() + fl_pd = Field_list[list(order.keys())].to_pandas() + fl_pd = fl_pd.rename(columns=order) + else: + fl_pd = Field_list.to_pandas() formats = {'RACEN':2,'DECCEN': 2,'SN2_G1':1,'SN2_I1':1,'SN2_G2':1,'SN2_I2': 1,'SN^2':1, 'Badpix':3,'SUCCESS_QSO':1,'MOON_FRAC':1,'EXPTIME':1} @@ -1092,17 +963,6 @@ def html_writer(basehtml, Field_list, path, name, run2d, legacy, sort='field', o if col in fl_pd.columns: fl_pd.loc[fl_pd.index[i],col] = fl_pd.loc[fl_pd.index[i],col].replace('0.0', '') - #fl_pd.at[i, c] = fl_pd.at[i, c].replace(['0', '0.0'], '') -# if ('SN2_I1' in fl_pd.columns): -# fl_pd.at[i, 'SN2_I1'] = fl_pd.at[i, 'SN2_I1'].replace(['0', '0.0'], '') -# if ('SN2_G1' in fl_pd.columns): -# fl_pd.at[i, 'SN2_G1'] = = fl_pd.at[i, 'SN2_I1'].replace(['0', '0.0'], '') -# else: -# if ('SN2_I2' in fl_pd.columns): -# fl_pd.at[i, 'SN2_I2'] = '' -# if ('SN2_G2' in fl_pd.columns): -# fl_pd.at[i, 'SN2_G2'] = '' - f2zero_cols = ['N_gal','N_QSO','N_star','N_unk','N_sky','N_std','SUCCESS_QSO'] if '1D' in fl_pd.columns: @@ -1125,99 +985,59 @@ def html_writer(basehtml, Field_list, path, name, run2d, legacy, sort='field', o fl_pd[[col]] = fl_pd[[col]].fillna('').astype(str) fl_pd = fl_pd.apply(html_format, cols_dic=order) - - - if sort.lower() == 'mjd': - fl_pd = fl_pd.sort_values(by=['MJD','FIELD'], ascending = False, key=lambda col: col.astype(int)) - else: - fl_pd = fl_pd.sort_values(by=['FIELD','MJD'], key=lambda col: col.astype(int)) - html = fl_pd.to_html(escape=False, render_links=True, index=False) - - head = """ - - - - """+title+""" - - - """ - mjd="{mjd:.3f}".format(mjd=float(astropy.time.Time(datetime.datetime.utcnow()).jd)-2400000.5) - basehtml = 'href="'+basehtml + mjd="{mjd:.3f}".format(mjd=jdate.mjd) + + basehtml = basehtml if basehtml[-1] != '/': basehtml = basehtml+'/' basehtml = basehtml+run2d - head2 = """ - -

    """+title+"""

    -

    Last Update: """+time.ctime()+""", Last Update MJD: """+mjd+"""

    - -

    -

    - """ - if not legacy: - head3="""

    (S/N)^2 values are not corrected for galactic dust reddening

    """ - else: - head3="""

    (S/N)^2 values are corrected for galactic dust reddening

    """ + red = 'not ' if not legacy else '' foot = """ """ - splog.log(ptt.join(path,name)) - - with open(ptt.join(path,name), "w") as fhtml: - fhtml.write(head) - fhtml.write(head2) - fhtml.write(head3) - fhtml.write(html) - fhtml.write(foot) - fhtml.close() - -if __name__ == '__main__' : - """ - Build/load Fieldlist - """ - parser = argparse.ArgumentParser( - prog=ptt.basename(sys.argv[0]), - description='Build/load BOSS Fieldlist') - - parser.add_argument('--create', '-c', action='store_true', help='Create Fieldlist') - parser.add_argument('--topdir', type=str, help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX', default = getenv('BOSS_SPECTRO_REDUX')) - parser.add_argument('--run1d', type=str, help='Optional override value for the enviro variable $RUN1D', nargs='*', default=[getenv('RUN1D')]) - parser.add_argument('--run2d', type=str, help='Optional override value for the enviro variable $RUN2D', nargs='*', default=[getenv('RUN2D')]) - parser.add_argument('--outdir', type=str, help='Optional output directory (defaults to topdir/$RUN2D)', default=None) - parser.add_argument('--skipcart', type=str, help='Option list of cartridges to skip', nargs='*', default=None) - parser.add_argument('--epoch', action='store_true', help='Produce FieldList for epoch coadds') - parser.add_argument('--basehtml', type=str, help='html path for figure (defaults to relative from topdir)') - parser.add_argument('--logfile', type=str, help='Manually Set logfile (including path)', default=None) - parser.add_argument('--debug', action='store_true', help='Overrides the logger of the simplified error messages and prints standard python errors') - parser.add_argument('--noplot', action='store_true', help='Skips updating the sky plots') - args = parser.parse_args() - - splog.no_exception = args.debug - Field_list = fieldlist(**vars(args)) + + fl_pd_full = fl_pd.copy() + fl_pd = None + for sort in sorts: + if sort.lower() == 'mjd': + fl_pd_full = fl_pd_full.sort_values(by=['MJD','FIELD'], ascending = False, key=lambda col: col.astype(int)) + else: + fl_pd_full = fl_pd_full.sort_values(by=['FIELD','MJD'], key=lambda col: col.astype(int)) + for obs in obss: + fl_pd = fl_pd_full.copy() + tname = name + + if obs is not None: + fl_pd = fl_pd.loc[fl_pd['OBS'] == obs] + tname = tname+'_'+obs.upper() + obsstr = obs.upper() + else: + obsstr = '' + + if sort.lower() == 'mjd': + tname = tname+'-mjdsort' + fl_pd.columns = fl_pd.columns.str.replace('_',' ', regex=False) + html = fl_pd.to_html(escape=False, render_links=True, index=False) + + + tname = tname+'.html' + splog.log(ptt.join(path,tname)) + template = ptt.join(idlspec2d_dir,'templates','html','fieldlist_template.html') + + jinja_data = dict(RUN2D=run2d,date=time.ctime(),MJD=mjd,obs=obsstr, + favicon=favicon, basehtml=basehtml,red=red, + FIELDLIST_TABLE=html, title=title.format(obs=obsstr)) + with open(ptt.join(path,tname), "w", encoding="utf-8") as output_file: + with open(template) as template_file: + j2_template = Template(template_file.read()) + output_file.write(j2_template.render(jinja_data)) + + + + + fl_pd = None + fl_pd_full = None + head = head2 = head3 = html = foot = thead2 = None + + diff --git a/bin/fieldmerge.py b/python/boss_drp/post/fieldmerge.py similarity index 54% rename from bin/fieldmerge.py rename to python/boss_drp/post/fieldmerge.py index b0f7a9ac4..4284cd1ac 100755 --- a/bin/fieldmerge.py +++ b/python/boss_drp/post/fieldmerge.py @@ -1,27 +1,34 @@ #!/usr/bin/env python3 +from boss_drp import idlspec2d_dir +from boss_drp.post.fieldlist import fieldlist +from boss_drp.field import field_to_string, field_spec_dir, fieldgroup +from boss_drp.field import field_dir as create_field_dir +from boss_drp.utils import (merge_dm, Splog, get_lastline) +from boss_drp.utils import match as wwhere +from boss_drp.post import plot_sky_targets, plot_sky_locations +from boss_drp.utils import specobjid, retry + +from sdss_semaphore.targeting import TargetingFlags import argparse import sys import os.path as ptt -from os import getenv, makedirs, remove +from os import getenv, makedirs, remove, rename import numpy as np from astropy.io import fits -from astropy.table import Table, Column, vstack, join, unique, setdiff -from fieldlist import wwhere, plot_sky, fieldlist, get_lastline +from astropy.table import (Table, Column, vstack, join, + unique, setdiff, hstack,MaskedColumn) from healpy import ang2pix from pydl.pydlutils.spheregroup import spheregroup import time -from datetime import timedelta +from datetime import timedelta, datetime import warnings -from field import field_to_string -from merge_dm import merge_dm from glob import glob -from splog import Splog import gc -splog = Splog() -run2d_warn = True +import shutil -from sdss_semaphore.targeting import TargetingFlags +run2d_warn = True +splog = Splog() def read_zans(sp1d_dir, field, mjd): @@ -29,9 +36,10 @@ def read_zans(sp1d_dir, field, mjd): if ptt.exists(zansfile): splog.log('Reading Zbest file: '+ptt.basename(zansfile)) try: - zans = Table(fits.getdata(zansfile)) + zans = Table.read(zansfile) for key in zans.colnames: zans.rename_column(key,key.upper()) + zans.meta = {} except: splog.log('Error reading '+zansfile) zans = None @@ -40,14 +48,16 @@ def read_zans(sp1d_dir, field, mjd): zans = None return(zans) -def read_zline(sp1d_dir, field, mjd): +def read_zline(sp1d_dir, field, mjd, obs): zlinefile = ptt.join(sp1d_dir,'spZline-' + field + '-' + mjd + '.fits') if ptt.exists(zlinefile): splog.log('Reading Zline file: '+ptt.basename(zlinefile)) try: - zline = Table(fits.getdata(zlinefile)) + zline = Table.read(zlinefile) for key in zline.colnames: zline.rename_column(key,key.upper()) + zline.add_column(obs, name = 'OBS') + zline.meta = {} except: splog.log('Error reading '+zlinefile) zline = None @@ -61,9 +71,10 @@ def read_xcsao(sp1d_dir, field, mjd, spAll): if ptt.exists(XCSAOfile): splog.log('Reading XCSAO file: '+ptt.basename(XCSAOfile)) try: - XCSAO_tab = Table(fits.getdata(XCSAOfile,1)) + XCSAO_tab = Table.read(XCSAOfile,1) for key in XCSAO_tab.colnames: XCSAO_tab.rename_column(key,key.upper()) + XCSAO_tab.meta = {} XCSAO_tab.remove_columns(['EBV','FIBERID_LIST','OBJID','FIELDID']) renames = {'RV':'XCSAO_RV','ERV':'XCSAO_ERV','R':'XCSAO_RXC','TEFF':'XCSAO_TEFF', @@ -98,12 +109,18 @@ def read_fibermap(field_dir, field, mjd, epoch=False, allsky=False): if ptt.exists(spfieldfile): splog.log('Reading Fibermap: '+ptt.basename(spfieldfile)) try: - fibermap = Table(fits.getdata(spfieldfile, 5)) + fibermap = Table.read(spfieldfile, 5) + fibermap.meta = {} hdr = fits.getheader(spfieldfile,0) - fibermap['SPEC_FILE'] = np.char.add(np.char.add('spec-'+field+'-'+mjd+'-', np.char.strip(np.asarray(fibermap['CATALOGID']).astype(str))),'.fits') - renames = {'XFOCAL_LIST':'XFOCAL','YFOCAL_LIST':'YFOCAL','CARTON_TO_TARGET_PK_LIST':'CARTON_TO_TARGET_PK','ASSIGNED_LIST':'ASSIGNED', - 'ON_TARGET_LIST':'ON_TARGET','VALID_LIST':'VALID','DECOLLIDED_LIST':'DECOLLIDED','ICATALOGID':'CATALOGID', - 'GAIA_ID_DR2': 'GAIA_ID', 'MJDLIST': 'MJD_LIST','PROGRAM':'PROGRAMNAME'} + fibermap['SPEC_FILE'] = np.char.add(np.char.add('spec-'+field+'-'+mjd+'-', + np.char.strip(np.asarray(fibermap['CATALOGID']).astype(str))),'.fits') + renames = {'XFOCAL_LIST':'XFOCAL','YFOCAL_LIST':'YFOCAL', + 'CARTON_TO_TARGET_PK_LIST':'CARTON_TO_TARGET_PK', + 'ASSIGNED_LIST':'ASSIGNED', 'ON_TARGET_LIST':'ON_TARGET', + 'VALID_LIST':'VALID','DECOLLIDED_LIST':'DECOLLIDED', + 'TOO_LIST':'TOO','ICATALOGID':'CATALOGID', + 'GAIA_ID_DR2': 'GAIA_ID', 'MJDLIST': 'MJD_LIST', + 'PROGRAM':'PROGRAMNAME'} for key in fibermap.colnames: fibermap.rename_column(key,key.upper()) @@ -122,23 +139,27 @@ def read_fibermap(field_dir, field, mjd, epoch=False, allsky=False): fibermap.add_column(hp, name = 'HEALPIX') fibermap.add_column(np.floor(fibermap['HEALPIX']/1000).astype(int), name = 'HEALPIXGRP') - - fibermap.add_column(-999, name = 'CATALOGID_V0') - fibermap.add_column(-999, name = 'CATALOGID_V0P5') - catid = fibermap['CATALOGID'] - cv0 = fibermap['CATALOGID_V0'] - cv0p5 = fibermap['CATALOGID_V0P5'] - iv0 = np.where(wwhere(fibermap['CATVERSION'].data,'0.0*'))[0] - iv0p1 = np.where(wwhere(fibermap['CATVERSION'].data,'0.1*'))[0] - iv0p5 = np.where(wwhere(fibermap['CATVERSION'].data,'0.5*'))[0] - cv0[iv0] = catid[iv0] - cv0[iv0p1] = catid[iv0p1] - cv0p5[iv0p5] = catid[iv0p5] + if 'CATALOGID_V0' not in fibermap.colnames: + fibermap.add_column(-999, name = 'CATALOGID_V0') + fibermap.add_column(-999, name = 'CATALOGID_V0P5') + fibermap.add_column(-999, name = 'CATALOGID_V1') + catid = fibermap['CATALOGID'] + cv0 = fibermap['CATALOGID_V0'] + cv0p5 = fibermap['CATALOGID_V0P5'] + cv1 = fibermap['CATALOGID_V1'] + iv0 = np.where(wwhere(fibermap['CATVERSION'].data.astype(str),'0.0*'))[0] + iv0p1 = np.where(wwhere(fibermap['CATVERSION'].data.astype(str),'0.1*'))[0] + iv0p5 = np.where(wwhere(fibermap['CATVERSION'].data.astype(str),'0.5*'))[0] + iv1 = np.where(wwhere(fibermap['CATVERSION'].data.astype(str),'1.*'))[0] + cv0[iv0] = catid[iv0] + cv0[iv0p1] = catid[iv0p1] + cv0p5[iv0p5] = catid[iv0p5] + cv1[iv1] = cv1[iv1] HEALPIX_PATH = np.char.add(np.char.add('$MWM_HEALPIX/', np.asarray(fibermap['HEALPIXGRP']).astype(str)),'/') HEALPIX_PATH = np.char.add(np.char.add(HEALPIX_PATH, np.asarray(fibermap['HEALPIX']).astype(str)),'/boss/') HEALPIX_PATH = np.char.add(HEALPIX_PATH, fibermap['SPEC_FILE']) - idx = np.where(catid == 0)[0] + idx = np.where(fibermap['CATALOGID'] == 0)[0] HEALPIX_PATH[idx] = '' fibermap.add_column(HEALPIX_PATH, name = 'HEALPIX_PATH') except: @@ -163,10 +184,11 @@ def read_spline(splinefile, skip_line=False, clobber=False): if exists and not skip_line: try: splog.log('Reading spline file: '+ptt.basename(splinefile)) - spline = Table(fits.getdata(splinefile)) + spline = Table.read(splinefile) if len(spline) == 0: remove(splinefile) spline = None + spline.meta = {} except: splog.log('Failure opening '+ splinefile) spline = None @@ -188,10 +210,11 @@ def read_spall(spAllfile, clobber=False): if exists: try: splog.log('Reading spAll file: '+ptt.basename(spAllfile)) - spAll = Table(fits.getdata(spAllfile)) + spAll = Table.read(spAllfile) if len(spAll) == 0: remove(spAllfile) spAll = None + spAll.meta = {} except: splog.log('Failure opening '+ spAllfile) spAll = None @@ -201,7 +224,6 @@ def read_spall(spAllfile, clobber=False): - def oneField(row, field, mjd, skip_line=False, include_bad=False, legacy=False, dev=False, skip_specprimary=False, XCSAO=False, indir='.', clobber=False, epoch=False, merge_only=False, custom = None, allsky=None): @@ -212,19 +234,18 @@ def oneField(row, field, mjd, skip_line=False, include_bad=False, legacy=False, row['RUN1D'] = row['RUN2D'] if custom is None: if epoch is True: - sp1d_dir = ptt.join(indir, row['RUN2D'], field, 'epoch', row['RUN1D']) - field_dir = ptt.join(indir,row['RUN2D'], field) + field_dir = create_field_dir(ptt.join(indir,row['RUN2D']), field) + sp1d_dir = ptt.join(field_dir, 'epoch', row['RUN1D']) else: - sp1d_dir = ptt.join(indir, row['RUN2D'], field, row['RUN1D']) - field_dir = ptt.join(indir, row['RUN2D'],field) + field_dir = create_field_dir(ptt.join(indir,row['RUN2D']), field) + sp1d_dir = ptt.join(field_dir, row['RUN1D']) else: if epoch is True: - sp1d_dir = ptt.join(indir, row['RUN2D'], custom, 'epoch', row['RUN1D']) - field_dir = ptt.join(indir,row['RUN2D'], custom) + field_dir = create_field_dir(ptt.join(indir,row['RUN2D']), field, custom=True) + sp1d_dir = ptt.join(field_dir, 'epoch', row['RUN1D']) else: - sp1d_dir = ptt.join(indir, row['RUN2D'], custom, row['RUN1D']) - field_dir = ptt.join(indir, row['RUN2D'],custom) - field = custom + field_dir = create_field_dir(ptt.join(indir,row['RUN2D']), field, custom=True) + sp1d_dir = ptt.join(field_dir, row['RUN1D']) dev = False spAllfile, spAlllitefile, splinefile, spAlldatfile = build_fname(indir, row['RUN2D'], field=field, mjd=mjd, @@ -283,10 +304,10 @@ def oneField(row, field, mjd, skip_line=False, include_bad=False, legacy=False, spAll.rename_column(key,key.upper()) spAll['FIBER_RA'] = spAll['FIBER_RA'].data.astype(float) spAll['FIBER_DEC'] = spAll['FIBER_DEC'].data.astype(float) - spAll = build_specobjid(spAll) + spAll = build_specobjid(spAll, epoch = epoch, custom = custom) if spline is None and skip_line is False: - spline = read_zline(sp1d_dir, field, mjd) + spline = read_zline(sp1d_dir, field, mjd, row['OBSERVATORY']) if spline is not None: if len(spline) > 0: @@ -302,52 +323,24 @@ def oneField(row, field, mjd, skip_line=False, include_bad=False, legacy=False, -def build_specobjid(spAll): - global run2d_warn - - lsh = lambda x,s: np.uint64(x)*np.uint64(2**s) - - - run2ds = spAll['RUN2D'].data - - run2ds = np.char.strip(run2ds) - rerun = np.zeros(len(run2ds)) - - if 'SPECOBJID' not in spAll.colnames: - spAll.add_column(np.uint64(0),name='SPECOBJID') +def build_specobjid(spAll,custom=None, epoch=False): + splog.info('Building SPECOBJIDs') + if epoch: + coadd = 'epoch' + elif custom is not None: + coadd = custom else: - spAll.remove_column('SPECOBJID') - spAll.add_column(np.uint64(0),name='SPECOBJID') - - for row in spAll: - try: - if isinstance(row['RUN2D'].strip(),str): - n,m,p = row['RUN2D'].strip().split('_') - n = int(n[1:]) - m = int(m) - p = int(p) - run2d = (n-5)*10000 + m*100 + p - elif row['RUN2D'].strip().isnumeric(): - run2d = int(run2d) - else: - if run2d_warn: - splog.log(f"WARNING: Unable to parse RERUN from {np.unique(run2ds)} for CAS-style SPECOBJID; Using 0 instead") - run2d_warn = False - run2d = 0 - except: - if run2d_warn: - splog.log(f"WARNING: Unable to parse RERUN from {np.unique(run2ds)} for CAS-style SPECOBJID; Using 0 instead") - run2d_warn = False - run2d = 0 - specobjid = np.uint64(0) - with warnings.catch_warnings(): - warnings.simplefilter("ignore") - specobjid |= lsh(row['FIELD'],50) | lsh(row['TARGET_INDEX'],38) | lsh(row['MJD']-50000,24) | lsh(run2d,10) - row['SPECOBJID'] = specobjid + coadd = 'daily' + spAll.add_column(Column('',name='SPECOBJID', dtype=object)) + spAll['SPECOBJID'] = specobjid.encode(spAll['SDSS_ID'].data, + spAll['FIELD'].data.astype(str), + spAll['MJD'].data, coadd, + spAll['RUN2D'].data.astype(str), + fiberid=spAll['TARGET_INDEX'].data, + allnew = False) return(spAll) - def specPrimary(spAll): t2 = time.time() # Determine the score for each object @@ -409,8 +402,7 @@ def specPrimary(spAll): splog.log('Time to assign primaries = '+str(timedelta(seconds = time.time() - t2))) return(spAll) - -def specPrimary_sdssid(spAll): +def specPrimary_sdssid(spAll, update = False): t2 = time.time() # Determine the score for each object # 1) Prefer observations with positive SN_MEDIAN in r-band @@ -432,28 +424,65 @@ def specPrimary_sdssid(spAll): score = (4 * (spAll['SN_MEDIAN'][:,jfilt] > 0) + 2*(wwhere(spAll['FIELDQUALITY'],'good*')) + 1 * (zw_primtest == 0) + (spAll['SN_MEDIAN'][:,jfilt] > 0)) / max(spAll['SN_MEDIAN'][:,jfilt]+1.) - spAll.add_column(score,'SCORE') - sdssids = np.unique(spAll['SDSS_ID'].values) - - spAll.add_column(0,name='SPECPRIMARY') - spAll.add_column(0,name='SPECBOSS') - spAll.add_column(0,name='NSPECOBS') - for id in sdssids: - idx = np.where(SpAll['SDSS_ID'].values == id)[0] - SpAll[idx]['NSPECOBS'] = len(idx) - primary = np.argmax(SpAll[idx]['SCORE'].values) - spAll[idx[primary]]['SPECPRIMARY'] = 1 - spAll[idx[primary]]['SPECBOSS'] = 1 + + specprim = spAll['SPECPRIMARY'] + specboss = spAll['SPECBOSS'] + nspecobs = spAll['NSPECOBS'] + if isinstance(spAll['SDSS_ID'], MaskedColumn): + sdssids = spAll['SDSS_ID'].filled(-999).data + else: + sdssids = spAll['SDSS_ID'].data + sidx = np.where((sdssids < 0))[0] + specprim[sidx] = -999 + specboss[sidx] = -999 + nspecobs[sidx] = -999 + + if update: + splog.log(f'Keeping current and updating only') + idx_new = np.where(specprim == -1)[0] + sdssids = np.unique(sdssids[idx_new]) + else: + spAll['SPECPRIMARY'] = 0 + spAll['SPECBOSS'] = 0 + spAll['NSPECOBS'] = 0 + sdssids = np.unique(sdssids) + sdssids = sdssids[sdssids >= 0] + counter_step = round(len(sdssids)/100) + for i, id in enumerate(sdssids): + if (i % counter_step) == 0: + if i + counter_step < len(sdssids): + splog.info(f'Assigning SpecPrimaries: {i+1} - {i+100000} (of {len(sdssids)})') + else: + splog.info(f'Assigning SpecPrimaries: {i+1} - {len(sdssids)} (of {len(sdssids)})') + idx = np.where(spAll['SDSS_ID'].data == id)[0] + nspecobs[idx] = len(idx) + if update: + specprim[idx] = 0 + specboss[idx] = 0 + primary = np.argmax(score[idx]) + specprim[idx[primary]] = 1 + specboss[idx[primary]] = 1 splog.log('Time to assign primaries = '+str(timedelta(seconds = time.time() - t2))) return(spAll) def build_custom_fieldlist(indir, custom, run2d, run1d): flist = Table() - for spfield in glob(ptt.join(indir, run2d,custom,f'spFullsky-{custom}-*.fits')): + topdir2d = ptt.join(indir, run2d) + spfields = [] + for cc in [custom,custom+'_lco',custom+'_apo']: + spfields.extend(glob(ptt.join(create_field_dir(topdir2d,cc, custom=True), + f'spFullsky-{cc}-*.fits'))) + for spfield in spfields: hdr = fits.getheader(spfield,0) - spdiagcomblog = ptt.join(indir, run2d,custom,f"spDiagcomb-{custom}-{str(hdr['RUNMJD'])}.log") + cc = ptt.basename(spfield).split('-')[1] + if cc.split('_')[-1] in ['lco','apo']: + obs = cc.split('_')[-1].upper() + else: + obs = '' + spdiagcomblog = ptt.join(create_field_dir(topdir2d,cc, custom=True), + f"spDiagcomb-{cc}-{str(hdr['RUNMJD'])}.log") if ptt.exists(spdiagcomblog): lastline = get_lastline(spdiagcomblog) if 'Successful completion' in lastline: @@ -464,7 +493,8 @@ def build_custom_fieldlist(indir, custom, run2d, run1d): STATUSCOMBINE = 'RUNNING' else: STATUSCOMBINE = 'Pending' - spDiag1dlog = ptt.join(indir, run2d, custom, run1d, f"spDiag1d-{custom}-{str(hdr['MJD'])}.log") + spDiag1dlog = ptt.join(create_field_dir(topdir2d,cc, custom=True), + run1d, f"spDiag1d-{cc}-{str(hdr['MJD'])}.log") if ptt.exists(spDiag1dlog): lastline = get_lastline(spDiag1dlog) if 'Successful completion' in lastline: @@ -494,23 +524,24 @@ def build_custom_fieldlist(indir, custom, run2d, run1d): except: sn2_i2 = np.NaN flist_row = Table({'RUN2D':[run2d], 'RUN1D':[run1d], - 'PROGRAM':[custom], 'FIELD':[0], 'MJD': [hdr['MJD']], + 'PROGRAMNAME':[custom], 'FIELD':[0], 'MJD': [hdr['MJD']], 'STATUS2D':['Done'], 'STATUSCOMBINE':[STATUSCOMBINE], 'STATUS1D':[STATUS1D],'FIELDQUALITY':['good'], 'FIELDSN2':[np.nanmin( np.array([sn2_g1,sn2_i1,sn2_g2,sn2_i2]))], - 'OBS':['']}) + 'OBSERVATORY':[obs]}) flist = vstack([flist, flist_row]) - print(flist) + flist.pprint_all() return(flist) def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), skip_line=False, include_bad=False, legacy=False, skip_specprimary=False, - lite=False, XCSAO=False, field=None, mjd=None, programs=None, clobber=False, dev=False, + update_specprimary=True, lite=False, XCSAO=False, field=None, + mjd=None, programs=None, clobber=False, dev=False, datamodel=None, line_datamodel=None, verbose=False, epoch =False, outroot=None, - logfile=None, remerge_fmjd=None, merge_only=False, limit=None, - custom=None, allsky=False, run1d=None): + logfile=None, remerge_fmjd=None, remerge_mjd=None, merge_only=False, limit=None, + custom=None, allsky=False, run1d=None, bkup=False, mjdstart=None): try: SDSSC2BV = TargetingFlags.meta['SDSSC2BV'] @@ -522,22 +553,31 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), mjd = str(mjd) if datamodel is None: - datamodel = ptt.join(getenv('IDLSPEC2D_DIR'), 'datamodel', 'spall_dm.par') + datamodel = ptt.join(idlspec2d_dir, 'datamodel', 'spall_dm.par') if line_datamodel is None: - line_datamodel = ptt.join(getenv('IDLSPEC2D_DIR'), 'datamodel', 'spzline_dm.par') + line_datamodel = ptt.join(idlspec2d_dir, 'datamodel', 'spzline_dm.par') - if epoch is True: - fieldlist_file = ptt.join(indir, run2d, 'epoch', 'fieldlist-'+run2d+'.fits') + dflags = [indir, run2d,'summary'] + if custom is not None: + dflags.append(custom) + fflag = '-'+custom + elif epoch is True: + dflags.append('epoch') + fflag = '-epoch' else: - fieldlist_file = ptt.join(indir, run2d, 'fieldlist-'+run2d+'.fits') - - if field is not None and mjd is not None: + dflags.append('daily') + fflag ='' + fieldlist_file = ptt.join(*dflags, 'fieldlist-'+run2d+fflag+'.fits') + + if (custom is not None) and (mjd is not None): +# if field is not None: +# custom = field +# field = None + field_dir = create_field_dir(ptt.join(indir, run2d), field, custom=True) + elif field is not None and mjd is not None: + field_dir = create_field_dir(ptt.join(indir, run2d),field) if epoch is True: - field_dir = ptt.join(indir, run2d, field, 'epoch') - else: - field_dir = ptt.join(indir, run2d, field) - elif (custom is not None) and (mjd is not None): - field_dir = ptt.join(indir, run2d, custom) + field_dir = ptt.join(field_dir, 'epoch') if logfile is None: @@ -549,11 +589,11 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), logfile = ptt.join(field_dir,'spAll-'+custom+'-'+mjd+'.log') elif field is None and mjd is None: if epoch is True: - logfile = ptt.join(indir, run2d,'spAll_epoch-'+run2d+'.log') + logfile = ptt.join(indir, run2d,'summary','epoch','spAll_epoch-'+run2d+'.log') elif custom is None: - logfile = ptt.join(indir, run2d,'spAll-'+run2d+'.log') + logfile = ptt.join(indir, run2d,'summary','daily','spAll-'+run2d+'.log') else: - logfile = ptt.join(indir, f'spAll_{custom}-{run2d}.log') + logfile = ptt.join(indir, run2d,'summary',fieldgroup(custom, custom=True),f'spAll_{custom}-{run2d}.log') else: if epoch is True: logfile = ptt.join(indir, 'spAll_epoch.log') @@ -563,7 +603,8 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), logfile = ptt.join(indir, f'spAll_{custom}.log') if dev: logfile = logfile.replace('spAll','spAll_dev') - + if len(ptt.dirname(logfile)) > 0: + makedirs(ptt.dirname(logfile),exist_ok=True) splog.open(logfile=logfile, backup=False) splog.log('Log file '+logfile+' opened '+ time.ctime()) @@ -573,11 +614,11 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), if ptt.exists(fieldlist_file): splog.log(f'Reading fieldlist file: {fieldlist_file}') try: - flist = Table(fits.getdata(fieldlist_file)) + flist = Table.read(fieldlist_file) except: time.sleep(90) try: - flist = Table(fits.getdata(fieldlist_file)) + flist = Table(fieldlist_file) except: pass else: @@ -585,11 +626,11 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), if ptt.exists(fieldlist_file): splog.log(f'Reading fieldlist file: {fieldlist_file}') try: - flist = Table(fits.getdata(fieldlist_file)) + flist = Table.read(fieldlist_file) except: time.sleep(90) try: - flist = Table(fits.getdata(fieldlist_file)) + flist = Table.read(fieldlist_file) except: pass if (flist is None) and (dev is False): @@ -601,20 +642,19 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), splog.log('ERROR: '+ptt.basename(fieldlist_file)+' is required (Running Now)') flist = fieldlist(create=True, topdir=indir, run2d=[run2d], run1d=[getenv('RUN1D')], outdir=None, legacy=legacy, custom=custom, basehtml=None, epoch=epoch, - logfile=fmlog, noplot=True) + logfile=fmlog, noplot=True, return_tab = True) else: flist = build_custom_fieldlist(indir, custom, run2d, run1d) - full_flist = flist - #if run2d is not None: - # flist = flist[np.where(flist['RUN2D'] == run2d)[0]] + flist = flist['RUN2D','RUN1D','PROGRAMNAME','FIELD','MJD','STATUS2D', + 'STATUSCOMBINE','STATUS1D','FIELDQUALITY','FIELDSN2','OBSERVATORY'] if programs is not None: ftemp = None for prog in programs: if ftemp is None: - ftemp = flist[np.where(flist['PROGRAM'] == prog)[0]] + ftemp = flist[np.where(flist['PROGRAMNAME'] == prog)[0]] else: - ftemp = vstack([ftemp, flist[np.where(flist['PROGRAM'] == prog)[0]]]) + ftemp = vstack([ftemp, flist[np.where(flist['PROGRAMNAME'] == prog)[0]]]) flist = ftemp if allsky is False: @@ -628,7 +668,8 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), spAll_fmjds = None spline_fmjds = None - if (field is not None) and (mjd is not None): + + if (field is not None) and (mjd is not None) and (custom is None): idx = np.where((flist['FIELD'] == field) & (flist['MJD'] == int(mjd)))[0] if len(idx) == 0: flist.add_row({'FIELD': field, 'MJD':mjd, 'STATUS2D': 'unknown'}) @@ -638,95 +679,176 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), epoch=epoch, allsky=allsky, custom=custom) if not clobber: + spAll = None + spline = None if ptt.exists(spallfile): splog.log(f'Reading Existing spAll file: {spallfile}') - spAll = Table(fits.getdata(spallfile)) - try: - spAll_fmjds = spAll['FIELD','MJD'] - spAll_fmjds = unique(spAll_fmjds,keys=['FIELD','MJD']) - except: - spAll_fmjds = Table(names = ['FIELD','MJD']) + spAll = Table.read(spallfile) elif ptt.exists(spallfile.replace('.gz','')): splog.log(f"Reading Existing spAll file: {spallfile.replace('.gz','')}") - spAll = Table(fits.getdata(spallfile.replace('.gz',''))) try: - spAll_fmjds = spAll['FIELD','MJD'] - spAll_fmjds = unique(spAll_fmjds,keys=['FIELD','MJD']) + spAll = Table.read(spallfile.replace('.gz','')) except: - spAll_fmjds = Table(names = ['FIELD','MJD']) + time.sleep(60) + spAll = Table.read(spallfile.replace('.gz','')) else: - spAll_fmjds = Table(names = ['FIELD','MJD']) + spAll_fmjds = Table(names = ['FIELD','MJD','OBS']) + if spAll is not None: + try: + spAll_fmjds = spAll['FIELD','MJD','OBS'] + if isinstance(spAll_fmjds['FIELD'], MaskedColumn): + spAll_fmjds['FIELD'] = spAll_fmjds['FIELD'].filled(0) + spAll_fmjds = unique(spAll_fmjds,keys=['FIELD','MJD','OBS']) + except Exception as e: + splog.warning(f'{type(e).__name__}: {e}') + spAll_fmjds = Table(names = ['FIELD','MJD','OBS']) + try: + spAll.meta = {} + spAll_fmjds.meta = {} + except: + pass if ptt.exists(splinefile): splog.log(f'Reading Existing spLine file: {splinefile}') - spline = Table(fits.getdata(splinefile)) try: - spline_fmjds = spline['FIELD','MJD'] - spline_fmjds = unique(spline_fmjds,keys=['FIELD','MJD']) + spline = Table.read(splinefile) except: - spAll_fmjds = Table(names = ['FIELD','MJD']) + time.sleep(60) + spline = Table.read(splinefile) elif ptt.exists(splinefile.replace('.gz','')): splog.log(f"Reading Existing spLine file: {splinefile.replace('.gz','')}") - spline = Table(fits.getdata(splinefile.replace('.gz',''))) try: - spline_fmjds = spline['FIELD','MJD'] - spline_fmjds = unique(spline_fmjds,keys=['FIELD','MJD']) + spline = Table.read(splinefile.replace('.gz','')) except: - spAll_fmjds = Table(names = ['FIELD','MJD']) + time.sleep(60) + spline = Table.read(splinefile.replace('.gz','')) else: - spline_fmjds = Table(names = ['FIELD','MJD']) - + spline_fmjds = Table(names = ['FIELD','MJD','OBS']) + if spline is not None: + try: + try: + spline_fmjds = spline['FIELD','MJD','OBS'] + except: + spline_fmjds = spline['FIELD','MJD'] + spline_fmjds.add_column('unknown', name='OBS') + if isinstance(spline_fmjds['FIELD'], MaskedColumn): + spline_fmjds['FIELD'] = spline_fmjds['FIELD'].filled(0) + if isinstance(spAll_fmjds['OBS'], MaskedColumn): + spline_fmjds['OBS'] = spline_fmjds['OBS'].astype(object) + spline_fmjds['OBS'].filled('unknown') + spline_fmjds['OBS'] = spline_fmjds['OBS'].astype(str) + if isinstance(spAll_fmjds['FIELD'], MaskedColumn): + spline_fmjds['FIELD'] = spAll_fmjds['FIELD'].filled(0) + spline_fmjds = unique(spline_fmjds,keys=['FIELD','MJD','OBS']) + + except Exception as e: + splog.warning(f'{type(e).__name__}: {e}') + spline_fmjds = Table(names = ['FIELD','MJD','OBS']) + try: + spline.meta = {} + spline_fmjds.meta = {} + except: + pass if remerge_fmjd is not None: - idx = np.where((spAll['FIELD'] == int(remerge_fmjd.split('-')[0])) & (spAll['MJD'] == int(remerge_fmjd.split('-')[1])))[0] - idxl = np.where((spline['FIELD'] == int(remerge_fmjd.split('-')[0])) & (spline['MJD'] == int(remerge_fmjd.split('-')[1])))[0] + idx = np.where((spAll_fmjds['FIELD'] == int(remerge_fmjd.split('-')[0])) & + (spAll_fmjds['MJD'] == int(remerge_fmjd.split('-')[1])))[0] + idxl = np.where((spline_fmjds['FIELD'] == int(remerge_fmjd.split('-')[0])) & + (spline_fmjds['MJD'] == int(remerge_fmjd.split('-')[1])))[0] if len(idx) > 0: - spAll.remove_rows(idx) - spAll_fmjds = spAll['FIELD','MJD'] - spAll_fmjds = unique(spAll_fmjds,keys=['FIELD','MJD']) + spAll_fmjds.remove_rows(idx) + spAll_fmjds = unique(spAll_fmjds,keys=['FIELD','MJD','OBS']) if len(idxl) > 0: - spline.remove_rows(idxl) - spline_fmjds = spline['FIELD','MJD'] - spline_fmjds = unique(spline_fmjds,keys=['FIELD','MJD']) + spline_fmjds.remove_rows(idxl) + spline_fmjds = unique(spline_fmjds,keys=['FIELD','MJD','OBS']) + if remerge_mjd is not None: + idx = np.where((spAll_fmjds['MJD'] == int(remerge_mjd)))[0] + idxl = np.where((spline_fmjds['MJD'] == int(remerge_mjd)))[0] + if len(idx) > 0: + spAll_fmjds.remove_rows(idx) + spAll_fmjds = unique(spAll_fmjds,keys=['FIELD','MJD','OBS']) + if len(idxl) > 0: + spline_fmjds.remove_rows(idxl) + spline_fmjds = unique(spline_fmjds,keys=['FIELD','MJD','OBS']) flist.sort(['MJD','FIELD']) + if mjdstart is not None: + splog.info(f"Only Checking Field-MJDs with MJD >= {mjdstart}") + flist = flist[flist['MJD'] >= mjdstart] j = 0 for i, row in enumerate(flist): + tfield_str = f"Field:{row['FIELD']} MJD:{row['MJD']} OBS:{row['OBSERVATORY']} ({i+1}/{len(flist)})" if spAll_fmjds is not None: - idx = spAll_fmjds[(spAll_fmjds['FIELD'] == int(row['FIELD'])) & (spAll_fmjds['MJD'] == int(row['MJD']))] - idxl = spline_fmjds[(spline_fmjds['FIELD'] == int(row['FIELD'])) & (spline_fmjds['MJD'] == int(row['MJD']))] + idx = spAll_fmjds[(spAll_fmjds['FIELD'] == int(row['FIELD'])) & + (spAll_fmjds['MJD'] == int(row['MJD'])) & + (spAll_fmjds['OBS'] == row['OBSERVATORY'])] + + idxl = spline_fmjds[(spline_fmjds['FIELD'] == int(row['FIELD'])) & + (spline_fmjds['MJD'] == int(row['MJD'])) & + ((spline_fmjds['OBS'] == row['OBSERVATORY']) | + (spline_fmjds['OBS'] == 'unknown'))] if len(idx)*len(idxl) > 0: - splog.log(f"Skipping (Complete) Field:{row['FIELD']} MJD:{row['MJD']} ({i+1}/{len(flist)})") + splog.log(f"Skipping (Complete) {tfield_str}") continue - if (field is not None) and (mjd is not None): + if (field is not None) and (mjd is not None) and (allsky is False): if (row['STATUS2D'].lower().strip() != 'done') or (row['STATUSCOMBINE'].lower().strip() != 'done') or (row['STATUS1D'].lower().strip() != 'done'): - splog.log(f"Checking incomplete status ({row['STATUS2D'].strip()} RUN2D) Field:{row['FIELD']} MJD:{row['MJD']} ({i+1}/{len(flist)})") + splog.log(f"Checking incomplete status ({row['STATUS2D'].strip()} RUN2D) {tfield_str}") fmlog = f'fieldlist-{field}-{mjd}.log' - row = fieldlist(create=True, topdir=indir, run2d=[run2d], run1d=[getenv('RUN1D')], - outdir=None, legacy=legacy, custom=custom, basehtml=None, epoch=epoch, - logfile=fmlog, field=field, mjd=mjd, noplot=True, fmsplog=splog) - flist[i] = row + row = retry(fieldlist, retries=3, delay = 5, logger=splog.log, + create=True, topdir=indir, run2d=[run2d], run1d=[getenv('RUN1D')], + outdir=None, legacy=legacy, custom=custom, basehtml=None, epoch=epoch, + logfile=fmlog, field=field, mjd=mjd, noplot=True, fmsplog=splog) + + try: + flist[i] = row + except: + try: + flist[i] = row[flist.colnames] + except: + + print(flist.colnames) + print('-----------------') + print(row) + print('------------------') + print(row[flist.colnames]) + + print('------------------') + print(len(row)) + print(len(flist.columns)) + raise if row['STATUS2D'].lower().strip() != 'done': - splog.log(f"Skipping ({row['STATUS2D'].strip()} RUN2D) Field:{row['FIELD']} MJD:{row['MJD']} ({i+1}/{len(flist)})") + splog.log(f"Skipping ({row['STATUS2D'].strip()} RUN2D) {tfield_str}") continue elif row['STATUSCOMBINE'].lower().strip() != 'done': - splog.log(f"Skipping ({row['STATUSCOMBINE'].strip()} Combine) Field:{row['FIELD']} MJD:{row['MJD']} ({i+1}/{len(flist)})") + splog.log(f"Skipping ({row['STATUSCOMBINE'].strip()} Combine) {tfield_str}") continue elif row['STATUS1D'].lower().strip() != 'done': - splog.log(f"Skipping ({row['STATUS1D'].strip()} RUN1D) Field:{row['FIELD']} MJD:{row['MJD']} ({i+1}/{len(flist)})") + splog.log(f"Skipping ({row['STATUS1D'].strip()} RUN1D) {tfield_str}") continue - splog.log(f"Reading/Building Field:{row['FIELD']} MJD:{row['MJD']} ({i+1}/{len(flist)})") - onefield = oneField(row, row['FIELD'], row['MJD'], + splog.log(f"Reading/Building {tfield_str}") + if dev: + dev1 = True if merge_only else False + else: + dev1 = False + field_clobber = clobber if not merge_only else False + if custom is not None: + rfield = '_'.join([row['PROGRAMNAME'],row['OBSERVATORY'].lower()]) + else: + rfield = row['FIELD'] + onefield = oneField(row, rfield, row['MJD'], skip_line=skip_line, include_bad=include_bad, - legacy=legacy, skip_specprimary=skip_specprimary, dev=dev, - XCSAO=XCSAO, indir=indir, clobber=clobber, epoch = epoch, + legacy=legacy, skip_specprimary=skip_specprimary, dev=dev1, + XCSAO=XCSAO, indir=indir, clobber=field_clobber, epoch = epoch, merge_only=merge_only, custom = custom, allsky = allsky) + if onefield['spall'] is None: + continue if not merge_only: - write_spAll(onefield['spall'], onefield['spline'], None, indir, run2d, datamodel, - line_datamodel, outroot=None, field=row['FIELD'], mjd = row['MJD'], + write_spAll(onefield['spall'].copy(), onefield['spline'].copy(), None, + indir, run2d, datamodel, + line_datamodel, outroot=None, field=rfield, mjd = row['MJD'], verbose=verbose, dev=dev, clobber=clobber, epoch=epoch, silent=True, custom = custom, allsky = allsky, SDSSC2BV = SDSSC2BV) - if onefield['spall'] is None: - continue + + onefield['spall']['SPECPRIMARY'] = -1 if not skip_line: if onefield['spline'] is None: continue @@ -742,11 +864,29 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), if spAll[col].shape[1] > onefield['spall'][col].shape[1]: coldat = onefield['spall'][col].data pad = spAll[col].shape[1] - onefield['spall'][col].shape[1] - onefield['spall'][col] = np.pad(coldat, [(0,0),(pad,0)], mode = 'constant', constant_values= 0) + if col.upper() == 'SDSS5_TARGET_FLAGS': + onefield['spall'][col] = np.pad(coldat, [(0,0),(0,pad)], + mode = 'constant', + constant_values= 0) + else: + onefield['spall'][col] = np.pad(coldat, [(0,0),(pad,0)], + mode = 'constant', + constant_values= 0) + coldat = None + pad = None elif spAll[col].shape[1] < onefield['spall'][col].shape[1]: coldat = spAll[col].data pad = onefield['spall'][col].shape[1] - spAll[col].shape[1] - spAll[col] = np.pad(coldat, [(0,0),(pad,0)], mode = 'constant', constant_values= 0) + if col.upper() == 'SDSS5_TARGET_FLAGS': + spAll[col] = np.pad(coldat, [(0,0),(0,pad)], + mode = 'constant', + constant_values= 0) + else: + spAll[col] = np.pad(coldat, [(0,0),(pad,0)], + mode = 'constant', + constant_values= 0) + coldat = None + pad = None spAll = vstack([spAll,onefield['spall']]) if onefield['spline'] is not None: @@ -754,14 +894,16 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), spline = onefield['spline'] else: spline = vstack([spline,onefield['spline']]) - if merge_only: - if limit is not None: - j = j+1 - del onefield - gc.collect() - splog.log(f'{j}:{limit} ({time.ctime()})') - if j >= limit: - break + if (merge_only) and (limit is not None): + j = j+1 + del onefield + gc.collect() + splog.log(f'{j}:{limit} ({time.ctime()})') + if j >= limit: + break + else: + del onefield + gc.collect() if custom is not None and mjd is not None: field = custom if not(field is not None and mjd is not None): if spline is not None: @@ -773,15 +915,14 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), spAll = unique(spAll, keys='CATALOGID', keep='last') spAll.sort('CATALOGID') if spline is not None: - dropped = setdiff(spall_raw, spAll, keys=['TARGET_INDEX','MJD','FIELD']) - dropped = dropped['TARGET_INDEX','MJD','FIELD','CATALOGID'] + dropped = setdiff(spall_raw, spAll, keys=['TARGET_INDEX','MJD','OBS']) + dropped = dropped['TARGET_INDEX','MJD','OBS','CATALOGID'] if len(dropped) > 0: dropped = unique(dropped) for row in dropped: idx = np.where((spline['TARGET_INDEX'].data == row['TARGET_INDEX']) & - (spline['MJD'].data == row['MJD']) & - (spline['FIELD'].data == row['FIELD']))[0] + (spline['MJD'].data == row['MJD']))[0] spline.remove_rows(idx) if spAll is None: @@ -789,68 +930,85 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), splog.info('EXITING!!') exit() if not skip_specprimary: - spAll = specPrimary(spAll) + #spAll = specPrimary(spAll) + spAll = specPrimary_sdssid(spAll, update=update_specprimary) if lite is True: - spAll_lite = spAll.copy() - spAll_lite.rename_column('DELTA_RA_LIST', 'DELTA_RA') - spAll_lite.rename_column('DELTA_DEC_LIST', 'DELTA_DEC') - for i in range(len(spAll)): + splog.info('Creating spAll-lite Table') + mr = len(spAll) + + + + for col in ['ASSIGNED','ON_TARGET','VALID','DECOLLIDED', 'TOO','CARTON_TO_TARGET_PK']: + if col not in spAll.columns: + splog.info(f'{col} missing from spAll') + spAll[col] = '-999' + for col in ['MOON_DIST','MOON_PHASE','DELTA_RA_LIST','DELTA_DEC_LIST']: + if col not in spAll.columns: + splog.info(f'{col} missing from spAll') + spall[col] = 'nan' + + spAll_lite = spAll['ASSIGNED','ON_TARGET','VALID','DECOLLIDED', 'TOO', + 'MOON_DIST','MOON_PHASE','CARTON_TO_TARGET_PK', + 'DELTA_RA_LIST','DELTA_DEC_LIST'].copy() + for i in range(mr): + if (i % 100000) == 0: + if i + 100000 < mr: + splog.info(f'Re-Formatting arrays in spAll-lite rows: {i+1} - {i+100000} (of {mr})') + else: + splog.info(f'Re-Formatting arrays in spAll-lite rows: {i+1} - {mr} (of {mr})') + + for col in ['ASSIGNED','ON_TARGET','VALID','DECOLLIDED','TOO','CARTON_TO_TARGET_PK']: + try: + if col in ['CARTON_TO_TARGET_PK']: + spAll_lite[col][i] = str(int(np.asarray(spAll[col][i].split())[0])) + else: + spAll_lite[col][i] = str(min(np.asarray(spAll[col][i].split()).astype(int))) + except Exception as e: + splog.warning(f'{col}: {type(e).__name__}: {e}') + print(f'{col}: {type(e).__name__}: {e}') + spAll_lite[col][i] = '0' with warnings.catch_warnings(): warnings.filterwarnings(action='ignore', message='Mean of empty slice') - try: - spAll_lite[i]['ASSIGNED'] = str(min(np.array(spAll_lite[i]['ASSIGNED'].split()).astype(int))) - except: - spAll_lite[i]['ASSIGNED'] = '0' - try: - spAll_lite[i]['ON_TARGET'] = str(min(np.array(spAll_lite[i]['ON_TARGET'].split()).astype(int))) - except: - spAll_lite[i]['ON_TARGET'] = '0' - try: - spAll_lite[i]['VALID'] = str(min(np.array(spAll_lite[i]['VALID'].split()).astype(int))) - except: - spAll_lite[i]['VALID'] = '0' - try: - spAll_lite[i]['DECOLLIDED'] = str(min(np.array(spAll_lite[i]['DECOLLIDED'].split()).astype(int))) - except: - spAll_lite[i]['DECOLLIDED'] = '0' - try: - spAll_lite[i]['MOON_DIST'] = str(np.nanmean(np.array(spAll_lite[i]['MOON_DIST'].split()).astype(float))) - except: - spAll_lite[i]['MOON_DIST'] = 'nan' - try: - spAll_lite[i]['MOON_PHASE'] = str(np.nanmean(np.array(spAll_lite[i]['MOON_PHASE'].split()).astype(float))) - except: - spAll_lite[i]['MOON_PHASE'] = 'nan' - try: - spAll_lite[i]['DELTA_RA'] = str(np.nanmean(np.array(spAll_lite[i]['DELTA_RA'].split()).astype(float))) - except: - spAll_lite[i]['DELTA_RA'] = 'nan' - try: - spAll_lite[i]['DELTA_DEC'] = str(np.nanmean(np.array(spAll_lite[i]['DELTA_DEC'].split()).astype(float))) - except: - spAll_lite[i]['DELTA_DEC'] = 'nan' - try: - spAll_lite[i]['CARTON_TO_TARGET_PK'] = str(int(np.array(spAll_lite[i]['CARTON_TO_TARGET_PK'].split())[0])) - except: - spAll_lite[i]['CARTON_TO_TARGET_PK'] = '0' - - for col in ['ASSIGNED','ON_TARGET','VALID','DECOLLIDED']: - spAll_lite[col].fill_value = False - spAll_lite[col] = spAll_lite[col].astype(bool) + for col in ['MOON_DIST','MOON_PHASE','DELTA_RA_LIST','DELTA_DEC_LIST']: + try: + spAll_lite[col][i] = str(np.nanmean(np.asarray(spAll[col][i].split()).astype(float))) + except Exception as e: + print(f'{col}: {type(e).__name__}: {e}') + splog.warning(f'{col}: {type(e).__name__}: {e}') + spAll_lite[col][i] = 'nan' + + for col in ['ASSIGNED','ON_TARGET','VALID','DECOLLIDED','TOO','CARTON_TO_TARGET_PK']: + spAll_lite[col].fill_value = -999 + try: + spAll_lite[col] = spAll_lite[col].astype(int) + except Exception as e: + splog.warning(f'{type(e).__name__}: {e}') + column_data = np.array(spAll_lite[col]) + column_data = np.array([x.decode('utf-8') if x is not None else None for x in column_data]) + column_data = np.asarray([x == 'True' if x is not None else None for x in column_data]).astype(int) + spAll_lite.remove_column(col) + spAll_lite[col] = MaskedColumn(column_data, mask=[x is None for x in column_data]) + column_data = None + del column_data + + spAll_lite.rename_column('DELTA_RA_LIST', 'DELTA_RA') + spAll_lite.rename_column('DELTA_DEC_LIST', 'DELTA_DEC') for col in ['CARTON_TO_TARGET_PK']: spAll_lite[col] = spAll_lite[col].astype(int) for col in ['MOON_DIST','MOON_PHASE','DELTA_RA','DELTA_DEC']: spAll_lite[col] = spAll_lite[col].astype(float) + + else: spAll_lite = None - write_spAll(spAll, spline, spAll_lite, indir, run2d, datamodel, line_datamodel, + spAll_file = write_spAll(spAll, spline, spAll_lite, indir, run2d, datamodel, line_datamodel, epoch=epoch, dev=dev, outroot=outroot, field=field, mjd=mjd, verbose=verbose, clobber=True, custom = custom, allsky = allsky, - SDSSC2BV = SDSSC2BV) + SDSSC2BV = SDSSC2BV, bkup=bkup) if spAll is None: splog.info('No valid spAll entries') @@ -858,8 +1016,19 @@ def fieldmerge(run2d=getenv('RUN2D'), indir= getenv('BOSS_SPECTRO_REDUX'), exit() if allsky is False: - #flist = Table(fits.getdata(fieldlist_file)) - plot_sky(ptt.dirname(fieldlist_file), full_flist, fieldlist_file) + spallfile, spalllitefile, splinefile, spAlldatfile = build_fname(indir, run2d, outroot=outroot, dev=dev, + epoch=epoch, custom=custom, allsky=allsky) + + + + spAll = None + spline = None + spAll_lite = None + if not(field is not None and mjd is not None): + outdir = ptt.dirname(fieldlist_file) + fieldlist_file = ptt.basename(fieldlist_file) + plot_sky_locations(outdir, fieldlist_file, splog) + plot_sky_targets(outdir, spallfile, splog, nobs=True) if field is not None and mjd is not None: splog.log(f'Successful completion of fieldmerge for {field}-{mjd} at '+ time.ctime()) @@ -878,49 +1047,51 @@ def build_fname(indir, run2d, outroot=None, field=None, mjd=None, dev=False, splinefile = ptt.join(outroot+'Line'+'.fits.gz') spAlldatfile = ptt.join(outroot+'.dat.gz') else: + cc = False if custom is not None: - if allsky is True: - field = custom - elif field is not None: - field = field_to_string(field) + cc= True elif field is not None: field = field_to_string(field) if field is not None and mjd is not None: - field = field_to_string(field) + if not cc: + field = field_to_string(field) mjd = str(mjd) - if epoch is True: - specfull_dir = ptt.join(indir, run2d, 'epoch', 'spectra','full', field, mjd) - else: - specfull_dir = ptt.join(indir, run2d, 'spectra','full', field, mjd) + specfull_dir = field_spec_dir(indir, run2d,field, mjd, epoch=epoch, + custom = cc, custom_name=custom) spallfile = ptt.join(specfull_dir, 'spAll-'+field+'-'+mjd+'.fits.gz') spalllitefile = ptt.join(specfull_dir, 'spAll-lite-'+field+'-'+mjd+'.fits.gz') splinefile = ptt.join(specfull_dir, 'spAllLine-'+field+'-'+mjd+'.fits.gz') spAlldatfile = ptt.join(specfull_dir, 'spAll-'+field+'-'+mjd+'.dat.gz') - elif run2d is not None: - if epoch is True: - spAll_dir = ptt.join(indir, run2d, 'epoch') - else: - spAll_dir = ptt.join(indir, run2d) - - if custom is None: - spallfile = ptt.join(spAll_dir, 'spAll-'+run2d+'.fits.gz') - spalllitefile = ptt.join(spAll_dir, 'spAll-lite-'+run2d+'.fits.gz') - splinefile = ptt.join(spAll_dir, 'spAllLine-'+run2d+'.fits.gz') - spAlldatfile = ptt.join(spAll_dir, 'spAll-'+run2d+'.dat.gz') - else: - spallfile = ptt.join(spAll_dir, 'spAll-'+run2d+'-'+custom+'.fits.gz') - spalllitefile = ptt.join(spAll_dir, 'spAll-lite-'+run2d+'-'+custom+'.fits.gz') - splinefile = ptt.join(spAll_dir, 'spAllLine-'+run2d+'-'+custom+'.fits.gz') - spAlldatfile = ptt.join(spAll_dir, 'spAll-'+run2d+'-'+custom+'.dat.gz') else: - if epoch is True: - spAll_dir = ptt.join(indir, 'epoch') + fflags = [] + dflags = [indir] + + if run2d is not None: + fflags.append(run2d) + dflags.extend([run2d, 'summary']) else: - spAll_dir = ptt.join(indir) - spallfile = ptt.join(spAll_dir, 'spAll.fits.gz') - spalllitefile = ptt.join(spAll_dir, 'spAll-lite.fits.gz') - splinefile = ptt.join(spAll_dir, 'spAllLine.fits.gz') - spAlldatfile = ptt.join(spAll_dir, 'spAll.dat.gz') + dflags.append('summary') + if custom is not None: + dflags.append(custom) + #spall_dir = ptt.join(indir, run2d, 'summary', fieldgroup(custom, custom=True)) + fflags.append(custom) + elif epoch is True: + dflags.append('epoch') + fflags.append('epoch') + #spAll_dir = ptt.join(indir, run2d, 'summary','epoch') + else: + #spAll_dir = ptt.join(indir, run2d) + dflags.append('daily') + + spall_dir = ptt.join(*dflags) + fflags = '-'.join(fflags) + if len(fflags) > 0: + fflags = '-'+fflags + spallfile = ptt.join(spall_dir, 'spAll'+fflags+'.fits.gz') + spalllitefile = ptt.join(spall_dir, 'spAll-lite'+fflags+'.fits.gz') + splinefile = ptt.join(spall_dir, 'spAllLine'+fflags+'.fits.gz') + spAlldatfile = ptt.join(spall_dir, 'spAll'+fflags+'.dat.gz') + if dev: spallfile = spallfile.replace('spAll','spAll_dev') spalllitefile = spalllitefile.replace('spAll','spAll_dev') @@ -932,7 +1103,7 @@ def build_fname(indir, run2d, outroot=None, field=None, mjd=None, dev=False, def write_spAll(spAll, spline, spAll_lite, indir, run2d, datamodel, line_datamodel, epoch=False, dev=False, outroot=None, field=None, mjd = None, verbose=False, clobber=False, silent=False, custom = None, - allsky = False, SDSSC2BV = ''): + allsky = False, SDSSC2BV = '', tmpext = '.tmp', bkup = False): spallfile, spalllitefile, splinefile, spAlldatfile = build_fname(indir, run2d, outroot=outroot, field=field, mjd=mjd, dev=dev, @@ -940,25 +1111,45 @@ def write_spAll(spAll, spline, spAll_lite, indir, run2d, datamodel, line_datamod drop_cols = None date = time.ctime() - if spline is not None: - spline = merge_dm(table=spline, ext = 'spZline', name = 'SPLINE', dm = line_datamodel, - splog=splog, drop_cols=drop_cols, verbose=verbose) - if spAll_lite is not None: - #spall_lite = spall_lite[np.where(spall_lite['CATALOGID'] != -999)[0]] - spAll_lite = merge_dm(table=spAll_lite, ext = 'SPALL_lite', name = 'SPALL', dm = datamodel, - splog=splog,drop_cols=drop_cols, verbose=verbose) exists = ptt.exists(spallfile) if not clobber else False - if spAll is None: return + if spAll is None: return(spallfile) + if bkup: + if ptt.exists(spallfile): + try: + bkup_str = datetime.strptime(fits.getheader(spallfile,0)['DATE'],'%c').isoformat() + except: + bkup_str = (datetime.now() - timedelta(days=1)).isoformat() + + if not ptt.exists(f"{spallfile}.bkup-{bkup_str}"): + shutil.copy2(spallfile,f"{spallfile}.bkup-{bkup_str}") + shutil.copy2(spalllitefile,f"{spalllitefile}.bkup-{bkup_str}") + shutil.copy2(splinefile,f"{splinefile}.bkup-{bkup_str}") + + if not exists: hdul = merge_dm(ext = 'Primary', hdr = {'RUN2D':run2d, 'Date':time.ctime(), 'SDSSC2BV': SDSSC2BV}, dm = datamodel, splog=splog, verbose=verbose) - spAll = merge_dm(table=spAll, ext = 'SPALL', name = 'SPALL', dm = datamodel, splog=splog,drop_cols=drop_cols, verbose=verbose) + splog.info('Formatting spAll table') + spAll = merge_dm(table=spAll, ext = 'SPALL', name = 'SPALL', dm = datamodel, + splog=splog, drop_cols=drop_cols, verbose=verbose) makedirs(ptt.dirname(spallfile), exist_ok=True) splog.log('Writing '+spallfile) - fits.HDUList([hdul,spAll]).writeto(spallfile, overwrite=True, checksum=True) - del hdul, spAll + fits.HDUList([hdul,spAll]).writeto(spallfile.replace('.gz',tmpext+'.gz'), + overwrite=True, checksum=True) + hdul = None + if spAll_lite is not None: + spAll = Table(spAll.data) + for col in spAll_lite.colnames: + try: + spAll.remove_column(col) + except Exception as e: + splog.warning(f'{col} {type(e).__name__}: {e}') + pass + spAll = hstack([spAll, spAll_lite], join_type = 'exact') + else: + spAll = None gc.collect() elif not silent: splog.log('Skipping '+spallfile+' (exists)') @@ -970,8 +1161,12 @@ def write_spAll(spAll, spline, spAll_lite, indir, run2d, datamodel, line_datamod 'Date':time.ctime(), 'SDSSC2BV': SDSSC2BV}, dm = datamodel, splog=splog, verbose=verbose) - fits.HDUList([hdul_lite, spAll_lite]).writeto(spalllitefile, overwrite=True, checksum=True) + splog.info('Formatting spAll-lite table') + spAll = merge_dm(table=spAll, ext = 'SPALL_lite', name = 'SPALL', dm = datamodel, + splog=splog, drop_cols=drop_cols, verbose=verbose) splog.log('Writing '+spalllitefile) + fits.HDUList([hdul_lite, spAll]).writeto(spalllitefile.replace('.gz',tmpext+'.gz'), + overwrite=True, checksum=True) del hdul_lite, spAll_lite gc.collect() elif not silent: @@ -982,55 +1177,31 @@ def write_spAll(spAll, spline, spAll_lite, indir, run2d, datamodel, line_datamod makedirs(ptt.dirname(splinefile), exist_ok=True) hdul_line = merge_dm(ext = 'Primary', hdr = {'RUN2D':run2d,'Date':time.ctime()}, dm = line_datamodel, splog=splog, verbose=verbose) - fits.HDUList([hdul_line,spline]).writeto(splinefile, overwrite=True, checksum=True) + splog.info('Formatting spAllLine table') + spline = merge_dm(table=spline, ext = 'spZline', name = 'SPLINE', dm = line_datamodel, + splog=splog, drop_cols=drop_cols, verbose=verbose) splog.log('Writing '+splinefile) + fits.HDUList([hdul_line,spline]).writeto(splinefile.replace('.gz',tmpext+'.gz'), + overwrite=True, checksum=True) del hdul_line, spline gc.collect() elif not silent: splog.log('Skipping '+splinefile+' (exists)') + try: + rename(spallfile.replace('.gz',tmpext+'.gz'),spallfile) + except: + pass + try: + rename(spalllitefile.replace('.gz',tmpext+'.gz'),spalllitefile) + except: + pass + try: + rename(splinefile.replace('.gz',tmpext+'.gz'),splinefile) + except: + pass + #spAll.write(spAlldatfile, format='ascii.fixed_width_two_line') - return - -if __name__ == '__main__' : - """ - build spAll - """ - parser = argparse.ArgumentParser( - prog=ptt.basename(sys.argv[0]), - description='Build BOSS spAll Summary File') - - parser.add_argument('--run2d', type=str, help='Optional override value for the enviro variable $RUN2D', default=getenv('RUN2D')) - parser.add_argument('--indir', type=str, help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX', default = getenv('BOSS_SPECTRO_REDUX')) - - - parser.add_argument('--skip_line', action='store_true', help='skip the generation of spAllLine.fits') - parser.add_argument('--include_bad', action='store_true', help='include bad fields') - parser.add_argument('--legacy', action='store_true', help='Include columns used by SDSS-IV and depreciated in SDSS-V') - parser.add_argument('--skip_specprimary', action='store_true', help='Skip creation of specprimary and associated columns') - parser.add_argument('--lite', action='store_true', help='Produce lite version of spAll file') - parser.add_argument('--XCSAO', action='store_true', help='Include XCSAO columns') - parser.add_argument('--field', '-f', type=str, help='Run for a single Field', default=None) - parser.add_argument('--mjd', '-m', type=str, help='Run for a single MJD', default=None) - parser.add_argument('--clobber', action='store_true', help='Clobber all spAll-field-mjd files') - parser.add_argument('--verbose', action='store_true', help='Log columns not saved') - parser.add_argument('--logfile', type=str, help='Manually set logfile') - parser.add_argument('--epoch', action='store_true', help='Produce spAll for epoch coadds') - parser.add_argument('--dev', action='store_true', help=argparse.SUPPRESS) - parser.add_argument('--programs', nargs='*', help='List of programs to include') - parser.add_argument('--datamodel', type=str, help='Supply a spAll datamodel file (defaults to $IDLSPEC2D/datamodel/spall_dm.par') - parser.add_argument('--line_datamodel', type=str, help='Supply a spline datamodel file (defaults to $IDLSPEC2D/datamodel/spzline_dm.par') - parser.add_argument('--outroot', type=str, help='Path and root of filename for output (defaults to $BOSS_SPECTRO_REDUX/$RUN2D/{field}/{mjd}/spAll)') - parser.add_argument('--remerge_fmjd', '-r',type=str, help='Field-MJD to replace in spAll') - parser.add_argument('--merge_only', '-o', action='store_true', help='Skip Building new spAll-Field-MJD files and just merge existing') - parser.add_argument('--allsky', action='store_true', help='Build spAll for Allsky Custom Coadd') - parser.add_argument('--custom', type=str, help='Name of Custom Coadd') - parser.add_argument('--run1d', type=str, help='Optional override value for the enviro variable $RUN1D (only for custom allsky coadds)', default=getenv('RUN1D')) - parser.add_argument('--limit', type=int, help='Limit number of Field-MJD spAll files to read before save', default = None) - - args = parser.parse_args() + return(spallfile) - if args.merge_only is True: - args.clobber = False - fieldmerge(**vars(args)) diff --git a/python/boss_drp/post/plot_QA.py b/python/boss_drp/post/plot_QA.py new file mode 100644 index 000000000..b931faa24 --- /dev/null +++ b/python/boss_drp/post/plot_QA.py @@ -0,0 +1,925 @@ +#!/usr/bin/env python3 +from boss_drp.field import field_spec_dir +from boss_drp.utils import load_env +from boss_drp import daily_dir, favicon, idlspec2d_dir +from boss_drp.utils import match as wwhere + + +try: + from sdssdb.peewee.sdss5db.targetdb import database + test = database.set_profile(load_env('DATABASE_PROFILE', default='pipelines')) + from sdssdb.peewee.sdss5db.targetdb import Field, Cadence, DesignMode, Design, DesignToField + from sdssdb.peewee.sdss5db import opsdb + from sdssdb.peewee.sdss5db.opsdb import Exposure, CameraFrame, Camera +except: + if load_env('DATABASE_PROFILE', default='pipelines').lower() in ['pipelines','operations']: + print('ERROR: No SDSSDB access') + exit() + else: + print('WARNING: No SDSSDB access') + +from pydl.pydlutils.yanny import read_table_yanny + +from astropy.io import fits +from astropy.table import Table, unique, vstack +from astropy.time import Time + +import pandas as pd +from os import getenv, environ, makedirs +import numpy as np +import argparse +import os.path as ptt +import time +import logging +import warnings +import datetime +import re +from tqdm import tqdm +from glob import glob + + + +import matplotlib.pyplot as plt +import matplotlib +matplotlib.use('agg') + +try: + import plotly.graph_objects as go + from plotly.subplots import make_subplots + import plotly.colors as pc + colors={'g':'green','y':'goldenrod','r':'red','m':'magenta','b':'blue', 'k':'black'} + axopts = dict( gridcolor='lightgrey', linecolor='darkgrey', showline=True, + mirror=True, tickcolor='darkgrey', ticks='outside',tickformat='.0f', + tickprefix='',ticksuffix='',tickmode='auto', + tickformatstops=[dict(dtickrange=[0,10], value='.2f'), + dict(dtickrange=[10,None],value='.0f')]) + ayopts = dict( gridcolor='lightgrey', linecolor='darkgrey', showline=True, + mirror=True, tickcolor='darkgrey', ticks='outside',tickmode='auto') + import plotly + from jinja2 import Template +except: + plotly = None + +filters = ['G','R','I'] +class Formatter(logging.Formatter): + def __init__(self): + super().__init__(fmt="%(levelno)d: %(msg)s", datefmt=None, style='%') + def format(self, record): + # Save the original format configured by the user + # when the logger formatter was instantiated + format_orig = self._style._fmt + if record.levelno == logging.INFO: + self._style._fmt = "%(message)s" + elif record.levelno == logging.DEBUG: + self._style._fmt = '%(funcName)s: %(message)s' + else: + self._style._fmt = "%(levelname)s: %(message)s" + # Call the original formatter class to do the grunt work + result = logging.Formatter.format(self, record) + # Restore the original format configured by the user + self._style._fmt = format_orig + return result + + +def load_fields(clobber_lists=False): + if not ptt.exists(ptt.join(daily_dir,'etc', 'RM_fields')) or clobber_lists is True: + try: + rm_fields = [] + field = DesignToField.select().join(Design).join(DesignMode).where(DesignMode.label == 'dark_rm').switch(DesignToField).join(Field) + for t in field: rm_fields.append(t.field.field_id) + field = DesignToField.select().join(Design).join(DesignMode).where(DesignMode.label == 'dark_rm_eng').switch(DesignToField).join(Field) + for t in field: rm_fields.append(t.field.field_id) + rm_fields=list(set(rm_fields)) + trm_fields=np.char.add(np.asarray(rm_fields).astype(str),'\n').tolist() + + if ptt.exists(ptt.join(daily_dir,'etc')): + with open(ptt.join(daily_dir,'etc', 'RM_fields'), 'w') as f: + f.writelines(trm_fields) + except: + rm_fields = [] + if not cron: warnings.warn('RM_fields file is missing and DB query failed', UserWarning) + else: splog.warnings('Warning: RM_fields file is missing and DB query failed') + else: + with open(ptt.join(daily_dir,'etc', 'RM_fields'), 'r') as f: + rm_fields = np.array(f.readlines()) + rm_fields= np.char.replace(rm_fields, '\n','').astype(int).tolist() + + if ptt.exists(ptt.join(daily_dir,'etc', 'RM_plates')): + with open(ptt.join(daily_dir,'etc', 'RM_plates')) as f: + rm_plates = np.array(f.readlines()) + rm_plates= np.char.replace(rm_plates, '\n','').astype(int).tolist() + rm_fields.extend(rm_plates) + + if not ptt.exists(ptt.join(daily_dir,'etc', 'DarkMonitor_fields')) or clobber_lists is True: + try: + monit_fields = [] + field = DesignToField.select().join(Design).join(DesignMode).where(DesignMode.label == 'dark_monit').switch(DesignToField).join(Field) + for t in field: monit_fields.append(t.field.field_id) + field = DesignToField.select().join(Design).join(DesignMode).where(DesignMode.label == 'dark_monit_eng').switch(DesignToField).join(Field) + for t in field: monit_fields.append(t.field.field_id) + monit_fields=list(set(monit_fields)) + tmonit_fields=np.char.add(np.asarray(monit_fields).astype(str),'\n').tolist() + if ptt.exists(ptt.join(daily_dir,'etc')): + with open(ptt.join(daily_dir,'etc', 'DarkMonitor_fields'), 'w') as f: + f.writelines(tmonit_fields) + except: + monit_fields = [] + if not cron: warnings.warn('DarkMonitor_fields file is missing and DB query failed', UserWarning) + else: splog.warnings('Warning: DarkMonitor_fields file is missing and DB query failed') + else: + with open(ptt.join(daily_dir,'etc', 'DarkMonitor_fields'), 'r') as f: + monit_fields = np.array(f.readlines()) + monit_fields= np.char.replace(monit_fields, '\n','').astype(int).tolist() + return (rm_fields, monit_fields) + +def plot_milestone(obs, axs, max_mjd, im=3, jm=2, html=False): + milestones = read_table_yanny(ptt.join(daily_dir,'etc','fiber_milestones.par'), 'MILESTONE') + milestones = milestones[np.where(milestones['obs'] == obs)] + labels = [] + for row in milestones: + for i in range(0,im): + for j in range(0,jm): + + if row['mjd'] > max_mjd + 1: + continue + label = row['label'] if row['label'] != '' else None + + if not html: + if row['linestyle'] in ['-', '--', '-.', ':', 'None', ' ', + '', 'solid', 'dashed', 'dashdot', 'dotted']: + ls = row['linestyle'] + else: + ls = ( 0, tuple(np.array(tuple(row['linestyle'].replace(',','').replace(' ',''))).astype(int))) + if jm == 1: + axs[i].axvline(row['mjd'], color=row['color'], lw = .5, ls = ls, label=label) + else: + axs[i,j].axvline(row['mjd'], color=row['color'], lw = .5, ls = ls, label=label) + else: + if row['bklinestyle'] is None: continue + #'solid', 'dot', 'dash', 'longdash', 'dashdot', 'longdashdot' + bk2p = {'dotted':'dot','dashed':'dash','3 3 1 3 1 3':'longdashdot'} + if row['bklinestyle'] in bk2p.keys(): + row['bklinestyle'] = bk2p[row['bklinestyle']] + + taxs = dict(row = i+1, col=1) if jm == 1 else dict(row=i+1,col=j+1) + line = dict(color=colors[row['color']], width=1, dash=row['bklinestyle']) + axs.add_shape(type="line", x0=row['mjd'],x1=row['mjd'],y0=0,y1=1, opacity=.8, + xref=f'x1', yref=f'y domain', name=label, showlegend=False, + line=line,**taxs) + # Add an invisible scatter trace to serve as a legend entry for the line + if (label is not None and i == 0 and j == 0): + axs.add_trace(go.Scatter(x=[None],y=[None],mode='lines', opacity=.8, + line=line,showlegend=True, name=label)) + return(axs, milestones) + +def split_by_nan(x, y): + isnan = np.isnan(y) + segments = [] + start_idx = 0 + for idx in range(1, len(isnan)): + if isnan[idx] != isnan[idx - 1]: + if not isnan[start_idx:idx].all(): + segments.append((x[start_idx:idx], y[start_idx:idx])) + start_idx = idx + if not isnan[start_idx:].all(): + segments.append((x[start_idx:], y[start_idx:])) + return segments + +def plot_QA(run2ds, test, mjds={}, obs='APO', testp='/test/sean/', clobber_lists=False, + publish = False, epoch=False, cron = False, fast_opsdb=False, html=False, + html_name = None): + + if cron: + makedirs(ptt.join(daily_dir,'logs','QA'),exist_ok=True) + logging.getLogger('matplotlib.font_manager').setLevel(logging.WARNING) + logging.getLogger('peewee').setLevel(logging.WARNING) + splog = logging.getLogger('root') + filelog = logging.FileHandler(ptt.join(daily_dir,'logs','QA', + datetime.datetime.today().strftime("%m%d%Y")+f'-{obs}.log')) + filelog.setLevel(logging.DEBUG) + filelog.setFormatter(Formatter()) + console = logging.StreamHandler() + console.setLevel(logging.DEBUG) + console.setFormatter(Formatter()) + splog.addHandler(filelog) + splog.addHandler(console) + splog.setLevel(logging.DEBUG) + if plotly is None and html is True: + if cron: + splog.warnings('plotly not installed... defaulting to no html') + else: + warnings.warn('plotly not installed... defaulting to no html', UserWarning) + html = False + + rm_fields, monit_fields = load_fields(clobber_lists=clobber_lists) + all_data = None + all_mdate = '' + all_mdate_f = 0 + + for rd,run2d in enumerate(run2ds): + if test[rd] is True: test_path = testp + else: test_path = '' + old_paths = False + + es = 'epoch' if epoch else 'daily' + try: + datafile = ptt.join(getenv("BOSS_SPECTRO_REDUX"),test_path, run2d,'summary',es,'spCalib_QA-'+run2d+'.fits') + data = Table.read(datafile, format='fits') + for col in data.colnames: + if data[col].dtype.kind == 'S': # 'S' indicates byte strings + data[col] = data[col].astype(str) + data = data.to_pandas() + except: + print('Checking old path') + datafile = ptt.join(getenv("BOSS_SPECTRO_REDUX"),test_path, run2d,'spCalib_QA-'+run2d+'.csv') + data=pd.read_csv(datafile) + old_paths = True + mdate_f = ptt.getctime(datafile) + mdate = time.ctime(ptt.getctime(datafile)) + if all_mdate_f < mdate_f: + all_mdate_f = mdate_f + all_mdate = mdate + if mjds is not None: + if run2d in mjds.keys(): + if mjds[run2d][0] is not None: data=data[data['MJD']>=mjds[run2d][0]] + if mjds[run2d][1] is not None: data=data[data['MJD']<=mjds[run2d][1]] + if obs is not None: + data=data[data['OBS'] == obs] + max_mjd = np.max(data['MJD'].values) + RM=data[data['FIELD'].isin(rm_fields)] + Monit=data[data['FIELD'].isin(monit_fields)] + if all_data is None: + all_data = data + else: + all_data = pd.concat([all_data,data], ignore_index=True) + if not html: + rm_style = {'ls':'', 'marker':'.', 'color':'C1', 'alpha':.5, 'label':'RM Fields'} + main_style = {'ls':'', 'marker':'.', 'color':'C0', 'alpha':.2, 'label':'All Fields'} + monit_style = {'ls':'', 'marker':'.', 'color':'C3', 'alpha':.5, 'label':'DarkMonitoring Fields'} + ylim = [-0.10,0.10] + ylim_r = [-0.001,0.15] + if rd == 0: + fig, axs = plt.subplots(3,2, figsize=[12,6]) + axs, milestones = plot_milestone(obs, axs, max_mjd) + else: + rm_style['label'] = None + main_style['label'] = None + monit_style['label'] = None + for i in range(0,3): + axs[i,0].axhline(0, alpha= .2, color='k') + axs[i,1].axhline(0.025, alpha= .2, color='k') + axs[i,0].plot(data['MJD'], data[filters[i]+'_MEAN'], **main_style) + axs[i,0].plot(Monit['MJD'], Monit[filters[i]+'_MEAN'], **monit_style) + axs[i,0].plot(RM['MJD'], RM[filters[i]+'_MEAN'], **rm_style) + axs[i,1].plot(data['MJD'], data[filters[i]+'_SIG'], **main_style) + axs[i,1].plot(Monit['MJD'], Monit[filters[i]+'_SIG'], **monit_style) + axs[i,1].plot(RM['MJD'], RM[filters[i]+'_SIG'], **rm_style) + axs[i,0].set_ylim(ylim) + axs[i,1].set_ylim(ylim_r) + if i != 2: + axs[i,0].set_xticklabels([]) + axs[i,1].set_xticklabels([]) + else: + axs[i,0].set_xlabel('MJD') + axs[i,1].set_xlabel('MJD') + axs[i,0].set_ylabel('['+filters[i].lower()+']') + axs[i,1].set_ylabel('['+filters[i].lower()+']') + if i == 0: + axs[0,0].set_title('mean log(synflux/calibflux)') + axs[0,1].set_title('sigma log(synflux/calibflux)') + else: + if rd == 0: + test_path = testp if test[0] is True else '' + save_dir = getenv('BOSS_QA_DIR', default=getenv('BOSS_SPECTRO_REDUX')) + if html_name is None: + html_name = f'BOSS_QA-{obs}.html' + savename = ptt.join(save_dir,html_name) + #output_file(filename=savename, title=f'{obs} BOSS QA') + axs = make_subplots(rows=4, cols=2,shared_xaxes=True, shared_yaxes=False, + vertical_spacing=0.02,horizontal_spacing=.05, + subplot_titles = ('mean log(synflux/calibflux)', + 'sigma log(synflux/calibflux)', + '','','','','','')) + axs.update_xaxes(title='MJD',row=4) + for r in [1,2,3]: + axs.update_yaxes(title=f'[{filters[r-1].lower()}]',row=r) + axs.update_yaxes(title='SEEING50',row=4) + axs.update_layout( paper_bgcolor='white', plot_bgcolor='white') + for fr in [1,2,3]: + axs.update_yaxes(range=[-0.10,0.10], row=fr, col=1) + axs.update_yaxes(range=[-0.001,0.15], row=fr, col=2) + axs.update_xaxes(showgrid=False, row=fr, **axopts) + axs.update_yaxes(showgrid=False, row=fr, **ayopts) + + axs.add_shape(type='line', x0=0, x1=1, y0=0.025, y1=0.025, + xref='x domain', yref=f'y1',opacity=.2, + line=dict(color='black', dash='solid',), + row=fr, col=2) + axs.add_shape(type='line', x0=0, x1=1, y0=0, y1=0, + xref='x domain', yref=f'y1',opacity=.2, + line=dict(color='black', dash='solid',), + row=fr, col=1) + + axs.update_xaxes(showgrid=True, row=4, **axopts) + axs.update_yaxes(showgrid=True, row=4, **ayopts) + axs, milestones = plot_milestone(obs, axs, max_mjd, im=4, jm=2, html=True) + rm_style = dict(marker=dict(size=5, color='orange'),name='RM Fields', + mode='markers', opacity=.5) + + main_style = dict(marker=dict(size=5, color='blue'),name='All Fields', + mode='markers', opacity=.1) + + monit_style = dict(marker=dict(size=5, color='red'), mode='markers', + name='DarkMonitoring Fields', opacity=.5) + + for fr in [1,2,3]: + for c in [1,2]: + sl = True if (fr == 1 and c==1 and rd == 0) else False + + type = '_MEAN' if c ==1 else '_SIG' + ht='MJD,Mean: %{x:.2f},%{y:.2f}' if c ==1 else 'MJD,Sigma: %{x:.2f},%{y:.2f}' + if len(data) > 0: + axs.add_trace(go.Scatter(x=data['MJD'], y=data[filters[fr-1]+type], + showlegend=sl, **main_style,hovertemplate=ht), row=fr,col=c) + if len(Monit) > 0: + axs.add_trace(go.Scatter(x=Monit['MJD'], y=Monit[filters[fr-1]+type], + showlegend=sl, **monit_style,hovertemplate=ht), row=fr,col=c) + if len(RM) > 0: + axs.add_trace(go.Scatter(x=RM['MJD'], y=RM[filters[fr-1]+type], + showlegend=sl, **rm_style,hovertemplate=ht), row=fr,col=c) + + if not html: + if publish: + plt.tight_layout(rect=(0,.07,1,1)) + nmiles = len(milestones[milestones['label'] != '']) + axs[2,0].legend(frameon=True,fontsize=8,loc=2,ncol=((nmiles+3)//2), bbox_to_anchor=(0, -.35)) + else: + plt.tight_layout() + axs[0,0].legend(frameon=True,fontsize=3,loc=2,ncol=2) + plt.gcf().text(0.02,0.02,'Updated: '+mdate+ ' (Latest MJD:'+str(max(data['MJD']))+')', fontsize=6, ha='left') + plt.gcf().text(0.98,0.02,'Run2d='+','.join(run2ds), fontsize=6, ha='right') + plt.gcf().text(0.50,0.02,'Observatory='+obs, fontsize=6, ha='center') + + ctype = 'epoch' if epoch else 'daily' + if len(run2ds) == 1: + outdir = ptt.join(getenv("BOSS_SPECTRO_REDUX"), test_path, run2d, 'summary') + outdir = ptt.join(outdir,ctype,'spCalib_QA-'+run2ds[0]+'-'+obs+'.png') + else: + outdir = ptt.join(getenv("BOSS_SPECTRO_REDUX"), test_path) + outdir = ptt.join(outdir,f'spCalib_QA-{ctype}-'+'+'.join(run2ds)+'-'+obs+'.png') + + plt.savefig(outdir, dpi=200) + plt.show() + if len(run2ds) == 1: + plotsn2=True + else: + plotsn2 = False + else: + see = None + dark_style = dict(marker=dict(size=3, color='orange'),name='Dark', + mode='markers', opacity=.5) + bright_style = dict(marker=dict(size=3, color='green'),name='Bright', + mode='markers', opacity=.5) + plate_style = dict(marker=dict(size=3, color='blue'),name='Plate', + mode='markers', opacity=.5) + bidx = [] + didx = [] + data = all_data + if (len(run2ds) == 1) or (len(mjds) == len(run2ds)): + plotsn2 = True + else: + plotsn2 = False + + if plotsn2: + mjd_limits = mjds + spall = None + mjds = [] + mj = [] + fsn2g = [] + fsn2r = [] + fsn2i = [] + exptime = [] + fcad = [] + see = [] + idx = 0 + + ep = '' if not epoch else 'epoch' + if cron: splog.info(f"Reading Field-MJD spAll for run2d={' '.join(run2ds)}") + + for i, row in tqdm(data.iterrows(), total=data.shape[0]): + idx = idx + 1 + if mjd_limits is not None: + r2d = None + for ir2d, run2d in enumerate(run2ds): + if mjd_limits[run2d][0] is not None: + if int(row['MJD']) < mjd_limits[run2d][0]: + continue + if mjd_limits[run2d][1] is not None: + if int(row['MJD']) > mjd_limits[run2d][1]: + continue + r2d = run2d + break + else: + ir2d = 0 + r2d = run2ds[0] + if r2d is None: + if cron: + splog.info('skipping: spAll-'+str(row['FIELD']).zfill(6)+'-'+str(row['MJD'])+'.fits') + continue + + test_path = testp if test[ir2d] is True else '' + if not old_paths: + spallfile = glob(ptt.join(field_spec_dir(ptt.join(getenv("BOSS_SPECTRO_REDUX"),test_path), + run2d, row['FIELD'], row['MJD'], + epoch = epoch, full= True), + f"spAll-{str(row['FIELD']).zfill(6)}-{row['MJD']}.fits*")) + else: + if epoch: + spallfile = glob(ptt.join(ptt.join(getenv("BOSS_SPECTRO_REDUX"),test_path), + run2d, 'epoch','spectra','full', + str(row['FIELD']).zfill(6), str(row['MJD']), + f"spAll-{str(row['FIELD']).zfill(6)}-{row['MJD']}.fits*")) + + else: + spallfile = glob(ptt.join(ptt.join(getenv("BOSS_SPECTRO_REDUX"),test_path), + run2d, 'spectra','full', + str(row['FIELD']).zfill(6), str(row['MJD']), + f"spAll-{str(row['FIELD']).zfill(6)}-{row['MJD']}.fits*")) + + if cron: + splog.info(f'({idx}/{data.shape[0]}) '+'spAll-'+str(row['FIELD']).zfill(6)+'-'+str(row['MJD'])+'.fits'+ f'(run2d:{r2d})') + if len(spallfile) == 0: + continue + else: + spallfile = spallfile[0] + try: + spall = Table(fits.getdata(spallfile,1)) + except Exception as e: + print(e) + continue + for row in (spall): + tobs = None + if np.isnan(row['MJD_FINAL']): + continue + if row['MJD_FINAL'] <= 59847: + tobs = 'APO' + elif (int(row['FIELD']) > 100000) & (row['MJD_FINAL'] < 60191): + tobs = 'APO' + else: + if 'OBS' in row.colnames: + tobs = row['OBS'] + else: + try: + tobs = row['OBSERVATORY'] + except: + continue + if tobs not in ['APO','LCO']: + idx = np.where(data['FIELD'] == int(row['FIELD']))[0] + if len(idx) == 0: continue + else: tobs = obs.upper() + if tobs != obs.upper(): + continue + nexp = len(row['FIELDSNR2R_LIST'].split()) + + if row['MJD_FINAL'] == 0: + mjds.extend([row['MJD']]*nexp) + else: + mjds.extend([row['MJD_FINAL']]*nexp) + +# mj.extend([row['MJD']]*nexp) + mj.extend((np.atleast_1d(np.asarray(row['TAI_LIST'].split())).astype(float)/(24*3600)).tolist()) + fsn2g.extend(row['FIELDSNR2G_LIST'].split()) + fsn2r.extend(row['FIELDSNR2R_LIST'].split()) + fsn2i.extend(row['FIELDSNR2I_LIST'].split()) + exptime.extend([row['EXPTIME']/row['NEXP']]*nexp) + fcad.extend([row['CADENCE']]*nexp) + see.extend([row['SEEING50']]*nexp) + mjds = np.asarray(mjds) + mj = np.asarray(mj) + exptime = np.asarray(exptime) + fcad = np.asarray(fcad) + fsn2g = np.asarray(fsn2g).astype(float) + fsn2r = np.asarray(fsn2r).astype(float) + fsn2i = np.asarray(fsn2i).astype(float) + see = np.asarray(see).astype(float) + test = Table({'MJD': mjds,'MJ':mj, 'exptime':exptime, 'fcad':fcad,'fsn2g':fsn2g,'fsn2r':fsn2r,'fsn2i':fsn2i,'see':see}) + if len(test) == 0: + return + test = unique(test,keys=['MJ','exptime','fcad','fsn2g','fsn2r','fsn2i']) + mjds = test['MJ'].data + exptime = test['exptime'].data + fsn2g = test['fsn2g'].data + fsn2r = test['fsn2r'].data + fsn2i = test['fsn2i'].data + fcad = test['fcad'].data + see = test['see'].data + + didx = np.where(wwhere(fcad, 'dark*'))[0] + bidx = np.where(wwhere(fcad, 'bright*'))[0] + pidx = np.where(wwhere(fcad, 'plate*'))[0] + + if not html: + fig, axs = plt.subplots(4,1, figsize=[12,8]) + + axs, milestones = plot_milestone(obs, axs, max_mjd, im=4, jm=1) + + axs[0] = plot_sn2_filt(axs[0], mjds, fsn2g, exptime, pidx, bidx, didx, 'FieldSN2_G/(900s)') + axs[1] = plot_sn2_filt(axs[1], mjds, fsn2r, exptime, pidx, bidx, didx, 'FieldSN2_R/(900s)') + axs[1].set_ylim(-.5,22) + axs[2] = plot_sn2_filt(axs[2], mjds, fsn2i, exptime, pidx, bidx, didx, 'FieldSN2_I/(900s)') + axs[2].set_ylim(-.5,22) + + + axs[3] = plot_sn2_filt(axs[3], mjds, see, np.full_like(see, 900.0), pidx, bidx, didx, 'SEEING50', labelbottom=True) + ylim = list(axs[3].get_ylim()) + if ylim[1] > 5.2: + ylim[1] = 5.2 + if ylim[0] > 0: + ylim[0] = -.2 + axs[3].set_ylim(ylim) + + axs[0].set_title('Field SNR^2 Per Exposure (900s)') + fig.tight_layout() + plt.subplots_adjust(hspace=0,bottom=.08) + plt.gcf().text(0.02,0.02,'Updated: '+mdate+ ' (Latest MJD:'+str(max(mj))+')', fontsize=6, ha='left') + plt.gcf().text(0.98,0.02,'Run2d='+','.join(run2ds), fontsize=6, ha='right') + plt.gcf().text(0.50,0.02,'Observatory='+obs, fontsize=6, ha='center') + outdir = ptt.join(getenv("BOSS_SPECTRO_REDUX"), test_path, run2d) + outdir = ptt.join(outdir,'summary') + if not epoch: + plt.savefig(ptt.join(outdir,'daily','SN2-'+run2ds[0]+'-'+obs+'.png'), dpi=200) + else: + plt.savefig(ptt.join(outdir,'epoch','SN2-'+run2ds[0]+'-'+obs+'.png'), dpi=200) + plt.show() + else: + axs2 = make_subplots(rows=4, cols=1, shared_xaxes=True, shared_yaxes=False,vertical_spacing=0.02, + subplot_titles=('Field SNR^2 Per Exposure (900s)','','','')) + axs2.update_xaxes(title='MJD',row=4) + for r in [1,2,3]: + axs2.update_yaxes(title=f'FieldSN2_{filters[r-1].upper()}/(900s)',row=r) + axs2.update_xaxes(showgrid=True, row=r, **axopts) + axs2.update_yaxes(showgrid=True, row=r, **ayopts) + axs2.update_xaxes(showgrid=True, row=4, **axopts) + axs2.update_yaxes(showgrid=True, row=4, **ayopts) + axs2.update_yaxes(title='SEEING50',row=4) + axs2.update_layout( paper_bgcolor='white', plot_bgcolor='white') + for r in [1,2,3]: + axs2.add_shape(go.layout.Shape(type="line", x0=0,x1=1,y0=0,y1=0, + xref=f'x domain', yref=f'y', opacity=.2, + line=dict(color="black", dash="solid")), + row=r,col=1) + + axs2, milestones = plot_milestone(obs, axs2, max_mjd, im=4, jm=1, html=True) + fsn2 = {'G':fsn2g,'R':fsn2r,'I':fsn2i} + didx = np.where(wwhere(fcad, 'dark*'))[0] + bidx = np.where(wwhere(fcad, 'bright*'))[0] + pidx = np.where(wwhere(fcad, 'plate*'))[0] + for i, filt in enumerate(filters): + fi = i+1 + sl = True if fi == 1 else False + ht='MJD,FieldSN2: %{x:.2f},%{y:.2f}' + if len(pidx) > 0: + axs2.add_trace(go.Scatter(x=mjds[pidx], y=fsn2[filt][pidx], + showlegend=sl, **plate_style,hovertemplate=ht), row=fi, col=1) + if len(bidx) > 0: + axs2.add_trace(go.Scatter(x=mjds[bidx], y=fsn2[filt][bidx], + showlegend=sl, **bright_style,hovertemplate=ht), row=fi, col=1) + if len(didx) > 0: + axs2.add_trace(go.Scatter(x=mjds[didx], y=fsn2[filt][didx], + showlegend=sl, **dark_style,hovertemplate=ht), row=fi, col=1) + if len(didx) > 0: + moving_mjd, moving_avg, moving_16, moving_84 = runAvg(mjds[didx],fsn2[filt][didx]*900.0/exptime[didx]) + color=dark_style['marker']['color'] + for (x_seg, upper_seg), (_, lower_seg) in zip(split_by_nan(moving_mjd, moving_84), split_by_nan(moving_mjd, moving_16)): + axs2.add_trace(go.Scatter(x=x_seg, y=upper_seg,fill=None, mode='lines',opacity=.1, + line=dict(color=color, width=.5), showlegend=False),row=fi, col=1) + axs2.add_trace(go.Scatter(x=x_seg, y=lower_seg, fill='tonexty',opacity=.1, + mode='lines', line=dict(color=color, width=.5), showlegend=False), row=fi, col=1) + axs2.add_trace(go.Scatter(x=moving_mjd,y=moving_avg, mode='lines',opacity=1, + line=dict(color=color, width=1),showlegend=False), row=fi, col=1) + if len(pidx) > 0: + moving_mjd, moving_avg, moving_16, moving_84 = runAvg(mjds[pidx],fsn2[filt][pidx]*900.0/exptime[pidx]) + color=plate_style['marker']['color'] + for (x_seg, upper_seg), (_, lower_seg) in zip(split_by_nan(moving_mjd, moving_84), split_by_nan(moving_mjd, moving_16)): + axs2.add_trace(go.Scatter(x=x_seg, y=upper_seg,fill=None, mode='lines',opacity=.1, + line=dict(color=color, width=.5), showlegend=False),row=fi, col=1) + axs2.add_trace(go.Scatter(x=x_seg, y=lower_seg, fill='tonexty',opacity=.1, + mode='lines', line=dict(color=color, width=.5), showlegend=False), row=fi, col=1) + axs2.add_trace(go.Scatter(x=moving_mjd,y=moving_avg, mode='lines',opacity=1, + line=dict(color=color, width=1),showlegend=False), row=fi, col=1) + + i = 3 + fr = i+1 + ht='MJD,SEEING50: %{x:.2f},%{y:.2f}' + if len(pidx) > 0: + axs2.add_trace(go.Scatter(x=mjds[pidx], y=see[pidx], + showlegend=False, **plate_style,hovertemplate=ht), row=fr, col=1) + for c in [1,2]: + axs.add_trace(go.Scatter(x=mjds[pidx], y=see[pidx],showlegend=False, + **plate_style,hovertemplate=ht), row=4, col=c) + if len(bidx) > 0: + axs2.add_trace(go.Scatter(x=mjds[bidx], y=see[bidx], + showlegend=False, **bright_style,hovertemplate=ht), row=fr, col=1) + for c in [1,2]: + axs.add_trace(go.Scatter(x=mjds[bidx], y=see[bidx],showlegend=False, + **bright_style,hovertemplate=ht), row=4, col=c) + if len(didx) > 0: + axs2.add_trace(go.Scatter(x=mjds[didx], y=see[didx], + showlegend=False, **dark_style,hovertemplate=ht), row=fr, col=1) + for c in [1,2]: + axs.add_trace(go.Scatter(x=mjds[didx], y=see[didx],showlegend=False, + **dark_style,hovertemplate=ht), row=4, col=c) + + if len(didx) > 0: + moving_mjd, moving_avg, moving_16, moving_84 = runAvg(mjds[didx],see[didx]) + color=dark_style['marker']['color'] + for (x_seg, upper_seg), (_, lower_seg) in zip(split_by_nan(moving_mjd, moving_84), split_by_nan(moving_mjd, moving_16)): + axs2.add_trace(go.Scatter(x=x_seg, y=upper_seg,fill=None, mode='lines',opacity=.1, + line=dict(color=color, width=.5), showlegend=False),row=4, col=1) + axs2.add_trace(go.Scatter(x=x_seg, y=lower_seg, fill='tonexty',opacity=.1, + mode='lines', line=dict(color=color, width=.5), showlegend=False), row=4, col=1) + axs2.add_trace(go.Scatter(x=moving_mjd,y=moving_avg, mode='lines',opacity=1, + line=dict(color=color, width=1),showlegend=False), row=4, col=1) + + + for c in [1,2]: + for (x_seg, upper_seg), (_, lower_seg) in zip(split_by_nan(moving_mjd, moving_84), split_by_nan(moving_mjd, moving_16)): + axs.add_trace(go.Scatter(x=x_seg, y=upper_seg,fill=None, mode='lines',opacity=.1, + line=dict(color=color, width=.5), showlegend=False),row=4, col=c) + axs.add_trace(go.Scatter(x=x_seg, y=lower_seg, fill='tonexty',opacity=.1, + mode='lines', line=dict(color=color, width=.5), showlegend=False), row=4, col=c) + axs.add_trace(go.Scatter(x=moving_mjd,y=moving_avg, mode='lines',opacity=1, + line=dict(color=color, width=1),showlegend=False), row=4, col=c) + + if len(pidx) > 0: + moving_mjd, moving_avg, moving_16, moving_84 = runAvg(mjds[pidx],see[pidx]) + color=plate_style['marker']['color'] + for (x_seg, upper_seg), (_, lower_seg) in zip(split_by_nan(moving_mjd, moving_84), split_by_nan(moving_mjd, moving_16)): + axs2.add_trace(go.Scatter(x=x_seg, y=upper_seg,fill=None, mode='lines',opacity=.1, + line=dict(color=color, width=.5), showlegend=False),row=4, col=1) + axs2.add_trace(go.Scatter(x=x_seg, y=lower_seg, fill='tonexty',opacity=.1, + mode='lines', line=dict(color=color, width=.5), showlegend=False), row=4, col=1) + axs2.add_trace(go.Scatter(x=moving_mjd,y=moving_avg, mode='lines',opacity=1, + line=dict(color=color, width=1),showlegend=False), row=4, col=1) + + for c in [1,2]: + for (x_seg, upper_seg), (_, lower_seg) in zip(split_by_nan(moving_mjd, moving_84), split_by_nan(moving_mjd, moving_16)): + axs.add_trace(go.Scatter(x=x_seg, y=upper_seg,fill=None, mode='lines',opacity=.1, + line=dict(color=color, width=.5), showlegend=False),row=4, col=c) + axs.add_trace(go.Scatter(x=x_seg, y=lower_seg, fill='tonexty',opacity=.1, + mode='lines', line=dict(color=color, width=.5), showlegend=False), row=4, col=c) + axs.add_trace(go.Scatter(x=moving_mjd,y=moving_avg, mode='lines',opacity=1, + line=dict(color=color, width=1),showlegend=False), row=4, col=c) + + axs.update_layout(legend=dict(orientation='h', x=0.5,y=-0.1, xanchor='center', + yanchor='top', font=dict(size=8),traceorder='normal', + itemwidth=30, tracegroupgap=1,borderwidth=.5, + bgcolor='rgba(255, 255, 255, 0.5)', bordercolor='black')) + axs2.update_layout(legend=dict(orientation='h', x=0.5,y=-0.12, xanchor='center', + yanchor='top', font=dict(size=8),traceorder='normal', + itemwidth=30, tracegroupgap=1,borderwidth=.5, + bgcolor='rgba(255, 255, 255, 0.5)', bordercolor='black')) + +# axs.update_layout(legend=dict(x=0,y=1,traceorder='normal',orientation='v', +# font=dict(size=8), bgcolor='rgba(255, 255, 255, 0.5)', +# bordercolor='black', borderwidth=.5, tracegroupgap=1)) +# axs2.update_layout(legend=dict(x=0,y=1,traceorder='normal',orientation='v', +# font=dict(size=8), bgcolor='rgba(255, 255, 255, 0.5)', +# bordercolor='black', borderwidth=.5, tracegroupgap=1)) + if see is not None: + ymin = np.nanmin(see) + ymax = np.nanmax(see) + if ymin < 0: + ymin = -0.2 + if ymax > 5.2: + ymax = 5.2 + axs.update_yaxes(range=[ymin, ymax], row=4) + axs2.update_yaxes(range=[ymin, ymax], row=4) + + + if cron: splog.info(f'Reading OPSDB Exposures') + try: + opsdb.database.set_profile('operations') + environ['OBSERVATORY'] = obs.upper() + opsdb.database.connect() # This will recreate the base model class and reload all the model classes + CCDs = ['b2','r2'] if obs.upper() == 'LCO' else ['b1','r1'] + from sdssdb.peewee.sdss5db.opsdb import Exposure, CameraFrame, Camera, Configuration + except Exception as e: + print(e) + if not cron: warnings.warn('No Connection to the SDSS-V OpsDB (internal only)', UserWarning) + else: splog.warnings('WARNING: No Connection to the SDSS-V OpsDB (internal only)') + sos_data = None + Configuration = None + + if Configuration is not None: + if not fast_opsdb: + blue = CameraFrame.select(CameraFrame.exposure.exposure_no.alias('expid'),CameraFrame.exposure.exposure_time.alias('exptime'), CameraFrame.exposure.start_time, CameraFrame.sn2.alias(CCDs[0]), Design.design_mode.alias('design_mode')).join(Exposure).join(Configuration).join(Design, on=(Configuration.design_id == Design.design_id)).join(DesignMode).switch(CameraFrame).join(Camera).where(Camera.label == CCDs[0]).dicts() + red = CameraFrame.select(CameraFrame.exposure.exposure_no.alias('expid'), CameraFrame.sn2.alias(CCDs[1])).join(Exposure).switch(CameraFrame).join(Camera).where(Camera.label == CCDs[1]).dicts() + sos_data=pd.DataFrame(blue) + sos_data_r = pd.DataFrame(red) + sos_data = pd.merge(sos_data, sos_data_r, on='expid', how='outer', indicator=True) + sos_data = sos_data.loc[sos_data['_merge'] == 'both'] + sos_data = sos_data.assign(mjd=lambda x: Time(x.start_time).mjd) + sos_data = sos_data.sort_values('mjd') + _dir = ptt.dirname(savename) + _name = ptt.basename(savename).replace('.html','_sos.csv') + sos_data.to_csv(ptt.join(_dir,f'.{_name}')) + else: + _dir = ptt.dirname(savename) + _name = ptt.basename(savename).replace('.html','_sos.csv') + if ptt.exists(ptt.join(_dir,f'.{_name}')): + sos_data = pd.read_csv(ptt.join(_dir,f'.{_name}')) + else: + sos_data = None + if cron:splog.info(f'No OPSDB SOS data') + else: warnings.warn('No OPSDB SOS data') + if cron: splog.info(f'Done Reading OPSDB Exposures') + + if sos_data is not None: + for ccd in CCDs: + sos_data[f'{ccd}_900'] = sos_data[ccd]/sos_data['exptime']*900 + axs3 = make_subplots(rows=3, cols=1, shared_xaxes=True, shared_yaxes=False,vertical_spacing=0.02, + subplot_titles=('SOS SNR^2 Per Exposure (900s)','','','')) + axs3.update_xaxes(title='MJD',row=3) + axs3.update_yaxes(title=f'SOS SN2_{CCDs[0]}/(900s)',row=1) + axs3.update_yaxes(title=f'SOS SN2_{CCDs[1]}/(900s)',row=2) + axs3.update_yaxes(title='SEEING50',row=3) + axs3.update_layout( paper_bgcolor='white', plot_bgcolor='white') + for r in [1,2,3]: + axs3.update_xaxes(showgrid=True, row=r, **axopts) + axs3.update_yaxes(showgrid=True, row=r, **ayopts) + axs3, milestones = plot_milestone(obs, axs3, max_mjd, im=3, jm=1, html=True) + dsidx = np.where(wwhere(sos_data['design_mode'].values, 'dark*'))[0] + bsidx = np.where(wwhere(sos_data['design_mode'].values, 'bright*'))[0] + + for i, ccd in enumerate(CCDs): + r = i + 1 + sl = True if r == 1 else False + ht = 'MJD,SOS_SN2: %{x:.2f},%{y:.2f}' + axs3.add_shape(go.layout.Shape(type="line", x0=0,x1=1,y0=0,y1=0, + xref=f'x domain', yref=f'y', opacity=.2, + line=dict(color="black", dash="solid")), + row=r,col=1) + + if len(bsidx) > 0: + axs3.add_trace(go.Scatter(x=sos_data['mjd'].values[bsidx], + y=sos_data[f'{ccd}_900'].values[bsidx], + showlegend=sl, **bright_style,hovertemplate=ht), row=r, col=1) + + if len(dsidx) > 0: + axs3.add_trace(go.Scatter(x=sos_data['mjd'].values[dsidx], + y=sos_data[f'{ccd}_900'].values[dsidx], + showlegend=sl, **dark_style,hovertemplate=ht), row=r, col=1) + color=dark_style['marker']['color'] + moving_mjd, moving_avg, moving_16, moving_84 = runAvg(sos_data['mjd'].values[dsidx], + sos_data[f'{ccd}_900'].values[dsidx]) + + for (x_seg, upper_seg), (_, lower_seg) in zip(split_by_nan(moving_mjd, moving_84), split_by_nan(moving_mjd, moving_16)): + axs3.add_trace(go.Scatter(x=x_seg, y=upper_seg,fill=None, mode='lines',opacity=.1, + line=dict(color=color, width=.5), showlegend=False),row=r, col=1) + axs3.add_trace(go.Scatter(x=x_seg, y=lower_seg, fill='tonexty',opacity=.1, + mode='lines', line=dict(color=color, width=.5), showlegend=False), row=r, col=1) + axs3.add_trace(go.Scatter(x=moving_mjd,y=moving_avg, mode='lines',opacity=1, + line=dict(color=color, width=1),showlegend=False), row=r, col=1) + + i = 2 + fr = i+1 + ht = 'MJD,Seeing: %{x:.2f},%{y:.2f}' + if len(bidx) > 0: + axs3.add_trace(go.Scatter(x=mjds[bidx], y=see[bidx], + showlegend=False, **bright_style,hovertemplate=ht), row=fr, col=1) + if len(didx) > 0: + axs3.add_trace(go.Scatter(x=mjds[didx], y=see[didx], + showlegend=False, **dark_style,hovertemplate=ht), row=fr, col=1) + moving_mjd, moving_avg, moving_16, moving_84 = runAvg(mjds[didx],see[didx]) + color=dark_style['marker']['color'] + for (x_seg, upper_seg), (_, lower_seg) in zip(split_by_nan(moving_mjd, moving_84), split_by_nan(moving_mjd, moving_16)): + axs3.add_trace(go.Scatter(x=x_seg, y=upper_seg,fill=None, mode='lines',opacity=.1, + line=dict(color=color, width=.5), showlegend=False),row=fr, col=1) + axs3.add_trace(go.Scatter(x=x_seg, y=lower_seg, fill='tonexty',opacity=.1, + mode='lines', line=dict(color=color, width=.5), showlegend=False), row=fr, col=1) + axs3.add_trace(go.Scatter(x=moving_mjd,y=moving_avg, mode='lines',opacity=1, + line=dict(color=color, width=1),showlegend=False), row=fr, col=1) + + # axs3.update_layout(legend=dict(x=0,y=1,traceorder='normal',orientation='v', + # font=dict(size=8), bgcolor='rgba(255, 255, 255, 0.5)', + # bordercolor='black', borderwidth=.5, tracegroupgap=1)) + axs3.update_layout(legend=dict(orientation='h', x=0.5,y=-0.12, xanchor='center', + yanchor='top', font=dict(size=8),traceorder='normal', + itemwidth=30, tracegroupgap=1,borderwidth=.5, + bgcolor='rgba(255, 255, 255, 0.5)', bordercolor='black')) + + if see is not None: + ymin = np.nanmin(see) + ymax = np.nanmax(see) + if ymin < 0: + ymin = -0.2 + if ymax > 5.2: + ymax = 5.2 + axs3.update_yaxes(range=[ymin, ymax], row=4) + sosmjd = max(sos_data['mjd']) + else: + axs3= [] + sosmjd = '' + + title = '\n'.join([f"

    SDSS-V {obs} BOSS QA: {','.join(run2ds)}

    ", + f"

    Spectro-photometric Plot Updated: {all_mdate}
    ", + f" Latest Full Pipeline MJD:{max(data['MJD'])}
    ", + f" Latest SOS Pipeline MJD:{sosmjd}
    ", + f" Last Updated: {time.ctime()} (MJD: {int(Time.now().mjd)})

    "]) + + config1 = {'toImageButtonOptions': {'format': 'png','scale': 6 , # Multiply title/legend/axis/canvas sizes by this factor + 'filename': f"spCalib_QA-{','.join(run2ds)}-{obs}.png"}, + 'responsive': True} # Ensure the figure is responsive + fig1_params = dict(full_html=False, default_height='900px', default_width='100%', + include_plotlyjs='cdn', config=config1) + + config2 = {'toImageButtonOptions': {'format': 'png','scale': 6 , # Multiply title/legend/axis/canvas sizes by this factor + 'filename': f"FieldSN2-{','.join(run2ds)}-{obs}.png"}, + 'responsive': True} # Ensure the figure is responsive + fig2_params = dict(full_html=False, default_height='900px', default_width='100%', + include_plotlyjs='cdn', config=config2) + plotly_jinja_data = {"fig": axs.to_html(**fig1_params), + "fig_FieldSN2": axs2.to_html(**fig2_params), + "title":title, "name":f'{obs} BOSS QA', "favicon":favicon} + + if see is not None: + config3 = {'toImageButtonOptions': {'format': 'png','scale': 6 , # Multiply title/legend/axis/canvas sizes by this factor + 'filename': f"SOS_SN2-{','.join(run2ds)}-{obs}.png"}, + 'responsive': True} # Ensure the figure is responsive + fig3_params = dict(full_html=False, default_height='900px', default_width='100%', + include_plotlyjs='cdn', config=config3) + + plotly_jinja_data["fig_SOS"] = axs3.to_html(**fig3_params) + template = ptt.join(idlspec2d_dir,'templates','html','QA_template.html') + else: + template = ptt.join(idlspec2d_dir,'templates','html','QA_noSOS_template.html') + + with open(savename, "w", encoding="utf-8") as output_file: + with open(template) as template_file: + j2_template = Template(template_file.read()) + output_file.write(j2_template.render(plotly_jinja_data)) + + +def plot_sn2_filt(axs, mjds, fsn2, exptime, pidx,bidx,didx,label, labelbottom=False): + + axs.grid(linestyle = ':', linewidth = 0.5) + axs.minorticks_on() + axs.tick_params(axis='both', which='both', labelleft=True, labelright=True, labelbottom=labelbottom, labeltop=False, bottom=True, top=False, left=True, right=True) + axs.tick_params(axis='x', which='both', bottom=True, top=True, direction='inout') + axs.plot(mjds[pidx], fsn2[pidx]*900.0/exptime[pidx], ls = '', marker= '.', ms = .5, color='C0', alpha=.5) + axs.plot(mjds[bidx], fsn2[bidx]*900.0/exptime[bidx], ls = '', marker= '.', ms = .5, color='C2', alpha=.5) + axs.plot(mjds[didx], fsn2[didx]*900.0/exptime[didx], ls = '', marker= '.', ms = .5, color='C1', alpha=.5) + if len(didx) > 0: + moving_mjd, moving_avg, moving_16, moving_84 = runAvg(mjds[didx],fsn2[didx]*900.0/exptime[didx]) + axs.plot(moving_mjd, moving_avg, color='C1', alpha=.5) + axs.fill_between(moving_mjd,moving_16, moving_84, color='C1', alpha=.1) + if len(pidx) > 0: + moving_mjd, moving_avg, moving_16, moving_84 = runAvg(mjds[pidx],fsn2[pidx]*900.0/exptime[pidx]) + axs.plot(moving_mjd, moving_avg, color='C0', alpha=.5) + axs.fill_between(moving_mjd,moving_16, moving_84, color='C0', alpha=.1) + axs.plot(np.nan, np.nan,label='plate', ls = '', marker= '.', color='C0', ms = 2) + axs.plot(np.nan, np.nan,label='bright', ls = '', marker= '.', color='C2', ms = 2) + axs.plot(np.nan, np.nan,label='dark', ls = '', marker= '.', color='C1', ms = 2) + axs.legend(frameon=True,fontsize=3,loc=2) + axs.set_xlabel('MJD') + axs.set_ylabel(label) + return(axs) + +def runAvg(mjd, val, ws=7): + i = int(np.nanmin(mjd)) + moving_mjd = [] + moving_avg = [] + moving_16 = [] + moving_84 = [] + maxi = int(np.nanmax(mjd))#-ws+1 + warnings.filterwarnings("error") + + while i < maxi: + idx = np.where((mjd>=i) & (mjd < i+ws))[0] + i=i+1 + if len(idx) == 0: + moving_mjd.append(i+.5*ws) + moving_avg.append(np.NaN) + moving_16.append(np.NaN) + moving_84.append(np.NaN) + else: + try: + np.nanmean(mjd[idx]) + np.nanmean(val[idx]) + except: + moving_mjd.append(i+.5*ws) + moving_avg.append(np.NaN) + moving_16.append(np.NaN) + moving_84.append(np.NaN) + continue + moving_mjd.append(np.nanmean(mjd[idx])) + moving_avg.append(np.nanmean(val[idx])) + moving_16.append(np.percentile(val[idx],16)) + moving_84.append(np.percentile(val[idx],84)) + + warnings.resetwarnings() + + return(moving_mjd, moving_avg, moving_16, moving_84) + + diff --git a/python/boss_drp/post/plot_sky_coverage.py b/python/boss_drp/post/plot_sky_coverage.py new file mode 100644 index 000000000..b7a1b7688 --- /dev/null +++ b/python/boss_drp/post/plot_sky_coverage.py @@ -0,0 +1,235 @@ +import matplotlib +matplotlib.use('agg') +import matplotlib.patheffects as PathEffects +from matplotlib import pyplot as plt +from numpy import ma +import numpy as np +import os.path as ptt +from astropy.io import fits +from astropy.table import Table, unique + +import warnings +warnings.filterwarnings("ignore", message="All-NaN axis encountered") + +def plot_sky_locations(topdir, flist_file, splog): + splog.info('Producing Field Location Plots') + with fits.open(ptt.join(topdir, flist_file), memmap=True) as hdul: + flist = hdul[1].data + idx = np.where(np.char.strip(flist['STATUS1D'].data) == 'Done')[0] + + RA = flist['RACEN'][idx] + DEC = flist['DECCEN'][idx] + prog = np.char.upper(flist['PROGRAMNAME'][idx]) + fcad = np.char.lower(flist['FIELD_CADENCE'][idx]) + fid = flist['FIELD'][idx] + fsur = np.char.lower(flist['SURVEY'][idx]) + status = np.char.lower(flist['STATUS1D'][idx]) + nexp = flist['NEXP'][idx] + flist = None +# plot the RA/DEC in an area-preserving projection +# convert coordinates to degrees + RA *= np.pi / 180 + DEC *= np.pi / 180 + phi = np.linspace(0, 2.*np.pi, 36) #36 points + r = np.radians(1.5) + C0=C1=C2=C3=C4=C5=C6=C7=0 + + fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.0), layout='constrained', subplot_kw={'projection': 'mollweide'}) + plt.grid(True) + plt.title('SDSS plate/field locations') + for i in range(0, len(RA)): + + if RA[i] < np.pi: + x = RA[i] + r*np.cos(phi) + else: + x = RA[i] + r*np.cos(phi)-2*np.pi + y = DEC[i] + r*np.sin(phi) + if 'dark' in fcad[i].lower(): + label = 'FPS DARK' if C0 == 0 else None + ax.plot(x, y, color = 'blue', label = label, alpha=.5) + C0 = 1 + elif 'bright' in fcad[i]: + label = 'FPS BRIGHT' if C1 == 0 else None + ax.plot(x, y, color = 'orange', label = label, alpha=.5) + C1 = 1 + elif 'plate' in fcad[i]: + label = 'PLATE' if C2 == 0 else None + ax.plot(x, y, color = 'green', label = label, alpha=.5) + C2 = 1 + else: +# pass + label = 'MANUAL' if C3 == 0 else None + ax.plot(x, y, color = 'saddlebrown', label = label, alpha=.5) + C3 = 1 + + plt.legend(loc=1,fontsize=10) + xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] + txt = ax.set_xticklabels(xlab) + for t in txt: + t.set_path_effects([PathEffects.withStroke(linewidth=1, foreground='w')]) + plt.savefig(ptt.join(topdir,'SDSSVc_s.png'),dpi=50,bbox_inches='tight') + plt.savefig(ptt.join(topdir,'SDSSVc.png'),dpi=500,bbox_inches='tight') + plt.close() + + C0=C1=C2=C3=C4=C5=C6=C7=C8=C9=0 + +#################################################################################### + fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.0), layout='constrained', subplot_kw={'projection': 'mollweide'}) + plt.grid(True) + plt.title('SDSS-V plate/field locations') + for i in range(0, len(RA)): + if RA[i] < np.pi: + x = RA[i] + r*np.cos(phi) + else: + x = RA[i] + r*np.cos(phi)-2*np.pi + y = DEC[i] + r*np.sin(phi) + if 'RM' in prog[i]: + label = 'RM' if C0 == 0 else None + ax.plot(x, y, color = 'blue', label = label) + C0 = 1 + elif 'MWM' in prog[i]: + label = 'MWM' if C1 == 0 else None + ax.plot(x, y, color = 'red', label = label) + C1 = 1 + elif 'AQMES-Medium'.upper() in prog[i]: + label = 'AQMES-Medium' if C2 == 0 else None + ax.plot(x, y, color = 'pink', label = label) + C2 = 1 + elif 'AQMES-Wide'.upper() in prog[i]: + label = 'AQMES-Wide' if C3 == 0 else None + ax.plot(x, y, color = 'orange', label = label) + C3 = 1 + elif 'AQMES-Bonus'.upper() in prog[i]: + label = 'AQMES-Bonus' if C4 == 0 else None + ax.plot(x, y, color = 'magenta', label = label) + C4 = 1 + elif 'eFEDS'.upper() in prog[i]: + label = 'eFEDS' if C5 == 0 else None + ax.plot(x, y, color = 'green', label = label) + C5 = 1 + elif 'OFFSET'.upper() in prog[i]: + label = 'OFFSET' if C6 == 0 else None + ax.plot(x, y, color = 'black', label = label) + C6 = 1 + elif 'mwm-bhm' in fsur[i]: + label = 'MWM-BHM FPS' if C7 == 0 else None + ax.plot(x, y, color = 'navy', label = label) + C7 = 1 + elif 'bhm-mwm' in fsur[i]: + label = 'BHM-MWM FPS' if C8 == 0 else None + ax.plot(x, y, color = 'lightcoral', label = label) + C8 = 1 + else: + ax.plot(x, y, color = 'saddlebrown') + C9 = 1 + plt.legend(loc=1,fontsize=10) + xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] + txt = ax.set_xticklabels(xlab) + for t in txt: + t.set_path_effects([PathEffects.withStroke(linewidth=1, foreground='w')]) + plt.savefig(ptt.join(topdir,'SDSSV_s.png'),dpi=50,bbox_inches='tight') + plt.savefig(ptt.join(topdir,'SDSSV.png'),dpi=500,bbox_inches='tight') + plt.close() + + +#################################################################################### + allpointings = Table() + if len(idx) == 0: + allpointings['RA'] = [np.NaN] + allpointings['DEC'] = [np.NaN] + allpointings['Nexp'] = [np.NaN] + else: + allpointings['RA'] = RA * 180/np.pi + allpointings['DEC'] = DEC * 180/np.pi + allpointings['Nexp'] = nexp + RA = DEC = prog = fcad = fsur = status = None + + pointings = unique(allpointings, keys=['RA','DEC']) + pointings.add_column(0, name='Nobs') + pointings['Nexp'] = 0 + + pointings.add_column(0.0, name='x') + pointings.add_column(0.0, name='y') + for row in pointings: + idx = np.where((allpointings['RA'].data == row['RA']) & + (allpointings['DEC'].data == row['DEC']))[0] + row['Nobs'] = len(idx) + row['Nexp'] = np.sum(allpointings[idx]['Nexp'].data) + if row['RA']*np.pi / 180 < np.pi: + row['x'] = row['RA']*np.pi / 180 + else: + row['x'] = row['RA']*np.pi / 180 - 2*np.pi + row['y'] = row['DEC']*np.pi / 180 + + + fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.25),layout='constrained', subplot_kw={'projection': 'mollweide'}) + with np.errstate(invalid="ignore"): + plt.scatter(pointings['x'].data, pointings['y'].data, s=30, + c=pointings['Nobs'].data, marker= 'x', + cmap=plt.cm.jet,alpha=.5) + + plt.grid(True) + plt.title('SDSS field locations') + cb = plt.colorbar(location='bottom') + + xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] + txt = ax.set_xticklabels(xlab) + for t in txt: + t.set_path_effects([PathEffects.withStroke(linewidth=1, foreground='w')]) + cb.set_label('Number of Field-MJD ') + plt.savefig(ptt.join(topdir,'SDSSV3.png'),dpi=500,bbox_inches='tight') + plt.savefig(ptt.join(topdir,'SDSSV3_s.png'),dpi=50,bbox_inches='tight') + plt.close() + + +#################################################################################### +def plot_sky_targets(topdir, spall_file, splog, nobs=False, maxn=1000): + splog.info('Producing Observed Target Density Plots') + RA1 = None + if not nobs: + if not ptt.exists(ptt.join(topdir,'SDSSV2.png')): + RA1 = np.asarray([np.NaN]) + DEC1 = np.asarray([np.NaN]) + Nobs = np.zeros_like(DEC1) + + if RA1 is None: + if ptt.exists(spall_file): + with fits.open(spall_file,memmap=True) as hdul: + table_data = hdul[1].data + RA1 = table_data.field('RACAT') + DEC1 = table_data.field('DECCAT') + Nobs = table_data.field('NSPECOBS') + table_data = None + if len(RA1) == 0: + RA1 =np.asarray([np.NaN]) + DEC1=np.asarray([np.NaN]) + Nobs=np.zeros_like(DEC1) + else: + RA1 = np.asarray([np.NaN]) + DEC1 = np.asarray([np.NaN]) + Nobs = np.zeros_like(DEC1) + + RA1 *= np.pi / 180 + DEC1 *= np.pi / 180 + for i in range(0, len(RA1)): + if RA1[i] >= np.pi: + RA1[i]=RA1[i]-2*np.pi + + fig, ax = plt.subplots(figsize=(9.5*1.0,5.5*1.25),layout='constrained', subplot_kw={'projection': 'mollweide'}) + + idx = np.argsort(Nobs) + maxn = np.nanmax(ma.where(Nobs < np.min([maxn, max(Nobs)]), Nobs, np.nan)) + with np.errstate(invalid="ignore"): + plt.scatter(RA1[idx], DEC1[idx], s=.05, c=Nobs[idx], cmap=plt.cm.jet, + edgecolors='none', linewidths=0, vmin = 1, vmax = maxn) + plt.grid(True) + plt.title('SDSS Observed Targets') + cb = plt.colorbar(location='bottom') + xlab = ['14h','16h','18h','20h','22h','0h','2h','4h','6h','8h','10h'] + txt = ax.set_xticklabels(xlab) + for t in txt: + t.set_path_effects([PathEffects.withStroke(linewidth=1, foreground='w')]) + cb.set_label('Nobs') + plt.savefig(ptt.join(topdir,'SDSSV2_s.png'),dpi=50,bbox_inches='tight') + plt.savefig(ptt.join(topdir,'SDSSV2.png'),dpi=500,bbox_inches='tight') + plt.close() diff --git a/bin/spSpec_reformat.py b/python/boss_drp/post/spSpec_reformat.py similarity index 89% rename from bin/spSpec_reformat.py rename to python/boss_drp/post/spSpec_reformat.py index 1fee519dd..9b6d2cad8 100755 --- a/bin/spSpec_reformat.py +++ b/python/boss_drp/post/spSpec_reformat.py @@ -1,4 +1,6 @@ #!/usr/bin/env python3 +from boss_drp.utils import Splog +from boss_drp.field import * import os.path as ptt from os import getenv, makedirs, rename @@ -6,24 +8,16 @@ from astropy.table import Table from glob import glob import argparse, sys -import tqdm -#import logging import matplotlib.pyplot as plt from matplotlib.transforms import Bbox import matplotlib as mpl import matplotlib.image as image import numpy as np -#from astropy.convolution import convolve from pydl.pydlutils.sdss import sdss_flagname import warnings from PIL import Image, PngImagePlugin - -mpl.use('Agg') - import time -import logging -from splog import Splog -from field import * + splog = Splog() @@ -60,6 +54,8 @@ } +mpl.use('Agg') +plt.ioff() mpl.rcParams.update(rc_fonts) def nan_helper(y): @@ -79,16 +75,6 @@ def nan_helper(y): return ~np.isfinite(y), lambda z: z.nonzero()[0] -def rebin(a, *args): - shape = a.shape - lenShape = len(shape) - factor = np.asarray(shape)/np.asarray(args) - evList = ['a.reshape('] + \ - ['args[%d],factor[%d],'%(i,i) for i in range(lenShape)] + \ - [')'] + ['.mean(%d)'%(i+1) for i in range(lenShape)] - return eval(''.join(evList)) - - def sdss_spec_smooth(loglam, flux, vdisp): sflux=flux if vdisp > 1.0: @@ -206,24 +192,27 @@ def set_description(card, h, field_hdr): return(h, card,None) def spSpec_reformat(boss_spectro_redux, run2d, run1d, field, mjd, - plot=False, epoch=False, lsdr10=False, allsky=False): + plot=False, epoch=False, lsdr10=False, + allsky=False, custom=None): if allsky is False: field = field_to_string(field) + specfull_dir = field_spec_dir(boss_spectro_redux, run2d, field, mjd, + epoch=epoch, custom=allsky, custom_name=custom) + speclite_dir = field_spec_dir(boss_spectro_redux, run2d, field, mjd, + epoch=epoch, full=False, custom=allsky, + custom_name=custom) + specImg_dir = field_png_dir(boss_spectro_redux, run2d, run1d, field, mjd, + epoch=epoch, custom=allsky, custom_name=custom) + fdir = field_dir(ptt.join(boss_spectro_redux, run2d), field, custom=allsky) if epoch is True: - specfull_dir = ptt.join(boss_spectro_redux, run2d, 'epoch','spectra','full', field, mjd) - speclite_dir = ptt.join(boss_spectro_redux, run2d, 'epoch', 'spectra','lite', field, mjd) - specImg_dir = ptt.join(boss_spectro_redux, 'images', run2d, 'epoch', run1d, field+'-'+mjd) - sp1d_dir = ptt.join(boss_spectro_redux, run2d, field, 'epoch', run1d) - logfile = ptt.join(boss_spectro_redux, run2d, field, 'epoch', 'spSpec_reformat-'+field+'-'+mjd+'.log') - sfiles = glob(ptt.join(boss_spectro_redux, run2d, field,'epoch','coadd',mjd,'spSpec-'+field+'-'+mjd+'-*.fits')) + sp1d_dir = ptt.join(fdir, 'epoch', run1d) + logfile = ptt.join(fdir, 'epoch', 'spSpec_reformat-'+field+'-'+mjd+'.log') + sfiles = glob(ptt.join(fdir,'epoch','coadd',mjd,'spSpec-'+field+'-'+mjd+'-*.fits')) else: - specfull_dir = ptt.join(boss_spectro_redux, run2d, 'spectra','full', field, mjd) - speclite_dir = ptt.join(boss_spectro_redux, run2d, 'spectra','lite', field, mjd) - specImg_dir = ptt.join(boss_spectro_redux, 'images', run2d, run1d, field+'-'+mjd) - sp1d_dir = ptt.join(boss_spectro_redux, run2d, field, run1d) - logfile = ptt.join(boss_spectro_redux, run2d, field, 'spSpec_reformat-'+field+'-'+mjd+'.log') - sfiles = glob(ptt.join(boss_spectro_redux, run2d, field,'coadd',mjd,'spSpec-'+field+'-'+mjd+'-*.fits')) + sp1d_dir = ptt.join(fdir, run1d) + logfile = ptt.join(fdir, 'spSpec_reformat-'+field+'-'+mjd+'.log') + sfiles = glob(ptt.join(fdir,'coadd',mjd,'spSpec-'+field+'-'+mjd+'-*.fits')) splog.open(logfile = logfile) splog.log('Log file '+logfile+' opened '+ time.ctime()) @@ -333,7 +322,7 @@ def spSpec_reformat(boss_spectro_redux, run2d, run1d, field, mjd, card = set_description(hdu.header.get(h), h, None) hdu.header.set(card[0],card[1],card[2]) if card[1] in units: - hdu.header.set(card[0].replace('TYPE','UNIT'), card[1],units[card[1]]) + hdu.header.set(card[0].replace('TYPE','UNIT'),units[card[1]],card[1]) for i, hdu in enumerate(spec): spec[i].add_checksum() @@ -496,6 +485,9 @@ def build_title(spAll, catid, allsky=False, field=None): m_i=mag_vec[3] title2=title2+r', mag$_{i,fib2}$='+"%.2f" % m_i + sn = spAll['SN_MEDIAN_ALL'] + title2=title2+r', S/N='+"%.2f"%sn + ptitle = ptitle + title2+'\n' if spAll['ZWARNING'] > 0: @@ -564,7 +556,7 @@ def SDSS_specplot(basedir, Coadd_Table, spAll, catalogID, files = Table(), xra=[ axs.fill_between(rebin(wave,2), rebin(sflux-yerr_l,2), rebin(sflux+yerr_u,2), color='k', alpha=.2, zorder = 1, ec=None, linewidth=0., step='mid') axs.fill_between(wave, sflux-yerr_l,sflux+yerr_u, color='k', alpha=.2, zorder = 1, ec=None, linewidth=0.) - alines = {4300.:"G",5895.:"Na D",5175.:"Mg",8498.:"CaII",8542.:"",8662.:"",3968.:" K",3938.:"H "} + alines = {4300.:"G",5895.:"Na D",5175.:"Mg",8498.:"CaII",8542.:"",8662.:"",3968.:" H",3938.:"K "} elines= {3727.:'OII', 3869.7867:'NeIII', 4105.8884: r'H$\mathbf{\delta}$', 4341.6803: r'H$\mathbf{\gamma}$', 4364.3782:'OIII', 4862.6778: r'H$\mathbf{\beta}$', @@ -685,25 +677,3 @@ def SDSS_specplot(basedir, Coadd_Table, spAll, catalogID, files = Table(), xra=[ return(files) -if __name__ == '__main__' : - """ - build spec files - """ - parser = argparse.ArgumentParser( - prog=ptt.basename(sys.argv[0]), - description='Build Spec Files') - parser.add_argument('--field', '-f', type=str, help='Run for a single Field', required=True) - parser.add_argument('--mjd', '-m', type=str, help='Run for a single MJD', required=True) - parser.add_argument('--topdir', type=str, help='Optional override value for the environment variable $BOSS_SPECTRO_REDUX', default = getenv('BOSS_SPECTRO_REDUX')) - parser.add_argument('--run2d', type=str, help='Optional override value for the enviro variable $RUN2D', default=getenv('RUN2D')) - parser.add_argument('--run1d', type=str, help='Optional override value for the enviro variable $RUN2D', default=getenv('RUN1D')) - parser.add_argument('--plot', '-p', action='store_true', help='Create spec plots') - parser.add_argument('--epoch', '-e', action='store_true', help='Run for epoch Coadds') - parser.add_argument('--lsdr10', action='store_true', help='Include Legacy Survey DR10 links on HTML') - parser.add_argument('--allsky', action='store_true', help='Reformat for Allsky Custom Coadd') - - args = parser.parse_args() - spSpec_reformat(args.topdir, args.run2d, args.run1d, args.field, args.mjd, - plot=args.plot, epoch=args.epoch, lsdr10=args.lsdr10, allsky=args.allsky) - - diff --git a/python/boss_drp/post/update_flags.py b/python/boss_drp/post/update_flags.py new file mode 100644 index 000000000..91975d5ec --- /dev/null +++ b/python/boss_drp/post/update_flags.py @@ -0,0 +1,126 @@ +#!/usr/bin/env python3 +from boss_drp.prep.readfibermaps import get_targetflags +from boss_drp.utils import (load_env, Splog) + +splog = Splog() + +try: + from sdssdb.peewee.sdss5db.targetdb import database + test = database.set_profile(load_env('DATABASE_PROFILE', default='pipelines')) + from sdssdb.peewee.sdss5db.targetdb import CartonToTarget, Carton, Version, Mapper, Target + nodb=False +except: + if load_env('DATABASE_PROFILE', default='pipelines').lower() in ['pipelines','operations']: + splog.log('ERROR: No SDSSDB access') + exit() + else: + splog.log('ERROR: No SDSSDB access') + nodb= True + +import argparse +from astropy.table import Table, Column, join +from astropy.io import fits +from os import getenv, remove +import os.path as ptt +from glob import glob +import numpy as np +import time +import shutil + + + + +def get_Targeting_file(run2d, boss_spectro_redux=getenv('BOSS_SPECTRO_REDUX')): + return(ptt.join(boss_spectro_redux, run2d, 'summary','daily', f'spTargeting-{run2d}.fits.gz')) + + +def update_Targeting_flags(run2d, boss_spectro_redux, schema = None, clobber=False, + nobackup=False,nrows=None, spall_tab=None, idcol='CATALOGID', + legacy=False): + if nodb: + exit() + spall_file = ptt.join(boss_spectro_redux, run2d, 'summary','daily', f'spAll-lite-{run2d}.fits.gz') + Targeting_file = get_Targeting_file(run2d, boss_spectro_redux=boss_spectro_redux) + if not ptt.exists(Targeting_file): + clobber = True + if clobber: + splog.info('Determining Updated Flags') + spall = fits.getdata(spall_file, 1) + sdssids = np.unique(spall['SDSS_ID'].data) + sdssids = np.setdiff1d(sdssids,np.array([-999,0])) + search_table = Table([sdssids], names = ['SDSS_ID']) + search_table, _junk= get_targetflags(search_table, None) + for col in ['SDSS5_TARGET_FLAGS','SDSSC2BV']: + search_table[col].fill_value = 0 + #search_table[col][search_table[col].data.astype(object) == ''] = 0 + + try: + data = search_table[col].data.filled() + except: + data = search_table[col].data + search_table[col] = data.astype('uint8') + search_table.write(get_Targeting_file(run2d, boss_spectro_redux), overwrite=True) + else: + if ptt.exists(Targeting_file): + splog.info('Reading: '+Targeting_file) + search_table = Table.read(Targeting_file) + else: + raise Exception(Targeting_file+' is missing') + + run2d_dir = ptt.join(boss_spectro_redux, run2d, 'summary') + files = ['spAll-lite-{run2d}{schema}.fits.gz','spAll-{run2d}{schema}.fits.gz'] + + epochs = ['daily','epoch'] + if schema is not None: + epochs.extend(schema) + for epoch in epochs: + if schema is not None: + sc = '' if epoch in ['daily'] else '-'+epoch + else: + sc = '' if epoch in ['daily'] else '-'+epoch + for f in files: + ff = ptt.join(run2d_dir,epoch,f.format(run2d=run2d, schema = sc)) + + if ptt.exists(ff): + if not nobackup: + if ptt.exists(ff+'.bak'): + splog.info(f'Removing {ptt.basename(ff)}.bak') + remove(ff+'.bak') + try: + splog.info(f'Saving a backup of {ff} to {ff}.bak') + shutil.copy(ff,ff+'.bak') + except OSError as exc: + raise OSError(f"Failed to save backup to destination {ff}") from exc + with fits.open(ff, mode='update', lazy_load_hdus=True, save_backup=False) as hdul: + splog.info(f'Updating {ff}') + nf = np.where(hdul[1].data['SDSS_ID'] != -999)[0] + idx = np.searchsorted(search_table['SDSS_ID'],hdul[1].data['SDSS_ID'][nf]) + + spall_shape = hdul[1].data['SDSS5_TARGET_FLAGS'].shape[1] + update_shape = search_table['SDSS5_TARGET_FLAGS'].shape[1] + if spall_shape < update_shape: + splog.info(f'Padding SDSS5_TARGET_FLAGS in {ptt.basename(ff)}') + coldat = hdul[1].data['SDSS5_TARGET_FLAGS'] + pad = update_shape - spall_shape + new_col = fits.Column(name='SDSS5_TARGET_FLAGS', format=f'{update_shape}B', + array=np.pad(coldat,[(0,0),(0,pad)], mode = 'constant', constant_values= 0)) + new_col = fits.ColDefs([new_col]) + old_cols = hdul[1].columns + colidx = np.where(np.asarray(old_cols.names) == 'SDSS5_TARGET_FLAGS')[0][0] + + hdul[1] = fits.BinTableHDU.from_columns(old_cols[0:colidx-1]+new_col+old_cols[colidx+1:], + header=hdul[1].header) + elif spall_shape > update_shape: + pad = spall_shape - update_shape + coldat = search_table['SDSS5_TARGET_FLAGS'].data + + search_table['SDSS5_TARGET_FLAGS'] = np.pad(coldat, [(0,0),(0,pad)], + mode = 'constant', + constant_values= 0) + + + search_table_j = join(Table([hdul[1].data['SDSS_ID'], range(len(hdul[1].data))], names=['SDSS_ID','order']), search_table, keys='SDSS_ID',join_type='left') + search_table_j.sort('order') + hdul[1].data['SDSS5_TARGET_FLAGS'][nf] = search_table_j['SDSS5_TARGET_FLAGS'][nf] + hdul[0].header['SDSSC2BV'] = search_table_j['SDSSC2BV'][0] + diff --git a/python/boss_drp/prep/GetconfSummary.py b/python/boss_drp/prep/GetconfSummary.py new file mode 100644 index 000000000..73c2e703e --- /dev/null +++ b/python/boss_drp/prep/GetconfSummary.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 +from sdss_access.path import Path +from sdss_access import Access + +from os import getenv +from astropy.table import Table +from pydl.pydlutils.yanny import read_table_yanny +import os.path as ptt +from glob import glob +import numpy as np + +class MissingFile(Exception): + """Exception raise for missing plPlugMapM or confSummary file""" + def __init__(self, file, filetype=None, message = None): + if filetype is None: + filetype = 'ConfSummary/ConfSummaryF' + if message is None: + message = f"{filetype} {ptt.basename(file)} is missing" + self.message = message + self.file = file + super().__init__(message) + + + +def find_plPlugMapM(mjd, plate, mapname, splog=None, release='sdsswork'): + if getenv('SPECLOG_DIR') is None: + if splog is None: + print('ERROR: SPECLOG_DIR must be defined') + else: + splog.info('ERROR: SPECLOG_DIR must be defined') + raise(MissingFile(None, message='SPECLOG_DIR must be defined as Environment variable')) + exit() + + fibermap_file = None + fibermap_file_list = [] + path = Path(release=release, preserve_envvars=True) + path_ops = {'mjd': mjd, 'plateid': int(plate)} + try: + fibermap_file = path.full('plPlugMapM', **path_ops) + if path.exists('plPlugMapM', **path_ops): + #local plPlugMapM file exists + fibermap_file_list = [fibermap_file] + except: + fibermap_file = ptt.join(getenv('SPECLOG_DIR'),str(mjd),'plPlugMapM-'+mapname+'.par') + fibermap_file_list = glob(fibermap_file) + + if len(fibermap_file_list) == 0: + if splog is None: + print('plPlugMapM file '+fibermap_file+' does not exists') + else: + splog.log('plPlugMapM file '+fibermap_file+' does not exists') + raise(MissingFile(fibermap_file, filetype='plPlugMapM')) + fibermap_file_list = [None] + return(fibermap_file_list[0]) + + +def find_confSummary(confid, obs=None, no_remote=False, splog=None, release='sdsswork'): + if confid is None: + confid = 0 + path = Path(release=release, preserve_envvars=True) + if getenv('SDSSCORE_DIR') is None: + if splog is None: + print('ERROR: SDSSCORE_DIR must be defined') + else: + splog.info('ERROR: SDSSCORE_DIR must be defined') + raise(MissingFile(None, message='SDSSCORE_DIR must be defined as Environment variable')) + exit() + if obs is None: + obs = getenv('OBSERVATORY').lower() + path_ops = {'configid': confid, 'obs': obs.lower()} + fibermap_file = None + + if path.exists('confSummaryF_test', **path_ops): + #local confSummaryF file exists + fibermap_file = path.full('confSummaryF_test', **path_ops) + elif path.exists('confSummary_test', **path_ops): + #Local confSummary file exists + fibermap_file = path.full('confSummary_test', **path_ops) + else: + #No confSummary file exists + fibermap_file = path.full('confSummary', **path_ops) + if splog is None: + print('confSummary file '+fibermap_file+' does not exists') + else: + splog.info('confSummary file '+fibermap_file+' does not exists') + if int(confid) not in [0, -999]: + raise(MissingFile(fibermap_file)) + fibermap_file = None + return fibermap_file + + + +def get_confSummary(confid, obs=None, no_remote=False, splog=None, + release='sdsswork', sort=False, filter=False): + fibermap_file = find_confSummary(confid, obs=obs, no_remote=no_remote, + splog=splog, release=release) + + if fibermap_file is None: + return(Table()) + confSummary=read_table_yanny(fibermap_file,'FIBERMAP') + if filter is True: + confSummary=confSummary[np.where(confSummary['fiberType'] == 'BOSS')] + if sort is True: + confSummary.sort('fiberId') + + return(confSummary) diff --git a/python/boss_drp/prep/__init__.py b/python/boss_drp/prep/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/bin/manage_coadd_Schema.py b/python/boss_drp/prep/manage_coadd_Schema.py similarity index 74% rename from bin/manage_coadd_Schema.py rename to python/boss_drp/prep/manage_coadd_Schema.py index d5acf7143..26184aa19 100755 --- a/bin/manage_coadd_Schema.py +++ b/python/boss_drp/prep/manage_coadd_Schema.py @@ -1,17 +1,17 @@ #!/usr/bin/env python3 +from boss_drp.utils import Splog import numpy as np from os import getenv, makedirs import os.path as ptt import sys from astropy.table import Table, vstack +import astropy.time import argparse -from splog import Splog from collections import OrderedDict from pydl.pydlutils import yanny from subprocess import getoutput from datetime import date -import astropy.time import pandas as pd from time import ctime @@ -134,7 +134,7 @@ def manage_coadd_Schema(Name, topdir=None, run2d=None, DR=False, CARTON=None, CA if run2d is None: run2d = getenv('RUN2D') if coaddfile is None: - coaddfile = ptt.join(topdir,run2d,'SDSSV_BHM_COADDS.par') + coaddfile = ptt.join(topdir,run2d,'fields','SDSSV_BHM_COADDS.par') if show is True: if ptt.exists(coaddfile): @@ -174,7 +174,7 @@ def manage_coadd_Schema(Name, topdir=None, run2d=None, DR=False, CARTON=None, CA '# Schema Description for custom BOSS Coadds':'', '# ':'', '# Last Updated '+ctime():'', - '# Written by manage_coadd_Schema.py':'', + '# Written by manage_coadd_Schema':'', '# ': '', '# ': 'Legacy is a currently unutilized, but there for future versions to include tags from SDSS-IV,-III etc in addition to current tag', '# ': '', @@ -185,35 +185,3 @@ def manage_coadd_Schema(Name, topdir=None, run2d=None, DR=False, CARTON=None, CA COADDS.convert_unicode_to_bytestring() yanny.write_table_yanny(COADDS, caf, tablename = 'SCHEMA', overwrite=True) -if __name__ == '__main__': - - parser = argparse.ArgumentParser( - prog = ptt.basename(sys.argv[0]), - description = 'Manage Custom Coadds') - - parser.add_argument('--coaddfile', '-f', default = None, help = 'File to store Coadding Schema (Default: {topdir}/{run2d}/SDSSV_BHM_COADDS.par') - parser.add_argument('--topdir', help = 'Override value for the environment variable $BOSS_SPECTRO_REDUX.', required=False) - parser.add_argument('--run2d', help = 'Override value for the environment variable $RUN2D', required=False) - parser.add_argument('--name', help = 'Name of Custom Coadd') - parser.add_argument('--DR', action = 'store_true', help = 'DR/IPL Coadding') - parser.add_argument('--rerun1d', '-r', action = 'store_true', help = 'Provides flag for coadd to be rerun though 1D analysis') - parser.add_argument('--active', '-a', action = 'store_true', help = 'Activate (or deactivate) a Coadding Schema') - parser.add_argument('--carton', '-c', nargs='*', help = "list of cartons") - parser.add_argument('--SDSSIDS', '-i', nargs='*', help = "list of SDSS_IDS (or CatalogIDs if use_catid is set)") - parser.add_argument('--program', '-p', nargs='*', help = "list of programs") - parser.add_argument('--legacy', '-l', nargs='*', help = "list of Legacy Tags to include") - parser.add_argument('--use_catid', '-u', action = 'store_true', help = "Use CatalogIDs rather then SDSS_IDs") - parser.add_argument('--use_firstcarton', action = 'store_true', help = "Use Firstcarton only for carton match (dont look at db)") - parser.add_argument('--cadence', '-t', help = 'Number of days between coadd epochs', default = 0.0) - parser.add_argument('--show', '-s', help = 'Show Configurations',action = 'store_true') - parser.add_argument('--mjd', help = 'Use data from these MJDs.', nargs='*') - args = parser.parse_args() - - - - manage_coadd_Schema(args.name, topdir=args.topdir, run2d=args.run2d, DR=args.DR, CARTON=args.carton, CATID=args.SDSSIDS, - PROGRAM=args.program, RERUN1D=args.rerun1d, CADENCE=args.cadence, MJD=args.mjd, ACTIVE=args.active, - legacy = args.legacy, coaddfile=args.coaddfile, show=args.show, use_catid=args.use_catid, - use_firstcarton=args.use_firstcarton) - - diff --git a/bin/readfibermaps.py b/python/boss_drp/prep/readfibermaps.py similarity index 85% rename from bin/readfibermaps.py rename to python/boss_drp/prep/readfibermaps.py index 47711c012..e1c29b1bf 100755 --- a/bin/readfibermaps.py +++ b/python/boss_drp/prep/readfibermaps.py @@ -1,67 +1,68 @@ #!/usr/bin/env python3 - -from splog import Splog -import logging -splog = Splog() - +from boss_drp import idlspec2d_dir +from boss_drp.field import field_to_string +from boss_drp.utils import match as wwhere +from boss_drp.utils import (merge_dm, load_env, Splog) +try: + from boss_drp.prep.GetconfSummary import find_confSummary, find_plPlugMapM +except: + pass + try: from sdss_access.path import Path from sdss_access import Access - from GetconfSummary import find_confSummary, find_plPlugMapM - except: pass from astropy.io import fits from astropy.table import Table, vstack, join, Column, MaskedColumn, unique from astropy.coordinates import SkyCoord, Distance +from astropy.time import Time import astropy.units as u - -from pydl.pydlutils.yanny import read_table_yanny, yanny -from pydl.pydlutils import sdss -from pydl import uniq - from glob import glob import os.path as ptt -from os import getenv import os +import sys import argparse import time import numpy as np import warnings import platform -from fieldlist import wwhere -from merge_dm import merge_dm -from load_module import load_env -import sys from time import sleep -from tqdm import tqdm +from pydl.pydlutils.yanny import read_table_yanny, yanny +from pydl.pydlutils import sdss +from pydl import uniq +import logging + + +splog = Splog() + if 'sdss5-bhm' not in platform.node(): try: from dustmaps.bayestar import BayestarQuery from dustmaps.sfd import SFDQuery #from dustmaps.edenhofer2023 import Edenofer2023Query as E3D2023Query - from simple_dust_2023 import simple_dust_2023 + from boss_drp.prep.simple_dust_2023 import simple_dust_2023 except: splog.info('ERROR: dustmaps is not installed') try: from sdssdb.peewee.sdss5db.targetdb import database import sdssdb - test = database.set_profile(load_env('DATABASE_PROFILE', default='operations')) + test = database.set_profile(load_env('DATABASE_PROFILE', default='pipelines')) if not test: splog.info('WARNING: No SDSSDB access - Defaulting to no_db') - no_db = True + no_db_poss = True else: SDSSDBVersion=sdssdb.__version__ except: splog.info('WARNING: No SDSSDB access - Defaulting to no_db') - no_db = True + no_db_poss = True else: - no_db = False -else: - no_db=False + no_db_poss = False +else: + no_db_poss=False @@ -75,14 +76,11 @@ def __exit__(self, exc_type, exc_val, exc_tb): sys.stdout = self._original_stdout -def field_to_string(plateid): - return(str(plateid).zfill(6)) - - pratio = np.asarray([2.085, 2.085, 2.116, 2.134, 2.135]) +chunkdata = None try: - bitmask = sdss.set_maskbits(maskbits_file=ptt.join(getenv('IDLUTILS_DIR'),"data/sdss/sdssMaskbits.par")) # Always call set_maskbits to set the latest version + bitmask = sdss.set_maskbits(maskbits_file=ptt.join(os.getenv('IDLUTILS_DIR'),"data/sdss/sdssMaskbits.par")) # Always call set_maskbits to set the latest version except: pass @@ -90,13 +88,18 @@ def field_to_string(plateid): def readfibermaps(spplan2d=None, topdir=None, clobber=False, SOS=False, no_db=False, fast=False, datamodel = None, SOS_opts=None, release = 'sdsswork', remote = False, logger=None, dr19 = False): + args = {'spplan2d':spplan2d, 'topdir':topdir, 'clobber':clobber, + 'SOS':SOS, 'no_db':no_db, 'fast':fast, 'datamodel': datamodel, + 'SOS_opts':SOS_opts, 'release': release, 'remote': remote, + 'logger':remote, 'dr19': dr19} global splog - + if no_db_poss: + no_db = True no_remote = not remote legacy=plates=fps=False if SOS is False: if datamodel is None: - datamodel = ptt.join(getenv('IDLSPEC2D_DIR'), 'datamodel', 'spfibermap_dm.par') + datamodel = ptt.join(idlspec2d_dir, 'datamodel', 'spfibermap_dm.par') if not ptt.exists(spplan2d): splog.info('spplan2d file '+spplan2d+' does not exists') exit() @@ -121,7 +124,7 @@ def readfibermaps(spplan2d=None, topdir=None, clobber=False, SOS=False, no_db=Fa else: if not ptt.exists(topdir): os.makedirs(topdir, exist_ok=True) if datamodel is None: - datamodel = ptt.join(getenv('IDLSPEC2D_DIR'), 'datamodel', 'spfibermap_SOS_dm.par') + datamodel = ptt.join(idlspec2d_dir, 'datamodel', 'spfibermap_SOS_dm.par') fibermap_files = [SOS_opts['confSummary']] @@ -134,7 +137,7 @@ def readfibermaps(spplan2d=None, topdir=None, clobber=False, SOS=False, no_db=Fa return - run2d = getenv('RUN2D') + run2d = os.getenv('RUN2D') obs = fibermap.meta['observatory'] field = fibermap.meta['field_id'] if int(field) == -999: @@ -147,13 +150,20 @@ def readfibermaps(spplan2d=None, topdir=None, clobber=False, SOS=False, no_db=Fa mjd = SOS_opts['mjd'] spplan2d = 'SOS' ccd = SOS_opts['ccd'] + plan = Table(names = ('confid', 'fieldid', 'mjd', 'mapname', 'exptime'), dtype=(object, object, int, object, object )) - plan.add_row( (confid, field, int(mjd), confid, None)) + + spFibermap = 'spfibermap-'+field_to_string(field)+'-'+str(mjd)+'-'+ccd+'.fits' + if ptt.exists(spFibermap): + meta = fits.getdata(spFibermap,0) + for row in meta: + plan.add_row((row['CONFIGURATION_ID'], row['MJD'], int(row['MJD']), row['CONFIGURATION_ID'], None)) + meta = None + plan.add_row( (confid, field, int(mjd), confid, None)) if topdir is None: topdir = ptt.join('/data', 'boss', 'sos', str(mjd)) - spFibermap = 'spfibermap-'+field_to_string(field)+'-'+str(mjd)+'-'+ccd+'.fits' if not SOS: @@ -181,6 +191,7 @@ def readfibermaps(spplan2d=None, topdir=None, clobber=False, SOS=False, no_db=Fa clobber = False except: clobber = True + if not clobber: if (ptt.exists(ptt.join(topdir, spFibermap))): try: @@ -246,15 +257,14 @@ def readfibermaps(spplan2d=None, topdir=None, clobber=False, SOS=False, no_db=Fa hdul = [] with fits.open(ptt.join(topdir, spFibermap)) as hdul_in: #hdul=hdul_in.copy() - for hdu in hdul: + for hdu in hdul_in: hdul.append(hdu.copy()) hdul = fits.HDUList(hdul) except: os.remove(ptt.join(topdir, spFibermap)) - hdu = merge_dm(ext = 'Primary', hdr = {'FIELD':field,'MJD':mjd, 'OBS':obs,'SPPLAN2D':ptt.basename(spplan2d), - 'FPS':fps, 'Plate':plates,'Legacy':legacy }, dm = datamodel, splog=splog) - - hdul = fits.HDUList([hdu]) + args['clobber'] = True + splog.info(f'Failure opening {ptt.join(topdir, spFibermap)}... Clobbering and rerunning') + readfibermaps(**args) new_row = {} for key in hdr.keys(): @@ -333,6 +343,7 @@ def buildfibermap(fibermap_file, run2d, obs, field, mjd, exptime=None, indir=Non exptime=exptime, plates=plates, legacy=legacy, no_db=no_db, indir=indir, release=release, no_remote=no_remote, dr19=dr19) fibermap['fiber_offset'] = 0 + elif fps: fibermap = read_table_yanny(fibermap_file, 'FIBERMAP') fibermap.convert_bytestring_to_unicode() @@ -344,12 +355,15 @@ def buildfibermap(fibermap_file, run2d, obs, field, mjd, exptime=None, indir=Non fibermap[col] = fibermap[col].astype(object) elif (fibermap[col].dtype in [float, np.dtype('float32')]): dcol[dcol.data == -999] = np.NaN + fibermap = calcWokOffset(fibermap, fibermap_file) fibermap = readFPSconfSummary(fibermap, mjd, sos=SOS, no_db = no_db, fast=fast, release=release, no_remote=no_remote, dr19=dr19) + hdr = fibermap.meta fibermap = flag_offset_fibers(fibermap) fibermap['SCI_EXPTIME'] = np.NaN hdr['CARTRIDGEID'] = 'FPS-S' if hdr['observatory'] == 'LCO' else 'FPS-N' - + if 'TOO' not in fibermap.colnames and 'too' not in fibermap.colnames: + fibermap['TOO'] = 0 fibermap.meta = {} return(fibermap, hdr) @@ -438,9 +452,9 @@ def psf2Fiber_mag(fibermap, plates=False, legacy=False): magd[:,col] = mf macol = magd - fibermap['CatDB_mag'] = fibermap['mag'].data - fibermap['fiber2mag'] = fibermap['mag'].data - fibermap['PSFmag'] = fibermap['mag'].data + fibermap['CatDB_mag'] = fibermap['mag'].data.copy() + fibermap['fiber2mag'] = fibermap['mag'].data.copy() + fibermap['PSFmag'] = fibermap['mag'].data.copy() optical_prov = fibermap['optical_prov'].data.astype(str) @@ -450,14 +464,14 @@ def psf2Fiber_mag(fibermap, plates=False, legacy=False): imatch = np.where(np.isin(optical_prov, [x for x in list(set(optical_prov)) if 'psf' in x.lower()]))[0] if len(imatch) > 0: - mag = fibermap['mag'].data + mag = fibermap['mag'].data.copy() mag = mag+2.5*np.log10(pratio) magcol[imatch] = mag[imatch] fiber2mag[imatch] = mag[imatch] imatch = np.where(np.isin(optical_prov, [x for x in list(set(optical_prov)) if 'psf' not in x.lower()]))[0] if len(imatch) > 0: - mag = fibermap['mag'].data + mag = fibermap['mag'].data.copy() mag = mag-2.5*np.log10(pratio) PSFmag[imatch] = mag[imatch] @@ -563,6 +577,76 @@ def NoCatid(fibermap, plates = False, legacy = False): fibermap[iunassigned_boss]=fibermap_boss return(fibermap) +def calcOffset(fibermap, obs_epoch): + splog.info('Calculating Fiber Offsets in Sky Frame') + try: + catCord = SkyCoord(ra=np.ma.filled(fibermap['racat'])*u.deg, + dec=np.ma.filled(fibermap['bb'].data)*u.deg, + pm_ra_cosdec=np.ma.filled(fibermap['pmra'].data)*u.mas/u.yr, + pm_dec = np.ma.filled(fibermap['pmdec'].data)*u.mas/u.yr, + obstime=Time(np.nan_to_num(fibermap['coord_epoch'].data, nan=2016.0).astype(float), format='jyear')) + obsCord = SkyCoord(ra=np.ma.filled(fibermap['racat'])*u.deg, + dec=np.ma.filled(fibermap['bb'].data)*u.deg, + obstime=Time(float(obs_epoch), format='jd')) + + total_offset = catCord.separation(obsCord).arcsec + fibermap.add_column(total_offset, name = 'MeasuredOffset') + except: + splog.info('Failure Calculating Fiber Offsets... Assuming fibers on Target') + return(fibermap) + +def calcWokOffset(fibermap, fibermap_file): + splog.info('Calculating Fiber Offsets in Wok Frame') + if 'confSummaryF' in fibermap_file: + fibermap_pre = read_table_yanny(fibermap_file.replace('confSummaryF','confSummary'), 'FIBERMAP') + fibermap_pre.meta = {} + fibermap_pre.convert_bytestring_to_unicode() + try: + fibermap_pre = fibermap_pre[['positionerId', 'fiberType','xwok','ywok','zwok']] + except: + fibermap_pre['xwok'] = np.NaN + fibermap_pre['ywok'] = np.NaN + fibermap_pre['zwok'] = np.NaN + fibermap_pre = fibermap_pre[['positionerId', 'fiberType','xwok','ywok','zwok']] + fibermap['xwok'] = np.NaN + fibermap['ywok'] = np.NaN + fibermap['zwok'] = np.NaN + + for col in fibermap_pre.colnames: + dcol = fibermap_pre[col] + if not ((fibermap_pre[col].dtype in [float, int, np.dtype('int16'), np.dtype('float32'), bool])): + fibermap_pre[col] = fibermap_pre[col].astype(object) + elif (fibermap_pre[col].dtype in [float, np.dtype('float32')]): + dcol[dcol.data == -999] = np.NaN + + + fibermap = join(fibermap, fibermap_pre, keys=['positionerId', 'fiberType'], join_type='left', table_names=['', '_pre']) + + + for col in ['xwok','ywok','zwok']: + fibermap.rename_column(col+'_', col) + fibermap.rename_column(col+'__pre', col+'_pre') + + try: + if fibermap.masked: + if np.any(joined_table[col].mask): + mask = fibermap[col].mask + fibermap[col][mask] = fibermap[col][mask] + except: + pass + + xwok_pre = fibermap['xwok'].data + ywok_pre = fibermap['ywok'].data + fibermap['WokOffset'] = np.sqrt((fibermap['xwok'] - fibermap['xwok_pre'])**2 + (fibermap['ywok'] - fibermap['ywok_pre'])**2) + + fibermap_pre= None + + else: + fibermap['xwok_pre']=fibermap['xwok'] + fibermap['ywok_pre']=fibermap['ywok'] + fibermap['zwok_pre']=fibermap['zwok'] + fibermap.add_column(0, name = 'WokOffset') + return(fibermap) def readFPSconfSummary(fibermap, mjd, sos=False, no_db = False, fibermask = None, fast=False, release='sdsswork', no_remote=False, dr19=False): @@ -620,12 +704,13 @@ def readFPSconfSummary(fibermap, mjd, sos=False, no_db = False, fibermask = None fieldid = fibermap.meta['field_id'] ra_field = float(fibermap.meta['raCen']) dec_field = float(fibermap.meta['decCen']) - + obs_epoch = float(fibermap.meta['epoch']) fibermap=calibrobj(fibermap, fieldid, ra_field, dec_field, fps=True, lco=lco, design_id=fibermap.meta['design_id'], fast=fast, RS_plan=fibermap.meta['robostrategy_run'], no_db=no_db, release=release, no_remote=no_remote, dr19=dr19) + fibermap = calcOffset(fibermap, obs_epoch) else: fibermap=mags2Flux(fibermap, correction) objtype = fibermap['objtype'] @@ -640,7 +725,6 @@ def readFPSconfSummary(fibermap, mjd, sos=False, no_db = False, fibermask = None fibermap = get_survey(fibermap) fibermap = fps_fibermapsort(fibermap) - for col in ['carton', 'program_db', 'll', 'bb', 'rr', 'stdflag']: if col in fibermap.colnames: fibermap.remove_column(col) @@ -651,7 +735,7 @@ def readFPSconfSummary(fibermap, mjd, sos=False, no_db = False, fibermask = None def calibrobj(fibermap, fieldid, rafield, decfield, design_id=None, plates=False, legacy=False, fps=False, sos=False, lco=False, RS_plan=None, no_db=False, mjd=None, indir=None, fast =False, release='sdsswork', - no_remote=False, dr19=False): + no_remote=False, dr19=False, designmode=None): # The correction vector is here --- adjust this as necessary. # These are the same numbers as in SDSSFLUX2AB in the photoop product. @@ -668,7 +752,7 @@ def calibrobj(fibermap, fieldid, rafield, decfield, design_id=None, else: fibermap.add_column(fibermap['FIRSTCARTON'].data, name = 'CARTONNAME') fibermap= get_supplements(fibermap, designID=design_id, rs_plan = RS_plan, - fps= fps, fast=fast, release=release, + fps= fps, fast=fast, release=release, designmode=designmode, no_remote=no_remote, db = (not no_db), dr19=dr19) fibermap.add_column([np.zeros(5,dtype=float)], name = 'calibflux') fibermap.add_column([np.zeros(5,dtype=float)], name = 'calibflux_ivar') @@ -718,10 +802,7 @@ def calibrobj(fibermap, fieldid, rafield, decfield, design_id=None, if fps: fibermap = psf2Fiber_mag(fibermap,plates=False, legacy=False) fibermap = mags2Flux(fibermap, correction) - - - - + return(fibermap) @@ -740,7 +821,7 @@ def plug2tsobj(plateid, ra=None, dec=None, mjd=None, indir=None, dmin=2.0, platestr = field_to_string(plateid) if indir is None: - indir = ptt.join(getenv('BOSS_SPECTRO_REDUX'),getenv('RUN2D'),platestr) + indir = ptt.join(os.getenv('BOSS_SPECTRO_REDUX'),os.getenv('RUN2D'),platestr) if ra is not None: if len(ra) != len(dec): @@ -816,9 +897,13 @@ def plug2tsobj(plateid, ra=None, dec=None, mjd=None, indir=None, dmin=2.0, return(tsobj) -def fps_fibermapsort(fibermap): +def fps_fibermapsort(fibermap, add =True): splog.info('Sorting FPS Fibermap') - fibermap.add_column(fibermap['fiberId'].data, name = 'ConfFiberid') + if add: + fibermap.add_column(fibermap['fiberId'].data, name = 'ConfFiberid') + else: + fibermap.add_column(fibermap['fiberId'].data, name = 'ConfFiberid_1') + fibermap.sort(['fiberId']) fid = fibermap['fiberId'] @@ -875,6 +960,7 @@ def plate_fibermapsort(fibermap, fibermask=None, plates = False): fibermask[iplugged] = fibermask[iplugged] - sdss.sdss_flagval('SPPIXMASK', 'NOPLUG') fibermap.add_column(Column(fibermask, name ='fibermask')) fibermap.add_column(Column(False, name = 'fiber_offset')) + fibermap.add_column(Column(0, name = 'MeasuredOffset')) fibermap.add_column(Column(0.0, name = 'delta_ra')) fibermap.add_column(Column(0.0, name = 'delta_dec')) @@ -956,7 +1042,7 @@ def readPlateplugMap(plugfile, fibermap, mjd, SOS=False, #---------- # Append some information from the plateHoles file - platelist_dir = getenv('PLATELIST_DIR') + platelist_dir = os.getenv('PLATELIST_DIR') if platelist_dir is None: splog.info('ERROR: PLATELIST_DIR environmental variable must be set') exit() @@ -989,7 +1075,7 @@ def readPlateplugMap(plugfile, fibermap, mjd, SOS=False, 'RUN','RERUN','CAMCOL','FIELD','ID', 'THING_ID_TARGETING'] fibermap.add_columns([0.0,0.0,0.0], names = ['Gaia_G_mag','BP_mag','RP_mag']) - fibermap['Gaia_G_mag'] = plateholes['gaia_bp'] + fibermap['Gaia_G_mag'] = plateholes['gaia_g'] fibermap['BP_mag'] = plateholes['gaia_bp'] fibermap['RP_mag'] = plateholes['gaia_rp'] else: @@ -1012,7 +1098,7 @@ def readPlateplugMap(plugfile, fibermap, mjd, SOS=False, ZOFFSET[ii] = 0 #- Check opfiles/washers.par for overrides to ZOFFSET - washers_file = ptt.join(getenv('IDLSPEC2D_DIR'), 'opfiles','washers.par') + washers_file = ptt.join(idlspec2d_dir, 'opfiles','washers.par') washers = read_table_yanny(washers_file,'WASHERSTATUS') # extract fibermap file name to match header keyword NAME @@ -1054,7 +1140,7 @@ def readPlateplugMap(plugfile, fibermap, mjd, SOS=False, if plates: #Check if plate is in list of plates to be corrected - catfile_dir = ptt.join(getenv('IDLSPEC2D_DIR'),'catfiles') + catfile_dir = ptt.join(idlspec2d_dir,'catfiles') if not ptt.exists(catfile_dir): splog.info('WARNING: No Catalogid Correction Files found in '+catfile_dir) else: @@ -1137,8 +1223,50 @@ def readPlateplugMap(plugfile, fibermap, mjd, SOS=False, if 'bhm_spiders_clusters-efeds' in row['FIRSTCARTON']: mag.data[i,1:] = mag.data[i,1:] - psffibercor fibermap.add_column(Column('Plates', name = 'cadence')) + + p2d = {'AQMES-Bonus':'dark_monit_plates', + 'AQMES-Medium':'dark_monit_plates', + 'AQMES-Wide':'dark_monit_plates', + 'eFEDS1':'dark_faint_plates', + 'eFEDS2':'dark_faint_plates', + 'eFEDS3':'dark_faint_plates', + 'MWM':'bright_time_plates', + 'MWM2':'bright_time_plates', + 'MWM2_sky':'bright_time_plates', + 'MWM3':'bright_time_plates', + 'MWM_30min':'bright_time_plates', + 'MWM_30min2':'bright_time_plates', + 'MWM_30min3':'bright_time_plates', + 'MWM_30min4':'bright_time_plates', + 'MWM3_sky':'bright_time_plates', + 'MWM4':'bright_time_plates', + 'OFFSET1':'eng_plates', + 'OFFSET2':'eng_plates', + 'RM':'dark_rm_plates', + 'RMv2':'dark_rm_plates', + 'RMv2-fewMWM':'dark_rm_plates'} + try: + designmode = p2d[programname] + except: + designmode = 'sdss5_plates' + + else: - programname = None + global chunkdata + if chunkdata is None: + chunkfile = ptt.join(getenv('PLATELIST_DIR'), 'platePlans.par') + try: + chunkdata = Table(yanny(chunkfile)['PLATEPLANS']) + except: + splog.info('Empty or missing platePlans.par file') + chunkdata = None + + if chunkdata is not None: + cinfo = chunkdata[np.where(chunkdata['plateid'] == int(plateid))[0]][0] + programname = cinfo['programname'] + designmode = 'dark_'+programname+'_plates' + else: + designmode = 'dark_??_plates' #---------- if not SOS: @@ -1146,8 +1274,10 @@ def readPlateplugMap(plugfile, fibermap, mjd, SOS=False, programname = fibermap.meta['programname'] ra_plate = float(fibermap.meta['raCen']) dec_plate = float(fibermap.meta['decCen']) - fibermap = calibrobj(fibermap, plateid, ra_plate, dec_plate, plates=plates, - legacy=legacy, no_db=no_db, mjd=mjd, indir=indir, fast=fast, + fibermap = calibrobj(fibermap, plateid, ra_plate, dec_plate, plates=plates, + legacy=legacy, no_db=no_db, mjd=mjd, indir=indir, + fast=fast, designmode=designmode, + RS_plan=fibermap.meta['platedesignversion'], release=release, no_remote=no_remote, dr19=dr19) for col in ['org_fiberid','org_catid', 'carton', 'program_db', @@ -1237,7 +1367,7 @@ def get_mags_astrom(search_table, db = True, fps=False, fast=False, release='sds if 'database' not in globals(): try: from sdssdb.peewee.sdss5db.targetdb import database - db = database.set_profile(load_env('DATABASE_PROFILE', default='operations')) + db = database.set_profile(load_env('DATABASE_PROFILE', default='pipelines')) except: db = False if not db: @@ -1245,7 +1375,14 @@ def get_mags_astrom(search_table, db = True, fps=False, fast=False, release='sds if db is True: splog.info('Getting Magnitudes, IDs, and Astrometry from SDSSDB') + if len(search_table[search_table['icatalogid']!= -999]) == 0: + return(search_table) + u_s_table = search_table[search_table['icatalogid']!= -999].group_by('icatalogid') + u_s_table = u_s_table[u_s_table.groups.indices[:-1]] catalogids = np.unique(search_table['icatalogid'].data).tolist() + a_catalogids = np.asarray(catalogids) + sdssids = np.unique(u_s_table['SDSS_ID'].data).tolist() + while True: try: catalogids.remove(0) @@ -1257,14 +1394,35 @@ def get_mags_astrom(search_table, db = True, fps=False, fast=False, release='sds from sdssdb.peewee.sdss5db.catalogdb import CatalogToTIC_v8 from sdssdb.peewee.sdss5db.catalogdb import TIC_v8, Gaia_DR2 - - tp = CatalogToTIC_v8.select(CatalogToTIC_v8.catalogid, CatalogToTIC_v8.best, Gaia_DR2.parallax,Gaia_DR2.pmra,Gaia_DR2.pmdec,Gaia_DR2.source_id)\ - .join(TIC_v8).join(Gaia_DR2, on=(TIC_v8.gaia == Gaia_DR2.source_id)).switch(CatalogToTIC_v8)\ - .where(CatalogToTIC_v8.catalogid.in_(catalogids)) + from sdssdb.peewee.sdss5db.catalogdb import Gaia_DR3 + from sdssdb.peewee.sdss5db.catalogdb import CatalogToGaia_DR3 as CatToGaia_DR3 + from sdssdb.peewee.sdss5db.catalogdb import SDSS_ID_flat + if fps is True: results = Table(names = ('icatalogid','gaia_id'), dtype=(int,int)) else: results = Table(names = ('icatalogid','parallax','pmra','pmdec','gaia_id'), dtype=(int,float,float,float,int)) + + tp = SDSS_ID_flat.select(CatToGaia_DR3.catalogid, SDSS_ID_flat.sdss_id, Gaia_DR3.parallax,Gaia_DR3.pmra,Gaia_DR3.pmdec,Gaia_DR3.source_id )\ + .join(CatToGaia_DR3, on=(SDSS_ID_flat.catalogid == CatToGaia_DR3.catalogid)).join(Gaia_DR3).switch(SDSS_ID_flat)\ + .where(SDSS_ID_flat.sdss_id.in_(sdssids)) + + for t in tp.dicts(): + for key in t.keys(): + if t[key] is None: + if key in ['parallax','pmra','pmdec']: + t[key] = np.NaN + elif key in ['source_id']: + t[key] = -999 + cid = u_s_table[u_s_table['SDSS_ID'] == t['sdss_id']]['icatalogid'][0] + if fps is True: + results.add_row((cid,int(t['source_id']))) + else: + results.add_row((cid,float(t['parallax']),float(t['pmra']),float(t['pmdec']),int(t['source_id']))) + tp = CatalogToTIC_v8.select(CatalogToTIC_v8.catalogid, CatalogToTIC_v8.best, Gaia_DR2.parallax,Gaia_DR2.pmra,Gaia_DR2.pmdec,Gaia_DR2.source_id)\ + .join(TIC_v8).join(Gaia_DR2, on=(TIC_v8.gaia == Gaia_DR2.source_id)).switch(CatalogToTIC_v8)\ + .where(CatalogToTIC_v8.catalogid.in_(catalogids)) + for t in tp.dicts(): if t['best'] is False: continue for key in t.keys(): @@ -1273,11 +1431,18 @@ def get_mags_astrom(search_table, db = True, fps=False, fast=False, release='sds t[key] = np.NaN elif key in ['source_id']: t[key] = -999 - + try: + t['catalogid'] + except: + t['catalogid'] = t['catalog'] + if t['catalogid'] in results['icatalogid'].data: + continue if fps is True: - results.add_row((t['catalog'],int(t['source_id']))) + results.add_row((t['catalogid'],int(t['source_id']))) else: - results.add_row((t['catalog'],float(t['parallax']),float(t['pmra']),float(t['pmdec']),int(t['source_id']))) + results.add_row((t['catalogid'],float(t['parallax']),float(t['pmra']),float(t['pmdec']),int(t['source_id']))) + + if len(results) > 0: gaia = True search_table = join(search_table,results,keys='icatalogid',join_type='left') @@ -1292,7 +1457,11 @@ def get_mags_astrom(search_table, db = True, fps=False, fast=False, release='sds if t[key] is None: if key in ['fuv_mag','nuv_mag']: t[key] = np.NaN - results.add_row((t['catalog'],float(t['fuv_mag']),float(t['nuv_mag']))) + try: + t['catalogid'] + except: + t['catalogid'] = t['catalog'] + results.add_row((t['catalogid'],float(t['fuv_mag']),float(t['nuv_mag']))) if len(results) > 0: GUV = True search_table = join(search_table,results,keys='icatalogid', join_type='left') @@ -1309,7 +1478,11 @@ def get_mags_astrom(search_table, db = True, fps=False, fast=False, release='sds if t[key] is None: if key in ['w1mpro','w2mpro','w3mpro','w4mpro','j_m_2mass','h_m_2mass','k_m_2mass']: t[key] = np.NaN - results.add_row((t['catalog'],float(t['w1mpro']),float(t['w2mpro']),float(t['w3mpro']), + try: + t['catalogid'] + except: + t['catalogid'] = t['catalog'] + results.add_row((t['catalogid'],float(t['w1mpro']),float(t['w2mpro']),float(t['w3mpro']), float(t['w4mpro']),float(t['j_m_2mass']),float(t['h_m_2mass']),float(t['k_m_2mass']))) if len(results) > 0: @@ -1572,7 +1745,7 @@ def get_FieldCadence(designID, rs_plan): if obsmode is not None: obsmode = field[0].cadence.obsmode_pk[0] else: - obsmode = None + obsmode = '' splog.info(f'Fieldid: {t.field_id}'+'\n'+ f' Version_pk: {t.version.pk}'+'\n'+ f' RS_tag: {t.version.tag}'+'\n'+ @@ -1580,18 +1753,27 @@ def get_FieldCadence(designID, rs_plan): f' Field Cadence: {t.cadence.label}'+'\n'+ f' ObsMode: {obsmode}' ) - - if len(field) > 0: - obsmode = field[0].cadence.obsmode_pk - if obsmode is not None: - obsmode = field[0].cadence.obsmode_pk[0] - else: - obsmode = '' - return(field[0].cadence.label, obsmode) - else: return('','') - return('','') + + design = Design.select().where(Design.design_id == designID) + design = design.dicts() + if len(design) > 0: + designmode = design[0]['design_mode'] + else: + designmode = None + if designmode is None: + designmode = '' + + if len(field) > 0: + obsmode = field[0].cadence.obsmode_pk + if obsmode is not None: + obsmode = field[0].cadence.obsmode_pk[0] + else: + obsmode = '' + return(field[0].cadence.label, obsmode, designmode) + else: return('','','') + return('','','') #except: return('','') - return('','') + return('','','') def target_tab_correction(search_table, db=True): @@ -1617,25 +1799,40 @@ def target_tab_correction(search_table, db=True): t['optical_prov'], True)) if len(results) > 0: - splog.info('Updateing Magnitudes from RevisedMagnitudes') - search_table = join(search_table,results,keys='carton_to_target_pk', join_type='left') + splog.info('Updating Magnitudes from RevisedMagnitudes') + search_table = join(search_table,results,keys='carton_to_target_pk', join_type='left') mag = search_table['mag'].data corrected = np.where(search_table['v05_rev_mag'].data == True)[0] + splog.info(f'Updating {len(corrected)} rows') mag[corrected,1] = search_table['mag_g'].data[corrected] mag[corrected,2] = search_table['mag_r'].data[corrected] mag[corrected,3] = search_table['mag_i'].data[corrected] mag[corrected,4] = search_table['mag_z'].data[corrected] search_table['mag'] = mag - search_table[corrected]['BP_MAG'] = search_table['gaia_bp'].data[corrected] - search_table[corrected]['RP_MAG'] = search_table['gaia_rp'].data[corrected] - search_table[corrected]['GAIA_G_MAG'] = search_table['gaia_g'].data[corrected] - search_table[corrected]['H_MAG'] = search_table['mag_h'].data[corrected] - search_table[corrected]['optical_prov'] = search_table['optical_prov_rev'].data[corrected] - + magt = search_table['bp_mag'] + magt[corrected] = search_table['gaia_bp'].data[corrected] + search_table['bp_mag'] = magt + + magt = search_table['rp_mag'] + magt[corrected] = search_table['gaia_rp'].data[corrected] + search_table['rp_mag'] = magt + + magt = search_table['gaia_g_mag'] + magt[corrected] = search_table['gaia_g'].data[corrected] + search_table['gaia_g_mag'] = magt + + magt = search_table['h_mag'] + magt[corrected] = search_table['mag_h'].data[corrected] + search_table['h_mag'] = magt + + magt = search_table['optical_prov'] + magt[corrected] = search_table['optical_prov_rev'].data[corrected] + search_table['optical_prov'] = magt + return(search_table) @@ -1675,6 +1872,37 @@ def get_SDSSID(search_table, db=True): return(search_table) +def get_AltCatids(search_table, db=True): + if db is True: + splog.info('Getting All Catalogids for SDSS_IDs') + from sdssdb.peewee.sdss5db.catalogdb import SDSS_ID_stacked + sdssids = np.unique(search_table['SDSS_ID'].data).tolist() + tp = SDSS_ID_stacked.select()\ + .where(SDSS_ID_stacked.sdss_id.in_(sdssids)) + results = Table(names=('SDSS_ID','CATALOGID_V0','CATALOGID_V0P5','CATALOGID_V1'), + dtype=(int, int, int, int)) + for t in tp.dicts(): + for col in t: + try: + if np.isnan(t[col]): + t[col] = -999 + except: + if t[col] is None: + t[col] = -999 + results.add_row((int(t['sdss_id']),int(t['catalogid21']),int(t['catalogid25']),int(t['catalogid31']))) + if len(results) > 0: + search_table = join(search_table, results, keys='SDSS_ID', join_type='left') + else: + search_table['CATALOGID_V0'] = -999 + search_table['CATALOGID_V0P5'] = -999 + search_table['CATALOGID_V1'] = -999 + for col in ['CATALOGID_V0','CATALOGID_V0P5','CATALOGID_V1']: + try: + search_table[col] = search_table[col].filled(-999) + except: + pass + return(search_table) + def get_targetflags(search_table, data, db=True, dr19=False): if db is True: splog.info('Getting Targeting flags') @@ -1697,7 +1925,7 @@ def get_targetflags(search_table, data, db=True, dr19=False): if len(tp) == 0: splog.info('No Matching Targets') try: - SDSSC2BV = TargetingFlags.meta['SDSSC2BV'] + SDSSC2BV = str(TargetingFlags.version) except: SDSSC2BV = '1' search_table['SDSS5_TARGET_FLAGS'] = Column(name = 'SDSS5_TARGET_FLAGS', @@ -1746,14 +1974,15 @@ def get_targetflags(search_table, data, db=True, dr19=False): results.add_column(flags.array, name = 'SDSS5_TARGET_FLAGS') try: - SDSSC2BV = TargetingFlags.meta['SDSSC2BV'] + SDSSC2BV = str(TargetingFlags.version) except: SDSSC2BV = '1' results['SDSSC2BV'] = Column(SDSSC2BV, name = 'SDSSC2BV', dtype = object) - data['SDSS5_TARGET_FLAGS'] = Column(name = 'SDSS5_TARGET_FLAGS', dtype = f"{F}B")#, shape = (,F)) - data['SDSSC2BV'] = Column(name = 'SDSSC2BV', dtype = object) + if data is not None: + data['SDSS5_TARGET_FLAGS'] = Column(name = 'SDSS5_TARGET_FLAGS', dtype = f"{F}B")#, shape = (,F)) + data['SDSSC2BV'] = Column(name = 'SDSSC2BV', dtype = object) search_table = join(search_table, results, keys='SDSS_ID',join_type='left') STF = search_table['SDSS5_TARGET_FLAGS'] sdssids = search_table['SDSS_ID'].data @@ -1796,7 +2025,8 @@ def get_CartonInfo(search_table, db= True): def get_supplements(search_table, designID=None, rs_plan = None, fps=False, fast=False, - release='sdsswork', no_remote=False, db = True, dr19=False): + release='sdsswork', no_remote=False, db = True, dr19=False, + designmode=None): with warnings.catch_warnings(): warnings.simplefilter("error") @@ -1805,11 +2035,13 @@ def get_supplements(search_table, designID=None, rs_plan = None, fps=False, fast dtypes.append((col, search_table[col].dtype)) dtypes.extend([('CatVersion', object), ('carton', object), ('fieldCadence', object), + ('design_vers',object), ('DESIGN_MODE',object), ('mapper', object), ('program_db', object), ('gaia_id', int), ('v05_rev_mag', bool), ('EBV_rjce', float),('SFD_EBV',float), ('EBV_BAYESTAR15', float), ('EBV_SIMPLEDUST2023',float),#('EBV_EDENHOFER2023',float), ('EBV_3D',float), ('EBV_3DSRC', object), - ('ll', float), ('bb', float), ('rr', float),('SDSS_ID',int)]) + ('ll', float), ('bb', float), ('rr', float),('SDSS_ID',int), + ('CATALOGID_V0',int),('CATALOGID_V0P5',int),('CATALOGID_V1',int)]) if not fps: dtypes.extend([('parallax',float),('pmra',float),('pmdec',float)]) data = Table(dtype=dtypes) @@ -1821,17 +2053,27 @@ def get_supplements(search_table, designID=None, rs_plan = None, fps=False, fast data['mag'] = Column(name='mag', dtype=float, shape=(5,)) if fps is True: if designID is not None and rs_plan is not None: - fieldCadence, ObsMode = get_FieldCadence(designID, rs_plan) + fieldCadence, ObsMode, designmode = get_FieldCadence(designID, rs_plan) + search_table['design_vers'] = rs_plan + else: splog.info("No designID or rs_plan") fieldCadence = '' ObsMode = '' + designmode = '' + search_table['design_vers'] = '' + else: fieldCadence = 'Plates' ObsMode = 'Plates' + search_table['design_vers'] = 'plates_'+rs_plan + if designmode is None: + designmode = '??_plates' search_table['fieldCadence'] = fieldCadence search_table.meta['OBSMODE'] = ObsMode + search_table.meta['DESIGN_MODE'] = designmode + search_table['DESIGN_MODE'] = designmode for col in search_table.colnames: if search_table[col].dtype == float: @@ -1846,6 +2088,7 @@ def get_supplements(search_table, designID=None, rs_plan = None, fps=False, fast if fast is False: search_table = get_SDSSID(search_table, db=db) search_table, data = get_targetflags(search_table, data, db=db, dr19=dr19) + search_table = get_AltCatids(search_table, db=db) search_table = get_mags_astrom(search_table, db = db, fps=fps, fast=fast, release=release, no_remote=no_remote) @@ -1959,64 +2202,6 @@ def get_supplements(search_table, designID=None, rs_plan = None, fps=False, fast return(search_table) -if __name__ == "__main__": - - parser = argparse.ArgumentParser(description='Produces spfibermap file corresponding to a spplan2d (or single confSummary file for SOS)') - parser.add_argument('-p', '--spplan2d',required=False, help='spplan2d file for idlspec2d run') - parser.add_argument('--topdir', required=False, help='Alternative output directory (defaults to location of spplan2d file or '+ptt.join('/data', 'boss', 'sos', '{mjd}')+' for SOS)') - parser.add_argument('-c', '--clobber', required=False, help='overwrites previous spfibermap file', action='store_true') - if (not no_db) or ('sdss5-bhm' in platform.node()): - parser.add_argument('-n', '--no_db', required=False, help='bypasses SDSSDB access and utilizes MOS target files from SDSS-V DR', action='store_true') - else: - parser.add_argument('-n', '--no_db', required=False, help=argparse.SUPPRESS,action='store_true') - parser.add_argument('--fast', required=False, help='When using --no_db, streamlines process and only gets parallax from MOS target files',action='store_true') - parser.add_argument('--datamodel', required=False, help='Supply a datamodel file (defaults to $IDLSPEC2D/datamodel/spfibermap_dm.par or $IDLSPEC2D/datamodel/spfibermap_sos_dm.par for SOS)') - parser.add_argument('-s', '--SOS', required=False, help='produces spfibermap for SOS', action='store_true') ### need SOS drivers??? does not use spplan2d - parser.add_argument('--release', required=False, help='sdss_access data release (defaults to sdsswork), required if you do not have proprietary access, otherwise see https://sdss-access.readthedocs.io/en/latest/auth.html#auth', default='sdsswork') - parser.add_argument('--remote', help='allow for remote access to data using sdss-access', action='store_true') - parser.add_argument('--dr19', help='Limit targeting flags to DR19 cartons', action='store_true') - - SOS = parser.add_argument_group(title='SOS', description='Options of use with SOS only') - SOS.add_argument('--confSummary', required=False, help='confSummary file for SOS (required for with --SOS)') - SOS.add_argument('--ccd', required=False, help='CCD for SOS', choices=['b2','r2','b1','r1']) - SOS.add_argument('--mjd', required=False, help='MJD of observation', type=str) - SOS.add_argument('--log', required=False, help='creates log file in /sdss5/boss/sos/logs/', action='store_true') - SOS.add_argument('--lco', required=False, help=argparse.SUPPRESS, action='store_true') - args = parser.parse_args() - if no_db: - args.no_db = True - args.SOS_log_dir = '/sdss5/boss/sos/logs/' - - if args.lco: - os.environ["OBSERVATORY"] = 'LCO' - - - if args.release != 'sdsswork': - if args.release not in Access().get_available_releases(): - parser.exit(status=0, message='ERORR: '+args.release+' is not a valid release') - else: - if args.remote: - try: - Access().remote() - except: - parser.exit(status=0, message='ERORR: No netrc file found. see https://sdss-access.readthedocs.io/en/latest/auth.html#auth') - - if args.SOS: - if (args.confSummary is None) or (args.ccd is None) or (args.mjd is None): - parser.print_help() - parser.exit(status=0, message='\n -----------------------------------------------------\n'+ - 'ERORR: --confSummary, --ccd, and --mjd are required with the --SOS option') - - SOS_opts = {'confSummary':args.confSummary, 'ccd':args.ccd, 'mjd':args.mjd, 'log':args.log, 'log_dir':args.SOS_log_dir} - else: - SOS_opts = None - if args.spplan2d is None: - parser.print_help() - parser.exit(status=0, message='\n -----------------------------------------------------\n'+ - 'ERORR: --spplan2d is required without the --SOS option') - readfibermaps(spplan2d=args.spplan2d, topdir=args.topdir, clobber=args.clobber, SOS=args.SOS, - no_db=args.no_db, fast=args.fast, datamodel = args.datamodel, SOS_opts=SOS_opts, - release = args.release, remote = args.remote, dr19=args.dr19) diff --git a/bin/simple_dust_2023.py b/python/boss_drp/prep/simple_dust_2023.py similarity index 100% rename from bin/simple_dust_2023.py rename to python/boss_drp/prep/simple_dust_2023.py diff --git a/bin/spplan.py b/python/boss_drp/prep/spplan.py similarity index 78% rename from bin/spplan.py rename to python/boss_drp/prep/spplan.py index 1cde7c615..cb1a6d9ae 100755 --- a/bin/spplan.py +++ b/python/boss_drp/prep/spplan.py @@ -1,62 +1,67 @@ #!/usr/bin/env python3 +import boss_drp +from boss_drp.field import (field_to_string, Fieldtype, field_dir) +from boss_drp.utils import (find_nearest_indx, Splog, get_dirs, mjd_match, Sphdrfix, getcard) +from boss_drp.prep.GetconfSummary import find_confSummary, find_plPlugMapM, get_confSummary +from boss_drp.utils.reject import Reject + +from sdss_access.path import Path +from sdss_access import Access +from sdss_access import __version__ as saver +from tree import __version__ as treever -from splog import Splog from os import getenv, makedirs, rename import os.path as ptt from glob import glob import time -from field import field_to_string, Fieldtype from astropy.table import Table, vstack, Column, unique from astropy.io import fits from collections import OrderedDict from pydl.pydlutils.yanny import read_table_yanny, yanny, write_table_yanny +from pydl import __version__ as pydlVersion import subprocess import numpy as np import argparse -from load_module import load_module -from load_module import load_env -from spplan_epoch import get_dirs -from uubatchpbs import mjd_match -from GetconfSummary import find_confSummary, find_plPlugMapM, get_confSummary - -from sdss_access.path import Path -from sdss_access import Access - -from pydl import __version__ as pydlVersion -from sdss_access import __version__ as saver -from tree import __version__ as treever +try: + import json +except: + pass splog = Splog() SDSSCOREVersion = getenv('SDSSCORE_VER', default= '') -speclogVersion = subprocess.getoutput("speclog_version") -idlspec2dVersion = subprocess.getoutput("idlspec2d_version") -idlutilsVersion = subprocess.getoutput("idlutils_version") - +idlspec2dVersion = boss_drp.__version__ -def getcard(hdr, card, default=None, noNaN=False): +def check_transfer(OBS,mj): try: - if hdr.count(card) > 0: - if type(hdr[card]) is str: - hdr[card] = hdr[card].strip().replace("'","") - if noNaN is True: - if hdr[card].strip().upper() == 'NAN': - hdr[card] = default - return(hdr[card]) + evar = f'{OBS.upper()}_STAGING_DATA' + try: + transferlog = ptt.join(getenv(evar),'atlogs','{mjd}') + except: + transferlog = ptt.join(getenv('APO_STAGING_DATA').replace('apo','{obs}'), + 'atlogs','{mjd}') + transferlog_json = ptt.join(transferlog,'{mjd}_status.json') + transferlog_json = transferlog_json.format(obs=OBS.lower(), mjd=mj) + transferlog = ptt.join(transferlog,'transfer-{mjd}.done') + transferlog = transferlog.format(obs=OBS.lower(), mjd=mj) + if ptt.exists(transferlog): + wait = False + elif ptt.exists(transferlog_json): + with open(transferlog_json) as lf: + test = json.load(lf)['history'] + test = {x['stage']:x['status'] for x in test if x['status'] != "skip"} + if test['copy'] == 'success': + wait = False else: - return(hdr[card]) + wait = True else: - return(default) - except: - return(default) - - -def find_nearest(array, value): - array = np.asarray(array) - idx = (np.abs(array - value)).argmin() - return idx - + wait = True + except Exception as e: + print(e) + splog.info('Error Checking Data Transfer Logs... continuing anyways') + wait = False + return(wait) def get_alt_cal(fieldexps, allexps, flav='arc', single_cal=False): cals = allexps[np.where(allexps['flavor'].data == flav)[0]].copy() @@ -67,12 +72,10 @@ def get_alt_cal(fieldexps, allexps, flav='arc', single_cal=False): if len(cals) == 0: return(fieldexps) - - - + if single_cal is True: texp = np.nanmean(fieldexps['TAI'].data) - idx = find_nearest(cals['TAI'].data, texp) + idx = find_nearest_indx(cals['TAI'].data, texp) cal = cals[idx] idx = np.where(cals['EXPOSURE'].data == cal['EXPOSURE'].data)[0] cals = cals[idx] @@ -80,63 +83,6 @@ def get_alt_cal(fieldexps, allexps, flav='arc', single_cal=False): fieldexps = vstack([cals,fieldexps]) return(fieldexps) - - - -class Sphdrfix: - def __init__(self, mjd, fps=False, obs='APO', release=None, no_remote=True): - self.mjd = str(mjd) - self.sphdrfix_table = None - self.fps = fps - self.obs = obs.lower() - self.release = release - self.no_remote = no_remote - self.read_sphdrfix() - - def read_sphdrfix(self): - if self.release is not None: - path = Path(release=self.release, preserve_envvars=True) - path_options = {'mjd':self.mjd} - if path.exists('sdHdrFix', **path_options): - reportfile = path.full('sdHdrFix', **path_options) - elif path.exists('sdHdrFix', **path_options, remote=(not self.no_remote)): - access = Access(release=self.release) - reportfile = path.full('sdHdrFix', **path_options) - access.remote() - access.add('sdHdrFix', **path_ops) - access.set_stream() - valid = access.commit() - if valid is False: - return - else: - return - elif not self.fps: - speclog_dir = getenv('SPECLOG_DIR') - if speclog_dir is None: - splog.info('ERROR: Must set environment variabel SPECLOG_DIR') - exit(1) - reportfile = ptt.join(speclog_dir, self.mjd, 'sdHdrFix-'+self.mjd+'.par') - else: - speclog_dir = getenv('SDHDRFIX_DIR') - if speclog_dir is None: - splog.info('ERROR: Must set environment variabel SDHDRFIX_DIR') - exit(1) - reportfile = ptt.join(speclog_dir, self.obs, 'sdHdrfix','sdHdrFix-'+self.mjd+'.par') - if ptt.exists(reportfile): - self.sphdrfix_table = read_table_yanny(reportfile, 'OPHDRFIX') - self.sphdrfix_table.convert_bytestring_to_unicode() - - def fix(self, infile, hdr): - fileroot = ptt.basename(infile).split('.')[0] - wfileroot = fileroot.split('-') - wfileroot = '-'.join([wfileroot[0], '??', wfileroot[-1]]) - if self.sphdrfix_table is not None: - for row in self.sphdrfix_table: - if (row['fileroot'] == fileroot) or (row['fileroot'] == wfileroot): - hdr[row['keyword']] = row['value'] - if getcard(hdr,'QUALITY') is None: - hdr['QUALITY'] = 'excellent' - return hdr def get_key(fp): filename = ptt.splitext(ptt.splitext(ptt.basename(fp))[0])[0] @@ -147,7 +93,6 @@ def get_key(fp): return int(ptt.splitext(int_part)[0]) -#from tqdm import tqdm def spplan_findrawdata(inputdir): fullnames = glob(ptt.join(inputdir,'sdR*.fit')) @@ -180,7 +125,7 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, clobber=False, release='sdsswork', logfile=None, no_remote=True, legacy=False, plates=False, no_commissioning=False, no_dither=False, single_flat=False, single_arc=False, override_manual=False, manual_noarc=False, - verbose = False, **extra_kwds): + verbose = False, returnlist=False, **extra_kwds): filt_field = field if logfile is not None: @@ -197,6 +142,11 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, if lco: BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_S' OBS = 'LCO' + if mjdstart is None: + mjdstart = 60000 + elif int(mjdstart) < 60000: + mjdstart = 60000 + mjdstart = int(mjdstart) else: BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_N' OBS = 'APO' @@ -243,6 +193,8 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, #--------------------------------------------------------------------------- # Loop through each input MJD directory + if returnlist: + plans_list=[] dithered_pmjds = [] for i, mj in enumerate(mjdlist): thismjd = int(mj) @@ -267,7 +219,7 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, continue inputdir = ptt.join(rawdata_dir, mj) - sphdrfix = Sphdrfix(mj, fps=ftype.fps, obs=OBS) + sphdrfix = Sphdrfix(mj, fps=ftype.fps, obs=OBS, splog=splog) # if ftype.legacy or ftype.plates: # plugdir = ptt.join(speclog_dir, mj) @@ -275,6 +227,22 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, splog.info(f'MJD: {mj} {ftype} ({i+1} of {len(mjdlist)})') splog.info('Data directory '+inputdir) + if len(mjdlist) == 1: + wait = check_transfer(OBS, mj) + if int(mj) < 59148: + wait = False + i = 0 + while wait: + if i == 0 or i == 1: + splog.info('Daily Transfer Log shows incomplete... Waiting 60s') + else: + splog.info('Daily Transfer Log still shows incomplete... continuing anyways') + break + time.sleep(60) + i = i + 1 + wait = check_transfer(OBS, mj) + if not wait: + break # Find all raw FITS files in this directory fullname = spplan_findrawdata(inputdir) @@ -363,7 +331,10 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, splog.info(f'Skipping '+ptt.basename(f)+' with failed fits header') continue - + reject = Reject(f, hdr) + if reject.check(splog): + continue + if thismjd > 51576: bin = False if getcard(hdr,'COLBIN', default=1) > 1: @@ -527,8 +498,19 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, fieldmap_col = 'mapname' else: fieldmap_col = 'fieldid' + manual_noarc_set = manual_noarc + for field in list(dict.fromkeys(allexps[fieldmap_col].data)): - + manual_noarc = manual_noarc_set + ## The code below handles a small number of cases where a field does not have a valid arc, + ## and uses the same as another field from the same night + if not lco: + if (int(thismjd) == 59953) & (str(field) in ['103421']): + manual_noarc = True + elif (int(thismjd) == 59797) & (str(field) in ['100499']): + manual_noarc = True + elif (int(thismjd) == 60323) & (str(field) in ['101854']): + manual_noarc = True manual = 'F' if ftype.fps: if int(field) == 0: @@ -572,7 +554,7 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, if len(fieldexps[np.where((fieldexps['flavor'].data == 'flat'))[0]]) == 0: # Check for valid flat Frame if not matched_flats: - fieldexps = get_alt_cal(fieldexps, allexps, flav='flat', single_cal=single_arc) + fieldexps = get_alt_cal(fieldexps, allexps, flav='flat', single_cal=single_flat) if len(fieldexps[np.where((fieldexps['flavor'].data == 'flat'))[0]]) == 0: splog.info(f'WARNING: No flat frames for {fieldmap_col} {field_to_string(field)} (mjd:{thismjd})') continue @@ -596,9 +578,10 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, continue DITHER = fieldexps[sci]['DITHER'].data[0] planfile = 'spPlan2d-' + fieldname + '-' + mj + '.par' - planfile = ptt.join(topdir, run2d, fieldname, planfile) - - + planfile = ptt.join(field_dir(ptt.join(topdir,run2d), fieldname), planfile) + + if returnlist: + plans_list.append(planfile) if ftype.legacy: shape = (4,) else: @@ -635,9 +618,9 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, 'DITHER': DITHER +" # Is the Field Dithered (T: True, F: False)", 'planfile2d': "'"+ptt.basename(planfile)+"'" +" # Plan file for 2D spectral reductions (this file)", 'idlspec2dVersion': "'"+idlspec2dVersion+"'" +" # idlspec2d Version when building plan", - 'idlutilsVersion': "'"+idlutilsVersion+"'" +" # idlutils Version when building plan", + #'idlutilsVersion': "'"+idlutilsVersion+"'" +" # idlutils Version when building plan", 'pydlVersion': "'"+pydlVersion+"'" +" # Version of pydl when building plan", - 'speclogVersion': "'"+speclogVersion+"'" +" # speclog Version when building plan", + #'speclogVersion': "'"+speclogVersion+"'" +" # speclog Version when building plan", 'SDSSCOREVersion': "'"+SDSSCOREVersion+"'" +" # SDSSCORE Version when building plan", 'SDSS_access_Ver': "'"+saver+"'" +" # sdss_access Version when building plan", 'sdss_tree_Ver': "'"+treever+"'" +" # sdss-tree Version when building plan", @@ -676,14 +659,16 @@ def spplan2d(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, if extra_kwds['skip1d'] is True and logfile is not None: splog.close() - return - + if returnlist: + return(plans_list) + else: + return def spplan1d (topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, field= None, fieldstart = None, fieldend=None, lco=False, clobber=False, logfile=None, override_manual=False, legacy=False, plates=False, plate_epoch = False, - daily = False, **extra_kwds): + daily = False, plans=None, **extra_kwds): if plate_epoch is False: daily=True if logfile is not None and extra_kwds['skip2d'] is True: @@ -706,7 +691,7 @@ def spplan1d (topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, if run2d is None: run2d = getenv('RUN2D') splog.info('Setting RUN2D='+ run2d) - topdir = ptt.join(topdir, run2d) + topdir2d = ptt.join(topdir, run2d) if not(ptt.exists(topdir) and ptt.isdir(topdir)): splog.info('Directory does not exist: '+topdir) @@ -715,9 +700,14 @@ def spplan1d (topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, OBS = 'LCO' if lco else 'APO' + if plans is not None: + if field is None: + field = [] + field.extend([ptt.basename(x).split('-')[1] for x in np.atleast_1d(plans)]) + - fieldlist = get_dirs(topdir, subdir='', pattern=field_to_string(0).replace('0','?'), match=field, - start=fieldstart, end=fieldend) + fieldlist = get_dirs(ptt.dirname(field_dir(topdir2d, '*')), field = True, + match=field, start=fieldstart, end=fieldend) splog.info('Number of field directories = '+ str(len(fieldlist))) # Loop through each input configuration directory @@ -728,10 +718,10 @@ def spplan1d (topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, continue ftype = Fieldtype(fieldid=fieldid, mjd=mjd) splog.info('----------------------------') - splog.info('Field directory '+ptt.join(topdir,fielddir)) + splog.info('Field directory '+field_dir(topdir2d, fielddir)) #---------- # Find all 2D plan files - allplan = glob(ptt.join(topdir, fielddir, 'spPlan2d*.par')) + allplan = glob(ptt.join(field_dir(topdir2d, fielddir), 'spPlan2d*.par')) #---------- # Read all the 2D plan files # The string array PLANLIST keeps a list of the plan file that each element @@ -819,7 +809,7 @@ def spplan1d (topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, fmjds_exps = spexp[idx]['confid','fieldid','mjd','mapname','flavor','exptime','name', 'epoch_combine'] coadd_mjd = np.max(fmjds_exps['mjd'].data) planfile = 'spPlancomb-' + field_to_string(fieldid) + '-' + str(coadd_mjd) + '.par' - planfile = ptt.join(topdir, fielddir, planfile) + planfile = ptt.join(field_dir(topdir2d, fielddir), planfile) fmjds_exps.meta=OrderedDict({ 'fieldid': field_to_string(fieldid) +" # Field number", @@ -827,12 +817,12 @@ def spplan1d (topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, 'OBS': OBS +" # Observatory", 'RUN2D': run2d +" # 2D reduction name", 'DITHER': DITHER +" # Is the Field Dithered (T: True, F: False)", - 'planfile2d': plan2dfiles +" # Plan file for 2D spectral reductions (this file)", - 'planfilecomb':"'"+ptt.basename(planfile)+"'" +" # Plan file for 2D spectral reductions (this file)", + 'planfile2d': plan2dfiles +" # Plan file for 2D spectral reductions", + 'planfilecomb':"'"+ptt.basename(planfile)+"'" +" # Plan file for coadding (this file)", 'idlspec2dVersion': "'"+idlspec2dVersion+"'" +" # Version of idlspec2d when building plan file", - 'idlutilsVersion': "'"+idlutilsVersion+"'" +" # Version of idlutils when building plan file", + #'idlutilsVersion': "'"+idlutilsVersion+"'" +" # Version of idlutils when building plan file", 'pydlVersion': "'"+pydlVersion+"'" +" # Version of pydl when building plan file", - 'speclogVersion': "'"+speclogVersion+"'" +" # Version of speclog when building plan file", + #'speclogVersion': "'"+speclogVersion+"'" +" # Version of speclog when building plan file", 'SDSSCOREVersion': "'"+SDSSCOREVersion+"'" +" # Version of SDSSCORE when building plan file", 'SDSS_access_Ver': "'"+saver+"'" +" # Version of sdss_access when building plan file", 'SDSS_access_Ver': "'"+saver+"'" +" # Version of sdss_access when building plan file", @@ -867,95 +857,3 @@ def spplan1d (topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, return -if __name__ == "__main__": - - parser = argparse.ArgumentParser(description='Produce the spPlan2d and spPlancomb files for the pipeline run') - - - General = parser.add_argument_group(title='General', description='General Setup Options') - General.add_argument('--skip2d', help='Skip spplan2d', action='store_true') - General.add_argument('--skip1d', help='Skip spplan1d', action='store_true') - General.add_argument('--module', help='Module file to load for run') - General.add_argument('--topdir', help='') - General.add_argument('--run2d', help='Run2d to override module or environmental variable') - General.add_argument('--lco', help='Build Run files for LCO', action='store_true') - General.add_argument('--logfile', help='Optional logfile (Including path)') - General.add_argument('--verbose', help='Provide information about nonutlized frames') - General.add_argument('-c', '--clobber', help='overwrites previous plan file', action='store_true') - General.add_argument('--release', help='sdss_access data release (defaults to sdsswork), required if you do not have proprietary access, otherwise see https://sdss-access.readthedocs.io/en/latest/auth.html#auth', default='sdsswork') - General.add_argument('--remote', help='allow for remote access to data using sdss-access', action='store_true') - General.add_argument('--override_manual',help='Override/clobber manually edited plan', action='store_true') - - - - Filter_grp = parser.add_argument_group(title='MJD/Field Filtering', description='MJD/Field Filtering Options') - Filter_grp.add_argument('--mjd', nargs='*', help = 'Use data from these MJDs.') - Filter_grp.add_argument('--mjdstart', help = 'Starting MJD') - Filter_grp.add_argument('--mjdend', help = 'Ending MJD') - - Filter_grp.add_argument('--field', nargs='*', help = 'Use data from these fields.') - Filter_grp.add_argument('--fieldstart', help = 'Starting Field') - Filter_grp.add_argument('--fieldend', help = 'Ending Field') - - Filter_grp.add_argument('--legacy', help = 'Include legacy (BOSS/eBOSS) plates', action='store_true') - Filter_grp.add_argument('--plates', help = 'Include SDSS-V plates', action='store_true') - Filter_grp.add_argument('--fps', help = 'Include FPS Fields', action='store_true') - Filter_grp.add_argument('--sdssv', help = 'Include both SDSS-V Fields & Plates', action='store_true') - Filter_grp.add_argument('--no_commissioning', help = 'Exclude SDSS-V FPS Commission Fields', action='store_true') - Filter_grp.add_argument('--no_dither', help = 'Exclude Dither fields', action='store_true') - - - - run2d_grp = parser.add_argument_group(title='RUN2D', description='spPlan2d Setup Options') - run2d_grp.add_argument('--matched_flats', help = 'Require Flat from a field/plate', action='store_true') - run2d_grp.add_argument('--nomatched_arcs', help = 'Allow Arc from another field/plate', action='store_true') - run2d_grp.add_argument('--minexp', help = 'Min Science Exposures in Plan (default=1)', default=1) - run2d_grp.add_argument('--single_flat', help = 'Only find the closest flat calibration frame', action='store_true') - run2d_grp.add_argument('--multiple_arc', help = 'Find all possible arc calibration frames', action='store_true') - run2d_grp.add_argument('--manual_noarc', help = 'if nomatched_arcs is False, builds spplan with unmatched arcs and mark as manual', action='store_true') - - - run1d_grp = parser.add_argument_group(title='RUN1D', description='spPlancomb Setup Options') - run1d_grp.add_argument('--plate_epoch', help = 'Use a variable max epoch length for plate coadd', action='store_true') - - args = parser.parse_args() - - if args.sdssv: - args.fps = True - args.plates = True - - if args.release != 'sdsswork': - if args.release not in Access().get_available_releases(): - parser.exit(status=0, message='ERORR: '+args.release+' is not a valid release') - else: - if args.remote is True: - try: - Access().remote() - except: - parser.exit(status=0, message='ERROR: No netrc file found. see https://sdss-access.readthedocs.io/en/latest/auth.html#auth') - - if args.module is not None: - module = load_module() - module('purge') - module('load', args.module) - if args.run2d is None: - args.run2d = load_env('RUN2D') - if args.topdir is None: - args.topdir = load_env('BOSS_SPECTRO_REDUX') - - args.no_remote = not args.remote - args.single_arc = not args.multiple_arc - - idlspec2dVersion = subprocess.run(['idlspec2d_version'], stdout=subprocess.PIPE).stdout.decode('utf-8') - idlutilsVersion = subprocess.run(['idlutils_version'], stdout=subprocess.PIPE).stdout.decode('utf-8') - speclogVersion = subprocess.run(['speclog_version'], stdout=subprocess.PIPE).stdout.decode('utf-8') - SDSSCOREVersion = load_env('SDSSCORE_VER') - - - idlspec2dVersion = idlspec2dVersion.replace('\n', '') - idlutilsVersion = idlutilsVersion.replace('\n', '') - speclogVersion = speclogVersion.replace('\n', '') - if not args.skip2d: - spplan2d(**vars(args)) - if not args.skip1d: - spplan1d(**vars(args)) diff --git a/bin/spplan_epoch.py b/python/boss_drp/prep/spplan_epoch.py similarity index 78% rename from bin/spplan_epoch.py rename to python/boss_drp/prep/spplan_epoch.py index 5af2745de..74ee80a1a 100755 --- a/bin/spplan_epoch.py +++ b/python/boss_drp/prep/spplan_epoch.py @@ -1,37 +1,45 @@ #!/usr/bin/env python3 +import boss_drp +from boss_drp.prep.GetconfSummary import get_confSummary +from boss_drp.field import field_to_string, Fieldtype, field_dir +from boss_drp.utils import Splog, load_env, get_dirs + +splog = Splog() + +try: + from sdssdb.peewee.sdss5db import opsdb, targetdb + opsdb.database.set_profile(load_env('DATABASE_PROFILE', default='pipelines')) + import sdssdb + SDSSDBVersion=sdssdb.__version__ +except: + if load_env('DATABASE_PROFILE', default='pipelines').lower() in ['pipelines','operations']: + splog.log('ERROR: No SDSSDB access') + exit() + else: + splog.log('WARNING: No SDSSDB access') + SDSSDBVersion='N/A' + +from sdss_access.path import Path +from sdss_access import Access import numpy as np import argparse -from os import getenv, environ +from os import getenv, environ, makedirs from glob import glob import os.path as ptt -from os import makedirs from pydl.pydlutils import yanny from astropy.table import Table, vstack, Column -from GetconfSummary import get_confSummary - from astropy.io import fits from astropy.time import Time from sys import argv from collections import OrderedDict from subprocess import Popen, PIPE, getoutput import time -from field import field_to_string, Fieldtype -from splog import Splog -from sdss_access.path import Path -from sdss_access import Access -import sdssdb -from load_module import load_module -from load_module import load_env -from sdssdb.peewee.sdss5db import opsdb, targetdb -opsdb.database.set_profile('pipelines') -idlspec2dVersion = getoutput("idlspec2d_version") -idlutilsVersion = getoutput("idlutils_version") -SDSSDBVersion=sdssdb.__version__ -speclogVersion = getoutput('speclog_version') -splog = Splog() + +idlspec2dVersion = boss_drp.__version__ +#idlutilsVersion = getoutput("idlutils_version") def expsByEpoch(fieldPk): @@ -188,7 +196,9 @@ def get_FieldMeta(allexps, obs, plates=False, release = 'sdsswork'): output['field_cadence']=output['field_cadence'].astype(str) except: print(output) - output['field_cadence']=output['field_cadence'].astype(str) + splog.log("No Matching DB Field Meta Data") + return(None) + #output['field_cadence']=output['field_cadence'].astype(str) output['design']=output['design'].astype(str) allexps = output @@ -197,7 +207,7 @@ def get_FieldMeta(allexps, obs, plates=False, release = 'sdsswork'): allexps['field_pk'] = -999 allexps['field_cadence'] = 'plates' allexps['max_length'] = 1000 - allexps['obs'] = 'apo' + allexps['obs'] = 'APO' allexps['design'] = '' return(allexps) @@ -220,6 +230,7 @@ def write_spPlancomb(allexps, fpk, field, topdir=None, run2d=None, clobber=False Writes spPlancomb file for each epoch in a Table of exposures """ + topdir2d = ptt.join(topdir, run2d) allexps['sdrname'] = allexps['name'].data shape = (allexps['name'].shape[1],) allexps.remove_column('name') @@ -250,10 +261,9 @@ def write_spPlancomb(allexps, fpk, field, topdir=None, run2d=None, clobber=False epochexps = epochexps[['confid','fieldid','mjd','mapname','flavor','exptime','name','epoch_combine', 'planfile2d','field_pk','field_cadence','rs_plan','obs']] - if daily is True: - outdir = ptt.join(topdir, run2d,field_to_string(field)) - else: - outdir = ptt.join(topdir, run2d,field_to_string(field), 'epoch') + outdir = field_dir(topdir2d,field) + if not daily is True: + outdir = ptt.join(outdir,'epoch') makedirs(outdir, exist_ok=True) if not daily: if fpk_flag is not None: @@ -287,7 +297,6 @@ def write_spPlancomb(allexps, fpk, field, topdir=None, run2d=None, clobber=False 'planfile2d': plan2ds +" # Plan file(s) for Daily 2D spectral reductions", 'planfilecomb': ptt.basename(planfile) +" # Plan file for Combine (this file)", 'idlspec2dVersion': idlspec2dVersion +" # Version of idlspec2d when building plan file", - 'idlutilsVersion': idlutilsVersion +" # Version of idlutils when building plan file", 'sdssdb_Version': SDSSDBVersion +" # Version of sdssdb when building this plan file", 'RS_Version': rs_plan +" # Robostrategy Version for this field", }) @@ -307,10 +316,10 @@ def write_spPlancomb(allexps, fpk, field, topdir=None, run2d=None, clobber=False allexps_out.remove_column(col) if True: #not daily: if fpk_flag is not None: - expfile = ptt.join(topdir, run2d, field_to_string(field),'SciExp-'+field_to_string(field)+'_'+str(fpk_flag)+'.par') + expfile = ptt.join(field_dir(topdir2d,field),'SciExp-'+field_to_string(field)+'_'+str(fpk_flag)+'.par') else: - expfile = ptt.join(topdir, run2d, field_to_string(field),'SciExp-'+field_to_string(field)+'.par') - + expfile = ptt.join(field_dir(topdir2d,field),'SciExp-'+field_to_string(field)+'.par') + if ptt.exists(expfile): # if clobber is False: # splog.info('WARNING: Will not over-write SciExp file: ' + ptt.basename(expfile)) @@ -330,7 +339,8 @@ def get_exp_spx(topdir, run2d, field, plates=False, lco=False, release = 'sdsswo """ splog.log('Building table of exposures from spPlan2d files') allexp = [] - for plan in glob(ptt.join(topdir, run2d, field_to_string(field), 'spPlan2d*.par')): + topdir2d = ptt.join(topdir, run2d) + for plan in glob(ptt.join(field_dir(topdir2d,field), 'spPlan2d*.par')): yplan = yanny.read_table_yanny(plan, 'SPEXP') if not plates: obs = yplan.meta['OBS'].lower() @@ -353,9 +363,10 @@ def get_exp_spx(topdir, run2d, field, plates=False, lco=False, release = 'sdsswo allexp.append(yplan) allexp = vstack(allexp) allexp = get_FieldMeta(allexp, obs, plates=plates, release=release) - names = allexp['name'] - expids = [int(ptt.splitext(x)[0].split('-')[-1]) for x in np.asarray(names[:,0],dtype=str).tolist()] - allexp['expid'] = expids + if allexp is not None: + names = allexp['name'] + expids = [int(ptt.splitext(x)[0].split('-')[-1]) for x in np.asarray(names[:,0],dtype=str).tolist()] + allexp['expid'] = expids return(allexp) @@ -367,6 +378,8 @@ def fps_field_epoch(field, topdir=None, run2d=None, clobber=False, lco = False, Separates a Table of fps exposures into epoches """ allexps = get_exp_spx(topdir, run2d, field, lco=lco, release=release) + if allexps is None: + return allexps = filter_mjd(allexps, mjd=mjd, mjdstart=mjdstart, mjdend=mjdend) if allexps is None: @@ -499,37 +512,15 @@ def filter_mjd(allexps, mjd=None, mjdstart=None, mjdend=None): return(allexps) - -def get_dirs(rawdir, subdir='', pattern='*', match=None, start=None, end=None): - """ - Generates of list of directores matching a patten with in rawdir/subdir, and filters out - folders outside of valid range - """ - dlist = [] - for d in glob(ptt.join(rawdir, subdir, pattern)): - d = ptt.basename(d) - if d == 'pypost': continue - if match is not None: - if int(d) not in np.atleast_1d(np.asarray(match)).astype(int).tolist(): - continue -# if match is not None: -# if int(d) != int(match): continue - if start is not None: - if int(d) < int(start): continue - if end is not None: - if int(d) > int(end): continue - dlist.append(d) - dlist = np.sort(np.asarray(dlist)).tolist() - return(dlist) - def spplan_epoch(topdir=None, run2d=None, fieldid=None, fieldstart=None, fieldend=None, abandoned=False, clobber=False, daily=False, lco=False, mjd=None, mjdstart=None, mjdend=None, started=False, - min_epoch_len=0, release = 'sdsswork'): + min_epoch_len=0, release = 'sdsswork', **kwds): """ Generates list of fields and calls the correct field epoch function for each field """ - fieldlist = get_dirs(topdir, subdir=run2d, pattern=field_to_string(0).replace('0','?'), - match=fieldid, start=fieldstart, end=fieldend) + topdir2d = ptt.join(topdir, run2d) + fieldlist = get_dirs(ptt.dirname(field_dir(topdir2d, '*')), field = True, + match=fieldid, start=fieldstart, end=fieldend) splog.info('Number of Field Directories = '+ str(len(fieldlist))+'\n') for i, field in enumerate(fieldlist): if i > 0: @@ -544,6 +535,8 @@ def spplan_epoch(topdir=None, run2d=None, fieldid=None, fieldstart=None, fielden mjdstart=mjdstart, mjdend=mjdend) else: if daily is False: + if SDSSDBVersion == 'N/A': + splog.info(f'Skipping {field} due to no SDSSDB access') fps_field_epoch(field, topdir=topdir, run2d=run2d, clobber=clobber, lco=lco, abandoned=abandoned, started=started, min_epoch_len=min_epoch_len, release=release, mjd=mjd, mjdstart=mjdstart, mjdend=mjdend) @@ -587,66 +580,4 @@ def spplancombin(topdir=None, run2d=None, run1d=None, mjd=None, mjdstart=None, m splog.log('Successful completion of spplan_epoch at '+ time.ctime()) splog.close() -if __name__ == '__main__' : - parser = argparse.ArgumentParser( - prog=ptt.basename(argv[0]), - description='Build spPlan files using idl for spPlan2d, and python for spPlancomb') - parser.add_argument('--module', help='Module file to load for run') - parser.add_argument('--topdir', help = 'Override value for the environment variable $BOSS_SPECTRO_REDUX.', required=False) - parser.add_argument('--run2d', help = 'Override value for the environment variable $RUN2D', required=False) - parser.add_argument('--run1d', help = 'Override value for the environment variable $RUN1D', required=False) - parser.add_argument('--mjd', help = 'Use data from these MJDs.', required=False) - parser.add_argument('--mjdstart', help = 'Starting MJD', required=False) - parser.add_argument('--mjdend', help = 'Ending MJD', required=False) - parser.add_argument('--fieldid', help = "Look for the input data files in topdir/fieldid; default to search all subdirectories. Note that this need not be integer-valued, but could be for example '0306_test'.", required=False) - parser.add_argument('--fieldst', help = "Starting fieldid", required=False, dest='fieldstart') - parser.add_argument('--fieldstart', help = argparse.SUPPRESS) - parser.add_argument('--fieldend', help = "Ending fieldid", required=False) - parser.add_argument('--fps', help="Only produce epoch coadds for FPS Fields (Fields>16000)",action='store_true') - parser.add_argument('--sdssv', help="Only produce epoch coadds for SDSS-V Fields (Fields>15000)",action='store_true') - parser.add_argument('--clobber', help = "If set, then over-write conflicting plan files", action='store_true', required=False) - parser.add_argument('--minexp', help = "Set minimum number of Science Frames for plan creation", required=False, default= 1) - #parser.add_argument('--daily', help = "Produce Daily plans rather then epoch plans", action='store_true') - parser.add_argument('--lco', help = "Create Plans for LCO", required=False, action='store_true') - parser.add_argument('--apo', help = argparse.SUPPRESS, required=False, action='store_true') - parser.add_argument('--logfile', '-l', help="File for logging") - parser.add_argument('--abandoned',action='store_true', help="Create plans for abandoned epochs") - parser.add_argument('--started',action='store_true', help="Create plans for started epochs (including unfinished)") - parser.add_argument('--min_epoch_len', help="minimum length of epoch required to produce plan", type=int, default = 0) - parser.add_argument('--release', required=False, help='sdss_access data release (defaults to sdsswork), required if you do not have proprietary access, otherwise see https://sdss-access.readthedocs.io/en/latest/auth.html#auth', default='sdsswork') - parser.add_argument('--remote', help='allow for remote access to data using sdss-access', action='store_true') - - args = parser.parse_args() - - if args.fps is True: - if args.fieldstart is None: - args.fieldstart = 16000 - if args.sdssv: - if args.fieldstart is None: - args.fieldstart = 15000 - - if args.release != 'sdsswork': - if args.release not in Access().get_available_releases(): - parser.exit(status=0, message='ERORR: '+args.release+' is not a valid release') - else: - if args.remote is True: - try: - Access().remote() - except: - parser.exit(status=0, message='ERROR: No netrc file found. see https://sdss-access.readthedocs.io/en/latest/auth.html#auth') - - if args.module is not None: - module = load_module() - module('purge') - module('load', args.module) - if args.run2d is None: - args.run2d = load_env('RUN2D') - if args.topdir is None: - args.topdir = load_env('BOSS_SPECTRO_REDUX') - - - args.no_remote = not args.remote - - spplancombin(**vars(args)) - diff --git a/bin/spplan_target.py b/python/boss_drp/prep/spplan_target.py similarity index 66% rename from bin/spplan_target.py rename to python/boss_drp/prep/spplan_target.py index a890b233f..b86804d21 100644 --- a/bin/spplan_target.py +++ b/python/boss_drp/prep/spplan_target.py @@ -1,35 +1,42 @@ #!/usr/bin/env python3 +import boss_drp +from boss_drp.utils import (match, load_env, Splog) +from boss_drp.field import field_dir +from boss_drp.utils import jdate + +splog = Splog() +try: + from sdssdb.peewee.sdss5db.targetdb import database + test = database.set_profile(load_env('DATABASE_PROFILE', default='pipelines')) + from sdssdb.peewee.sdss5db.targetdb import CartonToTarget, Carton, Target + nodb=False +except: + if load_env('DATABASE_PROFILE', default='pipelines').lower() in ['pipelines','operations']: + splog.log('ERROR: No SDSSDB access') + exit() + else: + splog.log('WARNING: No SDSSDB access') + nodb=True +from sdss_semaphore.targeting import TargetingFlags import numpy as np from os import getenv, makedirs import os.path as ptt import sys from astropy.table import Table, vstack +import astropy.time import argparse -from splog import Splog from collections import OrderedDict from pydl.pydlutils import yanny from subprocess import getoutput from datetime import date -import astropy.time -import re from glob import glob from tqdm import tqdm import time -from sdssdb.peewee.sdss5db.targetdb import database -import sdssdb -test = database.set_profile('pipelines') -from sdssdb.peewee.sdss5db.targetdb import CartonToTarget, Carton, Target -splog = Splog() - -idlspec2dVersion = getoutput("idlspec2d_version") -idlutilsVersion = getoutput("idlutils_version") -speclogVersion = getoutput('speclog_version') -todaymjd = str(int(float(astropy.time.Time( str(date.today())).jd)-2400000.5)) - +idlspec2dVersion = boss_drp.__version__ plan_fill = {'TARGID':-1, 'FMJD_LIST':'', 'CATALOGID_LIST':-1, 'FIELDS_LIST':-1, 'MJD_LIST':-1, 'EPOCH_COMBINE': -1} @@ -37,20 +44,6 @@ 'FIELDS_LIST':int, 'MJD_LIST':int , 'EPOCH_COMBINE': int} - -def match(array, value): - if '*' in value: - if '[\w]*' not in value: - value = value.replace('*','[\w]*') - else: - value = '('+value+'$)|('+value+'\W)' - r = re.compile(value, re.IGNORECASE) - ret = np.full(len(array), False) - idx = [i for i, x in enumerate(array) if r.search(x)] - ret[idx] = True - return(ret) - - def clean_nones(array): if array is not None: if isinstance(array, (list, tuple, np.ndarray)): @@ -66,17 +59,19 @@ def clean_nones(array): return(array) def read_SPALL(topdir, run2d, cartons=None, catalogids=None, program=None, - use_catid=False, use_firstcarton=False): + use_catid=False, use_firstcarton=False, usedb=False): """ Read in spall file and filter to only preserve targets matching criteria """ splog.log('Reading spAll') - if ptt.exists(ptt.join(topdir, run2d, 'spAll-'+run2d+'.fits.gz')): + if ptt.exists(ptt.join(topdir, run2d, 'summary','daily','spAll-'+run2d+'.fits.gz')): + spAll = Table.read(ptt.join(topdir, run2d, 'summary','daily', 'spAll-'+run2d+'.fits.gz'), 1) + elif ptt.exists(ptt.join(topdir, run2d, 'spAll-'+run2d+'.fits.gz')): spAll = Table.read(ptt.join(topdir, run2d, 'spAll-'+run2d+'.fits.gz'), 1) elif ptt.exists(ptt.join(topdir, run2d, 'spAll-'+run2d+'.fits')): spAll = Table.read(ptt.join(topdir, run2d, 'spAll-'+run2d+'.fits'), 1) else: - splog.log(ptt.join(topdir, run2d, 'spAll-'+run2d+'.fits')+' is missing') + splog.log(ptt.join(topdir, run2d, 'summary','daily','spAll-'+run2d+'.fits')+' is missing') exit() sel = spAll.copy() selected = Table() @@ -98,18 +93,37 @@ def read_SPALL(topdir, run2d, cartons=None, catalogids=None, program=None, selected = vstack([selected,sel[np.where(match(np.char.decode(spAll['FIRSTCARTON'].data), carton))[0]]]) sel = selected.copy() else: - selected = Table() - catids = [] - for carton in tqdm(cartons,desc='Carton',position=1, leave=False, disable=True): - carton = carton.replace('*','') - tp = CartonToTarget.select(Target.catalogid).join(Carton).switch().join(Target)\ - .where(Carton.carton.contains(carton)).dicts() #.limit(1000) - for t in tqdm(tp, desc='Carton2targ', position=2, leave=False,disable=True): - catids.append(t['catalogid']) - catids = list(set(catids)) - mask = np.in1d(sel['CATALOGID'].data, catids) - selected = sel[np.where(mask)] - sel = selected.copy() + if nodb: + splog.info('Reverting to useDB = False') + usedb = False + if usedb: + selected = Table() + catids = [] + for carton in tqdm(cartons,desc='Carton',position=1, leave=False, disable=True): + carton = carton.replace('*','') + tp = CartonToTarget.select(Target.catalogid).join(Carton).switch().join(Target)\ + .where(Carton.carton.contains(carton)).dicts() #.limit(1000) + for t in tqdm(tp, desc='Carton2targ', position=2, leave=False,disable=True): + catids.append(t['catalogid']) + catids = list(set(catids)) + mask = np.in1d(sel['CATALOGID'].data, catids) + selected = sel[np.where(mask)] + sel = selected.copy() + else: + check_cartons = [] + flags = TargetingFlags(sel['SDSS5_TARGET_FLAGS'].data) + for carton in cartons: + idx = np.where(match(flags.all_carton_names,carton))[0] + check_cartons.extend(np.asarray(flags.all_carton_names)[idx].tolist()) + masks = None + for carton in check_cartons: + tm = flags.in_carton_name(carton) + if masks is None: + masks = tm + else: + masks = [any(tup) for tup in zip(masks, tm)] + sel = sel[masks] + selected = sel if catalogids is not None: selected = Table() cid_col = 'CATALOGID' if use_catid is True else 'SDSS_ID' @@ -195,9 +209,6 @@ def build_plan(spAll, use_catid=False, coadd_mjdstart = None): else: plan['FMJD_LIST']=plan['FMJD_LIST'].astype(str) plan = mod_epoch(plan) - plan['FMJD_LIST']=plan['FMJD_LIST'].astype(str) - - plan = mod_epoch(plan) return(plan) def mod_epoch(plan): @@ -221,26 +232,28 @@ def write_plan(name, plan, topdir, run2d, run1d, mjd_start, mjd_end, coadd_mjdst """ Write plan to file """ - mjd = str(int(float(astropy.time.Time( str(date.today())).jd)-2400000.5)) cid_col = 'CATALOGID' if use_catid is True else 'SDSS_ID' - planfile = ptt.join(topdir, run2d, name, 'spPlanCustom-'+name+'-'+mjd+'.par') + topdir2d = ptt.join(topdir, run2d) + planfile = ptt.join(field_dir(topdir2d, name, custom=True), + 'spPlanCustom-'+name+'-'+jdate.astype(str)+'.par') makedirs(ptt.dirname(planfile), exist_ok=True) plan.meta=OrderedDict({'NAME': name +" # Name of Custom Coadd", 'RUN2D': run2d +" # Run2d Version", 'RUN1D': run1d +" # Run1d Version", 'idlspec2dVersion': idlspec2dVersion +" # Version of idlspec2d when building plan file", - 'idlutilsVersion': idlutilsVersion +" # Version of idlutils when building plan file", + #'idlutilsVersion': idlutilsVersion +" # Version of idlutils when building plan file", 'Rerun_RUN1D': str(rerun1d) +" # 1D anylsis of Custom Coadd", 'Date':time.strftime("%m/%d/%Y-%H:%M",time.localtime())+" # Date of creation", - 'CreateMJD' : mjd +" # MJD of creation", + 'CreateMJD' : jdate.astype(str) +" # MJD of creation", 'MJD_range': '-'.join([str(mjd_start),str(mjd_end)]) +" # Range of MJDs available", 'TARGID': cid_col +" # TARGID column maps to "+cid_col, - 'MJD': mjd +" # MJD of Coadd" + 'MJD': jdate.astype(str) +" # MJD of Coadd", + 'N_MJDs': len(np.unique(plan['EPOCH_COMBINE'])) +" # Number of Unique MJDs" }) if obs is not None: - plan.meta['OBS'] = obs.upper() + plan.meta['OBS'] = obs.upper()+" # Observatory of Coadd" if coadd_mjdstart is not None: - plan.meta['MJDSTART'] = coadd_mjdstart + plan.meta['MJDSTART'] = coadd_mjdstart +" # First Coadd MJD to include " if ptt.exists(planfile): if clobber is False: splog.info('WARNING: Will not over-write plan file: ' + ptt.basename(planfile)) @@ -256,7 +269,7 @@ def write_plan(name, plan, topdir, run2d, run1d, mjd_start, mjd_end, coadd_mjdst def CustomCoadd(name, topdir, run2d, run1d, cartons=None, catalogids=None, obs=None, clobber=False, logfile=False, mjd=None, mjdstart=None, mjdend=None, program=None, rerun1d=False, use_catid=False, use_firstcarton=False, - coadd_mjdstart = None): + coadd_mjdstart = None,usedb=False): """ Run a CustomCoadd Schema """ @@ -269,7 +282,8 @@ def CustomCoadd(name, topdir, run2d, run1d, cartons=None, catalogids=None, obs=N spAll = read_SPALL(topdir, run2d, cartons=cartons, catalogids=catalogids, program=program, use_catid=use_catid, - use_firstcarton = use_firstcarton) + use_firstcarton = use_firstcarton, + usedb = usedb) spAll = mjd_filter(spAll, mjd=mjd, mjdstart=mjdstart, mjdend=mjdend) spAll = zwarn_filter(spAll) if obs is not None: @@ -287,8 +301,9 @@ def CustomCoadd(name, topdir, run2d, run1d, cartons=None, catalogids=None, obs=N plan = build_plan(spAll, use_catid=use_catid, coadd_mjdstart = coadd_mjdstart) if plan is not None: write_plan(name, plan, topdir, run2d, run1d, mjdstart, mjdend,clobber=clobber, - rerun1d=rerun1d, use_catid=use_catid, obs=obs, - coadd_mjdstart=coadd_mjdstart) + rerun1d=rerun1d, use_catid=use_catid, obs=obs, + coadd_mjdstart=coadd_mjdstart) + splog.close() return @@ -310,7 +325,8 @@ def get_key(fp): def batch(topdir, run2d, run1d, DR = False, clobber=False,logfile=None, coaddfile=None, - name=None, use_catid=False, use_firstcarton=False, coadd_mjdstart = None, obs=None): + name=None, use_catid=False, use_firstcarton=False, coadd_mjdstart = None, obs=None, + usedb=False): """ Batch Build all Schema provided by the coaddfile """ @@ -319,7 +335,7 @@ def batch(topdir, run2d, run1d, DR = False, clobber=False,logfile=None, coaddfil if run2d is None: run2d = getenv('RUN2D') if run1d is None: run1d = getenv('RUN1D') if coaddfile is None: - coaddfile = ptt.join(topdir,run2d,'SDSSV_BHM_COADDS.par') + coaddfile = ptt.join(topdir,run2d,'fields','SDSSV_BHM_COADDS.par') COADDS = yanny.read_table_yanny(coaddfile, 'SCHEMA') COADDS.convert_bytestring_to_unicode() @@ -344,32 +360,39 @@ def batch(topdir, run2d, run1d, DR = False, clobber=False,logfile=None, coaddfil run1Schema(Table(coadd), topdir, run2d, run1d, DR=coadd['DR'], obs=obs, clobber=clobber, logfile=logfile, use_catid=bool(coadd['USE_CATID']), use_firstcarton=bool(coadd['USE_FIRSTCARTON']), - coadd_mjdstart = coadd_mjdstart) + coadd_mjdstart = coadd_mjdstart, usedb=usedb) else: run1Schema(COADDS, topdir, run2d, run1d, DR=DR, clobber=clobber, logfile=logfile, use_catid=use_catid, obs=obs, - use_firstcarton=use_firstcarton, coadd_mjdstart = coadd_mjdstart) + use_firstcarton=use_firstcarton, coadd_mjdstart = coadd_mjdstart, + usedb=usedb) return def run1Schema(COADDS, topdir, run2d, run1d, DR=False, clobber=False, logfile=None, - dronly = False, use_catid=False, use_firstcarton=False, obs=None, coadd_mjdstart = None): + dronly = False, use_catid=False, use_firstcarton=False, obs=None, + coadd_mjdstart = None, usedb=False): """ Run all Schema provided by the coaddfile """ if DR: for coadd in tqdm(COADDS[np.where(COADDS['DR'] == 1)[0]], desc='DR Coadd',position=0, leave=False, disable=True): tqdm.write(str(coadd)) - CustomCoadd(coadd['NAME'], topdir, run2d, run1d, cartons=coadd['CARTON'], + name = coadd['NAME'] + if obs is not None: + name = name+'_'+obs + CustomCoadd(name, topdir, run2d, run1d, cartons=coadd['CARTON'], catalogids=coadd['SDSS_ID'], logfile=logfile, mjd=None, mjdstart=None, mjdend=None, clobber=clobber, obs=obs, rerun1d=coadd['RERUN1D'], use_catid=bool(coadd['USE_CATID']), - use_firstcarton=bool(coadd['USE_FIRSTCARTON']), coadd_mjdstart = coadd_mjdstart) + use_firstcarton=bool(coadd['USE_FIRSTCARTON']), + coadd_mjdstart = coadd_mjdstart, usedb=usedb) COADDS = COADDS[np.where(COADDS['DR'] == 0)[0]] if len(COADDS) == 0: splog.info('No Matching Schema') return + topdir2d = ptt.join(topdir, run2d) for coadd in tqdm(COADDS, desc='Coadd',position=0, leave=False, disable=True): tqdm.write(str(coadd)) if clean_nones(clean_nones(coadd['MJD'].data)) is None: @@ -377,11 +400,12 @@ def run1Schema(COADDS, topdir, run2d, run1d, DR=False, clobber=False, logfile=No if obs is not None: name = name+'_'+obs if not clobber: - frun2ds = glob(ptt.join(topdir, run2d, name, 'spPlanCustom-'+name+'-?????.par')) + frun2ds = glob(ptt.join(field_dir(topdir2d, name, custom=True), + 'spPlanCustom-'+name+'-?????.par')) else: frun2ds = [] if len(frun2ds) == 0: - frun2ds = glob(ptt.join(topdir, run2d,'*', 'spPlan2d-*.par')) + frun2ds = glob(ptt.join(field_dir(topdir2d,'*'), 'spPlan2d-*.par')) mjds = [int(ptt.basename(x).split('-')[-1].split('.')[0]) for x in frun2ds] if min(mjds) + coadd['CADENCE'] < max(mjds): mjdstart = min(mjds) @@ -390,16 +414,18 @@ def run1Schema(COADDS, topdir, run2d, run1d, DR=False, clobber=False, logfile=No mjds = [int(ptt.basename(x).split('-')[-1].split('.')[0]) for x in frun2ds] mjdstart = max(mjds)+1 mjdend = mjdstart+coadd['CADENCE'] - if int(todaymjd) > mjdend: + if jdate.astype(int) > mjdend: CustomCoadd(name, topdir, run2d, run1d, cartons=coadd['CARTON'], catalogids=coadd['CATID'], logfile=logfile, mjd=None, mjdstart=mjdstart, mjdend=mjdend, clobber=clobber, rerun1d=coadd['RERUN1D'], use_catid=bool(coadd['USE_CATID']), obs=obs, - use_firstcarton=bool(coadd['USE_FIRSTCARTON']), coadd_mjdstart = coadd_mjdstart) + use_firstcarton=bool(coadd['USE_FIRSTCARTON']), + coadd_mjdstart = coadd_mjdstart, usedb=usedb) else: name = coadd['NAME'] if obs is not None: name = name+'_'+obs - frun2ds = glob(ptt.join(topdir, run2d, name, 'spPlanCustom-'+name+'-?????.par')) + frun2ds = glob(ptt.join(field_dir(topdir2d,name, custom=True), + 'spPlanCustom-'+name+'-?????.par')) if not clobber: mjds = [int(ptt.basename(x).split('-')[-1].split('.')[0]) for x in frun2ds] else: @@ -410,71 +436,13 @@ def run1Schema(COADDS, topdir, run2d, run1d, DR=False, clobber=False, logfile=No if mjds is None: mjds = [] if len(mjds) > 0: - if max(mjds) > int(todaymjd): continue + if max(mjds) > jdate.astype(int): continue CustomCoadd(name, topdir, run2d, run1d, cartons=coadd['CARTON'], catalogids=coadd['CATID'], logfile=logfile, mjd=coadd['MJD'], mjdstart=None, mjdend=None, clobber=clobber, rerun1d=coadd['RERUN1D'], use_catid=bool(coadd['USE_CATID']), obs=obs, - use_firstcarton=bool(coadd['USE_FIRSTCARTON']), coadd_mjdstart = coadd_mjdstart) + use_firstcarton=bool(coadd['USE_FIRSTCARTON']), + coadd_mjdstart = coadd_mjdstart, usedb=usedb) return ######################## -if __name__ == '__main__' : - - parser = argparse.ArgumentParser( - prog=ptt.basename(sys.argv[0]), - description='Build CatalogID Combine Plan') - - group = parser.add_mutually_exclusive_group(required=True) - group.add_argument('--manual', help = 'Manaully run a Coadd Schema (from coaddfile if only name is set)', action ='store_true') - group.add_argument('--batch', help = 'Batch run all active Coadd Schema in batch file located {topdir}/{run2d}/{name}', action='store_true') - - parser.add_argument('--name', help = 'Name of Custom Coadd') - parser.add_argument('--coaddfile', default = 'SDSSV_BHM_COADDS.par', help = 'File of store Coadding Schema') - - parser.add_argument('--topdir', help = 'Override value for the environment variable $BOSS_SPECTRO_REDUX.', required=False) - parser.add_argument('--run2d', help = 'Override value for the environment variable $RUN2D', required=False) - parser.add_argument('--run1d', help = 'Override value for the environment variable $RUN1D', required=False) - parser.add_argument('--clobber', help = "If set, then over-write conflicting plan files", action='store_true', required=False) - parser.add_argument('--logfile', help="File for logging") - - parser.add_argument('--DR', action = 'store_true', help = 'DR/IPL Batch Coadding') - parser.add_argument('--cartons', nargs='*', help = "list of cartons") - parser.add_argument('--catalogids', nargs='*', help = "list of sdss_ids (or catalogids)") - parser.add_argument('--program', nargs='*', help = 'list of programs') - parser.add_argument('--mjd', help = 'Use data from these MJDs.', nargs='*', required=False) - parser.add_argument('--mjdstart', help = 'Starting MJD', required=False) - parser.add_argument('--mjdend', help = 'Ending MJD', required=False) - parser.add_argument('--coadd_mjdstart', help = 'First Coadd MJD to include', required=False) - parser.add_argument('--rerun1d', action = 'store_true', help = 'Provides flag for coadd to be rerun though 1D analysis') - parser.add_argument('--use_catid', '-u', action = 'store_true', help='Uses CatalogID rather then sdss_id') - parser.add_argument('--use_firstcarton', action = 'store_true', help='Use Firstcarton only for carton match (dont look at db)') - parser.add_argument('--lco', help = "Create Plans for LCO", required=False, action='store_true') - parser.add_argument('--apo', help = argparse.SUPPRESS, required=False, action='store_true') - - args = parser.parse_args() - - if args.lco: - obs = 'lco' - elif args.apo: - obs = 'apo' - else: - obs = None - - if args.batch is True: - batch(args.topdir, args.run2d, args.run1d, DR = args.DR, clobber=args.clobber, logfile=args.logfile, obs=obs, - coaddfile=args.coaddfile, name=args.name, use_catid=args.use_catid, use_firstcarton=args.use_firstcarton, - coadd_mjdstart = args.coadd_mjdstart) - else: - if ((args.DR is False) & (args.cartons is None) & (args.mjd is None) & (args.mjdstart is None) & - (args.mjdend is None) & (args.rerun1d is False) & (args.program is None)) : - batch(args.topdir, args.run2d, args.run1d, DR = False, clobber=args.clobber, logfile=args.logfile, obs=obs, - coaddfile=args.coaddfile, name=args.name, use_catid=args.use_catid, use_firstcarton=args.use_firstcarton, - coadd_mjdstart = args.coadd_mjdstart) - else: - CustomCoadd(args.name, args.topdir, args.run2d, args.run1d, cartons=args.cartons, catalogids=args.catalogids, obs=obs, - clobber=args.clobber, logfile=args.logfile, mjd=args.mjd, mjdstart=args.mjdstart, mjdend=args.mjdend, - program=args.program,rerun1d=args.rerun1d, use_catid=args.use_catid, use_firstcarton=args.use_firstcarton, - coadd_mjdstart = args.coadd_mjdstart) - - diff --git a/python/boss_drp/prep/spplan_trace.py b/python/boss_drp/prep/spplan_trace.py new file mode 100644 index 000000000..a1be41a7f --- /dev/null +++ b/python/boss_drp/prep/spplan_trace.py @@ -0,0 +1,599 @@ +#!/usr/bin/env python3 +import boss_drp +from boss_drp.field import field_to_string, Fieldtype, field_dir +from boss_drp.utils import (Sphdrfix, mjd_match, get_dirs, Splog, getcard) +from boss_drp.prep.GetconfSummary import find_confSummary, find_plPlugMapM, get_confSummary +from boss_drp.utils.reject import Reject + +from sdss_access.path import Path +from sdss_access import Access +from sdss_access import __version__ as saver +from tree import __version__ as treever + +from os import getenv, makedirs, rename +import os.path as ptt +from glob import glob +import time +from astropy.table import Table, vstack, Column, unique +from astropy.io import fits +from collections import OrderedDict +from pydl.pydlutils.yanny import read_table_yanny, yanny, write_table_yanny +from pydl import __version__ as pydlVersion +import subprocess +import numpy as np + + +splog = Splog() + +SDSSCOREVersion = getenv('SDSSCORE_VER', default= '') +idlspec2dVersion = boss_drp.__version__ + + +def find_nearest(array, value): + array = np.asarray(array) + idx = (np.abs(array - value)).argmin() + return idx + + +def get_alt_cal(fieldexps, allexps, flav='arc', single_cal=False): + cals = allexps[np.where(allexps['flavor'].data == flav)[0]].copy() + idx_n0 = np.where(cals['fieldid'].data != field_to_string(0))[0] + + if len(idx_n0) != 0: + cals = cals[idx_n0] + + if len(cals) == 0: + return(fieldexps) + + + + if single_cal is True: + texp = np.nanmean(fieldexps['TAI'].data) + idx = find_nearest(cals['TAI'].data, texp) + cal = cals[idx] + idx = np.where(cals['EXPOSURE'].data == cal['EXPOSURE'].data)[0] + cals = cals[idx] + cals['fieldid'] = fieldexps[0]['fieldid'].data + fieldexps = vstack([cals,fieldexps]) + + return(fieldexps) + +def get_master_cal(allexps): + allexps['flavor'] = allexps['flavor'].astype(object) + flats = allexps[np.where(allexps['flavor'].data == 'flat')[0]].copy() + arcs = allexps[np.where(allexps['flavor'].data == 'arc')[0]].copy() + flats.sort('TAI') + arcs.sort('TAI') + if len(arcs) == 0 or len(flats) == 0: + return(None) + marc = arcs[0] + idx = np.where(flats['fieldid'].data == marc['fieldid'].data)[0] + mflat = flats[idx] + if len(mflat) > 1: + idx = find_nearest(mflat['TAI'].data, marc['TAI'].data) + mflat = mflat[idx] + elif len(mflat) == 0: + ffields = np.unique(flats['fieldid'].data) + afields = np.unique(arcs['fieldid'].data) + mfields = np.intersect1d(ffields, afields) + if len(mfields) > 0: + mflat = flats[[fieldid in mfields for fieldid in flats['fieldid']]] + marc = arcs[[fieldid in mfields for fieldid in arcs['fieldid']]] + mflat.sort('TAI') + marc.sort('TAI') + marc = marc[0] + idx = np.where(mflat['fieldid'].data == marc['fieldid'].data)[0] + mflat = mflat[idx] + if len(mflat) >1: + idx = find_nearest(mflat['TAI'].data, marc['TAI'].data) + mflat = mflat[idx] + else: + idx = find_nearest(flats['TAI'].data, marc['TAI'].data) + mflat = flats[idx] + if len(flats) > 0: + flats = allexps[np.where(allexps['EXPOSURE'].data == mflat['EXPOSURE'].data)[0]] + arcs = allexps[np.where(allexps['EXPOSURE'].data == marc['EXPOSURE'].data)[0]] + flats['flavor'] = 'TRACEFLAT' + arcs['flavor'] = 'TRACEARC' + + drop = np.where(allexps['EXPOSURE'].data == flats['EXPOSURE'].data[0])[0] + allexps.remove_rows(drop) + drop = np.where(allexps['EXPOSURE'].data == arcs['EXPOSURE'].data[0])[0] + allexps.remove_rows(drop) + allexps = vstack([flats, arcs, allexps]) + + allexps['flavor'] = allexps['flavor'].astype(str) + return(allexps) + + +def get_key(fp): + filename = ptt.splitext(ptt.splitext(ptt.basename(fp))[0])[0] + int_part = filename.split('-')[2] + try: + return int(int_part) + except: + return int(ptt.splitext(int_part)[0]) + + +def spplan_findrawdata(inputdir): + + fullnames = glob(ptt.join(inputdir,'sdR*.fit')) + fullnames.extend(glob(ptt.join(inputdir,'sdR*.fits'))) + fullnames.extend(glob(ptt.join(inputdir,'sdR*.fit.gz'))) + fullnames.extend(glob(ptt.join(inputdir,'sdR*.fits.gz'))) + fullnames = sorted(fullnames, key=get_key) + fullname_list = [] + keys = [] + for fn in (fullnames): + key = ptt.basename(fn) + while '.' in key: + key = ptt.splitext(key)[0] + if key in keys: + continue + else: + keys.append(key) + fullname_list.append(fn) + return(fullname_list) + + +def spplanTrace(topdir=None, run2d=None, mjd=None, mjdstart=None, mjdend=None, + lco=False, clobber=False, release='sdsswork', logfile=None, no_remote=True, + legacy=False, plates=False, override_manual=False, sav_dir=None, + verbose = False, no_dither = False, mjd_plans=False, flib=False, **extra_kwds): + + if logfile is not None: + splog = globals()['splog'] + splog.open(logfile=logfile, logprint=False) + splog.info('Log file '+logfile+' opened '+ time.ctime()) + else: + if 'splog' in extra_kwds.keys(): + splog = extra_kwds['splog'] + else: + splog = globals()['splog'] + splog.info('spPlanTarget started at '+time.ctime()) + + if lco: + BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_S' + OBS = 'LCO' + else: + BOSS_SPECTRO_DATA='BOSS_SPECTRO_DATA_N' + OBS = 'APO' + + if not flib: + obs_mjdstart= {'LCO':60187, 'APO':59560} + if mjdstart is None: + mjdstart = obs_mjdstart[OBS] + splog.info(f'{OBS} TraceFlat not valid before {mjdstart}... Setting mjdstart = {mjdstart}') + elif int(mjdstart) < obs_mjdstart[OBS]: + mjdstart = obs_mjdstart[OBS] + splog.info(f'{OBS} TraceFlat not valid before {mjdstart}... Resetting mjdstart = {mjdstart}') + else: + mjdstart = mjd + mjdstart = int(mjdstart) + #------------- + # Determine the top-level of the output directory tree + if topdir is None: + topdir = getenv('BOSS_SPECTRO_REDUX') + splog.info('Setting TOPDIR='+topdir) + + if run2d is None: + run2d = getenv('RUN2D') + splog.info('Setting RUN2D='+run2d) + + #---------- + # Read environment variable for BOSS_SPECTRO_DATA for finding raw data files. + + + rawdata_dir = getenv(BOSS_SPECTRO_DATA) + if rawdata_dir is None: + splog.info('ERROR: Must set environment variable BOSS_SPECTRO_DATA') + exit(1) + + speclog_dir = getenv('SPECLOG_DIR') + if speclog_dir is None: + splog.info('ERROR: Must set environment variable SPECLOG_DIR') + exit() + splog.info('Setting SPECLOG_DIR='+speclog_dir) + + #---------- + # Create a list of the MJD directories (as strings) + if mjd_plans: + mjd_plans = [] + plans2d_tmp = glob(ptt.join(field_dir(ptt.join(topdir,run2d),'*'), 'spPlan2d*')) + for plan2d in plans2d_tmp: + if ptt.basename(plan2d).split('.')[0].split('-')[-1] in mjd_plans: + continue + + plan = read_table_yanny(plan2d,'SPEXP') + if plan.meta['OBS'] == OBS: + mjd_plans.append(str(plan.meta['MJD'])) + mjd_plans = list(set(mjd_plans)) + if mjd is not None: + mjd = list(set(mjd_plans) & set(mjd)) + else: + mjd = mjd_plans + + + mjdlist = get_dirs(rawdata_dir, subdir='', pattern='*', match=mjd, start=mjdstart, end=mjdend) + nmjd = len(mjdlist) + splog.info(f'Number of MJDs = {nmjd}') + if nmjd == 0: + splog.info('No Valid MJDs') + return None + plateflavors = ['BHM', 'BHM&MWM', 'EBOSS', 'BOSS'] + #--------------------------------------------------------------------------- + # Loop through each input MJD directory + + dithered_pmjds = [] + for i, mj in enumerate(mjdlist): + thismjd = int(mj) + + if OBS == 'APO': + if thismjd == 59560: + splog.info(f'Skipping {thismjd} for FPS Commissioning') + continue ##FPS Commissioning + if thismjd in [59760,59755,59746,59736,59727,59716,59713]: + splog.info(f'Skipping {thismjd} for 6450Ang Feature') + continue #6450 Feature: + + ftype = Fieldtype(fieldid=None, mjd=mj) + if not legacy: + if ftype.legacy is True: + continue + elif not plates: + if ftype.plates is True: + continue + elif not fps: + if ftype.fps is True: + continue + + inputdir = ptt.join(rawdata_dir, mj) + sphdrfix = Sphdrfix(mj, fps=ftype.fps, obs=OBS, splog=splog) + +# if ftype.legacy or ftype.plates: +# plugdir = ptt.join(speclog_dir, mj) + splog.info('----------------------------') + splog.info(f'MJD: {mj} {ftype} ({i+1} of {len(mjdlist)})') + splog.info('Data directory '+inputdir) + + + # Find all raw FITS files in this directory + fullname = spplan_findrawdata(inputdir) + splog.info(f'Number of FITS files found: {len(fullname)}') + allexps = Table() + if len(fullname) > 0: + #------------------- + # Remove the path from the files names + + shortnames = [] + last_confname = '' + last_conf = None + for i, f in enumerate(fullname): + shortnames.append(ptt.basename(f)) + + #-------------------- + # Find all usefull header keywords + + hdr = fits.getheader(f) + + #----------- + # If mj <= 51813, then set QUALITY=excellent unless this is over-written + # by SPHDRFIX. This is because for the early data, this keyword was + # arbitrarily set to 'unknown', 'bad', 'acceptable', or 'excellent'. + if thismjd < 51813: + hdr.remove('QUALITY', ignore_missing=True, remove_all=True) + + try: + expnum = int(ptt.basename(f).split('-')[-1].split('.')[0]) + except: + splog.info('ERROR: Cannot determine exposure number from filename '+f) + exit(1) + hdrexp = int(getcard(hdr,'EXPOSURE', default = 0)) + if expnum != hdrexp: + splog.info(f'Warning: Exposure number in header({hdrexp}) diagrees with filename ({expnum}) !!') + hdr['EXPOSURE'] = expnum + + if not lco: + if (expnum >= 100053) and (expnum <= 100114): hdr['MJD'] = 55050 + elif (expnum >= 100115) and (expnum <= 100160): hdr['MJD'] = 55051 + elif (expnum >= 100162) and (expnum <= 100186): hdr['MJD'] = 55052 + elif (expnum >= 100272) and (expnum <= 100287): hdr['MJD'] = 55061 + elif (expnum >= 100288) and (expnum <= 100298): hdr['MJD'] = 55062 + elif (expnum >= 100299) and (expnum <= 100304): hdr['MJD'] = 55063 + elif (expnum >= 100371) and (expnum <= 100397): hdr['MJD'] = 55065 + elif (expnum >= 100398) and (expnum <= 100460): hdr['MJD'] = 55066 + elif (expnum >= 100461) and (expnum <= 100468): hdr['MJD'] = 55067 + elif (expnum >= 100469) and (expnum <= 100532): hdr['MJD'] = 55068 + elif (expnum >= 100533) and (expnum <= 100567): hdr['MJD'] = 55069 + elif (expnum >= 100568) and (expnum <= 100653): hdr['MJD'] = 55070 + elif (expnum >= 100655) and (expnum <= 100705): hdr['MJD'] = 55071 + elif (expnum >= 100706) and (expnum <= 100745): hdr['MJD'] = 55072 + elif (expnum >= 100746) and (expnum <= 100781): hdr['MJD'] = 55073 + + hdr = sphdrfix.fix(f, hdr) + FLAVOR = getcard(hdr,'FLAVOR', default='') + if FLAVOR is None: + FLAVOR = '' + if FLAVOR.lower() not in ['arc','flat','calibration']: + continue + #----------- + # Rename 'target' -> 'science', and 'calibration' -> 'arc' + + if (FLAVOR.lower() == 'target'): + FLAVOR = 'science' + elif (FLAVOR.lower() == 'calibration'): + FLAVOR = 'arc' + elif (FLAVOR.lower() == 'bias'): + if verbose: + splog.info('Skipping bias file '+ptt.basename(f)) + continue + elif (FLAVOR.lower() == 'dark'): + if verbose: + splog.info('Skipping dark file '+ptt.basename(f)) + continue + elif (FLAVOR.lower() == ''): + if verbose: + splog.info('Skipping file '+ptt.basename(f)+' with no flavor') + continue + if getcard(hdr,'HARTMANN', default='out').lower() in ['right','left']: + if (FLAVOR.lower() == 'arc'): + if verbose: + splog.info('Skipping Hartmann file '+ptt.basename(f)) + continue + else: + splog.info(f'Skipping {FLAVOR} file '+ptt.basename(f)+' with closed Hartmann Doors') + continue + + reject = Reject(f, hdr) + if reject.check(splog): + continue + + if thismjd > 51576: + bin = False + if getcard(hdr,'COLBIN', default=1) > 1: + splog.info('Skipping binned exposure '+ptt.basename(f)) + continue + elif getcard(hdr,'ROWBIN', default=1) > 1: + splog.info('Skipping binned exposure '+ptt.basename(f)) + continue + + + #----------- + # If the OBSCOMM keyword contains the words "dithered" or "focus", + # then assume this is test data (set QUALITY=test). + obscomm = getcard(hdr,'OBSCOMM', default='') + if ('dithered' in obscomm) or ('focus' in obscomm): + hdr['QUALITY'] = 'test' + + qual = getcard(hdr,'QUALITY', default='excellent') + if (qual != 'excellent') and (qual != "'excellent'"): + splog.info('Warning: Non-excellent quality '+FLAVOR+ + ' file '+ptt.basename(f)+' ('+qual+')') + continue + + if ftype.legacy or ftype.plates: + dither = 'F' + MAPNAME = getcard(hdr,'NAME',default='') + fieldid = getcard(hdr,'PLATEID', default=0) + platetype = getcard(hdr,'PLATETYP', default='') # + if getcard(hdr,'PLATETYP') is not None: + nhdr = hdr.count('PLATETYP') + else: + nhdr = 0 + CONFNAME = '' + + if fieldid == '': fieldid = '0' + if str(int(fieldid)) != MAPNAME.split('-')[0]: + splog.info('Warning: Plate number '+str(int(fieldid))+ + ' flavor '+FLAVOR+ ' inconsistent with map name for' + + ptt.basename(f)) + continue + + if len(MAPNAME) <=4: + """ + MAPNAME should be of the form '000000-51683-01'. + If it only contains the FIELDID ;; (for MJD <= 51454), + then find the actual plug-map file. + """ + plugfile = find_plPlugMapM('*', str(int(MAPNAME)).zfill(4), splog=splog, release=release, no_remote=no_remote) + #plugfile = 'plPlugMapM-'+str(int(MAPNAME)).zfill(4)+'-*.par' + if plugfile is not None: + plugfile = glob(plugfile) + #plugfile = glob(ptt.join(plugdir, plugfile)) + if len(plugfile) == 1: + MAPNAME = '-'.join(ptt.basename(plugfile[0]).split('.')[0].split('-')[1:]) + + if (int(fieldid) == 9438) & (thismjd == 58125) & (int(getcard(hdr,'EXPOSURE',default = 0)) == 258988): + splog.info('Warning: Skipping Exposure because of trail in data') + continue + else: + dither = 'F' + MAPNAME = getcard(hdr,'CONFID', default = '0',noNaN=True) + fieldid = getcard(hdr,'FIELDID', default = 0, noNaN=True) + platetype = 'BHM&MWM' + nhdr = 1 + CONFNAME = MAPNAME + + if (OBS == 'APO'): + if (fieldid in [100520,100542,100981]) and (thismjd == 59733): + splog.info(f'Warning: Skipping Exposure because of inadvertent telescope offset') + continue + if (fieldid == 16165) and (thismjd == 59615): + splog.info('Warning: Skipping Exposure because incorrect design/configuration loaded') + continue + if (fieldid == 20549) and (thismjd == 59623): + splog.info('Warning: Skipping Unguided Exposure') + continue + elif (OBS == 'LCO'): + pass + + if last_confname == CONFNAME: + confile = last_conf + else: + last_confname = CONFNAME + confile = get_confSummary(CONFNAME, obs=OBS, splog=splog, release=release, + sort=False, filter=False, no_remote=no_remote) + last_conf = confile + if len(confile) == 0: + splog.info(f'Warning: Invalid or Missing confSummary for {CONFNAME} for '+str(hdr['EXPOSURE']).strip()) + if fieldid != 0: + continue + + if 'is_dithered' in confile.meta.keys(): + if (confile.meta['is_dithered'] == '1') or (confile.meta['parent_configuration'].strip() != '-999'): + dither = 'T' + if no_dither: + splog.info('Warning: Skipping Dither Exposure '+str(hdr['EXPOSURE']).strip()) + continue + + if 'field_id' in confile.meta.keys(): + if (confile.meta['field_id'].strip() == '-999'): + fieldid = field_to_string(0) + if len(confile.meta['field_id'].strip()) == 0: + fieldid = field_to_string(0) + + if FLAVOR == 'science': + ftype_exp = Fieldtype(fieldid=fieldid, mjd=mj) + if (ftype_exp.engineering): + splog.info('Warning: Skipping Engineering Exposure '+str(hdr['EXPOSURE']).strip()) + continue + + if platetype not in plateflavors: + splog.info('Skipping '+platetype+' field '+str(fieldid)+' exposure '+str(hdr['EXPOSURE']).strip()) + continue + + if FLAVOR == 'science': + try: + ffs = np.asarray(getcard(hdr,'FFS', default = '1 1 1 1 1 1 1 1').split(), dtype=int) + except: + splog.info(f'Warning: {ptt.basename(f)} with undetermined Flat Field Sutter Status') + ffs = np.asarray([0,0,0,0,0,0,0,0]) + if sum(ffs) != 0: + splog.info('Warning: Flat Field Shutters closed for science exposure '+ptt.basename(f)) + continue + elif (FLAVOR == 'arc') or (FLAVOR == 'flat'): + try: + ffs = np.asarray(getcard(hdr,'FFS', default = '0 0 0 0 0 0 0 0').split(), dtype=int) + except: + splog.info(f'Warning: {ptt.basename(f)} with undetermined Flat Field Sutter Status') + ffs = np.asarray([1,1,1,1,1,1,1,1]) + if sum(ffs) != len(ffs): + splog.info(f'Warning: Flat Field Shutters open for {FLAVOR} exposure '+ptt.basename(f)) + continue + + if int(getcard(hdr,'MJD', default = 0)) != thismjd: + splog.info('Warning: Wrong MJD in file '+ptt.basename(f)) + + if FLAVOR.upper() == 'UNKNOWN': + continue + + if ftype.legacy or ftype.plates: + fid = str(fieldid).strip() + else: + fid = field_to_string(fieldid) + exp = Table({'exptime':[np.float32(getcard(hdr,'EXPTIME', default = 0.0))], + 'EXPOSURE':[int(getcard(hdr,'EXPOSURE', default=0))], + 'flavor':[FLAVOR], + 'DITHER':[dither], + 'mapname':[str(MAPNAME)], + 'TAI':[float(getcard(hdr, 'TAI-BEG', default = 0.0))], + 'mjd':[np.int32(thismjd)], + 'fieldid':[fid], + 'confid':[str(CONFNAME)], + 'CONFNAME':[str(CONFNAME)], + 'shortname':[ptt.basename(f)]}) + + allexps = vstack([allexps,exp]) + if len(allexps) == 0: + splog.info('No Calibration Frames for '+mj) + else: + if ftype.legacy or ftype.plates: + fieldmap_col = 'mapname' + else: + fieldmap_col = 'fieldid' + + + manual = 'F' + allexps = get_master_cal(allexps) + if allexps is None: + continue + planfile = 'spPlanTrace-' + mj + '_'+OBS+'.par' + if sav_dir is None: + planfile = ptt.join(topdir, run2d, 'trace', str(thismjd), planfile) + else: + planfile = ptt.join(sav_dir, str(thismjd), planfile) + + + if ftype.legacy: + shape = (4,) + else: + shape = (2,) + + allexps.add_column(Column('', dtype=object, name='name', shape=shape)) + + for i, row in enumerate(allexps): + tnames = allexps[np.where(allexps['EXPOSURE'].data == row['EXPOSURE'])[0]]['shortname'].data + tnames = np.char.replace(tnames, '.gz', '') + names = [] + for cam in ['b1', 'b2', 'r1', 'r2']: + for tn in tnames: + if cam in tn: + names.append(tn) + while len(names) < shape[0]: + names.append('') + allexps[i]['name'] = np.asarray(names) + names = allexps['name'].data + names = np.stack(names.tolist(), axis=0) + names = names.astype(str) + allexps.remove_column('name') + allexps.add_column(Column(names, dtype=str, name='name', shape=shape)) + allexps = unique(allexps, keys='EXPOSURE') + + allexps = allexps['confid','fieldid','mjd','mapname','flavor','exptime','name'] + + + allexps.meta=OrderedDict({ + 'MJD': mj +" # Modified Julian Date", + 'OBS': OBS +" # Observatory", + 'RUN2D': run2d +" # 2D reduction name", + 'idlspec2dVersion': "'"+idlspec2dVersion+"'" +" # idlspec2d Version when building plan", + #'idlutilsVersion': "'"+idlutilsVersion+"'" +" # idlutils Version when building plan", + 'pydlVersion': "'"+pydlVersion+"'" +" # Version of pydl when building plan", + #'speclogVersion': "'"+speclogVersion+"'" +" # speclog Version when building plan", + 'SDSSCOREVersion': "'"+SDSSCOREVersion+"'" +" # SDSSCORE Version when building plan", + 'SDSS_access_Ver': "'"+saver+"'" +" # sdss_access Version when building plan", + 'sdss_tree_Ver': "'"+treever+"'" +" # sdss-tree Version when building plan", + 'SDSS_access_Release': "'"+release+"'" +" # SDSS-access Release Version when building plan", + 'manual': manual +" # Manually edited plan file (T: True, F: False)" + }) + if ptt.exists(planfile): + if clobber is False: + splog.info('WARNING: Will not over-write plan file: ' + ptt.basename(planfile)) + continue + else: + test = read_table_yanny(planfile, 'SPEXP') + if not override_manual: + if 'manual' in test.meta.keys(): + if test.meta['manual'] == 'T': + splog.info('WARNING: Will not over-write manual plan file: ' + ptt.basename(planfile)) + continue + else: + if 'manual' in test.meta.keys(): + if test.meta['manual'] == 'T': + splog.info('Backing up manual plan file to '+ptt.splitext(planfile)[0]+'.bkup') + rename(planfile, ptt.splitext(planfile)[0]+'.bkup') + splog.info('WARNING: Over-writing plan file: ' + ptt.basename(planfile)) + else: + splog.info('Writing plan file '+ ptt.basename(planfile)) + makedirs(ptt.dirname(planfile), exist_ok = True) + allexps.convert_unicode_to_bytestring() + write_table_yanny(allexps, planfile,tablename='SPEXP', overwrite=clobber) + del allexps + splog.info('----------------------------') + splog.info('Successful completion of spplanTrace at '+ time.ctime()) + + if logfile is not None: + splog.close() + return(nmjd) + + diff --git a/python/boss_drp/run/__init__.py b/python/boss_drp/run/__init__.py new file mode 100644 index 000000000..d4dcd6312 --- /dev/null +++ b/python/boss_drp/run/__init__.py @@ -0,0 +1 @@ +from .monitor_job import monitor_job diff --git a/python/boss_drp/run/monitor_job.py b/python/boss_drp/run/monitor_job.py new file mode 100644 index 000000000..f422664fb --- /dev/null +++ b/python/boss_drp/run/monitor_job.py @@ -0,0 +1,27 @@ +import time +from datetime import datetime + +def monitor_job(logger, queue1, pause = 300, jobname = '', return_status=False): + percomp1 = 0 + q1done=False + while percomp1 < 100: + if queue1 is not None and not q1done: + if queue1.get_job_status() is None: + logger.info(f'Failure in slurm queue for {jobname}') + t_percomp1 = queue1.get_percent_complete() if not q1done else 100 + if t_percomp1 != percomp1: + percomp1 = t_percomp1 + logger.info(f'{jobname} {percomp1}% complete at {datetime.today().ctime()}') + elif not q1done: + percomp1 = 100 + status = f'{jobname} not submitted at {datetime.today().ctime()}' + logger.info(status) + if percomp1 == 100 and not q1done: + q1done=True + status = f'Complete {jobname} ' + logger.info(status) + else: + time.sleep(pause) + if return_status: + return logger, status + return logger diff --git a/python/boss_drp/run/slurm_Summary.py b/python/boss_drp/run/slurm_Summary.py new file mode 100644 index 000000000..1accd71e8 --- /dev/null +++ b/python/boss_drp/run/slurm_Summary.py @@ -0,0 +1,419 @@ +#!/usr/bin/env python3 +from boss_drp.utils import dailylogger as dl +from boss_drp.post.fieldmerge import build_fname +from boss_drp.utils import jdate +from boss_drp.run import monitor_job +from boss_drp import daily_dir + +try: + from slurm import queue + noslurm = False + +except: + import warnings + class SlurmWarning(Warning): + def __init__(self, message): + self.message = message + def __str__(self): + return repr(self.message) + warnings.warn('No slurm package installed: printing command to STDOUT for manual run',SlurmWarning) + noslurm = True + queue = None + +from pydl.pydlutils.yanny import yanny +from astropy.io import fits +import astropy.time +from astropy.table import Table + +import os +import os.path as ptt +from datetime import date +import io +import sys +import logging +import numpy as np +import time +import re +from glob import glob +from collections import OrderedDict + + +def check_daily(mod, daily_dir, mjd, log): + nextmjds = yanny(ptt.join(daily_dir, 'etc', 'nextmjd.par')) + mods = np.char.lower(nextmjds["NEXTMJD"]['module'].astype(str)) + indx = np.where(mods == mod.lower())[0] + if len(indx) == 0: + return(False) + else: + return(nextmjds['NEXTMJD']['mjd'][indx].max() > mjd) + +def check_fieldlist(boss_spectro_redux, run2d, spall_mjd): + flist = Table(fits.getdata(ptt.join(boss_spectro_redux, run2d, 'fieldlist-'+run2d+'.fits'),1)) + r = re.compile('Done[\w]*', re.IGNORECASE) + idx = [i for i, x in enumerate(flist['STATUS1D'].data ) if r.search(x)] + flist = flist[idx] + latest_redux = max(flist['MJD']) + return(latest_redux > spall_mjd) + + +class Setup: + def __init__(self): + self.module = None + self.boss_spectro_redux = None + self.run2d = None + self.run1d = None + self.alloc = None + self.nodes = 1 + self.ppn = None + #self.cpus = 1 + self.mem_per_cpu = None + self.walltime = None + self.shared = False + self.partition = None + self.epoch = False + self.custom = None + self.daily = False + self.merge_only = False + self.ndays = None + self.backup = None + self.limit = None + self.n_iter = None + self.no_fieldlist = False + self.skip_specprimary = False + self.update_specprimary = False + self.verbose = False + + def __repr__(self): + return self.__str__() + + def __str__(self): + return (f"boss_spectro_redux: {self.boss_spectro_redux} \n" + + f"run2d: {self.run2d} \n" + + f"run1d: {self.run1d} \n" + + f"epoch: {self.epoch} \n" + + f"custom: {self.custom} \n" + + f"alloc: {self.alloc} \n" + + f"partition: {self.partition} \n" + + f"nodes: {self.nodes} \n" + + f"ppn: {self.ppn} \n" + + #f"cpus: {self.cpus} \n" + + f"mem_per_cpu: {self.mem_per_cpu} \n" + + f"walltime: {self.walltime} \n"+ + f"shared: {self.shared} \n" + + f"merge_only: {self.merge_only} \n" + + f"ndays: {self.ndays} \n" + + f"backup: {self.backup} \n" + + f"limit: {self.limit} \n" + + f"n_iter: {self.n_iter} \n" + + f"no_fieldlist: {self.no_fieldlist} \n" + + f"skip_specprimary: {self.skip_specprimary} \n" + + f"update_specprimary: {self.update_specprimary} \n" + + f"verbose: {self.verbose} \n" + + f"daily: {self.daily}") + + +def slurm_Summary(topdir, run2d, run1d = None, module = None, alloc=None, partition=None, + walltime = '40:00:00', fast = False, mem = None, daily=False, + epoch=False, custom=None, full=False, monitor=False, no_submit = False, + merge_only=True, backup=None, limit=None, n_iter=None, + email_start = False, no_fieldlist=False, skip_specprimary=False, + update_specprimary = False, verbose = False, ndays = None): + + setup = Setup() + setup.module = module + if topdir is None: + setup.boss_spectro_redux = os.getenv('BOSS_SPECTRO_REDUX') + else: + setup.boss_spectro_redux = topdir + if run2d is None: + setup.run2d = os.getenv('RUN2D') + else: + setup.run2d = run2d + if run1d is None: + setup.run1d = setup.run2d + else: + setup.run1d = run1d + setup.daily = daily + setup.epoch = epoch + setup.custom = custom + setup.merge_only = merge_only + setup.backup = backup + setup.limit = limit + setup.n_iter = n_iter + setup.no_fieldlist = no_fieldlist + setup.skip_specprimary = skip_specprimary + setup.update_specprimary = update_specprimary + setup.verbose = verbose + setup.ndays = ndays + + setup.alloc = alloc + if setup.alloc is None: + setup.alloc = os.getenv('SLURM_ALLOC') + setup.partition = partition + if setup.partition is None: + setup.partition = setup.alloc + setup.mem_per_cpu = os.getenv('SLURM_MEM_PER_CPU') + if 'sdss-np' in setup.alloc: + if fast is True: + setup.alloc = 'sdss-np-fast' + setup.shared = True + else: + full = True + setup.shared=False + + if full: + setup.shared = False + setup.ppn = os.getenv('SLURM_PPN') + else: + setup.ppn = 10 + if mem is not None: + setup.mem_per_cpu = mem/setup.ppn + setup.walltime = walltime + + queue1, title, attachements, logger, filelog = build(setup, None, + no_submit=no_submit, + email_start = email_start) + + + if no_submit: + monitor = False + if monitor: + logger = monitor_job(logger, queue1, pause = 300, jobname = title) + subject = _build_subject(setup, jdate.astype(str)) + if not no_submit: + cleanup_bkups(setup, logger) + logger.removeHandler(filelog) + flags = [] + if setup.no_fieldlist: + flags.append('Complete: fieldlist') + if attachements is not None: + for att in attachements: + with open(att) as f: + lines = f.readlines() + lines.reverse() + for line in lines: + if 'Successful completion of fieldmerge' in line: + flags.append('Complete: fieldmerge') + elif 'Successful completion of fieldlist' in line: + flags.append('Complete: fieldlist') + elif 'exception:' in line: + flags.append('Crashed') + elif 'EXITING' in line: + flags.append('Killed') + elif 'Killed' in line: + flags.append('Killed') + if 'Killed' in flags: + subject = 'Killed: '+subject + elif 'Crashed' in flags: + subject = 'Crashed: '+subject + elif ('Complete: fieldmerge' in flags and 'Complete: fieldlist' in flags): + subject = 'Complete: '+subject + else: + subject = '???: '+subject + dl.send_email(subject, ptt.join(daily_dir, 'etc','emails'), + attachements, logger, from_domain="chpc.utah.edu") + +def _build_subject(setup, mjd): + mstr = setup.module if setup.module is not None else setup.run2d + if setup.epoch: + subject = 'BOSS Summary '+mstr +'epoch MJD='+str(mjd) + elif setup.custom is not None: + subject = 'BOSS Summary '+mstr +f' {setup.custom} MJD='+str(mjd) + else: + subject = 'BOSS Summary '+mstr +' MJD='+str(mjd) + return(subject) + +def _build_log_dir(setup, control = False): + daily_dir = os.getenv('DAILY_DIR') + log_folder = ptt.join(daily_dir, "logs", "Summary") + if control: + log_folder = ptt.join(log_folder, 'control') + if setup.epoch: + log_folder = ptt.join(log_folder, 'epoch') + setup.epoch = True + if setup.custom is not None: + log_folder = ptt.join(log_folder,setup.custom) + os.makedirs(log_folder, exist_ok = True) + return(log_folder) + +def cleanup_bkups(setup, logger): + allsky = False if setup.custom is not None else True + spallfile, spalllitefile, splinefile, spAlldatfile = build_fname(setup.boss_spectro_redux, + setup.run2d, dev=False, + epoch=setup.epoch, allsky=allsky, + custom=setup.custom) + bk_files = OrderedDict() + for bf in glob(spallfile+'.bkup-*'): + bk_files[bf] = bf.replace(spallfile+'.bkup-','') + idx = np.argsort(np.asarray(list(bk_files.values()))) + for i, id in enumerate(np.flip(idx)): + key = list(bk_files.keys())[id] + if i > setup.backup -1: + logger.debug(f'Removing Backup: {key} ({i+1})') + os.remove(key) + logger.debug(' '*16+key.replace('spAll-','spAll-lite-')) + os.remove(key.replace('spAll-','spAll-lite-')) + logger.debug(' '*16+key.replace('spAll-','spAllLine-')) + os.remove(key.replace('spAll-','spAllLine-')) + else: + logger.debug(f'Keeping Backup: {key} ({i+1})') + return + +def build(setup, logger, no_submit=False, + email_start = False, obs = None): + if not noslurm: + queue1 = queue() + queue1.verbose = True + else: + queue1 = None + log_folder = _build_log_dir(setup, control = True) + os.makedirs(ptt.join(log_folder), exist_ok = True) + + log = ptt.join(_build_log_dir(setup, control = False), setup.run2d, "pySummary_"+jdate.astype(str)) + + filelog = logging.FileHandler(ptt.join(log_folder, jdate.astype(str)+'.log')) + filelog.setLevel(logging.DEBUG) + filelog.setFormatter(dl.Formatter()) + + if email_start: + elog = dl.emailLogger() + emaillog = elog.log_handler + emaillog.setLevel(logging.DEBUG) + emaillog.setFormatter(dl.Formatter()) + + if logger is None: + logger = logging.getLogger() + console = logging.StreamHandler() + console.setLevel(logging.DEBUG) + console.setFormatter(dl.Formatter()) + logger.addHandler(console) + if email_start: + logger.addHandler(emaillog) + logger.addHandler(filelog) + logger.setLevel(logging.DEBUG) + + + if setup.daily is True: + with fits.open(ptt.join(setup.boss_spectro_redux, setup.run2d, + 'spAll-'+setup.run2d+'.fits')) as ff: + tf = Table(ff[1].data) + latest_mjd = tf['MJD'].max() + + if not check_daily(setup.module, os.getenv('DAILY_DIR'), latest_mjd, logger): + logger.debug('Skipping run') + elog.send('fieldmerge '+args.run2d +' MJD='+jdate.astype(str), + ptt.join(os.getenv('DAILY_DIR'), 'etc','emails'), logger) + return() + if not check_fieldlist(setup.boss_spectro_redux, setup.run2d, latest_mjd): + logger.debug('SpAll-'+setup.run2d+' up to date') + elog.send('fieldmerge '+setup.run2d +' MJD='+jdate.astype(str), + ptt.join(os.getenv('DAILY_DIR'), 'etc','emails'), logger) + return() + + + logger.info('===============================================') + logger.debug(time.ctime()) + + logger.info(setup) + + old_stdout = sys.stdout + new_stdout = io.StringIO() + sys.stdout = new_stdout + + + + title = setup.run2d+'/apo_lco/'+jdate.astype(str)+'/BOSS_Summary' + if setup.epoch: title = title+'/epoch' + if setup.custom is not None: + title = title+'/'+setup.custom + + if setup.nodes > 1: + title = title.replace('/','_') + + + if not noslurm: + queue1.create(label = title, nodes = setup.nodes, ppn = setup.ppn, + walltime = setup.walltime, + alloc = setup.alloc, partition = setup.partition, + mem_per_cpu = setup.mem_per_cpu, shared = setup.shared) + + + job_dir = ptt.join(os.getenv('SLURM_SCRATCH_DIR'),title,queue1.key) + full_cmd = ["#!/usr/bin/env bash"] + full_cmd.append(f"cd {ptt.abspath(ptt.join(log_folder,'..'))}") + if setup.module is not None: + full_cmd.append("module purge ; module load "+setup.module) + full_cmd.append("set -o verbose") + if (setup.custom is None): + if not setup.no_fieldlist: + full_cmd.append(f"fieldlist --create --run1d {setup.run2d} --run2d {setup.run2d}") + fm_cmd = f"fieldmerge --lite --include_bad --XCSAO" + if setup.merge_only: + fm_cmd = fm_cmd+" --merge_only" + if setup.limit is not None: + fm_cmd = fm_cmd+f" --limit {setup.limit}" + if setup.backup is not None: + fm_cmd = fm_cmd+" --bkup" + if setup.epoch: + fm_cmd = fm_cmd+" --epoch" + if setup.custom is not None: + fm_cmd = fm_cmd+f" --allsky --custom {setup.custom}" + if setup.skip_specprimary: + fm_cmd = fm_cmd+" --skip_specprimary" + if setup.update_specprimary: + fm_cmd = fm_cmd+" --update_specprimary" + if setup.verbose: + fm_cmd = fm_cmd+" --verbose" + if setup.n_iter is None: + setup.n_iter = 1 + if setup.ndays is not None: + fm_cmd = fm_cmd+f" --ndays {setup.ndays}" + + dlog_folder = _build_log_dir(setup, control = False) + + + for i in range(setup.n_iter): + if setup.backup is not None: + if i > 0: + full_cmd.append(f'current_time=$(date "+%Y.%m.%d-%H.%M.%S")') + full_cmd.append(f"cp -p {log}.o.log {log}.o.log-$current_time ") + full_cmd.append(f"cp -p {log}.e.log {log}.o.log-$current_time ") + full_cmd.append("") + if setup.n_iter == 1: + full_cmd.append(fm_cmd) + else: + full_cmd.append(fm_cmd) + + with open(ptt.join(job_dir,'run_pySummary'),'w') as r: + for c in full_cmd: + r.write(c+'\n') + if not noslurm: + queue1.append("source "+ptt.join(job_dir,'run_pySummary'), + outfile = log+".o.log", errfile = log+".e.log") + else: + print("source "+ptt.join(job_dir,'run_pySummary')+'>'+log+".o.log 2> "+log+".e.log") + if obs is not None: + obs = np.atleast_1d(obs) + lcoflag = ' --lco' if obs[0].upper() == 'LCO' else '' + epochflag = ' --epoch' if setup.epoch else '' + if not noslurm: + queue1.append(f"plot_QA --run2d {setup.run2d} {lcoflag} {epochflag} ; ") + else: + print(f"plot_QA --run2d {setup.run2d} {lcoflag} {epochflag} ; ") + if not noslurm: + queue1.commit(submit=(not no_submit)) + + output = new_stdout.getvalue() + sys.stdout = old_stdout + logger.info(output) + + + subject = _build_subject(setup, jdate.astype(str)) + + if email_start: + elog.send(subject, ptt.join(os.getenv('DAILY_DIR'), 'etc','emails'), logger) + logger.removeHandler(emaillog) + emaillog.close() + return(queue1, title, [log+".o.log",log+".e.log"], logger, filelog) + + diff --git a/bin/slurm_readfibermap.py b/python/boss_drp/run/slurm_readfibermap.py old mode 100755 new mode 100644 similarity index 50% rename from bin/slurm_readfibermap.py rename to python/boss_drp/run/slurm_readfibermap.py index 14b70cf4e..1e03cb6a2 --- a/bin/slurm_readfibermap.py +++ b/python/boss_drp/run/slurm_readfibermap.py @@ -1,32 +1,42 @@ #!/usr/bin/env python3 +from boss_drp.utils import load_env +from boss_drp.field import field_to_string +from boss_drp.field import field_dir as get_field_dir +from boss_drp import daily_dir -from slurm import queue +import sys +try: + from slurm import queue + noslurm = False +except: + import warnings + class SlurmWarning(Warning): + def __init__(self, message): + self.message = message + def __str__(self): + return repr(self.message) + warnings.warn('No slurm package installed: printing command to STDOUT for manual run',SlurmWarning) + noslurm = True import argparse -from os import getenv, makedirs, popen, chdir, getcwd +from os import getenv, makedirs import os.path as ptt -from datetime import date -import astropy.time -import subprocess -import io -import sys -from load_module import load_module, load_env from pydl.pydlutils.yanny import read_table_yanny -import numpy as np -from field import field_to_string from glob import glob - class Setup: def __init__(self): self.boss_spectro_redux = None self.run2d = None self.alloc = None + self.partition = None self.nodes = 1 self.ppn = None self.mem_per_cpu = None self.walltime = None self.shared = False + self.bundle = False + self.nbundle = None def __repr__(self): return self.__str__() @@ -35,39 +45,50 @@ def __str__(self): return (f"boss_spectro_redux: {self.boss_spectro_redux} \n" + f"run2d: {self.run2d} \n" + f"alloc: {self.alloc} \n" + + f"partition: {self.partition} \n" + f"nodes: {self.nodes} \n" + f"ppn: {self.ppn} \n" + f"mem_per_cpu: {self.mem_per_cpu} \n" + f"walltime: {self.walltime} \n"+ - f"shared: {self.shared}"); + f"shared: {self.shared} \n"+ + f"bundle: {self.bundle} \n"+ + f"nbundle: {self.nbundle}"); -def read_mod(mod,kingspeak=False): - module = load_module() - module('purge') - module('load', mod) - if kingspeak: - module('switch', 'slurm', 'slurm/kingspeak-pipelines') +def setup_run(run2d=None, boss_spectro_redux=None, nbundle = None): setup = Setup() - setup.boss_spectro_redux = load_env('BOSS_SPECTRO_REDUX') - setup.run2d = load_env('RUN2D') - setup.alloc = load_env('SLURM_ALLOC') - setup.nodes = 1 #load_env('SLURM_NODES') - setup.ppn = load_env('SLURM_PPN') - setup.mem_per_cpu = load_env('SLURM_MEM_PER_CPU') - setup.walltime = load_env('SLURM_WALLTIME') - setup.shared = False if kingspeak else True - + if boss_spectro_redux is None: + setup.boss_spectro_redux = load_env('BOSS_SPECTRO_REDUX') + else: + setup.boss_spectro_redux = boss_spectro_redux + if run2d is None: + setup.run2d = load_env('RUN2D') + else: + setup.run2d = run2d + setup.nbundle = nbundle + if nbundle is not None: + setup.bundle = True + if not noslurm: + setup.alloc = load_env('SLURM_ALLOC') + setup.partition = load_env('SLURM_ALLOC') + setup.nodes = 1 #load_env('SLURM_NODES') + setup.ppn = load_env('SLURM_PPN') + setup.mem_per_cpu = load_env('SLURM_MEM_PER_CPU') + setup.walltime = load_env('SLURM_WALLTIME') + setup.shared = True + else: + setup.ppn = 1 return(setup) -def slurm_readfibermap(module='bhm/master', walltime = '40:00:00', mem = 32000, kingspeak=False, +def slurm_readfibermap(run2d=None, boss_spectro_redux=None, walltime = '40:00:00', mem = 32000, mjd=None, mjdstart=None, mjdend=None, obs=['apo','lco'], ppn=20, - clobber=False, dr19 = False): + clobber=False, dr19 = False, nbundle= None): - setup = read_mod(module, kingspeak=kingspeak) + setup = setup_run(run2d=run2d, boss_spectro_redux=boss_spectro_redux, + nbundle=nbundle) if ppn is not None: maxppn = min(20,int(setup.ppn)) @@ -87,26 +108,23 @@ def slurm_readfibermap(module='bhm/master', walltime = '40:00:00', mem = 32000, if mem is not None: setup.mem_per_cpu = mem - - daily_dir = getenv('DAILY_DIR') - if daily_dir is None: daily_dir = ptt.join(getenv('HOME'), "daily") - plan2ds = glob(ptt.join(setup.boss_spectro_redux,setup.run2d, - field_to_string(0).replace('0','?'),'spPlan2d*.par')) - - qu = build(module, plan2ds, setup, clobber=clobber, daily_dir=daily_dir, + fdir = get_field_dir(ptt.join(setup.boss_spectro_redux,setup.run2d), '*') + plan2ds = glob(ptt.join(fdir,'spPlan2d*.par')) + + qu = build(plan2ds, setup, clobber=clobber, daily_dir=daily_dir, mjd=mjd, mjdstart= mjdstart, mjdend=mjdend, obs = obs, dr19 = dr19) -def build(module, plan2ds, setup, clobber=False, daily=False, dr19=False, +def build(plan2ds, setup, clobber=False, daily=False, dr19=False, mjd=None, mjdstart= None, mjdend=None, no_submit=False, - obs = ['apo','lco'], daily_dir=ptt.join(getenv('HOME'), "daily")): + obs = ['apo','lco'], daily_dir=daily_dir): i = 0 title = 'readfibermap_'+setup.run2d #if not daily: log = ptt.join(daily_dir, "logs", "readfibermap", setup.run2d, "readfibermap_") makedirs(ptt.join(daily_dir, "logs", "readfibermap", setup.run2d), exist_ok = True) - if not no_submit: - print(setup) + if noslurm: + no_submit = True for plan2d in plan2ds: thisplan = read_table_yanny(plan2d, 'SPEXP') thisplan.convert_bytestring_to_unicode() @@ -131,71 +149,43 @@ def build(module, plan2ds, setup, clobber=False, daily=False, dr19=False, tobs = 'APO' if tobs.lower() not in obs: continue - if not clobber: if ptt.exists(plan2d.replace('spPlan2d','spfibermap').replace('.par','.fits')): continue if i == 0: if not no_submit: + print(setup) queue1 = queue(key=None, verbose=True) + if setup.nbundle is not None: + setup.bundle = True queue1.create(label = title, nodes = setup.nodes, ppn = setup.ppn, walltime = setup.walltime, alloc=setup.alloc, + partition=setup.partition, + bundle = setup.bundle, nbundle=setup.nbundle, mem_per_cpu = setup.mem_per_cpu, shared = setup.shared) else: queue1 = None -# if not daily: thislog = log+ptt.basename(plan2d).replace('spPlan2d-','').replace('.par','') -# else: -# thislog = plan2d.replace('spPlan2d-','spfibermap').replace('.par','') drf = '' if not dr19 else ' --dr19' - thiscmd = (f"module purge ; module load {module} ; cd {ptt.dirname(plan2d)} ; " + - f"readfibermaps.py --spplan2d {ptt.basename(plan2d)} {drf}") + thiscmd = (f"cd {ptt.dirname(plan2d)} ; " + + f"readfibermaps --spplan2d {ptt.basename(plan2d)} {drf}") if clobber: thiscmd = thiscmd+' --clobber' if not no_submit: queue1.append(thiscmd, outfile = thislog+".o.log", errfile = thislog+".e.log") + elif noslurm: + print(thiscmd) i = i+1 if i > 0: if not no_submit: queue1.commit(hard=True,submit=True) - return(queue1) + return(queue1) + else: + print('No fibermaps Built') + return(None) -if __name__ == "__main__": - parser = argparse.ArgumentParser(description='Create daily field merge slurm job') - parser.add_argument('--module', '-m', default = 'bhm/master', help = 'module file to use (ex bhm/master[default] or bhm/v6_0_9)') - parser.add_argument('--clobber', action='store_true', help='Clobber spfibermaps') - parser.add_argument('--apo', action='store_true', help='run apo') - parser.add_argument('--lco', action='store_true', help='run lco') - parser.add_argument('--dr19', action='store_true', help='Limit targeting flags to DR19 cartons') - - mjdgroup = parser.add_argument_group('Select MJDs') - mjdgroup.add_argument('--mjd', nargs='*', help='MJD dates to reduce; default="*"', type=int) - mjdgroup.add_argument('--mjdstart', help='Starting MJD', default=None, type=int) - mjdgroup.add_argument('--mjdend', help='Ending MJD', default=None, type=int) - - slurmgroup = parser.add_argument_group('Slurm Options') - slurmgroup.add_argument('--kingspeak', action='store_true', help='Use kingspeak rather then notchpeak') - slurmgroup.add_argument('--mem_per_cpu', help='Memory allocated per CPU', type=str) - slurmgroup.add_argument('--walltime', help='Wall time in hours', type=str) - slurmgroup.add_argument('--ppn', help='Number of processors per node', type=int) - - args = parser.parse_args() - - obs = [] - if args.apo: - obs.append('apo') - if args.lco: - obs.append('lco') - if len(obs)== 0: - obs = ['apo','lco'] - - - slurm_readfibermap(module=args.module, walltime = args.walltime, mem = args.mem_per_cpu, - kingspeak=args.kingspeak, mjd=args.mjd, mjdstart = args.mjdstart, - mjdend = args.mjdend, obs = obs, ppn = args.ppn, clobber =args.clobber, - dr19 = args.dr19) diff --git a/python/boss_drp/run/slurm_runfix.py b/python/boss_drp/run/slurm_runfix.py new file mode 100644 index 000000000..c9b6255b0 --- /dev/null +++ b/python/boss_drp/run/slurm_runfix.py @@ -0,0 +1,204 @@ + +from boss_drp.utils.daily_log import (summary, daily_log_to_file) +from boss_drp.utils.daily_log.Flag import (stopped, Error_warn, running, NoExp) +from boss_drp.field import field_dir +from boss_drp import daily_dir +from boss_drp.run.uubatchpbs import make_run_cmd +from boss_drp.utils import load_env + +try: + from slurm import queue + noslurm = False +except: + import warnings + class SlurmWarning(Warning): + def __init__(self, message): + self.message = message + def __str__(self): + return repr(self.message) + warnings.warn('No slurm package installed: printing command to STDOUT/logfile for manual run',SlurmWarning) + noslurm = True + +import numpy as np +import os.path as ptt +import datetime + +def _check_step(step, cf): + if step in ['plans','spfibermap']: + cf = 'all' + elif step == 'spreduce2D': + cf = 'spec2d' + elif step == 'specombine': + cf = 'comb' + elif step in ['spreduce1d','spXCSAO']: + cf = 'spec1d' + elif step == ['Fieldlist']: + cf = 'post' + elif step == ['Fieldmerge']: + cf = 'merge' + elif step == ['Reformat']: + cf = 'reformat' + elif step == 'SpCalib': + cf = 'spcalib' + else: + pass + return(cf) + +def build_fix(topdir,run2d,run1d, mjd, obs, directory, epoch = False, + full=False, running = False): + mjds = np.atleast_1d(mjd) + obs = np.atleast_1d(obs).tolist() + obs = '???' if len(obs) > 1 else obs[0].upper() + redux = [] + for mjd in mjds: + _df = summary(directory, run2d, epoch = epoch, error=True, + mjd = mjd, obs = obs, html = False) + if _df is None: + return(redux) + ef = ' --epoch'if epoch else '' + for i, row in _df.iterrows(): + cmd = [] + cff = ' --reset --remove_redux' if full else '' + if full: + cf = 'all' + else: + cf = None + for step in ['plans','spfibermap','spreduce2D','specombine', + 'spreduce1d','spXCSAO','Fieldlist','Fieldmerge', + 'Reformat','SpCalib']: + flagged = [f'color:{stopped.color}', f'color:{Error_warn.color}'] + if running: + flagged.append(f'color:{running.color}') + + for f in flagged: + if f in row[step]: + cf = _check_step(step, cf) + if cf is not None: + break + if cf is not None: + break + if cf is None: + continue + + clean_cmd = f"clean_run --clean {cf} --topdir {topdir} --run2d {run2d} {ef}{cff} --field {row['Field']} --mjd {row['MJD']}" + + fredux = ptt.join(field_dir(ptt.join(topdir,run2d),row['Field']),ef, + f"redux-{row['Field']}-{row['MJD']}") + with open(fredux,'r') as f: + fullcmd = f.readlines() + fullcmd = [x.replace('\n','') for x in fullcmd] + cmd = [] + cmd.append('# Auto-generated batch file '+datetime.datetime.now().strftime("%c")) + + for line in fullcmd: + if cmd[-1] == 'set -o verbose': + cmd.append('') + cmd.append(clean_cmd) + + if ('cd ' in line or 'export' in line or + '#- Echo commands to make debugging easier' in line or + 'healpix' in line or 'set -o verbose' in line): + cmd.append(line) + elif len(line) == 0: + cmd.append(line) + elif 'readfibermaps' in line and cf in ['all']: + cmd.append(line) + elif ('spec2d' in line or 'spreduce2d' in line) and cf in ['all','spec2d']: + cmd.append(line) + elif (('specombine' in line or 'spPlancombepoch' in line or 'rm_combine_script' in line) and + cf in ['all','spec2d','comb']): + cmd.append(line) + elif ('spec1d' in line or 'spreduce1d_empca' in line or + 'run_PyXCSAO' in line) and cf in ['all','spec2d','comb','spec1d']: + cmd.append(line) + elif (('Field List' in line or 'fieldlist' in line) and + cf in ['all','spec2d','comb','spec1d','post']): + cmd.append(line) + elif (('Field spAll' in line or 'fieldmerge' in line) and + cf in ['all','spec2d','comb','spec1d','post','merge']): + cmd.append(line) + elif (('final spectra file' in line or 'spSpec_reformat' in line) and + cf in ['all','spec2d','comb','spec1d','post','merge','reformat']): + cmd.append(line) + elif (('Spectro-Photometric' in line or 'spcalib_qa' in line) and + cf in ['all','spec2d','comb','spec1d','post','merge','reformat','spcalib']): + cmd.append(line) + + with open(ptt.join(ptt.dirname(fredux),ptt.basename(fredux.replace('redux','redux_fix'))),'w') as r: + for c in cmd: + r.write(c+'\n') + redux.append(ptt.join(ptt.dirname(fredux),ptt.basename(fredux.replace('redux','redux_fix')))) + return(redux) + + +def slurm_runfix(topdir, run2d, run1d, mjd, obs,full=False, + epoch=False, custom=None, running=False, + nosubmit = False, nbundle = None, nodes = 1, + shared=False, walltime = '24:00:00', no_write=False): + if noslurm: + no_write= True + if epoch: + dir_ = 'epoch' + elif custom is not None: + dir_ = custom + else: + dir_ = 'daily' + + + obsstr = '_'.join(obs).upper() + mjdstr = str(mjd[0]) if len(mjd) == 1 else 'batch' + if custom is None: + if not epoch: + label = f'{run2d}/{obsstr}/{mjdstr}/daily/fix/' + else: + label = f'{run2d}/{obsstr}/{mjdstr}/epoch/fix/' + else: + if not epoch: + label = f'{run2d}/{obsstr}/{mjdstr}/{custom}/fix/' + else: + label = f'{run2d}/{obsstr}/{mjdstr}/epoch/{custom}/fix/' + + if nodes > 1: + label = label.replace('/','_') + + + ppn = load_env('SLURM_PPN') + alloc = load_env('SLURM_ALLOC') + partition = alloc + mem_per_cpu = load_env('SLURM_MEM_PER_CPU') + if shared: + ppn = 10 + + directory = ptt.join(daily_dir, 'logs', 'Status', dir_, run2d) + redux_list = [] + for mjd in mjd: + for ob in obs: + + daily_log_to_file(ob, mjd, topdir=topdir, run2d=run2d, + run1d=run1d, redux=None, html_log=None, + summary=True, epoch=epoch, + custom = custom) + redux_list.extend(build_fix(topdir, run2d, run1d, mjd, ob, + directory, epoch = epoch, full = full, + running=running)) + if len(redux_list) == 0: + print(f"No Failures for {mjd} {','.join(obs)}") + return + + if not no_write: + queue1 = queue(key=None, verbose=True) + bundle = True if nbundle is not None else False + queue1.create(label=label, nodes=str(nodes), ppn=str(ppn), + partition = partition, alloc=alloc, shared=shared, + walltime=walltime, mem_per_cpu=mem_per_cpu, + nbundle = nbundle, bundle = bundle,) + rlist = redux_list.copy() + for i in range(len(redux_list)): + cmd, log, err = make_run_cmd(redux_list[0]) + redux_list.pop(0) + if not no_write: + queue1.append(cmd, outfile = log, errfile = err) + else: + print(f'{cmd} > {log} 2> {err}') + if not no_write: + queue1.commit(hard=True, submit=(not nosubmit)) diff --git a/python/boss_drp/run/slurm_sos.py b/python/boss_drp/run/slurm_sos.py new file mode 100644 index 000000000..ab218a8a1 --- /dev/null +++ b/python/boss_drp/run/slurm_sos.py @@ -0,0 +1,175 @@ +#!/usr/bin/env python3 +from boss_drp.utils import load_env +from boss_drp.utils import jdate +from boss_drp import daily_dir + +import sys +try: + from slurm import queue + noslurm = False +except: + import warnings + class SlurmWarning(Warning): + def __init__(self, message): + self.message = message + def __str__(self): + return repr(self.message) + warnings.warn('No slurm package installed: printing command to STDOUT for manual run',SlurmWarning) + noslurm = True +from os import getenv, makedirs, popen, chdir, getcwd +import os.path as ptt +from datetime import date, datetime +import astropy.time +import subprocess +import io +import numpy as np +from glob import glob + + + +class Setup: + def __init__(self): + self.boss_spectro_redux = None + self.run2d = None + self.alloc = None + self.nodes = None + self.ppn = None + self.mem_per_cpu = None + self.walltime = None + self.shared = False + self.flags = [] + self.bundle = False + self.nbundle = None + + def __repr__(self): + return self.__str__() + + def set_flags(self, no_reject = False, clobber_fibermap = False, + no_sdssv_sn2 = False, no_arc2trace = False, forcea2t = False): + self.flags = ['--utah', '--nodb'] + if no_reject: + self.flags.append('--no_reject') + if clobber_fibermap: + self.flags.append('-f') + if no_sdssv_sn2: + self.flags.append('--no_sdssv_sn2') + if no_arc2trace: + self.flags.append('-a') + if forcea2t: + self.flags.append('-o') + + def __str__(self): + return (f"boss_spectro_redux: {self.boss_spectro_redux} \n" + + f"run2d: {self.run2d} \n" + + f"alloc: {self.alloc} \n" + + f"nodes: {self.nodes} \n" + + f"ppn: {self.ppn} \n" + + f"mem_per_cpu: {self.mem_per_cpu} \n" + + f"walltime: {self.walltime} \n"+ + f"shared: {self.shared} \n"+ + f"bundle: {self.bundle} \n"+ + f"nbundle: {self.nbundle}"); + + +def read_mod(nbundle = None): + setup = Setup() + setup.boss_spectro_redux = load_env('BOSS_SPECTRO_REDUX') + setup.run2d = load_env('RUN2D') + setup.nbundle = nbundle + if setup.nbundle is not None: + setup.bundle = True + if not noslurm: + setup.alloc = load_env('SLURM_ALLOC') + setup.nodes = int(load_env('SLURM_NODES')) + setup.ppn = int(load_env('SLURM_PPN')) + setup.mem_per_cpu = load_env('SLURM_MEM_PER_CPU') + setup.walltime = load_env('SLURM_WALLTIME') + setup.shared = True + setup.ntasks = int(load_env('SLURM_PPN'))//2 + else: + setup.nodes = 1 + setup.ppn = 1 + return(setup) + +def slurm_SOS(walltime = '40:00:00', mem = None, nbundle = None, + mjd=None, mjdstart=None, mjdend=None, obs=['apo','lco'], + ppn=20, no_submit=False, nodes=1, **flags): + + setup = read_mod(nbundle = nbundle) + if nodes is not None: + if nodes > setup.nodes: + print(f'Resetting to nodes to {setup.nodes} due to cluster configuration') + else: + setup.nodes = nodes + + if ppn is not None: + if ppn > int(setup.ppn): + print(f'Resetting ppn to {setup.ppn} due to cluster configuration') + else: + setup.ppn = ppn + + if walltime is not None: + setup.walltime = walltime + if mem is not None: + setup.mem_per_cpu = mem + + qu = build(setup, daily_dir=daily_dir, mjd=mjd, mjdstart= mjdstart, + mjdend=mjdend, obs = obs, no_submit=no_submit, **flags) + +def build(setup, mjd=None, mjdstart= None, mjdend=None, no_submit=False, + obs = ['apo','lco'], daily_dir=daily_dir, **flags): + if noslurm: + no_submit = True + i = 0 + title = 'SOS' + log = ptt.join(daily_dir, "logs", "sos") + makedirs(log, exist_ok = True) + + if mjdstart is not None: + if mjdend is None: + mjdend = jdate.astype(int) + mjd = np.arange(mjdstart, mjdend+1) + + if mjd is None: + mjd = jdate.astype(int) + + maxppn = len(mjd)*len(obs) #*len(['b','r']) + if maxppn < setup.nodes*setup.ntasks: + setup.ppn = maxppn + setup.ntasks = 2 * maxppn + + if not no_submit: + print(setup) + setup.set_flags(**flags) + + for mj in mjd: + for ob in obs: + for cam in ['j']: #'b','r']: + if i == 0: + if not no_submit: + queue1 = queue(key=None, verbose=True) + if setup.nbundle is not None: + setup.bundle = True + queue1.create(label = title, nodes = setup.nodes, + ppn = setup.ppn, bundle = setup.bundle, + nbundle = setup.nbundle, + walltime = setup.walltime, alloc=setup.alloc, + cpus=setup.ntasks,shared = setup.shared, + mem_per_cpu = setup.mem_per_cpu) + else: + queue1 = None + + thislog = ptt.join(log, f'SOS-{ob}-{cam}-{mj}') + thiscmd = (f"export OBSERVATORY={ob.upper()} ; " + + f"SOS -{cam} -m {mj} "+" ".join(setup.flags)) + + if not no_submit: + queue1.append(thiscmd, outfile = thislog+".o.log", errfile = thislog+".e.log") + else: + print(thiscmd) + i = i+1 + if i > 0: + if not no_submit: + queue1.commit(hard=True,submit=True) + + return(queue1) diff --git a/python/boss_drp/run/slurm_spTrace.py b/python/boss_drp/run/slurm_spTrace.py new file mode 100755 index 000000000..384d1141e --- /dev/null +++ b/python/boss_drp/run/slurm_spTrace.py @@ -0,0 +1,164 @@ +#!/usr/bin/env python3 +from boss_drp.prep.spplan_trace import spplanTrace +from boss_drp.utils import load_env + +import sys +try: + from slurm import queue + noslurm = False +except: + import warnings + class SlurmWarning(Warning): + def __init__(self, message): + self.message = message + def __str__(self): + return repr(self.message) + warnings.warn('No slurm package installed: printing command to STDOUT for manual run',SlurmWarning) + noslurm = True +from os import path as ptt +import numpy as np +import datetime + + +run2d = None +topdir = None + + +class Setup: + def __init__(self): + self.boss_spectro_redux = None + self.run2d = None + self.alloc = None + self.nodes = 1 + self.ppn = None + self.mem_per_cpu = None + self.walltime = None + self.shared = False + self.partition = None + self.bundle = None + self.nbundle = None + + def __repr__(self): + return self.__str__() + + def __str__(self): + return (f"boss_spectro_redux: {self.boss_spectro_redux} \n" + + f"run2d: {self.run2d} \n" + + f"alloc: {self.alloc} \n" + + f"partition: {self.partition} \n" + + f"nodes: {self.nodes} \n" + + f"ppn: {self.ppn} \n" + + f"mem_per_cpu: {self.mem_per_cpu} \n" + + f"walltime: {self.walltime} \n"+ + f"shared: {self.shared} \n"+ + f"bundle: {self.bundle} \n"+ + f"nbundle: {self.nbundle}"); + + +def run_spTrace(mjd, obs, run2d, topdir, nodes = 1, clobber=False, alloc='sdss-np', + partition =None, debug = False, skip_plan=False, no_submit=False, + nbundle = None, daily=False, walltime = None, maxjobs = None): + setup = Setup() + setup.boss_spectro_redux = topdir + setup.run2d = run2d + setup.nodes = nodes + setup.alloc = alloc + setup.nbundle = nbundle + if setup.nbundle is not None: + setup.bundle = True + if partition is None: + setup.partition = alloc + else: + setup.partition = partition + + slurmppn = int(load_env('SLURM_PPN')) + setup.mem_per_cpu = int(load_env('SLURM_MEM_PER_CPU')) + setup.ppn = min(slurmppn,max(len(mjd),4)) + setup.shared = True + if maxjobs is not None: + if maxjobs < setup.ppn: + setup.ppn = maxjobs + setup.shared = False + if walltime is None: + setup.walltime = '72:00:00' + else: + setup.walltime = walltime +# setup.mem_per_cpu = 7500 + queue1 = build(mjd, obs, setup, clobber=clobber, skip_plan=skip_plan, + debug = debug, no_submit=no_submit, daily=daily) + +def build(mjd, obs, setup, clobber=False, no_submit=False, skip_plan=False, + debug = False, daily=False): + mjd = np.atleast_1d(mjd) + if obs.lower() == 'lco': + lco = True + else: + lco = False + if len(mjd) > 2: + mjdstr = f'{np.min(mjd)}-{np.max(mjd)}' + mjd = mjd.astype(str).tolist() + else: + mjd = mjd.astype(str).tolist() + mjdstr = f'{"_".join(mjd)}' + + label = f'{setup.run2d}/{obs.upper()}/{mjdstr}/run_spTrace' + + + queue1 = None + + if not skip_plan: + nmjds = spplanTrace(topdir=setup.boss_spectro_redux,run2d=setup.run2d, + mjd=mjd, lco=lco, mjd_plans=(not daily)) + print(nmjds) + if nmjds is None: + print('No Valid MJDs... skipping spTrace') + return(None, None, None) + i = 0 + for mj in mjd: + if not ptt.exists(ptt.join(setup.boss_spectro_redux,setup.run2d,'trace',f'{mj}')): + continue + if not daily: + if not ptt.exists(ptt.join(setup.boss_spectro_redux,setup.run2d,'trace',f'{mj}',f"spPlanTrace-{mj}_{obs.upper()}.par")): + continue + idl = f'spbuild_traceflat, plan2d="spPlanTrace-{mj}_{obs.upper()}.par"' + if debug: + idl = idl +', /debug' + + cmd = [] + cmd.append('# Auto-generated batch file '+datetime.datetime.now().strftime("%c")) + cmd.append("#- Echo commands to make debugging easier") + cmd.append("set -o verbose") + + script = f"idl -e '{idl}'" + cmd.append(script) + cmd.append(f"boss_arcs_to_traces --mjd {mj} --obs {obs.lower()} --vers {setup.run2d} --threads 4") + cmdfile = ptt.join(setup.boss_spectro_redux,setup.run2d,'trace',f'{mj}',f"run_spTrace_{mj}_{obs.upper()}") + with open(cmdfile,'w') as r: + for c in cmd: + r.write(c+'\n') + if i == 0 and not no_submit: + if setup.nodes > 1: + label = label.replace('/','_') + print(setup) + queue1 = queue(verbose=True) + if setup.nbundle is not None: + setup.bundle = True + queue1.create(label=label,nodes=setup.nodes,ppn=setup.ppn, + shared=setup.shared, walltime=setup.walltime, + alloc=setup.alloc, partition=setup.partition, + mem_per_cpu = setup.mem_per_cpu, + bundle = setup.bundle, nbundle = setup.nbundle) + if not no_submit: + queue1.append('source '+cmdfile,outfile = cmdfile+".o.log", + errfile = cmdfile+".e.log") + elif noslurm: + print('source '+cmdfile) + i = i+1 + if len(mjd) == 0 or queue1 is None: + print('No Valid MJDs... skipping spTrace') + no_submit = True + if not no_submit: + queue1.commit(hard=True,submit=True) + return(queue1, cmdfile+".o.log", cmdfile+".e.log") + else: + return(None, None, None) diff --git a/python/boss_drp/run/uubatchpbs.py b/python/boss_drp/run/uubatchpbs.py new file mode 100755 index 000000000..ea9677330 --- /dev/null +++ b/python/boss_drp/run/uubatchpbs.py @@ -0,0 +1,586 @@ +#!/usr/bin/env python3 +from boss_drp.utils.dailylogger import Formatter, emailLogger +from boss_drp.utils import get_dirs, load_env, mjd_match +from boss_drp.field import field_dir, field_to_string +from boss_drp.utils import jdate +from boss_drp import daily_dir + +try: + from slurm import queue + noslurm = False +except: + import warnings + class SlurmWarning(Warning): + def __init__(self, message): + self.message = message + def __str__(self): + return repr(self.message) + warnings.warn('No slurm package installed: printing command to STDOUT/logfile for manual run',SlurmWarning) + noslurm = True +import argparse +from os import getenv +import os.path as ptt +from glob import glob +from pydl.pydlutils.yanny import yanny, read_table_yanny +import sys +import numpy as np +import io +import datetime +import astropy.time +import pandas as pd +import logging + +if getenv('SLURM_VERS') == 'notchpeak': + share = True +else: + share = False + + +def build_cmd(topdir=None,run2d=None,run1d=None,idlutils_1d=None, + no_reject=False, MWM_fluxer=False, map3d='bayestar15', + noxcsao=False, skip_specprimary=False, + no_merge_spall=False, skip2d=False, onestep_coadd=False, + fibermap_clobber=False, lco=False, plan2d=None, plancomb=None, + fieldmjd=None, post_idl=False, only1d=False, daily=False, + custom=None, allsky=False, epoch=False, saveraw=False, debug=False, + release = None, remote = False, force_arc2flat=False, + no_db=False, fast_no_db=False,no_healpix=False, dr19=False, + custom_coadd_only=False, custom_1dpost=False, redux=None, a2t=False, **kwargs): + + field = fieldmjd.split('-')[-2] + mjd = fieldmjd.split('-')[-1] + + cmd = [] + cmd.append('# Auto-generated batch file '+datetime.datetime.now().strftime("%c")) + + topdir2d = ptt.join(topdir, run2d) + + if epoch is False: + if custom is None: + cmd.append('cd '+ field_dir(topdir2d, field)) + else: + if allsky is False: + cmd.append('cd '+ptt.join(field_dir(topdir2d, field, custom=True),field)) + fieldmjd = field+'-'+mjd + else: + cmd.append('cd '+ field_dir(topdir2d, field, custom=True)) + fieldmjd = field+'-'+mjd + else: + if custom is None: + cmd.append('cd '+ptt.join(field_dir(topdir2d, field),'epoch')) + else: + if allsky is False: + cmd.append('cd '+ptt.join(field_dir(topdir2d, field, custom=True),field,'epoch')) + fieldmjd = field+'-'+mjd + else: + cmd.append('cd '+ptt.join(field_dir(topdir2d, field, custom=True),'epoch')) + fieldmjd = field+'-'+mjd + if not allsky: + if lco: + cmd.append('export BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_S') + cmd.append('export GCAM_DATA=$GCAM_DATA_S') + else: + cmd.append('export BOSS_SPECTRO_DATA=$BOSS_SPECTRO_DATA_N') + cmd.append('export GCAM_DATA=$GCAM_DATA_N') + + cmd.append('') + cmd.append("#- Echo commands to make debugging easier") + cmd.append("set -o verbose") + + spreduce2d_keys='' + rm_combine_keys='/xyfit, /loaddesi,' + spec1d_keys='' + xcsao_keys='' + + spcalib_keywords = '' + spSpecRef_key = "" # " --lsdr10" + flist_key = "" + fmerge_key = " --include_bad" + if run2d.lower() == 'master': + spSpecRef_key =" --lsdr10" + + if epoch: + spSpecRef_key = spSpecRef_key + " --epoch" + flist_key = flist_key + " --epoch" + fmerge_key = fmerge_key + " --epoch" + rm_combine_keys = rm_combine_keys + " /epoch," + spec1d_keys = spec1d_keys + " /epoch," + xcsao_keys = xcsao_keys + " --epoch" + spcalib_keywords = spcalib_keywords + " /epoch," + + fmap_keywords = '' + if fibermap_clobber: + fmap_keywords = fmap_keywords + " --clobber" + if no_db: + fmap_keywords = fmap_keywords + " --no_db" + if fast_no_db: + fmap_keywords = fmap_keywords + " --fast" + if release is not None: + fmap_keywords = fmap_keywords + " --release "+release + if remote is not None: + fmap_keywords = fmap_keywords + " --remote" + + if MWM_fluxer: + spreduce2d_keys = spreduce2d_keys + ' /MWM_fluxer,' + rm_combine_keys = rm_combine_keys + ' /MWM_fluxer,' + spreduce2d_keys = spreduce2d_keys + f' map3d={map3d},' + if saveraw: + spreduce2d_keys = spreduce2d_keys + ' /saveraw,' + if debug: + spreduce2d_keys = spreduce2d_keys + ' /debug,' + if no_reject: + rm_combine_keys = rm_combine_keys + ' /no_reject,' + if onestep_coadd: + rm_combine_keys = rm_combine_keys + ' /onestep_coadd,' + if a2t: + spreduce2d_keys = spreduce2d_keys + ' /force_arc2trace,' + if not noxcsao: + fmerge_key = fmerge_key +" --XCSAO" + if skip_specprimary: + fmerge_key = fmerge_key +" --skip_specprimary" + + + if custom is not None: + customkey = ' custom='+custom+',' + pycustomkey = ' --custom '+custom + if allsky: + customkey = customkey + ' /allsky,' + pycustomkey = ' --allsky' + spcalib_keywords = spcalib_keywords + ' /allsky,' + + rm_combine_keys = rm_combine_keys + customkey + spec1d_keys = spec1d_keys + customkey + fmerge_key = fmerge_key + pycustomkey + flist_key = flist_key + pycustomkey + spSpecRef_key = spSpecRef_key + pycustomkey + + if epoch: + skip2d = True + if only1d: + skip2d = True + cmd.append('') + cmd.append('#- The real work') + + + if not skip2d: + for plan in plan2d: + plan = plan.strip("'") + if not dr19: + cmd.append(f"readfibermaps --spplan2d {plan}") + else: + cmd.append(f"readfibermaps --spplan2d {plan} --dr19") + cmd.append('touch '+plan.replace('.par', '.started').replace('spPlan2d','spec2d')) + cmd.append("echo 'spreduce2d,"+spreduce2d_keys+' "'+plan+'"'+"' | idl") + cmd.append('touch '+plan.replace('.par', '.done').replace('spPlan2d','spec2d')) + if not custom_1dpost: + if custom is not None: + for plan in plan2d: + plan = plan.strip("'") + cmd.append('touch '+plan.replace('.par', '.started').replace('spPlanCustom','specombine')) + cmd.append("echo 'spspec_target_merge, "+' "'+plan+'"'+"' | idl") + cmd.append('touch '+plan.replace('.par', '.done').replace('spPlanCustom','specombine')) + if custom_coadd_only: + return(cmd) + + if not only1d: + if epoch: + cmd.append('touch spPlancombepoch-'+fieldmjd+'.started') + cmd.append("echo 'rm_combine_script, "+'"spPlancombepoch-'+fieldmjd+'.par",'+ + rm_combine_keys+' run2d="'+run2d+'"'+"' |idl") + cmd.append('touch spPlancombepoch-'+fieldmjd+'.done') + elif custom is None: + cmd.append('touch specombine-'+fieldmjd+'.started') + cmd.append("echo 'rm_combine_script, "+'"spPlancomb-'+fieldmjd+'.par",'+ + rm_combine_keys+' run2d="'+run2d+'"'+"' |idl") + cmd.append('touch specombine-'+fieldmjd+'.done') + + + if run1d is None: + run1d=run2d + if run2d != run1d: + cmd.append('module switch idlspec2d idlspec2d/'+run1d) + if idlutils_1d is not None: + cmd.append('module switch idlutils idlutils/'+idlutils_1d) + + if allsky is False: + cmd.append('touch spec1d-'+fieldmjd+'.started') + cmd.append("echo 'spreduce1d_empca, "+'"spField-'+fieldmjd+'.fits",'+ + spec1d_keys+' run1d="'+run1d+'"'+"' |idl") + if not noxcsao: + cmd.append('run_PyXCSAO spField-'+fieldmjd+'.fits'+xcsao_keys+' --run1d "'+run1d+'"') + cmd.append('touch spec1d-'+fieldmjd+'.done') + else: + global plancomb_last + global EPOCH_COMBINE + global EPOCH_OBS + if 'plancomb_last' not in globals(): + plancomb_last = '' + if plancomb != plancomb_last: + cplan = read_table_yanny(plancomb, 'COADDPLAN') + EPOCH_COMBINE = np.sort(np.unique(cplan['EPOCH_COMBINE'])) + try: + EPOCH_OBS = cplan.meta['OBS'].lower() + except: + EPOCH_OBS = None + plancomb_last = plancomb + for mjec in EPOCH_COMBINE: + if custom_1dpost: + test_mjec = redux.split('_')[-1] + if str(mjec) != test_mjec: + continue + if EPOCH_OBS is not None: + fmjd = custom+'_'+EPOCH_OBS+'-'+str(mjec) + else: + fmjd = custom+'-'+str(mjec) + cmd.append('touch spec1d-'+fmjd+'.started') + cmd.append("echo 'spreduce1d_empca, "+'"spFullsky-'+fmjd+'.fits",'+ + spec1d_keys+' run1d="'+run1d+'"'+"' |idl") + if not noxcsao: + cmd.append('run_PyXCSAO spFullsky-'+fmjd+'.fits'+xcsao_keys+' --run1d "'+run1d+'"') + cmd.append('touch spec1d-'+fmjd+'.done') + + + if not only1d: + if allsky is False: + fmjd = [fieldmjd] + else: + fmjd = [] + for mjec in EPOCH_COMBINE: + if custom_1dpost: + test_mjec = redux.split('_')[-1] + if str(mjec) != test_mjec: + continue + + + if EPOCH_OBS is not None: + fmjd.append(custom+'_'+EPOCH_OBS+'-'+str(mjec)) + else: + fmjd.append(custom+'-'+str(mjec)) + + for fm in fmjd: + field, mjd = fm.split('-') + if allsky is False: + cmd.append('') + cmd.append('#- Make Field List') + cmd.append(f"fieldlist --create --run1d {run1d} --run2d {run2d} {flist_key} --logfile fieldlist-{field}-{mjd}.log") + + cmd.append('') + cmd.append('#- Make Field spAll file') + cmd.append(f"fieldmerge {fmerge_key} --clobber --run2d {run2d} --field {field} --mjd {mjd}") + cmd.append('') + cmd.append('#- Make final spectra files') + cmd.append(f"spSpec_reformat --field {field} --mjd {mjd} -p --run1d {run1d} --run2d {run2d} {spSpecRef_key}") + else: + cmd.append('') + cmd.append('#- Make Field spAll file') + cmd.append(f"fieldmerge {fmerge_key} --clobber --run2d {run2d} --field {field} --custom {custom} --run1d {run1d} --mjd {mjd}") + cmd.append('') + cmd.append('#- Make final spectra files') + cmd.append(f"spSpec_reformat --field {field} --mjd {mjd} -p --run1d {run1d} --run2d {run2d} --custom {custom} {spSpecRef_key} ") + + if allsky is False: + cmd.append('') + cmd.append('#- Make Spectro-Photometric Calibration QA Figures') + cmd.append("echo 'spcalib_qa, fieldid="+field+", mjd="+mjd+','+spcalib_keywords+' run2d="'+run2d+'"'+"' |idl") + + if not no_merge_spall: + cmd.append('') + cmd.append('#- Making Summary Files') + if allsky is False: + cmd.append(f"fieldlist --create --run1d {run1d} --run2d {run2d} {flist_key}") + cmd.append(f"fieldmerge --lite {fmerge_key} --run2d {run2d} --remerge_fmjd {field}-{mjd} --update_specprimary ") + else: + cmd.append(f"fieldmerge --lite {fmerge_key} --custom {field} --run1d {run1d} --run2d {run2d} --remerge_fmjd {field}-{mjd} --update_specprimary") + + + if custom is None: + if not no_healpix: + cmd.append('#- Make the healpix links') + cmd.append('sas_mwm_healpix --spectro boss --mjd '+mjd+' --telescope apo25m --drpver '+run2d+' -v') + + return(cmd) + +def uubatchpbs(obs = ['apo', 'lco'], topdir = getenv('BOSS_SPECTRO_REDUX'), + run1d = getenv('RUN1D'), run2d = getenv('RUN2D'), idlutils_1d = None, + no_reject = False, MWM_fluxer = True, map3d='bayestar15', + noxcsao = False, skip_specprimary = False, + no_merge_spall = False, skip2d = False, onestep_coadd = False, + fibermap_clobber = False, nbundle = None, + only1d = False, force_arc2flat=False, + field = None, fieldstart = None, fieldend = None, + mjd = None, mjdstart = None, mjdend = None, saveraw=False, + no_write = False, shared = share, fast = False, mem = None, + mem_per_cpu = getenv('SLURM_MEM_PER_CPU'), walltime = '336:00:00', + nodes = None, ppn = None, nosubmit = False, daily=False, + debug=False, no_db=False, dr19=False, + clobber = False, custom= None, allsky = False, epoch = False, no_healpix=False, + email = False, logger=None, fast_no_db=False, + remote = False, release=None,allemail=False, + custom_coadd_only=False, custom_1dpost=False, a2t=False): + + + elog = emailLogger() + emaillog = elog.log_handler + emaillog.setLevel(logging.DEBUG) + emaillog.setFormatter(Formatter()) + + + if logger is None: + logger = logging.getLogger() + console = logging.StreamHandler() + console.setLevel(logging.DEBUG) + console.setFormatter(Formatter()) + logger.addHandler(console) + logger.addHandler(emaillog) + logger.setLevel(logging.DEBUG) + else: + logger.addHandler(emaillog) + logger.setLevel(logging.DEBUG) + + + cmdinputs = locals() + fullinputs = cmdinputs.copy() + cmdinputs.pop('topdir') + cmdinputs.pop('no_write') + cmdinputs.pop('logger') + cmdinputs.pop('daily') + try: + cmdinputs.pop('console') + except: + pass + cmdinputs.pop('elog') + cmdinputs.pop('emaillog') + if cmdinputs['custom'] is None: + cmdinputs.pop('allsky') + for key in list(cmdinputs.keys()): + if cmdinputs[key] is None: + cmdinputs.pop(key) + error = False + + if not ptt.isdir(topdir): + logger.warning('topdir (BOSS_SPECTRO_REDUX) is invalid') + error = True + else: + logger.info('topdir '+topdir) + logger.info(pd.Series(cmdinputs).to_string()) + + topdir2d = ptt.join(topdir, run2d) + + if not allsky: + fielddirs = get_dirs(ptt.dirname(field_dir(topdir2d, '*')), field=True, + match = field, start=fieldstart, end=fieldend) + if len(fielddirs) == 0: + logger.warning('No Directories Found') + error = True + else: + if len(obs) == 2: + fielddirs = [custom] + else: + fielddirs = [] + fielddirs.extend([custom+'_'+ob for ob in obs]) + + if error: + logger.removeHandler(emaillog) + emaillog.close() + return() + + redux_list = [] + skipped = 0 + + if epoch is False: + if custom is None: + plan_str = 'spPlancomb-*.par' + else: + plan_str = 'spPlanCustom-{custom}-*.par' + plan_str_bkup = plan_str + else: + if custom is None: + plan_str = 'spPlancombepoch-*.par' + else: + plan_str = 'spPlancombepoch_{custom}-*.par' + plan_str_bkup = plan_str + + if clobber: + if mjd is None and mjdstart is None and mjdend is None: + logger.info('No MJDs Selected while clobber is set') + val = input('Do you want to continue? (yes/NO)') + if val.lower() != 'yes': + exit() + + for fielddir in fielddirs: + if custom is not None: + plan_str = plan_str_bkup + plan_str = plan_str.format(custom=fielddir) + ccustom = (custom is not None) + if epoch is False: + planfile = glob(ptt.join(field_dir(topdir2d, fielddir, custom=ccustom), plan_str)) + else: + planfile = glob(ptt.join(field_dir(topdir2d, fielddir, custom=ccustom),'epoch', plan_str)) + ifile = len(planfile) + for plan in planfile: + yplan = yanny(plan) + hdr = yplan.new_dict_from_pairs() + thismjd = hdr['MJD'] + if 'OBS' in hdr.keys(): + thisobs = hdr['OBS'].lower() + else: + thisobs = 'apo' + if thisobs.lower() not in obs: + continue + if not mjd_match(thismjd, mjd=mjd, mjdstart=mjdstart, mjdend=mjdend): + continue + if thisobs.lower() == 'lco': + lco = True + else: + lco = False + + if epoch is False: + if custom is None: + fieldmjd = hdr['fieldid']+'-'+hdr['MJD'] + redux = ptt.join(field_dir(topdir2d, fielddir), 'redux-'+fieldmjd) + else: + if allsky: + fieldmjd = fielddir+'-'+hdr['CreateMJD'] + else: + fieldmjd = fielddir+'-'+hdr['fieldid']+'-'+hdr['CreateMJD'] + if not custom_1dpost: + redux = ptt.join(field_dir(topdir2d, fielddir, custom=True), 'redux_'+fieldmjd) + else: + redux = [] + cplan = read_table_yanny(plan, 'COADDPLAN') + EPOCH_COMBINE = np.sort(np.unique(cplan['EPOCH_COMBINE'])) + for mjec in EPOCH_COMBINE: + redux.append(ptt.abspath(ptt.join(field_dir(topdir2d, fielddir, custom=True), + 'redux_'+fieldmjd+'_'+str(mjec)))) + else: + if custom is None: + fieldmjd = hdr['fieldid']+'-'+hdr['MJD'] + redux = ptt.join(field_dir(topdir2d, fielddir),'epoch','redux-'+fieldmjd) + custom_1dpost = False + else: + if allsky: + fieldmjd = fielddir+'-'+hdr['CreateMJD'] + else: + fieldmjd = fielddir+'-'+hdr['fieldid']+'-'+hdr['CreateMJD'] + if not custom_1dpost: + redux = ptt.join(field_dir(topdir2d, fielddir, custom=True),'epoch','redux_'+fieldmjd) + else: + redux = [] + cplan = read_table_yanny(plan, 'COADDPLAN') + EPOCH_COMBINE = np.sort(np.unique(cplan['EPOCH_COMBINE'])) + for mjec in EPOCH_COMBINE: + redux.append(ptt.abspath(ptt.join(field_dir(topdir2d, fielddir, custom=True), + 'epoch','redux_'+fieldmjd+'_'+str(mjec)))) + print(redux[-1]) + if not custom_1dpost: + redux = [ptt.abspath(redux)] + + if custom is None: + plan2d = hdr['planfile2d'].split(' ') + else: + plan2d = [ptt.basename(plan)] + + + for redux1 in redux: + if (not ptt.exists(redux1)) or (clobber is True): + cmd = build_cmd(**fullinputs, plan2d=plan2d, plancomb=plan, fieldmjd=fieldmjd, lco=lco, redux=redux1) + if not no_write: + with open(redux1,'w') as r: + for c in cmd: + r.write(c+'\n') + redux_list.append(redux1) + else: + skipped += 1 + if len(redux_list) > 25: + fast=False + logger.info('') + logger.info('---------------------------------------------------') + logger.info('boss_redux: #BOSS Field-MJDs Done = '+str(skipped)) + logger.info(' #BOSS Field-MJDs To Do = '+str(len(redux_list))) + logger.info('---------------------------------------------------') + logger.info('') + + if len(redux_list) == 0: + logger.removeHandler(emaillog) + emaillog.close() + return None, redux_list + + + qos = 'sdss' + alloc = getenv('SLURM_ALLOC') + if fast is True: alloc = alloc+'-fast' + partition = 'sdss-np' + max_c = int(getenv('SLURM_PPN')) + if ppn is None: ppn= np.min([max_c, np.max([len(redux_list),2])]) + + + if daily is True: + if nodes is None and len(redux_list) > ppn: + nodes = int(np.ceil(len(redux_list)/max_c)) + else: + nodes = 1 + elif nodes is None: + nodes = 1 + + + obsstr = '_'.join(obs).upper() + mjdstr = str(mjd[0]) if daily else 'batch' + if custom is None: + if not epoch: + label = f'{run2d}/{obsstr}/{mjdstr}/daily/' + else: + label = f'{run2d}/{obsstr}/{mjdstr}/epoch/' + else: + if not epoch: + label = f'{run2d}/{obsstr}/{mjdstr}/{custom}/' + else: + label = f'{run2d}/{obsstr}/{mjdstr}/epoch/{custom}/' + + + if nodes > 1: + label = label.replace('/','_') + + old_stdout = sys.stdout + new_stdout = io.StringIO() + sys.stdout = new_stdout + if not no_write: + queue1 = queue(key=None, verbose=True) + bundle = True if nbundle is not None else False + queue1.create(label=label, nodes=str(nodes), ppn=str(ppn), + partition = partition, alloc=alloc, shared=shared, + walltime=walltime, mem_per_cpu=mem_per_cpu, mem=mem, + nbundle = nbundle, bundle = bundle,) + else: + queue1 = None + rlist = redux_list.copy() + for i in range(len(redux_list)): + cmd, log, err = make_run_cmd(redux_list[0]) + redux_list.pop(0) + if not no_write: + queue1.append(cmd, outfile = log, errfile = err) + else: + logger.info(f'{cmd} > {log} 2> {err}') + if not no_write: + queue1.commit(hard=True, submit=(not nosubmit)) + output = new_stdout.getvalue() + sys.stdout = old_stdout + logger.info(output) + + if email is True: + if daily: + tjdate = mjd[0] + else: + tjdate = jdate.astype(str) + elog.send('UUBATCH '+run2d +' MJD='+str(tjdate) +' OBS='+','.join(obs), + ptt.join(daily_dir, 'etc','emails'), logger, allemail=allemail) + logger.removeHandler(emaillog) + emaillog.close() + + return(queue1, rlist) + +def make_run_cmd(redux): + cmd = 'source '+redux + log = redux+'.o' + err = redux+'.e' + return(cmd, log, err) + diff --git a/python/boss_drp/run/uurundaily.py b/python/boss_drp/run/uurundaily.py new file mode 100755 index 000000000..ddec1c740 --- /dev/null +++ b/python/boss_drp/run/uurundaily.py @@ -0,0 +1,629 @@ +#!/usr/bin/env python3 +from boss_drp.run.uubatchpbs import uubatchpbs +from boss_drp.prep.spplan import spplan1d, spplan2d +from boss_drp.utils.dailylogger import Formatter, send_email +from boss_drp.utils.daily_log import daily_log_email +from boss_drp.run import slurm_readfibermap, slurm_spTrace, slurm_Summary +from boss_drp.utils import load_env, jdate +from boss_drp.run import monitor_job +from boss_drp.field import field_dir +from boss_drp import daily_dir, idlspec2d_dir + +import argparse +import sys +try: + from slurm import queue + hasslurm=True +except: + hasslurm=False +from os import getenv, makedirs, popen,environ +import os.path as ptt +from pydl.pydlutils.yanny import yanny, write_table_yanny, read_table_yanny +import numpy as np +from astropy.table import Table +import logging +import datetime +import astropy.time +import time +from glob import glob +import re +import traceback + +nextmjd_file = ptt.join(daily_dir,'etc','nextmjd.par') +completemjd_file = ptt.join(daily_dir,'etc','completemjd.par') + + +def read_module(mem_per_cpu): + run2d = load_env('RUN2D') + run1d = load_env('RUN1D') + if mem_per_cpu > 8000: + mem_per_cpu = 8000 + shared = True + boss_spectro_redux = load_env('BOSS_SPECTRO_REDUX') + boss_spectro_data_N =load_env('BOSS_SPECTRO_DATA_N') + return(run2d, run1d, boss_spectro_redux, boss_spectro_data_N, mem_per_cpu, shared) + +def get_nextmjd(mod, obs, nextmjd_file = nextmjd_file): + try: + nextmjds = yanny(nextmjd_file) + except: + nextmjds = {} + nextmjds["NEXTMJD"] = Table(names=('module', 'mjd', 'obs'), dtype=('S30', int, 'S3')) + obss = np.char.upper(nextmjds["NEXTMJD"]['obs'].astype(str)) + mods = np.char.lower(nextmjds["NEXTMJD"]['module'].astype(str)) + indx = np.where((obss == obs.upper()) & (mods == mod.lower()))[0] + if len(indx) == 0: + nextmjd = jdate.astype(str) + else: + nextmjd = nextmjds["NEXTMJD"]['mjd'][indx][0] + return(nextmjd) + +def check_complete(mod, obs, flag_file = completemjd_file): + try: + nextmjds = yanny(nextmjd_file) + except: + nextmjds = {} + nextmjds["COMPLETEMJD"] = Table(names=('module', 'mjd', 'obs'), dtype=('S30', int, 'S3')) + obss = np.char.upper(nextmjds["COMPLETEMJD"]['obs'].astype(str)) + mods = np.char.lower(nextmjds["COMPLETEMJD"]['module'].astype(str)) + indx = np.where((obss == obs.upper()) & (mods == mod.lower()))[0] + if len(indx) == 0: + nextmjd = jdate.astype(str) + else: + nextmjd = nextmjds["COMPLETEMJD"]['mjd'][indx][0] + return(nextmjd) + +def increment_nextmjd(logger, mod, obs, nextmjd, nextmjd_file = nextmjd_file): + try: + nextmjds = yanny(nextmjd_file) + except: + nextmjds = {} + nextmjds["NEXTMJD"] = Table(names=('module', 'mjd', 'obs'), dtype=('S30', int, 'S3')) + obss = np.char.upper(nextmjds["NEXTMJD"]['obs'].astype(str)) + mods = np.char.lower(nextmjds["NEXTMJD"]['module'].astype(str)) + indx = np.where((obss == obs.upper()) & (mods == mod.lower()))[0] + if len(indx) != 0: nextmjds["NEXTMJD"]['mjd'][indx] = nextmjd + tab_nextmjds = Table(nextmjds["NEXTMJD"]) + if len(indx) == 0: tab_nextmjds.add_row([mod, nextmjd, obs]) + write_table_yanny(tab_nextmjds, nextmjd_file, tablename = "NEXTMJD", overwrite = True) + logger.info("Next MJD to wait for will be "+str(nextmjd)) + +def flag_complete(logger, mod, mjd, obs, flag_file = completemjd_file): + try: + nextmjds = yanny(flag_file) + except: + nextmjds = {} + pass + if len(nextmjds) == 0: + nextmjds = {} + nextmjds["COMPLETEMJD"] = Table(names=('module', 'mjd', 'obs'), dtype=('S30', int, 'S3')) + if type(mjd) is list: + mjd = max(mjd) + obss = np.char.upper(nextmjds["COMPLETEMJD"]['obs'].astype(str)) + mods = np.char.lower(nextmjds["COMPLETEMJD"]['module'].astype(str)) + indx = np.where((obss == obs.upper()) & (mods == mod.lower()))[0] + if len(indx) != 0: nextmjds["COMPLETEMJD"]['mjd'][indx] = mjd + tab_nextmjds = Table(nextmjds["COMPLETEMJD"]) + if len(indx) == 0: tab_nextmjds.add_row([mod, mjd, obs]) + write_table_yanny(tab_nextmjds, flag_file, tablename = "COMPLETEMJD", overwrite = True) + +def get_MJD(logger, boss_spectro_data, mod, obs, run2d, epoch = False, + nextmjd_file = nextmjd_file, flag_file = completemjd_file, + from_domain="chpc.utah.edu"): + + nextmjd = get_nextmjd(mod, obs, nextmjd_file = nextmjd_file) + + if epoch: + completemjd = check_complete(mod, obs, nextmjd_file = nextmjd_file) + if completemjd < nextmjd: + logger.info('Daily MJD '+str(nextmjd)+' for run2d='+run2d+' OBS='+obs+' is not complete yet') + return([]) + logger.info("Looking for MJDs of or after "+str(nextmjd)) + path = ptt.join(boss_spectro_data, '?????') + def get_key(fp): + if not ptt.isdir(fp): return(0) + filename = ptt.basename(fp) + int_part = filename.split()[0] + return(int(int_part)) + files = sorted(glob(path),key=get_key) + lastmjd = int(ptt.basename(files[-1])) + if epoch is True: + mjd = [lastmjd] + else: + mjd = [] + while lastmjd >= int(nextmjd): + if ptt.isdir(path.replace('?????', str(lastmjd))): + mjd.append(lastmjd) + else: + send_email('skipping '+str(lastmjd)+' for '+mod+' obs='+obs, + ptt.join(daily_dir, 'etc','emails'), None, logger, from_domain=from_domain) + #email(subj = 'skipping '+str(lastmjd)+' for '+mod+' obs='+obs) + lastmjd = lastmjd - 1 + if len(mjd) == 0: + logger.info('MJD '+str(nextmjd)+' for run2d='+run2d+' OBS='+obs+' is not here yet') + else: + logger.info('MJDs for run2d='+run2d+' OBS='+obs+ ' transfered: '+str(nextmjd)) + return mjd + +def dailysummary(logger, run2d, run1d, topdir, module, mjd, epoch=False, + pause=300, jobname='', no_submit=False, obs=['apo']): + setup = slurm_Summary.Setup() + setup.run2d = run2d + setup.run1d = run1d + setup.boss_spectro_redux = topdir + setup.epoch = epoch + setup.custom = None + setup.merge_only = True + setup.backup = None + setup.limit = None + setup.n_iter = None +# + queue2, title, attachments, logger, filelog = slurm_Summary.build(setup, logger) + if not no_submit: + pause = 60 + logger, subj = monitor_job(logger, queue1, pause=pause, + jobname='BOSS_Summary '+jobname, + return_status=True) + logger.removeHandler(filelog) + filelog.close() + else: + mjd = np.atleast_1d(mjd).astype(str).tolist() + subj = f"uubatch not submitted at {run2d} MJD={','.join(mjd)} OBS={','.join(obs)}" + return logger, attachments, subj + + +def build_fibermaps(logger, topdir, run2d, plan2ds, mjd, obs, clobber= False, + pause=300, module =None, fast=False, no_submit = False, + nbundle = None, ): + setup = slurm_readfibermap.Setup() + setup.boss_spectro_redux = topdir + setup.run2d = run2d + setup.alloc = load_env('SLURM_ALLOC') + setup.partition = load_env('SLURM_ALLOC') + + setup.ppn = 16 + if fast: + setup.alloc = setup.alloc+'-fast' + if len(plan2ds) < setup.ppn: + setup.ppn = max([len(plan2ds), 2]) + setup.mem_per_cpu = 12000 + setup.walltime = '10:00:00' + setup.partition = load_env('SLURM_ALLOC') + setup.shared = True + setup.nbundle = nbundle + if setup.nbundle is not None: + setup.bundle = True + try: + queue1 = slurm_readfibermap.build(plan2ds, setup, daily = True, obs=obs, mjd = mjd, + clobber=clobber, no_submit = no_submit) + except Exception as e: + logger.info(traceback.format_exc()) + logger.info('Failure submitting readfibermap Jobs') + return (logger, 'Failure submitting readfibermap Jobs') + if queue1 is None: + logger.info('No New Fibermaps Read') + return (logger, None) + if not no_submit: + pause = 60 + logger = monitor_job(logger, queue1, pause=pause, jobname='slurm_readfibermap') + return (logger, None) + +def build_traceflats(logger, mjd, obs, run2d, topdir, clobber=False, pause=300, fast=False, + skip_plan=False, no_submit = False, module = None, nbundle = None, + from_domain="chpc.utah.edu", allemail=False, **kwrds): + + mjds = ','.join(np.atleast_1d(mjd).astype(str).tolist()) + + if not no_submit: + send_email('build_traceflats '+run2d +' MJD='+mjds +' OBS='+','.join(obs), + ptt.join(daily_dir, 'etc','emails'), None, logger, + from_domain=from_domain, allemail=allemail) + setup = slurm_spTrace.Setup() + setup.boss_spectro_redux = topdir + setup.run2d = run2d + setup.alloc = load_env('SLURM_ALLOC') + setup.partition = load_env('SLURM_ALLOC') + setup.mem_per_cpu = 7500 + setup.walltime = '20:00:00' + setup.nbundle = nbundle + if setup.nbundle is not None: + setup.bundle = True + + if fast: + setup.alloc = setup.alloc+'-fast' + slurmppn = int(load_env('SLURM_PPN')) + setup.ppn = min(slurmppn,max(len(mjd),4)) + + setup.shared = True + + status = 'Pass' + attachments = [] + for ob in obs: + queue1, logfile, errfile = slurm_spTrace.build(mjd, ob, setup, clobber=clobber, + skip_plan = skip_plan, + no_submit = no_submit, + daily=True) + if queue1 is None: + continue + attachments.extend([logfile,errfile]) + if not no_submit: + logger = monitor_job(logger, queue1, pause=pause, jobname='slurm_spTrace') + for mj in np.atleast_1d(mjd): + for ob in obs: + plan = read_table_yanny(ptt.join(topdir,run2d,'trace',str(mj), + f'spPlanTrace-{mj}_{ob.upper()}.par'),'SPEXP') + plan.convert_bytestring_to_unicode() + arcs = plan['flavor'] == 'arc' + for ff in plan[arcs]['name'].data.flatten(): + ff = ff.replace('.fit','.fits').replace('sdR','spTraceTab') + if not ptt.exists(ptt.join(topdir,run2d,'trace',str(mj),ff)): + status = 'Fail' + return logger, status, attachments + +def build_run(skip_plan, logdir, obs, mj, run2d, run1d, options, topdir, today, + plates = False, epoch=False, build_summary = False, pause=300, + monitor=False, noslurm=False, no_dither=False, from_domain="chpc.utah.edu", + traceflat=False, no_prep = False, clobber = False, no_fibermap = False, + dailydir=daily_dir): + flags = '' + flags1d = '' + attachments = None + if plates is True: + flags = flags + ', /plate_s' + flags1d = flags1d + ', /plates' + if obs[0].upper() == 'LCO': + flags = flags + ', /lco' + flags1d = flags1d + ', /lco' + es = '' if not epoch else '_epoch' + if len(mj) == 1: + mjfile = ptt.join(logdir, str(mj[0])+es+'.log') + mjsub = str(mj[0]) + else: + mjfile = ptt.join(logdir, str(mj[0])+'-'+str(mj[-1])+es+'.log') + mjsub = str(mj[0])+'-'+str(mj[-1]) + mjfilelog = logging.FileHandler(mjfile) + mjfilelog.setLevel(logging.DEBUG) + mjfilelog.setFormatter(Formatter()) + mjconsole = logging.StreamHandler() + mjconsole.setLevel(logging.DEBUG) + mjconsole.setFormatter(Formatter()) + + logf = 'uurundaily-'+today+'.log' if not epoch else 'uurunepoch-'+today+'.log' + rootfilelog = logging.FileHandler(ptt.join(logdir, logf)) + rootfilelog.setLevel(logging.DEBUG) + rootfilelog.setFormatter(Formatter()) + logger = logging.getLogger(str(mj)) + try: + logger.propagate = False + except: + pass + logger.addHandler(rootfilelog) + logger.addHandler(mjfilelog) + logger.addHandler(mjconsole) + logger.setLevel(logging.DEBUG) + + if skip_plan is True: + pipeplan = False + elif skip_plan == 'pipe': + pipeplan = False + else: + pipeplan = True + + if pipeplan: + lco = True if obs[0].upper() == 'LCO' else False + try: + if clobber is True: + spPlan_clobber = True + elif clobber == 'spPlans': + spPlan_clobber = True + else: + spPlan_clobber = False + + args = dict(topdir=topdir, run2d=run2d, mjd=mj, lco=lco, plates=plates, + splog=logger, no_dither=no_dither, returnlist=True, + clobber = spPlan_clobber, single_flat = True) + plans2d = spplan2d(**args) + + args = dict(topdir=topdir, run2d=run2d, mjd=mj, lco=lco, plates=plates, + daily=True, splog=logger, clobber = spPlan_clobber, plans=plans2d) + spplan1d(**args) + except Exception as e: # work on python 3.x + logger.error('Failure in building spPlans: '+ str(e)) + if monitor: + logger.removeHandler(mjconsole) + logger.removeHandler(mjfilelog) + mjfilelog.close() + mjconsole.close() + send_email('Failure '+run2d +' MJD='+mjsub +' OBS='+','.join(obs), + ptt.join(dailydir, 'etc','emails'), mjfile, logger, from_domain=from_domain) + logger.removeHandler(rootfilelog) + rootfilelog.close() + exit + else: + plans2d = [] + if len(mj) == 1: + plans2d_tmp = glob(ptt.join(field_dir(ptt.join(topdir,run2d),'*'), f'spPlan2d*-{mj[0]}.par')) + else: + plans2d_tmp = glob(ptt.join(field_dir(ptt.join(topdir,run2d),'*'), 'spPlan2d*')) + + mjds = np.asarray(mj).astype(str).tolist() + + for plan2d in plans2d_tmp: + if ptt.basename(plan2d).split('-')[-1].split('.')[0] not in mjds: + continue + plans2d.append(plan2d) + logger.info('Using old spplan files') + if len(plans2d) == 0: + no_fibermap = True + traceflat = False + if not no_prep and not no_fibermap: + if clobber is True: + fibermap_clobber = True + elif clobber == 'fibermap': + fibermap_clobber = True + else: + fibermap_clobber = False + + logger.info('Building spFibermaps for spplan2ds') + args = dict(topdir=topdir, run2d=run2d, clobber= fibermap_clobber, pause=pause, + fast = options['fast'], no_submit = no_prep, nbundle = options['nbundle']) + topdir = args.pop('topdir') + run2d = args.pop('run2d') + logger, error = build_fibermaps(logger, topdir, run2d, plans2d, mj, obs, **args) + if error is not None: + logger.removeHandler(mjconsole) + logger.removeHandler(mjfilelog) + mjfilelog.close() + mjconsole.close() + send_email('Failure submitting readfibermap Jobs '+mjsub+' obs='+','.join(obs), + ptt.join(daily_dir, 'etc','emails'), [mjfile], logger, from_domain=from_domain) + logger.removeHandler(rootfilelog) + rootfilelog.close() + exit() + + elif no_fibermap: + logger.info('Skipping pre-Build of spFibermaps for spplan2ds') + if skip_plan is True: + Traceplan = False + elif skip_plan == 'trace': + Traceplan = True + else: + Traceplan = True + + if clobber is True: + Trace_clobber = True + elif clobber == 'trace': + Trace_clobber = True + else: + Trace_clobber = False + args = dict(active=traceflat, run2d=run2d, topdir=topdir, clobber=Trace_clobber, + fast = options['fast'], pause=pause, skip_plan=(not Traceplan), + no_submit = no_prep, nbundle = options['nbundle']) + topdir = args.pop('topdir') + run2d = args.pop('run2d') + + if args['active']: #traceflat: + logger.info('Building TraceFlats for mjd') + + logger, status, spTatt = build_traceflats(logger, mj, obs, run2d, topdir, **args) + if status == 'Fail': + logger.error('Failure in building spTraceFlats and spTraceArcs') + if monitor: + attachments = [] + for f in spTatt: + if f is None: + continue + if ptt.exists(f): + attachments.append(f) + if len(attachments) == 0: + attachments = None + logger.removeHandler(mjconsole) + logger.removeHandler(mjfilelog) + mjfilelog.close() + mjconsole.close() + send_email('spTrace Failure '+run2d +' MJD='+mjsub +' OBS='+','.join(obs), + ptt.join(daily_dir, 'etc','emails'), attachments, logger, from_domain=from_domain) + logger.removeHandler(rootfilelog) + rootfilelog.close() + exit() + else: + logger.info('Skipping Building of TraceFlats for mjd') + spTatt = [None] + fast_msg = '_fast' if options['fast'] else '' + + es = '' if not epoch else ' --epoch' + + logger.info('Running uubatchpbs --run2d '+run2d+' --obs '+obs[0]+' --sdssv'+fast_msg+' --email'+ + ' --topdir '+topdir+ ' --run1d '+run1d+ es + + ' --mjd '+' '.join(np.asarray(mj).astype(str).tolist())) + logger.info('') + + args = dict(**options, obs=obs, run2d = run2d, run1d = run1d, topdir = topdir, + mjd=mj, logger=logger) + + queue1, redux = uubatchpbs(**args) + + if monitor and not noslurm: + jobname = f"{run2d} MJD={','.join(np.asarray(mj).astype(str).tolist())} OBS={','.join(obs)}" + logger, subj = monitor_job(logger, queue1, pause=pause, + jobname = 'uubatch '+jobname, + return_status = True) + if ("not submitted" in subj) or ("Failure" in subj): + build_summary = False + if build_summary: + logger, attach_summ, subj_sum = dailysummary(logger, run2d, run1d, topdir, module, mj, + epoch = epoch, pause=pause, obs=obs, + jobname = jobname, no_submit=no_submit) + if attach_summ is None: + attach_summ = [None] + else: + attach_summ = [None] + subj_sum = None + else: + attach_summ = [None] + subj_sum = None + logger.removeHandler(mjconsole) + logger.removeHandler(mjfilelog) + mjfilelog.close() + mjconsole.close() + + if monitor and not noslurm: + if attachments is not None: attachments.append(mjfile) + else: attachments = [mjfile] + for f in spTatt: + if f is None: + continue + if ptt.exists(f): + attachments.append(f) + for f in attach_summ: + if f is None: + continue + if ptt.exists(f): + attachments.append(f) + if subj_sum is not None: + subj = subj + '; ' + subj_sum + + for mjd in mj: + daily_log_email(subj, attachments, logger, obs, mjd, + email_file = ptt.join(daily_dir, 'etc','emails'), + topdir=topdir, run2d=run2d, run1d=run1d, + from_domain=from_domain, redux = redux) + + logger.removeHandler(rootfilelog) + rootfilelog.close() + return + + + +def uurundaily(module, obs, mjd = None, clobber=False, fast = False, saveraw=False, + skip_plan=False, pause=300, nosubmit=False, noslurm=False, batch=False, + debug=False, nodb=False, epoch=False, build_summary=False, monitor=False, + merge3d=False, no_dither=False, traceflat=False, email=True, + from_domain="chpc.utah.edu", no_prep = False, walltime='40:00:00', + mem_per_cpu=8000, allemail=False, nbundle = None, + no_fibermap=False, no_healpix=False): + + if not hasslurm: + raise(Exception('No slurm package')) + run2d, run1d, topdir, boss_spectro_data, mem_per_cpu, shared = read_module(mem_per_cpu) + + + if not epoch: + nextmjd_file = ptt.join(daily_dir,'etc','nextmjd.par') + flag_file = ptt.join(daily_dir,'etc','completemjd.par') + else: + nextmjd_file = ptt.join(daily_dir,'etc','nextmjd_epoch.par') + flag_file = ptt.join(daily_dir,'etc','completemjd.par') + + today = datetime.datetime.today().strftime("%m%d%Y") + logdir = ptt.join(daily_dir, "logs", obs[0].upper(),run2d.upper()) + + + makedirs(logdir,exist_ok=True) + rootlogger = logging.getLogger('root') + + logf = 'uurundaily-'+today+'.log' if not epoch else 'uurunepoch-'+today+'.log' + filelog = logging.FileHandler(ptt.join(logdir, logf)) + filelog.setLevel(logging.DEBUG) + filelog.setFormatter(Formatter()) + console = logging.StreamHandler() + console.setLevel(logging.DEBUG) + console.setFormatter(Formatter()) + + rootlogger.addHandler(filelog) + rootlogger.addHandler(console) + rootlogger.setLevel(logging.DEBUG) + + + rootlogger.debug('========================================') + rootlogger.debug('Starting at '+datetime.datetime.today().ctime()) + + + if obs[0].lower() != 'apo': + boss_spectro_data = boss_spectro_data.replace('apo', obs[0].lower()) + + if mjd is not None: + manual=True + else: + mjd = get_MJD(rootlogger, boss_spectro_data, module, obs[0].upper(), run2d, + nextmjd_file = nextmjd_file, flag_file = flag_file, + epoch=epoch, from_domain=from_domain) + manual=False + if len(mjd) > 0: + if manual is False: + increment_nextmjd(rootlogger, module, obs[0].upper(), max(mjd)+1, + nextmjd_file = nextmjd_file) + dmap = 'bayestar15' if not merge3d else 'merge3d' + shared = True + mem_per_cpu = 8000 + pipe_clobber = True if clobber is not False else False + options = {'MWM_fluxer' : True, + 'map3d' : dmap, + 'no_reject' : True, + 'no_merge_spall' : True, + 'walltime' : '40:00:00', + 'shared' : shared, + 'mem_per_cpu' : mem_per_cpu, + 'fast' : fast, + 'email' : True, + 'allemail' : allemail, + 'nosubmit' : nosubmit, + 'daily' : True, + 'clobber' : pipe_clobber, + 'saveraw' : saveraw, + 'debug' : debug, + 'no_db' : nodb, + 'no_write' : noslurm, + 'epoch' : epoch, + 'nbundle' : nbundle, + 'no_healpix' : no_healpix, + } + rootlogger.info('') + if batch is True: + mjd = np.asarray(mjd) + plate_mjds = mjd[np.where(mjd < 59540)[0]] + if len(plate_mjds) >0: + build_run(skip_plan, logdir, obs, plate_mjds.tolist(), run2d, run1d, + options, topdir, today, plates = True, + epoch=epoch, build_summary=build_summary, + pause=pause, monitor=monitor, noslurm=noslurm, no_dither=no_dither, + from_domain=from_domain, traceflat=False, no_prep = no_prep, + clobber = clobber, dailydir = daily_dir, no_fibermap = no_fibermap) + fps_mjds = mjd[np.where(mjd >= 59540)[0]] + if len(fps_mjds) > 0: + build_run(skip_plan, logdir, obs, fps_mjds.tolist(), run2d, run1d, + options, topdir, today, plates = False, + epoch=epoch, build_summary=build_summary, pause=pause, + monitor=monitor, noslurm=noslurm, no_dither=no_dither, + from_domain=from_domain, traceflat=traceflat, + no_prep = no_prep, clobber = clobber, + dailydir = daily_dir,no_fibermap = no_fibermap) + + else: + for mj in mjd: + if mj < 59540: + plates = True + rtf= False + else: + plates = False + rtf = traceflat + build_run(skip_plan, logdir, obs, [mj], run2d, run1d, options, + topdir, today, pause=pause, plates = plates, epoch=epoch, + build_summary=build_summary, monitor=monitor, noslurm=noslurm, + no_dither=no_dither, from_domain=from_domain, traceflat=rtf, + no_prep = no_prep, clobber = clobber, dailydir = daily_dir, + no_fibermap = no_fibermap) + + if (not manual) and monitor: + flag_complete(rootlogger, module, mjd, obs[0].upper(), flag_file = flag_file) + rootlogger.debug('Completed at '+datetime.datetime.today().ctime()) + + +def parseNumList(string): + m = re.match(r'(\d+)(?:-(\d+))?$', string) + # ^ (or use .split('-'). anyway you like.) + if not m: + raise ArgumentTypeError("'" + string + "' is not a range of number. Expected forms like '0-5' or '2'.") + start = m.group(1) + end = m.group(2) or start + return list(range(int(start), int(end)+1)) diff --git a/bin/BOSS_log.py b/python/boss_drp/sos/BOSS_log.py similarity index 98% rename from bin/BOSS_log.py rename to python/boss_drp/sos/BOSS_log.py index bcb182048..89229d9d2 100755 --- a/bin/BOSS_log.py +++ b/python/boss_drp/sos/BOSS_log.py @@ -1,18 +1,21 @@ #!/usr/bin/env python3 +from boss_drp.utils import jdate import os +import os.path as ptt import sys import argparse import pandas as pd -import time from astropy.io import fits -import os.path as ptt from glob import glob -import datetime import astropy.time import numpy as np import platform -from termcolor import colored +try: + from termcolor import colored +except: + def colored(text,color): + print(text) import time import datetime from pydl.pydlutils import yanny @@ -400,7 +403,7 @@ def parse_hartmann_logs(hlogs, exps, long_log = False): hart[ccd.upper()+'Rmove'] = le.split('=')[1] elif ('Residuals' in le): out = le.split('=')[1] - out = ','.join([ x for x in out.split(',') if x.lstrip('-').isdigit()]) + out = ','.join([ x for x in out.split(',') if x.lstrip('-').replace('.','',1).isdigit()]) hart['Residuals'] = out elif ('AverageMove' in le): @@ -649,20 +652,16 @@ def build_log(mjd, obs, Datadir='/data/spectro/', sos_dir = '/data/boss/sos/', l obs = args.observatory except: if args.observatory is not None: - obs = input('Enter Observatory {apo,lco}') + obs = input('Enter Observatory {apo,lco}:') obs = obs.lower() else: - obs = input('Enter Observatory {apo,lco}') + #obs = input('Enter Observatory {apo,lco}') obs = obs.lower() if obs not in ['apo', 'lco']: print('Invalid observatory') exit() if args.mjd is None: - try: - args.mjd=str(int(float(astropy.time.Time(datetime.datetime.now(datetime.UTC)).jd)-2400000.5+.3)) - except: - args.mjd=str(int(float(astropy.time.Time(datetime.datetime.utcnow()).jd)-2400000.5+.3)) - print('test') + args.mjd=jdate.obs(obs).astype(int) if args.yesterday is True: args.mjd = str(int(args.mjd)-1) if 'sdss5' in platform.node(): datadir = '/data/spectro/' diff --git a/python/boss_drp/sos/SOS.py b/python/boss_drp/sos/SOS.py new file mode 100755 index 000000000..05b1275e6 --- /dev/null +++ b/python/boss_drp/sos/SOS.py @@ -0,0 +1,577 @@ +#!/usr/bin/env python3 +import boss_drp +from boss_drp.sos import sos_classes +from boss_drp.utils import putils, sxpar +from boss_drp.utils import sxpar +from boss_drp.utils.hash import create_hash +from boss_drp.prep.readfibermaps import readfibermaps + +import argparse +from argparse import ArgumentTypeError +import sys +import logging +import logging.handlers +import subprocess +import time +import os +import re +import glob +import copy +import numpy as np +from astropy.io.fits import getheader +from multiprocessing import Process +import datetime + + + +#### +class fs_Config: + """file sequencer Config Info""" + + def __init__(self, cfg): + self.fitname = "" + self.fitdir = "" + self.plugname = "" + self.plugdir = "" + self.run_config = cfg + + def __str__(self): + return ("fitname: " + self.fitname + "\n" + + "fitdir: " + self.fitdir + "\n" + + "plugname: " + self.plugname + "\n" + + "plugdir: " + self.plugdir + "\n" + + "------------------------------\n" + + str(self.run_config)); + +def updateMJD(workers, cfg, log): + """Check to see if a new MJD exists""" + + regex = sos_classes.Consts().MJDGlob; + try: + MJD = ls(cfg.fitsDir, regex)[-1][-5:] + if (MJD == cfg.MJD): + return + + cfg.MJD = MJD[-5:] + for worker in workers: + worker.fileCount = 0 + + log.info("Latest updated MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) + except: + log.critical("Could not find latest MJD in " + cfg.fitsDir) + log.critical("GOODBYE!") + sys.exit(1) + +def flavor(cfg): + """return the flavor of the fits file""" + fv = sxpar.sxparRetry(os.path.join(cfg.fitdir,cfg.fitname), "flavor", retries = 5)[0].lower() + if fv == "arc": + hart = sxpar.sxparRetry(os.path.join(cfg.fitdir,cfg.fitname), "HARTMANN", retries = 5)[0].lower() + if hart in ['right','left']: + fv='hart' + return fv + +def plugging(cfg): + """return the plugging of the fits file""" + return sxpar.sxparRetry(os.path.join(cfg.fitdir,cfg.fitname), "CONFID", retries = 5)[0].lower() + + +def previousExposure(cfg, log): + """return a config for the previous exposure""" + + # Parse: sdR-b1-00114186.fit.gz + left = cfg.fitname[:7] + right = cfg.fitname[15:] + exp = (str(int(cfg.fitname[7:15]) - 1)).zfill(8) + + prevcfg = copy.copy(cfg) + prevcfg.fitname = left + exp + right + log.info("previous cfg:\n" + str(prevcfg)) + return prevcfg + + +def rule1(cfg, log): + """Handle arc/flat ordering""" + prevcfg = previousExposure(cfg, log) + log.info("Exposure Flavor: " + flavor(cfg)) + prvfitsExist = os.path.exists(os.path.join(prevcfg.fitdir, prevcfg.fitname)) + log.info("Previous exposure exists: " + str(prvfitsExist)) + if prvfitsExist: + log.info("Previous Flavor: " + flavor(prevcfg)) + log.info("Same Plugging: " + str(plugging(cfg) == plugging(prevcfg))) + + # Handle flats -- process, and arc if was previous + if flavor(cfg) == "flat": + log.info("Exposure is a flat") + processFile(cfg, log, "flat") + if prvfitsExist and flavor(prevcfg) == "arc": + log.info("Processing previous arc") + processFile(prevcfg, log, "arc") + return True + return False + + +#### +def processFile(cfg, log, flavor=""): + """call sos_command on the file. Will exit with error code if the command failts.""" + + cmd = "sos_command" + cmd += " -f " + cfg.fitname + cmd += " -i " + cfg.fitdir + cmd += " -p " + cfg.plugname + cmd += " -l " + cfg.plugdir + cmd += " -s " + cfg.run_config.sosdir + cmd += " -m " + cfg.run_config.MJD + if cfg.run_config.fps: + cmd += " -e " + if cfg.run_config.nocal: + cmd += " -a " + if cfg.run_config.nodb: + cmd += " -n " + if cfg.run_config.no_reject: + cmd += " -r " + if cfg.run_config.sdssv_sn2: + cmd += " -v " + if cfg.run_config.arc2trace: + cmd += " -t " + if cfg.run_config.forcea2t: + cmd += " -o " + if cfg.run_config.pause: + cmd += " -j "+sos_classes.Consts().licensePause + if cfg.run_config.utah: + cmd += " -c " + cmd += " -u " + if cfg.run_config.sn2_15: + cmd += " -b " + + prefix = "sos_command(" + flavor + "): " + + echo = cfg.run_config.termverbose + + i = 0 + while i < 5: + if i > 0: + sleep(2) + log.info("Trying again to get idl license") + log.info("executing: " + cmd) + rv = putils.runCommand(cmd, echo=echo, prefix=prefix, logCmd=log.info, limit=10) + if rv[0] != 0: + log.info("\nCommand failed with rc = " + str(rv[0]) + "\n") + sys.exit(1) + if 'Failed to acquire license.' not in rv[1]: break + + test = create_hash(os.path.join(cfg.run_config.sosdir,cfg.run_config.MJD)) + if test: + log.info("\nsha1sum is locked") + + + + +def sos_filesequencer(fitname, fitpath, plugname, plugpath, cfg, log=None): + """ + Checks if processing a flat if there was an arc before the flat, + then process the after the flat + Otherwise process the fits file + """ + + + config = fs_Config(cfg) + config.fitname = fitname + config.fitdir = fitpath + config.plugname = plugname + config.plugdir = plugpath + # Rules return true if they processed the file and processing should stop + # process rule + + log.info("Checking Rule 1") + if not rule1(config, log): + log.info("Passed Rules; let's go!") + processFile(config, log, flavor(config)) + +#### +def processNewBOSSFiles(worker, files, cfg, log): + """ Process new fits files + + Get the plugmap name and then add the appropiate sos command to the + correctly numbered process list. + + Before the files are processed, they are sorted by name. We really want the files + sorted by time, but because of the sequence number, name is the same as time for any + given camera. + + """ + + # Sort files by name to get into the right time order + files.sort() + log.info("Sorted file list" + str(files)) + if len(files) == 0: + log.info('No Files') + for file in files: + log.info("\n+++++++++++++++++++++++++++++++++++++++++++ \nprocessing new file: " + file) + + #- Get platetype from header (missing=BOSS) + try: + hdr = getheader(file) + except: + time.sleep(5) + hdr = getheader(file) + + + if 'FLAVOR' not in hdr: + log.info("Skipping exposure with missing FLAVOR keyword.") + return + else: + flavor = hdr['FLAVOR'] + + if 'PLATETYP' in hdr: + platetype = hdr['PLATETYP'].upper() + else: + platetype = 'BHM&MWM' + + #- always process bias and darks, regardless of PLATETYP + #- for other exposure types, only process BOSS and EBOSS exposures + if flavor in ('bias', 'dark') or platetype in ('BHM', 'BHM&MWM'): + plugpath = getPlugMap(file, cfg, log) + + SOS_opts = {'confSummary':plugpath,'ccd':os.path.basename(file).split('-')[1], 'mjd':cfg.MJD, + 'log':True, 'log_dir': os.path.join(cfg.sosdir,str(cfg.MJD))} + readfibermaps(topdir=os.path.join(cfg.sosdir,str(cfg.MJD)), SOS=True, SOS_opts=SOS_opts, + logger=log, clobber=cfg.clobber_fibermap) + + qf = os.path.abspath(file) + fitname = os.path.basename(qf) + fitpath = os.path.dirname(qf) + + plugPath = os.path.abspath(plugpath) + plugname = os.path.basename(plugPath) + plugpath = os.path.dirname(plugPath) + + sos_filesequencer(fitname, fitpath, plugname, plugpath, cfg, log=log) + else: + #- Don't crash if hdr is mangled and doesn't have EXPOSURE + if 'EXPOSURE' in hdr: + log.info("Skipping %s exposure %d." % (platetype, hdr['EXPOSURE'])) + else: + log.info("Skipping %s exposure." % platetype) + return + +def writeVersionInfo(cfg, log): + """Write a version string to a file""" + + verFile = os.path.join(cfg.controlDir, sos_classes.Consts().versionFile) + f = open(verFile, "w") + f.write(time.ctime() + " " + boss_drp.__version__ + "\n") + f.close() + log.info("Version is %s" % boss_drp.__version__) + log.info("IDLSPEC2D Module is %s" % os.getenv('IDLSPEC2D_VER')) + +#### +def getPlugMap(file, cfg, log): + """ + Returns the fully qualified name of the plugmap file + """ + + speclogDir = cfg.plugDir + + + try: + obs = os.environ['OBSERVATORY'].lower() + except: + log.critical('Not running at APO or LCO, set OBS environmental variable to run') + return "" + plugmapDir = os.path.join(speclogDir, obs, 'summary_files') + + # Get plugmap used by file + try: + plugmapFullId = sxpar.sxparRetry(file, "CONFID", retries = 5)[0] + except TypeError as t: + log.critical("\nCould not parse " + file + "\n ->" + str(t)) + return "" + except IndexError: + log.critical("\nKeyword CONFID not found in " + file) + return "" + try: + if int(plugmapFullId) == -999: + plugmapFullId = '0' + except: + plugmapFullId = '0' +# try: +# plugmapDir = os.path.join(plugmapDir, str(int(np.floor(int(plugmapFullId)/100))).zfill(4)+'XX') +# except: +# plugmapDir = os.path.join(plugmapDir, str(int(np.floor(int(0)))).zfill(4)+'XX') + + try: + configgrp = '{:0>3d}XXX'.format(int(plugmapFullId)//1000) + configdir = '{:0>4d}XX'.format(int(plugmapFullId)//100) + plugmapDir = os.path.join(plugmapDir, configgrp, configdir)#,'confSummary-'+str(configid)+'.par + except: + configgrp = '{:0>3d}XXX'.format(int(0)//1000) + configdir = '{:0>4d}XX'.format(int(0)//100) + plugmapDir = os.path.join(plugmapDir, configgrp, configdir)#,'confSummary-'+str(configid)+'.par + +# try: +# plugmapDir = os.path.join(plugmapDir, str(int(np.floor(int(plugmapFullId)/1000))).zfill(3)+'XXX', +# str(int(np.floor(int(plugmapFullId)/100))).zfill(4)+'XX') +# except: +# plugmapDir = os.path.join(plugmapDir, str(int(np.floor(int(0)/1000))).zfill(3)+'XXX', +# str(int(np.floor(int(0)/100))).zfill(4)+'XX') + log.info("Current confSummary directory is " + plugmapDir) + + # Parse plugmap name + plugmapName = "confSummaryF-" + plugmapFullId + ".par" + plugParse = plugmapFullId.split("-") + plugmapId = plugmapFullId #plugParse[1] + log.debug(file + " uses confSummaryF " + plugmapFullId + " with Id " + plugmapId) + log.debug(" full name of confSummaryF file is " + plugmapName) + log.debug("confId=" + plugmapId)# + ", pMJD=" + plugmapMJD) + + # Check if the file exists, if not get it and add it to svn + plugpath = os.path.join(plugmapDir, plugmapName) + if os.path.isfile(plugpath): + log.info("Found existing confSummaryF file: " + plugpath) + else: + plugmapName = "confSummary-" + plugmapFullId + ".par" + plugParse = plugmapFullId.split("-") + plugmapId = plugmapFullId #plugParse[1] + log.info("No confSummaryF file: " + plugpath) + log.debug(file + " uses confSummary " + plugmapFullId + " with Id " + plugmapId) + log.debug(" full name of confSummary file is " + plugmapName) + log.debug("confId=" + plugmapId)# + ", pMJD=" + plugmapMJD) + + plugpath = os.path.join(plugmapDir, plugmapName) + + if os.path.isfile(plugpath): + log.info("Found existing confSummary file: " + plugpath) + else: log.critical("Could not get confSummary for Id " + plugmapId) + return os.path.abspath(plugpath) + +def initializePollWorkers(workers, cfg, log): + """Initialize poll workers with latest file counts""" + + for worker in workers: + worker.fileCount = len(glob.glob(os.path.join(cfg.fitsDir, cfg.MJD, worker.glob))) + log.debug("\nInitialized PollWorker:\n" + str(worker)) + +def initializeMJD(cfg, log): + """Find the correct MJD to start looking for new files. If the user specifies an MJD just test + to see if it exists, otherwise, use the latest MJD.""" + + # First check for user specified + if cfg.MJD != "0": + path = os.path.join(cfg.fitsDir, cfg.MJD) + if not os.path.isdir(path): + log.critical("Could not find user specified MJD path: " + path) + log.critical("GOODBYE!") + log.info("Using user specified MJD " + path) + else: + regex = sos_classes.Consts().MJDGlob; + try: + log.debug("Looking for initial MJD in " + cfg.fitsDir) + cfg.MJD = ls(cfg.fitsDir, regex)[-1][-5:] + log.info("Latest initial MJD found to be " + os.path.join(cfg.fitsDir, cfg.MJD)) + except: + log.critical("Could not find the latest MJD path: " + cfg.fitsDir) + log.critical("GOODBYE!") + +def createPollWorkers(cfg, log): + """Create poll workers""" + + workers = [] + + num = 1 + for glob in cfg.globs: + p = sos_classes.PollWorker() + p.glob = glob + p.workerNumber = num + num += 1 + workers.append(p) + log.debug("\nnew PollWorker:\n" + str(p)) + + return workers + + +def initializeLogger(cfg): + """Startup logging and set the level""" + + lname = os.path.join(cfg.logDir, sos_classes.Consts().logName) + if cfg.iname != "": + lname += "-" + cfg.iname + + log = logging.getLogger(sos_classes.Consts().logName) + rollover = datetime.time(hour=18) + ext = '.log' if cfg.utah else '' + + print("Starting to log to " + lname+ext+" ") + h = logging.handlers.TimedRotatingFileHandler(lname+ext, + when='midnight', + interval=1, backupCount=5, + atTime=rollover) + hc = logging.handlers.TimedRotatingFileHandler(lname + "-error"+ext, + when='midnight', + interval=1, backupCount=5, + atTime=rollover) + + f = logging.Formatter("%(asctime)s-%(levelname)s: %(message)s") + h.setFormatter(f) + hc.setFormatter(f) + h.setLevel(cfg.logLevel) + hc.setLevel(logging.ERROR) + log.setLevel(cfg.logLevel) + log.addHandler(h) + log.addHandler(hc) + + log.info("Hello. " + sys.argv[0] + " started.") + log.info("Startup Configuration is: \n\n" + str(cfg) + "\n\n") + + return log + +def closeLogger(log): + handlers = log.handlers[:] + for handler in handlers: + log.removeHandler(handler) + handler.close() + +def ls(dir, regex="*"): + """return a name sorted list of files in dir""" + + files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] + files.sort() + + return files + +def lsltr(dir, regex="*"): + """return a modification-time sorted list of files in dir""" + + files = [os.path.join(dir, f) for f in glob.glob(os.path.join(dir,regex))] + files.sort(key=lambda tm: os.path.getmtime(tm)) + files1 = [f for f in files if len(os.path.basename(f).split('.'))==3] + + return files1 + + +def redo(workers, cfg, log): + """Redo the command for files in the specified MJD""" + + # Get files + for worker in workers: + files = lsltr(os.path.join(cfg.fitsDir, cfg.MJD), worker.glob) + if cfg.exposure != None: + allfiles = files + files = [] + # should only be one, but I do it this way to be sure things are working. + # also, I do the numeric check to avoid worrying about leading zeroes. + for file in allfiles: + log.info("Checking exposure number of: " + file) + exp = re.search("sdR\-..-(\d{8})\.fit.*$", file) + if exp != None: + if int(exp.group(1)) == int(cfg.exposure): + log.info("correct exposure number") + files.append(file) + new = len(files) + log.info("Found " + str(new) + " files in " + + os.path.join(cfg.fitsDir, cfg.MJD, worker.glob)) + processNewBOSSFiles(worker, files, cfg, log) + + +def runner(pollWorkers, config, log): + """ + Run the check for fits files and processes it + """ + # Create poll workers and initialize file counts + initializePollWorkers(pollWorkers, config, logger) + # Watch for new files. Forever... Unless there are exceptions. Then + # try up to 5 times to get it working. But mostly... Forever! + crashes = 5 + while crashes > 0: + try: + watch(pollWorkers, config, logger) + except SystemExit: + raise + except: + crashes = crashes - 1 + if crashes > 0: + logger.exception("!!! Uncaught exception in watch() !!! Will Retry !!!") + time.sleep(5) + else: + logger.exception("!!! TOO MANY Uncaught exceptions in watch() !!!") + raise + +def watch(workers, cfg, log): + """ Watch for new files + + When a new file comes in read the header to look for the plugmap and then check to see + if the plugmap file exists. If it doesn't, get the plugmap from the database and put it + into the proper MJD directory. Create the proper MJD directory for the plugmap if needed. + + Next, check to see if a newer MJD has been created. If there are no new files and no new + MJD then sleep for cfg.pollDelay. + + Note that only the latest MJD is ever checked, so once a new MJD is created only that MJD + will be checked. + """ + tpause = 0 + vpollDelay = 300 + while True: + pause = True + # First check for new files + for worker in workers: + files = lsltr(os.path.join(cfg.fitsDir, cfg.MJD), worker.glob) + if len(files) != worker.fileCount: + pause = False + new = len(files) - worker.fileCount + log.info("Found " + str(new) + " new files in " + + os.path.join(cfg.fitsDir, cfg.MJD, worker.glob)) + # File could get deleted... + if new > 0: + processNewBOSSFiles(worker, files[-1 * new:], cfg, log) + worker.fileCount = len(files) + tpause = 0 + + # Next check for a new MJD. Don't wait if there's a new MJD + if updateMJD(workers, cfg, log): pause = False + + # Pause if asked + if pause: + if (tpause % vpollDelay == 0) or (tpause / vpollDelay >= 1): + log.info(f"Sleeping for {cfg.pollDelay} seconds. (outout every {vpollDelay}s)") + tpause = 0 + tpause += cfg.pollDelay + time.sleep(cfg.pollDelay) + +def SOS(CCD, exp=None, mjd=None, catchup=False, redoMode=False,systemd=False, nodb=False, + no_gz=False, no_reject=False, clobber_fibermap=False, sdssv_sn2=False, + arc2trace=False, forcea2t=False, pause = False, test=False, utah=False, + termverbose = False, sn2_15=False): + """ + The SOS controller for both manual runs and systemd tasks + """ + global logger + for i, ex in enumerate(exp): + if i > 1: + pause = False + config = sos_classes.Config(); + config.setup(CCD = CCD, mjd=mjd, exp=ex, + redo=redoMode, catchup=catchup, test=test, systemd=systemd, + no_gz=no_gz, nodb=nodb, no_reject=no_reject, sdssv_sn2=sdssv_sn2, + pause=pause, arc2trace=arc2trace, forcea2t=forcea2t, sn2_15=sn2_15, + clobber_fibermap = clobber_fibermap, utah=utah, + termverbose=termverbose) + logger = initializeLogger(config) + writeVersionInfo(config, logger) + + # Find correct MJD to start on + initializeMJD(config, logger) + # Create poll workers and initialize file counts + pollWorkers = createPollWorkers(config, logger) + if config.catchup or config.redo: redo(pollWorkers, config, logger) + else: runner(pollWorkers, config, logger) + closeLogger(logger) + +def parseNumList(string): + m = re.match(r'(\d+)(?:-(\d+))?$', string) + # ^ (or use .split('-'). anyway you like.) + if not m: + raise ArgumentTypeError("'" + string + "' is not a range of number. Expected forms like '0-5' or '2'.") + start = m.group(1) + end = m.group(2) or start + return list(range(int(start,10), int(end,10)+1)) diff --git a/python/boss_drp/sos/__init__.py b/python/boss_drp/sos/__init__.py new file mode 100644 index 000000000..a48954149 --- /dev/null +++ b/python/boss_drp/sos/__init__.py @@ -0,0 +1,2 @@ +from .parse_runtime import parse_runtime +from .plot import plot diff --git a/python/boss_drp/sos/arc2tracelogger.py b/python/boss_drp/sos/arc2tracelogger.py new file mode 100644 index 000000000..0256b1828 --- /dev/null +++ b/python/boss_drp/sos/arc2tracelogger.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 +import os.path as ptt +from os import makedirs +import sys +import time + +class Logger(object): + def __init__(self, filename): + self.filename = filename + + class Transcript: + def __init__(self, filename, cmd=None): + self.terminal = sys.stdout + self.log = open(filename, "a") + if cmd is not None: + cmd[0] = ptt.basename(cmd[0]) + self.log.write(' '.join(cmd)+'\n') + self.log.write('\n') + self.log.write('Opening log '+time.ctime()) + def write(self, message): + self.terminal.write(message) + self.log.write(message) + + def flush(self): + # this flush method is needed for python 3 compatibility. + # this handles the flush command by doing nothing. + # you might want to specify some extra behavior here. + pass + + def start(self, cmd=None): + sys.stdout = self.Transcript(self.filename, cmd=cmd) + + def stop(self): + sys.stdout.log.close() + sys.stdout = sys.stdout.terminal + +class Logger(object): + def __init__(self, filename): + self.filename = filename + + class Transcript: + def __init__(self, filename, cmd=None): + self.terminal = sys.stdout + makedirs(ptt.dirname(filename), exist_ok=True) + try: + self.log = open(filename, "a") + except: + self.log = open(filename, "w") + if cmd is not None: + cmd[0] = ptt.basename(cmd[0]) + self.log.write(' '.join(cmd)) + self.log.write('Opening log '+time.ctime()) + def write(self, message): + self.terminal.write(message) + self.log.write(message) + + def flush(self): + # this flush method is needed for python 3 compatibility. + # this handles the flush command by doing nothing. + # you might want to specify some extra behavior here. + pass + + def start(self, cmd=None): + sys.stdout = self.Transcript(self.filename, cmd=cmd) + + def stop(self): + sys.stdout.log.close() + sys.stdout = sys.stdout.terminal + diff --git a/python/boss_drp/sos/arc_to_trace_soshtml.py b/python/boss_drp/sos/arc_to_trace_soshtml.py new file mode 100755 index 000000000..64b7b6ca7 --- /dev/null +++ b/python/boss_drp/sos/arc_to_trace_soshtml.py @@ -0,0 +1,69 @@ + +#!/usr/bin/env python +from boss_drp import idlspec2d_dir, favicon + +import argparse +import glob +import os +import os.path as ptt +import numpy as np +import datetime +from jinja2 import Template + +def soshtml(mjd, obs, sosdir): + outdir='{:s}/{:d}/trace/{:d}'.format(sosdir,mjd,mjd) + outfile = '{:s}/arcs_{:d}_{:s}.html'.format(outdir,mjd,obs) + template = ptt.join(idlspec2d_dir,'templates','html','arc2trace_template.html') + + try: + now = datetime.datetime.utcnow() + except: + now = datetime.datetime.now(datetime.UTC) + nowstr = now.strftime("%a %b %d %H:%M:%S %Y UTC") + + if obs == 'lco' : + cams = ['b2','r2'] + else : + cams = ['b1','r1'] + + col1_r = glob.glob(ptt.join(outdir,'sdR-??-*.fit*.png')) + if len(col1_r) == 0: + return + + tf = glob.glob(ptt.join(outdir,'spTraceFlat-??-*.fits.gz')) + tf = [ptt.basename(t) for t in tf] + + yt = [ptt.basename(x).split('.')[0].split('-')[2] for x in col1_r] + yt = sorted(list(set(yt)), reverse=True) + exps = [] + for y in yt: + row = dict(exp=y) + row_tit = y+'
    ' + for cam in cams: + row[cam[0]+'Fpng'] = f'sdR-{cam}-{y}.fit.png' + row[cam[0]+'FCpng'] = f'sdR-{cam}-{y}.fit_compare.png' + tt = f'spTraceTab-{cam}-{y}.fits' + ttl = f'spTraceTab-{cam}-{y}.log' + if ptt.exists(ptt.join(outdir,tt)): + row[f'{cam[0]}Fit'] = f'f' + row[f'{cam[0]}Log'] = f'l' + elif ptt.exists(ptt.join(outdir,ttl)): + row[f'{cam[0]}Fig'] = f'f' + row[f'{cam[0]}Log'] = f'l' + else: + row[f'{cam[0]}Fig'] = f'f' + row[f'{cam[0]}Log'] = f'l' + exps.append(row) + + jinja2_opts = dict(MJD=mjd, date = nowstr, tf= tf, OBS=obs.upper(), + blue=cams[0], red=cams[1], + favicon=favicon, + name = f'Arc2Trace {mjd} {obs.upper()}', + exps=exps, obs=obs.upper()) + + with open(outfile, 'w', encoding="utf-8") as f: + with open(template) as template_file: + j2_template = Template(template_file.read()) + f.write(j2_template.render(jinja2_opts)) + + print('Done Updating {:s}/arcs_{:d}_{:s}.html'.format(outdir,mjd,obs)) diff --git a/python/boss_drp/sos/build_combined_html.py b/python/boss_drp/sos/build_combined_html.py new file mode 100755 index 000000000..3d0025fde --- /dev/null +++ b/python/boss_drp/sos/build_combined_html.py @@ -0,0 +1,34 @@ +#!/usr/bin/env python3 +from boss_drp import idlspec2d_dir, favicon + +from glob import glob +import os.path as ptt +from os import rename, getenv +import time +import shutil +from jinja2 import Template + + +def get_mjd(html): + filename = ptt.splitext(ptt.basename(html))[0] + int_part = filename.split('-')[1] + return(int(int_part)) + +def build_combine_html(sosdir, force=False): + directory = ptt.join(sosdir,'combined') + if not force: + if ptt.exists(ptt.join(directory,'index.html')): + file_time = ptt.getmtime(ptt.join(directory,'index.html')) + if time.time()-file_time < 3600*15: + print('No update required') + return + if not ptt.exists(ptt.join(directory,"sdss-new-logo.png")): + shutil.copy(ptt.join(idlspec2d_dir, 'etc',"sdss-new-logo.png"), ptt.join(directory,"sdss-new-logo.png")) + template = ptt.join(idlspec2d_dir,'templates','html','SOS_index_template.html') + logfiles = sorted(glob(ptt.join(directory,'logfile-?????.html')),key=get_mjd,reverse=True) + logfiles = [ptt.basename(x) for x in logfiles] + with open(ptt.join(directory,'index.html.tmp'), 'w', encoding="utf-8") as f: + with open(template) as template_file: + j2_template = Template(template_file.read()) + f.write(j2_template.render(logfiles = logfiles, favicon=favicon)) + rename(ptt.join(directory,'index.html.tmp'), ptt.join(directory,'index.html')) diff --git a/python/boss_drp/sos/filecheck.py b/python/boss_drp/sos/filecheck.py new file mode 100755 index 000000000..6f912a2d5 --- /dev/null +++ b/python/boss_drp/sos/filecheck.py @@ -0,0 +1,96 @@ +#!/usr/bin/env python + +import os +import sys +from boss_drp.utils import sxpar +from boss_drp.utils import putils + +""" +filecheck.py: + +filecheck.py checks some attribute of a file and returns "true" or "false" based +on if the attribute is... true or false. + +This file it pretty much a grab bag of hacks. To do these tests correctly would +either require adding dependencies just for these simple tests or duplicating lots +of code. + +The input files can be either normal or gz files. + +Written by Gary Kushner (LBL). Dec 2009. + +""" + +#### +def science(fits): + """return True if the fits file is a science frame""" + v = sxpar.sxparRetry(fits, "flavor", retries = 60) + if len(v) == 0: + return False + return v[0].lower() == "science" + + + +#### +def excellent(fits): + """return True if the fits file is an excellent frame""" + v = sxpar.sxparRetry(fits, "quality", retries = 60) + if len(v) == 0: + return True + return v[0].lower() == "excellent" + +#### +def arc(fits): + """return True if the fits file is a arc frame""" + v = sxpar.sxparRetry(fits, "flavor", retries = 60) + if len(v) == 0: + return False + + if v[0].lower() == "arc": + hart = sxpar.sxparRetry(fits, "HARTMANN", retries = 60) + if len(hart) != 0: + if hart[0].lower() in ['right','left']: + return False + + return v[0].lower() == "arc" +#### +def boss(fits): + """return True if the plugmap file is for a boss frame""" + + key = "instruments" + keyl = len(key) + value = "boss" + + lines = putils.openRead(fits).readlines(); + for line in lines: + if line[0:keyl].lower() == key: + return line.lower().count(value) > 0 + return False + +#### +def test(fits): + """return True if the fits file is a test frame""" + + v = sxpar.sxparRetry(fits, "quality", retries = 60) + if len(v) == 0: + return False + return v[0].lower() == "test" + + +def filecheck(cmd, file): + if cmd == "science": + rv = science(file) + elif cmd == "arc": + rv = arc(file) + elif cmd == "test": + rv = test(file) + elif cmd == "excellent": + rv = excellent(file) + elif cmd == "boss": + rv = boss(file) + else: + rv = False + if rv == True: + print("true") + else: + print("false") diff --git a/python/boss_drp/sos/loadSN2Value.py b/python/boss_drp/sos/loadSN2Value.py new file mode 100755 index 000000000..b63c9a3cb --- /dev/null +++ b/python/boss_drp/sos/loadSN2Value.py @@ -0,0 +1,262 @@ +#!/usr/bin/env python3 +from sdssdb.peewee.sdss5db import opsdb, targetdb +import sdssdb +print('sdssdb version:'+sdssdb.__version__) + +from astropy.io import fits +import os +import time +from astropy.time import Time + +#### +class Config: + """Config Info""" + + def __init__(self): + self.verbose = False + self.update = False + self.fits = None + self.confSum = None + self.confID = None + self.design = None + self.sdssv_sn2 = False + def __str__(self): + if self.sdssv_sn2 is True: + return ("Verbose: " + str(self.verbose) + "\n" + + "Update: " + str(self.update) + "\n" + + "fits: " + self.fits + "\n" + + "confSummary: " + self.confSum + "\n" + + "confid: " + self.confID+ "\n" + + "design: " + self.design+ "\n" + + "sdssv_sn2: " + self.sdssv_sn2+ "\n"); + else: + return ("Verbose: " + str(self.verbose) + "\n" + + "Update: " + str(self.update) + "\n" + + "fits: " + self.fits + "\n" + + "confSummary: " + self.confSum + "\n" + + "confid: " + self.confID+ "\n" + + "design: " + self.design+ "\n"); + + +#### +def getSN2(cfg): + """Return the sn2 of the fits file as a string. The SN2 is stored in FRAMESN2""" + + try: sn2list = str(fits.getval(cfg.fits, 'FRAMESN2')) + except: + print("WARNING: " + cfg.fits + " does not contain the header keyword FRAMESN2.") + return 0.0; + try: sn2_15_list = str(fits.getval(cfg.fits,'FSN2_15')) + except: + print("WARNING: " + cfg.fits + " does not contain the header keyword FSN2_15.") + return np.nan; + if cfg.sdssv_sn2: + try: sn2list_v2 = str(fits.getval(cfg.fits, 'FSN2_v2')) + except: + print("WARNING: " + cfg.fits + " does not contain the header keyword FSN2_v2.") + return 0.0; + + if cfg.verbose: + print("(s/n)^2 is " + sn2list) + print("(s/n)^2 (mag15) is " + sn2_15_list) + if cfg.sdssv_sn2 is True: + print("(s/n)^2 is " + sn2list_v2) + + if cfg.sdssv_sn2 is False: + return [sn2list, sn2_15_list] + else: + return [sn2list, sn2_15_list, sn2list_v2] + + +#### +def getMJD(cfg): + """Return the MJD of the fits file as a string. The MJD is taken from the fits header""" + + try: mjdlist = str(fits.getval(cfg.fits, 'MJD')) + except: + print("WARNING: " + cfg.fits + " does not contain the header keyword MJD.") + return "00000" + + if cfg.verbose: + print("MJD is " + mjdlist) + + return mjdlist + + +#### +def getStartTime(cfg): + """Return the start time of the fits file as a string. The start time is taken from the fits header""" + + try: start2list = str(fits.getval(cfg.fits, 'TAI-BEG')) + except: + print("WARNING: " + cfg.fits + " does not contain the header keyword TAI-BEG.") + return "0000000000.0" + + if cfg.verbose: + print("TAI-BEG is " + start2list) + start2list=str(float(start2list)/(24.0*3600.0)) + return start2list + + +#### +def getExposureTime(cfg): + """Return the exposure time of the fits file as a string. The exposure time is taken from the fits header""" + + try: exptime2list = str(fits.getval(cfg.fits, 'EXPTIME')) + except: + print("WARNING: " + cfg.fits + " does not contain the header keyword EXPTIME.") + return "0000.00" + + if cfg.verbose: + print("EXPTIME is " + exptime2list) + + return exptime2list + +def getConfig(cfg): + try: cfid = str(fits.getval(cfg.fits, 'CONFID')) + except: + print("WARNING: " + cfg.fits + " does not contain the header keyword CONFID.") + return("000000") + if cfg.verbose: + print("CONFID is " + cfid) + return cfid + +def getDesign(cfg): + try: dsid = str(fits.getval(cfg.fits, 'DESIGNID')) + except: + print("WARNING: " + cfg.fits + " does not contain the header keyword DESIGNID.") + return("00000") + if cfg.verbose: + print("EXPTIME is " + cfid) + return dsid + +#### +def getFitsInfo(cfg): + """Return the (exposure number, camera name) of the fits file (as strings)""" + + # Parse science frame name. e.g. sci-3690-b1-00105034.fits + sciParse = os.path.basename(cfg.fits).split("-") + sciConf = str(sciParse[1]) + sciCamera = str(sciParse[2]) + sciExposure = str(sciParse[3].split(".")[0]) + + if cfg.verbose: + print(("science exposure # " + sciExposure + " for configureID # " + sciConf + + " for camera " + sciCamera)) + + return (sciExposure, sciCamera) + + +#### +def addOrUpdateExposure(cfg): + """Add or update an exposure record with the (s/n)^2""" + + try: + db_config = opsdb.Configuration.get_or_create(configuration_id=cfg.confID, design=cfg.design)[0] + except: + db_config = opsdb.Configuration.create(design=cfg.design) + + + useTime = Time(float(getStartTime(cfg)),format="mjd").datetime #getMJD(cfg) + + + # In order to deal with the exposure we need some keys into other tables + try: + (expNum, camName) = getFitsInfo(cfg) + camera = opsdb.Camera.get(label=camName) + db_flavor = opsdb.ExposureFlavor.get(pk=1) # science + except: + print("Could not retrieve camera, survey or instrument\n\n") + raise + + # Check to see if the exposure exists + + try: + db_exp = opsdb.Exposure.get_or_none(configuration=db_config, + exposure_no = expNum) + except: + print("Problem querying for Exposure! \n\n") + raise + else: + # We don't do updates unless asked! + if not cfg.update: + print("Exposure record already exists!") + print("Use '--update' to update the (s/n)^2 entry of an existing record\n\n") + raise LookupError("Exposure record already exists. Use --update to update") + if cfg.verbose: + if db_exp is None: print("Found an existing exposure record") + if db_exp is None: + if cfg.verbose: + print("Creating new Exposure record.") + db_exp = opsdb.Exposure.create(configuration=db_config, + start_time=useTime, + exposure_no = expNum, + comment = "", + exposure_time = getExposureTime(cfg), + exposure_flavor=db_flavor) + + + # Check to see if the camera-frame exists + cframe = None + try: + cframe = opsdb.CameraFrame.get_or_none(exposure=db_exp, + camera=camera) + + except: + print("Problem querying for CameraFrame! \n\n") + raise + else: + # We don't do updates unless asked! + if not cfg.update: + print("CameraFrame record already exists!") + print("Use '--update' to update the (s/n)^2 entry of an existing record\n\n") + raise LookupError("CameraFrame record already exists. Use --update to update") + if cfg.verbose: + if cframe is not None: print("Found an existing CameraFrame record") + + # Create an CameraFrame if needed + + sn2val=getSN2(cfg) + if cfg.sdssv_sn2 is True: + sn2val_2 = sn2val[2] + sn2val_15 = sn2val[1] + sn2val = sn2val[0] + comment = f"{int(time.time())}({sn2val},{sn2val_15},{sn2val_2})" + else: + sn2val_15 = sn2val[1] + sn2val = sn2val[0] + comment = f"{int(time.time())}({sn2val},{sn2val_15})" + if cframe is None: + if cfg.verbose: + print("Creating new CameraFrame record.") +# cframe = opsdb.CameraFrame.create(exposure=db_exp, camera=camera, +# sn2=sn2val,sn2_v2=sn2val_2, comment = comment) + cframe = opsdb.CameraFrame.create(exposure=db_exp, camera=camera, + sn2=sn2val, sn2_15=sn2val_15, comment = comment) + else: + cframe.comment = comment + "," + cframe.comment +# cframe.sn2_v2 = sn2val_2 + cframe.sn2 = sn2val + cframe.sn2_15 = sn2val_15 + cframe.save() + + + +#### +def loadSN2Values(fits, confSum, verbose=False, update=False, sdssv_sn2=False): + cfg = Config() + cfg.fits = fits + cfg.confSum = os.path.basename(confSum) + cfg.confID = getConfig(cfg) + cfg.design = getDesign(cfg) + cfg.verbose = verbose + cfg.update = update + cfg.sdssv_sn2 = sdssv_sn2 + + if cfg.verbose: + print("Config values: \n" + str(cfg)) + + if cfg.confID == '000000': return + if cfg.design == '00000': return + addOrUpdateExposure(cfg) + diff --git a/python/boss_drp/sos/parse_runtime.py b/python/boss_drp/sos/parse_runtime.py new file mode 100644 index 000000000..8c57662b9 --- /dev/null +++ b/python/boss_drp/sos/parse_runtime.py @@ -0,0 +1,160 @@ +#!/usr/bin/env python3 +import re +from datetime import datetime, timedelta +import matplotlib.pyplot as plt +from matplotlib.ticker import MultipleLocator + +import numpy as np +import glob +import os.path as ptt +import os +from astropy.io import fits + +# Function to find the closest timestamp before a given time +def find_closest_before(time, sorted_times): + closest = None + for t in sorted_times: + if t < time: + closest = t + else: + break + return closest + +# Function to parse timestamps from log file lines +def parse_log_file(file_path): + start_times = [] + end_times = [] + end_exp = [] + write_exp = [] + start = False + fail_idl = False + with open(file_path, 'r') as file: + for line in file: + # Extract start times (assuming "start" keyword in log line) + if "Exposure Flavor: science" in line: + match = re.search(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', line) + if match: + start_times.append(match.group()) + start = True + elif start is True and '% Failed to acquire license.' in line: + fail_idl = True + # Extract end times (assuming "end" keyword in log line) + elif "read_sos.py /data/boss/sos" in line: + if not fail_idl: + mjd = line.split()[5] + ccd = line.split()[7].split('-')[2] + expid = line.split()[7].split('-')[3].split('.')[0] + ff = f'/data/spectro/{mjd}/sdR-{ccd}-{expid}.fit.gz' + write_exp.append(ptt.getctime(ff)) + try: + hdr = fits.getheader(ff) + try: + end_exp.append(hdr['INTEND']) + except: + intend = datetime.strptime(hdr['DATE-OBS'], '%Y-%m-%dT%H:%M:%S') + intend += timedelta(seconds=hdr['EXPTIME']) + end_exp.append(intend.strftime('%Y-%m-%dT%H:%M:%S.%f')) + except: + end_exp.append(None) + match = re.search(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}', line) + if match: + end_times.append(match.group()) + start = False + else: + fail_idl = False + + return start_times, end_times, end_exp, write_exp + +# Function to calculate elapsed times +def calculate_elapsed_times_from_logs(start_times, end_times, exp = False, create=False): + if exp: + start_times = [datetime.strptime(t, '%Y-%m-%dT%H:%M:%S.%f') for t in start_times] + elif create: + start_times = [datetime.fromtimestamp(t) for t in start_times] + else: + start_times = [datetime.strptime(t, '%Y-%m-%d %H:%M:%S') for t in start_times] + end_times = [datetime.strptime(t, '%Y-%m-%d %H:%M:%S') for t in end_times] + + elapsed_times = [] + for end in end_times: + closest_start = find_closest_before(end, start_times) + if closest_start: + elapsed_times.append((end - closest_start).total_seconds()) + else: + elapsed_times.append(None) + + return elapsed_times + +def parse_runtime(file_paths, all=False, stamp=False): + now = datetime.now() + if now < now.replace(hour=18, minute=0, second=0, microsecond=0): + current_date = now-timedelta(days=1) + else: + current_date = now + current_date = current_date.strftime('%Y-%m-%d') + + for file_path in file_paths: + dates = [current_date] + + # Parse log file and calculate elapsed times + start_times, end_times, end_exps, write_exp = parse_log_file(file_path) + elapsed_times = calculate_elapsed_times_from_logs(start_times, end_times) + Full_elapsed_times = calculate_elapsed_times_from_logs(end_exps, end_times, exp=True) + write_elapsed_times = calculate_elapsed_times_from_logs(write_exp, end_times, create=True) + if all: + for f in glob.glob(file_path + '.????-??-??'): + dates.append(f.split('.')[-1]) + st, et, ee, we = parse_log_file(f) + elapsed_times.extend(calculate_elapsed_times_from_logs(st, et)) + Full_elapsed_times.extend(calculate_elapsed_times_from_logs(ee, et, exp=True)) + write_elapsed_times.extend(calculate_elapsed_times_from_logs(we, et, create=True)) + + if all: + print('Using:', file_path+'.????-??-??') + else: + print('Using:', file_path) + print('Nexp:', len(elapsed_times)) + print('Mean:', np.nanmean(elapsed_times)) + print('Standard Deviation:', np.nanstd(elapsed_times)) + print('Median:', np.nanmedian(elapsed_times)) + print('-------------------------------------------') + print('Nexp full:', len(Full_elapsed_times)) + print('Mean full:', np.nanmean(Full_elapsed_times)) + print('Std full:', np.nanstd(Full_elapsed_times)) + print('Med full:', np.nanmedian(Full_elapsed_times)) + print('-------------------------------------------') + print('Nexp write:', len(write_elapsed_times)) + print('Mean write:', np.nanmean(write_elapsed_times)) + print('Std write:', np.nanstd(write_elapsed_times)) + print('Med Write:', np.nanmedian(write_elapsed_times)) + + # Plot the distribution of the elapsed times + fig,ax = plt.subplots(1,figsize=(10, 6)) + bins = np.arange(min(np.nanmin(elapsed_times),np.nanmin(Full_elapsed_times),np.nanmin(write_elapsed_times))-.5, + max(np.nanmax(elapsed_times),np.nanmax(Full_elapsed_times),np.nanmax(write_elapsed_times))+.5,1) + plt.hist([t for t in elapsed_times if t is not None], bins=bins, edgecolor='black',label='ReduxEnd-ReduxStart',alpha=.5) + plt.hist([t for t in write_elapsed_times if t is not None], bins=bins, edgecolor='black',label='ReduxEnd-WriteEnd',alpha=.5) + plt.hist([t for t in Full_elapsed_times if t is not None], bins=bins, edgecolor='black',label='ReduxEnd-ExpEnd',alpha=.5) + ax.xaxis.set_minor_locator(MultipleLocator(1)) + ax.yaxis.set_minor_locator(MultipleLocator(1)) + ax.tick_params(which='minor', length=4) + + plt.legend() + dates = np.sort(np.asarray(dates)).tolist() + plt.title('Distribution of Elapsed Times\n'+', '.join(dates)) + plt.xlabel('Elapsed Time (seconds)') + plt.ylabel('Frequency') + plt.grid(True) + + # Save the plot + output_dir = '/data/boss/sos/logs/' + cdate = '_'+current_date if stamp else '' + + try: + plt.savefig(ptt.join(output_dir, f"{ptt.basename(file_path)}{cdate}.png")) + print('Saving to: '+ptt.join(output_dir, f"{ptt.basename(file_path)}{cdate}.png")) + except Exception as e: + print(e) + plt.savefig(f"{ptt.basename(file_path)}{current_date}.png") + print('Saving to: '+f"{ptt.basename(file_path)}{current_date}.png") + print("") diff --git a/python/boss_drp/sos/plot.py b/python/boss_drp/sos/plot.py new file mode 100644 index 000000000..ca2442bf7 --- /dev/null +++ b/python/boss_drp/sos/plot.py @@ -0,0 +1,107 @@ +# +from boss_drp.utils import find_nearest_indx +from boss_drp.field import field_to_string + +from pydl.pydlutils.trace import traceset2xy, TraceSet + +from astropy.io import fits +import matplotlib.pyplot as plt +from matplotlib.backends.backend_pdf import PdfPages +import os.path as ptt +import os +import glob +import warnings +import numpy as np + +def bc_smooth(data, window_size): + if window_size % 2 == 0: + window_size += 1 + + # Create a boxcar (flat) window + window = np.ones(window_size) / window_size + + # Apply the convolution + smoothed_data = np.convolve(data, window, mode='same') + + return smoothed_data + + +def plot(mjd, expid, ccd, redo=False, outdir = '/data/boss/sos/tests/', mask_end=False): + mjd = str(mjd) + sos_dir = os.getenv('BOSS_SOS_S') if '2' in ccd else os.getenv('BOSS_SOS_N') + if sos_dir is None: + sos_dir = '/data/boss/sos' + if redo: + sos_dir = '/data/boss/sosredo' + sci_f = ptt.join(sos_dir,mjd,f'sci-*-{ccd}-{str(expid).zfill(8)}.fits') + sci_f = glob.glob(sci_f)[0] + hdr = fits.getheader(sci_f) + confid = hdr['CONFID'] + fieldid = field_to_string(hdr['FIELDID']) + MJD = hdr['MJD'] + + arc_f = glob.glob(ptt.join(sos_dir, mjd,f'wset-{MJD}-{fieldid}-*-{ccd}.fits')) + if len(arc_f) == 0: + arc_f = glob.glob(ptt.join(sos_dir, mjd,f'wset-{MJD}-*-*-{ccd}.fits')) + exps = np.array([ptt.basename(x).split('-')[0] for x in arc_f]).astype(int) + idx = find_nearest_indx(exps, int(expid)) + arc_f = arc_f[idx] + else: + arc_f = arc_f[0] + wset = fits.getdata(arc_f,1) + xx, loglam = traceset2xy(TraceSet(wset)) + + fmap_f = ptt.join(sos_dir, mjd, f'spfibermap-{fieldid}-{mjd}-{ccd}.fits') + try: + fmap = fits.getdata(fmap_f,f'CONFSUMMARYF-{confid}.PAR') + except: + try: + fmap = fits.getdata(fmap_f,f'CONFSUMMARY-{confid}.PAR') + except: + fmap = fits.getdata(fmap_f,2) + + + sci = fits.getdata(sci_f,0) + sn = fits.getdata(sci_f,2) + ivar = fits.getdata(sci_f,1) + + num_panels = 500 + panels_per_page = 6 + num_pages = (num_panels + panels_per_page - 1) // panels_per_page # Calculate total number of pages + + # Create a PDF file + os.makedirs(outdir,exist_ok=True) + with PdfPages(ptt.join(outdir,f'{expid}-{ccd}-{mjd}.pdf')) as pdf: + fiber = 0 + for page in range(num_pages): + fig, axes = plt.subplots(6, 1, figsize=(8.5,11)) # 2x4 grid, each subplot on A4 paper + axes = axes.flatten() # Flatten to 1D array for easier iteration + + for i in range(panels_per_page): + panel_idx = page * panels_per_page + i + if panel_idx < num_panels: + ax = axes[i] + data = sci[fiber] + sm_data = bc_smooth(data, 10) + wave = np.power(10,loglam[fiber]) + mask = np.where((wave < 10000) & (wave> 5000))[0] + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + ax.plot(wave, np.sqrt(1./ivar[fiber]), color='r',alpha=.2) + ax.plot(wave, data, color='k', alpha=.2) + ax.plot(wave, sm_data, color='k') + + title = f"FiberID={fiber+1} catid={fmap[fiber]['CATALOGID']} Carton={fmap[fiber]['FIRSTCARTON']}\nmag={','.join(np.asarray(fmap[fiber]['CATDB_MAG']).astype(str).tolist())} sn={sn[fiber]}" + + ax.set_title(title) + if mask_end: + sm_data = sm_data[mask] + ax.set_ylim(-1,np.nanmean(sm_data[sm_data >= 0])+1.5*np.nanstd(sm_data[sm_data >= 0])) + fiber += 1 + else: + axes[i].axis('off') # Hide unused subplots + plt.tight_layout(pad=1.0) + pdf.savefig(fig) + plt.close(fig) + print('Saved to '+ptt.join(outdir,f'{expid}-{ccd}-{mjd}.pdf')) + diff --git a/bin/read_sos.py b/python/boss_drp/sos/read_sos.py similarity index 90% rename from bin/read_sos.py rename to python/boss_drp/sos/read_sos.py index 1501e8d3b..426d85b70 100755 --- a/bin/read_sos.py +++ b/python/boss_drp/sos/read_sos.py @@ -1,26 +1,30 @@ #!/usr/bin/env python3 +from boss_drp.utils import find_nearest_indx +from boss_drp import idlspec2d_dir, favicon +from boss_drp.utils.hash import create_hash + +from pydl.pydlutils.trace import traceset2xy, TraceSet +from pydl.pydlutils import yanny from astropy.table import Table -import pandas as pd from astropy.io import fits +import pandas as pd import numpy as np import warnings +from os import mkdir, rename, getenv, remove import os.path as ptt +import matplotlib as mpl import matplotlib.pyplot as plt +from datetime import datetime import argparse +from time import sleep import sys import glob -from os import mkdir,rename#,symlink -from os import getenv, remove from shutil import copy -from pydl.pydlutils import yanny - -#from GetconfSummary import find_confSummary, get_confSummary -from pydl.pydlutils.trace import traceset2xy, TraceSet -from datetime import datetime -from pytz import timezone -from time import sleep - +from jinja2 import Template +import traceback +mpl.use('Agg') +plt.ioff() def read_table(dataset): table=pd.DataFrame() @@ -69,34 +73,36 @@ def get_expid(filename): def buildHTML(mjd, sos_dir='/data/boss/sos/', nocopy=False, ccd=''): figs = sorted(glob.glob(ptt.join(sos_dir,str(mjd).zfill(5),'summary_*')), key=get_expid, reverse=True) - with open(ptt.join(sos_dir,str(mjd).zfill(5),'Summary_'+str(mjd).zfill(5)+'.html'+ccd),'w') as f: - f.write('') - f.write('SOS plots for MJD '+str(mjd)+'') - reload_cmd="timerID=setTimeout('location.reload(true)',60000)" - f.write('') - f.write('

    SOS plots for MJD '+str(mjd)+' (SOS Logs)

    ') - # datetime object containing current date and time - now = datetime.now(timezone('UTC')) - f.write('
    This page last updated '+now.strftime("%a %b %d %H:%M:%S %Y %Z")+'.

    ') - - f.write('') - plt_exps=[] - - if getenv('OBSERVATORY').lower() == 'apo': ccds= ['b1','r1'] - else: ccds= ['b2','r2'] - for fig in figs: - filenam=ptt.basename(fig) - exp=str(int(fig.split('-')[1])) - if exp in plt_exps: continue - plt_exps.append(exp) - ccd=fig.split('-')[-1].split('.')[0] - b_fn ='../'+str(mjd).zfill(5)+'/summary_'+str(mjd).zfill(5)+'-'+exp.zfill(8)+'-'+ccds[0]+'.jpg' - r_fn ='../'+str(mjd).zfill(5)+'/summary_'+str(mjd).zfill(5)+'-'+exp.zfill(8)+'-'+ccds[1]+'.jpg' - b_fn_tn ='../'+str(mjd).zfill(5)+'/summary_'+str(mjd).zfill(5)+'-'+exp.zfill(8)+'-'+ccds[0]+'_wide.jpg' - r_fn_tn ='../'+str(mjd).zfill(5)+'/summary_'+str(mjd).zfill(5)+'-'+exp.zfill(8)+'-'+ccds[1]+'_wide.jpg' - - f.write('') - f.write('
    '+exp+'
    ') + + template = ptt.join(idlspec2d_dir,'templates','html','SOS_Summary_template.html') + out_file = ptt.join(sos_dir,str(mjd).zfill(5),'Summary_'+str(mjd).zfill(5)+'.html'+ccd) + + try: + now = datetime.now(datetime.UTC) + except: + now = datetime.utcnow() + update = now.strftime("%a %b %d %H:%M:%S %Y %Z") + + + if getenv('OBSERVATORY').lower() == 'apo': ccds= ['b1','r1'] + else: ccds= ['b2','r2'] + + plt_exps=[] + for fig in figs: + filenam=ptt.basename(fig) + exp=str(int(filenam.split('-')[1])) + if exp.zfill(8) in plt_exps: continue + plt_exps.append(exp.zfill(8)) + + jinja2_opts = dict(MJD=mjd, date = now, UPDATE=update, + blue=ccds[0], red=ccds[1], + exps=plt_exps, favicon=favicon) + + with open(out_file, 'w', encoding="utf-8") as f: + with open(template) as template_file: + j2_template = Template(template_file.read()) + f.write(j2_template.render(jinja2_opts)) + try: rename(ptt.join(sos_dir,str(mjd).zfill(5),'Summary_'+str(mjd).zfill(5)+'.html'+ccd), ptt.join(sos_dir,str(mjd).zfill(5),'Summary_'+str(mjd).zfill(5)+'.html')) except: @@ -132,7 +138,9 @@ def Exp_summ(mjd, exposure, camera, sos_dir='/data/boss/sos/'): exit() try: exp_log= exp_log[np.where((exp_log['EXPNUM']==exposure) & (exp_log['CAMERA']==camera))] - except: + except Exception as e: + tb_str = traceback.format_exception(etype=type(e), value=e, tb=e.__traceback__) + print("".join(tb_str)) print('Invalid '+'logfile-'+mjd+'.fits'+' format') exit() if len(exp_log) == 0: exit() @@ -350,7 +358,21 @@ def Exp_summ(mjd, exposure, camera, sos_dir='/data/boss/sos/'): #exp_out["delta_y_arcsec"]=plugmap.DELTA_DEC.values exp_out["xfocal"]=plugmap.XFOCAL.values exp_out["yfocal"]=plugmap.YFOCAL.values - + + for col in exp_out.columns: + try: + _data=exp_out[col].values + if _data.dtype.byteorder == '>': + _data = _data.byteswap().newbyteorder() + exp_out[col]=_data + except Exception as e: + print(col, e) + for i in range(exp_out[col].shape[1]): + _data=exp_out[col][:,i].values + if _data.dtype.byteorder == '>': + _data = _data.byteswap().newbyteorder() + exp_out[name+'_'+str(i)]=[_data] + exp_out_tab=Table.from_pandas(exp_out[['expid','exptime','mjd_obs','targetid','camera','target_ra','target_dec','fiber', 'objtype','flux_g','flux_r','flux_i','flux_z', 'MAG_g','MAG_r','MAG_i','CATDB_MAG_g','CATDB_MAG_r','CATDB_MAG_i','hmag', @@ -488,13 +510,13 @@ def func1(t,a,b): fig.suptitle('MJD='+str(mjd)+' EXP='+str(exp)+' CCD='+ccd+' CONFIG='+str(config)+' FIELDID='+str(exp_out.iloc[0].fieldid)+' DESIGNID='+str(exp_out.iloc[0].DESIGNID)) fig.tight_layout() - fig.show() + #fig.show() if wide is True: fig.savefig(ptt.join(sos_dir,str(mjd), 'summary_'+str(mjd)+'-'+str(exp).zfill(8)+'-'+ccd+'_wide.jpg')) else: fig.savefig(ptt.join(sos_dir,str(mjd), 'summary_'+str(mjd)+'-'+str(exp).zfill(8)+'-'+ccd+'.jpg'), dpi=150) -def read_SOS(directory, mjd, exp=None, no_wide=False, ref_data=None, nocopy=False): +def read_SOS(directory, mjd, exp=None, no_wide=False, ref_data=None, nocopy=False, update_hash=False): if exp is not None: exp=ptt.splitext(exp)[0] @@ -521,15 +543,8 @@ def read_SOS(directory, mjd, exp=None, no_wide=False, ref_data=None, nocopy=Fals buildHTML(mjd,sos_dir=directory,nocopy=nocopy) -if __name__ == '__main__' : - parser = argparse.ArgumentParser( - prog=ptt.basename(sys.argv[0]), - description='Create Fiber info Summary') - parser.add_argument('directory', type=str, help='SOS Directory') - parser.add_argument('mjd', type=str, help='mjd') - parser.add_argument('--exp', '-e', type=str, help='Exposure Name', default=None) - parser.add_argument('--nocopy', '-n', default=False, action='store_true', help='Prevent copy to combined Directory') - args = parser.parse_args() - - read_SOS(args.directory, args.mjd, args.exp, nocopy=args.nocopy) + if update_hash: + test = create_hash(ptt.join(directory,mjd)) + if test: + print("\nsha1sum is locked") diff --git a/python/boss_drp/sos/report_err.py b/python/boss_drp/sos/report_err.py new file mode 100644 index 000000000..5662b069a --- /dev/null +++ b/python/boss_drp/sos/report_err.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 + +from boss_drp.sos.run_log2html import run_soslog2html + + +import os +import os.path as ptt +from astropy.io import fits +from astropy.table import Table, unique +import traceback +import time + + +def report(FitsName, cams, obs, mjd, message): + i = 0 + if obs.lower() == 'apo': + sos_data = 'BOSS_SPECTRO_DATA_N' + else: + sos_data = 'BOSS_SPECTRO_DATA_S' + hdr = fits.getheader(ptt.join(os.getenv(sos_data),f'{mjd}',FitsName)) + logfile = ptt.join(os.getenv('BOSS_SPECTRO_REDUX'), f'logfile-{mjd}.fits') + + if lock(logfile,niter=10, pause=2): + try: + try: + log = Table.read(logfile,hdu=5) + for col in ['FILENAME','CARTID','CAMERA','EXPNUM','TEXT']: + log[col] = log[col].astype(object) + except Exception as e: + print(e) + log = Table(names=['FILENAME','MJD','CONFIG','FIELD','CARTID','EXPNUM','CAMERA','TEXT'], + dtype=[object,int,int,int,object,object,object,object]) + + log.add_row([hdr['FILENAME'].encode('utf-8'), + hdr['MJD'], + hdr['CONFID'], + hdr['FIELDID'], + hdr['CARTID'].strip().encode('utf-8'), + str(hdr['EXPOSURE']).zfill(8).strip().encode('utf-8'), + cams.strip().encode('utf-8'), + message.encode('utf-8')]) + log = unique(log, keys=['FILENAME','CAMERA','TEXT'], keep='last') + + for col in ['FILENAME','CARTID','CAMERA','EXPNUM','TEXT']: + log[col] = log[col].astype(str) + if ptt.exists(logfile): + with fits.open(logfile, mode='update') as hdul: + hdul[5] = fits.table_to_hdu(log) + hdul.flush() + else: + hdul = fits.HDUList() + hdul.append(fits.PrimaryHDU()) # 0 + hdul.append(fits.ImageHDU()) # bias/dark + hdul.append(fits.ImageHDU()) # flat + hdul.append(fits.ImageHDU()) # arc + hdul.append(fits.ImageHDU()) # science + hdul.append(fits.table_to_hdu(log)) # Messages + hdul.writeto(logfile) + except Exception as e: + tb_str = traceback.format_exception(etype=type(e), value=e, tb=e.__traceback__) + print("".join(tb_str)) + e = tb_str = None + finally: + unlock(file) + else: + print("Could not acquire lock. Exiting.") + + run_soslog2html(logfile, mjd, obs) + return diff --git a/python/boss_drp/sos/run_log2html.py b/python/boss_drp/sos/run_log2html.py new file mode 100644 index 000000000..52aafb4c5 --- /dev/null +++ b/python/boss_drp/sos/run_log2html.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +import boss_drp.utils.putils as putils +import re +import os.path as ptt + +def run_soslog2html(lf, mjd, obs): + cmd = f"sos_log2html, '{lf}', '{lf.replace('.fits','.html')}', /fps, /sn2_15, obs='{obs}'" #, /sdssv_sn2 + i = 0 + while i < 5: + if i > 0: + sleep(2) + print("Trying again to get idl license") + print("executing: " + cmd+"\n") + rv = putils.runCommand(f'idl -e "{cmd}"', echo=False) + if rv[0] != 0: + print("Failed to update SOS HTML log") + if 'Failed to acquire license.' not in rv[1]: + break + + return + squote = "\'" + addstring = '' + currentfile = ptt.join(ptt.dirname(lf),'logfile-current.html') + with open(lf.replace('.fits','.html'),'r') as source: + lines = source.readlines() + with open(currentfile,'w') as source: + for line in lines: + source.write(re.sub('',addstring, re.sub('BOSS Spectro','BOSS Spectro (Current)', line))) + yesterday = str(int(mjd)-1) + tomorrow = str(int(mjd)+1) + with open(ptt.join(ptt.dirname(ptt.dirname(lf)),'combined',f'logfile-{mjd}.html'),'w') as source: + source.write(re.sub('Yesterday: ',addstring, + re.sub('BOSS Spectro','BOSS Spectro (Current)', line))))) + diff --git a/python/boss_drp/sos/sdR_hdrfix.py b/python/boss_drp/sos/sdR_hdrfix.py new file mode 100755 index 000000000..8aa1efb61 --- /dev/null +++ b/python/boss_drp/sos/sdR_hdrfix.py @@ -0,0 +1,125 @@ +#!/usr/bin/env python3 +from boss_drp.utils import putils +from boss_drp.utils.lock import lock, unlock +from boss_drp.utils.hash import create_hash +from boss_drp.sos.run_log2html import run_soslog2html + +from pydl.pydlutils import yanny +from astropy.table import Table, unique +from astropy.io import fits +from os import getenv, remove, sep +from os import path as ptt +from glob import glob +import shutil +from collections import OrderedDict +import platform +from time import sleep +import re +import numpy as np + +def getLastMJD(silent=True): + if 'sdss5' not in platform.node(): + print('mjd is required when not running at observatories') + exit() + else: + path = ptt.join('/','data','spectro', '?????') + def get_key(fp): + if not ptt.isdir(fp): return(0) + filename = ptt.basename(fp) + int_part = filename.split()[0] + return(int(int_part)) + files = sorted(glob(path),key=get_key) + mjd = ptt.basename(files[-1]) + if silent is not True: + print('Latest MJD %s' % mjd) + return mjd + +def read_sdHdrFix(sdHdrFix_file): + try: + return(yanny.read_table_yanny(sdHdrFix_file, 'OPHDRFIX')) + except: + return(None) + + +def fixhdr(expid, hdrcards, mjd=None, obs=getenv('OBSERVATORY'), clobber=False, cameras='??'): + if mjd is None: mjd = getLastMJD() + + sdHdrFix_file = ptt.join(getenv('SDHDRFIX_DIR'), obs.lower(), 'sdHdrfix', 'sdHdrFix-'+str(mjd)+'.par') + + updates= None + + if clobber is not True: + updates = read_sdHdrFix(sdHdrFix_file) + + if updates is None: + updates = Table(names=('fileroot', 'keyword', 'value'), + descriptions = ('Root of file name, without any ".fit" suffix', 'Keyword name', 'Keyword value (as a string)'), + dtype = ('S20', 'S9', 'S80')) + + updates.meta = OrderedDict({'MJD': str(mjd) +" # Modified Julian Date for sdHdrFix file", + 'OBS': str(obs) +" # Observatory" }) + + for key in hdrcards.keys(): + frame = 'sdR-'+cameras+'-'+str(expid).zfill(8) + updates.add_row((frame, key.upper(), hdrcards[key])) + if key.lower() == 'quality': + fixSOSlog(frame,mjd,hdrcards[key],obs) + updates = unique(updates, keys=['fileroot','keyword'], keep='last') + + print('Writing to: ',sdHdrFix_file) + print(updates) + + if ptt.exists(sdHdrFix_file): + remove(sdHdrFix_file) + yanny.write_ndarray_to_yanny(sdHdrFix_file, updates, structnames='OPHDRFIX',hdr=updates.meta, comments=None) + +def fixSOSlog(frame,mjd,quality,obs): + logfiles = [] + logfiles.append(ptt.abspath(ptt.join(sep,'data','boss','sos',f'{mjd}',f'logfile-{mjd}.fits'))) + logfiles.append(ptt.abspath(ptt.join(sep,'data','boss','sosredo',f'{mjd}',f'logfile-{mjd}.fits'))) + logfiles.append(ptt.abspath(ptt.join(sep,'data','boss','sosredo','dev',f'{mjd}',f'logfile-{mjd}.fits'))) + for lf in logfiles: + if ptt.exists(lf): + if lock(f'{lf}', pause = 5): + try: + with fits.open(lf, mode='update') as hdul: + print(f'Updating {lf}') + for ext in [1,2,3,4]: + try: + hdul[ext] + except: + continue + if '??' in frame: + ccds = ['b1','r1'] if obs.lower() == 'apo' else ['b2','r2'] + else: + ccds = [None] + + for ccd in ccds: + tframe = frame.replace('??',ccd) if ccd is not None else frame + if hdul[ext].data is None: continue + idx = np.where(hdul[ext].data['FILENAME'] == f'{tframe}.fit.gz')[0] + if len(idx) == 0: + continue + else: + hdul[ext].data['QUALITY'][idx[0]] = quality + hdul.flush() + finally: + unlock(f'{lf}') + run_soslog2html(lf, mjd, obs) + + test = create_hash(ptt.dirname(lf)) + if test: + print("\nsha1sum is locked") + else: + continue + else: + continue +class Range(object): + def __init__(self, start, end): + self.start = start + self.end = end + def __eq__(self, other): + return self.start <= other <= self.end + def __repr__(self): + return '{{{0} - {1}}}'.format(self.start, self.end) + diff --git a/python/boss_drp/sos/sos_classes.py b/python/boss_drp/sos/sos_classes.py new file mode 100644 index 000000000..08d600fef --- /dev/null +++ b/python/boss_drp/sos/sos_classes.py @@ -0,0 +1,214 @@ +#!/usr/bin/env python + +import os, sys +import os.path as ptt + +""" Miscellaneous classes for sos programs """ + +#### +class Consts: + """Holds various constants use by the sos programs""" + + def __init__(self): + self.lockFileBase = "sos_runner" + self.dieFileName = "sos_die.die.die" + self.logName = "sos_log" + self.configName = "sos_config.conf" + self.MJDGlob = "[0-9]"*5 + self.versionFile = "sos_version" + self.licensePause = "5" + + def __repr__(self): + return self.__str__() + + def __str__(self): + return ("Consts:\n" + + "lockFile: " + self.lockFileBase + "\n" + + "dieFile: " + self.dieFileName + "\n" + + "logName: " + self.logName + "\n" + + "configName: " + self.configName + "\n" + + "versionFile: " + self.versionFile + "\n" + + "MJDGlob: " + self.MJDGlob); + + + +#### +class Config: + """Holds the configuration information read from the command line or ini""" + + def __init__(self): + self.MJD = "0" + self.fps = True + self.exposure = None + self.fitsDir = '/data/spectro' + self.plugDir = os.getenv('SDSSCORE_DIR') + self.controlDir = '/home/sdss5/boss/sos/control' + self.logDir = '/home/sdss5/boss/sos/logs' + self.sosdir = '/data/boss/sos' + self.dlogLevel = 40 + self.logLevel = 40 + self.iname = "" + self.globs = ["*"] + self.command = "" + self.pollDelay = 2 + self.nosvn = True + self.nocal = True + self.bookkeep = False + self.nice = False + self.platedb = False + self.redo = False + self.catchup = False + self.utah = False + self.test = False + self.nodb = False + self.no_reject = False + self.clobber_fibermap = False + self.sdssv_sn2 = False + self.sn2_15 = False + self.arc2trace = False + self.forcea2t = False + self.pause = False + self.verbose = 6 + self.termverbose=False + self.set_logLevel() + + def set_logLevel(self): + # Don't want to apply -v on each call, so always start with a base + if (self.verbose > 0): + self.logLevel = max(1, self.dlogLevel - self.verbose * 10) + + def setup(self, CCD='b1', mjd = None, exp = None, + redo=False, catchup=False, test=False, systemd=False, + no_gz=False, nodb=False, no_reject = False, sdssv_sn2 = False, + pause = False, arc2trace=False, forcea2t=False, sn2_15 = False, + clobber_fibermap=False, utah=False, termverbose=False): + self.nodb = nodb + self.no_reject = no_reject + self.sdssv_sn2 = sdssv_sn2 + self.sn2_15 = sn2_15 + self.arc2trace = arc2trace + self.forcea2t = forcea2t + self.pause = pause + self.clobber_fibermap = clobber_fibermap + self.set_logLevel() + self.iname = CCD + self.termverbose = termverbose + + if no_gz: + self.globs=["sdR-"+CCD+"-*.fit.gz","sdR-"+CCD+"-*.fit"] + else: + self.globs=["sdR-"+CCD+"-*.fit.gz"] + + if systemd: + self.redo = False + self.catchup = False + exp = None + mjd = None + self.termverbose = False + + if redo: + self.sosdir='/data/boss/sosredo' + self.nice=True + self.redo=True + self.iname = self.iname+'_redo' + elif test: + self.sosdir='/data/boss/sosredo/dev' + self.nice=True + self.redo=True + self.iname = self.iname+'_dev' + self.logDir = '/data/boss/sosredo/dev/logs/' + self.controlDir = '/data/boss/sosredo/dev/control/' + self.nodb = True + self.test = True + elif catchup: + self.nice=True + self.redo=True + self.catchup = True + self.iname = self.iname+'_catchup' + elif utah: + self.redo=True + self.nodb=True + self.utah=True + self.iname = self.iname+'_utah' + self.nice=True + self.pause=False + self.sosdir = ptt.join(os.getenv('BOSS_SPECTRO_REDUX'), 'sos', os.getenv('RUN2D', default=''), '{obs}') + self.sosdir = self.sosdir.format(obs=os.getenv('OBSERVATORY').lower()) + self.logDir = ptt.join(self.sosdir, 'logs') + self.controlDir = ptt.join(self.sosdir, 'control') + if os.getenv('OBSERVATORY').lower() == 'apo': + self.fitsDir = os.getenv('BOSS_SPECTRO_DATA_N') + else: + self.fitsDir = os.getenv('BOSS_SPECTRO_DATA_S') + else: + pass + + if exp is not None: + self.exposure = str(exp) + self.iname = self.iname+'_'+str(exp).zfill(8) + if mjd is not None: + self.MJD = mjd + self.iname = self.iname+'_'+str(mjd) + + if not ptt.exists(self.logDir): + os.makedirs(self.logDir, exist_ok = True) + if not ptt.exists(self.controlDir): + os.makedirs(self.controlDir, exist_ok = True) + if not ptt.exists(self.sosdir): + os.makedirs(self.sosdir, exist_ok = True) + + + def __repr__(self): + return self.__str__() + + def __str__(self): + return ("Config:\n" + + "MJD: " + self.MJD + "\n" + + "Exposure " + str(self.exposure) + "\n" + + "sosDir " + self.sosdir + "\n" + + "fitsDir: " + self.fitsDir + "\n" + + "plugDir: " + self.plugDir + "\n" + + "controlDir: " + self.controlDir + "\n" + + "logDir: " + self.logDir + "\n" + + "logLevel: " + str(self.logLevel) + "\n" + + "FPSMode: " + str(self.fps) + "\n" + + "iname: " + self.iname + "\n" + + "glob: " + str(self.globs) + "\n" + + "command: " + self.command + "\n" + + "pollDelay: " + str(self.pollDelay) + "\n" + + "nice: " + str(self.nice) + "\n" + + "plateDb: " + str(self.platedb) + "\n" + + "redo: " + str(self.redo) + "\n" + + "test: " + str(self.test) + "\n" + + "catchup: " + str(self.catchup) + "\n" + + "bookkeep: " + str(self.bookkeep) + "\n" + + "NoSvn: " + str(self.nosvn) + "\n" + + "noDB: " + str(self.nodb) + "\n" + + "no_reject: " + str(self.no_reject) + "\n" + + "clobber_fibermap: " + str(self.clobber_fibermap)+ "\n" + + "sdssv_sn2: " + str(self.sdssv_sn2) + "\n" + + "sn2_15: " + str(self.sn2_15) + "\n" + + "arc2trace: " + str(self.arc2trace) + "\n" + + "forcea2t: " + str(self.forcea2t) + "\n"+ + "pause: " + str(self.pause)); + + +#### +class PollWorker: + """Holds information for each poller""" + + def __init__(self): + self.workerNumber = 0 + self.glob = "*" + self.fileCount = 0 + + + def __repr__(self): + return self.__str__() + + def __str__(self): + return ("PollWorker:\n" + + "workerNumber: " + str(self.workerNumber) + "\n" + + "glob: " + self.glob + "\n" + + "fileCount: " + str(self.fileCount)); + diff --git a/python/boss_drp/spec1d/__init__.py b/python/boss_drp/spec1d/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/bin/fluxcorr_prior.py b/python/boss_drp/spec1d/fluxcorr_prior.py similarity index 60% rename from bin/fluxcorr_prior.py rename to python/boss_drp/spec1d/fluxcorr_prior.py index 6c70b6714..324d61b3c 100755 --- a/bin/fluxcorr_prior.py +++ b/python/boss_drp/spec1d/fluxcorr_prior.py @@ -1,4 +1,4 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 """ Try solving with a prior that fluxcorr = 1 @@ -7,27 +7,19 @@ import sys import os import os.path -import numpy as N -import pylab as P -#import fitsio +import numpy as np +import matplotlib.pyplot as plt from astropy.io import fits as pyf from numpy.polynomial import chebyshev from scipy.sparse.construct import spdiags -#import yanny import os import types -import importlib.machinery -#import importlib as imp - -location = os.getenv('IDLSPEC2D_DIR') -#yanny = imp.load_source('yanny', location+'/bin/yanny.py') -loader = importlib.machinery.SourceFileLoader('yanny', location+'/bin/yanny.py') -yanny = types.ModuleType(loader.name) -loader.exec_module(yanny) +#import importlib.machinery +from pydl.pydlutils import yanny #------------------------------------------------------------------------- def read_plan(planfile): - plan = yanny.read_yanny(planfile) + plan = yanny.read_table_yanny(planfile) plandir = os.path.dirname(planfile) framefiles = dict(b1=list(), b2=list(), r1=list(), r2=list()) @@ -96,8 +88,8 @@ def read_data(indir, framefiles, xythrucorr=False): fx.close() - flux = N.array(flux) - ivar = N.array(ivar) + flux = np.array(flux) + ivar = np.array(ivar) flux[ivar==0] = 0.0 #- cosmetics return flux, ivar, goodframes @@ -108,10 +100,10 @@ def calc_fluxcorr(flux, ivar, prior=0.5): print("Calculating flux corrections") #- The array to fill - fluxcorr = N.ones(flux.shape) + fluxcorr = np.ones(flux.shape) #- Determine range to actually fill - ii = N.where( N.sum(N.sum(ivar, axis=0), axis=0) > 0 )[0] + ii = np.where( np.sum(np.sum(ivar, axis=0), axis=0) > 0 )[0] imin, imax = ii[0], ii[-1]+1 flux = flux[:, :, imin:imax] ivar = ivar[:, :, imin:imax] @@ -119,9 +111,9 @@ def calc_fluxcorr(flux, ivar, prior=0.5): nexp, nspec, npix = flux.shape #- Make coadd; handle cases where sum(weights) = 0 - weighted_flux = N.sum(flux*ivar, axis=0) - sum_weights = N.sum(ivar, axis=0) - coadd = N.zeros(weighted_flux.shape) + weighted_flux = np.sum(flux*ivar, axis=0) + sum_weights = np.sum(ivar, axis=0) + coadd = np.zeros(weighted_flux.shape) ii = (sum_weights > 0) coadd[ii] = weighted_flux[ii] / sum_weights[ii] @@ -129,11 +121,11 @@ def calc_fluxcorr(flux, ivar, prior=0.5): #- FL = diag(coadd).dot(ChebyPolys) #- flux[i] = FL.dot(c[i]) npoly = 4 - xx = N.linspace(-1, 1, npix) + xx = np.linspace(-1, 1, npix) - L = N.zeros( (npix, npoly) ) + L = np.zeros( (npix, npoly) ) for i in range(npoly): - c = N.zeros(npoly) + c = np.zeros(npoly) c[i] = 1.0 L[:,i] = chebyshev.chebval(xx, c) @@ -143,13 +135,13 @@ def calc_fluxcorr(flux, ivar, prior=0.5): for iexp in range(nexp): #- Create diagonal weights matrix, throwing out worst 5% for robustness weights = ivar[iexp, ispec].copy() - if N.sum(weights) == 0: - corr = N.zeros(npoly) + if np.sum(weights) == 0: + corr = np.zeros(npoly) corr[0] = 1.0 c.append(corr) continue - wcut = N.percentile(weights[weights>0], 5) + wcut = np.percentile(weights[weights>0], 5) weights[weights 2: - xythrucorr = True -else: - xythrucorr = False - -plandir = os.path.dirname(os.path.abspath(planfile)) -framefiles = read_plan(planfile) -for camera in ('b1', 'b2', 'r1', 'r2'): - flux, ivar, goodframes = read_data(plandir, framefiles[camera], xythrucorr=xythrucorr) - if len(goodframes)>0: - fluxcorr = calc_fluxcorr(flux, ivar, prior=1.0) - addterm = N.zeros(fluxcorr[0].shape) - - i = 0 - for framefile in framefiles[camera]: - corrfile = plandir+'/'+framefile.replace('spFrame', 'spFluxcorr') - if corrfile.endswith('.gz'): - corrfile = corrfile[:-3] - - print("Writing", os.path.basename(corrfile)) - if framefile in goodframes: - corr=fluxcorr[i] - add = addterm - i+=1 - else: - fluxshape = pyf.getdata(framefile, 0).shape - corr = N.ones(fluxshape) - add = N.zeros(fluxshape) - - pyf.writeto(corrfile, corr, overwrite=True) - pyf.writeto(corrfile, add, overwrite=True) - os.system('gzip -f '+corrfile) - -# P.ion() -# i = 0 -# plotstuff(flux, fluxcorr, i) +def fluxcorr_prior(planfile, xythrucorr=False): + plandir = os.path.dirname(os.path.abspath(planfile)) + framefiles = read_plan(planfile) + for camera in ('b1', 'b2', 'r1', 'r2'): + flux, ivar, goodframes = read_data(plandir, framefiles[camera], xythrucorr=xythrucorr) + if len(goodframes)>0: + fluxcorr = calc_fluxcorr(flux, ivar, prior=1.0) + addterm = np.zeros(fluxcorr[0].shape) + + i = 0 + for framefile in framefiles[camera]: + corrfile = plandir+'/'+framefile.replace('spFrame', 'spFluxcorr') + if corrfile.endswith('.gz'): + corrfile = corrfile[:-3] + + print("Writing", os.path.basename(corrfile)) + if framefile in goodframes: + corr=fluxcorr[i] + add = addterm + i+=1 + else: + fluxshape = pyf.getdata(framefile, 0).shape + corr = np.ones(fluxshape) + add = np.zeros(fluxshape) + + pyf.writeto(corrfile+'.gz', corr, overwrite=True) + pyf.writeto(corrfile+'.gz', add, overwrite=True) + + # plt.ion() + # i = 0 + # plotstuff(flux, fluxcorr, i) diff --git a/bin/run_PyXCSAO.py b/python/boss_drp/spec1d/run_PyXCSAO.py similarity index 89% rename from bin/run_PyXCSAO.py rename to python/boss_drp/spec1d/run_PyXCSAO.py index 254ab4a05..53d260c1f 100755 --- a/bin/run_PyXCSAO.py +++ b/python/boss_drp/spec1d/run_PyXCSAO.py @@ -1,9 +1,10 @@ -#!/usr/bin/env python +#!/usr/bin/env python3 +import boss_drp +from boss_drp.utils import Splog import os import numpy as np try: - import pyxcsao from pyxcsao.crosscorrelate import PyXCSAO except: print('WARNING: pyxcsao is not installed') @@ -14,7 +15,6 @@ from astropy.table import Table from platform import python_version from datetime import datetime -from splog import Splog """ run_PyXCSAO.py: @@ -152,7 +152,7 @@ def run_PyXCSAO(fitsfile,run1d = os.getenv('RUN1D'), epoch=False): splog.log('Log file ' +logfile +' opened '+t0.strftime("%a %b %d %H:%M:%S %Y")) splog.log('UNAME: '+ os.popen('uname -a').read()) splog.log('DISPLAY= ' + os.getenv('DISPLAY', default='')) - splog.log('idlspec2d version ' + os.popen('idlspec2d_version').read()) + splog.log('idlspec2d version ' + boss_drp.__version__) splog.log('idlutils version ' + os.popen('idlutils_version').read()) splog.log('Python version ' + python_version()) if True: @@ -179,25 +179,15 @@ def run_PyXCSAO(fitsfile,run1d = os.getenv('RUN1D'), epoch=False): df.drop(columns=['snr', 'plate', 'fiber'], inplace=True, errors='ignore') test=Table.from_pandas(df) - test.write(run1d+'/spXCSAO-' + platemjd + '.fits',overwrite=True) + hdu = fits.BinTableHDU(data=test, name='PYXCSAO') + + # Create a new HDU list and write to FITS file + hdul = fits.HDUList([fits.PrimaryHDU(), hdu]) + hdul.writeto(run1d+'/spXCSAO-' + platemjd + '.fits', overwrite=True) + + #test.write(run1d+'/spXCSAO-' + platemjd + '.fits',overwrite=True) splog.log('CPU time to compute RVs = '+ str(datetime.now()-t0)) #except: splog.log('WARNING: Failed run of pyXCSAO\n') splog.close() - - - -if __name__ == '__main__' : - - parser = argparse.ArgumentParser( - prog=os.path.basename(sys.argv[0]), - description='Runs eBOSS RVs') - - parser.add_argument('fitsfile', type=str, help='fits file') - parser.add_argument('--run1d', '-r', type=str, help='run1d name', - default=os.getenv('RUN1D')) - parser.add_argument('--epoch', help='run for epoch Coadds', action='store_true') - args = parser.parse_args() - - run_PyXCSAO(args.fitsfile, run1d = args.run1d, epoch = False) diff --git a/python/boss_drp/utils/Sphdrfix.py b/python/boss_drp/utils/Sphdrfix.py new file mode 100644 index 000000000..8c62d6963 --- /dev/null +++ b/python/boss_drp/utils/Sphdrfix.py @@ -0,0 +1,80 @@ +from boss_drp.utils.getcard import getcard +from boss_drp import MissingEnvVarError +from boss_drp.field import Fieldtype + +try: + from sdss_access.path import Path + from sdss_access import Access + sdss_access = True +except: + sdss_access = False +from os import getenv +import os.path as ptt +from sys import exit +from pydl.pydlutils.yanny import read_table_yanny, yanny, write_table_yanny + +class Sphdrfix: + def __init__(self, mjd, fps=None, obs='APO', release=None, no_remote=True, splog=None): + self.mjd = str(mjd) + self.sphdrfix_table = None + if fps is None: + ft = Fieldtype(mjd=int(mjd)) + fps = ft.fps + self.fps = fps + self.obs = obs.lower() + self.release = release + if not sdss_access: + self.release = None + self.no_remote = no_remote + self.read_sphdrfix(splog) + + def read_sphdrfix(self, splog): + if self.release is not None: + path = Path(release=self.release, preserve_envvars=True) + path_options = {'mjd':self.mjd} + if path.exists('sdHdrFix', **path_options): + reportfile = path.full('sdHdrFix', **path_options) + elif path.exists('sdHdrFix', **path_options, remote=(not self.no_remote)): + access = Access(release=self.release) + reportfile = path.full('sdHdrFix', **path_options) + access.remote() + access.add('sdHdrFix', **path_ops) + access.set_stream() + valid = access.commit() + if valid is False: + return + else: + return + elif not self.fps: + speclog_dir = getenv('SPECLOG_DIR') + if speclog_dir is None: + if splog is None: + raise MissingEnvVarError('ERROR: Must set environment variable SPECLOG_DIR') + else: + splog.info('ERROR: Must set environment variable SPECLOG_DIR') + exit(1) + reportfile = ptt.join(speclog_dir, self.mjd, 'sdHdrFix-'+self.mjd+'.par') + else: + speclog_dir = getenv('SDHDRFIX_DIR') + if speclog_dir is None: + if splog is None: + raise MissingEnvVarError('ERROR: Must set environment variable SDHDRFIX_DIR') + else: + splog.info('ERROR: Must set environment variable SDHDRFIX_DIR') + exit(1) + reportfile = ptt.join(speclog_dir, self.obs, 'sdHdrfix','sdHdrFix-'+self.mjd+'.par') + if ptt.exists(reportfile): + self.sphdrfix_table = read_table_yanny(reportfile, 'OPHDRFIX') + self.sphdrfix_table.convert_bytestring_to_unicode() + + def fix(self, infile, hdr): + fileroot = ptt.basename(infile).split('.')[0] + wfileroot = fileroot.split('-') + wfileroot = '-'.join([wfileroot[0], '??', wfileroot[-1]]) + if self.sphdrfix_table is not None: + for row in self.sphdrfix_table: + if (row['fileroot'] == fileroot) or (row['fileroot'] == wfileroot): + hdr[row['keyword']] = row['value'] + if getcard(hdr,'QUALITY') is None: + hdr['QUALITY'] = 'excellent' + return hdr diff --git a/python/boss_drp/utils/__init__.py b/python/boss_drp/utils/__init__.py new file mode 100644 index 000000000..01a3ed59e --- /dev/null +++ b/python/boss_drp/utils/__init__.py @@ -0,0 +1,15 @@ + +from .match import match +from .grep import grep +from .get_lastline import get_lastline +from .load_module import load_env +from .get_dirs import get_dirs +from .mjd_match import mjd_match +from .splog import Splog +from .merge_dm import merge_dm +from .find_nearest_idx import find_nearest_indx +from .jdate import jdate +from .Sphdrfix import Sphdrfix +from .chpc2html import chpc2html +from .getcard import getcard +from .retry import retry diff --git a/python/boss_drp/utils/chpc2html.py b/python/boss_drp/utils/chpc2html.py new file mode 100644 index 000000000..36aa88ffd --- /dev/null +++ b/python/boss_drp/utils/chpc2html.py @@ -0,0 +1,7 @@ +from os import getenv + +def chpc2html(fpath): + sas_base_dir = getenv('SAS_BASE_DIR', default=None) + if sas_base_dir is None: + sas_base_dir = "/uufs/chpc.utah.edu/common/home/sdss50" + return(fpath.replace(sas_base_dir,"https://data.sdss5.org/sas/")) diff --git a/python/boss_drp/utils/clean.py b/python/boss_drp/utils/clean.py new file mode 100644 index 000000000..0e718c59e --- /dev/null +++ b/python/boss_drp/utils/clean.py @@ -0,0 +1,192 @@ +#!/usr/bin/env python3 +from boss_drp.field import * + +from collections import OrderedDict +from pydl.pydlutils import yanny +import os.path as ptt +from os import getcwd, getenv, rmdir +import numpy as np +from glob import glob +from os import remove as rm +import sys +import subprocess +from astropy.table import Table, vstack +from tqdm import tqdm + +def remove(pt, dry= True): + for file in glob(pt): + try: + if ptt.exists(file): + if not dry: + if ptt.isdir(file): + rmdir(file) + else: + rm(file) + else: + tqdm.write('\t',dry, file) + except Exception as e: + tqdm.write(e) + pass + +fmag_f = ['spfibermap-{field}-{mjd}.fits','spfibermap-{field}-{mjd}.log'] + +debug_f = ['*.inp','*_supp.fits','spProc_bksub-*-{expid}.fits','sdProc-*{expid}.fits', + 'extraction/extract_*{expid}*.prt','extraction/gauss_*{expid}*.prt', + 'extraction/sigma_*{expid}*.prt', + 'flat_extraction/extract_*{expid}*.prt','flat_extraction/gauss_*{expid}*.prt', + 'spFrame_bksub-*{expid}+.fits','fitspectraresol-*{expid}*', + 'spArcFlux-*{expid}.fits','spProc-*{expid}.fits','lamps.html', + 'spFrame_bksub-*{expid}.fits','spFrame_preext-*{expid}.fits', + 'spFrame_preflat-*{expid}.fits','extraction','flat_extraction'] +spec2d_f = ['spec2d-{field}-{mjd}.started','spec2d-{field}-{mjd}.done', + 'spDiag2d-{field}-{mjd}.log*','spDiag2d-{field}-{mjd}.ps*', + 'spDiag2d-{field}-{mjd}.pdf*', + 'spArc-*{expid}.fits.gz','spFluxdistort-*{expid}.fits', + 'spFlat_*{expid}.fits.gz','spFlat-*{expid}.fits.gz', + 'spFlat_*{expid}.fits', 'spFlatFlux-*{expid}.fits', + 'spFrame-*-{expid}.fits.gz'] + +comb_f = ['specombine-{field}-{mjd}.started','specombine-{field}-{mjd}.done'] +comb_f_epoch = ['spPlancombepoch-{field}-{mjd}.started','spPlancombepoch-{field}-{mjd}.done'] +comb_f_ext = ['spDiagcomb-{field}-{mjd}.log*','spDiagcomb-{field}-{mjd}.ps*', + 'spDiagcomb-{field}-{mjd}.pdf*', + 'spCFrame-*{expid}.fits.gz','spCFrame-*{expid}.fits', + 'spFluxcorr-*{expid}.fits*','spFluxcalib-*{expid}.fits*', + 'spField-{field}-{mjd}.fits','coadd/{mjd}/spSpec-{field}-{mjd}-*.fits', + 'coadd/{mjd}','coadd','spSN2d-{field}-{mjd}-*.ps*', + 'spSN2d-{field}-{mjd}-*.pdf*','spSN2d-{field}-{mjd}.pdf*', + 'spSN2d-{field}-{mjd}.ps*','spFluxdistort-*{expid}.fits*', + 'spFluxdistort-*{expid}.ps*','spFluxdistort-*{expid}.pdf*', + 'spFluxdistort-{field}-{mjd}.pdf*','spFluxdistort-{field}-{mjd}.ps*'] + +spec1d_f = ['spec1d-{field}-{mjd}.started','spec1d-{field}-{mjd}.done', + '{run1d}/spDiag1d-{field}-{mjd}.log*', + '{run1d}/spDiag1d-{field}-{mjd}.ps*', + '{run1d}/spDiag1d-{field}-{mjd}.pdf*', + '{run1d}/spZall-{field}-{mjd}.fits', + '{run1d}/spZbest-{field}-{mjd}.fits', + '{run1d}/spZline-{field}-{mjd}.fits', + '{run1d}/spXCSAO-{field}-{mjd}.fits', + '{run1d}/spXCSAO-{field}-{mjd}.log*','{run1d}'] + +post_f = ['fieldlist-{field}-{mjd}.log*'] +merge_f = ['fieldmerge-{field}.log*','fieldmerge-{field}-{mjd}.log*', + 'spAll-{field}-{mjd}.log*'] +specF_log_f = ['spSpec_reformat-{field}-{mjd}.log*','spec-{field}-{mjd}.log*'] +specF_f = ['spec-{field}-{mjd}-*.fits','spAll-{field}-{mjd}.fits.gz', + 'spAllLine-{field}-{mjd}.fits.gz'] +specI_f = ['*',''] +calib_f = ['spCalib_QA-{run2d}-{field}-{mjd}.ps*','spCalib_QA-{run2d}-{field}-{mjd}.log*', + 'spCalib_QA-{run2d}-{field}-{mjd}.pdf*'] +reset_f = ['spPlan2d-{field}-{mjd}.par','spPlancomb-{field}-{mjd}.par'] +reset_f_epoch = ['spPlancombepoch-{field}-{mjd}.par'] +redux_f = ['redux-{field}-{mjd}*'] + +def clean_fmjd(topdir, run2d, run1d, field, mjd, epoch=False, dry=False, + clean_type='full', reset=False, remove_redux = False, + verbose=True): + field = field_to_string(field) + top2d = ptt.join(topdir, run2d) + if not epoch: + es = '' + plan = f'spPlancomb-{field}-{mjd}.par' + else: + es = 'epoch' + plan = f'spPlancombepoch-{field}-{mjd}.par' + plan1d = yanny.read_table_yanny(ptt.join(field_dir(top2d,field),es, plan),'SPEXP') + spPlan2ds = plan1d.meta['planfile2d'].replace("'",'').split() + sp2d = Table() + for spPlan2d in spPlan2ds: + plan2d = yanny.read_table_yanny(ptt.join(field_dir(top2d,field),spPlan2d),'SPEXP') + plan2d.meta = {} + sp2d = vstack([sp2d, plan2d]) + sp2d['expid'] = '' + sp2d['expid'] = [ptt.splitext(x)[0].split('-')[-1] for x in np.asarray(sp2d['name'][:,0],dtype=str).tolist()] + sp1d = plan1d + sp1d['expid'] = '' + sp1d['expid'] = [ptt.splitext(x)[0].split('-')[-1] for x in np.asarray(sp1d['name'][:,0],dtype=str).tolist()] + + if not epoch: + tcomb_f = comb_f + comb_f_ext + else: + tcomb_f = comb_f_epoch +comb_f_ext + + if clean_type == 'all': + clean = OrderedDict({'fmag':fmag_f, 'debug':debug_f,'spec2d':spec2d_f,'comb':tcomb_f, + 'spec1d':spec1d_f,'post':post_f,'merge':merge_f,'specF_log':specF_log_f, + 'specF':specF_f,'specI':specI_f,'spCalib':calib_f}) + if reset: + remove_redux = True + if epoch: + clean['reset'] = reset_f_epoch + else: + clean['reset'] = reset_f + if remove_redux: + clean['redux'] = redux_f + elif clean_type == 'spec2d': + clean = OrderedDict({'debug':debug_f,'spec2d':spec2d_f, + 'comb':tcomb_f,'spec1d':spec1d_f, + 'post':post_f,'merge':merge_f,'specF_log':specF_log_f, + 'specF':specF_f,'specI':specI_f,'spCalib':calib_f}) + elif clean_type == 'comb': + clean = OrderedDict({'comb':tcomb_f,'spec1d':spec1d_f, + 'post':post_f,'merge':merge_f,'specF_log':specF_log_f, + 'specF':specF_f,'specI':specI_f,'spCalib':calib_f}) + elif clean_type == 'spec1d': + clean = OrderedDict({'spec1d':spec1d_f, 'post':post_f,'merge':merge_f, + 'specF_log':specF_log_f, 'specF':specF_f,'specI':specI_f,'spCalib':calib_f}) + elif clean_type == 'post': + clean = OrderedDict({'post':post_f,'merge':merge_f,'specF_log':specF_log_f, + 'specF':specF_f,'specI':specI_f,'spCalib':calib_f}) + elif clean_type == 'merge': + celan = OrderedDict({'merge':merge_f,'specF_log':specF_log_f, + 'specF':specF_f,'specI':specI_f,'spCalib':calib_f}) + elif clean_type == 'reformat': + clean = OrderedDict({'specF_log':specF_log_f,'specF':specF_f, + 'specI':specI_f, 'spCalib':calib_f}) + elif clean_type == 'spCalib': + clean = OrderedDict({'spCalib':calib_f}) + else: + exit() + + + for key, value in clean.items(): + if key in ['spec2d', 'debug']: + expTab = sp2d + elif key in ['comb']: + expTab = sp1d + else: + expTab = None + _step_clean(key,value, topdir, run2d, run2d, field, mjd, expTab, + epoch=epoch, dry=dry, verbose=verbose) + +def _step_clean(step, fpath, topdir, run2d, run1d, field, mjd, expTab, + epoch=False, dry=False, verbose = True): + es = '' if not epoch else 'epoch' + if step not in ['specI','specF']: + basedir = ptt.join(field_dir(ptt.join(topdir, run2d), field), es) + elif step == 'specI': + basedir = field_png_dir(topdir, run2d, run1d, field, mjd, epoch=epoch) + elif step == 'specF': + basedir = field_spec_dir(topdir, run2d, field, mjd, epoch=epoch, full=True) + for fp in fpath: + _type_clean(basedir, fp, {'run2d':run2d,'run1d':run1d,'field':field,'mjd':mjd}, + expTab, dry=dry, verbose=verbose) + if step == 'specF': + _type_clean(basedir.replace('full','lite'), fp, + {'run2d':run2d,'run1d':run1d,'field':field,'mjd':mjd}, expTab, + dry=dry, verbose=verbose) + +def _type_clean(basedir, fpath, params, expTab, dry=False, verbose=True): + if 'expid' not in fpath: + expids = [''] + else: + expids = [] + for row in expTab: + expids.append(row['expid']) + for expid in expids: + if verbose: + tqdm.write(ptt.join(basedir,fpath.format(**params,expid=expid))) + remove(ptt.join(basedir,fpath.format(**params,expid=expid)), dry=dry) + + diff --git a/python/boss_drp/utils/daily_log/Flag.py b/python/boss_drp/utils/daily_log/Flag.py new file mode 100644 index 000000000..de266b033 --- /dev/null +++ b/python/boss_drp/utils/daily_log/Flag.py @@ -0,0 +1,21 @@ + +class Flag: + def __init__(self,name,color,code,desc): + self.name=name + self.color=color + self.code=code + self.desc=desc + def key(self): + return(f"

    {self.name}

    {self.desc}\n") + +incomplete = Flag('MAGENTA','magenta','#FF00FF','Reduction has yet to be started due to incomplete transfer') +stopped = Flag('RED','red','#FF0000','Stopped Reduction') +NoExp = Flag('MAROON','Maroon','#FFA500','Stopped Reduction for NO GOOD EXPOSURES') +Error_warn = Flag('ORANGE','DarkOrange','#FF8C00','Pipeline ran with errors/warnings') +running = Flag('YELLOW','Gold', '#FFD700','Pipeline is still running') +#NoRedux = Flag('BLUE','blue','#0000FF','No Reductions') +NoObs = Flag('BLUE','blue','#0000FF','No Observations') +NoRedux = Flag('TEAL','MediumTurquoise','#48D1CC','No Science Observations') +#NoObs = Flag('TEAL','Teal','#008080','No Observations') +NoIssues = Flag('GREEN','green','#008000','No issues') +Silent_warn = Flag('ORANGE','#FF8C00','#FF8C00','Pipeline ran with acceptable warnings') diff --git a/python/boss_drp/utils/daily_log/__init__.py b/python/boss_drp/utils/daily_log/__init__.py new file mode 100644 index 000000000..9f5ac6e08 --- /dev/null +++ b/python/boss_drp/utils/daily_log/__init__.py @@ -0,0 +1,11 @@ +from .html import daily_log_html +from .file import daily_log_to_file +from .file import daily_log_js as js +from .email import daily_log_email +from .index import daily_log_index +from .parse_log import (Crash_log, errors, py_err, noerr_cal_b, noerr_cal_r, + parse_log, LogCheck, CheckRedux) +from .summary import (_Summary as summary, _summary_html, trace as trace_summary) + + + diff --git a/python/boss_drp/utils/daily_log/email.py b/python/boss_drp/utils/daily_log/email.py new file mode 100644 index 000000000..9e3e4ce76 --- /dev/null +++ b/python/boss_drp/utils/daily_log/email.py @@ -0,0 +1,60 @@ +from boss_drp.utils.daily_log.html import daily_log_html +from boss_drp.utils.daily_log.file import daily_log_to_file + +import numpy as np +import os.path as ptt +import smtplib +from email.mime.text import MIMEText +from email.mime.multipart import MIMEMultipart +from email.mime.application import MIMEApplication +from os import getenv + +def daily_log_email(subject, attachment, logger, obs, mjd, + email_file = None, topdir=None, epoch=False, + run2d=None, run1d=None, content=None, custom=None, + from_domain="chpc.utah.edu", redux = None): + + + body, _ = daily_log_html(obs, mjd, topdir=topdir, run2d=run2d, run1d=run1d, + redux=redux, email=True, epoch=epoch, custom=custom) + + daily_log_to_file(obs, mjd, topdir=topdir, run2d=run2d, run1d=run1d, + redux=redux, epoch=epoch, custom=custom) + + try: + emails = open(email_file).read().splitlines() + except: + emails = [] + logger.info(email_file+' does not exist') + + msg = MIMEMultipart("alternative") + msg['Subject'] = subject + msg['From'] = f"BOSS Pipeline <{getenv('USER')}@{from_domain}>" + msg['BCC'] = ', '.join(emails) + + + + part1 = MIMEText("An html compatible email view is required to view the full email","plain") + part2 = MIMEText(body, "html") + #part2 = MIMEText("
    \n".join(body), "html") + msg.attach(part1) + msg.attach(part2) + + if attachment is not None: + attachment = np.atleast_1d(attachment) + + + for f in attachment: + with open(f, "rb") as fil: + part = MIMEApplication( + fil.read(), + Name=ptt.basename(f) + ) + # After the file is closed + part['Content-Disposition'] = 'attachment; filename="%s"' % ptt.basename(f) + msg.attach(part) + + s = smtplib.SMTP('localhost') + s.send_message(msg) + s.quit() + return(None) diff --git a/python/boss_drp/utils/daily_log/file.py b/python/boss_drp/utils/daily_log/file.py new file mode 100644 index 000000000..fd097939e --- /dev/null +++ b/python/boss_drp/utils/daily_log/file.py @@ -0,0 +1,88 @@ +from boss_drp.utils.daily_log.html import daily_log_html +from boss_drp.utils.daily_log.index import daily_log_index +from boss_drp.utils.chpc2html import chpc2html +from boss_drp import daily_dir, favicon, idlspec2d_dir + +import numpy as np +from os import getenv, makedirs, symlink +import os.path as ptt +import datetime +from jinja2 import Template +from glob import glob + +def daily_log_to_file(obs, mjd, topdir=None, run2d=None, run1d=None, redux=None, + html_log=None, rlogs=None, summary=True, epoch=False, custom = None): + obs = np.atleast_1d(obs).tolist() + if run2d is None: + run2d = getenv('RUN2D') + outdir = ptt.join(daily_dir, 'logs', 'Status', 'daily', run2d) + if epoch: + outdir = ptt.join(daily_dir, 'logs', 'Status', 'epoch', run2d) + elif custom is not None: + outdir = ptt.join(daily_dir, 'logs', 'Status', custom, run2d) + makedirs(outdir, exist_ok=True) + sfiles = daily_log_js(outdir, topdir, run2d, epoch = epoch, custom=custom) + + for obs in obs: + if html_log is None: + body, rlogs = daily_log_html(obs, mjd, topdir=topdir, run2d=run2d, run1d=run1d, + redux=redux, epoch=epoch, custom = custom) + else: + body = html_log + + if rlogs is not None: + for r in rlogs: + dir_ = ptt.join(outdir,'redux_logs',ptt.basename(ptt.dirname(r))) + if not ptt.exists(dir_): + makedirs(dir_) + try: + symlink(r, ptt.join(dir_, ptt.basename(r))+'.log') + except: + pass + if custom is not None: + for r1d in glob(ptt.join(ptt.dirname(r),f'redux_{custom}_{obs}-{mjd}_?????*')): + try: + symlink(r1d, ptt.join(dir_, ptt.basename(r1d))+'.log') + except: + pass + template = ptt.join(idlspec2d_dir,'templates','html','daily_log_template.html') + + with open(ptt.join(outdir,f'{mjd}-{obs.upper()}.html'), 'w', encoding="utf-8") as f: + name = f'{run2d} {mjd}-{obs.upper()}' + updated =(' last updated: '+datetime.datetime.ctime(datetime.datetime.now())+' '+ + str(datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo)) + with open(template) as template_file: + j2_template = Template(template_file.read()) + f.write(j2_template.render(summary = sfiles, body=body, + favicon=favicon, name=name, + updated=updated)) + + if summary: + daily_log_index(outdir, run2d, epoch = epoch, custom=custom, fast_mjds = [mjd]) + +def daily_log_js(directory, topdir, run2d, epoch=False, custom=None): + if topdir is None: + topdir = getenv('BOSS_SPECTRO_REDUX') + + summary =[] + for filep in [f'spAll-{run2d}.fits.gz',f'spAll-lite-{run2d}.fits.gz', + f'fieldlist-{run2d}.fits',f'fieldlist.html']: + if epoch: + sum_dir = 'epoch' + elif custom is not None: + sum_dir = 'custom' + else: + sum_dir = 'daily' + filep = ptt.join(topdir, run2d, 'summary',sum_dir,filep) + if 'spAll-lite' in filep: + filet = 'spall-lite' + elif 'spAll' in filep: + filet = 'spall' + elif 'fieldlist.html' in filep: + filet = 'fieldlisthtml' + else: + filet = 'fieldlistfits' + + + summary.append(dict(path=chpc2html(filep), name=filet)) + return(summary) diff --git a/python/boss_drp/utils/daily_log/html.py b/python/boss_drp/utils/daily_log/html.py new file mode 100644 index 000000000..3b0eba24f --- /dev/null +++ b/python/boss_drp/utils/daily_log/html.py @@ -0,0 +1,261 @@ +from boss_drp.utils.daily_log.Flag import * +from boss_drp.utils.daily_log.parse_log import CheckRedux, parse_log +from boss_drp.utils.hash import check_hash +from boss_drp.utils.chpc2html import chpc2html +from boss_drp.field import field_to_string as f2s +from boss_drp import idlspec2d_dir +from boss_drp.field import field_dir, field_spec_dir, field_png_dir + +from pydl.pydlutils.yanny import yanny, read_table_yanny + +import numpy as np +from os import getenv +import os.path as ptt +import glob +try: + import json + read_json = True +except: + read_json = False +import pandas as pd +import time +from collections import OrderedDict +from jinja2 import Template + +def daily_log_html(obs, mjd, topdir=None, run2d=None, run1d=None, redux=None, + email=False, epoch = False, custom=None): + obs = np.atleast_1d(obs).tolist() + obs = [x.lower() for x in obs] + if topdir is None: + topdir = getenv('BOSS_SPECTRO_REDUX') + if run2d is None: + run2d = getenv('RUN2D') + if run1d is None: + run1d = getenv('RUN1D') + + fdr = '*' if custom is None else custom + cs = False if custom is None else True + custom_base = custom + if custom is not None: + custom_base = custom + if obs[0].lower() == 'lco': + custom = custom+'_lco' + elif obs[0].lower() == 'apo': + custom = custom+'_apo' + fdr = custom + fd = field_dir(ptt.join(topdir, run2d),fdr, custom = cs) + + + if redux is None or len(redux) == 0: + if epoch: + redux = glob.glob(ptt.join(fd,'epoch', f'spPlancombepoch-??????-{mjd}.par')) + elif custom is not None: + redux = glob.glob(ptt.join(fd, f'spPlanCustom-{custom}-{mjd}.par')) + else: + redux = glob.glob(ptt.join(fd, f'spPlan2d-??????-{mjd}.par')) + + if epoch: + plans = glob.glob(ptt.join(fd,'epoch', f'spPlancombepoch-??????-{mjd}.par')) + elif custom is not None: + plans = glob.glob(ptt.join(fd, f'spPlanCustom-{custom}-{mjd}.par')) + else: + plans = glob.glob(ptt.join(fd, f'spPlan2d-??????-{mjd}.par')) + + + html = pd.DataFrame() + rlogs = [] + for r in redux: + if epoch: + plan = r.replace('redux-','spPlancombepoch-') + elif custom is not None: + plan = r.replace('redux-', 'spPlanCustom-') + else: + plan = r.replace('redux-','spPlan2d-')#+'.par' + if '.par' not in plan: + plan = plan+'.par' + if 'redux-' not in r: + if epoch: + r = r.replace('spPlancombepoch-','redux-').replace('.par','') + elif custom is not None: + r = r.replace('spPlanCustom-','redux_').replace('.par','') + else: + r = r.replace('spPlan2d-','redux-').replace('.par','') + rlogs.extend([r, r+'.o',r+'.e']) + yplan = yanny(plan) + hdr = yplan.new_dict_from_pairs() + if 'OBS' in hdr.keys(): + thisobs = hdr['OBS'].lower() + else: + thisobs = 'apo' + if thisobs not in obs: + continue + if epoch: + plan2d = hdr['planfile2d'].replace("'",'').split() + else: + plan2d = None + if 'DITHER' in hdr.keys(): + dither = hdr['DITHER'] + elif epoch: + dither = 'F' + elif custom is not None: + dither = 'F' + else: + dither = '?' + rs = ptt.basename(r).split('-') + if len(rs) == 2: + first_part, middle_with_dash = ptt.basename(r).split('_', 1) + middle_part, last_part = middle_with_dash.rsplit('-', 1) + rs = [first_part, middle_part, last_part] + field = rs[1] + mj = rs[2].split('.')[0] + if int(mj) != int(mjd): + continue + if custom is not None: + mjd1ds = np.unique(read_table_yanny(plan,'COADDPLAN')['EPOCH_COMBINE'].data).astype(str) + else: + mjd1ds = [None] + for mjd1d in mjd1ds: + fhtml = CheckRedux(topdir, run2d, run1d, field, mj, thisobs, + dither=dither, epoch=epoch, plan2d=plan2d, + custom = custom_base, mjd1d=mjd1d) + + html = pd.concat([html, pd.DataFrame([fhtml])]) + + body = {} + body['run2d'] = run2d + body['obs'] = ','.join([x.upper() for x in obs]) + body['mjd'] = mjd + if custom is not None: + body['daily'] = None + else: + body['daily'] = OrderedDict() + body['daily']['OBS'] = [x.upper() for x in obs] + for ob in obs: + ob = ob.upper() + if custom is None: + SOS_log = ptt.abspath(ptt.join(topdir,'..','sos',ob.lower(),f"{mjd}",f"logfile-{mjd}.html")) + if ptt.exists(SOS_log): + SOS_log_link = f"
    Log" if ptt.exists(SOS_log) else "N/A" + else: + sos_dir = 'BOSS_SOS_N' if ob.lower() == 'apo' else 'BOSS_SOS_S' + SOS_log = ptt.abspath(ptt.join(getenv(sos_dir, default=''),f"{mjd}",f"logfile-{mjd}.html")) + SOS_log_link = f"Log" if ptt.exists(SOS_log) else "N/A" + if SOS_log_link is not None: + body['daily'][f'{ob}_soslog'] = SOS_log_link + + if ptt.exists(SOS_log): + valid = check_hash(ptt.abspath(ptt.join(getenv(sos_dir, default=''),f"{mjd}")),verbose=False) + if valid: + body['daily'][f'{ob}_checksum'] = f'{ob} SOS Transfer: Complete
    ' + elif ptt.exists(ptt.abspath(ptt.join(getenv(sos_dir, default=''),f"{mjd}",f"{mjd}.sha1sum"))): + body['daily'][f'{ob}_checksum'] = '{ob} SOS Transfer: Failed
    ' + else: + pass#body['daily'][f'{ob}_checksum'] = None + + transferlog_json = ptt.join(getenv('DATA_ROOT', default=''),"staging/{obs}/atlogs/{mjd}/{mjd}_status.json") + nightlogs = ptt.join(getenv('DATA_ROOT', default=''),"staging/{obs}/reports/mos/{th}") + if read_json: + if ptt.exists(transferlog_json.format(obs=ob.lower(), mjd=mjd)): + with open(transferlog_json.format(obs=ob.lower(), mjd=mjd)) as lf: + nightlog = json.load(lf)['logfile'] + if nightlog is None: + body['daily'][f'{ob}_nightlog'] = "Missing" + else: + nightlog = nightlogs.format(obs=ob.lower(),th = nightlog) + nightlogh = f"{ptt.basename(nightlog)}" + body['daily'][f'{ob}_nightlog'] = nightlogh + elif len(plans) > 0: + body['daily'][f'{ob}_nightlog'] = "Missing" + else: + body['daily'][f'{ob}_nightlog'] = "???" + + spTrace = ptt.abspath(ptt.join(topdir,run2d,'trace',f"{mjd}",f"run_spTrace_{mjd}_{ob.upper()}.o.log")) + flag,_ = parse_log(spTrace) + spTracee = ptt.abspath(ptt.join(topdir,run2d,'trace',f"{mjd}",f"run_spTrace_{mjd}_{ob.upper()}.e.log")) + flag2,_ = parse_log(spTracee) + if flag2 != NoIssues: + flag = stopped + if run2d == 'master': + if mjd < 60418: + flag = NoIssues + if epoch: + flag = NoIssues + + spTraceP = ptt.abspath(ptt.join(topdir,run2d,'trace',f"{mjd}",f"spPlanTrace-{mjd}_{ob.upper()}.par")) + spTraceP = f"par" if ptt.exists(spTraceP) else "N/A" + + spTrace = f"o.log" if ptt.exists(spTrace) else "N/A" + + spTrace1 = ptt.abspath(ptt.join(topdir,run2d,'trace',f"{mjd}",f"run_spTrace_{mjd}_{ob.upper()}.e.log")) + spTrace1 = f"e.log" if ptt.exists(spTrace1) else "N/A" + + spTrace2 = ptt.abspath(ptt.join(topdir,run2d,'trace',f"{mjd}",f"arcs_{mjd}_{ob.lower()}.html")) + spTrace2 = f"Plots" if ptt.exists(spTrace2) else "N/A" + body['daily'][f'{ob}_sptrace'] = dict(plan=spTraceP,log=spTrace,elog=spTrace1,plots=spTrace2) + + else: + reduxb = ptt.abspath(ptt.join(field_dir(ptt.join(topdir, run2d), + custom, custom=True), + f'redux_{custom}-{mjd}')) + flag, _ = parse_log(reduxb.replace('redux_','spDiagcomb-')+'.log',custom=custom) + reduxo = reduxb+'.o' + reduxo = f"o" + reduxe = reduxb+'.e' + reduxe = f"e" + body['reduxlog'] = reduxo + body['reduxelog'] = reduxe + # spAll + if epoch: + sd = 'epoch' + sf = '' + elif custom is not None: + sd = custom_base + sf =f'-{custom_base}' + else: + sd = 'daily' + sf = '' + body['summary'] = [] + spAll = ptt.join(topdir,run2d,'summary',f'{sd}',f'spAll-{run2d}{sf}.fits.gz') + if ptt.exists(spAll): + if email: + spallh = f" spAll ({time.ctime(ptt.getmtime(spAll))})" + else: + spallh = f" spAll " + body['summary'].append(spallh) + spAll = ptt.join(topdir,run2d,'summary',f'{sd}',f'spAll-lite-{run2d}{sf}.fits.gz') + if ptt.exists(spAll): + if email: + spallh = f" spAll-lite ({time.ctime(ptt.getmtime(spAll))})" + else: + spallh = f" spAll-lite " + body['summary'].append(spallh) + # fieldlist + if custom is None: + flist = ptt.join(topdir,run2d,'summary',sd,f'fieldlist-{run2d}.fits') + if ptt.exists(flist): + if email: + flisth = f" FieldList (fits) ({time.ctime(ptt.getmtime(flist))})" + else: + flisth = f" FieldList (fits) " + body['summary'].append(flisth) + flist = ptt.join(topdir,run2d,'summary',sd,f'fieldlist.html') + if ptt.exists(flist): + if email: + flisth = f" FieldList (html) ({time.ctime(ptt.getmtime(flist))})" + else: + flisth = f" FieldList (html) " + body['summary'].append(flisth) + + try: + html = html.sort_values(by=['MJD','Field'], ascending = [False,True], key=lambda col: col.astype(int)) + except: + pass + body['fmjdlog'] = html.to_html(index=False, escape=False, justify="center").replace('', '') + + template = ptt.join(idlspec2d_dir,'templates','html','daily_log_body_template.html') + + with open(template) as template_file: + j2_template = Template(template_file.read()) + body = j2_template.render(**body) + + return(body, rlogs) diff --git a/python/boss_drp/utils/daily_log/index.py b/python/boss_drp/utils/daily_log/index.py new file mode 100644 index 000000000..c035cb75a --- /dev/null +++ b/python/boss_drp/utils/daily_log/index.py @@ -0,0 +1,182 @@ +from boss_drp.utils.daily_log.Flag import * +from boss_drp.utils.daily_log.summary import _Summary, trace as trace_summary +from boss_drp import daily_dir, favicon, idlspec2d_dir +from boss_drp.utils import jdate + +import os.path as ptt +from os import rename, getenv, makedirs +import glob +import numpy as np +import datetime +from collections import OrderedDict +from jinja2 import Template +import json + +from pydl.pydlutils.yanny import yanny, read_table_yanny + +def get_nextmjd(run2d, obs, nextmjd_file = ptt.join(daily_dir,'etc','nextmjd.par')): + mod = 'bhm/'+run2d + try: + nextmjds = yanny(nextmjd_file) + except: + nextmjds = {} + nextmjds["NEXTMJD"] = Table(names=('module', 'mjd', 'obs'), dtype=('S30', int, 'S3')) + obss = np.char.upper(nextmjds["NEXTMJD"]['obs'].astype(str)) + mods = np.char.lower(nextmjds["NEXTMJD"]['module'].astype(str)) + indx = np.where((obss == obs.upper()) & (mods == mod.lower()))[0] + if len(indx) == 0: + mod = 'work/'+run2d + indx = np.where((obss == obs.upper()) & (mods == mod.lower()))[0] + + if len(indx) == 0: + nextmjd = 0 + else: + nextmjd = nextmjds["NEXTMJD"]['mjd'][indx][0] + return(int(nextmjd)) + +def daily_log_index(directory, RUN2D, epoch = False, custom=None, flag_noSci=False, fast_mjds = None): + if epoch: + title = f'Epoch BOSS Pipeline Status: {RUN2D}' + elif custom is not None: + title = f'{custom} BOSS Pipeline Status: {RUN2D}' + else: + title = f'Daily BOSS Pipeline Status: {RUN2D}' + logs = glob.glob(ptt.join(directory,'?????-???.html')) + logs = [ptt.basename(x).split('-')[0] for x in logs] + logs = np.unique(np.asarray(logs)).tolist() + mjds_status = {} + nextmjd ={} + if custom is None: + nextmjd['APO'] = get_nextmjd(RUN2D, 'APO', nextmjd_file = ptt.join(daily_dir,'etc','nextmjd.par')) + nextmjd['LCO'] = get_nextmjd(RUN2D, 'LCO', nextmjd_file = ptt.join(daily_dir,'etc','nextmjd.par')) + else: + nextmjd['APO'] = jdate.apo.astype(int) + nextmjd['LCO'] = jdate.lco.astype(int) + + name = 'flag_noSci' if flag_noSci else 'index' + + if fast_mjds is not None: + fast_mjds = [str(x) for x in fast_mjds] + if ptt.exists(ptt.join(directory,name+'.json')): + try: + with open(ptt.join(directory,name+'.json'), 'r') as json_file: + mjds_status = json.load(json_file, object_pairs_hook=OrderedDict) + except: + pass + + for mjd in sorted(logs,reverse=True): + if fast_mjds is not None: + if (str(mjd) not in fast_mjds):# and (mjd in mjds_status.keys()): + continue + obs = sorted(glob.glob(ptt.join(directory,f'{mjd}-???.html'))) + obs = [ptt.basename(x).split('-')[1].split('.')[0] for x in obs] + + obs_str = [] + for ob in ['APO','LCO']: + if ob in obs: + color='green' + sos=True + sptrace=True + rsptrace=False + redux = False + transfer = True + with open(ptt.join(directory,f'{mjd}-{ob}.html')) as fl: + for line in fl.readlines(): + line = " ".join(line.split()) + if f'color:{stopped.color};' in line: + color=stopped.color + if f'{ob} spTrace:' in line and 'N/A N/A N/A' not in line: + rsptrace = True + break + if f'color:{Error_warn.color};' in line: + color=Error_warn.color + if f'color:{running.color};' in line: + if color not in [Error_warn.color]: + color=running.color + if f'color:{NoExp.color};' in line: + if color not in [Error_warn.color,running.color]: + color=NoExp.color + if '???' in line: + color=incomplete.color + if 'SOS: N/A' in line: + sos = False + if 'SOS Tranfer: Failed' in line: + transfer = False + if f'{ob} spTrace: N/A N/A N/A N/A' in line: + if 'v6_1' not in RUN2D: + sptrace = False + elif f'{ob} spTrace:' in line: + rsptrace = True + if 'spfibermap' in line: + redux = True + if not redux: + if rsptrace is False: + if nextmjd[ob] <= int(mjd): + color=incomplete.color + transferflag = ptt.join(getenv('DATA_ROOT', default=''),f"staging/{ob.lower()}/atlogs/{mjd}/transfer-{mjd}.done") + if ptt.exists(transferflag): + if sos is False and sptrace is False and color !=incomplete.color: + color = NoObs.color + elif sptrace is False and color !=incomplete.color and flag_noSci: + color = NoRedux.color + elif not transfer: + color = incomplete.color + elif int(mjd) >= 60150: + color=incomplete.color + if type(color) is not str: + color = color.color + obs_str.append(f"{ob}") + else: + obs_str.append(f"{ob}") + mjds_status[mjd] = OrderedDict(mjd=mjd,apo=obs_str[0],lco=obs_str[1]) + mjds_status = OrderedDict(sorted(mjds_status.items(), reverse=True)) + makedirs(directory, exist_ok = True) + with open(ptt.join(directory,name+'.json.tmp'), 'w') as json_file: + jfs = json.dumps(mjds_status,indent=4) + json_file.write(jfs) + try: + rename(ptt.join(directory,name+'.json.tmp'), ptt.join(directory,name+'.json')) + except: + pass + mjds_status = [mjds_status[mjd] for mjd in mjds_status.keys()] + + if flag_noSci: + key = [incomplete.key(),stopped.key(),NoExp.key(),Error_warn.key(), + running.key(),NoObs.key(),NoRedux.key(),NoIssues.key()] + else: + key = [incomplete.key(),stopped.key(),NoExp.key(),Error_warn.key(), + running.key(),NoObs.key(),NoIssues.key()] + if epoch: + footer = [" Daily Summary", + " Errors", + " Summary"] + else: + footer = [" Daily Summary", + " spTrace", + " Errors", + " Summary"] + if not flag_noSci: + footer[0] = " flag_noSci" + + lastupdate=('last updated: '+datetime.datetime.ctime(datetime.datetime.now())+' '+ + str(datetime.datetime.now(datetime.timezone.utc).astimezone().tzinfo)) + + template = ptt.join(idlspec2d_dir,'templates','html','daily_index_template.html') + + with open(ptt.join(directory,name+'.html.tmp'), 'w',encoding="utf-8") as f: + with open(template) as template_file: + j2_template = Template(template_file.read()) + f.write(j2_template.render(title=title, favicon=favicon, + daily_status=mjds_status, key=key, + lastupdate = lastupdate, footer=footer)) + + try: + rename(ptt.join(directory,name+'.html.tmp'), ptt.join(directory,name+'.html')) + except: + pass + + if not flag_noSci: + _Summary(directory, RUN2D, epoch = epoch, custom=custom, error=True) + #_Summary(directory, RUN2D, epoch = epoch, custom=custom) + if epoch is False and custom is None: + trace_summary(directory, RUN2D) diff --git a/python/boss_drp/utils/daily_log/parse_log.py b/python/boss_drp/utils/daily_log/parse_log.py new file mode 100644 index 000000000..d58d1046a --- /dev/null +++ b/python/boss_drp/utils/daily_log/parse_log.py @@ -0,0 +1,379 @@ +from boss_drp.utils.daily_log.Flag import * +from boss_drp.utils.chpc2html import chpc2html +from boss_drp.field import field_to_string as f2s +from boss_drp.field import field_dir, field_spec_dir, field_png_dir + +import pandas as pd +import os.path as ptt +import re +from collections import OrderedDict +import numpy as np +import time + +class Crash_log: + def __init__(self, step, error,msg=None,line=None, flag=Error_warn): + self.step = step + self.error = re.compile('.*'+error+'.*') + self.msg = msg + self.line = line + self.flag = flag + def check(self,i, line, step): + if self.step is not None: + if self.step != step: + return + if self.line is not None: + if i > self.line: + return + if self.error.match(line): + if self.msg is None: + return(line.replace('\n','')) + else: + return(self.msg.format(step=step)) + + +errors = [Crash_log('spDiag2d','LOCATESKYLINES:.*WARNING: Maximum sky-line shift is.*(DISABLING)'), + Crash_log('spDiag2d','ABORT: Only 0 sky fibers found', + msg='No Sky Fibers Found', flag=stopped), + Crash_log('spDiag2d','ABORT: No good flats (saturated?)', flag=stopped), + Crash_log('spDiag2d','SPCALIB: .*: .* paired with no arc', flag=stopped), + Crash_log('spDiag2d','SUPERFLAT: .*: Creating superflat from .* fibers', + flag=stopped, line =1), + Crash_log('spDiag2d','ABORT: Reject science as too bright: 25-th-percentile =', + msg='Reject Bright Science', flag=stopped), + Crash_log('spDiag2d','SKYSUBTRACT:.*: Discarding .*(fractional) of the sky pixels as bad', + msg='Failed Sky Subtraction', line = -1, flag=stopped), + Crash_log('spDiag2d','FITSPECTRARESOL: .*: Calculating the spectra resolution', + msg='Failed FITSPECTRARESOL', line = 1, flag=stopped), + Crash_log('spDiag2d','EXTRACT_BUNDLE_IMAGE: .*: sigmasize:', + msg='Failure Extracting Exposure', line = 1, flag=stopped), + Crash_log('spDiag2d','FITMEANX: .*:',msg='Failure in Sky Line Identification', + line = 1, flag=stopped), + Crash_log('spDiag2d','XCEN is not sorted or not separated by greater than 3 pixels.', + msg='Warning: Close or Overlapping Traces', flag=Error_warn), + Crash_log('spDiag2d','Big wavelength gap',flag=Silent_warn), + Crash_log('spDiagcomb','RM_SPFLUX_V5:.*: USING XYFIT', flag=stopped, + msg='SpectroPhoto Calibration Failure', line = 1), + Crash_log('spDiagcomb','RM_SPCOMBINE_V5: ABORT: No exposures with SCORE > 0', + msg='No Good Exposures', flag=NoExp), + Crash_log('spDiagcomb','RM_SPFLUX_V5: Rejected .* of .* std stars', + msg='Failure Combining Exposures', line = 1, flag=stopped), + Crash_log('spDiagcomb','RM_SPFLUX_V5: ABORT: No good fluxing stars!', + flag=Error_warn, msg='ABORT: No good fluxing stars!'), + Crash_log('spDiagcomb','RM_SPFLUX_V5: WARNING: Already rejected .* of .* std stars', + flag=Error_warn), + Crash_log('spDiagcomb','RM_SPFLUX_V5: Iteration #', + msg='Failure in Fluxing', line = 1, flag=stopped), + Crash_log('spDiag1d','ZCOMPUTE: .*',msg='Failure in COMPUTECHI2 for ZFIND', + line = 1, flag=stopped), + Crash_log('spDiag1d','ZFIND: .*',msg='Failure in COMPUTECHI2 for ZFIND', + line = 1, flag=stopped), + Crash_log('run_spTrace','Execution halted', msg='Failed run_spTrace', flag=stopped), + Crash_log('run_spTrace','Killed', msg='Failed run_spTrace', flag=stopped), + Crash_log('spAll','fieldmerge: EXITING!!', flag=stopped), + Crash_log('spSpec_reformat', 'read_spAll: ERROR: Missing .*', + msg='Failed spSpec_reformat: missing spAll field', flag=stopped)] + +py_err = [Crash_log(None,'exception:', + msg='Failed {step}', flag=stopped), + Crash_log(None,'SyntaxError:', + msg='Failed {step}', flag=stopped), + Crash_log('spAll','fieldmerge: No valid spAll entries', flag=stopped), + Crash_log(None,'FileNotFoundError', msg='Failed {step}', flag=stopped)] + +noerr_cal_b = Crash_log('spDiag2d','SPCALIB: b.*: .* paired with arc', + msg='No error', flag=NoIssues) +noerr_cal_r = Crash_log('spDiag2d','SPCALIB: r.*: .* paired with arc', + msg='No error', flag=NoIssues) + +def parse_log(file, custom=None): + if custom is None: + complete= {'spfibermap':'Successful completion of readfibermaps', + 'spDiag2d':'Successful completion of SPREDUCE2D', + 'spDiagcomb':'Successful completion of SPCOMBINE', + 'spDiag1d':'Successful completion of SPREDUCE1D', + 'spXCSAO':'CPU time to compute RVs', + 'fieldlist':'Successful completion of fieldlist', + 'spAll':'Successful completion of fieldmerge', + 'spSpec_reformat':'Successful completion of spSpec_reformat', + 'spCalib_QA':'SpectroPhoto QA Complete', + 'run_spTrace':'Successful completion of boss_arcs_to_trace'}#, + else: + complete = {'spDiagcomb':'SPSPEC_TARGET_MERGE: Successful completion of spspec_target_merge', + 'spDiag1d':'Successful completion of SPREDUCE1D', + 'spXCSAO':'CPU time to compute RVs', + 'spAll':'Successful completion of fieldmerge', + 'spSpec_reformat':'Successful completion of spSpec_reformat'} + for key in complete: + if key not in file: + continue + line = -2 if key == 'spfibermap' else -1 + if not ptt.exists(file): + return(running, f'{key} not yet run') + with open(file) as f: + try: + last_line = f.readlines()[line] + except: + last_line = '' + if complete[key] in last_line: + with open(file) as f: + lines = f.readlines() + lines.reverse() + + for i, line in enumerate(lines): + for err in errors: + msg = err.check(i,line,key) + if msg is not None: + if key == 'spDiag2d': + if 'SPCALIB: b' in msg: + for li, ll in enumerate(lines): + noerr = noerr_cal_b.check(li, ll, key) + if noerr == 'No error': + msg = None + elif 'SPCALIB: r' in msg: + for li, ll in enumerate(lines): + noerr = noerr_cal_b.check(li, ll, key) + if noerr == 'No error': + msg = None + if msg is not None: + return(err.flag,msg) + return(NoIssues, None) + elif key == 'run_spTrace' and '.e.log' in file: + with open(file) as f: + lines = f.readlines() + lines.reverse() + + for i, line in enumerate(lines): + for err in errors: + msg = err.check(i,line,key) + if msg is not None: + return(stopped,msg) + return(NoIssues,None) + else: + if ((key in ['spfibermap','spXCSAO','fieldlist','spAll','run_spTrace']) + and '.log' in file): + with open(file) as f: + lines = f.readlines() + lines.reverse() + + for i, line in enumerate(lines): + for err in py_err: + msg = err.check(i,line,key) + if msg is not None: + return(err.flag,msg) + return(running, None) + else: + if time.time() - ptt.getmtime(file) > 300: + # check if log has been updated in last 5 minutes + # if not then check for errors + with open(file) as f: + lines = f.readlines() + lines.reverse() + for i, line in enumerate(lines): + for err in errors: + msg = err.check(i,line,key) + if msg is not None: + return(err.flag,msg) + return(running, None) + return(running,None) + +class LogCheck: + def __init__(self, topdir, run2d, run1d, field, mjd, dither='F', + epoch=False, custom = None, mjd1d=None,obs=None): + self.topdir = topdir + self.run2d = run2d + self.run1d = run1d + self.field = f2s(field) + self.mjd = mjd + self.mjd1d = mjd1d + self.custom = custom + self.dither = dither + self.epoch = epoch + self.obs = obs.lower() + + def html(self, fbase=[], exts =None): + rs = '' + note = [] + colors = [] + top2d = ptt.join(self.topdir, self.run2d) + for i, fb in enumerate(fbase): + cs = False if self.custom is None else True + + fd = field_dir(top2d, self.field, custom = cs) + ed = 'epoch' if self.epoch else '' + file = ptt.join(fd,ed,fb.format(field=self.field, mjd=self.mjd, + custom=self.custom, mjd1d=self.mjd1d, + obs = self.obs)) + file = ptt.abspath(file) + if ptt.splitext(file)[-1] == '.log': + gf = f'log' + bf = f"log " + else: + if ptt.splitext(file)[-1] == '.gz': + ext = ptt.splitext(ptt.splitext(file)[0])[-1] + else: + ext = ptt.splitext(file)[-1] + if exts is not None: + ext = exts[i] + ext = ext.replace('.','') + gf = f'{ext}' + bf = f"{ext} " + flag = NoIssues + + if ptt.splitext(file)[-1] == '.log': + flag, tnote = parse_log(file, custom=self.custom) + if 'v6_1' in self.run2d: + if 'spCalib_QA' in fb: + flag = NoIssues + bf = f"log " + tnote = None + if tnote is not None: + note.append(tnote) + + if ptt.exists(file): + if ptt.getsize(file.replace('.pdf','.ps')) > 0: + rs = rs + ""+gf+" " + colors.append(flag) + continue + else: + with open(file, 'rb') as ff: + if len(ff.readlines()) > 100: + rs = rs + ""+gf+" " + colors.append(flag) + continue + elif '*' in file: + if len(glob.glob(file)) > 0: + rs = rs + ""+gf+" " + colors.append(flag) + continue + + if ptt.exists(file.replace('.pdf','.ps')): + if ptt.getsize(file.replace('.pdf','.ps')) > 0: + rs = rs + ""+gf+" " + colors.append(flag) + continue + elif 'spDiagcomb' in fbase[0]: + if colors[0] == NoIssues: + color = NoIssues.color + bf = bf.replace(f'color:{running.color}',f'color:{NoIssues.color}') + rs = rs + bf + colors.append(bf) + if self.dither == 'T': + rs = (rs.replace(f'color:{stopped.color}',f'color:{stopped.code}') + .replace(f'color:{running.color}',f'color:{running.code}')) + if f'color:{stopped.color}' in rs: + rs = (rs.replace(f'color:{running.color}',f'color:{stopped.color}') + .replace(f'color:{NoIssues.color}',f'color:{stopped.color}')) + if 'redux-' in rs: + rs = rs.replace('') if 'spTrace:' in s] + if len(spTrace_log) == 0: + spTFlag = None + elif f'color:{stopped.color}' in spTrace_log[0] or f'color: {stopped.color}' in spTrace_log[0]: + spTFlag = 'Failure in spTrace' + elif f'color:{running.color}' in spTrace_log[0] or f'color: {running.color}' in spTrace_log[0]: + spTFlag = 'spTrace in Progress' + else: + spTFlag = None + for row in table.find("table").find_all("tr"): + cols = row.find_all(["td", "th"]) + cols = [str(col).replace('','').replace('','').replace('','').replace('','') for col in cols] # Keep HTML content as string + t_.append(cols) + t_ = pd.DataFrame(t_) + t_.columns = t_.iloc[0] # Set the first row as the header + t_ = t_[1:].reset_index(drop=True) + if 'Note' not in t_.columns: + continue + if spTFlag is not None: + t_['Note'] = t_['Note'].apply(lambda x: spTFlag + ' ,' + x if x else spTFlag) + if 'Note' not in t_.columns: + continue + #if error is True: + # t_ = t_.loc[t_.Note != ''] + except Exception as e: + print(e) + continue + if _df is None: + _df = t_.copy() + else: + _df = pd.concat([_df, t_], ignore_index=True, axis=0) + if _df is not None: + _df.index = range(len(_df), 0, -1) + try: + _df = _df.fillna('') + except Exception as e: + pass + + if html: + title = '{coadd} BOSS Pipeline Summary: RUN2D={RUN2D}' + name = 'summary.html' + if epoch: + footer = [" Errors", + " Daily Summary"] + else: + footer = [" spTrace", + " Errors", + " Daily Summary"] + _summary_html(_df, directory, RUN2D, title,name, footer, + epoch = epoch, custom=custom) + + if error: + title = '{coadd} BOSS Pipeline Error Summary: RUN2D={RUN2D}' + name = 'error.html' + if epoch: + footer = [" Daily Summary", + " Summary"] + else: + footer = [" spTrace", + " Daily Summary", + " Summary"] + if 'Note' in _df.columns: + _df = _df.loc[_df.Note != ''] + _df = _df.iloc[::-1] + else: + _df = '' + _summary_html(_df, directory, RUN2D, title,name, footer, + epoch = epoch, custom=custom) + return _df + + +def _summary_html(_df, directory, RUN2D, title, name, footer, epoch = False, custom=None, rindex=True): + if epoch: + coadd = 'Epoch' + elif custom is not None: + coadd = f'{custom.title()}' + else: + coadd = 'Daily' + title = title.format(coadd=coadd, RUN2D=RUN2D) + + try: + _df = _df.sort_values(by=['MJD', 'OBS', 'Field'], ascending=[False, True, True], + key=lambda col: col.astype(int) if col.name in ['Field','MJD'] else col) + _df = _df.iloc[::-1] + _df.reset_index(drop=True, inplace=True) + _df = _df.iloc[::-1] + + except Exception as e: + pass + try: + body1 = _df.to_html(index=rindex, escape=False, justify="center", border=2, + classes='dataframe').replace('', '') + body1 = body1.replace('') if 'spTrace:' in s] + try: + row[ob] = spTrace_log[0].split('spTrace:')[1].replace('N/A','-') + except Exception as e: + print(e) + continue + except Exception as e: + print(e) + continue + if _df is None: + _df = pd.DataFrame([row]) + else: + _df = pd.concat([_df, pd.DataFrame([row])], ignore_index=True, axis=0) + title = 'BOSS spTrace Summary: RUN2D={RUN2D}' + name = 'trace.html' + footer = [" Daily Summary", + " Summary", + " Errors"] + if html: + _summary_html(_df, directory, RUN2D, title,name, footer, rindex=False) + return _df diff --git a/bin/dailylogger.py b/python/boss_drp/utils/dailylogger.py similarity index 54% rename from bin/dailylogger.py rename to python/boss_drp/utils/dailylogger.py index 0c506afb3..dda05b6b7 100644 --- a/bin/dailylogger.py +++ b/python/boss_drp/utils/dailylogger.py @@ -1,4 +1,5 @@ #!/usr/bin/env python3 + import logging import collections from os import popen, getenv @@ -35,35 +36,8 @@ def emit(self, record): self.log_queue.append(self.format(record)) -#def send_email(subject, email_file, attachment, logger): -# -# try: -# emails = open(email_file).read().splitlines() -# except: -# emails = [] -# logger.info(email_file+' does not exist') -# for email_add in emails: -# if len(email_add) == 0: -# continue -# try: -# #cmd = 'echo "'+log+'"| mail -s "'+subject+'" '+email_add+' -A '+attachment -# cmd = 'echo "" | mail -v -s \"'+subject+'\" -A '+attachment+' '+email_add -# stream = popen(cmd) -# output = stream.read() -# logger.info(output) -# except: -# log = ['ERROR Building Email Log'] -# logger.info(log[0]) -# cmd = 'echo "'+log+'"| mail -v -s "'+subject+'" '+email_add#+' -A '+attachment -# #cmd = 'echo mail -s "'+subject+'" '+email_add+' -A '+attachment -# stream = popen(cmd) -# output = stream.read() -# logger.info(output) -# return(None) - - -def send_email(subject, email_file, attachment, logger, content=None, from_domain="chpc.utah.edu"): - +def send_email(subject, email_file, attachment, logger, content=None, + from_domain="chpc.utah.edu",allemail=False): try: emails = open(email_file).read().splitlines() @@ -72,6 +46,9 @@ def send_email(subject, email_file, attachment, logger, content=None, from_domai logger.info(email_file+' does not exist') emails = ' '.join(emails).split() + if not allemail: + emails = [emails[0]] + msg = EmailMessage() if content is None: content = subject @@ -103,7 +80,7 @@ def contents(self): def log_handler(self): return self._log_handler - def send(self, subject, email_file,log): + def send(self, subject, email_file,log, allemail=False): try: emails = open(email_file).read().splitlines() except: @@ -111,17 +88,8 @@ def send(self, subject, email_file,log): emails = [] try: - send_email(subject, email_file, None, log, content=self.contents(), from_domain="chpc.utah.edu") + send_email(subject, email_file, None, log, content=self.contents(), from_domain="chpc.utah.edu", allemail=allemail) -# emails = ' '.join(emails).split() -# msg = EmailMessage() -# msg.set_content(self.contents()) -# msg['Subject'] = subject -# msg['From'] = f"BOSS Pipeline <{getenv('USER')}@{from_domain}>" -# msg['To'] = ', '.join([emails]) -# s = smtplib.SMTP('localhost') -# s.send_message(msg) -# s.quit() except: outputs = [] for line in self.contents(): @@ -132,37 +100,9 @@ def send(self, subject, email_file,log): outputs.append(line) self.contents = outputs try: - send_email(subject, email_file, None, log, content=self.contents(), from_domain="chpc.utah.edu") + send_email(subject, email_file, None, log, content=self.contents(), from_domain="chpc.utah.edu", allemail=allemail) except: self.contents = ['ERROR Building Email Log'] - send_email(subject, email_file, None, log, content=self.contents(), from_domain="chpc.utah.edu") -# -# for email_add in emails: -# if len(email_add) == 0: -# continue -# try: -# cmd = 'echo "'+self.contents()+'"| mail -v -s "'+subject+'" '+email_add -# stream = popen(cmd) -# output = stream.read() -# output -# except: -# outputs = [] -# for line in self.contents: -# if 'slurm.session.Client:' in line: -# continue -# if 'slurm.session.Client: task #' in line: -# continue -# outputs.append(line) -# self.contents = outputs -# cmd = 'echo "'+self.contents()+'"| mail -v -s "'+subject+'" '+email_add -# try: -# stream = popen(cmd) -# output = stream.read() -# output -# except: -# self.contents = ['ERROR Building Email Log'] -# cmd = 'echo "'+self.contents()+'"| mail -v -s "'+subject+'" '+email_add -# stream = popen(cmd) -# output = stream.read() -# output + send_email(subject, email_file, None, log, content=self.contents(), from_domain="chpc.utah.edu", allemail=allemail) + return diff --git a/python/boss_drp/utils/find_nearest_idx.py b/python/boss_drp/utils/find_nearest_idx.py new file mode 100644 index 000000000..a35c215a9 --- /dev/null +++ b/python/boss_drp/utils/find_nearest_idx.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 +import numpy as np + +def find_nearest_indx(array, value): + arr=False if isinstance(value, (int, float)) else True + + value = np.atleast_1d(value) + indxs=np.zeros_like(value, dtype=int) + array = np.asarray(array) + for i, val in enumerate(value): + indxs[i] = (np.abs(array - val)).argmin() + if not arr: + indxs = indxs[0] + return indxs + diff --git a/python/boss_drp/utils/get_dirs.py b/python/boss_drp/utils/get_dirs.py new file mode 100644 index 000000000..f80c1c516 --- /dev/null +++ b/python/boss_drp/utils/get_dirs.py @@ -0,0 +1,48 @@ +#!/usr/bin/env python3 +from boss_drp.field import field_to_string + +import os.path as ptt +import numpy as np +import glob + + +def get_dirs(basedir, subdir='', pattern='*', match=None, + start=None, end=None, numeric=True, field=False): + """ + Generates of list of directores matching a patten with in basedir/subdir, and filters out + folders outside of valid range + """ + dlist = [] + dirs = glob.glob(ptt.join(basedir, subdir, pattern)) + + if field is True: + if pattern == '*': + pathern = field_to_string('*') + if match is not None: + if numeric: + match = np.atleast_1d(np.asarray(match)).astype(int).tolist() + else: + match = np.atleast_1d(np.asarray(match)).astype(str).tolist() + + for d in dirs: + d = ptt.basename(d) + if numeric is True: + if not ptt.basename(d).isnumeric(): + continue + if match is not None: + if numeric: + if int(d) not in match: + continue + else: + if d not in match: + continue + if start is not None: + if int(d) < int(start): + continue + if end is not None: + if int(d) > int(end): + continue + dlist.append(d) + dlist = np.sort(np.asarray(dlist)).tolist() + return(dlist) + diff --git a/python/boss_drp/utils/get_lastline.py b/python/boss_drp/utils/get_lastline.py new file mode 100644 index 000000000..9da145e2e --- /dev/null +++ b/python/boss_drp/utils/get_lastline.py @@ -0,0 +1,13 @@ +#!/usr/bin/env python3 +import os + +def get_lastline(filepath): + with open(filepath, 'rb') as f: + try: # catch OSError in case of a one line file + f.seek(-2, os.SEEK_END) + while f.read(1) != b'\n': + f.seek(-2, os.SEEK_CUR) + except OSError: + f.seek(0) + last_line = f.readline().decode() + return(last_line) diff --git a/python/boss_drp/utils/getcard.py b/python/boss_drp/utils/getcard.py new file mode 100644 index 000000000..37548f766 --- /dev/null +++ b/python/boss_drp/utils/getcard.py @@ -0,0 +1,17 @@ +def getcard(hdr, card, default=None, noNaN=False): + try: + if hdr.count(card) > 0: + if type(hdr[card]) is str: + hdr[card] = hdr[card].strip().replace("'","") + if noNaN is True: + if hdr[card].strip().upper() == 'NAN': + hdr[card] = default + return(hdr[card]) + elif hdr[card] is None: + return(default) + else: + return(hdr[card]) + else: + return(default) + except: + return(default) diff --git a/python/boss_drp/utils/grep.py b/python/boss_drp/utils/grep.py new file mode 100644 index 000000000..3f6ff646e --- /dev/null +++ b/python/boss_drp/utils/grep.py @@ -0,0 +1,9 @@ +#!/usr/bin/env python3 +import mmap + +def grep(filepath, grepstr): + with open(filepath, 'rb', 0) as f: + s = mmap.mmap(f.fileno(), 0, access=mmap.ACCESS_READ) + if s.find(grepstr.encode('UTF-8')) != -1: + return(True) + return(False) diff --git a/python/boss_drp/utils/hash.py b/python/boss_drp/utils/hash.py new file mode 100644 index 000000000..faeba52ee --- /dev/null +++ b/python/boss_drp/utils/hash.py @@ -0,0 +1,80 @@ +#!/usr/bin/env python3 +from boss_drp.utils.lock import lock, unlock + +import glob +import hashlib +import os +import os.path as ptt +from pathlib import Path +import time + + +def compute_sha1(file_path): + """Computes the SHA-1 hash of the given file.""" + file = Path(file_path) + sha1 = hashlib.sha1(file.read_bytes()) + return sha1.hexdigest() + + +def create_hash_line(file, path): + filer= ptt.relpath(file, start=path) + out = '{} {}'.format(compute_sha1(file), filer) +# out = '{} {}'.format(hsh.hexdigest(), file.name) + return out + + +def create_hash(path): + path = ptt.abspath(path) + output_file = ptt.join(path,'{}.sha1sum'.format(ptt.basename(path))) + i = 0 + + if lock(output_file, pause=5, niter=6): + try: + hash = [] + files = list(filter(ptt.isfile, glob.glob(ptt.join(path,'**'),recursive = True))) + files = [x for x in files if '.sha1sum' not in x] + files.sort(key=ptt.getmtime) + for f in files: + if ptt.isfile(f): + hash.append(create_hash_line(f, path)+'\n') + + with open(output_file, 'w') as out: + for h in hash: + out.write(h) + finally: + return not unlock(output_file) + else: + return(True) + + return(False) + + +def check_hash(data_dir, verbose=True): + path = ptt.abspath(data_dir) + output_file = ptt.join(path,'{}.sha1sum'.format(ptt.basename(path))) + + if not ptt.exists(output_file): + if verbose: + print('Missing Hash File: '+output_file) + return(False) + with open(output_file, 'r') as test: + sh1 = test.readlines() + sha1sums = {} + valid = True + for s1 in sh1: + parts = s1.strip().split() + if len(parts) == 2: + sha1, filename = parts + sha1sums[filename] = sha1 + for filename, expect_sha1 in sha1sums.items(): + filename = filename.replace('/',os.sep) + computed_sha1 = compute_sha1(ptt.join(data_dir, filename)) + if computed_sha1 != expect_sha1: + valid = False + if verbose: + print(f"{filename}: FAILED (expected {expect_sha1}, got {computed_sha1})") + if valid is True and verbose is True: + print('All hashes are OK') + return(valid) + + diff --git a/python/boss_drp/utils/jdate.py b/python/boss_drp/utils/jdate.py new file mode 100644 index 000000000..37694ccab --- /dev/null +++ b/python/boss_drp/utils/jdate.py @@ -0,0 +1,62 @@ +import astropy.time +import datetime + + +class ConvertibleValue: + def __init__(self, value): + self.value = value + + def astype(self, totype): + if not isinstance(totype, type): + raise ValueError("totype must be a type") + # Convert to the desired type + if totype == str: + return str(int(self.value)) # Convert to int first, then to str + return totype(self.value) + + def __float__(self): + return float(self.value) + + def __int__(self): + return int(self.value) + + def __repr__(self): + return str(self.value) + +class JDATE: + def __init__(self): + try: + self.mjd = astropy.time.Time(datetime.datetime.now(datetime.UTC)).jd - 2400000.5 + except: + self.mjd = float(astropy.time.Time(datetime.datetime.utcnow()).jd) - 2400000.5 + self._apo = ConvertibleValue(self.sjd(offset=.3)) + self._lco = ConvertibleValue(self.sjd(offset=.4)) + + def sjd(self, offset=0.3): + return self.mjd + offset + + @property + def apo(self): + return self._apo + + @property + def lco(self): + return self._lco + + def astype(self, totype): + if not isinstance(totype, type): + raise ValueError("totype must be a type") + if totype == str: + return str(int(self.mjd)) + return totype(self.mjd) + + def obs(self,observatory): + observatory = observatory.lower() + if observatory == 'apo': + return self.apo + elif observatory == 'lco': + return self.lco + + +# Example usage +jdate = JDATE() diff --git a/python/boss_drp/utils/load_module.py b/python/boss_drp/utils/load_module.py new file mode 100755 index 000000000..95187b0ea --- /dev/null +++ b/python/boss_drp/utils/load_module.py @@ -0,0 +1,12 @@ +from os import getenv + + + +def load_env(key, default=None): + val = getenv(key) + if val is None: + val = default + if val is None: + print('ERROR: '+key+' is not set') + exit() + return(val) diff --git a/python/boss_drp/utils/lock.py b/python/boss_drp/utils/lock.py new file mode 100644 index 000000000..ea8c65ade --- /dev/null +++ b/python/boss_drp/utils/lock.py @@ -0,0 +1,47 @@ +import os +import time + +def lock(file, pause=5, niter=None): + """Attempt to acquire a file lock by creating a symlink. Retry on failure.""" + i = 0 + while True: + if niter is not None and i == niter: + break + i += 1 + try: + os.symlink(file, file + '.lock') + return True + except FileExistsError: + print(f"Lock already acquired ({file}). Retrying in {pause} seconds...") + time.sleep(pause) + except Exception as e: + print(f"An error occurred: {e}") + return False + return False + +def unlock(file): + """Release the file lock by removing the symlink.""" + try: + os.unlink(file + '.lock') + return(True) + except FileNotFoundError: + return(True) + except Exception as e: + print(f"An error occurred while releasing the lock: {e}") + return(False) + return(False) + +""" +# Example usage +file = 'path/to/your/file.txt' + +if lock(file): + try: + # Perform your file operations here + print("Performing file operations.") + time.sleep(10) # Simulate long-running task + finally: + unlock(file) +else: + print("Could not acquire lock. Exiting.") +""" diff --git a/python/boss_drp/utils/match.py b/python/boss_drp/utils/match.py new file mode 100644 index 000000000..5c9018d21 --- /dev/null +++ b/python/boss_drp/utils/match.py @@ -0,0 +1,16 @@ +#!/usr/bin/env python3 +import re +import numpy as np + +def match(array, value): + if '*' in value: + if '[\w]*' not in value: + value = value.replace('*','[\w]*') + else: + value = '('+value+'$)|('+value+'\W)' + r = re.compile(value, re.IGNORECASE) + ret = np.full(len(array), False) + idx = [i for i, x in enumerate(array) if r.search(x)] + ret[idx] = True + return(ret) + diff --git a/bin/merge_dm.py b/python/boss_drp/utils/merge_dm.py similarity index 55% rename from bin/merge_dm.py rename to python/boss_drp/utils/merge_dm.py index d5bcffd6a..c8f83b7c0 100644 --- a/bin/merge_dm.py +++ b/python/boss_drp/utils/merge_dm.py @@ -1,5 +1,5 @@ -from splog import Splog -#splog = Splog() +#!/usr/bin/env python3 +from boss_drp.utils import Splog ######################################## from pydl.pydlutils.yanny import read_table_yanny, yanny @@ -8,25 +8,27 @@ from astropy.io import fits - def tableToModel(table, dm_ext, name, splog, old=False, drop_cols=None, verbose=False): if drop_cols is not None: drop_cols = np.atleast_1d(drop_cols) - dm_table = Table() + #dm_table = Table() cols = table.colnames for col in cols: if col.upper() not in dm_ext['Column'].data: if drop_cols is not None: if col in drop_cols: -# table.remove_column(col) + table.remove_column(col) continue if verbose: splog.log(col+' missing from datamodel for '+name) -# table.remove_column(col) + table.remove_column(col) continue if 'K' in dm_ext[dm_ext['Column'] == col.upper()]['type'][0]: - dtype = int + if 'uK' in dm_ext[dm_ext['Column'] == col.upper()]['type'][0]: + dtype = np.uint64 + else: + dtype = int elif 'J' in dm_ext[dm_ext['Column'] == col.upper()]['type'][0]: dtype = np.int32 elif 'I' in dm_ext[dm_ext['Column'] == col.upper()]['type'][0]: @@ -56,30 +58,33 @@ def tableToModel(table, dm_ext, name, splog, old=False, drop_cols=None, verbose= if dtype == object: if sum(data == np.asarray(['']*len(data))) != 0: continue + data = table[col].data + table.remove_column(col) if shape == '': if dtype == bool: try: - dm_table.add_column(Column(test, name = col.upper())) + table.add_column(Column(test, name = col.upper())) except: splog.log(col) - dm_table.add_column(Column(test, name = col.upper())) + table.add_column(Column(test, name = col.upper())) elif dtype == 'uint8': try: - table[col][table[col].data == ''] = 0 - dm_table.add_column(Column(table[col].astype(dtype).data, name = col.upper())) + data[data.astype(object) == ''] = 0 + table.add_column(Column(data.astype(dtype), name = col.upper())) except: splog.log(col) - dm_table.add_column(Column(table[col].astype(dtype).data, name = col.upper())) + table.add_column(Column(data.astype(dtype), name = col.upper())) else: try: - dm_table.add_column(Column(table[col].astype(dtype).data, name = col.upper())) + table.add_column(Column(data.astype(dtype), name = col.upper())) except: splog.log(col) - dm_table.add_column(Column(table[col].astype(dtype).data, name = col.upper())) + table.add_column(Column(data.astype(dtype), name = col.upper())) else: - dm_table.add_column(Column(table[col].astype(dtype).data, name = col.upper(), shape=(shape,))) + table.add_column(Column(data.astype(dtype), name = col.upper(), shape=(shape,))) + data = None # table.remove_column(col) - return(dm_table) + return(table) def merge_dm(table=None, ext = 'Primary', name = None, hdr = None, dm ='spfibermap_dm.par', old_tab = None, splog=Splog(), drop_cols = None, verbose=False): @@ -92,54 +97,62 @@ def merge_dm(table=None, ext = 'Primary', name = None, hdr = None, dm ='spfiberm dm_ext = read_table_yanny(dm, dm_model['ext']) dm_ext.convert_bytestring_to_unicode() if table is not None: - dm_table = tableToModel(table, dm_ext, name, splog, old=False, drop_cols=drop_cols, verbose=verbose) + table = tableToModel(table, dm_ext, name, splog, old=False, drop_cols=drop_cols, verbose=verbose) ############################### - for col in dm_table.colnames: - if (dm_table[col].dtype == int) or (dm_table[col].dtype == np.int16) or (dm_table[col].dtype == np.int32): - coldat = dm_table[col].data + for col in table.colnames: + if (table[col].dtype == int) or (table[col].dtype == np.int16) or (table[col].dtype == np.int32): + coldat = table[col].data try: fill = int(dm_ext[dm_ext['Column'] == col.upper()]['null'][0]) except: if verbose: splog.log('WARNING: datamodel ('+dm+') is missing fill value for '+col) fill = -999 - dm_ext[dm_ext['Column'] == col.upper()]['null'][0] = -999 + try: + dm_ext[dm_ext['Column'] == col.upper()]['null'][0] = -999 + except: + pass coldat[np.where(coldat == 999999)[0]] = fill coldat = np.ma.masked_values(coldat, fill) - dm_table[col] = MaskedColumn(coldat,fill_value = fill) + table[col] = MaskedColumn(coldat,fill_value = fill) ############################### if old_tab is not None: - dm_table_old = tableToModel(old_tab, dm_ext, name, splog, old=True, drop_cols=drop_cols, verbose=verbose) + old_tab = tableToModel(old_tab, dm_ext, name, splog, old=True, drop_cols=drop_cols, verbose=verbose) - for col in dm_table_old.colnames: - if (dm_table_old[col].dtype == int) or (dm_table_old[col].dtype == np.int16) or (dm_table_old[col].dtype == np.int32): - coldat = dm_table_old[col].data + for col in old_tab.colnames: + if (old_tab[col].dtype == int) or (old_tab[col].dtype == np.int16) or (old_tab[col].dtype == np.int32): + coldat = old_tab[col].data fill = int(dm_ext[dm_ext['Column'] == col.upper()]['null'][0]) coldat[np.where(coldat == 999999)[0]] = fill coldat = np.ma.masked_values(coldat, fill) - dm_table_old[col] = MaskedColumn(coldat,fill_value = fill) + old_tab[col] = MaskedColumn(coldat,fill_value = fill) if 'B' in dm_ext[dm_ext['Column'] == col.upper()]['type'][0]: - if dm_table_old[col].shape[1] > dm_table[col].shape[1]: - coldat = dm_table[col].data - pad = dm_table_old[col].shape[1] - dm_table[col].shape[1] - dm_table[col] = np.pad(coldat, [(0,0),(pad,0)], mode = 'constant', constant_values= 0) - elif dm_table_old[col].shape[1] < dm_table[col].shape[1]: - coldat = dm_table_old[col].data - pad = dm_table[col].shape[1] - dm_table_old[col].shape[1] - dm_table_old[col] = np.pad(coldat, [(0,0),(pad,0)], mode = 'constant', constant_values= 0) - - dm_table = vstack([dm_table_old, dm_table]) + if old_tab[col].shape[1] > table[col].shape[1]: + coldat = table[col].data + pad = old_tab[col].shape[1] - table[col].shape[1] + table[col] = np.pad(coldat, [(0,0),(pad,0)], mode = 'constant', constant_values= 0) + elif old_tab[col].shape[1] < table[col].shape[1]: + coldat = table[col].data + pad = table[col].shape[1] - old_tab[col].shape[1] + old_tab[col] = np.pad(coldat, [(0,0),(pad,0)], mode = 'constant', constant_values= 0) + if (old_tab[col].dtype.kind in ['U','S']): + try: + if table[col].dtype == object: + old_tab[col] = old_tab[col].astype(object) + except: + pass + table = vstack([old_tab, table]) ############################### - for col in dm_table.colnames: - if (dm_table[col].dtype == object) or ('|S' in str(dm_table[col].dtype)): + for col in table.colnames: + if (table[col].dtype == object) or ('|S' in str(table[col].dtype)): try: - maxlen = len(max(dm_table[col].data, key=len)) + maxlen = len(max(table[col].data, key=len)) if maxlen == 0: maxlen = 20 except: maxlen = 20 - dm_table[col] = dm_table[col].astype(' 0: comment = dm_ext[match[0]]['description'] hdu.header.set(card[0],card[1],comment) + + for idx, col in enumerate(hdu.columns): + tnull_key = f'TNULL{idx + 1}' # TNULL is 1-based, so add 1 to idx + col_name = col.name + try: + null = dm[dm['Column'] == col_name]['null'][0] + except: + continue + try: + null = int(null) if null != '' else None + except: + null = null + if null is None: + continue + if tnull_key not in hdu.header: + hdu.header.set(tnull_key, null) + else: hdu = fits.PrimaryHDU() if dm_model['hdr'] != 'None': diff --git a/python/boss_drp/utils/mjd_match.py b/python/boss_drp/utils/mjd_match.py new file mode 100644 index 000000000..221fb634a --- /dev/null +++ b/python/boss_drp/utils/mjd_match.py @@ -0,0 +1,14 @@ +#!/usr/bin/env python3 +import numpy as np + +def mjd_match(thismjd, mjd=None, mjdstart=None, mjdend=None): + if mjd is not None: + if int(thismjd) not in np.atleast_1d(np.asarray(mjd)).astype(int).tolist(): + return(False) + if mjdstart is not None: + if int(thismjd) < int(mjdstart): + return(False) + if mjdend is not None: + if int(thismjd) > int(mjdend): + return(False) + return(True) diff --git a/python/boss_drp/utils/putils.py b/python/boss_drp/utils/putils.py new file mode 100644 index 000000000..342bfc83b --- /dev/null +++ b/python/boss_drp/utils/putils.py @@ -0,0 +1,103 @@ +#!/usr/bin/env python3 + +import sys +import os +import subprocess +import shlex +import gzip +import time +""" +putils is a set of miscellaneous python tools. + +Originally Written by Gary Kushner (LBL). Nov 2009. Latest update April 2010. +""" + +def searchPath(name, paths): + """Search a path for a name (file, direcory, link, etc). Return the absolute + path to the found file or None""" + for path in paths: + if os.path.exists(os.path.join(path, name)): + return os.path.abspath(os.path.join(path, name)) + return None + + +def runCommand(cmd, echo=False, logCmd=None, prefix="", shell=False, limit=None, timeout=None): + """Run a command with the option to asynchronously display or log output. + + If shell=False, the cmd needs to be a list, but if you pass in a string + it will be parsed into a list. + + echo will echo output to stdout. + + logCmd is a function pointer to use to put the output into a log. + + Returns (return code, output).""" + #prefix=prefix.encode() + output = ""#.encode() + + # Handle the command parsing + if isinstance(cmd, str) and not shell: + cmd = [c for c in shlex.split(cmd)] + + # Call the process + p = subprocess.Popen(cmd, stdout = subprocess.PIPE, stderr = subprocess.STDOUT, + shell=shell) + start = time.time() + last = None + i = 0 + # Process output until process dies + while True: + l = p.stdout.readline().decode("utf-8") + if not l: break + output += l + l = l[:-1] # yea, only safe on unix... + if limit is not None: + if l == last: + i +=1 + if i >= limit: + last = l + continue + else: + if i >= limit: + if echo: + print(prefix + f'..... {i-limit} duplicate log outputs removed .....') + print(prefix + last) + if logCmd != None: + logCmd(prefix + f'..... {i-limit} duplicate log outputs removed .....') + logCmd(prefix + last) + i = 0 + if echo: + print(prefix + l) + if logCmd != None: + logCmd(prefix + l) + if limit is not None: + last = l + if timeout is not None: + if time.time() - start > timeout: + print(prefix + 'Timeout Command') + if logCmd != None: + logCmd(prefix + 'Timeout Command') + p.kill() + break + + return (p.wait(), output) + +def openRead(filename, mode = "r"): + """Open a gzip or normal file for text reading. Valid modes are 'r' and 'rb'""" + + gzSig = b'\x1f\x8b' + + if mode != 'r' and mode != 'rb': + raise ValueError("Illegal mode: " + mode) + + f = open(filename, mode) + + try: + if (f.read(2) == gzSig): + f = gzip.open(filename, mode) + finally: + f.seek(0) + + return f + + diff --git a/python/boss_drp/utils/reject.py b/python/boss_drp/utils/reject.py new file mode 100644 index 000000000..4c810d2cd --- /dev/null +++ b/python/boss_drp/utils/reject.py @@ -0,0 +1,143 @@ + +from astropy.io import fits +import os.path as ptt + +class Reject: + def __init__(self, frame, hdr): + self.frame = frame + self.hdr = hdr + self.ffs = 0 + self.ff = 0 + self.ne = 0 + self.hgcd = 0 + self.hear = 0 + self.obs = '' + self.favor= '' + self.hartmann = '' + self._meta() + + def _meta(self): + self.ffs = self.hdr.get('FFS', '0 0 0 0 0 0 0 0').split().count('1') + self.ff = self.hdr.get('FF', '0 0 0 0').split().count('1') + self.ne = self.hdr.get('NE', '0 0 0 0').split().count('1') + self.hgcd = self.hdr.get('HGCD','0 0 0 0').split().count('1') + self.hear = self.hdr.get('HEAR','0 0 0 0').split().count('1') + self.flavor = self.hdr.get('FLAVOR', '') + cart = str(self.hdr.get('CARTID', 'FPS-N')) + self.hartmann = self.hdr.get('HARTMANN', 'out').lower() + if 'FPS-N' in cart: + self.obs = 'APO' + elif 'FPS-S' in cart: + self.obs = 'LCO' + else: + self.obs = 'APO' + self.mjd = self.hdr.get('MJD','') + + def check(self, splog, hartmann = False): + if self.flavor.lower() in ['arc','calibration']: + return self.check_arc(splog, hartmann=hartmann) + elif self.flavor.lower() == 'flat': + return self.check_flat(splog) + elif self.flavor.lower() in ['target', 'science']: + return self.check_science(splog) + splog.info('Frame is not Arc, Flat, or Science') + return True + + + def check_flat(self, splog): + if self.obs == 'APO': + if self.ne > 0: + splog.info(f'Warning: Reject Flat: {self.ne}/{4} Ne lamps are On! ({ptt.basename(self.frame)})') + return True + elif self.hgcd > 0: + splog.info(f'Warning: Reject Flat: {self.hgcd}/{4} HgCd lamps are On! ({ptt.basename(self.frame)})') + return True + else: + pass + elif self.obs == 'LCO': + if self.ne > 0: + splog.info(f'Warning: Reject Flat: {self.ne}/{4} Ne lamps are On! ({ptt.basename(self.frame)})') + return True + elif self.hgcd > 0: + splog.info(f'Warning: Reject Flat: self.{hgcd}/{4} HeAr lamps are On! ({ptt.basename(self.frame)})') + return True + else: + pass + if self.ff < 2: + splog.info(f'Warning: Reject Flat: {4-self.ff}/4 Flat-field lamps turned off ({ptt.basename(self.frame)})') + return True + if self.ff < 4: + splog.info(f'Warning: {4-self.ff}/4 Flat-field lamps turned off ({ptt.basename(self.frame)})') + + if self.ffs < 8: + splog.info(f'Warning: Reject Flat: {self.ffs}/8 Flat-field screens not closed! ({ptt.basename(self.frame)})') + return True + + if 'out' not in self.hartmann: + splog.info(f'Warning Hartmann doors closed ({ptt.basename(self.frame)})') + return True + + return False + + def check_arc(self, splog, hartmann=False): + if self.obs == 'APO': + if self.ne < 4 and self.hgcd < 4: + splog.info(f'WARNING: Reject arc: Neither Ne nor HgCd lamps are On! ({ptt.basename(self.frame)})') + return True + elif self.ne < 4: + splog.info(f'Warning: {4-self.ne}/{4} Ne lamps are off ({ptt.basename(self.frame)})') + elif self.hgcd < 4: + splog.info(f'Warning: {4-self.hgcd}/{4} HgCd lamps are off ({ptt.basename(self.frame)})') + else: + pass + elif self.obs == 'LCO': + if self.ne < 4 and self.hear < 4: + splog.info(f'WARNING: Reject arc: Neither Ne nor HeAr lamps are off! ({ptt.basename(self.frame)})') + return True + elif self.ne < 4: + splog.info(f'Warning: {4-self.ne}/{4} Ne lamps are off ({ptt.basename(self.frame)})') + elif self.hear < 4: + splog.info(f'Warning: {4-self.hear}/{4} HeAr lamps are off ({ptt.basename(self.frame)})') + else: + pass + if self.ff > 0: + splog.info(f'Warning: Reject Arc: {self.ff}/4 Flat-field lamps turned on! ({ptt.basename(self.frame)})') + return True + + if self.ffs < 8: + splog.info(f'Warning: Reject Arc: {self.ffs}/8 Flat-field screens not closed! ({ptt.basename(self.frame)})') + return True + + if not hartmann: + if 'out' not in self.hartmann: + splog.info(f'Warning Hartmann doors closed ({ptt.basename(self.frame)})') + return True + + return False + + def check_science(self, splog): + if self.obs == 'APO': + if self.ne > 0: + splog.info(f'Warning: Reject Science: {self.ne}/{4} Ne lamps are On! ({ptt.basename(self.frame)})') + return True + elif self.hgcd > 0: + splog.info(f'Warning: Reject Science: {self.hgcd}/{4} HgCd lamps are On! ({ptt.basename(self.frame)})') + return True + else: + pass + elif self.obs == 'LCO': + if self.ne > 0: + splog.info(f'Warning: Reject Science: {self.ne}/{4} Ne lamps are On! ({ptt.basename(self.frame)})') + return True + elif self.hgcd > 0: + splog.info(f'Warning: Reject Science: self.{hgcd}/{4} HeAr lamps are On! ({ptt.basename(self.frame)})') + return True + else: + pass + if self.ff > 0: + splog.info(f'Warning: Reject Science: {self.ff}/4 Flat-field lamps turned on! ({ptt.basename(self.frame)})') + return True + if self.ffs > 0: + splog.info(f'Warning: Reject Science: {self.ffs}/8 Flat-field screens closed! ({ptt.basename(self.frame)})') + return True + return False diff --git a/python/boss_drp/utils/retry.py b/python/boss_drp/utils/retry.py new file mode 100644 index 000000000..a7b6850d3 --- /dev/null +++ b/python/boss_drp/utils/retry.py @@ -0,0 +1,44 @@ +import time + +def retry(func, retries=3, delay=5, exceptions=(Exception,), logger=print, *args, **kwargs): + """ + Retries a function call with specified retries and delay on failure. + + Parameters: + - func (callable): The function to execute. + - retries (int): The number of times to retry. Default is 3. + - delay (int or float): Delay between retries in seconds. Default is 1 second. + - exceptions (tuple): Tuple of exceptions to catch and retry. Default is all exceptions. [ex (ValueError,)] + - splog (callable): the logger function in use (defaults to print) + - *args: Positional arguments for the function. + - **kwargs: Keyword arguments for the function. + + Returns: + - The result of the function if successful. + + Raises + - The exception if the function fails after the given number of retries. + """ + attempt = 0 + while attempt < retries: + try: + return func(*args, **kwargs) + except exceptions as e: + attempt += 1 + if attempt >= retries: + raise + logger(f"{func.__name__} failed: {e}. Retrying in {delay} seconds...") + time.sleep(delay) + +# Example usage: + +#def sample_function(x, y): +# if x == 0: +# raise ValueError("x cannot be zero!") +# return y / x + +#try: +# result = retry(sample_function, retries=5, delay=2, exceptions=(ValueError,), x=0, y=10) +# print(f"Success: {result}") +#except Exception as e: +# print(f"Final failure: {e}") diff --git a/python/boss_drp/utils/specobjid.py b/python/boss_drp/utils/specobjid.py new file mode 100755 index 000000000..775d2a76a --- /dev/null +++ b/python/boss_drp/utils/specobjid.py @@ -0,0 +1,312 @@ +#!/usr/bin/env python3 +import numpy as np +import warnings + +coaddids = {'daily':'00', #boss daily coadds + 'epoch':'01', #boss field-epoch coadds + 'allepoch':'02', #boss allepoch coadds + 'spiders':'02', #DR18 boss allepoch coadd alias name + 'allvisit':'10', #apogee allvist + 'allstar':'11', #apogee allstar + 'test':'99' + } + +coaddids_inv = {v: k for k, v in coaddids.items()} + + +class UndefinedCoadd(Exception): + """Exception raise for coadds not in coaddids""" + def __init__(self, coadd, message = None): + if message is None: + message=f"Coadd name '{coadd}' not in {','.join(coaddids.keys())}" + self.message = message + self.coadd = coadd + super().__init__(message) + +class MissingFiberIDs(Exception): + """Exception raise for MissingFiberIDs not supplied to calculate legacy specobjids""" + def __init__(self, message = None): + if message is None: + message=f"Fiber IDs are not supplied and are required to calculate legacy specobjids" + self.message = message + super().__init__(message) + +lsh = lambda x,s: np.uint64(x)*np.uint64(2**s) + +def encode_legacy(fieldid, mjd, fiberid, tag): + try: + tag = str(tag.strip()) + if '_' in tag: + n,m,p = tag.split('_') + n = int(n[1:]) + m = int(m) + p = int(p) + run2d = (n-5)*10000 + m*100 + p + elif tag.isnumeric(): + run2d = int(tag) + else: + print(f"WARNING: Unable to parse RERUN from {tag} for CAS-style SPECOBJID; Using 0 instead") + run2d = 0 + except Exception as e: + print(f"WARNING: Unable to parse RERUN from {tag} for CAS-style SPECOBJID; Using 0 instead") + run2d = 0 + specobjid = np.uint64(0) + with warnings.catch_warnings(): + warnings.simplefilter("ignore") + specobjid |= lsh(fieldid,50) | lsh(fiberid,38) | lsh(int(mjd)-50000,24) | lsh(run2d,10) + return(specobjid) + +def encode_V(sdssid, fieldid, mjd, coadd, tag): + + coadd = str(coadd) + if not coadd.isnumeric(): + try: + coadd = coaddids[coadd] + except: + raise(UndefinedCoadd(coadd)) + elif len(str(coadd)) > 2: + raise(UndefinedCoadd(coadd, message = f'Coadd ID ({coadd}) must be less then 100')) + + if 'v' in tag[0]: + n,m,p = tag[0].strip().split('_') + n = n[1:] + p = p.split('-')[0] + tag = n.zfill(2)+m.zfill(2)+p.zfill(2) + elif len(tag[0].split('.')) == 2: + n,m = tag[0].strip().split('.') + tag = n.zfill(2)+m.zfill(2)+'0'.zfill(2) + elif len(tag[0].split('.')) == 3: + n,m,p = tag[0].strip().split('.') + p = p.split('-')[0] + tag = n.zfill(2)+m.zfill(2)+p.zfill(2) + elif 'dr' in tag[0].lower(): + tag = tag[0].replace('DR','') + tag = tag[0].zfill(6) + elif tag[0].isnumeric(): + tag = tag[0].zfill(6) + else: + tag = '000000' + + coadd = coadd.zfill(2) + tag + return(np.char.add(np.char.add(np.char.add(sdssid, fieldid), mjd), coadd)) + +def encode(sdssid, fieldid, mjd, coadd, tag, fiberid=None, allnew = False): + """ Defines the SDSS-V version of SpecobjIDs + + This function accepts a single sdss_id or list of sdss_ids + with their corresponding fieldid, mjd, coadd version, and + pipeline tag. If the sdss_id is a single value, the fieldid + and mjd parameters are assumed to be a single value, and if + they are not, then the first value of the array is used. If + the sdss_id is an array, then the fieldid and mjd are assumed + to be a single set of values (in which case the values are + used for all sdss_id) or an array of the same length as the + sdss_id. + + Parameters: + sdssid, fieldid, mjd (float or string or array of floats or strings): + the sdss_id and its corresponding field and mjds + coadd (string or int): + the name of the coadd or the numeric id of the coadd + as defined by coaddids + tag (string): + the pipeline tag used + fiberid (optional, float or string or array of floats or strings) + the fiber ids used for legacy style specobjids + allnew (optional, boolean) + calculates SDSS-V style specobjids for all targets + + Returns: + SpecobjIDs (string or array of string matching length of sdssid): + the SpecobjIDs + Example: + >>> encode(1,16000,59999,'daily','v6_1_3') + >>> '100160005999900060103' + >>> encode([1,2],16000,59999,'daily','v6_1_3') + >>> ['100160005999900060103', '200160005999900060103'] + """ + + arrsdssid = False + if isinstance(sdssid, list): + arrsdssid = 'list' + elif isinstance(sdssid, np.ndarray): + arrsdssid = 'arr' + + sdssid = np.atleast_1d(sdssid).astype(str) + fieldid = np.char.zfill(np.atleast_1d(fieldid).astype(str),7) + if len(fieldid) == 1: + fieldid = np.asarray([fieldid[0]]*len(sdssid)) + + mjd = np.atleast_1d(mjd).astype(str) + if len(mjd) == 1: + mjd = np.asarray([mjd[0]]*len(sdssid)) + + if fiberid is not None: + fiberid = np.atleast_1d(fiberid) + if len(fiberid) == 1: + fiberid = np.asarray([fiberid[0]]*len(sdssid)) + + legacy = False + if 'v' in tag[0]: + n,m,p = tag[0].strip().split('_') + p = p.split('-')[0] + n = n[1:] + if int(n) < 6: + legacy = True + elif int(p) <= 4 and int(n) == 6 and int(m) == 0: + legacy = True + elif tag[0].isnumeric(): + if int(tag) in [103,104,26]: + legacy = True + if legacy and not allnew: + specojbid = [] + + if fiberid is not None: + fiberid = np.atleast_1d(fiberid) + if len(fiberid) == 1: + fiberid = np.asarray([fiberid[0]]*len(sdssid)) + else: + raise MissingFiberIDs() + + for pid,mjd,fid in zip(fieldid, mjd, fiberid): + specojbid.extend(encode_legacy(fieldid, mjd, fiberid, tag)) + specojbid = np.asarray(specojbid).astype(str) + else: + specojbid= encode_V(sdssid, fieldid, mjd, coadd, tag) + + bsid = np.where(sdssid == '-999')[0] + if len(bsid) >0: + specojbid[bsid] = '' + + if not arrsdssid: + return(specojbid[0]) + elif arrsdssid == 'list': + return(specojbid.tolist()) + return(specojbid) + + + +def decode_V(specobjid): + """ + Decode SDSS-V (DR19+) SpecobjID + + Parameters: + specobjid (float or string) + + Returns: + unwrap (dictionary) + dictionary of the attributes used to build specobjid + """ + unwrap = {} + unwrap['specobjid'] = str(specobjid) + specobjid = str(specobjid) + try: + unwrap['fieldid'] = int(specobjid[-20:-13]) + except: + unwrap['fieldid'] = specobjid[-20:-13] + unwrap['mjd'] = int(specobjid[-13:-8]) + unwrap['sdss_id'] = int(specobjid[:-20]) + + try: + unwrap['coadd'] = coaddids_inv[specobjid[-8:-6]] + except: + unwrap['coadd'] = specobjid[-8:-6] + + if int(specobjid[-6:]) in [104,103,26]: + unwrap['tag'] = str(int(specobjid[-6:])) + unwrap['instrument'] = 'sdss' + elif int(specobjid[-6:]) in [17]: + unwrap['tag'] = 'DR17' + unwrap['instrument'] = 'apogee' + elif unwrap['coadd'] in ['allstar','allvisit']: + unwrap['tag'] = '{0:d}.{1:d}.{2:d}'.format(int(specobjid[-6:-4]), + int(specobjid[-4:-2]), + int(specobjid[-2:])) + unwrap['instrument'] = 'apogee' + elif int(specobjid[-6:]) == 0: + unwrap['tag'] = 'unknown' + unwrap['instrument'] = 'unknown' + elif int(specobjid[-6:-4]) == 0: + unwrap['tag'] = str(int(specobjid[-6:])) + unwrap['instrument'] = 'unknown' + else: + unwrap['tag'] = 'v{0:d}_{1:d}_{2:d}'.format(int(specobjid[-6:-4]), + int(specobjid[-4:-2]), + int(specobjid[-2:])) + unwrap['instrument'] = 'boss' + return(unwrap) + +def decode_legacy(specobjid): + """ + Decode pre-SDSS-V (and SDSS-V DR18) SpecobjID + + Parameters: + specobjid (float or string) + + Returns: + unwrap (dictionary) + dictionary of the attributes used to build specobjid + """ + unwrap = {} + unwrap['specobjid'] = specobjid + specobjid = np.atleast_1d(specobjid).astype(np.uint64) + unwrap['fieldid'] = np.bitwise_and(specobjid >> 50, 2**17 - 1)[0] + unwrap['fiber'] = np.bitwise_and(specobjid >> 38, 2**12 - 1)[0] + unwrap['mjd'] = int(np.bitwise_and(specobjid >> 24, 2**14 - 1)[0] + 50000) + unwrap['tag'] = np.bitwise_and(specobjid >> 10, 2**14 - 1) + N = ((unwrap['tag'] // 10000) + 5).tolist() + M = ((unwrap['tag'] % 10000) // 100).tolist() + P = (unwrap['tag'] % 100).tolist() + + unwrap['tag'] = [str(p) + if (n == 5 and m == 0) else 'v{0:d}_{1:d}_{2:d}'.format(n, m, p) + for n, m, p in zip(N, M, P) ][0] + unwrap['coadd'] = 'epoch' + unwrap['instrument'] = 'boss' + return(unwrap) + + +def decode(specobjid): + """ + Decodes SpecobjIDs (whether the old or new style) + + Parameters: + specobjid (float or string or array of floats or strings): + the SpecobjIDs to decode (can be either single value, list, or numpy array) + + Returns: + attrib_uid (dictionary, list of dictionaries, or array of dictionaries) + dictionary of the attributes used to build SpecobjIDs matches SpecobjIDs dimentions + """ + + arrsid = False + if isinstance(specobjid, list): + arrsid = 'list' + elif isinstance(specobjid, np.ndarray): + arrsid = 'arr' + specjobid = np.atleast_1d(specobjid).astype(str) + attrib_sid = [decode_V(x) if len(x) > 20 else decode_legacy(x) for x in specjobid] + + if not arrsid: + return(attrib_sid[0]) + elif arrsid == 'arr': + return(np.asarray(attrib_sid)) + return(attrib_sid) + + +if __name__ == '__main__' : + print(encode(1,16000,59999,'daily','v6_1_3',1)) + print(decode(100160005999900060103)) + print(' ') + print(encode(1,16000,59999,'daily','v6_0_4',1)) + print(decode(18014398952125516800)) + print(' ') + print(encode(1,889,52663,'daily','26',1)) + print(decode(1000925336738725888)) + print(' ') + print(encode(1,8954,57453,'daily','v5_13_2',1)) + print(decode(10081308165788686336)) + + print(' ') + print(encode(1,8954,57453,'daily','v5_13_2')) + print(decode(10081308165788686336)) diff --git a/bin/splog.py b/python/boss_drp/utils/splog.py similarity index 94% rename from bin/splog.py rename to python/boss_drp/utils/splog.py index 2586b8a5b..9668bba7e 100644 --- a/bin/splog.py +++ b/python/boss_drp/utils/splog.py @@ -1,10 +1,9 @@ +#!/usr/bin/env python3 import logging -import io import sys import os.path as ptt -import inspect from os import rename, remove -import sys +import inspect class StreamToLogger(object): @@ -41,8 +40,10 @@ def backup_log(logfile): class Splog: def __init__(self, no_exception = False, ): - if inspect.stack()[1].function == '': name = ptt.splitext(ptt.basename(inspect.stack()[1].filename))[0] - else: name = inspect.stack()[1].function + if inspect.stack()[1].function == '': + name = ptt.splitext(ptt.basename(inspect.stack()[1].filename))[0] + else: + name = inspect.stack()[1].function self._log = logging.getLogger(name) self._log.setLevel(logging.DEBUG) diff --git a/python/boss_drp/utils/sxpar.py b/python/boss_drp/utils/sxpar.py new file mode 100755 index 000000000..d05a9cede --- /dev/null +++ b/python/boss_drp/utils/sxpar.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 + +import sys +import os +import time +from boss_drp.utils import putils + +""" +sxpar: + +Simply parse a fits header. Copied from perl "sxpar by D. Finkbeiner 2001 Dec 20". + +Can read uncompressed or gz files. + +Written by Gary Kushner (LBL). Oct 2009. + +""" + +#### +def sxparRetry(fitsfile, keyword = None, verbose = False, retries = 0): + """call sxpar with retries. To see if the fits wasn't finished writing.""" + while True: + try: + return sxpar(fitsfile, keyword, verbose) + except: + if retries < 0: + raise + retries = retries - 1 + time.sleep(1) + +#### +def sxpar(fitsfile, keyword = None, verbose = False): + """Parse fits header and return output list""" + + isFits = False + output = [] + + if keyword != None: + keyword = keyword.upper() + + f = putils.openRead(fitsfile, mode='rb') + i = 0 + while True: + i += 1 + line = f.read(80).decode("utf-8") + + key = line.split("=")[0].strip() + + if key == "SIMPLE": + isFits = True + continue + if key == "END": + break + + if i > 40 and not isFits: + raise TypeError(fitsfile + " Doesn't look like a fits file -- did not find 'SIMPLE'") + + if keyword == None or key == keyword: + values = line.partition("=")[2].partition("/") + value = values[0].strip().strip("'").strip() + + if verbose: + output.append(line) + elif keyword == None: + output.append(key + " = " + value) + else: + output.append(value) + + return output diff --git a/readthedocs.yml b/readthedocs.yml new file mode 100644 index 000000000..a98e3bf96 --- /dev/null +++ b/readthedocs.yml @@ -0,0 +1,21 @@ +build: + os: ubuntu-22.04 + tools: + python: "3.11" + jobs: + pre_build: + - git clone https://github.com/sdss/idlutils.git $READTHEDOCS_VIRTUALENV_PATH/idlutils + - export PYTHONPATH=$PYTHONPATH:./python/ ; export PYTHONWARNINGS="ignore" ; echo $PYTHONPATH; python ./docs/build_doc.py + +python: + install: + - requirements: docs/sphinx/requirements.txt + - method: pip + path: . + +# Don't build any extra formats +formats: + - pdf + - epub + - htmlzip + diff --git a/scripts/rm_sky_spec.pro b/scripts/rm_sky_spec.pro deleted file mode 100644 index 4bf2b337f..000000000 --- a/scripts/rm_sky_spec.pro +++ /dev/null @@ -1,300 +0,0 @@ -;+ -; NOTE: reprocess the single spectra spSepc files -; NAME: -; reformat_spec -; -; PURPOSE: -; Reformat spectra into a single fits file per object, combining all necessary -; pieces from spField, spZall, spZline and spZbest -; -; For each object, there is one file per target, -; containing the finall coadded spectrum, and each blue-red merged single spectrum per exposure -; frames. The file contains the next headers: -; -; HDU 0 : Header info -; HDU 1 : Coadded spectrum -; HDU 2 : Summary metadata copied from spZbest -; HDU 3 : Summary metadata copied from spZall -; HDU 4 : Line fitting metadata from spZline -; HDU 5 : Individual frame spectra per exposure -; -; The format of each spec file is: -; -; HDU 0 : -; Header : from input spField with additional keywords from specObj: -; -; Keyword specObjColumn Comment -; ------- ----------- ------- -; [*] PLUG_RA PLUG_RA RA of object [deg] -; [*] PLUG_DEC PLUG_DEC dec of object [deg] -; TARGET_ID TARGET_ID Unique object identifier -; -; [*] Note that RA and DEC already exist in the spPlate headers -; but they are the telescope boresite RA and DEC, not the -; RA and DEC of the object. -; -; Data : None -; HDU 1 : Coadded Spectrum -; Header : Minimum to define table -; Data : Binary table with columns taken from the original spSpec and spZbest: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum in coadd -; or_mask : mask bits which affect at least one spectrum in coadd -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; model : best fit model for classification & redshift (from spZbest) -; -; HDU 2 : Copy of row for this object from spZbest table + plugmap info of spFrame -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZbest*.fits -; -; HDU 3 : Copy of rows for this object from spZall table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 4 : Copy of rows for this object from spZline table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 5 .. +n_exp : Individual frames. -; For each exposure there is one HDU. -; These are in the order of the FPS confiuration_id, and -; -; Header : Minimum to define table -; Data: Binary table with columns taken from the original spSpec: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum -; or_mask : mask bits which affect at least one spectrum -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; -; CALLING SEQUENCE: -; reformat_spec, [ platefile, fiberid=, run1d=, /doplot, /debug, chop_data= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; fieldfile - Field file(s) from spectro-2D; default to all files -; matching 'spField*.fits' -; run1d - Optional override value for the environment variable $RUN1D -; doplot - If set, then generate plots. Send plots to a PostScript -; file spDiagDebug1d-$PLATE-$MJD.ps unless /DEBUG is set. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Input files are read from the current directory. -; Output files are written to the subdirectory $RUN2D/SPECTRA/$MJD. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; The procedure requires these files: -; ZALLFILE = 'spZall-Field-MJD.fits' -; ZBESTFILE = 'spZbest-Field-MJD.fits' -; ZLINEFILE = 'spZline-Field-MJD.fits' -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 27-Jan-2020 Written by Hector Ibarra at UIUC -;------------------------------------------------------------------------------ -; - -pro rm_sky_spec, outdir=outdir, run1d=run1d1, doplot=doplot, spectradir=spectradir, $ - run2d=run2d, plates=plates, legacy=legacy, sky=sky, lite=lite - -CPU, TPOOL_NTHREADS = 1 - - spectro_redux = getenv('BOSS_SPECTRO_REDUX') - ;if (NOT keyword_set(platefile)) then begin - ; platefile = findfile('spField*.fits*', count=nplate) - ;endif else begin - ; if (size(platefile,/tname) NE 'STRING') then $ - ; message, 'FieldFILE must be a file name' - ; if (keyword_set(platefile)) then nplate = n_elements(platefile) $ - ; else nplate = 0 - ;endelse - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - - if (keyword_set(run2d)) then run2d = strtrim(run2d,2) $ - else run2d = getenv('RUN2D') - comb=spectro_redux+'/'+run2d+'/' - if (NOT keyword_set(spectradir)) then spectradir=comb - rsky=1 - if (keyword_set(sky)) then begin - rsky = sky - endif - - if (NOT keyword_set(outdir)) then outdir="outdir" - spawn,'mkdir -p '+outdir - logfile = djs_filepath('SKYRMSpec-' + run2d + '.log', root_dir=outdir) - if (keyword_set(logfile)) then begin - cpbackup, logfile - splog, filename=logfile - splog, 'Log file ' + logfile + ' opened ' + systime() - endif - - path=spectro_redux+'/'+run2d+'/conflist.fits' - data=mrdfits(path,1) - plates=data.plate - mjds=data.mjd - program=data.programname - nt=where(program.contains('RM')) -; plates=plates[nt] -; mjds=mjds[nt] -; program=program[nt] - NexpF=ulong64(n_elements(mjds))*500 - finalvalues=replicate(create_struct('MAG',fltarr(5)),NexpF) - values_t=replicate(create_struct('SKYMAG',fltarr(5)),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('MAGERR',fltarr(5)),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('SKYMAGERR',fltarr(5)),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('ID',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('FIRSTCARTON',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('OBJTYPE',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('PROGRAM',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - magvec=finalvalues.mag - skymagvec=finalvalues.skymag - magerrvec=finalvalues.magerr - skymagerrvec=finalvalues.skymagerr - idvec=finalvalues.id - cartonvec=finalvalues.firstcarton - objtypevec=finalvalues.objtype - programvec=finalvalues.program - - ct=ulong64(0) - spawn,'mkdir -p '+outdir - outfile=outdir+'/spSkyRM_spec-'+run2d+'.fits' - for itt=0, n_elements(plates)-1 do begin - programF=program[itt] - platefile='spField-'+strtrim(string(plates[itt]),2)+'-'+strtrim(string(mjds[itt]),2)+'.fits' - - platemjd = strmid(fileandpath(platefile), 8, 11) - fieldid=strmid(platemjd,0,5) - thismjd=strmid(platemjd,6,5) - - rootdir=comb+'/'+fieldid+'p/' - - splog,'Analysing the spec files' - - if FILE_TEST(rootdir+platefile) then begin - plugmap = mrdfits(rootdir+platefile,5) - - if keyword_set(legacy) or keyword_set(plates) then begin - fieldid=fieldid+'p' - endif - - target_ind=plugmap.target_index - single_basefile='coadd/'+thismjd+'/spSpec-'+platemjd+'-' - single_out_basefile='spec-'+platemjd+'-' - base_id=platemjd+'-' - if keyword_set(lite) then begin - lit_p='/lite' - endif else begin - lit_p='/full' - endelse - - for itarget=0, n_elements(target_ind)-1 do begin - plug_target=plugmap[itarget] - otype=strtrim(plug_target.objtype,2) - spec=1 - carton=plug_target.FIRSTCARTON - if spec eq 1 then begin - if keyword_set(plates) or keyword_set(legacy) then begin; - if keyword_set(legacy) then begin - single_file=single_basefile+string(plug_target.fiberid,format='(i4.4)')+'.fits' - id_str=base_id+string(plug_target.fiberid,format='(i4.4)') - endif else begin - if plug_target.catalogid eq 0 then begin - single_file=single_basefile+string(plug_target.fiberid,format='(i11.11)')+'.fits' - id_str=base_id+string(plug_target.fiberid,format='(i11.11)') - endif else begin - if plug_target.program.contains('offset', /FOLD_CASE ) then begin - single_file=single_basefile+strtrim(string(plug_target.catalogid),1)+'.fits' - id_str=base_id+strtrim(string(plug_target.catalogid),1) - endif else begin - single_file=single_basefile+string(plug_target.catalogid,format='(i11.11)')+'.fits' - id_str=base_id+string(plug_target.catalogid,format='(i11.11)') - endelse - endelse - endelse - endif else begin - single_file=single_basefile+plug_target.targetid+'.fits' - endelse - single_fileF=rootdir+single_file - if keyword_set(plates) or keyword_set(legacy) then begin - if keyword_set(legacy) then begin - file_name=single_out_basefile+string(plug_target.fiberid,format='(i4.4)')+'.fits' - endif else begin - if plug_target.catalogid eq 0 then begin - file_name=single_out_basefile+string(plug_target.fiberid,format='(i11.11)')+'.fits' - endif else begin - if plug_target.program.contains('offset', /FOLD_CASE ) then begin - file_name=single_out_basefile+strtrim(string(plug_target.catalogid),1)+'.fits' - endif else begin - file_name=single_out_basefile+string(plug_target.catalogid,format='(i11.11)')+'.fits' - endelse - endelse - endelse - endif - if not keyword_set(lite) then begin - ;for i=0, nexp-1 do begin - single = mrdfits(single_fileF,1,hdri) - flux=single.flux - ivar=single.ivar - lam=10^(single.loglam) - skyfkux=single.sky - snimg = flux ;* sqrt(ivar) - - flux_mag=rm_spec2mag(lam, flux, ivar, synmag_err=flux_mag_err) - skyflux_mag=rm_spec2mag(lam, skyfkux, ivar, synmag_err=skyflux_mag_err) - - magvec[*,ct]=flux_mag - skymagvec[*,ct]=skyflux_mag - magerrvec[*,ct]=flux_mag_err - skymagerrvec[*,ct]=skyflux_mag_err - - - idvec[ct]=id_str - cartonvec[ct]=carton - objtypevec[ct]=otype - programvec[ct]=programF - ct=ct+1 - ;endfor - endif - splog,'Spectrum '+file_name+' analysed, target '+strtrim(string(itarget+1),2)+' of '+strtrim(string(n_elements(target_ind)),2)+' targets' - endif - ;stop - endfor - endif - endfor - finalvalues.mag=magvec - finalvalues.skymag=skymagvec - finalvalues.magerr=magerrvec - finalvalues.skymagerr=skymagerrvec - finalvalues.id=idvec - finalvalues.firstcarton=cartonvec - finalvalues.objtype=objtypevec - finalvalues.program=programvec - - mwrfits, finalvalues, outfile, /create, /silent - - - splog, 'Successful completion of REFORMAT_SPEC at ' + systime() - if (keyword_set(logfile)) then splog, /close - end diff --git a/scripts/script_check.py b/scripts/script_check.py deleted file mode 100644 index 7e53809be..000000000 --- a/scripts/script_check.py +++ /dev/null @@ -1,154 +0,0 @@ -import numpy as np -import os -import sys -from astropy.io import fits as pyf -import importlib.machinery -import types -import os.path as ptt -location = os.getenv('IDLSPEC2D_DIR') -loader = importlib.machinery.SourceFileLoader('yanny', location+'/bin/yanny.py') -yanny = types.ModuleType(loader.name) -loader.exec_module(yanny) - -redux=os.getenv('BOSS_SPECTRO_REDUX') -run2d=os.getenv('RUN2D') -run1d=os.getenv('RUN1D') -file_c=redux+'/'+run2d+'/conflist.fits' -hdu_list = pyf.open(file_c) -table_hdu = hdu_list[1] -table_data = table_hdu.data -plates=table_data.field('PLATE') -plates=np.unique(plates) -basedir=redux+'/'+run2d+'/' -ct_2d=0 -cr_2d=0 -cf_2d=0 -ct_com=0 -cr_com=0 -ce_com=0 -cf_com=0 -cr_1d=0 -for plate in plates: - print('PLATE:'+str(plate)) - dir_p=basedir+str(plate).replace(' ','')+'p'+'/' - os.system('ls '+dir_p+'spPlan2d* > list') - f=open('list','r') - platemjds_2d=[] - for line in f: - ct_2d=ct_2d+1 - file_2d=line.replace('\n','').replace(dir_p,'') - log_2d=file_2d.replace('spPlan2d','spDiag2d').replace('.par','.log') - try: - f2=open(dir_p+'/'+log_2d,'r') - lines=f2.readlines() - last=lines[-1:][0].replace('\n','') - #print(last) - f2.close() - cf_2d=cf_2d+1 - if not 'Successful completion' in last: - print(file_2d) - platemjd2d=file_2d.replace('spPlan2d-','').replace('.par','') - platemjds_2d.extend([platemjd2d]) - else: - #plan = yanny.read_yanny(dir_p+'/'+file_2d) - #expo = plan['SPEXP']['name'] - #for itt in range(0, len(expo)): - # print(expo[itt][0].replace('' - #sys.exit() - cr_2d=cr_2d+1 - except: - print(file_2d) - platemjd2d=file_2d.replace('spPlan2d-','').replace('.par','') - platemjds_2d.extend([platemjd2d]) - f.close() - # sys.exit() - os.system('ls '+dir_p+'spPlancomb* > list2') - f=open('list2','r') - for line in f: - ct_com=ct_com+1 - file_2d=line.replace('\n','').replace(dir_p,'') - log_2d=file_2d.replace('spPlancomb','spDiagcomb').replace('.par','.log') - try: - #aa=0 - #if aa == 0: - f2=open(dir_p+'/'+log_2d,'r') - lines=f2.readlines() - last=lines[-1:][0].replace('\n','') - #print(last) - #print(file_2d) - f2.close() - cf_com=cf_com+1 - if not 'Successful completion' in last: - print(file_2d,"T") - else: - plan = yanny.read_yanny(dir_p+'/'+file_2d) - #print(plan) - rawmjds = plan['SPEXP']['mjd'] - rawmjds = np.unique(rawmjds) - t1=0 - for mjdc in rawmjds: - for mjd2d in platemjds_2d: - if str(mjdc).replace(' ','') in mjd2d: - #print(file_2d) - t1=1 - expo_dc=[] - for linef in lines: - if 'RM_SPCOMBINE_V5: WARNING: Discarding science exposure #' in linef: - data=linef.replace('\n','').replace('RM_SPCOMBINE_V5: WARNING: Discarding science exposure #','').replace('\t','').split(' ') - #print(data) - #sys.exit() - data=list(filter(None,data)) - expo_dc.extend([data[0]]) - if len(expo_dc) > 0: - tpt=0 - else: - tpt=1 - #print(expo_dc,tpt) - #sys.exit() - #a - expo = plan['SPEXP']['name'] - for itt in range(0, len(expo)): - file1t=expo[itt][0].replace('spFrame','spCFrame') - file2t=expo[itt][1].replace('spFrame','spCFrame') - if ptt.exists(dir_p+'/'+file1t) == False: - if tpt==1: - t1=1 - else: - t1=1 - #print("A",t1) - for expo_d in expo_dc: - if expo_d in file1t: - t1=0 - #print("B",t1) - if ptt.exists(dir_p+'/'+file2t) == False: - if tpt==1: - t1=1 - else: - t1=1 - for expo_d in expo_dc: - if expo_d in file2t: - t1=0 - if t1 == 1: - print(file_2d,'O') - if t1 == 0: - cr_com=cr_com+1 - ce_com=ce_com+1 - except: - tt=0 - print(file_2d,'Y') - dir_1d=dir_p+'/'+run1d+'/' - zline_1d=file_2d.replace('spPlancomb','spZline').replace('.par','.fits') - if ptt.exists(dir_1d+zline_1d): - cr_1d=1+cr_1d - else: - print(zline_1d) - # f3=open('list3','r') - #linest=f3.readlines() - #cr_1d=len(linest)+cr_1d - f.close() - #sys.exit() -print("Total of extracted plates-mjds: "+str(ct_2d)) -print("Total of reduced extracted plates-mjs: "+str(cr_2d)+"/"+str(cf_2d)) -print("Total of combined plates-mjds: "+str(ct_com)) -print("Total of combined extracted plates-mjs: "+str(cr_com)+"/"+str(ce_com)+"/"+str(cf_com)) -print("Total of 1d plates-mjs: "+str(cr_1d)) diff --git a/scripts/sky_frame.pro b/scripts/sky_frame.pro deleted file mode 100644 index bd3afdad5..000000000 --- a/scripts/sky_frame.pro +++ /dev/null @@ -1,334 +0,0 @@ -;+ -; NOTE: reprocess the single spectra spSepc files -; NAME: -; snr_frame -; -; PURPOSE: -; Reformat spectra into a single fits file per object, combining all necessary -; pieces from spField, spZall, spZline and spZbest -; -; For each object, there is one file per target, -; containing the finall coadded spectrum, and each blue-red merged single spectrum per exposure -; frames. The file contains the next headers: -; -; HDU 0 : Header info -; HDU 1 : Coadded spectrum -; HDU 2 : Summary metadata copied from spZbest -; HDU 3 : Summary metadata copied from spZall -; HDU 4 : Line fitting metadata from spZline -; HDU 5 : Individual frame spectra per exposure -; -; The format of each spec file is: -; -; HDU 0 : -; Header : from input spField with additional keywords from specObj: -; -; Keyword specObjColumn Comment -; ------- ----------- ------- -; [*] PLUG_RA PLUG_RA RA of object [deg] -; [*] PLUG_DEC PLUG_DEC dec of object [deg] -; TARGET_ID TARGET_ID Unique object identifier -; -; [*] Note that RA and DEC already exist in the spPlate headers -; but they are the telescope boresite RA and DEC, not the -; RA and DEC of the object. -; -; Data : None -; HDU 1 : Coadded Spectrum -; Header : Minimum to define table -; Data : Binary table with columns taken from the original spSpec and spZbest: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum in coadd -; or_mask : mask bits which affect at least one spectrum in coadd -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; model : best fit model for classification & redshift (from spZbest) -; -; HDU 2 : Copy of row for this object from spZbest table + plugmap info of spFrame -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZbest*.fits -; -; HDU 3 : Copy of rows for this object from spZall table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 4 : Copy of rows for this object from spZline table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 5 .. +n_exp : Individual frames. -; For each exposure there is one HDU. -; These are in the order of the FPS confiuration_id, and -; -; Header : Minimum to define table -; Data: Binary table with columns taken from the original spSpec: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum -; or_mask : mask bits which affect at least one spectrum -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; -; CALLING SEQUENCE: -; reformat_spec, [ platefile, fiberid=, run1d=, /doplot, /debug, chop_data= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; fieldfile - Field file(s) from spectro-2D; default to all files -; matching 'spField*.fits' -; run1d - Optional override value for the environment variable $RUN1D -; doplot - If set, then generate plots. Send plots to a PostScript -; file spDiagDebug1d-$PLATE-$MJD.ps unless /DEBUG is set. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Input files are read from the current directory. -; Output files are written to the subdirectory $RUN2D/SPECTRA/$MJD. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; The procedure requires these files: -; ZALLFILE = 'spZall-Field-MJD.fits' -; ZBESTFILE = 'spZbest-Field-MJD.fits' -; ZLINEFILE = 'spZline-Field-MJD.fits' -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 27-Jan-2020 Written by Hector Ibarra at UIUC -;------------------------------------------------------------------------------ -; - -pro sky_frame, outdir=outdir, run1d=run1d1, doplot=doplot, spectradir=spectradir, $ - run2d=run2d, plates=plates, legacy=legacy, sky=sky, lite=lite, cframe=cframe - -CPU, TPOOL_NTHREADS = 1 - - spectro_redux = getenv('BOSS_SPECTRO_REDUX') - ;if (NOT keyword_set(platefile)) then begin - ; platefile = findfile('spField*.fits*', count=nplate) - ;endif else begin - ; if (size(platefile,/tname) NE 'STRING') then $ - ; message, 'FieldFILE must be a file name' - ; if (keyword_set(platefile)) then nplate = n_elements(platefile) $ - ; else nplate = 0 - ;endelse - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - - if (keyword_set(run2d)) then run2d = strtrim(run2d,2) $ - else run2d = getenv('RUN2D') - comb=spectro_redux+'/'+run2d+'/' - if (NOT keyword_set(spectradir)) then spectradir=comb - rsky=1 - if (keyword_set(sky)) then begin - rsky = sky - endif - if (NOT keyword_set(outdir)) then outdir="outdir" - spawn,'mkdir -p '+outdir - logfile = djs_filepath('SNRFrame-' + run2d + '.log', root_dir=outdir) - if (keyword_set(logfile)) then begin - cpbackup, logfile - splog, filename=logfile - splog, 'Log file ' + logfile + ' opened ' + systime() - endif - - - path=spectro_redux+'/'+run2d+'/conflist.fits' - data=mrdfits(path,1) - plates=data.plate - mjds=data.mjd - expN=data.nexp_b1 - program=data.programname - NexpF=ulong64(total(expN+4))*500 - finalvalues=replicate(create_struct('FLUX_g',0.0),NexpF) - values_t=replicate(create_struct('FLUX_i',0.0),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('SKYFLUX_g',0.0),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('SKYFLUX_i',0.0),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('ID',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('IDF',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('FIRSTCARTON',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('OBJTYPE',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('PROGRAM',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - snvec_g=finalvalues.flux_g - snvec_i=finalvalues.flux_i - skyvec_g=finalvalues.skyflux_g - skyvec_i=finalvalues.skyflux_i - idvec=finalvalues.id - idvecf=finalvalues.idf - cartonvec=finalvalues.firstcarton - objtypevec=finalvalues.objtype - programvec=finalvalues.program - - ct=ulong64(0) - if keyword_set(cframe) then begin - outfile=outdir+'/spSNRCFrames-'+run2d+'.fits' - endif else begin - outfile=outdir+'/spSNRFrames-'+run2d+'.fits' - endelse - - for itt=0, n_elements(plates)-1 do begin - programF=program[itt] - platefile='spField-'+strtrim(string(plates[itt]),2)+'-'+strtrim(string(mjds[itt]),2)+'.fits' - - platemjd = strmid(fileandpath(platefile), 8, 11) - ;zallfile = djs_filepath('spZall-' + platemjd + '.fits', root_dir=run1d) - ;zbestfile = djs_filepath('spZbest-' + platemjd + '.fits', root_dir=run1d) - ;zlinefile = djs_filepath('spZline-' + platemjd + '.fits', root_dir=run1d) - ;logfile = djs_filepath('spec-' + platemjd + '.log', root_dir='') - fieldid=strmid(platemjd,0,5) - thismjd=strmid(platemjd,6,5) - - rootdir=comb+'/'+fieldid+'p/' - thisplan=rootdir+'spPlancomb-'+platemjd+'.par' - allseq = yanny_readone(thisplan, 'SPEXP', hdr=hdr, /anon) - - splog,'Writing the final output files' - - if FILE_TEST(rootdir+platefile) then begin - plugmap = mrdfits(rootdir+platefile,5) - nexp=plugmap.nexp - nexp=nexp[0] - if keyword_set(legacy) or keyword_set(plates) then begin - fieldid=fieldid+'p' - endif - ctar=0 - target_ind=plugmap.target_index - base_id=platemjd+'-' - if keyword_set(lite) then begin - lit_p='/lite' - endif else begin - lit_p='/full' - endelse - for ifc=0, n_elements(allseq)-1 do begin - frames=allseq[ifc].name - if keyword_set(cframe) then begin - file1=rootdir+repstr(frames[0],'spFrame','spCFrame') - file2=rootdir+repstr(frames[1],'spFrame','spCFrame') - endif else begin - file1=rootdir+frames[0]+'.gz' - file2=rootdir+frames[1]+'.gz' - endelse - if FILE_TEST(file1) and FILE_TEST(file2) then begin - ctar=ctar+1 - spframe_read,file1,objflux=objflux1,loglam=loglam1,skyflux=skyflux1,objivar=objivar1,hdr=hdr1;Bule camera - spframe_read,file2,objflux=objflux2,loglam=loglam2,skyflux=skyflux2,objivar=objivar2,hdr=hdr2;Red camera - ;expnum = strtrim(string(sxpar(hdr, 'EXPOSURE')),2) - expnum = repstr(repstr(frames[0],'spFrame-b1-',''),'.fits') - ;print,sxpar(hdr, 'EXPOSURE') - ;stop - for itarget=0, n_elements(target_ind)-1 do begin - plug_target=plugmap[itarget] - otype=strtrim(plug_target.objtype,2) - spec=1 - carton=plug_target.FIRSTCARTON - if spec eq 1 then begin - if keyword_set(plates) or keyword_set(legacy) then begin; - if keyword_set(legacy) then begin - ;single_file=single_basefile+string(plug_target.fiberid,format='(i4.4)')+'.fits' - id_str=base_id+string(plug_target.fiberid,format='(i4.4)') - endif else begin - if plug_target.catalogid eq 0 then begin - ;single_file=single_basefile+string(plug_target.fiberid,format='(i11.11)')+'.fits' - id_str=base_id+string(plug_target.fiberid,format='(i11.11)') - endif else begin - if plug_target.program.contains('offset', /FOLD_CASE ) then begin - ;single_file=single_basefile+strtrim(string(plug_target.catalogid),1)+'.fits' - id_str=base_id+strtrim(string(plug_target.catalogid),1) - endif else begin - ;single_file=single_basefile+string(plug_target.catalogid,format='(i11.11)')+'.fits' - id_str=base_id+string(plug_target.catalogid,format='(i11.11)') - endelse - endelse - endelse - endif else begin - ;single_file=single_basefile+plug_target.targetid+'.fits' - endelse - id_strf=id_str+'-'+string(ctar-1,format='(i2.2)') - id_str2=id_str+'-'+expnum - flux=objflux1[*,itarget];single.flux - ivar=objivar1[*,itarget];single.ivar - logla=loglam1[*,itarget];single.loglam - sflux=skyflux1[*,itarget] - snimg = flux ;* sqrt(ivar) - gwave = where(logla GT alog10(4000) AND logla LT alog10(5500)) - ;rwave = where(logla GT alog10(5600) AND loglam LT alog10(6900)) - ;iwave = where(logla GT alog10(6910) AND logla LT alog10(8500)) - filtsz=25 - ig = where(ivar[gwave] GT 0 AND flux[gwave] GE 0, nwave) - sntemp=0 - sntemp2=0 - if (nwave GT filtsz) then begin - sntemp = djs_median(snimg[gwave[ig]], width=filtsz, boundary='reflect') - sntemp2 = djs_median(sflux[gwave[ig]], width=filtsz, boundary='reflect') - endif - snr = djs_mean(sntemp) - skyf= djs_mean(sntemp2) - snvec_g[ct]=snr - skyvec_g[ct]=skyf - idvec[ct]=id_strf - idvecf[ct]=id_str2 - cartonvec[ct]=carton - objtypevec[ct]=otype - - flux=objflux2[*,itarget];single.flux - ivar=objivar2[*,itarget];single.ivar - logla=loglam2[*,itarget];single.loglam - sflux=skyflux2[*,itarget] - snimg = flux ;* sqrt(ivar) - ;gwave = where(logla GT alog10(4000) AND logla LT alog10(5500)) - ;rwave = where(logla GT alog10(5600) AND loglam LT alog10(6900)) - iwave = where(logla GT alog10(6910) AND logla LT alog10(8500)) - filtsz=25 - ig = where(ivar[iwave] GT 0 AND flux[iwave] GE 0, nwave) - sntemp=0 - sntemp2=0 - if (nwave GT filtsz) then begin - sntemp = djs_median(snimg[iwave[ig]], width=filtsz, boundary='reflect') - sntemp2 = djs_median(sflux[iwave[ig]], width=filtsz, boundary='reflect') - endif - snr = djs_mean(sntemp) - skyf= djs_mean(sntemp2) - snvec_i[ct]=snr - skyvec_i[ct]=skyf - programvec[ct]=programF - ct=ct+1 - splog,'Spectrum '+id_strf+' analysed, target '+strtrim(string(itarget+1),2)+' of '+strtrim(string(n_elements(target_ind)),2)+' targets' - endif - endfor - endif - endfor - endif - endfor - finalvalues.flux_g=snvec_g - finalvalues.flux_i=snvec_i - finalvalues.skyflux_g=skyvec_g - finalvalues.skyflux_i=skyvec_i - finalvalues.id=idvec - finalvalues.idf=idvecf - finalvalues.firstcarton=cartonvec - finalvalues.objtype=objtypevec - finalvalues.program=programvec - mwrfits, finalvalues, outfile, /create, /silent - - - splog, 'Successful completion of REFORMAT_SPEC at ' + systime() - if (keyword_set(logfile)) then splog, /close - end diff --git a/scripts/sky_spec.pro b/scripts/sky_spec.pro deleted file mode 100644 index 71614ee61..000000000 --- a/scripts/sky_spec.pro +++ /dev/null @@ -1,344 +0,0 @@ -;+ -; NOTE: reprocess the single spectra spSepc files -; NAME: -; reformat_spec -; -; PURPOSE: -; Reformat spectra into a single fits file per object, combining all necessary -; pieces from spField, spZall, spZline and spZbest -; -; For each object, there is one file per target, -; containing the finall coadded spectrum, and each blue-red merged single spectrum per exposure -; frames. The file contains the next headers: -; -; HDU 0 : Header info -; HDU 1 : Coadded spectrum -; HDU 2 : Summary metadata copied from spZbest -; HDU 3 : Summary metadata copied from spZall -; HDU 4 : Line fitting metadata from spZline -; HDU 5 : Individual frame spectra per exposure -; -; The format of each spec file is: -; -; HDU 0 : -; Header : from input spField with additional keywords from specObj: -; -; Keyword specObjColumn Comment -; ------- ----------- ------- -; [*] PLUG_RA PLUG_RA RA of object [deg] -; [*] PLUG_DEC PLUG_DEC dec of object [deg] -; TARGET_ID TARGET_ID Unique object identifier -; -; [*] Note that RA and DEC already exist in the spPlate headers -; but they are the telescope boresite RA and DEC, not the -; RA and DEC of the object. -; -; Data : None -; HDU 1 : Coadded Spectrum -; Header : Minimum to define table -; Data : Binary table with columns taken from the original spSpec and spZbest: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum in coadd -; or_mask : mask bits which affect at least one spectrum in coadd -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; model : best fit model for classification & redshift (from spZbest) -; -; HDU 2 : Copy of row for this object from spZbest table + plugmap info of spFrame -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZbest*.fits -; -; HDU 3 : Copy of rows for this object from spZall table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 4 : Copy of rows for this object from spZline table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 5 .. +n_exp : Individual frames. -; For each exposure there is one HDU. -; These are in the order of the FPS confiuration_id, and -; -; Header : Minimum to define table -; Data: Binary table with columns taken from the original spSpec: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum -; or_mask : mask bits which affect at least one spectrum -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; -; CALLING SEQUENCE: -; reformat_spec, [ platefile, fiberid=, run1d=, /doplot, /debug, chop_data= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; fieldfile - Field file(s) from spectro-2D; default to all files -; matching 'spField*.fits' -; run1d - Optional override value for the environment variable $RUN1D -; doplot - If set, then generate plots. Send plots to a PostScript -; file spDiagDebug1d-$PLATE-$MJD.ps unless /DEBUG is set. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Input files are read from the current directory. -; Output files are written to the subdirectory $RUN2D/SPECTRA/$MJD. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; The procedure requires these files: -; ZALLFILE = 'spZall-Field-MJD.fits' -; ZBESTFILE = 'spZbest-Field-MJD.fits' -; ZLINEFILE = 'spZline-Field-MJD.fits' -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 27-Jan-2020 Written by Hector Ibarra at UIUC -;------------------------------------------------------------------------------ -; - -pro sky_spec, outdir=outdir, run1d=run1d1, doplot=doplot, spectradir=spectradir, $ - run2d=run2d, plates=plates, legacy=legacy, sky=sky, lite=lite - -CPU, TPOOL_NTHREADS = 1 - - spectro_redux = getenv('BOSS_SPECTRO_REDUX') - ;if (NOT keyword_set(platefile)) then begin - ; platefile = findfile('spField*.fits*', count=nplate) - ;endif else begin - ; if (size(platefile,/tname) NE 'STRING') then $ - ; message, 'FieldFILE must be a file name' - ; if (keyword_set(platefile)) then nplate = n_elements(platefile) $ - ; else nplate = 0 - ;endelse - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - - if (keyword_set(run2d)) then run2d = strtrim(run2d,2) $ - else run2d = getenv('RUN2D') - comb=spectro_redux+'/'+run2d+'/' - if (NOT keyword_set(spectradir)) then spectradir=comb - rsky=1 - if (keyword_set(sky)) then begin - rsky = sky - endif - - if (NOT keyword_set(outdir)) then outdir="outdir" - spawn,'mkdir -p '+outdir - logfile = djs_filepath('SKYSpec-' + run2d + '.log', root_dir=outdir) - if (keyword_set(logfile)) then begin - cpbackup, logfile - splog, filename=logfile - splog, 'Log file ' + logfile + ' opened ' + systime() - endif - - path=spectro_redux+'/'+run2d+'/conflist.fits' - data=mrdfits(path,1) - plates=data.plate - mjds=data.mjd - program=data.programname - nt=where(program.contains('RM')) - plates=plates[nt] - mjds=mjds[nt] - program=program[nt] - NexpF=ulong64(n_elements(mjds))*500 - finalvalues=replicate(create_struct('FLUX_g',0.0),NexpF) - values_t=replicate(create_struct('FLUX_r',0.0),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('FLUX_i',0.0),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('SKYFLUX_g',0.0),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('SKYFLUX_r',0.0),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('SKYFLUX_i',0.0),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('ID',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('FIRSTCARTON',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('OBJTYPE',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('PROGRAM',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - snvec_g=finalvalues.flux_g - snvec_r=finalvalues.flux_r - snvec_i=finalvalues.flux_i - skyvec_g=finalvalues.skyflux_g - skyvec_r=finalvalues.skyflux_r - skyvec_i=finalvalues.skyflux_i - idvec=finalvalues.id - cartonvec=finalvalues.firstcarton - objtypevec=finalvalues.objtype - programvec=finalvalues.program - - ct=ulong64(0) - spawn,'mkdir -p '+outdir - outfile=outdir+'/spSKYspec-'+run2d+'.fits' - for itt=0, n_elements(plates)-1 do begin - programF=program[itt] - platefile='spField-'+strtrim(string(plates[itt]),2)+'-'+strtrim(string(mjds[itt]),2)+'.fits' - - platemjd = strmid(fileandpath(platefile), 8, 11) - fieldid=strmid(platemjd,0,5) - thismjd=strmid(platemjd,6,5) - - rootdir=comb+'/'+fieldid+'p/' - - splog,'Analysing the spec files' - - if FILE_TEST(rootdir+platefile) then begin - plugmap = mrdfits(rootdir+platefile,5) - - if keyword_set(legacy) or keyword_set(plates) then begin - fieldid=fieldid+'p' - endif - - target_ind=plugmap.target_index - single_basefile='coadd/'+thismjd+'/spSpec-'+platemjd+'-' - single_out_basefile='spec-'+platemjd+'-' - base_id=platemjd+'-' - if keyword_set(lite) then begin - lit_p='/lite' - endif else begin - lit_p='/full' - endelse - - for itarget=0, n_elements(target_ind)-1 do begin - plug_target=plugmap[itarget] - otype=strtrim(plug_target.objtype,2) - spec=1 - carton=plug_target.FIRSTCARTON - if spec eq 1 then begin - if keyword_set(plates) or keyword_set(legacy) then begin; - if keyword_set(legacy) then begin - single_file=single_basefile+string(plug_target.fiberid,format='(i4.4)')+'.fits' - id_str=base_id+string(plug_target.fiberid,format='(i4.4)') - endif else begin - if plug_target.catalogid eq 0 then begin - single_file=single_basefile+string(plug_target.fiberid,format='(i11.11)')+'.fits' - id_str=base_id+string(plug_target.fiberid,format='(i11.11)') - endif else begin - if plug_target.program.contains('offset', /FOLD_CASE ) then begin - single_file=single_basefile+strtrim(string(plug_target.catalogid),1)+'.fits' - id_str=base_id+strtrim(string(plug_target.catalogid),1) - endif else begin - single_file=single_basefile+string(plug_target.catalogid,format='(i11.11)')+'.fits' - id_str=base_id+string(plug_target.catalogid,format='(i11.11)') - endelse - endelse - endelse - endif else begin - single_file=single_basefile+plug_target.targetid+'.fits' - endelse - single_fileF=rootdir+single_file - if keyword_set(plates) or keyword_set(legacy) then begin - if keyword_set(legacy) then begin - file_name=single_out_basefile+string(plug_target.fiberid,format='(i4.4)')+'.fits' - endif else begin - if plug_target.catalogid eq 0 then begin - file_name=single_out_basefile+string(plug_target.fiberid,format='(i11.11)')+'.fits' - endif else begin - if plug_target.program.contains('offset', /FOLD_CASE ) then begin - file_name=single_out_basefile+strtrim(string(plug_target.catalogid),1)+'.fits' - endif else begin - file_name=single_out_basefile+string(plug_target.catalogid,format='(i11.11)')+'.fits' - endelse - endelse - endelse - endif - if not keyword_set(lite) then begin - ;for i=0, nexp-1 do begin - single = mrdfits(single_fileF,1,hdri) - flux=single.flux - ivar=single.ivar - loglam=single.loglam - skyfkux=single.sky - snimg = flux ;* sqrt(ivar) - - gwave = where(loglam GT alog10(4000) AND loglam LT alog10(5500)) - rwave = where(loglam GT alog10(5600) AND loglam LT alog10(6900)) - iwave = where(loglam GT alog10(6910) AND loglam LT alog10(8500)) - - filtsz=25 - ig = where(ivar[gwave] GT 0 AND flux[gwave] GE 0, nwave) - sntemp=0 - sntemp2=0 - if (nwave GT filtsz) then begin - sntemp = djs_median(snimg[gwave[ig]], width=filtsz, boundary='reflect') - sntemp2 = djs_median(skyfkux[gwave[ig]], width=filtsz, boundary='reflect') - endif - snr = djs_mean(sntemp) - skyf= djs_mean(sntemp2) - snvec_g[ct]=snr - skyvec_g[ct]=skyf - - filtsz=25 - ig = where(ivar[rwave] GT 0 AND flux[rwave] GE 0, nwave) - sntemp=0 - sntemp2=0 - if (nwave GT filtsz) then begin - sntemp = djs_median(snimg[rwave[ig]], width=filtsz, boundary='reflect') - sntemp2 = djs_median(skyfkux[rwave[ig]], width=filtsz, boundary='reflect') - endif - snr = djs_mean(sntemp) - skyf= djs_mean(sntemp2) - snvec_r[ct]=snr - skyvec_r[ct]=skyf - - filtsz=25 - ig = where(ivar[iwave] GT 0 AND flux[iwave] GE 0, nwave) - sntemp=0 - sntemp2=0 - if (nwave GT filtsz) then begin - sntemp = djs_median(snimg[iwave[ig]], width=filtsz, boundary='reflect') - sntemp2 = djs_median(skyfkux[iwave[ig]], width=filtsz, boundary='reflect') - endif - snr = djs_mean(sntemp) - skyf= djs_mean(sntemp2) - snvec_i[ct]=snr - skyvec_i[ct]=skyf - - - idvec[ct]=id_str - cartonvec[ct]=carton - objtypevec[ct]=otype - programvec[ct]=programF - ct=ct+1 - ;endfor - endif - splog,'Spectrum '+file_name+' analysed, target '+strtrim(string(itarget+1),2)+' of '+strtrim(string(n_elements(target_ind)),2)+' targets' - endif - ;stop - endfor - endif - endfor - - finalvalues.flux_g=snvec_g - finalvalues.flux_r=snvec_r - finalvalues.flux_i=snvec_i - finalvalues.skyflux_g=skyvec_g - finalvalues.skyflux_r=skyvec_r - finalvalues.skyflux_i=skyvec_i - finalvalues.id=idvec - finalvalues.firstcarton=cartonvec - finalvalues.objtype=objtypevec - finalvalues.program=programvec - - mwrfits, finalvalues, outfile, /create, /silent - - - splog, 'Successful completion of REFORMAT_SPEC at ' + systime() - if (keyword_set(logfile)) then splog, /close - end diff --git a/scripts/snr_frame.pro b/scripts/snr_frame.pro deleted file mode 100644 index a59c9a17e..000000000 --- a/scripts/snr_frame.pro +++ /dev/null @@ -1,310 +0,0 @@ -;+ -; NOTE: reprocess the single spectra spSepc files -; NAME: -; snr_frame -; -; PURPOSE: -; Reformat spectra into a single fits file per object, combining all necessary -; pieces from spField, spZall, spZline and spZbest -; -; For each object, there is one file per target, -; containing the finall coadded spectrum, and each blue-red merged single spectrum per exposure -; frames. The file contains the next headers: -; -; HDU 0 : Header info -; HDU 1 : Coadded spectrum -; HDU 2 : Summary metadata copied from spZbest -; HDU 3 : Summary metadata copied from spZall -; HDU 4 : Line fitting metadata from spZline -; HDU 5 : Individual frame spectra per exposure -; -; The format of each spec file is: -; -; HDU 0 : -; Header : from input spField with additional keywords from specObj: -; -; Keyword specObjColumn Comment -; ------- ----------- ------- -; [*] PLUG_RA PLUG_RA RA of object [deg] -; [*] PLUG_DEC PLUG_DEC dec of object [deg] -; TARGET_ID TARGET_ID Unique object identifier -; -; [*] Note that RA and DEC already exist in the spPlate headers -; but they are the telescope boresite RA and DEC, not the -; RA and DEC of the object. -; -; Data : None -; HDU 1 : Coadded Spectrum -; Header : Minimum to define table -; Data : Binary table with columns taken from the original spSpec and spZbest: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum in coadd -; or_mask : mask bits which affect at least one spectrum in coadd -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; model : best fit model for classification & redshift (from spZbest) -; -; HDU 2 : Copy of row for this object from spZbest table + plugmap info of spFrame -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZbest*.fits -; -; HDU 3 : Copy of rows for this object from spZall table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 4 : Copy of rows for this object from spZline table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 5 .. +n_exp : Individual frames. -; For each exposure there is one HDU. -; These are in the order of the FPS confiuration_id, and -; -; Header : Minimum to define table -; Data: Binary table with columns taken from the original spSpec: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum -; or_mask : mask bits which affect at least one spectrum -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; -; CALLING SEQUENCE: -; reformat_spec, [ platefile, fiberid=, run1d=, /doplot, /debug, chop_data= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; fieldfile - Field file(s) from spectro-2D; default to all files -; matching 'spField*.fits' -; run1d - Optional override value for the environment variable $RUN1D -; doplot - If set, then generate plots. Send plots to a PostScript -; file spDiagDebug1d-$PLATE-$MJD.ps unless /DEBUG is set. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Input files are read from the current directory. -; Output files are written to the subdirectory $RUN2D/SPECTRA/$MJD. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; The procedure requires these files: -; ZALLFILE = 'spZall-Field-MJD.fits' -; ZBESTFILE = 'spZbest-Field-MJD.fits' -; ZLINEFILE = 'spZline-Field-MJD.fits' -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 27-Jan-2020 Written by Hector Ibarra at UIUC -;------------------------------------------------------------------------------ -; - -pro snr_frame, outdir=outdir, run1d=run1d1, doplot=doplot, spectradir=spectradir, $ - run2d=run2d, plates=plates, legacy=legacy, sky=sky, lite=lite, cframe=cframe - -CPU, TPOOL_NTHREADS = 1 - - spectro_redux = getenv('BOSS_SPECTRO_REDUX') - ;if (NOT keyword_set(platefile)) then begin - ; platefile = findfile('spField*.fits*', count=nplate) - ;endif else begin - ; if (size(platefile,/tname) NE 'STRING') then $ - ; message, 'FieldFILE must be a file name' - ; if (keyword_set(platefile)) then nplate = n_elements(platefile) $ - ; else nplate = 0 - ;endelse - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - - if (keyword_set(run2d)) then run2d = strtrim(run2d,2) $ - else run2d = getenv('RUN2D') - comb=spectro_redux+'/'+run2d+'/' - if (NOT keyword_set(spectradir)) then spectradir=comb - rsky=1 - if (keyword_set(sky)) then begin - rsky = sky - endif - if (NOT keyword_set(outdir)) then outdir="outdir" - spawn,'mkdir -p '+outdir - logfile = djs_filepath('SNRFrame-' + run2d + '.log', root_dir=outdir) - if (keyword_set(logfile)) then begin - cpbackup, logfile - splog, filename=logfile - splog, 'Log file ' + logfile + ' opened ' + systime() - endif - - - path=spectro_redux+'/'+run2d+'/conflist.fits' - data=mrdfits(path,1) - plates=data.plate - mjds=data.mjd - expN=data.nexp_b1 - NexpF=ulong64(total(expN+4))*500 - finalvalues=replicate(create_struct('SNR_g',0.0),NexpF) - values_t=replicate(create_struct('SNR_i',0.0),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('ID',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('IDF',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('FIRSTCARTON',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('OBJTYPE',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - snvec_g=finalvalues.snr_g - snvec_i=finalvalues.snr_i - idvec=finalvalues.id - idvecf=finalvalues.idf - cartonvec=finalvalues.firstcarton - objtypevec=finalvalues.objtype - - ct=ulong64(0) - if keyword_set(cframe) then begin - outfile=outdir+'/spSNRCFrames-'+run2d+'.fits' - endif else begin - outfile=outdir+'/spSNRFrames-'+run2d+'.fits' - endelse - - for itt=0, n_elements(plates)-1 do begin - platefile='spField-'+strtrim(string(plates[itt]),2)+'-'+strtrim(string(mjds[itt]),2)+'.fits' - - platemjd = strmid(fileandpath(platefile), 8, 11) - ;zallfile = djs_filepath('spZall-' + platemjd + '.fits', root_dir=run1d) - ;zbestfile = djs_filepath('spZbest-' + platemjd + '.fits', root_dir=run1d) - ;zlinefile = djs_filepath('spZline-' + platemjd + '.fits', root_dir=run1d) - ;logfile = djs_filepath('spec-' + platemjd + '.log', root_dir='') - fieldid=strmid(platemjd,0,5) - thismjd=strmid(platemjd,6,5) - - rootdir=comb+'/'+fieldid+'p/' - thisplan=rootdir+'spPlancomb-'+platemjd+'.par' - allseq = yanny_readone(thisplan, 'SPEXP', hdr=hdr, /anon) - - splog,'Writing the final output files' - - if FILE_TEST(rootdir+platefile) then begin - plugmap = mrdfits(rootdir+platefile,5) - nexp=plugmap.nexp - nexp=nexp[0] - if keyword_set(legacy) or keyword_set(plates) then begin - fieldid=fieldid+'p' - endif - ctar=0 - target_ind=plugmap.target_index - base_id=platemjd+'-' - if keyword_set(lite) then begin - lit_p='/lite' - endif else begin - lit_p='/full' - endelse - for ifc=0, n_elements(allseq)-1 do begin - frames=allseq[ifc].name - if keyword_set(cframe) then begin - file1=rootdir+repstr(frames[0],'spFrame','spCFrame') - file2=rootdir+repstr(frames[1],'spFrame','spCFrame') - endif else begin - file1=rootdir+frames[0]+'.gz' - file2=rootdir+frames[1]+'.gz' - endelse - if FILE_TEST(file1) and FILE_TEST(file2) then begin - ctar=ctar+1 - spframe_read,file1,objflux=objflux1,loglam=loglam1,skyflux=skyflux1,objivar=objivar1,hdr=hdr1;Bule camera - spframe_read,file2,objflux=objflux2,loglam=loglam2,skyflux=skyflux2,objivar=objivar2,hdr=hdr2;Red camera - ;expnum = strtrim(string(sxpar(hdr, 'EXPOSURE')),2) - expnum = repstr(repstr(frames[0],'spFrame-b1-',''),'.fits') - ;print,sxpar(hdr, 'EXPOSURE') - ;stop - for itarget=0, n_elements(target_ind)-1 do begin - plug_target=plugmap[itarget] - otype=strtrim(plug_target.objtype,2) - spec=1 - carton=plug_target.FIRSTCARTON - if spec eq 1 then begin - if keyword_set(plates) or keyword_set(legacy) then begin; - if keyword_set(legacy) then begin - ;single_file=single_basefile+string(plug_target.fiberid,format='(i4.4)')+'.fits' - id_str=base_id+string(plug_target.fiberid,format='(i4.4)') - endif else begin - if plug_target.catalogid eq 0 then begin - ;single_file=single_basefile+string(plug_target.fiberid,format='(i11.11)')+'.fits' - id_str=base_id+string(plug_target.fiberid,format='(i11.11)') - endif else begin - if plug_target.program.contains('offset', /FOLD_CASE ) then begin - ;single_file=single_basefile+strtrim(string(plug_target.catalogid),1)+'.fits' - id_str=base_id+strtrim(string(plug_target.catalogid),1) - endif else begin - ;single_file=single_basefile+string(plug_target.catalogid,format='(i11.11)')+'.fits' - id_str=base_id+string(plug_target.catalogid,format='(i11.11)') - endelse - endelse - endelse - endif else begin - ;single_file=single_basefile+plug_target.targetid+'.fits' - endelse - id_strf=id_str+'-'+string(ctar-1,format='(i2.2)') - id_str2=id_str+'-'+expnum - flux=objflux1[*,itarget];single.flux - ivar=objivar1[*,itarget];single.ivar - logla=loglam1[*,itarget];single.loglam - snimg = flux * sqrt(ivar) - gwave = where(logla GT alog10(4000) AND logla LT alog10(5500)) - ;rwave = where(logla GT alog10(5600) AND loglam LT alog10(6900)) - ;iwave = where(logla GT alog10(6910) AND logla LT alog10(8500)) - filtsz=25 - ig = where(ivar[gwave] GT 0 AND flux[gwave] GE 0, nwave) - sntemp=0 - if (nwave GT filtsz) then $ - sntemp = djs_median(snimg[gwave[ig]], $ - width=filtsz, boundary='reflect') - snr = djs_mean(sntemp) - snvec_g[ct]=snr - idvec[ct]=id_strf - idvecf[ct]=id_str2 - cartonvec[ct]=carton - objtypevec[ct]=otype - - flux=objflux2[*,itarget];single.flux - ivar=objivar2[*,itarget];single.ivar - logla=loglam2[*,itarget];single.loglam - snimg = flux * sqrt(ivar) - ;gwave = where(logla GT alog10(4000) AND logla LT alog10(5500)) - ;rwave = where(logla GT alog10(5600) AND loglam LT alog10(6900)) - iwave = where(logla GT alog10(6910) AND logla LT alog10(8500)) - filtsz=25 - ig = where(ivar[iwave] GT 0 AND flux[iwave] GE 0, nwave) - sntemp=0 - if (nwave GT filtsz) then $ - sntemp = djs_median(snimg[iwave[ig]], $ - width=filtsz, boundary='reflect') - snr = djs_mean(sntemp) - snvec_i[ct]=snr - - ct=ct+1 - splog,'Spectrum '+id_strf+' analysed, target '+strtrim(string(itarget+1),2)+' of '+strtrim(string(n_elements(target_ind)),2)+' targets' - endif - endfor - endif - endfor - endif - endfor - finalvalues.snr_g=snvec_g - finalvalues.snr_i=snvec_i - finalvalues.id=idvec - finalvalues.idf=idvecf - finalvalues.firstcarton=cartonvec - finalvalues.objtype=objtypevec - mwrfits, finalvalues, outfile, /create, /silent - - - splog, 'Successful completion of REFORMAT_SPEC at ' + systime() - if (keyword_set(logfile)) then splog, /close - end diff --git a/scripts/snr_spec.pro b/scripts/snr_spec.pro deleted file mode 100644 index 35f4e4c39..000000000 --- a/scripts/snr_spec.pro +++ /dev/null @@ -1,481 +0,0 @@ -;+ -; NOTE: reprocess the single spectra spSepc files -; NAME: -; reformat_spec -; -; PURPOSE: -; Reformat spectra into a single fits file per object, combining all necessary -; pieces from spField, spZall, spZline and spZbest -; -; For each object, there is one file per target, -; containing the finall coadded spectrum, and each blue-red merged single spectrum per exposure -; frames. The file contains the next headers: -; -; HDU 0 : Header info -; HDU 1 : Coadded spectrum -; HDU 2 : Summary metadata copied from spZbest -; HDU 3 : Summary metadata copied from spZall -; HDU 4 : Line fitting metadata from spZline -; HDU 5 : Individual frame spectra per exposure -; -; The format of each spec file is: -; -; HDU 0 : -; Header : from input spField with additional keywords from specObj: -; -; Keyword specObjColumn Comment -; ------- ----------- ------- -; [*] PLUG_RA PLUG_RA RA of object [deg] -; [*] PLUG_DEC PLUG_DEC dec of object [deg] -; TARGET_ID TARGET_ID Unique object identifier -; -; [*] Note that RA and DEC already exist in the spPlate headers -; but they are the telescope boresite RA and DEC, not the -; RA and DEC of the object. -; -; Data : None -; HDU 1 : Coadded Spectrum -; Header : Minimum to define table -; Data : Binary table with columns taken from the original spSpec and spZbest: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum in coadd -; or_mask : mask bits which affect at least one spectrum in coadd -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; model : best fit model for classification & redshift (from spZbest) -; -; HDU 2 : Copy of row for this object from spZbest table + plugmap info of spFrame -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZbest*.fits -; -; HDU 3 : Copy of rows for this object from spZall table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 4 : Copy of rows for this object from spZline table -; SPECTRO_REDUX/RUN2D/FIELD/RUN1D/spZline*.fits -; -; HDU 5 .. +n_exp : Individual frames. -; For each exposure there is one HDU. -; These are in the order of the FPS confiuration_id, and -; -; Header : Minimum to define table -; Data: Binary table with columns taken from the original spSpec: -; flux : flux in 10^-17 ergs/s/cm^2/A -; loglam : log10(lambda[A]) -; ivar : inverse variance -; and_mask : mask bits which affect every spectrum -; or_mask : mask bits which affect at least one spectrum -; wdisp : wavelength dispersion in dloglam units -; sky : subtracted sky flux in 10^-17 ergs/s/cm^2/A -; wresl : spectral resolution in A units -; -; CALLING SEQUENCE: -; reformat_spec, [ platefile, fiberid=, run1d=, /doplot, /debug, chop_data= ] -; -; INPUTS: -; -; OPTIONAL INPUTS: -; fieldfile - Field file(s) from spectro-2D; default to all files -; matching 'spField*.fits' -; run1d - Optional override value for the environment variable $RUN1D -; doplot - If set, then generate plots. Send plots to a PostScript -; file spDiagDebug1d-$PLATE-$MJD.ps unless /DEBUG is set. -; -; OUTPUTS: -; -; OPTIONAL OUTPUTS: -; -; COMMENTS: -; Input files are read from the current directory. -; Output files are written to the subdirectory $RUN2D/SPECTRA/$MJD. -; -; EXAMPLES: -; -; BUGS: -; -; DATA FILES: -; The procedure requires these files: -; ZALLFILE = 'spZall-Field-MJD.fits' -; ZBESTFILE = 'spZbest-Field-MJD.fits' -; ZLINEFILE = 'spZline-Field-MJD.fits' -; -; PROCEDURES CALLED: -; -; REVISION HISTORY: -; 27-Jan-2020 Written by Hector Ibarra at UIUC -;------------------------------------------------------------------------------ -; -pro struct_delete_field, struct, tag - ;Delete an existing field from a structure. - ; - ;Inputs: - ; tag (string) Case insensitive tag name describing structure field to - ; delete. Leading and trailing spaces will be ignored. If the requested - ; field does not exist, the structure is returned unchanged and without - ; error. - ; - ;Input/Output: - ; struct (structure) structure to be modified. - ; - ;Examples: - ; - ; Delete sme.wave from structure: - ; - ; IDL> struct_delete_field, sme, 'wave' - ; - ;History: - ; 2003-Jul-26 Valenti Adapted from struct_replace_field.pro. - ; 2020-Jan-27 HJIM Adapted for bhm. - if n_params() lt 2 then begin - print, 'syntax: struct_delete_field, struct, tag' - return - endif - - ;Check that input is a structure. - if size(struct, /tname) ne 'STRUCT' then begin - message, 'first argument is not a structure' - endif - - ;Get list of structure tags. - tags = tag_names(struct) - ntags = n_elements(tags) - - ;Check whether the requested field exists in input structure. - ctag = strupcase(strtrim(tag, 2)) ;canoncial form of tag - itag = where(tags eq ctag, nmatch) - if nmatch eq 0 then return - itag = itag[0] ;convert to scalar - ;print,itag - ;Copy any fields that precede target field. - if itag gt 0 then begin ;target field occurs first - ;new = create_struct(tags[0], struct.(0)) ;initialize structure - valt=struct.(0);initialize structure - nd=SIZE(valt, /N_DIMENSIONS) - if nd eq 1 then begin - if n_elements(valt) eq 5 or n_elements(valt) eq 10 then begin - valf=valt - siz_str=1 - endif else begin - valf=valt[0] - siz_str=n_elements(valt) - endelse - endif else begin - if nd eq 2 then begin - if n_elements(valt) eq 100 then begin - valf=valt - siz_str=1 - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - endelse - if tags[0] eq 'NEXP' then begin - valf=0 - endif - if tags[0] eq 'TARGET_INDEX' then begin - valf=0 - endif - new=replicate(create_struct(tags[0],valf),siz_str) - new.(0)=valt - for i=1, itag-1 do begin ;insert leading unchange - valt=struct.(i) - nd=SIZE(valt, /N_DIMENSIONS) - if nd eq 1 then begin - if n_elements(valt) eq 5 or n_elements(valt) eq 10 then begin - valf=valt - siz_str=1 - endif else begin - valf=valt[0] - siz_str=n_elements(valt) - endelse - endif else begin - if nd eq 2 then begin - if n_elements(valt) eq 100 then begin - valf=valt - siz_str=1 - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - endelse - if tags[i] eq 'NEXP' then begin - valf=0 - endif - if tags[i] eq 'TARGET_INDEX' then begin - valf=0 - endif - values_t=replicate(create_struct(tags[i],valf),siz_str) - new=struct_addtags(new,values_t) - new.(i)=valt - endfor - endif - - ;Replicate remainder of structure after desired tag. - for i=itag+1, ntags-1 do begin - valt=struct.(i) - nd=SIZE(valt, /N_DIMENSIONS) - if nd eq 1 then begin - if n_elements(valt) eq 5 or n_elements(valt) eq 10 or n_elements(valt) eq 35 or n_elements(valt) eq 4 or n_elements(valt) eq 3 or n_elements(valt) eq 2 then begin; the magnitude vector has 5 elements - valf=valt - siz_str=1 - endif else begin - valf=valt[0] - siz_str=n_elements(valt) - endelse - endif else begin - if nd eq 2 then begin - if n_elements(valt) eq 100 then begin - valf=valt - siz_str=1 - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - endif else begin - if nd eq 3 then begin - if n_elements(valt[*,*,0]) eq 100 then begin - valf=valt[*,*,0] - siz_str=n_elements(valt[0,0,*]) - endif ;else begin - ; valf=valt[*,0] - ; siz_str=n_elements(valt[0,*]) - ;endelse - endif else begin - valf=valt[*,0] - siz_str=n_elements(valt[0,*]) - endelse - ;print,valt[*,*,0] - ;valf=valt[*,0] - ;siz_str=n_elements(valt[0,*]) - endelse - endelse - if tags[i] eq 'NEXP' then begin - valf=0 - endif - if tags[i] eq 'TARGET_INDEX' then begin - valf=0 - endif - ;print,tags[i] - ;print,valt - ;print,'--' - ;print,valf - ;print,nd - ;print,n_elements(valt) - ;print,siz_str,n_elements(new) - values_t=replicate(create_struct(tags[i],valf),siz_str) - new=struct_addtags(new,values_t) - new.(i-1)=valt - endfor - - ;Replace input structure with new structure. - struct = new - -end - -pro snr_spec, outdir=outdir, run1d=run1d1, doplot=doplot, spectradir=spectradir, $ - run2d=run2d, plates=plates, legacy=legacy, sky=sky, lite=lite - -CPU, TPOOL_NTHREADS = 1 - - spectro_redux = getenv('BOSS_SPECTRO_REDUX') - if (NOT keyword_set(platefile)) then begin - platefile = findfile('spField*.fits*', count=nplate) - endif else begin - if (size(platefile,/tname) NE 'STRING') then $ - message, 'FieldFILE must be a file name' - if (keyword_set(platefile)) then nplate = n_elements(platefile) $ - else nplate = 0 - endelse - if (keyword_set(run1d1)) then run1d = strtrim(run1d1,2) $ - else run1d = getenv('RUN1D') - - if (keyword_set(run2d)) then run2d = strtrim(run2d,2) $ - else run2d = getenv('RUN2D') - comb=spectro_redux+'/'+run2d+'/' - if (NOT keyword_set(spectradir)) then spectradir=comb - rsky=1 - if (keyword_set(sky)) then begin - rsky = sky - endif - if (NOT keyword_set(outdir)) then outdir="outdir" - - logfile = djs_filepath('SNR-' + run2d + '.log', root_dir=outdir) - if (keyword_set(logfile)) then begin - cpbackup, logfile - splog, filename=logfile - splog, 'Log file ' + logfile + ' opened ' + systime() - endif - - - path=spectro_redux+'/'+run2d+'/conflist.fits' - data=mrdfits(path,1) - plates=data.plate - mjds=data.mjd - expN=data.nexp_b1 - NexpF=ulong64(total(expN))*500 - finalvalues=replicate(create_struct('SNR_r',0.0),NexpF) - values_t=replicate(create_struct('ID',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('FIRSTCARTON',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - values_t=replicate(create_struct('OBJTYPE',""),NexpF) - finalvalues=struct_addtags(finalvalues,values_t) - snvec_r=finalvalues.snr_r - idvec=finalvalues.id - cartonvec=finalvalues.firstcarton - objtypevec=finalvalues.objtype - - ct=ulong64(0) - spawn,'mkdir -p '+outdir - outfile=outdir+'/spSNR-'+run2d+'.fits' - for itt=0, n_elements(plates)-1 do begin - platefile='spField-'+strtrim(string(plates[itt]),2)+'-'+strtrim(string(mjds[itt]),2)+'.fits' - - platemjd = strmid(fileandpath(platefile), 8, 11) - zallfile = djs_filepath('spZall-' + platemjd + '.fits', root_dir=run1d) - zbestfile = djs_filepath('spZbest-' + platemjd + '.fits', root_dir=run1d) - zlinefile = djs_filepath('spZline-' + platemjd + '.fits', root_dir=run1d) - logfile = djs_filepath('spec-' + platemjd + '.log', root_dir='') - fieldid=strmid(platemjd,0,5) - thismjd=strmid(platemjd,6,5) - - rootdir=comb+'/'+fieldid+'p/' - - splog,'Writing the final output files' - - - plugmap = mrdfits(rootdir+platefile,5) - zall = mrdfits(rootdir+zallfile,1) - zbest = mrdfits(rootdir+zbestfile,1) - zline = mrdfits(rootdir+zlinefile,1) - zmodel = mrdfits(rootdir+zbestfile,2) - - if keyword_set(legacy) or keyword_set(plates) then begin - fieldid=fieldid+'p' - endif - - target_ind=plugmap.target_index - single_basefile='coadd/'+thismjd+'/spSpec-'+platemjd+'-' - single_out_basefile='spec-'+platemjd+'-' - base_id=platemjd+'-' - if keyword_set(lite) then begin - lit_p='/lite' - endif else begin - lit_p='/full' - endelse - - for itarget=0, n_elements(target_ind)-1 do begin - plug_target=plugmap[itarget] - otype=strtrim(plug_target.objtype,2) - spec=1 - carton=plug_target.FIRSTCARTON - if spec eq 1 then begin - if keyword_set(plates) or keyword_set(legacy) then begin - indx0 = (where((zbest.fiberid EQ itarget+1))) - zbest_target=zbest[indx0] - endif else begin - zbest_target=zbest[itarget] - endelse - indx = (where((zall.fiberid EQ itarget+1))) - tags = tag_names(zall) - ntags = n_elements(tags) - zall_targ=zall[indx] - indx2 = (where((zline.fiberid EQ itarget+1))) - tags = tag_names(zline) - ntags = n_elements(tags) - zline_targ=zline[indx2] - if keyword_set(plates) or keyword_set(legacy) then begin; - if keyword_set(legacy) then begin - single_file=single_basefile+string(plug_target.fiberid,format='(i4.4)')+'.fits' - id_str=base_id+string(plug_target.fiberid,format='(i4.4)') - endif else begin - if plug_target.catalogid eq 0 then begin - single_file=single_basefile+string(plug_target.fiberid,format='(i11.11)')+'.fits' - id_str=base_id+string(plug_target.fiberid,format='(i11.11)') - endif else begin - if plug_target.program.contains('offset', /FOLD_CASE ) then begin - single_file=single_basefile+strtrim(string(plug_target.catalogid),1)+'.fits' - id_str=base_id+strtrim(string(plug_target.catalogid),1) - endif else begin - single_file=single_basefile+string(plug_target.catalogid,format='(i11.11)')+'.fits' - id_str=base_id+string(plug_target.catalogid,format='(i11.11)') - endelse - endelse - endelse - endif else begin - single_file=single_basefile+plug_target.targetid+'.fits' - endelse - single_fileF=rootdir+single_file - struct_delete_field,plug_target,'objtype' - struct_delete_field,zbest_target,'fiberid' - struct_delete_field,zall_targ,'fiberid' - struct_delete_field,zline_targ,'fiberid' - if keyword_set(plates) or keyword_set(legacy) then begin - struct_delete_field,zbest_target,'field' - endif - fin_plug=struct_addtags(plug_target,zbest_target) - nexp=plug_target.nexp - if keyword_set(plates) or keyword_set(legacy) then begin - if keyword_set(legacy) then begin - file_name=single_out_basefile+string(plug_target.fiberid,format='(i4.4)')+'.fits' - endif else begin - if plug_target.catalogid eq 0 then begin - file_name=single_out_basefile+string(plug_target.fiberid,format='(i11.11)')+'.fits' - endif else begin - if plug_target.program.contains('offset', /FOLD_CASE ) then begin - file_name=single_out_basefile+strtrim(string(plug_target.catalogid),1)+'.fits' - endif else begin - file_name=single_out_basefile+string(plug_target.catalogid,format='(i11.11)')+'.fits' - endelse - endelse - endelse - endif - if not keyword_set(lite) then begin - for i=0, nexp-1 do begin - single = mrdfits(single_fileF,3+i,hdri) - flux=single.flux - ivar=single.ivar - loglam=single.loglam - snimg = flux * sqrt(ivar) - ;gwave = where(loglam GT alog10(4000) AND loglam LT alog10(5500)) - rwave = where(loglam GT alog10(5600) AND loglam LT alog10(6900)) - ;iwave = where(loglam GT alog10(6910) AND loglam LT alog10(8500)) - filtsz=25 - ig = where(ivar[rwave] GT 0, nwave) - if (nwave GT filtsz) then $ - sntemp = djs_median(snimg[rwave[ig]], $ - width=filtsz, boundary='reflect') - snr = djs_mean(sntemp) - snvec_r[ct]=snr - idvec[ct]=id_str - cartonvec[ct]=carton - objtypevec[ct]=otype - ct=ct+1 - endfor - endif - splog,'File '+file_name+' was created, target '+strtrim(string(itarget+1),2)+' of '+strtrim(string(n_elements(target_ind)),2)+' targets' - endif - ;stop - endfor - endfor - finalvalues.snr_r=snvec_r - finalvalues.id=idvec - finalvalues.firstcarton=cartonvec - finalvalues.objtype=objtypevec - ;sxaddpar, coadd_val, 'EXTNAME', 'COADD', ' Coadded spectrum' - mwrfits, finalvalues, outfile, /create, /silent - - - splog, 'Successful completion of REFORMAT_SPEC at ' + systime() - if (keyword_set(logfile)) then splog, /close - end diff --git a/templates/README.elg b/templates/README.elg deleted file mode 100644 index 2a8b79f29..000000000 --- a/templates/README.elg +++ /dev/null @@ -1,27 +0,0 @@ - -infile = 'spEigenGal-55740.fits' -outfile = 'spEigenGal-56436.fits' -flux = mrdfits(infile, 0, hdr) -loglam0 = sxpar(hdr,'COEFF0') -loglam = loglam0 + dindgen(sxpar(hdr,'NAXIS1')) * sxpar(hdr,'COEFF1') -new0 = 3.0730d0 -xpad = round((loglam0 - new0) * 1d4) -sz = size(flux,/dimens) -newflux = fltarr(sz[0]+xpad,sz[1]) -xaxis = findgen(sz[0]+xpad) -fitlen = 200 ; pixels to extrapolate with -apvec = (findgen(xpad)/xpad)^2 ; apodization vector -for i=0, sz[1]-1 do begin $ - newflux[xpad:*,i] = flux[*,i] & $ - res = linfit(xaxis[xpad:xpad+fitlen-1], flux[0:fitlen-1,i]) & $ - medval = median(flux[0:fitlen-1,i]) & $ - newflux[0:xpad-1,i] = poly(xaxis[0:xpad-1], res) * apvec + medval * (1-apvec) -newhdr = hdr -sxaddpar, newhdr, 'COEFF0', new0 -mwrfits, newflux, outfile, newhdr, /create - -splot,newflux[*,0]/max(abs(newflux[*,0])),yr=[-1,1] -soplot,newflux[*,1]/max(abs(newflux[*,1])),yr=[-1,1],color='red' -soplot,newflux[*,2]/max(abs(newflux[*,2])),yr=[-1,1],color='green' -soplot,newflux[*,3]/max(abs(newflux[*,3])),yr=[-1,1],color='blue' - diff --git a/templates/bc03_padova1994_chab_z004_ssp.fit.gz b/templates/bc03_padova1994_chab_z004_ssp.fit.gz deleted file mode 100644 index 491582865..000000000 Binary files a/templates/bc03_padova1994_chab_z004_ssp.fit.gz and /dev/null differ diff --git a/templates/bc03_padova1994_chab_z008_ssp.fit.gz b/templates/bc03_padova1994_chab_z008_ssp.fit.gz deleted file mode 100644 index 2d40c764a..000000000 Binary files a/templates/bc03_padova1994_chab_z008_ssp.fit.gz and /dev/null differ diff --git a/templates/bc03_padova1994_chab_z02_ssp.fit.gz b/templates/bc03_padova1994_chab_z02_ssp.fit.gz deleted file mode 100644 index 41169af07..000000000 Binary files a/templates/bc03_padova1994_chab_z02_ssp.fit.gz and /dev/null differ diff --git a/templates/bc03_padova1994_chab_z05_ssp.fit.gz b/templates/bc03_padova1994_chab_z05_ssp.fit.gz deleted file mode 100644 index c84b968e7..000000000 Binary files a/templates/bc03_padova1994_chab_z05_ssp.fit.gz and /dev/null differ diff --git a/templates/feconv_uv_shen b/templates/feconv_uv_shen deleted file mode 100644 index 589fd7400..000000000 --- a/templates/feconv_uv_shen +++ /dev/null @@ -1,3426 +0,0 @@ -# This is a new UV Fe template -# [1000, 2200] use Vestergaard01 [Fe_UVtemplt_A.asc] -# [2200, 3090] use Salvainder06, which extrapolates undernearth the MgII line; -# The Salvainder template has a coarse wavelength sampling than Vestergaard, -# so I interpolate it to the Vestergaard wavelength dispersion -# [3090, 3500] use Tsuzuki06, the wavelength dispersion is similar -# (although slightly larger) to Vestergaard -## log10(wave) flux (erg/s/cm2/A) dispersion=103.6 km/s - 3.03140e+00 0.00000e+00 - 3.03155e+00 0.00000e+00 - 3.03170e+00 0.00000e+00 - 3.03185e+00 0.00000e+00 - 3.03200e+00 0.00000e+00 - 3.03215e+00 0.00000e+00 - 3.03230e+00 0.00000e+00 - 3.03245e+00 0.00000e+00 - 3.03260e+00 0.00000e+00 - 3.03275e+00 0.00000e+00 - 3.03290e+00 0.00000e+00 - 3.03305e+00 0.00000e+00 - 3.03320e+00 0.00000e+00 - 3.03335e+00 0.00000e+00 - 3.03350e+00 0.00000e+00 - 3.03365e+00 0.00000e+00 - 3.03380e+00 0.00000e+00 - 3.03395e+00 0.00000e+00 - 3.03410e+00 0.00000e+00 - 3.03425e+00 0.00000e+00 - 3.03440e+00 0.00000e+00 - 3.03455e+00 0.00000e+00 - 3.03470e+00 0.00000e+00 - 3.03485e+00 0.00000e+00 - 3.03500e+00 0.00000e+00 - 3.03515e+00 0.00000e+00 - 3.03530e+00 0.00000e+00 - 3.03545e+00 0.00000e+00 - 3.03560e+00 0.00000e+00 - 3.03575e+00 0.00000e+00 - 3.03590e+00 0.00000e+00 - 3.03605e+00 0.00000e+00 - 3.03620e+00 0.00000e+00 - 3.03635e+00 0.00000e+00 - 3.03650e+00 0.00000e+00 - 3.03665e+00 0.00000e+00 - 3.03680e+00 0.00000e+00 - 3.03695e+00 0.00000e+00 - 3.03710e+00 0.00000e+00 - 3.03725e+00 0.00000e+00 - 3.03740e+00 0.00000e+00 - 3.03755e+00 0.00000e+00 - 3.03770e+00 0.00000e+00 - 3.03785e+00 0.00000e+00 - 3.03800e+00 0.00000e+00 - 3.03815e+00 0.00000e+00 - 3.03830e+00 0.00000e+00 - 3.03845e+00 0.00000e+00 - 3.03860e+00 0.00000e+00 - 3.03875e+00 0.00000e+00 - 3.03890e+00 0.00000e+00 - 3.03905e+00 0.00000e+00 - 3.03920e+00 0.00000e+00 - 3.03935e+00 0.00000e+00 - 3.03950e+00 0.00000e+00 - 3.03965e+00 0.00000e+00 - 3.03980e+00 0.00000e+00 - 3.03995e+00 0.00000e+00 - 3.04010e+00 0.00000e+00 - 3.04025e+00 0.00000e+00 - 3.04040e+00 0.00000e+00 - 3.04055e+00 0.00000e+00 - 3.04070e+00 0.00000e+00 - 3.04085e+00 0.00000e+00 - 3.04100e+00 0.00000e+00 - 3.04115e+00 0.00000e+00 - 3.04130e+00 0.00000e+00 - 3.04145e+00 0.00000e+00 - 3.04160e+00 0.00000e+00 - 3.04175e+00 0.00000e+00 - 3.04190e+00 0.00000e+00 - 3.04205e+00 0.00000e+00 - 3.04220e+00 0.00000e+00 - 3.04235e+00 0.00000e+00 - 3.04250e+00 0.00000e+00 - 3.04265e+00 0.00000e+00 - 3.04280e+00 0.00000e+00 - 3.04295e+00 0.00000e+00 - 3.04310e+00 0.00000e+00 - 3.04325e+00 0.00000e+00 - 3.04340e+00 0.00000e+00 - 3.04355e+00 0.00000e+00 - 3.04370e+00 0.00000e+00 - 3.04385e+00 0.00000e+00 - 3.04400e+00 0.00000e+00 - 3.04415e+00 0.00000e+00 - 3.04430e+00 0.00000e+00 - 3.04445e+00 0.00000e+00 - 3.04460e+00 0.00000e+00 - 3.04475e+00 0.00000e+00 - 3.04490e+00 0.00000e+00 - 3.04505e+00 0.00000e+00 - 3.04520e+00 0.00000e+00 - 3.04535e+00 0.00000e+00 - 3.04550e+00 0.00000e+00 - 3.04565e+00 0.00000e+00 - 3.04580e+00 0.00000e+00 - 3.04595e+00 0.00000e+00 - 3.04610e+00 0.00000e+00 - 3.04625e+00 0.00000e+00 - 3.04640e+00 0.00000e+00 - 3.04655e+00 0.00000e+00 - 3.04670e+00 0.00000e+00 - 3.04685e+00 0.00000e+00 - 3.04700e+00 0.00000e+00 - 3.04715e+00 0.00000e+00 - 3.04730e+00 0.00000e+00 - 3.04745e+00 0.00000e+00 - 3.04760e+00 0.00000e+00 - 3.04775e+00 0.00000e+00 - 3.04790e+00 0.00000e+00 - 3.04805e+00 0.00000e+00 - 3.04820e+00 0.00000e+00 - 3.04835e+00 0.00000e+00 - 3.04850e+00 0.00000e+00 - 3.04865e+00 0.00000e+00 - 3.04880e+00 0.00000e+00 - 3.04895e+00 0.00000e+00 - 3.04910e+00 0.00000e+00 - 3.04925e+00 0.00000e+00 - 3.04940e+00 0.00000e+00 - 3.04955e+00 0.00000e+00 - 3.04970e+00 0.00000e+00 - 3.04985e+00 0.00000e+00 - 3.05000e+00 0.00000e+00 - 3.05015e+00 0.00000e+00 - 3.05030e+00 0.00000e+00 - 3.05045e+00 0.00000e+00 - 3.05060e+00 0.00000e+00 - 3.05075e+00 0.00000e+00 - 3.05090e+00 0.00000e+00 - 3.05105e+00 0.00000e+00 - 3.05120e+00 0.00000e+00 - 3.05135e+00 0.00000e+00 - 3.05150e+00 0.00000e+00 - 3.05165e+00 0.00000e+00 - 3.05180e+00 0.00000e+00 - 3.05195e+00 0.00000e+00 - 3.05210e+00 0.00000e+00 - 3.05225e+00 0.00000e+00 - 3.05240e+00 0.00000e+00 - 3.05255e+00 0.00000e+00 - 3.05270e+00 0.00000e+00 - 3.05285e+00 0.00000e+00 - 3.05300e+00 0.00000e+00 - 3.05315e+00 0.00000e+00 - 3.05330e+00 0.00000e+00 - 3.05345e+00 0.00000e+00 - 3.05360e+00 0.00000e+00 - 3.05375e+00 0.00000e+00 - 3.05390e+00 0.00000e+00 - 3.05405e+00 0.00000e+00 - 3.05420e+00 0.00000e+00 - 3.05435e+00 0.00000e+00 - 3.05450e+00 0.00000e+00 - 3.05465e+00 0.00000e+00 - 3.05480e+00 0.00000e+00 - 3.05495e+00 0.00000e+00 - 3.05510e+00 0.00000e+00 - 3.05525e+00 0.00000e+00 - 3.05540e+00 0.00000e+00 - 3.05555e+00 0.00000e+00 - 3.05570e+00 0.00000e+00 - 3.05585e+00 0.00000e+00 - 3.05600e+00 0.00000e+00 - 3.05615e+00 0.00000e+00 - 3.05630e+00 0.00000e+00 - 3.05645e+00 0.00000e+00 - 3.05660e+00 0.00000e+00 - 3.05675e+00 0.00000e+00 - 3.05690e+00 0.00000e+00 - 3.05705e+00 0.00000e+00 - 3.05720e+00 0.00000e+00 - 3.05735e+00 0.00000e+00 - 3.05750e+00 0.00000e+00 - 3.05765e+00 0.00000e+00 - 3.05780e+00 0.00000e+00 - 3.05795e+00 0.00000e+00 - 3.05810e+00 0.00000e+00 - 3.05825e+00 0.00000e+00 - 3.05840e+00 0.00000e+00 - 3.05855e+00 0.00000e+00 - 3.05870e+00 0.00000e+00 - 3.05885e+00 0.00000e+00 - 3.05900e+00 0.00000e+00 - 3.05915e+00 0.00000e+00 - 3.05930e+00 0.00000e+00 - 3.05945e+00 0.00000e+00 - 3.05960e+00 0.00000e+00 - 3.05975e+00 0.00000e+00 - 3.05990e+00 0.00000e+00 - 3.06005e+00 0.00000e+00 - 3.06020e+00 0.00000e+00 - 3.06035e+00 0.00000e+00 - 3.06050e+00 0.00000e+00 - 3.06065e+00 0.00000e+00 - 3.06080e+00 0.00000e+00 - 3.06095e+00 0.00000e+00 - 3.06110e+00 0.00000e+00 - 3.06125e+00 0.00000e+00 - 3.06140e+00 0.00000e+00 - 3.06155e+00 0.00000e+00 - 3.06170e+00 0.00000e+00 - 3.06185e+00 0.00000e+00 - 3.06200e+00 0.00000e+00 - 3.06215e+00 0.00000e+00 - 3.06230e+00 0.00000e+00 - 3.06245e+00 0.00000e+00 - 3.06260e+00 0.00000e+00 - 3.06275e+00 0.00000e+00 - 3.06290e+00 0.00000e+00 - 3.06305e+00 0.00000e+00 - 3.06320e+00 0.00000e+00 - 3.06335e+00 0.00000e+00 - 3.06350e+00 0.00000e+00 - 3.06365e+00 0.00000e+00 - 3.06380e+00 0.00000e+00 - 3.06395e+00 0.00000e+00 - 3.06410e+00 0.00000e+00 - 3.06425e+00 0.00000e+00 - 3.06440e+00 0.00000e+00 - 3.06455e+00 0.00000e+00 - 3.06470e+00 0.00000e+00 - 3.06485e+00 0.00000e+00 - 3.06500e+00 0.00000e+00 - 3.06515e+00 0.00000e+00 - 3.06530e+00 0.00000e+00 - 3.06545e+00 0.00000e+00 - 3.06560e+00 0.00000e+00 - 3.06575e+00 0.00000e+00 - 3.06590e+00 0.00000e+00 - 3.06605e+00 0.00000e+00 - 3.06620e+00 0.00000e+00 - 3.06635e+00 0.00000e+00 - 3.06650e+00 0.00000e+00 - 3.06665e+00 0.00000e+00 - 3.06680e+00 0.00000e+00 - 3.06695e+00 0.00000e+00 - 3.06710e+00 0.00000e+00 - 3.06725e+00 0.00000e+00 - 3.06740e+00 0.00000e+00 - 3.06755e+00 0.00000e+00 - 3.06770e+00 0.00000e+00 - 3.06785e+00 0.00000e+00 - 3.06800e+00 0.00000e+00 - 3.06815e+00 0.00000e+00 - 3.06830e+00 0.00000e+00 - 3.06845e+00 0.00000e+00 - 3.06860e+00 0.00000e+00 - 3.06875e+00 0.00000e+00 - 3.06890e+00 0.00000e+00 - 3.06905e+00 0.00000e+00 - 3.06920e+00 0.00000e+00 - 3.06935e+00 0.00000e+00 - 3.06950e+00 0.00000e+00 - 3.06965e+00 0.00000e+00 - 3.06980e+00 0.00000e+00 - 3.06995e+00 0.00000e+00 - 3.07010e+00 0.00000e+00 - 3.07025e+00 0.00000e+00 - 3.07040e+00 0.00000e+00 - 3.07055e+00 0.00000e+00 - 3.07070e+00 0.00000e+00 - 3.07085e+00 0.00000e+00 - 3.07100e+00 0.00000e+00 - 3.07115e+00 0.00000e+00 - 3.07130e+00 0.00000e+00 - 3.07145e+00 0.00000e+00 - 3.07160e+00 0.00000e+00 - 3.07175e+00 0.00000e+00 - 3.07190e+00 0.00000e+00 - 3.07205e+00 0.00000e+00 - 3.07220e+00 0.00000e+00 - 3.07235e+00 0.00000e+00 - 3.07250e+00 0.00000e+00 - 3.07265e+00 0.00000e+00 - 3.07280e+00 0.00000e+00 - 3.07295e+00 0.00000e+00 - 3.07310e+00 0.00000e+00 - 3.07325e+00 0.00000e+00 - 3.07340e+00 0.00000e+00 - 3.07355e+00 0.00000e+00 - 3.07370e+00 0.00000e+00 - 3.07385e+00 0.00000e+00 - 3.07400e+00 0.00000e+00 - 3.07415e+00 0.00000e+00 - 3.07430e+00 0.00000e+00 - 3.07445e+00 0.00000e+00 - 3.07460e+00 0.00000e+00 - 3.07475e+00 0.00000e+00 - 3.07490e+00 0.00000e+00 - 3.07505e+00 0.00000e+00 - 3.07520e+00 0.00000e+00 - 3.07535e+00 0.00000e+00 - 3.07550e+00 0.00000e+00 - 3.07565e+00 0.00000e+00 - 3.07580e+00 0.00000e+00 - 3.07595e+00 0.00000e+00 - 3.07610e+00 0.00000e+00 - 3.07625e+00 0.00000e+00 - 3.07640e+00 0.00000e+00 - 3.07655e+00 0.00000e+00 - 3.07670e+00 0.00000e+00 - 3.07685e+00 0.00000e+00 - 3.07700e+00 0.00000e+00 - 3.07715e+00 0.00000e+00 - 3.07730e+00 0.00000e+00 - 3.07745e+00 0.00000e+00 - 3.07760e+00 0.00000e+00 - 3.07775e+00 0.00000e+00 - 3.07790e+00 0.00000e+00 - 3.07805e+00 0.00000e+00 - 3.07820e+00 0.00000e+00 - 3.07835e+00 0.00000e+00 - 3.07850e+00 0.00000e+00 - 3.07865e+00 0.00000e+00 - 3.07880e+00 0.00000e+00 - 3.07895e+00 0.00000e+00 - 3.07910e+00 0.00000e+00 - 3.07925e+00 0.00000e+00 - 3.07940e+00 0.00000e+00 - 3.07955e+00 0.00000e+00 - 3.07970e+00 0.00000e+00 - 3.07985e+00 0.00000e+00 - 3.08000e+00 0.00000e+00 - 3.08015e+00 0.00000e+00 - 3.08030e+00 0.00000e+00 - 3.08045e+00 0.00000e+00 - 3.08060e+00 0.00000e+00 - 3.08075e+00 0.00000e+00 - 3.08090e+00 0.00000e+00 - 3.08105e+00 0.00000e+00 - 3.08120e+00 0.00000e+00 - 3.08135e+00 0.00000e+00 - 3.08150e+00 0.00000e+00 - 3.08165e+00 0.00000e+00 - 3.08180e+00 0.00000e+00 - 3.08195e+00 0.00000e+00 - 3.08210e+00 0.00000e+00 - 3.08225e+00 0.00000e+00 - 3.08240e+00 0.00000e+00 - 3.08255e+00 0.00000e+00 - 3.08270e+00 0.00000e+00 - 3.08285e+00 0.00000e+00 - 3.08300e+00 0.00000e+00 - 3.08315e+00 0.00000e+00 - 3.08330e+00 0.00000e+00 - 3.08345e+00 0.00000e+00 - 3.08360e+00 0.00000e+00 - 3.08375e+00 0.00000e+00 - 3.08390e+00 0.00000e+00 - 3.08405e+00 0.00000e+00 - 3.08420e+00 0.00000e+00 - 3.08435e+00 0.00000e+00 - 3.08450e+00 0.00000e+00 - 3.08465e+00 0.00000e+00 - 3.08480e+00 0.00000e+00 - 3.08495e+00 0.00000e+00 - 3.08510e+00 0.00000e+00 - 3.08525e+00 0.00000e+00 - 3.08540e+00 0.00000e+00 - 3.08555e+00 0.00000e+00 - 3.08570e+00 0.00000e+00 - 3.08585e+00 0.00000e+00 - 3.08600e+00 0.00000e+00 - 3.08615e+00 0.00000e+00 - 3.08630e+00 0.00000e+00 - 3.08645e+00 0.00000e+00 - 3.08660e+00 0.00000e+00 - 3.08675e+00 0.00000e+00 - 3.08690e+00 0.00000e+00 - 3.08705e+00 0.00000e+00 - 3.08720e+00 0.00000e+00 - 3.08735e+00 0.00000e+00 - 3.08750e+00 0.00000e+00 - 3.08765e+00 0.00000e+00 - 3.08780e+00 0.00000e+00 - 3.08795e+00 0.00000e+00 - 3.08810e+00 0.00000e+00 - 3.08825e+00 0.00000e+00 - 3.08840e+00 0.00000e+00 - 3.08855e+00 0.00000e+00 - 3.08870e+00 0.00000e+00 - 3.08885e+00 0.00000e+00 - 3.08900e+00 0.00000e+00 - 3.08915e+00 0.00000e+00 - 3.08930e+00 0.00000e+00 - 3.08945e+00 0.00000e+00 - 3.08960e+00 0.00000e+00 - 3.08975e+00 0.00000e+00 - 3.08990e+00 0.00000e+00 - 3.09005e+00 0.00000e+00 - 3.09020e+00 0.00000e+00 - 3.09035e+00 0.00000e+00 - 3.09050e+00 0.00000e+00 - 3.09065e+00 0.00000e+00 - 3.09080e+00 0.00000e+00 - 3.09095e+00 0.00000e+00 - 3.09110e+00 0.00000e+00 - 3.09125e+00 0.00000e+00 - 3.09140e+00 0.00000e+00 - 3.09155e+00 0.00000e+00 - 3.09170e+00 0.00000e+00 - 3.09185e+00 0.00000e+00 - 3.09200e+00 0.00000e+00 - 3.09215e+00 0.00000e+00 - 3.09230e+00 0.00000e+00 - 3.09245e+00 0.00000e+00 - 3.09260e+00 0.00000e+00 - 3.09275e+00 0.00000e+00 - 3.09290e+00 0.00000e+00 - 3.09305e+00 0.00000e+00 - 3.09320e+00 0.00000e+00 - 3.09335e+00 0.00000e+00 - 3.09350e+00 0.00000e+00 - 3.09365e+00 0.00000e+00 - 3.09380e+00 0.00000e+00 - 3.09395e+00 0.00000e+00 - 3.09410e+00 0.00000e+00 - 3.09425e+00 0.00000e+00 - 3.09440e+00 0.00000e+00 - 3.09455e+00 0.00000e+00 - 3.09470e+00 0.00000e+00 - 3.09485e+00 0.00000e+00 - 3.09500e+00 0.00000e+00 - 3.09515e+00 0.00000e+00 - 3.09530e+00 0.00000e+00 - 3.09545e+00 0.00000e+00 - 3.09560e+00 0.00000e+00 - 3.09575e+00 0.00000e+00 - 3.09590e+00 0.00000e+00 - 3.09605e+00 0.00000e+00 - 3.09620e+00 0.00000e+00 - 3.09635e+00 0.00000e+00 - 3.09650e+00 0.00000e+00 - 3.09665e+00 0.00000e+00 - 3.09680e+00 0.00000e+00 - 3.09695e+00 0.00000e+00 - 3.09710e+00 5.58372e-16 - 3.09725e+00 1.99309e-15 - 3.09740e+00 1.06707e-15 - 3.09755e+00 1.04100e-15 - 3.09770e+00 1.60694e-16 - 3.09785e+00 2.36544e-15 - 3.09800e+00 2.77270e-15 - 3.09815e+00 3.72062e-15 - 3.09830e+00 6.02322e-15 - 3.09845e+00 6.76999e-15 - 3.09860e+00 4.96414e-15 - 3.09875e+00 4.30998e-15 - 3.09890e+00 0.00000e+00 - 3.09905e+00 0.00000e+00 - 3.09920e+00 0.00000e+00 - 3.09935e+00 0.00000e+00 - 3.09950e+00 0.00000e+00 - 3.09965e+00 0.00000e+00 - 3.09980e+00 0.00000e+00 - 3.09995e+00 0.00000e+00 - 3.10010e+00 0.00000e+00 - 3.10025e+00 0.00000e+00 - 3.10040e+00 0.00000e+00 - 3.10055e+00 0.00000e+00 - 3.10070e+00 0.00000e+00 - 3.10085e+00 0.00000e+00 - 3.10100e+00 0.00000e+00 - 3.10115e+00 0.00000e+00 - 3.10130e+00 0.00000e+00 - 3.10145e+00 0.00000e+00 - 3.10160e+00 0.00000e+00 - 3.10175e+00 0.00000e+00 - 3.10190e+00 0.00000e+00 - 3.10205e+00 0.00000e+00 - 3.10220e+00 0.00000e+00 - 3.10235e+00 0.00000e+00 - 3.10250e+00 0.00000e+00 - 3.10265e+00 0.00000e+00 - 3.10280e+00 0.00000e+00 - 3.10295e+00 5.71611e-16 - 3.10310e+00 2.08250e-15 - 3.10325e+00 3.36317e-15 - 3.10340e+00 2.79468e-15 - 3.10355e+00 2.27290e-15 - 3.10370e+00 7.85197e-17 - 3.10385e+00 5.60702e-18 - 3.10400e+00 2.29109e-15 - 3.10415e+00 2.62249e-15 - 3.10430e+00 2.82090e-15 - 3.10445e+00 3.44552e-15 - 3.10460e+00 3.69595e-15 - 3.10475e+00 4.20493e-15 - 3.10490e+00 4.82810e-15 - 3.10505e+00 3.66104e-15 - 3.10520e+00 4.68919e-15 - 3.10535e+00 5.99280e-15 - 3.10550e+00 6.24943e-15 - 3.10565e+00 3.27648e-15 - 3.10580e+00 6.54997e-16 - 3.10595e+00 0.00000e+00 - 3.10610e+00 0.00000e+00 - 3.10625e+00 0.00000e+00 - 3.10640e+00 0.00000e+00 - 3.10655e+00 0.00000e+00 - 3.10670e+00 0.00000e+00 - 3.10685e+00 0.00000e+00 - 3.10700e+00 0.00000e+00 - 3.10715e+00 0.00000e+00 - 3.10730e+00 0.00000e+00 - 3.10745e+00 0.00000e+00 - 3.10760e+00 0.00000e+00 - 3.10775e+00 4.11022e-16 - 3.10790e+00 1.11977e-15 - 3.10805e+00 1.34049e-15 - 3.10820e+00 2.24700e-15 - 3.10835e+00 3.23383e-15 - 3.10850e+00 2.39424e-15 - 3.10865e+00 1.84195e-15 - 3.10880e+00 9.93534e-16 - 3.10895e+00 1.47563e-15 - 3.10910e+00 2.96344e-15 - 3.10925e+00 3.54854e-15 - 3.10940e+00 4.12558e-15 - 3.10955e+00 3.76067e-15 - 3.10970e+00 4.46471e-15 - 3.10985e+00 3.37997e-15 - 3.11000e+00 2.39836e-15 - 3.11015e+00 1.85936e-15 - 3.11030e+00 1.17760e-15 - 3.11045e+00 1.70788e-15 - 3.11060e+00 7.53774e-16 - 3.11075e+00 2.64109e-15 - 3.11090e+00 2.46937e-15 - 3.11105e+00 1.13950e-15 - 3.11120e+00 1.28214e-16 - 3.11135e+00 0.00000e+00 - 3.11150e+00 0.00000e+00 - 3.11165e+00 0.00000e+00 - 3.11180e+00 0.00000e+00 - 3.11195e+00 0.00000e+00 - 3.11210e+00 0.00000e+00 - 3.11225e+00 0.00000e+00 - 3.11240e+00 0.00000e+00 - 3.11255e+00 0.00000e+00 - 3.11270e+00 0.00000e+00 - 3.11285e+00 0.00000e+00 - 3.11300e+00 0.00000e+00 - 3.11315e+00 0.00000e+00 - 3.11330e+00 0.00000e+00 - 3.11345e+00 0.00000e+00 - 3.11360e+00 0.00000e+00 - 3.11375e+00 0.00000e+00 - 3.11390e+00 0.00000e+00 - 3.11405e+00 0.00000e+00 - 3.11420e+00 0.00000e+00 - 3.11435e+00 0.00000e+00 - 3.11450e+00 0.00000e+00 - 3.11465e+00 0.00000e+00 - 3.11480e+00 0.00000e+00 - 3.11495e+00 0.00000e+00 - 3.11510e+00 0.00000e+00 - 3.11525e+00 0.00000e+00 - 3.11540e+00 0.00000e+00 - 3.11555e+00 0.00000e+00 - 3.11570e+00 0.00000e+00 - 3.11585e+00 0.00000e+00 - 3.11600e+00 0.00000e+00 - 3.11615e+00 0.00000e+00 - 3.11630e+00 0.00000e+00 - 3.11645e+00 0.00000e+00 - 3.11660e+00 0.00000e+00 - 3.11675e+00 0.00000e+00 - 3.11690e+00 0.00000e+00 - 3.11705e+00 0.00000e+00 - 3.11720e+00 0.00000e+00 - 3.11735e+00 0.00000e+00 - 3.11750e+00 0.00000e+00 - 3.11765e+00 0.00000e+00 - 3.11780e+00 0.00000e+00 - 3.11795e+00 0.00000e+00 - 3.11810e+00 0.00000e+00 - 3.11825e+00 0.00000e+00 - 3.11840e+00 0.00000e+00 - 3.11855e+00 0.00000e+00 - 3.11870e+00 0.00000e+00 - 3.11885e+00 0.00000e+00 - 3.11900e+00 0.00000e+00 - 3.11915e+00 0.00000e+00 - 3.11930e+00 0.00000e+00 - 3.11945e+00 0.00000e+00 - 3.11960e+00 0.00000e+00 - 3.11975e+00 0.00000e+00 - 3.11990e+00 0.00000e+00 - 3.12005e+00 0.00000e+00 - 3.12020e+00 0.00000e+00 - 3.12035e+00 0.00000e+00 - 3.12050e+00 0.00000e+00 - 3.12065e+00 0.00000e+00 - 3.12080e+00 0.00000e+00 - 3.12095e+00 0.00000e+00 - 3.12110e+00 0.00000e+00 - 3.12125e+00 0.00000e+00 - 3.12140e+00 0.00000e+00 - 3.12155e+00 0.00000e+00 - 3.12170e+00 0.00000e+00 - 3.12185e+00 0.00000e+00 - 3.12200e+00 0.00000e+00 - 3.12215e+00 0.00000e+00 - 3.12230e+00 0.00000e+00 - 3.12245e+00 0.00000e+00 - 3.12260e+00 0.00000e+00 - 3.12275e+00 0.00000e+00 - 3.12290e+00 0.00000e+00 - 3.12305e+00 0.00000e+00 - 3.12320e+00 0.00000e+00 - 3.12335e+00 0.00000e+00 - 3.12350e+00 0.00000e+00 - 3.12365e+00 0.00000e+00 - 3.12380e+00 0.00000e+00 - 3.12395e+00 0.00000e+00 - 3.12410e+00 0.00000e+00 - 3.12425e+00 0.00000e+00 - 3.12440e+00 0.00000e+00 - 3.12455e+00 0.00000e+00 - 3.12470e+00 0.00000e+00 - 3.12485e+00 0.00000e+00 - 3.12500e+00 0.00000e+00 - 3.12515e+00 0.00000e+00 - 3.12530e+00 0.00000e+00 - 3.12545e+00 0.00000e+00 - 3.12560e+00 0.00000e+00 - 3.12575e+00 0.00000e+00 - 3.12590e+00 0.00000e+00 - 3.12605e+00 0.00000e+00 - 3.12620e+00 0.00000e+00 - 3.12635e+00 0.00000e+00 - 3.12650e+00 0.00000e+00 - 3.12665e+00 0.00000e+00 - 3.12680e+00 0.00000e+00 - 3.12695e+00 0.00000e+00 - 3.12710e+00 0.00000e+00 - 3.12725e+00 0.00000e+00 - 3.12740e+00 0.00000e+00 - 3.12755e+00 0.00000e+00 - 3.12770e+00 0.00000e+00 - 3.12785e+00 0.00000e+00 - 3.12800e+00 0.00000e+00 - 3.12815e+00 0.00000e+00 - 3.12830e+00 0.00000e+00 - 3.12845e+00 0.00000e+00 - 3.12860e+00 0.00000e+00 - 3.12875e+00 0.00000e+00 - 3.12890e+00 0.00000e+00 - 3.12905e+00 0.00000e+00 - 3.12920e+00 0.00000e+00 - 3.12935e+00 0.00000e+00 - 3.12950e+00 0.00000e+00 - 3.12965e+00 0.00000e+00 - 3.12980e+00 0.00000e+00 - 3.12995e+00 0.00000e+00 - 3.13010e+00 0.00000e+00 - 3.13025e+00 0.00000e+00 - 3.13040e+00 0.00000e+00 - 3.13055e+00 0.00000e+00 - 3.13070e+00 0.00000e+00 - 3.13085e+00 0.00000e+00 - 3.13100e+00 0.00000e+00 - 3.13115e+00 0.00000e+00 - 3.13130e+00 0.00000e+00 - 3.13145e+00 0.00000e+00 - 3.13160e+00 8.71126e-16 - 3.13175e+00 1.52566e-15 - 3.13190e+00 2.14720e-15 - 3.13205e+00 3.12396e-15 - 3.13220e+00 3.15771e-15 - 3.13235e+00 2.60450e-15 - 3.13250e+00 3.01140e-15 - 3.13265e+00 3.11838e-15 - 3.13280e+00 3.45096e-15 - 3.13295e+00 3.93911e-15 - 3.13310e+00 5.15440e-15 - 3.13325e+00 6.76224e-15 - 3.13340e+00 6.34890e-15 - 3.13355e+00 4.73104e-15 - 3.13370e+00 4.67807e-15 - 3.13385e+00 5.20744e-15 - 3.13400e+00 4.98392e-15 - 3.13415e+00 5.52921e-15 - 3.13430e+00 5.33596e-15 - 3.13445e+00 5.73973e-15 - 3.13460e+00 4.88994e-15 - 3.13475e+00 3.50042e-15 - 3.13490e+00 3.91320e-15 - 3.13505e+00 4.41735e-15 - 3.13520e+00 4.18883e-15 - 3.13535e+00 3.14767e-15 - 3.13550e+00 2.43305e-15 - 3.13565e+00 3.01984e-15 - 3.13580e+00 1.76431e-15 - 3.13595e+00 1.65385e-15 - 3.13610e+00 1.78182e-15 - 3.13625e+00 4.55002e-15 - 3.13640e+00 2.15856e-15 - 3.13655e+00 7.30377e-16 - 3.13670e+00 2.40993e-15 - 3.13685e+00 2.79867e-15 - 3.13700e+00 1.35379e-15 - 3.13715e+00 1.34847e-15 - 3.13730e+00 1.43606e-16 - 3.13745e+00 1.83074e-15 - 3.13760e+00 1.53225e-15 - 3.13775e+00 6.23143e-16 - 3.13790e+00 4.10060e-16 - 3.13805e+00 2.36323e-15 - 3.13820e+00 3.01895e-15 - 3.13835e+00 1.96480e-15 - 3.13850e+00 3.76305e-16 - 3.13865e+00 5.87297e-16 - 3.13880e+00 1.95635e-16 - 3.13895e+00 0.00000e+00 - 3.13910e+00 0.00000e+00 - 3.13925e+00 0.00000e+00 - 3.13940e+00 2.00191e-15 - 3.13955e+00 3.55556e-15 - 3.13970e+00 1.26998e-15 - 3.13985e+00 3.16882e-16 - 3.14000e+00 3.97925e-16 - 3.14015e+00 2.45813e-16 - 3.14030e+00 2.97480e-15 - 3.14045e+00 2.69837e-15 - 3.14060e+00 9.15351e-16 - 3.14075e+00 2.47449e-15 - 3.14090e+00 3.35618e-15 - 3.14105e+00 4.07217e-15 - 3.14120e+00 3.86003e-15 - 3.14135e+00 1.50262e-15 - 3.14150e+00 9.96977e-17 - 3.14165e+00 0.00000e+00 - 3.14180e+00 8.30823e-16 - 3.14195e+00 1.27412e-15 - 3.14210e+00 6.25265e-16 - 3.14225e+00 3.61812e-16 - 3.14240e+00 2.92424e-16 - 3.14255e+00 1.19192e-15 - 3.14270e+00 1.63713e-15 - 3.14285e+00 1.72137e-15 - 3.14300e+00 1.15368e-15 - 3.14315e+00 0.00000e+00 - 3.14330e+00 0.00000e+00 - 3.14345e+00 0.00000e+00 - 3.14360e+00 0.00000e+00 - 3.14375e+00 0.00000e+00 - 3.14390e+00 0.00000e+00 - 3.14405e+00 0.00000e+00 - 3.14420e+00 0.00000e+00 - 3.14435e+00 4.16019e-16 - 3.14450e+00 6.70789e-16 - 3.14465e+00 2.23541e-15 - 3.14480e+00 2.16258e-15 - 3.14495e+00 1.24146e-15 - 3.14510e+00 1.34108e-15 - 3.14525e+00 0.00000e+00 - 3.14540e+00 0.00000e+00 - 3.14555e+00 0.00000e+00 - 3.14570e+00 0.00000e+00 - 3.14585e+00 0.00000e+00 - 3.14600e+00 0.00000e+00 - 3.14615e+00 0.00000e+00 - 3.14630e+00 0.00000e+00 - 3.14645e+00 0.00000e+00 - 3.14660e+00 0.00000e+00 - 3.14675e+00 0.00000e+00 - 3.14690e+00 0.00000e+00 - 3.14705e+00 0.00000e+00 - 3.14720e+00 0.00000e+00 - 3.14735e+00 0.00000e+00 - 3.14750e+00 0.00000e+00 - 3.14765e+00 0.00000e+00 - 3.14780e+00 0.00000e+00 - 3.14795e+00 0.00000e+00 - 3.14810e+00 0.00000e+00 - 3.14825e+00 0.00000e+00 - 3.14840e+00 0.00000e+00 - 3.14855e+00 0.00000e+00 - 3.14870e+00 0.00000e+00 - 3.14885e+00 0.00000e+00 - 3.14900e+00 0.00000e+00 - 3.14915e+00 0.00000e+00 - 3.14930e+00 0.00000e+00 - 3.14945e+00 0.00000e+00 - 3.14960e+00 0.00000e+00 - 3.14975e+00 0.00000e+00 - 3.14990e+00 0.00000e+00 - 3.15005e+00 0.00000e+00 - 3.15020e+00 0.00000e+00 - 3.15035e+00 0.00000e+00 - 3.15050e+00 0.00000e+00 - 3.15065e+00 0.00000e+00 - 3.15080e+00 0.00000e+00 - 3.15095e+00 0.00000e+00 - 3.15110e+00 0.00000e+00 - 3.15125e+00 1.03468e-15 - 3.15140e+00 6.38805e-16 - 3.15155e+00 1.95994e-15 - 3.15170e+00 1.86710e-15 - 3.15185e+00 2.23404e-15 - 3.15200e+00 2.67321e-15 - 3.15215e+00 3.36049e-15 - 3.15230e+00 2.91211e-15 - 3.15245e+00 5.81199e-15 - 3.15260e+00 4.92843e-15 - 3.15275e+00 2.20273e-15 - 3.15290e+00 3.08276e-15 - 3.15305e+00 3.36948e-15 - 3.15320e+00 3.52559e-15 - 3.15335e+00 4.59348e-15 - 3.15350e+00 4.13290e-15 - 3.15365e+00 3.94441e-15 - 3.15380e+00 4.69643e-15 - 3.15395e+00 5.69814e-15 - 3.15410e+00 4.54698e-15 - 3.15425e+00 3.87937e-15 - 3.15440e+00 3.13493e-15 - 3.15455e+00 4.10936e-15 - 3.15470e+00 2.64748e-15 - 3.15485e+00 4.75476e-15 - 3.15500e+00 5.04312e-15 - 3.15515e+00 4.25556e-15 - 3.15530e+00 5.82699e-15 - 3.15545e+00 6.70981e-15 - 3.15560e+00 7.68258e-15 - 3.15575e+00 5.85779e-15 - 3.15590e+00 6.29435e-15 - 3.15605e+00 6.03602e-15 - 3.15620e+00 4.09719e-15 - 3.15635e+00 4.73063e-15 - 3.15650e+00 5.57684e-15 - 3.15665e+00 6.62558e-15 - 3.15680e+00 5.18783e-15 - 3.15695e+00 3.21509e-15 - 3.15710e+00 4.25017e-15 - 3.15725e+00 3.49455e-15 - 3.15740e+00 2.65679e-15 - 3.15755e+00 4.47504e-15 - 3.15770e+00 5.66079e-15 - 3.15785e+00 7.46600e-15 - 3.15800e+00 3.95012e-15 - 3.15815e+00 4.18637e-15 - 3.15830e+00 6.86152e-15 - 3.15845e+00 5.23482e-15 - 3.15860e+00 5.25220e-15 - 3.15875e+00 5.05024e-15 - 3.15890e+00 4.75158e-15 - 3.15905e+00 4.85471e-15 - 3.15920e+00 4.10076e-15 - 3.15935e+00 4.89295e-15 - 3.15950e+00 6.50075e-15 - 3.15965e+00 6.02511e-15 - 3.15980e+00 5.63460e-15 - 3.15995e+00 5.99632e-15 - 3.16010e+00 5.58869e-15 - 3.16025e+00 5.05957e-15 - 3.16040e+00 5.58386e-15 - 3.16055e+00 6.26710e-15 - 3.16070e+00 5.31032e-15 - 3.16085e+00 4.87959e-15 - 3.16100e+00 4.90780e-15 - 3.16115e+00 5.15417e-15 - 3.16130e+00 5.38172e-15 - 3.16145e+00 4.87395e-15 - 3.16160e+00 4.91210e-15 - 3.16175e+00 6.20467e-15 - 3.16190e+00 5.99565e-15 - 3.16205e+00 5.52028e-15 - 3.16220e+00 7.31473e-15 - 3.16235e+00 5.86392e-15 - 3.16250e+00 5.12261e-15 - 3.16265e+00 5.15887e-15 - 3.16280e+00 5.08985e-15 - 3.16295e+00 3.93365e-15 - 3.16310e+00 3.78457e-15 - 3.16325e+00 4.29803e-15 - 3.16340e+00 4.18625e-15 - 3.16355e+00 4.78264e-15 - 3.16370e+00 5.29062e-15 - 3.16385e+00 4.69664e-15 - 3.16400e+00 3.70821e-15 - 3.16415e+00 3.16359e-15 - 3.16430e+00 3.72310e-15 - 3.16445e+00 5.16599e-15 - 3.16460e+00 4.18741e-15 - 3.16475e+00 2.87134e-15 - 3.16490e+00 3.36596e-15 - 3.16505e+00 4.71507e-15 - 3.16520e+00 4.16196e-15 - 3.16535e+00 3.89680e-15 - 3.16550e+00 3.66618e-15 - 3.16565e+00 1.97609e-15 - 3.16580e+00 3.10281e-15 - 3.16595e+00 4.00671e-15 - 3.16610e+00 4.40707e-15 - 3.16625e+00 4.62562e-15 - 3.16640e+00 3.92900e-15 - 3.16655e+00 3.10470e-15 - 3.16670e+00 3.35484e-15 - 3.16685e+00 3.49895e-15 - 3.16700e+00 3.38252e-15 - 3.16715e+00 4.06959e-15 - 3.16730e+00 3.87187e-15 - 3.16745e+00 2.49928e-15 - 3.16760e+00 2.58369e-15 - 3.16775e+00 3.01453e-15 - 3.16790e+00 3.89064e-15 - 3.16805e+00 5.21422e-15 - 3.16820e+00 5.50647e-15 - 3.16835e+00 4.32808e-15 - 3.16850e+00 6.53307e-15 - 3.16865e+00 7.22165e-15 - 3.16880e+00 4.10403e-15 - 3.16895e+00 2.91918e-15 - 3.16910e+00 4.70344e-15 - 3.16925e+00 6.17809e-15 - 3.16940e+00 6.02121e-15 - 3.16955e+00 6.41893e-15 - 3.16970e+00 6.68253e-15 - 3.16985e+00 7.50035e-15 - 3.17000e+00 6.90577e-15 - 3.17015e+00 6.87767e-15 - 3.17030e+00 6.96811e-15 - 3.17045e+00 6.85986e-15 - 3.17060e+00 7.38948e-15 - 3.17075e+00 6.24520e-15 - 3.17090e+00 6.68720e-15 - 3.17105e+00 7.77225e-15 - 3.17120e+00 4.97645e-15 - 3.17135e+00 7.89794e-15 - 3.17150e+00 6.04570e-15 - 3.17165e+00 5.67253e-15 - 3.17180e+00 6.22472e-15 - 3.17195e+00 3.83197e-15 - 3.17210e+00 3.58242e-15 - 3.17225e+00 2.88935e-15 - 3.17240e+00 2.26054e-15 - 3.17255e+00 2.28958e-15 - 3.17270e+00 2.17657e-15 - 3.17285e+00 2.12015e-15 - 3.17300e+00 1.06952e-15 - 3.17315e+00 2.45107e-15 - 3.17330e+00 3.65029e-15 - 3.17345e+00 3.52162e-15 - 3.17360e+00 3.78065e-15 - 3.17375e+00 5.10351e-15 - 3.17390e+00 5.21092e-15 - 3.17405e+00 6.85980e-15 - 3.17420e+00 7.44574e-15 - 3.17435e+00 7.29312e-15 - 3.17450e+00 8.40248e-15 - 3.17465e+00 8.13161e-15 - 3.17480e+00 7.62617e-15 - 3.17495e+00 6.74900e-15 - 3.17510e+00 5.84120e-15 - 3.17525e+00 6.23092e-15 - 3.17540e+00 6.48259e-15 - 3.17555e+00 7.26509e-15 - 3.17570e+00 7.64686e-15 - 3.17585e+00 8.19678e-15 - 3.17600e+00 7.47115e-15 - 3.17615e+00 6.72187e-15 - 3.17630e+00 7.45944e-15 - 3.17645e+00 6.50648e-15 - 3.17660e+00 6.51847e-15 - 3.17675e+00 6.78517e-15 - 3.17690e+00 6.60238e-15 - 3.17705e+00 7.06176e-15 - 3.17720e+00 5.39950e-15 - 3.17735e+00 4.80305e-15 - 3.17750e+00 4.70999e-15 - 3.17765e+00 4.36756e-15 - 3.17780e+00 3.27337e-15 - 3.17795e+00 4.64300e-15 - 3.17810e+00 3.95310e-15 - 3.17825e+00 3.16882e-15 - 3.17840e+00 3.01785e-15 - 3.17855e+00 4.03629e-15 - 3.17870e+00 4.39120e-15 - 3.17885e+00 4.49656e-15 - 3.17900e+00 3.33298e-15 - 3.17915e+00 4.17559e-15 - 3.17930e+00 5.70726e-15 - 3.17945e+00 5.50145e-15 - 3.17960e+00 7.83180e-15 - 3.17975e+00 7.60031e-15 - 3.17990e+00 1.08614e-14 - 3.18005e+00 8.71209e-15 - 3.18020e+00 1.07533e-14 - 3.18035e+00 7.85470e-15 - 3.18050e+00 7.68562e-15 - 3.18065e+00 1.07697e-14 - 3.18080e+00 9.00904e-15 - 3.18095e+00 9.31803e-15 - 3.18110e+00 9.27986e-15 - 3.18125e+00 1.11480e-14 - 3.18140e+00 1.30833e-14 - 3.18155e+00 8.20151e-15 - 3.18170e+00 7.41455e-15 - 3.18185e+00 8.30894e-15 - 3.18200e+00 6.20707e-15 - 3.18215e+00 3.07289e-15 - 3.18230e+00 2.31599e-15 - 3.18245e+00 3.49768e-15 - 3.18260e+00 6.58650e-16 - 3.18275e+00 0.00000e+00 - 3.18290e+00 1.19253e-15 - 3.18305e+00 5.58149e-16 - 3.18320e+00 6.49105e-16 - 3.18335e+00 0.00000e+00 - 3.18350e+00 0.00000e+00 - 3.18365e+00 0.00000e+00 - 3.18380e+00 0.00000e+00 - 3.18395e+00 0.00000e+00 - 3.18410e+00 0.00000e+00 - 3.18425e+00 0.00000e+00 - 3.18440e+00 0.00000e+00 - 3.18455e+00 0.00000e+00 - 3.18470e+00 0.00000e+00 - 3.18485e+00 0.00000e+00 - 3.18500e+00 0.00000e+00 - 3.18515e+00 0.00000e+00 - 3.18530e+00 0.00000e+00 - 3.18545e+00 0.00000e+00 - 3.18560e+00 0.00000e+00 - 3.18575e+00 0.00000e+00 - 3.18590e+00 0.00000e+00 - 3.18605e+00 0.00000e+00 - 3.18620e+00 0.00000e+00 - 3.18635e+00 0.00000e+00 - 3.18650e+00 0.00000e+00 - 3.18665e+00 0.00000e+00 - 3.18680e+00 0.00000e+00 - 3.18695e+00 0.00000e+00 - 3.18710e+00 0.00000e+00 - 3.18725e+00 0.00000e+00 - 3.18740e+00 0.00000e+00 - 3.18755e+00 0.00000e+00 - 3.18770e+00 0.00000e+00 - 3.18785e+00 0.00000e+00 - 3.18800e+00 0.00000e+00 - 3.18815e+00 0.00000e+00 - 3.18830e+00 0.00000e+00 - 3.18845e+00 0.00000e+00 - 3.18860e+00 0.00000e+00 - 3.18875e+00 0.00000e+00 - 3.18890e+00 0.00000e+00 - 3.18905e+00 0.00000e+00 - 3.18920e+00 0.00000e+00 - 3.18935e+00 0.00000e+00 - 3.18950e+00 0.00000e+00 - 3.18965e+00 0.00000e+00 - 3.18980e+00 0.00000e+00 - 3.18995e+00 0.00000e+00 - 3.19010e+00 0.00000e+00 - 3.19025e+00 0.00000e+00 - 3.19040e+00 1.12838e-16 - 3.19055e+00 1.52523e-15 - 3.19070e+00 2.50152e-15 - 3.19085e+00 4.11401e-15 - 3.19100e+00 3.36144e-15 - 3.19115e+00 8.13946e-16 - 3.19130e+00 3.47340e-17 - 3.19145e+00 0.00000e+00 - 3.19160e+00 0.00000e+00 - 3.19175e+00 0.00000e+00 - 3.19190e+00 0.00000e+00 - 3.19205e+00 0.00000e+00 - 3.19220e+00 0.00000e+00 - 3.19235e+00 0.00000e+00 - 3.19250e+00 0.00000e+00 - 3.19265e+00 0.00000e+00 - 3.19280e+00 0.00000e+00 - 3.19295e+00 0.00000e+00 - 3.19310e+00 0.00000e+00 - 3.19325e+00 0.00000e+00 - 3.19340e+00 0.00000e+00 - 3.19355e+00 0.00000e+00 - 3.19370e+00 0.00000e+00 - 3.19385e+00 0.00000e+00 - 3.19400e+00 0.00000e+00 - 3.19415e+00 0.00000e+00 - 3.19430e+00 0.00000e+00 - 3.19445e+00 0.00000e+00 - 3.19460e+00 0.00000e+00 - 3.19475e+00 0.00000e+00 - 3.19490e+00 0.00000e+00 - 3.19505e+00 0.00000e+00 - 3.19520e+00 0.00000e+00 - 3.19535e+00 0.00000e+00 - 3.19550e+00 0.00000e+00 - 3.19565e+00 0.00000e+00 - 3.19580e+00 0.00000e+00 - 3.19595e+00 0.00000e+00 - 3.19610e+00 0.00000e+00 - 3.19625e+00 0.00000e+00 - 3.19640e+00 0.00000e+00 - 3.19655e+00 0.00000e+00 - 3.19670e+00 0.00000e+00 - 3.19685e+00 0.00000e+00 - 3.19700e+00 0.00000e+00 - 3.19715e+00 0.00000e+00 - 3.19730e+00 0.00000e+00 - 3.19745e+00 0.00000e+00 - 3.19760e+00 0.00000e+00 - 3.19775e+00 0.00000e+00 - 3.19790e+00 0.00000e+00 - 3.19805e+00 0.00000e+00 - 3.19820e+00 0.00000e+00 - 3.19835e+00 0.00000e+00 - 3.19850e+00 0.00000e+00 - 3.19865e+00 0.00000e+00 - 3.19880e+00 0.00000e+00 - 3.19895e+00 0.00000e+00 - 3.19910e+00 0.00000e+00 - 3.19925e+00 0.00000e+00 - 3.19940e+00 0.00000e+00 - 3.19955e+00 0.00000e+00 - 3.19970e+00 8.18626e-16 - 3.19985e+00 8.57952e-16 - 3.20000e+00 1.28274e-15 - 3.20015e+00 2.07526e-15 - 3.20030e+00 1.13192e-15 - 3.20045e+00 4.73631e-16 - 3.20060e+00 4.65423e-16 - 3.20075e+00 7.31635e-16 - 3.20090e+00 2.15862e-16 - 3.20105e+00 1.16197e-15 - 3.20120e+00 6.97938e-16 - 3.20135e+00 4.17332e-16 - 3.20150e+00 4.62380e-16 - 3.20165e+00 1.07188e-15 - 3.20180e+00 2.73741e-15 - 3.20195e+00 2.90819e-15 - 3.20210e+00 2.57542e-15 - 3.20225e+00 2.96890e-15 - 3.20240e+00 3.89670e-15 - 3.20255e+00 3.39211e-15 - 3.20270e+00 2.69734e-15 - 3.20285e+00 2.81578e-15 - 3.20300e+00 2.89097e-15 - 3.20315e+00 3.03790e-15 - 3.20330e+00 3.44188e-15 - 3.20345e+00 4.48003e-15 - 3.20360e+00 4.34677e-15 - 3.20375e+00 4.19668e-15 - 3.20390e+00 4.67665e-15 - 3.20405e+00 3.40117e-15 - 3.20420e+00 3.09420e-15 - 3.20435e+00 3.61153e-15 - 3.20450e+00 2.96434e-15 - 3.20465e+00 3.33092e-15 - 3.20480e+00 3.32020e-15 - 3.20495e+00 2.92890e-15 - 3.20510e+00 2.91665e-15 - 3.20525e+00 3.64980e-15 - 3.20540e+00 3.23572e-15 - 3.20555e+00 4.06972e-15 - 3.20570e+00 4.71999e-15 - 3.20585e+00 4.03288e-15 - 3.20600e+00 2.68387e-15 - 3.20615e+00 2.57296e-15 - 3.20630e+00 4.32245e-15 - 3.20645e+00 3.75870e-15 - 3.20660e+00 3.35831e-15 - 3.20675e+00 2.55436e-15 - 3.20690e+00 2.19120e-15 - 3.20705e+00 2.27436e-15 - 3.20720e+00 2.50857e-15 - 3.20735e+00 2.79560e-15 - 3.20750e+00 3.76259e-15 - 3.20765e+00 4.09276e-15 - 3.20780e+00 4.43583e-15 - 3.20795e+00 3.52103e-15 - 3.20810e+00 2.44140e-15 - 3.20825e+00 2.61207e-15 - 3.20840e+00 2.73682e-15 - 3.20855e+00 1.84500e-15 - 3.20870e+00 1.76876e-15 - 3.20885e+00 1.82311e-15 - 3.20900e+00 2.91366e-15 - 3.20915e+00 3.68269e-15 - 3.20930e+00 3.32138e-15 - 3.20945e+00 3.41190e-15 - 3.20960e+00 4.14423e-15 - 3.20975e+00 3.02268e-15 - 3.20990e+00 5.08357e-15 - 3.21005e+00 6.16296e-15 - 3.21020e+00 4.61898e-15 - 3.21035e+00 4.13177e-15 - 3.21050e+00 3.91144e-15 - 3.21065e+00 2.69842e-15 - 3.21080e+00 1.20574e-15 - 3.21095e+00 6.05623e-17 - 3.21110e+00 5.58407e-16 - 3.21125e+00 1.11525e-15 - 3.21140e+00 0.00000e+00 - 3.21155e+00 0.00000e+00 - 3.21170e+00 0.00000e+00 - 3.21185e+00 0.00000e+00 - 3.21200e+00 0.00000e+00 - 3.21215e+00 0.00000e+00 - 3.21230e+00 0.00000e+00 - 3.21245e+00 0.00000e+00 - 3.21260e+00 0.00000e+00 - 3.21275e+00 0.00000e+00 - 3.21290e+00 0.00000e+00 - 3.21305e+00 0.00000e+00 - 3.21320e+00 0.00000e+00 - 3.21335e+00 0.00000e+00 - 3.21350e+00 0.00000e+00 - 3.21365e+00 0.00000e+00 - 3.21380e+00 0.00000e+00 - 3.21395e+00 0.00000e+00 - 3.21410e+00 0.00000e+00 - 3.21425e+00 0.00000e+00 - 3.21440e+00 0.00000e+00 - 3.21455e+00 0.00000e+00 - 3.21470e+00 0.00000e+00 - 3.21485e+00 0.00000e+00 - 3.21500e+00 0.00000e+00 - 3.21515e+00 0.00000e+00 - 3.21530e+00 0.00000e+00 - 3.21545e+00 0.00000e+00 - 3.21560e+00 0.00000e+00 - 3.21575e+00 0.00000e+00 - 3.21590e+00 0.00000e+00 - 3.21605e+00 0.00000e+00 - 3.21620e+00 8.97304e-16 - 3.21635e+00 1.62639e-15 - 3.21650e+00 1.25217e-15 - 3.21665e+00 8.72224e-16 - 3.21680e+00 1.55556e-15 - 3.21695e+00 7.18142e-16 - 3.21710e+00 1.42237e-15 - 3.21725e+00 1.93466e-15 - 3.21740e+00 1.84417e-15 - 3.21755e+00 2.10689e-15 - 3.21770e+00 5.79780e-16 - 3.21785e+00 8.01491e-18 - 3.21800e+00 1.64214e-15 - 3.21815e+00 2.37109e-15 - 3.21830e+00 1.89422e-15 - 3.21845e+00 2.45693e-15 - 3.21860e+00 2.43425e-15 - 3.21875e+00 2.30540e-15 - 3.21890e+00 2.12163e-15 - 3.21905e+00 2.48697e-15 - 3.21920e+00 3.04385e-15 - 3.21935e+00 2.94632e-15 - 3.21950e+00 2.33405e-15 - 3.21965e+00 2.37642e-15 - 3.21980e+00 1.69804e-15 - 3.21995e+00 1.27078e-15 - 3.22010e+00 1.17207e-15 - 3.22025e+00 4.02439e-16 - 3.22040e+00 0.00000e+00 - 3.22055e+00 0.00000e+00 - 3.22070e+00 0.00000e+00 - 3.22085e+00 0.00000e+00 - 3.22100e+00 0.00000e+00 - 3.22115e+00 0.00000e+00 - 3.22130e+00 0.00000e+00 - 3.22145e+00 0.00000e+00 - 3.22160e+00 0.00000e+00 - 3.22175e+00 0.00000e+00 - 3.22190e+00 0.00000e+00 - 3.22205e+00 0.00000e+00 - 3.22220e+00 0.00000e+00 - 3.22235e+00 0.00000e+00 - 3.22250e+00 0.00000e+00 - 3.22265e+00 0.00000e+00 - 3.22280e+00 0.00000e+00 - 3.22295e+00 0.00000e+00 - 3.22310e+00 0.00000e+00 - 3.22325e+00 0.00000e+00 - 3.22340e+00 0.00000e+00 - 3.22355e+00 0.00000e+00 - 3.22370e+00 0.00000e+00 - 3.22385e+00 0.00000e+00 - 3.22400e+00 0.00000e+00 - 3.22415e+00 0.00000e+00 - 3.22430e+00 0.00000e+00 - 3.22445e+00 0.00000e+00 - 3.22460e+00 0.00000e+00 - 3.22475e+00 0.00000e+00 - 3.22490e+00 0.00000e+00 - 3.22505e+00 0.00000e+00 - 3.22520e+00 0.00000e+00 - 3.22535e+00 0.00000e+00 - 3.22550e+00 0.00000e+00 - 3.22565e+00 0.00000e+00 - 3.22580e+00 0.00000e+00 - 3.22595e+00 0.00000e+00 - 3.22610e+00 0.00000e+00 - 3.22625e+00 0.00000e+00 - 3.22640e+00 0.00000e+00 - 3.22655e+00 0.00000e+00 - 3.22670e+00 0.00000e+00 - 3.22685e+00 0.00000e+00 - 3.22700e+00 0.00000e+00 - 3.22715e+00 0.00000e+00 - 3.22730e+00 0.00000e+00 - 3.22745e+00 0.00000e+00 - 3.22760e+00 0.00000e+00 - 3.22775e+00 0.00000e+00 - 3.22790e+00 0.00000e+00 - 3.22805e+00 0.00000e+00 - 3.22820e+00 0.00000e+00 - 3.22835e+00 0.00000e+00 - 3.22850e+00 0.00000e+00 - 3.22865e+00 0.00000e+00 - 3.22880e+00 0.00000e+00 - 3.22895e+00 0.00000e+00 - 3.22910e+00 0.00000e+00 - 3.22925e+00 0.00000e+00 - 3.22940e+00 0.00000e+00 - 3.22955e+00 0.00000e+00 - 3.22970e+00 0.00000e+00 - 3.22985e+00 0.00000e+00 - 3.23000e+00 0.00000e+00 - 3.23015e+00 0.00000e+00 - 3.23030e+00 0.00000e+00 - 3.23045e+00 0.00000e+00 - 3.23060e+00 1.19972e-17 - 3.23075e+00 4.72210e-16 - 3.23090e+00 7.20397e-16 - 3.23105e+00 1.46872e-15 - 3.23120e+00 1.01675e-15 - 3.23135e+00 1.47561e-15 - 3.23150e+00 1.57372e-15 - 3.23165e+00 1.62652e-15 - 3.23180e+00 2.39976e-15 - 3.23195e+00 3.11256e-15 - 3.23210e+00 3.98632e-15 - 3.23225e+00 3.62096e-15 - 3.23240e+00 3.83882e-15 - 3.23255e+00 3.51808e-15 - 3.23270e+00 3.51959e-15 - 3.23285e+00 3.32010e-15 - 3.23300e+00 3.53620e-15 - 3.23315e+00 3.78890e-15 - 3.23330e+00 4.13394e-15 - 3.23345e+00 3.13051e-15 - 3.23360e+00 2.70716e-15 - 3.23375e+00 2.96595e-15 - 3.23390e+00 3.76013e-15 - 3.23405e+00 5.16008e-15 - 3.23420e+00 5.26395e-15 - 3.23435e+00 5.61664e-15 - 3.23450e+00 5.93031e-15 - 3.23465e+00 6.04771e-15 - 3.23480e+00 5.91096e-15 - 3.23495e+00 5.64955e-15 - 3.23510e+00 4.83190e-15 - 3.23525e+00 5.60810e-15 - 3.23540e+00 5.71680e-15 - 3.23555e+00 5.29710e-15 - 3.23570e+00 5.06629e-15 - 3.23585e+00 5.42487e-15 - 3.23600e+00 6.18118e-15 - 3.23615e+00 5.30854e-15 - 3.23630e+00 4.22991e-15 - 3.23645e+00 3.95490e-15 - 3.23660e+00 3.73129e-15 - 3.23675e+00 3.61882e-15 - 3.23690e+00 3.56679e-15 - 3.23705e+00 2.44040e-15 - 3.23720e+00 2.71193e-15 - 3.23735e+00 3.51028e-15 - 3.23750e+00 3.43497e-15 - 3.23765e+00 3.37542e-15 - 3.23780e+00 3.30248e-15 - 3.23795e+00 2.78842e-15 - 3.23810e+00 2.39751e-15 - 3.23825e+00 2.86186e-15 - 3.23840e+00 2.50023e-15 - 3.23855e+00 1.71540e-15 - 3.23870e+00 8.96600e-16 - 3.23885e+00 0.00000e+00 - 3.23900e+00 0.00000e+00 - 3.23915e+00 0.00000e+00 - 3.23930e+00 0.00000e+00 - 3.23945e+00 0.00000e+00 - 3.23960e+00 0.00000e+00 - 3.23975e+00 0.00000e+00 - 3.23990e+00 0.00000e+00 - 3.24005e+00 0.00000e+00 - 3.24020e+00 0.00000e+00 - 3.24035e+00 0.00000e+00 - 3.24050e+00 0.00000e+00 - 3.24065e+00 0.00000e+00 - 3.24080e+00 0.00000e+00 - 3.24095e+00 0.00000e+00 - 3.24110e+00 0.00000e+00 - 3.24125e+00 0.00000e+00 - 3.24140e+00 0.00000e+00 - 3.24155e+00 0.00000e+00 - 3.24170e+00 0.00000e+00 - 3.24185e+00 0.00000e+00 - 3.24200e+00 0.00000e+00 - 3.24215e+00 0.00000e+00 - 3.24230e+00 0.00000e+00 - 3.24245e+00 0.00000e+00 - 3.24260e+00 0.00000e+00 - 3.24275e+00 0.00000e+00 - 3.24290e+00 0.00000e+00 - 3.24305e+00 0.00000e+00 - 3.24320e+00 0.00000e+00 - 3.24335e+00 0.00000e+00 - 3.24350e+00 0.00000e+00 - 3.24365e+00 0.00000e+00 - 3.24380e+00 0.00000e+00 - 3.24395e+00 0.00000e+00 - 3.24410e+00 0.00000e+00 - 3.24425e+00 0.00000e+00 - 3.24440e+00 0.00000e+00 - 3.24455e+00 1.45022e-16 - 3.24470e+00 8.02991e-16 - 3.24485e+00 2.87935e-15 - 3.24500e+00 4.02014e-15 - 3.24515e+00 4.60221e-15 - 3.24530e+00 4.52167e-15 - 3.24545e+00 4.15068e-15 - 3.24560e+00 4.82358e-15 - 3.24575e+00 2.20628e-15 - 3.24590e+00 1.44888e-15 - 3.24605e+00 2.22367e-15 - 3.24620e+00 2.54760e-15 - 3.24635e+00 2.13172e-15 - 3.24650e+00 1.89007e-15 - 3.24665e+00 1.63224e-15 - 3.24680e+00 1.05017e-15 - 3.24695e+00 9.39143e-16 - 3.24710e+00 2.49809e-15 - 3.24725e+00 4.02035e-15 - 3.24740e+00 3.97365e-15 - 3.24755e+00 3.73401e-15 - 3.24770e+00 3.03703e-15 - 3.24785e+00 3.07613e-15 - 3.24800e+00 3.67777e-15 - 3.24815e+00 4.08248e-15 - 3.24830e+00 3.68102e-15 - 3.24845e+00 3.09483e-15 - 3.24860e+00 3.23425e-15 - 3.24875e+00 3.60479e-15 - 3.24890e+00 2.75961e-15 - 3.24905e+00 2.39864e-15 - 3.24920e+00 2.93166e-15 - 3.24935e+00 1.97982e-15 - 3.24950e+00 1.83073e-15 - 3.24965e+00 1.18883e-15 - 3.24980e+00 1.08008e-15 - 3.24995e+00 1.22270e-15 - 3.25010e+00 1.55169e-15 - 3.25025e+00 1.59015e-15 - 3.25040e+00 9.13673e-16 - 3.25055e+00 6.08857e-17 - 3.25070e+00 -4.24584e-19 - 3.25085e+00 -4.24584e-19 - 3.25100e+00 -4.24584e-19 - 3.25115e+00 -4.24584e-19 - 3.25130e+00 -4.24584e-19 - 3.25145e+00 -4.24584e-19 - 3.25160e+00 -4.24584e-19 - 3.25175e+00 -4.24584e-19 - 3.25190e+00 -4.24584e-19 - 3.25205e+00 -4.24584e-19 - 3.25220e+00 -4.24584e-19 - 3.25235e+00 -4.24584e-19 - 3.25250e+00 -4.24584e-19 - 3.25265e+00 -4.24584e-19 - 3.25280e+00 1.58552e-15 - 3.25295e+00 1.86533e-15 - 3.25310e+00 1.38383e-15 - 3.25325e+00 5.53007e-16 - 3.25340e+00 5.32382e-16 - 3.25355e+00 6.04069e-16 - 3.25370e+00 8.57139e-17 - 3.25385e+00 -3.21591e-21 - 3.25400e+00 -2.66696e-22 - 3.25415e+00 -1.40697e-23 - 3.25430e+00 -5.18716e-25 - 3.25445e+00 0.00000e+00 - 3.25460e+00 0.00000e+00 - 3.25475e+00 0.00000e+00 - 3.25490e+00 0.00000e+00 - 3.25505e+00 0.00000e+00 - 3.25520e+00 0.00000e+00 - 3.25535e+00 0.00000e+00 - 3.25550e+00 0.00000e+00 - 3.25565e+00 0.00000e+00 - 3.25580e+00 0.00000e+00 - 3.25595e+00 5.18439e-17 - 3.25610e+00 4.76451e-16 - 3.25625e+00 5.42101e-16 - 3.25640e+00 4.34997e-18 - 3.25655e+00 0.00000e+00 - 3.25670e+00 1.83583e-17 - 3.25685e+00 2.43892e-16 - 3.25700e+00 5.57953e-16 - 3.25715e+00 4.11516e-16 - 3.25730e+00 0.00000e+00 - 3.25745e+00 0.00000e+00 - 3.25760e+00 2.02861e-16 - 3.25775e+00 5.38784e-16 - 3.25790e+00 9.79569e-16 - 3.25805e+00 1.12059e-15 - 3.25820e+00 1.38947e-15 - 3.25835e+00 1.22870e-15 - 3.25850e+00 1.37987e-16 - 3.25865e+00 3.58884e-17 - 3.25880e+00 4.39136e-16 - 3.25895e+00 0.00000e+00 - 3.25910e+00 0.00000e+00 - 3.25925e+00 8.90606e-17 - 3.25940e+00 7.28579e-18 - 3.25955e+00 0.00000e+00 - 3.25970e+00 0.00000e+00 - 3.25985e+00 0.00000e+00 - 3.26000e+00 8.71334e-16 - 3.26015e+00 2.23080e-15 - 3.26030e+00 1.88260e-15 - 3.26045e+00 1.66367e-15 - 3.26060e+00 2.63119e-15 - 3.26075e+00 2.12233e-15 - 3.26090e+00 2.49234e-15 - 3.26105e+00 2.76778e-15 - 3.26120e+00 2.10741e-15 - 3.26135e+00 3.12956e-15 - 3.26150e+00 3.15231e-15 - 3.26165e+00 1.84919e-15 - 3.26180e+00 1.52944e-15 - 3.26195e+00 1.02781e-15 - 3.26210e+00 1.36455e-15 - 3.26225e+00 1.10900e-15 - 3.26240e+00 1.49178e-15 - 3.26255e+00 1.37937e-15 - 3.26270e+00 1.64165e-15 - 3.26285e+00 1.71662e-15 - 3.26300e+00 1.29325e-15 - 3.26315e+00 6.68235e-16 - 3.26330e+00 6.84173e-16 - 3.26345e+00 5.90206e-16 - 3.26360e+00 6.22759e-16 - 3.26375e+00 3.64534e-16 - 3.26390e+00 5.80287e-16 - 3.26405e+00 2.28142e-16 - 3.26420e+00 0.00000e+00 - 3.26435e+00 6.97149e-16 - 3.26450e+00 1.28713e-15 - 3.26465e+00 1.83362e-15 - 3.26480e+00 1.33589e-15 - 3.26495e+00 1.14321e-15 - 3.26510e+00 1.51886e-15 - 3.26525e+00 2.07439e-15 - 3.26540e+00 2.28666e-15 - 3.26555e+00 1.34986e-15 - 3.26570e+00 5.64394e-16 - 3.26585e+00 8.87229e-16 - 3.26600e+00 2.57381e-15 - 3.26615e+00 3.65545e-15 - 3.26630e+00 3.26608e-15 - 3.26645e+00 3.64121e-15 - 3.26660e+00 4.31208e-15 - 3.26675e+00 2.70044e-15 - 3.26690e+00 3.06468e-15 - 3.26705e+00 3.63047e-15 - 3.26720e+00 2.38490e-15 - 3.26735e+00 1.38177e-15 - 3.26750e+00 1.92545e-16 - 3.26765e+00 3.52764e-16 - 3.26780e+00 2.00981e-16 - 3.26795e+00 0.00000e+00 - 3.26810e+00 6.55999e-16 - 3.26825e+00 7.96925e-16 - 3.26840e+00 2.30606e-15 - 3.26855e+00 3.05738e-15 - 3.26870e+00 2.82618e-15 - 3.26885e+00 2.65286e-15 - 3.26900e+00 2.45024e-15 - 3.26915e+00 5.76092e-16 - 3.26930e+00 1.74848e-17 - 3.26945e+00 0.00000e+00 - 3.26960e+00 0.00000e+00 - 3.26975e+00 0.00000e+00 - 3.26990e+00 0.00000e+00 - 3.27005e+00 0.00000e+00 - 3.27020e+00 0.00000e+00 - 3.27035e+00 0.00000e+00 - 3.27050e+00 0.00000e+00 - 3.27065e+00 0.00000e+00 - 3.27080e+00 5.62587e-18 - 3.27095e+00 3.56394e-17 - 3.27110e+00 9.62664e-16 - 3.27125e+00 9.81005e-16 - 3.27140e+00 8.44826e-16 - 3.27155e+00 1.01494e-15 - 3.27170e+00 1.99060e-15 - 3.27185e+00 1.04459e-15 - 3.27200e+00 1.15813e-15 - 3.27215e+00 0.00000e+00 - 3.27230e+00 0.00000e+00 - 3.27245e+00 0.00000e+00 - 3.27260e+00 0.00000e+00 - 3.27275e+00 0.00000e+00 - 3.27290e+00 0.00000e+00 - 3.27305e+00 2.81683e-16 - 3.27320e+00 2.89602e-16 - 3.27335e+00 0.00000e+00 - 3.27350e+00 1.96029e-16 - 3.27365e+00 1.96494e-16 - 3.27380e+00 0.00000e+00 - 3.27395e+00 3.11361e-17 - 3.27410e+00 2.64682e-16 - 3.27425e+00 5.13417e-17 - 3.27440e+00 0.00000e+00 - 3.27455e+00 1.32785e-15 - 3.27470e+00 3.26562e-15 - 3.27485e+00 4.22718e-15 - 3.27500e+00 6.09343e-15 - 3.27515e+00 6.61155e-15 - 3.27530e+00 6.35311e-15 - 3.27545e+00 6.31810e-15 - 3.27560e+00 5.76050e-15 - 3.27575e+00 4.03629e-15 - 3.27590e+00 7.97137e-16 - 3.27605e+00 0.00000e+00 - 3.27620e+00 3.72003e-18 - 3.27635e+00 8.34665e-16 - 3.27650e+00 4.87692e-16 - 3.27665e+00 3.94797e-16 - 3.27680e+00 1.00510e-15 - 3.27695e+00 0.00000e+00 - 3.27710e+00 3.58190e-16 - 3.27725e+00 1.18915e-15 - 3.27740e+00 0.00000e+00 - 3.27755e+00 2.94164e-16 - 3.27770e+00 7.00041e-16 - 3.27785e+00 4.96329e-17 - 3.27800e+00 0.00000e+00 - 3.27815e+00 8.13268e-16 - 3.27830e+00 2.24837e-16 - 3.27845e+00 0.00000e+00 - 3.27860e+00 0.00000e+00 - 3.27875e+00 7.17585e-16 - 3.27890e+00 9.92308e-16 - 3.27905e+00 2.08621e-16 - 3.27920e+00 8.06011e-16 - 3.27935e+00 7.82603e-16 - 3.27950e+00 0.00000e+00 - 3.27965e+00 0.00000e+00 - 3.27980e+00 6.55011e-16 - 3.27995e+00 1.50817e-15 - 3.28010e+00 0.00000e+00 - 3.28025e+00 0.00000e+00 - 3.28040e+00 0.00000e+00 - 3.28055e+00 0.00000e+00 - 3.28070e+00 0.00000e+00 - 3.28085e+00 0.00000e+00 - 3.28100e+00 0.00000e+00 - 3.28115e+00 9.75185e-17 - 3.28130e+00 5.15629e-16 - 3.28145e+00 1.62934e-16 - 3.28160e+00 1.58327e-16 - 3.28175e+00 1.61420e-17 - 3.28190e+00 2.88183e-16 - 3.28205e+00 6.21163e-17 - 3.28220e+00 8.20488e-16 - 3.28235e+00 1.02535e-15 - 3.28250e+00 5.40644e-17 - 3.28265e+00 0.00000e+00 - 3.28280e+00 0.00000e+00 - 3.28295e+00 2.96378e-16 - 3.28310e+00 0.00000e+00 - 3.28325e+00 0.00000e+00 - 3.28340e+00 0.00000e+00 - 3.28355e+00 2.06469e-16 - 3.28370e+00 2.88327e-17 - 3.28385e+00 2.70004e-16 - 3.28400e+00 4.03526e-17 - 3.28415e+00 0.00000e+00 - 3.28430e+00 2.48771e-16 - 3.28445e+00 8.96556e-16 - 3.28460e+00 2.76012e-18 - 3.28475e+00 5.99802e-18 - 3.28490e+00 0.00000e+00 - 3.28505e+00 2.13915e-15 - 3.28520e+00 3.34186e-15 - 3.28535e+00 2.12450e-15 - 3.28550e+00 1.55457e-15 - 3.28565e+00 1.31556e-15 - 3.28580e+00 8.31188e-16 - 3.28595e+00 2.64477e-16 - 3.28610e+00 0.00000e+00 - 3.28625e+00 6.42653e-17 - 3.28640e+00 9.07565e-16 - 3.28655e+00 1.79903e-15 - 3.28670e+00 2.42881e-15 - 3.28685e+00 2.75933e-15 - 3.28700e+00 2.66806e-15 - 3.28715e+00 1.92814e-15 - 3.28730e+00 2.45490e-15 - 3.28745e+00 2.47196e-15 - 3.28760e+00 2.71978e-15 - 3.28775e+00 2.48098e-15 - 3.28790e+00 2.55884e-15 - 3.28805e+00 1.97752e-15 - 3.28820e+00 1.60480e-15 - 3.28835e+00 1.69532e-16 - 3.28850e+00 5.93210e-16 - 3.28865e+00 1.28830e-15 - 3.28880e+00 1.90177e-15 - 3.28895e+00 2.63196e-15 - 3.28910e+00 3.55361e-15 - 3.28925e+00 3.64786e-15 - 3.28940e+00 4.16355e-15 - 3.28955e+00 6.48725e-15 - 3.28970e+00 7.01568e-15 - 3.28985e+00 6.81429e-15 - 3.29000e+00 6.75526e-15 - 3.29015e+00 7.98940e-15 - 3.29030e+00 7.82879e-15 - 3.29045e+00 7.61006e-15 - 3.29060e+00 6.65903e-15 - 3.29075e+00 7.00513e-15 - 3.29090e+00 6.73354e-15 - 3.29105e+00 5.78261e-15 - 3.29120e+00 3.93991e-15 - 3.29135e+00 4.44735e-15 - 3.29150e+00 4.72358e-15 - 3.29165e+00 4.02003e-15 - 3.29180e+00 4.14893e-15 - 3.29195e+00 4.36009e-15 - 3.29210e+00 3.19232e-15 - 3.29225e+00 2.75316e-15 - 3.29240e+00 2.94951e-15 - 3.29255e+00 2.64753e-15 - 3.29270e+00 2.52365e-15 - 3.29285e+00 3.64694e-15 - 3.29300e+00 4.05093e-15 - 3.29315e+00 2.77084e-15 - 3.29330e+00 1.78460e-15 - 3.29345e+00 1.43025e-15 - 3.29360e+00 1.83440e-15 - 3.29375e+00 1.37542e-15 - 3.29390e+00 5.40695e-16 - 3.29405e+00 1.09125e-16 - 3.29420e+00 8.00969e-16 - 3.29435e+00 1.38983e-15 - 3.29450e+00 1.06314e-15 - 3.29465e+00 6.83553e-16 - 3.29480e+00 2.38143e-16 - 3.29495e+00 8.52448e-16 - 3.29510e+00 1.80402e-15 - 3.29525e+00 1.87830e-15 - 3.29540e+00 1.90466e-15 - 3.29555e+00 2.24336e-15 - 3.29570e+00 1.75807e-15 - 3.29585e+00 1.15527e-15 - 3.29600e+00 1.51727e-15 - 3.29615e+00 1.72735e-15 - 3.29630e+00 1.76093e-15 - 3.29645e+00 1.98043e-15 - 3.29660e+00 3.29942e-15 - 3.29675e+00 4.48936e-15 - 3.29690e+00 4.28552e-15 - 3.29705e+00 4.36547e-15 - 3.29720e+00 4.32178e-15 - 3.29735e+00 3.85893e-15 - 3.29750e+00 3.28421e-15 - 3.29765e+00 4.03115e-15 - 3.29780e+00 3.69578e-15 - 3.29795e+00 2.73718e-15 - 3.29810e+00 2.88296e-15 - 3.29825e+00 5.09558e-15 - 3.29840e+00 4.85903e-15 - 3.29855e+00 4.43065e-15 - 3.29870e+00 5.37827e-15 - 3.29885e+00 5.17452e-15 - 3.29900e+00 5.23751e-15 - 3.29915e+00 5.09446e-15 - 3.29930e+00 4.22812e-15 - 3.29945e+00 3.48787e-15 - 3.29960e+00 4.39891e-15 - 3.29975e+00 4.80318e-15 - 3.29990e+00 3.83260e-15 - 3.30005e+00 3.20985e-15 - 3.30020e+00 3.05956e-15 - 3.30035e+00 2.71356e-15 - 3.30050e+00 3.35766e-15 - 3.30065e+00 3.31522e-15 - 3.30080e+00 3.58355e-15 - 3.30095e+00 2.91000e-15 - 3.30110e+00 2.81135e-15 - 3.30125e+00 2.71192e-15 - 3.30140e+00 3.52722e-15 - 3.30155e+00 2.65655e-15 - 3.30170e+00 2.85144e-15 - 3.30185e+00 4.07994e-15 - 3.30200e+00 3.97949e-15 - 3.30215e+00 3.03693e-15 - 3.30230e+00 2.24415e-15 - 3.30245e+00 2.35003e-15 - 3.30260e+00 2.34385e-15 - 3.30275e+00 1.83425e-15 - 3.30290e+00 8.98164e-16 - 3.30305e+00 1.19537e-16 - 3.30320e+00 1.02585e-15 - 3.30335e+00 1.99667e-15 - 3.30350e+00 1.81040e-15 - 3.30365e+00 4.52507e-16 - 3.30380e+00 1.26955e-15 - 3.30395e+00 1.37197e-15 - 3.30410e+00 1.70395e-15 - 3.30425e+00 1.90454e-15 - 3.30440e+00 1.01753e-15 - 3.30455e+00 9.38557e-16 - 3.30470e+00 1.11319e-15 - 3.30485e+00 1.19353e-15 - 3.30500e+00 9.26646e-16 - 3.30515e+00 1.40415e-15 - 3.30530e+00 1.38770e-15 - 3.30545e+00 1.92709e-15 - 3.30560e+00 2.68422e-15 - 3.30575e+00 1.42949e-15 - 3.30590e+00 1.02118e-15 - 3.30605e+00 1.20160e-15 - 3.30620e+00 1.94391e-15 - 3.30635e+00 1.46174e-15 - 3.30650e+00 1.20977e-15 - 3.30665e+00 2.07787e-15 - 3.30680e+00 1.81780e-15 - 3.30695e+00 1.19496e-15 - 3.30710e+00 1.26459e-15 - 3.30725e+00 1.67548e-15 - 3.30740e+00 9.96873e-16 - 3.30755e+00 6.52538e-16 - 3.30770e+00 2.02752e-16 - 3.30785e+00 9.21227e-16 - 3.30800e+00 1.33680e-15 - 3.30815e+00 1.31588e-15 - 3.30830e+00 1.96245e-15 - 3.30845e+00 2.55807e-15 - 3.30860e+00 3.41177e-15 - 3.30875e+00 3.05880e-15 - 3.30890e+00 2.57964e-15 - 3.30905e+00 2.50119e-15 - 3.30920e+00 3.01281e-15 - 3.30935e+00 2.67489e-15 - 3.30950e+00 1.71342e-15 - 3.30965e+00 1.12639e-15 - 3.30980e+00 1.25931e-15 - 3.30995e+00 1.12883e-15 - 3.31010e+00 8.38417e-16 - 3.31025e+00 1.06435e-15 - 3.31040e+00 9.84575e-16 - 3.31055e+00 1.35347e-15 - 3.31070e+00 1.18028e-15 - 3.31085e+00 8.15378e-16 - 3.31100e+00 9.81876e-16 - 3.31115e+00 2.37641e-16 - 3.31130e+00 1.97493e-16 - 3.31145e+00 8.51956e-16 - 3.31160e+00 1.96379e-15 - 3.31175e+00 1.95952e-15 - 3.31190e+00 1.62095e-15 - 3.31205e+00 1.51750e-15 - 3.31220e+00 1.83784e-15 - 3.31235e+00 1.89685e-15 - 3.31250e+00 3.02206e-15 - 3.31265e+00 3.70530e-15 - 3.31280e+00 4.25895e-15 - 3.31295e+00 4.07899e-15 - 3.31310e+00 4.63209e-15 - 3.31325e+00 5.07955e-15 - 3.31340e+00 4.95198e-15 - 3.31355e+00 5.35998e-15 - 3.31370e+00 5.55215e-15 - 3.31385e+00 5.79478e-15 - 3.31400e+00 5.23281e-15 - 3.31415e+00 5.44235e-15 - 3.31430e+00 5.53335e-15 - 3.31445e+00 4.49348e-15 - 3.31460e+00 4.11336e-15 - 3.31475e+00 4.31536e-15 - 3.31490e+00 4.98643e-15 - 3.31505e+00 5.62114e-15 - 3.31520e+00 6.22733e-15 - 3.31535e+00 6.19649e-15 - 3.31550e+00 5.57524e-15 - 3.31565e+00 4.87423e-15 - 3.31580e+00 4.66711e-15 - 3.31595e+00 3.17096e-15 - 3.31610e+00 1.69874e-15 - 3.31625e+00 1.47675e-15 - 3.31640e+00 1.35214e-15 - 3.31655e+00 4.41106e-16 - 3.31670e+00 5.64887e-16 - 3.31685e+00 1.53992e-15 - 3.31700e+00 2.27549e-15 - 3.31715e+00 2.66692e-15 - 3.31730e+00 3.49357e-15 - 3.31745e+00 5.11269e-15 - 3.31760e+00 5.45805e-15 - 3.31775e+00 5.96585e-15 - 3.31790e+00 5.06111e-15 - 3.31805e+00 4.26938e-15 - 3.31820e+00 3.36659e-15 - 3.31835e+00 1.09634e-15 - 3.31850e+00 1.33477e-15 - 3.31865e+00 1.92509e-15 - 3.31880e+00 1.85824e-15 - 3.31895e+00 1.49468e-15 - 3.31910e+00 2.28124e-15 - 3.31925e+00 2.86377e-15 - 3.31940e+00 2.42688e-15 - 3.31955e+00 2.12131e-15 - 3.31970e+00 2.19874e-15 - 3.31985e+00 2.60156e-15 - 3.32000e+00 2.36706e-15 - 3.32015e+00 1.07278e-15 - 3.32030e+00 1.31775e-15 - 3.32045e+00 1.23811e-15 - 3.32060e+00 1.11070e-15 - 3.32075e+00 8.69688e-16 - 3.32090e+00 1.34616e-15 - 3.32105e+00 2.91755e-15 - 3.32120e+00 2.48890e-15 - 3.32135e+00 1.55908e-15 - 3.32150e+00 1.83374e-15 - 3.32165e+00 1.70787e-15 - 3.32180e+00 2.86694e-15 - 3.32195e+00 1.49150e-15 - 3.32210e+00 1.47299e-15 - 3.32225e+00 1.45780e-15 - 3.32240e+00 1.29276e-15 - 3.32255e+00 1.26602e-15 - 3.32270e+00 1.42280e-15 - 3.32285e+00 1.50492e-15 - 3.32300e+00 2.30227e-15 - 3.32315e+00 2.41559e-15 - 3.32330e+00 3.30623e-15 - 3.32345e+00 3.52203e-15 - 3.32360e+00 2.36484e-15 - 3.32375e+00 2.35211e-15 - 3.32390e+00 1.91227e-15 - 3.32405e+00 2.10101e-15 - 3.32420e+00 2.06232e-15 - 3.32435e+00 1.35607e-15 - 3.32450e+00 1.42262e-15 - 3.32465e+00 2.00043e-15 - 3.32480e+00 2.28651e-15 - 3.32495e+00 2.55458e-15 - 3.32510e+00 2.08387e-15 - 3.32525e+00 1.52119e-15 - 3.32540e+00 5.13591e-16 - 3.32555e+00 0.00000e+00 - 3.32570e+00 0.00000e+00 - 3.32585e+00 0.00000e+00 - 3.32600e+00 0.00000e+00 - 3.32615e+00 0.00000e+00 - 3.32630e+00 0.00000e+00 - 3.32645e+00 0.00000e+00 - 3.32660e+00 0.00000e+00 - 3.32675e+00 0.00000e+00 - 3.32690e+00 0.00000e+00 - 3.32705e+00 0.00000e+00 - 3.32720e+00 0.00000e+00 - 3.32735e+00 0.00000e+00 - 3.32750e+00 0.00000e+00 - 3.32765e+00 0.00000e+00 - 3.32780e+00 0.00000e+00 - 3.32795e+00 0.00000e+00 - 3.32810e+00 0.00000e+00 - 3.32825e+00 0.00000e+00 - 3.32840e+00 0.00000e+00 - 3.32855e+00 0.00000e+00 - 3.32870e+00 0.00000e+00 - 3.32885e+00 0.00000e+00 - 3.32900e+00 0.00000e+00 - 3.32915e+00 0.00000e+00 - 3.32930e+00 0.00000e+00 - 3.32945e+00 0.00000e+00 - 3.32960e+00 0.00000e+00 - 3.32975e+00 0.00000e+00 - 3.32990e+00 0.00000e+00 - 3.33005e+00 0.00000e+00 - 3.33020e+00 0.00000e+00 - 3.33035e+00 0.00000e+00 - 3.33050e+00 0.00000e+00 - 3.33065e+00 0.00000e+00 - 3.33080e+00 0.00000e+00 - 3.33095e+00 0.00000e+00 - 3.33110e+00 0.00000e+00 - 3.33125e+00 0.00000e+00 - 3.33140e+00 0.00000e+00 - 3.33155e+00 0.00000e+00 - 3.33170e+00 0.00000e+00 - 3.33185e+00 0.00000e+00 - 3.33200e+00 0.00000e+00 - 3.33215e+00 0.00000e+00 - 3.33230e+00 0.00000e+00 - 3.33245e+00 0.00000e+00 - 3.33260e+00 0.00000e+00 - 3.33275e+00 0.00000e+00 - 3.33290e+00 0.00000e+00 - 3.33305e+00 0.00000e+00 - 3.33320e+00 0.00000e+00 - 3.33335e+00 0.00000e+00 - 3.33350e+00 0.00000e+00 - 3.33365e+00 0.00000e+00 - 3.33380e+00 0.00000e+00 - 3.33395e+00 0.00000e+00 - 3.33410e+00 0.00000e+00 - 3.33425e+00 0.00000e+00 - 3.33440e+00 0.00000e+00 - 3.33455e+00 0.00000e+00 - 3.33470e+00 0.00000e+00 - 3.33485e+00 0.00000e+00 - 3.33500e+00 0.00000e+00 - 3.33515e+00 1.09514e-16 - 3.33530e+00 4.50275e-16 - 3.33545e+00 1.21476e-15 - 3.33560e+00 1.70301e-15 - 3.33575e+00 1.50019e-15 - 3.33590e+00 2.16359e-15 - 3.33605e+00 2.21413e-15 - 3.33620e+00 2.65965e-15 - 3.33635e+00 2.35833e-15 - 3.33650e+00 2.09996e-15 - 3.33665e+00 2.58495e-15 - 3.33680e+00 3.34935e-15 - 3.33695e+00 3.18139e-15 - 3.33710e+00 2.57594e-15 - 3.33725e+00 1.91127e-15 - 3.33740e+00 1.25694e-15 - 3.33755e+00 9.71013e-16 - 3.33770e+00 7.95434e-16 - 3.33785e+00 4.11010e-16 - 3.33800e+00 7.82120e-16 - 3.33815e+00 4.16696e-16 - 3.33830e+00 8.26340e-16 - 3.33845e+00 2.09820e-17 - 3.33860e+00 0.00000e+00 - 3.33875e+00 0.00000e+00 - 3.33890e+00 0.00000e+00 - 3.33905e+00 0.00000e+00 - 3.33920e+00 3.03537e-16 - 3.33935e+00 9.81256e-16 - 3.33950e+00 1.25617e-15 - 3.33965e+00 1.52486e-15 - 3.33980e+00 8.26781e-16 - 3.33995e+00 4.49846e-16 - 3.34010e+00 4.40610e-16 - 3.34025e+00 2.76016e-17 - 3.34040e+00 0.00000e+00 - 3.34055e+00 3.55411e-16 - 3.34070e+00 4.69253e-16 - 3.34085e+00 0.00000e+00 - 3.34100e+00 0.00000e+00 - 3.34115e+00 0.00000e+00 - 3.34130e+00 0.00000e+00 - 3.34145e+00 0.00000e+00 - 3.34160e+00 0.00000e+00 - 3.34175e+00 0.00000e+00 - 3.34190e+00 0.00000e+00 - 3.34205e+00 0.00000e+00 - 3.34220e+00 0.00000e+00 - 3.34235e+00 0.00000e+00 - 3.34250e+00 3.91710e-17 - 3.34265e+00 1.15183e-16 - 3.34280e+00 1.91221e-16 - 3.34295e+00 2.67286e-16 - 3.34310e+00 3.43376e-16 - 3.34325e+00 4.19493e-16 - 3.34340e+00 4.95637e-16 - 3.34355e+00 6.00529e-16 - 3.34370e+00 7.07203e-16 - 3.34385e+00 8.13915e-16 - 3.34400e+00 9.20663e-16 - 3.34415e+00 1.02745e-15 - 3.34430e+00 1.13427e-15 - 3.34445e+00 1.14125e-15 - 3.34460e+00 9.88538e-16 - 3.34475e+00 8.35777e-16 - 3.34490e+00 6.82963e-16 - 3.34505e+00 5.30097e-16 - 3.34520e+00 3.77178e-16 - 3.34535e+00 2.24206e-16 - 3.34550e+00 4.70520e-16 - 3.34565e+00 7.91984e-16 - 3.34580e+00 1.11356e-15 - 3.34595e+00 1.43524e-15 - 3.34610e+00 1.75704e-15 - 3.34625e+00 2.07895e-15 - 3.34640e+00 2.22788e-15 - 3.34655e+00 1.99779e-15 - 3.34670e+00 1.76762e-15 - 3.34685e+00 1.53736e-15 - 3.34700e+00 1.30703e-15 - 3.34715e+00 1.07662e-15 - 3.34730e+00 8.46131e-16 - 3.34745e+00 7.01633e-16 - 3.34760e+00 5.78619e-16 - 3.34775e+00 4.55564e-16 - 3.34790e+00 3.32465e-16 - 3.34805e+00 2.09324e-16 - 3.34820e+00 8.61411e-17 - 3.34835e+00 0.00000e+00 - 3.34850e+00 0.00000e+00 - 3.34865e+00 0.00000e+00 - 3.34880e+00 0.00000e+00 - 3.34895e+00 0.00000e+00 - 3.34910e+00 0.00000e+00 - 3.34925e+00 0.00000e+00 - 3.34940e+00 0.00000e+00 - 3.34955e+00 0.00000e+00 - 3.34970e+00 0.00000e+00 - 3.34985e+00 0.00000e+00 - 3.35000e+00 0.00000e+00 - 3.35015e+00 0.00000e+00 - 3.35030e+00 4.29003e-17 - 3.35045e+00 1.66723e-16 - 3.35060e+00 2.90589e-16 - 3.35075e+00 4.14498e-16 - 3.35090e+00 5.38450e-16 - 3.35105e+00 6.62444e-16 - 3.35120e+00 7.86481e-16 - 3.35135e+00 1.00730e-15 - 3.35150e+00 1.24003e-15 - 3.35165e+00 1.47284e-15 - 3.35180e+00 1.70573e-15 - 3.35195e+00 1.93871e-15 - 3.35210e+00 2.17176e-15 - 3.35225e+00 2.27902e-15 - 3.35240e+00 2.23238e-15 - 3.35255e+00 2.18572e-15 - 3.35270e+00 2.13905e-15 - 3.35285e+00 2.09235e-15 - 3.35300e+00 2.04565e-15 - 3.35315e+00 1.99928e-15 - 3.35330e+00 1.96812e-15 - 3.35345e+00 1.93695e-15 - 3.35360e+00 1.90577e-15 - 3.35375e+00 1.87458e-15 - 3.35390e+00 1.84338e-15 - 3.35405e+00 1.81216e-15 - 3.35420e+00 1.80000e-15 - 3.35435e+00 1.80000e-15 - 3.35450e+00 1.80000e-15 - 3.35465e+00 1.80000e-15 - 3.35480e+00 1.80000e-15 - 3.35495e+00 1.80000e-15 - 3.35510e+00 1.80663e-15 - 3.35525e+00 1.83793e-15 - 3.35540e+00 1.86924e-15 - 3.35555e+00 1.90056e-15 - 3.35570e+00 1.93190e-15 - 3.35585e+00 1.96324e-15 - 3.35600e+00 1.99459e-15 - 3.35615e+00 2.25959e-15 - 3.35630e+00 2.57334e-15 - 3.35645e+00 2.88721e-15 - 3.35660e+00 3.20118e-15 - 3.35675e+00 3.51526e-15 - 3.35690e+00 3.82945e-15 - 3.35705e+00 3.90656e-15 - 3.35720e+00 3.70220e-15 - 3.35735e+00 3.49776e-15 - 3.35750e+00 3.29326e-15 - 3.35765e+00 3.08868e-15 - 3.35780e+00 2.88403e-15 - 3.35795e+00 2.70000e-15 - 3.35810e+00 2.70000e-15 - 3.35825e+00 2.70000e-15 - 3.35840e+00 2.70000e-15 - 3.35855e+00 2.70000e-15 - 3.35870e+00 2.70000e-15 - 3.35885e+00 2.70000e-15 - 3.35900e+00 2.61617e-15 - 3.35915e+00 2.50563e-15 - 3.35930e+00 2.39505e-15 - 3.35945e+00 2.28444e-15 - 3.35960e+00 2.17379e-15 - 3.35975e+00 2.06310e-15 - 3.35990e+00 2.13609e-15 - 3.36005e+00 2.45257e-15 - 3.36020e+00 2.76915e-15 - 3.36035e+00 3.08585e-15 - 3.36050e+00 3.40265e-15 - 3.36065e+00 3.71957e-15 - 3.36080e+00 4.01830e-15 - 3.36095e+00 4.17686e-15 - 3.36110e+00 4.33548e-15 - 3.36125e+00 4.49416e-15 - 3.36140e+00 4.65289e-15 - 3.36155e+00 4.81168e-15 - 3.36170e+00 4.97052e-15 - 3.36185e+00 4.94823e-15 - 3.36200e+00 4.88465e-15 - 3.36215e+00 4.82105e-15 - 3.36230e+00 4.75743e-15 - 3.36245e+00 4.69378e-15 - 3.36260e+00 4.63011e-15 - 3.36275e+00 4.60839e-15 - 3.36290e+00 4.62432e-15 - 3.36305e+00 4.64026e-15 - 3.36320e+00 4.65619e-15 - 3.36335e+00 4.67214e-15 - 3.36350e+00 4.68809e-15 - 3.36365e+00 4.72427e-15 - 3.36380e+00 4.82003e-15 - 3.36395e+00 4.91583e-15 - 3.36410e+00 5.01167e-15 - 3.36425e+00 5.10753e-15 - 3.36440e+00 5.20343e-15 - 3.36455e+00 5.29936e-15 - 3.36470e+00 5.37944e-15 - 3.36485e+00 5.45944e-15 - 3.36500e+00 5.53946e-15 - 3.36515e+00 5.61952e-15 - 3.36530e+00 5.69960e-15 - 3.36545e+00 5.77971e-15 - 3.36560e+00 5.71622e-15 - 3.36575e+00 5.60399e-15 - 3.36590e+00 5.49172e-15 - 3.36605e+00 5.37941e-15 - 3.36620e+00 5.26706e-15 - 3.36635e+00 5.15468e-15 - 3.36650e+00 5.10825e-15 - 3.36665e+00 5.12432e-15 - 3.36680e+00 5.14039e-15 - 3.36695e+00 5.15646e-15 - 3.36710e+00 5.17255e-15 - 3.36725e+00 5.18864e-15 - 3.36740e+00 5.21892e-15 - 3.36755e+00 5.28332e-15 - 3.36770e+00 5.34774e-15 - 3.36785e+00 5.41218e-15 - 3.36800e+00 5.47664e-15 - 3.36815e+00 5.54113e-15 - 3.36830e+00 5.58731e-15 - 3.36845e+00 5.44211e-15 - 3.36860e+00 5.29687e-15 - 3.36875e+00 5.15157e-15 - 3.36890e+00 5.00622e-15 - 3.36905e+00 4.86083e-15 - 3.36920e+00 4.71538e-15 - 3.36935e+00 4.67108e-15 - 3.36950e+00 4.63874e-15 - 3.36965e+00 4.60639e-15 - 3.36980e+00 4.57402e-15 - 3.36995e+00 4.54164e-15 - 3.37010e+00 4.50925e-15 - 3.37025e+00 4.52315e-15 - 3.37040e+00 4.55556e-15 - 3.37055e+00 4.58798e-15 - 3.37070e+00 4.62041e-15 - 3.37085e+00 4.65286e-15 - 3.37100e+00 4.68531e-15 - 3.37115e+00 4.63777e-15 - 3.37130e+00 4.52410e-15 - 3.37145e+00 4.41038e-15 - 3.37160e+00 4.29663e-15 - 3.37175e+00 4.18284e-15 - 3.37190e+00 4.06901e-15 - 3.37205e+00 4.03845e-15 - 3.37220e+00 4.13609e-15 - 3.37235e+00 4.23376e-15 - 3.37250e+00 4.33146e-15 - 3.37265e+00 4.42920e-15 - 3.37280e+00 4.52697e-15 - 3.37295e+00 4.57522e-15 - 3.37310e+00 4.47738e-15 - 3.37325e+00 4.37951e-15 - 3.37340e+00 4.28160e-15 - 3.37355e+00 4.18366e-15 - 3.37370e+00 4.08569e-15 - 3.37385e+00 4.00000e-15 - 3.37400e+00 4.00000e-15 - 3.37415e+00 4.00000e-15 - 3.37430e+00 4.00000e-15 - 3.37445e+00 4.00000e-15 - 3.37460e+00 4.00000e-15 - 3.37475e+00 4.00036e-15 - 3.37490e+00 4.03311e-15 - 3.37505e+00 4.06587e-15 - 3.37520e+00 4.09864e-15 - 3.37535e+00 4.13142e-15 - 3.37550e+00 4.16422e-15 - 3.37565e+00 4.19702e-15 - 3.37580e+00 4.24476e-15 - 3.37595e+00 4.29400e-15 - 3.37610e+00 4.34326e-15 - 3.37625e+00 4.39253e-15 - 3.37640e+00 4.44183e-15 - 3.37655e+00 4.49114e-15 - 3.37670e+00 4.50000e-15 - 3.37685e+00 4.50000e-15 - 3.37700e+00 4.50000e-15 - 3.37715e+00 4.50000e-15 - 3.37730e+00 4.50000e-15 - 3.37745e+00 4.50000e-15 - 3.37760e+00 4.46322e-15 - 3.37775e+00 4.41377e-15 - 3.37790e+00 4.36431e-15 - 3.37805e+00 4.31483e-15 - 3.37820e+00 4.26533e-15 - 3.37835e+00 4.21582e-15 - 3.37850e+00 4.28991e-15 - 3.37865e+00 4.42204e-15 - 3.37880e+00 4.55422e-15 - 3.37895e+00 4.68644e-15 - 3.37910e+00 4.81870e-15 - 3.37925e+00 4.95102e-15 - 3.37940e+00 4.95831e-15 - 3.37955e+00 4.89211e-15 - 3.37970e+00 4.82589e-15 - 3.37985e+00 4.75964e-15 - 3.38000e+00 4.69337e-15 - 3.38015e+00 4.62707e-15 - 3.38030e+00 4.60000e-15 - 3.38045e+00 4.60000e-15 - 3.38060e+00 4.60000e-15 - 3.38075e+00 4.60000e-15 - 3.38090e+00 4.60000e-15 - 3.38105e+00 4.60000e-15 - 3.38120e+00 4.44950e-15 - 3.38135e+00 4.18359e-15 - 3.38150e+00 3.91759e-15 - 3.38165e+00 3.65150e-15 - 3.38180e+00 3.38532e-15 - 3.38195e+00 3.11904e-15 - 3.38210e+00 3.00000e-15 - 3.38225e+00 3.00000e-15 - 3.38240e+00 3.00000e-15 - 3.38255e+00 3.00000e-15 - 3.38270e+00 3.00000e-15 - 3.38285e+00 3.00000e-15 - 3.38300e+00 3.00000e-15 - 3.38315e+00 3.00000e-15 - 3.38330e+00 3.00000e-15 - 3.38345e+00 3.00000e-15 - 3.38360e+00 3.00000e-15 - 3.38375e+00 3.00000e-15 - 3.38390e+00 3.00000e-15 - 3.38405e+00 3.00000e-15 - 3.38420e+00 3.00000e-15 - 3.38435e+00 3.00000e-15 - 3.38450e+00 3.00000e-15 - 3.38465e+00 3.00000e-15 - 3.38480e+00 3.01971e-15 - 3.38495e+00 3.05323e-15 - 3.38510e+00 3.08676e-15 - 3.38525e+00 3.12029e-15 - 3.38540e+00 3.15384e-15 - 3.38555e+00 3.18741e-15 - 3.38570e+00 3.28392e-15 - 3.38585e+00 3.41826e-15 - 3.38600e+00 3.55264e-15 - 3.38615e+00 3.68707e-15 - 3.38630e+00 3.82155e-15 - 3.38645e+00 3.95608e-15 - 3.38660e+00 4.05665e-15 - 3.38675e+00 4.14079e-15 - 3.38690e+00 4.22496e-15 - 3.38705e+00 4.30915e-15 - 3.38720e+00 4.39337e-15 - 3.38735e+00 4.47763e-15 - 3.38750e+00 4.50000e-15 - 3.38765e+00 4.50000e-15 - 3.38780e+00 4.50000e-15 - 3.38795e+00 4.50000e-15 - 3.38810e+00 4.50000e-15 - 3.38825e+00 4.50000e-15 - 3.38840e+00 4.43179e-15 - 3.38855e+00 4.34731e-15 - 3.38870e+00 4.26279e-15 - 3.38885e+00 4.17825e-15 - 3.38900e+00 4.09368e-15 - 3.38915e+00 4.00907e-15 - 3.38930e+00 4.07556e-15 - 3.38945e+00 4.16022e-15 - 3.38960e+00 4.24491e-15 - 3.38975e+00 4.32963e-15 - 3.38990e+00 4.41438e-15 - 3.39005e+00 4.49915e-15 - 3.39020e+00 4.73509e-15 - 3.39035e+00 4.97263e-15 - 3.39050e+00 5.21026e-15 - 3.39065e+00 5.44796e-15 - 3.39080e+00 5.68575e-15 - 3.39095e+00 5.89831e-15 - 3.39110e+00 5.88132e-15 - 3.39125e+00 5.86431e-15 - 3.39140e+00 5.84731e-15 - 3.39155e+00 5.83029e-15 - 3.39170e+00 5.81327e-15 - 3.39185e+00 5.83755e-15 - 3.39200e+00 6.00787e-15 - 3.39215e+00 6.17824e-15 - 3.39230e+00 6.34868e-15 - 3.39245e+00 6.51918e-15 - 3.39260e+00 6.68973e-15 - 3.39275e+00 6.76983e-15 - 3.39290e+00 6.68449e-15 - 3.39305e+00 6.59913e-15 - 3.39320e+00 6.51373e-15 - 3.39335e+00 6.42831e-15 - 3.39350e+00 6.34285e-15 - 3.39365e+00 6.31705e-15 - 3.39380e+00 6.35126e-15 - 3.39395e+00 6.38547e-15 - 3.39410e+00 6.41970e-15 - 3.39425e+00 6.45394e-15 - 3.39440e+00 6.48820e-15 - 3.39455e+00 6.50000e-15 - 3.39470e+00 6.50000e-15 - 3.39485e+00 6.50000e-15 - 3.39500e+00 6.50000e-15 - 3.39515e+00 6.50000e-15 - 3.39530e+00 6.50000e-15 - 3.39545e+00 6.57074e-15 - 3.39560e+00 6.65661e-15 - 3.39575e+00 6.74250e-15 - 3.39590e+00 6.82843e-15 - 3.39605e+00 6.91439e-15 - 3.39620e+00 6.99993e-15 - 3.39635e+00 6.98272e-15 - 3.39650e+00 6.96551e-15 - 3.39665e+00 6.94830e-15 - 3.39680e+00 6.93108e-15 - 3.39695e+00 6.91385e-15 - 3.39710e+00 6.89662e-15 - 3.39725e+00 6.87938e-15 - 3.39740e+00 6.86213e-15 - 3.39755e+00 6.84488e-15 - 3.39770e+00 6.82762e-15 - 3.39785e+00 6.81036e-15 - 3.39800e+00 6.84835e-15 - 3.39815e+00 6.96927e-15 - 3.39830e+00 7.09024e-15 - 3.39845e+00 7.21125e-15 - 3.39860e+00 7.33229e-15 - 3.39875e+00 7.45339e-15 - 3.39890e+00 7.39355e-15 - 3.39905e+00 7.22044e-15 - 3.39920e+00 7.04728e-15 - 3.39935e+00 6.87405e-15 - 3.39950e+00 6.70076e-15 - 3.39965e+00 6.52742e-15 - 3.39980e+00 6.35401e-15 - 3.39995e+00 6.18055e-15 - 3.40010e+00 6.00702e-15 - 3.40025e+00 5.83344e-15 - 3.40040e+00 5.65979e-15 - 3.40055e+00 5.51391e-15 - 3.40070e+00 5.68768e-15 - 3.40085e+00 5.86150e-15 - 3.40100e+00 6.03539e-15 - 3.40115e+00 6.20933e-15 - 3.40130e+00 6.38334e-15 - 3.40145e+00 6.44260e-15 - 3.40160e+00 6.26847e-15 - 3.40175e+00 6.09429e-15 - 3.40190e+00 5.92004e-15 - 3.40205e+00 5.74574e-15 - 3.40220e+00 5.57137e-15 - 3.40235e+00 5.60306e-15 - 3.40250e+00 5.77754e-15 - 3.40265e+00 5.95209e-15 - 3.40280e+00 6.12670e-15 - 3.40295e+00 6.30136e-15 - 3.40310e+00 6.47609e-15 - 3.40325e+00 6.39438e-15 - 3.40340e+00 6.27199e-15 - 3.40355e+00 6.14955e-15 - 3.40370e+00 6.02708e-15 - 3.40385e+00 5.90455e-15 - 3.40400e+00 5.84888e-15 - 3.40415e+00 6.18167e-15 - 3.40430e+00 6.51457e-15 - 3.40445e+00 6.84758e-15 - 3.40460e+00 7.18072e-15 - 3.40475e+00 7.51396e-15 - 3.40490e+00 7.59145e-15 - 3.40505e+00 7.34573e-15 - 3.40520e+00 7.09992e-15 - 3.40535e+00 6.85403e-15 - 3.40550e+00 6.60806e-15 - 3.40565e+00 6.36200e-15 - 3.40580e+00 6.12901e-15 - 3.40595e+00 5.90037e-15 - 3.40610e+00 5.67165e-15 - 3.40625e+00 5.44285e-15 - 3.40640e+00 5.21397e-15 - 3.40655e+00 4.99769e-15 - 3.40670e+00 4.96246e-15 - 3.40685e+00 4.92721e-15 - 3.40700e+00 4.89195e-15 - 3.40715e+00 4.85667e-15 - 3.40730e+00 4.82139e-15 - 3.40745e+00 4.86954e-15 - 3.40760e+00 5.04609e-15 - 3.40775e+00 5.22269e-15 - 3.40790e+00 5.39936e-15 - 3.40805e+00 5.57609e-15 - 3.40820e+00 5.75289e-15 - 3.40835e+00 5.81297e-15 - 3.40850e+00 5.83067e-15 - 3.40865e+00 5.84836e-15 - 3.40880e+00 5.86607e-15 - 3.40895e+00 5.88378e-15 - 3.40910e+00 5.88956e-15 - 3.40925e+00 5.76550e-15 - 3.40940e+00 5.64141e-15 - 3.40955e+00 5.51727e-15 - 3.40970e+00 5.39308e-15 - 3.40985e+00 5.26886e-15 - 3.41000e+00 5.16042e-15 - 3.41015e+00 5.07163e-15 - 3.41030e+00 4.98280e-15 - 3.41045e+00 4.89395e-15 - 3.41060e+00 4.80506e-15 - 3.41075e+00 4.71615e-15 - 3.41090e+00 4.77280e-15 - 3.41105e+00 4.86178e-15 - 3.41120e+00 4.95079e-15 - 3.41135e+00 5.03983e-15 - 3.41150e+00 5.12890e-15 - 3.41165e+00 5.20000e-15 - 3.41180e+00 5.20000e-15 - 3.41195e+00 5.20000e-15 - 3.41210e+00 5.20000e-15 - 3.41225e+00 5.20000e-15 - 3.41240e+00 5.20000e-15 - 3.41255e+00 5.18935e-15 - 3.41270e+00 5.17149e-15 - 3.41285e+00 5.15362e-15 - 3.41300e+00 5.13574e-15 - 3.41315e+00 5.11786e-15 - 3.41330e+00 5.09977e-15 - 3.41345e+00 4.95662e-15 - 3.41360e+00 4.81342e-15 - 3.41375e+00 4.67017e-15 - 3.41390e+00 4.52686e-15 - 3.41405e+00 4.38351e-15 - 3.41420e+00 4.27754e-15 - 3.41435e+00 4.22375e-15 - 3.41450e+00 4.16994e-15 - 3.41465e+00 4.11610e-15 - 3.41480e+00 4.06225e-15 - 3.41495e+00 4.00839e-15 - 3.41510e+00 4.22750e-15 - 3.41525e+00 4.49703e-15 - 3.41540e+00 4.76665e-15 - 3.41555e+00 5.03636e-15 - 3.41570e+00 5.30617e-15 - 3.41585e+00 5.56086e-15 - 3.41600e+00 5.77685e-15 - 3.41615e+00 5.99292e-15 - 3.41630e+00 6.20907e-15 - 3.41645e+00 6.42528e-15 - 3.41660e+00 6.64158e-15 - 3.41675e+00 6.47624e-15 - 3.41690e+00 6.16962e-15 - 3.41705e+00 5.86288e-15 - 3.41720e+00 5.55604e-15 - 3.41735e+00 5.24910e-15 - 3.41750e+00 5.00682e-15 - 3.41765e+00 5.04295e-15 - 3.41780e+00 5.07910e-15 - 3.41795e+00 5.11526e-15 - 3.41810e+00 5.15144e-15 - 3.41825e+00 5.18762e-15 - 3.41840e+00 5.37867e-15 - 3.41855e+00 5.65025e-15 - 3.41870e+00 5.92193e-15 - 3.41885e+00 6.19370e-15 - 3.41900e+00 6.46556e-15 - 3.41915e+00 6.69250e-15 - 3.41930e+00 6.63809e-15 - 3.41945e+00 6.58366e-15 - 3.41960e+00 6.52921e-15 - 3.41975e+00 6.47474e-15 - 3.41990e+00 6.42025e-15 - 3.42005e+00 6.06892e-15 - 3.42020e+00 5.54186e-15 - 3.42035e+00 5.01462e-15 - 3.42050e+00 4.48719e-15 - 3.42065e+00 3.95959e-15 - 3.42080e+00 3.49059e-15 - 3.42095e+00 3.41777e-15 - 3.42110e+00 3.34492e-15 - 3.42125e+00 3.27205e-15 - 3.42140e+00 3.19915e-15 - 3.42155e+00 3.12622e-15 - 3.42170e+00 2.97150e-15 - 3.42185e+00 2.77082e-15 - 3.42200e+00 2.57007e-15 - 3.42215e+00 2.36925e-15 - 3.42230e+00 2.16837e-15 - 3.42245e+00 2.00593e-15 - 3.42260e+00 2.04248e-15 - 3.42275e+00 2.07904e-15 - 3.42290e+00 2.11561e-15 - 3.42305e+00 2.15220e-15 - 3.42320e+00 2.18880e-15 - 3.42335e+00 2.11104e-15 - 3.42350e+00 1.98285e-15 - 3.42365e+00 1.85461e-15 - 3.42380e+00 1.72633e-15 - 3.42395e+00 1.59801e-15 - 3.42410e+00 1.52169e-15 - 3.42425e+00 1.61341e-15 - 3.42440e+00 1.70517e-15 - 3.42455e+00 1.79695e-15 - 3.42470e+00 1.88877e-15 - 3.42485e+00 1.98062e-15 - 3.42500e+00 2.07251e-15 - 3.42515e+00 2.16442e-15 - 3.42530e+00 2.25637e-15 - 3.42545e+00 2.34834e-15 - 3.42560e+00 2.44035e-15 - 3.42575e+00 2.50000e-15 - 3.42590e+00 2.50000e-15 - 3.42605e+00 2.50000e-15 - 3.42620e+00 2.50000e-15 - 3.42635e+00 2.50000e-15 - 3.42650e+00 2.50000e-15 - 3.42665e+00 2.50000e-15 - 3.42680e+00 2.50000e-15 - 3.42695e+00 2.50000e-15 - 3.42710e+00 2.50000e-15 - 3.42725e+00 2.50000e-15 - 3.42740e+00 2.54695e-15 - 3.42755e+00 2.63937e-15 - 3.42770e+00 2.73183e-15 - 3.42785e+00 2.82431e-15 - 3.42800e+00 2.91683e-15 - 3.42815e+00 3.01501e-15 - 3.42830e+00 3.16315e-15 - 3.42845e+00 3.31133e-15 - 3.42860e+00 3.45957e-15 - 3.42875e+00 3.60785e-15 - 3.42890e+00 3.75619e-15 - 3.42905e+00 3.85229e-15 - 3.42920e+00 3.92651e-15 - 3.42935e+00 4.00076e-15 - 3.42950e+00 4.07503e-15 - 3.42965e+00 4.14932e-15 - 3.42980e+00 4.18818e-15 - 3.42995e+00 4.15100e-15 - 3.43010e+00 4.11382e-15 - 3.43025e+00 4.07662e-15 - 3.43040e+00 4.03940e-15 - 3.43055e+00 4.00218e-15 - 3.43070e+00 3.82469e-15 - 3.43085e+00 3.63843e-15 - 3.43100e+00 3.45211e-15 - 3.43115e+00 3.26573e-15 - 3.43130e+00 3.07928e-15 - 3.43145e+00 3.10724e-15 - 3.43160e+00 3.29381e-15 - 3.43175e+00 3.48046e-15 - 3.43190e+00 3.66717e-15 - 3.43205e+00 3.85394e-15 - 3.43220e+00 4.08155e-15 - 3.43235e+00 4.45535e-15 - 3.43250e+00 4.82928e-15 - 3.43265e+00 5.20334e-15 - 3.43280e+00 5.57753e-15 - 3.43295e+00 5.95185e-15 - 3.43310e+00 5.98369e-15 - 3.43325e+00 5.96496e-15 - 3.43340e+00 5.94622e-15 - 3.43355e+00 5.92748e-15 - 3.43370e+00 5.90873e-15 - 3.43385e+00 5.91002e-15 - 3.43400e+00 5.92879e-15 - 3.43415e+00 5.94755e-15 - 3.43430e+00 5.96633e-15 - 3.43445e+00 5.98511e-15 - 3.43460e+00 6.00000e-15 - 3.43475e+00 6.00000e-15 - 3.43490e+00 6.00000e-15 - 3.43505e+00 6.00000e-15 - 3.43520e+00 6.00000e-15 - 3.43535e+00 6.00000e-15 - 3.43550e+00 5.96649e-15 - 3.43565e+00 5.92883e-15 - 3.43580e+00 5.89115e-15 - 3.43595e+00 5.85346e-15 - 3.43610e+00 5.81575e-15 - 3.43625e+00 5.76705e-15 - 3.43640e+00 5.71045e-15 - 3.43655e+00 5.65384e-15 - 3.43670e+00 5.59720e-15 - 3.43685e+00 5.54055e-15 - 3.43700e+00 5.58062e-15 - 3.43715e+00 5.86409e-15 - 3.43730e+00 6.14765e-15 - 3.43745e+00 6.43131e-15 - 3.43760e+00 6.71508e-15 - 3.43775e+00 6.99893e-15 - 3.43790e+00 6.98114e-15 - 3.43805e+00 6.96220e-15 - 3.43820e+00 6.94326e-15 - 3.43835e+00 6.92431e-15 - 3.43850e+00 6.90535e-15 - 3.43865e+00 6.85917e-15 - 3.43880e+00 6.80226e-15 - 3.43895e+00 6.74533e-15 - 3.43910e+00 6.68838e-15 - 3.43925e+00 6.63141e-15 - 3.43940e+00 6.58295e-15 - 3.43955e+00 6.54495e-15 - 3.43970e+00 6.50693e-15 - 3.43985e+00 6.46890e-15 - 3.44000e+00 6.43085e-15 - 3.44015e+00 6.33155e-15 - 3.44030e+00 5.96987e-15 - 3.44045e+00 5.60808e-15 - 3.44060e+00 5.24615e-15 - 3.44075e+00 4.88411e-15 - 3.44090e+00 4.52193e-15 - 3.44105e+00 4.23129e-15 - 3.44120e+00 3.94517e-15 - 3.44135e+00 3.65895e-15 - 3.44150e+00 3.37262e-15 - 3.44165e+00 3.08620e-15 - 3.44180e+00 2.90652e-15 - 3.44195e+00 2.77276e-15 - 3.44210e+00 2.63896e-15 - 3.44225e+00 2.50512e-15 - 3.44240e+00 2.37122e-15 - 3.44255e+00 2.24624e-15 - 3.44270e+00 2.13140e-15 - 3.44285e+00 2.01651e-15 - 3.44300e+00 1.90159e-15 - 3.44315e+00 1.78662e-15 - 3.44330e+00 1.69054e-15 - 3.44345e+00 1.65219e-15 - 3.44360e+00 1.61383e-15 - 3.44375e+00 1.57546e-15 - 3.44390e+00 1.53707e-15 - 3.44405e+00 1.50533e-15 - 3.44420e+00 1.65899e-15 - 3.44435e+00 1.81270e-15 - 3.44450e+00 1.96646e-15 - 3.44465e+00 2.12028e-15 - 3.44480e+00 2.27415e-15 - 3.44495e+00 1.96382e-15 - 3.44510e+00 1.55964e-15 - 3.44525e+00 1.15531e-15 - 3.44540e+00 7.50845e-16 - 3.44555e+00 3.46240e-16 - 3.44570e+00 2.73858e-16 - 3.44585e+00 3.89540e-16 - 3.44600e+00 5.05261e-16 - 3.44615e+00 6.21022e-16 - 3.44630e+00 7.36823e-16 - 3.44645e+00 7.91223e-16 - 3.44660e+00 7.71909e-16 - 3.44675e+00 7.52589e-16 - 3.44690e+00 7.33262e-16 - 3.44705e+00 7.13928e-16 - 3.44720e+00 6.78352e-16 - 3.44735e+00 6.00965e-16 - 3.44750e+00 5.23550e-16 - 3.44765e+00 4.46109e-16 - 3.44780e+00 3.68641e-16 - 3.44795e+00 3.11067e-16 - 3.44810e+00 4.07969e-16 - 3.44825e+00 5.04904e-16 - 3.44840e+00 6.01873e-16 - 3.44855e+00 6.98875e-16 - 3.44870e+00 7.95911e-16 - 3.44885e+00 7.07020e-16 - 3.44900e+00 6.09917e-16 - 3.44915e+00 5.12781e-16 - 3.44930e+00 4.15611e-16 - 3.44945e+00 3.18407e-16 - 3.44960e+00 3.00000e-16 - 3.44975e+00 3.00000e-16 - 3.44990e+00 3.00000e-16 - 3.45005e+00 3.00000e-16 - 3.45020e+00 3.00000e-16 - 3.45035e+00 7.32429e-16 - 3.45050e+00 1.37552e-15 - 3.45065e+00 2.01884e-15 - 3.45080e+00 2.66238e-15 - 3.45095e+00 3.30615e-15 - 3.45110e+00 3.82281e-15 - 3.45125e+00 4.23276e-15 - 3.45140e+00 4.64285e-15 - 3.45155e+00 5.05309e-15 - 3.45170e+00 5.46346e-15 - 3.45185e+00 5.74142e-15 - 3.45200e+00 5.83920e-15 - 3.45215e+00 5.93701e-15 - 3.45230e+00 6.03485e-15 - 3.45245e+00 6.13273e-15 - 3.45260e+00 6.27967e-15 - 3.45275e+00 6.53432e-15 - 3.45290e+00 6.78907e-15 - 3.45305e+00 7.04390e-15 - 3.45320e+00 7.29882e-15 - 3.45335e+00 7.49172e-15 - 3.45350e+00 7.45247e-15 - 3.45365e+00 7.41321e-15 - 3.45380e+00 7.37394e-15 - 3.45395e+00 7.33465e-15 - 3.45410e+00 7.29303e-15 - 3.45425e+00 7.23406e-15 - 3.45440e+00 7.17507e-15 - 3.45455e+00 7.11606e-15 - 3.45470e+00 7.05703e-15 - 3.45485e+00 6.99595e-15 - 3.45500e+00 6.87781e-15 - 3.45515e+00 6.75962e-15 - 3.45530e+00 6.64140e-15 - 3.45545e+00 6.52313e-15 - 3.45560e+00 6.40482e-15 - 3.45575e+00 6.22971e-15 - 3.45590e+00 6.05213e-15 - 3.45605e+00 5.87448e-15 - 3.45620e+00 5.69677e-15 - 3.45635e+00 5.51900e-15 - 3.45650e+00 5.55294e-15 - 3.45665e+00 5.61224e-15 - 3.45680e+00 5.67156e-15 - 3.45695e+00 5.73089e-15 - 3.45710e+00 5.79025e-15 - 3.45725e+00 5.86618e-15 - 3.45740e+00 5.94538e-15 - 3.45755e+00 6.02460e-15 - 3.45770e+00 6.10386e-15 - 3.45785e+00 6.18314e-15 - 3.45800e+00 6.09072e-15 - 3.45815e+00 5.95188e-15 - 3.45830e+00 5.81299e-15 - 3.45845e+00 5.67406e-15 - 3.45860e+00 5.53508e-15 - 3.45875e+00 5.42575e-15 - 3.45890e+00 5.32641e-15 - 3.45905e+00 5.22703e-15 - 3.45920e+00 5.12762e-15 - 3.45935e+00 5.02817e-15 - 3.45950e+00 4.95722e-15 - 3.45965e+00 4.89751e-15 - 3.45980e+00 4.83778e-15 - 3.45995e+00 4.77803e-15 - 3.46010e+00 4.71826e-15 - 3.46025e+00 4.67231e-15 - 3.46040e+00 4.63244e-15 - 3.46055e+00 4.59255e-15 - 3.46070e+00 4.55265e-15 - 3.46085e+00 4.51273e-15 - 3.46100e+00 4.44561e-15 - 3.46115e+00 4.36572e-15 - 3.46130e+00 4.28581e-15 - 3.46145e+00 4.20587e-15 - 3.46160e+00 4.12590e-15 - 3.46175e+00 3.89713e-15 - 3.46190e+00 3.59704e-15 - 3.46205e+00 3.29685e-15 - 3.46220e+00 2.99655e-15 - 3.46235e+00 2.69615e-15 - 3.46250e+00 2.62725e-15 - 3.46265e+00 2.66733e-15 - 3.46280e+00 2.70742e-15 - 3.46295e+00 2.74753e-15 - 3.46310e+00 2.78766e-15 - 3.46325e+00 2.80000e-15 - 3.46340e+00 2.80000e-15 - 3.46355e+00 2.80000e-15 - 3.46370e+00 2.80000e-15 - 3.46385e+00 2.80000e-15 - 3.46400e+00 2.80000e-15 - 3.46415e+00 2.80000e-15 - 3.46430e+00 2.80000e-15 - 3.46445e+00 2.80000e-15 - 3.46460e+00 2.80000e-15 - 3.46475e+00 2.81496e-15 - 3.46490e+00 2.83511e-15 - 3.46505e+00 2.85526e-15 - 3.46520e+00 2.87542e-15 - 3.46535e+00 2.89558e-15 - 3.46550e+00 3.23086e-15 - 3.46565e+00 3.65463e-15 - 3.46580e+00 4.07855e-15 - 3.46595e+00 4.50261e-15 - 3.46610e+00 4.92682e-15 - 3.46625e+00 5.16723e-15 - 3.46640e+00 5.36937e-15 - 3.46655e+00 5.57159e-15 - 3.46670e+00 5.77387e-15 - 3.46685e+00 5.97623e-15 - 3.46700e+00 5.82135e-15 - 3.46715e+00 5.61886e-15 - 3.46730e+00 5.41629e-15 - 3.46745e+00 5.21366e-15 - 3.46760e+00 5.01096e-15 - 3.46775e+00 4.96164e-15 - 3.46790e+00 4.92107e-15 - 3.46805e+00 4.88048e-15 - 3.46820e+00 4.83989e-15 - 3.46835e+00 4.80253e-15 - 3.46850e+00 4.94472e-15 - 3.46865e+00 5.08695e-15 - 3.46880e+00 5.22924e-15 - 3.46895e+00 5.37157e-15 - 3.46910e+00 5.49003e-15 - 3.46925e+00 5.38829e-15 - 3.46940e+00 5.28652e-15 - 3.46955e+00 5.18471e-15 - 3.46970e+00 5.08287e-15 - 3.46985e+00 4.96959e-15 - 3.47000e+00 4.80652e-15 - 3.47015e+00 4.64341e-15 - 3.47030e+00 4.48023e-15 - 3.47045e+00 4.31700e-15 - 3.47060e+00 4.18264e-15 - 3.47075e+00 4.12139e-15 - 3.47090e+00 4.06011e-15 - 3.47105e+00 3.99882e-15 - 3.47120e+00 3.93750e-15 - 3.47135e+00 3.98741e-15 - 3.47150e+00 4.21239e-15 - 3.47165e+00 4.43746e-15 - 3.47180e+00 4.66260e-15 - 3.47195e+00 4.88782e-15 - 3.47210e+00 4.94859e-15 - 3.47225e+00 4.84614e-15 - 3.47240e+00 4.74366e-15 - 3.47255e+00 4.64115e-15 - 3.47270e+00 4.53860e-15 - 3.47285e+00 4.38483e-15 - 3.47300e+00 4.20011e-15 - 3.47315e+00 4.01533e-15 - 3.47330e+00 3.83049e-15 - 3.47345e+00 3.64558e-15 - 3.47360e+00 3.81683e-15 - 3.47375e+00 4.10466e-15 - 3.47390e+00 4.39259e-15 - 3.47405e+00 4.68062e-15 - 3.47420e+00 4.96875e-15 - 3.47435e+00 5.00000e-15 - 3.47450e+00 5.00000e-15 - 3.47465e+00 5.00000e-15 - 3.47480e+00 5.00000e-15 - 3.47495e+00 4.97820e-15 - 3.47510e+00 4.40074e-15 - 3.47525e+00 3.82308e-15 - 3.47540e+00 3.24523e-15 - 3.47555e+00 2.66717e-15 - 3.47570e+00 2.15239e-15 - 3.47585e+00 1.90448e-15 - 3.47600e+00 1.65649e-15 - 3.47615e+00 1.40841e-15 - 3.47630e+00 1.16024e-15 - 3.47645e+00 1.22003e-15 - 3.47660e+00 1.84088e-15 - 3.47675e+00 2.46194e-15 - 3.47690e+00 3.08321e-15 - 3.47705e+00 3.70470e-15 - 3.47720e+00 3.86944e-15 - 3.47735e+00 3.62067e-15 - 3.47750e+00 3.37182e-15 - 3.47765e+00 3.12288e-15 - 3.47780e+00 2.87385e-15 - 3.47795e+00 2.42028e-15 - 3.47810e+00 1.88035e-15 - 3.47825e+00 1.34024e-15 - 3.47840e+00 7.99936e-16 - 3.47855e+00 2.59449e-16 - 3.47870e+00 1.62983e-16 - 3.47885e+00 1.21378e-16 - 3.47900e+00 7.97590e-17 - 3.47915e+00 3.81256e-17 - 3.47930e+00 1.40886e-17 - 3.47945e+00 1.80737e-16 - 3.47960e+00 3.47444e-16 - 3.47975e+00 5.14207e-16 - 3.47990e+00 6.81029e-16 - 3.48005e+00 7.52092e-16 - 3.48020e+00 5.85155e-16 - 3.48035e+00 4.18161e-16 - 3.48050e+00 2.51109e-16 - 3.48065e+00 8.39989e-17 - 3.48080e+00 1.03961e-16 - 3.48095e+00 3.12992e-16 - 3.48110e+00 5.22096e-16 - 3.48125e+00 7.31272e-16 - 3.48140e+00 9.40521e-16 - 3.48155e+00 1.11987e-15 - 3.48170e+00 1.28739e-15 - 3.48185e+00 1.45496e-15 - 3.48200e+00 1.62259e-15 - 3.48215e+00 1.79028e-15 - 3.48230e+00 1.48395e-15 - 3.48245e+00 1.14835e-15 - 3.48260e+00 8.12622e-16 - 3.48275e+00 4.76782e-16 - 3.48290e+00 2.29587e-16 - 3.48305e+00 3.97623e-16 - 3.48320e+00 5.65716e-16 - 3.48335e+00 7.33868e-16 - 3.48350e+00 9.02078e-16 - 3.48365e+00 9.82413e-16 - 3.48380e+00 9.40332e-16 - 3.48395e+00 8.98236e-16 - 3.48410e+00 8.56125e-16 - 3.48425e+00 8.14000e-16 - 3.48440e+00 7.57790e-16 - 3.48455e+00 6.94559e-16 - 3.48470e+00 6.31305e-16 - 3.48485e+00 5.68030e-16 - 3.48500e+00 5.04733e-16 - 3.48515e+00 5.97643e-16 - 3.48530e+00 7.03211e-16 - 3.48545e+00 8.08815e-16 - 3.48560e+00 9.14456e-16 - 3.48575e+00 1.02416e-15 - 3.48590e+00 1.15102e-15 - 3.48605e+00 1.27792e-15 - 3.48620e+00 1.40486e-15 - 3.48635e+00 1.53185e-15 - 3.48650e+00 1.50186e-15 - 3.48665e+00 1.29007e-15 - 3.48680e+00 1.07820e-15 - 3.48695e+00 8.66265e-16 - 3.48710e+00 6.54252e-16 - 3.48725e+00 8.68317e-16 - 3.48740e+00 1.22899e-15 - 3.48755e+00 1.58978e-15 - 3.48770e+00 1.95070e-15 - 3.48785e+00 2.29171e-15 - 3.48800e+00 2.03676e-15 - 3.48815e+00 1.78173e-15 - 3.48830e+00 1.52661e-15 - 3.48845e+00 1.27141e-15 - 3.48860e+00 1.02310e-15 - 3.48875e+00 7.89000e-16 - 3.48890e+00 5.54818e-16 - 3.48905e+00 3.20554e-16 - 3.48920e+00 8.62097e-17 - 3.48935e+00 0.00000e+00 - 3.48950e+00 0.00000e+00 - 3.48965e+00 0.00000e+00 - 3.48980e+00 0.00000e+00 - 3.48995e+00 0.00000e+00 - 3.49010e+00 0.00000e+00 - 3.49025e+00 0.00000e+00 - 3.49040e+00 0.00000e+00 - 3.49055e+00 1.25969e-15 - 3.49070e+00 1.46103e-15 - 3.49085e+00 9.58959e-16 - 3.49100e+00 1.85369e-15 - 3.49115e+00 3.39050e-16 - 3.49130e+00 6.32265e-16 - 3.49145e+00 1.71376e-15 - 3.49160e+00 2.31339e-15 - 3.49175e+00 1.58243e-15 - 3.49190e+00 1.71564e-15 - 3.49205e+00 1.99633e-15 - 3.49220e+00 2.21548e-15 - 3.49235e+00 2.99010e-15 - 3.49250e+00 3.38457e-15 - 3.49265e+00 2.81350e-15 - 3.49280e+00 1.79567e-15 - 3.49295e+00 2.99586e-15 - 3.49310e+00 1.78522e-15 - 3.49325e+00 1.22350e-15 - 3.49340e+00 3.79803e-15 - 3.49355e+00 3.68060e-15 - 3.49370e+00 6.46233e-15 - 3.49385e+00 3.88248e-15 - 3.49400e+00 3.70825e-15 - 3.49415e+00 1.41341e-15 - 3.49430e+00 3.54376e-15 - 3.49445e+00 2.25609e-15 - 3.49460e+00 1.71736e-15 - 3.49475e+00 2.00557e-15 - 3.49490e+00 2.23947e-15 - 3.49505e+00 2.62428e-15 - 3.49520e+00 1.32346e-15 - 3.49535e+00 3.44202e-15 - 3.49550e+00 3.53889e-15 - 3.49565e+00 2.92156e-15 - 3.49580e+00 2.98477e-15 - 3.49595e+00 2.25387e-15 - 3.49610e+00 4.28911e-15 - 3.49625e+00 2.26328e-15 - 3.49640e+00 2.71085e-15 - 3.49655e+00 3.43183e-15 - 3.49670e+00 3.16016e-15 - 3.49685e+00 1.14976e-15 - 3.49700e+00 8.66365e-16 - 3.49715e+00 1.12132e-15 - 3.49730e+00 1.76086e-15 - 3.49745e+00 1.18991e-15 - 3.49760e+00 1.43861e-15 - 3.49775e+00 1.82433e-15 - 3.49790e+00 1.48070e-15 - 3.49805e+00 1.54405e-15 - 3.49820e+00 2.09097e-15 - 3.49835e+00 1.50079e-15 - 3.49850e+00 3.04812e-15 - 3.49865e+00 2.20347e-15 - 3.49880e+00 2.20314e-15 - 3.49895e+00 1.60239e-15 - 3.49910e+00 2.97950e-15 - 3.49925e+00 1.76206e-15 - 3.49940e+00 1.45246e-15 - 3.49955e+00 2.18664e-15 - 3.49970e+00 3.25106e-15 - 3.49985e+00 3.46897e-15 - 3.50000e+00 4.84960e-15 - 3.50015e+00 4.58076e-15 - 3.50030e+00 5.22645e-15 - 3.50045e+00 3.79335e-15 - 3.50060e+00 3.20773e-15 - 3.50075e+00 3.91559e-15 - 3.50090e+00 3.59015e-15 - 3.50105e+00 4.19452e-15 - 3.50120e+00 4.10724e-15 - 3.50135e+00 2.26526e-15 - 3.50150e+00 8.56969e-16 - 3.50165e+00 1.65665e-15 - 3.50180e+00 2.80329e-15 - 3.50195e+00 3.10914e-15 - 3.50210e+00 4.23770e-15 - 3.50225e+00 5.03076e-15 - 3.50240e+00 5.16399e-15 - 3.50255e+00 5.87276e-15 - 3.50270e+00 5.75247e-15 - 3.50285e+00 6.85489e-15 - 3.50300e+00 6.83703e-15 - 3.50315e+00 5.75704e-15 - 3.50330e+00 5.77748e-15 - 3.50345e+00 6.90001e-15 - 3.50360e+00 6.20853e-15 - 3.50375e+00 4.33134e-15 - 3.50390e+00 4.83990e-15 - 3.50405e+00 6.75518e-15 - 3.50420e+00 7.95706e-15 - 3.50435e+00 7.47772e-15 - 3.50450e+00 6.82484e-15 - 3.50465e+00 5.91637e-15 - 3.50480e+00 3.98660e-15 - 3.50495e+00 3.66090e-15 - 3.50510e+00 1.92368e-15 - 3.50525e+00 1.53096e-15 - 3.50540e+00 1.43001e-15 - 3.50555e+00 2.08400e-15 - 3.50570e+00 2.49110e-15 - 3.50585e+00 2.24809e-15 - 3.50600e+00 1.49117e-15 - 3.50615e+00 2.83899e-15 - 3.50630e+00 4.22931e-15 - 3.50645e+00 5.63549e-15 - 3.50660e+00 5.64861e-15 - 3.50675e+00 5.77701e-15 - 3.50690e+00 5.49236e-15 - 3.50705e+00 5.11407e-15 - 3.50720e+00 3.35311e-15 - 3.50735e+00 1.59414e-15 - 3.50750e+00 3.15504e-15 - 3.50765e+00 2.55553e-15 - 3.50780e+00 2.85241e-15 - 3.50795e+00 1.89691e-15 - 3.50810e+00 2.43663e-15 - 3.50825e+00 3.41908e-15 - 3.50840e+00 4.35092e-15 - 3.50855e+00 4.19944e-15 - 3.50870e+00 5.98172e-15 - 3.50885e+00 6.86695e-15 - 3.50900e+00 6.10517e-15 - 3.50915e+00 5.62651e-15 - 3.50930e+00 4.94382e-15 - 3.50945e+00 4.72225e-15 - 3.50960e+00 5.22342e-15 - 3.50975e+00 5.99038e-15 - 3.50990e+00 5.65645e-15 - 3.51005e+00 4.22816e-15 - 3.51020e+00 5.38394e-15 - 3.51035e+00 3.27519e-15 - 3.51050e+00 5.43649e-15 - 3.51065e+00 4.23392e-15 - 3.51080e+00 4.57733e-15 - 3.51095e+00 5.49156e-15 - 3.51110e+00 5.87711e-15 - 3.51125e+00 5.14931e-15 - 3.51140e+00 5.45817e-15 - 3.51155e+00 6.22322e-15 - 3.51170e+00 6.96478e-15 - 3.51185e+00 5.28469e-15 - 3.51200e+00 5.94455e-15 - 3.51215e+00 5.80854e-15 - 3.51230e+00 6.78032e-15 - 3.51245e+00 6.33139e-15 - 3.51260e+00 8.77003e-15 - 3.51275e+00 8.10470e-15 - 3.51290e+00 7.19953e-15 - 3.51305e+00 7.02153e-15 - 3.51320e+00 5.74826e-15 - 3.51335e+00 4.84775e-15 - 3.51350e+00 4.60969e-15 - 3.51365e+00 4.03697e-15 - 3.51380e+00 5.46154e-15 - 3.51395e+00 5.08760e-15 - 3.51410e+00 4.31471e-15 - 3.51425e+00 5.06297e-15 - 3.51440e+00 5.24502e-15 - 3.51455e+00 4.66554e-15 - 3.51470e+00 4.11978e-15 - 3.51485e+00 5.57269e-15 - 3.51500e+00 5.26105e-15 - 3.51515e+00 7.45922e-15 - 3.51530e+00 7.15998e-15 - 3.51545e+00 8.84556e-15 - 3.51560e+00 9.21646e-15 - 3.51575e+00 6.96825e-15 - 3.51590e+00 7.82726e-15 - 3.51605e+00 7.81218e-15 - 3.51620e+00 6.54473e-15 - 3.51635e+00 5.03451e-15 - 3.51650e+00 4.76717e-15 - 3.51665e+00 5.40071e-15 - 3.51680e+00 5.40904e-15 - 3.51695e+00 5.40714e-15 - 3.51710e+00 4.05779e-15 - 3.51725e+00 5.40939e-15 - 3.51740e+00 5.37976e-15 - 3.51755e+00 4.33810e-15 - 3.51770e+00 4.31249e-15 - 3.51785e+00 4.98489e-15 - 3.51800e+00 6.42613e-15 - 3.51815e+00 6.10706e-15 - 3.51830e+00 4.08943e-15 - 3.51845e+00 3.11898e-15 - 3.51860e+00 4.66214e-15 - 3.51875e+00 3.66066e-15 - 3.51890e+00 4.66626e-15 - 3.51905e+00 5.20858e-15 - 3.51920e+00 5.23944e-15 - 3.51935e+00 3.82465e-15 - 3.51950e+00 4.06978e-15 - 3.51965e+00 3.56386e-15 - 3.51980e+00 4.55084e-15 - 3.51995e+00 4.31673e-15 - 3.52010e+00 3.69161e-15 - 3.52025e+00 4.19169e-15 - 3.52040e+00 3.74537e-15 - 3.52055e+00 4.09671e-15 - 3.52070e+00 4.06505e-15 - 3.52085e+00 1.79202e-15 - 3.52100e+00 3.09784e-15 - 3.52115e+00 3.70848e-15 - 3.52130e+00 3.81137e-15 - 3.52145e+00 3.51460e-15 - 3.52160e+00 4.39040e-15 - 3.52175e+00 3.79543e-15 - 3.52190e+00 3.35511e-15 - 3.52205e+00 3.57800e-15 - 3.52220e+00 3.41999e-15 - 3.52235e+00 2.88216e-15 - 3.52250e+00 3.21377e-15 - 3.52265e+00 3.67258e-15 - 3.52280e+00 2.61198e-15 - 3.52295e+00 3.63323e-15 - 3.52310e+00 4.16821e-15 - 3.52325e+00 4.59546e-15 - 3.52340e+00 4.89721e-15 - 3.52355e+00 2.97247e-15 - 3.52370e+00 5.21153e-15 - 3.52385e+00 3.16206e-15 - 3.52400e+00 2.37596e-15 - 3.52415e+00 3.67950e-15 - 3.52430e+00 2.40656e-15 - 3.52445e+00 2.17611e-15 - 3.52460e+00 2.99999e-15 - 3.52475e+00 2.60048e-15 - 3.52490e+00 3.09491e-15 - 3.52505e+00 3.64558e-15 - 3.52520e+00 2.98891e-15 - 3.52535e+00 2.83346e-15 - 3.52550e+00 2.51958e-15 - 3.52565e+00 1.99154e-15 - 3.52580e+00 2.15286e-15 - 3.52595e+00 2.37259e-15 - 3.52610e+00 2.47938e-15 - 3.52625e+00 2.33037e-15 - 3.52640e+00 3.00644e-15 - 3.52655e+00 2.71741e-15 - 3.52670e+00 2.24483e-15 - 3.52685e+00 3.10826e-15 - 3.52700e+00 2.49567e-15 - 3.52715e+00 1.32431e-15 - 3.52730e+00 2.28716e-15 - 3.52745e+00 3.62501e-15 - 3.52760e+00 1.59886e-15 - 3.52775e+00 2.30942e-15 - 3.52790e+00 3.44917e-15 - 3.52805e+00 2.98438e-15 - 3.52820e+00 2.71002e-15 - 3.52835e+00 2.30670e-15 - 3.52850e+00 2.71236e-15 - 3.52865e+00 3.52673e-15 - 3.52880e+00 3.41460e-15 - 3.52895e+00 4.05625e-15 - 3.52910e+00 3.02871e-15 - 3.52925e+00 2.12813e-15 - 3.52940e+00 2.45676e-15 - 3.52955e+00 2.19615e-15 - 3.52970e+00 2.51912e-15 - 3.52985e+00 2.00314e-15 - 3.53000e+00 1.70735e-15 - 3.53015e+00 2.98845e-15 - 3.53030e+00 3.02063e-15 - 3.53045e+00 3.10779e-15 - 3.53060e+00 3.42779e-15 - 3.53075e+00 4.06957e-15 - 3.53090e+00 4.07273e-15 - 3.53105e+00 3.21514e-15 - 3.53120e+00 3.20980e-15 - 3.53135e+00 3.82195e-15 - 3.53150e+00 3.23838e-15 - 3.53165e+00 4.42469e-15 - 3.53180e+00 5.50358e-15 - 3.53195e+00 4.63786e-15 - 3.53210e+00 3.25010e-15 - 3.53225e+00 3.56365e-15 - 3.53240e+00 4.74552e-15 - 3.53255e+00 5.10373e-15 - 3.53270e+00 3.97927e-15 - 3.53285e+00 4.09236e-15 - 3.53300e+00 3.82809e-15 - 3.53315e+00 3.35244e-15 - 3.53330e+00 3.59391e-15 - 3.53345e+00 3.24671e-15 - 3.53360e+00 3.68034e-15 - 3.53375e+00 2.76564e-15 - 3.53390e+00 2.65159e-15 - 3.53405e+00 2.13779e-15 - 3.53420e+00 2.89580e-15 - 3.53435e+00 2.89341e-15 - 3.53450e+00 3.10253e-15 - 3.53465e+00 2.76451e-15 - 3.53480e+00 2.03507e-15 - 3.53495e+00 1.38610e-15 - 3.53510e+00 1.21254e-15 - 3.53525e+00 9.16742e-16 - 3.53540e+00 1.47841e-15 - 3.53555e+00 2.15617e-15 - 3.53570e+00 2.44237e-15 - 3.53585e+00 3.09425e-15 - 3.53600e+00 2.61210e-15 - 3.53615e+00 3.11043e-15 - 3.53630e+00 2.76930e-15 - 3.53645e+00 3.13596e-15 - 3.53660e+00 4.20168e-15 - 3.53675e+00 3.90864e-15 - 3.53690e+00 3.77998e-15 - 3.53705e+00 3.51008e-15 - 3.53720e+00 2.98633e-15 - 3.53735e+00 1.39353e-15 - 3.53750e+00 1.43285e-15 - 3.53765e+00 1.60785e-15 - 3.53780e+00 2.96182e-15 - 3.53795e+00 2.63391e-15 - 3.53810e+00 2.78488e-15 - 3.53825e+00 3.12154e-15 - 3.53840e+00 3.29095e-15 - 3.53855e+00 3.64282e-15 - 3.53870e+00 4.03354e-15 - 3.53885e+00 2.74985e-15 - 3.53900e+00 3.34792e-15 - 3.53915e+00 2.83680e-15 - 3.53930e+00 3.10733e-15 - 3.53945e+00 3.32319e-15 - 3.53960e+00 3.29306e-15 - 3.53975e+00 3.43229e-15 - 3.53990e+00 3.77674e-15 - 3.54005e+00 4.33874e-15 - 3.54020e+00 4.27141e-15 - 3.54035e+00 3.22790e-15 - 3.54050e+00 3.34232e-15 - 3.54065e+00 3.62246e-15 - 3.54080e+00 3.38650e-15 - 3.54095e+00 3.59674e-15 - 3.54110e+00 3.26759e-15 - 3.54125e+00 3.46374e-15 - 3.54140e+00 2.70696e-15 - 3.54155e+00 2.52063e-15 - 3.54170e+00 2.81578e-15 - 3.54185e+00 2.76422e-15 - 3.54200e+00 2.54984e-15 - 3.54215e+00 3.52570e-15 - 3.54230e+00 2.69887e-15 - 3.54245e+00 2.19507e-15 - 3.54260e+00 3.07877e-15 - 3.54275e+00 3.55051e-15 - 3.54290e+00 3.75245e-15 - 3.54305e+00 3.59685e-15 - 3.54320e+00 4.01998e-15 - 3.54335e+00 4.85150e-15 - 3.54350e+00 5.72184e-15 - 3.54365e+00 4.12521e-15 - 3.54380e+00 3.99631e-15 - 3.54395e+00 2.96919e-15 diff --git a/templates/fluxed_sky_346.fits b/templates/fluxed_sky_346.fits deleted file mode 100644 index 3943f89a3..000000000 --- a/templates/fluxed_sky_346.fits +++ /dev/null @@ -1,436 +0,0 @@ -SIMPLE = T / Standard FITS format: NOST 100-2.0 BITPIX = -32 / No. of bits per pixel NAXIS = 1 / No. of axes in image NAXIS1 = 26401 / No. of pixels EXTEND = T / FITS extension may be present BLOCKED = T / FITS file may be blocked COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 CRPIX1 = -3886. / Reference pixel CRVAL1 = 3042.83252835 / Coordinate at reference pixel CDELT1 = 0.025 / Coordinate increment per pixel CTYPE1 = 'WAVELENGTH ' / Units of coordinate BUNIT = 'FLUX ' / Units of data values DATAMAX = 2.2486166954 / Maximum data value DATAMIN = -1.2712482214 / Minimum data value ORIGIN = 'ESO-MIDAS' / Written by MIDAS DATE = '2002-10-07T15:15:09' / [UTC] Date of writing FILENAME= 'fluxed_346.bdf' / Original file base-name MIDASFTP= 'IMAGE ' / MIDAS File Type OBJECT = 'MER2D_SCI_POINT_BLUE' / MIDAS desc.: IDENT(1) RA = 222.760417 / MIDAS desc.: O_POS(1) DEC = -23.49167 / MIDAS desc.: O_POS(2) EQUINOX = 2000. / MIDAS desc.: O_POS(3) DATE-OBS= '2001-06-21' / MIDAS desc.: O_TIME(1) MJD-OBS = 52081.168671 / MIDAS desc.: O_TIME(4) TM-START= 14573.1744 / MIDAS desc.: O_TIME(5) EXPTIME = 3600.0025 / MIDAS desc.: O_TIME(7) COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT FTU-1.39/2001-09-26T12:56:05/Default.htt INSTRUME= 'UVES ' / MIDAS desc.: INSTRUME(1) OBSERVER= 'UNKNOWN ' / MIDAS desc.: OBSERVER(1) TELESCOP= 'ESO-VLT-U2' / MIDAS desc.: TELESCOP(1) RADECSYS= 'FK5 ' / MIDAS desc.: RADECSYS(1) AIRMASS = 1.201 / MIDAS desc.: O_AIRM(1) HISTORY REBIN/LINEAR r.UVES.2001-06-21T04:02:53.174_0014.fits sky_346_2D_1.fits\HISTORY .25e-1 0. + NO + WC \HISTORY \ HISTORY \ HISTORY \ HISTORY \ HISTORY \ HISTORY \ HISTORY \ HISTORY \ HISTORY \ HISTORY \ HISTORY COMPUTE/IMAG sky_346_2D_all.bdf = ("../files/sky_346_2D\ HISTORY _1.fits"+"../files/sky_346_2D_2.fits")/2 \HISTORY AVERAGE/ROW average_1_4.bdf = sky_346\ HISTORY _2D_all.bdf 1,4 Y COMPUTE/IMAG sky_346_all.bdf\HISTORY = (average_1_4.bdf+average_15_18.bdf)/2 HISTORY COPY/II ../files/\ HISTORY sky_346_all.fits sky_346_all.bdf R4 n,u HISTORY \ HISTORY COPY/II sky_346_all.fits sky_346_all.bdf R4 n,u \ HISTORY \ HISTORY COPY/II sky_346_all.fits sky_346_all.bdf R4 n,u \ HISTORY COPY/II sky_346_all.fits sky_346_all.bdf R4 n,u \ HISTORY COPY/II sky_346_all.fits sky_346_all.bdf R4 n,u \ HISTORY COPY/II sky_346_all.fits\ HISTORY sky_346_all.bdf R4 n,u HISTORY \ HISTORY COPY/II sky_346_all.fits sky_346_all.bdf R4 n,u \ HISTORY EXTRACT/IMAG sky_346_all.bdf = sky_346_all.fits [3140,1:3800,1] \ HISTORY Converted from: ../files/sky_346_all.fits \HISTORY COMPUTE/IMAG fluxed_346 = merge/3.60000E+03*6.000\HISTORY 00E-01/4.92000E-01*1*response*exti \HISTORY OS-EXPOI= 41882 / OS expoId PI-COI = 'UNKNOWN ' / Name of PI-COI LST = 62341.612 / 17:19:01.612 LST at start (sec) UTC = 14577. / 04:02:57.000 UTC at start (sec) CHECKSUM= 'WS9HaP6GWP6GaP6G' / ASCII 1's complement checksum UT = '04:02:57.000' / UT at start ST = '17:19:01.612' / ST at start IMAGETYP= 'OBJECT ' / Observation type FILTER1 = 'FREE ' / Filter 1 name FILTER2 = 'CUSO4 ' / Filter 2 name GRAT1 = 'CD#1 ' / Grating 1 name WLEN1 = 346. / Grating 1 central wavelen DATAMEAN= 167.923462 / Mean Pixel Value DATARMS = 239.018685 / RMS of Pixel Values DATAMED = 158. / Median Pixel Value HS = 18 DATAMD5 = '1facc76d29731cf52bb2a1fd336e7b80' / data MD5 signature PIPEFILE= 'r.UVES.2001-06-21T04:02:53.174_0014.fits' / Filename of data product HIERARCH ESO OBS DID = 'ESO-VLT-DIC.OBS-1.7' / OBS Dictionary HIERARCH ESO OBS OBSERVER = 'UNKNOWN ' / Observer Name HIERARCH ESO OBS PI-COI NAME = 'UNKNOWN ' / PI-COI name HIERARCH ESO OBS PI-COI ID = 563 / ESO internal PI-COI ID HIERARCH ESO OBS TARG NAME = 'PKS1448-232' / OB target name HIERARCH ESO OBS GRP = '0 ' / linked blocks HIERARCH ESO OBS NAME = 'PKS1448_DIC1_346_580_2x2_3' / OB name HIERARCH ESO OBS ID = 104112 / Observation block ID HIERARCH ESO OBS PROG ID = '166.A-0106(A)' / ESO program identification HIERARCH ESO OBS START = '2001-06-21T03:59:31' / OB start time HIERARCH ESO OBS TPLNO = 2 / Template number within OB HIERARCH ESO TPL DID = 'ESO-VLT-DIC.TPL-1.4' / Data dictionary for TPL HIERARCH ESO TPL ID = 'UVES_dic1_obs_exp' / Template signature ID HIERARCH ESO TPL NAME = 'Dic1 Observation' / Template name HIERARCH ESO TPL PRESEQ= 'UVES_dic_obs.seq' / Sequencer script HIERARCH ESO TPL START = '2001-06-21T04:01:52' / TPL start time HIERARCH ESO TPL VERSION = '@(#) {Revision: 1.1$}' / Version of the templaHIERARCH ESO TPL NEXP = 1 / Number of exposures within templat HIERARCH ESO TPL EXPNO = 1 / Exposure number within template HIERARCH ESO DPR TECH = 'ECHELLE ' / Observation technique HIERARCH ESO DPR TYPE = 'OBJECT ' / Observation type HIERARCH ESO DPR CATG = 'SCIENCE ' / Observation category HIERARCH ESO TEL DID = 'ESO-VLT-DIC.TCS' / Data dictionary for TEL HIERARCH ESO TEL ID = 'v 1.370 ' / TCS version number HIERARCH ESO TEL DATE = 'not set ' / TCS installation date HIERARCH ESO TEL ALT = 56.327 / Alt angle at start (deg) HIERARCH ESO TEL AZ = 84.086 / Az angle at start (deg) S=0,W=90 HIERARCH ESO TEL GEOELEV = 2648. / Elevation above sea level (m) HIERARCH ESO TEL GEOLAT= -24.6254 / Tel geo latitute (+=North) (deg) HIERARCH ESO TEL GEOLON= -70.403 / Tel geo longitute (+=East) (deg) HIERARCH ESO TEL OPER = 'I, Condor' / Telescope Operator HIERARCH ESO TEL FOCU ID = 'NB ' / Telescope focus station ID HIERARCH ESO TEL FOCU LEN = 120. / Focal length (m) HIERARCH ESO TEL FOCU SCALE = 1.718 / Focal scale (arcsec/mm) HIERARCH ESO TEL FOCU VALUE = -29.894 / M2 setting (mm) HIERARCH ESO TEL PARANG START = 99.61 / Parallactic angle at start (deg) HIERARCH ESO TEL AIRM START = 1.201 / Airmass at start HIERARCH ESO TEL AMBI FWHM START = 0.76 / Observatory Seeing queriedHIERARCH ESO TEL AMBI PRES START = 744.48 / Observatory ambient air prHIERARCH ESO TEL AMBI WINDSP = 0.92 / Observatory ambient wind speed queHIERARCH ESO TEL AMBI WINDDIR = 334. / Observatory ambient wind directio HIERARCH ESO TEL AMBI RHUM = 4. / Observatory ambient relative humi HIERARCH ESO TEL AMBI TEMP = 12.31 / Observatory ambient temperature quHIERARCH ESO TEL MOON RA = 53945.992333 / ~~:~~:~~.~ RA (J2000) (deg) HIERARCH ESO TEL MOON DEC = 222334.76394 / ~~:~~:~~.~ DEC (J2000) (deg) HIERARCH ESO TEL TH M1 TEMP = 9.58 / M1 superficial temperature HIERARCH ESO TEL TRAK STATUS = 'NORMAL ' / Tracking status HIERARCH ESO TEL DOME STATUS = 'FULLY-OPEN' / Dome status HIERARCH ESO TEL PARANG END = 102.519 / Parallactic angle at end (deg) HIERARCH ESO TEL AIRM END = 1.471 / Airmass at end HIERARCH ESO TEL AMBI FWHM END = 0.61 / Observatory Seeing queried from ASHIERARCH ESO TEL AMBI PRES END = 744.25 / Observatory ambient air pressure qHIERARCH ESO ADA ABSROT START = 24.03156 / Abs rot angle at exp start (deg) HIERARCH ESO ADA POSANG= 0. / Position angle at start HIERARCH ESO ADA GUID STATUS = 'ON ' / Status of autoguider HIERARCH ESO ADA GUID RA = 222.7138 / 14:50:51.3 Guide star RA J2000 HIERARCH ESO ADA GUID DEC = -23.58867 / -23:35:19.2 Guide star DEC J2000 HIERARCH ESO ADA ABSROT END = 34.6718 / Abs rot angle at exp end (deg) HIERARCH ESO INS ID = 'UVES ' / Instrument ID HIERARCH ESO INS DID = 'UVES_ICS' / Data dictionary for INS HIERARCH ESO INS SOFW ID = '$Revision: 1.93 $' / Instrument SW HIERARCH ESO INS SOFW MODE = 'NORMAL ' / Simulation mode HIERARCH ESO INS PATH = 'BLUE ' / Optical path used HIERARCH ESO INS MODE = 'DICHR#1 ' / Instrument mode used HIERARCH ESO INS MIRR1 ID = 'FREE ' / Mirror unique ID HIERARCH ESO INS MIRR1 NAME = 'FREE ' / Mirror common name HIERARCH ESO INS MIRR1 NO = 1 / Mirror slide position HIERARCH ESO INS OPTI1 ID = '1 ' / General Optical device unique ID HIERARCH ESO INS OPTI1 NAME = 'OUT ' / General Optical device common nameHIERARCH ESO INS OPTI1 NO = 1 / Slot number HIERARCH ESO INS OPTI1 TYPE = 'FREE ' / General Optical device Element HIERARCH ESO INS SLIT1 NAME = 'FREE ' / Slit common name HIERARCH ESO INS SLIT1 NO = 1 / Slide position HIERARCH ESO INS SLIT1 WID = 0. / Slit width (arcsec) HIERARCH ESO INS SLIT1 LEN = 0. / Slit length (arcsec) HIERARCH ESO INS DROT MODE = 'ELEV ' / Instrument derotator mode HIERARCH ESO INS DROT RA = 145102.5 / %HOURANG RA (J2000) pointing (deg HIERARCH ESO INS DROT DEC = -232929.999995 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS DROT POSANG = 0. / Position angle (deg) HIERARCH ESO INS DROT BEGIN = 151.834 / Physical position at start (deg) HIERARCH ESO INS DPOL MODE = 'OFF ' / Instrument depolarizer mode HIERARCH ESO INS DPOS NAME = 'OUT ' / Instrument depolarizer slide positHIERARCH ESO INS DPOS NO = 1 / Depolarizer slide position HIERARCH ESO INS ADC MODE = 'OFF ' / ADC mode HIERARCH ESO INS ADCS NAME = 'OUT ' / ADC slide position HIERARCH ESO INS ADCS NO = 1 / ADC slide position HIERARCH ESO INS ADC1 MODE = 'OFF ' / ADC mode HIERARCH ESO INS ADC1 RA = 145102.5 / %HOURANG RA (J2000) pointing (deg HIERARCH ESO INS ADC1 DEC = -232929.999995 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS ADC2 MODE = 'OFF ' / ADC mode HIERARCH ESO INS ADC2 RA = 145102.5 / %HOURANG RA (J2000) pointing (deg HIERARCH ESO INS ADC2 DEC = -232929.999995 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS FILT1 ID = 'FREE ' / Filter unique id HIERARCH ESO INS FILT1 NAME = 'FREE ' / Filter common name HIERARCH ESO INS FILT1 NO = 13 / Filter wheel position index HIERARCH ESO INS OPTI2 ID = 'DIAPHR.27MM' / General Optical device unique IHIERARCH ESO INS OPTI2 NAME = 'OVRSIZ ' / General Optical device common nameHIERARCH ESO INS OPTI2 NO = 3 / Slot number HIERARCH ESO INS OPTI2 TYPE = 'SLIDE ' / General Optical device Element HIERARCH ESO INS MIRR2 ID = 'DICHR#1 ' / Mirror unique ID HIERARCH ESO INS MIRR2 NAME = 'DICHR#1 ' / Mirror common name HIERARCH ESO INS MIRR2 NO = 3 / Mirror slide position HIERARCH ESO INS SHUT1 ID = 'TSH ' / Shutter ID HIERARCH ESO INS SHUT1 NAME = 'Telescope shutter' / Shutter name HIERARCH ESO INS SHUT1 ST = T / Shutter open HIERARCH ESO INS SHUT2 ID = 'SPSH ' / Shutter ID HIERARCH ESO INS SHUT2 NAME = 'SPHERE_SHUTTER' / Shutter name HIERARCH ESO INS SHUT3 ID = 'TSH3 ' / Shutter ID HIERARCH ESO INS SHUT3 NAME = 'D2L_SHUTTER' / Shutter name HIERARCH ESO INS SHUT4 ID = 'TSH4 ' / Shutter ID HIERARCH ESO INS SHUT4 NAME = 'THAR_SHUTTER' / Shutter name HIERARCH ESO INS PIXSCALE = 0.246 / Pixel scale HIERARCH ESO INS SHUT7 ID = 'FPSH ' / Shutter ID HIERARCH ESO INS SHUT7 NAME = 'FIBRPROJSHUTTER' / Shutter name HIERARCH ESO INS DROT END = 158.626 / Physical position at end (deg) HIERARCH ESO INS TEMP31 NAME = 'Iodine cell temp.' / Temperature sensor name HIERARCH ESO INS TEMP31 START = 11. / Temperature at start HIERARCH ESO INS TEMP31 STOP = 11.1 / Temperature at end HIERARCH ESO INS TEMP31 MIN = 10.9 / Minimum temperature HIERARCH ESO INS TEMP31 MAX = 11.3 / Maximum temperature HIERARCH ESO INS TEMP31 MEAN = 11.1 / Average temperature HIERARCH ESO INS TEMP1 NAME = 'Temp. blue camera' / Temperature sensor name HIERARCH ESO INS TEMP1 START = 8. / Temperature at start HIERARCH ESO INS TEMP1 STOP = 8.1 / Temperature at end HIERARCH ESO INS TEMP1 MIN = 8. / Minimum temperature HIERARCH ESO INS TEMP1 MAX = 8.1 / Maximum temperature HIERARCH ESO INS TEMP1 MEAN = 8. / Average temperature HIERARCH ESO INS TEMP2 NAME = 'Temp. red camera' / Temperature sensor name HIERARCH ESO INS TEMP2 START = 8.1 / Temperature at start HIERARCH ESO INS TEMP2 STOP = 8.2 / Temperature at end HIERARCH ESO INS TEMP2 MIN = 8.1 / Minimum temperature HIERARCH ESO INS TEMP2 MAX = 8.2 / Maximum temperature HIERARCH ESO INS TEMP2 MEAN = 8.1 / Average temperature HIERARCH ESO INS TEMP3 NAME = 'Temp. table' / Temperature sensor name HIERARCH ESO INS TEMP3 START = 7.9 / Temperature at start HIERARCH ESO INS TEMP3 STOP = 8. / Temperature at end HIERARCH ESO INS TEMP3 MIN = 7.9 / Minimum temperature HIERARCH ESO INS TEMP3 MAX = 8. / Maximum temperature HIERARCH ESO INS TEMP3 MEAN = 7.9 / Average temperature HIERARCH ESO INS TEMP4 NAME = 'Temp. inside air' / Temperature sensor name HIERARCH ESO INS TEMP4 START = 9.4 / Temperature at start HIERARCH ESO INS TEMP4 STOP = 9.4 / Temperature at end HIERARCH ESO INS TEMP4 MIN = 9.4 / Minimum temperature HIERARCH ESO INS TEMP4 MAX = 9.4 / Maximum temperature HIERARCH ESO INS TEMP4 MEAN = 9.4 / Average temperature HIERARCH ESO INS SENS26 NAME = 'Barometer pressure' / sensor common name HIERARCH ESO INS SENS26 START = 743.8 / sensor value at start HIERARCH ESO INS SENS26 STOP = 743.5 / sensor value at end HIERARCH ESO INS SENS26 MIN = 743.5 / Minimum sensor value HIERARCH ESO INS SENS26 MAX = 743.8 / Maximum sensor value HIERARCH ESO INS SENS26 MEAN = 743.6 / Average sensor vlaue HIERARCH ESO INS SLIT2 WID = 1. / Slit width (arcsec) HIERARCH ESO INS SLIT2 Y1FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT2 Y1OFFST = 4742. / Offset in Formula HIERARCH ESO INS SLIT2 Y1RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT2 Y1MIN = 0.072 / Minimum slit width (arcsec) HIERARCH ESO INS SLIT2 Y1MAX = 5.5 / Maximum slit width (arcsec) HIERARCH ESO INS SLIT2 Y2FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT2 Y2OFFST = 4540. / Offset in Formula HIERARCH ESO INS SLIT2 Y2RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT2 Y2MIN = 0.068 / Minimum slit width (arcsec) HIERARCH ESO INS SLIT2 Y2MAX = 5.535 / Maximum slit width (arcsec) HIERARCH ESO INS SLIT2 Y1ENC = 10637 / Slit Vertical top motor absolute eHIERARCH ESO INS SLIT2 Y2ENC = 10434 / Slit Vertical bottom motor absolutHIERARCH ESO INS SLIT2 LEN = 10. / Slit length (arcsec) HIERARCH ESO INS SLIT2 X1FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT2 X1OFFST = 2401. / Offset in Formula HIERARCH ESO INS SLIT2 X1RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT2 X1MIN = 0.064 / Minimum slit length (arcsec) HIERARCH ESO INS SLIT2 X1MAX = 15.786 / Maximum slit length (arcsec) HIERARCH ESO INS SLIT2 X2FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT2 X2OFFST = 2328. / Offset in Formula HIERARCH ESO INS SLIT2 X2RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT2 X2MIN = 0.066 / Minimum slit length (arcsec) HIERARCH ESO INS SLIT2 X2MAX = 15.429 / Maximum slit length (arcsec) HIERARCH ESO INS SLIT2 X1ENC = 6875 / Slit Horizontal left motor absolutHIERARCH ESO INS SLIT2 X2ENC = 6766 / Slit Horizontal right motor absoluHIERARCH ESO INS FILT2 ID = 'BS1 ' / Filter unique id HIERARCH ESO INS FILT2 NAME = 'CUSO4 ' / Filter common name HIERARCH ESO INS FILT2 NO = 1 / Filter wheel position index HIERARCH ESO INS DET5 NAME = 'Blue exp. meter PMT' / detector name HIERARCH ESO INS DET5 CTMIN = 4. / Minimum count during exposure HIERARCH ESO INS DET5 CTMAX = 46. / Maximum count during exposure HIERARCH ESO INS DET5 CTMEAN = 22.4 / Average counts during exposure HIERARCH ESO INS DET5 CTRMS = 5.61 / RMS of counts during exposure HIERARCH ESO INS DET5 TMMEAN = 0.48 / Normalised mean exposure time HIERARCH ESO INS DET5 CTTOT = 79856. / Total counts during exposure HIERARCH ESO INS DET5 UIT = 1. / User defined Integration time HIERARCH ESO INS DET5 OFFDRK = 0. / Average dark background counts HIERARCH ESO INS DET5 OFFSKY = 1. / Average sky background counts HIERARCH ESO INS SHUT5 ID = 'BEXS ' / Shutter ID HIERARCH ESO INS SHUT5 NAME = 'Blue exp. meter sh.' / Shutter name HIERARCH ESO INS SHUT5 ST = T / Shutter open HIERARCH ESO INS GRAT1 ID = 'CD#1 ' / Grating unique ID HIERARCH ESO INS GRAT1 NAME = 'CD#1 ' / Grating common name HIERARCH ESO INS GRAT1 X = 1024. / X pixel for central wavelength HIERARCH ESO INS GRAT1 Y = 2048. / Y pixel for central wavelength HIERARCH ESO INS GRAT1 FRML = 'ENC=OFFST+RESOL*ASIN(WLEN*GRV/(2*COS(ROT)))' HIERARCH ESO INS GRAT1 OFFST = 3917047. / Offset in Formula HIERARCH ESO INS GRAT1 RESOL = -15000. / Resolution in encoder steps HIERARCH ESO INS GRAT1 GRV = 0.001 / Grating grooves/nm HIERARCH ESO INS GRAT1 ROT = 22.5 / Grating rot angle HIERARCH ESO INS GRAT1 NO = 1 / Grating wheel position index HIERARCH ESO INS GRAT1 WLEN = 346. / Grating central wavelength HIERARCH ESO INS GRAT1 DISP = 0.1 / Grating dispersion HIERARCH ESO INS GRAT1 ENC = 3755117 / Grating absolute encoder position HIERARCH ESO INS TILT1 POS = 0. / Science camera tilt (pixels) HIERARCH ESO INS TILT1 FRML = 'ENC=OFFST+RESOL*ASIN(2*POS-(MAX+MIN)/(MAX-MIN'HIERARCH ESO INS TILT1 OFFST = 16325. / Offset in Formula HIERARCH ESO INS TILT1 RESOL = -100. / Resolution in encoder steps HIERARCH ESO INS TILT1 POSMIN = -153.4 / Minimum camera tilt (pixels) HIERARCH ESO INS TILT1 POSMAX = 153.4 / Maximum camera tilt (pixels) HIERARCH ESO INS TILT1 ENC = 16325 / Camera tilt absolute encoder positHIERARCH ESO DET ID = 'CCD FIERA - Rev 2.69' / Detector system Id HIERARCH ESO DET NAME = 'ccdUvB - uvesb' / Name of detector system HIERARCH ESO DET DATE = '21-01-1999' / Installation date HIERARCH ESO DET DID = 'ESO-VLT-DIC.CCDDCS,ESO-VLT-DIC.FCDDCS' / Diction HIERARCH ESO DET BITS = 16 / Bits per pixel readout HIERARCH ESO DET RA = 222.76041666 / Apparent 14:51:02.4 RA at start HIERARCH ESO DET DEC = -23.49166666 / Apparent -23:29:29.9 DEC at start HIERARCH ESO DET SOFW MODE = 'Normal ' / CCD sw operational mode HIERARCH ESO DET CHIPS = 1 / # of chips in detector array HIERARCH ESO DET CHIP1 ID = 'CCD-44 ' / Detector chip identification HIERARCH ESO DET CHIP1 NAME = 'EEV CCD-44' / Detector chip name HIERARCH ESO DET CHIP1 DATE = '17-11-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP1 X = 1 / X location in array HIERARCH ESO DET CHIP1 Y = 1 / Y location in array HIERARCH ESO DET CHIP1 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP1 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP1 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP1 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET EXP NO= 5971 / Unique exposure ID number HIERARCH ESO DET EXP TYPE = 'Normal ' / Exposure type HIERARCH ESO DET EXP DUMDIT = 0 / # of dummy readouts HIERARCH ESO DET EXP RDTTIME = 33.203 / image readout time HIERARCH ESO DET EXP XFERTIM = 33.191 / image transfer time HIERARCH ESO DET READ MODE = 'normal ' / Readout method HIERARCH ESO DET READ SPEED = '1pt/50kHz/hg' / Readout speed HIERARCH ESO DET READ CLOCK = '50kHz/1port/hig' / Readout clock pattern used HIERARCH ESO DET OUTPUTS = 1 / # of outputs HIERARCH ESO DET OUTREF= 0 / reference output HIERARCH ESO DET OUT1 NAME = 'L ' / Description of output HIERARCH ESO DET OUT1 CHIP = 1 / Chip to which the output belongs HIERARCH ESO DET OUT1 X= 1 / X location of output HIERARCH ESO DET OUT1 Y= 1 / Y location of output HIERARCH ESO DET OUT1 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT1 NY = 1500 / valid pixels along Y HIERARCH ESO DET OUT1 CONAD = 0.6 / Conversion from ADUs to electrons HIERARCH ESO DET OUT1 RON = 1.9 / Readout noise per output (e-) HIERARCH ESO DET OUT1 GAIN = 1.67 / Conversion from electrons to ADU HIERARCH ESO DET FRAM ID = 1 / Image sequencial number HIERARCH ESO DET FRAM TYPE = 'Normal ' / Type of frame HIERARCH ESO DET WINDOWS = 1 / # of windows readout HIERARCH ESO DET WIN1 STRX = 1 / Lower left pixel in X HIERARCH ESO DET WIN1 STRY = 1 / Lower left pixel in Y HIERARCH ESO DET WIN1 NX = 1074 / # of pixels along X HIERARCH ESO DET WIN1 NY = 1500 / # of pixels along Y HIERARCH ESO DET WIN1 BINX = 2 / Binning factor along X HIERARCH ESO DET WIN1 BINY = 2 / Binning factor along Y HIERARCH ESO DET WIN1 NDIT = 1 / # of subintegrations HIERARCH ESO DET WIN1 UIT1 = 3600. / user defined subintegration time HIERARCH ESO DET WIN1 DIT1 = 3600.00253 / actual subintegration time HIERARCH ESO DET WIN1 DKTM = 3600.0357 / Dark current time HIERARCH ESO DET SHUT TYPE = 'Slit ' / type of shutter HIERARCH ESO DET SHUT ID = 'ccd shutter' / Shutter unique identifier HIERARCH ESO DET SHUT TMOPEN = 0.038 / Time taken to open shutter HIERARCH ESO DET SHUT TMCLOS = 0.043 / Time taken to close shutter HIERARCH ESO DET TELE INT = 60. / Interval between two successive teHIERARCH ESO DET TELE NO = 3 / # of sources active HIERARCH ESO DET TLM1 NAME = 'CCD T1 ' / Description of telemetry param. HIERARCH ESO DET TLM1 ID = 'CCD Sensor1' / ID of telemetry sensor HIERARCH ESO DET TLM1 START = 135. / Telemetry value at read start HIERARCH ESO DET TLM1 END = 135. / Telemetry value at read completionHIERARCH ESO DET TLM2 NAME = 'CCD T2 ' / Description of telemetry param. HIERARCH ESO DET TLM2 ID = 'CCD Sensor2' / ID of telemetry sensor HIERARCH ESO DET TLM2 START = 135.2 / Telemetry value at read start HIERARCH ESO DET TLM2 END = 135.2 / Telemetry value at read completionHIERARCH ESO DET TLM3 NAME = 'EBOX T ' / Description of telemetry param. HIERARCH ESO DET TLM3 ID = 'Box Temp' / ID of telemetry sensor HIERARCH ESO DET TLM3 START = 283.2 / Telemetry value at read start HIERARCH ESO DET TLM3 END = 283.2 / Telemetry value at read completionHIERARCH ESO PRO CATG = 'MER2D_SCI_POINT_BLUE' / Category of pipeline product fHIERARCH ESO PRO TYPE = 'RED ' / Product type HIERARCH ESO PRO REDLEVEL = 'PHOTOMETRIC,GEOMETRIC' / Reduction level of daHIERARCH ESO PRO REC1 STATUS = 'OK ' / Pipeline status of frame HIERARCH ESO PRO DATAAVG = -16.88 / Mean of pixel values HIERARCH ESO PRO DATARMS = 15597.7 / Standard deviation of pixel valuesHIERARCH ESO PRO DATAMED = 5.43116 / Median of pixel values HIERARCH ESO PRO REC1 START = '2002-09-27T16:01:44' / Date when recipe executHIERARCH ESO PRO REC1 RAW1 NAME= 'UVES.2001-06-21T04:02:53.174_stk.fits' / File HIERARCH ESO PRO REC1 RAW1 CATG= 'SCI_POINT_BLUE' / Frame category of raw frame HIERARCH ESO PRO REC1 CAL1 NAME= 'UV_PDRS_010620A_BLUE346d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL1 CATG= 'DRS_SETUP_BLUE' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL2 NAME= 'UV_PORD_010620A_BLUE346d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL2 CATG= 'ORDER_TABLE_BLUE' / Frame category of calibratHIERARCH ESO PRO REC1 CAL3 NAME= 'UV_PBKG_010620A_BLUE346d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL3 CATG= 'BACKGR_TABLE_BLUE' / Frame category of calibraHIERARCH ESO PRO REC1 CAL4 NAME= 'UV_PLI1_010620A_BLUE346d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL4 CATG= 'LINE_TABLE_BLUE1' / Frame category of calibratHIERARCH ESO PRO REC1 CAL5 NAME= 'UV_PLI2_010620A_BLUE346d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL5 CATG= 'LINE_TABLE_BLUE2' / Frame category of calibratHIERARCH ESO PRO REC1 CAL6 NAME= 'UV_PLI3_010620A_BLUE346d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL6 CATG= 'LINE_TABLE_BLUE3' / Frame category of calibratHIERARCH ESO PRO REC1 CAL7 NAME= 'UV_MBIA_010617A_BLUE_2x2.fits' / File name of HIERARCH ESO PRO REC1 CAL7 CATG= 'MASTER_BIAS_BLUE' / Frame category of calibratHIERARCH ESO PRO REC1 CAL8 NAME= 'UV_MFLT_010620A_BLUE346d1_2x2.fits' / File namHIERARCH ESO PRO REC1 CAL8 CATG= 'MASTER_FLAT_BLUE' / Frame category of calibratHIERARCH ESO PRO REC1 PARAM1 NAME = 'FFMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM1 SVALUE = 'E ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM2 NAME = 'EXMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM2 SVALUE = 'OPTIMAL ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM3 NAME = 'BGMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM3 SVALUE = 'MEDIAN ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM4 NAME = 'INTMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM4 SVALUE = 'Y,Y,Y ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM5 NAME = 'MTD2D ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM5 SVALUE = 'Y,MIN,E,A' / Value of recipe parameterHIERARCH ESO PRO REC1 STOP = '2002-09-27T16:06:26' / Date when recipe executHIERARCH ESO PRO DID = 'PRO-1.15' / Data dictionary for PRO HIERARCH ESO PRO DO ID = 'DO-1_16 ' / Data Organizer identification ID HIERARCH ESO PRO RBS ID= 'RBS-1_11' / Reduction Block Scheduler identification IHIERARCH ESO PRO REC1 ID = 'uves_obs_scired' / Pipeline recipe (unique) idHIERARCH ESO PRO REC1 DRS ID = 'MIDAS/02FEBpl1.1' / Data Reduction System idenHIERARCH ESO PRO REC1 PIPE ID = 'uves/1.3.3' / Pipeline (unique) identifier HIERARCH ESO PRO REC1 RB ID = 'sky_346_1.rX' / Reduction Block identifier HIERARCH ESO PRO ARCFILE = 'UVES.2001-06-21T04:02:53.174.fits' / Archive f HISTORY ESO-DESCRIPTORS START ................ HISTORY 'CRVAL','R*8',1,2,'3E23.15' HISTORY 3.042832528350001E+03 1.000000000000000E+00 HISTORY HISTORY 'BIAS_SUBTR','C*1',1,3,'3A1' HISTORY YES HISTORY HISTORY 'BACKGROUND','C*1',1,11,'11A1' HISTORY subtracted HISTORY HISTORY 'WSTART','R*8',1,594,'3E23.15' HISTORY 3.043457521300003E+03 3.043457521300003E+03 3.043457521300003E+03 HISTORY 3.043457521300003E+03 3.043457521300003E+03 3.043457521300003E+03 HISTORY 3.043457521300003E+03 3.043457521300003E+03 3.043457521300003E+03 HISTORY 3.043457521300003E+03 3.043457521300003E+03 3.043457521300003E+03 HISTORY 3.043457521300003E+03 3.043457521300003E+03 3.043457521300003E+03 HISTORY 3.043457521300003E+03 3.043457521300003E+03 3.043457521300003E+03 HISTORY 3.063646128500000E+03 3.063646128500000E+03 3.063646128500000E+03 HISTORY 3.063646128500000E+03 3.063646128500000E+03 3.063646128500000E+03 HISTORY 3.063646128500000E+03 3.063646128500000E+03 3.063646128500000E+03 HISTORY 3.063646128500000E+03 3.063646128500000E+03 3.063646128500000E+03 HISTORY 3.063646128500000E+03 3.063646128500000E+03 3.063646128500000E+03 HISTORY 3.063646128500000E+03 3.063646128500000E+03 3.063646128500000E+03 HISTORY 3.084109580600003E+03 3.084109580600003E+03 3.084109580600003E+03 HISTORY 3.084109580600003E+03 3.084109580600003E+03 3.084109580600003E+03 HISTORY 3.084109580600003E+03 3.084109580600003E+03 3.084109580600003E+03 HISTORY 3.084109580600003E+03 3.084109580600003E+03 3.084109580600003E+03 HISTORY 3.084109580600003E+03 3.084109580600003E+03 3.084109580600003E+03 HISTORY 3.084109580600003E+03 3.084109580600003E+03 3.084109580600003E+03 HISTORY 3.104822891700001E+03 3.104822891700001E+03 3.104822891700001E+03 HISTORY 3.104822891700001E+03 3.104822891700001E+03 3.104822891700001E+03 HISTORY 3.104822891700001E+03 3.104822891700001E+03 3.104822891700001E+03 HISTORY 3.104822891700001E+03 3.104822891700001E+03 3.104822891700001E+03 HISTORY 3.104822891700001E+03 3.104822891700001E+03 3.104822891700001E+03 HISTORY 3.104822891700001E+03 3.104822891700001E+03 3.104822891700001E+03 HISTORY 3.125836033600001E+03 3.125836033600001E+03 3.125836033600001E+03 HISTORY 3.125836033600001E+03 3.125836033600001E+03 3.125836033600001E+03 HISTORY 3.125836033600001E+03 3.125836033600001E+03 3.125836033600001E+03 HISTORY 3.125836033600001E+03 3.125836033600001E+03 3.125836033600001E+03 HISTORY 3.125836033600001E+03 3.125836033600001E+03 3.125836033600001E+03 HISTORY 3.125836033600001E+03 3.125836033600001E+03 3.125836033600001E+03 HISTORY 3.147124020400001E+03 3.147124020400001E+03 3.147124020400001E+03 HISTORY 3.147124020400001E+03 3.147124020400001E+03 3.147124020400001E+03 HISTORY 3.147124020400001E+03 3.147124020400001E+03 3.147124020400001E+03 HISTORY 3.147124020400001E+03 3.147124020400001E+03 3.147124020400001E+03 HISTORY 3.147124020400001E+03 3.147124020400001E+03 3.147124020400001E+03 HISTORY 3.147124020400001E+03 3.147124020400001E+03 3.147124020400001E+03 HISTORY 3.168711838000002E+03 3.168711838000002E+03 3.168711838000002E+03 HISTORY 3.168711838000002E+03 3.168711838000002E+03 3.168711838000002E+03 HISTORY 3.168711838000002E+03 3.168711838000002E+03 3.168711838000002E+03 HISTORY 3.168711838000002E+03 3.168711838000002E+03 3.168711838000002E+03 HISTORY 3.168711838000002E+03 3.168711838000002E+03 3.168711838000002E+03 HISTORY 3.168711838000002E+03 3.168711838000002E+03 3.168711838000002E+03 HISTORY 3.190599486399999E+03 3.190599486399999E+03 3.190599486399999E+03 HISTORY 3.190599486399999E+03 3.190599486399999E+03 3.190599486399999E+03 HISTORY 3.190599486399999E+03 3.190599486399999E+03 3.190599486399999E+03 HISTORY 3.190599486399999E+03 3.190599486399999E+03 3.190599486399999E+03 HISTORY 3.190599486399999E+03 3.190599486399999E+03 3.190599486399999E+03 HISTORY 3.190599486399999E+03 3.190599486399999E+03 3.190599486399999E+03 HISTORY 3.212786965600003E+03 3.212786965600003E+03 3.212786965600003E+03 HISTORY 3.212786965600003E+03 3.212786965600003E+03 3.212786965600003E+03 HISTORY 3.212786965600003E+03 3.212786965600003E+03 3.212786965600003E+03 HISTORY 3.212786965600003E+03 3.212786965600003E+03 3.212786965600003E+03 HISTORY 3.212786965600003E+03 3.212786965600003E+03 3.212786965600003E+03 HISTORY 3.212786965600003E+03 3.212786965600003E+03 3.212786965600003E+03 HISTORY 3.235274275600003E+03 3.235274275600003E+03 3.235274275600003E+03 HISTORY 3.235274275600003E+03 3.235274275600003E+03 3.235274275600003E+03 HISTORY 3.235274275600003E+03 3.235274275600003E+03 3.235274275600003E+03 HISTORY 3.235274275600003E+03 3.235274275600003E+03 3.235274275600003E+03 HISTORY 3.235274275600003E+03 3.235274275600003E+03 3.235274275600003E+03 HISTORY 3.235274275600003E+03 3.235274275600003E+03 3.235274275600003E+03 HISTORY 3.258086402299999E+03 3.258086402299999E+03 3.258086402299999E+03 HISTORY 3.258086402299999E+03 3.258086402299999E+03 3.258086402299999E+03 HISTORY 3.258086402299999E+03 3.258086402299999E+03 3.258086402299999E+03 HISTORY 3.258086402299999E+03 3.258086402299999E+03 3.258086402299999E+03 HISTORY 3.258086402299999E+03 3.258086402299999E+03 3.258086402299999E+03 HISTORY 3.258086402299999E+03 3.258086402299999E+03 3.258086402299999E+03 HISTORY 3.281198359800002E+03 3.281198359800002E+03 3.281198359800002E+03 HISTORY 3.281198359800002E+03 3.281198359800002E+03 3.281198359800002E+03 HISTORY 3.281198359800002E+03 3.281198359800002E+03 3.281198359800002E+03 HISTORY 3.281198359800002E+03 3.281198359800002E+03 3.281198359800002E+03 HISTORY 3.281198359800002E+03 3.281198359800002E+03 3.281198359800002E+03 HISTORY 3.281198359800002E+03 3.281198359800002E+03 3.281198359800002E+03 HISTORY 3.304660119900002E+03 3.304660119900002E+03 3.304660119900002E+03 HISTORY 3.304660119900002E+03 3.304660119900002E+03 3.304660119900002E+03 HISTORY 3.304660119900002E+03 3.304660119900002E+03 3.304660119900002E+03 HISTORY 3.304660119900002E+03 3.304660119900002E+03 3.304660119900002E+03 HISTORY 3.304660119900002E+03 3.304660119900002E+03 3.304660119900002E+03 HISTORY 3.304660119900002E+03 3.304660119900002E+03 3.304660119900002E+03 HISTORY 3.328471682599999E+03 3.328471682599999E+03 3.328471682599999E+03 HISTORY 3.328471682599999E+03 3.328471682599999E+03 3.328471682599999E+03 HISTORY 3.328471682599999E+03 3.328471682599999E+03 3.328471682599999E+03 HISTORY 3.328471682599999E+03 3.328471682599999E+03 3.328471682599999E+03 HISTORY 3.328471682599999E+03 3.328471682599999E+03 3.328471682599999E+03 HISTORY 3.328471682599999E+03 3.328471682599999E+03 3.328471682599999E+03 HISTORY 3.352608062000003E+03 3.352608062000003E+03 3.352608062000003E+03 HISTORY 3.352608062000003E+03 3.352608062000003E+03 3.352608062000003E+03 HISTORY 3.352608062000003E+03 3.352608062000003E+03 3.352608062000003E+03 HISTORY 3.352608062000003E+03 3.352608062000003E+03 3.352608062000003E+03 HISTORY 3.352608062000003E+03 3.352608062000003E+03 3.352608062000003E+03 HISTORY 3.352608062000003E+03 3.352608062000003E+03 3.352608062000003E+03 HISTORY 3.377119229899999E+03 3.377119229899999E+03 3.377119229899999E+03 HISTORY 3.377119229899999E+03 3.377119229899999E+03 3.377119229899999E+03 HISTORY 3.377119229899999E+03 3.377119229899999E+03 3.377119229899999E+03 HISTORY 3.377119229899999E+03 3.377119229899999E+03 3.377119229899999E+03 HISTORY 3.377119229899999E+03 3.377119229899999E+03 3.377119229899999E+03 HISTORY 3.377119229899999E+03 3.377119229899999E+03 3.377119229899999E+03 HISTORY 3.401980200400003E+03 3.401980200400003E+03 3.401980200400003E+03 HISTORY 3.401980200400003E+03 3.401980200400003E+03 3.401980200400003E+03 HISTORY 3.401980200400003E+03 3.401980200400003E+03 3.401980200400003E+03 HISTORY 3.401980200400003E+03 3.401980200400003E+03 3.401980200400003E+03 HISTORY 3.401980200400003E+03 3.401980200400003E+03 3.401980200400003E+03 HISTORY 3.401980200400003E+03 3.401980200400003E+03 3.401980200400003E+03 HISTORY 3.427190973499999E+03 3.427190973499999E+03 3.427190973499999E+03 HISTORY 3.427190973499999E+03 3.427190973499999E+03 3.427190973499999E+03 HISTORY 3.427190973499999E+03 3.427190973499999E+03 3.427190973499999E+03 HISTORY 3.427190973499999E+03 3.427190973499999E+03 3.427190973499999E+03 HISTORY 3.427190973499999E+03 3.427190973499999E+03 3.427190973499999E+03 HISTORY 3.427190973499999E+03 3.427190973499999E+03 3.427190973499999E+03 HISTORY 3.452801520999999E+03 3.452801520999999E+03 3.452801520999999E+03 HISTORY 3.452801520999999E+03 3.452801520999999E+03 3.452801520999999E+03 HISTORY 3.452801520999999E+03 3.452801520999999E+03 3.452801520999999E+03 HISTORY 3.452801520999999E+03 3.452801520999999E+03 3.452801520999999E+03 HISTORY 3.452801520999999E+03 3.452801520999999E+03 3.452801520999999E+03 HISTORY 3.452801520999999E+03 3.452801520999999E+03 3.452801520999999E+03 HISTORY 3.478786857000001E+03 3.478786857000001E+03 3.478786857000001E+03 HISTORY 3.478786857000001E+03 3.478786857000001E+03 3.478786857000001E+03 HISTORY 3.478786857000001E+03 3.478786857000001E+03 3.478786857000001E+03 HISTORY 3.478786857000001E+03 3.478786857000001E+03 3.478786857000001E+03 HISTORY 3.478786857000001E+03 3.478786857000001E+03 3.478786857000001E+03 HISTORY 3.478786857000001E+03 3.478786857000001E+03 3.478786857000001E+03 HISTORY 3.505171967400001E+03 3.505171967400001E+03 3.505171967400001E+03 HISTORY 3.505171967400001E+03 3.505171967400001E+03 3.505171967400001E+03 HISTORY 3.505171967400001E+03 3.505171967400001E+03 3.505171967400001E+03 HISTORY 3.505171967400001E+03 3.505171967400001E+03 3.505171967400001E+03 HISTORY 3.505171967400001E+03 3.505171967400001E+03 3.505171967400001E+03 HISTORY 3.505171967400001E+03 3.505171967400001E+03 3.505171967400001E+03 HISTORY 3.531956852200010E+03 3.531956852200010E+03 3.531956852200010E+03 HISTORY 3.531956852200010E+03 3.531956852200010E+03 3.531956852200010E+03 HISTORY 3.531956852200010E+03 3.531956852200010E+03 3.531956852200010E+03 HISTORY 3.531956852200010E+03 3.531956852200010E+03 3.531956852200010E+03 HISTORY 3.531956852200010E+03 3.531956852200010E+03 3.531956852200010E+03 HISTORY 3.531956852200010E+03 3.531956852200010E+03 3.531956852200010E+03 HISTORY 3.559141511400001E+03 3.559141511400001E+03 3.559141511400001E+03 HISTORY 3.559141511400001E+03 3.559141511400001E+03 3.559141511400001E+03 HISTORY 3.559141511400001E+03 3.559141511400001E+03 3.559141511400001E+03 HISTORY 3.559141511400001E+03 3.559141511400001E+03 3.559141511400001E+03 HISTORY 3.559141511400001E+03 3.559141511400001E+03 3.559141511400001E+03 HISTORY 3.559141511400001E+03 3.559141511400001E+03 3.559141511400001E+03 HISTORY 3.586750930900002E+03 3.586750930900002E+03 3.586750930900002E+03 HISTORY 3.586750930900002E+03 3.586750930900002E+03 3.586750930900002E+03 HISTORY 3.586750930900002E+03 3.586750930900002E+03 3.586750930900002E+03 HISTORY 3.586750930900002E+03 3.586750930900002E+03 3.586750930900002E+03 HISTORY 3.586750930900002E+03 3.586750930900002E+03 3.586750930900002E+03 HISTORY 3.586750930900002E+03 3.586750930900002E+03 3.586750930900002E+03 HISTORY 3.614810096600002E+03 3.614810096600002E+03 3.614810096600002E+03 HISTORY 3.614810096600002E+03 3.614810096600002E+03 3.614810096600002E+03 HISTORY 3.614810096600002E+03 3.614810096600002E+03 3.614810096600002E+03 HISTORY 3.614810096600002E+03 3.614810096600002E+03 3.614810096600002E+03 HISTORY 3.614810096600002E+03 3.614810096600002E+03 3.614810096600002E+03 HISTORY 3.614810096600002E+03 3.614810096600002E+03 3.614810096600002E+03 HISTORY 3.643294022600011E+03 3.643294022600011E+03 3.643294022600011E+03 HISTORY 3.643294022600011E+03 3.643294022600011E+03 3.643294022600011E+03 HISTORY 3.643294022600011E+03 3.643294022600011E+03 3.643294022600011E+03 HISTORY 3.643294022600011E+03 3.643294022600011E+03 3.643294022600011E+03 HISTORY 3.643294022600011E+03 3.643294022600011E+03 3.643294022600011E+03 HISTORY 3.643294022600011E+03 3.643294022600011E+03 3.643294022600011E+03 HISTORY 3.672227694800011E+03 3.672227694800011E+03 3.672227694800011E+03 HISTORY 3.672227694800011E+03 3.672227694800011E+03 3.672227694800011E+03 HISTORY 3.672227694800011E+03 3.672227694800011E+03 3.672227694800011E+03 HISTORY 3.672227694800011E+03 3.672227694800011E+03 3.672227694800011E+03 HISTORY 3.672227694800011E+03 3.672227694800011E+03 3.672227694800011E+03 HISTORY 3.672227694800011E+03 3.672227694800011E+03 3.672227694800011E+03 HISTORY 3.701636099100011E+03 3.701636099100011E+03 3.701636099100011E+03 HISTORY 3.701636099100011E+03 3.701636099100011E+03 3.701636099100011E+03 HISTORY 3.701636099100011E+03 3.701636099100011E+03 3.701636099100011E+03 HISTORY 3.701636099100011E+03 3.701636099100011E+03 3.701636099100011E+03 HISTORY 3.701636099100011E+03 3.701636099100011E+03 3.701636099100011E+03 HISTORY 3.701636099100011E+03 3.701636099100011E+03 3.701636099100011E+03 HISTORY 3.731519235499999E+03 3.731519235499999E+03 3.731519235499999E+03 HISTORY 3.731519235499999E+03 3.731519235499999E+03 3.731519235499999E+03 HISTORY 3.731519235499999E+03 3.731519235499999E+03 3.731519235499999E+03 HISTORY 3.731519235499999E+03 3.731519235499999E+03 3.731519235499999E+03 HISTORY 3.731519235499999E+03 3.731519235499999E+03 3.731519235499999E+03 HISTORY 3.731519235499999E+03 3.731519235499999E+03 3.731519235499999E+03 HISTORY 3.761877104000010E+03 3.761877104000010E+03 3.761877104000010E+03 HISTORY 3.761877104000010E+03 3.761877104000010E+03 3.761877104000010E+03 HISTORY 3.761877104000010E+03 3.761877104000010E+03 3.761877104000010E+03 HISTORY 3.761877104000010E+03 3.761877104000010E+03 3.761877104000010E+03 HISTORY 3.761877104000010E+03 3.761877104000010E+03 3.761877104000010E+03 HISTORY 3.761877104000010E+03 3.761877104000010E+03 3.761877104000010E+03 HISTORY 3.792709704600010E+03 3.792709704600010E+03 3.792709704600010E+03 HISTORY 3.792709704600010E+03 3.792709704600010E+03 3.792709704600010E+03 HISTORY 3.792709704600010E+03 3.792709704600010E+03 3.792709704600010E+03 HISTORY 3.792709704600010E+03 3.792709704600010E+03 3.792709704600010E+03 HISTORY 3.792709704600010E+03 3.792709704600010E+03 3.792709704600010E+03 HISTORY 3.792709704600010E+03 3.792709704600010E+03 3.792709704600010E+03 HISTORY 3.824091995000002E+03 3.824091995000002E+03 3.824091995000002E+03 HISTORY 3.824091995000002E+03 3.824091995000002E+03 3.824091995000002E+03 HISTORY 3.824091995000002E+03 3.824091995000002E+03 3.824091995000002E+03 HISTORY 3.824091995000002E+03 3.824091995000002E+03 3.824091995000002E+03 HISTORY 3.824091995000002E+03 3.824091995000002E+03 3.824091995000002E+03 HISTORY 3.824091995000002E+03 3.824091995000002E+03 3.824091995000002E+03 HISTORY 3.855974003400001E+03 3.855974003400001E+03 3.855974003400001E+03 HISTORY 3.855974003400001E+03 3.855974003400001E+03 3.855974003400001E+03 HISTORY 3.855974003400001E+03 3.855974003400001E+03 3.855974003400001E+03 HISTORY 3.855974003400001E+03 3.855974003400001E+03 3.855974003400001E+03 HISTORY 3.855974003400001E+03 3.855974003400001E+03 3.855974003400001E+03 HISTORY 3.855974003400001E+03 3.855974003400001E+03 3.855974003400001E+03 HISTORY HISTORY 'NPTOT','I*4',1,594,'7I10' HISTORY 1934 1946 1957 1969 1981 1994 2006 HISTORY 2019 2032 2045 2058 2072 2085 2099 HISTORY 2113 2128 2142 2157 2172 2188 2203 HISTORY 2219 2235 2251 2268 2285 2302 2320 HISTORY 2338 2356 2375 2394 2414 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 0 HISTORY 0 0 0 0 0 0 HISTORY HISTORY 'NORDER','I*4',1,594,'7I10' HISTORY 152 151 150 149 148 147 146 HISTORY 145 144 143 142 141 140 139 HISTORY 138 137 136 135 134 133 132 HISTORY 131 130 129 128 127 126 125 HISTORY 124 123 122 121 120 119 118 HISTORY 117 116 115 114 113 112 111 HISTORY 110 109 108 107 106 105 104 HISTORY 103 102 101 100 99 98 97 HISTORY 96 95 94 93 92 91 90 HISTORY 89 88 87 86 85 84 83 HISTORY 82 81 80 79 78 77 76 HISTORY 75 74 73 72 71 70 69 HISTORY 68 67 66 65 64 63 62 HISTORY 61 60 59 58 57 56 55 HISTORY 54 53 52 51 50 49 48 HISTORY 47 46 45 44 43 42 41 HISTORY 40 39 38 37 36 35 34 HISTORY 33 32 31 30 29 28 27 HISTORY 26 25 24 23 22 21 20 HISTORY 19 18 17 16 15 14 13 HISTORY 12 11 10 9 8 7 6 HISTORY 5 4 3 2 1 0 -1 HISTORY -2 -3 -4 -5 -6 -7 -8 HISTORY -9 -10 -11 -12 -13 -14 -15 HISTORY -16 -17 -18 -19 -20 -21 -22 HISTORY -23 -24 -25 -26 -27 -28 -29 HISTORY -30 -31 -32 -33 -34 -35 -36 HISTORY -37 -38 -39 -40 -41 -42 -43 HISTORY -44 -45 -46 -47 -48 -49 -50 HISTORY -51 -52 -53 -54 -55 -56 -57 HISTORY -58 -59 -60 -61 -62 -63 -64 HISTORY -65 -66 -67 -68 -69 -70 -71 HISTORY -72 -73 -74 -75 -76 -77 -78 HISTORY -79 -80 -81 -82 -83 -84 -85 HISTORY -86 -87 -88 -89 -90 -91 -92 HISTORY -93 -94 -95 -96 -97 -98 -99 HISTORY -100 -101 -102 -103 -104 -105 -106 HISTORY -107 -108 -109 -110 -111 -112 -113 HISTORY -114 -115 -116 -117 -118 -119 -120 HISTORY -121 -122 -123 -124 -125 -126 -127 HISTORY -128 -129 -130 -131 -132 -133 -134 HISTORY -135 -136 -137 -138 -139 -140 -141 HISTORY -142 -143 -144 -145 -146 -147 -148 HISTORY -149 -150 -151 -152 -153 -154 -155 HISTORY -156 -157 -158 -159 -160 -161 -162 HISTORY -163 -164 -165 -166 -167 -168 -169 HISTORY -170 -171 -172 -173 -174 -175 -176 HISTORY -177 -178 -179 -180 -181 -182 -183 HISTORY -184 -185 -186 -187 -188 -189 -190 HISTORY -191 -192 -193 -194 -195 -196 -197 HISTORY -198 -199 -200 -201 -202 -203 -204 HISTORY -205 -206 -207 -208 -209 -210 -211 HISTORY -212 -213 -214 -215 -216 -217 -218 HISTORY -219 -220 -221 -222 -223 -224 -225 HISTORY -226 -227 -228 -229 -230 -231 -232 HISTORY -233 -234 -235 -236 -237 -238 -239 HISTORY -240 -241 -242 -243 -244 -245 -246 HISTORY -247 -248 -249 -250 -251 -252 -253 HISTORY -254 -255 -256 -257 -258 -259 -260 HISTORY -261 -262 -263 -264 -265 -266 -267 HISTORY -268 -269 -270 -271 -272 -273 -274 HISTORY -275 -276 -277 -278 -279 -280 -281 HISTORY -282 -283 -284 -285 -286 -287 -288 HISTORY -289 -290 -291 -292 -293 -294 -295 HISTORY -296 -297 -298 -299 -300 -301 -302 HISTORY -303 -304 -305 -306 -307 -308 -309 HISTORY -310 -311 -312 -313 -314 -315 -316 HISTORY -317 -318 -319 -320 -321 -322 -323 HISTORY -324 -325 -326 -327 -328 -329 -330 HISTORY -331 -332 -333 -334 -335 -336 -337 HISTORY -338 -339 -340 -341 -342 -343 -344 HISTORY -345 -346 -347 -348 -349 -350 -351 HISTORY -352 -353 -354 -355 -356 -357 -358 HISTORY -359 -360 -361 -362 -363 -364 -365 HISTORY -366 -367 -368 -369 -370 -371 -372 HISTORY -373 -374 -375 -376 -377 -378 -379 HISTORY -380 -381 -382 -383 -384 -385 -386 HISTORY -387 -388 -389 -390 -391 -392 -393 HISTORY -394 -395 -396 -397 -398 -399 -400 HISTORY -401 -402 -403 -404 -405 -406 -407 HISTORY -408 -409 -410 -411 -412 -413 -414 HISTORY -415 -416 -417 -418 -419 -420 -421 HISTORY -422 -423 -424 -425 -426 -427 -428 HISTORY -429 -430 -431 -432 -433 -434 -435 HISTORY -436 -437 -438 -439 -440 -441 HISTORY HISTORY 'SHORTLOG','C*50',1,4,'70A1' HISTORY Recipe log (Fr, 27 Sep 2002 16:06:22): Science reduction do HISTORY ne. 2d Science reduction done. HISTORY .................................................. HISTORY HISTORY 'REDBLOCK','C*48',1,31,'70A1' HISTORY recipe: uves_obs_scired instrument: uves HISTORY /raid52_uves/calib/UVESSKY/files/r.UVES.2001 HISTORY -06-21T04:02:53.174 { HISTORY /uvesy/data/raw/2001-06-20/UVES.2001-06- HISTORY 21T04:02:53.174_stk.fits SCI_POINT_BLUE } HISTORY { HISTORY /raid52_uves/calib/2001-06-20/UV_PDRS_010620A_BLUE346d1_2x HISTORY 2.tfits DRS_SETUP_BLUE /raid52_uves/calib/2001-06-20/UV HISTORY _PORD_010620A_BLUE346d1_2x2.tfits ORDER_TABLE_BLUE /raid5 HISTORY 2_uves/calib/2001-06-20/UV_PBKG_010620A_BLUE346d1_2x2.tfits BACKGR_TAB HISTORY LE_BLUE /raid52_uves/calib/2001-06-20/UV_PLI1_010620A_BLUE HISTORY 346d1_2x2.tfits LINE_TABLE_BLUE1 /raid52_uves/calib/2001- HISTORY 06-20/UV_PLI2_010620A_BLUE346d1_2x2.tfits LINE_TABLE_BLUE2 HISTORY /raid52_uves/calib/2001-06-20/UV_PLI3_010620A_BLUE346d1_2x2.tfits LI HISTORY NE_TABLE_BLUE3 /raid52_uves/calib/2001-06-20/UV_MBIA_0106 HISTORY 17A_BLUE_2x2.fits MASTER_BIAS_BLUE /raid52_uves/cal HISTORY ib/2001-06-20/UV_MFLT_010620A_BLUE346d1_2x2.fits MASTER_FLAT_BLUE HISTORY } E HISTORY OPTIMAL HISTORY MEDIAN Y HISTORY Y,MIN,E,A HISTORY HISTORY HISTORY 'LHCUTS','R*4',1,4,'5E14.7' HISTORY 0.0000000E+00 0.0000000E+00-1.2712482E+00 2.2486167E+00 HISTORY HISTORY ESO-DESCRIPTORS END ................ END ¾ï ¾g<²¾S_¾žð|>H?Ó?L>Å“½¤P}>ÿ[=ŒÆñ¼`rÞ=ôÛc»Smx=™h@>ùBr>¼L ¾Ée$¾£Â¾­k_¾ÜI_¾»0¾Ñ¹¾~`¾ÒW¾óX¾€»½È>t½bïÆ>–¡ž?Lo>µäô½ÕßÛ¼í>.>níß»ù1×¾4&^>;"…>ȧv?ëK>Ý\¶=Pì¼íw>S?×]?n¾ì?^? -×È><ä¼Ìó:= ïA>L‡­>…Øx=íAm=Çø2>Îκ?¾?au>Ã¥>Ò-Z?^v"?‚Úì?·w?}ùè?ŽfÞ?f³?Gc?)+?4›X?8˜>Õðå>p‰=REU¾.j ¾bcå=3+¦>Lk½!¥¾%Ž4¾ Do<ÚHˆ>£ì€>ì’>­¿>ëz®>Ç>Q>a>Õ¿>:îï½Ë«¼ÇúÍ>¦î?Kõ?<è>ñ§ž¼„v¾ží¾~¶’¾^®3?À?ïœ?‘A`>œ£>„°v>ÕC?N \?©ü?ÆÑ?‡,>Üh>Xmù>½Ê<…î¡=ºR'=Èßë>Ç>‘)g?N%?+Â>ì¥Ï>UZ>wâ>ÐðT?÷A>"ìR½ãñ¾PæÀ¾ˆ§Ã=Êë(>|[ë=áì.=ü+‡>ë>Þ1·?¸ì?ƒR?]Ÿ×?3i>™>¦9¥?É‘?žn>äÒ0>Œe.?Ð|?<\?}w7?Œt(?|E†?1­ø>òlÐ>¶æA=¦)N>5¾>ªFè?!x?‡èl??Ó >•®Š=7ö:?<?x¯?Ï«¾?ú¤?×ìC?„Ä·>éo>™¬;=~é4¾_> i >šàÌ>1B›>>?S> ~í>¾Rþ½$@¼¾g]½§Y=õ¸=:ä=FO9=ðF„=­¢õ<€‹F=Þ.=FªÝ>˜Çœ>ýà¸>™óB>mÚ>M`ü>×°’?Ž§>Š -¿ÄU¾ÚNu¾*bÛ=›Í5=g,¼ïK%¾;w>½ƒÝ½]½Ÿ:ê½C=‰=Žjå> 96<–k=‡¢=Ï•°=áC+<1ͽ¾¸½+†;[•½É©=ïÔ´?6CI?ÀnN@³×@éV?Œ?>Ç ö<K.½Šlý>Å+>é‘??2¿Î>ð@E>l<>‡u?%x>§•÷>j¬?Œ˜?À¸n?×?{A>º¸–>-³»><´B>·Ú>áÂW>Ê %>‡x‘>W9;>HÂ>‘3>› ¹:ãxk¾ˆp™½›•»¾G–¾•òõ¾!UX¹Wq>ãc>×7@>²¢%>%¢ë=6é}½,¬õ=Ö'–>p5ë>LvÌ>Ë>âo>Vàë>p^0>k,¶<þQ:¨ }=lV÷=áž>Ï{>Pøê>«#—? rÛ?]\Å?DÂ×>wÄ$©>(>MÜS>˜–Â>«Æ‘>€ðq>›k9>Æyd>ié¯=÷wé>LÌ%>Ã#Y>dÛ»B5 <ò¢>…6’?>+7?¾žj?ÞY:?®ã?~ô_>õK1>|Ùþ=Ÿ›b>¥ Y?AÛÅ?i:m?H4 >ñq>µ·>[¼Õ>ºP?@P/?¸ÚH?Äéµ?jý>Á =¿X>7Û¯>X„À>õ>ÑW?ô†>¼¡Â><;>£ù >Ð#Ÿ> ÿÿ>Šáù>¼\>Œ~¨>%ý=Ó蓽š¶f< ‘W>Sñ=úÎÙ>)äÙ>[®>#Ÿ<5'нDÁe=ûøY>B>0ÞZ¼zL½IþŒ½¢¹´0«>2¥>Žê">‹{!>ZS†>xyA>¡r‰>—Cð>x{>Œ|<?Š=ñ}ˆ>C±>Æ«>júV>† ­>†ß>@¼>¾$=Gîá=Ék‘>e´>-`»5ä;Ð>®<0VŠ½ôê½FÕü=Û¢K=û¡=ä_«=·ì>߈=ê·i=³HO>Ïü¼ ‹¾½3» ½}äQ¾\侟½»ÞË»ôlN¼(ù=]ê=°! >I„>H_Ú=Ç:P=↕>†Ò>ºê0>ÏÄ">ðåZ? ­?>ö?–VN?§­÷?nàf?J"'?;¬9?|„>¾÷ê>u:N? .ø?uQ¦?c<?3|>Òö‹=Ó *¼N*c>/%¸?s%?ˆUª?À|÷?²uL?6ö(>N‹;åS_=Þ=ò3=¼O,=ÓPo<”Ne½Á…=¹G=Üd¸=N¯£½@Pu½çt(¾0Æ:¯{ñ=æ’r=l=ëxì>ƒÌï>«B>­8þ>›>³=í»!¾%‚¾&ÿï=`@D>MY>Zß5=ò­¹»{ö=&Ñ=¨Å\=Æóf>É>? _>%tË=Û>_Ÿ>Ž^ ->­Ì¹>˜Ý>hº=Qž:=´Œr<šž½Žàß½¹ŒÂ¾"2j¼‡Ï >^Ùí>~´ü>œãª>²¼V>Ÿ•g>'=?¹ã¼‚%½\° -=UÓ6=†`>qº‚>çuà>:8u¼šUa7_Ñ>²`>ù*<Ìçî>-÷>¢´=µÜ…=»ëK=ãõ =” ±> -ûí=É'©=3ã/>Bµ>•¡î>în>>o9=¦¡`=iê»>ïéo?b(>?)Éí>¦½ß>*ˆ>ÃT…?<œ4?" -è>\EÝ<­¶S=†4i>‡BH>Äá¤> dÜ>t;Á>~aY>–7L>ÄÄ]>Öô?;ÿ?EÚË?[Å?FëÊ?S2¿?>!Ä? l>º/Û>ŸËå?{3?N¤? é&>Âw>€rO>cã> °©>YW>|a?Š×?‡¦“? ü6?p°‹>â<>.ǽ±'ؾY =°uO>ˆ>*†_>gæÑ>Zé½=ÞWð=Jw=‰R>=Ü^ =öXt>ûÄ> $c=¢ð/;”„ÿ<@ V»¯˜=´€Å>ï>(a¥>™,¥>’È=çU=‘)>6]=¿ È>–†%>¼\>[é>ù>gÜT>h@Ï>ªêà>šT*>ô£=ë“>€ßÁ>¶‚ô>ºÂ >¡º>t“$>NÀæ>ý­=N=KMÔ=ê =(b»Ì@¾>=M“>‚¸i=¼µ¬=ìO·>‰»~>—Ù >)Úâ=ê48=‘zÃ>Ç>+fó=ƒP)½6I‚½A!Å=—»²=ÙÒí<*´ -¾½„ -=h—ཇ¢½Ü¹»:×Î=ñ‘’>á¯È?‡5‹?Id=>”`þ=êå_½àÉö½ ±í5†±>•g3>cæs=ž“E<~<<ì¢j<þ<=¼>o=Ø>>>>r×> Üì<’±+,ÑT>pÌ–'‘_=ö„H>7á>eõ»>Zb>d3J>BñM»‰H#¾]–ľœþ¾;5=zÛ@=Ã{>3k®¼iÑ=†Üý¼¾\·¿6Ap½ŠŽö?OdÌ?†Ã®?žˆ+?dM?pWé?•ù?kðü?«ÿ?ã,ò? B…¾”Dò½©O~?3È ?„ßÐ>mux¿!Á¿H·‰¿5¤¾á¾MÁK¾à\_¾?$†?3ŒS?µ¶?Y[½ÛQ>®ON>îã?½|“¾,нüØ_:¶Àá¾ß5À¿‘+Ç¿UH¾Ü•²¿ eȾùü-¿}o¿†?6¿„˜Á¿$Ù½(¹ë=Ü`½=ß>ô¤W?úº>7 °¾,Úà>êô<»‘)‡>Í?MQ -? -‘ü>°>Óäð=[FT¿:ò¿&bp=¨D0¾¹îü¿Tx¾8GL>†K#>ƒØF<é”5½ãm¹=·¹P>Ž[Û>'*s¾¾"Ž>¾P+¾IJ½Ù(õ>3Ø?IöR>ÈRq:»¾="&w=n› >–m>ölá?>ÊE?r›=ÝO =¶Ðh>`L³¾Iª¾m]D>Žá>ò+ù>ò|ö>­©Œ>&T=/.r¾D‚~½†¸z½\ÒѾ¤ýF¾–0~¾`ï.½õ?G+?YC¹¾¦í¾€l›>—«À>̵I>Œ5ˆ>i½€>Â`Þ>§Ñ>#ê½u¡.>9­d>úf\>5C=!2ì½sÍG½Ó¼Úg=ñ”?*g[?*D0>¯*=>·ý'>¼ ‡>F–>Yqç>«x=:ɽ½K.}½çÕļŒ©½…(-¾… ʾ–*:¾4y%¾!k×?Ž?܇`?‚<ó? -† ?“Ã?Û³b?›Bž?‰>ÆÈ?Ò ?£`>Ìf{¾=â¾ÊRá½øj>\ç¨>‡x6>Bg=šó×»®%>‰S]?%‘j?•¦>4Pê;+±=*_!=g¶›>'w_?1U”?…9?÷>›·¾µê=ïáq>Ð9>Ħ>Bêì=çØ>%à°=ˆ‰ä;jç¸="ºt¼;Oh=‚Qç=Ïس¾r¾{ºÙ¾²ü}¾óo›¾oš2=g¦Á=$Ê =nz½CX½å³k½,ç‰=É¿j?Ê3>§Á¾ª4ܾ,Á]½ù§Ñ¾çž„¾ -Ô<’ä(=€n¯>óy-?›Œ0?ÜÃ%?V(æ=.®½yD >?Q+>®IF>ƒôÓ>T«†>&ô†=ˆ!‘½Oƒ=•Í>ÌýA>¼r´>D})>–>ïŸí?±/?ão=×èÙM=ï·£>ÆùH?Ž>”ØG½n† ½a;= ¥>’q/>ÆÁä>¡þ»=·\½C0=ÁŸ›>ùJ§?)+û>èI·>3>t!9>Y†³=¯ê«>P?HlP?ˆ»>¾±… ¾Š·w½Ïóü½AÇ<4í<<‹”N¼Ñ#=ŠX5>¦">8˜½^B>š_1>͸“>êŸm?3µ?Õ3>¨C˜½[Ç!¼±4Š¼&Ä“½ I>ŸGè?ß>É(‡>ª|>Ö…X>ä^¯>°Ûã=€¬±¾tÇo½<”*<¸–A>7”â>Á,`>Òw>âM›?ã >´}Ú>p„»>6O¿>€@ì>¾šÝ>¹ùù>¾*¼>¯Ê>˜ª‹=ðæ=ÞŒ×>š-$>ËÂ(>œ#>bQ>·’à>¡Ð£>ˆÉ¬>}¿x>¼Ž>µyk=‹ú>]Ë'>`bd=@`+>;VÚ>¥JÅ>Ù° >›`>šúE>œâ»=Yx><Äv>®;ÿ>¦œR?á©?kÌ>ô[>Œ[ª>Ehå>-¾§>pøD>ƒ™ ->ZY&=¡‡>_#Ö>ÿ?]Ň?C÷?Óp?|>š˜¼>/•…>6E>Êð>¶ >_Œ¸>%V=Àª¤> v>q K=€l=KË«>ˆ ¯>+Æ=Õ¬±=[Ò8½ /à>'c2>ߟ”?µð>@åI¾q92¾4{‹½‘5š ²>…·œ>’Ó=Rt>š>¶Yò¼†ú=ʳk>6˜>-,>‡Œ>6€Ê;÷ɳ>J¼È>‰ -’>†·>>Û~=>¤×«<õlP¾62>/«>H'@=!8¹=©5„>P¦<>°’?ò’?*@á? ¿Ù>ƒiÔ>Ds»>^|>°¢5>x£ð=2W<º2š=nºó…#<©­=·¬‰½2’0½–Ý=ÒÉ!>iùé> -A<åÕî>-©ë>N(´>€Æ>>³'<èx>¾»>‚¶€=Nþ>¡Ø)?¨Ò>’Ý’=ïbß0Ø>…$>f >¹6—>†> á=§™=itü>p\>Ò}ê>è£0>sv̼ 3K=ðïœ>!=„v=b—5½ŽèF=`‘>²sV>‰5\>ŠËƒ> Å›?oÍ>ÛÅ>>a[>!êê>Œ–…>|’>E=Âvȼ«]&¼N)m½+üö¾Ž½È³½<þ¦)¾;Oª¾Xè=“>Äæ›?&Âö?RÉ?O¯²>¢º >8ï">"@@=­h¼pL„»€Öî>`y>&©Ú>r+Å>ŸÐ>¹6²>–¶&=ÆýP:–õ>Üö‹>Ñìü>aiÜ=À¶Ÿ>Ãe¤>Ýåj>Û÷{>ÚUP>šÖ.>=ïþ>dP>)+/=ÇÚ…¼ä8ˆ=½ã©=”Ø=.Õþ>wÍâ>,‰= -Þ=‰à(>!¨S=Á«ö=œÊs=Ÿ¸p=Å4¬>>»“>¨¸ã>³ -F>Ÿª¾>– >r>”r>šÞü>´ú‰<Ø„>À¹>4µ> -,.>µ#>=µ†>4õ4=¼y>å,>&°2>»‘>o™á>ˆt_>ªOç>—ŽX»^Š†=~£ã>‚>QÊä=â`Ø>…èë>»c|»4‹¾2Ñ|¾-ß½·ñ-=üKR>0Z>1t§>לéщ=‡Ýs dÐ>Ir >"˜9=¾Ž?=?lŸ9üGi=sƒÀ>%r¸> ïÃ>Õ'>H3Ò>!Ë*>R_>ª3a>­>'I¥=Ú5o>$`G> -æ)=Þå=åa=á;t>C{>SÕ©>Þ‚=ýìÁ=í[P>‘ÕQ>èÐx>ÚÞß>Ba=åÇd=û)>ÀZ>€À>z½Õ=ο=(®>eû¨>'–>:ºn>§¾°>ZÜ=á-³=òÖ>k‹Ü=š=ï¥E>fŒ>h 7>3ÿ>6N>;¾+>!Q=M¿8=–˜£=™lë)¸=¼9Y>{„>I=7>7úÖ>rWa>Í“»>ÓíŸ>›Xê<ã„ö½¤qm=Z;ã>\>‡> f>j›>B˜³>(Ço>:ܸ>>%¤>=z,>BÓ…=’ø×>©Â>ìy\>ÜCç>|žÛ>È<ð>™}O>?Ü`>·„Ý>ˆüý>²ö=Pµ‘>„ÿ>UA=>j/‰>+æ=±O>ï=±‡½³ZÈ;gÞ=¹Ç×=¹ _=…–>+'p>nº=„·¾=…ó-=åûÛ¼í¦½I >rCž=Ìzo>/8‘>^Õ=þ=;>$¶>>ùøÀ?& v>¥ÀÉ>-ç[=¾¯=;q¾ -E“½–ìj¼E(=5‚¼Â=Pżƒµ†½™1¾]É»=µ?”>³Õ’>Ãf=ë}>]->vÊn>†á>¾¦¹=ð4<Öã,<8Zá>1 -ê<å6·>IÈ>(å ½–ˆ=Ú\X=þ¥¹>a\s>®€R½ >@=6×s=Á¾¼Haã=fYz=Z5=°N'>ÝÍ='¯æ½¸5½¯‰=~/W=†cï=3ô§=|Ø >“Ì«>¶7Å>3©~>8CŒ>+úL¼%¾X>ƒZ>Hâ=û€>"Óx½„x¤¼M)> £v>å>7óÎ>–Ð>¿±|>•Ÿõ=úe=ëåÃ>no0>·N!>:bÃ=YÛû>A‡>Í->ŽÌD>ääß>‘9¤=Ô(f<ñ’>ŸR§=é¾Â=†wÉ>CÓ=Æ_ÿ=S2[=µ‡G>;”=‡‘Ï>,g8=PЃ<ˆÀn=æ¦g>5Ï0>¤‘=’Yˆ=‘C=–¿Ý>ÞŽ=ï®=Ú>Du=ÀûR=ûX=Mô> F=†‡0½û„½HØ ½ôyJ¾28콄÷À>>"ù>BÑï=Ÿ¾)<ÿÁ‰=*­þ½ùBá½û‘à=À>:Ê <ŽŸl½œÝ=:¥ÊÀ<1Àõ½‹z? ]>_šm»ôÜu=×B„>;Ñ>4Zf=çVw=Ô®?=OÝ÷>€†>7¿¹>¦ÿZ>Ñv–>± J>¡Ì>]|¶>Knê>²|m>ÙŸ=^¹õ½ŠÕ½¿Æ¾ ÞÄ¿^œ¿3Ò\¿"ç‹¿™ŸH¾æÂû=˜X>ÕbÉ>šö½æ 9¿Oщ=€È?™‚= ¿F˜\¿¢¸C¿ …½ñâÚ>s½&?“Ï?;„±¾¥ÜO;úMp>«—>Öy¢>þm½>¾ðé½Z’—¼ßõó>…ˆ7>üº~?A4ß?ÎHí@ÚÕ?í—U?s:©=ÜæJ>aŠò>»^?ÅT>©ñÊ>9<=?1ö?F½ Ý? V­½˜üO½m§¾0í=´º>:›*>úëö?nwG?|¾qT=‚¨4>þXs>PÉk>?,H>ta-=èN,> ³=ßV¾8¸ >:Š?ˆ—?Yx?U¾5?‘þh?>ø˜>'Ãþ-%ý>‚yÅ|X¾¹Ïå¿0>å?&?QDw=¬/ú¿ ði¿®”>2½™÷M¾”µ¾.x>Ì“¤?;ët? ùß¼Èn ¿9!Q¾€fÁ½eÏ>¾¨û6¾™âJ>ê}?`I>¹šJ?Ý?kG?Joe?0ª?5[À?Öð>“_<Ž:=¥Ìæ>Šß?”ƒ?pÄ>— <>˜=1>z¤’>wZ”=ã 1=ý—À<Þã,¾8¾‘{m=ƒM•=´óÉ=´Xé½8¸,=¦.Z>)»½R2•=‚/=¶0:¾óž¾! ? x_>ÌG=ÂÍ—½ÆX>‘Á>pÞÓ>é[+>ø/>Žö>ÍñL>÷É>à¯è?90t=s¾ ¿š>ü2¢>Œðy>’'‰?º%>ßí>jeH={#Ñ>žp•>6>E†;?8•?Jª2>¾K½€3u¾ -f¼ZG½=•{J>j(>–xÑ>{±W½žžî½f"q¾Q¾Á;|<«šo¼“Y“>HØ6=òö.½Ç±œ¿à3¾«Ÿ=°©>lu%? ?­ž?{P -? òÓ>]˜×>Á-–>ªƒ=Û Â=òsg>vjà>Ðø>­¥—>ÀLy>ÛE8?$9Y>¤ç>"¸ë?YÝ·?I±i>y3o¾z~½Ö7=µW¦;ÜÐù=””>‡>ÄŠ@>Ç >ËÔ=¦‹r>‘@D=µün½Ù—·>)8á>¨ù=£ØÜ>,àè>«²>†Á=ì+½=Ô’/½&÷‚¾w ¾SjÎ>"->:%<ÞHý«r-½¶“]½\ÒK¾nw<Ç 3>m¶>=€ÿ=¹»>ƒ4L>²†=¥L(¾.S=#ã¦>˜`P?ô>À¬K¾`1½²M?>×k«>³K1½eÔ¼]"><³ï>jµÎ½aÁ[=·¹Ë=÷Š¾Fâ0½Ð„o?Zž?dAñ?"¨i>”TÀ<À¾@<€ ->{)¿=Ü€Ÿ½©µÍ¾­»¾\ó½Çm­½Í[©=Žpñ>§z¼–‡.¼‘@1;㊠<‰‰‘>‡> Š£¾¤e¾ø±¾*¼æ¾'Úb¾MV½ØÚ¼Ö¡„½>®õ>~Zß>8-нþ1¨½†B0>—Qz>x)½áà¾i_³¾»ŸÕ½ÔJ>‰8s>€ÖW>Vé >s;m>›Ó‹>¸J0>»³A>+íÔ=09£¼’p=Õ¸=Fž¿=E+œ> =Â3‹½¾ý½Ï¦ù=Á/> ¬¿=un+¼ýÌ;Á-)=F\4=$§½M5=€ß=ž8=FûÓ>1Ì’>VBÔ=ÜŸä< éP>+!>vf{>(ì=²=òÝŠ>$ln>W™> _Â>A1>sÔ=;CY=Æ#<’û…½×:=ç>œc>x»ýÐÈ»×Q.=™JK½NXŸ½çÎ>[aÏ>³>¯¤/>òZ>ÚH>*Îø*ü>¨š>ºÁ>šø>7A”>2…=±= -¤N=çÿœ=Ò¦=Ž~ª>5Öÿ½±"•¾i* -=a9>á‚>_à>­aç>X©"=üŠI>9ìý>?¹€>‘ò>†cx>l>—à>ôQ=Ì£Y=íRN>PÆA>‰0=™g”¾lým¾Gü­¼…=…Dê>6#Ì>5‡*>pz>”V>qF>"ö—>}‰Ò>a'Ð=ßHø=•¬`>9Fä>‚ô >Bño<á4<¼T;!èÒ½vì ½>¦ <›Dɼ݈©¾CÐY½Üº‘=óƒþ>4eÏ=Ãxé9ÆI}=ÐÆP>\ÿ>@N&>§Æ1>ï >{X==†ã<ºØ#<ÙH)=¶HÌ>6">+».>1LÆ> §Á=Õ¿=c²»…ã=KCJ>A/%>€â >”ª±>œ%­>t¾>aõ >–§>û% ?‚? ã>¿µ ->U J> Ø=Ye<=$“X=„¢=ÄÇ›>+$>†¶>¥‡9>µÐë>žQÚ>ªÖ+>b2ò>…ú+>’6>JhØ>‹\Á>…G =Ç\f>Ö<?Dð?+T>ò¾Á>->2Â(=ÕL=£AK=¨9Â<š•ù=¥>WÚc>ë€<òB=f¸ä> C„=§6>z=>MÈÈ=ì1>!I=d1œ½¶°=Q(M=…(½bªÌ<7®>}³¡>—«=î‰ä>1[>pÍ&>sÖu>[ô<—ñì= -ý<–‡»ÂÞ=$j·=Õ—=†]Y<…`-=2ûd¼ˆ¦¯<¯¿p=ŒPÒ=”>;>M¼>u€„>$~Å=ç€>7Ó>,/">&Ç<>Ÿ´V>Ò‰u>ÙúÞ>y˜´=óÚñ½ S™½HûØ=¥£=·ÖE>&>)P<> -]’½®´á¾îx½WÍå¼Ó›=”‡>5‘z=Â[G¼¦¿À=±~> -p4>hŒ˜>^ÏÏ=àô==fô=TÚ> Ù­>_µ×=Çÿ.=c=Ša<"3/©ì>I>c¤Ì>Qˆ=ÂCr>mÛ>§Ñ*>-ž‚=yÙ=ã<Ò>" >š4=Â=Ѐ=ÖN¿=Uy^¼Ì•ºûúÕ=~£­=Ž«>B>®á>Óýq>¨Íd>‚Fš>#,>?Æ=ñqC=»‹r>å:=ÐVÈ=ΨC>(ô >=Rá½@¬=¥À >dh>ê>–¡Ù>‘ØÉ>&¸g=ö+==]‰=g =9=;/=uyÄ<¼¯ò½~îf=ƒóø>sŒ >Lñ=ŠqØ=ì'>=7>3Á@>è¿=†ƒ›=NOÕ>å>4>4Y>Mo>gk'=ƒes½«—2<Mé>.Z<âÚÉ=†­ø>,©>>C=‘Ê=g«™>ìÙ=ê¹Õ=:å¨=”Šë=€ ³»„ÀåÞ“>8Ï7>kM=>] n>Gnm>†ôë>£MZ>z[>ñ=r„Â=!Ô³>T>AÝc>z»>©=Wy=7Ä=ŽX=ÄñM=öÊ(=°*“=Ÿ ý;æ· -½G8u¼IY¬=Cö>¨2V>‘”Å= -É=2½K=³>½ŠJô½¢ê½IW= -§=÷Å‚=£r²<ã½ö>»K>79Œ=™w½˜·¬½`´å=î»=¢Ë7<­Í:<¶¯š=ÅFÑ=ûCo>;HC>9¯§>'á<>4Ú=àÀ’½Epi¾+OÒ¾c‡E¾UUp½‚½ã>…ª=’‹=Ÿ > G>1™L>Z>&¹¨=Z¦b=£H“>%¸>$ë›=´¹{=ÎN¡>5‘>CTr>¼1=QYö=GË=Û;=ªÈŸ9éÓs¼~K%¼…½ œ=)e>22Y>>`=}iL=¥>#™§?DÁ>å—>Wö>‰>g-K=ü+S=·f= ã=•â´> *ð>/Tq=ǘ'=ÈƤ=ê¿> s¨>M‡¦>;Œ¦>0Cà>oø=Ëì>-JÐ>&\‰=¾¶•>;F¾>]«3>'¿…>,€>>{t<ó.»õ‡t½µH(<ý³=óx=¹É[=¾Êª=Èñº=õÏ=½¡í>”>ržc>9>!÷>­;>S¸¿=æ@=L=êíP>ƒþé=Êy²;ö-À=ß4Þ>Æ8=ÿ(> ¤>;Q=Né=2>ÿÅ>[ö>®uÆ>È>5>)8n>7¯>plÖ>bÿ¼>1¨>H—>fÞP>ŠCn>Js >‹“>'xz>A-¶>†“ó>3´:»ÃÏ-<“eá>2>–*Í>»"K>­:,>D¡¬=Áã>Í>X>/ë =z *=¬w>.–À=mE`=ûŸ½>MÀi>"an=Åõ=Ç]³>9¯4>Nu+=åA¿<ù¸>=Š÷!=»¼„w½ÚܽêCq½$ˆ=!=±pA¾j凾C%Ä>üÇz?pƒ\?"#?:ü?q÷‰?-ø1>ù`P>³\Ù>…¡>2šD=aªç¾çô¿UÚ¾FC>Ðp? ë•>êh)?6¶?;HÆ?0Ò?ÿô?Í¡?W§?XÙÙ>¤¦B>k°?»”>ü –=œ(½B‘3>—ÝS>§‚y>!mâ½€j6½¯ÓX=Ó«X>#r=ñ#†>ׄI>”FŒ=¿Ê½ûÖྡྷNy¾Õꬾ¾N½sI?¾wlì>á%?ßq½YÎ.½Šñu>4Tø>¥"Á>ÛpÇ>c”ä=ËH>­ ½?Ïã>K¸–>Éñ?“M?* q>ÀîZ=¡!:>48\>ζê>¬#µ>¦âP>Eø>zÔÐ>×e²>CÍr>dáù>ã/>GH,=Q?>pDÃ>Ò&@?é5? F >µ#F>pæ=°Ôš<’ÛH>,ä >À£G>…U9>šv'>ç$~>Ùx>Ÿy½a¾¬Ø.½¼vD>Ô@>ýþ:>«¦Ž>_õu=ûo]½ÉÇ€¾=84½—‹ù½ ïj>>“_>Áë>a°0½Ê€È½ËU,¾2ýž¾ `>'Ge>…õÈ>¨/">¤š=};¯=úXÑ>ágØ?Ú5?¾?eŽ_>ò’»Êí4=}uD=D]´=I–0>2¼Ï½šwÒ¾¢.1¾ŒI‡;ÐGë>"%à>Tÿ!=ÞŽ¾¸È¾UÑ?¼OŽà> ë>¿ðæ>®ê>#•ï=ýÝU>œ½‚l¾Z„ý½ÔÃÛ¼7Õ¢>~©B>©Îb> i>-¥Ô>;:H»ýÙ¼6Ô»>DF>6ç;>_Š¢>óh? Ž›>Ú¦Š½~½C€³>>±¶>lh>^æ©>P µ=VJÔ½-ü±¼ˆwÀ»yªk=³œ*>-°’½{RܾZ웽B¾—>Uy=¨Î‹¾E]=?Q­9; ¾Éó¾†M¥½úŸ=O@V¾œä¾•Ö=èh‘>ŠZÝ>°ð=·ôɾü€¼ƒPÂ;ª»<ÉƵ>B*µ> Ài=&¼.=TWâ=M¤¸½®Aâ<Æœ2ºÑNr=Lh³½aJP¾RNµ¾U÷>c£Y>¸->˜>–žý>S#“=€à-½n¸’=ÕéÞ>Ñ‚>Á&Ç=ã7ë¾@ÄC¾£G>n2?¯¢>Ü”>~i>0H=0ò=¹ë=ô)«=úÐÂ=çð¢>Y£> "Ž=Æ\< ÏÊ=O©?>V[,>ë™Ò>¹º<£Û~¾$ß½åLž<Ëak=ö(=>4É>[–=yÚç½@1½TU>7ÈÊ=´|e=¥±µ=mѧ>$3>Ií7»Sð^<Àã=ÞÞºç¢=WÉ>/=˜>VÞU=EL\¼éŒî<2ù@¾ .×¾.E¹:…>«Û>4z=\xœ<àX¼=y=+d#=£ø=ü^í=üÙ7>.®9>NÁ>ˆõö=æ°=X;:=Álª>V¾Ð>A­N> ¼œ=ÂÚå=µËÙ>Y)b>Ž¸Ä>Æú>ª!->|b«=†ëg½÷Èß½VÕ‰¼V$Æ>ͱ!>Ã/æ>«€i>£ ´>Ç"·>À8=>˜j«>i>;ƒ1>NÍb>Zä=6¿[½!"(>6{>`†ˆ>eÜ­>~?>MAD>1n=¸´qºÁU -½Z‘J<¨~å>œ8Ï>²*=>w–ø>…7®>ž=…>”“Ï>°?þ>Ób¬>ã”Þ>°tª> l˜>¬Qï=â\>W> ‚>ÜÒè>ÀZ}>…¨ž>ˆ»>æ`=>·>\Þ·>áa?,8>×Êã>fh=â±i>öf=Ç€X=°Së>¯Ý,?€ ?Š \?Rçï? [Ý>–üŽ>Jû>c>¦?}*?I‘T?Uä[??íz?iú£?_*S?MÐD?2¨¯>Ôj>Œ‹q>Ëݶ>çâ¼>ÄñË>lÕ>•jŽ>XÊa=¤/<·½ñ<¨Š\=ÍâL=¬)þ=«¿ì=Î>ò>IÅ>Ž>ß>ŠÕ > ©Ð> ½>öG>ö÷? ÿÇ>Þz6>nj>P ƒ>³ÂH>Õ”ÿ>B+b>wqÕ>æÑÛ>ü” ->Å%á>–z >ÞNX?5Ý´?aßê?C¾á?'ý?:Æ?Þ–>}[—=„=E>‡í>„Åm=Šá!½ ƒÓ<•,„7">e†>!>ó)> 4=ôA=Ðc(=  =ÎÔV>Wé.>R°\>£«Q>ŠXþ>U*Ý>šÏH>³“>Wó¼>#ËØ=Ë b>¼Ú{?Wó?–‡¹?£@(?¥P?'«!>‰Çþ=ý¼K>?Þ&>šMÕ>à~Œ?*Zñ?5‹Œ?#Vó>ÉÜ’>1Æ€>jîd>Òîþ?4Ü‚?”nE?²e?“Ç ?4Y$>õÉä>æ7ì>§¼ü=@©>Iþj>¹Ü¦>“YZ=ü‡=©Êm>!rŸ>K²F>#c¢>&m³>¡²Å>Ò ,>©}l> -`e>12Ô=Ò„#=é ñ=ëð>o–Ñ>¬&O>;Ë6>OÃ.>Hg½Â¢Õ=->3ª>ÊÃ>ií½=†Ës½{*´<Ÿ·¼Êyp¼›Ì=›Æ=Š =ª.Ú=fý =‰ =ñ ,>n¼Ÿ’U¼ºö!=Þˆ=>}*U>bž>8°g>9NÔ=‰Ä>hµœ?p5?Ž%?¨Ùy?mûm>¸E=^±½+ <í¹ƒ>{PÕ?m¨?CX‹?Å>>39>U>!/U>a?>ïÒ ?`ƒ¹?‘6‡?k¶>ñ½d>d4>V=íÛ›>3`> ÿ >¼÷4>ƒì<>¯û>´Ô ->®;Ó>8ÿÛ=ç´==Ùü+=ˆ^ƒ>çej>ÿšú?ñ? ¹ >—¾C=î‚õ=“Õ=Œ Ê=Ùt\>=ü”<ø”=׸}>vÞQ>—F(>P{Ô=Šåa¼ºÈº>{ã¢>°1É>ÃDO>ØŽ>·S4>X.œ=‘ §=†+!>#jÂ=ò«C=_=Ÿ~ñ=w7 -=ÍÁ’>|Ã>4>=Ù<%ç >\@§^=´Ç#>!x#=ÆI><³ ’<–e†>Sç> ŽR=Î=ζu=•|*=ôI >?C@>@Äy>ÀE*>¼ÌÆ>PQò>*|>¶?Ìk?Jë8?‡œ­?mí? Ú5>K–l=Ïu:>pÝ>™Þ¤?h¯? ›Ä>àÎ>HÕœ=‹©’=‚Õ>5½B>„Q·>õº½?J3o?;¯?~[? 6ª>@}k> ª>ùP=ò¶>6…=ªòå=KŒ=—ßµ=ä^=`ðh>'¸~>| >iGI>/=úó\> Qà>PŒC>] ÷>{o>qµÎ>#6=Ân=ž|†»Kò¥> Qö>[†=ù|‡=–g=ôImw=‚=|rƒ<¼8É<Ç´:=(ÿÉ>Sn:=íð½ØîÕ>CÓ>Q>{;w>mÕ>pö©>(HÃ>iÌ=é—¾>DÍ>¢y>Qù>=? ->c½(¡F=°í'>#å^>€5>ÓÙ>Ř”>®ìr>xºh>p”>B Ø=þ!n>G¼\>w:A=³8ê=² ¹>B—,=Ý¡ø=È ô>l#>^kÍ>FÂÞ>Šì2>¦":>Ç$u>µ§ä>Y (>/<¸šÎ>à >=í»>„¹(> Í=Ðð>Sß ->ÖØŽ?;¦Ñ?6Ëö?u?.b?8¡y>ùѱ>ne>»:>ã»?ü–?$>·‘d>-ƒ>Dü>h¥À>;Ô>z‚>éy?J#?F¶?u½E>ï¨ä=Û˜P>Ì> Ép=€-¦>@N>P»~>&&Ð=wu!»_KQ=Ñ >M‡ >‹ïM>E¨ž<^U2=†Ê>‡ÏY>žÙ­>€<©½=Ä-=Ðá;ÚB–> V×>9öZ=9¾<ÙX+>;<>F¥G>_ƒþ> -…ä>³>fÂ>{>n]m>€²À>X|S>H;2>&Yp>"^‰>ïÚ>wQ<^0ú>qf>eR>Pܲ=~×±=RmÝ=ÔÓ ->$I=Юû=ÿèp>2ÚC>A,V>‰+L=³pZ>ïù´?%ƒo>B°> þt=t!Š¼TK|>„F=ê›×>°8>wj>H4:>tŽJ>ZO=ׇ=¥&û>*´–>£8‡>­Õ:>ûY>B¯>/@=ÛÅ9Ö=lB>o¸Ö>™wO=Üg>mÞÂ=·x>"ÏD>Z“ã=é - >Œë=Ë6!<ب"=ràS=ˆ=>=x]>Z5«>Z>APf>I#Ò=çý=¥ò >ïê>ÅÀ>º>>ÂLê?`?Gï£?=Ë ?ù8Û?9?,pª?3>½ ->à >—.;>˜5>^þ!>[ æ>·ž½>è'&?Ë“?5>?*¸¼>Ú6>W*§>¥0=Þ˜=UK‹>N{>=(ˆ>0 ô½Š\=-Î[>_Ûuºß(Õ<ÀJ;>Ð>?åä>K©K>e =Ž-=´¤v>,V>JO’>‘š?YŸ0?ŠOf?,ܽ‹O5=¬Ö·?!º¦?WÆ?&Ú?À?K¿Ý?;p >µu®=š—˜>£O“?&x@?Jd[?™‚?œÛÜ?Z]?¬P?FÈ>¡Ù=¶NYס½º#¼¾{ß¾€”ƽéçc=/o§»æŒf½Âñi<ÆŽÇ»öix¾=Þ½Þ½¨>S¨>Q™‡> HÊ>Áý>q…½ q>îÍÔ>“ãn¾Uò -=¼Ü¸?!Ë?ŠK>ìÑ`>nÉK>|ä…>¯øƒ½½BȼÓ¾†ô±=ù¸·>­—Ã>Ÿ¿>á?FjV?ñ‚=Ÿ¾² ->C6&>„‘Y¼àÞ¾lm<•9=‘õH>p>H†<Øl>r`•>¬?¿>Åov?+ª;>Þý™¾ˆæ(½q<0>K á¾c©¢¾´Øp¾ô—¾ýÕ÷¾ÿS>oè´?RX>ö‹>Þb‚>šž?½àÿú½‹X¯<çTb>ª¬¾<¨½í<%<ër>27­>EúÁ>‡ -Ç?""%?85µ>ëÙà>èŠ?EÉ?ü>ÆüM>ý€ÿ>‡õe>D²?«²>µìf¾z樾µ’㾉pk½4ú¼‚_>“öq>ÈÁy>Ä—‹>ÕF>/M?!-Æ?nw]>Ó=#Eûº%ay=5ù>‡t>˜»€>«ºQ=Ù÷`>J$>1Šw½z ¾{Œs½`ûQ½[ƒ¾Å™²»o©é>Rª¾xh1¿ ‰¶¾“…>2xë>}£¸>Ã=o>‰Õ…>åµl?r>•W—=ú>{Ð:>œê=ø‰J<ä½X=:ȦR¾G01½¡D£=ÈFö=¸µ¦>Ç>9d½ïÀM½›#Œ½º½¾X#M=õÇ>mIá>6Î0>Ê“é>${9="’à¾qÒ½Ž•¼¼’/J=‚Ë°»¥³s¾»ø¼ˆ:‡já;ãû=k\ù=Ud=Ù(=ÓëÂ>¦d>9êt>x>×þÜ>¤=Î|̽-ãö»¦éT=…å½ ݼY€È>;«>{”>‰7K>wi½>Oê>­=¤c4»Éø>Ým=‡X†½€|M½•ùa>|3D=δ¾ox ¾7U;”b=q¨Ö¼˜XI¼ðÃƽàoݾe¾ ʽ˜‚>I»>c¼±£Æ=³eê=ËO]>}>™­=»ðÉ=Ðã½=åÎ_=†½;b<ËÑË>Cÿ{>ÈÉ\Æ€>+z>+¡#=’ ð=e(¤¼•[½høÔ=Ä—>‘'>’üÑ>\ŸM>ë0X>øŸ?$„?=W·? ª>}Œø>T]>ž”>¶TÓ>¿ÆÍ>¥°q>°Ü´>妷>âïk? -i?Bš¶?F«>×—>‘Æ<>®3·>Ã|? †?/2™?7¯G>áÙV>‹¦?>+pÎ\'b>ÇðÂ>àšç>Ô…f>ã!L>Íç¤>º -—>JGq<-Ï?=Kí9>z%¹>ªåÏ>Q„«½”œ½²«µ= 6Ì=‹´)>h6F>2QÖ½'¦½j=rH„>‚$ >Z¿,=øÂè>ž>kÐë>L•\>Ÿ$+?)wá?ÌÎ>¹®> ï=a -ý>+RØ>•Ê>Çž>ª‚’>€š”>•¼j>ÝU›>éó¥>¯>Hg“>:š6>‹ü>}˜U>­q:>K5ñ>#Ôæ>3¼ð=bا=a™>dåž>U´$=î½ã>XR×>Ê„F>Û {>ÈhÍ>h>ê">*b²>ªµ->¦‘å>pwR>_B˜>CÙh=Ê%]½b»0ü¤>„½W>?ÈE>MÉp>f0È=›7]>Þs=–ÅA=,:o>p®•>%#=¼à#>˜®0>¸æ>™Àq>CÞî>‚ò>W¹ô>( §=éšÊ>.—e> - S>âc>`œ:=ºoT½3H›¼Èì-=š D>mWŠ>®6}>i ~>œ,=þüÍ=óGJ=Þ Q¹¤ -½Û…ä>Ë>+l^=Fó=LEB½UY¾:4¼š°¹>WD=–<½´TY½Q#Ñ=EÎP=ÇŠÆ<”ëȼ¬õ>oo]>›°ˆ>QÌ®>zƒ=½v&=HÈ=÷»µ> ,>†x> q)=§Â=Óå=îø®>:ýå>_[ì>”=j!â=‰ù!=‚ Œ=(GÀ=m9=Ìq=jšÓ¼¤µ½Š¥=˜Ý>ê¾>ç_ª? -ù!>òÑþ>¡ª”>$y=•ÜF=Ñ“O>ç>Ø“>s".>§,9>×Ó>œí>QS>>H¡8>.¬±>jÁ>¥4(>¦µÒ>®ªÚ>óU'>Õó'>}ÙR>•hµ>p©>{±€>yîÉ>|µ%>X\‹>U#ù>0Æ=¸úÎ=Ô†<4Þ=›Ð=ñ æ>6õ >;ÒP>7 -¼>o>&=>Í =¶0Õ>›òÿ>Î2á>»¸Ú>óŽ+>ËJº>Š?”>«Ãñ>{úH>We«>uœ>¡GU>ÀÈÀ>Ëyd>”Èñ>ó>(;¶"=¼¯>¦p¤>ä D>þ(²>¼JÁ>¨ìª>–G>TÜ•>-s>{(n>2$>zƒ>†Vï>šõÛ>dM=O5Ì=ù^è=½ËÎ=ÍÑ>9$>_¤?=äh> h->`ð°>“w=ÕÃx>\é[>\ˆl>ì >+¨õ> >í¥>*&T>P/„>¼?š>ý¾Œ>ÖêÚ>N¼=š>8Ò‰>9¬H>£*a>å«ü? #{>ºZ >yA·>e5ˆ>‚!W>J¢>=Hæ>…õM>‹v”>ÍF>qÌþ>DÙL=ÉÏ»=ä†l>fÜŒ>žì=áÖ÷=ª¢Ö>•à‚>¼YF>¥Æm>>Od>%ƒÝ>m÷>ä1>;‚`>*‘‰>8ž&>^¿>UI•>•~í>Â>›Œ=ªI> S->G¯>û5>Fvp>7C«>#ÉÃ>D‰>"2s=¡Ì=³{†>LÔ}>!æë=¡o³> èr>ABL>Q¹Ö>Œè>iy=¬kÛ=”××>?Z>6†î>è>7‰>vb>£=÷ú=°Mµ= TP> g>&#í=Ü@´=aß>BÅ>Žî>€‹> PŠ>Â!r>ÈÃ>â~ò>Ô½W>–Ôå>=3¡=Õ#E>£Î>Pw“>¦>>™f¯>©†N>«[ù>TÛ=¡ò=•×=±ùC>dÔé>¨bÁ>¤m>¬ÅR>Û>øÃþ>Û¤>9"|=4ØE<êô¡=‡XD>^>£P@>¤¥> ¡N>2 b>!Áh¼ßð|½­t=O+==œ…Ö= ì=«š=ÉÙ÷>v>c´¬>…ð>L1@>D­»IŒ½˜¨y¼ä_>æÃ>/Ž2> ‘Ã=Îï=ÔL=î‚=ÅÕî>¡ >yÔÃ>ƒTà> m½>9«P>€«>PÝ>B‘7>‡ˆ&>×=€yÝ=–®•=”qV=çZs> &$<¦^ã½Ò¿½F¢Ö=¶b¾>TØ4>‹>nd<§Ö¯=ô“ä>=g·=üÍ=@<ø+X<’†å=íÞ=†‹~=ÖXC=ôw2>uaµ=í¢:=g=¶¼>5»+=æŽ>%€Å>V·N=¶[`<£†á=-¬À=ë@ô>ƒé/>i‰=Y”½½Ÿ˜8>‡ Å>§NÓ>'s> Üd>;®>Z=ŽkÍ=ÓD5> 9>f‚Œ>‚%I>jè˜>/: -=üiG>¦ð>: g>< ö>në,>·z>™mD>—›ò>pvø>#†>-–Ó=בû=Åè†>.Ä=$?¼fµB;\hÙ=ªà¼š×¼KàÛ=ª¿K> zN=üÂ#<‚¥(¼&u<ß7O=‹b…=^·¼ð6˜½Èd8=.ˆ–=ëËS=ƒMÁ½‘J¸½‡Ò+=L·2=¯h‰=«gÇ>(ºª> 7=Æ+à=æoŠ=ß ª=ù×ã=Ü o=Ķ>Y#ë>w*y=ÎzS>·?> k=Öµ'=ý`¥=ä<Ü>)åŸ>EÁ„>*[Z>|é¿>¬©n>¨è>a> N½=Ü=N> >ss>=°>Y>qQÀ=ô>_V·>sg3>æÇ=·è+>8E–>7åö>(Y>vá&>¼>•£6>ˆð>aÒ>'ÐÝ>82Î=ÿê:=Œ÷Ì»Î.Õ=O—>ÄX> …À>cx>jЬ>!¹1=çê=ûv> (E=ö\*>#À£>€•>nV=½Jž<ˆÉÑ=×…U>F2=Ö<=9¿Y¸·>/ð>u4Ë>‚@>]ê•=gŸ=‘àG>%ÎÎ>n >}Èá>ˆð¬>|¢½>Væ>ä#>3ê>8@×>Iº^>¿Âs>½MÊ>¥ó>—®>3¶>¢d ->¾þ>¯Ì­>´!>¢>OºZ>\;>ï¤>@>m‘î>wz#>Vm >Ÿé>Ì >Ø -ì>ÆX¾>®{¥>72=ýVò>Š¶> O>„Èm>dó>e>=ÁêÒ> cÙ=‹¨Û=ŸÁ¤>Ï4=žÖ=ÈXy=ß*a=©Èä>)°…>®®>kXö½™«¹¾|·Ë¿¶±¿.á¾á…]¾Ìä ¾Ù‘x½Ál½kÑK¾‡^>·û»?5|>Qµ—¾†Åý¿ -Lª¿â·¾ð™¾1¾¹¾³[¾úmâ¾Í¥¾øü}¾ømö¿«Ì¾áå½â‡ˆ¾.‚(¾À¦¿s¡Â¿†b¿ƒ'¾«Ð¾c˜M¾iF–¾¯L=š<·?*Ð?[>;Í¿*KJ¿3 õ¿ùM¿Šh±¿‘•Ó¿BˆS¿ ¿Q¾Ûo¾Ñ5¾ñ¿ à¿M¸¾p©Ñ¿ žâ¿ -7O¾Öw9¿l¿,‘Y¿.+¾í—¿§ô¿B¯¿/–w¿ Lô¿!1¿µN¾ð‚!¿9·¿O]W¾®ùÆ¿²É¿^ùø¿"©Ì¿/ú~¿¤³¿:±´¾›üW¾vµ¾ª_¾”÷¾É! ¾;$$½‹2v¾ T¾VáξËᾆC7¾%þÀŽÚ¾·Mä¾MƾRpÛ¾³’•¾­jœ¾•˜½×ö‹¾ŒR·¾<°Ê½zjä¾yØ9¾”»¾¾Ân“> />”E§¾<-¾óö}¾ótö¾×Š,=·F°? yJ¾‰W­¿ ¹ð¿ §Ì¾…+ô¾\Üð¾äH±=qZ>™Òξ˜y­¾¯áÞ½\+¾Et¾¢-Ó¾ãÛ†¾4l¾:æ¾¾K)¾-F¾.¹¾¿Ž©¿AÙ¿ྀ-$¾¾¬W¤¾‘¥¾“>=ß=Ó—;Ì‘¾Ùgÿ¾Ì6³¾~\ì½rá¼ÒG=i—½ûS]¾ j:¾(­ð¾±O„¾ÆN<¾žÚŒ»¡Ç -<äëþ¾™ ¾ó¡\¾¢ ?½¾r=Ç®a>«÷:>±sò>μMJÌ;„yª¼†Ó<fƒ»¹RÐ=õ*à=ö¨×¼§°Ï½TÆ;½Ê¶ã¼ÆBa¼õLÃ>3£û>ˆ€O>FùG>‡ÖÆ>u¯>J>b2k>+… -¼-’-¾u¾¸¤ -½þØ*=û û>$‰Q;ö¿[½ó ½ÚO{¾`©¤¾ªA¾`áy>…öÓ=´ì¾=ÒµÐ>.>>AѸ>™>¹Ú>Gé>Ñ!…>êY½¼Â`½¨ <ƒŠQ;Ùfg<°ñ*=÷H—>…Ên>bçÇ>%ãÔ¾v¯ñ<‡'¨>—Ä>ÄŠ>Aq¨>½¤A=qí;‹]=ÌM=àV>NY]>)|å=äµO>•©>é€S>¸/c>®üß>š¯>zNý>š«>¢;>"2=„+Ž>G>zÉ$>,‰>^¤>¡Ö>£iÚ>"æž=Zo·>(Ì=M½T<Ô›=PÌ=á>I=×+ã>$€Ÿ>we÷>ÊW~>®ú>±_>ÃÒÃ>׶¡>ÀÇ>%Tâ=&Ø=¦Ø³=Ê¡=øk1=¤é线š:>%9>†=>z%=­ï\=NBÈ>cr>eñk>–T\> v>¶ÅÑ>¢‰.>­†D>á40>¹ Œ>¡Tà>y_.>R‰¬>…›_>nÎê=Ø=œÇ>wš>Bˆ¤=™’-=Û1Þ>>¾Ü>J=ÐxQ½.ª²½ÜÁƽ]xT=dWÖ>.wß>’ñ(>ƒT=¥žÕ;-cë=Âz>Š‹Û>øŸ=€év=ÿ¾=ÌkŠ<½Bc>Õj>®+d>±Aè=*÷ºOwb=€éë>H/f>¼z>–|u=ÀÛP>Ì>kVU=‚>5P>HðÎ=J)&=(I=š™ñ=ߌ >U >”ón>H²Œ>EØ>N5û=º®µ>+V>~>v=¼™>K,v=”RÀ=/ñX=§³‚<æ`->(5>D“d=†5 <ƒ× ½‹Ss=€¡>1n“>‹ª=áÒ»‰ï齇á^MÑ>Hn==ìÛq=Þ¿®= }´=Ô«ª>QöŸ>{†•>]¬À>y›Ñ=Àâ³=¯žŸ=×PÇ=¸Z>QV>Lc=QÜ>÷m>¥A=ËàÓ=ç©"=«ô=üi>hþŠ>_?ð>çü>K'>‡¹~;¡Úÿ†j>/;æ>=l¾=ðF‘>/>=ß õ>yKÎ>QSZ>#¦L>…'>Hˆt=ˆÍ=Ì 0=[…<®! >vjL>U >÷}> -Íù> wÞ=EÍÊ>K>.Ïî>(·> Óv=ñ£Œ=¢H½tÏ=ܳM>!¨=Û•>Bu>+u°>!¾ÿh<¤€ƒ>/Ó ->·ê‡>ä*4>¶ÊF>]ö>€é=%t> V=9*š< ¿•>|…S>Z•>gÓº=ä/®=¬Èú>éË>Å Z>r|'>$8Å>,¯>Äû@>ÛÎp>¤Ô…>J®&>”3ô>µÓP>›tR>‹eL>°ž->².ó>¡rö>œ1k>°# >¹»‘>…ýE<Ø™=žm>&àú>Ää?UÓ>ã">Îñ~>gmt=‡À.<ðº—>Z5>`=Û]d>H¨2=àºø=ì;¦>Mfs>ŽG/>“ºß>€wH>oŒ°>r›\>L«m<¬M=Ϧˆ>„¤û>™ÎX>­>ljï>%Ìt>‰2>]±>ë>=‚ŒR=ÒáŽ>Šö>BFë>œË >$›x=S†x=ÜS7>%¶>0|=ר´=ç]t=^X<¢™·=ºaû=Íï=ð;¨>@.> ‘î>PK|>›àÍ>°Â¸>·>=gë>*‹Ú>?ãÍ>„ý >ÎÝJ>Ö&F>çS4>ÉÚp>=Ì1> EÁ>C`>¿ã>]1É>¢Òî>Ü9®>•2>9+ö>yL:>éª?1¿Á?(ƒ>ÁÌ>’[v>:ó=H] =²³–>&X/>)Š~>`;»>*ÚD=C+=˜h´=û|,>=×=ª9Ø;¶‘v>t^>pÓ=ƒY$=hÒ=¬œ]>"v>c =Ìn=B™>j/b>´w>€˜÷=T§=Àø”>A@Ù>>S+·=Hr1<¶Rß>iÝ_>CŠ>‘=Û;^>ñÜ=i0A=.Àñ=“âb=T’ç=»Ðò>3¤>F¥>³z>à0>ôÕ>æu>Ë{ü>«vù>­•¥>¸>XIÙ> 3„>“>Â83>ÒUl>ªx>V»ê>`ò§>†Ní>ò¥;?$x9?7·%?(ü>‹×¨=‰ú==¥|==ªcî=}±ž>bù€>RÜh>Vp>5A¿>7~À> iŒ=Ïav><Z>?{½>€,|>¸ËÍ>Ño§>†öó<O}=3 >=â‹g=Ù÷>2½=ß·¬=oþô<ûXÙ=ןS=>ç`¼Í|[¼ûeâ¼ -нXO¼ÇKñ>~g1>`¥>Ë'=µó=Gå6=MØp>:Ù\>mE›>6³#>yw>Iœr>€ù>€>•Ä¦>{s‡>ªY>Q¥,>5©>^Ë=Õ–ë=y”> H_=cG„=©2=½>5Ø”>•TŸ>irw>eà=÷Êf>5H>¾%>‚À?ûñ?=s?JÞ¤>áÑÓ>¹ >¸øh>Äyß>¹É»>Ðä?é?Ë?Ö>ªG†>JB†>´eÝ>ߢÊ>«Å¯>õ½?I`é?U½?s›>±Á]>XŸ>tÌ=zÀ#=Àôt=Ï’=Õ C>?>!.ê>`õ[>‡\Œ=Áü=ß¼=ú{'>^I>Vø3>šòá>lŒ>e-==ê]E=êü¿>o÷Ò>­"·>§Q•>ŽËI>|æÚ>L¾>‡mÞ>™ûn>#o<>'™)>PhV>Šª–>~¸Ô>H©¸=ø~o>Ét>¯è>•)é>~ ‹> †L=`¸Ð>24W>xûÓ>ˆ{D>‰ïò>ƒˆf=ZHž=ŒÇ=Õl>e=ÇÈÙ>G¡&>c89>k}ê>“^=î‚=íZ=>„ÂÎ>$ˆ >K†>¥Ä=ÎÑ¡>ƒ¤5>³á>’„>†Û>†«>ãú>¼x¶=È·Ô>7¶ˆ>6½>¡>VÜÓ=kîã=…µ.<‰b= l>@dÛ> ˜ =¤þ:>.Â=Þð/>&vi>;>­Œš>òÀ)?/p5?$ü>ŒXd>Èr7>¿†<>{oÚ>€~>Ǻf?ú?E>œÊ’>du=©=á=pù>‡I¼?™P?\-Ë?êÐ>Ž=Ù=Ùá¶>­>hé>SzÞ=çOW>EN>‡Þ>c*>Ñ,×>ûo>¨°“>ñ²=«—Ë=Òy°=®ì¨>7?’>ogÙ>ˆk!>+ƒ>SŒ=°V÷=‹áø=Í̆=Žµ)=Ÿ'ƒ>:ù>L2‚>u|ö=FÞ~<…À&=ùOþ>j­5=ìa,=™}L>øá>V®>f¾¤>&M<ôl7>ÿ‘=“1=kµ:>¨> 0õ>2Ø4>6Š=†3{=‰¹=¼¾÷>+q =WòÏ=MŒÞ>:àa>==¶ý!=ÏÝ¡>BU¸=œ.¹>ã>5{€>§¥>W/R>›î>»¾k>øz+>íÓ>˜“=>:ç$=ªÓc9Eº>ü^>€,5>Iÿ>G˜ù=öãû><ÂF>à@=lÿ™=ܬÇ>to>:ê>[õ°>‹0À>1†Ý=»vw<ˆõ2=̉.=ƒ°=V‡=ÖIc=÷ô&>Y>%º†=Þ†F>#q>BÑA=œ22=Z—A>.úØ>+Ø{> *E>4>H^¢>… Œ>–í;>‡5d>ý}?‹]?Qã(>¸iS½4²Ü¼53>/W|¼z¶Ë=oºP>åêê>÷…Ï=X.‹=U†Ö<ô4j¾pë¾>U<>Èy=ÁÉ>˜¾? ÝŸ?†~ñ?yq>²J ?, å?,’M>—Á§>ƒ‹;>¶ÌQ>0â<¨fp¾½î`¿&Ú±¿0ȃ¾¹7‡=Åii=—‹â> ˆ ->—Ì´¾Ér¼½‰ F>!.¾#Ÿ½äQ_>Gf>®3´=³ô®¾²„¹»Ò­š>gÇ>γ>ï_¾•b¾ÀJÔ¾Þ²¾J¡Ô¾ a½³ÞV>É[>Ô=‹?Yx>…}¹¾Ó1½9ÛÄ>P³=ÑJ*¾ß¾§\>-Ç?#¾ò>ÓŸò¾•Ç5¾ó4«¿kC¾{&‚=®Œº¾'۽кô>m…e=¯õ½À±<§ý_>/ýÌ=ÿv ={z`¾‘þ¾TÞ‰>χ(>¾®œ?27?_q??G¼>KÛý>qýr>*cM>@Í¢¾ -Ôz¾dí¾™¼¾pZ$<¿ß̽˜pç>{Y>Ö¾s>9êû<Å}ð=ÇÖ†½Á¢¾:ÅM=’Ák>Úm™>uÃË;Û.¸<´¨>S½'¦½©º=:ƒK>­Ê·>C<}>bn=¬2‰½{9¾±\X=W >”v‘=é ã>ŠƒÈ>’9º>(^>U/>¼0>.ùß>Gž >©£>Ì>_>ŠŠV>aLò>¶Ç>'/5>­õ#?2è>í‡<=¼«½ñur=¸Î<=Xoý:‘ÔI>–¢d>°aE?N—Õ?Dv†?;Õ+?oª?`F?5­s>2Èù<ÅLȼß5‰>^rd>½šK>ç½¹>µ×>lỤáð½˜M¬>39Ý>‹»–>‹¢›?Ä>êø˜>“Äx>3•>$¸=0áâ=»äb> h)>À*>A©M>Ó“x?,º? ¢¨> îè½s¶ë¼ÁN>FGå>îÝ–>ªŒx>S×X>Ó²—>¤wð>LÚ‰>qf>$êb>i$•>„ô>—û>q…1>) ó>Qµ>h/~>'üMµe½Û<ýh°>rè{>†¯Ù=«òC½Ð3Õ>vE‡>êÁ“>³wø>xOP>'Ù=A½½Ï§Ä<õ`ï>mA`=xûd=;þu=4ñ>s^v>4O{;#W\¾<l;äʽ>ohé>G:=·!Ï>s—>1*õ= Ü=ç/>Œ;>¾íB>Áɧ>Œße½ñ–Ð>ÞJ>²Õ­>N>MjO>š.0>—z:>qGN>8qŸ>u­>@&F>>õÛ=€–Ë»–ëÈ=­Å™>n·à>=p&>i4‡½ª/<½ÌÝõ=c%õ=s“¹>²¯>º >ô>‚ù¨>–%%>™´l>ZÙ=ÿÓs> -$b>Â>£\C>˜¶l=©m¯>Wñ÷=ßžç½CT_½Ðê~˜ë= Â>¦Ò>•):<Γ7=–œØ>€3Z>·¶>h(@>|÷>Á¾>»Ê«>¡ï“>–¡–>1k=>‹o½>€»ÿ>mÂ>·3w>–¾}>ÞE=µê<ò“=Es>N >MþÎ>f¦d=ÝU’>„>h=ôù‘>eLÙ>Ãt>4F}><¤=ÿ.Ö=$ûÒ=ïïÖ>…%@>.Ï"=Ó>>ƒxB?hæ?[`?Rß?&G‚>ç)‡>l›ß>°&>Àü>„¬>ºVc?6?\F¬?!rÊ>³,>Ëú¼>¹ïÐ>oðû>68í>_P2>w4ã>ðGÿ? ïU>­%I>”õ>w¤Ž>ˆÕ>ˆ!>Rû¥>%M7>0=»¢=èÚk>ž4>X¿t>«i¸>%' =y½NËî<У2<ö;ô8+=M^®=·¦<Œâl=xTO=œ”’=¯K½õŽ¾ ²V¾äÖ¼éa!¼¢Yʽé?Z¾Û×½}ZF=¶>{°>ZH>9á<üÅx=ÐÊü>€°ñ>|+>­> ‰Æ=Íh`=£ú=ÔÔ>m\=¯ÿ€=Þ2>.TÏ=“§=Q˜=Ú>5>0,s>ˆ°»><>…w>@Ø>q#>> F>QÆ=vä’=XÐ<>ú8>c -¹>a9>5à=ÚŽ$>Ž„Î>¯‰ý>­ï!=­z={z>LJ<ʶ´;ÏýZ=ë:>I&>~«ä>„ ÷>Zéx>·üÃ?1Y>ò}6>r¢è>'í> ½€=Y[!½.¾¼"œ;Qù=qm…=Ä@<î)d=¢™>6ú›>9åò>&t]<)¬V=í<_>J‚ù>Á÷=ˆ‘Ñ<öœ„=ks>-g>Wœ>8³p>e0Ô>DX=œ9L<ÉÃ^=›>Éá> ‰C=¸‚D=Ö>>=Ç>4‹Ä><~Á=©¬Ó=·· =ò®> )r=ö ê=éÁ!=õÑ.>ø=“¸=¡ð=NbN=ȇá=ÓN{>²=ò <µ±>^¢ã>}Ά>*Û=½cœ>K>‘>foò> t£=ÿ6?=àþU=Nö²=²†>p > ‰º>JÃC=ÂØr=CQ|>žé0>º¾…>Àê>\1>ÊL>¸–>xÓ>Y¶”>f·=T;ɽÑÚ½ V³=0">‚ì>>8(>+fD>CBð>T.>£e»>ê{¼>²Wu>EB>8”î>‹Px>•‹Ë>„>yÿ>T>º‚Î? -?˜>ëÓ¶>Œo›=üT¨=ŒÃé=%«=Ëù>/Þ >–?»>¬$·>ÙRí>Ø·‡>›ˆ->ÈöÇ>)ø>}L>0ò­>‘ $>©F“>© æ>”É >bv>3(=‹–=•7¶>ZØ>šWû>„WÜ>!Dä>ÈÁ= ':>,+>7H0>>Ó˜>>ž==æg…= =±pm=ô—ª>JŸn>eÀ»>e,> -9Ý=÷ø>ÑÎ>uû>7<è>#Ê–>CË>4µ³=µá=ƒ>,ÑQ>4[G>b£¼>t¨>l·V>}Eî>=É)> ë?> ?><°>G¨ž>P->7´Û=:âá=³ôð>þ>An±<õV<,˜=Õ÷<¡“¬=@ý‘=¿øè>Iã>KëÌ>tŒ=°ñ!=Z0c<æ_v=Eç=•*A>,¸h>gmØ>'¬1=ªÈ~=¤ò¾=×gP>7l3>>…¯>.Šï>xÐc> -¸>¤p">º£º>˜½>3DI>"î>:Ž­>¶×=ëFv>ym>Ž»>V\Î>Cƒ>ŠÝ>¥¾—>˜4Ð>T³&>D>48Â>7=>WxÕ>‚‘á>’®‚>•Ÿê>‡c>Žæ>œ”ÿ>[n]>;ò>U9Á>[ š>f÷>&p^>"²>yÒ>BÍû>§%‹>;î>’YŒ>«Ä§>wÖ_>H¼¡>î>vó>'4Ð>/÷‚>]HG>–«=>‘>YãÊ>añú>áhC>åÇš>Á°\>{W>6)5>+…Ê>±=ðœ>rþ>’”—>ˆUK>•pÝ>} Í>1¹">+o'=æCÄ=AOÁ=G©>ZK>gYT>sr£>ž€Ã>†%ò>^å >ŸÊí>±XØ>ÀÁ2>ÁÍÿ>Uä'>Ol=Êc3>,,>—‰t>°2³>‰¡>K\>1>:3;>‹xo>Æ~Ç?·Š?1Lü>üÌ">”íû>Û==ÚÓ=“5!>>aë¸>«ì¼>€í’>#ÌO>œò>b&~=ÐÕ^=U-#=¦ÏÕ>EöU>šæ{>¤µu>SÇf>y¶R>h!ë>X¨«>ƒaä>‰¼ñ>_dK>‘~ >ž&>‡q¸>eç†>†q×>›ˆè>”[J>€ãŒ>¢L>½A=>ð5À? ”¬?Ëú?ò*>çh`>bk>³:=ë>@=ªð´>é@>ˆ •>¶Â@>ªÙ>šª!>†O×>l\>V;>NÇ7>Vâ>>ŠÜô?Je? 3>Ù!>?s£=¸ +>Zfð>‹Ü›>gÈì>aš4>;UÐ>?Û@>d4ƒ>:¬Î> &Ñ>|ñ=‡ýU<ï"‚=²æƒ>*d>m¬N> ì<=sq>¹´=¾Û–=~ØV=É =íb¯>Ð!>À½>&ت=!¹‚</=×æ=T‚¿=ĆØ=Ƥ†=®¢Y=‰bô=wE=iBÉ=»©>Z==ÐSX>`Ø> =ž…>Kœ> û>w;È?Á3? !¶>Ý_…> hk>NÐp=ûµG=ÿïU>`T>;~>î>¾óü>­Å¥>]X5=ÅÔ±=A`L=+š=Øcø>oçŠ>Øtw? äs>ÎË5>1`=í=äéÓ.5@><-•>‰ºc>Z=,=«Àß>Ç©=·,=æó>bÚê>oO>;¡…=õwó=$aÄ=è ->4Ì·>Ït=¡n>"a%>b¢,>O¿’>!H¢=µ¼>UË>*ø†>-=d>¶!>y­>b™>&' =ïM>@ºÔ>l4>ƒlJ>«>¤Ö=ðRä>;ˆ>W5š>ù>¨“>‹ ¡>ld>+£é> -i¾>Œ>fË>C³4=’®r==ß,>"Ža=Ý›Ë=ùj¯>Q¬>Bk>Ë->> >_¼>•o&>‡Ú³>¡a>D½ƒ=ĵ><=õ>z&M>²šO>ïr?Ï>åé¶>×´>f¥˜>@zÞ>>„qú>Ñq_>ÒN1>“Þ>qÚü>fÄá>aº½òNï=Ø‹>ß='}Ö>q¥‹>¶j>Â)˜>A6™=–GÞ=öE>=‰Ü»ÉI5>jÝ_>ú¹‚?ŽÆ>ß>”þx>§F¢=Û?q=P½Ë>&ó@>f7>„¼ñb> ’c=Рƾ-‹%¾)Sø¾¼C¾Æ«>î¥?*·æ>7À¾zþ¾™ -¬===Ò}`½1d<êGð>vÒ6>‘ìw>˜% ->ö-:=µ·›½{°E>~÷>Þáò>ÿt¼>•N+>²OI>ì©>Á®>¹æf>ÆÑ>¦o>é¤?DÝ ?Ï!= -æ>†Ï ?Ê>ë">ûõû? œ,>ò®é? ré?$÷Ç>‚x­;õo>>'õ/½´8R¾¢ÚJ¾òc>{ÿÖ>‘þ|? [Œ?3—ì>Æ1=‚S¾<H¾pé=ç©›=¯0>8ù‹=¥»¿>7y?*‹h?:›ù?)±¿>ÃPO>¤£Ç>MQÆ>½êï>ù&¢?,Ð?9ƒ¸?N³X?4wÃ? -/p>µE¤>^¿>ÒÀ?!‰Ë>ê÷>º­>b|è>Øh>†E=®>h° ?ø?TÓ“?S¶->Ä×}?+4„?UÚÈ>‹¼é>õaP?FK=>?¤W=‹l<>Nßm>ˆu§>g¶•>Ã=þøý>­r=[ƽ§:M¾„â¿=XtÁ>FÏ>bÐ=cbŠ=–÷Ð>P2±>2Ìn>’:[>Ãk=°gÕ>qÍ>Âv>Û_‹>Îý¹?­3?½Ú>Ñш>·ÏŽ>¡·£<3 ”½èš¼†hì=¾ËÛ> ¯>\%>°Ð>Ï.è>ìô&? -ž?(?oRk?ƒV£?I,Å>äÂz>+úÄ>£¨>¤Z™?ÁY?ÖÌ?2ž?-ž>®`ß>E¼Ðli>ß>þ¦¢?\ÒQ?r°,?r#? O>™¯å<¶Í¥<»%¸=Æî>Ù÷ß>¬‹>G­b>{=šƒ¿>7|N=²Z½CöÀ<Í4>‡“ò>³ÄÊ=œ «<µ%¬>Ú¥>Ħ>®^Ó>£B >6wŒ=ŒÉw;±=Αs=£ -=%–$=˜þ='Å ¢3ó>–¡{>«È> †>3,>9Ôi>G§>ãKU?—é>âÔ‘>é}?ö ?*©>íÇ>©ñ=˜4™>#“>¸€>¹ÉZ>Ãßê>—½–=ø0<ˆ|ƒ<–[p>Ŭ¶?H -ë?…„3?£Y‡?¼Ñ7?H¬?á>Ë*¿>¼ù>q6p>Ç6ª>þ‰ò? -•à>ë©a>«'ä>[òf >² ?:AV?i¢?…žË?^o? «>ó½>wbÕ>h—>O²†>Uϵ>J? ½>懰>‡Xf=ͳ=Â$>tæ>0o>¨d®>ê¯H>UÍ+>Y³C>‹¿>}6›>3µž=OÆ>†h¬>›‰-=É^õ>C>Jœ>E­~;¤ãe¾ôõ<Ól‘=‡°]=žK>>S> '= ±<Å?D=Æeå=æ@>4›>ÉÌ>}†¹>hÞ >P9>°T4>ÁŠ®>Å=ôŸb=¶ -=‘ý>ŸÈ>g'›>Dg”>Z?>iöi>‚°Ï>¡=â>£Mm>¯Øa>šÏ?>}«Õ=÷ Ç>œj,>—¤g>±7>¢]>yå)>!ÞÛ>™->Ò0>%Š”>7öj>q}2>%µ>´Lê?3?WJõ?yo©?˜Â?'bÈ>Ô)Ã>Þž>Øã ->Ï+Õ>Þ\D?›Ø?¾à?šj>Oˆ­=mÛ=9p™>5 d>©ãØ?æ?mó ?…]?ˆ¬h?(‚>¾®´>ìç>†Àü>Šõ>zp}> H+>¢PŒ>‰>¼n>âøt>Ü*>ÕÎë>®M`>X¬>Œ…x>·­—>t N=½5^=¾>^ü>ž¹>j› =SJÜ>.>i -<žøæ¼ ãv= -# >6>±mÓ>È >ceˆ>Yݨ>D”=—Óà=ñÃ^>1GX>‡/ƒ>‡áÉ>ŽÝ¡>—Fv=ý8´=Ž!û>µEV>“Bœ>g›=ÿæž>š6¿>ŽæŽ=¥í>&ïa><Î=Ä8>04Ü>ŒÆš>•|Ã>¥™>©–>´…á>œC>zHŸ>nv·>Š¬’>†ò(>„’?>F¼>Ç~<À‘><˜X<¶ÿù=Hƒ&>€¨>M ÿ>†Æµ>€É>–dj> ‚‹=Z¬$=€Ã3>C=qˆ‘<ìwð<Ø©#> “>0á­>YÂï>Ýj>N¡>‘_Û>+‹=üV=û†X>¨^Ù? ®?;Ð?%Oâ?+P?3O?ö^>·1>-üñ>Ã-£?lQ?ÓŒ>é©>Š.>)y =×äá>7œ_>Ž ì>nG_>ßÀô?$XÜ?}`?2âD>ú{þ>Vë™>IÖZ>.r?=VI>KPD>•Àš>ºŸ#>„ >ʽ>°Å >` r>§>ñ>oÚt>Az,>ŠÁ>>Šg>…=©O;=¦^Ã>4n>„Öt>Pµƒ>ƒ8>ˆ—»=6À=ˆu>0L>™Å>ƒæ ->ƒ–9>nå=ð¿[> n>H©>™&>”¨î>_Âx>z¾=þå>i¡º>Êw>„ìÒ>{A=¼20=«&E>·N>4»¼>¦ã=Ü‚î>?>Š©x>“áÄ>uÈR>U:Z>;Ó+>Cä“>„Ï>MkW>õ@>1P;>&D'>ó>Žœ)>#ì>3M<óZ=èÕ=>?–&>˜ª>Tp > ÙR> -Di=¬5å>E²>™\>>FïÏ>‹Ê€>›9">´"©>;¤È>\U>E…2>?b¾>8ºC>[ã>uuß>cÕà>'8+> ×>$@>,½«=·Ÿ/=Ã4Ê=Ú ž=Ë@l>~ç>IT[>tzå>.™W>SˆJ>kˆè>½ë/>˜¯Á>e+ >ß>…Ý=>‹º¦>2T‰>û>µ¡ê>õU?Aú]?;èP?!¨ú>ûZ‰>ôp‹?`V>€Yþ><åf>•±f?±·?~¥>ôš>…§è>3c¡>Š/>†…=…–W>%!ƒ>– ÷?Ji?Wç?J¨†?Ý>¹g>‡ók>_©->wb>I>¢¼>)^À> Ï=âbµ>~pã>–=‹½J=(Ð>C”>#µ=´Î–=PD3=ἡ=ô1e> —<­=ª@=üoj>Ÿ‹;>efg=Æ—W=­;J>zë>3:†=ªðä>+³”>]z}>oFf>pP>Yݶ>S~I>CI=¦ ©=´š™>!1>/kï>[-F>ŒŸ#>åÎ>TDø>h9à>8ß>Ú7>HLà=Ȩ˜>YíX>l·>Y©â=ÅÀÿ>m>.ð>N ¦>¸‘;>yð>'Ñ>FXë>W k>9=ß>ë2=‘m =¨H½>z^>zz>oGÐ>„l> <`>‰N#>?u®>5z>z‘x>'> 9&>_9>ó> E=ß^„>‰Y¦>‰(>cÔ—>a=ϵ>.J> ¦Ê=üVš>[&>%ùr>ÚÀ>…Ž>Kü>]SÔ>|ëÔ>f¢Ù>7ËT>jQ×> üÙ>)ü:>qjß>pŽØ>„qe>x¾2>eÄè>j"±>k‰Y>eH>Žš >OBT>Ø=0es=˯=¦·=ÚU=¶>t=xѾ=¢È÷=·>Š=â¼>#S#>Hü>(>&v¡>JO=ÌR&>#åß>˜ ?€r?­W?·]>ªt¬>Ä:r>º§¹> ¬*>ˆŠ>ªùÓ>Å~Â>æÔV>ÌÉš>¸¢™>ƒ” =š€>×s>8 o>jç??4?7Š&?Ut@?Sz?“«>— -å=œðk>ˆè>¥=°;>Þû>Ù'æ>÷§S>ׂ}>®®²>&òÛ=Üð?=ªi}>BRm=¹`ø=(ÚŒ=£Py>-(€=Ø{æ=-Lн+Ûª=–î>=­_a> 1ñ>½ù>õ–g>Ù€”>ˆ¡¡=EI×>7Š>R5Ï>O±>DS¨=òø=Óv>B݆=-Q=ºˆ>™=>æ=»T2=؇>I!ñ>¶¢Ý>‹Ÿo>Si>;­>¢t>»§'>­j¶> %±=äzœ=wÞ]=^’l>Z©Z>6™J>;8>x1ä>oˆa>r÷ï>,Ó=;[±>Wx>¶>lM >Ë”>æÁ>ç>hE}>›#=¼»¶=Š,>v8=|<“}x=ü —>5ô<>{>ÍI>º$H>^Âk=˜’ÿ> p‹>/¿v>%Gö>yH:>´q>ÆÑ;>q»==š@=Óo>!Û=·0î=?ÚY=¶ Ñ=ÿ “>#¾º>/i=¯Œa=œ.=«Ö=UiÂ=o‚¦=fÛ=­¥¯>±_•é>Æ>Â>²íú>]d>7J>…>‰m6>€»k>¦Â>ÒÎ>Ð=V>´Þ,>¤’È>dÉ¢<Ä!‚=‡Â=\ñ=Är²=ãÐ;=ã9p>*ÿ> -ùæ=-kˆ>ÊA>6ƒû>Yù=Ø5;·ç=àI½>E5E>]no=üy=ôè=ig=·i1=ëÞ´>œ ú>èø2>ùTÆ>²Á$>u¬+>¼×\?1šq? Æd>åÛQ>”>€þË>Ç$€>Î'>©Aq>Ÿm>øà>ê©.>Å -}>™ø >=…×>²'›>å@>Þ¹•>ÔŒ>“ùd>Gצ>ÀÀ>)©¿>Z:=ç ‚=¢ >¾3"¾ÂR=JÜÍ<5qm>îE>ù5ø?!¸ ?5‹Õ=Ýz¾æë¾zFG=<Ì>€u? ¡`> 3‚½òd>¬¡U>q‹­=#Ë =œµË>†T>ídI>·p>C[Í>¤¦}?7#’?>Âm7>×ý=ËB+>jF÷>ñ&+>ß‘E>0â=¡¢=Kw>Î÷U>¨œ:>«Uâ½—wé¾-Ãã¼Ïj½I½¾³•{¾šJŽ¾?,ö¾FN‘=bÇÃ>Œ¿¨>¯Ù>P%'=Hô¼™)н, z½ñߤ=¯0Š=yâ5>v/S>ÏE>Ìâ>ÀZ$>¸xô? -‚>ø¬u>=i>><·0>· «?(LŠ>Î,¾¿²¸>+¨>ÁÝ?'ØT>Äbî>Œ’%?)úÐ? x > Çi>‚sº>–‹î>¸Â>Ö’>Ãeª?B“ü?HP\>¢4x>þ2q>Ú>{>€¢÷>°ø¨>w漄ÞÂ=Ä’£>/§Ú<›0â¾/»E< >o¸>„¬È>¦0>„á7>ut‹>šÔ{>ì¤v>ð¶<>â·>i‰K>ŒPú?7”i?[“±?OÎ?4œ?dq?kþi>²ï­>/´ï=Š²¹Ø÷>~ß³>µÇN>,ÿÜ=÷ƒ÷>Y—i>št#>Âìþ>¡=ŒAÓ½œÅÖ>½å>ãØZ?#ÕR>Û(=Ò™Á=Þ6ñ>UU›>Ÿf>yD/>E©±>ºÇ?z†½?ÅßN?7›>¸n>ƒ÷2>œxe>‚ÿ%>ªÉ>I·ª>jò™>ü…?a?v>ÔX>‘«†?-÷?-)>Åâð?äs?#­?. 9?;îR?†w>Eå6>ŒD>äÓÙ?àÚ?6Cm?Ih‚?Mþ'?%+>œ Ý>C0Š=‘+=ûà>Š -ì>Êã°>í\Â>ë)»>›—ð>…3¥>³¬R>È~>´ˆý>xCê>t ú>€Í±>Ž:÷>’™C>6Þ½Ïß=b§%>!›Æ=î@¯>mÏË>Ç“I?M>õ å>¥2>â´>åéÙ?Þ|>çÔG>ÌŸE>᱇> Q~>fDY>‰â>ŽVB>³ú‘>¼iÕ>š…¾>$'I=o¼ÄVŒ>h—=æï'=Ÿ]<=³ch=U(¾ ú<’û>Eµr>C©`>—qè>›^="pª½ÃâM½Š†!>q²>-ÇÜ>/jÒ>¢ð >æ`¯>âàù>ö1>ëdÉ>Ò&>´I)>èú’>VBd½Zlý¾ZQ,=ô"Ò>mìN>¢»>š®µ>;a=è}=áM =ž]H>B0z>yr>Ì·?#S=? ”:>œÒ>z’û>|ò>fÌú=²èW»¶G€½°›Ñ=ƒ’p>€]•>Œi”>ÈcG>ñ™?Rü>é›i>¼½->”> ¬y>†™‡>æ‰F? lÀ>ó$£?÷Ð?#Þï>Ú²¡> ,>•2+>sÕì=}ƒ½ ¯>Öif?>G>™˜ =ÝsÂ=C¿V=©©p>oM]>µ@·>¸Ç>t =§³=îºI>F<˜>Q¼Ð=£aM=w¥=ÓV×½ Ÿ]¹ô>)í–>F=Ç>˜¾Ô>©¡§>8 û=’gÛ=8ª@>iß>a§½­úL<¼ëk>J¼‡>€€“>‰£›>ˆè>„·>£ >¦¦ >x¸=ø|Ë>Sö±? à_>Ò-¡=΄-=˜2\=`§‚=ªÉ=U׋=¶»î>‡ ÿ>”ºU>èº> !q>è*>w†A>Δ2?s$>ë?>ªÒ_>l’>lÚí>‰Ú¸>Äðg>æÜâ>Íò“>½»Ï>­n„>š;y>hÃ>Oÿ[>ºøX? -@?Çý?!Ýñ?6:t?@t3?Ž…>´D>UÊæ>*ù!=±¹Y½,ãê=¾¯Ð>£Ê>Ò­E>µ¸€>ˆš>ÙJ=°]E>qh>Þhù>«>6¡a=ç·;>jïÕ>­,Ó>€¹>ñk>Ž>zž,>öÐ=¥lt=á½­>/Í<>jP>ÅÉ>%Vˆ>cŒ>V¨Y>F>Ö>^º>.¸Ÿ>ðÚ>z°>ö>!´>Dx€>æ;Á$ʼ‰èæ=ðÒ‰>5œ’=—î†=¡9ˆ>A’y>¡Œ®>%ò=øÙ>hÍm>˜*=ÏÏú=³$6>IIH>|ýÕ>ŠF£>B—>N=´¢<ún}=G"=ä¼=È›=|÷Œ=åC>Œgé>°Ÿ”>©à>}êH>BÀN>ŠÕ[>rX>,xÆ>}M>1h>n4ã>ÅÎÜ>ßÖR>àî>Çì~>œ)‡>.ØÔ=¼}=¯NŒ>%%Î>2õ@>óv>Jo=ñÍŸ>\Å=ʨØ=²Ù6>ã|=ñNò=ÏTù>>Z€»>r‹’>mÜ>T>sÙp>¼Ø¹>á'¶?Œ¬>ᨢ>Âõo>®Æ>iM ->¼V>Œ1`>U1->]B¹>}0>™mä>I¯ê=©Ê =W²y=ÉD>/Þ->¨,±>×ø>ço1>þô?ŒÀ>íÿ£=å¦Ê>‚J>J: >†•Ï>Œè'>+>{ª>‹½ò>|à>ju=÷A"=éÆà=ëžš>3–>0> Æ>0Í> be> ‹=>$Ï%>/F>% N>&sò> î=ûÔ³=¼Œ‹> -¨w>DÑR>6ÊÑ>Eiû>ˆö>®m§> Zû>”ž >…äB>EA»>29°>C#¾>{.û>œ ->¬hü>õW7?GË>à_/>È׈>œÞâ>UÎ=ùðI>¶û>^Åô>¿Y~>_=¼;>%%}=ÉÅf;ˆÛ*=8é>+>hƒ‚>W™¼®µ¼ÞïV<ëøV=^=ç®Þ>íS>í;=žk>(^>ªá0>] -ê=ìþÒ=¹(=¬_´=¼ml>/=¾AÔ=UsÄ=Qw6>ß>° >%͸=æmö=¡aŠ=q ©†>BÆ>…Di>«·Š>ÃÄß>¿(5>ÕQá>îp>æVÕ>®“ª>‹âM>£»D>£¾S>‡¤>ƒVM>±E”>·ùº>¥cú>WA>m¡®>O"k>_0>™>»*›>úÌv>ø´·>ð§~>ÜÞ>ŸlM>o¯æ>Nˆ>)Õ>@`>Ú>@n>ƒ\1>^¥=ÌFÕ=Êò\>M>6&/>\Ó>i Û>egþ>=4Ù>/a>4=•>J m>=ÖÊ>*aä>A­k>?v>ÍI>0l>p®>€-î>1§e=ÓæÆ=­¤=œPö=I¿d>ÞT>Ozln>‚>Œ8>Zðq>S>:¶C>qˆ>Hã>™}0>h>hË€>/Á¬>>£l>3•y>VQ=g®õ=úÃQ>.¼‚>…½>1s><¢>5Z%>†g=ªo=Sµ4=DˆO=ä'>0ùX>3+¸> -–2>sl4>•lÜ>e|T>A\>!:>B>EßÅ>P?›>>À©>Kó~>l=£ë×=–Dž>|>4ž=ét><þÉ®=½Ä>Rj>F<.>hÍ>oË>EÂ`>Uš ->Kš}>Q„h>-#B> •>+•1>Sð=ؽ>>ÖÖ>šÃ½>¯KÌ>ÅE¡> 3_>c6´>xm>4!¸>ƒ¨>!Ÿª>”>Ø>P6}>c¾d>,{”=ç™>‘4>Œˆ©>yõe>V>K9­>€^B>ûÉ>PDZ>dOH>Fõ>& Å=ôú=Sª>=€†ê>A”>'z>‚Ú=õŽà> -A =€O’=p7=ÁŽ¢>/»>Vd°>U¾’>>UX><­>Aõ[>+»@=ï0Q>Üè>+>?´ï>À>¦¬>žA‰>z=4>xNà>h³1>EÕ>R -Y>C©>_h…>—‹D>•@'>pê‰>0ÿ ->˜>Dò>O4‰>Q¥f>aYà>ŽoE>®±¢>Æm•>™Aæ>$DZ=\ˆè<àŠŒ>ù>Û=†ïD>/ß—>å–=–Yí> -»¨=¾p>c…>@‘*=Ô‹#=¶K=ðëš>F®s>7µc>#õd>d=ôã·=Ö>—F>7h&>X[ >:¹>3Þï>@Ô)>Lð£><é>R©;>m]X=Ñ0>3wÇ>ˆo{>^‹&=Çs=èPÇ>dÎŽ>¤ßF>ÕQé>¹' >zjp>Ry==æf¦=­vV> œ=þ·Ž=ëP >©h>E>3¦ˆ>4¼”>¼b=Ãä¯=ø/ƒ>#">"]Ñ=öO|>;—>EÞ6> À;úµ1=‰ÚÙ=äG¶=¾L=Õv‹>8*=íKú=l¤=­r>C9>.Ø>ñq> -K}>8o‹>/Ù,=؇>„³>Kì}>sm›>×´>Rdš>MÓÐ>x )>Ž %>1gÊ=Åÿ]=ÜÜV>eŠ>9–É>#uu>GÞÙ>!B™>~¡=á3=‚ü‡> äÄ>`â> š9=ùb•=«(à=Ž]ð=&Ð=ݺ%=Èo^=¢èŠ=ÁF\> R>|tn>‰«J>;³>TZ”=Ùëý=ö—Þ> G=­ûë>vÆF>ŽO1>É >ƒ 3>“BÈ>h¾®>1ï<>gÊô>‘qq>….ž>[Å;>6V>+^§>%2&> z€>Eu,>©w>”¿k>Aª>Áž>8/ä>ï>&Í®>F¾@=¸Z>ã´>XÐ->Ÿ’Ì>»+>¶K>×/Ø>…Pš:Ç;­Gå>fc«?ÊK?Ü? ‡>ôÕQ>ηv>ºm‘>Î{>#sv=Iæ?>¢d;?1«>W„à½èj >Q>·s÷>:->ò¿=¼¨/½ÊÇ·¾tFˆ¾MoÚ>Çdž>È—÷¼[}b=¤sJ>Œ.ä?iR>Ð=z½ç@*¾tñ|½£]r>4µ±=ºÞý=Xk>%S>9î÷=¥!t½H)¾Ë=}JL>Tžå>ʃ¼Wð+½ë2(¾WÅʾ†Þg¾’ƒK½Ðg=w5¼ñf=¥ ¹>l!³>äú=ÞV=D\½HÒ¾?Ø8½ù 9<½0š¼på¡<2g?(º? k—>{Y>W!+>!…_=#›‹=PùÑ<õ?3;«J"=± H>y­>®i=Øor=BJ8½’¾g­½'> º=[E–¾ -ؾwé>)ç>>çÜ>?ˆ¾%WA¾o³4>îº>†˜Ð>\dw¾sk¾/´¡=¨`u>vÝê>œ–÷>}£ç=0Õ¯¾Cë±½šxÑ=EÒî>"ïä><³ë>O8î>·ä=«Æt<Š«<>‡²ø>·L8_L>œµÓ>uà>¤ž=J;=e>¥Ý‰>£þ>†ÇÉ>“ra>‰M>x$Þ>E¸9>8>š¼(/é< #¥>t -ã?7l?i‹#?Rö!>ëÜ­>MÞö>yÕ°>v_<>#(õ>xNÜ>²Ò>§³Ô>”w®>’¾q>×z>žü,=¬Ð¸>hò>¶P>úÌÛ>Ø/ >«„.>‰um>v¡>5*Á=Çãñ=6^=ëò> ÿ;=œµ½1¾a=ž•\>ŒO‚=Õ3ï==äN>‡¼>î{:? -Ôö>»›î>±1>Ÿë>iéÊ=ÿ¿(½çMF= Ë±>‰Ø©>qAº>ªˆo>ÙË´>™6¦>„x£>Fœ)>7¿í>Ý÷=žò%=„™M=¡o!>€lÞ>¦Wõ>ÂÐâ>ľ>߈x>2~`»ðÚ½gä>6^K> H{¼ÐRB;Ú<¤.ñ:C=é™=¹€‚>EzÕ>U”6>õ)=çÄý>H!Å>*~5>3 >»dE>˜1œ=å½­>Äk>M±3>Vn =ÿðj=¢SH>3>•¶»>—éQ=­â–=“É© <›>Š–ö>±‰…>o¥>61>)>+Ö>¥D>JÙ•>v.>£ÓÄ>Âùo>£ÚŽ>„{>›ñí>Ö3&>d;=>?>¹à)<±3á<Šî'>ÁO>¿èÑ>ÓuÁ>Ôª<>•³>-€i=ÿ´>ùD>{µ>EÇ=ùe*=äÔ`>Ô=î\÷=ýÈ>HÔì>*l`>7fÍ>ƒk­>•æR>·ó7>¡ñÁ>T>A§ò>-t­>[$÷>zé„>˜)>¼4‰>~)=í¨ú>7ÔÎ>tZ>”Ù}>Z6I>.£_>hUR>‡ñZ>H[‡=ÓŠÙ=ó¿á>7ä>̵=Æ&=¦¯•=±E¡=‘¿=´> >#Ìn>3µš>N6{>^x ->\â>R–Ž>8ÕT>xæ>O;Æ>‡«à>7Œf>(Ø ->TÄ®>n’>®ê=€ê¦>œ†>”â]>D)>ïI>²>£ƒ>~•…>.ߢ>°=_ò6<‘ž/>pfm>uQ¤>Sþà>—¡e>„Çœ>J˜2>Œ¢>X†…=Í‹U>be9>^8l=‰uJ=Æl®>!lŒ>&> ¨U=ÍU/>$Ü>lx>óM=É Ú=üŽT>4ÂB>E$ú>J9Ñ>+mH>G`g>#ñG<Ëîæ= òa>#*±>/Õ7>75ò>3ÿ’=t@Ø=$=)=ã>2yC=ûÄö<À -l»ìó®=½Ì!>"/ì=w,ÿ=¼ßš>Õ>†j >|%0>9ýº>²§>1Nˆ>Œb=>{I=Œ•=†Kh>$Ü>iF>o]¹>-£8>=k>H²>~¥>Ÿ¹Ÿ>6J>!g>KÚ>3Ž> eŸ=ã,=ååÒ>/©>E§>>Ð>"=¢e½ö¼:Ðá=‡}-=®" >¦<>72“=çôg=àðÅ=Ô -=µ2%=ò >~_>]T>îÚ><àë>>™P>*b>*> >t¹>d1|=Üû6>ã¯>¨D=¯³=R´û=‘1P>Uø >H–!>.u–=4(=È’Ê>w0=íVÔ>JÙÏ>~$ò>pÔ>V±£>*A9>€ °>‚Þ>ŠÎ>?s> ›ë> Äy>)#ƒ>1‡>gÎ>aR[>0u6>1Ÿö>6 ê>É=Ð ‰>ê>׸>*ˆx>% Ì>]Õ>Š[Ê>[CU>o_K>ïÂ>XÚ>_²ê>pnÞ>eG>¢=Qôû>„¹>œzÇ>” ä=öö >,Îù>j9¦=ÞÆQ>la>JÔõ>: [>z§>˜¬Å>T˜9>0„”>*üŽ>ƒl.>ƒ©&>€ÿŠ>BWÌ>-ÓC>£>&¡>5Â">6†u>43ä>=K2>_pü=õÐ>+‡>hdÒ>,æ =ÊbÓ=ì‚ø>W$¤>[Úô>HÞo=é–=ŒÉ(=ƒ¼­>fbG>¿ >™¯>o­>®1=­Þ =Ûd>##%><'>l> >MÂ4>£·>_&=Ús‹=ÑÖ>?žX>_¢>fY=Êè†>'NÔ>l½>LÈU>):>k¥¢>8YX>?tÃ>FG>>Jùò>€}=êây>-Gi>Ræ¥>±I‡>H>bK">$Ñö>7 d>3áS=ùzâ> -¦ª>2²Æ>BOÄ>4‘|>>„>>'Ä>Ê£=ÓÏ=-_w>'B«>Ov>jâ`>Ce>J$¥>ac¡>ijÌ>qp«>s®U> -Õ^=ÎWÕ=¬N“=âè;> ä>>*6>1aÖ>7£º>-Õ»>,ìt>U“¡>g >lѧ>VºÖ>1s>3~Ã>‹>Ÿ>nQz>^È>r`c>\çB><Y=æ â=ß)ó>žm>9¥;>-9ï=â”a<ôÊ>,vc>X›¹>{Z >,|f>I}‘>cð>>†©>9Ð(> çï=–PÁ=ý:>kT>)= J|=Œ>9>·=Ð]Q=öë>1¦ç>@¶D>ZØå>LÌ=íW²=ô>G`>bíÕ>A=÷%“>V€Å>Qšü>ÐM>ˆ<>$Mƒ>ë> ?Ü=êx´=ØQ>W>;ÏÆ>FÜt>Gã‘>*To>&)Q>K4R>R¢¾>/:>2Ã>týh>T9>K~w>e&e>8Ï=½ØÑ=b=ùàM>Öø=îJŽ>ïª>:>P5É>8==ÖJÀ=÷¥š>^ >0=ë|O=âð…>ŠÀÂ>sÅÛ>'>`6/>U:æ>A@W><+‘>X<ã>9Bº>ô =úÎp=üNÆ>t>r÷Ÿ>“a!>•}^>49¿>%Ur>.*P>1Ýæ=ÅÏx=îý£>?ßž>pSç>\nˆ>5 ƒ>kâ>Ic>+;×>F}Ñ>ò>)ãc>±¾> 6¸>-Å>z¬>ˆ>B®*>c^U>~ú=ÅKÚ=˜= Ž=áþ> -L+>˜> [>AH>]¶w>9^}=ð# =‡®½=,=î±>ÕP=÷@=ï@>E]>Jt>-†>8ÑŠ>áJ>»N=æ~f=ÀŠæ>Ce>àÐ=Õûw>@Ð >hÓ>Kã¶=ƽÑ>Ø>jðâ>-Ü›>‡> - ->8ÙT>aD>-àš>ì\>Ñ6=³2X=­*N=í\<>2Á >2¥#>4¶>Gçö>;£,>ü\=ŠVd=å~=óûý=µ½ê>,3=ëgŸ=à6=’ã:=ôÄj>8 â>Qæ>WM>?Ð> óÉ=—Ø$=ÅtU>*(v>bÒK>#^ß>6|]>Uó>au:>„ÄG>ˆ¿Y>u¾=Õ—Ö=Ñ•Ì>å;>>7Ò€>-ZL>,‘Æ>C6n>Fƒ>@…l>v†>n`> ‰¬>(Yõ>#,=K¾š=šX¹>iE¡>AŸ!>2>4åÎ=ïwÉ>$Ø>S‹> h²=ŒîC=î\ú>#ô>Aµ†=ë„í=¸ä*=þË•=ÀC=îôK=ñ!Î=ãù=‹#£>h>—=;²=í§G> f\>Û>!Bp=è‘™=Åç@=Ñs=´M“=œ†=´ì¬>ä>4 8>-šz>=ñî=¬b -=°›>²¥>:»ë>@¨o>.Ë>H]D>iå‹>R6•=ÿ)> ó>?õ{>m>ƒ•>I_›>0šˆ>B’=þKÜ>u,>gÚX=ÿi<ÅÆ£=“:ˆ>vO>XäG>2¢> =öfÈ=õÌà=êºæ> bL>,Õ>d4>AAÔ>Nö‘>D¡œ>.=àÈÕ=Â-£>F|Ð>cWˆ>Od->X\#>gÖ˜>D,¶>$Ê>Y>–>)ú>7zš>zµ=ˆsj> ^>%|u>j—>41=÷Q/=Ò5>:F>d:j>þ>‹é©>y§=ã“:=õGM>TÑ<ÆÑ<¹ÑM=ÝA>NtÙ>2XŸ>.¬v>;û=Çt¨>{ã>Pá¹>SQ>>DV>,ÿ<ÆóÆ<³5{>xÏ>R«z>0 ²=Ûg=Šûb>P—ž>˜ )>„7<=P!F<ý®$<(Cf='ma=Çr>p§> -¯ö=·k=¢ž)> IÔ>~—>I -I>·ü>0nz>!'â>9‰!=¯2†=OºS=†Nj=“,=åÝÅ=ܤs>>æº>ŠÝ>›$ø>6ºÈ>)9>X¯,>2$ñ> o>s®>#sN=î'>-=Ñ‚=gK>‚œ>;/r=+g>E’>kÕT!›ø>úZ5?‡!>¸«I>©Y¨>zû®=AÒ1=‰=q!½VÝ’¾=áѾŒ7¾¥/Æ= 'T>»1l?J?ð¿>Î~à>~o=Ý?@>•‰j??§>F_k¾ƒ¾Ü½â%Ÿ=‹í=ƒˆ>&*þ>}ÎO>Pêb>B—=>6€´>©ßÌ>Ý…@>Ÿ–9>K+Ž=³>‹=ð9Ù>_b¾>T¼g>4t2=€£=¥OP=ž`u=¥6=­V€½›/N¾5[}½ø =Z°·=ª€Ÿ<7 l>_7h>3pÙ¾%¡s¼`rÔ>6Ž->ÀÔ>ƒ/Ý>¾d—>/+K=žÔE>x+Û>­á1>¢Ôõ>ÑÆf>Ê '>Kì’>$8ˆ;·ê¼‰= {¥>š­>q×H>XC>»Ù¤>Í¡•>ù¦â>·µ^=ãå´>>Þ„>g' ->ki =¿ç1½LƼ•€ =ïÖ¼>$Cr<_ãG½mF½“•ä½è›½h&=ʵð>Cù5>9ë¡>3S>V‹¤>’-G>´ó<>éÄé>â;$>„þÉ>W>>ˆ–>xwÚ>…d2>Ò>…#=ó0ä<Íl¦>5[õ>TLQ>WÓI>ž>é>”0?=êÀ>BªÄ>¦ù»<üÀ{½´ot>^Ç>Å$>$$¸=¶Sm=‰ùq>ƒ†>|"N>Ž …>n„¶<$«4½ л>žë×>Ÿ<>>,‡Ä>‘>J4š> k=GŠŽDä>Ôã—>¬ûµ>ìÚ‘? -²É>®¬ >,êð=š€È=ý ä=dT—=G=ï7×> ë@=W<»MÔ>p=>ŽÎ²>¼¬ >¼ Á>‡ÐÛ=™r-=ßÀ=ôC>€•>#ÿ!>ôÍ>¿e¡>º+{>”C%>^b¿=˜á=¤‚A>•ºa>¼°÷>‘dc>Œ¹p>|C°>iÕ·>JõZ>ˆø¢>Š-®>‘ w>‰Œ”>@X®>F!Ï>ÉáÉ>ðzá>§Åý>¨(þ>ö¯G?4„?'pX? Œ>§¡>iùW>Š×>e°>°#—>õQé??#8s>ùi>­A¯>ûcÅ?hÄ?7Œõ?CÔÁ>Ü{‰=·4=þßz>—m? ->? ªý?h>¸Òå>–½g>,Ð;<ú¡F>Ü>ùú>—\>ÑÜ›? -?:‘!?M1?;·>Õ®Ë>Zê\>S²)>ȶ‰?¢]>ùT©>’µ¼>V° >_o`>—=n>·Îv?¬??ü/?D á?DUí?/Ây>ì%A>žWz>×üw?+rm?eî¾?Gv¥?áj>¸Ó>œÂº>²7‚>þçà>Ú%«>;Êš=¶V=è8Ö>YMá=Ø]=ÿÒ>¯»>õ9?e?¨G>Ù>™Ç>d| =ôè+=ð›†=Ùe[=D {=*âÑ=Ô’š>jø>Ÿy>g€+>Iºg>aÐ$>s³>RG<>Am>,\£>E$ª>‚­>͉Ü?†?#?;ê(?^4 ?Xv•?4XÇ>êÓ`>>Wl>ôQ>V\Ü>~w¤>šQ‰>ù5?ÂÔ>ç-Æ>ª—>›•ô>²[Þ>¥§8>Ås ?1ÃÃ?8ø?†Ç1??¬©>Ü Ñ>ÓYÊ>­pÐ>ryu>@–Ë>\Âp>ÁTŽ>Åž–>r‘¬>ÿÙ>dŽÀ>¬sP>£F8>‘ö>¸â¥>ï¤Ú>ÚU>µå>Ë!v>ÌâM>ª¶]>G”§=½â®=C=àó·>6wÅ>´V>Í)‰?7\-?"O¦?­¥>ÀÈ;>’ŒÖ>W0Ç>Qߤ>”}I>¥P>Žz;>eC‰>>Æù>4ôÛ=Ï=Ç6å>92ä>A³=>2¼Ú> aþ>L{Ý>¦ùš>”0¯>MÜ>Ãù>7Ó¡>ž÷’>ô Ê?'Ñ ?oï?›Ôà?“žvù>!8= ý2> 2H>‰7û>ñ?%Žy?(ôH? -üX>Øo>³¨Ä>„°>c@…>¹4ú?#•K?cµ?d3?Û{>h+©>?>Š|=ó ¢>Z’>È=àz>‡*>9÷þ>N´>’j>º`>½>–Õœ>Q,t>JÛç>i«>RB>)²î>@>yA>º÷>Áp>݆K?»´>Åw`>Nˆ<>]ÆÛ>JJÀ>7Ï>8t>-Šl>HUm>h*H>ë0>‹ÒÖ>y >« -¢?Ài?ˆ\?y¨>«j­>l`>Œ“m>°º>—µJ>…4¦>u†>P60>+t=è)=ÔÙ>Î>?Ûª=íL=|ø=ê›>3èL>=—>#ô:>`Ü>i7>5NR>:Ì >TÕÚ>Væ0>1ÊL>!>8øù> -™=¶‰ø=›@m> ½>¦}­?-8[? þ?D?eÛÑ?BÔ>Äåm>E®Ô=±\½==Ò£=Ä^ >ÆÎ>ñ“ÿ>õ\E>¾¡z>žs6>®i>¹õ¶>Ͷy?é?<#±?cR‹?xA?=Ï>¼ò>B×>—é> !ó=Ï¿f>0c”>‘ÿ ->…š»>=Aä=ú?> %>…mG>¥ÃM>"›y>0ˆ:>§e>“ÁÄ>V_>++ -> ±æ>!ýÍ>P—æ>ni>{Ê >s:>sTR><«­>ló>.^l>[d&>rBT>sF>˜®6>Û¨?-Ÿ?U>ÝÝI>©Ô‘>y&>Bl‚>(xQ>d2>g¡>?ö>H}`>*3”=ôé­>å+>)æ>M@>¥}>ýT®? ¦>æ=õ>¼¤Í>¨>¦—¦>fó>hht>nJ•>>aü>+(U>Hµ1>@Ó‡>7úI>5­>,Z>D>1>c¸>:e=éa=¸/>&&î>^§ç>y µ>j?>X,â>N1³>9¾å>C¤ì>[1>Üþ=øh–>*ºž>oPR>on­>[ è>_úü>^A–>a¸Ÿ>Ž>é³v?‡g?jd?%?¢ä?Y?˜ß>Å+>¤´l>ÿο?½?“ª>æF>†1M>8/p>0¨>J—=æŽ'=ë½>œP?Ý?IÐú?Fq™?÷?>ê>ß? -šÈ?n¤>Ò®>¦ýð>§æû>ªÝ >’l|>[Fû>¹q> ¬P>òE> -Cþ>ÁŒ>"£X>*i=äRK=?›×=Ø£=ðd¦=üÊ>á?>n;7>1$¨=ú"a> [=¦ =¯Vp>öÆ>¸î>*=>E$?>X“>*Ùp=ó"ä>¹:> Æ£>ƒÖ>Eî“=å“=JzÒ=‚™„=Àh=ïDÙ=ã{Ð=Ó™]>'‡>HÒ(>ï >=:b>hì÷>k’Ð>– 7>¡û$>}§> Øø=¿ûy=…Ì> ¨>4¹>5Ð=R‡=ž‹C> ã>=>9>#Æ>fO>;Є>gm?>†yÞ>ËÔk>î~Š>уÏ>sq¼>Iù>+¦w>€‡¡>E€ª=­ Œ<ûCs=æŽ>r=ÔÔß=Âo;–ö¥;+\d=À9e>;ã> ˜s>”C>;Ug>]/Ð>qÈÔ>2è>ħ=ûoí> -> ê=ùÙ$>\=Ê•=™Ðâ=Áú=^ñg=ö >Z“>¶>®÷>¾~>¸ƒ>ÝÊX>ée>¸Ÿ§>PP>½ù>欘>Ãc>pñX>={ù>›Ê>½^ž>´¯´>ƒ¯ç>'xo>._ø>V[Ž>=±>/eÞ>ƒ}3>äÇ÷?îâ?32F?:¢F?.Ÿ>¢¸j>Q½>7Ùg> õ=Øq =ÞÇÖ>H¸6>o q>V’>F=Ù¿¹=˜… =Ü 7>˜šŸ>ï× ?ê¤>Çí*>b °=ë4´>d@{>¸h>ÉSm>›Ñ„>hq>9þÝ>m‹=Ò‘„=¥·3=©/=ô›¼>¤1>d?=ÏTh=ʪ†=ô\~=ÙÉØ=­UÁ=Ö/Õ=óËY=ÀóZ= L=‹Mª>³>8ˆ+>Eˆ>~O>Ôþ=ÿø=ÿy> °½>€â>+Z>Hû#>\ô=÷m=ónô>J ->&r>|Œ÷>^†p>KÎ>JFC>\b>‚}P>‡`>ã>p6>[¦©>F~3>H´ë>Z¿¼>^AÅ>4b<> 5ƒ>> >‚ZÛ>–+ð>¢÷>¼I>½%‘>Ÿ(`>eù>GlO>3lt>#Y>*Ï>Zú@>`!B>$cM=Ú”>#Ü#>#ó¾=n0v>(€z>q2>tqŒ>¼>Ã6‘>×;W><>åŸ>Sˆã>¡Y;>7'>ú²>('>9Kx>Gj=ΟÚ=¬y=Ëðh=Ínˆ>¶7>h§‚>Ie>*/Ø>9€ï>µ/> «Í> ¤h>‡’>© ->Auà>@æ>ë~>¦³>5|!>k?–>‡€>–dó>Å06>Ù>9>• >JŒ>…+>å{‹>ð,h>»”>¡á>Ãxç>ÊÙh>Ä}ÿ>¯Ÿ|>†B>'°=ñ! =ÁN¼>zI>b2>ž)>ÜÚÍ?2?\ö>õÀý>”6S>FŠ>!>(ú>P_¸>$Y=€“=ƒ?Ô>âN>B‡6>Š,i>À€>’U>†'è>}Jù>€k=•t1=¢•Ú=½üÄ=<“=Ø=¢ùî=ÖZ=àZ.=ù£4=ã8=˜r =&-Q=9'Ë=5G‡=zP!>ƒ >½é¯>ÁY>ˆ­ä>;>D> =û=Ýj=Ì}>CÁ\>gò@>CB‚=á¸Â=ºvô=©W½=™¢â>ˆ>kå=ã¨ß=¹Ð>6 a>O×g>Q)W>r¹Ð>Fú>)ã™>!‹>G¼§>Rö/>aöÃ>aÉÀ>5îô=Õb¨=šÛ=æ>tù=Ø–J=ÇÑÙ>!O>Q¹>kƒ‰>PÚ·=¬›@=ãXë>n> !»=ãòå>¤b¼Sž¹>–¬¼Æ‰Ñ>Ÿc•>æ^J> ³+¼ÅÙ4½¤¼>˜‘? ÿÀ>ÒØ>m(E=L»H¼’™Ü½ibª>j¦Þ>’a¾B<í½óp=ëÑ>y/C>³G¼å0þ¾FÁ‰¾ >ÐX? - ->ã!k>Â<ð>§€j=ļ²½§hþ¾9ºI½ŽÚν¤0–½Mà=Æ_N>(Zõ¼§J†ºÄÜ*>DË>#R¿=‘4»ðÕ„¼+ó ;c\Ǽ•DV<½Z¿>¡Ø>Ü>‡H>ŒU£>8'p»™“лy÷>ÉÖõ>ºÇ›>O±—>7F>~h=óS—> ŸÖ=Ç»¾"…*¾Yj=/¶õ>ð–>Y¶>¯¼›>ˆ×½cj彌œÁ<¨‘Ì=K³=Û!¬>%=À¸-=‚Y=ƒ>ʪ>—cÖ>t>–Ö=ôÊ9> «>*‘>&®å=’=e% ->:Zp>š‰T>&D¢=½éö>9Ñ>wé>e?»;%H%¼§+=Žãæ>Cæ>«‹6>¿!Š>¿Ñ©>±Z>¸CÖ>ÆKÌ>~,¨>“X6>ÌIM>¥ Ñ>™x­>të>Ì,=\ùs=• ú=³mô=:ú=¿pÖ>áÐ?aü?©>?í>‚Å>É…>œÛ>»ªž>È=>›ÌM>˜2Ï>þµS>£E¸=—äU>FÞ€>7ÃÏ=ì£y<µ‚½d6>ˆ<É>ž"þ> T>>®ï>¬i‰¤>‰h·>…Ï>Ž2>\7Ö>س=nVy<Ÿ1>?›·>j\I>„¶>Ç~>/—–=`«Ï<Õ¸E½wçí½F = P>rú»>Œû>8ú\½+¨¨¼¿ó=YM*=öÑ.>Þp>„|õ>sÊa>'>Y®=«dÿ=Ã1É=÷œ2>$ ê>£V>yWÈ>Bâý>›œ;>£^­>€•õ=h`Œ½‹ÅÔ>…”>A©§>÷û>%»”>N‹E>Av=Ž- -=³÷Ý>S§Ž>S—£>t¶">J̓>+ÿ°>S¬>oMƒ>•þ’>€Ö»>/;Á>?C>%I=ú² =ïeµ>TÈk>[±Ñ>V=:>E1Î>!¨>C’ž>?w=™Ò>Hæ>Oò¤>aÃ>^å> ˜C>GIø>2+=Ùû=©¸ë=˜Æk>1t$>‚‰¥>ƒLg>_Õr>.>ðN >·º>B¤Ô>@²x=ø/Q=Ùƒ=Så><êhð>¨À>3FH>éS>19v>ë>s€à>MT|>W^ð>…p÷>~™Y><ª=Áf=ì>k‹§>þ*Ž?/W>¥ƒ>CU>ƒ¶>šü>º”¨>E‡>Veh>ot‘>ôB>A¬ >–…û>ç7:>ÖV™>eOé>:0[>31¶>Cé*>XñÏ>OÅ -=.¼÷nĶv>=¶Ù>Kci>mM¡>q¹÷>2åš>€ø> 5u=ú£Ì=Ô-\>#g~>Eœ>‰bç>xú>O_ô>a>2Û>0!K>¸Ã>6E>W„ ->×=ÞÓ>>A>PPx>j‡å>ŽvŸ>mVT>©}=õßÅ>O;>™9T>š>Š(n¼L=l=m•·>?>ô›>ï’>~é>H;R>Jl²=Ìû¸½PÓU½ÎJ=ï°> R¦=×ô™>d±t>ƒ¸n>¦Æ>©õJ>“Š•>„W>5¦X>@>%ÖC=… )K>>f`N>^J¡>…ʨ>…>¯>nŒ>YuT=Ø9É=Ï$>rÓ0>·jÊ>pq>IÜ>iݹ>Ï=‚ì¼=ˆÂ=mŸ¥= Ñ„>A‡S>HzW>@½Û>>«>nÇ>ƒ¸[>q E>\›”>=9ÿ>—’}>ÂÍ™>Òzz>Ø/>ÅVÓ>j–>l«£>pè¬>L3>zeÓ>¨ ø>ã>ƒD„>ç>ž¢ë>¨ÊV>…¹ø>“È>¡Ú>.>vŽó>Xf6>‹~‡>k>‚å·>)?d>>m>€,7>§=ûw>I¤Ú>‡Á&>¡åÑ>”­4>…W>`ô>'ó!>rÒ×>Ž>ˆ·{>HÌY>žô>^}Z>F!v>*¹Ú>]§ý>}pP>pƒ >jSû>HÌ•>X¥@>O“~>AÇ>Yz¨>‰¤º>•âÒ>[õ4>tjÁ>\k>‹>H+F>’8>O´‰>:ÊÖ>»$>˜¹>aÖ>£õ6>—Gs>)”>K†ô>/5ó>-»i>RÖ>)åª=áâš>Æ«>1ãé>t¢¿>ˆ¡>–Ã>nj>~·%>ƒ -ž>’&ê>”›>_‚->&‚Ã>:Oµ>8Ü3>g„.>’!>”„Ý>Æí>U܈>SŽ>Ž&¸>eðÄ>EÍñ>1â«>3€o>K0>m‚ >o·Q>Hñ%>—_>ˆ˜Î>M2f=´¨î=×½Û>=Zš>[ ì=ÿC=§>Wž\>UŒ_>YB->}w>ˆC¡>¦®b>Š©F>€e‹>n×^>‡¡9>ptì>uÁñ>§è>±Ã‹>ªúÔ>^Ê'>:V<>y&>­ÔP>£ÃC>c¢Û>‚Âh>#>bJi>iŠu>!à¸=±>=æ¿>”,(>oß}>tR>cþ—>5D&=ÐîÇ=& Œ=Hf|=«IÛ=ëZ+>?i>7«Ë>)â=’<>=¶²Ì=ú¯8>4Ü>7-Ÿ>1+Ê>;Û>3¦>xˆs>qjä>OÊž>DHJ=üN¤=ÆáN>tr>6ê> »=Ñ­Ì>A>4ep>xW>]'É>IË>8zž> Kã> k™> Ð6>"1->öy>a8>-b#>Ï>üBÏ>¨>0€>,¼õ>ÊT>#»I>m¯Å>žÉK>F`š>0>‚qÑ>K¡A>¼=ñÖ†>;á€>yÍ+>ŽßÈ>:¡ >È>O¬Ù>(Öô=Á/x>k„>0ï8>A¬x>Lµf>M~,>/<>ÂU=ËéŽ=Å´>"S>OÉ#>Z³ç>Bx®>ÆÇ=Ô)¾=‘Œ¨> c>O'1>|Þ²>U*>J”ä>;ü>î=ä\=…ŸB=²52>%éJ>w·>d/…=í8 =>Ò>»ž>]M>*ò2>-Ž>j=è[>ƒ2æ>…¾>„‰’>©>5[&=Ö"=èr>/p¯>8Úª=º/=ÃÂü>â>y¿Í>`²•>3H>Ê>GÔ|>upL>ƒE¸>šª­>ÛÒ>2dª>;é>:þ·>?œ+>NW>Z>Ò>0=óˆ>F>¥j>O#‹>M+Î>I‹Ë>0#ý>*ÚÄ><™V>Ofj>eCø>SQy>$£>*3>Û†>Ó>5=ôk—=¤o>â6=¼Ãù=by=ög>P®>#²º>@X¢>N Ð>L¡>j=ò=Fµ=¡ÿE>£R>QÔ=æWX=¦ÇÚ=¶â…=º‘=ÀÑ><–>6/+=ü†=ŠAü=d5…=ÝA>8P¥>N‹±>‰‹>£ >§> 5=Ìçæ=ïßq>–ë=à 6=}ê=©y >P0>)R>DªŠ>&>p`Ï>ƒµ=ülÉ>Käu>2ïÁ>ïO=Ï#">R+>=¶Y>tD>dúb>n›¥>„–>‚Øk>ˆq£>xpý>³Ë=ò"h>õ>(Ðe> <õ>2¢>QB»>Að><ô»> -–Å=À§~>4œ>a÷¡>5ÿd=åýv=“ê=§Üõ>cíë>Ž -¸>†‚>‚/b>v^À>..O>Æ>MËe>oyö>V[µ>-àß>…»×>®ý>‡„¦>‡ž>ƒ¢>S†>Z,?>nQÝ>†Õ¬>‚#>D>Àç>+„>-ºÖ>Y“>X”[>Aê >M}>9‡Ã> ©Â>šŽ>Ýù=å}¥>)B@>Ka¦>6¡‰>}Žñ>Ž=m>YKÇ>²”=ðo×=ðc<=êQ`=ÿ^v>çM>—=äåÚ=¨5¾=žQR=¥¨D=½×î=¯ÊT=ï“b>Òç=øþÜ=VÚˆ=ï>'ù¶> Éþ=ú‰œ>:ä;>HÖ>&ûƒ> -ø0>'#g>7=á3Í>‚ð>@ >-/ã=úžá=Ë*¨> =ëå€=Æ)=ú¸m=ûp=ÿºû> L1>&˜O>Až]>9ëR> oª>(A…>V{> –e>G >Jó>G(ñ>OÊ©>8 -$>è+>@U>õ˜>%,ƒ>#_+>#÷÷>kR>@w”>h€˜>D¤þ>Z÷é>D—>´ >vP>"ѵ>&0>”k=áÜã=ùÝù>:´(>&\«>0ª>8Íš>p¶Q>S0T>(qK=úŒ¬>>ã>—Æ>*Ȥ>RÒû>$º(>~Ç>1%Ë>0>ß?> -ÙÕ>!å/>¶>(»>nn=›–R=¶&Å>3>&r=ýº=ø±d=ÿ(ª=ÓuP=¿;!=–ê“=}N=ÊŽ>êÓ=×’Â<óˆ=¤5¢>Ê8=ÐÜì>2µ>>G‘[>N>‰>á>?Ó„>‘«>¦"C>f„à>?ù>{WT>fn“>N¼G>T>>*>=ŠÓ>»„=óG>„š>Ëy>(eP>"¾'=Öˆr=œ8> -+]>:#Š>F^Ð>/U€=Ô¦=å›k=ï7=СK=Èè=^>Ù>•f>w>,„É=­œ>x>g•q>Zÿá>2ýi>bsg>ieØ>PGš>Mí#>Ri> ˜> -Õ>=K>R‘Œ>}÷.>ƒª>„ q>vÁ>PÖ„>Lü>{>•–˜>‹æÛ>5û€>%Ç> >0¯?>XB8>p‘>m•Ó>7eÃ>ûà>SðÈ>|¼Z>hVƒ>3µ>)™Î>-4ç>Zg@>mö>Z¨>`›s>’þ'>šž>}c¨>Z>0Âk>Zxè>zZ>VÆ> .> ÁW>G½>™Ñø>»u>“Õè>^‚x>iý=Êö=àSù>$†Ë>uC»>‰O>J u>2_>ì*=—½u\¾™Í¾£÷j=ç‘>‹º>D{a<ÿv<€²Û>b_Œ>ž£Ù>X7_>Tóh>¥V?•å?&ù+>»¦¿½ÑZb¾è c¾‰Ä>=tÿ¼ŸÝ5>¢>ö ”>¤¬<š>qtb>É9/>ƒxþ=Ñ!#<„Á+=LV=±yÁ<5%<2Ï=†Gß½ʾhªä¾’1ì¾­Þs¾\·ˆ='×o>1Õ> - "=À§T=ϹK=âs>!Aù ->ùS½u!¿¾)=º-tÒ>»0Œ>ªÜ†>&=Tµz=ê°©> Z~;ÏÕa>h²û?Ês>ø1>‹6e>“vÏ>¤^²>¢¥Ð>y\d>q¹p>‹š9>Ÿ ¶>ââ9>£Þ®> üÐ>\Ì“>#Šß<ƒàÕ»™Íî>4Ž>šÔÞ>¶î¿>ªA=Ñʽ¼9æ>¡5>f'¼lUá½+—³=@ís>Î<µ½Ñ¾Nýª¾b¯=Ú`>X«¦>³`Š>‘UË>kü‚>]tñ=Áá¹=P¬<²•Ê=Ñ™<Øu\“>.¢)<¿Î/»Øà>X >HþØ>L)î=bu¿½ƒ£½¶νúŸ½Ú«¾™¼€!>ÆT>I1s>°?=žé(=È$b>awì>‚yD><º=îN‹=‰Ûç=*¼Ô=„<=ñ|>@l> -¹=¬oî=Ýj>@£T>{ˆí>¹ÿ=·ÑÇ>H8R>XC»>ˆžjñ>,¹˜>P{>vb|<ßR“½ÊÖ{½Ÿz½ùõ<“p=NkÍ>Oá>¸ÆÈ>dÃ=¤W‘>î›>4üÖ>NÜ=ø¥>" >±-=>¹Ù>§ -é>©Ø/>’A>Pév=;É«<–Ùb>Kz)>¨7Y>²šñ>“cÍ>YÝ>?Ù•>GŒù>_<>‹ýƒ>¹ø$>›€>ƒÝH>ª»l>Îxf>Ôl>ÃSk>¡ýc>Ž…Ø>~˜>h-Ú>„Ó>>±”>&dÆ>XQV>"ðz>e>UÈ?>Hìë> l>(‘4>@[>D»6>[‡£>cþP> ‹>…²·>&ý> >±© ?<¥>æ >‹ &>€zñ>Jþä>5–> 8=ëvâ>H‡F>HR>‘Z›>“ù>n†%>b˃>U€>©Á;†|»àÚ¦=ú=N>uO>¢~…>‡ÄŠ>ŽÕÔ>‰|:>Qº>"Bë>GÇ=ëÛ=½™ë>*‡@>X~>?ÍŒ>2ÊC>Eá>b·2>s$>…¹>“ì˜>–I•>‰‰Õ>Šœœ>}Å&>…™g>©1‚>¢Á>ŽÎÌ>]Md>YÍK>H¼m>,T=öOU>§>V{ó>‡è>7Ó„=·Py=T=®Y>G9Ç>»L>Ñ8X>På>>K—=×›<=(¦ÐD,[>#fV>ƒ>Ú>#SE>W¯=²Ø=eÄ1>•‹>b ->,¼™> UB>kñ>'Å%>d.=þÁm>B:=°Ä<ª;½kÞ<×k$=ðÑx>TO=ç•ÿ=äN=µ/&=ä”5> Ë]=èÖõ=ÐÞÖ=½4Ž=Ú+…>LG“>m>p>e—µ>nÓö>c]}>g ‰>%h`= w>/<>zt€>{g:>¦ì¢>ÛLÌ>þå>êš’>§†±=åf¸½©† ½¨îv=hS>FÝq>ŸC>Èñ>Ý>žz0>y‚ä>Á>]Ò>GŽ£>u >Ñd? OU??ªN>°€f>\ÞÆ>eèM>‚Óû=œ|†= l¾>Mf>xt>Oˆç>0Ô:> ý¢>=J>pgÝ>unŠ>(²o>%AÙ>1¹Š>Õ`>³ >»>#® >«=Êø¸=– -Á>$L>H#>%½>¨­>·Å>>O»>cí·>@ÿN>(¾¯>Ãô=ìlé=ú†Å>Í>;9Ž>M”>žh>“¨>]~®>IÛ>zï>†Dû>€so>]­¢>:>£>7Yß>RÔÜ>ZOñ>$ËW>,J>?¤þ>YI>PÉ=¶¨=«ÝO>BÝ>©E=Ä—=£q²=ßK'>ÃÈ>Yr5>a†Ì>@åw>${Z=ÿõ€=™_o=LJö>mœ=Ü©==Í M> Ó->$4L=è×=»$>8Z>€ÖL>’'Ú>bå¬>Ì¥=ÈÌã><0@>ˆæy>šõ%>¬ ­>ž`»>hI>i\>ÃÆž?lâ? -,?™ë>©x >üC=Ño9>nl>YÛº>‹¤>¥R•>”&Þ>\|Ü>6–r>ê}=ÖT#=æ­§>ýÎ>ÀU>oft>ÞÉ?Yg?Ÿ›>µÈ>%,=‹eú=¨§N=þbS>1tB>]²>MO•> £0>’>N©>[7>XÐ@>H q>ã$>ôÐ>·¾>kå>†x>*C=ù·=Ç~r=é_»>#ô>kÌ>”»u>—ió>‰´ >šØ†>Ì@±>êGË>À¡Æ>^™>Ϧ>/. >1Á2>œV> ¯é>d(>€ ë>ÎU=êÓ•=;‚Î=»\><Ì>OU>%p÷=õ¾=>„Ð>* ‚> z">(Á>OÆ{>…ùš>7=Þ†Ï>I*þ>‘ -_>¢:V>…VÞ>M~ˆ>\q>Mîå>_Iô>Žf>{Åó>2=Ì•Ü=Ó) ->0Xè>K¡Q>‡O>Oy>PÒ–>A¸>%o:>yT>!0>:—˜>7Ñ/>*h=×{ï> ›¯>J=÷–¥>V]>Åw>ái>]qñ>q ì>^÷—>A–˜>4l5>Bßþ>j8r>|—ñ>l£>uˆ>—¯‚>­ÓU>c>C >H¶ >l’ >÷E>txå=ïÅÙ>‹ >=áe>AG~> 5P=ž™¼=»/O>=i–>”.->ºØÌ>ÎÿË>ʇ$>¸|h>‹Ò>U5>Ft>3È?>V’°>„.5>‘,(>«F>…ô>Yé¤> âA=6˜=xx±=çQC>Jæ>œP >¾±>Ÿ -«>`îú>$¿Õ=þ¸b=ô±Ù=÷úà>&ó>Mž >†t>±×Ž>ž…3>…NÍ>ŽgÊ>«Ñê>¬Id>#ï>)]³=ÝRo=µwÀ=©€©=Ú“=þ0ñ=iã+=žÇI>'3{>$]i>Hº>(4Ä> Ž> r>, >7ï>hÿ=NG=gž=³±õ>P¬>‰s>€úL>·2=ì>‰+>G>2ý=ø>C¢>Ô†> kè> üö>Ž>%·>·>NÊ>!°$>"d›=µêž=Ù¹ú>Gß>9±7>G¢ã>M¬>R”K>Œ@|>‘ñ>o/>ˆ{Ž>ž6*>•xR>sÊ&>)Ø´>x=ýœ>2Í >;º=øHY> -b'>‚=ýär>ò>È›=ÁUô=äÄš> Ùe>B>Sly>@ÊK>Åg=ÁM=æ%Ô>PÀÊ>3_(=çTh=á:›> /E>"Vì>²ä>y>x>6 -ë>,/œ>DË4>IŸo>Ò—=Ò&<=Óˆº=ê‚ÿ>/ç+>.I>h/>sÍ>"@ò>1 W>J >^R>S\>C[R>:ç°>.í(>?Ž>/`U><Œ–>cT>‡)©>–41>ÂÓ>q×.>É>ªD¬>›£ >ˆÓ>dÉ>*£>,CÁ>r4>„.>AZò>8u>h7R>Í“‡>×c†>­çv>¬ *>¥Bª>ŠÊ>c²>Mcš>@³>[\¤>˜.…>Ój>lcu>9çP>¸ò>=œ”>yá7>B¤‚>.ép>Š¥Ã>ÈÑŠ>à>Çî>—ðª>šz>Š'>"=¶=ÿ°>Mtƒ>+ß>œu>vR>8â™>ƒóº>}xd>%Mv>Vú>D\Æ>6C=Áv˜>@§É>x—‡>‚=€>-WW> -ç^>8 Â>]Œå>gó5>Q&{>RMÑ>n›g>‚u)>Ç—>”ab>¦ét>¬ß¤>€ŸC>>¡>4òî>§ó>NýC>`‹>b»c>é¿=ñoW=úYÊ>$·}>,”M>5à*>P¹·>#&=æe”=ÓѾ>è½>z>æ*>,v> -{=Öñ"=ã¤3>>Ç>I†Ú=¹Pª=½2v=ȧ½=‘Õ=¼üý=رE=Ùy>é>( >d=£Ýf>â˜>#$>É>£‚=¾‡L=Á> Š3>Ý=ƒ«^=¡ú+>]‚U>]_@>0² ->0²ü>ñ¬>Òá> -íš>>Kã>C†”=ùº$=ÂCÅ=Æù>Èh=ü%¼>$XÈ>y}> ’õ>aH¼>†ž6>sͨ>ƒ¥ >™²Ì>l >œ-=ó7”=ÿVó>¼y>&Ü?=ÜúŒ>6 •>V>-> >)/Ë>ZÐ>P5*=ïΊ=ñíX=ÿ >&Úí>>2–=ï¥Q=…4>Í}>A.ù>g£R>‚q8>v >Ø°>Ê>>4j‰>!§Ù>ªã>f1„>™G«>¹Ñ³>·mÎ>‡ ã>¦C> Æ>Mhd>{êŒ>dý?>/õé=þÐ|=ÛÑŠ=à\Ò>Åâ>'bþ>[>#ÿ:>lc>ðÖ>‹9(>†=>u–>”V >¸ V>ÖHû>»]u>’>A/á>Z ý>Ðà&>èâÚ>ƽÐ>Ìz>º¸”>‘SÍ>=HÍ>Tç¼>møÏ>‡_R>±6>¾ƒÑ>¯>š(>­ËY>Þð>ü3O>×æ÷>ÀIC>³ ˜>£Ý¨>@°Ñ>@æ–>X ¸>[ñÃ>¡*'>¹,>˜=>ñÂ>Ò>HtÝ>^x=ßö0>%%>C¢%>JÎñ>vTw>•Pþ>¯ÑÖ>¬Ê>—Í&>‚Æô>MGd>_ˇ>F'3>F1=Úôw=M„2=uç:=Î^1>&4a>;">[~•>{ÏZ>šeÉ>§-ˆ>’dè>J- >Ε>$Œë>>“I> -ž>#îÇ>#Ç>#U=é‚g=R)Ñ=7¤Ó=ª&–>&(>=ÓÌ>EÅÅ>Tþ”>LKs>?Xù=Ê¿/=Ó,ѽE]y½óSx½†~¹=]l=ëÎq>‚ׯ>©{¡=ìÿ#;µ/¾mñ¾5û=ŒCÒ>7áå>T8~=Áx =¥â–= Ѐ½-‰Ó¼»æoy=žÂ>‹6Œ>—ò¥>ŠCã>b]~>|̼‚@))¡R>¥¯W>¾ú>G:’>9`Ò>„k?>iÿ¾>‚}ú>­Þ»>rT¡=ùÊ;Ùܽë{>‹; >Ê…ò>Ô–½gB¾FÖu=¤á¨>'bÐ>¯‰<Ñä±½wœ8;oå=¥Y>xxY>Ä">Ëï‹>—D¸>7~Ù>1ê_>f÷=zH±=D¯<Æ—n=ÂeQ>‘‹8>Ô—>ËÔ:>Ãò>ëL!>k=ÓÑ=ÔW?=…˜> ³X>V†v>2pM<ýyq=X©> -2ß>O0×>Í>MÂ[>%sþ=«C<ñ;`>K?6>HÝ>Ò†> y>mÎ>• >sNë=¼º>.>BÈS>Ùè> HÓ>%•½€6í<Ɔ>å?£Ä>Ђ>$L$=ÅP>.ª>zŽ©>ŒåŸ>LÏÿ= ;g; å=­?·>NÔ{>G´6½˜uZ¾*Éb=ʽ¬>mlC>$ Ø>ìÇ>ÕÜ>—ƒ;>Ðs? -v>‹ ;„Ã÷¼´d¼åd=õ}D>zá>†ðd>$Œ¼A‡>wXÑ>Éà‰>³‚=m“¸½Êµ‘=2î_=ìZ¢=ÉN?½lÊÃ<½:=úS.=):z;×t¿>Æ >œ_„>ÆÓž>&óÚ=j=Þ>¨É? -— ?6>è‘>5¦â=¦O|=ºeq>á§>ŸF>ÂÕí>ƒˆœ=õÀª·r>tÞ¢=©ü=¶³ ->”C>ª[ó>äo ->|Ú¥=¯×‹½À˜F<ŽËâ=¤=¸˜*>n+v>•Y>?Á£>U>*>³¬>eÌ\>£¦>’]Ü>xÛ.=ÒP³=¼óþ=j ‹=ä…x>·Ø¦>ü¨É>¨G>d[Û> hr>©Ÿü>gja>„ž->‰òƒ=©ñž>!ˆ>žÚÙ>Á>«>ÎA>Åz>¶0Ç>Ã^>œ²°>‡¨>SÇ>Xª!> n>&Z>ŽC>y:U>Fá<>+Á>tä>[ >FÌ»>a§¢>«!ê>Õ>Û>Á`>—¦ê>dÿ=ÙÛ>0\§> Æ8>WYê>ƒ‰t>›áÕ>Ée >¸ß¸>™©p>Å$>žb\>(4M>p~Û>Að-<Õ8>¡¯>;£F=—?€< ]Ç=½?=æ°ý>@>z#é>ˆo6>€> ûß<íº=úÜ<>*«Ë>XTí>Å>­ßÑ>ž¶ >¡üå>Ž,g>Eh>Ev>E‰>E ›>Eª>E¼>EÊ>EÞ>h¶v>cí=鈋=ö¡>†>!œØ=¿ ý=˜ÊŒ=ð§>:E=²Ž‹:¯œ=¥‰‘=²ó…=ó{Ç>9ã#><¢¨>]Ïò>ŽÈ¿>¾Þ>2´è>§œ>Kßc>p3‡>h@“>7ËØ>=£·>Br_>8­¥>M%©>qµÚ>~‹µ>df >BÄP=ãœì>?>QS >Ÿðv>‚n]>]Ç<>¢ >£ÛV>‡ë2>IV&>%>ú$>H}^>']Ù=¼h=ìáa>Å”=¼"(=½N^=m×Õ=£X>‚>s=ÖŒ›=äEi>rä„>šN>ƒ›>U|Æ>2©5>C/­> -|%>1>bö'>˜œ>­z7>€žâ>DÉ_>6.$>pS3>‡°Á>m–=Ñye=«š=»ˆ>Hë>dÀ'>>×9>'ø§>/¤æ>yä€>ž½æ>’¦°>lDY=Æš•>ù>Xaà>@¨w>.×æ>Ö>2 e=êÃï=_ýñ<“x==VÃ=–š=…7=vz‹=„¤#>ÝU>(ÿ¦>j'>‘ˆo>…çA>d½â>Z÷>ˆBT>,q=U©=Єñ>=> Å=é'ª=Ñ> öœ>,Ù>g¡=Ú—@=ÁZ=ÌÆ>a%>*+ >/Š(> ÜÞ>%7>öÃ>*¡2>NÚ>tA>ˆoþ>…>”|Í>›Å¬>’Úß>6›><7Ú>!H0>õ§>-]î>Rro>?M>>QjÈ>„ÂŒ>t$ô>^Þž>S.¹>wG”>=>†…¶>”¶$>‚Î]>¢aE>¥¾H>|=>`œQ>Ê=æ±>ke >š)é>‘¢_>Ï7>cL¨>ë£>> Ðï>@7>E§=f¼\u»>SF²>Ö`¢>ŽTq>V¾>œ >69>FÐ$>ÚÍ>8T±>P¼Æ>P6ô>C>vÃ>GÃÊ>}\¡>”âj>§">”od>YaO>`*>>Zè>Kü>–}>9p>-Ô >,­À>!Š=¦ =Õón>EÞ>6ž>/÷C>Q˨>hÉ&>XPš>@ž5>M.¹>4ê>·Ä>%„å>LJ>؈>À(>·EG>ëùÑ>÷\ >­ø¬>}D®>b^¬>}®>!’ê>es>S”>[m>€Ó#>€Ž¾>oê>Wü>‰Ûâ>eÖ>³t²>Ë B>¼ïŸ>Y­>‚ ?>†B>0"ú>c>$wr>0¥Â>†l¯>|±>€{ð>fÇß>`’j>“öY>Û£Z>É >‚Æ>¡â>߇>-Ïx>Iç>YÍ4>o-Ð>a¤x>D4>[YU>z¸{>@¤ò>Qt>Nê:>s6e>”3e>´ˆ>Çoð>¾“×>–'9>pp[>·Æ?­;?™ú? -ë±>½F5>—¿>„ Q>YáÅ>3@r><œ¨>ªÕ«>Ó"¶>ÚpS>°¾¦>yùt>E¯Å>)”->„Ìd>ó¸à?—?µ)>¹VÊ>[‹0> ‚\=1o}=&Ï$>Ì@>\á>mF>qý\>V]>Fö&>@‘¶>„©*>›Û¢>‚¢j>RÃG> ¹Á>—Ñ>U«>:HÜ>"ú>v»>=°è>CÌc>>n5>&†>4s&>Ž<>¨-æ>|Ýì><„à>¢r>PH>G²¨>: >Ea>¨×»>Ï?ue?H¤?  ƒ>ì„q>²yß>˜n>ƒ†Ï>6Î`>ûÚ>&òb>*{>§‹>Äã>›u>i?9>P¯ÿ>U´²>+{)>—>vÞÚ>óþ¿?’Ñ>þ@Ã>Ô ù>†‹V>¨W>‡ö>B™=È7ú=×Óø>ÜÒ>0Éá>)!ÿ>nËT>Œ3î>v#¦>*í¯=á œ>&Šƒ>tº>¨¡>ª© >g•´>ÂJ>½¿>À,> A>ÿ¶>*÷Ü>©>§G>*´˜>)[>—=Ùò¼=äÕÚ>K+=üÃN>8M>yn>:D> .q>2ò)>sD>Lî=óg¬>!λ>“å¾>ÈtŠ>¶7£>Çd‡>Éþ/>®µ>¢o[>Œ¤»>f-_>Ij1>Dª4>^X>§½?àº?¸>ûï#>—­°>`©>ñ®>—C>ƒ±™>V”9>¤H>ÓÔ8>àšª>¡¤^>V{8>(Ùå=ÓNr=¸“.=ü»>>gˆ5>À2ø>úãy?µñ>Ü$>d <>[Ñ=謀>ÈË>3žJ>3­/>!´>;4¶>9J¦>2´Ê>®Ï=ÿóÀ># >1ã†>_$‰>@æ>!¯S><© >JŒ >0¥>;î°>h\p>‰‰r>’AM>Àô>Ri·>d¯L>(Ü=Óîš=úœ^>0â>–Jÿ>ÙC¤>´S0>IAÖ>!ö>3 ->nØJ>u;³>€†S>j\È>BH€>1«D>7¸¶>eŽs>jÿL>4ð=øG9=¡d~>!/>Q)É>Hõ>#¹W>?ys>EFf>T°¶>}:>‡N$>lB®>$õ…>>C£ø>O5þ>?7z>=6Ò>_ØS>‰6Õ>¤Åº>·ÔÏ>”©>RCk>^â$>|Š>¯Nš>é±? Ü·? ìÆ>ô†ä>ÓçM>m·>7Ø™>Bæ>K>€@}>Â&”>ä0‰>Ç!>™å(>D¨=Ú$Õ=Ø—Å>,ø>h@7>ƒ!>­Òm? -ÃF?Ý%?TT>•ÙÍ>ÖY=Ýü=øƼ>ö@>a Œ>•c>¥•°>¢=â>‹Hú>n Ô>oŽL>|Ñ:>gÒ9>0·8>Ã>ê6>>¿Õ>9Ï>=œµ>]+ ->L!¾>Nâ0>'’F=âhp=¿ùž>' >Xn5>]œú>r&Ø>nüì>zÐD>^ƒ£>‚$û>„à¶><\Ã>3">2 -`>e9 >†­O>v²n>Rì/>5ë>_>™2> -@>z´=±È=±NØ=Ê6Ò>Õ >ó°>õ> -žé>/Ñü>^AŒ>b>{lG>P>kÁH>À =÷òâ>>L>O ->gný>€p¬>zz`>Œ™¬>•Ã>y4™=éÝí>·Ç>`èÝ>kú¶>Ž,š> ~>sAu>Z ©>iÂü>eÎÜ>SAž>';y>ÁH>n–>QòÙ>Lõ'>H,_>5È+>-K[>GvB>kbP>²œ&>ÎêŸ>Ûã>ß°5>Þ4¤>Òqä>¨°õ>(Í‚=ûì!>.ª^>b#x>!^>«ÍÞ>š®Œ>u¨„>7ù+=Ò€h=mÍù> ¼,>]‘º>i'>˜“>Ù‘ ?$?¤”>¶d’>Pm"=»2p=ß·i=ý8Ç=ðÎ÷>/ñì>+8µ>ç÷>'>'ö>&é¶> 5=£±=æzð>ËŽ>'Õ3>€D>„Z>VèS>1ÃF=Ôáç=Às*>Pv>ç=ã…¿=Õñˆ=ì> -=ð-N>ò•>>¨„>rK>‰¸¯>KJ>›7>©£O>rÝ> àª>Î >Oé‹> ¢^=×úQ>ÍO>WKù>\/u>N€ã>3Í=±?¾=¤¦×=ñZ=õJ>Z—>$J”>&íK>>‚>C•Â> _g>Aàé>M u>D’¿><„™=ç½=Æ@>wu>Uy‹>)lá>÷D>-dM>tªk>ƒ”¢>{>®H%>„>Vêé>F.1> Ú>-)/>: Þ>¾Ë=à¤ð=³¹R= _=ÌR ->q¤=ó`H=£¯>+C>s/å>Á"h>þ6—>ð±µ>wÀ•=”Kñ»¦ÛX=¡!=ÚNŒ=¤ qº»Uó½]k ;¾;é=…aº¼OtÛ=‹¿Ô>OÎ&= õC;±’;=¥=B=œÅR<ˆa<{ÄQ<´Û>FÀ>Ÿf>¸:>‘R>?}=¸¢‘><Ñ¿>G\E=ÜZ=ƒÃ´>¥‡›>ûÎã>Dçì» s¾<™qË=2Ç=-P¼>AOŸ>‰ï|>«è=.´”=[K>Dkÿ>¿ãÔ>é(j>±Hh>…@ò>øÀ¼|¶½BÓ½¡÷K½$Ó\n›>GÒÉ<í|…<¥Põ=×ë:=».>ŠÝ>šu>ŠÙ>.ý÷>’W$>—QŽ>5ú>#Õé=Ó# ><>‚_2>#å­>5“>&"@>™ú¸>ÅÁ4>å/?>ØŸ*>‚´8=á:>LÂ>ÌÊ>©>!ÒÛ=ŽZè=ž×è=qÃI>òs>|¼÷>3 -·=ïì£>ix>‰,$> -ª:=Æâ3=…›;>c±ò>­kš>ª&ó>3>²>P'Ê>®J>é>Ú¤q>§D·>ˆÒ>‚´º>¡5$>¦”+>ŒíÍ>xÝ>É>’³1=¼¼ Êd=•ˆ>^4=æ#¸=2Ûí=¼»°> 6>$û >€®>U“>’†%>¢û>>°4°>€ëÜ>'I>'Ó>|~F>š/æ>@û)=£Å<¾ÿ¯=AÑ=ðžÍ>„šu>yI>I\=ÅJ=£U®>+Ÿ“>Fèö>§É=ñ‹=Þ|>JF¡>¢^q>´ë2>·>>FÆ>™M>–x>/èç=éï<ùŽd>9£4>ŠÀ>~º>xX>v¿9>€×V>nSþ>0œ}>,F>FËo>hLi>†À>`ñH>y‹>(Ö>‰ª>Ž·°>Šx>­ßC>®¬ô>Ð >¤í >³2 >±Ù>–vþ>¼ÇË>Ɔë>Ââ­>­xo>¥¿ž>eU’=þ¦Â>/ÕÂ>;&Ï>2Î>gO†>~Q ->yJ¥>®S>Àµ>€~â>3”>S<Ù=ä!ð= 'Û>l°ÿ>lw+>7š=è|1=T¾Ê=¹ C= ´Ä;%¿ ½7E¬½)%È==û¨=¬?b=ŽSh['Ï>… >„š5>œ!×>žÓ>‰Å>4&À> )>OÈ“>‚â›>xî -> ƒà>Þ>Fœ>+qK>#¼ê=¯ûE=|¡Ã=°Ÿ>.+þ>:Uß=¯ø”=çÒn>Xàñ> äc=žžÝ>)ÛR>_Ÿ<>IŽ>b m>rý>>W†1>?l>&NL>1‡¢>;ÎÅ>@Ë[>š©=£ÿ<³õ=™Þz> Ðô>¿>"Y?>Œo=ßM}>•°=ÅH= .·>b>‡±]>Š >s3>¢X‡>jܪ>+r -=¾x =` º=|ë?>q+²>–”™>ƒ™>0j>‚=öù>+ZO>TCç>-†> Ú >6C>%ªw>!Å¡>6K=Ùo[>Â>&k>-Æ>"Ì>3´>Ñ#>G!>*C ->zž<>[õÅ>bÃ=ÚÕX=Ð[ > d=¾>1òË>Ÿ0ë>·Ff>¬ü<>[äÕ>Y/…>…>=‡*"=S>¬á>S8š>Šè¿>z±Ã>Hëè>/gü>câð>A—ï>ŒÛ>%Œ>CŠ ->Nç>Yúì>’L×>{Q¨>V>aH)>9Š/>)9F>)=ñ …>«/>)Ç>iA>']v>IÅí>bÐ>}ï£>‰äø>€5Ñ>6Þ>œý >°–Ð>¡£H>2’>ƒC±>‘>’ >gæ°>{Bþ>«Ê¦>¤å“>“³ì><™">» >J =Öû>>¤I>á=:†;»AÓ=Ý - >W~x>›‘>‰¹7>Mñý>C€0>E"C>*Fg=Éô]=§…‹>Af>+÷>Rù=ßÓ=ÏÙý=Ôxú> .>!m¼><G>Gßp>!²¸=Û=Óq>éK=Éý=ý1>(Ð>2}¤>Z «>yÅ>äa>ƒÓ>Séû>Û,>Ûì=ŽÝ=’¼Ä> ÷›>M{>n©>’1B>}5>f#ò>NiN>JØ©>>,é>x¨ý>[,=ö >÷È>ŠH>&ùÔ>& 6> ’>-ï>Fm¾>^Òï> 5>!u>MÄŽ>¢G>|¦>L6å>^â±>}Œ>´bÄ>º¾–>¤ - >­²a>…'>¥> /‰>¢Z>[Ht>.Zã=ñR=§£k=Ú¬»>@º´>cÕ>NöÇ>Rï>" -=˨=ÊÀ =Ñ> £>3`º>OÜ;><š»>4Ó<>\q6>†2>BŽ¼>Ŷ=«º>2:<>rÀ>wŸ‘>t‚>I¿ð>R€§>qxü>Š¾a>(ý>ˆÄ>ŒZÀ>q-¸>6/µ>>Æ[>gYâ>VÆG>BÊ–>j+5> >€J>K‚>d==šoÄ=•>Œ>.fY>@Üü>$ÎQ>˜µ>Dó ><½»>/.š>J¯µ>HkM>j£¯>*ÞØ=I€>üH>-;Ô=þ“=Þú¦=ÔŸ=ñKŽ=¬'=õÐ=ý¹L=÷Ïx=ý@q> õ>k— >zCð>H¿ ><´>¯Æ>%íP>8ʤ>.†´=ø[g>3œ>3Ò`=ý”g=õ}'>&>˜›>´£>Ai+>F;Ì>1¥P>bíZ>aÕç>f·>&€> -È‘>~:>Z)>h·Å>nB>1ï>X…–>köý>sÙ>Kåg>A>m8>ƒGÑ>sÊ>}·°>}¬¾>0øâ>X›R>†3>5:Ý=ø½a>Ó -=ôÐÉ=êÖµ>£ß>˜\>0¬>`²Ð>Ž5Á>’óÂ>¤›ã>Ž&·>‚T§>cå2>&¸¹>®a>Œ;=ôþì=ás²>l:>Em>.;Ÿ>Gq*>¿Ÿ=§Ý>HX$>c9#>7ù°>d"Ý>_…±>54®=úð>xA>Y9Æ>‚¾>h?4>3e >@¦>?r©>"a>P,>†}f>Ð>Ù£ä>Ó?Ê>™1¢>?ü>I(>~N>bú‹>0½*>¹î>Gœ=>r²â>©Eœ>Ñ‹`>×jå>·kZ>rñ®>Ù)> -@K=õÑk>J´>a%4>/¡$> -½¾>=ÕÍ>èæ=Ë’ó=ÿ#!>?˜J>[L>›k>ØQ¢?~Û>ä3÷>·a>‰Â(>òû=ǤË>†>Á>>ü>ˆ@–>€?F>‚¿‚>¶mõ>¹=B>œß >F‚c=èÁ=þW> >9t">† -s>Ê^§>Þv>æå@>óÆ«>î2>Ýã >«³°>:=¸>rp>& A>?vQ>‰ +>ÎðÉ? »ï? -û+>ìŒÂ>Çil>>FXü>Z›§>s‘Ø>c%P>Ãá¹>ìñ>Úp>®×f>£*+>åÓ?ÌM>ô£d>˜åÃ>í>5V>dp6>³ÿ>>éœÃ>ø46>×9³>—n÷>z¨$>0÷>DË]>Ã>–j|>¢x”>½3ó>Ö&N>³Ph>yS>O…ü>Y6>d=>³=>»>§î&>„ÞL>Z²ö>k$>¢G>æî×>íÊ>Ó©–>‰¢,>]8>j•>FŠå>J׬>€wP>¢­ö>Ó¥ø?Š£>·rî>¯ö‚>Ùiü? z«?'ì$?+ž.? -€>»§¿>eüÛ>C`{>W i>¢ƒ>¯‹>ÈÑM>Ý\Â>°¼‹>‹o.>Bã>(>'{>ø.>Q©N>u1>]>2kŠ>6V>Ez>Åp> Ò>@´>Fr/>U.Ó>L~ >iÏ9>nää>pm4>f>Pߟ>D|,> ‹ô>8%>m†»>†–b>$>“˜V>¤|Ë>Õåä?HC? \>ÜÐ >V‰ô>&‘S>jh@>É(L>ëa">þÒ'?%eÄ?>û?@?,eÃ>ãÈ#>™×È>{Ër>K">svn>±·>ä—Ù>çVk>ÜÙª>· ->‰¢ê>P•ã>G§>°f ? ?35?ÿ¤>Ô§O>øÕ=üÊ>ØM>7_Õ>e*>ô> ‘½>%_T>M‹t>HÀ>°Ó=É1 =îè>7,>2>7ZÈ>‚dh>v7ï>”c¿>Å¡ï>ý¸>ß5>®e>Yí¦>4@|>‰ù>A¶‡>A;H>GQ>pòª>Ÿb}>Ï{®?$³>õ!G> ¸>OÆ›>=Pu><ßB>?Â>?åp>6ì >&±$=æì=èÞT> -Ò5=ùÊà>Y~=YÀ=ä=à–>.N">9ð'><=í¾Ð>#>CÄ>d© >W«Æ>]÷ß>”ˆj>yô>NÛ‡>+âÌ>Rk,>[i>"hÉ>b¬²>úV??0 -D?F8M?=L>·8>Jô”>\^œ>Jéü>I½>žtw?¹?:ù2?(€®eI>|ʹ> cm>‡å>aŽ>ÕÀþ?Mñ?ˆ§?Š£ª3w>Aºù>=ž>ˆP·>pnå>frF>je>T’">"—#>Oøò>Mã>76U>0mu> KO>…ð>Zù>×=>JÊ™>Y)š>"<ê>(„0>0©:>ÜM>Å>-‹>8>N5>7x0>C¯;>*Žû>@Þ> S>%˜¹>0Ë¥=ø*¤=þa§>i >?œ>\²/>&£»>ò>>*J>:ÈQ>5Ñ>U Í>Sªy>Kö>}L>Ȇ¢>‚<Ÿ> ‘¥=üe>XsÑ>Wâ>Fàà>kž+>O±>Gø>ÐŒù?“%? ÕÕ>ça>¬¾>‹vµ>j¢k>MZb>6*$>7Î{>R³Á>ZpŽ>@Ê>/9L>W”ò>PÈŠ>-]E>"K=ùÈ^>{_Ó>SFâ=þX%>:¤>NeÎ>‹†;>ÍP˜>ùÍÃ?¹¬?'† >ê€@>¦ä>s)4>'°>*`ã>0ÃÇ>jQ¹?J‚?þ>͉>o?=“v=*ÄÂ=ŽÑÀ>+Æ>rÏ>>½©?Ô^?L?AÅ?F§>sS¶>Dò½>0ñN>6þ>•×1>và ->tÞ>š>‡>ÚÎ>Ë}ž>©Ñ¨>‹ þ>`î™>l—>>z>l=ëž’>!³›>`€I>•KS>ß å? ŒÁ?íI>Îo|> -ÆÖ> -þ>2Ð'=áuÑ>FZŽ½Š;½]b<:uT=Úò¼üA>… >5 µ=䇪>rÅ>OªÁ=Ÿ¹Åa·>"áó>ƒ`->+=ž>v˜Ö>µÑ>h½‘ö½À_˽ÇÏœ¼òżÆÍj½˜¶=?HÃ=jݽS<Œe>>F~Ù>h<½å齧%=²ªV>dtÿ>ŠÙ»¿^v½ƒä½cxo<ã$a=®9µ>&rz=Œv¯=ÜË>6Ûí=¡Í=3]]>€°>ŽÍø>ÑI<o²¼œcWºÄ¨Œ>,A>€V)>’úŒ>Éø? l€>žK½:²L=x½ò=ÔOQ=ðÜ >%e>^¬A>M­>(ú=Ée>(>»2&?ô?%;s?#mJ>ä;,æ=Ádl>€y†>ÃÊß>ÞuG>Écø>âz÷>ÄT6>ë¹??(oª?T>ø¨>Ρ >•»K>­~>q2>ƒ‹>ÄÖn>öÁ+>¹IÝ>‹(>ƒƒ>;}þ>0µ>%Jž>bïü?R=?.”?!Z?I`?Ë™>{¸>f>o¸K>hŽ¼>‰œ¸>µe†>«©à> Q–>_>Ž¡ ->ld¯>€ñG>€¡>K‡t>[ÇÖ>‘Ã>x¨> t!>Žl¹?Ù>ËSR>±$ >r]p=ñˆ¢=œC¸=¯¯Q=þêø>W™V=Þ–ô=£O(>/§a>~ />m­˜>[3Ò>N<¯>ˆ5ã>žå³>°s>9~·>>y¥>q(Ï>hé>¦ò2>“G¯>VQu>4·>ßý_?èÒ? ©†>ìeï>3'F>W«ò>`Æõ=cŒu=¤ú¨>ALS>ä>%¼Ó=Íyt=}r6=Ϫ¹=ìQÜ=çhë>ä6>+|%>ú=Y“†=‹ÝÎ>n¢>p e=”>.Õ>o=&Ò=ps¯>HÀÉ>4=ð¸ê>“'m>ñ€>0Ë>p˜n>˜ />~ƒÏ>`:>WÍÀ>‚‚á>‰£x>§6â>Žlå>H¤G>~Ãq>…úÎ>2É> Ç”>[`$>j‘Ý>wל>ƒI>\ '>•µ>Ì|>!ñ>9G'> &>I‚>%ó»>Ñ[>X€=øå:>-ð»=?Þ <¡QŠ=Ÿ6R=úb=”ˆ¼Âì<½b¸>.þ>XÓ¡>DÅ‹>DÞÆ>=Ž>dCó>ƒÊ‘>_a>R·è> _Ÿ=-Á>e7I> E&>¨ÿ>³ÿ½>…Õ> ñ>¾ÒI> b>˹˜? - Ç?$—w?=>òl÷>ÆíU>¸Å>lÃJ>AL>›!>1Ù²>Cd;>3 È>úý>5ϸ>•š>Îù>‘«`>.¤U>Âö> ¨X=ô›Ê>J%>m¥’>}©>.Œ©>9’È>Qs§=­èŒ½Zk½²ñ»A,‚=´"n>ÒZ=¾;˜=çÀÆ>>d½>aO>eiU>8®æ>'5><™(>w‚Ì>_©ž>ðf=ŸŽM>yË>_9Ù>HS>ßî>.5ß=°÷Â;¶Q8=‚o>/`>zD>E‘è>WÅÇ>8<Ñ>Øl=ÿ‹å> pÎ>/ï>%t+>)†=Ù%\=û7ä>>Xa>±•>׺=ÁÇd<æ¯=˜ Þ>*vD=øT=¸qG=Ô ¸>Þ1=£ï=k,=û+@=û.ô=û2¦=û6X=û: =û=»=ûAo=ýD­>HZ>Q¼S>”{e>éö=;0ï=¥,„> >`@V>¨ûT>å¼Ñ>ä"(>ãB>Á²¬>ŠÒ>eûz>nó=èß=Ì~Â=¼¿c=º -…=ôÃ%=Î÷Ì=íGö><¾L>EÁ5=×å»=b=EjO= -õ}=‹£³>u›>SÊ(>!wµ=–q=$Áô=£ü¸>m¯=ïÿ=Õ’ >.h×>¬7Æ>Ž°<>ABV>8 Ð>*Ýr>[¡">2—j=σ3=Óv'=£í¨= -Ïs=Ëó—>(G>G5>º>ìª>®Ê>">§½>«Á>G> ‹>1P3>0YM>3³o>*„ì>]>}ce>i½l>YC’>5F9> nS=ñ›L> íÿ>5ÂÀ=þG!=ùü>?é…>=ø–5>¤Ô>H[ >;d>µ¸>ÎMÍ>£Û·>qCN>”9€>‚´J>?•ú>ÎÒ>Iÿ„>aÓÀ>VúÉ>™xè>‹†V>Dì>5€2>Q[#>£#Ê>¥›>~X>›º>=‰>·—\?ÿ‹? ²e>Êbh>‘À>z­Ã>l4>l¾J>¥V1>Úç6? F?ºæ>Äø>—»<>Xš=Ô“£>,ˆb>G‰L>5yy>C)>ªƒ> Ø’>¤¿>:>5Åñ>;>›‰>ÓQ=Ñ/×>jõ>>Î>E¿¿>]Ä`>#Š=®`?=‚Ý‚=ËËÖ=ô=å,…> 9>1ê»>Poe>.D»> ñ”=öú=ýe”>1¹`>}=Ò^Ñ=Í8á>-¡>k&>öâ=º›0=¯˜Ç>Àt>ì>!>Mu(>I³Ø>Dâr>=Ž_ý=ƒG9>ë >KÒS>"=Ý>0ɹ>4*q>T=àŒø=ü-ö>$úI> I¡=õ{> #Ï> ‹>8·>=©>V2?>l¨›>7¸>²6>_?>÷@=á^Š=ã#> -> yP>T…ù>JØù>&Þ°>ê=ÌüZ=ôº>ZQ> A=üðû>=á>Q†>IJÝ># >aZ\>u>¢¹>Ý–Å>²`>gЯ>*>#]>:Ék>Bç%>,µí> ¡*>Œò>åõ>c4š>-s>1+½>•'$>ÐûV>ì&º>豆>¯w¬>\Én>.?‡>Kv>U¨x>N»K>iÃ>iÔY>)ðá>>«X>F…>Bûž>J]>D¿k>aq>'¸> b>TG=Ûü9>7¯=ý«=Õ,|=Óî>=ðý>‚Ý>"$P>Í@>õV=û2¾=ûÖ>7Åb>]nø>Dñ3>l®N>”6v>Y•Ò>ƒ×=üzß>w><>˨>9>ô>KÍÉ>)ýç=êë>ÁÓ>"T>>âØ>R¢>E'7>B¨Ý>)q’>Cáï>R­ý>wøŒ>Žå>»Þ>É’>¬ìË>’M,>‘kÃ>£Ê—>”6i>€ÊÍ>R„u>^Cj>œð>ÍI¸>µbù>‰-v>+¯>Kü>iþ%>68S>WÛ=ö‚Ç>Cr'>†ÿ>§»Ð>»o>šyB>lÒ/>,[p>-0 >Jëò>2Ø=ú‘Ò=Ù0>0Uq>E^‰>v‰>Q’´>†5>Môm>UTÌ>Q¨¦>Eƒ>JúÝ>z\>o>ŽŠ>mR3>R>Ä5>'›î>> -í>Y>>/;>H×T>fj>O¼x>XEV>“½ >´í±>Óf>á?+>Ã:ý>†³Ü>1;r> t>4¦…>1©S>Gô>?ÚÍ>)ñÕ>5í.>P÷4>^Ï{=óJŠ=Ôj3>‰>RëI>h·ö>2R>.ä¤>4®»>l>Ûá=ðÒï=ò‚V> `>-HÆ>HŽ¼=ÔÅž=µ}Œ>}¹>*]¦>3G¤>)z ->>t>54>"të=ø‡ð>) ù>lh>‰ž>e>/}Æ> ‰*=Úæ´>ïI> ó°>(©=×{%=ÑFâ>Mˆ>6«>™Ž6>^“Ð>´>N<>/6Q=ÜX¤=ºóô>;âÛ>g•>*Q¾>P‘>%SÓ>9Ÿ¡>‘â=çy> =æd=¸2S=àµ8=µÊ=¸ç>;>!?ª>#»“>Fµí>/ Š>kÇ>$`4>Ok•>h3¾>žËC>‰B>B_|>]¶>KËÝ>25~>Œ*=äÅ€> )Ñ>m> `u>$g>-¥>:BR>; >.ˆ=îÑŒ>b°>H׌>78±=ýÛŸ>FR> ÷ž>Šµ¶>qR>2»>~yð>‚©i>QWÔ>?ð>l=¿Wø> ÌY>/(‡>/ÇQ>Hâ->†~.>“¨˜>jÁ>Sa‹>¿­>Áf>·Kñ>™À<>¸(Ì>ë?š>Þ#Ž>šª^>ŒÍ>ˆ\é>©¡>_­Ê>]ÞÈ>SåÜ>E­.>h > Ùî> -î¤>0">+…þ>1ép>ep>‰|i>–¾>]7¯>Më>dÜS>kðe>IºÈ>!TÚ>-€Ž>*mw>5>ƒñ¸>‡Õ>~ã>r¥>f1å>|€ñ>ƒª>x_>˜©r>À4 >Ô¡>°×>àë>PCX>t>—Ûá>€Âd>5ƒ>E–È>vÁ>gYT>HìÁ>8v›> -–¶>Âb>'¡>Rƒ¯>bÀ>sˆ>’øì>šõ>ž å>«(>‡0>a^™>HIð>cî×>q¨>›zž>~÷0>i¼>U¨”>p×>Cú9>/%¡> 7ÿ>õ=Û{¿=‰ºn=‰=è:>?Ä>!ZÛ=ë‘Â=ìî2>²>fP">…>…j&>¤p~>¢M‡>‚2>Yº>NÎ3>]»j>`WŸ>P.ô>S¶>NŽ>–9d>¬/¯>¿©M>wrd>2Zi>Y£=þ¸i>&}ó>M ø>bô;>:e>Ñ~=ïPè>{ãL>•Èý>Š Í>Q•>aY>7Ë>DE©>jK>Wº>UÈ>^k‹>‚åà>•_â>7¤–>.Ö¶>T.>†Rñ>ÆŠê>Ó;ó>ÕC>±nÉ> <>…<9>^é*> º,>>¹ñ>†æÞ>cpk>sb'>ˆºc>G >H=æF!=‡r -=ð®>"öþ>1’=ÏA+=ŸJ¿=¯ƒe=ÞÓ«=Ù7"=ÍCî>;á>b)Ø>1¸Ø=ÿ«> '6=ú5ã=ôyD> -s>ˆõ>¢TÁ>¢Ÿ>ž'>R>3>@¬>SZ%>;E=û²W=ÂÙ1>ßS>7nD>/÷ç>; E>HÓT>@‹ª>?¡>'N>3 -u>lÖ>‡û“>†ˆQ>±>ÞH=²¨¥=sé=U,Ü=¯™’=ÀÞ=kA=䪹> =ë2ü=å¡ð=îì=¶ß=[PÑ> -`÷>  -=ç#=¥â=ØÍ,=ëg“=˜`4>09>>:ìÒ>>,Š>jè>G+Þ>N-=ß+T= ??=¦É=ùv?>‡î>uîA>&¥=å~c> rŸ=ýô˜>©É>@b€>!ç3>->¤>Bî.>.5H=²$Œ=Ðæ^>ß=<î¡=Ÿê>T>${¹><Š‹>ÄY=º(!=y+Ô=•;B=òz¯>5ýË=ÐÒ=¹§=ð¡P=ñì=èñÍ=½)[=©î>(ßd>½‰>z=%Ñܽµ¼=½j¤>,² >·X>RMͼäu=ôß~>_˜U>À²#>Ô^ô>Ào>À¹ ->µë¿>h>CÊÂ>çú>æEÄ>· -’>yEÆ>!>håœ>“>h ÷>Ã¥?/ ÿ>ê³g>§Râ>š>vðÅ>ušŸ>Rש>˜>‚X€>‹5>vm>º&>ÉÛ>¨¬#>\oØ=yoP= 2>Ä:>>ÆJY>¤‡´=Cï½Ô†%<\í˜> “>§•„>LÁ - tj>€y‹>œàa>Pƒž=‚Ò%>›`>æAµ=QkǼŒ8=;=žS6>%ö¥>,=õg}=¹ãZ=10q=# ±>¸¸>Ô>™&•{>’ÃO>Ò?Ì?$ÈÈ>â|+>ŽÌr>GÒ>8*>W¥À>VÓ">Z=™>“»=¡|>\[>…v<=š@ >%ùò>_ÿó> Qµ>MÌ>Jäû>VfM>w)õ>|x>€þ:>žÆõ>£<–>€ÒM=»œj=5=€«‘=¶8>Z¹Z>Y1>A#>H A>K®>Œ~å>wút>ëž>h%u>v8÷>{>†™>09‚={rÅ=‚íÄ>›ƒ>$ð>?â@>oƒ>‹> Y>Z‡5>T/Ÿ>_ *>¬©ü>3Ò=Å>@×>v>WÇ> eü>&5S>Œ=ßVë=ö¯Ú=‰§“¼>MÛ½s -‹=Nº‰>¨ˆŸ>‹<˜>:Z_<Ë*¥¼™þ~=óË>´œ>=w>BÛ`>#%¹>BØ6>‹‡W>Ÿ†V>'µ}=ì“h>/³=¯Øì;Ôa$=Ìs>%v›>:%º> Êø¼ISÓ=»c=ŠÛt=Áì=ðâ^> ü1>Î%>Kž>Ãtž>ȆÙ=¤a -=+òÁ=È ³=Ü—ä=Õù²=L´ü=mVn=Щá=œD= >!¶>7^Í=ìœâ>lÈ>-(¶>Ï=[¨¼´hþ=— =½O'=”Žª> ‘l>yn>™Æ>¦‘w>œv=i3=|ë>&ÈX>OP\=ûy=š=C=)¦M>´w>Yä=¶ßN=Ó£@>8=(>6êL>5” >4A>2î>1—Ã>IQI>jžû>óào>äÓA>‡Å=>^W=×/÷>VÖ>5‰>8:ö=À´ =‡ª=•¡T=~ð^>¥Q>1 •>9‘ >Núõ>DÙò>(ÿ*>Lr>šd8> »=\×¾¼0Rº©~°¼#x»½wk<¼ˆób=}=Ò8£=úøú=ó‰®=ìKŠ=ì½È=­«y=ÒMm=[¦ä=Ÿx>Í=Úu>#mƒ>†^…>#3&=M4U=ø}Ý>(îë>#Ô=Ü¥…>'Ó@>j®D>Hã>ìÎ<ú0ÿ:¨8¸>#Â>,É)=è"d>&”p>z‡$>êæB>ÈÜ°>g;ñ=HfºÀߢ:ÒnO>VÑ>¹â>sB[>.¢ÿ=ÉþD>õ>ù,|>ý?a>裟>Øœ>!ß>SëÊ>ŒU…>•Ó3>ü>)ï>=¿£=Ò­G>e‘>)æ>8qè>…wW>‡Ñ1>„.­>wõÏ>X3é>,Áô=òâ@=nf=Ž†=|„B=I~÷>S>¢f> ö>ƒ¢ü>.Ü>1"f>;(=’ -2=µ¼>0Ì>8–6>'î÷>Êø>&N>$^=>Fî>%r>méœ>bâŠ>Z´x>Ž|1>’ S>š">FgY>¦f=1}=Ú‡>+†­>GkÎ>N¥—> #ê>(e>"{<>pV9>6ZM=ÒMµ>.»>9"‚= h=‡3‰>€ >™8˜>‹R=Ùû>û:>7×I;¸Ì<—¥W=Î4®>7”é>Aü>ʘ>Æ=ò%y>î×>b·>ŸìÍ>€Ñê>¿ù=î®>Ú=¾L=Éê =¼+ˆ=¾oL>V>ϧ=1ã«=mF=ÔµC> zã>>_j>ÂQ>†>&|> gá>46=ì’>ÀÑ=Ü?=v!‚=$Ö%=”ÅÄ>)°>$¯‚=ü¿g>@‡>i€>‚D;>\bó>,8{=Bºc= º>ïŸ>´Õ>'­>.3#>"Þz> Þü>ÅO=ôRÔ>gV>%À­>Û>)|>-Ö›>8ñ=á¿Ÿ=íŠ>€=¿ô=¸W=¬E]>ä1>@úÝ>ÙÐ>u>Eì>Hë˜>>=>0°5>$¨=þS9>"Ô®>É8>çe>þÚ>#a=ëé>%µ%>ŽíÉ>H˜"=ïçn> ÒX=肦=‹{•== f=l°=”2x=ˆyï=™Œ=è1O=²Ž¯=ÄÀ>Œ•š>y¼ý>Kø>Wïè>^5—>CÕã>x(>ŒÜ¾>ƒ‰>9‹o=üç—>2®>,k>&¿e>¡>(@> Z÷=èx,=Ü£²=ÓÇî>L°>8íâ>FY`>?¤¤=Ãpü=ðµî>ª¾=ǘ²=®3Ï=ÔÔ>.¥ò>/^>bò=±Žæ=­e´=áF1>½>Ç!>h‘V>@tS>Î>Jp”> Ÿú=±ò=ÀÛÛ>ï¹=íª=È -=‹CŠ=­É> –>7Í£>-(>!²’=ç˜Ñ=¥ä=÷È>Žy>]8X>'Ot>hL>%Õ™>&¥Ù>n>)3><š´>"K >+Çb>‘ö?>‚q;>a_ñ>Pæ{>\š·>/s*=멺>Äy>Ò>tVm>…vÄ>ŸNÛ>~”Ú>EÀj>[J$>]à>(x=æ®Ù=Å=}= ·S=ÐKW> -BÒ>.¤m>|>4v+>åP>6,€>4¯5>_ =êoN>?E=Æ`=¨Q=³ÀB=åÎŒ>uð>&•Å>b>6>4R¥>%N>-º>/Z>)>C/ž> е>(ÛÊ>>5Á=ìæ~=Íò=Û¨(=ÿžÏ=ùˆU>îå>-=&>Uú›>‘§ã>n§½>1øø>hw¬>Xo> ²v=ÔÊ>%Ï><<>@>ü>BÈÅ>R_>~mö>p–©>-0>—K=þòD>„D˜>Yÿî>KÓ>.p;>.Ù>ù=÷B>5›2>zcõ>B%×>?ç&>†Rz>”Í>Žñh>j™5>d]Ó>T|ê>*f >2ƒ">R®ì>ŸF> ¤ˆ>* þ>(/)>=x/>?–à>^Ÿ>:êV=üL‡>Wþþ>Œ>¹>¢ÿL>‚¢•>rrX>täå>M„?>6ãL=‘‡¤=«L>=Ý>ˆø>Ž>_‚>(ß>6 >MÙY>þI>'Æõ>;5Ë>º>>1¾>5xU>G+>$ÓØ>{0>YçŒ>Q¬>g›>1ŒB> ™.>ù>Ÿº=þý>½î>LË•>x”Õ=Ï.Q=å¿Ò>fï=cµ=ê<>@ˆ*>M°“>n<œ>ŠäÌ>{ç>Ž!–>ŒâT>©„>"Ì>-ZÆ>'ØÈ>0->AÖ>|Ë=ΑE=®ûÇ=àÆþ=èå´>¸Š>¼¾> Ø >'D>6\î>"‰²> °§=ó5> ž‘>A®h>km>Ü>Ù>‚ˆ>–Ü=úwZ=×G‚=§ `>îÇ>ÜÔ=¬á€=…ñ€=ÞŸ,>7|>%ÿò>@,{>$PF=ñ[Ì=ñÓ=Ç€i=ødk>sÜ>°¨> "@=ì{¼=ÆåJ=éûº> ¿Ü>?½@>&Œû=ý[ã>$„Á>2hÂ>5±>KÀ>EÒ¬>Gb>A(¥><—t>Dا>@f>Mï><¤×>#“¸>3ÅÝ>'ÈÇ>Aû8>M ™>:@>Fȳ>LZT>iñÙ>‚7>>‡q>D[>F½>V‰¡>BIï>E3>)4=ç‹I>J~>#?> -×›>FÀ>&ų>2]Ö>BëA=Ýî‘=­bh=Ýöý>J€>Rƒ´>0ôÕ>98Ç>/dM>..9>WˆÓ>'ƒ®>Ú>ÓÛ>"kµ>/;>FúÁ>A°Á>(Òx>10>-j> £> †-> -¨>)´>.uG>"NP> ø=«³=÷œÓ>ð>O%->VÙå>?=Œ>ùÎ>,ÎX>%q9>µu>P>$îi=ó=ö>$ï >7[7>M'>Z‡>VÐÀ>)ùd=»È}=žYÖ=¾Ý>·&> -ŒA=žäM=¦|=‚‹é=?|=Æß[=ÍÔv>Ý…>_,Ñ> ¤Û=í„Q>0<å>“M>dô>xÈ=óÏä>âù>—ü> ^E=ûÎñ=þÖ#>òü=ß@Ø=ä 7>V©=¸k=ì‘5>VU>.F]>'¨=¿ç0> M®>Mú">=ªN>S%=ؘ=Ëè¹> -¦>+c>FV·>Z‡>i„>B“ö>>_>=¾8>$E”>MÒ@>4km>"Ãæ>)xi=þð=ú(Z>'íŒ>%µ“>8Ñz>YŒ >W=™>@í«>7·Ÿ>fJ6>1Ë!>1;˜>,ø'>#†>‚U>¶@>€K®>CÄÀ=ü^¿>÷À>_®>f/=>(Áå>5pÖ>0üà>'†>½-=îUa=¿Û;>º =þ—ü>Eï>°ï>v>I†=û‘…>,‰K>\kt> ÿŸ> -ˆ&>t>) Ÿ>RW >ZÙ6>|¥’>A^Â>'Eð=ãy`=ØÔ¦>³T>7&>)l'=‰88=œ>+ÐÊ>0Ñ>)H=É_=ææô=°õñ>Èf>,(Þ=ÿr=¾ý;=ʲ¬=–¨=å!]>0=ê²ù=¡ãš=Ψ¹>ÖN>RÊ%>vF†>r±b>H>-š+>D>°>- l>:0J> Æ>n¨>%X>=Ij>.±/>+.¼=µaå=ˆ*z=¼Ãô>hd>­U>H:>ÀK>ƒËV>Mƒ²> -“>×·=ío¡=ð3'=£@H=÷â>>OÁ>JˆÇ>HðË>/çÍ>xf´>¤–d>¤!Ó>x2ë>‹2…>{‹ì>/,>r7©>¡w”>€ÇÉ>…Wt>eŸz>NA`>8Æ•=ý1=äài>8-'>* u>%ó>7=Ï„>,fd>\¶ª>e[3>G¡/>=œÿ>w©>†¡Ë>Ÿùl>—nÌ>{nu>¦>qn>2‚h=Ùzc=áüJ>3B>[a¡>þ>žíQ>ž+>Qá„>Kö0>HôÙ>*-8>›uõ>Úu>äÚ>œù´>_R²>¾Ž>C,ö>*ýq> ¬€=L¾u=ª*=¿Ê§=Úoè>RÒF>Që>ðä=Äý=Æ/Õ=áËl>#<Â=Úþ]>Vap>}€±>\þt>‹¿>F´Û>A>0">S¥>vá>UÖ ><Ðô>8Eì>O÷²>i„¥>œ É>×>RT2>CZb>5 j>-÷>fÉ>[)³>h?­>®'m?$º"?²>Æ*>ö.´?C÷?$Æö? çw?>¾>½Eè>µõ>Ä‹À>‘ا>,-·=úzÁ>‚Oî>¹ÐR? -Y7?/î&?;{z?&±>Ö9Í>½¾–>¦2Ô>[Ô¬>Tþ<>žÖ>ï­? å!>Ô½S>Ë ><³=ä”<£: ->ª0Ã?Æ´?à?S>¶ô›>es1=>4>j¥¬><«> yô>*M>«Pô>áìa>Ù·Ë>²$>V|y=ÍÜù¼ÿrÎ<þô=ïÿü=>øé=×Y%>¼xš>Ôfˆ>ãÕ»? ”Œ?*#>ži=©»õ= Òð=§ZC>a>šD>‰»®>·÷>Œò…>Fõ >ƒ¨1>ž>Ƚw>Áêž>Í_>¿C>¬ñò? °‘?J-”>Í°>“‚>ŽKf>ºI>Ë‘>ÕªF>Ú‘>½P?êþ?:WÖ?hÛ>ÕKª>ue>[Vù=þ&> Ñ>¦Û>ª=§>H™§=ú­ú=ìd§©´?uh??·>´¦^> ‰=Ø´j<±“ˆ=Æ\´> oü>•a>Šñ‚>[¤æ>8`M=õW~>Ï> NV><”Ý>4»q>=ªš¬>:}ú>°,Ã>þb?UW>w‚u=8Î=Ãrä=˜ø¿=O^[<$I”¼‘‹<ðÐæ=ʱ=×ã>-¥U>”Å1>IeB>b³y>æO>àY/>‘ÈÇ>þÚ>!r:>›¬˜>¶j>о><ÅL<¥u">m§n>„ý¼=w=¬,´>¿á>9ºk>$xç>Y³ˆ>ž-»>ž ™>¶; >χå>˜µ>a§ > Xz>¹*A? ²?*Î+?ú%>Ð#r>”É ->Ð =Æ'=·BÀ=®{_>Ш>ÛY> -,Þ> W)>."q>ÇÉ=»®/=YWÎ>A×"?‚1?G•?J‹¼?”õ>Ð6®>™>ƒä_>xÉ5>uØZ>zHÞ>Aü>/Ž¡>e\§>ŒI>dÄü>o ¾>Jˆv>~:>b‡e>ØË=µ¬1> ï>¨oe>Í<—>«f>‰“ƒ>rî(>2³ >Ž>•©>lÀµ>»˜†?5Ø>ÚyE>|œ>…G>K…ü>@ ¼>nϺ>€™>13=úÃ>"OV>‡ô=‘˜Š=©6\> fb>] -.>`wô>€0>ÅíÌ>ûè? LK?îš?½À>±¾ÿ>0ÛM>-Áò> ç¹=Ø…$>,Ê>xaø>¤¼>­¼â>ƒ*Û>m‚K>ŽÅ—>@º“> cï>K >P…>Y5p>ãN>ò²¦>=>C.í>vÜÔ=îè³=sEè>8,>”ßø>·²¸>¸Úy>ºdý>¶¨€>u?>8„Ð>œ;š>Ø’&>Ö{ß>©Û>iÔ(>?¦Ç>3ÿK>6‹i>.”>ú,>Z=í =¦Æ>2" >ˆˆ(>5"Û=æ¼=ëA>"î´>X®{>ª\«>ÏÆý>û~Ÿ>õ ">ÌcÒ>A´>Šk’>„é÷>;¾>¬ž> Ö>â>3È­>dpM>kmÖ>a—>S~©>rL> Å>£¡Ô>záÈ>_äþ>d• >WiÁ>,ö”>9­º>oIT>Y:M>mˆZ>6Ó>š»Â>œÅ+>‹2Ø>_2k>aä‘>RîŠ>y’²>ˆ†Ù>P'Ý>R%>¯A+>Êàµ>ÏÓV??n>à >`xã=õ>R³>Wãñ>I¤.>ˆ* ->’Á¯>`JJ>s¯á>€Ý>é÷=ggD=Jmä=|wö=œ|>§í>P!å>›—4>ô? €>éó_>°d}>†`>r6û>53>j Ÿ>„Ú>›Àg>Zq> àC>d¾`>U¥ ->,š>( -> ÿÜ=½Ôœ>2>{|>vˆ>Z¿H>(é>"Ê–>!/°>^ß>K}|>tp>_ÐÚ>Ÿ“#>+>tñÿ>€{V>„Õ->rˆê>WLI>8©>’@> 6˜> ¶=>CƲ>Iÿ“=õjŸ=¢Pí=Ûk>=Ù>qÝË>‡«{>«|q>´­ô>…˽>eêØ>i;>ze >sG\>8ž¦>ƒ>nÌ=ù©£>F]K>™ÝK>ªò ->®/+>•=>…>l§L>^ßÿ>Œ˜>Èà??ee>ñäR>¶Pþ>Š[™>¤Ü{>½º>µC`>vìÊ>ï)=ìøþ=ÇÔ*=Çé=ç-Z>Ó~>†ì¦>¥;>©Ö†>–ÔÀ>‹\>Óçï>õ7>ÝDI>xŒ>7-É>$W«=¡Eµ=ú[›>ƒýä>¢ÖÉ>¢•?>nã;>E~>a9>RÛ>Úb> Yw>)è[>\ßq>_•8>=‘>—~±>V«…>Qn> –>«­>‘åu>?®Î>+[j>`nx>⌭?• ?Dq?º?í±>Ù6>¡3S>lØà>nh ->s§ê>‡bŽ>ŸEX>©W=>­×ù>ŽDq>Y… >‚ô_>®Õ˜>õħ>ú¢½>ÉÄd>nS>JË>T ï>—Åú>¶Ø>Þ-M?MÄ?ÍŒ>ÆI>œJ4>€a*>]ñ†>‹Ó>ÉèÃ>¼V(>¢?>doÝ>/óz>9Ôg>Œo=¹7Ò=2„=KB5=Œ™$=ÇL>™r>=£I>‚™î>‹wô>‚±ð>Z©=Ñ‘2=Úhè>>9?>kæ“>ƒY>„Š¡>"“*>°0>Jæ£>K>R˜í>‹ å>·¸|>×Ç£?:>ò‰ä>ÆüJ>mÌY>3p#>%ÐO>.c¢>,(°>Šq>1Q+>fܲ>²õ>À?>±O’>sÿÚ>VìR>cÕ¡>¨‡ò>é­ô?&Ý?=t?8±>ãu >„è>>PÄþ>Z*#>6Ô5> ªE>'Å>¬> -O×>,ü>;&> cû=ú„½=ñ² =è¨g=ûåØ>!Ú>7ti>^w˜>¿s!>îXÑ>ðœ1>ª!#>`uV>—>Ä4=îjÅ>Kq2>r×)>~ô>Œ÷>y,y>÷Y=ýÕ> K.>'¤M>Ü=¶J´> ‚S>Wõ >|<á>/Ǫ> ø->ñI>\->y§=õ]ž=ÇI?=Á•_> -4ø>Nû>(ês>VÃó>v2m>Š\®>ŽÓ(>‰h>&>‘×Ô>•¾ë>‹ÀT>€vÃ>ZY>EÇr>W*F>‰îg?rÝ?á!?"^>Þf >–Fý>:H>&ú> T>+X>>^¤>¹ >Îæ?ˆS? ˜>•ßÐ>]Âù>Sðô>O Ê>ƒ@>žyˆ>¸ýl>ó(]?b”?³f>ÎY#> L>`ûE>LøR>9F«>A€><ï>.CÇ>XË>kßÃ>¡9>óú>>}>a‚*>q'¡>zhX>:Ü.>H¬>s ->ÕL™>åWå>Ï -B>sss>*XŒ>“‚>Qõ\>r À>ƒrÁ>ŠÎø>ŒhÂ>™8ä>T)Ê> ö >%=Ú~@=Ú=ÙýÈ=öð>:à=¥N=ˆ_Ò=”™=ìåg>Jü>EÓp=þu}=Âc¢=Ñgá> üË>ÏE=¶Ì„=õv]>F>2)k>4a >3\>- %>LÒÁ>TŽë=ûÖ›>u%>Fô’>Zº>N Ú>.Ý >%qž>@Ò'>á•=à­==¿ò>3ã>v,=Õ?=åT>1>Rcf>QôY>}Kç>ŽTÓ>H³B>8ƃ>%¹ž>—þ=ßîº=œÔ>8°>žÏK>ûåN?&¯&?!·Y>ð—þ>Ÿ\é>wù ->E­P>§Š>ôl>8Iã>®É>µt9>¡@@>p›>Bû¥>7Õ">'­9> 2V> -¦>[Ú>­}? Mô?þí? ¦ú>¨Ö•>"`>åÆ>ÝÝ>óÚ>Ýû>ƒ²ð>.Í >'Ç>^;>LEÞ>6àm>(T>Ö:>žY¸>“w>„>X>ge>&¹G> Ëä>:‹>[=ð¦Ì>aö> ºð>ñ¾> h=áeí>(~à>B'>ñk=øHX>®>$$>ܯ>/£>?,Ý>tŽÐ>nòc>HØ?>.>ÛX>Z >V¹}>R«¨>E #>r„â>—lÞ>sƒ>Q"’>#`Ö> ¥>Px>@&> ä> 9>æ>>8Q0>CAš>ˆañ>•5k>“>7#¶>%Dú>JFÃ>rù>fÁ‡>\Ïä>QÒ>­Ã>B81>{uv>Xšm>F2¦>WC‹>Ÿ†>¹o>™ [>JŒ>ÜÈ=å^ì=Õ¯Þ=íÊd>ÀË>]âÃ>aN >Jº¿>dÊÑ>_Ê>Nð>C̱>3Ã|>#h‡>Ibd>1Ht>éJ>7JG>I‚>[úô>*‚z>#_3>KÙ>œÏ[>ìúµ>óžr>üðW>ó2A>Õ>Ð>Ïxô>¼–Ë>e8>2r>*h>ž Ö>ÀCÕ>Êžœ>ß~ >êX>ׄ>j´1>–¤> #>ã>Î>‰>ä|>·¶û>êƒ\>îMH>¦Õ>pž1>+Þ=þœÇ>:'>&ªÿ>f=ØvN=éG ->^ú>KYÂ>^‚>J”µ>+ÿ>Ñö>fÆ=Þ>=Ñf·=݃O=Õ‚­>Ký>h0>D8>Ey>Š8>Dn>(·>%o=ºü?>F}>+Å>Ì>‹ -=Æç=cÄÃ=ŸaÒ=ç0>Ø}=áàq>{ç>À©=û0=×b=ÇSò=ÃYµ>«%>&)> ÀÐ>ˆI=ýüí=ùõ -> VD>e:²>s´Ä>`õ¾>9³º>÷e=Þë=´úz=Ä°ô=ÝP8>'Ö=îX×=¶Šê=Ø/=þñ¾=íy°=½ç¶>9>¶¹>.V>F/”>£ª=ñYr=¶éQ=Ø!=È÷=Œwú=•`å=ó¬±>R²ä>‹ q>¡ŒÚ>¦Vó>ˆQb>#FÂ=ê©Æ>Á¯>NÅ> ô> ñ>)Û}>y >wJ>_-ê>r‰>|7â>gÙ›=â˜Ì=j—F="÷=êê=²\Å=Š7J=Ùòu=û¬> ò•>@=øQe>)Om>G“3>l¢®>gî‘> ÖZ=Œ¼¦=çaá>4Ø>TÎ_>MO>wŽ=ïˆz=ÔõŒ>->3!à>5 Ã>Jó> v=ÀBb=â>‚%ƒ>®ùi>˦ù>Ï(ö>§Ž˜>…/¿>¨ £>.>oé¤=嬰=ïâg>84a>|ø>‰€ >‚ë:>V7e>õ-> ª=û"Q=ÈŸí=×ö‡>&M>>Wh×>“šÞ>Ï×>Þ`>½>^”>Û®=çß=²ä÷=÷Å>ÿÚ=òo‚>1S>‹u=ííç=çj®>]ýy>oê>Mù">q†/>5 =¥ªÉ=…¬ÿ=µÛA>!Ä>-‹=ÕŠˆ=º`¤=ÞÓ=ö¹=÷’Ì=ÆSY=ƒyÔ>°>ß·=©>X³E>6¶=¯¼ê>p ÿ>ÎI,>–ˆ×>C8‹=l”<Êï>L½M>š˜Ã>ÖX¥>ä°>†¤><-Ž>_g°>™Â¼>¥ »>•7>³¹q>Û -á> ˆ•<¹>2Bx>drÊ>Ÿ£5>«Á>Žß;>)N¿>¨Õ=©±>Bw>¼Ûˆ>dÀž=ì¶Ñ=8øå¼É¯³½ÂH ¼—’>+> Ÿ¦>?š}>W4î>4úg=Ú_£=SVp½€œ¼<Ùs‰>£>†²>ßs>lïT>‡W>…Â">[ë=†=“23=©XÒÓü=½¹=|‰>2’_=ã4)½|°á;Ì—Û=Å/=xõC<ú®b<Ÿ½c¼'1¼Îò;¼¥½¥¼í‹¦> -[á>$A>7t–>.®=ùÇ<‚Êz½\ª¼©+”¼u¢½ ó)=…&z>*‚b=«É=_#‚<ÛÀ·<²Ó>îc>(ÍC>Ó%>,@>>”Õ<Ýá=-­›>3>/¤8>õ=§=ËA;}s¼È¿¼¥V¶=£TÔ=æª.<Æœ<¢ ¾>XY> S=çÃJ=x«p<Áë÷½—5= åD>«&>^¦‰>+L©>??A>/^õ>'êê>Uª$>‰dù>k<¾ÿN=ƒ…>#)>¬˜ë>®;å>»óø>¯¿Ù>ŒÑ>Êò>õ‚>†n=¨þÝ=f3>^@>‹ˆÑ>µ†©>îJ>/¤þ>}É>†q«>ˆ¶v>š»é>Œ; >Rà>ˆ>vâZ>Ly>*5 ->$Ð>,‰´=²Ì <¤yk=ä—é>Uh=œ®&=ªxí=Ö^Î=Àø=Ácå>Ú=âþ<ƒJü=@‹ì=¦°Å>"´ù> ™…>=>%_>F$H<_1:½5‚r=¹TÐ= ·:=V¹=ÑÀû>á =ò¿Y=äš­>óo>G*=Ô÷ÿ=]È”=ž£>$›>Àˆ=é×>%ö¿>2÷=™_°=è:~>l=Ô›]=šw=ÿ¸€>|¨>:ó+>?EŒ>5>Q.@>b d=Ýí=À–í=ë´>9¡ª>X[œ>Wœ>ƒ^<ª#½<Î'=,/U>&‚=óô1=Ý&•>F«d>Ö>?€.>"tÕ>,ë>9uô>k3€>„[>”7>&y|>,^>r£í>•,¡>™g>7§­>/&V>3}J=Ñp=¸±=¯Ý+=¿rW>DßP>ª=êø==‡E€=€ÿ{=)ä=žo«=—X/=ø±5>1ÿÌ>sãƒ>;˜R>÷³=䆶>>š í>¸©>Þ'>‚x®><ÍW>_«œ>„>{3S=ìÛ!=ê‘’> lq=Þ„è>—¦> -Ù]=¼+u<Ù§=w:¤>'Jí=ɈŽ=™Æ4=ø5~>(Œ>YÐV>gSÏ>pÉc>?Ô>3ß;=ï‹e=éh4=ïë=±=¼<ײ>ø`=ê_õ>UD>?º=è“>,{´>IV{=àÊ=Ðz°>;JË=ßïg<þ–2=J†=y=‚ph=Ò©=>-Q>=ª‹=È<éÞø=§ŸR> —!>?z÷>4ìÃ>G€>&*‚>h×>_ú÷>róh>m¤E>`'>//=£kº=¢‘>jÄ>9n]>oú>k/>>AáÉ>+e>4ð‹>!“¢>Ç> -‚>'Aº>4€k>I> =¬›q<Ùâì>¿ >WºB>¢ý¸>ªöÎ>’—¢>]“«>AI2=º¦!=……µ>Ì>1L>K->¸*=Æ_ý=éÛ>,ô‘>à­=ùC„=ÊO‰=Ï)¹>i—.>w:‚>;d>…<<>sE£>+›>#È“>2¦û>dÜ=ù0½=Þó=§XL>+î†> T.=Øö=Åþ>> =°€/=¢ôP>U€>-µm>)*=æO)>g”>+>1¥ß>-¥×>1«ÿ>ÊT=rRÑ=ªû>ñÍ>où>¾)> Æ6>É„>0“I>ªr>¬EÎ>¢¿Ÿ>“œù>qdP>y>™<>'P>é>Ne>C;¼>c®=Ú5=Ük¬>õ)>QVr>ƒŸ">žöš>úå>}ë7>c0&>JfÔ>2q=‡i=Ån4> ,=Ý2 =Ùúù>1M.>ËÕ=Ü%>é>µc=¯q¬=£.Î=²te=ψ<=Ôü+=äì‹=¿04=¿fÉ=U t=“E£=°:=/mP=•èT=ถ>+?‚>¤!=|æ[=Ĭí>Ó$>D%>Œ>/9=õ"+=Å@Ñ=»Ë@=ïL>P,=ó)m=ÿc%>% Í> -¸=ÒO‡=­±È=š§=Äåp> ˆð>.Œ´>EY>,ëv>‰P=Àk=³@=öûw=Ð{ =šñs=Ô©>Ð> PÙ=é¤>¾>@GJ>>cK>%> ŽÓ=ä†=˜Ö=¡'n=çŘ=ý_ª>£;=ádà=ãj›>YK>"ú >$-Ã>)µ÷>-*¶>=§T>2ô5>=çE>eí>To#>;µ©>*#c>‚Æ=û*i>LüJ>@ -|>&\à>› >r˜>BO >5QÞ>$¢e>:÷ø>*³=Âæè=²]Í=íøã> :U>v>5¬9>.PÊ=©æÀ=²Ý§>PF>èa=éµÐ>qœ>à®>P>¢Á=ù^_=ÉÕV>ñÍ>±'=î Ô>81>Žnb> ‡ >§)é>¸œ>•²Î>Vo—>=†Ð>6Vê>"òŠ>Hö>SðÛ>A{>cC‰>i)®>C8¡>!±{>÷,>]#ë>VV>"–Ä>A”|>JöU>MúÔ>b$u>zº½>xw]>XÝ>Qˆà>.ø >‰ì=ûÝì>hW>'P>>l>4>2}Þ>@Â>7ó2=»]l> ÙÄ> 7v=¼r¯=Ý:Ã> Œñ>25> r> -e;>3Ç=â– =× ñ=«wò=¼{>!¿'>…ì=Î߈>%Ú>;!g>gë>Fºc> -[æ=° -=Ðp8>òZ>c=Ó‰>Ø>8†º>#„7>='>Y4=÷#+> aÐ> ²á=ñâ=غ4=É>ï=¯&*=ôý[>Ñ×=ú5r=tÔ»=ÁµÈ>!ÎÃ>2úC>ÂÌ=¹1=µŸÿ=ÅA=û>>òh=­Lƒ=°°E=ûÙ¤>ä=ëA¥=߃²=ÕÎ=áP¶=ÒEî=Í¥µ=Ì–²=ß™‹=®d=Žð=‘dŽ=v¸g=b˜F={Ë]=¿Ý=¸<=Ž]=À©>_>4é=å°N=ÅÙr> ÜÏ>̳=Úú1=¤by=° §=›Ti=›„¶=²‰=Í°‹=¦ìù=Ä=ê]=‰8â=®®>G {>6ð=m…¥=ó`>…Î=þú¿=Ù§€=±LÀ=j +=ãF=ûñ°=¾éâ=Ó|*=«¡º<±õ=øƒ=®»˜=œCª=¢Ñ=Êó(=çå> ŸT>'³Ë>5z >:=Š«t=ÈÓ®=Ä@¨=OË+= Ò’='Š(=\=Š=Ž7=^[¼É$;[ê=]•=›Ù=äØç>>y>>âR=¹ÊN=³pç=—}{=º®õ=¯IR=,æ÷<øÁö=±I}=¸åô=2mË=ŸÊˆ> -d[>$ü[>EÛ=êµý>}> ×ý=ãÈ=¹ï =©â«=Ťá>ÀK>°C=Ú%=j«÷>œi=¶ñ=“@Æ=¨ƒê= Ži=’k³=¯a> -á´>$.Þ=és=ííZ=ñëì=Í{=Ïõ+=ãR²>=¤Õ>D4²>> ¬C>Èv> áD>!ƒ=¸g8=¬EI>S=ô3ñ=ÁNÚ>> µ²>ëå>væ=Çd=på=—ÕP=šœ8=«º==§Ý8=òU°>.œ=Í«§=ÓË{>bP>9ù>KÄ>a®>[dÊ>0Àj>èH=ÍêU=ú^c>%î;>#ªñ>&ª>ž(>17Î>-@;>SÎ> t!=ì_¤=ó¥>Pj>Lœ=´(==¨&=ßn‡>~û>"ªT>.Ø>1ª“>>I±>QäÌ>B?™> ûÃ=°ùÂ=ª>=ïP> ¨ >\#>³°>•F=úB‘=ª~d=”{C=ãÿÛ=¹Þ=—¯Ì=ÖEM=§Û¡=ƒýí>Ù>øË>ÅL>7È> ÛÉ=ö=Ü¡>|¸>*Œb>%¥W><|þ>(Qõ=ÿÿl=ÝÜ=Ì5>=ßgx=Ù¶>÷ö>4Š¾>mD>€¬>Wc>í¨=äÓi=Ü #=ÛK=ý¡)>À»=Ð=?>˜(>#ÆÐ>+Æg>4ÀÃ>1Š¶>0 .>$eu>å£>3B>8,>2þH>8*>>?Pz>Gàú>?‰ >"?>%¦Â>p 5>Mßv> c> ê6> ÚS=ø -»=挷=ù}Ê=ýkZ=ëØH>ëp=ø@R=ÍLˆ=åú§> ø/=Ü«N=ž1E=ÙÍ3>*BÐ>D–;>CUå>%Ͼ> ’°>iò>!à> Ø>£C>@S¦>A¥Ï>C:Ó>1”c>1–Ç>1™,>1›‘>1ô>1 Z=«€j=å&> W'>`=ä¯Ð=Ùß#>Ó‘>0G€>u)>j Ó>>‡>+Õy>jø>z¦Â=È«=Ö» ->þ >² >„ó>)¯¥>.T/>>fT>GO'>&ÚÀ>v?>Á~>ùð>˜N>Bü> °Ð>0 >"¢ø>>È!=íÔŸ>º®>ò¨=á×/=Æ}W=ça´>>€ã> Ïç=òÿJ>®<>Æ`>3=Ö÷==¸Ó>Wa>1¦œ> ’9=¿÷^> u§>L¬=ÝLí=;¤=‡;Õ=â$>€¬> “=õä=Èó’=èr¤> =O>Ã*=°˜«=¦´ô=Ôö>c> W>†ª>Ði=Ì0>V>DÚ>fp=ÄÉx=¥–à=“Ëà=ªk‰=ïà§>h><‘ø>:˜î=æxâ=»=Ú~¼>Æ>U´+>aS >K4>Î=ö4$>Ì>*1Þ>#§{>ÊË>2).>"ÉÐ>&ù„>:©•>A†>+¢˜> ór>ñr>y>SR>…±=±Ç =Û­Ò=þBE>l–>"K>û=÷âK> -òú>4è@>>‘¡>9*>7(>Î=Ï&k=óS>‚>)ài>2ÛK>;>5«1> ¯>%=>6>w>.it>B˜³>5»g> ë/>1ßü>I¯>=ây>mBÛ>‚…Æ>lô>DI\>¶ =Ø”‘>³m>RÄ>U#>YŠ3>NÐn>:«n>A|Ð>·½=úÕ>iÎ>3ã³>Pà>%!¤>_L>E›Ø>p>'ê^>Sà>V´ ->5A©>¾>U*=ãçR=îM³>ãE> -mr>)yí>c.ý>tª>[âv>61 >,Í´>ë->bG>!MV>¶k>ù–>q=ÿ×@>!­r>?íz> ~=ò—ö=ýŠ5>Q˜>ZQ=š ½uÔ¾‡†9³C³>Ÿ¾>x­>Zh’>¦Úª>É•Þ>«ÑK>ŠØ¢><3=–x?½ -Êñ=)Öž>Tá>ÓÆ>ä'>?Ô=Êð:ˆ\0>+Ò#>‚‘y=Ž~ȼŸê>x[>;û>c™>®">ÕRë>’g=>#_í>çD>\C>£º¶>‚•Ï>V=}>Ü? -5º>$m ½>q;¼øP‰=¢þõ>‰¨i>ù-½q*6½’c!;§>‰g>B¨$> ~> -ä>7ê=Þ5ä> !>>‰Î>û>ó -=üÿ@>x@>SéÜ>'M¸½.Ê;½„ž·=¦a:=HÝV½4¦ÿ=V§ª=άÎ=Çò½>ø>É=KX<Ì>)uE>X.ß= Š=h««>¶bs>²~>K÷í> µ=ï;­>M…>mNÄ>:‹> q³=±yà=öj~>hž=ìÈ×>#pê>†ôm>Q=³KC>Ý>b+¬>|¯C>0“n=;„e=Ÿtx>,†>6ú>Š6=÷Aƒ> xG=è`¦=#Mé¹¼Á¥>‚’q>îüÙ>‡’Ÿ=²’ß¼$›M:|£Q=KŸ­=šÐ=Dê€<>v‚<¬ö=E¢æ=†@=Õ˜H>)'#>S<Ÿ>",1>>|è>’Yû>=Ê=ynš= N­»ü´£½+=DC=막=»¡=v¶=<@s”¼ÕÒö<Û}È=ÏJ5>*ªþ>„¥=Åa=å<=uÄ=ëóÐ>·>W>´ú>sÚË=̶9=eý=Ü“>?ÿ> ’>—™8>Éá>ºjà>œ>GµS=…¡Å¼nèâ>?D½>‘*÷>$aC=ë­>÷ì=ëÑ=ÜYŠ>Ô>8e±>|û½>šÓ×>ˆÞµ=*;½'‚w=‘ÍÆ>ˆÙ>1qÄ>FA=Á+8>,Š>SØ»>/×ã=ôY=¦öö>ãˆ>E(©>q'>YìÁ=Á·ç=•F-=ìZI>*xK>µ…=é·½> -·9>zˆ>DU>c=†µ=´Òf>‰ù=½Ì=Gpý=·Z>" Š>JÒÂ>gÅ=†6Ö=¢Ð`=ÈãO=²ç=¸B> øÔ>ÏM=öññ=Ð6‚> þ®>VƒZ>D·¢>>ñ<>;f> z>'p=×Y~=³‰5=ÚÜÕ=¾ÃQ=q†=™a>!“>k„Ú>F.Ü>$3>6ß&>P.>V]×>YB‡>jÿž>h÷x>hƒu>n >DP¯>$%y>G.&>8UÖ=ÃÉ>¼ú>ƒ\˜>Yô>1z>™Š=í2¿=¢9=a˜™<ìÑ=Ïâ¿>‘>jú>:”>%ªx>NÕ>V·¢>/Õë>ôÖ> (\=Ùà,=±ç/=ŸÅ=-aã¼Jš]=]ZÍ=ï1=ã`2=ÁAâ=:=­`˜>O>ÃA> -¦|=«ß=]ç¹=•í>Öv><н>S¡ÿ>y¨=Ħ£>ðÿ>(„Y>d.ú>Nt_>8>+΀>Bg±>-ÞŠ> Vç>/ÒÌ>5èO>!è7>.š­>2¯">¶=³n@=kŒá> ›">J°>8¢À>Ê)>{³=ÃÜ@=àòP>&æª>&èà>&ë>&íK>&ï>&ñ·>&óí>&ö#>&øY=±µ=Å9¦=æñµ>1ì><|Ø>B à>%–£>£=>"¤=ÒKü=às”=ýˆ/=«O@=jm=g#P=£Í>%»> ó\=ë»P=2xç<Í‹>=Þ8>ÿ>&ò£>ê©=¸š¥=? Y=¤Ãô>ý>ê¸>U>7m¹>.­>OZ=‘;={Kü=fi=±$P>(}=HÙ«;¿ê0=û0è>-B3>3uM=ät=¼Ð >EXB>Ló >ë=Ëùÿ=ÂFL> ->Õk>1ôá>$õ7>;i>kü>'€ê>!»«>ñ=ü“ =>i=Æœ>=&3>I7><=K>-x¯=ìZ…=ª.ç>3À >Aü“>é»>|”>Ç=þD=öÓ=÷f >w>v>‹ô=àD‚=¢”R>¯i>3þò>eÏ>Ï">2m>&¼Þ>AB=ÈIÚ=žÖ’=j=øl>"ÏŒ>'(‰>3|‰>OCÚ>dK>GMÝ=óÅ>3 >@|\=ì¡ë=˜z“=̵H>#þ&>BNè>Ñ_> -_> —>êª>é´=µÞP=ÎE=øº=ãW'=¼X°=öÉê>(É>BïT>…Ø> -<\>JUA>{&=³vT={€=Äh?>8é> =³+ž>%á>;ñ>9èt>5±Ô>9­\>Ãœ=ݘp=ݯ+=þÄ> Ïô>#ÕL>,w>5™>¸¹=ç'A=Íó!=Ê;(=Ç Â>aþ>µ7=§E¾<ði¤<,Ò=Í¡=ƒ¦v=–ë÷=Ÿ”¬=š¡A=¬ñ=õ¾>“g=»Î=€¤v=§J=üÖÇ>ö=öÞ>Ãõ=û Ý=ÑTk=èÉ;>g6=×{Ö=Ãúþ=Õi“>”\>2Ÿ}>ãÌ>×”>Ó>=Ùî{=™$=ý§Ý> k>¡Q=Ç*á=ªºô> -œ>–¤>®>´2>œ> É=Ü÷8=¥Ÿ˜=‘õ=â‹{> ý>ä>×)=å©E=×ìí=ßÇÏ=Ìl#=µNp=¬°†=óɾ>¼Ï=ú‚õ=¶}E=c y<£nY=Ôð=½¥*>»ú>Çæ=©K[=£ë=âým> Î> õ5>Ïï>u>Xú> `­>»ò>¾â>S+>$>&õ>A -=øùa=û}p>Or>÷i=ÿ† -=ò€ˆ>Ò~> à >áí>æ^>¯â>(Å=ÐÖl=«ÆŽ=Ã¥…=¬_¡=Ä„> =ÚFõ=†„ˆ=Å»==Òc=ÑŸ >Ä>*`í>/,=à~r=—»û=’Y=Êó>>YÜ>åý=îÊ=ó°)=÷„=û™5>—¿>‹¤>Rµ>&:½>RzÚ>A= >N£=ð@=éðÊ=ób(>9ä>*õ½=ë•*=©G@=¤o”>ìë>Qw=ðàü>®€=î#Y=žý®=éê=ù²=ÔŠv=ñˆÊ>R—>0 Ø>7»=ÞÑi=«h5=Œä =Øqˆ=øó>G÷>7‰ú>*cÅ=ï²=ùUô> ;>ÒF=ÿÂæ=ì}m=ñ›>iÆ>Ú+>7Îí>(ÛŠ=îé=Å:¹=Ùs#=û=×ùØ=Å+=ˆ>u=Íd>u >&šK>?>b6>±f=âbƒ=ÜŽ=·dè>T>0¿Þ>0Ë>>>:>C>1Óô>ªý=å„==¬¤½=> =âY³>ã|>>òc=òÈ7=æ“m=¼I=…½Ê=½1›=»Àb=qþJ=%V(=×8=j–=‹0S=› ‘=È@=‹¾Ü=@hò=ãÅÀ=ä¹]=½cû=¡A`=/v=z€]=žiü=ÃBk=äm¡=óHr=ëWÈ=Ì5=åLä=ó¤“=îJB=éÇG=âÎì=pc`=„Oð=Îr$=õ¾v>C/=¸êõ=½å‹=± Ä=ÅÕ=Ù„[=¾=¨=Èrq=Âjí=ŸÛ¿=¥],=¡eH=½=—‹‘=jÖ=›Mø=¿‚%=È1=9Ô=¬u@=è¼N>=wO> -X=pñ=¾:œ=˜vâ=ks#=ÃD5=ëÄ> ¬R> "µ>‹0=éXº=êu–=ÚÕV=Ï4f> ‚Š>`.m>ÎÙ®>Ì:d>¨åÒ>,Ÿp=õˆó=¥H=kÙñ={þÐ=Ä·v>;©>ŠÅZ>ÙÕ”>¹Fí>lj=Û¡2>¿“>þ«=þr›=úðŸ=÷e±=©ôx=· f=úW=ÔŠž>NŒ>'¿$>ƒóF>¾?:ü>ïG¡>ºè{>X¦>£>ß=ÓÚ> ¾>c[=óÎð=Ã/Ö=«]÷=çØš>ÕO>Õ³>3}q>PC>u7š>g±>6‰ >ó€>0d>ˆJt>ÃíÆ>Êc|>¡D\>-¹Ó=ÜïD=éÕˆ>;=ǪL=’=Ø=Šèä=Í>”‹>Ë¥=Õöâ=ØÓ«>õ+>)«Ê>søø>ž:|>•º>€©|>$B”>0Üè>&06=¼—r=ì³>ÌÅ>3¦>‚~,>±ÁC>ØdÎ>´Û£>ŽÖ> -³‚=ì*É=Øiß=Õƒî=˜sŽ=p)!=ÄbP=ðh=é3u= ÒØ=Ã}š=Ì^™=¾ˆ€=Ã…+=ë•(>†#ñ>šÞ/>©“à>Ÿ)ø>nž5=þñ¿=²*=Öar=öeD=Ŷ=“#=³$ =Ñì=×ó=Áù>)Ð ->kê)>ŸX¬>ä:f>À{>b`=÷f=ÐD=Ì š=œ5=œ%9=Öm'=þ8Ð=Ãoy=gS=Œ=ÈIƒ>Ûè=ÎX|=Ÿ±È=žRÏ=ÉŒr>“¢>`Cœ>¤Êº>™@W>o…¯>;]C> ý•=°eç=e\‡=iÿ'=‘â£=ºîˆ=¨q¨=“™=Û@¯=ð”™=ã’›=ñ -œ=Âk=–"> s®>Dž½>ŒÅ¢>Á£>¥±`>wÙ6>j =™$µ=E ^=¡Ÿ=Šà=ƒc=Âß9=®»ù=þ‚=ŸO>ã“>n -=ñ…ø=Õ¼NV>Ÿ¶>]‘c>ÂÂ>h¥>ÄL>+ä¢>RÜÔ>1 “>÷L>>óS=úÑ>Ÿ=>†Ê>"ëB>ºï=ù·=Û 3=åÉ+=öS=î\£>ö>Ú–=Þ6È=Ž`]=´s>zÿ2>Ƴ7>í‡>æm¨>Ž„æ>S&ù>#_|=â@>³6>¨J>}>"Ë>Xú9>o>[>SûV>%éB=é$Ÿ=Æu›=ûÕÎ=ÿÀÉ=î’>®=¾³Ê=Ñ=°ïY=jê=8z=‡ >öí>v?~>¤>8H@>oO=lÝ=u”÷=»Ú¹=üšû>h=» -=Þ|>… •>¥CF>|à=Ó¦Ò¾aÄF½Åi=¹ƒQ½-o`½î²>jć>™//>‚cz>IB%=Ó7<>&€j>UQë>9e°>:vo>24˜>ü>»¿>_ÔN>·þý>†¿H>U=š®¾=ú|ó>w‡­>AY1> CÊ>Ž°>˹‚>¾Àf>ŸšY>>¼ñ>Ùÿ>YC>9ß^=½9¿>¥x>\ž>=úàû=þ|>‚Œ>tÓ>4åt>6 @>I7Ø=Ó%¬<Ñ'= ¯-=çüÑ>0#t>Sñ>,ß9>!YË>±=°µS=[•Ù=Ê~ê>Ž=Áìÿ<Û+ó>'Z>•ˆA>tò*> -±Æ=~·é¼3øB=“V®> BL=Ñâ”>\ü>6²ê>H5i>Ã6>Ô9o>œÛÛ=ÅÇd=èÁ±>Òl>ØUP>v´>Y¡±>T6>SÛ>9£>œO=ÐM=…_&=¸à=Vå=Q_=ûw>Ž[»>a+â»éÇ=mUx>M >-“¹> -ó> -¸>1=¯²Ñ=©à8>9æ>§¶ë>ïÍ*>ç9”>ÞDì>±Ié>Jδ;æiš=+Ó%=®š=Ïdº=ðiñ=°Ú¤=l%À=G> €>e‹J>„eq>˜ŽÊ>S`¸>Lü=ËõÐ=ªÛÚ=ê¶û>~&Ö>Šs¾=½®Ž=yF~>'¹>g=ˆÝÿ=—B-=€ƒ§<é =¶Z=>VâS>QƒA>%>w>.J>HZ>qø=†‚=&!= ¬/=ØÆ=àÈ=ðM‚=Ó=Å›¤>FÎœ>›g >Û´Ó>² 1>vÉø>-ˆœ>ݹ=éL+=)í==„=ån%=Ù-.=J»O=±±>uÅ> rÆ>ø×>7³>Hõ>y ~>e¡ë>LƒY>Pš}=×ã¾<¦+«=ž˜<>2±>YHº>U>&TS=îª}=Ÿ -U=Á0(>>5>—vv>ÛGc>×éz>¹ùk>Õ×>V‹Q>rûX>‚ÊŒ>2”F=¸Ï¿>p>z­>Ù&> ÕB>ˆ#>øl=⶟>³º>n¡>…ã¶>q*@>>f2=óG=&þ>Ö> - -q>]j>–>- -s>0w°>mø>BQ£>P2t>+Õ>¬> ˆ>6Ñ>[†í>Š ˜>†^m>xX¦>0Ÿ$=øûÍ=| a¼dä#;ƒ -è>…>5Üð>LÍÂ>-Îg>2¢>,æ0>yæâ>Å?>³æÓ>’«>}ôý>d8=>Np®>ÊÇ=‰Ë=mL=XP =Ô˜÷>^-=Ìîp=¾®W=ù&%=Û£¾<ÓÀ¢¼D]ñ=a-=²g -=–Á=˜^G= Ä>êì>€"Y>Qiö> ¯‹=à1p=ûþ+=ÒB¹={ï_=F“d=Žc=ŠÕ}=íDÍ>}Ïr>ÚÒ>öyå>äñ^>˜É>E#=¾²=‚3w>ö">˜Å’>Ë2b>áT}>¹½Â>Wº>’=Ø*W=Ša‰=´š>›L>B– >YJÌ>1µ™>1Í>ÀÂ=ÂM»=qÊe=;«<åkæ=³z> -!Ù> ö)>ãÁ=öÞL=îtO=Ów=‡ù=cý =OÆ=|J­=ÒîK>@“=ÐÙ> î>Iψ>KË.>0˜Ì=ØBÃ=†p=ûYI>x–> :>FÆ{>›f¸>Ï¿>>Ç{q>™È>”¡s>„.\>R˜ã>Bd€>Ix>RðÜ>g‡È>TÕD>\Ú>•Qß>©è>^>Mç[=ïˆú=Ç‹=ý¢/>}>³u>|ïî>Í>à8j>ƳJ>¢T>sÕx>60¬=âey=¨Pƒ>–?>"œt> -±>W­p>È’>KéU>!ï>=öÞ©=´ A=±Âr>$BS>bôS>zÏ>¥@ž>Ö:(>Ï[>ŸŒ>Bç=ö#ú=Ä3¯=Ôø`> <Ú>8ß >öF>,*>Ú>  û>5Þ>Ae> Ja>6”ä>¤¤>~í>iîÄ>f9>EÀu>¦u=ùe=öáC>>+Dé>.JZ>cF4>˜Æ>><¨>0`$>1º¢>/Nm>I¬[>-/=ë©S>'+x>Œ8±>ÈK{>òÃ#>çž]>¼ g>fYÒ>M¼=õÚs>>&K¯>R=ý>uhË>—K>©oÎ>«­ò>Ÿon>Œæ}>zâ>XŠ>,‡>7›>:7È>¢@|>ú‰µ?Ã?™Ð>¦B,>~>€-V>h¶þ>C|>4ã+>5En>Læ¯>zõW>Ê>n—ê>(81>"™>?1>Y‚d>fLÿ>y©‘>ed>;9->ÖI>+¿>Hc>3ò>œ>L‹E>V½>!zw> A®>"9>Žv=öf>œ>ÿ²>K¥>bÈU>•‹>“ê4>ŠM>lÿå>+Ô[> -.>H> >&Zª>*Ÿ²>%¦û>­Ò>Ì> -—>s#>Jž=þ¸i=àóy=ÖúÁ=ô•=ÿfÑ> E·>> -j>e=Ö>aL>`}E>bÌH>p¢1>poæ>S²ô>5ñƒ>%;ñ>û.=Ô,)=ú‡]> ÆÉ>"@©>H—?>K $>Q*>r˪>YÇÅ>!^> > ¶V>wðŸ>¤tœ>«M9>¥­r>• ­>ùº>^µ¥>'uP=ÒÖ'=ÅÆa>"Ø>[qt>ƒ0>^á>cz¦>B»ø>/ÿ~>—\>YÄ>ë > ©>O«>²üÐ>þ„¸?ñï>Ú·—>žØa>nNó>Néª>*p=ê—"=¿ˆÄ=ÊÚ'=á5ê=þ–Æ>¯>!´ê>Ð+>`Ð>†w=ú[1>+U=øcÉ=ÿþ?>{¤> ~å>š‚=ø~×=Ó2=ÊñU=Û™ =ê}Á=Í_.=¶†=À9O=¼x¤=Ú&˜=þ¼>Å•=õà[=¼ -Ú=ÊWï>²®>m4>œw·>®ý>Œþ>”=ÉÊe>:m>OR=¶.Õ=ñ!S>Cµ¿>}j…>za>D‹Ý>->"sl>K)>½Ÿ=ðiÜ=æz=þY=üà2>=½>‚bP>sýÃ>^Þ>X¬Œ>L$ž>' -Í> JÏ>>@Ç>ˆ%Ç>›Í¾>Ž·Ý>\ÿ‡>&E.>)à>˜Ô>Þ|>EP>Yü>î8>ÊÐ>˜=Óä=óV°>{>@ç->:º ->ü‹> Šß=ä\=ë Ë>& 0>Lì>L}º>E=µ>JK³>Fžê>H_X>c¥×>‹Ö4>ž;¼>’:Ê>…ÛÐ>½s>‘îv>^c>'ôù>0÷>ZG>‹ýñ>»§s>ÎO>¯³>u­Œ>½«>´%>2>-®5>FKC>,¤Œ>Ó> Ú>ƒ³¤>µ ¦>²ÿû>–…ä>y´p>0Ô>+”> óá>Ñ¥>hX>2Ëa>TqL>I>F> =çÌ=æŒ=ëÆ=ßk->’> §ë> -k>*ÿ¡>BKX>9ù>0¨>!„ç> -?]>N¯>A>v)¾>¨×¿>Áz!>Å5>—uâ>D¶>CLÉ>fÊŠ>l=>pU.>Nm>I{¤>(Ãa>¹#=ã¾=ëÖ÷>'â>4<‰>OÁ¥>Tv’><’?>)³©>)O´>«/>‘3>ä3>GŒô>|Û>˜Fç>­Å>³~ý>ªo^>Ž»·>X|¬>?у>*ÿá=ýæ=Ñr>×>=Š¹>O®Ö>Cgf>3S">³›>gþ=ìŸ>=îvV>’S>0àß>=ÖR>ÒÑ>‰-=þ¦ >Ç¥>+Ea>%¤¶>lÅ=÷~_> “Œ> -ë^>ñ>’>"S>.7l>>ò,>:¾½>/C>&r>#œg>.?‰>C~!>1ç>_1=ü­¦=ÞÿP=ÈSÕ>²š>$"=æ\>1œó>J >ëO=÷ -Æ=Ð?K=ùl=Ãèý=º ôÐ>2û>pÐ> ôÂ>)3¡>bj>ƒéû>jJñ>5sÀ>3‘> ¬e>*¬Z>&/=ùδ=ã2>#>ò>"ד>. Ë>k=ÚžÔ=¼Š=Ά=æ°y>Á’>òÚ> sC>†î>@Ï¢>€>†ƒ²>Y«>4ë/>tdp>™¾µ>¥Ž×>—&;>loÐ>=±Å>$(—>ƒ >Ŧ=ßr4=ì(ô>cM>¢'> ˆU> r>¹4>îû>\Üç>r‚Ÿ>_Ô”><6+>*®>C¡6>^æ÷>>™%>)i&>.M/>Ü%>Ìy>Mö>b»g>CÛÒ>M•=øæö=þ!!=µ†=ÐC>γ>R>@]¤>h%æ>g©b>Y×,>Qq>B >'´&>]> *µ> >‡> -e>2V>¾W=ó­2>fá>ƒ>N>{„>&NÖ>­>rÎ>ï¾>·³=ê'g=îÌÑ>”> ^ø> Q#> v>4z>L–{>/i=òz‚=ÜR´>ÿò=òèï=ñ'Í>•’>#3">»®=òxÐ>ѹ>'®ÿ> ¥†> ŽÒ> = =óÂV> §Ê>Û=Æå£>QW>ò=øu=á™7=Ó.P=Ü?”=É¥8=¾óŠ=Ä=úUn=Û6»=›ÑÙ>™>*/„>2À‘>6ã> l§>X/> ”>!“ì>ü=ñSÕ=ðÒ > CÌ>+æl>&i> ™Ò> -f¿>>yA> m=èë:=öŠÃ>¦ì> uµ>nš>/ÉŒ>R»†>eã˜>|}n>S;ì>OA<>Öe>{P>8c=ÿc> )a>4ðˆ>^-X>“Â>žç«>ŠÚ>6‘%> j>=‚>nÓX>ar>7à>,;£>:sÍ>aP/>Œ0•>fyô>9Ã=Þ(=‰e³=dÖ=õÁ>i>‘C>!V³>6%x>/.o>LÄ>>“4">š”˜>c¬¹> Ä>_„> -m=¯*=ÀðË>NF>B D>P¿>B¬>:Â}>)™¾>s»=õ'½=ß2]=Ñåš=÷N>’> -?>a=ãõª=Ö'é=ác·=ÖL=¼m‡=ž¯.=°¸†>;2>b¸=úÑh>9ç>pÚd>MÛÊ>8ét>*Ý>@$>">ˈ=û‚">2>;Ð#>:ª.>Á>=i>/üŠ>0‰×>7ìÔ>5]>,2A>Am‡>ZÃf>U¾S>IyC>/’–>'>}w>Øb>P•›>tu">K¬æ>&†ý>(˜">)ѵ>.kM>7Ü>,r>³A>1=Á=¦@ =Î<=o=Ö¼÷>t›>">$Õ> -ç¢=¸=qŸ†=‡q=ºœ3>^2>Æ{>#þh>0Jz>ëï> úê>9˜>Gú>"g>;¾D>QµU>AEY>%…Ð> AY> -­¶>;ò>#.“>>½Ù>P*Ë>Y¡>JX>+zª>Å‹>:1>©¹=®…=ã -N>O¿=å‰=¯›7=ÃëT=æ×<>ñù=ÿŒ§=æŽP=ëì9>62É>1¯> =ñ^=ü“ò> d> Œ=Ð@ü= ³Y=‘Ýæ=į˜>l¹>#ž>!/B>m”5>t¥.>C¦ñ>=ò3>3í>SÎ=ê4—=öö=å×|=¯‰=¸)ô=ëþ¢>CÀ>ž,>fÈö=#‘=nï>@ƒÎ>Ja‹> „>N-[>{Eü>ê=£" >Y£ˆ>Š0ƒ>h K><N=î+Î=„/D=_ý>+‘ã>~T>áÜ=À`o> É|>>{ ->%ÉH>ÉT>&t‹>©=çö¿=±Iw=PâÅ=)õÑ<‹,> U>„5Ý>z*<>M%%>*G€>}•ñ>ŠïK>aáž>CØ2>&ç>**¢>ux|>‚:à>‘Ìb>¢->…½>Gx°>>àÒ>W[$>ll>Wšr>,SÙ>,ä=»ì]¼ ~¼Øl<\ø=ú;l>Kï$>7ïM>s–I>Š.…>D˜>ài>X1‚>VQñ=ÇN”=•Ìž=ùé >" -4>Oçæ>_ó>8,>j{>"~K>dª‡>bºi>n­>C£„=î·=ÕC(=²³=7Åâ=\¨˜> y¦>Ô> |Ú>¡·=ùZ=ågc=ÍE†>Ë>&­u> Œ>bçú>­aá>S`N=¯NÔ=®ª=¸¬=‡”=Ùÿ>OÕß>mwó>ÞÓ>Š¬Z>wL­=×”{=3G§=útò>n{S>Œ±e>@(,> ‚>ƒ?À>‘|\>/•U>Â>#B7>T&Ã>S÷œ>i¨=÷Î|>Qi¾>ñº>¦Â>šå)>ƒ ==ýÿÑ=]N>Ã>K ·=±ò‘=µ0¤>œ®>Gš>|Oh>U3Æ>+åÒ>&¾>C>/ Û>d1 >|9>Að¢>C•Ø>c¦¢>C+Ú>e(>< …>eþ >Bÿl>O>¸>]S÷>9I¬>AŠ=Ï•Ã=sR> Ó©>:=®>-Œ># ä>$³ø>A¦a>…¸÷>ŽoÁ>‚ƒØ>%xj>;™>Ž,=ú•Ð> q>)'À>›><~4>ÐQ=Z (> >>Rp¹>;†÷>@Š>B´Ï>:€G>L³=óÏ.> !>OkÐ>e‹˜>J§Å>S¼>C*³>"$=õÐ*>B§Ó>ƒ5¾>rü>€%>§¥4>­ÚZ>”«º>N>/}>^Ð4>[]î>[aÑ>IäÂ>%$>ó=âð_=÷Ò=ø(à>#*>;]>œb>54’>IÞÃ>Cì,>\# >qûƒ>€B¡>…U!>s™e>_*’>FüÈ>b=Ÿf²> -;c>ÉZ>€þ> n>.Õy>PËL>n‹n>Ó¡>„4>{Z>Vx=ÐòŒ=ìèz>j>5W>Qú>5™>6Â`>*î>;/>KPk>fQ>bý>ñ*=ÊÄ¡=o=ÑÙÉ=ò˜S>!Ø[>/î>R€ó>EJk>´>ÂK>0Ë>}1>øÀ>Zä—>Q×K>â =ò29> s)>3ÉV>B¯>k›õ>‘t>¥ê/>Ž” >IÇ:=Ì?m>îÖ>#y™=Ôå=Í€Þ>6S¥>àa=àF=×|>F™>W®+>_¶>Bó>}“;>†Ÿ]>5©¿>$ÜÂ>vp>bm>1¤‚=ø A=˜Û=²²=îÓÕ>+">3uu> s=Ó)x=ºý=Ò£\>O¦>sñ>kJ¨>>m>Q›> ÝP>Ûö>¬8>M>܆>'ï!>n›½>`A9>6œ>@J—>Fi<>‚*>û>YQ>%³@>64š>*ªw>$³>=§V>ÏQ>Ü1>-lw>G> >²>&lÕ>o§>l]`>yŒ9>EÔn>Fˆ>YÝõ>?Ó>%iò=ök>SïÃ>—s>gÀÚ>Ëk>?=õg.>t³=Èòë=³ï>†S*>’Wy>iù>)Ò¿>UB>:‡>=f>9J”><–˜>{>+8>O{>P(u>maJ> +š>•_¦>ƒŽ½>”}=ÕÛï>²˜>™§=ÉâÊ>&£>N2>^Ö ->ƒ5ø>‰ðÛ>”»>ƒ=Ô=Ñ%…=ò#>I–Õ>]é+>OCs>)ô>O¥8>k‡>ˆÌœ>Š+a>,Ÿ_=ïß-=¾k_=¤­W=Çd>Uò>SBr> ö >$1G>HYì>]™E>wé >[ÜB>(¶^>ÜŸ>9Oº>4–?> |>*aŸ>F">dv—>eÁ/> ÎC>:qC>8¥>ÝG>&ɲ>Pv.><õµ>#ªÑ>&ZÄ>8‘>M^F>i -¸>O7>$+è>%\>E~=ëì> ÷/>PÊ>s&ß>jP¦>]i˜>:é'>aÀ=º±r=ÁFœ=Ò@Ë=©Ö¸>ü>!>3Ïö>0k>¯[>*ȳ>7ì> Ä>/½õ>"ν>8^=>Ip—>dIz>ƒÉ>†£\>S¾Ž>HU<>!F>$E;>D*4>]O”>BVê>!¸> ep>ß3>.ff>0}e>\r„>^ˆt>FŸ“>r>| ->E€Ò>?Ò„>,Á>:¬É>^#è>D,Œ>=ć>Eì²>Zª>8]>)x>I2K>HSJ>J¤>eì‡>\–>*W[>ša>ø>žn>‚Ó>'v ->/«Ó>,ñ>HŠÙ>Zæ¯>lM5>\*+>=Iá>#+Ã>]:>)™±>*ˆî>ÝR>ÕÇ>1íî>[àV>tTÅ>rrÇ>$Ïe=ñý¢> f>þ‰>Ì©>0²¸>#£¢=å§V>Wò>CU>,×>$ó>73Š>%í=öz„>Áõ=þ,x=ÎÞ=úÕÊ>$Ú =ú|«=î¿S> lw=ÏÒ=Õ!£>'=>5ç…><>˜ˆ>Fì>%¢=ý˜È>úo>'Ø>¹U>+ç>v¾=ø $>Ê·=çæ=¡^W>?M>Þ>> -¾š>È°>%us>C;u>Fu>>e >7|š>Y>EG£>¡‰>c=ÿjÅ> >.ÙŽ>^~•>Aªd>á>-o=åûÈ> þã>#{>œ@> »~>)t>'p>$…õ>]=ù A=ð÷S>$?þ>—R>r‚>E»>°_>"Ø=áÕí=»‘Ì=Þ³â>’>@>%-¹>±>ü‰> ?õ>|l>öa>w> -§>å>yº>È÷>ØY>Éà>s >";ì>|Q>3k> -ïò>'É>Â=âËú=Ù¢á=ð–>; ->@?>ßá>!År>^3>"ÙÅ>Û¨> :´>[7>6éÜ>> º”>K:O>EA½>RÖ†>^Ð=>]%Þ>E"®>*%î>#¦,>Cß3>6Gä>#¥> ·>&Ls>+0í>äí=ôî$> éÓ>(–>J¿Ð>%wê>èë>'°µ>KDD>‘ø>¥†[> Pr>e¿«>@_Î>l$=ÚÌ]=óóí> ý >c)>%•f>7Ï>3Ðý>*cR=òL9=þe >ˆx>¬”>àw> ‡p>$>(Þ¸>&Ý,>ÉÑ=áU«=þ4t> ré> 2±>!‘õ>ë™>A=öEh>l{=öç=ïèÁ=îp=þæ”>]g=âA=Õ‚O>}>–Ÿ>ÄÅ>èM>+gÀ>GWœ>@Õ4>›õ>wc>ø5>2¼b>/K8>.>j>+£×>+R>$-Þ> -Oö=Ü †>Ñè>Gœ³>nÞ<>\×j>N>*>L4>(ñL>É$=çâ|=íNU>®¼>9§§>:>?ŠW>(„¡>ÿÅ>*ÀÙ>;Ö->CCì>Xªõ>|$ò>\¢>DW—>˜u=î¦ä=¸y…=渑>†>!>(E¨>.óL>. -Ý>œK>¼™>,¯¾>HÕ>9(#> 6Ÿ>'«>#lÌ> ÙÈ> -n==äÎ1>ú<>&·>(~ >žó=Ãß=üêj>‚ö>`¥>)KÎ>3N>ï¶>üö> @Q=ÕâG=£ €=À1Ã=óèB=÷ìž=ì%)>%>ÉÕ=ýÒ¹>r{=éÍó=æ›t=ÖZ=Á -²=äy5=ûÇ€=îÝ=ïS<>”>#Q>ª¢>.´>AÝ> éë>¼ƒ=âM=Õ;>†í>ƒ”>Šï>`¬x>/Ô>"t>ö>"UÈ>‚û=ë w=ÕÌü>§î>I«:><e>0°[>«D> p>UþE>XÀÆ>>xæ>5›>Í=æßn>1²>@->F2Ê>8Ë>ª">D>Ù =ÉBC=ÎJÇ> žj>3=åô·>;œ>d>%>>›#=î7 =ý%_>{™>5<>%̘>šú=ìãÂ>g> >pO>0H=Ý{-=ŠÖ=ÆŒs=æ¾=ÂOâ=Çñ^=ééZ=Ïl·=Ùâ»>žŠ>%®z>ã™>Ê*>²W>1ì‹>9=â¨[=À =§ž=­ß=ï -à>Ît>nº> ¾]>@Û˜>L¹C>5éÃ>ÔC>a=÷dç=Ñ'3=Ò¼\=é†b>ò^> :>:8=ú–ð=è7>®> -y> ‘}>BÚ> å¥=è6Å=ìMp>%ê>}[>ð]>+¶Õ>›d>19á>A® >(Ái>‡‰>0˜ž>IÝ…>hÁ>„çÉ>‚ÉÛ>o…>bF>=;»>>æE>R*‹>$ü>ÄÉ>nn>%ƒ>(öî>1‡±>yÍ=íÀR=õËü>>3>õç>BÄ> ›&>2h >Í°> •_>D=ø±”> -±>²ú>Ÿ¡>þ>@><¡^>, ‡>Š‡>²ž=ë=ÆEz=àd@>€­>Ô6> -––>†¤>Ü>!ÌN>-Ü—>D°/>aÜÀ>Lµ>ô7=ô*¨=êóÌ>¬ ->,v>EÇ=ì{Ž=Ñ%=¹w=óÖ·>@> Š=Ç '=³GL=àðã>Š™>˜)=ÀþÖ=ívN>>/¶=ÿ¡¾=ï“ =¾ßK=½›¯=ö–D=ÔäÂ=—¯'=ö¼=½û=âK=¸Æ:>¨™>"çè>#1º>,ß>4'=>7ÞO>&X> {‚=õ‚Y>QJ>!m>žó>Y®>€ç>7ìI>@D2>0DJ>$mw>4o >TŸ>X‰œ>i>m†I>+¨«> Ï> tš=ã6P> -`ö>Hž >NÉg>*|ù>&.×>1õC>.sà>)e™>“=ÚV=‚­{=«å²> v>4\>7Z>1Am>6õÐ>@J>2ÜQ>¿Ù=øjQ> åI>&Í> †=ùGC=þÿF=ù?Õ=¯s=~®Ð=R€=›-A=Ý1§=ÃJU=ÎŒœ> -/7> ” >  >XŒ>G>©ó=þ†ï=íUv=Ø¥b=ïùƒ=æ5ä=ãí=âm‹=Ópd=¯U=Ü©>7=ÿìµ=Ë—¥=Áâ†=î s=Úýj=¬ÂË=ÂÉ=æèP>\>h&=Õ#=þ<Ó>*šu>k>&®=î=Í>=äøÍ>ƒØ=ÖG=À7=ôç=ÿã‰=Úc•=è ƒ=ô_·>ê¦>&Ç$>,‘h>9çâ>*=éþ2=à p=];=Tå=k5™=—™=·ü„=ê]/=Üùƒ=òÛú>"v©>>;›>•¥>QÈ>Ê­>wS><>9b>9Ü7>GÜÖ>%Ý•=Ýy‘=ó²ë>1Õ >t=çœU> ¾ =÷`Q=àÍâ>.˜>ß’=ãû=¿½>U4>/þU> {>ù©>*åM>EzO>07z>Js> r>¡> -ð> êy>+Ýä>8Ôþ> eþ>ã„=ù’Æ=º©o=¶¾Þ=¸IÙ=¼.u=ÔùW=Ð|=¦Ç‰=ÁÄ4=ÿzE>n>„~>(à{=‹—½—£b½õŸ>½Q5Ý<ñ—Ó=å{ä>.Ô3>).1>$ªÉ>Väî>|ÅI>6Š =Õ&”=¦8%;¡ÊÉ<ÝÞK><$>i8>¡µ>'öU>=‹Ì>Nz>PÍ=VËè=‘(œ>$.>&µÅ>~=˜Rv¼† /=Yú>—\=Úr=¬¡{>«s>A}è>VóN>2¼>19>F›>I´p>o8à>~¶î>zŒ+>`Yí>m£4>bk>;ÝO>ˆæ=÷œy>A« >g—Ï>k°n>eàõ>'·¾=ùG½>‰>+<Œ>×ù=—–õ=BéA>´j>eø>gÈŸ>MÂÐ>cwŽ>‘¼¢>‹Æœ>vÃ>€Ð3>‹š«>ƒšT>hH=²æb>ü>"£“> Pø=ÝÊD=ÝÂ5>EQ> ;=ÄÀ=°°b=ÞïV=À[=Š©²=òî<‰ª=`Éw=ìãö>»­> ìÿ> G!>–=óºË>Ú[>"Â=Ÿ_i=·¦ó>=n±>)Ñd=Ƨ=›JÃ=§ p=Æ;H=±cÅ=p&=y=ã~×>FI>^—@>?üê>î÷=ñr³>#‘k>'…>¤•>_>…‘³=ö›=…2> :> %‘=¢{=´À=Ü·À> -%r>ïW=þ‘À>Y>³,>ó>f =é ’=¾U=Nm¬<å¯à=á¤ò=ê=^<Ô¢={äÿ=ð>¥=œüÄ=—=u=ã›R=øE„=ã3=‘z=YÌä=®¼Ä=QÊ·=þ¬Z=ï‘õ=Â@A=š-Œ=+¸=h¢=Ø*›>Þ²=® =‡ãÐ=—¢|=Õ=îV>3£>qØ>kå·>[øz>[if>.•=ñd=ö>#>é"=ø<=—ëI:aŽ<³À;=ü á>CV>=;N=ÙöÊ=vg=ê†=tGÐ>.&o>RÁý>1 Z> t>q >4Äó>(q<Îä¼lEæ=‡Èì=çÚ\>º=ák=À=Ñ> -À+=ýM=¦oâ=ÈØÃ=µ>¸=KôÉ=[çç=›:—=Úqí>!·˜> ñ=Ôd5>>%+4>i¦>#Î(>H_> Ív=­ê}=D­=˜ ÿ=ñ{>Åé>-­Û=ÆS5=mƒ=HØ=”C > Iþ>—>çg>ä®>ƒï>Fk>' b> WJ>¶±=ö¡>6%>k‚%> ÏK=çÔ¿=öª8=¿=(a;Ú|D=5žì>U`>L4]>yœÀ>^mQ>)˜ˆ>-ë > ,H>$¸Ô>(ùü>ÿž=ý°¸>òY=Ùm=ƒ9Ÿ=‹‚.=ßwj>ÂI>98Ó>G‘=ÿ›>=Äb7>#W>Q™>ÕÄ=é¸=¨³ú=®7=ñê‚=çàÜ=ôº¶=îÒÃ> Y> »á=Õ¾>˜'>;Do>Òg=Y´¬=mÊ{=¬Ü¦=e6=ªÑQ>Ôâ>wÂ=êý‘>+ó>Iq=ÎÊ$=ßÚó=Ô5> 2>)’û>Bs>KÛ>>7õÞ>B+Ÿ=û£Ô=´ªw=´+=øm°>v\>Â>š>vŠ>0 ->(L>Ižx>‚Íß>aK•>>Ð>F!->Ax> y²=·,=¯¦2=ÉI±=—>!=¨v=ôO\=ó!U=í -l> m> -Ö=Éa]=Áîí=Ôõ|>å> ®!=¶E“=§A=ÐDf>#Êí>EŒî>C£?>F`O>1íh=åW=¸‘=× >u{>Ïâ>2!™>QA >hFÖ>rA¢>ƒ³È>{4>-c/= ï=Έ=ødì>@~=üÍä=ïG5>ƒþ>lv=Çé?=ؘœ>r4> M×>õÓ>(`V=ÿrn=É¥>ص>%ã> à+=ì…=Ò ‹=Уc=Ùèû=åLÊ=â1> -Á=ôä=ʵÃ>ßo=Ý&=ß¾R>Gà>J=ÎöÙ=MN»<ô· -=½†>s<>®>Aš>,šW>+¬>!©–>.U=øvÂ>%oW> éÌ=³©À=Ạ>™¬=ÆZ> U>7ÍD> Ù¥>Ч> -'=êc =džd=ý‹¹>cø>{Q=î†Ã=úXì=â -÷=²ÔU=uàñ=±«¤>ÙÉ>*/>¹6>§:>þî=ÿF‘>âÏ> Ç1=×W >j®>Aø“>3ë=û6Ë>ÏA>|ç>¨Þ> ëŽ>Il=³H,=jüx=µ ›=¶rR=®\=öp>.V>e§R>Vîó> ‡e=üí=öFç=õ ú=Çÿp=jï =¿W> Â>>–>š>-ûð>@¶µ>D˹>6‰w=ý}¾=€;=ÈÛê>ûe> ¯a=õpÎ=Çv=ónB>Õi>"Mú>ƒõ> &‘=Ëï^=àtm>!›©>Ìõ> >®þ>*óX>3Ñ>6Œ•>8q>*œœ>À9=ÞHD=ÐÕà>-R>%Ñ > à>¡y>xR>tS=ðŽÂ=èÖv> ï°>þ ->Ä=òEf=ïÐ>=O> Ï>Ht>%¥>B„ì>8þ>ƒp> -ƒð=ÜŽ²=Ñ‚Æ>ðq>».>*×>Ù>*z> ´=ïõ=ô)=»6=Á–6=èâ>ön=ážÕ=Öä7=î‚O>Ÿô>NÖ=Ëé‡=¦„Ø=Ç>–Ø>ë:=Ö’=þ™O=ýÄz>pÕ>¾L=îs>;>=õ¦|=€ÅO=ºo=ÿªþ=é"1=ã=μ=ç…Ò>¨Û>KÙ>!(>‘–>õì>ÖÚ=è˜=Ëó=× £=ûá>âˆ>í>8> -=E>#Ï=ý§>.ü>&¥A>"& >i>!É>#.ð>[ß> ¡=ð7ø=ýðZ>4T> =ðN =¥‘˜=þe3>%>‡Ê>S=Ò¿É=óhý>³E>ú>*A<>7’>"8=Òsÿ>¸¬>3Ô=>9j>&¹>ÛÌ=Í5ˆ=´å=ëÝ7>Â8> -É>óÎ=ékO=®m4=â¾õ>X=ßæd=×Ö¶=ùVÙ=ÒâÞ=é>+­š>F V>[ê>CB>6$y>w?ÿ>šß>¬c{>‡Æ>OØd>4_î>ïÚ>R3>÷q>uÀ>c-î>±… >Óè=>«£ >_Õ>ñA> œû>ÎÐ>ËB>j•=ñõý>åV>û°>îg>=‘½>Vt~>ˆ>¥x0>»m\>³µ>{÷>Zl=Êù8=¯ Í>ok=öh=÷Gþ=ÔlÁ=œðÊ=š;º>Ñ“>*h>x¼>7KÔ>bÌ>f2}>kÐ>€ü>€\`>rz²>¨ù³>¸Õ‚>™äe>f®>@ÕC>1@ > 0>=æÆ`>…>¿i>*¢=äù >£>™„>,‹K>°t=ûØ>Ñ>:Kï>>+V>?ç1>$8>ƒŒ=>nî>a½w>FÝ¡>/Â÷>,ü>PjÔ>œ{K>§í×>¡)À>¦>>:˜…=êëô>Vˆ>‘°>ˆ=ý V=À§=Â9>šÀ> -+>vó>Ÿ>(«>6>-aj>u=ò”“>è¢>#¥>JC>„>˜qN>•.<>X™T>1ýÁ>!" >'„>G¬>%•×>)é&>NÝ’>šæ>¬ž>£¼è>‰W“>am>Oüc>0£>?ô>Eø>FÑÑ>. ->Hþ=ÿÌ=┦>ã=î r=¾ÍÅ=ªY;= W@=¹=m=ûü>4–=Ùrí=êºå>ÑL>%w‹>l't>š >·£m>¶¥µ>…Tj>=œ1>œm> <>#ÏD>5©³> ì=î†:=Õ†ú>êê>=Êþ>iðÕ>£ €>¸Ô>–è>^‰ä>+è0>²”>KÐ=ùc4=ðÌ:>ÆÕ=þÀ5=ý¼^=èÖ=çOX> Uü>g0>›;=ábè=Ê×t=Ù,~=Õ¢g=½y‰=ø$>þ_>^V>#:Ê> L–>»Ý>a€µ>©>»Ñ>«ð¯>^ð|> ‹=Ø ¡>5¸*>1Ä¥>p¾>AÀz>>|×>áŠ>*û> z>A6>5€>0òþ>Ý™>Yu‚>™y >œ—Ê>”0>`ˆP>«g>$œ>_L.>KdÁ>=b#>)¦>©$>.‰> -Ü> - > Â=úug=ÑŠ(=ãS<=ñf­>!ؾ>Mï}>>|>~>ù%=à«=öj>Ð0=Î i=š×=ÜnÎ>N -I>œ6>¬ä7>­Fþ>Ÿåß>[¦“> a‹>ˆ’>)’¤>(†Ù=ÞV=óîš> *>-B;>L%°>N®®>Gf>2b>/,·>,3>%©>+2¼>D6>s >ˆ€>”–>~å>|}ë>O=ãE©=ñ–«=ñ¡|=ß¹¶=äË=ìÜ=ñIN> -E5>Ôt>—>0—6>‰“>#‰Ã>O \>;±´>3nS>í> Ö>­Ë> uP=üüV>Ç>ñÉ>:·>5à?>Ó=Ô>—=­>G>‰Ç>ÃÝ,>¼­è>ªZT>Z}>?uÏ>O³ì>/Úc> 1#>ÔF>%‰Ó=ùÑç=ÕX¸=ú‚V>*<">42­>O>+PÅ=¼–Q=ל > @À>9W>~M>8n>IÊ‘>94>,$>YW>…»‰>u§>!É=ïä=â§>]S=ô’9=ík¤>µ¡>ÀÂ=¸t/=—Ùî=Êë›=Ã=‹T=—[X=œhÂ=¿Ì“=û×÷=ö!p=ï}Ç>8’>*ª™>fB>Øæ=×óª>­>#ï>O > Ö[>!Y^>³t=Ûæ¼>ؾ>(P‰>Šÿ>¦ˆ>³³}>°V>CÑ=ÐÚÐ=ÖD=äôÐ>=°=¶‰=Ót>rÎ=Öè=ÆRÃ=ùut=Ý>¾>…½>3:>eb±>m8o>Xš>Ð>-a >E­£>.ü>…?=Ý°=³R=ÌÙ)=×Qá>aÊ>oX@>‘n>…í2>M”a>49¿>6 Š>,ªw>$¨ò>¬¶>eú=ù¤K=í*è=þ*}>7Lh>+Jª>¤Î>‹.=îm•=íÆ—=ë½>õØ>(oD> ²ô=ÖÛ*=›dR=„k/=äan=øR3> -Ø> 5Á>.]>ü> ²|=æ'&=Ôc²=ß,ã>ó>â->:ïY>ˆ¬â>°”i>µ3>mÀ>)ê=…9=¯÷¢=°xµ=ÖÚ=òmh=Ñ=v=¥`=bÒ=»PŠ>&ñ>,¯‰>+>Œ=ç~C>Ђ>NÀ>0vé>-Vn>i¿=æî=š=šö1=Ífª=‚ô£=„¡V=‡ÔÛ=¹M=ÀÌ=ß„å>‹ú>IÒ>}±î>K˜X>¡X> T > -“r>oü> ‡È=ÄV=›V=ÀÕ=õ=ÚÙI>øM> )@>%/o>&Îw>—Š> ¯%>Ál> ò=ßš> ‡$>L>µÐ=ÔÇV=é^–>9ZÏ>?- >J·œ>A›´=ÿSÔ=ù`Û>&>1âÂ>&Ü>p> q>y!>I>@Á>iÚÚ>¦Pt>Ƽs>”w>E˜Ø>%¦=ü|ª>r®>>Òß>IÃQ>gk”>g ">G¹ï>;ç">d›>µd>[©> Ky=–"¡=ž<Ç=Ч2>fz>)Ÿ™>6•u>JJ>AŸ>#$)=ñœ6=ƒ©n=ÊŒ!=ÜÐó=ïqÄ>-O>QùŒ>Iœ+>!w=ÓqQ=’ -=ÙlS>>‰>f¡>WSe>Vñ¤>'C>â“>/w=õ -">t<>).>;<>8=·g>B¦>N8×>97¯>K…Á>7°>,>>6>:¡€>ó=€Øi=‹+y=ÜA><8>eû!>8…ú>ÆÀ>"ué>P¨Ö>Y±>["—>têé>W -Ò>@A®>@¡Ž>0·%>0)>4HF>-£u>\ø>¹‘>¨l1>4´/>=Y=Û”\>Z¹>,а>/ã><w=ñÎÝ= 5=ÌgÍ=”Ñ=Y<=›ä†=ûŠ =‰F<¢/4¼u=ÿ0Í>‰¾>1Zs=¢Ý>%?>™ƒÆ>¢J”>Û>FµA>€â>]°> -e¯=Ì«x=ËD>t>H(£>ydC>†ª">—å>²"L>ªÑó>Ñ«>ÒQ>‡=7>>J&>pÑI>ÃØ>Jã>?Ë>†Gë>wKi> J¿>Sv#>fØ>='Û>Q P>oK>tv=Ýns=ðKt> /ê>ul>ïú=á0= ˜B=𭻈¥ã=;Vt>ã‹>>ð =Þò\=Ý…>1§õ>!ïÅ=j3ý=ûø>/¿1>M—›>>œg>*Û€>(m> -¾=£ºÆ=EO˜=R'=èГ>öE>QB>œËŒ>¡•6>hä€>;ã>Ýg=ßí=Õæb>KÊ>Ebò>Ï=Y-%<òÊþ=InP=Üí_=ø[M=šoû=ý]I>0´>}>q> -sr>‘˜=¸,¤<æS=´|>P^‰>j­Ñ>x^0>bÃÈ>Cé>/=éí’=ö”?>§È>B\->(åƒ>4gñ>0½½>Bln>vG«=ÕÕû<Úíò=ÞuÜ=ò†>B*>gÇ=>•pð>j$©>*cý>* > í!=éé>ðï>Nžû=ÎÏ ½ û.;õå=¹GÅ=Sìf –L>èv>'"¼=öÕ=Á>:Ô>ˆä= ]Ü>:>|CÃ>DÙ=q%b=òìQ>*™>PG¶>x=N„¡=·Š9>gŸ=Þ/\>¦}=ì=œlr=”©˜=Nÿ=X¥¬=ÄR7>)V>*~ƒ>Jë>Ž$Ž>“èË>?,ð=ö =´÷J=º^7>HV>‘›>¾>x[=í¬Ò=æú8=éÐL>,>Æn=ø1=Þ”Ê>zN=òÃõ=> ²b>5©Ü>9 V>?b=áøa=‰Õº>*>L¾>e¡>ãË>Chf>RÅ8>Y8°>P‘>)øu>,; ->¯e>ª…>1¶Í>ò>(>&œ>)3S>6‚I>fG=> …4<¿5ê=ß=|Ñù=Õ;>A@>hõ!>C1=ê§×=²IÛ>ͳ>”*=³ -Ÿ<õ=f‘=î÷4=×Àl=Ùªµ=ä4ð=ÏÜz=ÈÞ§=íá'> -·Q>1 ì>N@÷>.E½>Òé>'»ð>¤=ã )>ƒä>!Ž×=ìâÎ=Ôv>Ǥ>"’ >Ì)>¿?>%òö=ýòs=ï4¢> '4=Õ/ï=´Y=ß%»=Ü–7=»U=´ =°¾b=ÂUb>¤ ->Äÿ=«zG>=‚=õÑ’=÷F>+M>•é>…¿q>VžÅ> ©;=x¿=š«§=–êw=²¸o>1‚>vÀ=¾/*>½>&ß—=·’#=o5> -‘þ=ï!r=KÍ)>(®>.é =GÑ<‚æ^=r*·=\¯Y<0ia=[^n=Ñ’/=ŽñG=Ö]>KÇ>Oa>9M>[ÿ„>SZ >+!®>I> -B=÷:a=÷ -¡>rq> Òl>”4>r¹>©[=óN½=œô=9Jl=Z?æ=Ÿ×*>Y_>yI=ÛI> ê¨>1\£>)¥ì>)hí>çŠ>T>-ww>3"ñ> ØÌ=³añ=Š`=æ">L =ñc†=³Àá=³P= è=$3Ô<ß²ð<Ù¸'<|:Ò<¥|è=HÊ=š N=‡fÄ=¬=¢½=•º…=†™W=¨Â -=×n»=å<,=ç.z=êv|> Õµ> P1=ø$=è;’=²þ=À3Œ=¾Øû=«êq=³ð†=Ì =öëv=LJ= ¬D=‘ð\=œ>Q= …®=®íG=à¡=ðŸÅ>2^=Æ1Ê>Ê¿>_ñ>¨Š~>¯@ª>è >V1>ÎŒ=®OÚ=ºÔ¨=ßlµ=Ýé=ðd> c*>;®9>ôØ=ËIœ=áI=È¢[=«G=¢«M=âÈ—> N>/<Ÿ>Y·>{S>i<>Gn‹>‰ö>,ý=íž>ê7>Ô¤=áK=Í^]>)§>AÀ>\ê_>[(Å>C‰Ï>â=î<;=É<>5Ó>9Vô>=2>IÛ=ôLÂ=æ#=ÈŸí=½œ¿=°pÏ=öGÃ> E@>+Ùò>5°>(Ê`>6^Ç>5y=ŠM5=¨EÉ>Á>¼§>*}P=ûp¡=ÅÞ¥=Í= =ñÕß>¦’=»Cž=—½=7õ=¼æt>,Z=°Hî=¢§¶=˜ É=Ôщ>ê>Ѳ> ¾<> Ü> -O=Ôj=οE=Öï=­ Ã=¦ƒ=¹Î‘=äŸH>Ÿ+> Ú©=ê– =å§=¿6;=Žê}=¡—¤=¬Õæ=ÀB=È¥å=Óp=íÎ=õ}ý=ß -Û=Ï_»=ôh-=Ãm0=µw*=–‹=ÂS=½ÝØ=³‚Ñ=ÖºJ=üúV>%²Ð>Cü~>:—°>R§‡>jZV>qQD>pšb>XËð>)S> c>á >³> ¼²>au>0ô>!3‘> Þn> Tµ>&^~>Aâá=ú×1=Ê'=áß#> Ì>,5>41¥>F$>-7>I´>,ðL>Dm—>5,¤>4)>=²r>Y -…>RG>_[ü>ƒ +>g->‘ÁL>˜eâ>¨ºZ>³®>¡Ç$>ŽM#>_ê>_› >ˆ´Š>‡x¡>À>m¾Â>_1`>lðl>bTš>LfÀ>1æ]>-Fç>4<->0ɹ>(½£>,<Þ>4žª>="©> 6ß>’ã>0Ÿ>2Š¿>PY>Nuø>4á1> ¤=ç -:=¹“!=î'#=þ« >vµ> ¾Ö>¿ú>Ó>š+=ú„·=âY8=ì _>g­> Dñ>> ó>„„>IÇ=¤Þ=XG`=¤F©=Úf4=ºìÂ=¯© =´)Û=—˜=­˜=Øéò=ó°µ=åâ=°>z=‚à&=˜ü&=Æï=é<”>ͯ=êGu=­Iè=»í=ç·=ù°Ð=¤ÿ"=W=_=HÞ(=“{=Õ¿=ßWƒ=Öü[=ýjÙ> -Ýk=ñh=®²ë=ª™2=å‚x>q‘/>-›>’Úb>…É>Uš>M£>:%P>øX=ì¾à>³> -”Ñ>°k>3ì>IÖ>O³>Ybå>Z‰Ó>c„Y>BLÕ>&Û> }’>5@>S+>}â>™x>—W>v­ç>jÀ>p@ý>o‹E>[\1>iL>zj1>¼ >d½:>F/@>3“>7OD>-Ÿ>[2å>‡Î>Œªû>qÓ>O/»>—>- >Xkã>7 ì>zî>~Ó>E'Ž>a’½>S®>7åÓ>'>{> }3>$p>/ -9>¡¿=öÄÎ>"Z>8®µ>4K¿>>58>(¯R>=> ãn> !Z>,{>! />uc=ëã=÷zä>.Æ^>-Q>%O4>!¯M>;¾=ëV‚>(>¦b>ý>Öþ>((=ïgÀ=åF=Ψ=þÆù> -=> ì³=Ñ4€=™ «=¸:ò=Öž`=ç>>…>X=Ñ=ËÐ=ù«—=õÖ§=ão¯=Þf/> ³/>">æ>$!×>)^><7O>-#¸>òX>:ð>ùŒ>¶>©à>k…ö>„¨§>j¯ÿ>j‚À>b´ >C¤‹>5½ñ>B¦>BŸ>œ]>_†6>’}>—)Š>€q>rè>|Ñ:>xÁÍ>fž>HLl>P>XX>m‘É>‰ì>š{n>«U›>’5 ->M"p>S>Þ‡>,gœ>NÛã>M¸>O9>6[È>ž=>„ñ>0{¿>FA@>_uá>Yq5>F õ>gž9>€6i>swß>V§>,·>Ü>H]> > -i»=æ¹ =°ÓÚ=Ím(>²À>+EÒ>?Vÿ>\>+>… >}Ü>oB´>˜Ð>A”>8C½>[ä\>b¥L>* >>ë»>6ô>ec>[Žõ>Eq> -Ù> J >8Ä%>mÀŽ>hs…>BË\>*ŽÙ>1: >:)œ>ÈX>¬X>˜õ">¼7Å>Åbo>¡Ê>d>Ã>7n>ÐÄ=øüî=Îi6=šù=ˆ<=¦V=æ+>ŸÛ>ñn>Üo=ñ ¦>J4@>ˆqÇ>­ú>€d>=ý>®1> > -jœ>HM>Ây=ùúÝ=Ä ò=ÙtC> Ü>&>ÌM=ýΟ>!ô>N¥*>€ìù>f“d>OúT>ך>Äk>1>J(p>f¹§>—p>~L%>rpÌ>Lrð=ô~ž=낪>r=®Þ=Ï"š>%¡­>HCÉ>b „>‹Äµ>©«P>®ÿ.>n·¾>"‹p=÷.À=ü)M>Šâ>7°>e¹>bLÔ>¥à>½¯A>°Š×>ˆ®ñ>"Úâ=ÜJH=’Vd=ºhð=ëé}>(MN>cßC>wK•>>Q>~«>i6>G0=鄈=Ñx$=ç«ï> ò>JYW> Y >…> m>ƒ>'¥=ã÷=ñÍð=¿Ó²=*Ëo=—_=Ù”£=öµæ>àŠ=ô0P>¹>a:>…ËØ>h”}>!ψ>¡D>ë°=Ò÷=¦¨¦=î¬>åf>(Ú>ÿÓ=ýMl=Ø'=®T•=ßLÌ>ÃG>šÙ> ­ô>Í{>&Ús>4û¶>^cº>q’>sb~>S]¥>’Üv>¸oj>Å¡)>£*>8ª[=ëN«=ÈOˆ=¯° =×ÂÆ=ô)ü>‡â>¿Ì>4—À>ZÓÝ>erC>hü>IÃÁ>¿E=Ü_ï=Ã0`> -¬Ï>"”Ô>-Á>`•/>Ý>˜>°s>šÖ¹>‚‘~>p?¯>M‹>ãÎ=½²d=¤Ï=£&’=¡˜s=Š}=‰ô|=ÃR=áZ×> >#>–ë=îì=ª¡á=æÊ> >-T>;>Ry0>nUÅ>‰Èª>–ò\>wìÀ>QÀñ>3'> `Û>>Í3>gÒ>‚5ì>]EF>4¨&>T=þW)=Ü”ø>yÂ>Ú¥=àÍ>)õ<>p"Ž>‹²@>‚ÿÕ>?c’>‡>„æ==éÎ=óÙm>T>òp>< m>‰÷¿>=f>„Â,>]©½>Zìy>‘>¬¿O>¢Ûõ>š>yŸH>F(ð>*ëd> © =Æ Y=œy«=Ù¼n>÷<>:_#>[B>\6Ë>Hsë>"3>;§=ë =ö „><àE>uš’>©ß>ºè±>¼˜>ÃÄy>»‡¡>©k›>€68>P–f>IžÓ>…¢x>²ÐI>Èûõ>Õ&ð>„°>(óö=Ý–h=¬tr=ݹ–>‰`>N…€>Ž×³>±0õ>Ç. >Ü -o>Ôeü>½÷1>›i÷>pe>y2…>¡ª>³™~>™&f>KÏí>1ãÞ>Azð>¾£=ò{Ð>°÷=ñ†Á=å˜>‹4=õÃ8>¡¡>œ> ’>S#>¸g><`Ð>dFC>\£Â>'±> -À=íQ¬> Ú¶>Gñ>¹£>ˆ@>+f>+ØÝ>¬=>0>åÈ>9>&ºy>-Ú¥>5øÄ>WŽ>7Sq>#)É>kÃt>~W>iÄñ>~±d>¢ô&>ˆ#>…»•>Gd½>3u>5øæ>au>­>êI>¿÷ï>¦Â\>—]à>6Ö=ö‰ù> ý:>(H…>`Ú0>Lé`>-pˆ>J Ý>N>šJŠ>T>wµÈ>IkÂ=í¶Å=•8=•ê=«ñ>*Ê>àD9?Hü>Ÿ#¡>2î|=0Ú=–8Ã=«]>((>j­¼>DQ >J‚> Øx=ªeõ=³åt=çïš>ë=Å^+>%>ziO>Åo>ÁS#>{øÃ>‘ÃÍ>²u4>¡ìD>ŸBÈ>Š,>|ŧ>gp>^z>nêï>MÄË> ]Î=⻀>á«>CÔ>mŠF>;RA>+~=U¼Nh>š¯> =jºï¶~>²>ª¢>“[>”í]>ý>(C"=·kG=ÆïN=ÊU#=è¢ -=“'Ä=B¡þ<ࣰ=<û=§hý>‰Œ>/'…=ƒ#Å=G{ð>1Ôè>Yâ>>¡ý>4Šò>ùý>-IU>iíÓ>#Âú> -¶¿>Á >Ë>a¢>‹É>» L>´¿ê>ž >MÔ>H9Â=gOž<#÷½=@ =–ìâ=ñj>?¸>>vj>óR>Îa=µ¸Æ<Ù'·<Ëí>d¹>HÇÍ>¿¨s>áæ|?÷ç>ê"1>¸‰A>]-:> À=ÐÒõ=Û>(">U÷Ñ>xP{>”–­>¡ëÃ>NP>î´=äˆ=ïü=Ù0D=à<É=Îú =è\> ^r=Ý”=ÝR‘=!ÅL<8íå<90È<™·í=☃> W >Gy]>n~>rj^=ç¨=èÖ>Z6>KØ > -/¤=  ß<ïÃ==Ä>R4>JòY>#ÖÖ=˜Í5=<ê> “>'vµ=êÏ=–­>Å„=÷$+>­.>%¨Ï>L$ >f”n>îS=üS×=­©O=ý¤6>=Óý>J ˆ>Z•>%Ï>'šâ>OŒz>d²š>ò>w—>„êb>)Q>EÎ>–¯>‹ÿî>ax¥>b‘ý>)£z>¦/>03>lO>o¶Å>N5>d>p>ZXž>Ö~>ð*>×S>ÞÞ>@ø>¥,>Ê>ôï>ü-ï>䉑>¼X>ŽÅŒ>I„¥>,T[>¹X>7‹×>B >^3@>ž·>žñ¨>=á>=X=ñö–=¾öa=ÿ7>}N¶>hGä>"Þe>[i–>À6?ÎÊ?]ì>¹ïÛ>oûÐ=Û/=äùÖ>£·> #k>^¯>#T–>ÝL=„½¹>[}>$b–> Dº>¨?>":9>¿Ž=Ô[ƒ=¹¶,=«’=ý©=Þ½~=ÀÐÃ=¯8(=™‰=ª÷¥=ìt°>ó.=‡":=Ö4¾>&û@>Í«=ä¿=›x.=—¥ö> > »=ïCC>à =Ðc;=¢¤[=ÈŸà>¿ > tÊ><:v>0ÝF>º@=èßÕ=ÛÔß=ì ‹=€d‰=ÂŽ>Ž=j”„=T5ÿ>,æP>-¤t=ß=É -=ž1==±ƒB=÷²>õ>,…Î>+ËÂ=×û<úçY>(i>p…÷>?¸·>(ÑH>e5>N=¼æG=øïõ>9=ç$=›.Ò=‚×_=«nø=ÏŸq=±Q_=ÍsG=¥¤P=¯w%h¹>"!>&zu>¼¦> -¢’=ÛJõ>Š¹>39,>7,ü>1Z>60=ã(=ÜûÂ=øå¿=íñy=ê¸f=õl×>u7>¾]=ñ9 =íó:>3¸>I;>϶>WÛ=⹸=±Ô=¥ó>>˜Ên>àýõ>ÉÛ:>Äþ–>Æân>­¢Õ>{>@Z÷>Gë=õPV>Ì>r_Þ>sÂ÷>ˆM#>” ²>’3n>F·,>$½¹=Ùôþ=´"> /`>Ø%>&>>9R>aþ4>«º>¸0¢>¬»:>‚o>dïD>ZÕƒ>`h^>rd>K¶ó>-—>mÞ(>Taç=ûÈM=åMæ=ŸÊÔ=uZ™=ˆØì=¹¶=ÝRš=ï¥m=þðg>œõ>"«;>°)=ôÛ‹=楹>o>¬_>¼A=¾}_=ÅCü>Ö'>¡=øe€> ÷Ú> 5Ó=ç[,=öDI=øk0=åc/=Ù8à=ßqŠ=æ¡>”>Ñ÷> -üñ=übp=˜=’ -]=ÑlÅ=ÝÜÕ=ôâU=ä*Q=zX'=Û`=Њ7>+)Ð>¡YÔ>p5=ôƒu> -ê>D>hj>X ->)•(=ÿé=ÁÊ=É>™=Þe(>ï¼>¦à=êêw>;*ò>3Å>Î=óAV=¥Ä> ð¬>4É> h >%n>ù™>OB> -~a=çÌ%=ʆ«=‡ <=½+­>Èd=韩=Ôêé>/#9>-{×>ÕS>Ëû=Õ1t=è˜J>g>K{Þ>‘Û=~4Q>_×>!h>Ì>#=Þ>¾>…Ä>1 >+Ò“>8ƒ>7rÙ>$ý> ‡Ã=ç¢|=ÕZ=½$¯=ÂS›=ûü=øTý=ã£=œCT=”d=¡ñè=ÔNÀ=û1ß> «>Z]=ºCo>µ>­¢=Üœ>¹>M„m>@óË>VGW>3J> BÇ>2W>¦(=Ëò>6 ->|Ã>¨´|>£Ì«>wŠ®>O7>\ -—>qšl>Wän>õ=ëÅŽ=¡Q@=éÄå>Fa>í>‚Îî>C C>èô>di=O-¦=•Ï‘=öÿ>!Á>o>'Çœ>MhE>”\¤>ä \>öè>>åiw>Ã÷|>l¶>ÀÈ> è>`:A>Í¿>e<‰>_·>dLg>YF>f`f>|ד>dŸ>OZ4>K,G>IÔÖ>,د>-¡>G3>XHå>_Jû>3vK>Oú> H#>9ÑÞ>Eê>gNt>Hý4>d¯>(M >Eú>Sío>LP}>Núë>'%M>0°>wÝ>/ˆ>7g>A)>7år>Jxƒ>M·à>@^õ>7f>.‡C>ˆ\>+L>žo>£> '=Ù²=è²å>¾`>$*•>w=í¸Ã=ïÚó> Þ>Tø>7=æØ =ð_ò=ØJB> -ÀU>I¢=ù&=æú×>wÞ>(5µ>'À>JÄå>8ôÌ>bÂ>cÐ=ë“Î> $> @K> Î>)¯>%õ™>"~>/cÁ>bh=Ý€ú=Ø¢[=Ë?v=ã -á=ï”> I>¶£=ð:Õ=Î1 =êA¸> -ê>%Ž=ò‡º=ôíõ=÷ &=æÛÅ=§åg=Z%=²³²=É@ï>öâ=å¹=ÆQ•=µw=©X°=“>¡=€ôÛ=˜øx=€Ó˜=’‰!=Ûü>’T>D·x>8Š8> :®=ËøŽ=ØÎl=ÈÅã=¥$ô=šõ7=Ú¨¨=Çn5=±â²=­V_=Ôsè=ð“‡=¥«Ž=È«9>ɱ>*AØ>(f>,&>÷?=çè=áÚX=Öb±=—x¬=²&I=¾ÚX=Ñlf=Úõw=õ¯z>!¦>b†=ŠÔ´=žˆ>Q–=ëœÕ=Ì>5=°I³=Þ-=úcv=~ìä=º7&=°L+=¥²>e>]b3>™s€>›…2>L_ï> -?0>ù¡>‰V>.Bi>9#÷>XÀ=ç€k> TÔ>RK»>_ x>YÇ>¯û=±Å=¦ =’L=¼”ž=Û?=ÉÎ(=ÅB¾=ÐÐT>)H>Hx >V >t ¶>aJ]>J@=Ö@â=éiš=çèÄ=åq>"5>ߊ=îËu>"N>(_7>·o>©Ú>¹×>.üÜ>5 ß>(u>›µ>n•>#rþ>EÔ> y>(8¿>*¯¿>ÉŸ>%ïë>3Ì%> `$>&æ>?‚`>=áÐ>'Ìë>+ûƒ> 3ç=óh'=Í@Æ>×Þ><\ô>2äÝ>">) õ>›=õ¼ß=ïž³> …q>>êU>LÙ>U*d>[Öæ>cÎr>_†b>Xf>W£V>_Í=>>’Ù>$Ã÷>$ù>à¸>’:>…>‹>"‡~>qÒ>²1=úqÃ=ÉÉ×=¦‚;=–€±= ;¥=ý=E>vg=ýŽþ>#ÊÅ>0ä…> §E>ùÝ>µ³>QÖ> -o¸=ü7 ->(¯=ℳ=òЯ=ù#(=æ>¼R>A…>#µŽ> -}]>'û=çM4=¥Ic=§ÿ3=¨ÞV=™Zø=ɤ{>,i>$ß_> -:>ã’=ù)!> ˜,=ñÊ?=æ¨r>¶Å> ¾A>™¿=ÐàT>ù>9¥n>&œ>æ•>ýe=Óy`>r÷>áœ=ù>Ð=ÕzÙ=Ëø=Ó¬µ=Ì=Г=áô> †> ;ë>p>:=>=lT>:–ß>,>6R;>3u8>6ú>"ØØ>ÝH=ü4z=ä¸ø=ØÈb=Њ¡=Å[Ç>+N>@ ·>U‹Ð>MRÊ>H°4>PÍ>4(1>çf>,À=ôý=Ê'A=ÒJX=ý'>\¢=Õo[=ºB=áŠ=¿ˆn=r*=­„Ì=ÔL­=°ä[=SöÌ=lB‹=© }=ÖØý=Ã9…=â¼r=äÀC=÷>>!»ì> m> U> -ET=õ5a=ÅN¦=Ä7½>ßÓ>£š=Û$=ºÙï=×:=û¡Î>?ê>QòË>h\>qb¡>c3ã>;Td>‹ =óý=> §Ù>ù£>Œ:>($;>­>)æd>9%<>FÞº>F ±>C³c>Aƒe>.Žð>!Ø8>…™>8Ž>>_[>.&‘>‹E> Û‡>Bc{>oo•>o,U>gØ\>Rt<>Þ¬>dQ>yx>e>÷2>s‘=ÖEÜ=ÿD‚>.}§>9;…>!rP><æ=ÿ·Í>DÆ> %d>~…>÷Z>½>nö>¶Y>ð>0f> ~=Öû[=áàs=«Ì=‰¨E=@þ‹=gFö=¹·u=õdî>,ß=ò¶2=õ¦=ÏÀÃ=·U¹>@9>*bÎ>*SZ>†>8> ch=ýb:>V># -‘>*„ >#@Ê>Ç>Æ®> !>!ï9>>®>)bV>8o=ƃo=½œ¢=Í߉>2×>Ôu>+jB> È>Kw>19 >Lo³>OUt>J+>Yzg>d>[>WÚ‰>4a> Ñg>ž¨> —Š>¤©>1 j>"Ã>4ø=þW“=¹=È“ì><¸>u^=Ûm=»D{=îF_>U¾>¤š=£PŸ=…OÁ=·q=^~=;=ÃÅ‚=Á~=Ñêj=±óU=¤yv= ù =ed==³)z=õiv=µRÊ=Ä£=äÛ_=Ä–4=˜y=Yæ©=ým´>$û>Bqû>"i‹> ¾¯>'~¨>lF>ç¬>¾—>Çã>œh=ú0=ùû)>òä=ú‡> é‚>#k=ÿ o=ž Å=ŸÑ“=´„ð=Å"¹>G>Mpù>F R> ìn>öÁ>GF>"<±>!“>3=÷Ð=óÑ$>ö>Ðá=Ëh=Õˆ´=åJƒ> -þê=úÊ>ˆÃ>8K>é0=ýü•>\>$¦§>xå=éæ³>þ>(@> Ë=ã³=ÕˆÂ=ûŸ>Ìz>^ï>jL>Z¨> ‹> =ðF=ö¸’>u>#\>¥B=áÆ>=u8=áZ™>Âf>ƒT>8F>8Õ‹> -ÑÐ=ùµß=ú.=¼ÖU=¬W§=¨¶=ªÒM=Û¥Â>{>È =ÔS£=Ã_d=¿w=á÷Æ>¸´>Dù>"]D>Èý=µË®= ‚©=¯ë…=ÂG«=Ó~Ê=‰à§=–“/>z>9ç}>Lò¶>:k> Œ=þÓ¬=§s2=ž*ò=âú¨>2³»=÷þ£=±Ñ·=ÍÈ>Ó>‰‡>à=õ8c>v9>¸>}%=Ñ/‘=¦ s=Àº=ÞÝß=ü(=õ$b=Óxñ=Êãõ>ú >EÙ>?‹É>=<‚>Xÿ >b¹>Kfg> •È=á:O=à˱=ÐQ > Ù>á5=õx>%×>$ö%>t!=ó$=Ú…=ì(¡>cÑ>6¢ñ>J\>èÆ=ãHà=ºj=è\T=ü¢Ê> ó>'e8>=%…>7f›> š]=Ê|†=¶“=æm;=î -•=üÿ>´>Ñ>DŽ9>†m{>]* >×Æ>-‡ã>l [>¶‘ï>¸[°>ºäú>ÖÂ=”|"=Ýÿv>‹Ÿ´>[ô‰>D—>96>tÔÝ>‡/o>Y±b>8ñ>Yl%>i5Ó>Z^ß>6p>!C’>yP=£fZ<Ñë=©*w>h=£r=›9Á= ‡j=|Nõ>r>2]Ì>Fs>„T;>‘C>pg>p´†>RpÍ>$cé>]ÿ>{.d=á#½=¿ -C=‘î=Çoh>«~9>j¦=Õ®b=„Îr=É¡¬> -•ƒ>>)>¥æ[>±­>‰P¤>zæÈ>k>BQh>b->rY>@é>\†Ã>l…‘>CÑJ>Lr?>,f&>=˜p=ŸŒM=õR›>þÜ=Ó¦J>Žx>G´I>X² ->Sƒ•>…Ý,>r#>a½.>8N­>Ç¥> -/>P¤>+ý^>@€>RÝ=ùZ2>Aݨ>d­>!|Ë>±/>0;Ñ>!J¸>3¥y>.ÇP>@†>SŽó>I)T>2®—>í-=ÿY=X²$>XÆ>M;9> (.>0³é>Ot»>~8¦>mÌ:>fQ0>Z:›>)5™>; U>Ž>›)>_~ö>8ô>$£»>V,Q>‡´½>„ªŸ>ŽÍ>›ê“>}£¡>’U>t}>#ñ=è6N= 7›>ªmø?b >Í‘i>ž¶ >~Œ»>Cº=é¬a>:‡,>—³>€„4>"/L>^ÊÀ> *’>{ ›>ZiÄ>zâQ>^Br>…P=D5Ç;Ÿ&=‰§=Ì–Ÿ=®âx=¼8Õ=÷Kç=ñÌq>?R—>S(=ÿzX=È•ö> - Ã=ú_Å=Ì›>Pã>#Çn>*„=Ø&µ7>[Ì>S…>'Ús=Q±¢=Žèø>:X>3ä3>,¾¥=ó½=å%+>tn>¹ü>nƒ£>]¦÷>8Ï6=ÑAt=4=ôHê>:~[>;A‰>6<&>w½>‚úk>1ÑÞ=»?É=|qÇ>Öp>&jÑ>1FH>DÈ>1´ >¾€=ÖxD=øá>Ãz> þ> ‘«=ÔË=”E¯=çc>5Q>HÑ=Æ‹N=vy,=ì[y>"Ó^>0} >JJ;>dÞË>F:h>P=‹>i-ß>jíØ>Š>–¤X>g4>F­è>/É~>7Í­>P›>fK®>xY`>:ì¸>OS>0ù >-ñ–>$J>B]=µ3H=2Tï={©d=ªôÜ=ŸÄ‡>>Bf>v"·>“Ÿ>¡‹c>²Hù>“û>AÛò>ñ\>‚i=qÌ<Ô–¦=8Öa>l>^(>3×,>qŸ=ø=ß=è=ÅñL=Þó9=óÃ>±Ï>#>>! Œ>pe>Ýi>=¦=È÷­=çž">}±>s*=ØV>í>äQ>3ÿ>: '>F>->º©> 1Ñ>" ê>]g=ìÃÐ=×ñ‰> -s>AÈ$>`†÷>UMX> ÌŠ>$~>!M> …‚=æ¸Â=ÃÓð=ÛL<=¸Ôê=Ì>M->„‰=ÃC7=|î%=e´+=峬> 6y>Oâ=ßJ;<ÎZ¼=•×;>#JM>J,>Gظ>K³>Ø>”™>.;>#ù> -È>ì0=³¬á=´j­>"M>(9¿>5Ô>4X•>.Ò~>-—>2ô> “¨=ù]>%AF>T=·†6>Ý’>1¯„=êñ¶>mn>7œ>qÊÊ>«÷>t Ž>*q> ª}> ‡w=ì¯ =æµa>>QD> Si>1j>%èü=µf…=ç~‹>L‰–>Œ»>’ú>N«¥>2j·>Hí>‡Ñ>9%ä>=&k>*ÂO>4ë¬>V³¹>fà#>U‹j>C£p> ø…=ÚÌõ=¿ý¨=á"º>ú<> —?=÷¢>TÆ>Z >—íÝ>˜²—>€¿’>?€µ>‚¯>ÞÃ>Õ=ÈLk=ÓÀ> NÉ>óš>7,/>AeN>"a> j>+‘=â‚×>êÆ>¬$>ÀM>¿=ãÍC=ض½=â@ý>.Œ>"D#>D“=ÿj~>ìD>#r>;·>­?>+> ýÊ>V>>ç±>³T> -_r>Ì^>šŒ=×kå=¼K‚=ÒÓŒ=¼óm=­vî=Ú=è2>)‰>1÷Q>Ln>Y”M>7=çÒ=Ú‹è>šº>"‹Š>!2>nj>]4=ãùD> -…÷>+ÿ>´R>ÔA>#pÞ> Œ>nì> Ùâ>£> þ4=Þóº>ªî>4Sï>‡Y=ì=—sD=ÁÆy=ã.D=²ÇR=ËÕ->*_>I•7>T(Ï>ÕÃ=£ÙÝ=–g¨=ÏpØ>j>Ug=àÊÁ>½û>Br=ý r=üÛv> v[>Nת>pÙ>j&Ê>f?–>K…>>éq>8“>½>Ôê>'»;>@ºC>MRA>N\>7„q>HÌ>RX>=ƒ2>%ù7=Æ`b=¶ù[=¸.=è¥> ñ>= -Ø>[¤>[zb>UëÃ>Oz.>iª>k[ï>@p>7¸™>0">@®ú>[>> ³T>?åS>a¤u>|?ú>}Äd>{8¦>]§>EfS>DZs>/³è>{>]>+j>qÍ>† ñ>0>gÛ¨>OáÀ>Œf>‘2>ÚÆ>”§>·>1ÞÐ>.<_>1]œ>€]>•*€>„v1>Yé>$M=ìR =äXe>#{W>)á>)£>=Y‚>FRN>Dù.>5Q-> NÔ=ü›/=í˜û>+\ >@ø?>30^>-%=П =ô„e>ª >êµ> y=íV$> >Ùh=àB>=¿™=¡@9=Êv=ò(Ú=Ñ‹‰=à&=êá =ÏV =¹¦›=€Ÿ=‚µÙ=ð ¬>fª=ù…î=ÅÀä=ͺ`>0ÿª>7…i>þ’>$¹/>2«Þ>Öö=ë‘=òÄ[>$…>Ä#> 8[=îþ/=ß’">3*£>Y >jÔ >Y |>=ý*>q=ÿÈ =Ìbâ=¿ý´=Ó‰ü=ò>³=óŽ>&~y>¥Â=ÜOÒ> r[>ب>ûp>¼>#¶‹>>S=Èœî=»ýÏ=ןå> -Š>®>¥;>ã=÷vË=ØîÞ=ØÔ]=ÜëD=Ö’•=¼àÑ=¤E7=¥ô=·u> ó‘> †z>ÿ>>ÓF=÷í*=ÒÌÒ=ÀÚÄ=’ =OR[=*êU=³à8>Çû> ñ$>—´>j÷>þi=ù¶q> ‘>:a>"‘6>$mÓ> ià>*1ù>Ö2=Øw8=â@Z=û<>ýL=ÿÓE>µX>(f>8–Ò> ªÇ>ìv>ýÎ>9i>Ä2> ¤>4A> -˜Å=ê• =Ñ -=üer>èn>$³>Kô=Þ&I=û»]=ú¢>Mª=íë=ô$B>"> -‘>ï1=òK%>˜ñ>–Ø>Ã$>]=ô…A=ÎH\>§>Eá0>\,>XP|>P©“>K—>0 þ>áŽ>aj=÷Å=Ð>üü>¥ð>!é>Q”>+;">Ü&>s=¾*Ò=ÃU'=Ø\2=à …>÷'>))>=EŸ>jÉf>¡è>š÷)>wTn>:=>³Œ>jB>l> R >4o>D&[>O)7>=DÛ>(ÉÏ> ²># >ôt>]ß=êPÑ> ‡> a>Þd=öB=ýn¶> >7¢>g(Ø>r¦.>]$Z>"ö´>Þþ>Ü>ÇØ>"g/>9½-> -Å=ÞÂ;>ƒø>!@N>-˜¯> ˜>Ý?>>C4>\ >Œ{>A>6¸>Yú>‚à›>hê(>iÖ(>]Ìø>0òg>.h‚>zø> „>!*)>x»=ò[º=Êàë>(ü> W=Ú}ï>Ï&> (ó>à¬>#Ñe>) Ø> å“>Õº>Fü>€>º>Oƒ>pëÔ>ƒõõ>„îÞ>ƒ*A>iH+>]¢Å>Gñä>ÌÌ>Äc>âÎ>> +×=é#×>!¾>MÑ=ßc>ó>a >\ºÜ>JQP>6rà>7=êŠ|>""±>4Ìæ>  >eª>’>&é>Dš>v‚>d° >N>Ø>18Ó>3É>5“&>BÊ>@þß>.c«>3 -Z>Q À>g €>&k5=õºû=ú—è>2>HÜ>Â>t>_> M>H >Dd>‡»> -œ(>1k> ¬>=ËÓ=´¸þ=ÐîG=Üì«=ÝÑÑ=Ùèµ=Ð'=¹Ü=Ô>JŽ>QYï>G6Å>0Wl=îò =ï:á>ðJ>S?=ü)=ãgn>&"z>BIÜ>3ï1>EÔ¯>Aª†> ìÿ>>-+>1Ð>t;>Pn> >Z>b¿=ï*k=ù|‘=ìÓ=ÇQÇ=Ï­B=¿ýã=ÝT=Ú Ü=ñÒ•>Îb>L ->*(>E(b>:êÖ=ÉÂË=ÔŠÈ=àM9=Þúð=ã¸`=ö½>±—>-–Æ>câŠ>qör>€l>?M·>K/>0°è>6%°>E¿ >g)Ì>2¿>¼v=ëjW>T1>O>€=x>€ï>\bs>x(=Ö—=ÍL+=ÞUÇ=Äf8=ºå–> >M7ô>L¹>I&O>ZÈŒ>;È0>%P=ìÉX=³*=ÀŠ²=áì©=õt=ßÒ=Ф>£O> ‡Œ=ã±Æ=ïšH=÷̯> F=ûéÀ=÷´„=æï¡=Þ$É>$Y>t±> I> …>3v">K‹'>Iö >@ê‰>$ç>ƒÏ>Þ;>®>.«Ó>9ö>(:r>&Ì}>mÛ>$ÐO>K>F>UËN>k˜á>‚T$>Jw>3`s> çÜ=Ý3²=Ú2>Ì¥=óà‹=לñ=â¥=ÄIÝ=pó=Ä—P>ïN>Z%=ÛJ_=¬ÝÂ=‘ÿ¾=О‘=ë-Ö=ÈqŠ=îÄ¢> µ>ðO> |™=ø&x=å*Œ=ÔÏê=Ò¸¡=Ò7=¾Äñ=³¤o=Öé =²v¾=³_p=éò\>|Z>|=ÅrP=Ü#¶>>ÁÝ>0ʉ>1jŸ>±ç=Ëä[=°]»=Ÿ¶;=ì½Ó>ë‡=·?O=­Ã{=ÉËš=ígv>EÍ=ëá=‡Uu=¦a–=Å0‹=òƵ>DI>H#>aýÈ>Té’>*kó>%°d> ’=ÖÍp=à‚À=éLñ=Óú=‰n«={óœ=Ì€Ÿ=þ3)>ý½=Ÿ•å=ÈMâ=ÙÞï=ÎØ=éY}>i>Wb>Ïš=ö¦=¬k=ì‡>G=ÃÈ·=šæ=†lô=äÉ-=øŒ§=ØÃö=µ}A=´Mc=Vá%=˜ Á=ë|H>;S7=¢Y)=t*É=¾5ž>’.>íÍ>Iáì>M”>CeŠ>(úÒ=ãcç=ÆÎÃ=Ï(ì=ÖÇc=ÐX_=¨Ù%=¹Ë=мp=Û×Å=ÙÅ=ÊsÃ=Ÿ“y=¦7#=Ó‚¨> É;=ë"=õ_‡>+³>‰>&ïY>3ë¨>Á>Î]>‹>.¸>ë=´å/=‘=´¹?=į‚=¿A¸=¹]ë>³>W€=óŒ~=Þ«¿B‰;¿ ôN¾WWö½nÿ½¾4,¾Õ‰Ú¾,¶¾aX…½k ã¾Å¿çM¾éÕ½½èËš½ãq¾Ò^"¾§ò¾Uèk¾3¬ ¾ŽN¿¿SŠÚ¾âÖ½¾ãi¿Wþ¾‡Ú¾°´<¾r,¾vñ}¾ü÷H¿$ïæ¿CLØ¿vS¿"¿"¿|)‡¿HÚo¾Å!¾•{M¿3‡¾’Êú>RP½Á¡œ¾¾*1¿:¾ È0=—º`¾ ÖʾŒ½˜>º -ν¹b¾tÇe¾ƒ…Ú¾…UT¾­òˆ¼rÎ@¾†ä¾ü(´¾Y9¦>.ÕA=†·ÿ½´‰>•`±½ÿ;¾œ‚Õ¾n\^¾Ù9 ¿“ñ¾v@꾜þ1¾ùÆ¿¾µ G¾êã¿FÓ¿U«7¿X´¾$L)>Òüw¾žͽaú!>7n>>§“x=”¿£>kì®>å¾€Ž¿#¨¨¿`–¦¾ô_¡=±‡>áM½¬>>˜€">¯®‚>¢PA?0nW;_õÀ¾js½€Xw=îi¸¼$°¾‚´‹¾ÃËæ>—¡L=!o…½4ؼ°§ã=¡5>2Í> Ío½«˜=×íÕ>›TË>ÈdN>}O½ºÔ¼Îø”<’z¼=nù¥¾:æW¾Çél½Âé*»œK¬=Œm“=IP=¢{>JêØ>„.(=ªøæ½ ¦Ã¾I½­¡¼±Ž•=Ç m>‹ì¶>6·×¼÷¼×ø¼½ó9½Ãàñ;èzè=í>Õ=õÚñ=µa/¼™¸ü¼¹N2=üò<œª½#Äv> "Â>Æ/=?í¼Æ¦Ó=?ž>l3=ùž7½yÓF½Æl²½I\=K==”€»Òñ[½þC>Q:ë>8@7=kQ7»ß[=gì=ÔnB=9t>šÂ+>ÚL½I,;¼¸æ=/ˆm;í›Æ=8%>î:>.æÚ=½sç=Ea½ I€½@Ë=Y¶W=µñC=ÔÄÜ»zÊ= þ´=yW‡¼ åZ½f”<ò=¸Æk=±C¸<¿o×;ˆëE=ÙÒ=O 0Ö>Ïâ>ë¸=zDM<Ù<ô<›ä5= -û=@y¿= „=s=t=bj=‹?W=}j=L@W=Y<¥X?=•—Ó>T¨µ=åÛW½6¾½¬6¼Âü=¨£[>÷º=ÏVÕ=ýA>>7 =ïÞ=Ø-2=ñ‡Ú=ñ_k>-Iã>ŒäX=Ø5Œ=’Kƒ<씸»[Ñî=®A‚>8FŒ>âQ= -6J= (¿<š³Ô=”(­<ãõ;»e¥={%°=¢À—=K÷=‘¨@>°Œ>7 -> c=¯ûT=Åã—=»h=˜Œ>A¢=ûôŒ>èr<›)°<·bƒ=å'x>1é=¶_Á<ÊïX=#hÑ=»ò=ó}à=ŒL±¼`ïC½c–Ð<Óä«=Â] =i„·=¡ìý<á¦ï=¢ð_=üÎ=òp=Óßp=ÉxŒ=ió<–Á`=ÖK8=±ÃcºN $=ؘK=‘Šã=g† =½à‹>¤3>=%>‚æ>"Ay=°0»œƽƒø ;A+=¾c¡=ì–=‚BÔ<ãÌ=­^M< ‹ã=_ß<>Pnž>zœ*=ÕïÆ=&ƒJ=Dëºn%¢½KŠ¢=av=V‰`=T.Ð=dè =ì;Óz;²¶ê=Õ8=KÌÊ=Í3=Ô´=ˆcî=¡S=¦†=/=t= œM<˜!î<%p…=8ÈÝ=O?<µUW;ß*¢¹ a=«2FƒŽ>S¿>q=Ò9…=€0D<ì¡<¤B=o2¹=±µš=U®±<Ĥ1½‡79=C‚<¿æX;ˆÂF¼E,´<ãR~=&j“<7>„»b«÷< -IŸ=fÎk=ƒ¯†=„<½¿Æ=ƒx<Ý;Ì<ƒo<ëæu=Y-Õ=Ã2>=ÏÝŠ=sì)=²°<Ò€=v¶ý=ÙÖƒ>.²>ÜÌ=DÏ<ó¥–=–Äì=®–>Aîr=ŠÀ=—’Õ=a'=vÀÎ> Ðè> k>I‰µ>$©Œ=ªøG=pÝp=–ŒK=ê'¾>÷9=z1$<ÎMô=é=Bú=•Æ=£=ž¤=«ñ=¢³¥=‰œž=%Úš<ÃÐ;ù/S=r z=Ÿ «=±=¯=—l.=»U-;àc®<îêµ= "#¼« ;Ñ5W=d¹R=6|ô=ƒ_$=T“Z=§7Ÿ=÷·Š=^ÓK=½fN<¤tª<ˆY)<—BŠºù(A¼‘$«¾=®ÕA<½Ê =WË¡=Oð1=“Ã= Ü<œsx<‡ã‘<½vZ=ˆ>ø=È”“=Œí<ô¥1<Êu%<ÅoŽ=Wm„=£ = -·=–=X[>=‰ã<Í ã=­^=›eM<‡Ê=º=Lçà<Ùó%=X9o=Ò0=\òT=§q=¦èã<ð)c<ö4ö=tŠ=ÃbÌ=ëa > çª=ãÊL=»Éì>w¼6>±v€>Šû/>VÚÆ>W!À>L«=÷¹6=üÆ>e°>`†>ðˆ>Nð=œ¤é=…‰=àØf>Jç–>Ÿº >Ä%4>•2> ¤=/ãi=µÜé>ó>-‚P>8“2>7¡=­‚P=Öz=Íìð=1›= ¼É=4™=!jÔ>ú‘=íIù=Õ«á>.Þù>Eþ!> =œVÇ=aŸh=Íw=®(o>â*>:>_Ô=èªù=¾´Ö=`ñ -<¤:¦;BJÀ=‰!>2%¿>Y{‚>!ýÊ>Yô>w¾=¤=L´Ÿ=Ü#®=®JS=ËAx=µÚC;ˆu>=•Hr>-[>‘>AL'=ÈÒä=M”»©i¯=Ì€=Ì;>µ=¤!,=(†=€‚!=Ž=˜=iZè=fÎA=r*„<â¶=mû†=zH›;t§O=·Ó¶¼×£;4ã> ŽÔ>^Yw>/5I=´]ôºÁȉ;•qà<©¼d=RÜ=ÌÚ+=GK=qEB>/€S>>»=º¬=1«M¼pÚ)»±­5=}Ù=“ W=ËYˆ= -;7{=b;=Šà=&tü;¯“â¼ÙŸ=eJü>-ë>ˆ}º>uîI=÷p«=ǸÔ>4Þ=Š´=®ÄÎ>ŒË>5Õ=>5è=ɧ=€V=sÙ˜=Z=š€O>#ðÃ>Y$Ž>5^F=ö?'=×.à=ÎKj=òÞ=DÄB=½³V=Â;>ó>@'>U?œ>¥ä=îê{>$ã¶=ÛÐê=Ì}1=ÝŒå=ê-ð>R >" º=flá=×A=Ù5Û=S݈=¿ã=õ÷ã<„v=;l=/£ª=”b=Ĉö>Ë=Óø|><=ÛW=ˆ‚><'÷Ä=k×Ð=·Eø<О~<[ßë;Ò·U=Z—X=Pàá=™ŸÐ>2,&=Ùd1=Æ”f="p«=ÂHð=2¶=‰‚Ê=ú!=}=S\ò=˜n=‚è=·)=uz>]Ô>2<>á>D`=¸>V=¼K¿=€:=8Að=LÒ=jw!>8=>ØN=›$š=«z8=¿íð=Ú¢º=©eŒ=Þ¾W=Ã`v=\´=£Ã-=fq²=Xž•=ö}>"æˆ>ór=äàU=rÃ=ͬó=·´>Vì>7=„>,->Eé>U==\Y=¡2>t=Êá¨=Œ„=¢g =Ýx=Zû=„Á='ê=, =R6=¬•ç=Šv)=‹Mº=‹=Æ£n=2º@=:!\ç>aú¸>„SÃ>R »=¬U=[aÅ> c> -§>/|>©¶>Ù=Ô!è=ž&M=½ÇÍ=Ý©—>†Æ=¿H…=¥ñ3>"‚ð>;§ø>ù=¼x =²yÖ=^ˆ=­3=ô¾»=’š÷=ªþh=.)=X2‰=Ow~=8(=p2Ã=Á˜«> ³‘=õ{‰=ÎÏ«=ÿ=0S =­fâ=v -Ë=2;Ù>=Ï>6œ=Æ.o<Á9 <‹X²=œL<ÑT*=qYC=“†ð>‘Ñ=Òwm=²¹C=¹QÊ=ÇÄD=˪\=ÊÜ=ñ®ç> u¿>P -¡>ø5>Þ¿>6‰=ĺË=ºÊõ=í¦û>Þ=’¤‘%Ëü=þ.x>[Ò= .=8¨•=&÷=¦ØW=ß@=Ô. =Ëæ=Ü%Ø=?¥=¢k’>(à>!w=¢;°=0Tï¼’Ç=)^ø=›þò=w{é=àáŠ=Ðÿ=š¨¤=›Ü`=Ÿ)#=’¯s<ÓGþ=Ç1=¢½2<¸þJ=L}£=&Â=\¡=§ š=±’„=qü>=4#€<ü -=\¿<=<œto=‹Ç=¸ÌT>&•C>œF=µO‘=€Þg=ÉE>–=‰9ö<¹®Š=‘¯=Ä«Ú=‹êo;‹<øR:u>%œx=ìê=³“¢=‡ˆÅ=Òo…=”ì=N £=ÜVó=ó.ß=ÝŽå=•ì =µž>' ->)<Ú=Õº<=dÚ»<šf=—úõ> î¸>KÝK>zâŸ>=V>#[>)>'t>{¿è>[9">\>6ÿÊ>aÖh>GŸ>(¿=ð‚ê>ù”>(ra>Z<>hÅ>EA±>†d=äÑ > 9>nJ>5i>èK=šf3>cáÐ>­ùÀ>c•>0%µ=è3é>OÕ>•ÇÇ>‘îm>¢ï>z‰>cý|>A?d>‚Þå>JS6>o'>rÐ>â†>4…g>‡o¸>™hÂ>˜F{>+}q>i‹ž>@u>+Y>9«>"Üd>'n<>ôw=„Z >ÑI>-BN>Nðø>SåÛ>)ƒ3=àwu=ø,„=¼‘2=â~> ®[>/Ö>UÝ>dªu> -‚=ôîü>Ãí>U˜>.VÊ>#Þú>°á>2Ï›>d” >ƒ'V>7u­>fÛ>¢gÅ>¡^>©Î>¤æÈ>üü=Ÿ=>>vÙL>‹­Ñ>‘-2>ƒA>{{>+ˆs>^‰$>PÕ >‘Ô•>q9ƒ>6† ->Aã>=þ€>wX*>@i>L¹2>}YÏ>Uœ>ɪ>àX>O§>CW>H¥>#Œ_>¼>f|ë>??Ò>]Á>kQ—>gªÅ=û Û=R†s>)Ò³>Qø>$•>< a>T>0ñM>>>;e¦>`$ÿ>.Ù·>ïó>4¨ü>AóÊ>FŸ>Nk>—C>Ã>lvg>)í>6H¡>8"Ì>h‹>Cäi>Bu¾>;(›>j>F:¿>cÅ>©g>­ªÐ>nY>€.>l¶*>mÒ‹>³Õ>4‡>`‡m>…¤>s¯¡>1ãY>K¢ >)S>c´ì>šæ™> Ò>~qª>'ÓÊ>&ÎŒ=ÑN=±Á= ˜=ë_Ë>)íŒ>!q>¹=êBÒ>çà>&÷>%È>*K3=ÿ >>3=>F·\>vçt>H-:><å>KÈò=Ý*œ>_Ù>YË> òM> -¹>C>S‘œ=ÂB¡>Qî=¾’w>¡x=ê0§=gN¤>S:U>%Ê=¦½W=œJØ=¬•c> s#>,‚k>iÌ>X‡¥>,ì>!¡?>Zz¨>eŸ[> %…>Ô¡>2;!>¾E=ùo´>ôØ>2ð=îgÛ=f$ö=Z!=¯ j=±>1ß=ð¸O>êù>λ=ú·o=úË£>P ï>™°´>‰­>'¶c=ï2Z=ö*ì>z^>éƒ>kâF>|gÀ>+¹g>Åx>J>­> ¼”>‡'Ø>¥ ”>,(‰>Ê=¬ÖÝ>—ù=ÿ0™=Q70=ïrí>¥=¥,=pI=瘇>K0=ÊCu=ý‹T>Â=ÅA=|2<Îðô=Ü-$=Ö×)=Ë\l>Èb>8y´=ÿAå=¿3€=ÕÖl>ÎÚ>0=—\Š=æÙx=ûüe=ñJ+=ÑÖ`=ûu›>/ï> Ãs=Òà=¹N¼>'Ü>M­>"à*=Êú> T3>@ß’>•=©Ü„=‚”>‚œ>-‡Ù>2<ö>>© X@¨@;š>%#Í=š ¾>Ò>WžÝ>l¬w>VíD>*ÿ¸>Iu>nÖ>§>+)">fÉç>xèÀ>KL€>gäX>AÃß>L%”> ÁÆ>’=ëmˆ>ön>>ZM>aºV>Vl{>:–ž>H’?>*ëŽ>dÈu>‘ÃN>›’U>aÉE>Fð>X,?> Yµ=çI&>i|>PFU>vò=ýƒ§= ’s=¬àã>iè>-„>r«L>€ß=ùfh= >>‹{=‰^=Õ#=‹Ýœ=Ë~þ=®‰=û[=©c8=Æ%x=é.B>#sÊ>—=lj=ËXL<¢Æá=¥Ô£>:oH>“>?¤ß>>^›=»/p=ÅÓ> ‚@=‘ ==$)ý>B_=âã>1 -d<þb<ÔC>Õ™=ó±Î=mæâ=öøß<ùhæ=;ã’=’Ò§=ÁÚ=ø¯ô=ŸâÂ=˜}»=|Q="=œÚ=èR5=çP¥¼ªàT;€O=ªa=°Þ=a¼H=¿fB=›>€=Çúb=³‡=²]D=r`ú=K„Ý=’=¤ø^=¹a=-µn=H¸=V¥=‚ñï=E+Î<ïÓÿ=CK<ëØõ=¶Ç=¢~j=ã… >#P>9 -=õ›0=½ãS=Ž•{=ˆ+=PP^<¸tò=¾¦>—L=ý›¸= ><öÈÛ={3Â=¼Y>{áf>iϲ>Uþò=Ñ÷ÿ<švÏ=œ¼D>‚g>¶E=Oþn= áè=ÔÅÁ=Žúí=Áí/>{"¢>:³n>-ú‘>] A>)X”> Ò=èíå=lüë=#6÷=^½=›IÇ=ºoö=üŠœ=þ<>fŸ>TA>:'Ó>‚ÃÄ>‰»> Æl=€¤»=ºM=ËvÂ=¬ìL=q´=š$2=ŒOÓ=ªŒ=´Ç²=Æ¡=¤‘ž=[ÆG=ç¥Ñ>.\é>OŠ2>c3“>P™>L=ãå=“_Ö=­,'=–µ‚=®ž¥=ˆ³7=ŠK³> -LÕ=óŽ£=èPJ>>0u)>6u=þ/ƒ>ÖÐ>**·=ØâW=·‘Þ>#j¡>]Š=>]Ø=Í +=h–ƒ=aí}=W¯=’66=£ùå=ϵò=í–>C¦=Èÿj=v-Å=…²6=›&H=\@(<È+…<âüØ=Þ1>/—>0)Ì>*×=ÑPª=À=ÑPÊ>-O…>I‡m>É}> O9>Q¼> ËÝ=ÛØA=Ëâ…>7­>.¤>Kð=ÄÁ¤=Ñt‡=új0>\6>F±>Ý·=Üï=™&[=£rm>ŸÚ=ú>n@Ë>‹±(>½=Ä:F>,Y[>0I=9÷=•gÍ>0!*>cɆ>6ª­>5Ã=mu=pý2=AµÚ=½½>=% >©=û¾#=R>u¡>²œË>ž=ÿKø=  =Dщ=±N¾=ÝWú=™]0> -*õ>6Ä>3LG>b¬> ý©>!"¨>1!#>1‹Ó>üÕ=©³±>¯F>Q©€>w×Þ>/œ=»ÜÆ=ˆæÊ<à* =‚¼ð=‹,ø=Î×=¤Ž=®šC=‘rf=ÝË"=ÁÁ¶=‚´E=>—=¸è=§<=µ*­=‘ -H=Ñ‘­=˜½=taÌ=æ׉={*É=T«Ÿ>¥>@ì¶=ùæ=¾÷9=E =¥^<¥Öÿ= Rè,µ`>I=ÜŽ|=Èý=q4<éOþ<Îg<µ;÷¼“ÁÄ=)JÌ=“¨-;œW<ŽÞ==F‹=-Áì==Œ?=r‰=ÀT‚=µ­R=GEp=IL3=ˆãÝ=.“9<­=V¾"=b/O=F2Ý=2Ær=9 =*V'=#É=“­Ù=¦» =ãÞM=öÚ>6&µ=Ÿ ”=’¡=Úq6=M¶‹=*Ã=Y*=!¨V=Ó¯Ž=ñ4´=Äê^=DQ‘=­7a=˜4õ=—w®=©@=…°=N¢=ò¢>s'=§m >çB>_ô>"Ž >·Ý>!i>C@`>36v>Á~>^»q>qëç>Fг=æ‚”><=´)H>o·>8-1=þ.=Ÿ¬[=I<î=ŽO³=¹_`=­“V=Ö¯7>©z=Ëmì>|gý>Göû=ÚV= \'=µÀn=©Jé=tÆ|=*×<òÙ£=ÇF¶=¸ü=›ã=Ù¿f<õyl=“ãG=êd·=ÖÈ=η =nШ=r @=°;=µ> ->0ø=±6U> ¤9>]‰>tžã=ˆ°§=°ÖY>\i=ݪv>:>ð>¨ ->Œpw>1Í]=ôá>,>ÖÂ>&„ï>;ý€>ŠŒ•>‰’Ý=Í ô>¦æ>Ój>&Œü>SÜŽ>Q)Æ>“ü>;ÆB>m®T>Ž>6XQ> -l>knK> —¼ƒI>1·>‚4>cX3>9dF>Pœ‚>uV>#¬á>I¨~=õeÁ=×›†>+Îí>6Ùš>>ƒi=ûª¼>ÜC=¹eä>—>Mi>Dô†>©3=8µ»>gú>EôÒ>ö©>'2õ>5ÿ;>/±%>D¨f>…QÄ>)eÚ=šÚ×=mñ > Ïä>#Âé=o‡=ŸªÝ>?Rò>û>s!>YX=‘0f>·å=ì7Š=ï^c=¼†l=ä\>0£ö>Q¸=î3õ>9šò=ôiS>- ñ>{pï>K)w=µH¾=Ia=½ïÆ=¨ZÊ>L>4œú= Ç> 1>[Íã> …D=gN%=•%=¶ú=Ý Æ=°)•=¸÷ë=¡ô=ô´<å~@=ļ(=µñ½+=˜{"=Á¥y=Ü©=ïÑc>$×à>ó>6¯‰>L^[=4<“ç>¶*>N§>‹ú|=Ϥ=dÓ=i è=LG÷=¶@ï>Í`=Ãb×=¬¢>#>ó‰=·W=«4ù=æD¦>#Ϭ>)7Ð>Ž>»‹>bˆ> ‹>¯Œ=3Áõ<óù=µ_j><2>S’>Q=ÐÒ=µ‚ ->‡Å>. \=²ü6=¢›ª=Yá)=Âíˆ=ñ˜Š> -vS>-†'=ð|>P?Z> ´>0m=ÑÐ<=•nà=‡àˆ=®ÊÎ>2Â>I‹>jÏÅ>4j>9=bp=˜ì]>'’>Yž0>SÆm>jk=œž=ï->Nµ^>G±Z>w„1>'rZ=íê=üæy=ðÜs=æ|Ø=æRâ> ˜=ä9i>ün>9 >ÊB>?¡‰=Ü‘o=”Ÿ>¸À>Á•Õ>WEG>W×Ô>YV=¢î=œp¾=’n=‹+œ>‚=ï—×=Ú2=¿ T>@Ô:=×…=óÑ…=ö¾=ùª²=ü—b=ÿ=¼[û=Æ!4=¹;a>)»$=t\¸=ù5€>’Ê>"Œ‘=¯J> -êT>h=‹†u=Mn=%Å$=Â|=êèv=·ºÝ»¸U=›+=ê´â=ƒ†=êLY=Ì2=û°³>(êÄ>åC=ßÑ=DÑM>•ê=ñë²<¶k6=™ÃR>/ÌÔ=ëmx> —>Id=[z> ’>Cc¨>ŽÁ³>‹î>!î>”Ú=£oT=öŽ~>º >z{º>u£>+Û¨>7œ¬>-0ø> ›û>>u>øÐ=Â4=™tÌ>8sÆ>º¹a>¨Äx>wkâ>u‘=ƒÆ(=Á#> -f>0eS>:“>8óÎ>&Í >:€Í>QÔ>&Œ=زW>6º–>‡H÷>‚]>QšŸ>>½=Á©‘> -x>4%=ÔÁ€=èy> |=í°=á+2>$ª >P¼Í>-> ‡>ÉA>•`>#¾->ƒ>¼†>‘‹>>J¬=áU2=—Ó=´‹¥=ŠbÛ='>®&>G">?!^=ùvÏ=té>x>d¢¶>}w>0Kù=ÓU> ¡=2jo»ñó½>s5=+Ú>sÁ[>r¿~>;{ý>Ìš=Èض=¬¾ˆ=œ…=„×…=­ïá=¬yŒ=ÇÕ9=Ô®’>¼g> ¸¯>žƒš=Èÿ‹>5®>R­)>J=D=Ô³V> ->X°=…][=GsR¿>, -ü>fK#>–c!>Q°´=û>#{b>Çb>$¥k=ù¨™>p=Ð4>V`>" 㻹M}½u¡=uŽ&>u³>h+>´xú>‰bñ>UŠ> Êò>F¸> ƒ@>0Ï>/„ÿ>'ŒÙ>">1ý>Pr>4†<'Î=à'>¹í>’‚Ô>ƒäí> Z>„RÎ=Úu>ƒÔ(>1sá>Vx³>…†Â>I{N>a™=æAè>`ín>[–>“¶`>ú?>–(´>¨a>”±>¿0ö>k?T=OáÎ=Q=Û6&>R°L>sÉ=ùhÄ>6á›>*‡i<]û–½`e=ª»Ä>BM>^‹J>àI> Çà>cË¢=È>D=gì`¿]ù{> => -Z=§N ¿9Hh¾“6|¿5¬«½Ô´à¿.Wó¿‰_H¿2»¾fø¿^üˆ¿ W“À¶;Ó?ö>‹nS>Ôr=££=†ÃH=©¤Ô>ë>OÓS>1— -=Í -;=5ýá=NñÝ={°{=‚A ={==‡!J=Âà™=àJ>ªj> 6…>5–ì>šÕ]>…ú÷> b°=ÒS -=…¾n=Çy‹=ÄÁ{>$Ñ¥>ÄÑ=Ë7•=±ôt=‰š¾=FŒ=l™2=6#=WE=çGÑ>K¯ˆ>,ʈ=×úI=æmî>juË>­H¼>né=ªq=±)…=Å,L=lú=ŽìC> #3>x>õ„=ò'ó=¦7¤=}c=‘L=ij=É.h=«+J=©l1=²½€=w =È»å=¯ ÷=ŒF¼>9q>$‡>s‡‡=øB=Ñä)= ì=”‹=ëV=Ã}µ=¤ =-P}=&0>Xq=Lò=’„f=úò^=«£Ÿ=pD›=C!=n¥5=>Âz>b=ÙÆ>o×$>¿Ó>`è =é,K>+õ>,·›=Ë5=0Ôc<ØQ:= -áÔ=Š­> -¡S=˜Çß=fOq=ÐI=I=”¢&=¯%= Ž€=¤Ä=¬¹a=AÅ©=„ˆ4=Ǿ={3=—Å=zì>Têö>yˆJ>`µÀ=°4f=‘6±=ÓÐU=àûh=ÇoË=t¥= Á=…¼Ë=}£î=?Ñ -=i[8=så;=æ=²wÌ=ßä*=î=¯úÒ=»õ9=Ç‹=“þ-=pˆ>>ß>—XÃ>ˆ5ð>Bw=ÕÆñ=ÅìÂ=²s¢=4Ž­=‹ ì=Ö×f=»ª;=¾> @é>L==î† -=?:=Zôþ=8¯=â[¨=ž‰B=Ï =úÅ©>v>.°ù>œ=5•=’¶Þ=[¸=Ô=ŸN<>mu>)>>0Æ[=Ös»=ŽÛD=TmŽ=7‰#=Úë=°£=¶É³=£/=½Ë¹>"Œg>p=ºÎ¬=ý*ç=ž–¬=t¤Ê=‚å=ÙÙp==qï=1T$=Gûw=Á ˜>Ù+=å >7rˆ>¥ãI>sÛº=é˜>5{>™þ0>OBl=Õ½>1K¹>?Èe>8t‘>>RU>p>[ q>ZìÆ>:P¶=¨ßØ=†j>Hõ>‰çD>Yy=ÉL²=• ƒ=óV=*F=͵Ù>É>oå>s®>£ÇP>¸f;>Feý=»Š=ÿn>}>(ë>*H©>¾Û=àú >r=÷ÒŒ=ýè˜=·Ì”=ï·€>G‹3>H¸®=Ô8">Gk>rqx>š">‚lq>|w=Ð|m=Âû=½ -[>?ï>¼Àƒ>ÐÏ>‘®=ô·{>Ž=¡? -h^?Ó?>Í-F> "ù>6ò2>>ÜH=é‹U=¡lO=äÝ> rm>7÷±>-š¶>.kÆ>†§>'g\>/F=ó*°=»kœ=²5Ù=l×…=…Ê<›ÀÅ=Yñý=é«T> ;„=ÿx%=¬R­=ŽJ4=‹fD=[‘>u>Šá>½Ê#>¬Ô‚>$ˆ=ßÃû=¶Ã=1H=G€È=¯*>Z€G>€~O>&$½=MÀ =|´¨>Ös>¢Î‡>á•y>иt>ö­=ɪM>Pot>€Î->„(>]¥÷>(Ah=n÷=¾N=„Å==HÂ*=ò{ý> Nª=Æ–¸=åmŒ>P`³>dvþ=ÉÅt>M>nÑK>Mð&>Ò,=]ë³<ê7o»^F1=O”Æ=Ê0]zñ=«5µ¼SÍ{=}˜>0C|>gÓ>tÏ´>”^œ>¸;•>~hú>1†b=³h«=4Й>S–e? -°v>è`>a%Ø=èùO=ø -µ>$•(>‡¹ë>„ÅO>4«>h?>>†ç>0ýu=î{=߆>£ñ–>ìû¬>Y4`¼¶ l=•È)=‡ŒG=Ýà§>qs«>?ë=¯{¯= =B^¾=©Î™=Ø…]>@AX=ú(> æ>vfM>Be>YA=Z¿¼ð°=cŒî>vW>$ š>…"£>Q@Ë>R~>"8<ÿ¶=º¨#ª=Ôú=Ñl¬>Ž>Yä =Ñ‘«=‡¼:=´Õå=à~¸>-/¿>Y Î=ã^e>vî«>€™=õZñ= š=1WR¼¿ez=â8—=¸­Ÿ=«Šq=‘ôø-…›>ë\=Ãú÷=¨P>»ý>t3²>À¥5>áÛj>ÌQq>NAÃ=Ÿ ·=^W=ü˜³>r -w>ˆ‚>¡Ð=‚0½tî¼ñÜ>°*x>Ù>dÖ¥=®=&—àº,yk½ »K=O9›=…Ù÷=…æv<úß~<|öZ;Ó=Œ÷š=W -(=ÈM=ÁÒ^=4#¼=¶}+>1ô>;2>I×>*±>8Ô=òyu=ˆr=_Ü=¾—ø=ßM;>Uä=ó0Þ=š¿2=Ûé…>À˜=Þ“`=°ñC>,sr>Ñx>Ä=Ωÿ=éæf>Ì<Ë¢½ -Çt½ª·= tÑ=_4<ºöÇ<ãU;=šzV>'8¨>B8=ž„œ=2YG=›Qâ=ƒá=’ œ=ã5V>{Â=úbŽ=•*§<àè4=Œež4¨é>8ØÇ>‘=È?Q>2’ë>n.è>j@Î>gÕÁ>£Û¥>§Oï>Ø€=ç, >B˜>°œc>nˆµ=‡$ï=GLc=·_(=ï·)>Hí>AßÀ>æÀ.>´ˆ³>:$=b¨[=I=J¬<ëâ=Ê+ç=©æs=,½f=Øb>RÐô>†n©>:†X=ØYê=¹È =†$=;&=¥Æb<à6V>%I=ïD8=ÞÞè>TÓ>'§ª>!ùâ>é>C~=ý¼->(m=ÈQ)> Êo>O•>53ž=óz¿=û†(> ň> ,3=׉Ã> y½>Ô>h=ðèó>^>¥V=ÔÁ=ô-u=õ£=ËÆ°>Ž2>Ca=Ü©=B˜=~y¢=–L=«(ê=µÛv=¼‹ >bp>´'=Ʀ?>3=ìP=Ø¡®>¯÷>Λ=››Þ=„?=‘‰]=¤N†=€IÌ=ÂËV=én(=ÌMl=¥Q=¥iÌ=çl =ïö=ø¿ù=ð‰©=…Rð>’P=•ˆ–=ïh >-Ó=Áñ¶=„‹W>XcA> âœ>c®Å>8_P>–ñ®>––>4—>O÷'>›×¼>§»Ì>_< =î‹/>$#>$¼==ûª™=sr>]n³>«§‚>½Ç”>§y™>j>@Œ=å|R=ÞT©= `W>'ñ/>qd=ÆW=Î(>ô=½b²=Ô¨=ž&ä={ =AQ=u8{<Ô¯Ñ<•F=…è2=L !=©*>é®> ¼ä>9´=éµë=ƒ2¤=—U=ãðÐ=Ôî±>q=>JÞ&>Nšh>=¦íy=‹ø=mX=å¤>GÆ >‹]ì>”˜ù>gûw>6Ò`>îú=‚-=œhÒ=¯S:=àZ7=ò­¹=åg]=×Á³=µ5l=­E=‡=M’½> }Á>x‡>WûÅ=¥9Ó=‘“Ü<ÆÄ=ÑOû=ŠiÃ=ƒ¶=ÀÆ=Æÿ#=µÕS=´û=°H<=£q›=˾=¬{õ<ð°P=¡;=ÓÒ>?E>Ƽ=vd=Œœ—=1Â=è€>£=©=¦›X=å2ù=¸û}=r¿]=ˆæö=¾£2=°d0=Ý€M=GIe=Õ”>¶U=ädŸ=íÄê>++>ù=>Ù>G8¨>v!1>@‡Å=ú÷=ß^V>Eµª>‚6>)ß> ®L>€G›>„(ò>$i=Õ9³=÷R±=Ó/Y=™[´=çõ>oÁ…>iÖ>OË>·P=ï½n>K+=òü$>Lo>G#>4ú©=úð¬=µ9j=§Îí=Íñ> ü|=²gw=”ê=ŸØ#=á¥à=”Fß=J8î=~K[=·d=ÀZÛ>¤O=ÙMW=Ãr(=‚ÔI=¨g>s> ûþ>tp=ÿ¬Õ=îq=¶nL>be=æe÷=Ù¦º=Ä3 -=µb­=‘B=:ø™=wM«=ýô—>®e>ÌO>é=ÍÎ> äé> ä=ÅE> &=öø4=è9I=Út¢=гÕ=Ðû¤=‹¨=ñ6;=š›Þ=’ -d=Õoû=ì?ª>‘j=ÌÂq=µ„=R‚k=ú'‰>ê>×> >/~D>#*Æ=ïÈ’=ƶc=×Æí>`º> «E=ñµÃ=â•=Ë%r=ï–3=òb=àæp>"m>,Þ>f>$³=õiÆ=¹äð=»z¹=~i0=Í =¢À¿=[ƒ=Ê1=™õÏ=H8¼=L5<> &Ó=“ž[=¡¼Q>%à> ¶ >‚==å\h=»mY=ìœØ=ºÁ‹=ÓŸ>y>AM>€¥>|õ> ¸=õ¥<>9s>B³G> ¢T=éU> €5>Ö=> -»>!í>1R=âÜ=W¢@=zÆ&>Ñv>~…g>‚VÖ>$8‰=áTV=¸4ý=zá›=Ÿk=Ũ>ai=Ø ?=£†=Õ> ù9=Ÿp#=`d>=†…Î=ÈÂ=»œ=Ÿ0Ô»·Df<¹Ì=¡-À=„È*=È´³>v6> ºÈ=ÉT“=Í4L=µ­}=ŒWÖ=a‰Ö=™2Þ> Uõ> Ò=ÒH=ó¦û> Š>ã“>}‘>!ª*>0Õà=ªž›=R= Üi=Q£2=h¡ç=bÿ=~G=„\?=ý[=õ?o=سû=¨ï÷=¶_=°ha=®Ô•=„Çê=˜¢Ï=ߨN=Ëç™=Öõ=éå.=ìTæ=½X=wçÛ=‹< ={›ó=ÈF=ëç=®j\> >ý>TÞ> %i>ex=ÒÖ”=™0û=˜ Ý=YÚ=¸ó€=¹V=îÂf=Í”÷=~’Ü=¦c -=ËÁã=°”Ç=«wX=¹ >Ýé>9ý=Í P=Í)=ÏŠ=‹}=,ª¬=mS=ÂÍ;=mß°=£H>=¨" -=*«¥<»1è<ÍǦ=ŽÕ±=Ï€Ý=à=C=͉‘=n†o=…€t=ÌPs>>™‡=ü© =Âð1=ŽÈ]=£6=ž3(=jÛœ=uí=Ð$,=¹LÚ=ëÆ<âaè=]½x=„ô=Wþ=ƒxT=©tZ=B›]=ˆ+²>…K> -¢> I^=ˆÌú=jj#>Âç>>’>!J>>ø­>+eÃ=Ýî=„lX=â"ü=¢Ò¦=@=ǘ> ëK>@÷/>`Â=ߊ=š¿ =f"=Or4=¤0Ù>8X=ÿI=¿qÌ=í™=ú>/’=íBh=‘ð=vó==©6<=›äË=ð>æe=ó©=³™}=Ì"õ>ð!=ç';=ÈNW=ÏIÔ=ž×=ÜÎ=ª­0=t½y=å’B> #§>Ì=ó—ý=•Ï$=Ô ->6¤=Ó„ž=–-=ÖáÖ=ƒVô=•£=ý=ød=¥I¯=ºœP=¹÷o>ü=¨{î=v<ÇK›=Çó<>/=ñ|Ø=­çÆ=éRŽ=¥×Þ=ܾ­>B=ú ›=›=x=ÎTL>yA>ß=ÿn½=ñw>,ƒ(>\S >:ÎÎ>µ×=ÕÃ5=Y¯<=»¤º=×Þ8=ç½â>^8> Wi=ãx =½Øo=Š¼j=Ü =øô> Lù>tˆ=z =‚=ï–|=ÿ{»=0®=©@A>Œ’>BÔÍ>3DÊ>b×>)uT=N—Ã=Ù±= -/¾ S¼ð%={.ì=€ˆŽ>FE>y²;=ç¶=P™>3p>æ£> |6>16=òÙ­=8Ɉ=(ŽL>$ž>3ëÜ>‚Âw>£v½>]Æ >S°=ùUê>õ=áb<<ù{å½jX==ß™·>}5Y>G=uk3=Q@)>¯ú>C3V> .´=­‚y=¯SS=³ÖÞ½.;>WÌ<ùŒ= «®=•Dd<Ý/}½>j˱>EC>l…å>)I¡=¢ÊU=夣>Q±>’ƒ=ê=l=§¬Ó>öÌ>EÎ%=µy¶=ŸÃú> £ã>'˜ß> ›¤>ݾ>3Xp>=Ý>f\Ä>ci:>UÍ=Ò‡™=²Â[=KÙ =õ¡=á× >p^¸>j;=ß³«> Ê×=ÿïÌ>A µ>J :=öó> °V>)Îœ=㇞=åÀ>CÁ`=ùrj={ u= ·©=ÝÀW=êÚ°=ÿs=¹ÂY=½þ¢=òŸ½=•º=DI=³À-¼Ï·ï='cŽ<<9>\>Ìà=·¾¶=Áð>Ù> ã¬=»ÛD> F>AÙB>Æ™=¡„<>1Ú?=óûÀ=&,»=×½â=óTb> o²=àñó=C'ý>=Ô<=gê=¼·=ÿ<>„g=ÌQW=‚´=Ü#=éK=LK=PÓÔ=û5>ê~=éö=¡Ä·=f¾½K¼O†.=Ÿj=Þ#=—V„=Ž>2™¼> -Z=`â3=ÄÓ:>}»=Î=´yI=K€R=Qü…= Ûc=¸1k=ë§+=ûêÉ=âIž=ž&ƼKº0=Î>>t>(2ê=¥ÅÇ<øR=‰'€=UàE=Eb<­•; †t<Šò=]Î=reˆ=Õ=ì -§=ÿÓ¦=¾¡H=¥dŽ=—>lÁ>XrË>7âj> h>SÕ+>1r`=ÕFÑ=¡‘F=©0=üºÃ>%c²>.¥>OÊR>@߆>F¬>4Xb=æP[=Ö¡ä=ù =§L=ÕÃM>=‚J|=¥Mw=²@> »k>Gõ=âD»>f¥>/i¹>a‘«>;˜ž>R$À>.ìÁ=âF=“¾œ=b[Y> ”ä>ûg=cRÃ=›ÁÞ=ÛÛ=¦;ï=…=­+=¼>Â==Õú%=ëú =„ßl=w‰0=εH> -O>uµ=¢ì8=u‹>Ma=Œ„¨=Œód=áÿ=ûˆÁ>>HY><6> üx>8½`>Qá ->ƒ`{>AÀ=jP©={V=àJ>–Ä=¨j.=´ŠN=ÝkŸ=¼F=£à=k}=ʹå=Çn=bWC=”݉=Xj_=ê©W>uì=ðÃO=ôeà=ì“=Ûo=ÞvÏ=äOº=¹$=­áˆ=†ì'=ïý{>ÖÌ>.c=ÒÑr=ž`n=QïY=¬Ì£>/>ý=³6š=SŒA=§ÀC>bí>7ÝÔ>Ë=AŒÖ=jBg=¸2=†« =&øe=$1ü=†àF=àŒ¶># á>Nõ='õ¼D3a=kÛ=ÿûb> j>5¥î>^Û=æV?=à=Ð|¬=ŸÀþ=‚8=±å=Þ„…=±™Q=¤«=ž D=$›=¥“À=Dµ=ŠÁù=åªs=åÄ9=­:<«§=âcM=ó"P=òS=© ý=Ò°= tB=¬Å=³¨7> h1=ý³c=„rz=»- =þK=Öø«=Æ°`=í=þÁ÷=ùçˆ>.!>.“> S€=þLš=¦Æ=®½n=âƒÈ>ó>þÈ>%f=” þ= UK=‡Rê=ÿÍ=öþõ=§eg=tª=“¨Ì=Z=zÅ=ð|=ï~=é›>O•=‰¶¦=…¸1=~f<=å’E> -Nð> `ê>¤_=øóú=ô»>e:=ó8X=œ}=° 1=¹ä>d> -ñT>ÿ>Ûä=ý1F=ß=B=Ó6'=åP¦=Ô[î=Âë(><>™ü>kÎ=é–i=œ®=Fgæ=™Ñ=Ò,â=ŠÜ=ŸÑà=ªiÈ=‘À1=±¨t=Á=Іƒ=ìžÀ=l˜ž=­Îÿ=¢xÕ=°Lr=¦ñÝ=ø¨Å=Øž®=°Iè=›{=Å”|=ÈMh=«WI=Æ?=âÄ>ÿ> --a>$íÙ=²·°=§ãN=Ô%¥=ò] >?J><4>J“=ÚúE=à´=Ř=kÉš=R—œ=ˆ·G=¦}‚=ÅÔ=êÀ¾>©º=ÖÜ{> qÅ=å™@=õé>ÈM=÷ö=º—$=óT.=çê'=¦–'=ˆ2 =ÞÚ©>)íÛ>g&=Ô³C=¸áw>*â>ê/>-X>ìg>,=Éü=Þ0÷=Âú”=¹h7=…0=Ô»=ÐÕx=Ë#+> ™ß=èÒ{=‹J^=´C > Lc>ä==û‚y> >›Ò=ô=Ρj=æÊ@=ö?„=áÝ=Π>+*1> Wü=ï~=ª=ÊÃÛ=Ìx2=Ò§ý>ÑŠ=Çth=^'Q<ǘÔ<óç=Ž] =°-n=¾Ã=³= -=ÜBæ=àø =ºUç=P‰ü=Ÿ=žª8>èF=Øö“>wM>"Á¤=ª„=‹I‡=|ò»=²­=9Y0=ˆj=ĨÛ=¾E5=ŽJ§=Y]­='Í=ƒ³É=Šò=_D=“ÔY=þÏK=é$ˆ=Yu‘=ƒáÞ=¢M=³¤…=žÀ,=tD©=¾Ä]> ûQ> =³¤¾=ÙÎI=÷ùÎ=´üÊ=’¡T=¹´ë=†¾=«Ø¯=ñs>&R=£æ:=³¢f>’!=ÿ<0=­ ú=ʇc>1>ÃÝ=Éð›>9K>éw=´Ü\=Ò£3=ᬒ> -8ç>7iÿ>%Mx=Ú¤[>NÔ?Î?+(É>úî >Jç*=¸i=¹¾^=¹’ê=ñº=âúÍ>åÄ>+!í>†¹=ÀÝÎ=°ï¢=“·È=³>Õ =Ü×"=Ád=Å\„=«Åõ=ÄÂ)>Øe>Ùv>¹ª=¯“=Žy=È h=ÎE =Êh=ëX=²C=Î)=Àí=æÕU> Ô>Zqª>YÃÜ=ùvi=¿ã¡=¥Mr=ÛŒŽ=ûlõ=æ§à=÷ª>†>%>> ¾=æðÚ=°+8=æX =ýö-> Ï>4>X>“=äs>Ã>jU=ÜÉ~=Þ:F>)Æ>Fk>'{>ëý=ÞŒÙ=ãóL> °š>T±=Ñ2l=­¤L=îžt>܃=×·Ú=ð>=è£f=´™ -=áô=ï}×>g=úË[=³v=ød>)š>0ÁÛ>X=ÚTE=çVï>R=ûm<>Ѿ=÷§/=óÐ7=ðâ…>*€@>{ƒ=Ú’€=­">?L2=Î[á=í?‡>8¨L>ˆ=ôBä>I«>He>$4>g>´,=½Î±=¥ÖÞ=Õ,c>(̧>0Ûò>LÊ>aÓ>cA>q¹>+Šu>Ú«=Ýöè=Öº)=öŒí=ëáå=ñ¨…=àò¨>Ù:> -=åŸë>¥Â>/¸ƒ>VŽ=ÈÎ2=æ¿æ=ÛΩ>BC=ïŸ[=µ(V=èÁ=ñô>§¸> -T> ‡ý>Éá>(sž>.Œ=ãÞ`>úÄ>5m>@Ø3>1jï>+g>º>!2Ü>" ª> -c`>#nF>~Z>Òq>@Çg=Ù^=¯È‹=çë==ôÖ>4ã=ì4€>M­=îÞY> ÌÈ>!6a=òää=½ å=µiÁ=šIZ=ŒšÌ=»:2=ŠÍ;=´“> -¼ù>p > AÌ>W€x>T…>4Ö>–>@…>eÔi>DÂ3>s´=ÌÓ=ºË=›÷ð=ü9ƒ>ߣ=îøÑ=ÚÜ=õCL=Å'm>eì>0Å&>`>9[>µ8>DI>%×,>Kˆ>Ý>÷i=Èô ->02>@g,=öx=Ĉ=Ú|k=è(è>ï> D…>5IÕ><Áq>AiF>.2Ñ>+°h>Ž> +>¶™=ì¬â>Î>.JŠ>‡T=öJ> º~> ßa>03> ’¿=ìVw=7=ÇâÍ=‡g> `Î=âp>.è=ü[Ü=« }=”«¤>¸´>Riã>rÉù>gmð=?Æ>PAÝ>†x>qš£>pó>‘ÌÏ>°;>Wt>6Ü™>‡ -=ýVÉ>ŽGð>`)ý=”Wó=‰1>sW>iRI>Œ¦>Wz_>“Æ^>GGÏ=û8E>Ÿ>%8ó>N7>xDm>AoÊ=УŽ=N›t;¸Ú=ÐÔg=¨Û$=€ 6=¶#Œ>P#‹>ÇÇ‘>­d¾>LƸ>ÚL>(«¾>E:ê>gMH> -ü>[±X> YP=Æ‘Î=Ò1=ø =Î >,¤ >uÓ¶>DÏÄ>Ü=áý,=˜D<ãÎQ=Šø=øô[> -Ž–=ö]=Ñ-_=bòî=žX=¡á^>¯(>H`…>)¤>rZÙ>2x>0üÁ>A)™>4ž> H­>Sc>b‘->J>"ÉÊ>?â>6zÚ>2Ü>f5>yÚž>9n =ï£Z=™Kì= úC>0Ï>(fõ>p4u>GÃe>/Ü‘>Q$‚>'ð‡>Hg4>k£.>JðK>k¥=ÏœA>=¥É>«)W>}=y=åÔ÷>˜>/>>!}$>,Ýè>b^¯>\f=¸.=Æ€> -Xç>ù@=qǺ>¾>!Õ‹>ñ÷>oø=ÙÅÃ=¬K >é¹>4¥¸>3“ ->$Ò>]ðO>d£>ÚÚ=õó`>MšJ>,Ú>=ìÚŸ=¸Ü=Š%d=eÑw=g™ó=,$w>ÿÒ>]^k>b‹å>;Ô>0†¼>œhˆ=ë,‚=¹­¯>×k>#†>é’>Ö3>¬¢>&a>˜êå>Î1;>³ì>S«¤>ÂÝ>ƒ>ŒŽ>¥þš>ÂÇV>–¼>D_€> Ê=²Ä=؇Ê=ùn> S=Ð̳=ÖhÂ>YXê>¡'>…«g>&Q=­!w=ð”“=°ùy=:=~Œ­=¶zl>,Ú=ên’=ûW=ÛÂc>czÆ>¯P >²Õ>€Š3=Ëÿë>U3s>*õ>Xî=Õ =Ó >v=³[Û=ºAA=ë¦j=¬oÂ=ÐB>.Ü>wH>mÞª>¬£>„ì‹>¯\ü>–‹è>5„A=Î÷Ã=¯Y¨>ßD>T³>Nré> ¢Z=õ,I=ôŠ=ÔrN=Ç׿=ûvÇ>!. >Hr5>.+E>¥9^>ú&7>ÃCù>\\>Iv>lÙK>¥O4? ¨D>Ï@~>p/õ>+ºæ>ĺ>ð>0,A>:°>2x>< Ó>e;g>96o>9 -O>Q=á*‰>ü@> Äá>‘©>|^!>²·>ÄWÊ>’5>¢j=ílˆ>/§q>9Öz>a>Œé>ÆŒž>¥Tè>7|¤=ÄU#=»lž=Édü>ì=ô¤Þ=ùâ®>3s>ŽïŠ>|zû>¾æ=ï™Å>¶$>™Ù> C>S0> -®ö>"Ü`>jlý>š!Y>·³ª>¯#>O¦®>H¸¢>†>¾ò>5j>5K!>M>’xë>á²/>ïÍb>h‹2>)N>«=À·þ=¸’=ЙÊ=ÔŠ>…>ú=ämÛ=·‚=Þ½„>#sç>hù> F%>aa=Î:¤=ï Á=ý, =á$;>dØá>Ç'–>ÄÀ9>·v>E–y>3=û:Ý>Îú>!ºÜ>+A¾>\lg>2Õg>*>C—Æ>ÔQû>ÌÄç>—ßô>]òý>4&D>$ip>'è'> -Jí=ÿ”X> j>-sì>"c´> ¾ç=ûhd>5+&>.R…=ÿàó>çÉ>U©=Ø—†>Ã=á`„>'Uk>[dª>c">Å,h>핧>Ó©Î>›R¾>AÅ,>b×>(d‡>(a:>N>=×ì>we>_iÁ>x)Ê>aîx><õO>e#Œ>–Zy>¥Êh>Ô<¨?$ð @@ƨÒ@Uéz>6Œ¾ã¼=ÝÞ:> €>0[=>*z>$=->Dy >4Ð>Œh°>i>-ìÇ>,úÉ>.á«>@¸Š>l=Ñ>Q;>#øõ>Y+]>&>Ü–Û>é–>¸_m>”sŸ>•Ù°>‘Šw>*²ø=üäÎ=éJµ> >)hÏ>*í«>BŒO>„­>„#>Nk=øn>' >c«ì>§œF>«Àg>—">-Ž›>¥¨>½>¬f>'8>*>¿2=Ú‹e=çéV=ðÏŠ>Kg>I=µLS=Ê5=ÒC¿>¡š=þ>=òð¿=êi»>–)>ck >cÖ=÷ƒÙ>$@>q*>™|Ë>ÇiY>’1<>R‹=ŸÓ=€Ï%=÷ƒw> x> M>$[o>!¦G>¼=Ñ=—‰ñ=ä.­>PЉ>b1î>*Ùk>uÙ> ÞŸ>'¶y>Z_X>“]>X -ü>/×Ð>&eH>Ä=Õ¼"=²=íY>÷È>__>(oV> =åÑ¡>,p~>7©â>"%1> >$pX>!!§>w@>‚Ò>ít>)­i>þ2> I}>#t>û?Pr?ÓÂ">™­ >¤X>¯ë>ˆ=«=ý2{=Ínt=:û=¯n´=Ò@>u8Í>y’·>)Ð7>¦¤>²>k§=àƒå=ýº®>.ôÂ>Z8!>Aðø>Ö)>!»•>ùØ>/ÙÇ>c’•>†Û>g^)>+yw=÷_q> Û> ãÁ>zþ>ÓQ>½> ¾>æ > Þd>b¸>HKH> -"=ÉiG=Çù=ð£Ú>ßý=ôb=ñÔQ=å˜í=ë=ó+$=ÒŠ¨> à>@=¿úN=ÌA=ºM5> -¦å>T´Å>§Ñ1>£´°>A¥ > =þq%>ô‚>B=ÊÝ=Éc®>(]=Ö¼Í=ÎÏ~=Ÿ³ˆ>%ð[>Á{=ì¦;=šûd=ó¦>EG>Yij>7¸Q=éI=Ý ¬=ǬÄ=¾§>0æü>b°>&=w=À¨=IJ]=×ïÄ=ã‹ð> P>s>ö]> þ>lÅb>5ý>©>*u>]ï>´ó>¹>B p>5‡‚=ôô>Ç™>ÌK>Iê>>¦d>" =þ™œ>{>÷U> òg>X=ê,>  Ã><–Î>€Èœ>¦ç>Vi=ÕäŠ=eªµ=¬,‹=ô0^=–1œ>ßè>ä"=õs•>š(=Çpû=ú`c>Ê >3‰=öCœ=ìTþ>qn>'û>r°g>h½>zR>^>$Øm><ï>N><`«>YŸ>KºŠ> ëU=í$=¢L§>Ç=Ñ…d=¡Ú†=å|=…€=ñÄŒ>+'=ŒU¨=ÜTj>DL>mø> €>8œ> 1Ã=Ñ…¸=ê>Ùô=øÕ^=㿇>Šä=½úc=‚¿=²‡ó=Ø”…=±Þ˜=ÓY²>6‚ >ÕK>Y·x>Éf> -”«>Q ç>¡œO>|Òy=øÀé=ÖM¢=½ád=äàê=Ì»=H½=’ÇÅ=æàÓ=Ó•=ÈÁF=Íá5=–ÑJ=­€×>$ù>,s=èŒD=Ó=­~Ø=ß¡c>³>J#Q>:ê‘=þú =œ–\=€`Z=³ÎÔ>þY>#l>ad>ç>%«r=ð°¸=­ë =«ðÄ=ì0¹=ó=”šT=¯U=ð¥k=ƺ=è‘e>Ïž=Ç3»>ò˜> îU>Ö2=¸®å=Žâ@=”<=ß* =ö1 >̲=¾Z=jD=¡V¼=½,=Àïý=kàJ=Ø•>Ge¾>I[ =öJ/=X~à=wr}=úÃ=™Ñ>‰V>¢‚Ž>‰…>"Á:=ºfN=äxÎ=Ô;?=â/µ>%=ã‡6=²- =Σ•>Ûb=ûð=”’=·Ó¹>Çd=ýB¦=ú&h=¾×±=Å5Ë=Ç€=ä=ƒª^=òVô><¡­>?2f=Ó±=Ø¢=ü(ù=È‘¨=Òp×=šúÖ=Ë*ä>#7>+fq> Œ˜=Âßÿ=²î=©¦t=…f=[†=õ='×=z'¿=ŒIs=€a¨=‹É=“x=r â=Q¹=—Ñ=‹•³=¬ò=ãÝ=²«2=t€A=Žå=~Ëœ= ‹Ý=„èe=°ë5=ä¦y=‘¸^=>ü=x3=Ë›Ý=Óç -=Âèõ="T¶=·}=I‡r= -::=a­á>G¾6>›?>G8*<æƒ|=ƒ†ú=¤=õÉ·>>|>D¡>D:>pÅ=¾‡›=‹;¦=h.Â=q, =SÐÐ>Q…>3ÀÅ=²Ú¶»’ñ{>G©>"¡†>3º >7'ï>1pf>VÕñ=m¥s>>3ø>O=ð!>«=:=S<ÿÄ°=U(d>'˜>¹Ä>…j>'£U>¿Ë=êßü=œ›<â‡>-¢8>1r> Gå>+Ò`>K/9>J=Èu;õqe¼ð­»¿ƒ=ó»=|‘¡=#I¼‹½²½gw5½nc==ÝŽ=yE½ѽ s=ã¼ñ>uez>5‹I=ª+ǼΠc½’¦—½¿ÝB½™P;²åw=:Œi;V3z=Í=¥`w=ëW³>Í=M4°<† =Ã7A>:©=y·û;T³J=–ôÎ<«ñP<Ö8s=‡ž=¸ Í=°qy=¦Ú=åØ>"¤G=÷GB= œº·/=Ž60=„¼ƒ:Î=dL=íkÈ=zlv½& Ò=’xÞ>%(N>+"â=µ¸ø=’‚‹>?Õ=¿ä<ÞøF=¯©ž<öù»¹>º=Mwe> - -D>3…µ=m[q=b=Šëä=‰Ö½= ˆý=^B0=êq2=¬ÍÎ=Ä×k>ÏR>.3^>)k='=ó!c=Ík=Ø{á> Mu>D&´>o±>Gç=ξU>&I.> w=p=t=ÈM€>H‰`>^ï?>+Çê>%°Ç> ],=óa >JÒ>þ0=¥ =áäè>’ =û‰=¸ìZ=T®O==uE=O"·=Ïël>:M›> ä=»“=þÑj=¿>–=Ö_ß=§„È=„ƒ=~y)=rF=¬ûÜ=ÝáÍ=ò =¿KV=¾WÌ> -ºJ>-Yû> šä=Í =¢>Ï#=¿e©=™L=±³ˆ>|{>2û]>öÉ>g> -j=­Ì =ÚÜQ>P=¢–È=ÓKÔ>!Å=Å@Z=ÀM°=ó±˜=ë]…>µ>NÂ,>.´®>KFÝ> nä>&>ÝR>3©&=­v=u =Ǻ=öÏ>@Å_>o•>(= =|KI=Ÿ í=‡!"=Íà >)…>b’>Eâà=´„ç= 9`> þë>R¤:>tå>.þŒ>/Ù>4q<=³\K=ñ—> %>îü>66>2XÜ>Oü>>EÑþ=½ëÝ> O’> -n>Eò> ¯½=î=þ]Ì=º¥1=3ê>-¸¸>VcÚ>N4=¬¼=7D=ùð2>brô>JòÚ=í3v<ÿ#…=x4=¡U“=£B¡>´¹>O¼¥>/>>3=¨,Ì=†”¾>yXõ>‘6/>tܯ>)á>Mž>"3 >EÚ@=CÃ¥=–óæ=æP=øwá=…Zò=ªO >+3À=Ü=?¿=ðO´> Ï«> M€=㙯>(Ò¨>V• >/>ì¬=Ús¸>S#>e)>ÍO>—ø)>Ÿ#7>‡G>n™y>iÿ=Ô”ú=¥Ïå> a¨>ȹ>!9y>\4Ò>bð=>†{=É™>Ó‚>ùØ>;±h>”ø^>Áp >—a“>$üý=ó™f>†`=ðdÜ> -|>Øì>)1=üÓg=Ð[e=ÞìÐ>ÇÓ>Ž"=ÛF@=ºãƒ=»Iœ=åe=Ç C>|=úé¯=Ô²>_M>kÒ> -À:>L> ËË>*Ôû>*9i>;´=×#=ÄŸ½=ê ÷=ðF>q‡> -z±> Š7=¿|”=çÞ;>!N±> g>J1[>œC+>“ê'>Yz>,ç3>‰°>µ—>Í->TPE>_ib>#ʬ>C»>LÔŽ>Ò3>úÛ> $²>oœJ>¾Ü~>¥ãè>a,ê><¬ÿ>Ïû=꡵=óK> Þ¥>#"~>T&>©>0ä>GHÀ> K=ó Œ> ¾¸> ÇD> á>ú%>²Ê>¥•><(’>é> -Ü>rq>l>`Å=î[=Âë>Œ>«Í>¦Ê>ÙÆ>#ê?>(M¦>W>3w>„!/>Éñ>6í>p¶>k*É>ØÎ>*‘>[ïJ>13{>ž×>%Š>†>!Þé=õ( -=Ί¹=æ¡«=תª>‡>„£·>Ž`ì>rJ•>1 €=Ø‘Y=½‘"> †e>4ˆ>\¥Ê>l·´>]}>3“]>&=ñà=¬f=¦ >s0ÿ>®^Y>˜B0>ߎ=«@Û={Ï=oõ=± R=µ=,]=¡ë8=œßß=ð§>ŸÉ=ýãa=Ÿ¦à>›Â>`e>Rã#>!Œ}>Å;>2ð>+ ÷=ÿÞ=àgB=ÛÌ«=Ôª -=õ&ä>*©>=‹>3ö>:›=ÏÙP=ÍS">¤=÷Ûo>Öë> -û>kT>^þ=öù=Ó(‹=ûÃ>³U>!n=ÃÇé=¾×q=Ÿ¶Í> Ê5>Áu>ßú=ÿ*ð>½˜>“>îç=ÆüÍ=øÊ>"P;>)f=Á==ò’=Ì ´>út>ä>5ú >8še><p> Sº>*Ó=>UóÜ>z¢ô>y·>oâ>\5> `B=ÿ%Š=þlž>ŠÉ>dBd>c†}>%ÞÕ=ܪU=òã=èæ;>ÚŽ=ùï&>-ý>u-)>‰Õ >*¶=ÐÜ=ª½g=âE -=ùn =ÂãS>Ö¤>1€n=ƒ a=–vq=¥Í=øÉz=øò=ä )=°ü?=±Ày=XO =„&ê=hMR=R_…=›5M=݆(=Ê*=¾_'=œ;=²•=ÜÔ=þ¬Ò=Í>¯>RT[>~>_>ú³=Ή=š¡=¤1I=à¸>=ÞÌ =º«°=áù|>Wú>…=ô><9â=ÜSŒ=ÈqÐ=ß`=ÿa<>Ç>¤O>ÉÀ>Hp>!ûü>Ï=ÈMã=¦´ë>)Ÿ>ÜÉ>œú=îÕƒ=Ù G=ÕeÅ=¾úñ=´à.=ÆÃ> ><«>%>šù> í¥>c -=Æu=•=Í5=éYº=õw[=Ô¾=§”Û>j>^Ñ>+ÐÄ=亳>7V^>PjB> ž=ÅËò=Ðç5>0vÊ>Pië=úêà=i’=›ò =¬àe=ÕŠ=¢æ½=­Æø>3ëÃ>\y´>q.=¿Î5=Ä=ÃMq=ŽLŠ=hj=­të=á‘Ž=ÝoF=Åï>É>Q2Î>Uª >bà=ÙþÞ>´ž=Õkˆ=ç+7=èO =í!Ò=óHq=Ê“=·n=éµá=øCÁ=äžØ=ùpg=õj>þl>S>1Ê>90>=ë=ñÁ>%j>"ÜY>c*> -Ùr>¡Ö>#Jk=ðQT>³Ð=¸ ü=¶™¬=·¦,=»Q==¹Û÷=ÇŒw> )p=þ!p=Ì?z=¨4­=˜³Î=ËxÔ=ìÓµ=üšš>E=üß²=Ö%Ä> -+u=å}ˆ=¿Í÷=Á ¹=ÙDV=ØëÛ=ù@ -=ì Š=І”=üõÄ=ç„2=ü‚=µ‰q=è”Õ=ÝwÀ=öŒ)> ƒÁ=ô«§=˺>áË>öÿ=°Ï!=Û?=äœñ=ò†Ô=Û0n=а–> ï>Ÿ¹>ì=г÷=öh$><…—>dôq>D ->s%>P&>+€`>Uœ==Ús=Þ"$>7ýë>§n>MN>ÉA=ìYÃ=­i"=•2=‡3Ê=°s°>2è÷>7C,>3Ø>’=Ô/ç=Þ<=Öü=ù§>ØÂ>&f«> -œ¸=Ób=Ÿ«›=Þ^=På4=ÏÆ$=î$r=ÒX=ï&ö=åŸÀ=Þ’Î>A¸>Næ >M¯>øm=šM=•bµ=ƒï=ŒÍæ=¦ºo=‡ðr=¬‰ú=‹Cü=¹D=Ì_–=ÏH=3×÷=’hS={œ±=8ƒ=œÂH=¨«Z=†‰5=x`> ³4>Zø=öý=¸Ï¤>¬/>Šœ>Ýx=í°‰=ÈŒ=Ç߇=ʵ1=–AN=›Z=‡¡ª=];Û=£UB=,"¿==þ=Îñ4=ùóV>Ó:=¸Ñq=d@ñ=„4=ù >Oü>kL=ðø=õ n=»Áª=¾Ö´=íÐ=/?b=@Q”=¬p±=ÏØ>“ê=”©Ñ=+:=:G=“|=µJ¼=ãúM> L=­ã=Ï /=êR™=äÙó=š_Ý=Wn<¹g =Å>=Bhr=t‡è=¥ª=讯>,BÍ>o|¼qÁ!¼¸³=ç†=áæ’>œ?>¶=|çä> ëk>UZ…>Ðw=­€i>¨0=¤.õ=Q-®=Û ¼´Îû=¬yÚ=¦‰<â¤K¼ÌaX½0œ=ÆÈ>¸°=òÅ2=Ô‡Û=䫬=['è>~A>®ý=¦ðœ= u¹=gúõ=l =ÿ[=YuÒ=ƒFU=pÛ¼ìwç<^ó ºõ‹«»ßy=SÙK>;>6Û_=r„j=’² =—0€=2ÔÞ<˳¾=f­H=É©==’0Ö=(%=+%S<ÁâŒ<8‰}=˜Sf=kƒ¼ Y“¼ˆ•=Æ&'=êÞ=Àu3=–ù˜=Šký>JG=¼Î-=S["=-B@=g£\=‘•É=¢óÞ>+là=½ =¶G%>©>=б=úYv=œ[=ê¢6=ÅHÆ=ðñŠ>.ô=ˆŒË:¸'d=})7=eÀ‘=(Â=¯ ;5ƒ¢=‹“ò=týí>U·>†=.=“^Î>p˜=‘Œä=M=¶=ÎÚŠ=ÔL3¼¥ö„=Ô€5=½ú=Ÿ{-=Õ%†>«L=˜áþ=v¹=‘¾<ßñ<æ²=…æ7=uÝ.=Ùñ=ˆ¡>)W=ý‚=”u”=ûWª=_5W=h€û<ÖÙD»G–—<ø'Ã=–yñ/ï‡>IŸÃ>#Ýb>4h=ÂóÀ=µéã=Í Š=¿@/=Ëú=˜@¸=Ñú¿=¹¥0> B>}û>lp=þ,º=ÞÏ1=ô=í>0Š=É2=©Í€=ÕíÂ=ñõú=’N+=’š=Ìæ>fT> +°=Õ˜=Å’Å>%„>À%=øþZ=õÜ#>çí>îÜ>K >Õå>ö >Ë:> ‚é> Ù«> Ï&=þæð>3«=ÿBº=ª?í=•CT=–t=žÝ>|—=ìí=ý =>0 >7ö=Í•Û=Øvº>\=ë˜=°…±=±€v=½ô¡=xù+= ‡Í=†ü­>-Ô'>ŠØ=’¢=YÜg=ñ·]>š> ,¨>(Pý> ®Ä>ij=á¼í=–½=³€>‹(>3i>ž>J©;>D”M> ¸‘>0>‚†=Å”'>åî>.‚=úd=þ,ø>‘“=ÕÕ”=¨ð=¾MW=êE+=Ïz›=Êà >$I>w£>™¬ì>ƒ™W>Ä=Ýci>’L=Ù˜â=š:;>v>§Þ>/*Ò>ÖÃ>5þ¬>D[™=ú5*=Lë¼¼¦/=g9¿=Ч=¯ù=¸)s=ÜnË=›ïÙ>)>OlT> -¥`=µaH=Ý×>(U}>QÇF>OMj>FF>Aá >AÕá>¯_=Û­d> -Ú>FÉH>E\»>>5m=ÿ?ý> ŸV>jB>ên>NS>oÑ>Lð>&>7R>4D >]2>Y€>1c>cˆ=ÄÕ=蛟=å>­Q>pi>Iò=èY¬=ÜN¨>“7=ùˆc=éè{=žš‰=tM=²¾(=å>0=ás~=Ó!=š<¯=–«Ù=®¨?=Bx=¯ä`>[>˜}>/×k>/©²>%óq>¾i=÷ ô>àÙ>½>§_=ìâf=î>6”–>Mfß>z£û>q>ˆV=¾q[=³ê¸=·v]=òj­> v0>G:K>T€p>Z-'>2¨J=ÛLÕ=Â+0>}Ó>jÛ¬>ŠùL>‚ƒ>X‡>zš>‚><^>u£>0€U>Â’=Ùý]=ÖÞÍ=Η¯> ré>C5>Þ>¡B=ú$4>u‘>,Ëç>çÁ>ñØ>JÇ>=™=Ìk=þ0T>h„>.÷V>#ÕM=Éþ*=ð1c>Ûñ> ->9ýo>1Y >+pé>!Öõ>ÿ=üäË> -)>X…=ç0&>Š|>òå>$>2a>%8w>ê­>CÇ#>]žø>-Sˆ>,·Ö>"ìi>,÷Q>ë—>PÒ>›Rv>• ‹>Z2¡>:3ß>Kÿ`>*·^>+}±>Γ>^@š>„”—>arÔ>á»>rí>Ax>>S>pê$>—°>Ž!>Mà>Iä>t =í„>èd>(¹ê>.1>)oˆ>o”6>ˆi>IÊe>!ÿ}=ÆK8>zõ>¡*=û­2=Ílt=¨~±=ÍÚ<=ÞE=à1ï=Õ7T=ÝÁ=ø\È> -«=>2Ê>Ð>ææ>ëÆ>èv>äC>"^ã>&¸>ø‚>%¶s>;·‘>S"Ñ>,DÝ>o‚>Rÿ>2 ->2·W>ÿ)=êüË> ò‹>ºŒ>U^> -Á&>3Î> ï=¬ÈU=ÉMm=îg>0ž> ï>(ï#>+µš>(Ò´=ñáó=óBÑ=ÌE=©=ìpê>)B>)§F=ë;g>Eý>#‚d> -Yž>*>#m:>L8T>h>M>|=áJQ>Cš>â?=ÓŠ>y±>A >â|>€ù>‡>²¨> 8>@!>“b>¬/k>uÓå>:ßÄ>*Eª>B½N> :H>ò>x=áÉL> ü=ðØ=ßk»>ñT>XE> ѽ=ïr¤=á°=Úø—=óž=Åt>ý“=÷®H=í¼k=Ö‰5=×A”=Üü6=þ›L>Ý>o¼>5g>áY>-Ñ=é:`>™|>|¡=â6˜>"B>*"¦>+m>>—$>KZ> ¤=û†Õ>À‘>!þŒ>lJ>Ü>l>á> :‘>,¹=à»Y=ʼn~=ð˜>²©=øæe=å-›=ó¯_>–·> ¢º=¾Œà=Ý Q>§³>Pß>JÆ>¶8>! -¡>U>çB>'>Gµ>(Q>çÁ> k=>©>&̪>Q× ->Ð=>Ñè>"s¹>8†4>!©3>#ß—>»Å>"Ñå>)Ò,> f_> éÝ>aév>Ñô>Wƒ>H$d>LÙ(>7>©P>W>:þ¹>DÅ>ABï>@(h>.á>Õÿ>úô>#Žñ>(†ª>d8Ï>…“³>‚—>=ùè>6>}t> ïm>B/=æþW=ç;Ü>Ž«>D>*+Ð>VY>(î>q>ש> ® >5=à­=¡sQ=èÏC>(W>#ËI>Tƒ^>/œ6=ú—>F½=í =àX?=ýÆI>Ýò=Ûæ×=ñç=õÛß>(€è>¡P=ñà¤> -¤>]u=éÚ>24>œ(>»V>ž3>+ô¼>% =è,Œ>^™>Z8>l>£>,Ÿz>,í >z»=ìÚN=Øê"=ú@Ð>b’> {]>ñ>>5–r>70W>)ˆP=ï%Ì=Ýqô> vñ>Aâ>­Î>×?>:> -Øf>#(>›=ß`l> r>Ò=üª>·=þæ€=ï1%>(Œ>%=Ã>)ƒ¸> ³F=ßt =ç±R>:H=ýé-=êO>8ú>1Q>1†>$àÔ>³a=ÐÆ=¥Äª=ºYD=Æài=Ã3+=Ê‘é=ù p=Òšd>ǧ>0S>IÊ=ÿ&>@!>P›=>Fg!>Há>?G$>)*Ý=÷PŠ>ÍÅ>'!{>A`B>8B ->GÐ=Öá-=Ú_'=÷k=ç)!>Ñ+>#>t*7>pri>/4> âÓ>—Ô>!¿—>m:=ͺ)>¼a>…•>óY>M>½~>U> H>g>m+=åg<>i$>#Mû>Ň=Ñé˜>úw>²¢=øÅl=ó *>=³=ð-Y>ï>_Ã>9ÄÔ>.A-=åðÚ> Âj=­œ+=õDi=Á ->=´·d=Áœj=áÌ>‚ñ>ž8>Mà> ö>m=÷I-=÷/ý>”[>]ó=ǘZ=û)e>…¯=çv=Ú7=ÇçÒ=¬¡Ò=þÁ]>ò“>}(>NK>,! >'ø>6Rà>0GT>²B=ó`>ã=÷=ñr>,Mƒ>,G=¼È‘>¦>X=ðU@=e=þ'×>/S>)eø=Ô™¦=õŸ[>ì >@…c=íü¹=µ™=Ô†> ™ç=òñZ=ã¾.=º—“=Ùôø> -[÷>ë=׸”=Õ÷w=ñJ²> ¤µ> ”3=ƦÍ=ï#î=èS³>Yà=Ô D=®’u=ê#î>ü>$Á•>6<*>#fç>Èþ> ]=êع=Ä/>´ò>&Æ>Wõ=½­=žhG=‚hþ=’#¿= ­¢=ì@> Ò‡>sÀ#>H">0Ž®>1Yù=̾>#ÆÙ>UJ >h£;>~A¾>ƒ>ƒÅø>WÊ>H‡Z>~/>"º€>6B¶>W-G>\sa>k¡>‡$>šO>­N >wÃÈ=ÄZc>Ùð>f<¡>W¡:>L$¡>Nãg>F"½>~$>/l¤>‘>gƒ>ß >l®>Bù.>U>h¦=ŠÈ°=¯b¯=¡ß:=¬¤>ƒ>6ªw=”;<ÈÄ=û.Ø>Ã>)N'>9rÏ>Ê >" >>.@>71=÷x_=™°.=Ë;> x=ôXc=éjm>çÝ=Þ@>¤«=æ½k> ¿Q>¤k>Ä·> u>4`o>ZT=ËM<•*N=(Kê=Éú^=Ñ%Ò=á2 > )B>%mÛ>•Å=¯zæ>ý>j¤}>ƒcû>CÈ=…†>Iø>"Ñ…>ÖK>&™Ë=}i=ó_z=Òä°=Þÿ¦>ƒ”>DV‘>g@Í>Iåö>GeG>J1_>6 -Œ=üKÍ=†®¨>Ÿl>ÍH>2R>’9>:âð=ûèg>0%>IŒ>XÒ>JZß>“n>-Á>cI>—îó>ö>Iã>±Î>L§â>N_\>!kÈ>uš=ìï=:Ö -Å->ï–>‹ý>ÌU>¥„=ý =g5]=ãgw>T“H>U˜ö>+ýã>¼Õ>-0\>;ßã>=¡g>5H3>? Œ>_€>[+>-,y>@°>>3Ã>>/ð;>4X×>&¯„> ’=µ e>®”<öV“<¢7T> i>àE=üîê=R =Š®=Æ?Y>‹T>i°>D:'>;Pn>[éØ>' D=ÚÖ>F>"é}>==ú>9‘¥>ÍB> >R¹W>cóh>4Ð>S¯e>0]³>"ƒ=ÕdÉ=ß]>+ºª=Ò ­=¤™¯=lE=àÖ>”±=ýЇ=Ä -=Ž#ý=µÈf=ÄÌ2=¨ì‰=¢e=ðæ=°±=¨10=åB•=ß³@=³ÚÚ=²êÿ>&Ð=Íì=ÛÙ_=Æ×®=ÖÞ…=ô@=æsI>$Þ”>!˜P>@Šó>›‚Š>®[¸>y¯> -?£>[ˆ>zB>‘»>ªŒÓ>–œN>dÞB=î´Ý> .À=ÌìÓ=“òê=‰·"=¶+a>&©>–"Ã>šÊ>DG‚>,p{>-õÍ> þU=£O=⧀>Fù>'R²=ÿoY=–¡Y=¦ -·=í™j> Z(>ŸUH>]Ï>j:l>¨=å+Â=øi)> 9å>?#x=æOG>3>&Û>˜¾>X>‡2>b©Ÿ>dx•>j©ì>>d>“£>¤ Õ>¢ò=>‚>mô=í:¶=çáF=ãð>©„>l‹=Ô/·=’ˆn=¹¥u>$U>%Øû>A>+2A>ÕŽ=ß!Ú>Òî>4BL>>¤’>aB>€o>{v‡>e|)>TàL=ß>=úÔ> -ôU=Ø -8>œO=ôÏ =×–a>)ü=÷ã>9>óè=ݵæ=´ù+>Š?>%ð"=ðÝñ>'Çc>,íð>$Z\>õA>N@ï>#º>’µ>U\Ž>0>j9>†ÂŒ>oå>LO)>DŲ>4¾ì>*o>Sæ=º-=Ú­î=®hå>ß->,ÜT>2Qó>û|=‡ ‘=Ý·œ=Ì€>1> ·.>8W2>$—=þºÛ>Q=ùgh>>¼>ŒY >Áú>Jçí>:I>N>óÃ>?«Ç>‡N7>Šºc>C}Ï>$C>8ô>K-$>C>.M>˜e> 7³>&~§=ö1t=ôê÷=ûëù>r—> žÓ> -]>=8>Pø=ö„>¡_>Ú->v)>(μ>!¦‚> âÏ>"u>s­>­O3>›ýM>m¹ç>;µ¦>$Á%>#¡r>0ÁÍ>]Ùk>„"Ö>‘Øæ>3‡ƒ>¶,> ßÜ>¤Á>»6>ª|>ˆà>¯˜>/¯«>#ü=Â{Ù> -ìÈ>"_¢=õa9=æ¥'> -ó‚>…E> -D> ^>ÉÈ> -ø›>¡ñ>ˆ¼>©>÷ä>­~=þ!> >dð™>˜å>‘~à>-}=ëñù>h[=þ€ˆ>+>“>WZ>3µp>qà >†º]>GÁ¨>{‹>0G¾>]Jc>6å\>%¹>+o_>0Ö>:D«>.=>ß.>@!>D -C>c6¯>da,>8ìõ>".Þ>_¾> î>•>vI=ÚtÕ>‘Â> -Ö=ÿÿï=¨D1=ÚãM=íÖ=È?Þ=Ði*>'Æ>‰Äú>Œ§G>Cxµ=óX=ÍÑT=¶0=ÜsC>­g>(=×g=ÎDÅ=õ`V>3Ξ>^áN>Gu>´> Îö>6>%kK>ÑG>{> ä=ã =Ì=?=ó®¾>E£=ðL=ïÔ>DÆ>(4>-Õ>wq>šÅ> -PT>—¢>}=ú7Ê> -Ƕ>#Ð>Tf>;C>%Ñp>+ }>Þ°>3 ð>¡u>"í>lIí>¢çL>–->JŠu>//K>K'ö>=Q>'0>¬>ÒÃ>$g">Ÿ1> ù)>(æ>+v»>bÜ™>€'>_:>,éc>#{j>2m> ~›>©ì>*«b>![#=ý1Ç>%s…>.¿“>Œ¥=ìm=öK>ŒÎ>=Åä>\ä>GrÕ>)\->:&¢><,J>”ç>4þ‹>>4>Ht>8˜>©‡>#C>4ÕÖ>>Óa>6‡~>2s‰>l>¼V>3Ñ:>p$Ô>’¤z>†›ø>Dæ„> óÌ>U> ‚=ò]Ë>ê¡>qu=ç]®=éWÏ>lú> Uç>{_>C>#ܹ>Z :>^×À>V‘^>+îl>«">/j>;´>4±´> ‡¦>4@o>;ñ©>†=ïñ =þ9=ú´ > &'>ä>˳> -rÈ> Ö±>ƒN>fo> jJ>oü=êB=æ–B=û&=öÊ>!ÐZ=ñáÉ> ¨õ> /|=ð_ã=À9>4¨I>$û">Ž¨>© > Ɖ>4ÇK>ŒE>‰— >.Åš=Ë‚=ËW/=ßÿ2=øÞd> Sé> -÷œ> =Ûýó=öuÜ>L`>¶ >ç=âD =Ë4>(Í>:9>Nþ•>[+©>(3>ã>4Õ#>S„>?Vt=ú$=úÓs>—k>u>õ ->&>O6¦>Ga]>'ê`>œ¨>4å>9>Š?>þ½> š³>>ä#>"‘>*©a>k˜>Îæ> ú½>!b>;·ž>(Ž]>@.>¬=úÞ{>GÃV>=B>™‘> Ø*=á}¿>#>$ >‚q>zº#>:B> ->BB>¼=ërè=ÿä©> ”k=ñÙ=Ý0=Å£Ð=Ø6Ô=þº>3“> -z>SB>%œµ>#5¦>%ä<>3ú>Z_¬>‰ªå>açã>1‚<>û >:/²>eÈ¿>&‘®>#€>!(Õ>ǵ>½ -> ˜8>`Š=à½K=ág…=ó[7>)s3>1\=ÿX–>¡9>>]g>Ô>¯’=ðj!=éïo>ˆ">Êb>Ðs>>>',>+«<>'3ù>8®>5l">ò®>Ë2>ã =çºs=Õ“¬=ѯ =è»F> ó->aZ]>‰Vn>ƒÜ÷>]£?>þÕ>‰ƒ>(n>€>]× >f¦*>4Ò>„i>d‹>6xv>BÇÉ>$ý>,ÊŒ>4[Œ>6\á>R›½>;N>-)ç>=8d>Y%Š>6³^>0/§>%§>1œ|>!ì+> ²ž>Z„É>SXÎ> ¨M=ðae>%>ãÛ=뜜>|û>Ò|>ï|>'¢=äüä=âeO=ª}=†±Z=¡É8=ØÃc=Á‹=Öùó>©i=U6= ªQ=äDò=ØÙÃ=Ôœç=}¨I=5Ñ= C=Ì>¼Z=æ=úŠ,>-œ=èT>*>³&>@åK>U<>zÐ=Ï8n=Ô9ù=Ö½T>´H>E#=ò2¨=íV°=ýAÿ>ž_=Å=Ÿ==ÐÅ>$G=ýÕ=ãëì=â–A>«î>7Œ»>%[Š>1HÜ>$ßê> s>3?>"T8>Î>4ñ¤>%c>Â>2}>x·>. ©=úP=ï\=áa>=ê ==ïfN=ÉL=ÙN½=ê—y=´C=Í'¡=Ø=º¬‚=­ º>œu> Ôk=Ò‘R=Þo¹=å:ž>5Ð>ý<º #=¿ü>>¾ >D|>’®=¯¢”<ÑÌE> ©Ú>°q>ŽH•>lh=¶ýŸ=Ì>½“>A…‰>—¶…>‘Ž>˜·Ÿ>t¹$>âW>[·>- î>{à=f<¤†“> -j¸> ê>$Ë>#™>›Y>XŸš>‰Z>0ãD=ö’Þ=ð’<>ö|>™â>™a=ú¶>=Ô¢¤=y–>=+†>I&;>Ov >F+ì>)>M>;á'>™Þ>ŽhV>Sïp>$=!ŸD¼lÎ×> Ð> Äq=Â&>ø§=é m> »=>US”>P¥>P¡^>P,>P˜û>P”Ò>P¡>PŒp>PˆB>P„>+Wm>€XP>“8Ú>*y>uü>'¦Â>¹’>é.>J¬@>1d#=ˆp=èÉ >ª>ë?=í—!>« -=¼j=Ýþ.>”M=üpL=åì>4/g>%É>Ññ>r¬Ð>…¤>uõ=Ѻ=ëá >0ü3>ro>d'„>2˜l>÷ð>+‰>(d">óŸ>G§Ã>Ô´>G>GPH>E`7>R>)Ë">kr >zÀ>bVø>Q)g>Á{>·¸>e¯q>-§5>~·=Ïô‚>×)>_»=ºŠz=ß&O>AÏù>:À>^­^> -ä=мX=ÍM¶>'ú>3©~>.Ê>pFÉ>Kœ2>$Êà>Kg9>2^U>6Ö„> qÂ=Ú=ØÙA> -ü—=ûko=ãÅ=ÏŒ~=ÈU"=înÐ>ú´=ü+´=³ø/> l>A >Ú=ËÊ8=Ù:=Ìfº>}n> |/> ¦n>2%­=ìwP> T†=á d=¨ü…=Èa.> ~Š=ò™t=þ=× =·Àâ=¿âÚ=í13>SÊ>HŸq>BU_>%Bí>>>Á7>&hM>r>f]U>:ùn>ñ†> .>*K+>>˜=>.L>&où>(ù =Ø =äP >Eÿ=Ë¡>ó:>m#Û>G‡>-ê>8æX> ¨Ú=ÒÚ'=Ú%>(Ç>H?>mûü>Jø">MÂB>ÁK>~Æ>it®>E6|>Y¡>Grø>kE{>yl‹>NÚó>_yA>CÚO>1™3> Éa>Þ1>2)+>ZÔ>pÑç>;Fä>*…R>@`>R»!>X D>M¼ >8˜>Ï4>o’>¼> B™> Þ&>€•Ø>sÙÍ>SU>7u >%§S>CÞs>Œf#>’œÝ>Z»> Ôî=Ðmû=öbè>ú…=æüô>¡q>{>>‚D>)ih=ù2.=ÆiQ=µ+b=ëä>Gª><Ä>Ax>hi> Ç> ”º>@o(=Ý–¯>-‘>‚áR>s\«>!>)ƒ>$i=û¾h>D=>j±>Œ£m>{sª>RÔ8>=ìó…>é> ¤>'A>7 -ž>!jÈ>/±å> M$> ±<=ßÕ›=ò¹> -Èí>):^>Š¯>{ =Úw9=Pó:=ƒ1Ø=ŽZ·=‚—9=¸º”=Ä%->«=¶.=~Ð=×=/ôþ=Ÿ¯Z=gËñ={¨(=@Yú=yR•=Œ3=¬(=»|;=¥š×=´\¸=ºÉÁ> ,Â=ÚÇ°=ãE=ùül=æe=ïÚ=Ïu_=Ó#>žˆ>'$5>&ÞØ> ×î>C\> dz> °{>? -£>A\ù><<ð>#\k>À¶>kz>c“>C±>†7Ø>¾6;>ŠÚž>IÍ~>3çË>h'>œø>&U6>G-<>ŽˆÛ>rˆÕ>!†–>Ƶ>0Á{>3uF>:rE>emæ>žÙ6>ª°å>Š4w>?ôk>¯›>i>`2>5R¶>)ŸÄ>û¿=ãÓT=ÝùT>Úì>øN>iM>m#>$aÇ>²®=ì-=êÈ=ôR> æ9>§ƒ=ï@z> ã¯> >‹‘>@Ž> ò^>ñ>Î}>É> ™°>žö=ë =Ç1¢=삼>Ì)>'>'> -úN=ÿþÑ>sá>üg> -l>1b>û>#f> 0É>$–¢>…,> ’ž>/gº> ­=ôm.=îB>PŒ>7'>8>w8½>œs´>‰m>^…‡>„Mo>Œ>´>rdT>:ý =âu¶=úY¶>F\>/ -q>Zô¾>Œµ€>Iè—>Ò½=øü\>yì>'€Õ>1ý¾>>ƒ>šÍ‹>¤c>SÉq>O>X;>‡><ï>M²>"†>*>8qn>¾«>©«=æ =æø‚=÷…> G–>>–×>§Ó>ûá>·´> qH=ç~=âXÇ=áÏÓ=Ùź=Ì ,=ȃÚ=Ç =œ³b=}e’=¿þ)=ÉJm>ƒw=ût=Ça²=ÆŸV=ÖpÝ=⾑=ïB¤=ó]"=ìm> -Mv>º´>$„ã>~> -Úv=÷ÖN=¶àÄ=ÞÄ>të>Óü>üÁ>øL=ÕÜÉ=áqä>Q”>$ño> >=ó¬”=éÙ> gó>Fr> uÕ>18­>0¹£>¥•>> ?a>ò6=ñN…=áwX=ëC‡>N§>"5Á>í)>$E#>BŽ…>…˜È>eF2>N®£>‰eµ>Îa> ÷h>$=>->Mý¢>3Çb=Ø]Ö=ƒª«=¢N=³{ =ÌÒ>¶=ù^£>L`u>z|a>N ¶=ùÕØ=µg=Ók”>¥=çB=¶8=Ø®=ÐÅQ=ÌÆç=–…u=›+Ò=ƒ/[=ßï)=ñªp=÷¢ÿ=ôË¿=÷©=é"a=ÆŒÃ=ÏâŸ>²h>&˜ä>™a=ðª_> ™²> n>uÖ=²y$=›}u=È€ú=üô™=û Œ>êý=÷ -d=æ>„X>¡> &í=ÉZ@=£qG=ú&ç>š­=í.=ᬉ=ázé>ü†=ðyì=í÷ =à!Ç=Ú/–=Îiî=Ï›÷=É|ï=žã¸=Ÿ¸Ë=Õ6=Ð+^=įw=æÂo=Ár-=ÍÓñ=ý>r¿>Kh•>[û©>S·=ï™·=é$À>ÕU> î > dl>)?Ã=ÐÆ=£ØW=Ô!%=óƒ§=$ã=Ñ›ÿ>%Ãy=è¶þ=Õ¾\=Í”»>ð=é›>eé>#Ͻ>‚L=ñ7'=Û€Á=Å3G>©þ>;Š.>\,†>JA”>H3¦>`@S>VÇü>GœC>Ç­>#Nx>?|<>=8‰>*¹Â>&ké>?aÀ>,$’> -ÿ™=쮥> -x>@å“>„ Æ>~Þ~>`:\>Pð>-¹> o>;>*Ó@>6&¨>§Ž> ¶->4>1i¸>_K­>%±¬>"Ãõ><•9>@Ö>+¹,>#™r>J¥0>9F>0Ç>E¤>BÏ´>þ?>6‰>+#‹>›f>*í­>!ŽJ>xÙ¬>xŸQ>3î¹>)oÓ>/ˆ>Hƒ>B -">8u>Zž5>3Se> -Ù>#'x>Ó\>–<>ûä>%£¬>n‡}>•è>?°Õ>ë›=´Ûà=Èס>p>ƒã>§ý>E•'>A"&>{$>jOÍ>œt°>dà„>!]5> -7>=ê>¶> ‚ð>Øð>)Rœ>"™=ôïø=ä%§=ñÓe=ñL?=ù¬½> þú>,st>: >6X‘>)wÔ=ìoó=Ͼ>ö`>cˆŠ>Joy=ô…)=™âò=¤L=‹v`=¨.=ñdE>,^¿>GWË>z´= ¹\=}Uÿ=Þò%>V]>s.>$~=Ã?…=˜¢]=‚^Ã=pý=ˆ=œC=ÆK£=¹ªÌ> ¸¾>"Á> Ó&>F}>9X>?Q>fš>  Ø=âXº>Ž>**>-T²>7â¥>`5>=Í*/>ÔB>JRØ>A-ô>8ÊO>ZBã>jÉ“>C)ò>zB> ‡©>N>‚y^>’ø>Ž{Ø>€-˜>>Ù‘>†¡>Â0>0w¦>©R=è §>)>Xÿ+>/œÒ>:c> Œ>:¯ò>c>•‰>«±9>{{¨>=b>.Þ>NЯ>mÁó>;«3>!šø>e“%>}Ó>žº>Çq=Ýc×>å> ç=Ì#=À{Ö=¯Æ=7$=šëÈ=Ðø,=Ñׇ=ÍÖ$=ÎÒ¡=´îw=’•=Šà=‚=Ž­Ñ=áØ6>Lyä>ZW>(º\>G­ª>K=²½ë=¬ -P=½L#=§Þ[=²*=¸Pî>úù>-È—>1ðG=ß -“> È=êE¿=ár> W>Y¦>fIÐ>n‚‡> ¹<>jf×>¤õ>•à=ó Ø=·Ê›=æÞÊ=Ókj=Ú5`>¶>R•A>d4>TäÎ>+(=Æ`>$çÄ> -„Ô>.b>UY>§È:>\>ì>Mˆ>\ -=õ ">\Ô>([›>Pì>9ƒw>+=SYõ=ÃgÀ>ÍÁ=÷²ü=ÄÇ>4Ç[>P!B>@fú>Tp=÷:™>^Q>x}=÷Û=L$“=‘£>SI>EÐ1>jù›>~F›>w>Ü>"a>,Q> o$> n¿>K>J–>„»¯>ˆ$ì>3-=ó#°=¿„=çÕ¾>–M>x}=ÊsÑ=ï\™>`>>8Ft>[VÔ>Dز>*Ëõ=Þu†Ó±>4;Ü=Ô‚¤>×Â>Jå†=×Á•=Ân=BãÙ=*ŸN=ÌÅ–>De>" i=»Áo=Xó={ =Ê_¿=üK½=ã¦=Ú(ó>`À=‹ñ= ¯=Ä7Ï=ík)>> 1>Wæ>y¸y>9s=iHÁ=@¯¾=æ!K>=¦¤>+=éÙÑ>*½-<þd°<‹ÅÄ=JU=±¨×=è[i=ð­>&€-> -Þ>=š -ì=[Ÿ<Ë=Ü=š‹:=Ro$=”!>%Õ4> à)>Ã=T°S<ŸE›=PÒs=¦zY=‡Ž´=fO==˜>=±ô{=¤Ëê=® ¤=~ºÁ=—~5=ŒO‰=xMg=¿aë=À;r=Þ\„=⩲=Ù„ò=ë†> ¤‹> ±=ÿ’K=õ=ïƒÈ=Õ†=ë}=ÝâG>³Ý> é^=œŸ>j=×nÔ=ÙD³=á¶=óÔ>l=¥‚‚=¡J=è½å=Ãl_=ÿ==Á¼=]f==g=Ÿ£I> ²ì> |¨>4œê=É™%=μ=€‚=Žeà=ìõ”=Ã*O> 5˜>}@>sHÕ>";9>Þ^>?)ú>=è;>=X²>NÎý>f>«>Tº>ŽŒN>—«>j^(>HS>_¢Y>-‡Ù>àR> Ý«> tG>Qã>¥sP>›Uô>‡f>’7>ƒî>W,_>:×>PÔ>£ö>AÞP>v”z>g¾<>(:”>DØl>0­>#X =Ä=À=g^€=í–>„> ®×>Ó†> è*>)‰Ì>&ÃE>}Ê>2÷p>üÊ=ñŒœ=é¼Ì=Çêë=¥_š=ü³>tàÁ>?Ùå=àƒ–=Õ˜ø=¾êÐ=›ð=óê6>L?=ãw­=µ*¯=À¹=ô™ñ=çK¡=µz9=ÍýM=ælÇ=‘ûÿ=o_Ë=´¾t=ÜFb=î6i=ÑcÖ= d=Î_d>`}»>UÉË>9‘X>K =ù7=÷¬;>F¾=ï^’=·_±=Æ; -=Îz–=ÓV9>/Œø>$YP=Ô =ŸÂš=§Ì<=¿k=íÈa>O=â‹Ý=­•=â1=ÿàu=Þûï=ávˆ=ÂÞ¯=öËŸ=§»V=÷ÉØ>QM>?Ü•>NâK><ˆf=úÀã> ¥>Jç4>Z'\>gX>Z‚>kðƒ>Q >T"C>y¦>zãè>Giv>9_>5>!.Þ>SF>z²>\„>2-¯>R—>vá¸>MÉÍ>?Év>Lñ>KS²>Crs>> ‹Ì>"ïF>LBÑ>^ >[ >>}A >ªí>g -e>¾³>Á>›k>-r·=Ú´ý=Úº>=íø>‰f[>ŽÆÏ>]Åò>7ö=Á7È>ý½>ú=å~*=á—x=½Îœ=÷iW=Õþþ>& ÛŠ=Õ=è'L=ùó„> Ý>){°> 9(> -Óä>®>ÈÑ=ô@”=Ùü•>§¾>J!t>pD_>8þò>®Z>&3>U=Ü"²=þúÌ> -²>6]>]=àï=Ýñ>&;>LJR>ÄÞ>vÈ®>Ht¿>-Š>(‡¾>“'=õû=ñ£Ì>¶}> =Õyä=ÐÔ)=ëÎ÷=Ï~o=‰I±=’Õ=ÔQ[=ÂøS=Î÷Ÿ=ô­Ñ> ÞA>«“> Ò²>N'=ÂQÒ>И> d÷>[e>*x>É›>"=ä>Aâ>0­=þœË=ÚÒ‡=àX>d>tÔ>*°>Gù9=ÏsÏ=è¼(=ûú=åç;>¿=>4·>P¥>)†°>t=ö’þ=òi=åQ>cÉ=ù¢Å=Á£ÿ=ÜV>G}=ý¦5>Wù=æÙM=Ã5=ÿã¯>Q®C>€œž>Nx>)ýT>Ž¨>rˆ>n>Ú>- à>=W>(8Û> Œ>']ª> sv>ÙH> Eç>ix>Hd>€³T>w'’>5_±> ¿> -Gï=èÊá=êX½>S>G}É>`?œ>K5Þ>+%’>ùM>!q=ôb¥>7’>hI¶>†èe>W{Ž>*¡Œ>,§>i¸>%ç>¢•>X > ªî>+ëø>#Ì>#i­> Çë>,>!/=ýs>#,> ¿¹>¤ü> sÜ>IY> },>ÝH>µ >–>2[>Þb=úˆ¹>#¼Ý>0)6>†s>‡H> -{7> ?>ña=ðùY>M>tÿ>VW>V^]>DhÊ>‚È>¡´>ça>èœ>¡L>IÃ>&F>Žê>íz>{4>)F¦>)îy>‰D>†¯><÷É>‚L'>~·f>A¿>bµ>£V>pÿ>ªø> 5w> #V>&ØŠ>@[ã>&€æ>7#> nç>.‡>7›>/N>:‹> b%> œ0=ðf×=Üðì>œÈ>É=ñܤ=ìªk=æg÷>2º>+?þ>j²>"Kˆ>*ÒÍ>Û‡=ñ¯Ó=ÕA]=èvÛ> -ry=ÕÐ=╶>*#ç>K ->v =ܱ©=ÿ>)î>&j8>¼0>pË><ј>GáÜ> ú>CÔ>E¶>md>å¡=ú-¼>˜=ᬯ=èÍÒ> á»>3÷¨>uLÆ>si>A˜=ï7> ar>¼|>ýl=´)Š=¾ S=å8=ýìÞ=Ñ•œ>ˆ‰>T–>*G=ÛŸÎ=‰T|=ߦ˜=í>=þÀ(=Ö©'>©Ö>ûý>o=òLm=Ì—¯=·é€=»1Ú=ëë™>>ƒ'>-Õ>7m²>;$J>͹>eË>ü=ÿáÓ>…,> Ûß>( ¯>!OÆ>Y3> œb=ça=¡=Ú½>NH>Q,>WØ>8Ÿ¦>Aü'>'˜ü>¬> ûÂ=êÃØ>ÙÕ=ûžo>7>¶Z=ûy—>â`>9x>"‰€>Ý>AÛ>õ8>Sg~>U«[> -w>¢'=ݱ>=>†>#™=ç5|=¾þ«=öÙ!> ÷=ðBM=èÐ=þ$þ=ë7 =ö׫=ú~b=ö?a=áQ-=æ –>ë=ά=á+n=âÃt=ºßù> -‘>Ï~> xí>7¶>™&>žÂ">€1j>->˜D=üÒ\> eý>"in>,N=ëÚ¥=êØø=Ë>1= çK=®Q=Ü/=ýª=êªK>Œ>d…>ç =åaá=íÍØ>¸¼>$+>/Sí>"=ôß=¸­=Ð=ðÓe=܇=Ï/=¹eö=ÄîO> -ÆÇ>'þº>=5þ>3Ž=ûÈO=Ú¶ê=ôÚ>å>dÍ>IMY>\p=Ö§y=ÿœA=÷V¶>28L>"â>¿>S>þô=ü?> <>ÂI=òçç>‰M>Vn=Ò$=Èå=¥\w=¬ˆ=ˆ6F=vc=Íú…=ñ$&>`ý=ÊÊé=•Z=˜ˆæ=¶ž=¹U¯=–V=¯)=í¶ =΋»=ã„î=ØÁ=ã(> -`ú=Ñ*×=Ö =éük>]*>OŠ>"dò=ùz=Š—=Æá>Iô><´¹>å6=øš”>…‰>1RÐ>9ºë>-ί>#d>I•0>[µf>5¢=ét©=Í)`=³Ìh=ïcŸ=ì+`=û…>3ÿ>5TÜ>0=¥>db>65Œ>bÅ=¼½=¹<§=æ€a=¦F%=å •>Q¯Ó>ÝÎ=þ“/=í}>1=í”å>t>á8=Ùçµ=”†=^ë=›À=ÜF=ɸG=ù b=ì<*=ÿ'=£qá=…Âã=a¦=¾¹=³ëX=½Yæ=áðm>(è>5¦>á_=Üh|=Õ>=F»=o!L=«3 =Â%=þ¨_=øŒ³=ó(=ÛÅ^=®­'=Ùv=Ä¡·=ÞN%=ÙÍp=îÉÏ=ìžÈ=á²=ù=]=ÖJH=Æ+—>„Î=þÉ=ËÆ=þÄõ=¨?Ÿ=ª=«=ÓXô=×|+=⛽=Ö…/=ûCÂ> ¼>²> N»>)Û\> â =Æs)=ŒC=³8I=™¹x=Ì>#=Ðc¾=À¬>:Â>l =è=¾üY=Èo‘=჻=áVË=ç“0=ï=Í•>‘v>'¸>qä=Ú¿v=±Áˆ=É«Ã=ÅÃe=§p;>rß>+õl>óÚ=­#Ù=£7é=².[=„R™=Í!=¯o­=»}?=¡$«=¾Ö[=°þM=Ī >Lí>«;=ºE@>à*=ÿoÂ=ý!>>–c>aK…>8>]ûÿ>2‘Y=÷>n> Ð<ô.G=•k=³Ž$=šaã=Óö1> Û²> 0=ØÚL=Íù=é‡v>9> ä]>ËH=Á,=©Âó=;›=`«¼=ûçà>' ³=äc=õÞÜ>Y>çú=êJt=Ëj=ÿÇG>Î>—¹>,M}>Ä>%X3>3ˆ> G`>+ÂR=õºš> -:>g=›/è<Éñz=:Óô=·fq=ÇX‚=1p>=Ö®ÿ=ãÔ=îZŒ=÷ Í=Û|=ÿ6„>7R\>od=²¼X>Ú>~œ>©Ù>„–>Q¿=Ä&¬=¿îT=_Gs=}¥,=ÿ]7>E…>gð~>tlœ>QvŠ>Á”>\=õùÿ=ñ;Õ=Îï=Ó–=›âT=žsm=âRª> Ãl>&Z>Xf >п=\Ò=¨…O> ?7=çö0=ä…»=ñy=ÿ¶> Gi>ô¬>–s>ÝÀ=æúÕ=ë8/>Kºw> ÷F=æ×a>™›>5$>} =Î2'=¢œ«=þá>·P=ëò§>$3±>ƒlö>IS=éE‡=¶ B=ãäd> ØG>Z¨§>X±T>=á´¹=âDe=ÿ=,>qõ>±=R@g=c™=Ÿ¶E=¸Oc=üRº>"ÏÎ>M½½> ˜=óYÆ>Lë>1’==Ï^@=œÓ=¨Ñ=†c©=QF†=wÍ=‚ò=ˆ\å=È¡>‹Ý>Ø>$:=÷8ô=ð?> ŸZ>==§;W=ôÝL>Ç>%îO>&F'>!˜¡>>@F=皪=µ•S=Ê"Í=ÿßZ>f)> aM>2£I>*œ>!Q>-˜i>.^?>KË=ò}V=ï¨Ê> -]>`Ê>Í>%.õ>%kÄ>ÍÖ> > »Ø=Ýâó=æe=ß"Å=Ì^š=Ó u=áB>šû>ùV>‘r> G7>Òª>Î> åË>7§>n³>5¦>>%€>ä„>Œ>Èà>K5=ý¹J>¦4>¤Ê>·Î=ðÏÉ=×æº>õ°=ù`Ì=ìûO=ñ£_>"P> þ>î> -‘;>­†=öH`>2m>C•>k¶>¤ø> æ>¤>1Ïû>5)> -ÈÞ>n*>;ç>zÆ>Bg¨>]Ž>3Ö÷>#×W>!ì=úb/>æ>ìV=ö b>wj=ÊF‰=ô\> U¹> -1‘>FKÜ>©çd>›Ú>œõ=èâ -=îžM=ù‚w>Á>/T¦>2$÷>#JD>Éœ=¯÷=¼'€=þD=è-»=òÍå>§>éX>ßÜ>8 >a§>(;>2¾•>]¹=ì&Ð> »S>O>—–>ð#>7>³'>á>ô>¡A> '‡=ï÷;=³ŒN=ÆwR>A6>­y>:5>R·|>F™~>0L>n5=ÜáÃ=Ókq=ßW¼>­>@>€{>Áâ>º>$íM>+>!i¯>:s>>.P> éx> «1> Ê=ãl=Ë÷ >\>­å> úx>…t>\f>*×m>8sí>xq>/P> $=ñÃW=Ë)=ð\€>M€a>) ò>,Ë> ']> -¡> 1E>þã>'$ì>+áÄ=ô ²>ÙÚ>*ÙE>#u‡> ¨Ì>Tn>¦>(¶œ>ÞD=Ö€[=à‰õ=ÆŠ’=Á=¯_Ý=®¤=–Q¸=ªö,=ͺ\=ÖXò=ÑeV=Zï_=­)À=òÏÏ=òà¥=ÿ«ï>Ó>-¢:>J6> F=öé>{>')Ž>%Du=üg«=ÿ Â>Í>tL>+'>$‘ƒ=úÎ"=à,R=÷\÷>48=çZÑ=»Ô=×L)> 6Ê>· >•Æ>Ÿ=ô>Ä> ˆ=åÂ=Ø|=ËÌ<=â ý> §m>"¿>A>…u>0:—>-½o>§ÿ=ãÍR=èêL>è=¿X"=×=‘>/Ï>Ì>§Ùg>˜9Ô>+=õðN=ꪩ=ôXz> ’+> ï>vÑ>óŽ>ÖJ=÷Dž=õž=ïn=þα>›ž>#bú=ëdõ=Ó¤ˆ> -Š> -ˆ«> gÞ>ÚB=þî -=ü¯~>j=½¨_=çF¿=ì?=þæ‘>…=þ•=ôî@=ë=ê3‰=ø&> ®$>=“d>Nÿ”>1Ì>É3>?š=ù¡> ¦>6ðo>& +> R>=Ö:Ÿ=æÿ>U‹>1 =ó\‹>,ê>cèò>‚qÍ>>RA=ûWÚ>¡¨>@'=þüy=÷2¿=ç_»=çŸÑ=ò8é>£A>VY>ï¸>¸e> ½>4¦ª>LO>+O›> îB> L¦>K4=öŒµ>*Ç>´> àT=ó‹ç>Wd=ÝÛÓ>>Ó>²>!².>Øæ>,tÚ>I4>M·Æ>=_ÿ>(Ä>«ï>c‡>#A‰>.K>£ð> [=½ð >Ð> µ>Ò >! > +Á> òô>¾$>/n>ZÔ>ˆE> ãZ>,ˆœ>k”ß>ˆ÷&>]öa>1p>2 ->—%=õX5=ßz÷>¡Â>ê©=ýÓÒ=åye=ÙÃ=ü±œ>Ê`>»4>(ú> ’E>îJ>sà> ß’=ÿ¶Ž> å¨>)#>RÍ>®»>*ßÖ>0{%>Z€>=Ñs>ü=ó²y> Â>Ö=Òõ -=Ù#>ÉS>,>>u1=ðpÆ>Q3>.A> 1¶=ë÷A>_]>?'>pù>Þ>½>a>>ÛA>äI>H»>Ô¬>·â>p$>-Ÿ>4¦ß>IN><0> Yè> .ä>}>:c>æ>K‚>;>%2)>‘L>­êU>˜âž>aÔä>'MM=öín>"á>¥=Ü=Ù%=ãÓ>#>37><s>)òM>0û> Œ÷=ïuµ>Ôê>>„>•d>ÜT>¼:>#±>H%þ><2z>=õ|>iþ>.~x> >ÍQ>#À>!Ac>eH>@£=ÛIÄ=ísx>>Þo>™ ->ºä=õ'þ> ›„>ÅU=Þ÷U=ú¸8=ñ¼à=Ùø> -ß>øž> ýt=ç!¢>:ñ>a¬>óš>. Œ>$‰7>܃=ü÷ò> ƒì>ò$>$ê´>F 0>NŽþ>C>¦<> ~5>,sr>Li>V>,Á­>‡¯>ˆl=×j=ÔŸ×>ëS> ¥>ÏE=ì™·>Pú>>1¨›>4 ”>'¡é> -Â9=é.Ù> -Œ>X>Gâ>4§=ÞúC=¾–·=ùñŠ>B%=× F=Ò˜>?=䇔=×·> -Öª> > …=¨—H=¦Ã~=¬V™=à z>âA>0CV>*p>aÐ>„‹=äÑ=õÁ >æå>žg>:Ëq>€‰>9rD>ø>X…>‰j> S•=·=àý=ï5É=È4=ßáç>.Ã>U>!Ž·>-n>:>=à>?Ýy>1ð>$–Š>?%Þ>T=j>7éé>Ñ>_}>&=Ül=ÄÁÒ=Îþ=Ñ=R=ÿ:=¾›=À4$> ÷ž=þÿ¡>²†=Ü&Y=ò=ý1†>-n>4X^>7ÅY>9µ=ó‚=ðó>úè>1á>&¥Ê>._¿> {Â=÷Ìé> ˆw> ÑË=ëÇ=ê­>k²>ê ->)>È€=éQª>·Ì=þtÊ>0°µ>8[ð>)€>ök> °{>.+Ý>7ßX>-Æê>(îó=öø>/ê=ø"»>/„€>GJà>Y¶B>.å->-LO>#>•>±“> *> ãE>S²>H3> º>/n&>`¾>£•>²`Ý>‰>?r½>@HA>;›U>ð=åE,>6>ïé>’J>¬ù>Fú>T¸H>Yö>C×> y ->„>ëý>”=å—à>ê‘>;7>F ß>9îO>7öÍ>-Ó½>2à1>'Æ‹> )Ö>(Ä>0›ç>L’M>bQk>R¡õ>1®>õ×>• >N>-t>õ>=ó©ÿ>dÁ>šÉ>0è>ø =þe¼>]£>G¨z>GÖ#>=M>%.X> g>%‹“>#M”>Côk>,¬²>”>'Ý>Wd7>…ºç>† ±>[œ9>%Ú >¿¿>!|‚>@>øŸ>'V§>¡Q>¦>"j^=ýAÚ>ÿÚ=ú´—=ÔnG>*æ>JÁs>0°"> -y>†?> ~œ>,ó[>IP>Jè >8ƒŒ>1dÙ>F >'ï[>' -ö>Pq*>E)æ>$$Å>&Ÿÿ>g!>Ï >ìw>;be>$ñ´>±l>(€{>*õµ> Ëç>º>/ X>8XÃ>-ÑU=Þ‚U=Íq>¢'> ÷Z>^l>/€+>Xè>mŸK>0ü">žä>ð3>$pt>ç€>\8>&ɬ>=ÚÄ>2Ía>"à(>›=ùõ>1IØ>;q>!ü<‹®w=Í)>]> Á÷>8ÝÇ>7Ú>>–d>¹=°ÞŽ=Š©%>,j´=ìGµ=¬â$=ÛÐ=Ý5r=DZ=‹tŒ=Ç“s>`O§=ðA#=è/>) >HŽÄ=þV >]é">F ³> ®Ý=àŸŒ>=éZÀ>[û>¾k>õ¬>ãÊ==£ÀÞ=ÚX§=ðEœ>r_>¬~>î[=ÚDz=Ë/ç=ÞÆg>o„>k‹=y]=hëC=|3>=¨Ó># W= áÞ,Ý&>48>4‘ý>ƒÀ>(o=ýŠ1=çk=·¶Ó=÷?=ŠZ¤>%òl>*MY=äˆ=…u==±?>>mi>Ìû> 1Â>¸m> õ&>bbã>]#·>_È=ŠE´=çþ¸>3Tã>;û>®¼>)ûø>=sœ>#em>0ÊŠ>E×H>6®?>=uè> _:>½Ï>ø-=ÊÚû>%QN>>2çÀ>–ä>•Ý>¦ ->,Ï+=ª¼Q=¢Î>(mÒ>‹Z>)–>òª=å°=ÿQÆ>PX>Bª>/ º>bî‡>Qz~=Ý#9=øš8>Þd>'G>0š>1,ë>*ß7>2¬À>9u=÷~>T¡o>/¦>+Y>I}>!Û=ý?ï=çBd=Ô§&=ùÊ—>BÇ>¢‰>5ò>Ì>z[> —> HR=î;=þŠ¢>ÃC>4Pö=àU@>)߆>"à> >Æn=ÙÚ;=ÈP—=üsM>>5>C&=öH=çÓ==á÷=í°{=Õ,›=—Ô=Û·=üb"> n)>ˆå>!U)>3Y>^ªù?Ü>ú¾´>(ˆ=©äó=ßá>8„Ö>T[>QäŠ>K)ý>˜ >4Õ>*ßH>9a~>1r>Œ>ï>6ij>24”>Èh>61­>:«5=ìµ>Ì>2ö>Tð#>VФ>á=þA>  >4m´>-Q> mÌ=ÄXÓ>>>*°Õ>&º\>R>Œ=øªÜ>3> ‹=åG»>=c>QS>qÚ=ý³=áÛÎ=òT >Œð>ý¹> -hU>·Œ=ý)i=ø@ã> ²>¿N>#6&>; >-ç¨>!;~> -Ì>M > -­ï=õtÈ=ôΛ=âJƒ>Þl>rÊ=ÝÌb=¾‘K> ÀÙ>.»@>D¸ç>*H«>G«>ç»>2N>&B­>€º> >$Y=å?·>Ë=¶-÷=ƒŽ§=ÌãÓ>i=öò>!D>Ø>#‡?>#}ª>¶Z=ÉŸ…=øú>_R>`‰> §á>ªÃ>€-=äàƒ=ýË*> ]9>Î3>Ã.>#8#=ì·1=Ëø9>ƒ>>ŽŸ=ÿâÅ>Ô>«s=òCm=ôkÅ=ør!>oå>-ƒC>5Ú¿>B?†>'Œ>>nœ>/¶>¦I>-h>F|>I–^>Cv>/«Ü>î~>q=Ä°ß=ÿ—=äf‚=Ûj“>%ç=ôP5=Þ =õtÅ>)ó>Ž>$>ºM>Aë>,šè>TH=þS“=ãðƒ=æñt>ÀU>>܇>7×±>M>K¸>.¥M>¼=ÄóÎ=·î >Q>*«> @â=õ"=ñó=ðBS>S{Å>iøÐ>Ox8>1>>>'Ù˜>3W >8?Ö>7>âŸ>0'>KÖç>:’2>Quq>aI>…9”>sH>B& >)=ïÜÉ>IÊ>–6j>¦om>Ÿ{¦>r ·>m>Œó=ãÝ_>0¥'>L£ø>6±> v!=úE> Ü>_C¨b>FÇ¥>!¬Ò> -¡d> Ú=ó¹>ÏX>9ÿ>9¶Q>>ð>#Wª>C=îÜá>Æ#>QÙÊ>† >‚¬E>_¥,>Qµø>#yÜ=ûd6> à¶>ÊÝ>, ö>-œ>ªG>/EÜ>¬›>/¨>%$7>Ê>â¹>*¨)>"; >ðì> -'‰=öXÎ>pY>#’Ô>…õ>Ü©=öö>#Û_>!ö>/²>60‚>N0>…‡ò>¨sl>™UB>iÓ7>M‡ >WàÀ>?EÆ>,0Þ>1ÚÚ>K$q>ƒØ>‘Ö·>cœÓ>Oßw>..>š–>$#A>Sy>ÙÁ>¨¾->9>AJ)>(@š>*=çLs=ÈG=ÐÂ> èÞ>I>6>#rL>$ºB>.rÛ>Cìo>(œ>ÏÞ>He>ÔI>ŸZ>v >b >`>åo>%žq>NYT>@#/>`T> `=ÿ]O=ùþ»>(]w>€­>ÊR=ûáä=ì™f> 0+>Õ)>Õë>Íö=í-Q>,ñ>û=öo„>bJ>,í>jÂe> 9>«X‰>†A>>Ü¡>6îù>9iù>³>ÇÔ>-WV>–Ù>‚ý>F„$>i>†’>9>bƒ>-Á4>P„>‰Ï>›ë¿>kð>Tý›>)Sî>@ø>^™=òKþ=öÔÉ> ìð>0|>DdH>ýú>/ç>ƒ}>/œç>;h>X2>¹¬=óc~=öú>æU>y>1n>.SF>>Û> a> ›(>8º=ï!> è²>+†Ë>NcJ># ´>Gn> d>Š>!Ðç>)Pn>%$Î>7=í¡û> Ž]=ðÇÿ>Ä¢>J >ˆ>ÙÜ>1’Û>6ÚQ>?¤a>1O:>K`>NeK># _>ì¢>ˆJ> ¼H>P¬>¢U>'r ->$Å8>h~u>‹>–²©>¦–‘>¤v{>ƒ}š>4¿>±º> Z>C¡s>zòÃ>wV>Œ:>‚þI>Gï.>/Pí>6xô>A1º>Xb->‘å>²V³>‘à>U ¯>7›:>5ýÒ>t6„>žóÈ>£Œ>„ýC>U„ó>:¦>Q=ò«N=ò¢³> ¢p>æ¼>« >Oy>[–>E „>*¬v>ûL>$U(>eÁe>¤}ô>»Òê>~cƒ>&Ô>(±{>,$Æ>)õ>#> Á@>,d?>H|+>Z—4>3¯´>4„>WJÂ>K]>&°®>t¸> >/¾>"Ò>j©>9) >Pâq>b9ê>cT´>3¤Ä>x>Æ>@ð>‰>÷Ÿ>~_ñ>4Ö÷>w>L6>rÝ=Ì$Ø=ù`Ý>*ÙÊ>K;Ó>ÀÏ=ðqÃ>I=ô"T>H>[¯>\º>(Øg>!aU>4>7ŒÌ>‚;œ>­A8>¦³S>kÄØ>I1>S—>6a >lì=õ#>Ï>k’l>Š²ô>ƒ¶3>SX¢>>@>=¼>-ÍŽ>?’Û>„ö¢>ž¥æ>¤ûÀ>¤œ>¨‚>‰JÙ>6rm>5¢¸>#k›>Ö >,Z> 7">(›\>=Ú>B”G>GXƒ>„ìÀ>ˆ–û>YÕ0>0L…>%Ø>L•>'}>7õ>D}+>=>5„>:¦l>¡Ñ=ç .>$ð">aN>T Q>-6ð>Hbv>£f>Q—)>Õr>CW>:×>)è^>:~Ö>S°>_ -F>5&å>þÄ=õ{—>Ÿ±>Që”>\vi>= >%P²>Ëh>&&>@´·>S I>KŽ2>(¢í>0Úq>,Y„> ~Æ>P >‹æ>ã>G×j>T`•>4>#Xð>ÁÈ>ée>3ó1>DìÍ>;M>Q½>hGP>jo>VNç>$.>Øb> { ->5È6>2oû=¨¶=Íq]=ï­>‹=¼Ùm=øµý>ýT>,šÓ>„u> is>i>Z[>‡0œ>ˆøœ>Ð'>„ó>tŒ÷>\1“>\äª>GF>Ž=û‡|>3¬ü>X¹y>Rôô>,qN>k>w>Á >"à_>ª>¥×á>Xü>Xgà>kìÌ>ob>8á>%¸œ>jŸ>U+>@L#>W{>Ñ> ^š=ûò ->#dm>­°>ëÓ><3>/€ >*÷£>s>(?>ÿ—>´> @F>ñ1>*ú>•£> – >à=Ø·=ï£x>>m$>'H>8L4>(Qþ=üeë=ùÝ>dæ> ª> ŠÅ>Áñ>RB>’"K>h:>Jx>-M=ûOÙ=½}=â¿'> -Ûf>(Åa>RLn>I Ì>$k>(d>y] >“ü(>q»V>_ d>…ÈK>šËº>‰4>] ë>0ßÛ>@:>€ =õ_F=ð—,> y“>!„•>.ˆ$>‰¦>£á>'×¾>-[>ƒƒ>)Å}>+ª3>5G/>#Ç>´‘>W<> ÛŽ>èû>Ðà>:^>‹>4Hð>Ôu>a`> e>.>(í®>"úM>r‚>&J> *>ÍŽ>ú›>€ù> -6R=Óäg=ʶ> t>*‚²> îñ>@> #g>ʼn>52z>g®>Èæ>‰³Û>AþÃ>¼ˆ>Îi>âÐ>ó¸>:Ý=>ƒ² >Ž}¨>‚šQ>síS>"Yñ=çþv=¸‰¾> _G>W ><>r?©>vm'>K->&U8>'‘ì>M‡>.oê>Aõ»>2:q>‹ Š>Büx=ï &=ØæÜ>+Æ>w`=ß}í>Žg>“oÄ>qá@>3Íÿ=æ<Ç=³jS=é–Ü>$’¾>=`ƒ>4ZK=û·l=ÑÒ‹=ÚyC=ů,=µe>Æ=ÕÇE>vó>3¥ì>MÜð=°°î=Ê’> 0>)ƒ=±úÑ>'¡'>p6»>‰œ>{ÌA=Ü´z=ÅÁ>þ >b>Jý&>#H4>*+>9¸Ñ>$!ú>&ª>hHÏ>˜é>`^æ=ÅÑ^> >Gü ->d[à>+.§=ï‹=Ð08=“¾ë=‹*>å > (-> ¯ÿ>+¥j>R—¼>ƒF>$k‡>A;=ó1È>b>0üØ>&åZ>ô~>3;±>£ÒB>†L>>û>$ ›>; ñ>Fï0>Lv=é¶=Éù\=Î$o>»W> hã>ûŽ=Ï[:>e> %,=²Þ¡=é¢>BÒÖ>-Vk>4¨•>Do6>Zœ>_›ì> -h=Ü/è> -‘v>=Âù>lÌ*>s¤¨>-Ê=ü=ý3ì>ºf>-Œ¿=ôþn=åê²>Í!>G5*>0pš>D+•>pG>`}û>_v÷>‹à>…²>$i >*=—> [> -ö£>²F><”3>,^Æ>rï>³{>gñ=ô½}>r=ï-=ã4³=ʪr=‚ó^=¥î‡>)¤•><˪>bH>\Â>× ->â>/‡5>-È>Mî=ýèð>‰ˆ=ùIK>úè>$Œ|>³@> -k>¨¸>Ò=ÿ“×=äÉ‚>w.>3¢>KÁ>Hm™> ¯>'ãˆ>f4=é›Õ>5fB>&>²>At§>$(Ë>'–”>€ÕU>Ǫ%>˜HD>[>2‹˜>ãR>!ì^>!?é>Q$>QŠ“>nY`>]“S>Mç6>;§Ú>9(ê>cñˆ>zc>Eý>A_¸>Rß>FÓ>;yº>mÞ>”B>!•G>*§=Ò“u> ")>1Þ>[’@>‚Ô>qª>;5ß>(›>Ó> -é’=ÿ"Ö>³²=îÖ­=ñmn=ÓÏ=êÅ>Ë>Ê> %Û>-o> ¾g>40z>Ëð=ÖÙ®=åª>+>“¼>߈=÷8=ÉQ|=÷…I>4æ=ÐK:=Ò¸=ô-Š=å‹m=Ñv%>õ7>ã>rO>==ÜV¶=п> µµ>ð>» >,*¤>4˜>0ѹ>tC>j5> +> ×=í#c=ñ‹ú>:o=Þ9=ªª> Ç2> a>g¸=úlQ=θB>Q¢>,•M>žr=ÿ*!>ç>VL»>û>•4|>"Gú=ï=ú‹R=þÝi=óŽ¬=ÖñØ>Óu>8ï±>\lÜ>Q¹>/äM>9þ>O> ¼›>s> \o>!ÇR>(C}>N‹>6_à>[Ý>’@=ìg]> ?¾>a'=ûãÚ=㙬>#À÷>3Ì>@Šk>A?>.g^>¼Œ>-@þ>,z¤>EÈ>;†>‚ñ>ôÊ>/GÃ=é¢j>þ}> Üb>ÞJ>1Rã>)Nf>,¯=òÅÅ=Öp=ÊÈ=À€f=ÜN”=É+Q=¡þæ>²p>Ò>@b>!°¼>/'Ê>lï>U”>é>Ú >;Áë>ü”>Ÿ>A†±>0·¨>H„>_>Ç©>8ù@>>Š >2ÝK><,E>YZ>A€½>ñ>>‹Ü|>\ç\>& !>ŽA>2(Æ>í >'iÍ>DJ˜>B­+>=Zò>Lßÿ>/ -¡> -æL>3ëU>7L >%À¿>%Ÿ»> -þC>‚>$c=ù=Û¼>«=ÿeï>›×>ôS>8ß=ö'=ÅÏþ=Óš=áËï> W†>ÖQ>?>MÖ >7ßm>»þ> AÏ> 0i>Ò=>ß> sâ> Û5>e2>,Š.>‡Ä>I> ‹µ>B> Œ>°x>]¬¢>«ðÝ>Ž|l>!Ö5>*">q–=ÉAÏ=ñæÕ>jÇ> ž’=þ?u>:˜=úG0=ù >ô>ŧ>G:–>'bƒ=å¾L=»¿·=Î]ž=æy=Á +=èX‘=é+Œ=ì±Ë=õJ=ßÂ{> B8>/È>°:>ǵ>ù>+Q¨>-¬>/IŽ> ) -=éÿî>Æ·=ö”·=ãî_>¢¬>–é>&ˆ2> -|=Ðb=ì@P=øñ§=ë|ˆ=í¼=þµ>‹n>ÿ+=äê•=ÝzÑ>->8°9>Y˜=ðº,=á3£=÷<=÷Ë+>B!> 2»>-ì.> *h>î=î|v=ÜÈÙ=ýF>þI>®À>Šþ>!oi>%$>5ÉÇ>&´c>'jˆ>!bw>‰Ç>xû=ù™K=Á£®=óï=Þyý=à u=º3%=ʯ³=Ób=¯Zø=¶ÿ=œ*=Å?`=Äöƒ=¿M—=ص>=Σo=—®Ó=†°|=Ä!Š=¾‚|=³äñ=¾ñ;>{>#¬ö>Õ»=óÝé>5B>AU^>$ó>£9> Ös> >äº>/T¬>-lÖ> -¦ô>‹r> ¡¢> >gæ>•=ÿ ,>>Ö >Sv>Ø>6b>ED®>C;þ>5[ì> Nf>Ðx=í¶Ÿ>úy>t=ã1Í>sj>$lÙ> ¬>ߊ> ÞŽ>½Ä>!u>3>˜R> ¸J>¾w>‡> ]3>8K> > Žá=ðkV=Û¥B>§9>`wx>£é >µ¡[>…Ä—>/>¤^>C™>ðs>0 ­>/[>0ð>,>>®>1bÂ>.Ü>›â>Œ>;ÿ„>"úd>Ô=öâb=ùŸH>I>•:=é­›=âú'=òr¨=ÑB÷=©³ü=¤z¨=ªT=•sk=Ífp>~D=äº> >SK>Sä=é#º>|¿> XF> u> œ=ÕŽ]=æNè>dÐ>Ól>÷—=ø0ý>.$Z>)¢Í>Ao> Ϻ>j;>à >à=ç¥S>RD=êÔÓ>Íó>  >>@¯>{I=å>„ >…Á>c9> •@>]F>êÑ>&HJ>1çÇ>g=Ó•4=ݪ7> ¬í=ÛIô=Ád=Þ›Û=ð›Z=øüÅ=þ…Î=ùÉ(>Wø> &> Ú˜>¦`=ó`˜>H+> -ö>#U >"Ó>0²±>+Äx>Ø}> ̪>~"=û\¾=ÿ®2>Ê¡>Ö»=éײ=ñ l>Jÿ>  >2>å£>w¦=íÈ®> f>Á«>ïZ>†q>&¥>*« >#’'>kP>ž>|Ç> c>Jt>;ÚÄ>Fhé>5¨ô>+F >1œØ>*<>%‡›>lð>2ý>÷>pø>€þ>3¯ >3Òƒ>(ùâ>ÓT>&Ëa> XI>G>+¿‡>"&Ò>)pÎ>*ž>àê>¸K>YJ> -Ü=ÿ™¬>L—>U à>vd›>ƒÎ²>v=)>M¿>"Í=> `f>'Ùp>VÀ>4•>:ìA>-eZ> ˆò>ü;>*>+cˆ>)™>7±*>4hà>'á>6¯>2èS>¯ü>@ŽÕ>xuÒ>IÙ>$àÉ>,›>B„{>_ò'>»r>ð©‹>’‘4>=T=ã¿å> +>-÷P>‚Ø>3;œ>(ul>MÀ>Fæ>=R>ý>Ó==îí>A>@V>?•>>Ö>>>=^><¤> úÚ>µ¨>Wî>&kœ>)G>òk> ó>&c¬>(p»>&‡>(]Ý>'¡ð>!Q]>"m>'Â>>•W>%L>)u¼>Á\> ˜Š=ã7 =ãí€>z>E¾r>L{6>(«¨>œ=Õi`> k>€N=ýcŠ=ï!h=ú«i> ÚÕ>’­> =û_¯=÷î>g¸>õ‡> -î> °r=ê€D> nÑ>·=ï”> -qä>¤©>ßÚ>¥>©ç=þÌ°>ŒÎ>)¥K>A³X>?“Ì>;z>¨¤> ½> X6>@©]>K(>GÐ>Dé->4>-ü> B> -žì>)^y>8¯ > 9·> åW>ho>nÆ=öÖØ>M¼>Òœ=ðåj><å¿>N~È>©ã> w9>90>Ù>4Îq> Ý>µ‚=þ`Ã=÷Iå>'÷Å>'¦>@><>.^>&x->F|>dp>-‹÷>_Üÿ>L}>/ '>/÷>™F>É9>#=>&Õü>Jœ>Hˆê>#‡ÿ>*”ÿ>B7K>Jè>)»Ý>"Y>6> n>¹>Áô>)Í°>lý>|>ê.>#|>"š >ïë>xI>1ÍN>97>HñÞ><>¾¢>kÜ>1;–>0ÆŽ>)f>FiH>Mj >3gü> -} -> -ž>A¥>*T‘>è>;ª>`F>>#RÏ>41§>;9+>8§ >> ~>&>)Ž>&ö>‚¶>’=ü–R>> N> ¥š=úƒÈ>\>¸> ù>Î<>Ìx> ¨ê>,þ.> üš=Ãü=Ùy=÷‡=ïén=ýŽp=÷#¤=û±‹>ûÖ=ñçe>Á>x–ç>»#ã>³C¢>mže> Ù‘>а>D€>*"Ê>Eah>àç>IE>s!>?k>ŒV>Mxù>cH>tPø>mUr>Eé>" >Ò´=ø÷$=êï>4z>!!>7šÉ>4E>Ý¥=Ì;Ø=ùj>E¢â>ß‚> ú>ÕÊ>œ¯>!:ï>ìâ>$Úz>=œ>LÄ\>,W—=à¢õ=¶sÑ>Ü|=¥9:=žÑm=ö>7DÉ>m…>:IG>: y> ¹+=îÈ>)Þ >/Ln>=Š>G¿m> õ->;¦i>>N‡>'P¦>G\Å>™[“>sßþ>2Œã>Qª˜>>#-> -Ñ$> A¨>¼ë=õm·=áÃå>;<ò>__>6–>=Òd¢=ø¯>ž>«> n=Ë›¾=Éz%=Ýv=ÍêØ>R->݉>¸â=ü=P>€ƒ>lë>#m>¶>€¹> ¨=á•ÿ>ýÃ>Zß>Â¥> q> öú>7R\>@3º>´>°Ã> -.]>,’i>lÊá>C3s>!åÎ>+1>iU>F>I:ù>ZýÅ>]?>`û{>5I>.ù>F >Sà]=á8‹>/À_>Jår>$_«>0ö>> V>X5>>R¾>!©Ã=ãi9>§+>K>)LÍ>E¤,> -'ý=ÊZi>Œ?>=‰q>E¥Z>+ýŠ> F[>)hm>6á$>Èé>íR>]0>;ðr=ì ã> -¦•>œ2>f> |>+#.>r©>pë‡>U¶–>d¶Y>ekÈ>#Ÿ>ü> ã >š[>8°>,Œ> Xý=ö²v>˜Û>´8>‘L>«<>¨>=|?>L9]>$Àd>”þ=þ×y=ÆM·>=è:Ÿ=¹Ø.=¡g¼=É+=Ùo™=Éh=Èëf=â³=äzç> º®>CÞ>"í{>>â¾>ÒÙ>€ =û|¾=ìЧ=æͬ>ñ‘=ìô÷=ÚêX=ñp> «+>%~ >&g>%y^>>=Ü „=§ ¼>‘’> þ$=ÜŸ=‘S¿=ÙÛû>B„> «h>Ò“=üž¼=ýV>á–>eÒ>`Ÿ=öË>é.>ßQ>°†>Ø>Ù>+!>‹‹˜>³v9>©>~ÙF>ª>8>à>l=Úz¬=à»>Ï2=ócé> -×+>À=ÈÀI=ÇÂ>Àß>;¿>·”>%úð>Ýy=Í¥=ö–{=ñÃÔ=·v =…Åô=®g6=ˆáñ=À7+=«$;=A[Y=Q=×ìë> ƒ©> -=¹˜=Š‚©=<;Ç=mvÚ=‰XI=°I=ÒÆ1=ÞÝy>äØ=Ëõ=Çæ`> ¹g>G‹=Àß=ªy?=€¬1=…Ï}=©ÿL=µÞ¦=¢(Ë=¹Á·=̨ç=É(-=ÖÊU>°—=òY+=Ù­=ÊÍ=ÝF2> n>!Òö>äŒ>(7T>,B¢> !¥>žH>*Œ7>')¼>)›è>"–í>çx> @>* ¿>*‡À>#oî>"—ù>è]>d> qX>'zˆ>0ð >!äX>; w>IǨ>0Ü> V.>Ÿj> M>†a> ÜÅ>(S>vW>¿6>-(±>4É->6tç>$„> $Y=èàX=à`ë>/Y>43W>*6>ªå>%Í™> -@>ú]>Gß>Bä> äw>bÏ>Jÿ>*d>>9=> Ú<>Ix>8Ô>N¬>:2=>$3½>5[Î>ÆÖ=÷†…>Ê >4«Í>4Øy>.X>>#Ð>Mñ“>:\%>¼é> F¡>5‰L>+Õ> ‘Ç>È„>(1e>™o>'2Ø>:âË>>6y(>=å>; í>6*‰>5B>)ïÞ>,±>3> °>´q>"'ë>œä>žî> Z> è>#ð>- >.Å]>àÌ>Ð<>._„>„÷>)H>%”¸>¯P> Ê>†Î>+H>+þw> -)>#>N$=Ø ˜>NM>.ðµ>-sÙ>ûã>JÓ>=æ> Ý ->P®> 7ù=ò ð=é"B> =ôËi=ÖÍw=×.9=ãúÞ>³>Ë[==Þ/À=á3 =¿À3=çÐÇ>“4=÷¹ú=Îõ¼=¬ŸÔ=ä®=ãܳ=õ·> í=þ»­=íŠ>‚›> Ú=ñl¼=è5‰>’.>ò=ýÅP>áS>îð>ÉÄ>1 >H ->:I>)ð$>>D¿>;™Õ>$j\>$õÅ>9AÀ>`æ>!ˆ>:Ÿû>%Ý0> >þ>º„>Bh>«¤=üÖZ>öœ>M=äÔ9=þh>‰Å>àÎ=Óµ =Ö/]=ò{Ó>O>D†R>’07>«]>€xç>²J=îUu=ÞÇ=Ýü`=ÓØ¥=ØÍq=âÕ`=¹—=›G„=Ö6=ðÄ=ÓX=΃F=ò`¤=Àxž=ÛG*> œ> {÷>µØ>ð> Mµ>0ë.>4q™>”>V¦>ê>}0>AŠ>/n)>~{>›L=ýì>0”> -×ú> WS>!v=ùè´>úz>Ã1>†>ì >/%e>3©­>*N¡>%Ê©>'Ÿ>>3qî>+k—>1ìŒ>0ô†>I­>5>>$Á>„Ï> Ý.>¾w>¼%>vN>éh>#‘5>ö­>Y_>>-k>1é%>"›Û>p>ýW> ̺>z­>ä»> n>Ú‡>#n$>"ø>”A=å=ï=Ê!§=×ÿ©>É> >©> *A> {>²>'ê>55 >JQ‡>0«‚>_O>"‚>­> -¡>¦=þ#K=ýá•=êt=ýS=×*Ä=Äщ=âÈ¥=ì9ë=È©P=üG=Ñ3Ê=é©Y> »R>Ûÿ>Ë>æú>,ä>[>ƒ”>#Ô=ìs^=ãU·=þ£=ݾ=æŠê=ðB"=ëí¦=õ2=öQQ>ßý>Á˜>X>é°>Š3>#×Í>/Î/>#V>þÈ>y>¡.>,œ²>"ød>ÕE>y²>#©L>!½R>5›>çP>Tp>Á >Wr>e>Ç>#Ü>.">5Áp>4>1 ï>üN>ä°>ÛO>@1>Óg>b>&™> &´>w)=ã?=Éßw=¿ò=ÖðY=ÍÒ=ËÊ=ábw=Ö„/=®¦7=Í•ò=ààÍ=È­Á=Ò$=æS³> ‘=üö¯>­=ûÛé>½¸>¦ >Ýh> úÓ>'þ9>Rt=Ývˆ>ß>Uf=ê·'=Þ™=ýæ>Ÿ>JR=úÌ/>¥> :H>!ƒA> Â> -K²=ÿSF=éø#=ðg>(ñû>3­>$>0œ>¹>cÄ>]X>·>$˜>6:³>-Hk>>R>pË>‹>7r=>,º>aè>å¶>#×I>'ÏO>!2á>9 Þ>3na>6h\>%Ô1>?Öi>$]›>ÉÚ>r >€Ð>$ª‡>!Ï>B^>Øn=é!Š=ý5Ê=ð4«>#þ>‹â>f>%þ>9BV>;— >;Çr>$Ž>¬³>&z>$I³>#4T>Dåº>-#Ö>,†Ø>>Hë>/Ó>Áƒ>„A=ý4±> }> ot>$Ïv>!U>&j>*Ý>Ð>>+µ4>´ =þÑ>  À>$4>J2×>–£.>¢‡°>†•>Ž-=Ú˜=éç>Zr>L/!>],«>4sª> 9=ðG|=úƒ=çµ7=úáŽ>ãŽ=äF­> O6>=¨·>M—Ã>Ý=÷è=öT±> ¹›>­>T>Lê>f>%8l>ø>/Îk> ~s> s|>1©>Kâ\>R,ó>0ŸŽ>õ=>pw=Ô‡»=Û -E>æØ=öZÎ=ò Ø=ö=íÚ©=á*ó=îQÝ=òl>׊>¨•>‰&>È >)”õ>+DH>pUj>‰ìn>a½à>Ÿz>\¥>:O> xÔ>²>¤P=å(z>ì[>l=é`=ëCý=ù–>W> ->Cz> \Ü>£Š>‰>'õ„>¡$> U>F(>uB“>Sza>!~N>XÜ>3w7>c=ýå[=¾à=Ôk—>0>*€v>ù>}-=Ïóñ=èÀ(>êÅ> =Ó7ç>›”>Ñä>X0>ŒQ=³h¥=¹½=µÉ1=¶p#>Ò>¨*>7ƒË>B+>Z™>T@ö>AVÍ> A#>/ Ž>6í>>:lD>,©ú>4íà>2>¶“>J>=-g>E>/E?>º>´>0 >2^¸>%ð >=Ã>/Ñê>B]>1õN>¬>'>Ÿ > >+ÚŽ>Gfø>v œ>Y0Ë>)XÐ>! >< >h`p>[ê'>;®>éK=ù¥Â>vá=êé=ÿÖs> kô>åu>d[>}>8„>Hù|>*}>-F>>1—>*ëÜ>?í> ¡>#·”>'}$>!‹>Ј>ž¢>6>8wR>K:·>C£–>°ÿ>–n> Þ¼>)Zƒ>vâï>z~Ê>Iîï>Ó>wP=ñ@ž>vÕ>F¦ß><4Á>=L=âã=ï¦=àX‚>j•>6=äB=ô«¢=÷U>d2>ò ><£>±I>"á½>Ö> ¿>Fõ=º¯=»ö> -cý=öOú>¾›>}3> Ï> ‚±=”€¿=äèg>"›>6 d>þy>4bÍ>^5]>yïá>jêO>O×Ð>S³©><+=êó(> -G\>¯î>‚½>A9?>;†]>‰ > Á#>UÇf>N¹><Ï­>,Pç>%>e>Jøå>Ea>'CC>1­>ÆÁ>n.>Inü>_Æ>3XI=çÉÓ=Å8÷=õAõ>"Íù=ÛYx>Œ>Th=ÀÀÞ=§¨B>*qè>Tè>DöP>4Œ>>’>¿Ü=ýþ…>çÈ>±å> 8z>>TºŒ>=Îð>\1Â>T+>@ Â>J%>/‹>'×™>¤>Nñ>"Y>1Ž>A˜6>H”>o=>dä*>_gâ>Ü>&Ù=ž5ð=ð̤>EgE>t¶È>†Ø=í-D=íÛú> Ù}> Jê>cà> ñ>wþ>.f¨>La=òµ±=¦F>5ÏY=Ý£˜=éÀt>Ë>DÉæ>]]>O¥Ê>5Å> '>+- >1V>MI=áªh=¼&>íé><ÂY>7Y>5ˆÈ>F“—>8Ô¤>?s•>XÒç>dÐÒ> -Û‡=·Õ÷=ì >ˆ`>p>)±•>ý8>hb>kk=ÝM_=æu=ì°Ñ=·ƒ9=3;´=¨<–=R¹=`ž=´Îg=úC>2²> -ŸM=à$ë=ÊPÄ=€þ=˜nÝ=رü=èN_=©&Þ> Ps>þt>³Ù>¨ž>è½>²½>á> ~ö=ý=ôoe> Lm>]Š>i=ÞÞà=êÐÐ=´—g=ÍÕ>å=Ý+—=Êb¶=–a¿=¤ ¸=þ -·>UÅ >S(Ü>6à)> §=ÿÈ£=óGÕ>ÅB>UB>'žž>C¬$=Á=ï<:>X&> Ѓ>.>®>$=Ä>#ÙÔ>›º> y‹=‹©„>ÁD>QÉ>>žã=ýÆ]>º%>¦9>Ôd>C÷>Zø>.í£>%ý³>û>û˜>„¢>ƃ=÷š“>¾a>(”>2¢ž>#Î’>¦j>u‘>#>([Ú>8> Ü>%† > ñÆ=èÉŒ=×%å=ð¨»>ï•=ü+…=Új¡> ‡S>)•¡=ðU¸=Ø­k=ÕzÞ>yð>*|->/^s> ‚ß>÷‡>{/>3`œ>"œ>n>U*>…æ>(==áœ<=þÍC>Ðþ>a/>AûS>T=œ>;Y€>ç>³M=öƒS=ÿû> -¯>"s>4q=íù¶=çÁ#=Îüe=ýÝH> ž+>L=ÿf,=á«h>!gÜ>ç7=ûª0>3>7Æ!>8÷ß>s> &Ó>¡Ê=å9¨><¬p>EŽ>2Wã>#¶ò>+„‡>4>™>/}¢>,i$> -„§=Ñ„ã>$ž>;o`>*Ço>(]‚>8²ï>C¶>%YW>,ìê>”&=üñ–> V> W©>È>Nϸ>d'>?T>*³=õ| >ª>. >@H%>I…>Y~5>PT·>#“¾>Ø>;ø>-y)>#ÒÐ>1di>La>‹>EÏf>?x©=ÿuç>½”>ÛÁ>> Ê >è>Ù>Cï>ÆE>T>'ëâ>N)ô>x•D>Vï> C>r>(¥Â> G<>äë>>q>·a> ô>,>>¿¥>W{> >‹>2>A>#æ—>É>!>6Õ >_‚N>>KQ>$?Í>r> ^2> Ýè=ãp«> Ì÷>Bô>.ç´> Âr> ©w> 8Ð>ÒI>(io>´> Y>£å>&?>Æ~>=Ã=Óq#=¾9 =ÕÁ1=ß‹7=×eš>3>”O>k¶>'Ÿ¶>%Á˜>9g=Ò ë=С>@â=ÿö->T«=àQç> â>†‡>+÷ø>3ID>2 >Ôp> ÂÂ>¤i> A>(ž=ð§Ö=ª„=`À=§‚=ß/Y=ñÜ=îô¸=¨@Ô=·¸ç=Ðû^=É|‹=°ß0=ŒÃ¶=´=²I¹=½•"=çÿ\> %>žÕ=ÍN]=µo=¿ÄÔ=i"=,«=?%=ƒ}€=§nK=¤y=³ž=Ãáæ=í<>"9C>N1U>P°ò>Šú=âa=º=ÐãÃ=ôƒÖ=ÿ Š> #¸>db>£U> †g>^>$Z>©ï>-Ä«>&¸¥=ýÆ=ù³>'#l>ö/> -*> -cG>(s>4î>G>7d>8T>f,=æi>?L> )þ=óüç=ü9¾>Èj>Ú>!Ó>wë>1û>…l>Ñì> ?>†M>hT=ø¶“=ݘ<>Õö> Í>4?> º_>„Ñ>r–> îŽ>#p=ÕÇ>R<>üB>é/=û×=²áù=ÜÊ‚=áa€=Û!í=ÂPœ=Ã2=ï§û=èãv=ÓFŠ=έÝ>˜°> v>!]h>x–>bœ=þèË>q=ð~@=ØM==ônæ> >>só>Q>-©>¸M=ûÝÌ=ë—›=òÅ*> Â>÷1>uÍ>?ëŒ>.2^>,‡>,­]>AÂ6>6£3>,Ò >5î><µ>9ÿÑ>2i >01Ö>3t>I<Å>C<Á> PÁ> O>‹…>"/0>5+*> y>¦>>-Xª>o`>¼x>õ¤>õ¨>ž_>9å°>bƒ>:ÀD>!µì>"Ké>!h>·=ö$è> Vå=þ«€=í°›>Oà>=y>üa>%t>%Îm>Nñ>>1L>+‚>EÂ>/ÿK>,ÈÄ>§>#¥U>9+>4/>"ö><Ù>!Šò>DHª>VŸ>:[Ð>"Ób>>#ä&>#ì=>*¡S>*>"z>cŠ>Qi>¦S>&Ù>A=øD> &> -Tõ> R>YZ>—Â>OÆ=ôHk>Ç>dH> ñü>#ÁŠ>CV0>\ºì><ÿ4>šÊ>JŽ>FÂ>9Û>š=Ùõû=ýº">†=ð";=É‚‰=øöò>+é>2¢û>/FW>´Ó=øÁ=ð|Ö=¼H«=Ëv¼=ý®¡>³>ùÅ>òc>½> mº>Œ3=æÒ™=ú7+=ìÒš> Së> ’9=ø_=ÿ G>jå>ü>!¶V>Áe=õfÐ>éÁ=çÝR=ܹc=Õ†T=ÜMJ>n%>Z=ç€ä>)˜> V=õëõ=ò.ë=ù¹l>ô´>&¥> p~>_>2“Ê>$HM>.ð>=CŽ>Eãa>&‘Ä>Pá>Rˆ'>or>áÊ>,NO>1ã®>6È>Ë> N†>ž˜> ]2> 6>dq>$z0>'SØ>º=ê=Ön½=ÑŸR=ïxB> =ä\f=¶éÜ=Ë¥„=åÅ=üga> -¤ï>;j=Ö4“=ÿuí=ÿ´>U3> {ƒ>"ÿ>î -=úL=ül‰> ˆÇ>&k…>CË>Ú>´ ->ÇÈ>W.>®d> :G>ËÚ>!PH>2Å>Mt>üó> r¤=ð#N>ü>ôø>7#K>'ï'>'Ë=êªw=û`W>0J†>^°><­>,@°>÷æ>÷Ò>D>ðê>Ìf>ò]> ÈÉ>á>^>>;ð> w> ->|@> ÛÀ>z&> -š>úG>w$K>‹>M<†>º=ü= =ïP?>'‡>¿>M=>$Áe>:z>@Ô£>·> ®>Mì=ÕÀŒ=Æâ5=âþ>†>À>Õµ=óŽe=êó=À×É=ú†9=ý´Õ=ļ›=ðx~=ðòð=óÍò=ã:õ=é-Z=à¼|=çIŸ> ãØ>%ƒÙ><"Ô>=ñQ> k~=è—> -—U>¿å>—Á=Òˆ=ó$å>Àþ>ƒ[>2>U>Fa>ê>'*Ô>m9>f=úþS>'C>ÙŠ>4>5f>W >{k>/$ì>#X»>ôï>Ï>,Î>Ê°>ñ>,Y>-ß=ñÃ>c> -ÿ&>#¸±>õ>8>%ŒW>2ù>“=ñZ=ývæ=ù²V>W=ü¹>às>)C >9¬>;±×>3Ú#>Ð>ƃ>n|>+’ó>¹?=ùÂ:> ˆª>pˆ>ÂM>Ù©=ìž=Û]¶>Ïä=ö"=ÙzÖ=ýtª=ö-=ÖšO=îT±=÷N=ùmã=õ˜Œ=ótŽ>»I=Ê~==ÖØó=ß)=±# -=Õ´=Ö4=£¸=¡=´ÈP=÷b=×÷¸=±&¤=ö°r>Ø&>‹>°é=ûš>~•=ÊX¨=þB >“=î| =ô°=õ7Ø=ö7>" á>JG>>n>&9ô> -ë>VÖ>ðÓ>0[8>(È>Û*=øT‹>¼>#%->gÈ>Y/=Õø=ÄlŒ> {>Ûä>aú‚>pL>Q¾>±‚>“->Éò>fF>Kid>:p>/4Â>Kÿ>¯*> ‹d>DÜ>À >Ö°>X8=ê&f>P>=ù%Æ=Ët!>lh>ñ> ŸÊ>a‡>Aí>àž>9>4:ç>@Zâ>R˜>]¥«>.Ý>>+O>&Æ>ž,>2. ->3è€>>–>[—Y>Gœ>Dp#>4Úð>l=ùÿ>@«>¦?=ãnË=åä6>#U>8Ùg>Hv¬>N]">4‰l>I>æü> -Tf>§ß>"o>> ç·> ôõ>Y>",Z>)[Ï>ºÚ>uŸ> ä,=ðö=Ùgd=¬2¯=´Êû=ô,ø=âê=΀Õ=ï+$>ÁR>N>Jz>9X>8¬Ö>cô%>"=¨´Ÿ>c:>p¬=½Y=°^ö>XK==à+=ó#>2Ýú> r:>À‡>=%Û>FÍž> Ɉ=Âį=ù‚>£½=üAÿ>$4>ûº>ÏÃ>fúè>”'Þ>wYB>a,Î>‹¤>JŸ€>ËY>‘¤> í=±9V> ©w>#Ám>D>-‹’>5®º>t¥=üß>P=ÄIô=€×y=•,>´Y>zÈ>)§>o\>D‹Ä>^í>>åS>$31>@’¤>7ˆ>>/·>D*g>=šb>+§>$"i>1=>X¾>«Ú>S‡> ô‰>$Ü>à=Ë@ö=ÉÍÂ> >>.ö©>CÏ>g>Ùˆ=»Íâ=å))>é>Òí>YP½>!ˆ!=ïT?=çL=Ó•Æ=‹q#=êT„>.€ª=æ?G=†Ë¼=Ó…=˜!=§¦>Â6>û>ØZ=àÓÞ=ä›>å=âh=¼i>Kƒ§>q¥”>=–Ù=ý;'=³C?=yQK=¨ÊÃ=ñç©>"²>^ó>?û > ]=‚®"=“ÅI=¨`ê=b -8=,á=&"l=¡„Â=Øm¶=ØG¾=ǵ=²ÂÝ=Æ1I>l€>dZ> éJ=«¾z=Ûƒ5=ê=³è•>Xå> Ti=êõž=Ì/i=èÿ=´:=¹'=܈>ï#>L‚>9.Ì>‰¿=°Œ!=^_Ê=D¬=–Vµ=Úö2> Ãú>'ÊÏ>$Rö>Œ!>¨!=ü¥=€#=w;}=Ÿ…B=Īà=*WÊ=Žn,=±Ì’=ÇÉ{=ññk=¿Ê=Õš=ºÉ=•V=ÁÜ=‰1h=…Q=‘d‡=Ÿê=ÃK¦>àÖ>—A=Ù„=øFE>êR>?F>tž=ÑÓñ=¾M»=³Ø=ܹˆ>ëí>.I=­.U=ÜcH>ž >(/æ> 9=¾ü7=Íò=éª'=Ð[=·Ø%=Âk:=±­Ç=¯´=õ¢Â=¦«ç=Œ2˜=†4=ªÚ> âƒ=À]=qGD=“?n=Ý°(=ˆÐz=weB=»ùC=ÎÉy=’fŠ=Ïm¢=ðrÇ=àq›=Ū=ªÁŽ=Šš=í/ï=Ó»D=œoG=ÿûp>MÝX>P¯#>8Ï¡>"Ôb>:•=ày‘>5’>[d>^Á=÷X—=ååE>•>ó^=ð”=Ô)=îu=á£Ô=ÑF:=á«ò=Þ¨Ô=Û¥Ñ=Ø¢ä=Õ =Òa=°+ =·?Ú=£I=šÔ>=·¸­=—°=v¹û=¿™n=éZ»=õôô>eî> º1=õ#=ùðª=î&>4e=â?Ë=ò©Ð> žd> -œå>(/>`=Ê(/=Ðp >µ>â‰>”¡=÷0Ç=Ûb=Û>> Ë=¿]û=äJþ>œø=öÒÓ=A–=ÆØ=Í°=®Ô =«›d> Ãà=üÚâ=Öõ=Âù¦=©þ=˜ø§=ú‰>*cÂ>ES«>@Ó^>( M>/Vz>:‚©> $h=ÝÖö> o|>2"ƒ>Zš|>Gë>%;œ>“`>Pˆ=÷†”>}>ï>ƒ+=ð¨*=è¸ó>ÎØ>íû=ýX]=ú•=þ’Á>áÖ>øv=ÿ÷x=ç‘ =ã_=åÝÃ> -Ó=÷Þ=Ç¿ç>'‚>fN>"=ùÊŸ=¥h;=³ÒM=Èù^=ì =òâ]>"Ï^>V>>,8> ª=é¶G=å ø>7Ç>¥Z>Ƽ=ëS>×à=÷Íd=Ö­U=Ö™>ïQ>,Õ>¡>Ö>°D>œ§>-@\>C'(>N–§>6ïP=Ó†¦=Ôøn=ÓË=¶Þ=ºï=ͺì=ËLR>á%>ŒÄ>׿=þ½'=ô‡Ö>k÷=í~+>‘þ>A‚>\Å=à•M=Ü~å=ðƒF=ü˜‰=øÏð>)T>.m>#¯>8¯>9e2>[½=Þ*Æ=ͽQ>øÎ>.½‹>A¤Ç>'Ÿ3=ä"u=ª½ù>Ï>)´=Þ"'>(=ð—À=Ü€ =ÙÉp=Õ}¶=À²=ÁN-=ÚÞÊ>Ð…>†í>̯>)¼>XW=àÉ=þÙP>!™ƒ>î>AÜ>°>O|*>VL[>0ŧ> .—>Ï=Åþ=Ϥ>*ž> ó`>]t>`q>AŽ>%1ý=äa2=Õ÷õ>|=ÝÜ~=û}<>K8>6]>D¹×>!Èù=ú=â ;=á(ê=þ(>Gi> iX>dæ=ú!c=ó#>V)=ê/Î=ÛÏ=æ¼»=©p*=Þdó=Ó¾Q=Ê)=Ù¥ê>»i>]>l>%>;r*>Që‚>>ð¬>9‡Ã>)Šì>i>$Ç>G'> h'>S>‚>!ˆw>#ýV>(>Ä•>ÚC> >¶ë> Ó/>>‚n>ˆ{>4ß>n-p>D‚->9¸->ˆ>{«=ÿc+=î`ß>3J>Yóp>> Ÿ>3/Ð>"~ >j<>€v>xÊ>”I> ø†>*¦u>w¨Ü>qôk>œ·=ç9é=â -›=ñ…\=仞=Å&¬=µ”Z=Ïy>k > yÍ>÷>,>ŒÊ>.Es>6eð>œ>j[>&Fê>£Ð>!>$@>e>+/ß>\h®>v¶è>i9Ù>T=">&žÎ>ó7>H>$A,>OT>FÛŸ>B+Ñ>Aûì>=!>=Åà>6­Ý>U(—>Y”>>=A >+äf>#ÿ$>#SÅ> (A>úû>'/+>$h>?=>½> ª> -À¨>1ñÙ>3èƒ><§¦>Tâ»>v»ì>€ -û>j˜ô>bSú>BÙÎ>¹M>WÂ>‰y> I]>+ð:>Xê>F#×>¸ø>ûð> Zó>)S>"kÓ>(O>8µ•>>eô>tjš>¹“>}Î{>Cy>Ú=ûÜ=> >!>>#’g>;–Ú>A>/PD>¦O=ýWË=Ëž_=óÑW=êIÄ=å[Ö>•M> =â\e=ÎÄS>_>óp=þ[Ö> ¸|>ï˜> -Gl>äo> ;Ž> †ø> H>C[E>Fê/>F&¬>ý>âr>1ž¯>K÷¤>8ƒö>0•3>@_y>(• >?ײ>;kø>!à!>1€>3Ef>"âW>&> c>,Ù>#ö{>(‰Á>J>Ò>Tb?>&Ák> oB>8Þ>R¥í>)>;>—Ê>kX>%¿> ã> –=å›P=ì”Ú>ò=éÐÑ=Û)¼>?³>ÿh>M\N>3—ô>-uš>*êW>.à>Á >nô>:5>äT>Mci>`Wþ>GÓ×=úH=÷+þ=㈱=èz2=òt>¸ª>õÒ>4‚Ì>4Ù>[çÿ>@FÕ>2p>G½>ÙÛ>]M>!ïÏ>½=öRn>5n>DÁ> Ë"> â|>Z>¶\>>ä¦>Í> ÜË=ú>=ýìŽ>É>Qr=übF=ȹò=ÅÒt=餀=âC¾=¸ÎS=äL¯=é"“=®=nê=yñ_=|_s=Š5‘=ª5!=©=’ëŸ=ŸXŸ=À¤Â=}ó®=`ïî=†îh=š"=¶6L=»ì=Í’=Ä#=‘_Z=Ž=Ðk{=¶uV=½Të=ª_=×fo=ÉA=É "=ÍñF=·@`=¼•ú=ïõï=Ýý9=¹gü=õ¼µ=ñW£=æµ=æ -X>8 >ì§>(ï=ûî^=ø=ø€j=õÆ'=ýÅ5=ËpŸ=¹êÇ=Ø|†>^°=û¨ö>´">áÜ>ØR=é±;=ÀÕ-=Û÷I=ÞÎ)>ù{>È~=Ê=Ü`ä=é î=ÛŒb=¤É[=‡Ã.=Š»Z=»Ôm=ô²ƒ=éîm=­:·=š!Ç=×Ю>N¦>B„í>â>0#>»(>;4>%¡B><¡|> P>BÄ>*Œ> ái=Ç·ç=þ>U>þ†=ýÓs=ÐÚ(=ïA=óŒÚ=Ómí=Þ§À=ýE<>õ”>".>%5>!”=öQ=ÄS=ÐEÿ=În=à&à>õÿ>t±>ËT>ó!> #>–>Ÿ‡>+DÁ>Kª>ì>t>µ‘>„=å~=ÅsN=ËFà=ò³=åßu>â[=ôôÿ>ŸÈ>”O=ñ6 -=å(m>ôV>Ä$>/l>1çc>J¢ƒ> —¥> 6>L¢>º€>Å!>#.>$i!>'aC>NO>& -> '3>ŠW>k>.Ì>~Ä>ks=ðP>£O>-¼>.=ùH>X>ÍY>Ýã>•Ï> õ´=üÚý> d‘>%ò>*t>6Ø>å>'¾>‚Ó>·R>2>2Gy><—g>^>F:>_Þ>ü>!ô2>Í^>*d>-bT>)Ö>"ìÑ>Ê«>#h>7Æ> ê> 3w>k>$Í4>c>7F=ú¿d=é/Ö>üY>Vè>º3=ÈV=´“>WM>'d >+½>%>up>„ü>)Éç>3ð>)kL> ¼>,þÙ> f> èí> -ø>¹n=ùÂú>F/=ïô@=Í'8=õà > ÎH>%í¦>ðÖ>,æ> =4>©D=û}p>+&‰>î|> ì>NÓ|>Ð\=ÿÌq=Êãf>Y<>d¦> -êë>:<>]O=à̦>!Û>›>#Ut>`G>iZ>½>KÄ>º>1>°>þH>°>›>x=Ýå/>‰>Càœ>)Ñ­> -ÉT>X>ÒÚ>Ôa>,ÂÕ>‚4=ðmT>°o>Öà> -l–>Ùò>$[>¥š>$øW=òª­=Ò×>¥~>»e>:™>2> £¡>ÍC>š>ói=ý¾.>9>ê>(>0ô‹>@T>$(r>M@Ÿ>0ë~>¼'=ê2Ì>ô¡>_A=ÍwF=10ö=ÒJ=þ´Ì>ü,>¾W>å=îíT=° V>5;> >6‚ó>^ËÃ=í¢=›™=»*±>6>h >§ï=û #>—þ>‰ÊÄ>7So> `‚>þ,> ã=ìr†>ˆ¯>,¬>Q.³>Ui>Ep>a;1>gÍ>FEà>6³>:8>><0]>Ã…>v’>”M>U¥ö>+sv>Qq> kÅ>F=½Zù=Í8=ù'Ç=δý=ùÕs=Ío=§ù>7Á>/ÕÓ>#W >é…=ß/e>”ô>8'È>Eº>Ž>%×=óq=î`×>(=©çú=ô‹ >hà=×H=ûó¦=½¼+=ºÁï>ò=ÁÇÊ=¯<-=Ò8y=ÿ8=â[ >7á>A>Dµ>ä=èýÖ=Έ=ßm> ¶W=Ë`d=ÒüÞ=ú\ >´°=ù´Ö> ©>yb>Ë>Wõ=Æ\ =ÉsZ>:=Ý à=ó›†>×>N=ÒtŽ=µWñ=Öÿ­> m]>.2>-×=ûƒ‚=ò3U>:ÿ>â¾==¹ND=)†J=¦~ï=ô”ð>)»> =y£—<ý؈=Qöñ=ÑùÊ>\x=¿J=™i›=¯Jp=Þ>bô=ÛË=´@Ï=¯c”=- .=Mh=ôy>ý =w`º=‚Q¯=äK>"Ýý>-'`>„‡&>t¶%>BNÁ>Ã"=Îø=¥¡å=˜_K=š»˜=³f”>¥ë>[”=ñ«=¶­=Ùlú=ÿ °>{=á?—=¢nÞ=Ð|<=Ù=Z=¹ó—=X§l>"ô=ö0¨=½€=®·|=·^º=¿w»=Åo¼=Üf›>)›=Ê…^>$>U>7>Ñâ=áÿ-=Ó˜=ê{)>{2> Ž>çÀ>ï¨>Õ3>—³=ç` =÷a¶> Wå> ^>$Ù>žT=Á€†=©¥=è¾Ï> H7> Š>;q> ZÜ>Š¾> ->RE> ÞÊ>†Ÿ> üW> °ú> å…> w~>tL> -ˆE>ˆ>&Ð>.Ž>X³>k5>)B=Ù`Ó=Êå>H‹Ü>4Q> ïs>Óá>ç=Ç—â=ßá>P> ó›>îÍ> A>%ؘ>Bò>-~©>3!G>M@=ÿ¹c>m><3=çQ^=ø†÷>nß>%Îx>aà=ï>Nw>>>>=è=ß<…=Ãs¹=Ð'ç>á>,&R>,§·>Üñ>Šš>ª >&g>TI=úh>7¤=ýé=ò©±>ö½><>)/>HŽ>8 Œ>1ˆ‚>¼>÷j>¥>mH>-v>Bu>òi>..y>.*s>.&r>."q>.>²ï>#>f> ž7>j¯>fŒ>—‡>=÷> Fn>Œ}>ÏA=ãSç=éˆa>$F“=ÿ~ë>·§>$G>;>ËÂ>+‹>*>zX>÷Ë>Ë->AL>Óø>#§>])>FþÚ>þ> ©Æ>%í”>?æþ>1°s>+ÈÊ>)°>,™K>Ê=ñ û=ë‹>g1>Fð>óf>Î-> IÂ>ˆX>ÍŠ=öȨ>p¡>> -³&>Üß>Õ>7>pÿ>*´>ù4>S¢>w¿> ¼‹>HŸ> -Þ >uu>+°>'Z->MŒl>;Žz>>\>D{•>4õ0>9i=>:x>1æY>,Ë>#Já>à‚>1‰>/Ég>;¬¼>ZxÅ>haR>iÅÓ>p¸e>?ëÅ>. -Ý>UÚ>i²Ò>g2K>d p>FÙô>#6A>й>ÔÞ>Ú&>?M=÷Fˆ>3]>’«> n¦>è>Ï> -Ì>3sN>Bâß>+ð“>#ŠD>íš> ÝŒ>_=û!Æ>Lõ> q>ö†>#,:>²™> -4[>)Ÿ=ÿ¹=ûWÜ=ëÏI=î‰0=ã+ƒ=Ó£†=Éo=ó'ˆ=ø”"=³ÂŸ=×Ð9=ô´,=ü¡ >qê=ý±Ñ=Øg4=¹NU>B>XD9>0‘>Ë$=ì¸!=êÀÖ=â°=¦­=1Û=ô'ô=Ú”ì=Ƹz=Ü£'>» >½=Ü:>ï">4m>-ù=í®">*/>\Ù>"«¸>ª{>!%=ÿ΂>Ø -=àÏy=ØnY=¾l=ÃoÆ> ÷ >Sv>g¤=ߊç=ò> 2ä> áÑ>->“È>+¦œ>5<:>4%Ž>)7U>s˜>'ØŠ>'o*>æÈ=ûÅ=æÉ´=ôÊ4>4\ú>2:×>*@¬>%"D>iA>u½>;>ûj>W>!ØÓ>Íú>dh>* Ž>è}>ä˜>æä> ù^>s> -ý=ëBÚ>M†=Þ‘Á=Á¬<>»ã=î°;=ÀÖÈ> ò>.w> 2'=åÎÿ=܇¶=ïSî> †F> ¾ü>,x/>;n=ù`¢=ÇD_>"²Ÿ>%¢¥>èä>} > rì>à9> -…ë>ý5> ;‰>qi>³~> ,¢> z >6 >ÆË>->&­ö>;Á>.w¸>!eq>‹«>Ñ6>YZ>ôÂ>¤>K,> ;á> -’9>{5=ö׆=â·=ù„>(ä>$çù>È5> gG>ì“=ú -`=Ñv"=ê >âW>,>.?f>’á=úµÈ>q•>%õæ>-Â>Z‰>ç>˜û>)âM>/¬Ÿ>4ó >7î>ùI>Ã{>WQ>)å>J!>JÖJ>4™->ñ> CØ>-ê`>J®Á>D@>6,Í>0P©>1È>‚r>y> °>êŸ>!^=çá>*[> ‹>·Æ>z>€õ> ÐJ>#üñ>B‹Â>8‘÷>@ B>3d+>H>‰t=ô"W=Ú¹ã>?=çǪ=Ô.=íÇÇ=ûw=èÇ™=׋E=òMƒ> ¾X>Ät>Â=ð®:=èÆ>!à>â3>%®> ,×=éq=áÇ3>tè> ¿s=àçØ=µÄ"=ÛgÙ=­I=ÀP=âÁC=Ü»g=ÊTŠ=Þ‡°>e>!ÌÅ>"B¢>_>Ý$>Ö^>øÿ>o|>"Ð;>dI>9>SÞ>ɉ>õ¦> YÙ> N> -¿¼>Åš> Jþ>7¾ >+l?>…h>%?>,[A>#Ð#>óˆ>K!>Ì7> „¿> âö>>Ò>Â>K·>L<‡>J:7>:j¿>=‡>&µË>J >0å>0‡>3,.>)Ö>#Ã:>5Çr>Qã±>EiA>,Ð>0ÑE>SL0>Uñ]>?½\>6þ;>1§ù>Ù<> -æ>Ñ>êÖ>L¾>>Ëu>C\ð>Î>Žv>'=û>Ó > -&#>íX>,â@>*ë>^ >bÃ5>?öN>*¾>(5y>•>us>r>#AÈ>•4>1¤>OÊ> C-> =ÙAÖ=ÞŸ»=ò_=ä1Ø=ö>H=êX> ¦>Lì>x=ÿÄÊ>Oè>6˜>Vc>²Q> -¼>÷3> ©3>ÿ´>±">`V>û=òï>)2>!!ü>&Ë=õxã>,=þ( >û@> ǘ>Ô>[->â‘>6>+la>6¸3>¿¹>Só>%-W> Ó>>ªE>,`î>+Ó)>-M>)¸A>[>Q;> "¡>ì'>"I>0&->'y>o¹>+V>!¡¿>’h>?H>' ><ð>+Šž>2qp>-8+>3½> -;Æ>i>¹>b> ÙE> &> ïC>ñ>ðz> *ç> ÷ö> ^z>×ã>Oy>Ìñ>FÁ> &> ž >*>6=÷ÙY>Í >cr>£œ> -n>D¦=ü-ß> î”>Q=õDq>îj>Z+>$N>/Ý>W>R¯>ì“>%Íç>Ì}>8> Á*>3$>¿Ï>Òî=ïão=¿ì=ê•Ž=ìSâ=ò:(>œ¯>«”>A‘>¸‘>'9Ä>-Ê|>„,>åÝ>6û,>G«(>.Q>2—•>+Þ>Nî>¦ÇD>çQ{?èÔ>ŽÍ>Y,>À=õÏ>Ó±>=>` >$Ì>F–Ä>Aøi> K¢>Dî>#6E>üz>/C >ž›>†í>"Ö‹>- †>(ßÂ>:;Ë>>>.—>Ê(>#á0>!’Ë>˜> üÙ>u=ÿFI>ü3==ù =>2µ>=áA =às8=æ -´=íx=ûÍ> D@>${>÷†>N>{>X…=ô*=þÆ>™\> ¤|=ß'ƒ=ê?Œ>rÁ> ÍÛ>>!>}>5¨d>2Yá>$!>ƒä=ùÇô=ì î> S>nU> «û>©†=ý=ûcK=ý×B=ºAC>Bˆ>Ž=»½=á7K> ¥>òW>>\‹=êÝ4=û…ë>·®>,QN>$—>rÈ>2=‚>&÷}> [ã>*uò>,ÊJ>A»“>$B >pÑ>,Õ>1BŒ>« >H›>7h>5%»>",³> ]5>Ž>"¬\>$šµ>%Êñ>¥>x> ŸF> yÙ> ºŠ>Iæ=ïÝ>Â\>ax>W5>Á$=öÂÞ>ÇÎ>1‚>R>2>ŸÏ>: r>9 ->?m²>*J>n->õn>BG²>3>í> -ª²>"ü>%”>(*Á>‹>¦Å> ±ß>cÝ>.N>ëv>0|>> èÊ>QH=æÉ«=¯kÜ=Öôþ=ý ö=κ@=Åî=ù=çÐÔ=ç¶ú>9ï>œE> -B9=í÷¿=îA>\à>àj>tT>]+>³¼=â~Î=Тg=åtÙ> –!> äÞ>è>à]>a¥> Z>Jù>*š„=ù@Ÿ>“Š> -Tê=©”~=©è•=âÓ`> °ü>–Ú>Ë¡>ºª>8>%Ûû=ûI=¾þÊ>\~ÿ>n\”>B"=é§U=¯.Ý>ç‘>æ=> „Í>(0;>§Â>Hb>V=üLù=âƤ>ùŽ>+Åx>Mç¢>,ÿ=> ni>ÒÞ>>Nº>Hž>4¯>>^Pë>vy|>tc>Y:{>C ö>I1F>;ï±=ýþæ>Lô>Lƒ>.0>aoÙ>G@>$~Ð>O‘>JB>0˜>0>A÷Û>>/>#üü>Œp>+<°>,Us=Ñ’§=à˜ì>&RÎ>Z˜}>\‰'>UŽu>;gR>cº>[>"±O>*¸ >QÙ>.o‚> ½ >) !>¶{>|¨>*€>1v =ÏèÕ=Ïîn>±A>N‹d>-e®>f(>QR>Kì7>b(>Rn‰>c”¢>€bI>@*N>$“?>9Ð>`Èò>f­&>É>Ì>!7õ> T >G">/™>[ñ>*æé>(ïu>-kÛ>@ë>#4> ÑÇ>.ñ> v>6í>@Éí>>ì>7ì“>,> -×a=ù ˆ> -I8>L´í>f¸'>S>.Un>'’P>!h>%ô>ÿ/>=åA>CÃQ>'É> ¥]> §Ä=ù¯ =á”=Ãk=¦"8=ø-Û=þ0u=ö9W> -(0>m³> xö> Hž>ù†>CI>.¥g>(ƒg>Ϭ>b\~>Mõ$>= D>8-„> À#> ¨Ò>;ÆË>aQ·>A?Ì>ˆì>eæ>J…=ÝA >•Õ>6p> w>*fë>P³Ž>9@B>**ù>$Ú>2Œí>JÌ4>,8> Bž>ët>ñ1>5̬>#B=ÕuI> Jo>W}=õò=Ñ ÿ=ã­>ŸB>_é> 0Ù>î=÷u=¾é=¨=µä=÷Ë>&D3>Nwí>Lë°> ¾N>Ô=ô =æa>Ôr=ĬÕ=Ο=ë²8=âüA=À¦b>Ó‘> @6=ûçg=Ûу=´½å=Ðå=ÂC=ŒÑÐ=£ -=¨3D=¡Ø<=œ´=³ƒo=ù­=ßá:=Ö ´=ï0¡=âû=ûJ\=çãÊ=â÷> º>4G>‡[=û6Ò=ü0¨=ÚÎÔ=Æ+=²­>=êJÍ=úõ ->9¸}>@+ˆ>(ü€>Ðù> pñ>î¾>¶¼>µo>ç7=Ù¾~=éä=>]>ä"=¼ g=ìì7=ûLT>©‚>"Ú1>F,>ÌH>é´>M> ®5>'õ¼>,nð>"“ø>iz>%‘Ñ> Uí>Ö‡>†ñ>;>Y>%WÍ>|‡=÷ ¡>æô>²ó>¦~>Ã>5Q>c5>|>1Z`>9  >0X®>1iu>ú‡><k>Sל>g"=æh>7,“>Fª>'‰ð> ë>þW>'=è‡-=á±> h>*3=ñ\[=Ö‡r=ìbæ>9å>ÍL>»m> _È=ÞM=¸†É=ëwŒ> =>ïª>&/ª>in>™´=ô%‰=çjR>K³> Å(=ÊUè=ÆÕ -=äÐÓ=é’á=Ïc -=Ò‚7=Úa¼=í‚=ïÆÂ>º8> £Œ=òGÃ=ãlÈ>Ö>Ú1>²ô=áÔ÷=äLˆ=ÿï’>F4(>6R >(:å>o†=Ö<Ô>ý|>/Q¹>2‹>á,>Ã’>K÷>$À>œ³>Ë:=÷æ¹=å­†=çÇ=Ýç°=Ó4ê=óÛ‘=úó,=÷¿$=äË=ï>ÆÜ=ósÀ>Má>ÔE>ñU> %Á>'Ö>¦ >Å”>q>_>ü>[†>x„>"Ro>"=ð›>A'>¯}>Z›>žW> «m=áZ>É#>¶H>`þ=ØÈ¢> úß> û>¼À>\Õ>Ž>ב>+H\>C´ý>JŠR>+û£>®Ù>$¾˜>‡> v>y©> üœ> -ÔD=Ûô™>ÌÛ>mí=ÿ*Ù=îoQ=ÌdP=ëL?=ýd»=òï³=æu¯> -›Š><:>>Ø2>4* >!ŸÒ>%^>'Q—> §>”ì>.‚^>ì>!ž>"¸.>Áü>¡F>-}> ­ß>(>$åþ>+„>$89>:ÐÇ>"Z%>8ÿæ>V¥Q>WÄå>0Õî>+x>:m‰>2ig>%>±> Y¯>Ú¸>/–ä>" >NÉ> ɼ>Ü”>µP>òZ>kŠ>*6>'t2>=ѱ>%Ñ¡>Éü>¡>!ký>óö>&ÿ>Ã>,´>)óÕ>$(>2•­> U½>ò>5TÍ>/É>!‹>0s¸>9L±>"C>çp>ñ ->Œ²>-ز>2¡Ÿ>,\>½>¤>*B9>"ôû>2|…>_>¥Ä>Êþ>f;>$Á§>Á> Þû> ã > ¹>$=ø¦M>É>z>Eë>Ïr>"êØ>¼½>7>Q®>>hV>½>á> ‡Õ>W>!.¼>9ôN> L>)…>ð·>v”>ê^>1P>DzH>WЀ>Ob´>@]›>;K·>K>²>F×I>:îy>‹Á>ËÑ>'G>I_\>6§>­>:¥>$;Ê>Ò¦> ¬æ> Ä&>ôš>UÄ> [>—>Î@>“ª>,§Š><‰Y>5+Ã>!îÑ>!À£>*ë…>/7›>1Ø3>2ð>º[>>©µ>Xâ>Ç>(=Æ>'gò>"«d>1><>×ø>Î>:p>[=òÉî=ð -Á> à>™>éw>¹>ê@>#º$>i‡>>%>„Ã>[û>"Sa>-‘ ->(©ä>#?·>.Ôw>5/%>"¦ï>-l>€‡>ú}>&ÈÖ>,À/>C§‹>>œ> ¤å> +S>>Lž>ÿì>Z¿=ù›=ð+i>]>€q>ô>A:£> -À„>™Ï>¥¯>jÝ>´>JŠ>Í>+Èr>@Üq>M| >9¤m>¹>$=>þ">­> P=ã’5=Þß=þWÿ><›=ÿºV>dS>P†>Ñ¿=ÿü¨=üª=ÿ_$>¯X>$ix>%‡ß>+Ø>!1S>Ð4>‘Ò>³ö=ÿÙ=óÉ`=ðè°=ç4q=Ê;u>(>úÕ>h…>£Å> q1>"f>Eî]>MPV>L¹N>9Ei>v > >5ÍÀ>7Ú>"ÔÂ><¬«>7és>:Vt>)}é>ç>Cf>]aM>l>dñ'>R©>C¯ù>;ÕA>/á€>&Ý9>"l>&’£>*pš>&W> ð5>#6—>3âz>Rÿ¯>Dk>.s´>*à>#éi>:a@>?±Á>"SÆ> -6>dý>åç>2áÔ>,}>Žf>`>1(>5$î>>Ë|>UË>jÆ>?i>kQá>~Û”>P€> œj>IC>òç>*ä°>@ k>:ù>-Q/>%Œ—>1~Ç>G==ýw=ëˆ=¼,=ß›K>0>-A=Øû=µÇ=¿`È=¼û°=ì×ù=þmC>'‹>.…É>­=>h=î–M=ÖÐ}=î@C=úáŠ>Òƒ>8æ™>}W >o©$>=LÁ>; -%>OrŽ>Kä>6s³>×*>+A=>è">AMó>alc>ulÙ>^»…>>ý‚>8’•>C"Ñ> Æd>…>F‹Ï>$>‰ô÷>ƒ>máŸ>Sߟ>KÿX><ç*>[i>ƒ">^$O>1y:>Z>Eô>ZŒ>>>¶\>*sf>V¶d>S…!>:[>< í>:á’>Vãô>€á>Žbs>€ *>=³ÿ> îì>Eú> ä¨>!p™>¨A>(ýÉ>%ˆS>%šÂ>!˜ç>fõ>Šò> `Ò>§>åÙ>"Æ>G{=ïV=ë­~>Œ>û¦>!> ×ô>/YÆ>…½>ƒc>IÁï>ò„>â¯>Éu=û0q> -Œ> -~×>šÔ>k˜é>•U¬>ŠK>tË?>‚J>eK>DÎû>8}>BÛ>AÖÄ>jÑ|>qª…>].…>d{ž>jÁÀ>kA:>0&>A’i>0‹û>8§Q>F»O>iû>ƒ1w>„Ž0>a6k>3^N>/¸ >^ú>ØÂ>#™!>9ÔM>3Ýo>Ú¾>4ô>?$B>?i > iì>V·>R¢>*j¢>3ò3>!“>3r>EPw>8ýÙ>RÔÌ>Bs]>©’>è£>ÍÙ>He>yÍ>â©>¶>•á>&Å>)n>âN>qà>1>úâ>KÝ>ôö>Q¥> æx=úTt>º©> -½>ÏÔ>- s>8¶°>>(L>PL“>IíÓ>4Ë¡>!üž>$_>†@>ª.å>¿^<>•ª>˜“>[$¶>FÍZ>=›½>) ‚>.} >KŒ>gÌ >‰™‡>Š8 ->kÖƒ>î>$l>/ð¯>V¨W>B­û>S]Ý>åž>Í(~>®ð~>ya»>Ü>o>4·J>?/ò>Aõ÷>H>n*o>DþO>7Ž3>#ˆ¬>,Æè>';Á>:¯;>M¯x>j`Ã>\°$>C†&>$Ü;>J9]>2<¶> ¡%>C>C[T>-‘–>!‚b>­+>4ëA>;X>MÑQ>Rn°>>ز>ÈX>ŒÏ>(®Ÿ>=8D>S³­>£ö>0ßß>>éÆ>@Ðä>C¨ò>0à>'‚§>(Lö>6®µ>*··>.”0>]Ã[>yш>hX>Q²>TS>*`÷>1€t>]"> L_>õ1>7!>W>ÒG>(©=úä¿=ÍP÷=žú=î¬Í>]>(‰O=üÂ=év‰=þ\> NÃ>Sö>rcp>‹ƒO>†‹¯>J,á>é@>#Í>_e>(Ñê>f,E>…®~>€Û>_ç§>o™ï>i¿{>;^È>; >9Ø@>)ù×>^n+>¬óU>â—>¢æ>]…¿>7¢é>;ôÍ>7>>5>.ö>1ˆ>Hv>_vm>T©ê>p»©>Ksð>(2?>('>,>C>}G=ðee>°>R¸>¶q>Fa>*6‚>(Ie>ký>÷=û ‡>u> ß> -§%>jØ]>òÞ=ìkÕ>0a²>ƒÃ£>vÉ‘>>Ä/=ùÙ>o^> fÎ>“>,×d>à>¼%>:±²>;p(>4´=>&aà>ò_=æ)=ý-º>TG>44d>Ø>g>`d>Ç>ëe>P‰u>w—Œ> -3>ù>'2>½ ->™>nL> 2s>:²Z>}mx>l‹>NÁ>9¼²>ã>Ç>(Ï@>#ø¯>Å¡>&c>F>? ç>:ùŒ>'l>šÓ>Èô>*Ëo>1> ¡>wðß>zK¹>} `>x[‰>ìu>: >H]I>0&ä>VO·>lãq>s4>`#L>R],>KX¼>9Êá>úB>8>}¢>'Õ>0†¥>¸‰>C´p>vf‚>€” >[Tw>†=é>”¬>HQÿ>*è>=¸ƒ>Q+L>A.ý>KF^>.ô†>ê¡>%\_>@lš>%"Ÿ=ûS•=óƒ=ú¸µ>&)•>KIû>J,Õ>;£J>%B~>|È=öæ+>Ê(>9 Ÿ>Fö±>B>'­æ>?Öt>V >Wpy>aï=ðw<=ôta>(¬ð=Òtî>q°>9>Ü >5‡,>,*V>È>Ù>¬¤>ÁÅ>vµ>iç>'Às>ôi>"áÙ>\º¯>\š¼>Bè#>'z>![">Kj÷>2Ï|>"D>*®Ó>>_ô>97>ôy>"CA>ºí> -¼>©í>0A=÷Jä=æBi=îÇf>Cœ>2ü> -BÈ=ö=e=ëˆ>1¶>"+>A©c>Uׇ>RVY>*%0> ³i=ÿ©g=ûl=øEŠ>&ý>2(g>*»•>,»>{­>Úû>3ë/>L+>O“Ô>7ÚP>5Œ¾>h@=þZs>'¶4>WŒÿ>Gl>9Â>#û>Bc>:¼¬>iK'>‡ÍT>‡i>>qcV>Sj«>Zï >9j›>Én>0Õ;>$S>¨>,5¬>.êJ>Ud^>U„f>J¥s>5ª¶> 5|=ñ37=ûGç> Š³>™‘>0Så>N´f>|Ÿª>œ]½>h´¤>1*S>oa>$ŠE>b~t>r¸L>ZMÎ>Aîî>euÛ>M¥j>Qa>Lk0>2ë#>'èa>Lä>_€}>Uæ>61²>^m>>Qå>]ó> >°>%_>8êŒ>EŽ@>\Ù>U­ù>@Ù~>'?s>%Bf> ~ä>ìd>?I>2»Ð>t4>GÐ÷>"x>÷>9§v>>Y€>Hit>Pp¤>UGX>nm?>x\>wÖ_>lTO>\C*>Br.>'>¥ï>QÞ>KÂe>Q¨¿>; ‡>™ì>v;>bf>ôŒ>l¥>¯>?÷Õ>BÝÀ>'L>Õu>šÓ>5¸Ñ>Dר>DCñ>=.‚>3ø«>8Ã>ˆì>ä&> >7Òã>>†µ>:§ï>9w=>R‰Z>F'>?XW>0Ç>$—i> >%§Õ>"Å@>IÓ>†z>” ->ˆ>;f=>b¼Œ>²h=¿àþ=à[=û >™‹>;Œ±>&“>ãØ>¤ê=áJ¤=ÈHu=évË=þ?Ù=÷*Á=Üßu=ð–‹> ·=ßÐþ=Ô¯N>@e=âê=ú•Ê>®Z>ŒÙ>=>æS>ñÅ>º>$ð'>òÿ>2Øè>U¤ã>dùÇ>U¿_>=ŠM>B}g>@=å>FwG>X°ÿ>@Ÿ> d=Û õ> -él>J‘>]Ò’>R>Ð>7 ,>8˜>S<>9»Þ>;î>?L~>KìÔ>W&×>jr^>b>KÈ">K>^ -Â>.þ¼>ÝI>>>$W> õã>~e> ¨ö>D $>[2}>,»°>)½~>—¢>"6>Û>A>/f¥>.~>@îƒ>_TÄ>xS!>YÚ½>Ô©>Ê>(å >,ÅÑ>Xô=Ü89=ï­v>†v>?ó>[I–>g5`>f²'>]3>Iš¯>?Ác>6f+>Ž>Áa>QÍ=àÃt=ý…×>H¨>ÿà> ÇÀ>bœ>³> !‘>ƒ°> -¦> 5]>!µg>öÊ> ·N>ÐÖ>"˜ä>+½/>0¾>7ÄS>@ž®>XѪ>^:©>E> >ø=õ´B=ÿÔ>x¿>²µ>½|=è85=ùPÅ>dè=ð£6=ñ~d=ûcã=ìï>áA>+‰4>2‰>"dØ> ¤¾=ýâš=ù9:> m9>Ü3>fÁ>²>(~">+$§>2|> -’Ç> oe>Èô>"ý)>>UÍ>bh†>sP>h2ƒ>8G§>$p>X®>-@> 0*>6L>Ú=ð2n>'p÷>=š#>^=Ç>j‚>M&„>Ad[>…´>(p>,¥>-ôi>Až>K2(>+ÿc>&‡”>2o¡>6">)¡5>$•Ø>$·> ñ>C'>4õ7>$hð>7Mn>,3€>0à’>=§&>/´ø>PÆ>% >W}>Û®>'°Þ>*f…> ý{>Ib'>a0:>V0†>Iù >Npa><ø¯>a^þ>^´S>gR7>dË>4ôñ>J[>5’ò>NÁó>J&>=‰Š>6b†>07÷>A»>d¸>N8é>"E>$‰ì>Jê>=nÁ>0™O>-U>0ãZ>5>9x7>]–;>Q‰¶>ZßB>Y¾Ð>>ï£>9Ú°>/ü>?»>f4>_¬Í>6Íõ>>,">TÝD>8áÜ>0ò>S½>á†>8Û·>B`u>"&&>U>&* >5u>4*>#îÇ>/n¢>')´>@g>F3;>0Ý>E,Ý>=ˆÈ>3p—><ì÷>FoÊ>B=->DN>1Ÿ¸>0·¦>2`w>5×>4sƒ>!›±>QØ>|>å%>0Æ>©;>Þ=ì¥>jL>gä>*¾> «ç>0 ~>6!|>?Öî>/ >0Èò>+P>G>²> )9>{>"b=þ>.=ñ¶ã>“>’\> >*hÉ>2˜>2"ó>?&'>A>4Ò>ÿl>6ô>3ß×>2!@>*Ç>.,y>4Í->?€†>YˆÇ>$W;>9¥>D>D¨>%;>#'>-¡>/Þ>CßQ>&kt>…9>:­>Ië‚>-\¿>:v}>,Æ -> på> Í3> !”=éñÜ>C‚> q4>,ó>%$Ñ>ì>»>#NÃ>ç5>é>½b>~Æ> -ä°>šø>â;>š>!9A>B•>›ç=ì‰ÿ>Éî>3‘> ž÷>(3>"æâ>-×G>/~ >!˜9>OF> Ž¢>Ñ,>.8>èë>2®>*Óº>H¡I>$5¥>:ì >[/E>#î> ¨Ð>0pƒ>7ð">5Õå>,„•>+:?>.R¸>6¹>2¶Ï>C¢ >Næ×>>AÃ>@8î>b)§>^†´>zò§>Eüj>/Ì>FÊ>k¸9>€„(>_À>K” >@áŒ>L± ->HM‘>>’ö>5>1([>5Z/>LÊÖ>Nœ—>9ºh>9,>@à^>C…»>Aiâ>IéO>hy=>2N>vfÏ>|¨>„Ó >ej(>Dp>cÕ>w¹þ>_ÏŽ>8À>!ì>º}> ;ö>^>$dß>Òˆ>¿Ú>’<> ^©>!k >7÷>4›ß>* F>, e>]Ç[>pà)>BqG>FY’>0B¨>&7ï>'²>Ge‰>R¿:>=Áe>ò×> -¦>ÉŒ> Áj>Õ>Í>$V> ²ö>R—‡>]ñ >>”÷>Lm>?Y+>7(K>FñU>H‰7>Fo”>JÝ><Æ´>+ >Cé>I£¯>9é¬>0Ò¥>%ă>@:P>B‰>õª>8—ƒ>6ÇÖ>=·Â>YIv>8ºg>) R>6-W>÷> ,Ê>#ž>ûÁ>È>>y[>Cý>>w/>1Ü>-_2>!\i>_÷>-qq>2 …>O¨>6I#>SöÚ>TÑÛ>=q‰>1}Ž>&GB>(Ö>Ù‚>´³>0eÝ>9ý >=>¯>>x%>'À¹>ê>!g‹>#lÄ>7+>>:÷©>>¤>>R0{>bOÉ>l…>Ao>"ýG>èE>$4l>$‹ä>œ˜>#¾>2á¼>6ñL>0ÉÛ>Bþ`><}i>K'>e’)>pà$>P_ú>±W>Q:>†Ž>&]>aÆr>Wë>?*G>´Š>Ôg> =›>'Õ>(´>/ î> é>Û`>‰> j>%qR>9]>;½>!K >#!ô>Œ6>M,>( ÷>'my>%i6>/Ÿƒ>%h(>Ð>¡»>Å>(Z¿>e> F>Ÿø>¼—>-Ùg> 0a=þßó>!> \l>f>3è>2̤>P>³Ñ>׬>Xê>ÌŽ> €»>Êç>¸> £>‡9>F7>@eö>UÛ >'ÔÑ>+Dµ>6ó>By¼>9V÷>#äŠ>1=°>$HS>¡0>.ˆ>2½>7Ø>0 >0´.>(YN> =ÛuL=éª=×ͯ=ö`°>R‡>óµ>"ß>)•¢>&¼>å>0É>&x>/¡>$`^>B´>JK¼>*uL>$ïA>RJ=ü¯>·{>A#>P©>Cq>¶|>+t(>´ä=ß3=ð¡[>1q>6õ>>;á:>A>Dûk> qÄ>b<=ò€>Ún>q–>s!>1€ï>"±³>)¤ò>,ðy>-¹³>!·í>!ƒ>,¹><‚þ>=gz>=m>ýî>BŒ½=êü¢=ù™H>”Ò> i…>qê> -)»>c> ã‚>;j#>-&6>*;,>Df>4n…>$Š«=ñgÌ=þÙ“>jD>$˜¾>Ÿ=ýôL>o„>,W>OH> ÷>ŽO=ç—C> 6t>@Þ>på>¥5>8°I>vÓ>°”>!–«>&Ç>â>®Û>¯T>.]é>a;^>€ÉÆ>[>ô>ÛP>UÉ=ÐÎ=ïY»> ™š> -X3>Q@>—™=ÿF2=÷Ç ->W×>/à]>!8_>M>ŽÁ>R÷>dÚ>#Œ(>9ø³>$oé=ø½O> -|±>$~=ÿVª>fø>"xu>;D~> š…> [>$Ÿ|>˜h>¼7>(¹>OS> ²)=ÆvI>bB> ¨=ä™n=à˜á>»µ>|ß>üË=ð >óÿ>$É>fx=Kkú=‡èr=±' =Þ†¦>>Âü>!»Š>I™>n># Õ>?-p>V¯£>E³->l08>‘‰|>Tq¹>KP!>Aä{>3šº>aÿŸ>gq‘>M",>$~ >WŠu>C÷|>‚=ôhf=ó«=ï™»=ÑÑš>A “>OO>c‰ô>Ž¿>ì½Ö>³³l>=*=ú¨+=éŽz>*>×s=îl€>Õ -> ~¤=™Þc=Ù*â>¦»>Ð=ÞºŽ>* >"¨ö>îï> NI>1’Z>1×Á>²¼>àm>`=ð?6=û[e>FZÿ>0`ˆ>#ø›>Y¦Þ>V®A>Jm>|Ö]>ÈãI>6x®=óÝe>=æ>ŽŠ>òp>P=÷<§>$ d>È3> St>+/>pÑ=ä¯5=í®Õ>}â>¿D>"˜”>5å‚>]Ñ1>i ‚>G‡z>-ó>AÒN>!ÀZ>ôô>ïã=ìò>Z»Ô>R7î>¢Ê><>6ë>.W5>;þ^>g‘>W6>ªŒ=ÞE~=ák=ê#=íÇ)>Fz¡>BT^>&Ùá>Z_=¢þ’=Ó ü> ñÓ>U¿=¸Uz=‘Ù¤=³Á“> Õ_>*3>1>„q>»¶=ç´~>~þ>ã>´>×£=ædç>3>U >Xp©>+I>ZY>E>% Ð>.Ør>-3¼>+ùÍ>¬c> áè> ÉÀ>$ßP>cþÓ>zë†>d÷‹> •©>$ÆÝ>Ðü>Õ=þɤ>„>^=êŽE=ƒ5=ªLD=öTd>‚%=ÿ¾=¥ °=£7”=ÅUŒ>iÃ> Q>0Ï>åƒ=ø_=ôÕ=îlG>YK>&2=üƒç>G›>$Ò>¸>%Ú>0f>2iA>(°1>U=>øc> o‚>Zº³>v C>{N ->>O>[@> ~>ÓB=üiº>M>X0>*»>(Ê>4{Ô>BÈ4>5`t>9u>*ƒ><Þ)>)q> ®>Ì>#é=úÜj>²æ=çÖ=ž‘p=â-n=÷©·>!—>>æ%>.и> Û‹>Ú&>2íL>xXÂ>]ÛÝ>Mðô>7Êj>)¼Ú>WAô>ERø>"o!>ä»>¹=Ôåé=µÍÁ=Ççz=Ø¥=ó/º> ³>”=ܽ2=°±=ééÔ>¾> ƒ”>"ß>©‚> -uB>©>$â²> 50>Ú§>‘->ßÊ>™Þ>¥)> Î’>Ró>ÍD>é;>†²=ò˜Ó=Øÿ˜>G>1=t>Ò`=¿¯=ñQj>)>>Eð=üG\> ¶^>35÷>(öæ> -û>ö>&$â>3ñ>@z’>+2î>-/z>&u>2Æ>iTš>Cøù>f'>L>t>"I¢>-r>ð0> \>š =ô^ >Ó>+C>;9H>$V>Ø>(’à>;Ä>8ÄÓ>3¹¶>6x3><¹é>CÉž>0 >6«>+/>*µ}>=S+>5->'¯é> <>!+I>.²>«~>n¯>ür>!)›=ÿQ¬=þÿ >¦à>4‹³>yø>&k®>8•>-S#>¸n>Ú„>$M>ÿè>+K;>È3>04>CœR>H(Q>-PF>ES.>2•È>ðß>Óö>*ª{>G¾±>F©¶>Ii©>m•â>C¡ >;!V>A‚á>>€>NÌî>DH>8\>.­>&ë£>@9.>EX|>1Üj>"ñ>+ý—>B=Ô>;ÈQ>6s>.»£>">6>&“a>)§&>+=W>:Ñ>gdM>vÒ>rS¡>dwm>F´›>R_ ->E‡_>/éé>ò>ua>(>@>R>-?ƒ>)Å.>80>#(”>*ω>Gt >?–s>H£Ò>Fr>;Æ)>*à>(â9>q–=ëÉ9=í•>dÆ>‘ô=÷@>=A>¢d> ßt>8'>)tç>)”k>"¹i>"8ë>áß>Ä×> ú>™ò> ’—>2>(ÅÜ>7Wç>@ök>8¹}>'”>@dü>3ÿ²>9ø>Q -<>D¼x>H…è>-Hó>ì*>Ö7>J‘> Ôu>)+à>#ê>c>I¬x>G…û><Þ>5->0®>7YÂ>%î>,Þ[>2hv>/IÊ>0¿>öè>qµ>%b^>7Uà>,à=>æY>: †>.£ž>(oÆ>7ê:> Y->¯Ù>¿[>>*;>(ºŸ>þA>2=û>(ÅW>RP>"öá>*æz>=,_>1“>&è">.r+>'¯}>0Þ>8px>AG“>F¨™>>nE>DbÉ>8ë>(Ðp>22]>KCp>1³>û2>Ð:>è¼>á> ‡=>#½>OS>ȸ>.„£>}>JŒ>#ñ>)R|>$=>_ù=䦵=ã7(>à> 8>Š‰>r÷>ä>"mâ>$ )>üð> Ì->ŒÈ>"0¨>[õ1>M¤ƒ>)ÌA>%Á>Wú>HÂ>…r>¹¾> •-> IÏ> úÅ>¼ú>GZ>[©>Ǥ>ÄX> ׂ=òõÚ=õJ™>l­>-ˆ>4>,ÂÒ>$h‰>‡=>õ±>Þg=éâ> ›—>ò>aN>=A> £>)tê>/Ñ5>,„>Ÿv>]Æ>+°È>5à>Œ> ™=ÿ>uÓ> ¦©> e=ýZ˜>n1>,û0>'+)>)?“>5¼{>3 > SÊ>è3>(CÐ>!kÞ>&\¤>%z>læ> J>•¶>C >8Í)>B­>,;>-©>E^>>,>CB>0/Ù>5+A>.Ïž>?Â#>UbÙ>:¤Y>m6>&¼e>.tÎ>,áQ>1P%>3"²>,H¶>*sH><Îß>D$¾>:‚±>.2…>m>)>S†>&Ö>(8>,®ù>E€>)~î>;ÍW>D £>N×í>A1 >>*î>@+¨>GœA>Fw>A~ >C<>8X‡>?U˜>;>];r>€‹d>y5>=™°>QE>¥>(ÕÁ>#ï¢>á¿>/Œš>9Žq>5­<>,Ux>:éV>/ØN> > ú>&÷>vØ> -$>>)z>'ï+>GËQ>?Èj>,{n>F¾&>*²6>*Q%>,0£>6Éñ>>!kñ>*ãi>!}â>"ÕT>C°À>6H>m }>Oq0><®:>*¡¦>"øá>-Vm>FƒQ>, 9><'>1ÎM>?‡Ø>6Æ)>ƒî>y&>`R>OdS>U•>?x;>F>(“>9‚þ>9Z>(f{>’D>M°> Eå>/ÛZ>-¥V>;•8>A5|>- -»>ï>%qÁ>&7Ò> ç>%ìi>ÿ?>~Ø>DÁ> E >¸>-ý‰>')Î>;>”»>¿h>‹q>%Ÿí>!É0>©š>&?m> 1§>ß >-UÅ>$#õ>šn>6B>!$f>.Õ+>‹u>^¡>"L}>&«á>·û>ÃJ>+ >"%>$q†>!èÜ>"IJ>'À>'ß>%“S>0´¦>?">Âc>#)É><þ$>@C->)?>a>+y‰>P´>Î>í\>X>-Wx>D¥>'ý>$úÆ>_>,8m> ->#rN>2VZ>.>(µN>D¯Ó>9™‹>:åÒ>IY>.Nq>*¹ä>%Çn>.X>/A|>l>&8k{>D*Ä>3¸U>$Ev> ¶Q>3IV>Kª>5¯>DWã>FWÂ>FX@>ItŠ>1Ö>"\ú>Ð>ã§>S>~>«>`i>ú]>#¶ä>:$û>B7ü>;×f>&ˆ >C†>AÜ>#ª‚>(AO>6]†>=õ>;Úœ>1Ë„>]Ê>#ñm>T>Óö>2>3îÍ>1/Š>-L§>Š¢>&n>7Mõ>Xø>?$>%f>3]ù>+/å#>Cü§>6ý™>/ã3>Gñ—>:Ùá>O¾¶>\cà>T«>Z:>RÇ8>(P5>þô>0ϲ>=̱><õÉ>4Hx>$‡‰>6à>=|P>0¹>>#Eë>TF>4çú>3Íî>*$Á>EˆÜ>(¤9>Šš>ü¡=ô %> Ò>ëŒ>d=÷¦8=ñg¢>•°>—%>O¨> D‹>"°>Uû>·=Ȳ=´¤=©O_=øã>ŒŸ>Ä_>?e>„i>%®>>%Ÿˆ>"/>Éã>2‹0>29ü>æu>!‡Ê>*˜¯>"½X>=>i„a>Výû>.[X>u’=ÿ¡V>¦e>¹”>™>$‹ >KÚ>Z!¯>Y¹â>J{>-¾É>”>'ÃU>"h >>,¤÷>Wh>…û>uŒö>*Æ<>ES>/8›>#..>H>>V>!vA>'<ï>(‚ê>"AÅ>(´%>»Ì>$R´>8Ð(>V—>$Öü>´>V>§ž> -æ&>õ÷>(ÛQ>+;Â>)cw>>¹<>Jt>9¡ >4½>:…¸>,’Ø>2ýü>9ín>7¶>:0Ô>A®>)òf>är>(¥˜>%UÜ>)Yû>0ç$>:î†>*î„>"·½>'\>9J§>WØ>Uê¸>DW>bN>Mé>;í>*•í>2ëÏ>,Ä>4(²>Nœê>3áÅ>$Í>03h>7 >7в>=ñ>-ã€>*!®>!âÌ>F«>]Cý> ->,ÏÞ>$¹j>?å$>JÌ>5Y>Ä]> v>8‘>6È>0­þ>"s >¯>¤*>+¬à>7¦>:¾>.òÕ>/ñ>A¿ï>:Ýä>E¤>Qt>;¨Z>&óÁ>'k>9¶È>4Aï>U•·>_pó>V>+r>>Ý>(O>BÌV>?Õ{>41ƒ>2®v>.¤>l> –x>#ÿ†>1²t>Y°0>|Uø>NF¦>FËf><Ô©>Ž%>$›L>uË=ñë^>½ƒ>,}ê>ª=ö+È>Ø>"êð>*>?i‡>(==ó(V>Û4>bº>91@>>¸˜>O>W™ê>:£>:ñW>!ü;>¶ï>&_]>7ä=ÈÜ >%>)Üõ> nj> ½§>ÅU>?> ˆŽ>-¹µ>+UÒ>2Åø>F—> -ÿR>®>!h>1ˆF>.ùƒ>%2ó>?¥»>;ã°>;°œ>sÌ>Q9ß>2uâ>&i³>8oM> - >>Ï«>$d>+A}>-âb>=t8>)]>$öh>„“Ë>™9È>Œa>Eä>:äÖ> -Ðf>ðn>de>M«ß>8Öè>F|Ã><^ç>vj¾>|m>C>{>[¸>Sý»>?DË>-ðâ>s”>-F->Wq§>Ak&>.Þ9>'C >7)t>V›Ó>Vl¬>=š>&qÊ>)I>-F>)ó>-\Ç>"ƒÞ>/¯>*)*>)‚(>m„>Î>à´>¯>!Ñv>/¡Ç>H>CÓ>= 9>Lþë>c-V>dy>Z6o>/1><9>HÞå>FÀÍ>d„>jUÉ>^:>Qÿä>1¹Ò>ø>Áú>4­m>CRã>@¿»>1Þv>,s;>+cq>&üz>(¸·>UúÉ>b™j>V£>c>Qrµ>KÇ>Zø%>D‘Ã>7OÞ>3žÏ>:6‘>V0†>WRë>P¸N>a~x>PŠo>@©>2*·>7$Y>R³>o©°>…÷>qÙÑ>…ž&>…^O>CŒ¼>\:¸>3½¯>F>2ñ[>;ÐØ>?C´>?Ñ÷>Fwž>F<Ç>,#6=ç=£A|>ù¶>/ø¦>/)Ú>iA>[è¤=û™G=ÞÇ>Bc'>7žg>IÛ>$PÑ>ßÉ>!÷â>9‰>å£>(ké>-þ>-£>>7%(>n=Ë>j Û>3S.>B:>;ŠÐ>/´]> ú>ê>‘ >!7\>Q/ç>%2>JíÂ>k‚l>"é>1Ë>*Ú>†> þ>û> €> ø>'óg>/k²>3ºž>2š=â¬þ>Ëü>!eµ>"´å>2tt>b>—]>r>.À}>"&">G> Ø.>"x> ¡Í>*)y>=åŠ>:M>AÄ>I*>K¿6>M×t>%„Õ>;Ž>.2">EJY>FÈT><øì>4—k>Vxù>Cû>CB+>^ô>4¯ð>L7T>U³Ã>8ÍW>D2 >;Ö£>)1j>:>>—'>3[Ã>†È>!ò>Y>48¶>9G¼>‚#>/>.ë¾>5’€>!vÉ>î7>-1y>2‰ >!ê$>#‰>RJ> -u‘> ×e>T¥Û>1³>'¥/>9ôe>#}Q>,kQ>9‡>9æ¸>A>7jŒ>#V>ä>'¢Ä>1ãF>&Š>_À>#y>>¿>+êá> )Ê> d>)%>&e>Ñ{>£ >I±>8ft>C ">BÃ;>6b¾>+=->1†>D^¼>BPE>)NW>%¼£>0nQ>"ZŠ>&“ÿ>2/°>,[> Ñ;>é¤><>ÎV>7kœ>;ê_>2Q¾>(Ih>$ÒX>%6Â>&>/@1>=šØ>,ʼ>*‰> òÓ=Ü,>û¿>*s>?Ç>,R>Dìä>Q9é>B³›>&›>žy> >>Í•> xG> Zè>?Èû>> >3–>FÜ> ½p> ->…€>2”«>iw>4¢D>@ć>7‘]>z³> ÿ>aï>+ÞÙ>?t>>*ÙÐ>$S>+" ->7ÆÌ>‹d=Ü. >À>5ôð>5TW>9ă>'Ãg>#ƨ>:Ï> kŸ>3¬P>EÓ>CÃ>;bƒ>(â>ß->%D®>15ž>.—£> -6±=ìs›=û|¬>%az>0·>&>Z>B‰g>93!>áž>¿'>%»>(eÐ>+c‹>8ÿ>Fy>8$>#Zþ>3 >5?>ªD>>k>ø>.>Jà>8€Z>:u>4Ò@>/J >*Ð&>*yt>Þ>Üe>î±>:Ó”>HZ>&‹q>€5>%³÷>>>x'> Ô³>ã&>& ë>Sð> i>wÿ>%9^>šS> -~V>7>2øŸ>;y>L > úY>F%>±N>2GR>dU>t >ù>%=y>8„>âô>tÒ>3 >MÈy>Kë‰>GG>?ü>8ÈÑ>$KT>¬È>í¾>Ó>Ö>#б>&æ>Z´>"d>%•£>#¸>1 >,î>!‚Æ>àÿ>+×> -,œ>(à—>5ØÄ>&q> 7> 1÷> ¡=>zˆ>.ë >8]>à²>Ϥ> 6n>-{<>?O>7=>&ô&>Ü >,Ì—>FMÙ>!åý>Tø>é >o>(‡`>K!–>A·5>1#™>0Yd>;mU>(Ai>,pº>,¹y>ï>">ˆ>#ÊA>'ߣ> ¼>ì'>Lí´>QaT>?¢Ä>7>>Þ><ì—>3e‘>A1>\Ÿ>l?>J€>#…(>&Û>0*>:ÂO>A_á>1ÿ>41Ì>CÙ>4E›>³³>U>01>Eâ>B£d>'ŠK>W¿>ŒÇ>' M>3M>(é4>"/>f¦>'$Æ>U{C>])Ç>0š>W‚>O=üŠ>þ3>±1> ×p>0‘•>W%;>V¬$>+ìP>' ÿ>2S>>3V…>+ >Òù>ÊJ>ã€>='Å>KÑH>I>D”J>[(>eoG>T/±>HZ™>>½Á>8c>A@>AY >#UA>Òv>/û7>6ñt>(>"Jb>7Aþ>UŸ >IÄç>8-÷>)ûì>Éù>0¾œ>F÷h>GôU>9oÊ>&¸@>Fô>.°y>4Ä>2 J>(ý|>¯.=ú„¢> ¢L>>!í=>]*>>= >5Q> E‘>¾È> ‡>ÿ5>!zó> Ôo>Ã#> ®9>(zÀ>Dn,>¯û>#‘}>;fÑ>B>3ic>!³l>8: >FVà>D•]>3*>!ÖJ>Þ*>4Ä>H}•>2x>tË>>Âû>»_>ËŽ><Ê>q'> h÷=ý©…>tÝ>Z—>&KD>/Ò£>#z–>3åß>%r>0>*>?Ò>LNÎ>W¹à>4Ÿ>¨J>(VR> ƒÕ>”Ã>8&y>\¤Ÿ>^MV>5RN>$(½>HM²>:zp>1Ù©>$FÔ>ï#>:ìÛ>9ÇB>2G>5uê>EA>`‡>oq®>Sk«>F.Ç>6u*>$ý>t°>Î?>8>2Ë>+>’5>& =úh7=ÿãÊ>zØ>sî> ´>C>RÖ,>M ->à=óÔ=èÕð>vï>‰î> Øø>í->1`>&#X>!ûà>>í>'"6>ï™>eÅ>'Ê>=’!>1^ì>:–·>I!ž>FC>:Ø ><âÿ>I§¼>K¶>0ëx>V‰> ‡’>ÎÈ>Ú3>>r>û >d„>5X>÷A>–Ç>1e>7è>6«C>/ÐÜ>$ßl>‡Ö>;A>©">4q>LÄ”>]t_>b”˜>Rç>/Án>6B> Ðä>0‚><¹ð>Q¨M>G¨>! Ò>«>ä®=ÙT=ñqL>Öt>f!>î>+Öè>ßÇ>.>°>¤>$ Ì>AG>@Ù(>2)9>+`+>@²>Õ«>ôÔ>6¶><µ‰>cns>e(>]ßå>]¤O>W›>H†¨>/Ó·>ºY>Mâ“>u³>½_>lY¸>M2>L¨g>c4>Un>?mÚ>%€ƒ>1Šk>9 ->6¸8><>Pþ4>;O©>(ê>.Àî>/*>"+e>c>lJ> -Úñ>7Y>"z>"’>Eí>I>F>;*>Zl‹>m5;>P®®>A’2>Kê³>Z’E>Z,ï>Nôu><¾&>=ðh>Uïº>Vré>E‹>EÓv>O2 >=i^>L£0>0´ã>#Ñ”>*Ö>E?>Åô>(¬Ÿ>4(ë>4ßÿ>< -Ê>2v ->*ÿü>2óÏ>-£À>%?>+NÁ>P >ù£>£È>«,>:>9ñ>Ë©>ÊÖ>+Jû>»¤>3Sò>Fe3>VG;>pK>fê>JÒÓ>ô^>¤> ˜>"òt>+¡í>*õ>Jk>Uͱ>+Ý4>b‹>¹*>2ª">Fõ>8qT> >>&Þ6>^Ñç>MB•>-&z>õ>qP>0YB>O†Û>Q•Ç>Bä>CÊ4>hâê>[C>,_Î> R>&øŸ>+|–>8í>0}Å>)«>#/>,$N>4ƒ>/;ç>8Ù?>8i—>,@i> I^>7üÌ>l?>„ÂJ>|S{>Zmm>C›C>:B> }.> û…>Ðú>#€>E/>C|>:(k>7Žñ>6Ì">8å‹>;Ð7>CqQ>IùB>v;>w›x>ZuR>6¸S>CÕ‰>BŽÓ>7€æ>F.‘>ERa>5§«>;”I>Ÿz>0•d>">e>¶>@Û…>_}~>b)B>e_`>;Íx>5/>:*g>652>5ò >- ß>MË>G>(P©>@U>BÒÀ>@S>>5!>3 f>*êÐ>F}T>m2w>’úˆ>‡r>Nº›>m©s>kÒÓ>)l>(<£>(Wï>/ú>n\>êp>Ná> <<>L£>,¯}>(ÄÖ> ‰>ZB>x±>V&ì>Dpw>a¿>tÉM>_Ù}>O>N_i>>¾>Bí>}‡=ëÄ>ÄÝ>–S>ð>\ø>*>….>¢>%ÏP>Gd>?E>7Ö*>7c>>ñ™>2×B>*Êÿ>"Ι>.Xq>%@W>!ê>7Ý>/‡)>#ñU>-E¹>3}Ö>jv>ãž>#‚ÿ>G}>MvH>\†j>ˆO¯>“>âÖ>T~a>7Ñô>,ù£>5R'>CI>F`„>B¨|>6t >1Õ><¥!>Hº2>_»þ>^â;>L¡Ö>]¼>e(e>@€Í>C'Å>HÅl>híP>9Å,>TOT>Xáy>G1½>b¡Z>Zr¯>Uš ->U®â>L8>:òx>=‚u>Jz7>7ãÊ>D7y>uƒS>x¤ï>r…Ô>x%}>l?Ú>P–L>5òœ>0N>{>>%¦B>-í>7 -f>B‰‰>;UÖ>/Øx>ȸ>ch>³>b©p>j²ý>>Kz>1/Ó>4•># o>7ã>MW$>Q‡¯>P¯h>€Ñ>”V˜>kÇO>8Á>'¿¡>4>>¬Ç>Jë~>@µQ>.æö>3 »>"ÉÏ>Ì>#Á•>¢[=ìvb=ãEÄ> (Û>%>=°c>Eˆ´>>]Í>Qqu>I]j>5+>A´¨>\µ>KJà>9êž>Q™±>'>3>fr>k>(G/>-ª>.#í><ÒG>!>8m§>->®> ˜>Aø >`ûò>V·>Lgî>I@m>5P>'zv>) >/Èà>U"'>Xœ†>1éœ>Æý>+fd>õ©>-n~>5¦>:·>Aou>CÙM>2t> -X=ј)>0å3>ÎÇ=Ý­*>ƒm>goé>¢&;>›º\>aoç>3 ;>UæÎ>RTR>qL7>…B>+%°>1•>ElE>Q`q>‡¨Y>xQ>0½>.ÔŸ>m>/>/µÆ>í>»A=è›>ì>A>Ÿ¬>í>>>€ >ecþ>*˜>8eý>];½>Z•k>æ> -Ÿý>"t>%=úæË=ù'Ž>)`>4 “>:—y>B¨6>9¹Y>)>0?>=àê=Út›=üRŠ>.%Ð>HÍ>àø> &Þ>­>6ê>þÁ=ó}Ò>{ =ô±ë> -QÊ>'°ƒ=æŸ>Ñd> a=÷J›>‡y>+î–>9nO=Ã8ï>ÜS>;/Ã>'M¢>X>k=ð½«>â >Z¾—>|Ý>…õY>“ã >_Pà>1Wü>3*i>3jè>&ú>"ƒÿ>/„E>V)>†¯>2¨>\ì>W(Ä>FT>3‹¼>0}õ><€°>KŠ¼>Tùa>Y"“>b×H>f]\>B€L>:ô_>5Të>2×:>9Ë(>$ïÕ>ª¯>QU>IÓ>QëÐ>d«û>DsÏ>$eB>=>"‚L>M‰Ä>0 >>Ö>>M°>92Z>;æç>4O÷>óî=ý«>l„>d$>Ôv>=> ’ª>H>óæ>¯Ò>*׉>#Ÿ>O]A>L<>5,ú>1z™>"x> ½=æýÒ> ”ð>Å/>3:N>SÖö>U-ˆ>[°²>]Ò½>SËû>_>Nš)>'¶·=Øp >Ü >(…o>¼H>)>0¥«>_¾>ˆâÒ>Ÿ>TŠ >-=>!(>dä>!z‚>)L§>2ûf>"`'>6í>;]”>ø<>%þ">DKÖ>R–Ï>Lœc>4ë„>3ã:>Kùa>L’’>+•,>ò€> ÔQ>/õW>5æZ>5 >0Êž>2á{>L÷n>jžL>ltÙ>3x>'ò²>"œd>ø,>!ª9>+™>1Æà>K3õ>8ÊÜ>e¦>‚>6·*>K¶’>EÇú>8 ½>./A>2eÔ>#ûù>Í1>1;ò>&ùJ>[W>{Ù=Çy½>«C>"x>ðŸ>or>É™>–˜>QÃ=úÖ#>\¡> ‡Š> 8 >Ö>\ù>Ó1>æþ>‰ã>(z>1ø,>1ƒ¶>Z°>,É^>/6">+s×>A»>EA6>F‡>IF‚>H²ó>+¦]>%!>7ÜX>Hî}>]¿%>_->Op*>-ËÑ>@¹4>E÷Ú>B42>4.> ïF>1×#>Ib>Áv>+Áj>/ÇH>"ñ>&! >'™Ê>«È> 5P>Q'>DD>:ø>3if>Eƒd>PpÅ>\r>ee¾>X¹)>+‘þ>2¾z><ú>5’¤>I9(>9Ã>5~>=Ï5>2²>=ó>R @>eˆV>2‰Õ>CâR>MK“>; Ð>0ƒA>?"r>C•œ>8]¼>="o>|´9>mqß>VËö>\[Á>5nø>²œ>xQ>*·¬>7ßJ>0±a>4Ûg>E)0>)#–>7>!®>0ö,>)xs>:Á>&B>å>=·>Fб>M`>gùÏ>‡a‡>WA¯>O¡o>Itñ>=¡>2òF>&8.>4¢´>F­+>=… >2>·>Ùú>&ó±>9×è>*w>+!Ù>4%>*He>-L">VßÓ>x+>Zy{>Hõ9>5ÌJ>-µÝ>>?>'žÕ>2Ò…>>Þ>8(ù>/W ->7 þ>&j¾>,ê> ½ù>:óÉ>J.I><ÞŸ>Óó>@ªç>;Ç„>&í>JY>&¸>9XF>I™¹>Fœ>:H>1ùG>K=á>YÀ“>MgÉ>?õ­>iù8>Y±ú>:lž>5²>J¢ã>Bí>@wø>DäŠ>4Q‘>B²t>3ŠD>5~¡>S+">Fl>HÄ>N;>H,´>(>1¢÷>/æÓ>/®ß>8/Ã>E¹>+CÀ>>4>WDº>$ ->#‘>?þ–>NQ >>–Þ>PÈü>=K >*->!Z>1c>ðú>«…>µü> ˜`>j^>†>Òþ>'Ëö>q‘>&ß>A™¸>KÛ;>LZN>>\k>3(u>:§V>70#>)ªÕ>!ûZ>#Q > ï‰>±£>%‚è>;K>&}k>,k>!=>/4>Ü>!šµ>@}±>^ít>=1¦>DG)>;«A>1“A>-->'“>'bi>õ2>÷y>,«u>.ºð>!5+>¾™>Êî> Ÿh>[_>„Ñ>¾>b>/ƒ[> X>0”>;Ú>-·ö>*X;>>t±>G,>:³>,M>5åÈ>P*>R$Þ>8‹¬>%ey>-V>2í÷>Céæ>;N¦>ÚN>ÜØ>?Õ>)BP>,G7>&ßr>+í·>9ð)>7YD>)bä> _ù>3+>)G>!§Ž>/)Š>;;}>ÕÝ>1ô>!¨Á>'zG>H!Ø>GÌ>@y>1 l>0š>:õÉ>1gi>)6>+Dæ>4bâ>=yÙ>9^z>BIÏ>Fur>H >Hvõ>@C>f â>l߯>b >RŸ{>(–‹>/ï>-LŒ>5mF>=¥F>äj>!-©>-bw>0æO>1eP>8>7¿Ä><>^ˆ>#ù>'ÿÉ>Õ<><‡Ò>EWÈ>5“¤>Éù> H±>%v(>2š(>DËl>QáÜ>>ZT>^‚í>W)ê>6Ȫ>#j>>¼ß> V>-}†>)qÉ>ƒ±>ôU>{ý>!”Š>)™›>+öÏ>)œ€>?(„>]cd>9kŠ>&†¡>#Øò>€Ý>E=m>%ºR>-<ƒ>1+|>[.ý>Jy’>BüÏ>8 -³>,u™>!p^>+m‰>(7>*i¢>,@¼>6¯â><|<><Y>Jª3>DÆÎ>1ã²>M¥>!¶˜>Š5>ú`>"6ã>$i>5(>Xz>8w¬>+,V>,j—>97>¼>.~J>.kÐ>%Š ->#çe>%q!>'Î0>5ó|>4>" ä>€{>'µ>”>S°>¿> -ªô>¿é> -võ>%>f¸>¶ -> Ѥ>uF>(m>&ÏÂ>=d>(Dk>.l>S‚>ãè>4Q>-k˜>)_õ>$•->5¨>1­°>?y>/ãd>'î>7óf>5å„>5>2ÁV>(­2>%x[>C{>[<0>@¨>2ÚÄ><7l>C"á>1P>!eˆ>8Ã>NßT>?jò>P6>gZp>HÒ½>>|–>7Qœ>1DÏ>9 ">6¼c>6 -Û>4Ó;>b>K‡ö>1,«>%ÍA>§>#QÙ>Õ>tx>s­>$O´>/º‘>'¼>#ûN>-úÃ>0Ø>…æ> z>-…l>£˜>8wI>5 ‡>)cÚ>#³>"ôâ>:„>'lþ>*–>#¼ê>!Zš>3.Þ>G>:ôª>)êU>(ò>'ŠŒ>/Õb>MÌJ>7Ëñ>! ¼>-€®>1O>2>>=šO>%˜>0öN>/t>"Ä>0Œå>5iP>‹Ñ>1q>Y> >î>–‚>Ä­>ð>OD>0¬>áG>–Á>2‡!>>+>11>1²s>=%y>7¤ñ>*A>êÞ>g‰>3¢>%4ú>Q]ç>i+/>~¾>†öí>gÏ>2D3>61>27Ü>6Øz>9\>*×Ã>ÌÀ> OË>!mC>)d¡>ÓE>!eŒ>% >"0i>&¯ß>GÙÀ>`iË>P \>*C>cò>!ÄÔ>7…>OK>:ó >%÷Ô>%+ ->?ßî>>K>&r >)!þ>*² >)–Ù>-v6>21Û>8í>?Î>WY>MK>‹Ú>.T¡>$Tb>8™> ¤W>‰µ=øp3>2ìt>D_è>˜9>hG>0Å>DÍ>Hý>#ò‰>îø>ch> L>$»´>9=­>VcG>?é¬>.\.>:J>3©¤>jÞ> ×}>'†`>[€‰>lå>IÈ>œ1> ü¹>¢º> C>ÑÜ>ˆÂ=üJb>þR>Häá>Efÿ>%€Ì> > -KÔ>ør>då>M(^>V3Ø>),:>%;ô>%Ý>Ž­>&Î>)¾Ã>)PÖ>43ÿ>.Ê >:o‹>8K‰>2óó>6>I>Œa=õŸ¨=úæB>!mR>EÚj>Xêç>DKL>Kö=ñÊ…=Ã@d=ì°> ÃÈ=æŒI>¸ý> ²´>,É>0+¾>!Ò > Ƭ>Æš> -½ƒ>àR>*§!>8!>8íÙ>C:>1­N>Í>.H>h>U>2dâ>5¥m>$¼Ì>3Ic>R­È>jNÔ>kId>bcW>5,½>˜â>O>'¢‘>.¡[>-ª>a>"Qr>0>e·6>G¥.>"^À>¥“>(ÿ>Ü7>‚u>:°Ý>Jví>cÂÊ>{Ÿr>…„†>Pâ6>žG> ZG>¿‹>0ù>^N=ãj×> ÎÊ> è> ¼á> -F¯>?>/¸=ñê'> ã‘>¡a>¤>"¡T>%K>–m><ï>Ee>Lâë>gt'>Kfù>1Ñ>1>+ À>,€>><’>\>«¶>…Ì><¼>04>@Ë¡>:åÛ>5³Ì>"ˆR>(¹G>0Š·>-aÈ>7;ê>.kí>+»#>L”M>ƒ°>†@ì>X6ì>Ly>Tp÷>6™¥>,‘ë>-ò>5Ð>48I>:Åd>RZÚ>>!Ó>?‘> -=Þ¦9>ÉT=ôóU>Ö>-P=éîµ>ï[>fU¬>|Ž>J™>#€>a>>S†>!_â>6ÉI>H>F›Ž>4v>!&V>#l¸>+N¹>0z`>7®Y>/g³>Fýó>GðÌ>`¨ƒ>hhN>?Ó>/84>Ž> Ÿö>Ί>)¡>Ë ->%¼O>M‹>"Œ:>I|u>9´(>#U6>·>)>(c¹>%Uä>lj>L>=>œ >!°7>0r>2í×>.’Y>8r4>G1;>MQ> BŽ=òW=þ.D>e=> ‰ô>$·>/®€>!œ>âr>w$>/3š>9ÓÓ>Pa°>ˆbm>†€>KFl>55>K5¹>?>=?>AO>*É°>@ú>T<5>XZ‚>TC>H{æ>##_>2ê>0±Ì>!Ý>"È©>(¬B>E:a>;S“>AÞ‰>rAœ>y‘>Xˆ>+]ß>© ->,õã>)ph>8‹¼>(cî>">7¸>/é>]>`¾>#Ÿ >6š}>1äÕ>‚Ã>&‚}>¡‹>@~Å>dÝ;>V2ï>^º>I™$>:úž>C+>‰>)ªG>-†9>. ‡>E™Ø>Bã¦>7*}>%{U>MZª>1¬>3÷¨>+ g>8é>4£g>*š®>vV>ÏV=þ.Â=õ?‚> ¸%>`Ÿ>ˆ{>&à">Fa>5q{>WÀ×>+ ->A@>T4>PuÇ>ËT>zÜ>#B5>ã=ÄÜ=¶#Ù>IgÚ>`ß>"®@>´ ->uÓ>âI=º$¦>%©>JsO>9f=•‡=Óid>[+>-¿¥>Ôa>ʬ>Ì=ò§0>*Å>8ÄÇ>"þ>H·>OJ>RÍþ>fJÌ>4”Ë> %=Ê5³>­ÿ> „É>{¾>-êž>\¨8>f}È>ÜÜ>Báð>UÁ”>Q¾Á>'uu>Kì°>lŒÎ>3’á>Gu,>IvO>*g´=í9.>!êž>Lì±>ÆR>%ê>1uÔ>/ï%>5}.>0p=ø Ó>5Z>{>=R´>uË%>jG >GV%>$ø >>=üM>C2‚>"b>^óÒ><õŒ>•¬>ñ>'äd>?†>N’A>$‘>3%¥>FÀÞ>¡À>ˆ4> Ñ~>ŠK=»™›=¯'Z=âU.>.&º=ìwš=À«=øm>>0—å>'»§>fØ>Aõ>â$>'CÕ>V$C>-«>+s(>0Yâ>0L¥>#í> t-> -Xë=öÀ‡>T´>9p`>M`>.Kð>ŒÙ=õ—ü> Nu>îú> Ù>34f>L‚_>7$ >%ÜR>@'w>úg>8ü>%*|>ç>'a‚>5p>8Kà>-y">+}>+áš>7«I>`B>Oh¶>)^>PºŠ>-g>(> °Î>¶œ>)þ˜>[E">

    Õ,>"‹ô>F›—>J:¤>,¨>5x>µë> –=í=÷KÒ>V¹ì>BÖš>6ä§>9e=Ý »>žã>&µ“>> 'ó=ï˶=ê;È>P@’>Rõ>4üJ> Q>áA> Ù> n>¥þ>®>ë>ð@>p>?Þ<>Rtí>Qf>Íp>+Æ>Pb>f3>&?ä>6Wƒ>E… >4¤Ç>,–Á>$¨á>êT>.ÿ¶>DàÔ>H×ö>A°0>=ç>4“Ý>!Á>^ñ>±)> -Û> -d>>ÌÔ>S">»*=âzØ> -–m=ÿŽÉ>F>’>÷>ˆ}>¢×> '4=Á˜>>0†>8ŠØ>.Ø>"œí>‡> ýÞ>tf> R¿>ϵ>’>\ >#9>>a>!KØ>¯5>2g>94Å>p<=ìa> -ft>2(n>+ÍÄ>)ѵ>>¶Þ>,îô>&^{>2Ü>D\¦>G—>3Qæ>+>9‹">Céê>"6À>»> ù¿>>š>ˆá>h±>-,Û>E{>@ç¬>3QÈ>"jk>>ós>Én>N;>‰A>->d>2k >ÅÍ> =>&H¾>"¡">if>i>!_>®>®·>ÂÌ>,hŒ>BÅ_>?Èw>"F>*3•>>Óà>O‚>9no>Bœ]>M)>4ãõ>RC&>evX>fs>6aÙ>,‚s>4ïÇ>7O>%™>6…Ï>'`ö> t>Hƒ+>.á>;Ï“>W’´>]÷Ã>EèÀ>,Ö§>%dO>D_‰>>`Å>>¤¹>>è«>?,¢>?p™>?´‹>?÷¸>MðÈ>*AP>1V>%w>4‰à>6V >C>BYN>1,¹>>Ìœ>',ö>0Å>ä>*É> 5>%Ë®>)f}>:Ë•>@…>?‡Ÿ>.ni>Ç>X> Î[>“<>FO>#j$>-@¯>/ò>já>!>ä> Ò<>;é>!Øã>å5>&v=>.0P> ß>lf=ø>>!„ò>=Ì>;µs>3½Ž>AÇÑ>0ïG>B“Ð>Füÿ>,9†>9‹>A¤Ô>De~>5÷ó>"]¯>/¦9>-%>)t>-€># >1Ž >87>ØH>1¯é>.Çè>(æ4>*3¸>*°Å>.L>'É3> d>@²>DÛ‰>&Ð> -É´>Tw>°J>w=çoN>;|>?He>1&û>¬>{">[ø>;k2>B*á>@—l>;¸.>*¿(>16½>DBþ>OÜÍ>OÎè>Jð >B€f>65>'@¬>1s>2ø—>*ëF>¶æ>9–Ò>Ecg>C{>Hè ->YŠ²>.7/>1ŽË>7u>)³Ü>*%7>> >WÔú>^]>Fø>?i>7k8>B"’>Tõ>M.ç>kt>cåì>NQF>Nr>6þd>?É>E¯g>? a>*d¼>(¦Z>+„¨>,óŸ>DÝÀ>A• >Nøv>QÙ>H‘ô><»>2b >D’¡>Z_Í>\4ª>p³>®F>nzA>B6‹>Cù>B?t>HÄW>M5>AK>8 é>L)Ö>D¢º> õ >·ö>#àÛ> Tc>&Ž>2Œ·> -ª5> @|>f>sÅ>02=>&#]>÷­>Ÿ6>!¸R>ÔH>3k‹>)©ò>Úù> àp>/Ûä>>`w>7ô>7WW>Dý>:mN>'ª@>0Gµ>;lÅ>, U>!ã`><þê>:·>Gn>9…p>;ŸE>BÐz>@R>6µ>JÓ`>GÇõ>8²Ý>%Ü>(‚>.Ðõ>]>Þs>-‹ñ>(}‹>Â->׸>C¢>†Ü> ˜>(Ó>Ã> û»>!rº>/ÂB>6V/>+V>AV>„3>Èß=öòš=ù?>lÖ>#ñÓ=ñ›¹=öFs>R‰>4Ð8>,¿ÿ>€²>Ãq>!—>Âd>…>&->!àá>þk>š>.¯R>3ª‡>ð¶>bg>Œ+>/$Ë>2ß+>¨e>*+Ø>6Ay>(®n>+S¶>9$~>$^,>Ž<>1#2>/ç²>!õý>–ä>'ü%>6‚>(Þ>¿µ>Ë>%}Ý>*Eb>4qï>¼h>>1ž>4È>2‚¾>>C¡>6C>0»©>0½c>0¿>0ÀÙ>0—>0ÄR>0Æ>1 ->-Q>:ÿÌ>4‹>9Ø>KXw>C¹>'Áƒ>:°K>:ʪ>4>7€ä><ì>. ¡>E <>R(8>;$Y>0BÉ>DH<>@ìa>)m >gË>(Ü>"‡‡>Ap> pÀ>"èo>!dá>6Ä'>=>Df3>IÅ>Sux>^fª>#3Í>.Û´>1÷º>"r>°6>'Ö>~e>ª°>;y>,›¢>0 ó>(z>Ã&>'†š>:´þ>P_Ò>?+>ë2>$>+½ >4:…>8ÆQ>DŸå>U™ >K2Ð>@ã‡>E >?½ç>!Vp>!½>.c?>3»=>-”">>ß>.<>7Sr>3Í>ÿ>>Í’>„ú>LY>!Áæ>)s>(—>0,>Ð9>"r>,r>$N >#ßò>èÓ>·Y>s$>~>¬>ñç>$tÜ>#­d> ž>»Ä>/ñ>;‰>!±ª>"2š>"Bí>>9i>Åê>0¸>*ý>²ê>…f>,ú“>?]%>>2õ><â>4Öæ>3¦>*š›>3>=>>6²5>3—‡>,¹¹>#\!>%5>0kÚ><+æ>TL;>MÖK>A^>2`0> šÀ>0¦ª>.ñ>6x>9»;>5nº>D’)>GŠF>- ->"}Ï>!Zä>!÷¿>4}>3¶L>8`—>)æ>(PA>6!Ó>3ðC>²(>&·÷> ã>58V>@n¡>;$>;W²>‚K>ýA>)ÿ >6ÆÎ>1JV>(˜>6Mn>+ãã>+lJ>xD>'¥>?*Ä>,TT>hô>8À¼>&‚d>¹>Ρ>&Ùê>%ñ>5µ>>žJ>$Ýò>-òµ>8Xñ>ŽÞ> ›9>BCX>+ÿ¦>$†>"ñR>"—˜>!ý—> †>{>1Ó>?ò·>B´>4>›>.“€>=ù+>(ª>.Zõ>6,¨>5V!>BŽ>fŠ•>[O>\"ë>?׿>3Ĉ>8.k>5ë>5óÂ>7Ñ>:ü$>9‡ê>7¸ê>7Ç$>6é¤>">0Ó—>Eè³>2æ>!ÝÌ>&é>8]+>8¡Ö>$ÇK>$­>\>.Ç>4%>0ý>+»ù>+î>'ØZ>.'›>,‘þ>)èÜ>2¢s>*=Ó>X%>AðW>&ht>-{r>/è>&"”>,±¹>.ÌÓ>0ƒ|>@k†>LVÿ>:`¨>,->($à> ?1>'¯Ÿ>;d >+õi>4">,ÙÇ><÷ƒ>4j7>+}»>2@õ>1Gí>Dv˜>AQ•>8Ó>2µ=>3ßÅ> vo>»'>"8K>$€î>%š>.æB>:q>?a>>–I>:D8>Iþâ>N†6>=am>4_C>0Øy><I>N<û>BB?>'Å><ʹ>Fs¢>42>'»‘>/6t>AÓ‡>EF">E‰#>"Dô>;-I>B -W>:ãW>6Í_>5èÙ>8 -Œ>(¶û>KP(>F3?>4¤ï>5²Û>/md>CÊ>sÏN>RA—>9·!>K_->Kåƒ>SA>Mg4>6ç>5˜>ß\>2õÙ>0àŒ>S±Ì>X7Û>Bìb>N;>[Ç>?¤><¨Ï>7¯¼>2—Ò>Gšy>*ï>3N×>4’>'ô>=¼H>>ð®>5/>.ŸÞ> Ç>8Ÿ>1øô>5Â>Ü&> ž>ps>yñ>3ð>,W+>,:>) >(N¦>4Âí>>d±>9µê>0^³>êä>(mö>+ôø>Q> pn>N]>qx>x->ñÊ>-ò1>)M°>3uí>D’>XÅ >/¬.>½z>%á4>3z=>%¬Þ> ß±>4Fõ>=¡>qÑ>7É4>/*>,Þ|>-Ç>$j_>n>0Ô>*+L>/'(>)è‚>?Cü><>5€¶>5£>4w¥>3Ð¥>3)¢>2‚—>1Û…>m_> ü¶> a€>*ªm>Cj>Pãb>K2>@zÑ>Bèå>O¦i>R“>/ìt>+Ù_>7:ú>@…‰>TùÝ>7ÆÎ>I+×>N<à>Fby>KA«>X9­>U6´>2ã>;ÿ™>%r>'í>>y)>P,f>B+>Y|0>Nœ+> ;¡> •>¾>O§=ñ#¿> Á>)º/>d¢>/78>DìÈ>E Y>D­›>9~w>A„ê>?+Ï>9‰>1g>NF@>>¸)>(¸8>iF>8ÔV>';a>#,>-ö>$‘!>»L>«ó>-g€>´ª>sÝ>"a¾>A(<>.wÚ>-ôñ>& Ë>\9>/Å?>:¿à>>[$>)>/£>4„l>E±ü>=J±>pMf>D¿'>/æY>0¨q>6P ->å‡>ˆ˜>©}>½–>)_ÿ>Db)>HðÝ>G[¢>Oõ>F ©> -ä>jt>+…">#t{>-ûû>!’¶>5bH>)èŸ>%·­>5?>óà> ö ->+¹´>,ˆ> ï—> >+É¡>,Ùº>væ>)>BŠ>!N>+Q)>/˺>I^X>4ŽÂ>.$é>+nî>) -ü>>&!>+HÀ> ïX>>-y´>7®ì>4EË>.Fƒ>T}>;ä©>3ô†>6‚>3ï>!LÕ>"í«>+ R>2'ï>;=<>/€§>¡>+®}>(J>j>Ä3>$]¤>/zœ>û®>!Y">(Ð>+â•>Jv9>Lq6>BGå>[¡L>arü=Ö¹9>âB> e>"!R>â> šé=îKm>3ð«>C_2>GùÞ>]e0>0Gç>´Ù>TêË>"§/>=Ý=ëÿ'>h>í‡=Íüì> h>&L÷>j">éu>Åv>$ïµ>A²‘>TîÌ>\¤>QÀP>»Á=ç’“>$¿">NF=û"Š=»¶m> „> ë>ª`> Áw>|>‘Œ=ùm`>D²'>>S>¶>rê>%Å>Aæ·>-—X> ½Ç>*äÅ>>äÓ>»P>%`1>RuÜ>Xrx>Js>1—}>¡ž>"P;>$ˆ>#}C>GÒ|>B$;>;!K>[ç>&`ä>Y>öX>>¦@>)-’> ¾Ì>%Î}>-”'>5ÁW>NÑ}>4IM>h> -@à> F>Bcu>ZF >Ï7> Ðè> jA> ié>.÷´>œÇ>¿“>Ñd>ýK>À*>+¬>ÅÌ>’¼>§ú>.“> >Uz=Üa=袸> -Š–>²>i>CôÄ>‚Ÿþ>€ê>r™À>GKW>(‰Ü>e#>%$>#÷O>Xæ>:3H>6B>!ë">&uØ>>XÖ>Om>VMÉ>!>,Ío>O_>%YK>(rê>.÷z>-Aè>3ÀW>JÀ¡>Rg‹> C>>/Éó>4Öz>(ùæ>BLý>1Ž>>[d>#Òv>)Y6>$->Ïç=üûó> -@i><;}>7ç>:Þ¡>8Z> ®†=ï/:>ìK>: >z½>¬!>)0n>x­>pM>ƒ>Q>°ª>,1¯>^_>C#ô>$Ÿ÷>à:> ;~>?Ú>7o®>(¡>%ÉT>ÿÏ>¤½>¨ >:f0>5J·>" !>ŠÛ>ÜE>BŠ>"`B>, ÿ>6Jö>0¸ª>%T>’o>1“Õ>>jX>.^¡>ä>ÀM>£º=ü#>;©9>=¿ú>3t>á >'Z>ã>"é‰>¯>?ÿ>ï/>,Õ/>'NÑ>—=úÁ=æ =ëpV=ÞŸÙ=È™>Ù‹> Z«=ï ¶=ø0X>(¾>—Š>g’>Ì>¡>%Lº>7ô^>G†d>+F>!X>G>$¬>(¨>!¦`=üëP> ¯>'W*>:†=óº=óhØ> -=ý‰7=á&Ô=æ ô>¶>/¸µ> ]`=Ö¯½=üÅÊ=ä̪=Åj€=°ß³=õ—> $>.>ä8>'´k>&®=ϼ=×1> Ž>þ>š>/•>Á’>S”>å–>wž> ¦> >º ->™>—Ð=ÿµù=õèÃ>²>ÔÈ> Tü=Éé[>{Ù> æ > D+>$&>ê>'’›>"³>&Ì>.>/ÓØ>/^>EËm>-R‘>(q9>&è¤>X->**ÿ>:¬>=Ò>$;>;‘É>@e >/žª>!Ö>+ÑŠ>:l>>×>.¾z>%à>.ç>6{»>ëœ> E>!~š>(.>F™>6d]>!Q2>8,>5GÈ>3“–>C3>]æÉ>T>>Eâ‹>K†>Z.¸>>a>¸>¢ê>29s>+5ý>,±Ø>/ s>*ý>'\ÿ>*¸W>/Ÿ>)qK>5h>!¬Ã>$|«>'QŸ><—÷>'£Ý> Îç>-t3>#z >&Nw>*Úg>1ÊO>ý>%©>.̾>3þ>CÛ>-b¬>7µ>"7>"m¸>-†>5rb>3}=ꤶ>|>&…­>Y\>3Mu>NçO>9B+>î!=üRž>|ž>0†€>2dÇ>Žö>Ø;>û>0>x%>Ë`>1yé>I1N>0ôŒ>0ãW>6:>7_>0ÓF>/|> –> œí>,ã@>:±Á>4ÃP>/"Ï>,»2>'Þ>$À|>!«>'¹5>9ê•>@† >:—Î>!>“ž>/º8>3T>*î >Ý”>"|b>=v°>DHÂ>9ta>-´s>;JM>ü=é4—=óV¨>$<Í>'¾ü>¡> 4Å>«é>(yš>8˜>@ðù>‡>D)>¢>nò> ÁV>²G>#:>9x>#äv>8 >`>$n>&ã×>!¯¥>0Úa>AU>Qš¬>f9ß>q3c>Nê>3ó–>=Äí>A-`>..Ö>2™#>IÕ>E"ˆ><L>EH>E´Œ>{ý>·¥>:[>J«ç>+II>#C>ó¥>Oö>$Ïþ>³ü>Ð>BŠ>$xY>=1>—„>IÛ>µ>öd>*ñ>5ðÏ>8p>”È>»˜>2k>µ3>#„›>'Ì,>,Öÿ>C¢ >XÎ>aÑÎ>Vx> ! >fu>ªJ>"lF>D8Ê>]îš>\_X>AãR>&sš>+ÎÓ>gr=þ”æ>û©>¯¦>.¡h>7A¡>9ê–>@"[>y5>aŒ0>2/é> ÏG>Ƈ>º>!r>&!ú>8ø>4Ò>)ï²>'…D>/">8N>*ð>7">5ƒô>3q>Q->X‰>ZK‰>N¸ >?>>Lu‡>C;ñ>DÍy>> _>7èR>?«>Áñ>¨>$†z>":>0K¶>)A>##>"ï5>'“ >)D™>/A‡>,XØ>&jf>RÑ>†sú>†r>nŠ >G–I>1Š°>:°=>3%>!cÜ>4Ç>XBŒ>O°>8ÿ`>#`Ž>/k¦>Aƒ>ZC¥>X3©>4{Ó>>")p>%íÃ>"¦%>(„ø><ƒª>9>3ô™>JŸÃ>aØá>QCî>qÃl>h }>[n>Xeî>H”ø>$e«>-4ê>.É>!>mz>¾ >ÅP>"EC>'øD>7{®>,7>>6“K>9ñÁ>%2>,$c>*·`>!6·>+»ý>H~]>B>&">L<>"Ù—>Ž">%Xö>3×4>7†9>HY>])>G¡†>JWG>cüþ>u8•>v{Þ>X>Ë>0yB>>!×[>3ÎÐ>(SŽ>'d>3u·>&î>%Â>(ç>45€>5Ï—>.Gé> hè>s>!Ø>):c>/?>%§G>Ìç>P·>*ƒ>)B> +Ô>Á>¾>¯‘>w>,*N>nŠ>/Þ¨>Ld§>9ôæ>=ö@>¬>8ÏL>P6~>C;Ñ>1Ç=æ,M>`> ; ->!•Á>.Óp>2$‘>!ÐV>|>!¿O>/Q“>.Ú>JM>ó> c9>Ä?> "B>#àÒ>˜x> &j>íÆ>+çY>,> e>&Ô>>*€Ð>8Gt>?ÀJ>#9B>._Å>F> ž>Ð>(™;>$à“>5¢w>]tø>cÇ6>>®>0s/>N>-E>$>#KÕ>Aw>8 >6±Ñ>4‰ >"±£>öÓ>t˜>æ²>*QF>8|>/"…>$«'>.ZÖ>%/>¿Î>‡Ý>aÖ>{~>!;=Ü‘r=èA>4i>“>~>Ú>îí> -ù¾>ÀÌ>!Ô>ëd>$í²>%g>!|>5*>x>€Ø> ¨>L“=òc=ÓPH>@>A—>)ß> =ão@=ÑkY=ÚÉ=†<=¼d—>ì|>ÔZ>RW>;êº>EnÓ> TS>”Ð>ë™>V>Í×>¹~>8>$â>0">%2»>iÏ>\ >!´Ø>ñë> />‹>ö6>v”>?%>;> > ö£> ’>Q›>Ç>KÑ> ©í>2[6>P»>UÊž>aq>î>É>È>àB>™=ø]=õ.A>—> 5ð>[å>¼i>9ÿ>e¹.>K°>> ¯>+V2>0yƒ>8Xy>9+@>)ùV>*<‰>*Á“>"ºT>¾6>.Q >U>D|à>7X1>0º~>˜*>tG>*#ÿ>01;>Lð›>>S|>8±><‚>9‘*>1æ=>$â/>'ü>AVm>+‡M>s‰>"äÉ>(Ÿ€>k\>Çÿ>׆>,#”>1>/ºa>4R>7ÛÒ>3š±>I¹d>JGã>5Ç>)•:>8á«>#Ós>¤Í>1õ>2&4>4ˆh>*ØK>!Ýö>3‹->ÞÈ>Ó×>#&>:§ú>WAˆ>i¶z>sdº>4å2>5±ó>JÙ>FˆU>LtT>QGË>(ÁÝ>q´>|#>,³€>0h>>Ã>=þ>WÂ>P>5 !>)²~>!´z>! ƒ>3«D>'!Ø>5æ”>+r>­3> k>Ä\=õp2=ñw¢>gá>V>k>$¡¢>OÀ> -˜D>)k>CY(>,Lo>>ä>éæ>=dÉ>NyK>NIŒ>EŠ8>&5Õ>1p>&³>3C>) ×>"à><=ýØÜ>û>Ï>)’>"ÿ>#µZ>v=üÌ>ÍÐ>:‡O>+J+>+>5~ç>]>Ž>eTh>G£>##>>0(>-*>"~Ä>.çé>IÓ>f–>XWª>iL> r>eP>cQ>"!g>B2Ì>X$Ê>P §>Cä>BÍn>Õ > A> ~¦>ÌÜ>Bä¹>mê>f¡v>E>û>7½9>I¢†>9>¯>#âi>2eb>.êÜ>+&=>öz>—€>%«£>k>$X6>-Åg>²>©‹>s>Vé>%r{>:Ì•>3Ù>.êS>"ÿ/>7°Ð>:½È>(D>!As>&²>UŒ>û'>.Õ>.5Þ>CI{>2Ѿ>#U^>%üº>0l>6‘ã>9]>ARB>W³ >l¾>\ºÆ>cW¡>ZÛ¬>8] ->)’ø>/ > ¹¹>Z>]–>#–@>A¼>Fô>.I]>0>Ù>-E5>ª•>.±>!,>$¼Å>;ÁD>@~‰>5×U>.õÅ>$'Ã>¸Ž>ã1>òù>ÕÔ>)Ä›>$2Ý>X±> i>t/=ùx=ð> -î@>´ž>Òª=äöˆ>8È>DÕ>$à$>e@>m׶>Gëï>@Ë”>#Y\>N0>#³û>ÏJ>BOÛ>(“Œ>#;<>$-y>&,>K¶â>QW5>7ãn>7³é>$©>'mC>ª=ÿ r>/fP>·f>¦Ý>ü`>_'>!õÕ>àÖ>g>1úä>{> Ùë>3Z=Ú_+=ø&á>ûX>2.>\°º>P‚Ì>3>-«}>"¨>$á:>³Î> ‚Î>¸e>'ëÆ>?š>CÌs>E >> ]>2ˆ>-®Û>"äÒ>'0*>P ü>)p>&ÓD>:U¢>X¨ª>Ò>gðJ>(„e>Ca;>+æ™>w>™t=í…‹> Ö2>k|=Ñä‚>cd>{>Í{> dN>è>!õ£>ò>(ð¢>2ì/>2Ìx>#Ω>{Ê>0GÉ>ED>=÷>'’å>%Ð>6•>1ú•>0t<>;^>LOe>Iw>N²>Tve>J# >;¸/>?¯A>H*ü>)éa>[>ß‹>"Jx>6‡õ>%‰\>/‰d>4å>#$ >,}/>9DM>(¸ï>+>($>-¿%>'qP>1>9Ä>>:ǯ>YÛ:>V -Ù>>%'>/³ô>'­±>)o£>7Å»>ÃU>,>>:P‹>[²{>.)Õ>!µ¥>oÛ­>¡Ã>èÂ>S›>-%F>EÖ>h®Ÿ>Pì>WO>JO«=øÝ>#U>;+­>BÕ£>–q>¯F>7°==èß¿>÷7>XQ>?Rþ>2¿1>4ù§>3«¸>é>–L>NÑH>KD©>Kû>?ée><~ñ>AâÌ>=Í>UÆÊ>DSR>>±>N¯>-Ì<>$…Ú>4œÐ>+˜>Ȩ>æ¾=ù7S=ÇÂ=Ø/÷>Oýú>_ë> -½†>jø+>B” >/(ˆ>6 í>k™>_^> Õ1>*¾Ý> '4=óh>uX>Ì¥>`>¶®>3&>·…>¤È=òÆ–>ïE>.¸÷>öM>›r> ¸6>"+=þκ=åØ$=ìó3>  >AÇþ>^¨+>D «>6¢F>©=™Ê×=òq3=ðœz=ÌmJ=Ú]>ÕÆ>¥I> 1©>'‡>Ùå=â>$¤¨>˜>ˆ½>6{—>+ï>§=Ú„/>Þt>Ck>dͼ>T‚ï>Gÿr>A¤u>J!+> ;™=ý a><=€>Hã>@P>*£&>y>(¸>5Š">{">#ï>6Ô>Kóž>Dƒ >!äÿ>²·>=®>=õ>1L[>Bü>ž~>·>@><é'>1ôL>0 >BÚ>Uqo>Fš>;ãj>Y1È>>%À>0w>>¡Î>![¤>Üâ>7“>E•[>4›ï>+|t>Mô>S ×>7Ȩ>qc>‹®>í¢>/7>E¬x>D¢>8¯†>#Ï>*¾y>.>$RŒ>ÔÒ>!¥>+sç><Ñ>,o£>*ì³>'“7>˜?=ù(>àp>Gµw>X?ð>J7v>?æ”>2ê >$‡>OX=â*©=û7½=ï°µ=ûÓ½>)9‹>8‚>,»>0>+Ö>•>>#†Â>=¨ü>%$$>>4>&þ4>EÚ >6AT>"Ó‚>$¡>2H>/kL>&M[>ÄÇ>áÆ>Y‰>š™> Z> âþ>ÓØ>$£#>+•>&ú1>x™>Ö;>#Ó¡>!ûÇ>ï >S,>#»a>:Ú/>Lã>dsÆ>]N¯>+ðÁ>-а>>¤Ø>U$k>qÆ>9çÐ>´ó>>æî>-7T>%ä¥=ÿv«> MÊ>)Í>ñî=ëHò=äj=>ïè>Ü=ïdè> ö>&}×>B$ž>48¡>&<¯>#.¹>C ?>;éÆ>)+©>ÛH><“>!N> ¸b>*Ä> 6>‹[> ¨©>þn>Ó—=úÏø=ñ•Æ>Àÿ> ä:>0>*¾•> –>æ.>í->°>€>­>)Šl>`ÚN>@œ£>(pê>+ë´>I†>QA>I•>2¨‘>]&>+Î>"Oç>)QÀ>-òA>6\m>4ëÌ>#>>,³/>5„»>0¶ß> q >£V> ƒK=òòm>8C°>Là>=+ž>O>Ç>}”>e©>1 U>)'Ñ>9à°>Q‚‚>>ný>$>8>%Ï>%ü£>6ÿ>Aôñ>#>š>r>'\q>â¢>Ÿý>,pï>E™\>5:@>HJ‰>@˜€>!1D>-T>5MÁ>3YÚ>8¤8>61à>"¡«>1‰> >€o>!,>$xm>3ÛC>9®_>:Ò{>1j¥>/. >3È >7óÂ>Ét>£«>d>'¨ø>W+>&_>-üY> Ê/>¬>%p>%R>>–Ë>K>3¡>Mš>û>+ð½>É><÷>Ñ0>!œG>,ÑS>(`ò>´o>Üñ>ÓÛ>/q ><Ü^>M¢>BòŸ>.8f> ¼Ÿ>2më>0³Þ>ñ>µ>ª$>3ú7>=—F>8Kù>0†A>5Î>+¢¹>ÿ> öÐ>Â'>5|>7JÐ>,Q>/áÞ>5=\>b>>!ê.>&F>†=ùk˜>O>õá>&L>9iU>Có§>Gë/>:òâ><‚¦>£™>í=íP¼> -¦G>'ì>…‹=úk”> :C>à>Å=õ4°>"ÚC>u^>«ß> >c>å%>}G>*ªŒ>zl> …ç>m>'>û>/ÓÒ>!—¡>¥Ý>ãä>8ê>)IO>FË>^ø6>Wª<>7BÄ>#E÷>ø>*`">'µ¤>,œk>F=Ò>MÝR>&´ë>3—ç>1)0>$1×>)>')>(Ã>'Õ>)9%>(úK>#F>æ„>Jâ>½z>³Ú>g/> [ð>ÂV>_>¸Ä>rÖ>KÖ> º‘>!rO>-ce> ® >»Å>)A>)u>Lç=ý2>#>¸œ> ŽÈ>ß—>yÞ>(YŠ>;D&>/ìÓ> üƒ>6Á>'­>¡X>4‰>)>,>1pÔ> ¸Z>ðÆ>%tò>'(›>'EO> ‰«>!ñ>-¶>+ö¯>,”>.Q>3=ö>&…>Òe>•>5ñ´>2Ùx>x1>¦>=œ;>:FË>>ER>«ë>3a]>@>2Ÿ >5OÅ>>Òâ>=¡]>0Òå>&ªŸ>-@>3°>6ëÄ>1ç>"|Æ>@1J>.ìF>(ûä>@Ví>?:>Cµ>9Ãö>-*…>0¶>@Kê>H¬>EEd>=ça>6ÞÊ>,Ï>×Ë>  >3C>#øÍ>³Í> &º>vv>$S>öu>·V>`®>|ª>'ií>#:Y> ø>ÐÛ>7N>!æÐ>°€=î -î=Îû2>^>>š–> 6—>4,>/~Ê> ¦>Èü>KG>9æì>2>®W>(zà>=ï~>0rH>n">1’ê>D1(>;6>I^>#h~>6:µ>QPÛ>l5>N*>BœÆ>A°>+ ><Ë>:<þ>&eÉ>u`>°¦>—?>+êz>1Ãg>$Õ>Š¸>3Ñ\>%Ð>¿x>>‚Ï>Éi>,™>FÜ> ê:>©µ>/×M>4³£>0µ!>+Œ>*e€>!R>"Hý>(ÂX>%FÚ>ÊÒ>.’>Kt>oL>)w¥>#Õê>E§>§2>¦>ü> ÇÇ>(€>,Ù”>Lç>TW >-ž“>3[(>Á>%Ø> -ú>Fc>d™>†ú>1> ©> >!Eh>D=g>V8~>9¥Ü>"€p>KÇ>4ch>=¡>3ÆÏ>bз>jÑã>p+Ú>K„A> ­œ>/”é>:’s>(/Š>!O>$¥g>¢Î>"÷‘>*Ë_>žë>p>3Œ>Ûl> -0Æ>$¿P>8R>(äÊ>#š©>0Ê> ƒ†>MW>b¹>‰|> pæ>->1‚>%æ>/í/>"Ûe>†k>’6>*†>±>>"i:>)g–>er>}î>%f>%ÆÂ>"Ç>$Ü>$÷S>/ >)hG>/J>/9C>'1H>,>ñs>·á> ·>ä„>+þ0>0 Ï>,ÛS>„>*”>* Ö>+i=ý…¬>xõ> øâ>$>§(> ¬> Ø´>Ÿñ>I K>R—>9Ö$>vy> ·_> Ñ>oq=õ½/=ô[o>g*>‰È>"$>øÆ>ô¹> Bÿ> -Ed=îOò=׈…=ÿÛ„> -|> õ«>ò->@X|>M:>.>Æ>(*¶>!º¢>#N>—?>+M<>.w¸>)º™>.A;>5É>5‘f>0kÔ>äk>#Ö’>4Á>¡w> x>¦m>Ä5>mø>D=ìzª>X>A?>ûž>!žp>>Bw> Ÿ/>Ý>–Ê>eI>+ >*ø>%a…>(F¿>>¯ >EM >B¿>àD>*™ô>B s>=j>&]¿>1{>4¥ë>.i >05ç>.)÷>9•>¯}>&ü-> —>ÐA>d >üq>(—>:Í>ô@>*V>-ñê>Œƒ>Ü>,Ej>+o> äÊ>(„Î>3ð >%u>õü>Ü>'K¨>- ‹>.Iû>' -`>)}3>cÛ>@¸³>5ã>&Y¼>*st>+Æ>?ÇG>18>û> «1>Î]>$ù>%â>Sl>V_Å>H3>Mxœ>?›> GŸ>¦z>gj>8ˆû>&ï¦>v]>!·×>Qɱ>S©Ú>m -€>A:>3×Ï>@>A5>1ï¹>J»o>Q¬±>Q€>W X>d{i>M H>2'r>1,>3Y>2º]>)Ž>%É´>4tþ>(À|> QÍ>’l>2ø>5 û>=g¾>B å>2¬]>%’ù>÷¾>Ï>"¢ä>'§^>&¥’>D† >+#D>&Áß>7¬ª>)ÓM>3¹>ó> ­Ì>R=ü¶>"L>6ž> ÿy>—|>$X>%>E>ï>!£ì> †>@@=ý»d>&Øõ>!>á>§Æ>«d> -#œ>">"­w>€Â>EÄ>'™¾>%/ >Ç…>*(Œ>-ü¡>$‡f>’X>Hu>î¾>(îb>"ÿ:>"Œ>ój>?u> -6Ã>Ûf>5>+¦¢>‡>™ƒ>êà>)<£>0ýt>.µ>5ק>/ ->![î>yÎ>>3>˜#>.Ôî>ÉV>Ø@=êi=ø¦F> ’Ç>©>>?¡>ù`>‹>!r\>7ï>òƒ> -þn>Åï>ûË>ÿ>ÇU>$"Þ>N°>+(*>¿>êK>ë>,‘H>-³‹>3)U>PÛé>JN(>Yó<>O2Ã>8Xõ>7Šz>/ñ6>,”3>"÷p>'àØ>'ÓÀ>.B>(‰:>(Í">L½'>eƒI>WÏ#>Lƒ>Eþð>2î‡>;6(>6R«>,Öž>2œD>(m>Ì>@òä>bmˆ>E¢Æ>G¼‘>IÐ2>O &>UA`>Bºr>6æö>6*>8å>@-X>J¿>5§ü>4¾€>,‹ò>2w>@p©>‚>B>cÙÁ><ÛX>.s®>.|>i>"æ>%w@>9¬º>*åƒ>¼Ä>Ùy>0Å>=ì–>IÚ>MÓ><…þ><ß·>NO°>^F.>:¥U> .4>Ìó>,ì2>?M>8ˆ">3‰Ù>1G >)>-o>>,mE>#(>rz>"rF>,[Ð>"…>#§>È;>üú>ØW>0¬->)wõ>lî=ýWH=ê`>=>ÆŠ>ûä> ;B=ò$;> ¬>yì>‡À>%p> )>0ãŽ>2“‚>þ÷>/îè>>hâ>$“ß>Ož>1SO>ðý>wÆ>ãF>,Þ>6ä>t8>Àì>'Î>> 4»=ê¡à> °>û>$¼;> ÿ=ãiM>0>)™ˆ>z©>~>¥>Ýy> Ú™>A€}>Fîx>3Û>1£>"j…>+T>$´>"=ï>‚>½T> -ÏÇ>>ì6>U(>5Ëa>-M¬>ò÷>¥ÿ> -u†>š®> æ>J±>Pa> ì=ýîV>ØD>! Q>$nÙ>0>¾>/JÝ><Æ>8¡œ>276>+ÂÙ>-Ñó>F><Úw>=Â>2ÍA>¶¾> ݱ>*¨¤>PKQ>5œ¢>(^}>Eæ>§> +™>Q>%jÔ>ô>!M>.j.>1 ¿>;ìz>WuÒ>Y?>6ç>$ó¬>¦m>Gp>9û>?^G>+L±>.¹ê>U]{>\ö>C}>,·«>"c>Û[>-Må>*o}>B@ä>7@f>(>.÷>'!>QÑ?>gT²>JÀY>+&> ag> Îk>!$¿>Sì«>+G£>9ð>#„‚>;íÉ>Mï)>NÞä>3hü>¼>çb>sÜò>o>SpS>&|>2¿?>A>J)<>a$>NÌß>".i>\µn>Z&N>òü>D>Mr±>BÔÙ>3%X>4<š>7UZ>›W>œ­>">O®ï>_1>ZÚ†>'Ø“>:k>7+°>3´>=º=ÃR¢=Ÿ!×>­=ÿ¿Í=ø©Q>,Yå>AÃf>J{d>>¶->1%b>&ÞÑ>gH>)·s>)þÞ>+åÙ>LÝÿ>P]a>B08>:„þ>+>&èé>;çZ>/š>$i¿>Ûg>)ë¥>Eó‹>XaT>p> -Q>% -ï>FaÝ>MÒõ>9Öì>6D>B\«>J Z>5Ñé>Blœ>(ø>k?>!<Ð>ö>ç > %Õ>BÓ>À(> þ»>Cz>!Gµ>*ÿ'>>*y>9Š¨>!¢=>©Ó>9®Ç>J¶A>?@>LOÙ>Aèl> —$=õå‘> -óì>)ÍÇ>*§â>!}>0E=¨:=ß =ÿ#>„“>"Á>'?> ¡©>Í¿>$Qí>+>*w>"?F>#“ÿ>"âÅ>=A>+·Ñ>Ê ->”D>'—³>0oW>HÀç>>¹&>2òk>1˜>Sµ=>;j>+Ü>Ó‘>%o>+)/>1üK>-Î>'ý>>"Ö—>*ÑÌ>9ÿØ><êô>0(>& ->0ºõ>Ôþ>·}>(N>Iš¶>zó>]„º>Lô>UI¡>4$ >%>=>3äþ>ü> Dø>-x2>.C#>)ýs>ÐÒ>ÿ>&öI>4Æþ>=sl>EJ]>/TG=òvÆ>Å·>Z7>à•>1:Ü>0Õ>+/N>^ü>"ÔŽ>öÙ> -R>#e9>'p‹>%æ±>&œ#>¬|> „>0dÛ>¤¢> Áâ>$D=Þl³>5>ð€>Ê×>^b=ÝNŒ=à‡¢><> -M”>î>¡>$8:> i> ¬>#¥=Ù¸m=Ñ N>34>VO><{p>lj> -.ä> ó3>&”>Ò¯=ê¥> ®>*\X>)£ª>/=ô>0—J>(«¬>Ú>W4>MÜ>$œ><‘>bN>: ž>gÊ>]q>!/˜><&ê>EFß>Cˆ>)ˆê=ö[Þ=î_Þ=õ -Ç>P>:d>305>›g>ˆ6> 8>½>2ÿ>g> Õ>æË>ŒN><ð>#=>9[I>=™)>*€C>6{>­Š=òÀQ>ÃÔ>$QÛ>*½‡>*ˆ‡>"9§>šk>}=>'ºä>4+‚>"q>(å'>J> Ä¿> -¬>$cD>/º˜>'Ö>Â>ªè> -Ã4> zp> ä¬>'fS>,%‰>(§©>ÛO>*ÂL>G“>vÿ>#Oœ>5ú>>Î>>)†(>'»à>%ñ>$'6>"\Õ=ço>И=öÔß=âš=ñn>Q>~¶>%³>3k¿>8„x>3ܲ>->"Ç>(> 3Ì>à†=ó>$3’>,¬>*­>!ô>%ðZ>"…>Åz>‰>Äù>aé>!ò/>!Z¬>Gc>>¡Y>9<>2> S†>,ð>6i>>»>G_Y> à£>hÙ>4>*÷ƒ>-YZ>(Ê>*Ó»>4V >H G>:f">.ì¸>/‘W>*^i>1]6>4«0>$È>JýŒ>N†]>Fv>NÈ>,À“>64P>US9>5>Á>1^,>,vï>#ä´>9Y§>%s~>È“>#NŽ>'0>4 Ÿ>2ŠZ>'>%Le>/âv>B9_>CÅú>(´‡>õƒ>ª>"Uí>3¢O>4|^>&&> >4N>%4ƒ>y~=âº=ö³=ûg,=ùd9=ô©k=ÿ™">ú=ÿeJ>%/ü>ß.>co> -¬Ï>_þ>àù>L_>)ú×>(Ê>'>R>%#w>+>)8>>´>Ò3=÷Θ>”i>&æD>Ot>‰æ>48’>6¿¨>#…>‚Ÿ>L1>ƒá>“õ> <Õ>U\>4Œ> “»>0 -†>ºt>¦õ>% >&9> À> 5Q> Ó³> ƒc>&ÆF>'EF>"±>ø>UÍ>?A>L>+þ/>BˆG>/è >%7O>(ol>!)™>cA>!«!>' -Æ>dý>'¤Ë>3[>6$Ž>>:˜>2¤Ä>$>"‚Ù>=H7>(v9>-yy>6¶v>£u>É >$b>0¡|>2ëš>Ceã>9Ž>2Ú>)zž>"B¡>¾6> i§>X ->ƒJ>%W7>38ý>5î>ð‚>ë}>%É> ¹ö>7_/>3† >;Ù>>W˜>%-„>f7>' -ñ>%ëü>!©Ÿ>Öû> Õ>Ñg> ãŸ>Ä2> Úß>OY>'K5>!Ûü>2Üœ>*ò>ìØ>*J>>õ>2-®>)¸F>=+_>#‘Š>5r¦>?'>/ô >(+!>-2D>5+Ž>/7>md> ù>ß>$§Þ>.Ën>$®½>ö>0'>Iï>'I>j"> FC>6#ž>D@¥>3Ï> \>N>G¿>¿k>tk> -Åú>¯†=É»£=ü„–>P>ñ§>µS>I”>£Í>">75­>æ1>:Ý>~>I >1=ø›ª> -ë+>6=> 9>‘j>Ø^>"e#>06>$=h>+-3>ƒ>×ó>8>'ÿ¯>5…q>5"A>!ÌL>-è >·4>2žÏ>Bµ>#ûK> ®> œŽ>*ÔB>.=óÙë> -JÉ>à>¦È>,ž>1SŽ>6Û¥>5 ê>1Ý>¹×> à >G>Dè> ž;>Vz=ó>ú@>',>g > 0> ë+>ó>rt>Ý> -®¡>"®æ>(Æì>V¸>(ò>G>‡ž>ýM>°Â>§>w¦>¯$>Nx>'U>uÙ>vÍ>¼5>þK>Ë>>^þ>ο> @ª>ñ->:Ý>–> •C>&p>.¾%>#Þ`>M >Â> ¾Ö>ç˜>¶æ>$g>Šj>ç>Q˜>Â>’~>«è>ë1>ä>¯Ð>$ój>0@ >,s½>1fÚ>4>#ëØ>êÚ> ±¢>}¡>/øD>©>$–>°>÷ >#X´>4^S>:Hë>XŠ>+ö‘>b>®†>éj>f›>7lj>C ->EUï>6ý=ù>”.><@^>8$&>'>'ŠŸ>Ä!>”0=òPß>1}>#> Õ>0Œ>1W¯>@÷Ó>/e­>8 >%¸À>rï> îi>-a°>. ;>,õ¾>.*h>0]Œ>_+>˜ý>³>$®>z¢>*>ú¸>)pô>«> ó>*>Ÿw>%ZØ>7n>Ê=æe¿>º«>KÅ>Ê%>×<> Æ*>'Ê3>9nF>.pd>0{>(Z÷>o>s>&½>¢Ð>aL>ì€>±z>À¤>Zh>›»>>þz>%™º> -²=óøÿ> õ¦>#9=ïsÝ>lí> ž>Þ> •Y> -–#>¦0>•Ç>œ“>/x=öÃ[>¼z>s”>"Z¯>'—?>,y>´·>É>8ÿÇ>Fz>4AÅ>"&U>-Þ&>—Á>#ìM>#ÄÚ>r¨>:` >0 -ü>&ȉ>).ª>2SS>BÈ`>6B)>4ê¡>$´Ú>%;>3¯ >%E>*fE>®´>)È>h> =È>¬=ýt">$s>A%>® >`d> >>¼Û>LD>|©>^{>—>^+>Èè>%“>ÌÓ>%†>0.">—Á>!²·>3+Q>9B>5$¶>"©·><'> >í¢>1ÿ>„U>pà>!,­>(Ì">(ýø>+æo>3Di>-d»>){‘>d!>!ø>)¢> í=åº>D„>!˜ì>z8>u>,¾©>.¼¡>œ?>"ÿ>5û>0•Æ>"zÚ>.M>1q>½ > ¼,>’–>/©>;­> Ä> V=> òF>!> —Û>eù>ì>n®>ý(>r›>‹ù>Ú> -Ã>ôJ>ô!>úå>k\>7>39>Ây>+{\>$Ƶ>Nì>$¤¹>»–>éM>!Ÿ‹>/*à>4ê5>@qX>(VR>ny>Ý»>p°>S\>,u>*uK>j>(Ò5> Žä>õ‹>Õk>r¸> Á÷>(K>À‘>T›=ó0o=ÖO5> -¨ƒ>G·>m>ù>(_>O>ïè>þé>)J>ê“> 1¯>(ù>5>ì>!FW>Å<>^´>!i>.tÆ>6ÒE>;Fä>7¡æ>’d>ýe>¦—>#Ûî>/»> 0>.§>3Æ>+:Ì>(ã>'%t>Z¤>'¾> -ý> -ç–>˜ò>(ý>~j>5Ôµ>>¶m>,iµ>9àÈ>(âü>'„Î>->(Z><%ï>L>f>FCÃ> ñ>$¹p>ÑP>!Ö>"3ð>F¢ï>1q!>2")>8â>96Ë>9í³>:¤¡>;[‘><G>/SO> ›î><”>!¾þ>,ŒK> ºÈ>,‚>GÛ>S*> Ž+>³S>¾>> - >9>%7½>>+’> /²>)ˆ> !> »[>Ú>Çk>ì>0÷ >T{“>\š­>PU ->77°>·>;Ad>'v[>/å%>6®>1nS>1”a>9ÖÐ>.[=ú>l¬>*Ž>*¬ >Ðj>EU>)x>2dV>6gý>iþ;>\o¬>P&÷>5ÜA>"×><>Œ>±Z=åõy>s>7ÿ>&éû>"pÛ>5Ù½>=™>|®>›¤>?D>$þå>Š>6¹>f®™>gŽE>GI3>1Ës>&m>0]>>">µ¦>xG>3=ô4ö>! ¼>&~‹>G#>SR¿>/Êœ> ˆ>!@>D”Å>2d>&!÷>JÊ›>gwÈ>4œ.>/,Æ>>¼a>Ó8>ÇQ>7?#>]/>J+'>n:>Q0>8kì>01F>Xf>"F€>D:š>?F>5 i>#Á;>/Ø’>%û,>.o>"$i>5v)>=Ì>1c›>œ>> Bþ>7£‹>;X>Å=þß> j—>-•<>0.j>$r>9žg>)j> -µ•>Ì>8'>Ǧ> ¾ë>Éd>tZ>“>Ð">…é>+Ý>h¹ >:6Í>8Ë>1A¾>CÉ<>DÆE>4)0>'¦>$Jù>Eå>-¶>)¾X>0‚ð>3f¸>J‘–>7FZ>E´ >i»Ÿ>X;G>3Ðï>:Ï>@Ò>8L>)Yw>mP>#µÖ>,Øj>]µj>JCy>5„÷>@Ý6>-Ž>¾m>'êa>$^q>4±Ž>)­¯>)%>C&6>)¥e>0‰>;)>)¯{>1U!>5Ù >"ÿG>"‡´>7 .>8Kç> Lž>ˆñ>‡(>4“#>9¦©>0ù>3Éj>0{Ö>""Ì>)˜A>(ê1>8->G&ß>6Ýð>9`Û>+X>ÈÏ=ùÞ>±>·Y>$W>,ã)>=ç`>®w>ø>*õë>ÿû>>>&[Ë>$ËC>œb>¡»>Ë¡>wœ> -à>îP>@›>’ú>+W§>+Î>Þ>ÛV>/ó>=ƒ&>A%†>(qq>Vœ>#ÿ[>4V>>'>WÚ>'›º>Øê>]Ô>7>[º><‚2>iÉX>s¥ä>b.>Süª>KîN>EŠ>f%Ç>VÀS>?ß> <==èT@=Äš>UƒZ>S@>Hÿ»>a^V>!j=¹ß>…¼> m">CY'>{zó>!·y=áÊ>*ïŽ>1A}>+˜7>&{+>Þ>ñ>3'–>8Áb>/¢Ñ>¥L>Å¡>,@>]n >;Þm>.¨ò>.‹Ú>L>ny3>Å>ký>Züä>Tœ£>C){>c@K>qeÃ>Qn >t(>¯X>oU>;û >?±>,lµ>'ð¨>ÑL>Äh>?>Ž&>=îg>‡Å>ër>,šÝ>+Ø3>'–²>)­>8.>9TÝ>+O>D&>EÆk>4iä>W¬‘>O¯þ>4N1>Š¢>"«V>(Ÿ“>¹ï> ‡Q> £Ë>.Ã>´m>Ûù>i|>,ºÛ>Hq>m*^>(>5‘ì>c·>-w~>ã =ä¼×>kñ>0úÞ>2£š>¬Ç>û«> e>ÏM>ú’>Æõ> -oc>Bb¯>>–>(Þû>-à>%ˆì>7û`>'Ç>1qè>4é>+º> T7>& >Al>:ÙC>oé=Έ>Þ{>)´¶>$€ñ>a¶>’ü> …Å>$)>4Nß>>Ïâ>A-¾>5X>6x«>3½|>FL>ìê>+˜S>UVM>5Eª>¹>¢Ë>H> (c>\¡> ¨Í>&‡> 4·> õ‚>&ð >&(d>]£>!Ú–>!ß}>#KÒ>XÍQ>;d×>Ìh>ŽE>`G> 5>‡«>ÊÛ>&l„>63a>Oõr>A¢>/¨‚>S µ>>×U>#P>êH>"¼á>,£}>ß>*PÚ>>Èþ>/"ø>,§p>,S>8â >¢*>%>ä>CMl>6œ®>7Qê>;6l>$Ê>Rº>¢>Ì9>;G¿>/)> - Í>ïÔ>ˆò>*>`>(¤>(>&ML>>.â>V^>!U>¹>åø>b=Ûgæ>KE>'‚>KÒ>&Ê>W¿>S5>/>Ý>½>"x>0¹í>4<>¡¸>,>>+º> ‰ã> (Q>Äò>qÒ>#àÔ>4c°>1ÊC=ýº!>œ@>>ºL>b-ä>5O¤>$¼‚>$øî>#u¿>-Ô•>097>1ô>+˜N>^Ä>wV>"ù²>$˜Ž>$²(>*<‹>6›×>:Î:>>92>> q>%k>r >il>CWŸ>=¥>4Ö¢>_CÒ>DžÜ>5†Š>9¡‡>'ß}>)¯D>.À2>"~u>4Aº>>0Ó>>A>G3å>EWº><[B>:Ox>4_><Ëì>L†~>4Ù„>;cl>9-¦> ÒÆ>0>0¾Ô>Eª3>(Ld>'p¦>#ƒ‘>"÷¤> [L>(WÓ>3I>F™¬>çF>”æ><7¶>/©> û>¸á>hO>FE>0õ>2H>4Q0>,Ó~>P¿>&— >0‡r>.–‘>+—F>6»­>Ebo>Ic >;Y‚>,§>4´f>C¤>"´>Ž#=ÿoœ=ð™J>ƒ>&)>¯1>,\}>.ý½>/žÎ>.if>*“>2#>7#…>>—>A Ù>8Éf>,s.>.˜ê>.¦Ê>!ª[>ib>.Ç3>.¬±>)š›>+º>dD>[[>Cr>5¿>/T_>-t}>3rj>'> iï>'ì¶>Gòk>(è>ì~>uö>(Ì|>$M>éâ> So>ìþ>)(+>%î'>¤1>`4>xy>!~Í>2Ÿ>>4N>(½>#ò>œÁ>ÂK>„¶> -&>0<>>¤Ñ>>—Æ>(r>.á˜>6h>'6>(‰q>=7Â>Uå­>ðà>D><_z>&<Ÿ>)Ï>"Q×>ïp>ˆ> a@>%b'>*÷î>ƒ>b·>2d>=9¢>ɽ>’o>]U>!b–>2êk>7Ì>8IX>[Q«>bÏ>Tû5>:ä®>$àµ>3¸£>3J¿>g‚>‰`>àL>$R¼>)ÆÚ>'PÆ>àj>}¨> ü >&£‚>+QA>)Ãy>¤>t+> H7=ë>C>É™>ÑN>’˜>û=øT>ƒ >N¢> V½>œ0>#N>-ôÎ>7à›>+ã>Y>V§>-.È>³&>(Zè>Dh>VçG>6½„>.ÚÑ>)ÜÂ>ÄÇ>]B>!¾á>Ë<> Ì=îuw>”c>ÝD=ß}>>t > k> ö> Úæ>'ë/>&N>§=>?>áF>pø>(Ü>&¨R>-k$>:½ >?>‡>1ùX>!CA>|>ûp>úÌ>ˆE>™†>2ñ>EøI>%@¦>=>*©µ>1£Õ>7#>#i>l–>(Ш>) <>'@×>v=þf”>$Ãh>Jä>U²‡>K Ÿ>8ê3>3˜,>4c*>Cïµ>-¥{>&>E%>3:±>C* >7ì>CK>=Ñ©><;Ô>/¯'>ß>) Ñ>0uR>/>k,>‰,>$‚>/­r>DT¾>@ë{>/ˆ>Œ$>L÷>2–>3Ä>.O‹>)þÑ>36~>8Ž>5 (>4(’>iÙ>&†>&Ri>+qB>;"û>GZ>jâ>+Âû>@ŠM>)¡ô> µ>)n>=´ˆ>(áˆ>,Í>-’:>„>y>(V‡>.üŠ>/Èb>.vØ>+2>~'>$œn>ýì>U>2~>.\ý>T!>­š>/á >5!>%™h> Ül>"?t>'“›>2¡o>Sg|>$¢ë>ö>(ä>K‘2>T¯>Jå_>3O[>†E=ó}†>ë}> >‚>w9>0pû>0ÁM>Ûg> v>%½ > ÇÇ>A>"Z‹> ‰a> çÙ>ûQ=þBª>8Ö> -i‰> -Y_>ýí>,”Ù>'×n>*ã> }>i_>4!D>½e>R•> cŠ>$K?>0WO>6Ø!>4tF>' ->a´>,_ì>14à>5ïÉ>4®‡>$8>«>з>!š°>½¢>;>8>TC> Þ˜=õÞ">J>åú>çj>b>+â>7E>D™>Ìå>~>@'>9Ñ>Dõ>?>'‡>+æ>>6À>%> ºK>q>-·> ž­> p%>6{>).$>*2">)S>)W×>*¼‹> -¾> }=ý¥½=ôl¿>Sé>#ÿ >=šÁ><7F>ïÔ>ÚD>Câ!>>‹3>'Ä«>/Ae>¥>+œ>4ƒ¶>$¹å>Á >/°é>*J*>þì>[™>‡…>2çh>+î/>&­Ä>-Ì>ÃJ>¿A>%6v>2dA>Rt>4ï~>,ë¯>3Œ‚>5>Ùœ>‹M>@Ä!>BÙp>;Hº>8]R>#Ü>mf>&ü{>=¨>;¼ž>.4X>#NÖ>,©ù>/q>e‡>øZ>1-> :>W†>ªœ>?¸>,gõ>2è>G…»>9!N>:$¢>P´>¨=ý¾ä>Õ>#:>¾æ>~>.1>2¥Ð> X0>|ƒ> G >±>%ò>2ª >"H1>*á>;ñ±>9 >^u>ÍR>+P+>?cê>U—s>.Ùc>’ >q> -1$>&‰¡>X´>#¥õ>8=Í>Më+>1$·>V©Ñ>-ãÄ> ¯> ¶ï>$¸š>KÔ>Þ>$ø‘>,3T>¯>&Æ>%2’>À(>Æä>ê«>W×>t|>"d >oê>â¼>X«>…r>k8,>Hk$>;’Ö>&¤Í>`›>(3>(…4>( >6¥X>"ŒU>(Îõ>/æ>0œ¿>2-> ‘A>°`>0Qx>-s}>Xa>ãû>)~×><“ >C2k>4d>é‹>2ƒ >)ðœ>,v„>+/>,ª>DÉs>5Z3>;‰Õ>4â>)€_>$ì®>$¢s>5 >Q!><·å>M>>&;>+è­>21ç>.R…>²í>D2>"è!>DÒ]>Pju>Eâ¾>B¹>Aëp>1W>/Þd>(×L>&i´>)æÄ>(Ç–># ©>.]>9Ýi>1»­>*a>4S>á>§b>3÷>@oö>>H>3m–>!†ï>&Ç>J -i>S»Ì>?dÍ>OÊã>#>îž>'X>LS>]€>>n:Ù>WG>DmÑ>=!3>'u“>ÒJ>þô>À.>‘Á>4×7>K‰Ý>Fâ>3 à>–Ð>^>9´D>D(;>3òT>S -Ì>@.`>&0¸> \>,.C>DJæ>4Ü">µ®>/ñj>#NÇ>/5¾>ZVÍ>Fý„>Lgí>:æ/>Ci®>_9H>iS/>H ©>PT2>? Ë>ò»>p‹>ð(> -f >g‰>0(Å>øÖ>I>"æW>. -:>D>þ¹>.ïó>%2)> ñ>#wß>>>6@r>FË>>9™á>9Ÿq>6Ëô>M¶>"a>&ä†>'©>'¸>++ä>*)î>.ùM>TÜ>K&ú>MËx>A»a>$1w> „><úœ>0Û…>2c(>\-¤>{çˆ>~ê>UÅ;>*ç—>*+Î>2׌>-W¤>>>¶l>" ->19þ>1 Î>:X->Sã>hã¶>T3`>>d©>*Á8>$¤)>(x>,KO>.?ò>-\>&íÞ>,º>,‹|>$ã>+GÏ>88>)Mø>9•{>(‹¿>24>¾Ù>¬¢>¾®>!75>Õ>0†V>M >^‚Õ>\&»>k@t>lùN>Gsì>.šó>, ->U'>(>"&>/£>3:ó>  ½>+‚->9‚.>GÞâ>*ÔÉ>¤3>0‰m>'•>4¿–>I~5>B€q>nˆÅ>†“ß>†4u>}Š¿>]xÛ>)7ñ>0[ƒ>&”I>/·ø>&=F>{†>&&‹>6ï2>>å>C…¡>CßO><8+>0Ä8>@O>#²1>/³>(5V>)as>,Ê¢>+°>6H#>7*>$Ó¸>,Í>4ïX>‡ß>‘õ>!ÜJ>3f>F'W>AÖ°>6™ª>=^>2½3>!’£>•k>,ö>+>>Àñ> J1>5Ö>*í> w> ߆>„[>Œ³=ý³¨>tå=îÖ>ùw> ’ƒ>g‹>¶> ·6>n/>B}š>Bøk>Xˆu>Eáú>c>¿>$ªU>¶>%œ>,Y6>'N>á‹>*Ê>A¯×>hªå>o¬/>>‹>(Ì>2%Ä>5œT>:& >:_x>G&€>LÏ>ió´>†77>yZ>:î»>¼:>/_w>'E‡>}K>ªJ>*á>3Ô‘>"ô>O>7CÞ>L ->"Té>3>/”>;N¾>1a_>0«S>>w%><Þº>#Å×>*›×>CAK>_Ê~>WÍ>1‘¾>$³?>3þg>A8f>(N>8" >Zç½>Fõö>2xÂ>HZ¢>Ml†>@mX>7ö>.*¹> Ùé>EÌ><K>(aÅ>(µƒ>)~¼>1ÃÚ>3˜Ñ>?ŽN>ed¢>aÐÐ>Ja>KRÜ>4×Í>äá>9ß>Ÿš>qj>6~>6/~>=‚´>KÐ7>+=æ>(Ú>…Z>(*ù>¤²>Ö†>Ã>”F>$>~ª>(¨¤>+¦ï>=Ú%>'…É>-Î >N¬’>l.Ó>tiD>~D.>~Ñ>aØ^>B‡ >?Îq>#?>@$§>FOe>(È>Gvk>q«>h#Þ>Fl…>=ç[>Fž×>5é> ŽV>™I>-´>‡¦>7èQ>€c>€4O>_Hp>Z—n>T§j>*ðh> £=ó X=çÐ5=µˆò>±·>#e>*Çæ>6Õ'><°’>*ßä>I&G>P,>Õ^=û- =ö¢>8 3>R4>4ž>bÉ>“š>#‘> T>q>6¸^>,)Ô>˜í>y>2Ê>6c¿>R¿>7Í> +Q>ƒ>Sô¨>fä™=Ô¤=á ü> N´>;Z2>`äì>o©>,¶¿>òõ>ª>)˜~>Êc> W=ãÿî>N_>!b†>-¬¤>*~{>%»_>›·>5òˆ>:Áœ>-j•>8yŽ>Kð>`Y>6"¹>/_Ï>Y¥²>Z>d¨)>o¬”>>H­>#xÛ>Y=óÝù>]>¡r>?›s>/`=øN>>Ý>ÅQ>>>u>*xÈ>)'Ð>0S>:M>'R >6ÍÀ>=#o>Sx>)T}>F>añ‡>SÍ>4¯>`(>"–>;äÒ>‡íÒ>G®»>aš>?bz>C:>Qí>}›ý>‡Š@>”‹ý>£_˜>q/1>6óò>B >k >4Ëí>LŠ¬>$Vá>&[¥>:è¤>[u½>…ÛN>Ž·>kz>?€Ë> õi>=Y-> >±>R3>4ý‚>)0x>I­>Bå>1üç>%9>*À»>#yÓ>!©Â>¨ >qñÁ>šà> Õ>>,²“>6·>E’ý>H\>85>2ã•>-ÑÚ>"‹f>2Œ9>8Y>*êß>2>/‹>!šÆ>¼¯> ’”>9“·>dÒ6>W½->3Ù>Á×>ÞŸ>¦>/> >q> >j,>Í)> >=|Ÿ>:îp>-/Ç>ÍÄ>7¿§>2¦ç>'­K>L|>Wt¨>O„Á>#º$>8U€>@aý>;†>ZD>%Œu>8cì>–ý>¯>, >`É>G;™>¤L>/>â>&ÐÈ>fX>qxr>lgœ>P?h>O¥µ>GÞï>FÒ>j¾Ù>kâµ>I©>‚è>2éq>Pô=>T\’>Q7Ö>QÂB>\ 0>Eyz>DOþ>^9>_÷ >Tç€>ML|>Q·›>U£m>S¢õ>dlù>M±U>8¦>)Ù£>/{©>6µß><1>A{>NJ€>FÌA>%Œ>6é>G¿À>2"m>:éa>7”¿>(Ït>;š>6—>[$ý>hJ>Up¦>8Üå>‹=þÙ>"Â>yé¡>V9c>L¿f>D8>$Bž>"¬m>1¢º>E¤>K·V><¥ê>$…> )7>Ñ5>@eb>@Õg>`n¹>^sM>©^>2ëL>R³Ü>a‘V>UÖÅ>JË>:AŽ>;Ãq>?4ƒ>?ó”>3¸É>*¨>&áž>2žÓ>W>GJ¸>3C>˜ > >$/>¥ ->>Áá>M™N>H¨o>(ä>¡˜> pR>ËÍ>(Ö/>-ü>'ê>‹%>úW>,j>'ÝÌ>,>-š.>91>6>,ÛE>U°>O=h>N2Å>Y&É>w9X>M«¼>CŽH>GÜ>)GÁ>(ÓY>-.³>#òõ>@…>?Т>*H>(Â>=|¾>S”^>DQê>3ºö>%z>+k>4%5>K>^~j>Aþ¡>8Ál>Fþ1>ŠDØ>‡¦X>tÇ]>F%ì>-kj>,p>:Ä>=K`>,m>Ì>ù>C…N>8“>/ÛÝ>BÑk>/©À>1Kå>A³T>8‡è>.H>> |>' >)i->¯>nÈ>h".>W8›>9‰Ø>1˜B>-Âñ>)fK>Ÿü>-/Å>6jÆ>00ö>$œ°>-éä>>äç>H„À>6PW>*<Ò>8õp>2>G¶¼>\v>43£>wV>€O> -Qù>Ù>[û>¡›>,•F>&ñ>¹«>¨>=>Z[->@AI>)@Ÿ>0½>EuÎ>:.>7u>A>fíD>5–!>7ø>%bZ>,.> ¯\>WÑ>'À>"Æ >WÆ> Ò>À_>&0w>3–²>3‰ø>*wû>Zâ>%è¡>Ilœ>"‰Å>:ñ>9È>-RP>>ˆ²>S§I>d|º>M.e>\õu>dÜh>WhU>8wé>=7ž>T=&>`‰„>.C¡>*Žß>?7A>6Êk>D >1Ç>Ô>D >^ÐÍ>gøŒ>>‘²>;>Gµ@>SŒ >(âñ>7­¸>7¾ª>$£>“5> ûœ>9¨³>IyÌ>W½¼>i<>\/^>&ñ>'˜s>8R>HPc>EÝh>4¡h>,?þ>2N(>Wc>W !>M‚8>=I>"êN>#ª;>/ʤ>±~>*Ç«>%2w>÷¸>(6k>&û<>%r¸>0L>)çà>"™®>7Q>~>_> :>"ÞJ>&\ð>Λ>¦j>Þ–> -9ó> I>Ù–>0 p>#ˉ>"1>Þ=öÇc>ØE>nÁ>MH> 0}>Ïî>!ôz>ø…=ó?•=ë9w>wO>$Í#>&Ÿs>,CQ>,-¨>(w>Í >>zÖ>²v>/'`>"÷§>&®–>2±?>"Ô€>Šˆ>µÑ>.ŠF>3mP>-nÊ>ÎJ>Âq>&éJ>5íÔ>"Æ›>Ãï>3ð‚>4Ú€>6Ui>C‰ü>+l\>.l>,Ü»>#õ><P>9gc>/WÄ>$ÿ>#Û‹>)z%>._>’P>$óÀ>&½> -{=ßµo>ÂŒ>*²>0Êü>*ß¡>'“>+¡”>,½½>7ýâ>qmz>V´>.)X><ª¿>2] >‡5>ø©>(0,>9KÔ>6ˆî>G*>6Ûg>0]Z>5cº>FM>0¼0>g‹>½>'Ê¢>`F>9^k>^ >!Ð >Ih>Ê> p…>.£Ì>&š>|¦> -[]> ‡Ö>,ƶ>"ŽL>æ>4>Å>Rdý>1ÿ>û¸>m}>,hU>*@V>-%>1û>&>¸>~O>³>"V>$õ^>6Yü>$™,>=>•‚> Vp>Sb>ûŽ>Ö>^ú>E«>¦>.=> |ƒ>5f>4¤†>'zJ>& t>ä‡>'ú²>7E>*ͦ>&G8>+ƒ>/->&‹>Ù]>äd>ª¡=ø3Š>‰>&!>kŠ>Ïæ=ÏXç><Ö>/‰>Ê*>2é>*vø>!™÷>~U>B˜>$Ú>…i>#Ý>gù>@> ç3>-z>+ >%5>è>An>ŒU=ìì=ð¿g=æ¼À=ó‚V>éZ>ö—> -Ô>A>>ô\>M8>!˜>‰Ž> -? ->*ìs>6€¶>2YÜ>.d >33B> êõ>%F¾>*™F>_²>ˆý>>¨>Õm>!Pu>Ù¶>Î%>,u>&~>J“„>*Òr>#ý¥> w>;c>s >é]>[i>yx>¬> äã>((5>. -á>™ñ=õ²ž=ñ1#> 7=>DÄo>¡Ì>˜>RA>”ò> ýÁ>]l> q&> ©Ú>Šp=ýmP=êI=ócÌ>¢)> ‰>Àq>I>G’>ð>âk>9'>Fã>O> P> Æy>ÿ¼> ­¬>Ÿí>U=ðÜ>Us>•À>'’> d> …•> ü>H =ô.Í=ÞÊA=÷Å‚=ð=á =ý©ò> è=ÿ4¶>y >W¦=ëÖ•=õ«=Ý/×=î7=óÉë=ѶS=ú>¬=ÏÇA=Þ¿Ú> -¦Ÿ> È> Îú=ü×Ú=ö?ã>í=øÄF>Ý@>-ó>@Y>P>èÜ>§l=ûsÀ>îë>'ó>Ç(> î£>uA>¨Ž>³u>=þá>)V>]È>¼æ>çŽ> S>¢Ü>2ŒU>¯±>ædý?!’?‘‰>ÖG>zOƒ>.Ÿý>·¯>ÊQ>D*=éAÆ=Ë~ò>>#¸Ø>0S‰>x¿>…y>YÒ>{=ð&-=ûüú>SI=ûÓ =îÍz>Æf>RÂ>¸µ=ûíP>•°>Uq>=È>Ii–>(¹>A`>†Ú>Ä…>–ž=ëK=ÓìØ=éÄl>tJ>Z'>º®>~9> _ =çÊË>!c¹>´™>|Æ>®™>å> X>Ô7>hm>ÿÚ>â >§Ý>£b>6>ÜX> >#§à>¬Ñ>¥> Ζ>’>:=üJl>ÉQ> t=Öëå=Õ28>m;>!zf>_V´>H"%>†z>%™p>+~>K¨>Ú«>P3>ù%>¶ >c>©>À«>†n>'­>2™8><,J>+ɾ>¦W>/>ø>-Ô>7`> -Òß> -‰0>ºr>+Eã>,Ý”>8n>?ºp>AÁ…>2i>ºp>Ì%>œ>G>ý1>zõ>Ø>èÂ>|ï>2:>)*W>ÈÉ>öA>:-8>>˜!>§¼>îå=ê3Î>Xê>.@>>æ=ÿ~>š>Ñ>*fð>!q´=ül=ûc—>!Äg>C>!S~>Ú6>^è>2c>1q†>3ˆî>7"Š>:¨>5Ü´>:=Þ>#„>Ç ->ñ>æ]>º>$î>Ž>3zí>*ç> ø6>uC> ¦ >&Ü‚>ãª>º>Oo>4§'>’i>˜ß> SU> ÊÎ>'XÈ>‰’>Àä=æh¸>}>rJ>&͹>JË\>9ãh>5zª>KÐ>ÈÉ>/tø>éj>B>e>£Ç>>Ö>˜t>5Ë›>2õ >8Ý;> a >&¥2>9ÄW>3p>.bø>=·F>5ÛY>:›^>+F†>"Å>B½>5\˜>)½>"Ì>$RÂ>)bé>)¢Ü>¼>++q>F€ >BŠ˜>=VÓ>R‹Þ>[jì>M Ú>-*">Úº>-õ>$ì\> 6½>U°>Eh>[<>29#>H(g>'×>ÎJ>ûì>Ö>‚>Í>*g>2«>>Aãž>LûŠ>/PH>‘á>¾> yS=ñ©ƒ=ôa=ñý+=õ‹=×Ù²=¼,=ùÖ”=Ö{_=Ø€{=©ç=ª=ÝFr=Ôß=Âßï=Á3>$Q>+X>~ë>(Š=æF9=ÛÙo=×D:=ûQ¾>óë=÷9W=ÑB=þ&Ï>á™=è¾u=Å ô=¹í0=Ôˆs=ÊÓK=À–=çyc=üÅ`> -ú2>B8=þð—> U¤>°Î>:ªï>7=À>)¤§>âJ> SH>'êÆ>6q>:¾T>Ä=éÃ=ÿ§5>dŽ>p»>EÂ>.·>úW>'> äy>*ÜP>& =>œ†>ÓÏ> Ÿ>¶÷> é€=ù« >ÄI>5³m>@È>%˜>f>I¡>5Ì>ð£>«>©>#í>*×Î>#mû>éß>+Ã>)ñX> |Ã>$ p>8„Å>×>1Ö>G>ç&>>>1æ> m>!Û‘>dš>WÖ®><\ù>7E}>µl>Ðø> XÛ>¡>W{>ü>F>.¨J> -þ‘> „;> ½Ó>•P>46–>*ÄY>> ->е>%ÍÆ>ŠÖ=ìnÉ=íÑ>Âp>/sb>=eÏ>!Tå>,¥¿> !ê>ð>1W>-èî>: &>L½Ù>°”>‹å=ðy3>’w>>!p>û¢> €">-pT>#‰=åÀ=êy>VÜ>0!`=þ´ª>VÔ>2­ƒ>1Ùî>E›<>8{œ>Ë&>)%0>?ˆž>±™>>/ÎØ>A>M´>-L>/A>/%Ç>€bŒ>VÆ>EÀd>5îF>$M>#ÛÈ>z<>MP>zã>”>0åL>+¾–> w>Ÿ'>f>yw>/¹>(«’> ëè> À>™(>]=ìß}=÷¶Q>-> -²ž> k>±Ä>ç§>%¬>"ʬ>U~ö>98ú>g>¦O>"¢U>d3Ú>x‹ë>.Iy>,ê¹>Ƹ>(Ìø>4YE>1ù›>/.º>&„>d6>,­> ¤>ƒ”>%qó>®b>'“¹>,¶‡>-ƒŠ>8Á¸>2~š>9-!>9>>2>j‹&>i! ->TX3><Û>:*3>;}L>DIí>8ï>S6C>]RÀ>SßÆ>ewŸ>eS>P~c>Hòú>ѳ>',>Hò†>M˜³>!_æ>æ>1 Ð>*á5>üm>5²F>OÞ>;I8>y×·>t®Õ>N>Fñ¹>,‹›>IºÙ>A´ >?ô…>I/?>%É.>‰>0Q+>8?>µ;>(w®>JÓ&>9½>8Õç>x>R~ª>9Ö2>ri=éñ=ªÀ2=ä!=ÜTá>(S>*ËÑ>8Xs>8ÿË>)T™>&W‰>¥ =Øòù>­%>®>4ÏÆ>@^¼>M­:>Wn> ­=ËSµ>&–>(iˆ>2¹!>b;Í>(ÿ>wñ>5‡>_>sY>Pa—>89>+ ->3Qí>0ئ>,(Ï>&¼>G>hˆô>€W8>Hô­>#yß>ç©> ÁÍ> µ/>9«>SE>Ù>8J>/µ>'Çç>çÔ>»õ> ¬>EI–>7{è>- m>:*>é?>_=ëTž> yz>Òº>4/Q>2Ó><ù%>Z°>C>6k>79K>Y§¤>i¨ý>n^‚>jã >Yúz>9J4>4^}>">h£>l>j> ½ô>*3Ò>Þ“> -i7>22é>&Î’>@²>)Î>6ct>CPG>åÉ>"¿ñ>1|>3C->E%z>\[K>^èI>L>? á>:¥>1È÷>#Oc>,‡>@²£>J‚">&³o>-r>1z¾>0µó>&z>%x›>+ö@>"ÎÈ>#º>)‚¼>Dÿw>GN>6 ç>-`à>:\ç>RŒ{>ň>/[4>an>- ‹>‘G>)Ý>H—í>BJ>‘ö=ïÔ> -ï!>>(>-Ï>%×P>*7ä>|O> #¤>Pg>!Oí>2yŸ>6eù>*À=ù+¢>Š”>3\>e–>pw>jvÛ>eNc>^³i>P{>E$Ò>&³>¡¡>3ÿL>>KÒ><³'>u¡>GïE>mm>†®,>:\´>VÀ>,\Ð>(®>-„>8º«>D:Ä>-º>“>!M™>E/>N†—>Ÿ> -> -A–>"‰!>T7 >Y4>®>Õ›>Ña>žÛ>)£ø>+z>S:> ->éI>e½>3ýã>8ni>GŽÖ>l8ì>L*×>8ÓP>:®Y>Pmá><Ší> -ÄN>"uÉ>5êê><8Ž>æð>m>s^>)‹P>$iL>»[>.ô(>h’q>}L±>d—>+">§ä>(qo>!ä²> ô¼>#ú8>/ “>EZv>@¬à>dr>_Ð>ì>t> ¼ä>ì>-NÒ>7ÅÌ>S¿Æ>eá>XÍK>1A>,">M>%o>!×G>#/><¬´>9/)>+·G> O>2†>2ªô> ÇY> ™> Ö> -B>\“>6Ï>$à>úd>26“>?Œ>#¦>Ÿ>ÓÑ>†Ï=ß­#>¶Â> gO>a˜>S›>-›Ä>AA®>b¬Þ>w>ü>LüY>< ]>1Ûq>) =>(g >1;%>`–?>Cð>$Oq>!×1>9‰f>5“>¤C>l>ßÄ>*‘ü>QÕð>X>P>(•R>8>ÚF>Î>Œ>(jg>(Ñý>Ø>xÆ> g&>æ:>È‚> ¥3>¶>®ƒ>0›•>1ä>"7>,Ç­>r¦=Øq>¼9> †œ>øÊ>7Àä>"á9>,—Ø>N˜¡>V?Ê>EºD>,ݲ>"º1>>‹->5Á> />$®×>KH+> >.“¨><„¹>?؈>;c¥>3Å©>*g„> œ>2ú>M6ã>[,‰>OûŽ>7³>°¶>8y”>7âª>'>{>!UX>2»Y>7o>*çŽ>EÜ>_7‡>c€ü>C9†>E‚>R#>Y«®>E£>:xk>@i®>n…m>`°þ>P{Ú>MâÓ>' á>-]ú>9þà>=ô,>0Û>61+>N®w>@I±>2d>*lA>&¦>"9¹>7±p>k¨>Aº©> z1>ºƒ>B0>KCs>P6•>SÏU>G¬Š>HƒU>Eõg>2ðç>=‰Ð>B»ý>Ey¸>HŒ!>DcÊ>AÚû>H˜‘>Qnï>Tå£>S¾>9Àå>C>=f >"0>&Po>.jÞ>7G>:,Y>#€>%Ë>EJÁ>0aX>2•—>3 -Z>'p>!¦¨>)úp><á™>6O’>*Ó­>)°h>;C>E[>J¤»>SÁÂ>c<”>Ty>GP,>=Zô>);µ>'n ->)8¹>%jœ> î>µ>&…ö>*uk>EgÊ>F«ˆ>sº>½Ú>ÝJ>Q„>,%Ð>Ah>4"±>4>“N>-Â>)D]> ñ>>w`>P~>Ús>>–¦> …>Êî>",Ã>.cÝ>+0Â>eÙ>Uû>r=þ`÷>Ä> S%>qŸ>uh>,F¤>ft=ÈøU>ÚË>'YÒ>"A>U>Ú;>b>Ü‹>a?>>—>Aà>,Ì>ˆ—>:fì>M%é>IÕí>Kì™>6@®>-8n>8æ\>;BR>1ï_>7Å=>Dù>>AÍÌ>H]>KqŸ>Qû4>Ië>8N -># 0>Fz>**>$„÷>7Ó8>'q>'Ø>+ã>1:>²>Ã>¿¤>A‹>D Â>I ½>E}¬>[">/Ý>Sª>d2%>(l'>'ÿ>+E>&ÞÕ>û»>'t©>4r>/'7>PÄ=û÷¸=òû<>S>¼E>#O°>) r>#->>‰> ý>Ï’>ëâ>1> [h>v|>:Ù>%&>Œð>(`á>)Ho>½_>üp>%\Ÿ> -_»>‚—>áÄ>sU>Šü>Ó&>&G>.>&`V>A®?>89 >R>(a|>it>Sd>ÙÚ>2ÔØ>Mѽ>U”Œ>C4=öïE>0º> žp>Oþ>j0>K’>Š¿>²3>!®Ç>þ‹> U>Kc>$ßÏ>$ØÕ>+ä>,P…>\p>f¢_>šè>¶µõ>»Lœ>Zxî>#MË>Í@>•~>¨¥>!zý>$-É>*:!><Õ>~H>)€Š>3ŒÎ>6@1>= „>;)>'QK>Ö>+9l>;rG>Bû{>4Wí>#|’>A·>#:>$Çì>3|•>?&Ö>=˜X>Ü>~¦>Ó|>$)Ù>1Ã>Cèæ>=oð>5]>A+&>#Òe>&®>2Hû>,æ>8¹><;M>=Ìð>D‰ > v®>qÇ>$0P>& Ž>3[>.PÉ>&îq>'P´>7Îâ>:f;>6„>3áP>6~>&<>+Vª>,¦×>RÌ>_õ> -tM> ;>%|~>&:ú>%> _¿>âo> w>1Î>1Ç>,‡Ò>5*ž>_È>ÃÑ>f3>7l“>+ä>¢>%<Ö>O³ã>àj>A©~>2å> ½>+‡>Ò5>_>Ì.>œô>7}>2;>% ->Eˆ>8ˆ>)'™>&Kˆ>$½å=øo> -ÈÎ>‘>ûÌ> õM=Øy>1>%ƒL>$"Œ> <>Éõ>8h¢>?wQ>/pg>;ØÝ>:%4>,*>$œ&>^¯>J>Ö>5[> Íæ>&ï>I`>i€>b¹“>;BP>å->-ø>bŸ>3tu>4º>#Nn>Dj>¤> =W>ó>KÎ>rù>10>TvÔ>):é>òu>%@>/©>{5>&ø¢>'Í>Íj>'”>%y~>,YP>5]>$>!“ß>+¶+>)’u>¬ÿ>"‚> ƒÏ>>,Å°>4°>%L™>;W±>=Q/>+´˜>w8>íR>êù> ì½>CU>Ь>+Gb>-Šû>"ˆ…>.ÝÖ>Vû‡>%g^>éë>.·§>,;æ>-èA>~c>R >,wP>(ä > ;Ñ> q>ƹ>"IÉ>*=À>!®,>&D>'"&>ñT>1øè>h>[4>„U>%v€>!¥É> ®š>|`> Ê:>Eì>~_>=ë>Ñd>*Å>!£¢>>‚º>ÔQ> HT> @Á>(±—>!¨Ö>­W>a0>)ð5>)¦å> {É>,ž>4QD> >(ì”>5„>¢í>-{=ÿ´Q>1Ô>Ee]>G->@6>1Ž…>KðÏ>FË>7o‚>&IÇ>*ˆÈ> Š^>É>-œÇ>: D>wX>±Ì>?¤Ý>FØ%>:¸>3vÙ>l8>,V|>!þ+>æ;>H0É>-×j>8ýµ>7>.k5>3!T>"¼0>#°$>$> NŒ>.+G>3Ss>:ª¹>.¦w>1=)><©G>š>$ÙÉ>…‚>->vˆ>#q7>GË>+¾Q><èš>:¾]>.H ><6B>4Š(>'BA>,$>66 -> d0>3àŠ>*ƒ>â‡>»h>t>=ä†>8Ȳ>.†>2eú>6[u>=ø> 2¤>?µ>(]>0w>$¢‚>+¥P>'Ä>¤=ü`³>‡É>#þ…>0Ç%>1u„>©ö>/‹>å^>“> &þ>¸]><õ>Ö{>‹ñ>²O> ãt> ¢ô>Ñô> -²>Ÿ=í)]>æg>9û >V:4>,X>r·>m7=ôÙµ=³N=ð‚=n=™çv=Ð'=ß]=¿;=ß‚=·Ê)=ôý«>ûv=Úl=Ñú=êÈ'=ÒžÖ=óu>¥?=ÜÙ”> ºD>¯> Û·>ê > c> G>Kä>RÛ>ì²>5>]ë>"àc>W>Ë>³¹>o5>û>$>é@> -õ–>Qá=þØ•>¬> -•ô=û,=ü€ð=ÔÇ°=Ë<Ö=äMÒ=æø@=ôZ˜>x¹=æ¯à=ÊË)=ȬÒ=ãð>‘ü=Òc6>I> -> Á{>ú>0.ø>-ÌÑ>8#>:è2>4T >"Íð>âÿ>žÞ> €>77>It>HSÆ>7x%>$«h><!>=¾æ>&-Ë>-z>E´B>(ÇË>°>V> k‚>7Gc><þK>âR>õà>*û> 6ž>%µ7>n2>„Õ>@D.>3¨¢>+T>2iÆ>>œx><â.>+MÈ>/V8>@~ >Aõ>%eŽ>{€> s±>u‡>&M¥>:I>Íá \ No newline at end of file diff --git a/templates/fluxed_sky_564U.fits b/templates/fluxed_sky_564U.fits deleted file mode 100644 index 8744db90f..000000000 --- a/templates/fluxed_sky_564U.fits +++ /dev/null @@ -1,721 +0,0 @@ -SIMPLE = T / Standard FITS format: NOST 100-2.0 BITPIX = -32 / No. of bits per pixel NAXIS = 1 / No. of axes in image NAXIS1 = 29630 / No. of pixels EXTEND = T / FITS extension may be present BLOCKED = T / FITS file may be blocked COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 CRPIX1 = -24. / Reference pixel CRVAL1 = 5653.807985 / Coordinate at reference pixel CDELT1 = 0.03482 / Coordinate increment per pixel CTYPE1 = 'WAVELENGTH ' / Units of coordinate BUNIT = 'FLUX ' / Units of data values DATAMAX = 6166.51464844 / Maximum data value DATAMIN = -1299.49499512 / Minimum data value ORIGIN = 'ESO-MIDAS' / Written by MIDAS DATE = '2003-10-21T12:01:50' / [UTC] Date of writing FILENAME= 'fluxed_sky_564U.bdf' / Original file base-name MIDASFTP= 'IMAGE ' / MIDAS File Type OBJECT = 'MERGED_SKY1_REDU' / MIDAS desc.: IDENT(1) RA = 218.120877 / MIDAS desc.: O_POS(1) DEC = -1.10349 / MIDAS desc.: O_POS(2) EQUINOX = 2000. / MIDAS desc.: O_POS(3) DATE-OBS= '2002-07-08' / MIDAS desc.: O_TIME(1) MJD-OBS = 52463.0304605 / MIDAS desc.: O_TIME(4) TM-START= 2631.79151989 / MIDAS desc.: O_TIME(5) EXPTIME = 6600.0005 / MIDAS desc.: O_TIME(7) COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 INSTRUME= 'UVES ' / MIDAS desc.: INSTRUME(1) OBSERVER= 'UNKNOWN ' / MIDAS desc.: OBSERVER(1) TELESCOP= 'ESO-VLT-U2' / MIDAS desc.: TELESCOP(1) RADECSYS= 'FK5 ' / MIDAS desc.: RADECSYS(1) HISTORY COMPUTE/IMAG merged_sky_564U = (merged_sky1_5640U.fits + merged_sky2_56\HISTORY 40U.fits)/2 \HISTORY REBIN/LINEAR merged_sky_564U merged_sky_564U_rebinned\HISTORY 0.34820000000000E-01 0. + NO + WC \HISTORY COMPUTE/IMAG fluxed_sky_564U.bdf = \HISTORY merged_sky_564U_rebinned.bdf/80 PI-COI = 'UNKNOWN ' / Name of PI-COI. LST = 54317.89 / 15:05:17.890 LST at start (sec) UTC = 2622. / 00:43:42.000 UTC at start (sec) CHECKSUM= 'hSKgjPIehPIehPIe' / ASCII 1's complement checksum DATAMD5 = '35220fbb85ac4f104900fa316e491532' / data MD5 signature PIPEFILE= 'r.UVES.2002-07-08T00:43:51.792_0023.fits' / Filename of data product HIERARCH ESO OBS DID = 'ESO-VLT-DIC.OBS-1.7' / OBS Dictionary HIERARCH ESO OBS OBSERVER = 'UNKNOWN ' / Observer Name HIERARCH ESO OBS PI-COI NAME = 'UNKNOWN ' / PI-COI name HIERARCH ESO OBS PI-COI ID = 772 / ESO internal PI-COI ID HIERARCH ESO OBS TARG NAME = 'Q1429-0053B' / OB target name HIERARCH ESO OBS GRP = '0 ' / linked blocks HIERARCH ESO OBS NAME = 'Q1429B-S1-0' / OB name HIERARCH ESO OBS ID = 121739 / Observation block ID HIERARCH ESO OBS PROG ID = '69.A-0555(A)' / ESO program identification HIERARCH ESO OBS START = '2002-07-08T00:40:30' / OB start time HIERARCH ESO OBS TPLNO = 2 / Template number within OB HIERARCH ESO TPL DID = 'ESO-VLT-DIC.TPL-1.4' / Data dictionary for TPL HIERARCH ESO TPL ID = 'UVES_dic1_obs_exp' / Template signature ID HIERARCH ESO TPL NAME = 'Dic1 Observation' / Template name HIERARCH ESO TPL PRESEQ= 'UVES_dic_obs.seq' / Sequencer script HIERARCH ESO TPL START = '2002-07-08T00:42:50' / TPL start time HIERARCH ESO TPL VERSION = '@(#) $Revision: 2.39 $' / Version of the templHIERARCH ESO TPL NEXP = 1 / Number of exposures within templat HIERARCH ESO TPL EXPNO = 1 / Exposure number within template HIERARCH ESO DPR TECH = 'ECHELLE ' / Observation technique HIERARCH ESO DPR TYPE = 'OBJECT,POINT' / Observation type HIERARCH ESO DPR CATG = 'SCIENCE ' / Observation category HIERARCH ESO TEL DID = 'ESO-VLT-DIC.TCS' / Data dictionary for TEL HIERARCH ESO TEL ID = 'v 1.433+' / TCS version number HIERARCH ESO TEL DATE = '2002-05-19T18:41:37.000' / TCS installation date HIERARCH ESO TEL ALT = 65.2 / Alt angle at start (deg) HIERARCH ESO TEL AZ = 160.199 / Az angle at start (deg) S=0,W=90 HIERARCH ESO TEL GEOELEV = 2648. / Elevation above sea level (m) HIERARCH ESO TEL GEOLAT= -24.6254 / Tel geo latitute (+=North) (deg) HIERARCH ESO TEL GEOLON= -70.403 / Tel geo longitude (+=East) (deg) HIERARCH ESO TEL OPER = 'I, Condor' / Telescope Operator HIERARCH ESO TEL FOCU ID = 'NB ' / Telescope focus station ID HIERARCH ESO TEL FOCU LEN = 120. / Focal length (m) HIERARCH ESO TEL FOCU SCALE = 1.718 / Focal scale (arcsec/mm) HIERARCH ESO TEL FOCU VALUE = -29.551 / M2 setting (mm) HIERARCH ESO TEL PARANG START = 162.055 / Parallactic angle at start (deg) HIERARCH ESO TEL AIRM START = 1.101 / Airmass at start HIERARCH ESO TEL AMBI FWHM START = 0.57 / Observatory Seeing queriedHIERARCH ESO TEL AMBI PRES START = 743.78 / Observatory ambient air prHIERARCH ESO TEL AMBI WINDSP = 3.88 / Observatory ambient wind speed queHIERARCH ESO TEL AMBI WINDDIR = 88. / Observatory ambient wind directio HIERARCH ESO TEL AMBI RHUM = 8. / Observatory ambient relative humi HIERARCH ESO TEL AMBI TEMP = 10.45 / Observatory ambient temperature quHIERARCH ESO TEL MOON RA = 45638.787591 / ~~:~~:~~.~ RA (J2000) (deg) HIERARCH ESO TEL MOON DEC = 223443.88245 / ~~:~~:~~.~ DEC (J2000) (deg) HIERARCH ESO TEL TH M1 TEMP = 8.35 / M1 superficial temperature HIERARCH ESO TEL TRAK STATUS = 'NORMAL ' / Tracking status HIERARCH ESO TEL DOME STATUS = 'FULLY-OPEN' / Dome status HIERARCH ESO TEL CHOP ST = F / True when chopping is active HIERARCH ESO TEL PARANG END = 127.109 / Parallactic angle at end (deg) HIERARCH ESO TEL AIRM END = 1.341 / Airmass at end HIERARCH ESO TEL AMBI FWHM END = 1.12 / Observatory Seeing queried from ASHIERARCH ESO TEL AMBI PRES END = 743.98 / Observatory ambient air pressure qHIERARCH ESO ADA ABSROT START = -47.31207 / Abs rot angle at exp start (deg) HIERARCH ESO ADA POSANG= 0. / Position angle at start HIERARCH ESO ADA GUID STATUS = 'ON ' / Status of autoguider HIERARCH ESO ADA GUID RA = 218.08348 / 14:32:20.0 Guide star RA J2000 HIERARCH ESO ADA GUID DEC = -1.06142 / -01:03:41.1 Guide star DEC J2000 HIERARCH ESO ADA ABSROT END = 4.65079 / Abs rot angle at exp end (deg) HIERARCH ESO INS ID = 'UVES ' / Instrument ID. HIERARCH ESO INS DID = 'UVES_ICS' / Data dictionary for INS. HIERARCH ESO INS SOFW ID = '$Revision: 1.100 $' / Instrument SW. HIERARCH ESO INS SOFW MODE = 'NORMAL ' / Simulation mode. HIERARCH ESO INS PATH = 'RED ' / Optical path used. HIERARCH ESO INS MODE = 'DICHR#1 ' / Instrument mode used. HIERARCH ESO INS MIRR1 ID = 'FREE ' / Mirror unique ID. HIERARCH ESO INS MIRR1 NAME = 'FREE ' / Mirror common name. HIERARCH ESO INS MIRR1 NO = 1 / Mirror slide position. HIERARCH ESO INS OPTI1 ID = '1 ' / General Optical device unique ID. HIERARCH ESO INS OPTI1 NAME = 'OUT ' / General Optical device common nameHIERARCH ESO INS OPTI1 NO = 1 / Slot number. HIERARCH ESO INS OPTI1 TYPE = 'FREE ' / General Optical device Element. HIERARCH ESO INS SLIT1 NAME = 'FREE ' / Slit common name. HIERARCH ESO INS SLIT1 NO = 1 / Slide position. HIERARCH ESO INS SLIT1 WID = 0. / Slit width [arcsec]. HIERARCH ESO INS SLIT1 LEN = 0. / Slit length [arcsec]. HIERARCH ESO INS DROT MODE = 'ELEV ' / Instrument derotator mode. HIERARCH ESO INS DROT RA = 143229.010469 / ~~:~~:~~.~ RA (J2000) pointing HIERARCH ESO INS DROT DEC = -10612.570122 / -~~:~~:~~.~ DEC (J2000) pointinHIERARCH ESO INS DROT POSANG = 0. / Position angle [deg]. HIERARCH ESO INS DROT BEGIN = 147.408 / Physical position at start [deg]. HIERARCH ESO INS DPOL MODE = 'OFF ' / Instrument depolarizer mode. HIERARCH ESO INS DPOS NAME = 'OUT ' / Instrument depolarizer slide positHIERARCH ESO INS DPOS NO = 1 / Depolarizer slide position. HIERARCH ESO INS ADC MODE = 'OFF ' / ADC mode. HIERARCH ESO INS ADCS NAME = 'OUT ' / ADC slide position. HIERARCH ESO INS ADCS NO = 1 / ADC slide position. HIERARCH ESO INS ADC1 MODE = 'OFF ' / ADC mode. HIERARCH ESO INS ADC1 RA = 143229.010469 / ~~:~~:~~.~ RA (J2000) pointing HIERARCH ESO INS ADC1 DEC = -10612.570122 / -~~:~~:~~.~ DEC (J2000) pointinHIERARCH ESO INS ADC2 MODE = 'OFF ' / ADC mode. HIERARCH ESO INS ADC2 RA = 143229.010469 / ~~:~~:~~.~ RA (J2000) pointing HIERARCH ESO INS ADC2 DEC = -10612.570122 / -~~:~~:~~.~ DEC (J2000) pointinHIERARCH ESO INS FILT1 ID = 'FREE ' / Filter unique id. HIERARCH ESO INS FILT1 NAME = 'FREE ' / Filter common name. HIERARCH ESO INS FILT1 NO = 13 / Filter wheel position index. HIERARCH ESO INS OPTI2 ID = 'DIAPHR.27MM' / General Optical device unique IHIERARCH ESO INS OPTI2 NAME = 'OVRSIZ ' / General Optical device common nameHIERARCH ESO INS OPTI2 NO = 3 / Slot number. HIERARCH ESO INS OPTI2 TYPE = 'SLIDE ' / General Optical device Element. HIERARCH ESO INS MIRR2 ID = 'DICHR#1 ' / Mirror unique ID. HIERARCH ESO INS MIRR2 NAME = 'DICHR#1 ' / Mirror common name. HIERARCH ESO INS MIRR2 NO = 3 / Mirror slide position. HIERARCH ESO INS SHUT1 ID = 'TSH ' / Shutter ID. HIERARCH ESO INS SHUT1 NAME = 'Telescope shutter' / Shutter name. HIERARCH ESO INS SHUT1 ST = T / Shutter open. HIERARCH ESO INS SHUT2 ID = 'SPSH ' / Shutter ID. HIERARCH ESO INS SHUT2 NAME = 'SPHERE_SHUTTER' / Shutter name. HIERARCH ESO INS SHUT3 ID = 'TSH3 ' / Shutter ID. HIERARCH ESO INS SHUT3 NAME = 'D2L_SHUTTER' / Shutter name. HIERARCH ESO INS SHUT4 ID = 'TSH4 ' / Shutter ID. HIERARCH ESO INS SHUT4 NAME = 'THAR_SHUTTER' / Shutter name. HIERARCH ESO INS LAMP11 NAME = 'Iodine (I2) cell' / Lamp name. HIERARCH ESO INS LAMP11 ST = T / Calibration lamp activated. HIERARCH ESO INS SLIT3 WID = 1. / Slit width [arcsec]. HIERARCH ESO INS SLIT3 Y1FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y1OFFST = 4750. / Offset in Formula. HIERARCH ESO INS SLIT3 Y1RESOL = 40. / Resolution in encoder steps. HIERARCH ESO INS SLIT3 Y1MIN = 0.062 / Minimum slit width [arcsec]. HIERARCH ESO INS SLIT3 Y1MAX = 5.572 / Maximum slit width [arcsec]. HIERARCH ESO INS SLIT3 Y2FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y2OFFST = 4560. / Offset in Formula. HIERARCH ESO INS SLIT3 Y2RESOL = 40. / Resolution in encoder steps. HIERARCH ESO INS SLIT3 Y2MIN = 0.05 / Minimum slit width [arcsec]. HIERARCH ESO INS SLIT3 Y2MAX = 5.513 / Maximum slit width [arcsec]. HIERARCH ESO INS SLIT3 Y1ENC = 10640 / Slit Vertical top motor absolute eHIERARCH ESO INS SLIT3 Y2ENC = 10426 / Slit Vertical bottom motor absolutHIERARCH ESO INS SLIT3 LEN = 11. / Slit length [arcsec]. HIERARCH ESO INS SLIT3 X1FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X1OFFST = 2381. / Offset in Formula. HIERARCH ESO INS SLIT3 X1RESOL = 40. / Resolution in encoder steps. HIERARCH ESO INS SLIT3 X1MIN = 0.087 / Minimum slit length [arcsec]. HIERARCH ESO INS SLIT3 X1MAX = 15.752 / Maximum slit length [arcsec]. HIERARCH ESO INS SLIT3 X2FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X2OFFST = 2307. / Offset in Formula. HIERARCH ESO INS SLIT3 X2RESOL = 40. / Resolution in encoder steps. HIERARCH ESO INS SLIT3 X2MIN = 0.064 / Minimum slit length [arcsec]. HIERARCH ESO INS SLIT3 X2MAX = 15.833 / Maximum slit length [arcsec]. HIERARCH ESO INS SLIT3 X1ENC = 6701 / Slit Horizontal left motor absolutHIERARCH ESO INS SLIT3 X2ENC = 6631 / Slit Horizontal right motor absoluHIERARCH ESO INS FILT3 ID = 'BS4 ' / Filter unique id. HIERARCH ESO INS FILT3 NAME = 'SHP700 ' / Filter common name. HIERARCH ESO INS FILT3 NO = 4 / Filter wheel position index. HIERARCH ESO INS DET6 NAME = 'Red exp. meter PMT' / detector name. HIERARCH ESO INS DET6 CTMIN = -6. / Minimum count during exposure. HIERARCH ESO INS DET6 CTMAX = 18. / Maximum count during exposure. HIERARCH ESO INS DET6 CTMEAN = 2.7 / Average counts during exposure. HIERARCH ESO INS DET6 CTRMS = 3.04 / RMS of counts during exposure. HIERARCH ESO INS DET6 TMMEAN = 0.5 / Normalised mean exposure time. HIERARCH ESO INS DET6 CTTOT = 17411. / Total counts during exposure. HIERARCH ESO INS DET6 UIT = 1. / User defined Integration time [secHIERARCH ESO INS DET6 OFFDRK = 0. / Average dark background counts. HIERARCH ESO INS DET6 OFFSKY = 6. / Average sky background counts. HIERARCH ESO INS SHUT6 ID = 'REXS ' / Shutter ID. HIERARCH ESO INS SHUT6 NAME = 'Red exp. meter sh.' / Shutter name. HIERARCH ESO INS SHUT6 ST = T / Shutter open. HIERARCH ESO INS GRAT2 ID = 'CD#3 ' / Grating unique ID. HIERARCH ESO INS GRAT2 NAME = 'CD#3 ' / Grating common name. HIERARCH ESO INS PIXSCALE = 0.182 / Pixel scale [arcsec]. HIERARCH ESO INS GRAT2 X = 2048. / X pixel for central wavelength. HIERARCH ESO INS GRAT2 Y = 2048. / Y pixel for central wavelength. HIERARCH ESO INS GRAT2 FRML = 'ENC=OFFST+RESOL*ASIN(WLEN*GRV/(2*COS(ROT)))' HIERARCH ESO INS GRAT2 OFFST = 3845390. / Offset in Formula. HIERARCH ESO INS GRAT2 RESOL = 15000. / Resolution in encoder steps. HIERARCH ESO INS GRAT2 GRV = 0.0006 / Grating grooves/nm. HIERARCH ESO INS GRAT2 ROT = 22.668 / Grating rot angle [deg]. HIERARCH ESO INS GRAT2 NO = 1 / Grating wheel position index. HIERARCH ESO INS GRAT2 WLEN = 564. / Grating central wavelength [nm]. HIERARCH ESO INS GRAT2 DISP = 0.1 / Grating dispersion [nm/mm]. HIERARCH ESO INS GRAT2 ENC = 4003775 / Grating absolute encoder position.HIERARCH ESO INS TILT2 POS = 0. / Science camera tilt (pixels). HIERARCH ESO INS TILT2 FRML = 'ENC=OFFST+RESOL*ASIN(2*POS-(MAX+MIN)/(MAX-MIN'HIERARCH ESO INS TILT2 OFFST = 16000. / Offset in Formula. HIERARCH ESO INS TILT2 RESOL = -100. / Resolution in encoder steps. HIERARCH ESO INS TILT2 POSMIN = -222. / Minimum camera tilt (pixels). HIERARCH ESO INS TILT2 POSMAX = 222. / Maximum camera tilt (pixels). HIERARCH ESO INS TILT2 ENC = 16048 / Camera tilt absolute encoder positHIERARCH ESO INS SHUT7 ID = 'FPSH ' / Shutter ID. HIERARCH ESO INS SHUT7 NAME = 'FIBRPROJSHUTTER' / Shutter name. HIERARCH ESO INS DROT END = 155.912 / Physical position at end [deg]. HIERARCH ESO INS TEMP31 NAME = 'Iodine cell temp.' / Temperature sensor name. HIERARCH ESO INS TEMP31 START = 69.9 / Temperature at start [C]. HIERARCH ESO INS TEMP31 STOP = 69.9 / Temperature at end [C]. HIERARCH ESO INS TEMP31 MIN = 69.7 / Minimum temperature [C]. HIERARCH ESO INS TEMP31 MAX = 70.2 / Maximum temperature [C]. HIERARCH ESO INS TEMP31 MEAN = 70. / Average temperature [C]. HIERARCH ESO INS TEMP1 NAME = 'Temp. blue camera' / Temperature sensor name. HIERARCH ESO INS TEMP1 START = 7.2 / Temperature at start [C]. HIERARCH ESO INS TEMP1 STOP = 7.4 / Temperature at end [C]. HIERARCH ESO INS TEMP1 MIN = 7.2 / Minimum temperature [C]. HIERARCH ESO INS TEMP1 MAX = 7.4 / Maximum temperature [C]. HIERARCH ESO INS TEMP1 MEAN = 7.3 / Average temperature [C]. HIERARCH ESO INS TEMP2 NAME = 'Temp. red camera' / Temperature sensor name. HIERARCH ESO INS TEMP2 START = 7.3 / Temperature at start [C]. HIERARCH ESO INS TEMP2 STOP = 7.5 / Temperature at end [C]. HIERARCH ESO INS TEMP2 MIN = 7.3 / Minimum temperature [C]. HIERARCH ESO INS TEMP2 MAX = 7.5 / Maximum temperature [C]. HIERARCH ESO INS TEMP2 MEAN = 7.4 / Average temperature [C]. HIERARCH ESO INS TEMP3 NAME = 'Temp. table' / Temperature sensor name. HIERARCH ESO INS TEMP3 START = 7.5 / Temperature at start [C]. HIERARCH ESO INS TEMP3 STOP = 7.6 / Temperature at end [C]. HIERARCH ESO INS TEMP3 MIN = 7.5 / Minimum temperature [C]. HIERARCH ESO INS TEMP3 MAX = 7.6 / Maximum temperature [C]. HIERARCH ESO INS TEMP3 MEAN = 7.6 / Average temperature [C]. HIERARCH ESO INS TEMP4 NAME = 'Temp. inside air' / Temperature sensor name. HIERARCH ESO INS TEMP4 START = 8.5 / Temperature at start [C]. HIERARCH ESO INS TEMP4 STOP = 8.7 / Temperature at end [C]. HIERARCH ESO INS TEMP4 MIN = 8.5 / Minimum temperature [C]. HIERARCH ESO INS TEMP4 MAX = 8.7 / Maximum temperature [C]. HIERARCH ESO INS TEMP4 MEAN = 8.7 / Average temperature [C]. HIERARCH ESO INS SENS26 NAME = 'Barometer pressure' / sensor common name. HIERARCH ESO INS SENS26 START = 743.1 / sensor value at start. HIERARCH ESO INS SENS26 STOP = 743.3 / sensor value at end. HIERARCH ESO INS SENS26 MIN = 743.1 / Minimum sensor value. HIERARCH ESO INS SENS26 MAX = 743.3 / Maximum sensor value. HIERARCH ESO INS SENS26 MEAN = 743.2 / Average sensor vlaue. HIERARCH ESO DET ID = 'CCD FIERA - Rev 2.87' / Detector system Id HIERARCH ESO DET NAME = 'ccdUvR - ccdUvr' / Name of detector system HIERARCH ESO DET DATE = '09-07-1998' / Installation date HIERARCH ESO DET DID = 'ESO-VLT-DIC.CCDDCS,ESO-VLT-DIC.FCDDCS' / Diction HIERARCH ESO DET BITS = 16 / Bits per pixel readout HIERARCH ESO DET RA = 218.12087695 / Apparent 14:32:29.0 RA at start HIERARCH ESO DET DEC = -1.1034917 / Apparent -01:06:12.5 DEC at start HIERARCH ESO DET SOFW MODE = 'Normal ' / CCD sw operational mode HIERARCH ESO DET CHIPS = 2 / # of chips in detector array HIERARCH ESO DET CHIP1 ID = 'CCID-20 ' / Detector chip identification HIERARCH ESO DET CHIP1 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP1 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP1 X = 1 / X location in array HIERARCH ESO DET CHIP1 Y = 1 / Y location in array HIERARCH ESO DET CHIP1 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP1 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP1 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP1 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET CHIP2 ID = 'CCD-44 ' / Detector chip identification HIERARCH ESO DET CHIP2 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP2 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP2 X = 2 / X location in array HIERARCH ESO DET CHIP2 Y = 1 / Y location in array HIERARCH ESO DET CHIP2 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP2 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP2 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP2 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET EXP NO= 3151 / Unique exposure ID number HIERARCH ESO DET EXP TYPE = 'Normal ' / Exposure type HIERARCH ESO DET EXP DUMDIT = 0 / # of dummy readouts HIERARCH ESO DET EXP RDTTIME = 45.308 / image readout time HIERARCH ESO DET EXP XFERTIM = 45.319 / image transfer time HIERARCH ESO DET READ MODE = 'normal ' / Readout method HIERARCH ESO DET READ SPEED = '2pts/50kHz/hg' / Readout speed HIERARCH ESO DET READ CLOCK = '50kHz/2ports/hi' / Readout clock pattern used HIERARCH ESO DET OUTPUTS = 2 / # of outputs HIERARCH ESO DET OUTREF= 0 / reference output HIERARCH ESO DET OUT1 ID = 'L ' / Output ID as from manufacturer HIERARCH ESO DET OUT1 NAME = 'L ' / Description of output HIERARCH ESO DET OUT1 CHIP = 1 / Chip to which the output belongs HIERARCH ESO DET OUT1 X= 1 / X location of output HIERARCH ESO DET OUT1 Y= 1 / Y location of output HIERARCH ESO DET OUT1 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT1 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT1 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT1 RON = 3.1 / Readout noise per output (e-) HIERARCH ESO DET OUT1 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET OUT4 ID = 'R ' / Output ID as from manufacturer HIERARCH ESO DET OUT4 NAME = 'R ' / Description of output HIERARCH ESO DET OUT4 CHIP = 2 / Chip to which the output belongs HIERARCH ESO DET OUT4 X= 4096 / X location of output HIERARCH ESO DET OUT4 Y= 1 / Y location of output HIERARCH ESO DET OUT4 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT4 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT4 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT4 RON = 2.06 / Readout noise per output (e-) HIERARCH ESO DET OUT4 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET FRAM ID = 1 / Image sequencial number HIERARCH ESO DET FRAM TYPE = 'Normal ' / Type of frame HIERARCH ESO DET WINDOWS = 1 / # of windows readout HIERARCH ESO DET WIN1 STRX = 1 / Lower left pixel in X HIERARCH ESO DET WIN1 STRY = 1 / Lower left pixel in Y HIERARCH ESO DET WIN1 NX = 2148 / # of pixels along X HIERARCH ESO DET WIN1 NY = 2048 / # of pixels along Y HIERARCH ESO DET WIN1 BINX = 2 / Binning factor along X HIERARCH ESO DET WIN1 BINY = 2 / Binning factor along Y HIERARCH ESO DET WIN1 NDIT = 1 / # of subintegrations HIERARCH ESO DET WIN1 UIT1 = 6600. / user defined subintegration time HIERARCH ESO DET WIN1 DIT1 = 6600.000496 / actual subintegration time HIERARCH ESO DET WIN1 DKTM = 6600.6584 / Dark current time HIERARCH ESO DET SHUT TYPE = 'Slit ' / type of shutter HIERARCH ESO DET SHUT ID = 'ccdUvr shutter' / Shutter unique identifier HIERARCH ESO DET SHUT TMOPEN = 0.035 / Time taken to open shutter HIERARCH ESO DET SHUT TMCLOS = 0.036 / Time taken to close shutter HIERARCH ESO DET TELE INT = 60. / Interval between two successive teHIERARCH ESO DET TELE NO = 3 / # of sources active HIERARCH ESO DET TLM1 NAME = 'CCD T1 ' / Description of telemetry param. HIERARCH ESO DET TLM1 ID = 'CCD Sensor1' / ID of telemetry sensor HIERARCH ESO DET TLM1 START = 135. / Telemetry value at read start HIERARCH ESO DET TLM1 END = 135. / Telemetry value at read completionHIERARCH ESO DET TLM2 NAME = 'CCD T2 ' / Description of telemetry param. HIERARCH ESO DET TLM2 ID = 'CCD Sensor2' / ID of telemetry sensor HIERARCH ESO DET TLM2 START = 137.1 / Telemetry value at read start HIERARCH ESO DET TLM2 END = 137.2 / Telemetry value at read completionHIERARCH ESO DET TLM3 NAME = 'EBOX T ' / Description of telemetry param. HIERARCH ESO DET TLM3 ID = 'Box Temp' / ID of telemetry sensor HIERARCH ESO DET TLM3 START = 283.2 / Telemetry value at read start HIERARCH ESO DET TLM3 END = 283.2 / Telemetry value at read completionHIERARCH ESO OCS SIMCAL= 0 / Simultaneous Calibration flag HIERARCH ESO PRO CATG = 'MERGED_SKY1_REDU' / Category of pipeline product frameHIERARCH ESO PRO TYPE = 'PREPROCESSED' / Product type HIERARCH ESO PRO REDLEVEL = 'PHOTOMETRIC,GEOMETRIC' / Reduction level of daHIERARCH ESO PRO REC1 STATUS = 'OK ' / Pipeline status of frame HIERARCH ESO PRO DATAAVG = 14.2288 / Mean of pixel values HIERARCH ESO PRO DATARMS = 116.191 / Standard deviation of pixel valuesHIERARCH ESO PRO DATAMED = 9.92894 / Median of pixel values HIERARCH ESO PRO REC1 START = '2003-10-21T11:00:00' / Date when recipe executHIERARCH ESO PRO REC1 RAW1 NAME= 'UVES.2002-07-08T00:43:51.792_stk.fits' / File HIERARCH ESO PRO REC1 RAW1 CATG= 'SCIENCE_RED' / Frame category of raw frame #1 HIERARCH ESO PRO REC1 CAL1 NAME= 'UV_PDRS_020707A_REDL564d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL1 CATG= 'DRS_SETUP_REDL' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL1 DATAMD5 = 'd41d8cd98f00b204e9800998ecf8427e' / MDHIERARCH ESO PRO REC1 CAL2 NAME= 'UV_PORD_020707A_REDL564d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL2 CATG= 'ORDER_TABLE_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL2 DATAMD5 = 'b1267ef003c36ff2d526246071aa116f' / MDHIERARCH ESO PRO REC1 CAL3 NAME= 'UV_PBKG_020707A_REDL564d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL3 CATG= 'BACKGR_TABLE_REDL' / Frame category of calibraHIERARCH ESO PRO REC1 CAL3 DATAMD5 = '97d65cb5e15a967d096707373966ad00' / MDHIERARCH ESO PRO REC1 CAL4 NAME= 'UV_PLI1_020707A_REDL564d1_2x2_10.tfits' / FileHIERARCH ESO PRO REC1 CAL4 CATG= 'LINE_TABLE_REDL1' / Frame category of calibratHIERARCH ESO PRO REC1 CAL4 DATAMD5 = 'eb5287aa9337846961eb5c6b20f80ecb' / MDHIERARCH ESO PRO REC1 CAL5 NAME= 'UV_PLI2_020707A_REDL564d1_2x2_10.tfits' / FileHIERARCH ESO PRO REC1 CAL5 CATG= 'LINE_TABLE_REDL2' / Frame category of calibratHIERARCH ESO PRO REC1 CAL5 DATAMD5 = '4656f6c66f7db5f4f22c0285477f259c' / MDHIERARCH ESO PRO REC1 CAL6 NAME= 'UV_PLI3_020707A_REDL564d1_2x2_10.tfits' / FileHIERARCH ESO PRO REC1 CAL6 CATG= 'LINE_TABLE_REDL3' / Frame category of calibratHIERARCH ESO PRO REC1 CAL6 DATAMD5 = '5bd633e54e98755e7e3526fa63eb08ce' / MDHIERARCH ESO PRO REC1 CAL7 NAME= 'UV_MBIA_020706A_REDL_2x2.fits' / File name of HIERARCH ESO PRO REC1 CAL7 CATG= 'MASTER_BIAS_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL7 DATAMD5 = '53bf098061fa0b97a7ba8acaee25a907' / MDHIERARCH ESO PRO REC1 CAL8 NAME= 'UV_MFLT_020707A_REDL564d1_2x2_10.fits' / File HIERARCH ESO PRO REC1 CAL8 CATG= 'MASTER_FLAT_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL8 DATAMD5 = '5ce19f4049312b1269eb0afc4768fe26' / MDHIERARCH ESO PRO REC1 CAL9 NAME= 'UV_PDRS_020707A_REDU564d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL9 CATG= 'DRS_SETUP_REDU' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL9 DATAMD5 = 'd41d8cd98f00b204e9800998ecf8427e' / MDHIERARCH ESO PRO REC1 CAL10 NAME = 'UV_PORD_020707A_REDU564d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL10 CATG = 'ORDER_TABLE_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL10 DATAMD5 = 'd2098299ac0028abf7ec71a9bef1f686' / MDHIERARCH ESO PRO REC1 CAL11 NAME = 'UV_PBKG_020707A_REDU564d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL11 CATG = 'BACKGR_TABLE_REDU' / Frame category ofHIERARCH ESO PRO REC1 CAL11 DATAMD5 = '589bf913d5177c4a20eb0af6770e13f8' / MDHIERARCH ESO PRO REC1 CAL12 NAME = 'UV_PLI1_020707A_REDU564d1_2x2_10.tfit'HIERARCH ESO PRO REC1 CAL12 CATG = 'LINE_TABLE_REDU1' / Frame category of HIERARCH ESO PRO REC1 CAL12 DATAMD5 = 'd848eb210143f9e517c5aa5cf5979404' / MDHIERARCH ESO PRO REC1 CAL13 NAME = 'UV_PLI2_020707A_REDU564d1_2x2_10.tfit'HIERARCH ESO PRO REC1 CAL13 CATG = 'LINE_TABLE_REDU2' / Frame category of HIERARCH ESO PRO REC1 CAL13 DATAMD5 = 'be3bdeefed4bc355647d97e8044e8390' / MDHIERARCH ESO PRO REC1 CAL14 NAME = 'UV_PLI3_020707A_REDU564d1_2x2_10.tfit'HIERARCH ESO PRO REC1 CAL14 CATG = 'LINE_TABLE_REDU3' / Frame category of HIERARCH ESO PRO REC1 CAL14 DATAMD5 = 'e6fafa273f3c47fe101814186920794c' / MDHIERARCH ESO PRO REC1 CAL15 NAME = 'UV_MBIA_020706A_REDU_2x2.fits' / File HIERARCH ESO PRO REC1 CAL15 CATG = 'MASTER_BIAS_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL15 DATAMD5 = 'db71a4cb17339a1feb4549d209f5b960' / MDHIERARCH ESO PRO REC1 CAL16 NAME = 'UV_MFLT_020707A_REDU564d1_2x2_10.fits'HIERARCH ESO PRO REC1 CAL16 CATG = 'MASTER_FLAT_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL16 DATAMD5 = '08d8d7a1129c2a1b1bbeb5b2b29c51f8' / MDHIERARCH ESO PRO REC1 PARAM1 NAME = 'FFMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM1 SVALUE = 'E ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM2 NAME = 'EXMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM2 SVALUE = 'AVERAGE ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM3 NAME = 'BGMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM3 SVALUE = 'MEDIAN ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM4 NAME = 'INTMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM4 SVALUE = 'Y,Y,Y ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM5 NAME = 'MTD2D ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM5 SVALUE = 'N,MED,E,A' / Value of recipe parameterHIERARCH ESO PRO REC1 STOP = '2003-10-21T11:00:23' / Date when recipe executHIERARCH ESO PRO DID = 'PRO-1.15' / Data dictionary for PRO HIERARCH ESO PRO DO ID = 'DO-1_18 ' / Data Organizer identification ID HIERARCH ESO PRO RBS ID= 'RBS-1_11' / Reduction Block Scheduler identification IHIERARCH ESO PRO REC1 ID = 'uves_obs_scired' / Pipeline recipe (unique) idHIERARCH ESO PRO REC1 DRS ID = 'MIDAS/02SEPpl1.3' / Data Reduction System idenHIERARCH ESO PRO REC1 PIPE ID = 'uves/2.0.4' / Pipeline (unique) identifier HIERARCH ESO PRO REC1 RB ID = 'sky_564.rX' / Reduction Block identifier HIERARCH ESO PRO ARCFILE = 'UVES.2002-07-08T00:43:51.792.fits' / Archive f HISTORY ESO-DESCRIPTORS START ................ HISTORY 'CRVAL','R*8',1,2,'3E23.15' HISTORY 5.653829300000000E+03 1.000000000000000E+00 HISTORY HISTORY 'BIAS_SUBTR','C*1',1,3,'3A1' HISTORY YES HISTORY HISTORY 'BACKGROUND','C*1',1,11,'11A1' HISTORY subtracted HISTORY HISTORY 'WSTART','R*8',1,16,'3E23.15' HISTORY 5.654678050000000E+03 5.708013499999999E+03 5.762401399999999E+03 HISTORY 5.817807800000000E+03 5.874300600000000E+03 5.931879799999999E+03 HISTORY 5.990647249999999E+03 6.050535050000000E+03 6.111679000000000E+03 HISTORY 6.174045150000000E+03 6.237701400000000E+03 6.302715650000000E+03 HISTORY 6.369053950000000E+03 6.436852099999999E+03 6.506076149999999E+03 HISTORY 6.576794000000000E+03 HISTORY HISTORY 'NPTOT','I*4',1,16,'7I10' HISTORY 2800 2825 2850 2876 2903 2930 2958 HISTORY 2986 3014 3043 3073 3103 3134 3165 HISTORY 3196 3229 HISTORY HISTORY 'NORDER','I*4',1,16,'7I10' HISTORY 107 106 105 104 103 102 101 HISTORY 100 99 98 97 96 95 94 HISTORY 93 92 HISTORY HISTORY 'SHORTLOG','C*50',1,3,'70A1' HISTORY Recipe log (Tu, 21 Oct 2003 11:00:23): Science reduction do HISTORY ne. ........................................ HISTORY .......... HISTORY HISTORY 'REDBLOCK','C*48',1,45,'70A1' HISTORY recipe: uves_obs_scired instrument: uves HISTORY /data01/data/calib/UVES_SKY_ADD/564/r.UVES.2 HISTORY 002-07-08T00:43:51.792 { HISTORY /data01/data/calib/UVES_SKY_ADD/564/UVES HISTORY .2002-07-08T00:43:51.792_stk.fits SCIENCE_RED } HISTORY { HISTORY /data01/data/calib/UVES_SKY_ADD/564/UV_PDRS_020707A_REDL56 HISTORY 4d1_2x2.tfits DRS_SETUP_REDL /data01/data/calib/UVES_SKY_ADD/ HISTORY 564/UV_PORD_020707A_REDL564d1_2x2.tfits ORDER_TABLE_REDL /data0 HISTORY 1/data/calib/UVES_SKY_ADD/564/UV_PBKG_020707A_REDL564d1_2x2.tfits BACK HISTORY GR_TABLE_REDL /data01/data/calib/UVES_SKY_ADD/564/UV_PLI1_020707 HISTORY A_REDL564d1_2x2_10.tfits LINE_TABLE_REDL1 /data01/data/calib/UVES_ HISTORY SKY_ADD/564/UV_PLI2_020707A_REDL564d1_2x2_10.tfits LINE_TABLE_REDL2 HISTORY /data01/data/calib/UVES_SKY_ADD/564/UV_PLI3_020707A_REDL564d1_2x2_10 HISTORY .tfits LINE_TABLE_REDL3 /data01/data/calib/UVES_SKY_ADD/564/UV_MBI HISTORY A_020706A_REDL_2x2.fits MASTER_BIAS_REDL /data01/data/cal HISTORY ib/UVES_SKY_ADD/564/UV_MFLT_020707A_REDL564d1_2x2_10.fits MASTER_FLAT_ HISTORY REDL /data01/data/calib/UVES_SKY_ADD/564/UV_PDRS_020707A_REDU564d HISTORY 1_2x2.tfits DRS_SETUP_REDU /data01/data/calib/UVES_SKY_ADD/56 HISTORY 4/UV_PORD_020707A_REDU564d1_2x2.tfits ORDER_TABLE_REDU /data01/ HISTORY data/calib/UVES_SKY_ADD/564/UV_PBKG_020707A_REDU564d1_2x2.tfits BACKGR HISTORY _TABLE_REDU /data01/data/calib/UVES_SKY_ADD/564/UV_PLI1_020707A_ HISTORY REDU564d1_2x2_10.tfits LINE_TABLE_REDU1 /data01/data/calib/UVES_SK HISTORY Y_ADD/564/UV_PLI2_020707A_REDU564d1_2x2_10.tfits LINE_TABLE_REDU2 HISTORY /data01/data/calib/UVES_SKY_ADD/564/UV_PLI3_020707A_REDU564d1_2x2_10.t HISTORY fits LINE_TABLE_REDU3 /data01/data/calib/UVES_SKY_ADD/564/UV_MBIA_ HISTORY 020706A_REDU_2x2.fits MASTER_BIAS_REDU /data01/data/calib HISTORY /UVES_SKY_ADD/564/UV_MFLT_020707A_REDU564d1_2x2_10.fits MASTER_FLAT_RE HISTORY DU } E HISTORY AVERAGE HISTORY MEDIAN HISTORY HISTORY 'LHCUTS','R*4',1,4,'5E14.7' HISTORY 0.0000000E+00 0.0000000E+00-1.2994950E+03 6.1665146E+03 HISTORY HISTORY ESO-DESCRIPTORS END ................ END EÀ´C¨¨÷ÖbÈD»C#'»ÂÝk¦ByÙÍ@zqÃJ&ØÀ©ŠÄÏÄ¢o×ÄFxvCƒBÚnýAêÂÀJ´ÂÝeºÂ>¾†B =B4ýµÂ›ƒÜÃRÃOgÂŒX ÓÙÂÒƒÁõÆ Â-¶ê‰6ÂÕ¥ Âá¢V eQÁ¶*ÁëÊ`Á¢ðÁŒ{+ÁÃ^ÁÕTsÁê(6Â$x„²ÀÄ­uÁ`–šÁ§Áˆ7*Áƒ‹äÁ‚rŸÁF­gÁOæÁ üÀñúÀÏתÁ\âÁ9$ÚÁBœJÁïdÀòðFÀìUÀ´QFÀy\ À‡ËÀ„˜vÀS#À+æÀ9²ÃÀ¦:À}ün¿” Ù¿½hÒ¿ñõš¿àPÊÀd‹À¯ÜüÀ„^ÀMöc¿«Ò­¿ŸD¿›ÒÒ¾ Œ¿åFÀ48À*¶ÂÀã–?HÛ2>¤;Ö¿HíZ¿<Ž)¿1÷o¿¤¾=K£>qÍh>}F >‡Í>“d¢>—®¬¿OÜÀ%ÛZ¿Ö³¿??/¿æŒÞ¿(²Ö?˜$?Í·ò?#º©¿¨å8¿Òi¿³x¿£F9¾8^?ÑIÈ?¾ˆåY¿ï%­¿tÓ>µÔi¿/½C¿]aN¾øcb¿,@¿8à >˜›Ü?2ï?‘ZÈ>ß»p=§±9>;J¾š¹V¿g)¾“Hî½ì*¨¾ÖÑ£¿Bø¿AÌ®¾I*&¾j¾…0½ÄsO=îÕ¦>}Ô’=á¡®¾•J¾mн½ˆ@ >?*>é½>¬¨>]¼¸<ùÜ;>Æ‘Ï>™;‘¾^ê¾ffû¾açÓ¾lµ¾ë «¿UØ¿-¥‚¾Ø¶>ºP>>Š±½>PLê>žÀÊ>G“>Ó>3<Øè¾A(¾içZ¾?ӽнڽ~€½…ئ½ºb=´³f>¢ðD=â¡Â¾ -“ξ¡J½ -•è>‰ ¾GWu¾L/ù=ð´c>3ïM>„s½Žï >6ÆL?´¾‹ÓÔ¾Î7½àdF½ßf½àU½½è€e¾²Ò¾tÑs¾›Ë´¾Un¾>ŽZ9ö}V¾Ò×>²â>  v¿ -¡¿bŽ¿€|¿(uÏ¿c"¿i†¿YU#¿Y½¡õç½’Ô¦;ÃáR>ZJ>¢~½ÖÂb¿ýv¿ xª¾¦Ój>>Ts=Å{a¾UP¾›+b¾¿í¾þìë¿Ò¶>sV>&ÒZ¾ÅkR¿ßÁ¾ñ¯Ó> éq»_1u¾¼F½ÉG½ZÚ½Õ¸3¾çiÅ¿ Œ-¾hy¨¾ n½ƒ1Ù½–„ù½t]½ˆâ6¾ôx½™Éƒ=§úæ=“çˆ=‡ž‹=ìOE>|‘>ß8=í^Ë>Ù> Uý%º*½ƒ®ÈC;ù£†;ö¦=¥‚½ 㸽¦0›=ˆŸ5=ošÀ==ïÎ=Y¼½½—U½ †—½|©½ð˜«½œ”u½-ÚR½þŸ½Ÿä=åŸ;FjÃ<Ø›»=®úW=Êφ=xǽº6;ß.=áãó=¬,2½[qŽ¾)P½ÍEý½^@í½M´š½´:Z½óÆZ¾+ò½Tis=sÙ=o›-=`^¼œŽÉ½È4¬½mm><ÊÖ>¢_=Äa—¾6½JAŠ> ½§½Õ.m=¸øJ=¬r="¹ž½Pݼl· =Qp~=Šz¼ -Ç>¼¯=l¤ð=Qü -¼¨5ä½N -½1>^»‰&W;¢êMºHíÞ<“TÀ=ˆ¼j=ÒÙR=ˆª¹<î&»ÀɃ=K~=iÇ-<ääb=¾ö> -oÐ=[#<Ù¨V<äЋ;eˆ¼ÀÂj½´ãM½@Õݽrv½Á꙼ßs6=,.½9J½)m¼‰½å½}ü½.¹<ε»Htó½ ×½HÚ½~3½¸ên¾á:¼óIí=û -½»\ê½f0s=4M~¼Üн %}¼šp…¼Ê{x¼2vÇ=i†<¤Ø¼¬šã=vw=Ÿ€~=¨F=oˆÃ=yû=o#ý=¬‰*=À÷=õ¬<d»xÂÆ= f=0<À'Þ=c¨=¬=!=²nÄ=ØàM=Œ–h=T¡¥=fj=±=tp ;û< ¼ßŸ2¼ƒÂ;úùð; - =€éõ> Ž=»xV=® >ú†>*í=݈&=d-ò=— =Ær*=Š =#•%=öõ=M«=t=ZµË>P>7 =Z‹‚=MP¾=oþf>ú¾>O‘=»æ§=¦á=†Lï=*ñ<½¯ -=.u=¤;P=;üŠ<‹¡‡<”H»Ãj¼šr»Í -ª<==±ó=¡mh=|.{=3iÃ=:åÆ=Æ«¹=öxÖ=çà2=É»D=â=<\=ý=2Âò=wV-=¡‰ -=•½=YS›=Tvë=LÁ=>=5M=c~•=æ”]>'5Ö>AwÚ= F†=;ß=R“=ßd»=ãˆN=²=Ç«j=Í^¸=¬žT=ÎÝÅ=Ⱦ—= -ºÄ=J¡=‚èr=*S)=;x7=7z=ïJ= 8*=(=Y×µ=˜{‚=®^Ù=}E=~'«=›ò7=”ÖÉ=v=Ž“J=œàf=¢Sˆ=¤JH=˜†=‡À²=n5ú<º–6;Õî[<ó­=gQ3=ž¾c=á¦=¶ì -=f[&=»Y=ëù=2­Y=ú–=ÿS=$±=Ž‡)=®s\=‡¦Ë<¼X".ƒ=ºÖ=ž‡×=‡ˆ=Qp’=]¹€=‹¾=?v={z -=s{¦=^ª=z§‹=¤Ç{=Ì L=Ü?r=ɲ=¡ñ=Œ}v= _= c=™™ª={ØŽ=€ÒG=|Üz=U‰#=`¼Ë=„hÑ=¢Ä=ÑÌÖ=ÊG^=Výê=X›=h.{=’Ð>=°Ìi=ÃØR=Íø…=¬ª=–Eo=º%"=¨[º=žW‹=Ûå¢=Ôçí=»j=º =®ý=”=?=¶ø=íeÝ=óǸ=Çßø=£Îš=º•†=ÅÏÔ=°„©=j?ª=zlØ=¡Kñ=¦ *=z“–=>œœ=2¦=”Š„=ÆR¿=ô®ú=Ü–+=´Ò=ÖP£=Æ=®Ý=‡*e=’Åö=±ž=ðbÕ=­<¾¶×=«æM=¸OA=ŒTœ=»Ò =¯¦‰=‡k=Ìr«=õ==÷¤`=èéŠ=Ï)˜=µÙÐ=´Ÿ<=Ç`=à­£=ñ[ˆ=ÎÂ=¢ *=šˆ+=¢ÿ=§˜©=¡=£¹=¬•=®µÄ=®x‰=¯B³=Šu¾=£’=ÈðŠ=ÙŒ`=ÊüÓ=½:„=ˆô$=ƒ¬=•ÄÙ=ø `=ö0=Îàu=è‘=ÙFE=¥gà=ŽXÊ=™»ó=¶×Õ=ªÞ"=Áö=ß_Î=µ8Æ=¶†Ü=ÈÑÑ=¬ÞÚ=¯bC=Ä2=ÅJJ=Ëtì=ÕÃý=âÙ¦=Í æ=ØN«>`_> Í=ùJ=ôrP=álË=Êã†=®«Ò=Ùl»=ð¼*=„|ù=•ú=©½=¶§â=С=ßJf=µn_=å¢m>·«=Üáº=Îé{=ÃS=ËLÙ=ÖŸí=Ò =¬›Š=²¡Q=ÔE=ò}=æF0=Í«=¶Ñb=K=ŽÔ—=´WÊ=ª¸Æ=§–¦=¹!~=¼’J=Ãç -=É=š¾j=‚kæ=yåÀ=…=ô¶=uÛP=’"À=®FA=Ê›k=Ìt0=ÅŠç=¹¿=Í - =µDm=™L=›Å³=™Ã´=Ÿ¼=ºi:=ÉhÂ=ÒAú=Î͈=ßÞB=ñ€í=â“Ø=×:-=Îbµ=ÐH=ÔöM=ÖS=ÏkH=Ä\g=úÌ=Îo’=Ó“=Å0 =´{ú=Éé‘=Ây =®aR=Ü©#=êÀÀ=ç%k=ðŠÖ=ÕÀ•=»i,=ÐÆ=ûq[> ø=þ -=ô›=îg==ÐÏ`=åQø=î¢+=®8¯=µèG=¼¥r=²Y»=Ô" =ð¼j=îµ -=íËÕ=ïf=èÑ+=×!¶=ãÐ>ݘ>ô¶>_N=ü8U=çÒ=Ö‡ -=ÖÉF=åÖ^=Ïíå=ÅV²=ÙƒX=ߊ=â%û=ç¨õ=î_ø=ö$>!×=û#«=ûŠJ>ì=ófÞ=ßs=Âî&=±&/=¶P>=Â.z=ÕJF=Ê! =¡¹‚=n$^=Ì·=Í2@=Æ·V=ÇîŽ=Ìyá=Å^=¥Äý=™Gy=»l„=¶1—=ŸÑ²=šS¯=Â%-=Ñ™È=Á/.=Ɖ7=´áë=¡y-=¨§=½$þ=Ç9C=Ác^=ÁJŠ=ă¤=Ç•Ò=ÄôF=ÃÒ=È@$=±Ú©=²&=Ð(p=Î1 =È}=Æö=³$ =¬Rî=ªœ=©œ,=‡0/=4s‚=]Û¢=]û=Rv=a*Å=ƒg•=£á=µÕ€=¤\S=€_ä=iEn=­kŠ=¿0=¤#¦=™ýÈ=³†Ÿ=Ë~Ö=ÍCÓ=Ћ=ÃÿÊ=«›[=н=òZ½>‡2>ZH>T~> ‚>'º>)¬>5Ä>Ou>?‘>+eU>4,1>8ô.>?øI>I®¨>DZ&>>n>0÷6>xŠ> aß>¶=ý=ô%=ïö=ø\ë=ôÅ›=÷}k>í~=ß ž=ÑxÐ=燒=Æ‘"=›‰ =‰gê=„„=˜úW=”=y;â=v?N=©¢=°4/=—~h=‰‚ž=„ë0=”̓=”{=Œ‘Ñ=¤ZÀ=¯D¿=¶Š=¸©=Ë=Ùe>=¸†=½ík=Ë =æÎÓ=Úåj=Ä×Ø=£‹î=¡†1=§êl=¹ëì=Ël=â¶=æþÖ=ÉÁ’=¦­ =¬Ä6=Õë -=çÅB=öV>qV> s >‰=ÿZ=òû0=ó± =î¿:=àœê=Ý;.=ÙIÛ=Õþ>½¤>í/=ñZº=é U=ßöæ=à:¶> ´ö=ýÇ^=ê9X=Ûù{=Öõ=×Á}=á±r=ø€¸=öjk=íŠ=ø`r>e>Ia=ü«æ=óÜ»=ïùv=ï=är.=åDƒ=ÝAÒ=ÂÁú=ÐÚÕ=ߟ.=Ú=ÊŠž=Ðiû=ÚÊ…=Ô\¦=Í5k=Í<¥=ÖA=Ïx>=Îî=ÙA6=Ð=Çñæ=¿=Ûô`=èä2=îkµ=É¿=Êvj=Ï™ê=àf:=Ò)f=Î){=Û^þ=ã‘¢=àb¸=Ô£=ÍŒè=Ç—b=Ù/°=ö•=Ù¢2=Ë· =Ð!Ò=¹´¹=±W¹=¾ û=Í =ÍU=ÌY=ÏÅÒ=Ô‹=ÂÂ:=¼Ì2=ßQÂ=ÈZÏ=¾‚¡=ÒU=¹~=½ Ž=Ñ?“=·O‹=·F*=¹{½=ªh¥=Ã{=ÉG²=¤1=¾=»þ=—¬ù=uè.=• 8=Ç;g=Õþó=DZØ=ÀB=Ì‹^=ÉHV=ÏŒ8=ÝD=Ýçí=Ící=ÂH=Åø¤=¼X=»š’=¿xŸ=¸~˜=°2=·qj=ÉI =°cP=¹ -&=Ï Å=Érw=¿Xm=ÀŸm=ÞQ~=âE=ÓÇ…=±þ=¤zE=¿²Œ=åã=ÑØ#=É”ú=¾Ÿ¾=«Ä˜=Ä=k=Óž¢=Ö¦=Õ<¦=̹Ç=ÂM¨=ÇcM=ÝŠ =Û±V=À*\=ÍX£=ݺ®=é8è=í3&=ñÍ(=ù =ù›^=è”=ê -}=÷Î >¸Ž> X†> P´>ò>=ð Î=Úë=Ëœf=ÄÀâ=ÕÜF=Õü‚=ă6=Õàž=îHí>Ä“>Õ>õÂ=þ¿‹=ÑgÂ=Á?*=Ðïõ=ïÁz=ÈSÖ=ÑÒ=ÛpN=Ëߦ=äbP=Þ€=Âí¶=×èˆ=Ú›=ã«=ðÀ‹=Ó¦¢=¢Þ=ÃR=ºC¹=Éû=;6=Êæj=õ£ =÷r«=àe=Ķn=Æ4!=µÆ¤=”V =Ž[6=«å‚=Åð¢=¼»v=¶Ûë=¶UI=»sÊ=Ë}M=ÈÔé=ÃFï=ÌR3=Àç==·)ê=®­¯=Ÿ$= ñ=«r=«_@=œ~F=¨[Ž=Úƒ=ânž=Ï”#=¿\=Ï¿X=Ôì†=Îýc=ÅR=¼òú=½k•=ƹý=ÏÆ^=ÎâÂ=ÃNñ=½³>=ÄC =žb=¦P=ÌÖà=åþ=Ý£=бò=¿q†=Çù=Ö¬=íWý=åö8=ÞÜî=ØÁã=×ù«=Óœ=Ùp€=ìÎ¥=íÉ=ÌD%=®Ô3=¿¥ö=¼\Ú=·¸Š=²[=«¹×=ž Š=˜bß=«½†=Ê µ=ȪÑ=Ä~=Ô|å=ÙÙC=ÜŒÒ=Îî=¦?=›Z­=®k;=ÃÎk=À5 =Óƒû=Ùgë=ÁH®=Çy/=Ï]Ø=ÕÁz=Ër -=ê& -=êÇ&=­ª¾=èõÅ=òD^=æ1û=ÅUV=ÆÇé=¾=ªõÈ=ÅÃ=ÕgZ=Ä„á=h=«ˆR=Ë"<=Ñ[ã=­¹=Æ=¹f=«¶Þ=ÅaN=¿Z=ÄbÝ=Þx =ÜH:=Þ]Ó=Þäð=Õ™¨==ñâ`=é3›=è½=àg6=ëaë>»ó=ù²m=Ùx’=ÇÉä=ø/À=ôSv=îY–=åÿ =Üw…=æR:=ë["=áäk=ß=à`K=à©2=Öaã=ÏD=Ë2=Çûê=¾H=³Y¾=®Fi=Æ.–=ôI>(–>ð>’=ßd =å`F=ö˜V=÷ R=ñÙ5=÷Ü%=÷5B=äJø=Õgx=ݲ=ê„P=â|-=Èp¿=À*Ž=Ê&7=®z=¶ñ{=¿4=°Â2=Úf"=Ó®N=¯Š==£”=Ü>E=ü—Ã=à3Ð=µ¥æ=±.=Ê=ïÒ[=è!^=Ù¡s=Òâz=Þ‡•=ã± -=è•=âªý=ÕÍC=ÚÞ=æ(P=ðÚS=üÂý> ÿ > -ô6=ÿF(=ÎL†=È* =ÃÉÚ=¼oi=áOÀ=ë$°=â¿â=Ìý-=¸ËÕ=ãš°>{˜=Ä=ÞaP=ËÖ=«+„=к-=Ìâ†=ÆéH=Ãoˆ=Ù¨È=ïN=÷¢M=çÀ£=è–Ž=ò}È=äª=Âù<=Ôƒ==Á&=Ê\±=û-³=î<+=ÊBõ=»H -=¾ =¾÷ç=¾T¶=Ç,8=Ö²P=ÚÝ=ô"=û2m=ß}Ú=ÎK=Ö› -=à÷0=á–J=Üà“=Ì R=¹(È=å–=Ún8=ØçU=âmc=ñŽV=ø¢À=÷ù=ëÃ=è Ž=×Ý=;=åþ£=ùB=íx&=ÜfÝ=ÜÄ•=ÆÍ=ÉO©=ʇ}=¸|y=¼ßl=Ëž=а=ÍH=Ì =ȳõ=ÓPe=æ¤[=òÙn=ä8 -=×V•=Óæ=ôC&=éNú=Þ‰m=á„=ì™È=ç6ã=ÝÒí=Ïú}=Þj=ÏÑø=Á\=Ü»=íî=ßt=Án]=Ç˦=ᇵ=ä*f=Òéu=ÑÄP=ÐAv=݃k=Ùz{=®ÈV=§Ê"=¸{Î=É™ =ËWÖ=ÉFÃ=Á‚=²No=©lQ=Á“ü=Ó =ÐN=Èz=ÏŽ=á =Ñ–5=¥Yr=ËdÜ=Äòþ=ÁñV=Ñn5=»±ò=Íäž=ÖƒÀ=¿%è=½&è=¤Çò=óÓ=ÍÍÓ=½E"=»™ö=¹êŠ=­¬N=°«=«ÔÚ=®ƒ=»ä­=»¾=ÕR=æ²Î=Ñ!Å=Â=Ä‚:=Æ 3=Éã=׎=Ó‚K=ÌÃp=Öžn=鮣=Û¤Ø=Ò²¦=È»Ê=²ÏX=Õ£†=ßI¶=ÔX«=·»S=èv=äNó=×=ÌŽ¡=ÑÕó=ÜB²=á¢è=×=>=̲<=ÁÎ*=¹ÊØ=½Ý=Ðíº=ãÞ6=ëº=Úû =Ò¡î=Ø=M=â€X=è“x=õP> C=ù¡­=¼õý=À_Î=Ú-&=Ï:=´K”=¬¼=«yf=ÃÞ=ÓÚH=ÕFN=ÊŽ·=¾€^=·þÒ=³V=®€A=Ò¥þ=ß½=à è=ÛÓ=ÑÖ -=ºÃ= Yw=“›¬=¹ È=µßý=©0Ï=·O=ÍU=é@(=îó=ÏéÎ=÷Ù@=÷Ÿ =úõª>7&=÷.=áÇð=Ìɧ=Ľ=Ο>=ãØÆ=ÞEÈ=áŽ=òJ=ê5=Ó±c=½/=¼5b=ÛNE=ïÎ2=÷%=úm]=ûvs=ÐÀØ=½Z=¾’=Ô)ò=Ö =ë‡X=þº³>tV> :¶>1=þ§*=ø5=åZ:=ó…=ï×À=ׂå=¾"™=Îb=×1µ=ãV=ív=â_…=æ›Ý=Ù P=¼þR=¶þâ=®¦D=ËÏÆ=äK{=ß•=Þƒ=Õö€=á’ö=î¢ê=ë÷3=Â~¾=ò±=ÎQ#=Ñ_p=àd=ÝÆ=Ý*=Þ@k=Ìš¨==è½’=Ð7>=ÉB> ä8>ÄT>Þã=æƒN=î {=ÕÒå=¿_Ü=µw±=­?Ð=ÀÓ=Þ -J=Û2=¨Õ¦=gi=žF­=£÷å=¯C=»9F=¹é=Ã¥§=Ê0 -=Ïûc=îö=Ð"³=Úz½=îÝC=á$ê=ÖÚ=å‹N=æÌ=×£µ=áZ=Êb =Õû¥=ãþå>­º=׳=Ë¿"=Îå=Ø· =×±=Ð5Ò=Ôé8=ÝÀ=¿5´=È!Ú=ÅÔQ=ÂD¼=ÔË›=éš=ò0=ù—Û=û£–=é*=Ù*=Ö+Å=Þ§E=ð‘¸>>&=äâ =Îò¨=éþK>,9=ã‚=ìqp=ç‹J=â„=ï\S=êG=èm®=ó­ã>¾O>ðD=éV=Ù—›=ÜšÝ=î){=ÿÝ>Í=ò¿°=Üa=Ëm=ÓÓž=×+ã=Ѻ=Å.=Ë­=Ë*6=ÊH®=Ó&î=éAƒ=õ-x=íZ=é@=ð<Ý=ìÝ -=êQÝ=é(À=×J0=ÇwÚ=ÉN=Ë» =Ô-ž=ÜJp=ÓKÅ=¦x‚=À>¢=ÛëÈ=×QÒ=½Nt=ÄwL=ÒÛ«=Þ$=Úå°=øÒ=Ö¢=ßÈ>=Úuí=Ðâ=ÒÃ=Ì]=Å\ö=Ⱥl=ÙÿÆ=Ù¡N=Ídu=ÚŽú=ï÷j=ß[“=à²=éu5=ëÙ=ÞѾ=ÐiU=Ìn¤=Ûu=âò(=ÖÍ¥=Ëq¦=×ws=àÝs=Ñ=¼i=¯ô†=²‡Z=¾©¶=Ù•=ác›=¹€A=ÍMÆ=Ùx=×UÕ=ÇãÉ=ÍfM=¼þb=¤öž=¦Šê=Ê.=ÈÂ÷=ääú=ÛB=Æÿn=Ä™¥=À—ª=ßi]=éÜh=Ñu¸=¸uo=À =Î?=ÔBv=âyž=ìþÆ=ÞÕ(=Í«[=åø½=úÇU=ðу=ä$=ÏKf=Ë_:=ÛÆÎ=ë¼r=ì€=¿úi=¾ˆŸ=ÆW’=Û®#=ÿbe=Ò¾=Í>r=ш =Ò•Â=Å‚…=¶ö=¼XÖ=ËbY=âÚ=Ýw*=ôÈÓ=öÕ -=î‡Z=ì˜=ÿX{=ò=Û"»=ʳ]=Ûµ=ð:à=åí=ãY>=íË=ñËP=ì3M=Ò=Ï™@=Þì@=é¯Þ=ìŠJ=åFË>ê>–f>xþ=úíh=Þ=Ç^ò=ê)ð>FÃ>$=üòË=Ý£#=¿:[=¶ò=½‘=ÁÈÒ=Ñr¦=Äë¬=À =¿zÏ=ÌîØ=Ù‚X=ÊŽz=Ãs=Ì;z=Åô•=ÃG=Ô|Æ=Øé8=Í`Õ=Äö±=ij=˯t=؆z=¹»ú=˜N=¢:Ý=Èg>=´ä=¥Sô=À’D=á N=áK¨=Ãb§=ªn=º;š=ËW=µº—=àË=Í,Æ=Ñ—•=Ø**=×Ô»=Í †=Ù)â=ÝM=ݼ -=Ñs¨=ág=Ø -£=çàó=ùgu=þdp=åz=ë–=÷ =éÝÞ=Ä×Ú=³îì=Àëñ=Õ¸=ÍÄž=¼¦±=ÊòÎ=ßW@=Û%†=¿Ÿ&=ç¯N>¶k=ê&z=·bu=ÊÄŸ=¸aÎ=Ì)Ž=ÊZ¹=²™+=¨®²=Ö»Õ=Ú¡Î=Øñ=ãÍ=íV=Äô =¬áß=ÌVN=ò}=è- =âÛŠ=é¦æ=ê&=×eè=¹b=ÏÇ`=Äqe=§ÒÂ=¢Ü=¿Š=Ù)«=áÀ[=×WB=Ì@==´Í"=©ê“=·b"=À«¹=ÈBì=Õ˜=Õø =Æðþ=¶ƒ=ÁÊ`=ìÜF=ß,`=ôwó=þR=á+ò=ä§Î=ñî‹=ßò…=Ö°h=ÖóF=Ëáò=ï½M=í?*=ë.=âêX=Ô$¸=Ì«ž=ÑË==õ­N=òÀ˜=¹àÎ=£/ê=›.Í=Ž”=–=¬cj=Ã` =Òkr=×=äZ®=å¥=Íwæ=Ã>"=¶bB=­»=ÅÊ&=åá½=ÎÎ==Â=ÑC£=Ö£v=Ü}p=˪£=¾÷3=Ø =î'E=à¬0=µz&=Ñ!¦=Ê_Z=Äq¦=à¤U=Ãáš=ÖZ=Ñ!Ý=ݶ®=ã†Í=ø=É‚$=Ìž =¬>þ=˜ûó=±¶ =ÕÖ›=Ã~î=² ª=¤w±=A[=²=œíû=¼õ=Çl3=ÆÜ=ПZ=ÊÓ–=ÐO…=áèŽ=îä-=ºËš=Ñ=Ì=È·–=ȯ=Æñ9=ን=¼°=ÆF·=ÆÔé=Èì³=îX=ó¡=ßã:=ÒZ«=Ñjå=Ñ—V=Рú=À}C=¤’Ü=›;Þ=­jf=ÖÖ’=Ù¸˜=ÌW=Ñj=ÓØŽ=ή=ã0‚=û…=ìn=Ú0=ø·‹=ü’=ÿ2°=ì…Ã=Û›=ÜE=×Í=»J=Æý–=Æò)=½ç:=° =¢Ü=·Ù=»ŒŠ=Ãæ=ÚN=Ë•F=Ä0f=Ý/R=å`•=ì=J=Ð*½=Ôn=Ø£=¶Á®=°¹Î=¹ˆE=Äx=ÊÂR=Üèó=Ý2=Ú%ú=È¢‰=Áç=ÅÑÔ=©¹q=‘½=˜¡k=œÑ0=«Ò=¡›¾=›©B=š”j={š=Žò©=¦.Ì=¶XÒ=ÇGë=Ó4U=¿Aò=¥üz=¬=«u=¨—K=ÈmF=À"‚=Ò·¸=Ö¦N=ÂrÂ=Üs®=¯)3=¤×=·¥y=¿Ï=äÌæ=Ýò=±±“=¦z=Ïõ=á>u=¨â=µ–A=Ëÿ_=Ãøâ=²Kž=°Îm=ÈòN=àW­=É®=±¹à=Îí=Û` =ÈJ˜=Á-9=·±Š=¡£)=¡Ã=Ïëš=Ô‚ =Ä´=¼¥ø=³›=•ß¯= -=ÉÀ>=ÀÍÚ=Èæ¢=Ñîb=µBG=¨J»=§Š=£i:=¹·Â=­öš=°`Œ=µÞ=·¸®=Í,Ã=ø6 =ßÛ=ÁÔä=¼~4=Ö”Ð=ÚS=Ëì¶=¼ =ÒÁš=䦵=΀2=¬\|=Ìo=–=»€=ÐF =âm=Ëh¦=žr¾=ú~Ú=ý%e=öß®=Üá5=Üåø=âÉ ->>N=½²‰=ÁÈ„=ÍàË=Ãïi=ÒÒ=îJ³=ê·N=æñž=Þjš=×Uî=ÌåÖ=ÚÆú=ÐùM=Å C=ÇWÎ=ß“Ó=ðYð=íÁØ=æ[=Ö‘£=͉ -=ð&@=ì½&=Ü´Þ=Û#=Ð!Õ=¾ =צX=ä<Ó=Ɔ=Ê=P=Þþb=êç†=ÄZ™=Çß=¹¨þ=Ϊè=ç§í=ßµ[=Æ"(=µÁ=±kv=È}ª=Ó» =ÎDæ=Àq=·[=³P=·V=½ Š=½Ð€=Çíº=ØÞ¨=ÞÖ‚=æÁ=â´.=æð€=øl(=ù7°=êξ=Ä+=™± =k½=‰ç=Ä¥K=Ú¿Š=Ź=¾Þ$=³ê=»•r=¿ ©=µ:³=¨Ð=tV=^¨Ë=­ù(=ÏE£=÷¼Ž=é¡.=Û@û=κÆ=¿¢o=Ùip=Ûlã=º =ѦE=É"=ÃX0=¸¶=»©Á=Á®=Øh…=ç¥C=Þ3®=Í’î=ÎÒ=Ú˶=ÚͶ=â4=ÎÙ -=½ÚV=α“=öÍÅ=ÏúÀ=×# =úŽ˜=µg]=¿Eâ=ÔÃ3=½Û=»¾A=¹ÈM=Þ(>=ÝW5=·°$=Ê|Ñ=׸6=Ô›ò=²qC=¡QQ=³&=±¬é=³Ps=³äv=—ü=­_ -=×M=Òn*=Ñ@=ÑŒð=·PP=£&=§Š'=Á$„=º€X=¬ê¬=®-=¶•Š=Àãæ=Ý;=Ú*ò=ßv=׳m=½s=­4n=¨Á =¢þö=¬œ=ãdE=¾¨U=½º=¯Ã=‰Èf=••ì=£Úe=µûG=ÂŽŠ=«Gú=˽=ÓÛî=Ζ=¶>=¹<ï=¾(¢=³@=ÀØ'=È2=¨Âç=Ÿˆ¦=Ÿ>u=šfÚ=’%=¦Ëh=Ë Í=É¥Ì=£Pî=ˆÄ.=xÅ=Œpó=ˆ– =_N@=uÛ=†e@=Ÿ"k=˜äÉ=Œ†Ò=€L2=ˆ…=‘ïm=¸®=¹õæ=Ãv=¨'’=šÉ5=›° =¿tÄ=î=ýÇ•>Ð'>¿O> ÌÐ>•ß>Tò>"±”>*µ÷>6<ï>?ÂZ>DÐZ>N)…>VH}>I\6>7-˜>@cy>I ã>D Í> ö>ëÒ>Ú>N6>Y<>Ò> =6> ¦> ’=ñôÚ>Yj>PB=é=Õg½=³vª=“ôË=µßR=Ån=µ‘= Y0= y2=À–Ü=»Ý=ÅÉl=×ÌÐ=§ 6=‘¦’=’ïé=’¶L=—„=›‚=±~ò=¯‹=¿îî=ÎQ#=Æ´Õ=Âz=¸¡|=£ìò=¤bï=§âk= Í¶=¤m=šË3=€=û=™¦=­(Ì=ÄØÎ=Ò.H=É))=½Í.>…í=üŠ=ê= 1O=ÂŽ=ì»@=ø4Í=Â1=Ÿ€Š=Öƒ`=ôšà>ïx=ù¬z=à2x=Þ‘Ž=óÇf=êH®=Þ~K=âN²=ø æ=áà =ÉDt=ξ=´+©=À¬=ä¾=Àžž=¯aj=±'%=¡©„=©ft=´µr=µ =Åè™=Ѿ=ÌÅ•=Ëyë=͈=ÒÜ=Ç8ü=Ñî=ð -e=ã8ª=ÝV=Ý´e=ôëˆ=ÿÃö=ÿÜ8=áÂS=Õ“ˆ=ÎCå=ÏûÕ=מN=Ö†M=Ñæ®=áG -=ÞÈJ=ÊU—=½cÒ=»ÙQ=Â2ñ=Çò®=Úôš=Ñ£s=ºú’=¹gf=ƶ=ÌNá=¹ -=µÜ«=·lî=·”‹=Ð|¨=ÝñÛ=ãÎ=º0æ=Áç=ç‰Ý=¨>5=²˜=îè=Ø'’=Á$d=±‡~=Çs=´Ë÷=­éV=Î Ë=ðNF=ê€=¾«=ÂÅ.=Áw=À•Y=Ê,s=Ó¹ø=Ödƒ=Í@=¹zd=£•=žÄc=¬Kã=Ìeð=Å{Ï=—ëÖ=©üV=Ëò =åÌ=à› =àR=àºÚ=Õp=Çb=º¹=¬ôÑ=БE=â^ƒ=àªJ=ÀBZ=Ã÷g=àv¶=ëqv=Ó,Æ=¹zf=Û#=Ú)&=Ðÿ¸=Àì‘=¿¡²=¼„=µ¡â=±ûG=µ*…=» -¢=¼õo=ÍAp=â„=âˆ=Æå=ÂË =̹=Ê"Æ=Ì =ö~=±)P=°¤Ì=ÁzZ=Ñ=»~Ì=º=Ľ=ç+¦=Ñ]“=¿ª=´R=ÊsŸ=Ïô’=Ï‚%=Б¶=Ïóè=ÏÌí=ÔPX=ðãK>¨1=éHz=Êy<=À7ô=ÐÈ=Ö}ø=Ãs=¢­=œéÿ=®÷ß=µªö=¨s…=¤\=¿H«=ÍR=¸ml=»”i=ÇèY=ÍeS=Éðª=±?=Ÿï±=›Ù™=£¾=´5v=Э`=Ä!æ=¿gñ=¿èº=ÖM2=¶Aƒ=£ÍŸ=Ð=Áì,=·©U=¯Û=ÁÆb=¼2’=´=Ï}=ȶü=¾9@=ºSÒ=¼‚0=¶ª–=°´=ºœÂ=¾Ó=»à=Àš]=Ú=Ë*=²!Ž=Åí=É.Ä=ÃÞ =ÃÔú=Ä°F=ÍßØ=Ù?u=æŸÈ=îSÂ=ÜÛ@=²[í=Àñ|=ʼn=Á—À=¯Þþ=¼aî=ÇZÇ=ÂAÞ=½{'=¶aA=¨ìr=£±ö=¨œÒ=¯ê=´²Ø=±¬¦=µ§S= §=±š=³r}=¾¯ÿ=µ³L=°X=² A=À6=Íé@=Î`•=ÊwŒ=Ñ~Î=Ø*Ú=Ï‹ø=¿¹=¿³²=Éãâ=ÔYB=ÜH=ßk¶=»½=—4æ=¶ &=¯8=®qM=Í®û=Ö„ê=ËXç=¶‰Ò=Òx=Â&"=³dÄ=¾é=ÄòN=¶BÈ=–Î-=¿äö=ËL>=Ò `=à-=æ¬Þ=ç8=ÕXv=¼ð¦=¸ºÏ=©=Ë-þ=Ï’ò=È‹=¹É3=°@=¬ž=¶z‚=³ð=Åôñ= k=Ëb§=ã¹0=Ùf=Ì¿l=Â=¦ãÔ=º¬À=Í0=ÓQN=ÊbT=À¤±=´P=®Ã"=¹ßú=¿W&=¹i=áˆ=çm=ÛÂæ=ØlU=Þ'=Û–Ã=Æøµ=ÑÅÚ=çTÆ=þG=ù#}=òk=Ü`ð=Ëò=ÝÌæ=äæ =ã9Ê=ãðã=äWr=Û6³=ÛÆ0=ê’=Äk:=¿†š=Ò:è=Ð]=ÙgÓ=Ü}=Òú«=½òv=­ÜÏ=¥öY=Ī=·=½ê³=âó=×Ø =Ýcî=èÚ–>l=ØÕ0=¿â=º¾í=·Fº=Àœß=ÛôN>o=â’[=ÔËš=äÚb=öà}==Ò®³=¾Þ™=Ë/—=à9:=åÇ#=ÙÍ=Ï× =Ü;=×=ºèÊ=¼_:=ÊcÌ=Öå=äƒó=êÐ&=Ó5=®¸=Ö’è=Ýí“=ßÒ=é'>=Úl]=αk=ÃáÛ=Ò‹å=Ï/>=Á`Å=§à*=ѽ =×Q=ÕáÚ=énó=÷F =ôU&=à˜=Þ[=ÞE=ÜUö=ݯ=ç(¢=ÝöÀ=ß&e=ò x=ðx=Ó:Å=¼©=º -·=½Pñ=»ÄK=ÁÀ=ÔÍ~=²!õ=º6‰=Ôn =Ôáš=ÓŒÃ=ÔåÆ=×úÃ=Ò]+=è—»=ô­=ÏP=Îå=ݘò=ó¬x=óš=úx8>áf> -,"=êñH=Ü@E=ÔóÓ=Õð=ç/¸=ì³=ã>Ò=Ö*+=Ï’Û=·K¹=©/B=ÃÒ6=ÛMÖ=é¸=é–Ø=èV¨>!=ôSŠ=Ù·=ÙÑ#=àrÞ=é1`==ÙãÐ=רº=æ>»> ->m>¬=óG’=Ì­=Évª=¹_ =§í=Æq=·`]=± =·Þ$=Ç Ô=¹ÊÖ=®ì^=·Î=ÇŠ¶=Ñá°=ÖÊk=ÎÁ=¼ÆO=ºº=Ê(˜=Í©Í=½ß=µ·v=÷›=Ó)Ã=Óïû=Æ£f=·S“=¯=ËO=Ú²"=Üñî=à[=Í÷m=Ï¡þ=ÏGƒ=¬Y”=¶‚=µa7=«Et=˜=Éô3=Ö?«=º–=˜ØE=¤ò†=©´Ò=œ9Á=®oú=·P…=ÂW[=Ê\=©ðn=½> =Ù®=ÄdÖ=×=ö(8=ü¡í=㣞=å|J=ÇJö=¶Ÿ?=Ê - -=¾U¢=»I©=ÐÏ’=ág =À‰H=´Ô=±XR=¥Á³=½O$=½· =¹‡€=¼Gú=Â@=Ã&Î=Åbn=ο =Ø‹†=Ú²=ܽˆ=ðË^=ôZó=ìNÈ=Þ=Ý=ÙßÎ=Þ/ =ä”ã=ÙE:=Þ=çª=é{=ßú»=âÀÆ=Ùð=ÎÓš=Ò~c=Ã=­XR=´.N=Ë1=Ì}Š=Éc4=Ó½==Þû=ÁM=¶÷=»ÀÇ=À¥Ö=Ç™=ï=ú’=Õ3=åÔ(=å¶{=ãé==é9z>M>-9=óâ =¹÷ê=ÐA°=Îx=Òyn=÷¤ò=ÓùM=È«„=Ðx6=Üð¾=Ù¤ -=Ö ­=ÕÙØ=ØJ’=Ö>]=Û ²=ÌWj=¹§¶=Æ=v=Ë -œ=Ȳš=Î$}=Ø2³=Ëx=¶v¶=®ëZ=µ/Ž=Å`-=¼œ&=¶ú3=Å¡b=È$ø=Úèö=íà=ó΀=Ù&¨=ë j=û=àè=Ö:š=ßav=áŠ=ÃJ*=ÞŠª=èo%=ßܦ=½»=ÎØ%=à< =Ý =¼*6=À\°=Ï2²=ÖÏ®=ä"B=þ©m=åܺ=Ýv=õ‹æ=ýÎ=öªS=ßW^=ÛÌê=än¥=ØæF=Ô{=Ò~M=Ѽ-=Û®ƒ=Ú•=Ù~à=ØÔŽ=ÎJC=ÖÌf=ÚÇÀ=ÚÃþ=àtÈ=Í®ª=ÅZ2=Áåö=ÄŒx=ÑÓµ=̨Þ=Êæ=çÓ…=àMƒ=àî"=ðgX=þ˜&=à—“=ÜH=ã{Î=Ûb³=Òž½=æÚû=ñ™æ=ëe=è¹Î=àiÀ=Øú5=ë¤Ø=úm =ëºÆ=Ô¤=ÄUè=Äëe=܈=̼ì=º™G=³Î•=ºÛÎ=Ín=ÎØÒ=ËÁB=ÂA=Ú=Ñ1‚=Öɨ=ëJ}=ÑÎ -=÷ð%=ø÷=Ôdø=É›Ì=Ìàò=ξr=ÒØÖ=ݲ­=äƒx=ì¡+=ú¬>¹ =ûH=ô|z=Ù*=½ô‚=·¼/=±ËS=Ÿ.=Ï2P=Ö’=çêh=Ù×s=½R=«/*=¤  =Í’‚=ÅP‡=ǵ4=ßøî=ît =ÜÑ%=Ï õ=Ìê=ù=Ì…«=Àyå=ÃÖ=Ïdp=Öv=ãå=Øðë=±0š=¾§­=Á4=×"=òÝc=Ýeu=Ì=ÃCÁ=¾C=¶‡‡=¼ô>=ÒZË=ï‡È=æž®=ÿû=¶Î,=Ù¯®=ízê=ååî=Õæ8=Òâ=×LU=Ù@=Õüã=ÏZ&=ë¦Å=àÌe=¼t¾=Å4b=ÎÉM=ÕñÛ=Ú„Í=ÓOš=èhº=íJ=ÝqÛ=¿ñ=Íd=Æ´×=Ì6‰=ãèz=ò½¥=àÚX=Þ'S=ÇÚw=§×;=¾© =ÍUÕ=ãÆu=ò·ã=è =Û•=Ï&ö=Àš\=Å=Ø´}=ïZ=ÓŸ=¹õë=¾ç¬=Ôjz=Ãt =¾}W=ÐŒÓ=ès==Ì¢º=ä§H=Úrm=Äå=¾5D=¾­²=Å’õ=Þ±m=üSÝ=Ü(Ö=ÕÃP=Åá<=¾Mð=Í[ê=¡¬V=²ë_=Ðgr=Ùc=ÕÁí=ÒI =ÃQØ=½,t=ÂpA=Ç#©=Ý‘Ö=ßðƒ=ËY€=ÌÖ=ÙpÍ=Ê9V=Ðkû=åsz=éì=Ò;=ÇåÕ=»=®hX=¯9o=â9­=Þó =Æ€n=´BÖ=Ñêð=ÁåX=ÓÕú=ÜÉø=ÏKÞ=Ö•=È‚™=Ü=òº€=ðJ=æ=¢=ÙäÝ=Æî‰=¼‘Œ=À»–=ÎÓƒ=É~M=ÊRÙ=Òµª=Ãâ¦=¿s÷=¶×=¶;œ=ÅyÎ=Ñø¥=؆=º{à=²¸&=ª¾=“¹=Ÿ»¦=»éª=¹NÏ=·WA=Õ'==¿m§=»Uë=É9ü=Ûˆ=ÓšF=Ó·î=Ó{=ئ=×ÿ>=ºã+=ÏÐx=Û¾Ž=ܱ#=à '=¸-ã=Å£=Ö”V=á—=Ü6p=Þ‚È=ÙŽ=ö¾>p=îKB=òÙí=âŠ=Öš=Ø5Ú=Ñ«–=Á*R=¹*A=²úÅ=·èÃ=Ê`ó=éCE=ßÿx=Þ‹h=×h=Ù=Ö=óZ=ËÅE=ÛIØ=ìp•=ݺÞ=ËÄ=ñ½k=ߊN=É‚C=ÊC=ÁÝâ=×M=âZ‹=ÖS½=¾³Ë=î¤=Úkz=Õµr=Ôu=Ð =àm=ê;>=æ¼³=ä2]=ö­x>µ -=þ­f=çÜE=ç{u=ײ= ¨=ä'>=å9=Ý2{=Ð2–=Èßì=ßU=ù·=àC>=ÐTÒ=Åø -=¹ã/=Ö¼=ËWu=Âç½=À–=á“­=ïW`=åK -=èÍ®=à7«=Ò6=ݧ=Å`ê=¸Â=Ø -k=çd…=¼ùÎ=¿©"=Ί=Ð1C=Ýf=ë†u=Öâþ=Ù…Ú=Ü°n=Çäþ=¸%f=­¢l=ÔªÍ=ê­ã=Ø=Õ±›=àÅÐ=Ïxj=Ë‘ý=­ì)=Ÿ^p=¬Î*=¦-=¦†È=¯³µ=Ôo%>¢&=˯Ÿ=²µc=Éá¾=çÕ[=áCí=ÐÕ[=䀀=àƒ³=Õó­=ØPš=çï«=ÒV^=ÊhÚ=ÌVÌ=Õ 0=Ñ|(=¼;=µ«N=´Ã¹=ÂMª=ÍP=ÅêD=Ã=¦€î=!=£Q=¹»è=¥Æî=“¥ƒ=·‘V=½òª=Ìš¦=Åaé=¯p\=­!j=ÉÒ¾=ã¬Ð=éÜ‹=ÉË=ß3S=·£=™Àx=»öÎ=Þ½=û[Å=é×X=ðùP=þc=ÿ†C=ÖtÒ=¢r=±=.=Ìdó=ÐóM=ÆÇ£=¸Æ=ª>Î=»Ô÷=Ô~Z=äô*=ßzÎ=ýÒ=°¾=ÎaŽ=ÆZ^=§Áp=±—=Î*=Ãäë=­j@=±lþ=¹d=¸ø=Å| =ÈíJ=Á´=º­2=¾+I=Ó‰Z=ÚÎ=Ã8=µ°Å=Ÿñl=xMz=“Áæ=”â=Ï—–=Ù=ÀI=Åú´=áP­=ÕGM=ÛáH=¼Ä=©óc=У=혪=ùx=øª3=çE*=ÁAJ=·¸Ü=º÷Ö=¸ªF=½]ê=Ê/A=­ít=žþ2=£R=£`Ý=·Ñi=¸Ç8=œ…È=¦êÅ=±áê=äƪ=¼^'=ÄÙ2=Ý¿ö=Ó ø=«…÷=¿SÓ=¬Gf=œA=±N -=Êð=Íg=Îe=´÷=´”=Ìò^=ý®p=ï.«=çÖò=ÞÚS=º,å=©GX=À€e=Ñð2=Û˜“=ßUb=Ísh=³ä=ª—z=¼Ê¶=Ú=ØÑÂ=©j¨=£n=ªBô=®ˆ"=·Mp=«øf=Ånª=¿ê =´Š,=ÉÝ=Ï=ÉÛ=»®Œ=½è‹=¿ "=½=·ÿ~=¶^V=˜l=¾ƒ<=¾± -=¬ Š=ÃfK=Å–=ͬz=±Þt=®¦Ž=»4=´y=¼Ï™=Ó*=Þhƒ=Òs2=ªE=¥ÄH=·Ã.=Çmº=Ї>=Ÿk¡=•§e=¢žÊ=ž¼à=ž¡ =šnÎ=“]=±Ì=ê=M=³t=­=ÉèÏ=±D,=ħ²=ÔB=ð_=ðc°=Ø…=Ít’=ÞCÕ=í¶k=æã=Õ¢x=ÏVë=Õzû=ÇRx=³.[=²_=´]¾=¿"ø=¹÷ =°ÑÔ=¬&>=Ÿþ7=¡S–=®Ü>=¸ír=Ì.k=ÑÃ=ÂF^=°P}=Š%ª=ʘ=îü¾=ÎÌ­=ÆDð=¿~Z=Éw´=܇R=æ; =¬Ô=Ãmƒ=ãá=Ö¿ =Âè–=Ât=ÂpL=Å._=ÙR=Ü"¸=å,˜=ÍßÓ=»y)=¶}=Ê<Û=¶úÛ=¥ß¯=·ê&=®™Ÿ=§ N=¾lž=Çý>=Ôª¶=Öñj=à\ =è–=¢¿Ü=©Çª=Æ<¬=¸Žö=»1Ú=Ìrü=Ì`=Ò å=Äf†=»ƒ=Î×[=âTN=Íñ -=½¥=Ëd`=·®€=¥ŒÊ=òAÂ=ä•=Ñ÷æ=Ýo°=Ú_s=ä<¦=Ïœ=Єž=Ý"£=Ë,H=ÑM­=ã=û=èXÓ=á}=Ïüj=¢ø=ÍGà=óTV=áð£=ǃA=ÎLú=ÝL=ºÎ=³.†=ì¿Æ=ô±F=éâK=àÐþ=Ö•û=»Pê=ìtJ=øÖC=ÌÚ=Í|š=ÍPv=¯(Ñ=Ô(­=ÛË=¸`=ܨN=ñB=Ú–«><Ü>&=ÊR–=Ç=Èû=ÓDÝ=Ô=Ìò­=Ìâ=È£Í=ÍñÐ=×®@=ØJÈ=·_Ì=±Dß=±÷t=¯‚ò=¸ÊÏ=Ùr¾=àÉÒ=§V5=Ëãª=Ë€‹=Ä®= L=Ä)’=Ðè=¿=Ò«ð=¢=Ï…=ßLØ=·MÅ=ÏÕ&=Þzª=áÏê=ÏHk=Ö 2=Ùe%=Òc=Å™¢=¶Õo=¢*l=Ì&'=Ö̲=â2¨=ö& =÷3ð=ñ…Ê=é½=ØF=Û=ÓHÖ=Á)b=ÉúÆ=ä½=ÔÞ=×µ[=éðx=àí=à´=àTª=æ–Ë=Ùc-=Ù¨=ð,=ðÊÍ=åæè=˱N=ÇŠÞ=ÌSª=æfû=îU=Üln> -¢>mƒ=é$Ø=ûH[>ˆ=æ8•=äçµ=Ð}Ë=¼z{=Á3î=Æd’=ËB§=¾¢¨=Âk=ÒÈE=ÒJ&=ÃM=¹¿=Á÷=º>~=³a=Ãc†=æýÓ=êÓ=¼ŽW=½&¾=½ÂÉ=³qJ=È©=ÐÃZ=£Ž=·4Z=ÅÕÂ=ÖNõ=å«=øÚ`>~=ô1R=×nØ=ó=é`=Ô˜{=”f=®s=«Ž=¹"=É;/=Àu)=›ÙP=¡(=§¯:=¥eþ=¬¬Ë=¾¦=Ȩ=´Œ=¬ÃÀ=´’ª=µý²=¼‹„=Ó>õ=ù«µ=å€=½K=¼R¨=°Ýß=ªà=‚Z5=‚—Z=’a =•Ý9=”Mã=–Uò=ž»M= HŸ=Ö=“µm=‹Ùn=„æ=©øb=»k=ÈœÖ=Åß´=¯ÊÕ=™Ó=²‹†=¥MF=™¿Ó=¾‡=µùB=Ánb>8>t>ß3>‡ù>×> â>:\>b«>()ÿ>0:‚>7Ž >;Â#>3ù¦>Wi>Oj=>?èV>D >CH2>L²Õ>YÆ2>JÔ¤>#@*>60>ÒÀ>R$> ²6>Õ >7â=öo.=çsV=Ú)J=Ñh=ÕWR=ÂÂA=›Â=Š‹ç=‡°ÿ= ú¦=º‘{=·3…=›ØŸ=—•j=’í²=ˆn>=€û¾=’­O=ŸåN=®ðÏ=·i=¤†=yQK=¯ÁK=ż3=¤š=¯È=µUº=³œf=ªÌ„=£¹=ˆ*~=ž™b=¥¥‚=¹9=že=¦‡C=Í4Ê=ÛÛH=Ñ®v=®ˆe=Ï2=ÓC-=Àší=°r=º5=×sˆ=ç~#=ßØ»=Ú.%=æ ú=ÎË=¸Ü”=½Ÿ5=ÁaV=»ö=ÁšŽ=ÿÛ[>Ÿþ=ù¤ë=å[=ÑÒf=Îè=óÂ*=Õ;ã=»ò=ÇR=ÒÛx=Ò>=¹²f=ÁN=Àn=§æ=Ä~=ÊE†=¼[<=±o2=²êv=Âl°=Üñ²=Âr=ŸU =ÝÒ¨=Û9=ÄkO≠b=ß*å=äPk=ÎŒ~=Û,Í=òv=û²Å=õÍ«=ñ®=ëñê=׋¥=Øù-=æpR=ðL–=æ‰ =È>¾=–Lõ=—Ã`=©¶4=¼†²=Ø Ý=Ý z=Ù|=Ú¥=Ó¿û=Ë[Y=§~,=¯áx=¹?V=œ•A= ³f=¬÷=ꋲ=÷÷+=ó Î=É2Ž=Ýò†=åÍ-=ã_=÷ìZ=û0ý=ä}=Ðþè=Ö3=äjØ=án=ä5Ý=ù/>À*=ääz=Éî¶=Ê·¯=ÏÇ:=ÜÄÎ=àþ2=ÏBB=ÑîÀ=Ó°M=ËN=ègx=èØ=Ƥ=Í–R=Úã:=ía~> þ—> -Ö>v> •ê=î¦Û=È1B=ñí=íÂ>=éâ=ìþ=úR=ö­=Òî=ÊQ&=ÍHÅ=ÙSc=ÖÜ6=Ë/²=Á|=Æ=(=ʬ=Ú[6=åi¥=ÌQv=¾@0=É??=ä,=áÙ@=ÕÁ=Îî{=ÖEF=ÚÓÀ=Údf=ßÕV=ÏâÝ=¶?[=ÔmÝ=ê¥>=üžE=Ú˜(=Òv=Í)c=ÅŒ6=Ò³x=Ôº=ÈP =érà=õûÖ=ï!#=å9P=çe%=ìÑ=áüH=Þïè=ÛÑ =ÑÅ~=Æe =èú“>Ή>Í‚>= =Ì ¦=Ë­M=Ô|@=Ö=Ïβ=°T’=ºQû=Í.®=·À’=¯nR=«9=£²“=«‡æ=°X =´¥Ñ=ܸ=äB2=åO"=Ö“=Û 6=àg"=Ô¼=ãLr=õÝ>sº=ÿ2ë=ó/Ú=çv¦=Üæš=Ò÷R=DZ=Ê;F=å2H=÷}=åÌE=Ó+‚=ÚCæ=é[~=ßg@=ÎãX=¶ÇÞ=¤JE=Ùh†=Õ­S=² -þ=ÅÒ«=íL=ÿl2=úRà=êdæ=Üòp=ÐXò=Ä+d=عí=õÓS=éÞ…=×ÞÝ=ÊÝÅ=â3=æË.=ïF -=þ†¥=èï+=ä’=â8=Í…=ѲS=Þ£=é5=ëªS=Þÿ¶=ÍÌ=àÄ=ç2=ÐF=´çR=´õ=ÈÌ?=ØÝ =ß°J=¹ûæ=§…=Áïy=ãoC=Û¤m=Àˆz=Ø=Úyí=Ô¼È=ßTJ>^> ’Ä=èìË=ïï[=ñ>=î+Ó=à:ý=ãÝö=êK=á΃=ä¼n=Üx­=¾Er=Ã*Ú=ËÒ\=Ûî¢=ìøk=ð{Ó=íæ=êw]=õ]’=öƒ=âVÆ=Ìâm=ÝõÃ=ã>==Î[’=ès+=ú¢ˆ=úôæ>—7=×e^=Âv²=Ð(=ÚWã=Øý¥=ÕYî=Ô…=ëa2=ý±5>%è=þªÝ=êg–=ÍäÕ=Ìd=Í =Í\–=ÒÈR=ÏU€=ÖS*=é¡"=Þ°˜=è‚{=ø›=ócš=õ;=ñÎ]=Ü‘ =Æ”F=Í66=èˆ=ð^=õn¦=ýnê=ù=k=ßüK=Ýå;=îÑ=ù'&=õx’=×pò=ÀÑí=Çt=ˤt=Ð"«=Û]ã=ÙkŠ=à<ë=êAö=à2Ò=Ë1=Â}Š=ÌVn=åŠR=äê =Þÿ›=âDÈ>Ÿl>–Ü=Õ*õ=ÞÙö=ãsÐ=åJ–=磅=Ú«“=å–¢> -m=ûš¾=ãkS=Øàƒ=Ümú=݆Ø=ëß0=ùþ£=ñ"=â]=ßE=æéÅ=ÿy~=öÃã=äå=æaè=×ý=å>x[>a™=ùè=øG>f=îø -=Õ53=»th=ßSê=É_«=³N=í²+=Ún%=ÕDõ=ß%.=ÒÂÕ=×*û=âõF=çR=ÕˆØ=ÄL®=ÃÞB=Ý=Ö…Í=×ÏV=ñt~=î±=÷Ò{=ônÅ=ÚÉV=ÛrÞ=ß¿Ã=ä Ž=õ^3=ò+Ã=êx=çC=ãÅ=ðr­=óJB=ÞúÃ=ߺ½=Ü”Š=ÔpR=Ñâ=ÊZ=Êi{=ß” =ìª=êþÃ=æ/k=ü8=áΕ=ãñ> -Ì>'l=âÝ=À =ÒÇ=ç]`=ø!8=ôU(=áør=éð•=ßîã=Éçý=Ý^r=ØøH=ÎRð=ÕøE=ÛÂ=ß¾›=ÚÂ&=Ë¢U=Îs½=×¾Û=Ý„ =Ûßs=ÒÑ%=Û­=éìJ>S+=ôD=ês=ü #=ß93=Ôwz=Î÷å=Ï^p=Úµ¢=èYh=ý€S> Q>?º=ñ©~=Áž=Ãæú=Ât=ÊŽ©=çC8=Ú6À=ß"=ô&=Óÿ2=Ë5=Öx2=Ïé=®Ðy=¶JX=ǨÞ=Ãfl=Õ×Å=×+Ø=Û[]=òÇð=Ùé:=ÐœÅ=Ûd}>í =ß¾2=Ѫc=Û¢Ž=äÁÒ=ÚI[=Ñ=ÎI^=âOå=à*à=Ú§ˆ=Ó/Æ=Ü->=ÝZ=×x8=äÜ*=ÊÄø=Á ¶=Þgå=Ñf¨=ÜF€=ñÇF=í‘r=Ó´Ó=Ê -<=Ê$=ÂáŽ=ÊÞñ=éëÒ=òKÐ=ÝT==×9 =ØÂý=ÜÊ=ã¬2=ðï¾=ëáz=áÃ:=ã÷Î=ùý=ú{=ïò»=õ€Ó=üèè=ù? -=ç:3=àÔ=ÞlS=å)%>2ˆ=êò=èF=ð:€=é€Ø=èL=é_:=êcª=éã­=Û‰u=å3>+n=ôÒ+=à…º=ä,Ž=ùÍU=òR~=Þå=ÛÂ=噈=áFu=ÿ#â> -Á> dÃ>¯>(=ëLÖ=Ó8c=¿¿ø=¿?=ÈÏ¢=Ø?ó=ëØ=ã³p=äYŠ>7b=ñxó=ñ•=óëe=÷==ÿSÞ=ô¹"=àf]=ÜÞ…=ÙçÂ=ÔåË=ÝO"=üs>=ܳª=Ê>=ç}=ûžh=ùpÍ=戆=é9F>—==ï·P=ìj²=ù~˜=ìQ-=í%=íœ=æ„Û=ÜZ}=ázã=ßX=Ñþ=µ¡¹=¸o=È¢=Ú±P=þ~ -=δz=Õ˜*>(> =÷™x=ë(@=ëñÚ=ù<(> eQ> Œ=ø‹û>û&=ÿø->½>4Î=á–þ=ãÕÃ=òÌs=ú€ ><Ù=òh-=ÿÑc> L =ð¥ =í‚æ=é¶=ÚaÂ=Ö¤=ËlK=îhC>ø¦=ê"“=ÒþH=ÛOf=ë¤Þ=ÿ`p=ôwò=êZÃ=å³£=êƒ=åf’=ëv=î°¥=Ò÷ -=ëÉ]=ÿ…6>'º=öÇc=ß•`=æëÎ=÷Û=ëA»=ö½>ïï=ÿ¢Š=×ÚÃ=ñ´=ÿ½h>Á»>Æð>j¥=ùr=åQ:=Û8"=åi^=àâ}=ÕöC=Ýs=ôŠ=÷¨Ê=ûN>ï>Üê>Ü>é¶> -Ð=ýX&>÷>ŽR=ñ}°=õ~«=êÓf=Ø>=Òå>>Ü=Ðç€=ìi=>#&=òtÂ=ÕU+=ÖˆÕ=ïò>9 =ìqþ=Ý\z=ì¶=û:=Õ*=Ü}ª=ò!ã>†9>AÒ>=G>~>ÏT>±Ú=ær®=ð=î=í=ÛB2=á´û>ê=ÿà°=ßNz=å–¢=ä÷%=Õ‹=Ém!=Ó“&=Ѐ5=àˆð=òh=üµ¥=Ý=2=Ö(‹=Ôà¶=Í9u=Ýì¨=ç—U=íêÒ=ò©J=ýr>Ÿ´>c"=øÍý=í=ÕŒN=Í Â=à>Ú=ìPõ=äbî=Ñéó=åªö>ȯ>M=ô@=ø‚…=ú·=ÞƆ=Â[7=Ð{=Ða]=À©ª=ÖÉÎ=é³=ëëõ=é×=ïѨ=÷@z=ðÛ³=äx¢=Þ£H=åµ -=ëˆ=ôDb>y=âm=äW½=ñy˜=ó#à=î}Š=ä›À=öm>K‰=òjr=üEK=ý0&>>>m=ÚùÅ=Ö`=ÖT–=Ôù½=ãvf=êcê=âƒ=âe=éŠð=ürE=á¶P=Ó½3=Û†Å=ó´¢=ëÚN=Ù à=Ê ÿ=ÎJx=óFc=Ö­º=߀%>ùb=õý>7q>¢˜=èæn=Ò¾>8>F> T=ò|K=ì”e=ðÉš=ï¶^=æŠ[=ãŸ=Û¿[=ÍÙ+=Lj®=Ñ -Í=Þ;¶=çªî=Ú›=ÅÑj=Ã$=à—=ÃHñ=ÅÅw=ÛÌM=Û¦€=²§„=½¿þ=Ù~J=­t@=ИM=èé‚=î4N=Ô!ó=΢¾=ÃÛK=Þ>SÆ=ô°µ>¹g=þ›R=ÔÅ -=È1ý=åb =å—H=î9Î=ø›Ó=ër=í@H=ëcÀ=ôB=õËÝ=èØ~=ìÞ>P5>F=ö7ª> Þ=ðè=æ*F=ÞÔh=ÎŽ =ݽ­=ë®…=ᜎ=Ìõ{=Ñ«=Ò½’=Îÿs=Æ,‚=Å -ÿ=ÌÓ}=Ô8r=Ö»ò=ÐlÞ=À'Ò=åk=éØ*=Ñ U=·¬q=å«=Ùéu=Úè=ô©*>u×=ë¤=Ü÷=ð/>>—j=ö±s=å¾M=³Ð=³`=Êþ=Ö•J=ÐzÓ=Îk=Ø{=â({=äz =Û/j=Êg¡=Âw"=ÑA~>r=ä´.=÷ü“=ðdÈ=ݶþ>·=óhˆ=ä«Û=âÙÈ=ꛕ=ìø°=ëäý=áÖÈ=÷Ü@>:=ìÖö=ßÞ=ÛI=Ó ]=ã•=õ=î, =ð û=ìv¾=ÛhK=ã*=Þª=áóJ=ã’z=Ùʾ=àî˜=ðò¨=í -:=ßo¾=Ö%ð=äºÞ=ÑeÐ=Ï8=Ü\°=ì£>žÎ=ù«à=ç>u=ç#=ᄺ=ÑR+=¾u=µ( =µ`6=ÏŽr=Ø=âË°=ÚI¦=ÁPZ=ÖÞ=Áæ«=Ø©C=è’=ɨH=ÉT=Õ/s=ÙŒ‚=è•=éCK=˹j=Ä*ÿ=ÕГ=Û_h=ÕÑí=ÑçÀ=ÉæÜ=ÏJÝ=ÃJ†=Ô=Ñ^b=ðD=ÓAå=Ýn=ê_¸=ãzµ=ê¾S=çµ(=✲=Ó4½=Ø ]=ù»=Õ°ê=âÄX=ùJ(=äRE=ÓÎ=ÓxÈ=à<%=è|@=ç4»=Ô7j=ÄÈÍ=Îß=çÖ8=àE =â>¾@> -â^>pC>SÝ=æ(ö=ß]È=è9=Ø Ë=Ì?€=Üdþ=÷ -ý=é³²=À²=¿:•=Ñf=À.V=ÉÛ=þ+Ë>K¸=ðÄ­=éÎ>•C>>vl>Uj=øáž=æ|=ÞÊ¢=ß‹ˆ=ÝhÐ=ç(C=ù÷­=åî=Ëçö=Ï^=Ý…ø=àp=Ô1Ë=Õ=Ô=Í„v=Ó =ÍY¢=ÐÅ›=żJ=«âQ=£T=À¢°=Ün"=õæ=êé;=Ö×m=Ü­=÷/ =û’M=øØ> bê>ÚŽ=ãÑ=ýk>»Z=í”­=ÂXÝ=¨òö=Ù¾ò=º-$=ÿ=ßýH=éE=Úè­=»Ã6=ª&ó=ÊØ°=ïéÒ=Ù=Ñ•b=Øp‹=×=Ê 2=ÙB=ýßµ>è°=×èj=ÊB=Õ =âÍx=濺=Ý%=ÑÍÖ=ËŽ=×s -=ìÕ=Ó5k=ÑÎ=Ì{;=Åñi=¬^ =´È=ÂuS=»!M=Áõ¿=Êäù=Ô V=Ù =¹—þ=Èš=óÙf=ýËŠ=ê=÷;=ðG =ó2ž=ìEã=Ïò=̳÷=ß~>=份=óBí=èåF=ÉÆ=IJ®=Âþ=ÔxÅ=åJ‚=åT2=àB=Ô²¦=Ü–˜=Ø·b=äžj=ã¼=Ü+=Ú¯=Ýï>_=æèR=Õy`=è0N=ä+=÷Ý=Ѓf=È7*=Í\(=æ›+=Ü °=ï£%>ÔÞ>è=ìIs=ãx¶=ìÔ=ù`Ê=õ¸Ý=û{î=ëåî=Í{Ý=ÈÚÃ=·¬è=¬ N=£XG=Ûiz=öñu=;=ºg*=»N‚=íK‹=Î4è=°}Æ=â%¢=ã'm=ËÌ=¥¦ö=¸Ü=ÞÛë=îS}=Þ,*=ÿ4¨=ìÒµ=ëã;=ç*È=ÈÇu=ÅÍ=¾g8=¼5»=ÄúÂ=Þ1¦=ä?=ôÜ…=ãs°=Ègì=ã.Š=þÀÍ>„‘>_>)=ÎÖV=Ò*H=ú­˜=ÿÍý=æüø=ÔW%=Ú±»=ÔŠŽ=⬎=öð`=àcJ=ÉrÆ=äŠ=¥Ôê=Ÿ×Ú=ŒÅ‹=˜5=©_©=Ëž==ⶠ=ÞwP=Ë1É=Ëßô=ãWð=¸M¨=Õî=à¦=âßh=å›=ïøû=ïáN=ÿF¾=ïü=× -=¹÷=ÉÒ=ì¤==Õ1P=Òÿà=ïI =æ"=×#†=צe=ׄ=Ó[¦=áÐ=³6Y=à­¥>æv>Çk=ÝÍ#=Æâ¶=½\=Îc=÷èþ>ß—> µ=øžÊ=Ò 0=Ë&=åæà=çS›=ϪJ=•0=ÊÚ^=¹šá=™Ç…=£¼o=­Ð=§:‘=•R£=Ÿ¥­=Òó=Ìù=¸12=«‘Ò=¦×=ÊÅæ=îÉÈ=ð–e=ò\Â=Ì8ê=±3=¯âJ=±Ïç=Û(À>aÔ=æ;‚=Ý°=ò{=ßÆÃ=âNž=Ö&à=Ë®=ÄÆ.=Ä–=Ê’µ=ôõ=ðÞÐ=ï 5=èw½=Ô$&=ä&Ã=ýà>>‰z=ìÈ=Ó‚¦=âØ=ôò.=Ú+=å§ó=Ù©p=Ð*º=Ùž=êžÛ=ÿÅ•=ê4U=ü;b>›Õ>6w=ív=Ô¦=Ñ\8=Ô¶=°¸¶=Ë;¦=Ù‚K=ÅŽ=ê…N>ù=ÐAJ=Ä¿_=ãžZ=ÍUã=£Ìï=¯ýæ=÷®Ó=ÓÛR=»E‘=Óðò=ÿs*>Ë$>¼·>ƒ=úúþ=ý´Ý>Îî=ó‹þ=Ú¤F>ø=ÿf;=ðž=ñ^å>¹r>@[=õ®^=ãáõ=Ÿ“–=ÐCÞ=å?N=ÍDâ=áZ=øá%>;=çŸ=ë¿š=Ô„®=×ÓÝ=ÓÓ“=öõ=è‹è=½Cþ=Ôi=Ûb=ò¹û=àå=Ö†r=ÞÔU=ʦÞ=¿×ü=ÏT==ш=Ðä"=â;®>w½> S>”v=æ2=Ý|µ=Óe-=íËÆ=÷EŠ=ò¦V=çž=åÖ =ÄÅ=ÃU=Ç[=Ì*=çð¨=ñîº=û©Ø=Õ=Öu®=Ô“¶=݇=ã:=á#=âŽ=ÙõŽ=ólê=ϲx=³ª^=ê®õ=ðâÈ=øT`=þ÷=ë=ÙüÃ=Ïíˆ=Ëã=ÃR=ºñ[=·_Ê=¶ª=ô<=ÝÞ®=ã?ë=áNp=Å=S=®p©=¨«£=Ób=Î4‚=Ó˜J=ÍìÂ=ÁåÍ=¾2i=¹¢E=¹U^=§BÆ=²Î=¾D=ª«2=’Ž=¹"=¬>=¼Â=Âf¦=¨å¾=¯7¢=›Î=™#Z=¾wÎ=áŒò=êÉë=ý©¥>:’>ñ>}#> > ¼¼> -æ>’0>+3L>4‰Æ>Iß?>W*>> Ñ>GÔõ>XÖ»>Xý>[£>[]˜>[C>Srè>T2 >HÛÒ>1™§>0 -> Ù>å!>t> ¨{>t>*¢> Š>R=ä´³=÷{H=ð®V=Í"E=¤‚þ=ø=‹©†=ƒŠ§=~Cö==¤Ñ=’#ž=ˆ†)=œüè=¯›\=¯µŒ=¡$²=¢Î=¡þ—=šVz=•SV=`$=‰l=Äk¬=Óåæ=Òe›=ç"E=Óuø=¤†6=ù[=ôê-=Î:=êMû=ô^=ù9È=êÈÛ=êá5=ï{í=ã•=É^ú=·€c=ëÎV=éâ=Ë–B=Âd=¾œ=ÇC«=ÛžÝ=öpš=ý—M=ë‡f=Û®~=ÑñU=Î_ƒ=Ñ/x=Þq5=îÎ6=òÜ}=ë]=â—…=ßçÃ=ï…5>E>xR>€Ð=Ó] =çcÞ=ßÑ®=Ô“¨=Ä =¶Êî=°G=樰=ᶦ=ݶ¢=óèà=è’Í=Ñfý=ÃÈZ=î+ -> -èö>(®>3¸=ëÞ=Úò‚=ïÚ˜>35> >ä1>Ò(>š÷=ÿÜm=õGƒ=ï?C=å²(=æ^=äoÍ=×­˜=ìâ=ìþ=Ì%Ž=àAí=÷cÐ> hÛ>’ö>…=â1ê=éˆ{=ë"h=ê ;=ÈQ¦=Ê`ö=Ü â=”+=Äg=Óª=ÎWF=ÉÔê=×íÀ>º> _,> >ì$>‚Þ>á¡>»ã=é‚(=Öö+=à‡˜=õÂã=ñýë=á]=×´^=ʉ[=Ê©Ì=ß"º=î´Ý=ðªS=êU[=ñœ>½>.R>+=ÿ°Î>ŽL=ô€=î?b=éøë=û,µ=ôNš=ælU=ÖÒ=á9Ó=òG=äÑ}=ö†>â†>¼Í> /I> -b>p¢>3â>žf=õ‡[=þÑF=þìÆ=ó ®=ê·õ=þüJ> $=îäí=åÔ=ääS=ä†J=ä‰ =ð’‹=üÊC=ûz=÷0~=òu=ò €>Hß>¤> -i¸>=÷–†=ð#8=Ṉ=ãmC>>8=õ*å=ù¨Í> -þ÷>p2=ÿ¼=öýv>ô>>æ =ø+u>Z>÷f> -`…>} -=ò¸=óÑ:> -Ü>(:¾>4*š>!ˉ=ýé³=Údh=ÎyV=¾àa=á^=àš=ƾ=Ù¤Â=æ'¶=í¨6=á¾ò=Þm =ÞAˆ=ëB=ê‘ž=è*(=Û@h=Ìf=͈0=êeX=ümH>Áã=þEþ>©Ú=ÿ´õ=ìH+=î™"=é~>›:>¹Ö=êùb=ò«Z=ïSp=Ù+u=ÑU=ÊÜ’=ÓÚ=êZ=×èF=Ì°ù=èÕâ=æz£=äþ=ôÃ%>*ô>Äs=óžs=é³õ=Õ‹+=Óª=à$Ó>\®> > øƒ>\=ôcx=ë_ >]â=õ|“=ó"V>±f=ñS=ìÓJ=ïs>Út>k>=øúb=ø}ž=û܈=ùË=ë™Þ=ôC><>\6=ô4M=þüb> -_>–K=ü6Æ=ø‚H>Eâ=ÿ±’>ö¦>U>=ö“ >¹ó> -J>˜,>gz=÷*{=ôÀx=üÅf>q>> v~=ø==íæz=ñüM>)W=øÝ=åvó>ùQ>¨Ýâ>ý;ð?19Õ?9?ë?("'>ãík>xJV>'º­>ßö=ûò€>)R>„Æ>õ>>r¬>g¼f>¨3£>êO¦?i†>ý©p>Çžª>xÍ‚>#_> Ö3> -Ž>^Ò=ôk=ê¬m=Ôê=Å4©=ä¾r=Üu#=Ú•«=ñx>äN=ý -è=ë.ˆ=õúÚ>:ÿ>íž>¼ˆ=òÁ=ôo&> -P>”ò>p‘> -àW>¤>((>¿>±å>I>Gƒw>ˆ›>˜8>˜^>„@>VÞp>6[>_éK>À%Œ?Qà?Q† ?X²è??÷¼>åÍ“>v1H>'š=ðD~=àQó=å±@=ôu¢>sP=ñOë=Ø´‚=íDE=ùrÊ>R> +š=úκ>t>Èl>{³–>¨Õ2>ÉUñ>½žî>£Ù >ך>)·>ói>n> H>Á~>Ã>×Ø>äJ=üÒC=õÇÓ=ö‰[=ó‡P=ßqÃ=éÙz=øì=úÅÆ>mj> ¡>ke>¾Å>$T>h>Pm>… â>€>—ÞE>h‰Ž>I¯>9µ>Mbƒ>Y™þ>U’þ>Câ >2óg>>È’=ÛdÈ=ù͸>Êq>iâ> Ï>º>³Æ=ê[¨=ìÒ£=à¨=Ùä³=évˆ=çöã=écö=ô¯}>iä=è ¢=ãzÝ=óÌ^=ᑺ=õþ>_˜=ô×¾=óo*> ->"J>e>î>L6>>–>]c> ®›>Íâ> -eº=ýŒã=ìÿ€=ýJS>Œþ> ¶> -!-> J>ø>¶¢=÷xº=úøÅ=êV=Ðez=ÕC¥=ú^†=ô=Ü5‚=òJ=ûÜÐ>Ö>Ïå>§=÷ªR>5‡>fg>³²>³k=ûfÓ>qý>&7>ºõ=ø×þ>#Â>¢> ÖÕ=êAf>ÕJ> lB>l>¢o=þ9¢=ÿ'>ë>êc>?>¶5> -ó’>,É> °Í>É>"ˆ>P ã>œQ¦>Îõ8>Úµ >Àîç>‚z«>$ùH> k> ‰Ö> -™@>Ö&>£>/n=õNã=ë¯z>2²>}`>5D> ÁÆ>¶>.7>ÿ¦>†>==ÿâª>:=änõ=Ø/…=àXJ=Ñô“=ÐT=áXÀ> >°G>ÞÅ>+˜>ƒ>)„>Êr>eâ> Á>¾>$=v>d’>÷¾>ºÄ> b ->ìµ>$Çà>Ø6>D—>ø=úÖ>Â’>9>Ž{>›J>!¦>>=ò˜í>ý>¯.>-Ž>\Ï>'nA>)-›>>-Ñ>)Q6>ü>>‘>ðž>áÆ>¹Ê> "> O™>"Ÿƒ>Do0>JÒ>K>R>G>š>6h:>›`>ð> > mº>{m>€>¸¿>$@>õ>™>WÎ> F>‹>#>÷2>†> »o=úNB=ëfÊ>g'=ÿ+ˆ=û$º=ýM>½ =óƒí=ÿ>;ã=û:þ=önÓ>]}>òî> ¡.>ò®> Z>Æ> ɳ>„Ò> Û>*Ú=îWH=دÆ=Æú'=ʼ=æ¢ó=Óå -=Сý=ä¤*=êLH> é>,º> -mã>Á¦>/v>=Â=ú¡>«~> -âf> çâ=ñ8…=ñ:C=ëÏÚ=ãQÝ=äH[> KB> ãü>Ýä=ûÀ=ø»^=þd³>¨‚>$n> -ïå> ,a> -Ï -> Z> Èñ> ô>ª>$S>Mˆ> ä%> ¿•>Ès>Ë’> =>Ä>b8> ¨Ò>Ú ->, ->…ž>[> ±G>Óî> Ê]>4Æ>ù.> Î> 3>&^>~p>Þ×> =Z> ìù>É >Í¡> -ÌF>¶R>Ø>ûd>öâ>\Œ>µN>Tß>©”=þJS=û5²>¿Â> >‹>­>7>ÙW> "–> ÿ$>R> -ˆ>+4> ¬>:«=÷š’=ð¹j>cJ>`ã>í>Ÿ> c^> -„ª>+<> Ý>.Â>*U>”>ñ2>ä‚=øF•=õ3ë>km>S™>V~> €æ> d=õÎz>(ç> ä4>æ> à> qÓ> 4Ç> >ÇÜ>~=ñE«=Ú´û=ÛŸ =ã«=ñÓÕ>õ>tž>ÔÈ> -9>Î=ôT2> ¼þ>u> -rS=ÿcx=û>F†>ä>Ž=ÿO6>ÏM=ü¡">О> ùN>&éA>#{>(>›W>"ž>1H> ÆL> ®Õ>Ö> />À(> > ¸_=ÿæ8=ôϘ=úA}>­Ò=ý¢}=㥞=òé>oà>  -=ù˜ö=ÿãh> -6>î>øÖ=ÿ [>[º=Íë¨> Œ>uë>ˆq> Ü=í‹p=ø’8>MÎ>ð&=÷tS>]> yJ>ªC>¥[>6>m“>Ûx>¤á>> 1å>)=þ¹=ùxK=üÀ’=ý¬ =ñqe=ÙÝÛ=벸>½ã>¢>›=ü`@>¶<> 8> - > wP>>ÕÀ> 7> >$ð>$×>ÿ>Ê>ä> Ì%> ]=ï K>Va> -ú>>g>±h>—2> -Ì’>e ->UK>> UO>S> Èè>—`>†R> K> ¶1>5í>/9>+Ú> X>$>> Ê>Åõ>´f>H¦>lÊ>F.>|>@Q>Oí>;m>—@=ðý=Þâ>¹> ïb>èß>¼>Z>P†>Ë=ïg{=íÚÍ=û´›=øÕë> – ->[†>ïÆ>Wæ=ìZC=ûT:=ÿÖN=ö3«=ö?=ì·p>[þ>Í(=êx=å[æ=î4®=àÔ€=ß=Ó=ýêö=ïïÀ=ú,~>ÍG>/Ö>AÀ¨>qßÆ>’S>œ2Ú>ŠÏ?>yZê>Z•>,Ç>àˆ>UÌ=û)>þj>ò> #>(´>8ê>F> Ÿ²>I>Ú=¾’.=©Z=ЭÊ=çA >§í> -Ž>>Ú“>Õ²> CH>##&>­xD?W"r?» -J?ù¼Û@2¨?ÐF¦?éR>×>Dj„>é£>C_=ün~>Z>F=ôò=ÿ³E>.º>kp=øgó=ú;=ÿ=S> ½>‚á=ä̦=Ë ü=ôˆ>> _Ž=éïp=ã&®=çÍÖ=úÏæ> 7þ>Ó>àç>!¥>+µ1>$Žµ>"á¾> F=ñíK=ðÚå>ö²><=Ñò=å,c>¿–=ö0> -¸Û>(a¡>lŒø>êèC@@%@ÃgA(0ýAT"A\åA*åÞ@·d ?ÜKX>ÐDF>kêh>O¹›>MÆÅ>PNk>[ Â>gQf>b~">cÐf>ZÄØ>fX{>qXÎ>Vrå>9C>6F—>/*J>Øk>Vb> ¥­=ÙS£=é}…> !6=üi=Ñw›=ðdà=ø’=à•=Ð0 > Ë> 0­> ªl>Ek>sª>þˆ=þ@ê>lá> !0> — >®b=ýg£>Ü=ýÙ¸=â[5=îš-=þùÚ>¹(=ýÍ=ý×x=ä=:=ìdÂ>³ž>bú>&…)>%ý‹>,q³>QÉ>zn> aØ>‹o>ü ->æ>Ì>Dx>²Ò>w=ÿƒú=ô×À>ù³=çâ=÷ÏÖ=ô){=ñŠ=óK>7Ò>/=Þ@=Òî=Ø7À=³f=¡Ëú=¯ç7=ÂÏÚ=ÐΕ=ÝC=ðík> Æí>ÆÝ>á5=ÿ²¦>š=üИ=ôr¸>&N>ˆ=>¦>§R>9À> £ï>=ñÀ=ÜUj=ϧ*=ßÔž=ÐîP=»`C=Éر=ðF=ìÛ¾=ê(î=äß²=ò% >L,>Mp> †=ü =ÛnP=ä‡ö>ûq>!‹ö> £> ¨å>|ÌP>´¶>ûõ³?¹å?58?(%Ú?g¼>ÉëÌ>ƒ ‹>)‰o>’ß>Ùú>ý:=÷І=ô^2=Ý!>=ÜÙ«=òpŠ>º=>Z=þCS=ä(&=îEv>_q>>(×>oB> ‘> ’>Œå=ûëÚ>@ã=ø”j=Îl¨=ÅD>=Ä$Î=Ä×n=ÇöD=Ð?=ùîz>¤€>—»b?5T@•–@¢<=@åz¶@þœ–@ñwã@“™ù?ã?¶ >Wž>js>,*¢>3ãÝ>*>À>+¢9>8Ç.>1œb>!²>,ä’>A‚>GIÁ>'öº>0Š> -[ò>M>„~>˜F> -?Ú=ãO%=Û5=ùÝ >M´>6>Ò>ºú> !> -™ó>â¤=ë$Þ=ñÃ=í'X=ô¯€=íû0=é…À=í¢=ã¨r=ð!“> a2>‰N>Rù=ú¦ë>ðv> ¹à>üý>9‚>ÖR> ?§>>C–=þ> ÉÜ>% †>ÙÊ>õ>ã§=íH.>!E>WÃ=ûlH=òj=ëä8>> -—‹>cF>ìÄ> š¾> Zk=÷lN>cW> AŽ> -Ô>ÀU>ga=õì:=ÕfÍ=»§Ø=΄S=ë׶=ûBC=ôgˆ=âu>ð>m>#™> ¼Ù>dÔ>Ûà>Ýñ>)ú>)~>2Ó>.ªº>ð©>¶n>$6>bÛ> )Ž>ˆ=ëÕx=ç ->Ŭ>ÍN=ñK%=ôox=÷ÉU=ü;e> -bæ> -_$=ÿ\š>ú>j˜=ù5N>ÜZ>íÃ> oJ>çC>ÿ‰>¥> Øñ>:Á=æ*ý=ï!Ö>«Ê>/e>>#Ãh>ÄÎ>$xÇ>ºŒ>ÙÖ>,š> áÅ>4ë=þBN=ò½x=ãá}> -»N>)¢>^A>5³> CÈ=ûŸ%=íN(=èéj=þê¾=룾=Ý™R> eà>ë+> úÇ>ƒ>ç >^¶> -4Ð=ïy%=ð¶>/E> ôd=ýÓ=>eV>Ýš>°Ò> ¦‘>_X> ò>b³=á]Å=ÿ u> n¿>4>ÝQ=ÔØæ=ñÍ8>N=æä8=í4=ü >—0>|²> –µ>s>Ól>ÂÙ>R> 7>h^=Ù=À8v=ÈgÅ=×Þ =ìmF> -[2>c>fK>†>®ÿ> R>;,> öJ> Øo> ”’>Æ:>$Aª>ëW>ˆ>'>Caš>wÎû>t¥è>QPJ>16÷>AÞ:>QGŽ>a{Ó>Wò>Kv >3è>)¦> jQ>˜ö> P> -«)> g£>È">Ê >•þ>Ó;>!¢§> }²=öD+=ü²Z>L¿=ü+=ýÚ¥=ÝI‹=ã ¦>è/=øÒ=øš>Ö’>“†=öôr>£à=üJã>¬e=ꧫ=üýæ>ê>$M^>y> QÆ>8Æ>²¼>d”> -3­>é$>pÒ>ÓÊ>Ò-=ý¡«>+2>þÎ> -Ø!> "Ù>!{>>·>>>ìý> õ>ö>Þ> Ÿv>Áß>y¨> -ty=ýdÃ=öβ=óù¾=éÂû>zÝ>—M>¿¾=óž=ù¤:>Ÿµ=çHÍ=ì%R=ýØ>>¯÷>á´>XÉ>òŽ>Î}>æ*>V¹>’>z>Kþ±>|¥È>¸.ç?±½?éu?G­>ສ>ž€Ô>:pÑ==ß±>®Á>C'> =ö ¾> (> >è2>ü> i©> o=óͳ>ÉU> i=«ì¸=Û -=þ‡î=ß¾#=ë‘P=ôY*> '”=üî=ݹr>Ž§>Æ=â!s=ß(Õ=Õâ}=丠=ïV€=ÏNÈ=Çêp=Ô(=ƾ4=¸G=¹ZÀ=Ô~R=ׄ’=Îß²=ÍéŠ=Û˜=ÿÿ:=ëöN=Öíz=ÞÈ=þ'=ü`=¶³e=¦Ýî=±÷h=Þ>–=Ïz@=Ùž=®b=ºP=ØøH=²>=Í-»=þ÷U=ºl¸=¬m=½ÄÀ=Ò5`=þ–Ò>a>&Ô>*py>#_>>5Áv>B¿Z>;÷&>6†0>=à">[†*>>ƒ_N>q°U>‚J>€ë’>y…Ã>O%>…0>†ÂÊ>uå`>_ãš>It<>/ë>'ÏK>'e>/ã >4Z>+fã>#¯#>$dà>( J> ¸µ>PÏ>=¾¥> "q=àõ3=Þê=Ùи=ä£p=ÝÞÐ=Èò·=ÆÅ=Ø¿U=ÓPº=Í;=Ä=»¯¢=©`S=¡…r=ƒ=ʹ=µtì=žìX=š=¤¬î=ÁUe=ÞÓš=îlµ=ãØ=çÀ =ð·K=ÑÐø=ô6->›>ÀF=ý@6=öM>ÙO>ú>Îî> à> ¡e>í}> Ðö>çë>Uf>¸F>6i> -·:>!’"> ã+> d>¤o>íj>F¸>/>ëo>"Òý>ª·>D4> {>+=¸¬i= RW=סã>¾Œ> -\:>ù=çÚ€=î “> •>^X>ào>P>4> -Ëâ>âý>ú>F‚> Ïq>³>n>9’=ùä{=ü9ê>N>Þ2>¤À>!‘>\H>ëX>r><ú> oJ> ó¬=ïé-=ØÑ“=ë†u>Æ=>yš> IP>ŽN>Rà>"£~>Oª> Ò> O6=é'E=ã =èö =ïÓ‹>“K>ž¤> -_‰> Z>˽> Ò> -‰,>aN>¬>âV> ¼>]ê>">-]Z>1-ð>n6>,ò>¢w=΄¾=Ëè6>"ž>Ýr> Ùž=éuc=Ë=êûn>–=ü®3>u†> ùB>ö½>Bk>¥Iº?;:?‡§?ÁÞñ?÷ ¢?á5ö?­Ü>?[iµ>¤££>OxË>(Î>>$Øß>¶J>A^>‚:>¹,>“> S> -î> ‘R>û>³>.,“>ªÕ=ñ€=éäÓ=ÿ:‚>Õ^> „æ> ¹r>Ó¢>NÒ>dö> -p> ãè>z>G·>»‹>¹>(“.>ö6>Ÿ¨>+> ‡œ>""> í¨>bª>Ö;>m>`>*•i>A¼:>1ÜÏ>-—3>'“Ì> ’X>ú=üC>¸b>¡†>¾*>+ 2>'à¶>ñd>Z:>ûv>$:ô>;ÊÝ>5(°>[P=ööK=ä³c>ùÎ>˜Æ> ¨ ->ë\> P;>4z>u>˜> ñ>p>E>]n> ®>ô·> Ä!>pV> -ž‰=ðî>F>7Æ>ÔZ=Ã@=âÏ~=÷‹µ=çô•=ü¼> Ž>€À> ô1>y>E=þ»=þ`N> -} ->ô.>&Õ>~>Ö†> y¿>î>ôø>Œæ> žR>ïÀ>Dò>È!>»†>dü>]<>p–>zs>Œì>§\>‘>¡>&ž>`> -,l>*>×>û¢>Qj>7>ú¥>ªø> ÁB=û>~=ýŒŠ=Ý‹*>#¨>ïv=ôñ-> -Z>ãÃ> º¿>ôö>²>×ý>)º> wr>ò>*«>Áœ>þ¾>gÊ=úʺ>É_>'H>Z}>>pâ>ˆ<>cG>ã?>!ú>=n>¢5>>’=ôsb> Fâ>@>t}>—€> 3>×™>"mL>¾,>ŽN>t+>~>{œ>M>i<> ä¥>lã>Ã> hR>(>“>¹F>"b> 3">W>'â>>%‚¸>$ˆ¶> L>WÖ> Dj>>Žó>'ó~>8S>qþ=äÞ=üœë> -†Û>Ly>ÝÑ>Ã>"B>C¬>|¸>2»>¢ù>>Åò>!%·>&1˜>&>ìâ> -/o>‚2>*Æí>+?>ú¢>ñÖ>$Û>QU>‹ã> rS>Ëp>w:>"> W&>Ɖ>oJ>q>=˜>è÷>—r>è>'êó>#ë6>4u>èÃ=ÿEF=úxz>Ò}>õ>B|>ù‚>Øñ>ß‚>1õ>$6>-kJ>#>ä>»€> ®Ë>&ç> 4¾> ìŽ>Så=þQ=öÓ“> -¶>*ܶ>g|c>²HZ?Ä?IhÉ?\lÆ?>;Í? ³>·ìƒ>Ey)> e|><ê>CÖ>¾J>:>-—~>_c>¸›>!D>) -> GÊ>åñ>OŸ>^>Ïü>õ>¶Ò>ˆ>Xã>a†>åŠ>\’>"kj>%?R>%L>çÅ>Xb>Ž>²>:>v>óÓ> gc>o>õ¹>ƒ&>›>r©>P³>dX>óž> ²4> -_>±‹>,‚f>$f>Ž@> /Ö> ->/o>UT>é>‘Þ>™E>Ï =øÖ=ùÐf=÷û=ä õ=ùóò> ÄM=ö³Å=õþV>«ç> ö>0Ã> #ç>—5>ÆP>"o¶>#'@>$Ð#>)>>$ž£>+†>²>Îs> o>C>¯P>s >> Íè>™>ëM> Õ†>Ö=þ/=õS>*œÒ>Ií>™J>ßZ>dé>„…>Hž>ån>"uè>&}>&!f>/“>$o/>ÎY>!Bv>>&>×8>›ø>[`>KD>€E>)à>2yN>&ͤ>г> ’><>’^> þT>&=>&á>&ï>3¨>9b>Tò>Þ8>þ(> úN>J˜>P_>>ù)>f>‘>{>'E²>;£>·‹> w>X{>Š>%Àt>/z¢>(w>5ã>al>`n>>¦>Ý|=ú>ËA=ã =ð¤Š>¿=ù+ >±> ä>„å> ¥Þ>5õ>&Ë­>Ï.><>=ú>>>`>>ÌÌ>Š>ì">.Cú>4›Ø>(Aä>z>U8>zý>"|> í‚>¦V>í >¬†>Ò6>hv>Âg>n>.>`È>µê>Ký>^F>xõ> =ç6ž> -ºÐ>/>2>/Iž>(¿v>ÇÅ>%¼J>Or> ’N>&ôË>>1r>µ> ºë>a?> >Í>£Æ> â>^I>*Ü> G > ·Á>›>+'>—l> óÆ>²ú> …>>zp>#&>`îƒ>³Nb?JPï?˜1?»Èü?çòH?à -³?Ãû´?¥œæ?TÈ>éÆ>wÓN><¡¢>!S>ö•>!§>!›¶>5ÅÂ>3‰è>!ÔG>-Ûn>.èz>,bL>$á~>(ñ>)²•>(®)>)à >#}l>‰ö>u->'æC>-WÓ>>©Z>FK¶>1ÚØ>0ÊÛ>5¥ƒ>6cr>F•¶>DÛc>?2»>D„+>Y¡B>UxB>A§^>F­ >4Çc>+_>5š}>MÉ >Mšm>Aò¶>V>!j>:Lž>U­ˆ>+Œâ>1…¤>8;å>@˪>@Â…>@³k>9L>'Â>/Îê>)øÞ>!ÂA>*àÓ>*º>I>J½>œB>-ú>%dz>'GÃ>?G¾>AŽ>5܈>2mÒ>3¿">)m„>Ç>ð¨>¼b>½>£O> §¶>Òã>Ð|>aŒ>'fÒ>¨Ý>'%0>+Æ]>,9æ>0‰>ü:>% ª>/]>!¯­>#×­> ˜>ÃH>!½¦>$‚Ù>#{‰>)Á6>-k>'$T> $>(> ó> ›> Ûç>Ø$>ý¿>‡Æ>ˆ+> Îþ>#ØF> ¼§> €b>F>&å>Ä4>š|>Ü> _â>%(]>!ÿM>:>ó>Ï‚>·­>$Tm>6¡š>-;> tª> ¨>È>!È>øk>ó>ø¦>û>ü³>Jh>ÿ†> -^ ->#¯>ÝÜ>óö>R@> Ò‚>ô>%šw>)›> ï‡> ç>å®> ï>Wç>zÄ>¬—>9´>±">ýÞ>2‚>!)â>0‚>0>> ¹–>³>ÿÒ> É >sm> m>k">Ïõ> Mq> K>Ò>¥b=ÿ`Õ> æN>é±>"¥w>f{>!J–>îŽ>½>FÕ>I>$žÔ>%š¢>3^>Ê2> -0û>zæ>Þ¥=ú*ª>©Ã>/ûE>8„×>)©b>[Ò>•K>Œ >P>ˆ*>Òé> -ù>3™>Íô>â>¦Z>¶À>m> -¬1> -g$>ú#>Í=ü£ã>È9>%Z>êc>f9>¹¹>Ý>—’>'Y>!ùŠ>æ ->{>=!>É“># A>(> ³´>O"> ²5=üôÅ>à>>QÇ>¸> J‘>§:> -QÀ>ÌR>!$ >4ª>[«>$Ê>Î3>, >4ó>Ÿ~> ã> æÆ>æ…>Î->‡£>´º>øS>=Š> Ÿá> ¯Š>ÿÞ>e^=ût5> 2–>Ð>jï>#> ±*>H=öàN>³Ö>)b>D°>7S> ->üs>CÂ>O[>B>ÇŽ>7á>qÓ>¬>¢º> f’>b=ÿ˜&> ä#>‰‘>'w>•Â>.¦>K4>(7Û>(Ø>ô~>€ï>U;=ûÍÝ>ùà>Â!>CÒ> ¿Ô>ã>7­> Œ–>Øz>Þê>$Îs>4>µ&>)ž>xß> Ç>#¢>"b>0ÜA>Ö> *> ~e>¶V=÷à >L¦>Ü >ï=ãj> &Z> Ëš> -Re> -d>š0> V9>®±=÷…2=ìNî=îî>/Ž>ç©>ßî>#ê¦>*EÕ>ð> \þ>é<=ý".>ú>òÍ>¡¤>Hu> ÷=>ŸY>¿i>wÂ>è>M…>ž?>,R>ž>=G>Bù=ø#ˆ=ò:{>Ú>(³š> ñÖ>+>0o>?K¾>œ„c?ÓP?BÈ´?[çË?IîK?ê>´ê>>Á>)B«>7>W>ñÿ>"AÔ>gÃ> =š>¿v> d>œ†>Ç >#æ?>$èz>!2A>*}4>t >$>)á,>%3S>$×—>rº>“¢> â!>‹â>ƒ~>ìœ> j>(#Ø>-ϧ> KA>ƒ>)5>Ïw>f¿>ªŠ>¼…>£ ->o>•Š>AM>`Q> ‰>ÖQ>\w>"è'>#uÔ>õ1> ¨Ø>çQ>iÞ>CJ>éÑ> >Oe>#ÿ>-¢ú>.d>v–>r>> -³¾> W> Z1=ð>¢Ì>XÓ> -gâ>ψ>mÚ=õB¶=ç ø=×oý=àz(>; ->_>> Ü•> -> Èä>Ûï>)2> -9y>]Ã> Î>ñ'>ˆÏ=ôVú=öOâ>ta>*=ó=’=ýˆ>GÆ>X5>ý+> -ðî>c¡>©>ñ =ø>e>mr> “>  ˆ>)Ê>ah>|>­n>]Ž> ?Ê>]>Ál>ÂA>D#> í>ó>#i>,²>!n!>íú>,>hú>Ê> Ú’>¸> u|>!l>CÂ>Éü>ÿÔ>»>àß>‚]>pî>ª>"á=ú:ê>‘ù>ª™>1A>Qj>°~>s>7>M >[Æ>#>æ>q">5>¸x>Ç–>&6±>$Þ">×T>k=óô=÷³U=û ->cÕ>2>+_V>(´ ->™>Å>ˆä>8ð>®=ùp>D¯>ð!>´‹>è>´Æ>–«> -„‚>:">9œ>B>Ü>J>ô…>6Î>ª>¥+>«¿>…€> b>ß‹>Ÿ>$ß:>%ï¾> ý>÷Â> ¡Þ>ü°>®š>SÖ=ñÉÒ>+•>^ê>ç•>œã> ¾> ‹8>k>  >Vä¨>çÌÕ?;Æ?wÉ.?ˆü?ƒËG?kÉ?d1?ktP?ƒÞ¼?Y&¨?ý‚>“f>"£Q> *£>†¦>*”Ã>(øÌ>’½>l‘>‰v>»>(¨>! P>XÎ>$O’>©1>Ñû>T=>ž>¿ñ>‚”>Qê>\Ü=ìŸM=ðbÅ>¦*> --> -ŽÆ>Câ> n<>™“>KV>x> sG> ÒP>¡:> 0 >û>Rá>"â>žõ>åÒ>ÀŽ=å_¨=ôž >(³> Á3>«š=ú¸;> C,>ø­=òg3> -Çú>F‘>xÇ> - -<>¶=öÍ•>M¾>F>`Z>#U–>(Rl>(ò/>$‡>>>‡>ö ->Ñ> ça>½9>­^>^Ç=àUš>õV>Ëz>5@=ôÙ¥=Ì=âÀè=ë“›>ƒ=÷S>»>Ó‚>¥„>"Þ>P±=ø^à>,ð=ü`^> -b„> l=ûM€=ë¬Å=ÍK}=Öê›>Äç>Qñ>uŒ> èr=ö9µ>-Ù>„T>^‡>¨Ü>î¶> ~×> mS> ™m>Œn>ce>#ñc>ÙÎ>1>†=þ¨¶>#O">Z=ÖZ >k$>~‡=ð1è>Ï‘>Œ'>R>eh>j‚>í[>›º=ÿŸŠ>?b>cë> G‚>½½>bû>û>€:> -`w>Š>$ ò>&‡Z>+ Ý>.»>>>Pœ>+‘>0(>‚>œ=Ù’ƒ>ôb> Ýš=öyþ> -§ç>/Ñê>Ú>¤µ>ÌØ>%:‚>%Ïr>'ý’>)^`>2ù3>+Ú}>g>+> -P¥=ú¥@> L7>× >¿ê>H»> -œ¹=î&ò=ú‹ƒ=óí¢=õ<¶=üÖJ=ñã›=õ‹Ú>JÊ>a+=ÿð•>6m>µ‰=å: ->ÿB>@=> #¾>ÀÊ>ã‹>" -ã>$éU>îì><©> Ðó>$•1>*›>á&>.f>0•>(L}>&8>'Z[>c> ’> ê>Ð> ƒL=ó‚ë=ñjj=÷¾=ùHÛ=û•ó> -‹>ô">«²>øé> €Ö>¯Ú>æ>‹†=îuö=ðç">;>> Â]>í>O>BÏ=å½>0²=÷£>cp>«¨>­>Ÿü>p:>ž> /ý=ú*=ñÿõ>ëå>%gT>¡ž>ÿZ=ÿ)X=þ]=ýîø=ý§ë>OÙ>u>¤n>פ>F¨> ÄÀ> ÷‚>|b>áq>“`>K¶>²:>8±>º>=*=ÿ¾º=üøM>sz=óp=òäx> þ><¾>.ì> -Ø> D>´B>vH=èÕ®>š†>QB=ý2Õ>p{> —>D=æò =ý¶›>íþ> l=áÆ=ÂHj=êš> >ué> -I„=ÿR>PW>èÂ>‡ ->%ú>Í’=ôßS=ÿÇð=÷>£>g> -Yf> +>Ú=õ=ó·ˆ> «Š>fD>T—>.gE>1mï>..>iÀ>ò> -€?>8">{2=ýû=þî~>Zê>Ðá>s>dÖ>Ë>ó>=þ•î=ýb=ýHÈ=æz[=éÜò=ûƒ>­~>.ˆ>ÞR> ûà>Ò¿>;=ÿcû> |>°z> Ý>Pš>Xg>O£> Ž> |>&>EW>¢à> -> -ª*=ïá =Öà=çK=à-Â=ɘ=×u=÷¡E>âH=þ—Þ=ã±õ=Ït -=ÉĹ=Öÿð=æ =ÜÂ:=Õ-€=Ît =å'º=ÚŒ£=®n*=½w=ËDl=Ôm=æúè=ôr>“¢>câ>ÚŽ=çdø>¨a> „p>ÁÒ>6†L>KD>"Am>31{>;X6>0E¥>@ >L¹°>BêŒ>\hE>Š±Š>{Š>w(:>ŠÍ>’5Î>—@=> ã¹>‘Ú ->‡AÔ>Š¤â>¡°>cX>[s >kSë>tC^>rtH>{¨>~ª2>yü£>aÁ>QàÆ>M<Ó>Yš>dÂk>qc5>R‰>9ŒÔ>$W²>#Ô›># >Œé>Žk=á0–>>Â>>†> ÷Ý> -FÞ>‰þ=ø~=ø >”h>_>ƒ?=ö¢R=Þ§@=ß`=ý s> ÷“>Ý>ºª>H¶=ö‚Ð=ÙÐÐ=âw -=÷ÿ>öî>P">ƾ>å(> R²>FJ> Ó)>!óË> õ)>!> J> ‚>óž>$Ã/>)‘>2 .> O>zÄ>W¦>*æ¾>(Bb>Îr>\¾ >™">íÛ«?ön?MÚ?Wg>î…‚>§7–>DAÉ>.äZ>'Ø >*°¿>&ˆ’>.à”>>Jb>Aѯ>4f>$ÅN>(Q>Éó>ó>yA>"6¹>/>1Pí>,{ >qï> >«ù>ëÅ>^>>>Ýx>¼²>è>®—>ºþ>­€>"Äú>õ?> Щ>ª>'úƒ>'¿ ->/*>%ƒ>%->Îæ>r<>˜ù> > £v>ŽŠ>%î>#>*aÚ>*_ü> ãz>7*>ë`>šP> ¡Z>/`+>.Äë>({³>%j3>-ZÎ>ý*> >¾ò><¥>Bª>ð >Ü›>в>!´r>. F>4úó>N2>'z(>/ø> ¿> > ¿>“æ>p>Zï> C:>6Ô>.ªf>)Ë>ö>«Š>dÿ>j†>g´> »¯>>ªß>=²>/†>Ï>”ï> DÐ>´ò>%+š>*>#>Ê>ä’>|§>¶r>'çª>*ñP>, ²>/Vô>0Tˆ>/¥> ®>—> –>&fA>!!^>Â> Ì6> §r>ÐÚ>^K>}˜>#›Ð>(Ë>.ù>€->ú>"y>*†>+óª>)Væ>-2Ê>.rŒ>!õ>¹Ï>WÏ>d›=ñ,€=Ólð>$•>l">d”>¨ >ón>2_>Í?>>IÄ>Y]ò>UGƒ>'bn> Þ1>­%>%¢„>" Ë>2t>”N>ʱ>±o> ­f>^Ö> ð>)¯>ýÿ>Õ> Šr>ŒK>dœ>›:>“Ë>­Æ>=S>%œ’>%Ã>þÿ>!Õ>L&>aú> Ò>#>¯H>†Ì> ¾š>I>  ->œK>'*7>¨MZ>ûÈ&?' -?3––?'/?8ß>wJ>œr#>Ö­]?4·?&$Ù?Ú>ôð:>£ÙÑ>@@> 4•> ’~> Æ> Ùù>3 >:>#%7>/¸>ÒÕ>]ñ>‘Î>:>*^V>*‚ƒ>*Ê>ƒG> mæ>$Üz>Zö>íç>½É>5º‹> bŽ> Ș=êaP>AÂ>Û>h> ß>±]>@:>êƒ>)Ý><ä> »>»‚>b<>M‡>6Ÿ>]">!%j>%÷>'ÿ{>%?©>î>m+>&P¦>#Òº>*ÙÌ>)r¹>³´>#Ê>+>o>-»>ê‹>—¯>ã>>©>…¢>º>$¾*>&T¬>ÒÌ>!†Û>%†©>“ÿ>)ÃŽ>&œã>ŒB>"å>+Â>%ÌŽ>"Jf>ø¹>Gð>)Üw>/yÖ>1b>5Ú:> `º>·>*Í6>'œT>›ª>té> -Þ>e€>¹>!¯>\ô>gN> a>F¹>-˜>F$þ>@óÌ>?ªÈ>?h >0ál>ÇË> V>*¡->s™>HV>)ïª>Š>>\Ý>‚r>ÁŽ>®Ê>*¦> 6>"¬n>r¦>zñ>ß´>,W2>8?v>BX&>1@+>#Û>-žâ>8Ê¢>+þï>&†p>¹ð>SY>ÝD>7Î>o¯=ñÊò> {±>¸þ>/Ü>%t¤>‡†>„J>n>U–> V>.)>.Cì>"—Ù> ê>I>fÒ>-˜>Ï>§§>}µ>*>&¯ç>‚{>oõ>%d># î>Îà>‡}>Ž>NW>G:>’®>p)>ýª>%óñ>s> }n>SÖ> Þ> {Ñ>X%>&ø$>*&Í>&x¡>³î>‚ ->, >üí>ˆ>#J>(Ï’>$½>³ÿ>9±>U5>>I>ëó>x£>Ä<>N>9&>b>±> ò>4Ú>‹ï>óZ>SÕ>#zŠ>$e2>%U©> b`>•æ> ªb> “ç>5“>§£=øðp=û¶b>,> Ѿ>A.>E> I>/æ>#jV> Æ> µÿ> NŽ=ÿšÕ> & >U>ö¦>­!>Å=>„¦>¯á> ù1>Vp>+>¦> ×>à¨>ê~>ÿ2>(–>&Ô6>§1> F9>"ä -> >aþ>[>x>¯ä>!ñ>úÎ>«Q>>NÍ>{š>Àî>´>˼>Z’>f=>Žz>'úî>˺>à> -¯¥>°>××>àf>nÊ>K·>ª>g=úiº>öz>›Ž>F€>&> eR> J>-¨>#ß> > ܘ>$> ->aÖ>Ž<>:(>)R>£¤> >y¸>g³> -.>ûË>\'>°>£>| >iB>¦²>[f>%òX>*H’>K"> ƒ>Ö> *>f¶>ÛY>W> -h'>I¾>Ó¨>Éê>'¢>&Ê> n>!öç>!F¬>7M>Ì)>$ - > Õ4>¯ú>à>&Y>A*>ÄR>p=þùE=ý3C> - 9>Û">l>1¦> =Ë>çÆ>¢> ò>ûù>Eï>Rú>¯G>'%\>'®>M¨>S°>#‚>#ýâ>(›Ø> ¨Õ>‰³>¦>)üž>Om>ø§>+î>C>Hé>K!>(> ‚ > M> &>}¾>_k>2x> ‚â>yù>Î(>1Ã>åð> K>hn>š>X’>h@>%²>\…>ø²>65>Å9>’>7ö> [> à >ë—>…¸>Íþ> ª½>KN>Üq> ¨ö>È> -+>á>S=üË=ôÍs>rb>ùV>¼)> §V>å£=ôëê> Îé>"*>UÌ>ߺ>+> á2=èqË>ÔÞ>$Ð>×*>Â>ï>=üŸ -=ð\È>G¶>Ùµ>‹ž>(Au>"µ>!"ê>%c‚>!¼à>@f>7j>nQ> ø>Î)>î“>H>-.>#>_+>} >k>>(ö0>&YÜ>¶@>†>D>F®>'Û>+ Ø>)¦\>$‹ >Ë4>:¦>ÇË>¢E>=š>»->«>n&>=¢>A‹>~’>¼ü>¶Ñ=õ[>Ì*> \>¶â>;Ç>½Û>Œ>XZ>€Ó>¯ž> f>i¿>ºž>Í>!¡>#¸>>˜}>s>·C> kŠ=ôR’>!ç>ãØ>!Áf>îª> -Ñ>ý`>}>Y>*!°>,ìè>%ùZ>u> ¢i> Rw>†ú>¡Í>c*>Çú> -‡>º>b»>&Â>)}.>o>b> -ô>¸> ›,> AV>–ê>>&‡¾>)):>eÓ>;>ùv>'¦>,¬û>+Ðx>W> -ç -> ‚‡>Àõ>>MÓ>¾ø>h>>"‹ð>&vå>"2í>ûB>tò>ƒB> -„Ž>°>0¡> À> -RÕ>eÇ> ™õ>˜>‡> "=þ…[>èÞ> ú>S> ˆ> Í>O<>¯N>¦™>A8> -\6>Tæ>Çê>ä+> -§q>%Û>Ü1> -ÞÉ=ær+>ò„>. >ŠK>Bn>)R">&ãå>![c>Ö>{Ê>) ->6‡>{Þ>§«>ÊT>21Æ>r1>“•s>ª»Ë>Á1>»Zl>™Øw>s‘>I=>1%q>`>Št>.p>Îe>Ú >Ä*> Ä>¦B>Þ2> §V> ÔZ>Tó>·> k>iä> 5–>C> S¬> ¢>V>†>h>>š>kê>2–>$@]>!ÞÏ>8\>pN>Yx>À”>7ª>Í®>!Þ¾>+>â > Ç;> ÏB>é>Þ>¨/>Áí>×Ð>@>èû>a«> ¯>'„u>À=þì >0“>í?=÷v°=ô\Ö=ï\Ò> -øc>ñ¢>S8>ñL>>‚Ÿ>^Þ>ß`>:I>êì>d'=úx&> l>Ç…>ë=ó¿J>]…> +>#e=ü™þ>£ý>e >Qž>_(>k>ùú>qµ>€`>Âñ>!Ÿ>  â>»Ð>bÄ>´'> oÉ> ú3> -„Û>(†9> <>#º> ˜>O¬>°>ð˜>X(>ÁG> , > 'ª>Så>aÆ>õà=ý¨›>Èô>lá>ÅÕ> D2> -™Ù> ìÒ>- Š>‚“>`ª>¶ö>ì> ë >Sq>\¥>úP>ƒ²=ùÇ¥=÷¯p>BV>ÍÎ=ð'Æ=éæ¢=îœ=ÈWß>wÕ>æ¥>íÎ>Dæ>Û®>Ó>ár> ">ív>t>÷>A¸>|ß=ûW>´¦>=ßjã>Ì>Mx> g|>¼*>'¼> Œ—>ôT>x>vT>ŠÇ>7Ê>ö=ú ‚=öš>òP>LcP>‰6>¾ì·>áâû>Ôë>´²Í>vìÎ>QZ> -w²>i>RK…>Ÿ%ß>Ï->Ø4µ>£> Žð>J4 >6†> @>Y>;<>b>ý&>ÙI>Ô|>"F>îÝ> -é> -ø¾>œˆ=ñÚ>ßé> -µÚ>Æ> ú>;®>Ÿç>Q>l­>™ó> ‡µ=ÿKÞ=÷”]=ÿµè=ôfû=ø¢v>3¨=ÿë=æ’c=÷_>>º>! -> b¦>á>®>4w>†4=øzÐ>Ài>™0=þg"=ñʃ> Ý›>/G=ô®û=üjj>¹¢=Ü«–=ÖÇ6>cn>Ú¯>Vë>w>áf>$Q >½þ=þÅ>†>Œy>Ãe=íŠË>”y> ”>K3>gq>àÔ>—> àz=ðâº> a$>?>çz>B> ¯>3Ü> Šñ=ø;=îQ5>Ó=ú‘€>‰’>uâ>£‰=ó1ƒ>.>Õ>Òò>@>·ó>ë¢> õþ> ê >Ï`>)Ñ>í¾>Ò> -ŸÇ=öI> õ>&à=ð½=Â'=ãM=Þ*x=ã[^>X>I=ö“=ùÝ =ù˲=ô« ->x>"J> |>ëâ>$‡â>{ë>í3>¬Â>ïÛ>oU>’Þ> l> -> û> Ðn> -“>AØ> ‡ž>{Â> &n>w>p >AÏ>Ÿú>6Á>5.>2>öE>L>ès>4c> r>ì©>:¢>ðÑ>—Ü>±ª>hÿ>]/>–> ¢>+>-#> -j> ->x"> Ð ->ž> "©> =æn+=ê4Ž=å¥ú=àpª=ðÎ>Çb> -5>è;=ð?Ã=ô’n>Òå>¶> úÒ> P‡> ¢Š>k$>ïV>Le>‹2>¤=ö$Ð=î9R>·S>) >HÓ>&3ô>/”Ä>Ît> ¾&>)œ>o‚>Gî>À >N> ?Y>‡>wé> Å > ¬±> +M>åœ=÷Ló=è(=õHF=òÖ>øw>â¼=ñ==ó,å=ãQÃ=÷åž>pÝ>#*>k>öŒ>T¢>Áš=õl&=þ7~>ÐÐ=ïá6=òk>·f>õ®=óÒp=Þ§Ú=øºŽ>>R^>­ò>š> ˆc>-¢>½B=ú†=ù‡-=ûóæ=ð‘5=øA;> -µ>VV>š>¦n>L> ¨„=寣=ℶ=õM>Å>‚R>g´>š]>Ð9> ?>¶Ó> ¾=ú~º>âZ=íñö=×)>)=Ô{•=ô²=õ(^=ݺ:=ò+{>àF> -½&> -æÈ>wF=ý55=ó­==ü4> -tÝ>T–>¾ö=÷@`>‹F=þYó=äݺ=ñçb=úØ]>ÉN>¡ƒ>¡]> -vr> *~>tÆ> úF>Û^>ÿ>[=þÎ>ÿ=ý">uö>zÈ=ú™Ë=òîŠ=ú±h=ÿ¼^>BQ>¿> Æj> <>(6>Õ˜=ÿ0> v>Õ'> ¼#>¸>…@>˜6> :I>Az>LË>¾> 4> -÷µ> ðN>-ä=ëƒ.=ü/> ¤R>€x=üÈ^>a:>@J>5aZ>Ýæ>!µC> y>|>Cg>Z„>þ°> *Â>Ëì>ŒT> ¤=þÇ=>K=ÿ:>Š>Ì=ö ¨=ÛÈ =ÔªÖ=ßú‹=àåÞ=Ýtr=Û„¢=Úq">ò>´S>'ê>Ã> a=ÿ¸6>ŠÉ> -iq> ߊ=ûG=ï½X=ë·£=ñA6>PÞ>-ž> .>܉>z=éÜ=Û£=çX’>‡>}¶>Ò> Ú> Ýî>d> üŽ> ìß>ñu=èMè=äYª=ôh>¤> .R> Jå=óƒ=à„Ð>e^=ñŒ†=½ÑÃ=â¼Ð> ™·>r>†!> >¢„>Tï>Ÿ…=ìX‚=ðçš=é¸>÷Þ> (è>SÎ=øsø=ë¤=> -µT> ͺ> -ß$>Î>8¯>x‡> ²¼>ƒ> ‡> <>> nr>>d1> -D9>™ô>“Ï> s—=õí–=ÛäU=ôÍ"=ûÓ=õŽ…>ƒ½>Qš=ðr=â‹È=ùÖà>>þ:>¨^>‹’>h>x¦=ùà>¤B> -•=â̶=éâ«>IÕ>1Þ=óS¸>ØÆ=ß’Ö=ðÁ2=þÔ>Ô§> -UÖ=ÿHþ=çJv> ûK>yß>!r>W> -> -aÌ> 2a>PŸ=ðbÍ=܃=ÊǺ=Áø=É@¶=ùeK>€%>¹F=ü_e=æµm=ø„}=ø' =à”¶=ð˜ø>‡> s‡> -¯ô>´«=Öòþ=±š =¸bâ=ëÏu=ü%Û=Àÿ"=Þ;3=ôÕÒ> âˆ>âb=ø+=ðîö>%t>ª^=åêš=ÌTÛ=¼DN=Ór=Í›;=¼-G=É×]=Î;=·B=ÑÕF=ót¥=ìæØ=ëQÃ=ëò]=ÂÅ0=Ä!E=ñz}=ã+=ã›ø> ˜>àü>©~>~’>¿à=ñGS=ýeÀ>c«>Z=î;s=ýS> Ê> ¸2> -> é> Ò=òÃÅ> -š“>¿î=ìSž=ïü=ð»þ=ô‚k=ßÝ=Ü÷=Üåª=ä 2=þ2K>íÚ=ô©:=ó¼3=è¦U=ösû=ÿpŽ=ë¶M=ð»=꟒=í n=ùJ=ùZ>^ý>·=ÿÔx>å<>9Ú=Ðu¨=Þ™­=ñÏ=ÞK =ç×>=÷ö=úÌÖ=ñY[=õ~=ùòØ=à+8=ç?%=ìås=ÿh®=ï·Š=赋=æê>=î@=ã¯=å¨=ñ' >>N=Ý(=Ö=õ¿î>(g> *=Ò¾3=¦®c=Æ=÷Är=ó‹ý=øñõ>2}> ‹Ã>jŽ=Þ˜Ž=Üà¥=ÒâN=®A_=º™Î=Ð`¢=Ù;z=Ìð²=°Q9=›xÉ=¬2=³¤þ=²‘ž=¯(û>Ñ>%x¿>2Yó>5&>?k¦>?ÍÅ><â[>>'©>Hñ>cK%>“,Å>‘÷7>€@Ž>‘¥:>›þ>(Â>˜oí>–é >—M ->Æ>q.V>ƒù>m×å>XŽ>01>*-(>&°ž>0¢>0lÂ>/ ->!Ýþ>ÿY>!ƒƒ>9þª>4•2> ,Î=åxÐ=ÎkÓ=á,þ=ì¶Ë=îA­=æáÐ=ù#ž=î˜#=ÆéÌ=Ã"»=ºÌi=¦‘i=¦ÚØ=¹Ùä=Ór=¾Y²=ºyº=Û ’=×ØÝ=Ù˜p=ÿ‰v>Ìl>›=îçe>Ò>² ->%w6>2 Ã>D˜>J-J>M{>>S&«>_!Í>eú>\ÀÈ>Ö0=çð>k3> -×,>”å>¶>?î>fD>$*ñ>'³b>:=ð3u=âÔÚ=Þ­Ú=Ѿ =Û¸«=ø»K> ›>ÖË=ç‚«=ÂÂ=ãܳ>¥>ï½>–F>úÜ> ¨|>cÇ>Ô¾>Ø?>©E> ³<=ÿ—E=þi-=þö’=þ>ã>ÆÕ>=†>>˜ž> M{>X9>Äÿ>·> ³*>xg>5ƒ>*>û>µï> û>œË>¢˜>ÅÑ> qd>&Â> íþ>{+=÷çE=è.˜=éQ=òL›=èÜ;=ðŽÞ>ˆƒ>!º>¡=òœh>ô¤> ì—> L1>Ì> >$t>+]>¬o=îê>F>RŸ=ßð¢=ûË>½®=ñš>ä>.*=ú¶Õ=ꓘ=æAÝ=õþÈ>³¾>áF>×,>pó> ¿Ò>³6>„>œ‹>µz>ôL>>çð> -â¬> mÓ>4> !>:n> > °J>ÈÂ>Ór> Ÿ>œ >Í"=Üæ@=Íl >¶>ê=÷S“=úzÖ> -u)>Cù>„2>d6>ï>ar>dÇ>-¾=ä¢ò=çáÎ=ò(=ò"ê=ðÇò=ì$¨=é™r=ÿ;ú=ú^þ=ã’=ìF¨=ó¬~=óˆ >K>5$=öŽ> Tê>8Š>dÒ>K$Ž>s5ª>”µB>¢Bâ>™_>u©e>=Wœ>!^h> ‹D>Ê>¸¤>#­>6kx>\>Î> >õy>ˆìÎ>otè>F{õ>Æ -=ýms=ôÛ–>°N> õ“> -s >*>]>Ñ>"‘i>Ôš> ,4=ÿ…m>n>ƒ¼=þöà=î9ö=ø‘>žQ>‘>V»>NI>Ò$=ßÕ%=÷üÓ>$t> w>–‚=ú=ã=ìYU>?T>" à>’S>r>!&>"³>ú>’.>þî> > š >¶>Ë`> ¯>ßI> ¡ª>z`=ÜN -=åû=ø›>~>â™>ˆ¼>:>ã®>ªþ>³&>6>s> „=Ü“=ä£v>Èù> Ó=þo8=Ú®-=öƒ=ÿu¢>¯>E=ýÚ¾=û‰’>ù>}>Ý#> ú>°Æ=û&=ü"ð=髨=ëÓx>…Á> ¦Y> “G> î¦=ûŸ¢=ôk:>»N>iÇ>ID>¬Æ>6þ>¢î> {ì>r¶>4ý>>1Ž>çF> Ùn> €ž>zÌ=ð……=÷zÕ>»t>¡=÷Ž½=ÿv>^V> >v¥>úÃ=ýûÐ=ã@=Ý]=ó·°>ê¡>)û>àˆ> *æ> ê> -Z>£®>ª>òÖ>‘> --=ýÞ%=ãÄ*=ù3H>ô•>oÁ>Ñi>µ2>9â>S¸>®6>Ø > Â)>ÖR=ÿ?8>ÙH>Kø>L'>f>'¶>/§> -@=óT=â4{=âÞZ=ð\]=êÎ=æf*=üè~>eŠ> ¹_>Ø@>Õ>È>¨>î>Ì:>½!>¥>+F>/º>Ë¡>¥ß> -k¼>Í=ö!Í=î3b=ò£=ù5S>bæ>MP>kÆ>º>°§=êÄB=ãçâ=éÆ%>J=ùž =íh8>Ò÷><^> -åé>!‰>3P> 4;>>´~>8<=ýt > ˜Ï> ´R> ~>:>ç>¯Î> #¦=þoƒ=ÿ׎>Æ0>*J=øn=õ¼Æ=úgý>`*> gŠ>±Ê>* ->ç=øã>K><*>Ä>Ø>‹Æ>âú>Y>Ûœ>È–=õB#=õPÂ=ÿ’¥> -Êq>pÍ>ê+>€> œÞ>Ü‚> µ>¿m>>4>ć> Ö²>=ôÝC=üú«=þ=ü`=ÿá ->}R>yˆ> H=ðõX=õià>R1>.Z>3ä>ÿ>u­>->Çj>à¡> Œ>¡Æ=öNX>Ñ>‘>ê>3> î>†ì>èß>!ï>ßy> 1¹>(>n>èx=ü•>ª>µ3=ñø =Û9P=ã“V=õŠc=õ§F=ôbÃ=ï*š=Þ|;=â:k=í3n=ù½==æ*Ú=òëº>Ów=ÿwþ>¯Q> M > íú> Ö¬> ³†>_Ž=ó€=ôÝ^>§=èÊ+=ämº=ðàE=ùº¦=ßWþ=ÖnR=ùÜ%=æó†=Ø'«=âé -=ø(ƒ=þò=ìôø=Ö«µ=Ür[=ér=öÿÞ> Ö ->^Š=õD=çY…=çÁ‹=ÙÄ•=Àú›>žø>à=ý­S>åñ=û+X=é;=¾1¾=÷ü[>0O=åGð=ý*b=òó²=â¨È>L>_>#ò>…>×> ds>×>Ý>9è>µ!>r>·Ž>x›>ìî>i > û>øã=ú7Z>›=ߣ‚=ºˆ=é½> Z>cÔ>›#>”\> >!V>#v!>Š†> O=þÊ>Œ>ÏN>È¢=ÿ»Ý=þ¡U>½B> *> M&>EP=ö<Å>ÈÎ>#e>…ò> KÊ>‡Ì=é‰:=ñ¬›=öxX>,Ä> Ö =÷W‚>Ü> 7À>Ïg>—–>Fþ>íú=÷«U=ô]>cv>Ëñ>ðò>°P>N>Ì’>—»>]>f\>‡ˆ>S³=ôŸÖ> 'à>+2>÷>šæ=éÞv=襪>á¾>X>Ç>~›> -aB> š>8>> (> á>š’>²Ò>X6>×ï> -¢É> -§ > üË> ñ>x®=ì2€>¦>X"=õøc>Êì=ùr³=ør>>=èf>=ëç=ósª=ù•«>çZ>d"=ûáƒ> -F¢>ÀB=üÝã=é }=úÕ2=üþš=ñ“£=þò>Êõ>¬#>—m>>¦=öçe=õ›¶=ï¢>â>I ->0>¹>=þ]ú=ý[[=æ²í=Ðí=×ðš=õ“ò> ²ý>—u>¦æ>ê>ŵ=ÏZÍ=ìšÂ=ütb=ú0“>#N>=Ñ> ê=ü+à>ó>¹«>¸Š> >ûœ>Ù‡=ù&‹> SÞ> -èD>0>ìU> L>üù>IP>}Æ=ýãÈ>µ>¿³>Øü=ý¡Ð>a>ƒ6>ð4>Qe>'n> ÷D><è>“> #j>l¹>ä>Fâ>$oú=ü H=äE=éAX> ðV=ùÆ =íÜÃ=ùâž=ú„†=ëtÒ=Ýa=ö^ =ò =ñu==ïÈÈ=éãŠ=å¹Ð=å(‹=ñ±›>€> Ķ> üB>yr=ò¾>=úæ>³> éZ>Žƒ>/J>¸ë>kb> -|>áÊ>N¯=óNz=ñÖâ=÷šÀ=ó=ÏAâ=æm>s2=ôS =á–®=ÝãØ=ã#Î=÷p@>9€>J†=æ!2=ÏßÚ>‚î>ÓÔ>ì–>¿¢>ö“>š>GB> û> AÓ> 4q>ðG>=:>1q>f#=ò§N=üdU> vâ>¼Ý> ,>ìÔ=ü“Ó=úu2>Ó>‰> ]¤>½›>:_>¯þ>üö=þ8%>©ñ>¦k=ùM=ì*Z=ñzš=ìçÎ=÷'N>Ë7>.“>-B>7]>÷j>—=ý "=ä\]=ì›=ø0>»;>ºK>R£=â܆=ØùŽ=ï‘+>)=õB=øIæ>M‰=ïn}=òXh=ü¨ >Þ®> >D>²>y½=ü“>¹á>,>ØÛ=íè»=Ñ >=Æv=üÕ>+Ê=ÿÖ¦>¹v> N>aò=ß}=Îì=ÜÝ£=û“ê>z=ò˜s>ÆÑ>øô=øò5=ìyª=ø{²>úa>²d>=ô -z>Ã>¿>`µ>\–>Ú>—.=ßÛ=àF>Ô¯>¥¡=ÖÓk=ç#þ=ë÷=æ±»=Ú•Û=ÞÙú> ó >Už>q=é;>Í®>Úƒ=ëd“=ÊuÖ=ËŽ=ÔWc=Î(5=ç~Ê> >Р>C^>RX>m> ÌÙ> -…U> “q> -BL>2j=öÇJ>`¸>rž> -a6=ô =à¥>ž=>ž^>©D=ùM>R =ÿóH=ðãb=Ö.î=ð6=÷èâ=óÇ3>¸j=÷‚ð=晣=õ}=ìè8=æI3=ì?>+†=þ§¢=õtu=üOÈ>Z>µÊ=ñìº=éV==éïR=⬎=ßÌÊ=ðš>úA>ÕE>xÒ>—>x>¿8>ïÆ=õŠ0=ë›m>k=ôXˆ=îû==üûó=ÿí"=úmÕ=ùS=üÊõ>>è=ó}=üê¢>,F=ëÌc> X >H>d>Â=òt0=ýb*>æ¸=÷60>Š>wä>^¾>—ë>ZO>ãî> ¯> ³Î>ûL=çv =ê«P=üfs=é»=ÞÖ =åƒÊ=öûˆ>àž>>> *=òDS=ܘ@=ü€ë>ÈÒ>ê>0&¡>8²U>.y€>-<ú>0ŒÚ=ñ~ë>¾Â>)”>x9>%}ë>%„>!/~>?’>;p=ñY½=æ×=ò‚-> ­‘> -n">ˆþ>¡e>͉>›Ñ>É®>®Æ=ëŸ=å$F=üŽ“>1=ü;›=åä€=ñ"¦=à0=ñ½Z>Xþ>&‹=ø-ã=ÿ#>ª>ö>E°>C=ôï+=ì3u>k¾> -m=ùë> n>Ts>©>¿¾>[>Âx>—ê=÷„À=ýñú>µw>®¿>­>€>V>ý^=ú…:=ë=ö„M>Þ*=öì=ñ.Â>–> 7a=úb=ÿÕ8=ðÂk=Ùó&=ÊXš>B=úu3=éµ¢>+Â>Óv=Þ=Û‰«>(=üá%=õ×>=ñrø=äˆ*=Êf -=×]’=ò5=êàr=Åù¶=Å-=ÅËÚ=Í7¨=Ù h=îG >ã> -â>¬‡=õ™=ù"¥> -ŠÄ=ÿÓ=ñëz>«s=ö@==ïâë>˧> B>ü >¦g>û†>ɪ>µÈ> -NR>Qv>Ĉ> -”ú>e&=çP=×Mý=áœ>-=çÈý=Þð=ÞU=ûÜP>D1=àw-=ÿs> þJ>Îr=ò-=÷0h=ùV>øú> †î>¤¯>úÏ>>3^b>Xª>kó;>fxh>C½–>"· >g•> ¿>ü¢=þž[>U^>2ó=ùêª>¼@>†j>ãó>G‚s>\KÆ>^e{>N´å><1}=湸=ᓾ=ôÍx>Bæ>ùÅ>|‰> ÿJ>ÃK>A> ¦>ÿ>yv>Ÿ©=ÿÜ > ä¤> ,•>6ó> 4Ù>¤^>D=ô‚>?[> -ër>‘Ö>Œ—> ß›>Î=îHÃ=öz=ô¹b>¨> NP=þŠ>L>Áò=ü>Ú_>{>!Ͻ> ãì>a0> f¾=ë…Ë=åŸN=îAF=ë\F=Îw²=ÍŒ>ðÖ>ïq> x­>ã>R6=ý =õøU=ð”=ìi¥=âêb=ÛøÞ=ï?†=îµ=ïv>¡›> -òÎ> Ò?>ØŽ=ñS•=è\6=ðm#=÷Ò=òhú=èš=ÑS>Ú=Î-=ÏÙÍ=òåú>sm=ïÙ…=ØØ®=î·þ=Ò=Øc"=ýÖ>.r=ð[å=óÛŽ=è¤3=×}=Ö© =èk}>ˆß>õŸ=éš¾=ðßH=þÔ=ìr=éÄC=ý >ò)>nY=ìu–=âÑ(=ÚÄ =穨=Øjà=å.%=øh€>B™=ášã=÷)Í>o=ü²»=ïÀÅ> a>„=ë'J=þs²>¨“>‹0=ÜÛû=òÿH>øB>FF>»»=ÜŠ]=õÝ=öc…=Ü,>=é†Ë=ã=êõ >©>Ûz> Võ=ú-=ÝÂ%=ä)–>?>ò>–¦=æ:=Ü_}=ÝžZ=êfÐ>7>WÞ=ö= >w‚> $Î=å&=ßõ"=äŸ=íŒ0=ü†(=â¶=Ý¡M=èRz=ññ=>C> ÔŠ=ð|P=àÀ»> -Q>åv>[z>&Ê> âÆ=ûiª=áØ=â–ƒ=æ«=â:*=Ï?=Ù5=õhm=ú=æA£=ÕäÖ=î­¢=èfƒ=çLÚ=ê‰ý=Ðò^=ÿÀê>D=þ™p=ô p=ïB2=ê[‹=ç½z=Ô/ª=é"=òª> ù=ö=Áq)=ÇÂp=Üvå=ì¡š>;Ú> -ˆÏ=äa=Î,³=øWÖ=úwš=õ³~=ט>=׊=é¤Þ=êÆ(>eW=úè=ãƒ=ãŽ=ç‰c=úiF>ö(>6}>MM>[§=óUÂ=ãÔb>nô>ßN=ôÍ=ÍÓ=¼*=Ð,ª=ß =åÐ=è#«=àlò=ëNM=ìs†=ÚFP=Ä«¬=ÍÈJ=ÚÈÍ=¬£=È{–=ÇÛw=ÉW"=ÉØ=¾=ÇX·=åÏž=×Ik=Ò f=æ'³=îåE=öÛ8=øHÈ=óê=éRþ=âu2=Û=܉=ôžf=óin=êk®=ãmJ=Þ+ê=ê÷m=è½½=㯓=çÔÞ=ëûå>ìY>öw>57>ìû>[> èâ>zP=ÆZÁ=éÈ>s¥>î>@N>t=ñNÓ>ôî>¢>PI>E]> DN>·I> ®Y>é >í> rª=ù±C=ã“=σ­=Ñ@5=í;>}{=ùËš=ôG~>íG=ó Ê=Ðœ"=Ìo¸=Ý[p=ãÆÐ=ÖV=ÝÖP=Ðvƒ=ê*B>o»=Ú96=¾Ç=ç^è>">çÖ=îz6=á«=çM2=ªÍ*=˜L=‘ã©=ÁÇ™=õhÚ=ç–*=å6=ó(z>Í›>Ê[>©º>Oæ=û[=ïÔð=ø‘c> Ùr>(2> ö>e>ÖJ> =Õõ;=ߦí=íÔh>R>Ýå>Rí=éúý=â€2=à•->c >‘‡> -„>ÖÏ> õ=ë¡z=埋=ÿÞ=èà =ÔÉ’>ÙO> -s‘> ÞÂ>—‹>">M> 4> -êÆ=öþ}=ú–=ÿ÷V=Ô)6=ÙÀ5>QÁ>ß~>ŒÝ>#î>—>d“=ÿaþ=××Ã=ÀêH=ć=åI>Ðþ=éû=æfê>Ó=ê6;=æÉà=øfµ=þX²>ÍÖ=܃=Èíé=Îh€=ߌÎ=égØ=ëV=ó»Â=û7 =þ®>1 > ¯>Ó>E> Ç‹>³ª=ü6í=ïÖú=ú¿=ù­#=Õu=Ê–¥=Ú»`=ìx=ú+£>¶=Éxx=®L«=½Ù2=èbÓ=û”~>Jú=éR=åµ=ÍPF=ÒV=ê`^=ç¸5=û°+=ÝØ -=Þä =å;> ¡&> V>É!=þ¸‹>ö >í~>±=ùôÖ=ôë=ì‰(=ó!³>¡?>\‚=ýÈë=äZÞ=Þ·“=ïn=>½2>Q¯>Úë>5W=å†=Ç n=à°=÷ÜF=â£ã=Ѫ=×âã=Ý'k=îÃx=çÿÈ=ä0v=å{> -4ë=úE8=ÌK&=ëEˆ=Õ¨à=ÂD4=ïÃ=ñF®=Ó8x=Ð? =ÔŠE=å¿n=åÆK=5=õY®=öZõ>Î> !>õ–=õæª=û¡å=íÓ=Ù÷À=Ôàð=×—«=ÜÔÀ=ßá…=Þ½=àFú=ïî=ïír=× (Ë>)²ë>(·>*‹6>+Âü>,ö†>J~«>]Ôz>di6>]†>‘Ì2>‚‰Í>‹ú>ž.>œå.>žÜ>¤Pr>©!–>¦}ú>ŒÉ>…X(>uoÅ>]Æ>MîB>DÉ»>M­{>AËj>-Ä>2ZR>-ã¶>'}Š>-º–>+œk>!¶4>tg=ê°6=´¨Ò= ¬â=§ˆ=·ñ=µ`=µËž=É,=´X¡=£6r=±®J=Ö&ž=û˜½=Äì‚=Ç`å=Ú±}=¯4Ð=·k°=ùû=á¾B=ÌŽ²=­Ž=®—-=¶o¾=Йå=Ñi’=ÐGÕ=Û([=üW€> ‚/=ßê=î©Ž>–ë> tÊ>­">¡=ïÄÎ=ù¦>è=ÚÊf=ÛnÂ>¢p>m¶>ù‰>c=óê;=÷b>ö„>º¶>Ñï=ë*r=Òò`=ÀÉü>¤.>,>u9> –ß> Sñ>¥> H3>y©=ëÇC>]Ë> >>8§>9¥>‘á>ïî>v²>ø->^>ph>x0=íX=íáC=ïºH=â¥Ë=ä+=éØ=æh=øÆC>ìî>Ç> sQ>Š=ëpk>»Þ>èó=ô´>×’>:X> -Æ=ø!j=áùÚ=ì» =øõ:>—e> ù|> è>$l >2>I%=üÛb=Û £=Äc=é^H> ÏÒ>#Œ(> >ìu> u×>éû> -Ý=÷{Û=ôM›=èÂ=áÁ=ë-M=÷ç~>|v>'’>–ü>¨g>Œj=þr8=é†^>ú~=ö@=ÕÝ°=ßCý=ë]>Ë>VP>„e=ñú¶=éìe=êò%=ù4=íÁ=õ•ú>8> -nÞ=ï„Æ=Í\»=Ú>5=î‚V=úÁ€>;á>X€>ñó> ˜f>ŸJ> àÒ=õÊ•=èÝ>à > -8n>IÚ> -=üQÅ=êLm=ãdb=ú©>zË=ÕÚR=ûŽR>uâ>¡8> -hÂ>ö‰=ñ‰3=÷V=þ¶=ðˆ=ó/Ú=÷Õ>BÒ>ga=õ,b=ËÍa=Ãvµ=Ö™=÷T}><Î>å¶> >gF> _->*ú> J>Î>”þ> Ô»> Ń>³>>>0%>‹¥>׸> ‹>…C> \‹>ýÔ=äÐ=øÒ> mû>@ˆ>r©>œ„> -z>5‚>##b>¹+>é> -hS> `Ý>Z°=ñzÞ=÷µ¶>ë> ñ¢=é^=é¶[>\s=çr[=ðxc> -Òò> -o>>>4‰>3Ñ>ñj> º>ìº>*¢å>/!->'õ~>(LÇ>'f…>˜ß> qZ> >So> ‹Ü=ú¬X>>§‘>M> a>NÐ>Ân>ø^>g =ÿ.=ù¬f=ö€=ý2½>Ki>/¥=ÿ+š=þ|Ý>g> -ù> "> ¥ö>&>÷> >=úæð=þ¾.>/«>ŒÃ=ô§Â=ü¨P>P=à*Ê=Ú«=ïä“=ér=å·J=å«=þŸ¸>T;>M>kê>Ôã>}‹>°>%Ž>c>>a">.=ù|³=ÿMþ=ìÝc=Û†ˆ>—Ú> ì> ðý> #==úÂ=ãÀ=ñ™p=ñ%=âæÕ=Õìp=Û[*=é¡=ðM`=ïºý=â‰==Ô§¶=ù%6>ò2=ø‹=ìyM=æÑÅ=ã‘¥=÷&Ê>·v> > )Â>>&>ª0>àï>›V>y>‡ä>Î>Ç>·¤>`6> áv>”b> ,V>š+>†o>0èí>Fa>Bð>6 Ñ>>¢>M¾>J>ß0> -}ª> F¾> ñž>ãâ>%´ >'Ìw>}Î> -> ü>tß=û{X>Ú[>¾×>7=õLÈ=é¡k=Õ=3=çßÎ=ð^¸=êf> -4ƒ>2¢>k=> ý¨> óï> :´>Ý =õ@µ=å¸=è5µ=ç˦=ß`-=Ö=âºn=ï&À=àt=ï ¨=÷°=âC=ë_[=÷*Ò=õ!Ö=ú“µ=öý:=ì«=æš…=íïŠ=òLf=ß3V=õf¦>€{=÷"=ôh=ôU=ëÆÝ=áĸ=éxC> ìæ=ûþ=ñ)î=÷º>h >HÛ=ù*=àŸ8=äè¥=ý‚>pÒ=õЪ=çù®=òéû=îœÃ=â=×K=ÇyC=Ï‘H=ïÒ=é½^=êµE=ú:2>¦K=øg -=æàh=Ý÷=óLª>ò«>ž=ï%Æ=æÕ=ëìR=ÿb>mˆ>þÖ=ï.ˆ=ñÜ=ÿ~&=ë•=ñ P=ù+;=¸ =Ɖ*=ÖDÈ=í)¶=Ý ›=ÏЦ=Ð>=ÖÅÓ=ÝÔH=ågº=áòÕ=ç2®=ò̶=öYØ=ÿdð> ô=ø·»=ëˆ=Úˆp=Ù8=þ˜²>“n>5@K>Cú>@Š>/çj>ËÊ>ª€>0x>!´> 3>ä=óúS=Ý+»=Ú'‚=ÜÝÓ=íw=ù¹x>k•=ïfc>€’>0ä>#²ž>.Òb>+¤>Ñ,>T^>Ù¯>±ø>R>ÈV>pÅ=ê!(=ãrp=ÞªÚ=Íö^=ÎÒ=ëÜp>ú4>1=úd=û[H>‰>X®>¼=ýÆÃ>Î >»f=ÿñv=òüŽ=ëî}=çÍN=òD=óÈ=öJ¦>¯>w>®+=ù^â=þhF=÷¹z=èEë=ñq]=ø÷ò> -¦>J>¨­=üâ0=÷ ¾>†6> -»ô>ÏÚ>V?>;=ý=b>s'>Ö> êž>/¾>ã> é½>'\>é> -½§>¬>Ò>B>²î=ó«c=úÏ>> >ÓŠ>=þµø=î€P=þ°6=ó«ž=òœŠ>> +Ë>wp=în=îÔ =ö8"=ýþ*> {>~Z>³>¦>ÿª>Óè> >Ž^>áo=ôKà>£>=c>;‚>GV=õø=ìu=æq2=щV=âCÍ=ö\[>ÃÂ>n>‹!>È=ð×Ý=ø^h=ù0 =æÔÅ=îk=òx˜=óÀ-=ó›s> >Ÿ =ú×}=ýi»>ôò>ƒÙ> -XE>*=óCU=÷+Ú=úÚû>u>wo>2þ=î:«=ÝS®=Ù(=ô> ü¥>ÉŠ> ;)>î4>c&=÷r«>F>ÛŒ> ~Û>X¹>Ž>Ä6=þ=ð{=åö5=ø’r>¥º>r%=û!È=ÑóS=Æ$8=ÌÄ•=Þ?Ë=ç|€=ó¨n>M=Ìè -=È 0>®ò>¹ >$¾>j=ïm=ù¾=ÿº"=ù)Î>í/>¼l>ƒ0> L®>ì£>Ð>'v=÷=øÙ]=ÿ5ˆ>.>¥P> p/> »ë>ª^=î€=ã8ð=Þ½=ã =ðÑ>¨a=íc -=øð>{ð=ç¿> F‰>%<=ön=ã¹Æ=îV-=þI=ùi°=ø¸[=÷üp=ôEM=éÁ=þS> -ÔW>Žê> ˆ:>‡g>Xj>gf>> F>>^×> €î>ü1=ýÊ;=øf“>·Î> rí>”> çÆ>nl>úÅ>ëò>È5>A>á>¡‰>½f=ú·#>.;>ç¾>$:>â'>Oi> -÷¡>Ôð=áS›=íd*=ô®¦=îíà=ðØ =ûÉË>ö>èÎ=úM^=îà¥=àj=Ôìú=Ýïû=Ù6Ò=Ò†=ïeÍ>ñ=ò -Ð=Õ¦=÷H½=úà²=îMÅ=âÅè=í–=øuþ>(ó=÷š=õ?Õ=øSn=ò7+>ù> Äs>Ž=ùi=øRØ=ý3=ôÂØ> >Y0=úv=ã%u=ðb’=ôKÎ=קÀ=äDÀ=ø|J>%> ‰O>â=÷ü†=ýí6> ÊS>Ù›=ïmû=íÉM>-ù> òº> ‘#> -g>>¬é>G×> Ó>>9=÷hK=ðîÆ=ì5j=ðr=þM>O>>[à>l_=û½ý=ÖˆX=Ø4=à±Ó=ú‚> Ɇ=þÐŽ=Ýk[=ìl¨=ìá¾=íÔ’=êš³=á#=ؤu=Þ¿ƒ=ð.=ó°=î\ž=ÙÍ°=Í©v=Þ÷*=þt¨=ô P=ÖΫ=âEr> -·N>8>AN>4÷> —r> -æ°=þ6æ=íÜË=éx}=饛=ʽŠ=ìµ–=þGU=èÈ=ßUz=ײó=Ð>v=Ùdf=ì·>>Ìþ>ò%>ž>Ç=ô­Ø=ÇìI=Ù²Ð=Õ]=×µø=óâ#=ô5Î=è€=çeþ=û½`> à> öK>ä=ñøŽ=çæ=üÑ“>‘ =õÄÍ=ê¢=ç¶v=ä\:=ø [=üf=ø9@=õG==¼€ƒ=èƒ>‰æ=ìb0=ñò(=ô ê=ùh=üÖ>u> ü=þª=ë{€=úr=û²ã=ë÷+>5Ë> $> Ž>Ò=íIÊ=çÁ®=í-À=æQú=Üx‚>qú>‰²>_µ> &B>âj> -hÛ=öÍ~=Ö=áU=úð> ö>>>yj=ôu -=îïÅ> ÝÔ>=>Q¯>Õ<> ìL>'•>Ð=üìí=ýW¾=ü—•=þ@>À²=ø."=ö"{>íþ>øÜ>.=ñZ>›>]W=þ›¦=û·À>Jõ=ý†]=úÝþ>ú> ’E> Q:>ƒh>Z>Î5> ˆ¨> -=’>Œ>Ib>D(> -þ> ûT> †Þ>¶k> V>f0=ï@B> Ú>i=þ%=ûK >~=ô`=ïXh>+Â=ãæà=êt>j=ìt+=é2=òVm=ú|=ð#£=ìÄã>}¢> þ>;é>ÃT=óêí=ç‘ê=ô«Ú=ñY0=ìz[=î‹=í Ø=ã Z>ô>¢=ñŽ=÷Í=â—3=ä=㺈=úZý=ÞVâ=ÉD‚=¥”N=á_ª=ÖÙ=Óô=Ü1­=÷ª =á…R=ÚdÀ=ß~=ð²â>ò‘=ôØ=‘Ë=Ôâ=ÛÚê=É68=¹3C=ÒZ‹=ß”C=ã$k=çóÈ=ô(>ÐŽ=å s=ßÎ`=û‹=éñ5>x‡> .>M==í“"=üÃ[>Àþ=úûr>„=ô]½=êXÊ=õC>´.>ؼ>æÒ>{r>j½>›T>R=äÏ"=ßr=öþp=ñã=ëIú=Üe=¹a×=ˉð=ãÃ@=Ï=+=æñr=û8›>«¢>ÂN>ã=ð<=øà>ax=õÆî=è}:=é¨Ð=ð˜ê=öa=Ú;k=ìGã>&Ï>*.>üH=òÐ=õN:>µp>Ñ*=îçH=èÁ¸=ú^p=ñ 2=ì—p=õµX><ÿ>h…>H>k>'.=ó-h=úOp=ú}µ=ëÐ=Þéø=õ"5=ú­u=á‚%=ë›x>é-> $$=öˆ¨=úOv=ñöÕ=»—&=µ§B=à’=ôÓõ=Ûý¢=Öø=×>=äQ>íÖ=ñV=éM=çM]=Ü*P=ͯ¶=øª=ö¤¶=Å+ô>ð>k~>$˜=ý‰=å8=ï=áa>@=ùÌJ=öÁû=ã«‚=ßE>=ôÀ=þF>Nä=ú¨Å=÷àF>Æ>Hn>‘=úà=è¸0=æ§F=å‘.=óÁ‹=ð =ãäP=Úè=îƒk=þݺ>Þ:=ìrN>w>a«>Ê>h¿=×Nj>Ôx> N=ôÍú>ÿ=ñú=Øyæ=щ¶=ÐÉP=Ä‘•=×ñ%=è)S=Æ3Ó=Ĥ~=ÜE#=ýÐ>¼Ô>¢=ù“">™>Î>ƒ>ð”=ýa»=îÔ>K.>ZÀ>Ö+>Þ> -«²>óû=æÎ¥=¹=&=²•b=ÊPÎ=ÞÏ=è§x=ׄ«=ñ]í>–P=ñÝÍ=ñwÞ>tF>™S=çkþ=ÀÍÒ=Ê8p=Ò¸ =Þ“=êk*=åEÕ=å¾Þ=Ö7N=½0=ÓØB=èµ=üÖ=ýÒó=ñ~à=ó°³=õº»=àc=ÕuE=âûð=õŒš=Ö­=â4Ê>T> žB>ß > Ih=÷¿r=Í :=ÙÃ=À4â=Ü)³=ü…¥=ûsP=Ù§ø>¤=èk½=Éž÷=ùŒ³=½O$=Îsh=ÎÊ+=Á¸=þdX=ÎZž=º-„=ÞQÚ=ëÖ=á“=Òl=ØÑF=Õó=Þeþ=íÛí=ë@=ÝæÕ=Ü®=ô¯>Æ.=ó*ˆ=õHË=ò¶Ê=õoó=ê™N=øh²>P>q =ü"ð=˸ä=èJJ=÷î“=úú‹=ë,­=òö=ú>²=òf=× Ð=Å¥Î=Êi«=ßœÍ=ò{=ëæS=êe=ñ#®=ò-S> ‚Â>â™>‰„>_V=掦=ð5>³=óêÝ=õ1z>k™>T=×èj=Á~>¹Ô>ŸU>d"=üEÈ=ùƒÂ=í n=÷Ôš=÷]=þ¢> Χ=øCÅ=Ùå=îz=øìë=ìZ=ê(ø=Õ·B=Ç¿¡=化>£>”s>Êi=ògÊ=òc³=ÿ!h=û€¨=Þ¤¨=ÂWÌ=ãƒ0=ÿê’=褰=ß³=îÆ=õ=÷d=ÙD=èÇ> ù2>3ò>YN> fÁ>“z>? ->HO>çE>ðX=þ‰5=åõp=Þgˆ=ϳm=ÂÖ=Üá¶=÷ÿ> -ª.>®=Ù×Ö=»Bs=È^®=ún=ä]=¬ó,=¦l¶=¶K¦=ÕDý=ë(=óóh=íž‹=éá²=ï0-=ó Ã=öAR=êbµ=îD»>QÔ>†²>˜^> Æ=ÿý=ÏÛ²=úËB>þ²=ëå¸=ìGú>>ë=áÓ -=îjÝ=ÑÕ=Öt=ôRk>B>Qo=ôÌe=ãÕÀ=å M=߶8=ÞÊú=ÜœÚ=íßE=þл>Á…>¼™> C”>- ÿ>ûØ> IÂ> 5>=>-ö>\߃>qøÆ>m ê>HDÔ> -=N=Ù Ã=ÚÙv=þ7==éφ=éz >ñt=û²:=ç¯=ÏšS=º¢j=Ëøõ=Å»=·’Ô=Úîû=ï²=Ô¼=ËSŒ=³äÑ=¾ü=Óñ&=ç`=îŽÖ=Ãän=Ÿr=¡©=µGù=ÀçÞ=±À/=¬z5=Ëø¢=ýx[=ìáK=Ý -~=ÉŸé=Ì‹“=æ\ˆ>ȇ=ú§~=Ö]ë=ÀO==¬ÿw=æsR>”> þ=â¼í=Ùºs=ØŠ•=ÉnÑ=½Ô¾> -w{>n>‰Ï>ù>=Ú> -¯£>=^>W‡>®›>-æí>9 Ë>4â$>#6‰>R>ˆþ> ŸŠ>7>&=ò>>}j>§Ø>=ÇO>’¨>ÃïÖ>Ìvê>¿—î>Ü›>IUR>‘=ÑÚË=¬'ñ=èþ=÷¥í=îm=ó…]=ÿã¾=íq°=Î\ =é™þ>¾A>.£>âŸ>$7>'”>)Ò>Ö >ÁB=É‹Ò=ÒÓ†=óΫ=ëÊ=í'­>G>1R>!ÄŸ>?ª>½ð=þë=óP0=ä2k=ÒÖ6=Ƈ,=Îá+=ÛKò=êÿ½=㩽=àðj=ïâE>¾=äzà=Ó }=÷=¡Ôf=¨Â2=¸×Ç=¾6A=Ë=ÂC=Î¥ =ç~u=Ñ:†=¬!U=­à=¢ñ=§vX=³2¨=¦2¾=’Î=®J=ÑAu=Æ•:=ÇÓ»=Á ¯=ÔÜ -=ëU=çÆ=óÞ>c’>¨ý=ái~=ÅH =Þå}=ìU=á.=õ1ã=ùa2> 6=õ£í=÷Û`=ʯ=À9 =â‡R=Ý=ÒTû=Ü` =ñ@Í>hÿ=ôóº=ö’è>*˜=ö½=åRb=ò"N=é]-=í«Ó=êP&=ð3¦>ã‚>„L>Gõ>o®=éϾ=øÌý>¹†>G?í>pê]>v.(>h;ë>O%> vº>–º>…²=øÝ=ÚØ=ät«>Þ> Î>ý=þsè>H¾>3=äñª=å7-=ã¶=æ£>UÜ>)Ô=üŸS> ÑF>2]Í>Qàb>J=–>ýõ>=+>3Ú>}Öú>¹"À>î¨>ûxv>åúë>¯òP>hˆŽ>9·> R> -N~> Ïf>ó=ä¹Ò=Ö.e=×K>½Æ> ¸>2>P;>Û"=ûI*=ïå=ášæ=´î“=·gÒ=ظÅ=Ú›=ß0=Õ‚ =Í®£=Ç}¬=Ø®ã=ÞJ=Óý¨=Ó8]=äõ =Øþ=Ä­V=¼“‘=¿šŽ=Ä¢=ÚS>Ô>²>#È> _i>Õ=ó;Æ=ù4‹> c">Þ.=胺=Ðs=ð' =ó«Æ=èOU=Ó¯u=ȵÓ>‘”=ù ^=òÆb=ýX`=é8=èƺ=é%>=åÛn>C=øF=Θ¢=Ø [=àݦ>*(>ñ=ésU=ÓÀs=ÛJ8=è›=á´F=ÙžË=Îê"=Æ»=°Ú=œƒ˜=« =ºJZ=ºè·=Á!|=¿ÝÖ=±çZ=±+3=µ“ç=·=†=¦Ò=¨=ÐG=Ûl#=Áh=§¤¤=¥¯†=ð s>8Þ>õe>1Ž>8Ux>>ã>Eþt>K¢>Qøº>Reú>c0>”°Š>“H¬>ŽŸF>–‹Ñ>•Ó>‹§>”{,>™tG>Ÿ)N>¥ç°>œÕ>„̵>`õ«>Iª>Gª¨>>tñ>K=>;ö>*-6>CÆÛ>=¾º>&ý>1|>/}ª>=å|˜=²‰K=€±c=‹ox=š“¼=~ =„9ú=¨=‡b°=‰d°=šÍ2=¦·Ý=¹oñ=á¤=Ò˜=¸î_=«êb=°Äš=¸ÙD=¬ææ=²rf=Ò§Ë=þ6k> à¹>&=㙳=Òɺ=Ø°V=×óê=ÙAå=ßbÚ=Ð}k=Ì-Ú=à÷`=á°í=ß *=ùB=þO=ûÍ}=ø?=÷z =öé°=ÎK°=¿T[=Ë‹’=úC> 3Ë=õ›À>­‰>#¦>b[ž>ûZ>‘k>~æ>Rú> L¾>û2=öè+=ø]Ó=ÿ -=û±¾=ì`~>µ> -Ãê>Ø=úó=ï°ë=êó;=Ù‹=ͽc=Ùcš=À¡C=¢ß=Ùð=ö{Š>@?=þ¯P>€>¯=ý=®=õØ›=ô7…=ã4j=ÕÎÛ=ì[û=÷¿0>æ=ã_¥=×°Û=ÓIf=ëÝÞ=ñ @=ï}–> »˜>+¶=øÚz=ùXK>ê‰> -Î>¶Á=ùÆ>ð>e“=ý¨>à!>,6=ø_¥=æÂ=ô#Æ=üå=ÊÅD=Öcj=ùåZ=ü¿‚=ûå=ý8»=òJV=ø$û>(ñ>Ž…>AV>p>†ã> °>+g>çf>¥´>î>ºõ=ë¸æ>¢{>}Ö=ÿì{> -ó¼>”(=à6b=ã:µ=ï|@>=ÿè…=ý¡Û=ü†Â=û"=ûúÐ=üõc=ãbÝ=ÝF=ï<&=â@½=ÐÏU=ÄÔ=Ɇ=Õb =ꦸ=õqb=÷9-=åÂM=õ]>> -•'> p> -Ã7>Š‘> ·>ó> Ñ> ^=>ïü>ë…=ê)u=Òo;=÷9c>Ù=ßÑí=ÚÍZ=×iÎ=Ø Â=Ûj¶=Þ˜z=ßt:=ælr=æv=ÜÎÊ=è".=þߪ> -‰¬>eÒ>Ã:>•> dz>±9=Ú¯{=÷6Z>ÚÒ>CÜ4>m•€>…´g>€ >vÀ>l<³>"å>êQ> Ÿ7>ñf>fˆ>žR> "(> -\Ö>µö>&Ú>1ž=æŒ=ß‚›=äÿ=ÿñú> -U¿>Òã>@Ù×>’v>šÙH>šÀ&>—u:>‚V;>N¬ >)²¥>óã>¨=ê¤R=ç­=òÚ`>þí=ÿȵ=ÚÁ‹=á -â=ç¸=ç¤s=ãu=âJ=ã =÷Îj>ó¸=سó=ül¶> p`=ñ¬=Û_=Ç4ý=Ù`=ì—-=ø¤ë=ܶF=ãj³=ù.C=þû =óŠê=ùœÀ>ª><*®>w¼è>˜ªË>¢ïH>žÞ¢>›Ow>|ÞR>DöŠ> 0>m">*y>žÍ>ÙÛ>‚©>ú>É>ßk=ì°=ë\¨=ì ð=Òwâ=õûÐ> wf>ê=ó²F=عÖ=ë$-=ÙøN=ÅO=ÙI=éÃ=ø:.=òøn>3>`M>f> °>œ.>ì> =B> $Q> Ä>A>IÑ>¸=÷)•=òÙ¨>®ú=÷†=è"’=îçu=õ«=ñPS=Ûà=ìuò=ìëŽ=ÇÓ:=ú„•> {á> -04=÷à=é©Ö> ô=èóS=Òh =ÜÕ=ÑÊŽ=ÕDÛ>ŒR>ûÃ>ˆD=àµ=ÙÑN=Ûå=å…@=ìò¢=ø“ ->Ö¯=ùÞ=öR =ü§c=û:¢=ð{e=ã]Ò=Ñér=îÒ"> º>»> 7 =üq;=öü˜=äjÆ=ÑÀE=ä_=üª>±þ=öø=ø<µ=û—¥=ó²S=òý«=ò‰F=ø¾=þI >qØ=à;Ø=Õìø=ÖW =ñÃŽ=ñÊ¥=æW=Òšš=×qH=ØIs=Æþ(=¿@²=Ãî=Ï”S=Í:k=¿â¾=²Ù>=µK²=ÇSº=Ô÷Z=Íí=Ë›ß=Ì­\=Äs=»x=µÃŠ=¹$=Ô9=é[n=¼E=½‚[=ËYµ> ×Ë>?º>;*=÷ø}>ü>Ä>’À=ùM=çÑ[=ܾš=ÜÊÝ=Ö "=ÅÒ=ÎvÍ=Ü9n=é#J=ê7¾=ÞjÓ=ÊÑž=Éœ+=ȼj=ÊŠ=Í÷n=Û4¶=â^Õ=Öå=Èœs=Ïßö=ë¡"=Íbà=Ä[N=ë*=ペ=àB2=îÌÎ=öÏS>äd>·>DB=õe=Û:Â=ï¦=ëÈ®=ݼê>8—> -åÜ> nL=îÞ¨=ûO…> -M&=ö¯Ø=ò¸µ=ðd=ßù†=ÖtÆ=×v=飫=ú½&=þM=õû=ö`e=îWp=æÖÐ=øeæ>|ó>K=ûHE>Œš>©“>ßý>9é=ô =úyó=ï½S=ëWÅ=î^=÷|†=þH>>ÜÒ>ò>$=×Ù=àh{=ýWn=åVø=õ!>d‚=ë|%=ðm=ü’–=ÿ+U>j>y1> ç>7G=ï½=êoø=Ý/ö=ì»ó=ûV&=Ý~`=è]®>€æ>mú=óì¢=îdP=ñ¸=óÁ=÷,==ü< =ý:Ø=ÿAC>ãþ=ï@Ý=â›=Ù½u=äŽÂ=å?-=ä–Ê=äk›>ƒN> Aþ=ñ{£=Î?‚=Åî=äpN=Ýh=ê>ìP=ö¥~=ákc=Ü×e=ý>¸>V>O>âÃ> æ>-–> Êa>Zö>cW>Áª>k:>@H>Iù>àÒ>ƒB=÷®=åö>o>ž³>8a=åÐ=Þµ…=Úï5=ø›=î(=äÊ>¸¡>´?=þÅ:=Ï»Õ=ãŸ=ö °>$>¯4=ãlž=´Nk=ËÈ=èzÖ>LÅ>„H> -*> d¦=ñ`=éÂv=ôj>¾n>o=äý=Ìo¢=Í¢=é%=í*=ÜOþ>u6>þÍ=ä¸k=ð‚ë>1$>"È»>"¶>>7sY>@t>0ž>#'ˆ>4>® =ä•=ÓÁu=ÃzÌ=ögC=úß3=ö;=ÿV¸=ÿq.=÷nØ=ò^j> Yð>{F>ñŸ>ÀÛ=èF=IJ=Ü È=ù!»=öð=Ü0B=ß=èp{>$vC>³V?©ã?dýâ?Œ“ì?†'©?O}?–°>ohý>!¬> ƒx=û¡û=ñ)Ê=îŸø=þOà> Ô> q>æc>’¦>†ª>( =óÍ=çÃ=Ý{þ=àû­=ñ…ó>8¡> -©¾> U>“=ÿi=çÚB=æC =êwª=ム=ÌÍ=ÌëV=Úd=Øõµ=ßÜà=ê¶F=ö†Ð>äW> ¡>ý´=â-½=é/Ë>0¸>Tÿ> n=þNÞ=è`È=ök~=þr2>°+=î>ø=ö÷Ë=þÑ@>•B>˜c>vŒ>4p>¿=õ@ =ê%Þ>7Ž=ýËÈ=í[=åDÛ=ب=Îù•=Ûqø=ôs=üšè=îô³=æTU>ÓŠ>‡À=ñ0š=Úã²=Êûz=Шð=âDÃ=Ùã…=Ò -{=Òšk=ë‡ë=èÒ^=Ýê=¿Õ4=ÞÓð=æó¨=ßT†=üþÈ=÷_ƒ=íU=æÍf=ú_z>¥î=óp%=÷^.=ü >Ž”>˜"> ´â>ÁZ>ä>MÓ>5>!-’>>ùò>;®>>4â>db=ü´=óFý>¡J>>[ã>n­>M>eu=ð5=ñm ->K™>Ÿ\> tæ>øº>)Í>à0>•Ù>ýF=òØ=î†=î~µ=ðF6=å,@>Í> ’þ> -ï=ù+N=ì;=ô€^>àr>Is>hò=ë«e=éüè>HÀ> ¯v>¦=éó3>àØ>Y=ð?^>Y»>þ>28>€é¦>™ôe>ªAò>»Š£>¸C>¬P>ć>ƒi>Q¼(>.Gõ>Ôž>ï/> -]—>=æ> -> ¯f>gY> ½ô=ßø0=߶Ú=ùÆÀ=ñ†U=ïC¨=ï•c=íär=î­Å>¹ú> -«Ù=ÿ½½=än=߀C=ö^5>•> é„>À²>9–>×> +>>®=úœ~=ä7H=÷ov>Ã@>Jp> ¼>x$>>±>æÒ=ü>?E>‡Ì=ñT+=â¬p=çÞà=êëu=íZò=ôêò=öQ…=ò.==ñ^¢=þKæ=ýV=íkÚ=á}‚=ìL>>‡”>D>ÿæ>ú>K¡=ñ=ñø€=òeÊ>xg>NÕ> > Ûï>@ê>ê–>ƒŒ=Ûé=ÒÖ> -·> €S>µã=ÿò²>!á>1œ> µI>ù‚>G³>³e>0·=ÞŒU=ú:Æ>×>µŒ>v&=þUð=êû =ç²=â‚=éµõ=õü3=ýª†>¶È=ùÜP=â¸=áÛÅ=î!5=öÓM=ðÈþ=âls>ž„>:>ÖB>ôW> -J> Š6>>É > -æ> ¼Ê=ôr=çÊë=ólP>1N=õB=âJ=ì“û> Í>=ïÁ8=ìžõ=õðs>> >‚À=óD%>’Ö>'ÿ>T=ÿò.=ù±u=êã’=âˆC=ë·ë=ö >Hƒ=øã-=ïŠ[=õÑ{=ú^=ÿó >Û=>$Þ> Ò>1÷=ïÜ¢> a¡>Ò^>S®>I=òò=òX=÷‚“> rŽ=û©å=õ“=ÿ¹5> ­Â> À(> þ> v›>Þ@>Ú»> á½=ûÁ¨>n'>†^=þûC=è¬.=ìQ]=öÜ{=÷†==ðä>+>> -\R>o>¥Þ>jX> “H>>> Ýí>n>1>f>y>´™=æ=ô¤#>—2>øŠ>a!=ø¹®=îÛ=ðÖv=õaø=Ú’F=ç¢ >=> °>]û=ðM=ù‚µ> ”> ;B>)>ô¦>j=ÿÌ>#>Ì>œ3> ñ9>ò>±€>º´>Ù‰>*”ž>4E$>=>94ô>4‰º>,ʃ>„>ÙG>#Se>&ãe>( >'aÆ>¾\=òø3=åû®=ñàö=þ¨ó>¼ˆ>)>Àã>.w>m#> -¡>=êÅ=Ôÿž=ßø=á}}=ê½²>ñí>£¦> -—V> s>ÇÊ=Ú´==îãŠ=÷M*=ãÑ;=à;=í` >xZ>þ®> ã†>÷M> à>_°=ê¶ú>3@>]Q=òUP>r=ø¤¨=ÿˆJ> Ž(>é`>U…=þxp>`Ž=öáÓ>æÂ> Óµ>Íç>*>EÁ=û½Î=òþ=õÞý=ù`Z=ñ–â=ìº=ø)0>Mû=öRú=뛞=ôSã>6ô>¢Ü>P5>ˆM>ô¹>±]>3 ->jš> -ßL>U>О>µÙ=êOv=Êôá=äkJ> -Ž>¦=ô-=×5"=ÁZ=à"Û=Ým=Ö‡õ=Û³>Ã=ú¿ó=þ`R=þŸŠ=ü‚>Í =ÿ$f=è¹Ã=åk=ý¹Ë>F“>c¦>+3&>1Üý> ¦>’˜>Bä>‘*=úÀ5>©=ý1=áh=¿L#=ÎÚ=ßè=îwª>²J=Úe…=àƒr=ù´x>3">Ð,> §9=úrý=Ï,[=ì+Ò=úÒ–> «¼>#Ë>2„>5» >%dã> ‹>P¶=ûÔ5> z½>ãY=è#8=äž»=ã c=ò >¶=ÿ¹S=üMÒ=öâØ=ä›=â–C> Ð÷=ùÕˆ=ïð >æž><ñ>·F>´$>Ú> ->2>sÓ=òÅ =Åî=ïdz=écÒ=ëOB=ëoÓ=ëE`=árÐ=Ü$û=ß?Õ=ã:=ñÕz>oX>\e>>r~>êã>×n=ñók=í8]=Þe`=õ´:>Tš=éÃj=æX(=ëTC=îqz=òg6=ùpÛ=éij=ß®²=Ú*n=ÒLÊ=·w=ïU>^=ÊU>=¥s]=àÖš=Ý“=ÌpŽ=Íßæ=Í’»=Ò‹û=Ø=Úçª=Ê<*=Í«c=Â}æ=³2ê=Ân=ö}í>÷>”ä>aŽ=Û¨Ó=ëõ–> ã>²¸> -¬z>J>ì=þÀŽ=ô}Ã>—=ød[=þ·R=ÿN=ÿFh>á> ->Èæ>Z8>[> -[f=ð9^=æb“=ÛÝ=öï@> "/>-Ìõ>YG>‡Dè>±ªÕ>¶øN>¥¥B>…*Ú>+y?> Òö=Ü|c=½žP=ß‚Â>Ó>8Î=ó¿È=á} -=èæÅ>yu>“">hh> bê>³Þ>à+>¥2>ás=ÿ­Å>ÕR> -®¨=÷]«=㞃=å&…>e>îÞ=ù=ã¥P=õè=Ý@ˆ=öÕ=ø:¾=é‹å=çŒÊ=®¢ö=ÀR=滳=Û»ª=¯aª=«ìN=ÐNò=æË6=åws> >w@=ûIM>Tö>Ã> ­F>œÀ> âœ>¶–>ë{>Îe=ù~b=ß]=è/V=éx¥=òù#=ü2Ã=ËÿX=±d†=Ψš=ù&>ž>­”=÷8ú=ÓÂ=ê> -> 61=þU=Ü_R=ø¶> -.§> E>Y==ãX=òF¨>ºù>ü=ûÐx>%…=ö|Ê>‹Ä>­t> -á> -®>!.>}>*>¿Ì=ï"Ê=ÑtJ=ó«»>>P=÷©ý=ðc­=ù¹ž>–É>H=ÿŽ=è1Ë=Å<¼=Êåè=ÜÕõ> z>Ýò=âL(=üÓ¸>ÉÑ=ï‹=Í™>>Þé=ðHª=âIš=ç>=Ù˜V=Ð;›=Â>Ï=Ä[=ú%ý>\7>×”>WY>’³>þò>õÍ=æz=ë‘=ðw&=ò¯ò=çz=Ûôæ=Ý=³=Ó¯¾=éÖÂ>¤®> š=Î’K=ÃÜ·=ì5æ>÷"=ù»þ=üÑ£> k™> -.ô> -² >+ƒ=ÕEˆ=ð%=äNý=ù€Í=ö­=àêæ=êåF=è4ž=ÃÔ=°0)=»š{=·¶A=ËgÂ=Ë -f=Û¸=ýä=ë=V=ãæ=íâë=ìyõ=ÝÈ=Óüí=åòX=íþý>,r> µ.> Þî>J=åI=>å¢>Õe=ç@È==ÞBî>7×>èò=òÑû>ž>%úH>Ã7>ìx> Ô±=äÝ[=íÒ{=ì}>ZL=ÿA“=ÓýÀ=ùc>=÷È=ëH¥>l>8:>³ü>ÁŽ=ýx¥>}->ˆˆ>óH>+V=à¡Ò=ö“=øž#=÷¸> Šv> ½=ú͵=÷È=òá"=Ðô;=Áep=Ö=ë=ÐÁb=À$¹=®v=ĪZ> J=ê<…=È{=óœ’=ú=ÑS°=Êy2=Л =ô`h>³;>Æo>ù> „ >Ÿd>}>X>“õ>Æ> ê*> -(W> ‹ñ>6œ>z=ï¸R=ûE>ê(>òá>‹">7Ò>mZ=ûŒ¶>åÿ=ùÆ=ì~=ÚÖ†=ðlÍ=îÅf>ej> |"=ïàZ=èÐ>ô‹>ÇŠ=þ48=ö¿ë=伦>'>F>•åù?Ž6?7‚É?rˆV?ƒø?jóÂ?%¯/>Ë…2>E>/€=ßÒ -=í:Ý=Ç× -=äŸj> ÷.=ëN=À…g=ØVU=ä%=Ø÷B=ñiÓ> -N=ô8=ëœ=èn»=ʹV=ÈnÇ=Á68=ØÖË=ÿé“=ðéÖ=æÁ^=üSû=ä?Ã=­½%=é„›=ð=ñ¥å>Zp=ú÷K> Cã>—m>Ü=è×n=íYê=óVý>ìô>¯D=öŽ6>–I=þ³=é=î&=ùnØ>Q÷=ÿžþ=í6¦=Ü·ž=×Íâ=ÿpE>Ï*=â?Š>5> -܇> .w>¿!=ùSk>V¥=ù'>r»>«Î>§Z=ΣÞ=åø=ß=ÛpÍ=úœn>ζ>8ü>ݱ=ûâ¸=üâZ>¼ú=û¤x=ÌÐÓ=ÄC´=Ô¶à=ꀂ=Ömž=Ò“=î¨Ë>A«>uê=Ê-ó=â©õ>ÂÝ>Š3>ªŠ> .î=öÏþ=õüÐ=ú=ôÓ%>×#=úà=æC=ÎV=ámj>è&=ÂÍô=ÓXè=÷ =Õ°6=È}=ì:> Ý>?>¸Ÿ>÷š>ëQ=õ¹F=j=á´º=Ъê=Àì+=Èì=Î">=ÕÙ;>u%>ŽR>CŽ>Ò >~†>b´>:E> (=Ú™›=×:N=Ô’6=ÐN¶=âý«>,Ö>ò²=ÿ -> -ë^> -8“=ÙÁ=éMB>F>Å‚>ç=úD>IÁ> ™ù>>H>M8s>\zv>_^“>O™>@ Ã>A-a>C5è>E6>7å2>0 ´>,þº>8–S>8úB>/È>àÆ>‚.>K¢>ˆ> 6>#´•>æ¡>9¾><>Q°=ükR>H'> °V>VO>§>-‹Ÿ>ö=ôüþ>f|>EX>ÎÏ>YË>fö> ¯n>9Ë>Ç¢=ïÇ­=ó’Æ> ;q=þÓ›=êNU=ÜG=äŽ5=ä¼’=Ðõ-=ßVU=ñû:=ß=Á-Áà>E©9>C¼˜>KÇ>Rlš>S^>]¿ ->j<Ó>Xâ(>\T–>ƒT4>  >²g >¦«>«ïl>·ùÅ>½³¥>¿¿>¼Ÿ±>´TP>°ri>±b,>©b>•/r>q S>Yr³>VÒ®>Y¨K>c´À>l€>_øÚ>]7ª>]Ÿ«>Báæ>;*>Ul >5ôµ>ìf=¸¶=´¡Ë=Á5ò=¹Ï&=¶\Æ=±áÏ=¦¬¨=¤®=¸÷=³£7=¯ÃÅ=ÅÃ'=½à8=™“[=…¯¹=Š!;=§Aõ=·ëJ=ò=Å~÷=Éæ=Ëoµ=É=Ü -ú=ñu>Û“>¡Ÿ>ÙÊ=îWê=þ ^>¥>F>«>v~(>Юø>êŸ}>úâ>ÂNO>ŸdG>K¼>$Àl>ØC>å;>õJ>j†=í¡Ã=íbÃ=õÈ6>C>ÇÚ=û>=íÙþ=éçò=òφ=ôî>Ž> ¨> ™E>Œ:> ÝÞ=÷›ø=ÓV=Á»&=Õ.=î_K=íòå=ú7S>¯ô>5ƒ>çË>{{>|ö>b¶>f> Ú>==ä«=ôõÞ>r=ñ’R=ã¦À=ìÔ>«>bŠ>‚`>N~=òJÕ=öDF=ñ·û=ìLH=ùP>7=ü”ú=ðôÀ=ðsÕ>Õ> ¹Š>± ->u;>»E>E7=úp=ö¹e>©­> ?>r)=þ"B=éN=òón>„1=ïpÚ=çû=ìhÈ=òb=÷ªæ>/â>úþ>è>Ó•> ã=öˆe> $>åç=ÿ(à>'>åT>ü> -¼ê> ÊE=úµ=ý”>‹6>S[>¬þ> ¢ò>tf=õE=ëƒC=û•J>`w=ü’â=÷6þ>\À> ÒV>®ç=õøM=àtm=ÿv>`Â>¶ˆ>,Ã>šb>>J>÷2>àè>šÎ>M=íu¸=ý¶ð>.£>>Í>‹ >]=ÿÇ¥>ÇÑ>Yµ>”> -öÄ>->Ë´=÷·~=ñóþ>¦=øtC=å†=ðqÈ> —S>S^>=Š>´B>Ñ>‚Ì>1q>}˜>æò>–>êD> />.^>V]> ì~> Ñ>]¢>«j>àN=×É]=éD­>z>>¤(> -vò>øâ>uŸ>’> -ü^>+Z>1>Âf> ®> Èò> ýp> -0>&\=ýÅ=çÈÍ=Õž…=ï^³>Îï=õ…h=èo…=åƒú=ìÌ~=öÁŽ=þÂ>Na>î>5»=ýúm>3»> -¨è=ùÎà=ó,Å=òˆâ=ý¿Š>)Ä> ð‘=úBV=÷“’>SK>D=ûÉ>Ùn>R)>š=ë‘=ùÏ(>»B=ëÙK=ôk->Vî=ô«¾=òç#>#{>ÇF>XÒ=ø¾K=û¡(>vH>ŸË>>­ >vv=óP[>§>ùÏ>íI>ªf> -Wã=çrÕ=òÎJ> -rÃ>Rè> -b!=óö~>ü>ÿ>õ‘>ßD>a¤>ý¤>/‰þ>†B>þ2v?!%b?FnY?[wÍ?^ÄN?Qý?44Þ?:„>͵Å>kê²>~Ä> Ò> ¶==ù‰=êV2=õXk=í’=ûƒX>³î>í>Öê><²=þó=òM>K4> -²Ò=ø?=å,U=çì‚=êè­>ÜÌ>ç:>Ó¬=ôb²=óª¶=ú|“>i¦=üÜ3=óiæ>*>¢>R>Ü…> Sø>Ñl>é ->=d>˜î=ê˜F=îu;>´=ìÃ=íP=ù"=òõÕ>'V>Ï[=÷´ò=åxê=ãý>#Ò>M2=ÿ¬ý=ò;B=íû=éß&>¸`>«™> ú>eÞ>Â)> Æw>ãº>ø> ‰>­{>‘J> õ>)R>fC>ߧ>u>ô™> Ö=ÿ?®>Ü>>SÒ>õ=骲=êËÀ> /">WÖ> ìJ>ˆÔ>iµ=ð"Ý>Å'>kx=þ]2=þB{>r2>Pö> m^=öÛÈ=è`B>Næ>9š> -p®>á„> -ŠF>oñ>Õä>4°>›m> -1>²:> š> -©z>K>î> #v>rü=÷UÚ>â>äŠ>¦¾>ô©> \²>ˆ(>©¸=û+V>ô£>9\>Rn> •‡>r•>01>¨¢>¾>ü«> úž>«Â>N—=ûRê=÷YÈ>b€>:h=ý-->á'>cW=þ-=þÉÊ=üÔ =ùs>£Ÿ>5S> U–>“À=ñ Í=ÕOØ=×@=æÎ’=ú%"=ý0@> Õ>Ô&>mM>¾™>üÚ>ñ> Ñu> ì’>ž -=ûÂ`=úkî>¦> m>É> Í/>lØ> ->äz> Èœ> Þ^>ã¦>CË> ú>‹>D>I†>E.>ð ->“>7>hš=ÿs=úsj>]Ö>7M>ù®>,÷Ž>>,¦>ê">ÌÒ>O >’Ü>J®>|6> -*>†v> ·>e>ý>í8>Te>çú=ÿËR>¨.=úHÕ>y>à>7´> Ü}>vÂ>'þÆ>º> ê–>\>gú>ñÊ> ãÇ>•±> --ú>€Þ>/š>3Š>s>®R>‘Ž>°>À>o±> -F> -ŸÏ=üŠð=ñqK>) ->|­> ù€=òâ=ÿÖæ>f>t=æÿm=ön#=üä*=Ø<5=ØÆ=ÛÆ=ÒrB=Ñé =Ô(}=Ø×=í±®=ô»‚=÷¡f> ´> A=ùŠž>¤ï> ø‰>ñê=ñì½>Ó”>à ->Yê> q¡> f>E.>¶^>r>3ê=ïdƒ=élð=ôÇÒ>„b>«¿=ÿG%=í->½(>!=ñÇ.=ûº&>^Ò>ä(>3J>­>ž=úÁ¾>> &> ëŠ>óü>&~‚>1ë>.ò>&]¤> -x¥>ÿc>Gô>&*>Ïò>‘Œ>¿ç=ê“p=òê=÷>`=Ëš=Ò#ê=î§*=ú£8>ß×>úœ>*]>A:>ž%>q‰>ÿ>çÖ>"t¯>!ér>Ù»> eÞ=ÿÃe> â¢>‚Þ>)>åÍ>“õ=çV€>zÜ> m >ž=ù¦X=úÚ#>G> ,ƒ> y)>û²>-i>áQ>å%=îÞË>°C>9†=ýûk>™¹>JV>D$>¿·?>é?£òÆ 6>6+> ¼÷>Þ=ôup><¹>$/>F#>}è>é¦=÷g=úì>GÈ>OŸ>äL>ë‘=ÿG¦=÷7Ø>í>6~>>Ï> -Ü[=ÿ)Î=õ.å>\W>»ž>C>C°>áÇ>¡ö> ×~>…f>^£:>»|R?-Åx?xk6?ˆHI?‡]ë?DhÉ>þlV>¯í ?#ä{?™t?É“4?úB?ë†E?ÇMƒ?>Y¸>Ó ~>{á#>v> €)>²K>Âõ>7> -YR>‰Q>Lµ> ô>*X>±­>kæ>)s>Íâ>–>‚O>(²J>]>,1ý>LkV>pÜ >™a6>Ðg+>ûþ‹?i?= >ÔgJ>›Ï‰>H -þ>%w¶>'ÜY>žØ>EvÞ>‹^>â‚–?$ ?9Ÿ?=Ï?¡z>­Ë¸>6˜÷> dl>ú=ýæþ=íËØ>nu> ‚R> ÙF>.>6Í>©&=÷03=ñ e=ö_>>·S>!Î=ïä¥=ò˜Š=ê-²=öèî> “ž=þò>¼>JÊ> ¸ª>œ>>> -³>ðÛ> )®>wŽ>G->„Œ>» >+å>n>€š> ­ª>Ê> -“M=ýÀ¾> -·_> -ˆ>ü&>ô> ÿœ>:>ÉÝ>åú> ý’>0> ' >á‰> $>uZ>Žê>+F>ÔÂ>õ>N*>¸b>2‚>X!>,ï>W´>ô9=ù¼6>O‡>IG>»á>{m>*ýí>YKƒ>ÐØî?3²?w?n¿?¤©?¥h>ÔŽ>¦Yy>ƒ™>B¢>‘ê>Ü -=ñµ=홵=ô%¶>}>Ã2> Ì:>õ–>|Í>aß>tÛ>šá>>¦>¬ó> Dç>\> KŸ=ë»^=â¦Ð=ÿ!B>æj>‡£>çþ=óƒF=ö:>A–>:í> ¯>R¹><Šó>™[þ?jî?2©’?>{`?;ý›? Éj>¡lž=û1»=û > D­>}þ>P>*4=ûës>þ¶=ÿZ=ÿí> A²>íÍ> T> -¡â> -Ê> -Ï­> V¢>¦Á>+>[Â>^>„E> ó;>4·> ÿÓ> À[> —º=ô-®=ë&5> hT>6>#‰_>+‹>%ù>áj> ƒþ>`;>ƒ=üáÅ>n>3æ>èÂ>‚Æ>žS=îë >§™>Jãz>»­ô>ó»`? -0?Ô±>ô0¾>׳»>ÚŒ†>ùãè?žÕ>þ²+>¹dS>UÑ£=ÿ“ =ËÓ›=ÙðŠ=ý0>uŸ>_G> ©>YÆ> ­d> MÕ=ÿ¶•>&=ø«R=ôM =ôÛ=ì}&=ó†Ö=ø>=åYÍ=ó©=÷7 =èjŠ>‡ú> vÆ> -SÞ>Í=á°-=ìnõ> £ß> MÖ> Êj>6i>— -> -É>E[>@Ò>Ó5>Š‰>ò>‡>žv> 0Ð> EÚ> º>öb> %Œ> -Ç>©¹>õ\>Šï>Š>>¬B>ß^>ëB>ÖÆ>Åá>°±=øÈÈ=ó8È>,±=òvó=ôC°>Õ¬=ñ&¶=ïM:=ùé“=ô¡X=õìˆ=ùý=û4=òEø>#Œ> IF>‡E> Ô¢>b> -?D>ÊU> -c&>’>fç>–o>XQv>w0>ƒÞ‹>h3C>A >æ=ù-ò=ô¶~>K2>k>¥û>mG>²Œ>¡J>Ñ‘>ó°>)”¾>I%Õ>g`ª>ƒÃ>—™<>/>×Å>z>0>Gñˆ>(;>%2=òè5> :>Àÿ>¬®> çý>rM> Â>¥ =ïöH> 9> C.>O>«ä>Vä> PW>ni>@à>ìÝ>`·>€Æ>c> Àî>²>fh>6Ý>e„>àÏ> ¼> -M>»d> -Â=ûú>Aâ>)Å>ù&=ú>à> †f>ŽÏ>NÍ>F=û½=ü¬£>œÙ>ö¨=ðª‚=è0›=ç]®>¼R>˜ÿ>yû> >hG>Uð>ÎÄ> _´=ñ¨>m6> ;Â> aP>¯t> -©Z=ÿÕ=÷Mš=ÿ]V>ƒ:>-P>,>œî=ÿ<=÷AB=âkÞ=â7Û>õ6>éé=þ£=ùr>Ùu>õî> ~“>¦>_™>éÞ> ÅŸ>B>>0H>»æ>S;>Ï> oú>0>—>Ñp>ì´>uû>š=÷=ýx>øû>C>G>»²>?È=ßèð=ë0²>+~=û¬Ý=üæ^>Ur>#»`>Û«>·¹>Õn> ->'®Þ>!7ç>3k>]X>m­=ïeý=è·-=íOý=õÚE>A]>u•>Íæ=íEâ=ì7U=ÓÈè=Ç!¾=܃v>?=è!Ã=×g>=ˬÓ=ÞS`>ü‚>ñº>"Rÿ>– =÷ =ëu=øóý=ÿJ>Ct>.˾>(‡>ý>¢È>Ó‚>z>Èñ>H“=âš2>C}>h> -–©>"ï>*~=ê#f=øŒƒ>Ïë>ܵ=ùÕ> Ê>sh> i¢> -†›>€É=õ¢>Y–>ƒß=Ü’>=ç5=ëðB=÷wþ=쯎=ãj²>oî> {>Í=øÛÅ>û±=ò±&=ú>(>6;> X>M -> Œl>§*>Ou=é==äˆ=ý‹C>]*> ×â>‡£>f > ÷Î>!=ö“£=óâ‹>`r=éM‚>úK> L>Ü>ß>¨›>ýX>>@}>6°=þH¾=ó»;>>=ý¤@>Ô>Î>òB>=ÿ|…=á_Ã=ÚB>q»>~$> F>*;>F_>'k>eÖ> -ˆ>Ø~=ê¢k>ª¢>þ*=óS=î´Ã=ñiÐ> -=ÿZÀ>Ÿ]>r’>òñ>l/>0l¼>pá¸>ž°°>ÊïÐ>î. >þO#>ê*¾>¿û=>“Ùd>XðM>"YZ>dr>R­=ð -È=ätX=â->ßR>#!f>3u6>$T>µJ>$> > ‰> <]> -Q>^>w–>$Š.>RfP>ÆxÉ?^Ÿî@{u@c+@ˆI¤@{#&@B[0?«@í?)î>d†8>'ŒL>®L>[">&>“8>är>{v>'SN> ª>-~>eù=ê” =ðÏê=á´ª=ļÊ=èÕ{>×>E#>–Ó>è> ?>Ë‚> °>T¼>¼°>½P>;5>:ü²>,€š>+>1³ø>?D">8µ®>:™Û>5~Ž>ñŒ>c>¯Ï>R=ýj°> ž> -9>H¾> cÒ> æ=úU:=êÏú>¦Ú=òXÍ=òA]=ìÅ>”Ö>E¯>X>¹u>‡þ>€>ÿ>QB=õ£&=û²=ó‹=úë> OÔ>¾=ôÝH=ß M>­Î> -ê6>=ë2=Íà=üº> š=üF=ÿzÓ>¢>BY=øŽÎ>H>Ñ=ësÓ=×âH=Ý(=ðY=õ¾k=ß%=æu=êÁþ=ãÏŽ=þ%ƒ>&‹>87>Œ!=àSr=þ›–>h¦>D:>ø>+»¦>c‰X>ˆXg>›Bé>£7>¤ý>ŽÁÌ>h0²>,ä>>ä:> -'>> =Ó ú=üö> ^>PÃ>Ô>¾š=îÒº=é>ã¦> ™=ê\6=÷•F=üªÅ=Ò+R=ï28>êˆ>-c¦>:•±>Cîd>_Tž>k@s>Pk`>ASw>=ô?>;'Œ>&°2>Á˜> p>È> #b>ý¼>À =ïB >ëÔ>ðF>"¸’=òÂZ=æ²*># ->߇>/Ò> Á>Ô> ó>•>$ ›>iì=ù‰ø>FP=ý,=úðÕ>è=ömÞ=Ôì(=ólÊ>¶û>e> -ê>N>áÁ>$:>¥q> P=ña> •>·q>>Šb>,> -Õ> - >Í> Ñv>@N>úÄ>?H> ÿS>_²> ¾Ö=æ==Þ£¥=ëâz=ð0˜=êA> %J>û/>8Á >«¬Ä?dD?Z•k?ˆ^?§'Š?«Ù?“RT?ivŽ?C>ôþ>Cj>‚Þ> @M>_à=ñu¥=Ýûû=û·>=²>4j>Hò>2> ÀR>nÓ=ÝÓ=ÑPÖ>ü‘> .>2†>> ä>›n>[Ž=ðéà>ú¿>î²=ù{ƒ=ïSZ=î›=ú8>É=÷>¶N>$­…>÷–=ä1@=û³.>Ü>…Z>/‘Ù>#Ú.> 9—>Ð=ñܾ=á}ê=üÝ>k³=ýóÀ>°Q>3>qL> >>¨5>$“Ú>,Ús>Cç=åY> -X>å>x•>&O2>0>®„>Ó>·t> i™>Tf=ø(=ðS=øN0=ø­n=õã-=æ#>x£>  î>¥V> - }=óšH>$>…/>-Õ>b{ >ŸÛ>±'3>£+w>‹f£>X6µ>A+>pH>žüº>ºÿÈ>®Ê{> (L>‡K¶>[…+>'ü> ®>mƒ>Äü>·B>•š=þ`=û¨:=ð—Ø>0ê=üòÊ>>1s=ç =øÜM> ˜_> «Ï>89>I=ôÑ>N\>P¨>ä?=ó¨=Ó¯Å=ôêm>ÁÁ>6,>Ž> #~>¤Ú>z ->Ø:=ö¶n=ðe> êÚ=ÿÉÅ=äÐè>>$Ñï>L1>zú> ¾p> ˜>K7=×››=è¿ð>àO> [z>m =ÿ¶3> ™–>òý>^†>˜*>ms>QÊ=íÂ>=á™û>6À>$Þ>>ôî>‰2> hV>>º=ô¼=õÆ >l> >C¢>˜–=õ…ò=ê-Ú=ö“0=ü=øÈþ>ï’> „€>[~>o>Í=Ýæ*=üÚ~>#§&>¡ > «=òÃ=øn>{¡>¥7=û™> q> k>U«> Mi> 9>· >ôd>ŽÁ>¯Ê>Nõ>'¥>±¬>'*ù>?"‚>L´>>LüÒ>DØó>&wÞ>£>6>ë(=él[>ùå>"2„> -ó¨>œ>#1>Ýc>cÕ>ìÙ> Ít>ªö>=±> %º=ýôå=ç‹=éØÆ>R> -hL> Ǿ=þ€>ræ> O=ûÇR=ùç>±6=÷RÚ=ßä@=ÕäÂ=á=ñOí=òµæ>;â>J·>2n=êÌ=É?²=¿ :=ÈG²=ùV=ñLj=уË=ÄUZ=¢¨ÿ<ÙR==–…=‹úê=ªEŽ=ª%=£]=¼ƒ‚=Ǩn=ÀG=¨öõ=•¨ =ÆZä>I*>8ë)>:"+>=š}>FcV>L϶>Ví>_6Ö>e¶h>rt3>‡o;>©AÜ>ÍUf>Êê~>Ç#û>×NÎ>Ö‹e>Ïvö>Ñ»Â>Ú&;>âíh>Ó£u>Ç6§>¼.>½[à>ž[>û‚e?K?Cc>ò%£>àí&>ªm>Öƒ>é„õ>ñh’>Þ§>¬«>dµú>¶=ÕZH=Êû =¿Ù=ÄQ -=Ǭ4=Ñdè=ã¶0=Û·%=½8=Û =æ-=»`@=Ρ¾=õN*=øA¥>1–>£=ðX=Þ=ÜVþ=ê|ý=û¬3> ßÒ=ùÈ#=Ö©½=Ý<=åC=îZ½> Ü_> ÆÁ=ãCö>ŠÜ>£_>f¶>¡ >=ëwž=Ùv=ôO•=ét =Ü¥=ØMÃ=çj>¦!=÷oN=÷h³>Ft> -rù>Ïè>·ù> æ:>m> ™°=÷Ø=ÛRp=úŽ=ÿÊ==íŠ{>!ÄŠ>iJ>£ÊC>ïk.?:›?#?è >ÿ#>—K–>cû¦>g³> ×> 9`>»">3¤>Š>'*h>!íÕ>im=ö¾~=öÙÈ>} >sB><> ƒ>¾^=ùS…=ï¶N=õB>&> ¼> -¾>,m=þPþ=ú+‚=ú"=槣=çô > €]>ê>ôJ>”†>¼ð>#©|> Añ> ^â>) û>&©¼> ŸN>õ >Ð>Àª>úî>ö>[>>ûÉ>ÉÄ>èà>K®>øp>.¼ò>-B>"®Ø>,6> f,>¹i>¾í>@4> hƒ> D2=þ…b=å_î=ÿé«>…>G> -ÿà>ëÿ>ÍV> -°Ô> {> 1X> `Î>á;=õyb=ç:=ñ/}>a >êþ>¬F>Åb> W6>'¶1>JÎ=ÙŠh=åñK=òÏ> —y>õ>÷0>Â>>3ü>ìÏ>ׄ>%n#>F®>O¿+><¥>.ÃP>! -^>U}>LO> ˜=è)Õ=æ;3=ïŒÞ=ô-;=þAr>é=ÿè->ç>²>#>#‚>'×C>; p>@·>=“š>"I>Þ>ñ¸>øÞ>Ú¢>!ÀÉ> Š>âÀ>Äð>ÂÅ>¸Œ>#£>[> û> ‘>w\>®;>>{}> £> ÷h>L>ÄÎ>Dy>£”>7›>¾Æ>/@¢>0!>!F>ké>l> ÈG>b>%•õ>*6Ý>$Ó{> K> CV>J>ðî=éˆ`>Ø>[z>EË> ‹>%Ó>%=ö>+ÒQ>,¹>!ŽÔ>2>2w>Pý>ùž>æ4=ûõÅ>é[>­>d•> Ìç>Ku>#äq>#Ñ>µ—> >gZ>$å>$ ë>&Ȇ>$.,>#H >Œƒ>µg>9þ>1›>lv>² > bš> ÿÈ> [R>-4=ÿ >…Ó>ãW=÷Až=îQ=í¾>/B>£¡>#N5>æª> ð>øŠ> ó.>â(=ÿ)ð>øC>Á > ^>"}>æo=ÿÕÂ>®ù=þ³x=îª=ùT>kq>Žý>J">“b>ÅÛ>B=ï¾U=úŽ > 9M>!y>Ýî>Äò>%o¢>ùA>F=ûÖ=û">ä­>ˆ”>´n>Ì=>ë >ì>{n> -¥>¹>ÕŽ>‹T>)â> Æ>^>©O>3â>Xd¥>â¢ò?s©5?Þª€@9ú°@b9+@dí@3Xá@µæ?Uz>¹I>Z—J>Sµ>èˆ> Tç=æµö=ò; > º>-C>U„> «f>7Z>*>A8> ¢w>Œö>(Í>$n>@¢>>O>^~>¥ô>qù>ô;>ƒF>.ûÎ>6¤ä>6²k>3ZH>(+=>xÎ>ß`>'š+>-ìæ>yù> Ƴ>ƒ`>V>+¹ó>@ÔÒ>Jëf>YÕB>`ªÐ>Xáí>6!E>1x>û•> %b>äŠ=òGp>Ý%>%ó>P%š>ZØ{>XW]>.%¾> p“>ªR> -‰¢>òZ>¿Þ>¦>á½>d>Vz>¤>“>Ýÿ>/>j>ë*>™Å>Ž>î>0¾>!Ôñ>>;|î>TϾ>\S>UI¨>MLÐ>ã~>¾x>™ >¾b>#=Û>*æ>$>&r¦>'Äç> cä> d—>Ã>.–>P7> ~Š>ó:>¨Ÿ>£¯>Êì>Ж>4X> =0>¹|>)uw>°ò>¥>b´>ŽŽ> v(>óf>!ï>$•†>"×ê>(Ê>- G>, -À> ûP>Š >!!¦>,®s>4Íi>7“æ>TÏ>›>T>*Q¯> ¶>%*=ñi¢>->-ýk>vú>nF>|>"ôº>UÐ>!=þ*¶>¢>ãC>0I>Æa>/Ê>y²> -ú> Ó4>YJ>©>>EÆ>?L> ->Ú§=ü% =ð¸ø=ó€=÷*=ùá> B[>"‹]>nú>@>Äñ>¦Á>5’>ì>–¦>vš>p—> -ö> -’“>¨>ªñ>$6í>!–E>!> óŒ>ú>‡„>Ña>~`=ü1†>{ê>­v> Æ7> É>Úg>ä/>ãÆ=øÿ@=ùÒ>pÂ> P>×>ô®>µ>Žö>Í>âŠ> àM=è2c=ùu@>W=õV]=ðÛ=êH=Ý,®=ø•>ýÍ>'j> (e>7Ê>Q¥>ê²>H=å0=ê{e=åAe=Õãu=ô.€>ÊÇ>X±>×>îÕ> ²{>%^>/‚>s9> ‘J> -çr>ñX=üÎÚ> -þá>v =暸> öh>ק>-HÌ>L K>SCR>L¥ê>%íC>Áã=øÇ=>’>+iP>6±">kË>|­R>~à>>iý ->exð>YÒë>6Äb>.å·>$ð ->Ñ»>H>>Úš>~>òn>ò’>§±>"“Z>&7U>$>S>üA> é—>1è>/i>ªt>^U>æ÷>#£•>ï–>@É>¼¡> hº> *†> !4>(´>–>ºN>ö >ê>Ùa>˜‚>q2>%Q}>¿û?ç)?jam?²ë¼?ÄÕ;?Á—£?›83?Tôà>×%U>Eˆ8>)ct> ÉŒ>7>Íù>'µ>)¶û>}ú>f†>ª >MR> ç>%7>¡U> †û>&ªN>*Ïw>Nn>Vû>\ó>6¶>"Ùk>'ž>éV>0u3>1dJ>³|>:l> ÌÄ>Øn>v~>[>>|–>¯*>!Å>%…>¦‚>!)>"Q®>e<>$R:>2>`>3²¶>#X>)!ù>1‚M>1—.>:²>HÞé>Wñž>`ë>WP>Nž>Qç:>hm5>zv>~Â>›Ñ>⌵?ŒD'@ÏÜ#AŒPB;2ÊBÉe,Bð‚Bî<›B¦nÂBC -A;ð¢@67?u’x>Ðß>—¬Ú>’U>ˆhá>q>kêh>b‹>Q¹µ>Am°>/‡õ>-üY>5að>(CM>)ûW>1[>"Êì>2\>±Þ>'š> „>äF>vj>na>n!> Æ?>v>q©>ëü>#<>–>(È>So>ò>'W>%bw>"nÒ>l.>x>%}¬>&õ¤>õN>h/>J>|¨>C>s„>"!5>5þì>3l>+>'>s>)ƒ>'XV> ÆA>'÷>Xj>Ê>„=üìš> åè>ën>€>Ñó>¡>±Ø=òIÎ>e7>2±>0zš>"8t>Y>)Š>.`j>1ÒW>6†>5æ€>/Ã%>$¨V>ÑÆ>+7>„V>¢>,†À>0¿>*Ö>(YN>!ðÔ>_Š>#á>öß>EÜ>V¨> èZ>&¢>ÍÁ>ÿ>"ˆŽ>)Ä>'Jä>Õv>ˉ>"¶>Ú‰>QB>ÔB>Ô> ë·>Ë#>-Ú›>+p¸>Ãì> -Ü>>B>Ü>6N>(Ýi>%]¢>„>JØ>!%=>¼> ËJ>5ó>¹â>$d>/‹î>;Œ/>)Ã>VZ>ÂJ>"l|>Gí>†>ª>&m>)ÓA>$6 >&f>)I^>)™“>›Ü>ùŠ>"øÂ>W§=ýÀf> ~>*=g>/bN> ád=ç(¦>æ>*Š>:>"ãº>B½,>IPá>3ª•> -"> N_>u >Ȳ>ÔÎ>úö> ââ>!Ë>0»Þ>0®h>*=È>0Šš>77î>7…]>3b¢>¤>…a>G>cÞ> Ïa>.K³>E ?x(>°L>JíO> Ït>š>uT>xÑ>?N>†$>T‹> M> ¨Á>.z>9Ä>+º>è6>¶‡>$M >U>>¾º>"Öü>)€¶>³>ýñ>‹>Ð1>#-å> Q=ûìÐ>ì> á†>#+d>ìÎ>¸>>ô>~f> ÿ3>‰2>"å>8í;>NÙ>[ñþ>^&b>O` >6võ>&‰=ùJ>_5>Ëo>ì>˺> ê> –.>€¤>Nz> É5>g'>Q>$0X>eH>Åá>sþ>$ñl>;z>K>§> #>T‘>® > Æ>ˆ×>"ûÖ>þ> Ô>¡>ê>>Ûù>%Ý">,N+>Õ>ç­>c>û>$§>¶i>ÚË>¬ê>Ùv>q> @î>Ý>¿ë>@F>¤â>Úª>ju>Gs>Ód>ƒ²>v¢>…ó=Þ£> šŽ=ðy==ç@e> û”>\Ú> üå>ˆ£>½&>>Ø°>+?>/> Îð=þ1Ó>Mz>Œv>cŽ> .¾> $¢>n>/”=õ½>Ó>£> ?\>5v>ðè> ~©>Ò©>Ç>þ6>Óì>õë=üXz=Ø…â>^F>CÛ>€¿>c²>sŸ>¢>YÛ>²>ù">aV>)(³>Y>d9>Sé>È> Çé>#vd> Ò>#&u>&‡¯>&æŽ>0h>+ɲ>*é=>.ø>+L0>&§>+NS>5'¶>#^>!>(ëô>2Gy>2f/>fò>á>2C%>9AË>- þ>&ñ2>)>1>$åb>%tÓ>(£6>)n>(¤õ>#¡>!Z>!d´>ø²>Nê>'; >,›,>.Ìî>/.K>$úû>ŸO> ‚>¨=ýæþ>{ö>.†> Z>Ám>Î> Óå>¤:>!u>/í>¼=új>Œ^>?ø>1Æ>9"$ï> -ýl>…Â> `>’­>{>²> @î>'´±>(Å7>%ý«># >«>ùù>.>ç>_†=ùR=õ °>r~>/">ö¡>Ðd>F> -¤’>F>±>³>wz>j¬> J> ×>ñš>-á>•Ú>Oä>â’> qÏ>˜>¨¯>Ë=ê–¾=ïŒ >vµ>ø> Þž> õ¬>7>Aà™>1Vž>Âï>ñ¸>"†K>ÙJ=ýƒ(>Šp>%VŽ>*>&WŽ>"+>f>M®>ØE>²ñ>¶¸>¯&>™®>µ/>?‚>P>ê£> ‘>'Rß>Ø’>L¹>-%\>6{Ö>'.> –F=ý}ê=ü1>r=ë9º>¬>&pã>×ñ>áÝ>³>¶!> †š>>q>`d>3ö>Î> -îf>ñ°>âê>á·>ËF> ø> -e²> ë">,[=ÿäˆ=Êb=Ô£j=ú.¥>þ}> »‡>¶p>Èf>‘E> Ì¿>ág>·Š> .Ç>Z> £m>ô> š=ýxÆ=ü³r=Ïi½=ï¾>ýì=ór=äµC> Žž> •¿>tK> ~å> -¥r> -Wq> ¹>Tz>ëò>…à=ôÛË>€Ž>Û[>*W†>3éK> W>^ó>±\>—4>ÃÚ>wû>'B¤>&‰ï>&Œ\>Ü.>i>¦>Œ^> >*Ëz>*ù'>!Ü">>íÆ>,þ>*Ä>­ ->0>§²>[.>*{²>-.> ¦â>µ„>¡ê>èÙ>´M>o†>O> §>Br>®N>y¢>(ê>"Yy>.6º>-¯Â>'Mî>(ú^>W>à”>'ô>"ì>5ê>>„}>Fv¦>—NA?ûã?€~ñ?¸ìR?Ð?Äñï?ŸÜE?*Ó">°¬â>Kt¦>5¾>BþQ>2q>!eÞ>8™ö>*Œ¦>*‡z>5Y>;³>Åì>(~>!àp>)!Z>+ÆV>=€>¨1> ™Æ>,+=ýnX>¨ >H>Ÿa>oá>BL>q=ïQ=ùY > †Â=ïϘ=ò« >@¢> ov> ¬=ê)¨=û¤x>¯4>$Ñc>1½„>2'J>3Z>/Ij>f†>(´à>$[>"L>; -ã>7`§>/|>)A†>+î>7ƒ¢>#­>¾º>!ñY>hÚ=÷·ö=ów>=íí@=ìs> ™ž>s>#(6> …>>((>,¤b>'¶u>#°!>q^>þé>)æš>6%>*m>>#ì:>G> Â÷>øÉ>iÕ>-éÆ>+õm>ÝZ=åèn>P2>ø2>ƒ×>JR>ïY>ðG>+g>Üß>5b> *>XH>'ž >6 ->CÊz>/ > Bb>®ú> wÒ=ü'[> r>ÝÍ> ü>‹°>^A>&7Q>/^> ó+>K¬>RP>2 ,>%"æ>Ïæ> óZ>”s>$é>#„>t>gÑ>&¹¶>ŽÚ>t>×Á>±Ë>¶’>MÖ>ÒB>÷v>%9ñ>)”þ>N¡>]B>!3n>-¸>/ó>-_ê>/>>˜>,Š>?ŠV>QMz>SÒ>N°u>MÔó>9Tþ>0«H>7A¬>[>J"> ñ>>õô> w”>=ã>T’>Af>>>\´Z><…Ö>uW>F¢ô>‘>>W>2 y>ð> B‘=üÈk> &Z> ýz>"G>"{>D‘>U*>—€>i}>è> Ô> ü>'¯0>(8ß>É">!ÛH>.i>.½>,¾>>'½¨>$Y8>’Ã>òv>Â>|…>#w/>&Ø>(™¿>/ŸÚ>1›t=Ú/~=ÚÓ¨>«Ê=ù!Å> tÕ>!f>m9> *‚>Ÿþ> -)‘=ñw‹=÷ã >&‡>1ÿú>2Nþ>8…„>- Ú>A¦=ý5*=ÛŒò>T‰> d[>zä>Q>!S >!­C>A>(:>,}Ò>2`Ò>3¦>Pêr>gñ–>Ù¸Ý?>…}?¹êZ?ûxn@Œ@}ß?öP0?ç«?õçÓ@ ê?ü¾ú?Ô6š?Ud}>Ú¤v>eƒb>Sú ->Bµ>.Ÿ%>)¶$>k\>  >&N'>({Ý>#?Ã>ÈÌ> Y>‹â> -ÚX>%>ÀZ=ó°€=÷F6> -«Ã>˜ž>Dï=øWã>µh> i>Àx>HÈ>'õc>(¼x>5G´>/™–>±=>ˆ>!>û>"^®>-Æú>yi>Ë]>!µh>[ã>ƒ”=ü×ò=øR=ûù=ùR>ãÍ>Õ>=þvs>Ç’=ýa=õæn>xF>Jô>‚²> 4>Ŧ>?»=õÂð=ÉdV=ÿêÎ>‡Œ=ù÷è>>¹ü>!q2>qÒ> ^>#oÔ>+a>#}Ö>QÛ>,ôX>$ÉÐ>ùµ>,Ú>+–8>-‰9>'÷»>'Ê!>&íh>1õ>’p>#Ù&>5ÐÀ>2> -ж>%äÖ>*Ht>'oÏ>y>†*>ÏU>,BU>7êY>&3±>¼–>)4œ>í> HÄ>6>!> >ˆâ> Hó>(S¥>Ä3=úØÃ>Ò>b#> -®«>Ð>›ü>'îÍ>+¸½>-ñ> Ö‹> +>*Å>3Y> ±å>U>=>öC>ý>g>ìƒ>.>ê>¯¦>j=>˜ä>2‘> äÅ=ð—=ð¤[>> >ëý> Æ?>Ÿú>3>¸>?1> a¨> ½í>¨ >+áÆ>!Ë>ê=øJe=ß~¥=ûM =û$ý=îÓà=ïC>½+> Åæ> >\Æ>É>©L>¤¢>v>>'wJ>æi>»«>‘ž>Ÿf>Pš>"‰Ô>(bÃ>+̳>.ÞÀ> 0> 0J> -qD>8‘>[¾> U>-9>ŽC=Ü“=ðr > ‘ž>ýa> % >zÂ>úñ>Ç–=ï1€> B>O†>>˜ü=óK>ô*>un>}>¹H>>#á(>ÃÒ=ÑR> i>w@>>¹ž>B0>=9>4Ë>)ïÉ>%>#ö0>*#>&=>› >²y>}T>ZP>!€0>4Õò>1„æ>3 >5áw>>ï>1þ>›d>kP>i“=ü>=ôù¸=óü¸=ûWË=ÿ—à>´Ú>(r>j>0Þh>0Æ4> {¾>‰º>*>Äl>L>!¯«>jÄ>‚F>wú>™=Åy°=Ñ8=Ô[3=ÏŽë=à%í=à›=Á¥b=’°Æ=vÊÖ=µY=Ï~n=Èí­=¿UL=»K =¹º=qÒ=739=Vaý=oC=ˆCB=qB=O݈=„,¬=‘+â=¦Úþ=ŒŒÐ=v=°Å‘=À|z=Îã=³d=°8=å*½>&—>kòS>†=>‰Ý×>ˆ@I>ïÇ>–‘>“« >—;>¤wz>ºi>íý ? -¿>ížð>æÿ8?3¦?‘U?âˆ?ÜR?ÊP?ë>öL«>õ6>ùˆC>Ñ¥>°¬¢>º¥†>²¸>šƒO>ŽCâ>ˆŠb>ŠQ{>§õ>’põ>“‹¯>’ô.>ŠÓ>fŽS>)Qé=Ù´°=Àë=ÃÞn=ÂG==®7=‘~3=©•‡=Äô¾=Æçv=Ð}ê=å->£®>Âû>Î~> ‘k>j3=öH=é8=åØ­=ñV=þì=>‘g>m>Ê·>w>Eõ>’>½>§¸=ïÉÅ>GL>cÆ=êüø>x>:–>»>+›>þr> ¼\>..È>2”d>-(>#àŠ>!>.Nu>D‚ù>Cz>?«>+“ã> H1>%OJ>0j¬>8À>6ûB>AE>S6.>^:°>Tò3>+:Â>%dŸ>)º>¨>>|Z>tª> Æ>³õ>šn>4œ>áÎ> *">$>ô>)Æs>6¤~>7sb>•J>#5g>,=>v> –>y0>~{>S>·E>c>¢Ä>§&>42>ˆŸ>s9>"î>1L.>/‹!>1£÷>;k'>(d> -4{>ç€>Ñð>1>8>y³> Ä®>0å¿>7v>Óº>Xæ>œw>98ò>4œŒ>ì¢> cM>Ä‘>#ê:>(Šx>/N{>3îH>$¼Þ>ôà>Ù4>!î>"VR>& 4>$Œ¥>¡Ó>1‡>$É >)ÿ„>,bÌ>,~Ô>/ >6kn>=i>>E[ê>=ú>!Ä>äR>nŽ>2)(>6†¶>6„B>à>¤> ›¬>W>rm>¥]>Ù{>QZ>V>*üâ>"7˜>}`>N:>¿·>)pV>sm>*>tN>Æ>Ý.>oò>#î3>'`=>"Ù¡>!†Ê>8(>q> °ó> -ú>>C]> -~&>©>!_J>*Þ¢>5™•>5+b>&j>%ä>'—E>/µÑ>.‘v>+JB>'…X>&sÕ>&«>.¹>,²ô>âJ> ¤µ>Dµ>ßÒ>k>£z> -P> ˲>V_>!ËÖ>+=á>!>§´>!=F>%ñ+>jÚ.>ÏvÃ?1Õ­?„ïh?œl¢?[Þ?}x?6Ÿc>¦2>Bý4>)ò>+ï—>+>Âÿ>±‚>!ú0>.a>*âž>"¡c>dø>K‘>Ù> m> D†>a»> ƒr>)WØ>##ó>× ><Œ>‰>(v>'P>ž>%l>7PF>1T`>+*{>,¶k>&…^>&®D>1œg>#"Á>ì>àa>&ôú>.># l>¸N>r0>-Ù ->0Œ.>(í™>-Gª>+–Ú>ùâ>èë>°>1¶>ÙD>Ø>,>ß+>2çø>0>*Üz>”‘>(”>1z>3îð>(ŠÐ>>Ø>†î>,!®>%j¥>'¨>0þ>8Ù>7¥§>2 r>*Hn>$Já>!âæ>>3>è¶>%êž> #>Xß>ð¢>%­®>ßf> ·n># >'HZ>&$S>!8R>+`Ñ>$µÕ>PÜ>.>‘6>î>¼>— >Ú><Á>Ë>$Z=>& …>&v…>'h,>4úö>B>Â>;{>4s>6îN>L¡>G9á>5ðÇ>7+«>.é2>!èë>$xÿ>°D>,> ! > -Â>µ²> Ì>Yö> ëK>¿>(˜Y>L²>ªE> -ß ->I©>ï&>…>]?>u>(ã>'¤>$%>‰(>;>º’> 6">å*>Q>’ç>"‘>5ê>8{V>,BÚ>&š>0Æ>"‘‡>ß>¬¯>ø>^,>0^Ö>ãâ> ig>.•¢>; ü>?˜b>8dˆ>*¢>}->7&>6ͦ>!Q±>[ ><>£Ù>¹>Ĭ>!î">ÃX> Ò7>-7Õ>l†>¶-> ê>¨ƒ> n>ô>þ> Ç+>Rd>2>Õ@>÷Û>#<=ûg:> -Ê\>N >'À> ®<>‰B>9¨>Û÷>^€>‚Š>(>(Ž~>%‘1>(Ãå>,Ñ>4ùR>:ÿ¢>:Ôî>/:ö> ÿ>#^->c*ª>©ºN?©j?7?³6?¿Ë?¤Ý>?ca­>ç²»>Ê?233?’Ö~?­Ìþ?°WÖ?’Ë?MÍó>Ó#=>=Iú>{Ì> Lî>¼|>-uj>%8Î>>)¾>=•> ¹®>Ó>ï>\> ñË>$2_>8ÚV>)v¢>4L¸>?À÷>)Äå>(ö•>(/y>'î,>"÷Ž> 5‘>2E >0u¬>çe> ‘˜> ÙÆ>6Å>¯ø>#¸»>(é\>(éÚ>(¤>!Þâ>ÔÄ> La>°R>(Þ.>+Àæ>(»Ì>/<_>3Ùr>4CÃ>)~ >.Ú>3ç>>³>#(>5Cû>8Á>5 Â>1%ž>5é>&]C> ¤Ì>%]>‡6> 4>yâ>K,>5â> æW>zà>'> -> O>¥>â3>ÚI> Š ->œ–>~á>*´ ->'÷õ>,‚Œ>1S>-~1>#Õ>Ó>S> šé>¦=>+­Î>2‰Œ>1Í >-d°>vŠ>;0> lj>¨?>!ú>zÊ>$Pµ>'×>K³>Ïe>Îo>$ý÷>0²D>@:È>J[ò>Aô—>=7.>Dmª>3:>Ù0>ã>ó5>u.>*>ÔÜ>²ö>=>‡>Ǿ>7øÇ>@¼X>7Ž>+Uÿ>"ýZ>ø¹>PŠ>d>ή>.‡–> TÁ>Ù>'‘>1¸Š>/^m>*]Î>Ar>Iœ¿>Rþ>Jº>:IJ>(hã>64>+ >>ø>Á`>¢> - ->x~>@ >kö>ê’>Ÿ>'ZÛ>0,6>(¦F>%Ôú>.GÛ>.Þ¼>)Õ}>%¦„>"+2>Eú>ÄF>6 ->:~È>4|.>ð‹>ÁÚ>B>ÈT>!=Ž>4€>&¼f>*,>>+k>z1>:½>)7ê> -Z>Ñ›>"p>>))>-%×>_>#w²>1³z>Cí‚>/>¿>/N¸>G¢>GŠî>8uê>)üÔ>/†>KŠ†>\’‹>OØâ>\v¸>y>>^Y>¹Ž?fSõ?õÝ+AëfAžµ@B -WÓB,YsB#ùjBèbAAV@ ”Z?sj¾>Ô H>¢>D>‹™&>}ÈŽ>j½>QK6>8†>:¨X>Aß>Fsò>Cêú>9wZ>(˜>#¹‚>!‡¸>wŠ>7k>²N>^>îÅ>yK>!¸ >0FÏ>Då¦>K¡>@qØ>Ebª>F Þ>;EŠ>)}ª>*µ>8‰ó>K˨>HKi>9_b>3¨6>%ÅÖ>ÒZ>'ù>#ç>ȸ>Àâ>$©ÿ>,ãf>0üÛ>%^î>%Å[>428>;©Ä>3ùš>D©>H ¹>:U">8ÕQ>EÙ>U)“>M£ó>?7C>6‚‡>8RJ>1i>&ç®>€ô>PO>Ž>"éN>%òA>¿¤=þ?‚>¤‘> b>ž˜>Þé>è>>OŸ>!'B>„9>#1£>5áZ> -”>t>Eç>&´=>*ŠI>(2>6¶>74Ï>0Š5>-ú´>9Ã:>3×>å>-â>9u:>;7¢>J>>6–š>!í—>.D&>%>->P>\â>"½3>!‘>û¶>)›B>-÷E>+¸ù>“¬>OD>“>ß>"ƒf>%‡>>"­">-Þn>+—Ô>#>>*D«>",.>9Ä>%m >(½ñ>/à%>Bn£>F“p>>'">!Ûw>)x>5 Ö>;Ê>,×¹>2¬Ñ>9¡£>*ˆÆ>&Ýj>%4Ô>"ºÞ>)TÃ>, -%>(®†>#©R>+ßÏ>1rÐ>/´ñ>8Eg>2¨–>$vÞ>4ì>ÕR>)üì>MôX>2Ív>@V>6Ý`>-˜>*Hª>:Ä‚>!F>>R_>+3Ý>0ªv>1Ç>-Þ>,Ú>3"þ>9>.`’>·Ë>!º>1U>>Î> ž> Þ>#w>“>6#>&ió>2!Ú>$/>‡ò>#àj>*×>#vI>¤N>™ê>¥Ú>z<>6¾U>3a>+pÒ>6.>'c¢>›Î>3Ö>"”]>"Ý/>å¬>%n>.Ž>5fÅ>$º¾>v¨> k>(= >)9Ú>µ®>«î>.*>(ÔÆ>År>'ÓM>+ߊ>³ò> ·/>®H>&àÑ>3“‡>-¡ß>!Ìb>àË> fî>Õ>p†>!Ó^>*•z><|>As>;ïu>4±]>3†>0Šß>5@ã>2:€>,•“>’O> hù>(h.>4’>1"(>:G>@SÁ>/Z> þZ>+mn>5¨þ>Càæ>IÒ¾>:kÊ>"¹¯>#š ->-Š>)ì¿> hS>#t >)ïÔ>&:©>)„v>%´Ò>ºè>'²š>+çã>(pû>ðK>.Æ>6ƒ“>)î]>6¶ >2¬>(Œ>(>'þP>6>0èú>&>#]M>$MÎ>3£C>?Êî>>->m‡>©”>#Fz>Fµ>#ö¼> }£>xH>sœ>õò>@…>N†> íi>Cj> -Ñ>-=>36x>5¾ ->$¨¿>QW>r2>)—¨><Á6>c!>#œ£>,í+>U›>#uÉ>&X/>"ÿr>œê>%Ⱦ>Ea >­¼>!7’>'aÊ>.À’>8 $>/Á">¼‰> -C>M²>kÁ>kÿ>-Ö>3§‰>+Šó>€|>! -o> - >°>%>$ûÌ>'Ö>>2L>3J±>$g¼>!ÿ'>77>+½‚>ü¯>æÓ> Ä>“”>-1>)È.>Ñš> h>+½>%Õ&>,ñ>/ûî>-´†>.w>'Vû>Å>*vÆ>)K&>#`Z>å>+¶7>#-K>aJ>¡¾>§Å>"ÞŒ>)*>º>$ #>$x*>·>èù>Zç>f>Ë›>†u>Â>6ö>hS>Ó—>öR>%"y>"Oq>'gÏ>)?>ÚÈ>!Z„>'s]>%@E>%*þ>Co>^÷>Ø–>0ß2>0>"»>û >3î>[Ž>VË>¥?>Ê> ">>7Æ>"ad>Q9>lú> -Û>¯“>É>nÏ>°Ì=óÚ >º>Z>-ó€>,©$>»2> Ü>"ì)>3;*>*ýê>4OŸ>6V>=T>?:>73õ>/œÕ>&I°>\ç> nê>&h–>9šv>+¾><Ц>ùÍ>Å!¾>ú–[?¢î?6tP?=‹{?,Ÿ/?ú>²„˜>p½F>/„>&¨³>-®>/N`>2Ö>8hu>;‡‡>7û½>4Õþ>6Ò…>ð¸>Hâ>"–>(+‹>!ï‰>ÿN>a>&Æ>!d¨>m~> ¿>I>¯>>H}>,Û×>1T}>.D¦>0È9>-Y^>fO>Sà>d>"²S>ø>Xa>$øb>oÒ>q÷>î®><->Ð>)r=>/ã>&üÒ>"z—> X\>ö²>!‘ú>8,>2ž>é–> È>+ö€>>o·>@Gö>5O)>Ÿã>ä€>)Í>&'>/]à><•¤>=Î<>1ý>4B…>1WÆ>(²>"`o>!ù~>-Æ>Nqè>&Yt>&Žæ>9¨ë>4²>> “'>ãÆ>®>ãƒ>*/ >1'5>0#>4,B>:Ó»>(Ìç>Z¥>«!>=ö >>ÓW>,Ir>%ß%>.¤Û>-¹m>&‡š>>£>$ G>( Š>-‹–>;f‚>¹¸>#1>'† > |W>T»> È>ö>J > Ú>!Òv>#P>(&Ò>æ> p0> -ÝÈ>Ý¿>âÁ> ©Â>2Xö>,æ>”'>é†>°>>ø?>1g>7–>- œ>;NÍ>?H#>5->,Ñî>'Íü>‚>r>:ÁJ> *E> - Á>]Ê>I6>z>"Ëg>#ƒ²>‹­> >‘ª> ïº>/™ý>òN>Ñò>‰6>}>%éG>"•a>Ë>L€>Sú>s†> å>·8>ß>¤5>Þ>­Í> E> xª>(Qæ>7lÒ>=B~>Ö„>L> “·>á>0ê£>*W™>%>>=d¢>Ad>;ž> Åa>ä–>-p®>-8a> Ï>™Ð> -X~>U¬> •Q>+Û±>>)ñ>‘! >ýý>?IDé?^h²?\¥k?9>ôtú>“2Û>ZÖÀ>Fv~>}®æ>ÁBè?Xy?B M?W'ö?I¶2?+€Ž>º’>Y²º>%ÐÎ>}.>1z>Í>&ã3>:’>¯›>ö>!Éî>T[>v>*5>'¨ >*2>7­ó>4‡>*^ü>(9Î>/ñ>)Ö)>(ù%>*˜C>!S>> N> -j>‚´>­6>9N=öMƒ>H’> ®Ÿ>¬Î>?w> y‚>+án>&ü–>%ï^>Åh>Ô>bŽ>üð>)Kk>'Øž>ª>,f>èå>ûÚ> Çš>F=ü¨->·h>øj>"*>>(¢’>â®>EX> ž>dñ> °h>ßh> -Q9> –2>}«>$÷>'!Ï>.+->&Àf>#à±>-b’>5ì>+ç»>9YÁ>C]W>ªH=ÇéŠ>Ѩ>Ë>=ù%‹=ßú²>LÂ>!ù]>!ð> 9š>,T>3!>#•>£¾> ¶Ê> M>+?ý>õ6=ÿLè>\>ôP>'>&Lð>9Ù>1î>04¡>5m]>)Ó>Y>ßG>'è¶>´–> °s=÷óâ>Ëj>ÚÎ> ²Â=þ‡²>™h>)!>-^Œ>,à >0m> B> ¦Q>.ãŽ>*h>¬>º>>Î>3Öª>-Ó·>om>sç>#Ë>4ä>/èR>L.>Kö>8Ã>/°$>(Ê>÷F> -ŠN>‰ñ>BÕT>FN>8,><.O>6Ùc>6yn>É> ~Š>W>°Ò>ÌÎ>%ùÌ>*ëº>`ê>â:>®> 9=îâ;>(Çg>1¹ >ÉK>MÔ>Ž">,––>Àº>?ž> êþ>>úâ>1Û0>21ö>(Gj> ±ê>Þ>Nð>!¯ô>8mŠ>N]>RÅÓ>I}ô>/ š>5G5>?]>)i¤>*·>'¼_>%V>!±T>+ñY>@,b>_¤v>]k>IX@>@ˆë>>Ù•>F'2>(jN=ß+ð=çƒ:> ²=öÁ =ôsþ>'åY>!6:>*¼>,u<>0´N>$t>$aä>(Öç>$×B>¿}>Eæ>c˜> BÎ>ã>¤>1c!>7Bj>(`>!g'>-z=þM>!î> L§>$þ >Š>£¾>"ÙÞ>'”7>#ÜV>‹æ> „B> ßn>Ók>ý>#äÛ>÷W> Æ/>ñ¹>&‘>cË>Òu>-‚B>è›=ô×}>Bö>2I>¤ª>OZ>\ƒ> -¿>9æ>"̾>0’>¹">"J\>!Š>#4ˆ>7Ÿ>q>(ì>³¡>g¹>8*>7¡*>.Âï>œ‚=ùhË> Z¦>B>%°>0*A>0V>>4'>:ó3>>±O>¯Þ>'ض>#,§>æ©> -ÇÊ>°>x>#šN>*pB>*ÁŸ>*”>Î> -®>%®A>/”>#Å>%XÆ>_>>/+>*>/lÒ>2<>>#I›>'7>,V*>)>Í¥>Ò­>èÚ> ©> íŠ>%—>¨>¿z>]L>¢~>#60>1í>ç>«©> -óÛ>Ó7>¶>”M>,™>!‹?>í> >(}×>5/?>2€>&&7>Ïv>2dS>Fu%>-v>;¬>¢Ø> -QÒ>†à=úØk>Ÿª>¸¾>"™Ö>)y5>!F°>!í£>Ên>S¹>ÛF>»>„²>¶/>ïÿ> Ì>\ -> ýß>̤>&š> Ê>'‘œ>.®Á>x)>®>ˆ—>C–>ÕÓ>,Y=úñó>¬Ú>%j>²þ> -üf> -õ2>¨>èÎ>ga=ü»›> ¬Æ>(ûu>H„=ôxÎ=ÎT{=àû2>ž>‘º>2Z=ãÛ=æú=òü#>UK> \>fè=ìð8=äL•>HÊ>,> -‚Ÿ>ï˜>>!<Í>,ü>6ªÊ> ¹=ç v>µ¢>'û>À{> Áå>@F>±¢>j>.> -Æž> e~>#O+>$Jr>Zr>v]>"Â>-´V>+’>Gé>x>Þ ->¢×>…ò>¤> Ãê>) >4ø>3þò>! ª>æ†>P=ü‡Ò>¯ž> th>ë> -™~>(?ì>(´ù>·•>×">ª…> -À=ßp…=Øè¶> *n>n]> çâ>Ò_>_Š>0¯>/ñ>"2«>&çÜ>(³˜>"‘¬>á>nl>6î>‡È>>)> ñÑ>´¨>‰>!ìË>á>Dš=ù“J>Ò]>úú>å(>ý¨>Œ°>Ãî> ¦m>"Nr>3¹B>.O‰>-j>.'’>;~>BŽ>*ñæ>'mö>*šø>'ht>"‚>4}>ž¯>„®>\Ú>Y>>Ún>E>ŒØ=êXN=ìýî>ª>; >Lpè>:Õ><ŸÇ>H -®>1¢>"į>q6>>âð>g\>;>GÃ>ߺ>"X> ¾Ð> ûñ>‹F>(.ý>2ô>M6>B>fÎ>>è>#gr>2^á>(i>¼i>L>û‹>מ>øO>%*>|¦> Ö>K>ý5>´B=îP=¸Ê~=£Æa=ÃúU=Ð=¼u¶=©Ä= +=¸{‡=ÊrW=ß°=¥Ñ*={ƒˆ=˜¬_=™9=U=—FŠ=›Óø=±¶¢=¨Þü=˜’º=‚ø=‡³=£ËÞ=Ÿ@ =£Ä¨=Ôs]=ÑÈ…=”=žIÝ=È)Þ>à>*fÚ>e]>•ª>­åR>© º>¾åþ>Îçn>»ƒX>¶S ->½È^>ÌÖ>ø[?,?Ä?&¯­?¬ã?+ÒQ?8H_?=|}?= .?;å`?+Óþ?*¡Æ?,f:?÷^?«d>×›5>Ñ(>Æ+Ñ>À³¾>¾ƒ4>¾¼ú>¸íw>´>¾Cz>»…Ö>ª?> èi>ŽÈÞ>jµÐ>07î=Ä¢M=\ºµ=-Jš=‹=šãÖ=p=ahö=T«Û=pËR=§^=ŸË=P{£= Œå=Ζ=ºÑ¯=¹èÞ=ÃÇ=¬;=¬%Z=Ùš=çæS=ðVn>6> '>ÁF>5±>F> - _> w>ãŠ>Mj=ðJþ>aî>0>%t·>HW>YÙ> y<>ƒ&>)±Ù>V5> „> -Âò=þe8=çÕ >ÂÞ>?2>öw>t<> â>¡~>Z>!ä(>!_L>™^>ÄS> hÐ>,>0À$>(sØ>°6>pÄ>e~>*.>#8]>c\>!»> ë> U>K>"¡>‰>»i>Fç>¼d>ð‚> ¨> ”V>°*>$—>*Ré>&ÓÂ>#ů>²ý>4Ã>ë6>åV>-¯|>!/->A>*tú>=¯Ÿ>Klê>0! ->>Ûñ>‰r=ý‡þ> -B5> ëS>¯°>ð>(&7=èªZ=îYH>v=>‚û>‰ì>ó‚>̆>ç> 8>8z>FN>JJ> Ó‹>ô$>$•>,^>'‡Ò> ÿÍ>V> ¼>#Êÿ>%šª>Ê=õ¨>8ì>ý^>´Ý>>Ej>5¶Â>ç>uª>"âê>;ù¼>. -O> hŠ> l%>4D>8Z>!ñß>ñï>0jý>XÍ>½Ð>TÓ>lÌ>5È>-¥Ü>7r>-ÿ>$¥Ê>¹Ô>&í§>/h”>9'—>>F>?Iü>C÷>bÕM>‹vc>¢»þõ>DZ*>Åz>>Æ]»>ÈKº>Ã8­>²ìV>›gO>ZK>2c ->*ýF>.Š€>2v¢>ö_>› >;(> )ç>$žŠ>'Ç >vˆ> ª>5þ>"n>)á«>1Ÿ‹>7a>8×N>2 >&"ž>5>˜ >ÿ>z > ”>ÊÔ>‹> -¿g> Î>½>YÖ>Ö>$»ã>*óÚ>7Âd>*Ћ>ðÞ>ËQ>ìŠ>¢Ê>iê>¯ü>ý>„†>ûÛ>µ­>ü>–V>"8¶>&%ˆ> ÷Ê>>Àê>!>>!&É>¾>(ôÂ>+§õ>%ø–>4ñ/>5¼I>ç†>5p>ë&>в>i >":å>%,>%~> -`à>r>P.>'w>(¨ö>$±>Ò>ø[> xÂ>"Ì>Ÿ’> ¦Ê>i>6> ìò>é^>kr> :á>7þ>C>½Ì>»1> Ð>…ê>¾>½‚>&Š>/Qš>#€{> Ó}> &´>§”>‚€>+3>é>£Ö>Ü)>“>Ë>¨.>,/b>.qv>$´>_m>ðt>*>¥™> Æ>r&>'øÄ>#& >%|å>6ÄO>2…ò>.£>;¼>4“>-_>*c>)Õ®>(IL>"GÚ>Fm>>!ÿ½>(O>Ž >  -> -ó>$Ö>.©î>*Ð8>²Ã>U.>þ>!B>%èœ>'3N>¯Ó>óÁ>&©l>4Eœ>6è‚>/”>'Zr> ‚>›">ø²>/<á> ˜€>$¡4>/¼#>!÷>ýy>A9> °ë>¶6>xë> Ä> :•>FèD>ŽíR>Ò3>ë[>÷õK>ëÖ >­Ô>dãÊ>>ë>ðÒ>„>þ®>’->#Î>FB©>¨Vö>àð>õèâ>ôØ>Ú•>ž=…>^Ìò>0ô>-¥> Ò>;J>%Í>|¢> Ë8>oÒ>{ä> Ð>ù>':>ÌR=ü*=×”~> -m>J¼=ß°Ë=ÛGm=åè8=ÿIö> –> -Þƒ>R>p >·>3>Ã`>Jj>°>.#:>4„ó>&w5>%º>*½:>-–>q|> ^»>ñÏ>é>>ü,>ƒé>c­>X>R~> ö><²J>:ÇH>âç>&•”>-@>"æ> »f> MW>)B¶>¨¹>Õ>†z>"²U>)fV>+ãä>'¬>€L>¦>áú>5Ú>7Ã{>1ªÎ>(Š×>&ˆ¢>)§ø>.<@>4Ú>3*>.”Ú>š> š>4Þ¸>“¯>&û>bï>!ç2>(ÄÕ>%ï†>-š> ÃJ>ìþ>‡Ì>s4>´K>ª0> '>¼è>1^­>AÏ~>­<> >ÎÂ>Í>3Õ> >#ÓŸ> Ø>~j>†>ÜÕ>—> ¤€>:`>Ú>!ÍZ>#ÖA>H&> >ïA>’‘> ­·> %>m> ¶É> Pê>¤ >"\?>'6 > Å>"A>$!:> ¬O>³->> Â0>˜å>My>>>'oÝ>-ƒ½>*T>-qÒ>5Ö`>/ÎS>1Û—>:î>7ä)>HQ‡>Z¾†>LÅ¿>: Ú>/n>%X?>5F>ÝÛ>!.>çx=è6=öÍ#>Ö¸> PK>+<‚>.î¯>%Sµ>$.#>'ˆ>3Ãí>1¿>*!J>d°>( ž>4Ÿ«><9b>.¤k> Á> XB>>%Á.>%^Ú>Ê&>é>&1O> Bå>²E>¶>#6Ð>%1W>F>›š> ·>öÃ>4 >À>ïª>"æc>,á†>-5™>'ƒý>šÒ>ô>ù5>ô„>d‚> -`j>ô^>@Ý">7>'§>%=t> >õ¶>A>#£ö>((¶>î:>&ë>/¬6>2p>.Ýþ>(¿–>!z—>²}>!.>·ñ>ÆI>a*>¯”>!þ®>'Êþ>( Þ>*mÛ>4Ï><¶Ý>!xÊ>±A> ‘7>,‘>:$`>JF`>0&Ö>%i >"û>Í">#¨°>./ > wG>èm>ˆš>”ß>•>*”†>'GÓ>%ž>"ä>"Š>"K¢>!õf>‡I>6²>bª>™:>½>*,>#½Ö>0ŽŽ>0ØN>*9’>%M >$»¥>&ØÛ>›.>„(>ÏÉ>+êì>,¾M>#kº> ‡š>!úZ>(<ñ>"EÚ> (‡>)kÔ>* >,²>+Ùš>"tÅ>Kà> Jƒ>±>ëE>à>V> >#› >D>†â>"hO>$‰«>ãÔ> -~>ü> í›>ŸB> 8:>)M>>/(à>'j >eì>•v>uX>"‘€>!-à>_)>¬>)é>.`>"«½> µî>(¹D>">íù> †>&¿Ò>( ,>!Ÿ…>,¶>. Ã>*sr>%Ä}> ¼>Š>&=š>/þq>:k~>>’>5èš>)v›>22T>8³>;„x>6A>%U>¹>)zM>(üV>.F·>6í>$õ„>bª> :s> -¤ú>Ô•>‹Þ>ê >X+>$WN>,Ôl>,§Ò>'«‰>"Z>0Ùô>9û4>®¤>Î>*72>H{g>9“>*Š>vH> ˜>²T>)z>ZÒ>'@b><{>/Ý>&¬¦>%"Â>26">8wµ>3,¶>(,d>‚¾>ºp>&½[>>ë> b>+`²>"{²>’ >'E> ²×>Å5>*í>-ÇÀ>+€Ç>'TŸ>)'2¹>s¶>-+->3øŽ>xz>/ÜL>56>,{Ý> C>«–>!ë€>{^>Ï–>pú>¡Ö>"·4>3ð>7ƒõ>-ô]>,@g>9 ò>6Ö,>8À£>:¢ >-u>*43>6Y >H÷Z>=ND>3õ‡>?UÁ>&¼0>!O<>-ã>D>&Ö>²r>.F>4*>61;>â÷>¿Å>´Ñ>3>k*> Ìc>?ÈÄ>3úM>/×í>5»®>0Hñ>."ú>.N—>"ÝÛ>!ð>'{>0¢5>*zs>(->9)G>9ºD>,‚H>‘J>­>-:>;,t>.Â'>'7ž>*Ò:>2ñÞ>DGî>@HÜ>,ôZ>$º>!­Ú>ÿ+>F>'¶Œ>6Ü >!­^>-Æw>6eš>5ª2>.Y>/¬Ò>7> 9j>þå>#Õé>4«•>=r:>:—à>D,>!†>3ñü>+!>3ì>‡>#)|>(°*>)¹î>\> qv>0Ý>ç™>¹ç># `>,é>.¾~>¸¤>#0>-—>/>B>5$[>5¬Ó>,¾>$Ž˜>ö¾=áë‚>*b>Ù±> Æä>Ïý>žô>N³>ÉS>"hó>%]©>öF>ËÒ=ñÿc=Ñ>=Ø4Þ=Ô‡=â>×K>*º>ö>‡†>!Õ>)“v>#ÜÙ>]m>°˜>G>eA>!Òê>&{>%Uï>ëO>!9'>ê«> èC>x>jF> fÛ>"O>_~>_ú>M>H>'´> -®">`ü>˜²>˜U>$[é>O> ~æ>2>.1>!¨Ò> ³è>'}8>#À>›í>.F>-Ê>']2>.Æw>8a >;~>:—¬>?Ó¢>!¾>ÔÛ>½>.l6>/>,g>'®>)ií>)­h>¤Ñ>0>tƒ>>ö ->‘F>>5oœ>,å> ƒÖ>>˜>$0=>!—¦>/Æ> :4>   >wB>`×>cû> óC>ÃÙ>) >.™>}8>%Ã(>#Ñ]>Ï”> ̆>‰g>~>7–>!ä>'-f>'µ >6Ò„>(æÊ>^'>&‚C>.'>5É>Bžf>#í)>'üF>-ì>&© >Ø>>|„>’>€Þ>æ{>!iÅ>Þy>µ4>3Ø>!ÅÞ>›˜>K>}f>´¥>J>æ>(Cb>5].>$þ>"f€>'®å>%ï>ñ>##H>5´>B’8>EÀÊ>8mn>'³ã>Ê>·º>å¤>(ð>6z>–l>AÚ>ºŠ>w²>Úr>2 >;Ê>;ÁZ>3Ž>1’Ü>?þÎ>Ckr>#áÿ>"Ú>A¼>qË>º>(Ü`>*-Ÿ>"{û>/PX>7[>(ÝÅ>e>  6>9Ê>¥u>iÒ>)Ys> ·¼> Í“> 3š>)EÐ> Å+>²U>0+>fH>æö>@_>1‰ë>540>^=>±>®ˆ>6Ò>#b²>&ž£>•¦>Ad>~> ¹>¬{>#Qó>)üº>"¢¡>%CÙ>$°>JÚ>ts>ëÞ>tî>Ó,>*,Õ>);Ö>ê>¸Ê>&ÿ¢>UÕ>°J>.0>Ì×>)‡N>-úð>©>›>#ë¨>)èƒ>>1Õ*>IË>0„>‹•>€;>6WÍ>†)>@ª>$é>Þ:> -9&>Z>!ê>%Z> ½f> ³Ë> î>0ìO>Iµ>><`>I†>j>$­L>7WV>::J>A û>< Ô>0<¾>(Ì>#g@>$i«>/b >B6>AŠª>.T¦>-3>éÅ>Äþ>’> Ë>ŒÞ>É—>+ô>(C²>Ù€>"Rœ>,Û¹>°÷>ë>ÀÏ>2M°>3G]>3’ß>4 ¦>3öÏ>3A,>+v>/>+ÛÅ>%í->#S>ô|>Dr>&©“>*„Z>!í¥>ã>L>%F›>L¹>Xª>!‹¨> Ùf>4>@?œ>RÀâ>6Ýl>7)§>S€Î>` Ý>/µz>QÎ>$;b>,ˆ> -´â=ÿü›=ñ„=ó6=øÈ=îèý=÷[> ú«> ?¼> ãæ>¬>u7=ÿLÆ>Yµ>5’>"Vj>&&ö>1•æ>1bj>(l>%+>+d>*S> t> Î>gú>$à{>'€>Eð>Š>,¶>œ>'ªf>8ôZ>9%’>OV>d±>»Â>,j>"·ú>#ŠB> é->™†>ç>îé>$™>.ãÈ> ç7>Ú9> ¿>ö>*&>!ðA>"/A>B_¦>Wè>Vß^>D-Ã>&ì¬>$~>GÅÏ>Õ>Žÿ >‹œ>gõ»>Hž¨>1û†>öV>e–ø>‹H:>ŒÒª>:>s9B>U"}>E]>>Bž>W¢=>QxP>·R>~Â>"²>z¶>AB>éâ>N>ºð>u½>í>б>úÃ>¹o>v×>$ÂÒ>$"ƒ>œr>¦->Š>Ek>'lþ>_ø>)>-X}>0r>.n>)½*>ðl> -«:=æ>=°Ù>WFò>\ÈX>Té¸>T;->;ï–>7V> s­> ³->Yê>%(>µ>É>”(>¯O=ãyø>f«>+ñô>#Æ>,†>|>&“>ŒÀ>ÔÒ>UàÛ>}½Ë>‡c9>³>g˜=>:®o>cl> Tø>²F>$|´>#õ~>è}>' —> é>üu>+K>NÁÃ>Ñn>F[>C•>A@> Ý>È>&v>éÆ>ð€>yV>!4'>+<>1i]>B”>4Vr>VÁ=ò€¨>Š€>y>ÃH>L.>"Ö ->r­>Ê=îè‚=âæÅ>$Š·>lyè>‘ f>Ÿ†º>“ >ƒå×>[Br>9G8>AÚñ>?jF>9eø>1«8>%‰#>>º>S}>$ï >Í.>XV>Ç>9)¸>$`>¾=Ñþ=Ûšn=݃h=ïùè>E'>œ=>Ç£>L>\>öO>nL>†í>3Ö>.iÑ>Úg>"'6>?nô>:(Ü>#è>%¸=ùå>Ÿv=ûãB> 5s>TÃ>+I ->&i>a²>SF¢>†Bg>™/Ä>ž_ž>¯Ld>€»~>?Uò>/>›ö>‚>¼†> dc>˼>q>1n$>:ö><ë²>N{ >‚ ®>¥.%>³0>¦Ò>“6ì>hV>P>M®h>5[>*eù>6kö>*ƒÊ>~>+³û>4Uõ>$É¡>¾Š> ·=ý’p>Ò>)>>~§>Ý->0Ùê>=–>ªÑ>~©>Õ>²>Ç)>kÜ>€>4ýµ>?Á>'•¼>>{>læ>èí>'Q²>ýª=ñœ>]>>$>žj>•ú>\>Ãü>+ff>2eš>8+>$¹Å>dî> éJ>  > 4:>#R>-äÉ>aÖ>qg>!>„p>:£Â>ô–>&]f>,÷1>er> :>$L>.¼J>*!á>$„R>^²> @Î>0k$>3‡>.…Ç>*„>)Öv>lz>çZ>×Ü>"Òª>ê9>r;>%%*>22z>*ÚF>&'+>(FF>=R> îû> [¬>£š>g*> ö> -ê> ·H>iY>'ö=úJ>ð>$€R> à> -¼#>Ö>³8=Ùm>>ò©>¦>“.>«€>Ã>Wˆ>.ò?>'ê&>¼b=ïX†=Ï %=Ìï(=ï”®=ì'=ÉJ=¹n=ÐåX=ÿ£3>.É>+º>³Õ=ÝŒe>îz>Yª> ¥¬> MZ> Á¶>- X>(.‡=à™â=ѹ‹=çkU>B>>+÷r>/#}>,¿>î‘>,%>~[B>²C§?÷†?N-R?zâF?…r’?l±V?-ÉR>Ç€>…ñÞ>˜_X>Ò½?¯‘?Yþ>ôñÀ>¸>€>3>q>æ0> «p=ö:‚> -z,>w>ž> ðç=þø >†'>+->æv=úÒ> ­I> ž„>g³> Ë->,V’=úªÕ>t÷> -

    i >s÷>9@>bµ>Œ<6>¥!>¯ -ú>«™Î>œ¿P>{{û>0\`> -Ð>¡}>]Þ=ûm>¶>:#>$]æ>":æ>Oê>Fi>K:>;h>(>=þ_v=÷¡r> Ó">>ŒÜ>Aðó>Û>È´‡?d?Z¸?§­Â?çwF?ô Å?òô¥?¼z?ˆ°B? £.>¢yR>*q¿>(¿„>*Z> Sá>ëz=þ؈=ðNÖ=ô2è>T> ìí>Î}>ªÔ>Üü>€ü>²>›6> ->Öê>)6|>a–>û”>žð> #M>›™_>‰^>ZãÍ>/S”>Ïø>Q¡ø>qÅ5>‡.ß>c™H>>6>&æ>#"/>8÷¬>:g >?öW>-

    !¹R>!ß>iý>!²õ>Ô&>€´>7>| >${B> ×ã>K’>{ ->n>&û«>9}–>)ëº>e°>„ >ëü>s.>0M>Ç>Ìb>2ñx>!†r>úR=ÚÀà> -Šd>2èº>-=ÿ²’>Bq> Ãn>*.(>#_Â> >#ü—>Ð9>ÏŸ>&8V>$Ÿ?> Á>ì®>#¿j>%µ>*t>!q?> -N> -Åñ> > Þš>Ö®>8=þýÚ> ÿÖ>$1 >”™> Žô>ÈÍ>d>TÖ>"7%> é>)ØF>&sõ>hn>8Ý>,TQ>(o>'PÚ>Ca.>DK>q´Â>ùwˆ?#7»?SÐN?Q -?@RK?ìŽ>Ðïj>A¸>)KR>+tj>.í > j^>­;>,{?>8Ãû>-bG>&}ü>çÂ>ðr>ÝT>6}ö>>-z>`¥’?h?~åÂ?Ì80?û@œ!?Ôw2?¡J?J>• N>4QÒ>ü˜>!]>3#>Ë=ôøx>-Ù´>1l=ç…þ=òãØ>W†>Ig> gN>%²¾>Ö™>–Æ> Œ>s>%l>$ºò>€f>ho>%Ÿ>‰æ>#Æ¿>&f¯>&hM>=ä>·> ×€>! >Íb>ä³>Sâ>'I÷>-E¾>$Ë>'^r>-cø>?Ÿ£>E Î>5P>:û >Foï>O*²>R®3>RVµ>a¾P>w=>N1@>R˜ª>N ƒ>:JQ> >¿²>Š5> ò®>ºy> B>!>1H>.Cp>N=êÓ=Ûï°=þœ¸>h>3Š>g=þH>›¢>¬>=ï“m=Òös=¹š[=Ï>R=Øb“=×þÃ=ÇHö=³¶=ÖD=ÙŽf=¡®&=§t<=­Å¦=£ùŠ=¤iŠ=±,@=Œ‹–==ô‚=>.B=dV=«é=ÒM=õgF=ç:Õ=ùå> ×R=óÆ¥=ÞÝj=ü­ë>ON>•pÖ>¼ô>Ù0>>çdK>ß©ó>ØtŠ>êi®>ñ½È>ñª? Ú?!%%?k~?aÈÆ?9î?\os?p¡®?z¶è?z?w¨ž?lPp?gå?l^?b®B?Mh?#5? gÁ?-?2ý>þ…u?°v?çE>ÿzv>þ…ø>ü͆>øË>ßÊ–>½>§Ðf>hèÎ=Ì©&=( ø=!—=‰B=šÖÈ>FN>‹Ê>Øg>£i>Å ->+Ô>=Sõ>'Ò¦> -¬ß>ÊÜ>%¥Ü>è¬>):÷>:Šz>‰¿:>æ.?2´V?]¨F?kî?YOJ?'òÌ>Ë·>cƒ3>-N‚>:ÜÚ>:•Œ>9:†>,9J>.þ°>C+^>8z>,È–>'>ƒ >¡ä>#½¶>(Ô0>§¡>è:>L >@¡>CÆ>‹G>(µ>3>!Ð>úf>%]>XA>p>&êF>Ì¢> -%9=õƒÖ>µ_>–M>¹æ>**>€=ý³=âÀ>-²B>,ÍÝ>N§>Š> Ùã>'ô> Ûö>¨> Êì> ÐV>g?>@>> ëQ>ü>™>HJ>ªµ>-‚>J>¯>_#>o’>"Ó>,_Œ>€V>@>jä>¦>°Þ> pê>Zf=ùa> zG>. >—>=§> -B6>j†>Ž>©,>»†>uD>"ÛM>Ð=ù° >äÄ>‘ú>6>`ˆ>$ ‘>%xb>2ù5>P0;>X.à>Zï®>QÖÃ><¢j>"*‰><>×ã>$•–>"ÕÍ>'¸>1¸ý> ÷=úÖe>2Ê{>WN“>c™>B+>*O´>›>çà>(Rˆ>% ç>,H>6¿1>®0>¼Ã>1wê>%-> DÅ=ù|B>f>Q@>ž>«l>åj>Ûg>‰S>)ï%>%›½>¯>!E>Å&> º>hl>,>&FÚ>&è>ƒ3>¶ƒ>”Ž>´Õ> ™>Bã>kÛ>'å=ôΪ=øöV>Ì÷>L°>…Ì>gÂ> äA>>Ð>$Ñ‚>pŠ=ÿŽ~> -{>u>f>×*>1>#>è>¦e>!®>~¯>ÍÇ>e> ÂX>Ž">(>,h.>&ë!>)‚>%Ü>1“>™Ö>Þ>[z>Í>ÿ >È–>ãª> b'>vÕ>­> ´Ò>Ö2>Ô%>'8>¼`>¢Y>=!F>BÒæ>4ÄÐ>*èò>%”.>.Ñ>+w3>'Ï’>#ì>­¨>æ>'ã”>5…V>6)©>*®Û>#Hƒ>7›ý>04'>Ñ‘>(Õ6>%Ç>H”>°Û>™®> *>ìœ>ï&>!3>&cõ>#ø> ZL>"Cœ>':Z>(÷>&F«>Á]>ï>êS>-i >&þ¹>õŠ>tž>òB>Ó>+]]>;}•>'í>'Yj>)¡>"ù(> Tg>•ý>Ö£>#>E"> µœ>–V>Ã3>`˜>†¦> …®> 2é>ÐÀ>Ós>A·> â‘>÷r>©>ÀJ> -$Ñ>ƒ>R=>,ÿ>LDJ>ûP>üò>5ç>>>À>;yÛ>> ³å>éý>Í.>0ú>Ô?>!ûN> Pe>Èb>Õe>Ç>!M½> m> É*>'’Y>uö=ú.¨> ÛÎ>‡Ó=þ:Ð=þÃ>ÄZ> ÉÉ> ,ë>íç>#ã®>³®>I>B > -ç> =ÿ>1h">.r,>eö>Öh>¥e>RS>3Ž>Î]>Ú>ÀB>¹²>a¢> r÷>bÌ=ÿ‹µ>™>+ˆ->'g­>!Z >TŸ>í1>gr> ê>"Ô>üš> ›>Û>³8> E>è">9ì>PŒ>•ª>'ÈË>ºž>Y*> ^:>,!>!Mw>Ì‹>Úç>,{‡>M?>óç>„Ú>#²^>$ó$>¶¥>¸> ×>´b>8¡> Îj>$N >¿á> +O>/#=÷ÏÅ=ö/Ú>‚> «E> —_>tÁ>Š>4ñA>0p¶>#1ƒ>%7>"$ž>$œþ>6d>"o>Gø> ¦½>Ì_>,VÚ>-Ù†>0YH>5ö>5>ý¾>¨ž=òü`=ñÛ`> %>´L>¼«>V> Â=ýn>>Òé=ý-u> (¹>˜×>)¶r>•Ò> ñ>ªX>–D>€b>)Ùÿ>*]x>$Q>¡÷>>%W>"g>ÝÆ>5 ->ªÜ>ˆ~> ˜w>‚¶>…k> eQ> FR>" F>(#>>2ê>÷û>ûè> u> Z>\>!öü>,$ñ>"¯Æ>§¹>Jí>Éç>þ®>ê‚>^I>ER>&>ù>%j>ÎÊ>u.=÷ ->.>­D>°f>ãJ>>ù…>Ùå>Ä8>!‚Ç>ƒ¿> DG>¨>.p_>Jâp>^†>ZX>O,;>#Ó£>dF>¾>:>"¸>+Ì>D…à>OF¦>XíJ>I‡>9‡É>²t=ÿB=î¹³>½>”Ò> ¨¬>U4=ýž•=ûV=õ±Ò=ó»µ=辈=Ñzð=ã|=û2“=ã:Ò=õþÊ>ue=öh­> aÆ>Rø>¹1>È> -,ã>HÕ>èU>µx>k¡>r^> p±>bê>K*>£Ð> ›‘>ä>åG> VŠ>=óŒ5>! >Úâ=ØÔ+>‡M>2œ€>ú)>0<>cv>/s“>$££>G>óâ>"µ¹>­>Tê>h">½‚>šú>Ù¯>ü–> è>ý >â{> }p>ó3>ÞB>Ù8>Ñ·> Ðæ>ÂÎ>L>W&>ij>ì6>î!> m%>!‰>$§>*ö$>)#Ã>!M->©2>] >À[Š>Ò”>ñF?îŠ?Ûß? >ÛºÐ>µÒv>w¸ƒ>&>(”.>/‹^>&1¥>#>Zú>Žß>á>³¾>Uò>³> *>SŽ>†ð>5c>$ÍÖ>)âÕ>+gÍ>sJ>ª>a6>&Sš>I»D>œ2n?{·ö?ýR+@€7@©b‡@µŠ@žºJ@Oë?⌈>²ž >VF>7j>/,ð>(-J>#Ê„> #i>ªÔ>Óæ>ká>r¢>1—>R\ >9>‡kÿ>„`>…>ö>Pžë>³&>’Ó> ý>„ú>ˆ> Á>KŽ>-2>ò>z> ´>P–>–6>–¼>(ðc>A(>c3>sÌð>ƒ3÷>ƒfê>fÌU>;UÆ>3ë>)s>!È¥>)K >(?~>lé>Å¥>Í>"ê >!kv>%×o>'Ñž>%æ>Â>cf>#4ª>&Ø>-,)>6ÏV>ºf> ð">20ç>4V¾>15·>,”u>Î>X†>+ýæ>Þâ> ‰0>,»â>+©ö>!ÃM>¿> œ¨>E¦>$œZ>­a>•÷> 7…>!¦>¶@>­µ>¾r>»ý>œF>"P>*Äü>*rs>"Ç^>-D>2™Ò>.‹6>3šÊ>(_S>‹ü>,­ÿ>*\æ>ÔŸ>_â>&ï>7c*>-‡È>5t·>BÉ>tcˆ>híx>[d >m;>zm>‚ >y!¢>eô*>DÛ>> -õ>Ô(>¾q>K">B>.+> Ë~> u­>'ë>«>)r>0¥$>)¿ø>´^>jï>Ñ>/•>Oñ>”>*l ->4k¡>0?>ÂR>OË>¢H>J:>¼A>©²>¾>$˜Ò>'¿>&É=>‚> d>Xp>óT>Žº>+5)>'%>`> °>‡>¨>3T>%¦Ê> >xE>xÉ>Dþ> ~>Ó>]>P>2>;>1E¯>‚áO>Ö¾û?JSÊ?…Ò[?›ÈÊ?¹µò?¹_é?¤SL?F?qÙè?53Ë>£ƒî>\hÀ>*T6>,ta>,^>+¯þ>4>šj>ÓG>#jø>!Íö>!#>+°>8nz>,6>*¢`> âN>T.>¾>4>H/>6>+ºç>#ðÐ>¢´>˜>™>?>¯>$ÄN>)ª«>88Ò>:A–>67ô>+ ¶>&+/>a>þø>ƒv>Õ>-;&>6½>3¶w>*þ2>ñ›> -Y–>±ï> ³>é9>#K>$¢¤>+¬V>++*>(Ì>’±>>°>“k> Br> ¢“>&³>!²>d¤>‚:>¾J> Z>"ÉŽ>)$c>,…Ø>2x>=#->5GM>)¦¿>^8>³“>&æ>LÆ>F^>>==6>4YN>(y.>" í>ï>Ÿ¡>ž>ó>§/>!ZR>$AM> ±Ï> Çg>º½>f>ïù>#r>y†>öË>"Çê>>/L>HŒ>>EÎ>;$Ä>8ÜÒ>»Ž>±Þ>- -><ÉŸ>,×Ü>#Êì>'Ô{>'Ÿ®>"j>%>Ó£>ˆš>e ->k>Å]>>4i>ê>„>1/Ú>)™Š>æn>ãò>3`6>2Ôá>(ÐJ> '>k>È“>5o> Ó>ñ…>#1Þ>Ô8> ï>N5>)Ä>/×4>)6¬>/>dž> -?> -wú>ñn>¶>‡*>6þ>*7 ->#IŠ>°ÿ>Œá>$BÅ>%}*>Én>ˆx>š.>; >Ÿm> {>AGž>‹Ý>/ÝA>=É>'™~>$ÂÒ>)} >8H·>="I>HwÉ>HŒù>1²>4Ä>&Ñ`> ß>ä>*>dá>$BÏ>="þ>;°v>&L>oö> „Ž>(;–>-’Æ>(?>ù>8€>#„V>%Þ>2>üÎ>õ> ô¾>5¦‘>ìÓ> B>_S>)uN>ð>P¢>x“>ð>Žù>¿D>ˆ¤>Å>%4>1@”>&Û~>â²>$Ò>!G:>7Ù>Å«>3á>ô!>ÏŸ>Âv>x†>Aù>Î>+.>iÊ>5¨>ê˜=ê[">‚P>Ù>A>sM>&K>V>Än> f">¤C>^ˆ>ÿá>#>‹>Ò>Ÿ°>cÛe>¶Ò‡>ÌÀQ>Óû>Éà|>ªÎµ>yW>7½$>`¥Æ>‘ÿÒ>¾hi>ײ>Út[>³-R>€ -Î>;Q¢>8V>rã>F>„ž>$PŠ>'l> Ÿ>DL>>Óø>$·> -> -«>g>!E‚>2m>#7>Há>Jè>Ã9=ÿ»+>g<>ÖH=þþ€>L >(“â>:ta>&¿7>G(> ü> dá>Uâ>j²>U:>*$b>&ÿš>'cp>,“«>+Öƒ>2&>%O>+z>&¡¨> x†>½á>fú>¯>·Y> e>k`=ÜmÐ=êà> §ƒ>®J>©>BÙ> ˆ>—ô> (Õ>§Þ>-¼ >N½>æJ>)Ç€>…n>8> -É*>­U>!7‰>&@]>¤‹>‡—>n:>Ç>ã=ò=ò4@>''> 0f>ô>f~>ú=í  >|>´Ž>)Ò>ÝÛ>ί>0R>1ß@>.ƒ>% >H>œb>,f>Ì@>Š”>)v>,ÎÌ>1:2>!gŸ=ð/°=äÿ(>µa> }¬>‹r>ª> ;Þ>L> =û˜x=Õ° =ÅÊŠ=çÊ> >™š> zn> ù>û> ò†>;—>Ú> Ø>n^>x~>)õã>1!’>e£>¢„>$Ù²>kk>Zö>$fb>2oÜ>#Åæ>2iæ>,•ñ>S§>}•>BÕ>$’>0 -†>¹Ó> -™>#^>eò>'¦c>2®>3=>¶+>'>”|>$Ç>?r>$ÉL>/,Õ>$c>fª>$oŠ>'‡W>)aŠ>1“µ> —þ>ÿ…>¢>é>‘p>”‹> Óâ>B×>*>_…>õ=õÐ> º–>&™à>,mV>Ôj> B>‘b>s=óƒ˜=ùÕÝ>*o>+bú>÷À> Ý>c>Ê>a>³>|Ï> Ó=ÿ+p> ’T>!þs>/qz>(v>C>&—Ž>!0C>•Ú>Íø> !> >yà>0@â>$öÚ>ê>FR>2‰š> -j‚>¸f>=׋ð=é,’>œ+>¿.=ÿ­Š>LÄ> Žr>3=úÍB>š>V>@u>ÈÚ>:Ë>1l@>”îÌ?…B?Ka?”ÎÕ?¶¬?¶]?›}v?A¬ã>Ón&>tæ>5tþ>¥7> -‹> >§Ò>©ü>Er> 0]> AB=æôh=çw=>Ô=û½>“O>•ö>Ö=ø >>ÐF>&¨> ”>‹Ý>)rº>)ðë>°&> í>c§=öç=ó)µ> -~?>}z=öP> ¿Á>ãÉ>Þ>±Ê>ª>°=ü{ž>°> -0>(´´>C~Ñ>IF>9âw>]6> -÷à=þ§…>#«>•=é:=÷„°> š>þ.>‹Ã>_U>¬ª> 0š>HÈ>"t¨>×ã=û[:>ÖÚ>0ä>>Å>b> k>%ÒZ>6Àˆ>8l*>:ª>#á<>·Â>ß.=èV²> µ»>·›=ÿ¾0>öK>/E>*þí> -è•>(c>D" >`+â>{

    PhÓ>>_>>"¼È>>>!³9>[l>Ú>$ýt>>£z>%>k>ÖC> Ö>/ON>G€>/ ø>/EF>/>˜s> ]2>s†>ç¾>r> àÕ>(l>(ÉI>oâ=þ®> Ø¥>Þ> -ú>$Tô>#;>) >:»Ö>)]s>ë5>)GÑ> ‘Ï=ÛnH>º>e•> Žò>*)j>(Œ>:•> -Ç>bÝ>ȹ>—>-±>ر>*Ò>IZ=÷æ>kÁ> À> ¸>@Ö>—j>6 ->eÁ=øäý=×Ó8=òJØ>Àr> ý®>`Â>Fæ>‚Ð=è=ã=Í{ë=Ü<è>¿â>ì'>sà>ùª>ÏŠ=ü r=í¤»=ò_ª=Ú =²_=Ïæ…=ýku>a#=çΛ=ù˜>ýÈ>%mW> -!^=õ(€=ô\=׬Þ=Ë`v=çzË=èð=ñ>> YÂ>·²>þ^>”5>)âë>"Р>‚=þúè=ï7h=å@ =þž>ê=áL£=áE>lù>Ñ>"qN>àö> o6>qz=ø”ë=Î1«=ÈU=×'^=û -€=ÿ¡U=ð6N=é{C=æ=ø™µ> -¸`>£*=è×’=úÞS>UØ>RÒ>ìX>º>µ>uk=é—:=þðh>&Y–>-F">ä=ûdÐ=òýÊ><¾>Û¼=åc->“>J]=ù­0=Ùµ>-@>ÊW>Ÿ=>%>_î>ðÎ>!V½>…c>k>.N>_®>`n=éÆÀ=åÓÆ> ú>!R >¶>æ®>#¢>&Oá>!p?>÷ò>~Ü>Xr>y½=à+%=¯?–=Ô~ª> ÀX>‚=ìz=ÚÆ=ÜMþ=ûF.> B>î†> v²> dJ> $>8ò>9`>4h>²*>Ã>º>j> ´Ñ=û|å=ô…v=ãè=÷Í>9N> ßv>$>$¡>J…Y>¸3Z?:ñò?ÀÔ@-Çþ@lÒ&@ŒŽ@ƒÚ@Kà@Þh?`ê>÷¶K>v¾>8Öñ>%Éá>Ê -> ->ƹ>ËÈ>™>Ÿ=ñ4Ú>þ^>¹ù=ô-º=øá­>CÂ>ƒ>ÿ™>{=þ)R=àQ³=Äž=þ™J>hº=à~=æiK>X=ï·ª=ä,¢>S>è==í÷=ù‚Ð>¸*> s¼=û¶€=ÝÛ&>…ä> S>Ï>"ºÿ>?V>ùÆ>9R>o—>¼c>!ÝL>y> ~>zÙ>áY>pƒ>Öå>)F>.Ü>;£Ü>´>#9À>+Û¾>F¢> >{\>¨>y{>ïA>6î>+}>~ˆ> çX=îÑE=ßkí=ùær> º‹> Ñõ>åz>+³f> ½ê=öm=äFº>_>î§>¬ü> ³Û=÷Àí>í=úG=èIU=úäª>E>•A> -·¯=øS¾=õ™›>Ó>õE> Em=ñ#r=Ä·=ÓœÅ>·§>y8=úòZ>æÈ>ìS>%B>Éð> Z>‘ã=àðs>ùî> mq>iä>ƒv>xá>P$>Ìš>ý"> ¸Â>¤">½^>"ñ>!4j>!S>'¼¡>¼¤=ä]@>à>r>er>¤Þ>s >b> tÑ=þc}>V#>c*> q">‚a=ñ‡=í¹0>`\>f>ÞÉ>"C•>$ðº>* > âq=ýûø>í¦>ûN>!Þ>!8®>>P>%À>æ²>.Z>'E>")>2ž¸>5lù>%”ß>ÊŽ>#ØJ> …&>‹›=ñª=ô>V:>R=ãaE=ç¡S=ôŸ+>ë">±Ÿ>»ý>i:>`ñ=¯Æè=Ú´>/ª> Z->{>(D>*'=ÎÆ0=ïa>hC>|;>> h=üÒŽ>§d>#cK>-iù>&Ur>/•‚>5‡$>.~Œ> †>[>CÌ>^On>=‹">5,Æ>6ˆU>1X†>§Ž>#îë>;b>ët=ú×µ>ÃÔ>ß>CJ>CrM>E=§>Q6h>N<`>pj>|">²h>%Ss>*]=>*#Ú>'Úz>%ýø>/I@>1–B>$Rã>#Âm>*‚>'f>'Hs>.(˜>1ƒ:>1À>9$>H*:>h‚ë>jW¶>]ŒÎ>< g>/S_>6«µ>/¦>!4ÿ>3E>Ø'>(Dk>"¢#>–>>Ù‚>†> -¢Ž> Í@>z™>[(>¬Í>Â> $>3ÖE>¸>Ð>1SÏ>B“>BÌ->E²ë>I*>I|>7÷™>R>)rm>3Õ’>&@P>'Î>l@>,MÉ>1¬g>³=éy=Þ[Š=¿g¬=°Ïm=ÏH=Üô³=ì0Õ=ÍÃ;=·õ&<äàM= -ò=ž{´=Šrí=iDš<àíj=Ð^=žŸm=e=ŽLý=¬j=Çî=8= oÒ<¼’"<Ö­³=b&e> ï÷>­©?Fz?©3ƒ?Þ| ?ïúÆ?Êæ?ŒóŽ?ï>N)n>)Y>$·B>(\r>,%>’GË>Õ*X?1×?"Ê&?¢î?#&R?*8«?#RÁ?">v?ägÕ>TO==Ôê=©ZZ=—í=…)Ë=‹TÀ=•Û=ßÖ=óš–>Jœ=ש˜=½zP=‹|÷={wî=MX–=EáD==³>=8ò$=nˆè=ž==¡¸?=±$o=ÏÄ=؈°=âY=í( =îÜ=ç4µ=ß® =áXÃ=ðö@=ø«}=ùôf> '> £>'{> å©>L>tÂ>%Ó>/Uð>6‡Ó>:—>I-¼>=~ï>% >!·>*uì>* >-qß>6ú>Hêz>Qêó>30Ï>(c‚>4>=‹>Ke÷>1|ì>*lˆ>)è$>4Ä>4Q§>'‘‘>'®>-|>7‘8>JþÒ>ZÃ>?Š–> Ÿ>7>—E>Š³>ùK>ÿ–>lŠ>%‘Ù>)ǯ>fu>®0>0!§>0>./Ò>3¤>-(Ö>.ã>$M¯>'!š>b¿>±>xé>¹È>–Ê>@éî>@ž><õ=>H0^>>þx>ž’>£¶>%kw>u÷>Ћ> ñ*>«œ>ÂA>âæ>#ÅÐ>)Ñ8>½ >ÉŠ>%á±>C„> MF>+ø)>z2=è>»> ~ >a'> ›>!gê>7,%>2«S>.ù³>%â†>.±¶>5gÏ>&K">ˆD=ô“>˜b>2yÿ>?ÉŒ>7·>)eŽ>9_ë>=õš>0 |>+âÜ>&S^>ê>_Â>¢ä>zà> Å=úþë> Ÿž> Ðt>* ê>0ü…>3r°>* ¯>M²>õ:>ª~>,ˆn> ^ú>z>ø>C´>(í>u£>$N>èš>׸>Æ>4±ç>,þ>!Úˆ>+”z>*)>S$>Z>†O>±Á>ñb>"^ƒ>ÈÓ>‘B>ì†>ê2>h> _á> ¤s>F|>Þ4> Šƒ>0>”2>ú>‹O>6U>è>hš=íö0=÷%>NÇ>«z>#Í“>5© ->_b}>j\&>pk>Vi~>PÑ>H`g>5³>)`–>îÚ>×&>»>!“Ó> &> Œ¦>ÊN>ü -> Ò>Ò‡>E’S>˜ð8?PdÈ?Ë›Ö@ã‰@Hqy@]€%@j¥5@fÊ@DF‘@¦?ù¦ë?^s>´Á5>aÆÐ>*ÃŒ>­î> Ãâ>‰Š=öÂK> 8’>2+">w>>qï>¸u>"h`> —š> -bO>/>«Ø>(+z>!í\>½á>.#>å>¼>î“>Z>6>˜¶> A)>Í6>#þ>é„>";>)TÂ>$dÍ>,+~>4´Š>5øV>&õ’>š>#[‚>%)ì>N>!8>,ðD>Ž‚>y×>>r>Kv> <>ås>Ïç>Dö>>%Ó>õ=>”ê>#e>Sf>#º>&Þf>9F”>%º¾>*.>1¢>7Øy>3Ñ}>.%&>.ã>(©>!cô>1>µ>åP> ë¢> - Ú>w9> zŽ>º>!N¨>&%î>&„>`Ü>ï¹> ú>ƒâ>ñŸ>"d^>Šh>t>Äæ>ë>>½>9ª>ÓÎ>Û> `º> -<¸> ->Fª>[A>°‹>#K> ¾>ð\>pÆ>ߘ>„?>9f>@>z>Šº>O>öS>¢s>r;>á>'>° > Ì@> ø > _,> -">Ó’>±F>m>Þ9>)d>2é>2€.>)ôœ>çâ>™ª=ûP> æÂ>¦>¨|> ->¶ö>î>§> æ>R>Ú8=ût;>“C> -‚Œ> äÆ>N5>"² > Ë>3.>'ô±>#å>kÇ>†¸>Kù>ax>ûá=ùŸ¾=ñÿâ=ÿ¼x>í=>oÚ=üî»=óË»>áU> z>–ö>"4>Uç>j>6€æ>5Ú >—$=ÿ=’=üX»>$ál>>=ÿ»}>Ž>hÈ> ‰˜>Óæ>þÍ>;>š ->A“=ë -å>U`>¼M> öz>?>U²> 8>F > ê˜>™Š>ôú> >n6>LV>^Î>'ý>19á>¬æ> -µ>æf> K>hÃ=ñ.>@š>Õ7>nú>÷e>2> ¼>öê> Þ >\ë>[B> º> D1> ÅŽ> K¡>6U>(9> úl>ó>*B>@À>3þÞ>&ï>$Ï°>"I…>œ->>)²>q> qz>$÷Q>'/>OE¨>Y‘>=½´>AÐr>E€a>EC>H‚]>Qr>tØ>µù>¾Ê÷?+Ä?3+c?xx ?…×ò?ƒ)Š?M¶x?H>Ën>–25>f÷î>7>%¹*>ÿ> ™>ªø>œK> –> Wß> b†> Tú=þB>„Ð>Z >>sö> …Ë>}Y>v–> ê‹> ·ö> Ï+>­U>öŠ>'Ô>qÿ> -u¾=ÿxˆ>š> }l=û9-> -Û>.î>† >Mª>¼~>§R> ü>(> N> Îõ> 0>C–>jã=ûYb=ñ)v=ùuø>ÛÕ>ù>Zh>8Š>F> ±é> åR> ¢A>ÆÒ>Ù?=ã˜P=¨‘4=ûô¸=ñS=Ý¥x>ðU>cm> †=ñ?Û=îß#>Í>Ô#> -Ùñ>bm>ï¦>C>*ê>˜õ>&þ>çm> u±>ý#>E\>Çæ>,7c>,!È>.yh>-ÄZ>$É?>ÂÇ> L>§a>)£$>+Í =ÿ‚@>&F>CÌ>Q!>Â.>eÿ>G>¡ð>?Ž>wU>æÒ>g†>%Æè>.Ì>?}%>:­Î>1K†> `¢>ºú>Îö>‹Ã>05>#N>r²>36> Ò§>"Ø>/²>ìÑ>@´>žh>R„>Oœ>"Þµ>#Ö ->²>È»>”Ó>Ä>=D>DÖ>éh> p>[l><Ö> ýá>!z>#øŽ>%z.>)>¤ƒ=õå¾>k> vþ> Œ}>60b>,K> ¸>!$ô>$_Þ> nÙ>0Ø>ç]>'èÃ>%wã> )é>>!©R>%Ï >"ˆ>é&>®¾>Q®ë>¿¿‹?Y$ ?¢|Û?È‘F?È?º?5?IÖ>âÞå>Zˆ#>&Qð>&ÿ¹>.þ ->3Ÿ>-i>d>m0>Ò–=û9H=û ø>þÒ>k>µ—>ÁØ>UX>I.>ÿÂ>ÿÕ>É>d=ýœþ>6¯>VÄ>.zÚ>/lR>*¼×>("ž>%\û>-–r>:§Á>4Í>(¯‹>"­|>>$æ>&x2>+åâ>$‹4>>ž>+È>"R¸>‘V>—–>jI>- e>8Ú´>.ˆ>5Õ6>7¶~>"ô>.UÌ>9/><¾G>:gÏ>0øh>_>!0>"ÇÙ>ò>!WÁ>+‰>/¶ù>#‘E>,§>7ì>~z>)å¦>6H>c ->Ø7>:c>.­,>7dË>>w>9&j>=>GiJ>4ø*>3ø>?­ú>6‚¡>3ãx>7j«>)Ð>$üÖ>)&<>#)Â>é>ý#>T.>ÇÙ> Ü>ÒR>HR>B:t>Hóº>?ä’>+Ëø>4¢ï>0çA>*Õf>:)>. -ô>P`> B>N™>Ù=ýJe>c¢>R=Ù§[>H@>¶ý>[.>$DF>2†w>*­ ->&…Ç>#É1>#ó5>ÄB>Îú>:-¡>,Àî>#x*>!Ÿí>2è&>@„>;Šø>6mÅ>/:V>%0e>9!>­>&[Y>$\¦> ¨ñ>LÄ>éJ>Ò>#à">-#)>#Ï‚>‹8>x>p>èÿ>%k*>.º>1`>&¥¬>'­õ>*I)>$ -Í>Hž>±ú>°>Væ> å><î>$]>(Š> ¢>!RV>(Ǻ>'úã>$´x>–b> !&>ùÀ>¦Õ>'Ò=ý¹>þä>ªñ>ù|>vã>´G>öª> -7h>n€> ú>ã>è¬>!–p>"ì=>!ê>!Þ9>>@3># > €7>×t>“â>$A¢>L>>x> :‘=÷ˆ> Ìg>ƒ]>o>6pæ>/õ*>*EË>/÷X>6ǘ>;_Ò>5$É>&þº>"6w>*Šv>`Â>°ª>2P>+£t>(D>"ú¿>GŸ> ,´> -žç>w>%>wÚ>*G\>:šö>4ï_>(4&>!{C>TM;>—ü­?OÕõ?»šþ?ÿù5@ -zU?ú9n?Ý­?œ}d?Þ)*@á­@óY?í¸?»$?œÛ>›Xx>>g >)x0>+ö‹>4ïü>9yÉ>$$>Ð?>'Ü·>&±ñ> À>Óî>3I¹>Cß>R‡Û>a¶€>oò>uÒh>s–v>j“Å>WrÀ>?ª¦>>#Á7>"Ž>Hf>¢—>D>>:–>#è`>*ZÕ>.ö&>KÛL>DÀF>6i^>é>t¹>z>%š«>Õ„>ÜB>M«>-t> >ô*>c> 4> ’™>{B>sÎ>³ï>-Ze>2gC>2ší>9y>;o>:¹%>-¦>1¼P>9¶/>>•&>'4*>µ®> /9>3ö>êZ>«œ> ¸Æ>u?>±4>óF>‹¶> -Ê->‰<> -g¡>$©>ªÊ>C> F‹>/¨>-b¾>.qR>+È>ï>«>,”>ä->D>\>¥> -9q>•)> -p"> «?>~&>…T> ‡>d.>À†>Ë1>*ùò>((=ÿ€=ò1Ð=þfÖ=þÚ=óLc>½ã>"ŒP>"¾Å>AÍ>],>:>>ô>>P>åB>,/ß>1Ä/>0w>)ŽY>#ó>?>Ù_>8Ö>2¹>­>YS>"E×>$C>& í>0¥Ô>-Îv>g—>k>"6>7ú…>2ª>)w>#ë>'/Â>Mí>[tX>\õ>Iy»>AèX>A‹=><ÿ:>:ªú>1_>>+ e>Cé>16º>*1‰>B)>2ÿ >(~>+–>=c>9Ø ->3kº>I~^>Y“ˆ>Y0>EâX>Gò}>Jèá>RÅ >\!å>\9Å>M9><_r>+µP>-R>7þG>;®%>M›ó>N£Þ>3`^>1Å*>&ó¸>²«>&‡n>/½Ì>2æ:>0å>5Ph>(.>° > È >!Î>.­ö>æJ>ÑI>L>åu>3ð>"í‚>,Ž> 7ø>Kâ>-»‚>40Ï>'uŠ>(Ì=>8’a>-û>$ûÆ>ÂÀ>U> 2d>¤¹>C™>3‚>‡B>FQ> °>õº>P>JG>ôØ> ĉ>>(«÷>)mK>/Ií>Ú>X”>Z>RŠ>µ*>>è>#µ>,η>/÷Â>%–Ç>¡Ÿ>·À>)ßq>'~5>À>±–>,ú >-”> €{>z(>(ô7>0ˆÞ>,ÑÁ>äá>Y'>š7>ÊÈ>,ÑB>%Õù>=¨>¢§>Œø> -×>¨,>‘s>X¶>š> ³n> R>g$>¸ä>"Fè>=t]>FkJ>? >*#î> x>ÊŠ>;î>ïä>¦>ŸÚ>ìœ>²>o >ÜŠ>3u>+bb>&½ù>$lf>”È> -IY>‰>$±”>·Ó>1Þ=ü5>=Ùµ=܉¾=üÂè>°u>Ñû>Ò`=åün>}Ö> f^> ¸6=ÁÀ>sù>Tï>‚>ß>ïè>/so>AùD>/΀>£f>"Öš>qö>«Î>ž„>àï> ˜->>f >Å‚>1 1>1\É>¼½>ÇÞ>ëŠ> &>Úš>ä>”Ð>E>%"ž>jJ>«1>-Š>Œ–>"Ùr>/Ù¦>'0>,”–>8`i>0.c>Ìø>#ÏR>°> iÃ>&»»>qV> ò´>Eç>z>,Ur>4¶¾>*=Ö>"Ô²>$(‚>)K>+)ª>'hh>%¾o>+U„>)Dæ>#k¥>)oê>0ØÝ>&X>}>—ª>•r>T¨>8­>¯„>¬§>2š>4À>8››>F K>>–â>=[>>š‘>B6ê>Uã+>[a}>E—>:ë¯>Bî¯>Díp>T]">H€>Mã>e‰æ>;tÚ> ž>„e> ðx>Îó>’T>Ž~>>hæ>I»>E?>CGa>H“O>gSH>h¤>P·’>E*_>?1J>)MØ>iÿ>ûO>ò>)Èò>,¸Ë>)šÆ>q‹>O>7>#¹§>ëÄ>3 >#tý>)À¹>œº>Är>*Ö×>#}º>,¶>æƒ=÷š®=ó=ü[0> -?>ËÆ> ƒD>yž>)^>_-=ãb£=öÎ>Ÿ*=ùl¨>ù>ö~> lÕ>$z>;ì>4Ú>/>>1¨Þ>" ^>–¦>ºc=úý> Å@>"Tr>(îè>{ ->~[=ðOM> [±>¿>9]=îÝz=óNÞ=ý¦€=ò¦‹=é!F=ýO =ýD6=òZ[=øâ³> ¥T>of>è³>¿b>·î>w•>Nq>’‰>3R> o¦>¹:> eb>&ír>"n©>ºË>Ï¥>;®>ÐR=íŒ">¨>¥R> -†>K> .²=é">3û>Ž?>1€>Ê”>!â›>0c>Cª>>:ó>& n>$¾>*>!’‡>м>©>Ôâ>¹ >K>Ç?=ÿpû>Áñ>JL>&>¦>(=h>5»>2Ùó>/ö>0^>$Ñ>%zt>$( -> 1 ->æî>$Šv>/ø.>G®‚>MA¶>8d>:[É>Eq>É>r®>'©>K +>Ž·¾>Êád??F²F?y0?<?jVk?5³2>Þ¸*>žûU>_Á’>3ég> ÕË>·ò>B>“ú>R½>).>'¡ó>,ÌW>Ï°>5„^>@×>;Æ>/.U>¶>)u+>+Õº>&|”>&°7>%Ù–>” >*ئ>)G¶>)†F>2Ev>¿> '>$¿2>îk> ?«>âD>"QB>ÿÒ> %É>5™Æ>*»Y>4ì>7SŠ>6M>4R>2Q ->5\>47G>26˜> =d>ÌJ>'Xî>)±Î>5[><´>/‹J>.Ú1>1”h=ëÚ°=ú¸%>:y*>Wf>KØ'>0lŠ>Zƒ=÷8Z>Ý=ðg==Ö]Ã=Î=ùö>f±> )>’½>.(&>#ë>>ò®>'$û>L -><±¹>$+#>ný>1 Î>-ò²>7žª>;é´>&ª>óa>#Í>: >;…‡>4@ý>3±a>I k>:`û>w>ž&>7.>Ø®>'U‚>/+g>2Fï>[B>%w>0¹}>+u6>0:^>:>=C>*Φ>Ú>+>F>/]>*>ò>->2{–>(Úˆ> ;>(ð>:Cl>2¸>"¾>$R¯>3þÊ>SÛÞ>MòÒ>9>1QO>.CA>5ìº>9Ø>8È><Ìu>=kh>:®È>,(Í>PØ>ý>ÔG>1-^>2×&>%·l>1rÞ>,´®>!GV>)Aµ>—>Cw> éY>í>"á>>• > N>1Çõ>"Ðp>#iº>!õŸ> ¶>+ß> ">%(>+ >T€=ùCƒ>Õ>ÂU>-ñ5>+IV>¢P>!Ü>&Ôå>&/é>'ß`>3Tk>6­Ý>(&*>+ëà>1“j>.¾&>BS^>1ìè>+çø>;ÿ>9!ê>–x>Ü‘> ¥_>×ý>]þ>), >&9ð>HÙ>\>#P0>(˜l>ð%>cf>|¹>Ês> >-,¢>,Ï>3¤ø>Kÿñ>yÜ«>¬bS?e?ir?Ux?“R?‹?Im§>÷š²>ÅIR>÷YH?M®â?‡ a?eû?„_y?kÅF>ðÀ>>‹‡u>8d°>)þØ>!$>,>Ì> V>’>'§æ>oÁ> 1•>*ûÐ>>V§>C - ->%Oˆ>™9=íM=ÿ…`>{Õ>²«>;)>o">Ž>'²>ž:>›6>I–> 1î> ã?>!Ž>8c>,ªw>,׺>º¤>"´>uË>3ì¿>VÎH>CÝâ>3ˆù>,?>D&>Fgô>?¾B>.‘Q>"ä>%Ë>.î‰>1&z>(ÿp>þ=öú¦=×$ý=âÂÂ>ˆ?>0‰£>,u¡>„‰>”Ÿ>¿6>#E;>&£è>6åZ>D–Á>nÊ>Mþ>‹¶>,eJ>4žï>.Yâ>+âº>6l.>3›2> Å‚>$4>*–¾>$Â>âö>©Õ>-¤z>\¢›>%¿t=øþ5>•>#n>&gV>=ÀÅN>#>ç=öâ¦=øˆ²=øéH>Z> |>™â>-¥S>4æ³>+g²>Td> -ÕP>@>×J>ŽU=ùdP>˯>îò> JB>›®>÷>BÈ>&ÝV>¥ª>+‚> -µ> H°> í’> <Ñ>¨ > ž>ƒæ>6Í=ùs=ò>Z>">š†> J> -@³> ² >Æ>ÙT=þ¸ =ó°ˆ>ø>]®> 2¬>¡K>ŒÓ>9*>Ÿó>"Á>7.>3‹>ߣ>š>, È>3iã>0@>1 >+r^> ö»> -Ñv>>õà>%6ã>7¢>4h‰>„>,Øž>F%ß>ÊÂ> ¤Ò>)â¬>1E–>@æô>Jz>Hzy>ц>cÆ>,Nµ>¨°=øZ=ÿƒr>\Ã>þ(>²M>0|>:ÒŸ>:A>&V²>%ˆ^>1xÈ>-ºf>"†f> -ðú=í#À=Ì12=ø'¸>¯W>,½>è:><5>¢»>žN>%>€>‘:>j>þ:>W˜>!2:=÷ŠØ=ìç>Ýr>òl>'ud>F> S>+Iú>" sî> š>ç>1f’>9Æþ>5i¾>.W=>#¬I>â>> ->$^l>9“Â>@!>Ð>B> Ç ->8×>=Ç>&v>,Ó’>“È>OO>Š.> -L²>>d>'[‘>'¶*>#9ã>,Ãü>3µ*>-åg>+?>%ßw>%d> âs>Ÿ>¶=óÀ>B> ê=þc¾=ö²å>–>ø²>$5š>$/>Lš> ~j>W`>ÑF>Œü>C‹>†">û–>˱>'Ûã>2jB>&.> W^>Tý>sz>>iŠ=ú¥U>=>HÔ>à‚=å>=ÚNâ=Õ*X=Éà9=¸À.=®R¬=œY =R ]=[õø=+=/£ý<碰=ùÁ= ×$= e{=û<¸Aß;·Å»—IÞ»ÆáÚ;ž¤~;§ë«¼‡ËÞ½ -u½+ðÕ½j˜½# -½\õý|*¾½ z½Nï2½«½J‹¼Áš>ºÝóÅÆ=Ýëû>>&'?”R_?ÇUÌ?äîà?稳?íƒ`?õ¸x?ûtR?þÇÎ@¨r@P³@wš@A>¦@Š¶@ƒŒ@ZåM@€à@Æ @fg@ú÷@XC@ŽâÊ@æn@ŒTŽ@‹:Z@Š‹A@9Yü@.w@Ä5@¥®@o2@ D@"@çÄ@ #@ -Nf@ìÊ@åV?õX˜?âÓ>?µ,?$øž>(^ =üþ’=Ú#â=©kE=£zŽ=™Rª=ùÅ=ŒÓå=™Ði=Çñá=âÖH=Ìk=»ïç=»+Å=åÃ=öÛ=Ú>Þ=Ð*Æ=Ó–€=ÙÏB=Ù\Þ=×Ǿ=æV¨=ðÅ=é$µ=æ‚À=åÑr=ϯû=º3P=Ï?À=å\ˆ>§ > À">ÆA>ÌÒ>"€N>a6> ¢±>>p>a> *z>vú>%¶>1O‰>%ùõ>Ž¡>ÕÊ>$zg>,ÉÚ>']Ö>îÃ> -ø>s¾>-¥æ>+¶>iM> P–>´d>M>)È1>$l&>MG>×>%ý>-æç>0&á>*çü>&öP>%PÅ>22$>*‚¸>ÇÖ>Øî> ®X>ø&>~ >ê*>¿à>#ée>7‹ê>0µQ>!•_> Ä> ‘>×ò>ÔR>ùè>'vF>+·>¶f>X“> –>%B ->X>¹2>”>#Ön>%ÿ#>1ï><ÌŠ>EÎØ>C)ª>1‹>!V>ç3>×>Æ >ø”>%¸|>?\Ê>@ñš>,«é>,I>-«Ã>.‡£>-üÎ>- ª>%Eº>E>+÷>!ºÀ>+×Y>#$ú>ï†>N>N>-,>Tƒ>\a>æ€> Y·>çÆ>3X>‘»>' >bd>Ÿ{>_¶>4±> û>*-Ü>-ØV>¦ý>½->-V>%2L>-B>3ñº>*”=>> zv>&.>L>«–>.åê>6=->9F><­>6œÅ>2ù>7§a>(U‘>SÒ> -åû>!ü>"Ö>«E>¼Š>DÀ>ù>Üx>Ù>½¨>r>%j”>4íp>:x–>7QŠ>-‘>@ƒ>ðÏ>)&¦>+Ç`>­>%%‡>-|r>!øÝ>!Yü>$Ö—>.¶>3Á>¸>%¤^>;~2>Hôò>Kø*>9X>1l‚>(uŽ>(=€>'ƒq>!pZ>  ª>ay>¼õ>£P>9|>Áä>&>"Ój>>¼ö>-çG>1©->(ñÁ>*y>&K»>LÆ>²>'›é>æ>>é¬> þ¬>!×ú>#O‹>*“Ä>(Î> ^.>ÈS>°ì>’8>J¿>> >wþ>%µÔ>'>3Q> ý>?ç>°®>B9>!?>Ì>j=óþæ=òÕ^><4>F>¤w=ü<æ>>Ÿ:>7¹> æ>Žä> N­=ô>e>ÈS>·2=÷¢Ê>Óe>‡Å>">¥q> jr>;>º²>’³>n> -Ï~>ˆŠ>ʺ=ñˆà=û>1> Nm>iF>&é,>P> -†H>´†>°:>£L>zp>æZ>"cb>.ï+>5?>)‘h>/`ê>:²¬>)'>¡>Gb>Bé>œz>ì>> Üð>nk>!zD>&0L>*WÎ>„\v>±c°>¿¦0>ÉTT>Üñ¾>âÍU>â…ú>¼Vé>£.>tFú>B0_>'Í4>(þ>¼:>ÞZ>öÆ> Ñò=ùxs>‘B>z=ùœ>hõ>x >ž½>Á0>ò>I>$ùÏ>2@}>+…>¤Þ> ,Š>&"ú>)Ù>µ–>J`>ÇC>€…=õ#p>1F>¥r>²Æ>¼`>Ð7=ßxP> Þü>vÑ>‰!>M>> ù>"ò>‚t>GÞ>à¹>/E”>+]×>G&>r²>=òÎ>œ>òß>ä> ­U>œ¬> =ú²=ÛÛ=ìIF> -l> -ðò> -–µ> ÿê>î>\®>íJ>å"> Öø=æ6(=ä8}=æ½>Y<> e‰=þõZ> ]c>èM>6{>Æ’>ð”>$$Ô>'äR>+:l>,Í¢>'ò>|.>Þ> ¦¾> -?s> ¶Û>ÛÆ>3š>'j>z¨>þ>µ>#w½>ûX>òä>Ïj>{þ> - ->øB> ¼>>9ö>7å> ã=þÐø>^> -šp>Fö>Yû> ^>é×>²À> ¥ð>_Ö>ÂX>;ë> -">¹> ó*> e>sN>ãñ>”>k†>»"> ö{>=">^>6Z>> Ö> ói>‡æ>ãt> JÈ> ë`>S…>d(>*þ>->€[>3YA>-^>>ìv=ý@>ºe>¸N>³\> ð> -„> Ör>d>ÃO> å¯>tð>’>ô>.> û> Ø‚>~N=ÿó=ú z=ý¸K>§i>»e> 7ß>VC> Åk>÷æ>%}>E`>›>ùlU?f&?êf?Hß>ý“Â>}oý>.j[>ß>-#‚>CÚö>”c€>à“ã?H? cA?J¼>ب>‹m>2~>é¢>¢k>aÊ>ž6=ý -M=ü ú>gÚ>tÚ>bJ>Éc>ÿ[>K6>`\>&>Ž¬>_W>U>áÒ>yë>Âo=û[Â> -UÅ>–™>ã>X²> `Z> ‰g>´.=âp˜=öƒ:>YP> -±n>-Ø>Õü>.+>øu>Ó.> eI>£3=í·&=Æ[^≠>¾Z> U¹>Ú<>¥û>Ò†>AM>¤>Nr>µµ>Èþ>Ç>>O> -c>ˆ> ù7>'iß>"¬Ò>!k=û%>L>z‡>=‚>ê¤>.Ú>Ø¡> ¡>@*>^M>ú>¤U>H>ä·>§°>Ð{>!~K>#Áü>$ÃU>0)>¦Ï>D>2>×>Äb>ó…>*Ð">34ú>jÂ> æ>®³>ûf>'×¾>-'>ÊP>nJ>;šK>/mª>!nô>"9~>,JÆ>2Þ>0;'>-N:>+3ë>ö>.>©>'§Â>-Ì1>-Ù>W> ×F>0áa>0«4>0~">0Ë>/øÏ>/Êz>/Zè>/Yö>-³Š>(¢Y>,^.>0Œ> ½â> ùì>#>)ÀÞ>&!¡>½>Ì> -É> -ìÚ>\>zN> â>ÿ>!w¯>¡G>[¾> Q0> º> zŽ> ¸?>W²> -èÝ=÷›Ú>X¾>ÒÎ>&0Û>²>" ->#[>Œÿ>R>¾ >+§>8Ô=æQÆ> è&>¸Á> •¶> ]>>‰è>+¶>M”>Eô=ü¾>É> SÄ>Z¿>V>§Ò>I>€O>eú> J> ê> 5w>Qx>Š>%> -û>nU>*¤>& j>.>6ç>ìŠ>%–á>(SÑ>%0ˆ>ÊX=ÿà:=ñ$F>³>„4> -Šf>Kº>v!>À¢>…>ÊZ> -N6>¬ >F>´>e > _r>#U°>!B >¬ë>>g>ó®>„>v>7>fò> >b> hJ> ->=> -Þ>Àñ>×>$ˆJ>&hX>„þ>»b>ú‘> é|>Ï>>Ê>t>s€> R´>{> $º>ôX>b´>`¹>\Y> -ú}>ãf>nO> pq> r>d¢>0>zÖ>ö‚=úÉ=ß"è=ㆳ=¶CK=¶¼Æ=ÖXh=ÐdÆ=ÑÌú=â[Ã=ä">f>:ÆÞ>%;š>»&> óø>TH=øñà=ùA0> -½ú>ïT>‹&>­> ƒŽ=þÌH=ù«=òµ=ï(=ù¤£>d> -Qö> I>»b>)µ>·>n> 8Ä=ý+ª=Ü }=ÄTž=çh@>œd>->?ó> -:>‹=ñ¸­=íÓ–=öN†>Ú>åã>̾=Úpš=Ï;=Û5`=é;è=þ˜>üí>!UŠ>Øë>1x>!ž=ø4î> ”> ØR>MÜ=à~S>ó>C>‘’=ú—ö=ÿý%> Áv=äÿ=>1|>;!>øN>+è>S6> öØ=ø½C=í¡N>Ÿ÷>°ä=úOj=íÄà=ùòå>:=Õ•È=Ñ<-=Ó6E=âv=Ò“¸=Ìó&>4Ì>ûj=üe{=ä,º=äÑZ=êèî>s]=ùúÆ>ã¼>i=öÐ=Ù¶=îUz=ÒJU=Ðìš=óÍ=ðQE=쯥=ò²=öiÎ> ÒË>(î>Ú^>?Õ>é>²Ï=ö‚.=î1¾> —Â> ¬Z> -±\=óv>N1>%Ý=æ`{=òèè=ÿ‚’=÷T>¯€>‚…>  ö> šs>½~>·>Sâ>>I> £?>¸e>9á>©'>T&>äÛ>(΃>}X>âV=ð‚>ˆI>'Í> }î>J> q“=ù9"=Ò¾=ðÂÎ> -3š> Ê~=èûþ=Ù_à=âUn>(l>48æ>vR>Œz>†ª> y>%À>>*‘¥>,/›>Rn>d>Ë>#À®>.Ù8>7²>Àh>³v=ê¿š=ýŽ=öï^=ð$h=ó5=ü ë>²> FÆ>!ž>>=õì¶>[Ð>>x>Ô=ý¶à=ò…:>ÌŽ>.±>øÌ>~$=ýÀ -=òËÈ=ô¯¸>ÛF>o€>?=ì’H>Ú >)>ZQ>,¥>>6>- -ñ>)¥ò>&’Ì> ¢>mæ> ´=ö~>]=>$žw>&øE>#µ>Æï>õ>Ò¡> ­[>ªž=ðð}>¤z>¿®>Ù=ó2Ë=þY-> ó×=çV=ÔƆ=ؽ=Þ.â=ìî>j~>!Î=õ -=øX=ôÁ2> wô> ²Î>Âî> N‰>ò5>"~>> |>À)>Na>1¸Â>ú=à'û> Þ°>¯â=é×;=õë>Þ%>'/=ø9’=éin>@S>˜N>ˆC> §ˆ=÷±u=À”>^þ>(+->#‘>~V=ÿNf=é>c>#±º>`>=N>ÙÏ=óUr=àâµ>£.>*ê~>- …>,c›> ]>ØF>÷>3»>3:> :>Cü>¸>S.>ä’=øQ6>S ->Êh=çö=áBõ=ç0>­3> <Ÿ> "­>Þ:>E>X„>©‹>´ù>$¸u> T=ü ;=þY®>+E>$iÔ>µÚ=æË ->¥ñ>}¾>`$> (=ø\6=ÊÙx>ƒå> K>Èö>$Ì> '>®Ÿ>~ã>;È°>:Úü>˜N>-X>!-0>ÉÞ> )Ö>:> r > Ä-=ú‰k=È/;=ÒõX>PÚ>C">Vˆ>Múà>-…=â²=g¼þ=Sx=š~Q=ÏpÀ>»=¸M’=¿#S=ûh=äV.=¼¡š=‹vÇ=œ¬Ñ=ÏÖØ=æ¥ø=× ê=‘á²=•¶q=Øok=ƒL=vó‹=и>.hã>6t>(ÞŠ>¼>Èa=á À=«¨z=ÃN£=¯Ÿ>=ÓÝ@>¦'>-ú>7~>0 Y>$U=áû…=À8õ=ûb>\Ü=ê] =â³N=墂>·¿>4Ž>!×=³ÏR=ºÞ²=çÕ+>´> (>)ê>(®v=Ëæ0=b|ú=yN=&PR=)åI=-(=‰âx=0àü;£ž1Kؼó <Éû==¨3<<)N¼Z È»¢™0¼Í¼<è†Ê½e>¾D–¾u½¯ä‹½´gú¾O:½št½”×½ðΦ½Ãt;¼¥=½s‚¾´Þ¾:B¹¾­Š–¾éØó½ù{K¾ï“­¿=²"¿Išò¿`¹;¿fàå¿fFúÀU -²A(ŠAŽ¶•@…Ò?õàª?Ywº? ­E?@i >´A6»¹%U>8?Ø>ŽØ2>ßÒð>øAP>|ÁC>n5=>‹Š>fß>'Ë;>~2E>¸å¥>¢C=áRð»žZJ=—\K>Š´ø>…èÞ>\–¶>J]³=\Öj>‚§”>Ùª>ÍÓ>ûÝU@&Æ<@¹Cõ@ª£ž@JX¥@ ¨b@¥Å?Õ­Ý?Ó‡@b=Â@†‹Ø@ìÒ?¡D;@T$V@N7Â@!>8?´Áâ?ÚŒ?…<4?§gB@(þ@)E”@(ö@BÙ@8¾|Õ£¿‹‰‡>,í‡>Å®®>R[N=Oa=]-[=r½Ú=ŽM= þ=¤s‚=œ» = ÿ=¯ÍC=‡½~=“‹7=˜è˜==Ä=kø¸=–¡³=¿/6=Ž;G=n/À=cÃ=™‘=–è‚=‚£D=Z©à=ŒËÒ=š5f=×=Wßõ=€ÒÊ=‚Rv=pU•=eˆ=oÕ=iž“=T h=QöÚ=u;=€€º=„£´=“¸p=iÙ’=>B=BÝE=Q•f=‹µÏ=‰l3=j+ -=žMÍ=m'µ=;Æ`=eà;=…ß:=hË=C­=#}=xkÍ=iœe=gŒc=R!Ò=lù&=‡÷‡=™×M=”v"=¢C¾=£3Â=RÏ]=e¦=³ð=¥°Ç=ò‡=sªÂ=v¤È=– = =Ö=’i =‹jQ=?B=“¤¤=„#=j6=SÀ=†\>=†sÀ=…Ý=wTø=d`¸=Q$v=5Ó›=7=i=‘#+<¡*=3=‚=wõ=–ï=Ù –=’XÆ=?ùt=5·í=i>=uª-=‡s=¨Ç®=¡;b=´'=¿*÷=’‘=—=…/u=‡mÙ=eÏ=h›Ž=tOZ=v¿ª=‚Ø^=¢ï‚=¯ú±=ž3:=ˆ>=Š:…=„¥7=trŠ=iB²=}˜=—á=ªÉž=¤ƒ=[â‹=F>­=_Þ~=„è= -M=‹`Š=kQø=,\Â=RÝ=xF[=¯=¹zƒ=»Ý=§í=¦î¼> Æ>–±>£<>ø>i =ÏH°=:B=iB.=wtJ=Nôö=\’µ=‘‰,=ˆ3p=Æ:Ý=ó……=í5…=ëR=âÇÖ=§zÐ=$C;v6…=è‰=T73=*6=JWV=H=f4:=ŸŽ=ldê=uÏÂ=€)=p¥=0Þ=$ª·=%==-ÍJ=^Š=„ÒÈ=€Ä= Þg=(¦'=\sª=†OÎ=ŠV´=“·F=˜¡Á=kE="˜=Sþ£=ƒî=j¤®=*GÄ<ýk–=l`=+ñÛ=ZúÖ=ž#,=–¤s=péJ=Bk=%B=>4¦=H~g=D,¡=,‰»÷»{¼ êÂ;°¸ü<þNË=gö>}?.–k?s`Å>^}?×BZA~D‹@ó¦?ƒØ¾Äÿ ¿¤ö¿„˜.¿Ä¥=„G?N€H¾p‰=?váè?O(>UF5=‘âÅ>Q¶>qr¸>©¼º>ØÒR> þÖ=e…¾O3†¼¶Ï?Cù ?¾>¹:>xE¨>³9º>«Åê=­ý"=â5J?!dO?o -Ý?=Š>ÿ½š>gZ>Ðn+?šéê@8OÚ@»,Î? `î¿’Œ>†Ê?$6J@)@1ñ‡@žS’@ÓÕ¶@¡+Ž@‡Ùê>È}4?›sñ@œ•t@ˆ¿@Àyî@ˆ“F?à$º?Ô~@úLŽ@‡Y@„`Æ@x[ˆ \ No newline at end of file diff --git a/templates/fluxed_sky_580L.fits b/templates/fluxed_sky_580L.fits deleted file mode 100644 index 3e596ea0e..000000000 --- a/templates/fluxed_sky_580L.fits +++ /dev/null @@ -1,335 +0,0 @@ -SIMPLE = T / Standard FITS format: NOST 100-2.0 BITPIX = -32 / No. of bits per pixel NAXIS = 1 / No. of axes in image NAXIS1 = 32889 / No. of pixels EXTEND = T / FITS extension may be present BLOCKED = T / FITS file may be blocked COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 CRPIX1 = -3575. / Reference pixel CRVAL1 = 4694.54259 / Coordinate at reference pixel CDELT1 = 0.02949 / Coordinate increment per pixel CTYPE1 = 'WAVELENGTH ' / Units of coordinate BUNIT = 'FLUX ' / Units of data values DATAMAX = 154.480926514 / Maximum data value DATAMIN = 0.0398033298552 / Minimum data value ORIGIN = 'ESO-MIDAS' / Written by MIDAS DATE = '2002-10-07T13:36:05' / [UTC] Date of writing FILENAME= 'fluxed_580L.bdf' / Original file base-name MIDASFTP= 'IMAGE ' / MIDAS File Type OBJECT = 'MERGED_SKY1_REDL' / MIDAS desc.: IDENT(1) RA = 222.760417 / MIDAS desc.: O_POS(1) DEC = -23.49167 / MIDAS desc.: O_POS(2) EQUINOX = 2000. / MIDAS desc.: O_POS(3) DATE-OBS= '2001-06-21' / MIDAS desc.: O_TIME(1) MJD-OBS = 52081.1692485 / MIDAS desc.: O_TIME(4) TM-START= 14623.0704002 / MIDAS desc.: O_TIME(5) EXPTIME = 3600.002 / MIDAS desc.: O_TIME(7) COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT FTU-1.39/2001-09-26T12:55:59/Default.htt INSTRUME= 'UVES ' / MIDAS desc.: INSTRUME(1) OBSERVER= 'UNKNOWN ' / MIDAS desc.: OBSERVER(1) TELESCOP= 'ESO-VLT-U2' / MIDAS desc.: TELESCOP(1) RADECSYS= 'FK5 ' / MIDAS desc.: RADECSYS(1) AIRMASS = 1.201 / MIDAS desc.: O_AIRM(1) HISTORY Converted from: r.UVES.2001-06-21T04:03:43.070_0006.fits \HISTORY COMPUTE/IMAG comb_row = (row_1_5+row_26_30)/2 \ HISTORY EXTRACT/IMAG out = sky_580L_all.fits [4800,1:58\ HISTORY 03.957,1] HISTORY EXTRACT/IMAG out = sky_580\ HISTORY L_all.fits [4800,1:5769.86,30] HISTORY Converted from: ../files/sky_580L_all.fits \HISTORY \HISTORY COMPUTE/IMAG fluxed_580L = mergL/3.60000E+03*5.20000E-01/3.64000E-0\HISTORY 1*1*responseL*extiL \HISTORY OS-EXPOI= 41882 / OS expoId PI-COI = 'UNKNOWN ' / Name of PI-COI LST = 62341.612 / 17:19:01.612 LST at start (sec) UTC = 14577. / 04:02:57.000 UTC at start (sec) CHECKSUM= 'ZnT8gmR8ZmR8dmR8' / ASCII 1's complement checksum UT = '04:02:57.000' / UT at start ST = '17:19:01.612' / ST at start IMAGETYP= 'OBJECT ' / Observation type FILTER1 = 'FREE ' / Filter 1 name FILTER3 = 'SHP700 ' / Filter 3 name GRAT2 = 'CD#3 ' / Grating 2 name WLEN2 = 580. / Grating 2 central wavelen DATAMEAN= 280.038959 / Mean Pixel Value DATARMS = 1049.346441 / RMS of Pixel Values DATAMED = 251. / Median Pixel Value DATAMD5 = '55d28e987bfde0e0d4a3c0cf015e5d0c' / data MD5 signature PIPEFILE= 'r.UVES.2001-06-21T04:03:43.070_0006.fits' / Filename of data product HIERARCH ESO OBS DID = 'ESO-VLT-DIC.OBS-1.7' / OBS Dictionary HIERARCH ESO OBS OBSERVER = 'UNKNOWN ' / Observer Name HIERARCH ESO OBS PI-COI NAME = 'UNKNOWN ' / PI-COI name HIERARCH ESO OBS PI-COI ID = 563 / ESO internal PI-COI ID HIERARCH ESO OBS TARG NAME = 'PKS1448-232' / OB target name HIERARCH ESO OBS GRP = '0 ' / linked blocks HIERARCH ESO OBS NAME = 'PKS1448_DIC1_346_580_2x2_3' / OB name HIERARCH ESO OBS ID = 104112 / Observation block ID HIERARCH ESO OBS PROG ID = '166.A-0106(A)' / ESO program identification HIERARCH ESO OBS START = '2001-06-21T03:59:31' / OB start time HIERARCH ESO OBS TPLNO = 2 / Template number within OB HIERARCH ESO TPL DID = 'ESO-VLT-DIC.TPL-1.4' / Data dictionary for TPL HIERARCH ESO TPL ID = 'UVES_dic1_obs_exp' / Template signature ID HIERARCH ESO TPL NAME = 'Dic1 Observation' / Template name HIERARCH ESO TPL PRESEQ= 'UVES_dic_obs.seq' / Sequencer script HIERARCH ESO TPL START = '2001-06-21T04:01:52' / TPL start time HIERARCH ESO TPL VERSION = '@(#) {Revision: 1.1$}' / Version of the templaHIERARCH ESO TPL NEXP = 1 / Number of exposures within templat HIERARCH ESO TPL EXPNO = 1 / Exposure number within template HIERARCH ESO DPR TECH = 'ECHELLE ' / Observation technique HIERARCH ESO DPR TYPE = 'OBJECT ' / Observation type HIERARCH ESO DPR CATG = 'SCIENCE ' / Observation category HIERARCH ESO TEL DID = 'ESO-VLT-DIC.TCS' / Data dictionary for TEL HIERARCH ESO TEL ID = 'v 1.370 ' / TCS version number HIERARCH ESO TEL DATE = 'not set ' / TCS installation date HIERARCH ESO TEL ALT = 56.327 / Alt angle at start (deg) HIERARCH ESO TEL AZ = 84.086 / Az angle at start (deg) S=0,W=90 HIERARCH ESO TEL GEOELEV = 2648. / Elevation above sea level (m) HIERARCH ESO TEL GEOLAT= -24.6254 / Tel geo latitute (+=North) (deg) HIERARCH ESO TEL GEOLON= -70.403 / Tel geo longitute (+=East) (deg) HIERARCH ESO TEL OPER = 'I, Condor' / Telescope Operator HIERARCH ESO TEL FOCU ID = 'NB ' / Telescope focus station ID HIERARCH ESO TEL FOCU LEN = 120. / Focal length (m) HIERARCH ESO TEL FOCU SCALE = 1.718 / Focal scale (arcsec/mm) HIERARCH ESO TEL FOCU VALUE = -29.894 / M2 setting (mm) HIERARCH ESO TEL PARANG START = 99.61 / Parallactic angle at start (deg) HIERARCH ESO TEL AIRM START = 1.201 / Airmass at start HIERARCH ESO TEL AMBI FWHM START = 0.76 / Observatory Seeing queriedHIERARCH ESO TEL AMBI PRES START = 744.48 / Observatory ambient air prHIERARCH ESO TEL AMBI WINDSP = 0.92 / Observatory ambient wind speed queHIERARCH ESO TEL AMBI WINDDIR = 334. / Observatory ambient wind directio HIERARCH ESO TEL AMBI RHUM = 4. / Observatory ambient relative humi HIERARCH ESO TEL AMBI TEMP = 12.31 / Observatory ambient temperature quHIERARCH ESO TEL MOON RA = 53945.992333 / ~~:~~:~~.~ RA (J2000) (deg) HIERARCH ESO TEL MOON DEC = 222334.76394 / ~~:~~:~~.~ DEC (J2000) (deg) HIERARCH ESO TEL TH M1 TEMP = 9.58 / M1 superficial temperature HIERARCH ESO TEL TRAK STATUS = 'NORMAL ' / Tracking status HIERARCH ESO TEL DOME STATUS = 'FULLY-OPEN' / Dome status HIERARCH ESO TEL CHOP ST = 0 / True when chopping is active HIERARCH ESO TEL PARANG END = 102.519 / Parallactic angle at end (deg) HIERARCH ESO TEL AIRM END = 1.471 / Airmass at end HIERARCH ESO TEL AMBI FWHM END = 0.61 / Observatory Seeing queried from ASHIERARCH ESO TEL AMBI PRES END = 744.25 / Observatory ambient air pressure qHIERARCH ESO ADA ABSROT START = 24.03156 / Abs rot angle at exp start (deg) HIERARCH ESO ADA POSANG= 0. / Position angle at start HIERARCH ESO ADA GUID STATUS = 'ON ' / Status of autoguider HIERARCH ESO ADA GUID RA = 222.7138 / 14:50:51.3 Guide star RA J2000 HIERARCH ESO ADA GUID DEC = -23.58867 / -23:35:19.2 Guide star DEC J2000 HIERARCH ESO ADA ABSROT END = 34.6718 / Abs rot angle at exp end (deg) HIERARCH ESO INS ID = 'UVES ' / Instrument ID HIERARCH ESO INS DID = 'UVES_ICS' / Data dictionary for INS HIERARCH ESO INS SOFW ID = '$Revision: 1.93 $' / Instrument SW HIERARCH ESO INS SOFW MODE = 'NORMAL ' / Simulation mode HIERARCH ESO INS PATH = 'RED ' / Optical path used HIERARCH ESO INS MODE = 'DICHR#1 ' / Instrument mode used HIERARCH ESO INS MIRR1 ID = 'FREE ' / Mirror unique ID HIERARCH ESO INS MIRR1 NAME = 'FREE ' / Mirror common name HIERARCH ESO INS MIRR1 NO = 1 / Mirror slide position HIERARCH ESO INS OPTI1 ID = '1 ' / General Optical device unique ID HIERARCH ESO INS OPTI1 NAME = 'OUT ' / General Optical device common nameHIERARCH ESO INS OPTI1 NO = 1 / Slot number HIERARCH ESO INS OPTI1 TYPE = 'FREE ' / General Optical device Element HIERARCH ESO INS SLIT1 NAME = 'FREE ' / Slit common name HIERARCH ESO INS SLIT1 NO = 1 / Slide position HIERARCH ESO INS SLIT1 WID = 0. / Slit width (arcsec) HIERARCH ESO INS SLIT1 LEN = 0. / Slit length (arcsec) HIERARCH ESO INS DROT MODE = 'ELEV ' / Instrument derotator mode HIERARCH ESO INS DROT RA = 145102.5 / %HOURANG RA (J2000) pointing (deg HIERARCH ESO INS DROT DEC = -232929.999995 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS DROT POSANG = 0. / Position angle (deg) HIERARCH ESO INS DROT BEGIN = 151.834 / Physical position at start (deg) HIERARCH ESO INS DPOL MODE = 'OFF ' / Instrument depolarizer mode HIERARCH ESO INS DPOS NAME = 'OUT ' / Instrument depolarizer slide positHIERARCH ESO INS DPOS NO = 1 / Depolarizer slide position HIERARCH ESO INS ADC MODE = 'OFF ' / ADC mode HIERARCH ESO INS ADCS NAME = 'OUT ' / ADC slide position HIERARCH ESO INS ADCS NO = 1 / ADC slide position HIERARCH ESO INS ADC1 MODE = 'OFF ' / ADC mode HIERARCH ESO INS ADC1 RA = 145102.5 / %HOURANG RA (J2000) pointing (deg HIERARCH ESO INS ADC1 DEC = -232929.999995 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS ADC2 MODE = 'OFF ' / ADC mode HIERARCH ESO INS ADC2 RA = 145102.5 / %HOURANG RA (J2000) pointing (deg HIERARCH ESO INS ADC2 DEC = -232929.999995 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS FILT1 ID = 'FREE ' / Filter unique id HIERARCH ESO INS FILT1 NAME = 'FREE ' / Filter common name HIERARCH ESO INS FILT1 NO = 13 / Filter wheel position index HIERARCH ESO INS OPTI2 ID = 'DIAPHR.27MM' / General Optical device unique IHIERARCH ESO INS OPTI2 NAME = 'OVRSIZ ' / General Optical device common nameHIERARCH ESO INS OPTI2 NO = 3 / Slot number HIERARCH ESO INS OPTI2 TYPE = 'SLIDE ' / General Optical device Element HIERARCH ESO INS MIRR2 ID = 'DICHR#1 ' / Mirror unique ID HIERARCH ESO INS MIRR2 NAME = 'DICHR#1 ' / Mirror common name HIERARCH ESO INS MIRR2 NO = 3 / Mirror slide position HIERARCH ESO INS SHUT1 ID = 'TSH ' / Shutter ID HIERARCH ESO INS SHUT1 NAME = 'Telescope shutter' / Shutter name HIERARCH ESO INS SHUT1 ST = 1 / Shutter open HIERARCH ESO INS SHUT2 ID = 'SPSH ' / Shutter ID HIERARCH ESO INS SHUT2 NAME = 'SPHERE_SHUTTER' / Shutter name HIERARCH ESO INS SHUT3 ID = 'TSH3 ' / Shutter ID HIERARCH ESO INS SHUT3 NAME = 'D2L_SHUTTER' / Shutter name HIERARCH ESO INS SHUT4 ID = 'TSH4 ' / Shutter ID HIERARCH ESO INS SHUT4 NAME = 'THAR_SHUTTER' / Shutter name HIERARCH ESO INS SLIT3 WID = 1. / Slit width (arcsec) HIERARCH ESO INS SLIT3 Y1FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y1OFFST = 4750. / Offset in Formula HIERARCH ESO INS SLIT3 Y1RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 Y1MIN = 0.062 / Minimum slit width (arcsec) HIERARCH ESO INS SLIT3 Y1MAX = 5.572 / Maximum slit width (arcsec) HIERARCH ESO INS SLIT3 Y2FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y2OFFST = 4560. / Offset in Formula HIERARCH ESO INS SLIT3 Y2RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 Y2MIN = 0.05 / Minimum slit width (arcsec) HIERARCH ESO INS SLIT3 Y2MAX = 5.513 / Maximum slit width (arcsec) HIERARCH ESO INS SLIT3 Y1ENC = 10640 / Slit Vertical top motor absolute eHIERARCH ESO INS SLIT3 Y2ENC = 10426 / Slit Vertical bottom motor absolutHIERARCH ESO INS SLIT3 LEN = 12. / Slit length (arcsec) HIERARCH ESO INS SLIT3 X1FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X1OFFST = 2381. / Offset in Formula HIERARCH ESO INS SLIT3 X1RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 X1MIN = 0.087 / Minimum slit length (arcsec) HIERARCH ESO INS SLIT3 X1MAX = 15.752 / Maximum slit length (arcsec) HIERARCH ESO INS SLIT3 X2FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X2OFFST = 2307. / Offset in Formula HIERARCH ESO INS SLIT3 X2RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 X2MIN = 0.064 / Minimum slit length (arcsec) HIERARCH ESO INS SLIT3 X2MAX = 15.833 / Maximum slit length (arcsec) HIERARCH ESO INS SLIT3 X1ENC = 6548 / Slit Horizontal left motor absolutHIERARCH ESO INS SLIT3 X2ENC = 6479 / Slit Horizontal right motor absoluHIERARCH ESO INS FILT3 ID = 'BS4 ' / Filter unique id HIERARCH ESO INS FILT3 NAME = 'SHP700 ' / Filter common name HIERARCH ESO INS FILT3 NO = 4 / Filter wheel position index HIERARCH ESO INS DET6 NAME = 'Red exp. meter PMT' / detector name HIERARCH ESO INS DET6 CTMIN = 31. / Minimum count during exposure HIERARCH ESO INS DET6 CTMAX = 89. / Maximum count during exposure HIERARCH ESO INS DET6 CTMEAN = 56.7 / Average counts during exposure HIERARCH ESO INS DET6 CTRMS = 8.65 / RMS of counts during exposure HIERARCH ESO INS DET6 TMMEAN = 0.49 / Normalised mean exposure time HIERARCH ESO INS DET6 CTTOT = 202521. / Total counts during exposure HIERARCH ESO INS DET6 UIT = 1. / User defined Integration time HIERARCH ESO INS DET6 OFFDRK = 0. / Average dark background counts HIERARCH ESO INS DET6 OFFSKY = 1. / Average sky background counts HIERARCH ESO INS SHUT6 ID = 'REXS ' / Shutter ID HIERARCH ESO INS SHUT6 NAME = 'Red exp. meter sh.' / Shutter name HIERARCH ESO INS SHUT6 ST = 1 / Shutter open HIERARCH ESO INS GRAT2 ID = 'CD#3 ' / Grating unique ID HIERARCH ESO INS GRAT2 NAME = 'CD#3 ' / Grating common name HIERARCH ESO INS PIXSCALE = 0.182 / Pixel scale HIERARCH ESO INS GRAT2 X = 2048. / X pixel for central wavelength HIERARCH ESO INS GRAT2 Y = 2048. / Y pixel for central wavelength HIERARCH ESO INS GRAT2 FRML = 'ENC=OFFST+RESOL*ASIN(WLEN*GRV/(2*COS(ROT)))' HIERARCH ESO INS GRAT2 OFFST = 1215287. / Offset in Formula HIERARCH ESO INS GRAT2 RESOL = 15000. / Resolution in encoder steps HIERARCH ESO INS GRAT2 GRV = 0.0006 / Grating grooves/nm HIERARCH ESO INS GRAT2 ROT = 22.668 / Grating rot angle HIERARCH ESO INS GRAT2 NO = 1 / Grating wheel position index HIERARCH ESO INS GRAT2 WLEN = 580. / Grating central wavelength HIERARCH ESO INS GRAT2 DISP = 0.1 / Grating dispersion HIERARCH ESO INS GRAT2 ENC = 1378253 / Grating absolute encoder position HIERARCH ESO INS TILT2 POS = 0. / Science camera tilt (pixels) HIERARCH ESO INS TILT2 FRML = 'ENC=OFFST+RESOL*ASIN(2*POS-(MAX+MIN)/(MAX-MIN'HIERARCH ESO INS TILT2 OFFST = 15927. / Offset in Formula HIERARCH ESO INS TILT2 RESOL = -100. / Resolution in encoder steps HIERARCH ESO INS TILT2 POSMIN = -222. / Minimum camera tilt (pixels) HIERARCH ESO INS TILT2 POSMAX = 222. / Maximum camera tilt (pixels) HIERARCH ESO INS TILT2 ENC = 15927 / Camera tilt absolute encoder positHIERARCH ESO INS SHUT7 ID = 'FPSH ' / Shutter ID HIERARCH ESO INS SHUT7 NAME = 'FIBRPROJSHUTTER' / Shutter name HIERARCH ESO INS DROT END = 158.616 / Physical position at end (deg) HIERARCH ESO INS TEMP31 NAME = 'Iodine cell temp.' / Temperature sensor name HIERARCH ESO INS TEMP31 START = 11. / Temperature at start HIERARCH ESO INS TEMP31 STOP = 11.1 / Temperature at end HIERARCH ESO INS TEMP31 MIN = 10.9 / Minimum temperature HIERARCH ESO INS TEMP31 MAX = 11.3 / Maximum temperature HIERARCH ESO INS TEMP31 MEAN = 11.1 / Average temperature HIERARCH ESO INS TEMP1 NAME = 'Temp. blue camera' / Temperature sensor name HIERARCH ESO INS TEMP1 START = 8. / Temperature at start HIERARCH ESO INS TEMP1 STOP = 8.1 / Temperature at end HIERARCH ESO INS TEMP1 MIN = 8. / Minimum temperature HIERARCH ESO INS TEMP1 MAX = 8.1 / Maximum temperature HIERARCH ESO INS TEMP1 MEAN = 8. / Average temperature HIERARCH ESO INS TEMP2 NAME = 'Temp. red camera' / Temperature sensor name HIERARCH ESO INS TEMP2 START = 8.1 / Temperature at start HIERARCH ESO INS TEMP2 STOP = 8.2 / Temperature at end HIERARCH ESO INS TEMP2 MIN = 8.1 / Minimum temperature HIERARCH ESO INS TEMP2 MAX = 8.2 / Maximum temperature HIERARCH ESO INS TEMP2 MEAN = 8.1 / Average temperature HIERARCH ESO INS TEMP3 NAME = 'Temp. table' / Temperature sensor name HIERARCH ESO INS TEMP3 START = 7.9 / Temperature at start HIERARCH ESO INS TEMP3 STOP = 8. / Temperature at end HIERARCH ESO INS TEMP3 MIN = 7.9 / Minimum temperature HIERARCH ESO INS TEMP3 MAX = 8. / Maximum temperature HIERARCH ESO INS TEMP3 MEAN = 7.9 / Average temperature HIERARCH ESO INS TEMP4 NAME = 'Temp. inside air' / Temperature sensor name HIERARCH ESO INS TEMP4 START = 9.4 / Temperature at start HIERARCH ESO INS TEMP4 STOP = 9.4 / Temperature at end HIERARCH ESO INS TEMP4 MIN = 9.4 / Minimum temperature HIERARCH ESO INS TEMP4 MAX = 9.4 / Maximum temperature HIERARCH ESO INS TEMP4 MEAN = 9.4 / Average temperature HIERARCH ESO INS SENS26 NAME = 'Barometer pressure' / sensor common name HIERARCH ESO INS SENS26 START = 743.8 / sensor value at start HIERARCH ESO INS SENS26 STOP = 743.5 / sensor value at end HIERARCH ESO INS SENS26 MIN = 743.5 / Minimum sensor value HIERARCH ESO INS SENS26 MAX = 743.8 / Maximum sensor value HIERARCH ESO INS SENS26 MEAN = 743.6 / Average sensor vlaue HIERARCH ESO DET ID = 'CCD FIERA - Rev 2.69' / Detector system Id HIERARCH ESO DET NAME = 'ccdUvR - ccdUvr' / Name of detector system HIERARCH ESO DET DATE = '09-07-1998' / Installation date HIERARCH ESO DET DID = 'ESO-VLT-DIC.CCDDCS,ESO-VLT-DIC.FCDDCS' / Diction HIERARCH ESO DET BITS = 16 / Bits per pixel readout HIERARCH ESO DET RA = 222.76041666 / Apparent 14:51:02.4 RA at start HIERARCH ESO DET DEC = -23.49166666 / Apparent -23:29:29.9 DEC at start HIERARCH ESO DET SOFW MODE = 'Normal ' / CCD sw operational mode HIERARCH ESO DET CHIPS = 2 / # of chips in detector array HIERARCH ESO DET CHIP1 ID = 'CCID-20 ' / Detector chip identification HIERARCH ESO DET CHIP1 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP1 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP1 X = 1 / X location in array HIERARCH ESO DET CHIP1 Y = 1 / Y location in array HIERARCH ESO DET CHIP1 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP1 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP1 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP1 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET CHIP2 ID = 'CCD-44 ' / Detector chip identification HIERARCH ESO DET CHIP2 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP2 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP2 X = 2 / X location in array HIERARCH ESO DET CHIP2 Y = 1 / Y location in array HIERARCH ESO DET CHIP2 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP2 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP2 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP2 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET EXP NO= 7551 / Unique exposure ID number HIERARCH ESO DET EXP TYPE = 'Normal ' / Exposure type HIERARCH ESO DET EXP DUMDIT = 0 / # of dummy readouts HIERARCH ESO DET EXP RDTTIME = 45.313 / image readout time HIERARCH ESO DET EXP XFERTIM = 45.326 / image transfer time HIERARCH ESO DET READ MODE = 'normal ' / Readout method HIERARCH ESO DET READ SPEED = '2pts/50kHz/hg' / Readout speed HIERARCH ESO DET READ CLOCK = '50kHz/2ports/hi' / Readout clock pattern used HIERARCH ESO DET OUTPUTS = 2 / # of outputs HIERARCH ESO DET OUTREF= 0 / reference output HIERARCH ESO DET OUT1 ID = 'L ' / Output ID as from manufacturer HIERARCH ESO DET OUT1 NAME = 'L ' / Description of output HIERARCH ESO DET OUT1 CHIP = 1 / Chip to which the output belongs HIERARCH ESO DET OUT1 X= 1 / X location of output HIERARCH ESO DET OUT1 Y= 1 / Y location of output HIERARCH ESO DET OUT1 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT1 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT1 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT1 RON = 3.1 / Readout noise per output (e-) HIERARCH ESO DET OUT1 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET OUT4 ID = 'R ' / Output ID as from manufacturer HIERARCH ESO DET OUT4 NAME = 'R ' / Description of output HIERARCH ESO DET OUT4 CHIP = 2 / Chip to which the output belongs HIERARCH ESO DET OUT4 X= 4096 / X location of output HIERARCH ESO DET OUT4 Y= 1 / Y location of output HIERARCH ESO DET OUT4 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT4 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT4 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT4 RON = 2.06 / Readout noise per output (e-) HIERARCH ESO DET OUT4 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET FRAM ID = 1 / Image sequencial number HIERARCH ESO DET FRAM TYPE = 'Normal ' / Type of frame HIERARCH ESO DET WINDOWS = 1 / # of windows readout HIERARCH ESO DET WIN1 STRX = 1 / Lower left pixel in X HIERARCH ESO DET WIN1 STRY = 1 / Lower left pixel in Y HIERARCH ESO DET WIN1 NX = 2148 / # of pixels along X HIERARCH ESO DET WIN1 NY = 2048 / # of pixels along Y HIERARCH ESO DET WIN1 BINX = 2 / Binning factor along X HIERARCH ESO DET WIN1 BINY = 2 / Binning factor along Y HIERARCH ESO DET WIN1 NDIT = 1 / # of subintegrations HIERARCH ESO DET WIN1 UIT1 = 3600. / user defined subintegration time HIERARCH ESO DET WIN1 DIT1 = 3600.002033 / actual subintegration time HIERARCH ESO DET WIN1 DKTM = 3600.6543 / Dark current time HIERARCH ESO DET SHUT TYPE = 'Slit ' / type of shutter HIERARCH ESO DET SHUT ID = 'ccdUvr shutter' / Shutter unique identifier HIERARCH ESO DET SHUT TMOPEN = 0.036 / Time taken to open shutter HIERARCH ESO DET SHUT TMCLOS = 0.04 / Time taken to close shutter HIERARCH ESO DET TELE INT = 60. / Interval between two successive teHIERARCH ESO DET TELE NO = 3 / # of sources active HIERARCH ESO DET TLM1 NAME = 'CCD T1 ' / Description of telemetry param. HIERARCH ESO DET TLM1 ID = 'CCD Sensor1' / ID of telemetry sensor HIERARCH ESO DET TLM1 START = 135. / Telemetry value at read start HIERARCH ESO DET TLM1 END = 135. / Telemetry value at read completionHIERARCH ESO DET TLM2 NAME = 'CCD T2 ' / Description of telemetry param. HIERARCH ESO DET TLM2 ID = 'CCD Sensor2' / ID of telemetry sensor HIERARCH ESO DET TLM2 START = 137.2 / Telemetry value at read start HIERARCH ESO DET TLM2 END = 137.2 / Telemetry value at read completionHIERARCH ESO DET TLM3 NAME = 'EBOX T ' / Description of telemetry param. HIERARCH ESO DET TLM3 ID = 'Box Temp' / ID of telemetry sensor HIERARCH ESO DET TLM3 START = 284.6 / Telemetry value at read start HIERARCH ESO DET TLM3 END = 284.6 / Telemetry value at read completionHIERARCH ESO PRO QC STATUS = 'UNCHECKED' HIERARCH ESO PRO CATG = 'MERGED_SKY1_REDL' / Category of pipeline product frameHIERARCH ESO PRO TYPE = 'PREPROCESSED' / Product type HIERARCH ESO PRO REDLEVEL = 'PHOTOMETRIC,GEOMETRIC' / Reduction level of daHIERARCH ESO PRO REC1 STATUS = 'OK ' / Pipeline status of frame HIERARCH ESO PRO DATAAVG = 8.37963 / Mean of pixel values HIERARCH ESO PRO DATARMS = 488.626 / Standard deviation of pixel valuesHIERARCH ESO PRO DATAMED = 5.21129 / Median of pixel values HIERARCH ESO PRO REC1 START = '2002-04-04T08:22:31' / Date when recipe executHIERARCH ESO PRO REC1 RAW1 NAME= 'UVES.2001-06-21T04:03:43.070_stk.fits' / File HIERARCH ESO PRO REC1 RAW1 CATG= 'SCIENCE_RED' / Frame category of raw frame #1 HIERARCH ESO PRO REC1 CAL1 NAME= 'UV_PDRS_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL1 CATG= 'DRS_SETUP_REDL' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL2 NAME= 'UV_PORD_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL2 CATG= 'ORDER_TABLE_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL3 NAME= 'UV_PBKG_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL3 CATG= 'BACKGR_TABLE_REDL' / Frame category of calibraHIERARCH ESO PRO REC1 CAL4 NAME= 'UV_PLI1_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL4 CATG= 'LINE_TABLE_REDL1' / Frame category of calibratHIERARCH ESO PRO REC1 CAL5 NAME= 'UV_PLI2_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL5 CATG= 'LINE_TABLE_REDL2' / Frame category of calibratHIERARCH ESO PRO REC1 CAL6 NAME= 'UV_PLI3_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL6 CATG= 'LINE_TABLE_REDL3' / Frame category of calibratHIERARCH ESO PRO REC1 CAL7 NAME= 'UV_MBIA_010617A_REDL_2x2.fits' / File name of HIERARCH ESO PRO REC1 CAL7 CATG= 'MASTER_BIAS_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL8 NAME= 'UV_MFLT_010620A_REDL580d1_2x2.fits' / File namHIERARCH ESO PRO REC1 CAL8 CATG= 'MASTER_FLAT_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL9 NAME= 'UV_PDRS_010620A_REDU580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL9 CATG= 'DRS_SETUP_REDU' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL10 NAME = 'UV_PORD_010620A_REDU580d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL10 CATG = 'ORDER_TABLE_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL11 NAME = 'UV_PBKG_010620A_REDU580d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL11 CATG = 'BACKGR_TABLE_REDU' / Frame category ofHIERARCH ESO PRO REC1 CAL12 NAME = 'UV_PLI1_010620A_REDU580d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL12 CATG = 'LINE_TABLE_REDU1' / Frame category of HIERARCH ESO PRO REC1 CAL13 NAME = 'UV_PLI2_010620A_REDU580d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL13 CATG = 'LINE_TABLE_REDU2' / Frame category of HIERARCH ESO PRO REC1 CAL14 NAME = 'UV_PLI3_010620A_REDU580d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL14 CATG = 'LINE_TABLE_REDU3' / Frame category of HIERARCH ESO PRO REC1 CAL15 NAME = 'UV_MBIA_010617A_REDU_2x2.fits' / File HIERARCH ESO PRO REC1 CAL15 CATG = 'MASTER_BIAS_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL16 NAME = 'UV_MFLT_010620A_REDU580d1_2x2.fits' HIERARCH ESO PRO REC1 CAL16 CATG = 'MASTER_FLAT_REDU' / Frame category of HIERARCH ESO PRO REC1 PARAM1 NAME = 'FFMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM1 SVALUE = 'E ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM2 NAME = 'EXMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM2 SVALUE = 'AVERAGE ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM3 NAME = 'BGMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM3 SVALUE = 'MEDIAN ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM4 NAME = 'INTMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM4 SVALUE = 'Y,Y,Y ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM5 NAME = 'MTD2D ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM5 SVALUE = 'N,MED,E,A' / Value of recipe parameterHIERARCH ESO PRO REC1 END = '2002-04-04T08:23:16' / Date when recipe executHIERARCH ESO PRO DID = 'PRO-1.13' / Data dictionary for PRO HIERARCH ESO PRO DO ID = 'DO-1_14 ' / Data Organizer identification ID HIERARCH ESO PRO RBS ID= 'RBS-1_9 ' / Reduction Block Scheduler identification IHIERARCH ESO PRO REC1 ID = 'uves_obs_scired' / Pipeline recipe (unique) idHIERARCH ESO PRO REC1 DRS ID = 'MIDAS/01SEPpl1.3' / Data Reduction System idenHIERARCH ESO PRO REC1 PIPE ID = 'uves/1.2.0' / Pipeline (unique) identifier HIERARCH ESO PRO REC1 RB ID = 'UVES.2001-06-21T04:03:43.070.rX' / Reduction BHIERARCH ESO PRO ARCFILE = 'UVES.2001-06-21T04:03:43.070.fits' / Archive f HISTORY ESO-DESCRIPTORS START ................ HISTORY 'CRVAL','R*8',1,2,'3E23.15' HISTORY 4.694542590000000E+03 1.000000000000000E+00 HISTORY HISTORY 'BIAS_SUBTR','C*1',1,3,'3A1' HISTORY YES HISTORY HISTORY 'BACKGROUND','C*1',1,11,'11A1' HISTORY subtracted HISTORY HISTORY 'WSTART','R*8',1,23,'3E23.15' HISTORY 4.726952100000000E+03 4.764168480000002E+03 4.802004150000002E+03 HISTORY 4.840429620000002E+03 4.879474380000001E+03 4.919167920000003E+03 HISTORY 4.959480750000002E+03 5.000471850000002E+03 5.042170710000002E+03 HISTORY 5.084547840000002E+03 5.127632730000002E+03 5.171454870000002E+03 HISTORY 5.216043750000002E+03 5.261399370000002E+03 5.307551220000001E+03 HISTORY 5.354499300000002E+03 5.402332080000002E+03 5.450990580000002E+03 HISTORY 5.500533780000002E+03 5.551020660000002E+03 5.602421730000002E+03 HISTORY 5.654795970000002E+03 5.708143380000003E+03 HISTORY HISTORY 'NPTOT','I*4',1,23,'7I10' HISTORY 2715 2734 2754 2775 2796 2817 2839 HISTORY 2862 2885 2908 2932 2956 2981 3006 HISTORY 3031 3057 3084 3111 3138 3165 3193 HISTORY 3222 3251 HISTORY HISTORY 'NORDER','I*4',1,23,'7I10' HISTORY 128 127 126 125 124 123 122 HISTORY 121 120 119 118 117 116 115 HISTORY 114 113 112 111 110 109 108 HISTORY 107 106 HISTORY HISTORY 'SHORTLOG','C*50',1,3,'70A1' HISTORY Recipe log (Th, 04 Apr 2002 08:23:16): Science reduction do HISTORY ne. ........................................ HISTORY .......... HISTORY HISTORY 'REDBLOCK','C*48',1,45,'70A1' HISTORY recipe: uves_obs_scired instrument: uves HISTORY /uves/dfs_product/SCIENCE/2001-06-20/r.UVES. HISTORY 2001-06-21T04:03:43.070 { HISTORY /uves/data/raw/2001-06-20/UVES.2001-06-2 HISTORY 1T04:03:43.070_stk.fits SCIENCE_RED } HISTORY { HISTORY /raid52_uves/calib/2001-06-20/UV_PDRS_010620A_REDL580d1_2x HISTORY 2.tfits DRS_SETUP_REDL /raid52_uves/calib/2001-06-20/UV HISTORY _PORD_010620A_REDL580d1_2x2.tfits ORDER_TABLE_REDL /raid5 HISTORY 2_uves/calib/2001-06-20/UV_PBKG_010620A_REDL580d1_2x2.tfits BACKGR_TAB HISTORY LE_REDL /raid52_uves/calib/2001-06-20/UV_PLI1_010620A_REDL HISTORY 580d1_2x2.tfits LINE_TABLE_REDL1 /raid52_uves/calib/2001- HISTORY 06-20/UV_PLI2_010620A_REDL580d1_2x2.tfits LINE_TABLE_REDL2 HISTORY /raid52_uves/calib/2001-06-20/UV_PLI3_010620A_REDL580d1_2x2.tfits LI HISTORY NE_TABLE_REDL3 /raid52_uves/calib/2001-06-20/UV_MBIA_0106 HISTORY 17A_REDL_2x2.fits MASTER_BIAS_REDL /raid52_uves/cal HISTORY ib/2001-06-20/UV_MFLT_010620A_REDL580d1_2x2.fits MASTER_FLAT_REDL HISTORY /raid52_uves/calib/2001-06-20/UV_PDRS_010620A_REDU580d1_2x2. HISTORY tfits DRS_SETUP_REDU /raid52_uves/calib/2001-06-20/UV_P HISTORY ORD_010620A_REDU580d1_2x2.tfits ORDER_TABLE_REDU /raid52_ HISTORY uves/calib/2001-06-20/UV_PBKG_010620A_REDU580d1_2x2.tfits BACKGR_TABLE HISTORY _REDU /raid52_uves/calib/2001-06-20/UV_PLI1_010620A_REDU58 HISTORY 0d1_2x2.tfits LINE_TABLE_REDU1 /raid52_uves/calib/2001-06 HISTORY -20/UV_PLI2_010620A_REDU580d1_2x2.tfits LINE_TABLE_REDU2 HISTORY /raid52_uves/calib/2001-06-20/UV_PLI3_010620A_REDU580d1_2x2.tfits LINE HISTORY _TABLE_REDU3 /raid52_uves/calib/2001-06-20/UV_MBIA_010617 HISTORY A_REDU_2x2.fits MASTER_BIAS_REDU /raid52_uves/calib HISTORY /2001-06-20/UV_MFLT_010620A_REDU580d1_2x2.fits MASTER_FLAT_REDU HISTORY } E HISTORY AVERAGE HISTORY MEDIAN HISTORY HISTORY 'LHCUTS','R*4',1,4,'5E14.7' HISTORY 0.0000000E+00 0.0000000E+00 3.9803330E-02 1.5448093E+02 HISTORY HISTORY ESO-DESCRIPTORS END ................ END =´‚§=®x‹=ý¾¼=ôÈS=ôW¾=û´¡=ÜÜ =®Ì=¹w'=á‘=Ûfâ=ÒnÛ=æŠ=> 8> ‰ã=é¶ =ïY=úŸ©=÷ß=àkP=©qÊ=üÄ=è`=ØÕÇ=ÖC=ôWT=äßè=Þ4=ùþo=Ö~=LJ=¯àe>Ý=×a‰=Æð2=ë,=õ²ÿ=åùQ=Õ÷ý=ð©Y> #s>n†=ßÿ =×É8=íO=ð(8=íÀ=íæ=ñOt=ø¢É>O‹>ê-=ù¢&=ëåH>ú·>U=ãÞ8=ÅoÍ=ß},=ín=õÔ¿=ÿ_¥>X-> ->\Í=ì k=ã)>F>áµ>c«>ív=ÖúÙ=èF5=ó%=òÇ=ýŒ >c~>]-=ñ°> -> -óÇ=Õhî=ìf‰=ë<=Ýa€=¶Èõ=ý&}>i=î…=ÓÒ1=áÓö=ów_>)C>¢©=÷Ý\=î5z=à3ù=ùTÚ>6›>í”=ê¼ü=ùE> ª=úDƒ>¦5> º>…Ý=ï è=ú›e=ÿØ=ÞJ=é´=÷ª>©> ’=ý:I=ûÐ>šÙ=à˜>5>õá>Ç©>êy>À&>¬&>$3=üH=õ»W>¨¢>YI>„Ø=þ¸=ç>‹,>ˆh>ÄÁ>º>à!>õ>Ê=ëAu=ù.¸> ‰Œ>>2ê>/ˆt>7>Eà> Ên>Éà>+M=òeu> -lå>¢=æÒh=òº=òR¨>7>è~>Ý =ñVê=òµ> †œ=ÿâc=Ú™,=ón=þð=üðœ=öe=íš±=Ô)3=åîs=í\>=> ÚÞ>œ =ò»A=Ó=ö<á=úét=úse=í·²=÷ã'=û  =úN=Ò b=üƺ> ©=àå=ì´j=ûŸÍ>­á>†> \š> {w>l]>ÖG>ˆw>ܵ> -«=ë¦[>)>AÞ>¹B>V^=ý+Ð=ýˆ> ú>eÛ>ð>ý->}w> ë>!]>ù=Üm¿=Óïõ=ÔmX=Ý9=ö@„>+¦> p¶>ò”>…¢=ü-Ä=ökù=ö©’>?>!}>ì›=õ¢=ßĘ=Ûð“=Üê‚>Ht> ¿N>Žo>æ3=åÜQ=Õöp=Ø¿=òñ==òm=ú¼¢=ÿBô>6h=Þ¾d=ßZ´=ëÑQ=ÿ¦> ö?=ü¹Ä=ØÃq=äû=û—> -V$>øû=óòî=ë7`=Üf£=ËÿÀ=˵Ó=î*>;v>‘>²7>ˆì>¿=ËR@=â‡A>šG>”O>Óµ>z¥=ú;­=öÛa=ÿ=Ã=Ý!¸=뜴=ùùü=×n%>öŽ>v%>l=þdô=éý=ØA=Ê´6=ÕEî=ê)Ö=å"º=ÙûM=ð³=æO{=ã*=å¾Ê=ðÞt>n­>u?=úø=ï­¬>=ö ï=ÓJ¥=ÕÇ=ñÂÉ=ôfÖ=âê¸=ïÐG=çL%=óòÌ> d”=ã?=ü­>ïJ=ýAß=ý›Þ>¥ -> »8>Ö>P=þÏ>®°>Ù…>ô®=÷]&=ádò=Á~õ>¼/>äe>²>ñØ=û¢b>}[>½5=ð¿Ö>¤ß>Ò£>Ñk>wj>;œ=Ýd=Ì2}=Ô³“=Õž> Û6>—>ZÛ=Ï·±=í3Ö=øÁ;=õù=ûgð>ÐÜ=õÄ.=Òúì=߆0=ÖÎ+=æ1\>ÝM=ßIl=è2%=è2J=à =Å¿> èO>¸>rÞ>##Ç>(í4> -'=ÒÁh>óö=Í"Ó=ä^ì>×=óQÞ=öÂm=ì¿=ã¢ï=ù•þ>ò¯=÷ô/=äqÜ=ð!û=ø†>kÂ>V‹>>ϵ=þ(=öͯ=îcú=ë}@> í> wœ=ú$> ^Ù=ù=ú–]>žU=ÄÃ1=Ð.=ä}?=÷ºÛ=ìJ=÷ïO=ûS -=õúõ=à¥f=É‹p=Ü - =ê ™=â _=â7Ì=úY§>zF>O>>‘->,(>"zª>7…>·b>8œ=ðwö=âºÁ=í<¬>_)=÷ù=öÐ>Ô{>Æ!>`Æ>”Ã>o=ý¥>aW=ø–;=ÛW>7m>@s=é (=Ô¾à=ÛEÍ=ÁÂ(=Ç5=ÜGƒ=þmN=ÃE=æž =þ q=áü¯=û72=ðO=ð1 =ÿÁ>n=àe®=³#ó=—×¹=啃=Øß©=ÝÁ”=åÛà=ð8À=ãÊ=õ`ü> -S> +º> ‹A>›> éÙ=ó;6=ñì=âÁ=Ó°µ=Ødu>ж>l>Ä>{â>(=ý¥‹> §/>01> mg=ýñ´=ÿ‰Â>Qk>çG=ñð8> H>±›=ÿéÄ> -€>+H=ò²o>ºñ>0>ÚÔ>]¢>'é=õAâ=ô&Q=Ù% =Ø=âÞ\=ö½Ý> §9>>¾>UÃ> ->ÿ}> >å§>˜=ç6^> -oî=ù¥ô=âœ:>ã­>Ñé=ýÂ5=êG#>Ù> 3†>²>`[>+´­>þ >z>Ú·>>AI=ùèV>t¢>pY>%t>¨£=øk<=ïe_=ò•V=÷I7>%—>+åp>%‘> =öøª=Ï%¸=çfñ=úb=ýÉÖ=ÿ>>Áq>%­Ü=û{É=ø.¤> @>ïÑ> |> †Û=û†Z>m>ÉÚ>(Ú=÷ç=ü0M>ÜÀ> Â>"I»>Fc>*´>é>Z»>8xH>5á9>Hy«>Mð¿>'9ó=ûRr>+]>î>+> -¤½=øæ =ä¹=ï -õ>UQ=ÃRŒ=ÜD¬=ãó =â^Õ=âñÚ>0> ó>> nI=Ò™4>Ru>¿;> -¥>uþ=ü[v>Åî>þ[>'=ê"œ>3;G>&h¬>"Šì>Àn>6¦=ÝS=àKå=üÃ>ªÙ=Ô¢»=ßãñ=Ĉ=Ù©u> x‰>*ì>-í> ¼>HX>’{>ÿ¾=ïò=íÔ=úÈV>´Æ=Ð@=êu>P•>æê>O>+”¿>Fúg>;iÃ>ÂU>V4> -«>Ë> Ø=ûÛP=ÐçË=Óu=ð™S=õ?=òrò>)*=õ=ñ¾=ûÞ=ô&Ž>Û1>%>é>˜å>¼!=ÿ°> =÷Ê\=ÜV%=Åñ==èeÆ=ëJ=æ½|=Ý<=ësG> ¦:>7%>‰W><&>#è6=ænc=ùpÆ=ò;=òºð> ÙÓ> -<'> ä<=æ¯ =ÌŽ=ähu=÷àV=ù.ï=òp=þ×â>B8>+õŸ>.…>)p>+B>-x£>ØI>'ú>Ýë=ý:ì>Ðý=ñ¨þ>y>èò>>º=ü2>=î t>wB>pr>$A>4=ôÉi=×óÅ=ÐQØ=â+Š>_"> Œ=ü›%>ÐE>æ¢>§@>A›ù>Jœ>Aí>7CmÝ>$Ø>pË> %Ø=õžf=ÛÒë>%½>ýî>8u=ï"I=Ä»·>ª´=õ\>oº> hý>W\=Ù©g=ìp>I?=þT”=î =ôI¾>ðq>kl>ù^>Éz>rî=ùöõ>·ž>H‹> -t>Š~>Z,>z> ß>> š=ý =ðDU=ÐÝZ=Ù *=ÑU¼=Ç`l=Ýçh=û´_=õ ™=ÿˆ>Ní>×ó>lû>f™>ÔC=èÏY=Á¡€=¦“'=ñLR=ÛN=å¢>=êó=Å® > ¡í>1Ê=þÒÝ=íþÍ=Óðk=Èr¢=ºÊ=¹mØ=ÎNÌ=º=®=…hÙ=‹Eâ=ŸG¡=¾&ð=äÍØ=Ä©=Þ <=ªŽ|>Vs>$øp>?1>E[¸>a2>Z>ý8> b=ø®S=·Ì@=çõ$=ºqÇ=¸ì=Ì/"=ØF7=¿}v=Ò>é÷>F'>uU>!{C> p†>éš>U“>ñ0> ø=ØN¼=—Ù=Ùb°=Ê'è=½¿=ø0ë>w>)‡Ü>4>s>0ߧ>*r>%O6>÷]>¿¾=÷ÏÛ=Ï®Œ=«À =Ø¡Ã=ôy>I\> -MÖ> -¢U=ý¼=÷m>´ç=éïõ> -Lf>){=æÒD>U->@Ó>>uÔ=Ëê=µ>D=ÊON=Þ”½=Û)°=øM>> ¹†=÷cÎ>áŠ> ‹>Ì1=ï¹=ä± =Õªõ=Ü4K=õ@Ã>É/>(-=ù =å³=Õ{^=ÉM>–Ô=Ç÷j=²i†=ÆqL=ÖJc=Ý=ào]=ïv!=î!©>,Š=þ´l=ä·Ù=ï?;=Ø O=Ú À=ásž=Õš=ÿu=¿M>îû=ÿx=øØ=Ó—=ß ¢>Ê/=ñ”÷> ‰Ç>N§=ÿ~ =ëÔN=ñ…=㧂=ÉVÊ=ÎØ*=Ê>%ˆ>L·=ón¨=õH†=Ýï=éŸ=ñh5=äE›=ÃLù=ÈÆ=ç04=ÂϺ=áÿò>DÑ>2Ì>û¬>%s™>ì>Mó>*Š>§> ²=æƒ|=ù1¤>eh>ß„=Ë™¿=ô=ÛÕ8=Ûìš=ùÿ>^> -›¥>' o>8Þ˜> ‹> Û„>Ìu=ɺ¿=Öåê=Ã…O=“Žg=åËÕ=ꊚ>Ã=ò°ð>Lò>AÅ.>KO~>9SJ>'PÉ=ðá¸=Ô¤=êiÙ=ÛÀë=ÃJ=±=——ä=ÐæÌ=ëE=¬Wþ=¦ýš=®/ =ã1T=áÏE=Ѓ=Ï0î=µª„=Â?o=ý´=ü“o> -ÂÈ>ê2=ÙÉn=Óà~=Í—·=ü„ç=ÿ,=þ×=ßWd=õ|Q=ÿ =ªŽ=¿)m=Í…è=êúv>d9>{S>Í >ˆI=Ù:=Ýça=â.r=îòÙ> Cæ>&Ô=á^¤>ß=ó$ô=劼=áRì=ÍP®=åÇv>;>Åø=ôzP>ZU> {>k>Lj>-%=½¡=¢>Ê>KÆ>M³> V<=è²Ô=䔫=÷Ã=èlô=½ÂÁ=¥ü==}Ʋ=œ\á=û…Ç>ò„>@Ï=ç–Ç=´‡S=¸{=ËÜ=ãÛ‘=×’•=àK|=î»t>´¿> z =ôO=Âgj>WN=àÿ=ž´¾>->´¦>]†>CH>u,>ÿ˜=›"=ÚÚ‘=Õ«=à‡Q>f>Ø =åÐ=Ã×=“x =Ñ«>ÿ<>sµ=º4=É‚±=ÓD=ãÆJ=ã2r=Ôú=ÃÈ"=ÌÅ=á ´=é³x=ÓBÉ=ÔÄt=ܹl=ËÙC>V>h=¹U =±,˜=žb=Õê=Õà3>‹ç>+5>æ=ù¥M=×â(>®>#Zþ> ­;>)ìÚ>RU=èÁ‘=Ñ…=Ä{õ=Å•=Ü_Ñ>)m>;}>7†¤>+Ò>,0L>!¨=øTI=Í€Ù=~í=Ý2{=ÑN·=Ñüõ=Ïá'=Èi÷=ð4ë>$ =ࢂ=áSr=÷È>L1>(l >5ô>$}O>2¶>”=æš°=Ìîô=ׂ=ö¨L><=âÔ=È5>W=三>úÆ=ßI@> Dd=ÿw-=½l'=œ·m=¿•@=êÁ=¹Í=®´Á=¢Nb=ðî–=÷ä=áÍõ=¨Ñß=­™C=µr=Û-H=Öª÷=ô$Ó=íDµ=Ä$Ø=Ð<Â=Û•¯=Ò°I=ï6†=þ ¼=ýí¡=¿=¦ÿ?=»Á(>u2=ýy=ôݯ>Î=ûö>U=ëau> nª>Cû>ƒ‚> ©Ù>vL=èÜð=â5 =óÔ>=³ˆ=¸ýË=Ú!Ý=Ê®V=ËÅù=Ò"¦=Ýv‘=µPZ=®/½=Æp=ïò(=ëÛ=õ/x=ð!4=¨CÑ=½©t=òÎ>Ù(=ûŸ=ñúÝ> ±u=Úèº=Ç“=ë9=¾6=´Ô=½#'=èg§=Éb\=¹[Ë=×N=À ±=¹zW=¹ëõ=ê†g=ãa=Åæ¦>ƒC=ñ»=íÁˆ=Ž¶=¤<Å=¶ =±­Å> Œ×>j>-œ^>¼>D=ã³=è§=³¾¥=¶÷=Öùa=”=±œ–=çjf=ÙÌ€=¾{,=«}=çÕž=ÅY¹=Ûºâ>¹«=ü¨~=ûeÓ=õ§Ì=þ+­=ÈkÄ=æË>?>?ô> -=ð?c=ìkš>Š3>3Y\>M;>.3á> Ë5>Ô4=ü-=Ìøƒ=±ú?=ìn =ÓvB=Àý=®oQ=Ó‹•=Ñɽ=Ë©6=µE= -=Öð6=‰¿ü=^ =å›=óž§=¤½;=Úhc=þŽ³=„=«—=–Õh=ÄBl=à\K=õò$> oa>}*=ô =ç¼=¹Ò€=¢7q=®F=Îþ'>B#>m=>ÂÄ> *?>‰j=çjA=Ù9’=îQR> -™>¤>=›>yš=ýP>ŒÍ=ïè=ñÜ=öα=ÏP~>´'>> CX=ç­ê=Øæì=ϳ¾=ÚXÿ=Òb=ÜK>C³>D«>ý¥=Ûÿg=õD›=¿îª=3x=’Ö;=Ër=ÞDÄ=ç ¾=åèk=Ê‹7=È#=ò¨=çbå=Þo -=Óó=ºK=Üø =祡=Ç”™=±Xø=¸=y=Ç[Ü=¹ˆ=Ó/Ô=ìä>â0=ç!=à€Œ=∑=õ£´> >ø²>ñ9=Í´§=½%Q=·Yé=Ê®X=áD±=çé=ݨ¼=ã« =ìÊ=ür>K> -vÅ>Œ>|e>¬Œ> `W=õ£V=õsÏ> ŸM> TW>~>'§¸>{€>ga>§<=â'=è~<>‹^>põ> ÿk>Û=åÍ=û<¬>jò>WC=þla>·\>ÀF>ˆ<=ùë=è«÷=á s=ÔG5=ðn«=ò›=áþÖ>$â>=ôs¿=àÄn>Y„>!ˆ>DoÁ>cÃé>L¿ì>: >)­M=òO=èV=ë’ö=ìô=Ù1X=Ú©=êgö=ØFÌ=ãtç=ï« ->†>6›>ªr>(ÿ¸>[X> ¹=÷\¸=Ûl¹=ÿTu>Ù“>íž=Õ¨=è«`=ëtõ=æÎm=Î"²=ÝP9=÷e><’>«…>‹ ->§D=ò/+=ßåÏ=ç˜û=ý«*> 7=ÿ^í=ìçm=ß:¯=¸aÜ=Ìf%=ìÝ`>¾D>r”>‹Ö>z/=ü¸0=äÛ =ݾÔ=ð^H=ñQ)=ð~=óÂ>üg>ïâ>ï_>æt> ¸¼=û=Üv>=°Ü=¤ÚŽ=·ì=̇Å=à½p=ïÎ+=ꙑ=ß/x=Ù~`><ë>'>éS=ó$!=ê)‡=ø£Ÿ><•>L>>> ‰=êõÞ=Ý-p=ݯØ=åÐ">©Ð>ô>>·æ=ÿÒ(>&<>UÌ> C -=ñã=ü;a>@>š>;> =ë°h>Yd=éL+=ðéo> dl> Ú=ôÔ4=æáð=õjN=êÉæ=ï,$=îè—=ÐLË=Ù-=ÎcÙ=ÄJï>Û>‚ô> Ú>p=ùj> -·*>.Ý> -3>#E>Úè>…½>½.>/&> ~L>Šñ>ÌG>ßÝ>±E>$1->#ü~> ¢>„> ÔV> -˜=åòç=Úåö=æ³€>ÃB> ¨>ˆh>³>-0Ì>'Õ‘>Š¬>»…>>%Y>‚É=ñ=ùÂÅ=ó?Ï=ì²I>;y=îT8=êkþ=ñ½»>¨>‹`>û$>!¡P>â=åb=Ñí6=Í„=ño=åŒ=ç›\=ü8=åß=ܹÙ=Ú†¹=ãrØ>A¿>™3> ¾v>”ã>á›> ê=ùþ =ïÅù=ßý¬=Ùû¹=Û =îâ“=äÒó=ãM=â„=×Ì”=ê3u=é˜=àYx=Ð…î=ñÜœ=ë%°=Ö|e=ÖY1=»y6=ËÞÃ=é™v=³5…=ÄÕm=ÑÃä=ݦö=ïb=æ+©=Þ§=Ö¿ß=àõ€=ǯ=Âw=É‹=ÉJ=êš™=ï³*=à¯?=ÔÇÛ=æ5Ï=ù·g>]é=àªú=ðõ‚=î+l=ßKx=êk=ãi=Ê+¥=ªC$>[!=ê’¾=å Ï=ì̤>CÜ=ᤊ=ëÉC>ev>OK=í*b=éŒÜ=÷G´=òêë=÷š=ýÅ‹>=5> ¹4=îÕX=åµ=èÑE=É;=ÑKù=Þ¼Ú=ìªb=ìU=ã:ª=ëMk=öii=ì@=àªT=ê‰G=òì=áo=ô¹D=ì~ù=é@Î>ÝA>ƒù=Ýf|=×ë’>ß>>ýü=þ=ìÖ‡=ìtÝ=ó³C>øç>P=ﬧ=ì¨H=ì{×=í2> p>ç€> -I=á÷Q>w/>èý>”¿> >¶[=ñ¹2=Ýí=ɇ =Ô =óŽ=ì'Ù=à‹=ãG!> œ>Áö>0(> OÖ=ã$=ÙVa=ÙZ=à‘§=ëÝ\=ÜH5=ãnR>!l=ë¼À=î«[=ï€r=î#ï=ï}ë>q >*`=ÿ=õ>ú»> Ø=ùLÌ=õÒJ>i=Ø”I=à5=îçy>O­=Á2=Ñd™=ÛLy=çŸr> -vS> ©Q=ý#l=â¯è=ä÷º=Ï–=Âð¥=Ñ>÷7=ÿ½,=è÷Ù=ã=ñj)=ÿ@E=ß‹=ÊÖý=ȺÊ=ô÷p>[ò>YÎ=û?¼>A>“>æ> -c~=ªBÌ=Ábƒ=òÛ>Ä"=øn“>É9>=òÈ›=ÞJ‹=çÒC=û„>q>Õ,>?€>× >¾€>*=Ð=Û·o=³’š=Çפ=àž¹=Ää«=Ï(s=Â,ì=¨­A=…öè=ºü²=žHÝ=¢Çh=¿…=é `=ÝsÆ=Í•™=·=¬ = Û=ËL!=ÐÜ0=Ò¨=¯HÕ= tQ=oA=‚MØ=’ˆ»=¡œ1=½¾c=¾ =£+ˆ=‰`R=® Ü=°hD=£á.=Ê0>=¸ F=³{=©2Õ=u/ =ƒž=•ø+=ªäœ=·ª%=—dÁ=©‹(=žþ|=Ÿå =Ë90=…i=•«¼=Š~F=~+=¤8=h¦=ŠÔ =˜qµ=w­k=…S=w°8=“lS=¾'V=˜¿9=¯¦=¨â2=©—Ø=Å -O=mèú=|j7=šóß=Â~»=¶4V=©Üâ=«à=²JØ=ÁN=ê£=º#=±eF=¦^)=Ç:'=¯¥%=ЫO=Ìï=q<=Ïÿ=Ò#3=ÙM=Ý’¥=Ú>¯=øM=ü¬°=ÿè˜=æhø=·.7=Ü2=ó¥'=ýOu=ïgÝ=À2X>Z>j¡=Û4 =Ñs2=Ïø=·Ó°=®%e=³ -=àG¾=ÓW=âMÑ=ëÍv=ÛÅ=ô^ =Î=á,á=星=} =Èï„=ÕÚñ=Í`=³0Â=žÌ=ÛF¦=Þw=Ñ·n=Ô‡>=Ô7=ý²$=üa»=ä¿=Çìß=¿[]=µgK=®ÂT=­œü=¸„ =À²Ë=¦8 -=««6=Ý–±=ß*(=âï:=¼=û=ªz=¹s=ƹÄ=®²~=±¡=µ‹Ä=¨Dâ=äß=èí(=è}™=þN—=ìθ=Ü¡£=ìd¬=Ù\=ƪ>âð=¿ä]=Í1=éåñ=ñûß=Ðó2=©#Þ=š{=¨÷=ʈ=Í<=Óå»=µ5¹=¡³=¢êó=²iÿ=ÄZÂ=ÁN´=ÇD=Õ=äT¿=ÆÓr=Èd…=Ç™]=¸:=Â4=Ïïé=Õ²ó=à”½=É®¡=בm=ô5=Æ5=¡ŒR=½›z=×Ù=¸i@=¶î)=º{\=ËBË=®Š°=ÂÓá=¸—à=¯Õí=¦Kr=¯YÌ=˜û“=“%=ˆ¾f=nš_=´ë=®4Ì=»»=÷zð=è' =Ú£ä=Í6ÿ=À´-=Û¤S=Üãá=ä^>=Ï1=ô;=Ç]­=±#=™øW=š12=ÉR =º=³%“=²)Û=¸ÌÌ=á6m=Õž;=ïí> åÒ>qšñ>Š¢e>Ÿ¢> ëT>Œ7h>K>$„v=äK=äF=Úõ4=áZÜ=Õ=Êã=íï=Åuh=Çÿ=ÝÛ =ôïŸ=Ña=ç=â.‚=ä=Ø‘=Ï&$=¢Ø„=ªU=Ã’Û=ϾA=ÙdŠ=®’=—–=«é=˳^=Å·=Åxr=ÓÑ,=¨:W=œ÷:=µqz> ¦Ÿ=ü¯*=ö'z=Ö/÷=¬N -=¥œó=ød€=¦aŽ=ªÚ=µ8ä=ªâb=‹2)=¯‰€=½ -z=§Ü<=–ãì=¥OÇ=Ù¯'=¤{Ô=­~==®ŸÈ=¶!=Èh=™5ö=Åß =æß=ñÊ=á¼,=°Å#=<ø=¡È0=µ†Ÿ=­ú =‰R“=šƒ‹=«;=‹œG=›‡¶=ºæ=Ñ À=À<=»RG=½óò=¬;Œ=§g=ê¤=½Ëç=§L~=±V=¬Ùä=…rJ=‚üÙ=–ÄR=¾Zî=§a~=·ÆØ=ÏÈø=üE==Üo=—ˆÑ=ƒe=£{¯=”:=¿ r=žM=‹b=‹×=Á—[=ÁÕ­=˜ž=€çÐ=©®Ó=¤ó{=ªo¿=Ï|ã=· =»À=̇Ø=Ès=¬ïý=¦=µwê=±w =ÕlX=á~C=Ì×=¡Þ=œc\=šöç=¿Eu=ÂÎç=Ä%S=“6!=¤D =¸É(=Í~ >e…=ýl=È70=¸ÿ= ÝS=²_¥=²Ñ=Ÿ\=Òi=ÔϪ=È*J= ÙÂ=“÷=Ÿ#·=†|µ=·]=Ô§ñ=Ë?F=´Àã=Áe6=ºž =¨vÇ=¦…‡=ÑAe=ñ<É=ß)Ü=ÒÖ=å =ÎÒ=¢§á=’Ÿ'=Éj]=†m=ž°Ú=¹¢V=¡ó/=šnØ=‚Û.=Ëõ-=¥›X=ƒÇ;=¶8=ÑÕ¥=ᶕ=Ȥ*=¸~%=³4-=Ûxp=Ô^ƒ=ÌöÒ=Ð%'=Ù5ú=³ÞJ=«­Ô=®K=©gK=±Ü=íRU=ýÞ÷=ð¯=è¨J=ÜsÚ=Âú0=ï’Ñ=ô[=½ev=Ân=Ý(„=Þšô=¾²é=í -ø=ã@¡=¥–x=¤ú=Ÿ?=Ϩ=÷x¦=Óçu=ÍLµ=Éò=Ñ\É=¼¡%=åÁ—=ÇcŽ=Ü{=òÉ =èr}=Ñ@=ÉP=Í0–=Â,ù=»¦˜=Ö'=©Nê=?WË=–¼=Æ-'=½§'=×(X>ù>š<=Ãj‘>;B=ð=é=Á)V=¹ˆÜ=µ¬o=Ì'Â=Ï&=ÈM=Ãõ·=Ô,Ç=Óóe=Üõ³=¼þå=¼ü=ÆII=Êú®=¶äï=—õŒ=ÞÜs=ă=’4|=Ì¢œ=ë=ê²Ã=Ò;í=ûä.=èzû=å -'=Æœû=¸èÄ=èa=å"²>-B=ÿý=ÿ D=ýck=ÐÛº=ÓŠ-=çg¶=ï =Τ©=ÿ =úkŠ=ø½J=îø=݆=Û›F=Ø ª=þö>•`>tç=þe¯>²ì=õê©=Æ`‘=Ë_T=Ñè=¾Ïh=½È¢=Å9‘=Ñ‚N=ãvú=Õc=üô&=ÓBÐ=Á‘=¼›¼=µó×=ÇU3=Ð)=ô8=ÓÕ7=ÊGD=¾ A=Éóm=ßýÉ=ÜDù=Ê7À=áÌ~> Ûí>wA>¤Ò=øº=òäs=èžÏ=еb=Ñ»­=Êç¦=½©~=Ç =Ä•E=Π½=æ´=Óa =´ À=¹Mò=™©ˆ=…hÊ=´%=ä®=Æý=Šµ =Ÿy= V=š˜ñ=™åß=–S¹=””$=”qŒ=Ôãî=í§o=§<ä=Ÿ]©=¸Ä=¦$=Œ†ñ=®;‘=v%ý=ŒúŠ=™=…Á=±Ê—=¼õ¯=«âT=»¹|=°D=™O==ª'‹=ž®û=†z‰=”äD=®52=Ó©=‹y×=´U¼=ÓÙ*=¼e=ÀZÑ=à¯n=¡ðé=³‚ -=¾‹–>Xô>=׿ã=Ī€=´c^=ÊÞ=¦Á$=‹P=»¨~=Þ[=·Üé=Êhò=é_Ú=Œeô=¢ß¢=Û=½Ÿ=½¯q=±=šæ™=ž–=»Kv=ºQ=­Ú]=Ô-Ü=ô…k=ÂÉ#=¿¸«=À5°=Ö\@=áÃ&=Îih=óñ·=Ú‹Ú=Á u=©Ñ;=ñ÷]=ã[‡=½+:=«ì¯=Ö€=â®Ã=­G=Á€=Êð=¸ÀD=È9"=Óä6=Þmñ=§ü÷=¹8.=ÃŒ;=·‰X=Çÿ=Õ²í=߯O=ÂC=§Qò=Ên=侯=Ý9Â=È’K=£»=¡Ë¦=œ‹ž=®¦=Ú&=ñtF=ÇPû=ºÐï=®óš=–ë›=þþJ> °=þs¬=òÐR=ùu4=þkÃ=ãîZ=È×á=«ô©=ÔÝ¡=ôÜÛ>õì> é=Ç©Ù=  ù=¢?Ø=ÄY=Èž÷=¿ƒ¸=ë!ß=×q=±Ð>=©IÑ=Ø6=Å#=¥@=¯"=¦¶­=­( =ë]==¶+=y‰°=ñI=æª=ó=Íô=Ìà=±¼a=ƒüÄ=Ï¢ù=Ó5É=Â(œ=¸£Æ=Þï.>/–=ž æ=Å4’=Ò9c=ÌY^=Óöý=Çkñ=ª‡Š=É/=®a|=°tt=çÈï=º&Ò=·ç‰=Ü0=â¹l=ë)<=î|=¨(\=«5¸=¶ÿ9=ü:=Ê Ý=ÄàC=ÉÙ¾=œ0z= Š=Ä?k=™Ò=ÁµG=âÿ=¶-=ŸX²=¥{=ÍÖì=ü:ø>1m> -L>ùÀ>¹ó=óï1=µ­=Ù‹p=ûY=Ôy/=éáy>fÓ>¥i=×z@>½}> -=î7O=ôÓÄ=ér¤=ß[=÷àJ=õ¸Ì=ææô=ò€8=îQy=ò™L=Ûj¼=î¾=ö—=ó¼=Ë U=Ï7 =ÞÐ=ùœ)=àÒj=Úå,=È$ß=°Æq=Å92=êÉ=Þ=ù=»”=°Ê=ÀÈ´=­™l=â—=š Ô=1|=¥fÙ=ƾ@=)ù±=«æ =æ~s>p`=ïyr=ñŠÝ>É>=÷ow=î±Ú=è)™=ÚµÂ=ìgú=áMÂ=¿Vn=Ëáë=Íš£=Й=ô5€=êÆê=Õò=£´á=Ñqß=ë©=ÿ€=åú=ǃ=Å=ñ‹¦=ÛKd=Ö[=Ö -=ñª=÷1¬=ù0=âºc>,ñ>Ê=ûdj=ú–>XU>9ž=íø>J£>ç«>Ôh> -;e=ô M=Òº=Ñ…Ô=ô_=þ-=êãQ=õ{=ñœ<=ëÕÐ>ží>>+ >¤©>¡ã> -˜*>÷†=ÎËa=毀=énÆ=ÁxH>\=ó*r=Âúä=Ùòš=®G=¿=ævÕ=û»Ê>þ>݆>ß> -JÄ>=ðÎ >´ø>Ø> -À'> !n>u=ùð=Éèà>Øü> Q=ûÈ4=â“V=ú¿=öV=ȶ6=½[ã=àR>¯¾> À>!ì>Á€> Uû> -®>%(=ñ>û]>²]> ¾V=àiR=ßë)=à/š=ܬ{=Æ„@=¡—ˆ=‹‡ =xÐ>€Â=Ñ=Ï¥x=Ì&F=¸¨=ß–\=Þ›“=ÑðF>Ý>[â=òüÝ=Ð|Q=èñ=Ð:ü=ؤz=ÂçØ=Ô¸=ÒöÚ=ÂE=ðp¸>Ý[>É>„Ì>ðJ>eî>¯æ>>Á=ýW]=óp=êaŽ=ãW¶=×ó=ÆÞ=ÜSJ> ›>¢Ê>1F><ÄÞ>}ý>)äÓ>¿¨=Õw=²ð}=Ë;Ð=àÕ8=úM=ùÝ3=ós¥=ëd=Ö‹…=ÖŒÿ=é ¢>r‹=í¨3=üYÛ>oŒ=íúÀ=×)—=Ï.n=ÌUt=áB=ê„q=Û1h=¾D=í=~=Õžû=Ë~ê=Ô¨½=ô<Ë=ì–c=è€ > J;=ãz=âTÔ=÷œ=êî@=Û½==Ú1=ì\!>rH=ýM>=þB«>AL>!WS>%H§>#Äö>:=÷€¬=ë^[=ëb‚=ëc0=ú¨v=ûÍ =ÔÁå=òñ¸=÷/s=ö=ì(‰=üÄ >¦›>ê>1=櫆=ØÈÈ=뵆=ë=Ù‰ =ʵÎ=ßu,=ß`Z=ÞJé=Ý‹q=¼ ¹=Ü-t=öÚ>0S>%K>ï> ð¾>Dy=Ø<«=Ú=ÜÕ=Ç«I=´qì=¯aº=²Í6=õ–> -¹g>¤º>ÂÏ>ñª=÷Q•=ð—I>Ã-=ׯ =Ýûí=äØV=Ò?ù=Òh=̽“=Éó =ôÔ´=ãŸþ=ØŠ=Ò–/>Í=ÌþÞ=ÃÑj=ôå=éDà=îk¹=îké=Ü|ã=Ûæ2=ÏËï=È ==Ü*3=å<í=ý 2> Iï=ò¾½=üS>¸*>5i=Ò?=Ð6j=áRé>£>å|=æ®=ÔÜu=ÛŽ&=ÛÖ7=Ǻ`=»q\=Äá8=ù=^=ÞöV=ÃèŽ=ÄO1=ÄÅ=ÏwÖ=ä3> Ž>OÒ>ß> qŽ>)=ï^ =߃=ç±™> ž -=óe$=æGÄ=çi>½G=ðç¬=ðÆÃ>@°=üÂ>{]>Lc=ûÆž>Xm>®ð=ôÇ6=üK=û&Æ>Pt=õ(A=·%¯=ÂÆ=Ö‘×=ñãÌ>4‹>‡ =ÿL>‡ž>.K>.š>&ê">=ñýù=Þc1=à#=Ýj=«•=¡Di=º6Å=Ò;d=Ÿc*=¹WÖ=ÑJ‡=ârØ=Ëúò=Õ~û=ÀJ°= w=¶Ó»=·›=»˜Q=Á9È=·ôr=·êØ=Þâô>z,=ä¤n>¯>8š=ׂš=˜=îz=è7¨=ÒÛx=óÃf=ò…—=Ø”Ü=ºeü=Ù»¨=ôòÿ=ó(Ì=å›{=ð¥r=×11=Ï"ö=ÕüK> ¾>‹û> à@>»'>3È>(ùN>"H“>e=þ0=ëÏQ=Û’³=Òþ£=åÖÁ=ÊJø=âŒ=öŽ²=Î]ß=áA =òK =øñ®=æ•…=ð…é=ÑÁ¶=Ã×=å›=ñ•o=ÜØ­=ÚøÁ=ÿ >Rõ>Ã>…>)Xé=ì-Æ=²æW=’ž=‰=ªË¿=£|ù=§î=¬=¶†=ÀÀ=Ìb‡=ßâž> -–#=ù¶·=ïܹ=ò\=è7Z=ú«X=ÿM=ø)Ä=Ü c=ÜC=ÏŠ,=¸Ã8=”â=©{*=§[=¢ë3=¡4î=Úø—=üP-=ý=Ýöñ=Þ­T=¾. =¬‚=¨Â=ÓÎ-=Èé=ÌáÇ=Ó™/=Ю=µI =ÏÕØ>Dö>"²`>#Z|>«W=úpý=å¥k=Õ£1=âÚ”=ìå•=ñP=ïŒ==Ù2=õç=ï‹P=égð=êOk>&a>D‚=ôð°=î›V>¥é>'Å=õ_=â¦Î=Ëûû=åz¡=ù©£> ·>è@=æVJ=æÛÿ=ûOE>úŠ=ç…¿=âz—=ßnä=ඔ>Ôû=ï·=ç¡Y=ò8Q>“è=ë„.=è.b=î¼ =õÉú=ü=úZÍ=öp=óýŽ>˜Ô>â> wN>©©=ç°U=ïp >F0> Ž=þH0>"*>ïv=þB‚=Ýd¤=ÚÒ=Ý«=äÊ=ìþ:=êm>1Â>˜j> 5=óYº=úx„>©=ÿ\¢=ôÅ@=éŠ=òî >FQ>GË=ùœn=áÚp=Ò¡ã=ѳ1=äWQ=ÂA'=àq"=ç\>=Ü®À=Ò…=ܾ2=çuk=ëæ6=ÈôÂ=ï¼¥=òe´=ä ~=ä.:>=ΚS=É­§=ØÑ=÷¯z=´ŠÅ=Ó>²=Ñdã=ÍX=Ðæ·=ÙÐ=â1.=ÿæ<>!^=úÈ4=ý:ó>"Y> -9a>!e2=û¯ã=å²=ß*…=ÏŸ=÷ˆ<>Dæ=ùXO=ñΗ>ÙW>߯=êÔH=Ì"=Ên„=üc=áW…=í“ÿ>81>°ø>%Ã>ë3> ¾%>–`>të=Èfø=½Ð=Ï\ø=Ü(=ÇÙô=­¨ =¶:}=ÆÚ&=¨Uo=× œ=àÇ=ø‘„>¾> f%>c®> =õ”=ᘠ=Þ‹»=ÔÁ=ß¹®=ð›G>Ý=áñ=ûÀÃ> ùg>1=ìmË=ÌãE=ñ´> íŒ>š=͇Œ=ãÍ=Û)ÿ=Ð|>q¸=û‡=÷9=ê“Ì=Ú|ç=ß´?>›@=ò»=ÎS‚=ÁGn=Öä'=ºˆ=ÓÃU=ø›>@/>2Þ>]=ïN”=ÔÇŽ=îÃú=öH=éaÞ=ëâV=í°:=ëhš=ÌÐq=½F#=µå:=®±~=ù>N=ðÆ=ñrÆ=÷BF>ÝW=ÅdR=í¿=î#Ž=ùÄ=Ö$Ž=þ ´=ù<ñ=×P”=±«‹=¶ß=¾ëj=öF™=âß=¿ïÈ=á#I=­=ö -¢=÷ïZ=õÏÀ=èØö=ךÆ=Æ•Þ=ÉT>  ==ÄÏ=¿!=Ø•=ý¤^=Ö'É=ì¼Á=轚=è£5=îw—=´*=Üï:=ù§O=Úáy=¡Ä1=«Ä¿=ãø÷=è©‹=Òf@=ÎA>Ú­=î=Å=ÅrŽ=´h'=ÙàR=ª_=Ƭ/=Öš=ØZ =ã|=éôá=Ú©R=¹@ê=¤=«Ì»>X=½Z¨=¥Ó=Ƙa=ÓæE=ªËk=äŒÎ=Æe=ÈF#=ôhá=ãs:=µuz=Á¢Ï=Ì^=ÓG=ØÀ=Ò'€=áWÓ=äy=Úàö=¼AË>F=íÒä=ä£=ê5=ßßš> -gœ=ð$ =á#Ô=µ\=³äù=ÏŸ´=ö=$>%Ž>¥>º=¸0c=¾ý=¯õ=Õd)>Ïó>#eÈ>#Þc>?%=ðá´=ñà@=ëdö=ôÍ,=Çù.=×™æ=îG =ÐH(>Òõ=þ_=Û˜9=çR[=÷$„=ò"Ã=ã=Û†Ÿ=Ýmy=ëý=û{>Mž=þ—=úÔ=ãñ =ðù=݈5=Ä2k=Ô)C=Þ4j=¿ô =ÞE==ËX‡=Àä>=½ t=ÈÍ=ÉQ7=·i^=ª'!=ÒZ–=ñ6}=ÊÌR=¥¡c=9×C=³‹B=Þ¾=âöÛ=Ñ96=º=Ób±=Óɼ=å+0=êPð=åB0=¨6-=ÀÇ;=ÌÑš=È°=ª‰¦=™Û‘=¶u8=¨Ú™=£…¨=±¯Þ=ÜJÿ=¹ùí=Éž|=¿ˆ3=º|=°hF=Ëyå=¿F'=®Z–=š9<=¥æñ=²Z=Ð!P=Âd”=À©=´w©=Ð6‰=ÊKÞ=Ú> =ÐŽ=¸éæ=¶6=¥ð«=ï3=ñ ­=ÍÄ!=¯ ÷=ÁÇ=Áý=ùŸ=æçY=ÅÔ¡=½“¡=ì~ü=ü¢]=Ëj=¹.º=¯¯Ú=§É=Ùï·> –À=Û¬P=Â/Ñ=¾ŒÇ=×x=Öd4=·P=˜7´=Òû‰>0Å>¦=ú F=‰ºÐ=Ìõ^=Âüî=Ll=Ð -ø=ÙFú=š->Ø>V->ƒÚ„>…‰s>wÅ>¬T=à¥=¸gï= -=¸j±=Ünª=ëË=Üä=»=¼6=Êžî=´N=ÒÈò=êé2=×É=ÍS1=÷.=óQÅ=Æ =Æl=Î;ß=Þ½~=ÂF÷=èa=À/å=ÒU»=éû¼> 9Ä>; =ó ×=Íl†=³—÷=Á›=È™!=ÚÇ=ôf…=Ô_z=È;P=Õ¯j=ÖŠ=µ¹>=¯¦=ăC=è½=õ|1=´à -=¸pj=àÀ+=ÞÄÎ=ØAH=ÑKR=¹ƒ=Æ!=Øõ">èm=ßîQ>õ”=å=r=ô˜>/|=ã<ç=ÑB—=Ïì=¾~ø=ÞØ>™x=Æqd=¢B=– C=¢€S=¸¦‹=«.Æ=vß=×s>~Î=ž™Í=¥V:=¦O\=´•=Ûïó=ÓNï=ÄË=ç§n=÷¢†=íÔ=à&=Áè¤=¯‹=»E=Ååg=‰fy=–z¾=«¡!=µ•û=Îß =ìßÙ>ý =óÒé=ЂÏ=­Äê=Ã);=Ç®î=–ij=±ž–=ÎÃÇ=åå =Èð=·£–=¨0§=½þö=Á`P=ãÔ=áF*=ìÿ =úIi=à¼=ÞÝ=ÌÑÔ=É^å=Õžo=¤bŒ=Ôb=вX=·¥—=°"=¥wM=©q=Ð,é=ÙJ7=®Äb=ÁWÿ=Î=ÁÛº=Èfý=ð r=ðÆÔ=ÄG§=² ñ=¹Ïk=ò©=¾è(=cê =™„Å=¨ÄX=¤¯=¹Œ\=¸õ›=ÅË==Íq=Õ—7=Úì‰=É—µ=¾€]=¶xí=×Æ=È?=ÏÛ¤=äKl=Ù÷=ÇÅÔ=Áâ¬=´Õˆ=•yÝ=ÏÙ =½ú¤=Äð¾=ª(½=Ë=>Îa>å×> ¸=ðXå=ã=£í =£T=|és=ŽO=•~u=å=öv =ãB;=È<ï=­]=Ê1=׳P=áL/=ìG=ìÌû=¬ƒÏ=ß=Òg5=žÉ=Æhú=ÓS3=æú¥=Î07=®pp=¢´= —=Ík=¬Ñ¦=­PÅ=Ìä-=Ò–Z=ʯ=ʃ=µ65=Æ -=álñ=÷k~=Õ~£=ÉO=Ùñ=ù?h=êæ=ÞŠ)=âFè=À±=² =²Û=ÑIÔ=È;=Ä+÷=¸íg=³m¥=ÎB=Þ'ï=Öx°=Úû_=ˆ?=¨/G=Ëã]=Ã0?=Ë'Ò=ÑYc=Ý‚ =Ëi =Á)û=Õu =àh=ÜóÕ=¹‹Ê=Ùø=ÕäD=´=ÐŽH=à â=è:¦=îbë=àÖ=°ÚŸ=½Â(=Эú=´ø/=½¶=ÜÊ{=ö~==åUÅ=×Ì~=ÆjÕ=£j’=÷¹¿>öN=ÔKr=ÖòJ=é(®>›’=ðLË=ñ8¾=Ûªˆ=ä10=þ€Ö=øè:=õY=Ås=»‡J=÷z=Ûí=Þ È=ëc=äÆ=Ê]Ó=Ô¥b=ÓÃN=Øi=Úœ—=  "=³³¥=ε>]‰> 7> ü°> -+Ê=×™î=É>Î=Ô…é=ñ†]>-Š>¬=é'!=àÈã=çù'=Ã;Ø=üÎØ>U9=Ôå=út½=÷øÝ>=Þ[y=í¦H>ù&=ù>C¡>9P>²%=Öð=·ÉY=ò“T=æŽ7=Õ¬ã=ØF=Úì =éî·=îöò=âÛ‰=ã‘5=äwa=ܤ"=Ýf~=Ù»G=Ôþ=ìí2=ú ²>t=ïM2=Ø`ø=òGr=ñy=çU_=í'Ù>|„=Ü+G=Å" =ïå¿=ý¦z=ÜÍÞ=Ð0¤=ÈlÂ=áÞ.=ñ@> u„>Í×>¿ú>!> Ã>!&=úù—>¸•=þÈ÷=ØžV=ö¿†=òJt=å:=Óü5=ÊÝ=ÍÑÁ=ù¬=ý==ô^9=Ñ¿Ê=ý®ý=÷w©=Å­K=»øk=×ÀF=éÚ>}=Íž”=×ze>¾3=óÛu=ç.=äJ=ö2)=ë -)=Û=ð€J>Ýz>;u=Ú6$=ñÑp=è¶}=Â^=ùX=ø±=ÜxÕ=×ö=Þàù=á:Ü>üP=ðeÉ=戅=åëÀ=åM°=òûr=÷ZA=Ç°Ò=ýO°>6Y>e=·Æ?=¿^?=Òÿ=Ò`‹=éže=òç =¸„=õVZ=ý›ô=ÒâA=À¥­=ÅI8=Ô¼=ù(=Üo=Íc=Ñ}=²]£=µÃ_=Éõí>Ê>ÐI>Þ>6Dx> ˆÌ> =Õ1ž=Äû=Áæ=Â`A=§¿Ã=¬Ý =²X­=¦B„=Óôo=Û€â=ÀO¡=ªt¿=Ÿ@H=›1 =å;î=Ĩ=½§ä=åG=²UR=ŸFj=—àÓ=ÒT„=¦Íõ=¯=Ö4d=°4A= +=©úL=„Žf=¢Cí=Ï=î´J=çŽê=î=v>ÆC=ýëG=âž2=ÈÁ=»ö³=É‚*=Îf¥=§Êé=´Ï4=Ïð|=ù>=¿ ¿=Ä=ÓS=ÒÖJ=©ty=©xÍ=ëµH=ñ1Ç=áÓ‚=ÏÂ=Ð-ë=Î{=Á{Â=¥+R=Ê.T=ÙÆ=çEº=¥}= /Œ=¢ -=±=†‰`=•Àd=É =·¬€=ɹ=Îc…=ec=‡Ž¢=ž˜ô=¶0®=ª™ü=¸—Œ=Ä*q=œJ”=Ñ ø=ØìA=ºå‹=©³v=´d8=Âà¦=åNÌ=Üë=Ö =Ìf¿=e‹=ž¿U=Ķö=¾Çú=ð>¦–=îÀ=Ølâ=ÞÅ=æEC=âÀ€=ö -0=ãôû=±ÙF=Ü2W=ç 7=í@=íœã=Ó±F=×~1=íjG=³ð0=ÉÏð=Øó›=™!H=ÇÆÓ=×µ=ÈJ‘=×Qù=÷®Ø>!Ÿ=ñ¾§=Ê6=Ï0ô=öË">š5=üý>=òD=êþb=¤Aà=­Òÿ=êTA=Åܱ=¸ÊD=­û`=®¦²=·hý=ÃÈõ=Ñó=Ülj=ä À=ë>ø=ôY‰=êí]=óˆ´=þty=èp=×5W=»ÇÀ=‰»a=Ô+u=û\¸>]Ù=Ð%=àÛA=ãøj=Û]e=Ä\F=Øö =à=ÏRÿ=È=Ñ‚¬=æXl=ÚÜõ=¤xT=–2=·ê~=˦+=åiQ=÷%“=Ù÷=ÛÅ=äJt=ýÁ§>Qç=áW=½$“=Ÿ`>=ŒÒ˜=¢À=ÁX£=Ù™=´á =¤Ñº=¶¿ý=–è|=¦rÜ=¸¿5=Ô=Ä¥=¸®Ä=¬F‡=μa=åù»=î ¥=æ7x=³Õ=ÉŠ=ä$=ÎAI=½¨Ð=ÆÄ=åÆÕ>´‡>Aok>p¬ >‡Øœ>ŒÖ¼>|‡¼>OÞz=äð@=ÒÜ=Ðê=×­=ïXw=ÒËi=ǧ¿=ØnÜ=Îz=Ò E=Õ#9=Á“=¸yB=Ë8.=îÝT=úŸ=ô_ö=éÔR=ØÀ=ãð==Ûê=Ö6=ÕõN=à*.=é-I=î8s=îÐn=×ôh=Äí=µÿ=¶M±=¹÷v=ÅèW=ãSi=І=Êë=ÍY„=íÂ_=Ý¥]=Þ©=ìóê=ù9ß=ã¨ô=áÓ}>»=Ðð}=ð…~>$h=À©e=Ȩ=Ùë=î =í N=Õ þ=×U©=íf,=ÖžŸ=í5y=å4H=¨ªÉ=Ý«É>–>Î=âün=Út¹=âp)=îˆ=íþš=îŽf=öE_>P=í„a=åbi=Þ‹=Ö–á=õ†=Ö`=Ç9Ì=àAÚ=Ì=v=Ï< =Þå>æ=ò÷ù=ðoÈ=õ1=ßÜa=ÖÖÜ=Ú¨ò=áq>Ãå>.Š>dÕ> m^>±u>Öß>|=Õïf=é J=Ù–Ù=Æaj=¾€=æ+ë=Úo*=Í"ß=ß =àKÔ=á=ê=àÜZ=ës3=ô­=ó=êyÌ=ÕL‚=ô5W=ëû=¾Z=ÓT=Ⲥ=Ùør=±Úg=Ü‘,>öý>.=ë t>×@=ýñV=÷ín=÷==ì{r=Ú6_=Í‘Ô=á=ÎÍ3=ßøõ=ýâI> ¥r>Û÷=ùqR=ä]Ù=ùh¤=ù@å=ò•¸=ît˜=÷ÉÎ>|> „=á`=¿ˆ@=ƈH=Ùy=îON>ë¿> -$Ö>¡(==ø9•=î =çcù=à’P> ¬Ü> ‚T>#M=ï2“>`S=õ˜Ô=ÛÇ=³Š}>~>-ì>öî=û>>>ùf=úBÑ=ð¬=Ã!=åx†=ùú=ñ€Û=ÛPÝ=ÞP=í•ì>Á =Æ{‚=Þñö=ð?l=ð =Ä-ù=åô,=ìØ =²a=µds=Ó!=áP=Ú*V=¸Œ³=Óß=ÞË«=Ì+=ËÂE=Õ; -=æ4k=ý«Ñ=ærw=ë›d=ë‘á=äÇ;=ðwÎ=è V=ãæ)=åzý=æ‹=Ök!=ØŸ=è©x=ÝÑÏ=ÕS=ØNò=ça>Í>Cè>n=ñ=óf>¸f> ð™> ?>##=ôìp=ðye=ÿD -=ýÃá=êÁç=Ák+=°O½>Ög=Øýü=Ú€y=ã—c=õðÇ>$ø°>STâ>_L>1‹c>¬—>ì*=÷D×=ÞWÊ=þæD=é„ê=èÅÉ=øž=ß®=è=É,q=Þª]=ßý8=ô¾=âÑØ=ÐS÷> ’‡=þ_˜=øuõ=òÝ/=ÞCA=ÔÜ=Ë}m=Ȉ=ÉÅ'=ì7Ï=ô//=ðâ¶=á:Â=î\¦=ÿ5•=ýõ˜=ï‘=òI¨>vr=ýk=ñ>P=áܧ=Æg—=ì^Ö>ìc=íSæ=õT=Ú¿ì=¾Ûˆ=¢×K=¡aÚ=®D;=µ+ô=·j[=áô=Í[~=Å'=ʲ=ÕÆ"=½a =Î 3=äàM=úâ=ða&=Ææ -=¾S=Ûh =üxy>ˆC=äÞE=»j=ñö¢=Å^x=ÀO{=ÆÝS=×P=€$M=Ñr=£+›=Ïa=¢ó=ÊêÝ=ÊÕ =­ð=åd¤=¾-ö=È&S=æÊ`>3*>ˆ >îq>û=õkS=ßml=Æ=»=Èãµ=Õùé=ØH=ׇÚ=×u=Û]>Ñj=к=î€P>é¡>ά=øÚ=üÇœ=ôòé=æ«ñ=í­?=É~O=½¦1=Ér=ßP> ž> -Í0=ïj›=Ì~Ñ>Q=à–<=Û³¬=ç=n=ôÒ=ÜÃK=Ó³=Ú³=ù1>P÷=àHü=Ñ*Z=Ôï=ò}ù=Ù Ô=Ññ¶=ánh=øî©=ÒX°=Ø…±=é°C=ìx=Ì»e=Ü2‰=åM©=ìb=ôc²>ÍÒ=ÖgÆ=Úº=Ü;f=¸Ô=Ü…=ãù¿=ñna=øM> 'y>ÕF>èØ>ý»=߶=Ê ¾=Éëõ=ÖÍ=ðïù=Ì*ž=È(t=Ëv =Úøý=Ö£=Ã.›=ÞÀk=Ùæõ=Á‰î=Ù§ý=ÙlÅ=ô±Ê=óK§=â‚Ê=ÄÝw=Ù‡=â]£=×Ë=Á°‡=Æ®=ÅzL=Âëü=¿‹=™€°=ìN=g2=²eÿ=î_C=àÖ=Õ¯±=Ȫ½=Ò~³=Àly=È%S=ê!e> ü>2W>€+å>|‰;>Žzu>‘ºß>b‚>B5y> ¤=Ì{1=³W‘=ñÑ=ûFŸ=Ì©u=¹§–=Ïþ=Í¢=‘¿=¡°’=¯â=¡kù=£.Ö=Ÿ-‘=½»¹=ËOé=½ãd=ÅÂ=Óú3=Øl©=ÛÙ¬=ô)Ê=ÊmÉ=ÅÖR=ʵs=Øl=Ýï=ËV‚=Ϲš=Ùýo=Ôí=©*ö=Î?=Êh=Ê¿­=Õ‘Á=|?=ÍÈ=ç~[=Ý =Ϙ›=Žzä=Dý=Ÿ~ö=®â9=®Ðb=»I®=»˜î=ÙŠr=énÃ=Ñ)è=ß-ö=ljK=À¨X=ÅŸµ=“-"=ÁqY=¸²=È =áÞ<=²Dk=Å^ò=ÌH=ÔMØ=ÑZ}=Ó{ =Ò‹*=ýT=ù"þ=Ö.µ=þðh>“›=ñ¸#=Õä6=¦En=æâª=ÂmÑ=¹ =Àö¦=Ó}5=ÊìÞ=äC=áb=€=ÅõË=´=Örs=ö* >¦=ýE=õžŒ>9å=Óª=ξ(=ý(g=¿¼=±\0=ç¦=éu=ûÓW=ó©$=ÿ¼Ï=ë]á=Ës =ât¡=ëƈ=ö^t=éÓ÷=̺F=ªªr=æ-î=¹v$=½àÌ=Ðr¿=æ¿Ö=ꤕ=»½r=Ì×b=è#…=ñý?=Ç]T>af=ÑÈZ=¹/t=¾QG=¼êª=¼ÈJ=½.=Ür5=ï´ý=à+Á=Ö·Q=糌=å£á=ö– =èÐG=¾»'=Þh=Í%Æ=ÁJ=ßê(=äS‰=µñ=ÁÍv=¸”‰=ÃÉ$=è¢Ù=²…z=ËÉ‘=êÙ=Þ‡—=ÒðB> Š‘> $„=ò-Ì=ÞüÔ=Ó=~=âu=àœ=åTX=Ä0â=ÓAý>ºu=îu˜>Ö>~=êvZ=Ã¥{=Ó±­=¿®=·‹Q=ç² =ûš=æßà=ÔÊž=ëU=ã÷Ç=͹#=Ê=¹ØŸ=éO=ÃÈÁ=ÈÚ±=×J=ÏÒÛ>éc>õ=Ø+§=ºÀ=Ü £=ÜD =Ñ4'=¿å=¼ï!=ó*>ö=Ö8¢=Ît2=ÚIÙ=Ù„)=ªõ=ë™=þp=ÿ"|>y>>ËŠ>m=ëúÙ=ïs‚=Í›=ÀQ¹=Û;÷=ã ®=û!í=ÄÈZ=Î×g=à~¼=Ô¥£=¿æ,=å95=õ­Œ=äí=Ëͧ=æe=ÍÊb=Ñr=Û|Ô=ÐÞ7=¸©Ì=ój> ɾ=ÞQÕ=þ‰~=ÿæ¢=ÄN…=°$”=ÉðZ=ÁçÌ=ãÏË=üÌ]=Í•µ=̳=ÈS=ð}h=÷Â=í=¼q7=ï±^>Á=áæ)=†Ë=ÏÑG=ßb=þÃ=¸^š=Ú«=ã••=Á=¿ß§=ÌëÖ=ä¤û=¶DŽ=œ0=›¼ø=— Š=È×g=õp=à]A=ɪó=»åÀ=òL=å‘Š=•*Ï=Þd>Ã1=˾Ð=Ì#=Ôcö=Ñ^=ß~Ë=Ô=¥úì=‘þT=—'=¨µ=œp‘=£ím=×n@=Ñ(=Ù1=©Gp=Äžý=ת@=¥Ç=¨1$=×s€>>P=鄳=»uX=œL=Í\=©îp=ï8¸=çë!=»›ù=îîÎ> ˜>}{=øTN=õ{d>–¹>ØW>ao>ª´=÷Põ=ç”!=×ÞQ=Ò)=ä¡ú>‘ÿ=èª=íÐ{=ÎÁ–=ÃÛ=Ï&Ú=¨ž=¼Î=Õ™×=Àhd=­m¹=Èv¢=ì…Z=ñ^¨=¥ef=Î@>—¨>E¿>4S€>#ü>é>>²Ë=Ú_Î=Ïó=Ää=ÝïC=ò‹ˆ=É¥à=ÂTB=Êo‰=ÛÔè=ÈÂÊ=Õ{=á¾Ï=ÑuX=èÅc=ÔJ8=Îh²=á{=ÞÜ¥=Ôc•=àåG=â™Q=Ò‰¬=Á"|=Ëh®=ßd=â–Ã=à 4=ÜpÊ=ÞD=¼Ú‘=ÖòI=ëÎ=ëË=ìtW=þÜ>>·U>{ > ú>¸ü=évG=Ãe§=àN=謘>WW=ϨÐ=É^î=ãdœ=þ×@>q=ð¹=÷™;>Z”>/a(>(‹²>t”> øP=îi=·["=¼ Z=϶K=Ë7l=ÐœZ=Öéa=囄=îdÇ=ño=ÐX=».=¼ =ÊÎ{=ó!=ý²•=ÃÏê=‘û=›Õ=§e=¹7Z=ß)=ÍòN=°Hê=«ü=Ô»=–ç=Éá˜=ö*à=Ì°©=¾1=¹IŽ=·]]=åøÎ=çÚ=³×A=·NK=Ô=ÕXÏ=òÑ9>"0>‰"=ÿê~=âØÇ=Ãñï>]>÷ö=ý4l=Ú -=ÉAe=´I>LX=ýöñ=ÓîŽ>î1>>º=Û¦Ô=Ç'=ãúÜ>==êÿ9=òÈù=د=¸F=É߉=Ñx=·cê=Íæ=ßhÆ=°v†=‡w=Ø•:=â®=÷\ü=á³=¾ò=ÞCü=ø2=íU=Ø;=ëò =êPð=Ërò=׫‰=è…³=êð…=÷-<> ’=Ö+ =÷¸>ÉC>ç> ¨V=ÿÌá> .o=âÞ-=ÄzH=·þX=¨ß=›'ˆ=ÍìÛ=Èüí=Àü\=Ÿ’«=©åÈ=«„=’ˆP=¤¯^=¼F“=Ýï==ÒB=Äå…=µ;–=·g1=Â;=Ï‚½=ßÒ=Ý;¾=Ê:œ=˜TÁ=»‘=ÙÖO>„ø>+gU>/×ÿ>$Æh>¯f>J|>MZÖ>W®Â>@9>NR=ĵ$=™²=£$=Ók¨=ØiÃ=çe;=ø,Ð=Ô!`=Á -=Äï=©”Œ= ’>_Í=úmr=õD`=Ý-¦=«¤;=³kÔ=éÕ{=êVw=ç÷ã=·+w=ÔJª=ÙBþ=Ñk)=¨„v=•d=ˆ$‹=ßÔ2=à€{=ÔÖ“=½˜‘=Ö$´=Òäp=½R2=«OÝ=«¬‰=Úûn=÷>=Üåó=ÂäÜ=ÙB=Ôr=ÜŠ•=÷l‹=ÆZû=³Œ=Û[ò=ÑÒé=Á?=Οp=æNÃ=ïž>B;=ó†=ñ÷ =ðàî=ðÕº=æ@Ï=Ù==à•B=ÕÞ7=à‰ -=Û?=íq§=Ç–=³H=ÔË=æëô=ó1O=Þ¹¯=ÒVh=»Æ>=­1g=¸$Í=àu;=ûb÷=ß)=Ê’V=ô(ç=ñDE=åç=Ò´š=à3[=ÌË=ÖÊ{=çþ=ô{D=üa¹=ôGN=÷Ì“=öŽ¹=ÁE§=Ü=d=ëmø=×Ò=Ëœa=Öôl=åNÀ=éÿ=ô.a=øœ=Æ‹`=Þ‚…=ö’­=Ðà'=ã3z=÷óã=ÖÇD=äœ=ýô2=ÿ‚=Û™®=Òvª=íßÔ=Ê’Ø=×vÏ=ëJ!=ÒNé=çÝó=òå:=ÃÏ8=à*œ=ÞðÉ=¶m~=·„x=ÅB=Þ3º=“ò$= pŽ=µP=g#®=˜Ëÿ=¬…²=€«ç=‰7õ=– -=§ý¸=t4=vE=Œ›$=Ž6°=Ãüž=óÔJ>„¨=ø¤ =é s=¿;©=ÈáÞ=Óî=ådÙ=Áx¾=ÜhF=ü0=£Éè=ÊUÚ=êN=ýº?=Ì3=ÓÅ&>¤¶> ¬C=ó—‡=ÈH=í_=ï==ðˆJ=û1>Œ>=í¿=ìÿª=ô/|=úÜv> _Ê>ø‚=ý±O> 0S=÷5S=í¢=ëãØ=ÿ±â=ïßU=Ñïô>ÿ‡> úú> ¡a=ÜÇA=ĺ=º{Ã=Ä¢=÷çq=÷Ôü=ç¦É=ôÆä=óA -=ó‰H=ó`é=߬ç=ñ2(>DÛ>ƒ€>Ü‚=盯>²Ç=ü=ü¨>ô%> -k>æš=ýI›>'Ê=èl=­ÝÜ> VX=æ_å=×Õ*=üÛæ>ï>Ùë>dp> äz>g=ðÉ°=ïç=ðÊñ=ô¼Û>tÙ=ò¿Ï=ãH¶=Öò#=Ê_=Þ-=ìÕm=ì³=ìú=öÚ>•z=ø÷,> 1'>éL=ø/×=÷?Ö=÷Ä;=÷a=ïf&=ÛP]=ÈÀ=öåæ=àÛˆ=ÎI¨=ºÔ¢>ý=ö.¾=¯Á¡=ô_*=ä: =Û¸V> …=÷6=øð“> ¨†=ãš¼=ã¨×=êä1>mí=õ‰ =î­>nþ> - J>#÷=Ý„é>á==á*Ø=ýù=õ»Ê=ù²­>éÁ=Ð4=ýì¢> Ä=ñò'=ó/‡=÷|à>š =ê]K=ê¾O=ñ*ž=ðz—=ð‚†=íˆ"=åób=îA=Ï6=®ög=ä`Ÿ=äG:=éyÎ=ï> ‹+>¦=øò8=ãÖ`>L%> Yî>â…=ð¼=ׄ6=¿~Û=¿“¼=è6=èÂ=¿ió=çqÐ>üþ>Ü5=¾€=õ]%>ÑÄ> ~A>,(=ñ¹ž=Ùq/> ‘>¬¼>äˆ>ø>ñ¨>CÊ>¶>?·=øÃ÷=ø¡I=÷C•=ÿæ*>>ãÈ>`z>T->÷ü=ë˶=øÉ™>ñ˜>#y>\‘> 6Ù>h_>ÿ&=ßå=í±=ú`¼>²>º}>ï>"ò>)¢>¦K>N8> T‰=ñue=ßy =ÖêÎ>c“=ôÏ=û{±>Sd=ð´0>”>Ýh>ñö>N¨>b > S]>Éz>×z>ë‡>c6=éÀ=à7=ô7¸=éÊ=½Ø“=³è…=Þ¤Š=ó'ž=â$²=Ô,ü=èfp=âÀC=èÍã>Kå=ÓË€=ÞEì=ås¤=Ü]í=Ó­Ý=ô%v>}t=ýŽ=þ8>c> -‘¢>Z6> è.=ÿÂd>V‹> >Þ> -Ìà> 5>b=÷Þc>ãß>ÖÍ>¥€=úåÝ=è›=ؼ?=ã9=þY=ç @=Ô'—=ÊUÈ=ܘì=Þÿ=áUq=áÖó=Ä­=ÍE“=Ì­Þ=Äg-=Ï7Â=í1”>bÏ>xY>.jž>CQM>O‡Œ>1€å>4>Óï>„> f>)ô>=ñïÅ>Ñó> ‘à>õH>†¾=öaû=ìŸ]=ç«÷=æoÌ=ÝG»=íO> äX>õ§>x>'«¶>1\¬>Íø>>ý>^ó>S>r6>iõ>°¿>2o>ðŽ=û£=ûEâ=Òìû=ùË>BJ>p‹=ïÃ)=ïû½>r¯>*%Œ>n>'+·>=š>A–â>c°> á>Eé=Ö ¤=Û—=è^‰=ñh=æÀÙ=Û Ž=ÓÍŒ=ðý=èœë=ï%Ú=úÆp=ñ4=Ñý8=É£"=ÙÂ>=æ!’=×»'=Û‡3=üa=ûsÕ=Õõ=Ä=üX =ýeq=ëar=çF_>· >Mí>ì>KO>Ê:=þdþ=ëTŸ=Ü&3=æÆõ=üqŸ>¼=ç -•> -­=ò€>»õ>Im>5>,¼c>,<>î¿=ò@Î=ü–·>Ŧ=ûœ=æ å=è¦=ïÄå=òßó=ðý=ÑX¸>ŽF>z‡=Ð-ž=ü¥ˆ=áj;=á)?>*¯=Ýæó=êß3=ø»‘>ð> ó>>Ž>Òž=é9q> -–ß> >[=é?c=ûùÐ=ðÚâ=Ý×å=ÞeE=ßó7=Úl-=×ñ=ì}Ó=õ½_=þàZ>¦è=Þ\“=ÝàÎ=áT=æÌ=¾Š=óÆÊ=òK[=ÚÄr=»pV=ÓÁ=áœï=îJ6>¹.>+E>*Ýa>!‹³>/>&¨>E2>5a>^Î> =m=úU¸=éšG=Ôò¦=ô/·>é>*Üí>*à>>2 ·>2õb>,ED=ûYÕ>ç>1d>: w>%fä>*Ly>!¢> YÛ=íŸ&>~Ë>û$=ïde=ïàQ=Üð8=ã •=ú–=äÓð=ô•)>üÅ> AÔ=Ði2>7> i“>Ó>V¿>,ù=ø*³=ì’á=üY=ð`i=ä° =ßrr>ü¥=ô¹’=ùQ=ý¯×=ãx#>TT>ü¾=àp©=ã8>½>c«=éÂ=ÎY;>÷x>£>#0Õ>>!â ->V>¿„=ü,¸>$Á>Jú=üt=ôµ¶=ïߘ=úÕm=êXI=Ãx=ú¤b>×:=õ’=ÞT1=ó&­=ÖöV=ÍÒ=ÐØ=í1r=ñ¸!>Ñî>/ã=àfý> -%>L> -äy>Ý=Ê+=Ý’!=ìð=ìº=öã=õn»=ûÃÍ> ž>ò¼>dN>¼à=÷zI=âJs=æW·=îË|=ø -ë>Ä8=ì z=û§{>/ã=öXñ=Ý7=ÙÑ=ݵ=ò,©=ü.h=ü0¯=ïý¦=Ù;«=³è=ýàr>ð=ùŒ=÷Ó3>[ô>·s=åd¨=âª=Þö=áoû=ïfÒ=ü.Œ> Ñ>Fê>éð>(x=ìùZ=ö«û> àâ>·B> M>K>>Ä5>2*þ>1¬Y>*C>fë>¢¯>üÿ=뺌>é¾>ŠW>Fy>nb=Þ“‰=Ûäœ=ã¿#=ΟR=džó=éÚ•=ë»l=Û£=Ð0q=À™T=éA=> ¸à>iY> ‡ï>b‰> -'Î=ûA =¸=é Ê=ùB£=öÚR=ød§=Û½/=ÝÊ€=ðŽô> #\> ªq>AÂ=ù==í§j=ë=ó¡ >aÎ> Sö=éƒ>˜L>#=çÖ=Øö==çˆp> wê>^(=ñË=ì@œ=Ëa=술=ýÓ =ùÞ=>›W>[`> +3>b×>Á–=õ(=ê4Æ=ë>±=èr=ò$Ž>  =>ƒ6>kø>&!>1Èœ>;z&>(ß¼=ýL> ÚË>”T=é†=Ì`=þ¡_=ïŽä=æWÓ=ô¶>ÿ>ºÑ=åIÎ=Ôl½=ÏÛ'=áÚå=ÀŠñ=ÝMH=ôÊ=ùÀ=æG;=üÀÅ>bH=èúÁ=ÎTð=ôT1=æAŽ=ߎ¥=Ï/5=óÒ=ÔwÓ=ßÃø=í„a=äLÙ=Éïõ=ðÉ-=ßu_=È¢»=Ý…#=è”{> >ÿ°=ÞÑþ=¸}:=õÛc>r†=óë×=î=ûï=÷cÐ=ùÎ.=÷Ȉ=û‰~>î`=ÿXS=ø'—=þ[Ñ>V=ä=Ý®·=áÔã=òf>hŒ=ùÀß=çÔJ=Ý~®=Ú÷Ø=Ý©‘=ò$ð=ú!l=æáÐ=櫤=óU=ôPO=îÛ™=è|º=Ýâ¤=â<ƒ=îv=î›×=ê=ö?=ód)=ÿ§t=÷±V=dz¬>.©=ù‰c> 5ö>=¼>™B=º.®=ÁVâ=å¿ =íÑG=³ˆv=éMX=ív'=׺±=¼»=Ù¶I=ý¢D=ê–Z=É2Ç=Ôý>û×=Ç“·=ò~Ÿ>n=üî§=Ýó§>Û>šp=÷¬o>@>Ê"=ëéD=çŵ=ì'y=ï4v=ö -Ö=΀Â==èöü=æfà=ßå=ò“\=öz=þëô>Ì=ݦé=Íé=òÊh>Ð!>”O=¼LP=Ú“ý=àÍ=èþ†>’n=åíø=ÈçÕ=Ðù…=çV6=ÃáI=å,m=Êg=²%û=ÞÂÕ=í€ß=úch=Ó°=ᯠ-=äV°=Õ_=ü+> -n‹=ÅËÅ=©¬ =ÒrR=Á_È=ÉÈœ=Õk=Ôù =Â,Ä=ÜŽ‹=Ÿ}w=•Ùl=‘ÛJ=£7=ÁL_=¦"=š2É=¾\ =±×©=¡¾U=¶Ô=¾Jc=³`=›o=›wH=³¨=Âû!=À=ø=´Æ=ës;>ƒÇ=øQ=û'Þ=øʦ=×Éù=°öŸ=Îhæ=ꂧ=ÙV=±@¼=Ïlž=È‚ù=Íš&=´°R=¤ÿæ=º˜> žÏ>[=øaƒ=ßÖê=ÞŒ=Å4ö=¨}=•®¿=³d˜=¨Ÿë=ê„=ÃÄ=¯G=¢ò$=¬ú=¹ì=Äýï=ÊqV=»Òž=Ê<¢=߯z=½Ý/=À¯=Ç`Ñ=˲U=ÂC¾=œ÷=ͨ=Ï_=º™1=¤'¢=âZæ=û‘8=ÌS;=Ù×—=ñ£ì=çW=ÛÐ=ò²[=÷¶—=òºs=ñ3‚=Óè=ÄÊö=Å&,=Ã)!=êœ'> ìp=¸úP=òÀ>y%=éò=ÌmR=àI>.½=Êš&=®g,=ËÅ×=¼Å²=ó÷–=©ÞD=·˜[=åÁ7=½üD=Ä19=ì=Ç\=‚Í=‘=¬þö=Î=ížo=ت =É+Z=½%=½h÷=‹Uk=ÁŸ=ÎI@=Ù‡B=çŽÓ>»§=¶º=ÅŸ=¼—n=Áò¬=ÀØ=ÃØ =Ô6ø>ã>k=>»×=ý&9>@Þ>¯=ÐÆH=ÃnY=îK=ü2(=É~d=±·= H=ÂSš=áI^=âãã=¼ÀU=ï [=âš =ÔÕ =߉9=ç‘Ú>pÚ>ÁÅ=Õ~Æ=þ£b>=Û> -‚Ñ> ¤Ž>ík>mØ=ú¹Š=ÿ=Ú»Ä=òtU=Åÿa>øê=í)d=á•%=ýaŠ=õ Ø=èó!>GŽ>ó4=÷‚}=åæ½>_K>Jø> ëˆ>»ç=þlÃ=êÌ“=Ö«j=ÙÜ!=ÖÖå=߉’=ð¦>òi=øL> Þ•=ìƒ=Ú§ó>4=õ˜ =êì >s;>*p>JÅ>Ù=ùÜ=÷4¼>VÌ>©é> -SR=øØ=þ‡ï=ê^D=Äðç=媿=úUp=Ä?Ì=Õ6p=¼¾=Õ4î=ì™/=În1=£C—=½¿è=êgH=ïy“=þL!=ä€Q=㌠=åq!=ñ 8=ÒÆ>™Z=Õâc=àZ=éàS=èKè=ÚYá=þÚì=ಔ=òàQ=ûñ>6*=Éç»=½‹w=”žÀ=î’K=ýÌA=Õê¿=¿Æ´=Ð6=ßúr>Ê”>>.+>7ñ>Äý=úJ=ÿLÊ=Â.F=ç#p=ÿJ÷>£=ÿ‘=ð×þ=Õ> E>€}=òo]>Ÿÿ> Ž²> io=Õ·;=áP5=Û -–>8b=þ“Ù> &{>Ì=ì˜<=ÀüÓ=á9.=üE“=ýÀÞ=Üõ1=÷8Q=ìÝ‹=ÿ•ê=òøç=è =Ë%®=ô«`=éqÝ=öªõ=áf¥=ÜJü=øËd=õDÝ=Þ(Ÿ=Ík´=ÓéŸ=ä¼—=ÑÇ›=Ô¥Z=äL!=ÉS—= }D=°¡=ýª@>‘†>ã[=Ɖ×=•ØV=ÊJ=à|=àQ=ÔÝ=ÞÌ=õæÆ=êƒf=ä¢Ï>x>!=ùþŒ=ùŽ>œÜ=ÚШ=í=ê=âͨ=Þ®Ê=Üqz=Û›> U”>õú>ŽC=ý»¢=í¼ý=߇¨=ÛF=ß—=î™>®E=î Ÿ>7s>5J>4Q>(œm=þõ=ø=ìFÐ=î™[=í—¯=Úý=Å–=ë?=ô}L=±E6=íP=ñŸ=·à=ÚÔÉ=ùœ&=ÿ'“=ɉc=Ï8W=×” =ûÌ`=ó}Ó=ݯq=ï=ûm)> £v>U=׉=ùΗ> -—Ô>#·> z >8>ÅJ>ñ¤=ëâf=òé*=äï=ýŒ¬=د¸=£=ÄÇ=ØØb>öñ=´7=Ý´ê=ù•f=µ}ü=Ä¡(=Ùµ=íØ$=èZ<=Ïl½=¬=Õm=å€W=Ï9d=ß´ð=àüp=Ë‘ˆ=æÎ=ñ¬ˆ=é‚ì>ŸZ>.I>@=ç2ù=åšX=óÚ^=Øk=î³> Æ}>1³>_ =ûã=ã=Ô!%=맾=üÊM=õdÍ=ìûÔ=¹þ?=×p8=ç²=î=âÑè=ÑÏ]=н­=²Þ%=£ÞM=Ðý=ÙÑ=¹ò³=Âñd=ø¸¡>2=üZT=øz >Ô¨> ^=ü¦#>"£=ý-2=ýÈ==ïp=Õ =üat>î>ä >­F>!²Î> G$=ËG™=éý=ù{á>õÞ=ê-=ÏHÍ=ÂAÈ>©Ã>\â>)“> ÈÂ>‚ß>vø>Dh=öo/=á4=ÈA×=Ó ë=êŽ=ÆG=ßmý=çö=Ú2Ü=ÑKb=ÌO©=Ð%g>Œ=í#=ÄdP>¡|>¢Â=ök=×úµ=ØRX=ßÝ«=ãˆX=âõ=໯=ßê=ïBƒ=ìûF=Í{ =Ù,=Û:¿=Ä¿´=Ŧ=Û°9>§{>F2>•>£\=ìí²=èyŒ=ä`=ðà>=ùVZ=ù¢Ñ=âÑñ=ëÑ=î~=â}Ô=ë¢<=ñ{¼=û:p=æ™P=àÕ5=á_|=ì¾'>ãÌ>W•>«p>p~=ý -±>FÔ=ö.¹=à ¹=ßæ–=Ôò7=ÖÕ=ßz=Ê =ÏFÆ=Þú=è/=ਇ=Îän=ÃÄê=òzÁ>¯=ôÛœ=á<6=Þظ=çðï=òKZ=ôs§=òü=Þ½ž=õÐ5> -4ø=Ì‘O=éÝý=ÿÁë>]v=Ƈ¸=±Ãs=Øaæ>LN=ûÄn=ä‡S>•> öT>´>‹h> -Í> 8> ÕL=òm =æ%ˆ=ïõõ=ÑÁÜ=ÛB=úÙP=ø¸=èïç=Ö»i>Šñ=öšû=ëý=ߟ‚=´›=¯øb=ÓJs=Çrì=ÏÚ"=Þ-´> NÄ>æM=èC=Ý1ƒ=Î Ÿ=Ê2Ï=Ý =î`Y=îtY=Ûñ°=åU²=äT~=Ý°|> á÷=æü=ËÞ]=ôŒÊ>ct>=æüš>$é>·Ý=òÓ0=ñ9>r×> :Ó> -†q=Þ´w=Æ¥#=Ùži=ÛƒÛ=Þ<ˆ=ð`o=åá=ßÜ-=Ûî]> 1a=ô£I=æ=î„­=äôk=æƈ=ퟨ>r>†R>¢‚=튑> N >“w> òœ>ƒ0=÷üK=àîœ=àò‹=Ûk`=Ó½=ÊfÆ=Ê ñ=Ø-Ú>JÀ>Èp>=öÝk>ÙÄ=ñž˜=Õ3-=Þ”+=ôße=ýêþ=õ–Ù=ìï=ß1=Çe =ûÍ8=ù§K=öúQ=ÿô)>„­>Ñ> -¬P=ÒÍ=ÎRM=Û@o=Ç ‹=Ú†Ï=åŲ=Úüë=Êá =Ë÷é=ÜPì=î3õ=Þ=Ç=Åg=Òm¸=àä‡=ñY+=ñîÍ=áùz=ψ >:ž=ì¾=̓6>©=÷‘ž=ãÉ•=Âä7=ë H=äÅU=×Ëþ=Í@®=áåj=éÉ=Í®=ñ=ðÆN=âkx=Ø0=Ö¥=×\´=Öç=¾?=Ì[ƒ>±Ö=ÛïY=Ön¯=ÛÜ{> “}>²ý>Ü`>Í=ã¯=èÞ¬>«þ=ËÚ=Ø.Ð=î‡o> àÆ=ý¡ž=ïK=áRa>nŽ>E˜>~1=ö/ =ÞÄ=ÊR§=³ÁŽ=嘽=ïfþ=óÈ-=Ô;n>Ü> -k=Éù=Ü3å=ÖEé=ÌžV=é¬%=ÐÛ¹=æ˜î>>)f|>D'>LÑ=ó¬ñ=õ À=ê”=Èã =ÿÜ›=÷u2=á)>¢}=ýï=ýwC> ?R> –Ù>ÎÕ>.=> ±p=úÑ=ólŒ>Ý£> €+>ï•=þu=ÓÛä=ãd=ì`Œ=ôqþ=àÿÀ=÷¾Ý> .Ý> -_=ñL¨=Û2Ð=Ó%Ç=äW=íçá=õ®> ©q>ÅG=ó=z=Ý!=à.±=ÝZº=Ûaœ=Çg>=Æ™°=ÏZV=ÜÒ=åÚ3=ÝjÊ=Òê=Òu…=ÊbÀ=Ë,·=ÑjÏ=ïò¥=ë),=ã&á=ÑêU=Ú€*=Ôß;=È…]=ñè=ì =á¾Ì=ÇU=Ø ÷=ÛF©=ߣÒ=ýb]=ïà¾=îÁý>ÙÉ=üÖ=ߌŒ=Ëð*=ñžÄ=ò{Î=ù“>¦š>>§>> þ>wÚ=ôY=ø‰> zˆ> r{> '> •¯=òÇ(>£>•N>ìh=ç>{=ø"ú=õzx=æü=²Æ‚=Ðm+=Ü2M=°Zƒ=°7§=Ä6<=Ü1%=Ü›>‹>MÜ=Û‹6>bð=úxà=éy=Ä{º=ß'‰=êò%=øž-=ÎÔÉ=ÏU=Õ L=ää­=ø‰0=õ¼J=ó¢>Ð=õ¡‰=ý÷;> lS>Òï=ÿCÆ>ó> «½=óO=üNh=ü]D=Íëè=ö™=ôä>=Ú† >†=ú/Í=æDi=ÍþV=ýC==çË¿=к®=Î}Ã=Õð+=Õ§Ï=Î3=î©Î=ö¶6> Ë">'c–>”H>±‚>ü=ï$>\š=ðWæ=Ýkw=úˆ=óÑH=÷++>ØÉ=æ0’=ÿ™ð>D >¾=ÌÄØ=áv¦=þiL>GÞ>  ->2=ò >/=æýß=ß=å#’=ï£è=øQ =÷8¾=î»ì=ÜŤ=á{G=èw‚>â„=åG™=Ϲ=Èg´=ïÝ%=×Ý=Ûè=ðÁ‚>Ù¦> o>Œ =ÛjÔ>Œ=ÿÒJ=î)Ô=Ƶ =í¨~>în> Þì>;> Y>û=ù•[=å´Ò=åÜÒ=îo€=ý~=Ó ê=ØŠ=ß±:=æÌ=ñÎO=êk¤=æxj=ç¶ü=Ób=×<=à9§=ñF=øè6=÷H÷=õv>Yô>a >½ß>æ> ›þ=Ù¸z=ÎËÂ=ò¨o=él¿=áa:=ÚþÙ=ÓD=ò^U=æ¶%=ë|.> S“=¶ y=ºàÓ=ÇÝ`=ÆãÀ=Èb=êCP>(=ÖW=Íó¹=ï`q>®¥=Ô/Á=Ê/0=Ù‹‡=èl=Ý‚µ=ÝA¶=Ø==Ö­J=óý=ñîC=í÷à=Õu¿=ÀË=Äé{=Ë >=ÓXþ=ó·o=ê7Ÿ=Ç< =Ø=±=»x=Ë«½=ëUX=þH=Ö>‰=¸xŒ=Á:å=é?y=ó·“=û‹Ó=øà¬=÷4S=øÖÈ==Îzž=ê¿(=ôm?=÷k=Û„B=ü¯Ì>ÕÍ=ôtg=Õ±=ìv=ê{—=Ý­B=Í" =Є.=ÞTe=í‰Ô=à?b=àúc=Õú=Ò”Þ=Ò(>äT>¡F=ìQ¾=ÖVn=ÍV=ÄH£=Ð!l=ÿz=»‰ì=½Ê=ÌB=èŸg=šIÓ=ÂŒf=àÚz=µ±˜=¼ò‰=¼Ç4=¸¡Ñ=»^ÿ=íf‰=Ó}=Âa¶=Øåð=ÒÒF=Æò—=ºm‘=»<=ÓÉ®=¹uò=±Ÿ3=·9S=ÄIì=×Û=Øõ=Ú?x=ÓÂ#=áx=êÁ=óþ>ø"=ë5=Ót7=¸n]=Ñ«=Ü«:=Ù<õ=ÉÁž> Ñ=ÞÈß=ÅN=½Ð‚=ßêy=Î,S=Ƚ=Èï³=Ý A=æ¶=àÅæ=çr>>Qü=ëëg>u“>×Ø>o¦>HO>§> =>ã>> .Ž>²">A|=Ù˜Ô=Ø€=Þ «=ë‘×=â?‚=õ&>°\>{+=¶c =ÆÝ¢=À"]=»Ú±=¶óï=¬%=Æ8=Ë“=­}z=äsJ=ÚN4=×ìV=à>u=ÐÂ=£bA=¹ÏE=ñ¼·=Ñß"=ùòt>e>­e>©®>_ï>áª>ÖW>J9=ÿ‘9=ê`·=Ù)u=Óìv=èÊ=á=Á=è7ô=è¿Y=Óó=ÈÛ?=åŽX=ÿ¼i>þL>2Æ>4Å=úÃV>™‰=Ô¥‘=·Ü=òQÇ>µ¥=ÂA)=±uï=ºØ@=Ã%Þ=½"=¶ø&=·/3=¿và=ÝO¢=ɪ=½õ¢=¼²0=»0‚=Þ.*=Ãâ—=Íi=è=Öž¨=õÿ/=å¦=¼pï= 7=úXJ>Võ=õ†=¿éÖ=Ãö¶=´¸»=·³=¼Æî=¹D¬=Œö)=œÛ™=™Ù=‹¢ =³?Ã=£T=º"=Ö¹ô=±åu=•#=¬-O=µŽŸ=¼ -˜=ØRŒ=Æ”»=Újí=üó=Ï ä=¹l=ª\œ=¸v¢=íS%=á8=áiš=ß›h=ל[=ác=ä¿=ä`T=߈o=òy}=ͱÌ>‘¯>þò> -ÆÓ>XÄ>û¼=ñ5®=é8?>nø=â0=ή½=Ò¡=äñ>>‡.=ìó´=ÔüÆ=¬'Ð=ñZ=îŸy=õ=ëh€=݇==çTœ=Õº=Ë'Ð=ÖÑî=öì=î^=ý q>÷t=á?ÿ=̵ =Úaä=éÈb=Ì =ÒÜ=Ïn"=±‡#=šh¼=îéñ=ê4=è_>M¢> eG=ÚÜX=¹Ê=îh=Ù¢=Ò)=Þ5‹=ÎøQ=¼›¶=°Ý=Ø–`>öÞ=ä¼'=Ðû=Ʀm=¹§=ÙçO=ÜA=ÔD=³g»=Å s=÷WÞ>,=ç¸E=è¡4=ÔM¢=憡=ú>ª{=Ôôô=Îj =ÓñM=Ìõ&=²|.=½;v=ÊžÑ=ÒEÄ=Ì`=ÏÖ’=½­[=·Úñ=¹•Î=Ê=èß5=ÄDE=¸«b=¾¬}=Ö³=ÃGõ=óŸï=ÒÒ‘=Ç­©=ÓDt=ì’>iŒ=ÞÔ<=·c=¢§<=¢µH=­óù=Âòá=ÅÕ8=º„z=Ë8 =¸àŒ=º -=ë³×=ö³>äº=Éì>=ɸA=íáù=î¾M=¸H =¾vé=Ã9}=°X‡>åæ=ØN =’ð=È~×=ÝE´=¿+ö=èÆ=ì&Ú=¶±Ñ=ÐH=Þÿ=¶¿Û=¬¦ï=ºQ=>yW=ìaž=ÔáZ=Ô%=Ò¸ý=áª9=ÒI=²ú“=¦·s=¬à‹=Åì€=è3€=ð‡³>Ž=äÃW=ÒÚ=­Ïc=Ø0%=å E=Ä ‘=Úç=à¶>@W=ào¡=ÜÊÂ=ýÀm=³]=Ñ=ÞDw=Øñv=À!=¶Ä=ØÁ]=Â+%=¶\=Á¬÷=Ìz =Þ=ºŽX=¹àø=ÚÄ™=Ú%®=Úðý=Ù—K=Ö &=ðÛ<>†=ퟔ=ñy6=⻺=Â6”=·k|=á9Ö=×Ѭ=Ó™ë=à›†=Ï7§=Ñfc=Ⱦt=Ú*a=åâ,=ÅÏ=•f=ÐYf=̵æ=Ô]/=æÁÐ=òq=á=ð±p=Þãô=¹Å=¾y•=±?5=”b·=²Þ=Æ›Ö=ׄŽ=»€8=¹a°=¹-=ªÅ=®n=™j¯=¥;ç=³•ò=ÒO=ƳR=Ö„”=ñÎ=ì®×=ïZ˜=ðF^>Üy=Á‚ó=ëIT=øø=Ï:´=­úÈ=˜%H=̳â=Âv(=¡ðô=“À(=µŠŠ=å! =Öú=½ -1=²¼0=­ò·=¤o=ðlÈ=ø”Œ=éß2=«9ø=ÏÜ™=Ûå!=ß4Ž=à||=׋™=¶k#=Ìöà=ܦC=åõ=Ò3°=·'<=Çm¢=± ®=Í4¬=Âݤ=%¿=²fF=³Çv=«“}=¹Z÷=Åf=Ëö=ÂÕ5=œÓ3=ŒÔL=ª–È=µh:=š†©=ºi=†µ=åÐî=ç'=ÓÀ=êâh=æ…G=Òµ¤=Øo =Öût=Ìó²=Áj=Ê\Â=È´Ä=ÑY¶=·v¾=kß=‘ùb=ŸÅc=ÅÁ3=ÁZÅ=¨k_=o˜#=Ÿ1=·Q=¯ =¨,:=¢À=»‘Û=ˆy=Ö{ -=ây=ן,=§B=³ü-=ª¤è=Ŧ›=³˜Å=¨@ý=œ!¡=š„?=°9(=µ0k=µØâ=²ÍC=Ñà=µç?=·.“=µÜI=Äì1=Õg”=Û[M=ÿ>Æ=Ør™>V=ñ±Ô=à¬X=çŒ=몔=ìB=Ñzþ=·rÔ=å&x=Ý{Ô=ߊV=ÿ5é=æåE=Ñò}=Ñ}þ=Õ,=ÏEj=Û×…=Ó =¹Žª=Ç[Z=ñBP=×þµ=Ó ì=²…Ž=·éÖ=½ð}=µË=Öì©=ÌjŸ=ÌËÅ=ãYv=æ¬1=æ{=¸ Ê=Ã<1=(Ý=¤,!=¢lÌ=—‹¬=ò=ðåÇ=îýH=Ç$=Æô®=áMA=«¬h=Õ™=÷->s‘>þY>=ß=ê›"=è4å=í)‘=ÖD=Æy²=îGo=ìød=ìÝô=«ÌC=Ðl=ä9“=èRW=Ãj`=ª¥ =ÚZ=Õ9 =²2´=аo=»ÿ=š<†=×€ç=ÆR¼=Ð…á=¿ló=ºuv=Î ‰>U¼=óC=®™•=ÅÊù=É'=°†ë=ÍQ=Ò(=í®ì=ÎdG=º£k=Òò‚=Ùv=Ã&í=Í¢‡=òà=é˜È=Õ-=ö¿ó>EH=áž=Àéë=¾S=Ö!:=ß>Ÿ=Ûö¥=·Æ…=ä»=ØÊ7=’ÀÔ=±-´=½6j=ʯé=Õÿ¨=Ã-=ßØ=ÌpP=ÉKG=Žç=ªŠB=Þ¶5=àÜF=ÐJ=ßú™=ìÉ™=ò®=ès’=››ø=ËA%=Ûšð=Ç0b=á†%=ú‘Ó=î -4=íg =×EM>sÜ=ý;=áU»=ÚÝ=àßñ=ã#‡>ƒÂ=ôe=»ž=±j=¾â=ëèI=Ô‡$=Ø£Ý=äð=øgó=ó -7=ßÍi=㧮=òÚ…>VA=ôx =ñPd=÷2£=ò;=çýX=Õcj=Ý]5=æQ=½,=æø@=âPÍ=Ì1=Ý=¡=ÙY%=Ù4¢=Ü€Ú=ðà”=Í#˜=ê¢=ù®=òÃ=×Õì=×ç%=Ó ÷=¾‹Å=ɘl>Žë=ì°å=Ù„W=ähÛ=°õ=¸Ìu=ÌX =ÍK=Õ=:=Ü=í±=çM•=å=û“Ô>3=ç'š=à$š=ä¼£=æ¯b=ÛÔT=ï]ü=ïóœ=å´=äL=á!=È«ƒ=Ö5®=ௗ=ÖÞì=Þ"C=ôø/=Êiá=ºk=ÃÆä=¶ÉC=».=±ÿM=­X=¹s=¿5Û=¥Ìõ=ÉÊÙ>²Ó=Êô=¨2æ=™®=™ÜÛ=ŸÉ½=®Çþ=¶[ê=Ãè\=êéM=÷ÅW=ÔÇì=¸Ts=ãó =É]á=»èE=ÊŒº=ËÞç=½Û= ¾y=«¬|=²ûú=—5n=Å =â0|=ã=ÜÍO=Æ8=™@¹=Ç4=Ø_˜=˼­=ÙEi>ï£> Pu>Ðí=Ù#ì=ðFw=Ï '=⛫=ç`*=ðWF=äeð=»Ë‰=¹”=õÏ\=å È=ë<­> ð=ðÜ=ìtt=àå°=õÁ!=ê{O=ψµ=Û,=ꥷ=Ü‹=Þå¸=öƒ\>©=ÿÞ=ñŸV=âؤ=«“=à"=ëp„=ÌôÜ=Õ©=æv¥> -‹=Ý)s=ËÜÏ=ËI•=Ê‹è=Ñä =ãü=îì =ÓM–=°Î£=ÓŽ'=ÂÈ^=¯õØ=°"â=°Y6=³Øì=ë¦=å´ =ãž=÷ݘ=ï”v=è¬ =ßÂJ=Þs?=Øf7=Æ¿-=ØÑ=ãÇ=éö•=É3«=ÕÕ=él!=¹ Œ=¾ÞÏ=Äî=ÄhÕ=ÄïF=¿ì×=«Êo=Êqå=Ð4F=Ÿ9Ã=¸Ðù=Â|c=©è=¸•ï=¾vF=Ìûï=ìtÍ=ä_ñ=×æù=ÍSÕ=Øcþ=â[=Ì=ÃôÐ=º¹¸=§¶«=Ú=燀=Ö˜=çœ`=ã¤Ë=ʵ6>É=ø½‰=Õ° -=¾»«=Ϲä=àü=á$Ô=Ú´’=Öå÷=ßÞK=çhå=è¡ï=ßnp=Ãn=׈>_¬=ä{½=Øà\=Ò0ì=Ðæm=ÝÏ«=å>«=º­=«ß¾=¨M=Äýh=Ęe=Ìü=åÕg=ÓŸ)=ÊLx=Ãïˆ=¯ É=¡áî=•õ‹=¸2¡=±—=®uz=Âç£=¬†/= ¨˜= ¨Ê=Ë™Ú=ÍS=¶áT=­²µ=³hÕ=Ár|=Š@Ö=­oš=ÉÈ=ªmî=¢×…=¦^§=À&=·U=©Š =’ï=º=Î{t=à/k=ßAƒ=©Íö=†Bà=ÔV2=¨& =™FÌ=³É=Ë=>=Ä…¼=§=œßZ=º\º=Þ1=èª3=ÛàA=ÒÿK=Ò‹p=Ò·ê=ÎKƒ=Çu)=ÑJV=Ñ^G=ÑN¿=ÛëW=âp=æf =ÑÊŠ=×¼£=䟾>’w=öé¼=í×=æ0V>S>™=ûáÆ=û<°=Üåö=ÃÀO=Ä£w=ÌË=Ëðƒ=Äc=ÞMP=Úà‡=Î''=î›x=àÔ`=×¼U=Øë…=ï¾Ú=ê—á=Âà=æ)×=öÚ5>¸m=Ø>â=î >‹=ìû=ò¦\=ûʾ>S}=æÌá=ò˜f>_=ÏÝD=Ö÷Ó=âD-=ᆈ=එ=Ú¼=ÁlP=Á/š=¹ÔÓ=¬*q=Ó€š=Ïòý=Êé=ÞªG=Þ™!=圣=ÝZY=¿÷=âÌV=äín=Þ¬"=óE¼>z=ý2p=ÉQt=áqÞ=á®=Óñ!=¬þL=¾Åd=Ôð=òÜ.=×ö¤=Ñ=òz=ó(Á=é˜À=Üð!=ðLá=Ú×^=Ψ±=û°t=ô•î=Ü{Í=²š=Ø^-=Òe+=Æܽ=Ñ}i=ñ”]>Õ=ïåÕ>ˆÑ>}r>ÌK=çó=Õ_=Ì=æQÄ=ÉJ?=¹Bw=³P®>==ø Ô=äOJ=Ç*=Ö®ˆ=ìÓ> è´>2=÷n=ñ+}>"=ìçN=ÜPÛ=Û÷ü=Ô×}=Õúð=Üš™=ÓLG=ãóŒ=íY=ÛrÉ>3t>‰=Ñ‘õ=ÚÅÄ=ðªÎ>o=ú‚0=ë]=ò ·>e#=à#Ý=ÚËf=Ù£=Æ©j=Ì.ß=Ô\@=Úïë=¿²X=æÞý> -Ô«=ævþ=ì®=õTA>L> -®=õ®ß=Ì‘P=°¥=ÙN–=íçô=å=Ó1é=Ýž4=íú¦>rk=õ”ä=ô&˜>dú=Îðq=Èêg=иµ=÷ÙÑ=ÖP'=Å© =Îâ¾=Π[=Èõ‹=Ä{=ºMÉ=ÕW·=äÛŒ=ä…v=ÑPY=Ô) -=×âã=Ä~=ç‹=쌰=ÏGx=Ø`=Ê=‰=ºrI=¹­Ô=Õív=à‘t=ÙYæ=½˜*=ÏÝà=ä‘=íÖÅ=ÏJ =Äñw=ħm=ÃËŠ=Ï\Ã=Òn =¯°=æ?5=ç9Œ=ε^=Ù‹ª=⪊=éuŽ=๮=ñÚ6=íî1=àoœ=ëÿ}=òØè=é0L=‹=Ôñ=Õñ‡=Öó=ÖØo=Á§á=Â3×=ÖâÝ=é®m=Èß}=³ƒl=ÌéO=ÄtÑ=«V=Â’=×`Œ=Ð-.=½yx=¤¢=²Xº=³O=±Uì=Ö¸ã=Öã7=Üñz=êù»=üÖÃ>Á/>==éça>Æk=ó2R=׺=ôÙÁ=ü»=øùÒ=ëd=ô¨Ð=Ùª¤=Ãïô=Õ·I=ü\ò=òˆf=Ì¡u=áF=ÎTî=ÎÚË=õr=âÇ÷=ì-w=õ¯p=Ụ=à…’=êJ™=÷yy>&=çè6=×­Ä=Øü=ÖÛl=×=Üdž>">=íý=Ò`=¹o=×ÜÚ=ñŒg=õw­=×Q*=ê)Z=ß;=ÔÒß=Í)=·c÷=»UË=Ìïw=Ìê.=¿Ù§=¯Æ¿=š«&=‘|{=Ÿ¾à=µæ=×é=·„=½)=Ïî´=ØY—=挾=ä]h=ÎcJ=ö%=ðÑ=ç4=Ùz=ÇÝÔ=¹O=³Ýf=ÎaÐ=ÅëÙ=Éær=Ñáú>%¾=Ù6Ë=ËÏ=Ø`“=áe†=çù£=ç6'=ÐÚ=êR…=ÛFï=Ê™=îZF=é }=ÛRR=Ï£=Ï€q=æÃÜ=î]s=瞈=Ó²å=åž=îŒ=åY=Êæ -=Í-Æ=ÒI=ÑCˆ=ç™Ó=èÂï=á’(=Ç•*=ð?=é×a=É P=ñÏù=ܾç=Ø’’=å¨}=ÓŸ=Ňü=ÃaÛ=ÛËR=îÒÄ=Ök=Å„‚=êC=Å‹ù=Æ‘…=ÓX‘=Ó—•=ñ ›=æ¬1=Èß,=É„=Øn =ßZ6=݃“=¿÷Ö=Ûÿï=àŽ*=Ë›ˆ=Ë~¦=×j^=Îwd=Ÿè =á~g=ß<À=Ø=±=Óá=Þ+w=øò€>H>=S=ã™=ÏFS=ĉ?>8>(R=ñR=äNü=߉©=Øò¥=ÙA"=Ø!=ßCú=ઢ=Îñu=Ïk=Ê'=ÅéV=¼Ë=ÀŒ%=ØNW=ä…Å=ÂÅŠ=佌=õ -=ðøØ=Ç4…=¾Œ¢=Ñ|=Î|=ìð=昭=ÚUf=̺ê=Ë:=ÞŹ=ØžÜ=Ïè=ã;=èÂØ=áï»=ܱ®=ÕP’=×ë8=Ï’†=ÒÑÛ=õs{=ÊÞl=Ö´ó=ã`l=æÛ‰=Íŧ=í>=óßp=ÎLk=Ûÿ?=ÀbÕ=· Ë=Û˜n=â…9=é÷F=í5´=Öñ=îŠ=óÍœ=èæ=Óæù=ÃóQ=Ã!!=Å\=Φ=Õá=ÖIÕ=îÁ!=û¥|=ËâÑ=Ýç°=ë÷›=ò±'=ÐY|=Ñ«û=ØE„=Úù=´¶=ÜW =Ç!V=©£=¿*Ë=ÙÀ½=Ù3ü=Õ¸n=ϧâ=Øï}=Ó‰-=Ý+Ð=ó–<=Ï#è=ì±W>õ> -5¢>)ª>V=õƒœ=цÿ=Ò§©=Þh=ØÿÝ=Ì}Ó>…å=à›ž=ßS;=è¿}=ßµP=݆‘=æâ@=ëc=Û=Þñ=à"=ÞŒ`=Ö~z=ûB@=ä—=Î) =Ë^!=ÇJc=͵=Æuh=¹ãÿ=ËÎ'=ø§I=ïÉž=ݹ=òmÙ=çž=é“=÷•=ôŸY=ÑZ~=Ó²w=ÑOn=Ôˆ‘=Ë®½=±ÞË=Îý =÷€§=Ý-~=ÈL¿=ÃSz=Ó~=Òt%=Í?É=ÑŸè=ϧ[=ÉÛ=´ì=ûÄ=ÎdÇ=Í2¯=ç&+=×=ÆÇ‘=ÅC‚=ÚƒÅ=Ò3=Âû=ºÊÓ=ÊÊ^=ø¢·=Õwí=¾qd=²äI=ËÉŽ=çz<=éĦ=ÜÊß=Ìqb=º*î=·¹–=ÃÁ»=ä’=Ø8ï=ÔÕÉ=ÞpR=åþö=÷ è=îŸ[=ã±Ñ=Í©S=²™z=ÞGï=ür|>.¤=í#p=çE=áz=ì¥V=éì=·ÍÜ=¸ó=ÎŒ[=Ö{c=Â|¿=Ñ#Ã=íÈ¥=ð/>=Ü7õ=¸÷Ö=¿ƒ|=íe=îêÞ=¿ë =Ívô=ò³=ön=íÍ=ëy=á`=ØçY=Ós=Ò·†=Ål¤=Écz=Ê»‚=Dz;=Ý”I=¸ÀÅ=Ķ,=ÓÔË=Ì»=Èß=Ý6–=óö¸=éýA=Ñú=àL5=ú7D=ñ=¾ç=Ýý3=ÅjÂ=Ìd=Ï“Æ=½(4=Ò‰=çæ.>.=æûi=¸=A=ã =ð¬¶=í'j=Å=µ<=öÝE=ú̇=×éÞ=î+=ÝÒ=ÏÑ =åd6=ÓÛ=ÌMÙ=Ïû#=Î7j=ÁäË=ÃvÜ=Ý;^=ÌC€=´ëG=¥Cã=Õ0=è$ =ع=Ô!¨=æ£=ôn.=ç -Ò=Î=Á»Á=ùõ=äp=Ø–e=àmé=Ïø=·eÞ=³r==ÀŠº=Ñ>=à\Ö=ÏwK=±í=¥nŸ=µc=Ø8á=ÝÙI=ʯk=È:=á¾×=Úµ”=ÆóÌ=Ð;Ð=¼Ën=—W=Ï_÷=¶rk=Ãw=Ò„½=ÙÛð=±òÅ= Í^=‘”’=ˆ™#=²ú=Å=Ôú=âöF=¸]=ˆj=µm5= ¶<=‹TQ=œLj=Ÿ¶=·)B=¬= =—ä=Œü=±d¾=Á5s=¿˜/=Ƴ.=×/Ó=8=†²2=Õ=µ=Âðê=½>D=¸3×=ËÈî=Ã|{=»þ,=¬?ó=¼ð=Ù„=ßäŒ=ºS£=Ôgµ=ßšÑ=þp²=ÿe=¹ÈÞ=Ú]³=Ô„ƒ=ÑÈÕ=̉ö=Õ‡…=µ[h=Ån =ÜFe=Ø›5=¹ž=É‚)=«”8=Úœl=áçÏ=¹¸=²t=¿~”=Í3=³T€=Å-|=ÄsÜ=¶ $=¶.D=Àd{=àr@=ÍA==ä™-=ø|°=øƒ4=ìA=§Qf=­yâ=Ò°\=à|»=©ú8=¶ÕG=¿‚Ç=ÁU?=¾O=¥0Ù=Ã8ž=ÎóR=­]=«9Ñ=°\ =Þ]ƒ=ÎÍj=ØÐT=ÂÕ=·E=êÿƒ=¢ÏP=µ»¢=â|­=½Û.=±=t=½gz=Ñ“N=Äñ¤=ÂÝâ=ÀÓu=¦¬Þ=›´Y=¯»=ÁÂi=¿í‘=ÉO=ʱ»=ɳ=úÊú> -C >e‰=ïbh=×9=È>î=¯ ‹=±ú=íe†=Ì€÷=£6s=´|Û=·íé=®Í=Æ/K=ÊMI=ª`\=³ªe=Ξå= =»o‘=¯Ö¹=ˆð>=´=·þà=«8=®¥Ö=·L7=Ÿ××=§U#=¬³]=ºÜ=ºA’=U6=ÇH€=ÒEX=«Ú=´K¾=ê„=›ˆ5=´“?=ʼn=ÁÛ‡=Æ@^=¦^W=Ñc–=°Ÿµ=±Â7=º$í=Éó_=°®=ÊY<=Ùëú=Ô»=Íeé=³¹=¹³œ=â.Ç=÷B¬=â‹=Õµë=Þ}ô=ÛÒ8=àaV=Ôq^=Ñ!=Þ½Í=ç¡=ï—à=Ý w=Å–£=ÓèŒ=¸C³=­îà=¥u#=Ëú…=ÄË=Ê=ž=¤Â¢=ÂÔP=Ô’b=ÓÙí=ÀÝ7=À‹{=É5Ï=á(0=ÂôŽ=ÄÒz=ÀDx=µú`=äS•=í}¤=îo=âÞÈ=ê‰v=Ò¹=ÝŠý=Ççí=ØÖL=з“=¡Ó«=ÉÍ=áÌ=ÜÍj=é}ã=å*}=¾×=ÍÍr=Þó!=Ëâ=´û=ÌAž=Áæß=À¨Ù=ù=©ò=¥ëÞ=«5I=ÔÑ=É¥g=¿ž|=àâr=ðuÓ=Íâ°=Åì¶=¾q=ÍNu=¾ï–=­mÕ=º0M=…ïn=«©#=ÆBM=É`ö=«¦Ý=“v=¸fë=Ç ^=¦Ðd=”|\=”u#=®´Ò=ÉéE=ÁF=¯,T=¡9=‘Ø=Š=«{=“{ë=—GD=¿ã‘=Ê„=¨é =†y=ÈÜÚ=Öí =âÔm=Ì1:=ÄÌÇ=ßô«=Ý.=ß×L=µ)Í=˨=òó™=áwù=­—G=½¦=±­=¾È"=ÑGz=˜sî=–cv=ÙÐÿ=èçÁ=Þcá=ºUç=µ¤=¶SH=̪=Óì¤=Ó#]=Âô=Ìÿë=ÉÄS=ÚÍ==Â\=¦F¾=œºù=¬Ö\=Ì•Ø=¨ê=«×­=¹ç©=Àá\=ÃBð=Ëm=Û e=ßàB=ãzû=ÈÙU=Åœr=ÖJ=³‹Ý=¡»k=‹y|=¶Ö¢=Ä7=Ä8=Ø“±=µQù=½M,=ɽs=Ò{h=ÄÞ =ÉX¶=Ó]º=É`¤=¢*–=á¹=£Â?=¨%ü=§ø“=¾N¦=Õ`¸=×i`=Æ×P=Ç©=¶³=¯E)=¨†=”ÿ=§©é=Ÿ=#=ª«º=Ó<=¶Ë=™¸ü=·r=¸Ñ=£Bµ=½&»=ͧŽ=¶*= +ñ=¢=Ó R=ÐôP=Òì=ð‹â=׋=³ p=Ê—=ÃÜo=µ,¤=’8=¬äÊ=¸&Ò=¢·¡=§« =È(/=ÖÃ=Ñüx=Ö#=ªÞ=æÇ“=öLß=Á¿¸=¹=¹ý=Äž=ÀS»=ÅNM=¹gM=À$Ì=Óçì=¸DL=Âó~=Ô‰Õ=ÊìÄ=³úÖ=Ý=¼¡‡=»?¹=Çë‘=¿F×=¾™ß=¶uÊ=ÂÔ5=¼UO=½M³=»£˜=µ™=·$P=º%„=¸-,=åà=žì=ŸÀ“=Üé—=Α•=Âß­=èåÈ=ɦé=ÌSŽ=Ê ƒ=Ýê5=Û’2=Ë_8=À&ë=Ä}q=ç|Ù=ÙÇò=Þ°á=΃ß=Κ…=Ö$ƒ=Φ2=ÍÄÿ=ç09>Ú÷=×_}=½rÁ=©¹=É1,=Ö£P=Íè„=éTZ=ì™Ý=éç‚=Óµ0=Æ =Ô5=¸³ƒ=Â:t=Ú0=çäØ=ï‹­=ïÒ¦=ß ï=ÂN…=£¾=¼0d=ǹ=¿¾=Ï :=×Î=äåâ=ìD=ç̦=ªg³=Îrÿ=Þ?‹=ò±=׉û=Î÷=äbq=ηÆ=Õ=d=ÑA=Îì=Ïcý=ÏqÒ=Êæ=Ããq=Åàë=æÃ=ÿÒÒ> -÷>ŒO>à =å:z=Ëò/=Ĺ=¶¼±=£b|=´Z­=Ë–¹=Ö«+=¿ü=¤Yy=­°\=®îT=›¹|=¾&ì=°Rb=˜¶¸=Æ´%=ÐZ¨=Ä«÷=Áon=¦Ð£=•‹„=¹ïc=Îc¯=Ò.¨=Åýz=Ê&&=Ã0'=©ÿ=ª=·Ö»=§œØ= yo=¥/£=Îá¼=Ç„=¿ÿ-=¶t4=¶ -I=´¦)=µˆø=µõi=¸(Æ=Á$‰=·ÔÓ=½o9=Øš=Ø‹h=Ûëƒ=âõ2=ÎSQ=ÓÈ…=ã‹=Å›=©÷ô=„Ž%=Áü‹=¿†=²™=§I =±ÿ!=½8=¥öM=ȦÎ=ëzÌ=¥¹Ù=¼Qù=Ôê=ê+Ÿ=ÇÅÓ=³œÅ=Ægá=Ìm(=Ò»1=ܱ-=µPò=³¯=òï°=ÊJZ=¹‰M=¹~F=Áæ -=Ï=ç#=˱¸=¾óÞ=¹o=àýû=Ø=ÃlO=ÂAû=¸g»=­=ã¸=Ò&«=ÅM=ï•=‹=¤ñ=Í=Í#Ô=Íîd=×6^=Îï&=Ïèk=áu,=â-Ý=Ý6=Õ° =Âη=Ë7Q=ß©Ç=Þµ#=ãÄÏ=ê£=Ìw=×ÎG=èÆÏ=Óz¨=Æ5ò=¼:ç=²¬Y=´$Å=¸hL=ÝøÔ=ìœ=ëÝš=Ñó«=Ûº/=Õå‰=Æÿ=Ù3Ú=àg=çvÁ=ÒÞ =ÇH|=»c?=ðJ)=÷>=ü7 =ûÔä=ôÂ=ê"[=Ä=ÓÁÕ=×’I=ÎÉŠ=×I=ÔÒÂ=ÎØ=²2ê=½·8=ØY¶=¥¨z=´ÿ =̲W=·Ú<=Å^=Ħº=õª=°áã=Í:Z=ÌT£=³òÌ=ºG=á^v=êu÷=áuÉ=Ë€ =ÔÖ3=Ëøþ=À®B=ÊâW=ºci=«Q6=«3&=Æ‘&=É7=•‹ä=£§ü=±^_=¿ %=£0&=²E=Ót"=ç#;=؈=É+D=Ó_ƒ=Ëê=Ë‚Ä=æ¢4=Ѫq=ÍS=æLþ=Þ”î=Ýü2=æ"2=Ôg”=¿Ós=§kõ=»?Î=Á™¬=Èòõ=ï|=è=äÚj=Û©=ÚeY=Üß=å+5=ÉóR=Ó=äÖÝ=Æ»=Êþ¼=Ï¢­=ãÁá=ĸ÷=·³ó=ã‹™=¾ f=°¸=¯–3=¾Ä½=Ãà»=Ãñ=Ëyf=É-=Ä…p=ש=É­Ÿ=É(³=êr´=ãwË=Ûg=ËîÒ=Áã =×B¢=õr=¹Èé=ÍÍv=ÝÊ”=ËöÂ=Ólë=Ûr¸=ôdG=ì‘l=çN==ßB=ß{…=Öëõ=Ë6=˜Ê1=µ‘Ö=ÈïÇ=À)î=Îϳ=Ñð=Êv=Úš=à å=ÝÉü=¾5Ö=ËñP=΋Z=¡I=ºžŽ=ÎvŽ=Ý8·=í£†=äMò=ÒÔW=¾ô´=ÍÜÁ=ÛŒè=ÜZC=Þèv=Ü[ð=ç&à=ÁÑH=­Ür= {=éž÷=ØÉ=Á¨#=úº•=蔀=ߎ=ðÈp=á×(=Ù®L=Ñí¹=Ú#¯=ÏE[=¿ˆ~=ïO]=é-E=ßKª=½¢Ä=êJ=Ö=ïÇ=Ô=äÐy=ú#3=ïCÁ=á +=ÔFŽ=¼ÿ=Üõ˜=át=ÛˆÇ=í*¹=áP=ÓW=åF-=Ü»=Òzr=³¬H=Ü V=Ó$=´“=Ú|=Õ€=Êaé=ŸÊ{=Êû…=Û"=ÛÉä=ÓAá=É´=½¢¯=ÑÇZ=¨gÈ=”;=¼ÂP=¼Ï˜=ÅôÒ=Ú˜»=Ò½=äå’=ö°è=äM&=Ö=Ì®`=ÅÂù=½Çê=»ñ=½©¡=÷(=×¾Å=ÇÓ¸=Ϧ‰=öDz=øòÁ=ìÃk=ÚÇ=áSÁ=ì–q=ãcw=â§É=íWÍ>±l=é@F=Ý—®=ÚTÈ=íè0=ô”#=òp|=⤠-=ÒŠV=ß:[=÷=ã¹=ãI=àåñ=Ø·[=ÑåR=ßËx=ÿq.=ö<«=øÈ=ôäT=ö =Þdä=ÚÁü=á=R=¼xÆ=¿üð=Çg=Ø9=æó–=ê¯O=ëú…=ä‹=̺Ý=µvÓ=ìg7=åtU=ÔÄc=± -~=Ãmx=ÄU=ÅhF=ÄU¶=±0c=·=ì*™>©ç>« >÷>.=ãtÆ=ÏI8=×Bþ=×æy=ÛÁ<=ß½=àí=çÆ7=â1H=Ì°=Ìþˆ=Õ}=à"0=à6=¾¤ð=³%Ï=Â\'=ÝúA=æ }=ðLˆ=Öca=ÑAä=ÔÁ=éŽn=Øó–=Þ£Ì=é“v=ßAs=ÊKZ=Ë“¿=àÃj=è’ =Ò…»=¼©=üf_=÷™=Þ ¬=¯+=ås™=ÜiŸ=É-w=¹“Û=ºcÃ=ÇpÝ=àu®=ñ\­=ÛѼ=ί=Ö=ë.=ë¥À=ßf¬=Ãcí=Õ(‰=áÇ=锶=Ú•Ó=ܵ=Þþ­=Ã9z=ð~>î<>qŒ=Ýä‡=Þ*i=èB>‘ë=á=æ§ > -L>íH=æ³m=ÐÒ=ØŸ÷=á:ó=èRÛ=ô=Øjî=ëu&=ôøÆ=÷r=Ü"˜=Ó%=Ô‚:=ÿÒ=ÚvŸ=Ù©=íÛ'=ãgƒ=˽2=ŧA=õö´=öØ8=ë¼:=ãº2=Î(Â=âŸh=ó“Ê>ÓÖ=åú=Üç¥=Þ°ü=÷”c=÷h‘=ê’Ê=Ûb=Úä=Øj=Í•£=²5E=Ø’=Ôkµ=Ò@…=Ú¼ =âPE=Ñþ=²ÙÞ=Ä0ÿ=ëj7=ð®ü=Ä•=ÞÃ=é÷[=è‡P=ÙG|=Ó‹ =Ü•=ìO=Зÿ=Ðr =â4>w'=ÞV'=ßÿ=çx³=Úð&=ú‡£=øòq=êà2=ÑÌŸ=áåS=Ù)=¾ÛZ=Û@¸=Ö‚Q=Ü™8=úÒt=ß -3=Þ—Ø=ÙoÂ=É!I=ÐØ”=ć=³BI=Ê1W=å -=è¸P=ÝØ=û’Æ=×ÉË=º…=½JÅ=á‹œ=íÜ=öÒå=ÑÍŸ=ÞÍß=ðuÖ=úøn=ç“(=ø\€=êÏÅ=¹v™=Ëx=Ä»=Ës¼=ô‰=ÕKœ=ÌÜÈ=Ñäì=õd¯=ÄvÄ=»M¼=½‡= ý”=Ö2Ú=÷!Ÿ>s8=ì+=ï;=÷@Ý=ÿA±=±Ç=¾&$=Ïk=Øq=¥ˆÎ=±ØÇ=Èrˆ=¸]J=¯8€=­w=«ÐB=¶6=¥o‹=¡«I=¬Þ=µé =Æ|;=Äs=¸®š=ºÆx=ÅÑ;=É ¶=ÄÃÜ=Ï=½d°=¥¦÷=¦|=Èí=Ø- =Ú™;=ÏÜB=Îùê=Ò72=Ù£=бº=¶™Â=´a°=·v¶=·%y=Ü@¿=ݶ=Å’=ð%=ᾟ=Ý—V=í¡„=ùôˆ=òÝÏ=ëÇþ=Ý‚Ù=æåž=Ýè=ÈŸî=¦?Z=À§§=Ñ "=×–=Æ82=³D =ć=ÐçÒ=¿s|=ÇÃ=¾ =¨Bì=,=œ»h=—|u=“ý=›Ÿ"=œè‰=Ÿ´3=¡e¡=ªD=²‘=±È=·˜%=Ì7£=Ä~R=Â~?=ÂÑr=É…=±OÏ=²Ib=º8Â=ÅFç=Ý\Ñ=Ø¥=Æ›Í=ÝG=¿Jc=»·~=ÅBx=¹†=½tM=Í¿ô=àÕ=¸1-=ÞÌ=åL=Ýe=´ã =Ã3š=Èò4=Ðõ‘=æXÙ=½<®=¸Ž=Ãy™=Âv=Ú8'=ÅÝ£=”…$=Ñ.:=ÈXš=ÁÓ®=³™a=½ºú=æ'=Òš‚=“–„=Ô¥$=ï=<=áó=Ïד=½&Q=ÄBç=Û =ðP2=×=ë%=ãmÅ=˸Ø=Ô==Á,I=ÂAX=Òs©=Ól =ÍQr=ãÂÎ=à&#=ÁÙ€=ùS¯=ïdF=Ι =®<”=É®¼=»2—=½Þ=ä7=χ=ÂI†=ÔKà=ñÍä=ïS=ÁÿÑ=¹–®=çú{=Ú´ =Êñ}=ÔS†=è¸=Åâª=Ø! =Ö®ø=ÁOY=×ìI=àZ=Ù¥7=ÐVj=¥O<=áèÄ=éz=íýk=å÷k=¾õ=Ät%=ÁM¤=¤=Öì:=ÁÈ£=¹(&=Ð3‚>ß>•’=ñÎ =ÃS¶=Êçê=ÜL=Þÿ™=ÝÒ™=ÐD=Ïä =Ù7Š=àÊ%=ò¬‡= f=Ëaò=ðÖ=Õ.|=Ù¹/=ÙK@=Ó\Ï=Ö=ý#=ׂ=ÚI=ãG†=©õ=Í=ÑjÜ=Æö.=ï Ë=äÇ–=Æ“‘=¿ÕL=ß«=ç<ª=Ï$Å=¾Ñ=Ôì=ͪ=ÄÈ«=Íœ=áæ=ñI³=üéF=äB¬=Á÷˜=·bÑ=¿”o=ÂlY=Î-=ÊÖ2=ÒŸ¤=ã@ =ÒýÁ=³9K=žú¢=¶¸]=Ã{•=Ït=Óמ=žÄX=Éa =ÕÆY=ÃÇ,=¡ÇK=nL=£sô=Å~~=ÀÈ=®~X=¹$à=µ+$=­©i=­ü=ÍÝÀ=Ûâ=ÃÜ•=ɵ4>kY>ÂÑ=üÿñ> fT>=ù=Û›’=¾Z_=©“=؉•=¥_v=¬\§=ÀÜ =ÉBµ=Íÿ=Ô{>=ÉTk=Úô=ÿ,=¡ß¯=²ŽŠ=×æ³=é =ä»W=ðw¡=Ò}B=¼¾T=¾¦W=ʉÅ=ªÅ·=›?…=™´î=«†= ®=Ì!:=·ý¾=ºMk=ÍÚ„=Ñ•3=Ïù=ä¤2=ê¤Ò=Ðã.=ÕC“=Ƹ„=ÌZã=Ó =ÎH=¯m,=ˆü=¸Ò=¹ú­=Áܤ=ÑÌ„=n=¾Ë=°8¡=œI=‰Ít=«²4=¶Ïh=Á Š=³dß=²“È=”…=¨Ø®=½z¤=¾ç/=Áþ=¬µ=·3’=«y“=É2ë=²ìU=ºû=Û/þ=¹zæ=•{¹=‰Ng=„Åó=‡~¥=œÝ'=©.p= 4=²¤=º3 =™¤ç=‘s"=Ã%`=¾ò{=Ľ=¢ $=¬—=À"l=ºÚ=ÊÿP=½ø=ºÉ=Æÿ=ÛNº=¿//=À³=¶sV=¯!@=°'o=¿0=­ÛF=±^A=¬_ž=¦®“=Í™=ó:þ=ââ7=ªCQ=¨?Á=θ=½ å{=ù» =ùÎC>Ê(>8Þ=Ø%œ=ßB©=×Ë=ÈžJ=Òº«=ßsí=Â’¾=Ó„=âK,=ÔÀ*=Ïsµ=Íå¸=ÞÝ=Ï8¬=Ĺ=¶áÊ=Ñ‚=¹`í=«DV=®r=Ïô”=Áu =¬ë’= Æi=¨tú=Ês%=ÀQò=É.N=Ö\=ÝÕ0=ßN™=åV=ΤÀ=®ÿt=ÑlL=éB0=èþ=¹{=ËK=ÃL=ÁB€=£Dµ=š ²=´Ãl=¹ã,=¹µÏ=ëÔ=Þ•=Ú×x=ÑÀŒ=¿¯¾=¹7=Â%‹=¾§û=ã–Ò=Üvo=Ò)ã=AU=¬ý=Öu=Ý‚Ì=îQ«=ÚÂ=Áà =©/=²úÅ=½žø=¸Ñ6=¤‚s=» ì=µ]—=Æ×=ØàB=ð'=Òt=´Fc=Ó—:=ÁÖ=»´b=Þ -û=Å3%=Â#=ÝF‰=Ürô=Ü;=²Y7=ªì=á®=Þ\=ÒH=Ï @=«ÃO=l)=ÔBû=žbÙ=ˆ=Ÿp=¢hF= æŽ=Õc»=²ý= Ö­=½S=½ô=Æû=¡C;=ƒLd=À<„=Ù“Ÿ=×mû=¢K^=Öê‹=àû=âÇg=ߪ=ÕŠ¦=´ÇÀ=Ú¿Ê=íåË=äÏ=á =¢Ïj=£p6=¿éÄ=ÏÍ?=´ZÁ=»Â­=ï}Ù=Ä•=®ûw=Ä50= Ýé=¯ÉØ=ÕT=×&=ÓH§=×@)=×Q=ØÄ=°–Æ=¯  =Æ\^=Çoñ=»*¢=Ëef=奪=ß<Í=ÁÀ =Ís=ÁÚ=ÜYW=ºíÃ=­âÂ=îü|=î©=í…a=Íõã=ð¯‡=ýéÁ=¦Ós=¸ÎF=ÌEJ=×pë=èï4=ÐîW=ç-4=ß8=ÁÑ=æ1U=Êý¯=¹cË=Ë–\=Ô,=Å¡ƒ=Ѐ—=פ½=Іê=Ön=¿òd=°_=Ô°=ï¾:=ýÆh=Ý1=«!ð=ÖØs=à§j=îY5=ÎYÕ=À™=Ûçõ=χé=Є„=ù=Úç$=¿=É¿Ø=ÏZÖ=Эä=û‘«=ÂC*=´’ƒ=ÆÞø=ů=ÇäÒ=¹›d=Ñ<8=çØ>‘j=Å}î=¬Ç¨=ò•„=Õ»ì=Ï›u=»·]=ÇÁ‰=é=Ço‹=Èe8=Ί&=ÌÜØ=Ï b=Ö><>WÃ=ïúÂ=Ë¿Ô=Ù6€=áÛp=óSÅ=øQ=ê´ =ɨ²=Ȧ¥=²U4=Ω =åR¾=Ыj=¦/ˆ=Òx·=àÎ2=­Íœ=Ñ««=æÅÜ=üÙ©=Ë,w=¥Ùó=©vO=ö€U=ûÑ=ÖWš=ų¤=½§=Ù‰á=ß]±=ëDR=¥«=µÖí=»U -=”(=°š3=ɆQ=Á$4=Ù ¼=öî:=®zÅ=·„=Ç‘C=¹÷E=½vq=ás.=µÁ¾=¦@=ºßh=º5†=ÐÝa=â´ -=¹Ë =Ïê‚=ä9*=ÓÉU=Ôó¥=ÐÍ~=̦»=ቄ>´=à„‰=ÔÄþ=¿xï=ÔS=ã›S=ìQÄ=ù™¤=íˆ\=Ñ =Ç/b=×ô=ôO(=×ij=ËŸÌ=Éi=–²õ=“©U=¬Xa=Õ’o=ÕÂ…=¿9á=Â@=Ä=Èo=Çjþ=ÁmÄ=Â=H=Æž/=ÐùQ=Øá“=Þ<|=è>4V> Ìû> ª‘=Ïsó=ä=¾<3=¿ R=´Ö -=º¶î=ÊB4=Þ…€=à ‹=¨=ˇÕ=Õ½=Õ[=Þƒ–=ÛH=ÓŒ<=Ó:ë=Æ:k=°—{=ãÈB=àð]=ÒQ=Ò­Ý=ÛI£=è4Ç=È`$=ʆj=Ðí•=ºá¸=¾ê=Äïu=Ù—E=Úà =Ú¨=ÙÕÙ=Úw=ÙâS=ÎÖÅ=¾ -i=¬L = ˜.=ÇId=îÅ =ÍRH=´F¿=£0U=×û%=Ýb=ãi=íÜ=Á±”=ž›k=“Ü^=®Šæ=ÂŽg=á‹d=¾ÜD=ªº=¨Ës=µºú=Á.q=Ééo=Êh=É×=¾Gg=¦¼}=¦0=È)=Èf=²=±åu=ÊâË=Ôõi=ÜäL=î&–=î³=ç>=ð.=éëm=ÛÉ~=åJy=á”z=Û^x=È#\=ÎÆ\=Úùð=»kŽ=È -½=Ú†·=¥s>=ʵÍ=ðÒc=ï=Ä¿¨=¥Ê=¸ï=·¡=´V -=’Ë=“”¯=œYÖ=­?Ú=µ^=½#==ØÇ=ÏÞ)=Á®[=¡=±Íf=½eu=ÌÆ=°ê=½æ =àwq=ÎÊ=ι =Õ.Ï=ÔeA=ÝEO=éš=ʨÛ=ËAÉ=ɵ+=é—û=ÅÐc=­eñ=Ó¶r=Úêí=Ýùe=Ó0=½ê=¹zw=ÉG„=ØT#=Êžü=“—ž=¼•=ÄêO=½MY=Θá=½­_=rÙ=áu`=Ôj&=¼S²=Ïðb=Æg=»øA=Æ«ÿ=ÒÆg=ÕQ–=¦êð=º§©=È[—=Ùÿ^=ËcÀ=ÒN>"Ð=Ûs=ÒM=Øøú=ÈO_=Í`%=Ù·Ô=Ùyî=í>ì=ø6y=ÝRV=Å)=؃¾=¸€Ë=²Ù=÷!«=¾+’=ª&§=¹d=·ä‘=ª"÷=…58=¦Õ=Áåð=á‹`=ý²»=çu³=ËàÝ=ÃÅ=Ã( -=Àb=¶é‡=ÖŽ[=ä|Ö=Ë=ˆ=íÛr>8|>ž%=ÏE=¿€½=¿Õö=¸ž¿=¹œé=ÀA³=Ó1t=Þ†~=åP=¿‰ý=Íwr=Îì=µJ=´Çx=ÃŽ =ò1~=²{’=±cj=ÓÞ=ä7Ü=øù«>š-=è - =ÑUý=¾?Š=¾ê=Ösµ=äb=Ü“„=Óv#=ÍJb=¼ð‚=³8Ö=©¼=Úu.=ì]¥=åY©=Ú‘=Ïó==άÞ=ÍF=¼z¿=Éž¼=Á§=Š=¶=™&­=Ëò=‘=Œ5G=š%|=³=ÙÆ=ÏE=Æ"Â=Ï«—=ï¯T=õ -.=ÄÛÎ=ÌÌk=Á’=§!Õ=Ú{ß=ÕÛ&=Ķ=ºux=Õ™²=èóT=Í‘†=Ís&=ÈLŽ=º(ñ=Ù6=çs=ô£=ÏÄ<=ÖQv=âGÃ=ýµÿ=æ¦;=ÔÂÊ=ÌÉ=±z²=±WÂ=ÖÑ©==꣯=Ö¶o=æê==æ¸=áÌ=êÆo>Éu> -™Ï=õ!=õH=õ€î=ô‰›=àú»=Ý`Œ=×ay=àÇ)=Ð!˜=Ê´}=ôMø=í»Š=éüj=ê%=á*z=à$/=àÑ.=êN =åÙb=áª'=ÿpp=ý#Ñ=ü\x=ý ¿=üçÂ=îTQ=ÕŸ.=è£Ã=é¸=æ‹ñ=Ì”\=æ¨ü=æ`=ÂW:=ÃÀŸ=ÅÝ=Ëì=¥7y=Êr2=ç.=Áô<=ÁRÄ=¼í³=®FJ=æ>b>1=>Ê> ܆=ùA=ã>Oê> ÷>lî=Þ8>=ïï_=ð¶à=ñ/=ÞB=Ø´S=Ù_=ðΪ=÷–=ûü~>E=â®F=Ù§Æ=Õ"=ÓÔâ=å×(=ì_=ÔU=Ót7=áð¨=ûã=òÚÃ=ûÐ¥>t@=Þ×=òkß=ù×Ù=ò×=â²¾=à›D=çL=ÞŒq=Øì=Û€£=ò4X>8Ý=ÿ¡6=ðÑ)=å­Í=Ò#Ö=¶’Í=Ô+S=³nJ=©`=¶9l=ï͉=î}Š=Ü—±=ÀÔÖ=Í:=Òªç=Ó¢®=Í"¤=ÐAf=Ýsã=æUØ=ñ<=ø­=ÔG­=Úëœ=é£C>á=Ùzê=Òþ·=Øi†>ä£=íµŽ=åW =ú_†=øsa=þ,>:’=ÈæE=Ð;Õ=ÒÓ*=Ò‡@=ç"À=Þl1=À=ð=Ù'k=Í¿¿=ïAö=Ùª =ÛÃ6=÷·Á=úB§>9Ë>iÔ=ï:;=ÙÓ˜=ÑÖ'=Ñܵ=÷íŠ=þK>º=ù¿Ç=ùЄ>Ä”>Hæ=ý°->·%>º=ÓÓ=Û`=âŒÝ=çu=¹lX=Ù¸¾=þhv>oÌ>i>>ß =ðÄŒ>¦è>M?>çg=Ü®D=Æt=¾@=µpk=ÙI=â|=éF=úŠX=Ö¾ =ÚØÿ=ûgœ>ÓÀ>àU=ò³ü=Êx4=éÂÄ=äƒ=Ë×°=ú¯^=æg=׎²=ß«ß=ÈqÔ=¿t¶=ÁÄ=ËX¨=×ÀY=ßûè=Þ¡"=ðr=áïé=ÍòÒ=Þ¦’=Öó=æ>’d=ÿ'{=ûÛã=ûN=ÌûÄ=Åz³=Éï=ÖØ¡=Üfº=ïÏ…=øëV=à[4=×±$=ʶÄ=¸[Ø=§°ç=³"=¶šT=¥‡ë=ÖWO=Ë…Ù=¹q¶=ÌÅh=ÀD=»¿"=ÄNÀ=»ís=½“=»P=Ä(k=¶nŠ=¸² =Ìð%=é·=ðò+=ö¹=ÿ’à>Ш>v`>º©=ìX¢=Þƒï=ÜNý=âÕ÷=ôâŒ=àà=Ö(õ>Ù¿=Ó Ì=ÎØp=Ú#>‰þ=ÓÜ=Ì -ª=ø•ì=Ú™Ý=æ=òËÜ=ØLT=ç÷9=òìE>=>‘,=å¿g=Ü÷M=ês=óCÀ=ü˜>;3>í&> ±Ê> „?> T>:=í°]=Þ[õ=Ò-Œ=¾Rž=¥Í!=’ϸ=œ­‰=žî=Ÿük=ªÍ¯=ª<=«z\= QZ=‹Zw=§¹D=Š-F=qÒl=ˆëJ=£ú¶=¦Q=¤ìC=ml9=œ™´=™t´=€ÉÎ=©|i=°>‘=¶Cé=Çü=Ò #=Ùº=àÅD=é#”=ÍõÑ=Çü=É5¯=ܱ=¹»{=±±Š=¾,þ=姡=î±F=è!½=¿d·=ÎGÙ=Àƒ=¶#3=Ïc=Æ&…=×g=ñØj=çõÐ=óÉ=ëDP=Ïп> D=ýå#=ö‹W>d_>,<> ~Þ>¦Ç>ä%=Þ=êÖ=ûÿÏ=ëóF=Ýpï=óìã> .(=âLù=݆Ñ=Ó­=ÎQ‹=Ó%©=å„¢=ê¼7=ÙÒc=êv½=؉=Õ-Q=÷îÑ=Ü–¶=ôy> -e>IG>…¯>ðw=ÙQ&=îh‰=É´ž=Àñ=Äâ]=Å=ÎÎ=ÊÏ÷=¾Ù¼=ä¹-=ϵ³=Âà_=±-¤=ÝTP=Ü©¨=ÝÈ=êè~=Õ'-=â¶=ëƒ=ÓÙz=ûq=ën~=×k+=øð~=ñl›=êÓÚ=òrN=æ£=ÈA¥=»U·=±ØQ=ÏyÝ>ôi=üî=ÔÖ=§‹=Šƒh=zS=Ö~¾=¼]Ù=¿¸ˆ=¸N´=«G‡=Ç#=Ö=ä8=÷> -=Õí‘=˱½=Í¥=⪲=±ì=Óå¦=Ù==­¯Ô=­‚=ªìc=«*T=¸ò=Ø(f=Ùý =â =è´=Ùh§=êpþ=å;Ê=´a¯=½”­=Ö´Ã=çc=â‚ü=Åü©=áLù=ñà=¾Y«=Ð9=Þê¹=äà=ÖTP=æ¼=ã¥{=ëÑ¢=÷%æ=ðMÑ=â³ä=Û V=ÐÖ=í„Ò=ç#À=Ýôâ=Ûm=æ”ã>ï¢>#a>$d>œ=×н=±a=½©V=Í…¦=Þ=ÐVÜ=Ë1 =¹#R=±v=¿Ñ=îê=Øäü=µ^1=»¿=Ã3-=íW#=øÂ=ì>`=ÈQ=ÈÃ=ÌmÑ=Ëð³=˃0=Êܽ=Ôc=Ʊ)=¨œË=æÖþ=ÑôT=¾ÕÊ=¸ªW=ëb=äQ¥=Ëì¿=϶>wW> 8=é¢=½Ð«=ÊY =뢋= ñ=°&õ=Ș©=ÞIp=ûV_>ùß=ÝãA=Åb÷=Ä6´=Ýt*=ð")=íˆr=ή=Âtñ=ÕX=ÄÔ‡=ච=Ôö¹=¹B¿=¾X -=Ï0c=Ìß=Éñ‰=äú =Ü¡Ö=ð+ù=ëy…=ÆÏ#=éCC=áb =ÚŸ=ÕáÍ=ÅH=˜ý=éÒ=ª©d=ÊQÂ=Êám=¼Ç=¶ð}=¨ÙÆ=È*µ=²ŒÍ=¼µ>×k> !>•}> к=ìm=þ¨ð=âBñ=ÉÿX=õ>\=ºqn=™¼™=­Øè=ì²r=Ý8=è«8=ðã=ã¥>&eÞ=í*Ÿ=³Ìª=·™¡=Ê¡[=ÐÐ?=Ý0>=ì@Ê=üí=²¾Í=Ï.ù=ì)I=ÓÔ?=ïFÔ=¾Z‰=¯§[=Þ"2=ˆX=¬©=¨íé=½¢å=æ¤=£ Ã=Ñ<ë=þܧ> ¤¿=ùòì=ã*÷=Æ5[=£p—=½Ü”=õ¹=·l=ôÝ=±Ís=ÐG =Çžž=ºv=ÛÌô> åk=èÄã=Àˆ(=Ÿýc=ðɯ=ó"&=õ¾®=í¯j=ê#à=ÎÐÖ=ÇP=ؘ€=åx)=Ü •=Ýg=Úò{=Ù×û=ÅQR=çÀm=É$ö=¿'Z=Á™=ÝCr=Ånx=­¼u=¥Øœ=¿|t=àý-=Ý7F=Í ç=·OŒ=ãî=Ô6È=ÚtŽ=ÂÛR=Ôçg=Ò  =Âóñ=±œr=Êü4=ÖC%=ÌÉ=ÇÈÇ=×ìá=Ôuø=¼è=²#ß=Á v=éd"=ÊÛ =½±Y=ÈU=ÈgÚ=Òµx=ßÆ¡=Ö~=ݵ¤=ø=*=ãˆ=å¡$>ÆR=ÿrÂ=ø\=Äßš=»µA=Áq6=Ãëˆ=•EŸ=¢1é=ÄÓ­=ØIW=ÑDO=²«,=ŸÒ=¿L¥=¨û–=!=ʹÛ=À‰U= š=èò=ã±=’ù#=¦6=¹C=²­=ÜF}=ᔊ=Û<ó=ã4·=íìc=â!Ä=ôS> >cQ=×÷‰> ¶¢>éì=ü™=üí=ðß=äÑù=ÖäÚ=¿…[=›Fp=Ëca=Âa=º~Œ=·Æ=œ6a=²È=й=ѨÉ=»zØ=’fŠ=Æ’L=¼`Œ=§Æ"=£~é=‘`º=•ËŠ=¦oƒ=£C=§ˆ¦=¶u{=ƨ =º‡°=¨i·=Çï> ʼn> >(>}¥=ôId=ñ(4=É ‘=Í å=à`=§X€=¹¦0=­° -=§ –=ϼˆ=Ï o=øR©=ê¦==þƒÊ=ÐFŽ=¼]=û!ö=â×,=Ü>£=âÍ=Ú%±=Ü=s=Ý£œ=àIå=ö‚Ã> cÑ=îËÙ=Ç\Æ=ªQ =pqJ=à³—=ÒV1=¬_=³2º=Ò¬ë=¼°=Ñ^Ÿ=ÂÅ=б=à-ó=º½‹=Ù»e=Å”m=ªä¥=¯§@=à˜=µÙ‚=¤Ñ|=Ç=ËS½=¾oì=ÀZ+=¶áA=¡J—=u=Óòa=ÕWÐ=ãHŽ=ë5À=ÁÝd=Ä–=Âí÷=ø/ª=÷‹:=Ñr®=¼]¼=À€×=ÏbŽ=Î<Ù=Ë0‚=Ô…Š=ͬ[=Ù=ÑÅ=ÓÈÔ=Ë,×=Ã^†=Å >z=âS”=©8•=Ú·¿=Ø™û=Ð"æ=Í*­=¼RQ=µßõ=»Ao=Àn–=Ãì¡=¶‹}=»†Ÿ=Õÿƒ=ø'¡=õOC=ÎX6=»ÑO=ý ==ô¥=äÌÁ=ʶß=äã=Ð×¥=î=¶Kâ=´Íê=ÂJo=ʼ2=ÆBX=ž¸=ÇGK=ïd>"³=°Ú‚=¤Ì&=£%Ä=±èJ=ÀÑ:=ýpâ=±-î=¥¨è=´û¤=µ©<=¢"Ë=¶ A=ÛV©=êî=ÈÂ=»ÇO=Í+i>@–=÷ü¢=à…=è=¸ú=¯9_=Ôι=äÓ)=¾u7=¾‹<=ï”y=䌜=àôX=á7=Ýô=´CÏ=µrè=Ë!k=ÅÉ•=¤ëX=¶M=Òö=ÙþÐ=Ïr•=ÍÂ=çF=îêÐ=Ö„—=º4˜=³ó=¾É`=ÃÛ=Ê[=ÛQø=Ì•¥=É)‹=Þç˜=Ïš=¼e#=ÆW=ÑAà=ÏÕ«=Õ­=ÈPå=É6¾=Äu=¶‘W=³tÌ=Ú¿Í>qO=ä¸ =Öm=Ë ;=¦EM=§êv=âd•=ÄZ=¶œÔ=Øåä=é”=Ò p=±L­=³3$=µ¸o=ÄÒ˜=Ö =þÛ¶=Îq¾=Ä”´=îv`=õê9=ì<•=ÿÈ{=ñ˜h=ùF =ù·Ä=çj`=ˆŽ=ŸïV=½i5=ßËä=àÇã=à(2=ÉÀ=Ê@ö=Ï`’=Ó=ψ=Á¥=ÑH=ÂM|=˜ç†=ÓX¯=ø­±=·°Ñ=±CA=Ë•4=Û¢ñ=ÖÜÈ=ÌWX=ÛOó=ÑÈ=¸“Ø=ÄÚ¼=ÊÆÔ=±O=ºcu=ÎXB=ÉíÎ=×ÿ=ÉK›=ˆN‡=¦¡Ø=¯ë=°'=¸S­=Ò3E=¿9=½X‡=àGJ=ÒÊ=Å›á=±"—=¾q—=Ì)¿=Õê=á:d>ƒx=ÔÖ×=Â@‡=Á¹ž=Ú”=Î!=ÄÑ=âe»=ùs =÷ =ÖŸ^=À¾€=Ãr=¿ ?=Àñ=ËŒ'=Âò°=¶q(=¬o=²%=ÇÇ%=¼Ž–=·d=¬¸I=–ŸE=¼Žî=ÜÙ)=×ù©=Úd'=¹LÆ= V”=€1©=Ì™ü=à$H=ØpŽ=ßž=Ùéæ=àää=þr>Ï©=ÿŽx=óL=ë„C=¿´²=³½›=½ç®=Àå=¾H@=¼‘q=âL‘=ãQ>=ãŽK=Ü?$=Ú(—=Ú$2=²†=Âub=Í­=ÚPÉ=Á6=«ÐÖ=Â|À=É&R=â—=Ûdö=åÛ)=çþ…=È u=°4Ã=¡#=¡k—=Üžì=Ñ/=Ð×ï=ÔMÆ=ªi=¤ˆ`=¾ÿ§=³w/=²—,=¾Š=¯=«V•=ÇhU=­×,=ÁY³=¨‰ =ž¹;=™±{=ÄûÐ=Õöè=ãµ=£‘Û=¯]=±ÕÐ=ÖJå=ÇÌ=®ã„=¾Íˆ=Ñ®Ð=ö€=Úvå=½"µ=nJ=¬Èà=¶DË=¬6T=»¡h=é%=¼gÄ=Ä{;=Ñ’à=èܸ=Ûw=ÍÚÌ=Ö£0=È10=ÀY4=¹»´=ƤC=Ü(=ØÍû=ØÎ =éþ=É‘ß=¸ñ˜=¯í=ÔÛk=éÑ =çWñ=å¼=Ùºž=É84>R=ýßÃ=Ío=þö=Ê0n=Ûû=¹¹?=«Ü‹=«Á=² =ÂÁ=À… =Ùõ‰=ã¬=Ç@™=»‡¬=¾q²=¦Î\=°­c=«=›ÈV=ЦŸ>u•=ÝŠÒ=ÓÁ=Ñy¤=ØV!=¾<=ªúA=©'”=°4ø=É=ìo=Üø=ÅŽ=Ò7 =Ì,=®lZ=½ÒQ=ÐEY=ÕÎ=àÚÔ=îB=ï¶=Ó;þ=Ñ8°=â³ =È6Ñ=Áõ=Êv=ÁÈW=Ñ5¿> °=ÚíE=·W¼=šÎÕ=Á‡1=Ô«=ÔL=ÅÁ¤=È‚¹>«Ä=þ®=÷=õû=îåN=æÆ@=ÇK„=é)F=ü÷>=Ò#Œ=å‚=ò€=ÜlÛ=ã»=æÚ"=ÄÜÀ=ËM=Íž=­À=­ž=®,v=μp=ÈÈ,=Á@ä=–1¸=­íL=Âü™=·]I=½ ë=À›ê=«X$=¼KÎ=Íé]=Á™=Ç =ÌH×=ª®ú=Ó5=dÙà=žþ®=žê"=ž‚Z=“€ù=ª#J=À9…=‡†=‡“ =‡=Œ8=£PŠ=§yñ=‘ýÆ=vÝ)=Jy=Iw›=SÌ¢=^"=^ªÔ=SáÄ=KHF=¦ú=ˆTŠ=_I=ób=¡è˜=®ìË=š–î= žl=¥þ½=°x=°4=®ï±=¯¹¶=Áú©=Êõ=ƒ—§=¤â=½XÒ=Ú=¾¡=µÂn=»uo=º‰à=‚Ì=‚Ç=Œ=¿žÉ=²H=£ø^=Œ´=©ð¯=¨‹ù=‚G5=š¬#=ŸÓ“= ¯=—²=¢™X=´6=˜Û=´=‹è =©ÑÙ=ºQÔ=Âx=”ìÞ=–]Q=Ž)e=lÎÎ=“%Ö=›½é=“ñÄ=«×=«üÁ=ž}Ä=§(=Ÿ¼À=”—=^±*=dû=mx8=ŠZÎ=Š˜¤=Š\=Še=]…¾=W\à=”=Ù^A=ÛÁK=߸J=æßœ=ÞÕx=Õæ=Ö"=ÕÕu=ÔÌV=Õ?Ý=è›ä=ê£ä=܇=Ý ž=æU=ñÞ¨=ò‚ü=ñðZ=îh`=Ô±š=Ö=Ùš=èy¯=ïÉ@=òhî=ò&•=Ö´8=Ì-=Ã-Y=ÔìÏ=Áå=ÃDÑ=òe©=ÔÈž=Ñ!§=Þ?=ÜÅe=ä;?=ç3=Á$=Ëí =ÐùÆ=Àbr=°Öt=Á¶=çöq=ÍÅ=ë÷Á>&ê=çF=ðË–=úªÅ=ñà¾=ÚÑñ=Ñs¨=ÊÁ€=äÜÕ=ñH=ù¹'=Ôb=ç|Ž=óƒz=û)#=ÝL7=×ÖÍ=Þ•ß=Ë  =Ú©Û=äëm=ËõÄ=Àv;=¼_&=ÓÉ=ÃÔß=Ó‘Î=ò=Ö¬¬=Òôº=Òêp=ÊW°=Ù†ú=Ûñ:=Üíî=Ôj =Ù»=çÞœ=¾Í=Ö£¢=æÆ>=ð%=ÙM¹=Ù¨®=æ,=Ôp±=æ}Ò=ú${=ð¸$=Û%2=Ö4 =Ü¥>ô•> ¯|=ðQ=Ô%Ö=Ì-ë=Ì“ù=Ôb=Ü]õ=Üû½=ÞW =ßI\=ͦ=À³ô=À²=Î -$=Ì'j=µí¨=Å–\=׆Ï=æ« =Ý%á=Öóà=ʺŠ=¬©°=Ì’²=ÚVž=æV=ÜÆ:=ÙÖh=Úæ¥=ûa¶=ÛV}=Ü<ý=çø=ÝP:=ÚC =Ó,=߬Ë=¾9÷=´Õ=Ë=Üèy=Ôbè=Ì€=ÞŠ=æ;Ö=ïÐE>GÎ=Û4O=Ï>h=ÍÀ=üó¶=ã¢=Ø!Ù=ÞÙF=´4<=¶^˜=¿¢=¸a¹=³yÝ=·ˆá=ÝÁB==îÎ=é -Ø=Ì-=Äø·=ËN-=óo%=òg×=Û:q=¸ßŸ=Ô¸=ár*=ë1x=ñå=äb½=Ø&D=Ì¥L=ê‰=Ù'Ê=Ò =ê_ç=±ÛO=¹…=þ(ú=ë±3=þq…=ä‹Ð=ÅcG=¦j+=È_P=Ëe9=Ä™f=ÆÅ=¥½Õ=£F@=Î$Ó=Íʶ=Ë€|=ÂõŠ=»ž¯=ȇì=É =ÖÉ=§K=º™Ð=È_#=ä,=Å0ø=µ;"=´Oö=Ód=Íkž=ÇÞ =²Ãh=Ø8¢=¼X=ŸO‡=±üÝ=¿l=ÁIj=¹a7=© =£,ª=¢Ù2=²ÌH=²8=¨êì=q=ªnL=–—=ö=Zg=Šý=#=‘Rç=Šõx=ŠÔ¶=ÎÃ=]?2=¿P=…¸L=HÛm=36-=#Ñ=R=§ =üò=m­=_Á^=ZF=ƒ>=þÞ=‹¨=J^ý=[´=pCV=‡,Ä=£_=ˆ4\=v— =lk.=~Ö'=“¯Â=–C=ŒR¥=’G=¡L=›Yè=’i=—׳= =£‘Î=·‘!=ƒ<=‚.:=³®t=…4™=‘Cq=¨] =ÐÓ¸=Áð—=Ä)o=¿ ;=£=¼=¸Ó4=¹T`=­bÚ=®^Ó=µ›Û=»°=ÃÃ{=ÍfA=Á/è=½Mm=Þ³@=Á0Ý=µÿ =´ž’=½ßà=²ó»=À`=Ò6Ò=³£ê=ƺx=½=¡Ú¬=À·Ÿ=Âì\=Ä}ž=ÎÈ=¾®Î=Ågä=¿Ô=”D=Õ;[=Ú‚þ=Êû\=Á¶U=ºØ¸=¹¡ß=½Aø>b‘=ÞÊæ=ÉJ`=Á½=·Uè=»q=¹×²=–θ=­•=¼H˜=Τ8=µA¹=Ù¦æ=Ô¢=¼—Ž= ï=¹üb=Õ0¹=íé@=Ü”K=æÞ°=îÑã=íû—=ܵ[=ÝA¿=ÙËp=ÃÄê=¿Ð‹=ÓŽû=Ôö“=¸Zú=ÌMµ=É¡=Î@=È‹=Âðï=Ël=ÝJ=ȶ=½ºæ=Í=Þ°r=³@-=Ù†=ãs5=ÝG=ßÖ’=Ì¡r=Ò“=æ%ß=ß™>%d>Ií%>z >Šªš>o¸½>8­å=Ùx§=÷ŸG=äïª=ÞÚÄ=Þd=½ôÖ>•>[->ˆlÌ>Š›Ÿ>n½~>DÑã=üúð=ùçS=ßåa=Àv§=®–²=»VR=Èï=ÕÀ£=õÞ‰=ΪR=¸Ž?=¬”=ªx=“ÉŽ=¤£¿=Ã37=ÚÓm=«$1=Ù#L> -‚b=Ö{Ê=¿aÎ=É=ØM -=ˉ=×ï¿=È9ÿ=­oL=†³–= x=„=YDž=¶ž=›ðK=•,ð=¨ër=À*Y=ËÈù=¶mÏ=š©£=·™–=ºKÑ=¶=Ì„=Íê‚>£_>4?>#µd>"p«> -[>Þ³>y¿=Þî,=í->±Ë>/éw>95<>ˆá> -t<=û®=ÔG•=Øó`=Ä«=Ã5!=Ø›A=Ù_=ݼ=çZL>áð=Ô@ =ÌLo=Ó3>·>-<>µ.>kú> Ù=᪞=Ú a=Ósp=Ðœ@=ð5°=èý=åÌy=語=ì=Ûد=ÌãÍ=Æ ã=Åi=º=ÞÎ¥=ô6û=áôõ>g“=úœ±=ÛL5=æ >E+=ðŒÌ=Õí=°¸¿=×J±=ã;c=ÑÌ=Ïu2=èÅÖ=ã’|=Ô¢a=·µ=Ö¸•=§³·=²«Y=Õ­Q=ÑyŒ=ß7[=äŽc=ßl=Ão^=É*Ò=´Ø^=–/º=™Jw=¹Í³=é1Û>G=>¯B> Ÿ+=Òöb=¢90=8=¿Üí=Ëc=½Q(=˜Ùi=«Eî=¾–œ=·ˆ/=«Ëô=‘*:=Á²“=»€=µE<=˜,=»’Ò=²ú =¸Ï=­’Á=Š 9=½G=¤­7=ŠúØ=»Í|=£ïä=}óE=gt=ŽØ*=³÷˜=·‚=©Ÿ‘=e¿Å=‹Jâ=´uÌ=›\v=o”¥=®¤Y=¦ü=š g=„kn=n<¥=Ùl=é¨=×K=£B=Ľ½=¾†ù=¡Ü =„u0=‡79=œÃè=ºx¡=Íþ¡=Ç×Ò=Ôá<=·¦K=¼¥=Ö9Š=ÌóŒ=¾îµ=°¬=¢9=¶è¹=±JÓ=µû=µ=­½^=âÿ‘=—tp=ÄŽ’>>0=õC¢=æ4Ã=ת=Ê=ºaJ=òÅ×=í–j=¾…Q=˜ü§=ÊŸ;=ˇ=Ø:=æõD=ûŒ> tf=øõ=Ú[N=º04=¦{£=æ!¬=Ëî‹=°í =¾Ò4=ÍÿÞ=Ãw =Í[9=åœÉ=ÂY®=©îð=¬ö]=´tu=®=ºËê=Æãs=Ë“˜=±9Ó=¦bÁ=ôâ4=Ô1=®*=ŒU=ù==”ö=¡”9=¨åZ=¶’>=ãC`=¼ÁÞ=Ü=z<š=·õ=ÎD=µMw=Ÿ4=ξo=©Ë2=¬Ô´=›D'=Œdt=¹éc=‘ M=­æB=ÃJ¯=´È=³Üß=·É½=¹è=Á-=¹¨ =­ò¤=Òù~=ëŸé=ÈE=ºÂ=ÃÆÏ=Í”0=Õ¦:=È’~=͆¬=¡¼=¨ š=¨¯ =¤™=Öc=¶´ =«’h=¶”â=ºû/=°=W=¦¥=§Ž+= v=îp=̲=Ω?=ÏÕ:=ô=¼ú,=¤¶^=›ô=Þ]F=Ìl=ï4=ïRI=݆¸=·•=¹q²=ÕÉ8=ÁÏ"=Ò=ýsÔ=½¼‹=¦ª¶=®‡Ä=¾èÅ=Â’@=³¥ð=¬©á=˜Ò=oqò=†|,=שt=Ü‹=Ü»=Ïÿí=Ô6=Ø}à=Þ¦Â=×¾Ž=¦8ø=À6½=¶ý¦=ò4H=ñ€=¤K=»Ç=¤WÉ>"F‚>õo?šê„@m0e@’À@˜ --@w3@1P >Î@>K{ë=Îfõ=Þ*å=ð›>:£=öRØ=»H =¦Ì=ɵ=ÊÎ=íÚþ=Ön%=¡Ø@=Ïi=ï} =Ë€Q=˸ð=Óï´=á=Œ=ܾé=Õe„=Õð -=Ó»Ñ=ü…š=Ügš=°1=ÄÂî=ÉÈ1=¹×i=ÀD¾=°à_=Ãðf=¾+î=¶wS=­4Œ=¶ó=Ô*=ÓÏ;=Ý0=¸O =µ£G=¿tÜ=Å =¹ív=¢Ï"=Êþ=ßqÐ=Õ¼7=½¢=·¡Ó=é-7=óV-=Ùª =Ä €=½š;=»^=ð•>(=Éíã=¼°=Ì\9=ë°=⪖=Ûn=Ûe=¬ôI=¢E=°¿Z=Îi=¯%¸=Û€ý=ú<‡>­]?EÓ¾@ ÞÎ@%1@0l®@oÉ?³ël>­y¼> dŸ=¤²=êÖf=æ‰=îT¥=ðÇ­=çC[=ÿƳ=ñ¿¶=âñt=è<=߀„=áõÊ=Ùµ=á„Á=ë9 =ÖÎ=礵=ÓÂ'=è¬!=þò‹=ü•<=óbˆ> j>ø©>×> Î;=üu˜=þ/=ç‹ô=¿Íü=¡5ã=³ý=³Ê˜=Óów=ô8É=çFL=Ç×=Ô3]=Ù0=ÎNÏ=Ó̵=Їë=åp>¦>ç’=Ù‹L=¸F—=¼H`=ÂOœ=¸µ6=«Âô=ÀgŒ=Âä‹=œd=Èu>[G=õµÏ=ê®s=íÂ<=ê:â=É]ÿ=§¶=´ñÄ=Ì9±=À£ê=·&ÿ==Ü=§æË=« ¶=¶]e=®~æ=¿À7=À—á=Åú%= ÇØ=™ý=©ÓÏ=ä{‡=ÞŒ=Þ^=À===ìtÓ>d>=í©>«øÿ?Ðï?Ç>õŽ>²±W><:Š=ç"==Å=¾==¸¸=¿Ô=«ÐD=Ìì=Î[Û=½Ê =¯Òð=ü0-=øn=êx=Ù·.=ÇèÖ=µ?]=Ì_1=õ”1=Òå=½(½=µi=ñ‹> §Ë=ö8 =éÚû=Ø6Î=ÏÏT=¹äp=¤ |=ÈÔa=É/=Á³Ò=ÒƒU=ØW=Ø^Ì=Ê=Ôw=·v(=¼šë=ÊßF=¤Æ±=”Ïu=¢>i=Ép¹=ÐýÀ=ÍX=Ÿ;Ò=›OÛ=Ã_÷=¨õß=[b=—9 =” Ý=”«g=]°Ñ=‡ƒµ=¸“=Èk“=º˜¬=Ÿ Å=¶LS=·\(=Â2Õ=·™=¥«Í=©F€=Ä&¹=ìäÐ=¹ÞÅ=Àt¹=ív=Ú¯°=ãïÚ=¬¶=¼ã}=Ëp=ÖWæ=ÊÈÕ=£¯ -=ÝoZ=ɼL=©bÞ=³Ý×=±Ð(=­¾=Ä;ð=ÆÃf=Û ´=Ãæ¿=»p¢=Ïfã=œˆ=”ýá=Žû=˜‘= ‚=œñï=Ÿ¬•=¸ôô=¦F´=ª§k=«´?=›Â§= ü=¤?=›)o=n1Ü=+¤=…„=¶íC=µèg=¥–)=Ÿ2¤=¸M=º+=·ë'=àZÜ=ÓZ¹=®¨ç=œ j=§Ü =öDz=áî=Ò B=Ö A=½ü'=¹=å-=ÍŠà=¼½L=ÈõÓ=ÜP=Ã{=¼ “=¾<«=³º=Áô=Øá>y=Ók=ÓC¢=Ôß}=ê>0ë>5þ=ÙiL=Î.V=Ç7C=»=©wê=Ë Î=ÍœB=ç~Ÿ=¾Iª=¨*>=£±f=³tg=¸Ÿ-=¤5=»Æ^=¸D‡=Æç=ÍÞR=Õ%Y=Ì$â=Ÿ[*=€W=«Ñ =¯é‰=Ƈ…=½¯Š=¶lå=Êóô=ˆDÔ=˜UŒ=¹‘,=µm>=½ž®=ËÞ=•Ñˆ=•E(=Æž=³)„=¹º=¬à.=›Œ=˜§=&h=‘7u=¯fh>yÆ>Éö>:Cù>l§€>IlE> ?„> ÎË=þ¶ƒ=ÁêÀ=»Aº=³·¹=¨¤»=«r‘=µà‚=¬óe=µŸ>=½ ä=ÐBQ=×׺=ÛZâ=ÛJü=Û =Úm‰=Ù©~=Ó<‡=ÍÙË=ÁþÖ=¯ìæ=à7=×¼ý=É{=µXÒ=µJÝ=´PL=´ž¯=ÔI6=Ë=´ys=¾ˆ=¼ \=³·ù=ô‹h=öðg=ÊTP=ä=âÜ›=½°Ò=Þ=ßþ=¥ê“=Ûéÿ=ò¯8=Ô@=ém®=ï -º=°ø=¾+¾=Ç=»ª=Ó =çä:=®s±=À(‚=Ñ,b=Û¿F=ÜYü=Ü8£=üõ,=éa=ÏÝý=Ïð„=Àìž=¬å{=Ö a=Úvß=ÚÀ¸=ãÔw=í¾À=üs!=ß,Ç=Õø=ÍÚñ=·=ÑÌ=Ù=µ9=»HK=ã¥Æ=ã£=æÄ=î¸6=ö[Y=ûˆý>œ¡=ôL%=ìÏ¥=ì—¿=Í…{=Ååk=à¾=ÐEh=Æž=³P²=ÏßÑ=àHü=êº=Ô³ï=Èýg=Ȧƒ=È<Ž=È´=ÓP=àCG=çŽB=ÒoÞ=Òp˜=Ђ4=ÇGP=Ô+Ü=ÛfÀ=Ò Ç=²]¶=ž´Ï=Ü0Ù=âëI=ç- =æeä=ò30=øý=ºDÂ=Ì ö=Ùj®=Ä®ê=܈¬=íù =Îò­=ç]ï=ù6@=ã¾=À¥w=¢¼¼=¬•„=ÎuZ=îüw>¿4>œ{=ö$[=áä=è_^=ëwV=Öv'=â =ê =ÀåD=×y¯=ë3Ë=Ëæ=áéÄ=óÛÒ=ʵ…=â¸Ñ=ð<ó=ªE=Ô“=ó9Ú=Ôp?=Ój©=Øk> ¯j=õ¶=à¥=ójâ=ß¹=Ñ -^=³ ˜=Ìð®=ܾ=ÝV=ã=çg=ç·¤=ôÃl=ôóô=ÆoÆ=à©=ê’n=Æ'5=Ì8|=Îèx=ÅóÓ=Û±è=ä”'=åÀ?=ϪÈ=ÎTƒ=îõ=Þá=Ú¸=Úfƒ=Âó³=À -=Ï =ߦL=ÝêÐ=ÏÕ=èð=éë°=ãa—=¸ž=²V`=¹K†=Áú-=×ê=÷^˜=É%=ÇB=ÍF4=Ã4›=Á¹â=¨á=Âÿ=½6˜=·E=¶½E=Á†{=Ëž#=¬ø°=² -º=¸c¾=Õý¢=ákM=æl<=·2Ê=Ês±=Ð¥I=¬û=¥?=¥HÃ=¶é=ÄÜÜ=Ñ–=óÞÃ=ÞqÛ=ÞoÐ=ý'}=͈g=Ë×G=è¬Z=Øh_=×.à=Ýî=ËÄ#=ÍÀ=Ó=Éì=Äcg=¾B=—³¼=©ˆp=½eß=³Þ}=žƒH=Œ†(=½;=·sº=³ É=©#£=lj?=ÚþŒ=Òž=ÒÖ=Î\=Æ¡¨=ÆâÊ=Ô÷3=úó=ʃ=Ñ{j=ùði=ð&ë=äÃí=йm=þkä=úõ™=ï¼>ÊÔ>‰>žª=î®Ï=óñå=ö·÷=î©_>‡x>-«>[c°>JH2>>Á>7Ôª=õç×=¼ÐÈ=“O†=»§¶=Ë/=ص)=´çÙ=¹p+=Ä}~=àþÄ=ÎGÌ=ºw|=Ä a=Ï=ض=Ø~=ËE`=Ä´©=Ä í=Ø‹=Û÷ø=ĉ™=̧=×ú=ìÙ=¯ry=¥«==¦"=ÕéM=Ä•Ì=±ŒU=Ø"æ=ï >go=ÿå6=ì&=æE@=õZW=Þƒ=ᡲ=õƒ6=ì 9=ùù> ¬ñ=ÉËh=ÍvÒ=×àg=§UÓ=¿¾‡=Øý«=׿†=·§=²Š=öP<=àà`=ÛÖ¸=áÔÄ>‰3> #k=ö{Ã=ö±1=û/ž=ÿ ‡=ëfÇ=æ P=àŠ6=×<ø=Ñ°Š=Ú™> ¼ > Ѳ>¼î=ÿsÈ=þ?¦=é²t=ÂìÑ=ÞÂ=Ü}Â=ÖTý=Ì9Û=ש¦=Ý\î=·ýi=ÕŠ}=ãàý=ÖyÝ=î^)=ïlç=é»d=ë Ò=ÝÄt=ÍQÉ>\>ü>ÀÒ=ê =÷+ä>M> È=ì“–=Îý -=®Vî=É…²=ÖB‡=Þ¯€=¸g*=Ïí‚=ØD<=®‹=¼z•=Âlš=Â=é¸l=ë±ç=ß‹“>§d=ù‡ž=àÂB=ý=÷Ê=ílo=Á$¡=Ôx=Òó=­âI=þIk=î~™=·²k=Ý" =ø¢©> 4> °Â=ߪå=¼zb=Õ¹»=·Å=ÆY›=ý*«=Ñþ±=Õ-=Þu5=ÞÁ…=Þ½Ë=Ü–{=Êú=æ½»=è8÷=ÊFJ=Ô`Q=Ûg=è=¹M¤=Ú‡û=÷å=çe¿=çSÝ=å`í=Ýi[=åHã=̉w=¢€B=ÆN -=¿.{=¹ü=ÝÐ=ãå}=áÿ=Éâ=¹¡7=ÁÐá=Ó”à=ä‚å=Ù­ä=ËéA=ð´‘=÷O¹=÷ ]=èrô>S -=õÛˆ=Ý*¹=úKò>)æ>ó]=Þ>Ý=×Ñ!=Ñš=ÊJ•=âÁþ=Ï%=­‡ö=·ø =¹§=Ää=Ò…=Ä’=Æ ¯=Òýp=ÜÓU=âÎò=çty=Þ#p=Ñ—à=Íõ\=Þʘ=í·†=ï¬û=è@=ÖÁÈ=Úd·=Þo=é43=â½ô=Þž=Õh> -‰>#´> ¨´>9+>Eâ>Ã=ßÌR>,P^>‚ƒ>Ê9ß>ü]­>ýVi>òN>›¢>=6=éZo=ËU=ªvU=¢r=¢‘Ä=¬¦D=ºï=ÏÎT=ßv%=ÑQ0=Ì‘Ð=ˆÞ=äjl=Õ‚`=Á†=Ö¥«=ãŠ=Þ=¸~¡=Ò2=ÔéÍ=ÖÓ=ÁPç=Á -i=ÂT=Á–é=°B¼=µ½Ê=Án=˾ =Ë’Ø=ÊÊC=Áè=¹D=ºþ#=À"M=Ñê¢=Ø·Ù=à‡=Þï‹=Й~=Лé=ßMÍ=¹ýô=É7=Õ¬¬=ÁV5=Â[=»„ò=®1(=É’h=¾ýy=¯%=ÄV¼=Ïí -=ÖbÑ=ØJa=Èêñ=À‘=»œ=ÙI¿=è=ñ–>¡[=ÌO¬=½†3=³R=Ë)¨=Æ6Ë=ÄÔ=ºäª=ÕÏ =ÝU9=áîÂ=Ä6ñ=«®G=©hß=Ço=ÏG=ÅÈ=½Íì=×±]=ÃÖn=¾›=ÆH£=´U=£†7=›ðÍ=›w=²zÑ=¼#4=»ê÷=”® =Ÿ’=¦hõ=ÝÎ=a?=Xr =}/=¯îP=Á9=ÊD\=Ñ$>=ák›=¾Šð=ƒ‡8=©(½=©²=¬s0=¬.7=±Ü‘=¶7c=¸[ë=Æ»i=ÁÙu=¸Ìj=½$™=ã”a=å=Þ¨=ÕëÓ=ü–7=úa’=Óˆ¾=Ü¡O=ÌÅQ=½.q=Ì!=¨µk=¦Çl=¬gÔ=ñ·Ì=؈m=Ì Y=˯©=Õºç=Ñ[È=Ðæm=áðD=÷;#=ï™Ü=Ím=ÏŠŠ=μ=ÍÞÓ=ÎvÚ=Æ€==Ï|=ÜÎÄ=°®¯=Ç R=ʺ=Ä ?=ØOŠ=ã³%=à,3=Ìßš=Öà-=â•Ñ=é›4=áP[=ÜÝž=Ù$Õ=â±x=ã1ð=øÊê>™s=Åw¼=Áw=ɇc=Ϋª=¶ðg=Î=i=ÝÍÉ=Ó¦×=‚ÕÚ=³f”=áð=Ð ˆ=½rÙ=¿g­=Îã=ÛâŠ=´Qg=¥ ó=´“È=ÇI´=Ç”õ=É=Ø¿a=·9¢=½}«=Ò|Ý=ÐeZ=È:;=¼¶Š=© -=Ëo=Éñ0=ÒÖ>SŸ=é2=å˜ô=ø2C=ñó=Õàc=Êü~=ØOÃ=Ö=Æ„I=¿”=¾{)=ù`â=äAf=Îß=Ñêc=¼³ž=¿0–=ÀÌ=¹:Î=ÏéF=ç¬×>›•=öo©=éçã=Úú=µž -=á­Ä=ÑÒŽ=Ïʼ=ØG¤=Ïë=Ä:Ÿ=»¸‰=ô§n=Ü -=ÛBf=â*F=ù§=Ü¡^=ØŸ=à³»=íË=öæO=ú‚>Jý=­nL=Í3<=îM®=×N-=Ð=ÏÂ=Ôõ4=âÃf=ú¡!=î°Ö=Éœ?=ôñ\=ÎÈ=· =÷³=Òùm=Ìç"=ÉhÃ=Ö\Ï>Lª>y™e>‡rþ>xuN>T<>+¡> |È=Ëì'=ÀC=Áù=ÓÏÁ=øà =ÕŠß=Ærs=¾ÆZ=æó(=Æó…=Á¾œ=×Ø=¹õe=¶Ú=¬W0=­æ=©µ¹=s8=S…=™BV=™Ÿ=§¯×=žë´=pÑ =™ê˜=‘“ê=‘aµ=ÂU=@½*=cï=Œ—Ô=º=Â(=ÄÆ–=¸ŠÂ=™ ¸=¸Ü=¯¾ý= °m=ÞªC=ØÌÛ=Ò†š=Í_.=ÑØ#=Ì_Ò=âs=èÿ =¾K!=¯Õ°=¸sç=ÇØ^=ÁÑX=Ĥ¾=Å¥€=Âñ\=ÝO=²$=£Í^=¨ =æ“/=ÂJb=¾³N=Øj¦=Ö' =½~J=¸¼š=¼§¦=Þ¿%=µ5/=°( =µ=õef=Ô«=´+Ø=­èº=ÔrV=í =âF8=²©M=ʸ=¾*g=¾ñx=Ê(&=´^4=Âß=É¡ô=ŦE=¥dJ=ÓšM=ÞY=ÔË=¼.X=ÊΉ=ÕÔA=Ø$Å=µ)¦=ÓIg=ßÒ=âð\=ì?ú=à ¼=ÛÝÝ=ל =ÚWó=Ê3¿=±4*=¶ l=Л¾=²`±=§ÑX=ª49=ßiç=³?=¹ŠÛ=ш‚=ÔG=Çû=Ä -(=¼6¯=Ô:"=à>¡=ÚA•=θã=¶|â=âµS=ÔõN=·sÿ=¸C‹=²ÖÏ=ÎÁÉ=ÀV$=¶\˜=Æ]=­tC=µ:5=ÀçŸ=Èvh=Êz==ý\Ù>nÕ=¿~>ùÎ>é‡=Òï=ОÂ=Í;à=êg=ê…F=¨é–=©G =¨Sþ=µ’P=ÇÿT=ã¿‚=ïä’=ÕÅÊ=µý=ØÂé=ž×=R¬=¸j`=Îâ'=–R×=–D©=½[_=¹ó|=¶Jf=Î]w=ì)!=ÒÀ!=Ã|Ã=°†o=±T=·n'=Ä+ˆ=±@ =½@ô=Æß^=ÖUK=ÀüD=ªt¬=·=§ß=¿^=Þ_"=â¨#=×m…=´Á§=¶¨Ò=Ù&W=áU=Ãs§=»Fô=Á’¢=Ĭ™=¸Æi=ðÔx=èÜÊ=ÙCc=Ûí=¼»Å=ÁL=°ó|=à›=žƒa=¥»´=ÀÝ==Ù 6=»*Ä=¸˜,=ÏÏo=ï§Ê=ýhó=ù`> ^ù>M,P>›*Ž>Ðb@?s? Ê?¹×>ÒÓ§> gì>^–Õ=îe÷=°ú=ëÛ²=¯¢˜=²zó=Á>=¾6=ÐÄÿ= g°=¡íµ=ìøJ=È¥=µŽÍ=¹`=͈Â=»$=Άw=Ô•=¼ÄÉ=¥3ƒ=ÕÍ=Æù=Ũã=Ñlü=β§=¯ßý=ÁT=Å€z=£lI=ýö==å7¹=Ëà=ûóp=Á×=Ï®‰=ÌSG=°~­=°Þj=§úß=—eL=©ÉÑ=Þem=.Ñ=Ž™Ñ=Ä¥g=ÌÖr=ªŒÞ=¾g’=Ó›(=Å ?=µ¨=Ì[v=»û,=ÁvÑ=Ñ·³=·é,=Ç'¦=® #=°ûl=ÔÎt=ÕŒ=î=Ý/X=ÛÆ=àr¹=³fé=É_b=Ë8=Á ¨=°ª)=Ê<Â=®=›\¸=¹_,=»2ë=üáš=ß:†=²Gõ=Æ–ž=ÂT=ÙmÖ=Ô¥Ò=¾ ½=‡Á÷=•‚÷=Ä«‰=âKà> L=áˆ=Ȧb=Ïò=Ô¾2=­_R=µN™=Îéè=ÜAö=ÕMó=Úú=Ðo=×3½=Ü2Ò=µ—=Ûþà=¹ìL=µ¼ž=Å%Q=ÔÖ=þ’C=àmÍ=¿+Ä=Òác=å}=Õ¸Û=Ä£=£6=´àâ=´Úu=“[K=§.P=»üú=Ž‰f=¯H=¿ÝÕ=½S¤=½%#=Æ^ž=¿/=Ђ=˜ÿ:=™aI=½Ø±=ÈŠ==´œÝ=³=ÀÄø=Ô…8=Æ)à=¦\=Ɉ=Î$Ò=¡«¹=«¡o=º2 =·ú=¾¨0=Ëà=¾÷—=Î?Ÿ=»ê¾=¿Ì¸=Ó@>=Ó =æt?=âƒb=á¸u=Ùö=Å ÷=ÎK¾=ÅR§=©Ïz=‰t==¢·¹=šÐ0=“«l=Óº²=³”`=›`†=¥4v=¶’j=· Ý=¸Þò=¢mÍ= ?©=›ûm=««U=ËÇ=³é=‘)ó=—añ=‘­m=³82=»9z=·0=«©F=¨8?=˜D.=Ž=í=žò=º©=ÃGÑ=¨êK=¨öu=±Ž=ÅÞ6=¼™ö=œ=ÉÕ=Ý{›=Û€¬= =Êr=ØÊ•=àYã=Ý)8=¤F‘=¢áù=•-…=°œ=¾²=Êê½=×I’=Î<ª=¼Ùÿ=¸^ƒ=ÀÑ>=¸¿Ô=©ß#=´hð=ÓÜÓ>½]=¸0S=±0ç=Ô—…=¼@ =®‘E=Õõm=ÑZ=®Cè=«ø==²-R=£/.=¼Uæ=±A -=»b¬=»Ë!=¤A¯= ˜«=Êë=ñ­=ºË-=—³Ç=ÃÀ=·–=ÉŠ­=甼=åé®=ÄRt=ŸìX=€ô‚=Ñ{=Æ:=¬l=²Ì5=Éå[=¢a=• =¢Âv=ñ¬=Þ\=¿-Í=·ô|=½žr=ÈÅM=ÒuZ=±g±=¿4}=Ú -^=çs{=¿L=ºx±=ÇCç=¦K/=¢¡Ë=ÔRõ=ÈcP=˜Í‘=°=°eé=È>=°Ì=Àn"=jå=¡>”= N=¥SÅ=´Ú=¥C¢=ÌßY=×5[=ň*=º Ï=³b‰=¸»=ƧÕ=ÉÉ.=Öb=Ï^R=Ñ‹=ħ=¶é\=²á=­ÁÛ=®³—=©÷l=¶;y=¹ i=¢·I=º„<=º'?=¼î=Åÿê=×Ñâ=Ðû=à¤<=¯ºý=¾D)=¼€ä=ÄÙq=Êt^=±ël=¹­Ð=À7U=œ+Å=ŸYu=žB=Ìôï=Ìn =ÛZQ=Úòk=ÒJJ=ËŸg=ÙIM=ó¬¯>®ˆ=ò²*=áÏ–=º=Ë=Îz­=Óá«=¹m=°Çó=dž =Îd”=çý[=ëQ=ñ%=îmƒ=¨­Å=¸%ë=ɤÕ=¬½ï=§ÿR=¾=²Ñ3=±ì·=£Þ^=¡l¦=Ÿ|?=•MD=¬¶à=àÓY=ŠÏH=Z È=ê$=¡í}=ÀÞÞ=Þ:=Ø-¬=× Ã>¼¤>(} >fÎ>xØz>op>Sv>'0´>J<=ÙPÊ=Í«¿=ÏÅÅ=ÐÚó=¾öï=ªJ=°eÙ=ÀW =ÇÚ =¯©E=´‘À=Éo=º×==­ Ë=œ7=“!`=²‘ü=Æ í=ÄÏs= îL=¿€=ÑÈ=ŠÙ=-=œCž=‘y+=•¯Ô=¼Aw=Á’¶=»(À=¬‡=­Z=¯¶¡=™¨ñ=Ò™Û=ó;6=ÃŒF=±ö=»¡Ú=Ç…§=´‹Z=²÷¨=çj=ðwÂ=瑨=Ü ˜=íë¢=ß“ï=ÖÄÛ=ÏË’=ÔÎý=Ñ@=ÕµÇ=Öˆj=ƆC=½î=Ì€á=ÉÖé=Èæ=ÙIG=Ñè=×/x=É‚‰=º(´=Ï;.=ÔÏî=É`ö=¿ns=ÁFÃ=¾ð=®rŒ=–§Ï=l8³=§h=Ò›X=Òjµ=ž³=º{=Ä7ƒ=Ëu/=ï¯=Ëv3=Ö…==å j=îüè=ìÞ==Ý%A=ùU =çÁ$=Éñ=ÕIå=ÞB=çVN=Ë$=ÀÂ=Å@É=¿õ­=¨#Æ=ä@€>tù=ÛÜ9=ßQº=á?=ª‡½=Ù!ç=ëL3=Àn=¾ {=ºŠN=Ï `=çéi=ð“=®}a=Íòœ=ÄaÛ=›MS=¤Õ=Ľá=Å>Ý=¼Ê=²Ã=«ûý=¡5=­A=¬öÞ=¯=Ðãg=Ê&ž=Ä]=þx=õèÁ=è9=ç(€=Ö›,=·Js=¶Ð€=¶hå=¶¤²=¾VÙ=Ãñ=ÍMu=Ü`=éø”> -hK>*ü>úò>Õˆ=éñp=Ëu=ìè¸=Õ¹m=³”=Ü]Ò=åè5=ìœù=Ùj´=ÑÒz=ÈÞ^=ÚÇ=ߤþ=à¾=Ø<;=Ó#i=Óà¦=¾êñ=°Mì=¥,¢=½cƒ=ÒÐ=Çn]=Ìøƒ=Ò¦ã=Ç~½=ÆL,>†Z>³ŠÉ>¬ÙØ>« ß>«2†>±xO>±W÷>«>‚¤Ñ>Nž5=áL=á‘‚=Ýš=Ôçé=Î$w=½ð=¹Ü=½úÄ=ݽ1=Ó+½=äîi=ô£=¼7â=Ì;ˆ=ÝR>Ê >]¼>i·>.Oö>ÁÖ>Ó•=„©=Ê@~=å¡Á=È·=ÄSæ=Äp£=ÍÈ,=Ø´{=ð½=ç^‚=Þ†=ÎI=Ö)Â=×®e=Íò²=ͧ=Êûâ=ÂÈÕ=÷^×>B4=Âz÷=×eê=å@=íÈ`=ßzý=Õ¾=Á†ÿ=Á¿Å=ÄŒd=ìQ=æÁ=áµÔ=àÐã=Â÷Ç=­:=À@¦=ÐJå=ßÈ÷=ê$=ô9=ÿ>Z=Ô7=âÕ¾=ó#1=òî7=äa¡=Òë@=¾ˆ_=Ï‘=çÐ=è‚=ñ.í=üô=èÛo=Ù»=ǧ=¿K&=Àʳ=Çm=½ 3=Èkk=Û‹=Û#ö=ß[=åõÚ=°68=¿Jq=ð=ÞÏË=ÓîÏ=Å•=ß_¡=Ú–G=ÅÄ=Þ5D=Ö¡¡=¹Áá=ÂJê=Ñnv=íÈÚ=Ó›¢=Р÷=×ÿ»=èå-=ãÐ=Í,-=íô¶=ð÷¤=â–=Ò&X=ÕÔ=ëÕÏ=ì¤W=ñºŠ>E>=Æ8m=ÇÒr=ë>=ÉÉ=ÁÂj=¬=ë j=èð—=ÌÞ=Üòc=áÖ©=ê~=ûÛü=óò7=ß÷p=æ5D=ë(=éž =àô=åÛÈ=ó+U=À-#=ºÙ=¿YÔ=ÚÒ=à½Æ=爜=ï^Ö=ç>š=Ó2Â=þ€=ú/=ç=«=Âg=Ίi=æâ!=Â0=ÒÞÊ=ðb7=ðm=ì¶e=åª =¾È§=¸:=³e= 8=·õ­=ÐÈæ=Ú¿ª=öI >ê³>ªM>ž=ø Ò=äR=ߎ=Û_=ä*=džº=°äe=±Ä{=½ü]=ÇHL=Ï[K=Âœ¤=¼ÔO=Îüÿ=»*t=¹M_=â„Ë=äØ©=ÕW¾=°°¬=À.=ÆИ=Ι«=¯ŒÜ=±Ãû=Î Ä=¶1Œ=µS1=ør=³{=¤’n=’W¶=Ù®=ͽ°=°Í=¹4=¸êï=¹•;=Õ%=ªá=¹J=ÕÁ_=Ó¸=ÊÏÿ=àb£=ÀŒ =¨M=ßöØ=å‡Ï=éôŠ=ô0‰=À`=§Ž=·„=Òµ=Øß=ÁŸ=¹Ýµ=¸y=·¨=Ï=X=Ñ_ =Ë]=±ï=³\>=Áuà=æz™=Ô=·Æ=Þµb=Ì%'=·Ú¸=·åå=¨&=›6_=­4=®rW=¬X -=£±Z=©Ê€=³´Ž=Êç™=½@=°©=£g³=º_=ÃäØ=ʸ«=Ê[=ÇŒB=ÀŠ‘=Úüò=Ä =¢ð2=¢ü=·2=ɘ½=¬öû=½ž =Æ¥=™(Ô=¥§r=ª×=£}=ª×:=¬1œ=¬k;=¼’Ã=»]–=­lÝ=³ß =²÷=¬­ =ÑöÝ=Êèƒ=¿ŽK=£%î=™á=‘Òk=¶%=ÍŽ=ÕÆR=¬v=³®=º80=ÑI=¬“¢=ª^ý=¾_ý=¿=»•*=µx‹=ÇÄ =Üò==¢2=·èT=Ìf"=æi÷=íIÍ=âY?=«Lî=È^=Î »=¿FÍ=¦-Œ=®­¤=É Å=¯m‰=¯-?=µ—¾=¢nö=Œ4=y¨é=—ãŽ=’Ã=–¢=¿h¦=±ç=¥’°=—™=¨´=µžù=ÈŠ =›ôÌ=¬º‹=ÉuÕ=¿/*=¸°ô=µuz=¾³==¹N=¯þÜ=¡.D=§»"=²=¾ÒB=¬æ¸=´„.=¿Ÿ=¿àj=¸îc=²÷œ=ªÇ§=²¡Í=¬óé=Ù¡=£x1=¦Z­=—=¸ Ê=¾59=¾œ=´Kt=©½Š=¢ÜÁ=¾HÐ=Ãü®=ŘJ=Æï²=Õg=о=¼ïß=®Q=°B=¼,±=ë.h=ØË$=ňè=ÅÀ=³l6=¥ù„=žßÇ=Åâ–=Ë“Ô=ÆìÓ=éšJ=ósˆ=õ…Ö=½¾ì=¾Y·=Àb$=Ð¥Š=¼˜‘=ºV¸=Ð[…=àÍ=ÖŸœ=½¢Þ=¾­Ç=È Î=Ð5=Ûpé=× =ÙÅÁ=ðÂ=çë*=ã€Ê=ã@=¯-=±tx=¼­È=»ÞÜ=»=¹Ãø=©=°þ‰=¸H=ÅZÀ=Ösƒ=ű¥=ªSO=³õ÷=®¬:=¬ØB=Ç•=ºw–=¾Ø‚=Û&Æ=±Ã=¨OÜ=ªGÉ=¾Õx=¾ªä=Â…q=Ü¥N=Ô˜|=ÍÜ=ÇÂÖ=ŸAÔ=­„Ö=ÐœÙ=ª.’=Ÿìð=šªÈ=ªxê=¯ÞQ=¤r¤=¯=°=‰Ux=•½=–Âü=œ‡=–öD=[ ì=Œ5u=‰œÚ=`Gè=:ß%=Påò=sòÏ= ”¨=¡©½=—šB=rÌ®=™³C=›ö=–ÄS=»î:=·¿Ó=²8[=«èS=™ÿ=‹²Î=„…=ŒÐ”=‘‰=™Š=˜i)=¨º=É'F>õQ>?w>K~¢>GI\>Ø=Ò¹=«£=½ƒc=°‰Ë=«Õš=«u=Âï‡=Ëc;=ÊTL=Ê =Ê'‰=Ëô=Ó®=½ø=Â@=Óñ=Û½V=Ét=´E=¬1Ÿ=Æ؃=ϲ=À™â=Ê@é=×ÕØ=曦=¬–H=ºm‡=Áñ=À¢=Óá¼=Á#‰=¦óÁ=éÎa=ôý2=ïçW=À_b=ÙÑã=Ø?=ʪ´=å=ÿ=âó¤=Ýìá=Þ’Ð=Ékë=ÀY;=ÂWJ=ÖƒA=ÕÕB=ØÌE=ó»S=à4·=Ùã=ÚP(=ÏäÝ=ÐNL=Î=ØßJ=ïCå=÷ç·>ÁR=Ý@=ÞªP=â’Â=ä©ü=ÞîŽ=Жn=»r=Ú w=Û}b=ÒÄï=¹£ª=ÞòÊ=ãŠ<=ÎÁÖ=ß±=༃=✨=áŠ=Ùd…=Öaù=ÏΆ=Ç{|=±ß=Äê¹=Æíº=³Íò=ª‚`=²Ö=˜ *=¦3Ï=µMÁ=±\ =œ)ñ=£þh=Ç*=˜€=›+j=ž¿¨=Š·<=¹EW=¾ôÄ=²Gè= žf=·*0=ÆÇ'=»»=¼×Ú=±é!=¨2==ØbT=¯v€=£ˆ=Ø=éUf=ëŽÁ=æd2=æK4=âgˆ=ê l>3¹>Kú=ð·o=ÓÉK=ãôˆ=Ü0Ï=ÚÔ•=áÄ=ã\ -=Ó%Î=¿Æ=¿ÄÃ=ÜÛy=×Ö¡=Ä-Ë=µñn=´–=¾Vè=Ç -=ºEë=ű¯=Ð,=̦4=Ì)I=ÏyŠ=ή=ËB=ßT'=ùÚ~> ãÿ>^êü>pª>q”–>vÏÙ>(Á9=õmr=Ê\=«}u=²9í=ã!=°)s=¦4®=¬Ê|=¾.÷=¦`\=Ÿ2E=©›ù=ÒÖó=²›=ÉÃ=ß¡Ä=³õ=»Ë=É*ó=ÔOB=§”=™oa=¡ŒÝ=ÐõA=Ùi$=Év2=¯@=’Šç=©íS=³=<=·ˆ¸>Dd>i/>tâ>k¥>!—N=ó”B=ÙN°>9p>Vj)>]•{>Y×®><-N>Ë=嶊=µ^D=·‹÷=× -î=ègµ=á{V=Ö¾D=Ýv*=êy?=ó•µ=Û}@=Õ?L=×Áä=åo‚=ÙóÈ=ÏÍc=Øqy=ÜÏ¢=ã•š=êrV=Óí”=±Z=½8Ì=Ûx=ɹÎ=ç w=æ£ =ÎÑh=÷ó¿=ñË)=í£«=à¡=Îóy=ÉÚi=Í8o=Ú =帋=æfŸ=×F?=«æ=ØÝ"=àC=·Œ =ªŽ·=¹­=»T=½`=Ô/æ=à =ÄQÍ=¹uy=ÞÁ=Ãuh=¤žÔ=¡Y¯=×u?=ãíš=⮕=éû=Þ’H=ø©>Ç=躵=åþ.=å¬ö=Χ=¯0z=À`=Ë#=ʉÇ=Û^Ï=ÎÑ¿=ÎÉ…=Ï°‹=ãH-=ÂA‹=Ã{=ÆEå=ð=ã’Í=ÊH=³ -u=µû==ÀÜ=Î*X=¸ä¯=Ƨ -=ÒÅ=Ú*B=Ìçä=Ô„:=Ð8h=Ïé´=Ê=Ç®ç=Ùq´=í¦g=¿ -1=Âu= =¹–)=®ZÀ=¿÷µ=ÐZ>5Á=Í@=É-à=ÑFó=×f=ßÌ+=Ìq=»=àŠ¯=ëÑè=èàQ=Üâ¸=¬QK=Ê)r=×±;=âÊT>á> 83> -*Û>-±=Ùɼ=»bÔ=ÅØ=àjŸ=ï,=Ó:J=åÇm>t"=»:=²c=¢÷M=Œ„=Øj3=¶tj=­yÃ=¼ˆÂ=Ë\/=´±=·ÓÞ=ÔdD=À­<=È}u=ºµÃ=ªr”=´(ç=½è=Â.=Ê8Œ=ç¸è=¸Ãq=¡"3= ==­û=ʳM=É©Ã=· =©Iô=¶Ií=Òþ==ÜР=ÙËã=Òl==Ø5¿=íÌZ=ñ =½…=ÍÙK=ëVY=¿¨=ÀH…=»è(=¹A—=Ò ª=Ït=Å—À=»+ž=ÅAW=½e‘=´—ž=°’I=±x´=¹Øê=¨e2=–ñ=šxÌ=Þß[=Ê5w=²Š=Åy=Ðü=ß¼=àV=º('=•ìu=¿¡™=Üy=«U =ÀÂþ=¸¾=ÅKÙ=Ù²9=×;‹=Ë=ã3‰=úfa=Á¬==¹zó=¯ÿ˜=˜r=Æx=Ø#=ǃC=±´–=µ’=Í<ï=Øžk=Ïã¤=²u¬=Ìý±=â0È=Ï·2=Øi‡=á ƒ=ÇÞ=Å:=Þû„=ÒõO=·=ž²=ëð=Ä°H=´¢=œöú=¹Œ=Ô9=ÙJ=»=2Ì=Š×ß=ˆÜÚ=‘Õ=«=G‡=Dr=‡Ø=— =¦Ö=«j§=¯0=¨Ã§= ¥2=Ë£ë=¾úö=ÃâQ=ÎB3=µ3p=ÔÌv=¶ù=¬+ë=â8þ=¶+Ó=¬å=Ÿ<=¥ëÑ=¢`C=°•Ë=Àö =Â:l=© =øQ=¾`=ÃpÍ=·aÀ=àBR=Ò¦ÿ=Öûÿ=Ü)á=É$]=ý€e=ï!™=Æéh=³‚·=±)¨=êæ•=Üâf=Ž`å=Æì1=Õù[=׈W=Òô.=Á e=•µw=3…=¥Ç¸=ºì=®I…=¨MÖ=µŠp=Ü&ž=Ëä‰=§jØ=âh^=å›:=ɘI=ÓÓ‚=æeA=ßã=¼e‘=—\j=¾J³=ÆoÙ=©ß=µ.±=ÃO =²–.=­¬º=×)V=¿xÚ=ÀI¤=Æ©=Üå±=ÅN<=¶5ê=Ìnî=ûp>>ÿÁ=铼=ÕŠ =¿==·=³Õ=Æ*.=»:u=¤VŸ=ÐœÃ=Â=Äc’=®è1=¡<Á=Ç‘=¦$=ÄÂ}=äC=¿iT=›ë=Òj=Ͳƒ=¨ö…=ºAS=©é=²Íü=¿×Ç=á ¾=¹Nð=qø=–S‘=·“,>^™=Æo=Æ°K=Ü¥=ãµ=½e=Çý(=ÂÑx=ÏžÇ=âëŠ=Ü 2=íV=½zt=ë =ÞH«=ÆFù=¼ñf=»À&=åbq=»_¿=Ãgb=Ñ =ØÎx=̬Ü=­ì†=¬©ž=Õ¯>A‰=Ú Ë=Ç“Ù=§Z=ÔÎm=èåÔ=ÏÚQ=Ä@V=¹ëî=Å™=ÉO=â¿=ÔUÃ=ËéM=º¤¡=°>7=°€Ì=È»÷=Æõ·=“=n=—yn=‹ù=¬xÈ=Äö:=àŽ=Ø*=ÄL;=°ú4=© à=˜lè=Ó:Ó=΃µ=·¹­=°cß=§Ø=œL=”b[=•Oî=‰¢Ò=ž0>û=íÂ’=ÂRÌ=¢'Å=´_¾=Îïë=¬;6=‰øù=Ï T=˃ò=¢³Ð=¼g­=ÅL÷=»; =ðdÎ> «Á=ã¥ö=Æêä=°·Ç=Ài=³¥=à¶=Ì„³=·õ==ȶ"=Æ”k=½Ý·=À5=žV=®Ì=£p=÷§=´þQ=Ñ}ã=–ªÊ=­­=¼Ê2=É=Ït´=¡»ú=²½‡=´¹=Ä–N=ÈÎ’=ºº'=¿¶p=É›z=ãˆu=î„d> =Í‚¢=À1a=´4=´Ê=ú«W=Íá¶=žd‹=žèÙ=Ð2½=Õvè=²D=±¯=½Öh=Îà =Åž=žÒM=»;ì=ÙÙ±=øs=íŠÂ=ö‰¬> D >Z¾=éDå=ÃçÅ=½Óâ=ÜÓ=ä£=Ķ™=Í`º=ËÄæ=Ö'=Òµ›=Ǧc=ã=ÂÜà=× U=ç’ÿ=ßíS=Çzÿ=ãÚ@=â“O=ÜÞ=»´©=Ÿ±'=Ç7=Å=²ª=­R­=”j”=·”è=£¾‚=ÁèØ=Ç©S=¶[6=ÈEË=Ãhú=²÷=È>Š=É(ù=±ÛÂ=Ês8=Ä3Ÿ=û+=æÛU=¾ º=Ã~=ÄT@=ÞK=åÐ=ØO=Ìê—=µ/â=©"'=´û×=»-)=Ñe=µ¡_=¦Â˜=ž=¼åD=ÀB`=Ü0t=Èù=ௗ=Ø}d=µ…=ØT"=±Õ²=±ÀÔ=ÁÂô=Ç~=ÛVØ=Ä“=°WF=ÙYß=Ù·=­ê=±ÂÛ=ĪÕ=È|=ÍT‰=ÕE4=¦7ê=¸ý=¾)Ï=¿ëc=¼]®=¨©U=Ößâ=ìt-=Ýè5=Ô—ð=ËÒ=ê`ä=ï× >|>!¨v>*·ò>+3O>±5>G”=¬-ö=ºy^=ÙrÏ=Òõ =Á£ž=©lÃ=•c=ÎâÎ=¸ó=¨ŸØ=ËD=Ñ=ÑA³=Êû=ÜúY=Òµ¾= ±n=§¼s=¨¡F=ÜÔE=ñ[Î=ì6ú=ç\Ž=ìS‡=ÊAY=ÛP=åS&=Éñp=Á[ð=Á¥o=Ø<¤=ØUå=Çœb=²O =°¼¡=Àƒ=Æ×=Ã׋=®õH=¦+ø=¯ºé=°ê·=¹Ö0=ë)î=è*l=«s£=Ë“q=çÚ¼>è =г=Ê»—=âÝF=¶!=¯‹:=äî=É|ˆ=žN=Ú´ù=ê(=æ‹+=èàh=ïk=ÂÇ=¨†¿=žÈÍ=ë—º=à‡{=Ä‚¯=•ý=²å=¾ìc=Â…=Áx5=½h=Ð)=Þ8=­Z>=ÍSX=â¥÷=óõ=Á˜$=«¤F=¤Uz=«q¾=¾Ýw=Èý€=Ýlê=Âþ`=Å·Ö=ËÓO=”©Û=›Ô^=ág=À,×=­=v=Š½/=°BÔ=ãnu=áf=Òû=ªDÑ=µ«=±)a=Á¼=¿Š=½®¾=™õä=©¿|=¼i;=áfæ=Û’c=ØS=¯5/=¬‹=Ýg=²À=šáì=¬ÈÐ=¸ªT=³»Ü=š0j=«Uû=Ñ°=¹ ë=§†|=‘3É=¿@«=æàI=ÛÃ=Ö…=ÎýM=¦« = iÆ=¥û‘=•Šî=¬oÈ=Ûâc=¶ î=˜ô=búR=Ψ=©´ =³áº=Ñú(=ña>@ì7>Kt>cJ¡>]y>@HÅ> ,E=Íô3=¡5 =¦D=¶6=¹ÜØ=Æ&=Å - =µ“=µúŠ=¹“N=³¹f=¶É2=¶ÄP=¶qè=ÅÑM=׃ñ>(>'Ph>9Š>?'ë>&Õ>È—=Çy=Æëú=ÖÖÚ=߀Î=ýÐ>+xR>>{R>D7>*×ä>ƒä=Ô2í=È6í=Ç¿&=ÇŸ’=¼î¡=ÈÍ=ÞÎ!=ݽÈ=àÀà=é-Î=é!Ð=ä"=Ææ=Ì»m=Ò `=éÐ=Ý›%=Ðùß=»5#=¾£‚=ÄÕ>=ô•=âþ«=¡³=ÑŒ=ÌŠ=ï‡=¦ ­=E=äâë=ØhG=Í<ö=«6¥=ÄÑQ=ã—ñ=ºæB=¶S¦=µi=µ)‚=®sõ=ž¬=µ¯Æ=ÅnT=࿵=Ù›Ž=Õù=ß`ì=ÙŠÇ=ÔÀ6=Ô×r=ã²t=õXo=£Õ…=µZc=ßO»=Ì„ú=Ϩ/=Þ =å·X=æ“=ÝÞ\=å„_=çn#=ÝD.=ɬš=¾»=çv=ç²:=æîa=ÑIX=´ê=Žè›=Éâ=×fŽ=åa=Ó!Þ=Ò¨=Ù™=Ñ©‰=Îøû=Íço=éSÍ=ýVN> Ç?=ÿ˜=íQ€=Ø’=݃¯=âÒ{=·î±=À‡æ=Ì‘ñ=¸a"=·AP=¶´ =£Æ^=ub=–—=¶Ç=À­k=À—=ÏL\=Ù»=êØî=ãv==ÝNg=Ê’=áêI=òS¢=ÉrÎ=ÓÊ^=ß G=é!à=ã¦=Ý„«=æ¥é=É@=%Û=Þ.§=ÛLô=Ç3b=ÏË =Ùƒf=ðTu=Ø.Û=Ú`/=úJú=Ôм=Õ½z>‡> ‰z>Å\=ùìý=ßÀ‰=ÑÓ·=ämL=Þüz=Øòm=º£¨=Úh=ù1‰=äõ=ìo=ø i=Ñ}a=Êt=Äp¾=Õ¼Ñ=Úië=០=üjd=âüI=£ò¼=»áö=ÄÑ/=Ìt$=ãöÂ=è Þ=ßó»=Ã4h=¾\°=ßO¡=Ê©=ÉíØ=þ=7>/>>¿ç=ýKõ=ãbf=Ù Ã>=4=û'&=òZÔ=Ýó=èÓ©=ò%»=èW=ü£Á>a~=ñüÛ=ìþã=ç`•=ç¹Õ=ð©Ö=üV=Õ›þ=Ë%Ø=¾u#=´¤=ÃÏ=Ûíi=ÜH´=ã¬=ïUù=Õk¸=Э=Ðþ³=è¨p=ï«[=î<ž=Î@=Ð=íb=Ýc8=×ua=Ïlý=Ïõï=Ì3==ÅT»=Íph=ÕŒi=í=æ =ë"`>Æ=áPÆ=Ê©\=»=Õ×=ãû6=ì\Ç=æNI=à×4=×›=Ê!=ÁÕ=¯ª=¼çM=È1X=â3|=Õ=Ìû=¹^=×ëÆ=ì^·=ý 3>y¹>…>+0R>Þ3>…a>ã/=óŽº=ådÆ=Á á=˪ç=ÕŸ¯=Ô…R=ëy=öÛŒ=ÊZd=ËZ=Ésf=Êòc=Éé=Ê©ñ=Óé>=½‹Ü=°ó½=ç[T=Êm®=ºŠÜ=Ýð=âŽí=ácµ=µwæ=Ù6º=ëüŒ=ÒŸ6=Ìʾ=ÈaL=ÈÉÛ=¶Á´=²tØ=äõ»=ÑBT=ÍxL=íþÏ=úýÏ> ù>Jà>¿t=þëÀ=÷œÁ=÷…ö=øèV>oá=úw=í®ù=Ç/Î=ÀàÚ=Ù=Ú-Ú=°§<=¬{d=Ùw-=Óa=Õ$1=ãeý=ÿÜÊ>?‡=ì˜Õ=ú¢=ìá.=¼U¬=ÌpÅ=Ôør=ឧ=É¥=ÁŠa=¼.ë=ÕŠ=Í{l=»¦“=ö}=ý³6=ý«d=ìz<=é–=ê]=ãæQ=Û¾(=×)=ê=âOd=Ø -=àüB=áð¦=á<=Å2»=ÙQ=éLã=Ø,Ù=Ò -=лS=ØÈ¢=ð¬“=ú*=â Ú=× y=Ó-"=á»=ÙØR=צ¨=Ø7=ÂQv=»=±or=Æ ò=˯n=ļ=Ó­‘=ᛯ=ô;=Áû¨=Ⱥ{=àXÃ=è¥d=ò¸a=ýsX=ΘÖ=Ò„@=ÖÉ=à›i=æ>z=éaÓ=ó7=ÿ\T>|Ö=ôô=Ö¼°=ÊÔ)=ó‡L=óòV=êØ=Ö%=×;m=Þç =ß·?=Ñ=ÎàA=ÖQü=Þ;Y=Ü>À=ÖxL=ŧ=ãÚ>^&=Ø=L=Ô¹=Ø- >$e=òï+=á©I=ñ›y>Xt>×L=Ë©=ëZ#=ùÐ=ñ’G=øSã=ñ¸²=Þçå=߃‡=ÞnP=ßß=è_š=ê><=è’O=Ä[›=çg>|ß>¾®>‹@>TB>°T=ÿ “=÷Iì=ßN>=ì½d=ð‚ -=éo¡=è@…=ñE±>yî=ÓæÃ=Á®=®±t=Ñ<}=È'F=¹K}=Ë“/=ÝÄ+=ó¯>&–=ëÈ\=ØD«=Àâi=Íéÿ=ÙS»=ç†[=îV=ôWÁ=ù¶ë=àCš=âPt=æùç=ðq=û…>g4>[Ï=ý\”=ì×·=åòq=Ëê==¿ƒ=À(»=Àz=éâ>ÜR>CQp>YÖ¼>rËt>‡—>r‚>Txš>Gó>E=ê …=Év=Õýˆ=ßæu=ï= =Êûú=Å/l=Ò·=ËG=ÞŸë=÷¦›=·ª`=ÁU=Ðó=ù¨=óµS=íÕb=æÄè=ßåZ=ÞW=Ü5œ=«lF=´Y:=Ê=è=åÀõ=ÖÄü=Ç;=«žÛ=°MS=µ‹=¬b2=Ç =✨>­N=ìH=ð+>q=Óÿ¬=Íœ=Ǿ5=¿¤=ÂèÝ=É?=Òbd=Ù³õ=ÞY¤=æò=ß=݉õ=ä¯f=ÒØ¿=Í>~=Ï>×Ê>ìi=üÇ•=æÉ6=îƒ'=êa–=Ü9=Ê•=¾²«=·¹=Àòì=Ý°ï=é©x=¶á„=ÞÙ‡=ì3 =æ‡=à¢ü=ÓîÑ=É"=Ý1=Ù ;=ÔçÌ=å.Ÿ=ñ’^=ó–=Þ'E=Ò¤Ö=Î*ð=¿;#=¾ÍI=ß=ôc=¥Ö™=¸¸&=Ãdô=Ów=Ú1 -=Öì>=Á”ÿ=åb=ìjc=ï°ç=Ôè¤=ÕB6=ÕCs=Ôsî=Åé×=Êó´=æ@»=ûß=ßR¬=Ãöþ=Ö%Ú=ÖZX=Õ…³=Õ†È=Ýv^=Ù&é=ËšÐ=Œ”ä=½ò#=ð°Ü=Õô™=Ýk=Õ—+=° =Ì„)=Ðý=ˇ=Ëòá=ÄuÌ=½=Â@=Î{±=äÈ»>ÒÐ=øLì=ÿàU>Gœ=ÚÓ=ßr©=â¢=ìÓ=ìîc=ìÏ=ì;E=êÆÚ=Ø—¢=ÈE¬=ÎÇ›=óŽ>þ>Z:=õÜ«=ð#v=ÿy[>éz=êÍ=ØùÄ=Ð+=Éò =ÏGÉ=ãxò=ÏÙ<=×>+=áì=þa’=Üá=Ȧä=Ïî=òìä=öp(=íä9>’Ä>±“=ÿž‚=çú9=â)=ì»ë>Šþ=ñû=ï¸ñ=í;=ÓÁd=à+=ë 5=÷ïÏ=ÄÃÜ=ÚéO=õbT=íÂU=ËiJ=¾Áø=Ú†;=Ù«5=Ø–ô=Ò±f=øsk=×X=ÁáB=ÑòÊ=èÏô=èÝP=ψº=ˆA=âJÇ=îEÿ=ÚªÊ=Ìkt=Ùg=óD:=é¾x=ëÃÀ=éb=ߧK=ç<`=éü=ï%?=Ü:=ÄLE=¯•=»±=ÅbE=Ïq=Í`=ÜÏ‹=ê#¢=ó?M=ì_#=øË/=â]=¹?ï>¯ñ>ž=úík=Ùˆk=ÃBM=Î=÷$=ä=â66=Úþ==½Ä=åöQ>†â>©w>"~%>+5>.‘> -þž>ã"=ô!=ë“F=¼I4=Î÷Ý=ÙO=Ïtb=Îv“=Ì€”=Õ¥=ß´;=ºf>=°§ë=Ô=ꞃ=ÄÔÚ=—’=îN¼=Øos=¼ñÂ=•Ä=å'§=ÖéÀ=®š$=Ì/ï=Ðn=Ö%==áÖH=Æ =Äì˜=Ä[Í=¹ø=¹p=Á›ö=Ç‚ƒ=ÞH¨=è'Î=׌Ë=¯ å=ÏŽ‹=פ=׈Í> SN=ïÜß=Ј/=Äýç=°wÍ=¦=ê=§m”=é°ñ=ëèï=ø™–>wT=ýÿ=üQo=î;U=ÏÅ=áÁ¹=Ö›=Å«@=Ĥn=Ìd*=×ty=á=îSÛ=üƒ+>¦t=ØQ=ÙÆ=ÿÑ >:H=ôD >0µ>”o=êT”=üe6=÷¬ =ê4p=Îà×=ÆàÛ=ʸ™=Á‹À=¸Ç$=åU=ú’š>Uü=ÞŠV=ÖÀþ=Þå(=ʆª=òѪ>XÄ>Ð>Õm>=ü"D=î[n=Úè5=Ý©a=äl_=ÒšØ=ÝDÕ=æž}=ë¹>Eî=ÿjl=úª=úââ=ú|(=Þ³ =Ñšø=â0¤=äÄo=Ìd=®"ê=¾A‘=¿u‘=Ík=áÇ =’±¢=šðÿ=®Ä%=°>Ä=›=˜©Ö=Ÿ™Á=¶Êœ=½ Ž=Þ1¹=úl%>ãG>Т>“B=ëýa=ÕÕô=· -=³K-=Æhn=º#=Å’I=Ê/Ù=ÃuP=㮸=íå=ê`8=ʲã=ÓlÇ=Ú” =Óû²>ÔÚ=è©n=Ô~=»|'=ìœ!> õ>(Ù>«‡>€}=è¹±=ÑHl=Ü4ø=®¥æ=ϨÝ=ïzð=É)ž>£T> `>>$a> 8=÷ =Ýe=²ÿ^=—â==ŸË5=¶G=Ð:‹=Æ…±=Ä„=ÈØn=áf\=êfO=è² =ÓÀ=ò+/=×¥Ú=Òr=É x=Ÿ•µ=ÌÎö=Ã|9=¢=Õ¯8=ºE=Âhs=ܘ’=È÷9=Óˆh=Û&v=î-é> —>J«>dO>5Œ=Üá?=Ö*=Íè=®÷”=´Ë=ÒÅ°=Ï1Œ=¦óµ=ÜÆÞ=âú]=쀮=î?À=áNÑ=Ì,ý=Á 7> h¹>-—>àÇ=æÛ=ØçX=ˈ‡=¾'¼=¬¡u=Ù’½=Éú9=ÅÜ=Ä«`=³ñ¡=ОT=ºs=Ÿ¡Ã=Þ°Ö=ÎÏG=ί/=Áï?=¯(…=¥Šo=¶Ý,=Ìñ†=¬ñŒ=· ™=«‡Â=šHL= Ã|=žÏ=œþ=,ƒ=£+f=…Åà=‚[=’‡=‹Ël=—Q=(Y=@=cz–=€-¼=„îO=oSœ=Zh)=]=fÙ=HŒ =ˆ8=„±f=…ZÐ=‘h/=Š´2=ŽEr=‹àó=‘'à=³d=¢ø'=¡Œ=š\£=›‡«=¢•y=£ôÄ=£,·=©=¶=xX=š@v=¶6^=ÏÐ=Îý=â"ø>ÜÉ>gÞ=êöÓ=àKh=Ó7Y=Ä=ÎuW=¹=­ëº=¯]=ËQ¹=Æa®=¯ =ªDà=À =Á$v=Ê"y=ë6<>íS>$¶‘>!k>&ˆ‘=·EU=ßf=Á8Ò=·Ø=½í=ÅJ;=ij=ÉúÃ=Ù©ñ=ä==Ñêˆ=Âro=™å=«›y=¡ó*=¯n¸=ÚeÀ=ú­²>NØ>-ù$>9R >6’>1—>+¢2>21J>$Êh>,5‰>*j>ï³>7%>Ã}>æ>/vä>FØž>Qš–>(ûÊ>'ª=Îõº=Ågr=°°=ÇÑ:=¿±¢=ŠêÂ=ãN4>}=òº¤=ì!á>7Ø> {Ç>ý=Ô‚6=éu¤=ÐTr=Ããç=ËÆó=Ý=Ù=ÕÓÁ=º1.=¤iË=¯”=Ó9=Öä2=ʼE=Ñbc=ñÎ>C>õ =ÇÉ==Î2=±ç'=Ãnú=ÚÄX=£‰Ò=¼yP=¿)=¯ò'=°9=Ì@º=Ô’=ܸ =õ¨—=ðˆh=ÓpÏ=Ü\ý=É=ª=­gí=µÉÁ=Ñ4=å’ =Ë‹n=Ë+=Ë•ç=Ê|¾=ër@=ÝS¼=Çø%=ض=í]á=²]Û=׺ç=Ëú=É =™<é=¥Äx=¥ò =žÃË=­Ây=˜©³= °ý=¬¿=¦5R=n„º=Œ~=›ò4=¥Ÿ=Я£=ë:ß=߆=ا<=ï…#=Ù~¥=ا=Û#=Àúk=¼vK=Ú…ª=ßÜ|=âGI=Ö‡Ã=½a=¸ÚB=ã„=úãà=÷@=À9V=Æ¿ë=×·T=Ó;Z=ȯn=¹Xs=κ_=Í%\=ÅÔú=æEm=Ђz=¬›R=½U=ÒEŸ=Á‚=ÇÇ%=Údq=ðé½=ñ»©=â™ë=ÕôS=ÒÐ=ÚÖ[=ìHº=Û#=ÇVø=¶]=éh‹=âvŠ=«¨Ô=»=æu6=íîÕ=çúÛ=ÿóž> ~é>ê~=¹–z=ÜÎ]=ã}´=´Z =È’Ù=§7œ=¸À=Ù€&=ñ;Å=òý=ý7=ãôŒ=É°3=Ù®=àöù=ÜÑ=á™h=Úi=¶ÜX=ÇdÀ=°ž˜=±o³=Ð]=¶„’=Íûn=Øá =ª’¯=³øÄ=Òòx=Ò$×=ÄÛˆ=¾>=øfM=÷,8>&Í>7x=ÜÎ=¾fÓ=×0ž=¾÷q=±ôg=åi=Ç‚Š=Ÿ0¼=½À<=Ú9ø=¿-c=³‡ú=Ái#=±M¨=½6Œ=ÒX­=¶O=±`=¹Ô=µ =»™Å=È(+=ßC=ãê=ÚaÓ=æ+½=Çh½=ÄÁ¦=»Žä=Â9=æ.i=ÔsÀ=¶ÀE=‰[±=©œx=´±k=Øú=ÇØ=· }=®{“=é=ó {=ì&=àt~>fä=ç͈=÷ò=ã=Ë#M=Íð“=ã¡9=Îp•=¿ÿ<=ÄÐ=¾ÞÙ=¸Uó=ž=¿ô¢=ËŒy=«zÔ=êb=â=Ôe•=Üž=ÜN=·óí=Ç}Q=ÒJx=Óèü=íN=²Ø =¤É=Ï ¶=Ýœ=Ër>=ää£=ºŽ!=”òÓ=žqÍ=©’=Ê1°=Ï2=Ý&­=à';=Õ–J=ÝÚ=ø-š=í·Ù=ø•h=û >=þÉ=Énl=ÒôB=夤=ëp8=æ5Q=¸Q€=·á½=Ñ6·=Øt›=шW=¯±Â=»¯Ô=àê,=ìO=Ñï³=Ÿš=¿c=ß~>_%>G<=éy´=àâÍ=س¨=Õ„Ö=¹§%=ŠŠ=ÜIT=Þ;¼=Í ‚=Ìþ&=ÚrK=¹ «=¼ß±=»Z=Í -=Öï›=Åšù=æ =ê„Ò=Ãît=ôB=ºFk=²‚F=µ[=ž§=¡¡t=·=’Þ¶=¡û5=›“ =‰Vp=–J=Ãt¤=¹¹J=‹—¨=râ=™À=½Œ=Ÿ:Ž=±<¸=ÜTä=¿ˆ{=¶J=Á.=ÂvZ=µ¼Ë=°fÝ=±#.=¶ -'=ÊÁ»=ƵÁ=Š²B=’Ám=Éa=ȈÍ=ÒBâ=¶q¥=Är=ßÝÇ=Àzî=³®W=º¹‹=Íð=Ñ„d=«â¢=šƒM=‘=‡Îq=†=ŠÙn=¿3(=ÓgÕ=˜<·=ŸÀÁ=³¯h=·î‘=´Ïª=ÌMì=À)b=Ç$e>E=íé!=Ý /=Èbá=ɹ=Ï+n=ÒÊ[=Ás=µ<ü=¿p=¾«9=θ=ÕÙ=ɶÄ=á?ÿ=éøá=Î*-=Ô=ÐhÅ=¿²/=´å=¯Ê«=Ñ;¶=æÀØ=þÅ=á©=Úö“=ÇÖ=Éw÷=Ì{½=Îé=Ý;‚=×ß>=þ‹#>%=Ƚ—=Ð×´=ì=épQ=×öŒ=šêM=³®;=Á ÿ=±¡A=Èh5=ó|=öZK=û¤Ü=öµu=àæø=É™ä=ÏOˆ=ÕÎá=çe]=ÅG=·6z=²’Á=ºÑ9=Ã[H=¹±=¿/J=Ò¦e=Ó¦‰=à=ïÃ0=ùTà=þ&>(Ñ=ïR=å]I=ÐI=È¢ÿ=¿¢½=û -®=êúi=”­M=­õ=¿ñÔ=È“Ç=Ç6Í=Ä/ =ö‡ =ãL=¹‚ø=­ÓA=·×ÿ=Ë"ˆ=ÃÓ¸=´-+=Ç€à=ÔÝX=܃®=ÛP=õj{=ç–×=ÚÔó=à{$=õx=çn˜=Ù÷’=Äç¿=ÍC;=ØŸ™=«>¬=§;T=Ê«Ã=Ó> -=Ø4ð=îl=þºe>»Æ>ˆ‡> 3ë>½=Ú~X=ÈïÉ=Ó_@=ÜO=ÔLå=Ö9=¾¬í=¦¤Q=æ<=Û™9=½GË=«¦ß=ªÌÀ=¼V¬=ʾ¬=ÔF›=Þ^ã=ØÞ¬=ÑÕª=¨0Ë=¶üa=Ü”Z=Á—=à =çoâ=ÊH›=¹gá=Ä*­=ä=ÂÞ†=áà=Ü&_=΢Ø=¼í"=ºB¥=¯?=»S=¹ £=Í¡¾=Â_å=¶h=ëFÙ=òåŸ=úfi=ùSú=ù”¼=ù4>À²>›,=ù â=åÐÐ=Ö9Ò=ÊI…=Øn=ëVá=á´~=ÜÕ3=Ôac=ãýw=éãW=éÙ=öÞÅ=þ%E=è -}=Ó¸È=¼B=ÎÚ—=Í•³=ƃ—=ν•=Ù’­=ñÒ3=Ähl=²/¥=Åhg=Åø=ÅÖª=å¡=à`j=Ú#Ù=ÿ¯”>ÐÇ=ú_>>{>¸;=ùg=ë=åµf=ùÄ=ùCŠ=ù`=ÃZú=ËDT=׌}>¶B=ðL=·À -=ÈF;=Î}&=Öaã=η¾=ÊE[=Êk=ºI=ª#²=ÉÓS=ÍÕ6=ÓÕû=æž=å³~=ÞŸ=Ìù =ȇã=È68=Üü—=â¾í=½ü=¶Ôp=³8=:}=±I=Ç› =½j2=Èfì=Ü"V=ÊLà=ÈØÉ=ÑÅ=ࡸ=ßÍæ=ÅQi=¾[™=¼6Þ=Å'=Åã=Å;‘=ØƦ=ÊŸù=¹¨ð=±Ã=ÁÝz=áÛš=áƒ*=æì=õ÷?=æÝb=Ý~¹=Ë^=åH{=óÜ=àœ=ÏCÙ=ÁkÍ=ߥö=Ö´=Ës =ÝM?=ÛÄ¢=ÔäÜ=Ô÷W=щŸ=Êì»=ÂZ:=§=Ê Ü=Ê9A=È”2=¿Oc=Ñ~=ߘ>ö >‚£>-„> ;ê> =åݾ=Õ_ =òÙ­>ü>5‚>}Z>’‰=ê. =Çÿ²=¨:'=ò Ó>¦=Ùøë=ñ·Š=þJ=ÏP¼=㦶=öº­=ã+E=Ý2=ؘ=âtÜ=êuÐ=ön -=ö¾=ò˜Ä=ì û=ópj=ñrÓ=á]=Ùƺ=ÞTà=ÿ>—=ëT=Ûâw=¸ùk=Ë7=Ø d=ߥ&=Ùõ4=Õ=–=ËûÏ=Ñ€=Õ+´=Ë]î=Ó1=Þ¼²=Ýñ2=Ýèú=Þ_=³Ž´=¸’•=ÓÖ–=Û =Ý =Ü8·=â¿õ=æ² =æ†ã=ú>]à=ï¡×=â]‡=ádÓ>xê=ìC=Þ-w=ï¼=ÔŽP=¿]x=äþ‡=äk=ä£ó>hC=ðÕE=Ñ=É =Ö-=퇀=ÓuR=ÚÛÝ=ìáä=íZÉ=àV=Åï=½±`=º}u=²>Y=Ýä°=âðV=ÅZM=毳=îkP=Î^Ã=Ô”»=Øü¸=Ø=ËMl=ÉLœ=ê¶^=äE+=ãWy>°==ñ\´=áÝ=ÍÒj=Ído=Íïá=ý~v=îyÕ=à7ž=Ín =Íw -=ÌàX=Ö´ö=Ìü·=ÃC^=¸ó;=½™)=ÂÓ¤=Ë8Ì=Èä=ÂÁ¡=Ê­O=ÌMe=Ë$=ÒQ=ÓÜ=ÓSk=»±Ã=ÀÞ|=ÓÂ=ä5»=âŸß=Ý9`=ݾ=ÝZ=ÝAñ=ó:>ø>èp>¼l>°ê>Ä¢=ô˜^=äÁ9=Éõ½=àÉ=å=åuo=óE=òæÊ=å+Î=ò|=úÎ>þœ> #W>Ôï>~î=÷!K=Õ ç=¾ÖN=ÅQB=Ë€r=Ú =¹vv=¸ˆm=ì›=Ì_£=ÇL•=ì+=ÞÿI=ÕA7=Ç:M=ÎJè=Ëד=½ñ =Äö:=ÆX=¾[Ê=ä{>=ï×"=Ùcá=ßÆs=å1a=ã%1=Õ©”=Ò— -=ÙOD=Ʀ=ÁcÃ=ÐÙE=ÜÉ =ë_ >"ˆ=ØÇ:=Ï™]=ì¹=Ѧs=Ë’=â.ê=Î,¹=Ïg&=ët…=ä÷É=ðñŒ> 6>QQ=ùi2=ì›X=ùóL=ús³=ì¸=ò}q=íÒ•=Ù£J=öï[=ùG‚=ëÖQ=ëø=ëý,=ëþ¿=ûÔÿ=íß½=Ð>d=ÎÑ¢=Óï=Ùÿ=ð¢¾=ëpY=Ø£e>7w>UK=ýÿ<=õš¬=ð¥=ë'=ò\H=ôÒ\=ôþ>¶=÷p6=à–=àXó=îM=øÀ =ò¥=èîÑ=ànª=ê)=ê¾x=ç_%=×ú=âbD=ã9n=ÄÍ:=ÑœÆ=Ü,=ó=ì¾=ñd>€ž=ù¦•=ûå > t‡=äüy=ä¥1>¨=즜=æ{ž=à¤=Ø‚|=Ù´l=ú­ù=î¸X=ã†=Ä—=Éš†=Ìý¡=ÊŠ=ã­š=ñän=òhO=Ýߟ=ß2,=û)§=í*'=ߊ_=Í%â=ä1Ÿ=áŠÚ=Ö£=Ýa¾=Û,4=Õvh=ç ô=ö>¸%=ñ=ëôž=åÜ\=æj}=ÐJ7=Ãà =Ëè=Å!ü=ÐÓ>µ=Ùà=Ô™á=î¦x=ß™=ÒV=À*d=ÑÍ®=Úeƒ=å!ý=°­ò=×ÁR>ž4=î~ö=ã}=ßV‹=÷8=ë°.=Ýt•=· Ý=ÖÉÍ=ß =ÉG±=Á¦[=È=Ú¸¥=Ó¸¾=Éz®=Àe|=ÚÉ"=Û¶=Þ"ù>(»=åuª=Ô„Š=îˆ6=øé‚=ý²Ì=õ =ÜŒò=Ó«¦=Ú£6=çÚd=óù)=ÿ¬=ý=ðYÇ=ÚÞ©=Û«?=ï& =ÿiR=öÇ^=ûì°>Óý=ÿ¾è=ô=èE=Û-I=åM=×çæ=Àôx=±ëŒ=¸vd=Éó·=ÉÍ’=Î-c=Ö;(>TŒ=ë‚ð=ØÖó=Ô'¸=È"‡=Â7=À,«=Ýå=é±P=÷C'=ïê=ác=Ñ؃=ë¦ =Úùl=ɇ=ÓÆò=å˜T=íe=Ýo=Ï©+=Õ–ˆ=îµV=öÙŠ=èmB=Ê =¸¨?=Ñ9Õ=åÙ/=Ôó¿=ß—ç=æ{Œ=Þñ=ñמ=äM=¥ÉF=ÚÅò=ä“€=ßpê=Í™¹=вÏ=Õg(=è‰=çÂ'=à å=Âqx=¼ƒ„=´£=¦×é=Åk™=Ð|=Õ n=墄=ã·=ØVÐ=ž|Â=°‰²=»<ˆ=Ã!è=ÒQ4=Ô -Ñ=Ìœƒ=Í/ž=Ö—;=àÙ6=θ[==üäº=°M¹=ßrË=è¬Y=ÎË=Þ’,=ä€=ã ·=Äw€=Ï-˜=Úø=â‡`=Õ¹x=Ñû=àúX=ÛFM=é¼m>~=Ùé”=Øšr=Ø÷ñ=õ=ßW|=Ô H=ëÿæ=óÝ=ò±=ìØÓ=Ü–Ú=åYÌ=ìh›=àJA=ÌXE=¾cò=¾Á=Åèú=ÑEM=ì®ð=æ]©=Ì,³=¬ …=¬ì=¼Xb=ÅV÷=¾/=á5–=íqI=ð,=ÔÉ,=Ùìˆ=äTR=ÑÉ]=΋â=Æ|•= åî=œ'j=°B=Ü=ÈÀí=Ò÷ñ=Ù—§=ç =ÝC‰=Ûol=÷ò}=÷ªô=àÔò=¾¢™=‰8=Ìç’=ÑJ =¬Å{=¶ÆÑ=¹áË=£áT=×,Ô=× >=Ëxè=ÞQ¶=É~=»†}=ÛÜ}=¿rX=»B7=Íe=Ä2V=Õ’f=ë’>Çô=ó*(=éh=êº[=ÙBÅ=àH=ô2=öÏ=Û33=ÌN=Ûu=Åi=½©Ô=ÃMX=è°A=òBÞ=ú‰æ=Øî÷=Þy=àÛ—=Úëÿ=Í Ž=ÑÝq=ØãE=Âî=Ö§¼=áÙ=ã¡Œ=Ýo=Ë{&=ºŒ€=ü7=ô6k=ðüÄ>(==ßÑ8=Õ-“=ÖÜÙ=íVƒ=è×^=ãŸC=Û‹{=ã6\=ÙŽ:=·,=õT=Ð|T=ØO”=ÕgJ=Ñ{ =ÑÑ=äd=㞦=Ó0=Å$è=ýÉ=û9B=øÀ¡=òu=É®¢=½q=¼õ•=Õµö=àkµ=ã™ð=ÝaT=è¹»=Ùò5=È¥s=ðï=Ý\Ø=×öJ=ÖÉÙ=ä'd=Ò»b=¾eÿ=Íl‰=ñÑø=ðÛa=Ôó=Önâ=Õ ‰=Ò™`=Ü® =ÉÊt=ÌT=Ùè!=ÓÞ=ãû-=ðY=ÃÂÏ=ß÷Š=ït=î§N=Þ€þ=Ô…=Ðã=é]Ï=ê•=Ýù±=±’È=Ä<=ØR„=àJ=Èx=ÞÕŽ=Þ/m=Õçj=Óñ=ÎQ\=Çý-=ÈÂ=Ëaw=Ç=Ú‹`=ÝS=å0Ö=æe›=ÚÌ =ÛÞÄ=Û³ -=Ù7=ΓS=¼çu=À»i=ã =²€é=´¬²=¼—Þ=´u‰=ÉB=Ó,J=Õ¼»=öè½=ë“=Ö6ˆ=±Nš=â\H=Í–}=¨tÓ=´‡=ªúË=¤Oõ=¨ =•’Ï= ª=°Ý‘=ÒÛ,=Ý~ñ=Æj'=§ÙÝ=¶ó«=¾›š=ÄÍY=Ú—a=´½L=É¢=å˜=ĉ‚=¶A<=³4=¤g=Ýh=Í]=½¸k=²êº=à‡=Ѳª=Íäá=Ô%(=Î…=Æ~=¸Ë=Ìö”=ÕËå=ä€=í<=þ 4=Öïï=¨u£=±$==­>°=¾/û=½«ä=¤ðœ=¥vÌ=­ü1=´%õ=†dÁ=~Þ²=ƒd=¤n$=¤Ll=™õ–=…˜Á=®†O=ȼŠ=̹Î=Áö =ê1=áTu=ÎG3=½að=áŒâ=ç(=àê>Ïž>tŽ> G=ô=0=èšÝ=å1=ß9=Éé=À%=ÒØ =äþR=Ñ?ï=Ô(ê=ÓÊl=ÇbL>6 =Ö ƒ=Êý<=ãÙc=ÌÄð=ÕLt=óDÂ=äz¨=Ü’ =ÏMç=Éøž=ê­ô=Ù•«=Ãg=µ±i=êÕ4=¼»=±J´=½¿=Þ?ë=äbM=Õ -ì=Â(›=Ôªƒ=Ú4©=×@V=Ò å=Í«#=ã -ë=ð q=¾c =Ùq=ÅT,=´t=ÛÀ=Õ¤D=ÝÖ¸=øEH=É*»=ÖU_=âÏZ=Õ#=°Ñh=Ћî=Ú¾Š=Øå=é 7=è0K=åË$=ÇAŒ=ÔÅä=ÚôT=݃t=ð©=å­œ=Ù°=È(ç=Í3=ÁMS=À@…=Þ ¯=˽¨=ÐqN=Í4Ó=ÊR0=Ô{é=õæ&=í=¥÷³=± -=ºl·=Ì|=Õ½=ÐóÐ=Ù؈=ä¦Ý=é“‹=ñu=×vp=ÆP¬=Ó%¾=ìžm=ïu>i=éÃç>”Ý>ˆG=Þ¬=šà=÷{ô=þS=ë - =ë*.=±ò™=¥¢=ÆyÙ=Ùb˜=¼xÞ=Ø©>2£=ê»=Õ:P=Ð]Ñ=ÊY¼=Ö<]=àÄ0=æ×ö=óü=ó`’=ÖÅ|=»$=©¿G=Ì«c=¼)1=³”=ÝŠ=Å,=åjØ=æ¢=Ìy’=°¸²=Ê7š=Ô?I=ðYá=ê1Ê=îž}=â¥õ=Úb=þ`¿=Ù˜œ=¾YN=­Æ=ÁÄ=ÛL8=Ùá=Á;Ï=¸éJ=¿”ƒ=õ=Ò®¦=Øg¤=æ8é=Ö«è=¿›=Í›y=ÙÐ=Ü»í=·-É=¼?á=é¸>†Ä=ú×V=Ç{=ÑE=Ó<|=Áµ7=ǘ•=Æ=ÆeÅ=ÉC=¿—g=»†N=Ç ¥=ìêÖ=þÑ=Ïþù=´ÿò=½Ž=ð=I=ÉŒŽ=Í¡`=Ó04=®uC= :=§‹÷=²©=»[ =õ=¨ŠÕ=žó==ŠT =Ã^O=ÉÞÜ=µp½=ÄaÚ=È„é=ÊÖÂ=ÉÀ=¸E£=Ê[x=Ó¤=²×=±Ò=¸3=×t=Ò…ª=¶ƒ=º%=Är=·îh=¹•k=É™´=Ïã=ÌO@=ÍØ4=Ââï=¿¸F=Ç•È=Ï (=ÓéK=ôg=ð¯Á=è}‰=òU=ìÔ=äÖÆ=è{=ø=ù±T=ÕXÛ=Ò9=Ǻ=«ƒ~=£Ü=´$$=Ì)=Ô÷Ñ=ïÕë=Ö¦Î=ÙÓ¡=ÙMa=»Óä=â=ØÓy=Ê ]=Ø®(=ÛéN=ï6Ø=îúñ=Ýäð=ÚŸ‘=Ù%å=ÏH=ÄøY= x=À0>=ÅÉê=Ùm>ö=Ýö=àR{=à$_=Éãð=Û!ì=ÍLŒ=ǃç=¿a)=Õ Ë=ÈäÍ=½bq=ÆCÍ=݆W=Ábß=ÊÑh=Þ™d=Ñ,@=ÅT§=Ô•7=¾›õ=¤~G= à=µ,=¦[=±ž=Ô.Ä=ãBá=ßË4=Ç–Å=ÃVÔ=µ/¦=¾0R=Ëÿf=×v=™Í}=ÐXà=Î =Ççr=ÂëÂ=Üü=ݺW=»îã=¬F¯=ÇÄ=ºàÍ=ë(=ÙRÖ=×®=¸Ô=«öE=›,°=©tâ=ѼÛ=Êy²=¾â=¿`Ï=ã߇=×ä=Â9ø=ÏR=Úü=¼‘9=ÐÀ­=Ø¥=Ù=Š=Òn½=¸Hy=¹›v=¶ŽM= ‡$=®$\=©ÑE=°…=¿Qß=¯ _=ªy3=Êä=ÔCW=ÓŽÑ=¾j=Ò]5=×Ë=Üæ‡=í¶b=Õf6=Û)¡=ö5–=áCú=½93=Ã&Ö=ÄÕø=ɃZ=Á–=Ï8²=ÆÖæ=Æ2Ò>ñM>e >ðà>É¡=øÌê=íD=ߟW=³º=ÉäÊ=Ö^û=ÌZ,=Üd=×s=Ò]‰=ÉŒ=¦ ®=¶›=©­ë=¾¯›=ºøŒ=· :=>ž=pÿw=žl=«Í=™’®=Í9=sXD=¡ê=¹à=Çð*=×–B=Óͨ=¬)Í=¦ßî=¤J'=Âú’=Â[ -=²N]=Í‹=ÓVÆ=ÄZ[=æŠ>‚J=´eh=}ö=Çf=Îwª=¿’+=Ù3­=õ»q=ÏšÖ=Í3=Þ­Ä=±ÝB=¤W£=¢ÎT=Á¹þ=ÚE=¹»Ü=Ððí=òŸØ=òô=í`=펻=ÖuE=Á7Ó=¹?Û=ºä =ë²²=ít(=ïCm=àQw=ÓA°=Ãz«=Ãc‰=×ô=Êñõ=ßÅÞ=ý„Ì=ä=ÆÎ7=´Õl=Ï=¼±w=¶ep=®è=ø˜¦=Û£È=š==Ä÷3=ÓAm=¹G¯=ÎrÑ=è¡š=åœÏ=áÃZ=³'’=ÇÐ|=½Õ’=¼¹ƒ=¾ =½=ÄrŽ=Ζä=É÷Ê=ÅÄ=Ç—o=é}9=ø™~=ÜdÙ=ÒŒ<=¾Ô­=ÄÙy=Ú €=Õ=Â_R=«[T=¼ØÔ=ÀSí=µÅ =¹=»ð8=ðl³=äYÄ=¼/k=¼ú=½‰¡=··º=Áê=Ó3=ÇÝ =Â{Ô=¸ª%=Ôñú=Þìï=ôcß=ìµp=Û¾=Ô“Ð=Ò½c=ØAç=Ç`Ÿ=ÀÊê>áˆ=ÞJe=ÈÀ4=ÐãÑ=ѧš=Ò;Ð=»øá=êÀ=ÜàÓ=ÜÍ&>ÄÂ=­Lþ=¢y,=Øm?=ÚÉì=Ã?–=Áè€=ÚÉ=µT¤=¶0Ç=¿{D=ÎÊ8=Òv8=ö‚O=íê(=ä*%=ÏWð=Ú­e=݉=á™Q=á^Ì=Ø„*=»Të=Æ´d=ËJl=È7ž=¹ÿì=Àh=η3=úÌ]=Ü=¶š =ØbG=Ê"=Å—;=ÁUÏ=¹!À=»/j=»òg=à™ =β=Õ®ò=Ó-»=¿4Í=ž–Û=¶P>=ȵÀ=¼0½=ÌÑ=í$Õ=½ŸÐ=µð—=³Åõ=ÑO=àÜ=ç­–=Êg=»zÐ=‘–f=–%C=¨$,=å=Ù5R=³¸ƒ=Å6Ä=Ïì=½¬=ˈ'=Äý=ÎD¿=ÓÌ=Ò<¸=¼ØÆ=È›§=áŠð=ã¥z=Øܵ=Ì`é=Ãç®=§¥r=¶O:=Éb¤=¿5Ñ=¼d=ôê=Ï=>=û=æ°¯=Ö=¹/=¿¡=à\s=ò!¹=Ù:=ÙFÖ=¼þ*=ÇI =ÇKÊ=ËIÃ=Ðæb=ÛÙ=½§…=¥þF=ãÅö=㟒=Õª‡=Á’=Á=Íi=Ü ÷=ìÁl=è=Ûøb=Êñ =ß5î=Ü?=ÕR=Âu'=ÅöÁ=ÀwÑ=Öÿ=Ù_9=ÕEµ=ÚçH=ç$Q=Çßé=·#e=Ä~¸=ËÎÜ=ݯÅ=´6G=±u¸=¶»x=™Î=ň†=àÀz=çb=Ø+Ý=ßÏÆ=Û˜=¿Íñ=Æ1=ÊCÒ=´!×=°)<=¬~Ž=¸Ñ=ÀGL=Åÿ=±Óä=¤÷=¨»Ö=Äa€=Ú&£=©Mñ=®n-=Ãò=ë—€=ôŽ=Îâû=¼Hg=¬Îˆ=âÁ‡=×ò=Âß/=åWé=å{€=¶®Æ=¼ÄS=­U=Öï=Ñ =˺Ž=Ë5©=È’¸=¿x=ÆÜ­=ÈTA=´=¨$…=¦=ã =í¿=ôœÕ> -Lx> ZÄ=è¹Í=ô*²=ýß]=½Ôý=ÍßÌ=çµá=Õi•=Ò(=¹K=­Í=® =·. =Ì<æ=ÔþN=Ó®í=˘ =Øε=Þc=ÁE>=ËŠ9=ÔkÐ=·Ã=ƈ=ß.=Åå=ÆÃC=Ôs2=áÓä=ãê,=É«y=Õ‚š=Üæb=¿¢f=È`=Òã6=ì2ö=äZ<=ÇùB=åt>=îJ=äúy=åÃY=ßM¥=•=¸:=ÛMk=ã¶ü=ÜXÉ=ÏÁš=ç£v=ç‡6=Øÿê=ß´W=áŸI=ØÏu=Ór=Κ=¦ŽL=»Ô=×û˜=Ùg!=Ý}Ñ=ëT=Ûô=ÛýÈ=ëà=Ö~=Íá=¹!Û=¸Z—=¹"Ç=Õ²Å=ÞÒ#=ér½=àÈž=ÔÕ‰=Áþ´=Áº1=¸ðŸ=š1a=­<^=¶Íz=¶õ =± Ô=«„=wóJ=œ©9=¿zE=‘N,=¡*à=¿À=®î—=².3=Èà=³¸=®Ì¡=¾I=ÉÇ[=Îdð=½ž=Ö«±=í[ =Ñlj=Ü]‡=í<-=ÃÀ=À̳=Æ^$=½ëY=Êß?=õÕ=õ\Î=ñ† =Øÿ -=Ùr¢=ÙH==ëJD=Ø.ó=Ät¨=ßÛ=Õ¿=Ä® =¬gS=¶V™=Ö€ñ=Ç@$=ÃJ—=Âú=Ö·“=ßÕ0=èV=Ü­ú=ÖOg=ú!\=ðÅY=çxE=ÞC=ÝÒæ=Ýׯ=ÝÂ=å:˜=ð}€=áX'=Ýfä=ÝŽµ=ëã`=ð¯x=ïæ=Ð -7=Â,=Ê¡×=Ðêe=Ô©¼=ï‘Z=óe+=ø`$=Ôß?=Îg¡=Éjº=ë†Ô=Üßõ=¿O)=Õ¥=Õ4Ž=Çüú=ί=ÍHñ=¾ZL=Ö†=ܘy=´Ð¶=ì™{> -i=Ð#Õ=Г—=Ð5‹=Ð1¾=ÊÇï=Ç4¶=¾:¯=Ù&<=þ=Ôœ€=ßý„=ýƒ‘=î|‹=äL=Ï "=Àx~=¿}=Ø8¡=Å;ô=º=³’=Ê|-=×=Å)ƒ=Äk=ÅÛû=͹c=×Í=ß=y= <Ž=µ@î=ÍGµ=̹=Ïäy=ÕÅ”=ÅSÏ=¿Ä2=º(\=»£=Ê’x=ð Ã=̲W=ÃNb=Ãq=ɲ'=ÒîX=ç =ÅÇN=ØR=çB›=Ôì)=ÌË=ÕË=É=ÁN=°-’=Ó£,=í€=Ë'==ÆG=£?=Ô3½=ë®[>òÒ=Ým==ÔG*=Éÿm=ÙËC=Ù›«=Òº»=ºN˜=Ág=Ò;Ï=é]Õ=ã=Ñðò=ߺ˜=Üí{=Èæk=æ±k=çÿÍ=Û§=éB=ä -ù=ÈŒ=ÎÅ=ÕN«=ãìb=äJ/=á}=Ñî=ã=è ê=Ò4f=Ýò©=ßMý=È”‡=Óe=Û @=Úr­=Ô.=Ñ{J=ÑB=Ðw1=Îãõ=¶ p=¶Ä=¶¢=Ð:v=Þø#=ê(†=Ð(œ=âCl=ódá=­IÓ=º}Þ=Ç|œ=ÙbÜ=×®0=Ù:Æ=Àüe=ÂNï=ÇÞü=¿û=×Pì=ô£[=±#=·Ô=È(ð=¸P=¹T.=¿`s=Ǻ™=ÎÝh=Ú1Î=Â~*=·<=¬á{=¶[=¿O/=ЖH=ЇQ=ÉY=¾6¢=½&õ=°km=™Æu=º¢¿=¹ )=´’z=ÃÅE=®=‡ñÆ= =Ÿ=¦+n=«Þ§=Ì­û=¿ã¨=«½=Ì =Ë—n=Æ[Û=ÅY=ÉëŠ=Í;=Ôë =É©¹=´i³=»P­=Á$?=Æ-ï=Ï/Ô=Ò]=Ø>Ù=Ç‘ =Éî¨=Ïä›=¼º=½CÅ=¼JA=×a=Æ=³/=ÍB=Ér+=Ä­_=©×=¶ãF=Äf2=³ÁG=­`=ª¿T=³(þ=¥v¨=˜6=³¶=Æ^Ù=Õo×=Í´‚=¾Ô=´[£=ÍÄ*=Ȳ=Ä©g=Äé^=ÄÅr=Â’=²¥=¬Õ=«<­=²äI=­aÃ=«È=²,%=·‘ã=¾ò‘=̲Ð=ÑÄB=Ô%á=̲w=ÞëK=ã¹==Õ *=ám=ßc>=Ësz=ß76=ßŬ=Ô»Ý=ÄrH=Ä•”=Êz$=ÁÝŒ=ÓÖ6=í)‘=Üë¡=Ш[=Á8k=Ñpv=Ρ©=ÊV_=ä›=ãŽe=ã$ÿ=ɨÌ=Ò´»=Û•F=Ûª}=ÜŒL=Ú¤ =ãî=é_ô=æW±=Éd¬=Ãs®=ÅU÷=Û_M=ß¾]=å€W=ìVù=½)Ù=±1r=·œt=½§ž=ÈW‡=Ù\B=Ì¢@=Ãß«=¿“ã=ø Œ=ãg=Àgã>s=èbÛ=Ê»<=õW´=×µ=ÄùÎ=í ½=è@ü=ÞR¡=ÁT=ÈM\=ËÖ'=Ól[=ËÌ==˵_=Òø=ß =ë±­=õžÒ=×ù„=ËÁ!=ÀlI=à<~=à¾+=Û¾ß=¨=·“=Éø =ÊD=Ô =Úæ=Ò ë=Æ] =Ã<Ü=ÓH+=ÓÈ=Ïž—=Âr¨=Él=Ógc=æe =í²è=Þ¨Œ= ª=º"¦=ˆò=ˤ=Ã’-=Ç)$=Ì€==ÝçÄ=Ýó#=ÛÜñ=Ô1=Îl=În =ÜÖW=¬µ=¡(=¦§M=½K=Èã@=Óåð=Ü¥À=Þá’=ÜþT=±Î=µÑ‚=½^ð=Õ²'=ÈÀ=Äq’=ËP¾=¸¼Ò=³S=¹[f=±Õ)=È@ =ñU¯=Ϭ=Õ62=ágœ=¼ú=¿œ=ĸ@=Ôû–=ÜD=Û¤ì=ÃÍ=Þ)~=â¨ï=Λæ=í£–=èÐc=Ö2=ßi§=Öz=Ï«=Î)Ó=Ø>c=ß!g=Б¡=Í&=ÏÛ?=ß«Ì=Ò¢C=˵Î=ŵ=ã¸=ÛU[=Ç]t=¼& =Ä©´=σ¾=¿ry=Ðô¨=Ï·=¢g'=º÷=É'=Ï|[=±´=¹ƒ$=Ðœ–=ÇÚ‹=Ãáu=À¾.=âað=´n›=¥ë=Ù)d=Óln=Ñ,Þ=Ðç=Èf=Ç„=ÑUž=õÀ˜=ÜÀi=Ãä´=ã¾¥=Ýx…=ÓÛ=ÈÉ‹=è3¢=éˆ=Ý]Æ=ü9h=éÍÉ=ÉZå=Ñà9=ÑdZ=ÒL=ÚWø=ÉL=ÉŸ;=ä'Ð=Öâ=Þ)ž=íÉ=í=Š=ÒóË=½FC=ïmB=ÿN-=ÿ­4=Ó42=é;=îm´=é´Þ=¿¿M=ÆÁR=Ö“˜=ÍíI=Æ¥=Ũf=ÕZ[=Å•=Öe>û=å%ú=íÞf>ˆœ=¹~®=ÅBä=Ê>é=˸=ç +=õdK=õ<=à -°=ÒP3=Á?{=Þšá=Ýž=Ôw=Ìjm=× =Ï =®†b=åŸÐ=Õ9=ºÇu=á–ì=Ø}A=Ô£a=ëÅK=Þ“(=Õ{=Ï4=Æy=âJ­>6(=Õ…j=×Ù=Ð7=ª³=ÍÑ=ÔQ =ÎoL=¹j=Ô1x=ì<÷=Ñ©©=ð„=ô¥‹=Îî=Áœ(=ͪ°=ꛡ=Äw}=Ç(¾=Èúá=¯»ë=¾)Ï=Ó•ñ=ø8=Ö; =Ù¢O=ã˜û=ÏŸ±=Ǹ…=Æ[~=Ô-e=ÃŽ;=¿ x=Ábì=¹’Ê=©þu=žP=³å;=¼0‚=´p =™Ž=®p®=¯¾z=¬¼Ú=¤.©=œ•I=©9s=ÐzÂ=ãX=Ü{þ=ËšÙ=ârÕ=ãË)=æ†j>==ø¦é=ëM=Öêó=ð­C=Û†£=ÆþÌ=ÒLÍ=Þ.=ä{²=åäÊ=ÞÛ=ÞR‡=ßÃÖ=ùT[=Þ¢m=Ðj=ĈË=Çò=ÙÃý=ð*º=æá®=Æ]y=´lD=·úµ=Å´9=¹|¡=¡_Ö=Ü =äåÆ=ç@›=ã-€>®=ö—$=âRa=Ú„}=êâ=ñ&6=Ìè=öºp=ûS=ûÜ=Öç¯=ż‹=Äžƒ=ãÓ=Ót±=¾J’=¨¢Û=ØíØ=á@=å^=á.Í=â+d=ϲ=Ãí=ƪô=Íz'=Õ}=ë]¶=çžò=Û½ =ÏÌ°=Ö”H=ÈôÜ=Æz—=ëè7=ÀW^=¸¯á=¿¡y=Â3ò=­i¯=­×j=Ùªþ=Ùt¯=ÖCÇ=ÓÍ=Ò€U=Îã}=È+‚=¾LA=¸Òg=­6=Ô¤Ö=ñÖÝ=ÑV=Ç­‡=Éôˆ=«±æ=¬­m=¸›“=Úh=áó+=âI=Üñ=íŽ>NN>t(=Úùq=Í ù=Ü(=ìâí=Î"—=Ív=Ò¢v==ĈÄ=Äy;=¼ =ÓÓi=̪6=Ë’¶=½•˜=ºÇ=Ì?D=ÕO÷=À…ñ=µãÍ=Çø=ΠØ=¬Qª=¬š=±=µÒ=ÂNª=Ð=ÔQO=ö=àI=é!Æ=ýø(=öJƒ=ö-«=ëG½=Á@,=Òi$=ÆxZ=·[=¶{R=ºêñ=ÅÿR=Þþi=Ó·C=Ë7A=ÅU=·† =Í›„=Ò=4=ÄÔ¼=ÅÀ¶=׊=Ñ@^=Ðͬ=´2B=¼í0=ÐÓÞ=æ»x=É=ÕqY=àL/=ÿ!ë=Ë}=À·‚=¼Ö= €=­3^=áò=ÿ}=Ã:3=»Gß=ØÓ¹=ât¾=Ýt=ç1R=ï%=¦ý=¡q®=º½6=áØ =ìß…=ÜÄ=Ö=ó¹“=Ì Á=Ïšv=Ú[Á=Ï“0=Üë=Ùà=¾0Í=Òæº=˪Œ=Ëž=Ï;’=Õ¢ð=½¹=Ã[D=îVâ=̱¹=Á0=Ä@+=ÜéR=åàº=ó"¾=ú=ìÛ^=Ü‚ =¶™´=¸=Õì =¾Äd=±]~=®–Ÿ=³º€=©m¤=«ÞS=Õ±Ù=Óaœ=ܯ„=ðJ=Ê;È=çëÝ=Õžp=·ñƒ=Ò¸ø=Á§³=¼pç=è³5=Ö z=ýT!>Aü=äGÎ=Ç%?=µ¼c=À!©=ç3t=ó°-=á¸Á=ɯ¯=¼q=Ép5=É•Y=Þž³=æ8Â=»£=ÁJŸ=ìx=ýÏ.=Ò³æ=¹˜C=±‰=Ê—å=Ëß!=¹ÿý=³Lµ=º©x=¹”#=´™=´X¾=Òrk=Ï7=¼çN=µ§Ð=íåÜ=à 0=Ê­m=Þ8,=ܶî=à¹"=âL=õ=ã2Q=Æ$¢=´œ§=¯ -=°O=ÁT=ÄW5=«lô=œ±Ý=©Jº=¨zü=›_Ú=¦ãÌ=Ôä=ì0B=¶Y|=§…¸=œËc=Â*Õ=´°=¸Õé=ªa´=ˆê=bÀ6=}×$= P1=¥½¿=°þ×=®CÜ=£Â—=ªy—=ÓmZ=ÝÁ.=ë­b=èÉ=´<Ñ=¦ša=¯ž =ÎE=ÆÛ˜=ÚcY=Û_ò=ÐéÖ=æÕJ=²/1=±í)=ê‚õ=×·¾=æ«Å=à,=¸q=¼y‚=Ìc=Î=°6 =Éÿ„=ßS³=Ë%©=©t5=Ëè^=Ç9=µ ;=•ˆÙ=—?Ã=º=ÀŒl=ÂùÂ=­Ã=²š§=²êº=°*˜=¶{Õ=Ù==Ï¡ =ê“ó>Úã=ö¾=ÚÕÊ=¡Ñ=¾ó;=Ëj=Ä6 =ÖÁ.=¹ø/=ÌQƒ=Ù»=Ôy¤=Økó=Ô==¹%ê=—[ì=Á]y=Òx=ÃÏÎ=Æ»¹=ú:¡=̈X=Å~=Ë5µ=âàÿ>óõ=øT¼=ã¶û=Τ‚=ÎGC=´¦’=¼«Œ=é/ =µX¤=˜³"=–«ü=´áO=×£=ñy-=å¿•=¡²=Çá•=ÛÆ_=ÞÏ2=Òäd=Ä×b=ص/=ĸC=é™=Ý®ê=â2¡=ôàá=àÒú=Ó°ñ=ÂŒ@=ÂJç=Ájh=˼Á=Á¼¾=ÏÌ¢=Õî÷=Ö -œ=äVV=Ä’¹=ºÎ=á¶È=ò=ËNÉ=Éz°=Ð¥²=¿où=ºV-=ºÊ=¶`n=¨/½=Œ™e=¨í´=§¤=©®H=¿!=ºÏ`=ºÛ_=¬œL=¯,¡=ºáp=§’c=¦m=ÇÀ=Íù=¢b==®¿­=ëÔ>=ñ×=Ï0&=¾ïê=¿d =Õð‚=ÒåD=Åü±=¹_þ=Ãü=ãÇ=Û=ÃIØ=­oý=ÒÎ=Ïôà=µüÅ=™¬)=—5²=¶l=Ãq=¶Ÿu=¤TB=°k¦=Á²=Ìá=ȼ2=®„7=¤îI=µÅ=‘·&=¢*ï=— =žÄX= ˜n=ƒ|©=•ßî=‡¨9=—E`=«(b=†|[=T±=–&Ë=u0=uèK=tÁL=‡#=ä‰=©Ò/=Ãø£=·cV=··x=™Ë®=‹w=²!Ø=ÌK=Ä."=»‰Ç=Èÿê=Ú?Ô=Çç´=¿Vì=¼Ë*=ºF|=´ªk=¶Ÿu=µ"è=®•õ=¬|O=´Ñ•=Ö"Û=ã|Æ=Úá=Úu=Ïçô=â<¾=ëÃÇ=å´¹=Ìw=¹Ø«=£mq=Ÿf?=ÂíT=Ìm}=Ôg+=¨¬'=·á"=Á³1=Ä`—=Â;Æ=¸Jb=´ñ—=¾¾=Æ{ó=ÔB =¦aº=ªçZ=£m\=Èm“=ðÀp=ÐP=ÛÉ=Ý4$=õÂà=è!~=Þ2o=Ý=á³ã=Ëè=­ù5=±z=­ÿ =·Ìì=½Žõ=ÑvJ=»o=Æ~c>Ÿà=¹Ð=¢ÚÏ=éè<=ÝÓ,=ÔÂB=ÅéÂ=Ç×=¬­=ºŠW=¶Á= \=¬Z)=Ï^m=±Õë=”Iˆ=œ›9=¥b,=¶¬—=°yÑ=šÊØ=»|¯=½¦=¦iÎ=²d¸=·@ =äa=Ýñ@=ÅÄ=ÂÁ‚=¹oÁ=ªˆë=²Ø˜=Ê;=¬=Å=¿‹ =Ìg®=Ò¿E=Ô ë=ª¬=½VÏ=¼Û…=Èn„=ÚÓ3=Çý=¼Ì>=È[„=ÁRï= =´Ž}=°Z=»89=ÈçÃ=È"[=ÈIR=ÑÜ =åÅ?=Æ®"=¹[Ë=ÒmØ=âpq=ô8ê=¾=»Ò™=°7›=®2=Ðâú=Úט=Äfß=ɦ1=µ„¡=šÇX=¼i+=Ö7z=Ò2 =²Ø9=¢_k=”~=’áW=Ã0Á=Ê•±=¾žÄ=¾ÈŽ=ÄÇb=³™x=®g=§“Ì=•Ä–=š#9=¬æÉ=É‹þ=Çv=ˆG1=ŸuF=¿ëÚ=»¹½=²N]=—=…º=…W=®VK=Ð> áó=í­=´§Ö=çû™=é% =Ë|=çñÑ=òjm=×!=Æl¦=ÄŒ¹=ÒAÕ=èPÆ=×<˜=Ò A=ßJÜ=ÃåÇ=—%7=¿©o=ºÊæ=Ä‘™=Âõ¾=Í%ù=Ó„ƒ=ó#M=êXß=Ö”#=뵤=Þ€È=ºÛC=²¡ =Æo¦=Äv=µ„=μ=ÕòÜ=ÓÞ3=½œñ=¹©v=Ú¬=Åk=«ç×=¾Ìd=½>}=ìÿ9=Ûht=¯•’=ÎS=Ë®=¤ù0=ªp=¯9 -=²›=µ¹æ=¦6—=Õå4=ìóÊ=¸ŠY=·SE=¼‘Ÿ=Ò!=ê¹Û=ò¥=àk=ÑÕ-=ÛÎ=Ⱥ–=ÖÅö=ÑßA=ÍBŽ=ÙŠö=ÕhK=â5=œã‚=h]=ËY=ÎOê=Ç–Ã=ÄÞ=È_h=Ûó=Ó|–=Éb=½™=Í »=ÖËg=ÅÜ=Þ%=ê¯b=ÔÇ>=Éê=½=ÅMb=Ò½ƒ=×Gä=Ø—ð=¥ï=±I=ÓŽ=ÜÙz=ÖæN=ä4_=ÎL=ÀÐ$=À<…=Ì{ =Ç*¿=Їù=×Ͳ=Ë=Àõ=Ñ¥=èÃx=Þš=Æÿ¿=Ð=ÄÜ=µ² =µWY=¹\ó=ïVª=â -=Ë(=Ñ)·=ÒÉo=õ|Y=ì¨=æ^œ=î²==üC¥=Ò<5=ÏBï=Ú˜m=áu½=Ø—c=óh<=Û‡=ºÆ­=Èé=ÛEi=áÏ=éö0=âz=Ì‘Æ=ÞvÌ=Ô ì=¿ ¦=Êh=ß=Ñ/¶=Æ6=Ýgò=í=öSo=Ê‹À=Ó¦-=ðts=ÿó=ýœ}=õOØ=豎=ßmŠ=Ô[É=¾¥ -=»=Ñ›==à$±=è¬=â&­=ÜóÒ=ñ‰°=êi=ÜÌU=»6ï=´E =ÅDí=ÅòË=Å¥m=íz'=êÇ=ÙÿC=ÁnŒ=¼|˜=ÙO€=Ôt?=Î`ß=Âx==»kö=¬ð =Ó§'=â¹=á'Õ=æU’=ëÑ‚=ö1ð=ñZÔ=ëTü=ËRK=Å=ß¾/=Ô#æ=Êo2=Ê*=ÕŸS=é¨|>%t=ýÃ\=Ççþ=Þº±=ð5š=¾å8=µ;=¨±³=ãø£=ê7Ò=ÒGÎ=̵å=Ès > «/=úW=Е¢=¿âñ=ÁÎK=Ù^‚=óM>7W=Ù“=Ó1f=ÍäE=ßÍ6=Ý^=ÍÇŽ=êÈ¢=÷ Í>_–=ñMè=×á=Í÷<=Üå=ÿ§=çwi=åÄÝ=þVÓ=ý ¦=þÑ =Î ?=ÊP†=Ë~Ž=Ó¶@=Ö+9=Þm•=Ù²Ö=ÓmR=ÝNÎ=á®Â=ç|ø=ºìk=¾¤Ù=Ò̲=çò=è¨c=½Í =Ãz7=Ç6­=ã¶=ã“#=ä·¥=ë„Ï=ï\f=÷k%=ðkO=ëÚ6=âÌ%=ó¯½>Ãt=ç@ =à Þ=Øǃ=Êh‘=ž)=Í­Æ=Âß›=¹×•=Þ±m=݈=ÖâÅ=ß ä=׶W=¸ïœ=ÑÕÞ=àÁ)=ó-ä=àµø=˨ =Àâù=ήU=è¡ë=èñ=çÕ{=ç¤/=ç‚H=é=æ¨Ó=Ý‹?=Ó•Õ=äš?=èºk=îìå=æúI=é’X>ÛÂ=ëe =ÛÐ ->žh=õ€=ä æ=Úòn=èBB>@o=î´w=âú‰=Ú<=Õ)=Й=ìO4=ñ ¶=õ'S=äÎ=àO'=Ùf‡=ʪø=Ľ=»ÎÖ=Ì8(=×|÷=Ä¥Ü=ÐT=á^=Éê=Èbâ=×-=Á=´=·Š=§Mª=§ -=¨Á#=Ìnÿ=̹É=Ì =Á µ=ÒÜ=ðmê=÷—Ê=ò;'=Ô–}=ÒÄé=ÕR+=æ¨s=æÀ¡=æØ(=Õ”\=Å´J=®M“=Ûc =àxa=ÓŸ==Ç -=Ç×À=ø-”=á“\=Ò Í=·I=˲¾=äÔ=ª{%=¯³û=È*õ=Ï„"=ÒX=Úc=èg3=äír=«†I=°ás=µ#®=Ø[”=Ñen=Æo3=æm:=êÑ°=ê9e=ºÖË=¶ÂZ=ó¥!=À†Ä=ž­j=Žñê=¡½Í=³,=ªzö=®$ã=³¿P=Ë4ˆ=¿ë‰= ›=¡?Š=¦N=¼+=ºîï=º^=©_Ï=­çø=²_¾=©It=°^)=ºèo=Ò±=Ïkâ=ÃBE=µŒ=ºÖð=Ýï_=´=¦ZG=æ»K=Í©ý=¹ŒK=ÜLN=ÎL=Á=:=ê#c=ë@ =äÞê=äþ3=åßÀ=å ê=ëS!=êèª=ÛöŽ=Ö€r=Ñ‹=Éö==Ë{š=ÊÌH=þ¡=æèá=Êý=ô/|=óÂr=ìù¹=©Î*=½áS>Æ<=ÎYr=¼ÄÙ=ÑpÅ=Ûàñ=áuH=âÈ~=Ú–-=ÐTø=¾„G=ÏE+=âHù=¯=Ãó=ê6=é“h=ç¶=àÎŽ=ÙNL=æÏý> zŒ>£ˆ>Ö¾=ûž=àXB=Îì=×ê2=æ¯I=òR÷=ÇZ¸=ÎE=׳e=ÈÀA=ÓÕý=èŒò=Ùa-=ÑûK=ÅŒ =áyÄ=ã·=Í£Ë=ùD>ØÜ=çä -=Üâ™=×SÄ=ç|D=÷c™>Ix=æÞx=ô0Ì>w£=ÕdÊ=ï å>Ù=ÚH³=Þg÷=ï3m=í¤|=îø=îî;=Ùææ=Ô9=ÔŒ=çß=ê>=Ý7´=ÒF*=Ï@,=å†Õ=éÅ=îƒÑ=å¿å=ë-=í/ =÷=î8I=äÓu=þÁ=ó=äO=õ\=ùß©=þ‚A>ìu=ôVL=Ò^Ã=ÙMÖ=ß9¾=ëú$=ó² =ò/Õ=ì<¶=ñKž=õ„ü=ô³A=ûŸ=ú¯=ô¸Ô=ô¥=ñ9=ÒXs=ÜZ4=ãï=ãîó=Þé=ÛCH=Á6'=ß¼ª=þß=ýäÂ=êÕ~=Òáõ=Ùa…=Üí=Û!=êGÝ=ì—Ù=ì˜î=劾=ãO‘=ã´ê=ãvè=ßv¹=Ú©=â1=ánü=ÙÉ=ØÜ®=ÙÃH=ÙîÅ=Ò_=Î í=Àd=ÅÛ>=Ï‘b=ëgÃ=ëa=ì››=ü. =ò+Û=æK´=È7­=ǘ=ÌÛÇ=ê¡/=Ë =¹çÒ=Ñ…=Ú›x=âïÏ=óƒâ=÷ m=ù2d=úÛ=ç \=Ùo=áWœ=àÒV=á˜Z=àö=àX=àrh=Ç0X=Ÿ=¾Ã=×W4=æìï=ùPÕ=×Wÿ=ß 1=èCw=àXx=ÛŒ-=Ö› >¬ë=óa´=×4¿=ÏÖ=éÞ>Aí=ÁÓÜ=ÏgØ=胙=ÙG=â°¶=òÌ=ù.!=îÓ&=ßw=ÐMT=ͦ|=Íž=ôðu=ïlt=ç4‹=ØVF=Ù<|=Þw=×=Z=Õ'=Õ)~=ÎQz=ËÉ=ÌÅ=>Ù=éeY=»v~=ÚZ|=ëbÛ=ÿˆJ=à¿=ÝF»=Ý=ýP~=ñÊ=Ý„Z=õ˜!=ò¥A=íî%=Ö³N=âÆ=ï—=Å¥µ=Ķ¦=ÄX‚=ÄN=ÚÙ(=öÖœ=øR=æ­ú=ÔJï=ÓÄ<=ÃS:=²(\=º=¶(W=³¢/=ÃË=±×=¡=Ó¦Ï=²º”=š{=²\=¬`=¨4b=˜™`=¬w =¹.=©®%=¿:ô=È =ºþ==Ö½Ý=Ý?»=²½=¹ =ºXm=ºd=Áw=ÈQ‹=Ý=è=Öû¼=Õõ=Ôò/=èd=å˜=ÌËK=ÓÀ=Øk¢=ÝŠñ=È€B=ÒÞ=îæz=´ïº=Âx”=îüs=߯Ž=Ðx¢=ºñ,=éƒæ=íË=îIn=ð*K=é|N=Þä=Ìvˆ=É=ÆŠh=çÀ=Ü?Ú=Ø/B=øÑ”>Ð'>,~=÷Z)=ÐJ‘=¾'@=Í©#=Ô?=Ö(©=Þ²=ß¹ì=Û=|=ÕÚþ=å@<=ßTk=͉@=Û¿ò=ÞBJ=ÞXä=Ï =΋Ê=Ïcß=ôÞ–=ðêU=æ•ž=ç Ö=ØÔ`=И>>vW=÷èØ=êÍ,=¼§ú=×æf=ßòÒ=¼=Él=Ò½3=à~ =àÜz=ą̃=é± =÷R=ýs>úÞ=Ì5=Òô©=è·‹=úÛ%=ñ3=á"é=Ç­=ç<=ÿð=êè$=Ö)Í=Ϭš=û)×=îÍ+=êK¡=éJÂ=ñ!Ï=ðÂâ=è±·=Úl1=ß6l=ëÐà=ÜUe=ê]ÿ>yÁ=ëð¿=ã)a=Ú==ꉈ=é±\=æÈ-=Ù0%=Ï’Ê=Ñà=ë€ë=×ðn=ØFY=ìC­=óÿ=ïèn=åZD=Õ/Æ=ØÀŠ=ã/Q=Án=Û0ÿ=öüæ=ýÐ…=íÀŒ=å‘=í7B=òz‘=÷"l=ý{¨=êŠë=ïU>=ÿ¸h=ûöœ=ý¹¢=½:O=È¿Œ=Ù2ï=ïÄÕ=ìWs=æå¶=îÚÉ=ïîP=çpË=ËYí=·@H=Æ?=ùr‰=ên@=ëìH=ðÅ÷=ñú™>°0> =ß²¼=ñDl=ù¿>>Sõ>1I=Ý_Œ=ÉóÚ=Öê³=ò¦X=¿W=Ç7.=×Z—=Í9 =áâ=ðÆ;=ø„ú=à’ú=Òwƒ=˧Š=÷ç¿=ï¡o=Äد=õµ;=ûn7=û©ó=õ =éb¸=Û‰=ÄÎ=з=â"=é0t=Ô¡6=Ö‚ =àTV=ê_T=òd5=øYÖ=Üía=Óä}=Ò”Æ=æì‘=Ì…v=Âì=ÏÔÈ=Ï‹|=Í´è=ÍA=ÛË=ßÕ°=Û‘î=çñÃ=ìîL=îo=çk =àêw=Óû=¿•g>U•=ð–z=ÓCD=Ôg¬=Âýœ=ºùV=Ô,=º|Õ=¾°G=æü¨=Åͱ=Áç¨=Ãðj=Ô™ =ÎO3=ϯP=ð•=Û=|=ÑÂü= 4=µï=®æ=«Ü­=¬s¬=¬þê=´eV=ÖK=±‚ê=®;=ä-U=­½=«B‘=³!=­ù_=Ë€ò=éÞá=³[|=ÁòÝ=Ïìj=×ò–=àL>=Ð8=³ÊÉ=â6á=ãp=ØÀ´=´( =¸ž=ëb‘=«=Ž=ט=àd…=Ò!=èÆ,=æ*2=Ülø=ÝÊ=¿¶Þ=²˜°=È_ø=ÆÐð=Ô«=ïË=Ö¸=Õr‘=Þ*m=þÿ¢=äî=ÓØo=Çz=ßø³=â.,=â" =ã/+=ãY$=éN­=ö|=õ­4=íN¢=ÖÞû=ÓÆË=ÞrQ=ä)C=ÛRâ=Ë,©=¾²=°ZÎ=ÒÈ=áN±=ðs|=í]=ê½=åã£=Á‹=ÑHã=Ës=Åÿ=ÃËu=ÐÄ(=Ú›¸=Ü·^=Ú¢=Ðp;=¼F˜=óa?>8y=îÃT=½H=ûÁ%=ü=+=÷‹Â=ÉÔ¸=Й=â“B=óøb=ðÀ=Þk]=Æ=éy{=ß=Ñ‚ù=Âaë=°Ì%=¯×=²$ú=ÖËI=Ï©=Âk‹=·KL=Ë×=Ù¿ò=óæW=Ì[=Ì(Þ=ÈŸ=±“n=¿æ°=Ì=á%y=ãÀx=òP=á~=ÞYQ=íêÞ=ád™=çl=ð1Ê>‡Ç=ö½”=ëÜ=ä’Î=ìf™=ØD4=ÁæY=­Û=Æ=Á§ =É£ =±p=´za=µ·Œ=ÅÂ>šê>ï=éäð=Ï•ì>Û >n=öé5=ö´‚=ç•~=Üö…=ìÛP=Þ&;=Ù«Ì=ë¢ =æÌ=ÏÖ=Ëâ’=Ï{U=êmÏ=Ï*í=¿ZŠ=ßИ>hI>X»=üÅÑ=Ô~¾=ä -ˆ=áQ=Ç€8=à÷d=ä¡e=åYù=Ùâg=ÏúÛ=ÊKr=¿Yd=³ú=ÈYÑ=àvG=ú\Ó=û8¾>ýj> µD> Q=öbz=Þ”¯=À%®=á$=Ñ~=ÉT¾=ÈDÈ=ªH¿=Ç4Õ=î2¢>yD=æω=Ô4Ì=Ì,=ç£>=ã­ì=ÛÚt=·"=Ñ°"=ßôÊ=ßô=á =Þ.ç=×Ç=ÕK=ÎÁ=Ðã=È—h=á‡æ=¸“’=Å÷=Ú´p=øi =Æ‚R=²,¤=Ëcþ=Ëí·=Ĭ =ÏU‡=ò¯=ÐŒ%=Ýà-=î»=öþª=ïk=Õ½0=ÁÆ¿=¹ó¯=àãY=íá=ï¾ä=Ò?ã=↊=êpm=àØÑ=ј‹=³øî=ªªÈ=ðlÅ=ÍÀ1=ÂD…=°×i=Ãaã=Æ×=߃Ÿ>Ò¤=Ú‰E=Ìöñ=Ñ¡=ÚÆ–=«uq=ŨÖ=Öè=ɇ=î-=êøê=åï=âú=ÅÇ=Ïu=èç³=×p&=Å*=Î_P=Ðç=ß±z=Ð9=Æ$p=ßÆÌ=Ïs=Âÿp=ÆmÝ=ÏRü=½¤.=µ^‰=©Î=Èg/=³H/=½Ú›=Ês=¦i6=¢‹8=¯ê$=Í =ëE¸=ë=—=àŒþ=ÍÎP=ÃÂ=ÕŸT=õOp=ñ[î=¶3Ó=²Ìó=² Y=»ã$=Ç€ã=Í:=Ö“m=Þ´‰=¼(>=©Ä=ÁÊÛ=ÈÕÉ=Ù‚¾=Ä{;=°¾Ã=Ù` =ÄhÁ=»‡÷=´æÒ=žÜ=ª=v=ÁÅ×=ǹì=ß1ã=Öê=ÎÇÜ=Õ ®=ä¡°=ï¡=É6±=–n¥=Иµ=ëñH=ùÖ/=Ô‹=¬xê=ž=Ÿ^m=®š=Ñ­è=Ç*d=Á×Ô=ѽ=¦Ö=º4X=ÚÎ=Ù/=´Õ|=ÖßF=ߨç=¾/œ=¤;=¨á4=¯Y”=ª@=¬¾=Å·9=Ç°=®ñ= ˜=åxÊ=þ0'=õŒñ>þj=á—=Þ Ð=ÌZý=Ö¢=Ј=Ïm‡=С=Ñ‹=Íø”=Ì%X=Üš¯=½¥ -=Ò¶U=Ó÷­=½lå=ðf=ãü£=Í Ù=Ðg=Ì$h=Ê…=¼ß=’U@=Â’2=¸†=¸æ¯=¾Â»=¾{]=Ôn=Û¶ß=Û =à&«=™2x=£F¢=Ï=Ì=âœÆ=É -¦=°‰ê=Ù B=¹™¯=²0=Ö#û=϶Í=Ö\Ë=Ëë=»Z@=»ú¼=˜Ú]=´¯=³‘¦=½ K=»~Â=¸÷ß= 4=­n{=Þ¦#=ËoR=³+ù=ŠC%=‘dþ=ªq=¼Ñ¿=Ü$==§Øå=Ÿ«¹=•=Œ>=¡âs=©¦<=Â4W=··-=¡©»=¢oÄ=©Óª=²[¢=° =²»ç=ªø¹=¬aE=ªÃ×=â—Þ=ÖåŒ=ÈÊV=Ñc=´†€=ª¦=´Ž¹=È:w=Ù†Y=é=ÙBä=¼I1=¼¨0=¯°=Ÿ0ê=²”¬=Ú»²=É=Ìåy=ÕX“=Ýî±=²À”=à -ø=ÅÖÉ=ºØœ=ÈJX=¯„=ÆØo=Üœ=¾ðH=Ö+=Çø=¼Âº=»Í=´×Õ=ªŠT=¿•6=Æν=­ Ó=Ó~×=Ìpª=®`§=·Œç=ãbQ=¿ÓT=¤“=¶è=§}¡=É"=͸=Ë=À:=Êß =Íy8=Ç:„=Ö”/=òáÅ=ëJ=é›t=èè²=ï&=Âf=Ÿ™'=¤†Ä=½tÎ=Õ²'=¿/i=°Æ =Õ g=º”5=¥gu=±‰=Ŷ=§Æ[=¶å!=ÒÞX=Ó)=ßý’=Ï»¶=ÆË=Ö³_=ñpj=Íce=ÇËA=Çr“=Å)=Ív‰=ד=®8Ð=šh=µM~=É„+=õk¾=ø7G=ù -M=ó)3=Åb=É$%=×@&=»92=»ª=Êé?=õÜ =ë¤|=á¹:=¹iÉ=Ã=a=Àxñ=µÁÏ=ļ =Õ×=Ò{é=ÇÍ—=Ôf=Ú”=λÀ=ÅÒ=´Çà=µ³=Áª>=¾a =Ä~~=Îÿú=½3ä=¤“¾=¨G=°×«=³^=¯|6=­Cê=Ó*‰=ç* =ÏÙž=¾A«=©³m=¶ =¤l—=Îk3=×`è=Ïé=¼øÚ=¾½=Ë=Ç.O=Ð×=¼æ0=­‡F=¼.½=´÷ç=¦€=­Ïˆ=ÂPv=¬‰ö=Åw=àÇ!=¼vS=»ÛÍ=ÐB0=ÅA=®â =É»=Áù’=Át=ÜêÄ=Ú==§ÿa=¨J6=ÅH4=Å P=²ÁC=¹n1=»’ð=Ó‡2=Õð°=ÖÇ -=º~\=º£ø=¿À=Ï|Š=ªFy=·n^=¾Ð]=± =ÉÁz=åòˆ=¼3º=º²=Ða =°)ý=Ó|$=Æì=Áe=Ú,·=ݳû=ÝÇ =á¶í=×u¸=¨R=¬†=¼ µ=ÓÑp=Öß~=Æâ =¯;È=½äu=ÏÜö=ÓtÑ=ü!Ê=Òúò=²ìÔ=¬¯Õ=±™n=Ä=βà=ÞÀg=ïØ=ß,ž=®äZ=ºÙk=Êî`=¾"@=Æ`=ÃsM=®ì’=²}ü=É=Ê!=Ç]Ô=ÛûŒ=ÔÊ=ÊÊÔ=É©o=È™*=á_=Øã«=»óN=Á‡=ÏÞã=ï§=â¯=ç9?=×6’=¾c$=àP´=Ü"D=ÉAø=Áƒï=ÀS=ƪ=¿S=ºx×=¹Ýñ=®ÄV=Ýî|=×/Ï=Ì$‘=ÑÕé=Þ`j=ð?m=à• =ÛÙ(=Ý6=ÕG3=Ö…Í=Ïh‡=Ûòð=Ï%¯=Âõ=¾HÝ=½6…=Ó¬=¨Ã¨=¯ˆê=êÓ=ëÚQ=ÉÆç=ÂU=ÐøØ=ê~=Í]C=ºš6=¤¶4=º¨+=ÑëH=Ëþ.=Ã#W=Î%r=̪Ÿ=È|=Åþé=á1Å=Üvó=Ë V=½¾9=ÖTv=í؈>Èâ=ÿW{>Ÿ¡=öÅ:=ñÄh=å"w=Ê*C=³Oq=®1<=Ê™=ØÃæ=ÎðÕ=Ò¼=õü;>sD>®Æ=èŠJ=ÚIr=¾!=½ Ñ=½A$=è2½=Óˆ%=žŒá=Ÿ¾'=¥&=Ïy=ÅGx=»d=‡=Ãp=©·T=ËäG=ä6Ã=ë°b=îk=øé¿=á -=Ђ=Ü©=Ó+=»Ûã=¹'.=Âß =Üá=Ñ V=ʶG=´þ=¶;Ø=Ó*=çž9=ó9þ=¾‰s=ÁS›=Ó+Ÿ=Üœi=ñ©5=Ëy5=¶/ü=Ä’†=Ð_=¾ ÷=ÈTy=Áá¤=¼XÔ=ÃÉÌ=ÔŒo=ÔÁg=ªüˆ=œ” =«+*=ÄÜú=ÏŸÿ=°Ci=¬ÜY=¶«›=´]=Ϩê=ÌW5=Ïñg=Ï™Z=Ç^¤=Äs2=ÎåÒ=¿nÇ=®ñ=Ò-‚=؃Á=Øy=ôi¬=ø¦+=ýë’=Ñû~=ÓjË=éM‡=»Ýh=£¤4=ݽî=âîO=ç2=Õ;§=ÒMO=Òv0=ß>=åÍK=щ~=Ùg%=äýý=䫶=ày:=Ð_¯=Ûµ=ãÂ-=Ùê%=ßk=ãôk=ë æ=à@b=¨«=á >þ)=í Ú=膻=â˜l=éE|=îè÷=þá›=ùk=ôæ˜>ä>÷=ýUÌ=õµ2=ñ…=à" =ä‹f=éJ}=ß?°=Ö©=ÊÈÐ=éÛo=ïñU=Ýfà=Ì2ª=ÀZç=Ü0‘=ØS=Ò`ƒ=¼üU=¼m¬=ÛŠŽ=Õs­=Ñë=¾Ù=ÉôX=Û/Ò=ò»=ì^=¾Š|=ÔÈØ=åäL=í6=äÛW=Ú/=ê =è¦~=ÙД=÷ÿ(>z¸=âÒ=ê(f=ô±=íJ=Ýà=»˜`=Áʲ=ÅQ3=Änƒ=Òô†=ßè!=Æ~{=ËöÒ=à=Þn½=à=d=ÞwÓ=Íî=ÂT=æ=s=æ6£=çÂÞ=çQ3=æøk=ÝÞÈ=À&^=°tÆ=Ó×Ó=ߺê=ïWÒ=îl=æ=É¢Ú=Ã\?=À¤ˆ=É}Ï=Éô=Éha=롾=Ý#Ñ=¿®˜=À"=Àõu=ÈW=Ù_Á=âAð=ÐôÀ=Ý¡1=ì_\=ã[Ó=ì,œ>ì\=Ú·Î=Æày=Æ_†=ø^[>[‚=â ü=è¡=òûò=ã§î=ç2ô=ü=¬=ïyX=éC:=ò8ô=êZƒ=à:ó=×z=æ -¬>+>=ðxl=ìúP=ú×=㨅=ÖÏb=º®û=½P3=ÃX=ãS¡=è%a=磑=³©ê=©4‡=æq|=Üm=Ô[=åì!=áö´=Üñ¤=ë^#=î,=íÀó=á¯)=Þ ”=ä Ë=è[2=î/]=õç˜>^Ä>V=ø’Ù=ë·r=ÑÇ]=ñ4.=ø=ÚA?=ÑP=È;=üÉ =ûæ=óíÊ=Ôö=ÛËÊ=ô[·=Ó³’=Ëv=â`”=ñÒe=úN=Ù‚=ç»=ò¼–> =ï‹£=Æ=Þ=ÛZå=ßûì=à<=ÏJ½=Æ=Å_‹=É E=Î,—=ø>º=ýËø>4=Þâë=ÛÎ?=ïÛÝ=ö'=ø€§=ø¾Ñ=î$ =æX¿=æ¨[=ï>E=øŸ¤=à͹=ãA=ï&=îÏÞ=ëæô=Ý—=ô„d=þ×ô=æ=áà=Ý s=Ów6=ɸ=º=ß[=éð=öUÞ=ð¿=ìr<=äL@=Ó¬=ÈÜÙ=¯Í-=¨‘¾=¦ñù=º|ø=¶›=·Ä&=ÕF=çE8>Ç—=òA—=ïM=üo:=ñ®ø=êÈy=ëŸs=útÓ>v¡=ûó¼=î0=Ùè“=ÿ õ=ú/y=âqæ=Û„˜=æع> -Ç=óâ5=äÛ =êÎ3=íÅè=ò ‡=Ð.Ä=ìŸ9>Sú=ô ¤=ì„=áX=ßêŒ=àÏ=à^1=Óˆ=Ï¡=ÎÝM>¥>R?=ßCa=ÿç?> àÿ=à¸=êÞ¯=ø¾I=Ù¡z=ßé@=ðn´=ø ”=ñ•Í=ßF©=ñÒÅ=ô£k=çê=Üö×=ß:>Ý >d–>Ýi>Ãc=ü,n=îñ>ä> ÷Á>ƒB> æ> ¾Y>`½>7t> -H->m>`=ñ˜=Üö²=Ú+=Ó·¶=äþý=ï =õhX=í°ù=îé=í›…=ÍŽ=ÒªP=Ü’–=¾–!=Ã>=Ôi3=îì*=öë=ö r=ïñ=ð1–=ö¦©>ýW>š=Í"®=Û>0=ãøÙ=Í{‹=è ‚>I>#P>¤>ì_>ÂD> B[=ÿ=ï•Í=îx§=í;T=å=åäY=äøÇ=üü->á‡=ýŽÝ=åóÑ=àCz=ì¦@=íLý=ë‘"=ä²N=îš=ô"¹=Ûàø=Å¢À=±R=ÛNV=ØjW=Ó®È=Ó€(=Ëè=ÂSê=ØðX=Ø›D=Óá=ÄÉ/=Ç>=Ò…Ø=ß»=å2t=èóÔ=ðnG=ì=ÑTÆ=ŇB=Ç/=ê˜ä=Ù¶=ÑôÌ=Ø^¢=âs^=íˆS> †•>ê>ö6>«©> W>N‘=ðÉ!>Î4> n§=áÀx=òC>X=ó ¬=åúH=Ø?×=ØÛÐ=ëðÁ> (=æ&=ÒÐt=¶ñ=½I=Ö»Ã>Pñ=Ë¥g=Íýd=ñ—o=äwÌ=ã2b=è¹=É‚Œ=ÆñŸ=à<}=ÔÒ$=ÕûB=ð‡Ä=ß™"=Þª=ùI(=ça=á¡ô=è±Ò=í¶™=ï$µ=à´ü=êš=ñ0ÿ=ðÅ>¡>šà=×Õø=ÓCÈ=Ϥ#=Ø=Þ“W=â«Ü>·=íÞ=áCš=Ø>=òÆÝ>^=߶½=þΧ> ý>®>2> Öœ=çÙy=âír=ßkâ=çö=çÊÎ=æûœ=æÅ =óý=ÿçþ=ÿ3Í=ø2]=>?=ðSã=ߨ>j\=ð=ÖÏù>CŒ>Ñ›>Ó >ŽP=íÜY=ÎìK=æÉ$=Üا=Ïor=ðí=íƒO=è¹Ú=ßý"=á#­=à61=×>=ß‹[=è3 -=ØO=ä;=ð`§=×fÕ=ØTÊ=×2Y=ï“œ>i’>9¼=ן =äå³=ð¥é=ß²1=õ†ü>”x=è³±=ß„J=ØV®=Ͻ=Ý-Â=ëjÚ>2?=êðï=Ð ô=áˆ`> > =úâ®> -NI>[=êž =þ¯Ø>–>nu=ù'=ù>>ür=õ›î=Þp±=È£»=È>=Ì"U=àÎx=¼ü<=±åú=¿¬¨=ØC>=à’ -=áŠi=ÎôZ=Í­#=Ú†=ÒÐ$=Ì%²=À'¿=Íx=ϯ:=Éo=Ý£=Õâï=Àïè=ßõ¥=ÝV¯=Òd}=Ò;u=Ý­a=ëî=Úex=å³=ôtø=Ë>=Û´ú=ëË„=ëÌn>°> -G©=ìÅÛ=öÝz=û¼®=ØRØ=ÐÜÝ=Í"é=Ó5K=ÙË=ãPô>˜ß=é……=ß2ç=æ«=äØÙ=ã,=â÷¥=êÒ2=áÓ=Ë/¸=ñ·Û=Þ¤÷=¸ˆ=áZº=Ð<š=±`°=êén=íÚ_=í:}=î×>®8>)>'¶>¤=üÀ=Üé¨=ÑX'=ˉ=ÌÌú=ì °=ü„> ›>µˆ=ý£=ÞB=øÜ’=ýMÖ=öáU=ètF=áØR=Ö­‚=í³=ÜK=Æ:Â=Æca=Ù§=èï3=è˜ =Ü‹=Ôèl=Îv·=Ô =ß!Q=ô5=ìˆ =î0=ú?">Ïï>–S=êT²=ñ×=ìLÜ=áŒé=ùD¾=ôO¬=í<'=íµ=í®ç=é%Ÿ=Ñ‘m=Ê1ê=ÈB€=Я?=Ïp=Ôé'=鉅=ã9­=ÝÀê=ÓL±=ùÚJ=÷>=î¥=ˉ€=Çç;=ÌeO=ÿX´=û =ó[¸=Ô%×=Ú0È=Øb2=ÙÁ°=ãú=ë«h=øÌ«=ñ&H=ëŒt=åjÛ=å,€=éXÙ=éšU=þ"†=ó˜=èx=ÁËV=ì[#>°}>ï>qá>H3> S%=ñ"5=óPM>Ã@>üÅ=ïlÂ=Ûkš=àóz=Ôû+=Ðgò=ß® >y¼>Z=îÌ=÷t9=ÿ (>Ôƒ=àªÒ=ï°=ý›¿=½Å1=Üâò=ì°~=«…È=Ä*$=ÓÛr=è&=Â*$=¹è=¼l¾=Ä: =ÉΙ=Ь=ÛVR=á{{=èw=ï.=ïóC=ö š>\K=Ù¦3=Û¶¶=÷ØÇ=Üê[=Úòˆ=Ýo­=û ö=óß*=ïd†=é=Ùüï=Ñ5=Õ“=ÖS=Þ¼À=ï-G=ì‡B=ÜG’=Í3 =ÀP‰=³µâ=¶^{=É1=îh=ü37> 2=×æ=Â/=´fÎ=°´g=µ4*=»\,=ÕÚ=Êð=Ì`=õù=é_=ì!=ð¦—=ðˆ`=ì¸=ä›5=•Æ=Ýú—=èåŽ=â Å=âÖ=åã=ï¹ì=ÿ£Z=ò¶É=Û´«=ÚÅ=ØÊ¥=ÚWP=솬=ñ(ë>tY>‡ž>ôÓ>í×=âÉ =§Ô =¿9ª=Å=¾ ö=Ó¨¸=Ù9µ=ãü=ÝÏë=Û1È=â9™=ïƒ8=ߟª=ÚŠ=ç„š=Ý´N=Ô=Â$Ò=Ýg=ÌÄþ=¾þ=å1‹= Å=Áƒ=à==ÁÕY=ÄÕ¾=Õá&=écJ=ôpÇ=ö½=ƲË=ËØ=Ïù/=×+Ž=׈û=È|=µb=Éß@=Ý|=í=÷ÿ=öÖ½=ýö5>É6=ôsx=ãˆy=Öåù=íO=á®þ=ÝÄB=ë=Û J=Ô•Ð=ÐZ>Ö=ûùÂ=óãq=Üy=Õ™Ã=Ïd =Æw´=½¿=Är×=Ïof=à`=ç@5=ßÓ3=Ñï=Ï¢õ=Ï}l=Õ-7=ÝO=ìâ=íßÀ=Ø °=×xD=σ=Å,Ò=ðÐÑ=ù±%=û‡ÿ=õ¢=ßk¼=É8“=ÃZ=Óx=ÃJ$=¿¨=ë‡9=Ý‹=ò¦Ç>À•=Õn,=Î0=DZ=À[=Ë ™=É^^=Ìè¦=ÑãW=Óï=Ù£ü>{[>z=þÝ~=î>ŽÄ=ô/=ÑÙŽ=ôl=æùå=Üèø=Þ¦=ð:B=äŒó=Åä=Ú~Å=×Ü,=ØG=áÓf=Ê4=ðùm>_Ã=íZ­=Ì*·=ÆZW=Ý|Ä=è{=÷NŒ=ý|¹=õ‰=Ã(÷=½æÛ=Ï—ü=í´Ú=ò¾m=úÍn>ÈÔ=ä¶#=Ýä=Ö°7=Ú¬=ÚGf=Í4û=Á6=à¦=ï…´=ø+ÿ>º5=ú=ü‰=óµ=ØO=Þžû=ë½Ê>(;=ð2º=á®=álî=íi±=ñ56=ä&Ò=ËÆP=òz3=é+ž=¿ãü=ðaú=ècÿ=Ø;S=Ä·w=òÈn=øoâ=ó -=Ü °=åa =â(§=»2=ÊÓV=Ï­µ=ÍÀ­=Ò>=Û2=Ù¼=Ù7H=Äù=ÊÅ×=ÑlO=ÕAÂ=Ò&Ö=Ò -e=¼Òð=„=Ùn»=é?»=Ó=à„£=ã"O=ç{§=×I³=à’[=ñ=>o"=¼–=®¡ì=¸jú=ñØi=êóQ=åqU=аË=¯C=¾÷¾=¹á^=«~=ìä5=ÙÏ;=Ì{l=Ðœæ=×;Ä=ئ–=ð€=à.?=Ù³=ÝaB=êU9=÷¡ -=ÿñÂ>{W=Ø’á=Îø+=ÑÔ~=ÓÀ/=Ø~ˆ=Í‚Š=à„„=ö–c=Ø*B=ߥ=ç¼=Ó½ÿ=ãv=ìÀÒ=Þ²#=è -=ßÔ=Þ¹d=Æ‚ž=ŽÊÀ=ºY™=Â~=©>Ö=Û´0=ã! =Õ–=ËC.=Ú$¾=ÒX=¾™(=ÈþK=Ù'=Ä¿Ê=³O^>™õ=òôâ=Ùýë=Ù|=Ì;Ž=Ú¯ê=ê;>œ1=Óô=Ý›Q=øª =ÍQˆ=Ö˜ˆ=Ï}9=Ñ)x=Çï=´á¶=¶÷{=Õ¯=ÔŸ$=ë&ä=ö–>=Ñ«œ=É-N=Ñ !=ÖË=³]‹=º•ç=âÔt=è„Ö=Ý‹ü=ÍTJ=ÔH.=б=¼=ß'=ñà6> [=Ýè`=¹Þò=¶*È=«¯Ä>=î÷n=ÞÜ=è =ã £=Ù¦9=܉=ϼ$=×b=àõ>=Õþ’=Ñ-Æ=ÀmÍ=Ë&=é€=×÷G=ê1Q=ךç=Ï(‰=ï¯=Ͳ_=²]»=ÁÁV=¸¢=òô>À=Ò'T=¨ç%=Ûö'=í9‡=îâ|=Õ÷¨=âÄ<=ÌôÔ=¸ñ=¿ËÉ=ÄÈ«=Â]‡=û5=Ñ%¿=ÇÞ=Ô á=θ¿=úå)=ó=Ï×=ú‹ >Ñ=úœe=Üî§=ç”v=ìõ‰=ë =ã~§=¸ÑÊ=ÖrÊ=؈û=°Ì=Âò=ÍA=ÉøÞ=·óY=ÉÑ¿=¸s =¾–=Ê—&=·V§=ÖKr=ð8u=ïD=ëù=ãO=èw=êŸæ=Å¥F=¿Ç=Èc=Õ|k=Р=áÁÖ=è?q=úÜD=ãp=ýŒî=÷Æ=Ø|w=â€4=ÜÄ=Û¥ú=¾Z=¢c2=Ç·ß=à«=Ù>²=ô—n=öét=Þ=¬I~=áK*=ߥ¬=ÔiÂ=Óš=øÛ>€Á>>qÝ>D>²=óSK=ÎÄ«=Ó×ô=Ãdø=Þ^¾=ÞŸR=¶ó5=Þj{=ïÑõ>>67=ðyÚ=î:U=ç7ê=ÞD=úeá=å ž=בú=È­=Ão`=Èï°=½¸M=®9>t.=äÜ?=Ã’s=Ú–s=À E=Ðÿp=Ú¢©=â·s=Î8ê=¿H=¡\=ŒO@=·Å=Ùßï=åä½=ܯÉ=ò‡­=àÿl=àˆ$=ßÙ =ߢ‰=ÊBª=Øß—=êl·=çÔ=¶ =´¶ú=Ю×=ìG=Èî‘=»4Â=½ö›=Öò(=Ðo=¦ó=Â$Ø=èøú=ÂŒ)=¾¿ø=À p=Â÷>=Ù7=äKï=È =±êF=¥i*=„áÜ= 6*=Çò=À}s=®wê=Œ×=ŒH¹=ÃÕi=¶Ð=ºÁ:=¶2_=·Ck=媑=Üg =Ê7=½ÿ™=®=®oÃ=»”=¶Ëæ=» Ð=Ȩ=Ät¬=¶+U=àºì=áu=½Ì>=Ú£=åÀž=¾³ƒ=Ô =öº=ÍxÓ=°iU=îñÉ=Õ®¥=å6€=Ü0Š=Ê*=à‡ˆ=ï~<=ßÉ=Õºö=®g=ÀÖê=Ä™Ä=ÄòË=×H%=ã‹=Û‹ß=ÐÃ=ä«>Ë*=ô<=ÝŽµ=Ä­G=¸¤‹=¶žñ=°uJ=Á¶¦=ÇGø=ÃÀ*=¼ð=ÄÚƒ=Ï‚Ë=ð=Øñ«=ÛY=äˆä=ÕÛp=Ùr=ÚÚ=ߥ=êäÑ=Ú½=»Ò=Í^}=æ,•=ÚJ#=²Š„=Ü×=ÖQ=¹è$=ÈŠU=ög³>f†=ñEÞ=à3g=·¤E=¶S§=ägï=Ó@¼=¼ƒr=¾>'=Ãt=Í‚t=̆^=èUã=á"¼=ÊØ©=¨×=¹*'=ÏìK=Ð|N=Î)=ÒÒa=߃S=Þp=à¡=çŽ>è =æ´º=ÞQ‘=ÉcÎ=±K·=¢±­=¶n=³‡b=­Ã2=±=o=Â÷=ÏêZ> ³=úÅd=¾¢'=Òtl=¿Ü=©,=¶§…=ÄõÅ=êYå=û -=¯à=™io=É(þ=Æ Q=ÃRí=Ãî%=Ƽ =ãÉ =ãÒ=Ý=´ =´7Ö=ïû„=ßcº=Ô­í=Òk\=ÌÍ2=­â[=ÐÍB=óŽ =Ö¨‘=̾Ë=Ú3Ò=ÕŒ=É9&=ù´=÷Ë=Ùè=Ñß5=ÇÎ=èéÑ=òÀÍ=Ù¸M=‚ù=±…¯=Ëï2=Ö®à=ÉÅ=à¯>=òŽ"=¸7V=ÖÂ=˘œ=Àz =ÈÛž=ϲ=Ôvò=Ó'u=ÊLF=Ç=Á=Îj:=Ùa™=ØÔÈ=ì;=èd·=äÈc=Ô©[=ÔS3=âP?=ØÕÈ=Ö¯7=Ëέ=Ð8’=½ëI=ÅP:=ÑÖo=Ò;‰=Þ§=Úòv=ïg2=è2è=Âiž=ÊÎ=ÐT+=ÂLñ=Ñ'_=áqV=ÏÅ=Á©`=ì€ñ=íÝ>SK=Ø©,=™ÖU=©0&=½_÷=ÕÏ=Ðó=ÇŪ=ÕMÉ=Ë=ÌŠ=Ò];=ØbŠ=®/B=»†=Ö—r=¦Q=µ8t=Ïäx=Þap=»üX=×c=Úd=À'=äû|>Þo=è¢=áÍ=¢"3=³&S=Ê.=½â=´5v=‰ýÝ=§aÊ=Ëó-=³Jn=­¶=—gž=¬m=±ÛW=Ë0=×î=ãDë=ÏB{=Ϭ=æÛ«>&›> -80=æ¡f=Ë=æm=åq=½£*=Ó„ -=Ü[=Ø3¤=ØM—=â -ë=ètÀ=ð_®=ê8Â=ÚE¯=¿×A=ç -º=òcg=å’p=Ò^b=·­l=Þ°Ñ>·È> {‘=â¬O=¸´Ì=³tu=¸{=άk=Ƴ=ÈUV=Çÿ=ÌÆ&=Þ[k=Ì7g=ξ"=âŽf=âÊX=çsÓ=öš=ð>=ƘŠ=ÅÏ4=ÏÉa=Ûû$=Ú‡'=¼²Ý=Ñ@H=é M=È™R=Ò§²=àÛ—=Ð÷¹=Àr)=Ôbe=ã=ߌí=äݲ=ߟ†=ÖŒ3=Ó¨J=Ãæ9>ß=ý@»=ð¥¾=çA=â„=Ð6ž=ÛË=ä°=þÉ«=øû=Ù%=øZ> Ó=íã‹=ÞÇR=Ävê=âA–=åG =¥”=¸@6=ͤ®=ïû:=îKq=×°=é=õ!f=³#=¶:=Ìi=Ë› =Ëþ’=éM=áö=ÕRn=äY%=ì9Ý=ü€ =Ýf=¿¢Q=Ç@Š=ÄFÿ=µ#=Ö8=æOt=Ñ„¼=Îí[=Ç5ë=áêš=êU=ÆŸü=ÉEE=ƱÇ=Îf>=Îþ=ÏŒ=ìÈ=ÿá=Ù•I=è“=ÿ­ö=ܽ¹=Γó=ánÅ=ÔY|=ÄHì=æ™a=å(Y=ÌGE=ÕÿŸ=ÞY‡=×R=ë›õ>%²>¦J>®Ý=ò_î=ò/=ò h=ÆYƒ=Ð,œ=û?×=è¾=ÞX=Ý'=Õ\±=ÉÅÿ=«ü‡=©¼Þ=ÜŽ=áÇ=丿=âþy=ë6Ù=÷è=ò µ=íÚ=ä< -=ßòz=ÚÝ=ú4Y=õ_=Щ=Ô³=Ù¥¢=ýò=ôÂ=â =á†K=Ýík=»œº=ÎD=á²n=á=ÖI5=º¨†=ÆŒ¯=Ï®²=ÍD=ÏÜ=Öa=þB=údØ=Õ‡Á=çJR=ðm=ç•‘=ܧ=Êû¿=Ñ«X=×7=ï¸=ð=ðX:>¸·=êÐt=À²g=ãéP>+œ>X“»>¡~¶>Ò–>ææÊ>Ù0ú>¶6‰>Xk¨>ç>! -=üú=÷ =ß]¡=ÑeA=¾È'=ÝýO=ëÏÆ=ì8(=ï8º=ôÝ=üö…=ñê"=Ïã=Ö›—=Øá =ü»©=÷µÌ=ó3›=ÝO=Ö*c=Ö¾*=à˜Z=èOŸ=ñnÆ=ã>r=Í õ=ËIq=Ð9ä=Õe¤=Ú™3=Þ>2=Þ†¹=ôXÙ> - ‘>ê6>¯Ü>%G> J¾>Ã=Ì%=åè€>1=å´Í=ݧ=Ýj=á€=åç»=Û´"=Ó®‘=Éj|=ß¡Û=éø–=õQn=é š=ãa.=ãy=ïj=ýÜ=÷õ=÷G>¦â>#&>S=û¨ü=ö2 =ò=Ë=ë^ˆ=ðyr>D<>o£> a>YÿÀ> ø->ÏÕ¨>âÚ>Ñ.>®Ñù>=þ>Ž°=ú'=þ_Ò>%>S*U>Y„>]õƒ>r3b>a1ž>§î>¦¤=ùÛ]>‘Ñ=ùVy=æ¦í=î-í=åŽQ=Ô\Å=àüÆ=êØ>ñ=ð –=ÜJ=܉æ=ï,j>ù¯=ýhü=ð܃=ä]2=ø¯±>|:=äp=õ¨²>vg=ñê€=íÇ”=ôã¿=êD-=áy=ÚŸ=ì°í=ýAH=úôÐ=ì‡Ú=ÉU(=ïàQ=ø%=ëÛ>±”> H>ÙÙ>´ú>Ó†=ÖXÍ=Ϩ=Ϙ§=éFj=í‹[=à2H=Âë}=­èÐ=÷û‚=ûú>}t=ú"£=ø‰ë=øÛ=á"™=ز.=çsÓ=옚=ð£j=þX°=úõB=ïÙ=Û—o=ßÙ ->\C=ð‰Ö=æP¤=ÕìT=ÚÞÕ=ß Ó=Î f=Ôiµ=Þÿ=ñ´=îÎœ=ÌÁ=ÖX+=ÝŽ=Õ,‰=غo=ÜÓ=Ý -P=ÖŒ8=Ë|=ån=í(=ìÁe=ÕV}=ÏT=ôÓ}=ïÈë=ëã$=õ&Ì=öÈÃ=üñ=ÙˆÂ=×?v=ãö=ï L=öQT=ý3H>ñà>®Š>å#> íÔ>}D>͉>G=ëŠ=ñ,—=ó§x=ë~(=õT*=û/Ï=ë.S=ór¦=ûú=Æ©†=Úìû>ýü=ÿí$=üÖ†>B >þ=üò2=Ðs=Ø÷S=à¿=à§4=á5=àU6=ç›ï=êgª=ðâþ=þ<>Ž¢>ßh=ñj;=ë]>f>0ç> Qš>9ïè>G)>Wýº>Baî>4óR>Ù>I3> -þ>°=ù¹Ô=ñL·>jÅ=æVr=Îsí=Îiv=ç*D>5&=óã=ìµà=æÙË=æMß=é=îË¢=àÊ=àÓ=î{p=öËÆ=þÊÀ=ï1U>ß> â'=ã„=æ0=öþR=ðØv=ãŠ%=Åaê=阆=ñê=ÎÃ=ؽ/=Þ«é=ÞÃ}=î¨Z=þ¼€=þŽÀ=ü•=÷~;=þ1=ýÜ=÷{è=êcv=çÕü=î¹>©> Ê=õÿ°=ðì¾=ð°Ê> «> j>.:=þë=ü¢^=þ` >6Å=û`=åe6=÷j=ö{)=ܬª> ’ä>N²=ôÂj>\ž> ¢g=ôa'>Å> -¤­=ü o>á2>t9=í¦0=ð>t=óúª=Üø=á}Ÿ=ëž=äÇÛ=åí¹=ë9ö=×½=×;=ùýÖ=ë\=ä¼=ꥻ=ü€>k=Ùô‘=ú’F> ŸÇ>½î=üRb=ò÷=Õá=Þ h=óX=ìOš=ñ×ù>ÖD>{Œ>Û=êÈ+=ö\d=ùï«=û|>„v>/¤>èz=ýC=ôŸ=óÛ_=æ¾=Û>˜>Ê&=íV"=Ô‹=éˆ =ïÙÃ=óØ=òhÜ=ðFˆ=êÁí=Õ`=ÛàŒ=ò5w=ÿðä=þµ¸=ò›]=çµ=í9…> ÈN=ôMù=áÍj=Ú{M=ôpC>'¬>TK>‹B>A®>þ³=ñ‚=ÛY=ÚІ=êé==û7Ù=ú>Rü>ç­> Ž+=úa=Ò=à›=í…~> >>…>|À=úŽí=û‚ø=îã@=ÑR=ÑÉ¡=бm=м§=ÄœÏ=Ï®C>ãk=íÿ=å£û>Ê÷=âzÀ=Õº³=ò…ñ=÷¨Ý=ózû=ÁLi=Ëè´=ÏÑ =ÐÑ®=Íœ›=ÊAÈ=ÙÞŠ=ÚlD=Øðú=òK¼=éK =âcþ=ú¨M=ã«=Éax>eW>Cß=ûø=ò©=ê›ø=âj=êØ=ß¾ñ=Ñ•3=ÐäŒ=ËäÈ=Áö=Ç}U=Ù@=ò†=Ö£®=à¹"=ûÖ=æ=¨=ÜË=ÒX=ü‰]=ð¶ä=Ê„=æÐ=èy=ãÃ=÷”_=ø&d=ó3=õ5=ï“ú=ãwú=éŸï=îÀ =ô‘g>:J> -ºì> -ÏN>¨>XQ>Û#=Üá=Ì}=Ì€=Þ -…=ë)=ýG>â=÷çH=Òyh=ìÜï=ï.V=ã.\>u>Äz=ìÒW>N>™B>íz=üÆC=ý?‹>Sì> -ÓW>s‡=ömF=âòJ=ßä[=åþ‰=óe=ó™=æ™Õ=í=Ú·=«-¬=ô÷Å=ÿçƒ=ïqè=öR¡=úEJ=ÿjˆ=Õn<=Ñ6Ž=Ö©=ù\B=ó±|=ÖiÍ=Θª=ÇÉq=½ÈÔ=ø…G=íîi=Í ©=ì‘Ð=éa=ÞõŽ=ØJm=Ô¢=Ï+ò=ÕÕH=݉å=æÄ=¦¸=ËS=ùUÖ=ñM+=ܨ—=Æk=髬=öÆ›>lZ=êcë=éVX=êüí=û´e=÷Ã=ô¯S>l>>ÏJ> $>> Š> -ÊÉ> -€>Ž=õº¹=àû^=Õ«É=Ö.=éœ>«> ²í>F¡=ìä§=âË=êô=ò—=ïD=äŽ[=órD=þæ³>¿~=áÑ¢=ÞÖ=âjð=û½=ö¤Œ=íà^=å‰\=≃=äŸÛ>fÑ=ô°ä=Ü«B=÷7U=íö=é >=±=ùBf=ñA=ÿà‘=é=Ûãn=嫶=úÖ=þA/=÷H=ðªâ=ê]•=ÞÝ =ÞÊ*=ìUÔ>gò=ËÛ=ÈQï=Íô°>ÑZ=ÿÜ=ðAä=Íy=ÐÑ=Öæ=ò™@=òœß=òÌÞ>‰Â>&0>¥Y=é#·=Ý.ì=ݯ=ë!*=ñûm=éD¿=Ö%Â=Ü3ó=èÛ¹=úÛ=äÃä=ãW¢=âæF=Ѹ=áTÇ=ïâ™=ê¾¾=ù‚>|>b=ôö·=æ{-=×dË=í æ=íæý=ÚNÝ=Ûfñ=à}•=æÍü>Œ‹>¤ =î)k=Ãë¦=ä\j>b»=ëÄx=æÞÂ=ßô=à¦{=Å=Â8Æ=îÐ=áÈÉ=à²Ø=í; =éâÜ=ï›.>à‡>™>œË=öɘ=ã´ç=ó7Ú>â•>çÇ=åU=Ñ/É=º¯W=ÍÚh=Ó`S=ÇtÆ=Ø“+=áSê=Þ+Ñ=Ò*=ä7³=ú‰‚=Ðjš=Ô¹¶=Ù i=à^.=æ«=þ¤'>&¾>>›> ÍØ>š>õà>Õ =®ª¼=Åþð=çˆ=Ѭ§=é<=øw=èÙù=ëàF=é%q=Üþß=Îô=Ç,V=Ñ~=Ö|ö=ß{H=ëÄñ=Û1S=ÕÐÑ=Ö¿Ü=÷±;=öæ=ú ·=ø¨=ô$Ú=ôŒ‰=õ<*>é«>™Aÿ>õÃ?V2õ?]¥¶?Z´é?“Š>ªçý>3³è=÷¥ =òÚ=ì†=çV‘=à­K=ïø=úÉâ=ìP=ÙГ=Ì5M=â2ß=ädc=äÏÉ=ñˆJ=ßïB=á ‘=é‚9=Ò™=˶Š=øþ>è=óz(=êk¡=휣=Ò§×=ÎF=ÈÜß=â‚ê=í¹B=öw=áþÞ=ÆØ=¸x=Ø“=Ú†o=ÔY=Å,è=³R=Âì&=ã÷µ=Ì)=àˆz=è5"=×{7=ÌKñ=Ïêò=Ý5’=Ü¥ã=ê‹Ï=ìhµ>)(=ååf=Ñ=Ý¿»=ãÈã=ØôÈ=ª¦Ù=ÓKv=×¹¢=Ñ;‡>¯ç=÷žÉ=ëÆv=ðã=äàe=ÛÏæ=Ê@q=¿—=ß>ƒ¨=ìu*=ò=ôà=ΙÎ=×fñ=ê;„=ë{Å=êÍ=ïn®=ñ´=ó†ß=î´f=ìhx>À==ßey=Úú‚=á4¾=³UŠ=ËãF=åLR=ò·=ùú˜=øV/=ßNí=ê^ß=ìÝE=è¥/=àQµ=Üú}=Ø”:=¸²Ù=Û{=ìHÍ=íRD=¨…1=®"Ý=Ξ-=ãþ²=ÎÂÕ=ÝÐj=ïFð=÷ûs=ýM=ú/‰=Ö³=ÖÁø=ÚFÞ=øf$=õ¥\=êÑ=ÒF`=ùÔ=Õ¶K=É)‰>Oú=ì(+=ÚñÕ=ÕQP=ÏÔY=ÈíÈ=È>¼=Ù?¶=˘=ä6 ->32=Óæ›=Ø’Ó=ã½ô=áį=Ò‰.=ÉÓ=á•œ=é9ƒ=ß‚ƒ=ÑYf=åôä=é£=ñ,^=åÓ=÷O´=ø#=ðÐ=Ô)H=ðE%> 1å> ôø>Ã=û€=껵=â%7=ëŠì=ó•™=뱸=è¸ =Ú¢s=ÊÖã=Ü[×=Óý==ܺÈ=øôñ=Ûüd=Ñ߈=Ïä(=át`=ñ^Ì=ôć>Äû=ø†ø>Eb>Û;>N'>oÏ>ç]>• 7>sùõ>UC˜>Cˆ>·=ÐFq=«'¥=¸Œ=àQÒ=íÞ=Ð&v=ÇG@=è‹=ò=›=ÑÂ_=Ì÷ß=Å =ºxn=ÐV=Èâ0=ºuð=ªòµ=½¸Q=¸¸=½ÉX=ß²Á=ÌóÚ=Ê…=ß ß=ꇱ=ÔM=Î6*=ú•i=á-Î=·š=¬ôµ=Ûiw=íÞ·=þ ³=è}ñ=åqˆ=Û)Þ=彈=øº¿=ÒŒÚ=ƨ=åCG=ÛJ¯=óO{=ùå~=Ñ>=׶Ã=ÖŸÔ=Ú‡=íæÿ=Ý#=Ù' =äÙ7=ÜÙJ=à±=ï•=æsÜ=Ïm=ÖÌ=æc“=ïݬ=ê¸=âfÇ=óëþ=óôj>0w>ºž>×=õ§À=éy—=Ê U=À¬=½/ò=Íø=æ=Š=ÞT;=Þ[÷=âÆ”=ðú/=è$¢=ë8=æF=Ñzù=ä‰=úT›=æÙ¼=ã{c=Õ¬t=ÂRÖ=Êš:=Ë‚Æ=ЦB=ä»=íüo=äï=Êd=É…«=® - =­kÿ=Î>í=À~0=Å(X=¼ r=ÏñÇ=³dÂ=Ì)X=ì–š=ãÑ =®=?=©§=®’=˜¯u=™L=©=vˆ=…3½=‡~=¤G¤=¤cW=°®ú=ºøj=»•=Ç>À=Ã;»=Ñ: =Ý"î=Ô\›=ØL=áOô=ïs!=°á=Ào=×A=ãRl=ø‘I=ñ66=ß•=Â%±=܈ô=Ï€(=£D =Þ_=çD‚=âx=ò*ú=ȼø=Ëf¢=ßþ=üšª=ý~´=¿ P=¥|=÷±=Üw=áC =ïR=ýÛ•=ç<ã=çF–=Ð2ì=ÉP’=áË‘=ó :>æÊ=û*=ჯ=Ôˆ%>vœ=þ’ò=îòª=ê‚ÿ>¡§=ðôä=íd=ïp$=ÿ -¿=çG$=ßTa=î+e=ÚKO=çëv=Ýz2=°YÝ=Áy´=¯à‡=΃=ðkO>®O=ùÂ<=âmÛ=Õ R=ÞNÖ=äØû=çè3=ß«=üŠ_=öE4=ìJ>Æ=Ü’É=ì=ù‰=Ó/=ñ´¤=òø=íœñ>öÝ>þé>9>Ã>:µ=û$=ÝT™=×v >#K> Å>4y=íä=â40=äR=à‰=Ðàâ=Ι=ã´=òÓ> e×=üMŽ> à>{ç> /I>0>˜Ü>œç=íƒy> í5> •à> õ=ñ÷ > †5>$>"F>,4—>-f‡>+¢£>,,º>;qÙ>+;@>?a>>©>SÒÃ>€A>ž‡0>µ#j>ö¤ ?fDo@A­ÃA†€‘B,¦CÑáCÅC{C¨.B§q'B<®@å…?£0î?1>É.á>´÷¨>¤÷P>ŠÃ>~ˆ£>^ö‘>UML>F¯±>Eá¼>Aø1>FÊ>2ù>+fS>Y>Î>V>.²Ü>#Bø=÷K>íU>í0>Ië> ªŸ>S>×Ü=þE½=ô¸=ïq>=N>¡ø=ãòú=ÿ̤>z&=ôbr=ÖL=þ”é=õ"=äÛï=ßæ¸=ý=ûœ§=ï0Þ=ÖŠÚ=á{=æÒH=æ|==áä•=ÝcÆ=àæ.=ß.X=ñƒL=÷jõ=ÜŒž=Ο6=Á]=Áá=Ó‰D=Óæó=Þ=j=ÕbÓ=ÎÅ=Ù#Ò=ÆæZ=´ Ï=ãt˜=æÏb=ùûG=íNØ=ÀÞ"=ð—>À'=ïYZ=å«6=¢"Ç=Ãù=Ü)Ô=ùAË=õ¨D=Ìn¶=ͶÂ=§Ô=Ò£=à\^=ÇZ­=¶KË=»‡x=Ü;L=ê =Ôx=Èù¡=ÅeË=Íbw=׬•=ÛŽI=ÔUÏ=ÞJš=ôlž>º°=çIC=Ó¹´=Ùo¬=Ú6=ÚF =ËðD=Ò»8=ÝÅC=ÛÅT=òõ =Ìg-=Ñ$”=Ðzã=»qÜ=ß‘â=Í…d=›â†=Ì®ì=ë ª=ËÑ–=Éha> -«þ>%âª>Q>‚‰1>”Ý­>}:ô>Yä>+Þ—>ê%=ÊÒK=¼¤[=µ6¡=Ç‘0=Î6ž=ÍHŒ=ßt‘=Ùo¬=ÎÝ=æý·>n~=ßvM=Õp<=ò~‚=åzN=ÂÓç=Ìhô=ÔRí=â8=ÄîB=¶ç’=Î&}=âô÷=³ÑŠ=’ñv=¦)ø=¶5=œÖ‚=Ⱦx=ÄË -=ëÍ >Y=ÛØ8=ëEE=Þtò=Ü3…=éR­=Íû=Óê#=ËÍ{=Ó-Ò=Ü™ -=Ï -=ÈW=Åõ=¾d½=¶=ßyú=×Nü=ÆD”=Ñ@Y=åQ=¦*=©Î«=ÒË =ßd=ìϪ=ÑöÔ=ÈŠË=Ä«=ÖóŒ=ÑU­=ÊgH=ˬ}=æ°¡=àŸQ=Êõ5=Úc!=ÝE†=´LO=¶÷N=ÖÒg=ú{E>¥é=³Ž9=º:¶=Ï$=ÑÆv=Ï™=¹­e=·&=Ú¸ž=äò=Ôv»=´ôØ=¬Þ³=ÞŸx=ÞF=±8=­O„=¬Ê:=Ãmf=Æb=dž|=ÊV=»Ä†=©€j=¸+­=¸œ®=ä=ÿÏ=ÝjÔ=Ö3Ô=Ôm`=Ø/s=ÖÈA=Ø"Ü=Ú =¬ç=´ù=ÂG=áËY=å}å=Êv„=Ī?=¾a¼=ÆZ*=Ô©í=ÝŸ=ÏÝJ=½™L=ÏÆ=Ú,°=¿¦ö=Ë:=í6:>ÕÃ=ç¼h=È©Q=ÓD=Õéµ=Ê‹“=¸’±=Ë•k=ÓId=߬ì=Ù†=Ý>=ØŠÍ=Äö™= ([=±"ò=É^=Á!=Äa=ðB=áÎð=â]J=æª =ÖQô=¶ú=ȶ=Ã÷è=ž!=¾öØ=Ê[·=Þ=ëJ`=÷a*=éàô=ÍŸ6=Ö0•=¹—°=Ë©ò=Ò==äw=ÖÆ6=ÈÄÒ=´ËV=½¸Ú=ÖAš=Ì„Î=Õ­=ÃÌ”=Àl*=È’†=ù©¶=î~‡=½ Ê=ºY=¸y=¢S/=Ž>=’@x=–€V=±Å§=¹z(=®¦Ï=¶u`=³ß•=³À==Çž=µa%=¹¢ =¼D=ÀÚ=ÏpÇ=Îúº=¯–=§=»=ÝLb=Én=Ä=Âî’=£L©=¶`=Ô+¦=¿©ð=ÄqQ=ÇT¥=Äɲ=Ȩ%=»³„=Ëé]=ôâ=ñ‘í=ãóÆ=´Ó|=ªÿ=œ/æ=´‘£=¾ &=Ñ9=¾è•=©ˆ=¸³¶=¾ôï=Ò€“=Òô=ÒÿÃ=Ø^u=ÝRW=ñl=â¾é=ÇŸa=Æçg=Èy=Ð÷Ú=â!$=ùÕ-=ã2>=×Op=ÐLÈ=Ðg§=ÏE=×TS=Õd7=º©=Åì•=Ε¼=´‰=¥ˆ=wºö=¡n¢=à -=ÕMç=Ó7=ÂQ„>/I>F}Î>þ¥¥?ê˜?I•?8Nz?-BŽ>¾O>‘p@>ìC=çø|=Þ"=ݤ=âD=æÒ¦=Á»O=¸0=Ün¯=×¹=ÒS‰=Ò ¶=α]=½¨Þ=ÑDr=å"@=Ô1=Ð’ó=Ðœ¨=ᇃ=îu=ä¡x=Î’¯=ؤ=¶Â=ÆzD=ÿ\á=èµ=º;=ÏÈ"=Õ_º=¹Í=½f×=Âó¶=Áî¿=¿¾=¤ìê=¯%‡=·å¿=Ðþ^=Üq=úµõ=Ì.=­Cµ=½úê=ÏV$=çG½=ëš3=ñXŒ>R{=ëñ<=µøx=Ì‚e=Õ~–=ö»F=ñê²=ì w=Þ–T=çÌÜ>bÌ=ü>…=äðR=Ý(¨=Óu¶=Ç|µ=ÌBd=Ñ6>=Æv=ÉõP=ÏGÄ=Õ ¨=Ùüf=ëú=öj=ýÀw=Üz_=Ô8Ó=Í@c=¾†€=°|Õ>Z> i—=Þ÷ø=Øfö=ÕOÎ=Â#'=Ñy»=ç…Q=çe‰=é;=ð¡‡=ïØ=ðY¼=Ö´"=ÞG=ùb£=ϸ=¸ýö=åÇa=ÒÇÔ=·7K=ÓÚš=Ûë}=ÜŒ=É™'=¶¥f=ÆR¹=Î Ñ=Ú¿|=ñ~=þïÙ=ì·‘=òXU=þEê=é3=Ü ç=½Z+=«ŠJ=—œ*=÷ž=þ7=韨=óè»=ûÐ^=´¿ñ=Ä`=àA=à`;=ÞÙ=èt=課=èê=銌=à•÷=ÍDÏ=Þ‡Ü=çMK>ˆ-=òªç=ÞFô=Ñý{=Õ—ú>·…=÷ƒ_=æ›Ü=÷,#=ñ2=Ý=èr=ê÷=ÜU´=á=䞨=ÝGµ=à±=ì¤E=òË=õÕ=ì]œ=ç=â€.>PQ>;g=ý¸=ôà=ëXæ=ê§@=îv=ükü=Úd=Ç]0=êòØ=ïZ<=òšá=Ô_i=Îv'=ÆB=®~ˆ=£ß¸=½=¼(±=¼SÖ=Ä]è=Æ'º=Î×=ÝWq=èH=µYP=¾&Õ=ÕØ$=Ýb¡=Û­=ð==Án =ÃuÑ=Ã(à=Ë]=ÜP´=äBˆ=æÏÞ=öoÌ=úÓ¶=þà=îFÛ=ñ¨=þ=ø»=÷8z>]=ÿî[=õŽö=í ×=ã&7=Ê.^=ç e=õµ.=잢=æ-µ=Úº”=ÒÐD=Ò,m=Ò ü=Ý/¾=â<Ö=ëHÌ=óN=ü¡ó> >‹¢> -Ö¦>»Ï>_R>>R=òÉ=÷L=ó.«=×V4=Üÿ=à$ú>÷‡=úƺ=ðg =ø ®=ôg–=ç[­=øØ­>Ù³=øÒÜ=óoæ=ï¬=õæÛ=õo=ç“í=ÜÉã=×M”=Þª;=æÿ=ðfØ=ï¡ -=ï|;=ï›z=ã+o=Þ -=ÔÈB=åÄ`=öp=БY=Û‰È=þöv=æ°ð=ܼq=ÜM,=Ò¨ =Ësñ=ôF=èäj=ÒwF=ÞE=á ]=Ò£é=ïÝ>Ÿ >j©>·ƒ=üjU>Wzj>†^ò>ºÅl>¿i>½[ä>Œ®>[Úù>IK=ò¥=ìŠ-=êÔ=ØVl=×ü>ò¼=ò =áü=é æ=ò'£>3ƒ=üTJ=ôº=àÛX=åÛ£=èËT=à‚=ÜZÏ=×Ø=Élv=À6=­¦Þ=Ê^×=ÑÔÖ=µ~f=¿QÑ=Æ Ê=Ï =ל°=æê\=ߨƒ=ãß=÷Ü=ím=çš=î=àJI=ÎT=ÛõÅ=ç+ø=÷~¸=ÝÖa=וª=Ý×d=ôà¼>Ôl=Þ~=ä,D=îzX>K>ÚÛ=ö+=öð=ñ“q=Ý=ë"µ=õëŠ=ÕWð=ÒêO=ÔBÉ=õö¶>š>Q3>Üå>¸>êr=ÿKª=ûèÔ=ë¡ç=ëû/=ëLH=Éh¬=Ƕã=Û-v=Å¥=½UW=Úqœ=çñ+=óÁ‰=Ü@=ã¿ì=ód„=ס¤=Ú«¾=òÊ¡=ã-e=ß1V=úzÖ=ÔÓ¯=¹û3=ÙM‰=ãa=ò"ü=Ýëã=Ø£=Ù/Á=ê1÷=ë•=È¢¢=Û¢N=ê^> `P> -i]>jØ=Õä=ÐÇÙ=Ð;M=ÂÖ¢=ÄÿÈ=ÐGë=Ù–Ú=ãa=ðÃS=ãÁ¤=ØM=×Kx=ÊñB=·Òà=æØ_=å{0=ÇrŒ=ÞZò=çÌ=ç]²=Ôº÷=Çg=Ça =Ö´=ç¹=öñ”=ëUÕ=×-1=êÛˆ=éÎK=ׇ´=èY=ìÙH=ÞÌ=Õ{=Ίš=ƳÏ=Ô̈=æ`v=æË®=ì¦f=÷˜˜=ñPf=õ¾q>ÙÚ>Ìê=úá§=ß.J=Þ†X=ß^È=ßVå=ä@™=çÓ<=ßæ =ä‘&=ï»—=èö©=åá©=ÞÕx=ÝaB=ä¬3=þÿÙ=êú=ßóÊ=Ôlµ=¿ô¨=­E=ž@(=«È=¾É=·‚=¾Bê=Õ¯i=â˜d=ÞÌ)=Æ%=»‰’=ºlé=Þ=çà›=îÃ&>uø=û …=æÒ=î4…=ò -ó=ö{ó=õß®=þXw>íÅ=ëÙs=à£=ð`=ߤ=ÚQû=öØ?>º>¹7=ï?»=ç¼í=ß}H=ß)ä=ÚÖ4=Ö‰j=Ð8=Ô?å=ÞÄ=ËgÎ=Ϧ=ç2°=ÚJP=Ø f=æÈ¡=è`=çö§=ð$=ü„a>ô=ÿ ×=óÁã=ç•=ýç=òö+=ßt'=ô,=óƒ#=çª >LM>†T=÷ˆ=ìW¿=닧=ÿïÏ=ï—ƒ=ïʪ>4Þ>“fÌ>Éø!? ²(?!Ö?42á?:1ð?!Ó?yC>»e†>‹Ë²>‰ =çé­=Ý<€=Ýné=äAÕ=âd½=Ö>Ñ=çrí=îÏ=îlt=ó_Ø=õÚ=îǶ=ý"z>$ -=î…=Ẃ=Õøi=çT¬=ÚÞÈ=ÎÄ->¤ >¸Ð>á6>ï=ÿë=èyœ=î‚G=ò¥!=÷X€=÷+‰=ò»Ç=çLÝ=çib=ëï=ÿzÀ=é<~=å27=ÿá=ósX=óøà>Ãè>AV=øhõ=ÿæÂ=öï&=ñGu>Xt=÷ãµ=ð¶í=ð•Û=׃=¿":>ä„=ý¶æ=ñ"%=éG=è'Ë=è8×=þè=ôU„=àý==àä\=ݳ:=Øã=Øܯ=Û-”=à§ü=Ìä:=Óž­=ñ<ˆ=ð<í=óhä=ùm#=í¦‡=äå=Øb`=û>â=þ)~=Ï«V=Ð=Ñ V=ØÁÔ=ØC)=Ûd§=ê¡=ï.,=óá>£Î=ä&=Ó1P=ê¹Ù=ù‰>¢B>7Ÿ=ù”$=ëÚ¹=û)=í=á =Ò€=í6î>«Ó=ë/R=÷×h>¹">ƒ´=óB=â¯b=ÛH1=å}Œ=ó•-=Ûæ’=ÞKC=âS =ñïj=ðKH=êÌ?=êœ=êä=éío=øÑÎ=÷-6=óI!=äÐ=ë"`=óör>”d>g>¾×>\d>zG=ÿ2> -ļ=ïà=¹æW=؉Q=Üš‡=ÜÓ^=ó¥N=üÜÍ>è¹=á•4=Õç$=Ë¿o=ÓºÑ=Þ.¤=î:u=Çþ¶=ý=Ãý¿=ëwÒ>ùj>¼æ>ã>¥Þ=Ý==ý-Î=ûMc=÷²=ä¹6=ët=ù3o=ð{¿=êÈu=æÝ(=Îé=âJ=øžÛ=è7Ó=êÍi=ïŠê=£ž³=²À&=Äô>T=ê´0=Ù×=ú÷$>d&>$b=ú ç=ì}†=ßw©=Á@s=ÚÜ¡=è‡ï=ß1†=æwÓ=ðž>4>œ§=ùàà=úH=û‘=ø±m=é?=õ´Ø=ùl=éþ@=Ѭˆ=Ñ/S=ô ê>Š‘=ÿNs=Û4a=èû`=ïUh=ô<=ì’¤=äí³=Ø}{=ö~o=üÉŠ=ý·µ=ö6ò=í]4=ÜØ|=뺚>)> >\º=üˆO=í_ï>Ƴ>ØX=ææ_=ç’ã=ç~í=âøž=Û3 =ížz=ö¦a=壴=à&\=Ûié=Í*o=ë&L=û”>ö =þ²3>é> -(> -?)>Ÿ)=ûO†>ur>×ü=ýò"=ûé²=ýOV=ûn=ûŠé=ñÿ¿=æö =ëüN=öÀ*> ,=à‘p=ã h=áL“=ðÃ=ú“Ÿ=ý }=ÞÌŒ=õÒG>5\=ý5¶=è”ä=àu=ênØ=ï¿[=ðkÐ=æ(>¬>)Ä=ùw0=ýƒj=óȉ=é"ä=ðpú=ù©D>}N=Å?1=Ìq2=Òõ¹=éÄ=ñsá=æªO=ׂ¤=å¡<=ë`§=í$b=ÞMü=ê4²>@è=ßöC=Üm§=Ý2.=åèã=âG"=Øò=âàÒ=Ðð¥=Á['=Ò=ÍSQ=Ê8„=Çèá=Øë¯=ëÈ„=ôŽF=ð=í¸ð=è(=þÖa=úpò=óhò=Ô¬É=Õ=Ûpo=èÝ=ÏÇè=º‰Æ=ÓìÔ=Ñ =ÎÓw=ÔÝŸ=áê¢=ÜV=Áí=ÐL,=ÝGÙ=èÞV=Óa=ÃâÙ=±-Ï=Þjx=Ôc=ÅÒ=¢Òê=º0 =ÂÖ„=·§==¿‚=¸‹Ý=±ÛÙ=Í¿®=¼Ú’=™¡-=š·t=²¬=È:ö=½ìú=¹œx=²An=‘ =˜åÀ=¢¦:=¹Ø,=ÌŽ =Ê“H=ÁK=¿y*=ÎüH=ëu©=ì¹7=ÒDÎ=À k=ѹr=Êîx=Ʋ=Êäø=Ó’=ÐÎ>=Ä“;=æÉ×=ç’ =çã|=ðµ=Äbµ=®$;=Ù\±=á°Ö=æNì=ãæú=ã¤"=ÙÂ>=Åà°=Ĺ=Ó!ü=çA«=ï_y=âzï=Ö¯¯=ÍjÝ=ð‰†=øö=ê4¼>0‚î>r<>™¦>¨¼> qo>“£m>#Ö =ôŽ=ÓÖ=òf=奦=Üöê=ÔÁî=ÒÊ+=ÅZX=¾4©=Ük=ÙÞÂ=ÛÇì=홯=ÉNv=É9J=×=F=¾ý0=ºÝ=»õÛ=¸¯=Ð6:=á >Bë=ïk=éØN=æãs=ò3"=ëÊß=Ö¢Ë>¼²=ú"[=ßÜ¥=æ ~=Øz*=×Ç=åûñ=Ð;È=Ø÷¾=ßÕ =ãfh=ê,=è‰=ðÊ=ä&w=â*þ=õÏ=çÐœ=Û•·=ËBj=æÍ“=ÕUS=ÏÑ#=Úh=ͧO=ÌÆË=Ð5×=»¦Ù=«‰©=™E/=Ý`9=Ðyl=Ðk=ØŠÊ=¾t–=¾Ñÿ=Î - =õ}t=õ C=ð.V=Ôä =ã=ç±Ï=Ó™A=Ï)G=ßt=ûð†=ä'=ç¥=æÛä=ÉÉ=Ç›à=ºS=Á -à=çA=é2‘=泿=äº=ø˧=ð5=¬Y~=ôµ?=õQ=Øã­=ÛŠú=Æ%º=ÇÁf=áî=ûsh=þ„J=õ-V=Ûì#=Ê> =½[Ž=ï×$=î[æ=ÝóÔ=ÄO=Ìöh=Ö¢·=óƃ=Ú*Ê=äR=àöø=µè¶=IJH=Åœ&=¾iÒ=ÜÝ=Ù†I=ßÑ=Ý—P=øìT=ãY·=°…=ùá=þý]=éªû=Õ@‰=Ì°¥=Ò¼!=éÀj=ÜHê=æŽ=ïÖ=ć·=Ôúj=ÕTé=Ã(x=ß|ç=Ýir=ÛV =ëý=ì”a=éK­=çù¸=èÈ=³>=˜·ê=ÃÔ¾=®°{=©6Û=Ê¢6=åºW=ÝW=ÛŒ¶=íºÉ=ñm=æTŸ=§:Û=®;­=î§>%=Î!²=äŠf=ÞýZ=ΈŒ=ãÿc=ôœå=û =Ò×\=Ø Ô=ØMÔ=×LÑ=Å{=¶Ù=©„9=µXD=æœÌ=Ú¦ë=¶ÛO=úå%=çÃÂ=Úàà=ݲk=ÌCú=ÞBÏ=æàs=Æ$=öÖÄ>y„>"m=ÑÞf=£ Š=‘ãÖ=Õ6Ý=ÖÞ%=àoä=ð° -=Ú~b=ƲT=½&=Ñf =æ@=ØUË=Ö3ä=Þ¨ô=Ù‹=Òv{=Ë'¸=çp#=ø />²Ì=èé£=æÅ=àrÞ=á»u>œØ>…þ»>³*ý>×Q¢>ÙIJ>É™ð>¦}°>»%>Ón>ÛÜÛ>½_€>‹{†>+ƒô=Þi=ŇÀ=äF=âÔî=¹=¤=¿"w=Á?o=Îpy=Õ?¶=æÊ<=è—k=ǽ¤=º­=«V‰=°Ó=ʪ=ʵ=ÁIZ=º=³—’=¼‘V=ºÜß=® -ì=¢à¢=«ùË=²Ê=Ã#t=«zß=¹P­=®0]=°VÈ=ûs†=îô=Ó±¡=Øј=ßòT=âƒß=ÏÑÿ=´‘'=ÃC'=ÌX£=Ù=2=ŲB=± X=©£ª=Ë=º¢ƒ=Çö¶=䡽=Á=ê3==úe`=íUì=árw=½`=²h=Ñpœ=Õ6=Ì’=Á3É=ÇÄž=¯±“=·3¶=Ï}=³ý$=¨ŽÝ=½áô=¿ì -=ÚÅi=ÞW=ן}=ׇœ=Ë×=¿+Û=´Åu=ÈEò=â´2=Ûñk=Çëÿ=蛫=änU=è{³=ê;ê=×ô=Õ6Ý=Ó!O=ÛLû=貞=ì6¿=¿ðB=¿­>=æj=×K=¾üÇ=«}â=¾7G=ÂÉÚ=Ŷä=Ú«î=ÆçÓ=À'×=ØÙW=ÊHE=ª‹R=°z&=ò¯€=ç¡=Û‡r=ÝIc=Ðf=Ã(0=´áU=§z3=¬•=Ù¡'=æ—p=é—=Âó=Îõò=äö‰=Ý„Ú=ÖnÎ=çÏX=ðžZ=Ý–¿=ÑÓ=ÉwA=Ï+à=Úä¬=ÛuK=Ë=ÈÃ?=¬Éž=ïy“=á F=Óü&=ÒH7=°ÑÔ=Ï/}=âÝâ>Ë=眳=Ã$Ç=³Ó=¥«·=ѯ=Ñþ¥=¿\õ=ßï=ù-z=è›=¿á=óW=ô š=ò‡=óÚˆ=ÉTG=Ét$=ÂF³=×ð¸=àÕ=îÌÙ=ãŠ=Ûv=áûE=òED=Ó|H=Áò9=⹓=èÔ·=ñX¨=ôw=Éÿ=Ý´D=åÞ=ñžá=ëõ =Ô=åìê=éŠ@=Ãð=Áµ‰=ÆYq=Ëþ=ó´z=òì‡=çž=ÚÞ€=ßË£=Ø+º=Þ]C=ê6=ÇX=«¹=î/µ>ïÒ=ßË-=ÐÊ=¼ Ð=¾*‰=÷r:=¸7=·Èÿ=Ü+¬=ö1f=âÇ,=ÐœS=ÇíA=¸IK=Å£‡=Ñ°e=Ûú„=÷wW=ßéb=Ú¥—=èš«=ëìË=æM}=Ö•=ƆÂ=¿=§=Ÿ=¼ì=ººt=Y­=¼°m=·Êþ=Þª¤>]›=Ño²=Á„¸=¸ƒi=Íeì=ѧ¼=­¬=·ðâ=ÚNí=Ë÷?=¿NA=Âûü=Îr=Ðý=ÔÛŠ=Ì6“=ņ =ÎçÖ=Ð[H=Ð…4=ËîÒ=Ô+Y=ÓÏ%=å¿=ï¹=éY^=ß==ÆGŸ=ÍÞ²=ò}=âȵ=¼ƒ =À =Û$/=ÀUR=Àë]=Îl…=éâÆ=ê3=݃q=ßè=Ýn†=Ï3ü=Ä;*=Ï+ñ=êÿA>!/=ö‚G=ÚÁ.=Ö¨v=èÿÑ=ë³þ=ð*7=äíH=ÜPU=ÞÂn=Ù‘Ä=Ͷ=¹Z=ÊÞ2=ÞJO=å‹=Ýšð=˜^´=£‘Ä=Ð]Å=Äåv=¯c=ѾÉ=Óy^=¿2=ËÛ­=ÐΩ=©Hû=·#”=ñ®»=æ½=>¡š>ºM=÷ ·=¾¥Y=¸¦#=±=¦'=š¡È=¶¨à=¤Ûd=›ü”=£Fñ=–bã=Å¥þ=ØB =ÏŽU=Ñ£Ú=ÖâÏ=Î>å=㘆=çúõ=Û g=ÕŒ'=Ê­s=·¹.=ÏÊÓ=ÓÒÁ=Ôê¼=ÑÒñ=Òø™=á¥W=å$=Ùmm=Ù=óÊÕ=Ìù=ʾm=Ô}Œ=Õ£“=Èù=ÛÂ"=ÚZ =Éç=ÇRò=¾Û=¿”ï=ÓÕ}=Ù¢Ò=´Ò=ºb¦=Çö =¼ø=­,í≠é=ЩÛ=Ý%x=êÛÅ=í¥\=×Çù=Î$L=ÎÎ0=àÝü=¿‡*=º¥ï=Ç ž=é=èg5=Èæ“=Ä$è=ÃÁ¡=¹é=Å€»=̳Š=Æ•7=ÇCi=è D=Íý"=¨i=·|=°áY=ÕoÙ=¿À=Ýùp=ç€÷=ç¸L=Íþ=Æ“œ=ÎWÆ=Ѧ#=éßv=Á×=¸ÍÄ=ËW=ÊÇL=Ë>ó=кB=ÙŠ=ð±ï=çE²=Ô =Æò7=ÂU‚=º,=¾Ž=ÿ‚Â=â[{=½S¨=­Ë=ÀQ¥=¸#°=Ê>Ÿ=ÙÒw=ä¯=Ü)=Õ~=ÎA =¼:Ö=Õë=ß=ò¿c=ô¥=áã4=ë%Ç=Ýï=»ƒw=» î=Ãò¿=ÁϨ=ÏÐw=½ƒ4=³(6=´ÊZ=Ñb=ÛûÐ=΄=×=ô²Ø=ÄM=ÍÌ?=àܳ=í—–=Ï t=ѹ±=Ëc=¼6¸=©>4= À±=š^=ŸyÂ=›p&=£´Ä=ÂêÏ=Ô±º=ÿ–=ñÕÑ=ÛÁÁ=±Û|=»·…=° Ô=³Ü=¸¸=Ì”§=Äë"=Ê“Ù=ʪK=ÐM•=п¢=ÍEŒ=Í;Ö=Å}½=Ö¶ù=ÜY=Å– =¾}·=ÆWj=èYF=ÁˆÓ=Á3§=Æ)=Ã$è=ÛíU=ÙÒX=ËJ,=Çìa=Æþ%=·¹,=ÐíÕ=¸„=Ê™=Úìt=É -F=¿Hü=ݵ_=ÉUç=µ¶ê=ÕA=Ú§=¶â0=ÍÍ~=ßk†=Ögk=ïa¿=Ó8÷=»íô=­Ë=³qp=À =ÑÐï=üd>î>Ab\>Vªå>Ä >zÖ\>rhJ>?Q¯>*Õ.=æ¹h=Ñ(ó=¼;W=ÌÔš=Õ…¯=ïž=õ{=ú=ßë3=ÛÇâ=ã‘\=Ø?Ê=ÎG=ÆÏ&=ÀŠ=®TÓ=ƽ=á´H=Ñ(-=ÍÀ|=à€*=ΧB=·=µÑð=¾Ð>=ó»±=àø‰=Êæï=ØÜ'=Ý=ÊÛ=Æ,=¿¦Ž=®ì=²¹Á=牵=ÔèÞ=¾W›=ÕßÙ=×ç==©”g=²Êz=½p»=µá=¸/N=å(ÿ=Øq=ŵ>=äGž=æVý=§š=«Ÿ×=±*…=¢¯=Ÿ5=ºN=¾¾¥=ëR=´4~=°×=Ìya=Öº=àê=¿ˆ=¼sÕ=ˉS=ÐÍJ=ÕÈ=ËÓ=Å{Ñ=£™é=ËÓR=ñŠ¨=­‘9=ªˆ@=¿ùþ=ÎK.=Ý3=墦=îV]>|L=âpc=¿ -_=ÇDã=ËÂÉ=Ü y=î*[=øÝ=î5ä=èë#=Úq\=Ó~=Ðjº=Øš‘=ÚÍI=ضd=Äõ!=¼{„>©=ð3E=ÄB=ä\Ø=òÈh=ß•=Ú¿Æ=Ö5>øì>ÎG=ðL=Üãã=À‚¬=ȶ&=Ërõ=ËÅ =Ù†B=çXú=×Å9=Ú]=ù””=ðY¶=ç9=ÞgM=Óëæ=·'ô=Ñ>ƒ=å¾=ÃEx=Ä\ô=Òòø=ðéÊ>+£=ök=ñóÿ=ãb=ܦÙ=Ú3T=ì&"=ìi¢=ë»­=êrƒ=êZô=áÇ»=æ'l=êÖ×=Ë1=ņì=ÎD!=Øõ=àÒ -=ñ‰Ã=íà=à¤ó=Ï=ÄUä=ÖRê=Ù\B=ßüÑ=ÔÓ`=Í[Î=ú‡"=ï =ÞÕZ=Ø#í=ØIG=ç<®=åÍ=ç%o=ýÒ>=üƒB=æ‘f=܈ˆ=Ô>=ø=Ô&‰>¨Ø=÷Ƽ=îy=Üjš=çŽR=þËU=ëK=äÿ‰=þ\º>VÞ> =óHN=îa=ô~=òkà=ô_W=ôe³>_Ô>F&Î>‡à>GÈ>–›ò>…†>OOŸ>q¦>ZÀ>Nrm>qr­>7 >ˆõÜ>}Ò >*@î=ý2=¼WÙ=Þ•/=Û‰=Öap=ÕéÕ=ع=ðPñ=äÎ>=Õ?–=Õ*p=ÑÒ‹=Âßæ=½àø=¹Þy=Ò I=×ò½=æ@Ë=ñ·z=÷g‹> Úk=÷ù.=£´=þXr>y.=ös`=å =Ò²,>$>h¤=þ¡ò=ùm¨=ô†=ì0=ïš8=õLD>¼b>1–=ÑUm=ìH}>šÒ=Þaa=ÖÀ­=ÐúO=ÜFà=ãE.>8n=ù0N=ØûU=å´ê=ç}U=Ø*”=àv|=é<°=÷Ù´=üžu>‹%=ÍEÜ=¸ÚÆ=虀=ìÿ=ñU=â|ó=àŸ=àQ=ïP=ùrÝ=ðxô=ý®à> ·{=ÿÖ4=úý>9É=ê2-=Å”K=óQ=õóÜ=ïõÅ=ö±$=öÔ=ÞÑ3=ßUÄ=Þø=÷{Æ=ýi8=î,‰=ÞõÝ=Ôg>‰œ=û§=äâ>õê>1˜=ì~©=ôŽ±=ý®t=íÐ~=ïË:=ôþ4> ‡>ÏX=ìIˆ=ðÀ¨=ô¨“=û¯5=ögý=ãý=Ô 2=Êþ>›ö>Óc>ªB=Üì¼=Ù®=ü^¢=çÖ"=ÚFú=úÓ^=ÿ§>ôÓ>'ÿ>>”‚=ôRO=êb>pÌ=ø›§=ØmF=ß =âÉ6=ðº1>,>¶«=ø=ù—z=øk=ßjö=Ù'¬=çRÅ=Ù—)=ÍÜÿ=äz=ëïÿ=÷IÉ=ÔMÕ=ÄD=ÅA«=Æ<ì=Äç¿=Ó•=ØD´=Þ =×€—=Óö­=Ì©÷=ìJØ>P˜=Ð Õ=ÙnX=õw2=ÝÏÔ=× ¹=üq2==ä>ç=ãcÏ=׊=ÂI*=ÛyÍ=â°"=â…°=؃=Ò C=áÇ =á…)=áö+=õŒ=ùî™=úW™=ÿ@>æ=ò-6=ô;y=ùò$>¿ñ>ü=évþ=ßš[=Ú)õ>Í=÷m =é±)=÷Í=øÜÜ=ñlH=åöÞ=㨠=ù(=è ™=ØOO=ßþ?=Ø=Çq•=Ò± =Ø Ÿ=ßAz=ÞÃú=ß+=×$®=í³ > N§>¤»>wƒ=ÞuX=ÙT|=Ö> =íôŽ=×Ëš=½Ör=ö=üÔ.=öù=é^á=é3¿>¿=þ À=õ…(=íù€=í‡=í"~=æ´ú=èC¿=ô½Ö=å“=Ûõé=Ûý =à>ô=ã]t=Õ}=å)ô>’ý=è{™=ÚØÑ=Úâk=è4=òto=Óá.=áŸe=ú ñ> -¦?> -'Œ>:•=í4=çýó> ü·>Ц=ò­>%> £> iÇ=ù‘=ø«ø>œI> èx>=òë”=ù@+>{œ>&k>Ž > ¸ô=Øzó=ć½=Ã=à6E=óxñ=ìÙ=äÚ=Ûs=ðßÏ=îR=ãY=â£!=èfe=û…œ=Ø=Å„ >®‘=÷lt=êØe>Xí=û"œ=ëS>úN>ãÿ=û>ç=ç{ì=ÞVó>“<>ás>5=å;=Ýð×=ÓÌÔ=ßí®=áûn=Û‘>2>§=ãpB=ë×=ó…=ì~ã=ð~Ò=ø¤ª=Þ÷è=Ú‡=ÛÈ=ìÕk=óIÐ=òxÆ=ÖÐ=Ä =ò3Ø=ü‰N>ç¤=ô¦h=ïuC=ê=!=Ý¢‰=Ú 9=ÚËÂ=Û%=Ø.=ʤy=ಲ=ò')=Û+]=ä!N=òBö=ÉÒY=ÒŸ‡=óF=æB&=ßÂD=Ó76=ÎDê=Êv\=ºæB=ØÃ=ó˜Â>gŸ=ëç•=Ë- =èš=ñ¹Ó>‚=ß W=Ù4Î=ó/¦=ãÃF=ßá!>bl=ø3‡=ëj¼=ÛÅ2=Ýý=ãé=ñ>=ø߀>Ü>:è>ãð=ãrÚ=ú“„>ðv=ûïÉ=ÿŸF>5[>ª=øO-=ë‹õ=óS¶=í¥Ì=ãÏ©=ù?E=øüƒ=ó›=ùæI=øçR=ó?ú>Ûì> ã>˜0>ó->‰:=ò­y=òpE=òO=ÛAó=åæ#=ú!»=Ñ=L=çáð>ê:=ðeò=ÜÞ=ânª=ñ¢P=ýjæ>ç>Þ>‹2=⹶=×€=ÊßÃ=ék>=í -Ÿ=êÛW>Ûp=ý¸´=Ûy¹=º ¯=½"C=ÛË6=àôÿ=àg„=Ó-¡=Íÿ'=Ïux=ëkÄ=ÕN=ëe=ã£#=Ëúã=²{ñ=èÚR=Þ”‡=ËcQ=àÏ)=Ø"–=Ã>=ϳE=Úí×=ìSŠ=΋í=ÁõÞ=»¥f=¶K =³~‹=»á´=Ê‘Œ=Ò.¯=£ßh=«Í\=´þð=ÜŸ„=Ñz~=ÄÁ‡=Û?8=Ö«”=Í(µ=Û£=ØŠe=Íi>=õV=ø¢ =ík‡=Íú=ÎÈî=îÖ=íËÀ=í°=íç¯>X >i½> -ý=òaƒ=äŒ6=ÝÙÂ=æQ÷=íJa=ݼS=饚=ö=îÒØ=ë`=æœd=ý(Ì=ùÁÖ=ï_‰=þ"ê>ìŒ>W =äþe=å¾¾>€¹=Ô•ê=Ñn =÷’=¼z;=¶ =÷ÈÅ=Ëe¼=ºðÌ=ÖJ=às|=ä9S=ÖL}=éɘ=øÈL>+§>8=ÿ-+=ÿûž>ˆ>Js=ïÁ§=ïvà=ðî¼=áç=Ûø)=ÖÞ=ô²¶=ü¼l>I>ˆ>_]>XM=ÞÈÝ=Ûâ{=áˆ=ÔNc=à†Ý>—=ï%þ=åó‚=ÙÜ´=ß-Ô=ì1h>O¡=þú=õ …=éà—=Ý"ù=ä€>2§>Á5=ü>=êRÓ=åe¡=éø©>9D> -HÒ> -KÝ=ãW>=âJ=ãn=âq=è8=çÁé=Òs@=ßzÕ=âØß=ÒÎ-=âïk=ìÝ2=öé=æôÍ=ÚÝß=Ält=ľ®=Ån“=Ë“i=Ï›=ÒØÒ=Ò~÷=Ø;=Úò’=ÌÌò=ÇŽ;=‘Ü=Ò3Œ=Íï=Ë­=äþÿ=éAÆ=ën¹=ÓwÐ=ÓÁ=ÕY=÷D=äUQ=Öí=åù=ü7>J=íâc=÷0>†°=èõŒ=ö[x>vä=ÖÁE=î ¡>LÓ=÷îä=ß­Z=Ï‚ª=û{>6¡>ý$=á/ =èO]=ï!=Þè#=ó<˜>J]=êÄÜ=áÛ=Øf=Ø%Ì=嚪=î¨M=æˆ3=÷t>Pò=ÿ–Ò=ìÔn=ñz(>$Ú>!˜>#œ>/¨>0Lv>4£\>+<>¨>qY=ëÇè=ó,E=ñÀ=Û¦õ=Ù(‹=Õˆ=Èð¤=êø=ò?=åÚÌ>9°>²i>e…=õLÇ=éZ±=×ñ=å}=åB=ß1=ÏŸå=äO>ù =áè¶=Ý–º=æKE=ט­=àz3=ïY¦>L%>ï{=úl¯=ØO=Ý8½=ßšA=˦Ä=ЭÛ=×v‘>/F>Od=÷i=ßb=ÔÖê=Єl=á«f=ø׎=ú÷2=ߢØ=é =àR>=µ,=Æ´Ý=Î0Á=Ú “=Ò¹B=Þëò>~_=ò²Y=ïöx=ï² =ÓMÏ=Õú%=ܽf=Õ³=×!;=Ûãª=òÈ#=âÑó=Ó¡[=Ü5¡=Ï‹;=Ép[=Ìúˆ=çI_=ñ’ö=ì¾x=ݱ=ßÂ=þ›ó=íÛ¹=å.¦=Ü –=Æxæ=×ø >ZS>Ee=õ‹ =ÛiÒ=óaç=íVi=èu=á:´=ãi=æ“t=óÜ=óâÇ=ìw&=ÞVó=ÝÏ=Úm=ÊbÚ=פ·=×-w=Íñ=ÖS=ÝF¢=ä'ç=×e¶=ÏŸt=Æ+¦=ÎØ/=Ñ=ÚÈ2=àq=ʱh=¸©"=Ò!=̬ï=ÈP=ÖÈ¡=Íz¹=Êé{=Øâ}=À‰°=»g•=»IÂ=Ùa!=Ü\ž=Òœ7=ø> ->Eß=äÖÈ=ã&=ãäÛ=ݶ–=àzV=æ8Q=òþÇ=ïž =ëÚY=ä;#=׎;=Ñ™¬=Η=à¥è=äÁ®=ààµ=ô†W=×Ìö=½0‘=àš´=×±ü=Øú¯=Äq÷=Ö Ú=ؽQ=Ð$ö=ÐwÖ=Új=ìt=ãIþ=ã,r=åoÁ=ágF=×jÎ=Ó=I=ÔH}=þÛ$>>Dí>Ml÷>N–>?“ñ>À¤>}Ð>l>–=ù>V¤>5‹>4k >6Íd>Jl>3Ó>w=à ®>Þ.>£$>/y=Ô2=ã,=ð8==Ç^=Ë=ÇJT=Äéù=܆é=ãˆ×=Õ´Á=Ä:&=Äð@=ÌL®=Ë$Ý=ÄF=ÃRÿ=æ?=áÐß=ïÊ=æ|ƒ=êK=ñ{J>°x=ã:K=àn =Ú‡¾=âH^=ñeq=õrJ=жþ=á>j=×Jõ=È6=碙=ë“ü=Úvë=ËÑ =Ð=æ=ߘã=å¾ð=Ñ­¤=ÆFÐ=Ë$~=µ!Œ=¿¹T=â!d=Ú’!=à¤=à˜D=Øܯ=âì=ø_#>#¾=ò¬=à„þ=Ïë=³Bø=Î?Ú=îl=Ò ;=Ä·t=ÁSÿ=ÎϤ=ßâ=áa²=íÖT=ÖáÇ=Ý~-=êoý=ÀBL=Òh*=ÜYŽ=憯=Í[#=Ä2È=Ên=ÅD›=éyË>ƒ¬=Üã.=×;M=Õt%=ܪÉ=Ü‘U=æs]=æäï=ÇAB=è@›>8>KA=ì°.=îT >ôà>˜}>Xt=âŒ=÷²®=õÛ²=çrf=ЦL=Î"W=Ð^=Îàž=ãC¦=üªÈ=ü“ä=äÙ¦=Çt‚=«œ=¹œ„=éKé=þgà>Œ*=Ó(æ=ÆYÄ=Úò1=ò£=êöN=êÖK=êÀS=ýÞó=òñg=Îê=§‰E=ÖN=àï =®ÑÖ=Ô*g=ݲ†=äŸ =þο>-œ>i=þXH=ñ$†=æªw=ݤb=ö_Î=çk÷=Óýë=ÂO=Úy=Ósv=Þd=ô B=â»=Æü=òA=øîG=ýa¼=÷“v=ì~(=æXB=åÈ=Í =õú>œ€=ìþÛ=Ãë8=Àxü=ÚV‚=íRÎ=ðª7=ó¯”=ÿ}ý=Ú¨¢=ËåÐ=éu?=ßã…=»=õ=¬æM=Ýž¡=ãÜ<=×3=Öÿi=Í­(=ØÜ’=â!=á'Ì=ÙfŒ=ÔàŒ=À¶Â=éQÅ=Ê>=°0=¿ -q=Ú¤=àL;=éJ×=âä=Ï(Æ=Ôný=к=¼ã‡=Í3U=×/s=Ò5=å%¨=åë{=̪=ëÔ=æl=Î"Ø=Äò=è=>4Ü>Œ=Ý‚}=ÖÀ{=ÖpB=Îêš=Û.ô=Ô5'=¿ùí=Ü=å:2=Ü¥=¯·š=ì¯=î±Â=»ˆ=ÞlE=ÏÕ=ÈL=Èç=ë,=ÖÎ!=œx =ÏùÍ=È'=¯Î=­5O=×XX=ÔJ}=ÄÓ=â’­=æã=áõã=×zû=Ü?b=ït >2=çì=É'D=Íñ]=Ú¨;=ß,=ØË»=íR1=ÎBq=ÙMO=×Y=ż¼=³©Ø=­Bò=½0!=Ì0^=ô!Ý=ìÅ=àð4=òFR=Ô Œ=Í õ=ÏN¶=Ìö}=éË=åÇ=誊=¹1a=ªðð=£Ìõ=½7Ü=Ñ+=æ5æ=ù{1=÷©\=þë=ü=N=å<=ΊÖ=àë·=ñ6³>‡k=Þ]˜=§+=Ÿ´º=æ=Í«ó=»ª[=´Ü¿=­Œ‚=×Y=à¦~=ÅŽ=ÎÍ =ÉÝ=·LŸ=Ö0à=ÑÙÞ=ÔO=çæ(=ÞL÷=ÜåÅ=Û£=Ñf=¼-é=°Ãå=µäÙ=™ü=Ép|=ÎcË=½Qb=¬ñ·=Àü×=ÏÞ‹=ÇÍ£=å‡È=Î=°%š=ËÌW=¿ù=¾«Š=Û=¹O9=ÈÕ¹=;=Ø¢ò=ë=Ö#=Æ1¨=îP=¯›£=³ð­=Ò.Ø=ÄdÅ=Ñßá=Øàõ=ÉVÝ=ÃÄ×=Ê©­=¿º„=ªü=ű=КZ=Í+ =ÊQÉ=â%=áí*=ÖïŒ=ËD=ïð”=ð¬ò=æD(=µ¥&=Üêæ=Þ6Ð=áÊ[=Û÷a=Þ:È=àª]=ÅoÝ=Ñ =Æ{=Å6=Üï^=Á…€=¸ =ÚÒ =ÜÇ<=Íé¢=ãƒm>Àò=üÃ=ξ7=Ú=ãýì=þû'=ï,Q=¦P²=œVw=æ‹ø=ßUÆ=Âm2=×D&=ýÜJ=àØ=îMÐ>0©=Úmá=ÚÌ=ÿ’0>Á=¼£.=²…ô=Ì–²=þbÅ>x=륪=ÝO$=Üâø=Ñã…=°Û=¾ -ç=ÕŠF=ìõÙ=à‚]=áIÊ=ì“”=Îvï=ʺ=×ðH=áUÊ=áy@=Ê.1=À2.=å/-=Õê9=ºa=Ð'„=ÌC=æcI=ïkl=°åM=§´= n^=¾ Û=Ñß•=ž=žv=Ð|Y=Ìõ–=Í8=Ø3µ=§$=šT=œçä=´=­‚é=©V:=¥aÄ=¨¹œ=®ÔJ=­¦=’ÜÃ=š\Ÿ=º³4=IJµ=¢û=Ϩ5=É!º=Ô“·=ÍÒm=´%y=Çô|=×î×=ß¿€=äbR=ö+Ì=õf5=óU¤=ÛÆÊ=Êe«=È¡=Å2=Ä -=á×Ü=í*¼=ÒK£=ÂåŒ=Ф=×í!>Î6=Íß=ŒR!=­¨¤=»®c=ÈgÀ=ªãT=Áùû=È!a=ÒÓ=ß’=ÕJó=ÒHà=Ï6=² ‚=¾eý=Ùy =Ãvö=·=ÕÐ=àán=Øâ=Ö„ù=Æe=ð÷=èl=äÛ’=ß9=à±Þ=éuè=òê¢=ØÏØ=ÂД=ÀtJ=Âöä=»[½=´¤‘=ÙµÀ=ðý0=àÀÅ=Áî=ňU=¶ì=¬(=°ÄL=Äq=ºbÿ=çIh=Ï’)=ÁvÔ=Û<Í=ÐN¸=Éá =ºC=±.Ò>2ü=öYm=È7 =¯ü‚=›dÝ=“ÞW=˜¨=£Ï=©äÛ=²tQ=ÀB‘=ÃŽv=È\=Ãq¦=Ä?=»$6=Á´ª=Ì¥å=Ö³í=È8p=Ì:W=é¹0=Òÿ•=±=Þ:=Þ!ï=Ò—¯=åñà=à½ö=ð R=òZ=ÂKñ=½>=½%Œ=àž‡=÷Ñ%=¾-y=Øiÿ=Ò¿@=Ñ$=Üû9=ðcÆ=þ·£=È.‘=Ò³²=ð)‹=Ýâ¼=ÐàÉ=Ó·×=Ó·=×´ñ=¸=+þ=ï­>»=Ø.@=ΤÁ=Ô[J=ùwÓ=ýM2=Ð.{=äj=ë=é8Ë=Ü,=Û¯=ç›6=äν=Ý‘=Ñ=ÂÒë=Ä ¥=Äi.=Úk;=ÏFð=Ê<=ÍZ`=à~s=äO=î%â=Ó¶²=ÉZÁ=Ú4ê=à‰{=ôD‰=Þ(=år=éHå=Í0=ÅdQ=Þµß=â€=âÀû=ï%m>÷=üN2=ãX=Þ­R=Ø=¹=ìH@=Úú=Ñ$)=ë‰j=ú®Ú=ØAú=âÁÚ=óÐA=ã|Ö=Þϧ=óóŒ=ó/Ï=ØWÃ=ȳe=ºHë=Ê%È=Íp==ÃU^=Å‚¡=Í:‚=µ_‘=£ -Ì>ÃÀ>zt>²¶>³#=ÿ`ö>ÿ>¨=ý÷>}˜>ju>Ù–>s»=èÒS=ÖžÀ=´õ==×!f=èÓÜ=Éþˆ=Î_U=Ý ó=éFQ=ñq=ËY^=‹ -=²óZ=Íþ±=æVì=Ôt=Õê‡=îàs=øƒ>2o=éá=ãØò=ãe”=ë$1=ö„#=Éá×=º³=ÃA©=ÑY=êæ=ø9”=þj =×]=ÚU=á0=Éd3=»Ë×=Ü0 =Õø§=ÀËÞ=Ý‘X=ñˆÇ=Ä‹@=ÆÒ`=Ýò\=âà =æë°=øF=ù©ë=ðEU=ðTõ=ðsÕ=ÿý²=ý$=Úœë=è²c=øá(=ð,Ÿ=ì?=ÚCŽ=Þb”=ãói=ÛÛ6=ÓB =”çð=¯Êv=Ø;0=ß_Y=ãy9>ñ>F=ýˆÁ=èÖ`=ßæð=Öñ·=Ó'L=Ìáò=¿Ô=¹tp=¸®=Èv=耢=ÜLË=Õ+@=Ôú"=Ï,V=Â)?=æ¿=ú­=ÞÏ=à]Æ=æ^W=ìs*=ïòÕ=ÝDæ=ÜÂò=ÜÁë=Öš=ÒÕ-=ÛØ$=Øíó=Ñíé=À1†=µp=ÆAg=Ì®=Ùé—=ð_=ÿ=š=íûç=ø.,> Z =ûfà=ès¥=ü =ø!º=ê 7=ï­=ó\¦=ü8€=÷tm=éä2=ãƒß=ß^x>:>dž=èè =ãe[=߬H=ñ–=ì˜=ß#Ð=ß0=ß>=çI4=ä&ð=Ýlm=ï+„=øÑ×=æOŸ=ô› > -‰>?>è> ²>3Í=îG> ˆÔ>ö >(×> :>¶|>¶>[(>…€>ºù=þ0G=éáÃ=æ">À>gƒ>#>"ÛM> ø&>QÍ> -S`> =ýÅ¥=øXË=à›\=àõ“=áf=ÿ&G>™Ò> -óË>*z>Ýt=ì] =æu=ß(o=é.P=ð…=ïã¶=ñêK=øÊí=óMÃ=ï³ë=å×o=èÅ=îf±=î'#=îЙ>ëQ>¡€=ÿ…>óÛ>™ =ìäF=ð›q=ö9#=Ú¡é=ÑÂ=ɬ=â9T=þÖ=ï=ñØñ>Lž>ì›>%…=ï5É=í¸=ôhm=ú9=üí•=Û=æÏ>d=çí=Ù¬=úöË=è X=ÆPñ=Ò.=Ø>l=ß@.=ß…P=ßw=ìuf=õyí> Jò=ó?:=ÕËà=äÌG=í(T>W=û[=÷ÏÅ==ñnÑ=÷Ò”=ý=ÿ†Ë=ö§c=ýY>A›=ôï==î›9=íúx=úm>Ì>aW> -”{>÷Ú> n´>{½>›Z>?g>;>Œ…=ý?J=üú> El>–J> £>=ò’­=ú»•>žÞ=ô’ä=û>—>Y=ú*Z>ñ­>6ò=ú -=ô%²=ð=ÏNT=Ù™æ=èEä=ü®>N§=øÔÔ=ïìJ=èXÈ=ßÛÃ=ðÖt>q±> ^>*=ø;°=û{ý>Jî>%²>µ*=Þ,=æq=î¬O=õé)>„O>ÌÍ>=í²Ã> >í=Üj=Ûåy=à\ >pÑ=ø‡š=ëÝw=äñ=áÎ{=Ûd©=ù>!N=ó•Ñ=çà¥=ÓÊ=ñd=ü}=ûµ=îµ=â=ê0e=÷ô>>}Ì>î>>ùø>…Ö>‹{> û=únœ=õ›=ñ4•=ñœR=éme=ØS=ã'ˆ=ê¸>rå>b>ý>µÎ>|o>å>—Ñ=÷¬a=ç°J=áÈ -=Öߌ=îÈ=õ_ =çA$=ïàÛ=÷gÓ=Úlä=Û,!=ç;·=ì…Ý=ì”Ð=ÆUF=ÔÇ’=æÐU>2 >v¡>ÅS>ám>ªÔ>­§>°> z„=ýÌ÷=÷Ôð>âù=ï˜=Ý$ç=äºØ=ïdØ>q=ùnÍ=ö!>¸½>væ>¹ø=í p=ã#ì=˱T> è>£ß=ëÚ9=çÑZ=ã?“=ꛇ=íˆ)=ó—x>:> P0=âÚ÷=éÓ&=òèÊ=ëš=ê3Õ=êÚ>pÞ> ¤,>ì^>Ý=ùMG>;Á>|A=ðÁØ=ÿR¨>6p=ÿãb>rÈ>µ#>ü4>å­> #Ö>0¼=ö=ö‘>=ö¥º=ö@Ó=ãk_=ï>§> g&>}»> +'>)‡=÷i¿=ñ»=éµ=× -=æ =ï*=ß6÷=펲=þƒˆ=ã'==ã¡j=ö¬d=âI]=Ø| =þ~ö>„—>Ùî=î =ìü=ýý7=ý +=ùñO=Îô=Ùó=æ¥Ä=óó¨=ñÐ{=íY=ܼ¯=Ø' =äü*=å =æ¹=æsç=Ý;‰=ÎOe=ÙÞ =乤=þ€Ÿ>‹o>k=ï"E=ãï‚=×Wš=Ñ%õ=Ôiw=çŸ=í‹7=ícN=×q=ÏÒ±=Ç‚’=Ö@¼=×[†=×;H=ó»„=ý‡§=îäF=å¾ß=ßFÍ=æÚŠ=ï«c=þXÈ>€>W=îãÐ>M>£0>)z=ñ,`=ÖÙá=äJ=òlÑ>3Ñ>õã>ƒj>€C> M>èÅ>ö¿>oî>àŽ> ð§>²> DK>7^>¥Ô>´>> ùP>•*>\´=ÿ~k>Áæ=ú"Ë=ô‰À=æÍ÷>¾> -1Ï=Öâú=Õ½g=ÖV=ó‚(=õLî=õò·=õøf=ö'=ýîç=ÿD=þ°>†ô>!~>üä>{=øÞ=ÖÇ=ËN=Ì7=îc-=îJB=ïÔ=îÑk=çÚÓ=ß=ç:Z=áÄ=×gg=Ü =äŠ=ÿ2¨=õï=ïáâ=ç\ê=ø9>ž> >‰¢=öÇš>;˜>p=ö´H=綯=àx>>F =ú¦ð=î”n=æõE=î1„=ÿ_ò=ó¸Z=ï‰î=÷.=ø<=ö-Ê=ß³=翸=ïRN>ÐÃ>79=ÿ\¨=䪂=Øð¶=ÇJb=×ÇG=à‹i=çw9=úQ‘>Î=Ç>Ü=Ò=ÞÅ¥=íÊ8=ñÛÇ=ö:j>YÄ>s=öJt=ܤ}=й©=í“'=ökÏ=ýÏ&>ÚH>¦÷> -ÚQ=øõ5=ý^Ø> =>¨>D>9=ü×=óxo=ÖÓ=ÛAŒ=Þ£=îƒæ=ù î>lJ=øƒí=ûý>°ß=Ð5 -=Ò¼> ¥> Q‘> 7;=ïœÄ=ô:l=÷à=÷w=ó¸¢=îîc=؆…=ÅKm=§HÍ=Ε=Ù@Š=ß z=ÍxÍ=ÈëX=Ïn½=ÎrÌ=Ñ•s=ðÊ=õh4=ø9=÷4i=ôÒn=ðnK>¶>;˜=ðÏ=ø—’=ôÊ”=éTC=Øg"=Ô«+=éò¡=ó‰u=ù=ñù¾=á~j=Ñm>#>T´>6Þ=ß–=ìàn>öš=ð¶¾=î =ù¸Œ=ÛÙ\=׺|=ðéë=õT·=øÆ==éÁû=á’=ÙÔÎ>Ê>‡D>›>î=ÿÍ«=ûh6=ô&V=ö5 =ûJê=è_¼=ê&D=ûÛ@=ï]=ê2×=ãæ:=ã=ßuŽ=²¨R=äÉ>X¯> ò>‹ò>°ê>á©> ̉> CD> -Ð<>2[>–N=ü´G=ïÇ'=òUœ>1=þÍW=üª=õ…5=ïq±=ïÂ=ýûñ=ýd=þ…Ò>ÅC> -{>ò¶> ‚>½ƒ>õ=é‡U=åÒ=抚=ß„‹=ñ1>âW>Û>Ð>Lÿ> -> -S½=ïB‚> k> ’Ì=÷¬M=øÚá=ûdï>v>í—>„&=ðO¹>æÈ> «o> Z>u`=ñ‚u=Øú_=ì$>„=ïXÄ=éºE=áAh=á -Ñ=ྉ=â/(=ÛYË=ÝÕ«=æ}d=ÛíW=Ûöž=áú¹=ã$=èÈÚ=õPH=ù"P=ùj=ñ‰Å=ó²:=ñol=ãòC=ó\Â=÷·¦=áýÇ=ë—-=î¬%=à%«=êam=ñÕK=ä&=îC)=ôG=üÏ=ït=å6ú> -ü>Ðò=üG=ýmØ>”<>[5=å½ø=÷ñž>µž=æq=òÈ/>1+=é è=ñI=þÓŽ=ïU*=òd|=÷d½>†½=ûeí=Ý~>>“=ôy'=ä'«=ð4>SE>ÛÉ>j=ö‡> ˜Õ>Z=çŸñ=ø©‰>‘>*X=õÓë=õ›w>\r> ê>Þ'>>Ú> ŽŽ>:=ì5=䑶=éeü=ùï±=þÈZ=ôK4=×»á=Ø =æR±>hL>t¸>ìg=ê¼=êäS=èö0=èdþ=õ.=üOû>Y_=ñB=ì³ =ìü=íÎW=é[E=Ýñ¥=úîè=úŠ»=äCÏ=Õ «=Þ@~>i¢>õP> Ä>ë=ïœÓ=õ‹>VW=÷©F>"m>ýä>u1>ÒG>‡=û;0>$„>BZ=ñ=ìS=ìµ3=ö>õ=öóS=ønŸ=âB(=àIR=åiù=î9Ù=ê @=äû=åŠB=ðîn=û™>›¡>´©=ú„<=ïæ}>‰2>5=â%î=ûX> -Gp=ù›&=û Ö=úÀž>’=ûf»=ù9=úí5=ûF=úGˆ=óJ.>Æý> ¤ì>rE=Ô΃=Íß¹> ƒ=î Q=Ø„$=×Kâ=ÞÛ=ìõ>p–>¸ > (¥>(=ñx¡=åOl=ïÓ=üé=ö&l=ì¿=Ú/=ÕÐõ=Ü =Û™ç=×=Ñä*>t=ù† =ð#ó=ðLÚ=Ùìh=ÇQæ=ÜN,>Ü%> Ù>Aª> þ^>à]>$a=Ëc=´š =ÉiÌ=ï!{=ò=ÃËÊ=Êjj=Ýb7>g =óåœ=ùTÎ=òs›=ÿ4û=ðKÆ=Ú1=ô,Í=ø7ø=ýÀR=É}=Ü}ª=ê÷‘=Æ~l=ëä3=þd> -Ž >1)=ÿZG>š¾=öZ\=ù“ > ">±=ùsP=à0=óA×=÷x>²o=õ¢=âÑ2=ÚƒC=Û¹j=òjB>-8=ÿt}=ö² =õß=ÿÍI=ÿ‘‡>ÆP> -mK>Y‚>uÏ>íå=ã´=ਪ=äì†> B> V=ù.R>&¯>¿x> ·>õT=ÿ¿^=ð/Ë=ì"¹=Ú«S=Ï'=Ú¹=êŽ=ø>”Ô> ]Ï=ÿ1ý=áíò=ü@…=÷AŽ=⌀>*;> -vÃ>Dæ=ìG¬=öhû=ø«Ò=çì=ì'ù=÷^=òDµ=âe˜=è‰ð=òDµ=äð»=×ò-=Ù•z>ñi>>=ö*M=Ó“û=Æï=Ƹ=Ùÿ=×λ=ÎÖ=øµ=ù+Ñ=à -M=µqw= Ì=̯¿=ð™=çu=æW1=Öþ_=åSÏ=ë9y=ìê_=ì[=ð_=âYˆ=Ãn}=ÓsË=ã¥^>\ù>)­¢>:…å>Ä:>Wá=ñ®¦=ËSø=Ázw=ÎÐ=Úù³=Ð4Á=âO=ëű=ê(=ôÓª>*=ùˆ~=Ïrb=Íæ =à¯T=ø¼O=÷§S=èÂý=Þüš=³×ç=­£=è0=Ú*<=Ç(<=¹c˜=ì3’=ýØ=õ…´=ât%=úÒ©>2Ö>ZØ> -º>>¶=î°è=ò¶å=öžY> ¢È>-’=ìä&=ÚÉ>=Æ|n=Ê(Í=Ю=»YÑ=Ì E=Õh‘=Üè=Ïø=áé=öDŒ=Ï\/=Èï=É|@=ÓÖ=Ô÷’=ÖU =Ïé6=Ñns=׋Ì=ä?Ð=øÞ=ï2§=Û¼Ú=áÌ =íLü=îuä=ñz> Š> â=ýÊ>‘=óÍw=ìd=ÞŽ¹=¯—¬=Ƀß>{™>dX=û!W=âþ=ûIþ> -Ü:>ïc=ú =è´x=ÜK$=ÃQ/=Ý þ=ÐIz=¯`$=ÁÈ{=Ú"¼=éÊù=èÐU=ÁhD=£ñ¿=¬‡À=õ·•=úõP=ò"ý=½L†=·¶¤=Ëy =×÷¾=óÌ=ío„=×mD=ÙV=ÝÅ…=áB¨=ñà->´f=þ0ƒ=Ø°"=â–°=ÑX=ÍÄ=Úcr=Îß=Ö]ô=ãÙg=å"†=î_§=ô[£=ÕÃÉ=Óéd=Ý Ó=æXï=ã;é=àö6=Üs =ȤF=ÏXä=Ücw>$;=àà=Ù¡=æM=Ýé'=Ø\>=о{=ßœ=¸*½=°^ý=ͯR=êw@=çù=æ=ÑF¹=Þ¢=¸Ër=Ðz=û =ñ>=ßLL=ؾí=àîC=δî=Òq2=ò´=ë"W=ÛkÉ=Ï™Î=Ã×"=½Ö¢=Ð1ä=½¯=Æ2Ê=ë›=Ú™¨=ÅŒý=½ˆ=Ùà=Ç´=Âå“=ÖÉ=ãgy=Ê•~=Ëd%=åÚ=Åaí=Г"=Û ÿ=ͪ=įp=ÀIâ=¹_=¾‚†=æ¾R=ÞÎ@=ÛEÉ>wu> òÓ>uA=ç”í=ñ ˜>Lã=þù=ó.[=ÎOA=ºí=¿*_=Óôà=ãu°=ÝŸõ=â m=Ȩ:=¶J*=¹Iì=¶dÍ=²W=ÒÄ=ÒÜ•=Ìfï=À{R=èÁÉ=ç+=Ô4³=Ðv@=Ë"?=ÎYñ=Ëàr=Ùü=Ûq@=Ïë½=Ç.Ë=ç}¶=ì›=ê^=Ãi|=Ëâ=Ú;Ž=ÆdP=ª‡ê=¸kû=ÆÞ¬=µ¸=ض;=àž´=ÛIt=³ô=±mR=¡ ¨=Œ‡==Ý8î=Æÿt=©E…=À]=Ê«»=ÁÌÅ=²›>=™¨#=ÍQ€=ðJ>E(=ä þ=»‹=¦¤l=¶=ÕÚá=ßú®=æ,S=±ü=Ñä=éM¾=Ùh=ÃäÜ=º°Ì=ËC=ʬ¿=®Œ=Ç®~=ë´=Ó‡½=ïRÓ=ü4 =ìM=ÜêU=⮧=óµ$=É&[=·=£©g=¡ï@=³çé=Ó²=Î(A=ëi7=Íg =Ĭ3=Ð#Ê=É'‡=¯ $=ª¡Å=¸NÔ=Íòò=¾P$=}I=‹Ùš=ÌÊ‘=ÎÖí=Âœ¢=Û\û=»{¡=Îw³=ð_Û=½·=×#=ݨ=Ç×f=û9<=Ý «=Ím=ãE]> N0> ëè=ÊÓ=ÁÉT=Çéó=ËÄX=¼“‡=Éäø=ÕÞ¶=Ǻ†=éÔ¼=ñët=¶c=¯Ò=É0=Ç~.=Æ ‚=ÆY.=Õ$u=² =¡±¡=ËÁ =ºTÕ=œ{Ô=©uŠ>Í=Ä0Š=««w=Ã1Í=—Ef=½\ã=Ö¦n=àÁ=– ¯=—6h=­‹’=ΊŒ=éM=Ö"ò=Í×Ì=Öl=ÏËN=ÆŸL=Åbn=¾Yw=Ñ^º=¶›h=Á¥=…O=Ä(a=ÏCI=½â=Ãv%=¥}í={&=ž­Ï=Ȫ)=·4=¥^û=®C=¼í+=°u4=§ç=Ã<õ=Ü7 =¾B=äv=Áõƒ=¶}Q=Ð:Q=¾Øæ=ͽ=ÉÎ=¥Ír=°°¤=¹íL=ÈB“=Ó‹Þ=Øäé=ÂT =¿˜‚=½É‚=»€,=Ô¬î=ʽ=šÓ³=ÈÞ=Ï“º=Ú˜N=볯=íLÉ=ÞV -=Ò|e=­ŸÃ=¾"Û=¸Rž=Áƒ =ßC=ÔöÀ=Åwå=´ñ•=²°=ØS½=×p÷=×z“=æß5=Øô=Ñn‰=ÒŽà=Î }=¯¥á=Ó{=º¶ü=ÉA=ÐT3=ÛE=ÐL =θ$=Ó]==»ù9=·k[=ÜÝ1=ç¤P=Ø®=Ó„•=ÊXú=ÓQã=çóh=á_‹=ÖÖT=·Ë¼=Ò}=òt=÷&D=ù9}=ÀÕ=Ä—Ç=ÅÒª=Ímü=×-m=Æ î=Óñ£=¿%‰=¶-Î=ÒÛ=Å0a=ª?Â=ª&=¿;W=É·ƒ=Àh=‘{=™C{=ɧ=ÈYò=ÂQf=º©a=»­=¶žt=Ê=ÓŸ =ÖÓ¢=à‡Ž=¡ -É=¤µ=Íã=®o=šì/=­ Ý=º}Ê=—wh=³–¸=Ód7=ÐyÙ=ÊÆÚ=îѸ=ä7N=°uþ=ÄñG=É,÷=ÙIø=ÚÑ =¿òƒ=Ù¼=ÎþW=¼·½=§ü>=ÂúJ=ÈN=È=¿Ý=³ŽÙ=ËXë=Í:"=ж$=ÕØå=àë!=Ï¢}=¶(*=ºb<=·=®|ô=»¢ù=á"›=ÝÁ=ÕÊ=çöe=ì¾ =Õˆm=½È=«]H=ÐÇ =÷ ·=Þ%;=×O¢>&=øËR=ÛJ=à’_=é»­=ç:®=Ü =®Ø=²Ç =Û`=áýF=àß=Ç„=³Â}=¸-L=ÆÙ=Ó²Æ=Ðu=ÚFh=®³†=µër=õÕ¶=Ñé«=·¸ß=Ù`=åïÅ=Ä-¢=Ñc=Ô f=Ï,ë=ÅYV=¹vì=Ò©=ÙÕÁ=Ýòº=߈=Ú˜'=ߘ7=·dó=½Þè=à~=à”û=çÞ…=¸š¾=³Q=Ð]ù=Ô[=ær9=ßAÖ=ËÓ™=¼re=Î=ðŸì=èâš=ܘå=é ·=ñ9å=ïÍ.=àJ=Ï´D=Ûºp=àO=Ò_ž=У=Ð}=àäà=Õ•-=ÈdÓ=È€=è6Ï=܈2=Ä·á=É‘4=Ó“=Àí=Çž>=Îfl=Ж=Ã8=Êv-=Ì•¦=Ýûu=Üw=ÃPo=Ø3k=×Ã{=éôè=æZï=ÖŠE=ìÔ=ÿ¶X=Ó›•=ÏÖd=êÉî=ë1|=ê+\=ÎÜ=¿¶Ì=Üßš=Å!1=‰°H=º6â=Ý"Ö=Áñâ=¹û»=ê,=‘=z‡=³—é=½5m=å Ë=èÄ=ï¡y=é,=ã--=Æ<õ=È‚ó=Ù.S=ÚÒ=ر0=Ð0=Ï}A=â‹d=ÙØÞ=Í£?=Ü3)=âœ=Ä(‘=ÆèA=ÖÚ­=ÐÖŽ=Ëàž=Þ{=áGú=àYd=ÙòA=ÕÞF=Æ‘=ÀöX=Àê=µÈt=¡€Ö=É;=Þ³=ÜþØ=Ók€=µ=¿¿:=Çüà=¤‘;=¢d†=³\S=Êe*=ãød=ä7ý=ærž>Ã.>”=ícÓ=ÊØ=»îø=ã=ÞBd=Ø>Ð=ÒGy=ΟÄ=àn«=ÛŽZ=õ§=Íðë=Öòµ=¶a#=²¢=ÌìØ=Ù¤Õ=êXV=ëZ&=êú=Ö}v=×—Ë=ÞÿÛ=ÍÁ(=ÁÔ¯=¶%G=¸În=À¤»=Ñàœ=Ý/ê=Ã(¶=Ç­-=æ{=ÛÀÄ=Ò-—=¹==¹f¥=Úú=Íâ =½®;=¶Ÿ=µ­Õ=½p×=Ã×}=ÏëÃ=¯m­= ‹=Æn=ËïA=ÙF­=ÒÕm=ÏRÎ=á 0=ãç9=ët‚=а©=»È´=²ÅÆ=½hæ=ë£=åü=à½Ý=Ç‹S=ȸì=ßÂ/=Ö]=ÌH¾=৶=ä(=¸yO=¼¤¨=Â(E=êA±=÷ä=ÛsÐ=ØPæ=Ó‘e=Ù ³=Üøç=Ê94=Ò3=å*°=ë0ª=î8ð=Á<=ÆÁä=Ú¼6=Õ™é=ÑñÜ=ìð=êõD=ãè=è•k=í0ÿ=Ô3.=Þ6þ>ÃÑ=ýÒö=ì8¬=ìø=éç0=áñ´=柡=êËY=ãÓ=à }=Ø]Ù=Ób„=Î=òÖi=ÿ ›> S¹=ý`w=ß+l=Þµg=á æ=ñmP=ñá=ð—ç=÷Ñà=øƒµ=ð=è¼™=Þ5/=êß²=ïÈ=ï¢Q=ÛâŠ=Áìî=ÖtÌ=ÚÃï=Â=àQ>ïæ=çðA=ßn>ëÕ=òŒ,=ÜúA>> Œƒ=äw4=õÝÒ>1@=ðá4=ä½È=õD%=òKC=ì¬À=øc«=ø–|=¾W=ЩG=êÚö=ðô=ó#¸=ûÔ©=ðÑ@=àÍð=íí„=ð;=×Wœ=Ôõ=Îw5=Ô×ù=×e=ßÏW=âÌ:=çâî=üíþ>’ï=ú1P=ëf=Ö‚Õ=ÖÍÜ=Ôþ¿=ÄÔË=Ì 3=Õ8g=ÎsÍ=Ϻ‘=Þ6/=Ù‡=Õ6È=ã‚H=çÈÑ=î¯û=ÿtg>¶š=ì =åJ.=å-Š=ä$ï=ä•=ä,3=ظÐ=¯Ôæ=å5>I=ç“=ã!=ã -=Øj -=Ñ•=ê£Ð=ë)=ëJ=å~=â¨ð=È•¨=Ô.Æ=êâ=ð¿ž=ójO>Óx=íl=¶¼£=â,=ò;Æ=ò‰æ>m>¾>=èF2=ÜHS>w)=öÙe=èÔ;=Úœu=Ñ{Ã=µc=Ó¾º=ðQÌ=öÜD=ò¾j=ÞÊö=ãK¯=æÔN=Öûó=áNæ=ÿÃß=úsõ=öû=ÕZÂ=ØA’=ݬ·=é$=íî¯=îzd=çšþ=ÝË¢=êÀh=ôûû>µ¢>Í$=î=æð%=èbD=ö%£=ö/`=ö >=õ‘®=ñ­é=åKb=ôTÞ=þV$=ýÎM=ø`Ô=ìÒW=æ ¬=ãؼ=ì6A=áö#=ÒÍR=åà=éÑ=áÒ“=êÍ=ò†D=ù°8=øÇC=òmu>¹X> ¹>=Õ/’=Óê°=Ùª=ô´–>G=òRw=ë£<=áj^=ùóÂ>6Ù>80>>;£>ˆ]>µ}> ƒe=øÓ€=éyô=èT-=çÞÀ=ù÷>Å >àÆ>¢X>-­=úÑ+=ô…=æX=ÿÅ¢> о=êþº=å#^=å\C=å-z=å=Üê6=èÓ4=ý©è=÷~û=ó†¦=å¹=ñ@=þ(t=ö·¯>ík>É®>‘µ> -©1=õšm=ï£=ä‡ -=õ§ë=ýâ²>W>mO>?Q=ï”=îßx=û[!=ç˜Z=ÙÑq=øG7=ù`‘=ùƒÈ=óï‹=ô§+>·:>¬ÿ>©Õ=è=åØ&=ø[>–¡>„C> t6>±=øxX=ò–4=ò 2=ÿÜí>²>G> nf>AR=øZJ> ˜†>Hû>Ì>i¬=èr><>¡=Èœ=â§=øG>( >gú>[=Þ'ò=ÔRä>Ó%=ø?=æã=æÓ)=êÄÙ=ö>*¨>Ex>BL>2=ö½/=ð'À=ówÅ>—>S>‚=÷Ì =ðå=æ'T=÷íc=ýìÓ=öò=æ6_=Ö¨=ëàY=ñ^=÷7ó=ñ@=ï>B=þ÷V=ÿL=þ¾š>¹>Þ =æ½=þݧ>Cv>¿É> =ýÆV> µz>C#>±Ó>g.=õèV> -^>5Q=ý˜I>Ɇ>ñæ>t=ø˜o=í¼=> ¥.> @3>µ> Æö> -ÿ8> Cš> > a>-r>ïo> _>yÝ> þ«=÷¹#=ó‡•=ïvÌ>ê> -p=ß™Y=æ=íÃá> û(=ýÆŠ=ç™V=çhs=ò5I>g=騹=ÚR=¾·Ì=Ϲ =Þv§=üÕŒ=ó@?=Þƒ=ؤ=Õ-m=Î>Ú=ÛâZ=æ{ =Öà†=Üø=çÐ=ùÊ=ÿ;°=ÿÛ> \> >J°>>>¨¡=õ™ã=è|Ô=Ïð=ë "=üVO=Õ:‚=㟶=ø?=÷Ï{=øêž=ÿ C=ùf=ö¦ã=ö£Í=öíµ=öÌ > Êf>œ«=öÓ÷>áš>¦²=öë*=þªL>R¿=ÑT(=Ûß=÷^±>ò¶>ÎA>y\> ØÆ>}=îèË=áU‹=ÏÄ>§!>]9=ææ=òS=ød=ÿüÅ>¹T>çŒ>™ø>¹>Qî=ö[˜=äã=øל=ü…á>f1> ¥>1=ïPy=÷˜=ðÛç=ÞÏ=Î}G=É»=ç9©=ÕšŒ=ÆÂÕ=ϳ=·t=ÏT¿=Ö=ãÂh>D=÷o =î¡Ý=ßÐr=ø(M>°O> > Ö>¬G>âÜ> B=øyË>¼ß>ú>RQ>1>–$=úsI=ÿ·I>Xö>* >ç>Í=ë„È=ßmÐ>m)> -ì\>t}=ø%³>ÜU>„‘>p>ÆÓ>¤±>ή>Ù=çV‚>¾>³›>3&>Ÿ°>L > Ý~>2\>^>!Ë>4¶> Ml>Šn>¨±> t¸> ùñ> Wj=þÙ˜=÷°‹=ù1æ=êßï=âm“> ºÍ>7‹=ðãö=öÙ4=þt>Å>vò>Í®>{Ô> °>f>œ·>ºý>Ñì> Ä>i\=ù*N>]´>܃>lº>}Á>b>R>‘\>™y>#>þ=ó†=ë>Ýš>VÒ> -aÁ=þŠ°=Ò =ó =øì¥=òõL>ùd> [É>$}>{•>ÁR=ùÔÄ=õ°=ë’=㟕=ð3Ò> à©>q¿> -4ù=ɵñ=ïDz>™>Äá>>Ì4> ªQ>šì=ý*>‘¶>mÀ>¢> êÑ> jQ>ø>“”>:e>z$>+=ÿãQ>@Ã>‘h>´I>3Û>(÷> Q`>´á> :—>Ê=ú—=ò´ô=Ôi%=÷c>N> õò>]Ä=õØó>„2> -Y>d>½‰> -¸+> jÏ>Åë> >1æ>ž…> -º> *=êú=ãZ±>"¡>ý”>d]>Rw>¥>l°>!Õi>Dh>xÄ>¨±>ø:>0&A> -ö> B>''P>vN>}> b[> u>¹u>/©î>+Ú$>'ß>ìå>.”>F[…>1Ì@>D¡>_·œ>^­>M>#äò>TŸ.>S­^>8~>O$>Oá>0z>0ï¼>4ÂJ>FRn>=¥H>:òŽ>_Î>Hcè>9W> ,Õ> Ž> ¢‚>-™À>6uƒ>Bø>D¦> Ë>>)¶>F4Ì>TÇ>g,ª>Yc$>OP†>:ˆª>=¤>CŸð>QÉŒ>1sx \ No newline at end of file diff --git a/templates/fluxed_sky_580U.fits b/templates/fluxed_sky_580U.fits deleted file mode 100644 index d80fd119d..000000000 --- a/templates/fluxed_sky_580U.fits +++ /dev/null @@ -1,231 +0,0 @@ -SIMPLE = T / Standard FITS format: NOST 100-2.0 BITPIX = -32 / No. of bits per pixel NAXIS = 1 / No. of axes in image NAXIS1 = 27284 / No. of pixels EXTEND = T / FITS extension may be present BLOCKED = T / FITS file may be blocked COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 CRPIX1 = -945. / Reference pixel CRVAL1 = 5817.06402 / Coordinate at reference pixel CDELT1 = 0.03482 / Coordinate increment per pixel CTYPE1 = 'WAVELENGTH ' / Units of coordinate BUNIT = 'FLUX ' / Units of data values DATAMAX = 125.988227844 / Maximum data value DATAMIN = 0.0358567461371 / Minimum data value ORIGIN = 'ESO-MIDAS' / Written by MIDAS DATE = '2002-10-07T13:36:05' / [UTC] Date of writing FILENAME= 'fluxed_580U.bdf' / Original file base-name MIDASFTP= 'IMAGE ' / MIDAS File Type OBJECT = 'MERGED_SKY1_REDU' / MIDAS desc.: IDENT(1) RA = 222.760417 / MIDAS desc.: O_POS(1) DEC = -23.49167 / MIDAS desc.: O_POS(2) EQUINOX = 2000. / MIDAS desc.: O_POS(3) DATE-OBS= '2001-06-21' / MIDAS desc.: O_TIME(1) MJD-OBS = 52081.1692485 / MIDAS desc.: O_TIME(4) TM-START= 14623.0704002 / MIDAS desc.: O_TIME(5) EXPTIME = 3600.002 / MIDAS desc.: O_TIME(7) COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT FTU-1.39/2001-09-26T12:55:59/Default.htt INSTRUME= 'UVES ' / MIDAS desc.: INSTRUME(1) OBSERVER= 'UNKNOWN ' / MIDAS desc.: OBSERVER(1) TELESCOP= 'ESO-VLT-U2' / MIDAS desc.: TELESCOP(1) RADECSYS= 'FK5 ' / MIDAS desc.: RADECSYS(1) AIRMASS = 1.201 / MIDAS desc.: O_AIRM(1) HISTORY Converted from: merged_sky1_REDU.fits \HISTORY COMPUTE/IMAG comb_row = (row_1_5+row_26_30)/2 \ HISTORY EXTRACT/IMAG out = sky_580U_all.fits [5850,1:68\ HISTORY 34.992,1] HISTORY EXTRACT/IMAG out = sky_580\ HISTORY U_all.fits [5850,1:6800,1] HISTORY Converted from: ../files/sky_580U_all.fits \HISTORY \HISTORY COMPUTE/IMAG fluxed_580U = mergU/3.60000E+03*5.20000E-01/3.6400\HISTORY 0E-01*1*responseU*extiU \HISTORY OS-EXPOI= 41882 / OS expoId PI-COI = 'UNKNOWN ' / Name of PI-COI LST = 62341.612 / 17:19:01.612 LST at start (sec) UTC = 14577. / 04:02:57.000 UTC at start (sec) CHECKSUM= 'ZnT8gmR8ZmR8dmR8' / ASCII 1's complement checksum UT = '04:02:57.000' / UT at start ST = '17:19:01.612' / ST at start IMAGETYP= 'OBJECT ' / Observation type FILTER1 = 'FREE ' / Filter 1 name FILTER3 = 'SHP700 ' / Filter 3 name GRAT2 = 'CD#3 ' / Grating 2 name WLEN2 = 580. / Grating 2 central wavelen DATAMEAN= 280.038959 / Mean Pixel Value DATARMS = 1049.346441 / RMS of Pixel Values DATAMED = 251. / Median Pixel Value DATAMD5 = 'a10b3903f132d3fb0fa69bc5f227e3f8' / data MD5 signature PIPEFILE= 'r.UVES.2001-06-21T04:03:43.070_0023.fits' / Filename of data product HIERARCH ESO OBS DID = 'ESO-VLT-DIC.OBS-1.7' / OBS Dictionary HIERARCH ESO OBS OBSERVER = 'UNKNOWN ' / Observer Name HIERARCH ESO OBS PI-COI NAME = 'UNKNOWN ' / PI-COI name HIERARCH ESO OBS PI-COI ID = 563 / ESO internal PI-COI ID HIERARCH ESO OBS TARG NAME = 'PKS1448-232' / OB target name HIERARCH ESO OBS GRP = '0 ' / linked blocks HIERARCH ESO OBS NAME = 'PKS1448_DIC1_346_580_2x2_3' / OB name HIERARCH ESO OBS ID = 104112 / Observation block ID HIERARCH ESO OBS PROG ID = '166.A-0106(A)' / ESO program identification HIERARCH ESO OBS START = '2001-06-21T03:59:31' / OB start time HIERARCH ESO OBS TPLNO = 2 / Template number within OB HIERARCH ESO TPL DID = 'ESO-VLT-DIC.TPL-1.4' / Data dictionary for TPL HIERARCH ESO TPL ID = 'UVES_dic1_obs_exp' / Template signature ID HIERARCH ESO TPL NAME = 'Dic1 Observation' / Template name HIERARCH ESO TPL PRESEQ= 'UVES_dic_obs.seq' / Sequencer script HIERARCH ESO TPL START = '2001-06-21T04:01:52' / TPL start time HIERARCH ESO TPL VERSION = '@(#) {Revision: 1.1$}' / Version of the templaHIERARCH ESO TPL NEXP = 1 / Number of exposures within templat HIERARCH ESO TPL EXPNO = 1 / Exposure number within template HIERARCH ESO DPR TECH = 'ECHELLE ' / Observation technique HIERARCH ESO DPR TYPE = 'OBJECT ' / Observation type HIERARCH ESO DPR CATG = 'SCIENCE ' / Observation category HIERARCH ESO TEL DID = 'ESO-VLT-DIC.TCS' / Data dictionary for TEL HIERARCH ESO TEL ID = 'v 1.370 ' / TCS version number HIERARCH ESO TEL DATE = 'not set ' / TCS installation date HIERARCH ESO TEL ALT = 56.327 / Alt angle at start (deg) HIERARCH ESO TEL AZ = 84.086 / Az angle at start (deg) S=0,W=90 HIERARCH ESO TEL GEOELEV = 2648. / Elevation above sea level (m) HIERARCH ESO TEL GEOLAT= -24.6254 / Tel geo latitute (+=North) (deg) HIERARCH ESO TEL GEOLON= -70.403 / Tel geo longitute (+=East) (deg) HIERARCH ESO TEL OPER = 'I, Condor' / Telescope Operator HIERARCH ESO TEL FOCU ID = 'NB ' / Telescope focus station ID HIERARCH ESO TEL FOCU LEN = 120. / Focal length (m) HIERARCH ESO TEL FOCU SCALE = 1.718 / Focal scale (arcsec/mm) HIERARCH ESO TEL FOCU VALUE = -29.894 / M2 setting (mm) HIERARCH ESO TEL PARANG START = 99.61 / Parallactic angle at start (deg) HIERARCH ESO TEL AIRM START = 1.201 / Airmass at start HIERARCH ESO TEL AMBI FWHM START = 0.76 / Observatory Seeing queriedHIERARCH ESO TEL AMBI PRES START = 744.48 / Observatory ambient air prHIERARCH ESO TEL AMBI WINDSP = 0.92 / Observatory ambient wind speed queHIERARCH ESO TEL AMBI WINDDIR = 334. / Observatory ambient wind directio HIERARCH ESO TEL AMBI RHUM = 4. / Observatory ambient relative humi HIERARCH ESO TEL AMBI TEMP = 12.31 / Observatory ambient temperature quHIERARCH ESO TEL MOON RA = 53945.992333 / ~~:~~:~~.~ RA (J2000) (deg) HIERARCH ESO TEL MOON DEC = 222334.76394 / ~~:~~:~~.~ DEC (J2000) (deg) HIERARCH ESO TEL TH M1 TEMP = 9.58 / M1 superficial temperature HIERARCH ESO TEL TRAK STATUS = 'NORMAL ' / Tracking status HIERARCH ESO TEL DOME STATUS = 'FULLY-OPEN' / Dome status HIERARCH ESO TEL CHOP ST = 0 / True when chopping is active HIERARCH ESO TEL PARANG END = 102.519 / Parallactic angle at end (deg) HIERARCH ESO TEL AIRM END = 1.471 / Airmass at end HIERARCH ESO TEL AMBI FWHM END = 0.61 / Observatory Seeing queried from ASHIERARCH ESO TEL AMBI PRES END = 744.25 / Observatory ambient air pressure qHIERARCH ESO ADA ABSROT START = 24.03156 / Abs rot angle at exp start (deg) HIERARCH ESO ADA POSANG= 0. / Position angle at start HIERARCH ESO ADA GUID STATUS = 'ON ' / Status of autoguider HIERARCH ESO ADA GUID RA = 222.7138 / 14:50:51.3 Guide star RA J2000 HIERARCH ESO ADA GUID DEC = -23.58867 / -23:35:19.2 Guide star DEC J2000 HIERARCH ESO ADA ABSROT END = 34.6718 / Abs rot angle at exp end (deg) HIERARCH ESO INS ID = 'UVES ' / Instrument ID HIERARCH ESO INS DID = 'UVES_ICS' / Data dictionary for INS HIERARCH ESO INS SOFW ID = '$Revision: 1.93 $' / Instrument SW HIERARCH ESO INS SOFW MODE = 'NORMAL ' / Simulation mode HIERARCH ESO INS PATH = 'RED ' / Optical path used HIERARCH ESO INS MODE = 'DICHR#1 ' / Instrument mode used HIERARCH ESO INS MIRR1 ID = 'FREE ' / Mirror unique ID HIERARCH ESO INS MIRR1 NAME = 'FREE ' / Mirror common name HIERARCH ESO INS MIRR1 NO = 1 / Mirror slide position HIERARCH ESO INS OPTI1 ID = '1 ' / General Optical device unique ID HIERARCH ESO INS OPTI1 NAME = 'OUT ' / General Optical device common nameHIERARCH ESO INS OPTI1 NO = 1 / Slot number HIERARCH ESO INS OPTI1 TYPE = 'FREE ' / General Optical device Element HIERARCH ESO INS SLIT1 NAME = 'FREE ' / Slit common name HIERARCH ESO INS SLIT1 NO = 1 / Slide position HIERARCH ESO INS SLIT1 WID = 0. / Slit width (arcsec) HIERARCH ESO INS SLIT1 LEN = 0. / Slit length (arcsec) HIERARCH ESO INS DROT MODE = 'ELEV ' / Instrument derotator mode HIERARCH ESO INS DROT RA = 145102.5 / %HOURANG RA (J2000) pointing (deg HIERARCH ESO INS DROT DEC = -232929.999995 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS DROT POSANG = 0. / Position angle (deg) HIERARCH ESO INS DROT BEGIN = 151.834 / Physical position at start (deg) HIERARCH ESO INS DPOL MODE = 'OFF ' / Instrument depolarizer mode HIERARCH ESO INS DPOS NAME = 'OUT ' / Instrument depolarizer slide positHIERARCH ESO INS DPOS NO = 1 / Depolarizer slide position HIERARCH ESO INS ADC MODE = 'OFF ' / ADC mode HIERARCH ESO INS ADCS NAME = 'OUT ' / ADC slide position HIERARCH ESO INS ADCS NO = 1 / ADC slide position HIERARCH ESO INS ADC1 MODE = 'OFF ' / ADC mode HIERARCH ESO INS ADC1 RA = 145102.5 / %HOURANG RA (J2000) pointing (deg HIERARCH ESO INS ADC1 DEC = -232929.999995 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS ADC2 MODE = 'OFF ' / ADC mode HIERARCH ESO INS ADC2 RA = 145102.5 / %HOURANG RA (J2000) pointing (deg HIERARCH ESO INS ADC2 DEC = -232929.999995 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS FILT1 ID = 'FREE ' / Filter unique id HIERARCH ESO INS FILT1 NAME = 'FREE ' / Filter common name HIERARCH ESO INS FILT1 NO = 13 / Filter wheel position index HIERARCH ESO INS OPTI2 ID = 'DIAPHR.27MM' / General Optical device unique IHIERARCH ESO INS OPTI2 NAME = 'OVRSIZ ' / General Optical device common nameHIERARCH ESO INS OPTI2 NO = 3 / Slot number HIERARCH ESO INS OPTI2 TYPE = 'SLIDE ' / General Optical device Element HIERARCH ESO INS MIRR2 ID = 'DICHR#1 ' / Mirror unique ID HIERARCH ESO INS MIRR2 NAME = 'DICHR#1 ' / Mirror common name HIERARCH ESO INS MIRR2 NO = 3 / Mirror slide position HIERARCH ESO INS SHUT1 ID = 'TSH ' / Shutter ID HIERARCH ESO INS SHUT1 NAME = 'Telescope shutter' / Shutter name HIERARCH ESO INS SHUT1 ST = 1 / Shutter open HIERARCH ESO INS SHUT2 ID = 'SPSH ' / Shutter ID HIERARCH ESO INS SHUT2 NAME = 'SPHERE_SHUTTER' / Shutter name HIERARCH ESO INS SHUT3 ID = 'TSH3 ' / Shutter ID HIERARCH ESO INS SHUT3 NAME = 'D2L_SHUTTER' / Shutter name HIERARCH ESO INS SHUT4 ID = 'TSH4 ' / Shutter ID HIERARCH ESO INS SHUT4 NAME = 'THAR_SHUTTER' / Shutter name HIERARCH ESO INS SLIT3 WID = 1. / Slit width (arcsec) HIERARCH ESO INS SLIT3 Y1FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y1OFFST = 4750. / Offset in Formula HIERARCH ESO INS SLIT3 Y1RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 Y1MIN = 0.062 / Minimum slit width (arcsec) HIERARCH ESO INS SLIT3 Y1MAX = 5.572 / Maximum slit width (arcsec) HIERARCH ESO INS SLIT3 Y2FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y2OFFST = 4560. / Offset in Formula HIERARCH ESO INS SLIT3 Y2RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 Y2MIN = 0.05 / Minimum slit width (arcsec) HIERARCH ESO INS SLIT3 Y2MAX = 5.513 / Maximum slit width (arcsec) HIERARCH ESO INS SLIT3 Y1ENC = 10640 / Slit Vertical top motor absolute eHIERARCH ESO INS SLIT3 Y2ENC = 10426 / Slit Vertical bottom motor absolutHIERARCH ESO INS SLIT3 LEN = 12. / Slit length (arcsec) HIERARCH ESO INS SLIT3 X1FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X1OFFST = 2381. / Offset in Formula HIERARCH ESO INS SLIT3 X1RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 X1MIN = 0.087 / Minimum slit length (arcsec) HIERARCH ESO INS SLIT3 X1MAX = 15.752 / Maximum slit length (arcsec) HIERARCH ESO INS SLIT3 X2FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X2OFFST = 2307. / Offset in Formula HIERARCH ESO INS SLIT3 X2RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 X2MIN = 0.064 / Minimum slit length (arcsec) HIERARCH ESO INS SLIT3 X2MAX = 15.833 / Maximum slit length (arcsec) HIERARCH ESO INS SLIT3 X1ENC = 6548 / Slit Horizontal left motor absolutHIERARCH ESO INS SLIT3 X2ENC = 6479 / Slit Horizontal right motor absoluHIERARCH ESO INS FILT3 ID = 'BS4 ' / Filter unique id HIERARCH ESO INS FILT3 NAME = 'SHP700 ' / Filter common name HIERARCH ESO INS FILT3 NO = 4 / Filter wheel position index HIERARCH ESO INS DET6 NAME = 'Red exp. meter PMT' / detector name HIERARCH ESO INS DET6 CTMIN = 31. / Minimum count during exposure HIERARCH ESO INS DET6 CTMAX = 89. / Maximum count during exposure HIERARCH ESO INS DET6 CTMEAN = 56.7 / Average counts during exposure HIERARCH ESO INS DET6 CTRMS = 8.65 / RMS of counts during exposure HIERARCH ESO INS DET6 TMMEAN = 0.49 / Normalised mean exposure time HIERARCH ESO INS DET6 CTTOT = 202521. / Total counts during exposure HIERARCH ESO INS DET6 UIT = 1. / User defined Integration time HIERARCH ESO INS DET6 OFFDRK = 0. / Average dark background counts HIERARCH ESO INS DET6 OFFSKY = 1. / Average sky background counts HIERARCH ESO INS SHUT6 ID = 'REXS ' / Shutter ID HIERARCH ESO INS SHUT6 NAME = 'Red exp. meter sh.' / Shutter name HIERARCH ESO INS SHUT6 ST = 1 / Shutter open HIERARCH ESO INS GRAT2 ID = 'CD#3 ' / Grating unique ID HIERARCH ESO INS GRAT2 NAME = 'CD#3 ' / Grating common name HIERARCH ESO INS PIXSCALE = 0.182 / Pixel scale HIERARCH ESO INS GRAT2 X = 2048. / X pixel for central wavelength HIERARCH ESO INS GRAT2 Y = 2048. / Y pixel for central wavelength HIERARCH ESO INS GRAT2 FRML = 'ENC=OFFST+RESOL*ASIN(WLEN*GRV/(2*COS(ROT)))' HIERARCH ESO INS GRAT2 OFFST = 1215287. / Offset in Formula HIERARCH ESO INS GRAT2 RESOL = 15000. / Resolution in encoder steps HIERARCH ESO INS GRAT2 GRV = 0.0006 / Grating grooves/nm HIERARCH ESO INS GRAT2 ROT = 22.668 / Grating rot angle HIERARCH ESO INS GRAT2 NO = 1 / Grating wheel position index HIERARCH ESO INS GRAT2 WLEN = 580. / Grating central wavelength HIERARCH ESO INS GRAT2 DISP = 0.1 / Grating dispersion HIERARCH ESO INS GRAT2 ENC = 1378253 / Grating absolute encoder position HIERARCH ESO INS TILT2 POS = 0. / Science camera tilt (pixels) HIERARCH ESO INS TILT2 FRML = 'ENC=OFFST+RESOL*ASIN(2*POS-(MAX+MIN)/(MAX-MIN'HIERARCH ESO INS TILT2 OFFST = 15927. / Offset in Formula HIERARCH ESO INS TILT2 RESOL = -100. / Resolution in encoder steps HIERARCH ESO INS TILT2 POSMIN = -222. / Minimum camera tilt (pixels) HIERARCH ESO INS TILT2 POSMAX = 222. / Maximum camera tilt (pixels) HIERARCH ESO INS TILT2 ENC = 15927 / Camera tilt absolute encoder positHIERARCH ESO INS SHUT7 ID = 'FPSH ' / Shutter ID HIERARCH ESO INS SHUT7 NAME = 'FIBRPROJSHUTTER' / Shutter name HIERARCH ESO INS DROT END = 158.616 / Physical position at end (deg) HIERARCH ESO INS TEMP31 NAME = 'Iodine cell temp.' / Temperature sensor name HIERARCH ESO INS TEMP31 START = 11. / Temperature at start HIERARCH ESO INS TEMP31 STOP = 11.1 / Temperature at end HIERARCH ESO INS TEMP31 MIN = 10.9 / Minimum temperature HIERARCH ESO INS TEMP31 MAX = 11.3 / Maximum temperature HIERARCH ESO INS TEMP31 MEAN = 11.1 / Average temperature HIERARCH ESO INS TEMP1 NAME = 'Temp. blue camera' / Temperature sensor name HIERARCH ESO INS TEMP1 START = 8. / Temperature at start HIERARCH ESO INS TEMP1 STOP = 8.1 / Temperature at end HIERARCH ESO INS TEMP1 MIN = 8. / Minimum temperature HIERARCH ESO INS TEMP1 MAX = 8.1 / Maximum temperature HIERARCH ESO INS TEMP1 MEAN = 8. / Average temperature HIERARCH ESO INS TEMP2 NAME = 'Temp. red camera' / Temperature sensor name HIERARCH ESO INS TEMP2 START = 8.1 / Temperature at start HIERARCH ESO INS TEMP2 STOP = 8.2 / Temperature at end HIERARCH ESO INS TEMP2 MIN = 8.1 / Minimum temperature HIERARCH ESO INS TEMP2 MAX = 8.2 / Maximum temperature HIERARCH ESO INS TEMP2 MEAN = 8.1 / Average temperature HIERARCH ESO INS TEMP3 NAME = 'Temp. table' / Temperature sensor name HIERARCH ESO INS TEMP3 START = 7.9 / Temperature at start HIERARCH ESO INS TEMP3 STOP = 8. / Temperature at end HIERARCH ESO INS TEMP3 MIN = 7.9 / Minimum temperature HIERARCH ESO INS TEMP3 MAX = 8. / Maximum temperature HIERARCH ESO INS TEMP3 MEAN = 7.9 / Average temperature HIERARCH ESO INS TEMP4 NAME = 'Temp. inside air' / Temperature sensor name HIERARCH ESO INS TEMP4 START = 9.4 / Temperature at start HIERARCH ESO INS TEMP4 STOP = 9.4 / Temperature at end HIERARCH ESO INS TEMP4 MIN = 9.4 / Minimum temperature HIERARCH ESO INS TEMP4 MAX = 9.4 / Maximum temperature HIERARCH ESO INS TEMP4 MEAN = 9.4 / Average temperature HIERARCH ESO INS SENS26 NAME = 'Barometer pressure' / sensor common name HIERARCH ESO INS SENS26 START = 743.8 / sensor value at start HIERARCH ESO INS SENS26 STOP = 743.5 / sensor value at end HIERARCH ESO INS SENS26 MIN = 743.5 / Minimum sensor value HIERARCH ESO INS SENS26 MAX = 743.8 / Maximum sensor value HIERARCH ESO INS SENS26 MEAN = 743.6 / Average sensor vlaue HIERARCH ESO DET ID = 'CCD FIERA - Rev 2.69' / Detector system Id HIERARCH ESO DET NAME = 'ccdUvR - ccdUvr' / Name of detector system HIERARCH ESO DET DATE = '09-07-1998' / Installation date HIERARCH ESO DET DID = 'ESO-VLT-DIC.CCDDCS,ESO-VLT-DIC.FCDDCS' / Diction HIERARCH ESO DET BITS = 16 / Bits per pixel readout HIERARCH ESO DET RA = 222.76041666 / Apparent 14:51:02.4 RA at start HIERARCH ESO DET DEC = -23.49166666 / Apparent -23:29:29.9 DEC at start HIERARCH ESO DET SOFW MODE = 'Normal ' / CCD sw operational mode HIERARCH ESO DET CHIPS = 2 / # of chips in detector array HIERARCH ESO DET CHIP1 ID = 'CCID-20 ' / Detector chip identification HIERARCH ESO DET CHIP1 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP1 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP1 X = 1 / X location in array HIERARCH ESO DET CHIP1 Y = 1 / Y location in array HIERARCH ESO DET CHIP1 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP1 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP1 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP1 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET CHIP2 ID = 'CCD-44 ' / Detector chip identification HIERARCH ESO DET CHIP2 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP2 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP2 X = 2 / X location in array HIERARCH ESO DET CHIP2 Y = 1 / Y location in array HIERARCH ESO DET CHIP2 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP2 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP2 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP2 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET EXP NO= 7551 / Unique exposure ID number HIERARCH ESO DET EXP TYPE = 'Normal ' / Exposure type HIERARCH ESO DET EXP DUMDIT = 0 / # of dummy readouts HIERARCH ESO DET EXP RDTTIME = 45.313 / image readout time HIERARCH ESO DET EXP XFERTIM = 45.326 / image transfer time HIERARCH ESO DET READ MODE = 'normal ' / Readout method HIERARCH ESO DET READ SPEED = '2pts/50kHz/hg' / Readout speed HIERARCH ESO DET READ CLOCK = '50kHz/2ports/hi' / Readout clock pattern used HIERARCH ESO DET OUTPUTS = 2 / # of outputs HIERARCH ESO DET OUTREF= 0 / reference output HIERARCH ESO DET OUT1 ID = 'L ' / Output ID as from manufacturer HIERARCH ESO DET OUT1 NAME = 'L ' / Description of output HIERARCH ESO DET OUT1 CHIP = 1 / Chip to which the output belongs HIERARCH ESO DET OUT1 X= 1 / X location of output HIERARCH ESO DET OUT1 Y= 1 / Y location of output HIERARCH ESO DET OUT1 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT1 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT1 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT1 RON = 3.1 / Readout noise per output (e-) HIERARCH ESO DET OUT1 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET OUT4 ID = 'R ' / Output ID as from manufacturer HIERARCH ESO DET OUT4 NAME = 'R ' / Description of output HIERARCH ESO DET OUT4 CHIP = 2 / Chip to which the output belongs HIERARCH ESO DET OUT4 X= 4096 / X location of output HIERARCH ESO DET OUT4 Y= 1 / Y location of output HIERARCH ESO DET OUT4 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT4 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT4 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT4 RON = 2.06 / Readout noise per output (e-) HIERARCH ESO DET OUT4 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET FRAM ID = 1 / Image sequencial number HIERARCH ESO DET FRAM TYPE = 'Normal ' / Type of frame HIERARCH ESO DET WINDOWS = 1 / # of windows readout HIERARCH ESO DET WIN1 STRX = 1 / Lower left pixel in X HIERARCH ESO DET WIN1 STRY = 1 / Lower left pixel in Y HIERARCH ESO DET WIN1 NX = 2148 / # of pixels along X HIERARCH ESO DET WIN1 NY = 2048 / # of pixels along Y HIERARCH ESO DET WIN1 BINX = 2 / Binning factor along X HIERARCH ESO DET WIN1 BINY = 2 / Binning factor along Y HIERARCH ESO DET WIN1 NDIT = 1 / # of subintegrations HIERARCH ESO DET WIN1 UIT1 = 3600. / user defined subintegration time HIERARCH ESO DET WIN1 DIT1 = 3600.002033 / actual subintegration time HIERARCH ESO DET WIN1 DKTM = 3600.6543 / Dark current time HIERARCH ESO DET SHUT TYPE = 'Slit ' / type of shutter HIERARCH ESO DET SHUT ID = 'ccdUvr shutter' / Shutter unique identifier HIERARCH ESO DET SHUT TMOPEN = 0.036 / Time taken to open shutter HIERARCH ESO DET SHUT TMCLOS = 0.04 / Time taken to close shutter HIERARCH ESO DET TELE INT = 60. / Interval between two successive teHIERARCH ESO DET TELE NO = 3 / # of sources active HIERARCH ESO DET TLM1 NAME = 'CCD T1 ' / Description of telemetry param. HIERARCH ESO DET TLM1 ID = 'CCD Sensor1' / ID of telemetry sensor HIERARCH ESO DET TLM1 START = 135. / Telemetry value at read start HIERARCH ESO DET TLM1 END = 135. / Telemetry value at read completionHIERARCH ESO DET TLM2 NAME = 'CCD T2 ' / Description of telemetry param. HIERARCH ESO DET TLM2 ID = 'CCD Sensor2' / ID of telemetry sensor HIERARCH ESO DET TLM2 START = 137.2 / Telemetry value at read start HIERARCH ESO DET TLM2 END = 137.2 / Telemetry value at read completionHIERARCH ESO DET TLM3 NAME = 'EBOX T ' / Description of telemetry param. HIERARCH ESO DET TLM3 ID = 'Box Temp' / ID of telemetry sensor HIERARCH ESO DET TLM3 START = 284.6 / Telemetry value at read start HIERARCH ESO DET TLM3 END = 284.6 / Telemetry value at read completionHIERARCH ESO PRO QC STATUS = 'UNCHECKED' HIERARCH ESO PRO CATG = 'MERGED_SKY1_REDU' / Category of pipeline product frameHIERARCH ESO PRO TYPE = 'PREPROCESSED' / Product type HIERARCH ESO PRO REDLEVEL = 'PHOTOMETRIC,GEOMETRIC' / Reduction level of daHIERARCH ESO PRO REC1 STATUS = 'OK ' / Pipeline status of frame HIERARCH ESO PRO DATAAVG = 18.8367 / Mean of pixel values HIERARCH ESO PRO DATARMS = 448.127 / Standard deviation of pixel valuesHIERARCH ESO PRO DATAMED = 8.85199 / Median of pixel values HIERARCH ESO PRO REC1 START = '2002-04-04T08:22:31' / Date when recipe executHIERARCH ESO PRO REC1 RAW1 NAME= 'UVES.2001-06-21T04:03:43.070_stk.fits' / File HIERARCH ESO PRO REC1 RAW1 CATG= 'SCIENCE_RED' / Frame category of raw frame #1 HIERARCH ESO PRO REC1 CAL1 NAME= 'UV_PDRS_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL1 CATG= 'DRS_SETUP_REDL' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL2 NAME= 'UV_PORD_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL2 CATG= 'ORDER_TABLE_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL3 NAME= 'UV_PBKG_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL3 CATG= 'BACKGR_TABLE_REDL' / Frame category of calibraHIERARCH ESO PRO REC1 CAL4 NAME= 'UV_PLI1_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL4 CATG= 'LINE_TABLE_REDL1' / Frame category of calibratHIERARCH ESO PRO REC1 CAL5 NAME= 'UV_PLI2_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL5 CATG= 'LINE_TABLE_REDL2' / Frame category of calibratHIERARCH ESO PRO REC1 CAL6 NAME= 'UV_PLI3_010620A_REDL580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL6 CATG= 'LINE_TABLE_REDL3' / Frame category of calibratHIERARCH ESO PRO REC1 CAL7 NAME= 'UV_MBIA_010617A_REDL_2x2.fits' / File name of HIERARCH ESO PRO REC1 CAL7 CATG= 'MASTER_BIAS_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL8 NAME= 'UV_MFLT_010620A_REDL580d1_2x2.fits' / File namHIERARCH ESO PRO REC1 CAL8 CATG= 'MASTER_FLAT_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL9 NAME= 'UV_PDRS_010620A_REDU580d1_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL9 CATG= 'DRS_SETUP_REDU' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL10 NAME = 'UV_PORD_010620A_REDU580d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL10 CATG = 'ORDER_TABLE_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL11 NAME = 'UV_PBKG_010620A_REDU580d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL11 CATG = 'BACKGR_TABLE_REDU' / Frame category ofHIERARCH ESO PRO REC1 CAL12 NAME = 'UV_PLI1_010620A_REDU580d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL12 CATG = 'LINE_TABLE_REDU1' / Frame category of HIERARCH ESO PRO REC1 CAL13 NAME = 'UV_PLI2_010620A_REDU580d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL13 CATG = 'LINE_TABLE_REDU2' / Frame category of HIERARCH ESO PRO REC1 CAL14 NAME = 'UV_PLI3_010620A_REDU580d1_2x2.tfits' HIERARCH ESO PRO REC1 CAL14 CATG = 'LINE_TABLE_REDU3' / Frame category of HIERARCH ESO PRO REC1 CAL15 NAME = 'UV_MBIA_010617A_REDU_2x2.fits' / File HIERARCH ESO PRO REC1 CAL15 CATG = 'MASTER_BIAS_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL16 NAME = 'UV_MFLT_010620A_REDU580d1_2x2.fits' HIERARCH ESO PRO REC1 CAL16 CATG = 'MASTER_FLAT_REDU' / Frame category of HIERARCH ESO PRO REC1 PARAM1 NAME = 'FFMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM1 SVALUE = 'E ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM2 NAME = 'EXMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM2 SVALUE = 'AVERAGE ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM3 NAME = 'BGMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM3 SVALUE = 'MEDIAN ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM4 NAME = 'INTMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM4 SVALUE = 'Y,Y,Y ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM5 NAME = 'MTD2D ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM5 SVALUE = 'N,MED,E,A' / Value of recipe parameterHIERARCH ESO PRO REC1 END = '2002-04-04T08:23:16' / Date when recipe executHIERARCH ESO PRO DID = 'PRO-1.13' / Data dictionary for PRO HIERARCH ESO PRO DO ID = 'DO-1_14 ' / Data Organizer identification ID HIERARCH ESO PRO RBS ID= 'RBS-1_9 ' / Reduction Block Scheduler identification IHIERARCH ESO PRO REC1 ID = 'uves_obs_scired' / Pipeline recipe (unique) idHIERARCH ESO PRO REC1 DRS ID = 'MIDAS/01SEPpl1.3' / Data Reduction System idenHIERARCH ESO PRO REC1 PIPE ID = 'uves/1.2.0' / Pipeline (unique) identifier HIERARCH ESO PRO REC1 RB ID = 'UVES.2001-06-21T04:03:43.070.rX' / Reduction BHIERARCH ESO PRO ARCFILE = 'UVES.2001-06-21T04:03:43.070.fits' / Archive f HISTORY ESO-DESCRIPTORS START ................ HISTORY 'CRVAL','R*8',1,2,'3E23.15' HISTORY 5.817064020000001E+03 1.000000000000000E+00 HISTORY HISTORY 'BIAS_SUBTR','C*1',1,3,'3A1' HISTORY YES HISTORY HISTORY 'BACKGROUND','C*1',1,11,'11A1' HISTORY subtracted HISTORY HISTORY 'WSTART','R*8',1,15,'3E23.15' HISTORY 5.817934520000002E+03 5.874412560000002E+03 5.932039660000002E+03 HISTORY 5.990781000000001E+03 6.050671400000002E+03 6.111815320000003E+03 HISTORY 6.174177940000002E+03 6.237828900000002E+03 6.302837840000001E+03 HISTORY 6.369204760000003E+03 6.436964480000003E+03 6.506186640000001E+03 HISTORY 6.576940880000001E+03 6.649227200000001E+03 6.723115240000001E+03 HISTORY HISTORY 'NPTOT','I*4',1,15,'7I10' HISTORY 2803 2829 2856 2883 2910 2938 2967 HISTORY 2996 3026 3056 3086 3118 3149 3182 HISTORY 3215 HISTORY HISTORY 'NORDER','I*4',1,15,'7I10' HISTORY 104 103 102 101 100 99 98 HISTORY 97 96 95 94 93 92 91 HISTORY 90 HISTORY HISTORY 'SHORTLOG','C*50',1,3,'70A1' HISTORY Recipe log (Th, 04 Apr 2002 08:23:16): Science reduction do HISTORY ne. ........................................ HISTORY .......... HISTORY HISTORY 'REDBLOCK','C*48',1,45,'70A1' HISTORY recipe: uves_obs_scired instrument: uves HISTORY /uves/dfs_product/SCIENCE/2001-06-20/r.UVES. HISTORY 2001-06-21T04:03:43.070 { HISTORY /uves/data/raw/2001-06-20/UVES.2001-06-2 HISTORY 1T04:03:43.070_stk.fits SCIENCE_RED } HISTORY { HISTORY /raid52_uves/calib/2001-06-20/UV_PDRS_010620A_REDL580d1_2x HISTORY 2.tfits DRS_SETUP_REDL /raid52_uves/calib/2001-06-20/UV HISTORY _PORD_010620A_REDL580d1_2x2.tfits ORDER_TABLE_REDL /raid5 HISTORY 2_uves/calib/2001-06-20/UV_PBKG_010620A_REDL580d1_2x2.tfits BACKGR_TAB HISTORY LE_REDL /raid52_uves/calib/2001-06-20/UV_PLI1_010620A_REDL HISTORY 580d1_2x2.tfits LINE_TABLE_REDL1 /raid52_uves/calib/2001- HISTORY 06-20/UV_PLI2_010620A_REDL580d1_2x2.tfits LINE_TABLE_REDL2 HISTORY /raid52_uves/calib/2001-06-20/UV_PLI3_010620A_REDL580d1_2x2.tfits LI HISTORY NE_TABLE_REDL3 /raid52_uves/calib/2001-06-20/UV_MBIA_0106 HISTORY 17A_REDL_2x2.fits MASTER_BIAS_REDL /raid52_uves/cal HISTORY ib/2001-06-20/UV_MFLT_010620A_REDL580d1_2x2.fits MASTER_FLAT_REDL HISTORY /raid52_uves/calib/2001-06-20/UV_PDRS_010620A_REDU580d1_2x2. HISTORY tfits DRS_SETUP_REDU /raid52_uves/calib/2001-06-20/UV_P HISTORY ORD_010620A_REDU580d1_2x2.tfits ORDER_TABLE_REDU /raid52_ HISTORY uves/calib/2001-06-20/UV_PBKG_010620A_REDU580d1_2x2.tfits BACKGR_TABLE HISTORY _REDU /raid52_uves/calib/2001-06-20/UV_PLI1_010620A_REDU58 HISTORY 0d1_2x2.tfits LINE_TABLE_REDU1 /raid52_uves/calib/2001-06 HISTORY -20/UV_PLI2_010620A_REDU580d1_2x2.tfits LINE_TABLE_REDU2 HISTORY /raid52_uves/calib/2001-06-20/UV_PLI3_010620A_REDU580d1_2x2.tfits LINE HISTORY _TABLE_REDU3 /raid52_uves/calib/2001-06-20/UV_MBIA_010617 HISTORY A_REDU_2x2.fits MASTER_BIAS_REDU /raid52_uves/calib HISTORY /2001-06-20/UV_MFLT_010620A_REDU580d1_2x2.fits MASTER_FLAT_REDU HISTORY } E HISTORY AVERAGE HISTORY MEDIAN HISTORY HISTORY 'LHCUTS','R*4',1,4,'5E14.7' HISTORY 0.0000000E+00 0.0000000E+00 3.5856746E-02 1.2598823E+02 HISTORY HISTORY ESO-DESCRIPTORS END ................ END =É0Ü=Åæö=¯W„=Â(Í=Ï4Õ=¡\=¤¼=Äš-=®=Ìþ=ò Ú=™)a=6h=¡óS=Ã4w=É^þ=ÎÍš=Ø¥Ê=ê=úQ=¬Y=Á-D=×=Ž=À‰m=Ê™3=Ö­ÿ=ß».=»ë,=ˆ| =ÆÁÎ=Ágp=³Ëˆ=¿ð=ć=ÕŽ<=á G=ص‘=Õv¢=Â(M=Ñ’¼=êÑ[=¶ã =°E‹=²LX=Ò -Å=ݺ=è¯à=üø=øA-=òñ¹=üÂy> >.½=ó=æË=Û´×=ðÝ>€‘>ß=¼ =Øwö=û–+>Y€>eT>{µ=âõ|>„>&Þò> ûê>@83>[ëb>`y>TY¸>J5>JGI>_í¥>n9º>d@‘>iÚ%>u_->”ë>‰·À>‡´Z>›Û>” I>‘Ÿ>‘_ô>—Åe>—ë¡>ˆ¼D>[©T>B>ú>G!³>0Ö¸>$þØ>¾ø>#œ­>$1‚>0>'åÿ>¬>=øà™=ßL;=áz;=î|u=ëÄ:=íf»=íX²=·*=¹Áñ=ÍÓ`=–Ä‚= K¹=¸·U=¸´°=Á.¾=Í¡Ï=Âc=¯ð=˜‡¶=ÒS=º…¼=–÷@=¢` =¿ã=Ö54=à[ð=Íó=Á?î=ÊÀÀ=¦M=” ö=ÉS³=À?ù=À[Ž=Ç}=é÷F=ëÐ=»˜=«³b=®8Ú=ıÜ=Ó¨=Ę{=›C¯=Å?m=Å*w=¸Ï=¦Óq=§Äc=­Re=·†Ÿ=¿—=Êl=É¥=µ"Ý=¦;Î=ù“Ÿ=¼hà=’î =Ñ«=ËbÃ=Èðº=Ðâ=½Š¢=·ÙS=Øe=Ådà=µ¢=§¿¤=¶ -_=Æ =Öd7=ûãµ>«d>—¶=ô‚=À†=~L:=u¥=²H/=Ò÷=¤-¬=ÑÞ=ô–9=¶ì=Ÿœ1=™Ûd=Û—ô=Ö5z=Ê‚=­Ð=ÃÓ÷=¾]=¤-ç=­<=­:=¯fX=¸ËK=«?Ñ=”Þ½=ðe=æYÄ=ÑO¿=«q= s³=œ‰ä=ÒÙ¹=9¢=_÷ý=´†Ó=Á§&=ʶ8=ÐB=¿@ô=¶RZ=§Ž›=Ç -´=ÙpŽ=ñ Â=£3=™|^=šbP=¬Â"=·Zv=ÀÓS=ÀAŠ=¿S=¾‚6=¿‚{=¹ýò=´r=´z=˜V¶=¦n™=à3H=îˆt=Ù!=°n±=·Y3=Ò„=îËz=þã«=Ô——=¹Bò=Ùû=Þ@í=Ý!ÿ=ÎÉ£=ï\È=ñ–á=×~9=ßEu=Ý*«=×p¡=Îm°=¾’c=¬­ž=×1ù=Ñ0ˆ=Î}=Í?—=›Ò=…Ò=³=Ç==Ðzó=Þ¢¬=ü+Ý=ãÙË=±_Ï=Òëx=×úÌ=Û ¹=Ôè=Îñ¹=Б‚=þ s=èSs=Ö¥¸=ÉÊ2=Ö[å=Õz©=É°G=ɺÀ=ÖO=ã²=âŸ=ìäÅ=óSú=ã5(=ÒVµ=Ìþ÷=âêã=Ý‘=Õó/=Ð2¿=Þ“]=ÏSŽ=µo·=è4=ä’=ß‘W=ç—=ýv‰=üÿs=ÄõT=ä’=ç¼»=Õ‡œ=ø¼+=âV—=ºªp>c=òÝ=Ývˆ=æ&Ž=åXæ=îná>êÎ=üÍN=ðé¤=ß.W=å3Ø=ë=ñ†Ã=úœ=á Û=Ê=£\¯=Å«M=áPÜ>b(=ÈŽ–=È̉=ÝžC=åB‡=àð=àšþ> ùÉ>«=ûÒ > ÏV=ð£¨=ö‹,> i=øaÑ=Ù§9=¹%:=â4°=áÔN=â5ù=â¹å=õÈ*=ý7>MÕ=ïÕ=íÿ¾=óʹ=âVg=â@ò=ärÏ=ó ë=ç{=äŽ@=êÀJ=ÿB=ûb®=ëÒÀ>vM=òQ=Ù«ß=ÐÁˆ=ðƒ1=ûE=ßî{=åø=ñų>¥}=ð®g> á>L=î:3=þxû>ZÌ>~E=ç„Ô=Ô‚€=Ä{ˆ>bÚ>v=öz=÷8=òƒÕ=ø(¿> lÒ=Û#=Ñ*S=Öxu=ÖWã=ñ=>ñV>öO=îPk=Ûrª=æK&=í N=ò¦=õâs=íÈ=ÙÌé=ÔM>¤d>Õå>ØÊ=üÁî>–:>¡z=ûŒu=Ôæ"=À-y=¹Î8=ÔÌà=ýÙñ=òøJ=Ôš:=ü.½=ù2ž=ð*ý=ÓZs=ðM§=ùþš=ó=Õ> †>·•=üU„> - x=ôÏÚ=鶛>®>"ž>ã>ðÂù?Q¶?W˜r?P–l?$ê>™2’>4$ú>¼Á=ì¼~>C¯>«‡>o¢>®«>¼ç>+®z>¥þ>Û¯Ì?Ξ?á›>ã5²>¤¬œ>áð>¿=îùÈ=ßûu=þ›W=ï6:=âf=é=ï²=çºê=ÑE=×ÈÂ=íÀ+>ÃÁ> >}C>ûÇ>ÚE=ô=ûíþ>@T=ùÀ"=ùÝ…=ûr>ò=à[W=øyµ>ù> 5Ç>ÌÖ>5gs>{S™>ŸÛK>¢Z>™B^>Q«>.|>.úÑ>…¼¹?+3~?_ÞF?ƒå$?fPÅ?KÕ>§õŠ> ‰–=ù<=ï¹Ó=ï5‰>«=ñç½=Üz'=Õ–ú>ŠÁ>‹ì>_ -=üÒØ> µÝ>“Q> S >m+ñ>¦Ú>Ûm>èrj>Èèþ>¡~ø>6ò2=ý3J=ø·|> —>¦E=öoù=ÿ¤>è> ø">)n=ó T>O> ÙF>‰=öe¤=ö =ùå=üMÍ=í˜o=ýŽm> ª>‰;>WY>‰âH>£´5>¨&Ø>„ü>\l>9ÿ¼>Z0v>k6>r„’>VyÙ>+Åu>,¼>x=æT¢=ëV–=ñÞ/=ÿÆj> -²=üˆÊ=ÞÚh>£ó=Úü¬=Ôò=öÄq=ßÒN=ò® >9 =ï~=äf=Ö»h=ÂCq>-n>‡^>»ê>A˜>—™>Œ®>ú°> š;>ÜX=ÿâw> -yý=êþ=ô½w>ª=û X=ùçå=ùI}=ù5Ï=÷³=÷Þë=ôÁ=èkÿ=î­™>¹g>Ç™>%$–>P¬> -†é=çX> »Ÿ=÷•=åÁü=þ°@=ßê}=éÏ>¬a>U5> ×>>=÷OZ>Ž=ýUe=ñB=÷\b>_Ž>œª>m˜=ÿø¨> -”ì> ©\>§ª=ÿÔL>ðü>á#=ÿ|ˆ=øÜ>þr>a> -Å>H;>¿ >D“>Cž>Ó>g ->@º>f>`ì>™”?>Ö£|>Ø"£>Â,b>œwƒ>)K$>„Ä=á}W=÷Ï™>_">£4=ùâ™=ßÀ8>uF>h =ÿVÑ=ø³>Að>n¸>×¼>È;=üâÞ=ô -=ôZ=óØy> -Hy>?Á=ûÔ›=êÙ=ã¹=æ -ó>ôÝ>> ù‡>u‡>º>š=ø‰Â=ò½>x¯>H> ´'> á…>T\=ôÆó=ÝŽÿ>zœ=û±)=ÿäb>g¨>Œ> Àr> žN>ÿÄ>“,>ìˆ=þ^=òp>¸c=ùÄö=ô‡æ>5Ð> ü>‚à>"MJ>;Xù>'øp>|3=òw|=ûåÆ=ñáN=îžæ=óŽ˜>Lœ>¤>ß >(b>DA?>I°G>F€o>07×> ˆÝ>l>à¼>g=þH¯=ô¡ˆ=í i=ûò> vq>´¤=÷Ãþ>(¦> þ±>Û’=ö8­=ç—=ö–Q=ý­j=ù[=ññ:=è5=çIu=ùXÉ=ò ì=ä†m=á½%>Ý£=墋=Øåš=×»W=òp==äÙ^=òN>Mþ=ûØ­>%¦=ÿxï=ï¼f=þˆ=ýÈ~>JË>”Ý> -å1>$> ¼ú=óvG=Õ³=Ù×3=ó`Î> »ú> Àr>Õ«>Êõ>%Ý>í“=ñ%Ð=ç[ö=íPË=ôµu>*Û>¢ -=Õ =ìku=ÒûV=Øá¸>ñt> />žö>nT>‘{=ïCé=ýËX>Ú¶>±=ñ°ö=æža=ó‚&>ÖK=íÅ=ÛÖ=Ûþ=ô˜ü=å'´=øØ >ç%=õ¢y=õÊü=ð™<=è¾U=Ý^=½M%=å”Â=÷À=å÷õ=ÝŠí=÷òZ>”Î=ÿš\=îìµ> ×>Ÿ=åx>!=ùìÜ=ë± =ö]—=ÌŸ=ùæü> N>"Z>Ï=ï*=ýCÅ>oâ>`> Ú¶>í«>Âû>d¨=æè:=â©]=úËë=ù§»=Ù)=Úá-=äñ’=ÎÖ=ê@Ÿ=çß$=ÛIœ=ÆÞ2=ÌîÉ=⦶=ôk=íw€=׳c=ìë=øñ,=æV!>>²ü=ÿ²>¿6>‰è=åé{=Ø&[=Ýsi>d£> ->âü>Ñv=ý;‹=÷"…=ôG=òÁØ=ë¾W=åÿÈ=ÿºI> vú>µé=ò”=çUA=Ù^|=¹x>>Û£=õFÐ=Û1S=¾E\=ÙY1=è7 =íA =èõâ>|è> aü>V>>‘+=á}^=ßµ=ð%¾>ï">\>‚u=û:;>1A>€Ö> ™(> À®>‹7=ïñw=ú¿=õ!#=æ×Y> Zy>X=öFÉ=ìF >cÇ=ßR=ÜôA=â.=Ý{›>Ý>^Á=ýXV>Ô[>¸=èü=å½/=ôW=ô¸ñ=þ -î=üq$=ø†.=äZ=ݸÖ=é‚Ï=í%í=Ù—|>a2>&>'@>½»=úþ>8Ä>çx>¹>ë^=ð³Þ>ÕG> Sä=üÓ€>A=ìrÎ=ØÊ7=ßà =ÃèX=Ä×ê=ÑdÍ=ÚiN=Ì-H=ëQ½=å•=Ö­ð=½G =ýò¦=ÚýR=¿jJ=¶y>ê{=ê\=áp%=ê,>Vq>!™>÷>!áÍ>$¢D>]¤>ê=÷=Í=àƒ =É–Æ=ùÜ=òÙ£=뚬=éN=àõý=è&3=÷ -¨=ùyj=Ùù§>v >œ=î” =Ëz»=ÔÞG=Òf÷=ÖWë=Û®_=Öu$=ÖïX=ã6@=óè”>V=ÆŽ>8Ê>èM=ä¶==õØ=èçs=á=Üù{=ÝÄL>r¸=ýÕ§=óË=îí>Úì>‡)=Ò®D=·Âß=Àì=س6=ÄŸ–=Í¿=ã'>è)=ëÿ½>®'>«c=ôÌê=öÓ)=Ó›=Û^=ëy}=è#=­ºE=É­€=íö›>2)=§×¡=Ìô,=ÚE™=í‡>¯ú=ç4½=áó=ëº>ä@>yI>?ðü>bNB>ïì>•¸q>¤G>x/&>Vü>2”=÷;> v·>LR=ýòÇ=÷Ùu>‡> Oý>0Ì=îÇy=ãêÐ=☠=Ä H=´±‰=ÇOÿ=ã’æ=ö…=Ä 3=ÄŽ‡=ïÞ»>p…>H#>’z>‘=û?%µŒ?ÀWç@¡E@CŸ?ïiw?šD†>™Ç–>!/=ó{v=Ý=T=¾Eü=ðT$=æÇV=êÑ_=æmÊ=âÄ`>TT=öø=î G=Ù.=ÁI=å‡=Ô®"=ÊÄS=æQ}=ùQú=ÚË=æ2Ø=Ù×=µ7M>ÚR>­!=àäÜ=éHÓ> ¤D=ìì=¿åt=ÀMÆ=áÿ±>öÓ=Ø2=Ǭû=Å#=ÀDP=ΰ=¡2!> > -»>1>à>†/È?ʉJ@«Š°A "A/é¢A4–ŒA íg@–B?ýðL?"AÓ?¬>¿gh>pëy>Åù=í·œ>Ž=ââ³=¶È!=ÇÙÑ=Û"þ=£Ì¿=•©Ö=Ã8=Ì -©=Ç>=à=Êêç=À¼ =¼çC=»ø·=‹AJ=·í=½9Z=ÕD&=èûä=ä<‘=ÚF„> ·M>‘{>&>ƒ#=Îo=ôJ=ÕŸ=µ¡Õ=Ó#z=£´{=·_P=Ýçî=Êf=gª=å¬==ø¼=í¢å=¿>V=·`C=Ûæ=è‹‹=Üêi=Þå,=ôr=ç¾ä=ä[‚=ÚöM=å¦Q=âøä=û3=ã•Û>êæ>¹ >xÑ> ƒs=èë(=ßÀ=Í:œ=¶2=ÊM=Ô÷¦=ã¡=â©=ÓÓ´=Ù±Á=äý=ϵ=×â=Ó&K=Á¤ =™„b=°1h=·[_=¯<è=žF=¢gÀ=è[º=ÞcA=éôî=Û÷ =Æ@–=«™u=œ\Í=¸[=Ôxº=Ò'>=ÌÊÚ=(a=Ås]=Þá_=ë]=Ì/¦=Ę(=îôÕ=æ1×=ÏC+=Ã=°å+=Ûtð=¾,$=®¾Õ=½ùò=Ù¶>;?=ð¯(=ß·=æ‚3=ßÖ2>Ù‡=÷ã=ñ7?=òv!> æ,>AwA>·q–?g‹?â?2~•?+¥ð?”F>¼²Ø>yæD>Fº=ÙîÖ=ìMd=ÛÑW=à=ÊI›=¤ÄÖ=¤ôÝ=°c=–Ô‡=Šˆ =¦ªô=å¤!=ê]F=âÕ=Ð# =ÄÁ=½¯ =ÍÂ5=å@Í=°õ;=½²=¥ÅA=ÇË[=õZÿ=×bö=±ù=Óš¡=ã˜ê=æ²$=ÝŠB> ¿>QÎ?`O?ô‡A@tuÙ@Ëf®@ØZô@ÆæÖ@|S@ -²?„q>Â÷Ô>Š„j>7}¶>Óá=Ñ÷K=ý£ý=ïµ=É>>=ؽë=ð=²û>7>¦þ>n£=Ô±Á=°°Ô=ÂæŒ=¶4¢=Ëi³=sY =†J•=Äm=ÏðË=»\L=ï¬=ú'¹=ü]—=ßJY=ÆÒ=¨jx=Á¼=Í‹é=«µ=¾ ‹=ØÃ=Ž°=«M=Ô¤ç=æÁ¯=ÜGÂ=Úº®=¨Ój=‚÷®=ûÖ=³!Þ=¾dM=äÿ =ÙÁ -=Ù=¿þ¡=¿ÈK=Ê‹=¸«Ö=¶Ÿú=¹ž=æå=õÏB=Ûׄ=º—µ=í9=‘+M=®Ä"=ºz§=ωÁ=½è[=£.¾=ÄDÚ=½„=¾Öï=½É=ȉÛ=¶D=³Ÿ–=Çö@=›X;=²5=Áì=½Ï¢=±¤s=óBñ=¶ŽÊ=»¤=ìÃÇ=Òr=Ñø³=Êkñ=´Rb=Õã"=½ÉÜ=¥È=°.”=ã±’=æ+5=¡ €=ªñî=לW=æÑ·=ߺœ=æs=Áh0=¶¨=Îå=ײQ=á¹Ö=Шé=´×O=»öÞ=¶Ê:=É] =Ö­=Å…œ=¯£µ=ç í=ÎÄÐ=¸Çá=¸jÉ=ÕL=ýH²=Á¦°=Êx=Ñ Ë=éì„=ç!{=Ñòö=Æy€=°•=°t=ÀÆb=ï=ÍÝg=ÛVK=Áq=šªå=ÙÕ=ì+<=Ù9‘=¿5»=¾!ä=˜b=« Û=¥T{=Â=ÎO›=¥£Ê=³ª†=Ýî=ÏÓ=ÏC=Òô°=½êF=¼•ñ=ú!í=±#U=¹º=ч=ÇYè=ÈÿA=ÙœÌ=¿‰ú=¨jH=¶~B=ŸŽË= Ô¦=ÂÝþ=ǽÍ=úÄc=Ùƒb=ÍdÓ=Ŷ•=¿/ø=Æ•—=£H;=¬bæ=Ìm™=÷Yñ=â£Q=ȧ=•vê=¿0´=ÒÅ=õÊÝ=ã#^=ÍIÂ>62=ü~=»ÜË=Ôhí=ÙD3=¯:Ò=ÂÚì=ʾ=Æ,=Ô -—=á ˆ=Ó8¢=Ã*==ÆžX=çðÛ=ï=îWp=ÇØ=Ü6=æ£=Ù_=ÙkÒ=Öê">ÏÃ>9dÎ>N‹ˆ>b:>@ f>!W>r‹>°|>Mxê>BmÜ>8ä<>À=ôÂÀ=ôœ=´Ýt=Á.a=³ûÉ=“â=¹¢k=Ù7)>(é=ÿ‹¢=ÑD -=β°=¸Jr=ªÔÄ=iÛý=Ž1F=µøÏ=®G‚=©î==­$=´Þû=ê€=õ -=¬G°=½Úì=¯D=¡¼{=’|=ª!T=ÆÑÑ=ÏZ=³óµ=½_-=ÚYu=ßnZ=Ëô=ÂwP=ÁéX=Óˆ=ÛŽ=Ë )=·¸ì=¶2‹=Å'Á=؃“=ÕBí=Ék1=è„¡=ÄÖ*=Ðg=ãßœ=®ØA=›ðÑ=ëð=Í}À=ÔC=»¼5=ãux=ásp=«,=вy=ÝÆ=Ùue=Çþ=Êë=Ä‘>=¿ý¾=Å$ê=È&Ë=ï?R=æ{Ì=âqÂ=õ3g=í–=Õ_,=Ùò°=Ó •=Â-%=Ñëv=¦£™=ô%v=ßÎE=õ_>lk>­óÐ>ôÖh?ÆÃ?ò>þøQ>“è¸>Bqb=Ð>n=ÕrR=ß‚´=î¥=Ó=­òk=Èf=ÊÖŒ=Ý¥L>ª·>Ïb=õ^û=æ‡Á> e>&Ô=ìUU=Ñ·ú=Å…Œ=Ü^=í ñ=÷+:=ö¼¸=ór=ò“›=ïx²=éêó=ÏY=á Ö=ätR=ö•=ìþ=ù«>»N=ô'Á=Ú½=Ý"·=êè†=ù*=úÐ…=ìœï=ó k=ô™K=Ók,=˨}=˜þ6=ý==û•b=û¼y=Ó ú=ÚDì>Ó>3=õ;j=þl:=¶rš=ÅÏ™=ë5c=ó=ô5V=úPZ>„> ‚>#I—>²>Ñ>,y>%;>'î“>-N¸>=“ˆ>IÝÇ>J˜Á>N±‰>Vy>8ló>Oâž>\}>n ¬>lT>{öc>jh~>¾>ã)>€]0>‚Áh>ŒÞ;>ˆ\>„/s>vó >W_‡>7˜>+y£>)¡>*w>(\^>+ã@><•,><4>$'·> +>½ô=ñV©=ö6ó=úgG>…`=å#ð=ÞÊ=üæC=íÏK=è[Ò=çè=ï~C=ëva=Ò‰Ê=Ëtx=¼Ze=–¥ã=ñä >!=Òþ=³¯=¸”=Üøï=­ïê=¦ µ=²Áw=Ñ15=Øå=Ï” -=ç]w=í0<=í+g=Íw™=ËYê=ØÒÿ=éq'=â# =Ï6Œ=λ=Ïè»=ÏH­=­B¿=˜Öí=~b½=Ãæû=ºÁ.=:=Ò8Ò=ØB¬=×a.=ébP=üõX> ·>¨#=þ„£=óžO=áã›=àŠl=ÞîX=Þ$ô=ÜåÆ=Þ]5=¾Öô=Òxû=â·Y=Ñk{=ÁUe=·•Ì=âÌ=Æ‘n=³—E=Æ=ü=Ò\–=Øøû=ÆH’=ÆW²=Ï4à=õú =â9=Õ¡>=Å—=±HZ=®´r=¼4=»à·=¾®Ô=Äû -=ÌAÇ=ЕÈ=×úÚ=°{=´˜¢=Í:g=ÔõÅ=Ö“(=ÕRe=Ëçí=Èd =Á©w=ë½=¬ì=À ß=­y˜=¶PÏ=¿yò=µs“=¹ëˆ=¿?=Ç‘F=¼ð×=µåˆ=ÅMå=Ê×S=Îúì=Öjº=·^ú=´,à=Þ45=Ð<‰=É+˜=ÁÆ=»iõ=µüY=¯}o=Å*R=ÆÖ=¿lã=¨ Ý=¬¯=¶ÿ¥=àª=â}¢=â7=ÐâŒ=ÿqK>u~> -Òb>+K3>`íç>ézs?yU„?²í@~U?ê?Æ75?\,ž>Á¥S>GéÚ>j=òÚ—=êò¼=äö=òÞ¡=沉=Òs=à~7=Ṇ=â ”=ú·’=ð²=éL…=ðkh=Û»=Ìÿ#=Ìô=د=àjõ=í ­=Ç·=Á*'=Ò™{=ìz7=ð6¾=ê3=ø³`=òr›=é‰N=ùFé=ñ«=éùÚ=ðN{=ð3ë=ìØÔ=Ï~@=îÇ=ñÌ=®ä=ÝÂý=÷w>¨”=ö=ìºÆ=ã¬=ãA_=åÙ=çeF=éù=ÕÅŽ=ÁÓæ=ãk=üÁ.>s=ì_4=å¼=Ýg=Éà=κ©=Øçƒ=êo=ÿÇž==ÏHÇ=åÊo=îš=õ‡A=î4º=åë—=ÜZ=½K=ó?>ª¢=þöü=åD=á”Z=ì„’=ÖÛG=Ò’=Ðáê=îZz=ïp>=îÁ–=íi=ðó#=ð°›=á4?=ÕCÙ=Ó^K=ÞØþ=ðj/=ë=Õd£=ïg¶=ø =üœ >Ég=ÿx=û'ý=ì¸ô>Ž>èÏ=Å'=ñÁ>x;>úß>A~=ûhð=òƳ=ó=ýJü>ؘ>“=û;¹=ð„5=é~5=ÞÅ=Ù¬À=Ùô=÷Ç=íý‰=ÐPn=åõÛ=æ\½=çy¦=åêS>‰+> #Š>À›=ä§3=Øá =ß3>Ÿz>8€=ÿ¥=ÿ\ó=ûO=øL=÷‚P>b> -Z'>í(> ê¬>V¼=ïõ,>TJ> g`=þ|¯>> ÑÃ>ö=ýŒy=òóù=äÍÚ=Lj=ýD>ÐÎ>ˆ¤> ÛŸ>°s>Šò=õŠ(=ëâÞ=ìÂ>ß>yo>`…>zG=ô:Æ=êÉm=áMS=ßUJ=÷pƒ>ºJ=ÚÊ,=ôxž>£F> =òÀ =÷¾±>=î=ýcœ=ñ_=è%®=ôƒ˜>U>Vr>Ò·=ݤ@=ÉO{=·z³=õò=ô§=ô>Â>R6=ñWÎ=èÒÒ=ù.f> Ø>6´>î—=ôm>?w>…d>¦!>hÍ>i)> -ö=ì˜é=éŠÊ=ò¥œ>¤¹=Þ%Í=Æö}>>¡”> :ž>oÁ>åc>Ü>N=Üré=íK =ó<(=Õ"m>)Ë> ÔW>(º>—ã=ýõ½=ûãL> ¼“>dë=ú¢v=û=ö_w=ïWo=æ9í>™”> -‡=Þ[¬=Ýõj=î€=ôǪ=õK«> 7>^J=ñžf=ú$ò=ÿ¾4>‡k=úÖï=˳u=Õ¨¢>†¸=ó<ê=ê(q=êÅ>ˆ$=ÿ‡>?«>ë>¯Ä+? ÷ü?DþZ?fÐ;?Ki’?"¦v>”l)>)J>×7=çöÍ=çlJ>iw>«“=ý@m=ü¢]=ò7Þ=Ý›=ÜÐ9=è!¤=òé0=úú›=æ…ø=ævÂ=úï=õÜ=ôkÐ=òhD=Ö¡N=îD‰=þž½>È=å~ª=ñ>­>²=íÛ4=é7w>X)>©S=÷=ÒÝÂ=Ó.Ù=éfÎ=ùÔÐ=ûv‘=ØZÈ=ÎG‡=Έ”>î¼=ý¾‘=úð>4ø=æõ=ì*:>~^=ïö=Ùo7=É÷=Õu=Õ€=׬Â=Ü$v>Of>P =õ%:=ázü=÷tQ=úY¤=ð˜=ö̓>Ô>Ùß=ç³´=øHx=úÄï=õ?¾=íÀ¸=úw>6Û=õ ==í*‡=írE=ôlí=ç}ï=Ü.¾=Ðe‘=ùjD>Y¬> q:=ß’T=ë•›=éH=¿Ž¬=ÿäH>ýF=øC=êVu=üh>Ç>=¾=ça=ï7S=ÿ˜=ÿ{O> òO>o—>öË>’·>±Ì=ùµ>> ^n>]<>þf> ‹=éR=õiÆ>¡0=ú¦8=ïÐÿ=îRõ=ò Â=ú»<=øÿn=õÊÛ=ëw=ü¢H=ÿ™º=þÚ¦=ùê=ÿ>J˜>¿¿=Ò°c=åë›=úÄÞ=çÖ -=ÚßÉ=ØóY=Ýž±=äç6=èc2=áJ-=¹5p=à9Í=á·¦=Ýžá>J=ðÄ>=Ý7ð=úM*=øv†>Æ>^k=Ø;°=ý5“=í¿=Ç%µ=ÜŽÃ=ì¬x=ðáœ=ßåE=þÍ=ìÚ6=Ú# =îEb>¸>«=òMj=îöã=ötµ=üÂ=>Uw=üÛ?>8ã>Øü> ¨Ì>+>`m>.µ=íÂã=ëû=î‚e=ù“ =íY=íž=ófè>:A>&è=þ­=þäÍ=þ·^=è~P=êbý> WJ>¬Â=ö¢=êî=ð¾=õLö=é*¯=Ô¡Ê>îd=å-=ìa>ž=îÞì=ðûÀ=ò&"=ÚÒò=ì5á=ó_Û=÷¦=þG˜=ïg†=ó„l>F¸=܈`=é7=õ‚T>,‚=è“·=í¿7=ñá=á1=ÜXÀ=ç =úû>÷<=óõ>»3>¹>šÆÛ?7|»?¿º?½—J?ê»?è^·?Ö &?žû?Oí|>õ.ö>:z¥>Y:>½=ÿ3"=ö‘>¬´=ò’w=èÓX=íéž=à»™=Ö—9=Ú̼>­=òϽ=éå´=é†+> W>¹Ï>Q=ÿk¥>ãd=þè¾=õ=ø>ø> >·ò>V—>wË=ÚUÉ=Ú[t=áÊæ=ô7»>oå=þNc=ïÇ=Ûº]=ó|=ì·H=Ú°š=Ô5Ó=é­Ç=æ1£=Ó$F=¶-u=ò+>uo=ðâ¾=øÌû=ïeˆ=ö > i×>δ=èª7=ÓdR=é7Æ=ê7T=æ•l=éè>ÏÉ=ê®I=ì‹›=óû=ç¾Ç=û €=ö}(=êî =ëˆ,=ßÝ+=Ü *=ÞL,>,/=ñ÷Š=ë„Ó=ê¯J=ÍNä=ã3=ïÏ=õ¨Æ=à{=æ•=ðB¯>==éÀw=ÚMr=Ú³=ñ >³û>G=ñì=¾=Ôö?=òµ>$Ü=ö*=ÙŤ=íêd=ýï =ø„>¡y=÷M‹=Þ\v=Ñq=Ýç0=Ýà•=Ü•=Û7‹=ç t=øš>E§>ªÕ=þâ=é`§=ä¼ä=þ°=÷rÈ>úÏ>Æ=äV#=Ð…X=ä ú=ý>K«=ÜPY=Ѳ=ÓÃÃ=îw”=Ú»ª=Ï-`=Ï«}=õf,=èÌú=îò=öI'=õ{þ=ïÒ=îË©=êeg=׺˜=ßé=íö$=ðú|=Ñ]º=í =ñ©Ó=ëf°=ÔD%=Õ>_=Þ¼=átì=Õß™=ù¿p>$U>í=ÿƒR=é1­=켆=õVÅ>È•>¾Ø=ûþ-=ç¯t=çË=Ư8=ë•è=ûRU=õm×=Þwï>Ü´=üºõ=ÉÈD=øßS=ìÆ'=Óh=» =ï^º=êq=è¬Ò=éš;=ò) =ßÏ=ÞrD=ßk =ѲÏ>4=üž‰=é9=â–=þ¤Ï=ìbl=Û©õ=Ú̱=ÒýØ=ç?o=ù6>G=ß±Ž=ë3ñ=åT=Ò,=âGl=ô"ž>»„>sì=âû7=Ö„#=ýå¶>Z¦=óUN=ì‚Ä=û÷=ú¨†=Îvê=âˆ=è1=êwŽ=íÞÞ>|î=ÝMé=Æb=Ã@=æVÊ=Íã(=Òv=ã5i=Çç”=èÛ¤=ù »=ýxw=ìá -=üËÞ=û -=ìûP=Ë?=þa =ÛáÅ=ÝGI=þ/Q=ÅÎ=Ô»¦=Ús(=Ö€=ÅÐÞ=飞=ð ¥=æ™Å=Ò+(=ÊM=ä·ç=á¿.=Àæž=ôÊ|=îãË=ÛS=Á‹ß=Ï5=»Õ$=Ư¡=ÕÕe=åoÇ=¾–6=¹À=Ê®=ú2z=û½A=á,·=ÜÞä=â‘=¬ -Æ=¿S=â›u=ûDÅ=ç â=Ð'Q=Ï”E=á—>>y1=ä´ =ØNK=ËÄý=Æ­Ô=Ø`&=å1’=Û‘,=Íò~=¿i=Ä =¶ŠŸ=¹o=ÎÛ?=¯—½=ºc =á8>Â>F> Íè=ì®=Èáz=Ên=Ôù¥=ñÉÚ=ïøˆ=ÖE=¨•Ž=«rÍ=Ë>F=àW=Öi=óéJ=ïÒv=îØv=éǧ>kÇ=à‡=ÉY=Ï¥Ñ=ëÛM=äÕ=Ô=æ Ÿ>à>ãØ=丿=Òo=ÃV=²t -=ð˜ß=à¸Þ=ßð1=ôÓB>¬¯=ò×ö=äe=Û%C=Ù…×=Þz4=Êô=Î=Ù]~=àœ•=æ“=á)ˆ=Ö’V=Èç-=Ñ'½=Ýå=Ónb=À¶Ö=ä"Q=òz=æV¦=䯇>‘=Ù =Ûï“=Ý•=åÒ=ÅJÍ=ÓT =ܪ=ß0ê=Ø»ƒ=·Ðk=æÞp=Õ¢(=ÄéU=ènµ=û¦x>‚Ù}>ÿ•A?>ñQ>R7=àÝ =ßtý=ÝÂæ=äàF=Þ´Ç=êå=âÉÕ=ÞÌI=ãóä=Ù&> -dÞ> µ>V?=ìÀy=Ü+*=Ôã¿=âÖ(=á'½=·ý´=×a¨=Ùi“=úS½=ù‹Ô=Å,ë=æ[R=æo«=Ô]=½Ü‚=þÄ=ÆÕî=Õ t=ÍÊP=¿ó˜=Ãfý=ÖÁ=Ï“=Ù¦´=ÞÀ‘=ß=F=Ù/k=ÜÉC=à/=Ó0 -=ï7ê=Ïû€=Ô0=êSô=å½=È7=•ÿ„=°P=âÞ¶=Óv=½íN=ûn|>up=õ¯P=ì§>î=Ü „=΂Ô=èùš=µd–=Ül=Ï£=Ã;Æ=ÝP®=Óö¶=âž¿=é—’=Þx’=À =È~±=ÐÃa=¿Ç=§;»=» ±=íäÌ=»è2=¯×ÿ=º:=Û\¬=Ãç=ìÓÓ=ÛÂw=ÀôV=Ï~×=®Ô=Åφ=Á@%=Á!“=毶=«öÇ=Ìt—=Ü7n=Ú²8=çÓ$=æP‹=Ñ/¹=̾=Âc2=ɨI=ç®Á=ãô(=Ü9³=Îã=©C=ÍòØ=ÇÄg=Û­f=Þ1=Ä4=Û¤}=®¥=Æv»=ÑŽ¨=ÏË=®'X=å3v=ã.Ì=Ä5=ÑÔŒ==â¥=ÑîA=Ñ•=ÜU^=»Ü/=Õ/i=á¬=óñÿ=Ñq9=ÝŠ=íç=ìe×=ìÔ =Î_E=æ¨ÿ=ÁN=ÃSL=ÀØ·=üŒR>TŸ=ýü_> 1t> -;y=ûRî=ÂRY=Ͼ=÷_þ>~R=ÿ©>:þ=ÔL=ÌVñ=Ò€½=Èç5=²¾=ÁIª=ìòæ=Ú"¯=½“ð=š+F=Ãf“=³kÄ=¾m =ЂI=Þe=ßš=äxv=¡Ë©=Áyü=×VÒ=½=¬¿W=á2=¦À=¡bÅ=Õ—Ñ=Ù|Š=ßµ5=ÑNÅ=¤Ø.=µÊ=ã«B=Í1L>¹Ž> a">i‰=ÏY=Þ =Ý¡š=¼UÃ=¹˜Á=¶•Ê=Ôû=×æÙ=óç=Ù=³aL=ɉf=Ä·`=És=åÀ‹> ¢³>Å[Ú?2WR?ƒªf?†7Ó?‚ÀF?`ªw?`C¥?‰ˆ0?ƒNY?_ŸK?Ív>}¨®> í/>8> %Ì=èÎ=Û(Ý=Õ=ìa{=Ý”=ü^=à•ú=Û‘é=æ»ñ=þzÇ=õIˆ=Ó´÷=ÉRý=ØC~=ò³=ãü~=éôe=îÚ%=îˆ=ôx=æÐP=Òr—=·uf=Åñ=ÙxC=Ûâ=ã\G=éê.>-m=æÃ4=Ë_=Ëm‹=ßEå=«˜Ï=Ï8ô=çp<=ëÄ'=óŠ=áÜF=ê*=ó#u=ÂF=ÕŒc=Ù”,=è¼G=óD=ù˜ý=ÊËè=ÑjÝ>Óú=Õ=ÑK¼=Ư{=Å9Ë=½Æå=Þ–¦=å>ú*=øqð=ãá{=ŠÈ=¦|[=ú“C=ÇZq=Ú—ð> )=ùQ¬>`H=äd²=Ô÷œ=ÌÍ«=§Cª=½ì:=Ý3ø=Ô7Ú=Ƥ&=¸Q=¬aˆ=¢’=¬°¾=¬¹=ãi=ß÷=ÙÀ©=ìØ*=Óõj=¾Ìg=³‚Ö=ÉrË=ÑÞ =­F=ÅR=¥’=ت=Ö3O=ệ=á×Ý=¼Æ=Ät_=˜|ž=¡Óš=ãK=Õ¨™=Õ½?=¸ï=¸í!=ü“=ß¿=Å›x=ÁèØ=·Gµ=£Åí=ÒÁÊ=ÜÈ®=èÕó=æ¢á=À (=–"•=ÞM =Ó•=â˜Q=úËî>z2=Ðdx=ß@=“Éæ=­EÏ=Éyß=Ôã=À.²=Ï£8=×aK=ét=îܱ=ùÔÓ=ûMž=ìµ>û¢=õV½=óòª>ò.=ëJ.=é¨v=ÓXâ=õhA=ç\=ãV£=ðο=ßG?=áI¶=ÎÂl=·K=Ä•=Ãà=Ê‘9=¹b=Ϻ=âmË=Ê–ø=Ò@[=ä{Ÿ=éC&=öa=ûÀ =óÓ=å=&=ÓÃ’=©ËD=á ¤>ó=Hã=²@=©gp=ÆÃã=Õ2É=Éðú=Éò¦=±ÎÉ=Ê-À=ÈŒ=Ðb=Ób=ë8l>E‡=ô+C=Þ®=Æ×ù=Ó%±=Óºþ=ÈY=±&*=Ë5ä=È®Ö=ÆûX=Ê”4=Ñã=ºã=¯{¡=¦ÌÇ=ªæñ=¸ån=ËÍh=ÂðÏ=² ‘=ÐJy=°pM=Ä Ž=ÕÓb=ܵÓ=Ì&=ÄP1=Áðm=ÇÌq=Àüå=èíO=Ðmå=Ëu=Ñ4¢=Ûl•=º:f=¶îó=ÔE;=Ùnï=·"=Ðxù=Ù"Ú=º=ÂáŒ=¤‘;=œ”³=› 1=­ê³=É)Ø=×IH=›á†=­g4=·Ý^=¾^=Îâx=Þ7e=üà=¯©“=»y= ý€=œuU=±¦ß=ä9ˆ=òµÏ=é‡Å> ‘]>¯Å=×Ì=ÔmÁ=Ôc =éCù=çO”=Í}+=ÞÉd=Õƒ=Îp=À9Â=ÜZ†> Óº=í í=Ð9Š=ÉgO=Ķm=Û>I=ö¤w=д=Ø8=Ä•f=±Ø=Â`°=ÖWµ=Õ X=ܶ¹=¹tã=¿‡¢=é”=ÐJ{=ÀÅ£=»­*=Ê‹=Üå©=ól>üh>¨U=΀ =Øj=÷K=ÄÚk=ÔJd=ÞÞE=ÝHg=àÄ=ß_†=å0°=Ô~H=’R=Ë­‹=ײ=Ù]Å=áG?=åp·=ñWq=Ú{=ï6—> +i>ðâ=ùû>> xq> z> Õ>Së=ᑉ=ÔÚO=ù Ñ=òùò=ã{©=ØÂŒ=º}Ü=Üy=Ó =×{y=Úëë=Í>Î=ÒZ=Úöœ=ëG->J=ÇX¶=ê¡=ëpÅ=3J=¥7*=»j^>óŒ=ÿº=ç’=ë…=³ç“=Ê7è>pÈ> >N\=ñ÷X=ùÈ==ðÌS=Î;Å=ÖSË=ãX«=üÍ>æ³>å§> ->VC=èý<=é>û=Ô&—=Êm=ÐÖ¼=èÙ[=ðt(=äÍy=Ø+.>ÉÌ>]‘>åî=òú“=ñg=íË×=ý?B=ò50=ÚÀÄ>6Ä>"Õ=ÛyÖ=ß:>M¯>×ç>'Â7>-þÀ>/‘Ë>@Ä>Q¡¥>^(¯>GÈo>@Áœ>1>LÌí>U§>R—>Z1m>c¯a>"è>ƒš>wï@>Ž›h>«>ŠÂ;>o†œ>zD=>ƒí>~Çw>sôû>xuP>M[ù>JàN>H É>QCh>D=>3¼>!·Ô> M> •Ù>$‘¾>¶®>¯’=ÔÆb=Û¹”=ô’B> S>Õ=ýÀ‚=ý¡/=ìŽã=Ì)›=Û%ê=Ü7ž=ÔÍ =ÍWß=Ç›ƒ=Àþ?=ëòc=æ6œ=¶YÀ=ß™Á=õ¬Õ> Qô=ðG2=ã¼Æ=â±=Ô¾¨=×|J=ôöp=Á*=¦á =2I=“Á]= ðž=ѧ=× x=Ú"Ã=áPU=á=ÒßÉ=ŽR=Ïæ=ñ¸{=é¡h=ãH=âK=ô;à=×((=ÏGR>­=øW§=ðÂØ>)Ë>žV>Eø >¾9?ÜÈ?¸&?¸>âÛ˜>£> _=õ0=Ý®=Íâö=ÒwÖ=×bŠ=Õ]=ïkâ=þ -a=ÜyM=ËßÀ=ÇË=í»~=ÒiÒ=½Î†=ž{T=¤=¨å_=ÀgÙ=¶=¹E@>Fè=Þ!®=Íí=û£Œ=Û1q=ƽð=ÆmO=ÀæD=¸f‡=¢Àw=³Œd=Ã=ç«–=ÖV‚=ÈX$=¬y]=ÏG:=Þ,®=κ®=ÎÇu=Ѩò=Ù>=ßH“=Ü•©=Ì Ã=¿šØ=¿¦8=Â/ú=ÆÞ³=¿Îf=¼±=·>$=Õïô=áúÆ=í{ú=¯º‘=ÁªÊ=åÅE=¼‰Ú= þ,=ƒ =Õ‘q=Ô¤=Ð|=¾,ù=¼õ&=»‹x=Ì)=ÇÇ—=Æ97=É¡Î=»¹7=µb=Ê<=É„?=ÊÂ7=Øȼ=Þ!Ý=ØìÄ=§wo=±,Ç=¶/=»Uš=ãÐ=íLß=ËI)=ê‰=ô6=ëdZ=Òc=ØZh=ô—Ô>«p>é“=ãWg=Û8p=ßÜ°=ê=ã‡Ð=ê'õ=ñÅè=òáÉ=܉Z=Â5K=ê =òƒÐ=úc=ÿæ-=äB=ÐÙm=ß>,=ßOí=â~j=÷Õj=ò¤v=î¸Ð=çÒµ=ÛØé=Úw=éb–=Ý[‚=Òʇ=ÀNþ=À[j=Ìœ=â ¿=Ù¤›=ï>t›=ñ–‰=àªC=лO>ªC=î.z=ÑCY=ßo¦=ä]=ì’[>\u=è£é=Øp‚=æ¢D=÷2„=û®k=õ2w=ûM =õ‡=âKÈ=ÜvÖ=õ–ó>cq=ÐKF=Êîþ=Ð,A=Öñ =ê¬M=ü€õ=·~t=Ú‘Ò=ð'=Å=Îp=Ó„=Ô;/=ä‡Ù=êT¯=êD =ÆVn=å‡ >Ð>ÿ >Îû?Z-?0Š¦?°ñ?¢>9Q>x>¦¸`?%¤2?&oˆ?']>ì…÷>‹^˜>1,é=éß‘=éc=ñôð=ÿ`W=ØÞ”=áÄd=÷­8=Üù=èJ]=÷=ïµ½=ô Ñ=ùŠ>Vœ=ô¦=éßð=÷Â=ìq“=å=àfÛ=ÚëY=à"¦=é›=ñbº=Ôh½=±%=ÙvZ=Ú¦ï=ÚR¥=ÔÈŸ=âm¾=éÈ2=ð¢N=ß =èXˆ>²«>`=öB@=è.Š=¶í¡=Ìüs=鬂=÷qá> -ºT>Tì=Ý‚ =ö­ë>‘=ýB¬=ì*=ôwj> -½=ýéZ=ôK´=ë"f>¨=ÿA$=óºV>Þ…=ñÜ=ßUz=Ø­V=Ø#Æ=àߨ=ôhh=òã=ç]=Óc=å³=ö {>¼f=æe=öÙ±=ûýc=Þ¶š=ø‡K>üo>™3=Óä›=Ü›>º>¿=êÎG=Ù÷l=ùק=þ³ =ø˜7=Ö,=ßûñ=íjë>VO>Û> ¡#>”Ô>û{> mc>Î==ÿAÝ=õZŽ=ö X>(]>µñ>Tö=ö ù=ã;g=ò]—>n‚=ÛGa=ÿÍ,> ÛK>{ê=ï¾=à$=ê?û=÷uæ=÷ô#=ôÚy=ß»=ãÑ=æ-F=ß÷R> j>°;>—¼=è¡’=ìx4>ù=ó¼a=öP=ý->'1=ódÙ=Û,<=ÚÄ=åïg>i>£,=üô2=ì6=åõ >!ý=ôdT=ìàÝ=øz=ù@Å=åS¢=Àa„=Ô,,=ݯß=æ±>©«>6 >>ï>ÑÒ>Ü>gù>Ãæ=ô-ý=óù=襤=ÐjŠ=æam=ìí9=Üþ=÷Œ5=ñüä=ÜÏ=â =è¶]=íÐ==ès=×AÈ=Ø®‚=ü a=ö‘:=è¤î=Ó«°=Å­+=¾÷-=Âý3>œ$=æ¾=è®>ï=ÂŽ=Õñ—=ûs\=íªø=Ýù=ÚN]=û8´=æÇI=ßU*=ßËO=ÿr=ïÍ×=ãâË>fÚ>#Î=ôªí=ÒŒA=õ¾{=ðÂ2=á÷â=éú=îXÝ=ò]p=ù× =õ\Â=ë1F=Ù—«=ͺB=ÌJC=ÑÌ‹=òµ>×~>f=ì[K=øE¬=çA2=ÐØ…=úÇ=уœ=Ãäk=ã6=»þ=·c3=À†u=òx}=ó¸S=úÈN>¿Â>ƺ>>•Š> øÁ=øH2=ÝÊÔ> Üó>•Ò>ê†>p >/>¹Š>S“=òÖ|=òv™=ôì”=ÿr”=â˜2=ãÖ”=ëíŒ>X=ýÆ=ùu=ÿ¸>M=ð÷-=Õié=ð=ô'ü=õÍQ=õ’™=Ú¶Ì=Û=è+ƒ=ï>=ëWÛ=ê4w=ð­=ða‹=â>t=Í]\>§=ðKc=Ú½»=ÏÞ¤=ð&‡=ûÐ>…f=åL=Øa‰=Ó€œ=äñI=Ï_œ=Ø­=òt=Þ6L=ÞZ[=àl³=ìY> -„>Š²=ú´2=ßjE=ëHS=ïÖI=Þ (=ê$==ó -¦=ý: >Ì/>:@>x½> ÎW>t€>;#> Çh=ÚËš=賕=÷"³>³x=è=îøO=ýÈ!=ê³Î=ú^R>,ÿ>ò=ÍïO=èjr>Æó>ß=÷ån=ïsI=ëc=ã_=í¿Y=ùLî=ýHñ=皯=áŠÞ=àCu=ÚG=ë«Î=öh7=ý<Ž>ƒw=ý2t=õJa==é~=ÞpÚ=Ê­Ž=öœà=þú >î]>Çá=ú: =îÛ–=åNT=ä÷Å=íRE=õa~=ÿñ;=ݱV=Ò¡Š=ÑQ,=ñG‘=ëŠD=ëšá=ïÇ=êRÀ=í(ú=ó4>š5=õÔØ=õ^>=ü -®=¹J¾=Ô'ó=àT=Õà£>ü»> cY>Sý>ÍO>‹‡>D2>Ë¢>T7=ùã×=ì%}=ë»Í=ðú=ï-u=íêY>Ð)=íø=âF=ÝKn=ë{p=ðŽÕ==ß}E=Æ€=É”F=ÒÈÛ=ìo5=ð=Y=íu4=æ?=ÒâI=áÄG=æ@=Õ®&=ž™í=Éÿ=>8=þÔó=îÎ=ÙÂ=¿M"=÷©=Óf=Ćì=ÔŽ˜=Ôp=Ó¿=Ý¡!>†”=Ñÿ`=Ò9e=àV=Úˆƒ=ÞRn=êO‘=üÜ‚>øæ=í =Û®`=á2K=áç(=Új™=×æ¥=öJ\=ðÑ¿=äR9=Ó">=ÌßÒ=鈃=î W=Ú“o=áqõ=ÝU¦=àiû=öͬ=Þš;=åmP=ê&[=Å™¤=à|5=îXJ=öÓ >w\=üAÌ=ö›=õêF=á÷ =êXÓ=ë~=Üfè=ݦd=ík|=øŒÖ=î÷j=ÍŒX=Ù·ó=ïkç=ÕfÂ>"G>®u=ùî6=ò@˜=í±=âcŒ=Í/ÿ>l=úº²=æ‹Ë=Ä=l=ýŸú=ôüÞ=䃣=Ù2X=Ô(=Ûí=à!Ñ=Ìü=ïj=ï „=ä‰>>\=ñ2c=òJ>ç>Ó =í”=âñp=â…Õ=Ìž¦=á’F=ð9=ô¼C=Ô]0=Ü°Å=çí =íF¬=î9ò=מË=Æš=Þð’=Í'¹=Ó!q=ßmS=婳=àÎ=êNP=ý]}>áƒ>y=í¢ü=Ó#>=ý®#=é˜ã=ɤº=Þó=ìáï=ùóÄ>J =½`œ=Ïk=ÝÍI=çÒ> R >»=éŒ=Ññ¤>«Ê=óý€=çx=èªö=çÞ=àMÈ=×.t=Åû€=Ùc6=ÔaÞ=Лñ=Ýž«=Ëñ=ïbù>l}=ãµ=ظ=ã4R=î÷†=ðªy=ãÖ^=þ)F> -ž=>„û=ÔÔU=Ñ=ש=ä¾=õ ¤=áþ=ÊÔ˜=Êl‘=ÒÐ<=ÑEÜ=×¾¥> Ž>¾=餋=ÇÐq=á§È=ä§`=ýÌþ>½>'á>w‰É>Šzd>—ô>°ß>‹òt>qå>FUÁ>k©=ãø¼=Ô-v=Öe=þ× >µ=àí*=Ç…H=Ò±€=ée=Ù½5=Åï:=¼yê=ÄöÏ=â /=ëzÑ=Ä!‹=ëÃé=äÌ°=à]=Û#ª=ñ *=õÐ =öjb=ùK¥=ì.û=ê•k=ìY=íØs=óÑ}>õ˜=øôv=Ö§=äA9>aR>¤ô=ð=×=Á=Öe£=Ñ)ˆ=Ȥ€=ãïæ=ö…¢=áüu=ΉÁ=Ï =ëâ=Ú½¾=Êê‰=Íð“=Ê™n=¹vª=»Dô=îÝ]=ð/Â=áœ(=Õ>¯=ÐL÷=ôDa=Ý>=ÝC=ðfg=àèê=ËÛq=ÚÎ=òûÃ=Û/³=â ^=á -=Ûï1=ÙQ=ì‡=ï’@=â-ø=¼A=ÂîB=ó¢=²€=Å:=ãqð=Ú)÷=ÙR!=Ö»=àßÎ=ÎkÊ=Ú÷ã=õ½=ÒÝÛ=Çÿþ=Ê«½=Õ×ö=õãK=Ä=›=¿#ò=¹¿==£/ý=Ùðè=ÇÿÅ=Ã1Â=Ã.ã=Ì7u=Ì=¥=ËÖð=ÐBç=Þ73=Ø -=ü.h>dì=ÈJx=öÏ_=ÙêN=Ôÿ¬=Ôvà=ðƒ(>x-=û'·=ßÙÂ=بO=øõ=ÚÏk=»(=Ì·r=ÍŒé=Ñß=Â×{=¦)ë=ôRN=×ÖK=Þ£#=ñ¿=Çhÿ=æ“€=ç9ï=á2u=×iá=Úþ“=´†ì=¬s=Ïã=ØÊÒ=ÌS,=Ëdß=Ó8p=È=Áý{=Æpf=»½&=“š©=Õ)=ÌV´=Ä«ý=¼|=ØÝ -=¼=¿õÏ=Ç3=·[˜=Áœ =®gÉ=²9L=Í’t=Ær\=Ç£”=ËÇ`=ø¼Ÿ>U">¸4>Ìvl>Çáç>·dB>J›>Ty=î£><4> ØŸ>™ä>±·Q>þ>ÆŸ;>v¶>/‹=ðò=Íhê=êFÇ=Ðe‡=Þñé=×I”=¹¾°=×7¾=ÞRw=ï¹G=ÿþ¤=É8à=ÈKµ=Ò„=Òµ5=Ïöœ=¼òÇ=ç5L=áQ=Ì¥ -=ÓŠ=Ï =×è×=×ou=ÁÆR=¿Pÿ=Þ;X=Á=Ÿê‰=¬™8=®ÿ\=ñ¼2>Fâ=à`=Ï£=ÆtÑ=Úc`=å2=ÎWU=Üep=ä¥=åì“=ÙÄ›=Þvý=×ö:=Ĭ=¶ë=¶Uy=⫈=Ï==ÒË=Ïd=çÔ=Èú'=×éG=Îæµ=·äÓ=· ³=ëȱ=Þrw=Úi\=÷Öà>=Ö°Q=× ¥=í36=ñ†}=¸ÎØ=»Å]=ÉÞz=ÔB=¿)ÿ=Îþý=ÉHœ=à€÷=ý2=éÝe=à Ð=ÆÞ5=ÐNæ=׬˜=íñ˜=úÁŸ=ë ¥=ådá=ÖÅ=ÃV =ÊÇ%=ÈùQ=Ê'}=ßìP=ËU==Êž=¬=¿uÊ=Õ%Ò=íÏ·=Ìõ=Áªz=ÑÞ0=ÃdÕ=Ê7×=Ú¥i=Йš=º*¹=Ë¡à=ÖRa=©'ú=ž…„=¨š\=œZq=з8=²d<=²,=Á{•=ªí=·Sx=· ‡=®o=ÆMp=ܽî=ß‘‚=Ìëk=·Yñ=ªÒ4=ªÕð=¡Õë=œ ß=¡ì¾=³ÅØ=»B=ÒÒ=×Å=È—p=È €=Ɔj=Ïb=Öо=ÕŸŠ=åq,=éµx=Ö¤Ð=Ô0H=ÎR„=Õ†¸=Ô®Ž=²}=°3ý=ÈNò=áF»=áû=»o =¬©$=¿Ÿ=ÕCª=ص†=µù’=½‡=ã =Ó„=Ã¥=Ú”ï=àœZ=áeo=Æ¥=ÆýB=Óã[=Ø>‡=Ä=ÕSg=Ú}^=Ý"=×]`=Ó£h=·ì=Ãß?=ÈóŸ=ù.=ó=ü=ÞB =ÖÝò=½>b=Î`´=ÙT=Ùkª=¼;¤=´—æ=ÐZ=èȹ=ùj=í±„=òÖ6=ùáò=â[1=нx=Û=å9c=ßwu=Ø×[=¿E%=Ö:=àùk=ìpJ=áyØ=Õ‹Ú=Ç û=ªê…=»=¾ÅÍ=Ë+Ó=¶Äÿ=Éwè=Öˆr=óVO=äZû=Ä/I=ëiÙ=Ù÷d=ÖW‘=Üj=ãüL>å==á4ß=ìÞÇ=éu¿=ìîÒ=ö¢¢=ëB4=× N=ÅÆ=ªn•=PË=Çj=·ƒ|=¥¹ˆ=ÌŽ;=ÊÆ…= +—=Èðð=ÉYŠ=Õ±¥=Ùt’=Ðx'=Í =´8‰=£8¦=¾ëþ=à”¯=Ð%ð> ¡Q=Ê(=ÃÀÒ=ɱâ=Óº1=ªž=Úï}=ß—î=àL\=ã Â=²Dd=£WR=ìCU=ãËu=°^º=Ôð=К|=¡¦=¤²1=®$Ö=ºÌÅ=Ãt¾=§S=Ȥ6=ÝÜç=â=Ö~=Åt=¯ =´Ù˜=¾ÍT=ÌJe=äOm=ç¨=ÿÜÓ=ßÔ|=²¤y=²¶„=¥“d=µ³Z=Ìß=ññ±=Å®Ñ=”Ó´=¯Žx=­\=ÐX -=Óèþ=½‹&=¢ô=áùð=æy=Ù±ÿ=ýب=«ß=¢¡7=·YÃ=àêŽ=·k+=¬¤¦=Û‰=ãè=ßís=®ð“=¶ÀH=ê )=Àß=¾¶ª=Ç™ˆ=ºA=²VÒ=®ÒI=Åõ¼=À½_=´¨T=²»=Ód¦=çÂ=¡rE=¬¡÷=Ç8[=ìS¼=À#r=’@=©!n=Îs¸=ÐÑÙ=Ã+~=¾É×=ƒ7×=ܹ\=Ý)†=’˜ý=Ò=¸D?=ß5í=ÃÆL=ÉÃø=Üçæ=Ë¥=¯P=Ô‡=Âøé=Ùúà=¯X=£åÒ=º±-=ä®=þÓ÷=á*b=㳘=ðœª=ôÂ@=ßÐÁ=ÁµL=¶ó=­Üó=®áÇ=Æ~=å‡ë=Î|/=°Å=Æez=Àbª=Ì{§=Þæj=éŠ?=Ò& =¯af=´+{=‘Ó==·²=Ê=Ö@n=ÒU`=Âìè=¼Â=Û‹µ=âWÈ=ß!=åzL=ÏÚ^=å b=ç2™=Ãk=¶Mw=²rX=ë,°=Ú8í=`Ì=¾!;=ÆÒ=ÂI=¤ëÖ=¬‡d=¢ve=«t&=¾=“~=‹ÞV=€ý`=Ä„=ÈÌQ=¯¿c=Ë4=Í0=» ö= ñå=Ÿ‘=¢––=¦Ò=Ä\J=¾¯Ê=« S=°ð=ÃR =Øç=» =³ÏÏ=µ -H=–*ã=”™Ì=£‡ñ=˜¶È=±Q¶=¢?=Ëq8=Ôû¡=Æû’=ºe=¹ÿ‹=¶s=ÊoF=Û=¯¿W=©xo=·ÙÌ=«Ì¦=oM=œÁ=¦Œ8=­IY=ÂQ6=¯L†=ªV:=©kk=ªñ~=¼!i=Ò“=Öú¶=Ñ7ú=ËÌñ=ºˆ=áo=׎„=º]=Ä€Ê=©¢ß=´á=ûÎ=Ë¥=Ò}q=ÅéV=¾ÍI=žÉX=²¹=¥+H=¨=²–Ý=§=±#Ô=Êç=ÝKÒ=°bª=¨>¿=Ðí=ÍÒX=ÌÔ½=¡,H=¤™¦=¼´•=¾èÔ=Ò œ=ç Ý=̇=Îúœ=Òy#=¬€=¯âÐ=ÎTÕ=®×1=°ˆ=ÄhÞ=Òñ=ÜzØ=Ë6Ý=Ï ©=Ð[D=ûÃv=äz =ȧð=±!ï=Á´µ=êm¢=éT·=ƾ$=Ëêç=Êß=ÍÜl=é‚7=ÎØó=´Åó=»-=ÊÁŽ=LJX=É!É=Ô¹ƒ=Æþj=ºŸ¬=®–Â=“•a=×6õ=ó]Ë=õ]=ɽ»=»Ð=¹5À=·ÊÑ=°}¸='ÿ=›cá=†Å’=µ-¨=­Üö=•‰Ÿ= ¬â=¦Nø=¾¸=Ç7=ÍÃ%=ð@Æ=ê0=÷V=ÏàÕ=§™ç=§;â=è“_=Ñ“=»Eë=ÖKä=âb]=ßv/=ÕP4=Þ®=â­ì=ÝQ¿=碲=â=»äî=ǘ=Õ.I=ÍHD=Î@Q=ô‰=äÚÍ=ÔUI=ëJ=ÊÉ=Õ †=´3d=®]ê=Çd¶=î…=ê=é/û=âÔ =à8¢=þÜ=õ6Á=î Å=ØQN=éJ>û=âò=ó¢ ->&> -S> -íš>{>´v>,~”>Fþ>4€>*$¥><äÔ>?­E>=l§>A7÷>aTŠ>f‹{>‚¥ >Ýg>C>~Ò®>¬N>—[Ì>˜Rå>šjQ>_ö>Š%>‡Ê~>‡R>‰>jI>6_>1×w>, *>#¡â>²>1H>&›ñ>#óR>!_>%•+>ñ0> {q=¨~ä=Ò¹ô=îi¦>ª©=÷^É=Ôm¿=±ˆ=ÏšÕ=ÛþL=±X1=¸Ø4=Á^y=¯Û -=³%=¸K2=ÇEÏ=Ñ*l=ÙP=âϦ=ÜÅ“=ÎÊ =Óy=æëÙ>€M>­ >(ˆÂ>7a>8Ä>.a{> ê>:²Q><Ï> hS>M=ä–.=¥Å`=ÄôA=ÆøÖ=­Æ4=Ãz=ÌžÑ=µl{=º¦=Àsp=¾IŸ=³ùZ=®¹=Ö{=É@f=¿îP=¸–g=´=½4=¥ò=¯>d=¼Ëö=§¡Ÿ=¬.|=»¸¨=”è?=£ä=»(1=¼0]=¿zŽ=©™Q=ÓMÐ=Ï0o=°Ë=§R=³©G=È=Ù=¹bX=¾$«=Ø%$=²÷Š=¥lî=¦Š¹=ÅŽü=Åœ1=¥æÉ=½4`=É°$=ÕqÅ=ÆN¶=¿I =Ýq =ÕSí=Çj,=Äcù=Ä .=ÄQ=»¡·=ºFŠ=¾},=ÓFÁ=Ñÿ=Òb=ÊoÜ=Ôá=Ù÷<=ÂlÞ=ÀY<=ÅÓE=Û4ˆ=ÉP=¼<Ç=¼4ô=¼¸»= I=¼E3=È‹=Í =Îçê=±i=šež=¡”.=©\=±ê=¢Ï1=¡.V=¢ÔT=²}Ÿ=Á¯h=ÊÏ=«C0=¿S¹=Ó¥Ë=¼0-=×`=ôÊ-=ÔD2=Λe=ÉVÄ=¸y=ª‚è=›(*=Ío4=еo=ËÔ4=×ÿR=ºäˆ=¤dÆ=ÇÜí=·zì=¢#=ÆvÃ=ÎEä=Ði/=Çè‘=جr=å…¥=²v¤=½¦}=Îʺ=Ö›=ÎæT=ă=¯¥=×Ò{=ø­‡=¾P”=ãQ8=ýr=Äj°=Ë;=Í =â%e=ÐkÈ=Ê3Æ=––=½ÓŠ=ÖÙ&=Â{=Ç\h=‹E=•,ä=Ìlv=ìrc=æ >þ>,¾>ÕH>ŒŸÊ>‹½>SN‰> ú=á¶X>äY=ñë—=âþ¸=Þ&©=ùZö>>Cc>\ñ³>Zªø>B¾¥>I½=ÿè=ÚΫ=È•á=Ä·Ë=Ä>ù=³ô—=·0»=ÊËó=é=ÛO=»íŽ=Û¢P=Ú{ì=ÐÌM=ÎÛ€=ëí>»·=½žá=͘r=ÞÛž=Ýý=èJ>=ð®=ò1=ëÍ=çâ=ëçú=â§=ÞÃW=Ýoá=Ý"Ø=קë=²#£=ÖQ=ê+c=Üc =Õ¯=؉ï=ã‚=ñ9²=ëÊ“=Æfƒ=ÅÚ›=ÑUþ=á˜=·J=¼Ú4=Ùo¥=ÓÂù=ݱ½=î =í,ª=öB¹=úÖœ=Ú=ßκ=åøé=Ò =ÊÛª=É‘í=»œ»=Ôδ=à6z=Áµt=ܤ=åfR=Á*=©=©˜=ÎØg=¹’™=½„™=ÜèÑ=¾ŽJ=¾Ž™=Ôè«=Ú¹ =ß :=á÷4=Ìàœ=Ôü=ÚJƒ=ÆÄ£=ʺ=Ðd=éMu=áƒL=ÛLb=ñ‹_=Õ =ÄïÉ=ãɤ=Ð=Êýq=Ö»ô=éLö=ä…]=Ï_m=Ϭ‘=ÊÑš=É3;>š=Þ g=¥w=¾î=Ò˜ç=àž¸=Þ8E=æO|=óîÉ=ÞL™=Ï0–=ÔÒã>=ÚµÌ=ÑÕ=Ï«Ç=Ù²Ù=à ’=ÝJE=í\ò=Úë‚=ºI›=Ó‰ =Ù§ˆ=Ûß=ðS\=é¿ç=âæ -=â=î=ú=ò¼=Ô`c=ÈØ´=ÉÎ=Ó†ï=ãð=Ú~÷=¾Wó=ÏM=ÆÄ£=·Ò“=ã -§=Ó9 =ÃjV=×8L=×ĸ=Ûs =êºù=ëÈi=ñü£=éE =ÜÝ…=Øp•=ÕdÖ=ô?Ä=ú)·=ôÊ)=ÛAw=âðG=äöH=ÍT“=×û©=Þ„ª=è8=†=í·k>h‰=òÛ9=ð =û=ã‘‚=á&b=Üa²=ÄáV=ÔN=Ý  =î=èë=æ^+=á¹Ù=Þ =ÑF0=»‚¿=ÀÌÍ=Ê |=Ö_”=îÏ=êÒì=ß#6=Ój=Ç~T=ÐS&=ù­A=Ö,3=Ôdd=ñ>“=ÌÆ=ÙVz=û]B=á—®=Ò?=Ä/ú=ç/ç=Ö¾Ÿ=Øâî=á@w=Û=Ù·Z=ß÷‰=ÒWF=ÕQ=åÊB=å+%=âJ=Ö›G=ækÁ=ä£F=ã==î]=¿F/=ÆÐO=çÚ1=É;ˆ=És©=Î)=Ú7Ý=Û~Î=ÛŲ=àýÒ=Û¶=× T=Æ®Á=¶× =¿‚¥=Ò܇=³²5=ÑvÊ=èô5=ÌM=ÈL=Ñ=ÅkK=Õ/4=Ý«]=åä=ßî=àž=êÛb=Øw$=âø=èI=Þ-ƒ=蘂=àÊ=Ä`¡=Íru=×F.=Ý¡”=éÆ©=ò÷h=õˆ.=Ñ =àFÐ=æœ=ת =âó˜=êŠ5=ñæo=ìÔ=Únï=ÈÛÝ=çÄÃ=ÔLÆ=Ð~Õ=äÔk=à=ÎÕ=¹'ß=Ç7=Ð Î=×Z²=ß©ï=й=Ëb”=á–Õ=ÙÜÜ=ÓÚ×=Ŭ=ËŽG=ÏêB=Ô›=ÚVd=ÙCi=Ûx=Û¢h=ø^=ïÃÐ=Únþ=å¡=È&=¼¨=é=Ì¡ =ÄÇ´=Ñm¡=Ïœ=Î’¡=ÏPw=Ó* =åø=ëè=ØFl=ß7k=Ó=Å ==â¢ð=æ>=íÍþ=ò:]=àãZ=Øs=ØÓ#=ó™×=õCý=í™G=Ùe”=ÒÏ=Õdò=ß4-=În[=Äb=±`]=³õå=ÑËþ=ÚÌf=¸tÄ=ÁF=Åÿc=ÒÕ=ë94=æJT=æ7é=ñܹ=èÛM=æñŠ=åeo=öà=îûæ=ÓˆÔ=òŽÄ=Õlð=Áx==ÑéÅ=äW/=Ú‡¢=¾Á^=ä‡s=égW=ïC/> •©=ëß4=×L–=ÊÕ>=Ùá­=ï$“=úûÉ=ÞGÐ=æÞž=ëc;=ñ#‹=å§!=ß^p=ÎAÂ=ÏL =èO=ì F=ÝO'=âÅK=áE™=åìô>=éi.=Ý” =ù{¶=ܤd=ÕôÇ=ÚgN=í5#=â>=Ô|=è\¡=ù" =â"â=®¦k=é+E=ãàc=×aè=㘀=È£è=µ6^=µq8=ÄÎÒ=Ê“2=Úc°=âx˜=×´=ØÖö=âM`=Î’,=ÜG=ãÝÈ=»NÁ=Ͼ=ÐÈÓ=Ï¢H=Æ7=¾)ª=Âäi=µ>=Ænx=Ò¥=×*=Ñiæ=†G=µ¾=Ý{2=ÅŠü=Ìtc=é—û=Å8¸=ˆ=ÌÌ£=¼Es=ÊUk=Öó›=Þp$=Ä[=Ðe=Ê`Ö=¶Ô=¼Ô¿=É<}=Ùu=Óì=Î’=ÈG>=¿ýŒ=Àû=Ã…=Ì„=Ý=â™Ç=ã|]=å¶=¼6Õ=È)í=×iç=Ó‹1=æ>L=Ír=œR£=ÂQ¸=ä í=àˆì=­=º´-=ÓÙ°=á¤=¼ŽÓ=×…ó=Ú!Ù=Æ@³=×îÞ=Ó‹f=Í…Â=¨£Ø=ÅJá=Û©=ödÉ=ïúÙ=ëÌF=ä?½=Í-»=ÌÇÆ=çkË>÷Æ=ßJ‚=Õ~¶=Ú±p=üp{=Ô2™=ÄÅ=¸+ô=½£=Í¿[=ÔãB=Ïc³=®˜=Þ:†=ïÖ=ÐÑ=í€=ø -³=õ5b=Ñ3=ÃX=ÎQà=ðJ=˜>=Ï©|=ÎÁÈ=³ù{=Íø=àï=ó >›ÿ=æ‡=ØnO=ÞÌé=Ù=×»•=áÁþ=åóU=ÃÒ1=¾ŠÅ=‘•=Ú-þ=ùh=ïç`=Ãen=›äí=±–¼=½ê„=¹Vr=Ü­=ÚR=Ά’=¼¬ =ë6å=ð$7=øtO=ê.=Øp£=ÓÌ -=ãc=Ãd¨=Ì5Ê=ÔðÊ=¾@=ÂZ¨=Ï^ˆ=ØóF=Ò¼P=ß«Ì=ç#^=éß~=÷¶¡=Éç˜=Áéš=ÙaÙ=Úà°=Úm=؇½=¯À…=ç—¹=ßÚ¢=ÎÓM=Úy¶=×â§=é·=û÷‰=Ú—Ü=×!=ÔˆE=¾ºI=Ó&Ì=Þ¢£=ð\T>0ë=ü>Y=ãpœ=ÎëŒ=ÿwÛ=Þ³=ÝÚ=ÚUµ=ÚXÞ=¿_=Ã:ß=Ù§ =×û×=ä€ñ=é~;=î’=Ü"c=âS‰=åÂP=Ú(›=ÚS‘=Îf=ÆûW=Í.=ÈE¢=Ð#V=àÉ)=¸}l=Á3À=Ì¡=Ù–Æ=²6¹=«iÂ=µµÛ=ÇÍ =Ó¢Õ=Ú®Á=ÛN=׶`=êoÐ=ò)V=õ•È=̆b=çÐ(=á¥=Éî =Æì=¿¦ =¿¯ö=À=æHÅ=ÓÀ=¾Ë¼=©íš=Þߪ=Ñ ’=Û„>žb=âpÞ=Ï:–=ÊX=Ä5”=ÐÊb=¿|å=¼ö6=Ôåj=Ù¹==É%Y=ÍU=½æ'=ÜB]=È6ã=Çë°=üˆ’=Úu_=åÛ=ésK=È÷=Ž)$=šýÝ=·ÄÜ=Ö߃=âß¡=ÐTX=·ÜP=Î+˜=Åô}=Äÿ§=ÑG=Þœ§=¼Æ=¿ó=Ú”Z=°K=Í M=ÚO"=ãª=ÇÛ3=ªÛô=­«•=Îzñ=Qÿ=²Âè=¾±X=«2=Á}3=äŸG=èÆ=ÐÖ¿>Ê=ÿ\=èÙ=ÙN5=Å»ê=Î5>=ÔU_=ÒjÎ=Äþã=ð°U=ø»=æO9=îyd=ãÆô=ÇÁ=¥ =È“=É‘=Ä·ó=Ç•ñ=º|Î=ÉB!=Í@ú=ÅñË=éý=Ýú™=ÎÉ=ºH=éÆ=ÛÈÅ=±¿Ð=‡JY=ÒÀÌ=Ûœ=Þÿæ=ÜÌ=ºi =ÀÔò=Ï|=×Î=µmƒ=²cø=¾ŒÍ=к=ÝÊl=à!=átµ=ÚÔ=Á–=ÂôQ=¶º7=¬I}=®ƒ=š¤=½M =É£´=¹Ä.=ݳ=ÇŠ-=»Òw=ÏÔ·=ײž=ØH­=ÌUƒ=¼f°=´\y=ª?=µÂ=Éñà=Žâ‘=¦áÇ=²¯µ=Áö=·{=ËÔ=Å‘|=ËFþ=Êi=¶Ú=‹‰=ÐiÔ=Ç0Ü=ÐþX=Ï _=ÆÔþ=¿™=Ð6±=Ë™§=ÐçÌ=ä?¯=À²ü=åR=àƒ[=žPà=´ Ž=º»Ë=¼=´gø=¡ÙH=ÐQž=Ô³{=Çí=À÷â=ê3w=ã'=¿[Ñ=h=ñ?O=¹p=¨)=Æq[=ï¸×>߇> ¦>!ã> -Ï«=÷ò¡=ç\‘=íÏý>½R> aš>¾œ>8¨=ìkÑ=¶^=θÂ=ÛfØ=Àï -=­fÎ=Âø7=É.•=ùx=Ú É=žÉÅ=™w=¬î =Ê2=«|==¹k×=»3¤=»•=Ó,¡=ÈÖ2=ÊÌê=Ôu=È4n=Ò¤Š=Ö!Í=É¢`=‡U0=ÍK=Ô-=Î m=¨×s=ÇØe=Ø<=Ñ'=Á£=ß±=ÚDU=ÂçÌ=´ˆ=²˜=©=Æö`=ØU;=¾‹Í=ßçˆ=¿îY=¾>/=Ñœu=í`j=¯ ¼=Ÿ¬'=«C<=ÇG½=Æ:}=¹Ãn=·Åë=Áâp=¾‹=«øÊ=½ù=¾és=°Â^=¸Ãš=Åñ=Åé=§ÐO=ÅmD=ŸÉÓ=¦¯%=Ê=Ô=é¬=àZ;=Ý©½=Ó– =¾.ô=¦{=á¤=›ˆÌ=»³¦=ÁûÊ=Ç -Ú=»ç¸=¡ -{=­«ÿ=×&j=¹}\=±Æ=ªÇØ=±€3=Ò2‘=ÒÞT=Îîé=Å5=¯?*=þ;=¾ª’=¸Þn=ŸÌo=Á‰e=Ô$œ=Óß³=±“ö=äwú=ÉS°=ÓðQ=é»=ÑYÊ=¾ïI=Â6=£=‘x=Ǽ³=°+Ã=¿3=ÙÅ›=ßõ‹=Ù˜ú=¹í©=´ôŠ=¸ˆæ=¹e}=ÒE)=³(*=½t›=ÑX=ž8«=ß³Ç=áaH=Ï[=âÍQ>.äQ>;W?>6•°>(H(=áL=ã××=ÍG2=Ìð•=Ò%A=±+…=Ü#´=ÒÅP=È2Y=ÛG2=Ög%>#V“>2R>%{7>'>‡=ׄ2=²¸m=¨my=‘Sþ=ˆž=¨)=¶H:=¦wá=êª=â=ч=Ï&p=¹ÞÂ=›ûŽ=µ}ê=Òžw=Ϻº=®i=ºãË=ùk\=ö…=´’«=çm=ÝÏÕ=Çq=ÏL´=ô½·=Ù;X=Ò/’=ÃÛD=±ã'= ï›=©¹€=ê»&=Öv‹=¶è¸=Ôe˜=µù=ÄY=ܼ=è®ò=Ëu=ßõ=܃c=ÖVK=Æ€=ÁXL=·Àž=¹!=ã2=î±Î=Âò1=½ =Èkõ=»5=¿¢&=ܶ=ìG=Èx=Ô´>q=¿¨6=¢s‘=´Þé=×Æv=é/=ÒQ9=³Ûë=Áat=âà=â/Ç=»¬Í=Ér=éæ=îÛ=çƒ=¿²D=Þv=ÒG=ÝJ=î¶L=Ô==·£ö=É¢=ãx=êU^=ôu¯=ò²­=î«ø=뇹=ý¤É=ÏŠ=ц£=Ö•q=àGE=ð›Á=Ýb=º¸=ÜHM=àø„=ÂD=èyæ=ÅxÃ=ÊH(=ÅÂá=©ú=°‹Ý=Él=Üaë=ά=ÆB=º ›=¡È˜=Њœ=ÇÝ“=ÅÉ=Ìðt=X=«»¢=Ãîx=Ì&,=·¡æ=§¦á=‰¬=v•=Šu×=½s"=·ÿ=¬¡=¶fö=Ÿ ù=ž$Ä=̓=Âyÿ= ZÁ= ’Ê=¢¸ß=’›q=·‡Œ=¯-?=ÁÊ =­s{=··À=¹‚=ÍcÏ=é%m=ä›Ë=É—Ã=× ]=‘=ÀžÙ=É»=ÝeG=ÛR?=º©d=©MÍ=΢¨=õ„=ãÁ=ËD=ÉÕ€=Ûs¾=Ṉ=¦.D=žf=¯àT=¼ h=Ý Á=ìö=æ÷ô=²A=¡¤´=õõ=›Á1=ÃÌÕ=ÚÈ;=¨‰è=Ép^=¥ÿå=š0=×E=¢[=S©†=œ =¦Û»=µ—Z=Þ…ú=ÆÛ;=§7ö=µm€=Ñ5x=¦Â=®~Ž=¯+Å=—éV=¯WÛ=ÇË=ËvE=»¤=˜…Ä=­Ï=Æ‘=µFÖ=o¶=¯P|=¨Y'=¼€=á(>=â`z=‹<ü=Af=Š!l=«*g=¾8r=Ï8x=°ï­=ºC;=ʵf=–£=±ZÞ=Â`=Æ+==¢ïV=Äd=Ô·ø=Ç]=ào=Óz;=·‰Ý=ÂÖ÷=Û­=¸ÖN=³v\=§vQ=Åc=®ó…=„ßL=”q=­Dq=Äó0=´"/=Šv©=©;=Ý„M=Ä%š=Ìqè=¾H =Çæ=ä‘*=äž=¾Ÿ[=ѲP=ç$=æ‹=ß=Ùïr=ð.o=Ø`œ=Ì =ÄY=Ó’=ÈÑÁ=Ìëe=ÊAŽ=µ?È=[=Âoù=ê¡=Øß=ÒƒÙ=ÉPF=Ïtµ=Ù˜=¨cV=Æä=ðü=×Sñ=Íú\=ñ =ïÐÏ=˸=ÞÒ¼=äù@=Û–c=´Þ=©Õó=ž–å=¥¦è=½}õ=æ'ì=Õ¯Œ=¡>î=ìhQ=â*=ú£¨=ã{²=Ò%=š ü=»ù=ÎuÜ=»y=»Íe=º³¢=¯~»=³Án=aúm=‚ó7=š*:=·ù¬=° h=UÛ=„Œ)=£ -=¾Þ=½Oæ=¯•0=ŸæÂ=©/=“‡-=šŽi=Ÿá -=¦Ö²=³F¯=Ñ;ï=ãÚú=à.=Ïwy=¼#_=½Í==Åóœ=¨1:=Á¥ö=Ô<ì=ÒD‡=Ò¢ =ÖÂ=½à=͵=ìýç=ë~u=Ò¦¥=Í“Ì=Ñ$=øÍ?=ßRi=ÀÙ=ÓKL=Þ½¡=¸r’=À>b=Ì‹Š=Üñ=Ù-=Í¢B=ÀD=°‘g=Áÿi=É»±=¹=–=½e|=ÁRþ=¼à=Ô›=àæd=Þ¹h=ÖKp=Ññ=¹«ô=½ -w=×>Ü=ϾÁ=Æ(C=Á›=¸ÍY=ÅÀ(=Û¿¬=Ü)»=Ç»Ž=õ_¿=æk=½~f=é ž=èz=µp¸=ß´=ëæl=ÎÈ=×±—=Þag=Ý•¾=ÊÍ,=Øz =ÆZ2=Ã:=²þÏ=©`â=«û"=­‘Ë=ņO=´{=¥+8=°ºI=¾‹¢=µ7†=Í0c=û¢=û¾,=ñ/=»ŽŽ=¸ÇP=·_ƒ=µ™Ç=Ãk¸=Ý ™=®d=´Þ¥=ÖÛÏ=Ϭ­=ÌäÊ=š‚™=‰°!=‹¿‘=›Ìs=³Dø=â`õ=áÉ$=ÊÏç=«â—=«' =£Õ[=èØÒ=Ú:­=Ìëw=Ï·µ=Ö¨º=ßúÚ=¹¡<=À¨ð=®´ø=Æ™O=ÓgD=ØUI=Ñ:=Æ„?=Ë;e=Ñ|®=ä ‰=âj\=ÛÏî=á˦=õäÊ=þ:¾=Õá÷=ÍMõ=ÒÓÜ=É"J=¾ý=´‰=Öp=Ö-Î=½¬å=ÁÅú=ÎÒ¡=ùÇ=Ú s=צ¸=­ù=¶í¢=ÊS=ÉQ¡=¬.=ƒ.=¼?²=ÃâK=ÚTë=Ö`û=Ë Å=Ô=v=ÃC =ª9¾=Ï_O=ãr=Ñ´=ÔÚ=áýÄ=ÎÐ=ËÎ=Ѫ‘=ÏM”=ÒÒw=߆â=©Ã=«Üœ=É&?=È•>=¿½= 8=¢Z;=®‡3=³nÞ=µž=¹F|=´=¾=±­=º#ž>Ï´=îã2=Öž=èó=Ó -k=ÄX=¼ãø=¾K=Ò>Ž>£f>#ó=ón¿=áMÚ=Þé'>-a>¡>H>B›£>


    4Ã>Qá‰>X'Ö>]$÷>Y >V6/>R]ç>e|ü>}Žê>¦O->¸z>…£>¥ew>¤Ä™>¤K½>™d$>›ë>Ÿ€>Ã%>‚ìT>eH?>6[ >*ÝÈ>*Îý>=¸÷>DI1>@ô>@²s><ì>Á!>ps>S@=çë=ÆßÝ=žï=·é=ÓõÀ=ÿXt=Ãé­=·•)=·þ=¶è?=¼ þ=Ð-=¾­=¿Ï>IB=ؘþ=¼<ø=³Ÿ~=³#©=³>=²*ù=º±Â=Ä`=¬}ô=°pf=»½=ÇÕß=Ïùn=Ûÿà=Áð„=ºÑ`=ÁÒÙ=ÒÒ³=ÓÀ%=¯s²=ØÕ:=êQß=œ¾<=¦M¨=¬®ü=¤rã=œœ =’ñ@=Øwº=â×¢=ìGñ=«&=¬ƒø=Áx"=ÎYš=ÉÄ´=¸Gß=îç=Ç (=Ç)»=Ç=ÀÄ=žî¯=©l}=±Šf=Î?ò=·÷š=¨9=Õö=Å/ý=µw_=Ô„Ÿ=ãäº=ôœ³=ªs=¤Š=£Òm=Í'=½Dh=“†®=™gý=¡ˆ-=±Òy=ÏF=Ï™Â=±DÎ=»îU=¾XÔ=¸A -=­)=«Ã­=Æ3Ÿ=ÆNæ=Åè)=ÆB—=ÎöY=Õ]}=ÌÞ=À2¨=µ¤f=Ì‹T=»0=¦tB=Ò - -=½ž´=Ÿ*=ÀJ}=ÁÚâ=¼×°=•-Ù=¤T=Í™=µY°=¦ýQ=’òË=­Ïï=°´A=¦ -=Äxj=Éhé=·M‹=÷õ=½èˆ=ç= ÈŸ=§E”=  =³<™=¾¸=½aP=©ëÇ=Ÿ¤ -=ÄL¨=Ñv=Öæð=™Ü•=®Â@=Á[­=±Û=¸H=¿ÆZ=Æ,=Ì@Î=ÓÚŽ=¦qæ=±w„=ÂŽ=²…i=­» =©=¡8ß=¦®Þ=®-9=ÇP)=º'Ÿ=ž%Ÿ=ÊÃ=Ãùd=«Æw=Ûóá=Þ‰@=ÏÛ=¾¤=²‹é=£§=»6Í=±Ïˆ=§5=¯§“=¼ä -=ÇvÊ=¼ 6=»=Ç=×I=Ï=¢Ë=±Á'=¼FC=ÌÊ‚=®~=§Pj=¾>†=¤ä¹=¥Ê=Ó:®=Ãëâ=¾¤e=ÄL­=¿® =¾¨=Ä ì=œÞ‘=—›ã=×,=α=Ä€®=­ À=±Ò¾=·Ë/=Éa=»pª=´S=³•ú=®äj=¯Ñþ=Áæ¥=¼y=Ág“=êü>=Å­=¹ùÐ=éŠ=ȹ¦=½5k=Ùá©=£Ð=¾Ó=ßÿâ=ö®T=þá>=ì“=Ëî3=¹3=¦éÁ=½[H=Ëô=ÖZL=á¢Ì=â h=Ñc=Ê´=È.¡=ȹ=ÛA=㤠=ãwe=ˤ¿=¨i=È¢¡=æ^!=êVÃ=ÐOÔ=èów=ðc6=ë;â=ÛŸÊ=ÙY¹=ãˆæ=ÃÜU=ÁY£=Õü=ä’5=ݳ«=¿™)=ϧ=לW=á·¹=ÁÈ=¶¦==±”™=Á¹=ÍŒe=ßw=Óï=È´=·:_=½†š=ÊX[=ßy=¯Ñ=Ã64=滇=ÍŒ¾=Èã=ÄÊL=Å”=ÓÕ =æbO=à6q=Õý=ËD=Ä–M=¼áº=¸›7=Ë‚=Ëkë=ÊŠw=Ñ‹=ܾ0=ãç=×{a=ËK=ç=à Z=Ð=Öí¾=Ý/=Êð=È90=ÝE´=Óéþ=Ñ1=ÖØÍ=Ãn=¼’i=¼=¼~x=Éó×=å<ú=¾>k=¾Ió=ËF[=Öñ =Ïåc=ÅF¿=Ä0=Çcz=Ëo$=Å(=Ç©³=Ëäy=Ñ6=ÍXÇ=ÌõÄ=äõw=ø’›=ÿgë=Ãh=àtÀ=ñ­÷=ña=ÚQ¥=Êņ=µæÀ=ݨN=ÛÓj=¯+™=Ï(=ÔÄ=ʃ=ë`>¹ñ> %½>À³>{ã>×»=ßó=ÉæË=´È%=ÈŒœ=ì(–>}M>¼Ê>s=õ¤¬=Æz=ÁÒÆ=Ø=Ó—T=Ü}=Ùkä=ÆvÓ=ÕñÊ=ÚÇA=ߪc=¸¬%=Æ(û=æGÃ=ÈÎì=×Eõ=íx=ÌOþ=Ú¢Ž=äŸ =±ìu=½¨¶=ÄË=¿¹ -=ÞÄD=èàL=Ó¥…=Ó/æ=×sW=àÖ=Ñá#=Í6i=Í+Æ=êS=Ûýù=¿þÚ=Ì=ç=ÉGM=Æ©=ÆË=ÅÁø=ËYÖ=úÁï=á`2=Ø€M=íƒm=ã¯=Ü w=Ó1ü=Í ý=ÊPÜ=Åâ%=Ì Ã=ÄÊÔ=¹“‚=²•@=µäÞ=¹Ì=¿<[=´}]=¬ü±=½mŽ=ÂS¨=Ç?œ=Ðì†=ÂZ=ÇÁ=âéÌ=²¹˜=­Öë=µq#=¢tÑ=¤ÿ—=§s=¦þ—=· %=¿˜Ã=¹Ç¯=Æï=ÈÕž=¹þû=Ì‘=Íi=¿ª“=—£4=¥!1=¾Õý=Öª¨=Ê=v=¾„=½Ø=ÜID=êy=Ð#>È]>"^ö> hó=ó£=Ú´<=ÃVÝ=Ä™+=É°=ÓuV=½éö=¾ÂÝ=¾ØÈ=®=G=¸«=ÁÂ!=ÔÜ,=Ýíx=ýn>%ßØ> ”>ï >2‚>ÜO=õ”8=í×I=ëy÷=ÒVÑ=À³{=¹Z®=Àî!=Ο]=åh™=Õ -û=ч=Ñý¸=±”V=É$=ß6=äA=Ѧ =Åÿ=»«ê=ß5¬=ÜÑï=Çrì=×h=Ü›ÿ=ß=ÞÈ=Ý·.=à"=èį=ãm©=æd=îÚ4=ó„}=òbÐ=í…¬=áñ=æAj=åÃà=ÖIX=ä‹Á=ã3º=Öª=áY¢=Õ¡¥=Ãð‚=ü0=ë -=×ìÈ=½%¹=åù=ø/Ä=ü §=Ëtå=Ðì3=ã²±=ö#=ùv=ú€§=ïH¯=âj=×è=Éii=ßW=õ}K>àl=Üù=õ¢M> ×=ïœ=á;=Þ,=â¿-=ã#©=ì·=õ6ñ=ݱ9=ʵZ=Æl^=ê ƒ=öÎ=êÂ=Ñæ?=ÑPW=Ø´j=àŒÑ=ýì¼=íRÏ=á"a=×Kº=à”Ç=ÞÞ+=ÖêÝ=ï\ -=áî1=Ô¡š=Êgì=Ô0=×O=×5¦=Þ´ä=âôû=ãö‘=ÀXè=Õô£=Þ'©=ÏvE=å0b=åÚ=ÝüÙ=ëí=ëúõ=é=ܯ·=Öñ}=Ü3Û=èó=âú=Ø1=ÍÆ=Í×?=ð =ø†=àª=àJü=ÞŽý=Ú–=Óõ=ÖŒn=Úc=àvÑ=ê€=áG)=Ì”í=Ç=&=Þßô=ìô\=º ‰=ȵ=ØÆj=õ.9=Þ¾ª=ΛÐ=Â?Ô=È)=ÙPù=á=áTû=Åå=¸7=°_û=íßï=ñ¥Á=òì=íÃ$=Þ‰\=Ú¦=ÛUn=Ûi=Öœé=Úã›=ï<=ꞌ=þb÷>¾ì=×&²=æô4=æÖ¸=¼£Ú=ÐßM=Ô,'=п-=ê-c=ç¹j=è|ó=ú./=Ò®ú=̱½=ÚïÐ=Çž«=Ó+=ÙÙu=Úž=Æ­5=Ô»d=ö6=éË-=Ë~=¸¦=È&L=ÂhD=Õ†å=öN¯=Üò=Èè¤=Æ©5=þS’=é~Â=ê=ñá=Ø=×X¹=ØÔ=Øøn=ß‚õ=äû=íÝŽ=óÝ©=ï6w=äÔ…=ÊÓZ=Ûã¢=ë‘Õ=ùâÒ=óH®=á–Ü=Ýì+=ñÊË=Ô:=Üo -=ëyü>¿>RÃ>}ï>N]=ÿ{Ö=øc“=ðé‘=êEª=Ö«ã=ÏçC=Ϩ=éûO=ÜbÖ=Ñnú=ׂ=âÎw=Óy¶=¾Â’=×È^=Ƽi=ÅèÑ=Þ°¯=»¨õ=Ô~[=î=½øË=Ü!j=ߺ¦=Ó3s=áû=Ü—»=×3‹=Ì«’=×Ë=Ϫ=Áàg=ê™=νâ=ƨº=ÕÚä=á~=ѼÜ=ÄÕE=×|=ܬé=Üçš=×(!=×L¨=Ç“÷=Â/z=Ò=¿y&=¿=Äã¹=Ä;=¸ë†=É=ß=Ó&Ð=ÏvI=Â=þ=±ž=¯U‚=¸3¯=ãMÖ=Ñ»ê=ÑÆ“=Õ ¯=È,=Ò’=ÆÅx=°m;=ÅÊC=Î u=ÕÞ=Ùš»=×~ô=ÆQZ=¾M=ÑL=¸Ù·=µƒá=»½î=æŸ =Ĭ»=¾ƒ=Âw=Â*ß=ÊÂÉ=Ìh¸=Í‘=«ÍI=×e‘=Ù¨=œA=ºhÔ=ÖŒ=ç¿=×é~=Ò¯ò=ÅGû=¶V¦=¶eÖ=­Æ'=ÇçÍ=â6»=¯]ý=ÓüÓ=×oŽ=Ç Œ=Òòo=É»ÿ=Ì1=ÚV=Ò÷=Òñp=Ñ%y=ÌÍ=ÆoÔ=Ò‚‹=ßî8=êÖ=ЫN=Ü +=â;=Ë:±=ÑF=Ë#i=¼„=ªÌ =Óu3=Éðh=¶ˆ0=ÕúÃ=á~r=ÔŒY=¹ÄE=µKK=±[¢=·š8=Ê„Þ=Å?=Îö$=Ù{p=ÞÛæ=¼7>=׎%=â«—=⫳=º(=Ïǵ=Ͼõ=·V=Èã…=ßKa=ßÙ=²r=îÒ=Ã=«ö„=Í<®=“ÿ=¦aç=¾<ú=ÊpU=×Òõ=ÉÌ´=»-=·V=Øàà=Ý".=ÜSê=çß=Öz=ÖÂ=ÓÍ=ÁPR=´¯H=»ö¹=ÆF»=Ѫí=Ø7=ÆÝÜ=ºÞ=Ùê=ÔÔö=à=ál´=¾„=¬€=µ%#=È!B=ë¸=Ä1â=¯òy=­·§=ÔM²=Ïݦ=ÒãÙ=Òµ=ßì{=¯›ÿ=ªã=·@=äƒ=Ë[è=½ÒA=¶³==¼S=Íî\=ÔÂE=Ñ$Ï=µÂˆ=Ÿ=³/v=§ÝY=¬)=À³Å=¦Ö²=š´Š=¤cÞ=ÉÕñ=É>Æ=¼|?=š”¸=´ðÂ=’:Ö=‰Âz=› =›b=¥©=®£ü=°­y=¸Þ=·¸=²¼=¶ª=ÈÈ‚=¹Ê'=´áy=µ1,=Âó®=¥‡ñ=­¥ï=¿™==ÀË==ÂÖÄ=º~=º×ï=é·&=Ã(=ÂôÕ=Ï -W=ÏD2=É°ª=Êž=à =®¬l=·Ç%=¾†u=¹.=© Õ=Ú/¤=¾žD=¸/a=è=ÌR–=Ôüg=¿Ï=™¼=ƒIN=¡/œ=¼]²=ÁsM= â=Ô<Ž=Õá÷=‡–=¦Ÿ]=º==±Õ=Àú=æuý=Îî=ÍUÊ=ÊçË=ÂpK=Àk$=Ôçâ=ÍE =»þš=³Í¶=´Íš=¶‘Ý=¾Ý=¼ÇÆ=Û±’=Ë’=Äz›=Ëì=¶—n=ÌÑŒ=Ä1=­Þö=Àª,=³Z{=§ Û=´=ñ=]=Ë©í=Ç9=̉Ÿ=·0†=¬–¯=µ¸L=´bË=¯MY=À -?=ÚF=âö7=ßÏ=Êt¡=»,:=œÐW=˜ÎÝ=½mI=´lÑ=º¸Ž=ÈÎX=ÇÕ =íñ/=ÞÒ˜=Õ¦ô=ÌD -=ÖcA=™Þþ=¬Â†=¶7=“\Ä=€Ñ®=©×E=³)è=®š÷=¬ˆÚ=º9z=ÒCÝ=ä„=ÒÈñ=¯"=–{3=–8=ºB=R9=¹ £=±Ä=“ ˜=ªå+=Ü=çìH=×¹¦=²wy=¹=⥖=æ˜=Ñ­=ÈCU=ÊŠm=ÊÀ=Ç=ê˜8=Êó=ÑÊ,=ÅÈÞ=ÂИ=ÅÀÉ=ÕÒ¢=Çbx=²íý=¶[è=¥þ=¹>¢=ÂîS=Àaò=‘7«=ÂÑô=¾¸Ì=£A5=¯›=´Á$=ÀšÜ=Ëôš=Òt=¼°(=æ~¥=Éó=«SQ=—8=”í=Øج=á‘‘=º5]=¢]û=£XU=£[×=§I =ׇ=äÎ`=ÁÃ=·;v=»Ð.=§±Ó=È´Ý=ÍÁC=ÆÏ=ÈØò=Ò^Î=Íæ~=²¡”=ºâŒ=êŽ(=»Ä|=½$A=»Å÷=žö=½V=½æ==œJF=ˆÀ=³j¥=›áÍ=¯=ÉâÃ=ÚVé=·Ÿñ=ÏŸþ=Èé=Æok=º4O=¯¢R=Ì¥=Ö®=ÐÅâ=·Na=°\O=ƳÄ=Õ Ì=Ânù=¾Zá=Æ¥Ý=ºó=™Që=¨O@=ôl=Ò"Ë=µl9=Ï=Í&š=•\©=O9=©j=± 8=΀%=äýÛ=ç]Ó=ÙÏ°=¯Ï=¿y=Ž|­=Âó|=áËÝ=Ü,ñ=ŧ­=ÝóÖ=Ò‘&=ÐËO=ß ,=Éñ6=©8=ÍÚ¢=åa=É^o=¶¯=ç);=Т;=·'Q=®”1=œçV=²Ý=Í•=Ö;ë=¹ÎÑ=˜¤O=l·e=ª.=¯ªA=•ðV=±›¿=½…r=¿h(=Æ~=¨¬8=±@=ÚGç=æÓP=Úy”=×¢B=Ú»í=Ìh0=ÃÕÐ=á¥ê=×Ôæ=à±1=ÃÕñ=¤H)=«òÌ=¤³T=åæ=×s=Ãý=Ö7ê=à5“=Ùá =Á¤¦=¿›­=Ø=Çš.=׃P=ÜÝ=Ô‘ =È„=ʵw=°(=¯VH=§ï¡=¢yÞ=½‚$=ÓÍ=à¥=èÇ\=ÞoÀ=½V=Í,=¿lØ=¨0Ä=§†Õ=£Ð«=É´:=ÌØÕ=Ü2>od=»QÜ=³6¯=ª»z=£yÐ=µÀ!=ÚL=¦¹ó=¾’»=Àʳ=ÓGÕ=Úr=ËGÕ=Ü!7=Ú:ã=Ðü/=²dõ=šÇ‘=ƒ‰>=ƒ‹=©+u=Ó~:=ÞB=Ä° =Çé=ÁÕ›=ÎOÀ=»>+g=èUä=¹ =§cø=º+ì=¯':=³,s=Ñ–p=Ú=ÊÁ=Æ” =ÑÄ=Ѐš=ÃÊÀ=·Ï>=‘öŸ=Ëö=¶ ý=›¼c=ŸŠ¬=ÇÝ=·´V=¯Ž=µGã=‚Ø=êMK=«3ª=±ò=ÈŠ=΢0=½6¤=Èi5=ÃPÂ=®Ú­=´Ó´=ÆÞÍ=½wq=©ÁC=ª§”=µš=¼á,=Ìmþ=»¤=›ÿÃ=Á”ê=Ì ‘=²}æ=ÂÒã=ÄV=%=œ©=¿ða=òZ¨=ãì¸=ºmª=Ï„‡>£U>Á‡>±A=ìœ=ì+N>*>/á§>By1>f2Ã>D¦>/åt>-Ë=ºü]=»)k= ü=)”=¦|5=˜†ç=|rÎ=¶îû=±lµ=´ÝR=¸|=¯t±=ÐÁ=åŒô=½Í=»ò1=³e=ž˜ -=ÒºÛ=Ñ7Ü=ãà¬=éçª=ܳ=°2q=„e=Iµ=fRF=ˆ  ==¤÷h=6=´=½=›é‘=‡ûF= Õï=Æã–=¼¾= ZÁ=Àd«=Æ­©=À÷‰=§÷=Ž%=×9“=º¶)=¯-'=ž°±=¦ŒÞ=«lÞ=ÁÃó=Ç.ô=´=Ò=±^¬=×}ç=Ê.†=Çdþ=ÂB¹> >Ëq>#ø> î>m =å1 =½Ç¹=¢æ=Ðy=éÇÓ=ªˆ=Å6D=úGð>H£>]3>¼h½>Î×>È$C>­>[€ô>Þ]=ܬ=Ì%:=¼ç=Çñ‡=Ö×=«ù6=yA=°Î’=Í· -=Ðù=°5¹=ÝF'>N>> òà=í[³=ÿ5>k=²Óâ=º[7=ÕÛb=Â2=Ìõ•=ï–Z=ü:Û=â„=þ`c=ôv<=ÞV‹=ÅÚ==¼B)=Χê=²Ž=¢2=½y=¼m§=À6×=» =–t=¢ÔÞ=Á†=ÓAÎ=‡Ÿ=ñ4=¬øe=Ë£à=¼ÊÐ=»ºÎ=à Õ=º’m=§‰•=¬Æc=×W.=Ë k=µ= 1'=µÒá=Ör÷=±"A= ìÕ=Žô=¹}d=Ì¿=ŒóÊ=¸™D=å˜Ì=Ò|=¯Œþ=œAg=ŠG±=•i=·ã=Ã}5=ǸH=Û;—=ó¨Ÿ=»!ª=»à=¾™½=®7!=Ämf=È?1=ÄU=Ñ´H=Õ~A=Ÿy==›¡E=£ø=’Çž=º=ÉË-=Ƕæ=´sÍ=Â=Ú‹€=¼ä·=Ä ¨=Ô–1=Ð5¬=ÙÀ=¥=ª¶Í=Ö$^=æì­> &€>M³²>Rms>Nìv>Fåõ>"%=綸=ØUä=Õìh=Ä˳=¹ïd=»ÉÞ=Ê ý=Ýê¡=æH,=Ñ}¨=¿ÂŠ=¯êa=æ‹ =õ9=áÅl=ã\=å\C=äì=é,I=ù3~>‘ >iO>ö2> -û>?0>Fn!>–!+>èUO>üxÁ>í+l>º‡¯>a0¤>¦ë=»Œ(=½—¤=¬Ú:=¿n’=×Þ(=Ü×F=²¦Ó=¯žÏ=ìð> í/>Ó‹>f”=õ)¬=àp=ßÁ=ؘn=¼)Á=§’Ž=°p;=ÒvT=Âl=¶â=½"=¼_¬=Å€â=»Zœ=Á˜X=ÙH*=»÷¼=¶\/=¢ì=´ÏR=ÁtQ=Ì)Õ=·Ø1=—ð*=ÆÙ=ÑMû=¹¸B=°Nû=r‰=¥W¶=±àå=§é­=ÉÃ@=šÚ=«Îù=Ζ;=à{ =é4a=æƒ|=Íöñ=Ö¨×=î0“>Á—=øPÅ=çX³=½šL=Ó|Å=ÚÁù=ñe¶=ïé=î|a=ß,H=é -ù=ñÌ=ÝJ =ሣ=Ç‘½=Ôà½=ÞBç=õÔ=߸W=Ïöò=ØHÉ=Ü©f=âP)=ú£ù>dg>1'>²À>¸¤=âã™=èYð=îç>¿Å> œr>ÿ>=ñ ¼=ëÀÎ=åÌ=ëÍ„>Õ¶>(ô>Q±=>fni>]›¯>\ñÎ>\IÃ>l>kÇ(>kqä>q” >x‡á>„Ð>˜c3>œrI>‡§> >°Mš>¥ñ‘>¨Ë?>¬˜> .>™[>Á9>Œ)h>…ðƒ>jÂþ>[ùj>S`Y>C‡ß>TAÙ>aè1>K*}>G)>BQŸ>3r)>*t>^Ž>þ>ú>E¦>sY> Þþ>q»>zÈ=ìžž=ôpf=ôFð=ô¸ >¿>fP=êò-=ñß=ïo=â[Å=Ë”=ÂmÄ=ÚƒR=Õ,=Э=Ȥ¡=à³é=ûÿì=ûó=û™=úHÜ=É$§=É+UÁ>Kp>‡Mæ>qr>qª>#Zý>˜†=Íè}=´ÈM=ʬe=ïº=º× -=ÄÌE=íe8=ž`\=ŽCe=©1Ò=¨Ò‹=¥µ½=•Ër=¤Š=®fy=¦$²=¢=uÁ=Åp¸=¿Où=¶ô=Ëâ–=È’i=½ýI=Ãÿ¥=±_^=t˜b=»î=ÒU§=ËSo=Æç‘=ÅJT=Óù=Óh=Ômš=ÚÅþ=Ùue=Ù¢=³`p=º‚ð=ÉKU=н =Óäð=Ù=Øè’=Ï©¸=¹?l=ÅOs=ÇÆ›=Áé«=Üœ=áÉÄ=§§=µÙ{=¿{}=¦Ì}=¶Èò=Å¢=ä©5=Ñœ³=»°6=¯ƒ=Ã'þ=Âú=ÁÐW=Ƚã=Ø‚=×…è=Ûr=å«s=ÈX=Ãâ¯=Û =Ðn”=ÉKþ=»•E=­Rã=§¬c=É×g=Ö†=àh>=Ñ ¢=Ìoç=ÉNg=Â^`=ÀÊó=Àý -=¬§=®ô=¸›Ö=¿S=¶zU=¡…ú=²*â=·ð=¶w=°t*=®Q=­u=¶ýò=·oˆ=¤ã©=²º.=º¾œ=Á¶=įú=ÄÜw=£o›=§Gå=¬ Ë>kM=Ø=—=©@#=š·4=ªKQ=½ë =½¼§=·®4=¯D³=§ý -=¬Y¶=µF¦=µV³=·ÚE=»"=Ë›#=Çò×=³ÍÙ=—ó=¥ù =ãËÊ=¿í=¸Vš=̨'=Õ^9=Ù»Ä=Ókš=ײ"=ë†Ð>$Jx>!Íê> «Â>§Ç>Í=á ·=ári=Ç„=² ±=¦N=Ƴ=à8=”=¯=¦^…=¸ËT=±Âw=²”=²³=Ö’ç=Ï¿n=Ǭ<=öÉd>% >Zr>ba>UôÙ>B/>éÞ=è¡=ÈÄ´=Ö2=ÁŠ.=˜£´=»_!=ÇÚ+=ÐîÔ=¡•Þ=©==φë=·ò~=±Ce=«wŠ=ˆ0=ÒP&=Ì‘™=ÆT@=ÂâÞ=¼Ì=Ë(º=Ç©¿=³H‰=¼i¡=Ç„=àj‰=§|=´—X=ª=²íV=½†œ=Øú=Ó~=íì>.6Ç>k®“>ƒ:µ>ˆ}>w}®>Z–Y>îÉ=ï$¦=ÖÃ=ϸ =¹™¤=¶Äý=ÖÜð=»€¤=µR=З(=Ç5=Çþ”=Üõ™=ØH‰=ØS=ãmO=̶ç=½iS=§ëU=°~Ä=·úº=Çä<=Õ+ =Ûnò=ÛS¾=ÄãN=½­r=ÍkF=Ö Ç=ÜË=áÉ7=Åày=Â:5=ÛÚ=å©=æ‘6=ÜÈ­=Îð¹=¿= ð=ÑQ„=Õiò=­ü²=è{4=ñÛ2=Õ†?=·lž=¯,ú=´ö=ÜAN=ãOc=ÔU—=ÄÅ`=Èzð=Û³…=æ¢=Þ_Ö=ÈEà=Ò݇=ÛÈ«=ép=å0÷=Ù^=ÉLŸ=Ö -°=Óc=Ëu=ц&=Ú¨5=昘=Ç$E=ÉôÁ=ÏÁý=Îo‚=Öqs=ᢠ=µ0@=ÄÕä=ÙÛ =æÇ=Ìã=²`=ßÌP=Õ«Ö=Ì5W=ì`ø=á¼=׋%=Ñ_:=ÐÈ¢=Õˆ9=ý$Ñ=Ù#˜=ÃSÃ=É:=ͬà=ÐÉË=Ö¼K=Å&9=Áë^=ÖÑà=Ò~ô=Î~'=É„O=Α”=ÌË=ó¨=¥=«q.=ʉÞ=¿³‡=¸Ëq=°Ä|= 9À=¥Q=°‡Ê=Œfs=›@Ý=°:‚=¿¼=®£=–Ó0=·wk=·Ò=µí®=ÛÐ=¢g:=°ŸÆ=°º–=¼>=¿a>=ªgŽ=ÎVÚ=Ù@=Ì2Š=Ã…Æ=¿Ì=À‰×=»Œî=·éè=³1=ÏnÞ=ÈW<=²ü<=×53=ÂòU=¡œî=ÁùÂ=·•²=«²=ËyZ=§Ž=‰‰=Œ™=µU¸=Ày=–Bu=´ãp=¿ª‹=«9C=´»Ÿ=µì5=±½;=Á.Ð=Ê7¾=Ó P=×k=Æ#=© Ù=®–N=Æú?=ã¡{=½y=ÉÇð=ÖÊ=×ø=ÇÑ_=ºi9=´õ=žvé=•\&=Ÿü‡=³N=¼¶Å=À:ˆ=À°= i=Æy‰=ƤÚ=ÆvZ=Æ5¨=ÆþÛ=®†þ=‘¸ÿ=ÇÄË=¹„=²UÒ=Ú‰7=ʃ(=À‚ž=Àî°=·Ìð=±ô£=­î–=²áÏ=¸“=Â} =ÓÛr=Ö=צ’=ê„`=Úêì=ËçÃ=òØé=Ô'=½#Ô=µmÇ=Ç ›=ήK=ÄÉ=È”§=¾ì=¡Àò=Ã…«=º¾“=¡¯j=Ñ–Ÿ=ÔM=ÒX§=¬=º,Ù=Äð¼=Ÿò=Ú;=ã "=×@É=«_ö=«“=ÏóM=Éë¾=ÇPé=¹=©Ü=·¿:=É$Ô=ÎûÍ=Ævu=Ã*¾=È1Ü=Ãã÷=¼¡ª=®Õ!=Ã]=ÈGl=Èî„=¾=ÀÊÊ=ÈHœ=È=ÝI^=êëÜ=Ô %=ÐÚ€=Ó9=ç‰=ënt=è¾=ÚQX=Õkù=ÑÊ~=Î%=à\ý=ñ–==ü5=ÙbÏ=Ñ`e=Ìãñ=Ò Ø=ù&d=û -è=äçÚ>Xô=ëàÞ=Ê‹=ô¥Ç=è3=Öº=°ºQ=ÙÉÎ=çì=Ï-3=ì -®=ê×=ÕKd=àë=Ð]=½Ië=àôe=ÇÓŠ=¶à¿=¼¹V=Χ'=Öã=Ñ#l=Ë/ =Éq®=Æ*)=¯ss=¯ó–=µ=¥=â@ö=°Êæ=š6H=¦¸ÿ=˜Ë=  ==·U*=±ýì=Ï»ö=ó<>0Á> ËZ>&¥><^n>+Û®> >;=Ò†•=ÈÓæ=Ã:—=¶Û=É› =Õát=Å*=Å"-=Ä=ÃÏw=¬ßÉ=¿9r=ÜùO=܆G=Ìhˆ=Ä =à¾I=àg=ÑÎ=ª’/=ÏV=ÛBF=áÂâ>Š*>‰¼>çæ+?}(ü?•ð?—7Á?„Æt?D¹>’¨=ðƒº=ë&É=Ù›é=͵6=Þ,¥=¹èÊ=¯=¸™ð=ßz¡=Û…â=Ñá^=ËA=Îù=Ò³ý=×í&=Ĉµ=Çp2=×[`=Ý]=ÝÒ=ÞtQ=ðžü=ÔPž=Ç­©=ÖC(=Û¶B=í$Á>ͬ=Ë»=ÖÚ=Þ®þ=Ê¢v=ÏýË=Òâ{=×Ù‡=Ùr=ÕŬ=ÑÛø=®ãå=Ùv(=í/Â=ä§ú=Å¢=ËVÞ=ß´ä=ÒÌ›=̶=Éñx=à„/=àèØ=ÓÍ=³=ÂøŠ=Í:†=Òâ½=ÓÙ‹=ÝL=Ù™m=À==ºùº=¿´=ÈGg=®,f=±æF=´cœ=®bi=”°¬= ›Š=Ùq=¤ïP=¨Ø<=°?d=¶´r=¶ª=¶Åy=¶L=£€˜=ªÆ‚=µô$=À¿Á=Éÿh=Ão=«Ôç=¼ß+=Â6 =ÂíR=¬&\=½×C=ÈF¼=Ìùà=ÜÎ%=ÙD =Ô>#Ž=îJE=ݸÈ=Øu}=Ýùa=Øw8=˺R=¿É›=××Ø=Þ©=¿Çˆ=Å„=Êê_=ÒÞ=¿fc=Î]q=Üö3=í -Ž=Ø7=×t=ß±=ÙZÒ=äð=ì®=ìèr=Èôé=ÂOœ=Æ£=ÎÕ=¿9§=½¨}=Ýò_=³@ˆ=²5l=½@§=–£<=¢¡Y=­(7=¸Wù=Èàü=Ãß"=¸v7=ÇH[=²D=©¢=³‰Ï=¸óÐ=º×œ=»ç=Îì=ÊF=Êha=Ïj’=ɾù=ÆÓF=ÀíN=¨ð¡=³¦–=¿° =ÒÖ>ç–>FÜR>s‘Ÿ>œö×>®s…>ªÉü>š6Ë>‹´>u ›>Gdî=Ѳ”=âXi=Ï“º=­Íí=´©b=½RP=½Wõ=¬0=¾a’=¶ß=­Ã=«bÛ=¥\'=±íj=Òµ=ËŸ,=ÏF/=Å#=Œ›•=ÌÈÇ=ÌS=±—=ÌÛ]=Éi\=À'/=«=ªÜ>=Àc¬=Ó4Â=¹LF=¥’=¦»=»Ç1=Éù=É4„=Ëö=Ñ¥g=£r!=œ˜^=¡—R=¼Ã=¥Ý=¦‚}=Ã×6=Ãiþ=ÅÚ=¿ÎÞ=®{6=´2‚=°q=¦…b=§¾•=´ÊÜ=¶³¬= e˜=ËsÖ=Ëʬ=Ä æ=Ë5\=ÀŸú=̓=æ=Ãn=½»I=Âä=Ê«=·b,=®Vû=«Ü>=Ä1o=rÞ=¡{=µ®<=ËaU=ÍE¤=Ç[X=½áý=£u=Âtr=Ú =Û:=§,}=°gj=Ìa“=¹® =Ñ4Ð=×}Î=Íå=ÈAK=Í2î=Ïé=ÏGT=Ûd…=Îu6=¼Œ=©+(=£VÎ=¼„ˆ=áA>=°M =ËIc=ÚÔò=Û?S=ÝÂË=ÊU¦=µÍð=˜ÉÒ=žXe=¬ý=Áev=è)Y=׿ž=ÇA}=º,Ž=ºªÄ=Ô³B=ÚmX=Ï>=³îñ=¿'”=Ëÿ4=ÐÏè=¸(=´T²=´6p=¼ª£=·½»=¶ï=¸/g=Ò?d=«DÇ=¦Ai=ºæÙ=½Òí=¿ð=Âøÿ=Ì7n=³@$=ºÂ=Ç™Ô=ÏŽ=É®2=¾”¼=´ÀÔ=®¿u=»šq=¿‚t=ÂCW=­§>=Áp¡=ÑàÝ=Ý¡Q=Á–=±rÛ=¸æ^=Üà=¿Ò°=ÈyÂ=Ê’=¾Š==¸¿'=Í7=à¡R=ëʯ=Þ(½=á÷ó=ã(=ÉJv=Ÿs´=—Ôk=¢¯X=´ÂÅ=¾ŒÊ=±y»=`î=·ãÒ=»Õ=¹g§=³«ƒ=Ç™¸=¿¬m=Èã•=âZÚ=·3ž=±Ùa=º»n=Ü'µ=Ÿ)=ÀÌ=̉U=šY=¿’G=Ï—=ÐýÖ=´@a=¦¦u=½§=ÒˆÑ=ܯ—=¼âU=¶[á=¹A-=Ã4Ë=¶’þ=¹±=¼”£=©±á=¤g`=¯F =ºŠ -=°£=¶oñ=Ć=Ð7=غ=Ã8t=ÀF!=Áž-=×.¼=ÄÀÖ=··=¶{>Ma>±¿>U¸>‹Ä>wÖ>bØ>ʽ=Ü—à=øæ!>é >¼þ>î=ý¶è=ÒçÖ=¸»·=¦…=´Õ]=¿~î=ÓÒ#=åв>h¨=þQ#=ßÒ³=ºj=¯(ÿ=«|n=º*õ=ÏÖ•=ϲò=Ò,ø=Ä°=®ÉI=­M=¯žø=©ß8=¥W²=Ð.^=¾WP=ÊäC=àó=®±;=¹Á¢=ºc1=»Ëp=¡o·=˜f®=¯Šg=Ç`=¦”Ò=©Ñ+=©ö=±šI=Êqµ=­í»=ªú×=¬.\=™l=¶ÃY=¼e=¸Oª=²¹s=¼æœ=•e}=š=ë=Ø¢û=Ëä½=»$ã=·-=²0?=™d -=¿HÄ=Ð~æ=Ãg=|“v=°´è=¾k=º§=Êi=¸ØÔ=ÂR4=Íud=³Ë=²³`=§’¥=ªAl=¹)y=šì=´§X=νÅ=Ä®¯=›ß=›…v=™œî=“¸=©! =8D=®y=ÇÏ3=‰=R=»‹=À§á=¢)u=‚™¿=·²H=ÃUq=¾M_=¿Û¤=È?Å=Ñó=ØW!=â”>öÏ=ùØ®=ð²ª=ì`^=Ç‘c=ªx…=¡–F=¥¯o=²”€=’•[=¤i=ÇiÌ=Ñë=À§o=¹°V=µ`@=«½·=îÇÓ=×γ=Òû5=çÓ¨=£è=šœø=¦»™=¬éd=ñt=ävÌ=öÃÄ=û×™=ë”W=ɨ±=Ž -=vã«=¢è==¤³Z=®  =ÀL¥=ÎÅx=¹/d=¼Ýõ=¤[õ=†=¦ =´Pþ=¿ =Ãéñ=½¼~=Â=¼GO=¿J=´âù=iL=²}æ=¨›t=°ƒ =êo=Û7;=Êx=΢=Û>=­Æ%=¹’/=Àé=Á1 =ŒO=¶ëù=®ÏC=©’(=²m=¾×:=¾»Ž=Ѿ=Ú"c=¡Äí=¨ºì=¬Ui=¯¬Æ=ŸÌ×=¸y³=¹´ú=©mó=¤…v=ÀÎŒ=ÓCÓ=Ä \=œjU=‰ÑN=¨ ¥=µ…=¾¯=ž’V=O2=šÝ=¡V=ž2è=Š»=—Û†=Ÿ->=³ý=ÕMÈ=ØmŸ=¿†=¨Ì£=žÄœ=˜îq=oÊ=—=š~+=¸Ÿš=¬-=¶}~=¹=²£Ê=µÐ=Äè¾=Ðd‰=ÁÐÚ=¡ã_=­‡Ç=у_=Îlj=º¯U=°‚=ÖÂn=Äs=½{ø=¸*e=ž8=“.=–‹=œ>â=µèÏ=­æj=ŸFÃ=—¾P=­kš=Ì">,S;>‚è>£ö×>±Y‘>Ÿ>€>nîO>.}a=ÊDÓ=‹‡å=¯ª*=¾L=·øë=º¡ =Í„Œ=ØC=Óp =Á5È=¬mæ=°£¤=¹=ÅÚò=Í®h=±¥b=ÔÞ=ª‹ˆ=¬”=ÄlM=À™2=Šy8=µU==«ºÚ=£Í=´Ù=©NŠ=Ñ8=Ø -–=ÍÌ›=ŽžÌ=‡ˆ=º§p=ÛÜ=ć@=°‰M=›o=–t3=‹æH=†Aå=»ëU=¯v=¦RË=—o½=z¶£=âdà=¸Öô=ºrt=ã½=é…U=ðª¹=еØ=ɵ…=Øx=¸;ï=Íε=½e™=Í4Í=Øv=Àêª=¦Ó=°Ó³=v=Ø!º>†–>ˆ`=ûó=Òtš=°A|=¡AB=Áw==Çf=¼NÞ=«˜Ø=ÌíC=®éð=Ÿ³é=«‹r=â‚J=ùÒ=Ë¿=ů=ÔZí=Û·¢=£²ý=ĸ¶=°s,=¸½F=¾Tå=ÑË =àuk=ÇÞÍ=›–²=œ†T=œ–Ÿ=¨Hˆ=©'Ô=ªý¶=¥au=¡8m=®7:=¸L=´9=³=²±#=¹8q=Ò€=Òê=Ð =Ј°=ËA=Å‚m=¯éÃ=¤ ?=  ó=˜|=¼º =¿¨=§Þ=ÆÖ=¥EÑ= Âç=¦ÑC=ªº„=®§Ö=Œqª=Ù%=–‹=›»µ=°àò=ß7ñ=÷‡ì=ÜNB=®W7=£e[=µ×Ï=Ófý=ÍÑ¿=Å(=ËpÆ=áC`=ÁøT=®u€=¯ R=‘€³=«Ö¢=¢@=¬2U=±¥=°8Ï=¸Éw=³S=–¸=—š=«fE=¡G¼=Âíè=´>=¸CÎ=½©³=γ=·#¢=›N = /Þ=´mï=ª¦Å=¬·g=ÐåÐ=µç=”ºÉ=q‰;=uÞØ=˜ =ŒÂÍ=ÌŽ=²/æ=¾ÿ=¯0=í‰=Û'W=·q>=¿œ'=½úÿ=‰•ô=Æ=±Ñ%=®²=™ˆ”=°ç =¸]ñ=·gŽ=§>Ü=’˜=šÜÿ=¤¾ï=®íP=¤]¤=œ&¯=ƒá˜=‹=©˜=¦ç?=¡n'=Ÿ =Ÿ%B=Æ'O=‘©<=ŽV=”œç=› -=ŸL`=Àžä=ÀJý=¼/J=Î7ß=»ü¢=ƒøx=™39=“áU=²ä=„¬=§$*=±¯=ÆVç=°Q÷=²å=ºÆ0=Ä=Å3Ñ=Ø<8=ÀI=£ñI=¯s=º—4=¢ø©=¼2¦=¿ª9=±ñT=È -=Ó2m=§‡=ŸÎO=بi=Â?Z=£¦Ù=œ†¤=Òõ]=ÞÒÞ=ÏÁ%=½®‰=«×¦=“ç³=ª±Ï=«‡ñ=²>Ž=´s=²Ö=œYX=œH^=—%=Ô`> -·>K3¼>í'Ï?*û¥?l Ù?|xv?u»S?Žå>×$C>' 6=Äá=ž]&=„—I=“?=ÄÆè=¶BÌ=½x=ÊV³=µÊP=›7µ=¶öE=¢{é=®ÒL=Q,=œg~=®=I=Âý¦=Á±é=µ¥Ü=¦ÁØ=·Ü“=ó–<=í³å=õ—ç=óc=èó=Ëí+=Õ¾Ò=¿=´=ÎWü=Ø>A=¶þ -=¯V=§m¥=¶ñ=ÃS=¡Ÿ2=§‰¡=¯ÑÖ=ÊX@= ø=»è =¤ùÝ=›!=ÚÞX=Õ©=гÞ=Ú þ=Ôžù=ë/7=Ñ$¾=´c~=’z·=‘š£=z¯ =¢•?=Îi÷=Ø3%=Ôó˜=Ûjo=Ä7S=¯Á»=¢÷C= z“=£c,=Ãìe=Çn=·A4=©ám=¨Q†=§›È=ºh=Æ=³G=¨Àm=Âm=¯úv=¨}ý=¤"ù=e=fÕD= ô=–¯=£Î=È•W=ÌH=²¢…= kœ=¨[=ÀïØ=¯Ûž= "}=°O=ªJØ=’v\=À==Ì+=­Ä½=¿<¢=àG =ºÒs=»æð=¶¡ù=Ã1±=Æ´.=ú™=ïd`=·ÂÄ=µý*=²(±=ßpl=µÒ–=˜±G=µ=§_ƒ=¨Ú„=†š=¶Ïß=©d= Õý=žd©=æäÅ=å,i=óà<=ÛÇ@=Óš=æøL=Ο]=¬ÖÉ=ª'=Âcl=¼ ²=Á•‹=½Nw=Ä¢%=ÛÂÖ=Ö¨Ž=¿Ô=»^=³yG=­½è=¦ñv=šØÍ=§V=¸†Ë=Þ‘`=ÅøR=µ5D=½Í“=µX=³ÞF=µ®=ºÃÉ=ØW˜=¼ý=Ÿ4õ=Åxˆ=Ô%=Ç}¸=ÄÛ•=²HE=»Ú+=§€Ÿ=•>È=›És=¡‡T=É€m=´Çþ=¸Ý›=·Ó =ã*>¢=Ę7=Ð<;=ñ¾=¿*³=¬LX=£æ=ºÇà=Ʋ:=Ï_‚=Ï'=ά=ÅÓ=¾ÊS=°Ç=½¢:=Àö=§ ß=«{=¯¸ =Ȇû=Ð/=Ü'=Õ'µ=Ö•=拆=­úŒ=‡,µ=£CÒ=®ÊB=¾@=ÅMÜ=ÏÔ=ér_=Ðg=Ãòí=ĵ3=׶=çÂH=ðÌ=àß=ÂAÖ=È5=ÐJ†=ë¶D=åg=ãò> -o>É=ùZ>~j>+“>Iä¶>U¸y>W]Ï>D×>WÝÏ>g¯ò>gD>rà'>‚C >½È>Š´q>¥õ¨>‘<ó>‰ý+>£Ux>§¡>«—X>©Bù>¥ [>ž„^>˜ðá>–ˆ2>“]Ò>d -©>?®¥>;¾>6‡>27†>1§@>01>-G”>3™u>3CK>,GQ>%I>b:=Ò¼=Þ€=êJw=¤ž=Âo>H—=Ü@=Íh=ÁC$=Ö¿ó=߀Ú=ÁžW=½˜$=¹bè=ÀÈ=¾L =¹'ô=²¡=®›=¨¢a=¾­=Ç×=Àgë=Ä…Ú=Ç›ˆ=žz= =¥ˆ=«U=Ò‘8>3ŽÇ>ªäm>Ñ%E>èÙ†>Àjü>¡Vá> -O =Þ‹=šÎÏ=°s´=µês=¼<"=¯úÅ=ª@1=¤T=³1ç=º¨—=¬8‚=›Òi=‹ÅÏ=Œkº=’¥=›;,=»÷Ý=º›*=¡g\=·¸ˆ=ÀÔ=·ëG=À(=ÆO+=‡f>=3ö=¶û=®¬=°Hn=µÊ;=»p=¼Ô=ºY’=ªB#=§V˜=Ñ%!=»°û=ªL=©¯J=­W}=²Lö=¸Šˆ=¶ë¨=°d=°‰$=°×=¨ =“Òc=ר=¨9n=ŸPÎ=˜:Ò=°þ=³B¿=¶Ä2=Ë»µ=ÀÉ„=§l”=¡k9=£n3=­º1=žŽ =š!\=¦å\=–ƒ=\ò=¹ª‚=®T= ŸÅ=ÅóR=® ³=ƒÿâ=«L‚=²ç=³g)=È=•Úñ=•Äé=´¿½=Ó¿=§X=§Š;=¦Ïf=¦ÿA=®N“=¶j==½œW=­ê¦=7=¨Ñ=¯`=´—=˜¡=7”=–7¶=¹çÒ=Èrj=‡û=˜lé=§ç=‡ \=Ÿ§ß=¼³æ=­MË=œèN=‚»ú=¨§\=²«I=¶ -©=©¶B=¨K*=³¢6= š=›Ž5=¿õ¢=¥%=‘~a=¢æs=Ÿ¤=›f´=Ì]y=Ãú$=³ˆŸ=®=¯³Ð=²º=ÔCã=Îó =ª x=Ã#^=à =›ÊO=­r=¸óï=˵–=ÈS?=ÆF=½Ôì=³ç=©Â=ÑèÎ=ÃHf=®?›=´ûÜ=©=‘í=Ó†=ªÇí=µÒ=È.=é)=®„Ò=®>=¬ö¥=¥ÝÙ=³àç=¼»–=»É=¾ô‡=Áú=­Öl=¼ ½=ÊP=Šk0=£ˆ=ǪÄ=Ç·t=Æÿ™=ÆÎé=ͲO=Ïb«=Ï2ž=¸U=·þ¤=È@Q=²F‚=¯˜C=ÇSd= ãÅ=,á=ŠM=– È=  †=Æþä=ºÇÖ=²Å=±7¬=›ÿR=‰ÿV=À ã=¯£6=›Ú€=Â…å=ÇÿU=ÌßØ=¦Ä½=¶È’=ÙL6=Ç0*=½j=®Á‹=Ä8Ã=Áu”=®³Ñ=™Á1=›)§=»~=¶(´=¬üG=‘Œ¹=½ê=ÑB =ÀÀ¡=Èÿ=ÌÍ–=ÍUˆ=Å\=À;ô=Æy€=ÆG=ÇÚo>ØÙ=úô¤=ó•e=±Öc=Çîó=ß·|=Åá“=¾ =· «=Õ•=Ê$Û=·í‰=Ã]Ø=Ã×Ý=Ã/\=¬†¸=´$Š=ÉÏ=ß,>">%®´>ÍmJ?f_?66Ñ?PÕÞ?TòÖ?J¦—?(Úì?’ž>ÅÜ>A&z=Ý R=´Bí=½—¢=¾ -=®A=·:ç=º²=µáO=ÐV=Û¬›=¿$=À¥=Á(=Á>=ÅA=È0™=Ç\ó=ÂЙ=¾Â#=¾¶k=«8Ï=Ú=¤¸=¤ä¦=¥mJ= -h=¤}D=«ý§=·äQ=ÂN,=ÊQ3=£‡Æ=®FN=¸‚¾=ÄÄ=¹ø°=°W=±=°ãV=°½=ÃuÆ=¿Ý%=»Ôó=¼iE=¼ßA=½'ò=¯Ú=µuí=¼T=®\×=³·Â=ºQý=¬à\=Âß =Ùf7=¥ª¥=´D=Äl¿=± ½=°Y=°J-=Ïçê=Ї =Ћ¼=·¾Ê=½ð=ļ -=Êjñ=½ð=°g;=ª{£=¶Ïo=Ãù–=½Rª=Â×=Ê?¤=× H=æ—è=ö¾=Êã=À¶=¶’ø=Éxé=Ìð†=Ï ˜=ÈÚo=·y˜=©Ò=¯$^=½œY=É<=ÎÅt=Ñöš=Õ@Ã=Ú‡¥=Ú…=Ú3¢=Ï Ï=Ä4=½=Ã=·¶K=²;=¶ö–=º£¥=Á.Ø=ÝÀ=пN=ÇÛò=½U=¸Êð=¶1N=¶*ô=Çhj=ËgŽ=»¬H=»D=· ¦=¨ 9=¬rr=¬L²=§ÊÃ=±œ=¶¸=º^=º+¾=½T=ÁÓà=áw»=×:è=´³=ÐIL=Í];=Âe8=°ÿÒ=²Z=µPÄ=’WI=›’=©2’=Ʊ²=ÁÕ=» Î=Í:’=¹¢g=¨=Åéç=ÁÛé=ÀÛ=Ò¿=Â×=¸¡=²:L=Áw =É2Í=¾=9=Æ=‡=Ñ=èFU=Ö8õ=ÊÚ=·H)=Ó{4=ÓÍ==½:d=®Ù=µ©=ɲ-=ÙR>=Ê7h=©¥Æ=¤}e=©h =°s=ÁÝ\=ÆÐ/=Èî,=°²~=¶™=½=áÄ5=ÞG¢=×.y=¼‚Y=À†ë=»ÒÙ=—‘§= ¶6=®í)=Ûa°=©„=¦í=пØ=Û¸ê=ݸ-=Ý­r=ÔE=×Û.=ßòv=ï -=¿Éi=»ñ—=¯«o=¶=¾¯=·æ=”(=ÈŠ†=¸Ps=¼—–=¼Ê=±4=º†»=¾@=Ñù+=¹xÇ=³ÃD=½Ø8=Ôy™=ʵ=²É=½—‹=· -z=¬iè=ÅÍV=ÎOU=ÒB=šÚÁ=®EE=½á‘=È8è=¾­¼=ÁŒ.=Ú¿ =Ç@Š=ãF=Ì;c=Æàñ=ÕÁ_=ñ¸ñ=¸ÙG=©CÐ=Š@=Ï=ÃPè=·3F=Ãçd=¸bg=®ñ^=¨´é=¬ƒü=©£D=”ñY=¬Ïš=°õø=§ ®=œÙK=©ü=Áý=ÁN=Ää?=È['=Çn·=À‡ù=ºÖç=ÂËá=®z•=¤7›=¯¶`=Æöx=Ø’=ï…-=Õj=Ï>‰=ÏNë=¸H(=°O1=«#×=Ïs#=¹Þ~=¬íg=ÂÅü=º—O=¶¹í=·_=¨­=°§=É—à=Ú‘­=Ú5–=ч=´vE=¹Î=ÁÙf=Þ%=â)ê=èëØ>"Ž=î=×p=«èc=«ß=³Y{=¿ˆO=ÅPn=¼˜h=³KÄ=àn=ÑXá=ÄòÈ=¸Ù_=³ð|=¸rý=Ì¢A=ñ Ã=ð*ý=ßvÀ=Çó?=Ô=äÖ=¾B=Á¿Š=Áeï=ª~=®ƒ=¸×"=Ñ,ã=Á´=Î"S=êo¡=Ñ­ï=Æp«=¾êu=é´¾=Æä=³Âõ=Ã<Ï=Ë¥Û=ÆÀ =¯†ù=ăª=¾0=¯Õ–=´ç‚=±¶Í=°ï =Í€ñ=Íë²=ÔÃ5=òŒµ>e0 ?Àô?wéý?µo–?µo@?«Ùp?- à>±U >s´=Ò‘z=ß¹O=éa{=ñ¬W=Öp°=ÏF™=ËŽs=ä¯0=Èh[=·<=Æ)=ÅÛ£=À‘=´î=»,£=Æ‘ä=ÕÙ¨=ÌSé=ÒÁs=ÔlP=©þ=»%¢=½¦=¯K=Ú«G=ÞJ=Õ¬°=áÏø=Ü•‚=Ùù£=÷³7>†ÁX>ç^h?Mm¤?meL?b/I?HÖ’>¢„v>„>® -b?a"Ç?¸&Å?Ûi¨?è3Ø?§;/?_”Ì>ÒÍ> ä=ì!Ž=¼Zn=¦Ûä=¿&É=»é_=¦k=Î[ =¾p=¨úM=Ùœu=Á8ù=¼ª=à.?=ѧ=Ï -s=Òó,=äkß=å¿=çÛÅ=ùSÏ>Ÿç>UÎ+> R>ÌÈ»>× >Øøf>›øG>\§‰>Ô=ù0ð=×?=Øóå=òF>ZW÷>½„?¬?&rÁ?D;>òÏ>Š™Ë>íh=åUH=ÊäÈ=¥˜`=´÷t=µ¯=‹û>=¹Aa=Áj¾=¹V=ÊëÐ=Ã@Ž=¸,À=²ì¡=Á6ó=ÂýH=ºÊ¹=ÀöD=Äv=ÈA=·e’=»{ö=·î"=£áY=¤ë¾=©ƒä=±ã=£ö4=¢Õ©=¬«ä=×EÕ=ÇÆ+=¿Ìã=»¥æ=Ô·=ÅäM=¼½ì=É\Œ=Ýå=Ì®þ=£ V=È=Ùl=Þ ü=½ñ‰=ÍXØ=Îe=ÄÜ=Ñ=ÕíÇ=ÙØä=ß™=¾¥‘=·iŽ=ÄÝÛ=™ÑŸ=§9õ=ºÒ=×=Ĥ=¸Œ°=°.Þ=¼´\=Ó÷ë=ä,l=°º=µž=¶Vt=°[û=ª¬=Äî=ß—Á=äû6>:#¡>‡‹£>ÄR >ÿ ‚?cn>÷º>È>Ÿ„Ê>„W`>X4>$¤+>bÑ=Ëî`=ª0=¹:=À1=Äh³=«(=¸5î=ÂJf=±‡B=ËJÝ=Èû‡=¹b=³2=²»v=¶®×=Æ·™=¶÷æ=Å =ÛãM=¯{Å=«š =¤Ö†=–ý=´©=ÆÊ=ÕÛ=ɨA=ÁWÊ=¹Ô†=±ã=ÙÜ°>b7Ú>·pî?? S\?àÐ>õáR>A(@>¥Ð=èÙ6=Ö¡=¿B«=ÄR«=Ñã=Ô?5=¸%Ç=¶ç…=ÕSH=û-:=ÖÝ=´µ6=ßãÛ=©nó=žÒR=°Ðæ=ÃËm=ºˆ =µÖÑ=º¹×=íº«=Ïý=¡I=Ó~Ü=ÅÇÚ=º¾=±7À=Ïë~=×)=ÞP ==ävŽ=éé=ôj0=ÙHñ=Ä=·ãv=¸Ée=¿ß=¶ç =´b=ÁXz=¦Âå=®±Q=Ȥ{>Tð>Šú>Ç1ÿ>ÿ&$>øð>Ó:˜>³n¥>¿†>è÷+>ë´í>ÛIÌ>—ö>1À&=Ënm= së=Á­=ÃJr=Ââ=ºs¨=ºv=ÂfÝ=ÆËÕ=Çzý=¹•ê=¶y=·o%=›ýÃ=²ú@=Æq®=ÈU=È%G=»¦=±1=ãè‘=À£m=½1=Ðx5=Þ -¾=ÆÓÕ=½˜ø=ÈŒO=Ù,Ý=ÊãÏ=¼é4=¼ô×=½Z–=¼V§=·8C=£P=¨” =¬=½HÈ=» -=ÆOY=È7d=±L=°÷l=°Ù$=ª”Š=©æå=Ùaa=Ðÿ=·Y=Ã_Ç=žüð= ´“=¹¨P=ž n=ÂÍc=Ôù=Ì-!=·?=™ÇÏ=“£Å=ÒL¨=¥n^=´ -³=Æš'=ªDÍ=·X=ÆË =Ë«Z=žÚJ=«Å"=®£O=¦”é=Ÿ€¤=µ69=¶Ÿ=—ô=v0=‚”¸=Žƒu=™³=ž˜ =ªP¯=·*8=³A…=Ôÿï=ÅÅv=­\´=¯×O=¶•L=±Qá=¢T=±ÿ=¿Iî=»t=¬£==¯ü=ðWÞ>L>&5ì>,nþ>!®¶>Qk=ö¡þ=” t=˜)k=÷(=ŠÁ=²ä1=°vÛ=«ú=¹ÚB=´‰î=ºI=Ï3Î>%š>/HJ>FZP>w*>_®Ç>:žš> Àñ=­èÉ=½…P=Íj;=×Ñ@=—É=µŽ=Áà2=À°l=À° =»n=¸R=øÿ=áÄ5=ʤÖ=º%0=²Ô9=ÁÑ&=¸+‡=²ó=¬0=’—;=¬£N=»^Ø=°Ö=Ø$}=ßd’=Õ£-=º´=Ó͵=·Hv=ºÏ=æ*=Àf{=ÃÃŽ=Ö-=ê^}=²÷=ÇÓ0=ÑN=³–ë=¦Vy=š®Õ=˜Ž9=¶Ìh=ĺG=Â0ª=¹sË=žn=ʃP=º³F=²92=È0ø=˧F=Âߌ=½Z=¾~=²¾Á=Ác1=×}÷>'=ª’µ=·À=¹m‚=–¥=³z¦=¿%N=Åud=ÂRþ=¢á‡=¨%=¿g/=â‡"=µWZ=•éü=¥„=°4=Å­¶=ÇG¬=¸·Œ=Ÿi= ö=Æ f=˸%=Æà>=ÛÒ³=¾Ú=®C6=ªán=Òˆz=½`ê=Ë4=Ú‚{=ÅÖ×=Æù!=·8;=´Ëg=Ý î=Ö -'=Í!=É-v=½¨Ð=  ¬=¾Êú=Ï5þ=Ô)3=ÑÙ­=Ô 3=Ôg3=Á–=½ ¡=³‚=¹,w=ÄN=‹àh=³…Á=Þ‰$=èñ=¸ù>=¶Âõ=²a=®à÷=›éÏ=¾ =¾2£=¬ ø=°‡Å=׶A= û¶=“· -=Á Ó=’(Û=¯cÖ=²(&=ž…”= ¹=­WÛ=¡÷=$e=h„=˜ù¸= Oo=¶D==¼:®=Îè×=·Ç3=–r=‰F=¤ -=°Ž.=Å1“=Ñö=¬êS=½`=ÃÙÛ=ëE=•®™=¦£‹=ŸÝì=¡Õí=¡¦d=§h=§:=¸S×=Í•é=ÏÃÐ=´òm=§¤<=£Š=Σ<=Á†5=ŨL=˲7=°t=†‹ =„PÅ=‰ªC=‹’¢=À€=³ùª=²‚Ö=´?¼=´fA=´=›€=Š¡=¬:Ã=®“=ºPã=»ù%=¸ÒÕ=Òm§=Çòë=Ý=åã=°N'=±ßŸ=Ò©d=Ô›½=ËKö=µ€V=µ¨»=Ä5œ=ÂË]=Ñ-'=¯ªL=¥µ=»Z|=Á(/=¸Þ)=ÌÈÜ=Ò:=´’š=ßD´=Ý­=Úš`=Öq=ºI›=£=¯Pl=©Q¥=ÊT=µ”°=¨î9=¯Jò=¯C=»ê‚=½µ=Éñ|=¶½=¿yø=Õâ=²«ý=¨y4=´]=ʯ=ª××=¬d`=®^®=©jk=™¦=¶Úõ=¾_Í=¸Á€=Á*9=͈I=¾&ç=¯{—=ÃÒ>6>eA>—âÎ>®"±>ÔLw>Ã:!>žå»>j§s>5X=Æ{þ=Ñú=ßÅ=Ì·=Žz¾=ÇQí=¥ö=ŸA=Ì Ù=ÊðÌ=ˆçû=¡˜¥=µD=•PÍ=©¬=ª<æ=¯‚=¥1==¸M=ï+ñ>uªH?,Hm?Ì÷@=ü2@d<Æ@[=Õ@;­ô?ÁIÎ>åå£>5K’=ßgi=Ê››=Á¯=¿‹{=Îd3=¾Àö=ª] -=¦9{=¹ÿ$=¤{¬=­ÓR=¿9ì=¾ûz=ÆÊj=­Ã“=¸ßÕ=¤©û=§þ=³'\=±0á=§¼n=–p0=ž“¡=¦ŽÞ=©E|=á>ñý=û$×> :>'¡Þ>"y{>µK>Š?=ð,5=Ê<=ÕçË=Ó¤—=™&C=@ø=®jG=£© =¯Q=·,!=¹@Ë=²Bf=¹Æ€=µ©%=ÝIr=Üe=‚â·=‚íµ=ºÎ¹=­Þ¦=£àî=Í~4=ɹ5=¬çy=®Cw=·D=Èák=¤où=Ëè9=¨Ü=“Žv=Þ– =ä†S=¦ž®=¨å#=²µŽ=Â]õ=Åã=À3=ËÖ6=ÕB­=µ=¡>=´l=­¶ =¦ã¹=½Íß=˯©=À|ÿ=¤Þ=˜Y=»³õ=·Ž=ƒ+(=bD=[l¼=žºU=›|˜=¢ = HÌ=¢t"=¯†=Äšq=ÔÚœ=º ¥=²>²> Õª> -<É>B÷Ž>m·>€Û>x§i>Wg>h7=ô‡E=Ãhs=¤P=¤ô0=© "=µ8œ=±À =ÄŠž=É. =¾“K=·JH=°¦=šŠÇ=ÅŽ=Òþ¡=×±à=À=¼K‹=Å1ô=9p=ÆG=Õœ¶=û„€> ¹>»D>>¶>> íy>wŽ> ©=ÖŹ=Å,r=ªÀW=¯@â=¼>¾=¿ä=ÇH;=®n€=®är=À™=Я)=ÓL=ß¡Ä=×Z—=̼=éqO=Úr(=žáÙ=Ÿ¯:=³_R=½n=˜­=˜¡=›¼å=‘–/=¢9=“S¥=ÎöÂ=Ôó²=¸Og=¬u&=¯|=¶O¿=Ç4w=´—u=ʲE=à†=¡‡f=¼É—=¸šU=ŸÎ0=›ß=•z½=ºu9=Ö!=™=žrº=œhÁ=‹Žã=n-=”S==“/n=@á=¯Ë<=± 2=¹£_=µíÍ=¤c“=•™â=ªw2>L]>YŠv>´h?,@ý?]‰ˆ?è?’™??†õr?:El? ËÑ>R>á> -=° ³=Æðœ=Êß=¦n=>=žY}=šÖú=©±4=Ìÿ¸=¬ËÆ=‹„˜=ÆrÛ=Ñ¿«=Ù°=¥¬õ=}]=¸¹„=Àoü=Àb=¸„’=¹ÜÑ=ž¥==žÃ{=ºÑb=¾0v=Æ´æ=åã=²{=¹²É=È®'=ÃE`=´›¬=Ë]?=ÜĶ=ÒlB=Ìÿ†=ȳ-=¡íX=ž·S=Ûß+=»xw=žr=º%=²âQ=Èe‡= HZ=¢û=Ä=Å9²=¨rÌ=Ñ=ÝUv=Ñ^é=ÎÔ†=¿Ý6=Èï=ÚT¯=Õ²=¼W=¦‡=Ǭ×=ļ~=—9p=‡eš=¾õ=¼~T=¸Ùc=­ú±=¹#Õ=¼ïz=«ª=°^{=µ‡¡=ÃÎK=É^ =×+q=Æ+'=¸Ñó=ÓXª>Äî>‚xt>“V>‘¡c>j³D>7—~=Ñ–> Æy>?ö>ƒŽ$>€œg>pLr>C@Ž>&cÚ=±«´=¬{=¯‡8=Á<=¿z\=Ä$=Ê¡l=Ê:Þ=Ò_Ÿ=Âf=´•1=¯Ê=“H?=Ƹ‚=½WŽ=¨;Ÿ=³=¼†n=žý)=µcn=ª«?=ǯ=ÔY‡=Õ+<=·é=Å:‚=½¥/=¥La= ªñ=æUt=½„Þ=¼s=¥áŒ=ÐãÃ=ÝŽ=™M=±ßà=°Y1=»ãÐ=Áž‡=Ćš=Ò G=Ä {=»z==˜3ß=¢¾Ÿ=“Äÿ=¼ì=ªlÐ=™=…=Ëá*=Ã\c=³Ø3=°ÜÊ= ®Å=®¬a=Æ8=Á–=×G„=ÃŒ¿=¿µ‚=ÁË%=À"¨=ËáÏ=Ê2=Î¥™=º3£=¥3#=±À]=¸jï=¸‡º=³oû=»W=»¼=©²þ=£B"=Â?=¹í=¥Š,=¨éù=¸Q2=ÐH=¹‹d=²•E=²ùú=¶Æò=Ãù˜=Íä½=ÀÒî=ç®=Ý­7=˦k=І½=¿’=¿pî=¿U0=¿8O=Òlù=ËΗ=“ý=äâ=Ì•=×Ìb=ð =ü8Ø=å•j> Ÿ> Ï¢=âöF=Þñ=䌆=Ü Ï=ÙWF=¬¦Æ=ÎÌÉ=ýñô>ˆ¨=ó´Ù=ªÅ™=µ®Q=¼ðø=ªå=²êJ=½Hå=ÃÆN=».=Žöe=šÏ“=¡Ü&=ÄŒ=¾­=³<•=È«Û=Órò=é~=ÞT†=ÖËo=ØáÜ=ÓÁj=Íå€=Ç/×=Àû=²NÀ=ì)Ü> > ûÐ> F=åøo=¼W_=¿zÑ>K=퉶=Û=Û2ý=ó^À> Ã×=úþo=沃=­ -=àîŠ>=ÎùA=Æëf=¼ß[=¼o=ÏF•> }Õ>¡­=ø¡=ø2²> œ>¨K>L<×>\'‚>pVý>fðH>bQø>f!>i²ª>n´>ašg>l4^>‡j>¨3>³•1>†P¨>–¸b>§·n>°ßý>®ØÞ>©T>ª#É>®M>Å£Ò>Ü;>ï`'>Öò‚>ÆÀï>­">˜¦î>›Ç1>Ä7˜>Æd›>Æø˜>”ƒ³>†>Góó>·?=íÉ„=Û*‘=É®=ÁÅu=Ðòí=Ì” -=ÈXc=Àæ=ºå=¯b=Ó³T=×/±=§º=¦Ã=¦w=½Rþ=µay=¥[¤=‘Y=–U=µÔó=›á-=Žýç=£Ú.=—WH=‹te=®ëÅ=£¾!=‚­T=”S2=›Ñ>=©wÙ=·I=À”n=ÞœÛ=ÎŒd=¹‰Ê=ž\2=—‚ƒ=ƒ=†•H=€:"=‡äÖ=gCÓ=AB¿=1ÿ8=QÒ=†u= ´=“|Ý=¥?¹=ŸÉÙ=ž°=´0V=¯ûw=¬[ƒ=³f„=Ìc/=ÿþ³>kžð>˜æ¶>é~?Ý:?h>ÒX³>ŸÞ>G¾9=Ë"=¶ò=Àêe=”,¿=Œx=·ñV=ËD=Õ+m=‚ë=š›=·&=Ñà2=Æß’=§Ž|=œˆW=”Ìv=ˆ´¬=£±¼=´›Q=‡Ñ·=Ÿñ=»nÊ=®w=®Ò¾=³*¦=—‘a=“mà=«Š·=¢B=Ÿ}z=»GÙ=«â=œ:/=½éû=¹Ïv=«9)=˜æ=šö2=ååt=È!«=º«£=Á—Ì=¶W—=¬Í=ºtê=ÀTg=ÄÒ`=™Œ =ŒMT=v»ƒ=–‡Ÿ= ÒŒ=…=±8÷=Ì<=®›=â'=ˆXô==‚=—»=ˆ’=‡Ké=“²=°=¹=†ìL=lOõ=¯›½=ŸîJ=òì=¶·f=œ“ô=mE==–Î=Ȫ=¯lD=¡ñ°=Ÿï4=ª!¹=Ž9=|Ä=–ã3="1=¤¥=œz@=ž6Ø=¡Ì¤=­}=¶]„=Ê2€=±!=§qj=­Ì”=Ð÷D=ãE)=Ïäo=Њ=мÐ=É`=ÀL=³õ%=³hk=·L¯=Á˜o=ÌA=Äâ~=˜ =±à=¾@E=˜”=¸¾H=Ö4=Ôf±=ÆeL=²ý?=²y–=ÉŒ®=÷Ë·=Ìž„=¾ºÏ=¹,1=¼â&=¿¨æ=¿¡=Æäø=Ì=±P•=Åb=Ùšô=¬Óº=œøµ=ˆCv=“:Œ=›@—=©û¨=³™Ý=¸?.=½fÀ=´¤=±Á˜=ÃS.=¼Ã=µëž=¨«â=¡w=š‚p=ºFù=¿)†=ÂÙ‰=ØK-=ÎÒ®=­¡ú=·ÿ9=¾¥=Èå\=ÄT=¾\ç=­"Ò=µ\^=ºß©=ÇÞ-=«z€=’í=²ôv=¸¬I=À.^=ÞU;=ÕA—=ÀNŠ=à‘ß=Ý^=ÀF=«øç=¤o‘=ŸLz=¼õê=Ð'>=àðF=Í+»=¾Ré=žß8=²â=Æln=º¶=¶-=²];=É’›=Äþ˜=¸_=ñ+=ͦ<=߸i=ËÆ=Æ!=Ëk\=ËWb=Ã^‹=Lý=œé=¢C“=ÑþŠ=ÂO÷=¸N×=¸ð=Ë7„=Þ®¢=« ¨=¸Çú=ËN=Ñ"8=Çò]=·j~=·8ü=½™›=ʺy=¶ü`=°Ê'=°v=Ã~ =ÃÈ=©áÀ=¤hª=¤<=©Ô=½¶¡=Êwâ=ÖÔ=À$7=°-Û=È=¿ZÏ=¼u'=ÖzÐ=̓œ=à¥=«u=¶¨K=Ê,=ÔÇ„=ƺ=©l=ž˜ -=«6Í=ÉÒ¢=º;W=¶ƒ=°£ù=Ñåå=ÚA=ʤ}=®¬¹=ªO“=Ê·¦=Ó[z=ÜRd=ÿ 6=ãÝÃ=ÔZ=ò Ž>Õ=>>Þ??œT}?é‚Ù@Bæð@=I¥@7†§?ÐH?ƒžJ>·â> ö~=ñ=Þé=ºŠ=¸¹ü=¼ÿ´= =Ç͈=ÐÉ×=À˜=º`h=¶J{=›*p=¦Ò°=Ð:=»„z=½‚h=ÕPO=¸y`=²1 =»*`=±1í=«pÖ= Ê»=Ĺ=ÓÓ,=Ô!=àÀ¶=å’]=Ú½=É¡=Ä)q=Ú…=Ö‡š=Õœï=æ˜r=ç#'=æ_µ=æŸ-> j…>ÒÁ>)¸]>ü5> -Ç~=ßÂ=щ{=Æ7Ý=̈—=Ì™=ÌÎÏ=åk¥=ÿF¥> ³Á=ø¶=ëeº=Þ=ÅÉS=¹m=¬7½=¹•`=½@î=À[§=Ò³š=Æ^»=¹9=¿*Ü=ÁÝL=Å<Å=Å#³=¿¿Ž=¸Zç=Öv[=Ûa =Þ[8=ÑàM=×?Ú=Þ9š> ؇>‘ì>™‡> ÿ²=ï¦Å=Â\Q=«7F=«Í3=¯o=Ç:X=Êlò=Îe=Ù¢C=Ì_ =º¸ì=©¤ø=½Ò7=Ù[=¼;H=¯&=¢z=¹Ûi=¹o=µÍ@=Áà?=¿I±=¼^=¼$û=¹*l=µ¤=Ô· =‘R=¯~r=¾ã=Ë…Ú=Ôcj=µ™•=ËÒ…=àÐÖ=dzZ=äf=ýÊ=Óº¿=Í)=È¥‰=Ù4û=Õè×=Òõ}=Ò´d=Ò²8=ÐXç=³–`=ºù=¾Ø8=´U=³ÎÊ=¶õ=Íu=É(ð=ÇÙ&=Ó:¾=Æñ:=½x=­­‡=µþŽ=ºB–=¹Ö=›h=Çç=Ëá=Ä"=¦=ÇÝ=Áð=¹ô·=¨~=£¶Z=¬‡=ÂV=ͬÂ=ÈÓ=¸~=©@=«š=´î!=Çth=Çß=Äáë=À$=ȧµ=Ôx#=»ïg=Äw^=Ï«=é s=Ðßì=ºlê=º„ˆ=º(¥=¹»Ž=¹N)=Ìå!=Ø\/=ÆÜ=¶åñ=²?£=ΰÄ=·ôG=¬²Y=­ 7=¿|=Á¿=²2=ÀàË=Êke=×aI=åÄA=Ûš =Á2æ=Ûsd=×Ts=ÌG;=Æ'À=ͺ£=Ø><=ÅÐ=Ãï=Ã?û=½†¦=¹ËP=¶Bq=ªA8=Ä^1=Õ÷C=Õoƒ=Øßy=Ó÷=®új=³NÐ=±B‹=¢Ï$=§µ=¨†<=¨r=Â[K=Ëh=Óš;=Ï(¹=Ð!¶=Ô(=ÔJã=ÜãE=æ@Ø=¯x—=«~=ªÕZ=Âdð=Ü›=ð-¡>—Z>(ª™>9Ë¢>/i”>é&=û!È=¶ç =Ͼb=Ïnž=ÂèÑ=Ù >ð_>&&^>-;>Žo>Ž?=ÕbS=Ø‹Ô=Ù q=ȹ¦=Õ5w=Ý®=ãå8=Å^€=¼\}=Êê=Ëy=Å|¸=¸†«=íNª=í61=Þ4=Àß=¸Øº=²ìw=×Õq=ÐÕ”=ÈÙ=²Âm=ÃM>=ÎÀ =ÙW"=ãT=ì^ç=û…ò=Ññ²=ÌÖ‡=Ôö,=ÕÎ=ËüÇ=Á x=ÙËÔ=ÏÈþ=Ë(Ê>ý>=rP>•ñ¢?'¿?ŠF“?¢–Å?¨„?€ÃB?:ä¹>·íT>ºE=Ø:8=׳=Ñ”ö=ÔQl=Ô9 =·Öý=ߢ=ÇÍU=½À}=Æÿ=Ç£=½Â†=ÂÎù=Ɉ=Чæ=Êó=ÆÎÍ=Ô|=±ZÓ=Ö€»=îÒ =ä^Ø=ßÌë=䦋=øù=ÔÂÐ=ÒB]=Þnî=ï«b=èê«=ß´=æóJ=ÞèU=ÒW= è:=¿c=Êcí=ÀÚÎ=îØ–=í%[=Ô\k>:>•ò>ya=ç ‰>Œ>Ûò=õ-7>@}> ¯I>Åø> L&>!l>!…Í>4‹ô>Brÿ>X*¤>ĶK?£×—@¤!RA­›BžiB×â BûùùBôúëBÆ#ðB„·¤A1¦æ@ Ýe?ƒäö>ÀûÄ>™S£>€Ûþ>cÐ>^r>Q•>;çî>H«Æ>7Ûk>%üÕ>5û‚>!æ,>ß>›|>z>€>"¢%>14>?M>M8¦>3I·>:…–>?o`><å >:•ë>7ZÅ>2„L>!|…>1â>qê>'z=û’7=æŠî=¿h=ß²q=å£A=ÒÕþ=Üíi=ÑY =¾äH=Ò‰N=ÊôØ=Æ™·=˺t=Ë”V=Èf^=¾}g=ÊÂö=Ѭ·=Ùéý=ízÿ=Ú#¢=Ñã=â'¤=æèÌ=Ý/=¼ñ=Î:Ê=Óþþ=ת=¼r¢=Çlò=È…=§…¯=º $=Ã_Ÿ=Ç‘ì=´–r=ÇÅ=×àÐ=´ž=ß‹$=ï%Ò=Ûf$=ë2^=áK(=ͪf=è,-=Õº>=Êš÷=Û§Þ=ÉéV=Àõ=»gÀ=䫦=ìDú=ì~Ç=­r÷=Ï]ª=Ü0*=ÇšÎ=Ýð=Ýi|=Õ¢Y=¼üÔ=ÑP©=áÂŽ=Õâæ=Dzõ=ÒBù=ö¿=ªžÑ=·d=Ñpp=éü=Ì$z=ÇWB=ë'N=åIF=ÜJÌ=Ð\Ã=µåí=µÓœ=½Áê=Þp“=ΔQ=ÃM™=¶­‘=ÛÙ‚=Ëò=¿}0=Ðï=Úž?=Ñå‹=¶d=ÔÑL=Ê °=¾mÆ=ÐÄ`=ÍÃæ=Ïeq=ØZ=Àµ6=¶êä=°åD=½úÓ=¾Kf=ÃIÌ=Òf=îe\=ÚƒQ=¹×´=âXF=ÞÕC=×7Š=èD=Åäž=Ó)„=äzG=¯Ñ<=°þ1=¬€þ=–§ž=º:Î=ËA=ÔN¾=ΆÕ=¸7n=²Æþ=ÖeN=·£È=ÄÛÛ=ãôl=©ð…=¼=ËLc=ÖÙø=Õ =âu³=õ;=Ö–)=Ñ=ÑHÁ=àx/=©Ö·=ºI=ãt·=öÎ÷>dïÞ?Ì?¢Ñ?üå¢@c’@1@~@DÓ&@ )¤@¢?Åãž?h&>ŒÔ=ä‰Æ=ѹA=îg‰=èæ=·?Ž=ªøÐ=· ç=Åf{=ÄÙÎ=ÔÂ=Óý–=Åâ«=à€=霤=íÙ«=âû§=Ƕ=ÊÉ'=Û?=ÀVñ=Ää²=ÔîÃ>›=ãÙ‰=Öq„=ÏU™=Æâ=Ô¦=Û2…=Ü<ô=Ëæ=ÈœŒ=Çãm=Âåï=¯q`=¨GÇ=¨y=â2=ùÉR> IM>F0> -ø>\N=ì¹A=½N =½bs=»¸*=¶‰F=µ«ñ=²ˆ¹=±–=½Ä=²†!=¶ó°=Ä£=ç¶=ÍÃT=Ã@E=ØŸ§=Æ=‹=ÆŸ,=Í¢/=ä¡Õ=Æ -=ÁÚS=Ö 0=Ëf.=Ð…·=ÎW„=´¨=´›º=½³¼=Ê'¼=Ë2ó=«(D=®¸K=Ôy=Îb=Áþ`=¶Êƒ=°!Ð=®W<=°Æú=¯v=›]›=¯Û=ÁÊ=ÔPZ=°´.=¡€¹=š˜´=«>Ø=´/8=¯³‡=¯ê®=Ý{Í=Öó =Ï$=Åù=¸Î=½«B=¹ñ8=£V=µ9=ºïú=·?„=––'=‘¹î=Rn=–™À=»¡È=Àf=Óiq=ñç—=¹W=µ$m=½0Î=ó=0=ç¥Á=äe=à\Ù=íšc=Óµ=ÛÝ¥=ùý3=Õ -p=àèS=Ø+_=¥Ø"=ßo9=ÀŸ-=£þ=±H=»N}=Êñ=× Â=¼Ô=È-‚=Äh§=µ -ð=¶|=¬{"=­‡Á=¹K==†<¶=ª:Î=Ëh…=ãÔ=­ =°Ä=²})=˜Ã&=ÔØ=Ñ–)=Á{ˆ=¸™=`‹=²øX=Úþ¬=„Ñ@=»V'=Éò=±íí=´Ôï=ÚN¼=Ýžt=¦¾=Ñ[ -=ÊT²=Ésˆ=Ír°=´q£=²Bq=¿>ë=Û¯=·wS=³«l=º#=ÃÀk=´0=±ÂU=³êÿ=ÒaD=Ëph=ÃÆ=½C«=Â¥¹=¿Rþ=¼±=ºâ=Âô™=Àºz=¼5î=¿¸@=²|€=Â&û=Æ-=µHT=±"¿=³ÄÅ=À›•=æ)Â=ßÌ=ëq=ïq·=Õ×=‘z=”˜P=®è{=½Î=Á£ê=Í®=ÙÑM=;—=˜=§¢=Û=¶ây=¤Ì°=›.=˜¼…=Èõ=¨a=•}*=‘L|=°îS=¥XŠ=ªN\=¶äà=­Šc=ÂÝÒ=¶FB=šB¹=ÐW†=¯sÐ=ªÔ =Î_î=‘u=¨ËL=Á‰Z=Þ{ã=šÔ=¢¡1=«ë’=¼Îí=«£‹=¿ò=ÊÂ=¼ÇD=³CE=²Á·=¹Ú}=Î|W=µíÛ=Äyê=Îô%=¼R~=®¯¥=Õ¡R=Þøž=½È=Ô²w=¼è·=±¦Þ=Ã=¬¿È=¹x=Èw=Ö®/=¡Ø|=Ÿ=¨—¶=ÇX=ÉÅ+=£ù÷=¢Ð/=Â;[=’Ò=Žk=úw=ŒÆ=¯Ôo=ÀEØ=ÉG~=»ÿ/=²²»=¸I=“‚É=En=°ìA=Îsl=â¥'=î2[=Îö=¦Á6=ªa=´0=µJ$=T=¡m­=À>u=½fg=Ïo,=Ç=Ì4Ì=åãÑ=¹½N=®?=§Ð1=º1=«ˆÏ=¤í‘=“¬Å=€=¨š=—ŸY=Ÿí =ª¥0=¤ Á=žc=av=_ß=ƒ!=qÁ¢=z5U=—*%=Ò{{=±Ã}=•Û5=&F=œÓt=µ‘B=¨)Ë=¬kÞ=ÊV^=ŽTÂ=Œ&ƒ=¢†Š=²ÏG=Cu=³Q==º©=¥x+= -£=±ïC=²¼Ó=®¢¶=¿N=ÈU•=²¸u=Á$ù=êõ“=ÀeO=ÙHš=é -k=Øç@=Çsg=§ÿÌ=£ª…=©âÎ=¸°Ý=Ñ=˨n=Á·=Æ`·=Âã´=ºã=« =}î=³’Ë=ªÞÄ=±¯Î=ÀÞ=Ù =ÁÑW=Àû§=Ì_ë=ótå=ÌÉ,=Á5!=ÏœE=èš0=Ô0¤=á -=Ù>=Ç­"=ã–ë=àÄn=Ó[ì=Ƭ=¾'q= ¡=ן´=æ4=å!Y=ãe¦=Óœˆ=ßO=î.¹=¡ü_=±=M=¾q7=Áåú=±u=æ­‚>*”>žJÄ? s¼?ŽêE?¢’V?šÄ?{z? -¡O>b_Œ>ëh=à÷ =ÿ½ -=ÔpÕ=åÌ!=âô©=ç´ï>Û=ñ‚˜=³²å=§§Š=¾«V=ºÐA=¼ßÎ=¸~—=© - =â^þ=¹Ó=›,=™¶$=¼Î=ºû*=Ãò=²í%=µAÂ=Æ=Á ‰=²®õ=¨îÉ=¦Kü=|g(=¡Ñ=¬j«=®u%=Ýa =¶ç=ŽªŒ=3î=”V¯=à œ=ÁEï=Ö›=Ç2„=­æ=“GE=±«T=ÓÀ=ω=Ô­O=Íù =¶ð¾=±7¸=È–=Çœ=Èö©=Ñ×=·Rj=²Æd=²{ç=»…Å=ϸò=·Œ|=Þ‰=ÖHÎ=ÏLÇ=©À=»á=¹!q=ÉA=Á×þ=™}¸=¾Rd=²ßz=®:¾=¬me=È4ï=ÆoJ=À“=´;=¥{=¡²=ŸÝk=Žhš=kA=HPË={xI=’s˜=¬û=¬bÎ=²•/=—΋=¤’R=«Ââ=­.=ÇŠ=Ú¬Ü=¿ö"=œá(=œÓÛ=ÎEb=Ü}Ó=ÆiW=­"£=¹=¿•=»0”=̲*=­tw=—‚T=ÄÚð=Ð̺=«Q‚=¼=óp×=Ésæ=°–¨=˜™¶=§?d=œD`=º{=œ53=˜’=¸…÷=˜cA=wF=Á*=Ý°Ç=ÐTF=¹;£=¯‚L=¯žœ=¯0í=Ÿ¯ñ=›|N=¬ ª=®©Â=¤ ½=©c=©-|=½Я>  =ö6–=ù°=õ!=Ó+ª=Ò=0=¸—?=¢É†=³ÚÒ=ËJµ=°úu=·ïª=¾,ƒ=Ú[=ßM]=¼Ã1=¼¬=´; =Â=ÌAÇ=£Q’=Æ[•=©‘ë=¾„3=çc‚=Ëù*=±³Ç=˜œ¨=¥™ü=¦µu=ÔÌ=ÌàÔ=Æñ:=¿ŸÓ=¨Ã…=ÏŠ=Í·I=¯D£=®Ò•=© =ÄO=Ï]²=¢cÄ=¥ç=žL=º(®=ĸ)=ÌZ€=Ë#q=Т=Ô˜Q=Þ¾·=Úé«=Æ8 -=ª›Ñ=ÊÚ=Û=Ãu;=À~ü=È›=Óó=Îí=ÖŽÊ=Ĉê=¤Š=›c=–ª=É‚Å=³Þ= —ž=¬²Í=”¥Û=©ŠÂ=ÀúE=ØÇ^=½Ú=·²Y=¶(=©Ž‘=œI==žä4=® ¹=¬0ž=à¥j=õ÷=Ôõá=û±>dti>ïx?}k ?´ìÜ?Ó[M?Ê(†?µê¼?­Q›?±Ð,?ÕÀ¦?Í·?©°é?D*$>¿bS>šŒ=ýëo=Ý¢°=½Œ=¬'=¦û^=­[É=Âô=Ì:Á=Ãýï=É—=Î0§=е–=¾d=­5£=«×=§¿Õ=° '=¯É =´Úž=ª”^= T©=­Á®=²v=ŸPö=šV=šÌ=œ*=Š"9=ª=Î<Ý=¸¡4=˜´‚=¾u’=Ô,5=˜ˆ£=¯b[=Óû`=ÎÛŸ=Á¿P=Æ^ù=ÙÊd=»ðr=u$ë=r³±=¢bC=»?=»¢=žŠ=¨Ê=ÆpÖ=¯Qy=˶=Ò=Ìï=­[=©D=šmN=Î]=Æ" -=¥}==Ë=ä'ƒ=ªQ=žù?=ɶp=É#j=Àãì=º|H=«³s=‘.ˆ=ªYØ=ÁòM=‚H=—ƒ8=Ž¹=¼R´=Á“[= ×±=¡=¬Ä=½¾£=Åm=Ä­^=¬†È=“Ú´=¯PW=¶ô¸=¿î†=°ð=«á=æÒ=å1=ß B>Þ>ùZ=ªáA=³ÚŽ=ÐC=«íQ=˜øù=±9^=Å=ÌY=ÖÁã=ßF=±ÕØ=©Pÿ=¡Ù(=–\=§D&=Û"¥=È~¦=¹ß¶=¸5=µ¤p=w=®H=ÀÒ¡=¶ËS=º=·¼y=ÀM7=Ëí=«%’=¤’[=¢‚â=»˜”=ÁHZ=ÈÍE=³=™Ù¸=¼Èë=¿bÅ=¯r—=¶˜=µ‡k=¶*Ø=¶–i=°’Á=›+«=ˆÅÀ=ª>5=¬îŸ=¯à=»§s=¿Ÿ=ŒÂU=ša¬=«Y8=¥g=›«=yE]=‹;¦=œ ê=‰We=•è=›QÀ=¥¹í=¬Ý¸=}ÿõ=–dC=ºp=£¾›=šH¨=¦²Û=§'Î=Wúè=¥8Ï=¹™=Ðm=Ó5.=à¬Þ=¬ò=¼¬=Ñé‰=º›0=®I’=ŠÐÌ= e=’÷=©(Ÿ=²ÖT=¾œÀ=»gª=­êk=¥0h=´m#=Á%=££Þ=Œ@=Øz =â(©=ÎU9=ÈÅ=ç =¤ðà=»´~=×#H=Æ Í=Îǵ=¾·½=ØG°=ò =·O!=Ÿ[=^×=¶}o=Ý0¢=Ë#=νq=ÔzÖ=Û5=Ó+=œ~ø=¦@K=®ë=ÞâÎ=Û5Ä=ÀfÃ>¹š>>T=Çé =Êû¹=Ïóõ=Á…¸=º@Œ=ªAä=ǨØ=àna=×æ=ÆŽ<= =Ý=°=ö—j=ÍD=Á,í=±÷a=¸Ïù=Ç6ç=øªô=î@=æ½B=¡I=®=Ëu=Å -S=Ç£¿=îÞÉ=Ü¿5=ÊX–=Ùi=Í Û=¥ÿ -=Â}s=Ð:í=“I·=¬–u=ЈÆ=Â=À¦Ð=ÏYl=»U=«Õ2=Üã =ÞÜ=Þ¶O=²‹¬=«k=ïßÐ=â–õ=ÕSÏ=äÍã=á!k=ÕKÅ=÷`D>2o=ÿú> &‚>ö> ¾>$,>.Jg>ÅD>½ë>u½J>sÉ,>pÌÌ>pÇÊ>q.Ä>tí¦>ƒÅ{>ŠÕ…>…ùP>‚Å°>{®¬>²×6>¿ðo>¢G>·>ÉÀf>ÅÚÔ>Árc>¸ì¯>¸‹>¸›Ä>º˜>­ì¸>¡<>séƒ>hjW>b >NJ>EÓ>IØ>JÜ>M);>LçŸ>GJq>7ûÜ>°­> =Ò±“=Æé?=¹½ê=Çÿà=Êú=É·³=º|=±ß`=À®Œ=¸ðß=°À=©IE=©õ–=°!ü=¹ä›=¾Ž–=¯=²¥=·\×=ËŒ =ȃX=¶È+=Ëõ—=ÕÎ(=ÍòÔ=·eí=Ú =²j$=Àiÿ=Ý{=ÂŽ(=¶žÆ=Ìê$=¹×í=¥NÂ=Àëo=½ô=¬ï+=…u+=xƒ|=»Ë‹=»G’=»v=û>‚æ>óN=ðqL=àŠ¿=·Å>=È}m=Ötí=å(0=åïÉ=åa>=>³;>‰Q=÷ñ£=êø=Ô\‹=Ó„¹=Ók=­s]=¬I©=¡=¸x¤=´Q„=ÉŸº=ÅÎd=ÁͶ=Îã=Òlá=Ö«[=Û€=ÕàÌ=‹”S=šÒÑ=¨])=¨<¶=¯¼”=½×=±ø>=°È¼=¼)1=ÌÉê=Øi6=» ã=·ï=³‡J=ÑS=ÊT²=¤N=¨• =¬Ñ=¸°[=¿ÈÞ=Çt­=À[=ºÂg=°³¸=¥È=¥ &=·™c=³_g=°4)=©=®Øž=·iÿ=²>=³"q=»ôô=¡ã =•ò<=¢¸=Ÿ|ì=œº»=ÅËh=¸8ï=œÑ)=Äîà=ÌJL=Á=¸ ‚=±† =”ûR=Ÿ:=ªÔž=×öÙ=Ð@T=·4==Ü‹)=è=é˶=ÜME=Ó ·=ÄyR=¾!×=¶ÿ=Âz¿=ÈE=Ò9š=²ù™=§Ò)=® =±ŸÖ=´1m=´tm=±1Ó=¬Ãs=¸O®=±©=4=±L¡=¸µN=·ím=Ç}µ=Òöã=”ÿº=ƒï=©|Õ=Á‚=¸î=›ª =¾Wþ=ÍÏó=ØüG=É+=½³=ËZ2=²¶ö=”2=±üð=¸ê9=¼Ž =ÐèE=ÕQ=èú=¾Ë=»&–=´û =» ,=÷=Â˯=Ê"æ=×*Õ=Ö`x=ÑúÉ=ÁÕà=Ü=l=è¯O=ÜŸ}=ë-=¬©‚=˜ç…=¨²¤=À°=Ò/r=Ëð¡=³mX=¸†l=À«g=â·„=ã=éë>Y¾ˆ>×s‡?'W?ky¼?eot?N‚Þ>霱>œ·=æÉÔ=ƯÌ=¹û'=Ê° =Íç-=уµ=ÊžŒ=¸c=¢ž*=®­=²ß­=¼Lÿ=Ás+=Ä=ÉËs=À´î=»¶c=¼¸Q=Îp=ݪ=ÃþÀ=ÈgÛ=ЀI=­¸=­"+=¶/=Æ -T=ÁÌa=¢××=°2Ì=²ò“=•ˆO=•—\=•¥=°[Å=½ý=Êí•=¬£R=¯Fn=¼ñ:=Ír=×ñ=ë=Ó“Á=¿ÿA=Ž -Ë=½uÅ=Ú +=¨H[=²Vb=¼-ô=ÈH=ÎÆÉ=ÖÂ=®ÚA=¶T»=Öð¤=ÑÚ†=Óì=ã¬Ç=ã÷=áìÅ=Ö¢n=´;ß=œq#=ÈÉ=Áïè=»”J=Áž=¿¢Ê=»Øù=ÆáÑ=Ç81=Á>Â=Æ)ù=Ǭ¨=È2=¬ýè=¦=ÍÚ‰=Êê=È‹=áà1=Øs=ÎË=Í)å=½Bv=¦³L=Ú3k=Ë º=Ÿ{Š=´mš=¾à£=Ìè#=¹Ôí=¹9=ÙŠæ=´^»=¡®=¿(â=ÂÐ,=Æ9å=Ì”=Ì =ÌdÚ=À/=×{>=úD1=ÀÈ=¼¾X=ÅV.=º®h=Çþ=ò„Â=öª=±4É=²]g=,=•„•=«‡=¯V¸=±å¾=¾ž2=Åñj=ËÙ=±­ä=´DÅ=·š=¾So=Ù_=Ëç—=ª©=¥t=¥†K=º÷î=´¦=˜ZÈ=¦S¾=©1:=žÙ=°šT=»º°=Òh¡=ÚX»=ÚŒ=ªU\=¹P=Ã3‚=ªd¿=§3d=£ö]=·O=ºLÆ=½c[=½Âü=¸´Ü=±5E=¶¦‡=¹Ûæ=½áé=®+¼=¶Ât=Ñ]=ÌPE=ÍŸC=Ø÷3=ÁÓ–=²2ó=—=÷=¨ -é=²ßn=½Ãw=¶š=²Ç=Ë— =Ó«=ÖŠ=½>=À$Ý=Ã,ƒ=£Ò>=¬ë³=·=Ýhæ=Ç2 -=ªÔ‹=Éwr=ÇJö=¾Ð=¡…W=œ;§=˜*þ=´±=À{<=ÒÜí=¾÷=»5=¿¾w=»õ=³wt=¦/=ª·¼=®D_=²ˆ=ÈÐB=ÖH\=à(}=ÎJR=Áäæ=²!#=Ü+Á>ç>¾#‘?:· ?vùÄ?Žò™?yA¹?Sû×>•"™>’_Ú>ŸÿD?]]®?x l?†¼á?h}†?q>°yá=׺Ê=×} =Údû=ßÑ…=â%ë=æUC=¶?µ=Äù]=Ù=Áƒ=ÂrŒ=Å«Õ=ÖË =Õ O=Ñsh=×±£=ͨß=¾ƒŒ=ÄK~=¿¾G=¸K’=¸I=µÍz=²=·SM=¼\=ÄE÷=Ä“Ú=Èø“=Ñ=°àÒ=½Ð=ÝH=ÃQ—=ÂIá=ÊnÎ=¿~Á=½or=½«¤=®Jì=´Ï==Éåê=¯âª=®`=¶¥-=±})=­íÀ=ª†í=¥ùõ=¨¤¸=±È\=»ø[=ÆZÈ=Ù¯—=ÏÜ%=Ó‡=Ý9.=ÃêS=°Öl=’£6=­úÛ=¶Ë°=¼\ß=¶íh=º=Ã5Þ=¢qW=¥y™=¼*6=¶X=¾¦0=Ô´ƒ=ÎÃô=ÃÐ=²5$=¼4=Ãc=Ïæ=Ó—2=È^¿=³\c=²Ù=Ëvá=ózb=Þ*”=Ñ=Á¨—=ÌëÄ=У=Õ{M=Êb‰=Â?i=¼=¼Îk=¶¥=¯¸==®—O=ÀD´=Õ<}=ɧ|=¾ûR=´ÉL=þ”f=ðTó=àÔ=óÛ=äÉŽ=Ø•=³ƒ=ºÔ¦=Â6ÿ=÷¾_=×8 =¿Kÿ=¿( =¾¾±=¿4n=¿ =ÎÆP=ÞxA>©=í]1=ÚìŒ=Å|-=¼ˆi=½Ô·=Ñž¦=¿’÷=ÃSj=åjà=ÖŸø=ѱ¹=ÑŠÊ=ôN¸>’ï> ‰L>Þ%=ùTÆ=ä/_=¹¿c=²sr=²¼=³Ž@=­õÝ=¦›8=¬^i=¶Lù=ÁXn=Û ó=Óü=Éø=«ì¥=Åäó=Ú‚Y=ÏŸÔ=ÃU -=¼ú¾=Ï\h=Æ€=Á'1=¼1>=ÁQÉ=Æe¯=Öº=À=À:%=ݧ.=¤Ü"=¤î°=Íä8=®ìô=±‰=Ã=Äk=‘G= ³=¶ Z=¹m=¼s=Èä=Þ©ñ=ð_i=Ãî=ϳ"=Ö&k=ȯ‰=Òòñ=Ô½=¾%Ù=é#¢=úÓU=õ·ñ=Þi =ÝÌ=ö{æ> -Ê`>Ç>¿¹>(W€>?çÕ>`õ¥? s9@)"@¦ï}AíÑ3B®(B$\ B!·OA÷ËA®)@yzp?Ìç>Û±>_ÔÖ>C§ž>2.>YW> -Òœ>î4=û’>> àu>R=û˜ð=ü%ñ=÷Ð=ôµ‰=âPA=×gó=Õ/9> È=÷¦}=îõÑ=î¨7>ÐÝ>>ž=â²=ü:=ûô\=ï5/=ô À=ýiÒ>GØ=ü1™=ëƒ.=Ý–í=õóš=î+¶=äás=Ï{½=µëµ=±:F=ɲP=»Te=Â==×’ =ÇJ=Ä]=Ä‘ÿ=Ë%r=Ç[=Ƴ=êÏË=àˆ=ÖÄØ=Ò@¾=ÒF=ÙP5=뵓=úea>§>ñÙ=ÿjb=öÏÄ=ìHÉ=ùŽ‹=å_|=ÑóW=Àó=Ü7¡=ç`=ˆ!=Âè=Ähv=Êv=ºƒs=¼€=Øñ=±eâ=®¼U=±¡^=ÃÄÜ=Ä.¡=Çðñ=Ýl’=Øg=Úi{=ãlÒ=ÜŽ{=ÛÊ=ÛE=¡Kn=¸Ž=Û‚¯=Áµ,=»tÅ=ºŸý=ÜF=ÎÁ =Ä©4=¶•#=ÅÌ=ÌG0=Ïû=¬5=¿Ò«=Ø[7=·eÙ=Ï=ÝF=Ì{Ï=ß\=é4`=îÓÃ=ÓOR=»Ñ›=Ÿks=Ò4Z=Ñ®ø=ÎS=Âc=¤A~=ž·Ê=Õòb=êÍ=ßÎr=¼?D=ÉSÿ=Ì‘?=ÑZÅ=Ñ^X=ÉN‡=Å£_=Ëe=¸bü=´á¢=Ä6ö=¿>=½5Ò=½æÜ=±#Ã=Ây8=ÑØÄ=Å*=ª§=¨šœ=ÒK›=¶‰=®ÙÝ=©|;=É:í=Äs®=¼]ˆ=¨ß}=¬¾3=®ƒœ=¨Iô=­¥=°Ç×=¶Uw=Ûtw=Ûªü=Õ˜r=¯ÀÜ=ÌÍ =×Ý=¶™ =À3©=·ñ¸=¡À=À -ˆ=Àº=¼å=Ã%ý=¶Dm=·/8=ÖЂ=Ì&n=Åé =ÁŽ¿=ÎÆ =źh=ºLv=®JT=­©D=¬ïŒ=­ˆA=¢©=­ÈÖ=Â`Œ=Ã@¶=Áâæ=ÀÈ:=µ‰V=Ø!=Æoð=½™=ÈÆÿ=ÒDý=Üü9=s¶=GU=ºw§=ѯW=áß=Üö“=Ëž$=Ò†=¾IÓ=­<×=Ǭ=Ç$­=»uW=—êâ=Ç“¿=ĉõ=¶-=©D»=¤ŒÓ=¨<=ÅÀò=ÕÈ?=Ϻ+=¸3T=Åž=Å„Ø=ÈÅX=âRS=Ý„é=Üv´=à¶D=ÇZÃ=Ã=Ãk=Ä õ=·ÑN=­J=¨¡h=—äÂ=©"Z=Ë€ =°°=ÆíÄ=×=Ò !=ÂSè=ÌìJ=í!=¿ê>=§|=šúw=Þ =Àß=À×ç=ÝtE=­Sò=½y¡=Õ4ê=Áñ»=Ï>=ÏÑ=ºÅe=Ì>ä=Í7¦=Èú—=ÂW =ÂN3=Å¢Ë=ÏØ=ÊÐ==Ξ=× q=ÉQ–=Å¥I=Ç›==×òf=Ý‘Ë=Õ\Š=ËÛ=Ä0£=Õjú=ÚÓ=Äœ™=¾]x=ÀÕP=Ä˧=Ó‰f=¿øØ=°â =°N=Æ–Á=Í„¸=ͬú=±Ö­= ²=ž2=¹–‚=£N§=¾Ç=íx=ØÐk=¸¡u=«œÁ=½àf=³¿=¼#&=Ì¢û=¾ŠF=µA?=·L4=Ëê=®Ó–=¸)´=Ê N=ß`F=ØÛê=É_Ä=©·€=¾F¾=Àö!=¾æø=²œÈ=¨~E=±v@=Ð%&=®„#=±o =´Æn=­3¯=²åj=¹S=¾pr=òê=Ýß$=Ð K=Ùòø=ÒQ=Ú=åb=×å›=À´æ=«j=”ÁÓ=¨ 3=¿³=϶Ÿ=Ç =Çë =ÍQÕ=Ò2A=¼ü0=´ =«-<=¤}Æ=¶’×=¸äß=±“õ=¨ìU=®„½=®Rß=ªâ =žµL=£ÎÂ=­÷¶=´Âì=«m =¯‡=½D=®³‘=¼ô=Êr=⑶=ÅYÃ=µ”‡=¨×}=¦à¤=´t=¶“m=¯H7=¢öh=Ò}*=ëœ|=¼\=¯úW=¢Ë|=™ 5=ËÖ¶=Ǥ=½ý=©¡w=ÑãÕ=¿7=µ»q=Öð=ÌØy=Ê7=Ç^é=ÏRD=Ê  =Ñ3=å¢=áhk=´[Ù=(=¢I%=ßHì=Æ:=˜=±þÙ=ÏÍ=ϧÆ=ÄÙð=ÁÚÃ=Å­8=¿ã7=¢Ñ=Åž =¹rï=¨¯é=ÄZî=ÏèÜ=ØaE=ä3=ÛŒ/=ï.h=ä~=©Ç9=Û„˜=Ð{=½Ýü=”Ôù=§ù¨=ªÞd=®E =Ê„F=­G­=«Çe=¿ÒÁ=¿ú·>‚X>`2±>¤µ?>؉I>øü¯?½‡>Ôªb>¥Uñ>uÞ›>Z²=Í€J=±á€=¾êB=óÖ=ý4õ=ÂÛ7=£J|=§Ö™=¡?Ë=¶‰=Äf±=Ì'ž=Ã(×=¿xa=ĈÝ=¦ž=›ó=¬é¯=Á=¢X =¡Ná= Z+=œTG=½«E=ÈY=Æü=¾µ‰=ÈZˆ=ÀÓÓ=Á‡o=Ï~{=¨iö=³{›=ÂD=·‹=µWÆ=Âþ[=ÓåJ=²Zª=´ÏX=¸ h=¾&¥=¤V={¸=‘Ú=˜Iÿ=̉>=·p=¸äú=ˆ¬=gÔ=ª]à=²‘D=§¸£=’D=ª¶==¶Ò’=¨;æ=¢¹Î=œß)=œŒ&=¯î^=¶?O=¹±=¶n=žÑÕ=ÈÅ3=ËHˆ=Ådl=þ/µ=úÙØ=ñEv=ã‘í=ÃÑ«=½¤=º=°©=Î -Š=Õj=±=Ÿ+Þ=› ‘=°=¿¼ª=Ç1a=›_3=¢à=­F\=½Eù=ß+å=¾Î®=¯=¶¬=—‡¦=µ:i=¾,é=¤ŸÅ=”_\=£i¢=­ç†=›Êƒ=¢H =§ p=´7n=Ë„÷=Ã*`=¾Û¾=¶Ô/=•P=¥ŒD=›§Æ=¦T¹=¶7=¾-=º' =¹ñã=ÆÚ^=²Z=½®c=Êñ¶=å–m=Ÿ=­Lì=·žj=°_=à $=ßgg=ßlñ=ס‚=Õn#=æ¿à=âûˆ=¿#Ô=¶! -=º(¾=¼]‡=°]™=ªq=³Œ³=Àx¶=ϸk=«’=»òõ=Í.›=¿[¯=ôNi=ÒF¨=ÀwÝ=Κõ=ÏÎ:=¬5—=¦nè=¯4=×|ˆ=¼N=´Iý=­å&=¢çe=§œž=©Ö*=²;q=ª”=¨jô=œÈ=–N§=¼âí=¾‹=¾':=¼Â„=µ›'=“}¿=™Ù†=šHv=šÂ³=·À‚=»ÜÛ=Æú=ÑöG=¦Çz=µV=Àyö=Äfö=š¡P=¹]K=¹Î =¦y7=¦|­=áS=¿P3=ª^2>az>¨?Ý??‰? Ös>ÿÝs>³Lk>)DS=Ñ„D=ê‚j>çd>Ay–>«Áø?ÑÁ?i?Ì0>éص>v¸ƒ>‡Á=ÈÜK=¦OA=ËlÑ=Á4N=°´™=¨K–=¿T{=ôdÆ=ßÞM=ŵð=Ù‹Ó=áž=Øä=¾·Ü=¾²=‰{K=°èV=Óú=æ!u=Æû­=âhG=àJ=Ö~=¿F™=½ï¾=Á|”=ÖEç=Þ9=敺=´==£[¶=°Ö=½w<= =«ÿ1=Ë„n=Öc=î¢=°ÑÝ=¤õL=Πµ=®ÂL=…=Ÿœ$=ÆÂ=¹—!=Æuÿ=¯y‹=¶Ôl=ÞåÎ=æ‡W=å š=´|=ªn=Èv\=ÖÌ’=Ï”=Õ¡=Ʊ„=«å=«¸=Ázœ=ëDœ=êU×=Ë4Ÿ=É¥‚=ÄWü=©®X=ÄLÒ=Ð;è=Í@Î=̉\=–¨f=¢£9=¸Wó=¹qE=ÂÚ=ÈOb=ÃÝ‹=»(=©ñ=ãH=Ê¢W=»{v=³Þn=‰’=Å+=Ïp=³ 9=’HÛ=Þƒ÷=ɧ=´Ó=¾=Ýk=±Fƒ=ž¥=›@–=Çš=¹…=Ê,=ÇgÓ=¿ç4=¡v=¡.‚=©óµ=±;°=µS&=¥Z=¤ÄS=¨xv=¨ñ=®Æ-=èe=Èš =ÀË=¸!×=˜PC=¢=µp‡=È0Å=½oý=°ÁN=«?´=¸~¸=¹‚ä=Ÿ"å=£Ý=¾t³=°ÏÇ=œjr=Äs=¹ù¦=Ã?==ÈOA=å•©=é¡9=Ör=²–÷=º´=Û„÷=ëê~=þçø>=ò=å/#=¥ƒ=¿Âu=¼”ì=šU=ŠÒd=Îÿ!=À/š=´Úa=§ŒU=½Œ=³æ=³Lú=¢È»=¶|ú=Âã³=Õ#S=Þ!8=ÊÔ"=¬v=ÊqQ=±(é=¶Î`=á66=Ÿ´Q=˜fv=¥ÿ=žÓú=˜!&=“Ä/=ŸÙ=Žs=’i=¶ªg=£#O=Ó^=Éh3=³ƒŽ=¨ªp=uS%=˜ûF=–©p=“4á=¹šF=µq=Õ“ù=ëRL> æö>Þ=Æ’G=ª¥O=šÊ¬= B=Ìïµ=Å:=¤Ý·=b¡=wa÷=Š =Í+=,=v/=ˆ£”=‘Š6=®1=ÉôR=ÊÚ=¸ô>=˜­8=Æ-=¶Le=£Êà=Ź@=ÀñŒ=¾¦Ù=¡û.=›oÂ=Ó¤g=¹~-=ÅfA=¸Ñ=Ÿ*=Ÿ—¥=¡=É$Ì=´b=¹ú„=È•ó=Û‹X=Χ{=¶í[=͇›=ãff=¿ -=´d2=¾ï=Ïå=µ†$=ž¦L=‡é„=˜šê=¯Ç‘=´uò=×Ð]=¿‡=·]Ý=˜Á§=Ž=Á’Ž=ÁÝF=Â8|=¾È(=±~Ç=`§=²…4=®î¦=²ë¾=¾Vµ=Ñ™ -=À*±=»Š…=¯Ý„=¥¥+=œòè=>×=³ÿ=Âõ½=¿Õó=¡O•=£‘ˆ=¹9&=•§y=ƒûE=™èì=¯Ÿ=Èë)=Æ[¸=»î‡=­fõ=¹M=«w\=ÝÞÈ=îôÿ=¿Ýë=¯AŸ=“Ï=±Lã=úb=Ÿ4:=£Àn=ÎtŸ=Õ’}=½Ÿ%=˜0Þ=æ=²ßø=´6½=¡íÅ=£·Š=¦sÜ=ª‹(=»ª8=Žq+= :=°Yb=œñH=®‘=Ë…m=¯¾E=ª7ì=´´ñ=«:ý=˜ìî=±_æ=¼¯=³‘“=§rŸ=‘ºf=•@q=¡å=³ r=¼ÿ=ï—a=Ťª=‘°=¥{=¥oC=ŸQÆ=¾Qú=˜BH=«0A=³WŒ=›GÈ=£»=‰§ =y‡0=†ý|=§äu=¯D=—¡®=¡íH=§r=²N¥=¥ %=–ÎÐ=¡–i=‡÷=¢Y =­ÕÃ=¯„"=¯­=¡n =|;è=F‘=Á"=×›M=Ú1×=¢„+=°ò=½K²=­2=§Ã×=–›÷=ˆ`Y=˜D=¬‹‚=¡‘ñ=Ž†P=Zç=£ ï=£x=µ6q=ÚÕÌ=·Œ=„= ©Ÿ=“é^=^äÆ=•o´=¬—¸=¥j—=‚rq="CÜ=‡®n=¾t=r©‹=„̺=±<"=®ÁH=ªÚô=¢1=ªÞ"=‘º =¿ª=¢R¢=gfM=^5‰=œÒ=ª¼=µ¯\=œÝî=¤ =«eb=©§=µÊ»=”tô=–,‘=ŸÛ=¹Û=Õ Ã=™d›=ªÃ&=³ø;=›e=‹l£=ßYå=ÈœL=–Cx=Œ‚Í=…hî=»ƒè=±žê=¨‘=¸Ó=®ø–=²)Å=·–=£˜=­øõ=Í%ò=¤ É=¨£=¾eh=¦³=¢Â…=œµu=’”ƒ=ˆî/=£B#=ŸéO=š}¾=Ýó=ï!=¯ÑÚ=±úˆ=•å²==§=’#›=Š†i=™6=³ì =«âZ=¥û=Üæ;=Æœc=ç}=‹æ¬=Š3ˆ=¶€»=¡iÖ=ŒßÕ=ˆÏ=›ÉÁ=¿RK=¼œ=¿.E=°*=®©ô=|u =¤wR=Êíp=ÑÆË=Ãÿ·=³I=»=Ûàž=žF¦= m=µ™=®mž=ª÷ú=ëÞY=ì·³=ëRn=ÃIÄ=±¦ª=²É…=¶ÃÈ=»-=³2I=­*=•§›=ž˜U=§¨û=žß8=¥Ì=Âhá=Ç 7=ÊÜ4=ìº÷=Ù -Ù=¥Ž=½`ô=ɘY=®˜ˆ=´ø=À’÷=Çw‘=Çê=­Èû=¾ $=Ña¸=к;=ÒÕï=Ù.}=ÔÂ=О_=¦ªf=ªÉ=½‹=Èg«=Í¿á=¼O±=¿"Å=Ä=Ñ*,=Ò©ú=º{=¾(§=ºÓ=Éœ¼=ÌA)=Óy.=ººË=§ÂS=Ø{Ø=ÓŠÖ=Á{[=Íi=ÐÇO=¦Ê¤=´ü=É4u=­ÃU=¬ªL=Ò é=²*V=”¸=ÒÍò=ÜR?=ã¶=ÇŸ =·Ôk=Ðçp=Ú§[=ëZ=×Ý=Ïzu=Çã:=Ô^=áL…=Ø´·=Òœû=ÅKO=ù > ]Å>V—>g:>âd>UkÙ>r_Ò>uðÃ>qìG>m”>ŠœN>‹éu>„öº>€ào>|Ò?>Ž¸#>­•ì>äûÿ>«Ë°>œ±‹>Ëü>Ìñç>ÎÅÓ>Ы:>Ò—E>×Fì>Éü%>ÁÊó>¬‚x>“ -¾>S`…>bÕ>g,y>cÓ>dÏK>fº¶>Së ->Mò >DžÂ>DÖç>B)€>T=ôgq=Ô…c=Ôx=ЂÜ=ÃÚ¿=µÇ“=ªü[=› j=Y=¢©=¡›Ý=¡4¨=¢&s=¥÷}=©æÖ=©rñ=¤¹N=™>r=ŽzÜ=ˆ¬k=˜ý=Ÿj6=¨=T=¡‡€=©`§=×Õ=·Ðå=ŸVd=­N2=¯ð·=µEÚ=©ƒ5=¢E=|è=¡T`=µ¿¬= "=¨=(þ=0=žjŸ=µTC=±›=¬½\=¬Éü=¤û÷=Œ[%=¯Z=ÁÚ =yr=Ÿ§Ý=Ò%=¿$'=´R‰=›9ˆ=šÃÁ=švØ=¿O=ÈM:=×YE=§Ÿ©=žAÀ=·m=¦:œ=˜2´=»™ø=½zn=½£=¡µ¢=št=®n?=ž Í=ÛZ=²_Ž=´õ=´ßË=µcn=µ®D=µ`g=¥­´=–æ,=ˆàa=•f=µˆ=¤tX=žÅÆ=¥=­9=´8=‹*“=¦ª=:x=Aý=ˆ¯×=-&=¬NÈ=ºÅõ=˜4:=›•=«‡]= P=›qs=“z=¦Tá=¹Uä=÷=¤Àh=¹ç=“×=‡‰U=›  =—((=“cP=“ÈÈ=˜Êú=¢|Ä=²à†=³íª=™úS=¢.Ô=¨:Û=Äq·=Âb=¾<ý=„½É=€¤Å=¶=+=ÂÈ!=ÊÛü=ÄZÆ=Éý=Ñ—À=¹!˜=³ìÓ=³•"=·âÛ=»H(=ÐC=Ì*n=Çú =µiù=±ßâ=±ä=Àwn=ÇÅ=ǵ#=Ä^=Àª(=³Ž"=²=²&¼=±µž=® Ì=”¨’= Îé=ª-m=°lì=Áž -=Ûm†=¹E´=¹Ï¾=Ú„Í>'& >Jvú>o]L>g5>]?U>Mº >O@@>Y">==,>+mv=ùö“=Ïç"=­€=¦:¦=¤U=žô½=Ö B=Ú*-=³±Ò=À‡¶=Å–]=žmÂ=¢ZQ=¥s=± 4=°ò9=«¶=¯Ïì=±¤=«M@=§L=¤G==°ŽÁ=Í\x=Ž'=‰‡d=£R=žØœ=›Ðl=œva=ªøN=¸/Â=…Õ=rS=¦.T=›„`=˜7=“ŠÉ=§-=²‹!g>ž|4>²ÐY>šOk>|òi>&Ü=ãáø=Йë=µy:=µJ¡=·™u=Ï"ë=íÿÞ>£>™>ŸmË>¦>˜£>xú>GC=ìI=ÔaV=Á5§=¨’ƒ=›IÝ=ŒÂz=¡ŒJ=ª¦Ë=Ÿ3==©~5=²>û=˜¹õ=¢ †=¬Cv=²uù=°Ü¸=¬m(=–1=[=²Iu=£(=¤`j=²nk=²×=´%)=¹[„= |=Ž—7=¥Ôn=·|m=ÅË=¥ó’=¬'|=³K=­´i=¬|¤=­ Ð=§{ù=¸ _=Ú´=ÄöL=ÁBx=ÆŠø=Ϩ=Éùm=¦5`=·:=¾§=³C=¾v=Äz˜= 7ì=£ô‡=¨ õ=ÈO‘=¼„B=®¡ï=›úR= ÌL=¨æ=¢] =¥ËB=®›S=¯zÁ=¬œ‘=£D2=©V=®<Ž=¾Ís=¬LQ=ªÐò=Ëð¥=¿ŽŽ=³2®=‰üô= Ö=±•=¸¶ã=«=žóì=À6=´¿–=¦ÚÐ=Á Û=¼¯Œ=µòÜ=ªŒ‘=­Â–=¶{ -= ÓÖ=£öm=¶ÄÅ=¼½Ö=´Ôe=¡W8=¯hÕ=»'æ=ÎW²=¢ÃÀ=Ž­°=‰å»=¶¬]=Äò$=’í=¥æ‘=©ñÌ=¥5=­b=µh5=ÔC=ÏÔÍ=ÌÒ=Ÿ(=¥Óí=¬a¸=¹ˆ -=°¯f=¥l«=™mó=šÌ÷= :I=§D‡=°â=»•O=‹èÙ=™'Ú=¼$ž=°]W=¯×«=¯ø=¶hG=·ƒ¡=¸HD=¸ïs=¼…f=ÇHë=¤N="e=²ï =³ €=²o5=±ÁQ=¶Ì…=Ê%ö> u¶> /G> =Ó"=ÍLî=Êž¬=Ãr=¾ =¹Ì =­ä=žÂ=•¸Ì=¨¹=·(•=ÁbQ=ÁB=µZm=«õ6=˜À=¯qj=¿ó+=²þÌ=Å̽=Ô`Õ=º›m=° =§r“=Á¥Z=™Ó=Â:t=Û’=ºNõ=˜ùÐ=´%=¶ùõ=º´=­hŽ=£·S=™8æ=À=Ç%s=Î(6=Íb+=ÒsÝ=Ù±=ÎOL=²B=‘ʹ=Ã/c=½]=±by=ÃT6=¾dÓ=¶ò:=±gF=°to=°(=³ð[=ª©Í=œé=”?V=œŸÚ=§fB= zf=·Ú=Óûs=©!ý=£×·= TZ=Þ =Æ =¦ÊË=ÞÙ~=ÔÜï=Ç`¹=Ù…2=¹ø‰=”ñ–=µ»ˆ=¤,=ž_=²Ý-=·à¾=»§Ö=•°<=¢}ã=®î,=Íiî=¹'=¥Õ«=§9 -= '=˜{²=Ÿl=™² =•(Ž=ÅQª=ш=Ø;y=¶J¢=¹Y=¹¥1=¤Ü:=µ!v=¾Yj=°¡=ÅMÃ=Í’Ë=­rÀ=µŸN=·Ç=Ÿ™¨=±0£=¼n—=DZÁ=ªÏ“=£‘®=·âI=©RG=£ñg=¨8=·7(=»?ï=º£‰=ªã}=¥+Õ=¤˜ý=½kã=µ¡·=–¹=¥õè=¡Û³=•Ñ=Ö_—=пØ=´ ,=Ã["=Ç[O=Æ€=Ìè=Æœ®=¿®¢=³—–=©[þ=ŸÄ½=¬«Î=°¹„=°ƒÞ=ŒQŸ=—=É=˜™‡=•Ý=Aº=ªù7=•¡Ë=’‡…=±%¬=¶'=ºèë=ÄKÙ=¬FP=¢ÅX=žÅv=©=­A=±ç=‡ C=“E™=·`”=²1ÿ=¿Lÿ=ÑMÛ=´.z=Àþ=Оé=¸ƒ4=²@=¬£ñ=¿Ó_=µc=°2Ž=Áœˆ=½%=¹e=®â=åc=¥†Ø=âEÇ=·”ˆ=«ù_=°‹´=Ä—¤=ËÒj=Ðö=Ј¨=¾k]=£¶Š=¤@ß=žÞ,=—=ш9=·JÞ=üX=’CK=¥ƒ1=³Bä=­Äb=º›=Àhó=ºèÏ=­5j=²N =ÏÅo=°6‹=¬g,=µ¶m=Á—£=Éz›=ÔÌô=Æ÷=ÁÈV=¾–Ý=¸{=·³Á=¶ž°=ª‰”=ºìU=Á¹¨=·– =Î13=Ï÷T=¸9q=Í ›=ÈAõ=±ß—=Æø²=¹¦ã=ˆ²=©š¸=£öi=ž•ì=Øþ0=Î4=Á5ì=˜‹/=Å*~=ÚÞ=Í =ÃøÐ=·£Í=¤Èk=¯wþ=°Ï=«Çü=²7Z=²|Ž=³LB=“²â=¨[=ºp¿=Á‹=¹FÑ=¯0Ì=“õ =”TÃ=¢žò=ÉÔ=ö =Ï=䯛=ÆÒ=«^]=ŽÈ=¼E(=À\£=ÅX­=Þ`Í=É€ =¾0ï=Ä|W=»7Y=²» =¥è=žÃM= Ûœ=¤ÿ–=¸k`=¿Ïf=Äû‹=¹Ž¹=¶à*=±²Š=§$î=ÄæÞ=š=šné=?À=ž/m=¼¥Ê=Ș†=ͨ=ÑÈ=ÃK2=¶m=¬˜å=šg=­›==µX=°;†=Àͪ=À-ý=¸¥=¤h#=žL=›È±=µ–¤=¹¦]=¹­Q=®R=̨ï=ÕEE=Êï1=¾m\=¼wÎ=¼þ=»„C=Â.=Æ#Œ=ºa =­+ˆ=¢“Ð=‘Ýc=±X=¶ŒF=­wù=­Á^=³þ7=»K2=´üì=´œê=¸~Z=É­N=»*­=¼šŽ=Ñð”=Òé¦= '=©¼==°ÙÈ=±à½=´²ƒ=ÏÝ=®ØŸ=Ÿ¾‰=¥·=·_­=¯‘”=™*×=§N7=¨0Ù=¨ a=©7w=›­=˜f=©=“+=–ôÅ=©¹í=Ð…Ÿ=Å‘[=¶5=›<ð=±¢X=¿Kº=¿ÞÕ=¤u*=¦ =¹,¾=¥ç=µN£=Å'@=Žw³=—CÌ=Ÿ¿'=¤˜ß=@Ò=Š‰ÿ=iê=[k\=eÑ=|£E=­Ï?=³e=®®Ç=—ÄÈ=Ôý=¤þa=®4Ë=´Öã=¡¾ò=•òz=·¹=­±á=§v -=¢ä=Îu=Ÿ&=©N=Œ¹=¡Ü¾=¬%Í=”g=¶F;=¼@D=±õ•=·-ô=­’=Ÿ˜s=Š²|=•ñ=˜„a=“‚=›j=°‹Æ=Ç -b=Š‡l=ž÷©=±EÁ=ÂÅÄ=¾mö=½f=½r=›#X=šŠŒ=ž0C=™wð=²À¹=º·³=¯™=“F•=”=žY¨=Řx=¾†.=±“=‡Ö¶=¶ö´=ÊSâ=Ù )=ëq=¼¤ž=›æ=¾®î=E=ŠÍê= = *°=›­]=œê¬=ȯ=±µ= á=ö×=¿ -K=¹®ó=®Õu=Æ\=ÆÐ=Ãå=Â;n=¦ç*=²ƒã=ÆÕ‰=ÁÏg=¼à¸=µKb=¡ñ#=•·ƒ=–Ë=™ù·=t—u=¥ò=‡ÏF=ˆ}Ó=¤…=¹¬©=Ñ„=¤’=¶q=™H=Çñc=Éb!=Ç@»=Áö=£44=š[ú=šÇ=¸C=¸ü=¬S=š½r=ªs=¦æ’=¢"Ø=›(=²ýR=½ïJ=ÃÖé=ÇTõ=¾“=Á»á=Ø=×;N=»kô=—=Ös=¹³ =¥ƒœ=š;Œ=³a’=¸¢>=¸²=³$Ò=¤ìò=¢Âü=­®Ð=œg—=Ÿ& = õE=c&ˆ=šì‹=ª ¯=¦ª=Ó!º=̃=Äú±=à=©!Ç=§Ô˜=Ääá=™‡…=¥ K=®•U=¨è=®ÆË=±G=²RF=¢›•=±€¾=»Ô=»žÂ=š)‹=™Þ˜=œ¥á=¸©Ù=­E=­â»=¼ó9=µ–º=¨àN=©µ‚=Õ¢Ì=¤my=¿ð=üÐ=¾¥Z=­‘§=¦ =§l=¤3a=ÁMñ=Þ¾ = -½=³Ó=²BX=¹„±=ÌðÚ=°l4=¦¸ì=Á&=¥f=œ|å=šH0=¯Éá=»iÉ=À›h=Á‘=w=žÔr=­‘Ò=ÇÛ=¦MU=®¿=ÁØL=µ«=Ä"B=¿Œ=¦çà=ÃlÍ=´ø¥=©b#=¯ÚV=š2a=”'Ù=”Ã=³5=³P7=°/2=¥fŒ=°œã=·¾Þ=¹3m=œ„y=—…ÿ=ž¾Ð=¦óM=¼jy= ”~=£¿Ý=ÅÍ‘=¹Æñ=ªâß=˜®=t±í=³a =°€#=ª’¨=¹êð=¸ö±=Á^’=Ìçì=´Ù=Æ`L=ȸÎ=»Ã=ѱÐ=Ö‡‚=Ó¤ô=Æé=ÎB:=½û=²ñ=Ê¥=½~q=³=¬ã=$Ì=²s•=¸?q=¦ùe=³•=³½=µÄÏ=²X =Ð\Ø=Ä=¬÷"=¤§p=¶mƒ=ÚO%=è\P=¦Ø =–ñÇ=£$=Ö€'=ÐÔÓ=ÒËö=ÊT`=¡½&=ݪ=Òò=¸Øt=§È|=¦Üp=©S¹=ª ö=§÷=•¯¦=–ÈÁ=¤HK=­­=¬s=®%=²Ø)>À=ñf =Ù°C=¸;%=ŽÝ=– í=—ãí=zs=’f=bÇ=0=¡È=²öà=½Yy=µwY=¥³j=–t˜=—ì=¡Üþ=¨#Ï=Šû¥=Š”±=š°=q!=ŽXÎ=´…n=Çó—=Ôµ=ÔÏ·=Çø0=˜ël=¥ƒ=°<{=©æ'=“T =Å—~=Úi©=êE=úÒ =¾É¢=ÒŒ=Ýà=—ñŽ=Ÿ§«=·ª =ÊÍ<=™2§=š£n=ÁÊž=ÚŠ¿=¿lW=¬Kn=¥}c=·eJ=Àœ=Ôîµ=Çmä=±˜=¾s4=Úò= )å=ÄÔ¦=´·=ÌS5=Ã|ø=Á¡=ÅIs>Ä)>5cY>2Q>Â=Ø=ÀV%=³}z> ¾€>»ì>'ê6>2Ýa>®>V=ýëM=Ò‘¹=çiÀ=ÛÔ6=á„5=óÊT=ËRd=¹Á‰=µ¡D=î=ª2W=µê=¨vŸ=œÍÊ=Ê”Ú=âHÂ=î׳=ÞSD=ÊÔ–=Íyý=ÉA=Éšö=ÑŸ=Ȧ¼=ËÜ9=Ñ_Ô=æb=àä´=Þþâ=ßÀÿ=°=´~c=­§=°Ü~=Ù5ï=Õuc=Ö·ô=ÉŒ=¦„ü=¢œ*=±°Þ=¾eo=  =§hŸ=Ï`B=ìR!=Ôo¤=±ä=£Ôö=«;>=·ÔG=¢V@=>Ô=®=Ý* =¶ø=Íî=á¿=êBØ=ø0&=ûRÄ=ôý=ðÈm=Ñ -·=ÅŸ!=À| =·Æñ=À*1=Æ?g=ʯ$=Ñû‚=­€¸=¼BÕ=²‘B=¢5”=«Äü=§Ž=ªÐù=©ê®=²@=¼9k=¾÷÷=™î¨=€üò=ÃM-=¿Û+=°0[=¯2§=ÜEu=¼Âg=¯==¶uõ=Õ`=Õ\i=ÆqS=¸j³=¢ƒi= 5«=†C»=…Å¡=Àbî=É›¶=Ö[ß=î6=þ¢>=üh=Ò-¢=¹*f=Ÿc}=Ç63=½ì=‘ô=µ9m=ÆÖÊ=¹¶û=¦ÿÝ=–‰„=žš¯=¯þ=­ôò=›»H=†ýÂ=©Aw=¶çµ=´ -Å=^Z=©{/=¤Œß=¡óˆ=r_=ŸÓ= Ô¥=rÉZ=_•Ï=ž=š—=˜(ƒ=¾Rb=ÎCl=ªîd=™6œ=Œ*à=”·Ü=ŇR=§‘«=…1/=Uhx=’Žù=¬¤a=®Hò=«¨˜> °Ú>7É>T¹>VŸÃ>P‹œ>¥=Ò” =Ã××=®%Z=Ìöœ=Á°=¦5_=¢7ƒ=Ÿ7n=¿)=À{=Ç/ê=ø©{>7G >Af>CÊ>Nºf>1`½=ù­«=Íöæ=¾Má=ݨ—=õL€=³µc=¿VÍ=Ì4Ú=¥Ÿˆ=›õ[=– ï=‘p.=ˆ4d=“lÇ=°Ÿ^=¬D[=ª‡Ñ=ÊÕv=¯S?=¯õ=¯öÍ=³_L=œ˜ˆ=Œ&=À¯=Æš=³¬=¶H‘=­©H=ÒÒ=dÁn=­»=šÛ=Žz=œ8È=´ÇŽ=’—Ê=¨¯=“¶F=Œ.M=šej=™y=ŸH¹=¨Í=¿)8=¬P =™x=›4€=§Mœ=¨pm=§%¼=»¯­=¾DR=¨’%=¦€=Àyä=´;=¹Ù=Ñ Â=ÅƼ=–X=‹á‰=ˆ™Q=˜·=ˆyù=§ÊP=³¾K=¹Ëƒ=´ñ=Ç*i=Í…Ú=×0Ï=Ë›à=½ˆ=£b=¡_2=•‘*=—ÿ“=œöù=¸J$=®cò=Ž¯—=˜($=¼@g=ŸK=›d?=·… =­iÙ=Ån=¿Žˆ=Ï´=Ÿèk=˜¹s=ž‡S=¬l'=¿Çœ=ŽN=–‘t=É™Ô=Â6=¸Ä>=¶‚^=ÎHT=½£ƒ=´&±=”Ô–=·Lý=²ùÍ=´Þÿ=²tõ=¡u–=‡ç=˜ŒY=9Ê=‹«„=ÁŒô=²CV=Åh =›då=T?=™…k=š =„­N=~ =~‘L=OÙ== ´¥=°X=²ÜA=£}=¹¯´=›”:=}\=œÒï=·`==búã=Y…u=¤æ?=ª3=ø‹‚>Dgì>.g?! ?&­»?9 -f?"GA>ûE>P>#Ø×>Bù2>ƒKÛ>­²>²ñæ>©ú?>k÷/>Ús=”„c=œ{=ž3=®ìÎ=¨wt=·V·=¶7=žM,=Ä(=§F²=ŸËÊ=©>=³Û=µ~]=¹/.=¯n=«xÌ=£ñ´=«U¢=©™=¸I=½â=ª”=¨‡P=Ì<Ê>Ϲ>B‡{>WÔ>LÕ>–Ñ>=Ö6O=Ÿìð=¯zŒ=¨<Š=¯¹=ŒÔ½=›ÿú=©&§=Ãa=¹ø=½Iæ=¦×T=¡Ro=Ä›a=™‘=¿ýö=ή…=ÄR=Èš¨=Äí>›:>lå>«_ ?ûÕ?KFH?¢ö?­Sã?°ñ¶?•?`#o>–™>HÃ=éé=ä •=¿¦=Í%ƒ=§Ì=`F==š^é=®ö=˜ ”=£^7=š“={Ê«=[M‡=˜z=§èñ=¡/\=—H^=†O_=¦dû=Æd>ïu>4Ï4>R”Y>A_>3™Á=ïVÄ=ý×R> Kâ=å\=Ú¢·=æ^=ëÇû=äÊ4=Ñ·Þ=Ôúi=žzè=¶:%=×Z =ÇÄ9=¿RŒ=¶jZ=¯š©=ÓÀB=±õ=†éú=Šï=°ÀW=·©=š±â=‰NH=¢Ê,= ‰:=©¶4=šñÍ=£ñ=¯‹Ã=­ZM=†"‰=–„1=¡;=Œ=š=´” =È°u=¸ÄJ=Í¿¨=Ãëü=Òÿ=É=‘Ä=Ÿt#=¦¹‘=¸¢E=¹»=©rÇ=£â÷=¥7S=³Ç=¤€=‰î=u‡ñ=‡†‹=yß·=‡š=¡µá=ŸYò=“l =i×q=‡Íd=ža= ÅO=¡„=w'‡=ƒ¸=œlâ=° ô=È™Ó=ÀóÎ=¶k—=¶´|=¿ì>=ÆG=¿‡â=´Ü=Á·Ã=­”:= Ã=Œûž=™Q=±4¥=Å=âÖ<>r™?>¤]5?Ã? -j?ê>˲·>’"-=öÑ=Ù—Ï=¾Kß=Å?~=Ò#n=цs=ÙN0=ç¡K=¶ZÖ=ª·Â=²=±¥¥=²è=ªp·=³ÝK>IØ>‹¹”>âù™?’q:?®+?Í'6?²®ˆ?”…,>û Q>–YX=ʆè=ÁR¢=·…K=˜á4=•tY=®3—=Ń=ÝÈç=-=‡ñû=µÐi=ž#2=‡J =­Þ<=±‰@=¢R=œÂ‘=˜¢“=¸@ø=¹;±=ª!‹=¸ÚD=Ä•j=”™=‘ÁC=ŸXz=½ÒI=Õ:£=Š…Z=‡¹=”p’=¤›=¯ -=¶üó=®8w=“Yâ=qü=ŠêH=Ç;—=À:Ù=­Õø=Êï¸=Úã=âè­=܃î=ÐDÝ=¸/ö=±‘Õ>Šû>ŸÎ>u=ìaw=ß],=¿­¸=Ã~ä=Èw§=Θg=Í2=´é=´¢C=´‚=³V7=³1’=³là=ÀÑ=Î$±= Ap=¥ï¥=Ö Æ=ÂE&=³á=ºŒ=§=ÕÙï=¿ÔŸ=²~Ö=²H=¼…û=Ô<¼=¼™ô=³2å=ä\Ÿ=Ý¿ü=Óh=Ò¼=ׄ=ü„Ë=øQd=ó‘¢=Þ=Ô}u=¾ØÆ=Ó‡]=ç»L=Äò=ºf=¬v=ÜN4=ÿÔ:=ÏÚ÷=߸í>ßÜ> -3x> Ö„>ýÄ>3­>(Y>tÚ…>‰ì>‰žh>‰p>‰mÎ>‡±>‰B>•.¢>“ 9>Õî>˜W>©¿Î>àíÆ>Ïžè>é‰>àG>ß„4>Û­ú>åà9>ëÌ>õ]õ>å} >ÍO>ÇT8>»»>k‹b>s4ç>{\º>_l¶>]õ>mŠF>fÁ>`³G>`aÒ>Z(>>L7Ð>ú÷>Ô)=ÐTú=à!X=÷‡=ÌúÖ=Á3=ÈJ=Ïù -=ת =µ8å=¤â•=€¢½=“^=Ÿ‚î=¾k=ºù=®Ô=Ć2=Ì´=´½;=µ¡=µn=¨Pû=ªõ?=ð4=Ã7X=ÃVU=‘ -[=—ê=²=Hé=“µf=±H¡=´]¢=¸Ze=Ê -û=É;4=©5ö=´ò=¿Ç!=«'æ=­+=·ÙŠ=®V=ª°=Õ‹ê>•>3•>Úµa?SÕ?!þØ?Ç?!>wýu>1»P=Ÿ/©=­:ø=¶qg=è´<=Ç›^=–P¡=¹@,=»ú»=–S=¡Á"=«-œ=¿´‰=´Uz=•)=²Ä/=À“=£»=ª~=²I1=·Z÷=µö=ª:=² =¸…Ì=‡bÖ=‘ð=©uö=© Û=©õE=°*ù=°=°³=©¢z=¨ÐÎ=¨‘æ=£À¾= 5=Å%Ó=¶}v= J1=¼æ=¾¡Ç=§7ž=ŸX=—õ|=¥Yü=¨=¬Î°=„U=y½E=Ðoû=Ælï=»?ˆ=Î6­=Ö¶á=桱=ÁD1=¬ÇC=˜ž=‹Õ&=w2Ü=ªîŠ=²« =§Ø¡=—²=‹Û= aÃ=£Ú…=¨mF=®|Ú=³Ãú=ƯN=·!=©Ï=©YO=¡Þ=“0ç=Õ =§Ñ=·;:= ÷=Ì_Ô=¸_=­‰<=˜~F=¶ÙK=é¹=°†ì=¦g¨=›7Z=ß=Ü„F=¶ùÓ=Åh=Ê@ï=Ÿ÷›=¯g|=ÂÑ=£Em=›•=– ²=•Dn=–mÁ=°—~=¿/\=ÓT=Ò¸z=ÖàŒ=ç=¶Ô^=™E³=®¥“=œ­Ó=„7ñ=‰® =–,0=Á™=¸2ÿ=²Ì÷=—KÅ=œó.=¥Õ=»„=·å$=ž€m=³©¼=À&E=À¢C=ºwÞ=±ÌC=ÉÀ=ÆÞ=²„z=®LB=ªµà=¤W¸=¡lƒ=m4=ÀØ=´†Ù=ãµ=qÕ =k§.=%Š=’+¿=•ü0=¡}©=¥r =©[¬=+F=ˆ¼Ä=ÒÝ=¯øË=ŽÁ =¡= ¯,=›–)=›ä‡=œûÙ=£•=£4É=¢ìå=½‹=¶ƒÑ=©¿ñ=¯4Q=°t[=°€k=ÈÄŸ=ØH¹=•‹ö= æR=¯Å/=žäƒ=¢,"=¶\=­ž¥=ªÑF=¼…Ê=²Ó0=¨¬k=³ê×=·ÎM=»J²=ÅD_=ÂC9=›*=°ï6=ÂÁï=¼@,=¶™å=®ud=´ü=¸ÿ§=É€ã=ÍÔJ=ÏMÅ=Ï–¬=·, =™é=š=©Éù=ÏÀÏ=©Þ£=›¤=§eQ=ªÑ‘=­0ã=¦¢²=±µI=Á‡Ä= çc=£ôG=Çß=¤V;=ªR=®´‰=¸“ž=§c=¡O=¬KN=¬d¼=¬:i=²cq=À^=ÔÎ=œPZ=šúß=±¢b=­¢=®iA=¿Èä=­Q=Ÿ<0=˜–:=’¶Æ=‹½=®u=»“=ÎMN=¶x,=¯QÔ=ºâ=ªðm=ŸuJ=’–q=˜õX=Ÿˆn=°9û=© a=˜+ª=˜r=Ÿµ=¸õ=´p×=´Š)=¾Bð=³ÆÓ=ªQ%=„¥—=˜‹Y=·Ô =·o[=¹pW=¾K„=½­s=¯ÓX=8èN=•!=½‚=¢èú=ŸŒd=œ£=¨s=¨×|=¨l=­ >=ª‰*=›*¶=º=Š×Ž= Ä0=¨ ,=­ô·=§g=ªA¹=®Û=É”[=¼§n=š¨#=¤}§=«Õ&=º É=±sÌ=®Ò=­yL=¢ˆÅ=šœ%=´ =°‹Û=­ã=¸èû=²ã= îd=¡¬=›öá==³†ô=Åq‰=¸Ýü=¼Y=¾ç€=¬Lî=¬‹÷=¬‚Ï=¬!8=­SÇ=­ªz=˜ñl=‘þx=ˆŽù=›:= X=• {=¤ä4=°{C=Âi=·ï»=®ÕÄ=•·â=ž$v=¨V=Äêç=¿=®9C=¼—:=¶|=™ÄŒ=¦Í½=¬ÂJ=²ÅÍ=Ÿj¥=’][=ŒfK=™JŒ=¥½æ=«–†=´O«=¿_h=¹ÿ=µüà=²?å=­e=¤i>=’‹µ=›ÂÄ=™Ïó=…ßš=’=™×=¥}Ž=¢+~=žXk=¸@g=¢òª=‹ÿO=£s:=¢Þ@=žŸè=ž*Ê=œ3Ð=—ñÖ=¹yy=· Ù=‘A³=šm=ž,ß=¢µÛ=žL£=žˆŽ=´Ú =´[=´ =¢§î=¢m}=¢8™=® ¶=©^á=¢h%=”d=ÉTI=Í€[=Ã[=¹Än=¨ý=°ÎÆ=°rÑ=¡™’=ÂÎÔ=ÓÇ:=Ù#%=·ÆC=Ÿšê=‰=’±H=›£Ã=¡Ðó=§Û=­õ=¢[¶=§ï[=®¼Ã=¿^:=Ä%=ɱç=ºˆs=³Â=¬­=­Îê=®­x=µ¨=¶zú=¼ =ÓŠ=Ðr6=ÈÃP=£l=¤ì=¨‰‚= =Õ!Ä=åêÙ=ú3ë=è’¡=×+a=³+î=¢ÌÈ==©g«=¯9=´ÿv=aá=“X={>¹=†Öô=˜ÑZ=»Óž=¥z=—È=ƒ§²=‡B¿=ŠÀ<=’Ð =Ÿ6Ñ=Mí=„}ž=„©ý=ˆH=¢†)=ž€S=ºd=¨º=· -,=ÁÌ|=Í.\=§ÚÒ=Š66=•¼"=™C=œ:·=£ ²=“…<=‚ûŸ=Yt=šI=§ŒA=­ †=¸QŒ=ÆÈ=Ÿá>=¥Z>=´”‚=™ ·=©XN=ÍZC=©}=ªþT=ºÒ§=—j'=‘ç¹=•ù×=®ƒˆ=®uÛ=œY•=ª|`=«s#=£¦=™ˆ&=œBE=®Ò?=³Mê=­Kñ=‹=Cf=¡Ž=œº)=©–\=©–%=Ð&=ž^=‘µì=œ€~=”°f=”xÐ=©)£=´Ÿn=ÏHL>%9È>€>ƒ>Ÿ…“>½u*>Þ¸ä>ë¨K>­ÅÝ>—¢Œ>‚f¾> âR=Öô‡=©1/=žYÀ=¬öh=´<@=—T=©šE=¶AE=Ã,J=´è]=©Ð_=¤+;=§n==ª~Á=½%F=¬hh= ¯e=·z=»Ø=º,€=’àú=¨&Í=ºÇ¶=Ñ1><0‹>¥i?¯$ƒ@'1h@f~}@ˆÌ @k]$@CÛ?}¡>ÿè„> ô}=¿á—=¸I=´ÒŸ=Æ`)=·=«wÍ=¦aË=¦z=¦6p=¦…=ÞÀF>Ì>!x>s¤> È~>3Æ=ØÆ=µ”=¥¶Æ=¢ -=›[f=‡-ˆ=°EÍ=Áho=¬… =›N=“´8=“U²= Cè=¦“=¦K=Á±0=äD>ú×>ò›>Æ‘=÷üU=ߊ±=ËÌô=­=Ë=¨{Ô=«¼=º(=«øñ=Ð=ˆôè=˜¶=¡#{=©¢þ=´…§=³öé=°.=ª~=ª^Ë=ª$=ž±ï=¯»â=Å,¢=¹x¿=°]¦=¦k©=³9=³Æ=³‘`=­Ö=£~=›¡=º"s=®Í«=¨òN=³â=ªž[=¢ò =’M=«Y#=µT¤=¤o6=µã`=½¡Î=·û=³u÷=ªTË=˜}€=¬T¨=®4F=¬e·=Áj=Ålú=ÆIj=©ý=¤[`=¥."=«yŒ=«Æg=«ìÒ=’d=š¢%=¤eò=²pÎ=¯P=ªþ=·ò]=ǧ=Þ›¡>8>íý>Î{> xO>.> o> |à=úV=à7&=³?¾=“Ǻ=”Gt=¦»= »w=§r =²×÷=¬åC=©÷Ñ=¥Ò.=²2{=¼¶À=ÈC=Ù;=Í^b=¾%Ó=?6=aÓ=«¬÷=¦BŠ=ªêR=¯….=³Æ#=³Aä=¯Ö=¦-=¼ûŠ=®]{=“Tî=Ÿê=¦¶¾=®au=LJa=¹¶o=¯=»ÿs=¯Ý=®øi=á-%=Ø7i=Ư?=“Žm=˜Ì.=“ ö=€o=»~Ê=ÏÖö=Ú¥M=¼øü=´¹«=¬ô×=æ;=ÚPŠ=ËÍ*=ºgÎ> vS>`S'?ó¸?6Ã?Sè"?mÈ×?u?sf?G#?%>>ïòÆ>zi=Ë W=¶q=¯†¹=©ZI=¢Ù=,\=¢•C=ì­=›=•9=¨î(=¶Mi=Ã#$=±Ã =´ý1=½:¬=°ß=²§=¸î=ÐÅ"=¼ª¹=²j¨=½µF=§/‰=¡†$=±\œ=œLœ=–«.=—9ó=À8®=³žá=¶=Å£=ºô†=³O(=¾×Ù=úý=ÃQ=¸T=ÌÃÈ=¾·=‘ƒ¸=³ÌÅ=ÁT =Îz=ÃYø=É×9=ÏgL=Äà$=¯eÎ= /=è6=¥S=­ÒC=­Ót=¯O€=´BV=¸ØÆ=¥áe=¢æ=¡3Z=§Oí=ž Ê=•|ø=ƒƒA=®Ì¶=º =µ*à=¯Ò=®ä÷=¯“ð=¢2Â=¦Å¿=¥M=‹/+=»¢¸=ÖæG=à ]=ä¸:=Õ]=¹b‚=·øû=³ËH=¯ê=»öx=»˜w=ºQ@=ºƒ@=»dá=ºJƒ=¹ =³Vþ=¢‘:=¼ƒ=ž4"=­º³=¸ÝÅ=²u_=Æaá=Êð=Æ*W=»3 =±öz=ªq=Ëxô=¾4Y=³…=¹z=¯{†=­¶³=³£=§Z›=u8=‘o=«e×=®3“=¯’=Èžk=¶j=§ÑÄ=™¦=ÂC4=Äœ¥=»÷Ž=µù =¼{C=¾¼÷=š,=žq½=¤ªt=¯a=©‡í=Ÿêÿ=“þe=½Oz=É€9=Ï|=°ø=¶=¦³g=rʵ=¼Ô2=ºÎ3=¬b=¤þ =±¿ý=·×É=¬ÄŸ=­É°=žë^=‚"¼=›Ý"=œµx=›Cn=½LO=ªÀj=¢M¦=§¹ˆ=¨ƒ+=žíE=‘î=™e=²íÀ=ÃC=¸aA=Ò=Þa{=ãÿa=äÚ=Ïű=ºƒ}=í?=Ð ~=Äû˜=Öø=¹¢ñ=¯Ñ'=¥©S=—2µ=¡‹Ç=­NÀ=³Þg=¹k=³U»=¥ã=­Ýo=²Rx=¸0=½!-=ÅíÙ=ÅV±=¶¹¥=¢›£=›ä|=™w=Ÿx=•ÊÈ=”Ô= á =ÄÊ=¾Ä_=§hW=§}=«Äú=®ý=°×d= 1=™å =”WM=µN±=°±=©º=°•= Ýè=›õ=šzi=š¸š=²œ¥=Åúå=ËA=¤ks=«§®=œfû=¹A¢=¾‹è=¹¡=¤W1=˜U‹='=†Â‡=½U¤=»T©=®Î•=§CŽ=œAÃ=a=°=¾ìà=»Àâ=²A¥=¦9,= LH=§è™=ÓB=ÛI†>j¢>@ßÀ>¸¯>‘Ã>ÕÛ>rÚe> ì/=Û~=½8> "o>\”À>±J>‹œ±>t„Q>4½=ð/Ò=àî6=·=Ÿ&»=Ž¦m=«ˆý=¨TG=˜$æ=Â; =»Ä;=½E=Ϙr=¯[y=©)"=¤ý=‚©e=ª;Ì=µj=£ËÍ=š²=–eH=–_=¯`ê=¹p =¶â=¤÷=ÌÓ =ÐÑÚ=Äa=¤¤=³?$=É€Œ=ÔåW=ƽO=ŽbŽ=ŒÕê=¥Óÿ=¼f”=›‰8=˜'Æ=Àm|=Á_Ù=Å–D=¿ ]=›i›=šÙM=ŸËÑ=­§º=Äú£=®Ì =¨s²=®Éh=ĶÐ=­Ø=—Ä =h#S=š‰=šºÍ=†NÕ=ª¥þ=Ž=™g=ÄX•=¢s²=¥ðŒ=¨¤Û=²+Ç=•¿j=”<=Ò=¯q=ªÚ?=®(=²—,=›­‹=‹üú=9Î=¬j_=º1,=ªb+=¡l¨=« R=q%=›G=«ò¥=ÀÜQ=¹ À=¤C =›{_=µ™=§Â‹=œò™=‘†ž=ÄÐ=²ü=¤/Ð=Œ1z=“jµ=¡ôo=¨«û=›H=ˆ" =œîB=»ÆŠ=¤›«=–$Þ£>1?á~?I´‰?uœL?zü[?[È2?Ž>¡Ä¨>7ðè=Òã´=Ò±Ü=ÞsM=Ùÿ=çk‰=²R…=©Ìv=¦f#=¥W=˜9=Ž¡˜=!v=Ȩ\=±”!=¸v=É9„=°Çu=ºÿw=É¿#=ØÍ&=â',=É%¼=ÙÝ=زe=Á=º£›=¯vÍ=§F6=˜Ã =–çH=:„=“Ÿ¬=É€C=¬‚¹=® c=»t=Èmg=» 1=—Ͳ=•¶=À+b=Р±=ž¬x=£o“=Èܧ=¿ÿ¶=³>„=³,=±¼`=¹û -=ȬÐ=½i=Úƒ=¶²á=° _=®¿‡=š’Ã=ĈÆ=ÐÛÉ=·¶¢=œ±8=©^_=­Ç²=ºSÕ=¼ÆÄ=Èö©=¹“­=دó=Ñ|ì=µ{È=ñ…=Ǽë=—¨Ö=¬µ»=½¯f=ͧ¿=Ò Á=¾Šå=¯lw=“µp=¢D¿=ÊdÀ=ä›> k*>Q†=ðL5=Õ•ÿ=Ø=¡R£=”c)=„À{=¹±=º™X=ÈÓK=Á=¤…'=ÁúÀ=؉2=ܲ¿=õßo>`°>==ܱˆ=œˆ=º Ý=Â8¾=ÈÚÿ=ØŦ=¸‹;=›×G=—Ò…=›ê=—Ú;=¨âÍ=¢`=’=ª6Ñ=ªLã=¶v<=»7º=±:ª=ÀØÑ=ª)Ä=¨cË=ÆŽˆ=¥‡í=º -ä=Ä0ê=¤p=š¬=¯sf=ºÏg=Ã^Ã=Ðæ=ÒY‚=¶ -==¨ú=¨W'=o´=Š`=‡x=RŽ=d=—3Â=˜åð=“ܪ=‘ P=YÓì=ƒöÊ=¦ªÙ=ÉŠt=§)§=° <=­Rí=ŸBR=¬1¢=£$þ=”¾O=w@K= Hä=§/ð=™ä*=Ž8ä=g0=­Nº=¡Ü÷=“MÆ=r÷/=ˆÛ)=€MC=™QÅ=¯p«=§™X=hL$=—Ó=³“=ÃÛ6=³~…=“òs=ÎlÀ=Ø=ÞÊc=rÈ=kß=„Ï|=qyE=|â =Òv=¡Mõ=¨gD=Ýt=ÈÔ7=ÍÔ=Äë=Tª=…@e=ÿ·=žöÐ=¨žð=¦{ =³õõ=º0Å=¯O½=þ =xÛ€=¯ý =®¹Ò=‹²‡=™gI= -P=Ç=ÇR=¦Á=„gÁ==ƒA¸=L›‡=â¡=z¥ =™™Ž=¥£>=­lŸ=·’±=žsÞ=”–¡=”Í=¦ìé=µì=’Î=¤[B=¼wá=Ú¬)=ÎhÕ=¥qV=¬¬=£oW=’A’=³sç=ºX—=³ÕM=°6Z=¸Fû=§ì¾=£Ûñ=˜Zy=e=ü|=·ì=¯Ki=“]D=s{ù=‚ ý=§²>=®0™=¨}Z=Œ$Y=Œî= 7Æ=¦°Ò=’óN=¡Zp= c=”%:=Š†Â=_Œo=€ä­=“Û=’žu=­4¸=¶>E=¥tý=ü†=™¹Ö=˜-Î=«ÐC=’Xj=”[=¡6q=£¨º=ª;Û=¯6à=¢×n=—Õa=²¡›=³F¾=³‘=¡=Ìë=j=‰¬Q=¿õ¹=Ã݆=¾*§=é ->5¸@>ôvè?ND–?ò÷>@Ôã@R°@G~\@1?Í© ?za0>å> =­íÞ=­–¾=¾3=º—U=³-=¦’Ï=¦Ïê=¼Ÿ`=Á Ù=¼“+=˜=•ˆ¯=‘äx=–-E=¢¤p=¢=²,=¿A=ÆC=ºð7=— _=–$}=£>œ=‡˜=ƒ†%=}1)=de?=›ÌÛ=€Ê/=œ>ò=·Â(=ÇW]=©­W=¦Vä=•#ù=’Ö«=„Öé=hÔà=z²5= ¢e=ŸíÃ=Ÿä=ÁX=¸~=³ŽØ=¹ ’= $i=‘3(=Œ/¬=«èÜ=­È=‘fø=œ|Y=¢¾H=¤?=¤„Y=¼9®=¾’T=‡]L=¯¬ =³à=­—|=³ÏŒ=”µ=ˆ# =¤÷ø=¥ÿ‡=¢îH=¢+=’=„ú=‘ºW=–Ó=¢vÊ=–ƒ@=¤ýÕ=žkü=–úæ=·”Ç=º‹|=´Û3=°z—=£âq=‰92=f—¨=…_R=†â˜=°2=µÈï=µLÊ=Ëww=Ç D=±W=ºµá=Ãb"=ÜÑ=ŒÅ=¤+/=ª½=¥Jl=²KN=¨ú€=»=²\›=’½B=‡xH=‰e£=¢•"=¢=¬È?=¬½÷=© Æ=½*p=­G=™&«=¨ìÈ=æÁÓ=½û&=•¢Œ=¬‘ =±íï=—~Ú=£•…=¢yM=µÉ=Ãí=±cÝ=”TÕ=ˆÐ=¸á=Ç}â=žr=“†Ž=‰Äª=“²=¬5b=›yY=“G=œN×= ø=°Q=œ]=–Ͳ=É =­¹m=H®={Qâ=‘¾²=w¬=v) =”¤= I =Ž-´=ŽôZ=™_=¬¼Õ=²t[=¸bö=Ø=Ã\ÿ=ÎKl=·–G=¢÷=°ŽÆ=­áƒ=Ÿ5—=¢Ÿe=—Xf=¶úÆ=­²™=¤'J=¢œS=¤º=›ŸL=…pœ=›‹o= ²l= œú=¥dÏ=ªRf=šúA=™)ì=¨ÃG=¤•(=Ÿ21=¬TÀ=±} -=¹ªú=²ü´=¦Ãð=¦Oø=¦xK=ËÃ=Љa=ÝÈ]=Ò[>=Ê¡Ÿ=Óæ=ÚÔ=îM>¼Ì> °,> ¼>Øø=ÀÀÇ=·=­Ì=Ô -Æ=ÑÔó=£üß=¾›p=Ü -=ñPW=ö¡r=ôÕ=ûÊ;>§;=ëþ=ßLÛ=ÅŽ}=É"?=ÎR=Çš=ÂÇk=²ŸM=«¾= V=™±Ç=—\Õ=Ì;Ç=Ì^[=˱=Å£=Áî =ÁÛy=Ê/=Ûâe=÷£ð>ð¯=ÿ{¶=òÀ=Ó@=Òž6=Ñ“¾=°oè=°À1=¶9=»:æ=¾äÇ=†™O=“Ï©=ÏéF=Ê»=ÆKÑ=®T¾=£Ëý=ˆ¦=›®=ªÄi=Á²@=Çý¬=Õ_ï=´åç=˜÷ƒ=¶#=¾K5=Ëð =ÇËû=Ãfg=¼==´ Õ=—­=¿ÓÆ=åA=ÝA -=Ðå2= s±=­t‰=¹ºö=²‘=®qò=¨I™=°ß5=¸½J=±¢S=ªù´=—.²=–ý~=–¡x=ÈGÄ=Æèý=žq -=½?œ=Øßà=žØf=¡ÝÁ=×Å|=×2j=ÖëÏ=ÈÖI=ÃÌ)=µ‚ =Â÷_=αî>!ï>yîÝ?°?n‚? wL?°di?£7n?dSÃ?íg>v¢> -¬>¨Ä>z\>F>$(>i;>Þ>*>ê>aó>šj'>•Ó&>•{Œ>•>˜¤u>šÓ>£ÖÎ>¦Û>­<>³Ja>·vr?c?F|>Ús2?~@?³?"?I»???&C?|7?ñY?ük>ò!>¬lõ>—¶Â>•¢`>•‹>•Ov>•”>‘êª>€8>†g>‹Ú>w¾k>a&0>•>Ž¦=ìצ=É®ß=ÉD=Ô…Ñ=ç ¯=óH³=úFe>.>+k=îS8=Ó¿’=–…Å=›Ø =¥œ˜=š·”=”Ï=_"=q†N=†=’NË=”Ü%=ü=”Æ=œm¥=•ÉS=={Üø=‚V=…v¿=dz=¿á=ŒÂs=•>=›B·=¡ßk=Ÿ{Í=š %=­Z=¶™C=¨tq=Áº =êÁó=ÄJê=¶Sÿ=µ½^=»þK=Ä-Š=Ä e=ÁbW=´áã=­4=¦h=’¨H=™"‡=´Óœ=½äº=ïµ=µÚ=²qº=­ç€=£Gû=že_=—™=¸UÚ=çì‘=¿Y…=¶ç³=ʯ=Ô¸—=Þ¼Ã=å­=ÞP®=Á -=Ö.Ü=äkÁ=Ö%¸=Ê_ý=±==¿Û¨=Ç;x=ÔŸ°=Âõ==ª=˜»=š N=¾‡l=¾#±=¾gR=¸h=ºÍ=Å_=¼We=¶n#=½=È" =Ú•E=¶=¨-=§ëg=§lý=¦ãê=¸·=¼oø=¼g"=°[µ=¦‘b=¥Ç=®š÷=ˆa=ÂÔƒ=ÁŒT=º¢Ê=½ô^=Â-D=«k=§px=­–w=¹Ÿø=Ä97=¿b=³ -ò=”jÁ=´È=v=´g€=œÅ†=tú­=©P†=·ËÔ=½ãÿ=²³@=©<¯=”:Ê=Šã^=wü=È=­Á=¯FË=¨ø¦=Ÿ‘m=™,=—Û=–½ª=’åÒ=Ø =£¥J= §{=•õ=âæ=vÃ=¾éÕ=®v==™D=’ug=—wï=³&¨=¶‡Y=¹=€=¿Kê=½C7=·‡­=¼ @=¼p»=¯âñ=¶Ô=½ÖŸ=À\=¹gÝ=šØ -=£I=¨ g=¨‚=°nF=¼³‹=±lM=­ðÝ=­‘¥=¹=Á]=Ž+=–¯C=¬ãÿ=±O€=²9ò=¥h=¯}=¹è=¹ÝØ=¯Uy=‘„=•ï!=šZ=ÀEw=´«T=¥‡u=¤ýÞ=©_¾=¹fm=á}=üç >ã“=úÆ=èJ]=ÈÙV=ÃÁŸ=ÚȺ=ă*=±´=«aþ=«3=ªñE= Ê,=žBˆ=¤=§d=ª8>=å‰">/bÚ>œ‡ª?„rþ?·Ä¸@ Tm@ 1@4ÔN@*µ’@ìß?ýP?´)Ý?ˆ>3ý>;«=ɬp=­w¸=©š~=®Â=®¢¤=­é=šŠN=£Þ=®ð=£ø=§6=¼@É=·ã²=³W/=€tË=“Þ¦=­°¡=­§i=¤|=†°=Ÿ1Å=¬dº=š©ô=šèG=›?=•‹å=˜ü_=¨›=¾ v=ÉÇÒ=¨Èã=¨„o=¨{ú=Éþæ=Î =ÉKW=Å' -=ÀÍS=¢CÁ=¢QŒ=¡ç=¡ë =žWÒ=”c=® Œ=·ï=ŒN=‡==’ÞG=ʪ=,M=† Œ=œ³­=¥æ%=«Ùo=¼éÆ=ÌÃ#=ËëS=Òâ:=ßöÀ=Ù=¶®=¦8Ç=¢Ó¡=ŸiM=¬\à=¢f^=’ke=¬:’=±Ïc=¬­ƒ=ή= #=’µL=›5V=¥é=› ~=—I=“¦p=Š =†Xs=“!d=’ßÀ=’£=¤G¦=¡ÁÐ=™×=…’3=…¬=¬Kü=·Yó=À—x=à=Ì%=­:¶=­FÄ=­ -q=­t>=ºb=¾|¾=™Ú9=¦´µ=´X=¢™3=žl:=šª×=–8"=šõ=´d=šƒ¥=†Î¼=­’-=¬‘=¨¥é=‚$ô=‹=ºü = ¡P=“èü=À^=¥Q=º‡¤=ºØ3=¿Â=È]Ä=ȃ=Ë!)=Õ'=Ùë=Ú/á=»x(=¯#Ž=¡¤=.‡=œè—=»4Ð=¢ü =›)=š…u=Žÿ[=‡W=š6=— -´=“v =™W=¤=¦R•=¯ÒQ=²‹=¥ô…=¼ji=˾=åƒ=×I·=Äžw=¸ö -=±à°=¤>=£ø =©¨Ü=Ä{É=Ä…R=įÃ=×Ãœ=É—!=·U=ÎIÍ=Í +=Ä‘·=¿š=¼£¾=·Þ=Æo6=ѹ=Êî=Ó5!=ÝÕæ=Øy¯=Äžè=ž0¤=Æ3‘=Åd¯=‘P*=²e=À:=« »=ªžq=ªÎG=Ô%2=Èq}=°´P=–F=–ö=©ì=­úC=­äI=£x =£M¤=¢ï’=©~€=¦˜=¢ý5=¹%g=°B=•ÐÕ=•&=•XB=•·s=‰¸t=«=jqè=Ž¨4=¦ïÄ=š¬=žú=¦=›‡)=•öÁ=ŒÖ‘=™Ì1=ž¤.=žŠo=›b=™ª=¤Ï=«8:=±3Š=±W!=ºY<=Éìú=ϸ:=ÓÙ’=Ý ø=ÂôÅ=µM=¥¦=°]Ó=¹‚U=Ö}:=ÆÇÁ=·ê=¥Ì=©ïø=°Í;=Åf9=ÕZ5=ô)¨=øx>>q m>¸·i>îdÎ?OŸÈ?ï2?”Ý­?”â±?…'?c.?Ȩ>îVa>²%ù>€¨¼>a”E>N›9>7"Z>,±º>'N>µP>:‘> ->˜u>ëÞ> 0G>¹n=ù7ð=þ°›=ô -W=ÛN=ïˆ9=ô=ðhY=ö¢Á=ø=é'§=÷7>íé>o‡>—­>ý=ýÝ+>¾>YJ=Ù#ì=È$¿=²ø=›Ø2= ´%=½ÙS=²£‡=¬æê=ªV¶=¡#>=™¶|=…€Û=ŒB±=‘Cr=—çÉ=§„=·>Û=—V=m|=@Wh=jŠ:=ñø=~k=¨hÖ=ª—*=›xÍ=•ç%=ûÛ=u!=¡Ï{=´Ek=˜ª =œ;=žŽ£=¤à =¨j=«0«=¶é=¿ÀÙ=ÊD“=®µË=¤$=˜ë;=¸@]=²XE=™=£;b=­3À=ÄÔ„=·@Ð=·yø=ÐѺ=À¯M=±$Ý=†×¯=²›®=Ì!]=ŸAü=³?ó=ÄL·=²ˆ]=¦Gè=™—ì=ȇõ=ÀX™=²/!=œ(= ®=¬:ñ=dA=Ÿõ‡=¬§=°§…=Áv=éÔb=Åß¹=µ&¤=¬ÜD=“„e=ŒÈQ=«éc=¬W­=°·=Êw±=¥æ¸=‹Üâ=€5[=†=Œ§A=¤mA=«!=°²„=±'ý=±@·=°óï=Òlj=¿*ß=žE=©±S=«_=ªÀ=ª˜$=­G=±'ã=»Xx=¶¦î=¥o=—]*=·Õ=Œ×i=‘m¤=˜<=¥òX=¶ùf=·òÖ=™Ú•=¦5»=«]Ç=¦ `=ª/©=¬Î°=³ƒ0=¯­^=­6=›)o=¥{±=¬‹o=•h -=£Â=¯'s=´ì=åìÇ>8D?æÏ?M@?ŒI ?”¸\?ƒ§L?a¤x>o'ù>á=¨|È=œŸ=œu=œ®=¾«g=¸ð/=¯:=f=£©ý=Í£=¦×=¦hä=®¿=®A¢=¨Y€=›ùe=¶…i=¸¸=µ=7=›Ø=‡.=©_=£´Û=¡·=œã@=˜¦=œuÍ=©=¼ò(=ÄZ=Ègc=¹h@=¿4€=Õ˜ï=ÕÜ×=ÎC=½-=«5š=Öñ=oL=¶Â==Dzp=Õ^=¸µ…=²#=¶®“=Ê9N=Ð÷_=ѵ=½¯}=»_œ=Ķ)=ظ=àÄð=äÙ¼=Ñ‘{=Èà`=¿õ=ºÊ_=±øÝ=ŸÖi=š~ú=•Y=ŒæÒ=«za=°6Ï=¬œ5=À™G=¾×â=¬?=»fß=¸=a=«Ùø=ÊÞ}=Ö~=ÞW=Î" -=Ëäp=ËZÊ=Ë5(=ÀO=¬Ue=¬ïl=±bþ=¹5a=³1=¸I=¿øY=®óJ=²R[=¹ûò=º=Â<=ÍY=̃;=½Y%=§Õ=²šž=±óÞ=­®Ö=š¶m=‡ 1=i =¹B0=°]=¦;i=‡p=ŸÍÿ=´^=®pë=¹™=À¼+=®¥Ñ=¶QT=¹¨=¢t=¦¢=¨Ðª=£T}=´>È=¾Ñ =Ê Ç=·é×=¬xä=œî=¥Þ’=¨Â=£kÓ=¶ˆÏ=¼øÔ=½ÇÜ=Ì`Y=¿)=–‘î=°Ñœ=´US=°¿%=¥áÍ=¬O?=·ê=¾÷³=¼eâ=¹/ý=Ƭ]=Æv%=Ɖ=ÀÔ“=ºLî=²¦Ó=¬ÀI=©ÿ¯=¤Ý4=™ÿ’=¢6)=¨1=­ã=›=“=’k=;»=“Q=«ó7=¿l=Á˜¡=¸¥=¢èH=«i8=Åí=®­h=¦Ky=žË=žI=Ÿ¢=ž[=ªP=¥kh=žÄ˜=«è¯=ŸK=ä]=…!2=­Œö=ÂyJ=«éÑ=¹=À¿f=ÅÂþ=¶êd=¬ÿ=ž¦1=£ð¬=­j=¿]=¨¯/=šÎž=Šð¹=•žE=®9=Åšn=}ñb=¢2¥=Á£=Ò¼ï=Ó>a=Ï=³C=É.Â=ÔÃ=Ô3=»“7=ºÎ=Ç0}=Àô=¾ûV=ºé=­×¶=¸æ–=ÇÐï=§ü£=–ÈÜ=ŠRF=¼==¼»!=¿ÌÛ=ÔÌ =­Ð=¢·r=À€\=­Kþ=¡çO=›%=åŠf>G'+>¡aÌ?a?­Ë?Èáj?ºØ÷?œ?„²£?u?­?ºþ‰?­¨ß?dOF?X£=÷®x=¶âé=²E¤=Ŧª=±ÇS=«é&=¨•=É,È=±{õ=¡û=³á=Ï8Ð=ß¼=ê*²>”I>§è>2S>3U> CŸ=×À>=ݺÂ=Ý“1=ÜM{=š^=²¤=Ä…¿=Ð23=ÆãÛ=ÅŸ=Зq=Åpl=¸z=¡7­=¿¿=ƨA=Édj=µa«=µ*Æ=®ŽP=…Òo=“î -=¡ª|=½‰=¸šª=¹Ø\=½˜¤=ÎÕ0=Æ5k=·UG=Å2‚=¶_=¬Æ=ÅÁ/=¥¦9=šôu=ª'=3=šŽ†=¿|~=™«(=£R”=²H‚=«:Š=Ÿ“=š4ë=«üE=¢Ý¨=¡Ò‡=¬šT= Ó¼=¯-¤=ȱN=ÂÅL=ÅÄ=Æ#Ó=´87=Æhd=Ï'Ê=ÉžD=î~÷=ö¶©=í;&>~@> ƒ¨> 4„> z“=û‘$=æÔ=çY=É•ö=¶’²=¨Í­=|Ö=©i=¿=ÜHP=ëzœ=ñv•=¹f`=ètÿ=íìN=Ê=Æ%å=É@ª=ÒÞÿ=ÒÏ=¾z•=®%]=­z…=·2=·á…=­Ù6=­ðø=¨ Ó=Ÿ -ï=É;=«å0=“0Ž=Ÿvª=¶ëq=ÁvÜ=»ó=œúÀ=£–=´dª=‰5=˜d…=¢®@=²ÿÚ=¯[=¬¾Á=§ù=ŸÎ¶=«óJ=¾ þ=Î9œ=¸Ö=¨ë9=®b=Ì£=Íÿ˜=½¼á=Øð½=×$Ç=ÖÚ¹=Еë=Ë©­=¿ì=š³K=±*=¿5=ζ¦=е[=ÎÕ}=Ï*Å=ÏïW=åzØ=åìß=Ìv=Шt=Ûê>=æQk=ß9;=áñµ=à:=ÛüÂ>”(>¢=ûPa>qø> ¶>s÷=ü¾k>$ì>{>(Œ±>*nÕ>3ðé><‚>)þ>)Êy>&?>ðž> eK> ª> °>]> ÙP>lõ>Æ­=ïÖü=éO¨=îâ=áâ=ùâç>Ú=úB|>ʯ> ^>l> ¹,>t>£=ãq$>‚©>˜:=æÐ=Ç7s=Ôj¤=í`!=ȺR=ÇÒ =¾Ê=ª¤=¢b½=©ß=»Ý=ÖXQ=º=¦õ¢=—¥Ì=ª” =¥==š9Þ=ÇY'=ÁÂ,=Ã%z=Ô¯=Œ ¹=•J=²sø=°o=ª ¡=©1¹=®f’=²Žç=µìÍ=¾ü»=»c>=÷ =˜>d=›ÐR=¼ðˆ=É †=Õ ª=ܹ=»¨;=²áˆ=ÊhC=¯ëÃ=¤ýÃ=—¼º=¼Ïj=³e=¡F"=Œ¯â=ª‹³=¥}õ=šëº=ªd=˜žî=oÑ=ŒöÁ=«ÔK=³ï=¶ÃF=³ -=§D=­Îe=Ûˆ=ÂH_=¬a1=Ÿ’=šÅ§=þ¼=‰=¬>C=•Š/=›ar=šý¥=¡Öì=ºƒe=Ç£=ØfŸ=¹Þx=¡æm=¦œ˜=¾ör=©‡9=´Eº=º!==¥¶W=±‹ï=¾ØŸ=Îo= ú=ÚÚ=¡¶è=ôç=•N™=¤!ô=´8=½Xq=ÂÉz=¼ÎÔ=ª³=½ å=¹­ =°Î=¢u=”¬Ä=–Ù=£Ð»=–N=¼s=¿Ó=Ñ%†=¾°¼=¾K=´úÔ=‹*=¦äq=¶êW=½>'=¶B¼=›Iâ=‹ñ"=à=œâ=²Šq=ÁóÔ=€Š=¤ŸD=c^=o(@=¦ð =—Ô=˜Ú=¸9)=Ø«â=ë3=¦=’®>= À‚=–m|=D¡=«e•=£â¡=¥7=£Zw=Ê9=Âý=¶A=“`p=“’|= (S=¬8=¯–ö=·„8=¨d³=.G=ÔLá=¸š˜=œ 8=§¤^=¬Ûÿ=¯¥=­ˆ =„¦ý=çM=®ým=Á>©=›V4= 4=¦õ=±1=¾j•=¼ê=´á=­*P= uÓ=–UÕ=ª9z=Ì÷=Èàû=×9L=æJ=÷™\=¬p¥=Œ£~=‰M=¨®°=° 3=¾6®=ÞrŠ=Ÿu=‚ý=€ÊÈ=‚çö=­€.=°Ý=®cº=¼6]=ÚÕ=ìÞ[=øÇ=ä³æ=í?=ý¦Í>Í=ÛB=½ür=ž"x=¶=¼Pš=Âè=½‚¹=šsÂ=áñ=­ˆ»=’ -A=Î6p=£z?=±$Z=Ýê—=Ø°Â=Ìÿ^=Ê@à=Æé=¡R]=Ÿc=˜eñ=‰ó=ª¬ú=­]=´¸=Ù~–=ºí7=²¤'=¯Ã=—±=ÆVH=¸¥ð=À.D=×Sœ=Ÿ£é=¨­Í=©ãµ=§Ë=À=õ=ÍS=ºü)=²Ù®=œ/=¨\ë=´}=¸.>qµ>F¤õ>±’ >ð2?-Ø?.Õµ?Ðe>ìA¥>£ >Nø=ãà=ÎÄ=µ¦þ=¡ë=ž­-=¨:Î=¦V=Œý ={4f={Úî=•0•=¦£]=ÁD=ºJN=«,=™ç= R™=³Œà=ª¨ª=¦î©=žÚ¢=àÇ=–(a=¡Xû=³ˆï=¨hð=›g=œÍù=Xçí=ž\=½ä=Àû=Ÿë=““ç=šq­=«;Ø=ŸJ$=£µ'=ˆ½=]Pç=¸F=ÆqP=¿hu=º±Ï=“ŸÓ=’N=‡•œ=£ãø=¡_¹=¦€=•2I=“0œ=¯Ï€=°ó== ø=¾F6=¹ëÐ=Æ/"=²Zä=£s2=±Ø=¡I}=½Û5=¶|B=eù=«ju=¦e=Žü=‚Ÿd=˜ ²=yŒ=µ§=¦ß=V^=£LÝ=º¸=¶†=µQ=«•Â=›žé=´ä=ÈäN=¡i™=Œ‘==—Œü=ºÀq=•©=·p =š7=‰ë==ÀÆL=È–=¥Mœ=™¤Ë=˜¡I=žùn=¹3=¿ž–=¼˜A=–pˆ=§^%=À£ë=·Y=­R”=Ì:=Ôo=³?=ªI=­È=­l0=•eJ=—¬Ú=“æ¡='==‰Aú=Å=…=ÅñX=´<=¡»€=¯wt=«•= ^×=k¶Z=‘tt=¹=¸ -=¦²“=ð=Ž?=¥ž½=ºHd=ºg[=¼PÙ=ÛtÅ=é!î=Ñ·W=£õñ=™<%=’|}=£eŒ=¯ªØ=Šú=t/¨=“%í=¡ Ž=“ûT=’ÝÃ=ÄI-=É£J= Õo=¾½ˆ=ÂDç=¼£=¾èn=Æ–Y=–l\=‹¢=³š©=¸0G=ªá=§86=£*!=­F[=¿?æ=²™f=—þ=hšÅ=ƒÉÓ=®î =£J¨=®=©¸=‹•÷=À‘+=Ä=¹J©=ÆÜÁ=ÚõK=”¿=¸2Ò=Ž˜3=’f=š!¼=µ“U=ºÀæ=®ñ+=£nÛ=’5C=­}D=¥lG=›>@=£G(=Ã]=—öZ=©ãÁ=¯µZ=É-=Ë•A=Ô“ý=΃ñ=ãT>mú>ºPß? z2?Iê‘?[Õ@?DÛ¤? žš>œ­¬>Q7>M»r?WK?-¸?HA?=!Ò?#^£>¸%q>Pñn=À%ú= ™µ=„‚;=’¶9=Œ‘=’D·=—Yä=¯ÍD=¦=¨17=¡öŠ=›SÇ=·1=‘Dø=ÀÒ=·Ÿš=‘üÃ=¢ˆã=†Pc=”¨ê=–1=¤)£=‡L‚=„{Ü=‹Óm=—t=°”=³\¤=ˆÚu=…§Ô=ŽÓU=¢¹‚=‘³=¬õ¤=Áz=ÐÀ=ËA€=¶~¹= =‹º=tã=œR=´fb=¬À”=’>==–U=¯ã==À§·=§eã=›J<=|ò¶=pïm=±O1=©‡<=¤ý‚=¡ØT=œÊG=³üÏ=¥zª=›A½=³0Ø=Ð=¢ƒc=¥?ê=šX¸=•ê_=œ=£më=’J=’VJ=šÚ`=½D¹=œëø=Zóq=PêH=jÔ¦=ˆ±=HO=ˆÊ=“S¢=€ Ð=…»=‹ü=‘Æ=žô =š’=¨Ì=º=—À5=Væ=žÞ‹=šÔk=•W°=¡þ<=–Hì=~ ö=†ëO=ªpØ=•ûš=¡]=š6i=©=uøæ=‹OÈ=žj>=¥ëõ=D™=¶šÚ=ƈˆ=Â~==ÃØú=ºt•=±ÆÑ=©¬‡=–øs=‰•P=ž"ó=ŸÚE=•t=— Q=° -Ó=›Ã:=“Ñ;=Šže=°ß=½ï=¿¢º=²uþ=Ùˆ=ÏÒ=š˜A=½ž=°Ðã=ž†y=§)”=­=Äö×=¿,W=³—ÿ=¦Ç”=ªYÐ=Ÿ‹k=œ£ð=——Î=™Âl=’r¶=Š+¤=ˆ =¶b=×=°>À=£Åo=»¨y=ÌX!=ØäJ=Çü=ÈKÁ=ØNÄ=Ïâa=Å°=ÌÖ =Ð32=âÌ =åÉn=ë6W=¨Å=€µ"=‰Š|=Š†=‰”=¡”Â=¸¡¿=°íz=®"=¤˜n=H¾=‘¹x=˜Ä`=›¢“=ɾ=ÉÕ<=ɲ=Îà0=Òà#=ÁeÕ=¸h–=˜ì±=™Û=™a=®=¶&=¾0=ºÞß=´ÆÝ=Àî=ÆàÏ=ˆI#=µ=©í=•>=…X2=8é=‘`=ŽÈ=‰¸‚=„Ÿú=®Ñú=¼§r=ÍU¦=ÌX3=Ë4E=ÄA¨=ÀÌá=®Ü…=®/=­¡D=˜7p=‰O= ÷Ñ=ž°I=ˆŸ™=š¢á=¬=–MÞ=”B×=¬ =¨^ =¢ð=Èp—=ÕlD=«“=¼Õv=Þ®(=±*y=˜5Ø=°Ë=½s=Þo¹=ã$C=æ“ñ=©F#=¡¸Å=¨‘6=ŸÊ$=–¢•=£È =ª.Ò=ÁŒ=½Nw=·=°¼²=¯¬æ=ÐsU=ÍFî=ǧ®=«$=œ—=“½d=˜ƒ“=¤ÙY=®õÛ=µ²y=²=Ò==£³½=µà¥=Å£~=¶°ž=¯×}=š^=¥òÌ=²ÊM=²Í¼=³µ@=¹¤6=À{6=ÊD=Ãn=¿»0=¦üÀ=°4=¿·ˆ=£'=–o€=¶4”=Àß =×0ò=ÁH=´É =”È_=š@º=«ÍY=µžø=¼;Q=Ëc=Çæi=Ôz=Âë¥=µŒÿ=»Å™=Ä~õ=åw¨=Ü€Ã=Ôfª=Ú=Á=Òw=£àƒ=«™-=³y:=á==ëˆ&=ä‡=ïci=üܦ=êñ=æ×N=üɱ=ü4=ûÄ©>±˜>-Ø>Ä×4>Á„ >¼p >¾Í‹>À‹,>ÓÇ=>Ë«>½ÊÌ>Å°’>ɦ >ܘØ?0›?3Fþ?|?“?/O?/ þ?/£¢?0}?0Qì?'³?(‰u?*ÙŒ?õ?#ý>¶Þ>´²>·UÐ>®Zg>©>¥k>§®Ð>®„d>§$–>¢«j> ÝŽ>ˆ‘?>Ú»>¾ê=úI =óZì=î— =ã<=ÞK6=Û =Ôî=ÏNa=Äf=±X=¥·*=´»ô=¨Þ=†ž=ž—µ=­³=‡éH=šÜ®=ÌŠ_=ª?@=•ð¸=¥¿ê=ª¦ˆ=µdÛ=«15=¥H#=»uÁ=¹Q*=´+v=¸¬O=ºÙ=œf= ü)=«&=¯åj=²7=‹’€=“qÓ=¢J8=¢‰¹=¢Š=‹¸=“ßþ=¢P˜=¨ì=©8=“C4=œI°=ªŠŽ=ŸÑj=ŸÇo=Ñ=Æþç=¹-î=Êyu=Èä=ƒF÷=J¼=™Ê!=“OÈ=”Õ=¨ê=¤åè= w&=“À0=”ÈR=§µ=º–Æ=̾«=žíý=™E=žK=žÑ=à/=¾“K=À‚A=»Pà=®Q³=¥…Ò=«S=°34=ºœ~=¢r9=•"=œ§Ä=¦Û›=ºbÂ=¤Æ•=œ)À=±¸=«ý‡=£*¸=’å¡=‹¤à=|À=‘Ž=ªÍ=¯®M=ºÞ‘=ò÷š=ç¤=Ûk†=©Y= ú= Š=ÆV=‚»§=°™a=µ2X=¶À=šFz=‰³¿=™£= Q¤=¯b=¹ôÝ=¾\S=·m>=·Jõ=·^G=§½=¤øõ=¸ý=¸d=¸nÐ=²ž(=³…=¸£=¨\M=š…Ù=´Y=¯œï=™‹=¡êt=§)=Šzü=‰Øú=‰¡¨=˜b=žà±=«‹_=±î=¸¦D=¨È=§em=Àô=µdo=«-˜=·q}=º©L=¿ØU=·€v=±­=©=äu=•yˆ=™ß,=žn¨=Óað=Â5=¨×Ö=£=¢x=¨‡Q=š -k=Œ -¤=¨³=£;ö=­v= ê'=˜¸-=ŠÓ°=—ñQ=²ß=¤¦ -=ž–¢=ö8=©´Ã=¸ü·=³rè=­Ë=–¶e=ž€=¤\ï=ªÅ¼=©XÎ=£Îg=¾°™=ÌPò=¿7©=Áܬ=Åßæ=°¶v=¤Ñò=­Ñ=–]þ=ªTâ=¤"È=¦¶\=°`z=¬1=©vR=¢Ño=¢µu=¢ˆš=¢2”=§~^=Ðáú=Æ—è=¼Ø=°µ¾=µ¡ =É$8=´Hn=§ã¬=”D›=–Ë=›?f=›ƒ©=Ÿ¦V=½}n=»s=¸x1=ŽÃ#=…Þ=¥j¯=˜=Úq=ž‡=«Bm=¿Œï=¥T=¤éˆ=Ídb=¨½f=ˆôO=´hê=² =£Ml=±4{=¹ŽÂ=Øl=½.å=šð,=›Á§=ž,·=¨â[=±=¶ X=¶”ô=¬î´=›#ò=¥FZ=ª˜]=¶Š=²ö7=¯kâ=µ’h=¯#?=›‘ì=¨¯ì=¯®)=¼é=° Í= €ª=°…4=¬ø=‹ñ÷=“wÎ=˜¢=¿F=¨Na=|«=’ ‚=–C#=‹÷=‹5 =‹Â=¾å=›[>=²#K=­\Ÿ=¬´=¾¢A=µzÞ=«k@= 7=¨85=ÄS²=Äö„=Å‘Ï=ÅY\=È0¨=Ë¿Y=¼ -:=·#¼=±M¹=­R=ªƒo=±ìˆ=Ñ9=ÿøk>H-€>evï>‰3¯>•u²>žJû>…Þ¯>yÄ¢>]t">&²¶> ‹=½>=½F=½s=·f-=°ll=£¡N=ŸLD=Ÿ¦ =ªÕn=ªó«=ªó¯=¤¾¥=R.=’Þ=²+=¶©@=‰á=¥ü§=¾U÷=ÐfŒ= -!=¤“=•¥£=‘‘ª=–é"=¡I=ªàˆ=ž;Û=†¸=3K=˜A¡=˜­–=£ú†=•¸µ=‰ê¼=µšp=¼kï=ÅùÊ=²'=°Ü‡=ÇÂ=´Ê=¦:q=ÚåÜ=ʘ¾=®df=¹1š=¹¤=®e»=¡›H=š -=²P‹=Ÿ=„I‰=®êá=»z=Å%P=§Mô=˜eµ=ãf=«ïà=o¨=±F,=ºG¯=Ä>=›V7=‹sŠ=§»@=§Äé=§T=²Þ&=¼›=Í{N=¶Iv=©=Ž6 =œº=§Éb=¨t¼=£Zˆ=›eg=°(N=¹¹=È‹A=°(–=£µh=»ä=°Ä=¢—i=¨(#=°?y=ÃX=º<¤=¶ÁG=¼§c=§æ²=• =¨Âq=³µ}=Ä/Ï= Aþ=œwË=·/c=¯u2=«-=¸;ÿ=¯€X=¥—>=·y+=¾T=Æpy=¥é¢=š[3= 3&=¨?=®=µ ‡=°€â=¨¦ =m´=œ†¦=¡Í%=¼y=ÂbÎ=sˆ=Îf=¡‰„=¢D=¢|É=¢êù=­š=¯ä—=°2ý=§õô=¢Ò=¢¼„=©5!=¯áq=Ä=¤¢]=¶B =Å#=Ľ·=¨½ý=¸€˜=Ã=µUý=«î˜= ÃÛ=Ð/¹=ðe=šÓ„=¤±Ÿ=¦5O=ša=¶¿=¡=˜=0<= Ê=“Ü=š|=žÆ"=§`—=˜¶è=—«Ã=§n’=¯>Ï=´šò=ºÛ"=®¼œ= ë“= ¿5= Ñ6= çÍ=ãCg>#•m>žn>Â2Ý>Õ„»>ÌK¤>š¨>VD=ª«=­—=ÉîÁ=åŸw>ný>‹$å>´tó>Æ¢y>ÖÝ>’ÛY>XØä=ªd)=«Ç=¯uì=¤¹^=¢U=¢Öµ=© }=©>J=¤’ù=j=˜•¤= =¥=§þB=¯›;=©Hï=°…y=½F=¬„ =«G.=¯gœ=©÷=§ =§Z²=¶Í1=Áš =ÇV=¿íâ=·ë=¶žµ=©éÎ=”=¢î‰=œý1=ƒÞ =§p/=µ4Ž=©Ìy=¬Ñ>=°W|=¶R=§…„=—n=‘`u=œ¶"=±­=»¯Á=¸-1=¤ =¤ ç=£]=¤Ê¯=¤ºW=¥˜ÿ=¾<£=º@€=¶ód=ÐO™=Âeo=¯·÷=©»==±®}=ÇR/=¾Õ=¹ -"=´²=›”=“#=¹Â=µgŠ=²Ì=¬¥Y=£*à=™y=Ⱥ=Å=]=¹ {=´3Î=·›V=À *=Èë}=ÁL=“=“Ž[=’Mv=.A=»†=߀à=¿Eí=¹zÂ=³Í=¸Ar=½«=Æô=Æ=¿Šæ=²~õ=©Ó=¡Ê=’Þá=°ª0=¿a;=Åu_=º’9=²‚=³2=¹]~=¿³Ê=º,=¬gB=œJÕ=”_ã=’:¦=’ƒ=´fè=µ¾=¨»=¾¢=¿>·=ª/M=«º=±E?=Ôê&=¯ e=™‡|=ºi=¼]Ã=¿U'=³!-=¨!Z=œ¯×=ÊÏ=Àrv=§ÎÍ=¡Â =°Î"=Ñ_=¬Q=¥h=ªÌ¬=¦‘2=¨x*=¸Ü´=ª¬«=¨º1=Ëíj=ºúÆ=±“–=ÉFš=Á>=º@µ=¿=Ègÿ=Ñ ›=™p‹=°»=Ö2B=¡òÖ=¡N=¨-=¬ûØ=²É‡=»¦ö=¬Õç=©‰Ê=®RË=²k©=¹0=È´=¶[‘=¯.£=´ó]=±;=°Bª=Á·]=ÍbD=ÓŽ¥=È,è=¾=;=´ñ=µ‚®=¯Ÿf=©'Ì=´¼2=¬xÅ=¢—ž=‘O=‰†=µz=ºv=ºö'=»c­=¶d¾=½Ç&=ÓÚv=¬QR=¨q…=ºØ¥=­(,=¤úi=œæ=—à?=œêÜ=¼ä`=µ<‰=³@§=ö=·Ä×=°™³=°­Ð=©`=¦Ö=Ê;÷=­7Y=™nÄ=·n³=·dî=·¯=ù'=¸0k=ªeÙ=·'¯=¯&Ô=¤ê!=˜­—=šÖX=žou=˜(=šê¿=žßJ=“pº= .{=²Êí=¹L>=¾`©=Æ‘ö=Ág=½>0=´t¯=¾º¦=»Tu=­Õ=²ù=­>Ž=›uP=°vÑ=· Ä=¼q==¢é°=©®=É(t=¯và=§lÄ=§Û÷=ž<=šéo=šž=žþ6=¢sú=¨-=¨Nú=¤„g=š©Ú=® =«ˆº=A =ƒqQ=‡‚.= øÍ=œº=žû]=®¨ž=²û=·IB=µÐË=§°°=¥ŸE=¶\=¨‰=£#=©EÕ=·K]=¸)=¨ãô=­S=©·o=•'¹=Ÿ€L=¬»4=Ñ<á=¶KÎ=¬²%=¾uÒ=¬UJ=£ºd=ž3:=ÃD¥=Ë–=¥ -Ç=¥^^=ªß±=ºrA=«àå=§n,=­Š¸=©4¨=­¨=ÊÞ=­‹=œMÐ=¿=§e­=¬Î=©F°=¹VÃ=³ðz=›ÆÇ=¡ÙR=¦tË=°Ý+=¶Ë*=·‘Ã=²=–È=”jI=žêC=ªÝ=ªôu=¦âÒ=|bè=ŒN‚=·2…=¥ š=žð‡=›‚´=¢¿=–H=…Åz=¿ÆÁ=²ˆß=“Ÿ=Á¥Æ=¶Á®=©2Ö=¶£¡=´vÍ=°/¯=½[=Ãö=Í0=ÄJÎ=³ð=©)ó=¢’=ª@ =¯?ù=¨!=Ÿë=Ÿ¨=΃Œ=¡Øx=‰R=£e~=¬ñ›=­”=“,"=“6$=›·>=±ôä=²PÐ=¦àM=‡RÜ=©tO=©:/=•l1=¡!e=³µ‡=Ô„=µúh=³UÆ=±Ý=—Ö÷=¡èN=³ =—Ÿ5=¦Ó=´u-=´á=µ«ß=°¼Ô= "Y=“¸=´}=éL=¡Á|=ª…û=º¹=¦ÞÎ=¢Âö=»{œ=°Â=©ð_=œ· =§·=¨Â(=¢S2=¿™e=Ë!„=Ù”Ù=¹Ãú=¼l‘=ÄQÄ=¾lÊ=Éà=×a™=¯“=º¤µ=Âb)=½\=§Dx=£lV=ØÍ»=Ε=ÄL’=¨â=²>Ÿ=´I=¨´@=®v=¹¾Ï=ÌeÊ=¢õÌ=Ÿø=¨óÒ=ÂË=ÉTÝ=Ól!=¾D=»ßC=¼ô=¨„Ê=¿+É=û==› ½=Ê`à=Ù‚=¾X=Ù·ç=ÖóE=¾Že=§Ó= óŠ=¢VÄ=Ê¢Œ=Çù|=Ä‹ó=ŽKh=Ÿf=°€=¡ô³=µžâ=ÀöÖ=šë:=»ET=Ñ F=àï=í"%=ú´Ø> Œ"=øÁ<=Þ$0=¾"Æ=²‚9=°µ=°’=°Sk=©\=§@¡=ÆÜ{=ÈŽ®=ů^=»¥ö=·Z¢=ºq=À³¶=ûÚ=”õö=¨Ø=ÂȾ=·h›=«hŸ=†÷Â=™¾=¡oÌ=;õ=··ó=Ȥ}=°X]=ÁºÀ=½"ª=§M=­`A=Â"µ=Û™r=¥†R=§Lþ=± -À=ðsÑ=Íý=µB=•!=Ÿo=¤´—=£ ==•i(=¥ò¼=Á±=òù›=Ý À=Ä$=¶^ø=»@=·;N=¬²/=±±!=²2U=«„=·|-=¼«»=À.(=¿.=½@.=ºu_=Ç7d=Æj4=ÆÇÛ=À‚ë=ª†l=Ÿ'=•s=¨ =´|= =º˜e=¢q”=tÐ=¤p»=¤2<=šô©=~¸P=£Ï=¯ªÔ=³‘§=³ñ=¾Xö=ÇûÞ=¬îÊ=µŠC=¿f=Ê÷ò=¤Þõ=Ÿ99=­éf=˜ü= #‹=§Ðù=µ·å=ÅŠV=ÍSR=¡Šû=©Á:=±=°Ù =žóe=œ~È=¨ü¯=±Jr=¶å=½‹ê=µ"[=¦´=šê=žA=ž1˜=`p=£Òð=Ê@¸=¥ÎM=/^=µ‘=¦†´=žU)=Ÿ5f=ªw7=¨“g=žê4=ŽÚ=üL=•¿=¥¡¥=¨»›=¤Ê=ŸA =¿Õµ=¹·=©÷=ª©Û=­ŽÙ=·x¤=Ô5=¸¦=§<ã=Ÿib=žF…=¯šÖ=¾ä=“s=ŸR³=§Z=¤÷U=£…û=Ÿ¾Á=žÈ±=èã=•¢V=ö‘=·u¯=¿ÚÑ=À¿M=Ëà•=¸íF=´ÙÍ=¶nØ=¶ÂÒ=«ˆò=œY…=¥Û=”…O=œ¨u=¸ªú=¬‡Í=· =DZ^=¸¡=²»=¶IE=Ã=Ýí×=Л|=¯×´=‹z=¬@;=À<«=”jË=ºo6=·Â-=¢g'=‹ç³=Ž|=‘k=•w‚=šn¶=›,=“K-=¥o=·_È=ʵš=Ñ2¿=à©}=ÒHq=¤Fâ=½zì=É`=Éa^=‹º=¤êK=·‘j=´x÷=¢ww=©dÏ=Ç ¦=À6=´E{=«P=³7¥=¬Éá=¥N=“Ý*=¢Î =™8I=„kA=OOE=ÀÕš=Ìþ=—3F=¾k6=¼Å=®¢g=¯VÌ=®!h=±:š=¡òª= _$=¸gô=Ö&ù=Í„=›¢‹=žyü=Ùe,=Þp÷=þ’> K=ÙÆô=ЪÏ=¼)n=ŒqA=£„Ç=”Ô=‰Ÿ€=°›¾=²(y=¸°ê=ºÍ¨=’V4=£Ç=¿…P=ÐÉÛ=¥›3=§¦›=ÏoT=Äv­=«™i=C'=ªU%=*§=¶pU=é–=†Ý=¥m´=¤@ö=±€\=Áuí=¹úÞ=§û–=¡R~=·óÇ=µÖé=…âê=’Ÿ=ª‰ÿ=¬]=Ãh7=³ª?=©=¥ÒÒ=Ю=¯E=‰æº=Ã¥g=Å#Ž=Å §=«ó=ΗS=B=€¹ã=ÅBÉ=½Ì=š_‡=ƒ³ø=ŸjŽ=‰»o=˜xP=·:Ò=¦1Û=†rè=y¿=­Ç >–>3K>1;œ> •G>°v>Æg=üéø>’ý>&7î>Ýz>[z=è» =¼s‡=‘¡=´Þ5=±9Ò=¥è·=„XP=¢8*=­vk=¢Ïš=ž#“=D==¬Ž…=ÇÐ0=̨2=ÄÔ²=¢H¶=Ï~¸=ºÉ‰=•Ü­=Ê\D=ÆÎ4=º¦=³k(=¤Ï·=—Ÿê=ŒH»=¢#¶=°Ø¨=œ‚¦=„—ý=šww=ʹ=Ì—X=¬ŠN=°Ñs=­øF=¦sã=´ã=½üJ=¿v =´·=Žy= BÅ=¥qa=™°^=z,8=i¶ï=†u(=¬ô=™¡™=›¤¸=¡Cû=¤¯ô=¶]8=¿ó]=¾æ“=™ï= Â˜=¯G=¾Ðˆ=¯šç=³¢=Ãd¬=ÉâŒ=áž4=¸;V=š½`=¼9ý=¿ˆ‰≠^=ÈF=r¦ÿ=—[=šc=V©¿=‹€=–8]=¢ Ü=Æ›=´B‹=ÇÊ=ÃI1=®.=¤¥µ=§oj=›øç=§B=¸ä÷=Ä‹3=ÎAC=N!=¨ç[=«¥l=³3=¦Á÷=š=Ç×`=¾É=ÔŽ¹=¶<=¥!=±;«=ÀŽ=¹}=«Íá=zýÔ=œ_ö=¤!«=¦uT=£U’=¾¶=ÃQ=ª0=¶*ÿ=£ò=ŸÃ)=ÎRå=Ò–Ú=³ÝV=¿Qä=Æ»½=”d³=µ*Ç=Ç—À= âÎ=Æõ(=»Ý= = ÐO=¥L—=¢Ê¡=›0,=˜C= Ê=¥vÃ=°ÿ=°Sz=²b˜=¿¹0=ÍF=Ǫ¨=°.Ø=³›i=›þÐ=´=«i€=¢Z€=×m=¡%=á{>“z>m>9L>T–>e‹™>XÒ> Ù©=Í‹f=ª†O=©iç=§,}=©§È=¤#s=ÃÝ$=ñªÑ>#HÛ>4–_><a>JóN>?ÿ¯>è¯=ŸpE=¹•@=®Í=°s©=®ÄÎ=™¾=”†A=™÷{=¦5=™ÑØ=¬[Â=¯y=©u=ÅÆ=®ã:=¬ ×= ™Ì=”¶=œjM=¦]×=§Û =ÃýÕ=»wß=¥ì£=¤Ø#=\Õ=¿ÛO=ËEÞ=¨DÆ=ˆê¦=—˜(=¢¿‚=—Î]=››Æ=œžy=¦q=¥g×=·kÆ=£iX=©˜¡=Çý=ˆ+M=•=¤9=—,5=}­¿=ƒÈi=š!ù=·Ž´=Ëìi=¾ìP=¥sV=”‘=¯sc=Ôt=™l¬=–äÏ=µ=Ì=ŸŸˆ=©-Ã=®ê=‹µþ=”Üb=‹l‹=†8G=‚÷=‘o0=ª}ø= ´H=I=²UÎ=¨Z= è¢=Úd=¹j^=Â×=Ä=ªÏÙ=°S=®xÌ=· Ÿ=·kK=­pÎ=ºLÞ=·Û‘=¸šò=Æe™=¶ªs=®L"=¶-=¥u"=Ÿ»Ê=† ÿ=mù==€åK=šÌ¨=—Ì=œ~ã=‚÷=‰kÖ=¨•=ºAJ=Å^?= Ê&=‘œJ=¢ì=¤\=ÃG´=Ñãú=¿Bù=ÈM=㫆=W¡é=~³=˜y×=²=Š^=²c†=ÁÃÇ=§ÛZ= ôÝ=—8{=†Œ]=‘e=•àÅ=ìb=Ñû =žO=§A`=†i=£É=ªÆà=¡C=ˆfL=‹<=±ï\=º~¬=›zo=«*==£éÈ=¤`R=¨Ux=ŒÌ=œz=°¶Þ=ž-L=œDV=µ×0=·°=¯Yü=¡íH=ˆËÒ=Âð3=½ÇÛ=…Ê£=™°°=¯îÞ=ªb™= MÆ=…© =« u=–)e=“Ñ =´³‘=¶Ï=­õ.=œá#=§ß=™cÓ=—ôº=Ê“Ø=àž=™qñ=›==•C=¥&3=ÈŠ=ŒJ×=ˆ­‰=“Hm= á=”@Ø=²Rù=ºy\=¢Þ­=šôœ=¬r"=ºàb=Âþq=ºÒT=’ˆÏ=œMß= ì¶=½÷==½©=Û -æ=Ós=À‰Ø=Ê‚“=™+B=—[ñ=›¤À=³a =¬§l=”7=Ý=£t^=•-<=˜ì =Déþ=`+õ=•³K=§ªÓ=™=¹CÚ=³sK=£±f=¢lA=bq«=’çÃ=°G¼=¿›h=·ÁT=Šíu=™›I=²Ëx=¦'=ÇÁ=Ë=̬Ú=¸À¢=«°®=¦HÆ=¨`õ=©áÃ=¸M=³9 =®Xê=¬í|=«Õw=¾Ö=¯/à=µÓB=·Á=Äß=ÏÛÍ=É©Þ=Å=ªê=œÏÇ=¦ü­=¥/= JÙ=ä`=°­Â=œ7¤=œ‹Ð=¢ªæ=–ÿÏ=—©7=¦"=…Jn=gÔ6=ªPÙ=­Pð=—dû=žÉ¾=œõÒ=–Á=¨EÀ=¡í‚=—+=©°=˜w =²#=³˜M=¤›=–iæ=†æ=£d«=œÈH=Á¹=Àʺ=§’=™B=v!î=‘Ê’=¥ë(=¡8s=‘,~=€ïÄ=ŽVb=™'§=“îÍ=ì«=ž¸Ý=¢²µ=¡°4=›=¶±E=´Ÿ=®$‰=¸: =Û]Ð=Þï=¯L=‡oü=«²¸=ªOç=Œî8=à-=±FÖ=¯ãÕ=¸†î=±–=ºþJ=´U=¨ö›=ŸbÌ=¾@è=Ão˜=š‡†=ƒ}¯=ŽD=–;Ÿ=ž3Š=¤mì=¢YŽ=®†(=ºÜ¢=™YN=‹Þ=œÜr=¡V=€aì=¨¶=¼ó=¨¶Ì=[#=œ\”=› Ï=”Ó=½6a=Áp“=‡¯•=Ö=”R =µB1=¼{=¾”s=¦Š°=‘Í9=kú=Þ†=kÅ=œ÷=°Ü‚=œso=‡²5=Ž8 =¶¼z=Æjh=Â';=‡—é= ¸2=¿‰]=¯¾ü=¦©=ª¼þ=«›=œÁ+=’æ =‰Žƒ=G Ì=3Ó‡=ˆãª="’=šõ=’MM=Åû=“h=¥‘²=ÈdP=Lj=ÒN˜=ÉÔ=¢F§=¯Ö»=´Ð=Øè=Ë3=®˜ý=–š2=†=±ª‹=¸‚±=·£=« A=™=Ÿa&=¢y¨=…^B=Š¡¨=¡&¨=¥Üû=ªÎ‚=›3 =”ìÒ=\kÕ=uh=•äÌ=³ÔÙ=Éç=‹ú=ˆ=Ii<=’1}=ÔH=À:®=·0G=™ùª=§Z=×o¥=½3s=£Èž=œ,·=›{R=®=ª: =¢°/=¡°Ã= çÖ=½’È=¹ýA=—˜›=­ØÌ=É Ú=²Á=©.•=m%q=‡Ò¶=³3=¡¼=’Ü™=šˆ›=œë„=¦ö= «=‘R˜=ÆQ=Þ{­=¯ W=­[N=¬ =—˜ñ=…R=…×=‹ˆµ=Åå»=Ìã“=ØtM=Òhr=Ï|¡=¡P=£ Ë=°> =´ñ1=¹_¢=±=­„=›–®=—ìî=‘ú0=ŠöU=‡‹=Ÿê4=¡^U=¡0N=wnš=0…e=‘CÊ=£\¼=ËS~=ÄMM=¸å>=¹`¤=¹–Ú=¸“–=¸2‹=¶óƒ=»“A=¿³î=ª&–=¤a=œg=¢ð»=­n¯=¬¬=¬X}=i\=‰Ïâ=£1n=¬8g=³H[=²H¢=² à=²S=½e=ËY==¾Ã»=ºÚ¢=Ûv =ÛE =Úó¹=ß~]=âo›=¬iß=¥¯=ž€Ç=žB…=ž -ª=¸Ö¾=À¨6=Çš=¾!P=®£Å=º?¦=¿ÜÏ=À…ý=Â×y=É&˜=²†M=¡ )=¨þ=®uƒ=ÄÒ‹=¸Ï&=ª¢„=Ñ\=Ú°=¡¥K=°¤š=Ì[=»;"=²\<=ÂF%=Çs1=ÔSl=²ó=˜¸=§Ä=®©=ʤÍ=ªù,=…J=¸Œ=ÉÊÔ=áóð=è,ã=ó1¶=À%[=¦x=¶± =»l#=Æõb=Ð}=ÖèÁ=ôX=ðf³=Í÷A=ÁÎQ=´ûb=Èx»=ÍZ==Ìמ=Ö+Ñ=ãü;=Ý\Ù=Ûãë> W5>Òt>A>Çí?¦Ý?ûA?îÜ? Æ? ?Á.?n ?Ž?s?¬?ã·?€•ø?‰Õ?GT?dh?†¶û?ˆ*Ù?ˆ»(?ˆÜ€?ˆ¥>?ˆL?ƒ1`?€‚`?m¶~?P¡?­V?©È>ÿá½?=)?ó>>þð¨>ü¿>ù©P>çT>ã‚h>à*Ê>›èó>êŒ=Ï9t=³_=ÇöV=ј½=ß ,=Íÿ=ǘ<=Æà–=ÁpM=¸M=¨ó -=¡¦É=¨}Ý=°5¼=ÀˆE=ÀÁT=ÀÕ=Ïœa=».ò=‚¨ø=%b=™vv= ~H=¤t€=°‚=¸¨±=¿¤¯=±¦¡=®"·=¨ô=Ÿž¹=—¦Ž=·0g=¾Öë=Åso=Ááu=½²D=ŒÄ?=‚0y=n(=œŽë=­Sc=Ñ®€=Ø–x=®[2=ž˜‰=ˆIY=žçj=¥Q^=ˆ¹Ü=\=¾/h=­þÎ=§r=§óz=¢‹=™e=¨ÆÖ=¯Ng=ž©/=¡U =¦ù=ª€ =¬ºö=‡É=•‡-=´r=®Ht=«>=œ˜Z=™mä=“³|=«Õª=¹ `=±*L=¨m‚=““Ô=’Œ=‘¼{=˜µn=›Bi= ‘Ò=©qç=®Ç<=µÀž=§p =ƒ(é=šE%=¨2o=Çõ=¸/=˜ºŸ=˜5‡=˜@=ŸôX=“"%=fþ'==Ÿšô=¦ÉQ=¦ˆ=¥úþ=¡K£=ž—T=Š%|=²ø=žÙ”=š -Q=—\†=Ÿs=¬9ˆ=Ê”=¤yW=í+=ž— =¦é=µµ=°5õ=­÷z=§øi=§–-=§”£=¢qa=Ÿ–Ð=x =Že¤=¯Y‚=©ë=¦\œ=‚çN=™M@=½Â€=­Üh=¦f]=˜Á…=§d0=½’=‹Ö-=yGþ=‰¨=¦wñ=ËæV=£×l=›ÄŸ=´×ñ=®)ª=¦g‚=¥÷c=¤ñ¥=Ÿ_„=ª^Ç=µ—{=½ß=¹2z=‰¤=•‘ã=Ÿ ö=²”­=´‘=³Õ„=³úí=³»ó=³Zå=´ÿÛ=¹=µ½=³/Ÿ=¤D=£õÑ=£ñv=©2$=ªÿm=”&w=œBˆ=ª°=”Ü4=Ž²‡=©_R=—@ã=|˜=ž¥Ò=¢Ý–=y˜ñ=‘}s=¨›=²úo=«<Ê=yI=›Po=¶=Ç´?=ÄG=¯ÍV=–.¨=„¬À=„_þ=•tý=¼ü=¥]=™¤|=®áò=¬Ý:=¨ÿä=²q=µ"Ì=¨9I=«-J=¯á=³ÉE=´J¿=¯“=¹ëŒ=ÄIN=ž›]=¡-§=¼ÍD=Ÿ‹•=Šóü=Ô7==κý=·uñ=¤,ò=šUq=”39=“Q§=’w=¢@=¨SÅ=¯7•=¯‰v=¯ª¯=®úL=­Lí=§À=¦?ç=¥ö=§!]=¦½¹=¦J„=¦ 3=¦l=ºÂ=­„Ö=—@ñ=»Â=ÈMm=Æ´<=ÐOw=ÛBÕ=œÐ©=‘Ww=–¶á=‘ºÑ=ŽT¨=œá=¬¼=Ò/=É¢}=Ä‹=¶Ù´=¿?ƒ=Ëù=‘ÄÏ=‰9Ç=Ä[d=¶OÅ=¨’;=ïy?>> î°>§È>À0=íi8=ä'’=Ö9!=à$T=åËÉ=÷Æ =êŠc=Û¿ß=´ÁD=®Gy=³Z7=®‡.=«c˜=ëÊ=öbë> ‰=ç=Ü=ØùÄ=Ó)M=ÌÏó=Å9 =žû4=˜?=µ=¬‡3=·³˜=Ä1=¹ÆÖ=£ =žTm=žÊ—=·_ˆ=¨,=–" =¬­ =²>k=¶Ú¾=º±?=½9=©¿—=«†í=¯æ=½²™=Á¯\=¶y=¹«=½G=¬à=¯úO=ÃÃX=³ºä=ª =·ÜV=¸´”=º=§¾=¥‘š=½wÞ=¶˜ƒ=°ˆ¡=Â|³=½Ýb=¯P=¢s•=ž=µõ·=¶$®=¶Y¼=¥À”=¤ 1=©Æ=Ç$N=Ú4=¸=j=¹H9=»Û“=±ª±=©)4=‹â=¢ž=¶á=£’r=¨=µˆ=¬3Û=ªwÞ=¡ù=Éj-=Ðà=¹Ü=±ÀG=§(Ü=§P=§= v=ªÞ$=¹›=­õ=­`‚=·`–=«u=¢È›=‡áE=‘‰Ë=¡Á™=«©Â=­†„=¨]=•õ3=‡qc= Ú=Ÿ&#=›6=ŸŠ[=¤„G=»Ò=­D= ÿy=³GÕ=°‰»=§væ=¢Ò=¥.w=Çb¶=ÁDÄ=»dB=©¯’=­ƒÖ=ºðø=²Ü=«œÁ=“»-=5Ü=¦ýD=¡Y =ž½J=šK =§Â =±:9=Ô?O=ãË =ôà>+i>/@i>*pb>==äº6=ÍÕx=ÁNÐ=´g=—ûˆ=œ¥=¯£=ŠËC=q²=¨u=¿#½=ÕÊ>#>ð>…t> ôü>kG=¡”Ÿ=—Ñ=¥P=‡ê¥=Îé=š:#=¨B¢=¯$=ºÐ=½ê¡=Àg6=®)k=²Š>=»ŸÎ=§fr=¦!¯=º =ºPs=º¾Þ=¦âü=¡jÞ=™ŽB=™R=¢#|=À¨=Ñô=Ù¾¬=ÁJ5=£‡Ú=€­ü=­MQ=³è’=³Tþ=¡À=œ¼ =²¬=¥LÅ=˜ë.=Ÿ¬…=›´þ=’0Ô=¥œ€=©ª—=žè=±6„=¾C=˜ ¡=T=¤t3=¨úc=¦ÄË=¦ã=ü=žT|=¤q_=°çB=¾ ä=•ŠÉ=¡•§=ÃÝ{=µ›ˆ=´ Å=àè=¿ž©=¼¨ó=°wÁ=°ÿ¯=±ql=°•==­&ú=¤ã=Ÿè*=œcä=ŠÜ·=”’´=b¯=´òY=¯b‹=£‰ï=‹$»=4à=°Ò=±;=°*=—ÜK=¡ua=¬+Ó=ÃQ=ȾT=Ídq=ÈÒo=Å¡:=Â-b=¶ÝÌ=¯,=ª=¶æ=Äft=£`Â=ªY=Æ õ=½p=¹éè=¹…a=À¿.=Æ»Ò=˜sÿ=©Õ=¿”A=’XÂ=Œ—w=Ëò=¨++=²Î÷=¿=¬ÿå=Ÿ_s=“!Ã=¡› =´*=®kA=®hM=´‹=ª¿=©Qä=º(Í=¦E5=˜WÞ=Ëäê=Ș*=Äs=¸)p=¶Ãg=¶L+=«×V=¬A=¼D==³Öÿ=¬ˆþ=š½= ÿŸ=§™Ä=‰îR=¶Y= †)=¥0q=¥S¼=¡%„=º6µ=ÅÂq=¹t=¤_=“–=¿è=¿Þ=¿ä=À÷Á=Á’'=ÁvO=·¾U=²ôu=®¶=ªðc=¨Pµ=¯›=¨u=¢Q=–Mi= ðü=µL=¥ˆ!=°’•=Ü£#=¼ˆe=«¡â=› =ªHÖ=µÚa=®@=¥'ü=œV=ÑÒÇ=Ð=ÃùT=¿=ºX3=°Ø¢=¬ Ë=§{õ=–…•=©œˆ=µØ -=ª^§=£­0=žða=ªÍ=­_=±} -=¼F»=³M‰=™k=è’= ¸=´+=¯ï=­¾r=¤9º=®;Ó=¸¢„=Å5š=Æ2¡=Ç&¦=»™é=»ð6=À“=»Óo=·Š8=«pg=¦–þ=£:H=ži*=šÓ8=—=Åà–=¿‘!=¸¾¸=¸ÿ½=½§=Å6=®Ÿ‘=¥î„=—Fø=ƒ$&=‡à3=°äQ=¤^=›¢¦=–:Ã=ö¸=£ô“=¶·8=° -x=©¾à=¯™=·™¸=ây=Ú˜=Ú~=Еf=é¥T=á£y=·=¯ª=±,ž=Ý…=γ=À¢n=©-Ë=È!—=ä¶ø=êšý=àÙ‘=ÖZ=ÄMY=ÇÔa=Ï'4=­ÿý=©œÃ=®«Ú=³©Æ=¶Ë=ºùH=±sÍ=¬t°=¡Ñ=¶XH=Á*“=Ȥw=¸Û=¨5r=°p‡=®09=ªÊÊ=¾Ì=Üqs>2ø=ç}=äk—=äe¹=ضä=Í})=µ»±=«ñÀ=¨‚=¨¿G=Ÿ£=›W<=šÚö=–¬=—´=¨ë -=°"&=¶ww=šÒ =¨…=µGŽ=¡¨A=ªÔ =µù=£Ë2=¶yÔ=×_¢=Ë›_=χg=ÞL§=Ä =ÂEÀ=ÖÁ`=Ì„7=Éjk=ȶû=Òß!=Ò5À=Âp¸=Ï—ï=Òò4=µ@l=«ë5=©Æê=Ç×Ñ=Ø=ã/O>7ò>k>D?=õÃE=üû‰>*F>À > Fà>öC>6|†>9av>9à>.l›>%k;> 9>:½>Ìi>">rJ>tö>’E>ŠÍ>JÕ=öß‚=ëÆ=ïF&>™>9©> -`>ª>4Á>E¤Ó>CC>EuÑ>Iž>^3”>aïd>\ÞÖ>3Î>*F> f> 8‰=æ ?=Á7Ó=¾1ß=¨’~=—Ì®=¸†`=Ã.L=Ì{=ÓÖ*=ÁfS=ªE ="j=©hN=Æž=Œ =‘þæ=`=±Zu=»0=ÊùÇ=žSM=ªœo=½6e=Êr—=ÁÁò=°7–=˜X’=—ôQ=‘‡=¯l=±)"=«Sý=Àv’=Ê$=ͱ¬=Ç^“=½‚:=«˜×=¡‘o=¤o=²(?=Ô´·=Ë”©=±~=°Ý;=«ûY=¢Õñ=´šÁ=®‚3=£H=¤7Ä=«EÔ=¾ý=©hY=›Ê‡=•´º=²² =¥éš=^«=—„…=lÁ=v©ý=Äeá=Ä ó=£°Í=™Üœ=¢’b=¾IÞ=±p‘=®J"=¤5=¦n= xá=\X=À:Ó=À]Õ=¸¨=ªËÎ=¯WŸ=·š=·‡=·Ïk=¸fÁ=½]¯=Á€=Åê-=Édw=¼Võ=²w`=³ =­{Á=¥U=«Ó¼=½@b=Õ¨c=M=–¿v=’è=™ó_=¯Ù=ˆu=ŽÉx=´hn=¤.5=œ)=æô=ÀüÃ=²â’=¥C=¬¸l=š‚â=’*P=¦+c=«äJ=³PÛ=ÝW?=½yx=¶i¿=¸¬s=Ú˜W=Ëia=¢U¯=ÎÍž=Íjá=ÅÅ1=ºr=¹=À8…=º¨·=°×ã=¢^=”Öä=„b@=UT=ˆ- =«Dæ=¿{p=ÎÝ€=»vN=¸¶È=²ó=´ÒS=´Ñ®=£¦!=Œ¿=”HÝ=£9°=°¸=–;æ=ŸÙ==Kö=Î +=ËË1=»•=¬ž=¥oß=žl–=“#õ=›K=¯Õ=´Š2=Ǧó=»´C=µèi=Ì º=²b>=žØ=œ"j=›?ò=“‹b=˜½Ê=´Æc=¥‹=—_‰= s=–)°=™X-=«á÷=­‰=À==Ó;}=¯”þ=®Ñt=³at=Â89=²–=ªW´=»M‚=Å?¨=Í­=ÍhÂ=Êîo=¯Zˆ=¥=À¬=º=³Åû=À…†=·=»N=¹$*=±›Ú=°N=³;=´‚=ÃøÚ=ÓÛ=ÍñN=ï@ê=êÝÛ=Ý€E=Õ)=ïáò=÷ß®=Ñuã>0> -`Ÿ>d >!n>h1>ÆÌ=ü}>ùC> U>€Z=þàð=òcã>û‡=Ûô0=âò©=Üþñ=Ø>“=úŒÕ>,>§ý>#JÃ>¨·>>"=êö»>pa>8§Þ>,+‚>:‘>;ò/>/€> j>ó›>—@=ç(†=µ¢=™%7=Ì'=žòø=¤‘Í=Áö•=Ͻ¼=¶`&=¦%š=¦¬W=3=ªw‚=¼íC=˜ ¥=©CA=±Kb=¢ñ=³’£=ÇQ»=ÁÕx=´ Y=¦m^=›,Ñ=ˆÃ²=›Âˆ=˜…5=”¹=¡æ=£SV=;=ƒ§= Dè=¡%‘=‘Ã=ŸÿŽ=œ =Ž=°À=¥¬Q= ÝK=œ¨–=©ç“=³T=³öÑ=ŠŸñ=§Žá=º- =£cN=®ì{= Äõ=‰'=!=«üÂ=¶mæ=‹=Ã=œÄÏ=œ8Ó=¤”=Ž‹=6Û=¡iê=ª¿6=Ï=rŠ=S"=Ÿ¼å=‡|µ=“4=¬V›=›Â°=¨ú«=©¹=ªb=µ„É=­ðø=’ñ= Jƒ=¯ÍÖ=Â(¬=ŽF=§£±=ª1Ë=¤[H=—;(=žS2=¡A9=Œ<=ºãÃ=ÎÔM=®³=µ$=ÅÂ=¾Ã=Žax=˜ õ=“S™=¥€A=Ž=‰›¸=iB=«Œí=  -=K…=œ&á=™ã7=©(ë=³ó=³¹H=¡óª=£4À=³ÛI=Ï„O=¸¡Ü=°Œ‡=¿–\=”‹2=§æ=½fŠ=ÇËŽ=©¥ÿ=Ÿö¼=œ=½rc=¯Zb=.Æ=žŠÇ=ŸpP=«/Ý=­¦Ô=«ž‚=}W=‹_=®ü=Æ œ=¥H=ªFë=ÁK%=Ž‡b=’)=¢ÏÐ=ÂØ=ÃBJ=Ë´=µk=»¦=̬j=ÏÿP=°@Î=–”=²É=³@Ý=äu7=¶3$=š(=½Q¾=¼Yþ=±P»=“Šd=sÂF=–6Ñ=óÏ=”îÉ=š -”=ªw=¦†˜=ƒ=¼ü=dÙâ=„–u=ÁJ=]Í=‡p=¡6}=ÖW+=ÁãÂ=¹bt=×ÒÄ=¸²x=±¿³=¬pâ=´¡4=¶XÇ=œ®£=¨j=®=em"=}=‚Ós=õÌ=˜!=¤ê=¥Ò=³àö=©ú=“$=‡–b=‹9Ï=¥‘R=Ç[m=Äÿ=²ú)=¨Ñ¸=É&#=ÃN=¢pÐ=ź -=’ÂË=´Ü9=§ï=VÓ=¥© =·2ä=Ɇ=áʈ=×Ѹ=ú®’>"‚=æù,=š4N=‹B =¢6=¶Të=Ítº=Þð=ùV˜>É=ù =û?í=ó‘ =Ó¶=¦+–=¤¬ -=±Þ†=˜1 =‹ÒA=™“;=¬‡þ=»&ä=°ÿ=—{=f6í=‡ën=“[=–Æ*=x =žx§=ºIQ=¯/ =«³5=«NÚ=–€˜=}½Ü=¿â=³l~=ž`ø=”/Ä=€Õð=’Æë=“­=—£Ú=³´o=®Ùq=µMÇ=Ó¶&=±ë=œÎ=Œ1=ƒ ø=Ç4ï=ÎeÔ=¶¶Ò=ƒRŒ=–,a=¡ ž=§oø=´qv=Ör²=³2=†‰=Ñzâ=ÞÙÐ=¬‘=‘ (=¡G5=Ÿ»”=”IP=¨ÊÅ=˜=ø=Ÿ>=©Dv= ý9=VÂ=’=– ž=¶âÊ=¨EÂ=ŠO,=r˜¦=eZN=Œz\=“ÏÐ=£:t=§q÷=Ư=Äñ=¹V„=ŸŸÔ=Ç¢=¾Ï’=¥lâ=!×=¨“=‡-=€ë=¢ ß=Zå=÷-=±š=À‘¥=™Y¹=¼1{=ÈqV=§×U=ä¢=Ž(=¹¼e=¾ =žK=?â=„:=‹O=²$X=®õk=³&Ò=·9“=©Ù =›vD=•O|=·‡„=¾>q=¬žÎ=¯/=»ê?=ê½n>xÅ>2Œ>“ž=ôe.=Øü=Êcc=ÂÊ=•<=rѬ=o3Š=ñ£=_¨§=™4Š=¡ÑŒ=³Œ=ß`=åès=³œÛ=£Ì«=çŸZ> –Ž>¹>ræ=èù¸=¹¶^=‰ØÖ=‚Ly=®¸…=ȹ³=Ë`é=À´á=œ^Ô=ÑT<=Õüd=Ö?X=°îÄ=§ºf=®Z§=žjT=ŠÔ=š=ý= ÷è=²•=±Êm=”š=£¶=ÏД=Ëш=ªëP=µ{=Ä›+=Æ¥c=£~B=°x1=»ö·=¬^=¡g„=« Ë=¥'`=‹×=«›=‰hÜ=œ".=­†‰=ÀÚG=ŸŒH=Ó¥=«d¶=¨1=•œ¦=¡“=¬„ì=Ä°¡=žåO=§zû=ÏË=Ì€f=«Í=­=«÷Î=¸ ƒ=¤oV=}å;=“}É=šâ=dþ=˜fò=š8ô=­V=ÇD¤=¶n=›=£þo=¶7µ=·L=­Cª=>=Š2ë=Ž¨=—Cå=°v»=®Ø0=É=®:Ö=¼~/=”a=d÷Ê=™aK=ÁÿV=­áe=³Ðý=«îÒ=¥c=·I=±¨Ê=¥°¶=zÞÊ=“ÐU=ÑC‚= ‰=e =ò2=fºe=sÂ=n"Î=¬m—=Ïžv=Å9=½üë=¤C°=Œ±Ê=”7¡=~5=V·\=µTÇ=­îM=˜@ú=ŒŠB=£~=”ÿ=ˆ ý=–[=qÀ=“`g=­ðÜ=©Að=œÙE=—K]=›óø=ºÃ =¿ñ–=ª¿ë=° Å=±÷=Ž¹Ž=Žà=½&=Ê:È=É…=¸ˆá=¬Àð=¡ Œ=¯Æ’=¹»F=ªòÝ=Â=¡‚N=ŸÚ¨=²m=µÖ~=—ïÎ=žÞ -=à}=ƒý=†ú=l|=Ž¨y=ÇÀ½=ÔÕ–=µhÈ=šW©=„§@=™æÌ=±Gå=£s==§5=ª ƒ=¼=ïW=È(=Ä=èô/=ç—=² r=¬S3=“µ=¡ÜÒ=•¶*=‡W‚=¢Œp=¹gÔ=Ã9=Á¢©=“OB=£ r=œoÀ=•Ý=™u=• ã=£i]=žÈñ=ŸV=‰ø#=“œ.=§Lw=¡½=?s2=k²]=¼ãô=­*ë=Ÿ}$=”i= *Ô=Ñ P=¹Äå=ŠÚì= 9=©Ô=«´=©B=Â9ý=Û¡=ÏÌe=½õ=šVo=ŠÓ»=ˆA=ª>1=§c=¢•c=§ =˜\=§Æ‚=ªwò=§…=¨ÖT=¶×ó=£BQ=¢°À=eN=Xf=¢<>=£¼k=ĈW=¿îà=Ç¿c=®¶ÿ=­ -=½8I=»}]=¬µy=µDÍ=ŠR=›HÅ=µâ+=ǽ =»Ë¦=»·j=¼¡î=½Õ=“@æ=“Ï=€=†üø=„a’=†jÀ=¶Ó"=·.Í=ãÍ=¬Û¾=»?h=†Uú=‰b6=—@=šm­=ªaº=ÂÉÞ=ÅýZ=ŠwU=‚Q=±Æ=œ ‡=–4F=ª@ÿ=±Ýø=§=©t¢=›ãÑ=…Î[=1(:=CAø=m3I=„äd=…™â=‡ÁØ=’:)=™¢b=¼2â=ÏYÂ=°‡¨=®r´=½¯à=¸øC=©R=¼ã=Ñš=ºÔ§=²’ =žk®=™1«=‰ˆº=„«O=~âÛ=}=ä=||r=‡ç&=‡Á¹=‡E=ŸÂ=¹4 =¸cû=¸ !=ÔÍ=Íäõ=·O=»d}=¿â—=Ê(=w3c=«Eä=°…A=¿„=“Õ=N! =™º£=«I­= ðï=™Çq=„s=ƒ¯Õ=‚ÎÇ= 0Ë=©~Ú=žÊS=¡uû=¨ñ¼=£·&=ŸP=ºe=-Ý=ºàÝ=¯k_=“ýÿ=ž´ý=§|Ù=ŸZ5=ùI=¥($=®.=Á`=Æ[¼=Ê-D=¹–º=·Uv=¿jŽ=»Ú!=µ==¤q=™îc=rŒO=lì={)å=ˆ„!=˜ìø=˜”ã=˜qš=±äI=©Îg=x£U= ó™=ÎR®=º˜3=²|»=Ãû\=³K©=w3Š=ŸŠä=ÃÆý=§§=Ÿ:=¯æ<=¢=‚]=‚%=½è=—n1=œ3=›¾q=­Ù*=Ï»<=´7C=£”=£ R=¡ÝF=š÷>=©#5=½2 =½<Ø=½F¬=‚Ã+=¼=ˆ5ì=®Øè=× ˆ=µD=«s}=Äuû=Ĉ+=Ä`£=Èðt=Ì»µ=¾\¾=ºPo=±ÈÅ=«Ï= w/=±:8=ºB=Áš=»±!=Ÿr×=ƒÚ=E°’=•xç=§rI=ž0"=§«Á=¿Àb=ĽX=È„=º0Ð=¶›u=®8=·|Œ=Ç‘=ÝЗ=é}Ù=¸Û=¼¦d=רN=Ã=­<’=‡/={eA=ÎH¥=»ýh=“­f=“‚=“”<=šxÍ=Ÿ”=µê=±à·=¬û\=±‰„=³äl=«ÐÑ=²Æ=Ä.[=¶„!=«(p=áœõ=éìL=úˆ=°®Í=‘—x=–ÐK=™öU=¹·=·ši=©£´=²ä:=»;š=®mv=­Ž=ÓuÖ=Çû^=²¯©=­ƒÐ=ªFÖ=ª‡u=±×.=Ìp[=¿¤E=²|Y=ùq;> -·=±Žà=¿‹Û=Ú ã=Ú'ä=ÙËÇ=àŒ‹=ݨZ=Ðz+=Ì# =ÇÊe=®JN=§(v=¦4³=·G²=Öf¤=Û@=ÞO=ûÞ¸=üd!=öji> º>ÒÃ?w?›°|?šX?™@=?˜c?˜å—?™R×?˜·?šEï?ž¬Î?¥ñ£?¬*ã@!v^@)}?ç^,@ì@$ÙÊ@' þ@(À@'ìB@'"@%l@#@­@"¦@ÍE@ö ?“sÝ?“Š@?“€=?ÚÅ??‘)?Ù?Ü$?¥Î?ÿ?‚P•?V¨ô>œÜ>SE¦=ü0v=û“Ë=ê,'=‡>h=¥ I=ÌÇ¿=°Zø=¨<Ã=ÅÒ„=¯óQ=†óÒ= i=­Ïõ=ɼg=À¤/=ž$=¢‚(=¥Ê)=Ÿ1ã=žÒ­=¤Cg=¡ý=œMÊ=¢’`=£D=£2{=¥Ï\=«k=¥¸I=£D=ª(=ª3à=ª’=®ª€=±µ“=±Œu=° 4=°Ÿø=¢\é=‘ÿŸ=—9=˜ÞÓ=Š„ø=›ã–=¶õÇ=±:d=¯ =wÊ=ŠÏ=®¿ó=´5ï=¶Ní=¼$ï=°Þ¢=‰q<=¥ -=¼Ç¾=¶7M=¯ ã=æ=‰¤=$=™Z =œßd=©T=©Ã‹=¾$=‹=žhp=¤¡=¤µ=Ý={Ï=’#=€ôS=(œ=©™²=°Uù=º|»=‘íÁ=‡Íd=²F‡=µìt=¹š"=žÙ=–òZ=Êc=½É =ªï–=¶ l=¸Ož=-=˜ý=«êÇ=µï=¹t'=Šë7=—70=®BL=™=ŽË=†¡}=“0f=ªa=­Ç=®áU=Âߨ=±ó?=³=£­=«%a=¤Oº=­´õ=¿º.=£Üº=•k¤=°žˆ=±£?=°¶R=¢ÚÃ=œ)3=¶Èã=­©ˆ=›È=˜Læ=•dx=¢mƒ=›„=Öµ=­ˆ…=½Â#=¾†®=­?â=Œ ¯=–mú=šŽŠ=š²è=žþš=¨µ=žo=šû«=®"›=¦"s=š¤=¤¸/=¨ÈÕ=¡®=›§ú=’]€=Š8=†Îœ=®šx=®d=®'=¸P=»€“=´ÿ=¬™= ,F=›TÑ=˜²=˜û(=¢·ï=®ì=§½J=£SÁ=’ ‹=Ÿ =¬Äð=·ÂÍ=¹ÄW=¹TI=À4%=ÆÛ‹=°ì=©´=¾q=š<=—Ð=¯U†=°j=«(C=—)7=‰=‹¨=²m=—þK=£—¹=«vR=‹M=•‘ƒ=¬Žÿ=¡Þ=žz=Ÿp=ž«¤=žá=°¤=¹0,=«¦Á=¥K(=?¹=žX=›Gú=‚þx=—ñh=²+Í=— =‘fô=–ƒY=ãž=‰­=²86=¹ u=¹*[=¥â³=—=…[­=•ó=Æ®@=²!Ÿ=¥ O=±»=²jÙ=²‰·=©™ =¤à°=žaO=žp=ž ^=“£ø=± =—Ú= ^ã=«'B=ªè=¦ñ9=-N=“ÒÐ=—N=¨FÆ=®d"=¸`;=Ã>F=˪…=·åH=»"£=ÄÂâ=¡ Ç=&¶=œËE=¥^Ä=±Zg=§N -=¥ˆË=±2 =—ši=x3=´ó“=¿\6=¾ê(=£¤ë=Ã=¶V´=¬¢=uè=v=¥®Š=ÌÐL=ª{=j‘É=¬Œ=¹À=vŸ=†0=w¯¤=˜Š6=Ÿ«¶=¥7‰=  =Ö0=}V=‡R=ž‚Ô=°´=¸cù=˜/‚=”Ð=‘JW=‡=ŠpY=¬¨9=©=¦x=³{œ=¼Ô+=Õ¥=®ñÝ=™°=ÀãÖ=¬óå=ŠÛ²=•‘y=•é=ƒ›†=›eì=³¹=¡á9=¥ÞÓ=¿õÜ=»Ð<=¸÷ =o@=ŒÜ=¸œo=®ÿ=¦#n=x¦h=…ò=H=¡›K=¦»=±Lˆ=±ax=±4×=wµ=ŸY,=£[£=°àä=´Ãø=©V÷=¯`æ=¶=¯ýŠ=¤ðã=‡hz=\T=“ö=§Í¤=£8d=š–=•=•ÞX=¦{ƒ=‹”V=dˆï=±Ž=¹Ç=¹3Î=ÅìÂ=Ê{=…œq=’µN=¥š=›:7=—D7=’p=•óC=˜8¨=t&!=‡JÙ=¥á}=ªs)=­g=¸èE= sÙ=…l†=¡V[=¢ïˆ=™ï=µúU=Æ"Ó=¬DR=±-±=¸¾©=³_r=µÊ·=Ê\$=µ×=¤X¬=‹6=—”Ä=°Å,=¢Ã;=Èö=ye=–‘]=u=³¢+=°5[=3u=,=*-=¢å=±%n=Âs=³8ï=°@ˆ=¯ó°=¬+=©žÜ=–z¤=£T=¶L˜=‚¯˜=x¡ª=•×€=¨‘ã=µÃ\=ÐÜ=–£=¢‡v=§ó=¤¯€=-±=šýè=£^¹=œ©=¥ª¢=¶z½=šg=‘j„=—¾=«¶â=½[v=™†=–¤N=–Ÿ&=IP=,§=£» =™2=ñ¼=›ô=’Aî=yuÍ=Š©Œ=ŽOµ=ƒŒï=“½b=¢O=Å=Öß=»Õo=’u%=„²p=×=š -µ=¢ýª=®>È=³Uœ=»ãA=Àÿ=Ą́=»½#=»ò½=¼3Ä=©ÏÛ=¶l/>pN=ùí.=Ø«è=­üð=›v-=Šh=›Z=©ç˜=£„…=·&r=ÕÛý=ÑN,=Ͼh=Ïãã=Ü”=Þlg=–{Í=™ý~=ž‰=®˜Ü=®P=ª%=Áýé=›=£ª8=§’=©6œ=£*‚=¨+Ñ=¯Þ =°pô=©E)=–«=ºHr=Ér=½§€=Á¼A=Ä6:=žÆ9=—ÿ =‘‰q=°Æ\=²SÀ=¤dL=±º²=·è©=ªn¦=ª!û=ªÏ.=tÔ£=˜†=ÑÝ=­Ýö=¡ÔY=—G=›?=Ÿ=£Í«= =é•=£õ=«!=·’q=Æ=ȱ0=Äš=š„+=Šå}=ÄŽæ=¯>’=žäÙ=Ä-=¸¾=¤×=´«è=²á¹=¤‘á=±óÚ=¶>€=ãè=¡J·=¤d@=–é=˜æ=—˜­=—d¸=“ã =Šõ±=™ê=¢2Ã=¾ÿ=²,=ªý¯=²Ù=³YÆ=²³ù=ŠÊœ=”­ª=³É=¸%!=ºdÝ=Áª=©Å=­ =Á,´=«Sa=šoA=ŽëÌ=’ˆ =™˜Z=‚¬x=…cE=Œn+=º=Ó¼r=ô.b>üe>­A> 5´>´®=ùfì=ªWm=§êH=« =¡f¹=˜×=… r=¤Ê=³·)=¿Ám=² -i=¥1E=™`X=‰~Ø=qsô=¨Žw=§I~=ŸÔ›=¶ž=ÃÿŒ=ç ³=þwŒ>8¦=àM´=ÄÓ=´˜=¬E=¯ £=²š¼=îd=ˆ“î=……=ªÆ =¯òª=­ µ=Ñš=Уã=®‚=˜Y=A=¨¶=¦‡$=¡0È=´ê-=£Á‡=)=¡:A=¢Zò=£Q¹=„LŒ=‚¶= =œˆÚ=¡Šl=–R=LÏ=›=£KÀ=´ö(=ÅG@=¸ø=ª¹=cè=©–C=¦æ*=ÿÀ=]~=B=¥p£=£ï®=¤æZ=’5o=ž2ž=¨jV=¥öO=«á{=´¸+=§Y‡= ò.=™5`=°í=®ƒ1= ¦1=«ãe=­C©=§$’=¨z$=¤ = @=©lû=®-m=®H“= Á&=˜5F=Œ&=—¾=ž~Z=Œü=›ç:=§ Þ=²õf=´`Ð=®‘=¹=±c¢=¡ q=Ÿp6=¥ÅE=®£=¨¦ª=¢i=’à -=¶­ñ=â;= K›=¡I‰= jÞ=Ÿƒ¾=¢·±=¦ %=ŒÆ¥=š¦À=¬¸ø=¦Æ=¬ðu=´!Œ=Ž³ =‘ùš= zÓ=€±=€ñ£=š¯a=z= g=®í=¨äf=§yõ=¡ñ=¡Äa=ž>ü=™ò¥=®6µ=¹œ -=Âña=«ü=”=“r€=•#€=š™¶=¡ q= D'=Ÿf=„h°=«£=Ÿ=ž‡l=žŽ%=žä«=“˜= â\=³p¸=¶ Ê=µ›Û=¦=²^ =°‹M=‘îÃ=™T=¦Û@=­–=¤Ã=¡=ŸÑX=µaŠ=»U•=™ÉÖ=šûû=Ÿ¿z=­Á–=—pã=‹ =|äô=¨•i=ÎW=¯Æ=¨Èá=§ÉÁ=¨z=ªƒõ=­eÝ=‚iñ=ŽL¹=¢GÓ=ž”e=’«m=s²=‚O?=‡:-=›¹=®ú-=¥‹ü=”У=¢‹|=˜‹®=†°ã=ŒÂ=’íš=¢"Ž=³ƒª=®f]=›|â=¤æ =ªx=¢þ=ª-o=­‡=¢d~=›Oò=¡Rµ=°mô=«C»=žGû=ªr=IZ=“_=–Y= = ”¢=²~&=—Jæ=-=Ÿm=œ I=•·À=ŒØ’=•‡Í=ž\ô=–]=•Ê=šO=‘j„=²f=Ápk=£ú=¨Éj=µô¤=³´S=œ”R=žµ:=¹ñz=kÝ=2Þ^=•PÅ= µn==ÊM=šXm=­9j=«Í¦=±¥·=³n=šð=¨òU=¡j´=—m×=±iý=ò=ÕšJ=¯³Z=—g·=¯³j=ž¾°=™Ž7=“ %=‡²Ë=Šì‰=™žû=£˜ž=¡o=’ø=šm=¾“=¡™,=¢¸Å=©o}=¾¸=º%B=¯-Z=›Á­=  =­œ=©=Žôz={ºç=}Z\= R3=ž)À=”mg=À«=Œ…Â=}7‚=¶aÝ=©‡Ù=b&=Žˆ²=¥9=›ýæ=œ_©=œ¡Ì=ã=‘Ô=ÔR=ªØ¶=¯'Ñ=°ï=¦#ü=§¤}=@r=žÕ6=¥)=©4c=¡¸)=R/=”ÂA=™®=¬Fî=«Ô2=¢åñ=«Pö=¢‡È=“=‰p=Ÿß=«<=˜È=§j…=¬/#=¸=žÜ=Ÿä³= ,Ö=¦Ž£= Ž=‘•"=‘¢9=žá©=¯A¥ \ No newline at end of file diff --git a/templates/fluxed_sky_800U.fits b/templates/fluxed_sky_800U.fits deleted file mode 100644 index 13b014a61..000000000 --- a/templates/fluxed_sky_800U.fits +++ /dev/null @@ -1,31 +0,0 @@ -SIMPLE = T / Standard FITS format: NOST 100-2.0 BITPIX = -32 / No. of bits per pixel NAXIS = 1 / No. of axes in image NAXIS1 = 2443 / No. of pixels EXTEND = T / FITS extension may be present BLOCKED = T / FITS file may be blocked COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 CRPIX1 = -11573. / Reference pixel CRVAL1 = 7961.26968 / Coordinate at reference pixel CDELT1 = 0.04914 / Coordinate increment per pixel CTYPE1 = 'WAVELENGTH ' / Units of coordinate BUNIT = 'FLUX ' / Units of data values DATAMAX = 3.05419397354 / Maximum data value DATAMIN = -0.0364606752992 / Minimum data value ORIGIN = 'ESO-MIDAS' / Written by MIDAS DATE = '2003-10-22T13:54:37' / [UTC] Date of writing FILENAME= 'ex_scaled.bdf' / Original file base-name MIDASFTP= 'IMAGE ' / MIDAS File Type OBJECT = 'MERGED_SKY1_REDU' / MIDAS desc.: IDENT(1) RA = 17.090287 / MIDAS desc.: O_POS(1) DEC = 6.39136 / MIDAS desc.: O_POS(2) EQUINOX = 2000. / MIDAS desc.: O_POS(3) DATE-OBS= '2003-09-22' / MIDAS desc.: O_TIME(1) MJD-OBS = 52904.1219865 / MIDAS desc.: O_TIME(4) TM-START= 10539.6310083 / MIDAS desc.: O_TIME(5) EXPTIME = 3300.0002 / MIDAS desc.: O_TIME(7) COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 INSTRUME= 'UVES ' / MIDAS desc.: INSTRUME(1) OBSERVER= 'UNKNOWN ' / MIDAS desc.: OBSERVER(1) TELESCOP= 'ESO-VLT-U2' / MIDAS desc.: TELESCOP(1) RADECSYS= 'FK5 ' / MIDAS desc.: RADECSYS(1) HISTORY COMPUTE/IMAG scaled = sky_800U_all.fits/7.15*0.071 \HISTORY EXTRACT/IMAG ex_scaled.bdf = scaled [8530,1:8650,1] \HISTORY PI-COI = 'UNKNOWN ' / PI-COI name. LST = 80171.505 / 22:16:11.505 LST at start (sec) UTC = 10533. / 02:55:33.000 UTC at start (sec) CHECKSUM= 'QMIWQJHUQJHUQJHU' / ASCII 1's complement checksum DATAMD5 = 'bface65be4555bab8070a62d39d088c0' / data MD5 signature PIPEFILE= 'r.UVES.2003-09-22T02:55:39.631_0023.fits' / Filename of data product HIERARCH ESO OBS DID = 'ESO-VLT-DIC.OBS-1.7' / OBS Dictionary HIERARCH ESO OBS OBSERVER = 'UNKNOWN ' / Observer Name HIERARCH ESO OBS EXECTIME = 10515 / Expected execution time HIERARCH ESO OBS PI-COI NAME = 'UNKNOWN ' / PI-COI name HIERARCH ESO OBS PI-COI ID = 0 / ESO internal PI-COI ID HIERARCH ESO OBS TARG NAME = 'Q-0105+061' / OB target name HIERARCH ESO OBS GRP = '0 ' / linked blocks HIERARCH ESO OBS NAME = 'q0105 ' / OB name HIERARCH ESO OBS ID = 200132281 / Observation block ID HIERARCH ESO OBS PROG ID = '71.B-0106(B)' / ESO program identification HIERARCH ESO OBS START = '2003-09-22T02:49:39' / OB start time HIERARCH ESO OBS TPLNO = 2 / Template number within OB HIERARCH ESO TPL DID = 'ESO-VLT-DIC.TPL-1.4' / Data dictionary for TPL HIERARCH ESO TPL ID = 'UVES_dic2_obs_expfree' / Template signature ID HIERARCH ESO TPL NAME = 'Dic2 Free Observation' / Template name HIERARCH ESO TPL PRESEQ= 'UVES_dic_obs.seq' / Sequencer script HIERARCH ESO TPL START = '2003-09-22T02:54:16' / TPL start time HIERARCH ESO TPL VERSION = '@(#) $Revision: 2.41 $' / Version of the templHIERARCH ESO TPL NEXP = 5 / Number of exposures within templat HIERARCH ESO TPL EXPNO = 1 / Exposure number within template HIERARCH ESO DPR TECH = 'ECHELLE ' / Observation technique HIERARCH ESO DPR TYPE = 'OBJECT,POINT' / Observation type HIERARCH ESO DPR CATG = 'SCIENCE ' / Observation category HIERARCH ESO TEL DID = 'ESO-VLT-DIC.TCS' / Data dictionary for TEL HIERARCH ESO TEL ID = 'v 1.490 ' / TCS version number HIERARCH ESO TEL DATE = '2003-09-17T17:33:05.000' / TCS installation date HIERARCH ESO TEL ALT = 37.832 / Alt angle at start (deg) HIERARCH ESO TEL AZ = 239.25 / Az angle at start (deg) S=0,W=90 HIERARCH ESO TEL GEOELEV = 2648. / Elevation above sea level (m) HIERARCH ESO TEL GEOLAT= -24.6254 / Tel geo latitute (+=North) (deg) HIERARCH ESO TEL GEOLON= -70.403 / Tel geo longitude (+=East) (deg) HIERARCH ESO TEL OPER = 'I, Condor' / Telescope Operator HIERARCH ESO TEL FOCU ID = 'NB ' / Telescope focus station ID HIERARCH ESO TEL FOCU LEN = 120. / Focal length (m) HIERARCH ESO TEL FOCU SCALE = 1.718 / Focal scale (arcsec/mm) HIERARCH ESO TEL FOCU VALUE = -30.093 / M2 setting (mm) HIERARCH ESO TEL PARANG START = -128.174 / Parallactic angle at start (deg) HIERARCH ESO TEL AIRM START = 1.628 / Airmass at start HIERARCH ESO TEL AMBI FWHM START = 0.87 / Observatory Seeing queriedHIERARCH ESO TEL AMBI PRES START = 744.07 / Observatory ambient air prHIERARCH ESO TEL AMBI WINDSP = 8.1 / Observatory ambient wind speed queHIERARCH ESO TEL AMBI WINDDIR = 1. / Observatory ambient wind directio HIERARCH ESO TEL AMBI RHUM = 10. / Observatory ambient relative humi HIERARCH ESO TEL AMBI TEMP = 12.94 / Observatory ambient temperature quHIERARCH ESO TEL MOON RA = 131.062615 / 08:44:15.0 RA (J2000) (deg) HIERARCH ESO TEL MOON DEC = 23.36085 / 23:21:39.0 DEC (J2000) (deg) HIERARCH ESO TEL TH M1 TEMP = 13.11 / M1 superficial temperature HIERARCH ESO TEL TRAK STATUS = 'NORMAL ' / Tracking status HIERARCH ESO TEL DOME STATUS = 'FULLY-OPEN' / Dome status HIERARCH ESO TEL CHOP ST = F / True when chopping is active HIERARCH ESO TEL PARANG END = -138.517 / Parallactic angle at end (deg) HIERARCH ESO TEL AIRM END = 1.347 / Airmass at end HIERARCH ESO TEL AMBI FWHM END = 0.78 / Observatory Seeing queried from ASHIERARCH ESO TEL AMBI PRES END = 743.85 / Observatory ambient air pressure qHIERARCH ESO ADA ABSROT START = -89.67637 / Abs rot angle at exp start (deg) HIERARCH ESO ADA POSANG= 0. / Position angle at start HIERARCH ESO ADA GUID STATUS = 'ON ' / Status of autoguider HIERARCH ESO ADA GUID RA = 17.03734 / 01:08:08.9 Guide star RA J2000 HIERARCH ESO ADA GUID DEC = 6.43776 / 06:26:15.9 Guide star DEC J2000 HIERARCH ESO ADA ABSROT PPOS = 'POS ' / sign of probe position HIERARCH ESO ADA ABSROT END = -89.37094 / Abs rot angle at exp end (deg) HIERARCH ESO INS ID = 'UVES ' / Instrument ID. HIERARCH ESO INS DID = 'UVES_ICS' / Data dictionary for INS. HIERARCH ESO INS SOFW ID = '$Revision: 1.104 $' / Instrument SW. HIERARCH ESO INS SOFW MODE = 'HW_SIM ' / Simulation mode. HIERARCH ESO INS PATH = 'RED ' / Optical path used. HIERARCH ESO INS MODE = 'DICHR#2 ' / Instrument mode used. HIERARCH ESO INS MIRR1 ID = 'FREE ' / Mirror unique ID. HIERARCH ESO INS MIRR1 NAME = 'FREE ' / Mirror common name. HIERARCH ESO INS MIRR1 NO = 1 / Mirror slide position. HIERARCH ESO INS OPTI1 ID = '1 ' / General Optical device unique ID. HIERARCH ESO INS OPTI1 NAME = 'OUT ' / General Optical device common nameHIERARCH ESO INS OPTI1 NO = 1 / Slot number. HIERARCH ESO INS OPTI1 TYPE = 'FREE ' / General Optical device Element. HIERARCH ESO INS SLIT1 NAME = 'FREE ' / Slit common name. HIERARCH ESO INS SLIT1 NO = 1 / Slide position. HIERARCH ESO INS SLIT1 WID = 0. / Slit width [arcsec]. HIERARCH ESO INS SLIT1 LEN = 0. / Slit length [arcsec]. HIERARCH ESO INS DROT MODE = 'ELEV ' / Instrument derotator mode. HIERARCH ESO INS DROT RA = 10821.668936 / ~~:~~:~~.~ RA (J2000) pointing [HIERARCH ESO INS DROT DEC = 62328.905406 / ~~:~~:~~.~ DEC (J2000) pointing HIERARCH ESO INS DROT POSANG = 0. / Position angle [deg]. HIERARCH ESO INS DROT BEGIN = 161.081 / Physical position at start [deg]. HIERARCH ESO INS DPOL MODE = 'OFF ' / Instrument depolarizer mode. HIERARCH ESO INS DPOS NAME = 'OUT ' / Instrument depolarizer slide positHIERARCH ESO INS DPOS NO = 1 / Depolarizer slide position. HIERARCH ESO INS ADC MODE = 'OFF ' / ADC mode. HIERARCH ESO INS ADCS NAME = 'OUT ' / ADC slide position. HIERARCH ESO INS ADCS NO = 1 / ADC slide position. HIERARCH ESO INS ADC1 MODE = 'OFF ' / ADC mode. HIERARCH ESO INS ADC1 RA = 10821.668936 / ~~:~~:~~.~ RA (J2000) pointing [HIERARCH ESO INS ADC1 DEC = 62328.905406 / ~~:~~:~~.~ DEC (J2000) pointing HIERARCH ESO INS ADC2 MODE = 'OFF ' / ADC mode. HIERARCH ESO INS ADC2 RA = 10821.668936 / ~~:~~:~~.~ RA (J2000) pointing [HIERARCH ESO INS ADC2 DEC = 62328.905406 / ~~:~~:~~.~ DEC (J2000) pointing HIERARCH ESO INS FILT1 ID = 'FREE ' / Filter unique id. HIERARCH ESO INS FILT1 NAME = 'FREE ' / Filter common name. HIERARCH ESO INS FILT1 NO = 13 / Filter wheel position index. HIERARCH ESO INS OPTI2 ID = 'DIAPHR.27MM' / General Optical device unique IHIERARCH ESO INS OPTI2 NAME = 'OVRSIZ ' / General Optical device common nameHIERARCH ESO INS OPTI2 NO = 3 / Slot number. HIERARCH ESO INS OPTI2 TYPE = 'SLIDE ' / General Optical device Element. HIERARCH ESO INS MIRR2 ID = 'DICHR#2 ' / Mirror unique ID. HIERARCH ESO INS MIRR2 NAME = 'DICHR#2 ' / Mirror common name. HIERARCH ESO INS MIRR2 NO = 4 / Mirror slide position. HIERARCH ESO INS SHUT1 ID = 'TSH ' / Shutter ID. HIERARCH ESO INS SHUT1 NAME = 'Telescope shutter' / Shutter name. HIERARCH ESO INS SHUT1 ST = T / Shutter open. HIERARCH ESO INS SHUT2 ID = 'SPSH ' / Shutter ID. HIERARCH ESO INS SHUT2 NAME = 'SPHERE_SHUTTER' / Shutter name. HIERARCH ESO INS SHUT3 ID = 'TSH3 ' / Shutter ID. HIERARCH ESO INS SHUT3 NAME = 'D2L_SHUTTER' / Shutter name. HIERARCH ESO INS SHUT4 ID = 'TSH4 ' / Shutter ID. HIERARCH ESO INS SHUT4 NAME = 'THAR_SHUTTER' / Shutter name. HIERARCH ESO INS LAMP8 SWSIM = T / If T, function is software simulat HIERARCH ESO INS SLIT3 WID = 1. / Slit width [arcsec]. HIERARCH ESO INS SLIT3 Y1FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y1OFFST = 4750. / Offset in Formula. HIERARCH ESO INS SLIT3 Y1RESOL = 40. / Resolution in encoder steps. HIERARCH ESO INS SLIT3 Y1MIN = 0.062 / Minimum slit width [arcsec]. HIERARCH ESO INS SLIT3 Y1MAX = 5.572 / Maximum slit width [arcsec]. HIERARCH ESO INS SLIT3 Y2FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y2OFFST = 4560. / Offset in Formula. HIERARCH ESO INS SLIT3 Y2RESOL = 40. / Resolution in encoder steps. HIERARCH ESO INS SLIT3 Y2MIN = 0.05 / Minimum slit width [arcsec]. HIERARCH ESO INS SLIT3 Y2MAX = 5.513 / Maximum slit width [arcsec]. HIERARCH ESO INS SLIT3 Y1ENC = 10640 / Slit Vertical top motor absolute eHIERARCH ESO INS SLIT3 Y2ENC = 10426 / Slit Vertical bottom motor absolutHIERARCH ESO INS SLIT3 LEN = 9. / Slit length [arcsec]. HIERARCH ESO INS SLIT3 X1FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X1OFFST = 2381. / Offset in Formula. HIERARCH ESO INS SLIT3 X1RESOL = 40. / Resolution in encoder steps. HIERARCH ESO INS SLIT3 X1MIN = 0.087 / Minimum slit length [arcsec]. HIERARCH ESO INS SLIT3 X1MAX = 15.752 / Maximum slit length [arcsec]. HIERARCH ESO INS SLIT3 X2FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X2OFFST = 2307. / Offset in Formula. HIERARCH ESO INS SLIT3 X2RESOL = 40. / Resolution in encoder steps. HIERARCH ESO INS SLIT3 X2MIN = 0.064 / Minimum slit length [arcsec]. HIERARCH ESO INS SLIT3 X2MAX = 15.833 / Maximum slit length [arcsec]. HIERARCH ESO INS SLIT3 X1ENC = 7016 / Slit Horizontal left motor absolutHIERARCH ESO INS SLIT3 X2ENC = 6944 / Slit Horizontal right motor absoluHIERARCH ESO INS FILT3 ID = 'BS5 ' / Filter unique id. HIERARCH ESO INS FILT3 NAME = 'OG590 ' / Filter common name. HIERARCH ESO INS FILT3 NO = 5 / Filter wheel position index. HIERARCH ESO INS DET6 NAME = 'Red exp. meter PMT' / detector name. HIERARCH ESO INS DET6 CTMIN = -1. / Minimum count during exposure. HIERARCH ESO INS DET6 CTMAX = 30. / Maximum count during exposure. HIERARCH ESO INS DET6 CTMEAN = 14.2 / Average counts during exposure. HIERARCH ESO INS DET6 CTRMS = 4.03 / RMS of counts during exposure. HIERARCH ESO INS DET6 TMMEAN = 0.49 / Normalised mean exposure time. HIERARCH ESO INS DET6 CTTOT = 46377. / Total counts during exposure. HIERARCH ESO INS DET6 UIT = 1. / User defined Integration time [secHIERARCH ESO INS DET6 OFFDRK = 0. / Average dark background counts. HIERARCH ESO INS DET6 OFFSKY = 1. / Average sky background counts. HIERARCH ESO INS SHUT6 ID = 'REXS ' / Shutter ID. HIERARCH ESO INS SHUT6 NAME = 'Red exp. meter sh.' / Shutter name. HIERARCH ESO INS SHUT6 ST = T / Shutter open. HIERARCH ESO INS GRAT2 ID = 'CD#4B ' / Grating unique ID. HIERARCH ESO INS GRAT2 NAME = 'CD#4 ' / Grating common name. HIERARCH ESO INS PIXSCALE = 0.182 / Pixel scale [arcsec]. HIERARCH ESO INS GRAT2 X = 2048. / X pixel for central wavelength. HIERARCH ESO INS GRAT2 Y = 2048. / Y pixel for central wavelength. HIERARCH ESO INS GRAT2 FRML = 'ENC=OFFST+RESOL*ASIN(WLEN*GRV/(2*COS(ROT)))' HIERARCH ESO INS GRAT2 OFFST = 1142930. / Offset in Formula. HIERARCH ESO INS GRAT2 RESOL = 15000. / Resolution in encoder steps. HIERARCH ESO INS GRAT2 GRV = 0.000313 / Grating grooves/nm. HIERARCH ESO INS GRAT2 ROT = 22.668 / Grating rot angle [deg]. HIERARCH ESO INS GRAT2 NO = 2 / Grating wheel position index. HIERARCH ESO INS GRAT2 WLEN = 800. / Grating central wavelength [nm]. HIERARCH ESO INS GRAT2 DISP = 0.1 / Grating dispersion [nm/mm]. HIERARCH ESO INS GRAT2 ENC = 1259732 / Grating absolute encoder position.HIERARCH ESO INS TILT2 POS = 0. / Science camera tilt (pixels). HIERARCH ESO INS TILT2 FRML = 'ENC=OFFST+RESOL*ASIN(2*POS-(MAX+MIN)/(MAX-MIN'HIERARCH ESO INS TILT2 OFFST = 15965. / Offset in Formula. HIERARCH ESO INS TILT2 RESOL = -100. / Resolution in encoder steps. HIERARCH ESO INS TILT2 POSMIN = -222. / Minimum camera tilt (pixels). HIERARCH ESO INS TILT2 POSMAX = 222. / Maximum camera tilt (pixels). HIERARCH ESO INS TILT2 ENC = 15960 / Camera tilt absolute encoder positHIERARCH ESO INS SHUT7 ID = 'FPSH ' / Shutter ID. HIERARCH ESO INS SHUT7 NAME = 'FIBRPROJSHUTTER' / Shutter name. HIERARCH ESO INS DROT END = 156.056 / Physical position at end [deg]. HIERARCH ESO INS TEMP31 NAME = 'Iodine cell temp.' / Temperature sensor name. HIERARCH ESO INS TEMP31 START = 15.3 / Temperature at start [C]. HIERARCH ESO INS TEMP31 STOP = 15.2 / Temperature at end [C]. HIERARCH ESO INS TEMP31 MIN = 15.1 / Minimum temperature [C]. HIERARCH ESO INS TEMP31 MAX = 15.5 / Maximum temperature [C]. HIERARCH ESO INS TEMP31 MEAN = 15.3 / Average temperature [C]. HIERARCH ESO INS TEMP1 NAME = 'Temp. blue camera' / Temperature sensor name. HIERARCH ESO INS TEMP1 START = 13.6 / Temperature at start [C]. HIERARCH ESO INS TEMP1 STOP = 13.4 / Temperature at end [C]. HIERARCH ESO INS TEMP1 MIN = 13.4 / Minimum temperature [C]. HIERARCH ESO INS TEMP1 MAX = 13.6 / Maximum temperature [C]. HIERARCH ESO INS TEMP1 MEAN = 13.5 / Average temperature [C]. HIERARCH ESO INS TEMP2 NAME = 'Temp. red camera' / Temperature sensor name. HIERARCH ESO INS TEMP2 START = 13.7 / Temperature at start [C]. HIERARCH ESO INS TEMP2 STOP = 13.6 / Temperature at end [C]. HIERARCH ESO INS TEMP2 MIN = 13.6 / Minimum temperature [C]. HIERARCH ESO INS TEMP2 MAX = 13.7 / Maximum temperature [C]. HIERARCH ESO INS TEMP2 MEAN = 13.7 / Average temperature [C]. HIERARCH ESO INS TEMP3 NAME = 'Temp. table' / Temperature sensor name. HIERARCH ESO INS TEMP3 START = 14.1 / Temperature at start [C]. HIERARCH ESO INS TEMP3 STOP = 14.1 / Temperature at end [C]. HIERARCH ESO INS TEMP3 MIN = 14.1 / Minimum temperature [C]. HIERARCH ESO INS TEMP3 MAX = 14.1 / Maximum temperature [C]. HIERARCH ESO INS TEMP3 MEAN = 14.1 / Average temperature [C]. HIERARCH ESO INS TEMP4 NAME = 'Temp. inside air' / Temperature sensor name. HIERARCH ESO INS TEMP4 START = 14.6 / Temperature at start [C]. HIERARCH ESO INS TEMP4 STOP = 14.4 / Temperature at end [C]. HIERARCH ESO INS TEMP4 MIN = 14.4 / Minimum temperature [C]. HIERARCH ESO INS TEMP4 MAX = 14.6 / Maximum temperature [C]. HIERARCH ESO INS TEMP4 MEAN = 14.5 / Average temperature [C]. HIERARCH ESO INS SENS26 NAME = 'Barometer pressure' / sensor common name. HIERARCH ESO INS SENS26 START = 743.1 / sensor value at start. HIERARCH ESO INS SENS26 STOP = 742.7 / sensor value at end. HIERARCH ESO INS SENS26 MIN = 742.7 / Minimum sensor value. HIERARCH ESO INS SENS26 MAX = 743.1 / Maximum sensor value. HIERARCH ESO INS SENS26 MEAN = 743. / Average sensor vlaue. HIERARCH ESO DET ID = 'CCD FIERA - Rev 3.8' / Detector system Id HIERARCH ESO DET NAME = 'ccdUvR - ccdUvr' / Name of detector system HIERARCH ESO DET DATE = '09-07-1998' / Installation date HIERARCH ESO DET DID = 'ESO-VLT-DIC.CCDDCS,ESO-VLT-DIC.FCDDCS' / Diction HIERARCH ESO DET BITS = 16 / Bits per pixel readout HIERARCH ESO DET RA = 17.09028725 / Apparent 01:08:21.6 RA at start HIERARCH ESO DET DEC = 6.39136262 / Apparent 06:23:28.9 DEC at start HIERARCH ESO DET SOFW MODE = 'Normal ' / CCD sw operational mode HIERARCH ESO DET CHIPS = 2 / # of chips in detector array HIERARCH ESO DET CHIP1 ID = 'CCID-20 ' / Detector chip identification HIERARCH ESO DET CHIP1 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP1 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP1 X = 1 / X location in array HIERARCH ESO DET CHIP1 Y = 1 / Y location in array HIERARCH ESO DET CHIP1 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP1 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP1 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP1 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET CHIP2 ID = 'CCD-44 ' / Detector chip identification HIERARCH ESO DET CHIP2 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP2 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP2 X = 2 / X location in array HIERARCH ESO DET CHIP2 Y = 1 / Y location in array HIERARCH ESO DET CHIP2 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP2 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP2 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP2 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET EXP NO= 1021 / Unique exposure ID number HIERARCH ESO DET EXP TYPE = 'Normal ' / Exposure type HIERARCH ESO DET EXP DUMDIT = 0 / # of dummy readouts HIERARCH ESO DET EXP RDTTIME = 45.309 / image readout time HIERARCH ESO DET EXP XFERTIM = 45.318 / image transfer time HIERARCH ESO DET READ MODE = 'normal ' / Readout method HIERARCH ESO DET READ SPEED = '2pts/50kHz/hg' / Readout speed HIERARCH ESO DET READ CLOCK = '50kHz/2ports/hi' / Readout clock pattern used HIERARCH ESO DET OUTPUTS = 2 / # of outputs HIERARCH ESO DET OUTREF= 0 / reference output HIERARCH ESO DET OUT1 ID = 'L ' / Output ID as from manufacturer HIERARCH ESO DET OUT1 NAME = 'L ' / Description of output HIERARCH ESO DET OUT1 CHIP = 1 / Chip to which the output belongs HIERARCH ESO DET OUT1 X= 1 / X location of output HIERARCH ESO DET OUT1 Y= 1 / Y location of output HIERARCH ESO DET OUT1 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT1 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT1 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT1 RON = 3.1 / Readout noise per output (e-) HIERARCH ESO DET OUT1 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET OUT4 ID = 'R ' / Output ID as from manufacturer HIERARCH ESO DET OUT4 NAME = 'R ' / Description of output HIERARCH ESO DET OUT4 CHIP = 2 / Chip to which the output belongs HIERARCH ESO DET OUT4 X= 4096 / X location of output HIERARCH ESO DET OUT4 Y= 1 / Y location of output HIERARCH ESO DET OUT4 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT4 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT4 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT4 RON = 2.06 / Readout noise per output (e-) HIERARCH ESO DET OUT4 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET FRAM ID = 1 / Image sequencial number HIERARCH ESO DET FRAM TYPE = 'Normal ' / Type of frame HIERARCH ESO DET WINDOWS = 1 / # of windows readout HIERARCH ESO DET WIN1 STRX = 1 / Lower left pixel in X HIERARCH ESO DET WIN1 STRY = 1 / Lower left pixel in Y HIERARCH ESO DET WIN1 NX = 2148 / # of pixels along X HIERARCH ESO DET WIN1 NY = 2048 / # of pixels along Y HIERARCH ESO DET WIN1 BINX = 2 / Binning factor along X HIERARCH ESO DET WIN1 BINY = 2 / Binning factor along Y HIERARCH ESO DET WIN1 NDIT = 1 / # of subintegrations HIERARCH ESO DET WIN1 UIT1 = 3300. / user defined subintegration time HIERARCH ESO DET WIN1 DIT1 = 3300.000217 / actual subintegration time HIERARCH ESO DET WIN1 DKTM = 3300.656 / Dark current time HIERARCH ESO DET SHUT TYPE = 'Slit ' / type of shutter HIERARCH ESO DET SHUT ID = 'ccdUvr shutter' / Shutter unique identifier HIERARCH ESO DET SHUT TMOPEN = 0.046 / Time taken to open shutter HIERARCH ESO DET SHUT TMCLOS = 0.046 / Time taken to close shutter HIERARCH ESO DET TELE INT = 60. / Interval between two successive teHIERARCH ESO DET TELE NO = 3 / # of sources active HIERARCH ESO DET TLM1 NAME = 'CCD T1 ' / Description of telemetry param. HIERARCH ESO DET TLM1 ID = 'CCD Sensor1' / ID of telemetry sensor HIERARCH ESO DET TLM1 START = 135. / Telemetry value at read start HIERARCH ESO DET TLM1 END = 135. / Telemetry value at read completionHIERARCH ESO DET TLM2 NAME = 'CCD T2 ' / Description of telemetry param. HIERARCH ESO DET TLM2 ID = 'CCD Sensor2' / ID of telemetry sensor HIERARCH ESO DET TLM2 START = 137.3 / Telemetry value at read start HIERARCH ESO DET TLM2 END = 137.3 / Telemetry value at read completionHIERARCH ESO DET TLM3 NAME = 'EBOX T ' / Description of telemetry param. HIERARCH ESO DET TLM3 ID = 'Box Temp' / ID of telemetry sensor HIERARCH ESO DET TLM3 START = 286.9 / Telemetry value at read start HIERARCH ESO DET TLM3 END = 286.6 / Telemetry value at read completionHIERARCH ESO OCS SIMCAL= 0 / Simultaneous Calibration flag HIERARCH ESO PRO CATG = 'MERGED_SKY1_REDU' / Category of pipeline product frameHIERARCH ESO PRO TYPE = 'PREPROCESSED' / Product type HIERARCH ESO PRO REDLEVEL = 'PHOTOMETRIC,GEOMETRIC' / Reduction level of daHIERARCH ESO PRO REC1 STATUS = 'OK ' / Pipeline status of frame HIERARCH ESO PRO DATAAVG = 23.1689 / Mean of pixel values HIERARCH ESO PRO DATARMS = 161.338 / Standard deviation of pixel valuesHIERARCH ESO PRO DATAMED = 6.48197 / Median of pixel values HIERARCH ESO PRO REC1 START = '2003-10-22T14:41:33' / Date when recipe executHIERARCH ESO PRO REC1 RAW1 NAME= 'UVES.2003-09-22T02:55:39.631_stk.fits' / File HIERARCH ESO PRO REC1 RAW1 CATG= 'SCIENCE_RED' / Frame category of raw frame #1 HIERARCH ESO PRO REC1 CAL1 NAME= 'r.UVES.2003-09-22T10:04:43.258_0003.tf' / FileHIERARCH ESO PRO REC1 CAL1 CATG= 'DRS_SETUP_REDL' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL2 NAME= 'r.UVES.2003-09-22T10:06:19.100_0000.tf' / FileHIERARCH ESO PRO REC1 CAL2 CATG= 'ORDER_TABLE_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL3 NAME= 'r.UVES.2003-09-22T10:06:19.100_0001.tf' / FileHIERARCH ESO PRO REC1 CAL3 CATG= 'BACKGR_TABLE_REDL' / Frame category of calibraHIERARCH ESO PRO REC1 CAL4 NAME= 'r.UVES.2003-09-22T10:04:43.258_0000.tf' / FileHIERARCH ESO PRO REC1 CAL4 CATG= 'LINE_TABLE_REDL1' / Frame category of calibratHIERARCH ESO PRO REC1 CAL5 NAME= 'r.UVES.2003-09-22T10:04:43.258_0001.tf' / FileHIERARCH ESO PRO REC1 CAL5 CATG= 'LINE_TABLE_REDL2' / Frame category of calibratHIERARCH ESO PRO REC1 CAL6 NAME= 'r.UVES.2003-09-22T10:04:43.258_0002.tf' / FileHIERARCH ESO PRO REC1 CAL6 CATG= 'LINE_TABLE_REDL3' / Frame category of calibratHIERARCH ESO PRO REC1 CAL7 NAME= 'r.UVES.2003-09-22T08:58:50.342_tpl_000' / FileHIERARCH ESO PRO REC1 CAL7 CATG= 'MASTER_BIAS_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL8 NAME= 'r.UVES.2003-09-22T09:59:07.272_tpl_000' / FileHIERARCH ESO PRO REC1 CAL8 CATG= 'MASTER_FLAT_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL9 NAME= 'r.UVES.2003-09-22T10:04:43.258_0007.tf' / FileHIERARCH ESO PRO REC1 CAL9 CATG= 'DRS_SETUP_REDU' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL10 NAME = 'r.UVES.2003-09-22T10:06:19.100_0003.t'HIERARCH ESO PRO REC1 CAL10 CATG = 'ORDER_TABLE_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL11 NAME = 'r.UVES.2003-09-22T10:06:19.100_0004.t'HIERARCH ESO PRO REC1 CAL11 CATG = 'BACKGR_TABLE_REDU' / Frame category ofHIERARCH ESO PRO REC1 CAL12 NAME = 'r.UVES.2003-09-22T10:04:43.258_0004.t'HIERARCH ESO PRO REC1 CAL12 CATG = 'LINE_TABLE_REDU1' / Frame category of HIERARCH ESO PRO REC1 CAL13 NAME = 'r.UVES.2003-09-22T10:04:43.258_0005.t'HIERARCH ESO PRO REC1 CAL13 CATG = 'LINE_TABLE_REDU2' / Frame category of HIERARCH ESO PRO REC1 CAL14 NAME = 'r.UVES.2003-09-22T10:04:43.258_0006.t'HIERARCH ESO PRO REC1 CAL14 CATG = 'LINE_TABLE_REDU3' / Frame category of HIERARCH ESO PRO REC1 CAL15 NAME = 'r.UVES.2003-09-22T08:58:50.342_tpl_00'HIERARCH ESO PRO REC1 CAL15 CATG = 'MASTER_BIAS_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL16 NAME = 'r.UVES.2003-09-22T09:59:07.272_tpl_00'HIERARCH ESO PRO REC1 CAL16 CATG = 'MASTER_FLAT_REDU' / Frame category of HIERARCH ESO PRO REC1 PARAM1 NAME = 'FFMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM1 SVALUE = 'E ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM2 NAME = 'EXMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM2 SVALUE = 'AVERAGE ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM3 NAME = 'BGMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM3 SVALUE = 'MEDIAN ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM4 NAME = 'INTMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM4 SVALUE = 'Y,Y,Y ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM5 NAME = 'MTD2D ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM5 SVALUE = 'N,MED,E,A' / Value of recipe parameterHIERARCH ESO PRO REC1 STOP = '2003-10-22T14:41:57' / Date when recipe executHIERARCH ESO PRO DID = 'PRO-1.15' / Data dictionary for PRO HIERARCH ESO PRO DO ID = 'DO-1_18 ' / Data Organizer identification ID HIERARCH ESO PRO RBS ID= 'RBS-1_11' / Reduction Block Scheduler identification IHIERARCH ESO PRO REC1 ID = 'uves_obs_scired' / Pipeline recipe (unique) idHIERARCH ESO PRO REC1 DRS ID = 'MIDAS/02SEPpl1.3' / Data Reduction System idenHIERARCH ESO PRO REC1 PIPE ID = 'uves/2.0.4' / Pipeline (unique) identifier HIERARCH ESO PRO REC1 RB ID = 'sky_800.rX' / Reduction Block identifier HIERARCH ESO PRO ARCFILE = 'UVES.2003-09-22T02:55:39.631.fits' / Archive f HISTORY ESO-DESCRIPTORS START ................ HISTORY 'CRVAL','R*8',1,2,'3E23.15' HISTORY 7.961269680000000E+03 1.000000000000000E+00 HISTORY HISTORY 'BIAS_SUBTR','C*1',1,3,'3A1' HISTORY YES HISTORY HISTORY 'BACKGROUND','C*1',1,11,'11A1' HISTORY subtracted HISTORY HISTORY 'WSTART','R*8',1,14,'3E23.15' HISTORY 7.962498180000000E+03 8.068689720000000E+03 8.177731379999999E+03 HISTORY 8.289721439999999E+03 8.404856459999999E+03 8.523234720000000E+03 HISTORY 8.645003640000001E+03 8.770310640000000E+03 8.899253999999999E+03 HISTORY 9.032079420000000E+03 9.168934320000000E+03 9.310015260000000E+03 HISTORY 9.455518800000000E+03 9.605641500000000E+03 HISTORY HISTORY 'NPTOT','I*4',1,14,'7I10' HISTORY 2687 2724 2761 2798 2835 2874 2913 HISTORY 2954 2996 3039 3084 3130 3177 3224 HISTORY HISTORY 'NORDER','I*4',1,14,'7I10' HISTORY 76 75 74 73 72 71 70 HISTORY 69 68 67 66 65 64 63 HISTORY HISTORY 'SHORTLOG','C*50',1,3,'70A1' HISTORY Recipe log (We, 22 Oct 2003 14:41:57): Science reduction do HISTORY ne. ........................................ HISTORY .......... HISTORY HISTORY 'REDBLOCK','C*48',1,61,'70A1' HISTORY recipe: uves_obs_scired instrument: uves HISTORY /data01/data/calib/UVES_SKY_ADD/800/AVG/r.UV HISTORY ES.2003-09-22T02:55:39.631 { HISTORY /data01/data/calib/UVES_SKY_ADD/800/file HISTORY s/UVES.2003-09-22T02:55:39.631_stk.fits SCIENCE_RED } HISTORY { HISTORY /data01/data/calib/UVES_SKY_ADD/800/files/r.UVES.2003-09-2 HISTORY 2T10:04:43.258_0003.tfits DRS_SETUP_REDL HISTORY /data01/data/calib/UVES_SKY_ADD/800/files/r.UVES.2003- HISTORY 09-22T10:06:19.100_0000.tfits ORDER_TABLE_REDL HISTORY /data01/data/calib/UVES_SKY_ADD/800/files/r.UVES.2 HISTORY 003-09-22T10:06:19.100_0001.tfits BACKGR_TABLE_RED HISTORY /data01/data/calib/UVES_SKY_ADD/800/files/r.UV HISTORY ES.2003-09-22T10:04:43.258_0000.tfits LINE_TABLE_REDL1 HISTORY /data01/data/calib/UVES_SKY_ADD/800/files/ HISTORY r.UVES.2003-09-22T10:04:43.258_0001.tfits LINE_TABLE_REDL2 HISTORY /data01/data/calib/UVES_SKY_ADD/800/fi HISTORY les/r.UVES.2003-09-22T10:04:43.258_0002.tfits LINE_TABLE_REDL3 HISTORY /data01/data/calib/UVES_SKY_ADD/80 HISTORY 0/files/r.UVES.2003-09-22T08:58:50.342_tpl_0000.fits MASTER_BIAS_R HISTORY /data01/data/calib/UVES_SKY_AD HISTORY D/800/files/r.UVES.2003-09-22T09:59:07.272_tpl_0000.fits MASTER_FLAT_R HISTORY /data01/data/calib/UVES_SK HISTORY Y_ADD/800/files/r.UVES.2003-09-22T10:04:43.258_0007.tfits DRS_SETUP_RE HISTORY DU /data01/data/calib/UVE HISTORY S_SKY_ADD/800/files/r.UVES.2003-09-22T10:06:19.100_0003.tfits ORDER_TA HISTORY BLE_REDU /data01/data/calib HISTORY /UVES_SKY_ADD/800/files/r.UVES.2003-09-22T10:06:19.100_0004.tfits BACK HISTORY GR_TABLE_RED /data01/data/c HISTORY alib/UVES_SKY_ADD/800/files/r.UVES.2003-09-22T10:04:43.258_0004.tfits HISTORY EDU1 /data01/da HISTORY ta/calib/UVES_SKY_ADD/800/files/r.UVES.2003-09-22T10:04:43.258_0005.tf HISTORY its LINE_TABLE_REDU2 /data0 HISTORY 1/data/calib/UVES_SKY_ADD/800/files/r.UVES.2003-09-22T10:04:43.258_000 HISTORY 6.tfits LINE_TABLE_REDU3 /d HISTORY ata01/data/calib/UVES_SKY_ADD/800/files/r.UVES.2003-09-22T08:58:50.342 HISTORY _tpl_0001.fits MASTER_BIAS_R HISTORY /data01/data/calib/UVES_SKY_ADD/800/files/r.UVES.2003-09-22T09:59:07 HISTORY .272_tpl_0002.fits MASTER_FLAT_R HISTORY } E HISTORY AVERAGE HISTORY MEDIAN HISTORY HISTORY 'LHCUTS','R*4',1,4,'5E14.7' HISTORY 0.0000000E+00 0.0000000E+00-3.6460675E-02 3.0541940E+00 HISTORY HISTORY ESO-DESCRIPTORS END ................ END =Œ—=²õ¥=Š’ë=sî2=›øÆ=˜Æ§= Î.<žYø=‰¦ƒ=¢€¦=ƒ -r=rZ=†1Z=d0‹<³‘Î=<î¶=@„&=É>±=ßx&=Ê´’=µè°=jòv=\£Å=¦ û=>»O=†¯|=¤ÈŠ=´±£=ÁÃÞ=s»Z=³4Å=Æï)=Ã7n=Uàf= ¬¡=>%¼=ƒ+a=ZÏô=ÞD¸=#âÁ=­ â=™Ô«=n¦î=K§k=H’÷=Pæã=’¥»=¯È|=ÆÎÈ=”`Á=p =œ%~=´Ð½= PÏ=EÏe=á•ó=­ B=”ÛH=ØË`>>ò=À®ã=ŽmŒ=Çœ€=­<Ék=(rè=›^=w,ô=&Ú‹=5=bÜã=‹zŽ=k‰U=T¨W=­í=¢;h=HFð=‚óT=s?â=mû4=‚EÉ=ºmM=Ûþ =ý„=íþä=›Î =µf×=P†¢=Gæ=‰¸è=ÊZ=žšá=¥² -=®x= =š£­»ûˆÇ<ò‚©=ŒT=ð²m=±µ“=žv3=Ï|è=gL#=dÄ=04I=hb~=˜¦0=<"=F=q×=w÷=ˆÄR=ŠoÜ=€ZS=ˆ¯=#ý :å.¥= •=Š^=´–@=gÆ=°3ó=…!=‚Ÿä=† -È=kø=ßÿ=˜}5=e+m=›¨h=›h‚=hM -=4t?=k™¥=‡¹3=AÏË=#e=?mf=À¥—=º b=…fÀ;ûH–=úL=”’Å=W%´=„ =¥1=Ú…º=Ž¿={…=žƒ#=¬¼9=•¹½=…Üæ=z5¨=ÐF–<ùû=|’=šÐ½=Laƒ=*HX=Z€œ=eÙ -=6w=/ð> 8>%Ü›? ³?‹ºö?¶ ò?Äç¼?Ç'è?½A?¶32?¬[Ã?rd›?'³>BÄž=Ñ÷a=„_î=u<Bm=n]<¤ï'½WÊ<·U»=(7<æú<µP/Eè>Žú>}lØ>dL`>+F>3v´>83E>hg=å·¨=°×À>y„>°õ=hõé<ôt¼÷v<#œ<¢=N—ñ=^ó6=p'”=%°?=Þ4.Â=¤©‚=šÐ=çe=©£=¿åÞ>kž=Ù‡=«ë=ä=4zx=©;ë=žUÄ=—æ=g¿Œ=ì£=ãÙ»=»o:=¸qd>>ƒ=çŸ=Àkó=¯¬3=˜' =" ]= TI<û6È=¢ }=Ž7X=Ay=)mÊ=Ú‡<ü_ô<ÀHãÆR>»Âƒ?$¦ú?á<@ +É@.Š@áŸ?óÁ¥>Õ{>†~=­õÙ=Îù> -V>ã™?’“¦?õµ‘@N‹@vU?ó­)?€˜×>á˾>g;=­<@ -=ž¯=ºRp=1Ì=˜<àä=Íæm=¸üw=6&à= 2{=‡c=€ÕÔ=dë&=?7ò=­$Õ=°Îà=r‹ä=j<ÁF -=±› -=Ãð4=ÝÂ…=³bb=˜á¹=q¯=Y%Ý=Ï€=Òʘ=ФW=¶ær=Ðî=Û9=¥×–=®ðØ=º–Ñ=Êd=Å¢’=©gB=L.€<æd=<¦×=gu,=–M=–åà=ˆÓ%<ïœý=ZÙª=–³â=hE¹=c=bEÅ=»‘=Öz1=ÄÜ8=ªóS=²K=Ÿê­=±r=ÙÞ=vÜ==#:F=–Áu=•É’=”¨¸=´&É=¤=>­=UC2=fVº=¼œ1=ì=gJ‡=h]g=wí˜=™‘=¹èî=Ï…ƒ>0aÔ>%5¥>Ó?=£s0=ƒ<`=‘A=ãç2>Ê»>·=û’=Ã=y ÷=2§Ó<} -<·Ÿg=…<Óiæ=º¼=R =T-ö=ZfÂ=x 6=cÝ¢=Séæ;nÇ<‘<–ëM=ØÄ=.!‡=E¤Ë=$= Yû=Я,=ÉH=±`›=O æ=3eN=‰às=-¿;ºÔo=˜ÖÖ=¤[S=¯Úé=p¤t=\ž=Œ F=–ÍM=ž£…= ûŽ=&qe=S’[=”½=”Ô±=Ug=Tñr=Uå=Œ/F=™A-=«ï÷=J*=ˆhê=†¹ù=bh<=JVS=h¹=h”=h<=_h=˜ïv=¦µ=uc„=D­%= ™\<òu¸<Ï¢W=\}¹=t¥M=†=DQH=#=Ã=é+=yë¾=¯²@=bÃ=eí`=;…ã=ˆ]=’·2=…<Ä=yLº=m2_=Û«=Ô;=¡ä=‰CU=‡og=’§=€Ó=lâ=kîF=”‚=® -¶=]á¬=_—–=ƒü=sŸî=zØÞ=¯‡’=1Ì< -Ë=KÓ=%âÁ<ºz¿=­–=µ,=0HR=ƒ=šQr=, =_¥=Œøª=ŒóÀ=ˆÒ*=~%?=i@â=Y¡é=*LÌ=K.&=eôu=hÔ=…ÖÍ=¡®%=°=˜ÙÖ=eåµ=(=ûÀ=†Õo=…þÂ=th=w€h=•ç=NÒì=æ£=–4Å=v7¢=2^Y=ž]®=²°_=ÊzI=†îN=`ã=‹Æ¶=”Þ:=›ö©=X›å=ñ=¾ä“=±h)=¡ö=|ž<ƒµºPè@<ê™=“=8<¦Ù<¢Ù<¢œª=añ=L²ýtR=Çȉ=ÁX<ýJÜ=:€¼=’h=‘Q=¢W=ÔM'=±È©=¡¦?=¢½=¿‹=€QÌ=€x»=eN[=<“G=pØ•=i«=9:=‡=±=“V¦=Tœ÷=ƒôÜ=—Ç=ˆ€Ì=‚&¹=s­ƒ=žØ¾=›½°=†Ä=º=Nî=l!ê=†&…=5‚=J=n#Ý=‹P=+3=?tT=¥¬R=’S=:ç=œ†˜=Œ¨Ì=€ze=5u—=Bû¸=O@=LÖ¤=€Þ³=¨x=Ÿ$:=–™¾=… Õ<ÛéW<³´¿=™ w=›¯=Œ?=º0™=¥4æ=ŽX»=K4=O•=bP‚=Ko =L~t=aÌô=„í=‡•=E¾ô=EE=D,æ='¿E=?ó»=]9"=tª=âÀ=ˆA<=8CŸ=8›`=†h…=¡-)=©\Š=„I/=Œ¤t=“ =…ˆ=…¨æ=…àœ=@ôÕ=.`=9µ=]O={ =‘ëÊ=gCÀ=Xë6=™q=³†=`˜ù=Ý}«=±¯Ý=c2=!Æ=t­v=Ç{=ž¦,=’ 7=ˆ =‡â =l®=Dõ6=—¬±=¸$=·$=ª¨-=žß=-Õ/=gö‰=Åö=²½À=|í=XÎ=kˆ=kœ=X§Ñ=h+þ=uÖï=&a=* Á<Æ2=ov =„ò‰=’ø=]¦T=FœÆ=*J=‹o‹=‡×=\Nù=‚òØ=€‹J=K?=ƒFX=’ú=¡°=¢—=žX = é=ê¯=Ñq=‘ié=‹ï=‚ =£ü»=Œš¬=4¼“=c²-=x6‚=‰Ý=€Ñ¶=ƒÚ¤=¼¿=•ø=ˆ6#= 5ß=bô¯=“z.=ÌÉì=¯Z=‘\b<¿ ×<÷8ô=.nÐ=b»g=j ƒ=j˜ª=°Hÿ=ª#Ò=fÙÛ=‰°=…ƒ}=.: =U9¾=e‡“=L|={ˆ/=’§—=àŠî=uVr-Ó{>13Ö>0êY>#a¦=÷Cq=¶A<X<¾¯ø=Ì‹=‹®=,Y;98¼:Miô<0 <ÊCÂ<çþØ<ôsP=ºvyS<+ È=NÅ=ÉBl=ÕTã=§àŒ=·ÆZ=Þÿå>2C>.¡>.²P>8™>4ëû>-d> ¹>ë>Ɖ>Aÿ=Þ†ª=ã¼/=éž2=~±›=WÕù=2vŽ=–½;=ˆKÇ=M‚o=aèu=‚,ü= šŸ=«ÜT=¨GF=™Ðß=jD_=gM.=Ž¬Y=hõž=Ræ=GÓT=‡/ =—»I=œ`A=†¨=x›¿=‰‡<=š2S=¢€µ= B=’]2=t<‘s©=$£N={%+>!$>G•>wÙµ>F®>1}á>¼6=Q Ž<§öâ¼L’=Tü=tíˆ=ƒþB==G=n£'=¤Ú¢=Ÿ =$‡2;¬¡²=N æ=ØC=•\È=dG{=F4&=%U¥=7w+=P£=Jß=„D=qˆ==äW=t¼J= .=r5G=Q·è=P“=x7‰=#¤=@ =à'%>2>14ˆ>b#Ò>h|.>S G=©ö¸=šz^=“ÚÄ=œØ8=Q¨=+çI=5V= ä=˜év=vD‰=‚÷c=‹¿U=«ÞÏ=³ß¥=»“Ç=ÒKá=Ñð8=δÖ=¯/…=¯¨œ=®<=™br=‹¤^=}Åæ=:q‘=•)=¶\=¶Ø{=¡Ê­=‘‚="óñ=x =™W±=»•=$Ùt=;q=;ˆ=sòì=ŽS:=:U~=:‚Ö=@=‘âƒ=>à%<ðz÷= ‰=Åh©=Û=!÷=N–Ø=s­=†”L=}¿.=sAŠ=…?†=Ma¶=#ã=j¨€=‚×I=‘…~=ÉP=œ5¯=sp=A÷"=ƒ‡=–ÿ =V3É=Ìg=‹#=j é=[œ=bCø=¬¨D=¬=¥§Ú={@è=lmš=d=dÐÕ=d¤‰=Qÿl<ã2!=wÐ=˜Ë‚=…eë=Þ=×Ä=V<ã(Ü<Ž'%=,º~=-@=FÄ -=ŒX"=”ì»=Œ§ =Y$=IOú=b„]=—™æ=±½ž=˜%›=ß+=Sn)=ˆ³|=»'§= º¸=”/=†u®=R0=QcŠ=ž„= RÆ=“Í=€ -=mÁJ=v´ =ؾ=n{U=€Â§=‹¾x=–œ =¡Šn=©†i=Õ=iz{=“¤m=.ö=lxf=2=¢÷;=•×=Œ6ú=‹üH=¡ö=.=':d=EÿÊ=\Âî=~Œ=]‡“=x‘=¶¸œ=e”=)å<õ{õ=.=•Ä=S\„=¿=e9o=ÍKZ=rܵ=_ø›=^Ï$=n_®=…Ž·=•%N=Â=‘±O=„¤Â=8"æ=fJ©=‡„L=£Í -=ÌÈ=Â= -ßI=MÀ=+ZO=]ù=^´Û=­ -=·Ïû=q7/=L§±=K<†=ª£©=ž =_»*=—=uš=\¼í=‚¿e=„ z=ƒïÊ=5Ó =6NÔ=<+ì=ƒäO=oö=u1[=¦"=­—ì=—#É=LJ==™È=£.R=„è<=œË;=œ­=ŽÅÓ=Ž¶-=’rŠ=˜p{>î±>°ÿt? ‚?8z?%Á?r$>Ò>šA>ÅJˆ?(òh?;?:—ƒ?ñJ>ËO>›P7>jÇ=»ÿ5==¶åJ=›ÆÍ=“÷Ä=Ž-t=ƒÔÇ=ˆ=Å\=ŽGÃ=z®ë=f¬ö=†}=‡]Æ=‚d=RËg=3¢ç="h­=§k=@Y=(^Û=P*Ú=bÔþ=—:=ŹW=T•*=%­D= ¯6=¯r®=;ø=‚”=¬Â³=¦Ä8=¡Î =šr‘=ƒ¾Ö=|e«=~Ôe=œ©=©=¶ =«f=šyC=ˆæ´=V&=H%à=;Å =)­Â=©Äº=Áîm=œ_;=‹ò¢=‹ƒñ=’äÊ=o£ï=†™­=Ã4=‹2Î= cR=­ F=m9x=ªÆd=Ľ=´Q=–Ì”=Œáw=Ž:ù=˜/³=—5–=’·0=æ,=ÁLy=“¼>=@Ä{=Bð%=Uú®=œ¾=…÷ô=…l¥=ŸP’=±ú¢=™A;=M€ì=¦¥q=§è=Ÿ•á=OÏ­='NH=úP=jÙ=•·©=Å$=‹ÖG=^3Æ=rñB=—W¢=®5q=ŽÈÊ=V.=løŒ=}˜²=†Fù=k»=‡Ì—=¡j=¦§Ù=jt€=s '=ÿ¡=„Úq=‹à=’>=œV!=x5ò=M¶«=9;=[a5=ug==ŠÞ=CëÌ=`V=‰5¯=“=Œ…â=Žq¦=Àd=q Ž=Ce=uÃË=w±Ó=yï=|çw=ÑÕº=£¾ö=ršê=´¦J=´J~=™Ë <ßÏÊ=£ô=£q=T!=&Q’=PZA=€U=Q [=P‡ =kø=±ñ4=Ÿ;s=‰$Ñ=N¼Ø=9k<=×=À=‹2{=xVH=[­‹=1þò=—'®>HR2>ã)?tºÓ?‰˜ú?”'?gô\>ø 5>8³^=¸X=ÜHU=¸™=\e=u¬¼=§Ñ=åìÂ>«m{?@œ”?…'¢?Âs?d¸»?;6>m—=ZI=„Ù=ÂHÐ=¡Ðæ=“*Á=…Æg=fxm=‡þ÷=¡"É=ÂÒH=ÚÞ=¯ñ§=Àé%=µšÙ=¾‘†=µ& =ŽŽÆ=˜c•=‰Áv=eËÍ={£=ƒu=‡6~=…}½=fX¥=k==§Ús=’m=ƒšÉ=pŠ·=~;=”Ç\=›‡ì=¤éÈ=£Ò[=«-=¶Çu=’†Ð=œ"= J¡=Š^Î=‡àE=ûz=b »=«€ƒ=·eÁ=¸ž)=|O/=|í=Žê3=Á¬=¯b=™rÇ=€-º=¡ÞÅ=v=I~ï=po=rÂï=t8ä=u¨¹=¦ýX=£<Í=ŸÔ=œCý=hâé=OB=\³=‚l¡=`ên=>‚,=”Ó=´x=¼IÑ=¦Õ=”§u=œà²=«&Ý=­j=§‚=¥ê=¯zD=͸Õ=¼z=™m·=¥Ì|=³€±=±%z=_D=Xÿ=…å=·Ò@=ªµÛ=ËÔµ=ÏxÙ=JÀ2=´»=¿Œ=¨ð =LPÓ=ˆÞÄ=§H=§’Ë=¹/Ž=ߎ:>"Æ=±Â=·=Åd=Ù‰ =œ)=t·=D§º=CÚ}=Þ=–¿=r f=g=ˆó=!è=°ÏF=dz…=Ø»=AŸI=wWw=f°°=*\k=¸¬f=®çÜ= %B=‹c=­ŠÅ=»¶Ñ=€h=âFÄ=Û,=¾$=7D=®@™=¾Óö=¹9«=éÜÀ=Æ{=ž}=@á=R¨Ì=KŸþ=A4>=‚1*=Ÿóš=î=RwË=Pø={x$=x‘=5¬è=]=‘yß=¸=Žö=a8=E~\=«™­=ŠÌ=p{=UTK=³–=›Ço=†6=kÓ=Js=h®Þ=™ =¼f5=Ä&=Ñv -=êµà=ëÒZ=Ô}Ï=¼‡=»?¢=fæ=Sä[=Œ¶f=ŸÌ:=ŸiZ=d=(Ý=l>1=jù=Q˜=>³==˜=Hæ=f‚(=@oÝ=h1 =ˆü -=ˆý½=bÅØ=¤=ªS?=Š=x%=aZ×=P~W=aw =E!g=>¹ö=æF/=üX}=ó5@=Ðe—=±g;=‹"‹=wb)=¥ß>ª>!ú>1ÛŸ>!¾t>Äi=ÒYc=0Kñ=Ÿ¸=z‡o=Q¶â=g=>V=UÐÂ=„1ï= Ö=Š0¸=fJ=.Wr=Cçr=\™J=òÌ=«?r=š.=rNü=+Qï=êd=•ñ=—1‰=EJÁ=€ø\=¨ß7=¶ º=–nÌ=ü+à>,Ú>#‘N>H´=Úì=®ƒx=ƒdX=…ú=aa=S­¬=bûÝ=ö¬>:âÃ>v¨>˜‹š>Ny>C³g=ü´=Mn"=`T =p!¾=~©é=<*/=Z Û=‚³Ë=¤Ùu=_„­=I½3=N=„ׄ=x6Ò=‹ÖS=š©”=`•=‹^æ=`Qò<Õј<ÓúF=7$-=st=‘ô1=›{×=Km=¬)í>÷Q>p -®>{<>ze>¡è>39=ØTš=À²C=å”.=²3ñ=¡åJ=©«Ç=©¼=¨;â=«E=€’>{&>¡>ß­ÿ>ðšØ>æ|z>›¿§>/n=n÷=mµ2=‡×=“öå="ì&=Heþ=_2j=rjg=©ZK=˜¶#=Kv=…¿³=[lH=j¥=„>—=Ÿ—q=v>t=aUe=P1v==`15=„ãF=½¯æ>.”S>Œå|>ç$>ÝãÐ>Í_á>¯½©=ù`§=ÐäÉ=­õ/=µ•=©>Ö=²wƒ=¬ñ=›g;=/6¡=Cgv=D¥í=3Eà=Ÿ…ë=¨ð©=Ø4>cŽ?¡8?1Wý?C{¤?H©>Ú/*>=Ô±=;%=ª -{<Ûý8=PNç=¢å=Á…6<¹‘y=5s=Nˆ o@Š?è?&uÙ?2«ø?2¿ú>Ç;æ>K @=‰U­=|€n=fˆÁ= <Ÿ…=E&@=¢Ö&=­U<=›¢n=)=K=~ Í=„ ÿ=}ò¬=ŠÁ=h$ç= §ó=ÕVù=¾M>¶Äã?FÙ ?™a®?±'é?™c£?J‰’>¶ì›=§è=FrÖ=T?=x1P=cç=‰zX=†ºî=k÷=ý³=uù…=;W=(×=¢=¢Õ«=›}Æ=•èÞ=–}â=½x=mf=Ú~=>Ã=Z±­=K<==’ùr>?.?{?\H?Š°'?–V?`’¤>ΊW>`×=·‡‹=e§#==‡“=:@Õ=O`=h„Ý=”Ø‘=’—=Šá+=ÉX=šã=¤Â=¬nˆ=LT¼=º¡^=`Œ“<Ò~=‚5œ=ƒp¶=”„™=³~†=èOå?ÕK?¬×Ž?ìQ§?üiÁ?ÂÇ×?eT2>Ôz]=°M®=>r=R| -=….A=§¸~=´p^=‘¨=uГ=a•‡=‡ è=ÞA=Žû=HWQ=ƒ‡C=ld5=#=<="Q -=‚l5=-¯6=eò"=Š©=•dõ<á‰g=ú¸>ÈÍ€?Nw?Åš?دF?ÌÛÊ? @a>ɨë=ð5Ó=®á‚=­L¯=·€=‹]=³=Åôô=½Šê= ~=”*=åQ=T-x="ù¸=p]±=ò==‹ ÿ='¶î=b–E=SÑõ=I{=B¤º;¡&=[~=„€ú=yrÑ=¼>ƒ²ç?xóŽ?⌤@Å]@{Ì@-š?¡þ>•†T=à›O>K¾=æT3= È=@í…=A9B=O -=au =vx=@ï=NK¢=_WÞ=lÌ%=Rþ-=®Ç=ŸÓë=|¤J=§ý›=2­t=v‚=ä==l5Ä=Ä->})™?Psà?Ïå\@pJ@ c‡?äCå?–«>^r=™=9¿N=;û@=†=Ø=Ytƒ=Yû7=@—Ú=&/¿=&`=›Üì=»,ñ=½4`=¥ä=¼Þâ=ŒBÄ=_ÃÅ=LHm=vð™=HÔ=öÀ=/:@=”«ö=‡A>={J&=^'™=Qrî=ˆ´Ü=ªÅt=¾“>šw>›³?¿l/@%pü@?â@<¥w@$ !??‘ƒ>•c/=÷cé=ÈQV=e’>=P±©=gÇÉ=zž±=Qhæ=ƒÎ ={}¼=„Û=“‘þ=\¨=I¸ß= =¦¥< C´=ÓôÁ=ÍÃþ=µ%=¢ca=Ù¹·=½él>W)?Ì,?¯_Y@m9@!Ô*@'ý?ÉÒ6>¿¨ó>O7=£U=ˆ½Â=¦Sß=¦¾?=¦Þ=>¦h=9‚=¦¡>=…v=EHv=;¬=@XP= C¼=œ=£©9=°'=¿-9=•H$=^Ïm=u]±=u°Þ=5c‰=u(1=Ä6Ù=»<Ÿ=s9¾;”yâ=܉(=•M=4˜ô='v—=•’«=ç=)>€^v?D~Ÿ?Øc@9ÁQ@Cwê@-"ì?ïK? -hÔ<æzë=k‡"=‰o¥=vtt=B÷=Ô=@6Ü=S;…=_8g=Š{0<ù×Í=-=^?L=Žs…=G©ü=—„s=ä<æ 6=r'¹=±ñ=wS=V÷>*·>²•v?ªâ@ f@fï@V½@0>Ö¥.><4#=«ó^=€ n=ŠŽZ=Šxx=n•E=œ'=š«=™]N=€¥Ž= ‡À=­=al©=UÙ=“ ò<óu¬=É´=Žøë=].ð=C…=V…ù=yÁ{=~W°<ÚjO=_4=•X$=†¤p=B9Ž=~’¼=„)=&îz= ~=Å:=<Ï%ú=‘:¤=¼ÚT=ÂiR>cÔ>‘Ìl?†îÂ?ò½@"±@$y‰@ -l?Š‚>û=¿†Å=tó=¢‘==Ë7c=šøt<èóê¼9€ó=_;=˜D=T=”a.=‡ßØ=KI¤=fh =\Õõ=U’¦=s=œ1&=Ž -t=iô=¸K?=éÒ²>’ží\ó>57“=‰Ì‘<Ðû)=R¢=)D~=u“È=H j=‚ß=w´ß=u4Ì=^ë=/±Û= =W²=ضg=W=Ù=^Ÿ‰<Í=X=ºC<-¿=i¤ =½ª¥=d(Õ=¨8Ô=n®¸=ž[=æD=¶Ä@<Ñè= "»<•/=Œkæ>näu?"?ªŒ ?ÇK?ËÙ-Ý‹>öØ?)¦?7÷í?.Á8? |g>8wÚ=÷3=Õ¹Ø=¹WÜ=”0š=üD>b°_=Ú½=9Pè=«-=ä•)Ÿ>£DÞ>ðý1?Lˆ?ó>Ø`ì>ˆý>/'A>ò>-L>O*>¤ä¡>ËË>Î’Ù>©€ë>A¨ô=`1¥=¤¶Ú=¼a»=Ðð_=ɯÝ<ÎE=(X3=‡Ž=|±E=0‰="O=þ¥¹=‡6—=3è0=\ó=ž­T=ºÔŒ=c8-=­Çº=“ß+=„öÛ=Šz=•Ú=js;Þ“d=[úa=®§=ÅaÛ=ìld=ÞÀ¥=Ï«­=‡Á=ˆ›a=¬:=!Ê =‘ð€=Ÿ~w=·ÅÔ=~Û='á=Ö>š=ØrÔ=&%=hÿ1=œ–=°Œ=œô=€·=¶Ÿ=­úh=‚BÎ=ï -=å\=‘SS=&Lü=G³=ž4w?B0…?§Ö?Â!„?Äg·?˜ Ó?XÏ>["¤=îQÓ=•ý†=‘mï=z#E=¨ó«=ƒb<¼:”<‰¼s=±e=´öŽ=¶Êð=€t]=‚2=Ð(<=À9H=­m0¼7ë+<$ f=_áõ=‚|Ï<ö-ì=¸ æ=qö5=d_ô=Š—=”Î$=‡»á=Š =¶}‚=Y±=\”_=€ù;=Œ¼=ƒ†H=£S Ê%>¡N? û ?1”Î?/½¾?{ó+?´M©?á0^?ñðÅ?ã}ª?šd4>¸'P>Ž¡=²Áœ=sq \ No newline at end of file diff --git a/templates/fluxed_sky_860L.fits b/templates/fluxed_sky_860L.fits deleted file mode 100644 index 6e51317fc..000000000 --- a/templates/fluxed_sky_860L.fits +++ /dev/null @@ -1,400 +0,0 @@ -SIMPLE = T / Standard FITS format: NOST 100-2.0 BITPIX = -32 / No. of bits per pixel NAXIS = 1 / No. of axes in image NAXIS1 = 45277 / No. of pixels EXTEND = T / FITS extension may be present BLOCKED = T / FITS file may be blocked COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 CRPIX1 = -2318. / Reference pixel CRVAL1 = 6605.74752 / Coordinate at reference pixel CDELT1 = 0.04064 / Coordinate increment per pixel CTYPE1 = 'WAVELENGTH ' / Units of coordinate BUNIT = 'FLUX ' / Units of data values DATAMAX = 41.8732261658 / Maximum data value DATAMIN = -0.0267144739628 / Minimum data value ORIGIN = 'ESO-MIDAS' / Written by MIDAS DATE = '2002-10-07T14:23:07' / [UTC] Date of writing FILENAME= 'fluxed_860L.bdf' / Original file base-name MIDASFTP= 'IMAGE ' / MIDAS File Type OBJECT = 'MERGED_AV_SKY_REDL' / MIDAS desc.: IDENT(1) RA = 166.639232 / MIDAS desc.: O_POS(1) DEC = -18.35691 / MIDAS desc.: O_POS(2) EQUINOX = 2000. / MIDAS desc.: O_POS(3) DATE-OBS= '2001-06-19' / MIDAS desc.: O_TIME(1) MJD-OBS = 52079.0115956 / MIDAS desc.: O_TIME(4) TM-START= 1001.86243197 / MIDAS desc.: O_TIME(5) EXPTIME = 3800. / MIDAS desc.: O_TIME(7) COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT FTU-1.39/2001-09-26T12:02:44/Default.htt INSTRUME= 'UVES ' / MIDAS desc.: INSTRUME(1) OBSERVER= 'UNKNOWN ' / MIDAS desc.: OBSERVER(1) TELESCOP= 'ESO-VLT-U2' / MIDAS desc.: TELESCOP(1) RADECSYS= 'FK5 ' / MIDAS desc.: RADECSYS(1) AIRMASS = 1.183 / MIDAS desc.: O_AIRM(1) HISTORY EXTRACT/IMAG out = sky_860L_all.fits [6700,1:8544.316,1] \HISTORY Converted from: sky_860L_all.fits \HISTORY \ HISTORY INSERT/IMAGE out1 sky_860L_all.bdf \ HISTORY EXTRACT/IMAG out2 = sky_860L_all.bdf [6699.9\ HISTORY 916800000,1:8540,1] HISTORY Converted from: ../files/sky_860L_all.fits \HISTORY COMPUTE\HISTORY /IMAG fluxed_860L = mergL/3.60000E+03*5.20000E-01/3.64000E-01*1*respons\HISTORY eL*extiL \HISTORY OS-EXPOI= 41452 / OS expoId PI-COI = 'UNKNOWN ' / Name of PI-COI LST = 48211.195 / 13:23:31.195 LST at start (sec) UTC = 957. / 00:15:57.000 UTC at start (sec) CHECKSUM= 'PPHhQM9hPMEhPM9h' / ASCII 1's complement checksum UT = '00:15:57.000' / UT at start ST = '13:23:31.195' / ST at start IMAGETYP= 'OBJECT ' / Observation type FILTER1 = 'FREE ' / Filter 1 name FILTER3 = 'OG590 ' / Filter 3 name GRAT2 = 'CD#4 ' / Grating 2 name WLEN2 = 860. / Grating 2 central wavelen DATAMEAN= 278.228401 / Mean Pixel Value DATARMS = 1048.787993 / RMS of Pixel Values DATAMED = 250. / Median Pixel Value DATAMD5 = '9e2c60bb8a92cb9204ed3c932ade93d4' / data MD5 signature PIPEFILE= 'r.UVES.2001-06-19T00:16:41.862_0010.fits' / Filename of data product HIERARCH ESO OBS DID = 'ESO-VLT-DIC.OBS-1.7' / OBS Dictionary HIERARCH ESO OBS OBSERVER = 'UNKNOWN ' / Observer Name HIERARCH ESO OBS PI-COI NAME = 'UNKNOWN ' / PI-COI name HIERARCH ESO OBS PI-COI ID = 1296 / ESO internal PI-COI ID HIERARCH ESO OBS TARG NAME = 'HE1104A ' / OB target name HIERARCH ESO OBS GRP = '0 ' / linked blocks HIERARCH ESO OBS NAME = 'PAIRB4 ' / OB name HIERARCH ESO OBS ID = 105178 / Observation block ID HIERARCH ESO OBS PROG ID = '67.A-0278(A)' / ESO program identification HIERARCH ESO OBS START = '2001-06-19T00:13:46' / OB start time HIERARCH ESO OBS TPLNO = 2 / Template number within OB HIERARCH ESO TPL DID = 'ESO-VLT-DIC.TPL-1.4' / Data dictionary for TPL HIERARCH ESO TPL ID = 'UVES_dic2_obs_exp' / Template signature ID HIERARCH ESO TPL NAME = 'Dic2 Observation' / Template name HIERARCH ESO TPL PRESEQ= 'UVES_dic_obs.seq' / Sequencer script HIERARCH ESO TPL START = '2001-06-19T00:14:58' / TPL start time HIERARCH ESO TPL VERSION = '@(#) {Revision: 1.1$}' / Version of the templaHIERARCH ESO TPL NEXP = 1 / Number of exposures within templat HIERARCH ESO TPL EXPNO = 1 / Exposure number within template HIERARCH ESO DPR TECH = 'ECHELLE ' / Observation technique HIERARCH ESO DPR TYPE = 'OBJECT ' / Observation type HIERARCH ESO DPR CATG = 'SCIENCE ' / Observation category HIERARCH ESO TEL DID = 'ESO-VLT-DIC.TCS' / Data dictionary for TEL HIERARCH ESO TEL ID = 'v 1.370 ' / TCS version number HIERARCH ESO TEL DATE = 'not set ' / TCS installation date HIERARCH ESO TEL ALT = 57.639 / Alt angle at start (deg) HIERARCH ESO TEL AZ = 94.349 / Az angle at start (deg) S=0,W=90 HIERARCH ESO TEL GEOELEV = 2648. / Elevation above sea level (m) HIERARCH ESO TEL GEOLAT= -24.6254 / Tel geo latitute (+=North) (deg) HIERARCH ESO TEL GEOLON= -70.403 / Tel geo longitute (+=East) (deg) HIERARCH ESO TEL OPER = 'I, Condor' / Telescope Operator HIERARCH ESO TEL FOCU ID = 'NB ' / Telescope focus station ID HIERARCH ESO TEL FOCU LEN = 120. / Focal length (m) HIERARCH ESO TEL FOCU SCALE = 1.718 / Focal scale (arcsec/mm) HIERARCH ESO TEL FOCU VALUE = -28.915 / M2 setting (mm) HIERARCH ESO TEL PARANG START = 107.239 / Parallactic angle at start (deg) HIERARCH ESO TEL AIRM START = 1.183 / Airmass at start HIERARCH ESO TEL AMBI FWHM START = 0.62 / Observatory Seeing queriedHIERARCH ESO TEL AMBI PRES START = 740.8 / Observatory ambient air prHIERARCH ESO TEL AMBI WINDSP = 4.17 / Observatory ambient wind speed queHIERARCH ESO TEL AMBI WINDDIR = 352. / Observatory ambient wind directio HIERARCH ESO TEL AMBI RHUM = 6. / Observatory ambient relative humi HIERARCH ESO TEL AMBI TEMP = 4.91 / Observatory ambient temperature quHIERARCH ESO TEL MOON RA = 33249.184151 / ~~:~~:~~.~ RA (J2000) (deg) HIERARCH ESO TEL MOON DEC = 155131.24442 / ~~:~~:~~.~ DEC (J2000) (deg) HIERARCH ESO TEL TH M1 TEMP = 4.95 / M1 superficial temperature HIERARCH ESO TEL TRAK STATUS = 'NORMAL ' / Tracking status HIERARCH ESO TEL DOME STATUS = 'FULLY-OPEN' / Dome status HIERARCH ESO TEL CHOP ST = 0 / True when chopping is active HIERARCH ESO TEL PARANG END = 106.888 / Parallactic angle at end (deg) HIERARCH ESO TEL AIRM END = 1.459 / Airmass at end HIERARCH ESO TEL AMBI FWHM END = 0.64 / Observatory Seeing queried from ASHIERARCH ESO TEL AMBI PRES END = 740.92 / Observatory ambient air pressure qHIERARCH ESO ADA ABSROT START = 15.09329 / Abs rot angle at exp start (deg) HIERARCH ESO ADA POSANG= 0. / Position angle at start HIERARCH ESO ADA GUID STATUS = 'ON ' / Status of autoguider HIERARCH ESO ADA GUID RA = 166.55754 / 11:06:13.8 Guide star RA J2000 HIERARCH ESO ADA GUID DEC = -18.36942 / -18:22:09.9 Guide star DEC J2000 HIERARCH ESO ADA ABSROT END = 29.87949 / Abs rot angle at exp end (deg) HIERARCH ESO INS ID = 'UVES ' / Instrument ID HIERARCH ESO INS DID = 'UVES_ICS' / Data dictionary for INS HIERARCH ESO INS SOFW ID = '$Revision: 1.93 $' / Instrument SW HIERARCH ESO INS SOFW MODE = 'NORMAL ' / Simulation mode HIERARCH ESO INS PATH = 'RED ' / Optical path used HIERARCH ESO INS MODE = 'DICHR#2 ' / Instrument mode used HIERARCH ESO INS MIRR1 ID = 'FREE ' / Mirror unique ID HIERARCH ESO INS MIRR1 NAME = 'FREE ' / Mirror common name HIERARCH ESO INS MIRR1 NO = 1 / Mirror slide position HIERARCH ESO INS OPTI1 ID = '1 ' / General Optical device unique ID HIERARCH ESO INS OPTI1 NAME = 'OUT ' / General Optical device common nameHIERARCH ESO INS OPTI1 NO = 1 / Slot number HIERARCH ESO INS OPTI1 TYPE = 'FREE ' / General Optical device Element HIERARCH ESO INS SLIT1 NAME = 'FREE ' / Slit common name HIERARCH ESO INS SLIT1 NO = 1 / Slide position HIERARCH ESO INS SLIT1 WID = 0. / Slit width (arcsec) HIERARCH ESO INS SLIT1 LEN = 0. / Slit length (arcsec) HIERARCH ESO INS DROT MODE = 'SKY ' / Instrument derotator mode HIERARCH ESO INS DROT RA = 110633.415575 / %HOURANG RA (J2000) pointing (dHIERARCH ESO INS DROT DEC = -182124.884539 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS DROT POSANG = 115. / Position angle (deg) HIERARCH ESO INS DROT BEGIN = 155.051 / Physical position at start (deg) HIERARCH ESO INS DPOL MODE = 'OFF ' / Instrument depolarizer mode HIERARCH ESO INS DPOS NAME = 'OUT ' / Instrument depolarizer slide positHIERARCH ESO INS DPOS NO = 1 / Depolarizer slide position HIERARCH ESO INS ADC MODE = 'AUTO ' / ADC mode HIERARCH ESO INS ADCS NAME = 'IN ' / ADC slide position HIERARCH ESO INS ADCS NO = 2 / ADC slide position HIERARCH ESO INS ADC1 MODE = 'AUTO ' / ADC mode HIERARCH ESO INS ADC1 RA = 110633.415575 / %HOURANG RA (J2000) pointing (dHIERARCH ESO INS ADC1 DEC = -182124.884539 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS ADC2 MODE = 'AUTO ' / ADC mode HIERARCH ESO INS ADC2 RA = 110633.415575 / %HOURANG RA (J2000) pointing (dHIERARCH ESO INS ADC2 DEC = -182124.884539 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS FILT1 ID = 'FREE ' / Filter unique id HIERARCH ESO INS FILT1 NAME = 'FREE ' / Filter common name HIERARCH ESO INS FILT1 NO = 13 / Filter wheel position index HIERARCH ESO INS OPTI2 ID = 'DIAPHR.27MM' / General Optical device unique IHIERARCH ESO INS OPTI2 NAME = 'OVRSIZ ' / General Optical device common nameHIERARCH ESO INS OPTI2 NO = 3 / Slot number HIERARCH ESO INS OPTI2 TYPE = 'SLIDE ' / General Optical device Element HIERARCH ESO INS MIRR2 ID = 'DICHR#2 ' / Mirror unique ID HIERARCH ESO INS MIRR2 NAME = 'DICHR#2 ' / Mirror common name HIERARCH ESO INS MIRR2 NO = 4 / Mirror slide position HIERARCH ESO INS SHUT1 ID = 'TSH ' / Shutter ID HIERARCH ESO INS SHUT1 NAME = 'Telescope shutter' / Shutter name HIERARCH ESO INS SHUT1 ST = 1 / Shutter open HIERARCH ESO INS SHUT2 ID = 'SPSH ' / Shutter ID HIERARCH ESO INS SHUT2 NAME = 'SPHERE_SHUTTER' / Shutter name HIERARCH ESO INS SHUT3 ID = 'TSH3 ' / Shutter ID HIERARCH ESO INS SHUT3 NAME = 'D2L_SHUTTER' / Shutter name HIERARCH ESO INS SHUT4 ID = 'TSH4 ' / Shutter ID HIERARCH ESO INS SHUT4 NAME = 'THAR_SHUTTER' / Shutter name HIERARCH ESO INS SLIT3 WID = 0.9 / Slit width (arcsec) HIERARCH ESO INS SLIT3 Y1FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y1OFFST = 4750. / Offset in Formula HIERARCH ESO INS SLIT3 Y1RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 Y1MIN = 0.062 / Minimum slit width (arcsec) HIERARCH ESO INS SLIT3 Y1MAX = 5.572 / Maximum slit width (arcsec) HIERARCH ESO INS SLIT3 Y2FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y2OFFST = 4560. / Offset in Formula HIERARCH ESO INS SLIT3 Y2RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 Y2MIN = 0.05 / Minimum slit width (arcsec) HIERARCH ESO INS SLIT3 Y2MAX = 5.513 / Maximum slit width (arcsec) HIERARCH ESO INS SLIT3 Y1ENC = 10719 / Slit Vertical top motor absolute eHIERARCH ESO INS SLIT3 Y2ENC = 10504 / Slit Vertical bottom motor absolutHIERARCH ESO INS SLIT3 LEN = 12. / Slit length (arcsec) HIERARCH ESO INS SLIT3 X1FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X1OFFST = 2381. / Offset in Formula HIERARCH ESO INS SLIT3 X1RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 X1MIN = 0.087 / Minimum slit length (arcsec) HIERARCH ESO INS SLIT3 X1MAX = 15.752 / Maximum slit length (arcsec) HIERARCH ESO INS SLIT3 X2FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X2OFFST = 2307. / Offset in Formula HIERARCH ESO INS SLIT3 X2RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 X2MIN = 0.064 / Minimum slit length (arcsec) HIERARCH ESO INS SLIT3 X2MAX = 15.833 / Maximum slit length (arcsec) HIERARCH ESO INS SLIT3 X1ENC = 6548 / Slit Horizontal left motor absolutHIERARCH ESO INS SLIT3 X2ENC = 6479 / Slit Horizontal right motor absoluHIERARCH ESO INS FILT3 ID = 'BS5 ' / Filter unique id HIERARCH ESO INS FILT3 NAME = 'OG590 ' / Filter common name HIERARCH ESO INS FILT3 NO = 5 / Filter wheel position index HIERARCH ESO INS DET6 NAME = 'Red exp. meter PMT' / detector name HIERARCH ESO INS DET6 CTMIN = 2. / Minimum count during exposure HIERARCH ESO INS DET6 CTMAX = 31. / Maximum count during exposure HIERARCH ESO INS DET6 CTMEAN = 13.4 / Average counts during exposure HIERARCH ESO INS DET6 CTRMS = 4.03 / RMS of counts during exposure HIERARCH ESO INS DET6 TMMEAN = 0.51 / Normalised mean exposure time HIERARCH ESO INS DET6 CTTOT = 50699. / Total counts during exposure HIERARCH ESO INS DET6 UIT = 1. / User defined Integration time HIERARCH ESO INS DET6 OFFDRK = 0. / Average dark background counts HIERARCH ESO INS DET6 OFFSKY = 1. / Average sky background counts HIERARCH ESO INS SHUT6 ID = 'REXS ' / Shutter ID HIERARCH ESO INS SHUT6 NAME = 'Red exp. meter sh.' / Shutter name HIERARCH ESO INS SHUT6 ST = 1 / Shutter open HIERARCH ESO INS GRAT2 ID = 'CD#4B ' / Grating unique ID HIERARCH ESO INS GRAT2 NAME = 'CD#4 ' / Grating common name HIERARCH ESO INS PIXSCALE = 0.182 / Pixel scale HIERARCH ESO INS GRAT2 X = 2048. / X pixel for central wavelength HIERARCH ESO INS GRAT2 Y = 2048. / Y pixel for central wavelength HIERARCH ESO INS GRAT2 FRML = 'ENC=OFFST+RESOL*ASIN(WLEN*GRV/(2*COS(ROT)))' HIERARCH ESO INS GRAT2 OFFST = 3911858. / Offset in Formula HIERARCH ESO INS GRAT2 RESOL = 15000. / Resolution in encoder steps HIERARCH ESO INS GRAT2 GRV = 0.000312 / Grating grooves/nm HIERARCH ESO INS GRAT2 ROT = 22.668 / Grating rot angle HIERARCH ESO INS GRAT2 NO = 2 / Grating wheel position index HIERARCH ESO INS GRAT2 WLEN = 860. / Grating central wavelength HIERARCH ESO INS GRAT2 DISP = 0.1 / Grating dispersion HIERARCH ESO INS GRAT2 ENC = 4037360 / Grating absolute encoder position HIERARCH ESO INS TILT2 POS = 0. / Science camera tilt (pixels) HIERARCH ESO INS TILT2 FRML = 'ENC=OFFST+RESOL*ASIN(2*POS-(MAX+MIN)/(MAX-MIN'HIERARCH ESO INS TILT2 OFFST = 15927. / Offset in Formula HIERARCH ESO INS TILT2 RESOL = -100. / Resolution in encoder steps HIERARCH ESO INS TILT2 POSMIN = -222. / Minimum camera tilt (pixels) HIERARCH ESO INS TILT2 POSMAX = 222. / Maximum camera tilt (pixels) HIERARCH ESO INS TILT2 ENC = 15927 / Camera tilt absolute encoder positHIERARCH ESO INS SHUT7 ID = 'FPSH ' / Shutter ID HIERARCH ESO INS SHUT7 NAME = 'FIBRPROJSHUTTER' / Shutter name HIERARCH ESO INS DROT END = 162.451 / Physical position at end (deg) HIERARCH ESO INS TEMP31 NAME = 'Iodine cell temp.' / Temperature sensor name HIERARCH ESO INS TEMP31 START = 6.8 / Temperature at start HIERARCH ESO INS TEMP31 STOP = 6.7 / Temperature at end HIERARCH ESO INS TEMP31 MIN = 6.6 / Minimum temperature HIERARCH ESO INS TEMP31 MAX = 6.9 / Maximum temperature HIERARCH ESO INS TEMP31 MEAN = 6.7 / Average temperature HIERARCH ESO INS TEMP1 NAME = 'Temp. blue camera' / Temperature sensor name HIERARCH ESO INS TEMP1 START = 5.3 / Temperature at start HIERARCH ESO INS TEMP1 STOP = 5.2 / Temperature at end HIERARCH ESO INS TEMP1 MIN = 5.2 / Minimum temperature HIERARCH ESO INS TEMP1 MAX = 5.3 / Maximum temperature HIERARCH ESO INS TEMP1 MEAN = 5.2 / Average temperature HIERARCH ESO INS TEMP2 NAME = 'Temp. red camera' / Temperature sensor name HIERARCH ESO INS TEMP2 START = 5.4 / Temperature at start HIERARCH ESO INS TEMP2 STOP = 5.3 / Temperature at end HIERARCH ESO INS TEMP2 MIN = 5.3 / Minimum temperature HIERARCH ESO INS TEMP2 MAX = 5.5 / Maximum temperature HIERARCH ESO INS TEMP2 MEAN = 5.4 / Average temperature HIERARCH ESO INS TEMP3 NAME = 'Temp. table' / Temperature sensor name HIERARCH ESO INS TEMP3 START = 5.8 / Temperature at start HIERARCH ESO INS TEMP3 STOP = 5.8 / Temperature at end HIERARCH ESO INS TEMP3 MIN = 5.8 / Minimum temperature HIERARCH ESO INS TEMP3 MAX = 5.8 / Maximum temperature HIERARCH ESO INS TEMP3 MEAN = 5.8 / Average temperature HIERARCH ESO INS TEMP4 NAME = 'Temp. inside air' / Temperature sensor name HIERARCH ESO INS TEMP4 START = 6.4 / Temperature at start HIERARCH ESO INS TEMP4 STOP = 6.3 / Temperature at end HIERARCH ESO INS TEMP4 MIN = 6.3 / Minimum temperature HIERARCH ESO INS TEMP4 MAX = 6.4 / Maximum temperature HIERARCH ESO INS TEMP4 MEAN = 6.3 / Average temperature HIERARCH ESO INS SENS26 NAME = 'Barometer pressure' / sensor common name HIERARCH ESO INS SENS26 START = 740. / sensor value at start HIERARCH ESO INS SENS26 STOP = 740.1 / sensor value at end HIERARCH ESO INS SENS26 MIN = 740. / Minimum sensor value HIERARCH ESO INS SENS26 MAX = 740.1 / Maximum sensor value HIERARCH ESO INS SENS26 MEAN = 740. / Average sensor vlaue HIERARCH ESO DET ID = 'CCD FIERA - Rev 2.69' / Detector system Id HIERARCH ESO DET NAME = 'ccdUvR - ccdUvr' / Name of detector system HIERARCH ESO DET DATE = '09-07-1998' / Installation date HIERARCH ESO DET DID = 'ESO-VLT-DIC.CCDDCS,ESO-VLT-DIC.FCDDCS' / Diction HIERARCH ESO DET BITS = 16 / Bits per pixel readout HIERARCH ESO DET RA = 166.63923157 / Apparent 11:06:33.4 RA at start HIERARCH ESO DET DEC = -18.35691237 / Apparent -18:21:24.8 DEC at start HIERARCH ESO DET SOFW MODE = 'Normal ' / CCD sw operational mode HIERARCH ESO DET CHIPS = 2 / # of chips in detector array HIERARCH ESO DET CHIP1 ID = 'CCID-20 ' / Detector chip identification HIERARCH ESO DET CHIP1 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP1 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP1 X = 1 / X location in array HIERARCH ESO DET CHIP1 Y = 1 / Y location in array HIERARCH ESO DET CHIP1 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP1 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP1 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP1 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET CHIP2 ID = 'CCD-44 ' / Detector chip identification HIERARCH ESO DET CHIP2 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP2 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP2 X = 2 / X location in array HIERARCH ESO DET CHIP2 Y = 1 / Y location in array HIERARCH ESO DET CHIP2 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP2 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP2 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP2 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET EXP NO= 5121 / Unique exposure ID number HIERARCH ESO DET EXP TYPE = 'Normal ' / Exposure type HIERARCH ESO DET EXP DUMDIT = 0 / # of dummy readouts HIERARCH ESO DET EXP RDTTIME = 45.306 / image readout time HIERARCH ESO DET EXP XFERTIM = 45.301 / image transfer time HIERARCH ESO DET READ MODE = 'normal ' / Readout method HIERARCH ESO DET READ SPEED = '2pts/50kHz/hg' / Readout speed HIERARCH ESO DET READ CLOCK = '50kHz/2ports/hi' / Readout clock pattern used HIERARCH ESO DET OUTPUTS = 2 / # of outputs HIERARCH ESO DET OUTREF= 0 / reference output HIERARCH ESO DET OUT1 ID = 'L ' / Output ID as from manufacturer HIERARCH ESO DET OUT1 NAME = 'L ' / Description of output HIERARCH ESO DET OUT1 CHIP = 1 / Chip to which the output belongs HIERARCH ESO DET OUT1 X= 1 / X location of output HIERARCH ESO DET OUT1 Y= 1 / Y location of output HIERARCH ESO DET OUT1 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT1 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT1 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT1 RON = 3.1 / Readout noise per output (e-) HIERARCH ESO DET OUT1 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET OUT4 ID = 'R ' / Output ID as from manufacturer HIERARCH ESO DET OUT4 NAME = 'R ' / Description of output HIERARCH ESO DET OUT4 CHIP = 2 / Chip to which the output belongs HIERARCH ESO DET OUT4 X= 4096 / X location of output HIERARCH ESO DET OUT4 Y= 1 / Y location of output HIERARCH ESO DET OUT4 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT4 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT4 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT4 RON = 2.06 / Readout noise per output (e-) HIERARCH ESO DET OUT4 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET FRAM ID = 1 / Image sequencial number HIERARCH ESO DET FRAM TYPE = 'Normal ' / Type of frame HIERARCH ESO DET WINDOWS = 1 / # of windows readout HIERARCH ESO DET WIN1 STRX = 1 / Lower left pixel in X HIERARCH ESO DET WIN1 STRY = 1 / Lower left pixel in Y HIERARCH ESO DET WIN1 NX = 2148 / # of pixels along X HIERARCH ESO DET WIN1 NY = 2048 / # of pixels along Y HIERARCH ESO DET WIN1 BINX = 2 / Binning factor along X HIERARCH ESO DET WIN1 BINY = 2 / Binning factor along Y HIERARCH ESO DET WIN1 NDIT = 1 / # of subintegrations HIERARCH ESO DET WIN1 UIT1 = 3800. / user defined subintegration time HIERARCH ESO DET WIN1 DIT1 = 3800.000019 / actual subintegration time HIERARCH ESO DET WIN1 DKTM = 3800.6512 / Dark current time HIERARCH ESO DET SHUT TYPE = 'Slit ' / type of shutter HIERARCH ESO DET SHUT ID = 'ccdUvr shutter' / Shutter unique identifier HIERARCH ESO DET SHUT TMOPEN = 0.039 / Time taken to open shutter HIERARCH ESO DET SHUT TMCLOS = 0.039 / Time taken to close shutter HIERARCH ESO DET TELE INT = 60. / Interval between two successive teHIERARCH ESO DET TELE NO = 3 / # of sources active HIERARCH ESO DET TLM1 NAME = 'CCD T1 ' / Description of telemetry param. HIERARCH ESO DET TLM1 ID = 'CCD Sensor1' / ID of telemetry sensor HIERARCH ESO DET TLM1 START = 135. / Telemetry value at read start HIERARCH ESO DET TLM1 END = 135. / Telemetry value at read completionHIERARCH ESO DET TLM2 NAME = 'CCD T2 ' / Description of telemetry param. HIERARCH ESO DET TLM2 ID = 'CCD Sensor2' / ID of telemetry sensor HIERARCH ESO DET TLM2 START = 137.1 / Telemetry value at read start HIERARCH ESO DET TLM2 END = 137.1 / Telemetry value at read completionHIERARCH ESO DET TLM3 NAME = 'EBOX T ' / Description of telemetry param. HIERARCH ESO DET TLM3 ID = 'Box Temp' / ID of telemetry sensor HIERARCH ESO DET TLM3 START = 283.3 / Telemetry value at read start HIERARCH ESO DET TLM3 END = 283.2 / Telemetry value at read completionHIERARCH ESO PRO CATG = 'MERGED_AV_SKY_REDL' / Category of pipeline product fraHIERARCH ESO PRO TYPE = 'PREPROCESSED' / Product type HIERARCH ESO PRO REDLEVEL = 'PHOTOMETRIC,GEOMETRIC' / Reduction level of daHIERARCH ESO PRO REC1 STATUS = 'OK ' / Pipeline status of frame HIERARCH ESO PRO DATAAVG = 22.3485 / Mean of pixel values HIERARCH ESO PRO DATARMS = 188.721 / Standard deviation of pixel valuesHIERARCH ESO PRO DATAMED = 10.9678 / Median of pixel values HIERARCH ESO PRO REC1 START = '2002-09-30T09:42:56' / Date when recipe executHIERARCH ESO PRO REC1 RAW1 NAME= 'UVES.2001-06-19T00:16:41.862_stk.fits' / File HIERARCH ESO PRO REC1 RAW1 CATG= 'SCI_POINT_RED' / Frame category of raw frame #HIERARCH ESO PRO REC1 CAL1 NAME= 'UV_PDRS_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL1 CATG= 'DRS_SETUP_REDL' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL2 NAME= 'UV_PORD_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL2 CATG= 'ORDER_TABLE_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL3 NAME= 'UV_PBKG_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL3 CATG= 'BACKGR_TABLE_REDL' / Frame category of calibraHIERARCH ESO PRO REC1 CAL4 NAME= 'UV_PLI1_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL4 CATG= 'LINE_TABLE_REDL1' / Frame category of calibratHIERARCH ESO PRO REC1 CAL5 NAME= 'UV_PLI2_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL5 CATG= 'LINE_TABLE_REDL2' / Frame category of calibratHIERARCH ESO PRO REC1 CAL6 NAME= 'UV_PLI3_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL6 CATG= 'LINE_TABLE_REDL3' / Frame category of calibratHIERARCH ESO PRO REC1 CAL7 NAME= 'UV_MBIA_010617A_REDL_2x2.fits' / File name of HIERARCH ESO PRO REC1 CAL7 CATG= 'MASTER_BIAS_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL8 NAME= 'UV_MFLT_010620A_REDL860d2_2x2.fits' / File namHIERARCH ESO PRO REC1 CAL8 CATG= 'MASTER_FLAT_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL9 NAME= 'UV_PDRS_010620A_REDU860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL9 CATG= 'DRS_SETUP_REDU' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL10 NAME = 'UV_PORD_010620A_REDU860d2_2x2.tfits' HIERARCH ESO PRO REC1 CAL10 CATG = 'ORDER_TABLE_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL11 NAME = 'UV_PBKG_010620A_REDU860d2_2x2.tfits' HIERARCH ESO PRO REC1 CAL11 CATG = 'BACKGR_TABLE_REDU' / Frame category ofHIERARCH ESO PRO REC1 CAL12 NAME = 'UV_PLI1_010620A_REDU860d2_2x2.tfits' HIERARCH ESO PRO REC1 CAL12 CATG = 'LINE_TABLE_REDU1' / Frame category of HIERARCH ESO PRO REC1 CAL13 NAME = 'UV_PLI2_010620A_REDU860d2_2x2.tfits' HIERARCH ESO PRO REC1 CAL13 CATG = 'LINE_TABLE_REDU2' / Frame category of HIERARCH ESO PRO REC1 CAL14 NAME = 'UV_PLI3_010620A_REDU860d2_2x2.tfits' HIERARCH ESO PRO REC1 CAL14 CATG = 'LINE_TABLE_REDU3' / Frame category of HIERARCH ESO PRO REC1 CAL15 NAME = 'UV_MBIA_010617A_REDU_2x2.fits' / File HIERARCH ESO PRO REC1 CAL15 CATG = 'MASTER_BIAS_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL16 NAME = 'UV_MFLT_010620A_REDU860d2_2x2.fits' HIERARCH ESO PRO REC1 CAL16 CATG = 'MASTER_FLAT_REDU' / Frame category of HIERARCH ESO PRO REC1 PARAM1 NAME = 'FFMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM1 SVALUE = 'E ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM2 NAME = 'EXMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM2 SVALUE = 'AVERAGE ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM3 NAME = 'BGMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM3 SVALUE = 'MEDIAN ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM4 NAME = 'INTMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM4 SVALUE = 'Y,Y,Y ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM5 NAME = 'MTD2D ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM5 SVALUE = 'N,MED,E,A' / Value of recipe parameterHIERARCH ESO PRO REC1 STOP = '2002-09-30T09:43:38' / Date when recipe executHIERARCH ESO PRO DID = 'PRO-1.15' / Data dictionary for PRO HIERARCH ESO PRO DO ID = 'DO-1_16 ' / Data Organizer identification ID HIERARCH ESO PRO RBS ID= 'RBS-1_11' / Reduction Block Scheduler identification IHIERARCH ESO PRO REC1 ID = 'uves_obs_scired' / Pipeline recipe (unique) idHIERARCH ESO PRO REC1 DRS ID = 'MIDAS/02FEBpl1.1' / Data Reduction System idenHIERARCH ESO PRO REC1 PIPE ID = 'uves/1.3.3' / Pipeline (unique) identifier HIERARCH ESO PRO REC1 RB ID = 'sky_860.rX' / Reduction Block identifier HIERARCH ESO PRO ARCFILE = 'UVES.2001-06-19T00:16:41.862.fits' / Archive f HISTORY ESO-DESCRIPTORS START ................ HISTORY 'CRVAL','R*8',1,2,'3E23.15' HISTORY 6.605747520000001E+03 1.000000000000000E+00 HISTORY HISTORY 'BIAS_SUBTR','C*1',1,3,'3A1' HISTORY YES HISTORY HISTORY 'BACKGROUND','C*1',1,11,'11A1' HISTORY subtracted HISTORY HISTORY 'WSTART','R*8',1,20,'3E23.15' HISTORY 6.650410880000003E+03 6.724294400000004E+03 6.799844160000004E+03 HISTORY 6.877100800000004E+03 6.956145600000005E+03 7.037019200000004E+03 HISTORY 7.119802880000005E+03 7.204537280000004E+03 7.291344320000005E+03 HISTORY 7.380224000000005E+03 7.471338880000005E+03 7.564729600000004E+03 HISTORY 7.660477440000004E+03 7.758663680000004E+03 7.859410240000006E+03 HISTORY 7.962839040000005E+03 8.068990720000005E+03 8.178027840000004E+03 HISTORY 8.290031680000006E+03 8.405164800000008E+03 HISTORY HISTORY 'NPTOT','I*4',1,20,'7I10' HISTORY 2716 2746 2776 2808 2840 2872 2906 HISTORY 2940 2975 3011 3048 3086 3124 3164 HISTORY 3205 3247 3289 3333 3379 3425 HISTORY HISTORY 'NORDER','I*4',1,20,'7I10' HISTORY 91 90 89 88 87 86 85 HISTORY 84 83 82 81 80 79 78 HISTORY 77 76 75 74 73 72 HISTORY HISTORY 'SHORTLOG','C*50',1,3,'70A1' HISTORY Recipe log (Mo, 30 Sep 2002 09:43:38): Science reduction do HISTORY ne. ........................................ HISTORY .......... HISTORY HISTORY 'REDBLOCK','C*48',1,45,'70A1' HISTORY recipe: uves_obs_scired instrument: uves HISTORY /raid52_uves/calib/UVESSKY/files/r.UVES.2001 HISTORY -06-19T00:16:41.862 { HISTORY /uvesy/data/raw/2001-06-20/UVES.2001-06- HISTORY 19T00:16:41.862_stk.fits SCI_POINT_RED } HISTORY { HISTORY /raid52_uves/calib/2001-06-20/UV_PDRS_010620A_REDL860d2_2x HISTORY 2.tfits DRS_SETUP_REDL /raid52_uves/calib/2001-06-20/UV HISTORY _PORD_010620A_REDL860d2_2x2.tfits ORDER_TABLE_REDL /raid5 HISTORY 2_uves/calib/2001-06-20/UV_PBKG_010620A_REDL860d2_2x2.tfits BACKGR_TAB HISTORY LE_REDL /raid52_uves/calib/2001-06-20/UV_PLI1_010620A_REDL HISTORY 860d2_2x2.tfits LINE_TABLE_REDL1 /raid52_uves/calib/2001- HISTORY 06-20/UV_PLI2_010620A_REDL860d2_2x2.tfits LINE_TABLE_REDL2 HISTORY /raid52_uves/calib/2001-06-20/UV_PLI3_010620A_REDL860d2_2x2.tfits LI HISTORY NE_TABLE_REDL3 /raid52_uves/calib/2001-06-20/UV_MBIA_0106 HISTORY 17A_REDL_2x2.fits MASTER_BIAS_REDL /raid52_uves/cal HISTORY ib/2001-06-20/UV_MFLT_010620A_REDL860d2_2x2.fits MASTER_FLAT_REDL HISTORY /raid52_uves/calib/2001-06-20/UV_PDRS_010620A_REDU860d2_2x2. HISTORY tfits DRS_SETUP_REDU /raid52_uves/calib/2001-06-20/UV_P HISTORY ORD_010620A_REDU860d2_2x2.tfits ORDER_TABLE_REDU /raid52_ HISTORY uves/calib/2001-06-20/UV_PBKG_010620A_REDU860d2_2x2.tfits BACKGR_TABLE HISTORY _REDU /raid52_uves/calib/2001-06-20/UV_PLI1_010620A_REDU86 HISTORY 0d2_2x2.tfits LINE_TABLE_REDU1 /raid52_uves/calib/2001-06 HISTORY -20/UV_PLI2_010620A_REDU860d2_2x2.tfits LINE_TABLE_REDU2 HISTORY /raid52_uves/calib/2001-06-20/UV_PLI3_010620A_REDU860d2_2x2.tfits LINE HISTORY _TABLE_REDU3 /raid52_uves/calib/2001-06-20/UV_MBIA_010617 HISTORY A_REDU_2x2.fits MASTER_BIAS_REDU /raid52_uves/calib HISTORY /2001-06-20/UV_MFLT_010620A_REDU860d2_2x2.fits MASTER_FLAT_REDU HISTORY } E HISTORY AVERAGE HISTORY MEDIAN HISTORY HISTORY 'LHCUTS','R*4',1,4,'5E14.7' HISTORY 0.0000000E+00 0.0000000E+00-2.6714474E-02 4.1873226E+01 HISTORY HISTORY ESO-DESCRIPTORS END ................ END =©$z=¥î„=¢c=£‡8=«is=±‰=®®›=ª˜‘=«\=¯\ª=»!æ=³$ó=²*›=Æù¶=Í=к=ÒïÄ=Á­—=²6«=¨°Á=¦N=¶ð•=µ´›=±³ú=­­=¬sÜ=¬%=­=ÁÂM=ÀµŸ=¿dP=Æð#=¤Ÿ½=£)]=²¤Z=®°m=¦?u=¢ª=§‚X=¼¹¶=³òû=¨ˆÏ=Ò·i=ºës=¬Œ=¤nÁ=žp=­­=·.Œ=¡ZÁ=¥¯;=´²Ð=ʪ…=»Ïq=·£ñ=³«=­„=Ÿ-º=©#q=´{=°á=­ã»=¯ Â=´ =º—=¨ãè=¤Øž=»•_=¸‘K=³¾µ=­,=ž,=®ä•=ºV=ÄEK=Ÿ1¸= g™=¥~=³Ú=‚=½e =³ª=§6=©‹=«³²=±Øý=»Ï=²¿Ž=­J#=±¿©=ºöB=º›¢=ºzÅ=Ìb=ÁŸ®=¸ÇZ=¯ð¼=£‚Ç=ÆÁ©=þFƒ>4ú°>9F>0[ >; =Ë›7=Êÿ=Ç X=Â2¦=¥š=¤ka=£2ì=¡Ðä=´ä=ÓÐÔ=üRÛ>!š@>Z:>Ð:>ÿþ=¶Ü¬=·c‚=¬|˜=•¶=¶d=É´=ÏŽs=¼öt=Õ9=Ì€º=¾ð±=­ùÍ=©•,=¦Ä¨=¥Üî=¨&=±}å=¶…=·m=²Ö=ºïN=ÛT=ÏÕË=¿&Ï=¿=¾¯t=£ƒ=® õ=»#<=ÈmÀ=§tF=¿.–=½UÄ=¥ôV=½`i=¸mæ=±Ï&=¤áË=žûq=­ô›=ºº=º i=¿ï]=ÀuV=¾bG=¶µB=²}J=¯^1=®úÎ=¾­’=ÅÛ=Éo=Ì£&=Éé;=¾?=³yo=ªî=²˜s=®ò=¬—=± š=±Fä=¶VÙ=»"=¹³:=¿F'=º|8=±äL=» Œ=¼ßê=¿`¯=ýÖ=¿Øº=½†„=Ä =ÓeË=Ü°Í=É_Ü=º>S=²?/=¬Wb=¹6Ú=¾½!=® -=¶A£=¶¢Á=³ÚÈ=©V`=¸4k=À‡=ÃüG=³K(=²âj=¶$=½\}=ÔéR=ÆÚn=ÅÌ=Çj[=§Z=¶«¼=¼3»=º,j=¼Û¡=¹Jø=¹0ý=¼ -<=·fc=·=´ÛÀ=°ci=¸M“=µÜç=µ0=»`=¯z=·pû=¾$Ù=¼ ‰=É,´=½ò=¶Œ=Â:ö=¾íå=´-¤=¯Àq=ÂË=¾í =¾¸û=ÃÏï=Ü„=ÝÖ»=à¥1=àŒ<=Ìr =±^=°¯Å=¶´œ=À•=¹)=ºÈ=½kq=´ô'=¸lõ=»0n=½¤=¿sµ=¯ =·˜==Çï}=Åû[=È+ó=ËŠ =ÌÆÇ=Ð.N=çÏ =ÝìŒ=Æ'G=°O=¸Ÿ&=´(=¬^¢=½íH=ºjý=À§Ò=Çp=´×H=¹ãþ=¹=·=/=¾Î2=¿ûØ=¸Á?=¬Ó.= Ú£=©µ'=µ#==»¬½=°/ =´¢Ý=°¨ô=°A=ÉVú=½(=»Th=º«=¼eð=ÀÈ=ÂÙt=ÂÄO=¶Ôª=ÐJ=Î-é=Ä%O=±g=·¯3=¸n­=¶k=«È’=±(¹=°ÿŽ=µd²=§(=½Oš=·™é=¸’Ç=ÁÞ=µî=†§=ŸT=¿»ÿ=Ç¡Ö=Çãi=ÆÐ=ÅKo=ÇfÄ=ËÂê=ÅIl=¸rH=·æi=Ï…=Þ€ =è=á©<=ç=Ðâ€=¹ä€=µæÁ=¹nv=¹ _=¶ºz=²—ÿ=½ïb=çä=Â+=½ZÓ=Â/›=¶žJ=³Qê=¹x3=±R=´®=Ã9o=Ù\"=å~š=ô£f=ô3÷=ë£Ñ=ÐÒÞ=¶ø¢=´=º`Á=ÂL‘=½5+=°H =¬„=»»=Ä*B=Çr=É%=Ì$=Ê\Ú=ÕÊ=Ð=Æ© =ÎNâ=ÐRx=ÏÛ1=Ñ_:=ãâ›=óÏÅ=èª.=⤱=ðAT=Ù¤»=âÚ=ÛÉK=¾Ží=Ð}J=Æ;ï=ÌQÉ=Û'™=Í!‡=Èl=ÓWÇ=Ý·œ=Ò7=Û×b=Ö|¿=Ò¶9=Û¸=ã‹=Ý¥>=Ýfí=ãG =Òe=Ïñ=ÙûÐ=çþ{=ùÏ¥=ä@>=Û8S=Þ±Z=ò›Î=ä»á=ÙÈ=Ó‘ß=Ô7²=Ñ‘à=ÒE=Ùà¼=á\Ð=ÑEN=ßì'=Îö¸=Á‰=ÍWä=Ç!I=ÊJ=Ç¥Ä=¼Ï^=ŸhJ=œX¬=¢ôl=¨\=bš=Îs=Ñß=Ðχ=Õ\”=²¾.=Âdf=Äý=¿mh=ÃîN=Ï>f=̱î=Á­­=«Tw=Ä)=Èù–=ÈM­=ŧ =˲=Ãk=Å-S=Ï¥ö=ß%ª=ÖÖ§=Ùh=ÖÍE=Ç«e=¬–›=³"=¹œ =¾‹Â=»˜ß=¼í=¿¥4=Ä/õ=É^~=µŸ¾=ªO§=¦ ú=¨R=±Á=©L@=«ó=®×å=²œL=¼ƒO=»ï6=¹nO=´Ë=­Q=¹Ë=¹4Ã=¶ç=®ÈÄ=²~‹=³çl=²»Â=¬ž€=§å7=£Ûë=¯2Ë=·­$=¹ñ=³«È=»û0=µŸ“=²Âä=ßP;=سµ=Ñ‚Û=ÖGT=ã{®=ÂK´=²²¿=«ÿÜ=©ÿZ=©©ò=¶¨A=´ðç=°[=©Nè=¥u'=³ÿˆ=±k¢=¯Î×=¶+“=§pä=®³È=¶ ¡=¸¦†=§6+=©·=¶'=³ÀÐ=¢ûT=©_M=©ß=­E£=±$™=¯¢€=¸òð=³&=¬D¦=§Aý=°Íû=½6}=´'=­Ùc=°Ú =½ä4=²*ø=®g=©èî=¥}=¯çü=¾×5=Ò¤Ù=â;e=ÛÙ=Ã~=½Á3=³q¦=¨sz=»åN=Óî=ÕÂØ=ÉVÒ=±ñ9=³Å=®%v=´L™=¹×-=³Š@=©lÐ=¥IW=ª2ø=¹V¬=ß.;=ÊVM=Ñ5Ê=ɵå=·]=¿åÑ=ɪð=½)=º?Y=ÇØN=ÆuÕ=¯±r=®—£=°©H=¯kæ=°˜Ý=°"=µÜ%=¸þ=¯8=¹±=º@À=²ñ¯=­®z=¸• =½i=»8à=µ®È=­¡o=­(à=ª/=²‰=´±ˆ=³=p=Å>=­=r=§Xê=©×=­#ú=¦B¬=ºoç=¹¨À=ÁSD=ÑR=ÆÚÀ=ÄÏ=ÀL=·:W=®C¨=­oý=ÁüH=Åä¨=¾ =®a„=¨MÊ=°ŒÉ=«Œ=¬®¦=¶*!=©W;=±ž=Âx³=ÌPÄ=É<=·À[=§4Œ=¶ïƒ=½·ì=±È,=½œë=¯<Ó=§c<=¤¢=¤ ·=®å=ª]ë=¦M¿=² ×=È]…=¶Úî=°â­=º$=¸Vp=®îA=À!1=µÞU=¸%=¶ ¤=±lû=³¼>=ª. =²ÄF=¼Wô=¿c¡=´õ=©‚=®©'=¸þ=Ä9£=ǘì=¹,È=´&æ=¼ÅÍ=Å m=¾ÐS=¾ =˧V=Ì9Z=Ìæ7=Ô=ÂuÄ=¿·³=¿=½[è=º ‚=³ü¢=À„4=ºÂZ=µÞV=´€9=±¢=ºì>=¹rR=ªŸ=¥i–=¨š´=´Xý=ªÖ -=š­=¢,;=¹×›=­ãg=¶«ñ=ĵ=¬²!=¶˜³=Â:y=®'= ÜÌ=¦c´=Ÿ=>=°`Ï=®¬ø=´k­=¹ §=³›l=F¿=Â*Ó=¶^Ó=¬Üy=Ý8=Ÿk=µÜU=º%Á=©µñ=ÃN=°ñp=¨äm=³7o=¢7=®ËÒ=Ÿv=›µG=§~|=¸Ü0=¿R½=¶"=ž «=¢Vú= -^=¦¾¢=¯‚=¡ö£=³½ -=ž§(=ª =´D¯=»Z9=¹ê= óy=”Þb=˜;}=+0=©ÅG=³Í!=­u!=œX©=“>ç=‘Ö{=i=¦S =¦Cn=±Þ“=£Àƒ=°oG=´“-=º~=®µZ=­cî=È+æ=©ç=¥Ø…=£Ä¾=¢hŒ=ª$=œ/ø=©ÊÉ=£äŠ=›`•=¦ãö=¨4=©À=óª=³=·ê=Åø=Å¿Ì=µÚ~=¦,‡=¢a_=«]£=¯»ý=¬`=œ›ˆ=œ /=¯Ïw=á=M>}“>¾î=ÿðÌ=ì–(=ئ=Áˆ=º/]=¼ë:=Ý=ô >þ”>œË=ù<=Íß&=ÁÏ×=ȪŽ=»n]=¯rR=¥(Ë=²Ž?=´åÜ=¼Cö=Á*=Ãd=¶›°=³r£=»{=¹˜¯=º¿Ë=À=½=±‡ã=®@7=¹L†=²ÒS=«ê=É\ñ=¾Nˆ=ÅÍf=¼ñ=µg¹=¹_Q=ÈÌA=¾¡Ÿ=·éC=°Ì9=°,=«/á=¦o‘=¨K…=¯7»=§4\=·B‰=¿F«=ÈÔˆ=Ôrú=Ë]F=À¨H=Å“ï=§,= •=µô=·z=®E=ªï=±AR=´Ç=¦Û=§v“=²åä=³I=¬®Ù=Ÿ«›=·ZÛ=´b=«ìÒ=§f´=³q=·Í =¿ç`=Óéþ=ÐæÑ=Ó…û=Ä=ñ=®“j=¤¼ˆ=§f…=®’:=®}N=•´^=”œó=¨o¤=¬2 =©×Œ=›f¥=ª„ =¶IŸ=¼Û[=¦² -=ª½-=¬‡|=¤Ð=š‘Ó=¨Ùc=¤‘=³î=­/æ=×þ§=Î,%=¾Cî=Àº©=á™x>&‹> ¼(>Ë> )=ì—µ=ª­ò=¤xî=²VÝ=žôî=Z×=˜ÊG=²‡Š=¢6=°|=µR=¹ -=ÈQ=ß°e>£õ>µ> -Óý=å°=ŧã=¶I=¤[[=®}¾=±áÄ=«8S=¤&®=§ix=Ì=›½­=­e=¥Ì4=Ÿ´l=žï= ¥„=œ[Œ=¤t×=°e¥=«‰³=ž6/=¬Tê=½ü=Åå²=·ö=ªìg=¯ñ@=«ì=«~=›u0=¦,ü=¹R5=Ú™?=™8=¡!ú=žA=£õ=¨Ç=§¡S=¤ é=£,V=˜Ÿ=¡@Ø=µã>=µ^=¾m¢=Õ;Ÿ=Üý=Öã(=¾áÖ=°¢ =„=©Ó=©ô€=§f~=«+1=¤¼= ²¬=¯?=¤žÌ=¤*=°8=±Z_=”=¡Ux=¤ƒ=™è=šj+=žÏ0=Ÿ>ï=± =¡’)=»’ð=²S›=­è=§ß$=¢¨=žlr=­o¨=«ÿ=“¬×=›Ê=ž=£A=©† =®åL=˜ÓÊ=¨e[=µÍ=§b=°·µ=¡¤=¥¥%=—G=ž.“=±n7=¬Ý=¥b«=ªP1=¬è=´°R=œ|=è+=œû=¢5y=£EB=¡‚á=©§C=¶U=Æ -j=Ö}Á=¯´z=¶€²=À¯=Ãj0=« Ï=¨¾j=«Ä+=ª÷ì=­ÔÒ=³€=˜ß¯=£A>=¤Ï=ÀM€=½¢¸=®Ã=£ Ð=¨z­= Í=¬é.=¦uk=£yÌ=¬\Ð=©6®=^=–G=²¼ =¹ÁÙ=>ï=’ P=Ž¬·=ŸLk=«=£—g=ÉG~=¥g2=àC=™%Ý=¤»_=¶çU=¬r•=§T}=Ô=›¬=˜W<=³£W=©Õo=—Ɉ=›‡m=›“$=›Q=±v‹=­oK=§ˆÇ= Û3=Ÿ¤=ŸTð=¯þ=§X|=S=³]o=ØÔ=»P¸=°C:=­†ã=Ÿ;Æ=«—=¹Gz=¹×¢=¿x=Ãä‰=¾R†=¬Ü8=°.Û=»ÜÓ=™|º=“©*=˜\=¹‰V=½¼[=¦˜w=ž&J=Ÿ_]=§)¤=­&=°À=§„=›Ó=œ§|=«ò=¥=¥õ =¬à7=ºã€=´2=¯º¥=¯IÇ=¸ó(=½•ü=¡-=’0=š^=¬:Ø=¥Ý‘=–Æ;=¢U=¨æ=ŸÆ=¢8=Ÿrò=…õ=£ÙJ=©A=® ½=¬É=¯BG=©Ds=¨ˆ=¬ÂÆ=·Ï=¿ñ]=»Äš=¯ §=£?=¦|5=³€=¬ …=®ê;=·M=ŸË—=ŸHí=©Äƒ=¬Yƒ=­Q=¬ës=°$û=©ïó=ŸßŒ=™eX=ž¯/=©¿À=¤uŒ=«Uø=¸¢l=·¢Í=³ç=­ìs=¨Áø=§c”=¤Ë/=¯‡$=³»2=¸÷=¤$6=!´=—Œ_=¶®-=° U=¥æ=¤Š=£_=¡iÉ=“r=•qî=——4=¯ž=°z=±£Ì=—¸=šõ=›.ò=‡Ž]=”Îk=ŸZ=¥³…=¦U¹=§>ˆ=¢¼Ñ=®nt=³Ø³=£» =³•=¹º‚=§›=£/j=£pû=¯ÜË=¦Ž,=¢n =¤è=£sT=£/ =£ z=ª­P=©ÄE=¡&®=©{;= šL=ˆb=–ô@=¡ Ú=¯°L=¨mÎ=«=±@G=¡°=£p=§ÅÀ=–^=’“º==–¸=¢^%=®Éý=œ—|=–£=’=­Á¬=£¬=œŠ =«8{=¨Ìe=©==³Ô=«‡ô=¨·.=¬’=£F¸=¢õ=ªÁþ=•äo=•.Ñ=¤f=šü†=œ¯,=¥¨ÿ=¨3Y=¦z²=£É=¤Z×=¤e=¤A =° I=³b)=¶6y=ª¾=ª$¡=ª<Ë=¤S´=V¼=š­b=­Ø=¢Ë=œZ=œO®=¬@Ç=¯ž=¢ø€=¨ÇÝ=§#k=œài=£ùV=¢ù=žX=¨ !=­¦]=²?î=¸ €=¸ŒÎ=¸r=—ÝF=¡BÐ=ªM#=§I¼=®x»=´eò=¹ Ã=ª„×=¢Œð=¢7•= tw=¢-(=¨°7=¨b+=§ñë=¦ã.=µ:=®eº=Ÿp2=žÐ\=¡ð¨=¥çW=¦6Ì=œJ•=”ÁÃ=­¡|=¨|÷=§¬j=¶lP=¶æ‡=¶V=±±Ï=º›=¶£ô=§tm=¥ÞM=ªù =µ8c=«Zµ=ª*5=ª=ª48=§Ž=¤ØP=¤Z=£…G=¡…Ö=˜ò7=­¤=³ç`=¨ýÔ=©?d=§vÌ=¢ÉÎ=«o=¦g@=œ‹+=¹–w=­ý=  H=»›5=°+/=§ÁË=®<3=²"­=°å= H=¯Pð=®s]=ž.u=¢^«=Sç=“L”=ºzq=´1=¨ Ë=§¿@=­nº=±‚Ä=«î¨=›wì=•¯–=¢ùÜ=¢¸=¦'v=±Ô=šõo=¤ŽÊ=»£=Á5=¸ž=®‰=©Å/=¯½±=°¬'=›ê(=¥ó=§g=›}‡=žb×=¦'=´Pé=ž€=ŸŽR=£·™=¨jk= oå=›×=ª‡=¨02=¨.<=®ŸQ=§ )=¢9>=œF'=³ÊÜ=±*×=§º=µ»“=³Ý=±L±=§…T=©ÿ=©\ = éÈ=¡A=œÛ==’WR=ªùÑ=¨u=Ÿ©(=©‹à=£\<=ŸÝ§=¯c =©‡¶=¥ZP=Ÿâ=¯§o=¯Ka=¤2= ÆÅ=£¨o=§úå=¡ß=Ÿfh=ž¡y=¤Æ‡=°P=¯‚V=›It=’_Ÿ=›c‹=¯£¯=§!g=£rÂ= VH=¥ñ»=ŸqE=œ¾ù=¢Ýú=­•„=®3=§Š¸=°T«=¹û=Äšñ=²J=µ=C=·ù=²+=Á”=ȇº=Ëh=±Áƒ=¨j =¢[¡=¥› =¨B=¨TÇ=’¶Ü=£SÅ=©s =Ÿ^¢=¬eù=¥,Õ=“yÂ=±.|=®øÇ=©‘ -=²uH=±‚0=«Å=™í=ªG6=¬âo=¨(=˜;Ž=šor=Ÿþ=¡ee=¥»¶=¨Fñ=¦ÐQ=«¥“=«ÄŒ=©(<=²U¬=´ÕŠ=µ€f=§…Ü=¬üÃ=¬Ç=ŸMO=¢—{=@=‘L=šËV=£ß—=©åž=™è=¢Zƒ=¦¶Ù=§÷=¥z³=Ÿ­=—1=¸,g=¬ws=£ñZ=´ã,=«j=§3è=¦{ì=±›³=±ƒŸ=¯bÇ=ª¼L=®ož=¯mà=¦j²=¢=¿=Ÿ ª=›gM=¡e&=¡Ê=¢¿I=¬u3=¦)u=¤Ç¶=¬*r=¤F =£ë:=¥{l=žÖF=ªÇ*=¯==‘* =¥œ=ªÌ„=¦²=š£^=  D=§{ó=¨÷¾=­< =­¬b=¥–3=¯¥ž=ªÅ[= oQ=©JÄ=©?ü=§f¬= (I= GÐ=¡ù»=¥×Õ=¥#2=§ù=¨u=£}=˜ûì=˜ ¿=£]¬=è=§Uå=³äì="=¦Éf=ª¡®=£h9=¤À¿=¢âq=žE:=™ûæ=¢ƒÞ=§Z=œ“–=°D%=µ  =±Î==”ê|=šVÙ=¡^”=¤w=©¥%=§eÎ=ŸøY=†ÄA=’<ÿ=Ÿ©þ=–—é=—`°=šªW=¡—=– -¥=›R=¢¢›=“Ár=•¥=“ß>=Žƒ=¨óù=¡ß‡=–—º=¶µ=©M=¡’?= á½=œvd=š(==™M—=™m†=–ó=”Í=“¹=žTÕ=˜H=Žæê=§OF=¡ x=›;8=’è =šº’=›€r=š‰¶=¤’J=¤ž[=§ý=¯“3=®•Ò=¨‚7=Ÿ£^=’G»=˜Cz=žÈÔ=¦læ=ª!U=«-á=«Œ:=¨3h=©ë·=¥Jç=—g=–Wø=– ö=™U=¥ŽÑ=™n6=“ÿÍ=‘I=¬²#=¢ð~=—jx=–HÁ=…߶=Õ«=„ùG=…L€=m/=‘Ÿ¦=†Î‡=š=’GÑ=’ùÙ=™Èh=˜ñ=•bê=“Œi=$+=‘§•=—5£=q©=ŒF6=ˆGX=„}Ó=Œº°=”Ѷ=™ö==…¥5=“d=–è"=“9†=œ{²=žBA=ž#M=™*,=‡Ñ2=Šº=”,/= =“9i=Š1s=‡¯÷=ŒN=‘Ð,=—¤Ä=“›=”º¤=°)=†ó]=“{§=Ÿò=¤]C=šƒ½=ªïç=¬=8=©M=ªö4=’¥=¹Á=§m®=šV´=¤;3=«=n=•Ý[=§Èÿ=¦\=šNì=Ÿü=¥ë¤=«4=¯}j=  6=œ“\=›_=ž6A=œu<=—¾=Ý=ŒÎ+=ŒÜã=8%=›\†=ª&:=¨º=£^=›œæ=£çÂ=žë=üš=’®U=ŸÌÎ=¦ŸZ=£¢=˜®b=Ÿù0=¨$!=›c‹=£œl=¥"=¡ãÑ=­|:=°æD=°¿y=©ª>=¥£=ªFý=¬üý=àW=¥=¨M\=©¾G=¥Ü%=­n=­Sý=¢î_=¡çy= = …I=£#[=žï=¥m=®l^=«:|=¯8»=ª,N= pC=ŸÞ=§@M=¥fÞ=“%N=³q=§C=š.«= ŠP=¨•=¯w+=´ð„=¬°=­À{=® z=°Ð.=­%J=ª¤8=©L =§!u=£F5=§Õ´=«yŸ=¨Åõ=šø©=“EF=Uƒ=¦sæ=ž›¢=œ0u=Ÿ±=¥ =|Ñ=¤Ù«=¾Ý4=õ+Ê> #†> üý=þ~%=²·=£%ù=¡e =˜·‡=Ÿ6= Ñý=¤‡=Ël=ÖÌU=àá™=ë,Ë=Ñë =»{=­’ =«4%=§y)=¨^=¦ÖC=žw±=¦}¥=®Úx=³@=«Ãë=­õÅ=µ’‡=¼w=­O=À& -=Àį=·ï-=¬Ia=²Çò=¯\×=£ïâ=«\ì=§i =¥º“=©ž=±¨b=²v=³Ê =¶U=£-›=œyl=Ò'=°îË=£ˆ=ª®=±"e=¡=J=¥†æ=­Yi=²Å= ü=¡ à=õ§=š„R= ïb=°¡=®I=¤*Å=Ÿ2×=¨«I=®3¸=²+ =·„ñ=®ôK=¨ v=¡ ¶=«A5=±Lõ=¯EÄ=¡‹€=ªöÀ=°›X=¯1§=§+R=´fñ=²6ª=§çï=‘—‚=ê•=¥Y£=©ü=«{ö=¹p&=´gÒ=©œ=œóq=­ä¦=ªÕf=¦ùµ=ª ¤=«Ùg=­ö×=·Û\=à7Y>3>ì@>g6>oµ=ÅVf=¯¤w=­€==·€=¡Yn=«M=µ®=«OË=«~=¯™"=²KZ=¥n= ÀM=¤x=«åÌ=·ê=ç³w>Ý›> -äû> ^y=ßÀî=Ä -ª=²p¦=ª°O=¨ Ž=§ÖØ=¢³+=Ú›=«üŒ=© -æ= ¬È=ž:=¥Ÿ¹=±€Z=³I=’ÜJ=›Ðe=§!M=©¸=—=Ÿvô=ž½é=¡¤.=¬õn=ÄŸf=®Š¢=¢ã=¨8=£d=¥¥=­×õ=À2=­”…=­².=­bå=«AL=™ïÂ=œÅ=¢Èí=ªè<=Ÿò³=¦•=¥·=£9¥=œW=\k=¢˜U=©˜=¬S= ª­=¥5ˆ=­ã©=«_(=«š4=«§#=«ã.=±i7=¬¯²=¦í=§¹W=¶L‘=Ÿ=¢D0=©Œ=´â@=š=«µm=²²ž=©ƒ×=¤›ï=°~û=·":=¹uî=¨¢+=¦éû=¥á=¢èr=›öÜ=ª*û= §V=™ãæ=«E\=¯Ë=Ÿ’µ=˜`Ä=ª9Ã=œŽ&=¢×=¥‰1=¤jÝ=”Bß=—ÃÐ=œ:Œ=¡Ü°=«¦»=¥âó=ªªA=°ö=­R=¥0q=ª¢×=­W[=Ÿ’t=£Æ}=¤ƒ=¦mß=¦ï=ºÝ=¢Ë¦=£`ª=¢bÆ=¢P»=£‘|=¢ l= Vß=°‰=°üá=©s=£u=£À1=±EM=¬Ü˜=š1=rßQ=Ÿ°1=œ.÷=œJ{=ŸÄ­=›==¨ÉÇ=¥}Ç=žŽ=žåá=¢Uè=¨ñx=®=­‚á=¯$¾=©7=§Š=¨ø©=ª\É=ªé>=¡l|=•"f=Ž8@=š¥×=¡’=£Çì=ŸÂX=¡‚2=µ/t=­È=˜3 =¡ÏY=¦‘€=¨S =¨\=£„Ë=‘°S=¤ÈÜ=© =š§ã=¤†= Ä¹=žýd=ŸÅq=¨=¯n=°‡Ý=±—›=±•=±â=¸·a=¼Ñ‚=±n$=³Ç#=¤B'=›Žš=›=¨68=´~=­ =¦fŒ=¢ç¶=¶ú=´ë'=¬&H=¤€=¥{1=9;=¦4==¬=¯Ã=­=¶Ëú=³©ì=¯®Q=¾ùÑ=§Å½=±³==´ph=©Ã=µ‹¸=™f=• Ë=ž¿W=ª'w=²õ=¯©À=§”=˜Þ<=›”›=˜ ö=œ»=¢‹º=¥;†=˜Ü -=—.ü=–Ý—=šÁz=¤>=ª'u=¤ Î=£3À=·CÊ=£Cs=œ!B=š1_=›Vj=žo=—M= ŠL=žã|=”S =˜fn=£“°=¥}Ì=¢ýÊ=¤ÁU=«t5=®üŒ=«öÈ=¡Û(=¦†=®C°=ºVv=¿šc=´ä¤=²‰s=²Ð3=§²p=›á²=­±=°0=±³@=·º=¿„T=¶^=¯WÍ=®¬=¬"= ÐÕ=¦„=¬¡=¯Ú=ª½>=‘¯ó=šbÝ=žmÈ=ŸÂD=Ÿªr=³ =°¨Š=¥”t=›;=—Ù=šE=¥\®=¤ÓL=âµ=—øÔ=¥ö=¬pï=° =«ï=•²š=°=ªsÌ=¥¹==¨-¬=›¸j=¦~ -= ™=›S&=£‰=¢=±@=©‡Q= $v=«R=¢øÆ=¦ù'=¢-/=ŸPø=µ4Û= <Ä=›sH=žõs=¨¾¥=¹…=«-Ò=£‚0=©ÿ=´¤ =™2ø=«¨N=©£=£âš=ŸÀ=§==:×=¢¬=¡£}=’ Š=«,„=¯|=­ú=¬¤=¯É=«Ï\=¯%ô=¬6&=§'¹=¢G®=± =¸ r=«gB=¢’=´[]=¨9è=§Ø(=¤³ú=¤R×=­Çw= Oþ=§àÏ=¬oZ=­ j=ª5 =§ e=ÀÕM=ã¸=þNb=öÅ=Â_‹=µ‹˜=ª+ô=¦ ?=°ÁŽ=Ô£=ŒÐ2=–¨K=¨>=§ -±=¬²Â=-F=‘„˜=-Ý=Ÿó©=žä4=¤¶=¡_b=š'G=‘‡™=œ¨=›)ë=›=¡Ý=®íà=O6=œŒù=—¼¡=™ŠÍ=¦ö&=¬¼=£ð=¢¢=ŸœÆ=š&É=­¸=«©i=©ˆ=¦Þá=¦[=¬Ä¬=Ÿ.ž= ¯y=§ƒÁ=­Èñ=ª®”= ï”=šu&=£´@=¬Ú¨=£(õ=¹H9=­øN=¦ï½=¡Öò=ÁÇ=¶Ô»=¢dÇ=¨Ðg=§ÇS=˜üØ=žž'=ž6÷=˜¤J=ªü{=»@Ô=–H#=­§=²¸|=«ìN=¢$¸=Ÿ&=¥oí=¢UÖ=ª¡X=¯Øt=§P®=¡Þ«=¤y¯=Ÿsp=š R=™¾Ç=­[2=”z¦=–I=  =§@ø=›òA=ªGë=žÜT=œ#…=ŸJ=¨=¤yÚ= —=¦!=£“¨=›J¡=¦éâ=®4¦=¹—=±Ñæ=°{Ø=´Ý“=ˆ=«7=^†=—¨Q=O=˜üe= ¶=œª9=¢”Æ=¨à^=§w‘=¤‘ú=š=G‚=ž*Ü=¡[=¸¯g=­¥=£ÇX=§é=«ÀÁ=ªöN=»Ö}=§–Å=›þó=—=¤‘È=±ƒ=¨tÞ=ŸT=¥Ù=ªe­=ª ¼=®+8=©…÷=¤ÖD=©¿=¨RX=˜ÿ=«Ë&=¡Ó=¢¿u=¢|”=¡—^=©ÜÒ=šd= ð =¨%==¯¢˜=´{²=È==ÆlO=º0ë=½½L=¼­=½d=¥q{=¢m==žQš=n®=¡=V=®7Þ=—µ’=¡¤­=« =­¶×=¨=]=¬!=®Òé=|¹=“Æ=¡Bj=«X=§FÌ=¨?y=¥Ë=¢¤=¦‚·=«2ð=fU=–À=—ðç=®þ= s=¾=¹|=ž¬= ;^=¤ÄK=§þL=¥“B=¨=Ÿ8Á=ž´l=«0Ù=¯l5=¨¢ä=¨dí=º°I=Æ›4=¿'~=²þ$=±‹Û=±c=©õ’=¢Z =–~Ê=”D{=ž¸þ=©&X=©îÂ=£}¼=¦iÏ=¯<þ=¯ÂN=ª)«=¡ À=¢¯ã=¢{–=¬“=¯©ì=¨9k=‘¢ñ=¨kÍ=°$X=¹™Ý=¿2N=˜¶Ø=¡O;=ÆÉt=»±T=±µÏ=­Í™=ª÷=¤øÇ=°¿=Ÿ=Ÿß[=¡_=pM=¬ J=§x=œÂ¨=œÖ=œ{=¢Ä=­×ß=¢×=§Š`=¡#µ=±ø(=°iÖ=©G‹=¬DJ=§ê7=£†%=¼¤¾=ª7=¡y =§µ =ž^=œzh=©€þ= N:= 6¨=šØÅ=™=£¼a=«Ù¹=¢¯=¬í=­^=™š·=›£\=¢gr=½x«=Ïɬ=Í3£=çÕq=á§T=à7=ÍNS=ª™‡=–‰Ú=™;a=£$$=Õ¦=›I¦=˜RJ=¢„ñ=©â{=¥±¦=¸@t=¼$O=¸ú®=´7=©3=œÐH=nð=œ`=ªè§=Ø =®ÛG=¦,ã=œà4=üï= Ú¬=™Î¯=¬òÎ=“¶¦=‰r=¤ÏŠ=œàY=“ñ= ª˜=›ž =¢"Q=–>Ç=9h=©è=¨¼_= ’›=¨»€=¥/=ž81=~l=ˆñ×=’Ÿ=«ãI=³õf=®{}=£È´=œðæ=–uM= ú=ŠÝ=“ž=‘æo=ŠFi=¯:G=ñ =¸ç+=¿t&=·ÒD=«¸Q=´¢_=¹ù‚=¦Ìk=¨€F=­”³=¦7»=¬Í=³Þè=›#:=—Z=©Mh=­ —=°e-=¡ª©=¦†ê=¬žE=§jÓ=¡ëC= }Ó=›Ò?=–Ô³=šÈã=ªR@=°î÷=¨ï=¥ü=¤{U=¤ºp=¬>Ö=Fš=œF¬=¯øý=•èg=–±.=›$i=’H=”w˜=¦ÜÄ=™Î¼=œ¼=›íH=©8l=™!“=‘xÔ=©cd=¦À+=©m£=±n:=­¯I=­ÐD=¶<¸=²o=› ú= Ÿ{=¥¹K=¡\(=›þ“=±#Z=·±Ê=µëF=ª£=¶:=®ãâ=›D=§ìÊ=«•€=©Ä¢=¦àl=ýG=Q+=›Ü‘=¨æh=¨L=Ÿ­O=˜ý=®˜=¼Ô\=±ØB=¬\I=©‡=¦.=±§Ž=³8=£dx=´l†=¨9¢=¾íœ=¼XÍ=³S)=» Š=¼XÓ=¹šÖ=·¢=¸äœ=´ñF=¬eg=ª:=ªœ=ÆÞ”=ºm=¢€=¤éÁ=ª”Y=±îå=¨©|=¦g=¢¡=¶>õ=©C=ª§h=«¤·=¯ º=¦Ú‚=«23=¶VØ=¥¥)=¡¿®=ºA=¨f<=˜˜s=œà0= ný=«à=®M…=§yÆ=¨"È=¦°S=¡rV=¿S=£¸E=žÄi=œ7=“Bn=Ÿ^*=­é=©0®=«Àû=¬ø=­<÷=¦2*=¼ú -=¹Þ=¹+‡=Ù¯u>?RŒ>½œ?ªAç?Ùp‰?ë H?µ¬ô?k«X>–ög=åiP=¹ÛM=¶_=¡«=¥=±Å=­ •=«a­=­2i=¥õt=§UŠ=°Ì¡=˜¸µ=º=­b=¬ëá=°Dœ>qd>¢Œ™?¤Ò?\ w?\®??í>²Š>/>ú=¤Þæ=¥è=¥Ü©=«WG=£¿I=¤fâ=§ =™² =Ÿ"Ý=ª=©Fä=²C—=¼Æá=¹n˜=°‘«=¿F>«>D]ë?aXÜ?ÿˆD@F-@R²”@4æ ?ýêc?#¶‹>¡Ÿj>’>_x>g0·>Ô‡C?;Ð??W)Ÿ?VÉë?q>°>”=Ô-ª=®¨=›+‹=£â,=¤ðj=¯9=­çÝ=¦îÇ=œh]=žø*=Ÿ8Ú=¬Pú= þ=šãÁ=ß'=¥“«=±û²=±™b=(=–å =¯ñL=«{ó=¤MÛ=©Í==¡àÀ=“DÔ= ‡=³‰2=Ïñ>> ‡š>Ò=îB°=ÐK=§ž=«5(=®[=³œS=¥]—=¤Ü -=³w×=©àÌ=±*=àÔz=ë¸ =ð×'=æÉu=ß”ï=ÕEZ=¦7=¡5=ž™š=ªÍ=ª¸®=« Z=¸à…=¸\I=¸Û´=³W>ÌÚ>GìD>ÍQÝ>ÔD}>Ù¸ã>°L]>š3‹>…±>Ž(#>zvM>W=ôõ=З°=¬3Z=¦TM=›l=œ¼=÷µ= Ë”=£_ë=²£®=³b|=³ßp=¸x=¶Z=²n/=—¨ = y=±S%=·¨ö=µ¼=¯ðæ=ÊA^>‰V>V H?n{}?”~Ž?®f˜?’Öõ?Sçç>oD>p·=æÝ9>¤]>Éä ?©"@A˜¤@e‹~@YA¾@37?‰êÖ?¿=Ý?¢=·i'=²øû=¼(w=­ =£åý=—R=®lÐ=ÁÚY=àsq>x>Ôž> y>þ(=ôÖZ=Áér=¸Ay=³öf=®’á=¨Sã=¢É‡=œÊË=¡Â5=¦Ú£=®š -=Çe£=ÏÜŠ=וÍ=Þ =Û!%=ÓŒï=Èw³=ÄŠ=Á9>\> »›>·ª>‚ç=âä=¶N8=¦ÇÁ=®=ºÖ=º2¡=ºö.=¼I,=Áï§=µE.=¢û`=½^ß=²ä=¡ã¼=¡E=ª:=µ=ºê©=½3H=¿z=º=¶Õl=±Ì^=‹K!=šÖë=©ch=­ù«=§_¢=¢W9= §ö=§§R=®Jc=¼gj=¼,—=¹öœ=¥š=˜'k=”ÚN=¬w=˜­¡=®r=žcR=©  =­­ˆ=©)Á=¬¿§=¬ƒ[=¦EÍ=¬Kß=«¤ =¢:“=±”º=·£^=¹‘Ö=°Ú§=®DW=¬Ü×=½€=¶=£Ð=Þ =ó°= Åâ=£°=£H“=£ºz=k­=œÃ]=¬îÒ= <¶=«V=´í×=¥èÌ=¥ßR=§s=µ==²‡=°ÿ -=¯pÈ=²tU=³u»=®Íi=ËÌ´=ë—²>p–>A’>K²T>:#>—ª=ëå¾=¡Û=®Ð=Î9Ö>ç >[0£>w¾>†~[>Wm¶>1¸ï>«Ú=¹Ò=¶BV=¶JÌ=´ ü=®†=«b‘=¶+Ã=ªÄÿ=¥>(=¯B¨=¬¶=©>è=¦ír=­^=­ùa=§¨H=©/ë=£½q=•\Ç=”ç=œ=«Œ=¢©n=¦£=¯GL=ŸWÏ=£Ü=¨É‚=š¸À=R=†µõ= õ½=–øê=‘jÒ=—wq=šÁ[=ŸgZ=«Òˆ=Ùh_>H³>Ü:n?–T ?¯Eß?®âÌ?e¤þ? B{=ø9¤=µso=´¥=ºiu=²u¬=¯í9=®FÕ=§§=¨‚q=§Ù==šn=¢o;=§)É=ªí©=˜Äâ=œÅª=¶w=«ºõ=©§®=©o=ŸM¾=¤™‡=¬¢Â=±¡'=³M®=´ç`=¹ š=«ê0=£1@=¨@=¨Ò=¤?„=• i=Ÿ1÷=¦·T=°oë=¯X­=£(ñ=jÖ=´Už=´M3=°°(=œmë=œRÌ=ž~=¨ÄQ=¯‹=´|=¸¡¼=¶üá=°Ûõ=¢†K=¦zë=¡š¢=˜u²=´¢V=´6á=°}›=£ÿW=«MK=®Ö9=¢Ð =¦6ø=¥Ù…=zZ=Ÿ³ø=Ÿ[y=žëD=”ã&=š»~=¦åü=®Üç=¹Z¬=Â<’=ž‡V=¦åç=­CX=²Àù=¤ë‘=Ÿ…ð=¡I=¼|l=ºb=«\/=¡:Y=£˜m=©eÔ=°h1=¸ =¾ïÃ=ÆŸ`=Ãí^=»÷}=¤ÿ=¤¾®=£À=¤Lö=¯øW=µ@¨=º=¢Ìõ=§†f=­Uí=­=¤ns=¡þK=«=£’=šá=‹³L=˜©®= ©«=¨nö=«j7=¦úN=¤ûé=´°Â=£ £=˜Ø¶=’$.=©*[=ªþ=¡Õ/=—¥ =¦¥©=·ˆ]=—¾¿=¨ë=´4T=µH·=¨24=¦ë~=²vµ=¬V“=§˜ò= ½&=±a:=§È=Ÿöj=«^=¨&·=¨úÕ=³§„=¬Øw=¯Î¶=º+2=±ß#=¯q=®› -=£™¸=˜³°=™î¬=ÀÛ²=Êãj=ÂÌ=¨Ÿ¾=ŸEÄ=£ÚU=¬*=§= ÉÀ=ž¿m=µÄ=ª|=¢ï;=œ·Œ=¦d×=¦Z =¤d£=«Á`=ž×N=–Sf=¥”ß=¦ â=¡ðÅ=”²n=·ŽÁ=¯Ô©=™5=œÑç=±½=¿Ìü=­ß=®y=­p6=¦à=¢ò=ŸnO=œ—Q=¢1=«s4=µöÑ=Ñ"î> ï–>>,?N>"¯E>÷Ù=ÊÎC=¥KK=·þÙ=ÄK=¸{=®Ì=¬o›=¯0`=±\[=®b³=« B=®v•=ÝÛ˜>\>,„>=ó«>@Š&><”Ö>%”o>  l=è&=šâÖ=¬+=°˜:=¢h5=±ºT=¶èé=¹r,=°'u=§U=Ÿ±‡=œ´¶=§uÂ=«û=¯eÕ=¯ É=ªs•=¤jò=£©x=¬ô2=®Â=¦\%=›„÷=Ÿ =ªL==“Ì)=¥Þ*=´d=·=µÌ=·ñû=Àļ=´r=­Åß=§ÇÚ=­9?=¬çl=¯6=¸4Ç=³”™=°ƒ7=®§Ö=©KY=¥Ç£=¤o=¥w[=£Tí=Ÿ¯]=˜¬!=¥çM=§ûI=¨ÙÖ=ªÆÛ=œµ«=œo˜=§L×=¦cY=£Oî=  =©Z,=®Æ=®Í=¨Øx=š(1=œ“a=¢¯©=¼O>=¹¶ø=´+o=¤©"=£§9=­>=¹þ”=¤r(= U¦=F·=œ>O=ž«­=Ÿ©·=Ÿ•=„¹=’¼>=–˜Œ=™Yü=°d¨=¹Ïÿ=¼K‡=Ê&.=Åχ=Áþ=º‹ =œ5"=šqo=¤\©=¯ï=¶û=¶À)=¨C"=¦4¸=¡£=šv“=¤¨=žð=—b]=Ö=£Uw= É=è¤=”Ð=›Ž= §K=›N¬=¡éH=£ð=¢òC=±&Ð=´Ãä=´Ùç=±Í=ôó=ž€=§²=®ç'=² ›=´ &=´Á™=¾Ï=À²=¿qn=´1Y=±di=§|k=‘­K=³‘r=³¿?=­Åã=¢'=°CS=¸ D=½Ë=±Š==£Âã=˜ü±=¤:X= m= 7$= ¤C=šR=œë0=Ÿ $= bi=º¬_=¸/R=ªÊÙ=;R=£]§=¨væ=®Ã=±ü`=°…ž=­ÍÀ=§^ž=¤T=¤C=«`„=®n = ÿÕ=•*~=š!D=©&=ª6µ=¦—=¬@H=šêk=•‰õ=­OZ=¡» -=¥„ˆ=¬cÉ=®*_=¨f9=¤SS=¡WB=³±¶=¥å=›öc=©/=·^=¶.#=®Å¡=¥¬’=¦…©=­d˜=¾TÄ=±}ó=²bW=²¼=—a=žb€=§cv=±04=­;á=¬|Â=¬ -*=¯Õ1=µâe=®}­=¦Ãð=­J=©Æ‘=ªƒ =®Pc=­%=¥Ù= |4=¢¶=¬U<=¢Ø$=—^=UC=° B=´çz=²C=³¹C=©&Ó=¥Pk=°Bj=ª8~=§i,=¦§4=§™7=¬‹=¦€Ú=š=š=§‘ó=°Ù!=²é=©&÷=¯R8=¬ƒ==§i,=©¶=°S2=ª}‘= ô=¶3z=·E\=¸+i=·åb=ÈéU=ÄbC=¼Ì=®&‚=ÁvZ=¿B4=¹m=¸öÛ=ÄŸv=¾¯=­˜Ö=Çì{=·ZT=«á‚=§ =µw=©ü³=¢u=­ZÂ=’±=‰ét=¤@×>v²±?ò†?3§°?NÞÎ?e]ç?'Ã? -¸õ>Á×u>1|=Ä®=´1L=ªø=§Ða=°ù=º5J=¿ID=±v=£KÜ=©dÎ=µ³=¼"=Áƒ÷=Á®®=Àž==Ðe›=Ì«0=É”µ=ÆÞÉ=ËA=æçí>¢‡>Bµ ?·~þ@¯H©ApÊAž}@ï% @—Âõ@ØM>&p±=ìÎV=Î=Àu=°‰6=¸©=²ê =ªH$=¹0Ö=¬š·=²]=ÂÃ.=ÂéŒ=ÆæÝ=Ƈ=¿¶>;o> -]Î>ëk>¼=ãäc>£k>U…>O?=÷ <=Õ§¢=¸ü=©j=¬HS=³UH=·wS=°Øw=±çŽ=°g¾=®3Î=«× =¤a=¦ãÊ=¨n[=“‚î=¥¾f=¦ÌÜ=¢ˆE=´¡w=±V|=³à¬=¸Ïw=¶ ‰=»À =¼j=¹—Ä=£˜×=¬±>=§ŽQ=šWN=ª8=®yI=®Þâ=«J0=&Á=œ=¢È=¬7ù=ºÙf=°›˜=¦Ýv=Â%=§Yß=¯ˆˆ=®Ã\=¤ÒÞ=ªó=¦¼k= „=T0=•‹===n*=@F =@É=b~s=]øŽ=.(™=²=,âÈ= %=þ|S=ü‚(>¡À> -ú> 0¹=äÎF=¨áÊ=gE=X=‚óG=y|o=T¸Z=…³<ú÷<ÜwU=Š=™j=ÌØ= º =âV=U€={Æ€=YÏ=žÝ=§ñ=¤}N=›ù=Œñ=ŸMu=¨ãä=«Á{=¨*d=«Üx=žà=‘n==…²f=Tc\=ˆ<£‰4;ßî<¡Îå<äËá=L=KíD=wðÔ=Š“p=•2t=šk´=—ל=¦¯“=¥Üî=¡­=¯–=¬åK=¡–=œ]ƒ=°•{=¬‹=§‰ì=¥Óy=§| =¾xÕ=ÃÉŠ=éš >"ù&?‡SM?—"«?˜}Å?ŠÛÔ? Å>3’&=2²0=6[<Í™=7;=QÝg=‡ê9=—™í=w%=¢ñÈ=¤¥…=¢e=¤²=¢Ô¼=¤$¡=«˜]=¢l=¢ò8=£Nñ=¡¿=—²=‘Aƒ=‚²î=^õ=&y_= C=«=â=4œˆ=pº"=†Qœ=”4ª= r¸=®ÇÈ=¢«m=–´Ã=‹qK=u&¥=DÜA=$â<´”<âTÙ<Ý -ø=!Œ=U{1=ƒ£ü=–î±=¨Ÿ=­ø÷=«W=¦E=¦~G=§Ù~=¨ Z=¬8=ŸdÎ=÷=š4=”~#=Y=~Ò$=gçý=L[ <Í„…<®…<Ð}=·Y=j|=Vú=—/e=—ïÙ=“p=¡µ$= .Ø=›ƒç=—¹¡=˜s¢=šñ=ž÷9=š¦ø=‹ >=”úÅ=ky=5¾å= tf<«8Ã<À¾v=•=b?¦=‰R‡=˜ul=› ô=Zl=œ{=Š…]=‰=•[5=¢¥E=¡e=–u=£º?=¦ë¤=£òï=‡Þ>=ö‰=‹œý=LÙÊ<ð¡<¨ê<éì„=ó„=K?ý=‘´L=˜—Ì=¡Fç=§lç=¤È=£Cú=©t´=¬?¤=ªÍ>=¤¯!=®…¾=«»§=ª_$=¹:…=¨ê]=´n¤=µ¦Ì=§Î¿=¤µO=¥8=ò=_“@=Wf<ÏÄ.<Àƒ]<ùP7=0_Ñ=^¹B=‘Ó=™Q€=ž¶œ= N3=¤üÜ=«z3=®e=®«Y=¯EW=­ =›l¥=•Ù=ŸÝ~=…ê=úþ=ˆw=k‡=4¬=,bÉ=9@Î=i³=˜+±=°{ò=Êà¶=á4³=ïG=ð÷ë=Ð0=¨ ¿=¡ƒ¡=§³Š=­ô =¹£Õ=ÄÂ/=Ëþ`=Ë  =²>4=³ÞE=©Xø=¦]=­k†=©Š=˜UO=•ÁG=›&F=§ØQ=»Õ)=±G¬=§@Ç=›´==‚Ã-=R!]='`=]£=Î=0ï<=k?=Ž©Í=™Í¥=“^:=›ù¬=Ÿ¸Z=¢Ñ=§•{=¬e¢=Á¥þ=¶Ð =·˜›=»Í=´&€=¶"¢=­ˆ6=›=·=‚Ü=MõZ=Cç=dÀË=‹þ§=¨q=»‹«=Ä[É=ÕGÉ=ܾi=Öd–=ÚÀ)=¶ï=§1=ŸY =˜Œn=²:[=°äë=°Ð=¬ä=œ»0=š¤•=¨0Ù=ÍU>>á×>ÔOÃ?¾?í¤>÷Úq>¢Ô=߈ >Mº>µ?2Û?S?ž>É]>gX>™> Xá=æÕ=¼s^=©‰ô=ŸÕŽ= ð=œº4=£QX=ªPÄ=¨…=£;>=¨§”=”!š=ï=± ë=Ä»>=Ì,¼=¾3=»ë=­Y+=ŸgŸ=´²z=ÚÖ¤=ú">Aè>d =ú O=øj>Î2>$²>,þÍ>#¤™=ë7I=Æ^ü=ª=š±L=•ƒï=¢ñÜ=°6¼=·xŠ=µ ú=©É…=Ÿîä=Ž®T=¬Ú¿=Õþ=î -´=íþÿ=צA=³–H= ÆJ=¢£Ç=•=©=“ô=šÈ=˜üâ=ˆ'[=I—= „<ð“‘=´e=WK;=p> =¢H~=šH^= f=«i6=®Öó=®ì0=—Ù=”`x=™ŠF=¢®v=¬õ‡=œ´=Ÿ¨p=­Ög=½5=œ;­=¨â‚=­2°=°¤ñ=·}=­Ï¹=Ä×Ý=«‘Í=œ‰,=–‡™=•õ2=¯ÑÁ=©†¼=¥˜Ö=£ØÖ= Á=¡qR=ŸºI=›À=™µQ=™lj=‘iÛ=£Ùr=—y)=“¬É=Ž9=ww¹= -£><ÿ¡¦<ûvp='=sƒ¸=­(­=ú—µ>Úó>Y>È=ë·£=ª­ð=­Ëå=œL=˜ ¿=£Ìª=£—¹=ŒE>=šŒ>=œô=•¯z=—‹°=ŒÛS=J‘~=y<ðØ«=òÿ=4'l=oTÂ=Œoã=‘Wù=—ã<=­íÝ=²ëk=ò©>8j>¹Œ=ñº=Úø= Z=°äì=³=§f=–`†=œâ7=¦”Ä=¤ =¡m=œçš=šë=¥Ñq=º’Q=©,U=©Ÿ=µ0u=—Ÿô=™A^=žÐú=žòö=¦Õ=­Êò=’}P=Ÿ Û=¡‰,=¥ð¢=¨Ì=¡“Ü=¢|=§±q=¤A×=¤)=³u=±Óv=«Øq=›“x=Žçx=…‰÷=fö=¢½<á¢<£õÉ=Å=R+= ¤Î=é„>·ÛJ? ?ÑÎm?ýºõ?î<.?ª€?&®`>¼Å=ÕC¦=³u =¨ìw=— -=›f´=m£=‘ö½=‚UM=E¤÷<ôl <Éš<úæn= á~=64]=ƒÆ=‰PŸ=“·=›Ï©=š=› -=‘ÉÁ=¹W£=¨Ü=³ÿ™=·Ñ=­ð®=¤:=»9Î=®tò=½Ž=º»Ž=³nò=±œ.=»D4=ÀP?=Ĺ=·Vg=­ëÌ=¨Ÿ=¦¯Q=›p“=µ}Z=¤ôX=§¢|=¹è¶=¯Ûö=¢’P=¶……=³‘L=«¦R=±q=¶0]=±_Ø=—BG=¢£Æ=©ð‰=¬‡f=«v=Ž{Q=ž.<=™hU=žE=¦ÒÇ=¬Ž}=¦ 0=·[=ŸÝˆ=–W=qýj=¶"<ð h<=r -<Ñ=$Oy=Z3q=ƒ’F=™<Û=šy=Ÿ>_=–äð=–À£=ôÏ=¡³=–Y,=ŒŸ5=³­=Û¸=™Žï=–8ì=™ºH=Re=f5¹=#Ø€<îD¯<ÃMA<ÀªÒ<å¿ý=Cá×=s=ˆ&c= $–=²aE=«éÓ=“oµ=´0¥=·NÓ=¥B=žµÄ=£ï=©rg=³«'>¦P>O!Ï>e)æ>Z…F>7|õ=è¬*=´ˆ`=·¥1=¡±ö=«KØ=¸ù‘=¬ò'=¹3£=íJï>;¨ß>ZL,>S"F>5ÐÓ> -ŸÛ=«h€=‘Gú=¯.©=¦ä/=£n =²¬,=¯¥h=œ m= y=šÚÒ=¨w{=¨=¥Œ= P~=¢é =«d¼=³éO=®R\=¡¥&= 9D=¢ë =›gÿ=žî¶=ŸÄ„=¨Ñ4= ±K=†xA=ˆ£=m^ä= NŸ<ò‹<² ><¡mÃ=«=D­M=‡>«=–ôÄ=˜ =—Hœ=¢ =œØl=œôe=œ»¾=ž  =›d=«U0=¢”•=“ªh=‹l«=‰÷ç=†Y=WÚv=<èî<ë><É M<ÏÄš=)=R’Ô=ƒ67= ²õ=–Kµ=–”=£ÿé=¨|‡=’" =Œ¥=šyÖ=•<´=š…×=œù®=”ïÛ=•Y‰=©¡=›W~=’ T=¥•»= MQ=¹·¯=¶WP= ýn=“çþ=žQû=®ü¥=š4=œÞ¶=˜±`=›Ðm=‘ð=™§“=šï =žw-=·¤~=²8"=ªÈ]=š…=‘QP=©»=½²\=¢ï½=œG/=§ß=·w=®æU=³ZÁ=²1K=Ÿ<è=¬:=­„Y=žú!=‘è =•wÃ=¥%1=²»=Áìö=£yÎ=«L„=«³C=¥å5=¦©ü=ž @=œÐß=§¥¼=€D=’Ù”=s==\-Ž=*Qº=¹<ê©¿=ó=Cn=€—=…:q=’®¬=™+œ=–’I=ž‚‹=žÓ=¢Ã§=ž÷r=ŽØö=š~=¡†_=¹­;>T>f¤°?WΕ?ì\@@¦?Í+š?È€>E×”=~Ô=„ Î=n>Y=m¥d=¥Å»=¡Ê±=©^ -=¿¤:=Ãr=·O®=©1^=©É´=¢ô}=–aÁ=ˆF= _]=­È=¯Åe=œÉž=¡q=šC¸= 2=œ =šÇ=¢,¶=«…Q=¼EÌ=·û=¦ì²=˜™#=«ãØ=®“¸=Ç3Ã=ÕZ»=í•H=óût=÷{x=çŸæ=Í›´=ÈÔ=µ'=«p`=™MŠ=“ŒÕ=‘?]=¢¡R=¦Ò’=íS=£‹Ú=©Aß=¬À=ñÎ=Ž”=¢-¾=›M=Ÿùv=«ƒ-=§¤é=¨:O=µ¸-=¸é=¾öÍ=ðHÍ=òÍ©=ìÎÔ=×zñ=Á›U=²…:=’•O=­b*=ã M=àI·=×%ß=ÂK£=©`p=3œ=Dþû="—ï<ùv«=F{n=sŠÆ=ŽC=ŠÓü=ŒFÞ=Ž–Ò=›î=£’š=’Û=˜ƒc=°·E=©¸=­m,=Ÿ`Œ=mE=Žõð=`m=o3==¤¯=Â<ýÊ<ξì=8´ˆ=„ªù= å=ÀŒ(=®ÐB=“¾v=¬i=®¿©=µÕ¢=°š=±iL=©A=šy×=®‚7=®Ž•=¡È¡=˜u=¡xö=£r=Ÿú¼=’ =íK=¤ h=˜æ¸= ?u=¬›= ú`=Ÿª+=¦{=±bé=¯ÍR=›‡G=¤Vx=ž¾²=§âX= jÃ=š%M=˜ì‰=—“=œ­¤=˜ô•=š«-=¦‰ -=£âU= ¦=…‚Æ=…x‹=„F =ŸúÊ=¨/Ê=§ó=¤„=´A@=©Â¢=ĸ&=¶Ü!= e¿=°½Æ=­m=¡CD=® -ö=¤‹=ž ø=¹‡~=½NU=Ÿ{D=±aÜ=¼ï½=¨*è=™ºf=¨=‘`“=œÚ?=ªL®=ŸöJ=ŸM=žÕ¾=(˜=žc=¢j=œuD=n¸=[™=^¥=Sî=O=`,×=„†=‡»ô=”6A=žZÑ=˜be=› -$=œ°»=ªK=¢ø=—¤6=¬Éì=¨\Ù= ´=«š=¬…Ä=©¯*=ŸƒŸ=‘ßÂ=Zó=*}p=#&*=P3[=€Aë=‘gÐ=§¶ã=™S=O=•a¤=›ø(=£-f= ¿4= Q8=¢6ÿ=›S=–÷€=‘ú½=“ e=“«õ=“½D=µT=³ -o=–¯n=¦8½=°È=¿Æ7=о‹=ÙB÷=ÙN¥=»d=©B`=¡Û=›ŽL=™"Ò=®À[=«r=¦É1=›>•=˜sZ=•ê÷=åÑ=›j%=¨Ú:=¦÷ž>×Æf?? @(Mß@2½V@86Ã?ùj’?¡Jó>¹Òà=ô<Ó=µo¢=µ>”=¶g±=²þç=ªi[=—1.=‡ÿS=`ú=Eä=Ohx=w5=nôò=~,á=˜ug=šÇ5=›´?=›ç=œPE=ŸËh=¥—¼=¢‰Ï=¡ÏÜ= SÛ=˜·É=˜3ð=«2‚=˜IÇ=Š8¬=`¸ã=Rl=EîË=Àn=F 2=hú'=’Sÿ=’W~=“œÑ=œÁ=œŒÇ=œð=¡Dc=Ÿ‘¬=›“T=ŠÁ=˜[F=£bS=(=‰†=ŸuL=}ò=šb±=˜©ö=½Tó=º¶—=·úÃ=«=˜¥=“ý=®’ª=§K=ž}â=£%6=ž¸ß=™ãè=ŸøK=ŸÉ8=Ÿg =£|x= òö=žpÀ=«·X=®Æ"=³%Í=™B=¡ŽT=ªÅ`=š’v=œ?G=žòl=˜ÏÁ=Ÿ3ë=§Ng=¢ÿî=¢ = r=µ¡W=»Ä¸=ÀÏ=§NJ=¢ï= a=¡‰…=¡@z= š=—Ûë=•®Œ=“˜¢=¬R}=©‡I=¥ºt=œY‘=£áŒ=¬2Ø=³Ñm=»¦“=Ãg=º=²ËÎ=¬O0=«ÛY=£Êº=œlw=±;=°?¨=®Gv= >,=¨%¯=­üç=²È=¤Ç=™žR=¢~/=¢û=£#6=·@==³“=¬…i=™ÿì=ƒ¤e=i:S=Z1æ=m^Þ=€ª=—Ú¯=—£=˜T…=›”e= Å=¢= ;î=¦]=Ÿ·Ó=¦ÁS=°ž“=¬J×=—#A=š5µ=˜l=’zp=w a=[ÜÙ=:$½=?º—=PôR=tÛZ=…i”=½6=žZá=˜/û=”&="¦=š# =ž$=¢y=žIn=¨Ú=´[I=¬O>=¦Î2= ( =¡„=¤qx=§Áè=¼7¨=®C…=¤ê=«$7=§¢þ=¥¡Ê=¤ŽS=¥Q¤=¦ =§;=£^·=¢'—=¦Œ/=¨ñ„=¨â=¥ÙÉ=¢ í= ê=¢P`=«6ù=¥^©=•Xª=³…ö=¬Â =›Àæ=¬¦2=¨D&=  ‹=«‰”=ª|—=¨e =¯Q;=® =­Ç¯=Äf˜=Øô=ìDH>̾=ù+ù=ëÇ‘=Þªz=²^ê= ¿=¬È‰=£ˆ=¢a=§¤ -=¬c]=§¢=›‡O=ž"Ž=ž-e=ž(À=£>í=žU=—kU=©V§=¨ÿH=§ˆ\=ªº5=£˜×=Ÿú·=¬xü=žƒx=˜=žµÙ=‘²I=úÝ=£Ü=£ßù=¨ˆC=°ûù=²~=ºM:=Ç3˜=Á³>:­>-Ù4?Ÿ±ƒ@3ÌA@Œ¶ð@“úÐ@~¡@SwY?½)y?’Ú?PG>!'j=Û&=±ƒ—=¹ž†=Éùp=˪=Æ™s=ÊÜÖ=¾=ª€Á= ’Í=¡oâ=¢’=–E=ž#a=¢Ûp=ŠOb=‚F4=xþž=gâ<=„N™=Œ(=À=¡š³=ªÜí=³zÂ=ë*Ñ>¿B>;+.>J:>2M˜> ì=¸°I=®Ü=¤¬è=˜÷=žÙ=¡ÎC= Û=˜@=›—=¨9„=¡Ö=œvß=–{´=£µ=¤•î=¢ž=Œ.=u²=©,=›„=¨S’=­QÍ=¤³â=¨œT=¨`è=¢/_=©PV=¢w®=–uh=©Ï•=¨›=¦Ú…=¯¢¤=¨‡=¡võ=•ŒÊ=§œ~=¯Z°=¯ck=«ÀÛ=©3&=¦Íí=¦”g=¨|¬=«fá=¬ÔP=£ß¬=dÛ=£TX=¨È=¨y&=¥Ö€=œÑ =¢i}=³!w=­kß=·ó=Æ =ÜZ…=Øpº=Ó©=ÈN>=Ë,v=Єt=âM™=Í#/=½÷=®±ƒ=¤¸=£›N=¤?µ=£’‘=©ˆæ=¬1@=¶6=ªØõ=®§Ú=§ š=¦„û=£ ~=Ÿ4ö=ªî)=¥x=œÄp=ªÇ`=¥cB=§+=Ñ­‚=ì‚â=ñ›l=ÞQÉ=ÊT¹=»Ý¸=©zU=œ­°=¢Y.=§v¦=› ß=¢S =¯lú=Ù&=âZä=Ýf‚=·=¢'À=,= Ÿ=ž}(=™È‚=–õ =–!¡=Ÿ¦Ÿ=£…à=¢Ü=®=³\=µ¼ë=²ºÇ=¤—Î=–1Ü=Áî=“=•>ä=–r =Ž°(=‘¼5=›=¬`Ø=©¨=¦¾"=¦8÷=£Œ=¢„ö=¥ÀÍ=¨P=®ÑÔ=ºCÛ=£C¨=§¢]=ªÍG=›3(=²ê=¼ ->=­÷k=¦=ã=¤è=¤‚ñ=²PÖ=£šŠ=–õJ=±¯=ªæs=§š=¤\=ŸéÑ=Ÿ7I=Ÿ›è=¢Èü=§)u=©ŽY=¤Ûd=¤A=¦;+=«ýA=²Žg=¸í¬=¾ö$=§_*=¥‘L=¢ú×=‹'=¤ãÎ=¥Ôš=¢î…=”’ =˜`=Ÿ–N=»XÙ=¯£=¥"§=—ú9=šuÃ=¢®²=°’c=™õu=šÕ0=›Üz=—#=¢ Ð=¨Ô=¬oc=°A“=¢ r=f =¤¾=ŸG=›kÉ=Ÿu£=¨F=§P= ña=¦Ž!= ý=›Ê®=›âò=¥À÷=ªú=¬4Ý=ª—å=¢–>=—áø=¡b=¦ÙV=©Èö=«}Ý=œPx= "/=¬¼=«üI=´|Ä=·Ÿù=¦]Â=¦Vj=¥f\=¥e­=¢ = )î=Å=šç= //= ßó=œ>n=­mx=¨dc= W¤=­Të=¤4i=“=–î=•œÊ=šÉë=¡Os=ž¦=¤g=¨˜=¨§‰=4M=šám=›èw=¦_Ý=©¤a=«®=¬³-=žG=ŸÅ?=«D“=žp§=Ÿhæ=Òk=’}ù=•U¼=—àß=›ZI=’_n=‘‰«=’¶Ý= Ä=¬¼=«Ì_=¢ÖÄ==Ÿy7=¡þz= r=|À=¤Gy=³X5=•Ú]=¡ª=ªfö=›Tþ=F=¤#=°nD=¡0a=§ „=©0•=—˜¸=¤ =¨mÕ=¨`è=žÃð=¤‹û=¨Ì=¨û.=¦¶c= ëÚ=š# =´Lp=©ëÝ=¢P"=ž~=¥b=§ƒË=§w@=P’= S=¥6Œ=¯{6=›9•=2g=£Öü=¦¡¸=¦2=§´F=® =óT>D> l›> ˜=Úæ¿=¸Û˜=šÁ®=¢¦ò= õÂ=O¿=’‘Ž=§Os=«©Î=© ¬=¨&=ªÚÂ=©ùÊ=¢¯R=µóæ=¶ýI=¶%î=éص=é’$=ìL=ïjy=¾¬°=­Ÿ³=¡»=Ÿ˜Z=±Öd=³+d=©ûœ=¥ë„=©1Ã=§¨=‘'=Ÿ°1=¢µ=¢/Z=©M¯=¬‚‡=­-ß=«m=Áæ4=ì}ï>`½£?5Áƒ@ «†@*Âs@*‚ø?ð9X?^þ>n_¿=ºY®=¬†=­ôB=¯Õ=¥!/=©þ€=¦¦¸=œìg=°@Ì=¥ý=NQ=™)6=Ÿ^/=¦û=®ßM=­–š=§ã*=¢½Ž=ž+=¨Ê=£=¿=¤[Ï=³Ž=Î0G>>aÓ>&Ùg>·Z>_=Àû=ªHo=§W;=£EÏ=™Ê¥=¡9±=§^.=«\ï=¡&°=š“R=˜±=™•Ê=¤1Ñ=¬Ã=¬V3=¡O=¨ %=¥õÈ=£àH=£ =­±2=­==©Ò€=¦š†= Î=¤yµ=²Ðª>Fñ> FÝ> ù->Y=ä†â=¼TJ=šÐ=¨ÒÐ=‘l=–;=©âã=¦<=©è,=©ì×=¢þ=¯·Ü=±F˜=¬±õ=˜l=§E‰=£­Å=‘R=¢Ç=¨ˆÞ=®!›=´I=Ãï=±™æ=§³ï=¥MÈ=›ˆ=©;=¯T¹= Üj=¢ú=ž -g=›¢Ò=£=t= ¤=¤D=©ÀP=´ß%=±O=©‚+=žÕP=”~f=Ú{=—±Š=¬Æô=¨‘=¥=¡çB=¢ÑM=—I=žƒ =¥À@=£²_=žÝ(=•äË=èT=¢›’=¢„¿=£ÞÆ=¦ð‹=«¨½=«k=¨£=£k`=¢Û¤= ? =žh(= 3r= _[=§W=ª?>=¥-=‘¾,=“ˆ=–Zf=¡=’É1=–6=™,’= ™==Ÿñ=ŸD‹=Ú=žð=›ñÐ=¡š‡=«ÚÎ=¢%¦=¥ÆZ=ª'‚=®~N=¡&;=¤ÉA=§½Ö=©§Ù=¨ü= x”=—Mˆ=ŒîÙ=¨G;=§1L=¥z=¤¾ä=¦’=¬›}=¯±=¨¾m=­‘>=©Oƒ=¤Žj=§)&=Ÿ®³=åU=œ»¿=)d= Á¦=¥p,=¨ëÍ=¥w=¤®=¡°Ô=©œ=–Õl=¤—7=ªs=«vº=¥Sg=¥Ü=¡ÜÌ=T™=žqÑ=›#¿=”w=(Ÿ=NI=”+‰=Ÿt_=©ñ=šÒ(=­Ê6=§@Ÿ=—2¦=œUÂ=¨ö=©*=¢Ï=žöW=¥øG=§ —=¦™=®¢$=ªs=ª®==ª˜ñ=ÉÚ=¨¬÷=³©¢=»P`=¬£[=°ƒÊ=¯!a=«ÕÚ=¯î{>ù’>ù?›=•@Wg7@X@<]9@Ú¾?ª¨Ó@5Ç8@MWf@G˜S@zn?T™>•Hi=Ç0=Äf=¯x=°R=´|=¯=¥Yÿ=¢í=¥}¤=²Öè=ª5=­nï=¬Ÿ=¤«M=ŸŒ=£qU=¡¾=”·4=—Ï‹= Àå=®F=¿À†=¦Š=¯Ã=°#¼=©P=°âY=«q=©îâ=ªÔ¶=§~Ý=µœ@=®†–= ð™=¢Í§=£Ì|=£ß>=¡µ½=˜¨Ð=¢k—=©º-=°:X=µGY=½)Ä=¹b=µû=µ22=¯Å¬=§~=¡¡Õ=Ÿ¾È=Ÿkî=œRq=¿²Â=ÿ!ø>a'>3¸þ>IT§>U¹Ñ>3tí>+G•>  =ÊŸ =¥dd=££À=¡É=¦ G=µÏ=´ˆ¸=±R1=§=˜=¸=¥ -‘=ž/ú=¦aÚ=´ûE=¯Xw=«¢€=®ëŸ=³ëå=¶x= U|=¦}5=°;™=µí=ÆrD=ÌÚ‰=Í©.=É­=£e©=ª]=¨Ëæ=£×=©us=¥Ç¼=§ =§üQ=¢‘¶=£·=¤r=¤~=¢Öz=£U¹=¡`·=£çý=¨ƒ=¡D=ž@E=¦ÀÈ=¯V=¥rÌ=¾JŒ=¹ùÔ=¸¬Ø=Ä^=±ÀÏ=¶5-=±›=¤{3=¢Eš=ª˜¿=®&n=­ˆ=©ç=ª¦å=³÷¹=·è¼=²3“=Íoƒ=¶Á£=Ÿ›)=Œ(ñ=”­=•~=š{,=¦´i=Á»=ÄMå=½”v=¾Ð=È*7=Õ×ö=Û„"=êÆ)=÷¸ÿ=ëÈÂ=ÎÀ€=¾Åw=°—¢= ƒ,=«û"=¹E=Í0¯=á]y=Ûêß=Õ2=ÁÊÕ=¶È0=Àƒj=¿ê¿=Ìàî=Ó›ž=Ñ /=³ ¦=²Îv=¦ï3=¬r‹=ÛH> >Rþ>¼=úŸø=´œE=˜"=“Ô@=”Z™=½Ô=¡®=¡ -b=¢j=¦>ò=¨ í=¦©Ã=Æ’L=ß­G=Ööx=Ú‡Ä=Ñ20=Á•—=°QT=«ú4=°Å =Èï=ÖGw=Ξ†=Þ y=ÅBÄ=×wf=ÿ$> f/> ”=û›o=Ô ¬=¨_œ=«ªc=ª£=©AÊ=§ÞÁ=§ù=¨é_=ž´6=šÉƒ=›Ÿ(=’­½=¨>=µúÕ=µ`;=¡Z=«àp=”C—=—==£¢=Ÿ­=à¢1=ío¼=ç©â=Ôê=³æÓ=¯œ´=ª¥ø=¥Rõ=¡Pn=­0»=¢X¹=¥ÛŽ=¾É->‘>Nì>²h=í1Í=»âo=¤]ž=hå=<]=œå=š7=¨`ø=°R›=¨ËÌ=<<=—£‚=§ž¾=¨¦U=­xÂ=²®É=®HÔ=¨ =®³ê>r>fÙ=ìl==¯á=°=¬èO=¢ñ•=•ö=¥_%=¥‡=¦ö©=©ö=§éÍ=›Å=£Â@=¢¹¯=¦i=®è=¡­«=ž”œ=¢uY=¯Ž=ÄÇù==ïÚ©=ðÚv=à©–=´Ge=ùå=›H=šQf=š“}=œ‹I=³<Á=¬zo=¡÷·=ž‰s=®º“=¶W=¬Ÿ=­—C=ªxÊ=žªü=¥<-=£¬l=¢ Ä=¤l»=©™=±Ya=år=ø‘=ó‰S=ÚÌ«=ÔÁ=® Ò=¨{µ=ªüû=¡.Ê=ž =ŸJÑ=ŸøÔ=¢ÒÐ=ªåÓ=³&Ÿ=ž·–=§&9=¶®{=»Á¬=–‚Õ=—•â=š$×=¢Œs=¼Œ=ãü¤=ßh=ëüÒ=Öq)=§–l=¥aã=žI–=®´=µÜ=®XÖ=¦¨æ=²,'=²¬>=­Öw=¨´2=¨Q\=še =ž8=£¥š=¢-f=“È©=ŸËP=¦Œ(=¨Ch=¡°=œÅ=ž‰=—ÍX=žª÷=¡:Z=¡ =§\ª=«=Ózø=ë(è=ëÞV=ìGM=Íï™=Òv€=ÁËñ=®í7=­¤…=­t=¬íe=–²÷=ŽÚ=”|o= ><=—Þ¿=—J=°#¼=Æ V=¼ –=µ=ÀSÖ=²oª=­¨=ºs=Ê¢l=ðpV>ë>!è³>!±¿>%@ß>*$‰>362>/¡J>h> -Ÿ§=¯oÎ=¯ªÅ=°Œü=¥Â =ž5®=¢,=¹Í[=Á•˜=ÍP«=ÂHM=¯ûx=ºb=¨’=ŸÎ=¨Ø*=­Í=£p‹=­¿ö=›…y=—•²=¢Â‚=«Ø=¨Í¬=®c:=´€ø=³µ÷=«Â€=}=µ‡ =½ƒå=²ºÈ=© 7=³Ë =¿î=´LŒ=¢w±=¡™P=¦ËÆ=¤˜ý=™Ø3=§«˜=¦ÿ³= ¦¦=¥»G=½f=´ª==±Wš=´—L=¹w¿=³Û=¥Ë^=­‚=´Âs=¢ü =’Ÿï=›=§„Ä=œ!=©Ý“=¢‘2=Cþ=¥=¤D:=ž¦k=™>/=Ÿ7=ª}=¼Àµ=ž/=¥uê=·YE=«—Ì=š¨’=£­0=¤èS=¤=…=®q=«“C=¤ºì=ñŒ,>¢¦?TQn?ª%?Ö}È?Ö…“?¡’ú?9=ø>¥£˜=ûÙY=«Ìx=—œF=¤q=£¿==–ÑT=•gˆ=œèæ=£ý=ª¹=¯"ÿ=£Øá=“m@=˜Ül=ª»Ð=Æ:=ª =›hw=¢Uè=¢T¶=¼Ù=œ =–=­2=§Õ=§²=³<•=Ÿú&=°`=¢÷Ê=¡Ë=›V°=¡¨=²êZ=­çT=³"n=§EZ=ªÏõ=ªä€=•´¬= $¿=^œ=’:=¥8=ËŠá=ãdd=Í{¢=³“R=¡p~=°ø=žDÚ=’¨Q=•Í_=—äå=”S=’ÝÑ=œB]=¬¹f=§éº=“ÇL=¤t=¬ZP=«h=¨çê=¢B=˜C¥=¥j=«5k=ºã=ÒŠ^=íkS=ðªo=é…S=½Å=¢E=¡9(=¤%=µß= Gi=–š)=œAþ=¡=ŸÄ =®“Þ=¢\|=¡D$=œ>'=ªb(=±=‹=³ì=±ëä=£ñ×=¤º'=œXÚ=ãª=¡+·=¤¯x=§bH=§ÓÓ=°âr=¬/õ=‘¢==—\“=œuó=˜0=–€¦=¢½= «à=¥Û´=²‹s=ŸÓ•=£ x=«eè=§Ö=»‡S=¿4ì=´aJ=»Œ=¼A=©Å=¡Ív=©T5=º†à=ÊS =Ɇ=ÿÂ=ï0I=契=Ë78=¬ƒ=›€%=—W=›´m=‰Ìí=“'Y=žÕÃ=šSu=žpñ=—³¶=§ek=ŸÌ=¦ì=«ž=¥f<=ý*=Œ¡4=©9_=±sÛ=ݼ>„>Öù=ñïg=Ý)=¸†T=§8=¢‹u=“5í=–¼=¤vP=¤þ=¡ A=±‰=«˜ó=£v==šæ=!o=ôî=™P=¦lŸ=žeœ=“È,=Ñm= €=ˆÛ´=‘">=˜Ð‡=žÈ´=›Jž=›= =žÇS=›ö]=rà=ŽÉk=Ÿ9¸=Ÿm%=l#=§1.=¨œã=¢Ýê=žÍ=˜_>=•–]=¤Éê=°¸=´8Ô=Æ"0=øñq>0?2LÞ?åäA?õWv?ñi”?¥û‹?H‡<>Qâ>¡E‘?ny?èJ7?îRa?ß3?‚×? ‹‘>  =ÿŠÜ=׸(=“V$=”›¼=™¼Û=“'¥=”ˆ=ž†=„K›=”Q6=‘€é=“ù=¢É=“=ŒYì=’0]=¤k=œ÷ù=˜LR=¤ßþ=±qê=Þ [>2>Œå=öêc=Û©T=‘¾N=¤a=¬vó=­º&=¨gÈ=œã= Dø=§që=±ÉH=°B›=¨6£=§cz=©Šl=¥Ý=¤n=¬Ž„=Ë=}í=©ß+=œv¨=Ÿ_›=¨êI=§ûà=žÒÐ=œŸz=¡n=ª£‘=½ë=¸%=®&=œBL=ŸÆ=—¶ë=˜€=«9ã= Ù}=ªí#=ºÉŒ=¾Ë=¥ã&=ŸEÉ=©7=¨ÛŠ=™Ù=›²¿=œ‘U=˜÷=¥ =¬f;=«þx=®=¬5=¼í =­#Š=¥Ü=¤¢ä= ”Â=‘kô=*c=¡ê=©€s=¬ÿã=±Ë=¿j¨=Øk´>º™>næ>xK=ê›.=ªðŒ=“¬ê=¥Ôh= Í=¦å²=™¶m=—”y=¢Øl=ªfË=¶¸=«„=¦Ò=ú"= þ=¤Ðæ=» ]=ÏX =íç`=âç¶>¾¶> -ãN>Èö=é4¼=¹ås=©Úª=ª›Ú=©OÞ=¤§‹=®Ôï=²/=žN -=˜Ÿ¦=¥Žÿ=§õÝ=¨Z”=ªÆ =±ÿ`=ÁlO=ÈÌg=æµW=Å‘­=¶"¹=²6ì=¬½þ=¬[:=ª½h=¢¦þ=¤Áà=°É7=ªâ=‹=¡™#=³“U=¼Ý=™Òò= =+=§“==ºsP=®,=Ÿî=ŽY=µ§š=¼gä=­gà=²jù=³®"=¨Îæ=a=œá#=”ó·=”§B= #=¤žß=±=´„=®Èê=¬±=ªÁ=°^=£à;=£(=«Âý=²»Ž=É:í=åÙ=î‚=ù'x=ÑZ=Øßè=à¹Ë> AÓ>éÿ>}=ɈÍ=Ê‘/=ÞP=Ô;c=Ñî=Ø”®=¹=|=¦¿þ=¡AY=¬¦=šr"=«+=˜ë•=ƒÃ=Ãø=Ÿpº=–6=¥ -=« =ª«–=žç=—çò=‰M= 3§=µ² >÷l>¢>wg=Ú¦£=Ș#=®~M=©³=¨îB=±ä=¹Ì=¾?^=»Ó‹=Ì<=Üýg=¬ËR=¬°G=°ŠO=œ=˜“¤=™O=´G=ºÜm=¼'¼=¼@¬=¼½¢=­D=©ó­=¨Ít=¨ó =³Æ=À™=¥óº=£#‰=¥=T=·y=µ‰ô=ú©=‘¡³=ŠŠ=†p’=—ÌW= gª=¡Í=Æ,®=æD)=ϨK=Çp”=¾‡=·#=²V7=© =–¼€=”B²=”*~=Ÿuê=¤Œ;=¥Ÿ¬=®¤,=¶¶¾=²ê-=µ¨Ô=¸Ã™=­“>=µñã=êw=²Nh=¯„q=®ú =¦Èr=¥†=¤žz=°FÝ=®EÄ=œÉ/=¦äL=¬æ=©"=¨ƒå=¦¤d=«:X=«‡=¨!Ç=´OÚ=ËG2=ñäñ=Óôø=¿NÂ=ž×z=•¬=”Y~=¡Z = ÿ=Äd=˜åƒ=™XÚ=›=¤ê¼=­¹’=´ «=›[w= §‡=¦"=±Š=°¿å=®µl=ÙÝ=ãg+=ìÅ=ÚW =Ì!u=µ)#=¤6=¡s=±³¶=˜fm=Žx?=ž±Ç=¨x=®‡=ª®ó=­Ð9=± «=¥~>=±µ¢=Á£ú=¼‡=·e=°KÝ=e$=¸=¦æ%=¡ã=¢Á°=­#>=¡V=Î\=¢Ìˆ=œbX=™Ã=£qJ=¦ü±=¨ðÑ=–Ó5= &@=¨´{=œlÌ=§¿‡=³õ]=®Ûè=¢Á2=”x$=•D=œý=ªJb=­Ð=«‡+=©AN=°ß…=«Y«=œ”U=ªHø=©Ö=–ŽÂ=’j>=’3¨=Ÿ?L=£×¿=£ßN=¥ÞX=»Ø‘=È¥i=·.=¨Â‚= ´=¥^À=¦=§® -=¦ßK=· Û=É=­ý°=¥4¢=œ»N=R¼=£Üÿ=«‚|=ª§>=ª=¬ó´=¸+*=­=•=°ä=¿“½=ÒŽ=Ò/8=Õ¹ä=áP]=ÇÈ=»ê=®Ýî=µÔ=³Tç=™§ -=£}R=©7=¡*ï=§…G=¬€˜=­ós=®û9=¯–Ò=œ)ƒ=›ßŽ=œO^=¥‡=µO=Á†¦=ä’=â¨^=áÔJ=ÂJÉ=É1=Ò Ø>Iš>õÿ>o=Ôµâ=¼èú=¤ËM=š÷=«Ã¹=ÃÇ=Ý =>5 >Ì_=÷! -=Ù]$=¾C~=²< =§n–=žò=Ÿ}<=¡ç&=­Ö=½@Ö=Ø ì=å º=ð\ž>f’=Û‚§=Çy=¯Û¢=³Ì=³06=¯OY=ª*N=©£%=®˜d=¦œ£=¢V=ŸK+=›;‹=š%â=ž˜ò=—X7=œÍ¶=³ëý=¬Y=ªî=¬}û=­`=©ß>= M-=Ÿš]=œ‘ =“·º=›¹™=å¦=—û=”Ï0=”:_=’fe=†ÙÇ=…Ø =˜Ð¥=£Ð=¨oñ=°5=·Œ©=¹"¬=­W=¿ “=×x> Ú~>‹ó>Žú>‚n=È4=©Œ=¤Òß=±ý=´?=«Íá=°Ê=© Ü=û«=›_N=›[=Žû<=›“_= ¾Q=Ÿ‘M=«é3=µr¦=ľ=¾,=¾ÆÇ=Èxi=µ”„=³+=µš~=µ=¶=ªþµ=–€ï=¡¾”=©tn=²m(=ª¶®=ÀÙ=é5=ÿí =û]^=íÄï=½ð«=½–”=É8=ÐÙq=Äg0=³7’=š¡=œ…ß=£„Ò=Ÿòx=˜î»=<Â=šð×=—s¬=”ï]=«Û"=­‘ý=­PÏ=¤h8=ÆYì=ä,Õ=㯨=à`¯=Ú=ÇžÜ=»Ó=ºçª=è2 >h> q=ùÞm=éÒ2=×PŽ=£û=®Ó]=®™=š[]=›¼_=›ÇE=—i=§°Þ=«ß=®ºœ= H—= MÄ=¥n=­@ã=¥Í=–šK=£¢=¤?˜=¡®=š9=šÓN=œ5= G=œ;M=˜^v=£=§À=¬?c=£S= ³=¢nk=×î>t>¸Xg?p?(c?3þ?@(#?Z?Çó>È%M>9c~=äiÔ=Ê3_=¹DR=´]Þ=±Ã®=£« =¡„+= wÙ=›¸}=¤¦n=±)˜=ˆ%^=è|=š=”«]=‰×=ˆ}‡=“¢=”ËØ=”¯’=‘ð =¢ÀD=«s˜=µxJ=¨–_=§s"=°8í=³$=¹bC=Èþ=¾“§=¼°¬=ºp‰=£¹¹=¡g/=¡ÿò=ž»=§ïö=¯ß =–j=”ï†=’É=’ò=’ÝB=’=²=’îü=¬‹D=³Ã=§R=®=©¸s=›âÜ=°0=±‰=®œd=¢ µ=Ÿ M=žYN=˜¨…=šö«=œÚ5=‘1= ½z=§¢]=‘Pq= -= ä¥=Ž¾=¡ô¨=¨È·=§„g=ŸŒL=˜=I…=˜.Â=”—=º=Ÿ¶ô=™O=”Ä;=¤e^=§Ïº=¥­&=;1=’¨â=™Àí=®d$=œí˜=œä¥=£¢ =žªE=ŸYj=Ÿå=©Oú= ç=—ú=ˆ3³=—/K=žc¸=FŠ=–¢=ŸsW=«óð=¢¶÷=¡ÛÔ=¢õ=Ÿü—=œ™=›Ü)=¥œ =ªÏ˜=®==˜v=› =œŸõ=“S*=¤' =¨ð¿=¢i=£ä=–¶ë=†1—=”bT= ™ =­È­=Ìÿ=¢Ø2=¥Žj=žÂm=§DQ=«‡¨=¦Ý^=µM»=ª§=Žò=¡`=¤Õ=¥?(=©Me=¢¸“=˜‰=¢õ0=}=™á=ªÊú=›ýù=¡<Ï=µkž=¤<ð=œÕÎ=—w<=ª›´=·‰D=¿Ó=¥…=¥=©ƒ¤=¹…=¡Óf=™Yü=–’®=¥=°Õ=¹pB=¹Ý‚=±¾‹=¯w¤=Ç:B=Ñ2)=Ôbï=ÐËÍ=í÷ê>X.Ï>½ôx?{ìâ?ÿƒ?{;G?$->£Ê=â2(=§‰o=·Iƒ> $^>sØR?SFl?q½?yƒ|?8z…>ÌËK>`=ªSÅ=¸\^=»kÄ=±%G=±S=«Âä=£<=³Þ=«= )=‘È2=š20=ž.=œ´È=™O_=˜…Ÿ=š(Ø=§ä6=¤ªí=Cî=7I=„( =ðº=•½_=¤V=¢9A=–‹~=šú7=¡7=§"=¥DÃ=›=–5”=œ[‰=›¯r=žT=¦À¢=§”Ä=¡ C=›R®==œóm=2ï=ž“ó=I˜=O =“4¾=””=–Ùÿ=™º=¥sö=›”Ž=˜º¸=§2S= ¯N= –=£5=¡Óî=¤B#=¦9è=Ÿ`j=“îI=‹Œ©=€g=‡H=Ž·Ô=—D -=–¬ø=–Å=–G=ŒäÓ=˜î=»=›Pç=—Àá=•ŽI=”GU=£J -=§cs=¤l¿=’ -=‰=ïé=˜"å=¹=½=ƒ=¡É=‘Ÿö=¬d=¡¼=•I=’] =·=›´=•ˆ{=“°ö=˜º¸=Œ*$=Ž¯=˜W‹=â=èô=Ž+Ö=•o‰=žÒÈ=š•×={•=•úh=”Ú=’¸S=ŽÀ…=™aì=œŠæ=—Ê¢=!Q=Œ¶ç=5@=‘Š=ŽÝÇ=ŠÃ=˜$=£Jê=ž"=]4=…Ùu=+=’k¶=‹ãC=„>=‘wì=2ñ=—Öm=•ZV=Žu =eV½=“r;=¡Þ\=Ÿ¼W=˜× =›ÑÉ=žr¦=Ÿ î=¤=§? =¨Pd=˜[˜=–çE=˜Ïá=¢7=£Ÿ+=¤¸=¤|=Š‡ =Žx=—\«=¥ û=¢+4=£aK=«ö=§ð=¨Ï=©Gš=£s4=U;=–Ï=Œ­Â=Œ[•=“O]=šÙñ=˜=M=–ç =›Û=§F¾=²qH=³§==²}*=¹6R=°¬ç=§æ7=šv,=­AI=£_ª=•‡é=¥›Ž= ?q=›U=”ÄÂ=@•=–Ï=” =¶L+=¥_ =¢t=ªl{=š¾°=œ=¢\=¼á=±ò¢=´‹â=¾ŠH=ÇÈ=± ”=Ÿ‰K=¬'ô=¦¹i=¤ÞÌ=¥R -=œ/¨=¤„=¦S;=›4ƒ=¥Œ=¡y´=—Ê=•ÚU=Œ‘=¢Þ€=¦€=ª‡D=¬M]=¬ =«”æ=®w‚=«W=¡¿=œ$>=©h=³?ç=´k'=ª=¨>=ª[»=¬Œp=ß×=—)=š»Ì=¡á³=£Õl=¦=Û=³Ù¯=¨iï=§èí=®‹[=«éÏ=«šæ=¨½#= ,=•G‡=”ò/=™*=®«—=¯vv=¬õ=§º‚=°Ûç=¯(n=¬[=¡¹=¢ù›=£ûo=¥7(=¨“=¨š =¨@=¤cH=ž<ý=¨X"=±–=“Ì=–mˆ=”‰=–œ=““=™/¢=œÑ§=›q*=¢±=Ÿ©¢=žN=°Ž=—’ë=•Ñ±=¡ÓÖ=¢…«=šš=˜·®=¤=‘Žö=—ž·=¡Ù =¡1Ö=›Ì{=¢-=°gT=•L=–=˜ Þ=™õÙ=¡qj=—¶=1‰=¨\P=£ ã=£c»=¥ÿ|=­P=³ =°D=£|b=›Ç= = «[=•}2=§bY=¡ N=˜Ð9=¢zo= •“=¡…§=¢'Â=°úe=²0 =®îK=¤7l=¡*b=¤ÿê=¥ˆ=™¹^=¢šœ=¢ 2= û7=ªGM=”yk=–IU=¦–=µgW=ª‡l=¢ Œ= t=°3=«~9=¡ºÄ=‹ÿ@=“Ÿé=Ÿ$à=©0…=©Rl==œóu= ÏÝ=ŒÐ=õ=¥Îê=¦ÿV=¢àÊ=ž8£=žÇU=©tc=­‘=«î¤=¨€Ø=Ÿd =ì’=Œ-Í=™<=§Åá=”?Z=‹ƒs=‰ú=¨¯X=«KL=§=ŸZ´=¦+ï=£ Ñ=¤7=«#d=¡Ú~=ªWˆ=®h#=©p=¨Ð=¦_“=Ÿº=ŠŒ=™}Æ=–y`=”›Š=±y«=­àØ=ªD#=¥=T=š ×=°ŠT=°É®=£â¾=®7=©z?=­ÍB=¹êO=¬³=© 8=¨ý¥=¬ˆ=¯Õy=³¤=¯=™ùÞ=µäÁ=µ‡I=²Å=³“=žJó=™”=˜œ9=œÒÛ=½Ó=»„ï=³åõ=´V4=§®G=žÑ=›6™=À¹µ=Âã¼=Á4=»å =­°3=¬=±Ñ=¶ã =±± =°LG=¸–Ž=Êj=ý´>í2>!ºÎ>È0=ÿ+=ÀÓ=ªO2=®`²=Ÿ6\=¢ï+=žoÂ=”÷H=©BÇ=ª?¨=¯}â=¶ç=¤„=§°Z=§ØÚ=¥¤=­ä==˜ã>=–Ü=¦¬g=­‹=©íý=«u¥=£È=¯ -=¬ÌP=©‚Å=¦Mâ=• Û=©‚=® -=¥=›À‰=¬¡!=ªéÃ=šíT=¡DH=›~a=˜G†=—2s=¥)Ó=›Ãö=—z“=– á=—É•=˜4û=›û)=£b=¹ûÀ=¯u=©@=¦#=ªf;=£+z=›Ö=•ÓÃ=¤í÷= Nž=2æ=œ£=¢œl=¤J‡=£^œ= g¡=˜šD=”c= +=«‚ú=¦><=£Ãu=£O =¤§R=ª(=¢– =¨:ž=¦Ër=˜0Z=¦o?=¢·N=á=—Lq=æN=¡TÝ=¦Õ= 8=®ŒÞ= ,1=žôº=¥¯=•b›=œ÷=¥g®=¬¯Ó=¨‚¨=‚M=Ÿ =£u"=¤ˆq=›o]=Ÿ—=£ÝQ=¥94=¡û=¤á=¦Q=¥"À=¯*Ç=™8Ÿ=›4ã=³ú=ˆ)=¤&²=¦³)=™,=ŽJ"=œµ= Á=š”=˜í2=¢U=¢òR= ñ=ÍÍ=¤ù“=©ø˜=«âp=©_=—" -=¦¾0=¬V8=©±$=¨ë’=Ÿ’X=¤½=¬Ÿ=¡¯=ž„²=¥¿5=©1ø=œ¸—=¤¾>=š´=˜‡R=¢t­=¢”=*«=¢f=«³D=™S=ŸF_=¡Ž=¢8,=¡y=¥äS=¦ëÖ=¦è=£q(=©ý =£]Œ=œ$o=••”=“’Ñ=£ÞÅ=¥â=£Î/=¨Ø*= ¯=¤z¬=¨=§¦?=§G=¡èÛ=¤–=ª™o=¢©4=“MÁ=˜Ð2=£ =¢›u=¢â=«âs=§ù5=‘Q¡= =˜n=TS=¦hu=—4÷=š Ñ=—è•=˜¡=  ï=¤4(=¢Ýò=›„=ŽtÓ=Š$-=”¨*=–Ô£=•û(=–W„=“Ô7=’½=–¢= 2ï=¤+=¬Ü_=¥î7=˜ÐT=“Bå=¡`=‘º=ŽS=£bJ=§Âð=ºp=¹Ág=®ª“=¦œ8=™”ž=‘ d=”¡1=©±=©jq=Ÿƒ=ŸŒ=£Õ=”§‡=£Ôd=¥Pa=¦ÈÛ=¬3«=¬£ü=¢ìW=šÞ4=™Zž=®~[=žÍ=¦ä¬=«I=¦z¿=ª†Ó=Ÿbs=HT= =¤L8=—&m=—b‰=•àP=“,=¬™¤=š¦=¥ o=²›Ï=«ää=©Û!=§<=¨Œ†=­Ð=¶;ð=­<·=¸€ç=½œ=²ee=®9A=©¯Ë=³#—=½©¥=´þÄ=³Ã\=±ãY=®Œ›=«#¡=²ã=©U=¥ˆ=¢sV=ž#=¸Õ=²“=ÙZŠ>+>§»Ü>¸¤$>¯½m>“ë8>aã½>€à>¨Ð–>¯Q¿>žO>>lºÒ=³e=­-=¬y¹=®øß=²æC=±9ž=¡y=žE–=¢®§=šl1=®0!=¬T,=©:ì=¨Eà=¥ñ›=¦0=£j_=‡Ä=“åg=œÜÌ=¡Óÿ=œ‡=’”=‹Fñ=ž =žY5=¤lb=®¼=«‡Ì=®Sb=—Œé=ŒâE=“ï¢=´“¿=¬ X=£wª=Ÿ[ý=¤©Ö=·© =¢˜g=Ÿ7$=škí=Žpx=§/a=Šv'=ˆí=‘°c=šJ…=ž²#=¹¢÷=´*)=¦DS=›‹¹=´Èo=±aá=§O¹=ž|¹=§DX=®¸ =¥ÙM=›Þ‘=—ðf=¢úÇ=¡¢h=žçQ=ž*=¡ð=£@=”A=”R=Æ0=–ê}=¨/@= öD=ª€?=¨Ïâ=ŸPí=—¯=•í}=Ÿ[“=°bM=Àî_=ɱ=ññÈ=íyh=Þ¢Á=ÓdÈ=Ëð=¬Ì…=»<Ò=Ö÷c=öQD>÷â>-$=÷ =ʇþ=¢à=¤ôA=¤=±¸™=²‘0=­f¦=¦ -˜=¹Ãd=¹==½é×=æ6!>¸ã>D¦ˆ>P†¿>)ÅÐ>SÃ=Ü£ð=¿z=½kò=ºl‰=Ç`´=îì> Ë=ù‰í=Þl¿=ÅYˆ=­ Û=¦ =‘È=¢¤]=«V¬=®Õî=ÏÓŸ>0$k>A¸Ë>VÇ>Yïë>;!Ð>" ª>€'=îÉÎ=°i|=›zÕ=¹/=žBÂ=ŸÑ=š«´=œÈC=ªÔÅ=ŒÏ¿=—ðV=­ÃE=°r=¸ƒÂ=¿î›>4ð>ʦ? §?Y?¶>ÃÚJ>‚2>`¨Ô>g>q¹Ó>_¾÷> ®€>'Ð>*”>§Õÿ>ö7Ç>üåÁ¢>žhÑ>×Ù=±P"=¨îË=­©Ý=°ØB=¨²=¥T]=ª =©ÿ$=¥ª=£™=³ =ÌÕÚ>§>? -->HD½>B‚{>+„=¼½Ä=®_£=ªM=ªt=ªß=¦>'œ>V2>uЂ>ji>O¢ñ>•=Átå=¯úá=›' =œwN=¢ûy=¬zÔ=˜ð"=¥›=³2ô=©P:=°áò=®Î=«úV=²=¸ž=§81=®é§=ªe=Å -2>o2>H"¯>]”§>`4>,ø =êx=¢šŒ=¥È<=³ÏÍ=­-­=¨Ûê=¡ƒ¦=—Aw= 4¾=ŸåL=¯ÈŽ=°5=»:=ûä>N]S>‚ËF>€vŠ>cìƒ>,vÍ=Ì6…=«£l=¡ ‘=­6y=¯b =£.¦=¤~X=¬@Ü=™Äé=›Ë1=£¿O=¬¯=§üã=œ†=£›Z=”¥2=•Þõ=©†/=¿^Ï> ©V>IÚ,>Q÷å>I¹ˆ>,Ý=ãið=¤'ò=Ÿ­=¢qÝ=–Õ¨=ŒÃ,=–£=}¸=£C=§c=¦MÕ= X•=ˆç¹=™I=—²¶=–=›†ý=ŸªT=¡ â=§ð•=Õ‰Ë>p>DL†>b»d>\ÝÉ>25á=áµÙ=¶T[=¢Ô=¦{Õ=±bÙ=°®=³é=°š"=—pÎ=” =¢¨=š4v=±5"=¸l–=²%=ª°ß=”OÀ=ž•=Á×á=øH7>[Å>5uà>1Aó>á=Ï`=¨„g= L`=œž¿=”ÖK=‹s±=‡ªW=wH=€_=w‰Ô=–‹S=£=’Z±=§âf=í'=w=œ$§=ž6Ž= î=¨c%=œ»ô=è„=¤=©_H=žî=†Ë=•’Y=›Ÿ=Å)Î=ù¸Ã>(Õ­>.î'>/4ú=üP=Åð¼=©‘=±¸>=¬3'=˜Öç=°K3=°Ad=¡ð)=¤¾þ=©òŽ=žÓð=¡?=§e¡=™gÓ=Ÿ\}=§í§=±%Ø=¨J±=±mÚ=Û.=ì§C=âÀk=Ì|B=·ec=›Ú?=§÷=Ÿ!Ó=ª'=©N =¤,m=ŸØÞ=šÂ‘=¤ùÁ=­<=¬CP=¯Í=¬,=¥__= ×*=‘rµ=›êS=|*=¥Å=ŽR=÷=”[U=¤ºü=¦%X=¬&=  $=”x›=Ÿ_Ì=¡Û=Š/<=˜°ï=¤v3=±Œh=°/£=žûd=¦f=£Cz=É(=Í=žt›=œÉX=“ -²=  =¬!d=©Ù€=“ºö=œ¥=ª4¾=¦:…=£¡ù=“U\=œâ=ª¹™=¦É=š¡=…–E=™NØ=§_R=±¡„=™ù›=˜‹s==¤yb=­x3=½+”=Ý{=æèP=ð|G=ö- =ÛÚN=¿¨›=–fî=¢!ç=­ÓC=šI¸=– -z=–*=›m‹=¢óé=¢ÝA=ª6_=¢E“=œò=™Ê#=œÔÃ=˜–ô=“ÉÐ=¤Eþ=¡ô¡=£ú.=™=ª“~>vE>%_l>@l><Š>1 ø=üÛ:=®.=‘=¡‡P=£p1=­¿©=©¬=¨&÷=«C2=›ü‰=—%¶=ž©v=¢Ó'=­ÙR=—/À=’·=‘&P=™‚=Fé=®½ =¬`¸=¡gê=œ¡:=˜Òx=‡po=”óÖ=¡…]=®'ÿ=¦ =¥¦=˜Šü=™5È=¬á¶=µ+=ɇ¢=ø:M>í¾>>²=ôÛî=Ñ”=˜öN=– ]=•}“=Ý7> Š>.-À>6Êù>-Ü>=Ä×=¥°=›.n=–9o=™ª±=žóÉ= J™=±!¿=§ša=“Û¿=Pž=¡Âf=¦®e=¦õt=¶´=ª=·Ä_=³Éa=®=×@>Æ{>?¿—>br>k ý>P’¾>'¹w=è}Ž=áÝæ=ýz_=Ù“y=¾ôI=»0«=·~ =¥A\=²Åô=¶º£=«>é=™Ó~=—g -=³§_=ÉOå=«;=£–=žÜÐ=­˜¥=‘\ù=‘—ô=¦]h=¡Ú¬=™â‹=Üz=™Ÿa=§ây= «Ð= õª=œ*=¼Õ= µ¯=­1=­€=§Y’=Ý=”2«=¦ëD=¯w =²òJ=®g±=…l=’—X=œþå= fï=®·=²ï=«KÌ= ô=³©µ=Øà>9üy>Wš_>qé>`/f>8¤d=Ï[ê=©»B=‘ŽH=£­I=¦™È=œïÁ=¡.c=¡á=¦£5=ª%í=›­ø=‘ªk=¯o=Ç·®=©uÌ= \i=•Ñ=ˆäx=£Ò¥> >>VFÅ>€ð>ŽVó>v¾2>L¥=Ëf=°©g=¡ñ =¢P³=£MÙ=£Fì=§‰3=­=Ú=ç.-=ò¦n=þøê>Ú_=ù|:=Óbh=¾šê=´â½=šÎO=¡ºï=©Am=°M?=©xÑ=žÌ=ˆœõ=‹°’=¬0¯=–uÄ=Œlf=›´Ç=˜Ž}=”ÂÏ=‘i0=˜v=ž2=˜a°=”gB=‰=¤=˜åä=¤–Ú=¡W‹=›_U=“tõ==‡Ê=˜ŸÞ=—S÷=œ¦‚=®ÑA=ž¤¸=—=Ÿ,}=™‰Á=”œ2=£ð}= 0H=•.è=žTf=¨=Åë¸>8•>EN‡>‰2>{b)>q{>€×=Π =JÐ=œ8j=—§¯=|=ŒrŒ=‘Ñ}=žÄÎ=›¦=™+¸=Ÿ)Ñ=›“Q=•·d=¤S6=§ýK=¦œº=¡Ç=ª > ->_y¼>‘¤ð>šˆ>„Åk>J„†=Êýô=¢ïÖ=£Äó=–aÆ=”½=šÕ=¡=¨Ï€=™ü=•›C=’Ðý=“‚=™‰=§Î©=«ÔÔ=«áû=«ÄÌ=¤CF=¢˜¤=oê=œ‘ =ŸLk=¤”= f=“q=“a=—/=¢v•=¹M= ï=­*_=š`r=†Á=Ÿ G=§íZ=®sg=˜Kh=•º»=–4=•ûß=wÅ=°D±=°=±–¹=­Ò=¢P=›÷†=•>=š!í=ž¶=šWx=žC= N_=˜j”=™! =š'»=™[=œÐé=±¤=¨£ -=£9Ë=²¦>=°t=¬øo=¹Šf>­ã>3*>u¿W>zpù>m.>ðï=ôËi=žàÿ=š~=šV= ¹Ž=Ÿñ =#=Â:=žH=ž§»=•ä =˜}==Ÿ”¬=©q¼=®ÿ=µüç=«b=°Æ5=Ïõ`>Ef>€›>ŒA>Þ0>_­=º^™=°»=®@_=®.=¦ú=– i=š±=šÏÑ=™í¯=š9=›€=š¹{=¦=Ÿ¡}=µ85=§û¦=ŸE°=ž1=š!»=•ec=™w=šö­=œ¶U= j=—zã=‰`C= gz=¦2®=¥¼À=š«=–9€=¤#ø= Åø=ÖÖ=ßœ=˜Ö`=žj¯=µÞ=šUB=¦–=:=i)=›>3=§¯=©,Ý=§‰æ=¡!=¤:î=¯!8=£Æ]=œè»=y=œþV=ž -¹>KÀ>X€¾>[Ýv>*oG=ïk)=žRû=“6ø=qò=ŒH=”ˆq=–~Ÿ=iË=¨Ë„=§Š¬=¬-É=¢²ƒ=¸â=–Ý,=š´=¢‹=µ?¿=ÃÌT=ñ¤>Fðß>_#ï>jÎ+>r>/>OR=¸ä=©ÃZ=ž×=Ü=¤e¢=ªÍQ=¬I==¦ô£=ž÷m=¡^Î=œ§¡=’Y=¬ü¾=ª¤—=¥ä=›’i=—¬C=•ä]=²œè=³”å=¨â£=O -=œÓh=¥ÓŒ=«Àš=®š=Ââ’=Éq?=É"Ç=ÀSÂ=¶\u=® =™™|=¦Š=¬Km=šƒ=“cÍ=n¼=˜;’=˜.á=œ®Ž=®ä0=£^„=–Ù=¢ÏQ=©Ó„=¯ 8=›`ï=ž¼„=£¹=’Ø =–›=žë=º+(=¶Õ=ªŒ=¹‰K=±³'=Ÿ¶Ä=–8=›áV=œz-=œD©=™•T=•[=”™é=•&‡=—ï>=•ðõ=–)=œµ‰=ªLD=¬?Ï=£xB=®\=¯IÞ=¢ ›=›Ô=¨U°=ꕽ>+;>Cí®>AFï>$Øê>•É=΃=ô‰B>òF>r@>ƒÚù>€¡Q>DÖÁ>u1=Ã~=è.>0ô ->]2¬>z4{>Xo~>8p=µ -=«ß=®Œ>g‹>7‹>LÒ…>2>x> =É\Â=˜ ·=šÌN=òf=®CE=­Ôú=®‡¶=¦ö¶=©Ýø=¬ý4=¤Ü­=¦Ö2=§GN=Ž¨§=’D.=”ü=•t-=’JÝ={=?=%p=“ú&= ±=¥û=¨“°=–ûÒ=›!¦=ž‹==&D= r=™äª=Œßë=œF±=§t·=¢°=˜Y=Ÿ×=«Íæ=£ËR=‚°=œ:=™c"=”"=ŒØ€=ÖŠ=“Þ<=œ+½=’Ï= ¢=¦Ç=¤â¶=¤ä=¤Ñe=¡V"=ƒK=”ÜÏ=˜æŒ=š¤=“Ë=¢ºK=«õË=­wƒ=į=Ðúj=Ð…æ=¹ÍÚ=§Œ²=Š#œ=–aS=Ų=ª‹Æ=¢,ë=žOe=£= "ƒ=¢á:=¬3Ô=®Æ=«¥=¡óª=—î@=“ù¸=®%=ŽÛ=Ž =QÒ=Ÿ=I=ÀFõ=÷¬¾>"x«>&;3>$°==Ü¢6=¼ÚÏ=£Žþ=˜<=œ|‹=¢t=›ê=¦ŒØ=®¶{=–ÉÙ=æÈ=£*0=™±ì= Ï<=¥î5=›y$=Ÿ¢5=¦p¹=Åœ¤>ô‘>–Ó>$¸>¯>. =­-y=«rÎ=«º­=¬µ=žaë=™c= 4=É5å>&9>–…G>º„C>·’>¤Í“>ã¸=Ù,ƒ=Ÿ=™é—=}= ¢ö=—Øš=±tœ=ÏB> Á>kA>3#_>ž°>¨MÐ>¬kz>— {>6¯©=à+×=¿0=²è§=ª,è= ¼N=±?½=½;=Í8=Õðõ=Ìì =µ±]=– ô=•Üx=X=‹uV=‘Š=šÉ¡=È) -=Þã=ó>ô>Eù>Æ=ïáU=ijr=³êÎ=¬”=´OU=ÂF¯=Îj=çx—=ê6z=òGs>B=ò¤Ú=ÛIW=¹ü€=–/0=—3=Ÿê{=‚¨Ì=‹¶d=•æ=¢qÍ=š¾=”`ë= ·j=°¹1=¹ÑÖ=·n=®'Ö=­ä.=¸í×=²á =µã»=Áæ=Ô–=â*›=ñ¬ó=Ð>=ºÚÁ=¥Ô¦=–¢|=“Hô=•ðæ=Âvö>}>WÃ>Ðü> º=ïÐw=®÷I=¤žv=™¤c=‹G?=–«L=²=¥Îï=”Çç=ë¿=Yú=°Âê=²ñ‡=´®=¸þ=¡Ì§=—=•BQ=¤PŸ=Å#Ê>¢>â4>ÊF>\ü=À˜¯=§å=”ñG=¦¦â=§¨=¥Ô=–%q=ŸhÐ=¤E=×s=‘qÐ=”nÅ=¡8‡=ž=›”=—PM=žù9=¡òá=¦¹ú=Á@ñ=ˆ£=ÁeÑ=¬ÏÐ=¬¨=¬`Í=¨zJ=³£y=·s}=·©B=ŸL=¤2ž=­ýœ=§[= ¼=™òú=—Ÿ=‘‡=¸t=@¬=œs¤=£Ã=ªO¬=ª2=«Ån=­°=¯³=¬©==§áÂ=–Å=›°£=¡ÉÎ=¬\I=®ül=³]}=»«m=Æ£«=»ý›=¬°å=¨½á=¤YÓ=žàs=œñ“=š:Å=•&=Œ€Ú=–xÔ=—œö=˜r*=šýz=§cG=¶#@=°L=¶Ï;=µqœ=‘q =œ9 =ŸÙÆ=™ç=Žï2=“œ-=Ÿ:¥=Èò˜=¬•-=•W›=Žå=Ÿí·=§À=Ô=§=¢öº=™¯=ž,Æ=›°"=›Œi=£Jå=¤”›= /ø=˜ƒ•=¡¥=¢N·=£±½=¦ª=¨¦=¨u&=©… =ŸtJ=¥Y=©+=¦1H=§µÂ=®ª`=»V¸=¨¶Š=«Ç=±Þ]=¿i¬=«=£òð=¦=e=§XÉ=¡X=œÏ=¥‚=x=œm==žÂÚ= ˆ=£ï[=¥==B=¤@Á=¯…Ø=´=¤²]=°oà=Ãd!=ê‚.=ëAq=ç¶\=ß+=ºi‰=§ß =›7a= )Û=žHñ=ž93= v=Ÿô=˜ï„=”–—=˜+=›ìó=¢°í=ª¨F=¦R<=Ÿ=œÄ=¥x =  ä=ŸM=Ÿõ(=¾1v=Ù7=êîD=íN”=Ób=¾È=«g¥=žU†=ž|‰=žÒˆ=žÌ6=£ê†=¤h®=¢Á=›Óì=—µE=—ÛÎ=›ÌË=•2ƒ=›êþ=Ÿî =”¨}=¤w=£é_=ž Q=’i;=œšÓ=ž²=Œ©‘=ŠÍ™=—f=¦†=ª¿£=­dJ=¨(J=›Â=§¡7=¡Ý=˜7Ò=šœ=’dÛ=“ƒ=’6I=Ž™©=–á–=š3í=“êí=¤¬w=ª5f=¬ ê=©u=§j=¤¿ç=£Šm=“'J=š~Y= ì"=¢€ß=™6ö=˜‘=›qú=¨Æ‡=—r=—öc=«˜¹=¤#=¡›=¡^ =¦Ö_=·”q=ȉ7=Ù¬ =î¸þ=ãb=ؼ==Ì16=ŸÒ$=šÌN=&K=¥ŒÀ=æ=šNÄ=š­}=žøj= °»=™ã=‰Z,=¦Äª=4+=–.¹=¢2(=—k=šz=¢Ñz=¹X¤=Ä­š=ß5á>ÐÛ>8?>G*=é{¨= ÙŽ=”Ë—=œÉe=¦ –=™š'=¤ -=¤q&=žL”=– ;=“‰J=‘ñå=½d=¥‹=žÐX=™–¼=¤„¢=¢ÛÂ=¨¡Î=®i= >ï=±¡Ê=³St=«¦=¶ç=©Q=§jT=Žbã=š­7= ‰<=£g?= ð=œmÎ=¤hj=®æº=¥AŽ=§Î\=¥¾=Ÿƒ =°Ó=½l=Ät=Ã@,=Àqe=±––=§Aè=©YH=šß¾=¦ =´å=±â8=¬j"=² ¢=¼Cž=¥‰m=¢C=¬=—I²=˜œç=˜=šÉÒ=£‹=¤m¬=¢L§= ý'=¡hÁ=˜ÀJ=šq=ŽÇ=§µ˜=• k=—ñ=¡Ì4= ì=ždõ=ê =ž•ö=›m;=¶P=ÊØO=ÙÿD=ìB=Ö6=ÄCK=¹P­=¯z­=¡?é=’ ‹=‚ZZ=Žï=B=uP=š§k=§ˆ?=§>=£H=™’=žs(=¡.0=¡Bí=— Ž=ž==¬ÂÑ=Àªõ=ã4=åÿÛ=Õîš=·„’=”tM=”?„=˜#‹= Sm=§É=„:=˜è¯=šX™=¢Í5=lÃ=›S=Ÿ=žPà=š{ß=˜ø«=ž§d=£íÅ=¡‚÷=¢q=®Žü=£îÕ= L =œ¢ô=•\Q=¢9­=˜Ìß=¶¹=—á =¤_=˜šé=Ž·=£(=—¼=Ÿnœ=©Pî=¤dv=L =‹Æà=ÂN=› -ã=¡ú¼=¦iÎ=©¿{=¨¬­=¤Ã=¡üÇ= ‘= kZ=œå¥=Ÿ õ=£ÓA=«¾=¡,=¢dz=¨~=²=«¤¹=µÇt=¸ü=ºÏ£=¾ÆŒ=¤´L=¡§= þø=œ¢é=™C=•Š=—êŽ=­«Ë=¨ÇB=§TT=¨¶=¬ÇW=–Ó’=šë\=œ‹=‘üá=£“3=¹Ý=˜Û!=™-=½p@=ÚT=çø =àô=ê_û=Â¥×=¦§-=™éÏ=šâU=°“=ŽÝ·=›Î=”^=™Kµ=¤›=°,0=œû‡=—ãé=”mh=’‘b=™X²=–m=v=¨Å=´¡/=Ò.<=Óãé=Ñ44=ÔD1=¦Jø=š­¬=™›==£jÚ=%K=‘“¬=ŒnÈ=x=šùñ=ž;!=‹Q=™r0=–±”=•ìõ=–×=™Þ=¤çþ=¢Pr= PÛ=žÅ=ãÔ=¤=œí =˜8W=  Ö=¢¡’=œK=šG=ŸÒ3=‘]ø=î‰=’Ÿ=P×=˜Çi=¡g”=ŸÏÈ=!Ç=³h9=¡ =ŸeP=£¾6=¬W=¢ÔŒ=«á!=¯‚;=¦Á•=§Ÿ=›+=šz¹=£À§=ŸŠ´=¦sB=­ ¾=¯Ää=Ÿ=œýà=¦¨°=¤Cø=~Q-=«rw=¢à=š*=—Ǩ=˜…=–`F=”d[=•) =¥–a=è=ž]I=žðk=—²¯=®#ð=¬ê‚=¤Tð=–¸=‘#=’ =˜¦=ž)+=…ú’=–=²=”:=’e=ž»=¢™.=©‘*=©e“=¢+=£ß+=¤:=¢-Ø=¤†¸=Àžì='N=Îw=—«µ=¦¥‡=¡-=£KÚ=¨7¢=°…€=û=Îì=Ëbñ=¹tò=Ó«=ª -N=¤ü;=Ÿ£!=œ±Ú=˜[e=Ñã=‹š.=År=¤ÿ5=•ÿ„=œo4=Ÿüþ=œö˜=‘ýI=¦6»=§æÖ=¥V=³­ø=ÏÍb=Ïu«=ÍØÇ=Ð4¶=§9=Ÿ#‚=œ=œ•5= Iœ=’—ö=”‘8=Ÿà¿=³V‚=•ãP=¥B=œ s=}/=¯ÕV=¶ðS=«Z?=¡fJ=ž.r=«¸¤=¤g˜=§Ê=¬1;=¤ð=¢ßû=›Ø^=™SÇ=ŸŽ=®-%=Ð,=ž›}=¢ø|=¡ç·=£Úî=žá±=¢/Å=¨‰ò=š—C=±Uß=¼ô\=»´=§ù=¤ =ŸiP=›Oº=—%<=—Á= ¨=¨ð¹=¬…{=¯)´=Á«Y=°tÚ=¦]€=¥•3=¥‡=Œ„o= ê=¤Ä=œ¯î=˜p¨=—Bç=¡M‚= »j=šHÏ=š–=ŸµÊ=¢ç=£éM=©Ÿ¹=‘7Â=žæ8=Ÿ=`=ãj=§Ô=»om=­K=­–=³ÀÀ=«ö-=šÞ¹=Šz×=—È4=®äú=°]=°ø=­¼=©½»=°=¡?`=ª½Þ=º =Ö5‹>MÒ>P|>Ç·=ÏÔ‡=™P%=¦•=Ÿ=£b1=º[&=õVƒ>Oy,>qšE>v&†>K‡Š>¦ã=©…™= =—åÿ=±êR=ÒÐä>H´->_}Œ>_ ->Eq•>y$=ì =™!]=—û¾=¢óŽ=®´=ǃu=ÐÝk=ÐÐ~=à4Í=ìZœ=²)"=š o=œŒ»=§B’=™o™=˜þ=ªT)=®~W=¤Þ=ª¡Æ=»Þé=É»$=ÈÙâ=»Ø4=¡'1=–rÁ=ž4=¤n=ªâ=¸¸=ŒÍñ=ÚZ=šQ¦=¡E==­ a=Áv=ë•ã>UÎ>¼!>¬W=̲=±\(=®aa=¬œb=•‰=¥/¤=¢&H=§j¯=¦Ã=‘O†=¨à=— ú=œþ=ž.@=” z=¥gt=˜àâ=”ua=“Ó>=™ñ =¤© =•áO=›ñ =¡%·=¤Ò²=Ÿ·ó=–cê=–m=–-=“0==¤V=›¤=–O=šná=™úÐ=˜YÇ=‹“¨=ˆà¦=˜i‡=˜Fx=²Ë×=â¬à=ÞF=Ï'¡=ÔTü=–™m=£~= 9!=—$Ñ=‹¨=œEú=Žë=˜=¢7Z=¤·= v=½yE=«‘=˜…´=Šù=¤Õ=šj=£ ÿ=’4‰=‡²ñ=öË=ž=Á=¢·ï=¥Ç¥=˜¯ï=•l×=²þû=æ >@«£>ƒ’ƒ>”R>éN>eWO> -y=¬=…=‹S=£N—=¢£í=ŽËé=¨­=›Ð =žëL=Ÿ-†=Ë™=™%å=š°"=¸ûr>¦>a>‚‚>ƒ,7>^7>5Í=7Í=š ==¦fX=™uz=‰³=˜­¡=žW=¸‰è=¿å=ºž@=¯“6=¬å~=¥Y =œî/=—±ê=™Ÿ=‰4Ü=¤Hü=«' = !Æ=¤£=–=³=”<®=¤m†=ª¤=¥‰Ø=²Ý”=’·=—æq=§‚.=¹ ø=Ïž =ªÇ=­êX=³þ`=°­¥=¥sJ=©“"=°ù&=­ä›=¨Æ=ž<6=”ë_=˜€=œÏò=šb==°OË=¬Ó„=¡8Ÿ=´Í-=¬®Þ=¢¾y=¨U/=¯J=¸y=¥óÅ= !æ=© E=®ô=µy0=¹×=µ(j=¡¿a=¤y =³v‚=®¡1=¢ÇS=ªô6=¡Ä=¦ø˜=¦ë=§MÆ= ¬Ø= óÉ=²š,=°³‘=£T~=š= e=­zº=•¬O==—`t=™š=Ÿ™=Œ°Y=…-Q=™’v=¡Š‚=©]z=¢ =¤x(=­ŽÝ=§hR=˜ñL=–½w=™H¹=šù±=ª1=• _=›àô=¦tI=¡==§ù3=£˜½=¨Š=©§È= …=œàÐ= Î=Ÿ=÷Y=“Å=’1=–X=¦-×=žhø=§4§=¥°÷= z=œëD=šxç=‡}`=˜ =¬´=±¢Î=³à‡=e’=š&¿=¯z =­Ãd=¥•8=–æ=šÆP=©-§=i`=‹~ =“ìj=—ÌI=ý=•2=R~=¢»Ô=š^û=“úR=žMo=¡¡m=™• =’S=•Ôî=–,“=“§ =Ä=šÖ=œã:= íØ=¬J£=ªÇ=žÎ=•ì= Q=‘àš=‡õ=•®=›AM=©">=©þ¾=©ùð=£‚o=´-™=©”=Ÿ´'=œÚÛ=©FÚ= >=•±=›ÿ°=—öÐ=ŸÅ=°¤=ÆÄK=Í!=Þ#Ü=ðío=ôw'=ìê7=øhá>Î7=ü;Ú=çTý=¾à›=«…_=ª;Ò=¹¢=¶GŠ=ª¼ä=·o=Å]1=êÊr>ìS>ã>¶9>!=ÑrÉ=ž_”=Šr=©š5=»íh=Ëšy=Ë×=Þf\=òžÚ=ö-ö=ôñ²=ó>=òq£=ÙDÔ=½-t=Û'>²ú>.4>1͘>'ò¹>–à=úÜ>´(>Äí> -r+>0Å=Û<@=¬ œ=’Bæ=–˜«=šÊß=™+¯=¬c<=½Bó=Àðø=ĉ=ż=Åk=Ã|µ=µúi=Àˆv=Ü°y>#Ú¾>aõ*>ÿš>ŽŽê>„:>;ö>$Ã=šÁ=£t¹=Œ°=¥á=žSÿ=™¥o=˜¼=š¶u=ªv¹=µà=¦›Ñ=¬64=®a?=°XÆ=³(¤=·™Œ=«Á¨=®ë=»éQ=à(“>Ùl>;}·>P# >S¸9>(=ùEó=¥²¹=¶+:=Ä,>Ó>=õî>w>r÷Ü>[ªV=î¼$=¹¥³=œ=k=œbÙ=¡\=¢)k=§i =­=—#È=¢ÀS=±¨˜=®Ñª=¥”½=!/=š°}=¤`š=°1}=°ˆÅ=³ò‰=ºÊk=ÉÝ·>;0><–>S1>Rz)>9 n=âóu=·k7=šUÄ=¦Àò=¨ï-=¬Áš=µÃH=³M—=¾»=¯ÿÍ=Ÿk,=ß‹>„>^b¾>iH&>m>2v>P¾=¬¬´=¥)ª=œ'=ŸÐ=–1À=‹v=—¢¹=£Âû=¥ëÖ=œMî=˜Ì/=Ÿ‰(=šVñ=ˆ"—=¨ŒÛ=®¹z=·Þ…=¯ =­k¼>²Ž>);K>Jêh>DÞ$>-;=óže=¸ÁR=š*=œ|Ô=’îØ=‘õ2=‹¤ø=Œá÷=…fœ=„Þh=‰bÓ=ˆÕ`=Ž¸®=˜I¡=Ÿ"é=§a=ò‡=›)`=˜×Ø=´ÙÊ=íØ'>AY;>Pq>U›>.vÓ>›M=¶€‚=©sg=¤%£=¨i=,ç=€=—ß«=›&·=œ~¼=–T0=˜‡d=,’=™8;=–ó€=Š•= =˜`S=žkØ=¸ì>©Ø>Tž>+cû>#±ª>U£=ò¾=¾^=±Ì¿=™u¨=z8=ŸþÒ=Ž!ý=‹`…=ŠÕ[=¡œ=Œx5=|Œ=|b/=} -x= U=›ªÌ=’ïe=‡ü—=ˆe=’ü=—B=–‡o=ˆ’Ä=—]K=§È=…ïÑ=‡€=®=ä{§>½>Ë>>Åû>“=£û»=“Ù=¢,$=™.E=’j*=©¡U=°,Œ=³ìË=œã=•ñŸ=‘>è=š@=†I=¡h=¨¿=¬{ƒ=²úv=¶¿8=¹±÷=Â!ë=Ä®=ͱ¥=Øí=à$=¤þØ=¡ñ=¡‡é=—Ýû=™ ò=šüã=–Üy=—²=±0*=£« =‘Â[=’ÀŒ=•ïÀ=šÏ=¢Îð=¦áÓ=¥?=«?E=¯ò=«ç=¤Ñ\=”³…=§Û=«Û&=¦ww=™3Ö=ŒÏ÷=|!ü=…•p=f,=¨9=¬ 9=Ÿb=£w#=ž¨:=—@í=£•0=¯u=© W=§d-=«7Ö=—• =æL=•&ô=vI=‹Hj=“:L= 1Î=µñø=¥Ïc=¢;=¤WÚ=ŸPr=›Ñú=™]¿=™87=™,H=©ˆ»=œ1ï=„ÎF=—(4=›¼=þ¥=–¬-=œ— =”„=šYD=¢^=–|Ì=’`=“Ñ=‘C§=ŽF=‹ï¦=–ŒË=™$T=šf°= OÀ=¤a"=š‹=Ÿë¿=·Z=¦¸Œ=žK=œNÞ=ŸÞ£=¥»¨=’•ë=“¤ã=› a=dã=t»=˜*v=¬œË=¾)S>*”>Ñ•>!òt>æ„=ÿ¤º=»iè=žÒå=˜æ¯=œnè=˜¡–=˜Dˆ=¶¤º=½Þú=À¡=¤¢=¦Ü™=«É6=–PÓ=‘ý/=—m¾= Ö=¢—´=£]=˜`V=‘÷Ô=”20=°«=fS=ŽÆ== õ=ŒY =¥|=‘Û\=–ßø=™½X=›}å=ž—ø=ž -F=žÉ=­‘Ù=¢Í=’õº=“Êë=œ‰©=®/Œ=¢bÔ=Ÿ^±=¬a5=Á¯ü=Ø}>-„•>0Ù!>1³ >6=ܸè=­`=˜¦£=–Â=š$Æ=B=ŒŠz=©Ÿ…=¡ ®=—%Š=¡àì=ž p=œ>Ú=¡ »=¥ÅF=ª…à=¦&°=¥&î=£TL=¢Œe=¨ - =ôm´>)+`>XÊŽ>RÁ><>í=È =©³=‘P=Ýå=¥½±=¨\•=«¼=­ô=£æ?=Ÿ&=š -ý=¤˜=¯`0=¾Ä{=ÈÜ—=Æš{=¹Û¨=ªá=¤‹B=™üT=–Ä&=”àš=¡Ññ=žFi=˜JA=–ém=–ù=—F=˜9=›§a=¡&=¤Å=£ =•¥=§zq=±Û[=¦tf=«Éñ=±'¨=¯°}=±‚¤=´Q˜=’%{=‘Òã=”»Æ=”κ=–—ƒ=žÕ#=¦Ìp=¨•¢=´2=ÜÀÉ>Ñp>R›è>\V~>b‡S>3»>}=™u=œ£=ž3 =¥n©=›‡û=—w7=™ÌL=”Ì=—´ò=¬é=­/=©…å=œåß=–än=}}=šÆe=¢ƒ{=¨­=¼+> -I>G>>†òt>‡JØ>{j™>™=àÂã=“]=—Z_=›Ê)=ž4+=ž—Õ=žDŒ=–l2=Ÿ>ý=£³Æ=¸?=•}=˜˜Ž=ŠN–=Ž´¼=•0N=©Ÿ]=¥*…=™ -Ö=¥o¤=§{•=¤è¬=•)X=“¥Ì=¡•Æ=›Õ=™",=Ÿ:L=™ßï=•Œ=Œ®è=Œ¡=DÁ=‘iý=’Ì=”,=]ì=ˆo»= =ŒFí=Ôœ=ŽÜV=ŽþÀ=’³ý=“@V=—Ù)=—‘f=”k˜=Ž*=>Á=—Áö=¡Ï=©a"=¤¥b=¢¦E=ŸÙ =’|=œ˜5=¨wt=Ý>.>!Å>\É›>‚I“>q!>RÞ=ç‘Ê=¸d=’Eþ=ÔZ=¹=›6S=ŸzI=£fç=¥œ›=›õç=š„ü=¨ =²÷$=¶2=ªÉ]=¡’=œÏ*=¡ïz=® -—=Âw½>D'Ô>q¡">‹ªz>ˆ`@>V”>ç4=£K™=¡Öˆ=¨Ëð=°Hù=© Å=ž¾u=–t°=šß?=¤Æõ=›éÄ=Ÿ²Ÿ=ªZ^=¢´n=›n—=Ž -O=‹ÇË=îJ=•)]=œe=˜i=‡/j=Š‚(=Ž¡=›ø=ŽñŽ=¢b=–l6=˜þ¯=›du=¡é=œnï=™Ç.=’›·=Œë=Š}J=Ž)±=Ž{©=ï=Š¯Š=—¨º=¢8÷=™p`=™=˜:O=¤ö¥=£ -= ø=˜›2=˜äã=˜7ó=œº$=— =Ž]½=Žæ˜=—"¼=¢ =–2:=–l=™÷p=•S¶=–_ø=š@—=™SÃ=›j{=¡` -=°×…=ÑN ->p^>\P>o …>rW¥>Be>+6=¨w­=•Q=Žì =‰m==”Ž =™N=ž¯=œÃ¡=›•ƒ=œÁ=™@[=–7Ý=” é=¦Ê5=ªÎ:=¨x=¢«=«‚ =Ë)Â>=Õß>i W>‡¸€>y,“>Räj=ñf´=¼/š=¤Ø -=–Uh= CI=œUU=‰m=—?=šmý=›Ñ=Ÿ!¼=œàs=’é&=›î°=£rn=°Od=©º^=¢Uz=•û>= sß=£br=ŸEÎ=Ì‘=ŒÑ.=Œ±O=£Ä§=§LU=C¯=¤pÎ=§\Å=ªI¥= cŠ=œ\k=š}é=Ÿu=žÂ¬=ž+ä=ŠJ=‹¿´=˜•£=œK„=šÑž=œÇ=˜È=–µ‡=”“û=•O©=œ^à=©N=  ‹=ŸÈ€= ¢=߉=“Ä=—>X=Š±=Œµo=m =”:=’!ö=’=²=ç{=™¸¨=’/=—eÁ=“Ç=ßd=\Q=ž<ˆ=¡Xî=§eù=¢¸t=¡Bê=¢Ï˜=ž -*=¦Àç>Û­><¢>QDž>BÈý>õ~=áP=˜ž=žÀ{=¡e{=œw=Jg=žVã=¦-=š²=”Ku=“.u=Ý=“¡Ì=£ï²=¤ÒM=¢4=›4=¬[h=ÆñQ=îEå>ZÄ>hÐ>gý>BË¡>BU=µ?}=¨ßï=¥yÁ=¡1µ=•P¨=•$³=•ø=ž!=¡þ©=¥ÞX=¥M=›Ž=³>=€Ûô=›+o=¦ƒ–=˜Í=§G=+‹=K=™Û=˜îk=šÚÝ=•K²=“šL=”],=¯Ÿ<=­ŒÈ=£À¤>&_×>DH8>_p¥>HN>{=ØU=Šj=ŽT=˜ÑÁ=œ^?=™’è=žP=Ï~W>PÒ>.t>>DL>6 Ë> =»$=Ÿm=–qc=’˜=jë=§¬L=¶X=¦’=•r>=€==J=˜1*=Œ€’=‘£š=”öÿ=^ž=†¤æ=‚êê=…S©=~®=‚¤©=~£=›ç£=šåè=Žë¬=–µ=–t­=”9Ô=¯4š=¥³0=šu=¯—Ø=¬·=«ˆ=©ñ>þ>$ŸR>9oP>'o·>`¦=ÁB“=ª @=›¨þ=.d=$x=‹z­=ˆj7=›¾=Ÿ­==¢ŠÖ=— ¶=žßß=¦Ë8=©Š=›–=’N‡=Œ€= }H=´–M=Úøi>4”,>B]V>8>Ú0=øV=¼k'=f—=“5>=–•ª=”fë=˜ûð=™³N=ŽÇ=9¡=¤$=¥F=¤l@=¦.7=¨d -=š=ll=†œ¨=’ñ'=`ß=Šäó=‰X"=ŠxT=ŽK=š=‘ïÞ=‘í³=—;ù=•=Ž¾ì=‚Õ¶=”Í¿=¡!V=­ ö=¼$†>õ¶>Gô>Š²*>ŽåÉ>ƒ >1cã=¿…=™–õ=¢=•`=jÝ=[ù=œi=—à=”ê=‰‘Ñ=áô=’[Ê=Ž§Q=Šd0=‰zº=‰„=’ä=ØH>ˆú>DTû>FcY>>Ü=úñé=®)ª=‰Ç¬=‰µ:=Š¤=ŒO)=«®=‘ÎÇ=Ù1=ˆlè=˜*ö=—‰Z=šçZ=®¶=’W§=Šê¸=l7=–‰Ä=™2=›u¥=ŸµY=žñ¹=Þ=žËÐ=“Ž]=ºu=™Öá=¨·O=ÄŒ=ó„T>Ñn>Õ> ¤Y=èí»=»˜a=œ0h=•aN=’ù=€ª=‹†=¨¢y=¡­ñ=‘‘=Žï=™s©= ª»=Ÿ„Ü=›bã=™Ui=œ¨s=¨N´=¨ Ã=¢à> ˜6>m4>F><²=Þip=µ˜(=¤‰'=”å =•Hõ=œáå=q|—=_\Õ=R|=Sî)=[½=`ï¬=hÈp=ŒÜ=“éö=•œ[=¤Ó=¡eG=–r=’¢¹=ŒÓ=‹Û´=H|=œ$â=œ~P=™ý=›æd=˜Œ=ŸQ=Ÿ^î=¢˜o=¤lG= Ü™=¥Ì5=›ï =Žaâ=˜£Ñ=›„³=€~=Ÿˆà=˜YA=’@=‰ýé=”¶T=šWw= ×=ž3B=“S\=Œr0=Š³í=šø= y=¢új=§= 4¤=™=‘Åh=’Qm=“a =”SK=–äí=™³=œâÎ=•öõ=Œ›”=‡OS=‡G=‹¸°=oé=“¼c=xq•=‚y¡=‡µ=€3{=ŒÔ¹=‹hÇ=Jä={=u p=hÑz=Y“b=Wfi=fú²=‰ÀË=…})=‹ Š=“ Ô=–à‚=—‹²=–ºÄ={à=’nŒ=œ5›=©—v= Ÿ‘=–­Ö=’«d= >Ó= ¸Î=©å=¶]_=ì*Ã=õ Æ=óf…=È»ä=¥w•=–=%=f=”’ö=“vù=“=œi˜=©y÷=¥PŒ=Œõº= êˆ=šw=‘ˆæ=”Þç=7Ç=‹ºU=Š°š=Á=²£ˆ=Û(x=üôI>fô=û-t=æy"=Æ7<=²xZ=¢¦=ž\¡=¢x=¡*š=•¥5=œtó=ž³=ŸK9=–D@=šFð=›ô=–Ð=§öe= ÿZ=–*Ç=ˆ=Œ+=‘óß=™–1=–ah=“—=À;=a/=è=žI¢=óÅ=¨pC=›Ú°=<œ=—N=˜Ìp=˜Ž¶=˜ =¤<Þ=¡úÊ=ž Ø=–ƒ÷=ž[B=  ~= ÓŠ=ô=Ž]=ˆ q=£Å=š£±=˜B =˜®â='ª=h,¦=Yܪ=\Bm=háÀ=€»=Š=˜^æ=˜#=špß=Ÿ c=W=“>®=šË=¶= ™x=œcž=¤¥=£ÝL=š“o=—áÚ=ª=Á=¶=­®n=ï]=©Sº=›áW=•; =˜^Þ=˜ø4=žFw=¢%=˜ú!=Ÿf4=š’²=·l=žDõ=Â5=‹7=Ÿù¡=—ñ€=‘&7=‹ªL=Žd¢=•ê%=’“±=ƒaÅ=Ž’=‘2Ï=ºê=ƒ_)=…L·=„põ=#1=ríl=rI]=w‰#=„XM=[Í=±Õ2=ÅÍ€=Ú¥o=¥ß@=—€=™š =ª±Š=©Õ•=¢êF=’yV=¨*Ø=¬`#=«ÒŠ=¤Ê}=¢ =š»É=Õ=¥&e=žÆÒ=ûs=§g=£¸Š=° ®=¾A=ÏÇ›=ÚyŒ=вe=½„=‘ `=š†º=–ŒX=‚ÿP=ƒxO=‰«š=ŒL=„”K=“­E=•¯Ó=’¬=Œ=™Æ=šž=”EJ=’¦‘=Ÿ=Ž0ó=‹¥š=«DŸ=ª¹ö=¥ñî=¢[y=ŸßÊ=‰É=›} =Ÿï=›Èã=˜½3=•("=– i=—%à=šSé=£:Õ=™Ü=žjï=¤ôj=©K=‘Í=’bç=œ/=–€ô= ’=—|î=‡‡È=š‚=— =™à =¨ =•-Á=—çö=šQ=’,4=“"Å=ä=zÅ=›^$=—Ï=™Ô|=ž ¼=•z!=•=’/–=Œ—Å=’=±d=’þP=¢´¥=¥b=¡ú.=šjÕ=‡ÚM=‘Ó‰=šŽg=¢Qý=¨Z\=œGm=š§y=œ0=”==–á>=˜lé=™ý=’1~=© =Àpø=Øh=î°=ë’³=ÝJ-=»eÅ=«93=¢Ù”=Ÿ ‡=£»-=©_Q=¡[=œ¸=­ñG=•ø©=‘}·=•g”=ªNá=™ŠÅ=›µe=¡ªu=ˆ_=Œ:=–!Í=¡D<=>–=%K=”vB=™ñ¿=«Œ=¸Ýp=ºËo=±ôÍ=¹Z×=£,=Ÿ €=°”$=׉=ÌŒ†=ÈâÛ=Ѽ]=—]=“6=“ïL=£è=šô#=“ïF=ú–=’c=–2–=‰Ì=S—=‹RÅ=¨QT=®ª;=¯%[=¨ãõ=¼›ý=æî>Tå> ¬f=ÿÁ=ÜU=¹ ¤=˜U¯=‡‹ù=‰™«=ŠKï=p =f­ë=nÖ=}ŸÅ=‹Wd=¡²=­y=´¶å=±aï=Ÿ÷ =_ÿ=œ&Æ=“¾€=¨Ýc=£+l=™ =“åË=¥dP=“KÒ=…¯==‘I„=”h=–|w=¶´=”Ei=’D¶=‘ 1=”×=C=¡•¡=¡žà=˜àF=™Ïe=—~d=šHl=§²y=¥†c=š}ö=•9ì=š)õ=Òj2=ë`ƒ=ñU=àòK=Ì]=©·=¡ïm=¶â,=’‡Â=^Š=¤ˆ7=¨ `=¢øš=œB\=™M¢=˜óÆ=•Úc=¨ð¥=¦¦á=š]Ý=”~˜=¡Äþ=£dÖ=Ÿ–=–š>=–2Ê=œ&Ô=œSy=…–`=œ´=Ÿ -=›`=öà=Œ Ä=…°.={:Ô=h«=YÌò=|ýö=‰!*=‹•¤=†Ï”=’8 =œÐ¨=¥ÞP=¥nÅ=Ž9Ç=Îß=š@C=™Ý©=£'i=™ïC=‘ƒÿ=š=–Ÿ½=:A=“÷µ=ªÏÿ=¡}=ž-=ž1g=¡š;=œ+=’3 =‘]=–ê=’ õ=ŽL¬=’êè=™´?=œXÞ=‡—ÿ=™ØÎ=¬U=®*~=ª X=¡M=˜yÈ=‘ÆÎ=›¿=–ï =‘J=‹÷ =•ˆó=•v=Øü=Šc=‹Jg=Tk;=j¾ì=Nì=yKÃ=Ž¶¢=–=“Dy=•‡>=sd}=”‹×= í=£û`=—jH=–=¤x)=ªO!=šçF=‰¨ =‡ÕÑ=‰Uh=‹Å¤=~Zî=ƒÅ=N½=‚±=šÃT=Žõ0=Žêé=‹ÕÀ=€7Y=ˆY,=„*>=Ôü=¨ = 6·=áƒú> -íp>år>D^>ˆ‘=Âg˜= ²À=¬ÈS=•ü|=“=”“Z=–«=Ž{=žÆL= ™=Ÿro=Ÿfý=o=‘rÌ=‘Þ=‘9(=›P= &=˜…w=l=•Jù=Kt=¨ÿ=©Å=¡}=±v`=˜ =“5=•ŠQ=›72=¯¶=ŒÕÿ=”ù·=¤ =­í_=”½=ŒÊH=Š_Õ=ˆ?=œ Ž= ¹ã=šÿŠ=‹“=§G=¡[“=¤ì=¨!Ô=¥)ù=¦§ÿ=©nZ=£+ž=œ^‰=²X=—iˆ=Ÿ2Ü=¦¦a=¡kÀ=®Ao=®ä3=©km=£KÆ=›æ|=Å =™[-= ê=89=£vC=—™=ž¥ö=¤jƒ=•®¶=•Ê€=‡Yª=‡Õf=•7`=‹sÓ=­ a=”=‰ßT=‡j=¨-2=§ž=ªZD=«Å÷=¤ “= 0=ž>Ž=¡%±= Eˆ=ˆ·=™¥=›P=›§ -=¢.=¥›­=­ð -=©MF=›¢¤=’Tu=’:ç=ŠÚ =– ß=¥A=¤;5=´²«=£iE=žÁe=©Ó=¡¥ƒ=™°è=¤4=¬b¬=˜Ã5=žÑ=ž„Þ= *î=ž½™=ˆzv=˜ Ü=Ž!=Š‹=‹T©=›.³=ŸÄ=”\Ù=—R‹=¬Ÿ=”:y= ót=¥/*=¡tR=žÜ=³_ï=Ë$ž=½šË=§;²=“a=›^6=ñ‰=‹ž=Ô=¤øÒ=‘H=£ ?=¥Ù³=¢HL=ª1½=„rZ=‡@A=@‡=‘®=Ó™=°Z=¡ÁM= K@=¢P= ww=›n§=£€e=¤Ì“=¤!;=¤NE=5Ê=’î¦=˜_1=§ÌV=˜o4=™ë–=šHÕ=”7V=ŽþS=«½=VÝ=”å=šù+=ž*p= zÏ=‘ýj=‘Bg=™}=¡Ò9=’—h=•yK=–÷ß=“$/=–¹{==„=šsú=™½Ä=„cw=„£=¡€»=  }=§uç=¨Ä^= ©K=©œÂ=šò=®¥=”Jb=Žô,=£RÇ=ŸÂQ=©ùA=­Âû=¥pè=Œb=˜P=šÔÓ=–RI=ê=ˆS=…÷=£¹Ê=£Õ=—j=‹o=…ƒ‰=£d=Ÿï=™½×=¡¤*=©þ -=U@=˜Ðµ=Ÿœv= …=²«ä=¢”u=£Á^=£xÛ=œTÌ=œg÷=O=’U¾=“¥=’“Q=•ùg=¡ßâ=œ ;=šTî=–°§=Ÿhþ=‘¤®=ŒXY=‹|µ=“º%=›Ä=„ï=‹r=’¦h=—MH=”®æ=ž[ï=¬oÞ=®ÔP=¢I=˜‡+=›Sh=”*Û=™šÖ=ŒñÓ=¨=•¢>=” N=ªæ=£½=‘K=‡‡=’Ïu=–“=›¹=¦Ï(=¤/ú=”nÈ=’<Â=žÎ»=¦MM=¨€´=¦öy=–\š=‘ƒ=…Ìq=… ®=œô¥=¤Þí=æà=þ=¡Óƒ=šÚ&=žT=ºº=¦Bv=œ1= ¶=¥ˆ'=œÄ.=—è¾=¤ü®=ó=” W=¡´ =¢«=œ*¯=¤,=¢Y¶=ØM=ˆ}÷=“ˆù=Ÿð>=¨÷è=¥O¤=§?í=²|=•%[=Žfu=•µk=”²®=–©P=šÏ=«=胎=ýYê>M >×æ> ‡=Ô\Ë=À­Ý=­žr=©2›=©ö=Á'Å=ôR‘=õüÓ=⤠-=˘×=À ±=¸Â=ÇÉ{=Æ}Ç=¾6¯=¨ß®=ÒN=“µ…=¤’=˜ =¢§D=²‹‡=ÉW“=ÜÏš=øªi>·>Co>Fõ>(@>ÝÖ=äÜ’=Õ=Ö¦þ=ÔÑú=Ù$/=Ì”=Ë}=»×=¾¾û=Ðóz=ÖðÎ=ËÚ†=µ¢=žF=Þ8=‘òÄ=JL=‰ÕB=‹§Ž=“G=ˆù =€=Œ¹”=”Ø==»ýK=Ê®=Ï>=¸Û¬=¥?v=‘—˜=Ÿš)=­Q¾=Õyt=ë¬=åïG=×ìÕ=ºôc=«÷ü=ªC=œx"=››‰=’ƒ=˜9=‘ÜÎ=¨£>=¦ÿS=ž =§V~=“±=›J®=‘Ø`=”aÎ=›ç9=œ6=”àÁ=‹Ù5=úH=›¶Ô=ªŽ*=®œ'=²ß#=½Æ=¥F…= ²=Ê6d=øe–>™s>j9>ú6>øð=سŠ=©]í=®[==´».=¸€i=®„=™gt=«Lò=·W0=¹=Ç[U=ºì8=¨Cx=¡ˆ=’!_=½«=˜!­=ŽÊ¬=¦)=§è”=žÍ=‘È÷=Šô–=Ÿl=  M=¤ÿ£=¤Þn=œ“=žü=‘Á=ÉŒ=œÇ=“¸æ=–£0=¡äJ=§=¤°=Ÿh©=šñ=Ÿ²r=¡(i=£»]=©‹‹=©ö6=¥æs=žÁ`=–º+=žjY=›ê=•Û›=šê\=†8"=Šc=Šù =‹]=Žøõ=˜È=¥K‹=¡°®=–šÝ=¥Æ,=©Xò=ÿ =‰;y=“»•=xü=Š/=Šú=‘ý÷=—ú#=F=¡¤=³=œƒ|=¢äª=«=¤ñ¬=›þ›=›÷)=üN=£]#=Ét:>"z@>Hé‚>_å>N?ö>6ˆ¦==À~Í=žþ =¦Ý„=©Qˆ=¦g=ŸêÉ= ¾|=¨\ì=«gO=Á !>«±>4Ò¶>;âÞ>/1>&}¢=ã‡,=ÕV=‰=üY=Š°§=‹=›„‘=—\k=–€ú=•¤=nÜ=’%V=ÝÜ=¬¶}=•ÌD=¢bá=˜ÝØ=‹†=•>=”M°=Ê™=š”f=Á<;=Ì#=ÁW¬=¤sˆ=¬œ‚=¬AÁ=” ˆ=7%=Œlé=“¸ =— ¸=•âø=›âü=©ÇÅ= u=¡r=¦/ù=£¥Ÿ=˜j=‘¢=Žd=›W´=Ÿ6/=¢,–=žTR=™T=yí]=ƒNË=…Ī=•¶=”Œ>=šè=˜%= Ê=˜V‘=—¥=’¦«=‹³=‹G‹=Œõ¥=Š/Ü=€ø=‡*´=Žf=‹bÐ=•z¤= ;=³¬´=·¡=¸á=ÉÃÅ=ÎF =Æy=³x=ƒÄ=“+˜=ž=Œqá=„€–=vs=“ =”Q=’ –=’Q=ž|> bí>QÝã>Š6ñ>‰¤ã>~’>q=áÂ=¤Áa=¦ -‡=¬â6=±¾\=ã¾=ÿÕ=åÖ×=Û=É‹û=¤ï^=ž('=¤åí=¥@p=§nq=œ *=˜ßŸ=‰‡0= m=®Øk=·k'>_è>DK >db£>h¸->N>lŠ=Àä(=•¿f=•ôþ= ™2=Ž–B=…L¥=d³Ý=pÂÌ=€ã¹=uÈð=p9=tc=Œ?=›'ò=š÷3=œ#=ŸHý=qUˆ=Wo“=’>˜=‘ž -=’ëY=‹Œî=‹kU=•Ðý=ð¿=Š½w=…^=Šø”=Œy=™ëú=Ÿá=‹@/=” o=žG=˜N=“Ë=‹Ü=»á¹=Ôº9=ÎÈ<=ɤ=ÃLÈ=¯ï=¨ç=œû=¯YŒ=¼®=Ÿ"ó=›`=˜#"=Ò=œR<=’%=Ž'Å=‹¾ø=š${=ž8ª=š!ª=£zÒ=¤ˆ =ˆ%t=¡ªó=»±*=µ6=¾s=Þô*=åÞ=ìÜ°=ë¡A=Æ>I=–z=„¬ˆ=‡6=‘ÔÅ=›kM=¡ž0=˜˜Í=ž<­=©åe=ŸÅ"=žÚ=©[[=›ØÝ=sÍ=‹LŸ=î=—GC=“šZ===Zé=ˆW=ŒÛé=Ÿ„v=žüw=›Ü=ŸÏe=Ÿÿ =›“K=Ÿá=£ =¨p=¼~ú=óÀ½>º\~??¹@W^@všL@Šy’@`+"@+}q?m5Î>°W4=¼ð¾=»¶š=²€J=©ã_=¤þ4=¤\Ø=©O=¤!=¡¶=®ÆÌ=© ¥=£@}=™œD=˜‡=–”Ž=‘¿ù=’¦c=¢¾°=¦¼€=¨0¥=£–=£HX=ŸQP=Ã:|=ù]š>‰¥?”"ù@šZ@ͽ@ÕN©@Ë°F@’°l@\(>³,Ó>Xºã=É7þ=¬cÛ=§ìŒ=¢ç=”»²=›´…=¼ ¸>AÌ>“¯ß?¨Yn?Â??à™?±7'?Šƒ§>“ãŸ>,¡P=Âì*=ñó–>0Û>ð#>r6ø>ÖÞ?møû?Éô·?ôÄÍ?ðòi?º´ÿ?õ©>•Øº>+'=µÁg=¼ÃÒ=Èfà>w>¤‹x>÷Ï–?}ž?†µ²?)ì?I˜ç?{Ó>^¯>g0=¹‘?=¾Í'=ã“> :=ô¸=ì÷·=â*ç=Òa=Æî=°#É=³6Ï=µ‚|=ç%<=ó]î>Üj=íÌ=ßd=ºåˆ=°Ñ…=ªe=™¼=–{=“ã—=¡6^=¡×N=¢¥&=¢!=¤Lâ=ÁWa=íQõ> Ó¯>C{2>9j¤>"¼\=òÁ„=ÕbO=·ÝŸ=ª§Œ=£õ£=Ò¼^=ÝB¹=èàw=ë­=Ûî=Ã*=°dý=ªf–=§Å=¡>E=¤£=û¹Ü>!3>)D>Ý·> Û> \>8*©>Sûò>‹Vj>‡j>¯»>;™w>?GÙ>I?%Œ]@ ^@à ƒ@å/¦@ï”+@Ë -H@›ÙÏ@gž@??q@-KÓ@¡ñ?u•¥?£#=Ù±=Ë=à ‹=¹¿=Ç?ð=Öî!> ¤“>(¾7>.ä>.\J>&‡q> ;‚>)u†>8Ÿ>I¯°>AG+>9œ=ôB}=ÔàV=¯Ç6=™Ê=›)ˆ=©«J=¦ÝW=¬êå=Ä”ñ>1©>Dún?/«?‚¶ÿ?³(8?½ñÆ?§02?m:A>óe>”Ò|=Ýqr=Ëw@=ËÌ‘>>ú >0º>'Ïá>Ù¶=ÓÔw=¦å€=œCÒ=—ñ=:¡=DÛ=•&©=£§¬=¬ñ=±È¬=øà >$Íú>JÏu>Hnc>=³¤=âÓ=±Át=›«µ=£r¦=¡®>=ˆÁÎ=‹Þ=ŒÃ_=‡IË=Š²#=’G^=¢Úû=žÚŽ=•´B=¢<8=¥a=¨µ=¤û=¢á©=¦@=¶‹£=Èaà> *â>&´T>,È>Ù >¥;=¯I=›°x=”®Ò=ˆz}=•Ú+=›L=ŸeK=–XÅ=Žk6=¢'¿=Ÿ =—Vû= L{=Ÿ(w=¸=–š=™=º=¦µP=õ¸&>W>DkÅ>I ™>IAù>†B>¸P=Ì~Í=¥¤7= çW=›q(=œ¿Ï=˜Ý2=–ï=š>==™§=•JÞ=£Ùâ=§å(=Žl¨=‘V=–ª=²”¯=°µh=®µò=Ç-=ëëd> §>.¨Ï>4]S>2A_>=àܤ=Æa­=´e=¦¨ã=›™1=•"=“ä=›Rn=œÇd=œtK=•=— l=”µ=£3€=£a=¡æ}=’¿=”±–=¢ª±=¢=¢=¥]=ùé=›.Ó=©&=6=«ž =ö/O> À> F˜=ýYå=ß0:=±%ç=˜ÙÌ=•ès=–<ƒ=‘M^=‡Pâ=_==k›Î=y—}=‡Ç=]f=‘ñ'=^k=™eæ=¢Ñð=œ9t=¥°ü=®K=¶6#=¼O=Ç E>B/š?&T·?µ|Í@%Ü›@.ùT@#??ÉHI?€“C=Þõ=À ¶=³C=¥»¦=—ìÊ=”u=íÝ=’~Ð=‹Þ -=‹Ø=°=“o°=ˆµÝ=Ã&=›Ñœ=¥F=¢å·=¢>+=ıò=÷Ä=¼l×=·Î¢=´P=­÷¡=¦¨L=¥£ð=®vs=µ¾8=µ`¦=°d=´ z=±•Á=š#±=œ˜=šæU=•c=˜—é=šø=œ«ï=¢qD=¨ÞC=¡±®=£pþ=¨a…=Ÿ'E=×Þ†>ï>¨(>ÆA>>èC¿>Êå7>¡ç>8‰v=åÖ=Åÿö=¾L•=°º&=¬Rú=§Ép=м;>Ý…>Ž©»>ÁS/>á°? --@>éû8>ÈœÍ>/ ->/Ë.=ÝtÐ= kÒ=¬ =¶kË=èþé=تñ=ÌU£=³½ÿ=©P[= "&= m=š`B=§Œµ=¢iî=ž¬=˜ä„=©¼D=žý=“»=–J[=‘©=Œ,|=É”=çEv>˜>º=óœG=Ñ4=œY×=™˜T=ŸÞù=’ñû=’Ð=¬ =”ÁH=”L2=²¿=—Ÿ»=™‚=–×ü=Ž‚‘=Ûó=œÌO=Œû²=ˆÊ-=’$=z=“P= ï =ž~N=Ÿœn=¤Íd=ªM3=ª¯=§¡t=šmS=’Õl=ŒÈ= ±{=¨øL=¢éT=§#=§>=¥oÞ=˜P-=“¿N=¦âF=¬X=¯óû=³H<=£3= /Í=¿sñ>›>ú¨>ô†> =ï,°=•³æ=™*N=›7å=¤–a=¢F=¡Ù¼=œô¶=œÌf=šö=‹f=–s=›é`=—€=‘h®= Ô=‘îÑ=á£=£=¢ð=“ä =•õô=Ê 9> §ˆ>Dj–>_öT>>|ž>Î=³d.=´ÅO=±k.=£MJ=”["=×Ç=”±†=•;Y=•ÿ¯=’zr=œ¸¿=¡u•=¢Ì=“Vô=ñ=žµ=˜+ø=”¯Y=‘‘ó=›BV=¥aã=·ê=¼w@=¿‚"=ÃA=¢±a=‘ªŒ= -˜=y;Ÿ=…X=š0h=‚U=Ž±:=“¦ã=‹žú=Ëq=“´Œ=š¼p=• Ü=‰kD=Œú7=‡ÿ=ƒ?d=„‘ =Œ¤:=–×!=­v=¸¬x=ÂÂ’=Ì5µ=ÂÑš=¸\3=§V±=ëO!>(V>@t'>:ÉŸ>0Û=ú¸=È݇=¥p8=“)þ=‘Ì=”rú=ŸÛ=–Bæ=A÷=‘HX=“\L=“Úó=” b=¢Â=¢V=–C¾=kO=—DV=…pü=™6­=¤"é=°‰>4Ú>Oî>eX>Q/p>*c=ò¬Ã=™Hö=›TÄ=¥B¡=—¹ò=•n‰=”=¨=¢K=šo=”ÈÐ=– -ü=›Dœ=ž'=Ÿà$=•RÅ=Q=’¹õ=ˆ¸î=ƒÖg=€Â·=ˆÿ=Žé¤=KK=_â=œÊ=™‘ =™=’F=‰­ =˜¹k=™×­=šPÄ=œ–=¡r=£Ïl=„V=—b¡=©¾=¿P:=Áš =¾Ó =¯üT=‘¯=†;Ë=‡æo=•¼ =¡=±¸y=•ï:=Ž˜+=ŒÊ´=˜„é=£.ì=¯IÞ=¥Jq=›êí=”+m=•V†=‹$=†‘Æ=”W)=¹Îé=ö¿ª>SØ>T‰u>Ktñ>+¾!=ÐhÜ=¤|“=”õñ=”P =–½ê=œ£„=™>Ž=˜Ò:=–ìr=ŸäK=˜æœ=”pi=›§ =£a\=¦=£.¹=£ -1=£2Æ=¦™’=žãG=Ìc:>2–>f´@>o¹>j‹>6Üò>Y=¤ =‡=š,‹=¦?ê=ÂÌ=½?à=ÑàŒ>Íì>€›Ø>—sN>¡]õ>ŽHà>W´0=ësÌ=—æ§=“x=’›)=ŽÝ«=‘O=“\‡=˜M= wö=£»Ì= Ÿ°=™2=•ŸE=—é³=¢#t=¬ã=ºL=ëGÓ>(8°>Yá^>lŒC>x)A>~ÕU>z¬õ>{Ã>wÄÃ>lkú>¬=õß=ÇH–=ÃÞ”=±kŒ=œ)=¡»=— Ð=§5¤=”ót=‘eO=Œµ?=‚¨Þ=‰6ñ=‘Ë =Ÿ°E=˜iÙ=œ<æ=¢Œ= c=¤±=©G8=§U¢=œJ4=šøã=§^_=¤Ø=Ÿ@=§g>¹ð>%›u>Klü>cR>Bœ¨>= Éæ=«]=¯˜=ªZ6=£Å=ž]|=™Qœ=ž:'=¢ë=§ŠN=šËË=“²k=Žç!=“õ£=‘5˜=–fû=¦qs=§ï=¢)®=™~>+8>NÞB>j”I>^ø>+K‡>Ó=•ð·=™:´=šÉ=—U=¬íˆ=²E=´§ =ÈSê=´Ý=¨êU=ª~š=ž@â=šÂŸ=š•é=›!Y=š#W=˜CÄ=‘ºÄ=š×=’tN=¤¹†=¬ƒ¦=¥—Ý=ŽÜü=’Ñx=“°-=”/’=šú=‰^Z=vÎ2=o§=|Æ4=‚Õê=…¯¯=ŒM=¬ß=»0K=Éù=¬¨;=›x=— =—nW=˜ö|=šŒ×=–,š=—ñ=™Ä£=©p=¨t1=¦´s=™ÕÒ= üY=£©1=£›w=¤S5=¤_l=¤ -s=©>f=£uò=žvN=› 4=¢p=¦J=¨==§vÆ=ªœ÷=ª¢è=•þà=•i=™íP=¤ŸŸ=žÝÉ=ÀòÃ=ñÅ>Æa>(Ú> bú=þŸ>kÖ?€)?ˆ›‰?¬né?ÍÐñ?èGÁ?¯69?õ¹?_Nf>à î>ÎÉ= =‰Ž”=™Õ=¨Rè=²ø=©VR=¢}=¥<­=°Ìq=¯œQ=®éÏ=°£É=Æ{Ë=óÅo>T>N9>Wi8>X¿O>V$½>-w>è>"Žá>–¨±@¡ ±A)°A‹â²AŠAi \=ï69=Ö|J=Á|=°û=ºåf=È&¢=ç‹×>Â>0Ÿ>Ú>/Ì=µ™=»ó=½´|=¾²=´²Y=§9=—z|=xo=–¾=‰;Ý=ž.u=¬¦à=¦®=šÅ@=¥ê=–á=ô(=—ø¡=™»=–2=‘X=’2K=‹ªd=ŒP!=ŸÜK=&´=’g,=›¼=šF=˜U=™Kù= Ì=ª ¼=¦J=œù’=žX)=›Ü>=™bÛ=–}Û=›Æ=“I=† ÿ=¥dd= ‡=¢k'=°[=¬:=¬\˜=¬·=¥9R=¯…c=Á-T=ä0ª=ôê=îêÓ=â -I=¼÷E=¬Ä.=¤[Ê=¡|=œS =˜‘<=œÝ=Î9à>€q>G¹>É…>v=ßÄU=¯¹=ª”#=–4=›yb=¬ü÷=ª˜=¡ -‚=œ¨=¥˜=¬úþ=¯a_=°BF=œÿ‘=œ²¯=œ·S= =¢r=œ -=Ÿ;=å+ä>ñr>$Û5>%é!>¢´=ë¶=¹ìÝ=œ²=¨&h=©x$=§9d=œWÖ=¤we=©E=©W=¹%Á>,Ÿ>E‘<>µªv>·uZ>±ù>§µ>™­Ï>®D">¼">»$>>…Øx>0b=µóŸ=ÛV=¡Éj=<à=ƒ©<=êz=–pÊ=Ž<=‰mä=ŽP=‹ï¡=†ë=‰?=”aš=“} =…‰Ý=Ÿ8ª=˜Îã=•^•=¦EK=©TÄ=¥Hé=H=ŒRT=˜ƒ=¡O=©™f=Ú&=›ZÃ=˜>Þ=Œen=š•g=¢›š=§Á -=Ÿ{0=Šø=ˆ 0=–Ï=Kþ=§¢=¶X¬=¯dú=ž"J=™HI=–J=Š8ï=‹*>=ö‰=’uï=¢â=šL=— Ö==n=¡%Y=°éŽ=ªfS=I—=ÂkÀ>Kö>ð#¯@þè@^l@v—Ú@©¹*@•²Î@~ò@OJÍ@ ˆ¤?õ>*µ=äƒZ>Hú,>ƒh>œ’>™_I>aÝ>¬º=Äi¤=~q=‹-ñ=š[¡=¬¸=¨Éð=²í@=»â=²{Ú=©l©=Ÿa”=–¬=¢¨w=¤åð=Öt>͆>`%>h€æ>f?l>Wý> >Óø>?„>3y>@>Iä¶>IÕ>1X‘>D=åv×=Öä°>0ÞM><è>LDÜ>_äù>_‰Ð>TeJ>E’>1ëÅ=Ç«õ=³öƒ=©ÿ=¥¾=ŸrW=“é-=Œ“=Œ“=<=žöö=Èt=™ = Ðu=•¶ß=ˆy=Äù=›·×=šò=’ =„X=Š5ä=Š ®=‡R]=¨µÚ=”Õ=%È=›Aß=˜ýò=šŠ=˜ö=“Z=‘ic=¡o=‰La=„–= ±ò=  =¢t=²•V=›€j=žóL=Ÿ‰)=ïë=Žmˆ=ç@=‹˜-=‚öÅ=‘Õ¿=’¬y=ÿÝ=€[f=”äO=››>=šðö=ˆp=‹œd=ŽH*=Ó¨=Œ*o=}ë=-Ý=¬p}=¦¬Þ=°†®=©¾=5=žû=—Ö<=šl= ÿ =«Ò—=–ÊG=•QF= 8=À‹>%[ç>h;b>’¸>´ž>pq¾>&߇=¨„ê=™œä=˜"þ=“‚î=à=—Y‘=§ê,=§f2=¤>ø=݆=Î!=¾ð‰=¬®®=ŽÖi=‡R²=’f=Ÿ = `H=¡±=¡Eù=Ÿ;Z=™å =Ÿ©…=›7ä=Ÿ]É=à><ÈÄ>ZeÈ>döß>Y<> À?= í=—H¨=®’Ö=Ù%=ØÝ =Îœ9=¾s=œP=”7í=’|t=”Ö¯=žŸ$=«*=ÆŒ=ùdh=öÈ=îÐ=ÝõC=Àšø=“ê•=ždE=Ћ >16>4Iî>-8š>@=ö•>)íL>8;…>3¯>BN=ÛÃ=¤ºà=†´=žÖ>=”*•=“Ù3=•æ=ywó=ŽO=‘4R=• z=žþÞ=šÊZ=ÿÕ= §c=¡f¶=µ¶=—*z=–ÝF=z=©¬==Ê—=ƒWù=ˆ%#=Œ H=“åÑ=šå=˜¡Á=›*=›86=™Uì=—çã=œŽ‘=™¤i= Ú=±¸®=¦|ä=¢VP=¥Ÿ´=®òs=Äu=›$ç=•¹‚=œ®Y=¢OU=¤Y==Î=™º=*®=—Cˆ=”ºç=“5‘=“ZÕ=îú=›ž=¤.›=©¸(=¤N}=–$D=–´4=•‚;=‡«f=ˆ€‰=—µ=’θ=®=™áò=¨ÁZ=­ìð=¬6C=¡$/=–_=‘ùÑ=’×ÿ=n=¬yn=¡mê=ªœ,=Ùä–>ªJ?{x?Ÿs±?ŸõM?ß|?™ >˜O_>f–Ú?™÷?˜[W?œÔØ?’O?s¶>—q’>#Ÿ=½-¿=½ =­W==¤Û=Ÿ³@=—¯[=Œã™=žb=•”Ó=•ƒÎ=—a=Æ›=¡k¤=¥ðß=§$@=¬Ü=¦©ë=Ʋ=ÌíP=½“J=Áý=£op=ŸûÌ=§B=«ì=¦ì=¡ôj=›*Ù=”2º=º{=©¢†=¯t‘=«v = ÈÈ=§›]=™Çs=™ù]=¬w¹=²žß=·$=®‡=¦UÄ=¡8Ù=”"Ï= 5=¡|p=˜²þ=ßÕ=ˆM=G×=‘á=•m‘=›ÚØ=i=Ÿ)=›åç=Œ(J=ƒ8“=—Qé=™V=–¢=³fw=•:=š^1=˜yZ=ž%=¨Ñ7= »Ö=£ú™=¥Ð~=œ—=*Œ=¢ÔÅ=°–=­Þ=•Né=±¥=©q{=¦=*=¡ºR=™S-=…,Ó=›ûÖ=—Ú=“Ü_=˜ÈŠ=•F÷=‰ -b=Œ¥"=  =—âL=—\=¬„>=ºe=¶pc=¿*ú=ÁX=¬vu=œá!=¦ô=Äc4=„ðú=¢ =£"=œ„=—t²=©»ò=¾Ûö>32Î>þé«?Ä -é@>Ú@€ª @6L@eÿ~@­…?TS>¢V=ñ¬=«7= óx=’Î+=Õ·=™ûŸ=–/ü=œH=È=¢›T=œ‰Ú=•Ép=‰F1=•l*=œä0=­ÊA=”vf=ˆO=’Ïl=…ˆ˜=•`‰=A=›F¦=ªFt=˜ø•=¤ø+=ž =˜8&=–¥Ì=§Ë>=›°¬=›«*=ŸÏÑ=™Èó=¨—-=£‚˜=¦Z™=¡=’Ñ=Šž=£òË=ËhN> ˆ>+1t>;ÍY>:mS>'P·> =ÏB¼=® h=©Tß=šN:=£q-=ž­&=‹w8=¬­¾=Ž,N=“¶=‘úç=Œ­,=¡H«=œ^é=”=‹’p=˜V=˜ýƒ=—hê=«b¨=µ`1=³“®=¹=È—æ=Ð|T=ÐÌ(=ì -'>é>0¯;>Dmæ>4Fó>Çã=ù[¦=«õ=©H=¸»"=ë2´>€#>'<ç>4²>>1ã=íS¬=§ÿ=œM­=˜ð½=‘çó=—ˆŸ=“ðÚ=—£=™Q€=‹Ž=ùq=“Þ–=A¹=‰É×=h}=yo=¤Á¦=¨P§=¦cx=™ æ=‘;=ŸÄ2=œ•1=lè=œ®j=ºCŸ=¢Œ=“Câ=„=—Nˆ=ŒZA=œ -|=œ%8=Â(=›_=¥/b=‡oK=ŽÄâ=GT=‰õ=šrÙ=šQ¡=°Ü=˜ŒÒ=ŠH=Œ×=—fã=”EÍ=²ô=žëÛ=Ÿ»6=™B=’³Š=Žã =íÛ=œVŸ=ŸÜé=˜•%=ž›=;i=u=¡(=›è=™ðá=“‹)=‰Bã=Ž&Û=¤½—=¥/·=™Šj=£ â=©K=™Äñ=ª^‡=bã=µjk=ë‘Ù>t9N>¼€->à S>Öi«>µÖ¿>Dyš=äS=Ÿq¹=¦9 =“œ$=Í›=‘w‚=Ê‹æ>ƒh>•”‘>Á›@>Ñ>>­°>ˆMš> Ü= ~¸=Œx™=o'ü=ƒQ2=¤uà=«Š\=-=•!:=‘Ê¢=–âÐ= Ñ³=£³=—Ùš=¢z¢=¥³î=¨4Ò=²ˆ^=¤¸®=¦y‰=ª¶4=¡'=–ŒX= ‡æ=—_Í=¡Š!=Ÿ, =”öá=žòà=§ìŒ=—‹m=™ö =›9Ö=–‡ê=sþ=ç=|=J…=fª=‘^²=‘Ì0=‘¨‚=˜I=Ÿ8¤=­½=¾à¡=¸Çg=¬è‹=¯Ö=­ßx=šÐø=–òñ=¡)=ž«Œ=ŸÖ=†rm=ˆ»’=ˆ9=’¶Ê=Ÿøî=™~î=“Å=¡4–=¤=šcW=ŽÜ½=–n'=¨Ú=¤‡ì=™ÝI= 6B=·Ål=”>=–j¹=¤‹P=çø=•µ¨=“»&=°[D=§÷Ž=§jÉ=¥×=?*=E[=°ý=°™K=©·ã=—Q’=”|9=‡ Ÿ=‘:=}%Õ=–E=˜¨‘=C =´b-=½ì=™VÂ=¨a=¤–=ªJÌ=°~è=¡(Î=¥r=§»è=±ÌÙ=¬g³=¿"=½B±=´$Z=»Ö=Ä€ß> §>/™Í>Ä N?þñ@Š}¸A%nAH>tAXÎtA1«Arè@iì?ê‚>>~c=ÉDƒ=ÏeÑ=à E=°ä–=°²`=±sŠ=¢‡=šì=“¯=œc=ž›=¶x=Ä×=ÂVÚ=žc=Ýl=¤î¡=©=­å=¦èÕ=¢qC=¬¾›=¥ùƒ=™¨n=™g¾=žE=›ñ=¦øf=¦áP=ž‰=§‘ -=}Ã=…§Õ=‘ =Z=|m=«qU=¤1×=¦´j=˜ü=®c=”4Q=•ž†=™±ú=ŸM,=ŸHÉ=©#=­X=¯+Ï=‘Ÿ³=‰6j=¢÷‰=‘”I=ƒ Ë=›ŸÜ=™¬'=´Äx=ºŸ=¯Ö=¶s]=½©‹=ÏÅ=Áx´=¯«(=ž7= ÓÕ=¢tÏ=¦”=ª =ML=œ¶=¬Pt=£¥_=œª,=»åy=°z?=Ž÷¦=›¯Ñ=¢kÃ=¨R+=¥+µ=£¡y=¢M= Zö=¨L¾=½Å]=Ô…Ò=Å=æC=×Ýô=¾Ð‰=š/»=Šun=ŠÝ}=—„=—Ù=—@7=‘oT=’†S=’û~=ŽNz=‰É­=Ž$=”t¹=œ©£=‘`=ˆ"t=ƒñÂ=ƒ=$=„î+=œNß=¢ÑZ=ò¡=pú=ŒÃÞ=…õÏ=ƒu@==•¶1=Ÿß=` =™{š=š¡ò=‘ëÁ=Œ“_={w0=€^*=•`%=™ñz=›¼Z= „1=£š=¥¯|=ŽH•=ƒ 0=”žÓ=—¡ä=š†à=¥Õ=¥F³=¦Eã=®Êø=¹š¨=‘,=ŽëÈ=Žãh=+X=Ä=¢^$=˜ˆÎ=‹Ã–=‡®¡=†œ=’ý=–ýí=˜í"=Ÿ›=ŸÛŒ=¡fø=£&f=§½­=M=—›H=“=šÙN=ès=¨ ð=¬íä=¯0Ê=Ž[‹=„çi=–±=˜Ås=švp=‰®N=‡g@=†H =“Ak=õÔ=—}Ò=˜eŒ=£Ž%=ªÖû=®†=¡=¦¬=ª¿ç=¡ -=Ÿ–î=— á= -X=¤Õ¼=˜®5=—Ãa=Ÿ°Ê=•ö‚=Ƀ=ŠUh=Žr=˜Ð=¢wm=¢ID=šÀ=“€î=ô=’4j=’0¢=‡ã&=™vÕ=¦:‘=«2á=¨?Þ=§"Y= çd=›S,=•òÄ=kW=ˆ?=žKÚ=œŸW=åþ=—ûò=žBü=³üÒ=±Ñx=°å=­á=¬~v=”äd=’Èg=ˆÁ=‹=óJ=à=”…¢=‹š =‘Ó8=‘ÕT=ì*=ÇI=‘³–=Ê–³=¯Pf=”&=’†™=‘ƒÉ=”È`=Ùh=Ÿ7z=™j='È=¥É9=˜&=¢‰=Œ˜ì=ŸR&=­S<=ª0ä=«–þ=²Ÿ‚= "=œ’=«%4=§:0=¥èc=°ÈÎ=±Sn=³Hî=®}]=©dá=£° = °ä=ç=˜¹U=–ò=›ö=¦Õz=­,=³Çs=¦o)=’Kš=½šò=ÈY=Ñvô=Á_=²ð=ŸÑP=£ÙW=³ÿ¢=°÷=³ L=ºfŸ=³ÐŒ=°rÌ=¥ÑÎ=¦Üú=©,†=¼Ø”=Æ!¢=¶9â=¼´>=Â÷U=Èo=ØrÙ>^è>—Uó?ãÝ@HuW@Ž@ÅÄ @±±d@›Î@+¦8? >•¨_>à²>"ùü>8Ì>?M;>2¤=áY=ÌÁ×=Àâº=ŨQ=Àûƒ=»'Z=¶T=¶'=¿ª=µòH=¯·=¤2z=¢þc= ÅÂ=›¡ë=£¥j=¾âd=éY)>F‰>L•>•Ý>:þ=¹µO=Ÿ¼ü=ÿð=¤…‡=µž=õíd>—ñ>l©>ã!>B> >V©=ôÉ™=ãk=Õ"Ÿ=Á‘Z=¶6æ=·}=µ¤v=£pK=˜W=‰}= ˆ=›²i=·%=Žw=Ú§=Ýb‡=Üç=¸œß=±‘a=¥ÇX=Î#=™è„=›Ê‘=š`ê=š¬=³[Í=¸J =½ç‡=°Ãç=ÇÛ¿>/ö>‰:>œ>Ó=ê0I=Ë7=¨RM=› ¤=…w¢=žbÂ=­gÖ=×Iî=ú˜D> ä”> è>eä=è™F=¾ZÏ=¬uç=“QO=‰l =‡…n=± -=°$Ö=±£ˆ=§­Ï=ŸO=‹°`=ˆ48=ˆ¯¡=‹û='Ë=•dp=•6ã=Žƒ7=‡Ð=“Ã=—-U=’ü=“kG=“4Ô=–c=™¤,=œmÐ=°h=µšR=Ãø=º»¦=µ2=¸Ï=¶¿ò=µ:3=œ¿3=žåá=©DY=ŽNj=‹ ¤=Ù‘=›=.=­’i=¦jÓ=™ù'=§o=ª=¦vÐ=•Îs=’Z#= Ôú=œç=—{Ê=“]Ž=•@=—¤=œ& =œÐ2=”†(=‘.¼=$S=›Q=ž‚Õ=£%å=¾O=µuÍ=¥z=©Ø=¦gß=›Î=žâ=¡ =¯WM=§p`=œŽ~=¯+=«Ëz= ç=™m=¥¹a=¯Âõ=¯–3=¯~’=²Ìÿ=¹Ë+=Å/A=´óB=°’•=©µÏ=¦†=¥n®=¯Êe=¨6=Ÿ?:=®›â=¦ì¾=œñÛ=¦ló=¦W=¥åÌ=£¶=¥›³=­ –=¥Ii= åµ=©Õ¼=®7s=µ'=¬À=£ÇH=—f¾=˜X=—õP=“¦ =¢Â3=©£ö=¿•=½¶$=¼‘ -=§ÍÅ=« f=± ,=¨®õ=¥Ù}=ŸÅé=ŸÛ:= Þ=°!h=¤=›ZÚ=²N%=»ÈÍ=ÅÞî=´šp=°Î=¬Ï-=¦Ó=©ï·=¼Ä™=¦‘ý=œ¡È=¥Ÿ=Ÿü“=šá=«ß =¢ßš=‘NF=ŽÀ=—Üë=©õï=œ)Ë=™Ä=¤œÕ=«1—=­å=©V=¬!=°nÁ=°™Ý=»¯~=È°o=¿Aq=À³=dz¼=¼®==¸Îú=´*4=¨l=¤ )=¯ét=¯®=¯Z-=ÁÎç=¸Î=«ôö=ÜÒ>6¢j>™!b@_d!@± ÂAkFA2 A>ÐA>y€A2ÎA·÷@¼& @C•û>ú:=÷g=иÄ=ÇÓ=Æš=ÆÁ£=Ç×¹=­ê•=§;®=¬‹i=ª?P=³´ó=ô¼>( >’±>)À€>J >„#=¾•Z=´¿i=¬ú=®¢=£I«=‹œƒ=¨u=±¾¬=º)¾=¾û~=¾´ =¶>È=«´=¦J=Ÿª}=‚=›0=¦œ‹=¡à=›úë=”Ž/=/«=…£t=•¥È=”¤=A(=˜;X=š-Û=’Ù=ˆŸÖ=‰yK=¡=š²+=—žn=›u= ô= wQ=š…ó=›(=œ§=´=±Ï»=§þ =·Aß=·ÞÒ=´ç’=¢Ä,=£“=¬åê=­zš=©l=”¢ø= —=¤àë=›=4=¤*Þ=ª7$=™¶ =¤G³=¬’I=µ}î=¹>»=½Ù=µÏË=Ç]=Ý‚=úÖÅ=÷y$=êMþ=©þo=¢ÞÍ=­ã6>¨c>>¨š>…! >êÊ>+>T ~>8 =Ùû=Ÿù¶=›?±=˜øâ=œø=—e=‘nc=œ#£=¡|=§u¥=Ý=“ôo=˜¶=ƒç=¦ç=°®p=½»_=µü¬=§^Ç=§¹k= •´=Çá=Œ|!=•'”=¯˜ú=ªóà=¥É6=” =”/¥=— Á=¡¡ƒ=’ó-=Œ£Ý=ª)8=žVC=–þ=¥ ®=œÀ=•7=”ÿé=—hê=œ%ø=·b9=úø >"ãõ>fTê>i˜>i1I>†!=ñ|-=•ù´=‘Eµ=”Èæ=žwL=ž,D=™¨b=“/'=žxœ=˜Ä¥=ˆ ¿=”«X=š8B=¢7)=Ÿn= ò=¥å#=êd”>½>Hôa>@Xö>3)¿> qÚ=Ä×y=œ±»=–< =ŽuN=ŒXg=¦¿= kò=«r9=©Ô=£î=›nÇ=–žÎ=™EK=™¨=‘a.=ž*=©”J=®³¼=­8=©Âj=¦ã=¡Õ¨= ôV=°è‡= •=y=«Ut=¥Äy=˜!=ž[+=˜c=µ=›Ò$=™žŽ=”y=¯=´–=¶¼o=¹âž=¶Ýá=¯d©=¸Ïv=À>Š=Æ!ù=¹Š=±Lz=«=©e=¥Öá=¢!=¢áe=¤ññ=¥g -=¨ðZ=¥¿‘=¤ -=¬ô =Âm=Ý-»=ØÈö=ÇÙ_=±ž =Ȫ8>Ý >Oµ>¹ >’_0>(`>.Ó> N°=Ó²Ì=ÁtÃ=º—=´ÑÉ=œÎ=š=‚Oe=—@Ý=ŸêW=ª‰‚=Õ”…=Ý-b=å›ì=ö;ù=ûŽn>ÂÒ=ñÀ‡=ÕõÆ=¶¦þ=—é=˜1Ã=˜Ãº=šè -=–W¿=‘–Ä=¨ˆÍ=Âi<=Û4¤>ŠO>,æ‚>S]>w|M>c¦½>Nñ> ŒB=ËÄß=™#D=·æ=ÇÇ4=Ò¸b=Õ7Ø=õ.—>>>]Z> ã3>¨Ø=æÉ=Ãzƒ=¬‚=ŠØ²=™ïö=Å…=–Qð=ˆÂø=pð=´!š=¶«€=»™S=ËÓ‡=À:š=»ßj=¼Àð=¦þ=šÎ®=’{»=–;&=˜Hñ=›¯9=Uk=«J_=ÁÁ@=ÚÉ+=Ø¡ƒ=ÕB=ºÁ¤=©›=šÊ=£"A= üŽ=¢  =ža=¤8m=«§=°=àX1=õŒ=ïaj=ÛN¨=É Þ=£Ù8=¡‹Á=M¿=–=¤=£Š=–SZ=£ïX=¥W=›ÿN=¥“=Ÿ‘Œ=\Ñ=ÅÄ=—Z"= Sò=¥Yø=¥ƒõ=¢¬Ú=™ÈL= ÏI=¬/=Îâ=ÛYV=çÝÉ=ÂÿÈ=¥’Ð=ŽcÁ=…A¯=”1„=›cú=Ž­¿=‰ù =&=ÁUY=ÝÔ,=îë>€—=÷tk=éo¿=ϘM=ÒÚ»=ÔÑf=ÖÙa=ðy"=ð1=íkg=æï¿=פf=Åi=›d=¡FÌ=¥÷=–ÙH=š¹Þ=®‰=˜7G=–!Æ=—»=K,=¢Ø -=£(Ú=ž­1=–#ˆ=“½=s=dÒ=’ 5=“ô*=¢Ý$=ª¢@=³Éd=ØCÔ=ËK=ÀÔH=ºz‹=ªÈh=¡W=oÇ=«4n=³^6=¾X#=ÕÚe=Ï2=¸Ð¤=Æ´D=ݹ8=û¡ =þ„Ó=îãa=Ü¡è=¨<=¬W=­ë`=Ÿa³=§=¬±=®ÖÁ=¿1=ïÒD>,žp?Ùi0@^2 @¼±w@·‚@žN@€"S>æë(>s“­=Ãj~=°šc=¼y=¿¤Ú=­ÁÇ=¸#=³Öƒ=ž=ž R=›ŽÉ=”t¾=­gA=²j•=³Š„=»lD=Û¤=Æ"P=´cë=¬cÁ=§Dx=¨ã’=¾¯ì=½ØŠ=«Úª=–¡ý=˜Dï= µ¢=¦f=Åpñ=æ- =ó\F=è%»=Ý[¦=ÅB¤=ß ==åãn=ÛZ›=ÚX%=Èq¶=­^=Ѥì=å)=ø¹=ÿú=ÝB+=¾;þ=ŽKv=‘nE=•àï=ðë=šàN=›71=›Ü =¢6R=œæP=– x=ì=Žè&=‘xØ=šíB=–©-=™a=§‡=0k=–šê=ª|Œ=Ãûú=Ñ`€=ÛÈ÷=ܨÃ=¹ï=ªòd=‰+º=”R™=‘Ð=ƒ À=‡ƒ™=®Ï=œÌþ=¥dÐ=©=³k*=ëÉâ=óÿ;=ê%"=»óß=žf=•ò=“?è=•—«=T=‰ä=šµÓ=‘Ê~=ì±=–~==‘…=‘Í{=“¢=žkŠ=™Ý†=”þ×=t»=“PÚ=›Xç=°ÙÆ=¿Ÿ=Êóg=Ùzî=Õä=Ľ=®¨ÿ=Â(=çÞ>'h>¶ô=û³H=ÖYƒ=›k­=Š›=“6L=¤ç=¬V=ÄúÙ=È|=Õw!=©×8=™MR=›Xõ=”²= 0=¬oñ=ËÍè=ïÙ$> ù>$ËZ> ¥`>‰Z>Ö¦=±‹\=¶B =É©û> º>>ÃÕ=ü;Í=ß7O=®èë=¢=¥ã…=¡c=žÎ‹=›’¯=ŽKÐ=’;N=–Ãœ=Ÿ$¨=¥áŸ=Ÿvö=”Ž6=­Ôj=Ç7Â=ã„~>ÄØ>.|>ÓÚ=ô¤=Ò»Ò=ÔŸ»=Ú Ö=Є=Î7¸=Ãg=Ÿlu=¢=Óöe=áç¬=ÏO=²Øã=˜~;=‡Ê=šuõ=¢Ø©=¤D==’Ô -=™Ee=¡A&=£Í!=¦Ð¤=«´Ò=´OF=¶(µ=­n= L-=ÉFÍ=ËÝ•=ÑWü=ç¹=ϯ=¾ÁÞ=­ß=±Þ¬=Ôa‡=ñ‡R=å;=ÙCÝ=ÂüÁ=›[“=™‚6=˜JM=—Š­=¨@s=²Ó‹=¸P=º$j=Ái‘=Ã:=ÃÅ;=±)=¢|¤=œ&°=¥9ò=Ÿ½=šŒ±=–Á"=˜gÒ=¥]N=® ^=«ˆ=œ² =–·ï=“Øë=˜Ì«=Ÿnà=¤am=£Æ¦=˜@=“óZ=”=ò=¬ð‘=»àÌ=Ê £=Üýê=ßuH=àT=á“S=²é²=¦é!=£aœ=µ²®=»=Ï'˜=î‚þ>ÇÂS@SÔÏ@¹yú@ãë€@ÔL@¬rŸ@dj4@—Éë@ıA@á¹J@ÕXI@’¨§@"ÑŽ>‚|=ÛdÄ=Û ?=ÓjG=¯ßh=ÐÚ«=Ëi=¸ê=Áô=·Ñå=¯qâ=§*D=™cŸ=¡˜=¬¤=«bÜ=±ä=—¦¼=šQÞ=ªÍð=¦b=ŸYÐ=¤`â=×¢`=ó)>ÆÍ=ÿÍE=Þ?_=ºNj=Ž,l=‘u=•bZ=šÌ=™¾“=§i=±œ½=¶#H=¦@=¤Â¦=¦© =•ˆ=”®=•Ž=˜iÆ=—À=‘­=¢=’y¦=¤„=ž†g=‰JP=˜ú6=¡†H=¤ªM=›hô=£Ps= Ê=›4-=«N=¨<Í=¥®= Z=­ão=«¡ -=¦`=šU{=šRo=¡ÿË=¯46=Åë›=Á‹’=¾F“=¼Ø=°=šƒÌ=œÜ¨=£i[=¢IX=ŸÍì=œ==E=×Ó=” m=Ÿ­…=§6=¢£‰=œÆË=þB=¡êm=¡®ð=ŸÁ=”#=ÂË=趉>@÷=ð3J=àz=Îé†=®}ç=ºÝV=¼û\=¹ =ÃF­=¾q=ßüî>%î3>^ßf>ŒÄ>Ž|R>žÁR>ˆ;d>sã«>Yç¬=Ü΀=º~=¥Dö=œNv=¡ë=Äɹ=íBÌ>\Ô>OÜ> ´§=û/ê=µ n=¯ø=•Z÷=—0Ç=œs=Œ 6=Ùê=¯h%=•ü^=—er=š¥[=—u{=•¦= gŠ= å@=’Øð=žp^=—“R=‚3ú=š!=”ò=›„ˆ=·)?=á(È=Þ^=Ó³=¿U=§ü=˜\i=ŒKË=Ž·ë=½!=ž~=H\=ŽÕŸ=“Ýb=—Ñÿ=› =šãB=—¦Ï=–2=š:=œ?*=—#=’h~=“^=§÷=‹ -=ˆ›=tú<=ˆGù=”:=Ÿz2=£&Š= \=¤C²=®¼}=ªbÔ=ªÃ=§Õ¼=¢¢`=­RÊ=£?“=™Ðl=–E=œ~á=Ÿa=ŸLH=•'è=¥ÏS=¡Çõ=™Ô¶=¢f=¼»”=Ü–=ýK¡=ô½=à?ï=Ö = I?=¢-=šÞ?=”y6=Ž„Þ=®>°=¼Ã/=ÏR%=èó=ãËF=Ú—³=Ì€í=µ˜Í=ªÏK=£Ã›=žn`=œlu=œŽ(=Hÿ=¡àA=±'—=äÒÌ=ö„ª=ý*k=÷,=Óþu=´=˜Þæ=–ž$=¡ú=®…=¹¨t=µÂ*=§Öt=¶Õï=ÐYÎ=ß!=ñ¤™=ív=Ú8"=ªyâ=§a*=¤Ùö= èÅ=ä=–¡Õ=˜Ðl=˜>&=¢û¡= êH=­ss=¾‚X= -Ì=¢M&=«öj=®,=Ÿ0’=ªlõ=·ÜU=Å›à=µ£=°g=®€æ=¬Ù=<=’8=”!=–ºá=šÄ¹=šÃ=”!U=j=¢U_=Ÿ©=•ºV=‹,¬=¨Á†=¤ÀM=žòj=˜L©=Ž­=™V’=¢ÄK=¨‚»=U?=¢·¹=¢=™«œ=Ã= ¢Y=¤ô+=§-=®eB=™A´=Žôg=Ž™¤=¨@a=”ý¢=’âä=‘Ùï=‹Ž=—­V=  d= 7C=«¨=ŸœD=Ÿü=¨$‹=À„ß=Ø’L=ìS=øÎ9=ý¡D=ä¼=îû?=ãìË=ÄPú=ª>Ã=˜³é=”YÒ=™=•5/=™¦ö=¸Ž=ŸHz=‘K=Å= …£=¡+æ=¥ä=£â=ž¬=³v=§d=ç=m=îÓœ=ñ£=õú×=èDç=íxS=íÚ¾=év½=ø¢Š=ߎœ=¿4ÿ=žÅ_=®¢=²Ùæ=ªLª=¡iU=®Õê=šff=ö=¤C2=¡ª¾=™”2=¡Œ=¯‚#=Á$=ÂG¶=³‚:=£r)=˜Ó5=¾!=ºÊN=·ÛÈ=³Þ=¤žú=Kf=—«Þ=¡º=œ=Œø=”æ(=šOÑ=™Õ}=‡'›=«Þ=•5D=—H÷=¦t`=§Z˜=­(=“cx=—4µ=ƒò=€ó*=‚Ås=†¡=–0=¤Î=š°+=…`–=©”=’žw=Pä=—æÕ= 6‚=‰q3=“VÜ=—Û¦=’Ä=¡­f=³œ=……=‡ÏÇ=jbÃ=!Ã=™î]=™L=€;í=‡ÔJ=•«=…7=£[¹=ºÓ=‰Y†=þ=‘ÿô=Œ1!=––Ñ=‰Õ=‡ík=ŸGâ=—0›=¢Õ=ná=’¾=»ÿ=Ëø=úÿ>^I>‹ï> Èí=Ùc¸=¦nm=à8=’Vþ=•3=’«r=’ÏA=¡€N=’€ì=˜b"=›?÷=›cí=œàÎ=²ÌŠ=®.=mÁ=—± =•&n=™c=™P:=“-Ê=·îâ=ég¢> :F>Ý>Í~=ëÛœ=Â÷²=œ~=ˆ]Þ=ˆÊŸ=YK=–è¾=£ Ç=“X=£Ýš=‘ýè=‘L'=—Ó‡=“žÆ=œî2=Èð=˜²ß=’ôë=•Äö=“rÅ=“7´=”M=”KÐ=‹+6=—‘X=ŸTø=‚*=€AÇ=‰¸º=˜2=œm‡=}˜¾=› Ë=”ÏO= "=ÔÔ…>*>YRQ>Y×>Uÿè>^>pà:>v£ƒ>t{%>U‹¢>w=—/è=˜®Ï=’u¡=ˆ Â=¡=°ÍC=©§—=Ÿ,Ð=šï=‘1‡=¢µu=³y -=¸eœ=¡Ãë=“ô=¡‡´=­ €=¯òz=º,==£-w=”P=š×d=£¬õ=k=†‹ä=j=¢,Ñ=§}=•Û5=¨(F=´×¯=®=&=™Ñk=°ƒY=¬S«=£†=¢*Í=–¶$=¬2•=°f=½%Ú>P4>_Z?¦“Ï@ ²@gk@xU@_êŒ@rb?’0q>Û&=ßg°=ª™=½`\=ày=ûi®>Û> ¡=ÿRi=ÏwV=±Ž’=¡‚Ç=Š«=™â†=£°¢=¦Y½=š®è=”ö=¨hR=—´ß=ˆXÎ=’G¦=áî=—+…=L=ŸÍ–=Ž1ž=¤|k=›¬N=W}=¥2w=Ìä¦=ó‹>+ ->ÿ%>&„=è¶=·K=°®Ó=¡Þ=“¯û=ˆÎÃ=¦½ÿ=¼²r=½‚e=·N!=¬( =«É =œ±Ò=±ÃÝ=µ›©=§XC=¡k5=¡Å¸=¢M%=¥ÿ=¥*ë=­·+=^=Œš§=Š -Õ=™Bl=¦sq=Ÿ­Û=”ì=ž!Õ=¬¡Ë=•x=´»=†êê=žŽÄ=ªxq=£` =¾A=Ü‚s=×…ú=ÏéP=Âî=¬é>=£i=¡G=£I†=¡K¥=™9C=‰z“=Ž`=ˆÓ=d‡=ƒ‚`=²NP=¢¨ì=§‚²=Ȧž=˨=¢Ÿ= à=•!f=ŒM=€f=ÄÕ =›ay={št=‰›}=¤X#=˜aK=†2=¢*l=žŸã=‰ä§=‹—8=‘ÄO=¡{¤=Í«=”"·=úè=œ‹Z=šÉœ=¢­=˜‚Æ=Ž^ñ=…M=¡­ï=Ÿ–=œ« =˜Ý×=˜cx=Ÿ+’=Ÿ¶m=›^}=Ÿ¼=œôÈ=˜K= ¯=£ q=¥zÀ=›â=–c`=‹ßÐ=’†=0=ŸdR=¢J¬=Ÿ«°=¬`£=­I=¯ü=ÁÊ=¿cÅ=¯VÖ=Æ=ËΫ=ÉG#=Ëã=Íb=¥2=Ÿ½©=‰¼µ=ˆ£r=I=Œ=“Çú=”â™=ŽÔ>=‡‡)=ÿÐ=–ŠF=”¨=¢4‘=§ú=£ôË=ªDj=¿9 =Äð¤=·ó=³¿Â=¶Ï­=Âg =åÿŒ=ÉP„=²ùƒ=ª¼š=¤©*=•ûþ=E>=!·=h¦=œ€r=eA=‘Þ=—e=‘í=—%= ÒF=Ž=”X¦=ë´=Ž+œ=’[=—Ÿf=œ'*=¡uÆ=žV=¦÷=¤(Õ=¥ã(=¥Âì=²1m=§”]=˜Ç=žÌŸ=¥é±=‘$=£É=¨§=¢»=¤=F =—=ª"=šNb=Œˆ=¨’=®ÛÇ=¸i=þyÛ>>((?+•ò?Ô£?@~‚Õ@‹º†@†ìR@H÷ç@‡? ~€>ã¤?„‡ø@FE@‡n@‚݇@h`@‹?s ±> «å=ÁT=¸}=°u]=««G=¤zI=›Ìi=¥ Î=§6÷=¨€ =§îÈ=¢;Ú=šÉË=Ž ê=‡‚=¢´e= Nº=Ÿ³=œƒ¹=‰D”=½Z=²pd=¦^=§Â=›âµ=–Eö=žåµ=•Aâ=—¡ç=™±$=•G–=›Ÿ3=‹‹Ù=‘‘’=\j=¤RV=°1h=£¥á=HJ=°R =¨•¥=ŸE±=©¸j=¨Ö8=b_=•ÓF=ˆ$µ=¦Á¦=¥-ý=ŒÅ{=¢Óé=¯m=©K3=ªJ(=ªmÇ=¤3=™¸•=¦² =£(=ŸÓy=¡êÊ=œ÷= |=¤ƒ¿=³ì=¹c=×µ=Î-º=ÜÆï=ƶ¤=Ÿm¡=¡™Î=–¯ =–] =•¦‹=ƒÆ=¸`´=²’…=®L=¥¦Ê=™ìþ=“ÿ=ŠMË=…Ô=–x½=‘cg=ŽÆ²=d“=cº-=Ša=Ÿ7=®»=¿sõ=Âð=Ì<–=ÁÈY=ˆC†=…#(=ˆùÛ=uçÜ=‰6=œµ= ¥Ø=–:ì=Š‰I=„Xß=š -O=ŸÃR= ªÎ=šÛ+=˜¼»=MŽ=Ž–±=šä¬=™Õ|=‰ü=££ð=²…ž=vä=˜*a=ù’=¶µ=ª¼Y=§$=ŸÕÎ=˜ Á=x “=fd†=pŽr=„s7=—Ü=“œC=›=šXY=–çd=‰^|=˜ƒÒ=¤Âb=~-=\ç=“ˆÌ=–“c=—¾y=– d=‘b‘=ŽTÈ=’‹Ê=”A^=”^==”ÞY=’=g»=Œ=ŒÖœ=Þ¿=˜÷h=œ¸ö=ž‚=œ =œŠé=Œë!=Šö©=‹QÜ=‘/Ü=8Ï=ƒ¸3=ŽÌ==˜ø\=“>`=‘-¨=–'=Š<=!G=’ä¸=[=€Ö6=‹^è=“çB=”•}=•.‚=™@[=˜Áº=˜…=…Ç›=‰Ú=–WN=Ž€_=‰0ý=¤ö7=¢• -=“Šy= Ë=ŒÝ1=˜+=•g!=‚³'=€U=”dõ=›>œ=š=“S¤=Œ‚e=†É³=’=‘¼X=˜N€=›·ö=›Û+=‘z=——›=²K=ž9=@¼=›ãŸ=”ãú=‰¯ä=ŽÊ‚=‘Úf=|ê¸=…E™=™´ª=’Œ=‹Ö6=…(C=‰þí=˜©Â=¤E)=ª6*=…Ü=‹·œ=Çe=Œ‹=’6q=©²=¼J­=í¾>;~>37¾>(> ^?>ö>Û'> d“>:Ÿ>&º´> `=¸‰>=–j·=¤[=šø=Š,#=•NQ=š¿=§³†=Äð=æ¸<>6ŸÕ>Fð€><ƒÝ>!®”>"ñ=¾8=´ß<=ȾZ=Áœg=»A]=©—Ú=£ =¦æÓ=“™t=…,`=£kí=Ÿèœ=‘/¯=¡8À=¨çH=‹Õ¾=“‚ç=¤¦=—v‚=‘‰ =»ˆb=èfÄ>v>+*>ãA=ûøñ=Ûî=³eÁ=©TÏ= p=†¿³=‚+ô=€~Ì= Ží=££¯=—tg=Õ)=Šdb=*z=Œµ=x¹ì=Œdx=˜$¯=‡(¿=‚ïë=r—H=†Ä“=‹îÇ=£´Û=œ©B=‘ -ç=¥÷ä=«¼c=…=`=Ž*=¢©o=¢bW=Ž~P=›0Ì=¢ r=„¯š=‰{¥=›Ë¼=ª -=±^H=‘Ÿ¼=–®=¢3ý=˜6=8Â=ˆ6=‡n*=ˆDs=ŒZ>=ŒÝ=ñ=™†$=£ï>Pr>#G>rV§>g^5>[Ç>Ê­=íb =ã¤=›B<=£GÞ=Š‚=‹½g=Žà˜=ªP&=¯Z=·S=§|=›M=ªk=«ß=©1\=³Bq=¸c=¬Q3=¬K&=³ -W=ªƒº=¦þÀ=¤nX=ž[²=™Lè=žéõ=œXw=šŒr=še -=š”‰=›Ú=šN=fó=¦©=®rh=ýsH>:>A¤“>;¹&>/6™>ü‡=ÐÕÀ=ŸûC=‰uÞ=Œdä=‘ªõ=–å=›rÉ=¥=£7&=Ÿã=£J¸=¥=™Rí=˜ÙŸ=™â9=Ÿ·3=™e’=4=“³=ª=ún=‘´=•‰k=žu=½A=š¢l=—Ÿ§=•ò-=•mF=ŽÄÉ=iM=ŽBR=™{==™Ì)=ž²¯=£VT=¡z…=Ÿqö=™ÿŠ= Nî=¥`†=©îÂ=¦n¹=¡ô =˜$/=“® =3Ò=“-÷=•„=¤—=§= üd=œ–=œÍ³=¬`P=¤p=•ÛT=’„=6†=—ºX=¢'(=©§š=£Ò7=žÄ=–¤Í=™nB==Ž[=‘¡=™oþ=£L=¤âÔ=¡zÒ=˜–š=“ç¼=s=›0”=—¯[=‰oå=ˆB½=šÇ=¡"=¦áN=ŒÃ¡=Žf§=”ÿB=‹=ŽŸà= òV=”~=‰hÍ=‘V:=Œ/P=Ë=„ý„=‰:q=šo=šn=ŸÒö=øQ=nd=•ÄW=‘œ=Úì=ŽÉù=’ñG=—fŽ=ƒ*~=‚7=’;3=”ç=—Îœ=“~=”R«=›ns=£X-=©ø=Çž˜=ì¸>‚ ->$H>-Ûõ><>ÎÒ> ¾”=ã2r=µÏ -=…“=‹+=¤\=¨àH=¥õ=¢úÍ=£çÉ=žòÐ=˜X/=‹ Z=‘Û=§4y=šø.=˜ê5=˜$Ä=Ÿ›2=¨U=£U=ŸÆƒ=}í=’îk=—Hö=ž—=‰€={Ö=ž€ò=•îÂ=w%Ñ=…7d=Œ,=¤'Ÿ=˜ðù=Ï=˜Ô=– ×=Š‘x=ïÁ=“û.=£zÿ=œäf=˜ç¨=“†ê=–XÂ=šn‚=–j¢=–ý=Ÿ˜U=•,2=‹S=‘w=ÿy=Íè=yÃ=Ÿ;B=št=ž==ž6=™Ay=œ@h=žgá=šà=œäÁ=¦'Y=‘¶¸=„(=ŠÁ==Œã>=9?=F9=„éd=¢$ì=¯ -ê=±¼Y=œ:.=––Ï=’ôo=£îÅ=E¾=‘(%=—P§=–‰b=Ž»=šH=¤ªc=¯7ˆ=¬p=£Í…=’Y=’D¢=œ¾=Ÿ%Í=¡ö =”¹0=• á=•žq=kã=2‰=˜g=Ÿbÿ=Ÿ”î=K=Í5=’¨Ò=«"I=°Å=µŽˆ=£¿= +Ä=™jÑ=•?y=•¦Ã=”÷^=™vÝ=¡ª= +=Á=›¢=Œšx=†¨Ð=›G¡=–†ö=‘#v=‘••=›˜ -=«jS=¤r =¤µÓ=©<÷=˜ «=³§=“â‚=™ e=ž9`=½íz=µòÛ=§6ü=£1Ô=¢äB=¦ {=™z®=Ã$=ˆFÿ=š*I=­´=”­¡=”Ì¿=›jø=žc_=ž›ì=¢ƒï=—»U=’iï=Ÿ›=¥=ª.W=± f=­8ª=›_×=¾I>¦H>Ž©í?W´Â?ç?ÃÃ*?Ý?úéz?µÇú? Aj?„Ñp>ìƒÑ>nâ$=œ%K=¤$=ª¥­=£T¦=£-&=£»H=œN=y;=œ)É=žK=ŸOf=¡¨¾=˜]Ñ=•v¬=”ì¼=”õd=–;=¡a=¢ŸQ=¨qf=«*v=¦UŠ=“±=‘³¨=‘„ =¡B= ”=¡ç={%=œ}=™Ýl=¡B"=¡§0=¡iý=™Q„=“´Ý=pX=š­=Œ—H=œ`å=œd·=_@=—u8=ŸMº=³!‘=“Þf=’k=¥¼*=¥=¨ a=®»õ=²™²=³ÑÃ=´y­=¨É“=›V=•Ð!=‘f0=‰ÛW=¤;°=²¦¡=Á‚=®ò;=¦m±= Ï.=¡Rz=£@7=™Ò†=—™=•¶\=‡¤=[›=ŸOL=¬©=«œ³=¤#²=¡å=œãŽ=™2W=£¼=ªª„=¿L¤=¶ v=«é%=¬B™=£®y=“õ)=¥>“=ª“’=­w=¼S7=½~=«_=Ø=”Îû=ŸÄå=˜HÄ=‘‘C=¡÷m= ¤= Bì=š–é=›Z@= %Ä=Žf=ŒÓX=K=¡Ec=¢X©=³¼¨=¾jp=Åv=Çå=»¿ÿ=¯Y=šº=ž}= ¾o=¡sD=ÑÊ=’[,=—¡=˜ã=‘iF=ŸÃ=¦|7=£õÿ=ŸÝK=œQs=—fÏ=“*=Í=–áG=š4ù=›ô= m1=ž‹=™¬¾=’{È=ŽT®=S =•ð=£ü=›øU=¤ö6=©ˆ=Ÿ ¦=¥¤ã=©òb=£L©=¢,C=¡°Ô=šðâ= ‚=¯¨Ÿ=™s(=šB/=¥=£@8=¤ä_=°GÔ=¦¼ = t¹=—õ=¤ù·=ªmY=–M=˜Ñ*=˜`f=’ÇC=›þí=¤Ÿ[=Ÿº5=¥/]=ª“\=¤]Û=¢’Û=ŸDÑ=  Ð=ž”w=ž¸=£}Q=£Ú=›R­=¢a=£ü®=¡m=£:w=¡k=ŸIû=£Üê=¥Åé=œj=™T'=–Ä<=š“ƒ=›ÙÂ=ÿ>M«?}@?˜Á@2c@q–@Æ:?½ÒÍ?rBN=æ Ÿ=¾ê=½¾°=Úô©>°6i?H^n@ Ç@JÌ@;Ñ?ÜŠ¾?[Ù>š@=žy=¤tc=¨‚¶=¤»…=¥´É=«x'=üÐ=öe=î%=ÝKF=Óé«=ÈÅi>x>Î>W=òÛß=ÕE=£ØØ=žþö=œ_¨=›´=¨8=©GÊ=ŸÊÿ=¦£=¢ì=•!n=–ë-=™¶D=£6=£z)=£lm=Ø‹= DZ=œÉ[=‡ía=”Â=žA5=©6N=ž±=— “=”ðì=–_‚=˜%=Žú=;C=Š¿D=‘Ƨ=”˜›=—eÜ=‘Éi=•Dv=—¯§=“Ø=—п=›‰l=— Á=“~M=Ž,=”s=”L1=”ê=ŒƒŸ=†¾×={)ž=‹ÿ=”Ma=œ²ý=‰“=‹Ô=—ñ=f=ŽÁO=‹ñb=ŒHâ=‹X…=ˆk=›Šb=¡ -=¤cÛ=»õè=Äd=Åhn=º•‘=¬›ê=ŽÎ=„=†ÿ=”Ý=–R¤=”;p=ŠrÄ= .=”/=›7+=– —=—u¸=£¬=•«ä=C=‘2G=š)½=™L‡=>=™çy=žã+=©è=—Îh=ߺ=›ÑM=”H¤=“¢é=¡®Ö=šdv=—þ-= Ê=˜³c=˜ Q=¢–î=žÿ=™œ,=”l:=Ïj=¡ïL=špœ=–ž{=™j¯=¨¤=Ç=ÔïZ=Ü­X=à@=Ú>s=»‹J=·ó1=°Ýú= -@=˜ñJ=˜*+=ŸøË=š·ñ=’O=|Ð}=•´¶=›‹Ò=˜Bã=™JA=›j\=ŸÓf=›J!=™YŠ=–:ž=’&ƒ=“B=š5|= =˜þê=‡¾w=’ó=”ì³=–”°=ŠJ=ˆB]=ŠMö=xË®=T·=?†=Šåå=•©K=¥Êî=™=s=Lj=†•£=Œ!6=‰zð=‡‰ =’ÈÞ=‘€à=à=á=’Æ=—U¤=AT=˜Án=ŸHª=“Õ=ÿ"=¤_'=œÌ=™!›=”Û$=‚×%=•ê¿=Ÿ“+=œh³=™—=˜Mã=”„Ç=¬¥ß=¶K`=­d=´Õ³=°˜“=˜Ek=¤QC=Ÿ×g=ŒÛ=‹÷=Š€®=‰Õ=Š™=ê =˜–=ŽS=”&Ó=›íl=¢¢œ=¢u-=¡‘r=¾´=•k=ø…=0=–B=òP=­D= |–=ªæÙ=¡Ò= ñ…= B€=› ’=¡/¾= d=˜=œü=˜\ -=ŒÕ4=ˆ™Ž=@‘=˜#Ä=¡1=¢²˜=¡æ¶=œ³=œW =›Ž=¢„¶=¡¡Í= XU=¤„=œO³=—œ¿=ž<=ŸÊ–=ž(=šôi=—I =•C=’.=Ž¦è=”òÈ=¨JÕ=–ô=’Ã=’ ´=ÏU=™¹­=W9=š3-=—=” -À=˜Î¤=•q=•ò‹=¨—˜=©€æ=¨ð-=žŸÕ=’l+=•{"=°V³=ž=˜U=•F=’|Ê=“ui=•~T=Ÿ£À=›)å=•0=‹x€=Ž’â=“!ê=¦˜=˜ûx=–v­=­dç=›â =–¶¶=£É=˜!Ð=‘ô¼=ÓM=˜Ø=˜óŽ=—h,=œ›=žÞy= Þ¿=‡®š=‰«Ê=Œl=”þr=¦1è=¼©™=ñ¤v=û›i=û˜Ü=ó-µ=ÊÔ¡=²Pg=•ÿC=—Žß=‘v=‹Ô'=—†=œ$=T=%­=™)P=ÁK=žpD=–V=4÷=‰…È=‹+•=î¡=‘¤W=•›=“å¤=”–À=›M8=˜=ˆ=—e=cu=¤É=¤ßâ=št6=¦z·=¢Wè=—;=—€=›ãø=¡PZ=ˆŠ±=ê¾=–!‘=›Œà=¬?{=µ-I=µÐ9=®¹À=¥ˆÿ=—4÷=Ÿn"=™rÔ=‘H$=•MÔ=Ž¾ù=Š;õ=‘\=š©'=9q=•§]=™¡Ò=›~W=šì¤=|Ë=›ËÞ=ªú===ž‹þ=¥ù`=Ž™µ=+¨=em=©=â’=’þ2=— Æ=¡5"=šŽ2=“òó=Ÿë=¤ Ô=¢f0=‘áÊ=šõ¡=œåT=™Ñ½=¢Z*=£å=¤¬ß=Ÿ"%=¡ -=¡u=Ž/'=£­"=¥/=‹F/=Œ{“=ti=•Ì=Š)†=—²‰=£û9=$*=”óÐ=“åZ=žÏŒ=šé£=›”ã=ž=”oÄ=˜ÈQ=ž=Ÿ+Æ=œL‚=›6õ=ÖÈ=–¶]=“}l=Yl=‰w=%=—oÆ=›Mÿ=”é–=“ÌT=ŸK=˜©= n=³:“= w=ž˜„=ž}=›ß=¤=¢fÍ=Œû3=¡&2=ŸâÃ=•¥Ü=›H†=¢ ¯=¤5=‡íH=—E=ô©=› e=›M;=™aß=–û=“b½=¢=£º)=žxl=žÁU=£3L=®~'=-+=—f=•=Žšö=¿ã=ÿ¾>Böo>v+&>{æk>h>„¡=Ô• =f6=²k=‚Æ=—â=´.ª=Ž9=„¥=˜¯V=¡£=¤à=¤ÇŠ=›Ú=è=£R¼=­³ò=’L=’J=”¢ó=™/W=¢Ú -=¤…<=œm=›9=›b=œˆ)=×=Q =Œ*~=¡®­=”+ó=ŽÂ¯=‹Ÿv=”žÈ=˜<+=˜äÙ=T=œA=›ùâ=LË=Íj=˜È€=”Ï3=¾=”A…=ã =‰X=–L=›7É=º=‰´ž=–}«=˜|Í=Œká=™0I=›$;=š6õ=žÃ¥=š#U=”qc=Šê=’`=–›˜=›-ª=¯{`>‡m>3>>b>°>fçT>Q|Ž>0§=Ìœ -=°H‰=¡W=°fº=ÆÉç=ÁùU=²`æ=©h{=­'¡=¯[=­›l=»¦„=¶Ž=©9E=©À=ïÅ=–j=’÷P=£aE=¡‘=™ñ=Ÿð ->J>VŸC>ºç>ôèì?9 ?"¸>¾s‘>˜î>p¥–>,!0>çº=ãÛb=¿<=š S=™=š'e=ç=—=­Q=ÌW > ¬$>Ds>¤>Çú=âÜ/=Ídi=º /=›¸^=šÖ= (‹=ªKƒ=£”(=©¸‰=³Ä=ÇÞ±=ÈùQ=Üâ_=÷:Ý=ÖW=ßar=ÚP=¼rþ=Ÿõn=™ô=™L=¤×–=¤Ñh=£¬=¡E…=° =¤Ìb=Ÿè=±÷=®·™=©Í=¡¢Í=¬'=¢˜Å= c*=ª^¦=êš> ý>TEj>—R>¢[c>™µ7>€Øµ>%—B=óxì=ºð=«e=¬”=©Ÿm=ªà¥=˜J=®-=ºO˜=¾,æ=¦VP=š3l=”pŠ=¢ÕO=¦ò=¦Y -=£i¦=”aû=›'Ø=¢_=¬—z=¯ÿÃ=²û¬=³‚ð=ªåƒ=ŽŽØ=’}K=£5[=M™=§c=Œ›=œÂW=å–=\M=Â×Ò>«d?!Ö?aá?‘o¦?¦Ú¾?‡~c?OÎ?zz>€S=ÎÞl=ž=à=‹yE=D‘=›µ+=ª<·=Ÿm*=¦Ü=¹8w=¢å4=œwè=šöw=¡a|=ªÐ=¦nè=î=‹7Q=¤=¨å -=¦®X=¬n=¢-w=›[±=–®7=‘Ÿ=–§þ=šXQ=›Î=§¨Ã=«=¶/=ëÏ÷>ƒ>|\>ñè>ö¶>ˈ=æ3J=½„§=¹ëá=·„›=¬ËW=’_ -=œïn=£K‘=©¾×=³õ=žç=ši=›Fð=šÑ=pù=”ò=ŸNæ=£Ä-=¢õ=›¬é=/ê=¢„©=¬M³=®±C=¤œ|=™à/=›¿%= ýñ=¬‰Â=­Û;=¤m=›X˜=£§!=›–ó=·v=áS²=ìÊù=ù”Í=æ×Ñ=½?=ˆÀ†=–ñ…=¤*¢=±R=³£ˆ=«À{=§…õ=©hû=¢þ¥=š+<=’zø=Ò—=šb„=²&¸=÷¿l>qŸR? Wü?%¼†?+ä ?½<>½ùR>`ŸF=ÌF -=£)»=¯® =²yG=®×=•§=žkÓ=®Ôp=ËëÕ>t´€?[,?C h?OcÑ?:_1? -v?د?/ÿb?F?Ž?=¨Ð?‡@>Å-÷>62=ãhÉ=Óv=¹¸à=¤¿=¸ç¨=ɳø=ÌÃ|=̲f=Ãê)=·7¨=£Rn=“k}=•D=—š=– =í=’cÅ=‹T‚=˜V’=§…=œ¨=•1Ñ=¢ˆ=‡±¤=ˆÝ=÷$=<=Ž­«=”ô­=Ÿzè=³8N=¡Ø»=ŸÒb= g=Ÿ›é=šL”=¨ö0=³k=¦Ä™=©‘=¦N6=¬^¡=Í€Ç>–Ž"?ˆ_Î?ìn½@kB@Š§@ =?Â^?Qù­>@&=ÖèA=³.}=¯\¹=®üå=¢Åž=šêÆ=›¶=¦a=´óš=±;ó=–é=¢¦•=ž+C=šo=—3Ö=Ž“¶=¦é¡=¨Ù=—Âi=|:=˜I•=*ê= W=³*=®V:=šø§=†æ¼=¤M—=¡/]=¦dœ=ª L=“t:=·<}=°=¤@þ=ªñu=¦7=£•Î=ŸÇö=—à»=•e=•4U=˜…Ù=¤Ú=¦–g=©Z¶=¦uÍ=v=¢ðã=¢RC=Ÿ7r=œY´=§®T=›ÝZ=“aI=2ú=œ E=¶¢=ÖJÛ=ðÖ©=òœ> :£> Ô>ý=ÿ†Š=Ü5ô=·¶==¢Žé=§ái=ªíì= 'M=•ö¨=“Äó=£éŠ=™ôK=[^=£øˆ=˜ÄÊ=“t=’ø©=š5‹=»@¥=­?=—+=›/ -=¿R=:‘=±]Ö=¿¦=ƽ=ªýÙ= ™8= ù= ©Ÿ=’2Ö=­š5=µH"=«¾ï=€j=¡‹b=œ‘Æ=žã·=°õ¢=£w(=”+ˆ=Ü^=–¹Þ=³¦l=§Ëw=;É=œ›=¯»= Œ1=ºÕ=£ý=§Ëý=žË„=¡L8=¤W=¨N=¦™è=¼û^=ÙZp>X¬ã?Q“?œò> ¸Ä=«H¬=¡J„=±\¥=¬çt=¹#=Òuæ>Úø>¸¾?ft?”}?›´4?Žqƒ?)r6>Š~=Í‹j=¹> =›ÎG=œ =¦¾=«nt=ºÒÝ=À›·>&A>ãäu?~¹X?“ô—?Ìà?hÇÅ?!ÿ>)^=¶™=ªJv=©É<=¡I[=˜˜ë=¤ =˜ðc=”ûw=ª¶=©ó×=§¶×=¨]=¡àZ=§Ùa=ŽÎ=žõ‹=©2²=“žþ=¬ ?=§Q2=¥^M=µiÇ=±€2=¥½‡=¡ØB=Ÿ´ =’éJ=šH=¨r=¢Â‚=Ÿç=ªç·=¥¤9=Ÿj.=£ì#=¤Óô=›è¼=•«›=–×Ì=ž ©=”‡6=˜øi=¥ðh=¥·Ð=’èÆ=Œ#k=—·=£b=§ï=œzf=«Tƒ=¬Mž=¤þ=›ÏÇ=§=f= Ù=¤‹U=¨á=¢Œé=²éw=¶Þ=¨Y=¤Èñ=Õµ>z?>%™ý>+Jÿ>$ÄF>™=ß+h> Ǹ>¸ùo?W2Ö@'®@PÑå@SuE@<öi?ñÜi?=fñ>o.™=Ǻ=ŸÒñ=«tÀ=ÚÇ=Æì=Ã)(=¸(«=¡²ƒ=ªŸ¥=˜¶è=Ž®i=§s­=±&#=°qt=Îc`=ðº>ù>©Ç>@n=ÉŸ=’mÂ=Ä0=“qÄ=k?=…`-==•S=“«0=™tB=™Q2=’¯ú= Hº=Œ12=Ž§ô=›e«=œ³$=™Ð“=ô‰=Þ=š)=œs©=‘õ =‘ ï=¦Tè=–¦=ˆx=þ~=ž>‘=Ž‰O=‹Ín=Š¦†=sì=„–¸=Ÿ’_=©7 =¤ÀØ=©l=ºo¡=¹Ý²=¹º4=­ì®=˜Ò¹=³ç=îUÂ>'·>AHF>ÞŸ>ã†=á¯=¥í=Œvô=–üd=£Ü=¨|=¶_X=¼t=­i=«3=¡ÀÜ=—cØ=°M=Œ¦=™–Ä=¤àÐ=£)°=¤×È=§Cü=ªCê=¢-1=™ã’=›´ÿ=¨PX=–Ì\=¢ì™=¶] =ÈÏü=Ç)…=Ô}+=¶ƒ^=Šáj=t‘=““²=¥éï=­Z`=ßÈz=÷›=ó¢Ì=ã¬Ã=à>³…>LÆ>+öæ>*ßÀ>(ìó>Õ=ë#J=Õžj=Ê‘N=¨x×=¤=”Ô=ˆA=Š™=œ#=¡f™=—q‘=š¬)=¡Ú¸=‘R=¤jG=¡V„=œ3=›E_=¢/ -=¤Oƒ=© ”=­W=¤fž=•Œo=‹5r=–ïÃ=ž'=”àk=”Žÿ=ŸtÙ=’ =œíI=Ÿœ=¢ =ž:q=§ÓÏ=•¢1=™S=¥¥5= Ã)=¢ÐÈ=§·t=˜¶=•t&=œ[)=–‡t=“!=‹ÔZ=’Xð=›P‰=­ÿ"=›³f=¥3=˜Œ=“—i=˜š—=”ûÊ=ç²=ƒ=Ù=©&w=¢«â=tv==‘hˆ=ž+=«Ðþ=­D+=©2=ŸË=˜cJ=}E+=ŒËÄ=ž£¢=“,ø=„qÝ=ƒ€È=‘ÔÔ=¨§Ü=«¹ê=¹ä”=´5¡=¨Âc=¦›Á=Ÿ³N=øb=ôª=¡=¬a=£HB=’&&=‹í¡=“ò=‡˜Ñ=•L=£Š = x=—µm=–j=šä=–.m=žlž=™k=—À†= é=˜xÔ= ™å=Ÿr]=™EH=¢“a=³Ý=žÑÃ=Ž§¸=–¥=• \=Œ9®=¨¸÷= ¢=¡9£=£!¦=£4‰=—Õ8=•/e=³ž£=¨Ðê=¬L¹=´Þ¿=¸µ>O–>ofÿ?0Ë?~t?¡«&?—;g?‰Æ†>öî)>Mú=².„=¢8¿=£/=‘ð?=|ó©=¦Ä†=¯®=®h=“ÁÊ=ˆÄR=†EÖ=r‹x=€Ê=‰õl=‡¸=­É=†^‡=— ¢=™þÊ=’çÔ=’ª5=¢œ=‰‡æ=‰Œ÷=…õ&=š$=ªœ¦=¡sà=©ÂÊ=‚n=¢ “=œ-=’Þ=_=’˜=”½9=– -·=‘3I=‘w=¦;=˜õ¯=Ÿß<=Ÿ¸V=¤@!=š¿=–«=¤û=£d~=˜º"=…¦=‚=?= )ý=¦è<=…0Ó=Š>ã=Q=É×=•#¨=˜$%=§ÜÄ= ç=¥?Þ=«Cž=«þ =žˆ…=”`¶= @ð=o/=£Z«=š´=™.Œ=¦Ç=–è=£I‘=§x<=”"7=Žîý=Ž4À=—ËÍ=£Ù)=‘ý~=–7{=Þz=ŸB{=¸Y°=­?e=ždÑ=–ç=£f=©;=œ˜Ì=•s;=’m©=ŠVó=}\a=—áý=DZA=ªùm=™W¼=˜CH=–8 =CA=˜"¯= v=­xš=£ª°=‡<Õ=‹Y=‹õÇ=£Rh=¦„=¤Ô£=N3=¦=©[#=³o=§®=ŸÐ=€Zp=ˆ2}=Ý^=0H=’Ï=ƒ«=™wù=–}[=ÂP=Žº=–R{=ŠµØ=gD¿=‰î=—A‰=­¯ÿ=¦±ù=‹=ù=§ÛD=ˆÈ=Kî=£ãŠ=Ö3þ=þ<>±}>3on>9ï,>(ɪ>$×>×Î=¬;=D=£Ë=¥ÿ›=«q0=¬ ‡=ªb|=ª•=«kp=¦§&=¥&»=¤ô=Ÿ‚û=›‘1=—…{=ŽûY=…œ=œ –=žÏ=mZú=Ž€X=«ø=¢§§=¥Y=¶#ç=®Lt=¥ =›·=”iB=€¸=†¼=”X = Öø=ª%ì=¶=°‚=šî|=›Ÿ=šjË=´ò~=¹2Ð=±€s=ª1~=¢g=–+´=˜(D=£_=¨JY=¯dƒ=’žø=†Ï9=‡‚È=+=”3ì=¡óó=©ñ=¤E&=Ä­>€d=éEÇ=ÔV[=Éôý=Ãz=©*Ê= e?=œ‚=‘œ=™ý =· ¦=·çÚ=³é’=Êgœ=Ë’(=Σí=³$=Ÿœº=Ðb=ÌXC=¦'%=¥£= “°=‹p=q`=­aÇ=œ1¬=ˆ…U=–[ñ=™Qã=™BÞ=ž´S=§‚=¥§ý=¡2Þ=ªZ=¤T<=ž†)=­;³=®Ë”=³Y(=£‘™=ØR=·JU=Àö=¥ãþ=¢†þ=šP=çk=Š¿$=•Q=£•v=µA”=—¼ï=ð=‘n~=šÅ°=±´=¥ã=œm,=—òý=–n¥=’ ž=Š(é=‡ ™=A=”[t= ;=žYA=› Œ=xX=“PÂ=Ÿu´=šÿ=–†÷=©Ú‹=¦\ö=Ÿ5•=˜yO=•â1=¶”t=ªê2=“¾½=ž0A=ž¥{=<¯=‘ÅW=›[T=–¬)= =–õI=“˜x=ˆ‹É=Š¬º=Š‘=zev=‡ ¯=“Ð3=–10=™d²=ƒj=‰½Ë=˜Vh=“q»=l[=¤Òq=ž>í=Ž‰+=•¾ð=—3=”-9=‘Ŭ=ãT=“fÞ=‘¹=‡Û´=Ud=Ÿ™=¯ù=¶o…=˜HŒ=—Zç=šû¦=›Vé=šv8=R=Š³`=ˆ"9=’ø@=”„•=‘«=˜úJ=¢YP=”< =‘ˆG=¡w¿=7;=œñ<=©ô³=¥‘=—ïÂ=œú4=¢"¬=ªŠÇ=ª€?=Ÿ*J=«+Ü=´=ŒA‰=Ž!o=£Ÿw=¬û#=²N=ž¶•= …{=¦ð\=˜p3=Nn=’T=—æ«=©§”=·³=»f8=¨5—=¤gæ=æ“=¢Î>=£-v=©5Â=›QU=‡.ê=‹!‚=[ß=¤Ñ=­jL=µ…=¡õ -=ž–ç=£¡=¨Ìê=®Ó=øç=£71=µUã=¨Né=¢YÍ=—ÕÄ=š;/=¢$=ø:=šv.=”7I=€ˆ=ªyh= Bu= VE=µ&°=¨Õ=’E=Œ=Œ®ú=•z¢=+†=õ=–ª+=–(=‘ñÓ=‡Ž¯=xÙ=•ü4=”J,=cë=…Á¦=}xe=‡Æ“=›¯=›×D=Šœ=‚¨¹=… â=Š÷=†j=™N =ŸÖj=“¸Þ=‹h\=„ä-=‚g£=‰cT=§¨‹=”T4=‡_=£Ç¶=¡ôÙ=œrÌ=Ÿ$=ŸCÀ=œ‰ô=š¯e=˜i=—Ó=•ŸV=ˆ¢=Žº=•;}=Ž'Ô=Ž˜=–®s=¢Ê>=«–d=§|'=+D=ˆ&¦=¤…Š=®dp=‡æ·=ˆ~à=Ž<=¤þ=©L±= ã=œìå=›Õv=˜O=’æ.=‘G=u=2…=Ye=›ìm=—½ë=˜ÜC=š,±=‘|ˆ=•±õ=šæã=“Ù·=“4Ø=š§_=›µ…=™å\=š (=Ä= žQ=™¬=”èt=•è·=š ü=¡¨=¦’½=¥ ö=§›t=•I¶=ˆ -=–Û‘=›;Ð=¥W=˜š=’z=–L…=“§=‘3p=ž„Ž=¢¸Ó=¡¢Î=žïž=KI=¨=§=¥Ûy= k›=œ—=±DÄ=¢ö=´\=¥\ã=¢«¼=‹‘a=’ã=˜dÕ=lv=›äi=œÉ=”Ÿ=‘ä¬=²ç=¤Ô:=•+”= 0A=¡‘=œô¥=™X =™]=£ÙÈ=¤UÆ=¡b=”ü3=–Â==›üÌ=¨=Ÿ1ˆ=˜ã=–õ€=Ö›=‰ŒY=‰çª=­QU=œ$Ð=…“È=°ü.=·•=«uå=µ€ =º=¢ß¯=¯r=Á¦Õ=¨²= •m=˜Ï¸=–”=”UÀ=žZ =Ÿòþ=ž^.=õb>%åŠ>Ép>ëÉ?-…>ïÍQ>Äâ>;ÜË>èO>Xƒ>¿Üž>ØN(>÷^\>׬>¶w>/³z=ô†Z=´ÜÎ=®(í=­¹’=®â=²…2=¯¦|=¤E¥=Ÿ‘=œ6H=²,1=¯'ð=¬££=ª}=¥â=ýZ=“˜z=”–e=šñ™=œÙH=¤ø^=£ä=£'Q=§ü=«¸=¬J=™“2=™ð¶=šM'=¢ õ=¢A{=™ôñ=–PÍ=“6Ù=½L=¢5^=¬Z=¢ =œx˜=š“2=–‹=‡;×=Œ1_=’¢á=¤&>=¢V= ý—=—ùÉ=“]ÿ= –=–8×=–ø8=›¿¡=ªi=®+:=žá=—Þb=’o’=Œ¬ˆ=ŽÿÎ=—"Ä=uB=Ÿõ=™Ý9=µÂæ=Ï\à=½ä=Ã9n=Åäþ=·Ì€=°I=¤x=¤=¢Ó¶=°*=¥ÄY=˜tó=¤>:=¯î=ÉõB=Á0Ó=½žk=´ºþ=°N=«ì“=¸*¢=¹À½=µÞl=²[ª=¯Ôi=ž–P=¡¦Ö=¥[”=œÅŒ=œ = E=›*=œm8=¥<=£(=£À>=¡Ãƒ=ŸSÌ=ŸD]=¦E©=¨ÙN=­Hy=ªY0=¦‹µ=ž1;=˜·¤=Ô=Ž|"=”úu=¬—=¶ùW=Ì<„>E9Û>´:Y?Ï?íA?"?1èÆ?®?ç?h >µ¯„>h¥i=¸t.=¯Ð­=µº=¬N*=¢‚=’ÒV=‘Sˆ=”Hn=¡Ö}=“«V=ƒ‘À=¢[{= b,=–Yn=¤‘®=¨w=¨ÈE=¥¾™=¢#å=¢sO=ºê =ØJn>Jé?Qœ@Ì@ÕØfA  ïA½ß@ôA@Э@[?Ó~?ÛÙ>mÊ[>±¯=²”$=Ÿ‡B=–\_=¡[à=¤v%=§qO=¦ e=®³e=¹Q=êö>K|Ó>ø*L?(S?>å„?'0=>ðüq>‘»O=Çì=§„ê= h½=˜Â¿=”å„=Œ™/=”¿6=˜fb=‚öÂ=“j=¢ùz=¡Ù_=£ÀO=¤C=¬7ü=®Y+=¯¼=¦p= ,a=T0=“v©=™]U=œ=ž’c=¢df=¢¶ =£ï™=¦µ¶=œ=–Ï=N{=•ßó=›E¨=˜÷=—ý=™ú=˜p¸=“aÊ=Š­=§{Õ=®:å=ŸÙ =µÉ=U”=¤%ƒ=¡î=›zC=¬ûl=ªî_=§Ü[=ˆN=ží=«/_= ?=˜•ÿ=žè«=Ÿ4]=  ã=–DÛ=”„=ýµ=ìÐ= ô§=£Hù=›¿=œ¼[=¢H:=Æ]=šx=Œ‰«=s@=’‚­=ªÑ«=ä>ëe>OÏ>T>FÄ>˜B=üþ2> /:><Šô>Z³’>WL >5óP> =°ÅÇ=ªV>=¨çñ=‡Ü=„=˜ -ƒ=œÄB=ž6=ªÑu=¢0(=™å{=ƒœ8=‡˜ =‹“|=«'=öÇ=‹oÒ=I¨=—Ç~=¨i,=š=•B6=–_«= :=£§~=œ•~=¨ö=¯Oö=ž7`=ŸKË=¢™=O*=š S=’ç£=”nh=•IÜ=‘øñ=ˆeõ=‹Š<= ¨R={L=™ã=‘c›=”Á=—‚=­R”=«$=©1&> -Þ¦?ð?‘L?Á¾?Æf?¾Ö,?¸l?¸V?Ãk?¸h>?¦Ò(?)Hë>§=Â9Š=’P£=&£=¨.’=‹Ùâ=’{’=å^=²)=¡==¤† =˜Dz=—P==cz=©RÃ=« &= gÅ=œ#q=™ª@=›ƒ =›Š’=›†i=•(=àÔ=Œ)Ö=Ÿ¦"=©9m=³Ðo=š›ˆ=žpØ=ª…D=’=ç=’¥Ð=Ÿ…†=‘ÎÇ=“- = }=£V…=¡”Ž===“Ç =˜-"=µ¢Ç=²^=®ð|=²M=ªË -= íX=—”­=–t=–aÊ= Á=ŸL}=šñ§=—Ku=™4ÿ=ž<Þ=—e=‘Yþ=Œúy=˜qÍ=›‹…=•la=™i‚=˜¢I=˜éÍ=’H7=jŸ=’™±=¢õÂ=°N8=°å=´cý=·t=¤¸ý=¡S3=žZ„=’߆=•&å=œ.=˜`ž=—±¨=˜ÕZ=œj=—›)=‰êq=”ÞF=˜*:=—ô=õÚ=Ž'û=‰o==ŒŽƒ=*=˜9ª=žÑ)=£tX=œ­†=—™ø=•PÞ=¢§H=œé˜=—º=‘Þd=˜³œ=ŸÃg=„ëR=˜°F=®0Ð=“a»=”=C=–ß=–É«=šÞõ=ž§=°·5=½o=ÑI‹=Èì=»Á|=¥}Ë=–_Ž=“èÍ=“Õ=§Ê&=«™”=¥ÒÚ=± =³XÈ=­q=­”ë=©;³=—/\=’‡;=’5B=—ùX= =Œ:6=Š¨¾=”ïÙ=šmý=’sà=œ‰¦=¢ 0=˜y=˜Þ=™à5=ˆ¡E=Š×æ=Ž,Ç=–«Ñ=§Nj>ê]>ùýÄ?tä>Ýàe>‘JO>;²=¥Æ³=žÕ„=œ ã=ÜìÔ>„Õ†>ÃÏ>ð¯Ã>ê)+>Ú4t>\êþ> ª=¬7=¥G=’–=‹·ª=¥Ê-=š„=–êò=¡Nï=°•€=³­=^=˜¼=˜î­=§-M=¥V¹= dì=˜ -4=ˆ¨Ì=ƒac=†Ú0=Âè=ô.=‘p²=£ÎC=¥\ú=¢O§=ž,‰=¤gÍ=²/5=²lª=µ¢5=ºŒ`=¤N=¤«x=¨Ñ¹=«x=¬´O=¯+O=¤p^=eè=—¤ -=¤v[=±.I=»òW=¼û¶=¸ý«=³`ß=šy=¡õ.=¦©º=¨Ym=ºÔ=½9è=¨Ç=ž,=™‚=˜E|= £=™âÌ=âÕ=‘»=—8Õ=¿‘=™€q=—ua=–B=Š~D=4\=˜-ò=š9‹=—K8=“ô=„Ý‘=¡Ö=š%â= P=›Òh=—õ|=™6º=’—=’U†=©!>=¨¦=¡»:= x=Ž8u=ŽŸš=‹™Ï=¯‡=˜¯æ=¤øT=œ\×=šNr=š…?= èí=™F<=ý=“£¨=š+=œ=„òÉ=†çë=‡>ø=„ì=ÚX=“m÷=—II=–=™S=ŸôY=ˆì•=ŠÇ=š†e=˜n=”=„²:=†:ˆ=ÓÞ=›µ—=—žh=˜!=™I´=£î=¤¢ =¤â¹=§Ü =²Em=±Æ6=£a=Ê`=Ž€Þ=š7'=‘1=.x=•=O¢=&ì=‰ð=˜,œ=¼\-=Úé/=ï,'=õÜ=ïrÛ=Éä=·M7=°…(=¯p?=à¾ñ=çy=Þb!=ÒèÇ=¼ˆ<=£Ä=”‘“=‘k§=x§=‘‡K=Ž9˜="€=Ÿk=˜ZC=“»a=’.=•€‰=‘¶É=ˆÍ=”š‚=“Çž=Æ4=”Ù%=—JF=™â•=£Qe= z’=Ÿ =¡¶Â=—‰Í=¯Ê=…Ø°=›ä*=›¤=•ƒÎ=Ö.=ˆ=Ý=q†=„*®=ŒFÜ=”„ñ=–'¾=“)Ç=†úí=–‚—=—ò‹=”w!= 17=žÍ=À˜=ž8?=—6=”@=Ÿ?X=–±0=’bà=’+z=™V@=œÕ“=ŸÌI=”Ea=–¹#=š¡A=˜¹H=˜Á¥=˜\=–¹=”<ë=“S&=’™=‘´Ì=••¦=›×Ä=§>=ª–I=­Â=½ -=®×Y=«‰Ó=Ál¥=½Ý=°@<=”?Í=˜Õy=œ“Ì= ;=”f—=šŽ¯=ž×g=™bÂ=š=œØ=”„=—4,=›µ÷=£1é=x'ô=Œ9œ=›”Q=“@ƒ=ðÙ=‘GŒ=›:i=Ì‚=„°=•K=¢õ!=™Ž=Žã=›L/=™œ"=˜´Ä=šS=Ž0‡=ˆ.+=‚ÒÓ=›3 =— ;=>%=‘¤7=–Yu=™†Ñ=ž7]=–w=Š¶Ž=‡¸¨=›çå=™ =”Ö=‰Je=EA=”ËU=›,ƒ= n<= ™= O=¢Ï®=žéÀ=š`M=˜£ƒ=£sQ=­˜=¼(Ù>°>1\>;'À><ÊV>R1=Ðݱ=˜•¹=‹2==”_}=•Ö\=—Td=—çÍ=¥ý9=¨=¦O-=—Îa=Xj=¨Ô«=â#×>">g>,ð×>0ãØ>~=áNQ=«ÍÓ=þÏ=•ë÷=•7ù=’al=Q¯=‘ë*=’Ö=‰Xv=Œ\=”R'=¤=¯›|=¥=—v0=¥=ŒÒM=2Œ=”+a=Šë^=ŽYÇ=–q =’¼Ñ=Ž{+=‹íD=‰ÿÅ=sõÿ=~C -=’ܵ=Ž)N=‰ Û=…ë&=Œìä=´Ð=”^y=›7F=‰8a=ˆZ,=‰a =ŒfÁ=’Ý=“÷ =‘®=ƒl¤=ƒ1)=†Õ=˜Þ=•~Ä=–™Ÿ= æ=rÈ=k,=y›±=“›=lÀ=z”r=–oÂ=™v½=’;=…„Â=¤6=‰L=ŠRÁ=§ýR=‰ð= B=„³=Œçö=”Øè=˜êê=WŠ=ŠÌ}=‰‹ø=Š\=•/=uß=ŽÅ‚=žo=—Ð/=˜/A=›í=¢;Ä=›ö´=™×=§#_=˜ ¥=”/ï=”ç=œ²ü=ó¡>A¥d?àæ?«é=?áz|@ U?ã­~?ª›?bEÚ>—±š=ù”y=£ìe=¥i=‘Õ=aF=|˜=„Ù=ž»=¢gK= Û5=šÄ”=žPœ=Î~=—ùZ=§=˜Áy=¨Žs=×7£>öÌ> Á%> W¼=à!=¹ÿP=šý=’ƒ=‡÷;=‡L=‹ÃV=¨9ø=›þè=—¬L=¥y'=šaB=˜Sa=—Ñ=Žå!=‹Ì=‰Œ =†½ä=“J–=œ5=Ÿ‘=Š~£=‚…ã=€~a=‚wö=›+³=‰^Ÿ=}Ú®=Š;=˜«:= /„=©=Ù£i=ö«>j=ú®=®õÔ=œ‡å=’% =}t=:t=u-=ˆ\ =†H==?=Ò=”Ÿ“=–nJ=šh¦=š—»=†Wè=•ô¹=•º=Œ¤å=ðÐ=Ž%Ø=‘BJ=Ÿõä=’ú=“„=–ñ=••’=‰©J=ŽoÉ=ž8O=ð6=Ǹ=‘û =“:Œ=¨î¹=¼ú<=Û‚þ>Ï@>Yw> Ax=ö¾“=²^°=•/ê=‡Év=·z=‹bC= 2=‘^=ˆŒ˜=›ó_=™Ã=«=‹Ð=Œ®=£Ã=˜F²= t°=Ÿß·=ŸÀ=Ÿ¬w=š‰C=˜¯Z=–yÔ=Š“Ò=ØÊ=ŠdQ=}²¸=ˆå=‰¯ =ŽŽÉ=™Z= Y=¡sK=ŸVâ=‹| -=Šöa=‰?i=†„B=|³-=Œ±=kk=ŒT=Œ}Ç=‘eØ=‘ìë=©â=>=·ß=Ö7H>éø>o#=ô¤³=ß'Ú=¦Äé=‘IO=ˆxù=…c=í1=Œ#º=Ží=—*Ô= ª«=“²U=·=”Q=~šâ=‡7ô=1=“_=’-[=‡C¶=}VÁ=ƒ&= p==9¿= y=žbÇ=–‡“=‰G=kÀn=šÏ=£~]= VŸ=Ž -?=•æ=›4À=Ÿ1=¡y[=Ž©â=„Õã=‰Œ==¦-%=ª¶>=©l±=¦¦=¡ô=²N =¤²-=™„r=™]¶=Ρ>&GY>ƒj>×>·>Õ?y>Áœ>›;&>çC=ÅÒQ=¸“è=·V3=³´{>-ªx>Œ3->µ¿>½íÃ>¥ @>j©>Y= ö=£5á=§NS=¥P=“È=•S¹=œ¿Æ=¨]v=¼9H=ÔæÄ=ÀÈ=²ã}=½gZ=†â=‚eY=‹;=£yf=gq=“›¹=’®z= æ´=¨£ß=‹bY=‚°=š ‡=„|ˆ=oË9=r°•=‹1=•#¯=—uæ=˜Ã¥=™•=­á=“ï"=µ¢=–+À=—iw=›O˜=«û=Â<=Ê?—=¾=@=°?f=¦A(=•R=˜ä”=—n+=š=¨×=¢ Á=›í{=šI =«¦á=ŸM=’b×=†Ò=„bÂ=Œ™_=’ƒ=—`}=¯¸=׫=šA=¡¸¥=¡†¥=‡B=‹}=•‡m=œÈT=ƒ4a=¦^r= ¦Û=“)6=ž´5=™\Þ= Rþ=ª}=ºgU=²+r=°¼=¬'Î=¦$£=©åÑ=¹îÀ=Àµ=Äk¾>PÛò?¡@,(©@—¢Ÿ@ÐœU@ÇHs@¨oY@xAX@w^?B´‰>×=Ä=¦PØ=­2=¦(e=©™=´¬®=™¼l=“<²=‘Ú€=’|”=©œ=ªu+=”=•~È=¤ßë=‘¦ -=—É~=šî6=Œú=—óè=òW=s/=“è5=¢Å•=‹ê=Œî¬=™Õ|=”sJ=™_J=¢<=¦K(=«ÂP=¥7=›v=—¢º=í*=ŸûŠ=´‹è>:“>´Ú5?û¢? `?"Ï>ÆùÃ>^$k=«Øá=¢_ð=fV=yHŽ=¡#=¦ü=§}·=¦„V=§­*=8=ší=™x=•QH=’šÞ=ÎîÄ>Dc>«Ô>ñf¥>ü±ñ>Ûõs>¨ò>÷=¢‡=œœ=ŒÕ=„Æ=Æ™=nØ=†×”=î=J=†w°=‚X2=‰ñ@=”Œ=›Ýr=”’5=›ø=¢ =‚=£ÏÖ=„Ô=|_ñ=†m=èF=œÈ“=ŽÔ¡=‡Ê+=—w,=†¤J=’€:=¢Ô’=²] =©sB=£î¼=–sÿ=“!å=• M=‘Lã=”òõ=’’=ܯ=‰;-=¬øV=¦k£= =%=¥¶²=†Ð?=— =h=|ØN=‚©^=Š4t=–%X=Ÿ•R=›l_=†ã[=¢¥=–VG=êÚ=™Wâ=¬ÞÇ=©¹=©?Å=±N=À*ð=š“é=×x= -¦=™›ý=Ÿñ=‰B6=˜œy=œŠõ=“´=ŒX=¢}H=¥7T=b>=š2æ=¢Á«=«/=§Ú>=—gæ=‘Ò=—ë8=’Û=£MÅ=±=·/=¨ = y÷=›!q=Öî=ªœ­=Œ=Š„ó=Œ?=‘ö;=…ب=†ì´=ƒü2=„’[=€÷=‘X=»=5¶=‘uV=£ÿ=uþ=ŒOs=šþ†=žHS=˜zÁ=Š€6=“r= p´= êà=ž¬½=©û=£)³=‘UB=”rÚ=Ÿ$9=“õ}=—Ì_=žh¥=¡ =²&=œ´Î=–ÂÓ=œ\¢=ŸÃò=µš=­ó#=¡Û—=Ÿnˆ=–=“›2=‹¸•=šÀ¬=«nç=¦»×=–º=¦¼Ð=©[ =¥©=šÚT=¥è=°˜=¦aŠ=•¨>=ŽÆ=œ=¤¬=Ÿ~à=¦ÈÐ=¡þa=œã=¢‘=–Í–=‹[ï= &=•<°=—Ž±=¦Ío=£¶Î=˜rÇ=“ƒ=~«Z=„ây=õc=‘=¬Ó=êVÏ>8>Ì?iÛ4@ î^@!xž@&…@Ã?Ë?Ò>Ô>5.›=•ñü=§õ;=°®ü=µ2Î=º!e=¾=š=¨Bð=¢Î|=”ê‚=—æ"=¼œ=²=­ö=®DÛ=œ6r=‘SÁ=Šïí=Ž—=”õô=™Žà=¢y†=—èÏ=«¾…> ý‚> ›w> …Ó=ÏBË=­!@=\"=¢e=±û=¢Kð=”Ç2=~>=e´=‘ý=•^†=š™D=Œ÷¶=…ƒr=£1v=ž¾=rØâ=v-k=oì=“Óo=¢Xø=¦7= hà=™†‚=\Æ=~°|=ŒB¤=’îÚ=¥s=ž\¹=”xÄ=Š'ç=…£"=”ä°=Ž¹Î=ƒ[Í=‘)-=žÆÏ=–¥=ˆS=˜È¬=˜PŠ=›Øz=˜$=’± =±(=œ6Õ=š’=šù2=Ÿ«½=›Û«=–È=—Ìí=—"‰=¦ =–š¦=œúo=¢ñ=¡«^=h_=’|=œ©è=œY=˜o=’zë=—^€=™²Ø=‘Ö=·0= =¢N=ŽØ,=•Ç=¤e~=šÂ=— â=÷%=¿¬=ˆ ö=ƒâ=‘¾ß=•?í=›×Þ=¼‡=·eQ=±±Ö=ÔÀ=·®=fr:=vFé= ‹=ó -=uõB=4—;=%Žã=UÎ=Ozš=K*=‹ =ž¼œ=Ÿ =ŸÇ =¡ =†Eò=^æò<üñ#<ÓŽ <®Œm<îä =;(Ù=_–€=n³ó=aÉŸ=nï=Œ.=*W=”“t=u°p=_]º=gE=]æ==Kh®=C½=9yö<'UJÇ=O¼=r±Š=x=ëY=Rèé='r <ßš€<²Ï;«ŽK<3~h<™3<²ß<\å¼2Aà>¼ÿl?¶¦?ñé„@'Q@(e@3?ÅR?˜Â§?A‹Ç?ï?Ê=P½Ô<ù]Ì:ÇZò;¸¹;ën<gß=b=š=¤=,+=%Éï=6\ÿ=IÞ=IΕ=VQä= ‚8=Ÿ«l= Kó=”¯=Ž'=vÐ8=pP =a"š=T0H=F’= ïÜ<Ük"€< -û¼;a”ö»cлNOºpr»s{»|¼»vo;¸ã=+Ã=&Ÿþ=%Uñ=;1i=F‰=s!<òëà<ˆV<·;±fȺªë^»yG»ÉaG9¥ßç;€8zIg> IC=Ïí=°>·==X=p–&=i -ˆ=ŠÏZ=k´=•58=[BV=?¢³= -0È<«Žß<í*;!:I¿H¼ ¢(»bù;º:ó¼Ò;G¶;ƒ%D<5UUü9=Z+h=a¿g=mGº=š·q=³BÒ=Îþr=ůÞ=¸·ï=½l=aá†=pãÐ=Zžµ=Dö¢<ùÒ<áâ×<¿G¬<˜»ïÅ2=äº;=Ìbj=ˆW=Š¼¦=Œ‰^=cO=lžõ=…­v=Œ–=Š1= Ü=™Ž–=‘$/=`}Ý=M “=I=(g3= <Åþ˜<­F<…ÅÈ<Rç;ÕÊ:Ò.:%¿:‹™;ÓdŒ<)Mu<¢‚<צ<ø_ÿ=:ðÃ=`Qú=„·Ë=»$õ=Çã=Љ=½H«=²µv=Œxç={™ƒ=Xž=Bwœ=HáE=bèÌ=fÖ<á¦Â<Æw9<².Ñ<‡Æ¬<6ã¨^Ø>S‘Ô?Êv?ç#›@»Y?ï6“?ÐNÌ?,½¸>®ìè=²S¿=¦Þ:=¥(=¢L„=¡~=›È†=~J=‘x.=ŸÄ8=¢ ð=›·=ú­=’ÔD=“â=lÕ=’ËÙ=Œ¹a=Ž…ù=Š}Q=„•ú=ع=ŽÀ’=ƒž§=€aÎ=}å=´=p=á=„‹=‡AJ=ŒÜ¬=’ÊÀ=šJ=³¤æ=æg> IQ>zÌ=ÿ@e=çp$=¯èû=›Ë±=ˆMî= ²^=³ß]>+>Å>¤Ù=껡=ÓîÕ= Ç=±N>=¸¨=«ÉR= V=”ðè=sõ =jo=\Áú=\å =^ä =cȨ=W.K=J´‰<½<Ì<’t~<:è½:æÓ:›ÕÞ;¾;+6=Š’e=Œ§n=Š­=‡!P=Åx=ì<>‰ˆ>ò > rU>—¼>'h«>E@[>¤TW>¦Ü.>§µ,>tPZ><Žg=šLZ=—ÆØ=—5ž=ŸŠÎ=¬NZ=¶_*=¹%=÷‘>*^Ú>‚ >‰Žµ>Óy>?ég>šB=gÓû=gÓi=hO=±6/=½=Çì=èÂ=jõ=<„0;Æ3;(œé;yš>;›¶6<<’³”<ü«M=l»=ŠÕ=¢…Œ=³ -=´ê–=–÷=Eý=„êI=g³=X4Í=CKv=Wí‚=Iª=ÐÛ=Cì=F¦=ÙØ<åÝÿ<ÈXó<ÁÙó<‹0s<›È9ô²É¹éj8Š¿;¢ ;mm;êÖ#<••P<Þk7=f¥=mÍc=u»ò=YAf=Nˆ=;½=W.2=_ =]­=m9Ž={h=}õ=„ôu=‚‚F=çê´>n!>š»>)·> -kp=ÿPì=͆ý=·ã+=šFü=v˜9=^s=€Y7=‡ùN=ŒÅ`=ˆ—w=ƒ é=vAp=„5€=‡…²=Š²É=ª—=ºyÅ=ÓÓ³=·€=¦'ó=‹!==†­á=„(1=È=ìÂ> -§€>„•=ï°£=¹—=M~= -†= gß<Ú<°tÒd=T–…=]˪=i‹.>Rƒ>9Ž³>wº>€™²>c%>)¦^=y&q<üì&<ƒ9? FY>ß8«?LŽ?[;?LÖ„?1F>ÆÎQ?/ÁÞ?Ï°?õí;?ÿÒ¹?ðœ›?›6J?Jž>]p>#;=ó¾Ó>¾/>–>%£^>` -=ÿ=Øfù=´ÎN=§ò;=—s=X¸=ƒ‡4=_9p=‡ià=j¯=€vt=wEW=tÞ=r»¹=N0=†ûh=”­r=¥œL=¶}U=¶[æ=¹'O=¼{Ü=¯Û=Êω=üC> MÜ>Y=ïÔÛ=™Ú=to\=Fa@=H»r=LnÊ=N“I=.™í=A<î÷¥<ïa<éh<7ɯ;õFô;z¥í:ÿ:?¹¸¡q»J8+:ŽÏ¹:Ÿaä:—ûÐ;üÌaeœ>3FX>) -f>,t=ôÑW=Ê„ö=«‹=Œ-V=ŠIP=ˆ–g=qšv=pš½=o%í=ŠUt=ƒÂÄ=y -õ=Šíg=‘»T=—ô¡=¢?ù=¡gS= !v=¢ûp=¥ î=¨U=áG>Ú;>.ø>&Îß>$;R>ß*=ØÒ=¯.N=|MB=w<—=}`Ö=†Ø=€Z­=x¦;=n„C=Iåy=Eˆ =RJ*=@óY=9†=4 å=!ä=.¾<òÑÃ<²«Y<Œ <, C<5qº<œó¹<Ñ5;×Z<°;ÂG<23<°ìm<Ø­=ÙR= Í*=! u== -¬ = ;= <=×?='ÆÜ=+Ç=Þ= ®þ<í2<ÌÅ’<– ˜<5üÕ<¤•2<Ô”Ü==4Á_=H™Ã="_y=)äO=0ˆ=LÙ¯=_Xò=iÆú=€,î=ŸËJ=¾Y¨>,Ó>¶Ï> Q>ÓW=ÚûI=±ð=]œ=†Ó¶=‚.é=& =|–y=yþË=ySw=s¼s=pâ=kP -=ƒÌÏ=ˆ ‹=„âˆ=†ÀØ=ˆŸS=’j¤=† v=‚ÏC=ƒþg=›%0=½m> r>-Œ>“> »=Ñæî=ª,=„ Ê=Žßs=*=„J4=‡¯p=‚ÀØ=p‰ò=H$=ƒÒò=…Oj=¤¾=À‡ú=ä•o=ÞNã=ÕoÜ=Ê:X=`=Bäe=-‹v=}¶6=k§=WÍS=^Ž=ŠP<‰!;;Ù;e1Ç8Þê?»{½ º|Á:¨ëì;g s<, -×<†‡<ÓÓ=Û¥=‡=;æ²=5[Ú=1„3=+Ðè=0m=5"G=Cع=,p=*–/==Æq=i4ú=m==`+è=°ó<¹šS;•»P`o»ýEš¼?Iê:¥ˆƒ:þƒ£;–ð<2p”<\Ÿ <ˆŒ<ù¶û= œé=w½=KiD=Q@÷=Tsm=Kö·=foó=qàç=pín=“Ý=·ð^>-Á>ŸK>Wä> -i=Ö@Ò=Ä–—=º÷Â>,¡>Rõ>5­> W©=ë·µ=¾$V=•Åþ==„n¯=€el=}±Þ=~¼š=Z°=‡C =~—Ô=h7Ó=mâ¶=vrz=…«´=ÇÒM=ïîY>•>bB>PÙ> x=½:¹=²{›=¬ÄI=¡Ór= y=N=“Áï=çî=(°='¾=–Oû=—(€=’B´=‰÷=‚G=s!¾=f‰–=h*=n^=~¢P=„¬¯=‹u=¯Ê¤=ÁÁ¯=Ó½=èÇÙ=ÂÓÀ=£ì&={¬’=(½E<àæ<3^j;UÉw»H)ñ¼8X ;qØ;§2d;Í I"=¡Y…=Ú¾ó=ï}ß=þßÒ>S=ÜÕä=±í.=œž=•(=’ô=žØ=$¼=‡Ý=)=ŠéÉ=‘:Ä=—¸(=ˆÄ£=ê28=ÏX=¥,=¢‘=¦%0=¶{m=«í$=¤UQ=›ñ=…$à=ƒû<=ƒ‚n=›=„y)=Š+É=•Ò=‹bš=†øü=‚E‘=„-6=‡3x=ŠÁ0=‘7$=‘ÿ=ü<=xîæ=‹:=¢z3=Ôsj=ÙaÙ=à^ð=êˆx=±3¥= ^A=•ß‡=²2=·á=±†=ÄÝ=!œ†<Æà=Š<¸=ŠÚ=YÓ=¦v=ƒè#=y‰o=˜Jl=“·Â=‘ §=Ž?.=—Ä)=˜í8=«“=ªëd=ñ”c>*$>øá~?7<ž?o§ß?…¡k?jØÕ?*H>üÑ >¨¸=Ö%¢=·Ûâ=£’=œ…=ëx=‚Ý=b`_=U31=K=8><õ‚ë<²†Ö=…Å =”D’=§…D=´Š‹=¯! =‚¢ì=qÄ“=yO,=bF"=^˜Ž=`mâ=y =˜<#=³=t©Þ=A=Þ…<õV´<‰H®;÷æ³;6‰º—ÿê;»Bû=‚"ä=…ðŒ=‡Pµ=‡ò=E³=‘¤Ê=“Æ.=•$Ž=­£¶=¦BÆ=ŸÙð=ž–ª=ƒ˜}=‡a=‰ùé=lCÛ=†,œ=â==–°N=ŠìW=ƒ -¢=|vþ={ =™´=˜‹=—Üg=k“=”#ý=“0þ=’µ=‘!´=À$ >³>–M5?Y©í?¨§þ?®÷Ù?£cÊ?qˆ >±ý>Kì=Î# >.Ê?T?“­X?§ø‹?ž!ý?n&?¯>ÞQ=¹Ï¶=°u”=¢MF=|ó=†„“=•¬€=˜‘=†°=šR“=¨Mæ=¦ Ì=€à =–Áé=“Œ =eò=‘¼X=‹kå=ŠÂÐ=‹‘=CP=k~„=…95=šž=•Rv=¤M=•®n=ƒ×=”e4=ŸÎA=£ûï=£|q=J=’Wã=èú=†µß=€La=¡=ŠÏf=g=·î˜=Žó=„J½=‹Ë>=o&³=R #=R#È=aEm=d_Æ=[¹L=H”0=-Þ”=T¬<Àáò<ÆaÏ=Ò$=,ˆ =RâB=\6Ë=S>è=sœ=uÞ;=}jä=†É"=Œ©=–žè=žƒ=¡’Z=ˆ 6=û=¡È=›iï=’žÇ=y¤#=eÐc=\Œ=;r=õ<߀Â<’}<1ƒ<Œ~L=É=kZX=NRy=‚7=M=l·‘=z û=ŠÌ»=‘ªÚ=”z.=žOC=—ç¿=©§=¸¼÷=¬¼Ä=°zÂ=¤á°=›“=‘2ì=†d&=7=›=¨uJ=xàõ=vXÉ=ƒ„£=—¼=Œ¿U=ŒÌ=‰µè=Žø`=“ -Z=n =š¬˜=”É=À-=­¢b=£d=¢ =›†=ŸÔ§=œÏò=˜ÎÉ=¢Rý=©9z=™é=ŠHP=û;=„îü=„0o=ƒõy=yíÎ=ƒ(W=ŒBö=ŽZ»=‹a¹=Š)±=}“$=~§¦=…à)=¡?i=•.#=‰ÛT=†Ó=–h=„£h=€Þ•=€òý=ˆ'€=³H=…ÛY=” c=š­ =–] =~ÓÐ=„ò¾= ü2=,=„C =As=™oó=¸ä=oßI=xŒ=æh=£è=–›=˜öY=™m=¥‚‡=oæÜ=”X=Ÿ^=˜e©=¡eÃ=”ð÷=ŠÓ=*I=†ìw=„¾À=Ÿ1b=§°=–[=š@=7¬=“=’˜‡=ˆEi=R¼=:ð€=*5T<¨ü<ªYÚ<¯½<âÒÉ=¯Ò=vÔ=vTx=|4-=„Ë8=ó=Œ†È=ˆÂ=ŠÿK=ØX=yåi=œ{ç=›#v=pO…=‰°=lS=n+.=\eð=Aé=N(=_l=,{è<‹ôœd,>rg>]>–Ã=¾x¼=–õO=  Y=™Ôš=©«@=©5’=¦ZÀ= ˆ=’Ä`=¤¯=ˆÆ`=t†Þ=‚Q=™ÃÏ=!¦=•Ü=Œ>=™Ò8=Ÿo=•ü¤=vÏ»=‚ZÝ=“uÜ=”—U=•¾ =™³3=—·,=®ñ=ƒt²=„¬=˜ãu=2Ú=ˆ¢q=†­=„•=‚8M=0Ï=šýÕ=ŒÀ=sâð=‰êi=‚<§=ðÌ=îÍ=²=ŽWW=oË7=u’L=˜Ô±=  =žˆî=š°-=•ž=™ò}=“ßô=”1m= ›*=ŸvÄ=‡üø=þ=€=+=‰8â=Œ’?=‡çR=…>Ü=„“ó=†€&=Š-—=æë=‹µ¶=‹@=ˆÛØ=‘ŒZ=§>=Œ‚‰=ŽVœ=ž¡"=™w=«uß=Ž¤Æ=xuû=‡©^=™j=€:]=~÷ˆ=€Ñ/=`=%UÜ={=&T_=)v=*}–=|c =ƒ¼Ÿ=† ü=}‰o=hÝQ=‚À=k×m=ˆ(=’Ž†=o=œ*Ž=y Ÿ=‰ÿp=¡¥i=¯g¿=’Û4=€ -Í=âÉ=zâ#=\Ì=91y=”!=*¶Î=?2]=A«¯=‡Sx=‚)7=|~¶=SN=ŒA=Šu=‘‘=£½c=¥­K=•Ò‚=•P°=šôu=÷Z=Žß…=¡i‰=›0—=’ø=‘X=‡z=ŒÛ =‘ K=Ÿw^=§¥ö=¡!9=œý2=‹sþ=Œ("=œ^^=¡B =¢[1=™ý2=Šž =Ž*¢=ŒØp=ˆ‚‰=}mÁ=‚Ž}=}¸=àé=Ž¸=‹ÈÍ=¡Œ×=”Ä‘=§)E=œZ2=oñJ=‘ -é=Ÿ/‚=ŽË=ˆC¢=šø^=–Ã=rÈ={æo=†xÝ=…ò=…ª=?f=€©=˜Q=”W’=…3R=ˆ3=…¸Æ=,’=’·¾=“Ÿ¬=‰›}=ˆo#=ˆâ5=”ež=‘™D=l»=­Ú€=¬\=—½{=œ„=ú=|ã°=x1=·j=‹ë=—´=œ{a=‹.Š=£g]=ËAö>>„>Iú¡>–>™ d>ƒæ@>\ &>¬€=Â8=“ý¾=¡€-=¤::=‰m)=‘,Ð=¢®[=œô¶=—&&=µ=ÕÞ>M[n>jòq>€§Û>s4>T>n=¹iª=¢=»þé=å¥o=ÅIö=Ÿñ£=1=È=ŸY=<ó=6¦=”—Ê=wZ¦=yNn=„Ô¾=…Òö=‰Ó)=˜™Ë=µ=­ºÛ=¦ü=›‹š=•C§=ƒ‰=—1¸=šâ7=…¿y=„N6=Žqý=‘Øs=™$=• =VŸ=§_“=§.‹=©/Î=˜¹=ƒd=Šo=§ï¨=Û’í=ëÈ >ù>í>õÖ>‡g=ý ¬=ñ‘=è‹~=ëC¨>tj> ¡}=ÿ~=ó¡=á«Å=О=¿ZB=¼°8=·¹=ÇP=‘˜§=—k’=œ]j=²³•=Ô¨º>-=ö¦=ç<=È{e=¸W{=ÔQ=äž>·)> ÷ >7&>°³>æÁ>ñq=óü=ÊòÂ=Èo=ÇÁÜ=÷Eý> Ä>¶À>¯í>¬B> N> -$n=Ô$+=ºº{=Ÿ¤”=ÉN=©¹]=ÌÌ™=ô&>E> ¦>p=ñMn=´ê=ª£ -=¢-ç=Ý0¶=ùØ`>bÙ©>†|M>ÅÄÙ>¿>¸MÝ>… >a¯>u'> d@>à2> ,å>ß>¼> öÙ=Ýgñ=Òu=°’`=´ò@=ºÅ=ÁÓ=ÂÈÿ=¶³„=¶+ =¹7í=¨ýã=•¢ =­„­=¶Kþ=wÇ=¹o>,>SÄð>¬ >§WH>«Ü#>‘ ^>‚-€>=gA>@×â>DXÜ>.­Ñ>%ÉÞ=ém)=Î=“4=‹5=…¡=‘w„=ñ=Õ&=xæ=”JH=©ëü=¸žs=ÂÒ=¾ -°=¨d=©/Œ=ª``=œ?±=“Ö|=“O=˜ù•=¸§°=Î[==áê$=åO=êÑ>Ñ> -j>C>º>'|=Ü=δ=ÝŽÇ=ô"†>qõ>W‡>ü>J<>ya=¶À=¥ú’=ˆó½=ŒˆX=¨=²‚=¼À=Ûjô=ØÁ=×®è=Ìx»=Çw2=—b=“²h=§6‡=œÒ@=•*6=ŸZ#=¢ð`=Ò€=“«ï=ª§[=²ì]=¸Ê=ã=ö5^>ñ>q’>p=êqÔ=Ûö=ËÒs=ÔG=üŒ=ù=öžB=Ô_Å=Æ5Ÿ=ÿZn> -Êt>(ñê>$Z!>À¾=îÇŸ=ݤ”>>PL>¤îÔ>©ë>«ž>¨Dš>§Üð>¦vZ>£ì°>¡’]>gh¶>>ø¸=é9Â>Âe>3Åa>/î¿>+%<>Ò8=ù£=¡q=¡u¥=£¾ü=ÃÞè=Òþð>|ê>!Þ¯>,ØØ>çý=ö(=º -¾=§˜Æ=¥Œ.=žP=‰™=Œô¸=‘i(=§XW=©N9=³pf=žj=€ò =¤¨=³1>®¨>û_>;L>6…>3g=ú¼ -=Û°=…y3=ŽËl=úq=¥hå=¨ =¢fy=¦#=¬¢E=¤¶=œÍÌ=–}=•Úr=–K«=™;‚=š²®=›#É=››=ž5Í=š¥Q=™B=¢Nž=¦ØŸ=Åu8=Ýï>&Æ>/2 >8á >¸ =ý=¤­=›y"=È=’r_=•S&=•ÈÔ=•rT=’H„=–”k=œg= ?Ã=£0=’¯ =‰â‰=<=qþ=šSµ=U=”¦}=°Ñ=ðÓÍ>ú>P Ÿ>\Á>5f”>æ>=Ó›”=¨Å=“3È=– =œ[Å=°²=šþ =ˆ<¡=“J¯=–+Ì=‡aI=‹î½=O‘=—J=šQ=˜(S=“§=†èÝ=˜-¦=¡W”=ÅþÎ=ÚÐè>œë>«R>!žT>.Š¡>1c>>3‹•>‘â=Ëâm=®œi= ÔÈ=Ž°V=™ =±¥=¤U©=›žÿ=©Gð=­,"=°jµ=¦Xó=œ,–=£:²=¢¾“=œð = ™=¤æ™=žl„=œ˜L=ŽWl=ˆ!÷=|a=™ß&=ªe’=¯ØT=øB>t0>Jö>-Ä>'á§> 'q=ç;M=Êiè=§šA=‹5~=3ñ=‰¦Ž=‘ƒ*=›=ª²g=´¥:>9Ùp>w¤ê>Ë¡—>Ð>Ò„Ð>–U&>xk½=¶\¼=¡ÏM=‹ÓK=¡%{=¹yD>9m>©c$?Ñã?“û?%:>öÖ…>»B0>So=É…3=•u=©Ü™=Ðßf>²µ>³6w>ù­×?µ? ªÞ>á­>Žsy> {ò=©•ß=žqï=ÏŸ=Ǻ>=½ú=¾‡d=»;=ŸJs=œoT=™9U=ÝØ=†±O=Šßâ=Œ×t=@ü=Ž:š=Œ®K=4z=™‡c=®YÛ=ÅG=Ô.‡> ëY>!¢Î>Æ>1^=èñ6=žØ=’”1=‹î=“ŒŸ=šê=•5=¼=ÓÑ=…qª=‡Nä=˜Íþ=šjñ=‡½=’2= JP=Yå=ŒyÅ=’ á=•2=›¥‡=lg=4V=Õ?=îØ„> O)> …=> ñI=Ò` =¿ä-=Ÿ–Y=Ÿ¬=ž–==€la=ƒ§c=Œãø=±¿Ý=ÄÓK=ã¶ä=ÛÏZ=Ç"=¯Æº=¢Yb=$f=™˜=ù¹= ­‰=«j=•ó?= ;=Š„ø=‘¿s=“”®=¦ãK=¦±F=3L=³h¯=à Ë=«8ë=£ò=“¶â=»;W=×µ>=ô¬y=óÎð=ÝÌp=Ä@=±`—=´n§= É=ôHW=ù‰Ì=úkÕ=êÆæ=ÓÐ<=o­=š7Ë=¤=µi=‡˜ø=¢gÒ=¬R%=´^ª=‡M8=†®=“»Ã=êÍ=‹zâ=ŒÆ‹=’—Â=¨×û=ž¨`=•˜_=—Ñœ=™eÒ=œ¾3=ž±=¡EA=»÷<=ÁÊä=Ë)Œ=·Ä½=©Ì»=Œ‘r=“Ý6=°ÑÄ=ŸB =’ûM=–ù=“>==-=šW= gÌ=œxœ=þO=¢My=•›:=Ž»¶=—Bó=—¿m=–YZ=uû=]=›zx=š‡ð=™d¼=–(†=” Ú=€Íæ=ŒÀù=ŸyØ=}ï=‹„=…»6=‹àt=“aì=—×â=–Ñ–=‰ñ§=‹å=‹?¸=Ž*;=!æ=mO=È=“nû=ŒéÒ=œ=™óŒ=”=ŽHÙ=–‰&=”­¯=‡Û =…*=ƒ|$=º¶y=¾´Ø=Â=-=§K™=˜•B=³,{=¦¥>=‹“j=••ü=™ü«=˜=‘9==–?•=’ Æ=Å=—Ä-=— ®=“U =—<»=—©ˆ=GÏ=äÁ=ŒJ=š±«=EI=™$×=‘Ðí=‹}ù=§Ñ=©ò=¡Ó=¥G=§âd=Ÿ±=›…f=–Õ=—§=—ék=¢+ˆ=œ,‚=”LB=•Üá=”ò¾=›¯ä=Ÿ¢©=¢Ñ7=˜M¿=—÷í=Ÿœ=›0Û=˜„*=J =j=ˆI=¥yÅ=©Ò#=Á©=Æ°Ê=͆[=ÊTŒ=Í8¦=Ö€õ=Õ²¾=ÕºD=ì# =ëÖš=ʯž=ª” =Žmó= ] =w©=•´Ò=“¼.=’×=œM=¢oå=¯R=•h=í$=¦µ¥=°óÔ=¾ï¨=ßs†=ä›L=ÒèÍ=¼`Ì=§•ù=£áE=žˆ=’=…o=NØ=·`==“ø=”W»=•‘¶=˜v†=šÊ>=ž;±=’¶=‘s›=›¾=š_=˜F€=¥=šªV=·Yë=³öC=¶GN=øú>x©>Ù“þ@f\²@“ó/@¸Ø•@¬ÇY@¢½ò?û<“? âZ>m±>ðšg?D¦Y@®À¼@ÚOºA &OAñŸ@êV]@gb?ál}>#ùY=ÑŒþ=¼ïY=¦ü=ŸL=›‰ç=µ¤¤=¥H=HP=›‹Ï=nx=¡“=«]Ä=²z^=¬‰ê=´)“=ÂW„=Ɇþ=Ö#®>'•â>.”>>7/‚>&W%>LÂ=ð^>=ñxq=òDZ>®>Û>8>=]=óüÝ=ÂÏ=¸,K=«Ë -=±;=°©)=ª©Ý=´=¹œ=§i=©”=«˜w=©}=­7ä=½eZ=ÄÈj=ÉËÉ=ËÄ=ç·*>~¶>¿8È?{?åˆc@ 7@%v¦@ s˜?í¹?ƒòÏ>õâ>(Ý=Îææ=ºµ˜=ŸëE=¯Kª=³!=±º=¤öM=œ £=¶¨>òØ>U]œ? PÖ?æÈÆ@CY™@:¥@@2½?Ê:Ò?‡¶À>E=âÎ^=Çë=ÝÆ6>ü>3Ð >.½÷>$ò[> ¿#=ÖßÁ=´"¶=ºD=¸…’=´aÖ=ÄNÖ=×hK>B*>kµ>ÅS‰@vÄ@×sA)Š/A$S8Aqº@σ¢@Cß°?bå*>!>‘Ã=äO~=üË=ÿÁ2=ô[>!Jà><®v>`H:>R7j>;éË=ñ˱=Ä]=šì=¨ðå=³üÐ=ª…m=¼„¦=Ø?³>£C??NŸù@%BÎ@Q]Š@nLj@Sü@#£?ºÍõ>Óõï>öv=êÌ,=Ô¼=Äv@=§¡ˆ=£ñ·=œvb=¦â=®g¸=º³þ=·3Ù=¶È=Ä[²=ºÄi=°…=ªÚ=¢=’^1=—¾s=™ßê==›7¸=™ŸC=­³Á=¨Ïë=•Ï2=˜óÍ=™¯=™…P=¥ù¯=°ï×=¡×w=¡;•=Ÿ_—=¥‰=¦<è=¡'!=©Ül=°ˆœ=šã¯=¦9‚=¸=¾ÆO=·)ô=•¦à=–ò=™¬N=¾­(> $>0(•>C•B>@->/ñl=õ«=¾H¶=¥ö=Ÿ ¶=šÆ=”4 =‘\Â=ä-=±ù³=¸Uº=¢|€=Ÿ\¯=4=¢‡4=±a¶=ĶÐ=°Vú=­¦º=®¼•=¦‘ï=£È¶=—«È=¥+â=³d]>Á>:…À>e¸%>Z¨(>F®>N=Ñz=®C =Œ™—=‘7=—“A=§Q=¢Ym=kÄ=– €=—U‰=ˆ =“æ=›h=³9=³¯=³h=¬*¼=¨Ÿp=¡ŽD=—“=“ìb=ž<¨=•äD=hÃ=°#=¡Œ=‚¦—=’~Á=”F=‘ÕÑ=˜“î=› ×=—k=¥Aœ=²ä = Ø©= ¦=¢l~=£â>= N=‘µ=¦E =´x=ÕÛí>eä>°fõ?;d?€œÕ?·Òp?ר¸?Ù¼^?ħG?‹~Û?OOß>Áä£>qÕ[=ÏÿN=§k=¤«ô=¤CÂ=¶ók=¹7¢=±Æ‹=­ÿ¿=­£Õ=³T,=±=¯•Î=¡»ã=¯—‡=Â>1û>G)>W‰W>7*>#=°&=Ÿ´*=–¾ =âƒ>2˜>"—p>8X> :a=ïÖ'=±~=ž \= @=™-±=—À=¤³B=n˜=—þ=ƒ“$=”h=¯iv=¡íl=­9=Í)ò>a/>6Öœ>\'Î>_sù>`í5>Mðu>Ò3?`x@Lîß@Yžq@^¼?@5©ð@1þ? –>d7†=Èë=ßû=ÌÜî=ÂtÏ=«n8=§†Ö=¤š£=¡ìG=žª0=šêd=³Î¾=¼³=Éäù=ßÅX=ê¨;=÷dÔ=ÏîQ=¶zM=œ =™ôÙ=—b2=­‚x=¨ñ±=¢M6=Kº=‘‰½=™f7= ö=˜>=‡ih=”Í=¢Í =Þ>þ¨>Ó•>#˜>ï´=áfù=Ž¾ž=‹²=Žä¾=–g5=–àM=”-—=˜û"=™èÛ=•Ç>=–d8=–ÛR=•ä—=–~Í=•ãZ= 5»= ïs=¡ÌÝ=§Ùî=¨µ¬=©Dá=Ÿ÷=© Ð=ÅÿY=ÂG=ÀÀ=¿n=Ãrö=Ãj°=­æ¿=ã5`>æ¬>@n‚>;z>>6†#> mÜ=ì -É=³³==²û‚=·]j=Àµ =³ûE=ªéq=›¸ô=™Øç=˜pŒ=—,=žS=º¡=ŽŠq=–c]=›”Õ= úH=¦ëM=¬ É=ººr=¿·ê=Æ–ì=ðÈÂ>P‹>RÌ >‰¡>Œ›ž>„qÐ>5/¿> P=¶bþ=³¾š=°T>=­")=¶ë¤=¼ÑÔ=¿¾W=Ámˆ=Á/d=j†=‹=“ŽÔ=Îï=’}=”+3=«†…=£Ž=‘žŠ=Ÿc0= Ÿ«=žŸ=£ =¨Z~=²iá=•|5=Œ Ú=Œ‚=žMø=¨ÎÚ=¶O=»?=½|=¹ÍŠ=¹,=ºªS=âŠù=þ“> „ú>MM=ñjã=ÏCž=£_Q=ž¤Ð=œeü=˜j=˜¾³=š*T=—) =™(±=¥_=›¬ñ=˜í=‘>û=•.ž=¢ =Ä}ì=ÏpÎ=ÒÊ.=ÑãŒ=̬ =Å{=«?0=©kÁ=¦½v=œ%á=¥ÖÐ=ª~=˜Ý~=›ß®=“­=™²å=9=¡L|=›ìã=©ÖÄ=¸Ñ=•…Õ=¹£=§bV> å>:Nœ>t×*>Š"ô>…Y>w/ù>=…î>5T“>4D¨>Eé§>C–§>9kš>n/=÷æÀ=¹`¤=Â~ =¼ÀL=¤Íh=˜X==‘×=ˆ—=“þ =˜ž'=šR=°‘€=·´=·*=Ò*>>m >Ä­>íù©?Ýo>æúÏ>Á?->M†G>ß=°ôû=¡’²=§m=¨)V=Ÿ4ú=ŒÅ®=ƒ¡x=•1Ï=š¼S= (Ÿ=¯UH=ð§~>$S#>³(2>Âvc>ÑÀ>ý~>ûJ—>õÂ>ÌÒ^>¬J[>ŒŒÚ=¶¥ð= Ü«=“l=›*z=¥Hˆ=«¯=°* =ºð=Áés=Á4¸=Ä)K=Äö–=»S]=Âk¯=Å<"=£=¥bM=¤Øœ=‰×÷=™@Y=¥‹ê=¢ á=œþï=œ§Þ=¼ˆÌ=´ê•=¯Q»=±#¡=¦€E=  Å=›eä==‰EŽ=—ðX=œ;^= Ñ=­HŽ=ªxõ=©ý9=ª=„=¥qx=£3±=œ"þ=ª©Î=° s=žÛ=ŸÙÆ=ŸÒ=•ÑÒ=·©¾=ʆ„=ÑáI=Îå=ÌÅq=Ï^(=½ÚÀ=»‹{=Ís=Ü|6=Þ…=Õ*;=½ÑA=­S=•<í=ž6 =°'=Úœp>#*>þÉ>ýÖ> -à -=ìÉ=©d&=¡}Y=ŸK\=- -=–t3=•°Ý=—9^=‹k´=™bí=®qQ=šÂB=™µ=˜ú=£w«=ž§„=™Õ¤= “È=›_`=—mz=®Dþ=·“=Æõ > -dR>^Ó>%`&>$~¶> æ¼=ðcŠ=¹BÁ=©iš=§ ¸=¾ó >3–u>d6Æ>‰¤ý>‰Ý>xàa>6@t=ÊeË=¢Z–=¥é˜=œK =“!¯=ˆ1ã=›'B=¨UÓ=¹ Õ>+>YA!>„¥f>€S8>\ß>>6̽=»0­=¨!=›;Ì=³JW=¥T•=žkÂ=ª¬=²hh=¶7=±!=°Ÿf=­þ¤=¢Â†=–ºÜ=‘n[=Ž'é=±Ìõ=¼:=Â>$=ßë2=á²=Ý Ò=¹1 =«6=›ßF=žÕ=›‡ƒ=˜q•=šV¹==µ= °›=¤rã=%á=£}=«ˆÈ=£=žõ=–@¨=–¾m=‹ÿ=¥ýž=’Ô=˜í¨=¤N¿=‰Žp=‹S§=ð¡= [=·:˜=È}M=ÁîÊ=±nÙ=¦gð=¢ÄÆ=ŸCñ=—€)=†›j=”…±=—$h=•”¸=«ß=¨ª=ÜO=°$:=£ÿ=—šÝ=œÇÍ=•%r=0=š!&=îçÑ>š¨>l¦>·> Ç=Ü”°=¯¾Í=£þ=ž=ˆâþ=ŒÜw=•˜ =‹z<=ŽXë=“€5=‘;3=”a|=”ñ=ˆv=•1ï=–äˆ=—¨_=’R>=¼t=‘=›¶Ÿ=ªƒm=¼˜>0>x™>"u«>.l=ó·+=Â&“=–as=ª ½=åƒå>1$¼>…±ü>tA>¸t>a›ˆ>/Z=¯Ì=…º=‹y=H_=‰‹=‹vß=½=˜`þ=Ÿó˜=£Õ3=¦y=‚^‹=ŽO=Ÿ‡:=¿H³> dn>QÞ[>nÖM>j´”>Pm˜> (Ù=§ä7=RÄ=‰d=™nÐ=“?ˆ=Š•_=–’B=Ž?=ˆ½¨=Ž§Å=‰ÕÂ=¡=™=Ét¶=Éb¹=¼\=®ÖÚ=«<Ï=©ôa=³XÊ=ªÚj=£¾®=›Ú=²v=®ž=—ï‹=£+Ð=N=“Ï=”iH=žqO= ˜,=ˆÒK=šFG=ŸH =›˜_=­'=¦âº=˜òº=¤3Ñ=¤V«=¢à«=˜$=§p‰=±ªÇ=ÀŠ¼=Ã÷F=Å#Y=ƈú=£y$=’ë=‰õ=•x£=¦X¼=®³‡=©V=Éa¿=Ül -=ì?Y=ØËY=ξñ=ÁÁ¸=ž¾„=¢òÐ=Ízà>0ƒì?4íÙ?‡Ø}?·H@vÓ@òy?ÿ­?­„?FÔ?Q³>c/5>ã=Ã0*=£|L=§;“=¦Ï:=§ó<=·ó%=²ÙÅ=²ì}=¼þ=°7Õ=´¥Ë=Á3¢=òMX>†># ->Žüë>¼Ý.>Ú A>ö?›Ÿã@Ͻ†ANÈ´A°ìŠA«PÌANAfüx@®·r?ù¼ý>N> _>E~×>t>£Ëå>™±>‹¶«>f[,>?Û=Ë9Æ=®/]=Æa=¯É½=¨“Ç=¹e¤=¹=±h8=¨·=•Â$=¢ƒ=­†Ø=¬U»>;>U°W>›–>¡_ø>”èw>U=ÔÕ=¢[©=´©=¡Ø-=”ºà=½(Ã=ûW>j#Û>mQÈ>iúý>R4%>KN>%uê>R2e>{áZ>t²">càð>,¤ß=å׬=»¯:=µÈ·=æÇ=¨Q*=°æî= ¦$= U2==™†=”–"=–Áþ=˜œØ=ŽÓS=’”Ì=—|¼=¢&‚=¡Õ½=¡m¤=žè=¥˜×=ªy=¦ê=˜¯×=©÷î=¤J=›âè=ªð= É =Ÿ^]=§¨¨=¢,=£Øs=¥eš=¢’=‘ñ¨=™°´=Ä<5=̘ë=Èš=¿äü=©úY=¦!ò=¢³%=žtÙ=ž¤v=š–=˜#*=ž=“!I=’=šaa=›°I=™]=œ†(=»Ç-=¢<‘=›éÒ= s(=žã =ËAâ=õ›™> ¶Ü>´€=þç„=íî=¸:/=¼Â]=½‡ˆ=°DC=°_b=´ËK=¶‚¶= =›Ø%=šÆ = ‘=Œ9=…_ =ƒ³“=šG,=Ÿ¦„=£;4=§•½=°šÆ=®eˆ=³o=Ѥk>Äy>¦ë> Á>=Ö£ä=¸"‡=¬*w=°]R> -{É>W¦<>×^¡>â@V>ݪÓ>ÉEˆ>ÅU_>ÖÉñ>厺>í»õ>»³5>}rH=æk[=œã&=˜ÆÖ=™H= !=‚¿“=‘†æ=¢MÞ=›]÷=™_E=‘éœ=ŠO}=€=ˆ½à=…]^=…—/=a8p=‘à=¸p~=½y7=·a`=±Ö)=­’|=¤:Ã=¤”=Ÿw´=š=ª@_=¥("=›L=‘æ=™Bâ=ŸA=¤ŽQ=›åg=˜ Ó=”\ÿ=ˆ‡=™{@=çã=‹?;=©B{=ºv9=¶Ö=¨=¬Ùå=¹Õ=¸Gm=£Ç=ªØ…=žBà=”§â=•˜=©va=£7=•’y=™Ô®=¦j„=¯•=¶š =ŸCk=©þ²=¯…í=­Pø=Š¿>È¥>Ò4j?ÂÒ|@s‡r@œD`@µ[%@äUà@»[h@ -u@‚gÙ@Ù8?†"í><Í$=ÓŠâ=ÂœG=¼Ü½=´ºŸ=¤)#=¤Þ'=¡E£=›x§=ˆŠ=““É=’n=Šn¿=˜—†=ŽÝ}=‹Ów=‘Av=¦7N=¢(±=¢>;=­ag=¬i†=Å>ð=àT;=õjE=ß ­=Ï}`=Àë$=–Ý%=ž’ã=žŸ=›•N=†í=-g=¥‹Y= M=©Ô’=ŸÆÉ=–Ã0=‹k=žlÎ=™'’=–JÛ=™Éñ=¥ë0=¥ºq=¤p=¡Šj=¸µy=àìè>Ñû>ÜÌ=þ E=ëÍ=Õ<¤=¹†k=º=¨z=ÔE=¥¸Ï=›XÝ=’HE=‰Š=¢5Å=³=™=”ä=ü6=¡Ó=¦‰‰=œê‘=¥ D=³=±®Ž=˜ž =”"t=ž.õ=¡×z=˜š=ž×¥=–œ=“@=’ =’?œ=§\–=¸÷=³R=°""=°fh=¨û==‰}§=ž–W=–¶=óM= S=¦=Z=¡ï=ÐÎ=”ôŽ=­9=Ë“ä=ïÛ©>_õ>Y=â =µ¢ç=—Zâ=•-=‘{+=2m= fX=˜D&=›íŒ=žÓ­=ƒŸŸ=–\®=“î)=Žœ(=¡Wà=¨®=…ãË=`ÕA=‹¢3=ŒFp=“W1=˜Ñ´= Þ=¢AÖ=¯lh=µtP=± –=¥2»=œ%g=“K¶=<õ=“ =Œý =’[ò=¬(=“—{= L=±í¿=Ä#u=Ëɉ=®å=™°=“º¿=Œy1=ʨ=˜Â=¡E'=r¡=„°[=„Fÿ=Š›=vÊb=  Æ=¬>ð= ‹=‘]Y=›òÅ=˜‘¬=ë-=¹Àv=·Ô{=°°°=§$ =«Í÷=™ôD=“è=†ÞM=í =¢T=³G–=ÃÌ =Ï.Ô=ê:º=êtª=é$Æ=éék=©¿j=Z=™Ã`=œW=k=—½€=“& =‰¿€=…U\=™6©=šìD=‘ðé=Š-•=‘=ý@=Œãò=†¿•=‘Sg=÷M=—S;=«*û=»[?=ãm¥=ýÅ…>»r=Ï´ë=Ç{*=¤Kt=€n+=†Õ6=”y=™½…=šþí=¿m>(ì>?¡m>>/v>9?ˆ>(±ß>œç>1òË>LªÞ>]RÙ>I'ñ> |C=êo÷=œ¼ç=ŽB¥=¨2=@=™ªŒ=†ôÇ=ƒqØ=“ò0=¢tù=ˆl=y<7=r†‘=‚1=–S}=ƒ˜ñ=}Æ=‡®¨=ð4=‚·=¡=¨dR=“\[=Ž¸=’x>=£Q–=¤ý=—m=t=’³ä=¦øx=«c½=”—g=—HÓ=™u=™üC=•º0=œ¬‡=žÍ¡=ˆK2=ˆEH=‘ßG=œHD=š&ç=•H=žD§=¢4Ÿ=‰Ž=†ê=•F=¥z´=’ª¤=Ÿãà=žx =™´=²D=µ*~=¸G^=ºT¥>,'3>•ó?W¨?7ÓË?]ðÍ?OlO?ã/>ÎÙª=ûâO=¯Yp= >$=žš<=™3=› -í=„|q=x„;=N’=žw=“KÛ=n=‹Qý=ƒë’=œX=§Ø¥=—sV=‰‚‡=™ÚW=¨ï]=‘ò=›Š²=²>W˜>‹æ³?o(ô?¯{c?Ôš?Íßn?Ž4?Pß>£(Æ?wæ?˜¥Ý?Ãï?ÔÖ3?»C?•¼w>¸ù…>N”°>ˆ>0#T>Q‡U>YUŠ>RØ>6´*>¸n>?ºí>|,Q>ؘJ?T?¼÷>øÈ¢>¿læ>\Ñ5=ØA=¼¡=ÓÏÞ=ª•Î=‹=á=…F*=‘¦Ñ= Ï7=•!Þ=éô=£ªÛ=©²ï=±Æ«=¶Â)=äÿ=ü¥n=ÝK=ÙÃü=Ò÷ú=ºø=¾Gº=ÔyG=ù -Ö>SÃÃ>‹iÔ>¸‘Õ>º!€>¶û4>‘*ˆ>%Ðï=ÆÞË=}Ðã=„?Ž=•@Ÿ=›öÈ=‰,=†YS=‰”s=ˆ‘@=ýŒ=­¡Ù=¥Ë¼= ·Ç=£Ïþ=¥¥˜=«cø=œíë=‰*)=Œ2=£_=¡&»=—„R=k=™•d=[=¢Ç¶=¢u#=•¥=«ò=”¾K=¡Ïs=Ÿ_÷= [¢=¢Å!=ŒXw=šÊ¡=¦>È=§8L=–p==ŽÒÖ=X¥=ž$=—‡ã=žQË=zDÁ=ŠZh=¡â=¬@[=«çh=ƒª~=,=œNü=’Å3=pg=“‚=¤ûž=œú<=›•ø=µEp=•• -=šGÅ=˜"t=Œñ3=¾ò=Ÿÿ=™<Õ=–„U=–‘<=ŽyÓ=¨WR=°=Äpr=É¿"=Æ© =ÁÑ=È!€=ÂÇ=ºÃ¶=§±²=©ºC=©Ê =ž]=–Œƒ=­~[=¹Œè=Ä"w=ÊDï=è¡=ùí> -‰’>ÒP> -çh=íÆ0=Êë‘=Á¶ÿ=Îà^=Ék=Ð-=õ¡_>Ž=þ;ä=ôÀ¯=ã6q=¶©–=Ÿ[~=¨ =h=•F=šÔU=£Ä3=¸‚=³çÁ=élÝ=ÿÉ>^xo>Êz;?’»‰@CÄ@oR­@¯n@šMè@uÄO@BY^?»Å6?b+Ò>yÖ=áÏ=Îè=¶;Ç=®=¯5=®PŽ=u=³K=ÐFÜ=ÒÁÖ=Ù®=åY=ìÅ:=Î=¿¼= ÿä=«=¾t=ÂR;=ÚŽ.=Øå¼=Ö&@=Üâ´=â¬=Ó"õ=Ö‰!=Ò0Ô=²v=‘y¬=«‘w=¶DV=›I®=–ö¾=”wÞ=š -Å=›EÔ=¢Æ,=¦É=ãŃ=øµ>ðû>ÍO>T=ä%g=²ð—=º»t=¹Ï=ƒŒ=x…=‡`d=‡ÖÈ=ˆ”÷=uQ=’o -=qò=„î=ø=¢=‰„=…w=‚ - -=ƒf4=€ÈØ=‡Ú=ŒVƒ=«á?=±”Õ=½œ=¶õŽ=³j>> ²>£R>é»>4‚±>,.«>"ÒÐ>î©=ïå=»f¢=²à±=£‰Ë=›Žm=3£=’ز=—ÁÆ=žç=¢€0=‘´=–µÊ= «Ð=œyÚ=›ê=œ‹\=™¬Ð=’Ra=•ˆÖ=¥}E=ž8=•ît=!T=‹…s=’C{= 3<>-ùÌ>Bÿ}>v€Œ>bÃ>N&Õ>j=÷·p=à0=“y=ˆ¶=§›&=Ï_t>Ž(>.»&>,«´>(Þ>»d> £Œ>&¸>t#>&.ì>!7>?%=êÅÀ=Ôž,=š0=¼í…=Þty=êB=î§ý=ón=ò¸É=ñ"ƒ=ÿì!> -iÜ=ÚƤ=½ð=©6Ë=«Dc=¿Ñè=ËÓc=ÚCØ=òì>w>(¾A>.¾“>$Ä=>ι=áaµ=½²=2k=œ}Ê=%0=˜àˆ=Ÿžª=«0Þ=žb=Ž8 =²“=Ã+r>¸Z>(H>]÷>[7Y>W=:> wR>‚,=Å“z=½ð=® =¢³Õ=–î=›Y=œñ= Àß= V=¦¬º=­†=¶h=£«Ô=™- =Ÿß=ž_z=¨aD=¨# =§Ï÷=ª¦¨=¨¶°=¶+¡=‘_>Ô§>%Öž>Mö¬>DV>:{»> =¨=ü~ =™‡ª=˜S=¯P=œÞÚ=«DR=ŸŒd=›=’D=™/È=©]x=“y¯=‚H =Ÿ!=«ƒ =¿q=°øG=’z=ж&>ô;>N¾%>f™>o:>Tö>> êø=Ö¬À=™æ¾=ªÑC=±,=žÝ=xÜ=›ÿ=¥»Æ=¯‚*=›¸ë=– Ï=º­I=º— =³Œ#=£Nâ=˜À;=ôÕÝ>Äå>¹¢,>ÙZC? S?òé>þŸñ>–¿>l¯@>F,´>FP>E£v>1±‹>"¸ò>”X>"È>”Ð>ÞLM? OJ?Èî>ñ `>dÍ^>$:=“BL=£–f=ÀM=®Qç=¤#=•ÃU=”K)=¡q,=¡‘¿=£¥ö=¬'K=¯W=·GY=¶~k=ª”Û=Í›ë>ŒÎ>B,ª>a'ë>Z5>OJ >šÞ=øÒ–=±€P=£ò‹=á= =¡9µ=¦¶x=Ÿ¤€=™Ïÿ=¤b=§#á=‹|Ý=šäT=ÅO!=ž©'=xO=T‰=¨Z?=¯ey=ª@+= -9=§R=ªÈ=ÔYf=õ(>B®>GØ’>R ~>:ü­>/0%=Þ !=Δ=µ/¿=¹Ù†=ÄU=éJ¦=óo8>6Ÿ>M†>À’Þ?Þ =@:_ˆA ÷ÇAAŽÖA0bAn×±AIŸPA³@§o?dz >œ=ó‹Í=ç€H=Ù‹=ÓªÕ=ÏËð=Çi,=ɵå=Ù,=ä½=ð~R> ±“>ê‹>Z>Saô>D=T>+„ƒ>ªä=¶×˜=£”Î=¢<=ª™…=¹.c=¤Æ=œi =™‘°=–ùÞ=’b™=Ÿðr=«ÁØ=¦E0=£jO=–ð×=žIW=¬=‰¦=г=Ý?=Ó™=¬J>=Àu6=ØæÒ>Š¨>%d‡>Ô> Ç=ñG@=סÖ=Ãã«=§}Ä=¥T<=©èì=±±=¾H}=¥ÌÁ=›1À=šÂ="“=¨&ˆ=žUÅ=• =Ÿöp=Ÿâ˜=‰ðÖ=—”X=«…J=«}3=ªlŒ=œ~=žñ¾=¨ Ä=¢¯<=ž·^=˜â!=˜¸=œ…»=žk= ûÜ=µô8=Àßb=Ñæ}=Òg=Õ¬=ÑŠY=Íyp=´Íz=¹>UL> ÀK>ü>\=þ%Ÿ=£þš=¢Xô=§}9=’^Ð=dâ=…üb=‡p=Pq=>š=ŽŸE=•@®=˜@=‰¾'=‘†'=¨æÃ=–Á=‡DA=˜ž=˜Ð=‰±k=“^í=ŸØ¬=¯ -=³ð.=Ú£=×á±=Ñwó=Ï%=Î=ÂïÔ=ɤC=á=¬=ËD=¶”=¾ --=¼"=Ž«=p=ˆ÷ý=€ ›=zÀ=²/m=».=Îæ -=ͤ·=˽C=¦wö=œXý= =ˆ5y=çF=‰A’=†²x=†¦ =í=™ßì=‘=‡j®=–P¦=‘UÝ=5=ˆœ=‡}=¡+=ŸÅ›=ŒËÒ=nÛ=SÒ=•X=•¸h=ŽÌð=“þ=œkx=Ž+L=†Cª=*=Ÿ¿d=¤4=¯‚=·‹µ=—ÀÚ=— -Ò=°C,=¬†3=§Ÿ·=¡ =ž–E=’›á=‡®¬=sk{=…Þ=Šêz=†~W=†™\=†Ð=–;‚= Ã=‘z5=—>‚=¬}=·u(=Â&j=¸6ë=¶­Ð=Å!Ç=±w·=™ó€=Ü=Ÿ7=œ =Ÿú=¦ü'=Ž­Z=…V4=‚Ð^=Œ0=žíÈ= 5=››¹=¢%= iB=›–=ž=¡óý=ºÎ =½ôð=¾#W=È>€=Жš=Æ=Ç%Ñ=Ù,|=×ù=×Í=à±}=äöö=Û3Ì=ÔE¦=Ëw=¹ -N=³Nè=¥¼©=¥žk=§g=ÒˆÜ=çú>Θ>§‚>Š.=ôÌ=Úž0=°—Ô=£¤f=ˆô=‡—=…S‘=î=ŽêO=˜‘=—ÑW=˜¥=Ÿ8)=žú£=™=˜nÇ=–ââ=‡š¿=„µö=ˆ =…R~=ƒ="ô=¤XÒ=ŸWÔ=ž!=š0â=”= tv=žXW=—’¼=‹&=ƒøy=€ÈO=šÖj=—$t=’>€=Œ S=‰‚f=ŒåO=iä=› =‰^ê=€=™t÷=˜é5=”Ëg=œ È=¡=ªZ›=¦DO=™ã&=ºs=ÐbÈ>Ób>!Âû>-m—>Á> ¼x=¤ ?=:=¨ýn=¦mL=¤Þœ=™1=›h=¬)õ=®Â³=°yý=£ÖŠ=Ÿx.=”= å5=« =šÅê=›'=¥O­=§)Ž=§²=— ‚=›°i=µÉ =¬H]=¤Vø>Dã>!79>i‰2>hD>g>J©4>7=Ã>‡~=øÂY=ínJ=În¤=É!-=Ã,ñ=ÊÛÏ=ϲ)=Â@ð=Úñ1>íˆ>¼ðâ?ýá@l½@šh@æZû@Ú‰@Ò¬¹@rsy@2›•?'‹»>ƒÄ=Ë­é=¸•¦=¯R¶=œU=§>‰=¬ÀÊ=•æ=—'¢=š4n=¦lÑ=¬PÑ=•ƒÅ=“Š=,«=¬r=·áœ=£Iï=f¢=’z =™ûÁ=›ý¢=¡ E=§ý=±U*=¢f=ž[Š=—þ…=š0=å¾=¬õ£=³¨6=ƨ=½kN=´ˆR=¾B¤=ÇP=ñƒ«>" >GrÏ>N à>E1í>”î=æ&<=¡ø=“¶5=•4‰=œk9=žXN=Ÿým=Ej=•Ë=«M¬=¥M›=¡×X=­)=¶‡'=ÆšŽ=À¤‹=½>L= ¾¿=£–Þ=¦‰û=§’®=¥Kû=‘=¯n_=Óª>O;>j§>ƒDP>oŸ>\=ßå)=¶ÖQ=Žy=šä=¢îk=•¼¤=™ƒÕ=£V=™ˆ=•ú¿=­¯É=±…}=·M³=¶‘ú=¶òE=½Ý×>U´>K…’>cS8>cÔä>HÁˆ>Aë=ÊÝÆ=®¥9=¦Áe=—í«=› Ž=ž5F=ªŸ=« -½=¬‹a=œ°’=—;ÿ=¢Î‰=¡—Š= ,ë=¸¢=Åî{=îW>!0G>LõX>@ìü>7ÕÇ>7ß=Þ¼=šÉ?=©c =«<Ó=®ñ==©·=§ž=¤² =£–;=¢V£=žƒ=œñ½=žÓ›= nf=£M\=‘,=´=—ß=šÖÑ=ž/p=·m+=Íp=úØv>D…N>d¢õ>{¤z>a½è>ApÀ=Ú£ =°QŠ=¨WÎ>¶w>+Pý>{1>}ˆ>r>2[>U=¢8]=¤­ë=¨ +=©d6=¦6=”~ÿ=˜a:=šÇƒ=’¶=—)Ù=§»#=•·=µ°=Ã>Ä>Ðü>lk0>‹%¨>‘-à>‹i4>‚·c>u*Þ>_n}>Q›8>50=õ¾7=²#=Œr=ŽâV=“éA=žÔ3=¡•I=œ¥·=š¨=˜vß=šË=˜@…=æú= ©=«ÂN=ºTÖ=Ô•p=øÞ=æm6=ßëz=ÚßH=µž=—¬=¢’=ŸÕ~=˜”=’áë=”Û=‚wÈ=ŒÒ =š²T=–ç-=”Jò=“6Ã=F=kì¬=›)=–×=Þ¬=˜Z=žý=ªžˆ=™ô1=Œ”ˆ=ŸÐ=Ùß=–'Ê=§Âh=²wÒ=Åÿ´=Èfç=ʉU=¯¶ï=ªOI=©J†=©©==ªÐë=¥n—=¡©3=;ä=¡y=¡ö¡=œæº=šv€=˜==èŒ=Ÿ£ =»€„>ºì>7Ôz>ƒGÚ>|$>rœv>/ò,>¶æ=ÈP=¸žH=·Z =ønO>)j/>\N«>«>±’Ä>¨j¤>„e>[šh=¥æt=§«Ç=«Vˆ=¢¤T=oá=“KQ=™6,=¶=¯[ê=°þ“=´-î>f>d,>jØæ>}3ä>„7¹>b¶V>0ó÷=Ì•,=°=§à®=ž×Þ=³Ü=Áô=­ =¨àÙ=¢Ó˜=¥g{=¢ŒZ=”\,=§ôƒ=µ©=¹NÍ=»ðw=ÂpÐ>>ó>e¼ó>’‹<>Ž ƒ>Š1ê>$é…>h=ëY>eQ>\p€>êªÕ@‘þ1@æÚ}A5.ÎAN³Ap5UAjŽ”AYŽ'A%ã A\|@âϯ?+0M>ÚÀ—> -Z*=ܲõ=Ù\v=é×(=ÒdA=ɼ‹=â.ò=ôWN>‰¸=þcb=ûG¢=÷E =ÕM“>3êÓ>S`>I„©>AN<=ä,Y=ĉÓ=!=²=Ÿ™=¥G =©¢Õ=¬£w=š,À=›2=›~o=žZ<=Ÿ4õ=ž¨=žÎû=*û=Mù=˜†É= _,=¤•À=œDú=ŽÄÍ=£òë=Å-ô>xÉ>FFZ>cz&>[ED>@ãõ>%Ò³=ª,³=¡Œq=°=¤š9=›´³=†XV=šiÔ=§¦ë=’ðO=“/_=”°#=§q=àþ=Œ„o=œE.= ý¸=œ€Ñ=¢B=¨¹=óŠ:>%>5â>P>§Ž>úŠ=ÔÀ<=²àî=¢€°=œ,_=—M=¥c=¥±h=¥u.=žÇ&=¦½=º·¹=·#Þ=´‡`=®`Ð=¤â= ë=‚¿…=ŠO’=”R=’ùa=’Ðü=‘a =v<=’†D=›Û4=•1Œ=‘8.=—´”=¥Ub=µˆ&=”Öº='l=k=­¥=”d'= }=¯ˆC=¶ŒÛ=¢ù=›Ãë=”ö‚=“˜Î=—¹È=žA=œQå=•Ü©=ƒ4E=™Q=¡©«=•ðÿ=“#Ò=‘¡5=ƒÊs=Œ;^=˜§Ó=§ +=««ÿ=³=ê1x>4_>(Y¬>L¬>`3o>[Ë&>@Ó&>(8Ö=Ö§®=Òï=Óæ¦>9.¿>säú>°jÐ>º`>³³õ>„Ü“>5Ì=û˜ =Ÿƒ<=–`@=V³=ž³=š;"=’TÛ=’pù=™ ï=«Xˆ=¼´=È£=âä`> °>bË>Hvi>Ho¶>HfÐ> í´=ð@Ò=¹rO=®©[=§¯q=›ÊI=Í=r=S±=™¥=™íj=¢À¸=¦ÿ…=ªòw=ž^= mP=£WI=¯u!=¬ÿ=¥Ó¶=¢o=¢œ=£²–=š$¦=˜´r=£é×=ª²ó=¯áM=¿–ˆ=¶äE=®ëë=§(Î=ªæ=­R =›æ=Ÿ€=¨iZ=—X)=—=ž‡š=–4¹=”QÆ=šÞ;=œrð=9=¡¬Ö=žAF=š‹(=>=•H3=šK=‡ŒK=:w=—±~=˜»1=¨6=§[W=Ï7=‰ ~=“¤Ü=“Ð=’v¯=ˆxv=•E@=œ[=Ž{=Rw=’ª=–• =“²=Ø=WŒ=Wü=!=ˆEé=ˆKI=ˆ¤–=”`Ü=“²'=…È·=‘¹ç=”)=‹4w=˜“â= X=¢áN=¡ÚC=¡¾‹=¦Ž=Ú’Ë>¶>Cð>%ñ>0ƒ>†Ë)>Œ¸x>A>ƒ_t>\hN>ar=µô½= =ª÷%=ª‚,=¨vñ=¢ÿ9=™»ù=“Ö=‡Ló=ˆz‡=‘áŽ=ê$ù>š¹> ‰>$H=ú^=ÐXÈ=Ž°÷=–í= Þé=‰¤=™~i=³¬>b>Áí>Æ>D“> m€=ÖŠÝ=׊=ÙÛ =ßdN=Ø…ü=ØF=á!¤=×ô"=Ío=°H=¨e£=£ìá=¥ÖÂ=›Fi=“´=‘d=–x=›šÄ=´(= U¤=Ž@=¥ž®=ž j=—Ak=‹@/=«=b{=”½G=™h= F~=‡NÖ=‹±=–ys=mÞµ=mž‹={[Ü=tt=”v9=šì€=¤™ð= Kâ=‹ =‹mÝ=’Dô=¤Ì=ŸõS=ž”Æ=£".=’¤-=‹j -=†hÈ=”ëü=›‚‚=¡1Ñ=£ç=¡—=‘ú¯==t$=‚4=‘}¬=Í=‚H=”¬ =Ÿ"=‘ $=ž5=¤Í¡=‘@ª=—ÂÅ=œqü=¬™Ç=¡{B=—Ý…=ªÕ=–mÆ=œkx=¡€=ªžš=¯þÞ==¡=Š²Ö=‡qò=–> =ô =¤qg=¨%Â=š.y=‹£ó=¤>u=ļn=åú=üÿü=àô?=Ãjæ=³×-=®JÂ=©7Ê=¦º]=ǘÎ=ì×Y>=÷Å÷=èz=Ô#¥=·sÀ=š&V=•w±=–o²=˜… =ŠªJ=d=•Œú=¬Ñ#=°nt=±r -=œWm=!=ž=¤=Ÿ¤= ˜Ð=£Iä=¸î=ÃÊÿ=ÏÒz=Ü‘2=Ôþ¦=ÏÑm>¶ƒ>è>]„> =ã5$=Æ^Ù=‘¬R=—:¾=šÌÒ=…¢×=˜Nr=¦Çé=§í7=œž=”ë=ŸRÞ=£Ð=§8„=­­|=¸›1=½r;=¤X=¨Ú=®œ¢=Ãjr>¸~>³p??³ë@œ–q@ÔL¹@Ýít@À÷°@›˜?øÐO? ¨€=û1—=º:=¶ð=¶bþ=¶Ló=£)ß=¢ºÔ=®Cç=Äí==Áf×=­’Æ=­v|=©ÇÞ= _‰=²= ?=Ž’T=ŸìÌ= àk=¡r*=›ZP=™»¥=š£=L|=˜zž=£K=™€=š$=›àæ=”Ûˆ=“v¤=’=“W™=ÎF=üT=¢5Û=£#Â=ž==ˆ‚K=“ŠO=–ÑZ=”î†=”ù=–‡R=œL&=Œs=Yß=¤b=¨>=ƒ¦â=w¦=›= s,=£È=¤õ -=¡Œ©=› =—Î=¢6ö=¨Ù¦=¦Ö}=˜®æ=’ Ê=¡·C=¡æ-=£ í=žþ=•?Ô=È*=‰%Ž=‹¬Î=“Q=•n=Ÿùi=Èo=-¥=ÙÓ=êl=ó!ý=ÔF=Ô=²Ÿ„=™øY=’æ¶=†Ÿ= =—ß={a= ¯=¢Šq=¢‡:=žcO=‹.<=Œš‰=¥‘Æ=ŠŒv=ˆ=Æ=Žm/=¦¥ì=¢±‘=š¹Ú=²†ï=­Ÿí=§ÒÏ=Ƥ=Ñ“ =Ü®L=î‘=Ïe=»°P=­~=¦9æ=¤øš=¥¾T=›!.=š—= 5{=¢‘‚=ždM=›úH=ø=Ž«Ê=Œ«(=‡_û=™àF=¢ã%=šãd=™¥^=— œ=(=—µ=œî;=¥ö²=œ_=’[=ˆp=˜¿=“ôÐ=¾À=—ìu=”³=”Ñ =¯®=›?q=‘b£=™¦¯=N~=Œ_×=‹ñU=”=•Šb=•=9=¯Š==¨èO=£œ±=±Ç“=³v=³K_=«×ò=•FÀ=“9É=ªœ&=¢F=«ƒ=Â=Ë=Í&å=Ê!­=Áɉ=Ô=È`&=¼’[=¨Šà= È’=žÄü=¤Q)=ø?=‘åN=¢gÝ=œäÛ=¡ä=¥0k=±xÌ=¥¬Â=žÕ=»Ã>/¥0>Ž)Á?ƒ‘?){ ?-*Ì?]Ó>ÅM>~T†=é=¡‹}=™ìN=˜c=¼ð­>yà>†^?QŽ?–A?»gø?Ûo?¹zÒ?‹};?5mí>@ðÑ=û7=¤‡Ð=œSê=´0=±¹´=™¢=x”=‘_=°û‰=ŽÉ³=ä›I>#/>ƒÁ>«ÑW>Ǹ2>ä0P>´æ>••,>j¾ã=è$L=¿=¤›=©}¤=ž”=˜œ—=•=Ç=±Hý=°op=ž - -=¢ÓS=§©R=©©‚=¤l=š)Æ=žÃ-=ËtÛ=¯"I=Ã~'=òUg=öÆO=ðX=ç)==éôÂ=â/§=á×>=î–s=åÇñ>êZ>p{U>ÁÈ:>ÍÑ—>Ðj°>¬ë“>g5°>:Ë >vwþ? î]?7\s?dC…?_Ó6?<Áý?*Â>¾ç >–ÿ~>ƒ•:> …>M2>3ŒD>§ =Ù:v=óa!> %Ù>`L>qG> Ë>*\Ä>lP>Å“ ?J†q@—õ•@ñ]¦AnÔA 9J@ß(!@§ÙD@Nl8A µ;A!FA0XÍA,U^@ú–"@±óm@B©j?ÞÒ;?{$Z>ž @=ù¡ß=õN=é;=΀v=Â_B=¼ñM=¶›r=³lz=´9è=»ÄÈ=Ø5h=ä!=ó(=þ -q=íÎl=è?¿=ସ=Ï[=ÂÆ^=¸m‘=°º2=¹vV=¿ì=Ç=c=²]ï=¤¼‡= :+=©‘=¢íÖ= º¨=;G=’=š `=p²=Ïå=”?¤=šC=7$= B =ƒp=Š"ƒ=§]¦=¯K=®õ½=¦Úð=ÖQ[=Ƙh=»‘ =»4²=·¶a=¥$ =†ä«=—ø§=Ž™=‰æ1=£Ø=˜p=™ž= Yð=ˆ•=¨,‘=ÀPb=·•%=¾9=³{=ŸSu=®(=Ÿ€Y=”)®=•×o=žrÐ=­äÐ=È=Ã=»_§=°« =ªÁ¶=²ªÎ=­Ù%=Ÿ‘j=Žªk=Ÿ›X=ªbù=«ée=§]=Œ$%=–=®G0=›¤Å=­ùÔ=´ 7= ÿ=·ÇS=Ãߥ=ÎX˜=Òt¬=¾õÆ=·ûù=µ<>8ØÔ?p?q¬?Þ4Y?ôö?ìï´?Í`…?AíÕ>ð‹T>“D×>³ì§>Ålü>Å)`>¹6M>[¨Ð>-=Åù¥=œñö=§;ß=¡ôe= Ö=ªŸ"=´Æ=¾pb=É[¼=ËPÙ=»ñ=«Ú“=™ð=œÂa=šÑ£=’{ë=©=M=œ„š=Ÿ Ü=¼™­=™Âô= qp=§› =•ï=¥ôÇ=§€Ì=¢±¦=°ZÜ=²hó=¯"×=šŸ9=¦,=¯þN=»Å=̾=º0A=¸ã&=Äš!=µÜ&=¬¦„=¬I¼=Ťˆ=Ù&¬>Ëæ>LƒÕ>1ê>™›#>©s¼>¿.>÷…¼?¦!@,Ê.@½øˆ@@í¸9@×~@Œ·@!+o?› O>*O=ÑíQ=±›%=¥I)=¿N¾=²Z÷=§ËÈ=œ?=Æo=¢õ=¤ÚK=›P$=—Õ@=ï6=©’õ=Á…½=¬?}=³Ææ=º£=¨!l=˜Î0=­G=Ã)ü=£0%=¢(æ=›~±=Š‰ù=¡º$=žgê=™a=ãœ=£Ö-=¦½=© ±=§ÐÓ=®=çÇ=ŒÆ=`=¯öå=¾ê?=¾®ª=‡ñ=‰#=˜}Ÿ=ºcÆ=ÀpO=°Ï±=¡ D=˜Ë=£è›=®Ñ=·†Z=²H¸=Ÿ½=¦ç=µì=¬­†=«Æ=¬Ié=¶Ô=Ÿë£=¿é=–2€=f=†m=Ž„D=ž9=¾ßN=©›Ÿ=¤‰x= Q=˜Šú=ŸÌU=¦äf=«ñ!=¨Ey=«ØX=¶r=ÈT=ª­ê=¿Ì=Ãb=¿r>=¬M=±‹”=ÁŒ/=ÛƘ=ÄŽU=Åa=½ò¶=¡)A= kÓ=‘­U=ˆšÒ=ˆŸ=‹†=†[=5R=¯¢º=˜¥6=š=¢È=±Èb=©à=£üõ=›é=–øN=£oÁ=›èY=‰ni=¶6k=³fÒ=«†¶=£úî=¢žé=š'®=›ù=£¦H= c7=¡sº=œæ=Œ.Ï=‡šq=˜-=¡Ü=¤G=¯§=®s=§‚Œ=¢Œz=…ùš=Ž=–’n=›‘ü=œ!=—׃=Û€=—ç¤=©þ=Ç™æ=áÛ§=þÞ=ê€o=Ïç=Ǥ =Ò y=äç=ÌŸã=°î7=ªÄ=¤j=žqy=["=ˆé=¢eÊ=¤Ð9=¡Ož=¦Êw=¦Áþ=¦¦b=”t=“ªƒ=¤ç|=å->uŽl?ȼ@*,8@H9*@T¶@H§ö@ -‘?qj¤>žÕr=úœ>"~>[.S>}ß>¼Ô>uU6>@’L>Oï=á)Z=¥Ê=˜¬Ñ=•ƒ„=™o)= Éì=¦$=™O=Žîn=‹w-=‘õ^=ý=”Yó= w=«±â=£¶f=£_9=¤=«*J=ÿÌ=¡~R=——2=™NÓ= ±'=›žB=“ˆk=¸=²=©Þ‘=ž½=ž·=—V=’üe=×z=©í¡=Ÿ~ï= Ä=¶ò¿= /Ø=žVL=–f"=ˆx=Ç=¬v¯=·QÃ=¼Íµ=²©x=¹(Ð=­ºÜ=£Áª=¡Î=£ñy=­œa=¶:f=Å+¤>k>lÊ¢?™•þ@7²@øÖA–êAÂA§F@§a@"€?ßH>+6È=Ù i=ǧ­=ÐÝÎ=×OÅ=ãÎÙ=çÎß=Á®=¯¤r=¥· =Ãñ=£*„=Ÿ#´=œ±ƒ=¡›(=¬üí=«·=±‹Î=³B=²6ø=™£g=–¡½=žß=§À©=£èi=»P&=ÓÌ]>•ø=ýø=áÂ=Ê >=³UÝ=™°°=‹¥=Šd=Ž'=ªêF=™Ðs=+?=¯9=Œ}ó=“Sf=ŒÛö=ƒáU=}Ð==‡€A=•ù=˜¯=›¦Œ=“|´=-=” Ì=”y@=–Û"=Œ°t=Ÿ -!=¾aë=Þ%F>™ê=ñ ž>úL> O=ë¯ -=û¶}=΋=¹õ=¸‹=¯ú=¦Eô= &]=˜bH=—„=‡u=Ä"=’cî=ŒV“=†ÌZ=†ÝÀ=†”i=‹ê¯=—ç´=¡’=“nø=Š:¬=“º–=˜,¯=ª‡ù=¯Ïn=ª‰ž=ºéÐ=¡¹G=”ä==’é.=“EÙ=œ–W=šUø= b=«ÉÖ=¦¦c=­å[=®äÒ=±Y¨=¥Wi=žkŒ=ž+î=®‘­=É=ÝW=ÚÍÆ=Äœl=·¤’=¥ 1=O=‡f¢=†å0=‡=–íÝ=©i=©|=¤…5=ŸÕX=”{= =˜·Ì=z:.=f†Ø=ƒWæ=Œ˜2=‚¬:=‰ñ¨=›ô=­ì=©¦“=¨Ú -=±r¨=ˆ¨8=¿»ä=ݼ7=à@€=ñ,*=×3‰=³1 -=Í_=†²-=—Þ=¤U=šƒ8=Š>=u»I=¡€˜=±WI= -=¿Æ=ˆ¢½=qª-=”šk=<.=€Æ=¡g=˜øà=—º=ƒWŽ=~ÇÅ=cF=Œwæ=Ž -=Šäœ=‡¥=ŠÏŽ=±-q=²Ó¥=¯¸=¿Âp>^>A&ñ>h >uν>}~È>„Ǹ>…hC>…aÜ>‚`î>q¹î>8w;=ì½=×ô>NL>!#n?ž?Ī=@q¢ˆ@Ž@›vŒ@…5„@>ÞÞ?½±ß>þžÀ>P=Ïñ¿=À=½Ür=ÁÓl=Ò×­=ÃD=Ķh=Ï-=Õ -…=ÏæÇ=²Ím=­…#=›Ù—=“ý=ŠÌO=±¤Ø=¢Ö=‹ë_=‚‘_=¨7b=Än^=Ï4Ý=ÎFr=Âáß=¹ -=Ÿ£ú=¬V =ª›=žì=¥ˆÎ=Æ$Û=ÑÙy=ÞñÙ=Ù$´=ÂË=¾ô=µ: =¾î=Óäœ=ü0+> éñ>ºL>¿A=ßV=áÙã> - +>2ÄB>]a>n"÷>qîz>Bß>ky=íFO=áNÝ=Öì=Ú¸r=ìYÚ>+ª>¿T>\XS>…='?LP?‹){@6@Q@Qãý@gý9@P^ë@d? ül?íú>7ÅÍ=öád>ìñ>Ã8>Æ=õ¥=è…°=Ñû=°+B=ŸZ0=œyÞ=œˆä=›x=‡Bk=‹É§=”•=™ê=¦8ô=°Ÿ”=´ª]=ª4U=¦)â=˜š=›­÷=ªš=ʹP=ðŒg>/®>R=¸>v ->d†>lHî>RÑó=È‚è=¸˜X=£·e=¦—=£“=›|=›šr=ª(§=¦€¾=§öK=£nÀ=›Á=žËE=žÜà=§Mó=§úO=š$=™¢S=¦OÍ=ž3=Š×÷=§g@=Á«(=®w=¦v=©Ü¿=½Hø>,“Ñ>6kÎ>H¼±>=!>2AŽ>]ú=ß®>º¤>'Ó.>‰ov>ƒæ{>mêÜ>@© > =ÊŸã=ª?=”5ÿ=’›‰=ºÑ=Ÿä_=£Þ²= Ùo=£˜Å>•ü>ïä>®Œ>¸‘=ÈêŠ=Àœ=Ì!)=ÖòÉ=øÁó>(­ÿ>SÒ…>w„>‚Ó>F~â>6Âs=èœZ=ÐÓõ=ÒI=ž§O= Ù=¤Ÿ =¦^=͉¤=í¯u>U§>ˆoP>Àpå>»âÛ>·¶ >yOé>P#Ì=¬ß~=¡³%=Œb=—M=¬p&=É>í=Úuï=Û£û=Ý%Ì=ÓM`=ÍŸl=¼‘m=¸Î=³Xí=±ä =¯³Ž=–ža=”x½=õ¼=”¥Î=¡É‚=«t=µÍ=ÐÆé=Ý-Â>Hq>[þw>”Û°>Ž§[>‚‡û>=”J>9Ò=ÌŸî=»`%=±ZÉ=©­g=“Þ=›ÌÅ=©km=¥zH=¡qŠ=´ =·ò=¾û=Áï!=Èšî> ´#>8$–>— ,>° ž>¸¯Š>¯‰È>fUA>0èÖ=Ÿ `=šh=˜Jœ=½{k=ÇÖÕ=ü#9> ù¹>:º >H¨>\%ç>_׺>aì>×w?+ð`@$ŸC@eË@µKã@«h€@£0µ@Õöé?,@?æªÛ@ZFù@®òÿ@ªØ@§±@Q-i@,H>Z>L/=Ç°2=Ìe=Ѧç=ØÌØ=Þ—>(ç>)ŽÇ>-k>Ÿ=âz¾=Ç©Æ=½q”=¦ÔI= B–= -L=–*–=¡[Ý=ž•›=~D=¯Ê±=¸â>!~>QpN>«þ>·‘X>Ã)L>“u]>€ —=ÅË”=´6ä=¡Ý&=§´³=°S=©dv=¥FÅ=±¹¨=´m·=¾%G=Áu=ÇU‰=Û=î Î=ƃ=»CÀ=Î\¬=ÍQ=Í>§=ÎL =Ïê=³yÔ=©H@=Ùî¸>ñŠ>u@3>ˆ1`>™è>Œó÷>…á•>kî=×ñ©= "'=¥¯¶=­Ù=¤üî=¢eK=¾óI=ÇÞ®=á”Õ=Ù³¯=Æèª=°?±=Ÿ1­=…ÎÆ=z¡=ˆ –=™Ôk=Äd>CS>$Žç>\¬W>p%Õ>P®>7UŠ=¾Ú[=«aM=•ë$=¶V,=Ä£¥=îˆ/>˜n>ˆ&>Šž>›½q>p>ˆå>6E=ÛW=žâš=žÇ¶=FA=›|‡=šwt=Š<=Šû=´=ŠL±=}u@=‡d@=rK= è]=¦ð}=³ß˜=·G=¼`Ú=ÃS=ÊGÕ=¸N„=µ¥ž=جá> Ñä>P y>r3>†\w>…">ƒ³õ>Y5!>T@À>Ié¼>7;Œ>'•ë=Éxš=§“Š=Îì=Ÿ!=¢ß=¤:†=¤„Æ=zº6=g²m=œA=šA^=“ )=€ß=ξ=“Èw=”a=Ÿn=¡Ý#=¦¢õ=¨u•=ª§—=œe=™þŠ=˜ž=–³ =•æ=š -=¢‡=„ -À=~é4=•Aâ=šƒ=¦'Ë=ßuH>-Ÿ>Qð>_S>\–»>Hæ>"}Q=ÕÃû=Ž§Ý=¤TÃ=¦Xƒ=—®7=“ÊR=N=“j¡=–Ç-=¤ï=¢ÉÅ=“Œ‚=™G= wŽ=Ñ=Ô´>2Wp>9O2>=jj>+žV>V+=ØÌ=µ¨1=ëÆ=û÷Š>×c>Vg>J*=ý~Ð=ì(¥=É?Z=ã9þ>Eô>y>%­è>yv> ä> ê> rò> ˆJ>áÕ>Ž=¿G-=¯{…=™[M=–61=V­=Œ3=‰Ô¥=ˆ2W=‰ÿT=‘=Ê=‹‰ô=„/½=®MJ=Àß=·“=µÙI=°’=ž±=Œ.P=“L=–Fì=’"=‘¦é=’=” r=”L.=†ìˆ=‡;Å=–…°=Ú=ˆø"={tÉ=p=ê=Ž¬¡=ƒ†l=‡ô¶=ŽË”=Ùø=,±=˜1q=Žò=pØg=y1é=O)=‘Gï=”u4=Œ¸ý=—åÛ=¨ýÆ=ž>=™gÑ=˜ìè=šwD=¢¥~=™u%=Ž­j=–ù =š=€ÓÍ=‡½=•b£=œÕd=£==Šù=‹IÓ=ˆ³3=…C=Ž¹u=’í=ŒD=î¾=ka=–ÄÐ=œ¯0= Ö£=¢”º=­ž`=­”=¬ -Ó=”fO=ˆ×=«¯þ=­Àt=ªS2=Èw–=ê·>ó|>.}”>/Û‰>*øA>!ÇL>3E¬>>†D>JãP>JsT>;+ñ>ù =²g^=¸Ds=¹ç=³1X=ƈ4=ôê«>+³å>NtÏ>i1>bu²>)§+>ù=µ¶Ì=ªí =¦¿Ã=­£ù=©ì$=ž&=›ÜÄ=š²=I=Ôo=™V=›=Ÿ=[=šXL=—TÖ=©{=ìÐ=‘¨$=ŒÎM=‰?“=‰Bµ=#¾=™I‰=•4=‘ï=žö1=£È=Äw=ŽÏñ=Š¯w=•­h=›–K=œ·¾=›x†=š9p=VG=‡Ð=/z=’¿=™pŒ=|=¤Ñ`=©(·=ªª1=œñ¯=¡×=°.F=©Z©=¤@f=‘=—#=ÎÔ@>&>q[>}Å,>Õƒ>K›È>%¡=¹uì=¦©i=œº=±4i=«LŒ=–n}=Ž¬Š=‡ˆ‹=“›™=ŸÎh=ßš=ÄÄ=¡ž¼=­(=±VÝ=©åŽ=§· =¤3R=£ÈÙ=¢Ü:=¥¢%=£üŒ=š\©=¥Ì›=°„q>E#>)Y >¡²>­â>»¿T>˜zR>ˆ@â=ÙÀÂ=¹I=~/=šÕ=¦ÿd=“VW=ŽuT=„I=…Éœ=†ï£=˜jÚ=–f{=…Ó¬=Œ)=’^C=¨ž=·Æ=ïº=•œÓ=žïQ=™Ø7=•¦=€;¡=†=‘QV=”«&=—¾‘=œJø=™CT=’ÞÎ=“м=”í¡=§ÿ=£ÝN=‰… =“y==Æ=9Ü=‹/=”â9=š„=¢LS=`š=‰à=˜=›Ê‹=¢ÏU=–Ó‚=‘r¬=™g¼=˜Gb=”Ê)=“X=’I(=‘¡º=’ý=Ü=‰•S=‘E—=õ”>#,K>–V±>ªH>½d>£÷P> =é9½=Ć3=šH‡=™_M=š±ü=¯¯=§3:=œ=£jC=¤f =‰^L=Œzœ=’1X=Ÿ}9=£ =‘ëF=‘¹…=n‹=ê=ŽÀù=S©=‘Ï =˜ o=£§Ú=ªÖ¹>B„>s]>Ô)>Úcê>ß >Ž£á>_õ =•Iû=’=‹ ¥=žáõ=Ÿœt=™º6=œÙ=ž.=¥ú¹=§e‹=¤ð)=™à¾=ŽYi=ž=Ÿ'=jQ=”H=š` =šï=·=µX8=µ3Ò=´Xý>¤>më±?X÷?ræ?À ?ÕMš?Ý©?èIÀ?Õ{á?»£ ?’¸r?xi>9‰%>À=­Ô§=®–Ñ=®ÇA=¨wå=¢†µ=š<ø=©{=®ƒa=§rˆ=§À=¨ü;=§lf=§b=µL.=³¬Š=°àó=äæé>M>:#n>G².>[ ä>}Nµ>Œ8à>éd?à(ô@hŒA… ÖA«NAÇÝ÷AµzpA›•úA%(ß@×c¬?1ðÝ?éÇ>›jO>, =ÿÜ5=൅=Ë ‰=°Dñ=À7¾=ÁJÒ=¬äÑ=¬››=«Î=Ò´Ù=Ø~=½/=·/=°Až= ÔÄ= Â_=²ž+=¯Ê=¬ßF=±Y´=°L?=¥Ž™=ïº_>ªÅ>È<Ë>ßx >òØî>Ùœ\>Å®è> f0=òd.=š`1=£Î=©-=œæÝ=ŸÚ¶=©7O= áÿ=œGq=’Ž=•ŒD=›Î^=£@»=¦Þ“=¡³=£~½=¦ð8=¡Ý‡=ŸD=” =’À=‘Q,=•u.=—j=œƒÎ=’Á3=†¿›=¡Wè=¦ î=œ¦=“² =‹iÃ=‰¼=‰(Ï=Š@Â=šÝ‰=¨ Ñ=ÅkÈ=Ï2ë=ã<­=Þ4œ=Û‡=½hi=³½5=¡Ú=˜C=“m=ø{=žp!=žƒÖ=ž$=œök=“¾Ë=—l==œ=–ª=”Zˆ=‘‚Ü=ëê=Šº°=¬=±~=¼ =•ö÷=›ïÒ=‘šÚ=šÅ=°³=å¨>ü>Ããj>ÏÝ>á4>謚>êÃ>â&1?ü?øû?7k[?4˜? -s‚>Òz>˜ch>[{c>EÚ>#Xy=þŠ=Ò1E=–þ0=™YÇ= h9=”Ýj=‘A˜=¡–}=¤õ =©pŠ=!-=£WÝ=Óï>û>BÏ>'Æ>*ä>,éº>ƒV>žI>>é¡–>ò©³?µ >®9Ž>‡==ò±=Ô°l=±â£=«ÄJ=§æy=Ÿm®=£Bé=¥s=Æp®=Ä[1=º[=½ =½l½=¨=¢=«YK=°€=¤ -¡=¤ÖÆ=º¯==µüq=±ÌÚ=´”•=³=°[§=Òú=ít½>¼±­?É¿Ò@`Fg@µßB@Î+•@Üÿ—@ÍŒ@½­É@«ã@ Z0@…ø8@>ÔK@xR>2œ,>Õ·=ÅY =²Pì=­@x=·e=¬9=¡jV=¦9=§ê­=¬‡=³—Â=··=“™=›V2=§­§=ŸY=šö=ŠN=“ý#=¥=—ôù=˜Â{=›ó?= ØÊ=£¢=ñ=™R}=•+Ã=¤’´=¨ëÛ=­I§=£6Y=›½\=y;=“¤4= l=Ÿ =ŸJË=¤pÍ=®-6=¸…>WJJ>„ÚH>³ú>¯6ë>ª>-7§>Ã|=©è|=¥ã=¤®9=¢ß=š3ô=”KÏ=’“=Šˆ=Ô!=˜å^=y2=¡¥=‘v=‚8=¨îÙ=¯ò½=¶÷=¦k =ž‰=’…I=™¾Œ=¢‚y=ü´‹>9„+>«™T>µ ->¹›U>¢Í>mfR=í$µ=ª @=œ&|=¢œ = dÆ=Ÿ{=œøô=œh9=›‚=¡;e=¦=¶¹ =³ ¦=±%û=ÎÓp=Àï=£^–=¨¢y=§%=“ÀÈ=š!Ì=Ÿ2Ã= (u=›èë=“/M=™S=œ,= “ì=£r|=¥·Ô=ŸX)=Ÿk¥=¡-!=“æ”=†«=–pª=—D=˜xd=ŒÔè=”!z=¥ºà=Œø·=†Ö›=™=‹œù=~‚={íJ=†` =—·Y=Ž=‘Y=›¤=£;=ª”M=‹í=Šût=‹¯Á=¥.¼=®~ø=³×­=©þQ=¢| =—¯é=˜Ð=›Œl=žàÖ=ž”Å=™ä—=™É=™ýÍ=‰\ =­=”ô=¥ã=©¯=¨`=–8*=‹º¦=”"ª=¹'=ŠiÁ=†Í=ŠÝn=˜?ï=œ‘ =ŸN=¤\é=çÒ>Å¢>•åì>°Þ/>Ù·P>²1>˜mƒ>(-Ü>%rq>"úå>fCó>\ ;>Hß>'Á=ü4 =žºG=¥éë=© Y=}=ë=x=¹ -=“t= =}»=›^À=£g­=‡Z…=’å™=‹E=‰Ûr=°•=ö~¢>j(k>ˆªñ>˜¥¯>9>†0u=é¯(=ÀÐ=Žxß=‹Ý‘=˜:…=·¨†=°¢ =­À+=¬M=¦bô=¡‘«=¤y=¦`š=¨#=¢J/=£ :=ª¬y=žb´=™å²=® [=°ö¦=³Ž=ªUÚ=«e=­öu=¶Šç=²û=é>‹¯X>öaÚ@,è,@9w!@G.”@"˶?û‘È?fÊ>šu&=×ÞÑ=ΞÓ=ÛD¸=úý>ч?· K@(Ô@B¨W@L@Y@@̃?õ'j?³w×?ƒ4i?AŸC=åÑ=ÑeR=ºô™=ôdO>™Æ_?*ª.?™c,?¯:±?¯“À?€Š/?>Tì=ò£=ÇÌ=šát=À=›:Ú=¯@b=¡Ck=[™=›Š›=œJ³=šxo=}Í=˜X=¢=‰'=Œ}Ï=“ãF=¤9È= ²*=Žpï=šmJ=¢sç=²À=·ÅŸ=¼p¦=ýøÚ=ü.G=úÕË=ä8]=â¼=åÖ+>YÆ>éF>5¥ç>iÇþ>6ò>c\>Tg">Fðš=Ün'=ÂƤ=¥$=§âD=¥Ä=ž ì=­Z¾=±]ê=©ïT=Œ™=—;Ý=¥™™=¦.T=¦›ð=š5~=›=œÙ=©"Ò=­†Z=°–â=§v=§a•=·Í=ת=úb>\Us>X¾O>Ukü>ET>"?=³³=“¥|=’´ƒ=šŸS=Î|_=åA>7´=þ5¾=ø¢ =Ô]®=«Ï»=‹‡=›‡=ÂÊ=TÜ=•ŠÒ=–¾X=•´‡=Ž¶=”Î=ª7Œ=¨BY=¦Ýu=©Ý=™ [=Ü=ŸË6=˜Þ=’ˆw=¡–Ï==–I=—{=‘£«=‡†3=œ”°=óú=‘Û=Šå=‰–'=–¯=œL^=ž¼=#ü=dr=‘O»=šg=‹YË=oîc=….=‡Çq=ˆ¬œ=“Ž}=”‹=‘bì=“;=”“'=’¼ÿ=“.=“âU=š$ =ŒyÅ=†Þ7=±««=Þĵ>y>ªò>0Ò=î€j=¡hè=ŸÈ_=«)=¤$¼=ŸÊ?=—~ =•r=’ =Š‰¾=ï=•M_=$¿=ÀŒ$=ت»=÷HZ=ñ‹³=ìæ=Åò<=³+X=žùs=ž÷=¤ó9=®LF=º¶+=±,U=ÌÃ=…Ó=‡8ã=’éÌ=ê˜=—Y‡=«ÍÈ=¯Fÿ=¶¨S=Ò!á>">%ái>+Ç>÷I>2 =¡^=–yì=Žüå=Ÿ^&=—q¸=-Á=Ÿ+v=žîA=œË=µh=œ_0=šeÐ=œ†=}Û=²'=´œb=¶&=¬¡U=ªð‘=ª]=¬-:=–‘h=›“Y=Ûêi>X>/¥0>ª >QD>Îi=¼'o=¬ 6=žñm=˜ž7=£'¡=«'ù=¯Ü:=Ÿƒˆ=ƒÂ=ŽÃJ=’jô=—!W=šôž=“âu=‰nŽ=Šö]=Œqƒ=Žs”=œU:=›^6=“¤ù=þÏ= G=ƒ‹Â=¤¶¦=Åbõ>€}>ø“>"Ús>(y9>•0=Þß=¬6Ñ=žý–=¥‰ÿ=Ó7}=áÒ®=å˜V=Ó‚ž=Ôå=Öx±=äÔ—=û£>w½=Òµ–=¼•‹=«ð7=¦Ñù=©>I=ª#=¨ÝÈ=±]¤=¶ ÿ=´œŸ=Ô3 =ðÈG>¦Â>UÝ> –‹=ÞÊ]=ÃLy=ªË2=Åžd=å“>å;>¤x>·Š>ÊÆ=ã÷Á=ç™#=î¯K=ÀúÖ=¶wz=®_=šÆÆ=˜öZ=˜s«=¡R/=˜¬== Z=‰Jð=§í+=ÌB>ë> ˆ>¥w>l =è¹;=Ʋ0=—vž=“6É=‘÷=¨=¼=É(r=ð2> -Wß> õŽ>Æì=·ªg=®Æö=©uý=Ž€â=æå= g=§É,=N^=Q=’È‚=’Òy=“§‚=¬²L=Ó?M=û(>½ó>÷B> ¤w>UÝT>£`>ÛØœ>שS>Áš >©žS=Ù×.=³¶f=”:™=žÄT=§¥ö>µÛØ>Å´J>Òµ>Üo®>›ê™>[ò_=ýv=á£n=Å]ð=“=•-<=Sy=q=$=”L’=™ül=Š!=•}c=›:=¡¢‘=¡ š=¢Ñ=§u=–ýt=—ÇV=¡_U=›Ñ‘=¦jø=¸±=§é,=œ({=ŽÅô=™ðÂ=¡bÓ=«Çï=§?-=Ÿ•I=š-¿=jØ=ž,"=žÇ=¡ºá=U=›]í(?½ß@{î@œl@²Rµ@¼íl@“r®@PKC@ Œ­=Ùè=¬S[=¥_=ˆg=t =žÃä=£m*=¤N‹=¨‘²=¦é–=¦©z=¡Fw=¸K=œÎ$=¥°2=xÝ=—Â,=¤ì= Â1=œ{¶=}©=•õ=•^W=•ÐÕ=˜Yâ=• B=‘±Ò=‘z=—º =¥½U=¢‰I= ‘{=ŸJs=í`=”H=œÚ=”ù\=’E=‘ÏJ=ž’=AÐ=ŠDS=§|¤=è=­*M=Ö€â=Äð=ÁÉs=Ä›²=¦ƒž=¦i­=¦½==“ÆA=‘Ùb=‘æ=Ÿ©L=—´=؇=‰$Î=¯Mª=·»Å=¢(¥=Ÿ˜@=£Ò0=¨±=¨'=¯rœ=¸Í:=§<=ôã>$Ô™>wŸv>‘9>œÂÉ>²>`1n>-o9=Ú -=ÆÎT=³÷=˜ü;=\ƒ=œbÛ=–=ð=·Y=©³ =Ÿ®Í=•l9=Ÿ“==¤.\=˜ù=ž—c=—²Ë=†š=©r?=«®Ø=§–Z=¦É:=¨2û=©¸Ù=£F=˜D=‘i =‹‚Y=gU=‘¶¨=“³=Œf×=¦=“vÜ=öv=››—=¦`>=œÔã=žL=Ÿ…Ì=¡ƒ1=¢7=šþ{=„xÃ=¢1=˜-ë=->=Ž!= Š=ªí`=‹à,= =º=¤¢Ç=™&]= ®$=¬Ó=º=¦¦=™‹E=ˆ´ -= rZ=‘L=‰]â=š0=˜cL=“=Ï=„Nz=—¨¸=œx4=¢§ò=§:÷=®Õk=¹}D=–=¤ÖÇ=±êh=¹Àª=°ò‘=Ÿ/b=îL=—%=š×á=šê¨=£ü§=¦îµ=§®=€}‹=¡E=­ŠÅ=¤`=¦=Ÿ“=” Q=®ÒÐ=  =‘sd=ä€=dÕ=¡GÞ=¬ÜÎ=¨ÀZ=”a«=‡ûI=••=¥# -=©½Ö=³‚=¦«‘=•[™=ð=—â€=¤£A=œ"c=Æ&=·¼Ø=®ËS=¢¡Ú=~=sÓ$=§9=”žÕ=ªCH=’íÓ=‰o7=ŽlZ=’Å¿=‹e`=†Æ‡=‰´=œñ=¡}w=Šxì=~Kª=}ßæ=……0=lï=¥IÉ=Ü<ª>#UÏ>0uß>%¸>0²>å|=©•G=‘=’{¼=ªÛ˜=¬úô=¨…ù=¦à_=”Lú=—»=Ÿ|m=¢þ¥=£ë=ž¿Ç=“¢=’*=ž}Ð=¥$ù=¡óæ=˜Öu=œ•=°±æ=°­=¥í€=ž8 =š&=Þë>©G>h>, ->ìŽ> øâ=ÿ¸&=¶úB=¼5ó=Å!=Èw=±‚ö=¼ð=ܤa=û8y>R„½?mö@KþçA*'tAsT†A—PA—q]AlšaA3Õ®@íÁî@ˆ?pÂß>*P’>?=ä‡Á=ΔI=´Þ:=È(=¶¯=²¬=´Îµ=—è4=‹ -x=Éh=¤‘Á=¶ý}=¥ìú=„†=¬‹è=°ƒ*=¬‰(=£[3=§âã=¤-=¨Ä=Á(N=‘Ü=’ÉG=¢fŽ=Èã=³üÝ=«¦–=¨Y=œÖ±=¥#=ªS=¥ÇŸ=›?Ï=‘Ä1=‘—&=¨Ò¡=šE=’E=˜.É=œ×"=› =œØð=©’=›é£=Uf=Õ=—Yñ=¯€=§à~= 6=¨$s==˜²S=¨Ë= ¦¾=XS=‡_=‹I…=ÉÈ>§§ù?*?aE?\ô¤?R?:Ô]?'5¢?K-G?`!‰?[]%?2•´>ц•>;=›èD=Ÿ‘—=–¼_=–Zö=¢Cà=§ <=©°½=®ª= Í^=·Ä=š'l= -=Š•¡=Ÿ ›=—±L=t‰¯=ÄW=–ni=G=†"b=˜ZŸ=—¢¬=¥V=ßé<>È>&è>®Š=ú«"=¿0=žUÅ=‡ò=‹ò«=„ÿt=“; =›ƒ“=›^ë=´=¸¢8=´Zu=ªŠâ=´aÅ=¼à`=Èûd=Ï2Œ=½± =± -Š=§Cª=“…=€¨=‚–=¢§ =¨³”=¢F=£J=¢H±=¤6t=µ`‹=ºeË=Õ»á=æ–=èÞ=îAŸ=ÌB©=›r£=žø=£Úg=ªa=y³Ï={U¤=ÒÉ=eª=–'P=ŸDz=¢.\=¨Lo=Œle=—‹=¯÷"=Üv>=àЈ=ß?N=Ô G=¼~=¸ÝA=Æwº=Î÷N=Ìl=Æœð=»ÞQ=¬Ñî=¥(:=¯H:=§Íä= ÞÁ=Ž8ÿ=‹ËÙ=¤oH=¡^H=Ìþ=è@6=ë½H=çœW=êù5=³Ó=B‡=–m=ž°Ý=°M²=®OØ=© G=²—=µmZ=ësŠ=ïêò=ÓØ=ñ¡t=Äâ§=´r=°H3=þÇ> -ü>vº>"‰>Ø=Ý8=ÈÌ<=¶Ô5=¡‰ =‘et=¡J¤=®Ž= SÚ=ƒ$=Ô=‰­=cúl=}yò=€x=r<=mÓz=h±E=^ã÷=‡Œ=¨{­=†ŽÖ=Ž‘*=/ò=‡J…=€ÝL=‰F™=ÎC=^ =¤Ê=ò=¡/Ã=«ns=¥þÃ=”¤=Š'û=ƒd–=dÔº=œ×¶=§ e=Ÿ“÷=š y=©j¯=ŸóÎ=™FÈ=‘8¤=~ÕS=ˆ¬X=º=§ƒW=ÔT©>ýï>QÜ> \ó=ÿ$ž=½ - -=™_ù=r§Ç=|Ð =f¡¦=ƒÑ=˜·=¡è{=—Ï'=²–ú=Ä -f=²b@=›Œ¯=„”`=ˆ=›T¹=—%Ñ=®$=¯Ñ=§É=¥—V=ž $=ŽÒ'=wG=uþ=•,å=‡¹J=’sR>‘x>F™®?SUÎ?•ü!?ij*?Èé|?œ©à?M–D>•Ša=þùÍ=®¦=³¹¶=–Œt=ÏÇ=–8\=’óÕ=έ„>‚>~>Ñ¡í?›å5?µæ?¾yË?«éª?lIÖ>ÏŒ>M]=Ã,ø=•’ô=¦ö²=LU=ª*r=¯Ô8=’ýç=‹Q5=šû= ‚d=šµ=Ž{ú=™¶’=•!2=‰‡O=†´“=}Äû=£Žö=³Bs=„¿=†"Õ=›Šk=˜D›=ˆ9=Ê=•ta=š°–=ߪ=”]î=™Û-=œÖ<=œ™¶=“Ý-=:Ø=³¹==«=®iP=¥O,> Ò¾=Ú‡€=ÜÂV>2ê>eE°?ŠM–@IÅK@·çK@ê¢J@æÁ@Ѳa@r”÷@kˆ>•D|>ôÃ=Ñ•d=ÅÕ´=¾ü·=³â=·a‘=³H=¯Œk=¼j=™Ò$=z=”ÀŸ=—’ù=ˆµ•=¥ˆs=¡¥=”`ð=š¨9=©=•Ñ°=¶¡;=µ˜v=Ÿ‰=Œ=•¤=¬=°š`=›ïu=¢tÖ=™>e=£p=„ªª=…¯r=œZ™=™ê•=˜¨ÿ=ÍE=x{û=£Ïr=¤Œÿ=‘.ì=˜-Ç=Ó6Ð=¬ŽC=ª“˜=¦øG=‹ò)=­Á:=¯~«= »ç=¨ç=¾ò4=¢ŽÌ=ˆõ’=šÜ=µ£J=”ÌA=Ž8=”J=–ßÍ=¤z=¨îk=˜ƒÕ=•`Þ=¨ú=¬Ö=þ,=šÃ=œ7„=ŽFâ={d%=“§=™QÖ= žA= Á‘=ªùj=®x=¢g=¥ÇÅ=¬í¥=Ÿ¸=šg=¨´â=®X=²Òg=¿"6=µÜJ=©]“=Š±‚=”ö=¡½Î=¤›ÿ=–d=Š¢„=†@=‹Ær=íq=•‰S=˜mÊ=§7ª=©©=¡šÕ=’k¥=‹Ò=‹‹ã=vûW=„—Þ=„B’=ŽÊ"=–6=™LÇ=yÁå=~b=†x¤=n›=„ô=×=“ŸÄ=‹ý=q$Z=^=qó=–æÊ=£Ío=¥%=§3=¬ää=¾xÛ=³è= ç=Á© =ØT“=Ì%Ø=É=ÊÝ;=ÉÞ*=ÉD–=À¿Ç=ª&*=q=ŒŸ>=—<ƒ= ?Ã=õ®=Šz=¬&=µeW=Ý9é=è ¢> ¬à>;£>¶=êŒò=ÔF=ÀyP=·—5=®=h=¬  =¬Y==§ô9=¤Žª=¦Ü:=¥ì$=¤¼ù=¥rL=‘©@=‹@o=Ä|€=Ì­À=æè»=ëûÕ=øÆ6=ÿOd>Êí=íqø=Ø7=«¡=¹å¶=® „=­_=Òÿj>F->A#à>c¯>Š_¡>‡Ac>„>7(ˆ>Òß=½÷X=±-»=£lå=¡!²=š =¡d`=¬2¤=™´=‹m=œ =¤óp=ÒýX=Þ,º>›‰>^O>*„>~3>À9=ò^×=ç7M=¦õ°=ž¶=‡g‘=Š=9‡=¢óâ=ªDÜ=’•+=~z=Žf_=•TÓ=n*Ú=j'Ÿ=›­½=õå=§F\=¦nV=£k®=¥^=¨­Ï=««T=«9ã=« >=¯Úý=É æ=åu>‰>(ñ>"Á°>(úÓ>-_P>AMl>CV>>Ÿž> -Vd=›×<=” ™=„Ü =™Ïo=¨C†=¯Ž{=²]N=Ÿ”=šÖ‰=‘ i=Ž_=‡ˆ=‹†Œ=’3d=•7#=•)o=¢0Í=£òJ=†==‡²È=É¡=“ðb=œ2-=œo=œº=¢NA=¥áZ>¢À> `–>)–>#þÀ>ë3>ü=ëLè=½-¹Â>F?>_\ê>CgJ>6¤ˆ=èC=Ðá‚=½i=¸1=¡µê=ô=™ýP=£CÏ=¨Å&=Ÿã=9D=Ÿ1ƒ=˜4…=€#O=Žè^=¥§=«£¿=®ÜÆ=²Œ=³.g=ÁÙÉ=¾ù¶=¬Ù=¹ =Î}=Þ€=êû>,ùØ>? >m»¯>pÑö>~ºr>ÙMÛ?A˜ @n0£@Çž•A&¢°A=ÌÕAI©5AJÊYAK¦–AAYµA,úuA ^²@áý‹@(>“?w}´>Ÿ„Æ>ˆGÊ>ñä>‡Š>j,¤>Pµ£>:]ò>“}ˆ>¨ †>×¹_>Øì>µ6Ø>˜.>;‹@>{g=©ˆ«=¢¥”=ŸÌ@=”ð…=“‡ä=‘Èz=Ñ·=‹<á=…c§=/=œ>z=¦ž=ô=™ŒW=’ z=²uT=íÐu>„À>?̽>RŸŒ>X‰+>5ß>>%÷G=Æ H=³&º=“Ÿï=’Šq=²Ð=.ª=ŸŠ9=Å=’=™­´=šd-=šÒ{=›ô=› µ=¥DÞ=¦…=¦q^=¨Ý»=®¯ƒ=¿¬™=Õ¦^>ïQ>#©=>z*k>ß«>e£a>Hp¥>¹'=ÛèZ=¶¬£=¦Rš=ŸhF=¢ý­=£Z™=£&=žˆU=•M)=¡Íð=«È+=ÉÚ=k¹=°þ_=­²k=žƒ2=› f=—'ð=Šœc=ƒã–=›T= ç =»Ùb=·ˆ=ªíí>:Ð>-T>R‹;>aÖò>/!ý>Ä =É!‡=¹¹=œ,ð=Ÿ{€=¢P4=—øµ=–¡2=­À=Àî(=üºn>-;²>e¿>ˆHg>’×÷>më>\íË>VÙ=üa=« - =ŸH =–=šc-=›Jí=‡Å`=„kH=l  =Šê=¥'S=»f=Ç$<>*‡>8×—>cï">b¹>]™>,§ó>Ò¿=Éh=´ªá=›£ö=•Ïw=€W:=ƒ&Ô=†â4=‘È=•ŠË=”9=—úÈ=®g=žÎ'=‚eï=Ž>ì=—BØ >G‘Ò>I¶>,!{=þ¬u=Á×p=ŸBu=¦úc=¦|=˜@%=˜ÁÏ=™˜ =£'ø=ªž=¥÷h=¤ ð=¬Ng=°(=¸Ë~=½æ£=Âß =ÈœR=ËßH=Û~¬=Üõ<=ß¹Ì=ß2Ø=ß:8=݈¢=ÜB:=» u=³û=¨fÜ=²Í=Äiè=ÇZo=Én=¼—Ü=·Ê¬=¤æÄ=ÒP1>{ˆ>>Ž¼>[‚8>S}X>Psà>%´‚>/D=Õ0´=Æý‘=¹Á«=­I­=§òK=ÛRþ=ÝšS=ä>R=ä<°=ãÄ=¹J=¤æµ=‘u3=Zæ=•í=I=ªG;=ŸÔ=™öb=žÆ“=ŸœU= Jx=¡8j=£Âª=ÍLŽ=çò>à>$‡5>(mx>Ó5=óù=ÊÃ$=¬««=¦É©=¥"t=£ºP=œà!=E‰=ªÝ(=À¯w=ÔÆþ=ØŒì=ÄÐà=¾ë=°ãb=¢.=•nÔ=‘èª=’Èì=³{M=Â2À=ç=ûgÞ>:!=óŽ=éù=¼¶h=¹žö=±¸¶=Êr²=ßÊR=Í×h=ɧ÷=Ǹç=¼C=ó`=–¢{=¼·=§Ú=­=˜P"=©¹²=ÔB<=ß û=éî=ÞÉO=Úb -=¶œû=¯ø<= O¸= î=¡ß4=©%=©•=«"=¥yÈ=¸9ƒ=Êo·=ØP–=æ„ =ç­y=Ø·%=ÏŸ‡=¼G"=°ªr=¨ù†=²?p=±†g=™B=œàK=¥Á=¼3£=Êœ–=¹»=µr=¤B¹=˜áÿ=†ö–=šÆÅ=¥Åž=­¦2=­¤7=§!=®å =¹Ñ3=°òo=­:%=›O°=Ÿ²Ð=¶G†=›ï+=|‰¨=—x:= Ÿ=©˜Þ=£:==×!=¡=ŽÝ¤=ï=Üd=¡.ë=é$=•Êb=ø=Œ‰ƒ= ¦!=£[=$=¤QD=°ÑÎ=¢J=šA=’í=•_=¥ =¤Ñ§=¥b™=³Ž=¹¡Þ>Œ‹> 5J>(>˜Š>ÉÔ=Ȭ=©'=š ²=™jJ=—È=•Äv=•z==•­Ž=–‹9= Šþ=›z‘=“™=ŽÐ×=Œ—=‘¹Ý=˜ =³’=§(=˜pc=…³==|úv=š»=“A¯=~´=†¿=‹iæ=‚ä”=—-=ˆØ=Ž> =˜áÉ=܉=Œ±Ê=x‹=}Á=‘¡£=—&=+X=ªYÎ=®}~=¥@=ŸPK=ñ=ŠÙ=†¢Ñ=™M¢=Å=£+a=œ,˜=’d=©™¯=´š•=˜Ÿ=³ñ> -J«>%y>?[B>0bÂ>(†É=êYr=Ê¥¡=ì®=¥Î!=²2=¤CÐ= *=•ó=›ô=£ =Ÿ y=œ‹=>•=“"à=Ÿy¸=§0%=¬a=¦Gx=¤½»=ŸÍK= œ=™«š=˜ÀÞ=™!á=»ˆq=¹vä=´üÅ=ÖeÎ=íǸ>Qœ8>b!¯>si>Q%`>&¾×=Ý9Î=³÷Ó=¤ò=£œ =¡(d=©ð"=¯¨ò=¹á¨=Á$==ÝI=Õc =Ì =½ET=¸q=ºÑQ=´ßN=©D°=™ê,=a±=…úE=Š/J=Ÿ$ð=(}=›`=¬ñì=°¹ó=šøÊ=“¸Q=‡æÖ=D=”FÛ=¯!¤=°Þ*=±‰M=›û=ˆù =‰r=”úR=¨ù:=´0=ÄÇÕ=Ðz’=×~–>‹œÒ?t Î@#8œ@•Ãh@Ãõz@¸o®@§ X@DR‰?ÜbØ>•pŠ>æ[=¯¥-=ªÀØ=£6Ä=–põ=¬Ó =·Ì•=ÞÓY>t>c£â>„!>‘û>ˆÿÒ>~W…>-T->¶‚=öZ=³V =Ÿû=“%Ê=šØ‘=¨Um=”t=‹#¡=ˆ¡|=¼=¥K™=¥-ˆ=¤îù=›y =›`¿=Ÿ6}=¢3H=¥9¸=¨¾§=ª4=¬Ëê=¨å—=£g*=¾€ˆ=ÌÝô>i¹>zÇ>Žw>‡K>ƒ§>Õt> w‚=Ú/ö=¿l¼=©F/=Ÿë=šú=‰}3=– t=¤­Û=•84=’©»=§ê= ì+=– ™=˜~Í=™m=šÉk=™\Ž=–,á=‘«•=0–=•i"=–u;=˜’»=Œçª=ƒü¾=š™÷=¢‰=¸=¸³‹=¹8÷=©´À=¤Ä -=šr=œ=žF|=¤}1=¦5ï=£T2=Ÿ‚—=™)þ=¢Ó=¥Ól=–€Ž=“ð -=\ë=še¶= *µ=› -=—í°=T—=šlq=¡2+=ƒÞÞ=†£ƒ=™`×=Ÿ[ù=¤m<=jØ=œüç= …õ=  -Ó=ŸÚ•=¤—ó=§1Ë=¯IÛ=³Ë§=¹ 2>& >‘>)a>‡‘w>E–>n`q>Sä=©p¤=ŸÃç=ðÖ=–žA=˜Úc=”ù=™×=¤'Ô=¤D¯=¤ ü=—ö±=•œ{=‘/$=˜/ì=›Ë)=ÑË> ÞÞ>ö¢>ݱ?Œá>ÿƒK>ÞöÄ>²>-qw=Íÿ,>¶©i>òª?@[0?>«J?=‹³>ö‡°>½³U=Ò,=´ -”=ž˜=šÃq=è6=©r“=——ž=‰Ë“=‹}=¸ -=Ÿ =¨ËÑ=°Õ=æ=œ+œ=£ =›6V=”Áç=¡1œ=¦¾Ÿ=µ:»=³W(=±È=¥ w=¡ô=Õû=Ÿ+i= 0+=žac=ÏË=œ¾«=žÈ= ´Š=l=œ7=š‡¤=™"w=˜Í=û’=–ܧ=±—=¯W=­&×=‰Uß=‡Â=‹ce=‘4“=•\Ô=—ù=™J?=žj„=ŸMí=ŸÇ=–š=™¨f=£¥Ÿ=œªn=˜,w=¥àŸ=¢7Q=˜Ò¢=ŸíÛ=£ë‘=¥2U=¡£B=™ò†=•Ð_=“¾¤=‘“›=šñ=¬ÝÁ=¥?Ê=¡aŒ==™N=©Ê> , >%5|>‰ÚŽ>Šór>Œ\ÿ>U•.>5íØ=¾,;=±k4=¡{=Ôe=‰Ë@=‘°Y=“ÿ=–BÀ=ŸJç=<9=Œ0’=’â=˜¸æ=R›=š£=ŽJŸ=žã=©Â©=Ÿª°=¤=²=©¤Æ=¤(Š=ÊŠÐ>A>Eͯ>€£$>¶>šÒ.>‹åh>g'> ¹=÷^@=ĨP=Ä6r=ÃÙN=Å°É=Ñ«> ÷>ª 4?­×@½HŒ@ãmA›j@ìo@Ü:u@9@<›š@ö‹@Ì;¾@øÃ@áÙ,@½k©@oÂp?£„L>T!ò=Ö<=Ò1Ý=Ì‘=¶B¼=®6¶=¥8Í=³kæ=Âþ=·67=´Â}=´«v=º£2=¿-Æ=£Ó*=¦>ƒ=²Iæ=«Ìw=¨š+=¬é=ªÇ=§÷=—]=’=’²=›† =¦×j=­µd=©€ð=~‡=”‰O=™ =°F&=­Åa=¡Þ =¡ã= S#=™ÙÜ=†Ã=££"=§ï=¦p!=•g=•P8=•Ö…=¢Ô`=Þ´>ay£?{{?@O?T^®?I]^?-n>§þH>·¯=Š×S=”<‡=¡Û)=•¶È=›ô«=Ôþº>'«¿>`7ï>i¥7>aWÅ>FBH>çó> p/>탶?1]?_ŒS?S7Ù?D+R>éc>Ç8=Øs=¨ 2=šè…=‰“ª=$+=’‹=—¿‹=ŸˆF=­D=½°=‰¸=«ÕÏ=£û7=œ)ô=›3 =²eà=û¸'>A~>k8è>jêì>[TM>@Ñr=æ9=­6=„’¯=§¡®=ÉÚé=Ô˜†=ÕŸ=Òv=Ì=þ=Ç õ=”À=™>%=ŸÜ-=£.ä=¤` -=¥B=˜Ê¬=Ž•Ô=˜ä=š!Ü=›4æ="1=œLñ=¡6=•s=Oí=“=”µò=–™c=’t=F+=Ùù=“_t=—)%=¡ÒH=¹Ü¥>e¸>j¿>˜rk>£ã^>©Ü½>µŸ>¯(6>«2>›§}>€þì>E½=Ã.ì= my=šsB=Œ!{=„‘s=¥T]=™q=‡‹,=ŽH=[^=Œµ=h?=©ì= “ê=—Ù=†ê=•“ç=˜íï=Œ‹t=‹wf=ŠÑÈ=•Ï=’„>=Š€l=ŸôÞ=¨DÐ=«ß=¨«l=¦,—=½ãÀ=¸Ä=¤£E=h#=™Ôý=•™g=‘$è=ŒŒn=—:´=’¹$=ƒÏ%=˜µ„=¡&æ=ÊŽ=ŒCä=Š»¡=Ó[T>¥†>6¢Ñ>Az>EŠó>,¬>|=º¥=£v=œžu=•J¤=õ¥=¢B’=žØR=šiÜ=”¥2=£ÃÛ=¤Ø­= =¬ä?=²HÒ= Â=®>=¾½f=ݼ=ã'¢=äné=ÛéS=ÓÎô=£Z¥=¹®x=ÑÃy>) >6fU>A^…>>Rl>5)n=Þ>´=Íy3=¾rr=²ë×=®‡"=§ =”Î=Œðš=ŽªÜ=‘î±=”ôò=ž@Ä=˜øC=ŽyB=ŸW=¥¯w=­ =¸•¯=¿«J=Áø =ÅÏ=ËkN=·S«=¬ˆ—=še\=˜_=˜J®=¿”Û=¬÷€=–©¶=¬¾Ÿ=«kO=ŸÝÆ=™Ê=™rÈ=®É‚=¤q<=šN=ŸOY=›Ûµ=”íy=¥Û=¦F=—ãª= aw=¦c~=œJú=`r=ŸST=–ß=•ò=™3ù=œ›=ŸD=¥ËP=™¶I=(=šÞ^=¢)Š=®k/=ŸnÆ=–ìj=…P¬=“=÷=œr -=™mÔ=˜×;=˜DÒ=ˆ^=‹[Ó=—6ñ=”Û¥=•j”= m=”Ë=ŠÈY=¦4j=œtÔ=sÍ=¡õ+=¨°=¯·=Z†>ôz>£“>ØÞ=Æ=¬ö=•0d=’|…=DÈ=C5=™{!=—”Õ=ƒñ=‘Ý~=˜¸¬=’J=—Õ¹=Le=%l=—²ß= =–B×=š`ö=¡¹µ=˜‰Ç=“>á=„ø =“Ïã=ŸÈÈ>—->%B®>C­>BRÞ>/nÏ>_ê=½ùþ=¢Ã‰=—Þä=§˜Ä=³­›=äT=àUÊ=ÛN»=ì`}=ݤº=¾4=¥R—=ž+;=˜=`·=¤!=ÉšJ=Üê3=ìòð=ÔU=Ë®=Á{A=³»ß=³Ã¶=»õ¯=¥T=ž+=§ÏJ=–—w=ŒZ1=¤0=¢¯¿=²Q =~â=ŸÈ'=·š}=ÎF=Þ¤G=ûF>é=÷¹=Ë•¦=«U5=˜¸=£õþ=Ÿqæ=›$Ñ=»=”G¨=šqë=šLÑ=›h'=›æÈ=Q¶=«&=x=9+=’éÄ=®Må=£ax=›ˆK=“`= ü¾=°ö+=›|=›°…=žAÄ=—Š=”2Ñ=•.=•ÁR=”´=‰Ew=¢&=_‘=‚Ë=‡Â=‰»Ý=š$6=’C÷=ˆ²ó=ŽÙ=› )=²2m=Ÿæ=™äÛ=—øÔ=JÒ=›O =‘‰^=u6=N®=˜1¶=>þ=‰Ýô=ŠD—=ŒU‰=ŽÃ7=–n4=›0= g=›%0=—2¦=‘<±=‰çË=ŠoT=™x=¿ž==ÔÀ=ñ_¤=èƒ5=ßå%=ÑG=¿‡I=¬1=›Ö=›¦d=›¡€=›G=šS=˜ÿ´=£ÊP= õ=“2=†QÊ=€{=q¥C=‰Q=Ž·M=~ *=Ò=‡_Û=•Ø=|<=^í=™íÓ=£„=ªÛx=õÞ=ñLÚ=â.=ÖÁ´=Ô¥M=ч÷=šV¸=”`=¥“Š=¡át=£Ú=²ÝŒ=Àz=ÅŒ:=»=³&=®¨4=żm=ÅD±=Ã#=´5D=µU)=¶€=˜b=’š0=‹J;=‘[=‡,B=xà=‡üe=‰E=Œ¶=-p=†*e=’Êr=³)Ö=½õ=¹9=¦( -=”¥=N©=“eA=¤z=–\=‡Óâ=ƒZj=ŽâA=’Ø -=•«=žk=”=ŽM5=¼ÀQ=Åf=Í =l =Ÿ5“=¢Ùº=¤T= -=Ñ2=®-==”›»=žÄ=©”å=¿øÜ=ÅwE=Áw=¾pw= µß=–êÎ=†=‘MÏ=š=­˜]=‹œe=†ýÊ=žf¼=Þج>‹ú>€³>ˆ¡½>‰É >}c >`óé>]À(>‘|×>¢8”>§„ø>“f¼>_†*>-Gr=þã>Kþ>A=羌=Ö¿â=ÅÎã=…²-=’æÉ=œ ì=z[=‘ö==•,=ˆõ=Œ#¡=4=Áé=‚?=…)Ü=–Æ`=áý=Š‰Š=±l=®#=¨†E=š£(='Š=£RÐ=œZ=³q`=Χ¡=ʺ=Òé=ߥ%=Ê2==ºé.=ª3 =ËH> - >7·-?¬#ú?æ·…@5°@N+f@Fq@6ó?ô ‰?³±?Pœ>"¬=É©= Ž=©è“=¨²=¥°=¯uÐ=§xR=ž¬c=Ÿˆu=¬&=¾ ú=»àí=º&,=º„[=¥Ž³=¢!Â= ¶=7ö=˜Á=ª×Þ=ž’=“«Ú=‹éÇ=µ Á=¯‡n=¨3=ˆ(ü=Ø=—2È=ˆü¿=Œ =’u¬=™áW=—u>=•Û{=~«†=Œ9=˜y=•€»=¶E=‹~=ôU=Ž”Ž=Œ5<=‰®†=‘?==“bx=€.œ=‰êÆ=¹G=–0­=§”î=«,†=žæ}=l?=ŽÏ=œ0=’9›=Œ™^=‰Äš=”ø,=›i¤=¢•"=Š¤ -=ŠÇ%=œN=—:£=–¯¤=™0 =˜…»=  §=§>Ž=™]I=¤xT=·´È=Ònc=×lž=Û©P=åpD=ÑŽ¨=¸ûd=¨3Ø=£Ë=›hä=¤I·=¡O³=¡7=”C'=—̈=Œ=š @=«ïÔ=±_Ø=žk=—¬x=˜Ó =¢Òm=Ÿö=œÒÏ=–’$=–P=šä=£”x=Ÿf«= Ûk=§©Ñ=Æ(B=º¿h=§ˆ=”Õ=Ÿ>=¨î==‹PÓ=†gJ=†e¨=Œ©=®=Ç-¹=À9Ø=Âå,=¾>=¡=˜î -=“%%=W&=…B=…j=ŠOé=‹6¡=‰=–jÃ=žw{=ŸäŸ=-X=¨®Ç=¦8ë=£þÍ=¾=œ:<=¥µ°=É;=™;E=žAI=þG=Žî#=wìx=¥#X=“y=Š]•=‹ë°=™‚p=œøŒ=ž¹p=€^d=[Ì=«Zþ=“`D=‘—=ŽZ=ˆ,=†Z´=} $=këù=î‡=ŽÆ=§‡G=·í¬=ÁK=ɤ„=öˆ`=ñíß=ÏT=°Í=±Îa=·•=Ž%=–*°=•î%=£(^=œ£=–J6=Åk=¥­¢=¢É=„¦=ŸÅ¬=£kÏ=–Ì=‹I=Š×[=‘t‘=À"=ˆUÌ=‚RÕ=«ÈÏ=¥é·=žìL=—î9=š¦«=¡ê=­ºÄ= ¿e=¤%I=±Ö¤=²ne=¹ÕB=ÀX=Ç­=½«@=² Õ=‘…=—'k=jr=±Z–=ºèQ=¹Þ@=­ÑS=®½î=­©+=´_¢=¡ =Ÿˆ=¥ ê=À7Ë=¬=Ñ=ªæ=ÆgL=Ù=ÞÃu=é -=ìïš=ã/ =ËÒZ=ǤÅ>KJ>Ž²²?´Ñ¿@Ep±@„ @„êÛ@] ³@"¹Ã?jãq>ƒ9b>)G>w'ñ?þ‡/@F{œ@€ß’@€Ž@Iæ@u¡?A>_³=ðf>vó> Xq>÷>=Ö>Ô=ÚTB=³xÌ=¥ÒI=¬‚=­–¯=­qŠ=§1ç=±»¹=¾n¦=¶ÿ=»=»è´=¤45=¦de=žFÐ=!A=¡XÆ=¢!Ï=–Ǻ=µp¥=àÎx>Ëœ=ú©h=ù?=ëRR=»¤8= 6—=œ>=•’«=“‘ô=˜Á#=›*Ú=•‹´=Ž@=Ž¿€=Žÿ =Œ*ß=Žù˜=˜ýÑ=£Å|=­¾·=¹RÃ=²=œÝ'=˜7Ý=­.= ì‡=™=šøÝ=¬ä[=“Ý'=†WÕ=ŒÉ=ŽB=•c=®0\=ˆCH={¶U=j =’©Ø=ú=ŽÁÓ=·z=ÍÚ=“Tª=š¤Æ=ÏŠ=”=“„™=ŠD¯=’C)=•k =&=›’Î=Ÿ¾u=é=ȇ€=õ­c>!¤>=0·>(ïö>,§>·•=»y=¥¶¢=›¢= •=›é!=•ª‡=…ƒ8= v= µ®=– ±=ŽÄI=˜Œý=¡%Š=µcì=ª±Š=£mð=™ç=²â=’í{=—ëC=¦x´=•ú=˜ë=­‡ä=Ì·=’þ=–é”=Šÿ5=ÂL=˜§a=Ÿö=Ýp~=÷ò÷>›ë>º>šà>ú|=Çp–=–…p=¢_=•Òj=—Ãò=–V=Ü=•Tr=‘º=ŠBq=š;à=¨³,= æË=”<’=¨„=£8.=šÿÇ=ˆn=ŠôÛ=±-= ~=ž‚=¨Ä=Ÿäi=q­[=Æ<=•Ÿ~=²x=¿Ê©=ª<á=œ =Œj>=Ñk=Tü=vÖ={~¿=ˆ6ž=‹q=ˆ´È=˜þù=‘Â=Ê=“˜L=šÌ±=‘óN=wv=¶¬¬=¨ =”è•=ŽÝH=†Ã=•N=¦ÞÛ=¤Mý=Ÿ¾¡=˜=zžZ=Š,_=…_=eg=€Àb=wRX={àÂ=b#=Š/?=œcó=¨x =©`ú=2¦=wl€=p=›zŸ=“Û*=ð³=˜æË=„ç=‡5=Z=Œy¥=hG"==šÙ=TæÕ=\k=úg=žŽ5=9=‹<=‘Áì= ‹[=ŽŸˆ=Ž>Ü=“==ŠèX=‹NÙ=‘¦=špZ=¨aÚ=˜Y=ŠÛ¨=…‹—=¦¥V=©BY=@=¢Š‰=•›E=‘¥¸=Ž=Š·Þ=’|=›Žé=‡š,=”þ~=™°g=–C=›èª=™Ò–=˜É=Œ`=“±Î=›Œ4=¤Ñg=ƒjY=š>M=˜;g={ö=’˜=”†=™Zi=¥g9=¤œÀ=¨øÞ=¬Å =ªœW=¨¬ž=¢«>=–––=¨Ô= ©=€Õ=˜l=‰Ë:=ŽÞ*=8:=~p==™v?=.S=y½²=®»= “=‹"=aµ_=‡ç=‚ñA=~¤=†µ‹=˜f¬=—¨=šL¢=h¸=˜9ú=«fŽ=®¨ú>¶m>(:a>*¨>4¼i>ØÓ=댗=Ñò> n¨>$Õp>AR>Pår>B{>Ä=ªaœ=x’>=”Ëë=q=’ˆG=—‰ö=¥+g=¦iƒ=“Z=B9t=„€ =‡^õ=ƒÿÌ=… -=ªºå=ž—q=y$/=‘=~»ÿ=ƒS=~ýø=…êÉ=™¹ =• ¤=C 1=†4Þ=“X²=—~%=b=Œ =¦a=´Ñ={€2=Š{Ä=Š:P=†vÍ=Ž„§=w@»=€àO=ˆLº=„=Žè=‘!}=s=œý¤=“¦Ï=ŠU@=‰>Ê=•‰¾=uý=ˆu=h@=…¾1=¿Ã>=>y*»>šýº>žÏ>•™Z>S€==ùwM=«"=‚¸=Œþw=©7=û‡ä>4§E>ž$…>ê§>™ËX>Œí>qA=Î/V=¡“=‘_=©wR=ž½Œ=‚Jõ=Š¥Ä= 1-=¥6=«]=¢J+= 6f=žRƒ=”pV=!ø= ¶=šÄ=œ#”=Ž¬µ=z¨·=nRè=nÝ{=b€â=‹9O=€Ï={.p=‰¹È=‘Åæ=‘À=‘«=7=a=ƒŽ×=‚pª=„,ý=ŒZ=†Ò³=†µ-=„¦4=8=ŒD—=”r´=ŸhÌ=¤Zq=šîL=…ç=ï=wMV=‘ü =—Ä=–ïw=¨Åš=D=·ÕÉ=µ(_=Ñ€=›e=¨÷i=¥sZ=•AÖ=œJ„=Š°"=xix=ˆ=Å=¦?“=œÞ5=—Q±=ŠÔ¹=„]´=‘¸Ä=‘Ø =„#®= Z¥=’tK=m]=˜ ¦=“”è=àÝ=‚=Ú=“~=†l=—àr=œIC=™ûä=ˆ9=ŽŒ~=!Î=ƒŠz=†–&=žðT=§cõ=¡ö=…%=¥˜‡=ºû=Ä ä=Àø=¥f=œeo=žR7=™P=¡6–=·2Æ=¯«=¡4•=¦ì×=· Ï=Åw˜=ĹÎ=¥8¯=œÑç=–ñ÷=ŠX&=gÇ=—g)=Ŷ=Çûn=áK=ÛB=È×=Áâ=¾a’=—Þ=íD=¡½«=œœß=›WÐ=¡=£úˆ= }Ô=¢^=Ž&’=¦D=­,‡=™>=ªˆ=©M¤=°<Ç=´¥\=êíà=å…=ÊW=¸ß½=íâ+=ºì:=¡»m=”s¨=‘øÏ=™`=¨ -/=œ%=tè=Âß=‚½=€?ê=„Ø=Ž/Á=ß &=ÀŽì=—Þ¸=–N©=’Ô=žÀ5=§=T=«Q =Ç\>Kz>™×é>ÛþQ>ìü!>ÐQÙ>®2>7Ôå=Éä×=•;û=¢§ø=¯„¢=·_Å=šsÔ=w=z…)=—¸ñ=¿'®=Œ Ö=…øZ=€ß=c‘K=¢)=Ÿñ =ÑÍá>úi>C®7>˜Sã>ÞÂp>éíù>ä9>«oÅ>Cí=ð{A=¯ÂN=ßü9=¦úu=‰ÃV=}¸Ô=vkÕ=ÏR:=Á3ê=­Ëm=‡U^=•F4=“âž=šrÔ= ÷3=›ù­=˜[ã=œŠ=¦€e=¥q$=„ˆ =“:=•–Í=ƒ‹‡=sÑ=‡ss=z.s=}ü:=„(=p\ÿ=‚U˜=ÂP=æ=ƒ{=õ=ˆ4ô={vH=tT=€£«=Œ8=Œb–=Œø²=‡,°=T·©=po´=ˆ³Ú=ŸPÜ=‘'=©æÇ=–,¾=†Ù°=ÍÀ=­ùU=¡Ò}=˜¼N==€£Î=•·¼=”,‘=‘T=•êc=›H™=“Ùæ=’S=‹·¹=„›=ŽsB=”Úø=™8=œå“=™¢=”ÁO= A==“^±=•IÓ=—˜"=‹½…=ƒê=——|=¥Væ=—׃=“ºª=¡2®=¤ô|=“dµ=˜c=“m=‘}=—-=Žäh=q¤G=‚§;=‘¨}=‹C‡=}Œñ=êË=Áš=¥ae=¨hº=€®d=t-»=˜FÉ=œÕ­= Kg=’Q=?<=@‰©=B\*=d -:=ƒ_Ú=Š§º=pÂ=±Š=’å=ˆ•H=…^=…yH=ƒ¶Á=ŠŒ¶=‡Ó-={¨¹=‹‘ô=Ÿ=Ÿ° =´¡=•Çã=”H =‰Äp=„ͨ=©=‘}q=™1–=›=Ÿè=¡áu=«Šb=¨ƒå=£L=Ÿ¡W=›ÑV=ö=‰Ô=†„‘=†ˆ=‹aª=‡(g=RïB=mQ=›V=£š0=±µï=£ÞÊ=–¾è=–ÿQ=—:¨=ž% =Ÿ'=†ÿk=ˆ*u=³¬×=®g^=³X=—r8=Žÿ<=Œ,=†=›ö>¯¼n?(?K"V?w­?ræˆ?oà -?gJ…?dßz?W´À?Pº|?¾Æ>ç£ø=üëÍ=Ô§”=—ƒJ=¢/ä=«Té=›!Ž=•KÑ=žT=ž€Ð=O ô=_Úh=¥ÉU= +=‘~˜=Ð=‰Ó®=–Eû= ¶:=¦úŸ=§´õ=Ò–=Ü*u>"—N>$«o>3¼>9n>?¹I>) -&>ž,=ê‚z=É %=¬{Î=¤Æ =nT=lO=íy=‰Ö -=š&¦=•í=Žž=‚ç$={[Ï= £=‹=“Èú=• C=«ÁS=§$Î=Œ_Ò=Ô¸=õ=•b='=‘ƒ =‹åò=‹¾=‹ª~=˜P¡=•a=†=Á=ŠÇH=•Vä=Ší‚=€+_=—wñ=¦Þ=™ÿp=” ¶=~{z={lŸ=ó=–+À=¨UØ=Ÿ/F=‘ ù=…¦x=st=•²Ž=£Ô-=žÞÝ=›à‘=ýœ=•+@=©È„=¬Qs=±Û†=¤TŽ=•7X=‡,•=k =˜2=œä’=ªïñ=«=­C=¬&J=ªAt=±K=¸`=ªºø=£žù=Œû|=…ßâ=‘öÛ=’É=‚ce=‰G˜=—Œ²==ƒ-É=ˆI=‹ ©=šœ6=^»=ÂZý=Â;µ=¼ÑÝ=¸Om=­G=¦‰=Ÿ~æ=ž@ =œñ=±Î¾=µ=˜G=—·f=Ú =Î=››ò=¢Á=ª«˜=¤»c= æH=›É9=›óe=¢y]=¡¿=aH=Å:=ž‡ü=Æî•=éý'=Ù,²=ÒÊÿ=¾¢5=¹.+=˜ÑÁ=šA%= Mc=± =É=¶=³|¥=¤É«=–Š=àa=˜Qö=—(=N=’«3= à:=ŸI=Ÿbî=˜+/=‘]¨=Žvð=¬=qÂ=|òÛ=™B =›øá=£æv=±¼]=¾?t=Ñû=Úá£>-{>Fª>¹ú>4…=ÚÈÓ=¿Ñ†=™%= þ=‹o§=ˆ‡H=‡œñ=Å=“lÐ=¢ùª=Ì=”5'=ž‡Á=¨N=˜µ?=‘°â=¨[a=¬wÓ=¬¬X=ãÅZ>O¿? -ó²?ƒ]²?ºa¹?ß-b?Âή?º±í?…‰?šq=÷s1>h>g>FF>uëz?&r‡?Qqú?ÆÁ&?Ð=?­]?¦Q?4†E>äëõ>Š4=ê¤=ÊU_=Ž£a=ƒ¼*=¶W¶=²cr=¥¬P=’EÏ=m„h=”Z¨=¨ê=¢žÕ= ¤ó=¬e"=§tÍ=0W=’Q=–5Ä=™¤×=œJk=¨gù=¬òž=¹Þ=·™==›¢=Ÿv°=¨D¹=¬jÀ=°…p=Ó×=âƒ=ÿ3—> =ûÖ\=áh=ž´ -=«¥B=¹wé=Ãû=Ê,=Þiö=ß>W=Õø=ЃŽ=¿,n=Êâ¾=Ú=Ò>>ð>,—c>J$µ>Msc> †Œ>n5=»ÏÍ=°ƒ=£KÈ=–…==ˆæ=‡d¿=ž=†=ÇR=“Õ:=_é=®ë=¸?Æ=‘Þ°=‰xò=ŒÐD=qj=ŽpQ=•!=¼:=š{Ê=˜åÚ=ŸB=‘sC=´)´=ôý=ó´9>I> P =ü%/=ïI=Æ(=»,6=…ÚÑ=Šî'=™7¯=˜yn=—Ïe=|ì=c =Œ =Ž€=‰}ƒ=ŒÌS=“\£=“/ð=“ -“=¦3'=®—‰=ŸÉ/=£A=Ìlè=óäÑ>!K£>â,>à#=à¹=Èe==¯>-=¬N=¡³“=›m_=‘†U=¡˜õ=«\=„Ü=u»9=˜I =•H+=‰]±=Š~=‹üD=žØf=¨š=¶ -Â=¹·Ÿ=ø=¿¬Á=´–è=²cã=°Lœ=«#Î=©˜¢=¹@ë=Âsˆ=ö?‹>> o=ê .=Ç¥ß=¶Uâ=±é›=Â?8=¾Òq=³òÜ=«WN=Ÿ™×=‡³‚=t—Ì=U0=ZJ«=¥‹Ð=¢©e=š»=˜Q=—Bã=Æa=R¨=–’ -=“°æ=ƒ:¡=Š£K=–,C=“©9=‘ÃÒ=˜$O=šžš=¸×F=Î…&>"k> næ>¥†=÷ Ç=äLÀ=¥gÔ=Ÿi=š.¸=™1=˜BA=”Þ=‘˜=€)=Iw=˜BÚ=š£L=¡)r=¥)O=ªT=ªí#=ª¸=ší.=—ð=ŽÇA=”Æ…=l =´=ž&°=¥ÿ•=§}Ú=¬¯F=Á×=ï)'=õTâ=û -¬=ò¹.=ðø=¬¶=¬&Z=¬¾?=—eë=xç3=’ë6=ž -¯=§ÖD=¤´t=‡£=ŠÊ{=‘¤‹=ŠqQ=…6=”Ç9=—=…IÔ=ŒÃh=ŸtÛ=§Qd=®Ù=£LÜ=Ÿ¹=¡„a=¢q2=£Ñ¥=  R=›ê=‹y»=ƒo=œ;=œ -=ŒÊW=‘R=™|=žQ…=¡>B=«˜C=±~0=Ü2=ØÇ=Íë…=¾IÖ=²eà=¿]=„%=jC=‘ãù=Ÿ¬=›J˜=—‡=‡_¸=å=™6=‘>q=“xo=š«»=¢ÛQ=ÃÎ=„Øÿ= w= =’O=Œ: =„»=—ç¤=¡üÀ=•jH=š„a=Ãt0=½e=³n…=³…ü=³‘{=²ÄO=®ŸÙ=Žt4=™fœ=­QÒ=™"=‹˜Ÿ=™iÐ=œzb=¡=˜Ì@=ˆÆ=¥ÅS=ºí=®I§=«œ=¢›=¢ è=£7Š=©2=­Â†=¡{¶=ž!d=˜0«=™£¡=œ¯£=¤ï=ª P= ]Í=’é=6=Cœ=“r=—C=šuk=†è=ƒD€=¤û_=%:=Š.{=ƒÓ =}û=mµ=”ðÁ=–Ð=ž’q=°Ðs=¤Ñ°=šèD=•Ä7=•ÿ=§=¢ðû=¯‹Â=–‹=‚yW=Žå+=‘¼2=‘²=XÖ=„jã=’ke=œµ)=—g–=–@=”ê=‘³Ï=‹‘¿=•FX=›ÿ =Ÿ¼n=œÌ=€¢¡=‡AR=’æ=˜o=›DR=â–=™¡=Šä¢=M=e9=—ص=›Ïþ=›Ì6=œîÐ=¢PÒ=ôâ=˜-=”À£=“\=‘N=–¤=¨¦ö=›t¤=“=ƒåß=€u±=‘ž=ŽŸ=†ò=…~‰=„þx=‚hõ=Îñ=„Žh=‹c =šœ¢=¡dÓ=¦jÈ=›òÐ=™./=’¼O=cQ=„[d=~6>=x=O=ÁB=“‹T=–»Þ=¦Ÿ=» Ú=ÈZí=ÍÄZ=ài§=ݲ =Ò%‘=¹•÷=¡1=‘L—=ŒŠô=QÚ=ð÷=’DF=‘¡=¥= aA=¢6Á=˜±ã=– œ=‘æÖ=¡Bc=©_Ï=e =‹±ô=…eé=‹°ˆ=’Þ”=”|›=”Ô®=Še=‹oW=®F=“Fš=—ÁÇ=—¬l=˜Ž=Ÿú\=Ÿÿ4= J=¦ìÀ=ªŽˆ=ŒmZ=ŒxB=–GË=”vh=’rÑ=•4=•ÜÇ=–cG=šI=£3­=Ö+=šI=ŸÄ=ŸÉd=Ÿõ=œäZ=™×¢=¥Œ@=ªÂ¬=ÁÑj=ÍÒÛ=ïýR=ô=C=øB=ÏÏ^=Â:=˜Ã =˜#š=—Á=¢¤Ç=¨æ =—øk=”Ê¢=Ñ6=‘ÙÓ=– -q=vÊÍ=jú¢=”òÄ=•˜>=–ê=’Ù= ü=—=“³ -=¢óq=ŸC‘=›/ž=šmZ=™5A=ƒT­=BL=§Þ)=Ôƒ?=ðÍ >Õ> ‹]>"“È> ¿˜=Û·å=£?Ö=‘Z=ŽU¶=‰&†=}‰Q=ˆª=ŽÀì=©=©ýÎ=¢Éò=›õÁ=”Æ+=˜Ý1=›!=«Mî=Ÿóâ=‹KU=ˆHÞ=†¤T=‰=·=*¦=š =}s=‡šÕ=|þÞ=~üñ=›m‚=Ÿ?=¥!”=†zF=qÛ=¤û[=¦[ß=§­7=”‹‰=…÷=—C^=šÅ=š®v=Œo@=v$=Œ±Ã=’µM=’×=¬Ï=ƒ‰‡=•_ó=ŸÂ-=ƒ½=‡Í=¶ƒ=¥Ôu=­9î=¥Oõ=£*=£ŽË=›Ý›=‘(ü=ŽŽ=­ë=šK‚=¥9‡=½.[=êÚ>‰2>lè>Ë;>±¹=Þ{=³P -=£žƒ=ž{s=’›§=˜0J=Ÿò[=”Îl=‘6´=¯c¸=µ™=Ây=º‚=µë?=ži=œ4=š•Ü=™ l=—ã'=”x=“‰ø=‘ñ‘=Œ]=†¿=“ =šâ4=ÎxÅ=ñ;G>ÄŒ>0þ0>=Æ >3Kª>&t×>'G=ßEµ=¿=¬&…=¥æš=–kÈ=•.Ü=”B==šôn=…g=b5=–íµ=”¬e=•y'=§T_=¥d›=¢eƒ=—A=’x=•­1=“$ê=òÂ=™Õç= °\=°ž=´ñZ=¾þÐ=µ9#=­ô(=¬Œ=§­M=•0B=•<=”þ[=–ÐD=”ˆù=„ôÚ=zL=h“=›Až=¥K±=šP6=Gë=¡ß=š›É=˜x =¤Žà=xH=ò´=ˆ:Ó=„d=‰ª=ŒÓR=•Œ=™’ø=œ)4=“ÝÐ=—|ù=¢DÉ=—8¡=©À=Žã=‘]ù=œú=“X=‹¤ý=Œƒ=‘+i=ú°=–H=›5…=øfP>/M>Á >¸è>Ñ=ÞÜC=ÆA˜=žÞ=–õL=Ž¤†=“ #=“½O=‰1=ƒ¹=u"Ç=‚;r=…Q{=ŒÚ=’Þ‘=œH=ÚáQ=óˆ> N>àÑ>áC=à8ê=Âvv=«hq=¥Ò=œ=£Âe=¨q.=Ðñ7>ä>3â¸>:J>;Áb>…ú=èN=©?=žÑŠ=™ín=Œ§=‘`©=šI"= ãÙ=£Þ1=™Ê=¢#=³i =Õ7ü=å|Ï=õgO=æçò=Ëdm=¯Eð=¡Ç–=™@Ö=˜Ê=•ï„=˜¢=˜ëB=‘ã?=5Ö=„¹= ==©¶=¬&=í¶=“ûB=•Ð=•ú¡= Z=Ž¯s=Ž&-={=~x=Sð€=lbœ=‰eÖ=ŒXl={=ŽL=Ž1&=Že=7l=’È=¤â@=§€=«î=Ÿ/L=›äã=7 -=Ÿ\ =¢=Àš¢=Ýžè>/Q>'Á&>­>ãT=óµû=›øk=›’8=›-¼=z>=›L©=‘cÔ=’*u=’Öç=Šœÿ=†2T=vð½=‘Ê= ô¨=–9=šdS=§b=¿¦C=În>->šG> ²Ú=éý$=Ðt/=‹î<=‘ Ð=™ãê=•jç=“×™=˜LS=š=œdõ=¬O…=«¾¢=‡\·=–j6=§%=Ñ -a=ãeÄ>ÌÙ>ý>‹Ô=¹c -=«ö=¥Š’=›±=”Ìp=ˆëi=›q“=Éå­> -pù>ãp>#Úó>ìu>OÔ=ÑKt=­N_Ÿ>_%4>o£ê>b¥+>Z‚†=ÕìÄ=´ß²=y6ì=‰ y=Ïg=›X°=ž¶Õ=£0=Ý@Á> F>µœ>Ö‚+>ó:>ÜdY>ºÞ2>O€>>®k>79¼>Ýp>Ü{>Ú¾|>¸D>ŸÊž=ô…µ>‡A> ʯ>AýK>Kù´>Ot;>1׬>K =ž´ä=’jì=‡?U=ŽE=“rn=«²¥=ÆÅ=Œªh=Ð J>OŠ>M§Ö>X>`nB>;s>÷C=¹= ”±=óÀ=“Rñ=°Ü.=×ÿÏ> %î>»Þ>û>ÊJ=ñ·v=›÷=–wÆ=š0¤=•!!=“ÅK=œQÂ=–³%=âú=†H¹=†ló=‘q=—Ð=›•u=’K=nE=‹…E=’=“}=„ëý=Œ]C=”ïÿ=˜WS=”A =…=,=™»š=¦»ö=Ý’=í¶Þ>ìá=èôV=Ù>|=¹]=¥m=’>ª=„  -=‚|²=…µ=ˆ¬=‹àK=ˆp‰=nò=š¤·=¡„P= HO=—GŠ=”4™=‘Öe=§þ¦=¨ž“=©YÉ=¡V=žJè=›hÿ=¤Hõ=¬ Õ=¡/= K=–©*=¿ƒ=÷=“>6=“T=”k=–Úó=›æ=¥ÐÕ=™ÍD=”'=¤#[=¡ž±=žp=`=1Ô=œ=æ€=‰=†”ú=l=–º -=œ÷A=žÃÍ=˜Ïô=Š¯µ=~il=`n=ˆ§þ=—R}=–=•!¿=}c=‘iú=’n±=žÿ©=¦®=²7o=ŸzÕ=—uc=ŒÊÀ=¶ =Ž~4=Õ‹=•=žÀ=™_ß=•ñê=ˆ¤·=Ž‚ý=•&=—Û¬=•û@=’B=—‹=š -ý=œ™é=žëA=¡òÌ=ó=’\Ò=šàõ=™¸=™=—¹A=“j=@é=“k}=”œj=–ø^=ªFe=¶)=Ú=Å=øÛ>£=æcû=ÊÄ“=/=ê] >'¤!>²Çj?õÒ?K#?kDb?Z‹?>ù>ш >W=·@ˆ= ~Ÿ=‘jå=¨ˆ}=—@=€nÏ=”§˜=¦ª¨=ÔÈž>öÿ>ÉCó?}?Nö?¹>¾É¿>’jÇ>q.> w>äâ=áÃÒ>¥°>PK>’ Î>–q>•]Ú>vâ—>P?‚=ÍöK=¥aˆ=ŠÛs=qœ =‡gº=›Vr=I*=‚Q=KÛ=€Ëœ=Šøo=tWn=„r=Ž©L==Ê=“Ó=šdÕ=3=Žì1=˜?z=•Ü¸=“==¥$}=™šã=ˆ©s=œî=–o]=€ @=~„á=í½=z=“S0=Š›ô=šIz=šø=™}i=‚¿Â=yl[=tÃ=É°=š}Û=²¯Ö=´\=¶Ú¨=“(.=“+z=˜iÄ=£Þ =£E=ŽºÂ=‰Ø=…“>=‚=v=„Yn=‡¼:=‰m =Š„=Žƒ=ƒ›ƒ=‡T=­´=¢b =š‚÷=Zä=¤¤=®Ôy=—Â=’’=ì½=›¾=¡/‚=²=¡ –=•*=‘Ó=ŸD=Ž¥=–Lò=‘IL=‚Hþ=¥Um=²âU=ÁÆ=²,!=¥è=•f=–|=‰-Â=ˆ‚h=ˆÞ(=ˆ9=€T=‚à`=¾[=ŸYŽ=¥Iì=ŒjQ=m5=’øµ=ǯ²=×Jc=çÆÝ=Õa‘=Ĩ™=¤7’=›,=—s;=˜™=w=ƒæ¦=ƒdt=q…q=Wý=Ž'™=nÂ=WÍ=yß„=‚xŠ=žêÖ=•És=’î=—¸I=‡ðÀ=vÁ¤=Œ i=†}=~Ýê= R]=¥J¥=¦{)=Òl -=á'õ=ß»3=Õ|=Ë}¼=¨PF=¦\;=¢âD=•dç=f­=ƒë=…qk=€Š=i \=ˆÑa=”=‹Bp=”4=™+'=¥ÌË=«M§=­í$=¡ô&=š\B=“w,=‘EÅ=Š­Æ=|*ÿ=ŠX=ˆjè=|4Â=}eÄ=€×ó=~È=“‘˜=—$=ˆuþ=‚ïÁ=|QÞ=hØt=vï=„I;=‹•y=‰QS=…ù:=™Ùê=›?=ŽÔ=–¬Ø=˜„–=eÝ=•9Ú=—]È=—4]==…÷ˆ=›^G=›§{=˜·Q=Œ4à=‹?'=‹Æ =…X1=‰({=“²O=–‡%=—¾ó=¢ò{=¦ú6=§Åî=•'H=’^=C=—…ý=ŽÆˆ=“=Œ-÷=•ôB=¤“={¹=‡uÐ=‡o×=Œ"=‚=™9ž=‰ðâ=„‡=†=Ž~µ=‘on=xpÛ=zÈ×={wª=œÝ=–Ð=“nã=œ¯&=•x>=‹G=›·=•Uô=ˆ›=‡Àú=ÔØ=ŸÜq=™¤Ž=•ÿ„=…_ƒ=¢Ñ=˜"×=Žbb=–…~=‚_=žfu=–$·=‘==×—=„í)=ŠÞ=¨'-=©f=¦´:=„N@=Šo¬=¡AP=—¾/=™¬Y= ç(=™~8=”Hò=“cî=œ„=œüm=”Ž=‡ ¡=†Ž)= «ß=»ú=ˆB=ùÏ=Œ€ü=ŒÏÌ=™I0=—÷Ì=—î‹=kÚl=oË”=zC=ˆïX=“}=¡,l=´Nï=·H^=·½=ªgÅ=¡kª=–Ê=ÛÜ=\x=š`Ž=ŸDk=¥šñ=°öx=ž‰¾=¡¶«=Ã…=À„Ö=¹èv=²Ð«=°÷Ê=¬Ä=…œ=œ@f=©ýY=• €=¦Ó&=³¶{=žZ[= éí=£ÃÅ=žzÅ=˜)r=•f|=ÂÜJ=Â…ñ=Ãã‰=¿fi=¯\~=žÁ±=ž£ì=’vQ=ˆÕù=m3=| =¢¼=…¥D=“<ã=£d=•ˆ–=™ž–= ¦•=²ƒþ=³sZ=µä=•ÿM=ˆM¥=u¡b=d­'=iÌ =€óÏ=•ªÈ=›$=Ÿ\^=œæ?=¥Vª=ºÖÍ=•ÔØ=p[=¿ðâ=–Ö=—aE=­øV=fÚ=ˆÑ -=‡qŸ=ˆc=‚Ô…=uúB=jqè=`"=Ku‚=„ï;=”=yù=’nÞ=_Æ=ŠVu=•ää=–^²=“ªÉ=›Ç=˜je=ƒY=˜T$= ë=¯´²=³s=˜A=¤1¢=º…†=º =©¢Å=°ä¹=«–=r=¢n=¡UÄ=‡©=)=œ-œ=ºó¦=”a=™ëí=¾[=¶d=’‹ã=¯ =á½=¢þ=£ùr=Žô2=‹r=Á7=•¤=Ó=†ÜX=l=ŸÿÁ=§¡ƒ=•—w=“&Ô= H=xÕ -=\@µ=4bT=súí=†š*=—T£=Ÿ5û=‘Eé=wüå=–´r=’2š=ˆI¸=–¥v=¢Û=¬7³=™Yç=­¸=¹Ù=Ží¨=‘éã=—çQ=—Ðß=J=Ê=¬Lç=–å= Ï=šÉ=Ÿ\±=§,=¯ˆé=§Ž´=šh!=jrj=}Jo=‡ûƒ=žžÀ=«$|=¦Øà=˜{9=§ Á=Ÿ”*=‡ß=ÖÑ=@ì=”³I=–ö =‹=NG=Œ&)=Œeh=Ä&=Ž5ô=Ž]m=’G=mÖ¡=€:•=ˆÇ=u=žõ¬=¬2×=b~=’Xj=G=’R¹=‡ãÌ=ˆœ’=šl4=‰û°=s›=­©!=´&4=µQ'=«¡É=ži£=—±=•Ý—=DŽ=ŽA=“2ù=§'=¥¯m=¡’ý=›·M=›ô¢=›Ùa=’B»=¤BÚ=¬¥=¤],=ž¾r=›L.=›fG=Ð8=…®{=[^j=¯¸=.’=€ð= JH=£L=—êë=„«=ˆÝc=‘×3=RB5=Tê¡=c\â=Ü=…ÈR=€p =Œ*v=£â =¦Ž=–pÅ=—þ =™$Á=œ„=•2W=”o=“ìp=jÜÍ=o|:=‚Ê=‚a€=™ÁÍ=©¾=…ÄŸ=ŒV&=}H=ŠÅö=t3×=e< =Z`=M¨Š=U=`*ù=^2å=l¹~=„v=¨Zµ=¥= î=¥£=€=& =£Î…=•9=Œ`Ð=€LZ=ŒÐ#=œW;=¼ª)=¡·Ç=šåh=˜q9=–e­=˜Ó¯=“;;=ƒê!=’Äp=¦WO=žú=¤Ú=ª&É=¡+=‹ÙÅ=€¹Ü=j|ä= Å-=¤Y¸=˜“=…Jò=±Ï=”'j=©œk=žÓÞ=˜ö…=¨ão=Ž¯÷=‹=¤­Š=¨Å0= —¸=•n=¬;à=¨Û›=§Á£=š#j=†$â=p³=‡ãw=’Û= ?õ=®S›=š­=”)™=¡V=}O¸=„Ó=‡Ú´=Œà!=¦c=±i§=£¸Ñ=›ŒÒ=–IŠ=9B=sª=v#O=v$=„έ=‹N"=’l‹=›‰B=ë}=[ï= Ú=“r)=µ+=‡ºU=ˆ2(=—%D=¡›l=§o=£=†d=¯==¢=¦Ïr=œV=‹?=Ðv=”ú4=ž`ú=™#…=‘Ž¬=†‚~=¬î=ŠŸ»=ˆs -=‰j=–+=«Ô=š<ç=–81=šÐŽ=¢§%=V”=Ÿ=¡{Ò=œ=s@›=¨€=B0=‹‘H=†n€=¾=€}=u™=•sØ=š©ê=®î=}ü\=sÆ=›ÆÐ=¢ö7=Žã®=†Ð=‰l•=›4Ò=mh<=tÊl={×=~U=y}„=¿e=Ÿš=œAv= J”=¨ð,=šŽ=¢¯0=­bà=˜&Þ=“Üx=•‡ñ= w)=¢ -l=“؃=z)†=—:Š=™šV=šóç=—n¨=¯ò=®—h=’#m=—ÀS=”=‹w=#é=‡t=o€´=&=EÌy=6ÁÊ=%p=e£y=ŠŒ^=—.j=ŽÔ–=¯öî=°Ò=¨Bß=¥La=ž˜H=•A=’W~=¢O=£3³=Š^´=”h=ˆú=†±í=¤w=Š]¾=z=z+=eÖ»=kT“=rV=d_=x=ž¹Ï=’SÝ=<= û=,=k´=¤QŠ=©|6=£{ =‘€÷=’lÏ=—¯^=‰4_=…å}=‹„C=`Ô=ž6"=¤|Œ=¡ø=‘þ4=†ë=€®l=ƒF=€²/=z7k=z¨v=o¡=eœ=\Hg=iÛ =Ž¥=—·Ð=”j/=Žl=ŸO[=«Å=¨b—=œ‡=x•=Š™=šc­=ëD=¨ÑÒ=™»=‡ =sn=`þd=*=‚?Ê=ap£=…m$=©«"=¶iË=½K=¯“=®`=«Vƒ=¸Í =žru=˜BP=™Ö?=š¾Î=ÊO=Žk=™tc=ƒ¼<=í‡=ƒ=…=v=¢#á=«¤=“õ=™jW=ˆñÝ=ZIÔ=x©8=‡.÷=Ž - =•¤c=¢ùø=‘²Õ=Ž#k=Œ¬E=Ÿä¹=¢€P=“¥»=¡],=ˆ¡=‘ª=}Yü=ŒÈ¦=„Gæ=Xê =2£¦=ƒ±ú=—ù=¶Ó=|…=s$§=uHÖ=Ÿžl=¥@=•ÿ1=xÊ=†î½=†\˜=n+=[îÀ=Žc=œ=ŽŠ1=“©#=“T=ï -=‘ƒŒ=–‹Í==’Ñ=† =Ž%1=>!=‹/×=ƒÆ·=t¥)=zB=÷ =’\Ö=h/=kþÇ=x“L=‡ñ˜=pÃ=q§§=áõ=`=‰ÄN=‘fë=ªï=£‹=¢-Q=¾Q:=žŠ¤=¡•=¢2=¤pÍ=–gN=¿Æ=›;=[=•ê`=Œöê=‘Ö=™¶c=©{µ=µDÍ=†ž?=„t~=“UÌ=e=‰²ô=„¶þ=ˆÚù=™=>=‘×G=£õD=¸ý=—wy=ƒ*¯=Š‚/=˜«1=ŸR¨=ƒ@¬=‘“Š=ZÉ=ÁT³=ÃXK=±óg=Œ=€T=•µ•=¦žê=µÝ{=•Õ=v¤f=fhY=€Š5=vŒv=ŒŽ¸=Ö¾=š¬!=˜R`=š‚-=°™±=¯éÊ=™TÌ=•Í|=’ëZ=ˆBw=Ä×=¨=‚fM=oª.=rϹ=„‘æ=Šp1=m›=UOf=P´Ä=~¹•=…5˜=YŒ=‘©=‡èÏ=Žbà=‡«¯=†{¨=‚æÌ=us"=÷=˜ -c=“7!=(h=ŒI=“”À=Ÿ0=éx=€ÿš={çu=–'ì=—3=”ã–=g€=vð=qE‹=‚Š=¸5=¯œ=œ>ð=“Ó”=¥Ûé=“y‘=¬ôØ=ÑyÍ>bÔ>ê¹>*%ª>F¿‘>©¤a>¶èµ>ºˆS>²`¦>wÊ>O¦=¡Îá=q"×=µM> ק>Tpã>‡¹f>z\>€È>[½>\=‹¬=|Á=ug1=ƒò=’8¦=‘dQ=Š m=e·=rü=e&½=u4M=\jÁ<ê9=4•Á=Nâ;=jÓI=ŒóÂ=“¶ =‘ã_=–úÛ=€°=œ˜=ª”y=«hº=¯,ò=¢<É=“#L=‡7 =ˆJ=‡îï=†˜z=º#=‹„=–=ŽÌ¨=“-Z=”ûº=†¹ê=„¡=æ=‘ó„=•£t=•ÙÔ=>=•Dá=”#Ø=–œV=œ0=²Éï=Å|0=Á š=¦ò·=‘€=¿›=€Ë‡=‡†|=Óg=œÚ=¢‡Œ=µó=oj=œ¹=…I%=Žó =˜Âe=‘ño=“/¾=’N=›“ù=†œº=y ´=‰’=–0ò=„¨q=€e=lG³=€ƒj=•æ=Z›=’~§=ž‡Õ=‚2=’\¹=²¦=‚v=­™—=›-d=“9=›Gm=•þ…=‹=€ª=†Øl=ŒY±=‡gQ=rS=Œ6K=œ*ÿ=”d­=s¨î=p?F=ä=…ûr=s‚=R|÷=,˜Z=ð=IÈ= QË=³5m=€=‡£»=–i=Ž"u=†‘.=‰‡Õ=¢ò=‡ Ñ=ˆìË=ÙˆÀ=·íD=W£=|¯ù=wâJ=º!Ù=°Tº=œ-Û=sQñ>ˆ¢…>Í¿~>ׂú>ÇÀ°>®æœ>.F·=ÙL=zDV=g¢Ï=V>=omn=‡¹7=ŠÖ=´+=ž¾å=²m=®è=ªíO> Á>BÖ’>²´*>½#>³I>«#}>XÂ9>>„=”'Ñ=‚²ù=Œ²Ð=¡k_=š=“°Ó=Šx=µ^=iGÝ=gäL=w&-=Œ<=‰,•=|=oõ=K‹=i¶={fÁ=1c=ˆrZ=”’d=£²‚=œû=’¶!=œþ“=œ…y=©öÖ=ž¤;=‡Ùá=‘ü€=¡nÍ=¡¡Â=›‚³=Ž^=ËO=˜<¯=š'½=ž]£=žÊ=>>=ƒ`ð=ƒ„¦=ìB=v“d= uš=q=@ ­=>IS=<=Uê/=z/¸=uH=l’ƒ=†^‡=ŽÐ=•à§=—1ï=„ =|õŸ=ƒë =‚G=uÍQ=yšÒ=ƒ7=Œ­(= ´ò=‘`ú=y¡—=|ñò=€é=‰#6=‹Ë8=lq=Wäî=pÅ·=}¶©=Šæ6=ÌÁ={Q+=u;~=U =[­“=~)=yÏg=q‹ö=nÍB=r³1=‰_=œ*2=±®=¿dž=§$J=?ã=°Si=³%¿=•RÔ=‘î=_$=a5¾=‡ð=‡ÄÐ=Œ+û=†z=fx=n£=˜Ý=ž4 =¡?=+ =ˆÍ©=›Q{=Ÿ.=ˆô‹=Š7Õ=š¶»=™½(=­>+=¦A -=ˆ•ê=ˆ¹=Œû=“ƒ›=–š=‰|=€!œ=›’ï=«4=ŸI=œ€d=—¾Ü=•¤¶=œnl=˜/=sÉ=…XS=¯·=£ÄÂ=‡V =zð@=`î=‡‚F=›ÔP=“-¶=Ž,=‡Ç=Ÿ2=Ë= Q=ˆÏz=‡ËK=r:=‡ =”f×=“Õ8=”Íž=§ç=¹Ê=§¡ì=žTé=œ Ó=—ë6=—ð–=—áX=Š7=‹¬ê=š¶b=¡Ã=Ä»ù=¹y°==œa‰=›²ß=¢ŸÁ=¨ò1=”}¢=‰µÇ=—K>=™²=„p -=„Až=Ág=ŽFP=–;K=“¡£=’°Ï=˜Ó=žúö=ž™Ø=œàŠ=—÷—=•K=¡š=¤5¹=˜xo=—ÌB=ŸÍI=œ4=€mÜ=}öR=x¹=†b«=•©×=R=‹¦’=‚¨ƒ=z>Ô=ä§=”H= zK=¢±¾=x|Ô=z=•C =¥!G=Îôñ=Ü'€=ð·€=ìÅq=éŽ@=Ú& =ÒÅ<=¡Ùõ=øÁ=ƒN¶=ͦ=†;=Š@=•§==šh€=§b=•‰×={·2=‚ÎÌ=„¦z=[l(=FŠô=xÁù=‚µ=–9=š•À=‰€×=ŠqÞ=••T=“<¤=dV=„—¾=l§°=¤êä=èÕ=>¤˜=×+|=Í»=y”&={îØ=‰Q¸=Ž -h=ì+=–¶l=‹ÄÈ=Š*ò=‡™=ŒMÖ=c}=‹x=Š÷=yŽ=~‚i=·¢=´>Ò=¥Ð=•D˜=m_'=…]Œ=”î=}K*=c|¹=‰n7=Â`=«=«Î£=žÃ7=©,=Ø>=íÅc> 1“>"¾>;È>6²>5V²>wß=ñŽ=­†=¦“=Ž=tã=Ž˜§=†Ê=— 6=–k>=”x¨=ŽUÑ=Šá=Š‚Æ=Š_ó=ÉŒI=ÑS¨=ó›”=õ©=üš=í1=ÐÎ×=©r=y¼=ŒHÿ=–Éy=l˜È=YlÇ=‘0ï=•â¼=w=šhÅ=“[=›…ã=¬[=›¶•=‹T=ˆ.7=…{¶=•'4=˜è¦=­O=¸'l>o!>{þ=óbt=ß©Ú=Áó¦=œ<Ç=}"¬=|‘Ú=zæb=yb*=yè­=šO=–FZ=ypG=‚Š}=‘#ú=šÈ=¦¬=””©=‰Fõ=ˆË"=‰b=k&1=iöÐ=rl±=w×U=‹çë=“ƒ…=›œò=ˆˆà=ry_=ž–`=­£ =m_È=]I=º=¸Bo=¢þ¼=¥£3=¯@×=•ù.=t%G=– u=¥5d=˜ê=›_«=W=„=œÿ=tÏ= òê=™¿ú=E=’Pj=’3=”M)=”û³=’#=’?‘=„6=g\=¨nê=¢º=¸=“Yô=”K•=r{Y=Z>Ž=€’=…ô=t~‹=‚c=¨Mv=¥z†= ËØ=–Ûº=ŒÅ=|!æ=od_=ˆU«=‹‹©=œzÁ=–ùƒ=}@r=ƒl -=‹Ôô=ƒe7=v@c=e|Ú=^,‹=h£=m}ë=~è=}rú=‚2(=ƒjý=„=õ=‹0¹=’O0=›#)=žæ[=|ˆ=Ž‹7=‡€›=‰Še=M=•%= Q=À=ÞXñ>;®>&ª'>V8>¬(=æ×ç=Õ·”=!h=ŠOŒ=‚¸=–aH=§šï=Ìü=‚‰q=ŒÊ¨=ŽŒÏ=Œ•w=“?%=©Â=›•»=†Ô¶=ƒñ=‚¾o=‰Çý=‹àö=‰L=‡ G=q™s=ƒH =Ÿƒ=Š£Ž=cçÕ=“ˆç=§:ñ=» ƒ=¿Ä)>á>´î>%gŽ>4@>‹=ÂfÕ=‚Ç¢=„=…2=sy¦=sa9=–4Ö=‘x=Æž=€æ7=€=“mi=¡DÏ=‡=û=‘R=ÓP=‡å=Œ×‡=™™=—6ý=”Li=’ð=’*=Žêt=ùÚ=’;|=”ÝK=ŸÏÛ=žzf=›%L=ˆlÃ=x]ç=†j‚=‰T=¡ão=œ§=jÒc=sÓ=€Ç -=’p -=¢Ì¬=˜Qã=”T=“Ró=“’þ=šN=›¶T=ž}x=”›À=‰ -=’ÆÓ=˜‹R=ª- =­– -=‰Þ‰=‹Û/=“§/=ŽúŠ=‡Ö =’çß=œf¶=—Sö=•=¥=YMŒ=`YÍ=Ú¶=–ÿÂ=£.=›Ì\=•Äô=ªbZ=²žµ=“Ë¢=ë)=Œ=‹0=˜ü=—ˆm=—2À=‘` =ŽsE=À= ?=‹‚M=‹ºù=¤=…tC=yb=ˆ!=Ž=ø‰=nš=„5F=‰¹ò=0=•ËP=‹³K=†ò§=„=“<=–â£=©©À=¨+A=¡ËC=››þ=“þþ=ŸÉ+=¦À=œü=™Ó«=˜F=–Ú%=“[=’ëE=’»i={Ká=_ç`=|Èî=NR=c8e=j™3=ƒ{ß=‚Á=_6=\ñ==Ea=í%=‡ ³=„¡#=„®õ=…®=wÖŸ=[™=4= lR=¨i~=©õš= À¥= b#=ž¡­=ž—P=žçZ=—’h=“}æ=ydv=paÎ=Tõ_=d}‹=ˆ =„Ÿ=}½ß=˜75=¤~¹=•¨ƒ=“Q|=ŽY=’Îd=œé=—%Þ=‘{»=~Y5=o =bŽ5=g¥‡=‡éì=né=˜º_=Æ…=ˆ[=›¨K=¡“ý=•'=—ÍÙ=¥2ó=¦›©=©>=¸åþ=ÃŽ=¢ëX=›§‚=”¬ =•ñÛ=™¾=†\=`eS=–q=¨Z=ˆŽ-=‡G”=£û(=¤òb=¦rs=±@6=ºÜÈ=¹d©=¸ä%=õ`®=óïA=áÔ´=ãa£=åï[=å[‰=å`=ïÝ=ïbŠ=¿fƒ=¾È½=¼tŸ=¨Äõ=“dH=¦N~=®]ø=LjÊ=¾º2=ot+=€mN=Ð =Š÷´=‡»=r|=2=žê0=–è-=zª=”Q6=¯B]=¤ÍÐ=ŸÔX=´Ý=—Ì=¢6V=™==ˆA=­X=sJÌ=‡'Q=Š‹Ù=è1=”k =¢•ˆ=ŸýÑ=h½=š N=˜K =ë=‘î=¨…ô=®¦=¸÷ü=±R?=¬^5=Äß=Ç9¼=šN=‘ =šÇ=þÉ=…û”=xz!=qX%=O3=‡ K=Wÿ=usz=I÷=–9»=™o*=‘¨=U…=”J=7§=ˆÔñ=a¸=vî=‹qm=ª =“,d=Ñ’=†•=~x=pì“=LšŠ=>“›=]°à=bi=n§œ=‚V=ö§=‚ˆ=u¾\=€‰É=€¡ê=wÈî=z ¶=~1Õ=x7ñ=t l=m„'=n¿2=ˆ¼A=‹òQ=“z¶=‹xD=„«d=wa=rF²=†]©=€´{=_jÒ=Vë=N8x=~È=ˆŒ™=iþÓ=[û{=*} ==$,=TÈ3=M=‰>!=š=›÷Y=œy=—¯ë=‘Eó=pëN=UÕ6=…+9=‡ ½=zMM=‡ô=™:=’í'=Žù¦=”$„=”¨s=‘ÐÀ=Žø‘=‰»=‘{Ç=—=›O8=™é=~¤=ˆ“*=œÄ~=£^Ö=¨j=Š-G=‚ºe=uY =u=ï=ŽÎ=‹²|=„_‹=ƒÅ[=—= BÖ=§âä=¢p=å)=é–=Šü=©Ä½=Ÿ%N=….â=Š=ŽV·=œU•=Ÿõi=¼ä=—œ9=ˆ²p=›*R=ªÖŒ=¢Ñc= ûµ=§=¡J=’Äà=ˆŽÜ=€03=·i=ƒ)¨=•Ñl=ŠB%=`Ïæ=N¢À=@y8=h÷;=r´8={F+=zn=xÌo=eá=VÚ_=jì=” Õ=šBd=ZÜ=£r=ƒúó=š -“=¦p=“k=“SL=˜èð=•O=‘wÃ=Œ-=‹Ži=šw=“ÌÃ=†¿ =ˆ;=‰;v=–Ÿc=“¡ß=wŒã=‚`=Š—b=ˆ¥º=ˆ -Ò=˜*ï=øZ=x˜Ñ=&6=„¾$=äÑ=’Õv=’>¶= +=Œ8>=cÐ=’>=_ù=iyw=‚æa=‚ñ -=ƒq=ŠÏð=Œ¤›=ë³=Öy=‹÷=žhé=¦M=ªŸ=Ÿîê=¥äî=›“#=“ÚI=Ÿ€V=¡VÉ=¡X =•i‚=†=’Ñ=—­3=œïý=™ÿÌ=“\&=‡ùP=€7ð=sêd=x‡a=Šá%=‹•¨=Œn”=¡¢Æ=¨Du=§«`=¢J„=˜ê=‡e={×g=‡ÿ[=‰ú8=Žbv=‹ ß=‡óÉ=…}=‡Œ"=KU=›Ä”=™‹ù=•ƒ=“%1=‰!=…¹=’ÜZ=’á=’FP=œ½Š=œ¬ø=•²‚=‰}=wÛ‹=Œ½–=X"=]²=uKx=&¬= —[=©`ö=ˆ¬=ØÍ=Ÿ§”=‘µ$=†ð§=¤GÑ=§ ?=´=’„=…®ÿ=ž4n=¤Ú=™Ñä=œéÖ=¢=D=¬ç=°Ð=œÆ†=œcŽ=œÒ²=”ßg=(ª=ˆ‚e=ˆk„=‹è‘=››t=«Ës>à‹>8¾>‡œÂ>‡T>†ö‘>D†t>%3Š=’G=—DF=¡›ø=¨£ß=¬Á=ͪk=ø*û>9{ò>^p`>|±>kÂg>Twù=âu}=Álz=ñü=„tŽ=‚ -=‘Þû=šØ=¥Õ=‰C¤=|›¦=‚=œ<=¬z=§t9=¤Ñ,=  ±=šÃ4=pï=‹u=Šr=¨•=¦yZ=“;‘=™)C=žeÃ=‘´=Ž¤=‡Ya=…7˜=‚Ô=ˆ*É=ˆPœ={•|=‡I=”_©=˜\=›N¬=·×Œ=³v÷=¬q=®`=®õ*= ÅÒ=¤\=¬q`=­Æ=­q=¸>Ö=¶=¯X¾=´<&=·ˆ§=Ž‘=‹åú=‘G®=‘­=üQ=Š¡=ëê=©!–=¡ø=›Vš=¨žÖ=§Qv=”S=”, =”:\=®=-=°Á9=—âà=‘+X=‰+œ=ªK<=² N=¤y_=žôh=—–3=¢=¤yµ=˜¬°=¢ä=°Ö=¯‰Û=¬BÆ=vŒ=²=‡=ŠU= Ù=°04=¤Äô=‘¶=“@¨=”?(=—K½=£b=¹ƒ\=º]Ä=º¡Í=±ß^=ªÛK=œî3=¡ô =¤‚`=¾7¿=³’ˆ=žI`=žhŽ=žœ=œÂð=—Cè=ŒqF=‹¼=ŠI›=ˆ8=Š+=­ð=–½=špv=Ÿž?=˜ÖÛ=Š)Ö=‰[|=‰7»=¡¯Œ=ÛQÌ>'ña>’S>>±n >³)Ë>¦›>Œ½m>ýN=Èy™=¢Á=¢"=¢¥‹=˜ž`=”0=—)t=—•Æ=˜¿=ˆd›=t½=…<µ=ÀÛ=£B=¡Ì@=§Û/>(‡>F™>•$Ð>‘­>Ž½>hì&>+®í=´"8=§†= R=†¥=ŠÈ`=“=ˆäç=†6Ê=€²Ù={šê=u_È=ŒÉ¥=£½=ŒH@=†¼ =ï=ûx=ŽÒ=ƒœ³=˜öQ=ªK=¯²Ö=®%æ=§e=ª|=«ñû=…Rq=…1,=ŠÐi=‘È=”¢ë=¤]=¡û¯=˜=›ó=™L =‰R=ƒ¦=sÀ¬=l=—|e=ž®=ž›=ž7ÿ=–xÄ=•;¦=–‰‡=š'”=ž­Ê=”# =Ž®´=Bh=™¡7=­cÎ=ŵ=Æ­=ÁÕÿ=² -«=¨AÝ=³—=“«1=Q#=’B+=›qþ=—Òß=“$=‹Š¹=‰-ô=‰Éð=˜*N=–Yš=”=“8‡=“rR=˜5=žwÓ=¤d=¦«ì=ŸP¾=‰=˜ð÷=¢èU=-l=Žâ=“é[=‘ym= Ô=€‘Ï=‰Üë=— =œR»=šf=å8=‹-=˜Ðú=›±5=›¬ò=šk™=™Ý=˜SÉ=”©€=‘®=‹Ê[=ŒŒ=Œ»{=Î=‰qË=‚µ=bUG=gj±=žÒ(=4€=‚^¸=™3ö=œ§=žXð=Šþ$={Åt=|ÇE=Š=Ÿù®=£Ü¼=¥ÆÎ=¡ýÖ=¶`=vLJ=t¦¯=lö=™Æ#=–œ=“'ì=©/ÿ=©öy=©—_=ž{è=˜Ñ¿=ž6ù=œÌL=›.P=•( =–­=¨ ø=©•=«Š˜=µ†<=±Þ¯=¤Uš=ŸÕ=šñ¸=”Ú=™MF=ŸWe=¤ß==£5š=Œïb=‘=•™k=‘úg=’9<=•Ïï=qÙ=Žf±=ÙÊ>)ØÅ>‚y¿>›7·> ç>h_>AÖ.> ¡F=”ex=Šõ=F=Œ(ñ= -™=µU=²Ä|=±0é=¬ë0=­Äe=´áv=Ÿ’*=î=…Èõ=äg=§.j=›÷Ä=—~·=’œ`=’$y=‘Ùæ=‘^Ý=•®§=¢¬Ú=˜†=‘¬…=“¡ù=ƒÑß=[qÿ=tÏô=w±E=b6=v¾=‚ 2=™¾'=ž•ê=¥,Œ=Ž×õ=‡x=ŽÆ=˜QF=¡dƒ=Ÿl=Š“z=ˆ®ü=‰Z‹=Šˆß=ŽÒ€=‘±¥=–– =›;–=”«¹=‚[Ÿ=…>O=„Í=€Eh=~Ä=yWú=ŠÂ=Žh‘=‰Î=‡<;=€$›=m¾=Å`=˜1=AÓ=ŒÅÝ=‘l<=š§Ë=¢ìn=’ç=‘û=“k@=€yœ=|žf=žv.=—Gß=‘ö=€9ü=†*¸=™¶ÿ=žfÒ==-=ˆÿ=ÛÂ=’Á=Š@Œ=P7=œ‚Š=£L=ŠcG=M•=ƒ¾ =†Oë=‹L†=ŽÕ =•Ä‹=£n=¤›ë=ˆ\=lï+=YÙŠ=”¬¼=™Æ = ì˜=–Üë=â‚=’îÅ=„ÙG=l/¾=‰n=‘š=Ÿò×=¦™r=¨ß‚=©xÑ=£]v=Ÿ b=ƒûs=‰ºÌ=˜$à=§£9=ªŒÀ=¦J=£ºÂ=¢DR=¡°Ï=’âÉ=zå2=™Ü=›hÓ=ŽÞ =ŽÂ=Œå?=ˆ{=˜±=®>=µ8Î=²éa=©Ö'=ŠÔW=vO=–I=Œà=‚¦ =•ƒÔ=”Ó=t=ªj=‘µ=˜y©=‹yÐ=‚@X=ˆHï=Œã=•§Ë=ïn=>=sL=•R=‚=•z¦=³L=ˆFå=®=?K=ŒY[=•ÎÇ=šL†=’è=ˆY=}…=†Âp=¶!=ŸÃ×=¢´= ‹„=ø=Žu¢=Ž±0=¦1ª=™iD=Š,=£=ÿ›=Ž‹ã=„%=|k=kò8=†Œ]=–N=œ{=™âÃ=–²=–îô=‘J=ˆÖR=’’Â=“ú»=Œ‰±=Ÿ¥=“^=kã=nÊ -=vùY=x¹ë=m—S=J*}=•°==¨AŠ=yÙí=b=€æ9=UE=”ä=\=««=Ç·=äR=æ=ì%=ˆ†=†<ê=†L#=Õ_=›‰ˆ=¯²ÿ=’W_=Ž{Y=—úZ=—ào=˜9D=‘Y¦=ŒvÅ=‰/ =qF=R¶=‰Û=”§G=“X}=‡j =œ†2=¦Ø²=¯¹®=´Gþ=¹ š=¸w=¤=Šc=¨…=Ž©ø=ÚÚ=’V=’•€=•ðè=˜Aª=˜™Ø=•©=ƒ‘°=^²=§D1=¤¿ü=’]À=‚£ž=ˆqý=©Þb=Š°a=yÊ=w>=lÿJ=f»%=Š'a=‘¾=œîz=‡Bô=ŒÇÔ=¥’²=¥Ë -=¥ø= •™=“´~=™õ=°).=£Sý=—Ç=”7u=‘¥Þ=\–=œB=š^ç=ŽÅŽ=’ùh=’y=ŒÌ:=½G=uös=†NB=„™ƒ=(¡=‚ÒÄ=ŽÛ÷=Ÿdå=’XÉ=Š²L=}Ÿ¢=†ÉÆ=…š=vÑú=}¦4=³Q=ˆæE=‚zÔ=ytS=D5=[rê={?X=‚Ÿ“=‡¦2=Þå=[=Ó =€à×=³ž(=ÒÄ=÷¦=ðªŠ=êÕg=͘=µew= œ¬=Ÿý=˜¸Î=¬¬= "C=–—˜=ƒø×=’Ú„=•“6=–­w=‹½=‹„=Ÿ“Ú=š]=î,=­*Š=žÍ\=Žˆí=“&= ¤=†u¬=–ç­=ª=ÁÿI=¸—â=ÁCa=Ì´Ì=£`…=šŽä=¦°=š²ë=›Z=«Ë=’¶=Ÿt=žùÎ=Œ«=yf=¶ñY=¬Çô=žò?=—áò=¦ =…EÓ=tŠ=‰%¯=§®=ˆP=…„<=—úñ=™ÐÆ=šÖ£=‹H+=:c=shn=k!­={ÿ÷=†›=Ž3>=ŽÑR=‘ÆÄ=£Óõ=èk=yÒŒ=‚NÕ=‘îð=¬(p=Œ s=ŒŒ=îò=’hA=˜=,=¤0I=œã›=” =ƒ[Ù=“þÅ= Ï{=¬÷†=¶!«=¼Œè=Â=ÊÝ=ÐTÐ= ¡õ=œo¸=›®ô=ŽCØ=€² =jä÷=,=‚—˜=ŒWt=Š*=”À§=§s…=Žaþ=‹Ëp=‹óT=…8=wk=¡Lç=¡ëk=›v¶=§†=Ž°D=›7=‹{S=gô=œQ=Ï©=¢›Š=Œy=ŒŠI=ƒ æ=x½=Šv=™ðA=¥h¬=†M+=…áÞ=‰€=Œä¸=\ê=•KÐ=“—=„Y=jß=ˆeÄ=†`å=ƒí]=šr=E=yä‰=†*§="Á={êÃ=Uo$=]Ëï=xB=„sÕ=‚4«=vo:=•M<=Ÿö‚=² -ô=¯ØÝ=±£]=¸»º=³ˆb=«T¾=™ïÙ=Z=‹ÌÝ=Ž¬ž=£T=§V«=¡!Ò=“²Q=”¨=¦7Ü=¦…=«G€=³öó=˜bì=3L=’!3=‰9C=‡Å?=‰²=Dö=–½˜=¬€=ª$û=ªxF=P=”á=”¨¼=•j=~$À=oG=¡5"=Š}={Ì=‹—ü=‡û:=§'=΋>¨Ê>8Q>h²N>i¤Ú>aæ>3Ðp=÷|¥=¬z‡=™t,=‹¶Ñ=„.=¯`=¦€= Ã=–êã=½ =„lM=¡Þx=—¨×=_=¤&Ô=ŸLý=Ÿ =™e%=Ðê=Ž@»=–õˆ=§{½=±n=ªƒ,=ª…Æ=ªP=¤*=°Y¬=¸Ä=ªn…=µ;©=´F=£Ê=ºÌ&=Áå=ÄŸ¼>y¿p?'¨h?ê?¡@?ú@Xå~@Xí@/Mÿ@ÜÙ?Ž/l?z°l?‘ °?ÊŽÑ?Ç{?¯æ`?Rx>Ð>Ó>\g3=°¾Æ=Œë=‰Ò=–f¡=“ÿ;=‘m=’‡h=³Ìè=ª/ =•2a=”¥¢=—[G=—‡š=‰i=Šo -=‡íÑ=kxS=ˆ_o=šA=bØJ=ƒ=æ=–vÍ=£8£=½°=ó¼Í>K>Ü1‘?ûm?C -?Kêé?BÏÌ?v3>Õû£>™²ä=ÝVP=¢~™=ŠôO=‚»´=‰Âü=š–=°&Ñ=‰’F=‰Z_=†/#=ˆiw=•ƒm=¢%£=°¶Ö=¦´¿=Ÿ×ì>:sé?»¯?Yâ?¹áÎ?Ò!5?àED?±S:?‰Hb?J¯>–k>"qÊ=ÍãU=á¦~=Îè=ÕÆ=ýGd>¯À?«ªW@N6²@Ï)ñ@óߧAž¬@Ú7Q@£ãK@J·ô?GÒ>¾0§=Î{/=¡»–=–Ê==Šµ=sQô=›©ù=¹¯=ø2>fR>,µy>)sÀ>¾=éö)=ɶØ>e”>–^S?Xå?@*Ð?DÓ?AŠ? ‰>¦*)>¡³=–e€=œ¹=­@”=ùWL>q4á>¤kÁ>àúò>ún>õ­¬>×<">V>H¢=Ó -=Šm6=˜©=£F±=N­Â=pÅG=ˆ“~=¤j[=¯ü=¹ËÆ=Ï6S=ðˆÔ=ï³b=Ë{}=©ÇÎ=‘?ó=g=æ=|K=ƒ¥d=å=e2`=‰’˜=™È=Œ† =”ÒÝ=’5A=¹5=žÚ‘=¢cP=š$=™ñQ=Ž¨P=W×ï=oû=‘Kè=”Lå=ïI(>S>G”>$“º> ^…=ð"}=±û&=§O½=£ v=”Ñ=˜¿±= +9=¥èª=g®=zc}=‡ÑL=ž}s=”nx=Š 7=}rh= Ì=Œ½=¡¥0=’µË=~€¾=S‡V=˜K€=8[=‰×= á^=¢\¼=£E…=ªºÕ=Ókñ>U}ç>ÑSÕ?@2'Ö@k¯Î@kÌ@L) @%<«?…@·>à—µ>¬=á`p=´Û|=­:)=®ÜŸ=©Rè=©gñ=¦]·=ßOÎ=Ø\\=Ùc÷>W×=ê!>=ß“,=òä=ȈK=Ð¥=ßê½=·ˆ˜=›Î+=†Kk=iÎ=œ†I=³NO=ªöv=§«Ý=™%B=ŠÅÈ=úÝ=}I¸=jÌÅ=•<³=~Fö=l£=v Ž=c`j=ŒÊ²=Å?X=ÇL-=®üš=¦(É=Ô¢T=ãßú>»>€k~?æGa@§6*A",A\Ù¦A_:AV©ŒAr @¶Se@@Û>´5o>FjÃ>Š¨>ðÀ>o=áÉË=ǃ =Á. =®É™=¦`X=£>=Œ—¹=„õ‘=…°=\ó=ƒÍb=ˆ=7=ˆá=bN®=‚*u= ÔJ=p(Ð=Œ›ü=g‘=”±=”c=™(ò=™’=…Î]=ŠNF=žC=Á{À=Âç±=³À=‹²:= òù=³ ô=¹+€=ÿ >M#Ì>’~e>òJS?#ó¥?=Æ”?Lùð?2´é?¥‹>Éó¾>4 '=î( =¬«=£÷A=›_Á=›= =²²=›ˆ(=§½=¬4(=¤¼˜=€Ry=jË’=z4:=.Â=‹Ëø=n?£=ž©G=‘ø=Ž­À=ŽM=‘¸Á=’h=ŠÉ=››=ƒ ƒ=‰ª=3ç=”÷²=ŒHÏ=€›°=‚…E=„V^=ŒÜJ=–£Ô=Š[H=Ž4V=š…=7=•=•ÔS=›¢=‰¹Î=C6c=YKp=pìw=Èæ=o|=”#+=ƒ}=y©=‚ÿª=«Æ=–P=’¥ù=’p‚=«û=±>˜=´Š=¨[ì=¦X1=Ÿ =3…Å=Äb=„(É=z«='¬=ˆøC=’½Z=›· =c{=‹Û¥=‡O=ƒh=£ï£=¸õö=²êü=@=™É=…\£=?÷&=?¤Ä=x}=–Œz=‚³¿=¹ =³ƒm=ÊÅ> HN>ëP?òÊí@oÙÑ@Á @¿Ó­@³y@êÔ?êÏ•?K¨ >  =ÜL=À¼Ë=`Î=vK=ÀŽº=¢J‹=œÙ=¯¢µ=¥<Ñ=¥.=¡¼š=œD:=šX=”îÝ=§ø=€!ß=›C¢=Žíw=^WL=—x¯=€¸=hà=•ð =¸'M=®)=‘ëG=Ÿ`=tg=†5:=žWÝ=vƒ=uà¬=tU:={ñþ=¿Ün=¸œ|=²©û=¤7Þ=·çÉ=¶%{=ªÁi=¶›‹=ÐZ -=Ź=ŸX=¨€«=¸™=µK„=k=·=e=²×=­0÷=È‚J>'4'>­^?.@~žA ${Aw/³AˆšMA}SARjA™º@†ýÓ? Ýr>IUa>Í¢=åI7=¸®µ=Á“R>cÛ>s«M>t¡P>Wœ>%„®=ø¾Î=X.=½Ùj=ž=‰=Ão=ÇCƒ=›Î=šˆR= =”È =y¢ï=„GÒ=ŸZî=šÝn=œ´[=¡ñ =‘=–og=ŠÕf=o†Ž=wî=Zt=ƒ:ø=y”Û=^´ó=i =`$Å=m0=þS=“&=¯\=„¹Ý=^›Í=ŒÄ =–•=˜__=„š{=_É_=g¯š=R×=#Z=h/í=Œ-¿=¢*Ä=ŸtH=”þ\=¥„õ=¦GÛ=qaä=¡Ñ=¤˜f= ÷=Á§Ì=¨×¾=Üæ×>%I>9Àž>â>È4>à,>¶³e>—$3><ý2=ÿF*=¢a5=ʉ/=êZÜ>©Ì>_Ïç>øD>µú>Ïì>蟓>¿>›Šã>y&œ>¢‘=Àš’=Ê)h>ɶ=o}O=cHå=só‚=ŒDÿ=›V=— Í=‰ê=Œ÷Í=‹”=°ü=½À=³ä§=¥5¶=‡pj=e,Þ=h÷ê=‘ŠÞ=– ¾=¤‰0=ª K=zp=œú=”¦‘=£³=‘=š"þ=Ôoï>-æ'>vØg>¦Ô>Ÿü•>‰› ->j…=ëW‚=Æ1ß=¨h-=¤Â‰=ŠTÈ=‘Fd=™úy=žÎD=ŽÑ=ž6Å=¸{ÿ=Åt =¦4¯=Ð'=ï=‘®N=…K >Z¡D>y.³>dÝ8>CLƒ=ß)X=y½Œ=ƒéž=…²=†L[=›³-=ª¶=¸ì6=ðÀ=•[z=•o=‘èI=’ø<=„™ƒ=§@D=–÷=xG=bi»=žù=‘Õn=‡"Ö=ŠÆ÷=„_ô=Hs}=_!½=yã:=…Èÿ=~å=ˆUƒ=—=™kà=‘RO=Áé=zt=c†¡=ŠËc=o_==fÏ=BÅ\=é=4[=˜<=¡~F=—·=›9=ž¥@=–q=‰¤€=¥A=¢„T=¬#Ý=°ÑÇ=ìÚ=—„‡=˜»=–—¶=‰‰D=y©U=wë=ŠÇS=²Ž"=˜ªW=…|=ywø=Œp)=¨a=”´ -=ŒÒù=Z:=P–=ŒÜÏ=˜²½=ªõR=ÊNé>%ci>!^>·`>C¡=£^¼=£ª=š[+=™ˆë=—³=ŒÓŸ=„;W=|h=‚Ó=fn*=% -=bÖa=‘=U²k= =>`µ=VJ‹=t®©=zó'=«Ô‚=´Ô=µb =¹Hù=× =Öl=± ª=¯SŠ=§2ä=¦rh=¢]=¡Z!=£¾0=£¶ì=£'ã=Hù=Ž:=˜»x=¦<]=³dÐ=½‡”=¨‹Ò=œ,ü=S=‹Æü=’ü]=–È=;Á=)Å=´ÁÉ=¾cï>—4È>Èx¸@+mÕ@Bî?@Å«Ç@Âcm@±Ù,@š @ð ?Ó°Œ>% >½=»¼³=À\ =Ã.=±(©=¡M*=¦èç=¯ƒì=#=|h=ñp=•£”=”hî=‘ü¿=‡ˆæ=‰ö=‘¨a=Žr=qn=yß=’&B=‰Ex=^~_=l•5=ŠÀ=…El=‰¦/=}Êÿ=eC…=‡ =™´I=µ¸=^ R=„¾%=Œð£=¢°C=¦}=©ss=ª‰Ê=u.h=vš‡={ÞM=€MÂ=ž"E=œ&é= Ó=ò²=—“r=…›/=M÷ï=|û=–æ=‘ÒÕ=‘…€=ˆk"=×­=Šy=Œç =Ÿ*d=ŸÛQ=š±Ø=8é=w)d=wÓ¦=n˜~=w8ý=£.ž=¨ü=Â8»=·X =”Êö=šP=§¦Ö=™úª=‰r›=‰Aô=‹Ò=‹t6=†Å:=›ÇÌ=¤3=—»=”‡o=x=zW‹=¡¨™=œ{=wf=Œ #=µ`{=¨;Î=’ÙØ=½Å=„¦%=p*õ=Q1=oÞW=‡ -¢==“w=‰¾=ˆ&6=J²=BXr=²r=³:=¦|=¥ÑÖ=£æu=˜:)={±‘=yQa=tx¨=Œü=Ÿåî=¢Ì’=¨ ==ß'=„ú=§kÑ=¦ }=¥Ö3=À =Ô=“(ü=’Ýü=…Œ=}ÁK=bqñ=eðñ=k=É=}wæ=Šx¢=¥5=l¤‡=‰†¡=•N…=“j%=‘¢Q=„*§=‚H=‰«×=Š=u¶«=~´þ=˜•Q=œÒÀ=§FG=£Ë8=¢¹=©] =°-°=´Ž=¸=ž¶=W=’X—=“þ¤=t8=p«Ë=ðýë>t¬>…ÑÒ> 0>»¿>³rš>¢ó>sî«=ýXâ=¼Èm=s³y=uø=u¯´={@]=Þø=‚‹­=‚)=§ñì=´~•><.˜>J)O>”äÐ>•/²>•r}>’41>‹iÇ>†dý>€ú>]JE>BtQ=þ±ù=ÀÖë=›ˆ[=eÚ=%@=;”=š5=—õÚ=¤c¶=§)¹=¥ßÎ=™ÿÕ=ˆ–=‹@&=‹ý‡=`ò=‘ç==›È_=Ÿ*¹=Ç6÷=Ï`)=Ѻ=Ò;Ÿ=ßý=áŒ=ñT[=æ*î=Åßå=¼Þ«=«ž²=¤¸=ŸªK=š!µ=—9K=„:P=u0$=wÃ)=s(Å=››4=ž0º=ŠtN=Œ]E=–ò.=“õù=Ž Æ=’Nˆ=–<'=…û=kwÇ=“Øá=¤P×=¡¤ê=ž•S=U1=K'­= e¤=š­û=zùß=€ÜÔ=ˆ˜=q^¸=Iÿ0=hrC=€CŸ=ˆ±=3S=›HS=Y¾=u‡5=o £=‰q[=„ô‘=^À=„Tý=¼iÎ=¦î =‰·=‰2™=‰°=uÿ§=e„==— ×=¢l =€j=u§X=°§Ó=¬š=wì¬=|<Ä=ˆ¥ç=ˆÈ=˜Õ0=”T=¤¢=½ÀJ=ÙJ=¼½µ=±¸"=®£ =¯àà=Œ“ÿ=”·(=¿²=»{ñ=­j‰=µÎË=ÁÍ[=ša=yeý=‹òÀ=‘Ëa=–HÉ=—À“=‹TÛ=Š&=ztí=€ÄÜ=’9©=“S°=–9(=‹Jl=~-¼=~:%=…G=‰”Æ=Œ†k=•ÁÍ=–ÙÂ=‰¾ =‹3‰=‘ã=‡j=WÍQ=`ï—=oœ¤=^=MDb=ƒE³=“TØ=}ð.=q¾=¢T…=Ÿˆb=ˆ¾Ó=„çQ=d¼¢=cÂn=i˜ñ=„|˜=ÕG=wŸ=a:=Žñ=…°6=Œé£=Žu=’Š8=Ž€>=}Ô¿=…¡õ=•=Ž;=…æ÷=u8=ic$=sc‰=r—ö=ˆ8Ð=Š¢K=nð“={SÐ=—H=š£µ=  V=˜Í»=‘ü==‹ßÅ=…ÅÝ=…¼=„„$=ƒUö=m¸â=iCŒ=YÂ.=|¹»=¡±9=‘àg=€pÕ=~y=|›C=_èÅ=ZVT=•ßŽ=“^S=ŸÍ=2Ûô=‡iR=‚:Æ=mü¹=:sÝ=lh=;Ü>=Xðß=‡tÏ={=fƒ[=d+v=k^î=dT2=J±=u =šŽc=‡ë„=qNP=Tcå=Fìß=RìX=T¡=m Þ=qî3=|BÎ=z{=‡èÐ=Êñ=j¡=p,M=vÙ7=‚§«=ƒË®=Tá1=Vͬ=‰PÉ=…l=nEä=zö=‡—T=ˆ!=ŠŒM=‡¼ë=…â9=uº=p­¡=‚³„=ƒ“9=ð~=‚˜=‰Q=„Hl=~ß>=r/Ü=jh=Âä=…=’€ö=ß=p©=x"a=ˆ«=‰åî=ŠK¶=l=Ptá=PJs=Q1¯=…ï]=‰;=—=•@>=\†=ž=¹,Ž=žê"=‰ó¢=Úæ=¥P~=Z;=›U¥=€=„A =”;=Ž*=‚Q‚=•Ç=œ½=’’=tÌ=¤â=§îÖ=…i=„øª=€k’=ƒ«=ˆý=‘¶=™ Ç=‹Þó=…ÝÔ=œ}À=ž5a=fµK=lá#=‡(&=€,Ó=d`©=†¡=™÷©=‘î=ˆr=”R=•él=¡Cä=¢Û=¬rë=¡pN=,ƒ=Â!=«äÅ=Ÿ’+=š¥U=Êr=‹gF=lTê=k±=eþ»=sœ=…Ë=ƒûb=ƒˆ=ŒÎ==“ŒZ=”À#= `Ž= 1= Ÿ±=˜ïQ=Ž%=t¦Ò=\·=œÄu=©¦=s˜ë={ÑD=¥|á=›¹R=†H=Žâ˜=—¨W=}p‡=e¼6=Ûï=‚ì=›®=—Q=ˆ e=”c=§ü=›l¼=‘k0=•ïø=—Ѳ=‚­=Ë-=²¥=˜>o=¯1=œ¤+=†›e=[=|R#=sÊ=q2S=’æ&=“›„=–áô=“ï¸="=Œhø=Œ¾·=‡=… -_=†#9=ˆ“=¡Xá=˜û<=ƒ³b=‹û=•·‰=Œd=†þ½=¦+=¬5!=‚Kò=ƒRš=ˆ+§=¯=œ_=Ù=†V=zO=r–'=Šê&=Œ˜n=é¯=‡u!=hId=|”=‡Äe=ž p=©3U=Œ8=†§O=€°•=… =ƒ¾Ä=€×Ï=wX=ŽZ^=š¥›=s=ŠDX=‹„æ=‹Î=ˆ =y‚L=Và¦=€5=ŽÁ¸=t¬å=hs -={º={žû=z÷={M×=~ÂŽ=blÏ=Iwh=w™×=„¾=…¾=„Io=‚¯¤=ƒ"“=ƒX=ˆpË=gÞ=•Á3=˜†³=­Ì=­KK=¤Ž=‰”Ï=xÌÞ=Ž‹8= œ3=ªÆi=¯WY=¼îÖ=Î`G>2ð>]Ÿù>¢Õ|>ªIx>±ø°>’=$>„!8>ý}=Ü)=‡\å=‰Ó=Ž!I=Št÷=†Y€=’­…=˜!·=‰nN=‰K)=š*Ã=¢U=´z4=úo> •>rd|>Šµ·>ä ->r÷3>^®>œÛ>í>H+¶>xðD>h½;>b”Y>ºó>£=™L}=‘•Å=‚ê=€ÿ^=€OQ=}ÓŽ=|×S=V­=X’a=iË=p#•={ÿ=€ê=‚=ƒj=ƒæi=‡tÃ=Š‹=–j-=’…•=eÈ=Û_=§õÜ=ø¬=šp0=‰|í=ˆ`¾=„Ò2=Ž°4=™ì=‰v=‡Dg=œpg=_ü=‡³=}=$=T,ã=s±=ˆ‰<=žu=¥¿£=¥çj=¤T=˜!£=”Y =B\=yÌj=_Fš=u•š=}º=žw=¢Gû=°2¸=ž=‡Vå=•K'=œŠÅ=‹É£=‹°U=¥§I=¥v½=¤™d=³ÐÉ=ÁGS=²Í=®z=›I=šåà=S=–U5=‹Þ‘=„ì¤=‚Î>ž~?þ’E@ Qí@2™½@:>ƒj=ÙïÄ=«B=Ââ<=Éá©=¯Ì=®|=¬4¥=¬ìÓ=®Lo=¬˜²=«•^=³Üd=µš=¼UÜ=¹Š\=µ7=¸ïN=¼­=Äf=Ç݉=åôã=ñíy>3±>¶>*<>Øü›?;]@©Ü³A;¯mBÖBMÎB'~/BŸkB¶zA`û.A*‡‘?.Qm>ùs>GWÅ>(GŸ>@n>Qá>Ïå=ñŽ…=Þ2†=¸™Ô=½XÙ=Á$ -=ÁÆ\=ÁÐò=ÁG=¿4b=ºÂ²=¸)-=µ£=¦à=¢ð«=¸7–=³ú×=§ÊØ=§Øé=¨5h=]¿=˜Öš=œ6=žC•=§ =¥ÁX=¤“Û=›,`=–Œ—=¢%Â=Ÿ=\<=š”=¬r=ªVÕ=©#=›=–»Þ=†C6=ˆÚ\=.û=„l=|Àt=›†Í=ŸS=–þ³=‘­¾=ˆ\+=ˆdk=ˆ;4={Å=y²={ëæ=€ Ã=„Z_=”gÍ=Ÿ\†=ª1b=©Ñ3=Œ²1=Š›å=†O =™g=§~¨=¤Y= õb=€íŠ=‰Ì¾=›öP=‘A%=‰s=˜ =šÝL=šªO=–NG=X =ŒnL=‹ÇŒ=¥ÏW=¦¤(=js=tÕ“=„hy= A=³àx=¬Ý=¬Ñ=¼ˆ&=³¸¶=¢Ž´=i¾=šA=¡Œ:= %¿=‰dZ=“oY=¥Çþ=Ÿ•²=›nH=¢L=¦2=»æ=·Šß=°‡=±#Y=±bÂ=ÂÅJ=É´)=ä {>S£Î>­›N?äE?1Õ?4gU?%3¹>É»¶>­FÆ>‹Tå? G?)©R?;ë~?.-ç>þ®>ŸåÇ=ûi½=¶»f= g = 52=ž*=˜‚þ=–*=•R1=”"=–9Í=º½(=¬¶=cß=S°=I,=‘ƒ=’w¼=Ê=’¦K=‚=¸=œ_º=ª2…=ª œ=«Š=¯Ï=«Õ=¤ìu=‹et=b=¤=¡g?=–ã¦=”·6=’Ë=¬É°=³}Ô=±=£9ð=†}=¡8 =³åK=œ@==–©S=‹uþ=‰Oý=…÷=®Ãñ=Ã=ŸêL=¢›Û=¶i¨=´mñ=²Ë=´.=µÌ:=ÍÌI=É2b=¾ƒ=éÉT>!»>$ˆ >k‘°?2x;@:β@Ê—g@ê.Î@ùÄXAÓ>A\AV|AuA„“@Ðäù@¼aI?éž}?£·r> -m,=ïåª=×C™=°O²=ªo=§Æµ=¬Wz=²×l=§•‹=¢ç˜=°;x=°8²=¯qT=šÐÆ=‰ð>=’ý=ðh=w^§=~Ž=„p\=—/Y= PM="=^³=½=‘S=•Òâ=˜3#=˜õz=ža=Ê–=œì=¤ 2=©+ =“>=P¶=ŒsH=wl=¯)Ê=˜€S=’íC= lÓ=ž¹=œlç=—¤¯=”Ù=• ·=“UÛ=‹ =…@=~ 9=‚´þ=…_K=˜ž=™‚=›vÀ=©6¥=°˜=«à‹=­R4=³•»=ª:;=¡‰ê=¯À¹=°I=–Ö=—˜•=˜¾ =“êü=‘àp=‚ª=ŽÉ=·=Ô"”=ën0>q‰>Z >®o>%‰=Äáò= s5=’cD=‹ïQ=‹ó=ŒO§=ŽLA=`­=€f=‚lÚ=“T†=–Ö<=š’]=“=F¶=†OW=u`r=OQ=Œ2=œ==™KP=ŽHÀ=‰á=…0=‰Üž=Šú2=Šk=¨œ=’AF=Õ=V?=vÈ‘=€2ã=ˆI=Oý={ä…==¹= =”´9=—û˜=š»]=ŒÆq=’¨=¨=›íg= ù=†BŒ=…÷=Ÿ?=ŸMG=Ÿ%ß=—eã=”I¦=sÍò=‚ŒI=—gE=¡«š=§Ü¹=< -=›¦]=šÌï=ŸÎD=£øÃ=Œr =‰&=.%=Ž4Ù=8=ƒüb=‚#¯=‘û¼=•_à=š†°=ŸÙÒ=¢›â=–È1=­Ý=‚ºâ=–ñ­=£Eö=‘C(=‘ø±=—¹3=ŽBB=†¤¤=šbÍ=œI=–äá=žUI=¦n=™åD=”åy=‰¦^=›Þº=µ‚~>3¼>WÃ>ŒÕ.>ŽûÔ>’šl>\ />8ë”>4#>YD´>—Ó?>œç¨>ŸÚ=>Sp>4A=Ø°¹>"a²>K¢õ>žšd>¦Òú>ªŽ•>ª³á>ª»ã>…s~>wqL>[…à>!å$=ÄÔª=ƒ«=„04=—÷j=æσ>&#©>^Ï]>vQ>›|÷>{x>ä»>D{l>*“L=Ý·=½aÛ=„Ûe=–2a=¡=Ÿªò=›™#=’úH=àm=YË=™Ùj=™&=–àJ=¥Ã3=®øs>ç^>0ì®>v”Ü>ze>|Ù¬>tP™>Qê„=æmƒ=ÀB“=¥ =ì9>Dq>`Òó>pÂ/>}>Qy>5u=Îó -=­J[=’Ò=ƒH»={•C=cÊü=e<Š=e€x=—΂=™uÑ=ÐA=ˆ«Ç=ƒ‘ö=«€Œ=¯¶=¦m¾=¡Ó€=ž«T=¹þ=»Pú=²ûØ=° =­=»=Ä’=ÂfG=®=´]8=¹J>;á>àÂ?²Cv@|^@/@%FŽ@P?¶è?Aâ=>WZî>Õ˜>.Ÿ>€ÎÕ?—(´?ô)¹@m@—T@#¸?ÑÄ´?• %>øÌU>Í>«ÿT>s–>.0=Ûº=ãÈ1> Ü>ƒW>ô¶>O‰>›=Î÷h=°µ¤=Ÿ…ä=Œµ=’ã= 4Ÿ=šêÊ=˜²%=‘»=Œó=„¥Ã=pßý=iHÔ=²2=”u“=™äù=àóâ>”»>€Xå>ë”>¤‰Ü>6ÿ>‚NH>‰ÿ=õƒU=¢åù=š±·=šSW=¡„Ý=¡F3= c&=©½=©÷„=¦¹†=öê>Ç!>»Ú> -Lä>‘=Â2=™=‰=—ØT=ŽÓ™=qÅ)=d_=]‹w=ˆüU=‹<ž=ÖØ=pBí=]×D=~¯=kI²=P´=‡ÌT=‘pW=”Y=­»=‹G =hù­=i³=€6ï=Œ* =–oL=‡kó=†$ç=‰1È=ˆ2Ï=‡ -=sS½==’Lð=‰s:=†–=±uê=¨Î =›ÓL=sŠ´=c(7=ˆ&›=Ž0;=“Rˆ=–ù÷=’£=|åN=€†ÿ=‚™=ƒ$ò=‚ø¢=ƒ¶=‰Y–=EQ=Ò -=Ý™µ=ðy=ß+=Ö²Ü=»ž:=éë=xVe=}j¬={éÖ> Ö>JÇ>s=ä“?=î`=õ‰È>ë$>YE>B=ÔO=±Ë==kî=‹£=–Zs=yð=xGZ=wŽÇ=|Œ—=…]“=ž¹E=”3~=—=‰‘Œ=‹‘=Œºk=›5=»=”I=“C_=”=ö=•(=”çÚ=”¥ä=‘þž=—Œ~=Ÿ A=‡üö=‚Ã=ŒmC=¿t=ß=õª= {=œ¢=‡œ=#=ŒµŸ=g=©=jp¾=|$d=‹‡•=¢t‡=¡è±=‰©=…NÚ=ƒõ„=„ì°=ˆà =Œ1=€] =ƒé¨=’fe=”°—=–)=«óæ=¡3«=˜ÑÒ=‘Qï=Ë=“~`=‡Þ=†wp=Š¯á=‚»=xÇï=_¼Ð=€1j=“½=š4=žÔ=¡YG=—Ÿs=“‘Í=˜Ì£=™ÿ=™`á=ƒ‡á=&= &=“C3=°->8Q>Ðñ!?5‘?MD£?Ia\?E?>ßÀA>˜{—=¯/=§†}=$$=`”ú=ŠÓ =žq²=…˜ã=Œ!˜=—OÏ=œ@„=œô©= GË=ü·#>GW7?9?.Š?FP¡?3˜ø?“é>Ö( >Á]=¹am=™ÿ€=›z"=òè=¼ƒÿ=²ÌÞ=ª*Ú=ŒŠ®=^=cǾ=y4¤=…ë=š¡¦=£´o=¥ää=£]è=£¾ß=£›ÿ=¨ê#=¥®ß=¢†G=Ÿ!= ØÙ=¤÷=±]=·]À= «= =ÄxÇ=äl¢>/Ú >~àÖ@ã@}.œ@âWASOA{§A®@ÁùR@’©±?ÎÖú?jšŠ> ð=Î1^=ƵÙ=À×À=¦ÛÝ=šŒ=ˆˆh=¦ì=±§³=Ÿr =Úˆ=„º=„æ=|ôó=všº=ÔÊ=¢¾®=¦Vþ=õƒ=—(›=“õà=•¼=“Ú=æ=Žƒu=Žhæ=¯¹=œÐP=oÊ= =: =£j,=œ$u=•É=up=˜YÇ=˜’í=ˆñº=˜RÄ=¥ú=žÎ¼=š -€=—Šp=†2=„d=‡=%}=}…`=†Y=€=€y=o£F=„lƒ=0=Udà=j$R=†àl=‹jC=:¡=@=‡œÎ=|»‹=t.æ=’^=–,þ=`•=’Oœ=Ÿzl=š*¼=…Q=`k9=Žc=‘þ”=”ž¸=•¯€=’F=‡õw=h=–=§=ŒWé=€Á#=Æa=”(=”Ž==›i€=’ -Z=Šv¾=žSL=K/=mUE=ƒ“ =!É=š¦=d~=^‡Ü=Œûè=Â:=ÃC\=…Y=Ÿy@=­­=€h=s²¸=m³]=ŠÜ=‡ƒ=þÙ=‰~ =—:}=ª<=ëÃv=ü© >CÆ>«>‚à=îhø=×´==̘Ì=¼H$=¢hk=\­=HÅ=wÜÛ=zÒ=ˆÁ†=”v=œ\V=_Û=\±B=T=’‡=‰iš=kó}=–|Û=›¬N=–¨˜=ˆ7õ=‡äA=>Ù=‹W*=‚G}=neo=pNÆ=l´L=€ÈÆ=‚˜^=ZË=f%`=l?Â=w -¤=„AÎ=6 =!‡=x•=€Nd=ˆòÐ=Š“O=–=¦‰=…vž=‡Ø3=¡z=x1ú=jÀ =wð=€’•=ƒª¢=l.Š=‡9=‡1 =J¥Š=hl=v¿(=•La=Žå=‘c^=’ÐÅ=Â=’8•=Ý9> #¿>%Íq>5w¶>?]Ê>I’¿>?Ø>2êë>%^ú>.cä>×Þ=ýp³=•P¼=‹Ñ=’x=Ó`Y=½On=˜“ú=yj°=p2n=w'=UÙ.=`¦ó=} =‰Ë=—³Æ=«øÓ>ûR>@™Î>d#Æ>g€1>W¾¡>ê†=Í‚=œæ^=™C=Žù½=Œy¤=˜lE=Ð<>Ô÷>PO•>T2K>TX¡>Aš >Ž2=Ã#S=œS¿=uAÌ=K[ÿ=XZ=ªC=‘Až=Ñçã=³œ°=– =T=˜g=Ÿaî=¼=Ž—=ƒÊ3=¡È¾=ÃÑ=™Žï=ƒT!={èZ=u¥#=‘ƒê=¾£=ŒK.=‹ÅŽ=ƒã=xС=l%=h%“=jg=ˆBJ=†§w=…bK=¡=†0ø=cìe=™˜½=¥#‚=®y5=‹õú=”QŠ=œSÿ=‹py=|tá=f2~=Š2=Œ¨ö=¼à=ƒ¾‡=yÖ?=h@4=dÉ"=‰±Ü=œl=_×0=ˆp–=N=p\ž=w&f=„×=žõµ=“§P=‰š*=w~=ÕÓ=›¯ç=¤×»=äã=„y=ŒìR=‘A6=’éÜ=ž±½=…³Ñ=g–‚=‹Œ·=ˆ@=‚>7=€J±=‡rp=Šp=ˆ’J=‡\Ä=~³I=t%þ=•?= ö©=ª‰e=¡Ms=©ÓV=Õ*ð=ðBm=ë_8=¶ø‡=ÖBî=Ëz=”ÈN=¨ž=œTž=…­é=uŠÍ=…2}=¨¼ =‡­Â=wS#=qD±=…2‹=‡Nl=‹…;=‰\=n0Ý=H=õ=–:`=zQB=] ¿=¯·µ=Œ_ð=[èz=€Û3= [=¸(ë=–nî=Žñ.=ƒ¨>=n=”´a=£Bq=…¯‹=†G=‡DÍ=‡—ª=‹(=Ž¦9=Šxz=Š† =—ÿ{=¡p=„p±=‰»‘=¤k‡=«@==«ô3=«1=ŒÚÅ=“–==˜½÷=—RŒ=¤ÃÇ=«h;=ª -0= ¯.=‘×ß=¯õL=¬Ø3=¦\=—"=—+á=ÚÆ=µl=¨Å1=ŸŸa=‡Ís=·s=Â#[=¾×=~'Â=˜SÊ=Ëáõ=Üq:=ßBN=â‘w>¸ô>\Ó>E‚É>І@FKó@×cgA–®+AÇ_»AäÄ Aý'»A¿ÖàA–3AH/¯@¥;Â@·+>qº>,Hô>~¾>tè=ÌDª=Æg­=ǯS=ÞÁ==ÎF0=¾ý =§W“=«*%=¦¸†=¤>y= @ú=˜j=ŠÙw=ÊÛ¼=ÃÓ¹=£.}=š0¡=´œ=ÔŽQ>B J>VÂÉ>f•ñ>j)&>@#>¦=¢HÔ=™(½=2ø=XL={ ä=ƒŽ¼=Ša=Y®=~îñ=ñv=ˆ ¤=ˆ¿X=Ž†þ=•’ú=Ž³w=“!=\9=„==Œa=„ì=˜Í_=—ö=ƒy$=uŸ¹= :=Š Ò=‡0x=œjÂ=¥ª=u=ŠÙ:=‚ù=}|=sa³=s\=|ªç=‚é=‹—Ñ=Nì=ž]=¤”X=¥Õö=†}=yà?=p ==1í=\] =zPü=zÑ=Žôz=ª›]=‚©l=q$s=dur=‘[Y=‡B·=±=¶Î,=¢?%=í0=kÚH=£üë=­ƒA=²§t=ÏÈ=°Á?=²|*=›Æ={N†=yðµ=ŒÙV=ê=D¡=e„=…µ=mÖ=‘›£=]%Q=tÜ;=„9—=‚´ä=† €=ˆáÈ=€òÎ=ƒ«V=k’Ð=OåA=ŽØ= Ž‚=ŸCè=iÙÈ=‰‹6=‡á=f+=…):=™;i=«Fx=“êA>‰~*?Æð@é”AÑAKîARèÈA@éòAB=@ŸO?Á…F>ØEq>áÛ>xå=çy=Ùz7=­ºS=®=Ú}‹=åHç=¥œ´=«Ð=‘ŸY=£’=ÏŽÀ=»ø`=ªËJ=¨l|=ª6=§ß¦=”]I=`ô7=.n=‰ÃZ=¡-=“Äœ=”­©=‘æ=”y=žP=±é–=¤¯ÿ=ŠœË=ÿE=–v”=€Ä =/ -/=]š=‚±={A=S$Þ=‚ -X=—œ=hÝ=~Ç—=?=ë‘ù>¨|=l}=€ÿ.=‚øÜ=‰2ë=‰÷4=¬à =£Ûë=˜|„=oÄC=ëÖ=œ„=—£í=Ž\=¶¥8=­I]=“EK=Œ‚=œ'Ò=Ž=lwe=DÊ1=i½=†ä¢=Ì6=”‰=[=«=±±ë=}=w;=uJ=’ïU=\bÄ=U}=Ž´¹=ž•P=¡rH=ZYÚ=Q“É=‚Ž3=¥8Þ=‡žã=‚"¡=v=´]Š=šÞ=mðV=jù=­'Ò=žÝt=ŒYÜ=“ f=‡ÛÃ=’' =…L=s]‡=‹¿]=hp=† b=†0ë=¨#Ý=©ºV=ºa8=Ü]>š >ÀU>ÌJ>°J=Ù¦°=—#=“–á=cÚ -=(xå=˜üR=”P=¯ê=€=62ô=.È=<×$=S¶> Ô=Õ|ç='&=¨æ=–-Ü=ÁI=Œ¸÷=‚Õ=t™â=–®h=œÉ¥=’ì=š~=° e=¤™\= ô=IVA=r’³=¤‰=œ‡ª=–mm=:Â=Ž>’=•Ú=š)h=zd©=py¸==0= Æ=…tH=ºÃ=‚Zå=f¾s=^zr=Ÿ3›=•F›=hÖ¨=‹ÿ£=«~“=¸\Æ=Æ<=Å|Ý=±[=¬âó=›ª[=™öï=ŸÄk=«ôY=¹Ã?=­íí= [=­©=ƒŸ=™ª=¦±à=Öƒ/=ôÖr> ¬>|,> -Ï>å=Ýóé=ÏÔ>ÜJ> âf>¹å>k3>óR=úÆÁ=л=ÉQË=°Šª=ª(³=¥=«q%=ÛZÒ=؇-=é=çœ=™Ç>=œí=Âÿ=Í™™>Ëó>+E\>do>WÖÉ>,8ð>=ÌÉÑ=·Í1=k3.=q››=ŽñÀ=“ƒo=“çE=•ÐŸ=¢î3=Á¸'=ä7Ê>9>ï> ÿ> ¦=ªM=UáR=lS®=mÖI=V–²=Oñ`=„ëÝ=Œ¶ƒ=‘ì6=–ÝÍ=œŽ= ·=šš=•ë=“P$=•®ø=†B:=ƒ£a=“ÀI=•K(= ,b= ¹²=™§=—÷ï=;€=’€V=Ž¯!=Ž h=„=†¾j=Ÿ8%=­I=ȼ=û:“>+<>MW!>†¯>‰ Ž>½<>pÚ ><«x>”ñ=£f•=¡É=œü=¡™=¦!(=””Ì='.=€|¨=€Qu=’•~=•m=œ¡=3E=©£ß=±«‘> -Nh>ñ>~÷Ð>†NG>±2>²oh>¾Î>¶Ëí>…š%>zõ>B]D>8r±>7>ÅÙ>I€>å=É@3=¨¯Õ=†âÁ=‡Çþ=…‰s=ŠzX=’ã+=•W=“õ“=‡»®=}I=Œh=“~R=®ô€=³=1 =‹åo=”ÄÄ=—3‰=¬Rß=«ü=zþ’=¯=®§:=¯0"=·fb=¼¥à=ÊuÇ=ÇÊî=½u­=°!4=’úŽ=ˆî=}©¥=™ä=¸½<=¸”=·Ïö=¬P4=£“É=­ü =²l =½L˜=Äè@=Ø;»=à#Ž> -‡…>³¸>‡ -:>”ù?‰ël?·L«A ƒjA=AŸ‰A¢|A±g£A±ZûA²<A«ÏA–ÏäA†Š¬AHí‡A½@œB?œMX>>Ë[>nÐ>ŒÕœ>¶.Ø>Ó(C>½óà>³ø=>kŠH>; =ÐyÄ=©&?=Åú=¦?=™íÈ=›zÿ=˜Åp=—]=·N=Y$=›¿~=—wž={cÐ=‹š“=±÷÷=£Ó«=Žs=@œ=jöZ=¢`=Š3¬=Šì=‹vÝ=ƒ6·=v>Z=€¾#=‡#=¸E„=Àî±>`ƒ>qÞŸ>•¾Œ>–%>g”ˆ>XùŒ=æ`W=ÕIÓ=ŽDÄ=… =B‘=a3=•zZ=”ú=Ži~=‹æü=‰×8=†È=„ú·=ˆ^=‰Áo=zmC=o~=hüß=gß=Ž±=ŽÝw=¥’ã=¦:ƒ=–Ï?=–ëÇ=§W =¢^=Ž =”¦þ=•âæ=“0u=˜öï=2þ=‚<=0,=›J=‹lý=ËC=‹“K=Ž|ó=¬©“=¶)³=‘Ï®=‹ÓY=µÒ=¸æˆ>Ë>#Œ¼>·/Ÿ>β˜?ï?‚§?±¦>ó8¯>”ñ@>U¥Â=à.u=»ü=›76=ˆB=}S=^q©=VŽ=|Ç=‚×´=Ÿ¨t=£•§=UÎ=¹=˜q^=“‰Q=ƒPë=}ê~=ZT§=o’i= n=†õd=lœ7=mÔó=t²N=Çí=‚ªÃ=dÈ=V Ä=GÏi=E²U=”2=šu=¢â(=¦á=ÅìÇ=¿ð{=¤ƒ¦=™™l=zZ%=€w‹=IÉ=wÝ =lÙ;=_ž†=V1]=oîw={Î=Mù¼==ðm=gÂ"=t½=AòÈ=;7=~`¡=ŸÈ=jrÙ=aZ=Hb˜=N¬,=beÃ=W†=D 6=N =Uêñ=/“=ŒÑì=wxr=p‹{=H˜X=:$;=ä=•ä=]]Ï=]²Æ=U‘Ã=Wê,=T5b=RÞ=W½å=Y›ö=U”ù=w8º=‹"o=kr=W„7=uIð=€Ü}=‰Âu=‹Ü=ƒ¤=fu=k§o=loÂ=U=g¿=œ¼Ï=™û†=’…:=¥=‰6=Œ:h=’i^==R=dó´=wzk=€ -î=«‹=²É=€ ¤=ê=|ÕÀ=vüì=MØA=ix±= ß$=vö§<ý‹ø=Q?ý=ê=yO =`ò~=5=$‹=zË=ˆ9p=Ü÷=y-]=lK=oÃ:=~‹ˆ={…4=uFü=tT“=s!!=f[=V54=W#=[Áe=•7(=¥w¹=o0=[­=ƒu¶=ƒP=[r¥=_Tÿ=o¡=n=n=sô=‚²%=‘$:=‹ö=†ç=”x=œˆt=‚#È=qûÍ=oÕb=olŒ=€ŸÑ=ƒÂ=›åz=“‰¹=UˆA=z¯J=¬¸%= €á=~q=Mú=m—=ŠÏ>=–lA=‘ý=¸q=I7Ù=9¦Ò=^4ž=`.=y•ñ=mH=?ùë=E¸o=QaB=nn=…y7=…ˆ¥=†­f=‡åî=†³N=’û=“­·=Q‘&=Rý=HÒ=G‰=F;»=U–“=tY=€x´=‡¬î=…n=…4=‡È™=‡—=’ëÿ=–nÅ=•[Ý=”Kd=…3ž=ˆt=’š=šÃ=¤l=Ž†=‹æ6=ˆð =‡‡ -=}T=xb‚=÷f=|Æ=ŒñÛ=Œ¯O=1ý=‰ó«=vx=f¡ =NEX=KÈ0=LF=jÐì=y‚|=EV=4G}=eía=kƒ›=aG|=kE =wp=‡àË=ymæ=z&‹={A8=yÑs=x®ž={g=yN=yl0={"Š=g]H=héÇ=w'*=prö=c·Ã=e«=e‚C=p6Ø=yÝÊ=u.=lž=bw=ds=z=~šv=“¬›=«ûè>^>ý=Šj=‹z=Œ1i=Œ‹ë=ÕJ=Šò=ˆt=lpó=bš=„n?=„ÿo=†pL=„ËÌ=}E)=”ˆú=¶†=ìàÚ> ›>L3G>h®…>¨&>´lÜ>×ø>Ñøb>žÿD>ƒ´Û=Çç=ÕòS=ï¾Æ>Â:>-’*>yFC>Žæ“>o^Ô>d%à=¶ê%=¥{¶=x¿÷=}u=ƒÞa=r ™=P!I=KzC=JY_=e²ï=q€§=`]R=[å™=B®Ø=IDc=}+…=zv -=y·Ï=~ ?=‚=‹A=q =„—2=€Ü‚={{Õ=v;b=w×w=xh{=ig>=j‚•=q =nÌS=pœ=}l%=‚B÷=ƒÂ=ƒ6¨=oÈÐ=k¤=Ýí=‘p¶=“~h=”ãë=—¼=‹Ïî=F‘=ya0=vÃL=d°=^H-=~n¿=~U×=f ¹=^2ò=Hpn=^Y?=u†¼=‘= †Õ=¥³=¨¤=+Ñ=š5²=™œ·=5ß=DE=[«_=}²â=ræ=jµI=`á=Y?Ù=eÓs=i¸B=gA=hyi=n†W=iA=b½…=nß=xpu=Û$=…[é=†–=†ÕG=˜;»=—©O=Ž/Ù=‡@%=g-‚=ogˆ=zƒ²=oß =h%œ=”úF=ŸN»=Øa=ݾƒ=àfæ=âäÿ=ëøË=åP»=Ürj=ÉM*=¹W=³žp=²S0=)=‡úJ=}ʬ> V>'ä˜>K?¹?Ç??A@¹¢t@ÖTÇA3#A/QA!ˆŠ@øš‡@Ž@?ú×>Fq)=þ—;=ÐX=ÕÀ;=ÒÉ=ÅÿW=Äǹ=¿ÉÁ=º =´¸ì=¢;=”âæ=Šsˆ=ˆuø=ýW=z3=„±÷=A =r»í=‰”8=›ßŸ=˜©\=—`“=®P=zÒ=z©=€Ž -=”F=”!‡=“غ=¬l}=Á…|=Ï…ï=ÕÝÅ=¿>è=¹ýL=‘Û¼=œ7”=½à=äö> ©«>ˆ>ý:>Kw>t=Ž*»=†'=zª=Å#=‡Á=w¼=`pò=vÑo=€(=‰Þ~=Œ¤÷=€O$=ƒžÝ=”Y=Škx=sò÷=€Ï=„==—ßÐ=ž2r=xQ=‚Ä=•!=™‰Q=¤ò=üÐ=qi•=…ñ=ŠË;=|è=tõž=6É@=P/X=”ó=‹þ=† -û=ù6=’`(=wñ¹=j÷š=x =xÁQ=q6M=lÜ<=h™H=piý=w¨9=€ÔD=ƒ{X=˜=—€÷=‘ÒA=2=‰©‘=‹Ô—=È@=€I9=tàQ=Œø€=–$b=ÓÉg=ζn=Á>=¯†`=š²Ú=€À×=d2Ÿ=„ -á=‡Á,=•Ò‡=•û7=—™=‹Aw=vø=„œj=ˆñ:=nÝ=Ìs=‹€)=‰Û€=ƒi@=ƒû×=ƒ¸&=—M=¦»=Œöp=„É =qr=uò=Š½=VA=~ò±=„—H=‰{ï=‰„Ÿ=Š¡E=‰ÕÁ=‡W¾=Ý<=‚ÚÇ=Ĭ=‰T=‘~m=…Ç=\K=pQ5=rNt=‡ =‹…s=•}=‹i#=‚¹±=K T=;ž==zìß=z}µ=^ŠL=j/e=6–=uo=n\<=ƒÞé=‡¬Î=‹¤m=Œñ=…ÿ=5=ž¡™=…ù=j…ñ=sø´=x$¼=uª=yå²=‰Êå=€«¶=gk'=gEŒ=hË=‡Xª=‹Ù=£$O=•ÿ‘=X«Ò=nf¾=…™¨=‘È=–$‰=¸£ð=éJ> K> 7@> V×=þÁ¢=ê„E=¯Uß=–L=‘O˜=’î=š—]=Áû©> wR>°Ž>²ý=Î#_=ºž‚={³n=zGt=†¼÷=‡2=†Gý=&Ô=zþa=rŸÛ=y>¾=¹†¼=ÕE>•R>5> e> Ã5> ÷@=º{þ=««]=’à§=âì=‹Dp=ŠÛ—=Š¸µ=ƒt±=‚»=•Í=‚Óý=ˆfÜ=®O=™Á•=ª?p=³ôï> 7ã>î±>ð>Ïi=ÑôŽ=°n“=ƒ=ƒô¹=úO=ª¹ç=¤Ç =‚¹t=ƒV}=ƒ6Y=ˆc}=‹<ò=?Å{=7ÃÀ=‘÷e=Ä=‡%”=‹,=Ž™Ü=áS={È/=„°¾=~Üþ=UÐ@=†Ä=®¾&=žðò=–Äñ=žO4=›_»= =ã==­]=§ó=£Ø=¨á§=©•´=£Ê*=§õ¦=·ú|=¢Ýä=‡À+=v]=fîé=Ÿ8=¥¤¨=ªµ+=ª’=¨Çö=¦«"=¤€¥=§³V=©Þ=±af=´Rh=¼¸ý=´'î=¬¼5=â™=ôýJ>N>[´ˆ>âøØ@à@i»A1y#AbLIAWËnAKáAÂ@ÎÆ?@nÞAQÐAQµKAUÖAPÍAÕ@Ø.W?ÀÏ‘?F N>/Ú=ûöé=Ýò=¡;=¢Û=¦µp=£ª= f=‰nu=T=’ß/=”3‹=—s×=™ä±=›Ãž=š½–=š?Y= +}=¢Àû=®= €[=‹¢N=ˆÓ$=‡m„=‡µÖ=‹1Ü=£ú= =à=œ.=—-=’—=/ü=ŽÀ}=‰U=fÓ=æ|=E¼=„Lÿ=—: -=›³>=˜0Q=“Ân=‹ûÇ=‚C=u¾ˆ=‹ÈÁ=k”=x”>=pÕ^=[R=d6–=j±y=Š's=8j=‡§‘=ˆŽ=Œts=„›=n._=… ±=‰2¾=ƒû’=€aÌ=ktA=v•½=€º=R=?P=1•T=Bï=j©R=uÝ©=€/=g»$=a?p=91=Œ??=ˆÖœ=ˆÝú=‡ÿD=sªÆ=oOÌ= ðƒ=—Á=E=‹n=‘™Õ=„3I=Ä=£T=‹“L=ô =€â =€=€=€ò$=|)=o–c=UÅX=V–b=X~i=…ë -=ˆ¯˜=mKÅ=sK=€I€='ß=€½[=„PÌ=‚c=jd…=€Cî=Þ×=Š;©=‡xª=‰A§=ˆt=|‚=zI~=z©ü={%d=y–£=ˆšš=ˆÞ=ŠæD=}ŽÇ=dÜN=†Ýá=‡ç=sãú=y¯=‚tD=nû.=]Ô^=e*F=f~©=bk=kž={7ù==Ç=qÍ=€µ…=ö<=x’ˆ=u…Ô=oª=v*¹=z§Õ=t =}¦y=•(d=†¾¶=j8X=Œ,½=•'Œ=‡7Î=‡ =ˆ Ÿ=„WA=€®=oˆƒ=m^è=‚»±=€²b=z@=m=fŠ=–E=˜Â§=…kQ=‰;Ò=yé=Τ=‘á‡=²”|=²ôl=®@ò=®'”=¯(=“u=Š"x=zÍÉ=vD =o f=i‹=d’=‡¸k=Œ.Y=‘!(=‹·z=„‰S=lÒÊ=^¯=o =‚KÄ=¢ .=šSã=“ÝR=…f=>Æ=„¿-=‡ró=Ãû=‰å =† î=i÷\=u¡ð=’M=$=ˆzç=“á½=œQ×>zç>Yo'>½QF>ÅÈ>ˆß>éÔ‡>í©ˆ>å$å>ÙºS>Êp >¢«û>‘Ur=¾µÙ=­›=j=†ÿÆ= -œ=¶Ø=ÔQ=k=bãW=V|ð=Sà=R©=Ÿ+=„J=Š¸û=‡:¥=„À -=j *=a¯'=_ÓŠ=€“Ð=—ê=”hU=‘õj=º=ŸÜ=O=]T=R=LÔH=JŸ=r)É=}Wš=„·(=qGÁ=jÕ‹=å‹=ŒQ­=†kí=”7=œŸ0=‡‡=€Qž=cÏÐ=pÙ“=|uÂ=r$P=m+[=SÌO=Yq=b Í=à^=‹ß=YR=]¤^=Ð=ŽÍ]=™ˆì={W =qex= û=s3=[#º=eîu=i<=^h¡=n4‚=Š7=… -o=ò‰=d½ü=o8ó=Ï=ˆ=] }=zb=ƒ‘š=“T¦=’6’=@¨=yìÙ=jõ_=‡Yî=ý=hP=lù•=s;!=’wß=R‘=|ÿ;={!æ=w_¸=s®=sƒÉ=€n=w=kr¢=hâ&=hc=ˆ‚=‚·=q·ì=Z[¬=Jg=a‡©=gøe=}m\=¿e=€˜=Žö=ƒ›=Š =ˆÝÓ=†Ôv=m©¬=eŽ÷=¾P=ŒB>=‰Ô°=ÞÇ=w”Ø=ƒôñ=}x„=j«#=i¦=gû=†èc=†ã{=wÛi=vbÉ=w¾=Z½ó=Z? -=„Ú=„Ýó=„<=‰æ=‰–5=rw=‚Þd=Žmø=€˜ =wÃ\=†Ý=†±$=ˆD =L A=*G=Šä=ƒH[=`’“=g¨=m¹3=ræÞ=lm@=R$=ôÉ=“ãÓ=”hB=Œ~6=\¤=hÑÃ=t#'=„V=ˆ!=T¶=‡ú=vÂ=wí“=xMP=}ºŸ=€­ =„,Þ=‚BE=€ªâ=‚ôG=‡u=Žø‡=Ž-¼=Œúc=Téî=S §=PT¢=s~=‚å£=Š ±=‹<»=ˆÀV=Š7=Šî>=slC=uÜ=}å—=jõ¸=]Ð!=mž£=qF»={½ý=ƒ«Ø=ˆ3‚=‰+E=¸D=AB=D{1=H 0=aP=êm=o&ô=qè¥=tL =p.K=pЄ=qÚ=rfÇ=uí=‰Ò‡=Š=/={9=‚zW=‡¼I=bî=e¯£=‹Z€=ƒµ=rçœ=i•þ=o°b=ŠRS=ŽH6=“ž%=„9x=€° =‚>H=…ù=ˆŸb=ž¢3=ŸAý=wÿØ=hzÐ=YWI=…ÖÂ=‡¢+=jÑù=u9 =~Š=tùN=rê=tâ^=ŠaÁ=š=’m=Šü#=…a¹=ŠêÇ=, =š[U=–óz=tEO=ŠÙ0=™Ã¶=Æ=‹×U=Ž6=…’²=}˜‘=_f•=aÐ\=´I=pt"=bÊ+=´‹3=¼ô’=Àð°=¯žº=¤mÂ=Ž’=¥6=Ó -=¾AQ=ºj´=Ë÷l=³à=e¤²=_S=]:»=e2Ý=e….=aC=³`=×’Ð=ub¾=tS^=z«¤=x¬«=xN=ö=¬=‹‡„=‚Þ5=~Œ€=y=†ô=Œ·K=_:Ò=SPô=aË=h®´=pFÔ=hÉá=o?=ˆ‡=„"À=­=es0=j|P=…£=‰öN=¥'=yÀÒ={„$=„Š.=}»=u†V=‚o›=/Á=jQ=z{³=D=l”n=eÃ=Zü§=_€c=fŨ=k‡ü=bÜf=\Zª=…&¡=‚m%=F§¤=[K—=lÊ¿=ZK.=Mð&=1‚Å=`L/=}Ïê=›Õ=†Ñ:=3MÐ=\CÆ=ose=€8ï=€ m=²B=‚Íb=†=Æú={­=q$=~£Ø=‚ùÓ=…o–=†T=‡ØÀ=d´¹=Yź=KI˜=zíÇ=‹@š=lû÷=vi«=ƒvK=‹¢=ö˜=’£¥=’%=’4'=€2m=|ת=€ìÎ=h¾=€½=ˆm,=–;=^ª¥=‡±ç=”¤=’Ì=ŽíÌ=Š<¨=Ž,¦=^c=’‚Ø=„¹â=mÃ=Züa=mIÍ=“Z=„µ¡={Rø=‚# =u— -=`Ñ=‡Úf=Že½=m€‘=y°¾=ƒ ³=r”6=x-€=‹“&=“Oë=˜ê&=ˆ¾Ë=‡J=†¤q=ˆ:ô=Šµ€=¶?=„¿=g;7=B=“D=„›ê=‰î÷=X}=„Xg=Žá~=§^2=£®T= ´(=ŽŠ=ˆí¡=ƒ­á=¦€=…#=ŽÐ¦=uúš=] Å=ˆÇ=‹Š«=j˜=Y=rIx=‚¡Æ=’® =¡žË=³F¦=¿ôÍ=ÙÛ>";%>]:ó?ÚôÇ@0ø×@Šœ~@ʤ@Öea@·¦—@ŽAf@W÷þ?Å[(?€šÁ> Pì=Ù0jY>§0ó>»øª>Ç>¬K¨>’‡·>Xx˜>)h>²I >Ò~>Âk]>¶*þ>GE¸>M9=‰Zz=”%Ã=—™=Šx=Ž$š=9(=€„=z¥[=mÖa=@ú=3E=xÅ=‚&=‹ˆ=‚2Ò=v%Â=Y¯Ì=c6=j®=f†*=‚e0=•û6=rŸQ=o&>=‡8=†Gµ=‡(q=’il=úë=RXt=ƒ¤=‡Å=i?=…ó=’t’=ˆv=4Ž=—½Š=ŠÙ¡=†,‡=te@={69=‚áÃ=ƒÐ%=ˆ#¹=ìÓ=•i0=Ž„=G –=UŒ=ao=`µ=m³=€çÝ=Šþ=–¸ =Â_3>5õP>tj>¢ >™¿­>ˆ–>*MØ>e=ž‚`=yQ¯=Lšº=Zñ=[3=YI=aû=`'±=Q«=feœ=rѤ=TÝË=K4þ=BÕ=fíZ=aÊ=;]=F™X=T`²=’«®=êóh>'îñ>`[>f6‚>d\Z>&>¤>††=‹u=tž¯=T=Z§g=gfï=´=i|_=_z=_Ž=Zʧ=XË»= p={;Ð=Hýâ=J‘½=[¶U=„“=H¬Î=,7=“31=}TÕ=LtH=„=ƒÕÁ={@=y7“=yÐ/=†=‡ \=†$?=†>j=w `=RH=q9$=tÁQ=p5ƒ=’¶$= }=„~n=¦ã=zßà=Žb"=Žgw=‡ú±=‚=Ž3»=^3ø=;ÓÄ="k=‚b`=g% =9á=^Nf=sM=Ž6=‘´Á=ˆ=ZR=AÏ+=.úZ=Mî›=Ý=¥ÈÎ>Aww>%I>Är…>Á˜æ>ºVc>d¾›>­k=®™?=«¹*=­‰¡=¯ÂÎ=¸·µ=²Gˆ=n=•rI=•îs=g ‡=gì=e”“=‚>š=xt¸=^Á|=m¯Ÿ=qN=kê=dÅC=jOO=ƒóŠ=pÿ =]Ÿ=D ì=`Öj=Œnè=b”+=V¯>=T©«=JL8=Kðæ=Ž£=—ì=žû;>t¿˜>£¿¥>®‡s>ªúÈ>s>CK">Ä[=—_=Œdþ=Ƴ=J=e=Ú=€úº=›W´=³–3=×Ĩ=÷dW=öþí=Â÷Ñ=²ò=ªÛ=žsÛ=Ž£=€ë©=–q\=˜=›“=‘¹R=¡»3=Ò…n>ûO>'u>3ýl>Œ©=ò‡ä=£¿Ì=—Ÿá=Œ¹0=Ž=i=•¤Õ=¢ Q=¤?§=ªJ¾=¹Óº=·5®=µe*=³«Ë=ÐäÇ=òd>Xz$?Ž>7?þûª@ðþ @úXÊ@û‘æ@Ö¬@§å*@Zç?E*ä>~uü>Œÿ@Öi@e.>@õ³/@ò?}@îÒf@°g@hT?¨ÄÔ>{ÓS=߃a=õã=¹>=¸FÙ=½|Í=¨3µ=  -%=¤sÑ=—X„=ŽÊ=æ¯=‹´f=‰ ½=‚N9=JŽ=xè-=‘=—ÍÛ=€Ä¢=v;=Œ•=Ö¦=„?=‰ -=”Bš=pÁ=Ž¨=“èX=„g=l ª=ŒUÊ=‰‰¦=„"g=\øB=[>=k½5=€n@=„K±=‹=ƒ8æ= -X=‡U=lͬ=cß/=’œì=ˆí =…+ =°8œ=˜Ö=€}æ=‹r¼=‡¼{=„(=Œ%þ=‹)Ç=‹°ý=“=6=ƒ£~={Â^={‰.=ƒ.(=Ž±=“ - =’_Ð=ƒ)J=¶^=·;ù=aÊ=ŒûŠ={”´=y•{=z·=j¼K=ƒ—ç=•M=‰¸&=Šø•=Iô=—O]=”7²=Š¨#=õ©²=öÛÓ=—uu=†5$=‚'Ï=„íæ=”|=—Œt=^Ÿ=Œ·Ž=ŽNP=–£·=ŠMB=ƒÝ÷=}²=‹º/=–ž =’Õ+=Žn.=ŠO&=p{í=ss=yÄÎ=‘ÿ=Ž´6=ˆ¯Á=yIÕ=„ÆR=—\X=‚?j=‚=¥å=œ—Œ=•6À=f¤b=¶»=še =›°l=‹-h=…Š:=”+“=Ý‹=lü²=…f =¢¼B=­²i=Š¦=‰E@=‹Íà=‘õ¿=Œz*=‹Ä…=ƒØ7=zTE=o¹G=|øÛ=ƒô=„ö—=¹ ¡=— p=\ÿ7=w"Í=cµ¨=Mš‹=kÖ$=†t=š¶=™'Í=™¤+=œ³•=zS‚=zñ==‹Bû=eã=›Ï“=‘HÊ=yË=?Tu=xÌ=tˆç=SZ'=ˆ‡1=†2š=^=8=wls=ˆPœ=£X™=žá©=t=¢ÇŸ=šÌP=•-,=‰p=“ε=´=xå×=•\Â= ` -=™·=¡4±=¡ùa=–ü =oç¢=ao~= =wc°=gÖ"=knu=SÚ=OɃ=ƒ”=–£”=˜!=ƒì_=¨hQ=«™î=~r=† á=; =’ò€=sç`=bÃ]=nûþ=‡F5=Q=‘ò¨= ÌX=ŸJý=ƒ -"=l\ð=rsÞ=›C8=rm=oL -=%¾=f5ê=VÐ8=€z™=Žb=‡ -à=P˜=P@u=Zãq=j9'=„~Ã=„˜,=uM=>Ä =5_‘=eFZ=mî`=€ãO=–Á =x =[Jõ=5Sf=†g=kœ=^õ=g«ª=jå•=pô"=~ò¼=dQ=5(ˆ=‘V=’¯i=Œì=–vÃ=ŽCí=‚¢G=‘¿=‰r)=ys9=‹3×=‹=Š€r=|Ëv=ŠN¨=•>’=‰Ñö=}Ãø=rD$=…ç=ˆp=Šìí=v*l=ˆ=½=—&S=…u=ƒzI=”È=‚ì¦=|¯8=† =zu=~µ½=ƒ=gˆà=e+X=‚Á=‡Û£=‚sÖ=i¿=RÜ=_)=yKT=bw=FTå=([‡=-ÄA=^ =†© =mo -=Š±ˆ=›kš=ŒøÕ=€hâ=rö…=kÁô=P9=†üü=•¤t=ŒG\=‡Ã­=‹·=‹M=|É=Mv¼=w¢D=‚«-=„ôN=G[º=kê?=–ÁŒ=~15=…»±=ŒÑš=‘K=‡ü=t+½=Q¨e=†$Æ=—Pk=w¾4=Ð =qw=Xâ =ƒÉu=’Ñ=—5#=„M={kÖ=w(Ù=^Ü8=yη=Ït=”B—=’ßf=”Üê=]ì1=i¬=pt²=n1=‚Ô=…‡=z4=¨Ùe=ªDµ=»ñ=kV=s ß=‘±˜=½~=¥×_=ƒcj=„$Ì=‰¼=“)é=q£D=†–¡=“­.=ˆ) =Œãí=¨ò¨>å>6–>VÖì>uØ>p¶Ù>L¼Ø>{t=´>=ñó&>%ß>—…Á>”r>Œ.E>dŠz>–E=ÝJ1=—j\=„<}=Š3–=¡•=D×=_a¤=˜:=”Ýæ=£ÐÎ=ºöË=¯è«=±"=±¾g=Êù=¡=µ>ß=˜IØ=›Ðá=Ì@=šÐ=£ü}=Ÿý=›K -=šH!=™„.=›º³=½c®=šúT=“µ=®–=–Ir=–C=–md=˜}H=—²=‘i[=Áåõ=¶Ú7=ª°v=ˆ=‡üš=‹—=¡Êj=™ ±=ûä=ƒw=°•=žó=†_{=(«=_ž—=‚=†Ï=xÔõ=qæ=eaÛ=…0b=Œä™=“$=&*=c´=’dˆ=–dÚ=¦3w=¨!>=›w=£sƒ=¨ºœ=«øé= -‰=ŠÁ›=„ûì=€ºµ=z(=€b­=Œ7=Š¼F=‰°=ˆã=ž4—=—Oµ=8Þ=“ÆQ=›PÎ=›‰=…Ç,=€]=r†…=lâ=ù=N¨û=‰Øé=‹Ñp=Œ¶Ã=Î=†š=¦©=¤ =Š–=‚Xž=|¿=yþ|=¥ZE=¼b|=ÌJò=»X=Š-=†‚3=˜LÊ=‰VÚ=•ÀÐ=ªÞ‘=‡(=ãç·=öȪ=«k=Ã07=ßÇi=õß©=¸\ä=®7²=œ,o=Ž0„=r(¦=yAß=¥;â=¤äû=Ÿ~/=§'@=©±ž=ìæ=ƒ¶o=rh©= <=´Œ€=Äÿd=¹Ø=¹I=·7ó=K6K=-Ì\=DX5=|Þ=”š­=‚ž©=eö=ƒš½=Xo=kéù=Ë1Á=»ï«=™; =`(Ž=‹÷=ŒŠ=“û7=ž}=‘ ‰=¢Ý«=½b¿=Êì5=¬\³=‘™8=¾]3=²ü =¸Þ=Ôn=œª=‘Ò=Œîl= Ò5=¬=¤ Ö=ˆañ=Mo=¦ÏH=Æ—p=§}=¯•ð=®‹ð=êí=’(Ö=ŠÇ-=€(:=¤ À=±Õ’=¸ŽÕ=µ>=“e=Š_›=…¼Ê=«Ï3=Ž›Š=‰ X=ŸL=„Äd=¨‚=ׯ=ÝÝ=™Î= mË=D‡ =‰ÃÆ=—"õ=˜Çr>@=×ÔO=¶àÃ=–Õ?=Œ~-=ëL=°ã/=¨< = Vg=’4á=Ô¼=ÚŠë=ê==ÛòW=¢V´=­".=½µi=ì?%=Ò]=º˜ö=¦CŠ=®'=ðÙà=ñ»=ÆŸQ=¯÷4=Ì´ú=ÊS=€f&=“Ë=©ŒZ=Ô#<=»¼ê=ë ê> Ø0>(­>AŒ=Õºk=‹K‘> -¹>$µ=öaT=Üë=¸rq=ØÇ·=õlñ=¼œ7=ñD„=Ð1=„;’=È8=Û -=ÜÊÑ=¶©=ŸÎd=œP=Ÿ”‡=å“1=ܹ2=ÉÅ=«.$=ÅÜ{=Êm=Ç}=Žeñ=º’>i,>;rª= “À=ímk>›>4õe=é|@>.“>]wÜ=†v_=ÌÄ`=æΑ=ý9À=Ì°=ÏJ=Î>=¾ðT=z8u=®~Ô=æàQ=·ŠÊ=|†Æ=i=Òœ>§D=õRN=Ý+M=«==¼>=ÅìE=Æhó=¿Ÿ¦>l>Á>Æ°> Æ#=å@>›º>u¦u=Йø= < =‚û¨= bÕ=É»=ÔH½=Ó¤A=ÆE>ðe>OŸ=ò¦z=Ô->2Ä>9<=ý/K>µ¨>{Ã>=ž­:>éŽ=ô¸®=Ý5 =ù¯=öwÀ=ùªš=ýR=‘²ë=¨~q=°¥Ÿ=ÄDñ=Ðð_=ùn>É™=ñÊè=à>¨_>,ìù=µ©=Å¢?=Ì2=ÏH‘=}ɪ=̹Í=øa>pQ> *Ž>Bo>åY=ém\=ùH> ¬„>ó>õu=ç·=Áê<=¯Üð>p#=ý™=Ѭ­=®3\=Ǥþ=ë7> -´N>œ>5 ø>,n>‘È=Á­f=ìÔ™>&•p>B>G=Gª;=sú=ÉfF>ÝP=Ôl­=ú÷²>)¨Ê>gŒ¼>jYj>iQ>]J¤=Æö>FûÝ>ªk¼ÚØP>(\Œ>&>#üÕ>!¢f=ºR<=»[>,þã>©7ÿ>Jd=ùÁ=ãß^>;³&>”ë>$3>v¼!>Ê°B=ÎÛŒ=§î=¿8J>|=Þø=ÈÏ*>EL>!Ž˜=ñµý>4¬>%Ä>'/š>)b(>+íé>.V>0…U>¢_œ?SÁ*?îK@äª@´œX@½Â@ÀiÏ@Á(Ã@¾|¹@»ót@»7”@¾B@ƒÍº@?[îý>±¿ï>Ïa>&ß#>4«=õsí>CHˆ>G~T>1£=ñ7‡>>ÎÌ>Qù=êÛå=è®ì>¡ >näó>",=ߎ¹=. c=±~>";w>‚¸=å—h<‚ÆÖ<É°ã>uà>NœE \ No newline at end of file diff --git a/templates/fluxed_sky_860U.fits b/templates/fluxed_sky_860U.fits deleted file mode 100644 index 16a896c91..000000000 --- a/templates/fluxed_sky_860U.fits +++ /dev/null @@ -1,340 +0,0 @@ -SIMPLE = T / Standard FITS format: NOST 100-2.0 BITPIX = -32 / No. of bits per pixel NAXIS = 1 / No. of axes in image NAXIS1 = 36736 / No. of pixels EXTEND = T / FITS extension may be present BLOCKED = T / FITS file may be blocked COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 CRPIX1 = -24. / Reference pixel CRVAL1 = 8522.25166 / Coordinate at reference pixel CDELT1 = 0.05179 / Coordinate increment per pixel CTYPE1 = 'WAVELENGTH ' / Units of coordinate BUNIT = 'FLUX ' / Units of data values DATAMAX = 154.408309937 / Maximum data value DATAMIN = -22.956495285 / Minimum data value ORIGIN = 'ESO-MIDAS' / Written by MIDAS DATE = '2002-10-07T14:54:04' / [UTC] Date of writing FILENAME= 'fluxed_860U.bdf' / Original file base-name MIDASFTP= 'IMAGE ' / MIDAS File Type OBJECT = 'MERGED_AV_SKY_REDU' / MIDAS desc.: IDENT(1) RA = 166.639232 / MIDAS desc.: O_POS(1) DEC = -18.35691 / MIDAS desc.: O_POS(2) EQUINOX = 2000. / MIDAS desc.: O_POS(3) DATE-OBS= '2001-06-19' / MIDAS desc.: O_TIME(1) MJD-OBS = 52079.0115956 / MIDAS desc.: O_TIME(4) TM-START= 1001.86243197 / MIDAS desc.: O_TIME(5) EXPTIME = 3800. / MIDAS desc.: O_TIME(7) COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT NOST 100-2.0: Hanisch,R. et al. 2001, Astron. & Astrophys. 376, 559 COMMENT FTU-1.39/2001-09-26T12:02:44/Default.htt INSTRUME= 'UVES ' / MIDAS desc.: INSTRUME(1) OBSERVER= 'UNKNOWN ' / MIDAS desc.: OBSERVER(1) TELESCOP= 'ESO-VLT-U2' / MIDAS desc.: TELESCOP(1) RADECSYS= 'FK5 ' / MIDAS desc.: RADECSYS(1) AIRMASS = 1.183 / MIDAS desc.: O_AIRM(1) HISTORY Converted from: sky_860U_all.fits \HISTORY INSERT/IMAGE out1 sky_860U_all.bdf 8614.0753300000 \ HISTORY Converted from: ../files/sky_860U_all.fits \HISTORY COMPUTE/IMAG fluxed_860U = mergU/3.600\HISTORY 00E+03*5.20000E-01/3.64000E-01*1*responseU*extiU \HISTORY OS-EXPOI= 41452 / OS expoId PI-COI = 'UNKNOWN ' / Name of PI-COI LST = 48211.195 / 13:23:31.195 LST at start (sec) UTC = 957. / 00:15:57.000 UTC at start (sec) CHECKSUM= 'PPHhQM9hPMEhPM9h' / ASCII 1's complement checksum UT = '00:15:57.000' / UT at start ST = '13:23:31.195' / ST at start IMAGETYP= 'OBJECT ' / Observation type FILTER1 = 'FREE ' / Filter 1 name FILTER3 = 'OG590 ' / Filter 3 name GRAT2 = 'CD#4 ' / Grating 2 name WLEN2 = 860. / Grating 2 central wavelen DATAMEAN= 278.228401 / Mean Pixel Value DATARMS = 1048.787993 / RMS of Pixel Values DATAMED = 250. / Median Pixel Value DATAMD5 = 'a90ad5c79b623abc5f43f42f72b1c834' / data MD5 signature PIPEFILE= 'r.UVES.2001-06-19T00:16:41.862_0027.fits' / Filename of data product HIERARCH ESO OBS DID = 'ESO-VLT-DIC.OBS-1.7' / OBS Dictionary HIERARCH ESO OBS OBSERVER = 'UNKNOWN ' / Observer Name HIERARCH ESO OBS PI-COI NAME = 'UNKNOWN ' / PI-COI name HIERARCH ESO OBS PI-COI ID = 1296 / ESO internal PI-COI ID HIERARCH ESO OBS TARG NAME = 'HE1104A ' / OB target name HIERARCH ESO OBS GRP = '0 ' / linked blocks HIERARCH ESO OBS NAME = 'PAIRB4 ' / OB name HIERARCH ESO OBS ID = 105178 / Observation block ID HIERARCH ESO OBS PROG ID = '67.A-0278(A)' / ESO program identification HIERARCH ESO OBS START = '2001-06-19T00:13:46' / OB start time HIERARCH ESO OBS TPLNO = 2 / Template number within OB HIERARCH ESO TPL DID = 'ESO-VLT-DIC.TPL-1.4' / Data dictionary for TPL HIERARCH ESO TPL ID = 'UVES_dic2_obs_exp' / Template signature ID HIERARCH ESO TPL NAME = 'Dic2 Observation' / Template name HIERARCH ESO TPL PRESEQ= 'UVES_dic_obs.seq' / Sequencer script HIERARCH ESO TPL START = '2001-06-19T00:14:58' / TPL start time HIERARCH ESO TPL VERSION = '@(#) {Revision: 1.1$}' / Version of the templaHIERARCH ESO TPL NEXP = 1 / Number of exposures within templat HIERARCH ESO TPL EXPNO = 1 / Exposure number within template HIERARCH ESO DPR TECH = 'ECHELLE ' / Observation technique HIERARCH ESO DPR TYPE = 'OBJECT ' / Observation type HIERARCH ESO DPR CATG = 'SCIENCE ' / Observation category HIERARCH ESO TEL DID = 'ESO-VLT-DIC.TCS' / Data dictionary for TEL HIERARCH ESO TEL ID = 'v 1.370 ' / TCS version number HIERARCH ESO TEL DATE = 'not set ' / TCS installation date HIERARCH ESO TEL ALT = 57.639 / Alt angle at start (deg) HIERARCH ESO TEL AZ = 94.349 / Az angle at start (deg) S=0,W=90 HIERARCH ESO TEL GEOELEV = 2648. / Elevation above sea level (m) HIERARCH ESO TEL GEOLAT= -24.6254 / Tel geo latitute (+=North) (deg) HIERARCH ESO TEL GEOLON= -70.403 / Tel geo longitute (+=East) (deg) HIERARCH ESO TEL OPER = 'I, Condor' / Telescope Operator HIERARCH ESO TEL FOCU ID = 'NB ' / Telescope focus station ID HIERARCH ESO TEL FOCU LEN = 120. / Focal length (m) HIERARCH ESO TEL FOCU SCALE = 1.718 / Focal scale (arcsec/mm) HIERARCH ESO TEL FOCU VALUE = -28.915 / M2 setting (mm) HIERARCH ESO TEL PARANG START = 107.239 / Parallactic angle at start (deg) HIERARCH ESO TEL AIRM START = 1.183 / Airmass at start HIERARCH ESO TEL AMBI FWHM START = 0.62 / Observatory Seeing queriedHIERARCH ESO TEL AMBI PRES START = 740.8 / Observatory ambient air prHIERARCH ESO TEL AMBI WINDSP = 4.17 / Observatory ambient wind speed queHIERARCH ESO TEL AMBI WINDDIR = 352. / Observatory ambient wind directio HIERARCH ESO TEL AMBI RHUM = 6. / Observatory ambient relative humi HIERARCH ESO TEL AMBI TEMP = 4.91 / Observatory ambient temperature quHIERARCH ESO TEL MOON RA = 33249.184151 / ~~:~~:~~.~ RA (J2000) (deg) HIERARCH ESO TEL MOON DEC = 155131.24442 / ~~:~~:~~.~ DEC (J2000) (deg) HIERARCH ESO TEL TH M1 TEMP = 4.95 / M1 superficial temperature HIERARCH ESO TEL TRAK STATUS = 'NORMAL ' / Tracking status HIERARCH ESO TEL DOME STATUS = 'FULLY-OPEN' / Dome status HIERARCH ESO TEL CHOP ST = 0 / True when chopping is active HIERARCH ESO TEL PARANG END = 106.888 / Parallactic angle at end (deg) HIERARCH ESO TEL AIRM END = 1.459 / Airmass at end HIERARCH ESO TEL AMBI FWHM END = 0.64 / Observatory Seeing queried from ASHIERARCH ESO TEL AMBI PRES END = 740.92 / Observatory ambient air pressure qHIERARCH ESO ADA ABSROT START = 15.09329 / Abs rot angle at exp start (deg) HIERARCH ESO ADA POSANG= 0. / Position angle at start HIERARCH ESO ADA GUID STATUS = 'ON ' / Status of autoguider HIERARCH ESO ADA GUID RA = 166.55754 / 11:06:13.8 Guide star RA J2000 HIERARCH ESO ADA GUID DEC = -18.36942 / -18:22:09.9 Guide star DEC J2000 HIERARCH ESO ADA ABSROT END = 29.87949 / Abs rot angle at exp end (deg) HIERARCH ESO INS ID = 'UVES ' / Instrument ID HIERARCH ESO INS DID = 'UVES_ICS' / Data dictionary for INS HIERARCH ESO INS SOFW ID = '$Revision: 1.93 $' / Instrument SW HIERARCH ESO INS SOFW MODE = 'NORMAL ' / Simulation mode HIERARCH ESO INS PATH = 'RED ' / Optical path used HIERARCH ESO INS MODE = 'DICHR#2 ' / Instrument mode used HIERARCH ESO INS MIRR1 ID = 'FREE ' / Mirror unique ID HIERARCH ESO INS MIRR1 NAME = 'FREE ' / Mirror common name HIERARCH ESO INS MIRR1 NO = 1 / Mirror slide position HIERARCH ESO INS OPTI1 ID = '1 ' / General Optical device unique ID HIERARCH ESO INS OPTI1 NAME = 'OUT ' / General Optical device common nameHIERARCH ESO INS OPTI1 NO = 1 / Slot number HIERARCH ESO INS OPTI1 TYPE = 'FREE ' / General Optical device Element HIERARCH ESO INS SLIT1 NAME = 'FREE ' / Slit common name HIERARCH ESO INS SLIT1 NO = 1 / Slide position HIERARCH ESO INS SLIT1 WID = 0. / Slit width (arcsec) HIERARCH ESO INS SLIT1 LEN = 0. / Slit length (arcsec) HIERARCH ESO INS DROT MODE = 'SKY ' / Instrument derotator mode HIERARCH ESO INS DROT RA = 110633.415575 / %HOURANG RA (J2000) pointing (dHIERARCH ESO INS DROT DEC = -182124.884539 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS DROT POSANG = 115. / Position angle (deg) HIERARCH ESO INS DROT BEGIN = 155.051 / Physical position at start (deg) HIERARCH ESO INS DPOL MODE = 'OFF ' / Instrument depolarizer mode HIERARCH ESO INS DPOS NAME = 'OUT ' / Instrument depolarizer slide positHIERARCH ESO INS DPOS NO = 1 / Depolarizer slide position HIERARCH ESO INS ADC MODE = 'AUTO ' / ADC mode HIERARCH ESO INS ADCS NAME = 'IN ' / ADC slide position HIERARCH ESO INS ADCS NO = 2 / ADC slide position HIERARCH ESO INS ADC1 MODE = 'AUTO ' / ADC mode HIERARCH ESO INS ADC1 RA = 110633.415575 / %HOURANG RA (J2000) pointing (dHIERARCH ESO INS ADC1 DEC = -182124.884539 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS ADC2 MODE = 'AUTO ' / ADC mode HIERARCH ESO INS ADC2 RA = 110633.415575 / %HOURANG RA (J2000) pointing (dHIERARCH ESO INS ADC2 DEC = -182124.884539 / %DEGREE DEC (J2000) pointing (HIERARCH ESO INS FILT1 ID = 'FREE ' / Filter unique id HIERARCH ESO INS FILT1 NAME = 'FREE ' / Filter common name HIERARCH ESO INS FILT1 NO = 13 / Filter wheel position index HIERARCH ESO INS OPTI2 ID = 'DIAPHR.27MM' / General Optical device unique IHIERARCH ESO INS OPTI2 NAME = 'OVRSIZ ' / General Optical device common nameHIERARCH ESO INS OPTI2 NO = 3 / Slot number HIERARCH ESO INS OPTI2 TYPE = 'SLIDE ' / General Optical device Element HIERARCH ESO INS MIRR2 ID = 'DICHR#2 ' / Mirror unique ID HIERARCH ESO INS MIRR2 NAME = 'DICHR#2 ' / Mirror common name HIERARCH ESO INS MIRR2 NO = 4 / Mirror slide position HIERARCH ESO INS SHUT1 ID = 'TSH ' / Shutter ID HIERARCH ESO INS SHUT1 NAME = 'Telescope shutter' / Shutter name HIERARCH ESO INS SHUT1 ST = 1 / Shutter open HIERARCH ESO INS SHUT2 ID = 'SPSH ' / Shutter ID HIERARCH ESO INS SHUT2 NAME = 'SPHERE_SHUTTER' / Shutter name HIERARCH ESO INS SHUT3 ID = 'TSH3 ' / Shutter ID HIERARCH ESO INS SHUT3 NAME = 'D2L_SHUTTER' / Shutter name HIERARCH ESO INS SHUT4 ID = 'TSH4 ' / Shutter ID HIERARCH ESO INS SHUT4 NAME = 'THAR_SHUTTER' / Shutter name HIERARCH ESO INS SLIT3 WID = 0.9 / Slit width (arcsec) HIERARCH ESO INS SLIT3 Y1FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y1OFFST = 4750. / Offset in Formula HIERARCH ESO INS SLIT3 Y1RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 Y1MIN = 0.062 / Minimum slit width (arcsec) HIERARCH ESO INS SLIT3 Y1MAX = 5.572 / Maximum slit width (arcsec) HIERARCH ESO INS SLIT3 Y2FRML = 'ENC=OFFST+RESOL*acos(WID-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 Y2OFFST = 4560. / Offset in Formula HIERARCH ESO INS SLIT3 Y2RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 Y2MIN = 0.05 / Minimum slit width (arcsec) HIERARCH ESO INS SLIT3 Y2MAX = 5.513 / Maximum slit width (arcsec) HIERARCH ESO INS SLIT3 Y1ENC = 10719 / Slit Vertical top motor absolute eHIERARCH ESO INS SLIT3 Y2ENC = 10504 / Slit Vertical bottom motor absolutHIERARCH ESO INS SLIT3 LEN = 12. / Slit length (arcsec) HIERARCH ESO INS SLIT3 X1FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X1OFFST = 2381. / Offset in Formula HIERARCH ESO INS SLIT3 X1RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 X1MIN = 0.087 / Minimum slit length (arcsec) HIERARCH ESO INS SLIT3 X1MAX = 15.752 / Maximum slit length (arcsec) HIERARCH ESO INS SLIT3 X2FRML = 'ENC=OFFST+RESOL*acos(LEN-(MAX+MIN)/(MAX-MIN))'HIERARCH ESO INS SLIT3 X2OFFST = 2307. / Offset in Formula HIERARCH ESO INS SLIT3 X2RESOL = 40. / Resolution in encoder steps HIERARCH ESO INS SLIT3 X2MIN = 0.064 / Minimum slit length (arcsec) HIERARCH ESO INS SLIT3 X2MAX = 15.833 / Maximum slit length (arcsec) HIERARCH ESO INS SLIT3 X1ENC = 6548 / Slit Horizontal left motor absolutHIERARCH ESO INS SLIT3 X2ENC = 6479 / Slit Horizontal right motor absoluHIERARCH ESO INS FILT3 ID = 'BS5 ' / Filter unique id HIERARCH ESO INS FILT3 NAME = 'OG590 ' / Filter common name HIERARCH ESO INS FILT3 NO = 5 / Filter wheel position index HIERARCH ESO INS DET6 NAME = 'Red exp. meter PMT' / detector name HIERARCH ESO INS DET6 CTMIN = 2. / Minimum count during exposure HIERARCH ESO INS DET6 CTMAX = 31. / Maximum count during exposure HIERARCH ESO INS DET6 CTMEAN = 13.4 / Average counts during exposure HIERARCH ESO INS DET6 CTRMS = 4.03 / RMS of counts during exposure HIERARCH ESO INS DET6 TMMEAN = 0.51 / Normalised mean exposure time HIERARCH ESO INS DET6 CTTOT = 50699. / Total counts during exposure HIERARCH ESO INS DET6 UIT = 1. / User defined Integration time HIERARCH ESO INS DET6 OFFDRK = 0. / Average dark background counts HIERARCH ESO INS DET6 OFFSKY = 1. / Average sky background counts HIERARCH ESO INS SHUT6 ID = 'REXS ' / Shutter ID HIERARCH ESO INS SHUT6 NAME = 'Red exp. meter sh.' / Shutter name HIERARCH ESO INS SHUT6 ST = 1 / Shutter open HIERARCH ESO INS GRAT2 ID = 'CD#4B ' / Grating unique ID HIERARCH ESO INS GRAT2 NAME = 'CD#4 ' / Grating common name HIERARCH ESO INS PIXSCALE = 0.182 / Pixel scale HIERARCH ESO INS GRAT2 X = 2048. / X pixel for central wavelength HIERARCH ESO INS GRAT2 Y = 2048. / Y pixel for central wavelength HIERARCH ESO INS GRAT2 FRML = 'ENC=OFFST+RESOL*ASIN(WLEN*GRV/(2*COS(ROT)))' HIERARCH ESO INS GRAT2 OFFST = 3911858. / Offset in Formula HIERARCH ESO INS GRAT2 RESOL = 15000. / Resolution in encoder steps HIERARCH ESO INS GRAT2 GRV = 0.000312 / Grating grooves/nm HIERARCH ESO INS GRAT2 ROT = 22.668 / Grating rot angle HIERARCH ESO INS GRAT2 NO = 2 / Grating wheel position index HIERARCH ESO INS GRAT2 WLEN = 860. / Grating central wavelength HIERARCH ESO INS GRAT2 DISP = 0.1 / Grating dispersion HIERARCH ESO INS GRAT2 ENC = 4037360 / Grating absolute encoder position HIERARCH ESO INS TILT2 POS = 0. / Science camera tilt (pixels) HIERARCH ESO INS TILT2 FRML = 'ENC=OFFST+RESOL*ASIN(2*POS-(MAX+MIN)/(MAX-MIN'HIERARCH ESO INS TILT2 OFFST = 15927. / Offset in Formula HIERARCH ESO INS TILT2 RESOL = -100. / Resolution in encoder steps HIERARCH ESO INS TILT2 POSMIN = -222. / Minimum camera tilt (pixels) HIERARCH ESO INS TILT2 POSMAX = 222. / Maximum camera tilt (pixels) HIERARCH ESO INS TILT2 ENC = 15927 / Camera tilt absolute encoder positHIERARCH ESO INS SHUT7 ID = 'FPSH ' / Shutter ID HIERARCH ESO INS SHUT7 NAME = 'FIBRPROJSHUTTER' / Shutter name HIERARCH ESO INS DROT END = 162.451 / Physical position at end (deg) HIERARCH ESO INS TEMP31 NAME = 'Iodine cell temp.' / Temperature sensor name HIERARCH ESO INS TEMP31 START = 6.8 / Temperature at start HIERARCH ESO INS TEMP31 STOP = 6.7 / Temperature at end HIERARCH ESO INS TEMP31 MIN = 6.6 / Minimum temperature HIERARCH ESO INS TEMP31 MAX = 6.9 / Maximum temperature HIERARCH ESO INS TEMP31 MEAN = 6.7 / Average temperature HIERARCH ESO INS TEMP1 NAME = 'Temp. blue camera' / Temperature sensor name HIERARCH ESO INS TEMP1 START = 5.3 / Temperature at start HIERARCH ESO INS TEMP1 STOP = 5.2 / Temperature at end HIERARCH ESO INS TEMP1 MIN = 5.2 / Minimum temperature HIERARCH ESO INS TEMP1 MAX = 5.3 / Maximum temperature HIERARCH ESO INS TEMP1 MEAN = 5.2 / Average temperature HIERARCH ESO INS TEMP2 NAME = 'Temp. red camera' / Temperature sensor name HIERARCH ESO INS TEMP2 START = 5.4 / Temperature at start HIERARCH ESO INS TEMP2 STOP = 5.3 / Temperature at end HIERARCH ESO INS TEMP2 MIN = 5.3 / Minimum temperature HIERARCH ESO INS TEMP2 MAX = 5.5 / Maximum temperature HIERARCH ESO INS TEMP2 MEAN = 5.4 / Average temperature HIERARCH ESO INS TEMP3 NAME = 'Temp. table' / Temperature sensor name HIERARCH ESO INS TEMP3 START = 5.8 / Temperature at start HIERARCH ESO INS TEMP3 STOP = 5.8 / Temperature at end HIERARCH ESO INS TEMP3 MIN = 5.8 / Minimum temperature HIERARCH ESO INS TEMP3 MAX = 5.8 / Maximum temperature HIERARCH ESO INS TEMP3 MEAN = 5.8 / Average temperature HIERARCH ESO INS TEMP4 NAME = 'Temp. inside air' / Temperature sensor name HIERARCH ESO INS TEMP4 START = 6.4 / Temperature at start HIERARCH ESO INS TEMP4 STOP = 6.3 / Temperature at end HIERARCH ESO INS TEMP4 MIN = 6.3 / Minimum temperature HIERARCH ESO INS TEMP4 MAX = 6.4 / Maximum temperature HIERARCH ESO INS TEMP4 MEAN = 6.3 / Average temperature HIERARCH ESO INS SENS26 NAME = 'Barometer pressure' / sensor common name HIERARCH ESO INS SENS26 START = 740. / sensor value at start HIERARCH ESO INS SENS26 STOP = 740.1 / sensor value at end HIERARCH ESO INS SENS26 MIN = 740. / Minimum sensor value HIERARCH ESO INS SENS26 MAX = 740.1 / Maximum sensor value HIERARCH ESO INS SENS26 MEAN = 740. / Average sensor vlaue HIERARCH ESO DET ID = 'CCD FIERA - Rev 2.69' / Detector system Id HIERARCH ESO DET NAME = 'ccdUvR - ccdUvr' / Name of detector system HIERARCH ESO DET DATE = '09-07-1998' / Installation date HIERARCH ESO DET DID = 'ESO-VLT-DIC.CCDDCS,ESO-VLT-DIC.FCDDCS' / Diction HIERARCH ESO DET BITS = 16 / Bits per pixel readout HIERARCH ESO DET RA = 166.63923157 / Apparent 11:06:33.4 RA at start HIERARCH ESO DET DEC = -18.35691237 / Apparent -18:21:24.8 DEC at start HIERARCH ESO DET SOFW MODE = 'Normal ' / CCD sw operational mode HIERARCH ESO DET CHIPS = 2 / # of chips in detector array HIERARCH ESO DET CHIP1 ID = 'CCID-20 ' / Detector chip identification HIERARCH ESO DET CHIP1 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP1 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP1 X = 1 / X location in array HIERARCH ESO DET CHIP1 Y = 1 / Y location in array HIERARCH ESO DET CHIP1 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP1 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP1 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP1 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET CHIP2 ID = 'CCD-44 ' / Detector chip identification HIERARCH ESO DET CHIP2 NAME = 'MIT/LL, EEV' / Detector chip name HIERARCH ESO DET CHIP2 DATE = '09-07-1998' / Date of installation [YYYY-MM-DDHIERARCH ESO DET CHIP2 X = 2 / X location in array HIERARCH ESO DET CHIP2 Y = 1 / Y location in array HIERARCH ESO DET CHIP2 NX = 2048 / # of pixels along X HIERARCH ESO DET CHIP2 NY = 4096 / # of pixels along Y HIERARCH ESO DET CHIP2 PSZX = 15. / Size of pixel in X HIERARCH ESO DET CHIP2 PSZY = 15. / Size of pixel in Y HIERARCH ESO DET EXP NO= 5121 / Unique exposure ID number HIERARCH ESO DET EXP TYPE = 'Normal ' / Exposure type HIERARCH ESO DET EXP DUMDIT = 0 / # of dummy readouts HIERARCH ESO DET EXP RDTTIME = 45.306 / image readout time HIERARCH ESO DET EXP XFERTIM = 45.301 / image transfer time HIERARCH ESO DET READ MODE = 'normal ' / Readout method HIERARCH ESO DET READ SPEED = '2pts/50kHz/hg' / Readout speed HIERARCH ESO DET READ CLOCK = '50kHz/2ports/hi' / Readout clock pattern used HIERARCH ESO DET OUTPUTS = 2 / # of outputs HIERARCH ESO DET OUTREF= 0 / reference output HIERARCH ESO DET OUT1 ID = 'L ' / Output ID as from manufacturer HIERARCH ESO DET OUT1 NAME = 'L ' / Description of output HIERARCH ESO DET OUT1 CHIP = 1 / Chip to which the output belongs HIERARCH ESO DET OUT1 X= 1 / X location of output HIERARCH ESO DET OUT1 Y= 1 / Y location of output HIERARCH ESO DET OUT1 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT1 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT1 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT1 RON = 3.1 / Readout noise per output (e-) HIERARCH ESO DET OUT1 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET OUT4 ID = 'R ' / Output ID as from manufacturer HIERARCH ESO DET OUT4 NAME = 'R ' / Description of output HIERARCH ESO DET OUT4 CHIP = 2 / Chip to which the output belongs HIERARCH ESO DET OUT4 X= 4096 / X location of output HIERARCH ESO DET OUT4 Y= 1 / Y location of output HIERARCH ESO DET OUT4 NX = 1024 / valid pixels along X HIERARCH ESO DET OUT4 NY = 2048 / valid pixels along Y HIERARCH ESO DET OUT4 CONAD = 0.52 / Conversion from ADUs to electrons HIERARCH ESO DET OUT4 RON = 2.06 / Readout noise per output (e-) HIERARCH ESO DET OUT4 GAIN = 1.92 / Conversion from electrons to ADU HIERARCH ESO DET FRAM ID = 1 / Image sequencial number HIERARCH ESO DET FRAM TYPE = 'Normal ' / Type of frame HIERARCH ESO DET WINDOWS = 1 / # of windows readout HIERARCH ESO DET WIN1 STRX = 1 / Lower left pixel in X HIERARCH ESO DET WIN1 STRY = 1 / Lower left pixel in Y HIERARCH ESO DET WIN1 NX = 2148 / # of pixels along X HIERARCH ESO DET WIN1 NY = 2048 / # of pixels along Y HIERARCH ESO DET WIN1 BINX = 2 / Binning factor along X HIERARCH ESO DET WIN1 BINY = 2 / Binning factor along Y HIERARCH ESO DET WIN1 NDIT = 1 / # of subintegrations HIERARCH ESO DET WIN1 UIT1 = 3800. / user defined subintegration time HIERARCH ESO DET WIN1 DIT1 = 3800.000019 / actual subintegration time HIERARCH ESO DET WIN1 DKTM = 3800.6512 / Dark current time HIERARCH ESO DET SHUT TYPE = 'Slit ' / type of shutter HIERARCH ESO DET SHUT ID = 'ccdUvr shutter' / Shutter unique identifier HIERARCH ESO DET SHUT TMOPEN = 0.039 / Time taken to open shutter HIERARCH ESO DET SHUT TMCLOS = 0.039 / Time taken to close shutter HIERARCH ESO DET TELE INT = 60. / Interval between two successive teHIERARCH ESO DET TELE NO = 3 / # of sources active HIERARCH ESO DET TLM1 NAME = 'CCD T1 ' / Description of telemetry param. HIERARCH ESO DET TLM1 ID = 'CCD Sensor1' / ID of telemetry sensor HIERARCH ESO DET TLM1 START = 135. / Telemetry value at read start HIERARCH ESO DET TLM1 END = 135. / Telemetry value at read completionHIERARCH ESO DET TLM2 NAME = 'CCD T2 ' / Description of telemetry param. HIERARCH ESO DET TLM2 ID = 'CCD Sensor2' / ID of telemetry sensor HIERARCH ESO DET TLM2 START = 137.1 / Telemetry value at read start HIERARCH ESO DET TLM2 END = 137.1 / Telemetry value at read completionHIERARCH ESO DET TLM3 NAME = 'EBOX T ' / Description of telemetry param. HIERARCH ESO DET TLM3 ID = 'Box Temp' / ID of telemetry sensor HIERARCH ESO DET TLM3 START = 283.3 / Telemetry value at read start HIERARCH ESO DET TLM3 END = 283.2 / Telemetry value at read completionHIERARCH ESO PRO CATG = 'MERGED_AV_SKY_REDU' / Category of pipeline product fraHIERARCH ESO PRO TYPE = 'PREPROCESSED' / Product type HIERARCH ESO PRO REDLEVEL = 'PHOTOMETRIC,GEOMETRIC' / Reduction level of daHIERARCH ESO PRO REC1 STATUS = 'OK ' / Pipeline status of frame HIERARCH ESO PRO DATAAVG = 30.8138 / Mean of pixel values HIERARCH ESO PRO DATARMS = 202.064 / Standard deviation of pixel valuesHIERARCH ESO PRO DATAMED = 4.24477 / Median of pixel values HIERARCH ESO PRO REC1 START = '2002-09-30T09:42:56' / Date when recipe executHIERARCH ESO PRO REC1 RAW1 NAME= 'UVES.2001-06-19T00:16:41.862_stk.fits' / File HIERARCH ESO PRO REC1 RAW1 CATG= 'SCI_POINT_RED' / Frame category of raw frame #HIERARCH ESO PRO REC1 CAL1 NAME= 'UV_PDRS_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL1 CATG= 'DRS_SETUP_REDL' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL2 NAME= 'UV_PORD_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL2 CATG= 'ORDER_TABLE_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL3 NAME= 'UV_PBKG_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL3 CATG= 'BACKGR_TABLE_REDL' / Frame category of calibraHIERARCH ESO PRO REC1 CAL4 NAME= 'UV_PLI1_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL4 CATG= 'LINE_TABLE_REDL1' / Frame category of calibratHIERARCH ESO PRO REC1 CAL5 NAME= 'UV_PLI2_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL5 CATG= 'LINE_TABLE_REDL2' / Frame category of calibratHIERARCH ESO PRO REC1 CAL6 NAME= 'UV_PLI3_010620A_REDL860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL6 CATG= 'LINE_TABLE_REDL3' / Frame category of calibratHIERARCH ESO PRO REC1 CAL7 NAME= 'UV_MBIA_010617A_REDL_2x2.fits' / File name of HIERARCH ESO PRO REC1 CAL7 CATG= 'MASTER_BIAS_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL8 NAME= 'UV_MFLT_010620A_REDL860d2_2x2.fits' / File namHIERARCH ESO PRO REC1 CAL8 CATG= 'MASTER_FLAT_REDL' / Frame category of calibratHIERARCH ESO PRO REC1 CAL9 NAME= 'UV_PDRS_010620A_REDU860d2_2x2.tfits' / File naHIERARCH ESO PRO REC1 CAL9 CATG= 'DRS_SETUP_REDU' / Frame category of calibratioHIERARCH ESO PRO REC1 CAL10 NAME = 'UV_PORD_010620A_REDU860d2_2x2.tfits' HIERARCH ESO PRO REC1 CAL10 CATG = 'ORDER_TABLE_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL11 NAME = 'UV_PBKG_010620A_REDU860d2_2x2.tfits' HIERARCH ESO PRO REC1 CAL11 CATG = 'BACKGR_TABLE_REDU' / Frame category ofHIERARCH ESO PRO REC1 CAL12 NAME = 'UV_PLI1_010620A_REDU860d2_2x2.tfits' HIERARCH ESO PRO REC1 CAL12 CATG = 'LINE_TABLE_REDU1' / Frame category of HIERARCH ESO PRO REC1 CAL13 NAME = 'UV_PLI2_010620A_REDU860d2_2x2.tfits' HIERARCH ESO PRO REC1 CAL13 CATG = 'LINE_TABLE_REDU2' / Frame category of HIERARCH ESO PRO REC1 CAL14 NAME = 'UV_PLI3_010620A_REDU860d2_2x2.tfits' HIERARCH ESO PRO REC1 CAL14 CATG = 'LINE_TABLE_REDU3' / Frame category of HIERARCH ESO PRO REC1 CAL15 NAME = 'UV_MBIA_010617A_REDU_2x2.fits' / File HIERARCH ESO PRO REC1 CAL15 CATG = 'MASTER_BIAS_REDU' / Frame category of HIERARCH ESO PRO REC1 CAL16 NAME = 'UV_MFLT_010620A_REDU860d2_2x2.fits' HIERARCH ESO PRO REC1 CAL16 CATG = 'MASTER_FLAT_REDU' / Frame category of HIERARCH ESO PRO REC1 PARAM1 NAME = 'FFMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM1 SVALUE = 'E ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM2 NAME = 'EXMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM2 SVALUE = 'AVERAGE ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM3 NAME = 'BGMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM3 SVALUE = 'MEDIAN ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM4 NAME = 'INTMTD ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM4 SVALUE = 'Y,Y,Y ' / Value of recipe parameter HIERARCH ESO PRO REC1 PARAM5 NAME = 'MTD2D ' / Name of recipe parameter #HIERARCH ESO PRO REC1 PARAM5 SVALUE = 'N,MED,E,A' / Value of recipe parameterHIERARCH ESO PRO REC1 STOP = '2002-09-30T09:43:38' / Date when recipe executHIERARCH ESO PRO DID = 'PRO-1.15' / Data dictionary for PRO HIERARCH ESO PRO DO ID = 'DO-1_16 ' / Data Organizer identification ID HIERARCH ESO PRO RBS ID= 'RBS-1_11' / Reduction Block Scheduler identification IHIERARCH ESO PRO REC1 ID = 'uves_obs_scired' / Pipeline recipe (unique) idHIERARCH ESO PRO REC1 DRS ID = 'MIDAS/02FEBpl1.1' / Data Reduction System idenHIERARCH ESO PRO REC1 PIPE ID = 'uves/1.3.3' / Pipeline (unique) identifier HIERARCH ESO PRO REC1 RB ID = 'sky_860.rX' / Reduction Block identifier HIERARCH ESO PRO ARCFILE = 'UVES.2001-06-19T00:16:41.862.fits' / Archive f HISTORY ESO-DESCRIPTORS START ................ HISTORY 'CRVAL','R*8',1,2,'3E23.15' HISTORY 8.522251660000000E+03 1.000000000000000E+00 HISTORY HISTORY 'BIAS_SUBTR','C*1',1,3,'3A1' HISTORY YES HISTORY HISTORY 'BACKGROUND','C*1',1,11,'11A1' HISTORY subtracted HISTORY HISTORY 'WSTART','R*8',1,13,'3E23.15' HISTORY 8.523546410000003E+03 8.645304700000004E+03 8.770584710000003E+03 HISTORY 8.899541810000004E+03 9.032383160000001E+03 9.169212340000004E+03 HISTORY 9.310288300000004E+03 9.455766410000004E+03 9.605853830000004E+03 HISTORY 9.760809510000001E+03 9.920840610000001E+03 1.008615429000000E+04 HISTORY 1.025711308000000E+04 HISTORY HISTORY 'NPTOT','I*4',1,13,'7I10' HISTORY 2722 2762 2802 2842 2884 2926 2970 HISTORY 3015 3061 3110 3159 3210 3263 HISTORY HISTORY 'NORDER','I*4',1,13,'7I10' HISTORY 71 70 69 68 67 66 65 HISTORY 64 63 62 61 60 59 HISTORY HISTORY 'SHORTLOG','C*50',1,3,'70A1' HISTORY Recipe log (Mo, 30 Sep 2002 09:43:38): Science reduction do HISTORY ne. ........................................ HISTORY .......... HISTORY HISTORY 'REDBLOCK','C*48',1,45,'70A1' HISTORY recipe: uves_obs_scired instrument: uves HISTORY /raid52_uves/calib/UVESSKY/files/r.UVES.2001 HISTORY -06-19T00:16:41.862 { HISTORY /uvesy/data/raw/2001-06-20/UVES.2001-06- HISTORY 19T00:16:41.862_stk.fits SCI_POINT_RED } HISTORY { HISTORY /raid52_uves/calib/2001-06-20/UV_PDRS_010620A_REDL860d2_2x HISTORY 2.tfits DRS_SETUP_REDL /raid52_uves/calib/2001-06-20/UV HISTORY _PORD_010620A_REDL860d2_2x2.tfits ORDER_TABLE_REDL /raid5 HISTORY 2_uves/calib/2001-06-20/UV_PBKG_010620A_REDL860d2_2x2.tfits BACKGR_TAB HISTORY LE_REDL /raid52_uves/calib/2001-06-20/UV_PLI1_010620A_REDL HISTORY 860d2_2x2.tfits LINE_TABLE_REDL1 /raid52_uves/calib/2001- HISTORY 06-20/UV_PLI2_010620A_REDL860d2_2x2.tfits LINE_TABLE_REDL2 HISTORY /raid52_uves/calib/2001-06-20/UV_PLI3_010620A_REDL860d2_2x2.tfits LI HISTORY NE_TABLE_REDL3 /raid52_uves/calib/2001-06-20/UV_MBIA_0106 HISTORY 17A_REDL_2x2.fits MASTER_BIAS_REDL /raid52_uves/cal HISTORY ib/2001-06-20/UV_MFLT_010620A_REDL860d2_2x2.fits MASTER_FLAT_REDL HISTORY /raid52_uves/calib/2001-06-20/UV_PDRS_010620A_REDU860d2_2x2. HISTORY tfits DRS_SETUP_REDU /raid52_uves/calib/2001-06-20/UV_P HISTORY ORD_010620A_REDU860d2_2x2.tfits ORDER_TABLE_REDU /raid52_ HISTORY uves/calib/2001-06-20/UV_PBKG_010620A_REDU860d2_2x2.tfits BACKGR_TABLE HISTORY _REDU /raid52_uves/calib/2001-06-20/UV_PLI1_010620A_REDU86 HISTORY 0d2_2x2.tfits LINE_TABLE_REDU1 /raid52_uves/calib/2001-06 HISTORY -20/UV_PLI2_010620A_REDU860d2_2x2.tfits LINE_TABLE_REDU2 HISTORY /raid52_uves/calib/2001-06-20/UV_PLI3_010620A_REDU860d2_2x2.tfits LINE HISTORY _TABLE_REDU3 /raid52_uves/calib/2001-06-20/UV_MBIA_010617 HISTORY A_REDU_2x2.fits MASTER_BIAS_REDU /raid52_uves/calib HISTORY /2001-06-20/UV_MFLT_010620A_REDU860d2_2x2.fits MASTER_FLAT_REDU HISTORY } E HISTORY AVERAGE HISTORY MEDIAN HISTORY HISTORY 'LHCUTS','R*4',1,4,'5E14.7' HISTORY 0.0000000E+00 0.0000000E+00-2.2956495E+01 1.5440831E+02 HISTORY HISTORY ESO-DESCRIPTORS END ................ END €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€<‰ÖÙ<è[ü<¿1Ú=5:=Gûø=ï·>YÁì>–h¼>óŸ>4=d=ž˜Ó<¢3í<£aî<¤Éð<°Qc<Ŷ<礤MÉ>ª×?,ý?!…>ñ·>„UÜ=† Þ=Lè<á¢=<­øŒ= å<¹I‹<Ù½<Ö&<Æ/t<´³¿<£]<ìLY<Üíl<Âjn=7cX=6XÈ<¹F&—å">îìØ?,,?A£>Y>å€=KÉA<¢’;=˜U<ÍG<ÝËÉ<áÀª<Í)6=0Ñï<Œ«\<ðO¿=5ªü=ü=a]<üâ/<÷5·=>ž=[P>‡?9Š,?š–?qb?„FD>èP/>J e=•§=JC/=y7=È<ìÔv<Þ¿C<¬ J<ż‘<±Î<ÈIq<Òõ<¯VŸ=¥=`’ =EÚÑ<ö:<<Úš==J•º=/#<äÛ-<ç Á=±ÍË>”¡j?)›o?ˆ£0?Ÿ‘?‚?w>GÒ¤=”Wq=.k{=.ÿ= ­=¦Æ=O™%=:u= Á= °=pÆ= 8 ='8Ï<ˆñ8<¤ˆ<òmì=!Is=.Ö°<ùš™<ýØÐ= òÛ=Çñƒ>ç{?Ķ.?î—¤?íœÓ?È„€?GaR>SŠì=1=I[À=7<ìY<íÌþ<ñ)¨<ܘ’<¼gÙ<Úƒ<¡7?=bb= =¢<åRr=O[ƒ=Xw=0›;=%´7=Çw=%¯<³Ð×<ï =k‡‰>=8?~?Ü Ü?èŒT?Ø×´?©û?«==Ù‡Œ=[h= žh<¸Á>;’#8= ¡U<ƒ6l<ä! = DŸ<+Ñ!= Yõ=N‹Ý=Ì<Æà¢<ÎM3=WØ= ,<ßÎê<àˆf=üÕ<αû=4yÁ=Meö=Lðª=¾7&>ĺ?Ãôy@,í‘@EkØ@2—1@ÿò?Ã~>AÑ=ŸiÓ=“ç=­‚¬=^:=K†=U‹Ñ=*°{<¶€<Ý£Ù=l|9=xR=Yl=9‡=K===c¶<ç¢3=¬ =FGŒ=—Í°=î=t§Ù>v¦Ý?\µG?ï-ª@:ÌÁ@1ÝP@Ùx?“Øþ>¥ùï=šn¼=lý=nXB=TÂ=0= ^<òom=S’=ëï= œË=ª,= =p%=GŸ=*]Ì='ˆd=l(¦=!ˆ=!£3=Ò´= þ=,ÑÀ=Xä¥=ÙZ=o˜Î=9ÉV=(á=¾š½>”°a?ÍÈŽ@[¤@ŠV@ƒ1™@Lö?‚ùÔ>«ðà=ær¨=ªGN=¨¢=:Žk=RH¬= ±<êĪ=)4=R¼4=:0=OU¾=$Ì+=9cø=x…m=úH=Yƒ1=KÊ=‡|½=˜t=uº=Õè”>‡7?©qí@1À¾@zå@x(@5,Q?Ÿµ…>Ô’­=¸<¯=Š™Ñ=~Df=Œó¬=¬ž€=fÇ=uQø=‘ä =«Êþ=Ó =$¬Û=Y‡D=u*ú=X‰~=®µý=”àÈ=÷ß=‘g =/§=ºzÿ=Lß=²Ž=ˆ[#=hÑ =~¥½=P–ù=qE=…Ïð=‰W®=V$=C—=÷c¢>½5?ýÅ@}R½@¢ ÷@š©@o_4?Ÿ´d>Ë$C>œ`=¶„c=} =‹Ãù==‘ô=j¾=UÒ€=\6= ž=©ki=<¿ƒ=}B=«\š=´<0=™Ì=§!•=h2=`†=–Ðä=¾/v>(\÷>ÓÔc@ „ÿ@x~9@‡ -û@w2Å@<ɧ?‹#É>6Â=ìÔË=¼¦æ=ª=¡=ŽXþ= 8=…|œ=5x=–Ãú=—*k=€_=€–=¸¤‚=“Mk=žë=ª¶ú=Y/=7}=žaÓ=Â<³=«d­=”†o=“÷Ô=?`Î=^ùº=–7E=½ûÕ=°}™=w@Â=J¥Ð=†ñ=³˜|=¥@a=š@Ç=³§>>ëÿ@Ñ@Ž@¢ðë@’ùã@P€š?›í„>* Ž=òØÁ=½D‘=¢çÚ=”_ƒ=ˆÜ=˜¤Ô=·}Š=øé=õ”=Ò‹›=½2=¼æ•=η[=³ =®=È€ó=Ý‘F=ÇUð=Ö·>ïÊ>ßÍ.?Å0ä@6Wö@j–è@aÎÞ@'å@?m>¬\'>•$=ÉÆl=œ[=»X=„±=i‘ÿ= Ù{=¥6=’8/=ªR-=na =žâ=£ï˜=²ëñ=µ—?=¦á=˜’ñ=¬]Ü=™âÊ=Æ×=Ã=ÁÁð=Ó:=±K==ëÈ=°4.=³ù=šB$=–rR=¶þþ=…öl=‰ß=‹Wf=Œø9=¦È!=¶×Y=¨°Í=©ÁG=Á³)=Á…ý>1O5?*…¦?æ¶@KJ¦@\OT@Q¨@á¨?T’g>a1ï=ðA=ðb=©Mû=Ö{b=ý_ =¯y„=À<„=ÏÎE=­ì‘=ĉÂ=³F =‡àµ=—*™=¼ÔW=Þ™m=Ù÷­= :¬=¡g>¢æ>}–­??ç”?¬¦?Ú?ήB?œÅS>Ä!…>!•p=Û:=¸¶ =µ=ÌŽ=£*{=‹[T>†=Öw=ÒT+=Ý8E=ûÚA>®d=÷^À=ݸ=Ûæø>cã×?0ž?UêÉ?Åo?y½µ?Cè>Ç>†èÖ>ëÈ>®Ìé>út?0›?6çå?$aÞ>©ï>‘~=™?â=–Ìð=œ×=Š¢Ô=ŸÿÛ=Y²ß=•Ãs=ÁˆŠ=Ä* =¸ÎQ=¬º‰=ˆmè=ž‡G=³Ö0=±Ø7=°ž =ï c>¼=Ç\=Çzç=Ǫ†=ÇÈš=µ¯=ÂM&>D¹>(pœ>20>8FÞ>"$÷=ç)x>Ìœ>7>>í†=þJz=òmZ=›e=šÉÏ=ľ÷=˹­=½’x=¾`¹=¿ C=™<î=†¸¸=¹³†=Ó”=Ç Ô=£¡¸=xÖ=¬êÉ=Üvy=Ãbà=©ÿ¤=qx=â’X=ãS¢=̺=ÙC¢=ß±µ=Ÿ>ˆ=ÕÀE> Ñ‘=¬eÖ=ÌBh><å=ì^$=ÁäÞ=°›}=dYk=°Í=³ï‚=ñ3˜> rÖ=»«Ê=„‡¨=£åë=­V={N†=á9·=uà'>xÜ4?„±ƒ@æÄ@gÚ<@y#Ô@K9í?õ"U?¢/>J> íì=ÎÙo=¤Ã_=ôU=ï†Ì=ß*È=ô?ó=Ñ~’>ß>Ý=ˆM=«wQ=ìMj=¿Ói= ë‰> =Ôá•=°ÊV=Êį=²áØ=ÐÄ=Ø=¼·:=ð•>ƺ=Áîœ=¡/> /Y=ý==ËÅ;=¨î=ˆ=§Ó=²J=¤úF=Øqi=ô´Õ=`VÊ=“Öý=É=ì"¾>@>Í?"ï?{/?µ—ø?Ú·U@'ž@‰¬q@¡Ãý@ <&@sl£?êÙ†>Ç3%>CIÂ>)=’=Ý”ñ=ùGC>.øg>ˆk?/Gß@¡È@$œ’@ -fB?eÂ>ÅtŒ»ãôß<ÜÙ  ÑT=¬ö­<úú0=““ò>–d?œ4â@`]*@˜±³@—Êî@tYl@ ?&Ù==Ò²=g[=—X˜=µ¡ã=O«r=|:,=´²Ø=±+Ê=­<.=øÁ>W‚> >s±>9M>Hþ>@—u>@ë =ú=Û·þ=¸]á=بé>’›=áãî=ôň>0Œ=»Ü=¼–¿=“> 2 > E¸=Ìv•=¢¢=µuH=Ýø;=ûðõ>E>Ê!=Ï[’>¿U=¶´Ï=Û &>#½>W-N>‡ïÈ>¿¢>QOl> Éç>‹Ž=ùO»=Ó=ð¦5>¤ð?—NÝ@W¿@—•‘@ è!@ˆÄí@-?g>{>zò—=ù¼Ù>(ß=ÄU=¤Ù=î½T=À—]=¶ü»=¨=àM¥=þÄ=îzE=•Gj=–[Ã=¶‘=ÜrS>ž>)îÒ>i _>’Xã>σî?|}?¹0Æ@…:@º’L@˲×@ª­½@_ä²?”õ >›b>ZQ=ÐÕ=¸â -= [=–ß=¦Ú=«rY=çÉ;=Ýä=³µø=©úP=´¯=à –=Ês=È¢ž=»ãÿ=¹Ë9=¸ÖR=Žáe=–á=¡Ó¡=]# =•ÁÌ=Ý_¾=›º°=í±=Þ#K=Õ½­=ëœ>8³Z>ƒÌÎ>‰´>>~s;>'b'=ùe£=áss= Î=»{“=µ[n=“wö=œ¤.=x¸È=]Ál=q'=£AØ=Ïd=« =›”C=kÞg=|%½=ˆHU=°òÑ=ß;‹>¥:>›Î\?t @ò@¨@U@·Ç@£¡ß@M¨?­0Ã>Šýf>È>=§²=Í@£=Á¶=<£=¸YŸ=ódD<OO=)Á:=¾ v=¼º -=»ÇÞ=¶-{=ñȺ> æ=“0ù=™®=£ýË=¾Cr>ð(>‰>Z?§½x@’L@ÙÓ@Ô|¦@ÌÿÉ@fÔ@¤Å>ˆý>B=ñѳ=|Ýk=‡7c=’Ð==öý=)£'?CŸ’?×>‡@‘Æœ@¤Î»@­åÆ@oõ3@F‘?>DïI=ê¡Û=œù®=+]= 3¨=ƒ=Ž¬”=›‹¸=™ =Žúö=‚éŒ=‹‘Î=ŠñY=„‘-=•ÝW=šëó=°—Ò=¶ø=¶œú>Q•ë?!\¶?ÂЗ@˜'¦@¾+X@Ã_‹@–¢@g_@>ü1>¤¢> Sd=Ó>:=ÀÉÐ=¹?=º„=µW¼=Šª=*=’ Ã=âï’=ÊZÄ=¢:É=€F‡=†Ww=¾Z=…=sha=©ÚÍ=ÃCå=ß¹=¹j=µd®=«í×=¥Ú]=°±}=Ö A=®4¼=—H=Å~=¾i¨=·îÉ=¸öS=½%¾=ÆÏ=öØ¿>6â>õV> -·W>ø×>W®ˆ>`€Í>f5E>@Û@>$õ2=ô…~>p*> -À~>{>ô1> ü=ñ8Û=úè*>2Ü=¤ÕÚ=Ÿ-=¥r=Æþ²=Ç =´€T=Òh¯=ó Û>>ÜW>õî1?=€è@Gàà@uøh@™þ€@lõ@2Œs?mz¡>¿%ˆ>Ë…=ùÌW=ç6‘=Õ~h=¼æÇ=°€Î=“M³=vyR=ß“=´IF=ž…>= P,=¨+ =×$=ò€=±V-=µ+=²'•>\ä?¥3?€­³@b›à@,{@ªo]@…£@S=?M¶·>Ö_Z=ÿ²*=ÿ-í=ØÏ9=¯bk=ØF÷=Ò"d=Ìo÷=¨®_==]ƒ•=~=úÿ=˜Yè=Ü=‹ßî=I…Õ=HY•=G`=†ƒ¢=“6Ü=˜Q©=¦×=¤Àï=œ'©=¨¶E=­¿<=¬°ê=žéÁ=ŒÑT=´º7=­›2=“=2=—H=™Km=˜w =’£c=ÄÞ=Žz”=£NC=­Œ?=œe=‡˜=m x=mrÜ=°Ù=E=ÀÓ=±Ûò=‹Ò=žÑ=ŸÕ=¦½=¢ ^= Y+=ŸT›=¦#=­ 0=T$= ¼Â=¤ÜÞ=‚ô;=‹¾X=›A=±gÃ=·ÉX=µ>€¿Y?R,?É£@;(@bL[@L -@ ?¯z^>C;Æ=þm=¨©=©ë©=“´=^x’=¤‘–=©¼t=˜…–=š0P=œiK=¯‚2= QÏ=¨ºÞ=Ó3Š=¡Mž=‰P=°ìÁ=æó>ô¬>¶2±?€U ?òÄ@kÒf@qñG@Zç?é±l?Îu>T‘'> íJ=Ò”á=»É=¯¨M=¦\‡=²)4=Ÿ!>=–UÓ=§(=£,+=”ó =e=£”=´Ò=œ'í=˜É=œB*=”΀=£¾=Ö\Û=ªÆ­=ŸYÆ=»ðM=‡\=_†=oò£=„l2=Šæ=‰ ¹=ªü¼=Ä{‘=œ Ò=²¯š=Ï·Q=¿ =Á½‹=µlô=¦­=­e}=®¤™=‘÷ÿ=—_=¨ƒ=•=•=K=™›ù=¦]5=¬§M=¶¡+=»#=ºU˜=ø=½oê=¹$=ÊÖÖ=Ë®Ê=Ëf4=–P‰=•Ùß=¢ =ÂÎ=Ö¼=ûb=‚R=_°U=`©’=’Õ=šAx=ŠO=Ø>>*†s>âŸ?£z`?묪@ ü”@ ?á”? ü‰> ]Á=íàý=ÎÜ=™KÌ=XO!={´=QÓ=€¶ƒ=¥ÂS=’'=lÞÝ=–Ð7=—>=n)<=Ž­v=ŽŠï=L= Z²=ËH÷>iô>ÅËê?AœÝ?÷ä*@ž‚@!Ûx?õŒ?ˆHã?ý=ôñé=ȉ=ž\=¤¯=iÚ»=8Bˆ=§d=˜S =Œ8=|Æ5=}#š=q%K=†ÿ‚=„Ó=…Q_=¢½ =››%=‡”W=¢š¸=¡v&=”%=i=d¸=žg½=_Sa=rÐ"=”s=¢‘.=§À£=µ¿#=ÙÅf=Ú5ô=­Ò'=²Ë¤=©P¹=›ê0=mw=Rb=wŽ˜=‚ˆ"=†6C=‘_=‚€=x½Õ=ŽÙU=‰¡½=†V|=†X=–fè=•É¤=¢Á=™*L=aJ=“Y$=Šû¾=‚È =©Ôý=š´‹=†Ð¢=}\Ä=‰§ó=œLF=®K¬=£ ==œ0=¸,0=¿C~=¸ Ô=²Å=¦¢=–ï=œ”`=« ™=»hc=Û\à>HÄ >¥P:?—X}?¯Ø?ëÓ?‘)?C©>‰¢=Õšu=§ë»=”Ôš=˜<Å=—ƒ =“çµ=)@=BH)=’¸L=ƒ¥=‰ Ï=›€=œm = x¤=¯÷©=»—>=ªØ=•´;>>Xëu>®H³?Œ×?²f?Ú—þ?¬¶?r‚É>¬Û¢> †.=¼ßT=•@n=~À×=€kf=L=™Öœ=¥lr=ª¶ë=r=€½®=btL=˜~ =‰$á=džl=Œ6=ˆ´L=„D)=s‹7=mþ=•I:=‡Ê¯=Î=OW<=vèR=Uˆ…=J/g=’º1=›ª=œ=iÚò=}ß¹=oF±=¢p=² =À€9=Åäa=¥?H=bÁ@=q=¨#F=²\¶=‘UŸ=™M =™v =˜ñ4=Žì=ˆÇš=x¬í=“ï=¦Fù=^=‡æ -=’ŠÊ=„j«=‹~a=“éä=š³=wö1=q3Ý=¹}r=˜y§=€Ÿ=E =™tJ=—â=NµU>€Ì>ä÷‡?J ˜?VµŽ?Q´Ã>Ô¼¤>?â=·×)=¶§=‹B:= ÛÒ=–ŠF=˜VÞ=™{=¦Qt=ò*=øí=¤•y=Ø =jnr=~üG=ˆ#«=ŒP3=¤wE=¡ð¼=µÁ>‰]>ÝÉ?kW?x¦¼?sÌ=?_Œ!? f>‹Ó>Ô=Íå‚=ÀȽ=¢€¾=wJš=¡¹Š=¯þ=¬µ|=ž{=¯•=°mA=§Cç=¬NÃ=´=¸ë@=»¡5=¾©=âG-=ð. =ýÝk=÷ªÈ=êjÏ=毛=÷{¡=íF8=âY[=Ã#n=ªïî=žKP=™Ì=¡ð]=¬ _=Á&¤=¢¼ý=ªCÞ=´Ÿ:=é=®¶=¾ä×=³ÕO=°Ò¸=³s)=Ða=àï=å^Â>žð>´> ¾q>Êf>:l>Lý> }š><†>å‰>æ">.²6>1¡°>(à!>I5>F°>;ù~>Bär>>‡K><¼»>5dº>&ù>¸;>ƒ/>Ÿ¥> n> -ÌÄ>Æ>±>‹L>(">Ùy> 1>>ß>k=æK=Ó _=Ìï¨>„¡>Coä>‡D–>ë ->ç$>Õæ>“e²>&Ü=ÊÆô=£5Ñ=“ƒ&= ó=¸ ={3=™V§=–(…=ƒB±=ŒXi=– -K=˜_=ˆ}ÿ=Š‘=©³ž=ÿg=›Nq=¾(<=¥ñ =ÞšZ>5í>Äâ>ë{n?»ƒ>ÂIM>‡*Œ>Þa=­5g=ªŽ`=©{Q=›³å=›6M=Ÿ$=’£ý=º¨x> -VØ>mƒç>îˆ?É}?b>Ì4>„or=îK»=¨ò=­žT=®š¡=ÛA˜>xÔž>®H•>ìAÊ>ÞŸ}>¸Á¥>ZŒ^=ОK=¸«ô=°è™=°¦ú=¥1z=—…½=±]ï=©ãU=¡=˜+M=‹8R=ŒL"=Ÿƒ2=Ù=ás=á÷V=Ö -£=´8®=–wV=}=˜Þå= n+=¬2½=ÑÌ=äbÊ=ܽ =Ä´Š=³)”=š~ê=¡º%=¾f=Õ‘=¾Àe=¥¥S=š¢(=±Fý=¯Iá=ªˆk=”ë5=‘Æ)=„&ß=x {=Q ={\=Gç=‹è={6= [=ž b=xßc=‚åž=¶¡µ=¦²Ã=“ >=†= F=‡ã°=‹¤ô=‡Ì=Ÿ¯=µg•=ÞÍò>'(H>Y½/>ˆ½À>‚í>W¢>*¹Ê=…`±=««}=³z%=£Dd=¤yŒ=œÒG=xD=–œË=‘‰=ˆFs=hä=š‰«=™=–a=°my=®‚î=•ùD=’«=ø=Å =ßÖ>2œB>gkè>‡Š>€Lj>[+†>¸à=Ú¾O=Ó†ö=Õ'B=¥%û=®Rù=²¨ë=Ÿì=›[Ù=—å=˜‡=¤‰œ=ŽIË=uy=0=–â"=ŸÒ=¤–=º'˜=ßYí>Ô >ÃÛH??æ?8#×?.Ö:?¯}>²#ˆ=ó¶,=ÁF+=§V¦=”‘@=£µÑ=¦a»=¤0“=©ƒó=°’À=¯Öj=´·I=¸“X=Òì=ÿ›z>©LF>ù?uÙ?AÍ>ÞU>–G¼=Öãµ= k+=–<Ù=–³=€šh=x/Æ=lD=l&Q=jm=‡í>=¤ø=«2=°?=µK=°ÆT=‰È±=~ï=ú= ¦Í=œÜW=˜ )=¡ ?=¶wi=µNù=žÈ =qó=áe=“è&=žn›=–hš=’O=‘Ü =ŒG<=‹ŒC=’Ó"=•ÂU=®S£=¿•€=ºD¤=Ãå=¿ -4=–Ûù=–˜"=–© =—L=˜‘®=ü+=ëT>õ>!>eÈ=å¯u=¶PY= D!=”,ˆ=™t =œæd=”XE=†5=t=…ö=•—=›%€=¤Da=±Å.=ÐÈ=Åìk=ÄñŽ=º)¶=™§[=¥0ì=º7d=Æ`Ë=×v >á>!Ð>0š>í'=Ö5À=—{«=“†I=ŽQ=†¸U=€þr=‹ÕD=º =Œlµ=¬ü=¬áè=ÑF=—-=¢¹=¦y]=µÉ=·R=¶¸Î=³Òë=¦=Jq=“Û>=†jê=—,=lJ=wÃ=’jÒ=¹†=Šòë=2Þ=Šs{=Hn=˜%i=ŽÍ =’h‘=˜yÚ=˜—g=©´á=©4=¬×=ú=¾¥”=·O=¥É=‘ï¤=à‹=šR=ª+9=­”w=«J=”CÓ=¨×L=¬=¨pý=£|=¤ í=š†=Ž!¼=ÆÁÂ=²Ì$=™i™=É Z=¸L=¨1=™¾=–„€=‰Ü|=}OP=Kñ=Šy9=0Ñ=ƒË™=’¶B=“úµ=‹Hê=‚)¬=‡Ì½=‹„*=³=ŒI=–+½=¢95=¦6=¯P#=Ä°ž=Ú_ü=ÊÑþ=¸©è=ª^@=–ôÛ=ÃrH=¼k©=³º=¯½6=–Þ=‹Ä2=žj=¡úú=´g¬=ÊjR=ãëo=ÏÜÊ=»Vê=£îÜ=¬Ù˜=Œ°=xRÁ=z“=îÀ=ŠË=Š“(=”"}=“9n=¢«ª=¶¨‘=•qÛ=—žE=¢H:=²u}=² -¶=Ÿ=™Ù=ÅÝ=¥H=©z=Çç-=îÃg=Ó =¿·.=ª/°=…ë³=~@=‚GÁ=¦A=…ºö=´ -=Q=…9=Ÿ“ü=¦SD=‹«=‰ä;=öì=‘:G=‘Ze=£‚=§Ù8=¤Ñ=Ÿœæ=“êb=pµ=‘lþ=¦g×=ŸKh=‘ =ŒËq=–~Å=£É=±|,=Ž;1=–sx=«}=Î Ÿ= ˆ=žò=—²«=\=‚>ç=ƒ:@=‡ñ=ŽÖÓ=|˜ =yÔ'=‚@­=‰ÊS=™Î½=¥|Y=´S=ÂÊ=ŸW<=¬Êt=ÊÆM=¬ì‰=ŸtO=M}=Ÿ/d=€=–=‚ç=žÊL=¥H)=ŽÅÒ=†ä]=—–|=i™g=…—²=ž«=· =—‹=žV¾=­6 =˜ªÓ=²x=®=Ìw=ëë=ÌÀO=¶v<=¶¸î=ÇŒ°=§e=Žº¥= 5Š=ž©=—¿=Ž¤§=‡¨L=…E=†ÉÕ=Š"=‚Äí=Õ=L¨=ƒQ=“€6=¢ƒº=©¢t=¨8æ=u=T=va›=€©^=`ôD=Žq=ž-t=¨S®=«í=½Ä&=À\ß=·–ð=µ ³=¤o =¦ ¿=¹\Ô=¨ÃÌ=µh1=¸~u=²å,=­âV=´x=·ùö=·#*=­ùì=«à+=°3Ž=¶l)=¿ •=¸"6=®1(=Èy=Üï­=ÓÜò=¾î=œ;Ë=³A¥=³Ãä=¢öü=‘È=œx=ŸÉ=›øÙ=—)=Ÿ<=¦|Ø=±ò†=¬ -=´s=´R=§Œâ=àÜD>9š¶>†aó>¼Ø²>ÃŒg>¡³§>fÊ=½Ï‚=‰$¸=€+C=„­¡=œÏ]=~è]=€B2=†€=‚£=öÄ=¢ü=³ï=™C'=‘cø=‘gí=—k²=H!=¡#·=h=Œ6æ=šŠã=þ®=’ó~=¡Qz=¢–E=ªçõ=®#ã=¯ãœ=‹Jh=›°=Ÿ2ª=—©J=w5=„Þ=ŽD=–Â=•­L=ŽU¢=Ž‡#=”'Ä=–E=ž«¡=¥­I=ªÁý=vK…=qV =cg¸=T°=‘zÞ=Ô6=ç¥=™{O=†^Ä=‘x=ž¡+=¯Âr=ˆÛ=žÁ‹=£K=–‹=—L =€8ð=u³—=„žÔ=  a= ù¾= š•=¡vc=›ôL= å/=¥P/=¨£„=›q=h =€ˆS=¨À)=• ?=¥ ”=§óG= zÿ=v?„=•u¨=—Å\=¢ò=’¯=¢¡D=«®E=©0M={«ó=|A =…¼7=ˆ(ý=^»j=lH]=gzŒ=råO=œ·9=“˜= /=¡× =…Ä=“î=wÔ‡=h8¾=7á=†Àþ=Š××=‹“a=‡\ü=ˆGÏ=¡m,=¤‹%=”W™=–ÉV=•De=—q"=›·=•V|=ŽüÖ=±¬=’¡0=ýˆ=‹ZÕ=‘Ru=š£ì=¤{à=½(m=·:ú=«Ù¡=¡âæ=­œù=¤‰=£3b=±Áÿ=••¡=‡»ñ=Š¢Ù=œ+(=‘Ÿ=Õ§=˜Â„=£Ú™=Š•€=e=¦ L=­Mh=º"s=®cC=­® =¨ƒ=—d =»ât=¢Þª=Ÿ¦b=ÄjÚ=–¸®=”X¦=…O=ŠO=‰~®=„{9=³= Uä=‹Ç=˜ß@=¥d‘=Ÿ²m=^7i=wRœ=t=’è‚=¶˜*=}¢ü=“Óh= ò,=§³£=²i =§p¡=Ž =’ô=~ÞÏ=šnW=âW=¢“r=´¾ó=Ÿ=ŠF=Š‹=™•Ô=fßd=Šl{=œ:=£ò=}G\=¡¯T=²!ø=¶¦=¬…=­³Ì=Ì¿=®&(=çú>SÆ>‡Eà>Šp>y¬b>1‘ï=Æ7`=Žö,=~âÂ=Ê=Š·ñ=v =ÛŽ=’º=“ÎG= ¶º=»7Ê=ÌõJ=¾¤9=ÔÂ^=Îw[=È=Æ,=˜Då=yV¿=oK/=~S=–Ç5=•+[=‚’0=u^*=‰pÉ=Âœ>$…><çä>U“H>U)ñ>(YV=õ •=¶ëþ=©.Œ=•Si=£Àx=µ9=Ä–ä=¡Z=¦\Š=™E_= =Ÿès=˜À=¤¼= Cn=Ž‘=–„#=›?=š„o=ŸLÎ=­[r=¹ =û{™>MF >žä>>¨¢ª>š¿e>n+>r­=­“n=¬èv= ¶à=Ÿª¾=¦Ôe=p¸=‘ÿ=—‘ë=›¢=ƒÆ[=ŒnO=„í=€í&=‚_Ø=ºò=—|=ðä=œÃ=¡7=‹ûÌ=s•=e½€=iÕO=™ç‚=–ëu=†!={Ò=€•º=dÔ7= LŒ=›jL=/s=žñ_=Ÿ $= 7Ã=¤;=ŸÎ=\æŒ=µÝô=õXp>+}6>m²/>bð>R-æ>"·=ßhÑ=¶M=Æ“)=˜¹+=Ó¢=¦Ó$=¤¢M=¦Ñ=Ÿ†M=œ‹=u ð=bVô=œk·=Ÿß=˜Ó,=Ÿ =‡ZÛ=›f^=§èV=¥ Ë=“‘=­æ"=¬ ‹=¨œ‚=§ù¥=‹l«=¥>%=Ž9=”ÐU=—á¨=­zì=‰Œü=ƒ=ˆZ`=Q=§‰É=¿dæ=Øj•=íªc=ú‰’=ÆÏi=§¸=¡Tœ=¨êã=ŠT=ÙU=ˆ“á=‚>ú=zÛr=¼¤=šPO=‰Ùø=„6ñ=p.þ={¸=.Ç=ŽÉ=Œ’é=³ç=»†ó=¶}=¯.=ª¯^=¤Ìï=hÔ=•é¿=ŽÅà=…$³=qŽ=uÖB=‚íp=¤Ë#=Ý %> þ’>nñ>èi=õÒá=Çâ‚=–dŠ=ŒÚ=‹ê=uJ8=\:í=“kž=ŒŸ=ôÊ=±KY=¯L=T<=¹x€=½ê=¦àÄ=‚ü=;¦Ú=VI·=™;ó=¥¦= *=¨3=° =‰È=„m =F=”„=¢e=š|ó=ŽíŒ=—Ø(=‰Ìæ=¬Á–=œ‚O=ˆUÎ=u› =†+R=bÓ²=½Ì=œm·=”ô=ŽtÓ=žrý=†È.=bÙN=[îÿ=s½ =‘Îs=’™¦=œ2}=—tÊ=Ž/™=–~=fY=lLu=–^B=­Çß=ã>Y|Î>žŽ±>¼>A>º,>‡w>-!==ÿ=Ø %=»$¦=~±=ŽÂ8=¶œ=©v'=˜YG=©Ÿ€=q‚‡=„ø=‰.Ã=‰Ñð=€ï=žVî=š±¥=ž#ö=Ÿ3Å=0×=¯e­=¤Ãþ=šý¶=˜QV=¡|ï=›g§=oý¼=v‰=‡H{=c\«=Z^‹=x¡=…ôì=–8=ŸY=G)/=iƒ=z¢=ˆqÌ=‰í=‚»Á=ƒb1=’Ü€=›”)=ŸÌƒ=Že—=wŸ=¨Ž!=²èn=º.ø=½SÇ=§qä=´(=¢3>=³ßm=²ëo=¤V,=ˆWÌ=Š/ú=‘{=¦=‰LÊ=×±=‡l=ŽÄ=š“¤=šZV=pHÄ=ˆš‹=•u¡=„ýÔ=ˆø&=/=i5Ù=“Þ=•~“=†—”=`ÀÓ=HXÍ=O'¼=r´´=¢N=¢=†‘æ=„<š=–¨Ä=tΩ=ŽÃ=®@¬=µ«=¯•e=ŒY=•M¿=“þ=—Ì+=„¹l=’Çz=È·=©k=†ûO=‡²œ=¥Ü=,"=ŽKT=–’}=¬·=¸’z=|!a=˜á9=”’‘=ˆ;³=˜é4=±žG=Ûjâ=½3c=¡‘=v =_¨—={Sy=®[e=¡A=ŒÙ»=“O€=¨Lž=ˆÙ=Š Ú=—ãò=ŒWÌ=ƒ1ø=£Àž=¤kÂ=µ) =¢×ä=’™«=…µ=‡#a=†Õ=˜-ñ=ºV‚=¯ªŽ=ŸùZ=°Ú9=Ïñ=§q¤=¹&³=Ç&p=°ÌÐ= -Ý=œÖ×=”']=”Ù-=”&ÿ=¡Çò=»óp=°‡q=¨Zo> àì>¸X›?™¥‘@PTP@Éñ£@Ô¡¼@ºb+@‚´^?ûà">Éï=ö¡H=±W}=°ÈF=¨¡é= Óâ=­ÃÁ=¢fó=˜i”=›çb=¤C¡=­ËÉ=¯XÂ=\Æþ=ˆ¬y=£aL=’@e=ˆ=§~=‰ Ì=ªƒ=®l>NÇ>?,‚a?ÐF@@VG@HÓï@+j½?ä¤?R;Ñ>9œ`=ÖI‡=ÔN=¼Õ@=¥±f=¦Gn=¤¥o=£W=‡ûÎ=ÄK =ð}ò>9ÊÖ? ˜?爥@ÆF]AD­§A[©»AJ@éAXŠ@ÇXk@w²@[‹@šÆØ@…°¡@C Ë?î5Z?^™´>h%=ã»=·Ôþ=©6<=¥‹6=˜ =¤]=‘Ó=†Bä=¦ý_=´ü?=§ „={y=‡|=só=¨’Ø=Ìr=ßq4=ç®î>Aƒù>Ľ?}‹?÷¦>òöO>¶z>-ç =õ–=š3=£†÷=‚ o=dD¯=‹ãl=·aÎ>A”´>¹'¬>ÞI¬>Û_B>°â™>`&/=år=CP=„Í=Ç_=›â°=ïa=‡xÄ=›Âf=wåb=«W%=¹‹=:=j”G=„-ì=Ž—Í=q«x=‹ô=ˆgN=„¥°=€R¼=Â9=–šD=­V=«b=­¼Î=£T„=”µY=“¥í=‚#Ì=Ä“Ð=Ÿ@*=Šá.=Œ™À=œ¦=«(}=9ï=©2=œÓì=úƒr>‡n0?!åÏ?¤ôŸ?àRî?ÚÊz?¿Í?Ù='@G– @ª‡Ý@â‘2@çŽÎ@µôÔ@Tªê?Ã÷þ?¦y>XGÜ=þ¦M=¿nâ=ÄE=µmA=°y0=Š =‚aB=£SÒ=¦‹N=sÈ=±=ž†=½M~=Þ|=þy«>ø>”>=lH>à06@ 2ÛA­˜A„m+A³«,A¸8÷A– KA"÷‰@KÁ?ŒÙ¢>l‘›>¨c=ר=Ò]Ü=ïö =«7“=¹)ð=Ý÷=ØUÔ=±¯ç=«D=š&i=û=ˆi=®Æ‡> É×>”9¢? -.Û?;tá?3Ī?*€>ŽÜÄ> -À=¨÷l=«‹ê=™M"=Z!=†ç=ˆ˜&=I=]û¢=”»è=—âë=}8X=ˆ=_¤á=hÚZ=¢É:=æ ð>B«-Š?¥³?ÏÃ>ùÅ^>´¯>*…(=Õ“Q=£«=£Öˆ=¸ù=ƒ‘m=š‹¨=vÕ¤=?ô¼=”y™=’u=gOp=\ý=‚0À=®Ùž=Å­%=¸â9=¥K­=Œƒ‰=!‰=”T²=yê;=rs%=´JŸ=Œ>ç=—‡j=’¾Ä=w[³=y¸=¢W=½ÃÏ=³ïÍ=—|=»d=–ð=„vV=yÖ=aã¤=E®Ý=qô=5!â=d…%=al=šø= ª=…4]=“¢)=šv=„î=Š?%=«+o=Á%¦=§°t=–“Ô=©å=©×â=‡s¶=£ŠÌ=¨°=ëU=—Ïã=°»?=˜£4=!.= …B=šïQ=ˆ›=”çù=•=¡ ÷=¯]¼=ÍãO=£}1=¦ =Ö£=¤î=°e=q§=†kó=dq‡=šv=Ÿ¢ë=¥æ8=×µû> ý>(J>Xœ¬>kiœ>H²P>=¸]>Á{=Ÿp=ƒ#=—ÚZ=¬•}=ªÓÈ=’>Y=¹¦é=®ã¹=®ø÷=‡´Ø=­ì>@hl>ºte?(?jVÆ?·'e@R2÷@Û®$A"ÄyA&7A+?@»Ål@0Ï?Fª¬>¹±·>}x=¬YÒ=¼á=‰ï©=”{ä= z=–ÐÚ=¡K=¾d4=˜«ö= Y=°¼ó=¨ d=žÍ=šG=×ð=‹ÿ=—®=žÎš=ŽÇw=µ4Ú=³õ@=…þ=«¦Û=Ñ’~=ÇOf=Ý,Ô=Ùç@=Ý]«>=j>Ú?¹¦4@Øà»A{e AÑxAÊúA¬†´AO†ƒ@²¡ð?_é ->{{¤>'Ié=ùù=´¨‚=èЫ=Ëù¨=ÊF=¯œ„=®Sr=šg˜=…Ñ×=¡õ1=»88=¤ú$=½\Ô=Ÿ„=Ÿ°™=¯úÜ=[YX=¢ ¡=Žèþ=…Óë=¨Ù=¡‚„=›"9=¿ún=©;{=\ q=Œ÷=g<Í=‡™þ=®ãÍ=£Ë1=x =UÎ=Zˆ¥=‡.Ê=jK;=Oï~=z|ü=5¶=GœP=p]ð=©ü¦=’ô =hk=sy×=—ï=§¶L=Ì—ë=îÖÅ=ß‘R=½={¼ù=Šol=Ž$Ð=g˜£=Xã"=daX=@_ =6<î=v:ä=woo=sË…=‚SB=h®À=WoÇ=†ÿ%=„jT=™ñ¢=r•=‚õR=º˜={¿=…Èæ=”=s¢Ü=]§=Šé£=v§w=m4á=‚7=Ž0ë=•i=…J>=l =5rø=9|„=‡rõ=ˆiÑ=2•0<â·s==nž=q~v=Ù6Ç=ÅC‰=­Ý==­g=‚\ñ<Ô€ä=IÀð=mÇ6=Š`=VË= -½È=¸=Z˜=öÃ{=ßYŸ=É=˜Ó«=¯ÿö=ÈÏ~=ùÇ`>¨=ì½™=¯(ˆ=U|O=']Û=&4=dÇ=ŠŽá=ª-4=†U#=¡ø™=åÒÈ=Æs¥=³›~=Ž¨]=‘ÖJ=5Q=­dÍ=ºOÐ=ljb=ý ‚> ¿L=¶þ=®–;=¢.µ=Žæù=‡3Œ=K “=/fÑ=/µj=aí==Ñ­ì=§Á»=–™ù=ÃÝX=°Ì¹=“$`=fâÚ=h¿ˆ=šVÑ=†¹w=bÄ=†c­=›Í=ºæ= -M=˜­=¥É…=„;=Bg=–Xë=Œ’L=€LQ=•6^=œf=Ë:¢=µŠ•=™48=ág_=Ý'_=¶ô¼=ûVø>ºS=épf=Ûâ=Å«\=s¿G=q„H=­­Œ=Œ‘î=]Æ=ÄuX=ÉJ=µ#Þ=­*é=©…Ú=bíf=’÷–=¹(=†!|=~ú¥=’»ù=R¤=£Ñ=±Ñ=›¡=ƒáÎ=iQ=˜=¬².=…L2=cB -=|Úw=‘\=ªµ=”f=‹³=€ë™=Ž„œ=Ò=šy4=¡ÿ–=©l =¡žä=¾º> I>YÑw>Œô?)>)?8³’?JªX? –>ÖÕÇ>ZÅ=Ñ°P=…¯d=Mb=¸ž^=å^)>1×â>qô?·ü?!å^?=Ç6?¾@G=û@ƪÌA QNA€ªAÍg@©¬ @:^N>ïå<>pöc=ôZ"=»¼z=£»(=¢*8=’Yö=†ñ.=·=½rJ=´)ú='W=wê=~ã=™ÖÍ=®U=X|Ò=pèó=§?7=[Â=7é=‚¯à=€¥Ä=†= $Ï=–‘8=‰!?=¢5š=žæ"=v&d=¯œ=ƒòå=Œ9F=Œlx=‹à÷=£|F=¡[N=÷é=u¡=cöÈ={Ê=DÜÝ=ypÁ=tÛÙ=„ç\= ;¦=ð%=„RŽ=¸@¿=´öU=ªM=S„2=l{î=§¥‡=þ¼=‰;{=£ÕD=¦á5=ª®‡=—#Á=šml=§ï=œë;=Ÿ=nní=ptO=næ -=zëp=€==|•ä=–J§=–öQ=cû6=_-=dQL=wPd=‡‘i=–aµ=wàù=oÃ=cQô=6I=œŸ9=®$Î=—Æ=†…ë=–iÐ=žTó=©ZŒ=Äâ(=Î,c=Õ².=¶¨Ž= ^ë=¯‹A=Žû=Cƒ«=¡hQ=™Àò=VF=,D8=+ !=ïž=’!‰=£†=e¼ƒ=hÏÏ=}úµ=”ø‘=˜©ô=^9=‹Ú =+P=\¼M=].=]l'=¦ò=že+=~"ï=‘·$=šÛ!=£zº=Š•y=o¤ç=@†=^º=ˆ÷D=·Wþ=¾WÊ=¸åš=Ã95=ÈÍž=çž°=ßÈô=Ôær=”Ê–=›uà=«Õ`=©ŽÀ=¥‰T=—´ =†mi=s …=0­=I6=^Ay=vŽC=“ã,=ÀÇ=ü‘=‰N,=_­ð=ŽŒ=œîÞ=§«=™¥‡=Š;ã=™i±=žK-=žØ={Õ=d`l=S-Á=œó=¢¡:=Tµ-=zûf=‘­ú=ˆÔ=“ a=¦6J=­d”=®ÏÜ=§°=n/=Böù=y`Ú=…³=3¯=Š¥|=d%=$U½=au¿=hô®=hü=XÍ=Y–/=œý=4=d=Ž‘=Š =ƒ4|=pr6=‰=µYü> > >‰=Ø£m=èÊ=¶”3=ÈôS=â¯D=ÿ¤> aÜ=úÙj=Æ6Ü=«t,=™²=l¹ò=Žî#=C'=»5µ=´³@=¯¦=Wiý=q¤Ë=”]e=²:Ï=µH=­äZ=‡7=~ë-=Ÿû›=„Ý=iè”=ƒÇ¯=†û{=‰­e=Ž =Žˆh=¢‚=~ û={ÖY=ƒVi=Ù=}è.=rŒF=Љ=Ÿúà=ˆ'ú=t'‹=S½k=aµa=m¶Û= ì=[- =bêË=‰T¦=«nZ=¶Ñ= àŸ=‡é2=pú\=eùŠ=c#d=cp)=W™ù=Qh=HY/=‹;€=’ø =ŽŽ=•’ü=“q»=…þ=‰–|=‹=rl=‰Ø=—h =q=†Æ‡={3¿=ŽÖ÷=ŠåD=vÝk=Š -l=4h=‰6;=ª$=¤Ët=¡˜=¦ø&=¥æ=@h=] -„=z«t=“¤—=€}=…i8=Šœq=ˆªi=A+=‡70=ðù=Sé=}Ðß=‡pÅ=›~=†ó´=ÖÊ=¤Ù\=˜’î=‹Kš=…Í -=x -c=ZŸ=‰Š]=’Â,=•­=ŒqV=„þ©=}±¯=Ž0Æ=’Þ=j-=fŠŽ=dî"=¼ô=•;®=c=mJ(=ƒ{&=š•À= Þ¥=—D@=‚6=„öV=‡õº=“€=ƒ¦=z‡€=}Äè=Œ¡]=êé=?À+=u¾W=·{=¨Ïú> 0>5Ÿ5?vÙ?¤0?:`t?¼9>íò>S)­=ÓÆê=œ>†=›±Œ=„¼y=uý=tÍÈ=€(R=‡Äk=¢X£=°Ñ=ÃÓj>4Kv>–È{>Ðy¿?–€>üŸ ->äqñ>œÅ">·l¹>î@Â>ú™>ß}> "ë>Üß=¯²w=‚ 6=‡2N=Œ(=¦o=¢‹N=¦·Ú=Ú‰z=Ë>7=µÊ=á—ö=ÂLç=¥šA=™Ž°=›Ï=› =q¾?=9=«‘=›x =Œ«c=mþ7=—‘§=• ¡=ƒ¯2=™~[=Ÿ?=Ÿ×=™=“í_=‚.H=eªQ=Œ9A=L=”Ó =¬¯Ü=”·=h=•­¼=’=î=ˆwC=½¤µ=°;=ˆš -=–Ü,=Ÿ;¤=«Šg=‘­Z=‡Ì=ä†=‡'r=Ž{=¢Ú=p)¤=_a]=™Ëé=¥f"=§4=’Q;=žK=¥ç=¦÷ˆ=ŽÙ=w»é=„ÙW=‹.=Ž’¹=…ñH=··=zƒ={K¾=p`/=f#‰=„Ö±=Œb=•,|=ƒ5=’).=©Ö=ù«=—=Xºm=uÉ{=Ú¹=‹ÏÞ=‘6»=”­ú=˜v=ž£ñ=fó=\O =tûš=Z¶=ƒ¬¼=l—ó=mÛ=9=u7=èç=4w=‹9H=‰Ðø=šš=žÙ)=žZn=™HU=˜¥w=™[1=œÓˆ=’ $=ˆ¾=lʉ=tpÓ=|ff=‰%K=Ÿ“¿=©¶ð=u=¥lÞ=§*a=“Ò7=‡ÐR=Ô™=¼=’Bb=•>X=™[=•½Ì=\ñ=jÕ¤=ƒµ/=ÉÁ=“k&=®˜=Á5=³£­=¥Î$=›Çñ=¢üc=šÛ=”•œ=“¹z=•(ï=•¿=…ê"=„ôI=‡*£=¶À¬=£í=’w‡=…Oõ=™0Þ=§ æ=xIŸ=Ÿ€)=¹Y“=ƒk(=~ðß=|ô]=¤ZÊ=ž„=™€u=ï==¨£’=¹}e=†=ȼ¶=Ç€o=³Ñ=¥5ÿ=±+»=žé=– ü=Ï)à=­œf=–ž=§¹c=¤fÙ=¡†1=œ;{=¢6p=§üæ=·g<=¢2=šR=ÃÏ@=¹b“=·˜=Ñ©=ÔŸ£=ÔUc=È8î=±©ž=¬\=Ð=ÇØì=ËuÖ=ïhØ=è¢8=ê#G=ý{>l]>qs> ý>(pØ>/´_>#¨ã>%}³>&ü>)‰y>'Îm>1«G>M ü>iàæ>fík>MâÏ>nt¡>sùº>oߥ>Yz>Y\>`‚º>XAÄ>L2>:h)>·>%i>ñ=ûk>"i>ÔS> g>Ð=ú>>u–=ÿ/=Êw=¾Š=µâe=âÔä=ÇÆw=³uB=¸D¡=·B´=¸Y=ÃÖ­=¡¤=’%=«û=‘×Ä=…õ¾=…³e=`Áù=hÒ-=ž((=ŒT=ˆª_=c=ŠØ²=‘¨=¡þÌ=®•7=¡$º=…œ×=¯n=ÄeI=ÜA>z>¦8™? -DÀ@*ï@V2z@[ø@–²×@‘Ÿy@‹Zm@_UŸ@%gô?áì¢>˜Ji>;n­=í=ÊÖ}=À@f=¸6U=««I=°?ù=¸š=ÈXZ=Øá=ßGž=ä¡=ĉE=ѲÆ=ïº=î¶> IE>$Ø ->XÕ'>­, ?0Ž?øº¥AŸüA}|B\x4Bp(ŠBrŸÝB8^ AÉÄAE3m?¨BÓ?ç§>¡$ë>fm$>!C…> hÖ>ñ¿=ñî³=ä|ˆ=Ö«Í>.A>mÀt>˜¥‘>œK >,e>v6¯=æ=Ĭ0=­Äî=®sº=¨I|=žÌ =‚ªZ=ž('=©ƒŸ=¯E8=«ã=†ˆ=œ—à=º`Ÿ=»!M=¶ÚQ=©]ö=®¼Ï=´Çè=¸ï–=°„ =«âÃ=¯ä]=­ -¤=¦ª.=‘$7=‚+Å=„/W=˜9ñ=®ÿ=Ö> »<>Wî->[bE>TŸ;>$ê=æ—=¤„‡=íh==Ý=“Ó=¤\÷=¤=£ÜÏ=£}¤>•À>[…²>¾ Ç?(@?Ѭ?ÍŒ?ê>ã¿C>ÅþJ>¬á>nåÉ>Z =Ž=¡µ_=¢¹n=†Ën=Ð>"”>^ƒ]>ËN>à:>êwè>¢h>WX=èãÈ=°]7=Á==Ä£=™Mh=͉=†Ñö=r\Â=ih”=‚§¼=d=”/þ=¡ÀÀ=²2"=Ÿ¡=­VY=½ L=ݹ>r >囕?yL¨?¥çj?±'?°ü>?ŠVz?ïÅ? ˆ˜?¢¢µ?ú3?jн>ÌÖ‹>cÂH> 3ˆ>7í¬>eIY>o>fI=>f3=Úù-= rl=™Yy=³ë,=á¬å>TþS>¼^Ù>? ×>Ì›|>•n4>ô > ÊÀ>]û>¢#>êà>ÞlÍ>Éq–>j Ê>=ÌÀ=‹’'=„í;=‹ø@=›ñ@=™ª°=!¹=šj=€b:=—äS=«=¾, =œ¿s=™ÎÉ=¬vÙ=|4=•<œ=¤àB=¹Lœ=À¥:=Æî³=ÍÖ?=¯þ=±cµ=â>>DV¿>Ån?*æ@cÂC@ýUA?ˆIAVÇA_°,A`¨KARÐA>A ÅZ@ëŠ?ØÌ?5>8¾º>V>PG=æÕd=© c=±èœ=¶2Ò=¼´%=¶_æ=µÝ?=´iñ=—Pÿ=®…&=ôý>qü>ï“N?ÁÊ?‰.>è…^>œ- >Ç=£m4=žÕ9=â¹=ÆÕ=’Qt=‘Íè=˜KÅ=–½å=„Ñþ=fTˆ=u~a=ˆ è=” =§0~=»¨Á=´$=¢Nú=˜´Ç=Ÿ)»=¦×Õ=ªÎž=ŽV]=Ž®S=·Pƒ=‡£…=‚Üu=‡m=e¹x=’p=§¦M=•<=¶zç=¼"y=¥rl=¸=–SÒ=HÍ=‰˜=…šÅ=„Û=‚Ì=w-=ŽÚô=²Ÿp=™Ô;=û,=‡»š=—È=Ÿg†=Ÿ‚û=’¬=“ÎÅ=”´s=—Üî=¥õ~=—›¨=Žz=Šµx=¢TN=ž‚¸=Ž2E=j¤Ì=‚‡=ˆã =‚¶={Ñq=pg¡=aŸU=‚×ù=kZ=•Å='KL=V^=sZ´=…=¨ßk=ä=†LÔ=Š¥­=£u=¢ÄÊ=PKg=ˆ…t=‹[M=„gô=„÷½=”ªH=od=•Q=‰¦Ÿ=‹î‹=›yý=(^=‹+ =—>X=—Q»=4Ô=TU=”•à=—b¢=Å=€å-=‰ G=­¿=…b"=U%è=–¿f=“Kï=‡i=i‘¥=nŽ=—°C=Š@Š=‘‚.=•³=–W6=yºx=YÞç=WÌð=‹Å=bHû=‚'w=žâ=§OR=£kß=¢ˆ=¡úç=k›c=h={s=SÛ=x†)=‰på=•&=•]h=‹¡P=|J‰=Œ Õ¤>„æv>Ò§º>âö@>áŠ>ŽžÝ>Nê9>Qêm>¦È§>æA>æÊ”>Õaâ>ˆ<>nÚ=œ5º=ŒþÎ=ŠK”=‰6=‹G>=ã==på=Ž¦§=¬AÇ=ƒDº=ãY=žÄç=¦¬Š=¡Fb=‘À =u>ã=t =‹C^=—¤=—å>_¸>5½>c˜|>Y,{>;DÁ>±G=µ†5=–i=…ñè=uS=ŽU´=vq=“gÕ=]ʃ=Žc=‚Ž¬=iüƒ=jSö=a‹=iÛ=|ËY={M6=ˆæ‡=‹^Š=€¾=”9=—ÑÅ=•Q6=…š†=XÒ+=^'ž=“J=x¢‹=mý=iþ¸=Šø=–-Ó=¢s‚=±q=uš‰=ˆ‚Ø=•*‘=š%X=›Ýü=¤¶®=¯GÇ=¼Ê >õL>4$>zÆ ?™’@/ô)@|}@€§÷@O‡ü@±?[ø…>DòÚ>¼]?†@øŒ@ -ö@~"‘@a´ï@ Wa?7šà>pöQ=Ð!®=¹R=¾ =ÈR¸=ÓuO=v -^=qH =€å7=šÐ‹=Œç=£º=ÌÏ«=Ñ!_=ÎF+=Çœ$=¸‘ÿ=²=¬%÷=£¡ï=£|=˜ Å=’¤=’Š^=£†•=™I±=Œï=zq˜=Ny?=b¿Ò=zbw=‘¹¿=‘ow=‰¦=‡‰^=˜vä=„ò€=…"=‰°=Ü =¡Qˆ=¡h…=…Å=ö=©»=žåá=;Û==©t³=£ŠÀ=‰o=±½=˜æ=›´=·k =em[=…4K=Í=‰á1=uuÖ=“¾=¨#=–qO=mƒ=”^=bm³=¦A¸=”M\=™Ïa=®¡ª=—yC=|k=u«þ=š C=ØöF>Q>§o>}x=Ö}Í=±Sã=4…=žmò=ŒNÜ=‰3Å=@=yÖ=  ‰= Z==…nl=‰Ü =y³C=|\ð=–d=ŽwC=€C%=sF=‚Ö¾=z­Û=ƒå=q=¦“½=œ‘è=¡ß=° @=¨q=¼B‹=Ëã¨=Û6€=áÃ=æû»=êò#=ï}È=Ü‘Š=äÙ=ßX=Æ’f=Ëøð=ÇûÌ=ÀíÈ=±\=Äo=¹?ø=¥ ý=‹*=r -<=ƒ¢-=”.r=—ù”=œæ-=¡f=§ù‘=Ö§m=Ò`ß=·ü=Š^}=¯.;=—Ž=‘²©=›¾=“¹¡=ŽH=‡«Ð=xr=ƒ“=”&=˜|U=‘Pc=„]q=†ù=‹YÙ=–îï=©½W=˜’³=‹†=’;o=¥‡L=™r=ε=©*=£À=­U„=®®¿=„Úâ=–SK=åf=…‘î=‰çM=ˆJ=„«¾=ƒ‘ñ=Ÿá¶=³ÌI=¼Ð—=ÁfÚ=Òa=£ l=˜E&=ž³…=­7Û=™B/=” K=–ã‹=¨»=£È=·¸¬=Ó-q=®µ’=‚„×=ˆ*ä=¡Î=“öA=•E2=“¼Þ="ã=’('= §=‰öÕ=‚Üm=˜¨«=‹®œ=•µ¯=¨3r=Â(=ìà´=ݨ=¶žj=¡E¸=•ûg=–Íw=¡0ê=¶.`=·žu=¢Q—=ŒEN=£Ë¼=¡Ï=åj±>?½%>­Öà>Â>Ôœû>Ý?é>¿‚½>©Iÿ>‚4Ì>-'=®âð=¢Ý=Š3L=‡¥ü=n/[=·‡±= ÿè=œ|ë=àŸÕ>(e>5*M>8$>2 >ßÙ>< ->Ù>Ò}F?Âœ?Ai>ÜlÉ>”Ï=ÍÐÚ=«êZ=§¯ú=µ:—=··Ú>YA">›ü‘>½½>½áü>~¾'>¥N=§³=ˆ‚Ö=5€;=bLE=Ï€=‹?9=¦X[=¦de=Ÿ=’¼B=Šn==Ž¤=™‡†=¬ -~=Ûµ=ÀçL=²|¡=¶”=¸:á=™Ï’=‰S=ƒêË=‹‰?=}Ÿ%=‚ Ê=‡¿È=‹àµ=¬²‚=¡@=ŽM”=€öþ=d¨9=t•F=}í‚=q²¯=ËÉ=Ž'=Ž—`=‡XÒ=©éŽ=’ƒi=‘Dß=ô¶=®ï=­3"=Ç ¼=Û4=¶kt=­kj=¦FÅ=¤ =­ ¼=”ÉÓ=Ÿ|=˜Ÿ±=…ŽÃ=‹—%=~œÄ=Š\=šm¡=ŒzF=“¯v> ->Âv?j”?£Ík?žõJ?‡[ï?=T>6¤ =ùR>}U>Y¦Â?&>@j4 @î2‰A4AcAdœ$AB]A™í@Ïè¢@q73?Å;ý?¡Ü=?f–ß>òÎ:>Ê3=þJ­=ÃC5=”@[=œpn=ª$”=‹ü¥=ƒóÊ==t4C=‡%=3<=–êq=³ìE=–Ž¥=‚M=|И=šzo=‘Óg=‹FÎ=…á=€ðÅ=†D=~¯q=—µþ=«øW=†þï=l@›=\DA=^- -=v?n=’ò=¤ÉC=©¡)=©@™=º-K=Ãnì=º5=®]O=§ñ=—Í=‘<=‡à?=‚ÐÉ=•2—=”†ò=‘š=Œö=…$€=Š$$=˜N = Ý§=ž¸=kÉü=tû=‘xî=ˆÁm=l§=œ^=—R±=žTw=¯X=ÃXä=ÎnŽ=×.{=ÐÝç=­;ò=ƒÁì=jç=óÓ=…Y=Œ]ß=‹a¯=]Ëb=;;œ=] =o×=…l¡=†Wz=tyÄ=:«Œ=ƒ—=‘àÏ=”¡=žÙ=jÃ×=_Ïó=sÐ5=ˆ@Â=ŽèÉ=z±=…ï=‹5=– a=Roo=˜‘=ˆV=x™,=ˆÎ=sGŒ=s»=ià=Uúâ=&äÔ=» ¢=ŸK³=„þC=v÷]=”ïÎ=…9¾=‘Wš=› !=”ÄÌ=Š›â=‹9h=Ò|=’ôÇ=ƒº*=uxQ=¾‹=p2•=VÞW=ƒ‰ =•=y=pÝ5=7ÌÀ=‹uî=¡Ô=Šñ=w=§h¼=ž‚=ˆÂø==rþ½=Fz=N.V=H$]=i³Q=¤‰=yR= =¦ÝÒ=«L=´iÃ=¸#¯=µu%=²á=šôè=HÑØ=‘Ñ|=Uë­=b§S=ˆ­-=u¤=p‰/=mM =€î;=Qä=…u¯=]ú=vÛ©=k =P.ç=ŠÀ=~fÜ={m=‚ÏÏ=‹&¢=yñý=)4ç=7~˜=p =Âk=ªØ=°ûy= GF=’j=‘”ý=‘,²=•P=–ð‰=ŽÏ$=n°I=Tå=Zkw=^9ü=e·=mSo=€Üª=†ìO=y*¯=r== $=“ÓC=wÀõ=p6N=y6ñ=™Ø=‚G=‚Pè=n‹¤=_ȳ=q²~=sgx=T œ=z0ò=Ó=pYi=}º=€å;=i¾=bO^=…BÔ=\¨q=æ=RPŽ=‹¤=V!=—a¢=£c=¦°=™2Œ={>=ÁÑ»=š]ï=—Yš=–°=‰|=qbx=d;=G ±=]ã·=–û)=•ãƒ=’ì’=Œý=æ=g =T·Ä=e©Z=†HJ=ŽêÐ=ZX=™=… =…µ=†/@=ˆKì==°xç=Œn:=tG,=gðî=h’ù=€J=Ÿ!|=§“É=Ÿ5Û=Œ«=ŒìŒ=‚Lå=òt=†Ò.=]g"=`´{=—Ê=Ž:Í=‚Èu=„ôý=¨ŽN=•Œs=“ó¢=„*ô=ƒúm=¢=Q=sw=„rù=Š=¹=Šþ=nN¶=Ÿ»¹=†¶=q(=r=x_x=š<€=ÏÂ=rˆ)=p®=vC†=¢U=k=w«Ã=ˆ„ô=‹Ô=t/Î=—ìí=‚ä»=‰Žx=ÃŽ=sƒ=]zX==0T=]Sß=`#=DcÕ=‡®l=¦þ=‹þ=ŸE=¼8Æ=ªš‹=âŽÈ>k>šZ>ó > -¤=îœ=¯—¹=£HÎ=œRë=’=ƒÁ¦=¡ÿä=­Z/=·8=»i=µ†==£W=°Jó=ÖÜö=âÁï=îPŠ> -vs>63Œ>À5u?žÙg@Ï8lAˆCB†kB.„B.ÚFB¹çAÈÖDAeKÍ@ÖX?5?‘>Ž·->8¼•>äa>’á=íª£>-=ÒvÞ=¬þ0=£a=´ÿŽ=´â2=š =ªá·=¸4=²À÷=£ÿ=·'=„äˆ=”dÔ=¢Ñ=š®¡=Õ±]=ÞÚ­=ÚñH=Ï\¨=Àñ=¶´Õ=Ìîœ=›Â=²¢$=·Oy=²]×=¶šî=ŽÙç=ŽÆó=˜E=¦Ø(=«®=“|ñ=^0‰=´A=—óÈ=‚Â;=„p"=‹Úï= ¢±>I.÷>š>Á{.>Ìéh>°`Ý>TlÇ=ÊÎ=¥g·=Ÿþ†=™Œ=¦‰»=ªèŠ=’©M=šO=ŽäÎ=\1=™Dë=£cF=’¦C=nV³=‹Ô=§œŠ=Œ8ð=§á.=Ÿ×H=Úœø>=)>“C´>ÁW—>Ó">«p>Pöe=Ö"X=v5=‚=‚ÛÄ=sÚ=ˆ½¬=Ž=ù\=lÑÊ=¡®}=Œš=Œ­¶=gÔr=ràÝ=”šÃ=„~1=…(c=1G=hMÊ=‡~Ú=º=gèÊ=‰,=‰®€=©¥Ê=«O#= .Ð= q=ŠÊn=€µ#=ID=±Ÿ‰=«íM=oª=t¾·=±O=kü‡=f%Ü=_pË=s%x=üÓ=ž§^=ä_=„çO=K6=~ØÂ=yˬ=„ÿ3=‡˜é=z³=‚nb=¤@=‡›_=RHŠ=bî=E‚—=iEQ=q}=zjÙ=t ÿ=8J:=f%Ü=p™o=XȆ=n6=‹¡†=“B&=ŠSß=eÝf=~<%=Ø”=ˆ€ô=Œß=·Ý„=¡þ@=’m)=¢—±=‘Bi=”GÞ=­rï=±œà=¬N=B¡S=³ñJ=š”L=‹ûù= ¾=}·=2¶a=V>`=vKB=šex=²?y=ÜE>2wZ>| í>‹¢ï>ˆLB>Wd‘>9šã>]‰º>‹{>vG>G&m>ûV=¼pˆ=­¦'=¬×Â=•<ð=(@÷=;‡=`ü©=Væë=OUG=D=w4)=ª÷Ç= ìŸ=œ„ì=Í@>*ûõ>…U¶>¨Öù> ý÷>yµ>mY=Âìç=‚Å=e4c=…u7=˜nÅ=”_"=ƒ8Ý=ÛÝå>Fh>‰Ù>‘¶½>~îí>4üt=Ãt=f)=|ß“=„aB=n2¼=1§<ãè;<æ‚¢=Tµ–=ˆÙP=x•=I<¶=SVJ=‹G=M Ñ=8ÝY=oÉ=™¹µ=˜0J=gÃ=Uò€=W72=;ûÅ=N°*=„ãÉ=(ö=‚¥ú=£Cö=]ðÆ=‰õå=uû1=‘l—=¦ö÷=˜é=‡+×=•Ûv=#¡2=‰|==Oä=g¥=q.Ä=c=’=vfñ=“û±=`Ìc=zU = ½ƒ=Œž=…°‹=jÜb=BBò=„Z'=’êÙ=O=@¿=t Ù=yÅÎ=WV‚=fyû=•+=3Ü=œûä=\hû=Xü…=z*÷=—ÌD=œí§=q¾v=œèÈ=-é¼=w¯ù=l|=CZ¡=jqH=‚êò==I*=Œ­W=±—=6" -=r§ú=Ÿ5c=§Gã=œ=ˆ‘=Qùz=9ô/=ž z=›ÈŽ=žy!=¥ñ_=®=´!e=¬Q±=Г=¥1=‚ŒÄ=±@=®°¿=~=‰^š=Ä H=¿˜=ÊŒ=Öæ=æ¥Z>~5 ?v3Ò@‡G‰A'¨OAˆØùAˆAŒµ˜ADÞ¥@Ç6z@ñ1?Us>ë”]>t*ÿ=ñÈE=ÇÕý=±˜=Ø€9=£“a=™]<=—d=Œ¾=†¤N=žìÀ=Èý…=œà(=Ÿ$>.š>Ù“>È$Ï>Û„>Ãî>ŒHm> -H=‡OÌ=Ðxe=v²p=¤ˆ=Žçu=X9Ù=bvº=ŽH©=€’¼=%ž=Eн= ¹=U>=”ÞÌ=CŠ\=E±=Oå7=†¿=™žë=Ê“6> O2>*ž>èF>Ö†=ðA@=»Kó=zE§=[èW=g=Sš-= ¥=µwV=§%=‡;¶=ƒG=€ÞÆ=’º?= ^=®lÎ=z¼=”©Á=_Q^=E€=F€Î=AN=€-Ã=›#=ˆú =h¨V=Õ==´þX=q«=Iô=C¹=‹®ô=kÀ~=H)=rv«=oW“=‹Sª=ŒØh=IC =,hù<º ž=EÎb=4̲=f°=F±=<Ü`=lS¾=±Sž>'E>ÓÀX?$j¾?4|‰?,«÷>èj>v#6=«BA=7Y£=4äÃ=¸(=bÝ=’ ß=@7=‰v2=¬=À=‡ä¤=Ý\=„-þ=”X=\ -=P`Ú=×w=X¡ô=l·=Ÿ`=ªEÊ=•í³=%:¥=ÛŽ={h3=Þ¯V>N>ØÊ? yí?°>ê’>„¹ø=áN=£¿œ=q©=Ÿ=VA—=$=7Iò=Fcå=½=ÄK=.3½=`E<Öh6=œ.”=õŽG=Îá°=Çò=Û@=µ½B=“ž=^BÏ=T=wy?=uÊÇ=tÃ#=Î -‹=©Ø}==–=s#Ñ=Ž¦ß=‡™9=’9ƒ=¯"Ï=¹´n=³)C=­Ž=²À=0l"=9ƒ²=.ǃ=ttÇ=¡"’=Ñ=«^=•7¹=„..=mAÖ=>ŒÆ=¯ÙÕ=­{ù<Àʳ=ã=7{Â=Rv2=0´c<§¬Î=jz9=§ÓÐ=[;U=¬—=óÕt=ÌQã=³žè=šdB=›9o=y5s=‡Ü=‹æq=sî<âÍ<ð×°=”ùð=ªX=H{Í=&uŽ<òÁ~<ïa-=Z=to=eì=mŽÏ=¨ßú=¸ÐÊ=Iùñ=Œ/=¯³ç=²Wò=Ù>*Ô>}µ=ñcg=ë=†=ÎSã=Ç=/U= ë=É›=2’@=u:.=•O€=ž¹=¸~Ž=ƒJÛ=$eS=³¯=¶$.=bÊ=N×­=è=¦d¹=£ú=càª=‡ˆ=¡’¥= ü9=–ÿ=|ÅO=`Ãm=Y ©=X£=sù‡=Š›=—JÏ=¢8f=Ĩ×> >Tò>ÿ=ú}©=ÙYW= šì=É=ÃHè=Ä¢å=¯ô;=jc$=Z¾T= Ì¸=¤N8=´k-=^/ï=`éA=°Í =¬{Ï=¤Ic=^ÍŽ=h×=}È=•1³=±4=ƒ‹=_a[=2ô‡=ø«=•E=g¢á=“Â[=«#«=ÂÓŽ=¾Ñ—=©®½=æµ=£_=À+’=¯¼=–fÜ=Ü8G=îÙ=¶#=Î)£=è†t=øük>Å]>cqÂ>¡¢›>Éá$?Ê„@»#ôAc¼0AÁ®AäùB€„Aþ6ýAú0 AØ+»A¿áJAw¾B@ø5­@8»>âRŒ>—Û;>QKó>hÙ> ,=Ó ð=ÄQb=¸£=³}Ù=¸¼å=¿¨Ã=ÒÝ =à~ó>)›>\W{>¡Ê†>ÉD,>Óã>›ñ>tS>$ž˜=ô"a=Î%=‰¤ô=º&N=Ù>( >)®&>&Hg> „>ã= ]«={pU=.R}=‚b&=“Žâ=£ .=k.Ë=>=RJ=5(= |=ƒä=•ó~=²bc=¡ð‡=™SÐ=–­ˆ=Ÿp=;0=™Ái=¦Òl=Î!=çw”>eÂ=ö2—=ÞAL=ŒŸ­=ŒÑ=’q=žƒ=£{G=ªL=…¡c=ˆ|=”tØ=În=§–Ó=“¡ò=‰d=hš=„Ìl=‰än=ˆ”g=å&=›ÿÌ>Neó>nYa>“w>€6E>cb~=ûnÄ=Γ¾=”^‘=¥ÕÔ=«¢3=Äá=¥,V=“ôo=¢3Õ=º®=–%G=—°=œ=¤|Ò=¹W=Ë5Ì=òÐä=ã±m=¼tÐ=“=‚Õ»=_è=mb=wžN=–å=*œ=`ì¦=lR¸=yN =Š\Œ=–Ψ=ª{Z=Œá´=ŠÄ“=“·e=°9Ô=ÌÜÕ>,Ø>>Žª>U(¾>¶O=øØF=gìK=mìR=p#=Ÿôs=Ò Ü> y›>ˆÏé>j>¹¢¾>–S”>ë=ö -=Å>=ŠvÛ=„›[=ƒb=Š0=£Ác=²½þ=è§Ô=é¸Ò=ëÎ=¹ê¬=°¥Ù=¢}=¨ùÊ=°õD=ç« -=ëíÏ=òž×>ž¸S>ÙÖ ?,1?>ý6?D²?s>È=•>C•ù=·b=šy–=«'Å=‹Ëí=‚¶ã= ;[=f/P= VÕ=PÓä=€Ï:=§"= 4=¡u=Üt‚=壕=ðíU=Ýš=ÁËú=—|[=ˆì˜=yé=@¸<=œtÿ=Î*>4>6” >kƒË>WÙ>>=Æë=®={=Ÿi=ÌGª=ïÿ> S>à“>Té=¸ª;=ƒò‰=B¥€=…®Ó=€žé=v<’=vÑ1=^=•Ÿ=”ñ=“Lá=‹!÷=Â=“öB=³Ç=¦¥=Ì‚=ˆcÏ=ˆÙK=qÿb=¢^=œù =’= Å1=µuî=Ø©=Œ3¼=˜(6=Çz =äe²>8ò=ê<ä=ÏD=—:N=‹èð=€™¾=yVJ=ƒM6=µ¬‘=–mÿ=‚$×=p.à=e ã=fX­=ssŒ=|½Y=‰÷M=……ò=ù×=ˆOS=ˆ¾=‡ì2=ÆAO=èÚ«>–>|;>ß­=ôX·=ËW4=¬ÛÑ=”¿å=š©m=¡aý=‡®*=~?Z=qã=…•Â=“;O=¹ }=ì…> -žú>A%À>1a·>¨å=Þ¢=ÆCÕ=¬Ê*>3R>(¨>®×>äB=æ—‘= ´=®Š‘=Æ> Ä>(°>[> N> Øc=¥ß=¨¶¾=©«=œS@=‘î¢=ƒfŸ=óȬ> ©X>o®>[#<>L%Ì=úÁ =¯ A=LU~=‘³±=‘Iï=†ë= ¨»=Ÿ3s=æŒ=¥T =µ®2=úª2>$œ>GÙ‚>}ø>…ÜÏ>ŠÚ[>=n>¥L=áñä=†ÿà=Dx¢=…¨=„Ä=¨þ=z¾y=„›®=ŠÊl=™»=¢’=°[j=‘c=‡ÿ=‰–=šÅã=¤#=†s=ŒŸÊ=‘g=#Â=§üD=ÓÄþ=¦#=šúƒ=¢«¶=Ãÿ=ݤW> >Š(>=Ö™=¶N=‡ê=©+ô=§ÚU=™‡Ô=”½Û=˜ò=À÷Ð=º“=µ/=†ÿœ=5–=™( =ŸGá=“Çj=u(=‡/³=PŸ=Q:=™"ú=¬Üâ=ùËÝ> ÙZ>tD>É>%&>Ãá=ù£Ó=×¹}=ÉR=æ#Ð>³«> !§> -VS>D~=£ÂK=Œ7H=vÌþ=c‰=mS§=v·²=€kì=ˆŒ7=”A6=}èë=p~C=o•ô=ãî=‚ά=’_=dIž=:A=^ê?=_=_VŒ=|” =pø·=XÈÑ= =”=‘â=»"a=Ñì=ø,P=ý[s=ùüc=­,‹=š¸µ=‹EÉ=ª ?=–ÙŸ= ÷=`2=ä0=¨©È=¥ù¤=£CD=›×ö=¦kñ=¥Á‹=ŒoT=‚¢/=|t|=…KÐ=“é.=¡š=“'Ø=šaQ=¦‹K=³ˆÒ=§Ò=‹=´,À=¿Œe=Àú»=øT >14W>½èè?¨ÚÛ@/2ÌA:bAh -ÎA†ìÄAcG A!©8@«ÎD?iî>É>0‘>TÑ=èFÝ=ÉŽ=Á$=µJê=•û=Š|F=‡†ð=—Eé=ˆ5U=} û=‘¬ç=›7¾=£m=“Á=ŽÒï=ˆf=¥¸=—â=yîl=—øE=Ÿ¸€=¥È"=Žf‹=–ÒO=Êg=Þ8ê=åfZ=Úß×=ÀFÁ=¯÷þ=¯ÞQ=º@=Á6ð=ŸÂb=’rÃ=‚½=¥ŽZ=£j×=œ:k={ìô=|Í=„î4=>)=ƒš=Š{Ð=j1=‡û=_=Y2©=][2=„Q=¦ü=€úd=Š™Ì=oN=ŽeT=|œî=ƒr{=ˆ4Œ=Œ~Ä=ö}=•ÖÂ=‚§=‚È=…8À=jì=xêN=Ž¸=§ i=°Ít=¾±°=þ_5>+x=ÿÝj=ÓÿÞ=¸`t=£‹=¢o‚=§‡1=ˆòF=ŽŒ€=•Tt=ºÌi=²ÊJ=¬ÝÈ=ÒµÜ=²Ñã=“¬U=”ÞÇ=§àõ=¾U‹=¥]+=®O&=½Ýí=–ÞÃ=˜ÐK=£¿•= åÊ=™§€=Œ¥=r*=–Ì=Ë·S=£Þš=ž*ƒ=±ô_=Œu=}Æ3=€Ç=r÷=Ë^=·Xm=ŽÞì=o¬Û=_=–=€@=ŠŒü=‹›þ=Ýû=““¡=ƒÉ=‚z=ƒ-z=­ --=¨Á¢=¤Ÿå=¡`O=­E+=º3X=Z™=š2=¨ Ú= /7=¡Ü=¥5=®.Ë=»t=Îðu=¸WÞ=µ¢=¶ò‡=´åï=±ùÃ=¬Èœ=Ôö¥=äk3=óè%>ž>#bš>'õ(>&óÕ>#Âï>á[>I’>%É>B”Õ>?:>G­&>im6>Y&I>W`.>i_ï>j†H>f‘P>S”‡>N¢n>Lð!>Oÿé>:)ˆ>+Ho>Žw>/–>Cþ>‘> "˜>>ë -=þ¬a=úW½=úÔ¨=ñ5.=í”.>=ÕŽ8=»×V=Üß½=žù=°¢š=wÝ=£N=…§±=¥Ý=ŽDà=yo=n[#=‘«=¢>=•h÷=‘Ð=‹ç=RàC=eŒ=r==cRï=zEw=„ðÒ=jÇÔ=€Ôp=Š£›=•X=F=hù=©(=Ä=‹Y=Pþ=‹šø=‡gÛ=nm=ƒe¬=‰¥Ê=jF¦=„­ =•u=ÐûÒ=àGõ=êà=ä¨/=Ë=µÏ=•N=ŒÀë=…9–=o¥Œ=“Tb=¡g¹=@8=‘„é=UÐ=ƒ5=˜åk=¡Õ0=òÆ=7å=”a|=±(š=¢‹ï=Ÿ-«=±7P=¡˜¹=›_=«!5=žâˆ=–ê[=‹È‚=’ܬ=›‘w=°R=ºV=¿=Âø›=ÈmM=Ê×I=Ínž=æí>™2>"NA>†]î?‘g?¢¢tAdÞAc\ÚAªOµAœRA=TA1§DAŽùAWºA óÚA›é AƒH AGÏ:@)å?§KÝ>»NÇ>9±> P!> 3Q=»D=Ë'=Ø÷2=Éîl=½9.=¶ˆ==Þ 7=‹H=±Fó=¿&í=µ:s=­~à=¬,=µßÛ=»¯Í=Áë=®ž=ŸSÎ=ˆ±Ø=ž›Î=£~h=š ¦=„«Å=—=Î$Ù=éì{>,>&#v>"©Y>ù&=áÕ¸=®òj=«]M=«©ï=‚Ž8=ùä=›z=eC˜=~. =†xe=R}=dQÌ=pèh=‚ƒ×=€dy=tXo=T·Y=„­4=Ž=‡Ü =™ý›=›óo=Éã=k*&=c#=n¨=„¦ó=†äÅ=‡ =¤>=•-Ú=yÀT=†»F=†=nõÜ={sÉ=a­=OS=j¨"=KÞ=>Óò=w…x=Ae¥=:ÏU=ƒ4Œ=VÌ=R¯®=vþ»=Á=¢=Á,b=Î¥3=×W×=âo¸=¶&ü=¨™=œ¼=ÃDc=ò/!> Žî>ÿO=ʼnÑ=Ÿu¼=³Zö=ƒ÷ì=v=¬ˆ¸=ˆ‰=ˆ¼ú=¬ *=¥¤=‰=VQ‚=€g =j²±=G'ä=DÚî=cº¬=ƒ‡p= ÿa=0=`\;=šº9=‹†¨=‚J–=w4?=wš£=‰¿U=¬–È>Uñ>,¼b>1Dý>)ó>Ö-=ÂÈg=ªˆÍ=Œó-=b>¾=6¿`=7L=7DY=6iM=lÓ°=xµ=TA=vò¥=€è =Òf=†½=ƒü¼=F=~Ã<=}•¹=‚b=‡EŒ=†ä‚=Š¿Â=ŸG7=‰æô=zC^=c¸=oöû=„g‹=™G˜=„qM=cœµ=4ñô=DQ=e½=T=‘3î=‡”ß=€=‚/b=ˆ0=ˆ¡=´=ˆ+¢=wz¹=Eo=‡ˆ3=‚y=v93=„_=Ÿ2=“s=ƒdE=OòŽ=M†=ŠÎ_=ƒ8|=vŒ^=`É =˜÷w=™GŽ=–þ®=ëX‘>Ãã>/Žµ>(¦:>«> õ=·rE=­Çù=ž®Ö=„U==š‹$=‹5â=iTÒ=v»=R=>é:=vCV=¤ºS=µYå=®x‡=×±D=Ïl`=² ¤=€š×=ø=‰fö=;/Â=VN­=xsò=­Šß=·|W=ç >,°>DLn>*ª¿=Á¼G=–X½=o/+=Š†@=ŠuÎ=Œ7n=‘Ð=—9v=š)v=Ÿ‰q=qn¥=OI¿=5G\=³!>.eå>‰‰>>øB? ?Þ§?BD?¥ö?‹'? -±”>¼8y>dw¶=ÚÝ=g5B=o6 =x½=jP=f0=k0¹={C–=—5Ê=ˆ8I=z8K=‚Íâ=‚Y=|nî=\á=Q¦Ê=_a=wÓM=‚÷æ=™Mè=©1t=“˜0=¬/&=¬Ÿ=ˆ¶â=ˆæU=…õo=Ÿ"=MŽª=Zg}=bÔ¹=`=]=L j=W,ý=ÐÑ=_ÖŠ=ƒõ¤=£sÅ=‹ˆ:=C =Ž\K={÷A=°m=ܨÂ> ¿4>%Sý>\{>M=žãl=U{=‚Ö=_z=~-¿=ŠÔ¹=—w=€~==€¦×=qG0=gWû=d9^=mkõ=†»=€ý=]‹Œ=vs=w(¸=wòÙ=g½¶=k Ÿ=†î#=¨†ô=´ºz=Üüj>IH>-(„>"—ý>‹¥>á=› 6=Z”°=xž=4­Ò=WÂ=m>2=5“"=I³ª=n>Å=”)*=[¿=a$8=o>¾=lK¦=U>=Tª=h¡N=TEï=@ù~=-˜'=zÅ==pÔ4=qYµ=î}=ƒê5= «=€^Z=‹Ì8=‰d€=…¶è=jçœ=ƒ|=„¿þ=wp€=€î(=±—=Ý»<=ÌAÙ=Ä4ý=¹…–=ª -*=™Îz=¸hc=âG³>¿>1Ÿ>8ǃ>-A*> ˜Ï=ârc=¦5¯=VXÂ=~‚¼=ëj=˜mz=ëÙ=ÿØ3>#º=â³ë=¬Ã =…8=W ü=‹“Ì=‘Ù=Œ_T=?=w¶e=~ñÓ=š~o=éÂ=Šc5=¦5u>ÞX>Wl>‚;%>„¹¡>Ux¦>$Ä‘=Ý÷)=ˆf×=‡Q¸=†Mƒ=†lñ=ŒGÆ=ðF=c~=_ý•=J¥Ÿ=O?Ý=¦/=eA=Xêw=Oj‡=—‡;=£M =£ÀU=’5=–on=eŽ=…~Ô=Ÿ(=¢ =Ò8¦>,<‘>ó‘…?Iå?3iù?"&á>ÑcÉ>|>ÿ=ÌÁä=€›Ó=‰ƒ\=– -É={£ý=“ -"=’ÏÝ=‚ú=Ž_c=x~™=f32=‰=N=‹³=’EÂ={"=©\ú=àî€>4dú>®Š`>×Ë>Ôi>À^©>IÚ"=æ­‘=‰½B=cˆm=Œªã=‡ì=z=V=E÷Õ=fà=uÍ“=‚‚=V^=†¦=”*=ƒ¦=—l‰=‹ -=q<Ð=•tµ=xf=~ØÝ=¤¶¯=n=ˆh=v¨Â=”ÐW=y¼E=Tê=.:<=Ù=†Î²= Ž=~¼‘=’d=œdŒ=¥ÏÔ=²øÜ=ˆ>=€ùs=“’=~™ª=V¿==¡=:ºa=‰Ž–=™|p=›æR=?_«=’ðÞ=”7‘=\C=>7¹=L¨.=ar-=‚’¸=è)ø=öQ2=î»A=ô€*=¶gh=¾*>ñÌ>æbÐ? Æ÷?=c?6±?nI>Ñd=õ°¼=†P{=‹H=ˆ 7=€m2=rëì=X0=F ¾=G6±=ƒ. =z˜1=cÇÃ=f„4=OZæ=];`=gì=£|Æ=ÚAœ=ÿ:²>Ëh=öVË=Á·Ó=”‹=~ê%=„ç2={¹«=j˜=€ª›=™:=¼ÉÊ=í°!>2‰">:·>.Ä=ÿL¥=ŸÚ‚=›Y=Ÿåú=“•[=˜Òä=å»S>:Hà>îöÊ@ C¤@2@üMÑA'«ðAèê@ô• @—û?é6û?N=>HN=Ðw³=Ù&=¼àù=™Y=Ÿ Û=ˆ%=ˆï=•B,=EÏ=è×=gXê=Q•n=‰­°=‡ÏÉ=†Î=Š¯Ä=ƒ`=uùù=lf‹=~A’=”)=–`m=“I3=‘;Î=‚{(=q -]=d]=ŽT«=‡™™=†þJ=ì=H¤ü=xÜ=„—S=cO=W%4=aˆ=^à™=.L=œÏ=- ©=?/Ñ=2ì=r@¾=Ý6=…c3=—ëÉ=”â§=š;=¢£Ú=žH†=•³`=ªìÑ=Óè6=ÎM=¯á§=•”%=z)á=Bž=>9C=Ob_=€íü=Wö=VL”=„ÅD=Ó:Â>š T>Õ’ñ>úæ+>õ% >ͪ>¿B>ȬÕ? a‚?>>í>e>§Ág>ò[=¢yÅ=œ;£=°óL=žŽ -=Ë<=ÕS¶=Ñ,Ñ=ÉT-=Èa=³‹2=•¨á=Œ‘]=eŸ+=F²Î=7]z={b8=œu{=Ž{§=G™Ò=‹ÖB=z6=}8Ú=Œ=ý=mþ=€šà=‡_i=‹“Ñ=…9Ê=†aØ=„Ð=|Á=‡÷=ˆûB=‘žˆ=¡*=zVÍ=sÓn=vH”=€ó‡=f¡=€d|= 3=j=Ç=Ú=™Ä€=‘ñR=…À¯=`}H=oÍÂ=‡>*=œü='QP=c#ë=v–Ô=eëv=vÎ=y&Ø=V‰=¦=Z²È=[=t=gç=|ÐA=oU=bæ=röÔ=‰õ=~ê=W*ý=X7=i[Ö=8ÁÛ=aô={Æ(=‡bB=‰E=r]=€;Å=ƒ=ñù=m =h76=nÙ=b™½=`}@=lpÒ=…x=YY=€ñ=ŒW=“ÂÁ=†fŠ=˜Û=…yÍ=iP³=]=Û= ¢Z=ž6+=¥µi=¿´V=Ì„¦=§[P=Kê=€b=€Ê=uê@=‚šw=’lÄ=ƒà~=‚ÊR=}„o=Ýð=½Rš=peÒ=W§=fN¾=*×=‚%†=fb5=XÉ=¿t=`2®=†G1=´=ƒFy=\…==¢h¼=«ÿÎ=ÞÉh=¿~Á=«,Œ=œ‰6=uúZ=(ŒÇ=VîH=ŒBž=jÞ=ŠÇ=Ê4=‹O={G=lzy=DsN=#ßÑ=Ê<Áþš=[xó=…B×=}ºì=*á=…p†=‘©Ê=¢…È=½Üî=îŠd>>‹4.?ëý@‚›êAKA>ÊA?àAÑ4@©•@#z?Ev?i­m@¹ÏAïA@ñeA8è:A -%¦@˜Öš?ÛBP>Œv>/‘=àå¸=¼´=²ÍÑ=–É=£Ù=­?ž=¯!=ž»Ð=gÇM=}(G=†¢Ð=qÈ=Žã=†d»=u)Á=WDä=$S¡=r:`=’an=—Ñ =]q =P:©=Š{3=žÑª=‘Añ=Lž =„Òê=†2þ=q¾,=o@í=ŠŠ¢=‚–P=WfZ<üÄ6<ö,Ú=9Á­=UK=E Ô=o{=NÂÿ=*H®= ¥=„“D=|pœ=TB=H±Å=q‡˜=`Í_=‰]O=“ê²=‘Óæ=`ÄÎ=œéå=™#=f=s®i=ƒÑO=‰Ž==ƒZ=o ß=`«ö=ŠCI=ÎR=¥d=‘ ¯=›:‹=‹µm=rÞ3=[¨¥=‰Nb=e=crs=j¥0={´=“T›=mý -=cüu=e‚‹=eP-=‹5ß=©Ð6=°”•=œšv=Ÿ`>=zÌþ=`‘=[Z=mü=TY®=P·Ë=R>Ý=Go=V…=x“°=x!&=gñ§=d8=§à=pW=2$="òÔ=kéì=“‚ =sü¡=cr=–°=‚iˆ=P@­=8£=4€5=H§=›Á -=€4L=}ñ=˜²‹=—/q=Êý=‡_J=qHá=BÄ=@l=Pò+=SÙ =AÚ=FŽ‘=’¹Ï=q4Û=€Öì=˜¥f=C=+‹¬=ˆq"=¡!Ç=º½=/\Š=aÚ=L6ˆ=09ö=@½ï=‘k=iX1=m{h=ŠÃÝ=“•=OÔB===€‡=6Ûè=r­‘=XM„=dûH=o¶=q\Æ=Ž =zÏš=„zˆ=„ =EG=W¨=Wö=†„"=KÇ=\=È=€æ=sÕg=p‚ =~Í1=Öé=kGq=º½=‚¢=z6=jµ·=R=€F¾=ƒfÙ=gF=Sò§=fÀñ=]7b=Z8/=\–Þ=‹%´=mB§=c =˜¾Ñ=HCO={ä@=‚qg=dy=FŸÐ=Jz²=AÄÜ= ýì<ùvr=š¼=1?=‡Ä§=xw=‚ÇK=ƒÌ=7Gz=IÔs=UÚ=i8$=„ò=›lä=——½=J=rô|=A¦=~ST=Œ&ƒ=tz®=jÇU={2p=‘oU=N}l=UL=H_Š=Fe“=Å!=reë=t’ =và¹=hìØ=@Kô=|==Zª =IK«=Ivo=ƒ7ˆ=tÿC=mÙß=kÊé=tæ_=bÍ==:'ß=A =ZÿA=E³„<ä’=kÝÙ=.ËÆ=f -Ø=dYì<ø…f=k¢=q=jŒ_=R_ž= |=|Ã=†Þ¸=€Ð=‰ë=•€e=RL¥=)Á/=*jµ=MÕ=„±d=œåÈ=}Êj=aZŸ=s ¤=‹uy=’ =’Ü=q%=aF¹=x“â=}Ë=ú¸=u5T=Š =‚¹=YjY=“ŽF=gÀ³=|æs=†ËÙ=„|›=C=³<ÜØÛ=bO= ­Ü=d½<¼Á.=fáð=1¥=$Ló=Q²a=q =¿2=1gÔ=4H=zxT=—õ=g\“=™=Ü=ˆä°=~ôÔ=mV:=]›H=]J—=3Á=q==ˆ=è=J=’-3=~C†=Nu§=Cvå=_[©=†™=w[=…åL=”{=ž;'=“·=5á‹=‡ˆ=ƒDt=q)7=`ï=m=…¶[=Œ7í=t#ý=„•=˜¦U=e;]=q¯/=S1A=fèn=s7=hœN=[£=L_y=Hâ=9B=M—l=m¼=ožõ=r,ð=Q§ð=56;=CΉ=—zz=…Ÿ.=”9¼=„ßÚ=g‚ó=„[—=—ð°="ˆ=_Lˆ=›¿7=ÂVÚ=Η¤=¨N*=¬^¥=Äoj> -G">VDl>ª¼>­½¤>>J‰=>!ð´>Fo>“Kî>µ†ƒ>¶*>Ž é>+S¡=¼©=rQ=XM=€jæ=d„>=Q_C=w,=©£1=Œ×Ú=y=s¬ž=zÛC=T'Ú=%ƒ“=3!à=f±ã=f`q=1CL<é…=<êo=1oŒ=N-d=Û×;ÊvÒ='þ=#ûÏ=+´=?²Ö=c–Å=n\ã=AÞ˜=€üð=‹7Ñ=xþÝ=xAH={~›=T¹<ïƒÐ=-c&='ò‘=4ßø=c~þ=‡=…W=âƒ=0ì=CA©=J̶=ŽãQ='^=€VÑ=lF=Ž´N=¢-­=gñ³=¦^J=e™=Zâu=z`Ù=ƒ"A=‹ÅF=>¤="Ää=NM[=F[ê=Gs=iq÷=Œ)­=E¯ú=m8=I¡P=Aæ=Y“¡=€Æò<¿†=mà~=pdô=X~ù=;ù;=S(Œ=TdÉ=|c)=vi{=A˜þ=#›\=ƒM=Ì‘=Í~á=Ãþ}= R(=Pâa=v=pIŽ=˜• -=Ör=k½:=  S=§í=Ï =Q2=9w]=\ð=jÀv=_˜Ž=MZ´=NÕ<=0d=6%I=UUˆ=A­ =³”=:z=i)=av=ˆ°=žŠ:=ãÏ>Óe>#ª=ç²*=Ó};=Èà=lxH=Oux=`.1=\?©='ñI==·‡¨=ïit>-žN>\š•>xDç>xÁ„>‡ý>‘nß>n@>—…:>háÑ=Éú=£ö=H…>=C…=ǧb>«Ë>.='>#ý>“ñ=à'‹=¨.=‹S"=’°ë=…U=Bdó=/»R=‰{=‚¢Ó=>÷Ã=*ÀÂ=0\„=Hdå=ãù=Š»M=“ñ=~ ­=k|{=‡Ê==ž1M=ÿ¶>XY>=À>Üø=Þì‘=‰m=‰Ú=N)­=HvÂ=-á€=0O=W›V=sðZ=^3&=‰òÆ=IÛ<=D£l=tó =Œ>:=Yä³=0n’=G¿¬=“‘=g =J'Ï=i´ð=ƒìÄ=ŠS==ôCç>}>7pS>P R>5Àî=ùOï=¾<Œ=bü=3!¢=œ×=†W³=]7‰=€pA=©CÞ=¨Ðv=u:=O×Ü=‚½~=…=–¾=Šc:=;gT=ª,K=•,=šl=žAî=’SR=sžV=m'T=q­§=p=!æî=SU<=xÞ/=tÖÒ=l™t=e…n=J˜=4ª=ØÄ=7èÎ=kk=sD=l‹n=dÆ-=@Q7=„Óx=›{‹=kô_=z¼Å=‹Åw=œFk=¬$P=¦ÌB=§=o)=Šhp=…î=QÓü=9\`=V‘V=“¿B=TqC=‘¤=ú¶=Nl‚=³<ÐÅ=%"=>þ=Yà7=‰‚S=ƒt1= -P–<`ð¥<çs­=s§‚=áß=-S‘=¢®ò=p¼=8¸·=:­þ=ëú=x)R=!”= -ö=()}=Gµ=zW=˜£—=4=Ž›=ŽÏ=`š†<·=›+;=„.ë=k90=OèÀ=Ž:0=’:Ì=f¿g=’Z8=‡l=Šx=“ºu=ŠQ,={.s=rR=TÅ›=|Šp=²í3=]Æ=ÄØ=ššw=›1)=““1> —>È\ý?‰´~@„v@F@Sͤ@k‘@f2U@RÛ±@Aeå@þU?¶,?º=¸ß=Vþ=ÊÀ{=®{=‘ƒ=K~˜=UY´=Œ&+=€eÑ=D“Ð=†/B=ž=^~=eãî=]0í=v…h= o`=£ÇA=K§=j=bJ¾=–j‘=UDV=0ü=&ÿn=ŠÒ£=—{<˃m<Ý=U¾»=,ú=‰è=P!‘=i†ï=+.`=Od3=ˆ’Þ=~8Ò=gÔÚ=-¢=QÃô=Q ¦=HÍå=0ù7=>ÿä=Mo_=9(=BÄá=dÄg=ɤ"=‘ê -=ˆâ_=2ý¡=\H¹=d«§=‘ t=½*¿=¹º=ŸŽç=cÍù=‚ú=U°Í=µpÃ=ƒ–œ=)ö(<ç»Ï=1a»<ì±Õ;ûï<ú/Ô=)fL=œz¥=’ Ž=r¼<|%m¼¸Q;ÙI <|+‹=$@¤=L·X=h5l<Öúõ<Àá|<µÛM="1=gQ¢ êx>'>W±ž>•Î^>Œ’Ï>ˆ|K>HåA>!Dy=›÷m=ŠY—=‚f©=ŸÝ=†ÿ=à =©˜Ã=áø¥='8=Îð<þ'= z&=[Â=HÄ=Y =…ìØ=‘ 8=™`k=N0=(;< -R=5Gz=‘•g<5Ï<„õo=&®=šnÇ=•Dä=Â@Ó=ÅJü=o%:=BO=­Øf=ÂŒý=¸¡R<‡ùD<ˆP<Œšæ=kq¬=²T=pT6=n0!=gXÀ=ÁF¤=àÑ×=ÜÜ!=Ü¡ñ=Ý6=3‰ä<„«é=/ø =-µ˜=%Kq=B=NÛú=–Z=ªd=|8s=_?O=Qx`=é ©=žÁ: ší=¤P=û &=jç,=Y=<˜=7_Y=42Å=l)="@~=fÜ -=Lþ=<üš=³ˆ¢=”ºø=9U=Ô Â>C>$ >®ì=_ò=yêÿ=„³J=-Ƥ=h¤ƒ=»œp=WÒ<úh=( ›=N‚‚=‘_+=ƒm;=wR›=~1ç={3=u¦ð=ÝL> Q4>›VN??à?×pT@‡ÆØ@²'j@¹ñ@œYi@B¯(? >¬ü>/Š>Ht>wŒ=?cÛ¸?¤Ìq@£ZÜ@©#+@³: @~äï@K–>³=Ì>…µ=òe=ÊßU=µrñ=0ÒW=Gó=hšÚ=‹L=“ký=”ì_=Ž˜B=†0x>½B>»Ž=þy=ÈÈT=‰æV==êÂ=.Ð=NMÙ=u¥ü=Ž‹0=^B™=g‡I=¦ø=AOÁ<…Ý›<„À<æx=’è=¢+=®0=…c—=o·=9lÏ=.¹<™È=—ˆ=¥š€=¹0‘=ù‡>»¶> àf>®Ì=ÏÏ_=†’á=Iƒ=E˜¸=cô=Šóº=³aÝ=»=YÛ=4¢=›Ø=—_=„Õ=n?{=F)ÿ=46=rkÆ=~™k=fè==§, =hl=|”(=/Ú=¬ŸŒ=Ëê\=#Î_=_ÄŸ=ɪ(=íVÔ=ÿÞ9> ‚¢=ï½á=¤‹‚=˜yæ=“i*=y5%=_•=?[2=“{=žª…=‰“ê=zë«=aM=6ú’=H=—F}=µ4³=ÌÅÏ=Ea=1áä=3÷=a$š=|úŽ=E‚C=Qî†=mg{=”èý>ð>«û>@>„=Éqj=Ú(—>"E>F²>aáó>&à>ùr=èê=ºˆƒ=¥d=Ùü/=ÝpT=ä´á=Ò²/=Âo=z­=”nj=­Ùy=œ$ê=œoý=® ´=€Kä=@™+=;×=>fé=Iì=WÌ¿=X‘A=<ÂH=fîƒ==ê=y%±=qÿ¯=uÝv=}]=…5Š=§–è=£•,=‹i=’÷w=“ê=‘Ô›=‘¤R=‘[9=lº=`+R=„62=zˬ=n„=›¿—=°y=ßÅ¡=è½]=íÅ~=˜š=–äx=–t9=oŸà=_.~=wêù=_2ý=Eµ$=‘1,=š†A=š!Š=€Æ'=b„`=a¬å=-ÿð<µºU=CÍ=7Ô =‡[ó=ZJ=#þ½=:`=>ÙÚ==Jr=>“=?VØ=Až4=“Û =ãÂ=Ð-d=Ä+×=£UÊ=‚ȶ=Eò)=wÞ9=‰\c=§2Ð=„DÂ=f)‰=š8þ=Ž—4=}Wf=”\2=›+õ=¥ä¡=4l <€=§=?Ÿe=Ph=_Œ\=]¾ø=\ê@=[èn=(¡K<ãw™=C•=ºÜ==_=Là=UM=Uƒ<ä -'< ð{=3Ð+=@¿›<Õ·Ä<ƒrP<:Ï=Ro=)÷à=K–ì=Z¢>=lCÓ=¦…Ü=ª‹=¯–=À‰Õ=´¬=ˆ¶à=, ±<ì>=5=&îÏ=1œ×=D¨Â=X6=„ì“>e&>R“¥>ö«š>÷~y>óÖN>¬sp>…°Š=¸Ø+=¦d=–ê‚=p6Â=ô¶=”Ê=1W»=pG=‰;=ˆäú=‰)ê=‘lå= ª$=ÃÒc=o‚=-€g=†®î=É=y“ü=§[B=ë˜z>PSM>¢¶p>Â~>»Jž>–õ>N}=Ûu>=§×¢=r==eå=_¼=u/¶=~Ùñ=†Sâ=YŒ=Gë¼=*GW= 5Ò=TÁ={ót=bZ==›ì=ŽIÔ=“›=jÎô=RR"=B„(=ˆÏ÷=tÌË=GS=CT@=@Á‹=<28=K;(=TŽä=ˆ "=…+>=Áe=seÑ=a7‡=,lq=B¤=Ov3=S©=M¢+=G“9=‡KÍ=Š5=y`=’ê/=ž\Å=a´“=S;_=?Ö=Ô—>)¾>¦Fm?{G?"†ˆ?%»7?½P>¸;Q=çr==˜ Ä=•ïq=q@=iãñ=<Ïv=.½v=!1<úžü=ÚŽ=jÙK=dóŠ=b¶§=W`=Ft(=93l=<”8=7oŠ=+®?=Y¯î=tS÷=•j =ir=9CÙ=6ó‘=>éþ=K B=’#Ó=•>=x8¯=X¹0=N«‚=§”‡=ÖÙ9>ן>£Ö>Æ >øºÙ>×,N>¹á=ü€z=°þj=[Ø=_Nú=\©=ZS=~÷â=ƒá_=‚z©=in=VѲ=4F=\‘&=öS=­÷ƒ=­‰`=¤Ž¢=sèç=G™L="À¦=ˆ¦=5<ö—= (=»þ=(+=0HR=¹è=Ž]Ì=–*Ó=…ož=Šˆ+=î+=}~À=ñ=‘ù=f¨=Ÿ‹v=Šf¦=‰=‡Þb=…1,=‡üÅ=Œy=KÏ‚=O§Ú=‹=g¦R=Q_=dÌ‹=eS÷=eäÈ=©“=œ>®=y˜z=i")=oT=)X=t¬=]Äj=Z<Å=i`=z@'={hƒ=ton=e²N== =6 \=Pò®=‚›\=•Û‚=Óéo=ÙW=ß=‘á6=‚cŠ=l—a=vCÖ=tNQ=[,8=‡Ã=™á=¬£^=¤Ÿž=›E…=§*j=•iñ=X =Šm=Tn=V¨.=}[=Šn<=ƒ =vœ…=eQä=)=†—=Ž4=J»=<¾®=iä#=ªý1=ÍÞ=ôbN>U3>‚n=Ê=µ =œŽ=Ž9l=‡&8=wOO={ör=t1ù=$ðË=LÞ=m$N=oói=ƒ|Ñ=“ÖÉ=Œ„n=F~=›O=“}=Œ8©=lÚv=_ u=YÀl=¥Üä=œT«=‘Áˆ=‡bu=…Ü®=„5²=’#=ŽuÌ=l„W=oÙÇ=ouœ=\Ä:=q{$= =… M=ƒ=Ç¢=‰k=…{=^9 -=k°È=|…_=—”=“Yç=»-=S•¢=6-¯=«˜=mGõ=u‘×=|-m=çz= ­œ=  ü=5Ø=Uýq=Ó™=ºEL=Øɲ> ´–> óI> -°Ž=š~%=z”ú=/ÿ§=CõŸ=%š¾<ºýi=+’s=Tì$=Œ-:=f4=Q=[Õ©=EÔ=2Ÿ =$#è=sW=¾»=h»V=wÞh=„„=” =ŒÁƒ=\C=y ,=„ =T¢=™fn=¤)=Óe¿=ûÏ6>_=çS~=¶G=gÜé=žT=/]~=”¤=’@t=…|Ú=Fò=moC=¿³=‘(¯=‘Ð=‘qÇ=›Fž=–Á=‘Á=˜¤Ø=wlS=(BM=Ž,=‚î÷=:mÑ=‰ =¿¹=‚ J="O=¡Îê=ë8Õ=ì8ë=íè`=ëÉ=¤&®=O#"=b,Ï=†®Ý=Ÿ Á=$åW=WC= _=˜ÏR=  -¹=µ@^=Ã1S=Ðû}=ùD=؆=ÄÕë=³C =•þ=yé¸=°T™=¥mË==Ï=¥ü=Ö*f>ï>>Œ>·Í=ÿ™ª=¸U2=¶$=ÏÁI=™¶›=—0Q=À£¦=þôš>ÃU>-Lu>2Ê<>1A> –> ´Ï> Þ–> kƒ>$Ð>'S>*}ä>.-£>3'J>(ÀÇ>/S>µ(>…Ö\>¨æ>Ž)ž>‘J©>ø¸>‰Žâ>„ÛB>oì9>b“e>Wgx>@…>,Â<>zw>å…>Kù>rMa>fÎý>aop>\µ·> <¢>0›=ù;=ÍàH=ÅÞ=¿P =ÇÜ =ª–{=MÙK=]˜Ú=f–n=l«µ=aÆÈ=^2=aì0=SÑÓ=TT=| –=s~G=o«Ž=lgÑ=}çŠ=…„Ù=bH=[1=WS=rÑé=_ª˜=Q$³=Y~µ=aðå=mr= Y=2,†=n²@=‡z9=b==š=ˆ\´=ˆqà=gæü=l•=x#]=‚Âm={û =‚‚=‘ö=‘3¾=µù=#ÊI=ax =wW[=x:=b!»=bc¹=‡øŽ=‚—Û=|Âî=PØ=Fõö=I•3=‡rv=m×±=W¡´==:Ó==|3=Ej>=–üà=‘Aá=Œjô=Ñ0-=üŽ>#ý>f`=ãéó=¾,\=p¶ =†»=™p=q÷@=€}=Š6©=PJ/=IÖý=IÝü=‰"R=–$3=£žú=Ìz¥=ÀM¡=ŸÉf=kJÙ=aC,=o$4=2=vµW=Jîg=l*X=páT=Uî=ŠDL=¬EW=è‘+>O>\’> €Ê=é‘s=߬>ã">àÙ›?Fs?»!ß?ÆlI?¹D·?‡{¦?8³$?KÊù?´^™?Ê ?Æd?žâ9?Fv>“ü˜=ŸÀ6=}xV=e_H=bˆ =b$U=\y=Tu=`=s B=•ƒ`>!£,>kjü>À©H>Ïê²>Ì%1>¢2‰>DÈü>Î=XË=t›Ç=r[Ð=u‰=cî=LÁ/=TH=h”›=…Æ!=ŽËe=…¼)=ƒ¾?=ÁŠ=r=˜†Æ=£8=š â=Š_Î=H£’=5 >=×Ñ=¡%,=Š"=WB€=xÌ=s^=bro=~Ø=Z”è=+’d=.Xn=]çÆ=ˆiH=Ïr=FRh=v÷=yÆî=k•©=g¹Å=€SÈ=—ó{=ª+c=¦{=Œå!=|L =§{p=ž ¸=ž]™=æS>>!æ>4#=ËÁç=¨”=‰ä=Sì‰=DôË={m=o Ô=me=m ~=O;=Qøw=Z‰^=IS¶=?Úÿ=2Ý=GÎà=iÂC=’=Ú>=Ý—=ØMÒ=§y•=‹6Ÿ=Xý(=N.y=—S -=Ìne>]Þ=ìË=ÔP=£x‰=“ôw=‡•p=7­Û=I4=P'P=^'o=!àº= t=6]=XbÎ=cýà= !=o¿=q‘I=~G=Îw=ñé=UÆ=KÄd=LÐÛ=M“=;£"=Fqñ=Z\8=<úy=o—•=Œÿâ=YW=O×=E=k t=Y ¯=U8ê=yÉû=‚Š={Ÿ¸=G~ž=n==vÐ=\[‡=‡ÔÖ=sѤ=*3—=‹=„»ç=elÄ=†L[=•´=¨=‰ÒE=¸yÂ=ü”w>ŒIª?X«{?¸Áö@7h@8‘@,¶Á?òj?;¾”>ƒ„=å =źŽ=ª²1=‚æk=Àº~>èK>K³[??г?Ë>¢@ÖÂ@(£)@ ³?í%4?è„>‰O=¿!b=‚=ŠÇ=Ž?=•šs=ºæ -=Óïx=ð£=ÿÏ/=õê•=âÝ’=ÀYˆ=“6~=M[†=ˆÖ‡=lâ_=_Wo=¢©å=ƒ•P=g -‚=Y_=l<=|h#=ƒ\z=p¡½=n/¶=‚¾Æ=sx<=ZÉŠ=Iy=‰ö=zÿj=eµÊ= ÈÜ=1Å=M½¹=OEi=y|‹=Y±7<Ú¦Ï=Š$=„¬'=PD†=hƆ=ET=6ùQ=Cžå=f'k=| =S}=•bX=‘„=Ü -=dø=_c¸=!!Œ=&p°=Qa¬=ü™=m¶h=n5=gj!<îƒ =ž#=(Cn=6®=B~s=YÉ=Ž+¯=Zý­=V—w=W¢+=q¬s=\ÏÅ=FË*=Uø•=>4=9´ý=aáj=„ª=ˆ#=€#=2jÆ=5K=H¡·=]‘= -­ˆ<„ìe=™lB=i0=0Õ=Sýß=CÌ7=J@=uJe=€ÿÇ=j1$=F´1=‡0è=—´=ª´Ø=À[=€£=®Œû=m j=@†n=NVÓ=õ=tT]=o;Ù=î=ÂÝ=& …=A²o=‰é?=^à8=dh -=¡ Ä='=à=Rª=3Oˆ= Áê=.¡r=U[=wQ²=~>=›…“=¬ï¯=g¼K=výç=£b®=ììñ=ÎP=¨ƒ=hkú=St$=F¸=VT¨=SæÉ=Kéˆ=9[=Y0p=cüœ=tÜ8=6R=?– =B”B=mÚH=k5h=kŸ©=qî#=K'ó=M=KÏ~=%.=¦F=€(|=€×:=kLn=q)M=}yY=dÖè=l÷=‚²=(ë2=!3=š®›=Tì—=d¬j=kk|=qL*=Qp€=jÆM=ˆ6&=W„=r¡Å=„WŒ=ZÎó={û=…u=‚8›=s§™=‚TÕ=…ŵ=Q»ñ=p=•ú{=4Œ =qW=™EÅ=~GP=H­‘=lA»=ŠE)=9ÐÄ=‚2‘=’”M=œŽ\=¡ƒ=›Oh=I=oLÒ=ƒÛá=§¿=¦ö*=—6b=šÌ¬=¨£ü=¸ár=µ’\=²Ý=®ó/=…qF=}iˆ=”|Ð=ŠæÑ=‡ªø=vv=[ ã=h8û=sK+=mØé=4W=¨Ú=«®=¢^œ=¢Kƒ=©Äè=Ç»÷=½ù=— ý=¯Å=À׎=³i=¢/ù=¯øŸ=œ¥è=•Äð=}=K=™}‹=¡Eƒ=¸œ"=•Ïÿ=Œ;S=¨Ë£=hv—=móœ=“Gø=´Ü4=’óã=ƒªÂ=¢´B=›u,=Ž/=vüü=©¼=·=3=Ìá =÷=Ãâ/=µSM=Î/˜=§´€=ü¹=~ýÂ=¦@"=¦T™=ªXí=«ª‡=È·,=Щ=Èh4=›»=”da=ŽßÔ=ˆ¨–= Ô¥=”zn=‰gq=»dG=´'=«8â=¥+G=ª™=­>=±ë=¶ÚI=•¿I=–åV=È5Ã=Ž×=•qI=žk²=¬‡@=Ÿ„=›®ç=°§ =l…‘=g7ú=oW/=‰1Â=‡á¦=’bÃ=º'M=±=¸‡B=Á? =¶!=¯Ÿ=±€3=«³Ï=žœ=Åá=Š7=ª 0=¶v÷=®R=— m=ÉИ=µÖ=šù8=¦§°=žL§=µY`=è¸=ߥ=Å.=À X=åÅM=·›ò=«½ó=¤2==¨ ›=¨gÝ=µ¼=Ùº=ÓÚ=ÏÔ¢=ω®=Ú Ä=Ó¤A=Ó¯°=Þœ—=äeC=Ù¥@=χ}=Èn]=Ôv=Í A=¾…’=ÍM=Ñü3=Ñh¸=Íi°=ÚË=ÔU=È/ô=Á/'=ÅM‚=Ê€Á=ÍW$=î…{>@¬>6^8>Mû>i Š>hÅ>f-?>Š¼˜>i6>^>‰>z€Ð>nÿ7>fK>xoš>Xˆ¯>dEK>ˆ­>|{U>ˆ”·>°¤>|b>f¹>cÞò>j÷>tty>O«î>G3Ô>N*¡>EÎ!>78Z>'òÒ>ÛÃ>Œ]> iê> ù=ä’Å=ïŠ=ý? ->7 >†8=ê =à;¶=븸=ÐþÂ=γp=Û-Ç=ÞoG=àý=áo0=Òn=››o=¹Pé=Ë?%=ÐC’=»¦ç=Ï=ä¤=ÍG?=Í@=Ëq‰=Åw:=ÆSæ=Ëš=Î?(=Ì•Á=¾tà=½ÐM=¹b3=´õ¨=»ÍH=Ã=v=ÃN¹=ÂÕ=Í…¯=Òl=Ü '=Ûð–=ÈÔó=Ã;=Ý©e=ÈñI=Э:=Îè„=†˜ð=™& =›‡˜=šÂ›=®ÿ=¸Û=½±m=ÁOa=“;µ=™©‚=£Ëk=³«=—\6=‘¡×=˜nÙ=·PÔ=’èé=”Út=¥c=Ÿúb= ]¤=“ ù=‚Ø=Š§=™X]=¢<=˜¯<=¥¼ =†e=aÜ=n€=5…=TX=ƒ*=ƒ‡ì=„¶B=u~=cÓh=†ÓÚ=xØE=SH=ý=~’=¢U±=¢=×=sï½=aov=[áÊ=ˆŸ:=ì=‚ÊÂ=c€=g à=€âÃ=¡B}=¿}_=œè=‘=o=”Žz=vØÞ=0ãB=7¥?=w•{=h¿ã=gû=zNÒ=’/#=‹$=zÑj=k²É=vîÞ=j¹!=u’=]•È<Å ­=<Ê= Q_=CA=Z==¬=\L$=„Xk=‚‘=H=YE=˜Ë¬=±×Ð=ž×=‡gõ=[ÈE=rF.=s =ziÙ=q=uj=\‰=V{A=X É=  Æ=Žžª=œS8=Ã:2=žkn=Œ¸Í=spÇ=K¡8=‘ =€Ï=k¼{=[{ú=m«=Vù =Aƒæ=;&=î—=‰‰T=|½s=[7ö=‘3Ú=“î•=ˆ %=Rt5=¥;ü=ŒE÷=ÕH=‚HÜ=ªF=3 =‡sO=‹Ê¾=žµ=Žˆ =k·=6µJ=ƒúÄ=, =ˆúg=GÜž=ÎË>Ç©>H²Ÿ>wsê>_éÌ>=yj>â==çe!=…Ê™=\2¿=Rþ©=w=!Õ=+ÒÇ=c]N=¡x]=†?z=†cï=€©Ê=fLŸ=gv#=h# =xDF=†™=?ÌW=x<ù=”Hå=§vâ=fæ=pvÏ=g¨Í=b‰p=.3 =…, =ƒ±"=[|¬=€G=?“[=n©Õ=œêç=oåÃ=‰¬»=ŒÅY=‰.ò=EHB=4˜=“ÇØ=À—¦>Eª‰>T€Ø>cmÁ>Z÷>Q|=Ój=–C‰=w|=œØŽ=O&{=€çT=‡8Z=e1j=¦’(=sÙ=lÒ=’&J=w¾¼=W!<=TËÉ=o5/=²„=†¸Æ=–ö=­X=õ=ªe^=œê=“ˆæ=–áF=„©Ï=ˆ´=wÖQ==‹ =ˆ÷=C=X†¢=±ÛŠ={×þ=Re=k9³=mà=X[x=w‹ü=’4½=¡î=’6à=_=„ø—=ø=O€^=/!F== YÐ==#=ŒC$=†ú=’XE=ŸF=„q.=”T=”ò@=”{4=ŠA=T· =`ú=…š6=ªj=Øì>Ƈ>)òŽ>&z—> ¨ú=µGD=r—j=:¤?=<’=„ŸÖ=g¶y=XCá=p©?=`7=bO@=Syà=kAu==‚Ì=wŸ?=n$=”Sp=›ó¥=Îi=x Ì=;ÍÞ=tYñ=™ãŠ=¡Ây=’Ã=…”=eTÝ=a§=]Ò1=4k=K2Ÿ=sȸ=ƒ0 =g;ò=¢Ho=—Ô¼=‰Sƒ=a¡=‡dŸ=‡.=†Äâ=Š££=™=‰ ±=‡«¿=‚ ‹=jpo=ˆ0Â=ÎÇ=—Ì=›ùF=‡‹=‰:V=Šm™=†äØ= H=€íý=šÖ*=‘)=k¨Ç=Žá¾=†ƒ‰=˜ú˜=¤­=–à =Cz=gue=€ºÒ=†º»=‡S=6~=p[ô=r Û=‡ˆà=«—3=Å”¼=Ê'/=½sA=Æn>=3=t˜i=u#†=—ÓÛ=þ=œ‚³=šHÙ=Ž°k=“”=ƒ0W=€…È=nÿÂ=IÄ‚=‹­=¡~v=³þÉ=Âq«=Ï24=¶J=›*N=—g®=­:æ=Õo=«—=Å× =Öq—=Ñ.g=“[»=‰X¢=^ú¾=Õì=NÎ=bèO=¾=“Pƒ=¦•=ƒÎ=t=Ž¾Í=©œù= &Ê=¡µ|=‘ÈÓ=‚¤=h¯=-l= ¢B=±G8=£Ã=€F·=ydõ=>J²=?¸Á=nå=¡„°=¸Q”=Âsc=Ñ#Í=ßû}=Ì =Ô¡"=í Z=ï¥=É`x=Ó#=ˆOÝ=™¹O=¡³–=ol*=ŒŒ=·›¢=¶™Ò=©`b=Óç==–(f=›²=¢ -=‰ù-=£Ø:=œ“Î=Š©í=s™=°æ=¿(=’Å=¦õ=Æ7™=NÀ=<¸‰=ag3=Š$5=¹ù=—M^=yÎÒ=cm™=kŠï=‰‡î=rÍ¢=•–=¢Ÿ¢= ã -=³Ú¥=Ń=søM=hD=YÀ¶=ƒÇñ=›¥=¢(O=£=žÏl=ˆ69=€vÙ=n =jh=y{°=T=e]•=Œ^Ã=Ÿò?=Ÿz\=ª T=–ºí=…Öç=E=ŽÈ=hp=~ü=ˆ&6=ð¬=‚‚+=5WU=p=©_>=ųe=¯Õ@>? >f§Æ>†ý6>“T«>‘ý>pŽu>oñ>™šŠ>÷€j?OÐË?’š0?•@t?z./?$ ’>g_ì>üo>=q>ØÕ&?=9×?…:Ÿ?„>W?Xä¯?ë>ZAI=½u=¦ôØ=‚n=‡ðÛ=ªÝ¼=ë/¹=ö1Ž>jZ,>¶ð€>Ýë÷>ß<ô>µ­>[E>o =ÈMF=Çÿ=¤ÃL=²†t=¨.º=µUü=Àã¼=¡&#=ƒÜæ=‘ ò=›=¤Ës=¯¬=ÆÕ=„iž=ŠCR=œvó=–‡==ˆ\=¦Ò=¯”=Ÿµd= LÕ=÷­>+äÁ>ŠÀ5>¦&Õ>«FV>¦30>E–=¿$Ò=‹}œ=J=³-¯=³=^°^=r"=ŒuH=œ9–=œÝ=“Ö=—úK=ñ‘=Dš­=kÒG=R7=œ¼´=}_=<‘=PXÑ=fEH=¬1r=„n»=Œö=̲=öh|=œ»{=«Ÿ*=¶ùÊ=± -=—Û =Ý>õ=½;}=¯³g=¼/=Ê€»=obB=ƒ‘ó=»|Ú>×¹>ic)>Ì´¤?ˆ? ±Í>ëRq>¢Mm>'~Í=ºÔX=©):=ÈŒ=—1=”Ú=‰¥=Ä™=œ(Ò=³‰À=¸`=­Í=…¼{=Íyï=ÊP}=ªcœ=•§Ý=”9-=’¢X=¦wÉ=‘ ™=”•w=±Gú=Ê»+=ŽÞ‘=ƒµÃ=‰3²=‰‘C=ŠGT=®å“=¹AQ=ßk=y°=6ë=³ =–zh=‚K=¢Äm=ª¦A=Ö\î>8ÙC>·Ô>ÛŽ®>Ù_\>²$f>j2Ç=îu=•ã¦=€·=Êy=£œB=©Âä=g¨­=Ëà=²á=G¼=‚œç=Œ¯,=–9¬=—!ƒ=–’F=q=M=€µ&=»gà=ªl»>bšî?)[‚?Ÿv•?ÒÖt?ÖBp?¹Êo?4rD>“±S=ó4õ=«=§P=š®Â=±Q­=±´ù=·¿¦=ÃÓb=Ò.§=áTŸ>*\V>ߘ8?mô?°<Ú?Éò?»†? :>è6>-b‹=­ƒP=Áv+=ºÍP=àD=Ê5ã=®{=“º~=x|=G–,=â§=¥q×=±U@=¸§=³qE=€Zç=aM*=™I¤=p÷=^Ê=š{†=¹==š¦®=¤f=xô=u­\=ŒžŽ=™"K=¦®I=a x=„çß=ž=¢à=·)f=ªi¾=¼Y¢=Ã7Õ=³Ÿî=® =¢­ê=Ym=«OÌ=nÏÕ=Pp.=ŽÞ0=«öë=•qö=”R=µÐ+=÷ÏÁ=Í;÷=” %=ŠGy=¤Ä=~=ѹ=¹¦.=Ø=™6T=§®=´{=±×ô=̘¤=¨z=–0=¶©=â½ð=Ãj/=Ψ†=˜fQ=b0$=u™l=¦Ö’=©†p=åøú=Þ=a‚‘=|Ú-=ªø&=À?ˆ=²Ç±=¥*‘=rþÊ=Žå7=“=ŠAE=£ŠÌ=˜Úf=2i=QfR=^{]=ŠVg=¨äó=Œá=A·=¦Yë=¼õœ=ÉÝE=¼ì¨=Ÿ_Í=éõ=›=Ô#{=Æò=p6k=Xº@=¿¿=Ø€=çêç=Ì”ª=éÞq=×›§=¯Ò¼=”ç£=~g=­O=„|^=g^o=€±C=m ==èd=’Mæ=¤{$=—„k=dáÖ=ƒŠ=’»€=ˆ—)=‹Q=º™ƒ=®»)=[M¸=S Ð=’Öƒ=˜í=E[`=®ÈÖ=¯*Ç=5Hw=<¹Ë=l„x=£/=è—=Û>Ñ=»É=ÌóÆ=³‚ã=”Šl=ƒNš=œt=æ˜=`=Ékä=‰áó=j&Ä=¶=ìØæ=Éá=äÚ=â´=ÏiH=T_O=aõ=¬\|=Óù‰=ôÚW=‰r³=®rh=±‚=™oZ=›ê=¨Œº=¦þî=ÆÉ?=sdn=°w‡=´ª`=t»é=€vç=°°5=²Êø>ÇS=w,¼=ó‰=K¢=r“=Ž=Qé= v=’‡m=€no=¼ÿ=Ûˆ¬=¾O¶=‰‰M=!›®<£%=ây=YQä=#Z=Š³Õ=Xë=gÛ =Î?=`Ÿò sH=Úm?=¢÷]=Ê—æ=úà=ÕûQ=’J=VŸA=nË=y[=d }=b‡={ͪ=^Æe=¤Ùï=*é=•Ën=xSw=+#=“i=x¬=sªO=Oau=M—W=“Ë=XN=Dªb=¶R=Êh=HÁ=,žº=/Ñ=c"y=VºÔ=©l@=©>=Ä`Œ=ÿöˆ>©ü=Ó]=u”¥=·nB=^â@=pæ=˜»>=“"§=8=’iÏ=œÊ<¶2é='Æ<,º¨<¶ƒù=‘a=3àl=dðŽ=u=A=¨ÑË=W°Ï=§ s=¬mŠ=±CÈ=âê@=þ Ø=æç¹=®ç=„W»={¿t=Æ4=Sü¼=–ú=” q=†£=H¢‘=¯ =iß<±,=¤Cì=‹–= ›½VÄ?½L9>½(-=Š=gë•=$ÿÕ½9Ž}½·=aÀ =‹}Ó=¼Æ=‡“=¹™=½éÔ=ÜÀd=*ñ-=›a> -Ð=˜N=5d)>ª[> ›â=뮧=Ó­v=º²À¼•»-½u=±=ÅR=%¢)=K^<¹­l;Û4t;™_ï;$ž‘;óT:=ø+»ïö*;_²<¢½c½nºÄΨ=rr˜=#~ë= ‰P=”†X=‚F8<¿]h=¼k>6?Ý> ¨ =øxÿ=Y(F=€Êš=¶—5=ŠÖt=Ri£< q¦8ª¦Ø»þ2;؆&<·­0=Œ^ÿ=¤g£=Uz=¸ˆ=s_=xÒ¾= Äê=97˜=&ˆ»=#æ–=B9=`Àr=cÁÀ=VâÛ¦ =¶Ô=0 -Á=‡²=Õ=Œ˜Ÿ==g¿q<Ù›3<Š(m=C‹<èh^<–‘à=¢Ù=é.=–n-=¢Ÿš=â.Þ=ïKb=ú«<Å4:=„ž=nd´=UŽŠ=Ò|ä=à«K=œ?=¦w¡=´jp=2¯M<Ù]–='Y=.äå=QØL=Q®ÿ=Q›ä=®F’=®?=š³x=šwj=šIy=„ßÐ=x w=K‹ù=`9Ñ=yŠ»<ÊQL!ø= <Ïà=2F=}o\8e‰<Ô¬š=oË,='·=•Û=¤Ž\=¤5=¤¢l=†qF=l{Æ=¼ô=›}/= ߃=~‡û=¥øT=$hº=`®<µt <áú=Y^=WÓN=iÌo=léÇ=9äM=JÈ=.©ý=,±ÆV=?Ç€<æb¤<¡‚õ;ØaM=(¦¢=fs¶=;Žƒ=†ës=Ø*ò=¿(=·¼=¦·o=”¼W=‚±+=ŒOd=“Pú=|‘=W’9=0ç=¬©=¨R=ñµM=Þ¦N=uWs=¬Vâ=ÓŸ=k–=U#Á=nô=Oìu=0pò=>Ûì=A!r=&lb=CKz=dæ]=™R=Ž:š<ÒÛÆ=-•’=wø=˜¶=–‡=JI=JO=Jmÿ=qxÑ=n7Š=K*=0V’=þ=Ñ–=)ƒ=bÎ…=Z’Œ=Fc=£Œì=µ ^=O¦W=XãL=‹.=Gn=)zª=¾ò=•.ø=”ø=—`Ì=H§=?%þ=… =·.Ñ=ŒÐÌ=}å´={A=ƒãµ=‚åe=Mò–=I=’ß…=“4ç=œ+=k¤é=XL=[?r=~…=™îz=tv=p.£=—8=Bߺ<@Qj= Ô=0`‚=M}=B~!=0C¤=H™Þ=HÛõ=<×=#3Ÿ=Is=’jŒ=žçŠ=fO=ƒRœ=  È=xC=V¹à=?º6=^3T=vM/=ûÛ=õ^=¿]¹=”ý=TÛI=?Ä=K–M=•vt=i÷==KÇ£=eF¼=•C~=p7Ä=6ÚË=aCù=Z[R=? =Aáð=bòÊ=aæn=LÄ= ßå=;9l=]Ó.=uÇê=v½b=zc==IC=Ž:=Š¯ -=zÎÊ=X÷v=f€ß=bÊý=‰Ð‰=r£=*À_<®)¸<ŸI·=?Rs=Ht!=TŠ¥=ƒÓ¿=®¶=€ßÃ=vŠÎ=dÖË=‹È =–ôo=|‘ß=ƒªÊ=ˆ0”=ÒF=Š%æ=\Š=gº=o*F=‹¢=ý›=‹î“=ŠÂ|=Œü=k«=u=*=?G#=%÷=Q §=d¸Œ=ŽLÀ=‘h™=o =¤ƒò=†& =+M=‡=—ˆ=£a=Äí=ÂÅÇ=°R3=¥*a=‡Å=‚ -=w•7=}t´={4=ZI=SlÅ=S£=Œµ†=‰ -N=‡|0=O3¤=1W =9>ö=1¡g=8€=nDÑ=aa<œ^ù="õ=WF=‡fÕ=ŠËC=‡Ž¿=“+.=—ª =jJ=^–%=M­ =iƒÂ=}<=¾”u=×Ýk>®z=ÍÏÍ=³\Ì=€hË=I“Û=ª =@ïY=S ¤=ˆÝ$=tH=\=Y›=cûˆ=tnË=€F=ð -=mXê=~z =•êø=alÞ==Q¿=eS=s#–=8ˆ=£Ï=¢ Ë=‚ü=‹ÓB=–Û==—v=•*=’Ög=h£ï==£=oRÔ=tTz=Ô=ƒÄ¨=ƒ'.=–q”=ª¡™=Ã`\= ª™=W=hšj=|‚þ=ˆ´=˜ÁB=—î€=˜D¶=Œ”ì=‰Ö=€aà=‚‰=x®›=sÙ…=|,à=X~¨=Që=Ga»=ˆRË=Žz=›Á=«N=àöˆ=Þ‡=»O¸=…ßo={•5=‚·=¢Ï£=mk„=$†t=h§=lôë=?n~=9•Ò=TÔV=‚+&=hi==;P=)ä =5F™=‚*=Q‚V="'²=vÝÎ=0š=¯‰ÿ=o9=%4â=ŽÿX=„½Ç=kóï=2C=£*>ñ…>.q>¥P=ã½N=·Ã=7‚ï=/¥¶=9US=m÷M=…ïn=Ÿt¬=³Í¡=•¦7<ò÷=3®ü=\÷×=‚[F=lÍö=/4m=xÜú=‡‘p=wõ•=w·-=wÖ™=€®¼=„pY=†. =Ô=}3e=cž=rf=p @=v²T=†VÏ=ù¤=Z3]=7sy=qœ‚=OÉ*=s=X0=hŸm=}¹Ä=PF=2ò=š=Í<=nÒs=É=œŸ=ƒm»=…ò*=’|ð=mX=Z¡=Vô=G^Þ=>Èõ=Nì=%I%=ZÀ=ši€=žlÕ=hIW=NÔ=‰|=b£•=p’©=†þ=w˜d=ŠÄt=ð =þš¦>ÿ=üºë=á9b=ºÍ=‘Š#=p3d=wuò=Y9[=5sî=ŒA–=ˆ)Ì=OO»=œÿÎ=µ‡¯=ˆ=f#ž=3ñ¸=lTU=[€= Ö‡=t¦2=n´<ºI¡=+éØ=†Æv=P*ö=G÷=]7ã=dô³=bÍ=¸Ž/=â½> þ=þú =ñw§=è¡U=¡ =iµÇ=Aä^=XF”=…Y=IÒ=Fß=dŽF=fUË=o-„=®´=RJÖ=­¼=´˜…=µ ž=¥ -C=svo=8ÇK=U2=†Ãq=Ija=NÝú=Zo}=ƒ/=k¼N=`ù1=+³‰=Xxô=ŒØŒ=‘xp=zä=‰b¦=\Fÿ=?S´=vkŸ=mÿ¸=cnl=b:ð=eù=r'Ô=•ö¶=•B{=qŒM=w5…=wd=ˆUÝ=‰z=•ª=5æ»=&Dö=±-=n¤ý=fB==W Õ=Pâ,=P’=z(2=|`Û=xW=UÅ=I7=O`N=d$=†ÂH=Nø†=b% =ªåÊ=Œð)=vp³=c8ð=–q=¶IÃ=¿AŒ=Ò~ý>¦4=ͪ=½t =¸0¡=’*{=nû_=o4`=oû|=y°Õ=èF=ˆ'=¦ë=h£…=0…=j‘‡=g~½=U—D=•ò9= j=$¿M=Gª…=`ž”=¬I=·=Œ]=©7¿=©µó=¡¶´=؇%>š>}ž³?½Ó?58º?‘ ¬?‡x~?~&¿>ýɬ>­Tk=÷™p=ÌI=дÈ> -¾>‡[>¾Z?G–Ò?OÿÍ?XT‘?âï>ß¹ >öa= M=ntµ=nÝ^=/q<þ7=˜y=†•Ó=VI =G÷=_¯Õ=™h0=e†.=V¹=iA=tçø=†EK=šlÕ=Ÿ‡¢=¤¬G=‘2X=€ø5=; á=€†=†_=—ÒE=vš=H:®=€Oª=‚ñ,=¿G=¯ú‹=¢›=k%Á=‰=’~=“ÿ¤= wõ=¨Ûñ=—c‚=+ =Š ¼=jUô=i²#=UE=Y§=n2¾=„ø*=U=• m=‚¿<=˜j¦=¸XW=×`Ù=ÁH¬=”È|=ŒÃ=€k]=`Xÿ=Žl=™y€=hgã=„É=˜sÍ=yð1=¤ý¢=é—=è%k=ê'ú=Ûa=¼ßð=­?+=´Æ7=¦5=_h=•x=‘ÞÃ=Œž•=ÉÌ'=ל =ëØä=à^=àâ†=òá=á=×ÿ=²)‡=­¼=£™e=¬ =°zR=·Lõ=Ó=ÒȺ=Í×=Çõ%=Ê£=íz¨>ÐÆ>Ý>3>'‹G>ô>’>Sµ>à>ës>+Ï>b:>`ƒö>aØå>j¸B>k”>k<‘>ƒwé>+>>>˜Ø>¢™ã>´7¼>£mý>¦ü>¾m>¿Me>ÃsÛ>ÑÙø>ÍTô>ÉZŠ>Äþ>¬ßw>“Üè>&~>Ê>Næ>’÷>¶?À›?†¬Ÿ?§e?Ë÷ž?Ó¢(?Ï(?AŽØ?f >ðuW>×ê>Ó1*>ÐF…> >‰ - >LK²>B΂>8C>à©>% š>'e6>œ>[ u>“z?@k?|³K?™º?“2I?fK®?5:>]÷R>&™4>w$>z®>X@> A}>¼>¬í>¡!>Q>h>U_>Ui>-…>œ> -€—>Û=½¨=ÈŸ™=âé;=ê(æ=þ²Œ>.œ>:õ¨>J„Í>YÔ >måM>q2O>MÓp> _a=¿Ü=âûd=ÃÉÿ=¢=ÊJ3=ÄKª=¶:=È,·=È7=Ȩî=¥?=¦Ÿ=Â6ª=’öà=-Ì=a¢“=Rø=˜ƒ9=‰p°=‰"=€à=Ÿáf=¥Ù=¬îJ=²ü@=á8Ü>g.>0=ó?¼=¶ål=œ¨/=™´=žGÊ=•­•=š$=ŸØ9=»<;=к»=ü<> ~—>6>Œ%=õ>ž=ð6>ÛÛ>{È>S =é9?=ɦ=¬#==’Àø=™ºŠ=Ÿ z=›:(=§b =®*=ÆQè=±óÜ=‰ÒÍ=†ê¬=„–~=„å€=‰¿=›æˆ=¬–g= (=˜"¡=‚Vè=”VT=™ ª=¨=¡Ž¾=§ð­=“sÕ=— ò=“ÀI=D‡µ=xÁÖ=‘5­=’¬}=ˆÆg=‚ï=§E¹=‘ù"=r¦(=—áã=—«e=—FK=ŸÊŽ=£JÛ=¥„@=à={«¥=Rzž=…ár=…ýô=ZÈð=Šc==n=ŠÙø=¾mH=Å=ˆ=’¿è=˜«=4=¹•¶=§€T=žK,=ŸoF=³Gÿ=¶­=„=’âP=¢¨!=¯Ã=‡ƒ¡=Mk=]ÑZ=iö=sÕ’=¶/ð=ëG<>ºØ>O->sÕ=ír=–<û=¬Z =Ë”J=Î"Z=Ý•=ï¾ =êÒª=ßÀ =Îdž=Z =‹ "=ä¼=—>;=’jÈ=†ãË=˜šÉ=’ÿa=xƒ0=—­ =¦PÂ=º£=¤ `=Ÿë<=œh=¬wJ= ü=s› =Šš¦=¥}=äÅ‘=Ú=ÃZU=Žl=?…=… =fFß=Nƒ=–Oh=–×6=¥vÉ=¦•=–êE=¡w=¨*=Ų*=®2÷=§4s=¨aÖ=ªœÇ=¦ø)=òž=›Ò=— -€=Xö¢=–çß=ªåA=žÝ¥=­+†=±Ò=¢§j=™C=ŸAà=Å=½–.=¶2=¥! =.Æ=šÌ=]]=†t=˜*²=»æ‹=®Dr=¨¨ø=ªÒÖ=§^=ŸûŒ=”]Z=‹èˆ=‰ºÍ=‹á±=Š+d=Žà†=¡að=¼s={<=Ý2=–û2=´ó1=¬<==š\=‘…8=ˆ·½=}¥i=Œk(=ð=Ÿ»·=œõ=·™í=¡Jh=—ÆË=‘‡.=›Ó=˜>°=‚î?=É´Ë=½•y=gv~=x@B=—Á„=ÒÚ=¦tà=§c>=¹=²=¤gÞ=§y=°»%=¢¤=”Ýl=½í=‚“ =Æs={ï»=›n¡=¤=zóÌ=W,8=ª“=»ú=²sI=Êzü=åÍ\=ëÿ€=ÔQ·=¹P¥=…å»=w€®=oÚe=¡Ç&=œ€â=»£=â#N=ÏäX=»øÅ=xIã=‘ï^=¡—0=´µ=»Ì|=·ëã=”žæ=”Â6=š}=¬==É{ =Âï@=îg=œÜ'=”¨=kþ=‹=Ì=·a=¾Ùï=¼ßù=·º=®=˜Y]=x¸= –—=¬##=¶ÚŽ=¶•¥=·B“=µ5â=†˜m=T =~ L=™¯=Gô=“v”=«ò!=‘ìè=‡=_~=¨GÁ=¬sa=ªJØ=•H@=”Õ/=¨“M=Œ³=’wæ=±l=„ª==§=oe=F7¥=ŒN{=µ¾d=¯)=¥•$=¤.=·/b=ÃJÊ=‘ -ã=|¶=®Ñ=‰qT=™'8=–d?=K<;=1+=?+=„<ã=”r.=—‘ô=–ï=Ä\=›š=•üM=‰nl=”}=u‚=¶q%=£ÈÁ=r}=…qÞ=€5Š=ñ=¦?=À={ò½=:CÀ=ˆ®Ö=—cn=Ðì=hs#=‹|J=ËXß=©á¯=‹Á–=Mß3=†Fr=”s=¡´À=’)Z=r@Á=N z=|ŒG=k8Æ=rߤ=©âÓ=h‡G=PØ?=‰@ =mZÏ=bbó=a§Ã=TøŽ=X’e=a>Æ=Ú’)>U×>;&ÿ>Êp>ÔÏå>Ôñ~>™ßŽ>Bâ{>öœ=Æ =•bÃ=„x=‚HÏ=b= =U9=¨W=àst>Dn>1e>9Ô<>88=è(;=³V=“–h=„Ÿ%=ž¿.=”«=L•U=…€Î=‚ï[=jôM=]×=ŽÜä=œÕ!=©Cž=ÈDé=þ¡E>j׬>dÒ>•xê>Š½@>;?.>T=ÎÇ=hBÎ=‘y=£=’P=à„=1‘=¥Ãf=šI=¼¯=h¸T=Nã„=JÒ›=Uó=ƒa=žù=À¤]=îá`>s>CJö>RŠá>LØ>2é0=œf¹=œf„=“Ü$=~öÇ=³CÄ=½YÉ=¾Â >˜ž >à‘"? ? Ô.>Ó$¼>—=x=ßî=´eé= «™=”ß^=®H=£!|=»=¦s¦=´›Ì=½| =©=‡=£Ñ=¢M=ªgV=… =“^C=¾{ü=‘Í]=‰C€=ˆ`G=ÚDÁ=ÆâÌ=°’:=â=‚­ =‚ð*=€‡}=“ -ª=šMû= .&=©y-=°±/=¹:=ÉÞ÷=ž¨p=ˆF—=~ö:=€qØ=‹’@=pÏ=I¾D=P°I=b£ø=‘·=Ég>õ,>wQ>§]#>¨Â>—:´>/¨H=Ý¥0=Z'.=5Â=D=Wwº=®˜=¿;”=éÙ> -¤b>z°=ÿn&=Óô=ì†=ŠÌ=¢$T=zr=B:í=3ÿÂ=6f~=LÛƒ=V¹d=T‘~<Þîª=WðÉ=~ø=KÈ‚<ùôù=1í¤=“ÿ¸=7ŸÐ=;¼«=H0Ê=oèk=S'=]ÏC=ÖÖ=süÔ=y%=†âÁ=y\Ð=4 7=Ö›=‘çÒ=™yÇ=˜]"=Ê…=Z=‰ðL=.Ý=aÈ‹=yDs=„x=x¼=€&Ó=Ž3=¤ó=x3.=rûY=nI=VDX=UU¶=Bγ=mÚ=vÿT=‚=ËH=f‡Ó=Nù=T"Î=‘g¶=šß¥=pûÝ<è<‹=hU×=‚!#=†cƒ=CÐo=f…à=wðè=‘{=@Ë%=X0Ô=w<9=1Fn=]œ=rý8=l4ð=A•¸=/7q=$û/=»V=u°Å=oVB=|)=eX6=_mÒ=_Æø=7À,=+B=!ê§=,Ý=l}U=’X«=¯pš=v=VÑN=CEæ=;y[=m>Í=Š@Á= ˆ]=]=+=ZG=h:Â=‡ -î=4ˆÅ=#h=s1Í<Óì¤=&=s³b=el=Kùí=Mƒ1=|]ð=„”h=˜< -=´>Á>µ·>Ô>.ó>AÓ>,ž>ô¦>ÃØ=— =xÕ:=Xsú=VA=J@å=b€7==1äÚ=UÚI=l.=u‰=rÒx=ˆû =ñ™=‘þ¨=y q=e“D=pæ×=V·x=OKî=MxÕ=‡%Œ=†s{=]·=­xV>%ˆ>’o8>ÙÎv?·”?}x?T*>ËYâ>Ã_>g†P><½Z> ­«=¸ÕÁ=Ûl=‰Ü=8Þ=˜#°= f==¨u¾=—i -=vî=…§=—~Ö=w—”=døñ=îš=6ÈÔ=0êò=V©=Së=F²€=O=o=|§³=h­u=† -=˜A7=`S®=Pºå=Iúy=J­»=q,Î=s1Õ=nÖ~=_0ã={z©=‘kZ=ªÄž=`Pö=wíº=xé4=Ióò=–ÆŠ=—P=Œ†=s„¸=e0¦=R=5ε=‡¨=Šýq=‚¿°=2i¬=@z=Si®=küÉ=–@x=ÈUM>QV>0èê>{÷Ý>‹3&>“$ >‘í>SS>Öm=¥ø¶=’l=›=™?¦=~°Æ=‰ç=coc=DO=Jt^=}øˆ=BW=›x=?‡=n$"=ƒ¨Û=f_È=ág=yßa=mS=jÜa=} ©=‡úÆ=’Ó|=X¹=ŒÒ=¼Í=n3Ç=³=eÄ£=GÓä=DÓ=€·b=‹ûŸ=,=’MË=€"”=W_U=uE=s-H=wB=x/¬=SS=”Eš=€(z=F=o›ˆ=P!æ=M],=gù=k7N==DÀ=)ÿ=£œ=j:®=sk£=m‚•=†”ú=8…ã=:€L=lnø=‰üã=‰z“=†‰ì=×-=m >=v¯=ƒ7‰=‘¸è=A¿R=Ba@=\¨m=€)=S£W=K?Œ=W…z=è=|‹=RT=[H=†‹à=YÚb=Sç=¦Yò=%Ir='.{=Nø…=ˆ©(=€—f=†=‚=„~=mÎ=a -=o=Wƒ=ÀÖ=4Xu=BÓ\='Åç=g„œ=nI=mæ£=kDÖ=ƒÁ=|=Œ=oó$=r==s°—=h=^Ø=_ =^’Å=l§Ÿ=4•=r}B=’/¯=’,¾=u‹U=u:­=QAh=>a\=A„=;ñÃ==/!=8_ñ=( ­=gêq=‚¶a=†|"=^œÚ=oK=Ob=1Hû=`cC=g`ê=gô =dz=BÃ=~Û>=v)Ÿ=N÷²=•›K=WP=JÝ×=oßó=7Ùï=x=‚Uc=]Ó=n±K=^ï==ni3=’¼ =qÌß=aœM=`®=p°=6mÛ=–½=# =qã»=oö¦=ƒœ=…c=]¸‘=‰yÅ=z{Ú=e‰õ=€ý=oªX=x -å=v’=q‡“=€_:=y=hgÐ=G¤ã=žì=¢óC=›µŒ=“%\=pÌ]=;%÷=é`=EJa=]¥=gº§=nE)=‡žà=qåê=YRá=I=ª=]É—=‡m=x¹0=H|=Ï=G&9=SÈS=M.Ê=(f(=M–õ=TÎ&=N×´=,H==Ó8=yR¿=“a=aVE=O¹W=`_o=qú«=_é7=ˆJ=té:=JÄ=&m=Dd)=coþ=táµ=]$Ý=%9„=?=Y=p’Š=—.=Mð=x i=nâå=ŒPÃ=oë=p|=rèï={ë·=\t\=S6ï=HM˜=;3¬=‘•ø=—=Z=’^5=P”=Pž=`¸ =oé.=îñ=5Å=#Æú=+„¬=Žq7=(œ=%ª¨=Oe=N«=bþ’=DKÇ=$k=<]=YÁ<ÚÏ:<ÿ9Ã=’•Y=2%=•v=(ø†=¤ ²=H£å=<Å=D=&¤%=E•1=bI=dÒ=BJê=AÁ:=Z'b=…~K=¦x=²µW=Vc„=82=Qæ=€•"=¤‡Ú=¤a=ˆ{^=SI9<ÿ]=/â=>í=[À<÷`6=Gâ=Z‘=åw>c·.?Ý?`›†?vÈ›?hïä?.xÎ>zîí> -=˜…Õ=Xðü=”qÄ=1=R¾ÿ=¥o˜=ïé>‡ðÙ>ïsT?å_?3†ž?Mœ>ÁØK>Lh&=š¡f=#<ù½Û=6úÇ=To =5^Á=5>þ=s¡8=e£ =o?]=Ÿg=oŽZ= –‰=}Z=O9h=4õ}=†QC=«áà=¿9è=·ÀG=×Yc=•U=k9=` y=chD=k_=¥mc=ùøÂ>Bo.>”s>ú‡ð>òœ¨>Ér>=³Q=‘N–=ˆ+X=‹ ‹=ŒèÓ=¤á@=©o-=Žìl=wj»=[çV==Æ'=ßq=9Þ=vtj=†¬ù=€@–=„:ö=¬^=Pi<õíU=Ñg=247='™S<¯¼=p·t=†u)=sï=J/;=íÍ= äŒ=>¬=j[ö=jÿ¤=;#Ó=d²f?iØ?fd[?š¾?•&?qiV? >YMÂ=‰L:=‡A?=“Œ¼=™'=¦ý¨=_A=g9â=€q»=uê =TöU=¥ÿ=œÙÿ=yŽÖ=d&i=fÍÜ=|•.=¶¾=qéÙ>)5>¤ÿÂ?/Î? È?€#Ä?]»?-f>S4|=±I=d“ =>q=M¡R=€ºÄ=£ £=Ùã=;Æ=jT¼=Ž $=y¸=‹¡ú=‹A‰=‹Ž“=…“‰=’~=eF=páþ=?†œ=DN=&l+=Éð=AVÇ=k=xVå=Gþn=F#=e•=ƒˆ=Œ #=oäÑ=U;m=U~=a]F=0Óõ=>ô·þ=V{=›Lœ=?ç(=cô=?/j=3¥ï=_ž={Þ=!n»=_7=5×=9/= u=a°Û=Wä=Yl=~P=‘s®=n0|=€Xî=ˆÞ/=„Ü–=26=BJ¯=<`Å<ÕrÆ=2tL=\7="A=–EÌ=Ž¼={èe=˜ Z=Â=7Éb= ça=M}Ž=]%=Dð¶=±#=>QÏ= ]<ùDÉ=-=1ÅÃ<œ÷!=b‚=5<û׸=@÷S=NŠ©=^9=c¹…=(ñA=,ëæ=]^¯=JÇ¥=2Ú¾=ŒÓ=)`:=3ìh=2Uá= p¾="°ì=GÞƒ=™‡C=“ÊÉ=\Ê¿= le=JX´=†¥´=0‰=(­=OÌ2=Šz =©öÞ=ˆÄ^=TIá=„ñ!=¶q=ºðY=†¨¦=RP]=Lô=:ÄH=“ð‘=’V=¢;Ý= €=?Re=ƒñ=ƒ¹=›£=Râó=•=“³=ÝÚ=M#q=<âÎ=‰==—ðÀ=¬ÿ/=¡”Æ=;ö=b¾Ö=Xù5=–Z=û.=‚NÀ=£.=@ù=b8ì=C-*=dj:=–¹j=OW=`Ô­=!#2=5»Û=G7µ=uê{=•È9=–Xì=L‰ý=€ê÷=¤ƒ›=¯–ð=™\¾=w ó=¨¹†=/+_=3b=.‡=yŸ=+ á=Á8=”~ö=FX†=&l=lÕ5=¾ -_=©¤S=ëC>O˜è?Ø’?îÀ^@žiëA#,’A:A/¾,A ^¥@¢Êˆ?à!>­·>4?Í>¼À=³>ø=«èT=Ʊ =„òq=;R,=ÃÈ=÷ëO=äâ&=ñu=ÿ[Ý>"¹=úèu>ø>>qê ?`­?óB^@° -ÍAeÓôA¬6ˆA¬$ûA“ùÛAQò_@Öô˜?Ñ¥È>É{ø>Võ¼> gÃ>I]> •Ú=Õv=Ófø=¬y=¦ë:=žç„=§‡2=˜N§="{`=¯&û=rë=˜ñÒ=ª`_=™)8=£ó=ºr=ó=ÇV>>—?F¼,?âÃÀ@H½»@Ž¤W@¬ @¬«@lY*@"ö-?×ÌŸ?›g?¦£+?¥d³?”Ãç?-,r>‹èî=®¸=û×=|;$=}×ë=¶¯=f}=YäÁ=4‹-=vÛh=ª™{=ƒA0=‚„<=†AR=@‡.=zÌÖ=’®=©Ÿj>'~>ôAq?“äa?ôl@$)@:^q@0}¾@Ì›?¦I¸?#‚H>zHX=ÃÚ=¶¯I=À¬Ê=ïÿ`=´ž=Êoc=|VÛ=‹ê=k%=Z<êWµ=b¡È=<¼=^¦À=\3Q=ZÁá=kð\=yî@=µÐi=³"ñ= n=¤!Š=â{+=ÒPÁ=€kÙ=<¯m=ƒ=–©=º‡A=øI>– ‹?P†H@ --ä@˜¦zAæA$¸AØ‹@ô"É@£´½@NÃ!@i AAYA´PBiVB Aø™WAµ2ÞAGnÕ@–U?D¿>˳{>bàÿ>TIr>Ü=å‰J=©^=ƒ!=Óÿ=Èí0=®¤Z=âs¬=Ñ/›=¬,-=¡A=¤™J=)(F=y¾o=g8=¨6Œ=~Çñ=e÷@=‰¢=¦²g=‘â,=’â=¦W=@Þt<òæ= —8<¨:“ºPPEºx£<ÖL<5ä­=o…à=rS]=/dÅ=H’n=s#M=v÷½ê,½3?½™ë½ã"¦½Â7Ó½›þ¥½å<½¾2½„DO<¥¡Ó=…Ý¡½²]h¼¬ùU>o¶†>‹_Ö>•ù…> ¼=†ƒõ½-Ÿ¼õã•=õŸ=uÏ=Eñ¤¼ò¦w½"û½Ér½-ö˜½ÜÛ½-ž¼1‚t'å|>ìŒe?@aÖ?ú×@LÜ@Këë@F5Ì@0ÿ @Ðy@›Ì?ÒA?³[N?ÿ>Ó”¾>!œ‚>Ü=òȱ=Qð)=‡ÙP<Gĺ¤n ºh>áX=hL<ÀY¢¼Œûå=æ!=®§<²7ã¯J=òÈŽ½€½A0ʽ%R'¼JWv¼yͪ;cI==Hƒ<Å"áºÂf;=˜P=e"Ê=“C=¢º¸=¸ L=ŸÎ=‡Î‰=êN=ìóT>u.©>˜Ù„?Aê@¶÷@œ A–A.nNA “%Arz@O>@T>âÓ>%™>=0þ=·R¼=á½z>)q¶>!‹U> …>!ï•>Ÿ>nÝ>‰Ëµ>°í.? ×?+mz?ÃX“@#ÈA‚rA{Bi>BÄ%B CA¦“_Atà@(Ð$?Ô8*?"~€>Í*>§÷Õ>H›,>-Lf=Êd=ªÇh=¤”;=¿wj=Ë…=„N½=Œ?=©çA=5{X=g%=ˆè=h‡¸=óÔ= ¢=î>=Štà=™Ñ$=“2›=W°<·[½ QU½|a=}6‹=„<ªj<¦b=<µ ™<² B<͇S<¼f=`B=ÏÍP=„Ï=±šM==¢=:øN=š7=v -=7AG=5Òã=5? =~´Ý=:»ë<; •<À†O=w=ŠGî=–&Û=:D=Vþ¼<ð­â=3fA=?à=%ù¡=,‚?= U¯=kÎÒ=*õ=s‡ü=qƒ.=vg=gj=ÒÃ=Sq=bί<À ;…Rº9ý<°fè=Ç‹=U2þ=où±=¨™I=ŸE¸=’¯ -=S±=Aö=‘2ë=N+Þ;ù;ò=OÚé=œ°M=_Ù[=u[=œÂy=’²Í=‚‡á=Sƒµ=TÉU=š‘=šdð=šÐ=¦*³=­nÏ=w{4={n'=‚Ÿ7=´¨=¯ =BŠÞ=/kƒ=ˆÔ=H\<ÅÁ=¢õJ=ÑQÎ=ØW]=¾ç]=|R¾=g=Z—=:žÚ=bzÃ=ɺ=À E=µQî>]e>’Aï?:Zö?_â™?yõ?|«µ?i½Ó>×;>°(><>¤Sn>Û‹H?cÖ?”l?¢H_?¨î?®ñ$?ƒ7?d¨6? -Vã>Á‘‡=­,9=‰Ê=o±¿=™Š=­ó(=áâ=ÖÊÛ=Г=Á^=¶c»=ˆ9=}¦0=k‡t=¶Œ‘=Æ}M=¡ò=‡ï=:W==;{Ü=?°á=º®_=£‡=R$=tix=…E,=X‘÷=t§×=µ{ï=…• =.¯é=bé=bIŒ=3€=ƒ<å¡k=f×=ˆ~À=sÛÞ=<ÎÅ<ªÞê<€e–;=¥y;=©G=¦ß¨=¼è=Ñß> Àõ>"³1>m‹—>Ñ0S? ¬@ü @t†cA*чA8†AJ'¨A‹î@úðÌ?îɲ?ž:×>§—>]!>1˜h>‰ë=ìÇÖ=¸M‰=‡ö=k Ð=JA=zEþ=9÷ÿ=m¿ä=‚°ä=qçÕ=]Ñ^=9{=ŽL¸=¦õK=MÄ=9Ú-=ïz<«…<`„%=0ÒÝ= âU<6»/=%.=h#Å=1qâ=v;Ýù=J×È=™Oz=F=VÑ=,¬å=SÊÙ=n/=•=ß„=±N‹=”Ç=‚Ð?=¦¯˜=¬ç=¶ò;=ˆD=Rz»=¨Ö=4+[=z­=¥ÀÙ=¾Ê=ÏÊÎ=Á£ˆ=š=N=`5g=)H=‡,!=„ÂÝ=e5=»™=¢æž=V†Ç=kE=œn=md’=Rk[=b}=o"Ÿ=…e =E&”=åÙ=’€=‘Ô—=Š.=Ü„>;m=¼K)=—À=¸Æ=&=*áÞ;Ÿä ¹ _V¼9§g¼«k¼§Ãk¼sÂW¹E5×<Æ“©=%Ü8=D-Ù=‰ãe=“„Ö=£3=¥Bž=¤µ=©òó=œ=‡Ùc=HM=*;$<¼Ÿ<Å‚<ÌT¥<„ú -û1>&¹N> ±÷=éM-=žÃk=húh=d|˜=Þ|³=ö­H> -^˜>µ¯>ï=Ânå=Ë‘=Õ¼Ñ=ºÅÊ=ºÒ=Íú=7€=Kæ”=¢lÕ=”I=e[3=-‹ -=@ù= ¦Í=P=lš=–‘=ÊŸ;>–Œº>·%Ó>ÜÒ >á4>Ó>>–äY>´>Ë’x?kf›?{=Á?‚?H‰g?%[â>Ô=ö–¶=•<’=À¿÷=ÕÅ=è Æ=ÏÛh=²z,=R¥V=U…=²ý³>Ö >>ü°? ÆÞ? ýÁ?FV?;±?4§? ½?wù?7˪?4ÈH?*#—>·êR>s;Ó=Óæ=äPš>ݳ>SЭ>~þ)>Žíw>r¾Ø>MØ>PÛ=§r=!ø=º(Ì=}ƒ=/;‰=MI=Ž>=Eèï=bl=tEÚ=Hž_=Q*­=gÑi="¾þ<ûË=¡ºL=êæ=j -#=–ƒÖ=½éH><šú>¨æ>ïñ¹?,>ùÛÊ>Á%V>S:q=Ùé=h0 -=P²=, þ=”æµ=¢í=zHŒ=3X<Ò·ÿ=v$=}ö=WÌ=wK=„¿Z=kè$=h!K=YÿC<õʼ<èÏi=lB=%âÌ< â{<̓0<àEx=Ê0=j“W=Ž¥ó=4K=)Öu=x=-=‘\<üUb= š ="È=YQû=Lô=$~=Dür=Mâ=&^$=3h÷=Eø=šZ=œø'=~X=@–=M <¼+º=7Ê=¦þÔ>Daž>q—Ð>–¦¥>†½Ó>qaŽ=þ¢Û=Â9S=Q†â=€ŠÐ=ˆÓà=|B=z‰Ç=z2=¦Òz=¨‰Í=–Ù=”E=“Ý]=´5Ì=¤¯˜=z0=t7;=gª±=iJ´=‡†–=–ü=p9º=~œr=ˆÊ=„ à=ˆ·=Éö=Â=½#(=Ç5÷=°í=a’í=2a=Ç¡=%ü¹=!öö=Z=+Š=/¼¤=6zÒ=5»Y=7Ø=$ü=ƒÍú=†ÎR=¥ =¤'=…£7=Q}È=+»IU¦»ªãç¼uÝ<†!`<ƒ¢«¼3 ÷»e¢ß:ügò»©8¾<=ÀO=ú¿= s=ç-=Y=ƒú<üÀ&=¥p=6¾5=/¼Ý=-*=#Þ=)aH=/à<üy<-iü¼Õ¹<Žkˆ= Yˆ=6J={A=™ÿÑ=,=v=•@=£¼Û=ºó =œU„=f6|=¨®µ=ÈI[>‡=ÿ‹¤>8K>•ž²>ù¼G?4àx?I•Þ?9¸? g)>ˆ³6>Ìæ=§8 =“¿µ=qÛ=Œm[>a?ˆU?y”?AÆi?.šG?ü;>‡µ>!.z=ćå=¸!&=͵ä=æÅî=Ž¶˜=‰ì0=šÊ'=ŸÛÆ=£w=­G(=²Yy=¶£Ö=¼N2=¯úª=š˜è=ŸÝC=š¿=h=›So=ª=‡Çú=…Â/=ƒˆA=ªT¥=³PG=»£*=—l=‹Wo=œI€=ª—"=¶D= XÊ=²ÉD=Ðî+=É|0=ÐÝ’=ﯥ> p¡>U§>SK>U2>W2Ü>>'„>;¬Ì>;}Á>G !>IÈ1>EÉ>S¤—>`~>¥’n>š‹>‹é†>˜P>œ2> Ñ§>¡8“>¡^ >¡o>›p >–˹>ˆ®>lºá><ŒÙ>8s>6Q_>3"ª>1e >0§h>1I>79–>;ø¹>$ô*>9³=æ!m=dz}=¼~=­yj=¤Ã8=¦ÎK=ÏÅt=Ÿ÷(=r‡Õ=l”r=ƒM¥=–³G=„£Û=Ž"\=¯k==  ”=“‹O=\^“=Y K=U–Ó<ö¨Ÿ=:5Š=…û5=lòt=ò=Ñ%o>6zZ>—”??u¡?„¾×?œçÂ?‡E;?Cp=>Ü"Ú>¾.=Ý Û=ŸÒX=Ÿ7J=™Žj=„ÁÏ=zXo=m×Ì=&BQ=@T=WaR=Urk=sÙg=Â9=‡ ²=}Eˆ=YI¨=##<ÙXC=BOP=…š7=žç™=Cµ=9^=, ç=„©=•Û=®?(=¶Gï=»W€=ÁÊâ=ˆp¸=Pÿ¾=#®h=‹­= -LF=f2ƒ=\|Á=MN=JƒÆ=QÅ=[g=W˜£=Q`«='J°=% T=1 u=ŠÅ^=}ÓÃ=kÐ¥==°Š=Xâ=Ý=:I¼=æ7<Ìö= ÂZ=àm<”y¶=%2Ð=PÚç=5¿B=Y=@Ì;ýüdoO>ëÄ?#:ò?AQ1?)^›?1Æ>TªŠ> Ø—=Š\¬=HÈ&=Eˆ{=dš„=’õ=«?c=Ú+Ÿ=ÛR=â›Ú>'=Þ”`=¹sl=–È€=o -=‡Lh=Æü>¤‹>ká!>÷Þ$?Üä?!÷Y?4Ž>Ü•>2UÁ>R“9>€'Ø?)?yn?%& ?«+>ØqÍ>¥Äs?#k?×c@SöI@ öc@¹%æ@ÙO@Ói@É~Å@¬UÍ@€ 5@>-)?«ˆ>¾T¡>R?Ó>"‰> Sã>á¾>†u>c>.Ô> ">"È> µ>-Â`>D>l–§>‹ñc>žé >Ë]¢? ¥'?0ÄW?“8‚@6Ú@ƒ…RA‹\tB@˜B•aB³uB£™B‘G´BWA™öS@hª¢?¾ý~?€E(?-Ò>ëÿ>Àq–>™$ª>ˆIS>xÑ”>I¥<>C›>:h+>s6=ñ{Ü=×’=Õà×=иþ=ÎÕƒ=÷LÆ=ݵ=Àô¸=·»µ=‘.d=.µÉ=.Î==C2=f)O<Îf<´|C<Òþ`=3hu=IÃÕ=]/Q=€­$=oB ='ï=‚i=”Úk=FÇŸ=gRK=Å=¥®Æ=–|=Œ^ž=º½à=´9=°§=näÛ=yI;=Š*{=ŸG>=”Jš=ˆÊ=‰8í=€~K=U«w=ä!=‚ת=vM˜=‘1Â==yª=†è=rÔk=.s„=J•=÷}=EåX=²; =Ì`)=žÚ:=z¡¬=^J3=„‹O=ƒ{¢=Ö¼=i ­=‚XÇ=Š%=K™Â=uÍ=—8B=¬u?= 0f=—rK=Ñ P=ÁäÍ=®X¼=€¦â=b~H=:ÀÞ;éGªºæQê¼p¾—:ë5;0^º°MV<"Hý<šÊ¨=`="8K==Ï»=nÁ|=5Í3=/}ù=Tžà=>Í==KHi=(2=‰Èû={I=5Œû=IËy=XLê=‡™=NÔ=ˆóç=SHÔ=Þ=œ¿-=ˆbw=È<á>2\>£©ì?eém?Ÿh&?ÈÓ_?¹ço?¦Pð?C k?rm?1>?Én0?Ã;Õ?´Î?N,Ä>ÓŽô>"‚=¯8=µ8?=²œÜ=Hˆ!=`„8=l "=]„Ÿ=…”Ë=–°ö=€%'=•Ö7=¦Y =‰¥à=”Ï=`H=§4F=h =+„=‘ˆº=kš==CþÉ=€à=—Ó=¢±¹=t¼=_}’=AìA=€Y$=—ƒV=£bk=ˆíN=O m=#)$=„Õí=š%Ã=¬zÿ=£ë4=‡©=vu=Rj“=hˆ¢=€œë=¬îS=§Â =¨ìƒ=ëHÛ=åe¯=Õª=§=’=¬%§=®F’=Ò:=Ép=ĵ=—yö=Ƥ-=ð´½>é >eÉ ->„°?¬Þ@"c@[˨@„¡@ÀÐI@î}éAr©A¤A -Û±@·âÄ@\Í?2 >KÇ^>n°=üu×=Ù/Y=¿ñâ=¦í¾=~ŸP=€N=„Ne=Œd¼=u›Î=y²|=’=C=”9=ŽÝG=v×ô=aq§=WŠ­=c˜Ë=‡ 0=›CÉ=¼¢S=›Æ=š* =•#K=|l1=‡±Ê=›~Ý=€ìÊ=SÅ=µ†¾=jÇÒ=oé›=z÷¬=—§ž=n„˜=.—=£]@=ªB.=°#ë=¢‰v=ƒ÷J=`æ=zSˆ=Ç=‘2=—¸Ÿ=H:Æ=5 =´ša=¢n=™Þ¶=¥d´=|D =ƒ(Á=¦Ô==zVH=AA=’éc=‰V=TŽˆ=6Nî=G½0=|Ôº=1›W=L„»=„fN=–8=…+Á=vØP=…òç=†¦<=… :=`œ==7%=09g=£´K=œµ =™æ•=ŽåL=¦³ü=§w9=Åu=Aiƒ=3F=@ªd=} =^¦x=*Ý7=X,G=…O=¥©™=b -=Z=šÙÞ=¤`n=¿™ï=Ô–¤=%µ=‡_z=-1=–=‰q=’nÅ=³ î=´‘=·±-=Ò›=²¬i=©÷=¯Cø=»°=‰ž=£8‡=´_|=¢|¾=„Â5=—©r=—UÁ=–Z=p1^=”ˆF=«z£=´¯ï=´¦+=²!ÿ=¥xæ=¤ÿ =œ#ð=|èˆ=Ýÿ=œÆg=‡ÒA=m3 =ŒÛ!=®ù,>§Ò>GK„>~‰¯>^>Y,è>3öÌ=åQ=ÅT=­²ü= %t= Èî=ì=—L=\Ü~=y~=ª™=TZ=iQ•=%+X=ŒDS=`"3=$'ò=kî?=lñ=h<=´P=SØ =P¹6=š¯3=‰’»=€£¡=kí=|Æs=†|2=–E™=–ç·=ÝD=€ÌL=ƒ¿¡=„4=€Å?=Ãá=±p•=µŸ)=¥ôZ=ž<= ¡õ=«®Ý=´y£> ¤>]:?O#?ØÎ?"³ò?q>º`Ô>ze >†D€? 4"?*@?<¢æ?U¤>Ø“>>NÊ=‘ß~=C=žÍÑ=d‡Y=™à=«L•=~k=H‡ý=]VB=”œ=‹Þ•=eœ¸=äL=^l(=~ón=“ãY=.P=‚·ó=‹Pv=‹ 9=‚‚,=ƒÄö=“†º=˜i=|ˆ~=+cµ=&O=0ôÐ=:ú~<¨XO<”ÜŒ<ÌfY=U¨=,m9=+Ù=†Œ>=w[é=p’B=iç>=+Z=„´=j}Ò=‚$ =y—=\'~=PÍ=bë=wúá=ŠyÙ=zXo=‚C=€ ¢=xÞ=„ =ˆj=—dÅ=‰-=Žvb=¦UQ=½½=©J=¬P=oÎ[=µ—=¥Ð=—3~=°´.=¿èÜ=ÕÈ>}²{>¯¬È>å`Ðf”>–°Ê>Qý/=úì™>w *?1Ø?r -¼@“@¶A@Ì@|@ºÍ@û9@"%™>þO;? úË?£@Ê@¼:Ú@Äõ-@ÁwJ@‘Y%@ìX?~¿d>¯¿Ð>åðÉ>þ~ ? -¹s>þí3>¬HÖ>@Šú=ïÌ·=½k7=«]ê=¡1[>W °>§5Ê>ç p>᧎>Â-S>›TÛ=უ=jÎû=N4v=—ª„=„,a=y;”=m(0=fó=^@=…³,=]Dê=¥òã=–²=Hô=z4=†<‰=ñé=¨Ô>=qÀ•=Q%8=g*ž=Hº÷=L.=Eo3=”6›=£ÄK=Æ;·> Ì>`>Íó=ù‹…=ûb†>ºc=óD =Èí=¨ž#=‡%="N4=¯Ø=ƒ»‹=Nb¡=j×=]mu=uû×=²Ûd=œÜ?=€>¶=;ê= yŒ=)’ =Gš=k%q=‘ä†=‘=ƒ[†=€:’=_d=g =¥ð =žA÷=—©™=ŒÊ=‹Ío=Šÿã=@Ø=?3=)vK=6ñ=R¼Ô=ŠôI=‡ò6=i¯ -=°g=¿2¹=°á‡=dê»=Aêü=_=Š=–Â=3%=”?=™O3=ªžÀ=˜âí=™÷ù=˜L*=xDB=„Ø÷=˜Ô¼=«Rd=ˆDë=æA=Âײ=¤8=‰”=sý=Q#À=N  =>í =*æ[=£}=t¾¬=,:‚=++-=‘¿‚=‹É~='=/·ä=/ØÖ=4½L=ƒÀ=1*=# Ç=3‘k=þ=‡mG=‰?u=YP=ƒ…=ulù=v“ï=£Èq=Ì=z|=¥ù™=X³Ú=Cö£=/ëV=3|”=DX=#§è=Šq}=›w`=–ü= i…=‹à]=mÔ=×ÅÞ=…Õ=…”{=N ß=sUU=‚uí=l¢'=’ja=Wˆ¶= n=>Ž==^h=pNÀ=œè=oú=r=N=T,=ŠÑ¡=)½p=,#=.A<ø =¿×=_¤Þ=•ßä=Rú=‘ŠÊ=‘öœ=Vºb=rŸ=s(Ì=v=U­ð=ƒýW=Ž0B=ŠWÄ=Ì ´=–Œ'=Œïz=˜7=™§=¶¼˜=µ…4=t`=‡ÞB=„3œ=„_C=Œo¬=£rl=›ëñ=‡eg=;NÆ=HF=É…> -›w>|¼>“añ>Çâ>‹5 >O²Ü>M>fŠ\> ðó>k>háÇ>,Ζ=š— =PqZ=6`8=_Ã=\©=|°=~Ç'==Ú==Èê=úË<é^!<͈= ™=:=YŽ¢=ŒÛÍ=@W=€Ö±=‰åt=?5Ï=fIK=lIo=SÄ=“sË=jh-=WY)=‰kE=£öp=’÷=‚ 1=¢V•=¯‡m=³n=·@Þ=•= {ƒ= •i=žy -=ÕA=Ô?•=Ø_=åÀ9>0ð>5›>JÍ>~¶ ?ã?Ú)Ô@Œ 1A-ºA€˜>AøA“^ÊAtVsAæë@¼-Ã@+—?ê^>«N6>~ƒ£>L)g>*>>ÝÞ>D=Ï: >2M> -n§=ãùÌ=Œ˜ô=ÔÇõ=œI"=œkæ=Ñê=µª¼=µpû=»¢…=Á©¶=Áô=+4=vzª=²`=.̤=pW=—9Ó=£ÿÂ=Å£-=Æý$=Ÿ¶=¯3 -> ">7–Ö>fBö>„J>Š>±>có¥>#_h=ËlÄ=¤vP=‰«Ê=lêU=ˆÆ=¤¸w=¬†E=¯ì:=Ùfº>BcG?°$?z¾?ö½@Q9?ôq?ÆóÝ?*žÓ>†$ù>Z5=Ò¦m=\Î=í=Ž¬Ž=Œ•Ä=ÊË=’Çú=œWÌ=¦ïê=¨7C=°+‰=­v÷=£h =†™ö=Òù=•Qš=’V=ÐB=ˆ_ =`Ò5=)Hä=P-d=Pöz=gí={Û=o€v=‰i=‘¨Ò=š²=aÓ=Œ=¯¸|=¿gœ=›ž=’ÌG=€=t›=•F/=–GÅ=—`=— =’Œ=2C„=€/´=ˆb"= †º=›³==‰]=opX=v»§=¡Œœ=š’q=¢™›=½t={.=U²=„WC=»Ü§=Zá=E¡÷=r¼‚=‚<çIÏ=U+š=BW=,\=„A•=ƒŠ•=?ˆ$<êµ£= †ò=ÇÎÃ=µjï=·ZF=·'¯=ŸÊœ=D{ù=q=l¡÷=2'`<þ|=Xƒ=oAY=ŒP<=Ƀˆ=[®,= -b=™=r5=„Y =š÷ü=°ä=ÀÔ¥=Ë1Ï=òVÒ=µÄ¿= >=œ[Î=…hN=p°h=b‚= -]=„ôñ=“\®=}¢ï=–`ñ=±­A=±g©=£B«=¤!=šK¢=#=§*—=iµÍ=«3= p=[³Ã=•]$=¿bð=ÜtÖ>Œˆ>}YÓ>¥uK>ª>|>¨C>¢r>›×>–øò>„8·>:âÆ=ž£H=±ï=¤àÉ=‡dS=o‚=‹N=ŽB—=¥=>=eôŸ<Ú =5ê­=¡P/=k)ä=aíï=Îq=M©=f@o=˜_=›Õ„=bþ0=*к=„Éo=o¹Û=0°£<ëÛ±;äZô<¹e¦= ׳=>[ =‡;8=2™$=/NU=>==.¼<ÚÀÿ=¾É4>:xE>„âO>¤>¸Cß>• º>L¨q>† =¨ã—=¶ñ`=ÆbÎ=ÉÒ=ÏÊb=Þxð> n>*Í<>6[þ>Uq2>‹dQ>±fú?7v?ZE²?èri@‡ŸúAœl§B%0BM©]BhžñB^+¶B#ˆAÓ-*A] @™aÁ?†äy?T>àyì>¡ÄD>v)˜>WƒŸ>5þÓ> Ù1=ÈÂL=“XÙ=€J±=«n!=~¯=YÖº=T?=d‰='¢q=>E = H®<–€õ!0>A6\>6àÿ>P«ð=òé=Ñ0û=Éft=ì Á>>œ´>üSË?BÒÓ?_'p?R2J?,»Ü>™ië> lÙ=¦f·=¦‰=¥ËY=Œ=tê=•s,=™bl=²=•ÜÓ=—(=y­ñ=jd›=™GW<ïëµ=–˜=¨Ñ=Ônê>‡–=ú“ú=Éã=¾%&=že0=|â¾=— á=œÅu=‡ÿ=€s”=†gÜ=œª¹=ž‹ÿ=¤1Y=¬ý%=©,=—ý)=›ž=PTS=)GÓ=kÚì=ß=iŸ=K{=™\=™Ê)=šE¨=¸ÿê=—J}=–' -=ŽŽ5=wU=mèÌ=…œi=>¥#={Ê\=jÇ=Rš=hZ =c¢Û=€Â‹=ž2Ä=ª.{=s=W$=– ?=…Q=v®=I&<é;<é 0=„¨=‘Û=Å€^=ðA-=¥}¿=©`&=«ÄÙ=¶=.=–qC=JOª=ɹ >yë>‡mO>çj#?Œs?%L’? -Y>²]É>4[ -=®3=ƒç|=—:–=þÜ=º^ð=‡óR=ˆŒ…=·J$=‚p¥=N<=´å<§¦Ö=.Œ.=¥×<4·r={°’=|=o8=¥@U>+çÚ>±ü?úÌ?„é?²æ??Êä3?¾cÿ?„žq?XD>•H]>Ú>>Lì=´¤=_U=s"ð=jê=kú±=W°9=’b†= ¡h=—1²=ÈT=£µ=£”5=V…*<ÝÉ™=ùü=¡I=à…F=uôé=èv@>nª“?Y+?@p£?[ u?XÚ>ü©Á>`s=ÉÜC=<1#<gx==õ6="z†<«¡ =†)=³Hþ=H=‘gß=© =‰å=ÇQ¿=Â~=‚Õˆ=:¹j=˜°=`.D=[dS=?¸¨=Q>=‡éf=·=ÖF=Ÿ¹h=‰2=rÁ=zåN=§ &<£c=dô= Q|=’Ö=Q”=û¡=Ovê=’¶ <×;¾<äÖo=…ß“=–õA=°¤=åè=L]@=SbX=&Zk<ÓÕ <„"^=x˜=K—”=ZF=—xK=}!k=}(t=O1 =4Ï<à&s=1Êm=r7=œ(«=¿3=º›Î=‰=xo÷=P+=¦sí=bq=;³W=F±c=-C=Q­â=R¬¬=-S~;}H = -9S=Œåˆ=v_»=9iÓ=Ný>º8>ÍYÒ>ÁŽ…>œå›>H<µ=¢%<ƒ9ß<¦Î=Rmœ=A9D=…=$Pþ=vt»= ¹<ú^<Ųå<ÜMŠ<b»51Œ<‡¡=éJ=g(×=q?$=ˆ’s=“c=Œ4¬= ãî=¢¿=—‹©=šñj=¦ùž=|ïÙ=B“_=ŽI'<èÃ\=€ù1=!Ò=ž)=Á®=§0%=Œ@"=¸•§=cÃk=Á{R> ·Z>m ->—‰Ð> ¢s>¥àÆ>™¢>/¬>r–>\üS>BèF>D5s>WÖD>YŠ™>£›Y?+“«@=@æà–As‰ÉA¹S6AØ·4AÉâA˜è×A1@žb2?ÚT~?OQ>”V:>`6Ü>AWA>·Ø=ûH==ý¦ó>ûå>0=¾›=Ÿáo=çì=jV6=Bõk=N8à=9=Ü<È6Ë<‰ïm=B*'=¼Q¹.«;ieù¼ -3¼\Š9£ H;¢(&»&`Á=Ø×=7¶=Lž=E%=i¿(=WaV=xŸÙ=Š±½`¦<Åš=<⾈¦˜½Šc¼½¨½Iq&½Ž«®½±ý½´·å½¢>š½¢¥;½™(¨½Vx½AÕe¼÷Ç’¼nßë‰>NèÓ=ú¶ =ýÉH>L>-Èà>q¼²>XÈ ->Fl£>gŽž>g_½<½TO<ˆ‡H<ˆ'ͼ¢[ǽ…y<0d=må=õÒ=Ba>{ð=«üË<{/Ö=u#=Ç\¥=û›;[éö=3K·<×¼æKß;Ñû²=J0x>Ų>$M>k=à]Ã;ð^»Ì¦¼Ü#+¼Ú¼(¼²¾"½á¸Ž¾ c”;ÑO¢=.æ°>7=¸]Ä=9T»†È¼ïv½xçY½(X£=Â4ò=/`Õ¼ðÜ̼"5e;·R|;¯äþ<¸D*=úÞ±=ùÓI=ø$=[ûw<+“Ù=žüU=¬=ƒÀÙ=•…¢=¤=ÂC§=ø)™> Ã,>·=^Ð=@o“=nnx”Ë>)Tó=„þ³=Ç;†Jaº¨,!¼‰…æ¼Él»FªÊ=ÂGN>ÿG=Û52=°èev =èÛ -=µtÿ=ï)=y5J=æ° =á%Ú<.–ò<9ÍC<{Et=ÓV=L2U=E’=_ºË>dä=Å' <î/¿=ƒ=ä<6d;µK5=Êš<÷§=<Œ(;ý4M¹Éܳ<ÑõŒ=<<„~=œv=† Ž=eÊW=Gƒ+=ÑWÓ=âÅ•=ˆÄá=ŠR…=.N=Ô<\ô5=ËýT=í,æ=‰º0=¬˜=óÔ=Ì'î=¯§½=“VÉ=ˆƒ=³=Aû== Á%=«i=j°±=tùY=Ld=H Ò=9§·=†Ý1=¤mQ=ò™=ëÌ<ðWô==Tá=œ(5=pp=EÄÎ=ÒŠµ=Ò½¡=.ð0=e#=¡2=Å»Ñ=Ú=£é÷=¡w=±T'=»Y=Èï{<•»‹¼°ûy=ê=k'Ê>#q=Êú,=eµ:=‹<=•åõ=bo9=^J=[ƒ)=&Þ{<Ü#k=‡`=£4>=õk=¶z=—;<þ«L<À<éÌT<éú2»xn)<–‘==ŒÖ1=ó2=e>‰?>c·,>tÁ°>ŒË>Æɪ>ð -™?*‚Ó?J„÷?´h£@ù<@nË"AbÚãA™”5Aÿq@BsBqËBÊkB"1hB ;èBýAŒ"AJ@4h?½,z?pvx?DF?B>·Q>¡zÛ>„a¡>Qc>9)ò> »=þÝÆ=¹r=ÌF„=ÜÒš=æ½=åoA=¹Í=ÊR§=èV¼=±ãÅ=“…£>Žç> ¬V>lɹ>‰~Ó>´ >uÐ8>_f>9z>EÄ>`F0>]n'>\#=ú¹•=Ò3£=wþÏ=—Ï­=ºï=ÆËN=ÌŽ>5½>@Þe>[•>L×ð>BœÌ=íUg=ÆE­=tåø=Q„ã=Ž=/§¡=7ÇÞ<ß»=`r=9ŠÎ=â= Æ š>Q#õ>†SS>´5A>Â˺>ç«û>Á¢i>’ÌÕ>m=Ýû=®æ=«=¢òð=—D!=cÈ=›0ˆ=š€#=šÝ0=—…s=“w}=…³ß=zM=ÆeÚ=Ó½Ì=èÝ>+¡Ç>A—©>DÚ>(eÛ=ÚŸ=Îdi=ÇÓ=ªƒ{=¨ËÅ=­²<=›$`=‰hZ=_Îé=T¥¶=Fý=yÍô= “_=…¶=uµÄ=‚¹!=mSì=;zG>¥´°?)z?A¾?cú?VÍÉ?Kψ>ɪ>šus>1=ã®@=½)=¡Ž»=¡S=¡þ†=S”=†"ë=’PŠ=™GW=¢dB=…»=jD+=hˆ=Rÿ= =fÇI=FÌÊ=™Ýð=T#=¢&X=—e^==„ =€ÿ‚=wµ®=‹ÞØ=•ªú=‡=¨=‰È‚=–àe=ƒÓ=eÆØ=·|†=¸Ãû=§nC=wã=3’ =fÚÅ=sG"=…}m=…Y§=…ξ=8Q²=91=a0€=™^=Œ˜$=ÈÕZ=º­Û=^¼=MgM=@fò=‚_=Þ§=A€ó=$\ = ”Œ=npE=mC=A°F<ìgÉ >¤´>kž>Ä>[>ªS=Ê›(=•1=¢I=‘{ã=Qm‹=d¾<Ÿˆ[=T-‹=hëP=‡=G¢2="à=ë=ƒ¸è=SÆ:=– =ª`u=páø=†­§=Ÿþ<=–ô=…%=pÖL=Ori=…`=X#>=ob=ƒ¥Ô=fÓ[=9Ãï=#ã-= [‡=6êí=*è=³=YÄÉ=\^ =K¼='4=3Íz= -ÈK<Ñ4¹íM<Ž¯Ç=П<}¢û<§°=6'¬=vg¦=‘l½=Îè‰=âüI>Z=øËë=îï¤=’.,=¸É=‡:=W:š=@I©=„³Œ=VB¶=—=Æh=˜6B=µ=˜Ø$=¥¥4=T“5=0Û=ó´=JÞö=}Á=°=„,-=/ö=VŒ!=Ö~=q>—=eòñ=.‘Y=bNí=€ç_=O¬¡=\¤è=ztE=†«m=Œþ‡=½¤«=ò¢">!Õ¤>/Ü7>-ñp=òº—=äjÇ=ÓÍÂ=žWy=ŽT3=s8=[O=Fãi=3êE=97Ä=NÕ|=C °== i=¶\<ÞgL<“ào;¯²8€¬4;³JÓ<.& cÞ>[>8öº>VRt>•=@>Ô›º?}?žË@4ë9@ÁÛ"A…H|A«A­øA•b Ah×@£P9@å±?o>÷7>ÄF‚>ƒ¬é>e¯€>0Åé>$ÑÔ>¥´=ëÇ=Öj½=²B=åN =ðîŽ=ÌšÔ=ª·<=‡5=Àå’=ÃqÒ=­1 =£¾=z°=ŽÈÜ=›?È=²3å=tf=[Ï=º•*=®uß=¡L=Þà»=þÝI>#F>9r=䞦=žPæ=£3¦=±l‰=œˆ=‘¨i=ˆÆi=„å=~„C=k?=€[ =¬PÒ=={^®=¨¦o=©¦Â=©²Ø=€ë|=d<=a—…=vÖÏ=…ú=ž€0=šúª=ƒ<"=v «=iãÜ=‚®H=Œh…=œ)=Šwm=…I=…vú=³T¶=ÜÕþ= =Œ„Æ=`öý=c{ =h =ŽA\=‰ºà=„'Í=² œ=±9G=‰ç„=”PS=œ C=jfº=]»= ,=¶î=´YÂ=®c)=£1=£¡$=Έ=¼˜+=ªxò=Šm–=‰ìÛ=“>=´¹H=Â2=wD=z;={qû=‡6—=‹÷ï=Ž`£=»Ðî=Ø )=§_h=¯ -=¼Ÿ=ŸÐÖ=›(˜=¥t=º—“=ÈÆ&=³Fë=¾‡,=ÍÔŸ=¦^>=¤›=Ë´g=óY>^>!îs>> i>lÐ>·>hŒ>|:>‚ÅÕ>†€s>›Ö…>—@¢>ßÂ>—oV>¤Ðä>Þ(ú>Ì–¢>¾&o>×Oì>Ù%>Ûë ->Ðà0>ÍÚé>ÏÒ\>Ñm >Ògá>Ç'r>±>;>Šfç>ŒPY>ŠSÊ>xÃu>iå¨>_Ýi>av>ZUÊ>Nß >LQ%>GyÙ>0Ž¢>-ß> ÒÔ>¶­> -wp>/=îÆ =Ô²=®8o=œÙ“=“a"=’/#=˜Y= `N=5ÆÆ=-*:=hì²=g[8=bòH=(ň=EüÆ=k½Ì=_ÀÛ=QâS=Ð8=oÅ~=²U=³©V=Šå8=L®—=+%n=-uþ=?†Ì=l¶¨=m¾d= ê<üf—<å®–={I=- =ªôº=´ƒì=Åýê=ùÚJ=î#U=à„á= m=MOa=r•=d‘7=_ná=KõY=Fl=W~ž=Ãc=™No=fJÓ=‹†=sæ<=3/n=GÌÅ=En=1 W=‚K­=võ=‘e=‹>|=„S~=Ž%D=‰…x=pó =dÿ=WŠ=V]=Såœ=T]=RŒ”=G=*Ü«=%õg=0Öa=Dó¤<â‰å<{aË<§Ž<´W¹<ÌÄ=Zo=n ÷=x r=Ev%=F<+=r=qK­=y¥=«x=–»u=uÝž=‚w]=Š2#=¡GK=Œ4"=‡d3=¥Ïx=×==€nè=?œ=©ËK=ºÒz=ÇgZ=ÈTä=Ï(X=ðuÁ>>Õé>bþ>'?”>OOq>gaÁ>…îÉ>Ö"d?æŸ?|¦@7¹A±!AÅÄ Až]ÁAwyÝAÅØAjFA“iAÐ5`A½©NA«ÓêA&œ@¶à?¨B{?°ƒ>ä¸->õœ>{´ó>]S>2@X>UV>õþ=Ò#S=Ø¢=Úi³=œ°Ð=¬ÜÙ=ÀÆb=¢„=°4=ÜÃ=îð»=ô-¿=üé=ãðÊ=ÍmË=«×[=±À=µ^==žq=—ö_=’»«=P{Ú=N|=œ® =¬áá=°go=‹su=‹+=ŠíÂ=˜E=ŠwÕ=d®j<ëò/<ùvë=IHÕ=&sè=¬Á<™±?;È9äõ×o>5Q>à=é²K=ÊÂE=šbî=…^=a=Ág<ÿN<ü»Ý=Kfš=zC§=ˆ$S=xÿ<=uà¹=sž9=_N -=‡s^=“'=†“=ª·«=â:T>Œ>z> å=§!=ŒÔ}=žÖ‚=Š÷C=uYR=eC=+T¸=°–=™P=’Fá=Œþq=a‚=oŽÉ=f*S=U\…='YÔ<Ù-ü=œÑ=‡ç=Ldñ=xW³=w¾z=dÔ¶=k¦= 1=©Tî=“Ìß=„?Š=t”=PM=-=#-=—2=HÃ=‚=#>=,ˆ=<à8A=:X=¬„«=¶Ü=t6 =Š2=²¹™=÷<ú>lÚ)?$X?(\?Kº?5‘?ôØ>Y[X> õ)=›Ð=€Ê€=K “=M^=LÊ=£w_=©m¯=¤Ï=™)=y =’ø‰=“Xœ=ˆ3¸=;Ns=0Í=}:ã=»3è>§U>n>ì?S?OÐ?';?h >ù~>3Ž=ÅÊÉ=†%~=¸¥=˜a]=xÃó==Pa= «= Ê÷=AÅÎ=0å—=£÷=8È=E‰z=Mèï=!øª=ƒ{<§ -=D]=VËæ=\îÙ=2e+=9k=nÅM=Ÿ‡Ž=µxü=Îà¡=²¶=¥_í=”2=x|=`IH=8b³=8­é=E¦p=o–r=^T=…–=™vP=šX=—P=¯„V=Ÿ³Ü=—®Ì=‡® =— -Œ=°¢=°*„=„ï{= À=§Û=ëš=†OA=uúØ=`÷à=mã=tÅ=|Wì=Žª =j­^=jŒ»=M^=uÖÝ=†fJ=I =÷m=„¤=“|Ö=kªu=[ã=lnò=› =¨ŽB=‘ †=ÔÒ >0·>Ìž?I¢á?t¢e?yÝ?Fa`?iÁ>*ÿw=ÈNÎ=söT=u g=‡<9=‡§ =zur=ˆý=ˆaJ=j‘=šÐ=’Fš=•Ñ=ea4=‡"d=uk=nÊÉ=SF^='—…<ÇŸ><­Ñ<ô‘=ô=(s$=Nã =g„§=wÌ4='QÌ=S’Ä=y•=™mþ=“äJ=•æQ> 4¡>œ{î>ï‚ÿ?^•?‰D ?œ¥¤?˜1`?|r?SÚÂ?`?XŽ‡?Pôc?1®>øv>œò=ì"“=÷9>X> @Þ=ámÄ=¶p%=—8Ä=–_€=“yE=>j¹=Œ°á= ‘õ=…BM=u˜§=Wàœ=p=Nt=vp#=,ãþ=)Ü=Ÿ=^‡ø=8ªÿ=;JÒ=“¿7=¢F=¥‰õ=~^ß=} ;=tP4=&=SœÑ=j•%=o Š=oÐ =xÁ!=ˆm[=€/³=†½=…ï=…›?={(Å=EW=‰œ,=}â -=+ƒ=]o>=d’É=XÓÙ=m å=„Ná=‰å•=N==$”¿<áò,<ÿ­b= °ž=+ÍJ=€žÊ=xÃ=Bþî=]%(=€—º=œä7=’\é=aÕ=ö(<ÏDy<ݪ<ËC@=.,=#Ì#=" Ê=Jµ-=f‰ñ=‰3×= ±Ì=r=B ±=‰_X=MyP=<Ëí=™\Ô=iM–=BzÓ=B‹Ü=U‰·=nû=‰’Š=œü®=Œùÿ=D¿=>Ê=^®¶=l°=p.‰=böÌ=*}m=m^=qО=r K=X(Y=‚<-=•sà=¨Õ=´.½=³Ø´=’©#=lĹ=7j=iõ=hÚ =x«¦=†Ç=7m]="ë=–˜A=c'=&-4;Þ\=.@[=X»Ù=A¦=,Ÿ.="¤ë<Îlæ;ðEŽ;„½¿:™Ùv>Ù>. Š>[sË>¤…†?ÄÃ?agj@1Ë·@ðs™A5ÞArAy…AVŽtAPS@†ØX@ï”?>¦pˆ>c>Q½±>60o>….=ò)=ö¯%=ŸðÉ=œ>¾=¡Ê=‚z= "=·%=’å<ÆÏ<ä ==ÑK=9c =NÍP=g9\=g¿=gàf=jæ²=M =wÐS=‰Lz=§@x=z¡=I–q=3~5<ƒhå=íš=V_=u£ß=NC=B9=r:=s÷2=~c=w=D+b=DÄd=J„=XYv=q¯7=_¥A=Cú=4â=j9#=`q»=ͤ=¦:=›ú==D~=°^1=À1=C°=|"Ö=WØ=GÎ×=^ÑA=G¾=%º=‚Æ=…F=¶šì=Õ­î=Ž:·=Ž{¯=‡úý=|H[=dkò=*;=Ûì=¨iv=ß=U7L=Þ´=ÎÈ=/Ì­=^PÛ={j¶=fOø=XÆ›=…\<|)Î<‹Œ<ë=r=8‹E<úfw;E®z=@{=â-="Ûõ=Ÿ¦=CG=nùª=#2=€¯=‘I=—óÐ=cŠc<üØ<ñq=sak=m =_;¬={`·=˜74=dx€=QS=…}'=ƒ‘w=š %=®Áf=ýt=J:‚=p]Ž=e8×=<=NB=iÃ;=lˆ=kÙÔ=_é=cBA=Œä£=Ø=„ý=Ž²$= -<=‰öÎ=\D2=’Ò=™Õ -=ª6 =ÎÇŽ>D7f>¢•?I~?&Çq?!Æ-?¦°>ÉDr?z?%W?6E?žV>ó¡G>Š«}=½ˆ=¼%m=º -Î=°m_=±É=‡­=e´=o>«=W³ó=]í‡=%´=—^â=Ö=­Ê¥=¬±j=ŒFÿ=^Èß=wŒ‹=g7U=†iØ=¥J·=¥µæ=‹e={‚]=|Éq=‹Ô=Ÿ¨ç=°vý=ËÐ=K½ =€)Q=Ÿ··=vgð=Y¯ =BþØ=-3.=~[=hì}<ìYD=(g8='ä¾=+=(Êÿ=_š®=N&¿= úð=A£7=KÑ2=Y®É=obk=9%=8B=_%=‰"Â=y»à=iû=W¢h=+ -†=MÊ=`JÝ=øQ=b°>=_ˆL=¬3=¹pU=p&%=Mw*=pÑ-=‹[é=Žâð=ŠÚÄ=„f=uñ=>Ó‡=@ž<çØ2<4jæ<ûCQ<Òf"<ß=¦mš=ŒÄ=¢ -=Â…=jý=fd=‰€=¾ñ¯=¯C=w³=Žc=œªî=DÏ=ª  =ÌÔw=°:?=§rm=¥lè=¥±v=›Æj=•}=…›Ã=3~q=ÝÍ=ëÒ=Íåµ>\->Í‹> X>`„¿>²ý—?$ŒQ?±@‚¥÷AT:qA†¹ÆA‘ÄAsÂA0Z@ÌeÑ?Äê`?¼ -ã@>@Î)ïAxÑ=AA‹ISAyŠ7A¦û@X2?Œ„°? ò.> >‡^ƒ>a•ö>$ÿ>ôù>òã>þx=õ–·=æÚs=· -+=”id>|Ô=ÇÃ=¶~='Â1=(e,=ejÅ=ˆl¾=•2 =¥q9=-½=µ¢,>Xß×>”­T> ÛÎ>¡*k>†å_>%v2=×ëP=’!g=¤_S= –ö=PôQ=ÖE=@Ã7=i ø=”>=Ç8=‰¦=˜Ôv=¢h¾=™=ºêÏ=Í&Q=Àe‚=Yº³=¤¤È=©zG=ž\=´áà=|;=‰ƒt=É=Æ=xTÅ=\ÜÆ=q!3=œb=wê=‘‚=”½Ç={ß›=X·…=h¤=_ŒE=:”= ó°=¨,=)$ÿ=²Ž’=0¢R=4_ª=x$é=»VÊ>(Œê>NU–>aÌÜ>†>GE>^=¸½µ=à >4À>S=>•Ã>äì÷>ÎÃ3>¥Üv>H|µ=Úûõ=šº°=hÊs=a§Ÿ=”¨é=™ö=6=J­=–=ˆv=u½O=s=06ƒ=½x<ï×=HK2=hT6=D±^=,&º=ƒÑR=* ™=a‚µ=“EA=gY^=l Ö=‘g|=¥oü=pŒ­=É>=~i=`Ã1=ÁwÄ=„Å=gŽ=Zë=/†Ÿ=È·e=¬k,=J9Ñ=3.= ³ =™Ñú=n²æ=E­"=r.=#=½Èº=lP=q%=v-=»Ëš=˜§="óÝ=5=ƒ6ô=·Ì`=—Ä¿=oG=Coþ=ÖN=š¢x=„Š¥=`â7=”\þ=øÂo>I·C>…Î*>ƒ=,>þr>Mrû=â¸(=<ïp±<ÚŽ=ÝO=:™Š=j='T= uA<ú•x=}Ê=dÖ;=G,=7~Œ=™Zô=„é= Š=à 9=§ N=p–Æ=OþŠ=Jc{=_MM=DÞÃ=P,=nѯ=ˆ‚L=w/=ŠªŽ=Q(ƒ= 7´="÷c=#¬È=ƒÊœ=¸Ï=_1»=Ù'=zñ=†‘Õ=†a=8þ=†%>=ŽÇ{=“9N=•…$=“í—=U8)=&‰˜= ©=Btä="ä=Eµ“=‹–¡=Æ_Ó=¢'9=e×=#K=Û =ò(=(«ú=ŽÑ=¨Š=ƒyä=KŸs=„Ž =˜‹‘=¯7º=×½ï=¨:H=¢§«=”§‹=R„¦=¥õÿ=O…°=¬=%_=Žxz=¥Óa=º‹=ßm=ý1=tR =7=®=7UZ=eˆú=ör=¾dÐ=WµŸ=»&=4.±=uþô=Ž@=Nj¹=$ç=U~=J7Ù=–=GJU=–ÒÃ=t³„=Šç,=r'G=edì=‡”…= m‡=—‘a=[;û=$ÿ=š(²=œR=,`=¤*=#S¨<Ò¥l=’"=?ñ=/Øÿ=n=.d¬=GQÌ=y=~ V=Q±à=œV=qe§=oÔÞ=€=W=\f='d¡=¨šù= gJ=Öš=/(¥=\¬–=ˆS =¡…°=œ³œ=4„=ö=SA#=}=Q=|£Ù=”¦€=‹ƒª=a=~oã=5°µ=·*<žãÔ
    4ÆE>•ã>Ó–m>ìæè>ÄV>¡¤>]0>'~K>w >Ìî>ßLÌ>͹ƒ>¡½«>G”®=»BÖ=•A5=GÞÏ=^Ê=Î=hÓ*<Økš3=#¡g;¨Ùu<I<å2à=ƒuÃ=*Š{=àˆ=0Gó<âáö;Ñ6ý<ìµø<퉒=:Ù{=Ž*’=³€Ö=3 G=HÆŽ=g²º=lSì<ù®½\&=R”Ç;ùÿ<«9n<òŠ0 &==ò<å4Û=&ê‚=7[l<¢÷=p,l=#sž=¢<~#¨¼'œ=Z<¥©=¸;$=ô{¶=Â_Ë=;H= Ö1=;á<`ºj<ß¹ -=#]á=xgÖ=xP™=\=/€A=kyÐ=h Á=BÑh=w*;ñ<ïà=}Å=£oL=G‚»=®|Ò=ÓÖ=|ü =…œ>=•×C=~K”=~J£<jt<ù¡=o–œ=ªë¼<¿Ã2=IfZ=‹°J=3P*= <ÜxV=!à¶=`ï=Á<û§‰<Ò"‚=“ŸÓ<°ö=8Ãð=ˆ6ö=‰¹=YB…=!T¯=Xž=¾ƒ‚=¡=‡+=Ÿ-¡=Žq =7t=´"È=¢=r”D=•±a=¢a'= Æu=*==â¶=2ÿæ<çÙU= -ý8=b¸Ý=J}=ªy¿=€=žû=·ôk=^¸="1=ˆtº=PÍ™=Pà=Ó <ôB=I œ=Z`=2³o=Re=SÐa=VŒ<÷Ŧ= d8=JM–=W1=f†=‹ó•=¤cZ=…Òœ=GŸ =y¿Á=º«w=½KM=q%=®a#=«Ì=´ÂÕ=–fÆ=Gÿë=2þ=‹d==WÉ'=Aã=)YF=,0=¥5à=¥8£=‰Öi=©èÞ=“Ü/=kIÁ=¯±=ÃÛQ=óò=¿Ç"=ÜkN=³ =± =ƒ.'=Æy=k/=_=›åÞ=’MÑ=u<&FF=4e{=s#<ß8è"…=·á‚=‡ð"=»#=CL=¥GU=óˆ`>+{">fÚô?)Û§?ñ›u@gŠN@¤Þ@»|ó@ÐÚÚ@Ôqw@¿„Ÿ@¦-`@†d @6þõ?”ŒQ>šÙI>$òR>°¼=ß­=ÛE =¹%K=‹©^=Œ®9=Ë|=˜=‚üÖ={3=1O<ƒµ;=-¦Æ=ªù=›{¼=…BŠ=¡dw=g.a<ì‰==ΪJ=åÚ¿=ÚÁ©=Þ=„wX=IFj=†M<ý`a=ŸÝÈ=&Iô<É‹c=Mûë=X“†=0‘=†¹œ=˜Û=‘ÌP=ĵA=‹šU<¿òN<·Ô"<¾¼k=&Ý…=‘Xc=D‡=ˆ=»=”€®=9sÂ=\|‚=m^<<â•ß=±F=#OË=ìl9»jÌ=½OOœ=à½ä=Õ©¼¼Ü`>½ÇDß¾ ž½Ùe¼½ªì–=”+¼.š¾ôé¾uú¾%¼öï!=Å3L=×2l=”A½ˆ"3½›§;»O»ß4n½•¼÷¾\°¾3 ½’{Þ½ã†>¶Å=ò»=½ñ¯½•ß¼jK7½gqÔ½–¾Œ¼§ðö=μÀyàºðG>'RÛ=éÇt=[vfä=[¹ =ξ7žé¾ ß(=¸¼Öån½±—p<†/‰=@~½!Ø*½  ¤¼õ¾Ž½žý¼ ŽÞ;€/™:Ù%Ê<¢ -û=TŽ½oÚ×½HzÔ=¬*5<ƒÛ½¹•ï=±õ> Ž>3 4>$ñ=W9C=£7=¡bû= Ml=ž˜«=磮>ùv=©œÌ=›¶=>Ïó€>Ó3>ˆ >‡r>pöÆ>;àù> ±à=ìa=ÍÂÿ=¾ö=2¨¾=Ç…^=¢`Ú=•¿½ò4½‚È=3Ìë=„$³=#¦<çü}<ÿbû2={ü=N‹ë=N6I=)=² =•8=Š=¿Vý=µî;¨aà<–¶=Õ±1=½€=«¡=ÍÒÆ=×Oë>Œ >À¿=líÈ=9&þ=ü= K[=KIå=—+¬= >…B>ÏÀ=£ÿ:=¬Á¬=Çá¹=DÃ<}¹=¨Àœ=É°%>¹K>öÆ=Ñ=Þ+À>ã> á‚> Û>+i>ÅP»•Ž==ãP=Ïßa=×vý=ï!l=ÿ‹>æ>‚tŒ>£Âó? '?¨øâ@Ž@ËàÕAqeA˜=A%@¢_j@_~â?0‡>ßä‚>ˆ;<>á9Þ?j?ežå?Üå6@}†¹@›*@¸Ç@–îV@‰>?Œä#?G µ>Š{k>b]r>÷“= ¨š= -òW=œá+=¹’=Žù‹=µ€=þÀ>"ïÐ>DŠ>Ý:O?B0?$ö=? ùZ>‹×>5ùë=…Ž*<ž”H»(iÏ=³|è=̱®=‰âÃ=šDö=Êe=8¯ý©> l=§÷¦>+ÄÙ>äå>´ç¯>Çà‚>ç„>γe>lâC>$ʳ=¡„à= ÅÂ= e=Ÿ4=’ª =íª=Œ%"=ÔÚ…=†CV=K·P=‘z(=}=EØ5=‰o =Ì0Û=²œ»=—6b=I`=a5>Õ$=ës+=;„-=põt="Î=­É='u=Î×Ä=ËL½=Ëî<=¯ù =œxN=Ó±=ã‹í=³B¬=Ÿwí=ƒ”~=J É<éˆò=rwí=—Ñ$<5E/<¿k8=™lÁ=z5W=QÞ=<ö¯Ì=˜6Ç=‡Ôs=t==wç¸=rH=Sâ=Cþª=ji=(Œ:=†Û=fv=8K—=Á #=ëÐØ>E|>h´?/?,Ð?[o\?;ˆr?->Gu>‰!=âõ=¸ {=€Ô=£$V=¯°«=­Í=«5=f=ˆñ8= R}=3 -<â_š=Qµ¬=bB¹=C²j==¿e=?QZ=hÍd=wsO=ßå/=Ö -"=¡­„=ŠÑ=sõß=sIX=s<0=<Ä=F²ü=”ˆõ=’–ƒ=Š=ɼ»=âã=µ±á=À·S=æ©>Ј>YÍ>—ó–>µ˜?Å'? Ó?¥>Øý*>‡£¹=ývµ=¤o= h=ª=«P=ž50=‘ü*=m³ž=WÊ„=yiÚ=x°(=YG<¶ãF;,Ùæ=„¾=—¼§=Wç=‹’=¹i¼=æNj>ö>dÐy>iÞ´>J?>-4>!>Z™>âi>Hs¨>Zàâ>ŠÍû>rºØ>K$>W¬=áW1=X 0=yt£=²$P=~Ó«=" u<¬GÚ<¦4Ô=›‰ô=ž‰ô=¬Ú¨=½ù"=Æ?À=…@«=rû=“b¿=Žì=ž^=ñ†=Jù=£†h=”=¤¡=fœ =£Iÿ=Q[“=.Xþ=fç&=zK=¨ˆz=W±¦<Àw›=À¥=ã(Ì=¼÷Ô=Å¡´=Õ,=ÁïÛ=¸¤>76>AW•>%> -=°` =:ˆ(<×í)=c?=Ò’=‚=Ê5=ºŒ»=ºžª=¸5‹=€ïs=‰M=™'=£Ÿ%=«–Œ=ß2š=çqû=ç½c=°? =˜3=„ø,=¯n¨<Æ„»<]¢=é]I=Êâ~=• r=ÊB =éÇ€=ǾX=ÖÉZ>v>ô> _Š=¼kã= ñ8=u=€ÙÇ=ŽÜE=¤ø=¢B==†= [Ï<í–=2õ=„Ÿx='tv<ñXÞ=ÌýR=¹¸z=hµœ=b\ß=dŽ§=’=’ -G=b7=xÑ»ÐË:<…î_<âq~;m!<ÃG=̃=Ÿ{µ=m J=8CÆ=@îÛ=ÓL=Ö×Õ=à%Æ=Áåv=°õw=hÙZ=~ø=¯Êw=ª1‚=£›É=¿Ì`=¿½j=…m=‡q=‰œ= Bæ=¬— =^ͺ=\ƒó=vd=ª\=Ò´ =µTÏ=§°]=7¡Ò=EC=[ w=\ù´=]à¬=¸;ê=¬=…Ÿ=…P =…›÷=’M=‘rü=cÇã=‰!Ò=¨«Ç<ó¹È<xH=W8=„¬=¿åY=©,]=™Ù=…ß=~ÂŽ=`±Ö=„A=šl»=m‚†=XN®=oJ¢=Qrû=Ý=#¢†=+qQ=ŽN=‘0=‘g³=ªÜ>=Àl$>ìó>>É=°À=™Zì=r´}=Œ³ß=”~¡=rXz=r½=rcç=ŒCE=˜g5=}4æ=r»ï=[YD=[Åo=[áy=`-!=aÂ=c1G=}+y=‘¯ä=šõÉ=ž¬=Àšé=¬ø|=€‘Ò=@U=~š=zËÙ=ŒÖf=Çœ{=¿Àg=¸Lz=µù!=©h#=P=zÌ=¼r1=¯lq=«$=Ûñ›=Çñf=Ÿ¦u=[ˆ=!Y©={þx=xÄ–=[= Mà<”Å©=—J=ž”´=F´`=]þ=uħ=ZÅ=[«Ö=©+’=–Í'=râ;=D¿‹=/u=# ]=XÉ=§Ø|=œp¤=”û¢=pæ&=tV=ˆƒ…=ˆb=‡óU=¥×Á=’7;úÓG<Ð&Ó=8žª=<ÛŸ=>Ìj=<À=dRŒ=ûf=_6§=E7•=3<é&Í<­‚<¹ “<ÅN¤=9 -œ=V4==Ž‹=Ñh =ÿ¾‘=^ê>=[³ú=¤tÙ=‹b•=gݶ=‚R‚=‚€=hÀ =vŒž=ƒóZ=<ÖP=#4<òY.<ƒN&= !x=F“z=Å=,5=¢@Å=>yR=·L=‘Ä#=‡¯¸=c‘=x¹Ž=ÊÞ=ª3=8s=¡<¦=ƒ¿?=[¿Ò=Šk=°E=¶%=GQ=›O7=¨…=¤·=‹KG=V =‰=K|=dúÇ=—éO=¦Mí=µ3.=nïº=OO`=1ß>=i-*=’ÒÝ=‡þ=‡Ür=”hW=”çJ=‘â©=t5ð=pBß=’˜°=¯zà=Ú€=„ä=P>=®€K=˃5=ö¨a=á­g=ÖÈ‹=ÇC=®ž=~w=|g=.Ò=‹x=° =—¼i=c½Y==#g=s&=‚ï¡=˜…ú=™=™‰¼=—þê=ŽMº=|À§=Wÿƒ=Dé=‰Ö±=}…m=]Öz=‘úP=¦¥I=Õ=­Ø4=zsÈ=˜7”=§7Ï=%×.=[?=¦Áx=”ö?=‹Óù>'k>9ÌÎ>Z-^>‹''>œ!g>¥€B>œ Ð>ƒq>K@z>+Xz=à%E=Òí=¼†¡=žØƒ=b¿<ÍÛ =-t=±’[=žai=“¼[=‡ž„=Šo¿=Œ¥Š=¦=³1¸=çA =ñFÂ>Ø;>)>`D> {>,î>D¼]>ˆ/>š€>>´Dð>±cé>­â>Û3•>è::>²J>ž®»> -Ð><Óà>$uE>"Ñl>.¥ë>>@7>¤ô>šl>Š>m2Y>1¹`=ɬ¦=¨“=ÄN=³ e=ž -=£¾å=º > È>362>W œ>w«®>vçC>W p>I7|>? §> -ÿ‹=ø©=Áå=­ÍÁ=ÃÊ=¤{=±Û=ÞW=à«=¶žs>8q¡>X„>ŒFŠ>‡|œ>‡j1>ŠœÅ>ˆ¢;>…(¿>`¡>I¡ =áôÖ=Âh¬=¡&=þ>dÍ=Ï«=ê1x>Êp=õ?m=þÒ¯>J7> \Ò>ð >1î>->O‘=Öwê=»Zæ=çïk=í¢=ÿµ">[X>S•>å>L©>4q´>)V>Žð> -åj>#¯¹>Ex >Jen>dî”>º^_>Ê–¬>Ýp´>þHï?åB?=í?\Ô?¤>Ð$,>»Ý¦>šs{>”Ví>k1>–†è>Áù>†á~>‡žS>ˆÖI>rd½>yuN>€îÞ>ys8>|Ï!>‰P ->Ír¦?¯A?E ?RV6?b†?i3?lNö?Gƶ?5ß?|G>´2g>{qT>9Îd>1»Ž>%þ>#0’>÷L>)Ì>•ÿ=ùê=ú=~=ÿ‰@=þÏé>zî>1}>u—§>’£>¿C>Ù°+>á£>ÇVÜ>¹|À>¥“>†c>ˆLz>¥‹>—à->‹;>u’>S°>±ø=íaŽ=ëA ->#ÿ—>!×>;É>,R¿>-*>ZÜ>¬>-Mé>? ”>Aú>PŽ(>„Þ>š`:>Ú>×&(>ÔKœ>ÛóÕ>ÝëÁ>Ü×™>ÓŒ¥>ʼô>Ûée>ÞâA>ßß,?ðÇ?1°å?"EE?A4?zi¥?„Ùw?ˆàH?Ž2H?‡L”?€TÔ?cq4?J9F?Mð>ÑâÉ>©ºÀ>¬Ò>©Ü>¥› >”äb>‘lY>ž…ø>¤n>ª[ >Ží>ˆÙ©>Š0Ó>¢õ>lðÇ>Yð >N‘(>:Ò!>,ðö>ÇH=Èv*=œIS=e9”= °=¥=£»Š=ŠR=„:í=¡7= [Ò=ŸE=‰‡j=‰“­=’Õ»=¤í‹=¥så=w -z=“¡=µ=îAÙ>.U=½l=²Ä=±hÅ=é#Ñ=ãU#=°Œw=±É8=¬ÒO=ôÎ|=ÛÛP=¶T^=Ë=ÏßI=½R =ª[=™¿(=¯Kº=©ŸØ= -Ê=¹÷v=ÀŽ=œÕû=†Ý7=p39=…¹}=š÷þ=»—ù=£Ý…=’P=º—=Ä}µ=ÄÉ8=ÂÃ=Ëþ=ôMz=Ô‹=º>=ÖƒO=ÍKÆ=¿ãÐ=Ðêé=ÊÔ=¢Ó§=Ÿ5­=žIÛ=êr`=Û£ä≠r=Ýq+=à¶l=ȨØ=åiÏ=ÿZñ> 3Å>›´>"c>5–Ý>LÉa>•@M?'h>?tG§@0Zg@=Ff@J;ç@-¢æ@)Ð?ô²Š@RKñ@‹ÛÜ@Ÿ -Þ@ªk@™j @Hšù@/ï?Ýwd?›,‹?K/>Š‡î>l>K{>Q> ë=ÅS=à_S>¢a>4Þ>‹ >ãå?DDr?d¥Ê?ƒ¡f?`Œ??åÂ>«^Ž>„F>!®ê=è½=ØÃ=ß•=§ƒ…=€Â=È=¸ðÖ=ªˆM=ºDr=¬”s=‚Ë=š=®®>8#Á>šhõ>í#.?¨½?E>ù û>½ñd>—-Ä=è}£=ïêÃ=öy=ƒ&=vË=kœ˜=•±A=µQ=Æo=Ù¦=Å–=ni=lYï=Ü…=^=wý¡=z¨Ü=²LÊ=΄=­ú=¾Pz=è‘`=ââ =ÝóC=ÄUÚ=§žŠ=–ƒ.=ÈÑ–=ª©–=‡G#=¦‡=*l=püV=€':=}²=sãé=‡À=ˆ=^D^=€=œÒ‹=tg=“€$=b1=‡j=—߇=®ó=ͺ=Ú¯š=Æûª=ÊÕô=ÐC=èl>¦>E¿K>¿r›? áT?–V?¯R\?Ñ…Þ?Ì72?ºƒ?†Q -?*LÒ>Ù½Š=Ûöç=Ö3=ϘE=£Ò|=´²&=ÍžÓ=°t=¹ÅS=ÛŽf=ÄÍ’=·­ê=ÚhŽ=ºÊ=”uo=©ö;=°‹f=ÂuÏ=Ôªa=ÏÍ=~Ÿƒ=£p=»B=ŸÌÛ=œ=Œ_,=Õj)=ÚßA=µd=¿°Ã=Å›÷=¥W=²7À=Äw=sŸ=zÄ¥=•(±=¬v^=ªF~=ˆ¢=–R=–ý~=ºHÒ=¹ØÑ=²Ð=ŠŠt=Œu=~L=£—¾=¯­ç=½›3=À²=ÂÈ(=»½—=ædS>?*=Ç2€=Æ_’=·â€=Öw=ÇØ|=œšÆ=…[]=ƒñ =»Y=³v=³mx=òr><>5>->"n>‚ì=ÐÕÁ=Áp3=ã1=üFp> (>JpÛ>6Øé>)î®=þ(¬=×ÀÓ=­(Ã=½8_=Ë=¯æî=ÉîÒ=Á’ˆ=UÔ¼=¤A}=¼{=¼1‘=¸Á=Äqý> RL> ‡=ö7>IÅ>_´s>_ý¦>£ >÷n‡?¥Íû@F`3@§Ã@¡Ø@“¤Ç@€ß“ýb>\“é>HŽÇ>=:­>MD^>`vÛ>{а>Ðõ…?üœ@8w@T–-@–¯…@”mÕ@€ØO@7+˜?‰mz>þÀO>l8C>8&n>&Š>'…v>+¨=Ö]È>éH>Õ> ë>)ã>*²3>9ª>5&<>G·V>qƺ>º±ï?bx?‰nÞ@K ·@‘%@·Ý @ÔU@í@X@ÑŸh@»*ÿ@Ÿ£Š@A¿–@Fß? ÕÚ>¥Añ>}I>>™>.dA>®®=âS­=ð¡¶=ûxi=¥á=È ;=ðÌÁ=Ö;Ÿ=Æk†=¸ž=À²%=É’j=ų}=—™t=‡ ²=‰w”=‹iK=~·=~Ÿ=£ª=­5!=¼&=¨ÅD=­ =¹D=¦a =Ÿø»=¥jý=žáX=£û =¥-J=©ô=§:Ä=êà=éÌ=¹–(=….ñ=†‡ =¿ 2=–q=~ý=϶Ñ=°?= k=ÕZ-=¯Ÿ«=ŽM =«Iü=¶8U=Α+>)>4 ¼>QŒ¤>ŸVo>µòË>ÄRŠ>×¢Ï>ÛÙÌ>È-W>¢@>ˆ>+>Ï!=îRg=ÅÜe=ñ Ç=ÆC=´ L=ÒŒ=¸ l=“ûÙ=¥]=¾Û=ã×J=²´¬=¿v|=é`Ó=ÛAñ=½;î=…ôE=Rdj=O±$=…éx=üË=«tâ=çò =É d=Ír>=ýÀZ=²{Ç=rW=¬9Þ=Êzñ=æðµ=é±=‡„y=i02=ªtº=¡œ·=œr^=°Ø„=œHK=ƒœ$=Õá’=Öt—=¼d=šÕÉ=¨"Á=Ó<=îù¼=ìÎÒ=¬Äª=ƒmó=z¥=•~å=º†>=Äùš=¼,E=™^ =.„=§I=³C€=¹â=¦r==ÂÝp=àÕ=Ô'k=ö=ÿ˜=™ =,=€› -=¥ÉJ=’V–=h2=ªŠØ=¨!=¨{“=û ¬> Ó>>1H>CoØ>€‘³>­_¶>çc¨?&nW?†>z@"UI@XF@‘–Q@e@~+@,LÉ?¬_?6@>Œ¥(>E¾m>"Û¹>$#Ž>&ƺ>%™=Ü =òe¢=õ©Š=Ç ?=¯Ü=¯Ãe=öh@= >;=Q!¢=‰À~=¨ê=ºçà=—R]=Ÿe.=¬Mû=ÚÈÝ=­Èš=ŠyØ=§Ú¡=¥¦-=¨×1=ÜmÙ=¥˜c=>hu=†Î®=³In=È3#=¹Þ8=»µä=´z=M,¿=Oî=k¨~=ŸBQ=´¦å=ÉY/=â–³>Ú*>H/O>³G¼>À°>Æ>”¦y>PK(=êß]=§ =ÌêC> f=™Z,=¢»Ã=É^Û=ØQ =·«¶=œ4=®kD=Ò:=#²Â=Ûe=›‚`=œ«Í=‚;º=MgÜ= 8F=@Xð='ßS='a=®´W=“² =CLM=‹i=Ž5=‘=ì­=Ñ= -=‚6>=u‘=fª€=-ƒ=œI=ÏÂ=˜`W=€A&=T×.=]gn=‚==­®=¬°ã=ó=‰–;=ÁŽ=Šfà=š|É<ôto= -Aª=:T„=Z=` -æ=> -3=¯¯¹=»é=Êë=©µ<=´:–=½þP=—eô=ŒKý=Žo™=w“ð=“¸<=œ·P=úò=Âbó=áÂ=ÖÛú=ò‡.>ŒŽ>I¹>kG×>b¨³>ÞU=Ë ±=¦É=—*ç=´E=Çþ=øùë>JÛ>@ÎÕ>}‘>À„ñ>Îaj>Î>>£ÆË>¦º>"…Á=Ýù”=æ=þ=ëÕ‘=žÁŽ=¶Œò=ÖtL>¼Ÿ=ùm=ïw>3>‰‹>ˆè>B¨†>iøa>ˆó‰>¸÷r>é¡g?*Ýd?ÂÒ@¡¯u@ý<·AH‹xA„püAŽA‡iúAKA LÓ@Õ[A@¦?‚4>õs>´–Û>—>H>iK@>Ì·>-H>SAE>l9=÷¾e=éE:> -ßÌ=ßø=³zø=‡æ=ÜÒµ=ë;A=’ŒO=ãþ=¡áš=¢c=¢1T=žªY=¥õ0=Ic=€¡=É/L=æÐÓ=Ô—=¶‘ü=š r=z¼d=PÓü=0³<=¸=TÅ<Ñ‹¡<ÖtF<î„—=·§2=Âò¿=³ŸÎ=]mþ=?*¯=gËF=œÇ.=›µ»=ü”=¹=Ÿ=  =£¿ƒ=É]O=¥£ö=kÏL=j/==s`=z!™=0,=pD²=‹£v=H¶P=Eœ=Z=.={¡=—ó!=žÍ=y@#=žYX==ˆ²£=“õà=†}2=bÁ&=—ß=¦7Ï=¶^œ=y˜É=‹ ã=šÿ{=¿$Þ=ˆ!¢=e°õ=‡==šgh=˜™#=†N…=Ì=ž=•¡Á=¢lP=¾¬¿=á$v>0W>bo¼>‡5W>•2>‰ˆ»>r¸f>-0P>aaž>€ì>‘Ÿî>Œuð>€ýù>`q>.ÿ«>¬¢=õœ†=„`>=‰%Ô=‹,¡=s9z=‚Gc=~D(=Vï=V]=?aL="‹U=®Áu=¨¯y=‰ÅÚ=” -=Œ7=4=Xãð=z„¦=}•a=(G@=…ø|=ŒñZ=–A—=h¾G=xã =•ÝP=~|=q¶‹=c/(=rm==‚«š=ŒÃ=€.j=€uï=ffC=ÿ=C>‘=Pfë=Sâ<=¯ïŽ=“¡w=ydŸ=x*²=>ÚÉ=LûD=ÀV,=§1=£GÝ=†Rà=Á³)=άƒ=ÎFÖ=Ц˜=ß~==b=“É)= =Ì=¨V!=°I•=8=:#•=‘~x=°Àù=¾‘~=Ô:U=ŸÌW=²w=¶L€=5ý=3Ó_=9s¾=KÓ=6|=Ž‚<=‚¯=‚ò=’Q‰=“»<‡ =Yö}=€;ê=^|,=ˆœ˜=L&=šm=_„=Wè´=k$=ù =šFB=•ÿ€=Á‘=ªdN=¬âï=¿R=‰¾=›™s=ª84=’š=žÄr=žÍÀ=“{=Ú“=£*c=£•=°Ù¿=£º/=–Áb=¢­þ=³Q=ÉBÝ=Û·Ë=î}T=á[·=¿·P>¯ >,Óõ>BsA>„~]>Ê„·?Ku ?ÕR˜@Ü–=AÄ}AS‚AÓ‹@Á[ð@w©?Ca{>Þ¥â>•¸ˆ>g-à>3cÅ>æj>o/> -ƒ=ÕtC=¹à=Õ"®=ÔÒR=ÂŒ&=¨Ë}=šQÀ=±¿==¿Ô=<<=vÁˆ=m a=’Ì<=¯™=§8ý=Š®<×è=R2Z=‡!·=v Ë=Œ=ŸÄ©=Ç6=l l=†Y<=‡¯=gËq=À@<ë Z<¯ ¶=Žý -=˜]0=˜h=„ùO=J/Ô=€U=Ø9=n‘=‹HŠ= =‹³¦=ŽÜ“=’Zó=­7s=º ¢=œxÝ=TeÌ=›hx=©V=¨Z==’ƒÅ=†y=hÓt=:Ø=«ÈØ=žD=Y 2=&2R==‘ ÿ=q ª=žüX=¨6ã=§!¬= A›=E%Î=Ze½=]‚j=[á’=[à¹=W€=©@ê=¡íÿ=”u¬=Š©=£­ë=›ÃW=³ž=ªfj=t9l=b)Z=œæù=‚Ô=aÍ2=B[=a%=–n=¨Ó=žP=†É¸=‡5K=Ž™Ù=b¶ -=Žž =›pç=â=‚‰X=¤ ”=ÈÞ=*ÿU=s(1=ˆEm=˜=Ë=ÑöA=»M{=˜ 4=UÓ%=@Ï4=Uƒ=›É¢=Žž =ƒ×v=vvÒ=w×Ô=ªZÇ=µ,ß=ž«g=Ü°=íÿ>=ä#w=£F·=½ }=»®Ï=¢åÚ=‘º¹=È’6=÷¡Â=ôIÉ=ÊAy=ê”Æ> ">a¤>tê>*=$>9+”>†Ab>¢Ñ >Åw?ëp?k?Ñèõ@@wAZ¤GAŸ1MAÇySA׬ÓA¸®ëA‘§ÚA?<¤@w%y@ÎÇ?oÓ?€:>Ù®¦>³n>–ùÕ>†s*>^Ø><äu>$¦N>‘>Fr>àV=ñHÂ=âFÊ=泚=ï+e=”[è=|K=ˆßk=ʆ=ˆ°k=Šð|=‘bl=â4=Ô}= Åa=ÀBü=|ï=|â=‚N{=œŽÿ>ÉX>Ž[•>×l ?õÍ>û¯ø>ÐÈç>ƒdé=ö¶m=Ø5*=Ä­A=«)Å=Ó^„=Ê¿w=¹Í=ªèF=µú=žÛ`=UñŽ=q4ÿ=]ä“=Y=5=l„`=né=¥ä=¡É¬=5Þ¯=‰»g=xçZ=/m=‹õî=`ä=‹š=¶qR=ñ£=»{¬> -‘Û>€/—>ÁÃ>ÎÇ >ÆA">¡@â>Tzb>j“=™…¯=µ =¯í=ª¾É=ªå¡=‚ô=“«ð=§¤ï=~¶¾=‹½=›#·=«XÃ=[Kœ=`Ùg=[çº=IÚ—=‚¢=¿wÒ=Ù%Û=™ä=f=‚(º=MWÛ==®â=Þ–Õ>wð>ÁR>>^“>I0·>;¥ð>Üâ>?‘T> >>ªÿ=ËÏ=}~˜=ª÷=Åθ=…þ;={ 8=Œ¡F=œ»ý=MŽ=3E=1fG=`]ž=²Â=‘7™=§ 7=Ãã=>!»:>¯Ü·>þh?I?èŠ>éÅ>¡ U>ÉX=VÐ7=™±[=àØ…=îÙô=lÅÒ=–4›=ÖBö=ÆmÒ=¬4Í=´-ˆ=‘Y=4·Š=]u=X+™=9Œ =ˆn=b¦V=¬Y*>]”>•«Õ>†g·>t„<>gÑa=ÿ.±=çØ[=þ_Î>-õ>eÅ>aöØ>Wº>OV>=‡>D²2>GÖƒ>-ññ>3Ï>"ñ=â@4=œ%{=š$¡=³nx=Â2‹=„E=¾<Â>™Ä>l‘®>áûì>òè ->îô>Øu>B¶=ü;æ=£îì=Ÿ;n=52=„ÆÀ=n{ã=ÜK=¤ºw=g.=lEZ=¤€=’=‘S=ƒ”/=Yl8=TÛÛ=!™¤=WÃp=¯-U=ŒÓ=g”=[¾º=uŸ=œŒå=à=Ùs=œŽ¥=Œ”=™Ë =¬È=ÄNF=´ü=j ”=Qö=yF(=4]K=]ï=• ,=ƒ=|bC=NÖ=7æ=6yÞ=6xä=„x=„Ó=kR¯=ÛP5=Á8=Ÿó;=ƒõO=¨‚ˆ=ªg -=†¨=lY{=„ý"=ã ž>ÛI>?>¢˜¬>Ë8P>Ø_ß>ØÁ–>ÎUb>§óC>„RÐ>;rÚ=´¦ò=ŠQ=« -&=ºÞS=‰=3W=„p‚=­dN=Ç©ª=„7â=ƒõ-=mÔ=·½Ï=µñj=×I¶=»¾£=‚w=ž@Ü=¹_d=µŽ=¥Ø=¶ïC=µü=­R#=»:„=«rÏ=s…™=²ãÐ> pŽ>nd;?2EP?­?í…à@¹›?æú‚?– i? [1>b ÿ>†§?±x?ƒøxƒc=ì•Ê=èe=ø"ç=Ž+ =µ½5=¯÷=’8"=j=b¾Ž=hÇá=š -=²V¬=z—=}Ä…=Zªä= &<ì ž=LŽï=Hç¸=H?=‡ˆ=ÅÔÙ=¢Úc=Žk=c·Ã=ÍV=nåî=fƒç=¥^)=¬1 =¶¨ß= =˜=©ÛJ> -+í=@¬5=„Ž$=Úű> €=â&k=æë>Y>/‡ >Rå>hV>°³ï?/­Ð?ÑDà@ÂfiA§4A?A4@õ¢¡@—Ò[@(Ä?7ù\>¿î>pä¬>7·À> 8@>Ýy>"Šû>Ý=ëY=u\"=ØH=·ñ=ÓË<=éwö=vYW=“k = ·j=±“.=­íý=ߟl=“Ð{=_.=( I=Uõ= »=cS…=¦JÝ=¨rØ=‡;g=’’L=ªÂ=Ál=•s=Ÿ—”=«2q=­Ð =OŠÛ=¥Ó=µ¶'=¹­­=¥.…=ý8=èq=ï¥==¬ÜÅ=F w=ǯÙ=‚Ò=k–C=‘Æ=¢6Q=Ø=DÒN=‚=©q=ÔÑç=:Óº½3=¡5=Þl=}(Õ<ô;\=Ãùý=‡Ñ=ªÃ=˜Ô¨=¾=­@=ÌÁ>=G'§=Yµ=ÄV<7 =_æ5=u"ü=€*ß=®p@<†Žƒ=1ëº=_›=Ñ =ü™==.;6„°s»”™Ü<Æ <Ÿñí¡<˧æ=`º=†(—=‚&’=9Ù=éÅ=;Ýþ=:!­=¡Õ=Ö£> -2÷=®G¿=:Ùùž>E2>‚/q?-¿;?ÞÁ*@$„`@BÄu@=Ûš@m?’ë>î#¶>Tí„>F‰>}=ð ò=Òä`=ÁÔ¶=Â_í=Í}=ÈLÆ=ØÊ£=àŸ8=ÿ«›>È8G?‹Z…?ôe@*”@7þ]@ëÎ?Ù.^?h1Ò>†|K=‹p?=¸:Ä=±!-=Ç„a=»Je=8µ_=,g=ƒŒ}=€Y=UôÉ=p¹<5ª*½d=¹4­=ôßö=œ?=d¨=5ÿ=®9Â=®ô³=©W…=žˆ“=W²Ñ=ψ8=bD9=€z½=i‡…;¶´;¾P =H~s<÷Ô—=f§Û=Èàu9„—Ä<™óG=±=?'Ò=†v¿=Ê/Í=É:V=ç×=çŠ'>´=O4Â= Z=¬{t=Ó! =ñb>õÀ=µÖ~=’µS=]Š8=V2j<ûâö<Öú= ¤ç=¨£>=£ c=Ú»=‡¥‘=†ëJ=D'==h‚ø=©^=‡9ä='«½=44=n¬¤=’¾%=3$=3OŸ= K1=aÒÒ=¢Ðù=¦Üh=‘Jò"ê>&k=ng¯=ƒ¨=­˜ÿ=±*=¯Û¢=°ÂÁ=Š;B=}^‹=—1I:ˆD=€Ë’=ü¶=€È=LM=—Tç=ä»S=f Û=’úÅ=ˆ©1<Õ%î=—zÐ=vì¡=‚y^=Z½á=ªÌd=³•>-êH=Τ€=Ò¹=W¢\=VPU=?õ$=·Zª=`“Ú=y;=›§Ò=¯¨÷=âæá=™ -2=Ó€=×ô‹=·§=ò¹k=[í=¼ƒÏ>$$=ËÈ=o=‚úª=ÃD¶=L’©=VU#=:X;>¹>µ =´E3=6G;=E‹=ÙÂ$> -Õ=¶Z»Íiô<äs=ŠÜS=™=Lö<…\–=‚áJ=£g}=«õ2<)ó=à%=>Åê<k=lŽB=p@˼–Ò,==¦v=Ó¸|=Ù1v=º+Ž<„­Ã='ºF=›%g=±³Ž=Ø(>7Ö=ç+æ=¨§¶<¼Ñ ¥ó>D˜v>L³>K¶+>6>D?î=ÂD==ûdÜ>&ç¢>rjÃ>Eæ3=˜©*>’x=ÑÈ’=§¦^=Õ‹ù=ëÄ=]¤ =ãÕÜ=÷{œ=ç‚™=y• <¬Àô= -HC=„H.=~UN=‚à…=®× =Íù¬=ëÇ-»Ÿ¾ =LS—=O2M<Ë–=†!,=†Êý<Ød˜=V‡ï<ºZå<‚p=®O¼=ªÁ=Ĉv=TþÂ=MI=‡¶=uO=|~å=Oâu¼Ü›^ã;<õ3À<µ[9=‡J;=—ë†=Æö;=£¯<‘xS=’é)=ÞŒ™=ØÏI=«‡=‰ ï=3µŽ= a•<ÆHÒ<¦±N=I8=„G¸=«¦<€7Å=„ 4=Íþ¸=Ss¼jm=Š=kGü=BÝ„:„R¼ÿk<²5 -;Ê\Ù<½P…=¸5=ßL=å=.RX¼´9h½;¨ß=ƒ/Õ=·ÚR=Àö?==…¼–‘¹=0ÝN=o¿ô=Aò;´§Q=7èS=&²=‚X¡=qj¼Îàa<5T<îùâ=.s8=zœe=†=2Ÿ*=ƒl:¼&:ŸÝÓ=O=}á=Å4‚=wÛ¥=DPg=LĘ»Îv„<óêÂ=7>Ê<{™l¼ä<ÕÉ.= ±™=d›9:€y誽„³¥¾Nyû¼ƒ=‡œœ=±±==‡»»­â¾>FÕ=”\辄ð½Õì´½_!½[Õ ½Y²“¾‡x-¾wnš> -™Ý=ër½Nñ¾¾à^½øˆ½Tð{½—y~½‹â<Å8<¼Í¶ß¼-áx> äÔ=R˜¾\(ü¾6"\¾VUï.g>KÄ=ÿ•L=¤ú=ëó¼<@Ár½ƒ:о˜m½›i½ `g¼‚\彇œ+¼¥¥b=µ˜».Ÿ=9=¯ÇÙ½¡=_½Í ½.Š¾Ī»™§w>¾M>kW=‘¤=&=ú>=ë߸=ÙUâ=£f2=¢]}=Š­B<µ&=>66<º[!<A™=xp´d=À‰"=‚"š=ñß1>9 =Rñm9;/ä½í_µ½ ±‘=•Ó€=z˜>%,Ž>Fô>NuŸ=)(G=J -Ø=Æ¥0=HM\:P¢–¼nÓV=ˆ3o=.G7½Ø‚ <ø4Q=î¤é=“3= ÿ=|¢ð=™ œ½FÀ½Äº—½kž½&7~½ÅÊ|½Ó" ½‘¼µ½®ˆÚ½Aþç<©´=ˆ<í²àº½Ã<°V,¼Çâ¸=„{=ÃÊ»j²G¼bðD½…d$<¯(=¼Çd=feQ¼ûû<Ö=‹W=ížè=Ník¼æÜí<še=OØ=<]H=‚h¼´ =+ B>Níó>R=wÖ?¼¾™Ñ¼òv²¼9kºê_½\þ\½ ¤\=XºD=NÅ =¢k=@Ú¼¨X½ï5¼ªœK»(ÐÛ¼óñ‰½¡—,¼î‘ù<»›ùN—<§j<»/©=²*=¡ÉM=‰ç*=ÄÎ=àt¹=“ Í=c_'=´ ¸=Èg&=ç­W=îWë> Ø>_„>/H¢=ÿ¯T=¢f³=“¯Ê=µ]Í=²ôÿ=3ÿå=!YH=8…û<¯»=QÞè=˜ˆt> ’a>±*=µºb=VK<µìã=~“¬=¥9‰=u}Ó=N`á= <¥a;ï©p<ÌD=5Õà=?=hÒê=¼þ=Üt0=wmÿ=†\\<âcÓ=5b^=“gç>ðC> “a=ÆÓ=&b=+²=Fé=‘ä=uìì= Ðj= -Ä=uòv=“S‰=xí¨=Ë"M=©°$=‚fb=E”ˆ= ¦i;h˜Þ;è‘i½i±Þ¼¨ê=ç¸=¯lÖ=Ž±Ä<¼­ƒŒR> /y=‰K=ˆXï=‡!Q=/¸<Ý$Â=bØ<æ°"=7ɘ=e‹Û=€)‚=µt=åpç=° =–ip=k"=_Z$=¹­<é¢<Óhn=qKŸ=‹v)<Ð>='T¸=¨†¦=žR¸=„Nq=?ÿ= >ÒÂ>÷s>ò_>W>F[>H›k>RJ>¦>‡”1>Ce>2n‚>.öÈ>2ÞÒ>:–w>«‚=¤eN=ÇV@=Û`è=ó2¹=´v<ïFü<ÎÊr<ÐÝC=DR=£òx=¿]O=ÝÆŽ>#ÙU>›=Ì÷(=ôÄn>#Í=b=rd­=²í–=Á.=ܪ -=Qh<”†E=ˆr}= 'v= [=µÆÒ=º/=UÒ±<ìEb=gw„=Œ9V>Í=öL=½_=¼îe=Ï6T=Hb5=þ=Íë=AÔÿ=®{Q=¦„¦=ÊB=°kê=Â’w=Ú–I=ãŒ*=êTŽ=¶¶\=`‡¡=º¤=M>=`< =;mº="3\=)y=ÐH=½ÑÑ>¡x=¹ÛÜ=¦¡=†×=ÊX>>*†w>G’O>_Bý>0Û1>'è>>gZC>Gj=ñmm>,DØ>X¯>‚¤î>Šìà>Ž&n>•/¢>¬JX>ë ?¶t?¥Á:?ÊŠ!@p2@z³Î@ˆá@yÑ@`f›@|+@ƒ#k@…8;@v¥Þ@1Aå?èVÐ?8F>éÜ>±>ª>›û%>žŽ>µg >¨¤>—å>ÂR>Óë«>â±>ïÛ£? ¥?Ã;?(V?O~“?b?˜$JBNb5BrrBYÐìB;TzAàÈóA¬x@™ZÚ@_:E?ó^"?È›r?“—!?iò?M¹t?"|X?… >û>>îv>Þ^Ë>£0è>‹5>z2€>q~t>]tÒ>Pò>@¯Û>-[û>&(g>%ª0>$¨W>%$|>,9j>4º>öT> -o˜=ÿæ]=Û¼³=nÄ=–`È=²áˆ=˱d=Ñà¨=ì)p=Õ"ä=š=s#E=>{l=Ò-©=ߊÒ;eqí<d‚<‘ é=mÁƒ=±6ž=—7=˜ÿC=Ç›Œ=²Äÿ=0J=3?<äoÃ<ð€í<Õ¥I;úë<ë´ =‘Ò=~¡›=~7p<åmR<è€=œ=‹·@=ÓÉÈ=›L·=…Ò'=[­°=jÛ=Š8Õ=§W=Á“Q=™¶.=‘º6=ÆÞñ=­ À=i¨='Ê9<ð•=è^=˜®=áìI=Ì(¬=¨‡¼=©eð=©©-=î4=ëÓB=À%>û3>VDê?^’? ×Ü?’ (?“¼á?•<¾?a”?å´>—ë>aár>Îå?x?…–ã?ìâ?˜¦?Vþ¿?4á>a >,–¬=ÄÉ=ǵ=Ã_Æ=tX=r'Ó=vk=‘;ª=©žÎ=×€<âG6=uÁN=fa6=H6=Jð´=O3®= =Ž‰\=oô=‚°ü=”QÑ=¤‹^=«2§=¬ö/=³ò¢=ÁóM=µr=«ŒÓ=â·=î-=ë„¿=úá‹> ’_>!Oì>-ÂÞ>-÷><_>~'À>q¢C>dA6>ŽLÎ>šQ´>ö†¶?;GW?©{¦@m9d@®•úAÞ5AËA4U@ëè@¥úßAAe"AH\rAAE×A)â?@Ü¥Ý@o²b?£ñ?4££>ß -D>ÎAó>³P>£Í>QôÏ>Hnx>@ ->´ƒ=éñ¼=âìt=çѧ=ÛÜØ=Õ$…=ΛO=³ -]=¤¢å=¶ö¯=­ µ=e†=—Ê=Œ]R=Œ6â=Á=´ò=œ =z{=¥«P=³¹=s«Ò=MF=ˆïÆ=¼sT=ä=Øt=Õ‡þ=ŠÃ@=›o=°r´=U+I=.û=…T¾=’å”=±pV=yñ=6¾o=P®J=H‘Ž=#ãX=8Z…=VÜ’=x -C=‰a)=…>b=PPô<©@„<Ö /=«Ö=O\–=B±=¿ =s½n=²*Ï=´w=ŸhB<ªÕÁ=8ô9=¹fÄ=ê¼>ÿ>ÏT> VŒ>>4yŠ>Cr6=ö‹=Ô§=Ì×^=åÕ¸=ü,>5¢>)M>SHÎ>Hg>+ªà=å\£=›I=´…¢=½}‚=ò ²=¹Á=†1Æ¿h=ä¥F=~m=43H<×e]=)ð=.Ù=žÊñ=€Ý¨=Væb=YFH=MÎ=…¡Š= ë(;)gô=€‰™=©:ç=ö€J=âü=¾½=«˜¿=ž¡Ä=ˆ=ªGj=í2=ý™o>©*=îþ"=áp$=»ÕB=ò Þ>­M>I¿6>“8Ï?gáÀ??¹ L?«Ä˜?£L1?©>Ïl=Óm> &>7EQ>T*>¡åY?:?|ñ2?£Úw?¿”¡?»WV?•T­?VЬ?8»>Š°…>PyC>Ê>(uæ>_>´Þ­>ÍV>îùÇ>à>ÎÝ]>`B¸=ÿ+=ÚÖ=¬Õ=ÈI=F==d›È=Írd=Ç’=¯‡ü=¥ó£=¤ç=×ÍS=ÊÕ=m<ë=i†Ÿ=SÊ=–î=œÐÚ=ˆIÂ=‰-ó=„rÌ=—f=Ÿ Ô=·&ª=Äi_=Ò=›»Ö=”I=¼×p=…·o<Ê¥=inš=”Ë=èÒ=Ö‡ù=º8=”ݦ=|g=‰mÖ=žò×=¿]x=ìIÆ>¨¶=~ð=Œlº=Ê=Õ§=Ó„…>(þ†>3zˆ>2ûï>‚OÛ>¤lÔ?\¶?¸0Y@e!Þ@mh@@tçu@B»Á@"šÝ?:7Á?x>”Œµ>`‘°>Qæ>cÌ>‡‘Ô>¤N?^Š’?¤I@[+§@c&K@nÚ@A5@&"°?&C;>ñÄ¿>m¢ï> K=Ö^¼=ïÇ,=ôcY=àÊX=Ó^!=̘S>JO=ì³=¶R=¿Ð¯=Ì÷«=ÌÐó=Äa7=¦ÄÃ=˜š©=Ÿ9‚=¢ˆ‚=®¹E=ÊÊý=Ñß=ÊŽ=ˆw8=Ž=… =²)˜=µê=k•=^—P=`b=­·­=ĵ³=‚á=—ž=¤°6=Ìl=ߊ¦=Šß<=»S> >=íÔó=Ý<=±âX=Ñ>dû=Ãè£=§´´=z®œ=•¯M=°šÆ=€¨ì=dÈ×=Æàñ=­û™=”˜ë=·k=»‘=æO=Ò Í=¸\s=¤ZÒ=¢ƒ=º0+=ÚÝ=ò3÷=±’-=­¸ò=Ć6=ìæ> ÃÕ>Ff>Á™>å–x?z¢ˆ?Ä; @éH@ÙÇ?âpå?”/Ð?ß~>’öç>\ê=õÑ>)³>Q5õ>Þh>.ø©>t¿´>_'¹>N»g>|D>‰Ÿ[>¯‡?·¸?$3ˆ?(—?A(³?võf?Êiå?ö!¶@&v@Á1@I?¿•?”ÿ?•Â§?ˆ ?f8ò?ˆ¿?ŽŽ?ˆ·«?Š0â?Œ$?«7?©?†ºY?`\?tiž?&Þ ?ºo?'Z2? -…>ä“‘>åÆM>åÊØ>à›>Ö¬×>Ϧÿ>Ø´*>ÎYö>«mH>¨Û¾>¢‘?>pžñ>v6G>yY(>ðð=î6^=y=NT¿=—³Í=™õ%=¡ê,=l¨=‰¶N=–Ÿ5>Z6>'€–>X*>d˜>f‡ó>Kyx>(íx=ª‘à=‘<=‡B=½{„=¢»á=e³=„›½=~3‹=röK=l8E=LúÓ=ŒÕì=‡áá=]n=eÈw=_µÓ>ŒF> V>H>BB”>q³³> tK=åoâ=§­ý=•Ë=“EY>ƒ>Ÿ->€!=Ǿú=Ê{š=¯Ñ=¯lÇ=°&•>\&>|ˆ==Ý8=t˜7=›ìÖ=™„=Š-‘=2ü=TÒu=Z\=?Gd=€õµ=§¬å=l=W:ñ=ŒËV=˜l6=Ÿ+`=hÞè=Œ“=Ðu=j•÷<¼™E=pj=ƒ¬=œÞë>ç>\A=ÌÌÙ=õ%Â>$Ï> "æ>°ß>U÷©>E÷¶>9‹û=Ö–A>½Ã><È>6 _>6à®>%WŒ=÷?=8¤=ݼr=ÏÞ/=FNh=Tsí=|?)=]]=W2<Ñm`<üÓ¹=1¼N=z½=‘²=[rG=±¬=Ìcœ>’:=ý/¾=íUŽ> -l&>`C>«+=ú›¨=û¢M>KE>[} ->eAQ>j}›>eàµ>5…V>à¯=Ðíª=ɱ¦=ÑW9=¹‡©=ϼ=ÓB=‚ÀÜ=»dš=ö.‡=ì2Ê=æ)I=ÂÇ&=´É=§Ÿé=€±”=ã<=̺˜=xÈ×>R>CWÞ>¹7ó?:?PW,?}‹E?‚¬0?4¢>÷Kê>†™Ç>8¸=Ä5¦=®ÛX=›S”=ªÇì=éï^>û>-ù>p’> &¢>_Ñ)>·$x>ãâ†>ÒRV>¾BÒ>ÇÃ>:Š>™>F‰|>Ô¥?ùå?†Ge?‰WÚ?‚<?,fæ>÷òò>Qà¸>0¨õ=ðlÔ=„•,=ŽÙa=SìE=Sf==žús=ÅH/> —0=ÈÆÍ=Èr<=æ›ý=×Fõ=À1=«ß=—9,=m;‹=klæ=‰)Î=À„=Í*Ÿ=ÓÆ">S#Â>}õì>ªXa>±Ï`>ž#e> å>?Ï> ÉW=QÕA=:îY=‘á!=Uâ¿=Q¡o=µQã=¥$=ÃÛÀ=\¡ø=RÆr=¬öz=§£/=†øk=* ,=Œîé=²w"=g‚q=™[É=ðÅm=±ºÝ=šê|=ˆêd=¶Í=”[Ÿ=„¶ê=‚‚­=‚óú=ÑGy=ÎŒ1=d½t=%H= ¦=•´¸=¨Õê=¶U=Ž|=ŒS=°”>&Á>`öÞ>ó•>ù1>ùÒÑ>Ìδ>¦ZI=Ϊg=Ê6=¸4=Íý!=­çi=†¼=‹'©=œU-=ÝŠ¿={“=.,X=y,‹=t“è=~ϵ=‘=‘MŽ=¬°V=Ò³f=ûƒ=Ã/õ= Ïû=•Î“=[#=kÛK={½=Ä!=Â;6=½p)=š-=zE=¦¨D=” -=…ûw=lff=t&7=Ÿ™g=“™=ŒVŒ=»c=‘O=:Ðà==*=OS9=mp=—Ã]=§çh=®&=õì‡>Ý=†¾l=½">$ªQ>H|b>aô>»h¬>ÆŒ>Ãê>×B>Vø >N=¨âÍ=´ÈÔ=ÅÃZ=w#¥==è¯=Ñ)Ô=âïd=áv„=V;&=¤}b=ýT˜=§…¯=•=œU9=b=fïC=—u›=w\)=PDô=M§ð=c·=‹ÿ<ðb=$±—=”Z=mŸË=':ø=4%M=¡¬Ù=ìA1=Á2€=¶*/=m0f=Ie=^yù=‡âª=SÔ¼=;¸=Œ¯=»lù=ì^¨=•À»=ˆ=+Ê=¨Íì=ÙÇ€=½Ì=šàw=O³ó=?Ü=™s=Áê =¼ Û=œ™Ø=Baõ= ÿ=¥‰=µ÷Þ=•F†=i®Ì9ØMù<Ïñy=J=”Iø=¤Ø=¸@Ý<ס<˜*Ü=]oE=‚Î=ŸË=»”õ=€ÎÆ=fž=v¡½=¨©=r™=Íä¿=ô=ö~ž=­Â»=“„°=õH(=©r=`5=˜AX=æ‰=C*=³ÜÍ=²6<=€ µ=•»ë=®X=á©Ó=§?=egj=Ž+Ë=d€¶=Jí#=0`#=+ƒt=^æì=)R’=cø"=¿–{=Ê ¡=Óž=¼Ìû=«Mç=™f)=’î=[H0=£H=r{Z=r4{={ÜÌ={ç=&d=…Z=IZb=4”=«[=£îÐ=“=.Œï=iw2=“ü´=•ñÐ=˜Üh= íˆ=\!O=a—¹=»=([=¯†\=ªó=Œ‰=gØB=Jë=Kx£=KÅ©=M¯Í=x“Ü=¢‡Ï=„-¬=zdß=˜°=Šë–=n׸<¸˜<î=" =ÆJñ=Ä#ê=£Äø<¥î–=A¤·=Éã­=Î :=É@w=â«%=õ{H=ß•˜=ѳ1=ŸŒL=“¡=M¬;=kÂý=s{=¦—=“ö·=Yåí=Yßf=q*¨=Š‰U> Î*>;#>J¤>6}>"'> Mû=Æx£=©Eå=“Ï?=ƒ¯‡=„N3=€´=ŽkŽ=™Nr=³-t=·¨+=¸ØY=éAÍ=ݺ=¿«”=ZlC='Ó=K4f=¯%@=Ô­O=Œ†=ÕËŠ=ì#=ÀUP=áwÿ=ó¹>ãÉ=æšö=Ž=I=œ`=Äãg=ßϸ>iÖ>9B >Š(j>Ø“>”¯d>™¢V>Š¨3>Hß>=ä> }š>X¨ã>LÀˆ>Tw>™ŽÅ>¤~û>¬Ÿ>ÛÜ¢?%)?%¥¿?Ë–@i/@ÚªA<4»A\…èA¸˜A[¶žA;òùA«!@ƒ<Œ@ó4?E‚?¦ >ðvZ>½0ú>˜DZ>í>Rªí>\‚z>[cà>E–è>S|ö>b -ñ>W¶>„h >¦þ>Ûg>ÚÁU>ÒxA>iŸ>C.×>•=¯FH=¹ˆ> ÿ/=ÚP3=à„u>–Ø=ÊÅL=¢§B=¬ d=ÒƒX=éµ—=¹É¤=BEË=HÞî=¯4m=Zð×<×{>=•wu=É8ë=Úžã> ò•=ß\Þ=§i=ȉË=ʆ=¢ËC=Õ,É=²Zä=.¥Â=Óe =ÏÁl=ÁÅœ=’t¤=ŸT@=á[õ=†°b=œMË=ÄÝj=¯À=‚§ +=ßò‰=¼T=Pÿ:=bI=‰Iï=$Òð=™è=éô=‘?„=©–=¾ŽC=óϸ=×eÙ= Ü =˜ÉÝ=±ð -=ðï¼=¢÷=¨=ÎÔk=º%˜=°Mg=±s=ž±=„J÷=VGÄ=)#)=JK=’¸¼=¬¬Â=š8~=Œ2Á=N“=W;£ç=œuZ=¦^ü=«l—=©›Ü=‡–Ÿ<ô³«=Í`=¶Ÿp=cS<ìÎ<ß=f’)=»º=¦¾=iêù=¾§{=ÑÌg=çV=œï=¨&p=¾~^>4=ñò3=”o'=·÷I=²L¯=ä§<=¹Éá=•{ø=sY=MŒ…=R¹x=ª¯=“¤=ŸEf=æG¯=ÈG=°Ïé=ŒÜ¡=¹=ê¶s>ê—=àÔ=Íšò=°TÔ=Á´{=ÂÊCGY=ú¶o=¾ìz=…‚¡=Gô=öR=ƒ¤Å=Çë~=ýñ=Æs”=ŽŒª=X³¤=©½o=À…-=µVÄ=I€‚=¦®Þ=ÃZñ=¼æš=c;=·R >#±’=ãî<=¼ãþ=ʯ=¯½Û=0Lö¼@˜=æ>=Ê'=†á`=ŒA¸=‹]0=Bs=‚å=ñ‘=!Òš=Å=_=1Qæ=ˆY.=jd=:¶=Uñº=®v=¢)È=Ü=B C=&¤p<ŸÛ=3±õ=IÜw<ú˜<†<=-+=|¬c=¶„6=u†»¾,=‹ïþ= ==Žñ<؇†=I2s=Š7a=³ái=é9=äˆ=]œK=a˘=KVB=%±½;{­£=e±Í=íºû>'½y>°å>ó>]=÷P½=¹ §=O¡S=:÷=ˆ-=ê¼ß> -°>1Öè>NWI>kœ>>£Ÿ>?Ðæ> ¶Ô=ÐçÀ=´#=cb=Çxl=ò\(>×ü=;=¯=a{=)_¡=¶w=à/Å>tp>#n=ø—¶=çÕF>E„=½ÃÊ=¹Ò=¹-=¼þ­=¿&Œ=¼ž =Ä=šå[=š®=þÑn=Ë1÷=³‘=‹»®(v˜=”¶=’%L=¢·=’»«=ÛQ—=û2i=½Øƒ=žà=˜½ª=¼¨„=wöª=Þmá>#ƒµ> L=þø=ÀáK=-6Ë=¤QB=ÝDÔ>&‹–=±ïO=ñŠ>WÑ> a¼=ð®>!æ>_˜g>Fw>oü¤>¬õ1>´’P>º 6>Ä¢Á?£¬?ˆÇ?&jö?\ØB?‹@?§!*?Ιf@J·˜@ôS3AWœÐBýÿB%’iB?xBI B'!§B !AAÜ^AXŸ@ð·@(’x?Ñ ?rq?{Ìø?EãH?+ÆÈBM>¹Çl>¶î>¯µ°>–Ÿ>€>B9ö>O1m>@s > >-Ÿ°>@„q>CÓ\>€">!ž>9&À>RåÑ>Àh=ðK=#ø=u·¾=Ÿœß=š(ç< 1@=<|´=^S =7©*=º~{=×Z=ö°y=û[P>"é">IÇ>s5¦=ÊKV=¾÷=å·²=†á€=îÇ>¬> óþ=qaÞ=Sñ›=ξ=ÊW:=wM1=çw=Ë m=㧉=Ϙ=ƒãí>„V>€=á,t=‘…4=§(´=‹I·<^›È=Ž”=ÃFŒ=íˆ=«<0=1Ù­=¤|=éð=µMæ=†EY<õ°u=@5a=œˆó=Ìñd=ŽÉ#=Û1(=ï16=ÈtÉ=Êø=¬×'==¤ý¥=Õü"=çø²=ÇD=Š`=”‹=­¶ï=ƒH=ÉsU=¸lû=—"=XRê=Ç#gþd=ÀxY=¨­Á=¨xé=LV%= Óë=Å=ɯ\=’ì=­—Ú=ùs°>[>4=ÿhÔ=«~Â=ŒÃÍ=†·c=ªÒ=T„¸=› z=Ê2=劸=‰­ =©=4=³¢º= -—=8ìô=?3‰=J%?=¢ìt=âÄÌ=ùšÝ=®ÂÕ=¦ÄA=¤ä8=¶A=®fR=®hs=®<=§Ðj=¨ö/=Dƒ-=Èí=¡ =;ÐG=Ž¡=Ù'=„}¼=1Ýê<þ¬Å<ÞC=Úçš=¹Æ=bÍ¿=Œd=š%â=£±=¤Ö>J.Â>L™P>;¨Å=ú®÷>)ä=éåD=„e>!kT>\¢³>„¹*>™!2>ó¢ >ßzÜ>½)•>t=&=öö=˜Æƒ=?§=Y‡‡=£0¥=ÀyÆ=Ê´>+½à>Ba×>2&Ó=¸þd>JI=âk=€þO=¨1Í=ŽŠ=‰C=“ÔÎ=RîŽ=°h–=¸1¶=Vßu=ü©=f[=ŽH=+=† =yký=[ð>=Š7{=ZŒÌ=kþ=†@$=¤¾o=§¡é=¦n·=¦ô>°x>Ð?í«?‚“#?›ö·?š]Ý?‹›3?µõ>™ý«>'jÃ>Q= ìE=~%Ô=£ÀE=žñ¬=ã5Ñ> σ>aŽh?  Ÿ?j‰Ø?…4¦?ˆƒû?ctD?fU>–þ’>»>·«>S¾h><­d=tÛÁ=žºÀ=†e|=Rð~=&_=“F+=¯b=Õ³ê>÷Ì=»ÞŠ=zÜ=]¹> <Á=KeJ=/!=q6c=eH=³»=înŽ>DI=€Ë8=zªÖ=pÒ¸=dSÁ=Æ£~=Åw -=£3¶=”º;ÖÖŽ<˜<ÁÔh=¡í¼=¡q =¿À5=Õ»M=•p%=æØs=´Ëö=;ïö=‡öz=§UJ=‚rÑ<ýõf=­Ü=•‚=|\m=cà•<“&=1ê©=œm=öIþ=yHz=l•=‰»&=¾=ÎZ=œ›Ò=^68=)§©¼ÓVE= -•B=–i=*V=É Þ=×ZR=Å`o=‚—I=Ƙ§=–˜ó=Dmç==å²=4E=¸Y=¸G„=c¶=ŸÉÌ=”ØÆ=|ÀW=pL8=°J×=³šö=—–y<žþl=ž 0=™WH=„=Ï)U=0î*<ëú»<ÓF;¾B =ˆ|)=—Àñ=Ëš=Ú! ={‰Î=¾hæ> \b=³›ø=!÷Š=Œ=:ú“=Ô »UªÌ<¬«B=˜U=¼ñA=ºV =ç‹;=Ýú<'³=ÐÉÔ=Ï÷¦=Çk =ëA/>,Ý×>'µ–>$ª0>5lº>t8>2ž>Vú(>uƒ°>—‚r>§ßö>Ô/0??©u?Øõ\?ùVB@°?ëÏà?ÌÝ@á@…2AeöàAšqtA¥ºAŸVÓA…ˆA Ìz@‡JÜ?¶ ¨?U´? ¢>Æ\>™¥õ>³2l>“¦">°>‚`>c¡ˆ>ý>;§2>j¦Î>}”b?/ Ê?—@?¸—?¾cì?²ƒ?k4?C>fMÝ>Tø_>‚t¥>–0>–êê>cÀ¥>*I=¥6=NÂÇ=ÊáJ=zx&=¬s=¾Õ=¥"B>¤Ð=§È=K1½=1ý=ù=èô=<O=Œ—ßÊ5=õÿ;=˜×=Ë“¿=¨r"=ët–>#ÅH=ú`%=Ù]> 6ê>)Û×>*>3>d‘=Ê­î=É_°>ÆK;?g^=g,ß=¿(=åõ=n›Y=«¢X=«9=šo=ž•Ì>jÆ> Ú=öN„=œq£=+Ì=¬E=µõ·=±m¨>¨]=mÖó="~Þ= -Ã^=‚G=ÐÍJ>*H>x;=Ω“=6ç>Ðg>1^·>-«=vöÄ=j‡={Ö¦=­æÔ>ÙE=ÙN>Š<>Îa‘?î?.$¬?–¡?s%>ÄZ¤>M6|>8–¶>ÁC>Õ†>ð¦=3„:¬ ‰=9*=¡—&=}¹@> -ì»=ú˜=êŠþ=èÌö> -A7>pBS>NS^>%uÑ>&ì>m±:>8¥¦>!{=»éz=¼¶=þMa=ï=V=·¢C=¹Ÿo=RlJ=Æ=x_®¼…˜=C'Á=®¾Ò=Ï^ö=ÔLš> =ðÓ=Îz=ÀYª=¡àºbY÷=§u+=š¥˜=ƒ=–…=Qôø=£Ÿ>Í >Ü‘=» \=ö’¨=·¨{=Ð"Ÿ=ÉG[>û@=|»€<(.Ë<ÏOÉ=Ã|Ã=“¥x=¢§=¿lJ=ÐÆD=?ðY=‡ñü>=t«½Ž1> 2I=¡Hà=]n¨=;T=ÿ­=®v–= ¢=H®ì=I¤=9¾o=ä‹=Ò;=œ2‰=àï» ÌÌ=Þ‚-=Ä^Ó=‡î`= $ž=–_Ä=³ð{=Äi.=Ðïö=éIò=>j?£¶=ØÚ==¯çh=GB=+Ð*=îY=Nb=Ó(-<º¼ÆMÒ¼½×§<Ã~j<ŒÇ•<Û5`== >¨å=Ý(=“-ÍW±=øÞy;‘–=Hþz= C1<ír<š(½Ägo¼ëFÕ=W\*=¬V<(º£=Õ:â<¦¬P=Éj:>(jù=½Ž¥½—@çÀ/>ý=¿#=#¡Å=ãµ -<‘”=¬à¥>fv=³áÖ=x½†³F<Ô_y=§›1>9>EÍ¥¼Ù‰§==ªü‰=ƒiG=¹²Ä=]ì=Ìvu=ü:â>lì>xê=½Ñæ½ _à=Ù|=²ÿ>¸z>s={÷ -=üÑ=*d=ª(L=€¸Å=Côj=œæ¦=ç/;=ôœ/=|=‡Â=Ù•k=Ï7=¶AÕ=O‹=t\Á=;|Y=ÝèÓ>óN>= i(=¼«[=°"ƒ=œ.ø=í¸É=²RŽ<\#’=ÇQú=·„m=‹i‡>7}Ò>L?=¬HO>³QÇ>ÐÉ¢>¿)f?’ã>ÖmR>ˆøƒ>L„>J܆>17¶=÷Î4=’;p>&>'81>9ëX>†y]>NM>R¸>qëí>·;J?Å?OÀw?b9?«{Ö?¹ªÍ?³€}?ž»ž?v—>?/à?-Ç+?C×/?lâ?ž&?ø¼Í@Žö£AI›ûA¶¼œAùn²AýôsAéJeAÑÝ™AÒCNAçÑ[Bú0AòMyAÅÔ^A~Ç@î@Äs?­–™?m?6«?(Ñ%?!Í?™o?Sâ>Ä&ô>±ÎÅ>±9´>“vk>)H+>A{>T+³>I·>4>H†>@¶°=²|=†¿k=üÍ=¾h³=û°N>ôÖ>FHª>F’>Ž=뺘<žÕ”>8Y=F§>>øÖ=4<¯c¡>%æ>Pì=êÜ=g‰=@“{=:‡½"íø)"ª>Øy=m‹R=Ù¤->~£=‚ÇÌ=ßÛ±=¾Eâ=Áø=t>£V>´c=‚£h¼)5A½ˆrë=E¨Œ=2‹å»qàe=¦`Î=“íï=‰KÒº¨ºÇ=ðX=˜×æ=·¨=¬Ýn=á¿â=2±»<î9=ã6Ÿ;Œ"—<ûFº=Š¿¦= õú= ä=WNc<Ôá¡=Ð,–=–ò=ȳx=íVc=i=ìW=MÕ=Žs=K=æŒÁ=ß#K=î¨P=°÷…¼‰½`;Šn.;¡§%=[Kˆ=˳—>¤Á=¯kö<ž¿|=\Û -=jR¼Ï$‡<åh¼?å‹;—r”½¨±½NOb¼þÜO=· >åµ”@8 5?A Ƚ \¯¼ñÓ¾˜¤6¿ ·$¾‡q¾OÓ¾üûÝ¿½á½ÎA°=< ½©Â%¾_›ü¾§ð×¾‹À)¾_¥Ö½Iôå=Ãá=6%½üFF<ÑW«=5 ·= 7>+Àù½9¹¾2¬`½øƾ½÷db½›é=¿Sï=ö¬7½‹·æ#¯„½†µ²¾fV½<h=òIt½êu½VÆž=¼J»òÖнà_½ ß½°²á<€Èè=¼V=¿æÇ=œdV½ Ãm»<Þv=¼øŽ<>.½Õ{l½Ô©B¾9( ¾\¾Zu<ý!>…ÉÆ=plw…=½X?>ë>|> ?½=ëJ_¾fµ¾vÜë¼X>rå>0€>3¤><"ç=ƒWQ=ógô=ºv =:ཆS´¾f¼°™Ð>'…Ç>+%=“Hã½p”нYôì½P½òsÿ=eË>$ÿ¥=Â"Z¼ t½Ì½Œ¼7Ÿ\=…&ñ¼Âb#¾3T9½’ -î<”"·<ÎM=ö<+d}¾¾ ¾1ʾl+,¾2Eñ»Ä¢á½¹Dx¾XA¾t-¾Å(½Gyu=¹Áw=$<½/ꓼJs·½¬<½W·=Íó<‡¦<ŠÇD=l½-ÝÏ=$(=æúc>0–¾>:ê]_)º>‚›A>byô>-ë+½…¡9½’½¶=´ð<0 X½ -š<9À½bÚ$½;ƶ<À <{ô=†Më½(<‚B>o>Ô=ûèœ=#µï=j€y= ’ -=¢ob=äûô<¼D‘<&m¾> Ɉ=ù6=ßi.=ó:Œ>1 =çM\=…ú¾OXÜ>;}¡> œÇ=¸;Y¼îrj<=ù^¼B¼Ð: ä5=Á=>eÈ>;ÉÏ> n>,†>!_V>ç*<ü9Â=Oš>)aÖ<¡ãù½Se0º…û»êþB9 ¯=eaŠ>$E³>8f®=àd†=5 ¶<œµ³=¤8p>†ä=ÈŒY= 1=¼™#<ÆV#>J‘Z>>õ˜>+_>:½=£Àª=áÉ7=˜‰ý=ØI“>2Óa>5õ=Èe½P[õ½?Z·]y<6éº=cû,<Ü…ð< Ìæ=]¢k=Jfº¼³¹Ü¼Ow=G<Ï:#=¤.ß=Âmª>É>°=÷½=ÒŸa=¯øI=Е4=ûÎz=Šw‰=€¥=ÞîÇ> -[é>J=ü«-> -ï>NÌ#>Pú>®> ]=¸±Î=Æë=Tý=@܃;ãÍí=_G=¬ãò> H^>Ïø>Uå>C©Ü> ¡>0U>EÄÉ>b7â>]EX»­v~»3E7=Þc =ûÚÎ=ùZ>TvE>‰®q>±ƒª>²/ã>Ä>ÙÛ½>ýõ'?ô—??8¸…?XH?•ß›?®vp@}'Ó@·wA‰DýA˜äiA¸C¥A¡ÃEA‚ (A û@x‰\@ˆŠ?å²7@]8’@šÇ›A,ˆïA69¬AE˜¾A ®¿A—Î@UZé?Ñcn?C/±? —>ùû¡>ï†{>Ù¯€>«n >uòn>AŠ¤>Rª+=ôºD=¾ .>uÅ…>bm‡> Ö»>û)>GQ=ð%O>E>L¶l>H^ñ>§q>7ê>r¾>e¨{>\ì>]Ðð>Vçz>Tý<>MäE>Dî>Se|>k.¥>uŠÁ>}’r>} ¤>|õ? ŸJ?$©Y?mÖ¨?e^Î?A°/??¥??X5?$~Ô?¨˜?¶§?&˜Ó?d" ?“AX?ôº}@¡é~A "ùATcÿA{ÓƒA€ BA|vA= -A&:ú@Ñâœ@¬Îe@‚@¶@1 @Š?~-?uBí?V¾j?TÐU?OƒÓ?m´Þ?„©Z?ŸÒf?­9’@˜%@BÚ˜AO)Aas¼AáæŽAú¾B©ØAÚAÂIA \ô@Ï5¿?ìÿî?ÍŒ’?ø?cE?k9ö?4Z£? 1?&ýR?%¶6?D?& -?:û,?kj9?‡‰:@^@/|<@ζÕ@å!?A„kA õ@þB.@±AK@„j?ÎóÛ?Œá\?f©g?çd?çÙ @>3&@‰$@¨D:@¶›õ@‰p<@wc+?Ƶq?™‡x>ãJ#>п[>ÇòŠ>šhf>†>ž¦>y>@Û¹>c{L>…Ëí>w‚>oÚ{>cò>d‚¿>ìâ?!WÐ?‘C?Ìi@X@. o@A*Æ@(ý:@ð*?×Ú?¨ªM?d>¥ =ƪ>1>@í>í>j=ÂtV=û‹¯>#h!>f&> š§=@WA=îà=T\·=ƒŸã=¿ß9=ˆ…å=J˜¼= «^<èõq>Êþ=÷ßü=O¬Ô=“¥†=ãÓB=Ͻù=½ÖÀ=³^©=¶¸=Oàl=™¼> VÔ=í¤õ=Ã1%=½Sæ=¾#‚=¸”=¾pß=¢ä)=¼j=î=ÉÊ =¹4-=›yg= •ƒ>=éש<ÞE =I»x=‹¡&=Tñf=?ƒe=Ù§s=ä¿>ai>Ho7>é¡>@¢6>ù=ýX=÷2=ѶÍ=§R0=5‡=Ïx>)k={î=;±ƒ=Î=¿hš=“â]=ŽÇ=ŒáF>9M>݉=ë:]=×Mw=×Â=Ç[> -’L=Ãêb=š*>æÌ>}F=øª…> ÷>+!Â=ÍgÚ=_Ë>;I‚>Y—>‚†¹>oÀ]><×>FN>NŒÉ>€ˆa>ˆGÒ>+¤ð><=°>s6h>SŠ>0&>‘'e>¨ä>Š>™Y:>Çbq>ÛÛ>ù”>ÌIÁ>µO>ÚÈè>åú—? d?Ï[?+)?OÐõ?h”J?§GÏ?¹¤{@ÍŸ@T´9@²KA„ÆAʨB- B>Å.B7Ñ€B GrAȲÚAuÒÞ@Î ô@>÷É?ó/~?”ÊV?ŒEP?hÇî?MËæ?1×T?o®?>⥺>ãD”>íHá>à€%>Ðü>Øv>Üïà>„ƒ>€~h>ˆtÐ>€Œ>m >ˆŸN>#ö>·z>°÷®>…•>ˆ%">ŠzD>„ôû>ƒ:ê>q ²>^ŒL>Fg>2·>f=¯;¦=„ËN=õog=ûØ=â=ñ>Óx>4> …>ó]>Ný>H/=öÔ{=Çï…=y:¶=ßÇ> Çó>ûO>1¥>/@f>* å> õ>5^ >A¥¡>M•>cœÇ>¤8›>Ñr‚? -3¾?¸yë?óq{@<[£@KPÔ@xj@Y±@-<@N/?ÖRÛ?$§?kÜ>Ò¡0>¹ÞØ>ž$‹>¸³>‡nÔ>²>µ/>¯çÙ>æ.Ð?ë?„€?MN?^>å?{&ÿ?¨¡2@L@¢™oAmãþA‘±&AžÛ²A–3A~)ØA!£•@š @éÑA £A”‡VA–iAšAuò´AF<#@„,²@Î4?¡ˆ¥?Šýõ?=¢?1,?(²1>Ý“A> $>¦óË>½D8>Ü >¾³Ð>® é>…ðÄ>|¬T>…Ï4>xó¤>]WJ>2£–>ëÆ>#â>(†>-ÁË>(˜>&¤÷=ºVÁ=›h5> ¨>!Óê>iF9>@ãù>Ž/=ñ:¯=ðDl=êŒ0=ÈL]=ÍŽ=YÍ=¥L=ì´=öŠP>Ð>ôê=áó\=™–¤=lÅú=Q·Ó=7ì}7l>æ> µË>O­=ÂÝ=„—=*Ÿï=î{=äB<™°=p€?=å §> sÈ>l·=ç[£=Ï%7=’AÑ=¿¡ =ðž—=*r=Ek=>©Î=†’i=ãs=õ»ø=ó“>LÓ>KÆn=»Ah=ÇX¯=ÛÐ[=îÉg>Œ*>o?=â­£=™rš=»9=ØO1=ÕÉì=ÎÄû=:S<=’Xž=Ú>1ž>,¯y=2P=d)o>Ì«>žë=â{Ò=㢛=ä)µ=ä7=í:ö>?·=ãj­=Å›[=™=qœ>)ݦ=ïó“=†µ(=ú$F> #<¶Ò7=mjå>#•[>6û">I -*>âœ>Ã=´&~=ÌÇ;=ÝÉê=Õäø=Òù =K =}dò=°.ž=ÐÉ‚=Öy|=o`¾=ƒÆ> ù,=þ%=û@=þjZ> >òg>­‚>¬‚=ëÌü=¸ù’=•¦=£Dã=éØÅ>‚³>/y‹>!ÿp>»ä=©'’=—òk=)½þ=·T,=õ¹ ->Dó‘>g?>¨£A?Ƴ?qNs?æÊ?‚{X?V›+?'H/>’Ü—>ev >:·…>`’>Hoñ=ð_>,9O>_F>?>@­>ga8>‹­‘>±!¶?ÊÞ?/\Ú?‡¤º?Ž‘²?˜âA?GØ?V-k?1i(?5H8?€+Æ?¿üñ@¥|@ç²A3þASQAN:~AAƒì@ð 3@–P?¥rQ?qò—?9éÿ?}>ì~>±¼>¢Tƒ>•JG>†q=>g>>U÷>GR>%œ>,Ö›>WÊí>3ÝZ>›ä>^ûÍ>V„>]g>>æ>VH>=6>3d=Ônv=ÓÝ`=É|—>B¥w>n|>ý™?$[t?i‹ë?oŒ÷?r/@?9¸ö?;«Z?D¯Ý?Lí’?U¿å?!¢?a¶>^Ü>6‚> €=ë¹K=çJ¬=û›(=ÚáÍ= µ,= $I=£x®=ï&Ê=Ó?o=¡Î(= Ãh=Ÿúž=†DØ=¡KÈ=Ó X=­©r=¢†;>£k>#œ=ó‘­> -æ>#ãt=ü°¼=ßöc>#ñ>8£=½ë>L;>è=©P/=ÆŽ>>ü=Þ‡Ó=ßíw=oÓF=t­ =q×\=±yµ=ÛÃ>Äà> 8³>3<¹>$å}>Gˆ>[‰>ˆœ>ëÆÀ?#b?XOY?n¸E?l±¤?+®>?E>Íÿ >{w¬>E¼>FB>A3>N3>¦ßÂ>Á¨ë>ùÔ™?l(?Toü?qM?€ÁÙ?… ?Š~?•¿?ð$u@8Z@AOÛ@<:@ÛT@L|?éc\?ªð¬?¤è±?±$?±þ‹?´ n@É’@^?æÀp@ªá@q^@»A@0@¥r@Š2@@ zý@ -_7?ûr?Ð…€?–_é?œô?¡/A?ª±Ü?«?#?«!¬?¤ÅF?¢ u?£çÄ?½º?æÈk?øÆÒ?þœh?Þ}?¸C?q'ü?"Ä>õ“¸>Åæ©>š7j=þh> º> êOué¼Mã=ù=ë%þ=맽.¿~¼ßæg?‚™>’Ü=íCÇ>(Œæ>Só=›’=´Â#=¯þ‡=ø2«=©Ã‘= 6Ë<ªZ,<±Ëw= =º/==÷Õ}=h¡ã=0ï§=nUœ=„D=†ož<ý=DH_> …^=Î Y=‰×k<á î<åØ5=¤üï=¤Z›=—¤Ù¼ÂkƼa}ô=]øÃ=_ã=bW%> 9>>‡,>d >RÆ|>Nù»>M‘¦>%ÎG=½U<ÙwÅ<±°> -V=Ô¿“=Y³=‚r|=–èb>2{=Ë€—=%Ñ=«pc=®Ø=Ëû=¯8ò=‘é£=@/l=&"F<æm6=TŽö=›§;=‡cë=†ïg=¤¸=˜”§=†'*=„X=}}d=LÎ=WpB=I¾i=‰—=vìö=OÑ¢<¹*Ï<Õº=ŒÚ˜=Î5ì>`A=ò=ƒ#Ò>¾.>\>,ø=^==¼%/=£¥Õ=§ò9=íR“=°gò=|¾=V =´½¬=È’ó=Ȳ =Ñ÷ =ÌÅ=’Ý.»S9=X°ª=íIó=¥¾>=ƒ•ì=€h¨=|úž=Z[™<ÿ©ì<û£=B;ë=U\g=–Æ>°)>m=øÄÒ>|>ø> -(>¶3=´g6;>*>ð«>%­>çe> &B>#'> ¹£=ãS>ƒ>=ÈR„=æ¹f=íb{=rY‹=Aɾ<ÝÛ?=i­è=Œ‡k=©n‚>M|>8´2>L ±>RÕ+>i‚>@„5>% =õ,b=ñ{ö=ø} =åš}=èñ=àÈø=ìñ=î×=Dà=rz~>*8K=þK=¡&ø=e¢s=‰W=Á…o=v 7=9a=š}<=mÏ=tá`=‘™"=¶6=˜aŒ=w-B=S×5=!‹þ=NÄ\=™Ù.=«sb=¯{ =q•÷=o †=x‰=¼Ù=¼J…=“à¬=”ÿí=š"™=œG™=ŠE~=Rg=øÍ>ž=S8Ä=8<ÈŸy=ZÕ=Œšƒ=•ÊÖ=„ß“=‡ŽØ=zèá=]k‡=NZ=†Ñ¹=‡[œ= m9=±+Ó>«²=åïW=Ù±Ý=¸4=”9<(tº;Ê™=„Ç>zO=ÈCT=’—<–ª-=¾¤Ü>Œâ<Œ®û<ˆWC<‰É >c>*Š>0$Õ>–>¯ð>QŸ>ãÚ=› ]=¯ÆØ=ÕLy>m¹=¼o=¬²=ÚÁ=áÉ=éTü==á= ÍJ=ëµ=¼ž=›×ý=¢é=„–a=®=|T=•Q=s±=t½‰=v_T<Ò’Ò=Eýa=õCC=ÙŠÆ=Þ†Ê=÷ñu>@>I8=ýQ#>õ>IÍá>™=òŸe>4áM>>þJ>EpŸ=Î =Ÿl¡=+íC=žBª=ÍBò=`øÈ=vOº= þØ>XR>®*=i¡å=¥ŽÝ=Ì“=óÍe> -™>7¦Ð>Tz(>Cß>ï¿>+H¯>AZu>¨=Ù>³¥¨>ÃoÚ? ð>?eQ+@À@cah@’ˆ…@®J@»v?@͘i@§Çv@—Ä¡@|b@Ž?¯Àì?kA?.Ê?K“ë®(>©av>ÔL ?!>?^» ?ˆ E?‡+c?{ë?!‰”>äw¿>$þ@>sx>Ô=þ6=þ‡Ø=ï}Ì>ÛØ>j=ê®+=ÖÐ=Ñ‘ô>†A=Ùt=O=Ô1K=é?N=âÆõ> ’´>æ·>bSâ>§mx>î Ö>ö‘>ç‰>¾¿Á>…ãù>e6€>§öp>Þy0? G=>ö¦Ë>áyF>¼ÞL>VÈË>l =¡;=ò4j> ì=¥8ö=ÀÐV=ÛEì=Þo³=Êïû=¨ë¦=„uM=}í=Ïgb=­UÎ=•oG=Æ6=b=Öó¢=’/f=‡ª=¸ìñ=:®<-®=ÑSY=Ȇ=´&Ê=¯_•=ÛW§>>ú>9>{Û>4å=ý·-=¿zi=LçÔ=‚âÉ=§Bƒ=ª½=°‡ë=ÎáÖ=þH>t­=‹eõ=›bˆ=±Ó‹=±a—=¥W=K=© â=¨g.=)==Ž0o=Š“_=WÜó=¥ï[=ÜJ=ý Û> À>#¡V=à.=ÃV=Þß= Ç$QL=™ =¤ÈD=¸kt=¶Ct=Î-c=þx.=Oš=S¡³=@õ=§â=ü-ü=‘5=¢…=°×À=æ²=Ðs=Q§=|o=“4á>ð÷=²ð =Qsë=FÕ=HwÆ=U=ц˜=ÏÔJ=—ai=ëKw=úîõ> £î=þeâ=ÐÞÃ<…—ð_=Á[J=¾WÏ=¹f„> -Äë>+»=×.¤>ì> > l¡> H]>ˆ¡=Ù—¢=|wD<¼ñ==×7†=¼îd=t€=Ö?Ã=ê¨>+Ý>V>×)>F>;h">2>>5×p>?œÉ>J4 >óF>t¿> >IÎF>a÷í>‚¹>v°>xîæ>ÌŽ>“?G>¡ù™>Õü´>ù¥Ì? j?="0?……?µžØ@‰š@£^ @¾< @àŒs@ä@Ñ8®@·N_@¡ã^@P× ?úWÙ?‚W“?0šÎ?8hó?@8V?K0Œ?Pé?YÐÇ?lLý?y¥3?‰^q?š| ?©Œ[?ɨ2?îðÏ@ôû@4&‚@k‚Ù@™)A¾HAÛêÏB6›µB©í1BªÖ4B¦C]Bp‡ÉB.;!A€¨z@Ô ù@kàE@,{·@õ?ü¸Ú?àÔ0?Ð÷6?Ë%è@]g@ƒÞ@½ÜXA$†8A%XrA#9?@åº@Ÿ ?à³Q?™Ç?’ñ?£9z@$]6@‰ÏñA •õA·Aâ°A$`@¦2½@;µ?N3 ?(ÿS? ,›>Úm>ܵ9>à6>Ö7C>´“>„Ø•>xX¹>iEB>YÙ[>L ò>Hß>Gs´>OÞx>XÖ>g,>>/v>(ˆL>2Õ>+N/>+ -`> Q>äÊ>;0>C.=öáx=Õ">0é!>2>•“>àÌ=öì=åKÖ> -Ü> Ah> ü=ÒŽ…=¡Ô{<“ËÕ=—=ß'¦> ù>E==ôÈ|=£S=ÿù_>p=ã -Á>\]>3&G>™r=Ô÷“=Ÿ:ÿ=¤äÝ=Ä·‰=å.ÿ=Ä?-=ίŽ=è²™=®Æ=©™*=¤DÕ> M>/¹Ó>PTÌ>Új=ÙÓ=¨´{=Å-‚=®ýù=gKÎ=ï#=• Ž=–D¨=¯JB=Õ`´> ~ò>I¸>->0ŽÈ>»>©e>^< > Ëû= Ù=l‡x=›!é= <ð=wÈ =.ã—<ø§6=Í»=μW=Ú¬Ó=™c=¹ƒ­=æ·Ä> K=îÏÀ=ÁWâ=½f='Ä<úTȼ*î=?á=þ%<¨„.;—´c¼8$Þ> ëÈ> Ìß=º—> >>ܽ>ùR=š=µ,=œ·>m™=ü‰>=¶§ô>¥¿>Z„Ì>¼©†?_,A?™,–?Ôû?Ø*I?ÅÆŒ?Wÿ?x·?Ùß?ÓÀß?Øj?ШÊ?±A"?6‡>À"<=ú6> —†> -,¡>Qi=Âm=­s=ñó4>þ>0(>JU‚>UÝò>@³!=µl;=â+E> f>]Ѧ>3äÈ>ì>=Í\=°¸8=Ýi(=ÂI=´‘®=sª=Œc=¿Új>#‰Ž>"xe>%=Ê>D¡ >:,=ú$=ܵ»>¡î>SÀ> ¯>:ö>!s4>0®»>í> kÚ>J>7¨Œ>O™#>ƒ„Ü>U3—>P<¡>rWX>„ê}>}Oø>KÚÖ>…‰†>Ž¨>zp>‚Ü_>—xf>ÃéÞ>ä¥ä?óÂ?*É?K?/ËA?cý”?—jj?ïïV@BóKAC{4A}Ã&Aœ˜A´þ}A»¸oAÀ¯‰AŸ[xA’›A„AÈAâ@žôÁ?¹†ô?x6\?I.?ôn?q>îÝŠ>Ö–(>ÓÍ>½´>¨®q>‹ÛO>ŒD?>ŠÃ >@Ä»>V$^>\ý,>ì‹>.N>B`&=þ^ß=Ð=æ`F>T`ý>†=㯺>¦Ô>Hl)>;¯º=QŠ=ÜÖj> -4D>'>¼> $Ö> 9=âÅÙ>a=ìÃâ=Íál=;Ü[<‚‹¼î¿?>ô=û¨=¼Ž*¼¥‹ˆ<%e0=3KC>gº=¹úª=Ž—=–‹=SŽ­=z™ =öOg>ÞX>7ô$>mÅM>¡?Ï>£~>~Ù -=Þx<=«§ð=® Z>JÄ=æ….=£R=Vß=Yû¨=„šÝ>1=Ÿ>0I>#{M>©#=›ùÃ=2Ç=Ž­m=ªçÂ=íaå>5^;’=ͽ¸R>+˜=(Vì;gKí=Çj]> -Ð =ÂÌ =C±ô>*Ò=×u=yîl=ˆF=£^=‡ãè=ú˜Ý>»©=øʘ= ì˜>'ä>NÀ[>-â>Œn“>*t>Œ5þ>;WÑ>£v=eø==°s=¸(3=Åk€=øY,>IY> EŸ=wl6=hªa=h4=Gˆ=lÅ=˜4[=fÑœ=hÇÈ=[¢=cƒÏ=Ù*¤=º¨¼<6wºº€©=n_?> É=ÈCv=ì)H>TT=ï™á> >8¦>NÅ>%‘È=ì-V=o"I$Þ>oŽ>Yk¾>žÍ>ŽE>À>j-Ý>¡=· À=}Â%=œù7;ä>¥=òð>$¼4>ZS>â+>p#>=ˆh=ä*¯=JÎ={Î=Ôw«>ªÊ=bRD=c3w=30#<îÉ=8ÿ1<®ñ×¼ÎÒy= ½ =¸1i>´í<Ò¥¼ Z­½$sÕ=û€g=Å»=–îú=ƒ=ô.L> ä\>€x>-/>bJ>¢í·>ÞG‹>°‹þ>ˆ÷Y>‰äd>s{À>NÑ>Œ²>82[>;C>¢p>ß^X>Ù™z>¸”b>„BI>€Ñ>z]»> -âò> >¾=w¦g>0„.>u<ð-Y¼´4Ç=„B=»ª9=® =‰*=\Œ¬=¬Š=Øc=àÙÃ>œ.><3õ=Ð<’=:µ=‹ý>0ôK>~H§=´+ë>ÄF?ß#?Z±ì?3­ÿ? Ž•>ÈuÝ>Ÿ¢c>Ù”? d?L03?:…Ø?!n>ŸæQ=2´@¼¼ˆŠºé/<ò?S<Ê¿t;¨.Ù¼æ_%<Ó¡=À8<ؾG¼õBÖ9­û<û…¯=Æ=…%í=…µù½±Ñ@;V=€á¿>ï‡>"8Ú>)š‹>GÚC> Eq=s“±<+¢8=,å=êÌÒ=ºÉܼۡÍ=f -=ªù->ê¼z.=%ô¨>1F>%ÛÂ=ö=PÚ¯;Ò\Õ¼æŒy¼¼=½1{Ä=Å)ö=X2…=“Ý<>%kˆ=âå=ÆÞ³>Š=TÞÀ#Ðû>Ûy>WˆŽ>“ò¼Œ¾å=­SL>5§É>UÙ:>1>…=¡4A>'+L>@>/Ø9>†ò©>W°B>A=l>0R5=è¢ø=ò°Â=š +½kÌt¼šA=9¦Ñ>0v=¨Ââ>^—>$Ÿ™=1­è> …>^ a=Ó§G>‚ÛÏ>¯=Î>ÈÿÐ>º~Ü>ÂT?®^?ÂÎg@Š¿@¿Ð~@ìî@åsè@¹m@„Kå?®§?„¶B?²w@ k©@¿ý_@ÙRë@ãT@ÈHQ@Û@N?CÑ®>û->ÙOß>¶Ä->–Rÿ>Dä>;ýC>*=>'žØ>ˆ e>¬Ö3>/WD>Ô> ƒs> ]5>GX]>: >&^=Ü…¸> @> ;<=è§=¸Wï> ·¹>‡=Äp>&@q>6Ú÷=“ÃÏ=)¯Î=Š¡Ñ=°®ª=àÈðXH^>Æù=íœÌ=®½=±üM=U++<½™u><@=Ôê=-Ø= «b½¢¾"¼ÐY=£·==I¬¼”_£¼™ë™;ÕÇ=êšà>7à>Ûo=›ü½Þz»Öð4=ônÄ=?f.>.óï>#‚x=L›µ<é=˜=âæ7=Gáy<‡éÜ=6ß=“0=ªdÃ>¼†> -aÏ=1O=—8\=j¥<ä[B=ÀF=É3=‚7˜=ª¶‚=²œ8=VQñ=ÐË>äb=¸yº=Ãûþ=ˆ ©=rJ>7àî>fq>*1 <Ø‚V=¢Šå=Ðé<áZ«=°hj=óÏL>:µœ>gØ0>ñ˜=ô<=˜óÿ¼¸à=à>Tì>&FÊ> ­=²=ŸÔS>wÿÙ[=µ`<=+q= 85=ôjþ=»gÛ=»>Ê=g„ì=jÃÎ=ùý±=ìd>0=‘0Ž»®ß½Ÿ=^ê=qÏ]=<:@<çQé<ó <ª2+;*0»‘Ó]= qÂ<Ýàá=]üï>+ö=°¢<ø¬=KÊ•½·„»ý©µ:ð½<±vo=Ušs=|ì†=SÛ=<éä>¢>#Í(>)©Ô=†"1=¥&>ãg>™ª>(9(=ÔC=a‹€=Ïà==‘!;=Á2ê=îPw>“=¦ñ=ÏÈ>7ä=p0È:œ:Ç»œ÷'<=Ë<½. Ø> ‚>7®Û=yDœ=Šð¶=êç =Æɼ>"åÉ=ÈÇØ=*3m;eJ«½JS=Û+->,> üÿ=ËÉu>µÂ>´Q=Ð - =*QK=MQµ»¡OD= ó„<ã6K=EI=XS’<÷<¡½ÞÊ={Å|=Rõt½¾eø½d.L=Xâ=ùÚ=¹“=`=œ`›=€ÕY>a=õÞF=Õ2ý=œ’=„P=Õ±Z=Ù´ƒ=Âø<ñ3=kRE=PÉ©<å¶å½¢è|½\~¼Ø<<Ì5t>e#Ã>õ=L¬=eEž=2u=ÕÕC=‚2½ÂýW¼rë)=Æq=ÞÀ}=©&e=ÔîÌ= 1¸=qSû=vw=€¾=á¢> ¶Ä=üXÝ=ÁyÒ>0X=Ðül'’=ÒnA=m r>>O=@ÇŒ>Á>C6Í>7 -켚…>â >™‘¸>¹–¿?/3?µKŸ?öÚÜ@ |õ?ùy?Ϊ?­E*?–Ï?Þ`?öÕ?õJ?ÜaO?z9¥? H">³W>¥íÉ>Cóï>˜M>µT ->¨N€=ìƒY=£=Œ>…»>wÊ>[ƒ/>ˆqn>œZM>©iS>ÌUà>ÎAY>þ‚?+#=?O…Ü?‘i‰@Á—@‹Q AÊ-A[vAA‡üèA•õ3Aˆ¥•AMˆÉA—@¹³@¬=?Š»º?T¾?*`E>ê’>ÙÊ%>ͱð>´†>œ‘?>PÄ>6ŽÖ>B˜>Þ2‘>¢÷h>LÑ=ÆIO>Rì¬<ƒá¼<ý=ŽÒ>²’>!#¤>yW>Œ‡x>y?"Î?MÚŸ?ni§?mq”?F¢J?Û>x‡Î>v<=Cxû>kQf>t >ˆh> u±>U1´>*‘=óUE=SJ>ñÝ=ïB> fÕ>ºË?×®? ¦? ÅC?/_À?¤B?Uy$?\}4?6Ç"? ~ê>¦Mµ>@þi=Ðé=ÔêJ>J—>ü>’g>³z>>Ž7>A†=f‘ɽ -MÄ=ŵ>Rßp>0>Å>%ç’>¾‡=ÉaÐ=cú=£…ë>'fý>o=¥—P<Ö{û= >Ds=÷)ï>QÁó>ˆ·>ŽÝ»Cz=¨“>Ë^>8ìº=Ò'È=|‰‘=W >;U£½–ðh=¨B’>HÁ>8Þ:>Wc“>Öuá>È€Ï>‘Îb>ÉK>F?h=¨Û¥=¾H§>Moë>’fN>çÝè>‹=!>9cÍ>e?Q>©X$>˜ú?>°?Æ>ÆiÕ?`?'šo?‡  ?Ц÷@ >à@(H;@=€?æþ°?…´? ‡ >LS>­>®Õ>†=¾x¢=Ü™Ô>8>83›>)Œs> ±>ãU>€I=>˜‡û>`¹=›Ÿ>@±¶>§´¥>Ç”>%Ÿ=˜b.>$^@>X-ó>wÊ>Ž'„>€÷>TÕ>Žß>JÀ=ý!£>fžb>®…>õ7%?C^'?‹Ú?–œB?•á?‡¹Á>üöè>’i>6=†> sº>5Æ >â_>YM>dŒ’>¹º>?œa?÷A@6œ @]Aã@jLò@D1á@I…?­>ëB[>¦æì>”—>2\L>˜è)>èÖK>ÊÓN?hÛ3@ ¹,@N>@rZ§@e0i@=g?ä‚?c–I>ðÙm>‰WT>ô~0?)ú?g†?›J ?–L?$¼?'Ð3>³ E>yà@=“ =xrµ=úu~>"œ<±0Ú=õaË<è=Î…¦>aÀ,=ƒ„#>>‹=ä(> ²A>Xꎼ™´=¾®‘=´“$=òˆ±>I³Œ>/h>pŽ'>A¦÷=û2=Š•^=ØÌÇ>6'=Ȩ¥¼0`轺®;=ÁÜŽ>G<€c¼t4Â=ßq¦=Ýä§=f³-= $=¹–À=  =:j=®OÙ=ÙM=kà‡=øìl>-÷7>ïÐ>}Ï;>™Š/>n_r>Q‹=îpß>˜>#Š·=éÁ;Ä‘³½3ýq¼*w¶=€w×>>Ýj=N'Ã> wg> R5=˜þm=0ý½L³W==>J =Èe´<Ô›Ñ=à F;“I±¼Çc¼®_<ÄA>Œ H>H>Œ»Î>¦ØÌ>â B>” i>¬Jþ>¬_ª>³‹k> Ãí>8=· ÷=è v=Ýöó=™ …>‹¹=ox=¬Ff=2¿Ü¼®Û>Y{9>DÝ©=©,½=¨‘L=Їp¼ÅÍ=;.=Ÿ¨>y\>RÐ=¢‚|=å"=Œ°=V|=p=åä÷=éîï>t>Ü=Î,=›¹Ü=ó -ž>A>.ôU>dÏe>ŠÄü>(¨Y< Cc>yž=Ýf¼$A;Q>Š®Z>Iù>|c{>>÷|>#Aã=?¼‡> ,½>´>mÏ]>Vïþ;—l>:}y<ƒßq=Sà=¹&¼À=ÛÑX=µ½;îáé>^Ê> =ÎÕx>Š½ V+=à"j=øg>Qã>kFS¼¯Éܽd>V¼ŸP»=.ç!>&˜«=ï–t>²î<Šø ¼CªÔ»â`›¼¹Ô:>¬á>eòõ>RÊ_>4Í¡>Gº>8=ÀKä=9V>!¹]>Š9ó>b:Ê>K¼6>`>·©n>äâ>ÏB>“G>à…0?-w?NB?¬b? .?Y\ÿ?€ÇÛ?‘“*?›˜Z?Å¡D@4ë@cú½"¼>°/¦>±Eq>ŒqÝ>šl…>hpe<ô:>f‚n>®¯c>–ýÜ>G‰>L|=·As½“[ѾšN=³Š“=c =Œ§I<©½¨î=¼4™=þ¶õ> -ÿ¼>Úa@1e@P=jº©Á*À¹`àÀ<`7À\›·À\^ÀOZˆÀ•h!¾Všœ@Ìë?ñþà?81¨ÀQÏ*À«“À™ÊŽÀ€ÓçÀgÖ£À’i#¿õ?½Ñ}¿ÀmÀ‚b6Àm©ÝÀ†;¿ì¥q¿ëÓº¾÷NF¿T¾³¶ä½$?£½žd½¿ ¿Ŧ½Ñ»\½0î¾&ô…<½·Y½6*ö½£dt>…¤X>¶I=ºËV¾Å52¾M뽊”Z¾¦¢,¾†éŽ¾vX¿ «R¿ ¾½»æ¿È£¾¿V¾—.R¾êÀ]¾Q¨±¾’ã¾—Ë\¾‘ˆ7¾(g”¼ù¬ï½ñº©G=ú…â>)•¾?Z8¾2}½\Ùع¹Õò¾´¾5uþ¾8_O¾‹B¾Ñ;¾¥û¾ääó¾i Z½PˆK¾\Õ½ü÷¾™…¬¾ïq ºŽFõ>4bh=ʯ½Èb¾=V=¶? >KW=ÄF¢¼´Æš=2h¾…ý=Œ*ê>ÑÓX>c*¼äø½ú$¾½õ,7¾1ÑQ¾hâÁ¼Ëèú>•_g>€*´»B©³<¥¿ë>é'†?M{>¤Ÿ\’å?íu?FÕG?F³‰?ëv>NK¼U™>‚÷> A»µÌá>Lµ¡>'¨¾’Êþ¿!á¾Æ¸»(¥«>3sñ¾8Åû¿ ƒ™¾L‰>K—Ù½wWä¼Fôˆ>—Ž=ú½?½:{<»Ù>Bœe>¬;?[K?Д?"æ?CDü?+X>#;=:ë.¼”#C<¸F¤¾ݽ»ów=†„Ú¼tó6¾¹ÕS½ÞÈ€=ØÀû>>]Ÿ=ü -$=¶›v½‡j¾"¹t½±Âæ¾5¾mï¥<þÿ>1¼>v€V<Ê+¾…&l¾ P,=qÊÞ>©ì/>Éb>ÞŃ>Òˆ>•;>0 -E>=‹ü<«–Ø>t—>ŠbÀ=ð¿s½3;=Î(×=äh_<{ô‘ºõC;ñÈ=»Wð>@]å=f약, x=¹1>:#o>8”>7u>n6>Yh½½Ø(H¾g–½ÿµ½ºTY½ Ôã¼ä¤–¾Hµ¾¬^½J)=eƒß¼²£_¼ÿ˼>5Ì®>¿§½‹vž½µù—=©Ëê>;é%>i@u>òÙ=Þ¼Û>Bâì>†ýE<µ½6¯v>b¨>t¾ >£ì÷>¢Ö -> ܆> ›ª>8>W‰é>JT>mê„>”‹¬>î>ŸU">Ý¢>É)¢?KÇ?6¦O?’m?A×?ŒÂb?È‹v@Ïa@œ›…@ÚÌÌAuÉÁA‘ÛA­ïwA«þ -ASsAX_Â@ªB@vâÊ?Ž£H?xÛ?Mì>Ô¿æ>›ÛŠ>«ûI>’ -‹>Ì‚;>Õëy>@¾•>FÒ>=;>_¿>|½>›¬]>Ë >uN[>Y€¶>Y=nÍ=¦šM=²ßµ»<„î=x»<õ^=`4t> Ãê>‚BM>ˆŽv>j;ð>›$œ> -ˆ -=å&°=Ø ‹=Æ•V=J&¨<-v*½YŸÂ=³ß>JY2<œ¨4½Sš=³_]=ž¢«½Jªü¼Ì$C>@B¦=ñÊÓ½h·½i¸½j‘@<á =´'Ê=D—=4B<; $ »Øk´> &Í>E³=¶°è>“°>+à=Æ Š<›¹¼iIἩ ¼›ƒØ»¼“½g;µ†<Œ)ɽ.‘O½ª•¼p9y=Ƚ/ i½Ü(½¡>¼ò¢S=œ…x=¢L‚=Ÿö=ŸžÔ=ŸRÆ=äÞª=»0¼Þ‡½½:>DÏ>hŸ>E§ð>W~Æ>‚ >hð>2)¿=¯$+»ìåÅ·>Z=²’=¤,Ø=§K¦=•N<ÿCJ=Ll=£ðm=âw=çÃí< 磼âÃ=¾åq½›wV=2=GÔ{=6â=º[=õ¼':¤¼(Œ=©rí=¡ò”=a÷=ŽûÍ=µäi=¥µH=§²=—ž)=€ñ½=-4˜=EÈ¥>íà>.øœ>ñ¬>LÕ'=µ®=ìj>…,=E¨3<Å"n=ƒMH=fo=÷ðü=ñ‘y=«sC=¿¦ =Ç¥Æ<ÂB¼K^=7hÑ=‰¤=½1û=¥Œ‹=UÄ<\åL½G(W=µÆ=è - ¼{À½ˆ>B“>-2‚>_n>7Ö€»á‚öK ¤>T_>T =y*<Û+#>7Dž=ì~ÿ¾?b½Dƒ=á«»!3G½À¢¼"½È<¾„½=ÇpÞ=¬ôR½Ñ¥(½hÓŒ=[‡=7 =µ=…¤<¿W«>#}Å>CÓ­>IQ$>Km¦>i‰´>í¼©Û= Áq=7p=‚_=‚ËQ<½ = z>6$O>ó=Ê&Z=‡ˆ<ÀA@=•þ—=É«(<ÞWš<ƦU=pçÞ=®Ÿª>1yD=ÿOÍ=l7 ½!< ½Ã´k½ú)¼—n>=ò{`=d•t=_fT=a9S09>Hcz=¼,=’)3¼ ãÕ½.T©½®F·<³P =êõ(> ó>©@=±½×=¦I=“ƒì=…BÅ=]©ò=®å3=íÕó> -Ž¿>ƒ–=[Ÿý=7žS=§OU=¹¸‹=èè4=¨Šæ=AD*=BÞ6=DÍܽmº½~>6…Y> 2‰<[Dì<\²ŠÐ7=ÓÑ7=j>&a}>[hͻĉs½2)¨=è=YÃé=Å`}=ÄiÎ=ÃF<«’V¼–õM=£ƒ1=Í~§>7Ûç>HâR>w»d>‹=+?Û=Æ >¤²>²Æ>+K=µã¥=®‰=‘=È=â¥Z>Sü=Ñ)€=œt=Ìô±=ã@>,8x=òÜì<4®3=Ï.Z>;Öq>`G>oy>7¬û>:>ò>Iùú>Hz‹>Cº0>&õá>–í><-u>Häá>,Íâ>9—>ç>mWƒ>DWÁ>5s0>,.b>£`y>ºaN?7U?Hè¦?„8?k¤'?Nºh?=¶Ò?4~ü>èíú>á67?6 m?VçÉ?’]Î?ŒŸ×?‡ä?QÓ$?9,Þ?5!,?4Xð?6WýSÍ?f‚?l±? T">äA>Á{>Ì…‘>Ìy/>¨Ï->´é†>Ö>Ô(>Ó$M>–©>x“Ý>#àò>)DÓ>l¬ˆ>bÿ>K³Y>LW­>Q¿é>;Æy>8¡>u»Õ>€‚‰>ÿV>06l=Šl~>Ê>!ÜË>fk6>ZxÅ> Ç=³âR<¤ä¼<òË=O¼ð8G¼á>³=š™=d§É<§×8=¿¶«>?Ê=ÈL=®)Ð=—´6=¯tœ>¹h=SaÔ½é³=¹ƒ2>Iò=½ =¡~t=|Ç%=ÝϽ>.²m>Ìã>€ =uâŠ=tù’¹0>Q2'> _b>@ó=ý'å=a¼Å=³«°>;L‚>,ý4> 8Ý=é…^=ÅÒ±=‘$,=¡‘ =åh«=Â/V=†w><šX»6ÇT=È”=C ž=‹©=ëŒ;>Cì±>Åö=¼D=û&i> Iî>5÷>==Ð<»Ä;x½BñŽ½ƒÙw½»Øt½Nž™=ûá=™!”=Ý/h½•) ½ûÞ¼hãp=E;>c€È>í=¶æ©½“åû¾7þ½2J4¼O×=´ßÞ=‹¨þ=9’ì>Zæ¬>/é>Ãb>ºä“>œ´>=й=)-E=ÎÔ}>¾­<" ;Ô6s<ÛŸ?>õc>ŒGÇ>Ôj²>õaù?‰•Ð?’—i?ŸÆ{?‡l%?NÄ>±ãÚ=ñ¿k>o\g>pƦ>8_:>îü=Ÿ]×>lš>I"W>SüÌ>^õÒ>->è/ç?4û›?ƒ0/?˜lV?j)„?NV¬>Åâÿ>¹Qí>§þÿ>šÐ>’¦Ö>.±D>"¨>v7>… -=Ϋå>`Ü> ³Þ=ûÄ=ùj=ó6~=ñ@ƒ==½,Ó=¥b×½Ñv½žS¨=¤®œ=ÓýŠ> Õ>=³58=ˆµ9> -Ñ>±¥=ÔÆ=Õê=ÕL“=°ž=¢cr=µ$=½ ˜=Øä>Ö%>C =À =€…Û=®óH=–Éí=",è<ú‚<»öÖ=„|°=ž`Ê=ÙÃ=ìÚ> ç4=•ú<ÇDk<ü¿=E=¨¤À=è–>/¹ƒ>2 É>3ª>£0>G˜8?A!>ÕÖ>…2>¡z+>°>!>s3¤>Yy1>ïo=ŸÌŒºšÄ<—,<׌`=¦¶5=ª@õ=«U=‹o3=Y™¥=™A =£oq<Þ?Ô<áa<ãH=6n(=pVí>;Öž>G¨K=·Æ=¡ËY=|.n=§Z'=¾x">7Üþ>5öj>ª=Ë?€=‰Ç…o#>iÄ!>Kû*>š >†’¡>„T‡>Gð=Š<®=®ÅP=Äâ=‹\²=«§ú>Lp>‘]= o=Úè> ‡Ü=Ö|=æß/>Ü =Ûî4=•9(=–J=­³Š>”G>xÔP>ç=Æå=Š^>-(+>!Üå= ¡“= Ç&= =Q]={Á=Óð=Ùd¾=Ø©à=µ6\=ƒ'=É—ç=ì&à>\v$> Š¨»Ttñ=ƾU>XY>òL>K&>Þ¿>;ÑÊ>dK>0@>ºb=–Ýj=¨à»=Ûn> >F÷=ù!=ÃD|»oÖ= -}=§qA=Ñ9*=î7>I•Œ>SæÕ>n‡ú>2‡°>Bð>2ðw>!Äc<ûx½=}2=»}Y>>uÅ>iÛÒ>šÿÈ>„Vè>Ê>>¼×è?MÖ³?l{Ç?¢K?™ ‘?w?…ï ?ñê?,?&Ú?ºú>Æt>>n&>´ÊA>Òš?}£?Z¤?µv?ª t?³s?´C¼?³ à?°)«?§Àr?¡ð?·O?¶ “?©Ï?ž¼ ?” ‹?ŠCo?ˆoß?ÁË?‚}Ô?XFŽ?`j?c÷Í@#VA@+”Ä@/HV@2È7@5à @B2×@Cê™@;%g@>üà@D0{@V¤d@aÉR@Â/@°öm@„ï@ª‹9@ĺ@ã@±r@½éå@½ƒ,@½]J@µå„@±ÿ@™|ž@…û@GªV@GÓ`@G–L@K`@Ey@7‚5@9Î[@;=”@-Ž÷@.²w@<¥é@1|@%È¥@Í@„A?•Óó?  ?´+ó?_|š?Ï>gÖ>Œô˜>å!Ð>ï1D>ñèÅ?4’V?1Îô?‰?Y°>øg‰>‡Âà>/ðÔ»YS,<ïîˆ=¥ñÿ>/>"\ >Q‘O>!aD=¦Ü×=þ>•õ>W’º>J e>yß>*K%>: >O>B¡`=ÜÚ>nBæ>Áß›?~1S?Ÿ7@G@ Ö@ ™S@  @Ȳ@ 5Ï?é?‘Î+?¡I>W0€>Cgj>[¿}>q¡>,I‰=ÿs@=± Ç=§ÓM=¯ìµ=ÊL¸=ì Î=iÜ=B=´Íô=ŸÏf=xá¼¾žA½ŽÀ<Ò˜=•ãæ>n¹½ _Ù½¿~==ÿ-Ç>Æ>$ýÔ>BB>ã=ˆ·=¨"Q=þé =Q¸1¼-ÎS<µÚ<¥o½š¿ÿ<åÞ>~p>%3¤> Ž=Ýex>f„>žÙ=Óíá>¯@>†>VK=ÆØŠ>Q>K¿Ÿ>ô´T>ýx?Db?s5ë?Ž$?£ùq?œª=?r%?QÅ?.ƒ`?j?? Ã?ƒZýÞÅ>ÛÌ¡>½Z<>‡ œ>u´û>Pàv>6¢/>%L}>5‰“>1ú¿>m¯>”ü>‘ãe> ©±>øB>‘‡t>p >JsÕ>ië>qÈ >'Ÿö>ÔšÂêN>+P=‹Œ=ÔìK>µé>Æi>5Ê”>u²º>RÁ>0„š=”|è=r m=èVß=oÆ[<бK=Ö¼b=à‚>jA<Óò½p½um¼nÖ¸<Ÿ=Œú=øÿî==o=©&´>,œø>{ò=×B…=óC=Ô¡=n'Ì=Ç=Û(ÿ=U’Ö=•ôó=Ýà>>T}> jß=Ðí›>¦e>Y0Ÿ>Uìæ>@™F>9ÜØ>L­>r¬*>Tp<>]H>%>—ë»>ך>ÏÐT>ÑRî?!ò?‰Ü ?ó·@‡æ7@¨µH@È^@ÙÁX@ò85@ËÔ¶@»t&@”7@Q„ë?¾Å?52'>ïþ:>±Æ9>¤ø…>–m`>ºÕ> ºf>€£º>`›+>%ë>¬>9É=Ú=wa8=\ ->[Êg>ƒð¹> |>@ù=x„=!=QÉ=ù³>"@ž>%i˜>M3“>2"V=û¨œ=°£à=Ê™J="­·=“Fí=ò¬q>4[>N{ç>Mv©=äà3»“„=vÛÝ=µ%g=¦›A<²×þ9eR>ll>Ërw?8Ïç?L‚?:??:ö?>>„z.>E§(=Ø‘ö½0±Á<‡(=³±=íå=üÑè½/Ñ»sÀc=?« >HÏŒ>_@>:-X=v𺻒­½Op©<¡HI> ==ç^ -=·„r=°¯â>g²ž>ù1¦?™T?Qx?ås>ÛÔ—>]Eû=㟥=Š½»D »DÀ&»=Š­=1D‡=šÍP>0#õ>#u‰>ž³½‘Ï;´¿¬> }å>eÛ>ül=¤œH>#>8’Ú=Y¤¦=Ò …>‰yž>¦û>Æåì>üäs?‚·@:ê@;ª•@\­~@Œ&Ø@„ïW@sVX@"ô @øY?5lÖ?l2>º³>”/ë><ì>'i>GÉJ>WÌ>9ð½>wp>"`>Oˆ>Ol;1½\=‰~n>G+=Ñ=ð{$=ìS=É~=”â½ÁŠx½fP=ÈÜÂ=öúƒ=³¸Á<Þ µ>n)>sÜÛ=À1ã=ê‚O>\T=)Ô¨½QàM>q=¢q5¼å•=D¹¿=´=ÍIV=ºÚ0=ê¤>,Ê>²>Q°E>P;–>7+è>6²ê>#„Ê>š_>d(ï>zÕ>›,p>ú?(ÒÝ?tA?˜’8?ÑÛÚ?ÔBŒ?ÐGÛ?¦ýU?/§?c~Æ?‹û\?÷ ?‘!Ò?TGF?>{«+>q~>>q!½>]`Ë>LèÕ>7 ‚>Iv®>n¬>pÔ>O¦@>&²=娥=ã?> ´>S9‰=³‘/>0Í>®¸>öÓ>*ô¬>HÄ%>d{²>€SL>G>~ØJ>]?ˆ>6à=íØ3=ë× >Y>ŒÙ÷>Ã<§>Ÿâ>…ˆî>-Ú@>Ž‡c>»C’>¢³¶>¿Ïµ>øò?L¥€?ã?¬P„?­Œ³?«üÃ?i¾?HÆR?Á?.ô?;S‘?;XP?98F?9‚?GûÀ?YÐ?‰¡M?‘"?šµ†?æ.?þ@ -7A@|kŠ@ã¢#Ax"eAÜáëB äB‘ÏAìDùA¿#¼AW"ðA>ëAñy·B£6B,B/øBájAéc'AÂEA­bõA…^¸AZÞA8œ@wˆ;@3µ -?ÙOÃ?¤,â?ŽæÉ?xFF?_Îk?Oµß?`XÛ?\Šú?Y]U?7|Ö?+•?ǧ>õê>æ í>åÛ>É%>²¸>>§Ÿ^>»yø>ÜdÊ>’d¢>€þ>¤+>ƒ­%>Y2Õ>;Š->…Æ&>ÇQ¬>Š9Z>n¡>rp£>“›>¡§æ>•×å>žã’>¡Ê3=âì=É/2>{>X‚>[ù)>]Ÿ—>'-Ï=©´í>,¦ë>9ÃŒ>J>3ºh>;¾>[¥/=é.:½%©>‹œP>ƒP°>ñ>õ«> >ÁŠ=$üU;-}“>l…¡>-I=÷9>a2->ŒÛ8>ŸºC>iaP>7·É=Ìî>&>i±i=åíƒ=ÌØ=`X×½+÷½p®d=|Uu=|ç=ƒ¹µ=y˜=J¨·=dÓ’=òšÛ>%ïD>~S =ô†=s.ƒ=¾Ãt=Š -¸=b*&>,´]=½p½u½e„K½ö—>*ƒü=Ô =GD>L/;>ÍØ=Y=µü&=²C~=º+G=%LŽ=Ô>*Ò´>H0=¾:>í=õÙÝ>gß= 53=Ÿ¢g>t¬_=×Ã=…!Û>$µù>ÿ=øÌ&>DG>+XK>?¥í='oå<ño‘=?Ù@=½Àa=äë6>d²=Äa„=/^=7àŠ=mŽ#=¾ß>#ÙO>4@=žZ'=øqi=öf‡”=ö†=¢‡õ>zM=>„DU>V­á>[ÚS>Ovp>7O>“½|>²º>Æîi>ºEq>ªs >ÛŽ>à.u>Ôë©?4~L?vº ?Æå°@Œ'“@Éh]A+IºA4yA;ñ’A žï@ÑF·@a]Á?¢è#?T»±?#Ï~?$ì? øx>Ç6ì>¶î>ÀQn>ÊÖ€>º›>®F,>W‘˜>d½Ù>s(Á>k£>S®>Ñ>wž©>5ª>c²>{7 ->„®>Ÿ¢? e?HKÜ?FÜf?<¹?,÷>öXË>´7.>e>G¢]>?†C=+$ü=gEn=…òP¼àgS=‹ð=Ò¤·>uá=>1éÈ=™°¢>/À?>U)Ö>‰“Ò>.w.=Û8Ç<;šv¼%ÎV¼…±÷=¡³“=—Š¸=“¯‰=W<`çǼÃFÃ=÷.ƒ>~ï=ù æ>‡|>…X?>” =aÃõ=ÀWÌ?=ž>òÔÓ>öÒ?^ð?C´‘?)Ùö?¦? ;?ûÊ?`R?w¼×?‰~þ?*Çx>îæ>=©Æ=ßl =ž2c=ªhl=Zz==I ö>nuì=ÑÚ̼O8 ½t]¼rí=*`=”!­=¾L1>H!= =råp¼Ÿ™o=¸~¬=Ù“K<“t<ÂÖÅ<èaQ<ê4ï>9G³>‘ƒ>FÙÀ>H‡>Lð>á¶Á>¶÷÷>}>Ý€¤>›ió=§>$N'>Q^\>}ú!>(î>v9=·xÎ=aXs=Žp.>m~à>.©G>‚;>= '>Zqq>gY¸> -&¹>"qè>>í&>Ù¥°>Ÿ5q> ¸‚>¸’>²cr>”Œ>I>“È>ÈÎG>Üo«>?ZÅ>Ðׇ>Ê#S?'’i?0_ö?3uœ?/`? >?!ÇØ?žw2?“YJ?‰Ô?ÂM”?×H~?í@-*Þ@…jú@Á3ÌA¥|ïAÓ’FB³@B1>ãB/›)B¢KAæÔöA´p,AO_ @±l@;Ž+@’à?øä»?ï¤?Øû¡?´Ë?ô?s~y?UŒ?B‚?5î¡?¿ë?'?Om½?L?TŒ?R-ù?9É?‘Ç>¯ê°>½<’>¿+=`T“>ý–>;-v> <Â>Lˆ>BÂ]>rŠï>‚ÎÞ>–«½>-v|>7x=ÂÑj>±;´>£@>î°=t¼[=uÎz> ‚T¼Çr½.R—=çÝÒ=Þ²^=†õ¸<ÓlÀ=·×Õ=¹‡=ëúÄ>=È>Rúà=ýG>E8Í>güX>Æ4L>³Ÿé>•Ü=Ê6>FKt>‘ž>~m>2Ù¿>H—¼=,ŽÏ=‰@2=â =áÉž=« ž=\]½Ø•U½Ëß®¼ÛÁî>o=7T;ˆ==ÐÛ=Lj¼Ê(ô>‰S=̲=8ê=í;Î>½>R^<>æJ>2Nõ>`_e>]Yr>ÈÕ?“e?M¸ã?:æ?5_z?'*(?* ©?4Àó?!>åò>}*è¼ Ò>˜>§Äl¼‚ÿ’:uðk=B=±f=ªh{=ÛÁj>nSú>m=i~w=Î¥>0' >yWv>tú°>(fz>,Ä=˜¤û=õÇý><5Q>H >>º0=ÆmÄ=¨KŽ>èq>lº#>‘¥Ê>…u>ðA>ŠHÒ>Z`4>½³>.U>3M>šG=.»’â¼ó>-<þ Ù=¸’Ü=EûP> -Í‚>Eé'¼ûé;˜µ|<Ô¥¹½=5=Ìž€>÷q>)xž>Ì0=vè™=EI¸>ë{>§O=ñWJ=œáê=Î{ç>!¹ñ>lû”>]_†>jà>0Q'>‡-=ó‚œ>ÁYÈ>ßrµ?;¾?F „?<—?>ø~°>µ&z>}‡=üÁt=ý‰>wÁ=¦á= ~w=Ì<«=¥˜Í<’C<¸Lâ=~Cò=»D•=å‚k>>ô>RTD>X¢>ñu?‰š?S–?vz>¹òÏ>6h=¸³²>é!>>ø>á•=ü U>“>(‚é=þwÃ=HáÖ=›äå=dyÀ>¥?>M*6>:ä>jM‚>£n•> ðŠ>›ÿƒ>¨> !/>bUC>9¨Ê>XKƒ>I‚”>fR>P]È>~‘o>b¾@>Bð>‰>‰Y>dŽ6>9+e=Ê£m=Ïv~>‹QÒ> 0¿>uKÙ=ô¯‹>‡Î>”íM>Ïq>àÐN>ÛB>ÉŠ>ùQä?+?ð?9E?.U™?><‰?PΞ?‡e@ý@Œ°íAEä—AœˆA¯ãÌAªb›AŽ†nAJ½Œ@„€s@ä?¦Uâ?j­Ù?%Sý>úü? ¦?P>íŒÎ>¡\>ÐàÐ>º0†>äo(? -i>²‰l>­hX>ÈV>‘÷Z>šÂ&> À¦½-Ä–<¡N&>.{«=§&>nèd>A<%=”‡=;At»ÞÖ1>U×>‹ýX>5PÉ>Gt>,åe<Õb5=X÷=³:—=Š_r>)—H>ƒ¥„=ø Þ=‚P5=Êì”=¢v±>Dý§>»®:>;í<J=¼Í";œèÃ=)r^>&=Ô=¨-§>ô9>Jÿ>MO~<«Ý=ù­ï>=Š—= -_=Å=ÈaS=Ùi>¢Y>?¤v?@)²?cò›?KqÓ?j(?}6>œÐÝ=iÐ>ö'?:A?M\®?aŠ?›>â Â>ÊD±>æ~Q?’ -?BŸ?(‘ù?–#>Üf>º¯>¬1Ö>¥Çž>¯èv>¨)>½~}>掗>澎?Ví?aJ>Ê·I?K.?!±?P*ö?ž·?—W@‚Ñ@¾¥³A.YƒAˆ¬ÎA––‡AbøAnDÊA0ê@á˜?ÝI>?‰_4?[ »?<ŽI?Vx?!R>ýò>¨U>ÆŽ>Þ,¤>ú;€>ýª%>Ü3ƒ>“¶?"Ÿ˜? -AÕ=KÇ>aÉ>ÂÉ`?!ô?D?ï`?IËB?6År?}WÚ?ut?Ž¥ˆ?ˆ¤?–F ?ÃD?Âk±?Ò¤î@ß$@Nú•@¯ë©AZ“kAíì‡BLÀBzÓ~B€§fBjÛ–B6ÎøAäPArèŒ@¨7c@YRE@è@Ô ?Ñ ?¯ÝÕ?–¾6?{k4?’b¶?a•?Qe? †?VGJ?}p>úÎ/>ÿ>ºz˜>ÌdÀ?CÝá?;~>1w2>ÓIæ?†¢?D›&?4ì¢? i>¢X ?ð‡?àï>–Ð,=2 > w"=w‚¨>TþG>ŸD‚=à²ß>†@‡>î‰>ƒ;s¾#*.> ©=ΧÚp>²ÍØ>`?=äo=2âf=°ºh=l¦>‹q3>qp¬=ü&´½­ -¯½HÒ‘½éM>YÊÙ>½€Ç=—ï¤=‘ŒÂ¼Ä¹½0$ê=ãA =û“<„_¦>¿/1>i?º=É0q<êYU¼Çâ³=˧ò=øv™=—a½V«¾`³¢O¼ž>ß =‡Ó=ظ1>W'~>&]ÿ=*­Ë=…¾ð½‘ô©>£>Øpˆ>—UP>Ð3ö>ñ°i>›7}>ˆy>bA>“j%>½s>{dî=k,¾¶º¾d4|½†àƒ=|vÇ<¤ á>Q¬x½¤}¾%Ö>µL=Òhª>Da¶¼ª@N½¢ ô=¬‡>WV¡=õ|K»„TŒ½  ¾Dá¯<ž/>ŽÊI>ˆ?=œ+N½Øê½ô!¼£x‹>‡óâ>`)«½ë”⾢ǽ½ŽI¯>M’¬>!÷½‚q½?!=‰~ >ˆÝ½¿h>Rj¶>Æ=>„5z>E°ˆ>C#&¼ýé"¾B8Z> ]<==Å>1Â>¦Åd>f7ž>;Á=²’y<ò¸=¦}õ>e³»>¬ O=ÀFk¼¤5Þ¼ C`½6%K>2åÕ=åÓÛ=¨dY¾çE¾"ØÌ<…>ðI”>xï¼·6ý‚ùo½4ñÍ>4Ë:=üv3>û¿Ê?g‰k?oKÇ?`í»?æœ>ß—>åÙ4?3Ë?cE?~?>² =ìëù=ËL¾½Kcž=íI‰>D”Ÿ>¨]>@ø>’È#>_WN<.ú;n—¬=Šð»ãvã>.:~>‘¶Û>gŸ0=Ãc®> 2 >WWb=N+·½B¾w;º¡ª¾MCÞ¾|úÛ¾LÆí<›‡>Oz¼>"Ÿw>9±¼Rè¾Ó<,¢;=›]‹=¸ŠŒ½`Èó=×Éó>æB>‚"6>ÜÊ%>Ža›<·¨¬Ô> Sz>¶¶>³¶}>½‹Y>M1è>j{>ÂU=p´‚=ÎCñ>@Áz>;Y>¨÷<¨f=¾ÖØ>&#z>£øK> >(]‰>l?=ø%T>¦/Û>ŽS©>ƒŸ™>ßP>µý?åÊ>Ú¸a>¸ev>º=‚>òîÆ?-õ€?o?µ$?Þ ?{?¿¦—@/—@­½A>ÄCAž¿@A®Š>A¬—GA*³A)K@§`,@%2ö@g@„ÄP@òoìAoé•A¤%âA©0qAžœOAd—G@ëÇ%@B)×?¿¯ƒ?œ›º?{4??=,w?ʬ>fÖõ>¸îÁ>óØ>µý>Ûg ->Å‚Ý>è"ñ>›è>ûÞ>“›>¸;?¿2?@P>ÞŒŒ>a H¼8›o=>Dþ#>_V‰>¼ê¨=­ß=ÛìZ>3ñP>˜k“=á D>[k>uÄ?æ]>aM}>qÆ|>=¹Ñ>~»>p}>¨nô>u3ˆ=¸ž>Â&º>ðá>ÿÉ›>·8>¼=o‚¹¼4>%¿>Å@¡>ä·#>Â6n<× g>qPÁ>v‘>‚¢=¦èô=gê=£Æ>t÷a=XÄÎ=’„>Žæ«>Ã˶>2¡=^7¦>Eç>À>ž  ->Ÿ ˜>Ï5º>¿½w?[ú>Ø×DZ>³ÁÚ?eŽ?,+B?+¾>ô>ßcE> >w >¨x^>ëo‰>å?U¶?^=>Œôê>ÔÄì?Öà>ý!’=§›ë=Õ#;?‰?=Ãõ;Ú“>††>È9š½F¾=ŸÊ3;Ñ¢©¼Ñu4> ->¬@Ì=¦_ >fƒR>=žL=ŽJ>wá„>gèª=ÔD8>V=“«_>Cý›>a]Ì>H,E>ßÄç?§×?2Bm?âÖ>¹ÚÄ>Òá¼=¨•½_Ìe>P3Ã>¤øƒ>æF>×½£? -”d>å–R>Ž=>ŒÓ=¯ >vÜ>ûç±?öü>»T>jÔ¾=ÙÞë>³6n>;¸r>m|‡> º >jèÿ>¦¨,>HÐ÷>\è>Œäl=ö˜/<â5Ÿ= ¤X½¸Z„='þl=²¢Ï=ÌÙ½þõd=²3¾Qö÷>¾¾à>9¾!¼»²°=¶=gÓ:>bâÎ>, >lÝ>½â>é>oÉ=Û¼¦ÀK=µš±½‡@k>AnO½ƒ¿½®t˜=ß©;‡³=³©>>ŒŽ£>…¶%>Nß‘>@ëü½ýB¾\=5Ôò½i=;>…4»<±ò>b­>’‘=£¼I{>NrÛ=¬ñ>aÊ>‡Lô>E¦j=¬F»Äj¾ v;½äê=ú_>l! =8–>¾g>öÊ=+R >L…w½†÷¾*ð >=i=±±Ì½O¡>‡S¿>±W>4X*>5ÃÚ=ô­3<©„=}•w>'QÒ>£7>BO¬½²Ž„¾ Ók=>A´,>NÞ¿>)â">ŠRS=G£Ú¾<·ÿÑ>ÃÛ>VëÕ>¡x>ª? HÁ>‹¦>«/>u§F>¹Ž=ñÛ>ZhÃ;WYJ=ДÔ>7^®=á» w=¤¿D>΢=¡o$¾?d¾ §ö½ Ìì>•o>‡ð™>L&x>íR>+m÷>‹R<> a¦=ÿµ„>Do=ôg.½½?$=ãr>a¾=‘£ã=‹1µ=†±L¾jñ¥;ÒÒx>¹ 9>h÷R½˜¸‘½øŒÚ;î°!¾“`¾lnc½—A¾K\*¾»‚)>A >6ÞK>T[9>+羄²”½(f÷>RÍ>Q׸>ŽÍ »™­=@eŽ=£c‡½ÅÍ•¼}>>tQ³>Àtå>–ü–>W¤ß?Ò¢>­K®>Ä>™Uø<€ Â=ßç'>€ä->Ž.—>?Å´=íç>Yx>b(a=À½Åu½Â)>²"Ê>Šá@>“¢è>½Õ>£7>Ì/ >!©Ø½¢#×½Q>“bö=6ª -½Œ¯«:Äk@>OÊ>U@¢=.–·=P‰§>uÆ=é0>ØWu>…=@û½‰=ô;«Ò„½±£+½³(é½)u0<ð÷=¹È“½Äx¡>²Ó#>*(ë«>Ž6…»ˆw½§/¯½ÍѾ-´=ÅǼ֡ò½sؽ !“<{Ÿ>6‚=õº=žn=­Z>8>XÐU¾/‘>< >…ò^»€ë`½ªìk¾7ʾa ½ÕÉ=àð5<Š­Â½sî\>iæG=MÙ&¾Ê4á>?*™½ÃpÐ>&‡<Ƴ´½4ó<¬?>gß>R£ï>'`ª=F^³=J0á=µ¯É¾§äè½Gp±>6A9<0ÛB<6Š'¾ Ùн¢>=Ï=n¹ç½ãöƒ¾+§¾@ÌᾸƒ ¿8 3½àgi½¨³Ã¾‚æܾ¼A>od>”ƒC¾yåþ9Eñü>¶;•<¾<Á>g~Ñ>æ‰=½¨që>Žá·¾¿A¾$h>’Ôô<•.=5 ^=w®Ý=ž-C½Ìô<=ž*¾Â»ß¾r h;íõN=é!=½Ç1¾9½íçѽᅾł9¾Z'¹½ÝÙ+¾±ªt½Ûo^=¸ -y¼ðª1½q…<Às•>–yG>[Ãê>.’ =­6¾rþ5¾k[ª¾–ZŠ½[PW¾‘ão¾ŠåE¾L>¤–¾ÕÐ>¦S¾|ᄎ¡A> I¾#ìh>Öv>v_n½Álz?¦'™@ð]z@¿F>¦÷4ÀûÕÀÆýeÁwÁl8ƒÁ‘Á¬LfÁ·¦çÁˆuÁióÁ ¡ÌÀîûÈ¿“e>…»Á3:óÁLË"ÀÙËôÀÈûï¿Ø$ ¿Ú1ÏÀ0ÛiÀý¿¸då¿ÿôÞ¿ÛØ3¿õ_çÀ|÷OÀ;^C¾Ðh)¿€Ô¿åÃÀ|hœÀïÿwÀ§e¿¢î1Àw†ÀßЃÀÀ -šÀ±s¤À ¾ÅZÀ”A·ÀÏè¿“—ù?oM¿àÕ*ÀÀ¤Ó’À­ô›À#šfÀ,fØÀ! lÀbzÀ;nÀ@BÀ™¸!Àd…‚?ÂP“?h¦²¿Œ„¿Ù¾¿ð€C¿“¦‚¿ÞYÀ ^†ÀIØÉÀ[Ü¿_L¿ÛýÖÀ™¿zã¿Ur)¿e·F¾T¯ ÀJÀx$€¾®S®>ÉÿˆÒà¿£v¿°[[¿¿uk¾‹_¾‡‹¼¿é†Â¿Æàÿ¿ãÌ翼úÖ<éãž¿÷êÀu\¿ëýÀ×)Àí–¿G<½NDï?Z->Óæ}¿b¿¿ub{¿77Ñ¿¼ê%¿Â쳿Áíë¿’D¾¯§½žd«¿’£@¿ïM¢¿Ï£¿¤ß?¿„`¿`Hç¾r,>ù¯¿K86¿§¿c¿œŠÝÀ¬GÀ5ó¿£aö¿…&x¿®< ¿=,½Ù}¾¯ ˆ½æÊÂ=æ?¬¿NÖ¾Êr„>/"™½¬]¨¿* Q¿~ó¿ƒêg¿»H¡¿Á™›¿ðU¯¿¯(g¾¯ê½ OU=¿·×ÛÀ'n›¿¿½S¿ˆ ¿aN6¿-Œ¨>²{3?JT–¿¯]¾¿Û½™ÀËÀ5_¾¿”ß`¿2jÝ¿ì_—¿Äôà=ºƽBŽ¾¯/¾Và¿ëù¾ÉÈ>í3=Ï=¾­®Ð¿*M¿Pû>¯O>Æ!Æ¿$¤5¿ù÷¿ŒÛ*¾ç‚ó¿:Ê¿zË—ä?>wé¿ló¿‰Np?ƒñF?Y‡>¦èî>𠿡ḿˆŽD¾“c¿.³ ¿£Š¿„ÊÞ¿"]ï¿Ûy¾º.þ¾|õ™¿A%BÀ dÀ DD¿9ÐÜ¿pÚ»’ ¬=Ô-?"»|?+i]>Âýo>%$Ǿ•¡¿°¿B ¿hâ ¿ÜÕ¾À™¾oÆò¾k `¾hü½ï7$¾+ À¿]‡J¿žvοóz½7Oÿ¿ˆHð¿‹ÚD¼·v¾I'3>OÜE>×;?‘R´?re =£ˆÖ½/'é¾``¼HC>ô3v? µq?⌿Lã¿¢€h½š8>»t¥>×WB>ÆÝ£¿.ªü¿5ßæ¾GöC¾~DS¾ù%"¾À¤Ä<µ­?½»˜œ¾‚Ö¾ÌÀŒ¿8n`¾QW>ŸºË=Ž¼\=´M_=Lfê>G»>kMç>eÅB>d!¾ëÞ¿P%¾…ö×¾TXËV¾>Z¿§r¿W}¸=ýXl<† ×¾Wš½¶eØ»¦~4¿¶û¿8v`=í0>Á7J¾ãíð¿d >˲n>û«Û¾ÞѾÆÀ¾4èW½š6$>¹>?Ô¾ˆ¼é¾'#!½!Ý¿»ðPwºƒ´k>êáb??…ñ@F@Iza@Œb…@“$@ä@W@ê³ @üy@í£@Œ€@{…á@„F?Ìö_½ë;z>ÚD?TkÖ?+zÒ?ˆ -?q ‰?“q>ÉEˆ>¼H¼Ó¯²½Z^P¾Os=¾FBæ»OwŠ»e 0»£ü¾®zª¿—ùA¿x¤À¿!Ü*½ãÙ>×k½†må¾Å F¾!ʽ†·¿™7‰¿¹Èì> -…g>f+¿`ñп7÷´>}=O>_ÀË=ÔW=5|½}$¾PÑs¾½Ë.=ŒiK>ÉÃå>ýóo? _«?/¸"?6Tþ>ÕÑÌ>Å:ß¾iX侄J{¾Ärö¾d;#>’²>fõI=P°5½Ç½ú¾l”L¾¥[ľÃ*‘¾‘¡–¾…U >‹ ->„ñ^=ñðZ>QŒ>¼>0>di¾Éá…¾ôçÀ¿Eä­¿µä½nr< =¯ m½ø›¾‡ z=ÐSq>tk¾ÏÏã¾ùÓ¿½¾y>½é L>X¸=ž±Ì¾¿'¾ÐôÝ¿ç×¾¬5Z½«Cÿ~+¿JT2¾LßA=Œx>š >¯0t>ðH >ßf[>NÄŽ>F±j>ìWA>fŽM½«‘ƒ¾X¢Œ¾¾UÒ¾¢¡»¾a°O2û:>j²=»=¯¤>2bæ¼ed½—WQ>Úk>#–™>-1ó=þ×<èö;=™Ó>”µ>…8ð= ;½Sï.½¹Ø< ¤0>¶'¾5÷¥¾¥Ç¨¼nºè<å9¢½Òˆ½‘ûj>¤Þh>†Ø;ЗŸ½ën6¾É.ä¾ -çÚ>J ï>y­=Ù¿ˆ>7 ->O <üæ´< m½Š½^‹<<–Á>½qˆ¾„§¾0£g½œ0Õ> ç8>è³ö>~Ï=ÐÀ=Jo\»ûv>±b>5¶Þ<œJ=«_þ>lM=örn½³›–½ËÆx½€£ ½| s½ÐÌŽ=¦Z>>3Œ¼>3°>1ë­¾B"¾Yf=Ë)=ù³]>3=äÜ=_­½b9¾{mɽÈ<à<Årœ>J>,,Z½Ë«å¾0ô¾RS×½îÆ">sä[>P÷s=î>‚sÖ>Ú>áNk>ð#õ>t ->C‚2>ú=Ò3\>%À>'rË=ݯå=è#È>$þr>Hµþ> Úà>߬>ðlú>î¡>íüš> ^z=¹½¨=¸,&>°>:z>$tž>tÝb>ƒ‘&>_Ò>€ þ>Ú^>ƒ/>|Ú>>éw>uÖ>S¿²>kœP>pq`>¿Ýó?7‚m?!3>JµÓ>·RÓ>ù´#?+yŽ?<?+ö?1¹ž?<?ß…@i@­æRA4TAV¾A¦A ,A¿¨ArA‘?ASÌAb'@ÛÏ@­þé?ñ¤?Óõr?®Ÿ’?· Œ?¿?ê>!?ùÙ?ýâd?ûIV?õe@?†@%J@.£‡@AŸÄ@fL@„¨!@Õ£@üÓ°AGqAW=Abq»A]YÇA9KðAK]ÇAv©qBßBsvÿBÏIÃC¤·C8€Ch‡Bß’BÎ|?B9"BRAŒhÇA`ÏúA¬9@Ϥ&@š¥œ@† (@xÒð@Cßû@;"Ý@áÎ@ ÊW?Çm?ÇÚX?Å<~?¯¬i?›²ð?©Æ?³Ã?žÍ0?˜ˆ²?Mp½?S…Œ?‹}ˆ?knÚ?ˆ#?DèÐ?t“?¢=>µÒ>ûíe? -M?r|?\ô>â Ž>ñ¢'?Þ£>“jw¼]á»=ñNh>¥Už>¸Uï>>M>Žó¸?*¥)?¡{>£@>Å'Ž>õα>‡®>m;>D…'>Yã>ÞtÁ>×0œ>-G>|è>TÓ4>UÒb>Kœ÷>¨ß>>ÛNu>ŸpR>‰Åš=í ­=ê -‡¼ÿ8=¡ >³+Ê> Ìà½Ú`Â=²v3>Dú¥>Î>¹¼îø´<±QÎ>¯®>‰Nb=æ¶ë½7Ö’¾K?< +=Íi¬=â¨*=àǼØ=Z¢>°\ ->it‡=/¾ö>•>QÿÊ>v0ø>†ƒ?=’ç=‹ŒÜ>ÒÞú>ØÝ%>âl…?“®É@ƒ(@2$@P>@#s†@ic?ƒâx?oîŸ?%_>?\üÑ?©ž¿@v—@6íƒ@&TÌ@bš?ÇD­?°L¿?H†?­"=,3=äl:>`@£>ˆ?>™cÒ½n ¾3{C>V›î>V¹‰»Q=âÒb>òâ>¢¸|>}̲>Ιm>öã>’z>ì0>±Â>… >$˜›>pÝ>²ôÍ>¸I>» -?Üõ?²q½ç3—½õXo=n+œ>!up>¼ÇÑ?#H?(ß?€? ÃÇ?\[;?f?:º?­›>Û¦Ó>¸•¯>mã>‚UA>zÜë>7·ëÓǾJø¾·¶(>b.ÿ>tñ>/­>.PG>,•^=¹rØ=Zà ½ž@´½›¢Ž="ï=¥û3>¤h >I~ò½EOg>¼½>¢˜É>‚—>8>è4>PM‘>_¹P=‚áX¾+ét=ãÐe>šc>f£>Dç=¹¢u= °<½43u¼ø4a½©HJ<Á¯þ=R‡‰¾À9¾*J˜»ÖEŽ¼^˜ƒ¾ èY¼¿q4=ž1=Ád2>¿C<ò"ˆ;öÙ>cg>=nm> 3§>)#Ù>)cK;'Ô¼AC§½ñëý,Æ=³Žï<ë@V=ƒn±=µžç;{žë>JÄ>¨fò½/^Z½Ì†^>#:D=a>¾xã¾)Ž;½VÛX¾ù¾¨®¼g÷½/È'¾dñ¾8˜<¾B<½ïѽ^€>’>Vcf½l»¥¼PØ>¾s=Ñjs'á}=¨Ã€=Ík—=ÌFO=| “<]7,=Ò°w>.b¸;±—]½qd!=ªK>K-p>«ˆ >©Æ3>¨,ö>eÏ|>U X>{ -·>\ 6=£Ç =¶ƒ’=ÿ½=Š…½!k¾„¾«ö²>™ôÔ>ÔÈæ>èb>ò/÷?êñ>^\Qêi>^­½r -·½ó¿¾?ž;½xF ->6 >‹¶>ÀCý<˜á½od®=üÃï>Fhÿ>†yÆ>îtQ? -çh?€éû?˜‘"?S/ ?3×Ë>]¬6>)I$>z{·=€Ñ¾½t²ò? –›?&Vá?ro)?U¼µ?%¾y>ª0~>EŽ{=¹^<%@S½8½‰¨*<߶<ß9 ¾J¾”³¤¾tO=ün>EÒ}>GQz>‡-$>¼ÙÒ=Âh½4)ú¾>…w¾aØÞ¾&æ9½Â?/>hþQ>`#Ò=¬øÈ> ó{=íê«=Á¼p>Ðw½ÍR±¾/p³¾#0=;N=3¾›³¾ŠÚP¾´(½ØWu>§° >6*k=i’¬=>S>ÊH>HáC>ZÑ)>—sø>I)%¼~ªB=Eðx=÷µA>5ƒ= Øy;ôOY½­Œ¿¾6)̽ë¼Ñä¼>)•=Þ­˜>e}W>©f‹>Åø¹?<(?Qf:@:šÙ@zbA¼§A %A=‡@ßý@¹C×@ã?ô(?!Er?B?U²ø?k?…ÐÐ?“E=?ÒŽ2@›V1@ágATA¯Af@¡‚C@q’P?í¼>•È>ƒ§>H#÷>4{0=} 5¼²×´>Õv?%&>Ãï>žÆ>’ª>61 >ªŠ>rË>M'±>‘ú^>‘t>–Q½A¦¾ KÈ>< ->W·ƒ»¾ë‚>‰=ÙÅ=ÚC<ïã^¾GüÚ½Zn¾ Tg¾7nG¾·µ¾Kr½Ò·m>3»=w³=kKŠ>~† >ŒÝ佑TÛºŠÈÔ=*@;:`B=¦¥î¾aÓ¾¼49¾’ô½aùM>AŠM¼“ç¾wà\¼Àí;;ñ>¡àw>'À¾ÝG⾃">§² >(;×=Ý&¾ M¼Fk¼•Yè¾8»Ý¾‘Õ†¾pA=!ûp:¥…ï<ëëØ>:Ũ>> d>‚×Ó¼Š8½{}¹>ž«>ÃœØ>)Ÿ¾2ߊ¾&Çþ»Üµ>á¾#%¾ªj<ùQ>8£ ->ÈïÏ>‰e=Cü»>³„>¦s>i°=ÖåW>£¦Á<¡“å¾£ÎH½Ãi(>}µ>†ü~>Àm<– >båÁ>•"=ع=÷â?@1?HE£?Iö?"ú@>}fº>&z>‘w5=ìSð>£+>á Â?(žê?p·"?{<?/]ð>YØ2?!±?‰7U?·|?Ñ®û?üxt@¿„(ARcA\Ð-Af¹AhÇwAhÚAfü£AjÁAqvApV Asµ¾A€O&AœØ›AóälAÍ/GA¦¶AÐç©AálåAØ=cAÕr¡AÐ)ÛAÊÌ«AÅûzAÂqA¹ŠaA¢Ù‹A„EA5ìuA&ÚŽA" `A#q±A";ÂA&…ÍA%o±AžÄA kÕAÚ©A>&AžA$ÄA´ATX@öïà@ïüÂ@ãÐ@˜Ÿe?Ÿma>b½£S„¼ÈνÖÜÒ¼«b¼n0Ǿ†$¾‰%¾l”÷¾|8¿ ¸j¿*ß ¿Q»‚¿_ø¾÷IŽ¿.ë¿i6_¾àÐ×¾q[‹¾#µ¾š/>¾ë‹¾Á©!¾áÛŽ¾Â°q¾ŸoÜ¿ --«¾:@>·A=4Ÿ=¡È¿ -!W¿<¡š¿=U¿Ý—¾öùY¿yr½¸]Ù=Éìż+[¾RÞì¾â†`¾Æ󾾡t"¾Ïó>8#>5P!>Ê2>dG$>B²=žîí¾€ìÅ¿#¿)m3¿&F¾Ä…¾Ü©ª¾·¨¾=✾À1¾è=‚¿UT¾vº½†Ú³¾v27¾+À=÷z¶¼3i=ÉQ>²Ü»©Æ¹¾ÎG‹¾8!´== ¬¾5¨> >Iyi=C[;¯eŸ½Ç¾Û’ -¿º$¾º_5¾Éùp¾Wͽò Ô½íÒ™¾¿¬|¾´Ó¾¢ˆ¼¾ŠöE¾xM[¿#‘W¿5+ܾæ÷5¾:e¾õĦ¾¢õm¿Lù¿ÒE¾wq¨¾8˜½ƒ$é¾Õ¸é¾¾¿c¾ -Õ¶>ç)>{8Ö¾1½¥ k;öT$½Ì†ï¾ÉE¾ïÜ%¾H¿Õ=¦bÓ>~e½»Ëõ¾|H¾¬¨Ø¿Žë¾ÍZT¾îFˆ¿wø¿ ûã¿q¾¿§¿ê¾èê@¿˜-¿ E¿ /ç¾f+¾L ð¾ -†q¾Æu¾Å=X«Ž>ƒÿË>ŸûC?1Îà?ö›@ -°@ =@!5@‚ ?¤ m>›±²>IeŽ{ÿ¾þ}¾ 3 ->A¥=-*>MU= ->aÕm>“?;ÞT¾>U%¾ÊªD¾‰Ôÿ>|y8>y>¾¾ -¾K£B¾;Ù|>‘ @?Cô?Ìμ@@¬@)Þ”@wŸ?ë64?CíÁ?G>¼óÜ?jƒ>».r¼ñ.¾{ßô¾^·®¼4;ϼqH ¾B#¡½²,=µÖ=ÛkH½’í½RV¾LU‡¾¿eᄎŒ=ÈI…½…Vó¾î“¾GP¿”¿Vb¾$ e¾CÎý¾W:¾n¹W½85þ=‹Q'<ëÙc=Ê<='fž!¥<¾¤A>H¨>JéÖ='a¾š˜æ=²\>¢SÓ¾1W[¾“QÚ¾nã½óðù¾¯fÈ=51»½ïÛö½Å0>Z>ºi>…>­>ÂЙ¾F>ð¾}Cv>µý^>jUW>H¼ã>O®J½ð&µ¼WÐоA%g¾¤+¾)U)¾V|¿1c¾áJ5=û€?½–Œe¾‘¹;Çè¾  ã¾k§)¾·¾{¾óA‹½…/æ=è̃½\†-¾s*¾“ìྰÎD¾³‚¾³9=äl¾Qí³¾)L‹==óš¾5ûŸ¾c–T¾ ÿÏ¿x㟾í¾?m¾¾„箾¼È¾müÝ<ómn½о®Ã¿‚+¾£n¿ -趾•½sT:¾¡¾/¿¾Kd½…ÿ<}½¾¤¹¿4„¿¦U>qh>q_)½Àî±¾oc¾u«…½ãxI½âàN:¨=u½èˆ¾û̾„3¾¤E=—mƒ¾µ´¿¾Æw_¾û©¼¯þ©¾› P¿7"¿<ül¾æ륾óì¾æ¯z=舦>~ ¢¾­Ž˜¿0t¾Ðü¾yr¾µìÿ¿yD¾î@½à9¿E?¿L0¾Z¨=¤Iõ½…¬æ¾ì½ÍâȾ˶’¾³+o¿>™Ë¿-h¯¾]ž¾º,¤ >y%>4?¶?óÇ=â½Ìw±µ;¾PË¿&ù¾EP6=9)ξŠ8¾Ø*¾´û¼¼Mñ=Mlµ»ß?-ö•?ÂH@ œÀ@I§2@NËu@_^i@*ÕÔ@¾Ê@&x€@7–#@{´@_S@ìÞ?§8?#>@ -†>šhK?¸>¦ó>uØã>u–e½½ j»,Ì>“·[>!ù˾ÀóX¾¢ö$>3±Ô½M(¾×‘Ÿ¾ãÃý¾¬ÀÍ=ÄãÓ>RI>¾]Ä>Âò=àø¬=è¤1>ÍÝ~=Ý·»¾É®¾—õn¾ RŸ=±ÂN>èü©?#‹þ>7@È>~¤â>¸ƒ›=Ë’=z¸>`¼¾ŸeJ¾•®Ÿ<“:±½ÈÒ¾œíG¾vMï½pÖ}>ß;Œøì=jˆó¾aK= -™±> ]À¾ôÿ¾kXÖ» ȽÁ:ƾó´Ñ¾d®F¾4ÝÛ¿èd¾ÿOE½ÿx<œÈg>SKh>ý¨½Èrh¾1¹>89>Û…µº!‚¾r‘@½Nã¯=yøÆ=»#Q>“D>ˆ—û¾{H‘¾œ»ñ¾s= +=g~=à­X>ßP~>P®m<{A°½UAw=Œs¹=8RÌ<¬¨ª>z$=«),>ßæn?Àá>æá6>~(:>s[>ð¢9>Ë»‰>åýÛ>‰±²½Y‚F¾N)l=ºÁµ>æU{?9ô#>ã>‚ï©?•—>´!a=PŸn>G‰³?€”b>Æn<Ð,?åV?„­Ã?LûL>>µëq?YX×?]× ?TK±?˜Õ?‰ûd?+´?¥E?¹ßÞ?é5¤@[9@ŒaA/t¤A…}ÏA×PLB„üB=ÍB#AÚÓºA¢€ÇA6ÙË@ØЂ?Ì/ý??h?Hƒ{? -u*?Ü?Ó*?Pxa?4B>uyy=¾¤¾;ŽË>½h‡>­9j>ØY…?K{?|Pü?i+O??˜D?!A>·§Û>€£¢>Ÿt·>iÙa=®Uí>8î>¦iˆ>߯ܽ›ƒ½Q›=ÁSÔ½ùåp¾Ÿ¡n¾¢_½Éí>Ò>P‚„¾~J¾ú¡º¾3£¢>Ú,¼^4õ½µS=õù…¿ž¿¾‘v}>?û½>Ý®q>ϧ½Ç´¾®Î'==à_=ÛT>d¿"¾3b¿ J=´ê>%ú>þçº?(Ðî?H¥,?ï>@n>~cl½gU3¾±ò¾ð͈=g*#=}f¾$ÞÓ¼­òq>_„È»Þ&|¾NaÈ¿EK¾ë]¾8¾™¡à¾Vãý½MœA¾‚Ÿ -¿"Å¿¿PúÔ=ÆY>ИŽ>ñOL¾¸Ôœ¿"]¾‡ð€¼ÛkὓŽ¾¹ât¾‰ó]=ãš¼Úâõ¾m¬¾b:?=ƒKX>—”>xÛ´>Î\>fø>Á=Â….¾dO¾eaU¾+†¾ï ™¾Æù>ƒÇõ?¤b?}ê§@3 ®@|l@œbc@œ6Î@Ü@%c‘?j¡£>÷iÂ?6T>UŽ>/…B>Ï͸?L?S ê>ž8n>–! >U×Ô?ky‰?´+ò@=Z@qðE@‘ìf@€ZC@A7(?êf¤>ÔGÂ>g•ñ?ã=ô댾<×<j‡>\s”>•Ûì¾Ïœ=¾7A½Î¤½ÉYä½ÁN[>žeD>:< -¾œô=yÚH>îb=£äo<¹3D=á~“>\¦ô>X¼F½š†ñ¾Íß¾º¾.´ ¾3ã¾~K>—91>hd'¾Xç½{Û <•wß>“Ë,=òcç½õy"¾8©=òê?Ç$¿$·¾ø°Ë>¨ÞÔ=tI½õ¾y<9,½óy]¾Æ«}½­æ;ÌMO>7ñ[¾Q5¾Iòj¾™'C¾µN‡¾Òˆ¿ -.S¾«¸º¾¹¡¾§Œ¾¬.@¿‚;†ÿ½Ÿ2E¿&ßÑ¿˜6¿ù¾ži½oÕû>)"«¾n⾟ ¾ ÛW¼‹ñl½sQ¾‘-d>÷»?>é;ËCÎ>PÇ>«¼Ä¾Óv‚¾Èt^¾˜ e½ °¥½ò"j¾ãÀè¾Ç<¾¬d›="À½’ru½óƒ¾yZ½Bõ.>7Æ=Fz½xQ¾üÝ>1Yt>VD¾Ÿ„’½·?½Œv¿&¾­²R½Û3=Å”(<¦2½Åº¬>Û -o>Î’‚>„>QŸÄ>!JE¾f&ò¼ß5<=×2‹>£¡Á¼ÇbM¾½›¾ÿÃy¾™ëd;öË+¾ck¾Q \¾±U!½‰}f=r±O>b0=¤þ=H8½ÝK½’<]¼EcμèåÊ=Á¥È>Š×s½Ð¼þ1‘>‚'›ºãšO½âÚ~¾kP¾ŸÏH¾²5I½¶'="b;>¤Ô¾7¯š½¾á;þA»>ŸÅ>‹^×>'VºÕt½j®!¾*ü»½";äÆ£>h>‚ðS>˜4*>êt=±åþ<ô+=¤\<Ý•½‡ua< é˜=FÛ‡>z¿2=±k=ð#>ÇÓ½‘Ô?¾4>r<âj6¾Y„¾‰œz¿ #оáá>Jä•>`¤=œåú¾A¾§Pt¾Œy½rÏB=ö(¼ä#g¾6=¶€>oÓ"=!¸½Ä†C¾0ÝX¾‘b½–S½­«¾9ô—½#© = ³½pNÛ»)ƒï=<µO½l¶¾2S„¾ºè;¿‚&¼^Èÿ=WŽ¾0`¼¾;Ó7¾Mý¼ïQ=íI ¾S#¾¨/¾”l¾['F½¿‘T¾Räì¾»V;ÈÁ¾½²È¿#)å¿-¾îŒQ¾]½ÛÝ`=²pP<úªŒ¾Ö(¾oNǾNšÍ¾ŽnÊ=”-¤=¼%R<‡€õ¾%P»½ì?;½HüؾL=M×]>i·>¹aa>”m<ÅÕZ¾Ò÷¾E#ž½æB½b©—¾h¸>* ¯¾~@¿¾©³¸¾~¿Ë¾0Zg¾0lú¾2'¥>­kw>ÚÙJ>ÛE¼²¿g>6¦½G8¾Œyý¾‘Áõ¾ X>i>¾ø/齈žB>•ì°=L9>CÅu>\Θ­>‹D>U´Æ=š@½‹]=0·ì>Y)¡>1 W>ò#?ëd=¸W&½÷÷ˆ¾+„"¾UvK½lþ >8¤Ú>!ß=ߘµ<9°i¼Û)>¡X>É‚$>²ðÔ½9X…>R|?åa>ȹ>¬ÛÞ>ÀQ$> ÿÌ=Hïˆ=<­m>LJ>â¯3?5?1•[?tß=­‘R>:>ä/±?çŠ>íÓ?S?P=?C¢*?<Ä?oU?aó§?F á?f5(?–¡O?‹ç?Œ¨Ì?‘ße?ŽUT?µ‰?Æþ-?À1?æÏ @ .@‰@1áE@F1 @Žæa@ò +AˆÄB Y#B6ÅnBl‹(Bi°B† -ãB_H¹B(cçAþAA›òß@Âs.@…s#@EøV@³ß@Á?êN?âŒÇ?Ùsœ?²¸M?ŸìÉ?™’õ?³âÏ?ø?^A?7k -?-ô?f±ú?~.l?gtF?.ÒŸ?<ýU?&xÈ?“?'oG?.ÅE?/? ñý?7Ç}?M»k?@¶µ>€êV=!j=çU>ËQ/>¹èò>ì>lÔ×>@&>‘ÔÍ>®©¼>…Rë>°:¬>Šó{=ì>Oæ>}w^>P*t=h9=†F=€]>Üš>=šá>>‹õ§>ŸW±>sŽ>}¤¾9ž¾1¶f> =Þw=ÒPS>$K€>‰Ñ>-©¼œ(¾QB½²ÇÍ>Z8<³4=Î"é¼4J½=b¶p>L¿f=ï,>°=û‡81ª>­p¾+$a=¥sÿ>÷-½E‚<|{Ø>)Û½£6 ¾6Â:½¥è 3ø>bÓ®=½v€½Ô›¾°ô>Zœ½µŸ´¾&n÷½qåé½oyý=†ø>VŽq>¬Š=zF„=MZ½ÈȽýh=¬£ê>P¡ò=/Õ¾7€8¾6M®½ø…½ó¨ ½}˜„½‹»z½Hwx<,o7¼ q ½«Ñ™<ý›½«Xl¾룾6Ê&½ßŠ½|1ѨÌ>ä> ­<ÆX+½]é½ÚᎽˆž°>‡öW>5½½éK=cžs¼”3½„1l<©ÿÿ=JÙñ=Ë[ï>ƒn:¼´b­½‘‚=Ô»â]½%›½”櫼¶¼bú6¼O«=äü=à’û=Ï7=ƒ}Á¼÷Ÿ½L¦S=„_}½ ÇὄÏ=©m¯=™¤Ž¼ÉK½ÈT&<é­V=ôO=*G=‚<ô;ÑX»=m <ýo±¼ùÊô½'š<õ±i;1pC½'¢¼Œ6=‹J0=·¸î=À뽂‡€=„&Q>ßù>PE=öòp=}Ò-»ðªâ½Gäa½ÌÔ-½´ìX¼\éÍ=8u¼uѪ¼¢a=;¦ðg¼Ø'½™ÁX½,Kâ¼ö÷/½ ½®Ä´<½‰4;œ«.½0èŸ=§_™=dÌ°=›ØÁ=B£»”>^»›Òž½‡~½Zæ<Å‚H¼r™Å=7ø=–—ý=¢ón½‡–-½ß¼ã•`½åý.½P5ºÈ„v=ps$;å8ý»™%=Ž+=(%»±ÎR½ŽŽ=nô5¼#¦‚¾ Hƽæl=[¤J=A º7Ko>¤ï=ë–S½@F½ûIæ½mé(½F;»¯L;=9Xú<èF>½×Üá=9ø=Á×=S]½¾¡¼Ñ «=ç` ½v¨3½/¢Ø= z½qÿ÷¾šâ½½á=áÌ»s'<Í-ç>¶>é3½˜ÿä¾Uº½]»é<ìË@=^Èû=\ ¼¨S½üßê½9jŠ½Ü»Ïÿ;<¹tß= °¹Ðm:8‹œ=þt°<»Ã<öŸW< Ö<$Õú½JßÕ¾À½ƒ8J½…»Èxy:ˆË<ãã^=ÎHW=‚ˆ;d1”=½ È=K¹-;ÿ <œ3<ŸÖ'=„zÑ<«×“½AÙM¼m1›½$ 3¼Bð;¡à=ßWL=½(ð=læ$=‰ö\<üÆ?=sž=–ù¥<•g'=Æ’”=ÚmM>? >'!Æ=ÿ;>WX">èÎ?]sI?ï -»@!az@Vd@Uf¼@4$ˆ@nl?¥ù?78‰>¬G=áh<=›á[=¯¿æ=(…÷þ=¶=ч=–+O=ž…\=hÒ3=;÷²=";È=%Fu=Jc=Rùœ;Úgm</“|j¼§J»Žù ¼N$¢Ö;n2a;ŽÁë;Ã7Ã;(S"»ºHÜ;L¡»€”Y»Lr‹:è!±:¯\"8•%€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€ \ No newline at end of file diff --git a/templates/html/FieldLib_template.html b/templates/html/FieldLib_template.html new file mode 100644 index 000000000..6512a0f4c --- /dev/null +++ b/templates/html/FieldLib_template.html @@ -0,0 +1,174 @@ + + + + + + {{name}} + + + + + + + + {{title | safe}} +
    + +
    +
    +
    +
    + {{ fig | safe }} +
    +
    +
    +
    +
    +
    + {{ fig_selct | safe }} +
    +
    +
    +
    +
    + {{ fig_meta | safe }} +
    +
    +
    +
    +
    + {{ fig_dev | safe }} +
    +
    +
    +
    +
    +
    + {{ fig_std | safe }} +
    +
    +
    + + +
    +
    +
    + {{ fig_mad | safe }} +
    +
    +
    + +
    +
    +
    + {{ fig_count | safe }} +
    +
    +
    +
    +
    + + + + + + + + + diff --git a/templates/html/QA_noSOS_template.html b/templates/html/QA_noSOS_template.html new file mode 100644 index 000000000..e41bd4186 --- /dev/null +++ b/templates/html/QA_noSOS_template.html @@ -0,0 +1,128 @@ + + + + + + {{name}} + + + + + + + + {{title | safe}} +
    + +
    +
    +
    +
    + {{ fig | safe }} +
    +
    +
    +
    +
    +
    + {{ fig_FieldSN2 | safe }} +
    +
    +
    +
    +

    If the plot is showing small, try zooming your browser or interacting with the plot, and it should reload to span the screen.

    +
    + + + + + + + + + diff --git a/templates/html/QA_template.html b/templates/html/QA_template.html new file mode 100644 index 000000000..73aa99b7f --- /dev/null +++ b/templates/html/QA_template.html @@ -0,0 +1,135 @@ + + + + + + {{name}} + + + + + + + + {{title | safe}} +
    + +
    +
    +
    +
    + {{ fig | safe }} +
    +
    +
    +
    +
    +
    + {{ fig_FieldSN2 | safe }} +
    +
    +
    +
    +
    +
    + {{ fig_SOS | safe }} +
    +
    +
    +
    +

    If the plot is showing small, try zooming your browser or interacting with the plot, and it should reload to span the screen.

    +
    + + + + + + + + + diff --git a/templates/html/SOS_Summary_template.html b/templates/html/SOS_Summary_template.html new file mode 100644 index 000000000..5334f2119 --- /dev/null +++ b/templates/html/SOS_Summary_template.html @@ -0,0 +1,23 @@ + + + SOS plots for MJD {{MJD}} + + + +

    SOS plots for MJD {{MJD}} (SOS Logs)

    +
    This page last updated {{UPDATE}} UTC.
    + +
    + + {% for item in exps %} + + + + + {% endfor %} +
    {{ item }} +
    +
    +
    + + diff --git a/templates/html/SOS_index_template.html b/templates/html/SOS_index_template.html new file mode 100644 index 000000000..49e91f253 --- /dev/null +++ b/templates/html/SOS_index_template.html @@ -0,0 +1,18 @@ + + + BOSS Spectro Analysis + + + + + +

    BOSS Spectro Analysis

    +
    + +
  • logfile-current.html
  • + {% for item in logfiles %} +
  • {{item}}
  • + {% endfor %} + + + diff --git a/templates/html/arc2trace_template.html b/templates/html/arc2trace_template.html new file mode 100644 index 000000000..48ed8af17 --- /dev/null +++ b/templates/html/arc2trace_template.html @@ -0,0 +1,43 @@ + + + + + {{name}} + + + +

    {{OBS}} MJD = {{MJD}}

    +

    + spPlanTrace-{{MJD}}_{{OBS}}.par
    + {% for item in tf %} + {{item}}
    + {% endfor %} +

    +

    This page last updated {{date}}

    +

    + + + + + + + + + + + + {% for item in exps %} + + + + + + + + {% endfor %} + +
    {{blue}} {{blue}} {{red}} {{red}}
    {{item.exp}}
    ({{blue}}: {{ item.bFit | default('f') }},{{ item.bLog | default('l') }})
    + ({{red}}: {{ item.rFit | default('f') }},{{ item.rLog | default('l') }})
    +
    + + diff --git a/templates/html/daily_Summary_all_template.html b/templates/html/daily_Summary_all_template.html new file mode 100644 index 000000000..033227716 --- /dev/null +++ b/templates/html/daily_Summary_all_template.html @@ -0,0 +1,103 @@ + + + {{title}} + + + + + + + +

    +

    {{title}}

    +
    + +
    +
    + {{table | safe}} +
    +
    + +
    + + +
    + + + + + + + + diff --git a/templates/html/daily_index_template.html b/templates/html/daily_index_template.html new file mode 100644 index 000000000..f90f79539 --- /dev/null +++ b/templates/html/daily_index_template.html @@ -0,0 +1,67 @@ + + + {{title}} + + + + + +
    +

    + {{title}}

    +
    +
    +
    +
    + + {% for item in daily_status %} + + {% endfor %} +
    {{item.mjd}}{{item.apo}}{{item.lco}}

    +
    +
    + + + {% for item in key %} + {{item}} + {% endfor %} +
    ColorMeaning

    +
    +
    +
    + +
    + + +
    + diff --git a/templates/html/daily_log_body_template.html b/templates/html/daily_log_body_template.html new file mode 100644 index 000000000..f61931ab9 --- /dev/null +++ b/templates/html/daily_log_body_template.html @@ -0,0 +1,22 @@ +

    RUN2D: {{run2d}}
    + Observatory: {{obs}}
    + MJD: {{mjd}}
    + {% if daily is not none %} + {% for tobs in daily.OBS %} + {{tobs}} SOS: {% if daily[tobs+'_soslog'] is not none %} {{ daily[tobs+'_soslog'] }} {% else %}{{ daily[tobs+'_soslog'] | default('N/A')}} {% endif %}
    + {% if daily[tobs+'_checksum'] is not none %} {{daily[tobs+'_checksum']}} {% endif %} + {{tobs}} Night Log: {% if daily[tobs+'_nightlog'] is not none %} {{daily[tobs+'_nightlog']}} {% else %} {{ nightlog | default('???')}} {% endif %}
    + {{tobs}} spTrace: {{daily[tobs+'_sptrace'].plan | default('N/A')}} {{daily[tobs+'_sptrace'].log | default('N/A')}} {{daily[tobs+'_sptrace'].elog | default('N/A')}} {{daily[tobs+'_sptrace'].plots | default('N/A')}}
    + {% endfor %} + {% else %} + {% if reduxlog is not none %} + Redux Coadd: {{reduxlog}} {{reduxelog}} + {% endif %} + {% endif %} + + {% for item in summary %} + {{item}}
    + {% endfor %} +

    +
    + {{fmjdlog}} diff --git a/templates/html/daily_log_template.html b/templates/html/daily_log_template.html new file mode 100644 index 000000000..15d8537a8 --- /dev/null +++ b/templates/html/daily_log_template.html @@ -0,0 +1,79 @@ + + + + + + {{name}} + + + + + + + {{body}} +
    +
    + {{updated | default('')}} +
    + + diff --git a/templates/html/fieldlist_template.html b/templates/html/fieldlist_template.html new file mode 100644 index 000000000..bbb44f78b --- /dev/null +++ b/templates/html/fieldlist_template.html @@ -0,0 +1,53 @@ + + + + + {{title}} + + + + + +

    {{title}}

    +

    Last Update: {{date}}, Last Update MJD: {{MJD}}

    + +

    +

    +

    (S/N)^2 values are {{red}}corrected for galactic dust reddening

    +
    + {{FIELDLIST_TABLE|safe}} +
    + + diff --git a/templates/irontemplate.dat b/templates/irontemplate.dat deleted file mode 100644 index d8a8fdb9d..000000000 --- a/templates/irontemplate.dat +++ /dev/null @@ -1,2002 +0,0 @@ -# Boroson optical Fe template -# log10(wave) flux (erg/s/cm2/A) -3.566514 2.698728E-16 -3.5666678989 1.989182E-16 -3.5668217978 1.149670E-16 -3.5669756967 6.660908E-17 -3.5671295956 7.540848E-17 -3.5672834945 1.299832E-16 -3.5674373934 1.622967E-16 -3.5675912923 2.003827E-16 -3.5677451912 3.407178E-16 -3.5678990901 5.344449E-16 -3.568052989 6.888640E-16 -3.5682068879 8.109969E-16 -3.5683607868 8.989126E-16 -3.5685146857 9.012872E-16 -3.5686685846 8.248234E-16 -3.5688224835 7.478125E-16 -3.5689763824 7.368375E-16 -3.5691302813 8.431189E-16 -3.5692841802 1.049535E-15 -3.5694380791 1.306436E-15 -3.569591978 1.538648E-15 -3.5697458769 1.679577E-15 -3.5698997758 1.684525E-15 -3.5700536747 1.588856E-15 -3.5702075736 1.522729E-15 -3.5703614725 1.532254E-15 -3.5705153714 1.609884E-15 -3.5706692703 1.708356E-15 -3.5708231692 1.774999E-15 -3.5709770681 1.880132E-15 -3.571130967 2.044323E-15 -3.5712848659 2.174241E-15 -3.5714387648 2.214679E-15 -3.5715926637 2.146825E-15 -3.5717465626 2.035392E-15 -3.5719004615 1.981764E-15 -3.5720543604 1.987683E-15 -3.5722082593 2.028712E-15 -3.5723621582 2.029391E-15 -3.5725160571 1.963501E-15 -3.572669956 1.889710E-15 -3.5728238549 1.862299E-15 -3.5729777538 1.927705E-15 -3.5731316527 2.069765E-15 -3.5732855516 2.243653E-15 -3.5734394505 2.380650E-15 -3.5735933494 2.426872E-15 -3.5737472483 2.371895E-15 -3.5739011472 2.236101E-15 -3.5740550461 2.068745E-15 -3.574208945 1.927959E-15 -3.5743628439 1.870079E-15 -3.5745167428 1.880385E-15 -3.5746706417 1.933989E-15 -3.5748245406 2.036122E-15 -3.5749784395 2.170964E-15 -3.5751323384 2.298792E-15 -3.5752862373 2.391165E-15 -3.5754401362 2.430571E-15 -3.5755940351 2.421006E-15 -3.575747934 2.375504E-15 -3.5759018329 2.339148E-15 -3.5760557318 2.310696E-15 -3.5762096307 2.194944E-15 -3.5763635296 1.975093E-15 -3.5765174285 1.701170E-15 -3.5766713274 1.452495E-15 -3.5768252263 1.313619E-15 -3.5769791252 1.254723E-15 -3.5771330241 1.257414E-15 -3.577286923 1.374452E-15 -3.5774408219 1.549676E-15 -3.5775947208 1.621248E-15 -3.5777486197 1.610338E-15 -3.5779025186 1.614050E-15 -3.5780564175 1.574797E-15 -3.5782103164 1.464164E-15 -3.5783642153 1.345207E-15 -3.5785181142 1.260289E-15 -3.5786720131 1.233374E-15 -3.578825912 1.206947E-15 -3.5789798109 1.089858E-15 -3.5791337098 9.506917E-16 -3.5792876087 8.561120E-16 -3.5794415076 8.090377E-16 -3.5795954065 8.039220E-16 -3.5797493054 8.222692E-16 -3.5799032043 8.433552E-16 -3.5800571032 8.487856E-16 -3.5802110021 8.360813E-16 -3.580364901 8.121645E-16 -3.5805187999 7.951857E-16 -3.5806726988 8.085142E-16 -3.5808265977 8.714530E-16 -3.5809804966 1.016914E-15 -3.5811343955 1.273173E-15 -3.5812882944 1.484668E-15 -3.5814421933 1.528661E-15 -3.5815960922 1.426935E-15 -3.5817499911 1.251557E-15 -3.58190389 1.121007E-15 -3.5820577889 1.105392E-15 -3.5822116878 1.234618E-15 -3.5823655867 1.427857E-15 -3.5825194856 1.597409E-15 -3.5826733845 1.682842E-15 -3.5828272834 1.681555E-15 -3.5829811823 1.650847E-15 -3.5831350812 1.618731E-15 -3.5832889801 1.599557E-15 -3.583442879 1.574085E-15 -3.5835967779 1.525302E-15 -3.5837506768 1.448867E-15 -3.5839045757 1.363467E-15 -3.5840584746 1.303549E-15 -3.5842123735 1.331261E-15 -3.5843662724 1.490471E-15 -3.5845201713 1.704452E-15 -3.5846740702 1.903637E-15 -3.5848279691 2.044608E-15 -3.584981868 2.131849E-15 -3.5851357669 2.204627E-15 -3.5852896658 2.265112E-15 -3.5854435647 2.310082E-15 -3.5855974636 2.330743E-15 -3.5857513625 2.330831E-15 -3.5859052614 2.323474E-15 -3.5860591603 2.377713E-15 -3.5862130592 2.571962E-15 -3.5863669581 2.797031E-15 -3.586520857 2.953413E-15 -3.5866747559 3.018672E-15 -3.5868286548 2.937452E-15 -3.5869825537 2.637697E-15 -3.5871364526 2.252067E-15 -3.5872903515 1.946274E-15 -3.5874442504 1.720358E-15 -3.5875981493 1.568332E-15 -3.5877520482 1.481080E-15 -3.5879059471 1.443341E-15 -3.588059846 1.441782E-15 -3.5882137449 1.432429E-15 -3.5883676438 1.403897E-15 -3.5885215427 1.445909E-15 -3.5886754416 1.562041E-15 -3.5888293405 1.674403E-15 -3.5889832394 1.718239E-15 -3.5891371383 1.649782E-15 -3.5892910372 1.559219E-15 -3.5894449361 1.471238E-15 -3.589598835 1.294887E-15 -3.5897527339 1.025721E-15 -3.5899066328 7.115400E-16 -3.5900605317 4.399486E-16 -3.5902144306 2.855044E-16 -3.5903683295 2.679488E-16 -3.5905222284 3.700252E-16 -3.5906761273 5.413918E-16 -3.5908300262 7.099348E-16 -3.5909839251 8.104870E-16 -3.591137824 8.321092E-16 -3.5912917229 7.855016E-16 -3.5914456218 7.016064E-16 -3.5915995207 6.189381E-16 -3.5917534196 5.747399E-16 -3.5919073185 5.742571E-16 -3.5920612174 6.164321E-16 -3.5922151163 7.048268E-16 -3.5923690152 7.946225E-16 -3.5925229141 8.121717E-16 -3.592676813 7.765785E-16 -3.5928307119 7.167831E-16 -3.5929846108 6.281585E-16 -3.5931385097 5.143579E-16 -3.5932924086 3.850998E-16 -3.5934463075 2.853765E-16 -3.5936002064 2.663771E-16 -3.5937541053 3.735255E-16 -3.5939080042 5.951898E-16 -3.5940619031 8.526760E-16 -3.594215802 1.054382E-15 -3.5943697009 1.121040E-15 -3.5945235998 1.138663E-15 -3.5946774987 1.170461E-15 -3.5948313976 1.206383E-15 -3.5949852965 1.246144E-15 -3.5951391954 1.288968E-15 -3.5952930943 1.291814E-15 -3.5954469932 1.224343E-15 -3.5956008921 1.086674E-15 -3.595754791 9.445888E-16 -3.5959086899 9.078720E-16 -3.5960625888 9.292761E-16 -3.5962164877 9.424674E-16 -3.5963703866 9.364835E-16 -3.5965242855 9.105101E-16 -3.5966781844 8.795269E-16 -3.5968320833 8.473130E-16 -3.5969859822 8.225034E-16 -3.5971398811 8.423151E-16 -3.59729378 9.261688E-16 -3.5974476789 1.075009E-15 -3.5976015778 1.216195E-15 -3.5977554767 1.276488E-15 -3.5979093756 1.336276E-15 -3.5980632745 1.424236E-15 -3.5982171734 1.495146E-15 -3.5983710723 1.507197E-15 -3.5985249712 1.428841E-15 -3.5986788701 1.305622E-15 -3.598832769 1.163289E-15 -3.5989866679 9.874677E-16 -3.5991405668 8.058054E-16 -3.5992944657 6.590680E-16 -3.5994483646 5.555733E-16 -3.5996022635 4.953412E-16 -3.5997561624 4.771897E-16 -3.5999100613 4.371348E-16 -3.6000639602 2.983137E-16 -3.6002178591 1.943480E-16 -3.600371758 1.977548E-16 -3.6005256569 2.634041E-16 -3.6006795558 3.092086E-16 -3.6008334547 2.450959E-16 -3.6009873536 1.775827E-16 -3.6011412525 1.681323E-16 -3.6012951514 1.782345E-16 -3.6014490503 1.835276E-16 -3.6016029492 1.677440E-16 -3.6017568481 2.107436E-16 -3.601910747 3.379137E-16 -3.6020646459 4.809132E-16 -3.6022185448 5.633041E-16 -3.6023724437 5.203100E-16 -3.6025263426 4.338550E-16 -3.6026802415 3.615625E-16 -3.6028341404 2.917754E-16 -3.6029880393 2.794215E-16 -3.6031419382 3.858143E-16 -3.6032958371 5.152727E-16 -3.603449736 5.935440E-16 -3.6036036349 5.949700E-16 -3.6037575338 5.592722E-16 -3.6039114327 5.494293E-16 -3.6040653316 5.342657E-16 -3.6042192305 5.169469E-16 -3.6043731294 5.459925E-16 -3.6045270283 6.226667E-16 -3.6046809272 7.197079E-16 -3.6048348261 7.602452E-16 -3.604988725 7.139193E-16 -3.6051426239 6.093615E-16 -3.6052965228 5.116453E-16 -3.6054504217 4.779960E-16 -3.6056043206 4.853606E-16 -3.6057582195 5.071352E-16 -3.6059121184 5.191758E-16 -3.6060660173 5.029369E-16 -3.6062199162 4.547386E-16 -3.6063738151 3.972768E-16 -3.606527714 3.606515E-16 -3.6066816129 3.753560E-16 -3.6068355118 4.029252E-16 -3.6069894107 4.099755E-16 -3.6071433096 4.038324E-16 -3.6072972085 4.095316E-16 -3.6074511074 4.569181E-16 -3.6076050063 5.773572E-16 -3.6077589052 7.229381E-16 -3.6079128041 7.077851E-16 -3.608066703 6.154763E-16 -3.6082206019 6.349195E-16 -3.6083745008 6.608226E-16 -3.6085283997 6.672800E-16 -3.6086822986 7.393832E-16 -3.6088361975 8.887299E-16 -3.6089900964 1.088876E-15 -3.6091439953 1.273980E-15 -3.6092978942 1.382606E-15 -3.6094517931 1.370982E-15 -3.609605692 1.274204E-15 -3.6097595909 1.145706E-15 -3.6099134898 1.018656E-15 -3.6100673887 9.213661E-16 -3.6102212876 8.712472E-16 -3.6103751865 8.322837E-16 -3.6105290854 7.822113E-16 -3.6106829843 7.315503E-16 -3.6108368832 7.328534E-16 -3.6109907821 8.372490E-16 -3.611144681 9.718518E-16 -3.6112985799 1.079960E-15 -3.6114524788 1.135979E-15 -3.6116063777 1.184267E-15 -3.6117602766 1.271846E-15 -3.6119141755 1.376548E-15 -3.6120680744 1.480363E-15 -3.6122219733 1.570245E-15 -3.6123758722 1.618091E-15 -3.6125297711 1.625520E-15 -3.61268367 1.652540E-15 -3.6128375689 1.666347E-15 -3.6129914678 1.599427E-15 -3.6131453667 1.451450E-15 -3.6132992656 1.253692E-15 -3.6134531645 1.068192E-15 -3.6136070634 9.398861E-16 -3.6137609623 8.932688E-16 -3.6139148612 9.272382E-16 -3.6140687601 9.836438E-16 -3.614222659 9.760806E-16 -3.6143765579 9.216723E-16 -3.6145304568 8.654480E-16 -3.6146843557 8.714716E-16 -3.6148382546 9.418101E-16 -3.6149921535 1.042853E-15 -3.6151460524 1.124288E-15 -3.6152999513 1.162981E-15 -3.6154538502 1.166234E-15 -3.6156077491 1.154622E-15 -3.615761648 1.128631E-15 -3.6159155469 1.039883E-15 -3.6160694458 8.851779E-16 -3.6162233447 6.952985E-16 -3.6163772436 5.549833E-16 -3.6165311425 4.977806E-16 -3.6166850414 4.921415E-16 -3.6168389403 4.864092E-16 -3.6169928392 4.490326E-16 -3.6171467381 4.173836E-16 -3.617300637 4.077711E-16 -3.6174545359 4.191137E-16 -3.6176084348 4.290587E-16 -3.6177623337 4.208976E-16 -3.6179162326 3.919062E-16 -3.6180701315 3.395350E-16 -3.6182240304 2.777769E-16 -3.6183779293 2.632995E-16 -3.6185318282 2.904469E-16 -3.6186857271 3.147093E-16 -3.618839626 3.628012E-16 -3.6189935249 4.496654E-16 -3.6191474238 5.740192E-16 -3.6193013227 6.715225E-16 -3.6194552216 7.022114E-16 -3.6196091205 7.446061E-16 -3.6197630194 8.345257E-16 -3.6199169183 9.743052E-16 -3.6200708172 1.171867E-15 -3.6202247161 1.406780E-15 -3.620378615 1.642786E-15 -3.6205325139 1.819277E-15 -3.6206864128 1.907897E-15 -3.6208403117 1.979908E-15 -3.6209942106 1.970330E-15 -3.6211481095 1.771835E-15 -3.6213020084 1.471301E-15 -3.6214559073 1.162377E-15 -3.6216098062 9.124144E-16 -3.6217637051 7.541783E-16 -3.621917604 6.831398E-16 -3.6220715029 6.613137E-16 -3.6222254018 6.594398E-16 -3.6223793007 6.440116E-16 -3.6225331996 5.517882E-16 -3.6226870985 4.234844E-16 -3.6228409974 3.803582E-16 -3.6229948963 3.653986E-16 -3.6231487952 3.368391E-16 -3.6233026941 3.227992E-16 -3.623456593 3.381869E-16 -3.6236104919 3.855599E-16 -3.6237643908 4.105015E-16 -3.6239182897 4.018614E-16 -3.6240721886 3.817025E-16 -3.6242260875 3.330223E-16 -3.6243799864 2.719187E-16 -3.6245338853 2.476844E-16 -3.6246877842 2.296361E-16 -3.6248416831 1.986564E-16 -3.624995582 1.879820E-16 -3.6251494809 2.223458E-16 -3.6253033798 3.147812E-16 -3.6254572787 4.138362E-16 -3.6256111776 5.156957E-16 -3.6257650765 6.718238E-16 -3.6259189754 8.584082E-16 -3.6260728743 1.063924E-15 -3.6262267732 1.287769E-15 -3.6263806721 1.505503E-15 -3.626534571 1.679734E-15 -3.6266884699 1.774403E-15 -3.6268423688 1.746587E-15 -3.6269962677 1.583251E-15 -3.6271501666 1.442778E-15 -3.6273040655 1.429540E-15 -3.6274579644 1.555193E-15 -3.6276118633 1.705254E-15 -3.6277657622 1.773601E-15 -3.6279196611 1.694555E-15 -3.62807356 1.486680E-15 -3.6282274589 1.222160E-15 -3.6283813578 1.016551E-15 -3.6285352567 9.036226E-16 -3.6286891556 8.730804E-16 -3.6288430545 8.996481E-16 -3.6289969534 9.371375E-16 -3.6291508523 9.267589E-16 -3.6293047512 8.775457E-16 -3.6294586501 8.258192E-16 -3.629612549 8.235899E-16 -3.6297664479 8.303719E-16 -3.6299203468 8.066989E-16 -3.6300742457 7.900995E-16 -3.6302281446 8.268725E-16 -3.6303820435 9.530895E-16 -3.6305359424 1.127260E-15 -3.6306898413 1.293961E-15 -3.6308437402 1.410113E-15 -3.6309976391 1.473664E-15 -3.631151538 1.496510E-15 -3.6313054369 1.473093E-15 -3.6314593358 1.403737E-15 -3.6316132347 1.331254E-15 -3.6317671336 1.334601E-15 -3.6319210325 1.462267E-15 -3.6320749314 1.674184E-15 -3.6322288303 1.798842E-15 -3.6323827292 1.803522E-15 -3.6325366281 1.745736E-15 -3.632690527 1.724267E-15 -3.6328444259 1.761625E-15 -3.6329983248 1.828467E-15 -3.6331522237 1.875404E-15 -3.6333061226 1.893311E-15 -3.6334600215 1.903703E-15 -3.6336139204 1.932255E-15 -3.6337678193 1.960681E-15 -3.6339217182 1.944965E-15 -3.6340756171 1.835342E-15 -3.634229516 1.667855E-15 -3.6343834149 1.549616E-15 -3.6345373138 1.545453E-15 -3.6346912127 1.633395E-15 -3.6348451116 1.645994E-15 -3.6349990105 1.617964E-15 -3.6351529094 1.631438E-15 -3.6353068083 1.719180E-15 -3.6354607072 1.805848E-15 -3.6356146061 1.763493E-15 -3.635768505 1.605414E-15 -3.6359224039 1.437198E-15 -3.6360763028 1.355688E-15 -3.6362302017 1.362993E-15 -3.6363841006 1.383444E-15 -3.6365379995 1.316103E-15 -3.6366918984 1.318801E-15 -3.6368457973 1.343344E-15 -3.6369996962 1.260899E-15 -3.6371535951 1.133418E-15 -3.637307494 1.052308E-15 -3.6374613929 1.191439E-15 -3.6376152918 1.005805E-15 -3.6377691907 9.667329E-16 -3.6379230896 9.611512E-16 -3.6380769885 9.386914E-16 -3.6382308874 8.940378E-16 -3.6383847863 8.213426E-16 -3.6385386852 7.765560E-16 -3.6386925841 7.765560E-16 -3.638846483 7.878523E-16 -3.6390003819 7.934340E-16 -3.6391542808 8.157609E-16 -3.6393081797 8.436694E-16 -3.6394620786 8.772926E-16 -3.6396159775 9.052010E-16 -3.6397698764 9.498549E-16 -3.6399237753 1.022550E-15 -3.6400776742 1.050591E-15 -3.6402315731 1.061755E-15 -3.640385472 1.117572E-15 -3.6405393709 1.162359E-15 -3.6406932698 1.162359E-15 -3.6408471687 1.190668E-15 -3.6410010676 1.172821E-15 -3.6411549665 1.168986E-15 -3.6413088654 1.222661E-15 -3.6414627643 1.332101E-15 -3.6416166632 1.516820E-15 -3.6417705621 1.740994E-15 -3.641924461 1.900366E-15 -3.6420783599 1.900187E-15 -3.6422322588 1.737812E-15 -3.6423861577 1.542069E-15 -3.6425400566 1.372483E-15 -3.6426939555 1.261725E-15 -3.6428478544 1.226925E-15 -3.6430017533 1.253048E-15 -3.6431556522 1.298173E-15 -3.6433095511 1.302549E-15 -3.64346345 1.258980E-15 -3.6436173489 1.192123E-15 -3.6437712478 1.146640E-15 -3.6439251467 1.150606E-15 -3.6440790456 1.210033E-15 -3.6442329445 1.305405E-15 -3.6443868434 1.459200E-15 -3.6445407423 1.683023E-15 -3.6446946412 1.916331E-15 -3.6448485401 2.114615E-15 -3.645002439 2.229350E-15 -3.6451563379 2.173778E-15 -3.6453102368 1.941467E-15 -3.6454641357 1.599711E-15 -3.6456180346 1.274645E-15 -3.6457719335 1.040890E-15 -3.6459258324 9.172782E-16 -3.6460797313 8.637054E-16 -3.6462336302 8.373042E-16 -3.6463875291 8.064316E-16 -3.646541428 7.741048E-16 -3.6466953269 7.459063E-16 -3.6468492258 7.240496E-16 -3.6470031247 7.119986E-16 -3.6471570236 7.077108E-16 -3.6473109225 7.325797E-16 -3.6474648214 8.979799E-16 -3.6476187203 1.121500E-15 -3.6477726192 1.263200E-15 -3.6479265181 1.317474E-15 -3.648080417 1.331293E-15 -3.6482343159 1.365946E-15 -3.6483882148 1.435056E-15 -3.6485421137 1.490284E-15 -3.6486960126 1.474941E-15 -3.6488499115 1.391955E-15 -3.6490038104 1.315375E-15 -3.6491577093 1.307846E-15 -3.6493116082 1.311638E-15 -3.6494655071 1.331492E-15 -3.649619406 1.384866E-15 -3.6497733049 1.451499E-15 -3.6499272038 1.484607E-15 -3.6500811027 1.469571E-15 -3.6502350016 1.475550E-15 -3.6503889005 1.509064E-15 -3.6505427994 1.543035E-15 -3.6506966983 1.533456E-15 -3.6508505972 1.461613E-15 -3.6510044961 1.339625E-15 -3.651158395 1.211140E-15 -3.6513122939 1.153339E-15 -3.6514661928 1.199110E-15 -3.6516200917 1.295711E-15 -3.6517739906 1.449250E-15 -3.6519278895 1.667206E-15 -3.6520817884 1.943443E-15 -3.6522356873 2.139504E-15 -3.6523895862 2.163456E-15 -3.6525434851 2.039066E-15 -3.652697384 1.850161E-15 -3.6528512829 1.669286E-15 -3.6530051818 1.532097E-15 -3.6531590807 1.483614E-15 -3.6533129796 1.531129E-15 -3.6534668785 1.647671E-15 -3.6536207774 1.799809E-15 -3.6537746763 1.990554E-15 -3.6539285752 2.238797E-15 -3.6540824741 2.397911E-15 -3.654236373 2.462304E-15 -3.6543902719 2.526197E-15 -3.6545441708 2.645836E-15 -3.6546980697 2.797021E-15 -3.6548519686 2.893362E-15 -3.6550058675 2.934406E-15 -3.6551597664 2.892130E-15 -3.6553136653 2.745852E-15 -3.6554675642 2.520871E-15 -3.6556214631 2.257902E-15 -3.655775362 2.007918E-15 -3.6559292609 1.825795E-15 -3.6560831598 1.706872E-15 -3.6562370587 1.638547E-15 -3.6563909576 1.631780E-15 -3.6565448565 1.668298E-15 -3.6566987554 1.726133E-15 -3.6568526543 1.789199E-15 -3.6570065532 1.887279E-15 -3.6571604521 2.007508E-15 -3.657314351 2.092672E-15 -3.6574682499 2.160256E-15 -3.6576221488 2.259443E-15 -3.6577760477 2.432976E-15 -3.6579299466 2.603287E-15 -3.6580838455 2.672234E-15 -3.6582377444 2.597946E-15 -3.6583916433 2.540478E-15 -3.6585455422 2.526904E-15 -3.6586994411 2.496873E-15 -3.65885334 2.372908E-15 -3.6590072389 2.183581E-15 -3.6591611378 1.988545E-15 -3.6593150367 1.815585E-15 -3.6594689356 1.720324E-15 -3.6596228345 1.717629E-15 -3.6597767334 1.763934E-15 -3.6599306323 1.819202E-15 -3.6600845312 1.894816E-15 -3.6602384301 2.042027E-15 -3.660392329 2.201090E-15 -3.6605462279 2.351381E-15 -3.6607001268 2.510457E-15 -3.6608540257 2.710042E-15 -3.6610079246 2.901308E-15 -3.6611618235 2.986897E-15 -3.6613157224 2.870416E-15 -3.6614696213 2.615321E-15 -3.6616235202 2.344626E-15 -3.6617774191 2.153598E-15 -3.661931318 1.987962E-15 -3.6620852169 1.814847E-15 -3.6622391158 1.679773E-15 -3.6623930147 1.561120E-15 -3.6625469136 1.442822E-15 -3.6627008125 1.327901E-15 -3.6628547114 1.278476E-15 -3.6630086103 1.265735E-15 -3.6631625092 1.218258E-15 -3.6633164081 1.117800E-15 -3.663470307 1.043546E-15 -3.6636242059 1.068674E-15 -3.6637781048 1.169674E-15 -3.6639320037 1.300307E-15 -3.6640859026 1.455036E-15 -3.6642398015 1.682393E-15 -3.6643937004 1.881382E-15 -3.6645475993 1.991521E-15 -3.6647014982 2.026437E-15 -3.6648553971 2.086829E-15 -3.665009296 2.204734E-15 -3.6651631949 2.362180E-15 -3.6653170938 2.550395E-15 -3.6654709927 2.681453E-15 -3.6656248916 2.676590E-15 -3.6657787905 2.528020E-15 -3.6659326894 2.295815E-15 -3.6660865883 2.028941E-15 -3.6662404872 1.746187E-15 -3.6663943861 1.546859E-15 -3.666548285 1.406901E-15 -3.6667021839 1.249521E-15 -3.6668560828 1.131389E-15 -3.6670099817 1.084352E-15 -3.6671638806 1.091038E-15 -3.6673177795 1.070443E-15 -3.6674716784 1.097950E-15 -3.6676255773 1.232188E-15 -3.6677794762 1.448073E-15 -3.6679333751 1.595500E-15 -3.668087274 1.622911E-15 -3.6682411729 1.583174E-15 -3.6683950718 1.558975E-15 -3.6685489707 1.586937E-15 -3.6687028696 1.653623E-15 -3.6688567685 1.708701E-15 -3.6690106674 1.688891E-15 -3.6691645663 1.571426E-15 -3.6693184652 1.392536E-15 -3.6694723641 1.180663E-15 -3.669626263 9.998044E-16 -3.6697801619 8.908845E-16 -3.6699340608 7.565884E-16 -3.6700879597 6.078082E-16 -3.6702418586 4.940746E-16 -3.6703957575 4.709647E-16 -3.6705496564 4.788977E-16 -3.6707035553 4.551890E-16 -3.6708574542 3.923201E-16 -3.6710113531 3.381726E-16 -3.671165252 2.955150E-16 -3.6713191509 2.567754E-16 -3.6714730498 2.782740E-16 -3.6716269487 3.823747E-16 -3.6717808476 5.133306E-16 -3.6719347465 5.662674E-16 -3.6720886454 5.294958E-16 -3.6722425443 4.626090E-16 -3.6723964432 4.422011E-16 -3.6725503421 4.223676E-16 -3.672704241 4.032299E-16 -3.6728581399 4.007694E-16 -3.6730120388 4.227237E-16 -3.6731659377 3.978738E-16 -3.6733198366 3.276306E-16 -3.6734737355 2.946406E-16 -3.6736276344 3.505365E-16 -3.6737815333 4.383454E-16 -3.6739354322 4.736074E-16 -3.6740893311 4.812030E-16 -3.67424323 5.215830E-16 -3.6743971289 6.310988E-16 -3.6745510278 8.032010E-16 -3.6747049267 9.333841E-16 -3.6748588256 9.686989E-16 -3.6750127245 9.417975E-16 -3.6751666234 8.742219E-16 -3.6753205223 7.585726E-16 -3.6754744212 6.063224E-16 -3.6756283201 4.411259E-16 -3.675782219 2.885547E-16 -3.6759361179 1.813694E-16 -3.6760900168 1.404696E-16 -3.6762439157 1.030165E-16 -3.6763978146 7.430761E-17 -3.6765517135 7.340888E-17 -3.6767056124 7.203155E-17 -3.6768595113 2.164958E-17 -3.6770134102 -2.480165E-18 -3.6771673091 9.001133E-17 -3.677321208 2.183785E-16 -3.6774751069 2.599711E-16 -3.6776290058 2.360815E-16 -3.6777829047 3.268512E-16 -3.6779368036 3.963577E-16 -3.6780907025 3.704167E-16 -3.6782446014 2.707253E-16 -3.6783985003 1.893876E-16 -3.6785523992 1.553490E-16 -3.6787062981 1.779330E-16 -3.678860197 2.391096E-16 -3.6790140959 3.134085E-16 -3.6791679948 3.613691E-16 -3.6793218937 3.775054E-16 -3.6794757926 3.707562E-16 -3.6796296915 3.263994E-16 -3.6797835904 2.703991E-16 -3.6799374893 2.244536E-16 -3.6800913882 2.038775E-16 -3.6802452871 2.106482E-16 -3.680399186 2.437063E-16 -3.6805530849 2.722720E-16 -3.6807069838 2.967110E-16 -3.6808608827 3.455525E-16 -3.6810147816 4.247217E-16 -3.6811686805 4.728697E-16 -3.6813225794 4.691320E-16 -3.6814764783 4.474220E-16 -3.6816303772 4.479915E-16 -3.6817842761 4.571791E-16 -3.681938175 4.966066E-16 -3.6820920739 4.132132E-16 -3.6822459728 4.132132E-16 -3.6823998717 4.132132E-16 -3.6825537706 3.964680E-16 -3.6827076695 3.964680E-16 -3.6828615684 4.132132E-16 -3.6830154673 4.132132E-16 -3.6831693662 4.132132E-16 -3.6833232651 4.243765E-16 -3.683477164 4.243765E-16 -3.6836310629 4.243765E-16 -3.6837849618 4.132132E-16 -3.6839388607 4.132132E-16 -3.6840927596 3.964680E-16 -3.6842466585 3.853045E-16 -3.6844005574 3.853045E-16 -3.6845544563 3.853045E-16 -3.6847083552 3.685594E-16 -3.6848622541 3.685594E-16 -3.685016153 3.685594E-16 -3.6851700519 3.685594E-16 -3.6853239508 3.573961E-16 -3.6854778497 3.573961E-16 -3.6856317486 3.685594E-16 -3.6857856475 3.573961E-16 -3.6859395464 3.685594E-16 -3.6860934453 3.573961E-16 -3.6862473442 3.685594E-16 -3.6864012431 3.685594E-16 -3.686555142 3.685594E-16 -3.6867090409 3.853045E-16 -3.6868629398 3.908862E-16 -3.6870168387 4.803265E-16 -3.6871707376 4.579997E-16 -3.6873246365 4.970717E-16 -3.6874785354 5.251132E-16 -3.6876324343 5.641851E-16 -3.6877863332 5.641851E-16 -3.6879402321 6.032571E-16 -3.688094131 5.920938E-16 -3.6882480299 6.257170E-16 -3.6884019288 6.815340E-16 -3.6885558277 6.424621E-16 -3.6887097266 7.151572E-16 -3.6888636255 7.039938E-16 -3.6890175244 8.269243E-16 -3.6891714233 8.045975E-16 -3.6893253222 7.990157E-16 -3.6894792211 8.325060E-16 -3.68963312 8.269243E-16 -3.6897870189 8.828743E-16 -3.6899409178 8.548329E-16 -3.6900948167 8.715779E-16 -3.6902487156 8.772926E-16 -3.6904026145 9.038517E-16 -3.6905565134 8.828743E-16 -3.6907104123 1.041468E-15 -3.6908643112 1.089367E-15 -3.6910182101 1.137013E-15 -3.691172109 1.218919E-15 -3.6913260079 1.343183E-15 -3.6914799068 1.474572E-15 -3.6916338057 1.636165E-15 -3.6917877046 1.882448E-15 -3.6919416035 2.231662E-15 -3.6920955024 2.602546E-15 -3.6922494013 2.829090E-15 -3.6924033002 2.784728E-15 -3.6925571991 2.548541E-15 -3.692711098 2.263103E-15 -3.6928649969 2.057892E-15 -3.6930188958 1.810923E-15 -3.6931727947 1.334392E-15 -3.6933266936 1.226254E-15 -3.6934805925 1.134204E-15 -3.6936344914 1.082134E-15 -3.6937883903 9.940816E-16 -3.6939422892 9.059339E-16 -3.6940961881 8.619553E-16 -3.694250087 8.459632E-16 -3.6944039859 8.258776E-16 -3.6945578848 8.138835E-16 -3.6947117837 8.058873E-16 -3.6948656826 7.898951E-16 -3.6950195815 7.898951E-16 -3.6951734804 7.538175E-16 -3.6953273793 7.658115E-16 -3.6954812782 7.338272E-16 -3.6956351771 7.057455E-16 -3.695789076 7.218330E-16 -3.6959429749 6.897533E-16 -3.6960968738 6.777592E-16 -3.6962507727 6.617669E-16 -3.6964046716 6.817572E-16 -3.6965585705 6.937514E-16 -3.6967124694 7.097436E-16 -3.6968663683 7.218330E-16 -3.6970202672 7.658115E-16 -3.6971741661 8.058873E-16 -3.697328065 8.258776E-16 -3.6974819639 8.779475E-16 -3.6976358628 9.059339E-16 -3.6977897617 9.340156E-16 -3.6979436606 9.980797E-16 -3.6980975595 1.033237E-15 -3.6982514584 1.056873E-15 -3.6984053573 1.094803E-15 -3.6985592562 1.161096E-15 -3.6987131551 1.307750E-15 -3.698867054 1.369316E-15 -3.6990209529 1.383497E-15 -3.6991748518 1.516083E-15 -3.6993287507 1.572921E-15 -3.6994826496 1.771800E-15 -3.6996365485 1.951657E-15 -3.6997904474 2.022677E-15 -3.6999443463 2.074788E-15 -3.7000982452 2.236345E-15 -3.7002521441 2.392922E-15 -3.700406043 2.520635E-15 -3.7005599419 2.518265E-15 -3.7007138408 2.352914E-15 -3.7008677397 2.066589E-15 -3.7010216386 1.755172E-15 -3.7011755375 1.554318E-15 -3.7013294364 1.461751E-15 -3.7014833353 1.415726E-15 -3.7016372342 1.362456E-15 -3.7017911331 1.251964E-15 -3.701945032 1.123191E-15 -3.7020989309 1.013232E-15 -3.7022528298 9.175014E-16 -3.7024067287 8.659908E-16 -3.7025606276 8.427863E-16 -3.7027145265 8.093473E-16 -3.7028684254 7.477189E-16 -3.7030223243 6.848218E-16 -3.7031762232 6.539226E-16 -3.7033301221 6.497954E-16 -3.703484021 6.366328E-16 -3.7036379199 6.198236E-16 -3.7037918188 5.352664E-16 -3.7039457177 4.395074E-16 -3.7040996166 4.261853E-16 -3.7042535155 4.549492E-16 -3.7044074144 4.322926E-16 -3.7045613133 3.891986E-16 -3.7047152122 4.167168E-16 -3.7048691111 5.210579E-16 -3.70502301 5.777622E-16 -3.7051769089 5.377330E-16 -3.7053308078 4.590704E-16 -3.7054847067 4.439889E-16 -3.7056386056 4.363584E-16 -3.7057925045 4.056768E-16 -3.7059464034 3.798444E-16 -3.7061003023 4.063087E-16 -3.7062542012 4.294018E-16 -3.7064081001 4.342773E-16 -3.706561999 3.962489E-16 -3.7067158979 3.206995E-16 -3.7068697968 3.373661E-16 -3.7070236957 4.044948E-16 -3.7071775946 4.708496E-16 -3.7073314935 5.280612E-16 -3.7074853924 5.975226E-16 -3.7076392913 6.199177E-16 -3.7077931902 5.983704E-16 -3.7079470891 5.842398E-16 -3.708100988 6.198495E-16 -3.7082548869 6.710967E-16 -3.7084087858 6.898347E-16 -3.7085626847 6.658379E-16 -3.7087165836 6.255259E-16 -3.7088704825 5.685972E-16 -3.7090243814 5.351860E-16 -3.7091782803 5.988990E-16 -3.7093321792 7.653033E-16 -3.7094860781 8.823149E-16 -3.709639977 8.930917E-16 -3.7097938759 8.907361E-16 -3.7099477748 9.554372E-16 -3.7101016737 1.027571E-15 -3.7102555726 1.054401E-15 -3.7104094715 1.027427E-15 -3.7105633704 9.841275E-16 -3.7107172693 9.622833E-16 -3.7108711682 9.334008E-16 -3.7110250671 8.838887E-16 -3.711178966 8.733902E-16 -3.7113328649 8.548329E-16 -3.7114867638 8.380878E-16 -3.7116406627 8.492512E-16 -3.7117945616 8.269243E-16 -3.7119484605 8.492512E-16 -3.7121023594 9.052010E-16 -3.7122562583 9.667329E-16 -3.7124101572 1.061755E-15 -3.7125640561 1.145614E-15 -3.712717955 1.453006E-15 -3.7128718539 1.542447E-15 -3.7130257528 1.754818E-15 -3.7131796517 2.051180E-15 -3.7133335506 2.182451E-15 -3.7134874495 2.178508E-15 -3.7136413484 2.052099E-15 -3.7137952473 1.793444E-15 -3.7139491462 1.495411E-15 -3.7141030451 1.291807E-15 -3.714256944 1.244296E-15 -3.7144108429 1.282926E-15 -3.7145647418 1.325155E-15 -3.7147186407 1.354191E-15 -3.7148725396 1.408832E-15 -3.7150264385 1.448687E-15 -3.7151803374 1.433957E-15 -3.7153342363 1.452422E-15 -3.7154881352 1.611591E-15 -3.7156420341 1.837172E-15 -3.715795933 1.952612E-15 -3.7159498319 1.850279E-15 -3.7161037308 1.563135E-15 -3.7162576297 1.236286E-15 -3.7164115286 1.008259E-15 -3.7165654275 9.257529E-16 -3.7167193264 9.076247E-16 -3.7168732253 8.509222E-16 -3.7170271242 7.570045E-16 -3.7171810231 7.144559E-16 -3.717334922 7.578684E-16 -3.7174888209 8.625537E-16 -3.7176427198 9.740986E-16 -3.7177966187 1.047379E-15 -3.7179505176 1.106810E-15 -3.7181044165 1.191678E-15 -3.7182583154 1.322923E-15 -3.7184122143 1.494935E-15 -3.7185661132 1.699094E-15 -3.7187200121 1.888881E-15 -3.718873911 1.975669E-15 -3.7190278099 1.897578E-15 -3.7191817088 1.694458E-15 -3.7193356077 1.508961E-15 -3.7194895066 1.344559E-15 -3.7196434055 1.166525E-15 -3.7197973044 1.003472E-15 -3.7199512033 9.546156E-16 -3.7201051022 9.331098E-16 -3.7202590011 9.275280E-16 -3.7204129 9.331098E-16 -3.7205667989 9.667329E-16 -3.7207206978 1.022550E-15 -3.7208745967 1.084082E-15 -3.7210284956 1.134317E-15 -3.7211823945 1.257381E-15 -3.7213362934 1.357984E-15 -3.7214901923 1.670959E-15 -3.7216440912 1.872299E-15 -3.7217979901 2.121751E-15 -3.721951889 2.309131E-15 -3.7221057879 2.440074E-15 -3.7222596868 2.421912E-15 -3.7224135857 2.284460E-15 -3.7225674846 2.115485E-15 -3.7227213835 1.975221E-15 -3.7228752824 1.853115E-15 -3.7230291813 1.701508E-15 -3.7231830802 1.518255E-15 -3.7233369791 1.331056E-15 -3.723490878 1.169232E-15 -3.7236447769 1.051531E-15 -3.7237986758 1.007184E-15 -3.7239525747 9.976986E-16 -3.7241064736 9.724388E-16 -3.7242603725 9.400339E-16 -3.7244142714 9.830704E-16 -3.7245681703 1.065496E-15 -3.7247220692 1.183793E-15 -3.7248759681 1.342387E-15 -3.725029867 1.531723E-15 -3.7251837659 1.762846E-15 -3.7253376648 2.058868E-15 -3.7254915637 2.348088E-15 -3.7256454626 2.473618E-15 -3.7257993615 2.322518E-15 -3.7259532604 1.993182E-15 -3.7261071593 1.700877E-15 -3.7262610582 1.532732E-15 -3.7264149571 1.455705E-15 -3.726568856 1.407348E-15 -3.7267227549 1.346074E-15 -3.7268766538 1.359342E-15 -3.7270305527 1.430933E-15 -3.7271844516 1.434511E-15 -3.7273383505 1.279940E-15 -3.7274922494 1.074106E-15 -3.7276461483 9.354684E-16 -3.7278000472 8.692283E-16 -3.7279539461 8.077311E-16 -3.728107845 7.211445E-16 -3.7282617439 6.826600E-16 -3.7284156428 7.012608E-16 -3.7285695417 7.410485E-16 -3.7287234406 7.775010E-16 -3.7288773395 8.414570E-16 -3.7290312384 1.001236E-15 -3.7291851373 1.231211E-15 -3.7293390362 1.428151E-15 -3.7294929351 1.485930E-15 -3.729646834 1.376835E-15 -3.7298007329 1.177315E-15 -3.7299546318 1.008454E-15 -3.7301085307 8.759453E-16 -3.7302624296 7.935916E-16 -3.7304163285 7.832519E-16 -3.7305702274 7.950121E-16 -3.7307241263 7.395535E-16 -3.7308780252 6.555600E-16 -3.7310319241 5.835126E-16 -3.731185823 5.005081E-16 -3.7313397219 3.781910E-16 -3.7314936208 3.198368E-16 -3.7316475197 3.698969E-16 -3.7318014186 4.213029E-16 -3.7319553175 4.160949E-16 -3.7321092164 4.299464E-16 -3.7322631153 4.783742E-16 -3.7324170142 4.879932E-16 -3.7325709131 4.606386E-16 -3.732724812 4.561519E-16 -3.7328787109 5.074889E-16 -3.7330326098 5.780747E-16 -3.7331865087 6.888624E-16 -3.7333404076 7.961492E-16 -3.7334943065 8.355337E-16 -3.7336482054 8.148661E-16 -3.7338021043 8.247468E-16 -3.7339560032 8.878838E-16 -3.7341099021 9.869468E-16 -3.734263801 1.091888E-15 -3.7344176999 1.167211E-15 -3.7345715988 1.180744E-15 -3.7347254977 1.125346E-15 -3.7348793966 1.072622E-15 -3.7350332955 1.005928E-15 -3.7351871944 8.882014E-16 -3.7353410933 7.384921E-16 -3.7354949922 6.174867E-16 -3.7356488911 5.088818E-16 -3.73580279 4.122172E-16 -3.7359566889 3.668056E-16 -3.7361105878 3.528905E-16 -3.7362644867 2.930337E-16 -3.7364183856 2.068248E-16 -3.7365722845 1.399236E-16 -3.7367261834 1.492418E-16 -3.7368800823 2.133825E-16 -3.7370339812 2.239615E-16 -3.7371878801 1.096240E-16 -3.737341779 3.247111E-17 -3.7374956779 6.128125E-17 -3.7376495768 1.190176E-16 -3.7378034757 1.590517E-16 -3.7379573746 2.159245E-16 -3.7381112735 2.585955E-16 -3.7382651724 2.701829E-16 -3.7384190713 3.087025E-16 -3.7385729702 3.848271E-16 -3.7387268691 4.321309E-16 -3.738880768 4.002092E-16 -3.7390346669 3.594479E-16 -3.7391885658 3.345502E-16 -3.7393424647 3.055689E-16 -3.7394963636 2.724487E-16 -3.7396502625 2.693168E-16 -3.7398041614 3.150248E-16 -3.7399580603 3.785294E-16 -3.7401119592 4.308138E-16 -3.7402658581 4.956118E-16 -3.740419757 5.548770E-16 -3.7405736559 5.639559E-16 -3.7407275548 5.697496E-16 -3.7408814537 5.903368E-16 -3.7410353526 5.843368E-16 -3.7411892515 5.385585E-16 -3.7413431504 4.658623E-16 -3.7414970493 3.930628E-16 -3.7416509482 3.813187E-16 -3.7418048471 4.125335E-16 -3.741958746 4.903170E-16 -3.7421126449 6.161175E-16 -3.7422665438 7.795614E-16 -3.7424204427 9.507222E-16 -3.7425743416 1.068710E-15 -3.7427282405 1.143875E-15 -3.7428821394 1.209174E-15 -3.7430360383 1.258858E-15 -3.7431899372 1.243342E-15 -3.7433438361 1.108368E-15 -3.743497735 8.400323E-16 -3.7436516339 2.346828E-16 -3.7438055328 2.583434E-16 -3.7439594317 4.255206E-16 -3.7441133306 5.001780E-16 -3.7442672295 4.348040E-16 -3.7444211284 2.511525E-16 -3.7445750273 4.705268E-17 -3.7447289262 -9.560884E-17 -3.7448828251 -1.322299E-16 -3.745036724 -1.058939E-16 -3.7451906229 -8.717324E-17 -3.7453445218 -6.963881E-18 -3.7454984207 8.847386E-17 -3.7456523196 9.925278E-17 -3.7458062185 4.191034E-17 -3.7459601174 2.496418E-17 -3.7461140163 1.037704E-16 -3.7462679152 2.150024E-16 -3.7464218141 2.296577E-16 -3.746575713 1.514245E-16 -3.7467296119 1.010642E-16 -3.7468835108 1.144795E-16 -3.7470374097 1.298972E-16 -3.7471913086 1.748200E-16 -3.7473452075 2.467492E-16 -3.7474991064 1.571958E-16 -3.7476530053 4.922532E-17 -3.7478069042 7.373337E-17 -3.7479608031 8.758321E-17 -3.748114702 -8.362714E-17 -3.7482686009 -2.151201E-16 -3.7484224998 -2.252307E-16 -3.7485763987 -1.653345E-16 -3.7487302976 -1.267123E-16 -3.7488841965 -1.379825E-16 -3.7490380954 -1.570793E-16 -3.7491919943 -1.541270E-16 -3.7493458932 -1.067317E-16 -3.7494997921 -3.051775E-17 -3.749653691 -3.324393E-17 -3.7498075899 -1.192402E-16 -3.7499614888 -1.487081E-16 -3.7501153877 -8.492818E-17 -3.7502692866 -5.182402E-17 -3.7504231855 -7.126088E-17 -3.7505770844 -6.960324E-17 -3.7507309833 -3.640675E-17 -3.7508848822 -2.134481E-17 -3.7510387811 -1.050406E-17 -3.75119268 5.650641E-17 -3.7513465789 1.071412E-16 -3.7515004778 8.264966E-17 -3.7516543767 6.591441E-17 -3.7518082756 8.774457E-17 -3.7519621745 7.656627E-17 -3.7521160734 6.508135E-17 -3.7522699723 1.099195E-16 -3.7524238712 2.168442E-16 -3.7525777701 3.425926E-16 -3.752731669 4.062785E-16 -3.7528855679 3.616547E-16 -3.7530394668 2.714855E-16 -3.7531933657 2.571427E-16 -3.7533472646 2.235862E-16 -3.7535011635 2.276100E-16 -3.7536550624 3.136902E-16 -3.7538089613 3.527469E-16 -3.7539628602 2.744243E-16 -3.7541167591 2.326643E-16 -3.754270658 2.299830E-16 -3.7544245569 2.015714E-16 -3.7545784558 2.348208E-16 -3.7547323547 2.544737E-16 -3.7548862536 1.860749E-16 -3.7550401525 1.053290E-16 -3.7551940514 8.349077E-17 -3.7553479503 8.343020E-17 -3.7555018492 7.976890E-17 -3.7556557481 3.703948E-17 -3.755809647 6.394252E-18 -3.7559635459 1.770002E-17 -3.7561174448 2.313755E-17 -3.7562713437 3.235666E-19 -3.7564252426 -1.067770E-17 -3.7565791415 -3.562621E-17 -3.7567330404 -2.271531E-17 -3.7568869393 -1.986208E-17 -3.7570408382 -4.935788E-17 -3.7571947371 -5.349437E-17 -3.757348636 -2.429672E-17 -3.7575025349 2.157139E-17 -3.7576564338 4.820422E-17 -3.7578103327 8.114576E-19 -3.7579642316 -3.849426E-17 -3.7581181305 -2.608861E-17 -3.7582720294 2.663919E-19 -3.7584259283 2.931369E-17 -3.7585798272 1.577938E-17 -3.7587337261 4.328000E-17 -3.758887625 1.650248E-17 -3.7590415239 2.035399E-17 -3.7591954228 2.606331E-17 -3.7593493217 1.845092E-17 -3.7595032206 2.606331E-17 -3.7596571195 2.606331E-17 -3.7598110184 2.606331E-17 -3.7599649173 1.650248E-17 -3.7601188162 2.035399E-17 -3.7602727151 2.986956E-17 -3.760426614 2.986956E-17 -3.7605805129 6.074454E-17 -3.7607344118 3.557882E-17 -3.7608883107 9.667187E-18 -3.7610422096 -7.578488E-17 -3.7611961085 -3.972288E-17 -3.7613500074 2.426665E-17 -3.7615039063 -2.528690E-17 -3.7616578052 -1.354469E-16 -3.7618117041 -1.643278E-16 -3.761965603 -1.199403E-16 -3.7621195019 -6.751107E-17 -3.7622734008 -3.874583E-17 -3.7624272997 -5.313141E-17 -3.7625811986 -4.343373E-17 -3.7627350975 3.576851E-17 -3.7628889964 8.202116E-17 -3.7630428953 -1.043841E-17 -3.7631967942 -9.472751E-17 -3.7633506931 -7.546852E-17 -3.763504592 -1.550324E-17 -3.7636584909 5.196971E-18 -3.7638123898 2.598062E-17 -3.7639662887 7.997473E-17 -3.7641201876 1.420726E-17 -3.7642740865 1.420726E-17 -3.7644279854 1.948348E-17 -3.7645818843 1.948348E-17 -3.7647357832 2.739789E-17 -3.7648896821 1.948348E-17 -3.765043581 2.475978E-17 -3.7651974799 1.948348E-17 -3.7653513788 1.420726E-17 -3.7655052777 1.948348E-17 -3.7656591766 1.948348E-17 -3.7658130755 1.420726E-17 -3.7659669744 1.948348E-17 -3.7661208733 1.948348E-17 -3.7662747722 1.948348E-17 -3.7664286711 1.420726E-17 -3.76658257 1.420726E-17 -3.7667364689 8.930957E-18 -3.7668903678 1.420726E-17 -3.7670442667 8.930957E-18 -3.7671981656 1.156909E-17 -3.7673520645 1.156909E-17 -3.7675059634 1.684537E-17 -3.7676598623 1.156909E-17 -3.7678137612 1.156909E-17 -3.7679676601 1.684537E-17 -3.768121559 1.684537E-17 -3.7682754579 1.156909E-17 -3.7684293568 1.156909E-17 -3.7685832557 1.156909E-17 -3.7687371546 1.156909E-17 -3.7688910535 1.156909E-17 -3.7690449524 1.156909E-17 -3.7691988513 1.156909E-17 -3.7693527502 3.591870E-18 -3.7695066491 8.930957E-18 -3.769660548 8.930957E-18 -3.7698144469 1.420726E-17 -3.7699683458 1.420726E-17 -3.7701222447 8.930957E-18 -3.7702761436 8.930957E-18 -3.7704300425 8.930957E-18 -3.7705839414 8.930957E-18 -3.7707378403 8.930957E-18 -3.7708917392 8.930957E-18 -3.7710456381 8.930957E-18 -3.771199537 8.930957E-18 -3.7713534359 1.420726E-17 -3.7715073348 8.930957E-18 -3.7716612337 8.930957E-18 -3.7718151326 8.930957E-18 -3.7719690315 9.537591E-19 -3.7721229304 -4.074991E-17 -3.7722768293 7.916201E-17 -3.7724307282 1.142686E-16 -3.7725846271 1.209461E-16 -3.772738526 9.245111E-17 -3.7728924249 7.623000E-17 -3.7730463238 1.133233E-16 -3.7732002227 1.147238E-16 -3.7733541216 7.680175E-17 -3.7735080205 1.173937E-16 -3.7736619194 4.883230E-17 -3.7738158183 2.401762E-18 -3.7739697172 -2.809269E-17 -3.7741236161 -3.433490E-17 -3.774277515 5.016129E-18 -3.7744314139 4.176931E-17 -3.7745853128 2.389268E-17 -3.7747392117 -2.137657E-17 -3.7748931106 -3.293264E-17 -3.7750470095 3.311433E-17 -3.7752009084 2.380628E-17 -3.7753548073 -2.346747E-17 -3.7755087062 -3.669050E-17 -3.7756626051 -1.767038E-17 -3.775816504 -1.441057E-17 -3.7759704029 1.952962E-17 -3.7761243018 7.744338E-17 -3.7762782007 6.925511E-17 -3.7764320996 1.073563E-16 -3.7765859985 1.062959E-16 -3.7767398974 1.012026E-16 -3.7768937963 1.338202E-16 -3.7770476952 1.921617E-16 -3.7772015941 2.927837E-16 -3.777355493 3.838821E-16 -3.7775093919 4.527209E-16 -3.7776632908 5.056702E-16 -3.7778171897 4.728638E-16 -3.7779710886 3.846783E-16 -3.7781249875 1.709982E-16 -3.7782788864 4.994403E-17 -3.7784327853 9.008534E-17 -3.7785866842 8.394393E-17 -3.7787405831 -2.345519E-17 -3.778894482 -7.704739E-17 -3.7790483809 -4.918720E-17 -3.7792022798 -1.496199E-17 -3.7793561787 2.489006E-17 -3.7795100776 2.750994E-17 -3.7796639765 2.367203E-17 -3.7798178754 3.149819E-17 -3.7799717743 5.595796E-17 -3.7801256732 2.348126E-17 -3.7802795721 2.975216E-17 -3.780433471 3.445535E-17 -3.7805873699 2.975216E-17 -3.7807412688 3.445535E-17 -3.7808951677 2.975216E-17 -3.7810490666 2.818445E-17 -3.7812029655 2.975216E-17 -3.7813568644 3.445535E-17 -3.7815107633 3.445535E-17 -3.7816646622 3.445535E-17 -3.7818185611 3.445535E-17 -3.78197246 3.445535E-17 -3.7821263589 3.445535E-17 -3.7822802578 3.762815E-17 -3.7824341567 3.762815E-17 -3.7825880556 3.762815E-17 -3.7827419545 4.233135E-17 -3.7828958534 3.762815E-17 -3.7830497523 4.233135E-17 -3.7832036512 4.233135E-17 -3.7833575501 4.546678E-17 -3.783511449 6.938047E-18 -3.7836653479 1.917005E-17 -3.7838192468 6.166358E-17 -3.7839731457 6.905097E-17 -3.7841270446 8.916885E-17 -3.7842809435 1.483303E-16 -3.7844348424 2.118091E-16 -3.7845887413 2.229001E-16 -3.7847426402 1.052769E-16 -3.7848965391 3.712588E-17 -3.785050438 5.091727E-17 -3.7852043369 -3.743462E-18 -3.7853582358 -8.420312E-17 -3.7855121347 -6.063274E-17 -3.7856660336 3.460553E-18 -3.7858199325 3.649526E-17 -3.7859738314 4.016080E-17 -3.7861277303 3.575623E-17 -3.7862816292 7.462064E-17 -3.7864355281 1.315823E-16 -3.786589427 1.369762E-16 -3.7867433259 1.319123E-16 -3.7868972248 1.089606E-16 -3.7870511237 1.059664E-16 -3.7872050226 1.671044E-16 -3.7873589215 2.444516E-16 -3.7875128204 2.362697E-16 -3.7876667193 1.849103E-16 -3.7878206182 1.696785E-16 -3.7879745171 2.050976E-16 -3.788128416 2.961706E-16 -3.7882823149 4.020666E-16 -3.7884362138 4.989913E-16 -3.7885901127 6.769072E-16 -3.7887440116 8.071593E-16 -3.7888979105 8.152574E-16 -3.7890518094 7.498808E-16 -3.7892057083 6.974774E-16 -3.7893596072 5.559238E-16 -3.7895135061 3.824815E-16 -3.789667405 2.794040E-16 -3.7898213039 2.420740E-16 -3.7899752028 2.281119E-16 -3.7901291017 1.908162E-16 -3.7902830006 1.218059E-16 -3.7904368995 1.052582E-16 -3.7905907984 1.852999E-16 -3.7907446973 2.258037E-16 -3.7908985962 1.983412E-16 -3.7910524951 1.909848E-16 -3.791206394 2.091782E-16 -3.7913602929 1.342268E-16 -3.7915141918 7.470322E-17 -3.7916680907 1.117198E-16 -3.7918219896 1.814175E-16 -3.7919758885 1.606555E-16 -3.7921297874 7.802275E-17 -3.7922836863 1.030670E-17 -3.7924375852 -4.780019E-17 -3.7925914841 1.616986E-18 -3.792745383 9.004680E-17 -3.7928992819 6.824544E-18 -3.7930531808 -2.236040E-17 -3.7932070797 1.073233E-16 -3.7933609786 2.028064E-16 -3.7935148775 2.197115E-16 -3.7936687764 2.753586E-16 -3.7938226753 3.444027E-16 -3.7939765742 3.158192E-16 -3.7941304731 2.610035E-16 -3.794284372 3.214435E-16 -3.7944382709 4.207568E-16 -3.7945921698 5.269345E-16 -3.7947460687 7.069367E-16 -3.7948999676 8.315344E-16 -3.7950538665 9.235298E-16 -3.7952077654 1.027076E-15 -3.7953616643 1.108226E-15 -3.7955155632 1.097391E-15 -3.7956694621 1.091253E-15 -3.795823361 1.101089E-15 -3.7959772599 1.021932E-15 -3.7961311588 9.919383E-16 -3.7962850577 8.117782E-16 -3.7964389566 5.809126E-16 -3.7965928555 4.744541E-16 -3.7967467544 4.663653E-16 -3.7969006533 4.458646E-16 -3.7970545522 3.610677E-16 -3.7972084511 2.839576E-16 -3.79736235 2.719154E-16 -3.7975162489 3.525974E-16 -3.7976701478 4.661324E-16 -3.7978240467 4.312169E-16 -3.7979779456 4.311224E-16 -3.7981318445 4.045866E-16 -3.7982857434 2.861519E-16 -3.7984396423 2.485974E-16 -3.7985935412 2.090019E-16 -3.7987474401 2.056624E-16 -3.798901339 2.039926E-16 -3.7990552379 1.922645E-16 -3.7992091368 2.140112E-16 -3.7993630357 2.173507E-16 -3.7995169346 2.407671E-16 -3.7996708335 2.691928E-16 -3.7998247324 3.176953E-16 -3.7999786313 3.461210E-16 -3.8001325302 4.999775E-16 -3.8002864291 5.518196E-16 -3.800440328 6.316599E-16 -3.8005942269 6.972747E-16 -3.8007481258 7.405213E-16 -3.8009020247 7.303615E-16 -3.8010559236 4.960165E-16 -3.8012098225 4.115611E-16 -3.8013637214 3.553785E-16 -3.8015176203 3.042028E-16 -3.8016715192 3.856282E-16 -3.8018254181 4.077132E-16 -3.801979317 3.880327E-16 -3.8021332159 3.022508E-16 -3.8022871148 2.378246E-16 -3.8024410137 2.269854E-16 -3.8025949126 2.018658E-16 -3.8027488115 1.967640E-16 -3.8029027104 2.047845E-16 -3.8030566093 2.314274E-16 -3.8032105082 1.920753E-16 -3.8033644071 1.260744E-16 -3.803518306 4.914809E-17 -3.8036722049 3.448096E-17 -3.8038261038 7.224633E-17 -3.8039800027 7.434166E-17 -3.8041339016 1.121070E-16 -3.8042878005 1.414912E-16 -3.8044416994 2.726835E-16 -3.8045955983 2.426711E-16 -3.8047494972 1.642706E-16 -3.8049033961 1.469677E-16 -3.805057295 1.232624E-16 -3.8052111939 1.149166E-16 -3.8053650928 9.938561E-17 -3.8055189917 2.849139E-17 -3.8056728906 -1.010604E-16 -3.8058267895 -7.127173E-17 -3.8059806884 -3.666637E-18 -3.8061345873 1.810243E-17 -3.8062884862 3.370580E-17 -3.8064423851 -3.601948E-18 -3.806596284 -2.662490E-17 -3.8067501829 2.178824E-17 -3.8069040818 8.758419E-17 -3.8070579807 1.409784E-16 -3.8072118796 1.992583E-16 -3.8073657785 2.060430E-16 -3.8075196774 1.674055E-16 -3.8076735763 2.025416E-16 -3.8078274752 1.959270E-16 -3.8079813741 5.091716E-17 -3.808135273 1.424803E-16 -3.8082891719 2.138298E-16 -3.8084430708 3.659911E-16 -3.8085969697 4.561172E-16 -3.8087508686 3.764904E-16 -3.8089047675 2.000730E-16 -3.8090586664 1.206360E-16 -3.8092125653 1.915173E-16 -3.8093664642 1.661600E-16 -3.8095203631 9.111663E-17 -3.809674262 7.382596E-17 -3.8098281609 4.295064E-16 -3.8099820598 7.173342E-16 -3.8101359587 5.572684E-16 -3.8102898576 2.840389E-16 -3.8104437565 1.271298E-16 -3.8105976554 1.451487E-16 -3.8107515543 9.901442E-17 -3.8109054532 2.589187E-17 -3.8110593521 -1.040571E-16 -3.811213251 -1.456842E-16 -3.8113671499 -1.503460E-16 -3.8115210488 -8.903719E-17 -3.8116749477 7.603606E-17 -3.8118288466 7.396350E-17 -3.8119827455 1.618361E-17 -3.8121366444 1.184319E-17 -3.8122905433 4.840807E-18 -3.8124444422 -6.044864E-18 -3.8125983411 -9.505907E-18 -3.81275224 -9.924434E-18 -3.8129061389 -4.309465E-18 -3.8130600378 1.025761E-17 -3.8132139367 9.737080E-18 -3.8133678356 3.934217E-18 -3.8135217345 3.668341E-18 -3.8136756334 1.830200E-18 -3.8138295323 -4.105728E-19 -3.8139834312 -1.476590E-18 -3.8141373301 -1.403812E-18 -3.814291229 -5.271589E-19 -3.8144451279 8.789423E-19 -3.8145990268 9.503974E-19 -3.8147529257 3.311634E-19 -3.8149068246 5.823352E-22 -3.8150607235 5.545154E-19 -3.8152146224 8.799084E-19 -3.8153685213 -8.635766E-19 -3.8155224202 -3.278097E-18 -3.8156763191 -4.495336E-18 -3.815830218 -4.887221E-18 -3.8159841169 -4.940028E-18 -3.8161380158 -6.151100E-18 -3.8162919147 -6.008375E-18 -3.8164458136 -6.655932E-18 -3.8165997125 -8.880876E-18 -3.8167536114 -8.587908E-18 -3.8169075103 -8.826348E-18 -3.8170614092 -7.466172E-18 -3.8172153081 -4.525909E-18 -3.817369207 -6.994057E-18 -3.8175231059 -1.589616E-17 -3.8176770048 -3.120914E-17 -3.8178309037 -4.578171E-17 -3.8179848026 -5.579342E-17 -3.8181387015 -7.151753E-17 -3.8182926004 -8.721602E-17 -3.8184464993 -9.750302E-17 -3.8186003982 -9.075111E-17 -3.8187542971 -5.776765E-17 -3.818908196 -5.242710E-18 -3.8190620949 5.159204E-17 -3.8192159938 9.645694E-17 -3.8193698927 1.353587E-16 -3.8195237916 1.794153E-16 -3.8196776905 2.192135E-16 -3.8198315894 2.416321E-16 -3.8199854883 2.318154E-16 -3.8201393872 1.997756E-16 -3.8202932861 8.151734E-17 -3.820447185 -3.506981E-19 -3.8206010839 -1.357730E-17 -3.8207549828 1.239916E-16 -3.8209088817 9.995015E-17 -3.8210627806 3.606155E-17 -3.8212166795 7.412915E-17 -3.8213705784 -2.016852E-18 -3.8215244773 -1.906248E-17 -3.8216783762 3.434220E-17 -3.8218322751 -3.574728E-17 -3.821986174 -4.512246E-17 -3.8221400729 6.258250E-17 -3.8222939718 3.331115E-17 -3.8224478707 -1.792009E-17 -3.8226017696 -3.151362E-17 -3.8227556685 -2.201241E-17 -3.8229095674 4.031441E-17 -3.8230634663 1.050453E-16 -3.8232173652 6.318449E-17 -3.8233712641 -7.692735E-17 -3.823525163 -6.607763E-17 -3.8236790619 -2.261578E-18 -3.8238329608 -7.174932E-18 -3.8239868597 5.881757E-17 -3.8241407586 1.215942E-16 -3.8242946575 2.600828E-18 -3.8244485564 -7.046357E-17 -3.8246024553 -8.603406E-19 -3.8247563542 1.114752E-17 -3.8249102531 8.394123E-18 -3.825064152 -1.063695E-18 -3.8252180509 3.577997E-17 -3.8253719498 4.245439E-17 -3.8255258487 4.107928E-17 -3.8256797476 6.105789E-17 -3.8258336465 3.273691E-17 -3.8259875454 -8.394241E-17 -3.8261414443 -1.228591E-16 -3.8262953432 -1.444213E-17 -3.8264492421 -3.213445E-17 -3.826603141 -1.081658E-16 -3.8267570399 -4.508890E-17 -3.8269109388 1.315369E-16 -3.8270648377 6.450953E-17 -3.8272187366 -7.927272E-17 -3.8273726355 -4.024481E-17 -3.8275265344 7.124495E-17 -3.8276804333 1.576783E-16 -3.8278343322 1.246094E-16 -3.8279882311 6.021736E-18 -3.82814213 -1.918362E-17 -3.8282960289 -6.426102E-17 -3.8284499278 -1.169935E-16 -3.8286038267 -6.241336E-17 -3.8287577256 2.555517E-17 -3.8289116245 1.732069E-17 -3.8290655234 -5.909988E-17 -3.8292194223 -3.518876E-17 -3.8293733212 2.643866E-17 -3.8295272201 2.592501E-17 -3.829681119 3.321470E-17 -3.8298350179 7.991261E-17 -3.8299889168 3.300617E-17 -3.8301428157 -8.802598E-17 -3.8302967146 -6.897948E-17 -3.8304506135 -5.317624E-17 -3.8306045124 -1.931244E-17 -3.8307584113 1.125062E-16 -3.8309123102 -3.419295E-17 -3.8310662091 -2.148701E-17 -3.831220108 8.423389E-17 -3.8313740069 9.389758E-17 -3.8315279058 5.793091E-17 -3.8316818047 6.439047E-17 -3.8318357036 1.675765E-17 -3.8319896025 -1.211527E-16 -3.8321435014 -1.537678E-16 -3.8322974003 -6.805312E-17 -3.8324512992 4.528461E-18 -3.8326051981 -1.231091E-17 -3.832759097 7.734398E-17 -3.8329129959 3.745989E-17 -3.8330668948 -1.571201E-17 -3.8332207937 1.542834E-17 -3.8333746926 5.406053E-17 -3.8335285915 -3.352734E-17 -3.8336824904 -2.503160E-17 -3.8338363893 4.542862E-17 -3.8339902882 -1.315623E-17 -3.8341441871 7.837791E-18 -3.834298086 -4.430362E-17 -3.8344519849 -3.391876E-17 -3.8346058838 9.103753E-17 -3.8347597827 8.219937E-17 -3.8349136816 -7.174351E-17 -3.8350675805 -5.331717E-17 -3.8352214794 7.499532E-18 -3.8353753783 1.366329E-18 -3.8355292772 2.970748E-17 -3.8356831761 4.633840E-17 -3.835837075 4.207570E-17 -3.8359909739 6.197236E-17 -3.8361448728 9.749333E-17 -3.8362987717 3.090059E-17 -3.8364526706 -1.960495E-16 -3.8366065695 -1.810492E-16 -3.8367604684 8.381030E-17 -3.8369143673 1.185893E-16 -3.8370682662 6.404204E-18 -3.8372221651 -3.672820E-17 -3.837376064 -9.795915E-17 -3.8375299629 -6.843666E-17 -3.8376838618 6.603257E-18 -3.8378377607 6.578503E-17 -3.8379916596 3.804237E-17 -3.8381455585 -8.515180E-17 -3.8382994574 -1.219067E-16 -3.8384533563 -1.906481E-17 -3.8386072552 1.547201E-16 -3.8387611541 8.083934E-17 -3.838915053 -1.572470E-16 -3.8390689519 -1.437267E-16 -3.8392228508 2.689584E-17 -3.8393767497 8.861066E-17 -3.8395306486 4.720536E-17 -3.8396845475 -9.133599E-17 -3.8398384464 -1.120506E-16 -3.8399923453 6.846991E-17 -3.8401462442 -2.776849E-17 -3.8403001431 -2.572858E-16 -3.840454042 -2.343655E-16 -3.8406079409 -2.490309E-16 -3.8407618398 -1.657684E-16 -3.8409157387 -4.976869E-17 -3.8410696376 -1.823831E-17 -3.8412235365 -7.124500E-17 -3.8413774354 6.733912E-20 -3.8415313343 -4.491795E-17 -3.8416852332 -2.448095E-17 -3.8418391321 -1.530229E-17 -3.841993031 -8.637534E-17 -3.8421469299 -1.705677E-16 -3.8423008288 -6.641352E-17 -3.8424547277 1.593523E-17 -3.8426086266 -6.768556E-17 -3.8427625255 -2.054368E-16 -3.8429164244 -1.541208E-16 -3.8430703233 -1.095510E-17 -3.8432242222 3.575178E-17 -3.8433781211 -1.608600E-17 -3.84353202 -3.771520E-17 -3.8436859189 1.007859E-16 -3.8438398178 1.826025E-16 -3.8439937167 -2.831928E-17 -3.8441476156 -9.245682E-17 -3.8443015145 -9.602940E-17 -3.8444554134 2.606214E-17 -3.8446093123 8.609836E-17 -3.8447632112 1.141282E-16 -3.8449171101 6.974914E-17 -3.845071009 1.478911E-16 -3.8452249079 2.661259E-16 -3.8453788068 2.409104E-16 -3.8455327057 1.553497E-16 -3.8456866046 1.193340E-16 -3.8458405035 -4.954169E-17 -3.8459944024 -6.686478E-18 -3.8461483013 2.136776E-16 -3.8463022002 3.860162E-17 -3.8464560991 -1.080225E-16 -3.846609998 -1.402242E-17 -3.8467638969 -4.072534E-18 -3.8469177958 -8.157160E-17 -3.8470716947 -9.928645E-17 -3.8472255936 -3.230160E-17 -3.8473794925 7.345554E-17 -3.8475333914 4.116114E-17 -3.8476872903 8.164508E-17 -3.8478411892 1.420267E-16 -3.8479950881 9.358126E-17 -3.848148987 1.826633E-16 -3.8483028859 2.712941E-16 -3.8484567848 2.293469E-16 -3.8486106837 3.305184E-16 -3.8487645826 4.150788E-16 -3.8489184815 3.783264E-16 -3.8490723804 2.594377E-16 -3.8492262793 2.896920E-16 -3.8493801782 1.797611E-16 -3.8495340771 7.714691E-17 -3.849687976 1.022295E-16 -3.8498418749 -2.333195E-17 -3.8499957738 1.179493E-19 -3.8501496727 7.673123E-17 -3.8503035716 8.688673E-17 -3.8504574705 1.207331E-16 -3.8506113694 1.568392E-16 -3.8507652683 6.314631E-17 -3.8509191672 -1.016128E-16 -3.8510730661 -5.712814E-18 -3.851226965 2.688059E-18 -3.8513808639 -8.044102E-17 -3.8515347628 -2.321254E-16 -3.8516886617 -2.705444E-17 -3.8518425606 -3.171990E-17 -3.8519964595 -1.020666E-16 -3.8521503584 -3.626021E-17 -3.8523042573 8.915848E-17 -3.8524581562 1.064814E-16 -3.8526120551 9.133408E-17 -3.852765954 -5.002852E-17 -3.8529198529 -9.822025E-17 -3.8530737518 -2.499171E-18 -3.8532276507 4.711451E-17 -3.8533815496 9.956999E-17 -3.8535354485 1.338714E-16 -3.8536893474 -8.490447E-18 -3.8538432463 -1.527984E-16 -3.8539971452 -8.923238E-17 -3.8541510441 6.532106E-17 -3.854304943 1.702106E-16 -3.8544588419 2.693289E-16 -3.8546127408 4.825801E-16 -3.8547666397 7.554945E-16 -3.8549205386 8.332509E-16 -3.8550744375 5.768339E-16 -3.8552283364 2.578836E-16 -3.8553822353 1.118549E-17 -3.8555361342 -1.847176E-16 -3.8556900331 -3.096397E-16 -3.855843932 -2.608025E-16 -3.8559978309 -1.940220E-16 -3.8561517298 -1.125563E-16 -3.8563056287 1.885353E-16 -3.8564595276 2.969378E-16 -3.8566134265 1.960454E-16 -3.8567673254 1.648633E-16 -3.8569212243 1.900846E-16 -3.8570751232 7.880371E-17 -3.8572290221 -9.010440E-17 -3.857382921 7.606081E-17 -3.8575368199 6.619838E-17 -3.8576907188 -2.791259E-16 -3.8578446177 -1.410026E-16 -3.8579985166 7.990443E-17 -3.8581524155 2.605298E-16 -3.8583063144 -2.073706E-17 -3.8584602133 -2.073706E-17 -3.8586141122 -3.265079E-17 -3.8587680111 -3.265079E-17 -3.85892191 -5.066252E-17 -3.8590758089 -6.257583E-17 -3.8592297078 -7.448914E-17 -3.8593836067 -2.087470E-17 -3.8595375056 4.144045E-17 -3.8596914045 -1.278539E-16 -3.8598453034 -1.280297E-16 -3.8599992023 -4.153024E-17 -3.8601531012 1.514707E-18 -3.8603070001 4.779892E-17 -3.860460899 2.244002E-18 -3.8606147979 -8.597151E-17 -3.8607686968 -5.446951E-17 -3.8609225957 3.284497E-17 -3.8610764946 2.420841E-17 -3.8612303935 -9.452041E-18 -3.8613842924 6.646668E-17 -3.8615381913 -5.671521E-18 -3.8616920902 3.966909E-17 -3.8618459891 4.312901E-17 -3.861999888 1.817457E-17 -3.8621537869 1.414714E-17 -3.8623076858 1.464880E-17 -3.8624615847 -6.462925E-17 -3.8626154836 2.202068E-16 -3.8627693825 8.464720E-16 -3.8629232814 1.077106E-15 -3.8630771803 1.004375E-15 -3.8632310792 7.410537E-16 -3.8633849781 5.377079E-16 -3.863538877 4.958023E-16 -3.8636927759 4.197567E-16 -3.8638466748 5.525145E-16 -3.8640005737 7.694672E-16 -3.8641544726 8.243937E-16 -3.8643083715 6.535973E-16 -3.8644622704 4.986530E-16 -3.8646161693 6.730852E-16 -3.8647700682 1.016554E-15 -3.8649239671 1.114428E-15 -3.865077866 6.798062E-16 -3.8652317649 3.711938E-16 -3.8653856638 2.662631E-16 -3.8655395627 2.364158E-16 -3.8656934616 1.101863E-16 -3.8658473605 6.727580E-17 -3.8660012594 1.067270E-16 -3.8661551583 1.673686E-16 -3.8663090572 1.041668E-16 -3.8664629561 -6.216735E-17 -3.866616855 2.912819E-17 -3.8667707539 2.683574E-16 -3.8669246528 4.115320E-16 -3.8670785517 1.741934E-16 -3.8672324506 4.676829E-17 -3.8673863495 2.567793E-16 -3.8675402484 2.947001E-16 -3.8676941473 1.150726E-16 -3.8678480462 2.306693E-16 -3.8680019451 3.020725E-16 -3.868155844 2.718739E-16 -3.8683097429 2.182109E-16 -3.8684636418 2.495065E-16 -3.8686175407 3.932619E-16 -3.8687714396 2.966331E-16 -3.8689253385 1.016503E-16 -3.8690792374 7.195143E-17 -3.8692331363 2.060594E-16 -3.8693870352 2.717985E-16 -3.8695409341 2.834100E-16 -3.869694833 2.331426E-16 -3.8698487319 2.468807E-16 -3.8700026308 3.161000E-16 -3.8701565297 3.830391E-16 -3.8703104286 3.794172E-16 -3.8704643275 2.848957E-16 -3.8706182264 2.023498E-16 -3.8707721253 1.324592E-16 -3.8709260242 1.862198E-16 -3.8710799231 2.437312E-16 -3.871233822 3.831289E-16 -3.8713877209 4.021751E-16 -3.8715416198 2.544426E-16 -3.8716955187 2.861099E-16 -3.8718494176 3.679255E-16 -3.8720033165 3.492639E-16 -3.8721572154 3.578172E-16 -3.8723111143 5.160756E-16 -3.8724650132 6.283951E-16 -3.8726189121 6.963773E-16 -3.872772811 5.785341E-16 -3.8729267099 4.935335E-16 -3.8730806088 3.703241E-16 -3.8732345077 2.885236E-16 -3.8733884066 3.573020E-16 -3.8735423055 5.026484E-16 -3.8736962044 3.802193E-16 -3.8738501033 1.831901E-16 -3.8740040022 1.281398E-16 -3.8741579011 -1.238354E-16 diff --git a/templates/qso.template b/templates/qso.template deleted file mode 100644 index 8c65caa6f..000000000 --- a/templates/qso.template +++ /dev/null @@ -1,7927 +0,0 @@ -# wl fl er lq uq npt - 682.5000 7.02000 0.00000 7.0200 7.0200 7 - 683.5000 7.02000 0.00000 7.0200 7.0200 6 - 684.5000 7.02000 0.00000 7.0200 7.0200 7 - 685.5000 7.02000 0.00000 7.0200 7.0200 6 - 686.5000 7.02000 0.00000 7.0200 7.0200 6 - 687.5000 7.02000 0.00000 7.0200 7.0200 6 - 688.5000 7.02000 0.00000 7.0200 7.0200 7 - 689.5000 7.02000 0.00000 7.0200 7.0200 5 - 690.5000 3.51000 0.81825 1.0000 4.2730 4 - 691.5000 8.02300 1.42475 3.4380 9.1370 4 - 692.5000 3.43800 0.00000 3.4380 3.4380 8 - 693.5000 3.43800 0.46969 0.0510 3.4380 13 - 694.5000 3.43800 1.02672 0.0510 9.4610 21 - 695.5000 1.71900 0.36955 0.0510 3.4380 21 - 696.5000 3.43800 0.36955 0.0510 3.4380 21 - 697.5000 3.43800 0.42338 0.0510 3.4380 16 - 698.5000 3.43800 0.85334 0.0510 7.8720 21 - 699.5000 4.10400 0.78833 3.4380 10.4890 20 - 700.5000 3.43800 0.64156 3.4380 8.2390 14 - 701.5000 3.43800 0.70039 3.4380 9.3810 18 - 702.5000 4.54700 1.63375 3.4380 16.5080 16 - 703.5000 9.66800 2.95476 2.9530 28.7120 19 - 704.5000 20.00000 2.47299 4.0410 25.0250 18 - 705.5000 11.57000 1.94370 3.8480 21.2330 20 - 706.5000 11.66800 2.39682 3.4390 24.3340 19 - 707.5000 14.48400 4.44141 6.6040 37.3750 12 - 708.5000 8.01400 0.65356 4.7810 9.3090 12 - 709.5000 7.52500 0.60855 4.0880 8.6420 14 - 710.5000 5.79400 2.12485 1.6830 19.2050 17 - 711.5000 12.92100 3.47967 2.8700 32.3960 18 - 712.5000 10.06100 1.85250 5.1490 19.9690 16 - 713.5000 11.61200 3.51051 6.1820 37.5810 20 - 714.5000 8.91300 1.96575 3.3450 20.4820 19 - 715.5000 15.87700 2.09854 5.6330 21.3370 14 - 716.5000 9.17400 2.23858 4.1000 23.0950 18 - 717.5000 6.07800 1.16823 2.5920 13.2990 21 - 718.5000 7.96900 1.25637 4.2620 12.2080 10 - 719.5000 7.33000 1.01397 6.1060 13.1310 12 - 720.5000 6.75500 1.20792 4.5500 16.1360 23 - 721.5000 7.50300 0.72929 2.0840 8.6070 20 - 722.5000 6.09800 0.59640 3.8330 8.7510 17 - 723.5000 6.84400 1.13734 2.9230 13.8320 23 - 724.5000 5.38000 1.14641 2.5590 13.5550 23 - 725.5000 6.84100 0.93459 4.6530 11.1280 12 - 726.5000 6.69700 0.77846 2.6610 10.7510 27 - 727.5000 6.73600 1.94279 4.1560 22.3810 22 - 728.5000 5.92300 0.80564 3.2730 11.4890 26 - 729.5000 4.30100 0.88932 1.5990 11.3410 30 - 730.5000 3.32700 1.43664 1.5990 16.8030 28 - 731.5000 3.55000 1.02186 1.5990 12.0200 26 - 732.5000 3.61400 0.53822 1.5990 7.2950 28 - 733.5000 3.39900 0.45072 1.5990 6.2830 27 - 734.5000 2.44000 0.50422 1.5990 6.8390 27 - 735.5000 5.57900 0.95710 1.9410 10.7130 21 - 736.5000 3.24300 0.57633 1.5180 7.0460 23 - 737.5000 4.59700 0.68629 1.9220 8.3600 22 - 738.5000 4.55700 1.02042 2.2830 12.2810 24 - 739.5000 4.37000 0.75383 1.8040 9.1900 24 - 740.5000 4.30000 0.62617 2.3680 8.3740 23 - 741.5000 4.30000 0.32222 2.9820 5.8640 20 - 742.5000 4.30000 0.40284 2.9910 6.9380 24 - 743.5000 4.30000 0.44744 2.5100 7.0730 26 - 744.5000 4.30000 0.40686 1.7590 6.5730 35 - 745.5000 4.29200 0.34246 1.8160 5.8680 35 - 746.5000 4.30000 0.37035 2.9320 7.1870 33 - 747.5000 4.30000 0.61472 4.2280 10.2510 24 - 748.5000 4.29000 0.36765 1.5680 5.7920 33 - 749.5000 3.54300 0.41683 1.3270 6.1160 33 - 750.5000 2.97800 0.28691 1.7100 4.9560 32 - 751.5000 3.42700 0.81378 0.9950 9.2940 26 - 752.5000 7.12100 0.90773 3.1750 11.2940 20 - 753.5000 5.17100 0.79727 2.0700 10.9480 31 - 754.5000 3.96800 0.50378 1.8840 7.6720 33 - 755.5000 2.49600 0.38176 1.3720 5.5540 30 - 756.5000 3.09800 0.52245 1.2250 6.8520 29 - 757.5000 5.96100 0.60779 2.1600 8.8180 30 - 758.5000 4.18600 0.49542 2.2550 7.8600 32 - 759.5000 2.37400 0.55830 1.2800 7.0820 27 - 760.5000 3.87800 0.36666 1.7980 5.7470 29 - 761.5000 3.80800 0.75460 1.5170 9.3590 27 - 762.5000 3.62700 0.48912 1.2390 6.5070 29 - 763.5000 3.64800 0.51206 2.0630 6.4080 18 - 764.5000 4.36500 0.51318 2.3610 7.7920 28 - 765.5000 5.95700 0.66759 2.9310 10.6010 33 - 766.5000 4.93500 0.58060 1.1400 7.0610 26 - 767.5000 1.96300 0.17493 1.4600 3.5000 34 - 768.5000 2.05300 0.51335 1.3360 7.6650 38 - 769.5000 3.82500 0.54225 2.1350 8.6420 36 - 770.5000 2.16900 0.23833 1.3740 4.1940 35 - 771.5000 2.86100 0.35251 1.5520 6.1210 42 - 772.5000 2.91300 0.39973 1.5520 6.6710 41 - 773.5000 2.46300 0.39426 1.3940 6.4430 41 - 774.5000 2.81900 0.63992 1.5520 9.2310 36 - 775.5000 2.65500 0.68117 1.5670 9.3930 33 - 776.5000 3.92600 1.26821 1.9360 18.1770 41 - 777.5000 6.53000 1.36667 2.2390 18.1770 34 - 778.5000 4.96100 1.28711 1.6940 18.1770 41 - 779.5000 4.58500 1.42045 1.3700 18.1770 35 - 780.5000 5.29700 1.33624 1.9210 18.1770 37 - 781.5000 6.62800 1.43940 1.8920 18.1770 32 - 782.5000 6.57100 1.23990 3.0930 18.1770 37 - 783.5000 2.35900 1.34630 0.9360 18.1770 41 - 784.5000 7.47400 1.27622 2.2370 18.1770 39 - 785.5000 4.50700 1.16381 1.1960 14.3630 32 - 786.5000 2.89600 0.49391 0.8570 6.4450 32 - 787.5000 2.30600 0.56777 0.9960 8.2670 41 - 788.5000 3.42000 0.36536 2.0280 5.9630 29 - 789.5000 5.44100 0.95703 2.3540 13.0110 31 - 790.5000 3.19000 0.60851 0.4570 7.6570 35 - 791.5000 2.55500 0.21367 1.3500 3.9140 36 - 792.5000 3.19600 0.33475 2.4070 6.4240 36 - 793.5000 4.11200 0.59841 1.5120 8.7920 37 - 794.5000 2.57200 0.44604 1.3720 7.0140 40 - 795.5000 3.82700 0.62012 2.0560 9.9000 40 - 796.5000 2.96200 0.45844 1.7110 6.7330 30 - 797.5000 4.43000 0.56165 1.3350 9.0360 47 - 798.5000 3.72400 0.40864 1.7330 6.7710 38 - 799.5000 3.62700 0.34894 1.6970 5.7060 33 - 800.5000 3.30000 0.34061 1.5370 5.8990 41 - 801.5000 3.53900 0.44219 1.1760 6.6990 39 - 802.5000 3.11400 0.33814 1.7790 6.5610 50 - 803.5000 3.00600 0.65693 1.3100 9.5150 39 - 804.5000 5.14600 0.63058 2.1790 11.5320 55 - 805.5000 4.10400 0.41805 1.2350 7.3790 54 - 806.5000 4.63100 0.48537 1.8740 9.2030 57 - 807.5000 4.44800 0.46225 2.0130 9.4090 64 - 808.5000 3.85200 0.37904 1.7570 7.3790 55 - 809.5000 4.99300 0.59284 2.5300 11.0800 52 - 810.5000 4.49300 0.33517 2.2300 7.3790 59 - 811.5000 5.74600 0.34887 2.0420 7.5360 62 - 812.5000 6.18400 0.42134 1.9530 7.9710 51 - 813.5000 4.12700 0.42450 1.6480 8.3330 62 - 814.5000 3.09700 0.44431 1.4180 7.3790 45 - 815.5000 5.85900 0.44095 2.7900 8.9000 48 - 816.5000 4.61600 0.55611 2.0170 9.4780 45 - 817.5000 3.98500 0.42709 1.2080 7.3080 51 - 818.5000 5.54600 0.50063 2.1650 9.1020 48 - 819.5000 3.96100 0.56032 1.6900 9.4540 48 - 820.5000 5.02900 0.60135 1.9720 10.5610 51 - 821.5000 4.36400 0.42333 1.7600 8.2080 58 - 822.5000 3.22400 0.51392 1.3930 9.1530 57 - 823.5000 4.05100 0.30313 1.8900 6.7020 63 - 824.5000 3.93200 0.74247 1.0880 12.0000 54 - 825.5000 5.02800 0.57286 2.0370 10.0570 49 - 826.5000 3.33200 0.42408 1.4660 8.1980 63 - 827.5000 3.06100 0.29280 1.7780 6.3140 60 - 828.5000 4.60100 0.42861 1.4700 7.4090 48 - 829.5000 5.87500 0.61886 1.7650 10.5170 50 - 830.5000 3.71300 0.41595 1.2470 7.6370 59 - 831.5000 3.25100 0.36897 1.6950 7.3150 58 - 832.5000 5.31000 0.47671 2.6540 9.9150 58 - 833.5000 3.25700 0.46419 1.4330 8.5640 59 - 834.5000 4.69500 0.31680 1.9540 6.9830 63 - 835.5000 4.74900 0.38806 2.8720 8.6800 56 - 836.5000 4.64600 0.53744 1.4660 9.6520 58 - 837.5000 3.27400 0.38559 1.2170 6.9880 56 - 838.5000 3.24600 0.37269 1.1070 7.0700 64 - 839.5000 3.97500 0.34315 2.2000 7.6040 62 - 840.5000 3.68400 0.53350 1.4440 9.9130 63 - 841.5000 3.92300 0.48032 1.5450 8.8610 58 - 842.5000 4.84600 0.44244 1.4980 8.7410 67 - 843.5000 3.34300 0.37223 1.5740 7.4830 63 - 844.5000 3.44500 0.35769 1.6650 7.0660 57 - 845.5000 3.07600 0.43226 1.4840 8.0680 58 - 846.5000 4.09400 0.29998 2.0510 7.2120 74 - 847.5000 4.30200 0.35612 1.5250 7.4840 70 - 848.5000 3.43100 0.28071 2.1360 6.9980 75 - 849.5000 3.96300 0.39307 1.5170 7.8550 65 - 850.5000 5.09900 0.31734 2.0350 7.5680 76 - 851.5000 4.23500 0.29331 2.1280 7.1400 73 - 852.5000 4.31200 0.33807 2.5600 8.2170 70 - 853.5000 3.29400 0.30585 1.3850 6.3920 67 - 854.5000 4.29100 0.37129 2.3310 8.0830 60 - 855.5000 3.81000 0.37255 1.7920 8.0260 70 - 856.5000 2.90000 0.25558 1.5240 5.7080 67 - 857.5000 3.66900 0.35877 1.5260 7.0840 60 - 858.5000 4.16700 0.34577 1.5650 7.3920 71 - 859.5000 4.19200 0.38706 1.5450 8.1590 73 - 860.5000 3.52000 0.35484 1.5030 7.6490 75 - 861.5000 3.76100 0.35718 1.8770 8.1860 78 - 862.5000 3.76100 0.24364 1.8240 6.0440 75 - 863.5000 3.36600 0.29056 1.4450 6.2370 68 - 864.5000 2.47000 0.26108 0.9980 5.6390 79 - 865.5000 3.76100 0.36217 1.2980 7.8970 83 - 866.5000 3.76100 0.28590 1.3990 6.1830 70 - 867.5000 3.76100 0.38315 1.0890 7.4080 68 - 868.5000 3.76100 0.29967 1.0290 6.4230 81 - 869.5000 3.30400 0.29271 0.9980 6.0340 74 - 870.5000 3.64300 0.32151 1.4380 6.9320 73 - 871.5000 3.38200 0.35937 1.5950 7.9020 77 - 872.5000 3.88100 0.32308 1.3340 7.0040 77 - 873.5000 3.58400 0.29309 1.5700 6.8130 80 - 874.5000 3.53000 0.27276 1.5430 6.3300 77 - 875.5000 4.49200 0.34644 1.5110 7.7470 81 - 876.5000 3.37600 0.31268 1.9670 7.8000 87 - 877.5000 4.46300 0.45929 1.7520 9.6540 74 - 878.5000 5.18300 0.40039 1.9990 9.6380 91 - 879.5000 5.63400 0.34318 1.8800 8.0190 80 - 880.5000 4.02200 0.32918 1.5910 7.6250 84 - 881.5000 3.23700 0.33257 1.5770 7.7810 87 - 882.5000 3.69900 0.32455 1.4900 7.7160 92 - 883.5000 3.36500 0.34761 1.1770 7.3170 78 - 884.5000 4.03900 0.32320 1.6070 7.2050 75 - 885.5000 3.60500 0.27470 1.8000 6.7140 80 - 886.5000 3.27000 0.43262 1.7540 9.6840 84 - 887.5000 4.25100 0.28137 2.2620 7.2320 78 - 888.5000 3.69800 0.30365 1.3590 6.9580 85 - 889.5000 4.81900 0.27135 2.1370 7.2280 88 - 890.5000 4.96200 0.30149 2.3540 8.2620 96 - 891.5000 3.18900 0.26357 1.6810 6.5410 85 - 892.5000 3.07900 0.27392 1.7580 6.9840 91 - 893.5000 5.09900 0.30146 2.1060 7.8890 92 - 894.5000 3.94600 0.29455 2.0210 7.2570 79 - 895.5000 4.38700 0.38158 2.0970 9.4170 92 - 896.5000 4.82100 0.38799 2.4440 9.3410 79 - 897.5000 4.74200 0.38290 2.0210 9.2860 90 - 898.5000 5.00400 0.35249 2.0210 8.8560 94 - 899.5000 4.23800 0.38383 2.0210 9.2630 89 - 900.5000 3.69600 0.28545 1.9330 7.3790 91 - 901.5000 3.82200 0.26572 2.0210 7.2550 97 - 902.5000 4.17700 0.30682 2.0210 7.8100 89 - 903.5000 4.15200 0.23944 1.9250 6.3400 85 - 904.5000 4.82700 0.29519 2.5430 8.0180 86 - 905.5000 4.46800 0.27596 2.2870 7.5520 91 - 906.5000 4.15200 0.37094 1.7880 9.0190 95 - 907.5000 5.04800 0.26245 3.1770 8.2660 94 - 908.5000 5.03500 0.33721 2.5330 9.1410 96 - 909.5000 5.46600 0.30040 2.9760 8.9840 100 - 910.5000 5.41700 0.32757 3.1370 9.8820 106 - 911.5000 5.18200 0.33692 2.9120 9.6840 101 - 912.5000 4.09600 0.28911 1.7420 7.4660 98 - 913.5000 5.38700 0.30691 2.9080 9.2870 108 - 914.5000 5.24100 0.38110 2.4660 10.3870 108 - 915.5000 5.05400 0.36150 2.9130 9.8100 91 - 916.5000 4.72300 0.36175 2.7040 9.9750 101 - 917.5000 4.28400 0.33466 2.2190 9.2070 109 - 918.5000 5.21100 0.27259 2.9430 8.4220 101 - 919.5000 5.99000 0.27065 3.9870 9.4270 101 - 920.5000 6.76700 0.34543 3.0460 10.3900 113 - 921.5000 6.17200 0.32917 3.5510 10.6110 115 - 922.5000 5.99800 0.36359 3.3080 10.8650 108 - 923.5000 6.05700 0.26811 3.0780 8.8780 117 - 924.5000 6.03600 0.24921 4.1220 9.5820 120 - 925.5000 6.17600 0.34324 3.3730 10.8930 120 - 926.5000 6.49700 0.29940 4.1320 10.8000 124 - 927.5000 6.33800 0.23644 4.2160 9.2870 115 - 928.5000 6.25300 0.35237 3.7150 11.3380 117 - 929.5000 7.48500 0.35641 3.4740 11.2500 119 - 930.5000 6.41900 0.34036 3.7550 11.2120 120 - 931.5000 5.33500 0.25271 3.2160 8.6360 115 - 932.5000 5.38800 0.31152 3.1740 9.9990 120 - 933.5000 6.60600 0.30173 3.8470 10.4850 121 - 934.5000 6.29500 0.31699 3.6220 10.5670 120 - 935.5000 5.59000 0.32752 2.5560 9.6110 116 - 936.5000 5.10600 0.30444 2.0180 9.0400 133 - 937.5000 8.14500 0.35248 3.0020 11.1320 133 - 938.5000 7.50400 0.25821 4.3840 10.6240 146 - 939.5000 5.33800 0.26854 3.1970 9.3910 133 - 940.5000 6.66100 0.27042 3.8150 10.0990 135 - 941.5000 7.16200 0.28739 3.6030 10.4040 140 - 942.5000 6.81600 0.22352 4.0770 9.4970 147 - 943.5000 6.54500 0.27418 3.6340 10.0990 139 - 944.5000 5.45100 0.24773 3.4590 9.3630 142 - 945.5000 6.35800 0.27252 4.0160 10.4880 141 - 946.5000 5.55200 0.19487 3.9250 8.5200 139 - 947.5000 7.05400 0.25186 4.5530 10.4490 137 - 948.5000 5.88300 0.24639 3.7140 9.3970 133 - 949.5000 7.19300 0.28186 4.0770 10.7470 140 - 950.5000 6.64400 0.29953 4.0770 11.3650 148 - 951.5000 6.24300 0.26288 4.0770 10.4080 145 - 952.5000 7.51200 0.29842 4.3430 11.4050 140 - 953.5000 6.90200 0.22219 4.1220 9.4360 143 - 954.5000 6.06100 0.24259 3.3560 9.1580 143 - 955.5000 7.21700 0.24899 4.2720 10.0580 135 - 956.5000 5.68700 0.23093 3.5890 9.1120 143 - 957.5000 5.58100 0.22332 3.2890 8.4400 133 - 958.5000 6.61000 0.26415 3.4640 9.6250 136 - 959.5000 6.62300 0.24795 3.9910 9.9210 143 - 960.5000 6.95900 0.27096 3.8620 10.4100 146 - 961.5000 5.94800 0.29344 3.5250 10.5920 145 - 962.5000 6.21800 0.21285 4.1840 9.0750 132 - 963.5000 6.99000 0.27502 4.0150 10.4060 135 - 964.5000 6.16100 0.28559 2.7380 9.4720 139 - 965.5000 7.09900 0.27299 3.9300 10.4590 143 - 966.5000 5.11400 0.25230 2.8430 8.8560 142 - 967.5000 6.17000 0.26442 3.0750 9.3990 143 - 968.5000 5.40800 0.21896 3.5440 8.7440 141 - 969.5000 6.14300 0.25012 3.5680 9.4870 140 - 970.5000 5.73400 0.25601 3.5040 9.7120 147 - 971.5000 6.51500 0.29686 3.8700 10.9200 141 - 972.5000 7.46600 0.31341 4.4090 11.9830 146 - 973.5000 6.66300 0.25649 4.7610 10.9380 145 - 974.5000 7.90500 0.25560 5.5140 11.7330 148 - 975.5000 7.41000 0.25563 4.1090 10.4330 153 - 976.5000 7.72200 0.23250 4.4760 10.1520 149 - 977.5000 7.27600 0.21814 5.1910 10.6750 158 - 978.5000 7.80200 0.30121 4.7220 12.0010 146 - 979.5000 6.91100 0.24430 4.3470 10.4300 155 - 980.5000 7.76600 0.28184 3.9650 10.9600 154 - 981.5000 7.61800 0.25607 4.5100 10.8240 152 - 982.5000 7.78100 0.24588 4.1870 10.3290 156 - 983.5000 8.14400 0.25232 4.9570 11.1580 151 - 984.5000 7.78500 0.27167 4.1890 10.9970 157 - 985.5000 7.46200 0.22748 4.5490 10.1950 154 - 986.5000 6.47500 0.24904 4.3110 10.5120 155 - 987.5000 7.59200 0.24822 4.2990 10.3180 147 - 988.5000 7.48100 0.22292 4.4430 9.8300 146 - 989.5000 7.99200 0.23047 4.9360 10.8390 164 - 990.5000 7.93800 0.26469 4.5360 11.2530 161 - 991.5000 8.24100 0.26090 4.7590 11.3180 158 - 992.5000 7.77700 0.25839 4.4420 10.8550 154 - 993.5000 7.54300 0.23391 4.4930 10.3360 156 - 994.5000 7.69900 0.20881 5.2420 10.5410 161 - 995.5000 7.88500 0.24044 5.0490 11.0360 155 - 996.5000 8.11400 0.26361 5.0190 11.5190 152 - 997.5000 7.00600 0.28720 3.0230 10.3790 164 - 998.5000 6.80200 0.25482 4.3620 10.5830 149 - 999.5000 6.54900 0.22268 4.1270 9.7780 161 - 1000.5000 7.11900 0.21740 4.0520 9.7710 173 - 1001.5000 6.60700 0.20600 3.8410 9.1810 168 - 1002.5000 7.24000 0.24170 4.1670 10.4140 167 - 1003.5000 7.26100 0.23790 3.7160 10.0460 177 - 1004.5000 6.05100 0.21602 2.5220 8.1550 170 - 1005.5000 5.93900 0.22216 3.8370 9.6810 173 - 1006.5000 7.64300 0.21862 4.6740 10.6210 185 - 1007.5000 7.88500 0.21529 5.1690 10.8650 175 - 1008.5000 7.36700 0.26754 4.3430 11.5020 179 - 1009.5000 7.87200 0.24672 4.4570 11.1140 182 - 1010.5000 7.09700 0.23759 4.2480 10.6410 181 - 1011.5000 6.87400 0.28704 3.2690 10.7980 172 - 1012.5000 6.98000 0.24802 4.6340 11.2520 178 - 1013.5000 7.58200 0.24192 4.4870 11.0680 185 - 1014.5000 7.19400 0.24067 4.0710 10.4020 173 - 1015.5000 6.85300 0.23942 3.8260 10.1060 172 - 1016.5000 6.61500 0.25437 3.3850 10.0570 172 - 1017.5000 7.55200 0.27913 4.4710 12.0230 183 - 1018.5000 6.86000 0.24280 3.9860 10.3360 171 - 1019.5000 7.44900 0.25176 4.1720 10.6790 167 - 1020.5000 8.47400 0.21111 5.3030 10.9990 182 - 1021.5000 9.14700 0.22661 5.1180 11.3980 192 - 1022.5000 7.78500 0.22266 4.8290 10.8860 185 - 1023.5000 9.00500 0.21522 5.6780 11.4530 180 - 1024.5000 8.35400 0.27067 4.5370 11.8600 183 - 1025.5000 8.18500 0.20622 5.7000 11.4890 197 - 1026.5000 9.68100 0.23090 6.3070 12.6220 187 - 1027.5000 10.70500 0.21945 6.7400 12.8690 195 - 1028.5000 10.86600 0.23653 7.0610 13.6160 192 - 1029.5000 9.94600 0.29704 5.6510 13.9680 196 - 1030.5000 10.61400 0.28835 6.7060 14.6970 192 - 1031.5000 10.24700 0.30358 5.9840 14.5060 197 - 1032.5000 9.51800 0.28427 6.0670 13.8830 189 - 1033.5000 8.31500 0.29530 4.9020 13.1280 194 - 1034.5000 10.71300 0.25448 6.7680 13.8570 194 - 1035.5000 9.28600 0.30067 5.4290 13.7830 193 - 1036.5000 9.48600 0.31199 5.8210 14.2850 184 - 1037.5000 10.70600 0.25386 7.2230 14.2030 189 - 1038.5000 10.35400 0.25904 7.1590 14.3750 194 - 1039.5000 11.23000 0.27901 6.8610 14.7130 198 - 1040.5000 9.43100 0.24857 6.3180 13.2780 196 - 1041.5000 8.67800 0.22041 5.8890 12.0130 193 - 1042.5000 9.16800 0.24942 5.9380 12.8680 193 - 1043.5000 8.64200 0.22429 5.7550 12.0030 194 - 1044.5000 8.64200 0.23868 5.4080 11.9880 190 - 1045.5000 8.71600 0.23500 5.1260 11.7060 196 - 1046.5000 8.16200 0.21865 5.1310 11.2220 194 - 1047.5000 7.34800 0.22223 4.9950 11.0730 187 - 1048.5000 8.28600 0.21397 4.9780 10.9230 193 - 1049.5000 8.13300 0.18161 5.2700 10.3030 192 - 1050.5000 8.36400 0.17002 5.7550 10.4790 193 - 1051.5000 8.08300 0.17275 5.4570 10.2940 196 - 1052.5000 8.64200 0.14392 6.3400 10.3800 197 - 1053.5000 8.52000 0.15532 6.0920 10.4960 201 - 1054.5000 7.86900 0.16909 5.7440 10.4300 192 - 1055.5000 7.49600 0.20126 4.9070 10.4990 193 - 1056.5000 7.68800 0.17371 5.3810 10.2820 199 - 1057.5000 7.51900 0.14639 5.3360 9.3930 192 - 1058.5000 7.46100 0.18645 4.9590 10.1260 192 - 1059.5000 8.45300 0.18993 5.6750 11.0470 200 - 1060.5000 7.18300 0.16122 5.2610 9.7520 194 - 1061.5000 7.90000 0.19087 5.3320 10.5940 190 - 1062.5000 8.13300 0.19957 5.5590 11.2460 203 - 1063.5000 8.31400 0.21959 5.1740 11.3850 200 - 1064.5000 8.53100 0.20977 5.8130 11.8200 205 - 1065.5000 8.39900 0.18283 5.8130 10.9970 201 - 1066.5000 8.74000 0.19218 5.8130 11.2350 199 - 1067.5000 8.74000 0.19452 5.7150 11.3660 211 - 1068.5000 7.91800 0.18666 5.3910 10.7750 208 - 1069.5000 8.06500 0.20501 5.6210 11.6050 213 - 1070.5000 7.93500 0.16912 5.6550 10.6490 218 - 1071.5000 7.39700 0.14921 5.6490 9.9940 212 - 1072.5000 7.77100 0.15838 5.6520 10.2750 213 - 1073.5000 8.21100 0.17816 5.7150 11.0000 220 - 1074.5000 7.69000 0.19930 4.5090 10.3400 214 - 1075.5000 7.30800 0.17731 4.8720 10.0960 217 - 1076.5000 8.08700 0.17302 5.4130 10.5340 219 - 1077.5000 8.05200 0.18139 5.4920 10.8850 221 - 1078.5000 8.00900 0.17485 5.6280 10.8850 226 - 1079.5000 8.34500 0.16349 5.4920 10.4510 230 - 1080.5000 7.04600 0.17070 4.3450 9.5000 228 - 1081.5000 7.64400 0.16016 5.2550 10.0810 227 - 1082.5000 8.05100 0.16999 5.7740 10.8850 226 - 1083.5000 7.68400 0.14447 5.4180 9.7810 228 - 1084.5000 7.39000 0.18272 4.8160 10.3460 229 - 1085.5000 7.72300 0.18031 4.8330 10.3140 231 - 1086.5000 7.40200 0.17360 4.7070 10.0520 237 - 1087.5000 7.78100 0.18370 4.7010 10.3690 238 - 1088.5000 7.81200 0.17544 4.9950 10.3740 235 - 1089.5000 7.83300 0.14311 5.3540 9.7790 239 - 1090.5000 7.15200 0.17707 4.0470 9.4060 229 - 1091.5000 7.54300 0.15077 4.8950 9.4880 232 - 1092.5000 7.00100 0.15275 4.6320 9.3450 238 - 1093.5000 6.78700 0.17213 3.7940 9.1160 239 - 1094.5000 7.15800 0.15803 4.4180 9.2320 232 - 1095.5000 7.12000 0.15619 4.3320 9.1310 236 - 1096.5000 6.90600 0.15612 4.5210 9.3380 238 - 1097.5000 6.47600 0.16935 4.1830 9.3640 234 - 1098.5000 7.09700 0.13808 4.5890 8.8850 242 - 1099.5000 7.29800 0.16014 4.9210 9.9240 244 - 1100.5000 6.90500 0.14921 4.3060 8.8710 234 - 1101.5000 7.14800 0.15732 4.2500 9.1040 238 - 1102.5000 7.46200 0.17448 5.0880 10.5390 244 - 1103.5000 6.80800 0.14737 4.8130 9.4170 244 - 1104.5000 7.01600 0.15375 5.0290 9.8520 246 - 1105.5000 6.75400 0.15900 4.5560 9.5940 251 - 1106.5000 7.04000 0.16328 4.7450 9.9800 257 - 1107.5000 7.02900 0.16755 4.7410 10.0500 251 - 1108.5000 7.42900 0.16563 4.7620 10.0620 256 - 1109.5000 7.58800 0.16430 5.1100 10.4490 264 - 1110.5000 6.95200 0.15888 4.6280 9.7320 258 - 1111.5000 7.05400 0.16599 4.6200 10.0650 269 - 1112.5000 7.72000 0.15379 5.2080 10.1580 259 - 1113.5000 7.28000 0.14242 4.8520 9.4890 265 - 1114.5000 7.04200 0.17923 4.3960 10.1090 254 - 1115.5000 8.49500 0.15198 5.8440 10.7170 257 - 1116.5000 7.44900 0.15261 5.1190 10.1250 269 - 1117.5000 7.87400 0.15076 5.1230 10.0590 268 - 1118.5000 7.45800 0.13654 5.4180 9.8550 264 - 1119.5000 6.97500 0.15046 4.4150 9.3960 274 - 1120.5000 7.81100 0.16526 5.0000 10.4810 275 - 1121.5000 8.01500 0.15521 5.1780 10.2880 271 - 1122.5000 7.51800 0.16186 4.8600 10.2380 276 - 1123.5000 7.43100 0.15326 4.8400 9.7730 259 - 1124.5000 7.42400 0.14636 5.2490 10.0410 268 - 1125.5000 8.05100 0.13875 5.6450 10.1710 266 - 1126.5000 7.06800 0.15479 4.5400 9.5510 262 - 1127.5000 7.74900 0.15860 5.2610 10.5210 275 - 1128.5000 7.98900 0.13766 5.8670 10.4410 276 - 1129.5000 8.06200 0.14234 5.6860 10.4410 279 - 1130.5000 7.40500 0.15928 4.6410 9.9620 279 - 1131.5000 7.12900 0.14892 4.1850 9.1330 276 - 1132.5000 7.56400 0.17116 4.4140 9.9760 264 - 1133.5000 7.43400 0.13471 5.2900 9.7660 276 - 1134.5000 7.16400 0.14122 4.9970 9.7230 280 - 1135.5000 7.48900 0.14440 5.1090 9.9070 276 - 1136.5000 7.28800 0.13777 4.6990 9.2600 274 - 1137.5000 7.46300 0.14104 5.1540 9.8740 280 - 1138.5000 6.79500 0.12899 4.7060 8.9450 270 - 1139.5000 7.35700 0.15073 4.4850 9.4660 273 - 1140.5000 6.97300 0.15253 4.1380 9.2970 286 - 1141.5000 6.71700 0.15571 4.1750 9.4140 283 - 1142.5000 7.18800 0.14033 4.7470 9.5100 288 - 1143.5000 6.94400 0.14187 4.5880 9.3020 276 - 1144.5000 7.26800 0.13235 4.4570 8.9570 289 - 1145.5000 7.00600 0.12683 4.6960 8.9480 281 - 1146.5000 7.18000 0.13788 4.5850 9.2730 289 - 1147.5000 7.57200 0.14145 4.8300 9.6310 288 - 1148.5000 6.94600 0.12662 4.8630 9.1230 283 - 1149.5000 7.38500 0.14980 4.4940 9.5960 290 - 1150.5000 7.10100 0.13639 4.5350 9.2360 297 - 1151.5000 7.13800 0.16544 4.4180 10.0720 292 - 1152.5000 6.98800 0.14019 4.7700 9.5200 287 - 1153.5000 7.29900 0.14139 4.5770 9.4750 300 - 1154.5000 7.38500 0.15293 4.9300 10.2010 297 - 1155.5000 6.70200 0.15102 4.1570 9.3360 294 - 1156.5000 6.79100 0.15645 4.4470 9.8120 294 - 1157.5000 7.39200 0.12848 5.0560 9.5290 303 - 1158.5000 6.68000 0.14685 4.1230 9.3440 316 - 1159.5000 7.32300 0.13031 4.7210 9.2950 308 - 1160.5000 6.54500 0.14930 3.9560 9.1020 297 - 1161.5000 6.93100 0.11838 4.8180 8.9800 309 - 1162.5000 7.16600 0.14336 4.6000 9.6320 308 - 1163.5000 7.15600 0.14244 4.7060 9.5990 295 - 1164.5000 7.47700 0.14807 4.6750 9.8130 301 - 1165.5000 7.89600 0.13330 5.3170 10.0410 314 - 1166.5000 7.61900 0.12396 5.3820 9.8170 320 - 1167.5000 7.26100 0.14074 4.8270 9.7910 311 - 1168.5000 7.59000 0.15215 4.6880 9.9850 303 - 1169.5000 7.85900 0.14094 4.9710 9.9580 313 - 1170.5000 7.16300 0.16552 3.9670 9.8050 311 - 1171.5000 8.05400 0.12661 5.7050 10.1200 304 - 1172.5000 7.76500 0.13465 5.1840 10.0390 325 - 1173.5000 7.95500 0.14939 5.0210 10.4320 328 - 1174.5000 7.86100 0.15324 5.0320 10.6080 331 - 1175.5000 7.91100 0.14698 5.0320 10.3800 331 - 1176.5000 7.69300 0.14323 4.8200 10.0710 336 - 1177.5000 7.86100 0.15444 4.9200 10.5650 334 - 1178.5000 8.16300 0.15684 5.2510 11.0010 336 - 1179.5000 8.23500 0.17544 4.7570 11.2080 338 - 1180.5000 8.49200 0.14216 5.7600 10.9250 330 - 1181.5000 7.88700 0.15242 5.1500 10.7210 334 - 1182.5000 8.52300 0.16494 5.5410 11.7390 353 - 1183.5000 8.93400 0.17007 5.0820 11.4000 345 - 1184.5000 8.38800 0.16003 5.7250 11.7300 352 - 1185.5000 8.45100 0.17702 4.8070 11.5430 362 - 1186.5000 8.55500 0.16982 5.2000 11.5630 351 - 1187.5000 8.69600 0.15589 5.7260 11.5920 354 - 1188.5000 9.11200 0.16189 5.8360 12.1060 375 - 1189.5000 9.23800 0.18382 5.5470 12.4740 355 - 1190.5000 9.24300 0.21514 4.6810 12.8450 360 - 1191.5000 9.80400 0.18850 5.8460 12.9990 360 - 1192.5000 10.14500 0.18164 6.3360 13.1710 354 - 1193.5000 10.78100 0.18387 6.4360 13.4810 367 - 1194.5000 11.03000 0.17687 6.7690 13.6010 373 - 1195.5000 11.80000 0.17758 7.4940 14.3810 376 - 1196.5000 11.11200 0.15875 7.4200 13.6010 379 - 1197.5000 10.88600 0.16233 7.2620 13.4900 368 - 1198.5000 11.82900 0.17533 8.0870 14.8320 370 - 1199.5000 12.18100 0.18152 7.7580 14.8070 377 - 1200.5000 11.32700 0.20618 6.8730 14.7940 369 - 1201.5000 12.02000 0.20269 7.4910 15.4760 388 - 1202.5000 12.53500 0.22579 7.7290 16.5550 382 - 1203.5000 13.10900 0.22107 9.1400 17.7250 377 - 1204.5000 13.44500 0.24255 8.2630 17.8920 394 - 1205.5000 14.54000 0.25713 9.3210 19.3720 382 - 1206.5000 15.05200 0.23905 10.0610 19.5510 394 - 1207.5000 16.26600 0.29812 10.1090 21.9440 394 - 1208.5000 16.58300 0.27171 11.5510 22.3240 393 - 1209.5000 16.90400 0.30329 12.1200 24.4470 413 - 1210.5000 18.31600 0.31763 12.7350 25.5980 410 - 1211.5000 18.58600 0.37164 11.8970 26.9290 409 - 1212.5000 20.54500 0.36930 14.5680 29.4320 405 - 1213.5000 20.62200 0.45851 13.7760 32.4120 413 - 1214.5000 22.14900 0.45723 15.0670 33.6960 415 - 1215.5000 23.56100 0.54671 16.2020 38.2610 407 - 1216.5000 22.61800 0.51177 16.3020 37.5020 429 - 1217.5000 23.20800 0.44884 16.7180 35.2460 426 - 1218.5000 22.97600 0.39007 17.0290 33.4120 441 - 1219.5000 23.87500 0.35857 17.4900 32.3610 430 - 1220.5000 22.73500 0.31139 16.4070 29.3960 435 - 1221.5000 21.71900 0.28579 16.2940 28.2970 441 - 1222.5000 20.39500 0.23140 15.9880 25.5850 430 - 1223.5000 20.75100 0.23436 15.2880 25.2310 450 - 1224.5000 20.13300 0.19260 16.0780 24.0470 428 - 1225.5000 19.02700 0.19858 14.3070 22.6570 442 - 1226.5000 18.51000 0.16961 14.7220 21.7970 435 - 1227.5000 17.94100 0.16472 14.2020 21.1280 442 - 1228.5000 17.84100 0.17346 13.9160 21.1930 440 - 1229.5000 16.98100 0.15970 13.6680 20.4510 451 - 1230.5000 17.55100 0.16526 13.3680 20.3480 446 - 1231.5000 16.88400 0.15976 13.8460 20.6990 460 - 1232.5000 16.93000 0.16806 13.1560 20.3650 460 - 1233.5000 16.69400 0.15333 13.2820 19.8160 454 - 1234.5000 16.64800 0.14997 13.2200 19.6600 461 - 1235.5000 16.70600 0.15098 13.3280 19.7830 457 - 1236.5000 16.52500 0.14979 12.8580 19.3110 464 - 1237.5000 16.57800 0.14533 13.3220 19.5290 456 - 1238.5000 16.51400 0.17073 12.8580 20.2290 466 - 1239.5000 16.84600 0.16636 13.3240 20.4210 455 - 1240.5000 16.18600 0.15691 12.9030 19.8000 483 - 1241.5000 15.90300 0.14442 12.6210 18.8630 467 - 1242.5000 15.15800 0.14764 11.7600 18.3030 491 - 1243.5000 14.91500 0.15140 11.7430 18.3770 480 - 1244.5000 14.34100 0.13576 11.3490 17.3960 496 - 1245.5000 14.19100 0.15045 10.5210 17.1680 488 - 1246.5000 13.40600 0.12703 10.4020 16.0660 497 - 1247.5000 12.98600 0.13302 9.8720 15.7850 494 - 1248.5000 12.62100 0.11391 9.8440 14.9790 508 - 1249.5000 12.06600 0.10184 9.7820 14.3410 501 - 1250.5000 12.10600 0.10748 9.5760 14.3680 497 - 1251.5000 11.62300 0.09164 9.4300 13.5730 511 - 1252.5000 11.57200 0.09290 9.3660 13.5040 496 - 1253.5000 11.44500 0.09488 9.3090 13.5900 509 - 1254.5000 11.40700 0.08973 9.2740 13.2870 500 - 1255.5000 11.01500 0.08353 8.8600 12.6440 513 - 1256.5000 10.95600 0.08272 8.8750 12.6040 508 - 1257.5000 10.57000 0.07694 9.0140 12.5130 517 - 1258.5000 10.71900 0.07802 8.8920 12.3740 498 - 1259.5000 10.21000 0.08201 8.2270 11.9710 521 - 1260.5000 10.60800 0.07740 8.6270 12.1230 510 - 1261.5000 10.18900 0.07968 8.3060 11.9470 522 - 1262.5000 10.01600 0.08002 7.9650 11.6390 527 - 1263.5000 10.23500 0.07635 8.4300 11.8920 514 - 1264.5000 9.85000 0.07803 7.8950 11.4910 531 - 1265.5000 10.07200 0.07793 8.1350 11.6790 517 - 1266.5000 9.90900 0.07339 8.0350 11.3950 524 - 1267.5000 9.70100 0.07290 7.9220 11.2340 516 - 1268.5000 9.44500 0.07584 7.6140 11.1160 533 - 1269.5000 9.32700 0.07397 7.6300 11.0550 536 - 1270.5000 9.13500 0.07331 7.3240 10.7120 534 - 1271.5000 8.91800 0.06170 7.4810 10.3460 539 - 1272.5000 8.91600 0.06526 7.3950 10.4110 534 - 1273.5000 8.71000 0.06800 7.1710 10.3780 556 - 1274.5000 8.57500 0.06671 6.9850 10.1110 549 - 1275.5000 8.52300 0.05839 7.1050 9.8660 559 - 1276.5000 8.45700 0.06157 6.9670 9.8940 565 - 1277.5000 8.37300 0.06516 6.9040 9.9740 555 - 1278.5000 8.28500 0.06351 6.7990 9.8450 575 - 1279.5000 8.42000 0.06214 6.8740 9.8230 563 - 1280.5000 8.37300 0.06122 6.9850 9.9210 575 - 1281.5000 7.79700 0.05755 6.5160 9.2810 577 - 1282.5000 8.17400 0.05307 6.9770 9.4910 561 - 1283.5000 8.09800 0.05098 6.8290 9.2930 584 - 1284.5000 8.02200 0.05505 6.7700 9.4170 578 - 1285.5000 8.12300 0.05659 6.7740 9.5020 581 - 1286.5000 8.07800 0.05627 6.5880 9.3470 601 - 1287.5000 8.00100 0.05617 6.5730 9.2950 587 - 1288.5000 8.12400 0.05598 6.6900 9.4210 595 - 1289.5000 8.14700 0.05676 6.6590 9.4580 608 - 1290.5000 8.04700 0.05471 6.7470 9.4230 598 - 1291.5000 8.09500 0.05428 6.5820 9.2740 615 - 1292.5000 8.11700 0.05535 6.5990 9.3240 606 - 1293.5000 8.19800 0.05735 6.6470 9.4820 611 - 1294.5000 8.14900 0.05089 6.8380 9.3620 615 - 1295.5000 8.18100 0.05354 6.8520 9.4990 611 - 1296.5000 8.31400 0.05693 7.0280 9.8380 609 - 1297.5000 8.32100 0.04906 7.0290 9.4740 621 - 1298.5000 8.33300 0.05966 6.6600 9.6190 615 - 1299.5000 8.50500 0.05214 7.1200 9.7230 623 - 1300.5000 8.55700 0.05475 7.1210 9.8870 638 - 1301.5000 8.49300 0.05806 7.0350 9.9540 632 - 1302.5000 8.74900 0.05626 7.3700 10.2190 641 - 1303.5000 8.76000 0.05731 7.2190 10.1140 638 - 1304.5000 8.70500 0.05760 7.3430 10.2300 628 - 1305.5000 8.75500 0.05631 7.3540 10.1920 635 - 1306.5000 8.63400 0.05503 7.1610 9.9560 645 - 1307.5000 8.72000 0.05756 7.1850 10.0860 635 - 1308.5000 8.68600 0.05264 7.1890 9.8650 646 - 1309.5000 8.57400 0.05115 7.2520 9.8700 655 - 1310.5000 8.45200 0.04893 7.1550 9.6480 649 - 1311.5000 8.32900 0.05394 6.9070 9.6510 647 - 1312.5000 8.42900 0.05170 7.0440 9.6720 646 - 1313.5000 8.22800 0.05495 6.6150 9.4170 650 - 1314.5000 7.99100 0.05471 6.5260 9.3050 645 - 1315.5000 7.90200 0.05085 6.4870 9.0920 656 - 1316.5000 7.77400 0.05343 6.3280 9.0710 659 - 1317.5000 7.73500 0.05288 6.3250 9.0360 657 - 1318.5000 7.82700 0.05096 6.4890 9.1230 668 - 1319.5000 7.74200 0.04946 6.3060 8.8530 663 - 1320.5000 7.70600 0.04958 6.2560 8.8210 669 - 1321.5000 7.45400 0.05229 6.0310 8.7280 665 - 1322.5000 7.49900 0.05129 6.1500 8.8110 673 - 1323.5000 7.55600 0.04685 6.2880 8.7280 678 - 1324.5000 7.54500 0.05138 6.1580 8.8260 674 - 1325.5000 7.57600 0.05099 6.1650 8.8280 682 - 1326.5000 7.59300 0.04941 6.2010 8.7970 690 - 1327.5000 7.57500 0.04839 6.3110 8.8460 686 - 1328.5000 7.71000 0.05246 6.2110 8.9550 684 - 1329.5000 7.58300 0.04539 6.2700 8.6580 692 - 1330.5000 7.59300 0.05301 6.0530 8.8580 700 - 1331.5000 7.69700 0.04733 6.3280 8.8380 703 - 1332.5000 7.91000 0.04785 6.4290 8.9410 689 - 1333.5000 7.78500 0.05489 6.2950 9.2140 707 - 1334.5000 7.82300 0.04924 6.4550 9.1010 722 - 1335.5000 7.98400 0.04912 6.5570 9.1730 709 - 1336.5000 7.75200 0.04798 6.4180 8.9910 719 - 1337.5000 7.73800 0.04671 6.4590 8.9710 723 - 1338.5000 7.84000 0.04732 6.5380 9.0900 727 - 1339.5000 7.78300 0.04986 6.2760 8.9590 724 - 1340.5000 7.74600 0.05210 6.2550 9.0490 719 - 1341.5000 7.80500 0.04938 6.3420 8.9900 719 - 1342.5000 7.65400 0.04822 6.3100 8.9210 733 - 1343.5000 7.57100 0.04726 6.2310 8.7900 733 - 1344.5000 7.67800 0.05037 6.2570 8.9660 723 - 1345.5000 7.50000 0.05026 5.9860 8.7240 742 - 1346.5000 7.56900 0.04650 6.2080 8.7240 732 - 1347.5000 7.42000 0.05355 5.8240 8.7490 746 - 1348.5000 7.41700 0.05001 6.1070 8.8280 740 - 1349.5000 7.50800 0.04803 6.1170 8.7320 741 - 1350.5000 7.31000 0.04854 6.1050 8.7530 744 - 1351.5000 7.38600 0.04809 5.9070 8.5570 759 - 1352.5000 7.26800 0.04914 5.9070 8.5950 748 - 1353.5000 7.36200 0.04722 5.8910 8.4740 748 - 1354.5000 7.24600 0.04503 5.9770 8.4630 762 - 1355.5000 7.25900 0.04574 5.9770 8.4970 759 - 1356.5000 7.32300 0.04485 6.0580 8.5630 780 - 1357.5000 7.31300 0.04832 5.8160 8.5010 772 - 1358.5000 7.25800 0.04852 5.7490 8.4420 770 - 1359.5000 7.27600 0.04929 5.7430 8.5030 784 - 1360.5000 7.33600 0.04575 6.0120 8.5460 767 - 1361.5000 7.42600 0.04492 5.9680 8.4690 775 - 1362.5000 7.26400 0.04428 5.9590 8.4290 778 - 1363.5000 7.27900 0.04425 5.9980 8.4600 774 - 1364.5000 7.34500 0.04545 5.8740 8.4210 785 - 1365.5000 7.44200 0.04501 6.0820 8.6140 791 - 1366.5000 7.41900 0.04220 6.0500 8.4300 795 - 1367.5000 7.40100 0.04610 5.8730 8.4810 800 - 1368.5000 7.46100 0.04354 6.0770 8.5430 802 - 1369.5000 7.33200 0.04673 5.9780 8.6050 790 - 1370.5000 7.42600 0.04489 6.0820 8.6370 810 - 1371.5000 7.46000 0.04483 6.1610 8.6920 797 - 1372.5000 7.43700 0.04648 6.0810 8.7040 796 - 1373.5000 7.45200 0.04682 5.9770 8.6170 795 - 1374.5000 7.52800 0.04247 6.3200 8.7270 803 - 1375.5000 7.46600 0.04549 6.0930 8.6500 790 - 1376.5000 7.54400 0.04532 6.2090 8.7790 804 - 1377.5000 7.56700 0.04477 6.2860 8.8140 797 - 1378.5000 7.52900 0.04525 6.1790 8.7390 800 - 1379.5000 7.57400 0.04373 6.2510 8.7400 810 - 1380.5000 7.79700 0.04322 6.6070 9.0700 812 - 1381.5000 7.77000 0.04523 6.5780 9.1480 807 - 1382.5000 7.81800 0.04386 6.5550 9.0500 809 - 1383.5000 7.87600 0.04504 6.5690 9.1660 831 - 1384.5000 7.95300 0.04490 6.5150 9.0990 828 - 1385.5000 7.95500 0.04434 6.6100 9.1650 830 - 1386.5000 8.21900 0.04803 6.6800 9.4410 826 - 1387.5000 8.23500 0.04465 6.8830 9.4510 827 - 1388.5000 8.29800 0.04251 6.9600 9.4210 838 - 1389.5000 8.44200 0.04806 6.9410 9.7070 828 - 1390.5000 8.74000 0.04351 7.2810 9.8030 840 - 1391.5000 8.73600 0.04681 7.2920 10.0180 848 - 1392.5000 8.73700 0.04505 7.3630 9.9870 848 - 1393.5000 8.82100 0.04677 7.3880 10.1070 845 - 1394.5000 8.74100 0.04537 7.3070 9.9510 849 - 1395.5000 8.81100 0.04994 7.2230 10.1280 846 - 1396.5000 8.82500 0.04268 7.4570 9.9530 855 - 1397.5000 8.93200 0.04402 7.5340 10.1070 854 - 1398.5000 8.93200 0.04446 7.5430 10.1310 847 - 1399.5000 9.01400 0.04633 7.5300 10.2440 858 - 1400.5000 8.87400 0.04462 7.5140 10.1310 860 - 1401.5000 8.86900 0.04758 7.3850 10.1770 861 - 1402.5000 8.87900 0.04508 7.4680 10.0950 849 - 1403.5000 8.87100 0.04219 7.5100 9.9800 857 - 1404.5000 8.66700 0.04289 7.2750 9.7920 861 - 1405.5000 8.47700 0.04473 7.0200 9.6450 861 - 1406.5000 8.35800 0.04816 6.8130 9.6510 868 - 1407.5000 8.14800 0.04436 6.6800 9.2790 858 - 1408.5000 7.93800 0.04748 6.5860 9.3710 860 - 1409.5000 7.97200 0.04617 6.4870 9.1950 860 - 1410.5000 7.84600 0.04343 6.5140 9.0730 868 - 1411.5000 7.71300 0.04144 6.4410 8.8870 871 - 1412.5000 7.63900 0.04148 6.2920 8.7260 861 - 1413.5000 7.58700 0.04225 6.3170 8.7980 862 - 1414.5000 7.65300 0.04136 6.2940 8.7270 865 - 1415.5000 7.42300 0.04287 6.1280 8.6600 872 - 1416.5000 7.25900 0.04053 6.1220 8.5060 865 - 1417.5000 7.38700 0.03971 6.1320 8.4730 869 - 1418.5000 7.29600 0.03818 6.0820 8.3380 873 - 1419.5000 7.14400 0.03809 5.8800 8.1490 887 - 1420.5000 7.14100 0.04114 5.7770 8.2440 899 - 1421.5000 7.09600 0.03897 5.8260 8.1540 892 - 1422.5000 7.05800 0.04077 5.7550 8.1970 897 - 1423.5000 7.06200 0.03776 5.8850 8.1340 887 - 1424.5000 6.99400 0.03774 5.6950 7.9480 891 - 1425.5000 7.00500 0.03648 5.7620 7.9470 897 - 1426.5000 6.90800 0.03732 5.6440 7.8820 899 - 1427.5000 6.95000 0.03923 5.5650 7.9330 911 - 1428.5000 6.90600 0.04022 5.6660 8.0940 911 - 1429.5000 6.89600 0.04144 5.6220 8.1290 915 - 1430.5000 6.78900 0.03849 5.5020 7.8320 916 - 1431.5000 6.90800 0.03817 5.7200 8.0320 917 - 1432.5000 6.97900 0.03589 5.7490 7.9260 920 - 1433.5000 6.79200 0.03708 5.6130 7.8710 927 - 1434.5000 6.83000 0.03592 5.5950 7.7790 924 - 1435.5000 6.73600 0.03705 5.4900 7.7450 926 - 1436.5000 6.61700 0.03754 5.3620 7.6640 940 - 1437.5000 6.64500 0.03738 5.4080 7.6930 934 - 1438.5000 6.58900 0.03623 5.5140 7.7450 948 - 1439.5000 6.65100 0.03526 5.4660 7.6410 951 - 1440.5000 6.67500 0.03810 5.3990 7.7450 948 - 1441.5000 6.51400 0.04018 5.2430 7.7160 947 - 1442.5000 6.44000 0.03708 5.3530 7.6270 940 - 1443.5000 6.61700 0.03744 5.3740 7.6830 951 - 1444.5000 6.58200 0.03543 5.4110 7.6010 955 - 1445.5000 6.58800 0.03656 5.3880 7.6420 950 - 1446.5000 6.52400 0.03494 5.3600 7.5230 958 - 1447.5000 6.43800 0.03646 5.2190 7.4710 954 - 1448.5000 6.38200 0.03536 5.3320 7.5220 959 - 1449.5000 6.50500 0.03425 5.3980 7.5240 963 - 1450.5000 6.46000 0.03507 5.2880 7.4670 965 - 1451.5000 6.49200 0.03406 5.3590 7.4710 961 - 1452.5000 6.40200 0.03337 5.3230 7.4080 976 - 1453.5000 6.44700 0.03501 5.3180 7.5110 981 - 1454.5000 6.46100 0.03563 5.2620 7.4940 981 - 1455.5000 6.50400 0.03320 5.3710 7.4520 982 - 1456.5000 6.54500 0.03464 5.3840 7.5530 980 - 1457.5000 6.48800 0.03387 5.3570 7.4820 984 - 1458.5000 6.51600 0.03392 5.3930 7.5310 993 - 1459.5000 6.40300 0.03310 5.3010 7.3850 991 - 1460.5000 6.40900 0.03553 5.2220 7.4610 993 - 1461.5000 6.37500 0.03456 5.3190 7.5070 1002 - 1462.5000 6.51200 0.03391 5.3480 7.4980 1005 - 1463.5000 6.51100 0.03391 5.3650 7.5120 1002 - 1464.5000 6.48000 0.03412 5.2480 7.4080 1002 - 1465.5000 6.46000 0.03304 5.3500 7.4440 1004 - 1466.5000 6.34800 0.03624 5.1380 7.4290 999 - 1467.5000 6.32900 0.03501 5.1840 7.3870 990 - 1468.5000 6.39800 0.03462 5.1780 7.3750 1007 - 1469.5000 6.42300 0.03325 5.2610 7.3820 1017 - 1470.5000 6.41700 0.03559 5.2120 7.4900 1024 - 1471.5000 6.48200 0.03367 5.3890 7.5520 1032 - 1472.5000 6.36500 0.03534 5.1580 7.4320 1035 - 1473.5000 6.42000 0.03366 5.3030 7.4680 1034 - 1474.5000 6.38200 0.03483 5.1660 7.4080 1036 - 1475.5000 6.45300 0.03289 5.2470 7.3600 1032 - 1476.5000 6.42200 0.03471 5.1370 7.3790 1043 - 1477.5000 6.41800 0.03460 5.1870 7.4240 1045 - 1478.5000 6.48500 0.03708 5.1480 7.5350 1036 - 1479.5000 6.44500 0.03492 5.1200 7.3830 1050 - 1480.5000 6.45200 0.03621 5.1700 7.5100 1044 - 1481.5000 6.57100 0.03378 5.3270 7.5130 1047 - 1482.5000 6.52200 0.03101 5.4380 7.4400 1042 - 1483.5000 6.54900 0.03141 5.4820 7.5080 1040 - 1484.5000 6.58400 0.03515 5.3800 7.6260 1021 - 1485.5000 6.68500 0.03346 5.4410 7.6000 1041 - 1486.5000 6.64100 0.03110 5.6010 7.6100 1043 - 1487.5000 6.64700 0.03432 5.3640 7.5850 1047 - 1488.5000 6.53100 0.03260 5.4070 7.5260 1056 - 1489.5000 6.62300 0.03273 5.4490 7.5650 1045 - 1490.5000 6.67600 0.03319 5.4930 7.6380 1044 - 1491.5000 6.65500 0.03294 5.4670 7.6090 1057 - 1492.5000 6.70100 0.03167 5.5910 7.6490 1056 - 1493.5000 6.69700 0.03433 5.3590 7.6000 1065 - 1494.5000 6.73700 0.03334 5.5190 7.6880 1058 - 1495.5000 6.64900 0.03279 5.5510 7.6850 1059 - 1496.5000 6.75700 0.03192 5.6270 7.6880 1042 - 1497.5000 6.75000 0.03375 5.4820 7.6880 1068 - 1498.5000 6.84900 0.03402 5.6330 7.8760 1087 - 1499.5000 6.83200 0.03507 5.4580 7.7630 1080 - 1500.5000 6.76200 0.03404 5.5650 7.7890 1067 - 1501.5000 6.74600 0.03355 5.5830 7.7890 1081 - 1502.5000 6.86500 0.03503 5.5920 7.9040 1089 - 1503.5000 6.94000 0.03333 5.7140 7.9260 1101 - 1504.5000 6.89700 0.03327 5.6780 7.8810 1096 - 1505.5000 6.91600 0.03165 5.8240 7.9040 1080 - 1506.5000 6.88800 0.03454 5.6340 7.9290 1104 - 1507.5000 7.02900 0.03115 5.9080 7.9810 1107 - 1508.5000 7.05400 0.03201 5.9160 8.0480 1109 - 1509.5000 7.06100 0.03276 5.8500 8.0270 1104 - 1510.5000 7.09200 0.03427 5.8480 8.1420 1120 - 1511.5000 7.15400 0.03185 5.9960 8.1300 1122 - 1512.5000 7.16400 0.03344 5.9660 8.2020 1118 - 1513.5000 7.13600 0.03501 5.9520 8.2820 1107 - 1514.5000 7.17700 0.03347 5.9650 8.2020 1117 - 1515.5000 7.25200 0.03418 6.0040 8.2930 1121 - 1516.5000 7.42100 0.03507 6.1450 8.4900 1118 - 1517.5000 7.33000 0.03245 6.1390 8.3020 1111 - 1518.5000 7.49100 0.03265 6.3450 8.5350 1125 - 1519.5000 7.51300 0.03330 6.2660 8.5100 1135 - 1520.5000 7.51400 0.03318 6.3370 8.5620 1124 - 1521.5000 7.78600 0.03348 6.6500 8.8980 1127 - 1522.5000 7.78900 0.03496 6.5440 8.9140 1149 - 1523.5000 7.89900 0.03315 6.7970 9.0250 1129 - 1524.5000 8.08300 0.03351 6.8330 9.0840 1128 - 1525.5000 8.17600 0.03500 6.8730 9.2430 1146 - 1526.5000 8.35800 0.03341 7.0590 9.3190 1144 - 1527.5000 8.46100 0.03502 7.2840 9.6300 1122 - 1528.5000 8.55100 0.03761 7.2600 9.8040 1144 - 1529.5000 8.53600 0.03908 7.2640 9.9270 1161 - 1530.5000 8.79500 0.04009 7.3410 10.0470 1139 - 1531.5000 8.91900 0.04051 7.4980 10.2440 1149 - 1532.5000 9.00100 0.03940 7.6740 10.3600 1162 - 1533.5000 9.23500 0.04193 7.8050 10.6350 1139 - 1534.5000 9.46900 0.04195 8.0600 10.9040 1149 - 1535.5000 9.59300 0.04281 8.1100 11.0220 1157 - 1536.5000 9.81400 0.04535 8.2800 11.3370 1136 - 1537.5000 9.96100 0.04780 8.3490 11.6010 1157 - 1538.5000 10.08500 0.05051 8.3480 11.7960 1165 - 1539.5000 10.16400 0.05485 8.4270 12.1390 1145 - 1540.5000 10.41800 0.05906 8.4570 12.4850 1163 - 1541.5000 10.72800 0.05428 8.9940 12.6720 1148 - 1542.5000 10.69900 0.06070 8.8500 12.9720 1153 - 1543.5000 11.21000 0.06589 8.9130 13.4050 1162 - 1544.5000 11.37500 0.06607 9.1740 13.6610 1153 - 1545.5000 11.37800 0.07171 9.1600 14.0280 1152 - 1546.5000 11.48100 0.07708 9.0560 14.3090 1161 - 1547.5000 11.56700 0.07677 9.0890 14.3140 1158 - 1548.5000 11.46400 0.07600 9.0020 14.1920 1166 - 1549.5000 11.34100 0.07746 8.8390 14.1310 1167 - 1550.5000 10.94300 0.07650 8.7060 13.9080 1156 - 1551.5000 10.67900 0.07084 8.4390 13.3080 1181 - 1552.5000 10.45600 0.06759 8.3380 12.9300 1154 - 1553.5000 10.22600 0.05956 8.2940 12.3810 1177 - 1554.5000 9.86500 0.05553 8.1980 11.9870 1164 - 1555.5000 9.59900 0.05493 7.8270 11.5620 1156 - 1556.5000 9.34400 0.04804 7.8110 11.0960 1169 - 1557.5000 9.12300 0.04839 7.5230 10.8220 1162 - 1558.5000 8.84200 0.04522 7.2890 10.3880 1174 - 1559.5000 8.55600 0.04421 7.1180 10.1190 1152 - 1560.5000 8.49300 0.04030 7.1690 9.9330 1176 - 1561.5000 8.31900 0.04003 7.0130 9.7420 1162 - 1562.5000 8.21400 0.04146 6.7530 9.5890 1170 - 1563.5000 8.04400 0.03873 6.6840 9.3540 1188 - 1564.5000 7.90200 0.03720 6.5610 9.0840 1150 - 1565.5000 7.79200 0.03586 6.5110 8.9890 1194 - 1566.5000 7.63900 0.03594 6.3920 8.8410 1161 - 1567.5000 7.59600 0.03406 6.3960 8.7370 1181 - 1568.5000 7.39500 0.03247 6.3870 8.6000 1161 - 1569.5000 7.34900 0.03177 6.2630 8.4500 1185 - 1570.5000 7.34900 0.03256 6.1830 8.4060 1165 - 1571.5000 7.27700 0.03064 6.2670 8.3660 1173 - 1572.5000 7.16400 0.02921 6.1660 8.1750 1183 - 1573.5000 7.09400 0.02979 6.1490 8.1890 1172 - 1574.5000 7.07300 0.02866 6.1660 8.1320 1176 - 1575.5000 7.03800 0.02871 6.0330 8.0030 1177 - 1576.5000 7.00800 0.02887 5.9990 7.9940 1194 - 1577.5000 6.88500 0.02607 5.9400 7.7240 1171 - 1578.5000 6.83800 0.02891 5.8790 7.8720 1188 - 1579.5000 6.84000 0.02815 5.7890 7.7230 1180 - 1580.5000 6.76400 0.02665 5.8100 7.6550 1198 - 1581.5000 6.74400 0.02769 5.7490 7.6520 1181 - 1582.5000 6.68400 0.02684 5.6980 7.5460 1185 - 1583.5000 6.67400 0.02661 5.7050 7.5340 1181 - 1584.5000 6.64400 0.02523 5.7380 7.4840 1197 - 1585.5000 6.65600 0.02650 5.6770 7.5040 1188 - 1586.5000 6.63200 0.02660 5.6460 7.4750 1182 - 1587.5000 6.62100 0.02536 5.7380 7.4920 1196 - 1588.5000 6.59600 0.02580 5.6440 7.4200 1185 - 1589.5000 6.66800 0.02607 5.6470 7.4510 1197 - 1590.5000 6.58000 0.02685 5.6110 7.4590 1184 - 1591.5000 6.51100 0.02682 5.5630 7.4240 1204 - 1592.5000 6.54200 0.02455 5.6460 7.3240 1168 - 1593.5000 6.48200 0.02729 5.5330 7.4190 1194 - 1594.5000 6.52400 0.02228 5.7290 7.2680 1193 - 1595.5000 6.55500 0.02590 5.5840 7.3830 1206 - 1596.5000 6.42600 0.02314 5.5810 7.1820 1197 - 1597.5000 6.45000 0.02381 5.5290 7.1800 1202 - 1598.5000 6.49000 0.02266 5.6410 7.2200 1214 - 1599.5000 6.42600 0.02402 5.5120 7.1750 1198 - 1600.5000 6.47700 0.02352 5.5600 7.2060 1224 - 1601.5000 6.48500 0.02370 5.5780 7.2230 1204 - 1602.5000 6.45500 0.02351 5.4940 7.1330 1215 - 1603.5000 6.41800 0.02339 5.5410 7.1580 1195 - 1604.5000 6.42600 0.02441 5.5320 7.2290 1208 - 1605.5000 6.45300 0.02277 5.5850 7.1740 1218 - 1606.5000 6.38000 0.02396 5.4810 7.1380 1196 - 1607.5000 6.44600 0.02454 5.4970 7.2110 1220 - 1608.5000 6.46400 0.02383 5.5660 7.2190 1203 - 1609.5000 6.44900 0.02365 5.4860 7.1270 1204 - 1610.5000 6.38800 0.02308 5.5030 7.1170 1223 - 1611.5000 6.39300 0.02257 5.5450 7.1110 1204 - 1612.5000 6.42100 0.02159 5.6120 7.1200 1220 - 1613.5000 6.42400 0.02268 5.4980 7.0690 1199 - 1614.5000 6.36500 0.02258 5.4890 7.0550 1203 - 1615.5000 6.42900 0.02238 5.6390 7.2050 1224 - 1616.5000 6.39400 0.02245 5.5900 7.1400 1192 - 1617.5000 6.36800 0.02158 5.5490 7.0560 1219 - 1618.5000 6.37800 0.02340 5.4940 7.1260 1216 - 1619.5000 6.35500 0.02102 5.5870 7.0380 1191 - 1620.5000 6.33200 0.02208 5.4730 7.0190 1226 - 1621.5000 6.38100 0.02157 5.6190 7.1260 1220 - 1622.5000 6.39300 0.02275 5.5700 7.1440 1197 - 1623.5000 6.36500 0.02271 5.4700 7.0580 1222 - 1624.5000 6.37000 0.02255 5.5270 7.0970 1212 - 1625.5000 6.33200 0.02134 5.5190 6.9990 1202 - 1626.5000 6.36900 0.02032 5.6440 7.0650 1222 - 1627.5000 6.34600 0.02286 5.5080 7.1030 1217 - 1628.5000 6.43400 0.02227 5.6110 7.1600 1209 - 1629.5000 6.45800 0.02148 5.6720 7.1740 1222 - 1630.5000 6.39100 0.02265 5.5280 7.1070 1215 - 1631.5000 6.43500 0.02225 5.6450 7.1990 1219 - 1632.5000 6.46200 0.02111 5.6230 7.1040 1230 - 1633.5000 6.42900 0.02177 5.6150 7.1440 1233 - 1634.5000 6.45000 0.02142 5.6530 7.1500 1221 - 1635.5000 6.50000 0.02219 5.6760 7.2350 1234 - 1636.5000 6.41200 0.02205 5.6090 7.1600 1237 - 1637.5000 6.45800 0.02383 5.6000 7.2630 1218 - 1638.5000 6.43400 0.02277 5.7010 7.3070 1244 - 1639.5000 6.43700 0.02215 5.6800 7.2480 1253 - 1640.5000 6.41600 0.02238 5.6230 7.1900 1226 - 1641.5000 6.40500 0.02305 5.5930 7.2180 1242 - 1642.5000 6.34600 0.02244 5.5010 7.0900 1254 - 1643.5000 6.33200 0.02149 5.5150 7.0230 1231 - 1644.5000 6.23700 0.02263 5.4110 7.0030 1237 - 1645.5000 6.18900 0.02093 5.4120 6.8910 1248 - 1646.5000 6.14200 0.02187 5.3450 6.8850 1240 - 1647.5000 6.24400 0.02111 5.4280 6.9050 1224 - 1648.5000 6.16200 0.02078 5.3360 6.7970 1236 - 1649.5000 6.14100 0.02072 5.3670 6.8290 1245 - 1650.5000 6.14300 0.02126 5.3640 6.8610 1239 - 1651.5000 6.12500 0.02054 5.3510 6.7820 1213 - 1652.5000 6.14900 0.02203 5.2960 6.8440 1234 - 1653.5000 6.16900 0.02100 5.3950 6.8820 1253 - 1654.5000 6.07800 0.02144 5.2390 6.7420 1229 - 1655.5000 6.07600 0.02159 5.2200 6.7360 1233 - 1656.5000 6.10600 0.02044 5.3020 6.7390 1236 - 1657.5000 6.14700 0.02121 5.2930 6.7860 1239 - 1658.5000 6.07800 0.02113 5.2940 6.7860 1247 - 1659.5000 6.09000 0.02118 5.2940 6.7880 1244 - 1660.5000 6.10200 0.02123 5.2940 6.7900 1241 - 1661.5000 6.12200 0.02026 5.3540 6.7870 1251 - 1662.5000 6.06000 0.02052 5.2700 6.7180 1245 - 1663.5000 6.10700 0.02009 5.3540 6.7700 1242 - 1664.5000 6.06300 0.02082 5.3160 6.7820 1240 - 1665.5000 6.02100 0.02401 5.1430 6.8470 1259 - 1666.5000 6.00800 0.02238 5.2040 6.7960 1265 - 1667.5000 5.99800 0.02241 5.1480 6.7330 1251 - 1668.5000 6.02500 0.02245 5.1420 6.7320 1254 - 1669.5000 5.94000 0.02113 5.1330 6.6280 1251 - 1670.5000 5.91400 0.02152 5.1240 6.6530 1262 - 1671.5000 5.84300 0.02142 5.0540 6.5780 1266 - 1672.5000 5.81600 0.02182 5.0030 6.5470 1252 - 1673.5000 5.75600 0.02114 4.9870 6.4850 1255 - 1674.5000 5.73400 0.02089 4.9700 6.4410 1240 - 1675.5000 5.75500 0.02048 4.9550 6.4150 1270 - 1676.5000 5.70600 0.02124 4.8860 6.4030 1275 - 1677.5000 5.67000 0.02123 4.7990 6.3090 1265 - 1678.5000 5.61300 0.02159 4.7900 6.3290 1270 - 1679.5000 5.65800 0.02093 4.7890 6.2660 1245 - 1680.5000 5.55600 0.01997 4.8170 6.2390 1268 - 1681.5000 5.54000 0.02126 4.7290 6.2470 1275 - 1682.5000 5.51300 0.02028 4.6740 6.1240 1278 - 1683.5000 5.51700 0.02131 4.6840 6.2030 1270 - 1684.5000 5.47600 0.02149 4.6530 6.1820 1266 - 1685.5000 5.46700 0.02132 4.6460 6.1670 1272 - 1686.5000 5.49200 0.02152 4.5930 6.1190 1257 - 1687.5000 5.44300 0.02042 4.6760 6.1290 1266 - 1688.5000 5.46900 0.02079 4.6320 6.1190 1279 - 1689.5000 5.44800 0.02002 4.6570 6.0820 1266 - 1690.5000 5.42300 0.02021 4.6550 6.0980 1275 - 1691.5000 5.42100 0.01855 4.7000 6.0200 1266 - 1692.5000 5.45400 0.02028 4.6460 6.0900 1268 - 1693.5000 5.45600 0.01944 4.6730 6.0580 1269 - 1694.5000 5.43300 0.02093 4.5940 6.0890 1276 - 1695.5000 5.39200 0.01949 4.6480 6.0430 1281 - 1696.5000 5.39800 0.01992 4.5990 6.0230 1278 - 1697.5000 5.41700 0.02039 4.5970 6.0610 1289 - 1698.5000 5.44500 0.01921 4.7160 6.0950 1288 - 1699.5000 5.44100 0.01975 4.6900 6.0990 1273 - 1700.5000 5.41100 0.01924 4.6980 6.0690 1270 - 1701.5000 5.35900 0.02057 4.5950 6.0700 1285 - 1702.5000 5.43000 0.01967 4.6390 6.0420 1272 - 1703.5000 5.42000 0.02123 4.5720 6.1000 1295 - 1704.5000 5.49100 0.02033 4.6670 6.1240 1284 - 1705.5000 5.43200 0.01934 4.7110 6.1030 1295 - 1706.5000 5.41900 0.02006 4.6560 6.1020 1299 - 1707.5000 5.41900 0.02035 4.6090 6.0690 1287 - 1708.5000 5.43600 0.01903 4.6860 6.0560 1296 - 1709.5000 5.48600 0.02043 4.6420 6.1090 1289 - 1710.5000 5.41000 0.02012 4.6110 6.0550 1288 - 1711.5000 5.43300 0.01982 4.6590 6.0780 1282 - 1712.5000 5.40200 0.01898 4.7020 6.0650 1289 - 1713.5000 5.47700 0.01983 4.6780 6.1000 1285 - 1714.5000 5.42700 0.02007 4.6100 6.0570 1300 - 1715.5000 5.43000 0.01981 4.6720 6.0940 1288 - 1716.5000 5.42200 0.01995 4.6320 6.0720 1303 - 1717.5000 5.42000 0.01904 4.7210 6.0890 1290 - 1718.5000 5.41600 0.01960 4.6360 6.0510 1303 - 1719.5000 5.38100 0.01952 4.6370 6.0460 1302 - 1720.5000 5.42600 0.01892 4.7220 6.0830 1293 - 1721.5000 5.39600 0.01856 4.7320 6.0680 1295 - 1722.5000 5.41000 0.01989 4.6230 6.0530 1292 - 1723.5000 5.39700 0.01822 4.7100 6.0230 1298 - 1724.5000 5.43500 0.01849 4.6980 6.0260 1289 - 1725.5000 5.42400 0.01994 4.6780 6.1180 1304 - 1726.5000 5.35900 0.01885 4.6180 5.9720 1290 - 1727.5000 5.36100 0.01894 4.6230 5.9850 1293 - 1728.5000 5.37800 0.01909 4.6750 6.0540 1304 - 1729.5000 5.37300 0.01948 4.6150 6.0160 1293 - 1730.5000 5.40700 0.01926 4.6110 6.0010 1302 - 1731.5000 5.34400 0.01894 4.5990 5.9630 1297 - 1732.5000 5.31200 0.01857 4.6020 5.9410 1300 - 1733.5000 5.34000 0.01884 4.6160 5.9780 1307 - 1734.5000 5.34800 0.01811 4.6670 5.9730 1300 - 1735.5000 5.30700 0.01812 4.6300 5.9430 1313 - 1736.5000 5.33000 0.01814 4.6610 5.9710 1304 - 1737.5000 5.30300 0.01745 4.6400 5.9040 1312 - 1738.5000 5.31900 0.01818 4.6660 5.9830 1312 - 1739.5000 5.33000 0.01739 4.6570 5.9190 1317 - 1740.5000 5.36000 0.01874 4.6550 6.0120 1311 - 1741.5000 5.40100 0.01724 4.7520 6.0060 1323 - 1742.5000 5.41600 0.01783 4.7010 6.0000 1327 - 1743.5000 5.41400 0.01844 4.6760 6.0190 1326 - 1744.5000 5.40100 0.01909 4.6290 6.0170 1322 - 1745.5000 5.40900 0.01856 4.6460 5.9960 1323 - 1746.5000 5.40600 0.01832 4.6400 5.9730 1323 - 1747.5000 5.38900 0.01693 4.6950 5.9240 1318 - 1748.5000 5.41700 0.01957 4.5750 5.9980 1322 - 1749.5000 5.38000 0.01794 4.6480 5.9570 1331 - 1750.5000 5.38200 0.01900 4.5680 5.9530 1329 - 1751.5000 5.37400 0.01703 4.6910 5.9330 1330 - 1752.5000 5.30000 0.01823 4.5700 5.9000 1330 - 1753.5000 5.26200 0.01768 4.5830 5.8740 1333 - 1754.5000 5.29800 0.01899 4.5340 5.9150 1322 - 1755.5000 5.25900 0.01818 4.5500 5.8750 1328 - 1756.5000 5.23800 0.01756 4.5650 5.8450 1328 - 1757.5000 5.20100 0.01856 4.4970 5.8470 1322 - 1758.5000 5.16300 0.01769 4.5270 5.8170 1330 - 1759.5000 5.19100 0.01801 4.4710 5.7810 1323 - 1760.5000 5.10300 0.01774 4.4210 5.7170 1335 - 1761.5000 5.12900 0.01801 4.4410 5.7560 1333 - 1762.5000 5.15200 0.01712 4.4730 5.7280 1343 - 1763.5000 5.10700 0.01782 4.4260 5.7290 1337 - 1764.5000 5.13300 0.01802 4.4400 5.7600 1342 - 1765.5000 5.07800 0.01852 4.4120 5.7650 1335 - 1766.5000 5.10300 0.01731 4.4360 5.7040 1342 - 1767.5000 5.11200 0.01884 4.3880 5.7640 1333 - 1768.5000 5.13200 0.01645 4.4950 5.6980 1337 - 1769.5000 5.14600 0.01705 4.4420 5.6960 1352 - 1770.5000 5.11100 0.01755 4.4220 5.7090 1344 - 1771.5000 5.05000 0.01798 4.3400 5.6650 1358 - 1772.5000 5.08100 0.01730 4.4190 5.6800 1329 - 1773.5000 5.12200 0.01746 4.3900 5.6770 1359 - 1774.5000 5.10700 0.01671 4.4340 5.6580 1342 - 1775.5000 5.04500 0.01733 4.3690 5.6390 1343 - 1776.5000 5.09400 0.01738 4.3840 5.6600 1347 - 1777.5000 5.10100 0.01821 4.3810 5.7170 1346 - 1778.5000 5.03200 0.01656 4.4010 5.6150 1344 - 1779.5000 5.06900 0.01755 4.3570 5.6400 1336 - 1780.5000 5.12400 0.01656 4.4520 5.6750 1364 - 1781.5000 5.04600 0.01671 4.4390 5.6580 1330 - 1782.5000 5.08000 0.01666 4.4360 5.6610 1352 - 1783.5000 5.09400 0.01831 4.3590 5.7060 1353 - 1784.5000 5.12800 0.01699 4.4410 5.6870 1345 - 1785.5000 5.10700 0.01712 4.4100 5.6680 1350 - 1786.5000 5.10900 0.01768 4.4200 5.7150 1341 - 1787.5000 5.11600 0.01621 4.4790 5.6720 1354 - 1788.5000 5.09800 0.01697 4.4380 5.6810 1341 - 1789.5000 5.02300 0.01687 4.3560 5.5970 1353 - 1790.5000 5.05400 0.01610 4.4310 5.6140 1350 - 1791.5000 5.05600 0.01674 4.3790 5.6060 1343 - 1792.5000 4.96900 0.01716 4.3060 5.5640 1344 - 1793.5000 5.05100 0.01629 4.3840 5.5740 1334 - 1794.5000 4.99600 0.01537 4.4290 5.5650 1366 - 1795.5000 5.01400 0.01637 4.3380 5.5370 1341 - 1796.5000 4.95900 0.01705 4.2620 5.5200 1361 - 1797.5000 4.95600 0.01723 4.2750 5.5410 1350 - 1798.5000 4.91000 0.01602 4.3040 5.4820 1351 - 1799.5000 4.92400 0.01662 4.3060 5.5250 1345 - 1800.5000 4.90600 0.01597 4.2710 5.4440 1349 - 1801.5000 4.93900 0.01672 4.2570 5.4940 1368 - 1802.5000 4.93300 0.01678 4.2880 5.5220 1352 - 1803.5000 4.90800 0.01619 4.2920 5.4810 1348 - 1804.5000 4.95900 0.01603 4.3000 5.4770 1347 - 1805.5000 4.93300 0.01600 4.2930 5.4680 1349 - 1806.5000 4.90900 0.01612 4.2670 5.4610 1372 - 1807.5000 4.96500 0.01606 4.3190 5.5010 1355 - 1808.5000 4.93600 0.01563 4.3210 5.4760 1365 - 1809.5000 4.96000 0.01641 4.3020 5.5100 1354 - 1810.5000 4.95900 0.01606 4.3060 5.4880 1354 - 1811.5000 4.95900 0.01627 4.2910 5.4940 1366 - 1812.5000 4.92200 0.01644 4.2540 5.4680 1363 - 1813.5000 4.92000 0.01686 4.2450 5.4880 1359 - 1814.5000 4.96100 0.01618 4.3340 5.5220 1347 - 1815.5000 4.94800 0.01618 4.3600 5.5510 1354 - 1816.5000 4.93400 0.01618 4.2530 5.4500 1368 - 1817.5000 4.90800 0.01608 4.2800 5.4650 1358 - 1818.5000 4.92800 0.01601 4.3130 5.4870 1345 - 1819.5000 4.90800 0.01639 4.2370 5.4440 1356 - 1820.5000 4.91200 0.01613 4.2850 5.4720 1354 - 1821.5000 4.91400 0.01552 4.3030 5.4550 1377 - 1822.5000 4.93000 0.01641 4.2840 5.4940 1359 - 1823.5000 4.87000 0.01686 4.2180 5.4600 1357 - 1824.5000 4.87100 0.01670 4.1960 5.4380 1382 - 1825.5000 4.87400 0.01601 4.2840 5.4660 1363 - 1826.5000 4.86600 0.01632 4.2200 5.4270 1368 - 1827.5000 4.83000 0.01615 4.2530 5.4430 1358 - 1828.5000 4.87100 0.01623 4.2450 5.4420 1360 - 1829.5000 4.83200 0.01544 4.2420 5.3880 1378 - 1830.5000 4.86400 0.01699 4.1830 5.4350 1358 - 1831.5000 4.89500 0.01607 4.3040 5.4880 1357 - 1832.5000 4.82300 0.01592 4.1700 5.3540 1383 - 1833.5000 4.90900 0.01583 4.2860 5.4520 1357 - 1834.5000 4.85800 0.01627 4.2560 5.4590 1367 - 1835.5000 4.87500 0.01648 4.2250 5.4390 1356 - 1836.5000 4.82900 0.01710 4.2110 5.4740 1364 - 1837.5000 4.89800 0.01729 4.2890 5.5730 1379 - 1838.5000 4.92700 0.01643 4.2780 5.4900 1360 - 1839.5000 4.90900 0.01650 4.2740 5.4890 1355 - 1840.5000 4.93900 0.01702 4.2680 5.5300 1375 - 1841.5000 4.96900 0.01662 4.2920 5.5200 1364 - 1842.5000 4.97500 0.01530 4.3800 5.5090 1361 - 1843.5000 4.96400 0.01612 4.3160 5.5120 1377 - 1844.5000 5.02000 0.01599 4.3940 5.5810 1377 - 1845.5000 5.00600 0.01675 4.3610 5.5940 1355 - 1846.5000 5.03300 0.01700 4.3380 5.5960 1369 - 1847.5000 5.07700 0.01657 4.4100 5.6350 1367 - 1848.5000 5.06100 0.01651 4.4280 5.6510 1372 - 1849.5000 5.11300 0.01587 4.4910 5.6640 1366 - 1850.5000 5.14900 0.01658 4.5260 5.7510 1365 - 1851.5000 5.14100 0.01692 4.4720 5.7300 1382 - 1852.5000 5.16500 0.01662 4.4900 5.7160 1361 - 1853.5000 5.20200 0.01756 4.5000 5.7970 1364 - 1854.5000 5.20600 0.01656 4.5980 5.8290 1381 - 1855.5000 5.20700 0.01711 4.5710 5.8320 1358 - 1856.5000 5.18700 0.01756 4.4940 5.7900 1361 - 1857.5000 5.19500 0.01584 4.5810 5.7580 1381 - 1858.5000 5.21000 0.01694 4.5820 5.8330 1363 - 1859.5000 5.22400 0.01629 4.6280 5.8280 1356 - 1860.5000 5.22600 0.01679 4.5950 5.8390 1373 - 1861.5000 5.20100 0.01680 4.5670 5.8040 1355 - 1862.5000 5.23600 0.01692 4.6210 5.8660 1354 - 1863.5000 5.28700 0.01690 4.5990 5.8480 1366 - 1864.5000 5.21800 0.01625 4.5790 5.7770 1358 - 1865.5000 5.22100 0.01585 4.6470 5.8140 1355 - 1866.5000 5.18300 0.01722 4.5480 5.8230 1371 - 1867.5000 5.20900 0.01721 4.5710 5.8360 1350 - 1868.5000 5.16000 0.01585 4.5560 5.7230 1356 - 1869.5000 5.20300 0.01665 4.5680 5.8010 1371 - 1870.5000 5.19000 0.01639 4.5820 5.7930 1364 - 1871.5000 5.23200 0.01594 4.6230 5.7990 1360 - 1872.5000 5.13500 0.01654 4.5740 5.7960 1365 - 1873.5000 5.17800 0.01707 4.5590 5.8220 1369 - 1874.5000 5.22800 0.01641 4.5990 5.8110 1363 - 1875.5000 5.25400 0.01629 4.6070 5.8060 1354 - 1876.5000 5.25600 0.01619 4.6540 5.8530 1371 - 1877.5000 5.26500 0.01584 4.6790 5.8570 1382 - 1878.5000 5.38600 0.01644 4.7480 5.9590 1356 - 1879.5000 5.34700 0.01609 4.7430 5.9390 1381 - 1880.5000 5.43900 0.01656 4.8050 6.0270 1362 - 1881.5000 5.43200 0.01658 4.8340 6.0560 1358 - 1882.5000 5.49700 0.01696 4.8510 6.1110 1380 - 1883.5000 5.51200 0.01733 4.8530 6.1350 1368 - 1884.5000 5.59700 0.01662 4.9860 6.2100 1356 - 1885.5000 5.59600 0.01680 4.9950 6.2400 1373 - 1886.5000 5.73800 0.01655 5.0870 6.3070 1359 - 1887.5000 5.81000 0.01684 5.1110 6.3560 1366 - 1888.5000 5.82500 0.01767 5.1720 6.4740 1357 - 1889.5000 5.86600 0.01750 5.2470 6.5460 1377 - 1890.5000 5.93400 0.01683 5.3210 6.5670 1370 - 1891.5000 5.96400 0.01557 5.3710 6.5090 1336 - 1892.5000 6.05400 0.01694 5.3900 6.6500 1383 - 1893.5000 6.06600 0.01742 5.3870 6.6710 1358 - 1894.5000 6.10400 0.01744 5.4420 6.7210 1345 - 1895.5000 6.12500 0.01760 5.4730 6.7750 1368 - 1896.5000 6.14600 0.01653 5.5180 6.7390 1364 - 1897.5000 6.14100 0.01683 5.5090 6.7550 1370 - 1898.5000 6.18200 0.01626 5.5440 6.7400 1353 - 1899.5000 6.19600 0.01741 5.5310 6.8190 1369 - 1900.5000 6.24900 0.01735 5.6060 6.8850 1359 - 1901.5000 6.28500 0.01733 5.6510 6.9260 1353 - 1902.5000 6.32600 0.01722 5.7070 6.9830 1373 - 1903.5000 6.41800 0.01790 5.7660 7.0870 1361 - 1904.5000 6.43500 0.01831 5.7750 7.1310 1371 - 1905.5000 6.50100 0.01778 5.8810 7.1840 1342 - 1906.5000 6.57300 0.01913 5.8960 7.3130 1371 - 1907.5000 6.57200 0.01777 5.9890 7.2950 1351 - 1908.5000 6.56800 0.01919 5.9290 7.3420 1355 - 1909.5000 6.53800 0.01862 5.8590 7.2320 1359 - 1910.5000 6.47000 0.01844 5.8230 7.1890 1372 - 1911.5000 6.37800 0.01732 5.7830 7.0630 1365 - 1912.5000 6.32000 0.01645 5.7100 6.9210 1355 - 1913.5000 6.23300 0.01648 5.6330 6.8580 1381 - 1914.5000 6.08500 0.01571 5.5630 6.7230 1363 - 1915.5000 5.99100 0.01584 5.4040 6.5790 1376 - 1916.5000 5.91800 0.01598 5.3510 6.5230 1345 - 1917.5000 5.80900 0.01628 5.2620 6.4720 1381 - 1918.5000 5.71400 0.01634 5.1100 6.3180 1366 - 1919.5000 5.64800 0.01523 5.0810 6.2100 1374 - 1920.5000 5.52600 0.01541 5.0140 6.1510 1361 - 1921.5000 5.49000 0.01501 4.9320 6.0480 1382 - 1922.5000 5.43800 0.01542 4.8540 5.9970 1373 - 1923.5000 5.38700 0.01489 4.8290 5.9310 1369 - 1924.5000 5.30900 0.01483 4.7570 5.8550 1371 - 1925.5000 5.30900 0.01372 4.7600 5.7790 1380 - 1926.5000 5.18000 0.01497 4.6370 5.7430 1364 - 1927.5000 5.13500 0.01495 4.5880 5.6910 1360 - 1928.5000 5.07900 0.01437 4.5840 5.6490 1374 - 1929.5000 5.02500 0.01361 4.5110 5.5220 1379 - 1930.5000 5.01200 0.01409 4.5240 5.5650 1364 - 1931.5000 5.00800 0.01371 4.4760 5.4890 1364 - 1932.5000 4.93700 0.01326 4.4640 5.4480 1377 - 1933.5000 4.88400 0.01364 4.3650 5.3770 1376 - 1934.5000 4.85200 0.01423 4.3500 5.4010 1364 - 1935.5000 4.81000 0.01390 4.2860 5.3100 1356 - 1936.5000 4.75500 0.01351 4.2570 5.2580 1372 - 1937.5000 4.73300 0.01350 4.2490 5.2520 1379 - 1938.5000 4.73100 0.01410 4.2280 5.2680 1360 - 1939.5000 4.67500 0.01357 4.1590 5.1630 1369 - 1940.5000 4.63400 0.01343 4.1730 5.1630 1358 - 1941.5000 4.66400 0.01372 4.1460 5.1670 1384 - 1942.5000 4.61000 0.01376 4.1200 5.1360 1362 - 1943.5000 4.58900 0.01292 4.1450 5.1060 1384 - 1944.5000 4.58900 0.01424 4.0520 5.0970 1346 - 1945.5000 4.58000 0.01387 4.0430 5.0750 1384 - 1946.5000 4.57400 0.01259 4.1200 5.0500 1364 - 1947.5000 4.57100 0.01471 4.0190 5.1050 1362 - 1948.5000 4.57000 0.01303 4.0820 5.0420 1358 - 1949.5000 4.53400 0.01333 4.0430 5.0290 1367 - 1950.5000 4.49800 0.01290 4.0070 4.9630 1373 - 1951.5000 4.52500 0.01364 3.9830 4.9900 1362 - 1952.5000 4.48700 0.01340 3.9990 4.9870 1360 - 1953.5000 4.50900 0.01326 3.9960 4.9700 1349 - 1954.5000 4.46100 0.01367 3.9280 4.9400 1370 - 1955.5000 4.44700 0.01374 3.9250 4.9370 1357 - 1956.5000 4.44300 0.01319 3.9310 4.9070 1368 - 1957.5000 4.37900 0.01386 3.8800 4.8980 1349 - 1958.5000 4.33800 0.01273 3.8700 4.8120 1368 - 1959.5000 4.35900 0.01349 3.8450 4.8420 1366 - 1960.5000 4.37100 0.01302 3.8800 4.8370 1350 - 1961.5000 4.31600 0.01326 3.8280 4.8070 1362 - 1962.5000 4.33700 0.01376 3.8390 4.8500 1350 - 1963.5000 4.32300 0.01335 3.8060 4.7930 1367 - 1964.5000 4.29700 0.01305 3.8090 4.7750 1370 - 1965.5000 4.26900 0.01362 3.8140 4.8160 1353 - 1966.5000 4.25400 0.01266 3.7790 4.7140 1364 - 1967.5000 4.26000 0.01284 3.7760 4.7200 1352 - 1968.5000 4.25700 0.01314 3.7690 4.7410 1369 - 1969.5000 4.23900 0.01308 3.7740 4.7400 1364 - 1970.5000 4.19100 0.01298 3.6970 4.6580 1371 - 1971.5000 4.21400 0.01268 3.7690 4.7020 1354 - 1972.5000 4.20300 0.01252 3.7600 4.6840 1362 - 1973.5000 4.17100 0.01246 3.7370 4.6570 1364 - 1974.5000 4.16100 0.01259 3.7290 4.6580 1361 - 1975.5000 4.21000 0.01295 3.7320 4.6890 1365 - 1976.5000 4.20500 0.01244 3.7680 4.6800 1344 - 1977.5000 4.19300 0.01179 3.7670 4.6350 1355 - 1978.5000 4.19400 0.01238 3.7310 4.6460 1365 - 1979.5000 4.16400 0.01201 3.7340 4.6210 1363 - 1980.5000 4.14300 0.01267 3.7070 4.6420 1361 - 1981.5000 4.21500 0.01217 3.7780 4.6740 1356 - 1982.5000 4.19800 0.01234 3.7510 4.6580 1350 - 1983.5000 4.20300 0.01207 3.7810 4.6770 1378 - 1984.5000 4.15900 0.01252 3.6840 4.6110 1370 - 1985.5000 4.20000 0.01272 3.7180 4.6580 1366 - 1986.5000 4.17600 0.01245 3.7490 4.6720 1375 - 1987.5000 4.22800 0.01254 3.7760 4.7010 1361 - 1988.5000 4.20200 0.01219 3.7440 4.6480 1376 - 1989.5000 4.19700 0.01188 3.7490 4.6290 1372 - 1990.5000 4.19600 0.01204 3.7610 4.6520 1370 - 1991.5000 4.17100 0.01282 3.6910 4.6410 1372 - 1992.5000 4.19100 0.01192 3.7320 4.6120 1362 - 1993.5000 4.18800 0.01223 3.7410 4.6460 1370 - 1994.5000 4.18300 0.01158 3.7630 4.6250 1385 - 1995.5000 4.18000 0.01238 3.7300 4.6460 1369 - 1996.5000 4.20700 0.01236 3.7310 4.6430 1362 - 1997.5000 4.20300 0.01289 3.7040 4.6620 1380 - 1998.5000 4.14400 0.01265 3.6690 4.5990 1351 - 1999.5000 4.15500 0.01268 3.6910 4.6290 1367 - 2000.5000 4.14500 0.01151 3.7240 4.5780 1377 - 2001.5000 4.13500 0.01210 3.6820 4.5800 1376 - 2002.5000 4.14700 0.01160 3.7110 4.5700 1372 - 2003.5000 4.13400 0.01220 3.6890 4.5910 1366 - 2004.5000 4.12700 0.01196 3.6960 4.5760 1353 - 2005.5000 4.10800 0.01189 3.6950 4.5770 1375 - 2006.5000 4.06300 0.01227 3.6060 4.5140 1368 - 2007.5000 4.08700 0.01147 3.6730 4.5240 1377 - 2008.5000 4.08400 0.01265 3.6030 4.5410 1375 - 2009.5000 4.08700 0.01160 3.6660 4.5270 1377 - 2010.5000 4.09300 0.01202 3.6400 4.5250 1355 - 2011.5000 4.06700 0.01173 3.6310 4.4990 1369 - 2012.5000 4.06900 0.01222 3.6200 4.5290 1384 - 2013.5000 4.05000 0.01234 3.5910 4.5030 1366 - 2014.5000 4.09500 0.01204 3.6160 4.5060 1365 - 2015.5000 4.04300 0.01154 3.6070 4.4640 1379 - 2016.5000 4.04400 0.01134 3.6160 4.4530 1361 - 2017.5000 4.04800 0.01191 3.5980 4.4790 1368 - 2018.5000 4.02500 0.01198 3.5730 4.4650 1387 - 2019.5000 4.05800 0.01174 3.6360 4.5120 1391 - 2020.5000 4.02700 0.01226 3.5530 4.4610 1371 - 2021.5000 4.02000 0.01150 3.5820 4.4380 1386 - 2022.5000 4.03400 0.01171 3.6160 4.4880 1387 - 2023.5000 4.00300 0.01185 3.5690 4.4440 1364 - 2024.5000 4.01000 0.01172 3.5840 4.4540 1377 - 2025.5000 3.99400 0.01135 3.5710 4.4170 1388 - 2026.5000 4.00000 0.01145 3.5650 4.4160 1381 - 2027.5000 4.00600 0.01155 3.5590 4.4150 1374 - 2028.5000 3.99000 0.01224 3.5190 4.4310 1387 - 2029.5000 4.02100 0.01147 3.5900 4.4450 1390 - 2030.5000 3.97400 0.01180 3.5390 4.4090 1359 - 2031.5000 4.00000 0.01146 3.5540 4.4040 1375 - 2032.5000 3.96900 0.01193 3.5440 4.4310 1381 - 2033.5000 4.00300 0.01146 3.5790 4.4320 1384 - 2034.5000 3.99900 0.01221 3.5350 4.4400 1374 - 2035.5000 3.97500 0.01193 3.5670 4.4500 1370 - 2036.5000 3.96900 0.01160 3.5590 4.4210 1381 - 2037.5000 4.00400 0.01237 3.5630 4.4790 1371 - 2038.5000 4.01600 0.01126 3.6010 4.4330 1366 - 2039.5000 4.01100 0.01201 3.5770 4.4670 1373 - 2040.5000 3.99200 0.01168 3.5510 4.4210 1386 - 2041.5000 4.00900 0.01147 3.5930 4.4460 1382 - 2042.5000 4.00300 0.01181 3.5700 4.4400 1357 - 2043.5000 4.00000 0.01231 3.5470 4.4640 1387 - 2044.5000 3.97600 0.01231 3.5250 4.4420 1388 - 2045.5000 4.01100 0.01176 3.5570 4.4250 1361 - 2046.5000 3.97700 0.01171 3.5390 4.4070 1374 - 2047.5000 3.98500 0.01187 3.5340 4.4130 1372 - 2048.5000 4.02000 0.01157 3.5750 4.4350 1381 - 2049.5000 4.03300 0.01219 3.5500 4.4550 1379 - 2050.5000 4.01800 0.01179 3.5660 4.4390 1370 - 2051.5000 4.04900 0.01205 3.5820 4.4760 1375 - 2052.5000 4.03200 0.01154 3.6000 4.4560 1375 - 2053.5000 4.02400 0.01140 3.6080 4.4550 1380 - 2054.5000 4.07100 0.01177 3.6160 4.4850 1363 - 2055.5000 4.01400 0.01122 3.6120 4.4420 1369 - 2056.5000 4.02400 0.01141 3.5780 4.4260 1381 - 2057.5000 4.04800 0.01109 3.6180 4.4410 1377 - 2058.5000 4.03800 0.01167 3.5930 4.4610 1383 - 2059.5000 4.06400 0.01174 3.6140 4.4820 1367 - 2060.5000 4.06500 0.01174 3.6360 4.5070 1377 - 2061.5000 4.07800 0.01158 3.6690 4.5310 1386 - 2062.5000 4.07000 0.01121 3.6740 4.5060 1376 - 2063.5000 4.09700 0.01081 3.7020 4.5020 1368 - 2064.5000 4.10700 0.01078 3.7000 4.5000 1377 - 2065.5000 4.08100 0.01146 3.6680 4.5190 1379 - 2066.5000 4.09700 0.01178 3.6530 4.5300 1385 - 2067.5000 4.11400 0.01161 3.6740 4.5400 1390 - 2068.5000 4.06600 0.01099 3.6830 4.4990 1378 - 2069.5000 4.12300 0.01129 3.6750 4.5150 1383 - 2070.5000 4.08800 0.01122 3.6700 4.5050 1384 - 2071.5000 4.09000 0.01125 3.6610 4.4970 1381 - 2072.5000 4.10400 0.01196 3.6440 4.5340 1384 - 2073.5000 4.05200 0.01134 3.6520 4.4920 1371 - 2074.5000 4.07600 0.01111 3.6590 4.4830 1375 - 2075.5000 4.05300 0.01115 3.6400 4.4660 1371 - 2076.5000 4.06900 0.01142 3.6310 4.4810 1385 - 2077.5000 4.08800 0.01143 3.6430 4.4920 1379 - 2078.5000 4.03100 0.01107 3.6240 4.4500 1392 - 2079.5000 4.08400 0.01184 3.6440 4.5240 1382 - 2080.5000 4.04700 0.01186 3.6190 4.4980 1373 - 2081.5000 4.05500 0.01077 3.6590 4.4630 1393 - 2082.5000 4.04200 0.01115 3.6420 4.4690 1375 - 2083.5000 4.02000 0.01126 3.6090 4.4460 1381 - 2084.5000 4.01700 0.01170 3.6020 4.4690 1373 - 2085.5000 4.01000 0.01066 3.6350 4.4260 1376 - 2086.5000 4.00200 0.01109 3.5810 4.4050 1381 - 2087.5000 3.98900 0.01161 3.5590 4.4240 1388 - 2088.5000 4.02900 0.01150 3.6170 4.4750 1391 - 2089.5000 3.96900 0.01122 3.5550 4.3900 1385 - 2090.5000 3.93800 0.01136 3.5240 4.3720 1392 - 2091.5000 3.95600 0.01144 3.5500 4.4000 1379 - 2092.5000 3.94700 0.01121 3.5280 4.3590 1374 - 2093.5000 3.94700 0.01155 3.4820 4.3410 1382 - 2094.5000 3.92100 0.01158 3.4580 4.3200 1385 - 2095.5000 3.90600 0.01053 3.5250 4.3100 1389 - 2096.5000 3.92700 0.01084 3.5330 4.3380 1379 - 2097.5000 3.93400 0.01151 3.5020 4.3540 1370 - 2098.5000 3.92600 0.01066 3.5330 4.3250 1380 - 2099.5000 3.90200 0.01017 3.5330 4.2870 1375 - 2100.5000 3.93600 0.01152 3.5080 4.3640 1380 - 2101.5000 3.90600 0.01143 3.4640 4.3150 1387 - 2102.5000 3.93200 0.01151 3.4880 4.3440 1382 - 2103.5000 3.88400 0.01101 3.4690 4.2870 1380 - 2104.5000 3.85800 0.01125 3.4250 4.2620 1385 - 2105.5000 3.86500 0.01079 3.4490 4.2500 1379 - 2106.5000 3.85200 0.01090 3.4290 4.2380 1376 - 2107.5000 3.83900 0.01083 3.4150 4.2200 1380 - 2108.5000 3.84200 0.01020 3.4530 4.2080 1371 - 2109.5000 3.82500 0.01077 3.4410 4.2410 1380 - 2110.5000 3.82500 0.01091 3.4090 4.2200 1382 - 2111.5000 3.83300 0.01100 3.4310 4.2510 1388 - 2112.5000 3.81900 0.01070 3.4200 4.2120 1370 - 2113.5000 3.81700 0.01064 3.4180 4.2050 1367 - 2114.5000 3.78700 0.01017 3.4150 4.1670 1366 - 2115.5000 3.77100 0.01040 3.3670 4.1380 1375 - 2116.5000 3.76700 0.01049 3.3890 4.1640 1364 - 2117.5000 3.77000 0.01084 3.3630 4.1640 1366 - 2118.5000 3.75700 0.01049 3.3660 4.1440 1374 - 2119.5000 3.74000 0.01041 3.3640 4.1360 1376 - 2120.5000 3.74900 0.01071 3.3520 4.1420 1361 - 2121.5000 3.71300 0.00998 3.3690 4.1070 1368 - 2122.5000 3.73700 0.01027 3.3600 4.1190 1366 - 2123.5000 3.69800 0.01071 3.2930 4.0860 1371 - 2124.5000 3.71000 0.01034 3.3320 4.0930 1355 - 2125.5000 3.69800 0.01027 3.3040 4.0640 1370 - 2126.5000 3.70900 0.01006 3.3040 4.0450 1356 - 2127.5000 3.70000 0.01066 3.2910 4.0790 1365 - 2128.5000 3.69400 0.00987 3.3390 4.0680 1365 - 2129.5000 3.68400 0.01071 3.2490 4.0410 1368 - 2130.5000 3.68400 0.01059 3.2720 4.0570 1373 - 2131.5000 3.67400 0.01005 3.3200 4.0640 1369 - 2132.5000 3.66000 0.01022 3.2790 4.0350 1368 - 2133.5000 3.65700 0.01010 3.3120 4.0610 1376 - 2134.5000 3.67100 0.01077 3.2820 4.0760 1360 - 2135.5000 3.68900 0.00986 3.2970 4.0270 1371 - 2136.5000 3.66000 0.01034 3.2660 4.0280 1359 - 2137.5000 3.67800 0.00999 3.2710 4.0070 1357 - 2138.5000 3.68900 0.00994 3.3020 4.0370 1366 - 2139.5000 3.66900 0.01022 3.2720 4.0300 1374 - 2140.5000 3.67100 0.01039 3.2640 4.0330 1369 - 2141.5000 3.67600 0.01005 3.2890 4.0310 1362 - 2142.5000 3.67300 0.00990 3.2940 4.0240 1360 - 2143.5000 3.64200 0.01074 3.2620 4.0560 1366 - 2144.5000 3.64000 0.00984 3.2450 3.9730 1369 - 2145.5000 3.63200 0.01042 3.2500 4.0210 1370 - 2146.5000 3.61700 0.01059 3.2100 3.9940 1371 - 2147.5000 3.59800 0.01121 3.1830 4.0110 1365 - 2148.5000 3.62000 0.01025 3.2280 3.9850 1364 - 2149.5000 3.60900 0.01040 3.2170 3.9850 1364 - 2150.5000 3.60600 0.01122 3.1570 3.9870 1368 - 2151.5000 3.57200 0.01034 3.1890 3.9550 1371 - 2152.5000 3.59200 0.01017 3.1970 3.9490 1366 - 2153.5000 3.56900 0.01005 3.2160 3.9580 1363 - 2154.5000 3.55600 0.01021 3.1700 3.9240 1363 - 2155.5000 3.54600 0.00965 3.1990 3.9130 1369 - 2156.5000 3.57500 0.00985 3.1960 3.9240 1365 - 2157.5000 3.54900 0.00997 3.1990 3.9360 1367 - 2158.5000 3.55100 0.01005 3.1550 3.8970 1363 - 2159.5000 3.55800 0.01014 3.1780 3.9270 1363 - 2160.5000 3.56200 0.00925 3.2090 3.8920 1364 - 2161.5000 3.54500 0.00926 3.2050 3.8890 1365 - 2162.5000 3.56200 0.00994 3.2070 3.9390 1356 - 2163.5000 3.59100 0.00953 3.2050 3.9060 1354 - 2164.5000 3.57800 0.00928 3.2400 3.9240 1358 - 2165.5000 3.57300 0.00991 3.2040 3.9330 1352 - 2166.5000 3.56500 0.01002 3.1760 3.9150 1360 - 2167.5000 3.54900 0.00990 3.1650 3.8970 1367 - 2168.5000 3.55600 0.00932 3.1990 3.8880 1366 - 2169.5000 3.54200 0.00937 3.1810 3.8730 1363 - 2170.5000 3.53900 0.00916 3.2020 3.8790 1366 - 2171.5000 3.54100 0.00951 3.1640 3.8670 1367 - 2172.5000 3.55000 0.00952 3.2160 3.9200 1366 - 2173.5000 3.56200 0.00948 3.2080 3.9080 1362 - 2174.5000 3.53100 0.00993 3.1480 3.8820 1365 - 2175.5000 3.52600 0.00995 3.1570 3.8920 1365 - 2176.5000 3.51100 0.00923 3.1820 3.8650 1368 - 2177.5000 3.51600 0.00936 3.1640 3.8570 1369 - 2178.5000 3.49300 0.00910 3.1440 3.8170 1366 - 2179.5000 3.51600 0.00920 3.2000 3.8800 1367 - 2180.5000 3.50700 0.00976 3.1470 3.8690 1367 - 2181.5000 3.52400 0.00977 3.1710 3.8900 1354 - 2182.5000 3.51000 0.00962 3.1280 3.8360 1353 - 2183.5000 3.48400 0.00995 3.1120 3.8460 1361 - 2184.5000 3.47800 0.00980 3.1210 3.8470 1372 - 2185.5000 3.48700 0.00936 3.1460 3.8360 1358 - 2186.5000 3.46800 0.00977 3.1090 3.8310 1364 - 2187.5000 3.46300 0.00926 3.1210 3.8020 1351 - 2188.5000 3.46800 0.00932 3.0990 3.7870 1363 - 2189.5000 3.46000 0.00981 3.1000 3.8260 1369 - 2190.5000 3.46300 0.00963 3.1070 3.8190 1367 - 2191.5000 3.43300 0.00929 3.0900 3.7750 1360 - 2192.5000 3.41900 0.00927 3.0780 3.7620 1360 - 2193.5000 3.45300 0.00931 3.1200 3.8080 1364 - 2194.5000 3.41900 0.00991 3.0300 3.7610 1359 - 2195.5000 3.42500 0.00872 3.1210 3.7620 1352 - 2196.5000 3.43500 0.00921 3.0990 3.7780 1358 - 2197.5000 3.42000 0.00965 3.0510 3.7620 1358 - 2198.5000 3.42200 0.00949 3.0580 3.7560 1353 - 2199.5000 3.39600 0.00941 3.0410 3.7340 1357 - 2200.5000 3.40700 0.00964 3.0520 3.7640 1365 - 2201.5000 3.39900 0.00943 3.0620 3.7570 1357 - 2202.5000 3.40100 0.00969 3.0600 3.7740 1357 - 2203.5000 3.41300 0.00960 3.0160 3.7230 1357 - 2204.5000 3.41400 0.00989 3.0430 3.7720 1357 - 2205.5000 3.40800 0.00966 3.0510 3.7640 1362 - 2206.5000 3.40000 0.00876 3.0920 3.7390 1364 - 2207.5000 3.40400 0.00916 3.0670 3.7430 1361 - 2208.5000 3.39200 0.00914 3.0660 3.7420 1368 - 2209.5000 3.40200 0.00929 3.0600 3.7440 1355 - 2210.5000 3.42100 0.01008 3.0090 3.7500 1351 - 2211.5000 3.41500 0.00928 3.0720 3.7570 1363 - 2212.5000 3.41300 0.00975 3.0440 3.7620 1356 - 2213.5000 3.40700 0.00931 3.0540 3.7380 1350 - 2214.5000 3.42100 0.00883 3.0980 3.7510 1366 - 2215.5000 3.41400 0.00950 3.0660 3.7680 1365 - 2216.5000 3.42900 0.00923 3.0860 3.7660 1356 - 2217.5000 3.42000 0.00953 3.0450 3.7490 1364 - 2218.5000 3.42400 0.00911 3.0770 3.7500 1363 - 2219.5000 3.42000 0.00959 3.0640 3.7700 1356 - 2220.5000 3.41800 0.00926 3.0850 3.7670 1356 - 2221.5000 3.45100 0.00945 3.1000 3.7980 1363 - 2222.5000 3.39800 0.00927 3.0390 3.7230 1361 - 2223.5000 3.40200 0.00913 3.0610 3.7360 1367 - 2224.5000 3.41000 0.00895 3.0810 3.7400 1354 - 2225.5000 3.40900 0.00959 3.0500 3.7580 1362 - 2226.5000 3.37900 0.00979 3.0470 3.7710 1367 - 2227.5000 3.38200 0.00936 3.0480 3.7400 1367 - 2228.5000 3.38000 0.00954 3.0260 3.7290 1358 - 2229.5000 3.40000 0.00993 3.0320 3.7660 1367 - 2230.5000 3.35900 0.00908 3.0180 3.6890 1365 - 2231.5000 3.35800 0.00958 2.9910 3.7010 1374 - 2232.5000 3.34100 0.00957 2.9970 3.7020 1358 - 2233.5000 3.35400 0.00913 3.0470 3.7210 1363 - 2234.5000 3.34800 0.00881 3.0300 3.6800 1361 - 2235.5000 3.36100 0.00923 3.0120 3.6930 1360 - 2236.5000 3.36200 0.00937 3.0100 3.7010 1359 - 2237.5000 3.35200 0.00966 2.9870 3.7010 1365 - 2238.5000 3.34700 0.00846 3.0430 3.6650 1352 - 2239.5000 3.35300 0.00909 3.0060 3.6750 1355 - 2240.5000 3.33100 0.00886 3.0240 3.6780 1363 - 2241.5000 3.35500 0.00917 3.0040 3.6810 1362 - 2242.5000 3.33900 0.00916 2.9860 3.6600 1353 - 2243.5000 3.34400 0.00920 2.9960 3.6740 1359 - 2244.5000 3.34200 0.00914 3.0050 3.6810 1369 - 2245.5000 3.34500 0.00835 3.0310 3.6470 1360 - 2246.5000 3.34800 0.00891 3.0120 3.6700 1364 - 2247.5000 3.33600 0.00909 2.9890 3.6610 1366 - 2248.5000 3.34700 0.00828 3.0380 3.6470 1353 - 2249.5000 3.36300 0.00892 3.0160 3.6720 1353 - 2250.5000 3.35200 0.00944 3.0150 3.7120 1363 - 2251.5000 3.37400 0.00917 3.0230 3.6990 1359 - 2252.5000 3.36800 0.00908 3.0210 3.6910 1360 - 2253.5000 3.35400 0.00872 3.0290 3.6710 1356 - 2254.5000 3.36100 0.00874 3.0290 3.6710 1348 - 2255.5000 3.36000 0.00928 3.0340 3.7180 1358 - 2256.5000 3.35000 0.00939 3.0110 3.7030 1359 - 2257.5000 3.34000 0.00872 3.0210 3.6640 1358 - 2258.5000 3.39300 0.00933 3.0330 3.7220 1363 - 2259.5000 3.36900 0.00948 3.0080 3.7070 1358 - 2260.5000 3.36600 0.00877 3.0310 3.6800 1369 - 2261.5000 3.34200 0.00948 2.9890 3.6900 1367 - 2262.5000 3.36200 0.00918 3.0320 3.7060 1347 - 2263.5000 3.36500 0.00892 3.0260 3.6840 1359 - 2264.5000 3.40300 0.00851 3.0830 3.7110 1363 - 2265.5000 3.36200 0.00896 3.0380 3.6990 1361 - 2266.5000 3.34400 0.00908 3.0160 3.6830 1348 - 2267.5000 3.36700 0.00834 3.0500 3.6640 1354 - 2268.5000 3.39500 0.00895 3.0700 3.7290 1355 - 2269.5000 3.39300 0.00932 3.0300 3.7140 1347 - 2270.5000 3.39500 0.00882 3.0880 3.7380 1357 - 2271.5000 3.38800 0.00918 3.0590 3.7360 1360 - 2272.5000 3.41200 0.00907 3.0970 3.7670 1363 - 2273.5000 3.41300 0.00881 3.0840 3.7330 1357 - 2274.5000 3.41900 0.00879 3.0890 3.7360 1355 - 2275.5000 3.42300 0.00887 3.1080 3.7600 1350 - 2276.5000 3.40900 0.00938 3.0720 3.7660 1369 - 2277.5000 3.41500 0.00920 3.0720 3.7490 1355 - 2278.5000 3.40900 0.00920 3.1010 3.7780 1354 - 2279.5000 3.40300 0.00961 3.0470 3.7530 1349 - 2280.5000 3.42200 0.00929 3.0950 3.7760 1344 - 2281.5000 3.43300 0.00890 3.1090 3.7670 1367 - 2282.5000 3.43800 0.00858 3.1350 3.7670 1356 - 2283.5000 3.45100 0.00900 3.0970 3.7640 1372 - 2284.5000 3.45300 0.00930 3.0910 3.7740 1349 - 2285.5000 3.45000 0.00916 3.0960 3.7690 1349 - 2286.5000 3.43900 0.00933 3.0800 3.7670 1356 - 2287.5000 3.45900 0.00873 3.1150 3.7600 1364 - 2288.5000 3.47200 0.00930 3.1440 3.8250 1340 - 2289.5000 3.45400 0.00934 3.1100 3.7970 1352 - 2290.5000 3.46300 0.00930 3.1360 3.8190 1348 - 2291.5000 3.46700 0.00914 3.1500 3.8230 1356 - 2292.5000 3.46400 0.00904 3.1310 3.7990 1364 - 2293.5000 3.47600 0.00916 3.1360 3.8130 1367 - 2294.5000 3.46700 0.00927 3.1260 3.8040 1338 - 2295.5000 3.48900 0.00912 3.1800 3.8510 1353 - 2296.5000 3.49600 0.00857 3.1870 3.8190 1361 - 2297.5000 3.48500 0.00913 3.1530 3.8240 1349 - 2298.5000 3.49000 0.00898 3.1740 3.8340 1351 - 2299.5000 3.50600 0.00955 3.1690 3.8690 1343 - 2300.5000 3.52000 0.00978 3.1770 3.8960 1352 - 2301.5000 3.49600 0.00887 3.1770 3.8290 1351 - 2302.5000 3.49300 0.00935 3.1490 3.8400 1366 - 2303.5000 3.52100 0.00930 3.1820 3.8620 1338 - 2304.5000 3.49300 0.00906 3.1610 3.8290 1358 - 2305.5000 3.48100 0.00912 3.1660 3.8380 1357 - 2306.5000 3.50500 0.00953 3.1680 3.8650 1338 - 2307.5000 3.50600 0.00951 3.1740 3.8730 1351 - 2308.5000 3.51000 0.00911 3.2120 3.8800 1343 - 2309.5000 3.51700 0.00952 3.1910 3.8940 1362 - 2310.5000 3.52000 0.00952 3.1730 3.8760 1363 - 2311.5000 3.49900 0.00946 3.1710 3.8680 1358 - 2312.5000 3.52500 0.00902 3.2080 3.8710 1350 - 2313.5000 3.51600 0.00894 3.1840 3.8450 1368 - 2314.5000 3.52400 0.00922 3.1750 3.8530 1352 - 2315.5000 3.53700 0.00904 3.2090 3.8720 1346 - 2316.5000 3.53400 0.00933 3.2060 3.8890 1341 - 2317.5000 3.53900 0.00929 3.2170 3.9040 1366 - 2318.5000 3.53100 0.00906 3.1950 3.8640 1364 - 2319.5000 3.53900 0.00939 3.1980 3.8890 1353 - 2320.5000 3.57000 0.00879 3.2490 3.8930 1343 - 2321.5000 3.57800 0.00897 3.2590 3.9220 1365 - 2322.5000 3.57500 0.00928 3.2310 3.9120 1346 - 2323.5000 3.58300 0.00940 3.2290 3.9190 1348 - 2324.5000 3.56300 0.00949 3.2490 3.9450 1346 - 2325.5000 3.61800 0.00972 3.2840 4.0000 1357 - 2326.5000 3.60400 0.00889 3.2670 3.9250 1369 - 2327.5000 3.59900 0.00888 3.2810 3.9300 1334 - 2328.5000 3.60800 0.00917 3.2960 3.9700 1351 - 2329.5000 3.59100 0.00932 3.2350 3.9220 1357 - 2330.5000 3.55000 0.00944 3.2100 3.9010 1340 - 2331.5000 3.56100 0.00885 3.2440 3.8910 1336 - 2332.5000 3.54400 0.00894 3.2170 3.8730 1347 - 2333.5000 3.54400 0.00900 3.2290 3.8940 1365 - 2334.5000 3.53900 0.00931 3.2000 3.8830 1345 - 2335.5000 3.48400 0.00866 3.1840 3.8190 1345 - 2336.5000 3.48900 0.00879 3.1950 3.8420 1355 - 2337.5000 3.47100 0.00911 3.1520 3.8190 1341 - 2338.5000 3.52400 0.00961 3.1590 3.8630 1341 - 2339.5000 3.48900 0.00837 3.2020 3.8200 1362 - 2340.5000 3.47600 0.00896 3.1750 3.8340 1352 - 2341.5000 3.45900 0.00882 3.1660 3.8140 1348 - 2342.5000 3.46200 0.00858 3.1520 3.7810 1343 - 2343.5000 3.45800 0.00857 3.1470 3.7790 1361 - 2344.5000 3.44700 0.00908 3.1400 3.8050 1340 - 2345.5000 3.42800 0.00847 3.1110 3.7310 1338 - 2346.5000 3.45100 0.00844 3.1620 3.7830 1355 - 2347.5000 3.44900 0.00840 3.1530 3.7710 1352 - 2348.5000 3.42200 0.00855 3.1250 3.7530 1349 - 2349.5000 3.44300 0.00886 3.1170 3.7690 1354 - 2350.5000 3.41400 0.00848 3.1060 3.7300 1355 - 2351.5000 3.39300 0.00896 3.0690 3.7250 1339 - 2352.5000 3.42600 0.00871 3.1160 3.7530 1337 - 2353.5000 3.39400 0.00846 3.0910 3.7150 1360 - 2354.5000 3.40700 0.00844 3.0920 3.7140 1358 - 2355.5000 3.39600 0.00844 3.1120 3.7290 1335 - 2356.5000 3.41400 0.00884 3.0890 3.7390 1351 - 2357.5000 3.42800 0.00908 3.0800 3.7430 1333 - 2358.5000 3.41300 0.00876 3.0840 3.7230 1331 - 2359.5000 3.40000 0.00873 3.0970 3.7380 1348 - 2360.5000 3.39100 0.00881 3.0770 3.7280 1365 - 2361.5000 3.39500 0.00874 3.0720 3.7080 1325 - 2362.5000 3.39300 0.00938 3.0410 3.7310 1352 - 2363.5000 3.37900 0.00883 3.0610 3.7050 1331 - 2364.5000 3.39300 0.00899 3.0700 3.7300 1346 - 2365.5000 3.38000 0.00852 3.0460 3.6700 1342 - 2366.5000 3.38000 0.00828 3.0610 3.6720 1361 - 2367.5000 3.37100 0.00879 3.0460 3.6880 1333 - 2368.5000 3.39300 0.00908 3.0530 3.7180 1340 - 2369.5000 3.36200 0.00910 3.0280 3.6940 1338 - 2370.5000 3.34200 0.00922 3.0210 3.6960 1339 - 2371.5000 3.36000 0.00922 3.0370 3.7130 1344 - 2372.5000 3.33900 0.00966 3.0130 3.7250 1359 - 2373.5000 3.35700 0.00886 3.0390 3.6870 1338 - 2374.5000 3.35400 0.00859 3.0180 3.6470 1339 - 2375.5000 3.36900 0.00911 3.0430 3.7070 1327 - 2376.5000 3.33500 0.00869 3.0250 3.6610 1339 - 2377.5000 3.34700 0.00828 3.0770 3.6840 1344 - 2378.5000 3.35700 0.00895 3.0610 3.7220 1365 - 2379.5000 3.35200 0.00909 3.0260 3.6870 1321 - 2380.5000 3.33600 0.00896 3.0230 3.6810 1348 - 2381.5000 3.33700 0.00977 3.0040 3.7170 1332 - 2382.5000 3.35100 0.00902 3.0360 3.6930 1325 - 2383.5000 3.36900 0.00856 3.0600 3.6890 1351 - 2384.5000 3.34100 0.00866 3.0360 3.6720 1349 - 2385.5000 3.36300 0.00921 3.0230 3.6970 1339 - 2386.5000 3.33900 0.00874 3.0300 3.6690 1336 - 2387.5000 3.34900 0.00864 3.0260 3.6580 1337 - 2388.5000 3.33850 0.00856 3.0290 3.6570 1345 - 2389.5000 3.32800 0.00849 3.0320 3.6560 1352 - 2390.5000 3.33900 0.00855 3.0410 3.6650 1333 - 2391.5000 3.36700 0.00870 3.0220 3.6600 1344 - 2392.5000 3.34800 0.00902 3.0300 3.6890 1333 - 2393.5000 3.34100 0.00946 3.0080 3.6980 1330 - 2394.5000 3.36600 0.00856 3.0370 3.6650 1347 - 2395.5000 3.35900 0.00832 3.0580 3.6690 1347 - 2396.5000 3.33300 0.00888 3.0120 3.6600 1330 - 2397.5000 3.33200 0.00840 3.0410 3.6570 1343 - 2398.5000 3.36200 0.00925 3.0360 3.7090 1322 - 2399.5000 3.33300 0.00895 2.9960 3.6530 1346 - 2400.5000 3.35800 0.00854 3.0380 3.6660 1352 - 2401.5000 3.35900 0.00887 3.0200 3.6650 1323 - 2402.5000 3.35700 0.00843 3.0440 3.6620 1345 - 2403.5000 3.34200 0.00896 2.9840 3.6380 1331 - 2404.5000 3.36900 0.00861 3.0360 3.6650 1334 - 2405.5000 3.36800 0.00856 3.0600 3.6910 1360 - 2406.5000 3.36800 0.00901 3.0540 3.7090 1320 - 2407.5000 3.37300 0.00858 3.0610 3.6900 1345 - 2408.5000 3.35400 0.00869 3.0520 3.6850 1326 - 2409.5000 3.38300 0.00921 3.0560 3.7290 1336 - 2410.5000 3.40800 0.00845 3.1110 3.7340 1359 - 2411.5000 3.37700 0.00920 3.0510 3.7220 1329 - 2412.5000 3.39800 0.00854 3.0720 3.7000 1353 - 2413.5000 3.40000 0.00895 3.0960 3.7470 1323 - 2414.5000 3.42600 0.00878 3.1100 3.7520 1338 - 2415.5000 3.42800 0.00898 3.1170 3.7830 1374 - 2416.5000 3.43300 0.00897 3.1240 3.7770 1326 - 2417.5000 3.44300 0.00947 3.1020 3.7980 1351 - 2418.5000 3.43100 0.00926 3.1020 3.7780 1331 - 2419.5000 3.47500 0.00920 3.1670 3.8420 1345 - 2420.5000 3.49300 0.00892 3.1850 3.8430 1359 - 2421.5000 3.47500 0.00924 3.1430 3.8170 1329 - 2422.5000 3.49300 0.00903 3.1760 3.8390 1349 - 2423.5000 3.47300 0.00908 3.1360 3.7980 1328 - 2424.5000 3.48600 0.00911 3.1610 3.8300 1348 - 2425.5000 3.45800 0.00878 3.1350 3.7820 1358 - 2426.5000 3.44900 0.00883 3.1200 3.7650 1334 - 2427.5000 3.40200 0.00928 3.0790 3.7580 1338 - 2428.5000 3.41900 0.00909 3.0920 3.7540 1325 - 2429.5000 3.41600 0.00876 3.0960 3.7410 1355 - 2430.5000 3.39700 0.00870 3.0890 3.7280 1349 - 2431.5000 3.41100 0.00885 3.0690 3.7180 1343 - 2432.5000 3.43000 0.00801 3.1500 3.7350 1332 - 2433.5000 3.40600 0.00884 3.0940 3.7390 1330 - 2434.5000 3.41200 0.00877 3.0980 3.7450 1360 - 2435.5000 3.39300 0.00931 3.0680 3.7460 1326 - 2436.5000 3.42100 0.00848 3.1070 3.7320 1357 - 2437.5000 3.39700 0.00884 3.0730 3.7170 1326 - 2438.5000 3.39800 0.00862 3.0860 3.7160 1334 - 2439.5000 3.39700 0.00857 3.0920 3.7220 1350 - 2440.5000 3.38100 0.00818 3.0750 3.6730 1337 - 2441.5000 3.39800 0.00859 3.0840 3.7110 1333 - 2442.5000 3.36100 0.00846 3.0630 3.6800 1330 - 2443.5000 3.35700 0.00850 3.0570 3.6840 1361 - 2444.5000 3.34500 0.00853 3.0450 3.6650 1322 - 2445.5000 3.37100 0.00840 3.0600 3.6760 1345 - 2446.5000 3.32400 0.00862 3.0070 3.6360 1330 - 2447.5000 3.34300 0.00832 3.0520 3.6600 1334 - 2448.5000 3.34800 0.00869 3.0400 3.6770 1344 - 2449.5000 3.36100 0.00862 3.0530 3.6830 1336 - 2450.5000 3.33400 0.00876 3.0140 3.6550 1339 - 2451.5000 3.32300 0.00856 3.0060 3.6290 1324 - 2452.5000 3.30300 0.00917 2.9840 3.6610 1363 - 2453.5000 3.31200 0.00848 3.0010 3.6200 1331 - 2454.5000 3.31000 0.00845 3.0160 3.6350 1340 - 2455.5000 3.31700 0.00856 3.0190 3.6410 1320 - 2456.5000 3.28300 0.00845 2.9760 3.5950 1341 - 2457.5000 3.27600 0.00826 2.9970 3.6020 1341 - 2458.5000 3.33000 0.00848 3.0000 3.6210 1340 - 2459.5000 3.30800 0.00898 3.0020 3.6560 1327 - 2460.5000 3.33200 0.00880 2.9870 3.6300 1336 - 2461.5000 3.32200 0.00922 2.9970 3.6720 1341 - 2462.5000 3.34300 0.00884 3.0320 3.6750 1323 - 2463.5000 3.33000 0.00874 3.0070 3.6430 1325 - 2464.5000 3.38300 0.00925 3.0470 3.7190 1320 - 2465.5000 3.34500 0.00913 3.0190 3.6910 1355 - 2466.5000 3.33100 0.00896 3.0010 3.6510 1316 - 2467.5000 3.33900 0.00869 3.0090 3.6420 1326 - 2468.5000 3.37000 0.00923 3.0260 3.6950 1314 - 2469.5000 3.35100 0.00869 3.0190 3.6590 1355 - 2470.5000 3.33800 0.00878 3.0440 3.6810 1315 - 2471.5000 3.32300 0.00938 2.9850 3.6700 1332 - 2472.5000 3.30200 0.00893 2.9960 3.6440 1316 - 2473.5000 3.33100 0.00888 3.0240 3.6770 1351 - 2474.5000 3.31900 0.00908 3.0130 3.6740 1324 - 2475.5000 3.33700 0.00966 2.9710 3.6780 1340 - 2476.5000 3.31100 0.00890 2.9820 3.6260 1310 - 2477.5000 3.32700 0.00901 3.0150 3.6780 1354 - 2478.5000 3.32200 0.00935 2.9830 3.6630 1321 - 2479.5000 3.30600 0.00875 2.9870 3.6270 1338 - 2480.5000 3.30800 0.00909 2.9810 3.6400 1314 - 2481.5000 3.32300 0.00959 2.9820 3.6870 1350 - 2482.5000 3.29600 0.00890 2.9740 3.6210 1322 - 2483.5000 3.31800 0.00875 2.9860 3.6270 1343 - 2484.5000 3.31700 0.00889 3.0040 3.6490 1315 - 2485.5000 3.31900 0.00944 2.9910 3.6860 1355 - 2486.5000 3.31000 0.00934 2.9750 3.6540 1322 - 2487.5000 3.31000 0.00897 2.9880 3.6440 1338 - 2488.5000 3.31300 0.00896 2.9690 3.6200 1321 - 2489.5000 3.29900 0.00928 2.9790 3.6620 1355 - 2490.5000 3.30300 0.00907 2.9830 3.6420 1321 - 2491.5000 3.29300 0.00921 2.9600 3.6320 1332 - 2492.5000 3.31200 0.00858 2.9940 3.6170 1317 - 2493.5000 3.30400 0.00880 2.9820 3.6300 1357 - 2494.5000 3.29400 0.00915 2.9840 3.6500 1325 - 2495.5000 3.28800 0.00870 2.9930 3.6270 1329 - 2496.5000 3.27900 0.00898 2.9600 3.6130 1322 - 2497.5000 3.30100 0.00869 2.9770 3.6160 1353 - 2498.5000 3.28800 0.00908 2.9520 3.6110 1316 - 2499.5000 3.26100 0.00873 2.9580 3.5940 1326 - 2500.5000 3.28600 0.00884 2.9690 3.6130 1328 - 2501.5000 3.26500 0.00874 2.9600 3.6010 1346 - 2502.5000 3.26600 0.00894 2.9410 3.5950 1337 - 2503.5000 3.26600 0.00877 2.9430 3.5830 1330 - 2504.5000 3.27100 0.00885 2.9570 3.6040 1335 - 2505.5000 3.26600 0.00908 2.9440 3.6100 1346 - 2506.5000 3.27500 0.00942 2.9330 3.6240 1345 - 2507.5000 3.24300 0.00876 2.9110 3.5450 1310 - 2508.5000 3.27100 0.00808 2.9920 3.5880 1360 - 2509.5000 3.25300 0.00900 2.9440 3.5990 1323 - 2510.5000 3.24600 0.00922 2.9470 3.6200 1331 - 2511.5000 3.26100 0.00868 2.9690 3.6010 1326 - 2512.5000 3.26200 0.00888 2.9340 3.5890 1360 - 2513.5000 3.23400 0.00901 2.9260 3.5810 1322 - 2514.5000 3.22900 0.00893 2.8940 3.5460 1332 - 2515.5000 3.20900 0.00923 2.8840 3.5590 1337 - 2516.5000 3.23200 0.00913 2.9150 3.5850 1347 - 2517.5000 3.23400 0.00845 2.9090 3.5290 1347 - 2518.5000 3.20900 0.00868 2.9050 3.5330 1308 - 2519.5000 3.22000 0.00852 2.9160 3.5450 1362 - 2520.5000 3.21500 0.00915 2.9010 3.5680 1328 - 2521.5000 3.23100 0.00934 2.9000 3.5830 1337 - 2522.5000 3.22300 0.00891 2.8860 3.5360 1330 - 2523.5000 3.20100 0.00828 2.9110 3.5180 1344 - 2524.5000 3.22800 0.00888 2.8990 3.5500 1343 - 2525.5000 3.22200 0.00887 2.9070 3.5510 1318 - 2526.5000 3.19700 0.00892 2.8730 3.5270 1343 - 2527.5000 3.21100 0.00841 2.9110 3.5250 1331 - 2528.5000 3.17900 0.00890 2.8520 3.5030 1339 - 2529.5000 3.20400 0.00856 2.8800 3.5010 1316 - 2530.5000 3.22400 0.00857 2.8920 3.5240 1359 - 2531.5000 3.21300 0.00839 2.9040 3.5160 1329 - 2532.5000 3.20300 0.00894 2.8750 3.5250 1321 - 2533.5000 3.21100 0.00899 2.8880 3.5440 1331 - 2534.5000 3.17400 0.00871 2.8720 3.5070 1328 - 2535.5000 3.21500 0.00851 2.9010 3.5230 1337 - 2536.5000 3.19500 0.00867 2.8830 3.5130 1320 - 2537.5000 3.19400 0.00847 2.8910 3.5150 1356 - 2538.5000 3.19600 0.00879 2.8760 3.5170 1328 - 2539.5000 3.18000 0.00867 2.8620 3.4920 1320 - 2540.5000 3.18900 0.00930 2.8700 3.5510 1341 - 2541.5000 3.17400 0.00862 2.8500 3.4780 1328 - 2542.5000 3.18500 0.00900 2.8470 3.5030 1328 - 2543.5000 3.18400 0.00880 2.8580 3.5000 1332 - 2544.5000 3.19400 0.00854 2.8900 3.5150 1340 - 2545.5000 3.17400 0.00849 2.8600 3.4780 1325 - 2546.5000 3.18000 0.00899 2.8560 3.5070 1312 - 2547.5000 3.16200 0.00893 2.8200 3.4760 1348 - 2548.5000 3.16500 0.00866 2.8440 3.4750 1327 - 2549.5000 3.15000 0.00912 2.8290 3.4900 1314 - 2550.5000 3.14400 0.00840 2.8400 3.4500 1318 - 2551.5000 3.13500 0.00844 2.8480 3.4640 1331 - 2552.5000 3.13800 0.00860 2.8380 3.4650 1330 - 2553.5000 3.12800 0.00904 2.8080 3.4620 1309 - 2554.5000 3.13300 0.00827 2.8220 3.4280 1342 - 2555.5000 3.09800 0.00865 2.7920 3.4200 1317 - 2556.5000 3.10800 0.00873 2.8000 3.4310 1305 - 2557.5000 3.10800 0.00855 2.8020 3.4280 1339 - 2558.5000 3.09700 0.00871 2.8090 3.4400 1313 - 2559.5000 3.11400 0.00918 2.7720 3.4370 1312 - 2560.5000 3.09800 0.00832 2.7920 3.3960 1319 - 2561.5000 3.12600 0.00875 2.8030 3.4400 1326 - 2562.5000 3.11100 0.00900 2.7920 3.4480 1328 - 2563.5000 3.10900 0.00845 2.8130 3.4260 1315 - 2564.5000 3.10000 0.00853 2.8000 3.4230 1335 - 2565.5000 3.09100 0.00894 2.7620 3.4130 1325 - 2566.5000 3.08300 0.00862 2.7730 3.3940 1299 - 2567.5000 3.08400 0.00812 2.7730 3.3710 1356 - 2568.5000 3.10600 0.00815 2.7960 3.3850 1307 - 2569.5000 3.08500 0.00868 2.7680 3.3960 1308 - 2570.5000 3.07500 0.00875 2.7450 3.3840 1333 - 2571.5000 3.08000 0.00847 2.7680 3.3840 1321 - 2572.5000 3.06100 0.00847 2.7310 3.3450 1314 - 2573.5000 3.06700 0.00877 2.7670 3.4050 1323 - 2574.5000 3.05400 0.00878 2.7210 3.3580 1316 - 2575.5000 3.03500 0.00918 2.7170 3.3860 1327 - 2576.5000 3.06900 0.00880 2.7470 3.3860 1317 - 2577.5000 3.04100 0.00850 2.7340 3.3530 1327 - 2578.5000 3.04500 0.00857 2.7110 3.3350 1326 - 2579.5000 3.03000 0.00909 2.6930 3.3510 1311 - 2580.5000 3.05400 0.00881 2.7410 3.3860 1339 - 2581.5000 3.04800 0.00848 2.7240 3.3420 1328 - 2582.5000 3.03100 0.00891 2.6990 3.3410 1297 - 2583.5000 3.02500 0.00864 2.7110 3.3460 1351 - 2584.5000 3.03600 0.00902 2.7110 3.3650 1313 - 2585.5000 3.01800 0.00862 2.7100 3.3330 1305 - 2586.5000 3.03300 0.00917 2.7070 3.3790 1343 - 2587.5000 3.01200 0.00880 2.7040 3.3410 1310 - 2588.5000 3.00600 0.00920 2.6760 3.3420 1311 - 2589.5000 3.02600 0.00874 2.6900 3.3260 1325 - 2590.5000 3.01300 0.00859 2.6860 3.3070 1307 - 2591.5000 2.99700 0.00886 2.6850 3.3280 1317 - 2592.5000 3.01100 0.00928 2.6850 3.3590 1320 - 2593.5000 3.01000 0.00841 2.7260 3.3350 1311 - 2594.5000 2.99200 0.00899 2.6810 3.3310 1306 - 2595.5000 3.00500 0.00879 2.6880 3.3260 1317 - 2596.5000 3.00500 0.00879 2.6990 3.3340 1306 - 2597.5000 3.00100 0.00860 2.6870 3.3100 1312 - 2598.5000 3.00100 0.00852 2.6910 3.3100 1321 - 2599.5000 3.00600 0.00826 2.6930 3.2910 1310 - 2600.5000 2.99700 0.00852 2.6850 3.3020 1310 - 2601.5000 2.98900 0.00815 2.7080 3.2960 1301 - 2602.5000 3.00900 0.00804 2.7290 3.3120 1313 - 2603.5000 2.96700 0.00871 2.6630 3.2930 1308 - 2604.5000 3.00700 0.00885 2.7120 3.3510 1302 - 2605.5000 2.98600 0.00863 2.6810 3.3070 1316 - 2606.5000 2.99300 0.00890 2.6740 3.3170 1305 - 2607.5000 2.99000 0.00944 2.6430 3.3250 1304 - 2608.5000 2.99200 0.00827 2.6940 3.2920 1308 - 2609.5000 2.98700 0.00862 2.6780 3.3030 1313 - 2610.5000 2.99000 0.00843 2.6730 3.2820 1306 - 2611.5000 2.99800 0.00906 2.6710 3.3270 1310 - 2612.5000 2.99500 0.00889 2.6910 3.3320 1300 - 2613.5000 3.00300 0.00867 2.6850 3.3130 1312 - 2614.5000 2.99000 0.00855 2.6910 3.3090 1307 - 2615.5000 2.99000 0.00869 2.6640 3.2900 1297 - 2616.5000 2.99600 0.00880 2.7010 3.3390 1315 - 2617.5000 2.98500 0.00829 2.7010 3.3010 1311 - 2618.5000 2.96000 0.00917 2.6510 3.3090 1288 - 2619.5000 2.98700 0.00860 2.6890 3.3120 1313 - 2620.5000 2.99600 0.00867 2.6980 3.3230 1299 - 2621.5000 2.99100 0.00856 2.6710 3.2860 1291 - 2622.5000 2.96200 0.00835 2.6850 3.2910 1317 - 2623.5000 2.97700 0.00812 2.7040 3.2900 1302 - 2624.5000 2.97500 0.00791 2.6910 3.2570 1280 - 2625.5000 2.97300 0.00833 2.6900 3.2970 1329 - 2626.5000 2.96800 0.00856 2.6450 3.2600 1290 - 2627.5000 2.96000 0.00840 2.6690 3.2690 1276 - 2628.5000 2.96600 0.00887 2.6330 3.2760 1314 - 2629.5000 2.97500 0.00831 2.6780 3.2780 1304 - 2630.5000 2.96200 0.00863 2.6570 3.2730 1274 - 2631.5000 2.95100 0.00817 2.6770 3.2680 1307 - 2632.5000 2.93700 0.00838 2.6590 3.2650 1306 - 2633.5000 2.93400 0.00789 2.6400 3.2060 1287 - 2634.5000 2.89700 0.00766 2.6340 3.1860 1297 - 2635.5000 2.89000 0.00836 2.6100 3.2130 1302 - 2636.5000 2.89700 0.00859 2.6070 3.2240 1291 - 2637.5000 2.89400 0.00847 2.5880 3.1980 1296 - 2638.5000 2.86000 0.00862 2.5380 3.1580 1292 - 2639.5000 2.88400 0.00861 2.5690 3.1900 1301 - 2640.5000 2.88700 0.00814 2.5980 3.1820 1287 - 2641.5000 2.83900 0.00836 2.5390 3.1400 1291 - 2642.5000 2.84000 0.00837 2.5490 3.1540 1305 - 2643.5000 2.83600 0.00777 2.5560 3.1130 1285 - 2644.5000 2.82100 0.00835 2.5260 3.1210 1270 - 2645.5000 2.82000 0.00855 2.5050 3.1230 1305 - 2646.5000 2.82500 0.00861 2.5120 3.1330 1300 - 2647.5000 2.82200 0.00844 2.5180 3.1210 1276 - 2648.5000 2.81400 0.00808 2.5230 3.1030 1287 - 2649.5000 2.82400 0.00912 2.4910 3.1470 1293 - 2650.5000 2.81000 0.00767 2.5410 3.0920 1289 - 2651.5000 2.79000 0.00885 2.4950 3.1310 1291 - 2652.5000 2.77500 0.00920 2.4600 3.1190 1284 - 2653.5000 2.78200 0.00849 2.5160 3.1270 1296 - 2654.5000 2.77600 0.00845 2.4610 3.0670 1285 - 2655.5000 2.80000 0.00885 2.4570 3.0900 1279 - 2656.5000 2.80000 0.00799 2.5070 3.0860 1312 - 2657.5000 2.76600 0.00805 2.4850 3.0630 1290 - 2658.5000 2.79800 0.00772 2.5340 3.0840 1269 - 2659.5000 2.80200 0.00868 2.5050 3.1280 1287 - 2660.5000 2.77600 0.00753 2.5270 3.0690 1294 - 2661.5000 2.77300 0.00808 2.4910 3.0690 1278 - 2662.5000 2.79300 0.00873 2.4940 3.1220 1294 - 2663.5000 2.78900 0.00874 2.4620 3.0870 1279 - 2664.5000 2.79100 0.00837 2.4790 3.0810 1293 - 2665.5000 2.80000 0.00808 2.5160 3.0930 1275 - 2666.5000 2.77900 0.00851 2.4800 3.0850 1264 - 2667.5000 2.80000 0.00812 2.5230 3.1080 1298 - 2668.5000 2.82100 0.00876 2.4980 3.1260 1285 - 2669.5000 2.82700 0.00811 2.5540 3.1310 1266 - 2670.5000 2.80700 0.00812 2.5050 3.0850 1277 - 2671.5000 2.82200 0.00854 2.5160 3.1270 1281 - 2672.5000 2.82300 0.00758 2.5480 3.0920 1286 - 2673.5000 2.80900 0.00797 2.5230 3.0930 1279 - 2674.5000 2.80800 0.00809 2.5140 3.0890 1262 - 2675.5000 2.79200 0.00861 2.4790 3.0980 1293 - 2676.5000 2.81500 0.00830 2.5130 3.1080 1286 - 2677.5000 2.80100 0.00815 2.5230 3.1040 1272 - 2678.5000 2.80400 0.00787 2.5310 3.0960 1287 - 2679.5000 2.80200 0.00836 2.4800 3.0770 1276 - 2680.5000 2.78400 0.00851 2.4990 3.1110 1293 - 2681.5000 2.79000 0.00833 2.4950 3.0870 1264 - 2682.5000 2.78200 0.00935 2.4350 3.0990 1262 - 2683.5000 2.78100 0.00840 2.4950 3.0950 1275 - 2684.5000 2.78400 0.00830 2.4730 3.0680 1285 - 2685.5000 2.80500 0.00831 2.5160 3.1080 1268 - 2686.5000 2.78800 0.00842 2.4910 3.0910 1269 - 2687.5000 2.77200 0.00833 2.4720 3.0630 1259 - 2688.5000 2.79100 0.00824 2.4900 3.0820 1290 - 2689.5000 2.80400 0.00835 2.5000 3.0950 1269 - 2690.5000 2.78200 0.00876 2.4860 3.1090 1264 - 2691.5000 2.79000 0.00875 2.4730 3.0970 1270 - 2692.5000 2.78900 0.00863 2.4870 3.1020 1269 - 2693.5000 2.81000 0.00830 2.5050 3.0980 1277 - 2694.5000 2.80800 0.00853 2.4850 3.0910 1262 - 2695.5000 2.80400 0.00861 2.4910 3.1020 1259 - 2696.5000 2.81200 0.00814 2.5360 3.1170 1274 - 2697.5000 2.80100 0.00830 2.5070 3.0980 1268 - 2698.5000 2.80500 0.00838 2.5050 3.1010 1264 - 2699.5000 2.80200 0.00917 2.4690 3.1210 1264 - 2700.5000 2.80200 0.00877 2.4880 3.1060 1242 - 2701.5000 2.82300 0.00899 2.4930 3.1370 1282 - 2702.5000 2.82300 0.00890 2.4790 3.1100 1257 - 2703.5000 2.82200 0.00861 2.5030 3.1160 1266 - 2704.5000 2.84300 0.00809 2.5600 3.1360 1266 - 2705.5000 2.82400 0.00880 2.5070 3.1300 1253 - 2706.5000 2.85800 0.00878 2.5450 3.1710 1272 - 2707.5000 2.80800 0.00851 2.5030 3.1080 1265 - 2708.5000 2.83900 0.00886 2.5350 3.1640 1260 - 2709.5000 2.85900 0.00891 2.5220 3.1570 1271 - 2710.5000 2.86400 0.00897 2.5310 3.1650 1250 - 2711.5000 2.86800 0.00858 2.5490 3.1620 1275 - 2712.5000 2.88900 0.00883 2.5410 3.1700 1270 - 2713.5000 2.85600 0.00889 2.5330 3.1620 1251 - 2714.5000 2.89000 0.00857 2.5700 3.1830 1279 - 2715.5000 2.86700 0.00917 2.5540 3.2020 1248 - 2716.5000 2.89900 0.00872 2.5880 3.2090 1268 - 2717.5000 2.86200 0.00910 2.5650 3.2120 1265 - 2718.5000 2.89200 0.00870 2.5970 3.2130 1254 - 2719.5000 2.90700 0.00875 2.6050 3.2290 1270 - 2720.5000 2.88900 0.00915 2.5710 3.2190 1254 - 2721.5000 2.91900 0.00887 2.6080 3.2390 1266 - 2722.5000 2.90700 0.00928 2.5740 3.2310 1254 - 2723.5000 2.89400 0.00928 2.5770 3.2350 1258 - 2724.5000 2.92400 0.00872 2.6110 3.2320 1269 - 2725.5000 2.90100 0.00922 2.5820 3.2340 1251 - 2726.5000 2.93700 0.00901 2.6000 3.2430 1272 - 2727.5000 2.91600 0.00906 2.5960 3.2400 1263 - 2728.5000 2.92900 0.00909 2.6140 3.2600 1262 - 2729.5000 2.95200 0.00842 2.6670 3.2660 1265 - 2730.5000 2.91700 0.00882 2.6060 3.2280 1243 - 2731.5000 2.93800 0.00887 2.6280 3.2590 1264 - 2732.5000 2.96400 0.00948 2.6240 3.2970 1261 - 2733.5000 2.94700 0.00944 2.6200 3.2910 1264 - 2734.5000 2.96700 0.00936 2.6360 3.3020 1265 - 2735.5000 2.95000 0.00932 2.6160 3.2740 1247 - 2736.5000 2.96300 0.00931 2.6460 3.3060 1257 - 2737.5000 2.95700 0.00975 2.6190 3.3100 1256 - 2738.5000 2.98900 0.00960 2.6340 3.3180 1268 - 2739.5000 2.98000 0.00938 2.6670 3.3310 1253 - 2740.5000 3.00400 0.00950 2.6710 3.3410 1243 - 2741.5000 2.97100 0.00900 2.6510 3.2890 1257 - 2742.5000 2.99100 0.01003 2.6470 3.3540 1242 - 2743.5000 2.97900 0.00976 2.6550 3.3490 1264 - 2744.5000 3.01200 0.00968 2.6590 3.3470 1262 - 2745.5000 3.02200 0.00947 2.6820 3.3520 1251 - 2746.5000 3.02200 0.00934 2.6910 3.3530 1255 - 2747.5000 3.01800 0.00984 2.6870 3.3830 1250 - 2748.5000 3.02000 0.01008 2.6770 3.3910 1255 - 2749.5000 3.05900 0.00992 2.7150 3.4150 1246 - 2750.5000 3.05600 0.01007 2.6990 3.4130 1257 - 2751.5000 3.05900 0.00986 2.7000 3.3980 1252 - 2752.5000 3.05400 0.00990 2.7130 3.4120 1246 - 2753.5000 3.03300 0.00984 2.6940 3.3910 1255 - 2754.5000 3.02900 0.01054 2.6800 3.4220 1238 - 2755.5000 3.09400 0.01028 2.7430 3.4720 1256 - 2756.5000 3.05700 0.01019 2.7290 3.4510 1254 - 2757.5000 3.05800 0.00980 2.7270 3.4250 1268 - 2758.5000 3.04400 0.00999 2.7060 3.4100 1242 - 2759.5000 3.05700 0.01017 2.7100 3.4280 1247 - 2760.5000 3.05900 0.00923 2.7590 3.4130 1255 - 2761.5000 3.03400 0.01049 2.7110 3.4510 1244 - 2762.5000 3.08100 0.01000 2.7380 3.4490 1264 - 2763.5000 3.05700 0.01002 2.7260 3.4370 1259 - 2764.5000 3.06900 0.01009 2.7300 3.4480 1267 - 2765.5000 3.10100 0.00983 2.7510 3.4450 1247 - 2766.5000 3.08500 0.01014 2.7400 3.4550 1243 - 2767.5000 3.09700 0.01076 2.7240 3.4830 1244 - 2768.5000 3.10900 0.01138 2.7080 3.5110 1244 - 2769.5000 3.14700 0.01102 2.7540 3.5360 1258 - 2770.5000 3.16100 0.01076 2.7940 3.5550 1250 - 2771.5000 3.16600 0.01018 2.8080 3.5320 1264 - 2772.5000 3.18100 0.01089 2.8420 3.6090 1240 - 2773.5000 3.21300 0.01134 2.8370 3.6370 1244 - 2774.5000 3.24600 0.01118 2.8670 3.6590 1255 - 2775.5000 3.23600 0.01152 2.8620 3.6730 1240 - 2776.5000 3.27900 0.01043 2.9410 3.6790 1251 - 2777.5000 3.29900 0.01172 2.9030 3.7290 1242 - 2778.5000 3.32300 0.01184 2.9380 3.7770 1255 - 2779.5000 3.35600 0.01267 2.9500 3.8480 1256 - 2780.5000 3.39800 0.01173 3.0100 3.8410 1255 - 2781.5000 3.44000 0.01191 3.0380 3.8820 1256 - 2782.5000 3.46800 0.01231 3.0540 3.9210 1240 - 2783.5000 3.50900 0.01277 3.0890 3.9920 1251 - 2784.5000 3.56100 0.01300 3.1400 4.0550 1239 - 2785.5000 3.60100 0.01260 3.1920 4.0860 1259 - 2786.5000 3.65700 0.01348 3.2180 4.1730 1254 - 2787.5000 3.70200 0.01289 3.2710 4.1870 1263 - 2788.5000 3.75700 0.01396 3.3140 4.2990 1245 - 2789.5000 3.83500 0.01453 3.3610 4.3890 1252 - 2790.5000 3.88200 0.01403 3.3890 4.3790 1244 - 2791.5000 3.93300 0.01502 3.4240 4.4850 1247 - 2792.5000 4.00300 0.01384 3.5410 4.5210 1254 - 2793.5000 4.02800 0.01484 3.5190 4.5630 1237 - 2794.5000 4.08100 0.01543 3.5520 4.6450 1254 - 2795.5000 4.12900 0.01509 3.5920 4.6580 1247 - 2796.5000 4.19500 0.01474 3.7010 4.7480 1261 - 2797.5000 4.25700 0.01524 3.7660 4.8370 1235 - 2798.5000 4.31900 0.01629 3.7470 4.9000 1253 - 2799.5000 4.28900 0.01637 3.7330 4.8890 1247 - 2800.5000 4.18900 0.01572 3.6760 4.7850 1245 - 2801.5000 4.18200 0.01459 3.6870 4.7160 1244 - 2802.5000 4.10400 0.01479 3.6200 4.6590 1234 - 2803.5000 4.06200 0.01500 3.5790 4.6420 1256 - 2804.5000 4.04400 0.01463 3.5590 4.5900 1241 - 2805.5000 3.97200 0.01474 3.4890 4.5290 1245 - 2806.5000 3.91600 0.01444 3.4450 4.4640 1245 - 2807.5000 3.88100 0.01441 3.3830 4.4030 1253 - 2808.5000 3.84700 0.01373 3.3540 4.3190 1235 - 2809.5000 3.75500 0.01365 3.2820 4.2440 1242 - 2810.5000 3.72300 0.01313 3.2630 4.1890 1244 - 2811.5000 3.62200 0.01300 3.1860 4.1010 1239 - 2812.5000 3.59400 0.01369 3.1600 4.1270 1247 - 2813.5000 3.52100 0.01270 3.0900 3.9770 1220 - 2814.5000 3.49600 0.01305 3.0830 4.0050 1248 - 2815.5000 3.42500 0.01253 2.9870 3.8670 1234 - 2816.5000 3.40900 0.01264 2.9780 3.8710 1247 - 2817.5000 3.35600 0.01277 2.9470 3.8470 1242 - 2818.5000 3.30800 0.01302 2.8790 3.7990 1248 - 2819.5000 3.28000 0.01241 2.8640 3.7340 1229 - 2820.5000 3.24100 0.01201 2.8240 3.6710 1244 - 2821.5000 3.20500 0.01215 2.7990 3.6560 1243 - 2822.5000 3.19300 0.01217 2.8280 3.6810 1229 - 2823.5000 3.19300 0.01179 2.7990 3.6290 1240 - 2824.5000 3.13700 0.01219 2.7310 3.5890 1238 - 2825.5000 3.15800 0.01120 2.7990 3.5860 1235 - 2826.5000 3.11500 0.01131 2.7600 3.5530 1229 - 2827.5000 3.14100 0.01083 2.7790 3.5430 1245 - 2828.5000 3.09600 0.01217 2.6910 3.5470 1236 - 2829.5000 3.08600 0.01076 2.7100 3.4660 1235 - 2830.5000 3.08100 0.01113 2.7240 3.5070 1238 - 2831.5000 3.03600 0.01043 2.7040 3.4420 1252 - 2832.5000 3.05600 0.01136 2.6820 3.4760 1221 - 2833.5000 3.05600 0.01078 2.6990 3.4580 1239 - 2834.5000 3.05900 0.01069 2.6840 3.4340 1231 - 2835.5000 3.01200 0.01048 2.6870 3.4230 1232 - 2836.5000 3.00600 0.00993 2.6990 3.3980 1238 - 2837.5000 2.99000 0.00984 2.6470 3.3370 1230 - 2838.5000 2.98900 0.01030 2.6280 3.3530 1238 - 2839.5000 2.95800 0.01034 2.6090 3.3350 1232 - 2840.5000 2.94800 0.00996 2.6200 3.3190 1232 - 2841.5000 2.95800 0.01050 2.6180 3.3500 1216 - 2842.5000 2.97400 0.00978 2.6310 3.3190 1238 - 2843.5000 2.90900 0.00950 2.5980 3.2620 1222 - 2844.5000 2.93500 0.00968 2.6110 3.2900 1230 - 2845.5000 2.89300 0.00939 2.5620 3.2210 1232 - 2846.5000 2.89100 0.00997 2.5670 3.2670 1233 - 2847.5000 2.89300 0.00974 2.5640 3.2450 1221 - 2848.5000 2.88300 0.00960 2.5660 3.2420 1239 - 2849.5000 2.88400 0.00989 2.5120 3.2030 1221 - 2850.5000 2.86300 0.00962 2.5250 3.2020 1239 - 2851.5000 2.87200 0.00961 2.5220 3.1950 1226 - 2852.5000 2.87100 0.00972 2.5220 3.2010 1219 - 2853.5000 2.82500 0.00954 2.4770 3.1460 1229 - 2854.5000 2.79600 0.00978 2.4820 3.1650 1220 - 2855.5000 2.81600 0.00980 2.4840 3.1720 1231 - 2856.5000 2.81500 0.00986 2.4570 3.1440 1214 - 2857.5000 2.80300 0.00950 2.4570 3.1250 1236 - 2858.5000 2.77200 0.00971 2.4200 3.0960 1212 - 2859.5000 2.80200 0.00882 2.4930 3.1110 1226 - 2860.5000 2.78100 0.00944 2.4480 3.1070 1219 - 2861.5000 2.78700 0.00944 2.4510 3.1110 1221 - 2862.5000 2.74900 0.00947 2.3930 3.0520 1211 - 2863.5000 2.74900 0.00907 2.4240 3.0600 1229 - 2864.5000 2.73000 0.00889 2.4280 3.0470 1212 - 2865.5000 2.75000 0.00885 2.4380 3.0580 1228 - 2866.5000 2.71400 0.00919 2.4020 3.0420 1213 - 2867.5000 2.73300 0.00917 2.3990 3.0410 1225 - 2868.5000 2.73600 0.00928 2.4180 3.0650 1215 - 2869.5000 2.72700 0.00910 2.4230 3.0580 1216 - 2870.5000 2.71000 0.00973 2.3660 3.0450 1218 - 2871.5000 2.69500 0.00899 2.3840 3.0120 1220 - 2872.5000 2.68400 0.00950 2.3240 2.9860 1215 - 2873.5000 2.68600 0.00885 2.3770 2.9940 1215 - 2874.5000 2.69600 0.00841 2.4010 2.9870 1215 - 2875.5000 2.70600 0.00869 2.3840 2.9890 1213 - 2876.5000 2.69600 0.00918 2.3640 3.0030 1212 - 2877.5000 2.67100 0.00855 2.3740 2.9700 1215 - 2878.5000 2.64300 0.00918 2.2930 2.9320 1210 - 2879.5000 2.64800 0.00902 2.3440 2.9730 1216 - 2880.5000 2.64400 0.00961 2.3060 2.9730 1205 - 2881.5000 2.66900 0.00849 2.3820 2.9750 1219 - 2882.5000 2.64200 0.00890 2.3440 2.9590 1194 - 2883.5000 2.62100 0.00875 2.3160 2.9270 1219 - 2884.5000 2.62600 0.00844 2.3280 2.9120 1197 - 2885.5000 2.62000 0.00923 2.3030 2.9470 1217 - 2886.5000 2.60900 0.00813 2.3200 2.8820 1194 - 2887.5000 2.61700 0.00846 2.3050 2.8950 1216 - 2888.5000 2.60600 0.00899 2.3070 2.9270 1190 - 2889.5000 2.62100 0.00885 2.2930 2.9080 1206 - 2890.5000 2.60500 0.00871 2.2820 2.8840 1195 - 2891.5000 2.57600 0.00893 2.2860 2.9060 1205 - 2892.5000 2.58100 0.00931 2.2460 2.8910 1199 - 2893.5000 2.57400 0.00885 2.2710 2.8830 1196 - 2894.5000 2.56400 0.00866 2.2730 2.8730 1200 - 2895.5000 2.54500 0.00855 2.2540 2.8440 1191 - 2896.5000 2.56300 0.00889 2.2520 2.8680 1200 - 2897.5000 2.56000 0.00841 2.2790 2.8590 1189 - 2898.5000 2.54900 0.00901 2.2150 2.8380 1195 - 2899.5000 2.55700 0.00860 2.2500 2.8450 1196 - 2900.5000 2.55800 0.00852 2.2350 2.8230 1190 - 2901.5000 2.53600 0.00866 2.2350 2.8360 1205 - 2902.5000 2.54000 0.00903 2.2090 2.8310 1187 - 2903.5000 2.51400 0.00841 2.2230 2.8080 1211 - 2904.5000 2.52700 0.00875 2.2210 2.8230 1184 - 2905.5000 2.52800 0.00905 2.2080 2.8360 1204 - 2906.5000 2.50300 0.00853 2.2120 2.8000 1189 - 2907.5000 2.50600 0.00882 2.1820 2.7940 1204 - 2908.5000 2.49800 0.00861 2.1790 2.7730 1190 - 2909.5000 2.49700 0.00875 2.1820 2.7890 1203 - 2910.5000 2.48600 0.00780 2.2340 2.7720 1189 - 2911.5000 2.50100 0.00936 2.1410 2.7900 1203 - 2912.5000 2.50400 0.00812 2.2180 2.7790 1192 - 2913.5000 2.49600 0.00874 2.1980 2.8020 1193 - 2914.5000 2.48700 0.00859 2.1830 2.7780 1199 - 2915.5000 2.51700 0.00825 2.2160 2.7860 1194 - 2916.5000 2.49600 0.00854 2.1820 2.7740 1200 - 2917.5000 2.53900 0.00865 2.2250 2.8230 1194 - 2918.5000 2.51100 0.00870 2.1880 2.7900 1196 - 2919.5000 2.50700 0.00870 2.2000 2.8010 1192 - 2920.5000 2.49900 0.00873 2.2010 2.8060 1201 - 2921.5000 2.56400 0.00833 2.2600 2.8350 1191 - 2922.5000 2.50800 0.00897 2.1840 2.8060 1202 - 2923.5000 2.55500 0.00837 2.2350 2.8140 1195 - 2924.5000 2.53800 0.00888 2.2200 2.8320 1188 - 2925.5000 2.53400 0.00841 2.2360 2.8180 1198 - 2926.5000 2.53800 0.00914 2.2090 2.8400 1191 - 2927.5000 2.55600 0.00853 2.2440 2.8340 1196 - 2928.5000 2.54900 0.00900 2.2060 2.8270 1191 - 2929.5000 2.55500 0.00911 2.2120 2.8390 1184 - 2930.5000 2.55100 0.00912 2.2100 2.8400 1194 - 2931.5000 2.56600 0.00852 2.2430 2.8300 1188 - 2932.5000 2.55500 0.00909 2.2060 2.8310 1182 - 2933.5000 2.55800 0.00881 2.2440 2.8520 1191 - 2934.5000 2.56700 0.00867 2.2620 2.8560 1174 - 2935.5000 2.52300 0.00824 2.2350 2.8070 1205 - 2936.5000 2.54900 0.00876 2.2200 2.8200 1173 - 2937.5000 2.55300 0.00836 2.2460 2.8240 1194 - 2938.5000 2.55300 0.00870 2.2480 2.8460 1181 - 2939.5000 2.55000 0.00892 2.2260 2.8420 1191 - 2940.5000 2.56900 0.00801 2.2690 2.8240 1199 - 2941.5000 2.53300 0.00889 2.2340 2.8450 1181 - 2942.5000 2.55300 0.00851 2.2690 2.8520 1173 - 2943.5000 2.54200 0.00853 2.2300 2.8160 1180 - 2944.5000 2.55800 0.00820 2.2740 2.8360 1173 - 2945.5000 2.55900 0.00845 2.2600 2.8420 1187 - 2946.5000 2.55700 0.00884 2.2480 2.8540 1175 - 2947.5000 2.55000 0.00896 2.2160 2.8330 1185 - 2948.5000 2.56200 0.00853 2.2560 2.8420 1180 - 2949.5000 2.53200 0.00840 2.2310 2.8050 1167 - 2950.5000 2.54300 0.00912 2.2210 2.8500 1188 - 2951.5000 2.54100 0.00892 2.2200 2.8310 1173 - 2952.5000 2.54200 0.00860 2.2330 2.8270 1192 - 2953.5000 2.53800 0.00858 2.2260 2.8110 1163 - 2954.5000 2.56400 0.00844 2.2440 2.8260 1190 - 2955.5000 2.53900 0.00897 2.2080 2.8220 1171 - 2956.5000 2.56000 0.00891 2.2350 2.8470 1180 - 2957.5000 2.54700 0.00907 2.2250 2.8450 1169 - 2958.5000 2.55100 0.00903 2.2060 2.8250 1175 - 2959.5000 2.55300 0.00886 2.2210 2.8280 1174 - 2960.5000 2.53000 0.00855 2.2190 2.8030 1165 - 2961.5000 2.52200 0.00892 2.2160 2.8250 1166 - 2962.5000 2.53600 0.00905 2.2170 2.8350 1167 - 2963.5000 2.56300 0.00878 2.2440 2.8460 1174 - 2964.5000 2.52700 0.00831 2.2400 2.8080 1167 - 2965.5000 2.52600 0.00876 2.2370 2.8390 1182 - 2966.5000 2.51300 0.00891 2.1740 2.7840 1173 - 2967.5000 2.52000 0.00877 2.2080 2.8080 1170 - 2968.5000 2.51400 0.00856 2.2080 2.7910 1159 - 2969.5000 2.51200 0.00861 2.2180 2.8100 1181 - 2970.5000 2.52900 0.00944 2.1700 2.8130 1159 - 2971.5000 2.48600 0.00844 2.1640 2.7420 1172 - 2972.5000 2.50300 0.00869 2.1930 2.7870 1169 - 2973.5000 2.50700 0.00865 2.1960 2.7850 1160 - 2974.5000 2.51000 0.00847 2.2070 2.7830 1157 - 2975.5000 2.49500 0.00832 2.2030 2.7710 1166 - 2976.5000 2.49800 0.00851 2.1910 2.7710 1160 - 2977.5000 2.47400 0.00857 2.1610 2.7450 1161 - 2978.5000 2.50100 0.00838 2.1820 2.7580 1180 - 2979.5000 2.47600 0.00873 2.1720 2.7650 1154 - 2980.5000 2.49700 0.00847 2.1820 2.7620 1172 - 2981.5000 2.46800 0.00911 2.1410 2.7570 1144 - 2982.5000 2.47500 0.00861 2.1630 2.7540 1179 - 2983.5000 2.46100 0.00855 2.1540 2.7340 1151 - 2984.5000 2.46300 0.00917 2.1240 2.7520 1172 - 2985.5000 2.46000 0.00890 2.1550 2.7600 1156 - 2986.5000 2.43100 0.00879 2.1200 2.7190 1162 - 2987.5000 2.45100 0.00848 2.1290 2.7040 1149 - 2988.5000 2.41500 0.00862 2.1180 2.7050 1158 - 2989.5000 2.41600 0.00829 2.1240 2.6900 1165 - 2990.5000 2.40800 0.00859 2.0870 2.6720 1160 - 2991.5000 2.41300 0.00837 2.1130 2.6850 1167 - 2992.5000 2.40200 0.00805 2.1230 2.6680 1147 - 2993.5000 2.41500 0.00804 2.1250 2.6740 1166 - 2994.5000 2.37300 0.00867 2.0620 2.6520 1159 - 2995.5000 2.37400 0.00877 2.0620 2.6580 1154 - 2996.5000 2.37500 0.00870 2.0580 2.6480 1149 - 2997.5000 2.35400 0.00831 2.0530 2.6190 1159 - 2998.5000 2.35600 0.00854 2.0420 2.6220 1152 - 2999.5000 2.34100 0.00829 2.0490 2.6130 1158 - 3000.5000 2.34100 0.00840 2.0340 2.6070 1163 - 3001.5000 2.32100 0.00896 1.9980 2.6070 1155 - 3002.5000 2.34500 0.00818 2.0260 2.5870 1177 - 3003.5000 2.33500 0.00867 2.0150 2.5990 1135 - 3004.5000 2.34000 0.00811 2.0390 2.5920 1162 - 3005.5000 2.32700 0.00828 2.0300 2.5910 1149 - 3006.5000 2.29600 0.00884 1.9700 2.5740 1167 - 3007.5000 2.28300 0.00828 1.9790 2.5400 1149 - 3008.5000 2.27500 0.00869 1.9600 2.5500 1152 - 3009.5000 2.28300 0.00816 1.9830 2.5380 1157 - 3010.5000 2.24800 0.00843 1.9600 2.5320 1152 - 3011.5000 2.27000 0.00823 1.9680 2.5310 1171 - 3012.5000 2.25500 0.00789 1.9810 2.5140 1142 - 3013.5000 2.23600 0.00775 1.9570 2.4840 1156 - 3014.5000 2.24500 0.00783 1.9690 2.4990 1145 - 3015.5000 2.24200 0.00849 1.9210 2.4960 1148 - 3016.5000 2.24000 0.00814 1.9510 2.5030 1150 - 3017.5000 2.22400 0.00849 1.9200 2.4960 1152 - 3018.5000 2.22700 0.00798 1.9310 2.4730 1152 - 3019.5000 2.21900 0.00831 1.9050 2.4650 1136 - 3020.5000 2.22700 0.00779 1.9530 2.4830 1158 - 3021.5000 2.21000 0.00794 1.9180 2.4570 1153 - 3022.5000 2.21000 0.00821 1.9040 2.4590 1143 - 3023.5000 2.21300 0.00848 1.9090 2.4810 1138 - 3024.5000 2.22400 0.00904 1.8920 2.5040 1145 - 3025.5000 2.20900 0.00781 1.9380 2.4700 1160 - 3026.5000 2.16000 0.00829 1.8800 2.4430 1153 - 3027.5000 2.20400 0.00822 1.9120 2.4730 1165 - 3028.5000 2.19300 0.00864 1.8950 2.4780 1139 - 3029.5000 2.22300 0.00804 1.9260 2.4720 1153 - 3030.5000 2.20100 0.00809 1.9060 2.4530 1142 - 3031.5000 2.20500 0.00825 1.9120 2.4710 1147 - 3032.5000 2.18600 0.00838 1.8930 2.4610 1148 - 3033.5000 2.19900 0.00818 1.9110 2.4670 1155 - 3034.5000 2.20200 0.00772 1.9370 2.4600 1148 - 3035.5000 2.20000 0.00834 1.8980 2.4630 1147 - 3036.5000 2.20600 0.00816 1.9110 2.4660 1156 - 3037.5000 2.18200 0.00810 1.9040 2.4500 1136 - 3038.5000 2.18900 0.00843 1.8830 2.4530 1144 - 3039.5000 2.20000 0.00841 1.9010 2.4680 1137 - 3040.5000 2.20600 0.00812 1.8940 2.4450 1150 - 3041.5000 2.20400 0.00822 1.9070 2.4660 1157 - 3042.5000 2.19400 0.00871 1.9210 2.5060 1127 - 3043.5000 2.18800 0.00889 1.8700 2.4730 1149 - 3044.5000 2.20100 0.00802 1.9090 2.4490 1134 - 3045.5000 2.18600 0.00828 1.8890 2.4490 1143 - 3046.5000 2.20000 0.00774 1.9190 2.4420 1141 - 3047.5000 2.18700 0.00863 1.8810 2.4610 1130 - 3048.5000 2.19000 0.00828 1.8740 2.4360 1153 - 3049.5000 2.18700 0.00834 1.9050 2.4630 1119 - 3050.5000 2.18400 0.00805 1.8860 2.4310 1145 - 3051.5000 2.18700 0.00825 1.8830 2.4370 1126 - 3052.5000 2.17800 0.00816 1.8830 2.4320 1131 - 3053.5000 2.21500 0.00844 1.8970 2.4670 1139 - 3054.5000 2.18000 0.00788 1.8900 2.4210 1134 - 3055.5000 2.19700 0.00802 1.9030 2.4460 1147 - 3056.5000 2.18000 0.00839 1.8810 2.4450 1131 - 3057.5000 2.16200 0.00843 1.8810 2.4460 1123 - 3058.5000 2.20100 0.00842 1.8970 2.4610 1123 - 3059.5000 2.19100 0.00838 1.8850 2.4480 1129 - 3060.5000 2.20300 0.00804 1.9130 2.4550 1137 - 3061.5000 2.19700 0.00842 1.8730 2.4380 1125 - 3062.5000 2.18800 0.00853 1.8700 2.4450 1135 - 3063.5000 2.20100 0.00855 1.9000 2.4710 1116 - 3064.5000 2.17100 0.00847 1.8790 2.4480 1129 - 3065.5000 2.20800 0.00811 1.9280 2.4720 1126 - 3066.5000 2.17700 0.00801 1.8810 2.4190 1129 - 3067.5000 2.19000 0.00805 1.8980 2.4430 1147 - 3068.5000 2.18400 0.00797 1.9040 2.4370 1119 - 3069.5000 2.19800 0.00843 1.9120 2.4770 1122 - 3070.5000 2.20300 0.00789 1.9310 2.4590 1119 - 3071.5000 2.20200 0.00823 1.9050 2.4550 1117 - 3072.5000 2.17800 0.00837 1.8760 2.4390 1131 - 3073.5000 2.15900 0.00860 1.8630 2.4380 1117 - 3074.5000 2.19200 0.00781 1.9090 2.4340 1129 - 3075.5000 2.20400 0.00875 1.8730 2.4580 1118 - 3076.5000 2.18700 0.00819 1.8840 2.4320 1119 - 3077.5000 2.19800 0.00794 1.9360 2.4690 1127 - 3078.5000 2.18600 0.00870 1.8900 2.4730 1122 - 3079.5000 2.17800 0.00840 1.8800 2.4470 1140 - 3080.5000 2.18500 0.00803 1.9100 2.4490 1126 - 3081.5000 2.17700 0.00854 1.8750 2.4440 1109 - 3082.5000 2.19300 0.00839 1.8880 2.4500 1121 - 3083.5000 2.17800 0.00858 1.8710 2.4460 1124 - 3084.5000 2.19600 0.00821 1.8970 2.4500 1135 - 3085.5000 2.15600 0.00853 1.8730 2.4430 1117 - 3086.5000 2.17300 0.00862 1.8720 2.4470 1113 - 3087.5000 2.17500 0.00821 1.8820 2.4290 1111 - 3088.5000 2.15500 0.00850 1.8340 2.4060 1132 - 3089.5000 2.15800 0.00813 1.8520 2.3960 1120 - 3090.5000 2.16500 0.00825 1.8740 2.4250 1115 - 3091.5000 2.14500 0.00812 1.8540 2.3970 1117 - 3092.5000 2.17900 0.00845 1.8660 2.4310 1118 - 3093.5000 2.14000 0.00837 1.8420 2.4040 1126 - 3094.5000 2.18100 0.00769 1.8850 2.4000 1122 - 3095.5000 2.15800 0.00808 1.8770 2.4170 1118 - 3096.5000 2.16100 0.00808 1.8730 2.4130 1118 - 3097.5000 2.16700 0.00893 1.8410 2.4360 1109 - 3098.5000 2.16600 0.00841 1.8620 2.4220 1109 - 3099.5000 2.17100 0.00866 1.8730 2.4540 1126 - 3100.5000 2.16600 0.00868 1.8630 2.4410 1109 - 3101.5000 2.17900 0.00820 1.8970 2.4470 1126 - 3102.5000 2.17500 0.00794 1.8820 2.4080 1098 - 3103.5000 2.16600 0.00853 1.8500 2.4190 1113 - 3104.5000 2.20000 0.00812 1.9060 2.4510 1126 - 3105.5000 2.17700 0.00915 1.8460 2.4560 1110 - 3106.5000 2.17400 0.00836 1.8930 2.4510 1115 - 3107.5000 2.20800 0.00844 1.8960 2.4580 1108 - 3108.5000 2.19900 0.00794 1.9220 2.4500 1105 - 3109.5000 2.18600 0.00856 1.8920 2.4640 1116 - 3110.5000 2.16500 0.00863 1.8740 2.4470 1103 - 3111.5000 2.22300 0.00886 1.9000 2.4900 1109 - 3112.5000 2.20900 0.00880 1.8940 2.4780 1100 - 3113.5000 2.19400 0.00894 1.8660 2.4630 1114 - 3114.5000 2.21300 0.00817 1.9290 2.4730 1109 - 3115.5000 2.22200 0.00883 1.8970 2.4830 1101 - 3116.5000 2.21800 0.00888 1.9250 2.5140 1100 - 3117.5000 2.22700 0.00854 1.9240 2.4900 1098 - 3118.5000 2.21600 0.00847 1.9340 2.4990 1113 - 3119.5000 2.23500 0.00832 1.9430 2.4980 1113 - 3120.5000 2.22900 0.00885 1.9140 2.5000 1097 - 3121.5000 2.23900 0.00815 1.9850 2.5200 1078 - 3122.5000 2.22000 0.00864 1.9280 2.4990 1091 - 3123.5000 2.22700 0.00855 1.9480 2.5150 1100 - 3124.5000 2.25200 0.00865 1.9630 2.5360 1097 - 3125.5000 2.26400 0.00891 1.9610 2.5480 1086 - 3126.5000 2.24200 0.00893 1.9410 2.5290 1085 - 3127.5000 2.26200 0.00842 1.9620 2.5160 1083 - 3128.5000 2.25700 0.00880 1.9500 2.5330 1098 - 3129.5000 2.23100 0.00832 1.9660 2.5150 1089 - 3130.5000 2.25700 0.00887 1.9420 2.5250 1080 - 3131.5000 2.27400 0.00850 1.9910 2.5510 1084 - 3132.5000 2.27600 0.00859 1.9720 2.5370 1082 - 3133.5000 2.25100 0.00893 1.9540 2.5430 1088 - 3134.5000 2.24000 0.00847 1.9670 2.5230 1078 - 3135.5000 2.23900 0.00872 1.9460 2.5180 1075 - 3136.5000 2.25000 0.00828 1.9500 2.4950 1083 - 3137.5000 2.26200 0.00925 1.9370 2.5450 1081 - 3138.5000 2.23900 0.00843 1.9280 2.4820 1080 - 3139.5000 2.21800 0.00905 1.8930 2.4840 1066 - 3140.5000 2.24900 0.00818 1.9430 2.4790 1074 - 3141.5000 2.19800 0.00815 1.9200 2.4570 1086 - 3142.5000 2.22000 0.00789 1.9460 2.4640 1077 - 3143.5000 2.21700 0.00866 1.9100 2.4760 1068 - 3144.5000 2.20100 0.00801 1.9480 2.4740 1078 - 3145.5000 2.21400 0.00825 1.9160 2.4590 1082 - 3146.5000 2.19600 0.00844 1.8930 2.4480 1080 - 3147.5000 2.21100 0.00846 1.9270 2.4790 1065 - 3148.5000 2.21500 0.00811 1.9230 2.4520 1063 - 3149.5000 2.21300 0.00854 1.9050 2.4640 1072 - 3150.5000 2.21600 0.00886 1.9030 2.4830 1071 - 3151.5000 2.19900 0.00850 1.9050 2.4590 1062 - 3152.5000 2.18100 0.00844 1.9000 2.4480 1055 - 3153.5000 2.22600 0.00846 1.9100 2.4660 1080 - 3154.5000 2.20900 0.00923 1.8940 2.4970 1067 - 3155.5000 2.19300 0.00848 1.9100 2.4640 1066 - 3156.5000 2.21200 0.00896 1.9090 2.4930 1063 - 3157.5000 2.21900 0.00856 1.9200 2.4810 1074 - 3158.5000 2.20500 0.00835 1.9020 2.4510 1080 - 3159.5000 2.18600 0.00908 1.8860 2.4780 1062 - 3160.5000 2.19800 0.00851 1.9100 2.4620 1051 - 3161.5000 2.21400 0.00879 1.9110 2.4900 1085 - 3162.5000 2.19700 0.00935 1.8580 2.4690 1067 - 3163.5000 2.21500 0.00847 1.9270 2.4790 1062 - 3164.5000 2.22200 0.00904 1.9030 2.4910 1057 - 3165.5000 2.21500 0.00904 1.8790 2.4720 1075 - 3166.5000 2.18900 0.00939 1.8690 2.4800 1058 - 3167.5000 2.22000 0.00860 1.9290 2.4900 1063 - 3168.5000 2.20600 0.00848 1.9040 2.4540 1051 - 3169.5000 2.23300 0.00856 1.9200 2.4820 1077 - 3170.5000 2.23100 0.00861 1.9140 2.4770 1068 - 3171.5000 2.21100 0.00839 1.9150 2.4590 1050 - 3172.5000 2.25500 0.00870 1.9230 2.4900 1062 - 3173.5000 2.22200 0.00902 1.9040 2.4900 1054 - 3174.5000 2.22400 0.00865 1.9240 2.4870 1058 - 3175.5000 2.24100 0.00873 1.9370 2.5040 1054 - 3176.5000 2.24100 0.00879 1.9130 2.4840 1056 - 3177.5000 2.26600 0.00797 1.9620 2.4810 1061 - 3178.5000 2.25800 0.00928 1.9250 2.5280 1056 - 3179.5000 2.23700 0.00853 1.9360 2.4880 1048 - 3180.5000 2.25400 0.00874 1.9450 2.5140 1059 - 3181.5000 2.24600 0.00918 1.9070 2.5050 1061 - 3182.5000 2.24100 0.00861 1.9250 2.4830 1051 - 3183.5000 2.26200 0.00888 1.9460 2.5210 1048 - 3184.5000 2.23500 0.00884 1.9200 2.4940 1053 - 3185.5000 2.26700 0.00884 1.9360 2.5100 1055 - 3186.5000 2.27200 0.00932 1.9370 2.5410 1049 - 3187.5000 2.25900 0.00897 1.9450 2.5290 1060 - 3188.5000 2.27100 0.00961 1.9280 2.5500 1048 - 3189.5000 2.28300 0.00903 1.9730 2.5560 1043 - 3190.5000 2.24600 0.00917 1.9230 2.5150 1041 - 3191.5000 2.25600 0.00943 1.9220 2.5340 1052 - 3192.5000 2.26100 0.00923 1.9130 2.5120 1053 - 3193.5000 2.26100 0.00911 1.9190 2.5090 1050 - 3194.5000 2.26200 0.00898 1.9250 2.5060 1046 - 3195.5000 2.24000 0.00954 1.9050 2.5200 1040 - 3196.5000 2.25600 0.00871 1.9460 2.5110 1052 - 3197.5000 2.24400 0.00887 1.9430 2.5140 1037 - 3198.5000 2.24400 0.00899 1.9200 2.4990 1037 - 3199.5000 2.25400 0.00897 1.9200 2.5020 1053 - 3200.5000 2.25700 0.00937 1.9240 2.5280 1038 - 3201.5000 2.22800 0.00911 1.9250 2.5090 1028 - 3202.5000 2.21600 0.00895 1.8970 2.4790 1057 - 3203.5000 2.22600 0.00900 1.8880 2.4700 1046 - 3204.5000 2.22500 0.00864 1.9480 2.4980 1013 - 3205.5000 2.22900 0.00923 1.9020 2.5010 1052 - 3206.5000 2.19800 0.00919 1.8890 2.4820 1042 - 3207.5000 2.21300 0.00867 1.8980 2.4540 1029 - 3208.5000 2.19300 0.00915 1.8660 2.4590 1050 - 3209.5000 2.17900 0.00880 1.8730 2.4400 1038 - 3210.5000 2.20500 0.00848 1.8890 2.4360 1040 - 3211.5000 2.20800 0.00914 1.8800 2.4680 1035 - 3212.5000 2.20200 0.00844 1.8970 2.4410 1039 - 3213.5000 2.19300 0.00886 1.8780 2.4480 1035 - 3214.5000 2.19200 0.00921 1.8630 2.4560 1037 - 3215.5000 2.20100 0.00858 1.8900 2.4420 1034 - 3216.5000 2.16700 0.00891 1.8650 2.4400 1041 - 3217.5000 2.17900 0.00879 1.8760 2.4400 1030 - 3218.5000 2.19300 0.00848 1.9160 2.4560 1014 - 3219.5000 2.18500 0.00912 1.8630 2.4530 1047 - 3220.5000 2.15600 0.00933 1.8240 2.4240 1035 - 3221.5000 2.15200 0.00892 1.8500 2.4170 1010 - 3222.5000 2.18900 0.00784 1.9140 2.4210 1046 - 3223.5000 2.16100 0.00942 1.8330 2.4400 1039 - 3224.5000 2.16700 0.00855 1.8710 2.4150 1013 - 3225.5000 2.17400 0.00845 1.8700 2.4130 1033 - 3226.5000 2.18400 0.00896 1.8460 2.4240 1040 - 3227.5000 2.16100 0.00842 1.8730 2.4110 1020 - 3228.5000 2.16500 0.00865 1.8650 2.4190 1026 - 3229.5000 2.17500 0.00917 1.8460 2.4360 1034 - 3230.5000 2.16600 0.00864 1.8610 2.4140 1023 - 3231.5000 2.15900 0.00879 1.8460 2.4110 1032 - 3232.5000 2.16000 0.00842 1.8710 2.4100 1024 - 3233.5000 2.16800 0.00793 1.8900 2.3970 1023 - 3234.5000 2.14800 0.00840 1.8390 2.3770 1025 - 3235.5000 2.12200 0.00837 1.8370 2.3700 1014 - 3236.5000 2.15200 0.00864 1.8590 2.4120 1025 - 3237.5000 2.15200 0.00878 1.8420 2.4020 1018 - 3238.5000 2.12800 0.00834 1.8300 2.3630 1021 - 3239.5000 2.16700 0.00864 1.8460 2.3980 1021 - 3240.5000 2.13600 0.00870 1.8380 2.3930 1018 - 3241.5000 2.11700 0.00832 1.8240 2.3540 1015 - 3242.5000 2.14800 0.00834 1.8580 2.3880 1010 - 3243.5000 2.12000 0.00827 1.8370 2.3660 1024 - 3244.5000 2.12500 0.00848 1.8290 2.3660 1003 - 3245.5000 2.14300 0.00829 1.8410 2.3710 1023 - 3246.5000 2.14600 0.00882 1.8360 2.3960 1007 - 3247.5000 2.12000 0.00818 1.8410 2.3610 1011 - 3248.5000 2.10900 0.00859 1.8080 2.3540 1009 - 3249.5000 2.10800 0.00869 1.8210 2.3720 1005 - 3250.5000 2.13100 0.00890 1.8260 2.3900 1003 - 3251.5000 2.11200 0.00891 1.7990 2.3670 1017 - 3252.5000 2.09900 0.00842 1.8250 2.3570 998 - 3253.5000 2.12600 0.00828 1.8490 2.3730 1002 - 3254.5000 2.11600 0.00842 1.8110 2.3470 1012 - 3255.5000 2.12600 0.00874 1.8350 2.3900 1008 - 3256.5000 2.09800 0.00806 1.8250 2.3370 1009 - 3257.5000 2.13500 0.00835 1.8330 2.3620 1004 - 3258.5000 2.12000 0.00910 1.7920 2.3690 1005 - 3259.5000 2.12200 0.00860 1.8330 2.3780 1005 - 3260.5000 2.13500 0.00855 1.8280 2.3690 1000 - 3261.5000 2.13800 0.00843 1.8370 2.3710 1002 - 3262.5000 2.12000 0.00838 1.8090 2.3380 997 - 3263.5000 2.11400 0.00781 1.8410 2.3360 1005 - 3264.5000 2.11100 0.00859 1.8060 2.3470 992 - 3265.5000 2.12600 0.00838 1.8300 2.3570 989 - 3266.5000 2.09700 0.00852 1.8010 2.3380 994 - 3267.5000 2.11700 0.00866 1.8120 2.3580 994 - 3268.5000 2.09000 0.00871 1.7860 2.3340 989 - 3269.5000 2.09300 0.00867 1.7730 2.3180 987 - 3270.5000 2.08700 0.00828 1.7840 2.3080 1001 - 3271.5000 2.07700 0.00824 1.8040 2.3210 983 - 3272.5000 2.11100 0.00866 1.7920 2.3350 982 - 3273.5000 2.09700 0.00870 1.8040 2.3520 991 - 3274.5000 2.07200 0.00877 1.7980 2.3500 990 - 3275.5000 2.08800 0.00859 1.7980 2.3380 987 - 3276.5000 2.10400 0.00837 1.8020 2.3260 980 - 3277.5000 2.09500 0.00847 1.7980 2.3290 982 - 3278.5000 2.09300 0.00815 1.8190 2.3320 990 - 3279.5000 2.09700 0.00848 1.8290 2.3590 977 - 3280.5000 2.08000 0.00905 1.7780 2.3450 981 - 3281.5000 2.09200 0.00844 1.8140 2.3430 982 - 3282.5000 2.11800 0.00839 1.8240 2.3500 982 - 3283.5000 2.08800 0.00903 1.7900 2.3540 975 - 3284.5000 2.09400 0.00853 1.8090 2.3430 980 - 3285.5000 2.07300 0.00884 1.7760 2.3300 981 - 3286.5000 2.05600 0.00849 1.7680 2.2990 978 - 3287.5000 2.06200 0.00858 1.7840 2.3200 975 - 3288.5000 2.09400 0.00811 1.8130 2.3200 977 - 3289.5000 2.04200 0.00932 1.7310 2.3170 988 - 3290.5000 2.05500 0.00818 1.7770 2.2840 960 - 3291.5000 2.05400 0.00822 1.7860 2.3010 982 - 3292.5000 2.06100 0.00864 1.7630 2.3040 980 - 3293.5000 2.06600 0.00830 1.7790 2.2900 947 - 3294.5000 2.05900 0.00837 1.7710 2.2980 991 - 3295.5000 2.03500 0.00819 1.7720 2.2800 963 - 3296.5000 2.02300 0.00825 1.7640 2.2760 964 - 3297.5000 2.05200 0.00793 1.7990 2.2950 979 - 3298.5000 2.06000 0.00790 1.8040 2.2930 959 - 3299.5000 2.05200 0.00832 1.7740 2.2920 969 - 3300.5000 2.05600 0.00810 1.7900 2.2960 975 - 3301.5000 2.05000 0.00828 1.7810 2.2980 974 - 3302.5000 2.04200 0.00812 1.7770 2.2820 966 - 3303.5000 2.04100 0.00851 1.7390 2.2700 973 - 3304.5000 2.02600 0.00804 1.7420 2.2430 971 - 3305.5000 2.02200 0.00820 1.7420 2.2520 966 - 3306.5000 2.01700 0.00875 1.7070 2.2520 970 - 3307.5000 2.02500 0.00787 1.7620 2.2530 973 - 3308.5000 2.01000 0.00813 1.7270 2.2330 968 - 3309.5000 2.01400 0.00850 1.6780 2.2030 953 - 3310.5000 2.03200 0.00810 1.7440 2.2530 986 - 3311.5000 1.99700 0.00872 1.6780 2.2210 969 - 3312.5000 1.97500 0.00808 1.7200 2.2190 953 - 3313.5000 2.00200 0.00839 1.6990 2.2240 979 - 3314.5000 2.01000 0.00885 1.6850 2.2350 965 - 3315.5000 1.97500 0.00834 1.6920 2.2080 957 - 3316.5000 1.98300 0.00838 1.6830 2.2040 966 - 3317.5000 1.98700 0.00877 1.6830 2.2260 959 - 3318.5000 1.99700 0.00821 1.7170 2.2250 958 - 3319.5000 1.97200 0.00746 1.7260 2.1890 964 - 3320.5000 1.97600 0.00847 1.6940 2.2190 961 - 3321.5000 1.97700 0.00878 1.6780 2.2240 966 - 3322.5000 1.96500 0.00830 1.6840 2.1970 955 - 3323.5000 1.98000 0.00798 1.6980 2.1940 966 - 3324.5000 1.97000 0.00841 1.6830 2.2060 966 - 3325.5000 1.97800 0.00806 1.7190 2.2120 935 - 3326.5000 1.97800 0.00795 1.6950 2.1880 962 - 3327.5000 1.96400 0.00889 1.6560 2.2040 951 - 3328.5000 1.94800 0.00843 1.6630 2.1830 951 - 3329.5000 1.96900 0.00873 1.6670 2.2050 949 - 3330.5000 1.96800 0.00880 1.6610 2.2040 951 - 3331.5000 1.97500 0.00856 1.6790 2.2070 951 - 3332.5000 1.98000 0.00842 1.6950 2.2130 946 - 3333.5000 1.96100 0.00906 1.6740 2.2330 952 - 3334.5000 1.95700 0.00895 1.6630 2.2180 962 - 3335.5000 1.96200 0.00814 1.6800 2.1770 931 - 3336.5000 1.97300 0.00779 1.7020 2.1890 976 - 3337.5000 1.96200 0.00831 1.6780 2.1890 945 - 3338.5000 1.97700 0.00819 1.6860 2.1910 950 - 3339.5000 1.96900 0.00844 1.6770 2.1970 949 - 3340.5000 1.94800 0.00849 1.6780 2.2050 963 - 3341.5000 1.96900 0.00825 1.6960 2.2050 951 - 3342.5000 1.97300 0.00882 1.6840 2.2270 948 - 3343.5000 1.98300 0.00870 1.7050 2.2430 957 - 3344.5000 1.97300 0.00860 1.6740 2.2070 961 - 3345.5000 1.96800 0.00832 1.7180 2.2250 929 - 3346.5000 2.00400 0.00863 1.7070 2.2440 968 - 3347.5000 1.98000 0.00841 1.6960 2.2130 944 - 3348.5000 1.96200 0.00820 1.6810 2.1830 937 - 3349.5000 1.96300 0.00883 1.6580 2.2010 945 - 3350.5000 1.95500 0.00881 1.6510 2.1930 946 - 3351.5000 1.94500 0.00844 1.6590 2.1760 938 - 3352.5000 1.95000 0.00866 1.6790 2.2080 933 - 3353.5000 1.94900 0.00812 1.6690 2.1680 944 - 3354.5000 1.92400 0.00813 1.6660 2.1670 949 - 3355.5000 1.93600 0.00803 1.6900 2.1770 920 - 3356.5000 1.94300 0.00754 1.7050 2.1690 948 - 3357.5000 1.94000 0.00772 1.6830 2.1550 935 - 3358.5000 1.92500 0.00722 1.6890 2.1300 933 - 3359.5000 1.94000 0.00845 1.6460 2.1630 935 - 3360.5000 1.93700 0.00810 1.6600 2.1580 946 - 3361.5000 1.91600 0.00799 1.6440 2.1360 948 - 3362.5000 1.92400 0.00801 1.6580 2.1440 921 - 3363.5000 1.91200 0.00890 1.6190 2.1680 951 - 3364.5000 1.90200 0.00899 1.6060 2.1540 929 - 3365.5000 1.90800 0.00797 1.6510 2.1370 929 - 3366.5000 1.92100 0.00787 1.6610 2.1430 938 - 3367.5000 1.92900 0.00804 1.6590 2.1510 936 - 3368.5000 1.90900 0.00794 1.6400 2.1240 930 - 3369.5000 1.90000 0.00801 1.6330 2.1210 927 - 3370.5000 1.90000 0.00764 1.6470 2.1170 946 - 3371.5000 1.89900 0.00857 1.6210 2.1460 939 - 3372.5000 1.90600 0.00827 1.6390 2.1420 924 - 3373.5000 1.90000 0.00872 1.6120 2.1440 930 - 3374.5000 1.91200 0.00823 1.6640 2.1670 934 - 3375.5000 1.92400 0.00844 1.6410 2.1550 928 - 3376.5000 1.91300 0.00865 1.6070 2.1330 925 - 3377.5000 1.89800 0.00834 1.6280 2.1390 938 - 3378.5000 1.90600 0.00837 1.6230 2.1360 939 - 3379.5000 1.91200 0.00712 1.6760 2.1070 916 - 3380.5000 1.90200 0.00813 1.6260 2.1200 924 - 3381.5000 1.92400 0.00831 1.6320 2.1390 930 - 3382.5000 1.91200 0.00803 1.6520 2.1390 920 - 3383.5000 1.89700 0.00784 1.6400 2.1170 926 - 3384.5000 1.91800 0.00741 1.6790 2.1330 938 - 3385.5000 1.90000 0.00843 1.6350 2.1480 925 - 3386.5000 1.91100 0.00826 1.6260 2.1240 908 - 3387.5000 1.90300 0.00863 1.6150 2.1390 922 - 3388.5000 1.90600 0.00854 1.6150 2.1330 920 - 3389.5000 1.90400 0.00872 1.6000 2.1250 907 - 3390.5000 1.91100 0.00802 1.6450 2.1270 903 - 3391.5000 1.91400 0.00797 1.6400 2.1260 930 - 3392.5000 1.89200 0.00785 1.6390 2.1120 907 - 3393.5000 1.90500 0.00845 1.6320 2.1390 899 - 3394.5000 1.89300 0.00867 1.6020 2.1250 910 - 3395.5000 1.90200 0.00833 1.6290 2.1330 916 - 3396.5000 1.91100 0.00875 1.6240 2.1540 918 - 3397.5000 1.91000 0.00826 1.6360 2.1280 886 - 3398.5000 1.90000 0.00832 1.6290 2.1370 931 - 3399.5000 1.89400 0.00870 1.6380 2.1620 906 - 3400.5000 1.90600 0.00830 1.6370 2.1350 901 - 3401.5000 1.92100 0.00836 1.6390 2.1420 906 - 3402.5000 1.92600 0.00783 1.6560 2.1300 916 - 3403.5000 1.94700 0.00819 1.6500 2.1420 902 - 3404.5000 1.91200 0.00794 1.6610 2.1370 899 - 3405.5000 1.91200 0.00859 1.6310 2.1500 912 - 3406.5000 1.94400 0.00852 1.6710 2.1840 906 - 3407.5000 1.92100 0.00890 1.6280 2.1630 903 - 3408.5000 1.91200 0.00883 1.6190 2.1490 901 - 3409.5000 1.92900 0.00842 1.6510 2.1640 927 - 3410.5000 1.93700 0.00893 1.6230 2.1590 900 - 3411.5000 1.91700 0.00811 1.6680 2.1520 891 - 3412.5000 1.94500 0.00844 1.6700 2.1770 902 - 3413.5000 1.93700 0.00830 1.6590 2.1590 908 - 3414.5000 1.92600 0.00839 1.6460 2.1500 902 - 3415.5000 1.93900 0.00853 1.6500 2.1610 897 - 3416.5000 1.92300 0.00855 1.6330 2.1460 901 - 3417.5000 1.96100 0.00872 1.6720 2.1960 903 - 3418.5000 1.95300 0.00864 1.6670 2.1830 891 - 3419.5000 1.95800 0.00918 1.6810 2.2280 887 - 3420.5000 1.97700 0.00874 1.6930 2.2230 919 - 3421.5000 1.98100 0.00884 1.7020 2.2320 898 - 3422.5000 1.96700 0.00917 1.6820 2.2300 893 - 3423.5000 2.00900 0.00930 1.7240 2.2810 896 - 3424.5000 1.99800 0.00897 1.7380 2.2760 899 - 3425.5000 2.01900 0.00985 1.7160 2.3080 903 - 3426.5000 1.99200 0.00938 1.7200 2.2770 882 - 3427.5000 2.00900 0.00996 1.7280 2.3240 896 - 3428.5000 1.97200 0.00912 1.7000 2.2440 889 - 3429.5000 1.95800 0.00867 1.6550 2.1780 910 - 3430.5000 1.93200 0.00842 1.6720 2.1690 871 - 3431.5000 1.93700 0.00900 1.6640 2.2010 890 - 3432.5000 1.93500 0.00820 1.6740 2.1650 897 - 3433.5000 1.92100 0.00873 1.6350 2.1570 894 - 3434.5000 1.90000 0.00823 1.6320 2.1190 876 - 3435.5000 1.88500 0.00874 1.6090 2.1360 908 - 3436.5000 1.88400 0.00837 1.6120 2.1110 889 - 3437.5000 1.88000 0.00894 1.5820 2.1140 885 - 3438.5000 1.87700 0.00890 1.5840 2.1150 889 - 3439.5000 1.87200 0.00809 1.6360 2.1210 898 - 3440.5000 1.87800 0.00836 1.6210 2.1190 887 - 3441.5000 1.88500 0.00795 1.6120 2.0830 878 - 3442.5000 1.89100 0.00833 1.6250 2.1210 886 - 3443.5000 1.90500 0.00871 1.6230 2.1460 902 - 3444.5000 1.87300 0.00866 1.5960 2.1130 891 - 3445.5000 1.86700 0.00836 1.6070 2.1040 883 - 3446.5000 1.88400 0.00800 1.6250 2.1030 892 - 3447.5000 1.88400 0.00784 1.6360 2.1010 880 - 3448.5000 1.84800 0.00782 1.5860 2.0560 903 - 3449.5000 1.86400 0.00845 1.6100 2.1080 868 - 3450.5000 1.87800 0.00791 1.6330 2.1030 883 - 3451.5000 1.87100 0.00799 1.6190 2.0950 887 - 3452.5000 1.84800 0.00802 1.5960 2.0740 889 - 3453.5000 1.85100 0.00828 1.5870 2.0740 864 - 3454.5000 1.83800 0.00858 1.5620 2.0720 883 - 3455.5000 1.85800 0.00819 1.5930 2.0800 883 - 3456.5000 1.84800 0.00834 1.5770 2.0710 877 - 3457.5000 1.86300 0.00782 1.5810 2.0410 864 - 3458.5000 1.86700 0.00782 1.6120 2.0770 884 - 3459.5000 1.84500 0.00863 1.5590 2.0690 873 - 3460.5000 1.84000 0.00798 1.5890 2.0600 871 - 3461.5000 1.87000 0.00872 1.5550 2.0690 868 - 3462.5000 1.86900 0.00826 1.5880 2.0790 883 - 3463.5000 1.85900 0.00807 1.6010 2.0790 877 - 3464.5000 1.85200 0.00814 1.5760 2.0540 863 - 3465.5000 1.84900 0.00863 1.5630 2.0720 870 - 3466.5000 1.88900 0.00805 1.6100 2.0900 888 - 3467.5000 1.84600 0.00812 1.5920 2.0710 871 - 3468.5000 1.84800 0.00771 1.6060 2.0600 866 - 3469.5000 1.84300 0.00869 1.5710 2.0820 864 - 3470.5000 1.86900 0.00786 1.6180 2.0860 887 - 3471.5000 1.84400 0.00858 1.5650 2.0700 866 - 3472.5000 1.84500 0.00850 1.5590 2.0610 871 - 3473.5000 1.83300 0.00798 1.5780 2.0460 859 - 3474.5000 1.86500 0.00813 1.5770 2.0580 875 - 3475.5000 1.85300 0.00803 1.6040 2.0750 860 - 3476.5000 1.82400 0.00831 1.5600 2.0480 863 - 3477.5000 1.82000 0.00851 1.5500 2.0490 860 - 3478.5000 1.85200 0.00811 1.5700 2.0520 882 - 3479.5000 1.85200 0.00874 1.5380 2.0510 862 - 3480.5000 1.81500 0.00855 1.5440 2.0460 861 - 3481.5000 1.81500 0.00835 1.5540 2.0450 864 - 3482.5000 1.83100 0.00820 1.5710 2.0560 874 - 3483.5000 1.85200 0.00888 1.5540 2.0770 867 - 3484.5000 1.82200 0.00801 1.5690 2.0370 853 - 3485.5000 1.84700 0.00851 1.5630 2.0620 859 - 3486.5000 1.84700 0.00814 1.5750 2.0550 869 - 3487.5000 1.83500 0.00796 1.5680 2.0340 857 - 3488.5000 1.83600 0.00787 1.5770 2.0350 846 - 3489.5000 1.82800 0.00826 1.5550 2.0370 852 - 3490.5000 1.82100 0.00787 1.5840 2.0480 869 - 3491.5000 1.83700 0.00793 1.5730 2.0370 856 - 3492.5000 1.82400 0.00794 1.5740 2.0370 850 - 3493.5000 1.83000 0.00845 1.5420 2.0340 847 - 3494.5000 1.81900 0.00756 1.5830 2.0240 851 - 3495.5000 1.82300 0.00843 1.5390 2.0360 868 - 3496.5000 1.82000 0.00858 1.5610 2.0630 855 - 3497.5000 1.82700 0.00800 1.5720 2.0350 838 - 3498.5000 1.81500 0.00799 1.5790 2.0460 853 - 3499.5000 1.83100 0.00825 1.5560 2.0370 850 - 3500.5000 1.81500 0.00866 1.5370 2.0450 861 - 3501.5000 1.83000 0.00829 1.5690 2.0470 832 - 3502.5000 1.81100 0.00810 1.5390 2.0100 845 - 3503.5000 1.81000 0.00833 1.5480 2.0340 852 - 3504.5000 1.80300 0.00844 1.5340 2.0260 850 - 3505.5000 1.81400 0.00791 1.5550 2.0140 842 - 3506.5000 1.81000 0.00848 1.5250 2.0190 848 - 3507.5000 1.81400 0.00814 1.5390 2.0160 858 - 3508.5000 1.79300 0.00908 1.5100 2.0390 849 - 3509.5000 1.79100 0.00871 1.5090 2.0110 831 - 3510.5000 1.78600 0.00758 1.5350 1.9760 846 - 3511.5000 1.78500 0.00795 1.5160 1.9820 858 - 3512.5000 1.76800 0.00775 1.5260 1.9760 843 - 3513.5000 1.77800 0.00740 1.5460 1.9730 833 - 3514.5000 1.75300 0.00840 1.4830 1.9680 834 - 3515.5000 1.79100 0.00757 1.5510 1.9880 834 - 3516.5000 1.78800 0.00808 1.5040 1.9730 842 - 3517.5000 1.76100 0.00871 1.4800 1.9850 840 - 3518.5000 1.74900 0.00814 1.4900 1.9580 827 - 3519.5000 1.74200 0.00822 1.4910 1.9650 831 - 3520.5000 1.74300 0.00836 1.4810 1.9650 837 - 3521.5000 1.73600 0.00804 1.4760 1.9400 833 - 3522.5000 1.73700 0.00826 1.4690 1.9420 820 - 3523.5000 1.72100 0.00816 1.4530 1.9220 826 - 3524.5000 1.74600 0.00781 1.4870 1.9410 844 - 3525.5000 1.73700 0.00833 1.4790 1.9580 827 - 3526.5000 1.70300 0.00765 1.4600 1.8990 823 - 3527.5000 1.69900 0.00801 1.4510 1.9100 821 - 3528.5000 1.71600 0.00836 1.4480 1.9340 845 - 3529.5000 1.73700 0.00860 1.4430 1.9380 828 - 3530.5000 1.70900 0.00774 1.4700 1.9150 827 - 3531.5000 1.68700 0.00799 1.4440 1.9020 821 - 3532.5000 1.70800 0.00778 1.4610 1.9090 828 - 3533.5000 1.69500 0.00795 1.4320 1.8900 829 - 3534.5000 1.70600 0.00819 1.4450 1.9180 833 - 3535.5000 1.67700 0.00826 1.4240 1.8960 817 - 3536.5000 1.68500 0.00807 1.4340 1.8970 822 - 3537.5000 1.70400 0.00792 1.4490 1.9070 835 - 3538.5000 1.68800 0.00749 1.4560 1.8850 821 - 3539.5000 1.67200 0.00833 1.4390 1.9160 820 - 3540.5000 1.70800 0.00823 1.4490 1.9210 822 - 3541.5000 1.71100 0.00760 1.4510 1.8870 823 - 3542.5000 1.70000 0.00837 1.4140 1.8950 825 - 3543.5000 1.66300 0.00825 1.4060 1.8810 829 - 3544.5000 1.66500 0.00807 1.4130 1.8710 805 - 3545.5000 1.67600 0.00823 1.4230 1.8900 804 - 3546.5000 1.68700 0.00811 1.4260 1.8920 825 - 3547.5000 1.67000 0.00775 1.4330 1.8750 813 - 3548.5000 1.65300 0.00873 1.3920 1.8880 807 - 3549.5000 1.68000 0.00870 1.4020 1.8950 802 - 3550.5000 1.66200 0.00819 1.4160 1.8860 823 - 3551.5000 1.69200 0.00830 1.4150 1.8890 815 - 3552.5000 1.66500 0.00814 1.4220 1.8880 820 - 3553.5000 1.68900 0.00801 1.4480 1.9030 806 - 3554.5000 1.67300 0.00775 1.4370 1.8750 798 - 3555.5000 1.67600 0.00800 1.4260 1.8850 822 - 3556.5000 1.67100 0.00834 1.4140 1.8880 808 - 3557.5000 1.64500 0.00815 1.3980 1.8590 800 - 3558.5000 1.65700 0.00821 1.4220 1.8870 801 - 3559.5000 1.68200 0.00807 1.4400 1.9000 813 - 3560.5000 1.66300 0.00805 1.4130 1.8720 813 - 3561.5000 1.67800 0.00778 1.4360 1.8800 814 - 3562.5000 1.68600 0.00821 1.4420 1.9050 795 - 3563.5000 1.66600 0.00873 1.4000 1.8890 785 - 3564.5000 1.64800 0.00838 1.4040 1.8830 817 - 3565.5000 1.68400 0.00799 1.4320 1.8830 797 - 3566.5000 1.66400 0.00870 1.3870 1.8760 790 - 3567.5000 1.66000 0.00922 1.3790 1.8980 793 - 3568.5000 1.67200 0.00845 1.4150 1.8940 804 - 3569.5000 1.69000 0.00855 1.4040 1.8920 815 - 3570.5000 1.68300 0.00821 1.4200 1.8850 802 - 3571.5000 1.68800 0.00765 1.4520 1.8830 793 - 3572.5000 1.66500 0.00799 1.4270 1.8760 789 - 3573.5000 1.68100 0.00756 1.4310 1.8610 808 - 3574.5000 1.67400 0.00837 1.4160 1.8870 792 - 3575.5000 1.66900 0.00861 1.4190 1.9020 786 - 3576.5000 1.67000 0.00760 1.4610 1.8880 789 - 3577.5000 1.68600 0.00808 1.4250 1.8790 789 - 3578.5000 1.67300 0.00794 1.4400 1.8910 806 - 3579.5000 1.67500 0.00829 1.4300 1.8960 790 - 3580.5000 1.67100 0.00848 1.3910 1.8650 782 - 3581.5000 1.67400 0.00802 1.4260 1.8730 776 - 3582.5000 1.68700 0.00754 1.4500 1.8730 787 - 3583.5000 1.68100 0.00812 1.4230 1.8820 798 - 3584.5000 1.65900 0.00811 1.4190 1.8760 794 - 3585.5000 1.66400 0.00797 1.4230 1.8660 773 - 3586.5000 1.66400 0.00828 1.4170 1.8790 778 - 3587.5000 1.65300 0.00794 1.4160 1.8640 795 - 3588.5000 1.66600 0.00858 1.3930 1.8740 785 - 3589.5000 1.65000 0.00780 1.4240 1.8600 782 - 3590.5000 1.65900 0.00817 1.4070 1.8600 768 - 3591.5000 1.67600 0.00834 1.4270 1.8890 768 - 3592.5000 1.67600 0.00854 1.4140 1.8960 796 - 3593.5000 1.68100 0.00783 1.4530 1.8890 775 - 3594.5000 1.66600 0.00772 1.4320 1.8600 768 - 3595.5000 1.66900 0.00814 1.4160 1.8690 775 - 3596.5000 1.64500 0.00791 1.4110 1.8510 774 - 3597.5000 1.67100 0.00828 1.4100 1.8750 789 - 3598.5000 1.65100 0.00827 1.4140 1.8750 776 - 3599.5000 1.65900 0.00786 1.4020 1.8370 766 - 3600.5000 1.65500 0.00772 1.4320 1.8600 769 - 3601.5000 1.66900 0.00778 1.4270 1.8610 777 - 3602.5000 1.66100 0.00827 1.4140 1.8750 776 - 3603.5000 1.65000 0.00837 1.3950 1.8620 778 - 3604.5000 1.64900 0.00833 1.4010 1.8620 765 - 3605.5000 1.63900 0.00801 1.3890 1.8310 762 - 3606.5000 1.65500 0.00784 1.4260 1.8590 763 - 3607.5000 1.65900 0.00832 1.3880 1.8520 777 - 3608.5000 1.63900 0.00808 1.4070 1.8570 775 - 3609.5000 1.65600 0.00786 1.4180 1.8510 759 - 3610.5000 1.65100 0.00845 1.3940 1.8620 767 - 3611.5000 1.66100 0.00777 1.4090 1.8380 762 - 3612.5000 1.65400 0.00844 1.4150 1.8850 776 - 3613.5000 1.62400 0.00834 1.3890 1.8500 764 - 3614.5000 1.63000 0.00837 1.3810 1.8390 749 - 3615.5000 1.65100 0.00852 1.4000 1.8690 757 - 3616.5000 1.65500 0.00733 1.4420 1.8480 768 - 3617.5000 1.66400 0.00815 1.4110 1.8620 765 - 3618.5000 1.62900 0.00752 1.4110 1.8260 761 - 3619.5000 1.65300 0.00796 1.3900 1.8250 747 - 3620.5000 1.64000 0.00774 1.4220 1.8480 757 - 3621.5000 1.63800 0.00814 1.3810 1.8300 761 - 3622.5000 1.64000 0.00786 1.4060 1.8400 762 - 3623.5000 1.63700 0.00819 1.4040 1.8560 761 - 3624.5000 1.63200 0.00801 1.3760 1.8140 747 - 3625.5000 1.65100 0.00786 1.4240 1.8570 758 - 3626.5000 1.63900 0.00748 1.4210 1.8310 752 - 3627.5000 1.65900 0.00824 1.4040 1.8600 765 - 3628.5000 1.63300 0.00763 1.4070 1.8270 757 - 3629.5000 1.64200 0.00766 1.4210 1.8390 744 - 3630.5000 1.63900 0.00810 1.4120 1.8540 745 - 3631.5000 1.64500 0.00825 1.3910 1.8440 753 - 3632.5000 1.62400 0.00884 1.3670 1.8550 761 - 3633.5000 1.62600 0.00739 1.4060 1.8140 762 - 3634.5000 1.62800 0.00842 1.3940 1.8540 746 - 3635.5000 1.64600 0.00818 1.3990 1.8440 740 - 3636.5000 1.62600 0.00749 1.3930 1.8050 756 - 3637.5000 1.62100 0.00850 1.3560 1.8240 758 - 3638.5000 1.63000 0.00814 1.3890 1.8340 748 - 3639.5000 1.61300 0.00783 1.3900 1.8170 743 - 3640.5000 1.60400 0.00774 1.3830 1.8070 751 - 3641.5000 1.60200 0.00786 1.3770 1.8060 744 - 3642.5000 1.61200 0.00809 1.3840 1.8310 763 - 3643.5000 1.63000 0.00854 1.3830 1.8500 747 - 3644.5000 1.59800 0.00763 1.3860 1.8020 743 - 3645.5000 1.61200 0.00737 1.3840 1.7860 744 - 3646.5000 1.61800 0.00764 1.3960 1.8100 735 - 3647.5000 1.59300 0.00841 1.3710 1.8350 761 - 3648.5000 1.61600 0.00786 1.3890 1.8190 749 - 3649.5000 1.58900 0.00811 1.3600 1.8040 750 - 3650.5000 1.61200 0.00811 1.3810 1.8200 732 - 3651.5000 1.61800 0.00802 1.3760 1.8110 735 - 3652.5000 1.60600 0.00810 1.3790 1.8240 754 - 3653.5000 1.60300 0.00766 1.3920 1.8100 745 - 3654.5000 1.60300 0.00831 1.3440 1.7970 743 - 3655.5000 1.58700 0.00735 1.3790 1.7760 730 - 3656.5000 1.59300 0.00728 1.3870 1.7820 736 - 3657.5000 1.61700 0.00764 1.4090 1.8260 745 - 3658.5000 1.58800 0.00755 1.3820 1.7970 755 - 3659.5000 1.59500 0.00797 1.3600 1.7940 741 - 3660.5000 1.59400 0.00794 1.3670 1.7950 726 - 3661.5000 1.57900 0.00745 1.3770 1.7830 743 - 3662.5000 1.58900 0.00865 1.3310 1.7970 725 - 3663.5000 1.59800 0.00785 1.3750 1.8060 754 - 3664.5000 1.59700 0.00809 1.3620 1.7990 730 - 3665.5000 1.57700 0.00745 1.3650 1.7700 738 - 3666.5000 1.59200 0.00797 1.3770 1.8050 721 - 3667.5000 1.58700 0.00811 1.3640 1.7990 719 - 3668.5000 1.59700 0.00739 1.3830 1.7820 729 - 3669.5000 1.58200 0.00757 1.3690 1.7810 740 - 3670.5000 1.57100 0.00756 1.3560 1.7650 731 - 3671.5000 1.58100 0.00799 1.3260 1.7550 720 - 3672.5000 1.57100 0.00801 1.3340 1.7670 730 - 3673.5000 1.56800 0.00781 1.3460 1.7650 719 - 3674.5000 1.56500 0.00791 1.3300 1.7620 746 - 3675.5000 1.58700 0.00842 1.3540 1.8070 724 - 3676.5000 1.56300 0.00809 1.3440 1.7800 726 - 3677.5000 1.58000 0.00830 1.3420 1.7840 709 - 3678.5000 1.57700 0.00823 1.3430 1.7800 705 - 3679.5000 1.56000 0.00846 1.3310 1.7850 720 - 3680.5000 1.57200 0.00795 1.3390 1.7690 732 - 3681.5000 1.57200 0.00804 1.3410 1.7740 726 - 3682.5000 1.56400 0.00814 1.3450 1.7790 711 - 3683.5000 1.56600 0.00782 1.3390 1.7600 724 - 3684.5000 1.56000 0.00789 1.3400 1.7600 709 - 3685.5000 1.55600 0.00810 1.3410 1.7830 744 - 3686.5000 1.55800 0.00810 1.3320 1.7640 711 - 3687.5000 1.54900 0.00791 1.3430 1.7670 718 - 3688.5000 1.55400 0.00836 1.3110 1.7560 709 - 3689.5000 1.56100 0.00789 1.3450 1.7650 709 - 3690.5000 1.55000 0.00789 1.3370 1.7590 716 - 3691.5000 1.54900 0.00756 1.3420 1.7470 718 - 3692.5000 1.56700 0.00792 1.3340 1.7570 713 - 3693.5000 1.53700 0.00827 1.3040 1.7470 717 - 3694.5000 1.56700 0.00715 1.3760 1.7540 699 - 3695.5000 1.55700 0.00798 1.3210 1.7420 696 - 3696.5000 1.51600 0.00783 1.3100 1.7290 715 - 3697.5000 1.55800 0.00784 1.3420 1.7600 710 - 3698.5000 1.55600 0.00827 1.3000 1.7390 704 - 3699.5000 1.55100 0.00784 1.3370 1.7510 697 - 3700.5000 1.56600 0.00733 1.3520 1.7410 705 - 3701.5000 1.56200 0.00754 1.3410 1.7380 693 - 3702.5000 1.56200 0.00747 1.3630 1.7640 720 - 3703.5000 1.55200 0.00803 1.3250 1.7520 707 - 3704.5000 1.53100 0.00786 1.3140 1.7310 703 - 3705.5000 1.53600 0.00730 1.3330 1.7200 703 - 3706.5000 1.54400 0.00784 1.3230 1.7370 698 - 3707.5000 1.52400 0.00733 1.3160 1.7030 697 - 3708.5000 1.52900 0.00818 1.2850 1.7250 723 - 3709.5000 1.54300 0.00812 1.3090 1.7400 705 - 3710.5000 1.54200 0.00796 1.3150 1.7370 702 - 3711.5000 1.52500 0.00765 1.3230 1.7260 694 - 3712.5000 1.53600 0.00869 1.2910 1.7500 697 - 3713.5000 1.55700 0.00771 1.3460 1.7550 704 - 3714.5000 1.55800 0.00758 1.3410 1.7460 714 - 3715.5000 1.55300 0.00830 1.3230 1.7610 697 - 3716.5000 1.53300 0.00783 1.3260 1.7420 705 - 3717.5000 1.55500 0.00770 1.3410 1.7460 691 - 3718.5000 1.57200 0.00779 1.3600 1.7690 689 - 3719.5000 1.57100 0.00800 1.3420 1.7660 703 - 3720.5000 1.59100 0.00803 1.3680 1.7930 701 - 3721.5000 1.59200 0.00796 1.3910 1.8110 696 - 3722.5000 1.58900 0.00833 1.3690 1.8110 704 - 3723.5000 1.59500 0.00863 1.3800 1.8310 683 - 3724.5000 1.63200 0.00938 1.4100 1.9010 685 - 3725.5000 1.68800 0.01068 1.4580 2.0210 695 - 3726.5000 1.74700 0.01125 1.5000 2.0960 702 - 3727.5000 1.78500 0.01240 1.5440 2.1970 693 - 3728.5000 1.79700 0.01214 1.5450 2.1860 697 - 3729.5000 1.80000 0.01354 1.5490 2.2530 676 - 3730.5000 1.78600 0.01253 1.5080 2.1620 681 - 3731.5000 1.74000 0.01128 1.4880 2.0830 695 - 3732.5000 1.69900 0.00982 1.4540 1.9730 698 - 3733.5000 1.64200 0.00971 1.3840 1.8950 692 - 3734.5000 1.57000 0.00947 1.3240 1.8210 689 - 3735.5000 1.56700 0.00862 1.3260 1.7750 678 - 3736.5000 1.54600 0.00847 1.3260 1.7680 680 - 3737.5000 1.54300 0.00775 1.3300 1.7340 680 - 3738.5000 1.53600 0.00744 1.3290 1.7230 702 - 3739.5000 1.52700 0.00782 1.3060 1.7150 683 - 3740.5000 1.51900 0.00791 1.3210 1.7350 684 - 3741.5000 1.52600 0.00758 1.3170 1.7110 676 - 3742.5000 1.53700 0.00720 1.3440 1.7200 682 - 3743.5000 1.53300 0.00746 1.3560 1.7430 672 - 3744.5000 1.53200 0.00774 1.3120 1.7190 691 - 3745.5000 1.53000 0.00782 1.3040 1.7120 681 - 3746.5000 1.51200 0.00779 1.3020 1.7100 686 - 3747.5000 1.49400 0.00726 1.3020 1.6800 678 - 3748.5000 1.50900 0.00821 1.2830 1.7130 686 - 3749.5000 1.50700 0.00786 1.2910 1.6960 663 - 3750.5000 1.52000 0.00709 1.3160 1.6850 678 - 3751.5000 1.52200 0.00789 1.3000 1.7140 688 - 3752.5000 1.50300 0.00762 1.3070 1.7030 675 - 3753.5000 1.51200 0.00784 1.3070 1.7170 683 - 3754.5000 1.52400 0.00707 1.3400 1.7050 666 - 3755.5000 1.53400 0.00758 1.3390 1.7310 668 - 3756.5000 1.54800 0.00770 1.3360 1.7390 684 - 3757.5000 1.56100 0.00736 1.3560 1.7400 681 - 3758.5000 1.56000 0.00785 1.3340 1.7400 668 - 3759.5000 1.54400 0.00774 1.3170 1.7180 671 - 3760.5000 1.54500 0.00758 1.3070 1.6990 669 - 3761.5000 1.53500 0.00774 1.3130 1.7160 677 - 3762.5000 1.52900 0.00757 1.3130 1.7020 661 - 3763.5000 1.52100 0.00742 1.3040 1.6920 683 - 3764.5000 1.53100 0.00732 1.3330 1.7100 664 - 3765.5000 1.53600 0.00708 1.3190 1.6860 671 - 3766.5000 1.50900 0.00756 1.3040 1.6960 673 - 3767.5000 1.51200 0.00731 1.2950 1.6720 665 - 3768.5000 1.50500 0.00776 1.2900 1.6870 655 - 3769.5000 1.50500 0.00706 1.3090 1.6760 676 - 3770.5000 1.49400 0.00739 1.2835 1.6660 672 - 3771.5000 1.48300 0.00771 1.2580 1.6560 667 - 3772.5000 1.48100 0.00829 1.2520 1.6790 664 - 3773.5000 1.48200 0.00734 1.2720 1.6500 663 - 3774.5000 1.46900 0.00714 1.2650 1.6350 672 - 3775.5000 1.47600 0.00684 1.2800 1.6290 651 - 3776.5000 1.46900 0.00691 1.2920 1.6480 664 - 3777.5000 1.46700 0.00690 1.2900 1.6500 681 - 3778.5000 1.46800 0.00703 1.2760 1.6370 660 - 3779.5000 1.47600 0.00673 1.2900 1.6380 669 - 3780.5000 1.46100 0.00740 1.2740 1.6530 655 - 3781.5000 1.49200 0.00758 1.2800 1.6690 658 - 3782.5000 1.46400 0.00672 1.2910 1.6370 663 - 3783.5000 1.46600 0.00696 1.2820 1.6430 672 - 3784.5000 1.48000 0.00683 1.3000 1.6520 664 - 3785.5000 1.45200 0.00713 1.2650 1.6330 666 - 3786.5000 1.45900 0.00667 1.2600 1.6060 672 - 3787.5000 1.47500 0.00710 1.2560 1.6190 653 - 3788.5000 1.44800 0.00742 1.2500 1.6300 656 - 3789.5000 1.44000 0.00709 1.2480 1.6120 659 - 3790.5000 1.44000 0.00712 1.2480 1.6190 678 - 3791.5000 1.43300 0.00711 1.2360 1.6010 659 - 3792.5000 1.43500 0.00737 1.2430 1.6230 664 - 3793.5000 1.42700 0.00750 1.2290 1.6150 663 - 3794.5000 1.43000 0.00762 1.2070 1.5980 659 - 3795.5000 1.42100 0.00725 1.2350 1.6030 644 - 3796.5000 1.42500 0.00734 1.2200 1.5980 663 - 3797.5000 1.40900 0.00689 1.2100 1.5670 672 - 3798.5000 1.39800 0.00758 1.1910 1.5790 655 - 3799.5000 1.39800 0.00794 1.1690 1.5760 657 - 3800.5000 1.39800 0.00696 1.2120 1.5690 658 - 3801.5000 1.39200 0.00719 1.1860 1.5540 654 - 3802.5000 1.39500 0.00775 1.2020 1.5970 649 - 3803.5000 1.39000 0.00700 1.2000 1.5590 658 - 3804.5000 1.39500 0.00732 1.1990 1.5780 671 - 3805.5000 1.40100 0.00774 1.1930 1.5880 651 - 3806.5000 1.38200 0.00667 1.2250 1.5660 653 - 3807.5000 1.39900 0.00621 1.2430 1.5600 652 - 3808.5000 1.40800 0.00675 1.2400 1.5840 650 - 3809.5000 1.40500 0.00690 1.2370 1.5870 644 - 3810.5000 1.40100 0.00706 1.2270 1.5880 653 - 3811.5000 1.40400 0.00705 1.2110 1.5740 663 - 3812.5000 1.40200 0.00678 1.2200 1.5650 647 - 3813.5000 1.41500 0.00738 1.2330 1.6120 659 - 3814.5000 1.41700 0.00708 1.2210 1.5830 653 - 3815.5000 1.39700 0.00690 1.2300 1.5790 639 - 3816.5000 1.41200 0.00697 1.2340 1.5890 649 - 3817.5000 1.42500 0.00710 1.2310 1.5930 650 - 3818.5000 1.40100 0.00712 1.2120 1.5790 665 - 3819.5000 1.41100 0.00715 1.2150 1.5800 652 - 3820.5000 1.40500 0.00747 1.2180 1.5990 650 - 3821.5000 1.41200 0.00757 1.2120 1.6000 657 - 3822.5000 1.39700 0.00832 1.1850 1.6080 646 - 3823.5000 1.41400 0.00724 1.2270 1.5970 653 - 3824.5000 1.40800 0.00715 1.2040 1.5650 638 - 3825.5000 1.41000 0.00736 1.2020 1.5800 659 - 3826.5000 1.38800 0.00767 1.1890 1.5850 666 - 3827.5000 1.39500 0.00783 1.1970 1.5960 650 - 3828.5000 1.38800 0.00753 1.1940 1.5790 653 - 3829.5000 1.38300 0.00720 1.1960 1.5620 646 - 3830.5000 1.38200 0.00718 1.1830 1.5470 642 - 3831.5000 1.38300 0.00796 1.1650 1.5660 635 - 3832.5000 1.40400 0.00751 1.1990 1.5810 647 - 3833.5000 1.38500 0.00787 1.1560 1.5580 653 - 3834.5000 1.38500 0.00797 1.1640 1.5680 642 - 3835.5000 1.38900 0.00773 1.1650 1.5560 640 - 3836.5000 1.39300 0.00743 1.1870 1.5630 641 - 3837.5000 1.36400 0.00744 1.1650 1.5400 635 - 3838.5000 1.39500 0.00679 1.2000 1.5450 646 - 3839.5000 1.40000 0.00837 1.1700 1.5870 621 - 3840.5000 1.38500 0.00716 1.1860 1.5500 646 - 3841.5000 1.37800 0.00743 1.1820 1.5620 654 - 3842.5000 1.41200 0.00767 1.1840 1.5720 639 - 3843.5000 1.39200 0.00770 1.1760 1.5640 635 - 3844.5000 1.40200 0.00718 1.2210 1.5850 643 - 3845.5000 1.41800 0.00686 1.2480 1.5930 632 - 3846.5000 1.40600 0.00725 1.2200 1.5840 630 - 3847.5000 1.40500 0.00735 1.2000 1.5730 643 - 3848.5000 1.40800 0.00734 1.2080 1.5780 635 - 3849.5000 1.41300 0.00719 1.2270 1.5940 651 - 3850.5000 1.42200 0.00788 1.1990 1.5960 634 - 3851.5000 1.42900 0.00760 1.2200 1.6030 635 - 3852.5000 1.42000 0.00696 1.2550 1.6050 632 - 3853.5000 1.43200 0.00713 1.2490 1.6090 638 - 3854.5000 1.43200 0.00732 1.2330 1.5980 622 - 3855.5000 1.43000 0.00737 1.2450 1.6180 640 - 3856.5000 1.43200 0.00711 1.2460 1.6060 641 - 3857.5000 1.44700 0.00787 1.2450 1.6410 633 - 3858.5000 1.44500 0.00750 1.2420 1.6190 631 - 3859.5000 1.46000 0.00725 1.2670 1.6310 630 - 3860.5000 1.46600 0.00749 1.2630 1.6370 624 - 3861.5000 1.44700 0.00707 1.2720 1.6260 627 - 3862.5000 1.46600 0.00771 1.2600 1.6430 617 - 3863.5000 1.48700 0.00806 1.2850 1.6900 631 - 3864.5000 1.49300 0.00799 1.2990 1.7030 639 - 3865.5000 1.52700 0.00808 1.3240 1.7310 635 - 3866.5000 1.55800 0.00782 1.3620 1.7540 628 - 3867.5000 1.55000 0.00893 1.3270 1.7730 624 - 3868.5000 1.57100 0.00931 1.3530 1.8190 626 - 3869.5000 1.58100 0.00950 1.3690 1.8470 633 - 3870.5000 1.57500 0.00904 1.3630 1.8110 614 - 3871.5000 1.55500 0.00859 1.3440 1.7750 629 - 3872.5000 1.50600 0.00785 1.3210 1.7120 621 - 3873.5000 1.47900 0.00856 1.2790 1.7110 637 - 3874.5000 1.46200 0.00729 1.2800 1.6440 623 - 3875.5000 1.46900 0.00785 1.2530 1.6440 621 - 3876.5000 1.44900 0.00746 1.2350 1.6100 632 - 3877.5000 1.42000 0.00760 1.2240 1.6020 619 - 3878.5000 1.42800 0.00783 1.2310 1.6200 617 - 3879.5000 1.43100 0.00748 1.2410 1.6110 612 - 3880.5000 1.42400 0.00725 1.2360 1.5990 627 - 3881.5000 1.40800 0.00731 1.2250 1.5920 631 - 3882.5000 1.38400 0.00765 1.1900 1.5680 611 - 3883.5000 1.40600 0.00724 1.2210 1.5820 621 - 3884.5000 1.40200 0.00740 1.2200 1.5880 619 - 3885.5000 1.39300 0.00760 1.1940 1.5690 609 - 3886.5000 1.39600 0.00751 1.2140 1.5890 623 - 3887.5000 1.39000 0.00735 1.2130 1.5750 606 - 3888.5000 1.41800 0.00737 1.2270 1.5940 620 - 3889.5000 1.40300 0.00787 1.2280 1.6200 620 - 3890.5000 1.41200 0.00821 1.2080 1.6170 620 - 3891.5000 1.40000 0.00769 1.2200 1.6010 613 - 3892.5000 1.38700 0.00754 1.1930 1.5670 615 - 3893.5000 1.39900 0.00679 1.2170 1.5550 619 - 3894.5000 1.36600 0.00719 1.1900 1.5450 609 - 3895.5000 1.38000 0.00729 1.1910 1.5530 616 - 3896.5000 1.37400 0.00688 1.2110 1.5470 597 - 3897.5000 1.38100 0.00679 1.2000 1.5370 615 - 3898.5000 1.35900 0.00675 1.1840 1.5200 620 - 3899.5000 1.37600 0.00720 1.1830 1.5390 611 - 3900.5000 1.37100 0.00726 1.1780 1.5380 615 - 3901.5000 1.36700 0.00719 1.1700 1.5280 619 - 3902.5000 1.36300 0.00716 1.1870 1.5400 608 - 3903.5000 1.35800 0.00703 1.1750 1.5230 613 - 3904.5000 1.36200 0.00685 1.2040 1.5370 591 - 3905.5000 1.36600 0.00718 1.1840 1.5370 604 - 3906.5000 1.33700 0.00663 1.1540 1.4830 615 - 3907.5000 1.33000 0.00760 1.1200 1.4970 615 - 3908.5000 1.34100 0.00695 1.1790 1.5200 601 - 3909.5000 1.33900 0.00683 1.1740 1.5110 608 - 3910.5000 1.35300 0.00675 1.1860 1.5190 609 - 3911.5000 1.37200 0.00672 1.1930 1.5220 600 - 3912.5000 1.35200 0.00707 1.1640 1.5130 610 - 3913.5000 1.34700 0.00667 1.1820 1.5070 594 - 3914.5000 1.34400 0.00662 1.1930 1.5170 598 - 3915.5000 1.33600 0.00675 1.1630 1.4960 608 - 3916.5000 1.33600 0.00724 1.1520 1.5090 608 - 3917.5000 1.33900 0.00680 1.1670 1.4990 596 - 3918.5000 1.33000 0.00713 1.1420 1.4940 610 - 3919.5000 1.33000 0.00662 1.1550 1.4790 598 - 3920.5000 1.30700 0.00715 1.1330 1.4850 606 - 3921.5000 1.32300 0.00716 1.1430 1.4930 597 - 3922.5000 1.32100 0.00709 1.1430 1.4900 598 - 3923.5000 1.30700 0.00716 1.1200 1.4650 580 - 3924.5000 1.30800 0.00705 1.1380 1.4850 605 - 3925.5000 1.29900 0.00739 1.1110 1.4750 606 - 3926.5000 1.30700 0.00674 1.1330 1.4630 599 - 3927.5000 1.29200 0.00786 1.0990 1.4830 597 - 3928.5000 1.29500 0.00771 1.1020 1.4780 594 - 3929.5000 1.28400 0.00705 1.1050 1.4530 609 - 3930.5000 1.29300 0.00709 1.1040 1.4480 588 - 3931.5000 1.27800 0.00787 1.0710 1.4570 602 - 3932.5000 1.25400 0.00788 1.0620 1.4410 578 - 3933.5000 1.27400 0.00759 1.0630 1.4330 594 - 3934.5000 1.26800 0.00733 1.0750 1.4330 596 - 3935.5000 1.26500 0.00793 1.0630 1.4540 608 - 3936.5000 1.27100 0.00762 1.0760 1.4450 586 - 3937.5000 1.26100 0.00788 1.0590 1.4450 600 - 3938.5000 1.27300 0.00778 1.0810 1.4610 596 - 3939.5000 1.28600 0.00730 1.1010 1.4590 601 - 3940.5000 1.29200 0.00732 1.0980 1.4530 588 - 3941.5000 1.28500 0.00706 1.1210 1.4650 593 - 3942.5000 1.29600 0.00765 1.1160 1.4840 578 - 3943.5000 1.30800 0.00703 1.1160 1.4570 588 - 3944.5000 1.28700 0.00684 1.1280 1.4590 586 - 3945.5000 1.30300 0.00691 1.1190 1.4600 608 - 3946.5000 1.31600 0.00720 1.1440 1.4910 581 - 3947.5000 1.29800 0.00683 1.1330 1.4650 591 - 3948.5000 1.29800 0.00692 1.1240 1.4590 586 - 3949.5000 1.31800 0.00700 1.1450 1.4870 597 - 3950.5000 1.30300 0.00654 1.1530 1.4710 591 - 3951.5000 1.30700 0.00693 1.1390 1.4770 595 - 3952.5000 1.30600 0.00670 1.1540 1.4760 577 - 3953.5000 1.30900 0.00633 1.1540 1.4620 592 - 3954.5000 1.33800 0.00691 1.1660 1.4990 581 - 3955.5000 1.33100 0.00697 1.1640 1.5060 602 - 3956.5000 1.32200 0.00682 1.1790 1.5080 581 - 3957.5000 1.32200 0.00721 1.1480 1.4990 593 - 3958.5000 1.32200 0.00670 1.1630 1.4880 589 - 3959.5000 1.32700 0.00686 1.1530 1.4870 593 - 3960.5000 1.33700 0.00726 1.1600 1.5100 581 - 3961.5000 1.33600 0.00718 1.1560 1.5040 588 - 3962.5000 1.32700 0.00747 1.1520 1.5070 565 - 3963.5000 1.32600 0.00811 1.1160 1.5090 587 - 3964.5000 1.34000 0.00771 1.1460 1.5210 592 - 3965.5000 1.33700 0.00758 1.1520 1.5190 586 - 3966.5000 1.33500 0.00776 1.1430 1.5190 587 - 3967.5000 1.36400 0.00843 1.1550 1.5640 589 - 3968.5000 1.34700 0.00907 1.1260 1.5630 580 - 3969.5000 1.33400 0.00773 1.1470 1.5220 589 - 3970.5000 1.32100 0.00849 1.1150 1.5230 577 - 3971.5000 1.30900 0.00830 1.1170 1.5190 587 - 3972.5000 1.29800 0.00799 1.1150 1.5000 581 - 3973.5000 1.28000 0.00741 1.1100 1.4640 570 - 3974.5000 1.28100 0.00772 1.1020 1.4730 578 - 3975.5000 1.27900 0.00713 1.1030 1.4470 582 - 3976.5000 1.27900 0.00657 1.1150 1.4360 596 - 3977.5000 1.31400 0.00815 1.1020 1.4910 570 - 3978.5000 1.27500 0.00692 1.1020 1.4380 589 - 3979.5000 1.28400 0.00690 1.1250 1.4560 576 - 3980.5000 1.28900 0.00708 1.1270 1.4680 580 - 3981.5000 1.28000 0.00697 1.1130 1.4460 570 - 3982.5000 1.29700 0.00753 1.1040 1.4670 581 - 3983.5000 1.27800 0.00642 1.1290 1.4360 571 - 3984.5000 1.28800 0.00691 1.1120 1.4420 570 - 3985.5000 1.26900 0.00655 1.1150 1.4300 578 - 3986.5000 1.26300 0.00662 1.1150 1.4330 577 - 3987.5000 1.26600 0.00653 1.1290 1.4480 596 - 3988.5000 1.25500 0.00685 1.0910 1.4180 570 - 3989.5000 1.27100 0.00601 1.1210 1.4100 579 - 3990.5000 1.25800 0.00662 1.1070 1.4240 574 - 3991.5000 1.26200 0.00628 1.1130 1.4170 585 - 3992.5000 1.28800 0.00619 1.1430 1.4380 567 - 3993.5000 1.25700 0.00660 1.1180 1.4350 576 - 3994.5000 1.25000 0.00663 1.1040 1.4200 568 - 3995.5000 1.25700 0.00656 1.1210 1.4320 562 - 3996.5000 1.26600 0.00653 1.1170 1.4300 575 - 3997.5000 1.25300 0.00691 1.0860 1.4170 574 - 3998.5000 1.24100 0.00677 1.0870 1.4110 572 - 3999.5000 1.23300 0.00681 1.0850 1.4110 573 - 4000.5000 1.27000 0.00676 1.1090 1.4290 561 - 4001.5000 1.25700 0.00710 1.0910 1.4300 570 - 4002.5000 1.24600 0.00677 1.0970 1.4200 569 - 4003.5000 1.26100 0.00666 1.1080 1.4280 578 - 4004.5000 1.23600 0.00712 1.0720 1.4080 556 - 4005.5000 1.23100 0.00677 1.0600 1.3840 573 - 4006.5000 1.24600 0.00663 1.0790 1.3920 557 - 4007.5000 1.24400 0.00709 1.0780 1.4130 558 - 4008.5000 1.22100 0.00705 1.0690 1.4060 571 - 4009.5000 1.24100 0.00668 1.0820 1.4010 570 - 4010.5000 1.23600 0.00669 1.0780 1.3980 572 - 4011.5000 1.23700 0.00651 1.0770 1.3880 571 - 4012.5000 1.24800 0.00681 1.0960 1.4190 563 - 4013.5000 1.23600 0.00661 1.0770 1.3920 568 - 4014.5000 1.23300 0.00714 1.0720 1.4110 564 - 4015.5000 1.22700 0.00664 1.0670 1.3840 570 - 4016.5000 1.24700 0.00703 1.0820 1.4110 547 - 4017.5000 1.25600 0.00722 1.0910 1.4350 568 - 4018.5000 1.24700 0.00724 1.0880 1.4330 567 - 4019.5000 1.24300 0.00678 1.0880 1.4050 546 - 4020.5000 1.24900 0.00666 1.0830 1.4000 567 - 4021.5000 1.23800 0.00731 1.0610 1.4080 563 - 4022.5000 1.23600 0.00794 1.0530 1.4310 566 - 4023.5000 1.23600 0.00720 1.0740 1.4170 567 - 4024.5000 1.25400 0.00643 1.1010 1.4030 551 - 4025.5000 1.23200 0.00683 1.0580 1.3820 563 - 4026.5000 1.22500 0.00666 1.0750 1.3890 556 - 4027.5000 1.23700 0.00680 1.0850 1.4070 561 - 4028.5000 1.24900 0.00662 1.0810 1.3930 556 - 4029.5000 1.22900 0.00684 1.0770 1.3980 551 - 4030.5000 1.23900 0.00698 1.0660 1.3970 562 - 4031.5000 1.23800 0.00656 1.0830 1.3900 548 - 4032.5000 1.21400 0.00748 1.0400 1.3910 550 - 4033.5000 1.20800 0.00691 1.0560 1.3830 560 - 4034.5000 1.20000 0.00696 1.0490 1.3780 559 - 4035.5000 1.21000 0.00687 1.0670 1.3930 563 - 4036.5000 1.22900 0.00687 1.0710 1.3980 567 - 4037.5000 1.23500 0.00665 1.0640 1.3770 554 - 4038.5000 1.23000 0.00725 1.0660 1.4100 563 - 4039.5000 1.23400 0.00703 1.0610 1.3910 551 - 4040.5000 1.23400 0.00692 1.0540 1.3820 561 - 4041.5000 1.23300 0.00690 1.0790 1.4040 555 - 4042.5000 1.22800 0.00685 1.0810 1.4030 552 - 4043.5000 1.21900 0.00672 1.0820 1.3990 556 - 4044.5000 1.20800 0.00706 1.0590 1.3900 550 - 4045.5000 1.22500 0.00712 1.0790 1.4100 540 - 4046.5000 1.20800 0.00642 1.0650 1.3680 557 - 4047.5000 1.20100 0.00710 1.0560 1.3900 553 - 4048.5000 1.21500 0.00657 1.0590 1.3670 550 - 4049.5000 1.21900 0.00637 1.0750 1.3790 569 - 4050.5000 1.23200 0.00720 1.0660 1.4030 547 - 4051.5000 1.22600 0.00743 1.0530 1.4040 558 - 4052.5000 1.23200 0.00710 1.0650 1.3990 553 - 4053.5000 1.21700 0.00670 1.0720 1.3870 553 - 4054.5000 1.22800 0.00704 1.0720 1.4050 559 - 4055.5000 1.23000 0.00649 1.0780 1.3810 545 - 4056.5000 1.23200 0.00660 1.0760 1.3860 552 - 4057.5000 1.23200 0.00699 1.0590 1.3870 551 - 4058.5000 1.20900 0.00726 1.0340 1.3740 548 - 4059.5000 1.21200 0.00694 1.0530 1.3740 535 - 4060.5000 1.21100 0.00688 1.0520 1.3750 551 - 4061.5000 1.23300 0.00690 1.0800 1.4040 551 - 4062.5000 1.21500 0.00679 1.0540 1.3710 545 - 4063.5000 1.22700 0.00639 1.0730 1.3760 562 - 4064.5000 1.23000 0.00675 1.0670 1.3840 551 - 4065.5000 1.22200 0.00653 1.0810 1.3840 538 - 4066.5000 1.23000 0.00691 1.0700 1.3960 557 - 4067.5000 1.23300 0.00685 1.0860 1.4070 549 - 4068.5000 1.25200 0.00741 1.0830 1.4310 551 - 4069.5000 1.24900 0.00693 1.0860 1.4130 556 - 4070.5000 1.27500 0.00759 1.1010 1.4520 534 - 4071.5000 1.26500 0.00672 1.0990 1.4150 552 - 4072.5000 1.27200 0.00725 1.0870 1.4260 547 - 4073.5000 1.25100 0.00697 1.0950 1.4170 533 - 4074.5000 1.25500 0.00689 1.0840 1.4050 543 - 4075.5000 1.25900 0.00714 1.0950 1.4280 544 - 4076.5000 1.25300 0.00737 1.0900 1.4340 545 - 4077.5000 1.24600 0.00719 1.0740 1.4070 537 - 4078.5000 1.26100 0.00685 1.1070 1.4290 552 - 4079.5000 1.26000 0.00698 1.1020 1.4260 538 - 4080.5000 1.26100 0.00712 1.1160 1.4430 527 - 4081.5000 1.28200 0.00599 1.1360 1.4140 539 - 4082.5000 1.27600 0.00669 1.1190 1.4290 537 - 4083.5000 1.24300 0.00674 1.0980 1.4100 535 - 4084.5000 1.26500 0.00684 1.1060 1.4240 541 - 4085.5000 1.28800 0.00665 1.1330 1.4390 529 - 4086.5000 1.27600 0.00693 1.1190 1.4410 540 - 4087.5000 1.28000 0.00734 1.1160 1.4560 537 - 4088.5000 1.30700 0.00731 1.1280 1.4660 534 - 4089.5000 1.28000 0.00755 1.0950 1.4400 522 - 4090.5000 1.30800 0.00765 1.1180 1.4710 532 - 4091.5000 1.31400 0.00750 1.1440 1.4890 529 - 4092.5000 1.31500 0.00840 1.1100 1.4980 533 - 4093.5000 1.31000 0.00740 1.1370 1.4770 528 - 4094.5000 1.31600 0.00691 1.1500 1.4710 540 - 4095.5000 1.32500 0.00710 1.1570 1.4850 534 - 4096.5000 1.30600 0.00740 1.1350 1.4740 524 - 4097.5000 1.32700 0.00764 1.1370 1.4890 530 - 4098.5000 1.33100 0.00754 1.1450 1.4900 523 - 4099.5000 1.31700 0.00726 1.1530 1.4860 526 - 4100.5000 1.31400 0.00748 1.1380 1.4820 529 - 4101.5000 1.31700 0.00754 1.1370 1.4850 532 - 4102.5000 1.31400 0.00812 1.1460 1.5140 514 - 4103.5000 1.33500 0.00750 1.1760 1.5220 532 - 4104.5000 1.31900 0.00758 1.1620 1.5110 530 - 4105.5000 1.30500 0.00738 1.1310 1.4690 525 - 4106.5000 1.30000 0.00798 1.1210 1.4820 512 - 4107.5000 1.30000 0.00719 1.1390 1.4690 526 - 4108.5000 1.27900 0.00768 1.1280 1.4800 525 - 4109.5000 1.30300 0.00758 1.1290 1.4780 530 - 4110.5000 1.29400 0.00702 1.1390 1.4580 516 - 4111.5000 1.29500 0.00658 1.1470 1.4520 537 - 4112.5000 1.28800 0.00698 1.1320 1.4530 529 - 4113.5000 1.28000 0.00690 1.1230 1.4370 518 - 4114.5000 1.30100 0.00770 1.1210 1.4750 528 - 4115.5000 1.28300 0.00730 1.1190 1.4520 520 - 4116.5000 1.28500 0.00723 1.1180 1.4480 521 - 4117.5000 1.27300 0.00692 1.1160 1.4320 521 - 4118.5000 1.27000 0.00719 1.1110 1.4430 533 - 4119.5000 1.26800 0.00721 1.1150 1.4430 518 - 4120.5000 1.26200 0.00740 1.0930 1.4290 515 - 4121.5000 1.25500 0.00673 1.1190 1.4270 524 - 4122.5000 1.24900 0.00708 1.0980 1.4220 524 - 4123.5000 1.26000 0.00740 1.1040 1.4400 516 - 4124.5000 1.26300 0.00734 1.1090 1.4390 506 - 4125.5000 1.24400 0.00726 1.0940 1.4250 520 - 4126.5000 1.24300 0.00757 1.0850 1.4310 522 - 4127.5000 1.25800 0.00701 1.1140 1.4330 518 - 4128.5000 1.25200 0.00708 1.0830 1.4060 521 - 4129.5000 1.24200 0.00688 1.0810 1.3950 520 - 4130.5000 1.22900 0.00750 1.0600 1.4030 523 - 4131.5000 1.21300 0.00707 1.0490 1.3710 519 - 4132.5000 1.21900 0.00672 1.0600 1.3650 515 - 4133.5000 1.21500 0.00690 1.0600 1.3750 521 - 4134.5000 1.20500 0.00674 1.0700 1.3760 516 - 4135.5000 1.21500 0.00733 1.0530 1.3840 510 - 4136.5000 1.18500 0.00715 1.0470 1.3720 517 - 4137.5000 1.21600 0.00707 1.0710 1.3930 518 - 4138.5000 1.21500 0.00671 1.0700 1.3750 516 - 4139.5000 1.19300 0.00689 1.0490 1.3580 503 - 4140.5000 1.20000 0.00742 1.0380 1.3730 510 - 4141.5000 1.20500 0.00736 1.0400 1.3730 512 - 4142.5000 1.19600 0.00644 1.0430 1.3340 510 - 4143.5000 1.19800 0.00719 1.0380 1.3600 502 - 4144.5000 1.18500 0.00696 1.0390 1.3500 499 - 4145.5000 1.17800 0.00667 1.0390 1.3400 509 - 4146.5000 1.17900 0.00650 1.0380 1.3320 512 - 4147.5000 1.17200 0.00712 1.0310 1.3500 502 - 4148.5000 1.17400 0.00671 1.0190 1.3220 510 - 4149.5000 1.19600 0.00636 1.0420 1.3270 502 - 4150.5000 1.17600 0.00671 1.0350 1.3400 516 - 4151.5000 1.15200 0.00716 0.9860 1.3120 518 - 4152.5000 1.16900 0.00709 1.0150 1.3340 506 - 4153.5000 1.19800 0.00721 1.0260 1.3490 502 - 4154.5000 1.17300 0.00737 1.0150 1.3490 514 - 4155.5000 1.16600 0.00676 1.0140 1.3170 503 - 4156.5000 1.17700 0.00625 1.0440 1.3250 505 - 4157.5000 1.16700 0.00724 1.0140 1.3390 504 - 4158.5000 1.16000 0.00682 1.0120 1.3190 507 - 4159.5000 1.16800 0.00755 1.0110 1.3510 507 - 4160.5000 1.18600 0.00671 1.0360 1.3360 499 - 4161.5000 1.17900 0.00716 1.0260 1.3460 500 - 4162.5000 1.16200 0.00661 1.0320 1.3290 505 - 4163.5000 1.17800 0.00757 1.0360 1.3750 501 - 4164.5000 1.18400 0.00743 1.0140 1.3450 496 - 4165.5000 1.19500 0.00734 1.0240 1.3510 496 - 4166.5000 1.18900 0.00798 1.0220 1.3750 489 - 4167.5000 1.18800 0.00760 1.0260 1.3640 494 - 4168.5000 1.18200 0.00736 1.0260 1.3530 493 - 4169.5000 1.18200 0.00794 1.0140 1.3680 497 - 4170.5000 1.17600 0.00700 1.0250 1.3370 496 - 4171.5000 1.17000 0.00745 1.0090 1.3400 494 - 4172.5000 1.16800 0.00805 1.0050 1.3640 497 - 4173.5000 1.18800 0.00729 1.0150 1.3420 503 - 4174.5000 1.16800 0.00744 1.0040 1.3380 504 - 4175.5000 1.18200 0.00737 1.0310 1.3600 498 - 4176.5000 1.16800 0.00722 1.0120 1.3320 491 - 4177.5000 1.17100 0.00674 1.0260 1.3260 495 - 4178.5000 1.17200 0.00764 1.0060 1.3480 501 - 4179.5000 1.19000 0.00809 1.0190 1.3790 495 - 4180.5000 1.18100 0.00777 1.0170 1.3630 496 - 4181.5000 1.17300 0.00791 1.0070 1.3580 492 - 4182.5000 1.17000 0.00759 1.0090 1.3470 496 - 4183.5000 1.16300 0.00779 1.0010 1.3490 499 - 4184.5000 1.17800 0.00715 1.0150 1.3340 498 - 4185.5000 1.17100 0.00730 1.0130 1.3350 487 - 4186.5000 1.17900 0.00796 1.0050 1.3580 492 - 4187.5000 1.15400 0.00798 0.9940 1.3470 489 - 4188.5000 1.15100 0.00777 0.9890 1.3340 493 - 4189.5000 1.16700 0.00721 1.0100 1.3290 490 - 4190.5000 1.17500 0.00764 1.0030 1.3420 492 - 4191.5000 1.15400 0.00717 1.0040 1.3190 482 - 4192.5000 1.14700 0.00678 0.9880 1.2870 486 - 4193.5000 1.15200 0.00731 1.0000 1.3250 494 - 4194.5000 1.15800 0.00727 1.0110 1.3330 491 - 4195.5000 1.14900 0.00721 0.9950 1.3150 492 - 4196.5000 1.12900 0.00784 0.9940 1.3390 484 - 4197.5000 1.13400 0.00721 0.9560 1.2770 496 - 4198.5000 1.13400 0.00797 0.9670 1.3190 488 - 4199.5000 1.14400 0.00769 0.9820 1.3220 489 - 4200.5000 1.12700 0.00704 0.9850 1.2960 488 - 4201.5000 1.11300 0.00686 0.9870 1.2900 488 - 4202.5000 1.12900 0.00781 0.9530 1.2980 488 - 4203.5000 1.11900 0.00697 0.9750 1.2810 482 - 4204.5000 1.13200 0.00734 0.9700 1.2920 481 - 4205.5000 1.14200 0.00696 0.9880 1.2960 490 - 4206.5000 1.12400 0.00718 0.9750 1.2920 487 - 4207.5000 1.13500 0.00746 0.9730 1.3010 483 - 4208.5000 1.13600 0.00682 0.9790 1.2780 480 - 4209.5000 1.13800 0.00716 0.9720 1.2870 484 - 4210.5000 1.12000 0.00711 0.9620 1.2760 487 - 4211.5000 1.12600 0.00751 0.9590 1.2900 486 - 4212.5000 1.14400 0.00721 0.9910 1.3100 489 - 4213.5000 1.13000 0.00717 0.9800 1.2960 485 - 4214.5000 1.13100 0.00708 0.9910 1.3000 476 - 4215.5000 1.14100 0.00708 1.0010 1.3110 479 - 4216.5000 1.14700 0.00704 1.0150 1.3240 482 - 4217.5000 1.14500 0.00767 0.9830 1.3200 483 - 4218.5000 1.14700 0.00677 1.0180 1.3150 481 - 4219.5000 1.12300 0.00701 0.9800 1.2880 483 - 4220.5000 1.13800 0.00739 0.9780 1.3020 481 - 4221.5000 1.16600 0.00742 1.0010 1.3270 482 - 4222.5000 1.17200 0.00755 1.0060 1.3360 477 - 4223.5000 1.14400 0.00732 0.9860 1.3060 478 - 4224.5000 1.13900 0.00703 0.9870 1.2960 483 - 4225.5000 1.12200 0.00715 0.9800 1.2940 482 - 4226.5000 1.12900 0.00671 0.9950 1.2900 483 - 4227.5000 1.11500 0.00786 0.9610 1.3070 485 - 4228.5000 1.12600 0.00758 0.9510 1.2830 479 - 4229.5000 1.17100 0.00773 0.9880 1.3260 478 - 4230.5000 1.15400 0.00852 0.9920 1.3660 482 - 4231.5000 1.16200 0.00771 0.9980 1.3350 478 - 4232.5000 1.18000 0.00847 0.9910 1.3620 480 - 4233.5000 1.17900 0.00760 1.0070 1.3410 483 - 4234.5000 1.17100 0.00780 1.0020 1.3430 478 - 4235.5000 1.16100 0.00753 0.9940 1.3250 483 - 4236.5000 1.16700 0.00799 0.9860 1.3360 480 - 4237.5000 1.17400 0.00736 1.0230 1.3440 476 - 4238.5000 1.16200 0.00717 1.0200 1.3330 477 - 4239.5000 1.17100 0.00760 1.0160 1.3470 474 - 4240.5000 1.18100 0.00780 1.0140 1.3560 481 - 4241.5000 1.18300 0.00757 1.0260 1.3600 487 - 4242.5000 1.17500 0.00670 1.0250 1.3160 472 - 4243.5000 1.19000 0.00722 1.0220 1.3370 476 - 4244.5000 1.18300 0.00746 1.0240 1.3500 477 - 4245.5000 1.18800 0.00740 1.0220 1.3430 471 - 4246.5000 1.19900 0.00776 1.0270 1.3650 474 - 4247.5000 1.19500 0.00727 1.0320 1.3490 475 - 4248.5000 1.16200 0.00779 0.9990 1.3370 471 - 4249.5000 1.14400 0.00713 0.9940 1.3050 476 - 4250.5000 1.16400 0.00773 0.9760 1.3120 472 - 4251.5000 1.15100 0.00750 0.9910 1.3170 472 - 4252.5000 1.15200 0.00797 0.9910 1.3360 468 - 4253.5000 1.14300 0.00793 0.9760 1.3180 465 - 4254.5000 1.16200 0.00801 0.9750 1.3210 467 - 4255.5000 1.15900 0.00702 1.0110 1.3140 466 - 4256.5000 1.13700 0.00716 0.9850 1.2960 472 - 4257.5000 1.17100 0.00730 1.0060 1.3220 468 - 4258.5000 1.15000 0.00697 1.0130 1.3140 466 - 4259.5000 1.14700 0.00770 0.9890 1.3220 467 - 4260.5000 1.16900 0.00743 1.0060 1.3290 472 - 4261.5000 1.14300 0.00758 1.0030 1.3300 465 - 4262.5000 1.14700 0.00768 0.9770 1.3090 467 - 4263.5000 1.14400 0.00825 0.9790 1.3370 471 - 4264.5000 1.16600 0.00745 1.0050 1.3270 467 - 4265.5000 1.17200 0.00745 1.0180 1.3360 456 - 4266.5000 1.17900 0.00828 1.0070 1.3630 462 - 4267.5000 1.15300 0.00814 1.0100 1.3590 459 - 4268.5000 1.15700 0.00741 1.0110 1.3300 463 - 4269.5000 1.15900 0.00747 0.9910 1.3120 462 - 4270.5000 1.14300 0.00789 0.9770 1.3160 462 - 4271.5000 1.16600 0.00790 0.9890 1.3290 463 - 4272.5000 1.14900 0.00776 0.9810 1.3160 466 - 4273.5000 1.15600 0.00688 0.9910 1.2870 463 - 4274.5000 1.15100 0.00651 1.0180 1.2960 456 - 4275.5000 1.14200 0.00747 0.9920 1.3120 459 - 4276.5000 1.15700 0.00770 0.9860 1.3140 454 - 4277.5000 1.17300 0.00767 1.0030 1.3340 465 - 4278.5000 1.16900 0.00700 1.0260 1.3260 459 - 4279.5000 1.15700 0.00743 1.0120 1.3310 461 - 4280.5000 1.18200 0.00843 1.0030 1.3620 453 - 4281.5000 1.18000 0.00789 1.0270 1.3630 453 - 4282.5000 1.18000 0.00750 1.0210 1.3410 455 - 4283.5000 1.18600 0.00727 1.0460 1.3560 455 - 4284.5000 1.17800 0.00744 1.0250 1.3410 451 - 4285.5000 1.18700 0.00761 1.0350 1.3580 450 - 4286.5000 1.21400 0.00780 1.0370 1.3670 448 - 4287.5000 1.19600 0.00832 1.0270 1.3830 458 - 4288.5000 1.17900 0.00755 1.0180 1.3390 452 - 4289.5000 1.18000 0.00709 1.0470 1.3480 451 - 4290.5000 1.18500 0.00747 1.0370 1.3540 450 - 4291.5000 1.20700 0.00752 1.0330 1.3520 450 - 4292.5000 1.17800 0.00796 1.0240 1.3620 451 - 4293.5000 1.17500 0.00788 1.0230 1.3580 452 - 4294.5000 1.20100 0.00740 1.0450 1.3590 450 - 4295.5000 1.20300 0.00684 1.0470 1.3360 446 - 4296.5000 1.20400 0.00793 1.0430 1.3800 452 - 4297.5000 1.21500 0.00881 1.0240 1.3970 448 - 4298.5000 1.19500 0.00768 1.0430 1.3690 451 - 4299.5000 1.20100 0.00781 1.0310 1.3640 454 - 4300.5000 1.19900 0.00853 1.0350 1.3990 455 - 4301.5000 1.18900 0.00774 1.0180 1.3460 449 - 4302.5000 1.17500 0.00768 1.0250 1.3490 445 - 4303.5000 1.19200 0.00768 1.0260 1.3510 448 - 4304.5000 1.19500 0.00800 1.0270 1.3650 446 - 4305.5000 1.20600 0.00803 1.0490 1.3910 453 - 4306.5000 1.20200 0.00807 1.0400 1.3800 444 - 4307.5000 1.18800 0.00828 1.0270 1.3770 447 - 4308.5000 1.21200 0.00762 1.0400 1.3630 449 - 4309.5000 1.24200 0.00822 1.0540 1.4010 445 - 4310.5000 1.24300 0.00796 1.0660 1.4010 443 - 4311.5000 1.23000 0.00724 1.0870 1.3920 444 - 4312.5000 1.23100 0.00785 1.0680 1.3990 444 - 4313.5000 1.26300 0.00736 1.0900 1.4010 446 - 4314.5000 1.24600 0.00754 1.1000 1.4190 448 - 4315.5000 1.26700 0.00752 1.0930 1.4090 442 - 4316.5000 1.30700 0.00754 1.1170 1.4340 442 - 4317.5000 1.28600 0.00777 1.1110 1.4390 445 - 4318.5000 1.30200 0.00737 1.1460 1.4570 445 - 4319.5000 1.31600 0.00830 1.1390 1.4890 445 - 4320.5000 1.33100 0.00790 1.1510 1.4830 442 - 4321.5000 1.31700 0.00785 1.1500 1.4810 445 - 4322.5000 1.32200 0.00804 1.1340 1.4730 445 - 4323.5000 1.32200 0.00779 1.1380 1.4660 443 - 4324.5000 1.33500 0.00786 1.1510 1.4820 443 - 4325.5000 1.33300 0.00816 1.1460 1.4900 444 - 4326.5000 1.31900 0.00771 1.1620 1.4860 441 - 4327.5000 1.33300 0.00797 1.1740 1.5090 442 - 4328.5000 1.33100 0.00788 1.1770 1.5080 441 - 4329.5000 1.36000 0.00822 1.1910 1.5360 440 - 4330.5000 1.36800 0.00806 1.1830 1.5220 442 - 4331.5000 1.39000 0.00885 1.1890 1.5600 439 - 4332.5000 1.40200 0.00815 1.2160 1.5580 440 - 4333.5000 1.41300 0.00851 1.2190 1.5750 437 - 4334.5000 1.41900 0.00843 1.2490 1.6030 441 - 4335.5000 1.42300 0.00870 1.2310 1.5960 440 - 4336.5000 1.42100 0.00944 1.2150 1.6100 438 - 4337.5000 1.44700 0.00962 1.2370 1.6390 437 - 4338.5000 1.46100 0.00922 1.2700 1.6550 436 - 4339.5000 1.47600 0.00977 1.2820 1.6900 436 - 4340.5000 1.48400 0.01118 1.2690 1.7370 438 - 4341.5000 1.50200 0.01066 1.2700 1.7150 436 - 4342.5000 1.48800 0.01064 1.2690 1.7130 435 - 4343.5000 1.45900 0.01004 1.2700 1.6880 433 - 4344.5000 1.48400 0.00920 1.2850 1.6680 433 - 4345.5000 1.47500 0.00923 1.2930 1.6770 433 - 4346.5000 1.42300 0.00971 1.2390 1.6420 431 - 4347.5000 1.41100 0.00888 1.2300 1.6000 434 - 4348.5000 1.44000 0.00874 1.2690 1.6330 434 - 4349.5000 1.42500 0.00831 1.2550 1.6010 433 - 4350.5000 1.42600 0.00731 1.2650 1.5680 430 - 4351.5000 1.41300 0.00817 1.2490 1.5880 430 - 4352.5000 1.40700 0.00803 1.2460 1.5800 433 - 4353.5000 1.39500 0.00865 1.2090 1.5700 435 - 4354.5000 1.38500 0.00826 1.2180 1.5620 434 - 4355.5000 1.39700 0.00754 1.2470 1.5610 433 - 4356.5000 1.40200 0.00920 1.1940 1.5770 433 - 4357.5000 1.38300 0.00894 1.1910 1.5640 435 - 4358.5000 1.39700 0.00850 1.2110 1.5640 431 - 4359.5000 1.39500 0.00826 1.2110 1.5540 431 - 4360.5000 1.40800 0.00877 1.2050 1.5690 431 - 4361.5000 1.40600 0.00750 1.2450 1.5560 430 - 4362.5000 1.40200 0.00816 1.2350 1.5740 432 - 4363.5000 1.39900 0.00896 1.2250 1.5970 431 - 4364.5000 1.39800 0.00865 1.2220 1.5800 428 - 4365.5000 1.38100 0.00807 1.2210 1.5550 428 - 4366.5000 1.38500 0.00806 1.2150 1.5490 429 - 4367.5000 1.37400 0.00785 1.1940 1.5190 428 - 4368.5000 1.33900 0.00799 1.1700 1.5000 426 - 4369.5000 1.33300 0.00809 1.1560 1.4910 429 - 4370.5000 1.31300 0.00806 1.1470 1.4810 429 - 4371.5000 1.29700 0.00781 1.1480 1.4710 428 - 4372.5000 1.28700 0.00795 1.1180 1.4470 428 - 4373.5000 1.28000 0.00723 1.1440 1.4430 428 - 4374.5000 1.27400 0.00681 1.1250 1.4070 429 - 4375.5000 1.26000 0.00764 1.1020 1.4170 425 - 4376.5000 1.26400 0.00760 1.0970 1.4120 429 - 4377.5000 1.25700 0.00776 1.1120 1.4320 425 - 4378.5000 1.26000 0.00748 1.0840 1.3920 424 - 4379.5000 1.25300 0.00736 1.0890 1.3920 424 - 4380.5000 1.24700 0.00682 1.1290 1.4090 421 - 4381.5000 1.24900 0.00731 1.0890 1.3900 424 - 4382.5000 1.22300 0.00733 1.0740 1.3750 422 - 4383.5000 1.22800 0.00752 1.0720 1.3820 425 - 4384.5000 1.19100 0.00731 1.0510 1.3510 421 - 4385.5000 1.19200 0.00717 1.0380 1.3310 417 - 4386.5000 1.18600 0.00733 1.0460 1.3470 421 - 4387.5000 1.21500 0.00787 1.0520 1.3740 419 - 4388.5000 1.19400 0.00764 1.0420 1.3560 422 - 4389.5000 1.21800 0.00768 1.0440 1.3570 415 - 4390.5000 1.19800 0.00796 1.0510 1.3770 419 - 4391.5000 1.19200 0.00793 1.0290 1.3520 415 - 4392.5000 1.21100 0.00773 1.0390 1.3560 420 - 4393.5000 1.20200 0.00739 1.0550 1.3570 418 - 4394.5000 1.18900 0.00769 1.0420 1.3570 420 - 4395.5000 1.19400 0.00747 1.0560 1.3610 417 - 4396.5000 1.19200 0.00717 1.0580 1.3510 418 - 4397.5000 1.19700 0.00717 1.0320 1.3250 417 - 4398.5000 1.18200 0.00772 1.0240 1.3370 411 - 4399.5000 1.19200 0.00839 0.9950 1.3370 415 - 4400.5000 1.18500 0.00705 1.0370 1.3260 420 - 4401.5000 1.19700 0.00725 1.0320 1.3270 414 - 4402.5000 1.16300 0.00728 1.0210 1.3180 416 - 4403.5000 1.18600 0.00775 1.0190 1.3330 410 - 4404.5000 1.17700 0.00748 1.0250 1.3290 413 - 4405.5000 1.17000 0.00737 1.0140 1.3130 412 - 4406.5000 1.16400 0.00819 1.0040 1.3380 416 - 4407.5000 1.16400 0.00770 1.0120 1.3260 416 - 4408.5000 1.15800 0.00675 1.0250 1.2980 409 - 4409.5000 1.16300 0.00744 1.0010 1.3040 415 - 4410.5000 1.17900 0.00797 1.0040 1.3290 416 - 4411.5000 1.17300 0.00793 1.0040 1.3280 417 - 4412.5000 1.17200 0.00775 1.0130 1.3280 413 - 4413.5000 1.17500 0.00767 1.0180 1.3290 411 - 4414.5000 1.17800 0.00840 1.0020 1.3440 414 - 4415.5000 1.16800 0.00831 0.9920 1.3280 409 - 4416.5000 1.15600 0.00803 1.0050 1.3320 415 - 4417.5000 1.15400 0.00825 0.9970 1.3320 412 - 4418.5000 1.18600 0.00829 1.0050 1.3420 413 - 4419.5000 1.16800 0.00804 1.0010 1.3310 421 - 4420.5000 1.16500 0.00816 1.0080 1.3400 414 - 4421.5000 1.16800 0.00762 1.0140 1.3250 416 - 4422.5000 1.18000 0.00766 1.0110 1.3220 412 - 4423.5000 1.15500 0.00753 1.0090 1.3130 408 - 4424.5000 1.14700 0.00777 0.9820 1.2970 411 - 4425.5000 1.16600 0.00852 0.9910 1.3370 412 - 4426.5000 1.15300 0.00829 0.9860 1.3210 408 - 4427.5000 1.15300 0.00751 0.9890 1.2940 412 - 4428.5000 1.14900 0.00776 0.9870 1.3010 409 - 4429.5000 1.15200 0.00768 0.9720 1.2820 407 - 4430.5000 1.14200 0.00733 1.0000 1.2940 402 - 4431.5000 1.14600 0.00761 0.9830 1.2910 409 - 4432.5000 1.13000 0.00781 0.9610 1.2760 407 - 4433.5000 1.11600 0.00788 0.9720 1.2890 405 - 4434.5000 1.12000 0.00753 0.9580 1.2600 402 - 4435.5000 1.11900 0.00737 0.9780 1.2740 403 - 4436.5000 1.10800 0.00741 0.9750 1.2730 404 - 4437.5000 1.12700 0.00730 0.9730 1.2640 397 - 4438.5000 1.14900 0.00782 0.9950 1.3070 398 - 4439.5000 1.12800 0.00772 0.9730 1.2830 403 - 4440.5000 1.14000 0.00818 0.9660 1.2930 400 - 4441.5000 1.13000 0.00754 0.9860 1.2890 404 - 4442.5000 1.13300 0.00814 0.9670 1.2930 401 - 4443.5000 1.12600 0.00790 0.9710 1.2880 403 - 4444.5000 1.12600 0.00772 0.9590 1.2680 400 - 4445.5000 1.13500 0.00741 0.9690 1.2660 402 - 4446.5000 1.14600 0.00832 0.9740 1.3030 391 - 4447.5000 1.14700 0.00740 1.0100 1.3050 397 - 4448.5000 1.15400 0.00814 0.9990 1.3250 401 - 4449.5000 1.14900 0.00815 0.9810 1.3070 400 - 4450.5000 1.14400 0.00785 0.9840 1.2970 397 - 4451.5000 1.13200 0.00842 0.9660 1.3030 400 - 4452.5000 1.15000 0.00767 0.9880 1.2920 393 - 4453.5000 1.13900 0.00861 0.9590 1.3040 401 - 4454.5000 1.14200 0.00814 0.9680 1.2890 389 - 4455.5000 1.15400 0.00758 0.9980 1.3010 399 - 4456.5000 1.13700 0.00743 0.9950 1.2900 394 - 4457.5000 1.13300 0.00717 0.9800 1.2650 395 - 4458.5000 1.13800 0.00782 0.9850 1.2970 398 - 4459.5000 1.13100 0.00733 0.9800 1.2730 400 - 4460.5000 1.12600 0.00786 0.9700 1.2820 394 - 4461.5000 1.12900 0.00825 0.9660 1.2950 398 - 4462.5000 1.12800 0.00828 0.9720 1.3020 397 - 4463.5000 1.11300 0.00802 0.9750 1.2930 393 - 4464.5000 1.15500 0.00820 0.9860 1.3150 402 - 4465.5000 1.15600 0.00785 0.9910 1.3050 400 - 4466.5000 1.13400 0.00704 0.9960 1.2750 393 - 4467.5000 1.15000 0.00823 0.9910 1.3190 397 - 4468.5000 1.14600 0.00839 0.9880 1.3200 391 - 4469.5000 1.13400 0.00852 0.9720 1.3090 391 - 4470.5000 1.15400 0.00811 0.9870 1.3090 394 - 4471.5000 1.16500 0.00834 0.9970 1.3260 389 - 4472.5000 1.17100 0.00865 0.9940 1.3390 398 - 4473.5000 1.17600 0.00987 0.9850 1.3770 394 - 4474.5000 1.18700 0.00857 0.9980 1.3360 389 - 4475.5000 1.20600 0.00912 1.0010 1.3640 396 - 4476.5000 1.19800 0.00931 1.0170 1.3850 391 - 4477.5000 1.16200 0.00905 0.9910 1.3480 389 - 4478.5000 1.17000 0.00847 1.0030 1.3370 389 - 4479.5000 1.19100 0.00899 1.0090 1.3650 392 - 4480.5000 1.17400 0.00867 1.0060 1.3470 387 - 4481.5000 1.17600 0.00788 1.0180 1.3290 389 - 4482.5000 1.15700 0.00807 0.9940 1.3100 383 - 4483.5000 1.16700 0.00784 1.0120 1.3210 388 - 4484.5000 1.18200 0.00782 1.0230 1.3330 393 - 4485.5000 1.19400 0.00873 0.9980 1.3450 395 - 4486.5000 1.19200 0.00799 1.0210 1.3370 391 - 4487.5000 1.18100 0.00804 1.0290 1.3450 386 - 4488.5000 1.20100 0.00871 1.0160 1.3600 390 - 4489.5000 1.19100 0.00879 1.0040 1.3480 383 - 4490.5000 1.17400 0.00835 0.9840 1.3150 393 - 4491.5000 1.19300 0.00947 0.9900 1.3640 390 - 4492.5000 1.18200 0.00886 1.0030 1.3550 395 - 4493.5000 1.19900 0.00825 1.0340 1.3600 390 - 4494.5000 1.20200 0.00840 1.0090 1.3390 386 - 4495.5000 1.18500 0.00844 1.0110 1.3430 387 - 4496.5000 1.19900 0.00849 1.0300 1.3660 392 - 4497.5000 1.18400 0.00874 1.0090 1.3560 394 - 4498.5000 1.19800 0.00854 1.0220 1.3590 389 - 4499.5000 1.20300 0.00895 1.0360 1.3900 391 - 4500.5000 1.20300 0.00925 1.0040 1.3680 387 - 4501.5000 1.21300 0.00922 1.0220 1.3840 385 - 4502.5000 1.21900 0.00897 1.0350 1.3860 383 - 4503.5000 1.20700 0.00891 1.0230 1.3760 392 - 4504.5000 1.23400 0.00946 1.0310 1.4040 389 - 4505.5000 1.23800 0.00874 1.0590 1.4030 387 - 4506.5000 1.22000 0.01031 1.0030 1.4080 386 - 4507.5000 1.23600 0.00963 1.0310 1.4070 381 - 4508.5000 1.22200 0.00913 1.0250 1.3830 384 - 4509.5000 1.24400 0.01014 1.0230 1.4220 387 - 4510.5000 1.23900 0.00972 1.0410 1.4210 382 - 4511.5000 1.24200 0.00925 1.0570 1.4190 383 - 4512.5000 1.22300 0.00947 1.0500 1.4210 384 - 4513.5000 1.23300 0.00999 1.0490 1.4390 381 - 4514.5000 1.22500 0.01008 1.0130 1.4080 384 - 4515.5000 1.23100 0.00936 1.0420 1.4070 380 - 4516.5000 1.23800 0.01009 1.0390 1.4360 387 - 4517.5000 1.23000 0.00968 1.0470 1.4230 377 - 4518.5000 1.24000 0.01043 1.0120 1.4220 386 - 4519.5000 1.24900 0.00973 1.0300 1.4100 381 - 4520.5000 1.22600 0.00911 1.0510 1.4090 386 - 4521.5000 1.22100 0.00998 1.0480 1.4400 386 - 4522.5000 1.22700 0.01006 1.0350 1.4260 378 - 4523.5000 1.23400 0.00893 1.0710 1.4220 386 - 4524.5000 1.24700 0.00847 1.0610 1.3940 386 - 4525.5000 1.21000 0.00901 1.0130 1.3640 379 - 4526.5000 1.20900 0.00911 1.0190 1.3750 382 - 4527.5000 1.21200 0.00952 1.0250 1.3970 382 - 4528.5000 1.21100 0.00919 1.0130 1.3700 377 - 4529.5000 1.22000 0.00909 1.0120 1.3690 386 - 4530.5000 1.21200 0.00871 1.0380 1.3800 385 - 4531.5000 1.20300 0.00887 1.0120 1.3590 383 - 4532.5000 1.20500 0.00908 0.9840 1.3360 376 - 4533.5000 1.18900 0.00953 1.0030 1.3750 381 - 4534.5000 1.17600 0.00875 1.0230 1.3620 375 - 4535.5000 1.19900 0.00905 1.0360 1.3880 378 - 4536.5000 1.21000 0.00871 1.0100 1.3500 381 - 4537.5000 1.20600 0.00901 1.0290 1.3770 373 - 4538.5000 1.22400 0.00845 1.0290 1.3590 381 - 4539.5000 1.21600 0.00848 1.0330 1.3640 381 - 4540.5000 1.21500 0.00894 1.0360 1.3840 379 - 4541.5000 1.23800 0.00846 1.0720 1.3980 371 - 4542.5000 1.25500 0.00898 1.0400 1.3900 380 - 4543.5000 1.24300 0.00927 1.0570 1.4160 375 - 4544.5000 1.24800 0.00931 1.0360 1.3980 378 - 4545.5000 1.23800 0.00957 1.0460 1.4170 376 - 4546.5000 1.21500 0.00942 1.0160 1.3810 375 - 4547.5000 1.21500 0.00940 1.0040 1.3720 383 - 4548.5000 1.23300 0.01031 1.0030 1.4030 376 - 4549.5000 1.20600 0.00929 1.0360 1.3980 380 - 4550.5000 1.22700 0.00909 1.0480 1.4000 375 - 4551.5000 1.23300 0.00924 1.0410 1.3970 371 - 4552.5000 1.22900 0.00910 1.0390 1.3930 378 - 4553.5000 1.21700 0.00878 1.0570 1.3960 373 - 4554.5000 1.21800 0.00847 1.0620 1.3880 370 - 4555.5000 1.21400 0.00925 1.0320 1.3880 370 - 4556.5000 1.21900 0.00897 1.0370 1.3840 374 - 4557.5000 1.21600 0.00929 1.0410 1.4000 373 - 4558.5000 1.21800 0.00862 1.0460 1.3800 375 - 4559.5000 1.24200 0.00976 1.0330 1.4070 367 - 4560.5000 1.24600 0.01038 1.0220 1.4260 379 - 4561.5000 1.24100 0.00932 1.0530 1.4150 377 - 4562.5000 1.24400 0.00897 1.0580 1.4060 376 - 4563.5000 1.24100 0.00908 1.0440 1.3930 369 - 4564.5000 1.21600 0.00970 1.0290 1.4040 374 - 4565.5000 1.21800 0.00967 1.0200 1.3930 372 - 4566.5000 1.23000 0.00902 1.0520 1.4000 372 - 4567.5000 1.25700 0.00959 1.0460 1.4130 366 - 4568.5000 1.20400 0.00991 1.0110 1.3960 377 - 4569.5000 1.22500 0.00945 1.0220 1.3860 371 - 4570.5000 1.24600 0.00941 1.0450 1.4090 374 - 4571.5000 1.23300 0.00953 1.0300 1.3940 365 - 4572.5000 1.24300 0.00906 1.0510 1.3970 365 - 4573.5000 1.22900 0.00900 1.0430 1.3920 376 - 4574.5000 1.21800 0.00945 1.0220 1.3870 373 - 4575.5000 1.23300 0.00932 1.0370 1.3930 365 - 4576.5000 1.24200 0.00884 1.0650 1.4050 370 - 4577.5000 1.22500 0.00875 1.0590 1.3960 371 - 4578.5000 1.21800 0.01014 1.0140 1.4040 370 - 4579.5000 1.22200 0.00949 1.0430 1.4040 362 - 4580.5000 1.21800 0.00940 1.0350 1.3970 371 - 4581.5000 1.21700 0.00843 1.0500 1.3770 376 - 4582.5000 1.22500 0.01006 1.0350 1.4210 368 - 4583.5000 1.21300 0.00984 1.0130 1.3880 363 - 4584.5000 1.21200 0.00888 1.0280 1.3670 364 - 4585.5000 1.19000 0.00872 1.0220 1.3600 376 - 4586.5000 1.22900 0.00930 1.0540 1.4100 366 - 4587.5000 1.23000 0.00900 1.0220 1.3650 363 - 4588.5000 1.20700 0.00959 1.0030 1.3760 378 - 4589.5000 1.24300 0.00983 1.0300 1.4070 368 - 4590.5000 1.20400 0.00957 1.0170 1.3820 364 - 4591.5000 1.19700 0.01068 0.9850 1.3930 365 - 4592.5000 1.20800 0.00904 1.0280 1.3780 375 - 4593.5000 1.19800 0.00895 1.0190 1.3620 367 - 4594.5000 1.18500 0.00862 1.0220 1.3510 364 - 4595.5000 1.18300 0.00871 1.0230 1.3570 368 - 4596.5000 1.18500 0.00874 1.0230 1.3580 367 - 4597.5000 1.17200 0.00796 1.0210 1.3230 360 - 4598.5000 1.20000 0.00893 1.0080 1.3510 369 - 4599.5000 1.19700 0.00817 1.0350 1.3460 362 - 4600.5000 1.15800 0.00767 1.0120 1.3070 370 - 4601.5000 1.17600 0.00898 1.0050 1.3450 358 - 4602.5000 1.19000 0.00911 0.9970 1.3480 371 - 4603.5000 1.18500 0.00848 1.0260 1.3500 365 - 4604.5000 1.19200 0.01000 0.9830 1.3630 361 - 4605.5000 1.17000 0.00926 0.9820 1.3340 361 - 4606.5000 1.16500 0.00919 0.9780 1.3340 375 - 4607.5000 1.17100 0.00833 1.0050 1.3230 364 - 4608.5000 1.16500 0.00880 0.9910 1.3260 362 - 4609.5000 1.16800 0.00925 1.0020 1.3530 360 - 4610.5000 1.19500 0.00847 1.0190 1.3470 375 - 4611.5000 1.17800 0.00933 0.9910 1.3490 368 - 4612.5000 1.18100 0.00929 0.9970 1.3490 359 - 4613.5000 1.16600 0.00930 0.9810 1.3360 364 - 4614.5000 1.16100 0.00928 0.9950 1.3480 362 - 4615.5000 1.19100 0.00947 1.0120 1.3710 359 - 4616.5000 1.21000 0.00928 1.0220 1.3780 368 - 4617.5000 1.18500 0.00887 1.0100 1.3470 361 - 4618.5000 1.16300 0.00852 1.0170 1.3380 355 - 4619.5000 1.16800 0.00890 1.0260 1.3660 365 - 4620.5000 1.18400 0.00975 1.0020 1.3730 362 - 4621.5000 1.21800 0.00972 1.0180 1.3860 358 - 4622.5000 1.19200 0.00901 1.0140 1.3530 354 - 4623.5000 1.20500 0.00905 1.0360 1.3840 370 - 4624.5000 1.21000 0.00958 1.0070 1.3710 361 - 4625.5000 1.19700 0.00980 0.9960 1.3670 358 - 4626.5000 1.19300 0.00942 1.0050 1.3610 357 - 4627.5000 1.19000 0.01002 1.0070 1.3910 367 - 4628.5000 1.22000 0.00943 1.0120 1.3670 354 - 4629.5000 1.17800 0.00987 1.0030 1.3770 359 - 4630.5000 1.22000 0.01050 1.0010 1.4010 363 - 4631.5000 1.19800 0.01020 1.0180 1.4020 354 - 4632.5000 1.21800 0.01041 1.0030 1.3980 360 - 4633.5000 1.20100 0.00979 0.9830 1.3550 361 - 4634.5000 1.17000 0.00976 0.9980 1.3690 361 - 4635.5000 1.21100 0.01017 0.9970 1.3820 358 - 4636.5000 1.20400 0.00982 1.0090 1.3800 357 - 4637.5000 1.21200 0.00986 0.9960 1.3700 360 - 4638.5000 1.18500 0.00973 1.0010 1.3670 354 - 4639.5000 1.16700 0.00979 0.9800 1.3580 373 - 4640.5000 1.18900 0.00958 0.9740 1.3380 361 - 4641.5000 1.15800 0.01028 0.9690 1.3590 360 - 4642.5000 1.16100 0.00970 0.9790 1.3470 360 - 4643.5000 1.18500 0.01007 0.9670 1.3530 367 - 4644.5000 1.18300 0.00967 0.9940 1.3570 352 - 4645.5000 1.16100 0.00821 1.0060 1.3170 359 - 4646.5000 1.17000 0.00974 0.9610 1.3300 359 - 4647.5000 1.14300 0.00979 0.9440 1.3130 355 - 4648.5000 1.14000 0.00895 0.9660 1.3060 361 - 4649.5000 1.15100 0.00923 0.9620 1.3090 353 - 4650.5000 1.16100 0.00933 0.9530 1.3060 358 - 4651.5000 1.15300 0.00914 0.9710 1.3160 356 - 4652.5000 1.14600 0.00911 0.9590 1.3050 361 - 4653.5000 1.17000 0.00958 0.9660 1.3240 349 - 4654.5000 1.13300 0.01051 0.9550 1.3560 364 - 4655.5000 1.15400 0.00942 0.9690 1.3250 357 - 4656.5000 1.17400 0.00954 0.9680 1.3280 356 - 4657.5000 1.11700 0.01001 0.9480 1.3230 351 - 4658.5000 1.12900 0.01055 0.9300 1.3330 365 - 4659.5000 1.16200 0.00984 0.9900 1.3570 348 - 4660.5000 1.15900 0.01077 0.9690 1.3730 352 - 4661.5000 1.14400 0.01017 0.9610 1.3420 351 - 4662.5000 1.14500 0.01070 0.9440 1.3450 351 - 4663.5000 1.15100 0.01031 0.9370 1.3250 354 - 4664.5000 1.15200 0.00980 0.9520 1.3220 356 - 4665.5000 1.14300 0.00942 0.9620 1.3160 353 - 4666.5000 1.15600 0.00913 0.9780 1.3240 359 - 4667.5000 1.12700 0.01037 0.9500 1.3420 357 - 4668.5000 1.11500 0.00919 0.9370 1.2810 350 - 4669.5000 1.13300 0.00823 0.9730 1.2860 362 - 4670.5000 1.13600 0.01006 0.9360 1.3140 353 - 4671.5000 1.11500 0.01001 0.9170 1.2900 347 - 4672.5000 1.12200 0.01020 0.9350 1.3220 360 - 4673.5000 1.14200 0.01006 0.9590 1.3370 353 - 4674.5000 1.15400 0.00892 0.9800 1.3120 346 - 4675.5000 1.14000 0.01051 0.9390 1.3350 355 - 4676.5000 1.14300 0.01149 0.9110 1.3390 347 - 4677.5000 1.16000 0.01002 0.9470 1.3230 352 - 4678.5000 1.14600 0.01088 0.9370 1.3440 350 - 4679.5000 1.14400 0.01055 0.9570 1.3540 354 - 4680.5000 1.14600 0.01046 0.9330 1.3240 349 - 4681.5000 1.15100 0.01041 0.9330 1.3220 349 - 4682.5000 1.12200 0.01115 0.9400 1.3530 343 - 4683.5000 1.15400 0.01109 0.9420 1.3610 357 - 4684.5000 1.18200 0.01118 0.9330 1.3520 351 - 4685.5000 1.17800 0.01200 0.9470 1.3920 344 - 4686.5000 1.17800 0.01131 0.9620 1.3900 358 - 4687.5000 1.16600 0.01126 0.9420 1.3610 346 - 4688.5000 1.17300 0.01125 0.9520 1.3710 347 - 4689.5000 1.17200 0.01149 0.9390 1.3640 342 - 4690.5000 1.13400 0.01137 0.9150 1.3380 346 - 4691.5000 1.13500 0.01035 0.9330 1.3180 346 - 4692.5000 1.12000 0.00937 0.9280 1.2790 351 - 4693.5000 1.11500 0.00968 0.9250 1.2820 340 - 4694.5000 1.13200 0.01001 0.9350 1.3090 349 - 4695.5000 1.12400 0.00963 0.9420 1.2960 338 - 4696.5000 1.10900 0.00992 0.8910 1.2610 348 - 4697.5000 1.09600 0.00958 0.9050 1.2620 347 - 4698.5000 1.11100 0.01024 0.9130 1.2930 344 - 4699.5000 1.08200 0.00983 0.9110 1.2740 341 - 4700.5000 1.09600 0.00969 0.9030 1.2640 347 - 4701.5000 1.08000 0.00968 0.9000 1.2550 336 - 4702.5000 1.09400 0.00953 0.9330 1.2860 343 - 4703.5000 1.08800 0.01065 0.9010 1.2920 337 - 4704.5000 1.11300 0.00980 0.9110 1.2750 345 - 4705.5000 1.08800 0.00922 0.9180 1.2570 338 - 4706.5000 1.08600 0.00933 0.9160 1.2580 336 - 4707.5000 1.07100 0.00952 0.9020 1.2550 344 - 4708.5000 1.08700 0.00996 0.9160 1.2790 332 - 4709.5000 1.06600 0.01012 0.8910 1.2660 343 - 4710.5000 1.06800 0.00941 0.9130 1.2600 340 - 4711.5000 1.09500 0.00929 0.9210 1.2630 339 - 4712.5000 1.09400 0.00918 0.9400 1.2790 341 - 4713.5000 1.10000 0.00984 0.9030 1.2670 342 - 4714.5000 1.07500 0.01156 0.8470 1.2670 330 - 4715.5000 1.08800 0.01007 0.9060 1.2780 341 - 4716.5000 1.08200 0.01092 0.8880 1.2860 332 - 4717.5000 1.07200 0.01040 0.8940 1.2760 337 - 4718.5000 1.07800 0.00945 0.9140 1.2610 337 - 4719.5000 1.10300 0.01083 0.9250 1.3220 336 - 4720.5000 1.10100 0.01028 0.9050 1.2820 336 - 4721.5000 1.10100 0.00999 0.9300 1.2940 332 - 4722.5000 1.08600 0.00962 0.9110 1.2680 344 - 4723.5000 1.08700 0.01038 0.9000 1.2790 333 - 4724.5000 1.08000 0.01014 0.8920 1.2610 331 - 4725.5000 1.06900 0.00971 0.9000 1.2590 342 - 4726.5000 1.09200 0.01004 0.9050 1.2670 325 - 4727.5000 1.09900 0.00970 0.9190 1.2720 331 - 4728.5000 1.07000 0.00918 0.9240 1.2590 333 - 4729.5000 1.10600 0.01071 0.9090 1.2970 328 - 4730.5000 1.07000 0.00947 0.8890 1.2340 332 - 4731.5000 1.06600 0.00903 0.8910 1.2210 334 - 4732.5000 1.07000 0.00919 0.9000 1.2380 338 - 4733.5000 1.10200 0.01020 0.9170 1.2880 331 - 4734.5000 1.07700 0.00949 0.8980 1.2490 342 - 4735.5000 1.08300 0.00919 0.9220 1.2590 336 - 4736.5000 1.06800 0.01078 0.8460 1.2400 334 - 4737.5000 1.05800 0.01009 0.8770 1.2490 340 - 4738.5000 1.07900 0.00917 0.9110 1.2430 328 - 4739.5000 1.09300 0.00927 0.9340 1.2740 336 - 4740.5000 1.09400 0.00995 0.9170 1.2800 333 - 4741.5000 1.11500 0.01050 0.9100 1.2920 331 - 4742.5000 1.08200 0.00991 0.8790 1.2400 332 - 4743.5000 1.08000 0.00871 0.9150 1.2330 333 - 4744.5000 1.08100 0.01017 0.8950 1.2680 336 - 4745.5000 1.07700 0.01042 0.8730 1.2510 329 - 4746.5000 1.05500 0.01016 0.8820 1.2550 337 - 4747.5000 1.08600 0.00941 0.9110 1.2520 328 - 4748.5000 1.05000 0.01098 0.8770 1.2730 325 - 4749.5000 1.07800 0.01037 0.8880 1.2700 339 - 4750.5000 1.06700 0.00987 0.9180 1.2750 327 - 4751.5000 1.06500 0.01023 0.8840 1.2550 329 - 4752.5000 1.05100 0.00966 0.8960 1.2460 328 - 4753.5000 1.05500 0.01079 0.8580 1.2530 335 - 4754.5000 1.06000 0.01065 0.8810 1.2690 332 - 4755.5000 1.07800 0.00986 0.8900 1.2470 328 - 4756.5000 1.03400 0.00830 0.8870 1.1900 333 - 4757.5000 1.05900 0.00894 0.9020 1.2240 324 - 4758.5000 1.05800 0.00921 0.8690 1.2060 335 - 4759.5000 1.07400 0.00967 0.8940 1.2470 333 - 4760.5000 1.04300 0.00996 0.8700 1.2340 334 - 4761.5000 1.06300 0.00908 0.8930 1.2260 336 - 4762.5000 1.04300 0.00953 0.8780 1.2200 322 - 4763.5000 1.05000 0.01034 0.8770 1.2550 334 - 4764.5000 1.06100 0.00911 0.8830 1.2130 328 - 4765.5000 1.05500 0.00935 0.8770 1.2150 327 - 4766.5000 1.05800 0.00962 0.8900 1.2400 331 - 4767.5000 1.04900 0.00908 0.9040 1.2340 330 - 4768.5000 1.05800 0.00796 0.9170 1.2040 325 - 4769.5000 1.06400 0.00932 0.8830 1.2230 333 - 4770.5000 1.06800 0.01009 0.9030 1.2650 322 - 4771.5000 1.04200 0.00942 0.8860 1.2260 326 - 4772.5000 1.06600 0.00974 0.8750 1.2320 336 - 4773.5000 1.05800 0.00985 0.8840 1.2360 319 - 4774.5000 1.04900 0.00930 0.8970 1.2330 326 - 4775.5000 1.07000 0.01024 0.8780 1.2450 321 - 4776.5000 1.08100 0.01051 0.8950 1.2740 325 - 4777.5000 1.07900 0.01025 0.9030 1.2710 322 - 4778.5000 1.08600 0.00955 0.9150 1.2600 326 - 4779.5000 1.08800 0.00972 0.9320 1.2820 324 - 4780.5000 1.07400 0.00995 0.9030 1.2640 329 - 4781.5000 1.06000 0.00912 0.9150 1.2440 325 - 4782.5000 1.06300 0.01012 0.8920 1.2570 325 - 4783.5000 1.07700 0.00963 0.9110 1.2630 334 - 4784.5000 1.07600 0.01048 0.9030 1.2750 315 - 4785.5000 1.07500 0.00957 0.9110 1.2570 327 - 4786.5000 1.09600 0.00953 0.9280 1.2720 326 - 4787.5000 1.08500 0.00910 0.9270 1.2510 317 - 4788.5000 1.08600 0.00900 0.9220 1.2460 324 - 4789.5000 1.10900 0.00899 0.9200 1.2460 329 - 4790.5000 1.11000 0.00967 0.9250 1.2700 318 - 4791.5000 1.11100 0.00936 0.9260 1.2670 332 - 4792.5000 1.09700 0.00997 0.9210 1.2800 324 - 4793.5000 1.10000 0.00982 0.9190 1.2720 323 - 4794.5000 1.10100 0.01021 0.9310 1.2990 325 - 4795.5000 1.13900 0.01071 0.9250 1.3080 320 - 4796.5000 1.12600 0.00936 0.9690 1.3070 326 - 4797.5000 1.13700 0.00973 0.9460 1.2940 320 - 4798.5000 1.12600 0.01028 0.9370 1.3070 324 - 4799.5000 1.11200 0.00982 0.9320 1.2860 325 - 4800.5000 1.14200 0.00959 0.9670 1.3110 322 - 4801.5000 1.14400 0.00960 0.9520 1.2980 325 - 4802.5000 1.13700 0.00947 0.9500 1.2920 326 - 4803.5000 1.16400 0.00984 0.9830 1.3350 320 - 4804.5000 1.16800 0.01005 0.9870 1.3510 328 - 4805.5000 1.14200 0.01003 0.9660 1.3230 317 - 4806.5000 1.15500 0.01048 0.9640 1.3390 320 - 4807.5000 1.16300 0.01030 0.9720 1.3360 312 - 4808.5000 1.15800 0.00932 1.0030 1.3350 317 - 4809.5000 1.18700 0.01021 0.9960 1.3600 318 - 4810.5000 1.17600 0.00904 1.0160 1.3400 321 - 4811.5000 1.19500 0.00987 1.0010 1.3470 307 - 4812.5000 1.17300 0.00920 0.9970 1.3270 322 - 4813.5000 1.18300 0.01029 0.9970 1.3640 318 - 4814.5000 1.19100 0.01010 1.0230 1.3850 321 - 4815.5000 1.21200 0.00994 1.0090 1.3620 315 - 4816.5000 1.20300 0.01037 1.0070 1.3770 318 - 4817.5000 1.19100 0.01084 0.9970 1.3800 312 - 4818.5000 1.22700 0.00960 1.0450 1.3880 319 - 4819.5000 1.24500 0.01163 1.0320 1.4460 317 - 4820.5000 1.23200 0.01030 1.0490 1.4170 319 - 4821.5000 1.24500 0.01008 1.0550 1.4140 317 - 4822.5000 1.24500 0.01026 1.0480 1.4180 325 - 4823.5000 1.26100 0.00983 1.0870 1.4370 317 - 4824.5000 1.26700 0.00892 1.0980 1.4180 322 - 4825.5000 1.26900 0.00979 1.1000 1.4490 318 - 4826.5000 1.29100 0.00981 1.0760 1.4230 313 - 4827.5000 1.27600 0.01019 1.0800 1.4410 314 - 4828.5000 1.29600 0.00952 1.1095 1.4470 315 - 4829.5000 1.31600 0.00885 1.1390 1.4530 315 - 4830.5000 1.33000 0.00933 1.1370 1.4720 322 - 4831.5000 1.34200 0.00933 1.1750 1.5040 311 - 4832.5000 1.33100 0.00998 1.1380 1.4940 318 - 4833.5000 1.33700 0.00914 1.1670 1.4900 312 - 4834.5000 1.36700 0.00923 1.1910 1.5190 316 - 4835.5000 1.35500 0.01047 1.1720 1.5400 309 - 4836.5000 1.38300 0.01033 1.1810 1.5490 317 - 4837.5000 1.38900 0.01045 1.1980 1.5670 312 - 4838.5000 1.39800 0.01006 1.2210 1.5770 313 - 4839.5000 1.42400 0.00974 1.2480 1.5920 312 - 4840.5000 1.41000 0.00949 1.2420 1.5800 317 - 4841.5000 1.45600 0.00943 1.2670 1.5980 308 - 4842.5000 1.42600 0.01026 1.2420 1.6090 320 - 4843.5000 1.45300 0.01098 1.2380 1.6270 314 - 4844.5000 1.47000 0.00999 1.2670 1.6200 312 - 4845.5000 1.47700 0.01090 1.2700 1.6540 310 - 4846.5000 1.48900 0.01105 1.3170 1.7060 310 - 4847.5000 1.52600 0.01151 1.3440 1.7500 311 - 4848.5000 1.54900 0.01174 1.3200 1.7320 308 - 4849.5000 1.57200 0.01144 1.3520 1.7600 318 - 4850.5000 1.58700 0.01212 1.3820 1.8110 313 - 4851.5000 1.56000 0.01364 1.3290 1.8140 316 - 4852.5000 1.58200 0.01323 1.3640 1.8330 314 - 4853.5000 1.64100 0.01361 1.3980 1.8750 307 - 4854.5000 1.65900 0.01212 1.4350 1.8660 316 - 4855.5000 1.71800 0.01328 1.4510 1.9180 309 - 4856.5000 1.70600 0.01470 1.4360 1.9520 308 - 4857.5000 1.69200 0.01539 1.4100 1.9510 309 - 4858.5000 1.74600 0.01570 1.4580 2.0100 309 - 4859.5000 1.78000 0.01662 1.5110 2.1000 314 - 4860.5000 1.81500 0.01761 1.5400 2.1560 306 - 4861.5000 1.86300 0.02061 1.5140 2.2480 317 - 4862.5000 1.88500 0.02216 1.5690 2.3520 312 - 4863.5000 1.87200 0.02081 1.5110 2.2450 311 - 4864.5000 1.86300 0.02092 1.5370 2.2700 307 - 4865.5000 1.78700 0.01729 1.5260 2.1360 311 - 4866.5000 1.77700 0.01612 1.4870 2.0490 304 - 4867.5000 1.72300 0.01610 1.4560 2.0240 311 - 4868.5000 1.70700 0.01546 1.4360 1.9760 305 - 4869.5000 1.64300 0.01392 1.4080 1.8950 306 - 4870.5000 1.59100 0.01340 1.4080 1.8820 313 - 4871.5000 1.62400 0.01357 1.3540 1.8280 305 - 4872.5000 1.57700 0.01313 1.3740 1.8380 312 - 4873.5000 1.58700 0.01293 1.3610 1.8110 303 - 4874.5000 1.52400 0.01173 1.3400 1.7510 307 - 4875.5000 1.53600 0.01247 1.3160 1.7510 304 - 4876.5000 1.52100 0.01207 1.3290 1.7470 300 - 4877.5000 1.52900 0.01110 1.3390 1.7280 307 - 4878.5000 1.50800 0.01158 1.3350 1.7380 303 - 4879.5000 1.49700 0.01181 1.2810 1.6970 310 - 4880.5000 1.49100 0.01146 1.3010 1.7020 306 - 4881.5000 1.44500 0.00963 1.2930 1.6310 308 - 4882.5000 1.46000 0.01146 1.2650 1.6620 300 - 4883.5000 1.45900 0.01181 1.2560 1.6680 304 - 4884.5000 1.43000 0.01133 1.2300 1.6230 301 - 4885.5000 1.40900 0.01098 1.2270 1.6080 301 - 4886.5000 1.39800 0.01259 1.1830 1.6220 304 - 4887.5000 1.39800 0.01000 1.2240 1.5720 303 - 4888.5000 1.36100 0.01088 1.1670 1.5470 305 - 4889.5000 1.35000 0.01007 1.1930 1.5430 302 - 4890.5000 1.34800 0.01089 1.1570 1.5380 306 - 4891.5000 1.35800 0.01206 1.1700 1.5870 299 - 4892.5000 1.36000 0.01042 1.1760 1.5380 302 - 4893.5000 1.32300 0.00977 1.1620 1.5000 299 - 4894.5000 1.35000 0.01057 1.1590 1.5250 300 - 4895.5000 1.34500 0.00946 1.1640 1.4960 308 - 4896.5000 1.34000 0.01004 1.1630 1.5120 302 - 4897.5000 1.31300 0.01013 1.1580 1.5130 307 - 4898.5000 1.32000 0.01040 1.1360 1.4970 301 - 4899.5000 1.30500 0.01092 1.1190 1.5010 306 - 4900.5000 1.28600 0.01117 1.1200 1.5070 300 - 4901.5000 1.30600 0.01085 1.0970 1.4730 300 - 4902.5000 1.32200 0.01075 1.1200 1.4930 301 - 4903.5000 1.29100 0.01046 1.0920 1.4560 303 - 4904.5000 1.28600 0.01016 1.0810 1.4330 300 - 4905.5000 1.29700 0.01070 1.0810 1.4530 302 - 4906.5000 1.28500 0.01048 1.0900 1.4530 300 - 4907.5000 1.25300 0.00928 1.1010 1.4250 305 - 4908.5000 1.27300 0.01031 1.0730 1.4300 300 - 4909.5000 1.24200 0.01026 1.0660 1.4190 296 - 4910.5000 1.23000 0.00898 1.0740 1.3850 300 - 4911.5000 1.26100 0.01040 1.0620 1.4200 296 - 4912.5000 1.24900 0.00921 1.0820 1.4000 298 - 4913.5000 1.22000 0.00882 1.0830 1.3920 307 - 4914.5000 1.22900 0.00934 1.0900 1.4110 295 - 4915.5000 1.23500 0.00986 1.0500 1.3940 304 - 4916.5000 1.23400 0.00950 1.0720 1.4000 298 - 4917.5000 1.20400 0.00977 1.0490 1.3880 301 - 4918.5000 1.23600 0.00945 1.0520 1.3770 296 - 4919.5000 1.21900 0.00995 1.0320 1.3750 297 - 4920.5000 1.20900 0.00947 1.0400 1.3660 296 - 4921.5000 1.21700 0.00866 1.0490 1.3500 302 - 4922.5000 1.21300 0.00796 1.0820 1.3560 296 - 4923.5000 1.19900 0.00869 1.0280 1.3320 306 - 4924.5000 1.18500 0.00870 1.0310 1.3310 297 - 4925.5000 1.20700 0.00857 1.0550 1.3530 302 - 4926.5000 1.21700 0.00853 1.0590 1.3500 291 - 4927.5000 1.20600 0.00968 1.0240 1.3600 301 - 4928.5000 1.22400 0.00956 1.0340 1.3600 291 - 4929.5000 1.21100 0.01074 0.9910 1.3580 292 - 4930.5000 1.20900 0.00966 1.0440 1.3780 299 - 4931.5000 1.21500 0.01026 1.0280 1.3780 291 - 4932.5000 1.21500 0.01026 1.0150 1.3710 301 - 4933.5000 1.18700 0.00952 1.0100 1.3370 295 - 4934.5000 1.19800 0.00883 1.0490 1.3530 296 - 4935.5000 1.17200 0.00865 1.0300 1.3260 293 - 4936.5000 1.18600 0.00966 0.9850 1.3150 292 - 4937.5000 1.18600 0.00948 1.0130 1.3380 294 - 4938.5000 1.16200 0.00859 1.0120 1.3060 293 - 4939.5000 1.17400 0.00961 1.0180 1.3480 295 - 4940.5000 1.16400 0.00843 1.0080 1.2980 296 - 4941.5000 1.15200 0.00913 1.0000 1.3120 292 - 4942.5000 1.15700 0.00904 1.0050 1.3180 300 - 4943.5000 1.17500 0.01167 0.9800 1.3760 288 - 4944.5000 1.18100 0.00944 1.0330 1.3540 289 - 4945.5000 1.20700 0.01007 1.0150 1.3580 290 - 4946.5000 1.18900 0.01018 1.0300 1.3810 297 - 4947.5000 1.19100 0.01027 1.0400 1.3910 292 - 4948.5000 1.19800 0.01181 0.9590 1.3660 297 - 4949.5000 1.22500 0.01004 1.0460 1.3880 290 - 4950.5000 1.21000 0.01156 1.0250 1.4220 295 - 4951.5000 1.23200 0.01228 1.0560 1.4700 284 - 4952.5000 1.23900 0.01237 1.0570 1.4770 288 - 4953.5000 1.27100 0.01221 1.0640 1.4770 286 - 4954.5000 1.31400 0.01433 1.0880 1.5770 291 - 4955.5000 1.33400 0.01668 1.1080 1.6730 287 - 4956.5000 1.35200 0.01744 1.1020 1.7010 295 - 4957.5000 1.42700 0.01881 1.1270 1.7610 284 - 4958.5000 1.44700 0.02189 1.1210 1.8680 291 - 4959.5000 1.44400 0.02889 1.1480 2.1130 279 - 4960.5000 1.44000 0.02688 1.1350 2.0520 291 - 4961.5000 1.48800 0.02349 1.1410 1.9300 282 - 4962.5000 1.42900 0.02020 1.1270 1.8090 285 - 4963.5000 1.31800 0.01765 1.0570 1.6550 287 - 4964.5000 1.30200 0.01621 1.0620 1.6130 289 - 4965.5000 1.21900 0.01364 1.0450 1.5040 283 - 4966.5000 1.21000 0.01183 1.0080 1.4130 293 - 4967.5000 1.17400 0.01149 0.9950 1.3780 278 - 4968.5000 1.12700 0.01213 0.9470 1.3580 287 - 4969.5000 1.15300 0.01081 0.9660 1.3290 282 - 4970.5000 1.13300 0.01130 0.9230 1.3080 290 - 4971.5000 1.11500 0.01028 0.9560 1.3030 285 - 4972.5000 1.09700 0.01071 0.9140 1.2780 289 - 4973.5000 1.09800 0.01095 0.9120 1.2810 284 - 4974.5000 1.11000 0.01117 0.9360 1.3150 288 - 4975.5000 1.07300 0.01100 0.9110 1.2790 280 - 4976.5000 1.10800 0.01088 0.9030 1.2690 283 - 4977.5000 1.11500 0.00999 0.9520 1.2870 281 - 4978.5000 1.10700 0.01055 0.9540 1.3120 288 - 4979.5000 1.09700 0.00942 0.9400 1.2570 283 - 4980.5000 1.08000 0.00967 0.9140 1.2410 286 - 4981.5000 1.08700 0.00970 0.9180 1.2450 284 - 4982.5000 1.06000 0.00964 0.9250 1.2540 291 - 4983.5000 1.07500 0.00925 0.9250 1.2350 281 - 4984.5000 1.09400 0.00905 0.9590 1.2620 280 - 4985.5000 1.09900 0.00997 0.9210 1.2560 282 - 4986.5000 1.08300 0.00941 0.9480 1.2650 284 - 4987.5000 1.11300 0.00973 0.9720 1.3000 284 - 4988.5000 1.13000 0.01057 0.9600 1.3170 285 - 4989.5000 1.14800 0.00968 0.9820 1.3070 282 - 4990.5000 1.15300 0.01072 0.9710 1.3350 288 - 4991.5000 1.14900 0.01016 0.9670 1.3090 283 - 4992.5000 1.17900 0.01149 1.0000 1.3840 279 - 4993.5000 1.19900 0.01239 1.0020 1.4190 283 - 4994.5000 1.21600 0.01245 1.0170 1.4380 286 - 4995.5000 1.20700 0.01110 1.0520 1.4240 281 - 4996.5000 1.24000 0.01260 1.0640 1.4880 283 - 4997.5000 1.26800 0.01259 1.0970 1.5230 286 - 4998.5000 1.31000 0.01524 1.0990 1.6100 281 - 4999.5000 1.32200 0.01721 1.1050 1.6850 284 - 5000.5000 1.38200 0.01812 1.1730 1.7750 276 - 5001.5000 1.41700 0.02160 1.1800 1.9030 280 - 5002.5000 1.48300 0.02404 1.2220 2.0280 281 - 5003.5000 1.58800 0.02816 1.2910 2.2400 284 - 5004.5000 1.72000 0.03682 1.3050 2.5350 279 - 5005.5000 1.87800 0.04434 1.3630 2.8600 285 - 5006.5000 1.98000 0.05824 1.4080 3.3360 274 - 5007.5000 1.98500 0.06715 1.3860 3.6130 275 - 5008.5000 2.21600 0.06920 1.4280 3.7480 281 - 5009.5000 1.98200 0.05469 1.4110 3.2380 279 - 5010.5000 1.82400 0.04480 1.3160 2.8020 275 - 5011.5000 1.73500 0.03543 1.2760 2.4700 284 - 5012.5000 1.48600 0.02701 1.1910 2.0900 277 - 5013.5000 1.46300 0.02528 1.1400 1.9830 278 - 5014.5000 1.34100 0.01745 1.1030 1.6840 277 - 5015.5000 1.31800 0.01329 1.1030 1.5430 274 - 5016.5000 1.24900 0.01292 1.0700 1.5030 281 - 5017.5000 1.22900 0.01246 1.0260 1.4400 276 - 5018.5000 1.17700 0.01138 1.0040 1.3870 283 - 5019.5000 1.18100 0.01057 1.0170 1.3650 271 - 5020.5000 1.16600 0.01101 0.9770 1.3460 281 - 5021.5000 1.15100 0.00931 0.9900 1.2970 272 - 5022.5000 1.14700 0.01022 0.9720 1.3110 275 - 5023.5000 1.14300 0.01086 0.9490 1.3110 278 - 5024.5000 1.11900 0.01015 0.9460 1.2820 274 - 5025.5000 1.11300 0.00983 0.9620 1.2880 275 - 5026.5000 1.12700 0.00972 0.9440 1.2670 276 - 5027.5000 1.10900 0.01049 0.9190 1.2700 280 - 5028.5000 1.10500 0.01014 0.9090 1.2410 268 - 5029.5000 1.09900 0.00982 0.9370 1.2640 277 - 5030.5000 1.08000 0.00940 0.9310 1.2410 272 - 5031.5000 1.06000 0.00951 0.8990 1.2160 278 - 5032.5000 1.08100 0.01048 0.9100 1.2570 274 - 5033.5000 1.05100 0.01098 0.8660 1.2300 275 - 5034.5000 1.09300 0.01011 0.9090 1.2420 271 - 5035.5000 1.08200 0.01061 0.8900 1.2420 275 - 5036.5000 1.06600 0.00928 0.9120 1.2220 279 - 5037.5000 1.05200 0.01004 0.8820 1.2120 270 - 5038.5000 1.05100 0.00991 0.9040 1.2340 277 - 5039.5000 1.05700 0.01017 0.8930 1.2280 271 - 5040.5000 1.02700 0.00984 0.8690 1.1960 276 - 5041.5000 1.04000 0.00931 0.8840 1.1900 270 - 5042.5000 1.01400 0.00930 0.8430 1.1560 283 - 5043.5000 1.01700 0.00937 0.8550 1.1640 272 - 5044.5000 1.03500 0.01078 0.8540 1.2090 271 - 5045.5000 1.02400 0.00949 0.8860 1.1980 270 - 5046.5000 1.04300 0.01019 0.9020 1.2400 275 - 5047.5000 1.06800 0.01094 0.8640 1.2270 275 - 5048.5000 1.03800 0.01135 0.8550 1.2260 267 - 5049.5000 1.02800 0.01011 0.8510 1.1900 281 - 5050.5000 1.04500 0.00952 0.8860 1.1960 265 - 5051.5000 0.99700 0.00968 0.8560 1.1730 268 - 5052.5000 1.03400 0.01161 0.8510 1.2340 272 - 5053.5000 1.04200 0.00959 0.8720 1.1860 268 - 5054.5000 1.04300 0.00982 0.8650 1.1860 267 - 5055.5000 1.05100 0.01124 0.8480 1.2160 268 - 5056.5000 1.00600 0.01151 0.8190 1.2000 274 - 5057.5000 1.01900 0.01059 0.8370 1.1810 264 - 5058.5000 1.01900 0.01143 0.8380 1.2100 265 - 5059.5000 1.02600 0.01007 0.8640 1.1950 270 - 5060.5000 1.00700 0.01013 0.8450 1.1760 267 - 5061.5000 1.02000 0.01064 0.8850 1.2320 266 - 5062.5000 1.04400 0.01216 0.8320 1.2270 264 - 5063.5000 1.01300 0.01145 0.8410 1.2200 274 - 5064.5000 1.01800 0.01105 0.8470 1.2020 258 - 5065.5000 1.00800 0.01163 0.8020 1.1820 267 - 5066.5000 0.98400 0.01110 0.8170 1.1810 269 - 5067.5000 1.00500 0.01051 0.8320 1.1780 271 - 5068.5000 1.01300 0.01023 0.8300 1.1650 268 - 5069.5000 1.00700 0.01061 0.8420 1.1860 263 - 5070.5000 0.96600 0.01056 0.8050 1.1520 270 - 5071.5000 0.98900 0.01169 0.7990 1.1780 263 - 5072.5000 0.98600 0.01137 0.8120 1.1780 259 - 5073.5000 0.97000 0.01104 0.8160 1.1780 269 - 5074.5000 0.97300 0.01056 0.8110 1.1560 267 - 5075.5000 0.98100 0.01113 0.8200 1.1830 266 - 5076.5000 0.96600 0.01157 0.7890 1.1650 264 - 5077.5000 0.99500 0.01078 0.8050 1.1600 271 - 5078.5000 1.00500 0.01082 0.8150 1.1640 260 - 5079.5000 0.98000 0.01181 0.8060 1.1870 260 - 5080.5000 0.96700 0.01024 0.8150 1.1470 263 - 5081.5000 0.96700 0.01108 0.7940 1.1560 267 - 5082.5000 0.95300 0.00972 0.8280 1.1450 266 - 5083.5000 0.97200 0.01072 0.7990 1.1440 259 - 5084.5000 0.95400 0.01048 0.8100 1.1500 263 - 5085.5000 0.97100 0.01107 0.7860 1.1410 257 - 5086.5000 0.95000 0.01140 0.8060 1.1730 259 - 5087.5000 0.94200 0.01090 0.7980 1.1480 258 - 5088.5000 0.97500 0.01097 0.8130 1.1700 265 - 5089.5000 0.97100 0.00995 0.8220 1.1440 262 - 5090.5000 0.98800 0.01104 0.8140 1.1680 257 - 5091.5000 0.96300 0.01087 0.7930 1.1490 268 - 5092.5000 0.99800 0.01131 0.8040 1.1680 259 - 5093.5000 0.99900 0.01075 0.8170 1.1630 259 - 5094.5000 0.97700 0.01252 0.7950 1.2020 264 - 5095.5000 0.97400 0.01120 0.8000 1.1640 264 - 5096.5000 0.96600 0.01226 0.7800 1.1760 261 - 5097.5000 0.95500 0.01154 0.7790 1.1490 257 - 5098.5000 0.98200 0.01089 0.8180 1.1720 264 - 5099.5000 0.96200 0.01089 0.7760 1.1300 264 - 5100.5000 0.97100 0.01180 0.7980 1.1750 255 - 5101.5000 0.95900 0.01022 0.8070 1.1390 264 - 5102.5000 0.99800 0.00961 0.8540 1.1640 260 - 5103.5000 0.94500 0.01136 0.7790 1.1460 261 - 5104.5000 0.94400 0.01161 0.7850 1.1600 261 - 5105.5000 0.97700 0.01105 0.7970 1.1520 258 - 5106.5000 0.95000 0.01106 0.8140 1.1700 259 - 5107.5000 0.96600 0.01026 0.8210 1.1520 260 - 5108.5000 0.98700 0.01164 0.7900 1.1660 261 - 5109.5000 0.97000 0.01168 0.8120 1.1850 255 - 5110.5000 0.97400 0.01073 0.7900 1.1340 257 - 5111.5000 0.97100 0.01158 0.7920 1.1670 262 - 5112.5000 0.98900 0.01176 0.8090 1.1800 249 - 5113.5000 0.97400 0.01246 0.7960 1.1940 255 - 5114.5000 0.95900 0.01106 0.8130 1.1690 259 - 5115.5000 0.99100 0.01123 0.8270 1.1890 260 - 5116.5000 0.96800 0.01212 0.7790 1.1660 255 - 5117.5000 0.98100 0.01205 0.7790 1.1640 255 - 5118.5000 0.97700 0.01121 0.8140 1.1740 258 - 5119.5000 0.92900 0.01084 0.7690 1.1180 259 - 5120.5000 0.99400 0.01206 0.8110 1.1930 251 - 5121.5000 0.99300 0.01239 0.8170 1.2110 253 - 5122.5000 0.98900 0.01165 0.8140 1.1860 255 - 5123.5000 0.97400 0.01047 0.8050 1.1380 253 - 5124.5000 0.95000 0.01114 0.7850 1.1490 267 - 5125.5000 0.95500 0.01119 0.7780 1.1310 249 - 5126.5000 0.97500 0.01290 0.8000 1.2070 249 - 5127.5000 0.97500 0.01007 0.8310 1.1520 254 - 5128.5000 0.98200 0.00926 0.8350 1.1320 257 - 5129.5000 0.98400 0.01021 0.8360 1.1640 258 - 5130.5000 0.97100 0.01088 0.8040 1.1480 250 - 5131.5000 0.99100 0.01064 0.8050 1.1460 257 - 5132.5000 0.98000 0.01215 0.7960 1.1840 255 - 5133.5000 1.01400 0.01187 0.8410 1.2150 248 - 5134.5000 1.01600 0.01053 0.8420 1.1810 259 - 5135.5000 1.02600 0.01153 0.8490 1.2180 256 - 5136.5000 0.98700 0.01143 0.8050 1.1700 255 - 5137.5000 0.99400 0.01134 0.8140 1.1810 262 - 5138.5000 0.99300 0.01099 0.8240 1.1700 248 - 5139.5000 0.99700 0.01264 0.8150 1.2130 248 - 5140.5000 1.00600 0.01076 0.8410 1.1820 251 - 5141.5000 1.03300 0.01086 0.8650 1.2140 258 - 5142.5000 1.00900 0.01054 0.8370 1.1710 251 - 5143.5000 1.01600 0.01081 0.8440 1.1860 250 - 5144.5000 1.00600 0.00937 0.8500 1.1510 258 - 5145.5000 0.97000 0.01123 0.8200 1.1780 254 - 5146.5000 1.00200 0.01009 0.8570 1.1730 245 - 5147.5000 1.01800 0.01219 0.8310 1.2210 256 - 5148.5000 1.01800 0.01069 0.8680 1.2100 256 - 5149.5000 0.98800 0.01107 0.7880 1.1410 254 - 5150.5000 1.01400 0.01199 0.8330 1.2210 262 - 5151.5000 1.00100 0.01055 0.8250 1.1560 246 - 5152.5000 1.01800 0.00934 0.8610 1.1540 246 - 5153.5000 1.03300 0.01012 0.8740 1.1960 253 - 5154.5000 1.01700 0.00941 0.8720 1.1720 254 - 5155.5000 1.02600 0.01076 0.8410 1.1820 251 - 5156.5000 1.04500 0.01124 0.8590 1.2130 248 - 5157.5000 1.03900 0.01092 0.8870 1.2310 248 - 5158.5000 1.04700 0.01176 0.8330 1.2080 254 - 5159.5000 1.08100 0.01061 0.9050 1.2420 252 - 5160.5000 1.04200 0.01026 0.8980 1.2230 251 - 5161.5000 1.05300 0.01046 0.8820 1.2160 255 - 5162.5000 1.03800 0.01256 0.8450 1.2350 241 - 5163.5000 1.05800 0.01168 0.8580 1.2280 251 - 5164.5000 1.01500 0.01169 0.8290 1.2010 253 - 5165.5000 1.04900 0.01155 0.8770 1.2350 240 - 5166.5000 1.01000 0.00923 0.8850 1.1820 259 - 5167.5000 1.03500 0.00991 0.8810 1.1970 254 - 5168.5000 1.01200 0.00915 0.8880 1.1780 251 - 5169.5000 1.00200 0.00970 0.8360 1.1470 257 - 5170.5000 0.99900 0.00976 0.8470 1.1520 244 - 5171.5000 0.98700 0.01107 0.8530 1.1960 240 - 5172.5000 0.99000 0.00940 0.8700 1.1690 253 - 5173.5000 1.02100 0.00952 0.8600 1.1630 253 - 5174.5000 1.01400 0.01004 0.8430 1.1610 251 - 5175.5000 1.04000 0.01069 0.8610 1.2030 256 - 5176.5000 1.02800 0.00952 0.8810 1.1790 245 - 5177.5000 1.06700 0.01144 0.8580 1.2170 246 - 5178.5000 1.02500 0.01144 0.8530 1.2120 246 - 5179.5000 1.00600 0.01024 0.8790 1.2040 252 - 5180.5000 1.03100 0.01062 0.8560 1.1890 246 - 5181.5000 1.02300 0.01008 0.8600 1.1800 252 - 5182.5000 1.02300 0.01009 0.8690 1.1830 242 - 5183.5000 1.03000 0.01106 0.8520 1.1990 246 - 5184.5000 1.00200 0.00999 0.8560 1.1700 247 - 5185.5000 0.98500 0.00845 0.8590 1.1240 246 - 5186.5000 0.99400 0.00931 0.8340 1.1250 244 - 5187.5000 0.99500 0.01016 0.8530 1.1690 242 - 5188.5000 1.01900 0.01031 0.8460 1.1700 247 - 5189.5000 1.02600 0.01107 0.8550 1.2000 243 - 5190.5000 1.05700 0.01171 0.8400 1.2080 247 - 5191.5000 1.02000 0.00983 0.8660 1.1750 247 - 5192.5000 1.05600 0.01123 0.8580 1.2130 250 - 5193.5000 1.01200 0.01126 0.8430 1.1920 240 - 5194.5000 1.03400 0.01039 0.8460 1.1760 252 - 5195.5000 1.02100 0.00984 0.8580 1.1680 248 - 5196.5000 1.05900 0.01045 0.8730 1.1960 239 - 5197.5000 1.04000 0.01000 0.8790 1.1960 251 - 5198.5000 1.08100 0.01046 0.8810 1.2090 246 - 5199.5000 1.07500 0.01136 0.8760 1.2310 244 - 5200.5000 1.08100 0.01130 0.8650 1.2210 248 - 5201.5000 1.03100 0.01142 0.8630 1.2220 247 - 5202.5000 1.07100 0.01289 0.8680 1.2650 237 - 5203.5000 1.03200 0.01180 0.8400 1.2110 247 - 5204.5000 1.05100 0.01256 0.8360 1.2300 246 - 5205.5000 1.00500 0.01077 0.8380 1.1750 245 - 5206.5000 1.00900 0.01078 0.8290 1.1670 246 - 5207.5000 1.00200 0.01041 0.8400 1.1660 245 - 5208.5000 1.02000 0.01064 0.8610 1.1880 236 - 5209.5000 0.98100 0.00999 0.8420 1.1560 247 - 5210.5000 1.01700 0.01086 0.8380 1.1780 245 - 5211.5000 0.99800 0.01091 0.8320 1.1750 247 - 5212.5000 0.99800 0.01166 0.8180 1.1800 241 - 5213.5000 0.98700 0.01128 0.8100 1.1630 245 - 5214.5000 1.01900 0.01213 0.8370 1.2090 235 - 5215.5000 1.02300 0.00983 0.8640 1.1710 244 - 5216.5000 1.03000 0.01167 0.8530 1.2190 246 - 5217.5000 1.02800 0.01231 0.8180 1.2050 247 - 5218.5000 1.01000 0.01206 0.8390 1.2150 243 - 5219.5000 1.02100 0.01046 0.8290 1.1550 243 - 5220.5000 1.04100 0.01096 0.8730 1.2090 235 - 5221.5000 1.00700 0.01205 0.8230 1.2010 246 - 5222.5000 1.02200 0.01048 0.8660 1.1940 245 - 5223.5000 1.06300 0.01288 0.8220 1.2220 241 - 5224.5000 1.04600 0.01133 0.8400 1.1940 244 - 5225.5000 0.98700 0.01122 0.8000 1.1520 246 - 5226.5000 1.01300 0.01033 0.8520 1.1680 234 - 5227.5000 1.00700 0.01148 0.8260 1.1860 246 - 5228.5000 1.02000 0.01148 0.8350 1.1950 246 - 5229.5000 0.98200 0.01231 0.7840 1.1630 237 - 5230.5000 1.01100 0.01185 0.8160 1.1900 249 - 5231.5000 1.00200 0.01172 0.8190 1.1830 241 - 5232.5000 1.05300 0.01050 0.8990 1.2230 238 - 5233.5000 1.03600 0.01277 0.8140 1.2120 243 - 5234.5000 1.01800 0.01191 0.8380 1.2100 244 - 5235.5000 1.03100 0.01200 0.8290 1.2000 239 - 5236.5000 1.02600 0.01142 0.8420 1.2010 247 - 5237.5000 1.04500 0.01274 0.8340 1.2280 239 - 5238.5000 1.08000 0.01219 0.8530 1.2300 239 - 5239.5000 1.03700 0.01167 0.8470 1.2100 242 - 5240.5000 1.02400 0.01236 0.8370 1.2200 240 - 5241.5000 1.05400 0.01100 0.8580 1.2010 243 - 5242.5000 1.04300 0.01191 0.8650 1.2340 240 - 5243.5000 1.05700 0.01167 0.8540 1.2140 238 - 5244.5000 1.03200 0.01272 0.8340 1.2290 241 - 5245.5000 1.04300 0.01232 0.8500 1.2300 238 - 5246.5000 1.01700 0.01093 0.8730 1.2130 242 - 5247.5000 1.02500 0.01218 0.8080 1.1910 247 - 5248.5000 1.04300 0.01173 0.8460 1.2050 234 - 5249.5000 1.01900 0.01254 0.8180 1.2050 238 - 5250.5000 1.02900 0.01061 0.8450 1.1750 242 - 5251.5000 1.03100 0.01061 0.8580 1.1860 239 - 5252.5000 1.03300 0.01171 0.8380 1.2030 243 - 5253.5000 1.02800 0.01228 0.8320 1.2140 242 - 5254.5000 0.99800 0.01170 0.8110 1.1690 234 - 5255.5000 1.02400 0.01162 0.8480 1.2050 236 - 5256.5000 1.02000 0.01015 0.8720 1.1870 241 - 5257.5000 1.03500 0.01235 0.8450 1.2300 243 - 5258.5000 1.02800 0.01298 0.8190 1.2170 235 - 5259.5000 1.02600 0.01276 0.8310 1.2280 242 - 5260.5000 1.00300 0.01224 0.8050 1.1820 237 - 5261.5000 1.04400 0.01336 0.8410 1.2540 239 - 5262.5000 1.03900 0.01194 0.8380 1.2080 240 - 5263.5000 1.02200 0.01131 0.8360 1.1850 238 - 5264.5000 0.99900 0.01080 0.8250 1.1560 235 - 5265.5000 1.01200 0.01102 0.8570 1.1970 238 - 5266.5000 0.98900 0.01097 0.8380 1.1750 236 - 5267.5000 1.00400 0.01110 0.8460 1.1900 240 - 5268.5000 0.99900 0.01031 0.8350 1.1530 238 - 5269.5000 0.96700 0.01187 0.7960 1.1630 239 - 5270.5000 0.98800 0.01194 0.7960 1.1690 244 - 5271.5000 0.97100 0.01119 0.8270 1.1680 232 - 5272.5000 1.00500 0.01200 0.8180 1.1850 234 - 5273.5000 1.00100 0.01224 0.8270 1.2070 241 - 5274.5000 1.03900 0.01177 0.8560 1.2200 239 - 5275.5000 1.01900 0.01183 0.8510 1.2190 242 - 5276.5000 1.03900 0.01289 0.8220 1.2180 236 - 5277.5000 1.02800 0.01055 0.8650 1.1920 240 - 5278.5000 1.07100 0.01224 0.8890 1.2620 232 - 5279.5000 1.08200 0.01172 0.8630 1.2260 240 - 5280.5000 1.09300 0.01275 0.8450 1.2400 240 - 5281.5000 1.02600 0.01225 0.8280 1.2060 238 - 5282.5000 1.05400 0.01132 0.8520 1.2020 239 - 5283.5000 1.04600 0.01375 0.8030 1.2290 240 - 5284.5000 1.04500 0.01247 0.8430 1.2270 237 - 5285.5000 1.08900 0.01035 0.8970 1.2170 239 - 5286.5000 1.03500 0.01110 0.8720 1.2110 233 - 5287.5000 1.01600 0.01262 0.8370 1.2320 245 - 5288.5000 1.05100 0.01272 0.8540 1.2380 228 - 5289.5000 1.07600 0.01226 0.8590 1.2340 234 - 5290.5000 1.05900 0.01230 0.8470 1.2290 241 - 5291.5000 1.08400 0.01254 0.8770 1.2630 237 - 5292.5000 1.07500 0.01309 0.8430 1.2410 231 - 5293.5000 1.06900 0.01310 0.8420 1.2470 239 - 5294.5000 1.08200 0.01278 0.8770 1.2630 228 - 5295.5000 1.05900 0.01192 0.8820 1.2450 232 - 5296.5000 1.04500 0.01180 0.8610 1.2260 239 - 5297.5000 1.03600 0.01235 0.8450 1.2220 233 - 5298.5000 1.04700 0.01283 0.8490 1.2490 243 - 5299.5000 1.01700 0.01255 0.8380 1.2170 228 - 5300.5000 1.00500 0.01362 0.8110 1.2250 231 - 5301.5000 1.02500 0.01296 0.8220 1.2210 237 - 5302.5000 1.04600 0.01325 0.8510 1.2590 237 - 5303.5000 1.02800 0.01340 0.8120 1.2210 233 - 5304.5000 1.08500 0.01314 0.8500 1.2530 235 - 5305.5000 1.05800 0.01336 0.8150 1.2230 233 - 5306.5000 1.08500 0.01287 0.8790 1.2720 233 - 5307.5000 1.06000 0.01367 0.8510 1.2710 236 - 5308.5000 1.08800 0.01386 0.8590 1.2840 235 - 5309.5000 1.05700 0.01313 0.8420 1.2470 238 - 5310.5000 1.07900 0.01317 0.8610 1.2580 227 - 5311.5000 1.04900 0.01317 0.8750 1.2710 226 - 5312.5000 1.04700 0.01454 0.8310 1.2750 233 - 5313.5000 1.08300 0.01304 0.8530 1.2520 234 - 5314.5000 1.06700 0.01345 0.8270 1.2350 230 - 5315.5000 1.09200 0.01359 0.8540 1.2690 233 - 5316.5000 1.02100 0.01378 0.8300 1.2470 229 - 5317.5000 1.08600 0.01379 0.8280 1.2480 232 - 5318.5000 1.07100 0.01236 0.8590 1.2370 234 - 5319.5000 1.09600 0.01437 0.8560 1.2890 227 - 5320.5000 1.05200 0.01396 0.8230 1.2500 234 - 5321.5000 1.06100 0.01249 0.8520 1.2250 223 - 5322.5000 1.06100 0.01350 0.8320 1.2370 225 - 5323.5000 1.05100 0.01204 0.8620 1.2320 236 - 5324.5000 1.04800 0.01280 0.8750 1.2640 231 - 5325.5000 1.00100 0.01186 0.8390 1.1940 224 - 5326.5000 1.02800 0.01224 0.8410 1.2180 237 - 5327.5000 1.01200 0.01235 0.7970 1.1700 228 - 5328.5000 1.02300 0.01290 0.8040 1.1970 232 - 5329.5000 1.02300 0.01244 0.8420 1.2210 232 - 5330.5000 0.99200 0.01168 0.8200 1.1720 227 - 5331.5000 1.01000 0.01348 0.7970 1.2130 238 - 5332.5000 0.99500 0.01261 0.7990 1.1790 227 - 5333.5000 1.03900 0.01267 0.8760 1.2510 219 - 5334.5000 1.01700 0.01327 0.8080 1.2130 233 - 5335.5000 1.05000 0.01334 0.8260 1.2280 227 - 5336.5000 0.99500 0.01335 0.8010 1.2050 229 - 5337.5000 1.04300 0.01397 0.8080 1.2300 228 - 5338.5000 1.03600 0.01426 0.8100 1.2330 220 - 5339.5000 1.04400 0.01321 0.8180 1.2230 235 - 5340.5000 1.02300 0.01436 0.8100 1.2370 221 - 5341.5000 0.99300 0.01340 0.7750 1.1780 226 - 5342.5000 1.03200 0.01234 0.8190 1.1900 226 - 5343.5000 0.99100 0.01379 0.7890 1.2010 223 - 5344.5000 1.02400 0.01345 0.8360 1.2430 229 - 5345.5000 1.00600 0.01184 0.8330 1.1930 231 - 5346.5000 0.97200 0.01252 0.7970 1.1710 223 - 5347.5000 0.99700 0.01264 0.8080 1.1930 232 - 5348.5000 0.97900 0.01223 0.8260 1.1880 219 - 5349.5000 0.99800 0.01359 0.8130 1.2170 221 - 5350.5000 1.00800 0.01451 0.7940 1.2360 232 - 5351.5000 0.99800 0.01346 0.7950 1.1960 222 - 5352.5000 0.96900 0.01350 0.7460 1.1520 226 - 5353.5000 0.98900 0.01289 0.8140 1.2050 230 - 5354.5000 0.97100 0.01355 0.7950 1.1950 218 - 5355.5000 0.96600 0.01441 0.7910 1.2270 229 - 5356.5000 1.05600 0.01302 0.8370 1.2240 221 - 5357.5000 1.01000 0.01389 0.7910 1.2020 219 - 5358.5000 1.03400 0.01355 0.8070 1.2180 230 - 5359.5000 1.03300 0.01487 0.7940 1.2350 220 - 5360.5000 1.02100 0.01443 0.8150 1.2490 226 - 5361.5000 1.03900 0.01270 0.8520 1.2330 225 - 5362.5000 1.01700 0.01517 0.7850 1.2370 222 - 5363.5000 1.01000 0.01507 0.7770 1.2280 224 - 5364.5000 1.01100 0.01473 0.7690 1.2120 226 - 5365.5000 1.04200 0.01436 0.8350 1.2600 219 - 5366.5000 1.03100 0.01250 0.8270 1.2020 225 - 5367.5000 1.00900 0.01437 0.7580 1.1880 224 - 5368.5000 0.98200 0.01533 0.7450 1.2080 228 - 5369.5000 1.02500 0.01258 0.7860 1.1600 221 - 5370.5000 0.97000 0.01402 0.7930 1.2060 217 - 5371.5000 0.98400 0.01315 0.7990 1.1960 228 - 5372.5000 0.99700 0.01224 0.7950 1.1630 226 - 5373.5000 0.97400 0.01413 0.7500 1.1730 224 - 5374.5000 0.99200 0.01334 0.7600 1.1630 228 - 5375.5000 0.98600 0.01391 0.7840 1.1920 215 - 5376.5000 0.97800 0.01341 0.8110 1.2080 219 - 5377.5000 0.98200 0.01573 0.7580 1.2300 225 - 5378.5000 0.98200 0.01534 0.7620 1.2140 217 - 5379.5000 0.97600 0.01394 0.7800 1.2000 227 - 5380.5000 1.01100 0.01375 0.7910 1.1990 220 - 5381.5000 0.98800 0.01416 0.7850 1.2080 223 - 5382.5000 0.96700 0.01358 0.7700 1.1710 218 - 5383.5000 0.95900 0.01557 0.7390 1.2070 226 - 5384.5000 1.00400 0.01561 0.7710 1.2340 220 - 5385.5000 0.95800 0.01507 0.7600 1.2080 221 - 5386.5000 0.99800 0.01370 0.8050 1.2150 224 - 5387.5000 0.99800 0.01343 0.7890 1.1910 224 - 5388.5000 0.97300 0.01527 0.7460 1.1990 220 - 5389.5000 0.97500 0.01329 0.7760 1.1710 221 - 5390.5000 0.96600 0.01416 0.7680 1.1880 220 - 5391.5000 0.99900 0.01392 0.7890 1.2010 219 - 5392.5000 0.95200 0.01344 0.7690 1.1660 218 - 5393.5000 0.93000 0.01450 0.7090 1.1390 220 - 5394.5000 0.95100 0.01326 0.7490 1.1460 224 - 5395.5000 0.94600 0.01297 0.7530 1.1360 218 - 5396.5000 0.93700 0.01283 0.7700 1.1480 217 - 5397.5000 0.92400 0.01346 0.7420 1.1440 223 - 5398.5000 0.94000 0.01571 0.7200 1.1860 220 - 5399.5000 0.96600 0.01383 0.7430 1.1580 225 - 5400.5000 0.93100 0.01248 0.7480 1.1140 215 - 5401.5000 0.96600 0.01316 0.7630 1.1470 213 - 5402.5000 0.94400 0.01410 0.7410 1.1640 225 - 5403.5000 0.94300 0.01355 0.7590 1.1590 218 - 5404.5000 0.97100 0.01410 0.7220 1.1430 223 - 5405.5000 0.95900 0.01412 0.7380 1.1560 219 - 5406.5000 0.95900 0.01329 0.7580 1.1450 212 - 5407.5000 0.92800 0.01281 0.7630 1.1440 221 - 5408.5000 0.94500 0.01302 0.7760 1.1640 222 - 5409.5000 0.91400 0.01317 0.7360 1.1250 218 - 5410.5000 0.93100 0.01264 0.7540 1.1280 219 - 5411.5000 0.94800 0.01374 0.7640 1.1670 215 - 5412.5000 0.89000 0.01225 0.7630 1.1290 223 - 5413.5000 0.96400 0.01372 0.7610 1.1690 221 - 5414.5000 0.95400 0.01401 0.7610 1.1720 215 - 5415.5000 0.96100 0.01352 0.7620 1.1640 221 - 5416.5000 0.96700 0.01377 0.7790 1.1810 213 - 5417.5000 0.97100 0.01399 0.7630 1.1770 219 - 5418.5000 0.97400 0.01315 0.7980 1.1880 220 - 5419.5000 0.93100 0.01453 0.7330 1.1530 209 - 5420.5000 0.95500 0.01503 0.7450 1.1920 221 - 5421.5000 0.96700 0.01459 0.7620 1.1870 212 - 5422.5000 0.96100 0.01375 0.7640 1.1690 217 - 5423.5000 0.98800 0.01252 0.7920 1.1610 217 - 5424.5000 0.92700 0.01360 0.7460 1.1410 211 - 5425.5000 0.96700 0.01453 0.7340 1.1670 222 - 5426.5000 0.99900 0.01394 0.7730 1.1790 212 - 5427.5000 0.95900 0.01510 0.7420 1.1900 220 - 5428.5000 1.00400 0.01615 0.7540 1.2330 220 - 5429.5000 0.96200 0.01525 0.7370 1.1790 210 - 5430.5000 0.98000 0.01389 0.7500 1.1610 219 - 5431.5000 0.96100 0.01484 0.7300 1.1580 208 - 5432.5000 0.96400 0.01303 0.7500 1.1340 217 - 5433.5000 0.95100 0.01402 0.7390 1.1540 219 - 5434.5000 0.93100 0.01418 0.7260 1.1370 210 - 5435.5000 0.96300 0.01436 0.7490 1.1730 218 - 5436.5000 0.95700 0.01477 0.7410 1.1690 210 - 5437.5000 0.93900 0.01395 0.7440 1.1540 216 - 5438.5000 0.94500 0.01510 0.7370 1.1880 223 - 5439.5000 0.95800 0.01521 0.7450 1.1870 211 - 5440.5000 0.96300 0.01395 0.7540 1.1650 217 - 5441.5000 0.97100 0.01297 0.7620 1.1370 209 - 5442.5000 0.93400 0.01585 0.7350 1.2020 217 - 5443.5000 0.97700 0.01395 0.7750 1.1840 215 - 5444.5000 0.96500 0.01473 0.7130 1.1430 213 - 5445.5000 0.98500 0.01514 0.7520 1.1980 217 - 5446.5000 0.94100 0.01414 0.7390 1.1470 208 - 5447.5000 0.94300 0.01354 0.7480 1.1470 217 - 5448.5000 0.91500 0.01366 0.7530 1.1470 208 - 5449.5000 0.92600 0.01411 0.7450 1.1550 211 - 5450.5000 0.93900 0.01328 0.7380 1.1220 209 - 5451.5000 0.93500 0.01397 0.7320 1.1330 206 - 5452.5000 0.94800 0.01336 0.7440 1.1350 214 - 5453.5000 0.95500 0.01398 0.7390 1.1450 211 - 5454.5000 0.91800 0.01435 0.7190 1.1370 212 - 5455.5000 0.93700 0.01279 0.7560 1.1240 207 - 5456.5000 0.91400 0.01491 0.7270 1.1520 203 - 5457.5000 0.91700 0.01322 0.7420 1.1270 212 - 5458.5000 0.90600 0.01435 0.7130 1.1320 213 - 5459.5000 0.95500 0.01183 0.7680 1.1150 215 - 5460.5000 0.93400 0.01219 0.7370 1.0870 206 - 5461.5000 0.96000 0.01325 0.7800 1.1640 210 - 5462.5000 0.95600 0.01415 0.7610 1.1710 210 - 5463.5000 0.92400 0.01559 0.7040 1.1600 214 - 5464.5000 0.95300 0.01555 0.7180 1.1720 213 - 5465.5000 0.93900 0.01491 0.7200 1.1470 205 - 5466.5000 0.96000 0.01501 0.7560 1.1890 208 - 5467.5000 0.95900 0.01459 0.7260 1.1490 210 - 5468.5000 0.92500 0.01599 0.6990 1.1590 207 - 5469.5000 0.96500 0.01473 0.7320 1.1600 211 - 5470.5000 0.95900 0.01442 0.7210 1.1350 206 - 5471.5000 0.95800 0.01490 0.7450 1.1780 211 - 5472.5000 0.94100 0.01532 0.7350 1.1780 209 - 5473.5000 0.94400 0.01380 0.7360 1.1370 211 - 5474.5000 0.91700 0.01348 0.7260 1.1100 203 - 5475.5000 0.91600 0.01407 0.7270 1.1310 206 - 5476.5000 0.92800 0.01432 0.7220 1.1330 206 - 5477.5000 0.91400 0.01321 0.7260 1.1070 208 - 5478.5000 0.96200 0.01506 0.7320 1.1580 200 - 5479.5000 0.90900 0.01394 0.7230 1.1300 213 - 5480.5000 0.93400 0.01418 0.7190 1.1230 203 - 5481.5000 0.88800 0.01408 0.7190 1.1290 212 - 5482.5000 0.92300 0.01446 0.7330 1.1550 213 - 5483.5000 0.96700 0.01502 0.7250 1.1550 205 - 5484.5000 0.97100 0.01359 0.7440 1.1350 207 - 5485.5000 0.95000 0.01372 0.7460 1.1370 203 - 5486.5000 0.92900 0.01463 0.7320 1.1540 208 - 5487.5000 0.96900 0.01435 0.7500 1.1630 207 - 5488.5000 0.91200 0.01546 0.7050 1.1540 211 - 5489.5000 0.95100 0.01531 0.7090 1.1410 199 - 5490.5000 0.93900 0.01411 0.7090 1.1140 206 - 5491.5000 0.92700 0.01366 0.7520 1.1450 207 - 5492.5000 0.92000 0.01599 0.7070 1.1660 206 - 5493.5000 0.93600 0.01539 0.7080 1.1550 211 - 5494.5000 0.92500 0.01467 0.7070 1.1240 202 - 5495.5000 0.91300 0.01352 0.7400 1.1290 207 - 5496.5000 0.91900 0.01449 0.7550 1.1690 204 - 5497.5000 0.96700 0.01446 0.7370 1.1580 212 - 5498.5000 0.95500 0.01411 0.7410 1.1430 203 - 5499.5000 0.95200 0.01453 0.7320 1.1450 202 - 5500.5000 0.88100 0.01587 0.7100 1.1700 210 - 5501.5000 0.94100 0.01435 0.7370 1.1450 202 - 5502.5000 0.91500 0.01505 0.7200 1.1500 204 - 5503.5000 0.94900 0.01401 0.7250 1.1310 210 - 5504.5000 0.95700 0.01386 0.7490 1.1410 200 - 5505.5000 0.95200 0.01342 0.7430 1.1310 209 - 5506.5000 0.95800 0.01411 0.7440 1.1470 204 - 5507.5000 0.91600 0.01470 0.6900 1.1190 213 - 5508.5000 0.89600 0.01519 0.6930 1.1140 192 - 5509.5000 0.93300 0.01442 0.7460 1.1570 203 - 5510.5000 0.95600 0.01390 0.7380 1.1380 207 - 5511.5000 0.92500 0.01375 0.7400 1.1300 201 - 5512.5000 0.91800 0.01292 0.7350 1.1040 204 - 5513.5000 0.89800 0.01318 0.7230 1.0920 196 - 5514.5000 0.94800 0.01289 0.7590 1.1280 205 - 5515.5000 0.94300 0.01329 0.7500 1.1230 197 - 5516.5000 0.96400 0.01503 0.7330 1.1580 200 - 5517.5000 0.95600 0.01369 0.7370 1.1280 204 - 5518.5000 0.94700 0.01280 0.7730 1.1340 199 - 5519.5000 0.91400 0.01474 0.7220 1.1400 201 - 5520.5000 0.97000 0.01408 0.7620 1.1690 209 - 5521.5000 0.95800 0.01509 0.7320 1.1610 202 - 5522.5000 0.95900 0.01513 0.7150 1.1440 201 - 5523.5000 0.93600 0.01563 0.7200 1.1600 198 - 5524.5000 0.94900 0.01470 0.7540 1.1730 203 - 5525.5000 0.97700 0.01572 0.7170 1.1660 204 - 5526.5000 0.92800 0.01464 0.7340 1.1480 200 - 5527.5000 0.96200 0.01504 0.7300 1.1500 195 - 5528.5000 0.97200 0.01432 0.7540 1.1610 202 - 5529.5000 0.96400 0.01411 0.7600 1.1620 203 - 5530.5000 0.93900 0.01607 0.7050 1.1630 203 - 5531.5000 0.94900 0.01485 0.7170 1.1390 202 - 5532.5000 0.95600 0.01472 0.7560 1.1670 195 - 5533.5000 0.94700 0.01450 0.7490 1.1570 198 - 5534.5000 1.00200 0.01327 0.7880 1.1690 206 - 5535.5000 0.95600 0.01457 0.7470 1.1580 199 - 5536.5000 0.97000 0.01591 0.7380 1.1890 201 - 5537.5000 0.95700 0.01487 0.7380 1.1480 190 - 5538.5000 0.94300 0.01291 0.7590 1.1270 203 - 5539.5000 0.97400 0.01576 0.7340 1.1810 201 - 5540.5000 0.97500 0.01457 0.7560 1.1670 199 - 5541.5000 0.91400 0.01522 0.7100 1.1340 194 - 5542.5000 0.95800 0.01655 0.7430 1.2110 200 - 5543.5000 1.00000 0.01593 0.7820 1.2280 196 - 5544.5000 0.98200 0.01592 0.7130 1.1610 198 - 5545.5000 1.01000 0.01510 0.7490 1.1760 200 - 5546.5000 0.98100 0.01509 0.7670 1.1840 191 - 5547.5000 0.92100 0.01502 0.7320 1.1600 203 - 5548.5000 0.97800 0.01435 0.7480 1.1530 199 - 5549.5000 0.96800 0.01729 0.6980 1.1870 200 - 5550.5000 0.99000 0.01512 0.7230 1.1420 192 - 5551.5000 0.99000 0.01446 0.7700 1.1790 200 - 5552.5000 0.98400 0.01443 0.7760 1.1790 195 - 5553.5000 0.95000 0.01646 0.7090 1.1710 197 - 5554.5000 0.97300 0.01493 0.7670 1.1840 195 - 5555.5000 0.95500 0.01563 0.7380 1.1690 190 - 5556.5000 0.95000 0.01526 0.7260 1.1510 194 - 5557.5000 0.94200 0.01435 0.7360 1.1410 199 - 5558.5000 0.92900 0.01541 0.7280 1.1540 191 - 5559.5000 0.92700 0.01591 0.7120 1.1610 199 - 5560.5000 0.94400 0.01575 0.7380 1.1710 189 - 5561.5000 0.95700 0.01542 0.7540 1.1890 199 - 5562.5000 0.93800 0.01493 0.7300 1.1470 195 - 5563.5000 0.92700 0.01642 0.6980 1.1590 197 - 5564.5000 0.92400 0.01476 0.7320 1.1390 190 - 5565.5000 0.92400 0.01475 0.7290 1.1430 197 - 5566.5000 0.95300 0.01483 0.7250 1.1370 193 - 5567.5000 0.93000 0.01536 0.6940 1.1220 194 - 5568.5000 0.92900 0.01358 0.7250 1.1080 199 - 5569.5000 0.97300 0.01494 0.7270 1.1390 190 - 5570.5000 0.91000 0.01351 0.7290 1.1110 200 - 5571.5000 0.95900 0.01382 0.7440 1.1310 196 - 5572.5000 0.95400 0.01611 0.6930 1.1440 196 - 5573.5000 0.91200 0.01453 0.7180 1.1110 183 - 5574.5000 0.89800 0.01325 0.7420 1.1120 195 - 5575.5000 0.96000 0.01342 0.7640 1.1370 193 - 5576.5000 0.93200 0.01493 0.7400 1.1560 194 - 5577.5000 0.92900 0.01421 0.7200 1.1220 200 - 5578.5000 0.94100 0.01477 0.7470 1.1500 186 - 5579.5000 0.94600 0.01451 0.7360 1.1380 192 - 5580.5000 0.95300 0.01578 0.7200 1.1630 197 - 5581.5000 0.94400 0.01695 0.6990 1.1700 193 - 5582.5000 0.90700 0.01448 0.7220 1.1180 187 - 5583.5000 0.95600 0.01504 0.7480 1.1690 196 - 5584.5000 0.93500 0.01400 0.7510 1.1370 190 - 5585.5000 0.95100 0.01490 0.7410 1.1540 192 - 5586.5000 0.92400 0.01478 0.6840 1.1040 202 - 5587.5000 0.92800 0.01490 0.7400 1.1410 181 - 5588.5000 0.90100 0.01386 0.7260 1.1120 194 - 5589.5000 0.95700 0.01343 0.7330 1.1090 196 - 5590.5000 0.87500 0.01335 0.7060 1.0780 194 - 5591.5000 0.90200 0.01265 0.7320 1.0770 186 - 5592.5000 0.90100 0.01164 0.7460 1.0720 196 - 5593.5000 0.90200 0.01260 0.7490 1.0990 193 - 5594.5000 0.90100 0.01411 0.7250 1.1150 191 - 5595.5000 0.90000 0.01396 0.7030 1.0950 197 - 5596.5000 0.89700 0.01378 0.7380 1.1140 186 - 5597.5000 0.89000 0.01418 0.7080 1.1030 194 - 5598.5000 0.93200 0.01303 0.7280 1.0920 195 - 5599.5000 0.93900 0.01469 0.7260 1.1330 192 - 5600.5000 0.90600 0.01529 0.6870 1.1040 186 - 5601.5000 0.90100 0.01343 0.7230 1.0980 195 - 5602.5000 0.92100 0.01350 0.7290 1.1050 194 - 5603.5000 0.91200 0.01589 0.6730 1.1100 189 - 5604.5000 0.95000 0.01404 0.7040 1.0960 195 - 5605.5000 0.91200 0.01371 0.7330 1.1030 182 - 5606.5000 0.93700 0.01346 0.7330 1.1080 194 - 5607.5000 0.89000 0.01581 0.6850 1.1220 191 - 5608.5000 0.90800 0.01548 0.7050 1.1330 191 - 5609.5000 0.91800 0.01573 0.7120 1.1400 185 - 5610.5000 0.96100 0.01455 0.7360 1.1370 190 - 5611.5000 0.97600 0.01617 0.7270 1.1750 192 - 5612.5000 0.93200 0.01629 0.7150 1.1640 190 - 5613.5000 0.91700 0.01538 0.7040 1.1200 183 - 5614.5000 0.92400 0.01498 0.7250 1.1380 190 - 5615.5000 0.93600 0.01491 0.7170 1.1280 190 - 5616.5000 0.94700 0.01419 0.7280 1.1170 188 - 5617.5000 0.93200 0.01598 0.6810 1.1170 186 - 5618.5000 0.90400 0.01412 0.6920 1.0740 183 - 5619.5000 0.88800 0.01433 0.7290 1.1240 190 - 5620.5000 0.93300 0.01528 0.7490 1.1690 189 - 5621.5000 0.90600 0.01389 0.7260 1.1120 193 - 5622.5000 0.90300 0.01659 0.6780 1.1170 175 - 5623.5000 0.92400 0.01375 0.7560 1.1300 185 - 5624.5000 0.90500 0.01598 0.6960 1.1330 187 - 5625.5000 0.90700 0.01591 0.6830 1.1180 187 - 5626.5000 0.93300 0.01444 0.7110 1.1090 190 - 5627.5000 0.95800 0.01503 0.7240 1.1240 177 - 5628.5000 0.91700 0.01426 0.7450 1.1380 190 - 5629.5000 0.89400 0.01572 0.6750 1.1050 187 - 5630.5000 0.93300 0.01469 0.7300 1.1340 189 - 5631.5000 0.94200 0.01655 0.7270 1.1710 180 - 5632.5000 0.91900 0.01694 0.7070 1.1690 186 - 5633.5000 0.94200 0.01476 0.7330 1.1410 191 - 5634.5000 0.90700 0.01548 0.7190 1.1470 191 - 5635.5000 0.91600 0.01491 0.6960 1.0950 179 - 5636.5000 0.91800 0.01673 0.6990 1.1540 185 - 5637.5000 0.92700 0.01595 0.7220 1.1560 185 - 5638.5000 0.90700 0.01697 0.6790 1.1380 183 - 5639.5000 0.89100 0.01465 0.6730 1.0790 192 - 5640.5000 0.93400 0.01515 0.7230 1.1250 176 - 5641.5000 0.91300 0.01467 0.7160 1.1140 184 - 5642.5000 0.91500 0.01572 0.6970 1.1270 187 - 5643.5000 0.89500 0.01474 0.6960 1.0960 184 - 5644.5000 0.91700 0.01353 0.7160 1.0830 184 - 5645.5000 0.88100 0.01572 0.7130 1.1430 187 - 5646.5000 0.90600 0.01481 0.7050 1.1090 186 - 5647.5000 0.90800 0.01570 0.6860 1.1130 185 - 5648.5000 0.91300 0.01576 0.7110 1.1340 180 - 5649.5000 0.92600 0.01583 0.7160 1.1420 181 - 5650.5000 0.93000 0.01478 0.7390 1.1400 184 - 5651.5000 0.93700 0.01786 0.6930 1.1710 179 - 5652.5000 0.91500 0.01454 0.7000 1.1020 191 - 5653.5000 0.91100 0.01587 0.6860 1.1070 176 - 5654.5000 0.91600 0.01482 0.7410 1.1430 184 - 5655.5000 0.92600 0.01611 0.7190 1.1490 178 - 5656.5000 0.87400 0.01625 0.6870 1.1290 185 - 5657.5000 0.89500 0.01353 0.7140 1.0760 179 - 5658.5000 0.92900 0.01468 0.7410 1.1370 182 - 5659.5000 0.92400 0.01562 0.7080 1.1340 186 - 5660.5000 0.91100 0.01479 0.7120 1.1100 181 - 5661.5000 0.87000 0.01469 0.6940 1.0870 179 - 5662.5000 0.90800 0.01432 0.7250 1.1050 176 - 5663.5000 0.89100 0.01427 0.7370 1.1220 182 - 5664.5000 0.91300 0.01543 0.6910 1.1050 180 - 5665.5000 0.91900 0.01532 0.6910 1.1090 186 - 5666.5000 0.91000 0.01380 0.7230 1.0840 171 - 5667.5000 0.91800 0.01536 0.7260 1.1460 187 - 5668.5000 0.89100 0.01631 0.6930 1.1270 177 - 5669.5000 0.89300 0.01483 0.7320 1.1300 180 - 5670.5000 0.88800 0.01572 0.7300 1.1400 170 - 5671.5000 0.89000 0.01621 0.7000 1.1410 185 - 5672.5000 0.94600 0.01748 0.7100 1.1790 180 - 5673.5000 0.88900 0.01585 0.7040 1.1280 179 - 5674.5000 0.93900 0.01631 0.7150 1.1390 169 - 5675.5000 0.93100 0.01597 0.7230 1.1540 182 - 5676.5000 0.94800 0.01585 0.7460 1.1700 179 - 5677.5000 0.98000 0.01816 0.7010 1.1870 179 - 5678.5000 0.97000 0.01559 0.7480 1.1570 172 - 5679.5000 0.95200 0.01619 0.7350 1.1670 178 - 5680.5000 0.96800 0.01392 0.7910 1.1560 172 - 5681.5000 0.94500 0.01642 0.7130 1.1450 173 - 5682.5000 0.91800 0.01602 0.7090 1.1400 181 - 5683.5000 0.89300 0.01736 0.7050 1.1590 171 - 5684.5000 0.94000 0.01470 0.7380 1.1380 185 - 5685.5000 0.94400 0.01499 0.7440 1.1450 179 - 5686.5000 0.94100 0.01390 0.7360 1.1070 178 - 5687.5000 0.89000 0.01604 0.7180 1.1300 165 - 5688.5000 0.91700 0.01524 0.7250 1.1350 181 - 5689.5000 0.93000 0.01668 0.7350 1.1800 178 - 5690.5000 0.92800 0.01501 0.7400 1.1370 175 - 5691.5000 0.95600 0.01732 0.6960 1.1490 171 - 5692.5000 0.95100 0.01617 0.7240 1.1580 180 - 5693.5000 0.93700 0.01578 0.7470 1.1670 177 - 5694.5000 0.95500 0.01763 0.7160 1.1850 177 - 5695.5000 0.90800 0.01636 0.7070 1.1360 172 - 5696.5000 0.93500 0.01708 0.7400 1.1920 175 - 5697.5000 0.94200 0.01466 0.7680 1.1580 177 - 5698.5000 0.95000 0.01580 0.7250 1.1430 175 - 5699.5000 0.93900 0.01468 0.7010 1.0960 181 - 5700.5000 0.92800 0.01361 0.7380 1.0960 173 - 5701.5000 0.94000 0.01530 0.7550 1.1610 176 - 5702.5000 0.92800 0.01727 0.7040 1.1610 175 - 5703.5000 0.93600 0.01540 0.7190 1.1300 178 - 5704.5000 0.92600 0.01627 0.7040 1.1270 169 - 5705.5000 0.89700 0.01372 0.7360 1.1020 178 - 5706.5000 0.91200 0.01632 0.7150 1.1480 176 - 5707.5000 0.93400 0.01506 0.7370 1.1410 180 - 5708.5000 0.91900 0.01559 0.6890 1.0920 167 - 5709.5000 0.89000 0.01656 0.6950 1.1430 183 - 5710.5000 0.92200 0.01655 0.7560 1.1940 175 - 5711.5000 0.92300 0.01462 0.7340 1.1220 176 - 5712.5000 0.91300 0.01531 0.7300 1.1270 168 - 5713.5000 0.88500 0.01637 0.7110 1.1440 175 - 5714.5000 0.93100 0.01485 0.7310 1.1260 177 - 5715.5000 0.96400 0.01614 0.7190 1.1510 179 - 5716.5000 0.89800 0.01680 0.7000 1.1330 166 - 5717.5000 0.97400 0.01487 0.7640 1.1620 179 - 5718.5000 0.96300 0.01495 0.7890 1.1880 178 - 5719.5000 0.95600 0.01656 0.7110 1.1480 174 - 5720.5000 1.00600 0.01603 0.7420 1.1600 170 - 5721.5000 0.94600 0.01788 0.7420 1.2150 175 - 5722.5000 0.99700 0.01716 0.7770 1.2270 172 - 5723.5000 0.99600 0.01702 0.7200 1.1690 174 - 5724.5000 0.97200 0.01713 0.7200 1.1770 178 - 5725.5000 0.94200 0.01815 0.7310 1.2070 172 - 5726.5000 0.92900 0.01725 0.7360 1.1950 177 - 5727.5000 0.97000 0.01785 0.7170 1.1880 174 - 5728.5000 0.94800 0.01709 0.7070 1.1630 178 - 5729.5000 0.97600 0.01599 0.7550 1.1670 166 - 5730.5000 0.90800 0.01405 0.7480 1.1260 181 - 5731.5000 0.94600 0.01809 0.7230 1.1960 171 - 5732.5000 0.96500 0.01719 0.7330 1.1840 172 - 5733.5000 0.93500 0.01479 0.7840 1.1640 165 - 5734.5000 0.89600 0.01618 0.7160 1.1490 179 - 5735.5000 0.97100 0.01855 0.7040 1.1920 173 - 5736.5000 0.95000 0.01792 0.7070 1.1810 175 - 5737.5000 0.92400 0.01606 0.7120 1.1220 163 - 5738.5000 0.92400 0.01801 0.6980 1.1800 179 - 5739.5000 0.94400 0.01744 0.7040 1.1640 174 - 5740.5000 0.94300 0.01761 0.7000 1.1620 172 - 5741.5000 0.92100 0.01427 0.7500 1.1200 168 - 5742.5000 0.92300 0.01693 0.7370 1.1810 172 - 5743.5000 0.94700 0.01667 0.7260 1.1670 175 - 5744.5000 0.97700 0.01758 0.7130 1.1780 175 - 5745.5000 0.89400 0.01734 0.7070 1.1470 161 - 5746.5000 0.91100 0.01689 0.7110 1.1630 179 - 5747.5000 0.92000 0.01602 0.7430 1.1620 171 - 5748.5000 0.97300 0.01766 0.7270 1.1930 174 - 5749.5000 0.92900 0.01693 0.7110 1.1420 162 - 5750.5000 0.95500 0.01482 0.7430 1.1350 175 - 5751.5000 0.94100 0.01786 0.7200 1.1940 176 - 5752.5000 0.95600 0.01722 0.7250 1.1780 173 - 5753.5000 0.94000 0.01697 0.7250 1.1610 165 - 5754.5000 0.95400 0.01636 0.7530 1.1770 168 - 5755.5000 0.95400 0.01644 0.7420 1.1770 175 - 5756.5000 0.94800 0.01730 0.7350 1.1860 170 - 5757.5000 0.94900 0.01535 0.7480 1.1470 169 - 5758.5000 0.91100 0.01686 0.7070 1.1440 168 - 5759.5000 0.95200 0.01796 0.7060 1.1770 172 - 5760.5000 0.96700 0.01802 0.7200 1.1830 165 - 5761.5000 0.96600 0.01765 0.7410 1.2000 169 - 5762.5000 0.96200 0.01611 0.7320 1.1470 166 - 5763.5000 0.93200 0.01616 0.7610 1.1800 168 - 5764.5000 0.91300 0.01511 0.7360 1.1300 170 - 5765.5000 0.97100 0.01497 0.7690 1.1570 168 - 5766.5000 0.96100 0.01692 0.7170 1.1530 166 - 5767.5000 0.93800 0.01665 0.7440 1.1770 169 - 5768.5000 0.93900 0.01807 0.7180 1.1850 167 - 5769.5000 0.96100 0.01703 0.7260 1.1740 173 - 5770.5000 0.94400 0.01417 0.7700 1.1340 165 - 5771.5000 0.90100 0.01710 0.7120 1.1580 170 - 5772.5000 0.92000 0.01985 0.6800 1.1900 165 - 5773.5000 0.96200 0.01604 0.7260 1.1480 173 - 5774.5000 0.92700 0.01691 0.7220 1.1550 164 - 5775.5000 0.95900 0.01669 0.7350 1.1740 173 - 5776.5000 0.93400 0.01956 0.6980 1.1960 162 - 5777.5000 0.91200 0.01526 0.7360 1.1410 176 - 5778.5000 0.92400 0.01456 0.7290 1.1030 165 - 5779.5000 0.95500 0.01693 0.7260 1.1740 175 - 5780.5000 0.96500 0.01673 0.7230 1.1540 166 - 5781.5000 0.93900 0.01521 0.7280 1.1270 172 - 5782.5000 0.92100 0.01624 0.7030 1.1150 161 - 5783.5000 0.93200 0.01387 0.7350 1.1030 176 - 5784.5000 0.92200 0.01654 0.7120 1.1370 165 - 5785.5000 0.90200 0.01613 0.7210 1.1380 167 - 5786.5000 0.93000 0.01582 0.7150 1.1140 159 - 5787.5000 0.92500 0.01559 0.7490 1.1590 173 - 5788.5000 0.86800 0.01546 0.7030 1.1050 169 - 5789.5000 0.92300 0.01445 0.7460 1.1240 171 - 5790.5000 0.93200 0.01667 0.7210 1.1400 158 - 5791.5000 0.94500 0.01715 0.7360 1.1820 169 - 5792.5000 0.91400 0.01854 0.6830 1.1650 169 - 5793.5000 0.95000 0.01736 0.7010 1.1510 168 - 5794.5000 0.97300 0.01663 0.7350 1.1570 161 - 5795.5000 0.97300 0.01768 0.7400 1.2050 173 - 5796.5000 0.93800 0.01667 0.7560 1.1830 164 - 5797.5000 0.93200 0.01717 0.7280 1.1730 168 - 5798.5000 0.96700 0.01661 0.7590 1.1740 156 - 5799.5000 0.94800 0.01569 0.7740 1.1880 174 - 5800.5000 0.99900 0.01579 0.7540 1.1560 162 - 5801.5000 0.97800 0.01633 0.7340 1.1560 167 - 5802.5000 0.96800 0.01629 0.7450 1.1570 160 - 5803.5000 0.97200 0.01665 0.7370 1.1750 173 - 5804.5000 0.93500 0.01911 0.7030 1.1850 159 - 5805.5000 0.95500 0.01505 0.7730 1.1690 173 - 5806.5000 0.95500 0.01501 0.7430 1.1250 162 - 5807.5000 0.96700 0.01603 0.7470 1.1650 170 - 5808.5000 0.92700 0.01556 0.7260 1.1220 162 - 5809.5000 0.95900 0.01634 0.7170 1.1480 174 - 5810.5000 0.96400 0.01557 0.7470 1.1420 161 - 5811.5000 0.95800 0.01749 0.7600 1.2120 167 - 5812.5000 0.96400 0.01715 0.7400 1.1780 163 - 5813.5000 1.02400 0.01649 0.7550 1.1800 166 - 5814.5000 0.94500 0.01563 0.7470 1.1460 163 - 5815.5000 0.95100 0.01749 0.7560 1.2040 164 - 5816.5000 0.92600 0.01798 0.7080 1.1670 163 - 5817.5000 0.95400 0.01548 0.7420 1.1360 162 - 5818.5000 0.93900 0.01547 0.7420 1.1370 163 - 5819.5000 0.95700 0.01894 0.7150 1.2030 166 - 5820.5000 0.97100 0.01898 0.6900 1.1760 164 - 5821.5000 0.93900 0.01648 0.7370 1.1590 164 - 5822.5000 0.94500 0.01503 0.7620 1.1480 165 - 5823.5000 0.99800 0.01710 0.7460 1.1920 170 - 5824.5000 0.97400 0.01723 0.7280 1.1680 163 - 5825.5000 0.97300 0.01495 0.7740 1.1570 164 - 5826.5000 0.95300 0.01876 0.7480 1.2240 161 - 5827.5000 0.94400 0.01677 0.7450 1.1850 172 - 5828.5000 0.98900 0.01614 0.7650 1.1810 166 - 5829.5000 0.93200 0.01835 0.7190 1.1760 155 - 5830.5000 0.96400 0.01758 0.7510 1.2040 166 - 5831.5000 0.98900 0.01567 0.7440 1.1490 167 - 5832.5000 1.03900 0.01734 0.7710 1.2150 164 - 5833.5000 0.96200 0.01688 0.7410 1.1600 154 - 5834.5000 0.99900 0.01610 0.7940 1.2100 167 - 5835.5000 0.97700 0.01628 0.7490 1.1660 164 - 5836.5000 1.03000 0.01700 0.7650 1.2030 166 - 5837.5000 1.01200 0.01733 0.7450 1.1780 156 - 5838.5000 0.95900 0.01673 0.7200 1.1510 166 - 5839.5000 0.99300 0.01643 0.7870 1.2130 168 - 5840.5000 0.95100 0.01693 0.7370 1.1640 159 - 5841.5000 1.02200 0.01574 0.8000 1.1970 159 - 5842.5000 0.95600 0.01723 0.7570 1.1970 163 - 5843.5000 0.98500 0.01647 0.7750 1.1980 165 - 5844.5000 1.00200 0.01647 0.7760 1.1940 161 - 5845.5000 0.99400 0.01715 0.7530 1.1760 152 - 5846.5000 0.96900 0.01578 0.7740 1.1830 168 - 5847.5000 0.99400 0.01648 0.7790 1.2010 164 - 5848.5000 0.97100 0.01893 0.7170 1.1960 160 - 5849.5000 0.96600 0.01593 0.7670 1.1650 156 - 5850.5000 0.98100 0.01616 0.7800 1.1940 164 - 5851.5000 0.97700 0.01846 0.7480 1.2180 162 - 5852.5000 1.01400 0.01794 0.7280 1.1790 158 - 5853.5000 0.98200 0.01693 0.7680 1.1840 151 - 5854.5000 0.97800 0.01678 0.7760 1.2110 168 - 5855.5000 1.04500 0.01612 0.8190 1.2190 154 - 5856.5000 0.98200 0.01757 0.7330 1.1830 164 - 5857.5000 0.98900 0.01589 0.7690 1.1660 156 - 5858.5000 0.94100 0.01458 0.7790 1.1490 161 - 5859.5000 1.00100 0.01523 0.7790 1.1630 159 - 5860.5000 0.97800 0.01784 0.7520 1.2020 159 - 5861.5000 0.99100 0.01740 0.7790 1.2150 157 - 5862.5000 1.01100 0.01645 0.7860 1.2100 166 - 5863.5000 0.99600 0.01663 0.8080 1.2260 158 - 5864.5000 1.02400 0.01632 0.7750 1.1680 145 - 5865.5000 1.01100 0.01605 0.8480 1.2540 160 - 5866.5000 1.05400 0.01654 0.8140 1.2350 162 - 5867.5000 1.05300 0.01805 0.7750 1.2330 161 - 5868.5000 0.98400 0.01636 0.7790 1.1810 151 - 5869.5000 1.01700 0.01430 0.8300 1.1940 162 - 5870.5000 1.02900 0.01438 0.8350 1.2000 161 - 5871.5000 1.08100 0.01886 0.8000 1.2710 156 - 5872.5000 1.06400 0.01611 0.8140 1.2060 148 - 5873.5000 1.01100 0.01611 0.8040 1.2180 165 - 5874.5000 1.05500 0.01862 0.8030 1.2740 160 - 5875.5000 1.08100 0.01676 0.8400 1.2560 154 - 5876.5000 1.09800 0.01855 0.8320 1.2910 153 - 5877.5000 1.10400 0.01591 0.8830 1.2880 162 - 5878.5000 1.08500 0.01769 0.8460 1.2880 156 - 5879.5000 1.08500 0.01557 0.8750 1.2640 156 - 5880.5000 1.04900 0.01509 0.8660 1.2320 147 - 5881.5000 1.05600 0.01697 0.8060 1.2340 159 - 5882.5000 1.01800 0.01572 0.8090 1.2030 157 - 5883.5000 1.01400 0.01474 0.8220 1.1890 155 - 5884.5000 1.05600 0.01667 0.8190 1.2300 152 - 5885.5000 0.99200 0.01491 0.7890 1.1710 164 - 5886.5000 1.03300 0.01591 0.7730 1.1730 158 - 5887.5000 0.98000 0.01482 0.7840 1.1410 145 - 5888.5000 0.99700 0.01749 0.7170 1.1580 159 - 5889.5000 0.97200 0.01352 0.8160 1.1580 160 - 5890.5000 0.97700 0.01412 0.7690 1.1240 158 - 5891.5000 0.91600 0.01344 0.7570 1.0840 148 - 5892.5000 0.92800 0.01277 0.7820 1.1010 156 - 5893.5000 0.93600 0.01249 0.7700 1.0820 156 - 5894.5000 0.96200 0.01418 0.7410 1.0930 154 - 5895.5000 0.95300 0.01303 0.8050 1.1200 146 - 5896.5000 0.92600 0.01341 0.7860 1.1220 157 - 5897.5000 0.98000 0.01509 0.7770 1.1540 156 - 5898.5000 0.97800 0.01334 0.7690 1.1000 154 - 5899.5000 0.99200 0.01283 0.8420 1.1500 144 - 5900.5000 0.96600 0.01348 0.8260 1.1660 159 - 5901.5000 0.95300 0.01355 0.8140 1.1460 150 - 5902.5000 0.96000 0.01435 0.7670 1.1220 153 - 5903.5000 0.98200 0.01478 0.7830 1.1450 150 - 5904.5000 0.97900 0.01542 0.7970 1.1860 159 - 5905.5000 0.97900 0.01637 0.8040 1.2090 153 - 5906.5000 0.96000 0.01479 0.8040 1.1590 144 - 5907.5000 0.96900 0.01525 0.7990 1.1750 152 - 5908.5000 1.01300 0.01727 0.7570 1.1940 160 - 5909.5000 0.98200 0.01516 0.7940 1.1690 153 - 5910.5000 0.94800 0.01624 0.7650 1.1560 145 - 5911.5000 0.90400 0.01449 0.7600 1.1230 157 - 5912.5000 0.93300 0.01574 0.7750 1.1630 152 - 5913.5000 0.98400 0.01568 0.7760 1.1600 150 - 5914.5000 0.99100 0.01501 0.8000 1.1590 143 - 5915.5000 0.95000 0.01620 0.7590 1.1650 157 - 5916.5000 0.95000 0.01754 0.7540 1.1750 144 - 5917.5000 0.99600 0.01601 0.7550 1.1510 153 - 5918.5000 0.97200 0.01711 0.7810 1.1930 145 - 5919.5000 0.94000 0.01526 0.7900 1.1700 155 - 5920.5000 0.94000 0.01737 0.7290 1.1530 149 - 5921.5000 0.96900 0.01604 0.7730 1.1580 144 - 5922.5000 0.96300 0.01800 0.7820 1.2230 150 - 5923.5000 0.93800 0.01582 0.7650 1.1590 155 - 5924.5000 0.97600 0.01599 0.7690 1.1580 148 - 5925.5000 0.97900 0.01458 0.7910 1.1360 140 - 5926.5000 0.92100 0.01629 0.7610 1.1600 150 - 5927.5000 0.96200 0.01663 0.7480 1.1540 149 - 5928.5000 0.95800 0.01489 0.7910 1.1520 147 - 5929.5000 0.98600 0.01494 0.8140 1.1700 142 - 5930.5000 0.97000 0.01612 0.7580 1.1620 157 - 5931.5000 0.94300 0.01869 0.7430 1.1820 138 - 5932.5000 0.95600 0.01703 0.7440 1.1640 152 - 5933.5000 0.96700 0.01679 0.8070 1.2030 139 - 5934.5000 0.95700 0.01543 0.7730 1.1560 154 - 5935.5000 0.96200 0.01856 0.7200 1.1670 145 - 5936.5000 0.91100 0.01817 0.7360 1.1630 138 - 5937.5000 0.91800 0.01730 0.7490 1.1700 148 - 5938.5000 0.96800 0.01578 0.7530 1.1460 155 - 5939.5000 0.96300 0.01785 0.7170 1.1470 145 - 5940.5000 0.95700 0.01743 0.7530 1.1670 141 - 5941.5000 0.97200 0.01463 0.7880 1.1500 153 - 5942.5000 0.95600 0.01978 0.7380 1.2210 149 - 5943.5000 0.92200 0.01800 0.7170 1.1520 146 - 5944.5000 0.95100 0.01815 0.7410 1.1690 139 - 5945.5000 0.95200 0.01715 0.7640 1.1840 150 - 5946.5000 0.92500 0.01714 0.7360 1.1460 143 - 5947.5000 0.92000 0.01502 0.7500 1.1180 150 - 5948.5000 0.92600 0.01738 0.7570 1.1740 144 - 5949.5000 0.96900 0.01567 0.7620 1.1510 154 - 5950.5000 0.95600 0.01794 0.7480 1.1770 143 - 5951.5000 0.94700 0.01665 0.7630 1.1570 140 - 5952.5000 0.92300 0.01782 0.7340 1.1720 151 - 5953.5000 0.95100 0.01615 0.7740 1.1670 148 - 5954.5000 0.93200 0.01757 0.7250 1.1510 147 - 5955.5000 0.92200 0.01483 0.7430 1.0940 140 - 5956.5000 0.93600 0.01470 0.7590 1.1250 155 - 5957.5000 0.91400 0.01707 0.7300 1.1310 138 - 5958.5000 0.92700 0.01530 0.7430 1.1190 151 - 5959.5000 0.95200 0.01527 0.7660 1.1300 142 - 5960.5000 0.90400 0.01529 0.7560 1.1330 152 - 5961.5000 0.94700 0.01525 0.7670 1.1330 144 - 5962.5000 0.93100 0.01563 0.7760 1.1420 137 - 5963.5000 0.95800 0.01561 0.7640 1.1450 149 - 5964.5000 0.95700 0.01715 0.7570 1.1770 150 - 5965.5000 0.92200 0.01689 0.7350 1.1390 143 - 5966.5000 0.94700 0.01783 0.7150 1.1400 142 - 5967.5000 0.91900 0.01501 0.7590 1.1280 151 - 5968.5000 0.97000 0.01859 0.7170 1.1570 140 - 5969.5000 0.95800 0.01533 0.7790 1.1570 152 - 5970.5000 0.91200 0.01518 0.7390 1.0970 139 - 5971.5000 0.90400 0.01663 0.7540 1.1640 152 - 5972.5000 0.97200 0.01942 0.7210 1.1870 144 - 5973.5000 0.97200 0.01749 0.7390 1.1470 136 - 5974.5000 0.94000 0.01561 0.7650 1.1460 149 - 5975.5000 0.95600 0.01679 0.7600 1.1700 149 - 5976.5000 0.92900 0.01710 0.7100 1.1190 143 - 5977.5000 0.95000 0.01758 0.7430 1.1620 142 - 5978.5000 0.91700 0.01636 0.7410 1.1390 148 - 5979.5000 0.93500 0.01898 0.7280 1.1740 138 - 5980.5000 0.94200 0.01454 0.7710 1.1260 149 - 5981.5000 0.92600 0.01449 0.7750 1.1190 141 - 5982.5000 0.90500 0.01634 0.7350 1.1380 152 - 5983.5000 0.94900 0.01672 0.7600 1.1600 143 - 5984.5000 0.92500 0.01441 0.7690 1.1050 136 - 5985.5000 0.90600 0.01614 0.7320 1.1260 149 - 5986.5000 0.94800 0.01511 0.7800 1.1490 149 - 5987.5000 0.87400 0.01610 0.6980 1.0830 143 - 5988.5000 0.95100 0.01809 0.7150 1.1430 140 - 5989.5000 0.93200 0.01549 0.7450 1.1270 152 - 5990.5000 0.98100 0.01766 0.7480 1.1630 138 - 5991.5000 0.93900 0.01545 0.7670 1.1390 145 - 5992.5000 0.94000 0.01517 0.7630 1.1220 140 - 5993.5000 0.95000 0.01600 0.7610 1.1530 150 - 5994.5000 0.98200 0.01542 0.7900 1.1600 144 - 5995.5000 0.96700 0.01393 0.7850 1.1100 136 - 5996.5000 0.92100 0.01534 0.7510 1.1230 147 - 5997.5000 0.93800 0.01821 0.7050 1.1450 146 - 5998.5000 0.93300 0.01604 0.7370 1.1180 141 - 5999.5000 0.94400 0.01395 0.7710 1.1010 140 - 6000.5000 0.96000 0.01482 0.7670 1.1240 145 - 6001.5000 0.93900 0.01745 0.7290 1.1450 142 - 6002.5000 0.93400 0.01571 0.7570 1.1220 135 - 6003.5000 0.92800 0.01499 0.7500 1.1110 145 - 6004.5000 0.92200 0.01812 0.7340 1.1720 146 - 6005.5000 0.90500 0.01690 0.7220 1.1220 140 - 6006.5000 0.91700 0.01766 0.6920 1.1040 136 - 6007.5000 0.91100 0.01360 0.7510 1.0820 148 - 6008.5000 0.94900 0.01862 0.7430 1.1740 134 - 6009.5000 0.91200 0.01640 0.7230 1.1220 148 - 6010.5000 0.92400 0.01559 0.7270 1.0880 134 - 6011.5000 0.90300 0.01594 0.7220 1.1150 152 - 6012.5000 0.93500 0.01718 0.7390 1.1470 141 - 6013.5000 0.86300 0.01856 0.6570 1.0850 133 - 6014.5000 0.92500 0.01733 0.7190 1.1290 140 - 6015.5000 0.90000 0.01564 0.7530 1.1270 143 - 6016.5000 0.91900 0.01709 0.7220 1.1250 139 - 6017.5000 0.91400 0.01608 0.7360 1.1070 133 - 6018.5000 0.91900 0.01711 0.7210 1.1330 145 - 6019.5000 0.94300 0.01709 0.7070 1.1100 139 - 6020.5000 0.94900 0.01732 0.7050 1.1060 134 - 6021.5000 0.87000 0.01551 0.7330 1.1000 140 - 6022.5000 0.93400 0.01734 0.7250 1.1440 146 - 6023.5000 0.94700 0.01979 0.6970 1.1620 138 - 6024.5000 0.91800 0.01876 0.7040 1.1400 135 - 6025.5000 0.92800 0.01726 0.7410 1.1610 148 - 6026.5000 0.88000 0.02007 0.6910 1.1540 133 - 6027.5000 0.88900 0.01804 0.7230 1.1560 144 - 6028.5000 0.92000 0.01573 0.7400 1.1070 136 - 6029.5000 0.91300 0.01790 0.7140 1.1510 149 - 6030.5000 0.94100 0.02031 0.7030 1.1820 139 - 6031.5000 0.92400 0.01806 0.6980 1.1130 132 - 6032.5000 0.90200 0.01833 0.7000 1.1400 144 - 6033.5000 0.93800 0.01885 0.7290 1.1750 140 - 6034.5000 0.93600 0.01870 0.7140 1.1550 139 - 6035.5000 0.95700 0.01535 0.7320 1.0860 133 - 6036.5000 0.91300 0.01669 0.7460 1.1410 140 - 6037.5000 0.94400 0.01873 0.7090 1.1490 138 - 6038.5000 0.88400 0.01874 0.6990 1.1280 131 - 6039.5000 0.94100 0.02009 0.7240 1.1960 138 - 6040.5000 0.97200 0.01915 0.7050 1.1630 143 - 6041.5000 0.90400 0.01613 0.7120 1.0910 138 - 6042.5000 0.95400 0.01651 0.7650 1.1430 131 - 6043.5000 0.92800 0.01708 0.7230 1.1300 142 - 6044.5000 0.94600 0.01801 0.7180 1.1380 136 - 6045.5000 0.94500 0.01960 0.7010 1.1480 130 - 6046.5000 0.91700 0.01824 0.7260 1.1530 137 - 6047.5000 0.95700 0.01781 0.7240 1.1530 145 - 6048.5000 0.91600 0.01766 0.7060 1.1180 136 - 6049.5000 0.94600 0.01811 0.7530 1.1660 130 - 6050.5000 0.98500 0.01819 0.7340 1.1690 143 - 6051.5000 0.96200 0.01866 0.7260 1.1580 134 - 6052.5000 0.95100 0.01737 0.6930 1.1010 138 - 6053.5000 0.95400 0.01784 0.7280 1.1410 134 - 6054.5000 0.91200 0.01593 0.7400 1.1210 143 - 6055.5000 0.94400 0.01879 0.7010 1.1360 134 - 6056.5000 0.89200 0.01759 0.7170 1.1150 128 - 6057.5000 0.93400 0.01624 0.7560 1.1470 145 - 6058.5000 0.96200 0.02079 0.7100 1.1840 130 - 6059.5000 0.92000 0.01665 0.7410 1.1350 140 - 6060.5000 0.92800 0.01741 0.7400 1.1400 132 - 6061.5000 0.91700 0.01878 0.6860 1.1320 141 - 6062.5000 0.91700 0.01861 0.7180 1.1520 136 - 6063.5000 0.93900 0.01726 0.7540 1.1460 129 - 6064.5000 0.95300 0.01703 0.7590 1.1620 140 - 6065.5000 0.95900 0.01906 0.7190 1.1520 129 - 6066.5000 0.96700 0.01876 0.7280 1.1720 140 - 6067.5000 0.95700 0.01655 0.7460 1.1190 127 - 6068.5000 0.91100 0.01539 0.7540 1.1220 143 - 6069.5000 0.95800 0.01706 0.7590 1.1480 130 - 6070.5000 0.98000 0.01875 0.7570 1.1730 123 - 6071.5000 0.94900 0.01745 0.7500 1.1600 138 - 6072.5000 0.97900 0.02127 0.7200 1.2070 131 - 6073.5000 0.94900 0.01765 0.7600 1.1640 131 - 6074.5000 0.96000 0.01801 0.7580 1.1640 127 - 6075.5000 0.97400 0.01640 0.7700 1.1580 140 - 6076.5000 0.99200 0.01684 0.7830 1.1670 130 - 6077.5000 0.95300 0.01757 0.7610 1.1460 120 - 6078.5000 0.95900 0.01636 0.7610 1.1440 137 - 6079.5000 0.94400 0.01845 0.7660 1.1850 129 - 6080.5000 0.96500 0.01462 0.7960 1.1280 129 - 6081.5000 0.98700 0.01780 0.7700 1.1680 125 - 6082.5000 0.97700 0.01716 0.7810 1.1870 140 - 6083.5000 0.99300 0.01794 0.7860 1.1920 128 - 6084.5000 0.99900 0.01533 0.7990 1.1320 118 - 6085.5000 0.96700 0.01769 0.7490 1.1630 137 - 6086.5000 0.99300 0.01969 0.7420 1.1840 126 - 6087.5000 1.01400 0.01644 0.8310 1.2060 130 - 6088.5000 0.97500 0.01928 0.7830 1.2090 122 - 6089.5000 0.94800 0.01781 0.7630 1.1800 137 - 6090.5000 0.99800 0.01721 0.8060 1.1940 127 - 6091.5000 0.94200 0.01728 0.7650 1.1420 119 - 6092.5000 0.99500 0.01642 0.7790 1.1620 136 - 6093.5000 0.91800 0.01632 0.7590 1.1150 119 - 6094.5000 0.94300 0.01594 0.7840 1.1460 129 - 6095.5000 0.92900 0.01836 0.7350 1.1390 121 - 6096.5000 0.99600 0.01566 0.7910 1.1550 135 - 6097.5000 0.98400 0.02022 0.7400 1.1940 126 - 6098.5000 0.94900 0.01714 0.7590 1.1330 119 - 6099.5000 0.93900 0.01632 0.7260 1.1080 137 - 6100.5000 0.94500 0.01895 0.7370 1.1470 117 - 6101.5000 0.92700 0.01532 0.7710 1.1190 129 - 6102.5000 0.93800 0.01778 0.7460 1.1420 124 - 6103.5000 0.91200 0.01670 0.7370 1.1250 135 - 6104.5000 0.95200 0.01774 0.7340 1.1290 124 - 6105.5000 0.91200 0.01749 0.7390 1.1270 123 - 6106.5000 0.90000 0.01592 0.7410 1.1110 135 - 6107.5000 0.95600 0.01708 0.7500 1.1210 118 - 6108.5000 0.91900 0.01650 0.7410 1.1100 125 - 6109.5000 0.92100 0.01813 0.7240 1.1310 126 - 6110.5000 0.95700 0.01911 0.7300 1.1640 129 - 6111.5000 0.97300 0.01766 0.7630 1.1580 125 - 6112.5000 0.92100 0.01772 0.7450 1.1300 118 - 6113.5000 0.94200 0.01796 0.7420 1.1500 129 - 6114.5000 0.95900 0.01844 0.7010 1.1100 123 - 6115.5000 0.96100 0.01981 0.7370 1.1710 120 - 6116.5000 0.91900 0.01779 0.7540 1.1580 129 - 6117.5000 0.92100 0.01544 0.7760 1.1280 130 - 6118.5000 0.94100 0.01700 0.7460 1.1230 123 - 6119.5000 0.93800 0.01611 0.7690 1.1220 120 - 6120.5000 0.91800 0.01503 0.7800 1.1240 131 - 6121.5000 0.93800 0.01834 0.7190 1.1290 125 - 6122.5000 0.96400 0.01696 0.7380 1.1080 119 - 6123.5000 0.93200 0.01769 0.7350 1.1400 131 - 6124.5000 0.97300 0.01540 0.7780 1.1250 127 - 6125.5000 0.89600 0.01724 0.6920 1.0790 126 - 6126.5000 0.92900 0.01507 0.7610 1.0870 117 - 6127.5000 0.90600 0.01849 0.7100 1.1380 134 - 6128.5000 0.97100 0.02100 0.7160 1.1800 122 - 6129.5000 0.95500 0.01685 0.7720 1.1380 118 - 6130.5000 0.90800 0.01892 0.7230 1.1560 131 - 6131.5000 1.01000 0.02053 0.7380 1.1840 118 - 6132.5000 0.93900 0.01728 0.7250 1.1130 126 - 6133.5000 0.93800 0.01775 0.7290 1.1210 122 - 6134.5000 0.94000 0.01612 0.7470 1.1160 131 - 6135.5000 0.92800 0.01952 0.7090 1.1420 123 - 6136.5000 0.95000 0.01526 0.7850 1.1180 119 - 6137.5000 0.92900 0.01710 0.7300 1.1230 132 - 6138.5000 0.96100 0.01823 0.7500 1.1460 118 - 6139.5000 0.91300 0.01770 0.7130 1.0960 117 - 6140.5000 0.91300 0.01547 0.7280 1.0740 125 - 6141.5000 0.97000 0.01409 0.7840 1.1040 129 - 6142.5000 0.87200 0.01718 0.7170 1.0980 123 - 6143.5000 0.98200 0.01824 0.7570 1.1550 119 - 6144.5000 0.90200 0.01817 0.7420 1.1580 131 - 6145.5000 0.96400 0.01832 0.7460 1.1540 124 - 6146.5000 0.97200 0.01595 0.7710 1.1160 117 - 6147.5000 0.93800 0.01690 0.7540 1.1350 127 - 6148.5000 0.91500 0.01815 0.7200 1.1290 127 - 6149.5000 0.98100 0.01727 0.7470 1.1300 123 - 6150.5000 0.95100 0.01503 0.7450 1.0730 119 - 6151.5000 0.94500 0.01693 0.7500 1.1360 130 - 6152.5000 0.96700 0.01603 0.7740 1.1310 124 - 6153.5000 0.93700 0.01458 0.7650 1.0830 119 - 6154.5000 0.92700 0.01582 0.7440 1.1090 133 - 6155.5000 0.92300 0.01776 0.7290 1.1100 115 - 6156.5000 0.93500 0.01511 0.7750 1.1060 120 - 6157.5000 0.96300 0.01419 0.7840 1.1000 124 - 6158.5000 0.89400 0.01783 0.7350 1.1400 129 - 6159.5000 0.93200 0.01677 0.7090 1.0810 123 - 6160.5000 0.94800 0.01715 0.7400 1.1110 117 - 6161.5000 0.91000 0.01443 0.7330 1.0620 130 - 6162.5000 0.93400 0.01668 0.7270 1.0970 123 - 6163.5000 0.85000 0.01536 0.7140 1.0420 114 - 6164.5000 0.90500 0.01501 0.7160 1.0570 129 - 6165.5000 0.89400 0.01851 0.7100 1.1190 122 - 6166.5000 0.93100 0.01589 0.7400 1.0910 122 - 6167.5000 0.84400 0.01553 0.7120 1.0480 117 - 6168.5000 0.91900 0.01454 0.7350 1.0640 128 - 6169.5000 0.91600 0.01614 0.7380 1.0930 121 - 6170.5000 0.91600 0.02006 0.6930 1.1250 116 - 6171.5000 0.89300 0.01611 0.7260 1.0890 127 - 6172.5000 0.90500 0.01507 0.7280 1.0540 117 - 6173.5000 0.92900 0.01588 0.7550 1.0970 116 - 6174.5000 0.90000 0.01653 0.7320 1.1030 126 - 6175.5000 0.94300 0.01775 0.7320 1.1240 122 - 6176.5000 0.94500 0.01879 0.7050 1.1150 119 - 6177.5000 0.97800 0.01755 0.7590 1.1370 116 - 6178.5000 0.91800 0.01881 0.7230 1.1520 130 - 6179.5000 0.89600 0.01403 0.7480 1.0540 119 - 6180.5000 0.95200 0.01728 0.7160 1.0850 114 - 6181.5000 0.92500 0.01662 0.7230 1.1020 130 - 6182.5000 0.94900 0.01804 0.7370 1.1240 115 - 6183.5000 0.96000 0.01797 0.7010 1.0930 119 - 6184.5000 0.89100 0.01598 0.7500 1.1000 120 - 6185.5000 0.95800 0.01679 0.7710 1.1480 126 - 6186.5000 0.92400 0.01620 0.7560 1.1110 120 - 6187.5000 0.96600 0.01731 0.7560 1.1320 118 - 6188.5000 0.89700 0.01677 0.7010 1.0790 127 - 6189.5000 0.87300 0.01696 0.7040 1.0740 119 - 6190.5000 0.93100 0.01699 0.7320 1.0900 111 - 6191.5000 0.89800 0.01671 0.7330 1.1110 128 - 6192.5000 0.90100 0.01578 0.7300 1.0670 114 - 6193.5000 0.90100 0.01662 0.7450 1.1060 118 - 6194.5000 0.84000 0.01720 0.7030 1.0830 122 - 6195.5000 0.90300 0.01790 0.7230 1.1200 123 - 6196.5000 0.92600 0.01673 0.7240 1.0860 117 - 6197.5000 0.89300 0.01566 0.7160 1.0490 113 - 6198.5000 0.89300 0.01661 0.7410 1.1140 126 - 6199.5000 0.93000 0.01742 0.7350 1.1150 119 - 6200.5000 0.91400 0.01722 0.7340 1.0920 108 - 6201.5000 0.89200 0.01807 0.6950 1.0990 125 - 6202.5000 0.96300 0.01876 0.7620 1.1590 112 - 6203.5000 0.90400 0.01616 0.7500 1.1040 120 - 6204.5000 0.93500 0.01567 0.7440 1.0830 117 - 6205.5000 0.89500 0.01686 0.7220 1.0990 125 - 6206.5000 0.93100 0.01854 0.7190 1.1200 117 - 6207.5000 0.93100 0.01648 0.7600 1.1120 114 - 6208.5000 0.90500 0.01582 0.7510 1.1090 128 - 6209.5000 0.96000 0.01634 0.7730 1.1280 118 - 6210.5000 0.87100 0.01568 0.7340 1.0630 110 - 6211.5000 0.86700 0.01666 0.7110 1.0850 126 - 6212.5000 0.91300 0.02017 0.7120 1.1370 111 - 6213.5000 0.91300 0.01794 0.7330 1.1260 120 - 6214.5000 0.89400 0.01710 0.7210 1.0940 119 - 6215.5000 0.91100 0.01627 0.7410 1.0990 121 - 6216.5000 0.87800 0.01389 0.7360 1.0340 115 - 6217.5000 0.93400 0.01691 0.7310 1.0890 112 - 6218.5000 0.85200 0.01895 0.6730 1.0950 124 - 6219.5000 0.92800 0.01657 0.7470 1.1040 116 - 6220.5000 0.87600 0.01880 0.6830 1.0720 107 - 6221.5000 0.87700 0.01506 0.7340 1.0680 123 - 6222.5000 0.90600 0.01636 0.7310 1.0710 108 - 6223.5000 0.88600 0.01513 0.7420 1.0680 116 - 6224.5000 0.90500 0.01742 0.7310 1.1030 114 - 6225.5000 0.92100 0.01742 0.7050 1.0850 119 - 6226.5000 0.85600 0.01438 0.7340 1.0450 117 - 6227.5000 0.90600 0.01702 0.7210 1.0780 110 - 6228.5000 0.91900 0.01509 0.7290 1.0650 124 - 6229.5000 0.91500 0.01660 0.7180 1.0740 115 - 6230.5000 0.93600 0.01559 0.7690 1.0960 110 - 6231.5000 0.92300 0.01393 0.7750 1.0840 123 - 6232.5000 0.96700 0.01406 0.8280 1.1230 110 - 6233.5000 0.89900 0.01533 0.7550 1.0780 111 - 6234.5000 0.90500 0.01684 0.7010 1.0730 122 - 6235.5000 0.94200 0.01698 0.7220 1.0910 118 - 6236.5000 0.87800 0.01662 0.6920 1.0470 114 - 6237.5000 0.92900 0.01592 0.7640 1.1010 112 - 6238.5000 0.91700 0.01812 0.7440 1.1460 123 - 6239.5000 0.93600 0.01620 0.7720 1.1210 116 - 6240.5000 0.88500 0.01838 0.6920 1.0740 108 - 6241.5000 0.93300 0.01477 0.7320 1.0570 121 - 6242.5000 0.90700 0.01674 0.7270 1.0860 115 - 6243.5000 0.90000 0.01707 0.7210 1.0790 110 - 6244.5000 0.91100 0.01555 0.7480 1.0900 121 - 6245.5000 0.96200 0.01810 0.7350 1.1130 109 - 6246.5000 0.92400 0.01792 0.7070 1.0980 119 - 6247.5000 0.88200 0.01541 0.7150 1.0440 114 - 6248.5000 0.93700 0.01586 0.7710 1.1170 119 - 6249.5000 0.90900 0.01580 0.7280 1.0640 113 - 6250.5000 0.91500 0.01599 0.7240 1.0640 113 - 6251.5000 0.94200 0.01524 0.7490 1.0870 123 - 6252.5000 0.89900 0.01788 0.7280 1.1030 110 - 6253.5000 0.86700 0.01540 0.7000 1.0230 110 - 6254.5000 0.88500 0.01425 0.7210 1.0370 123 - 6255.5000 0.94800 0.01643 0.7480 1.0910 109 - 6256.5000 0.94700 0.01686 0.7280 1.0800 109 - 6257.5000 0.88000 0.01636 0.7230 1.0830 121 - 6258.5000 0.89500 0.01742 0.7350 1.1070 114 - 6259.5000 0.90100 0.01569 0.7070 1.0450 116 - 6260.5000 0.89900 0.01329 0.7530 1.0330 111 - 6261.5000 0.90500 0.01554 0.7170 1.0560 119 - 6262.5000 0.92300 0.01545 0.7560 1.0830 112 - 6263.5000 0.88000 0.01475 0.7530 1.0610 109 - 6264.5000 0.92400 0.01527 0.7530 1.0890 121 - 6265.5000 0.93400 0.01711 0.7280 1.0950 115 - 6266.5000 0.92500 0.01748 0.7010 1.0610 106 - 6267.5000 0.93500 0.01823 0.6990 1.1050 124 - 6268.5000 0.96000 0.01786 0.7430 1.1160 109 - 6269.5000 0.93200 0.01621 0.7870 1.1240 108 - 6270.5000 0.92600 0.01609 0.7630 1.1140 119 - 6271.5000 0.98600 0.01780 0.7730 1.1530 114 - 6272.5000 0.91100 0.01745 0.7450 1.1160 113 - 6273.5000 0.93200 0.01623 0.7380 1.0800 111 - 6274.5000 0.97000 0.01496 0.7910 1.1160 118 - 6275.5000 0.95300 0.01602 0.7470 1.0920 116 - 6276.5000 0.93100 0.01779 0.7440 1.1120 107 - 6277.5000 0.89200 0.01935 0.7180 1.1420 120 - 6278.5000 0.96500 0.01513 0.7930 1.1160 114 - 6279.5000 0.88300 0.01927 0.7230 1.1180 105 - 6280.5000 0.93300 0.01695 0.7590 1.1350 123 - 6281.5000 0.94700 0.01833 0.7500 1.1310 108 - 6282.5000 0.91600 0.01559 0.7720 1.0960 108 - 6283.5000 0.90800 0.01675 0.7340 1.1010 120 - 6284.5000 0.91300 0.01858 0.7460 1.1410 113 - 6285.5000 0.93600 0.01456 0.8050 1.1160 114 - 6286.5000 0.92000 0.01683 0.7430 1.0960 110 - 6287.5000 0.94700 0.01595 0.7580 1.1060 119 - 6288.5000 0.92100 0.01732 0.7510 1.1160 111 - 6289.5000 0.92900 0.01727 0.7490 1.1080 108 - 6290.5000 0.93100 0.01760 0.7390 1.1230 119 - 6291.5000 0.92500 0.01710 0.7480 1.1100 112 - 6292.5000 0.95000 0.01651 0.7630 1.1030 106 - 6293.5000 0.94800 0.01740 0.7660 1.1440 118 - 6294.5000 0.94600 0.01564 0.7850 1.1130 110 - 6295.5000 0.92200 0.01482 0.7710 1.0790 108 - 6296.5000 0.94900 0.01581 0.7840 1.1290 119 - 6297.5000 0.99600 0.01865 0.8010 1.1850 106 - 6298.5000 0.98200 0.01835 0.8090 1.2060 117 - 6299.5000 1.00300 0.01683 0.8310 1.1840 110 - 6300.5000 1.03000 0.01536 0.8920 1.2200 114 - 6301.5000 1.04000 0.01800 0.8640 1.2450 112 - 6302.5000 1.04300 0.01946 0.8690 1.2660 104 - 6303.5000 1.06700 0.01777 0.8500 1.2360 118 - 6304.5000 1.01400 0.01899 0.8440 1.2460 112 - 6305.5000 1.03000 0.01902 0.8070 1.1950 104 - 6306.5000 0.95900 0.01450 0.8550 1.1660 115 - 6307.5000 0.98600 0.01747 0.7880 1.1610 114 - 6308.5000 0.93700 0.01764 0.7910 1.1490 103 - 6309.5000 0.95100 0.01939 0.7780 1.2010 119 - 6310.5000 0.90600 0.02035 0.7510 1.1660 104 - 6311.5000 0.92900 0.01796 0.7670 1.1350 105 - 6312.5000 0.97900 0.01593 0.7960 1.1420 118 - 6313.5000 0.99700 0.01820 0.8070 1.1870 109 - 6314.5000 0.97300 0.01661 0.8130 1.1550 106 - 6315.5000 0.96400 0.01778 0.7630 1.1360 110 - 6316.5000 0.92800 0.01737 0.7620 1.1330 114 - 6317.5000 0.97600 0.01537 0.7940 1.1120 107 - 6318.5000 0.91400 0.01781 0.7610 1.1260 105 - 6319.5000 0.93400 0.01620 0.7810 1.1300 116 - 6320.5000 0.95600 0.01544 0.7840 1.1020 106 - 6321.5000 0.91600 0.01515 0.7780 1.0870 104 - 6322.5000 0.89500 0.01832 0.7510 1.1440 115 - 6323.5000 0.94800 0.01682 0.7770 1.1330 112 - 6324.5000 0.89900 0.01537 0.7470 1.0560 101 - 6325.5000 0.98400 0.01696 0.7920 1.1620 119 - 6326.5000 0.94900 0.02079 0.7070 1.1290 103 - 6327.5000 0.97300 0.01762 0.7720 1.1330 105 - 6328.5000 0.95100 0.01757 0.7830 1.1630 117 - 6329.5000 0.98900 0.01855 0.7620 1.1440 106 - 6330.5000 0.95800 0.01695 0.7800 1.1340 109 - 6331.5000 0.96300 0.01718 0.7750 1.1370 111 - 6332.5000 0.98400 0.01700 0.7730 1.1280 109 - 6333.5000 0.94400 0.01857 0.7490 1.1350 108 - 6334.5000 0.95600 0.01719 0.7700 1.1190 103 - 6335.5000 0.90700 0.01569 0.7690 1.1070 116 - 6336.5000 0.93500 0.01607 0.7790 1.1130 108 - 6337.5000 0.97400 0.01827 0.7370 1.1060 102 - 6338.5000 0.92500 0.01812 0.7380 1.1300 117 - 6339.5000 0.97400 0.01516 0.7540 1.0720 110 - 6340.5000 0.95000 0.01607 0.7940 1.1170 101 - 6341.5000 0.95100 0.01578 0.7780 1.1150 114 - 6342.5000 0.94400 0.01559 0.7850 1.1090 108 - 6343.5000 0.94300 0.01842 0.7340 1.1060 102 - 6344.5000 0.91800 0.01548 0.7960 1.1280 115 - 6345.5000 0.96700 0.01767 0.7730 1.1300 102 - 6346.5000 0.96700 0.01535 0.8120 1.1250 104 - 6347.5000 0.93000 0.01606 0.7670 1.1100 114 - 6348.5000 0.93400 0.01852 0.7730 1.1580 108 - 6349.5000 0.92300 0.02113 0.7150 1.1460 104 - 6350.5000 0.96700 0.01724 0.7660 1.1260 109 - 6351.5000 0.93800 0.01731 0.7810 1.1490 113 - 6352.5000 0.97700 0.01666 0.7740 1.1170 106 - 6353.5000 0.98500 0.01807 0.8140 1.1790 102 - 6354.5000 0.96900 0.01769 0.7850 1.1660 116 - 6355.5000 0.97700 0.01853 0.7970 1.1750 104 - 6356.5000 0.92900 0.01761 0.7800 1.1340 101 - 6357.5000 0.91500 0.01620 0.7900 1.1390 116 - 6358.5000 0.96500 0.01610 0.7780 1.1110 107 - 6359.5000 0.94300 0.01907 0.7080 1.0950 103 - 6360.5000 0.97200 0.01687 0.7860 1.1430 112 - 6361.5000 0.94800 0.01610 0.7940 1.1270 107 - 6362.5000 0.98400 0.01807 0.7900 1.1550 102 - 6363.5000 0.98900 0.01720 0.7990 1.1680 115 - 6364.5000 0.99800 0.01906 0.8020 1.1870 102 - 6365.5000 1.03000 0.01807 0.8280 1.1930 102 - 6366.5000 1.00700 0.01676 0.8510 1.2090 114 - 6367.5000 1.06300 0.01817 0.8340 1.2010 102 - 6368.5000 1.01000 0.01769 0.8270 1.1930 107 - 6369.5000 1.00000 0.01953 0.7770 1.1810 107 - 6370.5000 1.00100 0.01788 0.8230 1.1980 110 - 6371.5000 1.00100 0.01928 0.7660 1.1630 106 - 6372.5000 0.99300 0.01813 0.7890 1.1640 107 - 6373.5000 0.98700 0.01772 0.8190 1.1940 112 - 6374.5000 0.99500 0.01771 0.8220 1.1850 105 - 6375.5000 0.98300 0.01736 0.7940 1.1480 104 - 6376.5000 1.02100 0.01789 0.8080 1.1900 114 - 6377.5000 1.02700 0.01724 0.8020 1.1570 106 - 6378.5000 1.03200 0.01500 0.8710 1.1710 100 - 6379.5000 0.97600 0.01806 0.7850 1.1740 116 - 6380.5000 0.98600 0.01630 0.8020 1.1360 105 - 6381.5000 0.92500 0.01812 0.7620 1.1280 102 - 6382.5000 0.98400 0.01847 0.8120 1.2030 112 - 6383.5000 1.00100 0.01440 0.8370 1.1350 107 - 6384.5000 0.92700 0.01590 0.7950 1.1130 100 - 6385.5000 1.01100 0.01578 0.8210 1.1610 116 - 6386.5000 0.97500 0.02020 0.7820 1.1840 99 - 6387.5000 0.98700 0.01744 0.8060 1.1600 103 - 6388.5000 0.96900 0.01578 0.7970 1.1340 114 - 6389.5000 0.96400 0.01737 0.7960 1.1400 98 - 6390.5000 0.97400 0.01677 0.7950 1.1370 104 - 6391.5000 0.95600 0.01647 0.8110 1.1580 111 - 6392.5000 1.03700 0.01501 0.8370 1.1460 106 - 6393.5000 0.93800 0.01619 0.8050 1.1320 102 - 6394.5000 0.94000 0.01641 0.7920 1.1300 106 - 6395.5000 0.98500 0.01619 0.8310 1.1660 107 - 6396.5000 0.93400 0.01849 0.7890 1.1680 105 - 6397.5000 0.96600 0.01542 0.8170 1.1270 101 - 6398.5000 0.98200 0.01904 0.7990 1.1930 107 - 6399.5000 0.97800 0.01417 0.8420 1.1310 104 - 6400.5000 0.95100 0.01435 0.8320 1.1190 100 - 6401.5000 1.00300 0.01573 0.8250 1.1520 108 - 6402.5000 0.97200 0.01620 0.8020 1.1340 105 - 6403.5000 0.95000 0.01643 0.7960 1.1180 96 - 6404.5000 0.95300 0.01647 0.7900 1.1340 109 - 6405.5000 0.95500 0.01587 0.8420 1.1610 101 - 6406.5000 0.95100 0.02077 0.7460 1.1530 96 - 6407.5000 0.98900 0.01638 0.8270 1.1690 109 - 6408.5000 1.01300 0.01518 0.8680 1.1790 105 - 6409.5000 1.00700 0.02017 0.7780 1.1650 92 - 6410.5000 1.02600 0.01492 0.8330 1.1460 110 - 6411.5000 0.96800 0.01555 0.8100 1.1240 102 - 6412.5000 1.00800 0.01965 0.7770 1.1600 95 - 6413.5000 0.94200 0.01663 0.7800 1.1320 112 - 6414.5000 0.96800 0.01868 0.8270 1.1950 97 - 6415.5000 0.94500 0.01665 0.8240 1.1520 97 - 6416.5000 0.96100 0.01559 0.7970 1.1240 110 - 6417.5000 0.97300 0.01707 0.8390 1.1770 98 - 6418.5000 0.93400 0.01308 0.8370 1.0960 98 - 6419.5000 0.95800 0.01727 0.8100 1.1740 111 - 6420.5000 1.00900 0.02071 0.8030 1.2130 98 - 6421.5000 0.99400 0.01587 0.8270 1.1460 101 - 6422.5000 0.96400 0.01747 0.8100 1.1680 105 - 6423.5000 1.01800 0.01718 0.8710 1.2180 102 - 6424.5000 0.98200 0.01453 0.8310 1.1230 101 - 6425.5000 0.95300 0.01731 0.7920 1.1450 104 - 6426.5000 1.01300 0.01847 0.8310 1.2040 102 - 6427.5000 0.98100 0.01787 0.8430 1.2040 102 - 6428.5000 0.96700 0.01463 0.8150 1.1090 101 - 6429.5000 0.98600 0.01716 0.8270 1.1820 107 - 6430.5000 0.98300 0.01783 0.7980 1.1600 103 - 6431.5000 0.99800 0.01878 0.8470 1.2150 96 - 6432.5000 1.02800 0.01843 0.8360 1.2190 108 - 6433.5000 1.02000 0.01500 0.8440 1.1470 102 - 6434.5000 1.00100 0.01594 0.8560 1.1700 97 - 6435.5000 1.02000 0.01722 0.8590 1.2170 108 - 6436.5000 1.01900 0.01823 0.8330 1.2030 103 - 6437.5000 1.03300 0.01861 0.8430 1.2020 93 - 6438.5000 1.04400 0.01687 0.8520 1.2010 107 - 6439.5000 0.98700 0.01606 0.8660 1.1840 98 - 6440.5000 0.96100 0.01488 0.8390 1.1260 93 - 6441.5000 1.01400 0.01597 0.8570 1.1920 110 - 6442.5000 0.99200 0.01575 0.8560 1.1710 100 - 6443.5000 1.04400 0.01733 0.8530 1.1890 94 - 6444.5000 1.03900 0.01664 0.8480 1.1890 105 - 6445.5000 1.02300 0.01515 0.8640 1.1730 104 - 6446.5000 0.99300 0.01824 0.8170 1.1630 90 - 6447.5000 1.03000 0.01419 0.9010 1.1960 108 - 6448.5000 1.01100 0.01537 0.8600 1.1690 101 - 6449.5000 1.02500 0.01571 0.8670 1.1650 90 - 6450.5000 1.00900 0.01517 0.8490 1.1700 112 - 6451.5000 1.00100 0.01432 0.8970 1.1790 97 - 6452.5000 1.01700 0.01509 0.8560 1.1470 93 - 6453.5000 1.02500 0.01655 0.8590 1.2030 108 - 6454.5000 1.03000 0.01770 0.8780 1.2230 95 - 6455.5000 0.99500 0.01526 0.8480 1.1470 96 - 6456.5000 1.03500 0.01650 0.8710 1.2140 108 - 6457.5000 1.04700 0.01738 0.8920 1.2290 94 - 6458.5000 1.03600 0.01454 0.8880 1.1730 96 - 6459.5000 1.02500 0.01958 0.8380 1.2430 107 - 6460.5000 1.06500 0.01898 0.8800 1.2460 93 - 6461.5000 1.04000 0.01666 0.8940 1.2170 94 - 6462.5000 1.03200 0.01530 0.8810 1.1990 108 - 6463.5000 1.07200 0.01748 0.8970 1.2360 94 - 6464.5000 1.01000 0.01643 0.9110 1.2330 96 - 6465.5000 1.07500 0.01624 0.9270 1.2630 107 - 6466.5000 1.08700 0.01599 0.9390 1.2490 94 - 6467.5000 1.04500 0.02097 0.8470 1.2600 97 - 6468.5000 1.06900 0.02243 0.8930 1.3460 102 - 6469.5000 1.10000 0.01955 0.8950 1.2860 100 - 6470.5000 1.10200 0.01712 0.9050 1.2440 98 - 6471.5000 1.08500 0.01482 0.9190 1.2140 99 - 6472.5000 1.13000 0.01687 0.9350 1.2740 101 - 6473.5000 1.03800 0.01767 0.8750 1.2230 97 - 6474.5000 1.06300 0.01874 0.8550 1.2280 99 - 6475.5000 1.14800 0.01743 0.9300 1.2820 102 - 6476.5000 1.09000 0.01616 0.9380 1.2580 98 - 6477.5000 1.14400 0.01905 0.9410 1.3200 99 - 6478.5000 1.11600 0.01773 0.9550 1.3060 98 - 6479.5000 1.12800 0.01560 0.9650 1.2770 100 - 6480.5000 1.05600 0.02168 0.8330 1.2600 97 - 6481.5000 1.13400 0.01830 0.9640 1.3300 100 - 6482.5000 1.09900 0.01618 0.9550 1.2770 99 - 6483.5000 1.11300 0.01628 0.9530 1.2720 96 - 6484.5000 1.13200 0.02183 0.9290 1.3720 103 - 6485.5000 1.14600 0.01830 0.9870 1.3530 100 - 6486.5000 1.11500 0.02089 0.9130 1.3160 93 - 6487.5000 1.13400 0.02176 0.9260 1.3720 105 - 6488.5000 1.12200 0.01878 0.9430 1.3110 96 - 6489.5000 1.11400 0.02206 0.9270 1.3570 95 - 6490.5000 1.14700 0.02045 0.9400 1.3610 106 - 6491.5000 1.18100 0.01900 0.9560 1.3340 99 - 6492.5000 1.09700 0.01934 0.9780 1.3490 92 - 6493.5000 1.17300 0.02215 0.9530 1.4090 106 - 6494.5000 1.12000 0.02232 0.9630 1.4050 98 - 6495.5000 1.11400 0.02387 0.9170 1.3750 92 - 6496.5000 1.17900 0.02011 0.9750 1.3890 106 - 6497.5000 1.18500 0.01975 1.0130 1.4060 99 - 6498.5000 1.12200 0.02071 0.9370 1.3300 90 - 6499.5000 1.16300 0.02117 0.9620 1.3980 106 - 6500.5000 1.18300 0.02071 1.0170 1.4270 98 - 6501.5000 1.16100 0.02247 0.9670 1.3980 92 - 6502.5000 1.23400 0.02287 1.0230 1.4940 106 - 6503.5000 1.20000 0.02261 0.9530 1.4030 99 - 6504.5000 1.19500 0.02972 0.9890 1.5560 91 - 6505.5000 1.23500 0.02456 1.0350 1.5430 107 - 6506.5000 1.24000 0.02578 1.0270 1.5400 99 - 6507.5000 1.19700 0.02259 1.0520 1.4830 91 - 6508.5000 1.24500 0.02223 1.0830 1.5450 108 - 6509.5000 1.25300 0.02339 1.1010 1.5570 95 - 6510.5000 1.23400 0.02311 1.0700 1.5110 91 - 6511.5000 1.31400 0.02200 1.0990 1.5520 106 - 6512.5000 1.32700 0.02337 1.1080 1.5660 96 - 6513.5000 1.26000 0.02711 1.1010 1.6210 92 - 6514.5000 1.31600 0.02254 1.1110 1.5730 105 - 6515.5000 1.32100 0.02700 1.1340 1.6630 96 - 6516.5000 1.38000 0.02799 1.1410 1.6780 92 - 6517.5000 1.43700 0.02273 1.1460 1.6140 106 - 6518.5000 1.42900 0.02802 1.2060 1.7550 96 - 6519.5000 1.35700 0.02502 1.1970 1.6770 92 - 6520.5000 1.41400 0.02627 1.1940 1.7350 106 - 6521.5000 1.49500 0.03144 1.2240 1.8400 96 - 6522.5000 1.43000 0.02930 1.2110 1.7700 91 - 6523.5000 1.47300 0.02765 1.2210 1.7850 104 - 6524.5000 1.54400 0.02757 1.2930 1.8360 97 - 6525.5000 1.48600 0.02518 1.3010 1.7840 92 - 6526.5000 1.55100 0.02545 1.3380 1.8570 104 - 6527.5000 1.60000 0.03501 1.3510 2.0370 96 - 6528.5000 1.55100 0.02690 1.3370 1.8530 92 - 6529.5000 1.62700 0.02903 1.3300 1.9220 104 - 6530.5000 1.63200 0.03286 1.3860 2.0300 96 - 6531.5000 1.64300 0.03071 1.3720 1.9580 91 - 6532.5000 1.68700 0.03667 1.3930 2.1410 104 - 6533.5000 1.83400 0.03475 1.4520 2.1330 96 - 6534.5000 1.64400 0.03023 1.3840 1.9640 92 - 6535.5000 1.75300 0.03808 1.4420 2.2150 103 - 6536.5000 1.89400 0.03356 1.5840 2.2450 97 - 6537.5000 1.85100 0.03061 1.5210 2.1050 91 - 6538.5000 1.84400 0.04296 1.4780 2.3500 103 - 6539.5000 1.95200 0.03615 1.6880 2.3890 94 - 6540.5000 1.96900 0.04345 1.5720 2.4190 95 - 6541.5000 1.97200 0.04673 1.5940 2.5380 102 - 6542.5000 2.06000 0.04283 1.7220 2.5570 95 - 6543.5000 2.11800 0.04590 1.6240 2.5140 94 - 6544.5000 2.11800 0.05120 1.6910 2.7150 100 - 6545.5000 2.31400 0.04632 1.8510 2.7540 95 - 6546.5000 2.34200 0.05272 1.8110 2.8440 96 - 6547.5000 2.51900 0.05031 2.0180 3.0140 98 - 6548.5000 2.50800 0.05397 2.0840 3.1470 97 - 6549.5000 2.61200 0.04525 2.1010 2.9830 95 - 6550.5000 2.76500 0.06331 2.1240 3.3710 97 - 6551.5000 2.83500 0.05679 2.3060 3.4130 95 - 6552.5000 2.70800 0.04843 2.2680 3.2020 93 - 6553.5000 2.77800 0.06166 2.2090 3.4360 99 - 6554.5000 2.75600 0.05781 2.3500 3.4590 92 - 6555.5000 2.63100 0.05200 2.2610 3.2800 96 - 6556.5000 2.93000 0.06460 2.2390 3.5180 98 - 6557.5000 2.99300 0.06279 2.4530 3.6640 93 - 6558.5000 3.09000 0.06236 2.3780 3.6000 96 - 6559.5000 3.08000 0.07408 2.4490 3.8930 95 - 6560.5000 3.36800 0.07876 2.7600 4.2790 93 - 6561.5000 3.47700 0.08250 2.6630 4.3130 100 - 6562.5000 3.51400 0.09393 2.8930 4.6850 91 - 6563.5000 4.29200 0.15201 3.1450 6.0610 92 - 6564.5000 3.71900 0.11008 2.9450 5.2010 105 - 6565.5000 3.79500 0.12291 3.0520 5.3710 89 - 6566.5000 4.19500 0.14320 3.1320 5.8790 92 - 6567.5000 3.83000 0.09091 2.7800 4.6430 105 - 6568.5000 3.59100 0.09885 2.6600 4.5460 91 - 6569.5000 3.42400 0.08481 2.6770 4.2950 91 - 6570.5000 2.96600 0.07271 2.2960 3.7790 104 - 6571.5000 2.98500 0.07013 2.4080 3.7460 91 - 6572.5000 2.87700 0.05593 2.4680 3.5350 91 - 6573.5000 2.60300 0.05337 2.1250 3.2240 106 - 6574.5000 2.66300 0.05348 2.2860 3.2950 89 - 6575.5000 2.69300 0.05545 2.1810 3.2390 91 - 6576.5000 2.50600 0.04518 2.0940 3.0200 105 - 6577.5000 2.61500 0.04963 2.2100 3.1620 92 - 6578.5000 2.63700 0.04982 2.2120 3.1360 86 - 6579.5000 2.51800 0.04026 2.1400 2.9650 105 - 6580.5000 2.71500 0.05312 2.1980 3.2390 96 - 6581.5000 2.71300 0.06023 2.2470 3.3510 84 - 6582.5000 2.61700 0.05299 2.1260 3.1910 101 - 6583.5000 2.91600 0.06136 2.3250 3.5460 99 - 6584.5000 2.98300 0.07823 2.4510 3.8850 84 - 6585.5000 2.76500 0.05995 2.2960 3.5070 102 - 6586.5000 2.87900 0.06402 2.3180 3.5660 95 - 6587.5000 2.83300 0.07001 2.2760 3.5670 85 - 6588.5000 2.44100 0.05183 1.9960 3.0480 103 - 6589.5000 2.34300 0.05656 1.9990 3.0840 92 - 6590.5000 2.14800 0.06191 1.7010 2.8560 87 - 6591.5000 2.02700 0.04453 1.6310 2.5260 101 - 6592.5000 2.03600 0.04610 1.6830 2.5770 94 - 6593.5000 1.88200 0.04686 1.4910 2.3500 84 - 6594.5000 1.73600 0.04060 1.4900 2.3140 103 - 6595.5000 1.82900 0.04125 1.5110 2.2980 91 - 6596.5000 1.67600 0.04135 1.3480 2.1150 86 - 6597.5000 1.64800 0.03675 1.4090 2.1550 103 - 6598.5000 1.69400 0.03674 1.4650 2.1660 91 - 6599.5000 1.60800 0.03630 1.3060 1.9910 89 - 6600.5000 1.57900 0.03733 1.3620 2.1010 98 - 6601.5000 1.70200 0.03731 1.3790 2.0830 89 - 6602.5000 1.51100 0.03292 1.2760 1.9110 93 - 6603.5000 1.57800 0.03622 1.2770 1.9830 95 - 6604.5000 1.51400 0.04045 1.2240 1.9830 88 - 6605.5000 1.51000 0.03347 1.2260 1.8750 94 - 6606.5000 1.48100 0.03219 1.2820 1.9160 97 - 6607.5000 1.56300 0.03483 1.2500 1.8960 86 - 6608.5000 1.36200 0.02549 1.1590 1.6610 97 - 6609.5000 1.45400 0.03405 1.2330 1.8790 90 - 6610.5000 1.48700 0.03343 1.1780 1.7980 86 - 6611.5000 1.42900 0.03129 1.1290 1.7580 101 - 6612.5000 1.43800 0.03020 1.1630 1.7360 90 - 6613.5000 1.39100 0.03004 1.1510 1.7050 85 - 6614.5000 1.36100 0.02774 1.1210 1.6840 103 - 6615.5000 1.41800 0.03091 1.2110 1.7910 88 - 6616.5000 1.32300 0.03424 1.1320 1.7670 86 - 6617.5000 1.34700 0.02470 1.1160 1.6100 100 - 6618.5000 1.30800 0.02598 1.1350 1.6360 93 - 6619.5000 1.31500 0.03059 1.1050 1.6590 82 - 6620.5000 1.27500 0.02662 1.0990 1.6260 98 - 6621.5000 1.30400 0.02462 1.1250 1.6100 97 - 6622.5000 1.27700 0.03298 1.1010 1.6910 80 - 6623.5000 1.24800 0.02294 1.0380 1.4990 101 - 6624.5000 1.32900 0.02377 1.0940 1.5450 90 - 6625.5000 1.24800 0.03062 1.0440 1.6120 86 - 6626.5000 1.21200 0.02411 0.9770 1.4520 97 - 6627.5000 1.23300 0.02335 1.0750 1.5230 92 - 6628.5000 1.22200 0.02728 1.0210 1.5180 83 - 6629.5000 1.24800 0.02419 1.0040 1.4830 98 - 6630.5000 1.21400 0.02007 1.0510 1.4340 91 - 6631.5000 1.16500 0.02291 0.9320 1.3520 84 - 6632.5000 1.18900 0.02077 1.0060 1.4130 96 - 6633.5000 1.17000 0.02846 1.0010 1.5320 87 - 6634.5000 1.19200 0.02205 1.0140 1.4300 89 - 6635.5000 1.18900 0.01913 1.0050 1.3760 94 - 6636.5000 1.19000 0.02123 1.0010 1.3970 87 - 6637.5000 1.16400 0.02530 0.9320 1.4120 90 - 6638.5000 1.17600 0.01702 1.0230 1.3460 90 - 6639.5000 1.19600 0.02650 0.9950 1.4750 82 - 6640.5000 1.10900 0.02035 0.9180 1.3230 99 - 6641.5000 1.13400 0.02308 1.0030 1.4360 88 - 6642.5000 1.18000 0.01817 1.0040 1.3350 83 - 6643.5000 1.15300 0.01761 0.9810 1.3350 101 - 6644.5000 1.12600 0.02595 0.9370 1.4210 87 - 6645.5000 1.10800 0.02468 0.9430 1.3900 82 - 6646.5000 1.15100 0.01831 0.9900 1.3470 95 - 6647.5000 1.11900 0.01794 0.9950 1.3410 93 - 6648.5000 1.11700 0.02250 0.9280 1.3280 79 - 6649.5000 1.09700 0.01693 0.9520 1.2820 95 - 6650.5000 1.12600 0.01744 0.9970 1.3260 89 - 6651.5000 1.09000 0.02170 0.9060 1.2990 82 - 6652.5000 1.10700 0.01806 0.9330 1.2850 95 - 6653.5000 1.09700 0.01971 0.9280 1.3020 90 - 6654.5000 1.08600 0.01772 0.9320 1.2490 80 - 6655.5000 1.09500 0.01542 0.9530 1.2520 94 - 6656.5000 1.09800 0.01934 0.8980 1.2630 89 - 6657.5000 1.05200 0.01954 0.8520 1.2080 83 - 6658.5000 1.07300 0.01766 0.9420 1.2790 91 - 6659.5000 1.07800 0.02075 0.9030 1.2900 87 - 6660.5000 1.06000 0.01741 0.8890 1.2120 86 - 6661.5000 1.07900 0.01672 0.9500 1.2690 91 - 6662.5000 1.08900 0.02008 0.8860 1.2540 84 - 6663.5000 1.03700 0.01410 0.9110 1.1830 93 - 6664.5000 1.09700 0.01589 0.9640 1.2570 85 - 6665.5000 1.04000 0.02117 0.8380 1.2260 84 - 6666.5000 1.05700 0.01929 0.8350 1.2150 97 - 6667.5000 1.03300 0.01849 0.8860 1.2250 84 - 6668.5000 1.04000 0.01532 0.9100 1.1840 80 - 6669.5000 1.07200 0.01795 0.8810 1.2290 94 - 6670.5000 1.05000 0.01840 0.9240 1.2750 91 - 6671.5000 1.04400 0.01904 0.8540 1.1860 76 - 6672.5000 1.08900 0.01773 0.9090 1.2510 93 - 6673.5000 1.06500 0.02111 0.8850 1.2810 88 - 6674.5000 1.06500 0.02028 0.8860 1.2510 81 - 6675.5000 1.03900 0.01741 0.8580 1.1920 92 - 6676.5000 1.07900 0.01768 0.9090 1.2370 86 - 6677.5000 1.03000 0.01895 0.8680 1.2070 80 - 6678.5000 1.06800 0.01506 0.9160 1.2080 94 - 6679.5000 0.97200 0.01937 0.8500 1.2030 83 - 6680.5000 1.00500 0.01806 0.8400 1.1730 85 - 6681.5000 1.01900 0.01945 0.8770 1.2420 88 - 6682.5000 1.03400 0.01562 0.9160 1.2040 85 - 6683.5000 0.99900 0.01935 0.8110 1.1720 87 - 6684.5000 1.03900 0.01664 0.9070 1.2120 84 - 6685.5000 0.98400 0.01925 0.8460 1.1860 78 - 6686.5000 1.03600 0.01683 0.8400 1.1680 95 - 6687.5000 1.05500 0.02058 0.8590 1.2340 83 - 6688.5000 1.01800 0.01789 0.8410 1.1570 78 - 6689.5000 1.02900 0.01789 0.8170 1.1620 93 - 6690.5000 1.01600 0.01908 0.8440 1.2020 88 - 6691.5000 0.96100 0.01820 0.8360 1.1470 73 - 6692.5000 0.99500 0.02027 0.8010 1.1920 93 - 6693.5000 0.98400 0.01723 0.8650 1.1790 83 - 6694.5000 0.97000 0.02214 0.7750 1.1610 76 - 6695.5000 1.02600 0.02049 0.7900 1.1810 91 - 6696.5000 0.99700 0.01657 0.8610 1.1630 83 - 6697.5000 0.99700 0.02003 0.8240 1.1800 79 - 6698.5000 1.02300 0.01813 0.8220 1.1640 89 - 6699.5000 0.96800 0.01745 0.8130 1.1290 82 - 6700.5000 0.99400 0.02166 0.7550 1.1520 84 - 6701.5000 1.00200 0.01639 0.8470 1.1510 86 - 6702.5000 0.97700 0.01444 0.8300 1.0850 78 - 6703.5000 0.95700 0.02175 0.7880 1.2030 91 - 6704.5000 0.99500 0.02242 0.7570 1.1680 84 - 6705.5000 0.96800 0.02191 0.7960 1.1830 78 - 6706.5000 0.98600 0.01985 0.7610 1.1480 95 - 6707.5000 1.06700 0.02004 0.8430 1.2060 82 - 6708.5000 0.92500 0.01727 0.8330 1.1260 72 - 6709.5000 1.02000 0.01983 0.8220 1.1940 88 - 6710.5000 1.03100 0.01817 0.8810 1.2180 86 - 6711.5000 0.98000 0.02504 0.7910 1.2160 72 - 6712.5000 0.98500 0.01998 0.8240 1.2010 89 - 6713.5000 1.03400 0.02305 0.8510 1.2710 83 - 6714.5000 1.04800 0.02786 0.8280 1.3170 77 - 6715.5000 1.11900 0.02629 0.8660 1.3620 89 - 6716.5000 1.14100 0.02700 0.9740 1.4570 80 - 6717.5000 1.11800 0.02953 0.9060 1.4440 83 - 6718.5000 1.25300 0.03176 0.9710 1.5600 86 - 6719.5000 1.25800 0.03151 0.9470 1.5000 77 - 6720.5000 1.19100 0.02091 0.9420 1.3410 91 - 6721.5000 1.12700 0.02534 0.8930 1.3520 82 - 6722.5000 1.05600 0.02519 0.8650 1.3070 77 - 6723.5000 1.11000 0.02135 0.8530 1.2670 94 - 6724.5000 1.05500 0.02049 0.8810 1.2520 82 - 6725.5000 0.96800 0.01738 0.8790 1.1740 72 - 6726.5000 1.04900 0.01993 0.8700 1.2460 89 - 6727.5000 1.07000 0.01745 0.8640 1.1820 83 - 6728.5000 0.99400 0.02292 0.8390 1.2360 75 - 6729.5000 1.14200 0.02259 0.8880 1.3070 86 - 6730.5000 1.09200 0.02333 0.9150 1.3350 81 - 6731.5000 1.11100 0.02800 0.9140 1.3990 75 - 6732.5000 1.24100 0.02842 1.0190 1.5430 85 - 6733.5000 1.22700 0.02650 0.9450 1.4130 78 - 6734.5000 1.15200 0.02563 0.8880 1.3550 83 - 6735.5000 1.14200 0.02351 0.9120 1.3300 79 - 6736.5000 1.05000 0.02494 0.8570 1.2860 74 - 6737.5000 1.01100 0.01960 0.8540 1.2300 92 - 6738.5000 0.98000 0.02123 0.8010 1.1760 78 - 6739.5000 0.95100 0.01909 0.8110 1.1350 72 - 6740.5000 0.93900 0.01967 0.7390 1.1060 87 - 6741.5000 0.98100 0.01670 0.8170 1.1250 85 - 6742.5000 0.93100 0.01673 0.7720 1.0480 68 - 6743.5000 0.91100 0.01795 0.7650 1.0980 86 - 6744.5000 0.96600 0.01689 0.7760 1.0800 81 - 6745.5000 0.90400 0.01628 0.7550 1.0370 75 - 6746.5000 0.93200 0.01817 0.7650 1.1040 87 - 6747.5000 0.89300 0.02120 0.7360 1.1080 77 - 6748.5000 0.91400 0.01654 0.7840 1.0780 79 - 6749.5000 0.89900 0.01557 0.7900 1.0720 82 - 6750.5000 0.85000 0.01908 0.7290 1.0550 73 - 6751.5000 0.90200 0.01724 0.7200 1.0490 91 - 6752.5000 0.92500 0.01546 0.7980 1.0710 78 - 6753.5000 0.90200 0.01697 0.7520 1.0380 71 - 6754.5000 0.92800 0.01795 0.7540 1.0870 86 - 6755.5000 0.89400 0.01954 0.7070 1.0630 83 - 6756.5000 0.84700 0.01164 0.7680 0.9600 68 - 6757.5000 0.92800 0.01735 0.7580 1.0760 84 - 6758.5000 0.94200 0.01496 0.7980 1.0640 79 - 6759.5000 0.88800 0.02148 0.7570 1.1240 73 - 6760.5000 0.91200 0.01969 0.7810 1.1440 85 - 6761.5000 0.87600 0.01864 0.7430 1.0680 76 - 6762.5000 0.90000 0.02396 0.6780 1.1040 79 - 6763.5000 0.94300 0.01582 0.8040 1.0870 80 - 6764.5000 0.87600 0.01821 0.7330 1.0420 72 - 6765.5000 0.90000 0.02009 0.7240 1.1010 88 - 6766.5000 0.92100 0.01983 0.7590 1.1070 77 - 6767.5000 0.87100 0.01344 0.7730 1.0010 72 - 6768.5000 0.92200 0.01990 0.7440 1.1130 86 - 6769.5000 0.91900 0.01904 0.7320 1.0790 83 - 6770.5000 0.85000 0.01956 0.7340 1.0590 69 - 6771.5000 0.91500 0.01876 0.7300 1.0780 86 - 6772.5000 0.89300 0.01464 0.7960 1.0530 77 - 6773.5000 0.86800 0.01494 0.7690 1.0260 74 - 6774.5000 0.96000 0.01789 0.7940 1.1220 84 - 6775.5000 0.89000 0.01813 0.7550 1.0690 75 - 6776.5000 0.89900 0.01939 0.7330 1.0820 81 - 6777.5000 0.98100 0.01727 0.7780 1.0830 78 - 6778.5000 0.88600 0.01626 0.7350 1.0090 71 - 6779.5000 0.89100 0.02035 0.7180 1.1020 89 - 6780.5000 0.92500 0.02137 0.7530 1.1280 77 - 6781.5000 0.88700 0.01818 0.7390 1.0410 69 - 6782.5000 0.96200 0.01735 0.7780 1.0960 84 - 6783.5000 0.92300 0.01834 0.7680 1.0940 79 - 6784.5000 0.92000 0.01889 0.7510 1.0760 74 - 6785.5000 0.99100 0.01955 0.7970 1.1510 82 - 6786.5000 0.92200 0.01858 0.7530 1.0770 76 - 6787.5000 0.89800 0.02129 0.7020 1.0780 78 - 6788.5000 0.92700 0.02323 0.7180 1.1310 79 - 6789.5000 0.89400 0.01790 0.7210 1.0290 74 - 6790.5000 0.86800 0.02008 0.7010 1.0690 84 - 6791.5000 0.95100 0.01957 0.7660 1.1050 75 - 6792.5000 0.90200 0.01838 0.7410 1.0550 73 - 6793.5000 0.87500 0.02164 0.7540 1.1460 82 - 6794.5000 0.88300 0.01628 0.7560 1.0490 81 - 6795.5000 0.86600 0.01546 0.7310 0.9860 68 - 6796.5000 0.90600 0.01955 0.7500 1.1040 82 - 6797.5000 0.90700 0.01959 0.7030 1.0400 74 - 6798.5000 0.93600 0.01825 0.7520 1.0660 74 - 6799.5000 0.89100 0.01800 0.7390 1.0590 79 - 6800.5000 0.88300 0.01803 0.7170 1.0230 72 - 6801.5000 0.85800 0.01850 0.6960 1.0270 80 - 6802.5000 0.94400 0.02360 0.7410 1.1470 74 - 6803.5000 0.90800 0.01781 0.7470 1.0450 70 - 6804.5000 0.89800 0.02016 0.7290 1.1050 87 - 6805.5000 0.93500 0.01875 0.7750 1.1020 76 - 6806.5000 0.82800 0.01729 0.7160 0.9970 66 - 6807.5000 0.93900 0.02000 0.7350 1.0950 81 - 6808.5000 0.82800 0.01796 0.7450 1.0560 75 - 6809.5000 0.89500 0.02068 0.7220 1.0680 70 - 6810.5000 0.92300 0.01828 0.7650 1.0920 80 - 6811.5000 0.93600 0.02080 0.7660 1.1190 72 - 6812.5000 0.85800 0.02252 0.6540 1.0440 75 - 6813.5000 0.92300 0.02102 0.7340 1.0980 75 - 6814.5000 0.82400 0.01806 0.7030 1.0030 69 - 6815.5000 0.89400 0.01876 0.7160 1.0640 86 - 6816.5000 0.90400 0.02329 0.7490 1.1470 73 - 6817.5000 0.87200 0.02083 0.6630 1.0040 67 - 6818.5000 0.92200 0.02126 0.7510 1.1290 79 - 6819.5000 0.89800 0.01761 0.7710 1.0780 76 - 6820.5000 0.83900 0.02425 0.6570 1.0540 67 - 6821.5000 0.94800 0.01867 0.7670 1.1010 80 - 6822.5000 0.86600 0.02175 0.6720 1.0360 70 - 6823.5000 0.89600 0.02332 0.7070 1.1110 75 - 6824.5000 0.98000 0.02470 0.7340 1.1590 74 - 6825.5000 0.88500 0.01620 0.7260 0.9970 70 - 6826.5000 0.86300 0.02199 0.7380 1.1410 84 - 6827.5000 0.95300 0.02118 0.7510 1.1130 73 - 6828.5000 0.89800 0.01791 0.7210 1.0120 66 - 6829.5000 0.98600 0.02143 0.7690 1.1500 79 - 6830.5000 0.92100 0.01813 0.7480 1.0620 75 - 6831.5000 0.85100 0.01957 0.7060 1.0240 66 - 6832.5000 0.91300 0.01901 0.7640 1.1020 79 - 6833.5000 0.91300 0.02018 0.7350 1.0750 71 - 6834.5000 0.85900 0.02096 0.6660 1.0290 75 - 6835.5000 0.95200 0.01924 0.7880 1.1190 74 - 6836.5000 0.88700 0.01715 0.7540 1.0390 69 - 6837.5000 0.92400 0.01806 0.7460 1.0750 83 - 6838.5000 0.96100 0.02101 0.7380 1.0970 73 - 6839.5000 0.86800 0.02294 0.6970 1.0640 64 - 6840.5000 0.91800 0.02123 0.7560 1.1310 78 - 6841.5000 0.92300 0.01691 0.7390 1.0300 74 - 6842.5000 0.93900 0.02110 0.7050 1.0530 68 - 6843.5000 0.94100 0.02447 0.7270 1.1620 79 - 6844.5000 0.83200 0.01655 0.7220 0.9990 70 - 6845.5000 0.93100 0.02299 0.6980 1.1040 78 - 6846.5000 0.98500 0.02092 0.7680 1.1280 74 - 6847.5000 0.90200 0.01995 0.7110 1.0400 68 - 6848.5000 0.91000 0.02066 0.6830 1.0640 85 - 6849.5000 0.90800 0.02186 0.7250 1.0960 72 - 6850.5000 0.89600 0.02131 0.7160 1.0570 64 - 6851.5000 0.92000 0.02151 0.7480 1.1280 78 - 6852.5000 0.89600 0.02370 0.7210 1.1260 73 - 6853.5000 0.86100 0.01875 0.7110 1.0270 71 - 6854.5000 0.92100 0.02168 0.7450 1.1230 76 - 6855.5000 0.84000 0.02201 0.6580 1.0290 71 - 6856.5000 0.82800 0.01991 0.6820 1.0360 79 - 6857.5000 0.88400 0.01966 0.7170 1.0530 73 - 6858.5000 0.89500 0.01541 0.7630 1.0190 69 - 6859.5000 0.91700 0.02000 0.7330 1.0840 77 - 6860.5000 0.90500 0.01766 0.7460 1.0560 77 - 6861.5000 0.85200 0.01949 0.6760 0.9950 67 - 6862.5000 0.97300 0.03000 0.6850 1.2080 76 - 6863.5000 0.88400 0.02263 0.7170 1.1010 72 - 6864.5000 0.83100 0.02032 0.6550 1.0070 75 - 6865.5000 0.91800 0.02409 0.7210 1.1410 76 - 6866.5000 0.82100 0.02266 0.6360 1.0070 67 - 6867.5000 0.88500 0.02083 0.6990 1.0830 85 - 6868.5000 0.85700 0.02128 0.7040 1.0600 70 - 6869.5000 0.85100 0.02006 0.6980 1.0240 66 - 6870.5000 0.92300 0.02306 0.7310 1.1330 76 - 6871.5000 0.90100 0.01976 0.7030 1.0430 74 - 6872.5000 0.81900 0.02511 0.6400 1.0510 67 - 6873.5000 0.93900 0.01749 0.7760 1.0810 76 - 6874.5000 0.88800 0.02315 0.6840 1.0630 67 - 6875.5000 0.84500 0.01766 0.7050 1.0150 77 - 6876.5000 0.86300 0.02039 0.7120 1.0580 72 - 6877.5000 0.84800 0.02022 0.6980 1.0290 67 - 6878.5000 0.88500 0.02108 0.6920 1.0620 77 - 6879.5000 0.87100 0.01905 0.7320 1.0620 75 - 6880.5000 0.85700 0.01935 0.6790 0.9910 65 - 6881.5000 0.89200 0.02747 0.6800 1.1590 76 - 6882.5000 0.86700 0.01904 0.7660 1.0800 68 - 6883.5000 0.87400 0.02076 0.6640 1.0260 76 - 6884.5000 0.90100 0.02292 0.7260 1.1150 72 - 6885.5000 0.83700 0.02307 0.6690 1.0410 65 - 6886.5000 0.88200 0.01800 0.7160 1.0440 83 - 6887.5000 0.93200 0.01944 0.7900 1.1130 69 - 6888.5000 0.84000 0.01688 0.7700 1.0400 64 - 6889.5000 0.97400 0.02842 0.7130 1.2150 78 - 6890.5000 0.88100 0.01946 0.7250 1.0530 71 - 6891.5000 0.89200 0.02564 0.6940 1.1230 70 - 6892.5000 0.88800 0.02039 0.7500 1.0960 72 - 6893.5000 0.91100 0.01787 0.7390 1.0380 70 - 6894.5000 0.88100 0.01834 0.7020 1.0260 78 - 6895.5000 0.93400 0.02450 0.7310 1.1410 70 - 6896.5000 0.87900 0.02200 0.7080 1.0600 64 - 6897.5000 0.94700 0.02448 0.7090 1.1330 75 - 6898.5000 0.92800 0.01957 0.7320 1.0710 75 - 6899.5000 0.86000 0.02211 0.6990 1.0500 63 - 6900.5000 0.95200 0.01813 0.7470 1.0610 75 - 6901.5000 0.91100 0.02317 0.7020 1.0870 69 - 6902.5000 0.85000 0.02206 0.6690 1.0460 73 - 6903.5000 0.97300 0.01842 0.7820 1.0880 69 - 6904.5000 0.83600 0.02084 0.6670 1.0030 65 - 6905.5000 0.92500 0.02251 0.6900 1.0850 77 - 6906.5000 0.88900 0.02162 0.6650 1.0420 76 - 6907.5000 0.81600 0.02786 0.5970 1.0250 59 - 6908.5000 0.88100 0.02390 0.7330 1.1470 75 - 6909.5000 0.85200 0.02149 0.6880 1.0450 69 - 6910.5000 0.85700 0.01982 0.7080 1.0420 71 - 6911.5000 0.93300 0.02332 0.7240 1.1170 71 - 6912.5000 0.90400 0.01823 0.7290 1.0230 65 - 6913.5000 0.88100 0.01956 0.7110 1.0630 81 - 6914.5000 0.89900 0.01932 0.7590 1.0800 69 - 6915.5000 0.82800 0.02227 0.6970 1.0420 60 - 6916.5000 0.88800 0.02182 0.7050 1.0830 75 - 6917.5000 0.87800 0.02205 0.6600 1.0290 70 - 6918.5000 0.91100 0.02280 0.7060 1.0820 68 - 6919.5000 0.95100 0.02056 0.7310 1.0750 70 - 6920.5000 0.90100 0.02140 0.7550 1.1000 65 - 6921.5000 0.87600 0.02081 0.6920 1.0620 79 - 6922.5000 0.89600 0.02035 0.7040 1.0470 71 - 6923.5000 0.86400 0.01839 0.7160 1.0080 63 - 6924.5000 0.92800 0.02448 0.6830 1.1070 75 - 6925.5000 0.89700 0.02033 0.7280 1.0730 72 - 6926.5000 0.88500 0.02357 0.6370 1.0200 66 - 6927.5000 0.87300 0.01890 0.7180 1.0410 73 - 6928.5000 0.89800 0.01841 0.7270 1.0350 70 - 6929.5000 0.86700 0.02286 0.6450 1.0410 75 - 6930.5000 0.94200 0.01847 0.7460 1.0550 70 - 6931.5000 0.80100 0.02228 0.6740 1.0220 61 - 6932.5000 0.95400 0.02220 0.7230 1.1100 76 - 6933.5000 0.90700 0.01850 0.7370 1.0510 72 - 6934.5000 0.91100 0.02140 0.7020 1.0470 65 - 6935.5000 0.92300 0.02327 0.7430 1.1460 75 - 6936.5000 0.86700 0.02456 0.6640 1.0660 67 - 6937.5000 0.85500 0.01953 0.6940 1.0300 74 - 6938.5000 0.96100 0.02008 0.7720 1.1080 70 - 6939.5000 0.87600 0.01959 0.7030 1.0040 59 - 6940.5000 0.93000 0.02482 0.7100 1.1370 74 - 6941.5000 0.91900 0.01874 0.7930 1.1110 72 - 6942.5000 0.88900 0.01716 0.7110 0.9790 61 - 6943.5000 0.95400 0.02160 0.7390 1.1030 71 - 6944.5000 0.93600 0.02006 0.7790 1.1000 64 - 6945.5000 0.92300 0.01996 0.7270 1.0610 70 - 6946.5000 0.92000 0.01916 0.7380 1.0470 65 - 6947.5000 0.94000 0.01812 0.7860 1.0620 58 - 6948.5000 0.92600 0.02504 0.6970 1.1160 70 - 6949.5000 0.92600 0.02089 0.7510 1.0980 69 - 6950.5000 0.81200 0.02325 0.6800 1.0310 57 - 6951.5000 0.94600 0.02486 0.7100 1.1290 71 - 6952.5000 0.96100 0.02451 0.7420 1.1280 62 - 6953.5000 0.86700 0.01898 0.7280 1.0410 68 - 6954.5000 0.93000 0.01842 0.7800 1.0770 65 - 6955.5000 0.85900 0.02285 0.7260 1.0740 58 - 6956.5000 0.91300 0.02298 0.7060 1.0850 68 - 6957.5000 0.86400 0.01655 0.7570 1.0340 70 - 6958.5000 0.85900 0.01821 0.7300 1.0050 57 - 6959.5000 0.94700 0.02056 0.7760 1.1200 70 - 6960.5000 0.85400 0.02221 0.7020 1.0490 61 - 6961.5000 0.88900 0.01934 0.7240 1.0430 68 - 6962.5000 0.92700 0.02437 0.7270 1.1230 66 - 6963.5000 0.94400 0.02461 0.7580 1.1360 59 - 6964.5000 0.96000 0.02221 0.7260 1.0950 69 - 6965.5000 0.92900 0.01892 0.7810 1.0930 68 - 6966.5000 0.87500 0.02162 0.7210 1.0560 60 - 6967.5000 0.94400 0.02080 0.7510 1.0890 66 - 6968.5000 0.95800 0.02482 0.7440 1.1380 63 - 6969.5000 0.90300 0.01877 0.7400 1.0540 70 - 6970.5000 0.90100 0.02102 0.7520 1.0910 65 - 6971.5000 0.88900 0.01998 0.7190 1.0180 56 - 6972.5000 0.97700 0.02114 0.7900 1.1360 67 - 6973.5000 0.97900 0.01975 0.8370 1.1530 64 - 6974.5000 0.87300 0.02046 0.7210 1.0380 60 - 6975.5000 0.94700 0.02000 0.7560 1.0760 64 - 6976.5000 0.87500 0.01732 0.7540 1.0200 59 - 6977.5000 0.87800 0.02169 0.6920 1.0550 70 - 6978.5000 0.90000 0.01844 0.7350 1.0300 64 - 6979.5000 0.82100 0.01784 0.7020 0.9690 56 - 6980.5000 0.95400 0.02394 0.7380 1.1210 64 - 6981.5000 0.90100 0.02099 0.7480 1.0890 66 - 6982.5000 0.91500 0.02324 0.7170 1.0800 61 - 6983.5000 0.93100 0.02056 0.7870 1.1210 66 - 6984.5000 0.95100 0.01609 0.8030 1.0480 58 - 6985.5000 0.88700 0.02239 0.7410 1.1130 69 - 6986.5000 0.91900 0.02144 0.7530 1.1040 67 - 6987.5000 0.88500 0.02542 0.7170 1.0800 51 - 6988.5000 0.92700 0.02474 0.7010 1.1060 67 - 6989.5000 0.94600 0.01882 0.7670 1.0610 61 - 6990.5000 0.91300 0.02145 0.7260 1.0610 61 - 6991.5000 0.96200 0.02181 0.7570 1.1060 64 - 6992.5000 0.91700 0.01871 0.7350 1.0200 58 - 6993.5000 0.92600 0.02314 0.7410 1.1170 66 - 6994.5000 0.89700 0.02617 0.6500 1.0720 65 - 6995.5000 0.87800 0.02359 0.7520 1.1050 56 - 6996.5000 0.94500 0.02419 0.7890 1.1820 66 - 6997.5000 0.94900 0.02356 0.7640 1.1350 62 - 6998.5000 0.85900 0.02245 0.7250 1.0870 65 - 6999.5000 0.92200 0.02206 0.7770 1.1300 64 - 7000.5000 0.91500 0.02392 0.7770 1.1350 56 - 7001.5000 0.96100 0.02819 0.7220 1.1800 66 - 7002.5000 0.92900 0.02099 0.7160 1.0570 66 - 7003.5000 0.85800 0.02652 0.6780 1.0820 58 - 7004.5000 0.92800 0.02028 0.7680 1.0950 65 - 7005.5000 0.94300 0.01784 0.7800 1.0610 62 - 7006.5000 0.87700 0.02166 0.7180 1.0700 66 - 7007.5000 0.91600 0.01836 0.7750 1.0710 65 - 7008.5000 0.88100 0.02690 0.6290 1.0280 55 - 7009.5000 1.00100 0.02226 0.7990 1.1580 65 - 7010.5000 0.92300 0.01881 0.7700 1.0710 64 - 7011.5000 0.86700 0.01921 0.7230 1.0230 61 - 7012.5000 0.97100 0.01965 0.7780 1.0900 63 - 7013.5000 0.84500 0.02180 0.7130 1.0450 58 - 7014.5000 0.93600 0.01738 0.7660 1.0610 72 - 7015.5000 0.93900 0.02512 0.7440 1.1490 65 - 7016.5000 0.89700 0.02016 0.7260 1.0250 55 - 7017.5000 0.95700 0.02106 0.7730 1.1100 64 - 7018.5000 0.91800 0.01721 0.7420 1.0130 62 - 7019.5000 0.83500 0.02019 0.6460 0.9640 62 - 7020.5000 0.97200 0.02438 0.7660 1.1560 64 - 7021.5000 0.88300 0.02070 0.7220 1.0290 55 - 7022.5000 0.95900 0.02735 0.7030 1.1440 65 - 7023.5000 0.94000 0.01946 0.7910 1.1120 68 - 7024.5000 0.89300 0.02454 0.7120 1.0760 55 - 7025.5000 0.97200 0.01881 0.7750 1.0760 64 - 7026.5000 0.92700 0.01997 0.7250 1.0370 61 - 7027.5000 0.93800 0.02122 0.6980 1.0480 68 - 7028.5000 0.92000 0.02125 0.7140 1.0540 64 - 7029.5000 0.89200 0.02077 0.7500 1.0580 55 - 7030.5000 0.91100 0.02216 0.7510 1.1110 66 - 7031.5000 0.85900 0.02090 0.7160 1.0530 65 - 7032.5000 0.89600 0.02226 0.6810 1.0230 59 - 7033.5000 0.93100 0.02419 0.7030 1.0870 63 - 7034.5000 0.85200 0.02379 0.7310 1.0870 56 - 7035.5000 0.97900 0.02431 0.7140 1.1150 68 - 7036.5000 0.93500 0.02314 0.7200 1.0960 66 - 7037.5000 0.92300 0.02225 0.7020 1.0260 53 - 7038.5000 0.96700 0.02382 0.7570 1.1470 67 - 7039.5000 0.95000 0.02403 0.6740 1.0400 58 - 7040.5000 0.94600 0.02125 0.7600 1.1000 64 - 7041.5000 0.88800 0.01937 0.7470 1.0520 62 - 7042.5000 0.88400 0.02238 0.7360 1.0680 55 - 7043.5000 0.98400 0.02806 0.7380 1.1870 64 - 7044.5000 0.98900 0.02387 0.7590 1.1380 63 - 7045.5000 0.88000 0.01964 0.7560 1.0500 56 - 7046.5000 0.98400 0.02119 0.8030 1.1420 64 - 7047.5000 0.92700 0.02245 0.8090 1.1450 56 - 7048.5000 0.91200 0.02420 0.7340 1.1360 69 - 7049.5000 0.97800 0.01918 0.8140 1.1160 62 - 7050.5000 0.92000 0.02510 0.7160 1.0780 52 - 7051.5000 0.99000 0.01694 0.8450 1.1160 64 - 7052.5000 1.00400 0.02070 0.7950 1.1210 62 - 7053.5000 0.93000 0.01933 0.7730 1.0750 61 - 7054.5000 0.93600 0.01997 0.7720 1.0890 63 - 7055.5000 0.93400 0.01518 0.7970 1.0180 53 - 7056.5000 0.99900 0.02272 0.7790 1.1510 67 - 7057.5000 0.96800 0.02117 0.7590 1.0950 63 - 7058.5000 0.90900 0.01953 0.7910 1.0780 54 - 7059.5000 0.98600 0.01650 0.8390 1.1030 64 - 7060.5000 0.92800 0.01690 0.8160 1.0620 53 - 7061.5000 0.96400 0.01878 0.7840 1.0960 69 - 7062.5000 0.92500 0.02747 0.7040 1.1400 63 - 7063.5000 0.91800 0.01889 0.7700 1.0450 53 - 7064.5000 1.05700 0.02756 0.7420 1.1760 62 - 7065.5000 0.95200 0.02111 0.8150 1.1420 60 - 7066.5000 0.87100 0.02299 0.7070 1.0720 63 - 7067.5000 0.99200 0.02143 0.8140 1.1460 60 - 7068.5000 0.91500 0.02427 0.7560 1.1160 55 - 7069.5000 1.03300 0.02744 0.7560 1.1950 64 - 7070.5000 0.91300 0.01613 0.7660 1.0220 63 - 7071.5000 0.89300 0.02258 0.7250 1.0630 56 - 7072.5000 0.95900 0.02502 0.7150 1.1090 62 - 7073.5000 0.91800 0.02058 0.7650 1.0730 56 - 7074.5000 1.00900 0.02053 0.7910 1.1220 65 - 7075.5000 1.01100 0.02184 0.7980 1.1420 62 - 7076.5000 0.93300 0.02335 0.7390 1.0790 53 - 7077.5000 1.00500 0.02375 0.7820 1.1620 64 - 7078.5000 0.89600 0.01858 0.7330 1.0160 58 - 7079.5000 0.89400 0.02129 0.7100 1.0480 63 - 7080.5000 0.90700 0.01876 0.7980 1.0910 61 - 7081.5000 0.88100 0.02253 0.6900 1.0180 53 - 7082.5000 0.90800 0.02496 0.7050 1.0980 62 - 7083.5000 0.91500 0.02083 0.7180 1.0460 62 - 7084.5000 0.96100 0.01731 0.8460 1.1050 56 - 7085.5000 0.89400 0.02228 0.7390 1.0870 61 - 7086.5000 0.89000 0.01764 0.7830 1.0470 56 - 7087.5000 0.92100 0.02766 0.7070 1.1390 61 - 7088.5000 0.90100 0.01656 0.7770 1.0460 66 - 7089.5000 0.88800 0.02507 0.7330 1.0910 51 - 7090.5000 0.91400 0.02253 0.7420 1.0940 61 - 7091.5000 0.84100 0.01841 0.7310 1.0090 57 - 7092.5000 0.87700 0.02078 0.7210 1.0560 65 - 7093.5000 0.91500 0.02197 0.7070 1.0530 62 - 7094.5000 0.82800 0.02093 0.7060 1.0020 50 - 7095.5000 0.93200 0.02215 0.7580 1.1040 61 - 7096.5000 0.85300 0.02068 0.6920 1.0150 61 - 7097.5000 0.87800 0.02318 0.6960 1.0460 57 - 7098.5000 0.86100 0.02072 0.7240 1.0450 60 - 7099.5000 0.92600 0.02280 0.7260 1.0580 53 - 7100.5000 0.91000 0.02254 0.7140 1.0690 62 - 7101.5000 0.81600 0.01943 0.6660 0.9720 62 - 7102.5000 0.91400 0.02273 0.7030 1.0370 54 - 7103.5000 0.88100 0.01878 0.7270 1.0130 58 - 7104.5000 0.89600 0.02219 0.7310 1.0510 52 - 7105.5000 0.92900 0.02072 0.7460 1.0670 60 - 7106.5000 0.92400 0.02073 0.7480 1.0770 63 - 7107.5000 0.89400 0.02851 0.7490 1.1440 48 - 7108.5000 0.95100 0.02169 0.7780 1.1140 60 - 7109.5000 0.83900 0.02035 0.7240 1.0340 58 - 7110.5000 0.87800 0.02649 0.6520 1.0590 59 - 7111.5000 0.91600 0.02175 0.7340 1.0710 60 - 7112.5000 0.86000 0.02241 0.7210 1.0250 46 - 7113.5000 0.94500 0.02311 0.7430 1.0980 59 - 7114.5000 0.85500 0.02372 0.7010 1.0560 56 - 7115.5000 0.85700 0.02858 0.6470 1.0670 54 - 7116.5000 0.89300 0.02552 0.7180 1.1100 59 - 7117.5000 0.83600 0.02021 0.7160 0.9990 49 - 7118.5000 0.87100 0.02388 0.6380 1.0110 61 - 7119.5000 0.90400 0.02000 0.7220 1.0240 57 - 7120.5000 0.87300 0.02170 0.7190 1.0290 51 - 7121.5000 0.95600 0.02121 0.7460 1.0690 58 - 7122.5000 0.84000 0.02163 0.7090 1.0180 51 - 7123.5000 0.86400 0.02993 0.6600 1.1080 56 - 7124.5000 0.91500 0.02180 0.7180 1.0640 63 - 7125.5000 0.86200 0.02144 0.6870 0.9810 47 - 7126.5000 0.87800 0.02318 0.6690 1.0220 58 - 7127.5000 0.83000 0.02277 0.6840 1.0060 50 - 7128.5000 0.85800 0.02446 0.7000 1.0790 60 - 7129.5000 0.88600 0.01884 0.7090 0.9960 58 - 7130.5000 0.76200 0.02251 0.6710 0.9730 45 - 7131.5000 0.93300 0.02377 0.6880 1.0500 58 - 7132.5000 0.81500 0.02330 0.6680 1.0040 52 - 7133.5000 0.86500 0.02801 0.6590 1.0820 57 - 7134.5000 0.89400 0.02238 0.7450 1.0830 57 - 7135.5000 0.89600 0.02206 0.7650 1.0610 45 - 7136.5000 0.96600 0.02989 0.6860 1.1490 60 - 7137.5000 0.91600 0.02704 0.6890 1.0900 55 - 7138.5000 0.96100 0.03249 0.7090 1.1730 51 - 7139.5000 0.95800 0.02194 0.7420 1.0790 59 - 7140.5000 0.95600 0.02477 0.7490 1.0850 46 - 7141.5000 0.97700 0.02610 0.7350 1.1360 59 - 7142.5000 0.87900 0.01989 0.7150 1.0180 58 - 7143.5000 0.88800 0.02721 0.7260 1.1030 48 - 7144.5000 0.86900 0.02172 0.6910 1.0190 57 - 7145.5000 0.86500 0.02312 0.7380 1.0550 47 - 7146.5000 0.91400 0.02673 0.6860 1.0860 56 - 7147.5000 0.85700 0.01850 0.7460 1.0350 61 - 7148.5000 0.80800 0.01929 0.6900 0.9370 41 - 7149.5000 0.90600 0.01751 0.7340 0.9960 56 - 7150.5000 0.80200 0.01836 0.6710 0.9280 49 - 7151.5000 0.86600 0.02350 0.6600 1.0240 60 - 7152.5000 0.87600 0.01618 0.7180 0.9580 55 - 7153.5000 0.90900 0.02145 0.7490 1.0270 42 - 7154.5000 0.93900 0.02002 0.7460 1.0510 58 - 7155.5000 0.86200 0.02254 0.7120 1.0340 51 - 7156.5000 0.86200 0.02136 0.7210 1.0320 53 - 7157.5000 0.87000 0.01510 0.7550 0.9810 56 - 7158.5000 0.84900 0.02329 0.6870 0.9960 44 - 7159.5000 0.88900 0.01864 0.7500 1.0240 54 - 7160.5000 0.84300 0.02205 0.7000 1.0150 51 - 7161.5000 0.83900 0.01878 0.7240 1.0000 54 - 7162.5000 0.92900 0.02102 0.7130 1.0220 54 - 7163.5000 0.84400 0.02020 0.7170 0.9940 47 - 7164.5000 0.88300 0.03115 0.6490 1.1110 55 - 7165.5000 0.81700 0.02108 0.7020 1.0090 53 - 7166.5000 0.87300 0.02284 0.6630 0.9860 50 - 7167.5000 0.87900 0.01728 0.7440 0.9980 54 - 7168.5000 0.85200 0.01565 0.7570 0.9670 45 - 7169.5000 0.87600 0.01795 0.7560 1.0270 57 - 7170.5000 0.77600 0.01892 0.6890 0.9670 54 - 7171.5000 0.85000 0.01924 0.7400 1.0010 46 - 7172.5000 0.92500 0.02272 0.7170 1.0540 55 - 7173.5000 0.84300 0.02072 0.6800 0.9610 46 - 7174.5000 0.93000 0.02163 0.7530 1.0650 52 - 7175.5000 0.84000 0.01987 0.7060 1.0060 57 - 7176.5000 0.89900 0.02631 0.7180 1.0630 43 - 7177.5000 0.87100 0.02028 0.6820 0.9800 54 - 7178.5000 0.79500 0.02199 0.6660 0.9610 45 - 7179.5000 0.91300 0.02259 0.6970 1.0320 55 - 7180.5000 0.85400 0.02225 0.7290 1.0650 57 - 7181.5000 0.82500 0.03006 0.6690 1.0540 41 - 7182.5000 0.89400 0.02507 0.7020 1.0600 51 - 7183.5000 0.83200 0.02443 0.6840 1.0190 47 - 7184.5000 0.89200 0.02252 0.7570 1.0910 55 - 7185.5000 0.87600 0.02660 0.7180 1.1090 54 - 7186.5000 0.84000 0.02890 0.6420 1.0030 39 - 7187.5000 0.89400 0.02219 0.7420 1.0620 52 - 7188.5000 0.82000 0.02160 0.7040 0.9970 46 - 7189.5000 0.88700 0.02218 0.6910 1.0170 54 - 7190.5000 0.84900 0.01892 0.7320 1.0100 54 - 7191.5000 0.85900 0.02198 0.7250 0.9960 38 - 7192.5000 0.90100 0.02669 0.7430 1.1280 52 - 7193.5000 0.83000 0.02297 0.6600 0.9750 47 - 7194.5000 0.88100 0.03118 0.6200 1.0610 50 - 7195.5000 0.87300 0.02293 0.6630 1.0000 54 - 7196.5000 0.81400 0.02274 0.6680 0.9520 39 - 7197.5000 0.89300 0.02843 0.6950 1.1050 52 - 7198.5000 0.81400 0.02166 0.6620 0.9590 47 - 7199.5000 0.91000 0.02376 0.7170 1.0530 50 - 7200.5000 0.88100 0.02531 0.7260 1.0980 54 - 7201.5000 0.83300 0.01787 0.7610 0.9870 40 - 7202.5000 0.87900 0.02164 0.7050 1.0110 50 - 7203.5000 0.84200 0.02271 0.6940 1.0120 49 - 7204.5000 0.85200 0.02321 0.6900 1.0150 49 - 7205.5000 0.87700 0.02445 0.6950 1.0510 53 - 7206.5000 0.83300 0.02514 0.6490 0.9710 41 - 7207.5000 0.90400 0.02018 0.7910 1.0820 52 - 7208.5000 0.89100 0.02758 0.6440 1.0340 50 - 7209.5000 0.86800 0.02216 0.7230 1.0300 48 - 7210.5000 0.90400 0.02545 0.7100 1.0770 52 - 7211.5000 0.78200 0.02371 0.6430 0.9540 43 - 7212.5000 0.89700 0.02666 0.6840 1.0610 50 - 7213.5000 0.82300 0.02170 0.6720 0.9820 51 - 7214.5000 0.83500 0.02462 0.6380 0.9720 46 - 7215.5000 0.82500 0.02100 0.6930 0.9930 51 - 7216.5000 0.86700 0.02127 0.7060 0.9850 43 - 7217.5000 0.97200 0.02626 0.6820 1.0570 51 - 7218.5000 0.89900 0.02242 0.7310 1.0480 50 - 7219.5000 0.87500 0.02484 0.6580 0.9950 46 - 7220.5000 0.90600 0.02472 0.7260 1.0860 53 - 7221.5000 0.83300 0.01937 0.7030 0.9540 42 - 7222.5000 0.87500 0.02401 0.6850 1.0280 51 - 7223.5000 0.82900 0.02436 0.6300 0.9780 51 - 7224.5000 0.88000 0.02433 0.6750 1.0050 46 - 7225.5000 0.91100 0.01969 0.7460 1.0300 52 - 7226.5000 0.81500 0.02561 0.6500 0.9740 40 - 7227.5000 0.87800 0.02387 0.7280 1.0690 51 - 7228.5000 0.80100 0.02191 0.6230 0.9420 53 - 7229.5000 0.83400 0.02376 0.6720 0.9800 42 - 7230.5000 0.89500 0.01599 0.7670 1.0020 54 - 7231.5000 0.82700 0.02999 0.6530 1.0370 41 - 7232.5000 0.88600 0.03326 0.6740 1.1490 51 - 7233.5000 0.87000 0.02600 0.6810 1.0560 52 - 7234.5000 0.91700 0.02493 0.7160 1.0430 43 - 7235.5000 0.93900 0.02624 0.7550 1.1370 53 - 7236.5000 0.92500 0.01976 0.7790 1.0290 40 - 7237.5000 0.98500 0.02263 0.8120 1.1320 50 - 7238.5000 0.83900 0.02496 0.6690 1.0290 52 - 7239.5000 0.94100 0.02163 0.7430 1.0200 41 - 7240.5000 0.96000 0.02871 0.6910 1.1010 51 - 7241.5000 0.84500 0.02530 0.7250 1.0450 40 - 7242.5000 0.89400 0.01911 0.7820 1.0440 47 - 7243.5000 0.91300 0.02351 0.7230 1.0620 52 - 7244.5000 0.88100 0.02450 0.6790 0.9850 39 - 7245.5000 0.95200 0.01872 0.7990 1.0690 52 - 7246.5000 0.85500 0.03194 0.6890 1.0930 40 - 7247.5000 0.86600 0.02636 0.6930 1.0620 49 - 7248.5000 0.86800 0.02441 0.6830 1.0350 52 - 7249.5000 0.87100 0.02569 0.7220 1.0510 41 - 7250.5000 0.92200 0.01930 0.7720 1.0450 50 - 7251.5000 0.85700 0.02538 0.6770 1.0020 41 - 7252.5000 0.94000 0.02136 0.7520 1.0480 48 - 7253.5000 0.91900 0.02333 0.7470 1.0770 50 - 7254.5000 0.87400 0.02699 0.7040 1.0580 43 - 7255.5000 0.88300 0.02249 0.7410 1.0590 50 - 7256.5000 0.83400 0.01913 0.6970 0.9420 41 - 7257.5000 0.90300 0.02555 0.7070 1.0610 48 - 7258.5000 0.87900 0.02593 0.7060 1.0690 49 - 7259.5000 0.86700 0.02646 0.6490 0.9920 42 - 7260.5000 0.85400 0.02729 0.7120 1.0940 49 - 7261.5000 0.81300 0.02253 0.6800 0.9720 42 - 7262.5000 0.94200 0.02786 0.7570 1.1390 47 - 7263.5000 0.83800 0.02801 0.6940 1.0740 46 - 7264.5000 0.92700 0.02608 0.6910 1.0370 44 - 7265.5000 0.85900 0.02345 0.7000 1.0250 48 - 7266.5000 0.88200 0.02741 0.6880 1.0390 41 - 7267.5000 0.89700 0.02429 0.7270 1.0600 47 - 7268.5000 0.87900 0.01801 0.7180 0.9650 47 - 7269.5000 0.86500 0.02133 0.7040 0.9870 44 - 7270.5000 0.95700 0.02410 0.7950 1.1290 48 - 7271.5000 0.85300 0.02601 0.6970 1.0260 40 - 7272.5000 0.86700 0.02268 0.7510 1.0620 47 - 7273.5000 0.95100 0.02691 0.7320 1.0890 44 - 7274.5000 0.88400 0.02421 0.7580 1.0900 47 - 7275.5000 0.96600 0.02171 0.7670 1.0710 49 - 7276.5000 0.84800 0.02871 0.6490 1.0030 38 - 7277.5000 0.92500 0.02605 0.7580 1.1190 48 - 7278.5000 0.81600 0.02261 0.7500 1.0500 44 - 7279.5000 0.93600 0.01976 0.7690 1.0370 46 - 7280.5000 0.94300 0.02383 0.7400 1.0770 50 - 7281.5000 0.86500 0.02565 0.6960 1.0080 37 - 7282.5000 0.89900 0.02454 0.7020 1.0420 48 - 7283.5000 0.87000 0.02615 0.6630 1.0020 42 - 7284.5000 0.93200 0.02050 0.7630 1.0470 48 - 7285.5000 0.86100 0.02979 0.6280 1.0450 49 - 7286.5000 0.85000 0.02586 0.6740 0.9800 35 - 7287.5000 0.88500 0.02239 0.7640 1.0710 47 - 7288.5000 0.81400 0.01585 0.7160 0.9190 41 - 7289.5000 0.92000 0.02843 0.7020 1.1000 49 - 7290.5000 0.84500 0.02490 0.6960 1.0410 48 - 7291.5000 0.81800 0.02535 0.6730 0.9730 35 - 7292.5000 0.89700 0.03005 0.7220 1.1340 47 - 7293.5000 0.89100 0.02353 0.6970 1.0020 42 - 7294.5000 0.95600 0.02774 0.7890 1.1570 44 - 7295.5000 0.89200 0.02496 0.6650 1.0180 50 - 7296.5000 0.91800 0.02718 0.7010 1.0180 34 - 7297.5000 0.89400 0.02917 0.7120 1.1120 47 - 7298.5000 0.78800 0.02483 0.6880 1.0060 41 - 7299.5000 0.96300 0.02928 0.7450 1.1290 43 - 7300.5000 0.84900 0.02164 0.6820 0.9880 50 - 7301.5000 0.94600 0.02819 0.7230 1.0660 37 - 7302.5000 0.92900 0.02646 0.7100 1.0650 45 - 7303.5000 0.84800 0.02218 0.7440 1.0210 39 - 7304.5000 0.89600 0.02425 0.7400 1.0580 43 - 7305.5000 0.93100 0.02661 0.7660 1.1190 44 - 7306.5000 0.87800 0.02612 0.7080 1.0170 35 - 7307.5000 0.96500 0.02864 0.7270 1.1280 49 - 7308.5000 0.84800 0.02409 0.6980 0.9830 35 - 7309.5000 0.90700 0.03280 0.6740 1.1140 45 - 7310.5000 0.91200 0.02702 0.7390 1.0850 41 - 7311.5000 0.95200 0.02482 0.7760 1.0820 38 - 7312.5000 0.89300 0.02571 0.7160 1.0610 45 - 7313.5000 0.90600 0.02442 0.7490 1.0420 36 - 7314.5000 0.93800 0.03309 0.6510 1.0850 43 - 7315.5000 0.93100 0.01994 0.7850 1.0340 39 - 7316.5000 0.96000 0.02870 0.7450 1.1170 42 - 7317.5000 0.92600 0.02094 0.7650 1.0490 46 - 7318.5000 0.93400 0.02007 0.7780 1.0120 34 - 7319.5000 0.95100 0.02885 0.7480 1.1350 45 - 7320.5000 0.86400 0.02636 0.7390 1.0640 38 - 7321.5000 1.00400 0.02446 0.8350 1.1520 42 - 7322.5000 0.91200 0.02494 0.7290 1.0710 47 - 7323.5000 0.94700 0.02119 0.8230 1.0590 31 - 7324.5000 0.92300 0.02661 0.7340 1.0830 43 - 7325.5000 0.90200 0.02298 0.7470 1.0340 39 - 7326.5000 0.95700 0.02230 0.8370 1.1260 42 - 7327.5000 0.89400 0.02043 0.7610 1.0320 44 - 7328.5000 0.91000 0.02961 0.7280 1.0630 32 - 7329.5000 0.98100 0.02427 0.8370 1.1590 44 - 7330.5000 0.90300 0.02660 0.7250 1.0530 38 - 7331.5000 0.98700 0.01713 0.8820 1.0960 39 - 7332.5000 0.90500 0.02384 0.7190 1.0280 42 - 7333.5000 0.96600 0.02679 0.7820 1.0990 35 - 7334.5000 0.95700 0.02525 0.7560 1.0910 44 - 7335.5000 0.87200 0.02324 0.7740 1.0490 35 - 7336.5000 0.96700 0.02878 0.7800 1.1440 40 - 7337.5000 0.90200 0.02577 0.7640 1.0980 42 - 7338.5000 0.89600 0.03262 0.6900 1.0760 35 - 7339.5000 0.93200 0.02303 0.7870 1.0960 45 - 7340.5000 0.95400 0.02924 0.7140 1.0600 35 - 7341.5000 1.01500 0.02639 0.8070 1.1490 42 - 7342.5000 0.88000 0.02441 0.7470 1.0480 38 - 7343.5000 0.91100 0.03212 0.7180 1.1140 38 - 7344.5000 0.92600 0.02326 0.7830 1.0880 43 - 7345.5000 0.93700 0.02912 0.7270 1.0460 30 - 7346.5000 1.00200 0.02847 0.7130 1.0820 42 - 7347.5000 0.88500 0.02899 0.7520 1.0950 35 - 7348.5000 0.96400 0.02617 0.7990 1.1300 40 - 7349.5000 0.90400 0.02269 0.7480 1.0490 44 - 7350.5000 0.95500 0.03024 0.7410 1.0610 28 - 7351.5000 1.00100 0.03209 0.7240 1.1350 41 - 7352.5000 0.97300 0.02908 0.7800 1.1290 36 - 7353.5000 0.97500 0.02863 0.7920 1.1450 38 - 7354.5000 0.89200 0.02249 0.7190 1.0070 41 - 7355.5000 0.92000 0.02696 0.7530 1.0580 32 - 7356.5000 0.98500 0.02577 0.7990 1.1330 42 - 7357.5000 0.85800 0.02611 0.6890 0.9890 33 - 7358.5000 0.95400 0.02490 0.7660 1.0770 39 - 7359.5000 0.90800 0.02954 0.7190 1.0880 39 - 7360.5000 0.90600 0.02206 0.7700 1.0310 35 - 7361.5000 0.89400 0.02829 0.7270 1.0980 43 - 7362.5000 0.85400 0.02559 0.7320 1.0260 33 - 7363.5000 0.97400 0.02482 0.8020 1.1080 38 - 7364.5000 0.85900 0.02101 0.7250 0.9840 38 - 7365.5000 0.92200 0.03293 0.6840 1.0900 38 - 7366.5000 0.92100 0.01960 0.8020 1.0620 44 - 7367.5000 0.89800 0.02888 0.7090 1.0200 29 - 7368.5000 0.93200 0.02720 0.8080 1.1520 40 - 7369.5000 0.89400 0.03100 0.7210 1.0930 36 - 7370.5000 0.93700 0.02602 0.7870 1.1120 39 - 7371.5000 0.91500 0.02150 0.7920 1.0740 43 - 7372.5000 0.85400 0.02520 0.7150 0.9910 30 - 7373.5000 0.95900 0.02991 0.7490 1.1320 41 - 7374.5000 0.94900 0.02383 0.7610 1.0430 35 - 7375.5000 0.96700 0.03025 0.7580 1.1260 37 - 7376.5000 0.94700 0.03483 0.6700 1.1050 39 - 7377.5000 0.93800 0.03164 0.7340 1.0920 32 - 7378.5000 0.93400 0.02371 0.7460 1.0570 43 - 7379.5000 0.93500 0.02333 0.7920 1.0560 32 - 7380.5000 0.90700 0.03283 0.6840 1.0940 39 - 7381.5000 0.86000 0.02579 0.7660 1.0840 38 - 7382.5000 0.97100 0.02992 0.7660 1.1250 36 - 7383.5000 0.93500 0.02623 0.7600 1.1000 42 - 7384.5000 0.89400 0.03591 0.7070 1.0870 28 - 7385.5000 0.96800 0.02522 0.7500 1.0690 40 - 7386.5000 0.84300 0.02367 0.7130 0.9850 33 - 7387.5000 0.94000 0.02071 0.7900 1.0420 37 - 7388.5000 0.87700 0.03186 0.6380 1.0460 41 - 7389.5000 0.86500 0.02825 0.6920 0.9910 28 - 7390.5000 0.90500 0.03067 0.7220 1.1100 40 - 7391.5000 0.91900 0.03284 0.6320 1.0150 34 - 7392.5000 0.92700 0.02663 0.7480 1.0720 37 - 7393.5000 0.86500 0.02121 0.7540 1.0120 37 - 7394.5000 0.93500 0.01832 0.7720 0.9760 31 - 7395.5000 0.89100 0.02958 0.6900 1.0780 43 - 7396.5000 0.90100 0.02838 0.7130 1.0290 31 - 7397.5000 0.93200 0.02782 0.7330 1.0760 38 - 7398.5000 0.89800 0.03068 0.7180 1.0810 35 - 7399.5000 0.90600 0.02282 0.7260 0.9960 35 - 7400.5000 0.97100 0.02257 0.8160 1.1050 41 - 7401.5000 0.90900 0.02810 0.7840 1.0650 25 - 7402.5000 0.95800 0.02066 0.8230 1.0810 39 - 7403.5000 0.93900 0.02753 0.7590 1.0800 34 - 7404.5000 0.96300 0.01767 0.8070 1.0220 37 - 7405.5000 0.91200 0.02652 0.7790 1.1060 38 - 7406.5000 0.92600 0.01894 0.7800 0.9840 29 - 7407.5000 0.95900 0.02443 0.8300 1.1390 40 - 7408.5000 0.93700 0.02611 0.7660 1.0520 30 - 7409.5000 0.95000 0.03058 0.7980 1.1700 37 - 7410.5000 0.94200 0.02581 0.7840 1.0980 37 - 7411.5000 0.96000 0.03005 0.7110 1.0510 32 - 7412.5000 0.97000 0.02214 0.8040 1.0770 38 - 7413.5000 0.84900 0.02910 0.6740 0.9820 28 - 7414.5000 0.94500 0.03244 0.7110 1.1110 38 - 7415.5000 0.83400 0.03186 0.6730 1.0390 33 - 7416.5000 1.00500 0.03686 0.6850 1.1020 32 - 7417.5000 0.89000 0.02655 0.7250 1.0480 37 - 7418.5000 0.86700 0.03232 0.7070 1.0490 28 - 7419.5000 0.91700 0.01922 0.7980 1.0350 38 - 7420.5000 0.83500 0.02033 0.7410 0.9710 32 - 7421.5000 0.97400 0.02637 0.7650 1.0680 33 - 7422.5000 0.90000 0.03036 0.7400 1.0940 34 - 7423.5000 0.95700 0.02953 0.7170 1.0350 29 - 7424.5000 0.93000 0.02310 0.8140 1.0950 37 - 7425.5000 0.87700 0.02934 0.7070 1.0230 29 - 7426.5000 0.94000 0.04006 0.6530 1.1270 35 - 7427.5000 0.93200 0.03008 0.7670 1.1020 31 - 7428.5000 0.97300 0.01794 0.9010 1.1040 32 - 7429.5000 0.91100 0.02138 0.8080 1.0610 35 - 7430.5000 0.85000 0.03847 0.6330 1.0020 23 - 7431.5000 0.96800 0.01956 0.8190 1.0570 37 - 7432.5000 0.84800 0.02712 0.7300 1.0320 31 - 7433.5000 0.96500 0.02690 0.7720 1.0810 33 - 7434.5000 0.89900 0.02701 0.7080 1.0230 34 - 7435.5000 0.92700 0.01746 0.8550 1.0430 29 - 7436.5000 0.95500 0.02680 0.7370 1.0630 37 - 7437.5000 0.89800 0.02451 0.7370 1.0010 29 - 7438.5000 0.95500 0.02470 0.7920 1.0800 34 - 7439.5000 0.93300 0.03610 0.7660 1.1680 31 - 7440.5000 0.97800 0.03637 0.7280 1.1330 31 - 7441.5000 0.95400 0.03293 0.7840 1.1680 34 - 7442.5000 0.80600 0.03513 0.6510 0.9880 23 - 7443.5000 0.95900 0.03361 0.7550 1.1470 34 - 7444.5000 0.87300 0.02350 0.7190 0.9890 33 - 7445.5000 0.99500 0.03003 0.8420 1.1710 30 - 7446.5000 0.92500 0.02672 0.7380 1.0450 33 - 7447.5000 0.95200 0.02050 0.8290 1.0460 28 - 7448.5000 0.97700 0.02058 0.8240 1.0710 36 - 7449.5000 0.89000 0.02646 0.7430 1.0280 29 - 7450.5000 0.96100 0.01984 0.8260 1.0540 33 - 7451.5000 0.94200 0.02484 0.7630 1.0440 32 - 7452.5000 0.91300 0.02452 0.8110 1.0840 31 - 7453.5000 0.97100 0.02717 0.8300 1.1560 36 - 7454.5000 0.92800 0.02444 0.7600 0.9840 21 - 7455.5000 0.99500 0.03421 0.7780 1.1710 33 - 7456.5000 0.98100 0.02290 0.8030 1.0580 31 - 7457.5000 0.98300 0.03044 0.8020 1.1410 31 - 7458.5000 0.86100 0.03262 0.6800 1.0490 32 - 7459.5000 0.95500 0.02372 0.7930 1.0440 28 - 7460.5000 0.94700 0.03267 0.6610 1.0420 34 - 7461.5000 0.92700 0.02901 0.7150 1.0220 28 - 7462.5000 0.99900 0.02669 0.8310 1.1330 32 - 7463.5000 0.84700 0.02758 0.7260 1.0380 32 - 7464.5000 0.95900 0.01976 0.8130 1.0330 31 - 7465.5000 0.95100 0.02784 0.7710 1.0860 32 - 7466.5000 0.94100 0.03235 0.7470 1.0640 24 - 7467.5000 0.92600 0.02735 0.7490 1.0680 34 - 7468.5000 0.88900 0.02994 0.6810 1.0090 30 - 7469.5000 0.97800 0.03341 0.7150 1.0870 31 - 7470.5000 0.87900 0.03244 0.7180 1.0850 32 - 7471.5000 0.91100 0.02769 0.6870 0.9800 28 - 7472.5000 0.97400 0.03203 0.7480 1.1270 35 - 7473.5000 0.84700 0.03000 0.6980 0.9980 25 - 7474.5000 0.94900 0.01935 0.8120 1.0410 35 - 7475.5000 0.77300 0.02976 0.6960 1.0220 30 - 7476.5000 0.94300 0.03086 0.7350 1.0730 30 - 7477.5000 0.97600 0.02890 0.7720 1.0990 32 - 7478.5000 0.91100 0.02800 0.7430 1.0230 25 - 7479.5000 0.97700 0.02341 0.8060 1.0750 33 - 7480.5000 0.81400 0.02858 0.6780 0.9750 27 - 7481.5000 0.96600 0.02559 0.8030 1.0970 33 - 7482.5000 0.96900 0.03412 0.7270 1.1130 32 - 7483.5000 0.93700 0.02980 0.7430 1.0640 29 - 7484.5000 0.96600 0.03567 0.7660 1.1820 34 - 7485.5000 0.93700 0.03295 0.6970 1.0130 23 - 7486.5000 0.95500 0.03032 0.7880 1.1310 32 - 7487.5000 0.90800 0.03204 0.6840 1.0350 30 - 7488.5000 0.93300 0.02656 0.7970 1.0880 30 - 7489.5000 0.89900 0.02930 0.6940 1.0150 30 - 7490.5000 0.90800 0.03791 0.7280 1.1220 27 - 7491.5000 0.91800 0.03224 0.7120 1.0880 34 - 7492.5000 0.80400 0.02954 0.6430 0.9500 27 - 7493.5000 0.96100 0.02583 0.7520 1.0350 30 - 7494.5000 0.81800 0.03128 0.6590 0.9900 28 - 7495.5000 0.99800 0.02410 0.8080 1.0720 30 - 7496.5000 0.89500 0.02535 0.7640 1.0370 29 - 7497.5000 0.84900 0.03044 0.6730 0.9650 23 - 7498.5000 0.93200 0.03098 0.7100 1.0550 31 - 7499.5000 0.80400 0.02457 0.6910 0.9510 28 - 7500.5000 1.01000 0.02346 0.8440 1.1010 30 - 7501.5000 0.88200 0.03406 0.7070 1.0610 27 - 7502.5000 0.93700 0.03137 0.6950 1.0210 27 - 7503.5000 0.92600 0.02510 0.7730 1.0480 30 - 7504.5000 0.88500 0.02408 0.7570 0.9880 23 - 7505.5000 0.96500 0.02929 0.7990 1.1090 28 - 7506.5000 0.83200 0.03445 0.7270 1.0850 27 - 7507.5000 0.96400 0.01984 0.8820 1.0920 28 - 7508.5000 0.80000 0.02457 0.7310 0.9910 28 - 7509.5000 0.92700 0.01540 0.8800 1.0340 25 - 7510.5000 0.87800 0.02912 0.7040 1.0230 30 - 7511.5000 0.84000 0.03224 0.6630 0.9980 27 - 7512.5000 0.95100 0.04128 0.7000 1.1290 27 - 7513.5000 0.74600 0.03268 0.6690 1.0210 29 - 7514.5000 1.00700 0.03458 0.7320 1.0980 28 - 7515.5000 0.86600 0.04109 0.6700 1.0970 27 - 7516.5000 0.80100 0.03260 0.6790 1.0050 25 - 7517.5000 0.91200 0.04447 0.6900 1.1690 29 - 7518.5000 0.79600 0.02839 0.6820 0.9770 27 - 7519.5000 1.05500 0.02976 0.8700 1.1850 28 - 7520.5000 0.90700 0.03581 0.7200 1.0990 28 - 7521.5000 0.99100 0.02395 0.8590 1.1170 29 - 7522.5000 0.93100 0.03584 0.7400 1.1260 29 - 7523.5000 0.90500 0.02974 0.7830 1.0620 22 - 7524.5000 0.94500 0.04253 0.6570 1.0990 27 - 7525.5000 0.79500 0.02590 0.7200 0.9990 29 - 7526.5000 0.97200 0.03920 0.6920 1.0840 25 - 7527.5000 0.84000 0.02560 0.7800 1.0460 27 - 7528.5000 0.96900 0.02470 0.8450 1.0920 25 - 7529.5000 0.91600 0.03326 0.7510 1.1030 28 - 7530.5000 0.91000 0.02794 0.7840 1.0520 23 - 7531.5000 1.00600 0.02929 0.8030 1.1130 28 - 7532.5000 0.91200 0.02910 0.7500 1.0410 25 - 7533.5000 1.01000 0.02697 0.8040 1.0790 26 - 7534.5000 0.95400 0.03501 0.7280 1.0850 26 - 7535.5000 0.95500 0.02240 0.8110 1.0350 25 - 7536.5000 0.91200 0.03079 0.7140 1.0340 27 - 7537.5000 0.86100 0.01760 0.7970 0.9730 25 - 7538.5000 0.91500 0.02120 0.7850 0.9970 25 - 7539.5000 0.83400 0.02321 0.7400 0.9900 29 - 7540.5000 0.94100 0.02290 0.8190 1.0480 25 - 7541.5000 0.90300 0.03001 0.7160 1.0220 26 - 7542.5000 0.94900 0.03138 0.8150 1.1160 23 - 7543.5000 0.94700 0.03964 0.6860 1.0980 27 - 7544.5000 0.88500 0.03120 0.6900 1.0020 25 - 7545.5000 1.01700 0.03187 0.8810 1.2060 26 - 7546.5000 0.92300 0.03496 0.7400 1.1100 28 - 7547.5000 0.84800 0.03450 0.7090 1.0540 25 - 7548.5000 0.96900 0.02438 0.7860 1.0440 28 - 7549.5000 0.95100 0.03332 0.7030 1.0010 20 - 7550.5000 0.97800 0.03364 0.7330 1.0890 28 - 7551.5000 0.92600 0.02627 0.8100 1.0880 28 - 7552.5000 0.94500 0.02020 0.8370 1.0390 25 - 7553.5000 0.83000 0.04190 0.7210 1.1400 25 - 7554.5000 0.94700 0.03363 0.7310 1.0740 26 - 7555.5000 0.91800 0.03358 0.6950 1.0440 27 - 7556.5000 0.94100 0.03241 0.7660 1.0630 21 - 7557.5000 0.90700 0.03210 0.7430 1.0640 25 - 7558.5000 0.82300 0.03515 0.6870 1.0590 28 - 7559.5000 1.00400 0.03889 0.8490 1.2300 24 - 7560.5000 0.96300 0.03409 0.7210 1.0550 24 - 7561.5000 0.87700 0.04050 0.6990 1.1040 25 - 7562.5000 0.97200 0.02460 0.8000 1.0410 24 - 7563.5000 0.86400 0.04584 0.6860 1.0960 20 - 7564.5000 0.92600 0.02439 0.8210 1.0600 24 - 7565.5000 0.84600 0.03195 0.7350 1.0480 24 - 7566.5000 0.97100 0.04400 0.7020 1.1240 23 - 7567.5000 0.90000 0.03209 0.7090 1.0100 22 - 7568.5000 0.94400 0.02337 0.8730 1.1020 24 - 7569.5000 1.02100 0.03511 0.7870 1.1310 24 - 7570.5000 0.90100 0.02415 0.8190 1.0350 20 - 7571.5000 0.89200 0.03503 0.7810 1.1450 27 - 7572.5000 0.83000 0.02217 0.7660 0.9740 22 - 7573.5000 0.94500 0.02265 0.8460 1.0770 26 - 7574.5000 0.89600 0.02974 0.7600 1.0390 22 - 7575.5000 1.00900 0.04514 0.8100 1.2430 23 - 7576.5000 0.88100 0.02868 0.7680 1.0490 24 - 7577.5000 0.91300 0.02357 0.8240 1.0400 21 - 7578.5000 0.94900 0.02912 0.7800 1.0770 26 - 7579.5000 0.80500 0.02690 0.7210 0.9790 23 - 7580.5000 0.92100 0.02080 0.8150 1.0230 25 - 7581.5000 0.90700 0.03486 0.6750 1.0020 22 - 7582.5000 0.98500 0.02420 0.8370 1.0790 25 - 7583.5000 0.91000 0.04035 0.7300 1.1170 23 - 7584.5000 0.97900 0.03784 0.7940 1.1490 22 - 7585.5000 0.97000 0.02919 0.7750 1.0610 24 - 7586.5000 0.88500 0.04572 0.6860 1.1340 24 - 7587.5000 0.87700 0.02541 0.8180 1.0670 24 - 7588.5000 0.82800 0.03472 0.7590 1.0920 23 - 7589.5000 0.93200 0.01855 0.8050 0.9790 22 - 7590.5000 0.88300 0.02732 0.7590 1.0210 23 - 7591.5000 0.89300 0.03507 0.7540 1.0830 22 - 7592.5000 0.95000 0.03021 0.7870 1.0830 24 - 7593.5000 0.89400 0.04087 0.6950 1.0870 23 - 7594.5000 0.95800 0.02627 0.8350 1.0870 23 - 7595.5000 0.93100 0.03586 0.7110 1.0550 23 - 7596.5000 0.90400 0.03805 0.6660 1.0310 23 - 7597.5000 0.91200 0.02888 0.7930 1.0700 23 - 7598.5000 0.81400 0.04317 0.6440 1.0490 22 - 7599.5000 1.03400 0.02786 0.8950 1.1680 24 - 7600.5000 0.89900 0.03080 0.7100 1.0180 25 - 7601.5000 0.93400 0.03513 0.7670 1.1040 23 - 7602.5000 0.91600 0.03983 0.6900 1.0720 23 - 7603.5000 0.95800 0.04349 0.6870 1.0950 22 - 7604.5000 0.88800 0.03131 0.7070 0.9940 21 - 7605.5000 0.83600 0.03667 0.6520 0.9960 22 - 7606.5000 1.02100 0.04297 0.7680 1.1890 24 - 7607.5000 0.95600 0.04134 0.7020 1.1070 24 - 7608.5000 0.91300 0.03878 0.7690 1.1410 23 - 7609.5000 0.82600 0.03576 0.6890 1.0320 23 - 7610.5000 0.96900 0.01663 0.9040 1.0600 22 - 7611.5000 0.95900 0.04744 0.6400 1.0950 23 - 7612.5000 0.82300 0.03401 0.7320 1.0510 22 - 7613.5000 0.97100 0.04715 0.7340 1.1960 24 - 7614.5000 0.81500 0.03246 0.7060 1.0240 24 - 7615.5000 0.91900 0.02920 0.6960 0.9880 25 - 7616.5000 0.89400 0.03382 0.6670 0.9770 21 - 7617.5000 0.90800 0.02360 0.7470 0.9830 25 - 7618.5000 0.86400 0.02825 0.7340 0.9990 22 - 7619.5000 0.83100 0.03328 0.6540 0.9590 21 - 7620.5000 0.89600 0.03420 0.6560 0.9980 25 - 7621.5000 0.85800 0.03123 0.6700 0.9630 22 - 7622.5000 0.89700 0.02347 0.8150 1.0450 24 - 7623.5000 0.93400 0.03411 0.7510 1.0710 22 - 7624.5000 0.89600 0.03295 0.7080 1.0240 23 - 7625.5000 0.84600 0.02664 0.7440 1.0050 24 - 7626.5000 0.99700 0.04157 0.7370 1.1180 21 - 7627.5000 0.90100 0.02883 0.8000 1.0940 26 - 7628.5000 0.92500 0.02782 0.7320 0.9930 22 - 7629.5000 0.94900 0.01981 0.8300 1.0320 26 - 7630.5000 0.79400 0.03924 0.6540 1.0050 20 - 7631.5000 0.93600 0.02830 0.7860 1.0690 25 - 7632.5000 0.94800 0.03735 0.7170 1.0830 24 - 7633.5000 0.85700 0.02504 0.7450 0.9690 20 - 7634.5000 0.92100 0.03000 0.7400 1.0400 25 - 7635.5000 0.84900 0.04572 0.6630 1.1110 24 - 7636.5000 0.99300 0.04775 0.6990 1.1570 23 - 7637.5000 0.87400 0.04389 0.6770 1.0980 23 - 7638.5000 0.93100 0.02940 0.8010 1.0950 25 - 7639.5000 0.90800 0.04460 0.6970 1.1340 24 - 7640.5000 0.89600 0.01984 0.8260 0.9990 19 - 7641.5000 0.90600 0.03613 0.7430 1.0970 24 - 7642.5000 0.77300 0.03410 0.7130 1.0540 25 - 7643.5000 0.96600 0.03816 0.7270 1.0850 22 - 7644.5000 0.91900 0.02499 0.7580 0.9870 21 - 7645.5000 0.92900 0.02780 0.7490 1.0270 25 - 7646.5000 0.91600 0.02205 0.8370 1.0530 24 - 7647.5000 0.87900 0.02239 0.7620 0.9520 18 - 7648.5000 0.87700 0.02276 0.8260 1.0490 24 - 7649.5000 0.90200 0.02890 0.7290 1.0180 25 - 7650.5000 0.95600 0.04264 0.7030 1.1030 22 - 7651.5000 0.92200 0.02776 0.7540 1.0260 24 - 7652.5000 0.90600 0.02827 0.7280 1.0050 24 - 7653.5000 0.95600 0.02772 0.7490 1.0090 22 - 7654.5000 0.87300 0.02730 0.7450 0.9830 19 - 7655.5000 0.91600 0.02419 0.7380 0.9700 23 - 7656.5000 0.85200 0.03077 0.6880 0.9700 21 - 7657.5000 0.88200 0.01870 0.7900 0.9770 25 - 7658.5000 0.91000 0.02439 0.7420 0.9810 24 - 7659.5000 0.89500 0.02409 0.7920 1.0280 24 - 7660.5000 0.86300 0.03211 0.6710 0.9790 23 - 7661.5000 0.84300 0.02531 0.7230 0.9550 21 - 7662.5000 0.88400 0.03688 0.6680 1.0140 22 - 7663.5000 0.84100 0.04181 0.6890 1.0630 20 - 7664.5000 0.98100 0.02940 0.8510 1.1330 23 - 7665.5000 0.80300 0.04179 0.6480 1.0400 22 - 7666.5000 0.92300 0.02929 0.8130 1.1000 24 - 7667.5000 0.70700 0.03033 0.6400 0.9180 21 - 7668.5000 0.87700 0.02499 0.7600 0.9890 21 - 7669.5000 0.87400 0.04378 0.6290 1.0580 24 - 7670.5000 0.86000 0.03418 0.6950 0.9850 18 - 7671.5000 0.95000 0.02664 0.7680 1.0290 24 - 7672.5000 0.79600 0.03369 0.6590 0.9750 22 - 7673.5000 0.97000 0.02420 0.8100 1.0370 22 - 7674.5000 0.81400 0.02826 0.7070 0.9660 21 - 7675.5000 0.90900 0.01960 0.7810 0.9690 23 - 7676.5000 0.89800 0.03149 0.6560 0.9580 23 - 7677.5000 0.94600 0.02340 0.8450 1.0380 17 - 7678.5000 0.92000 0.03274 0.8110 1.1250 23 - 7679.5000 0.82500 0.02444 0.7020 0.9260 21 - 7680.5000 0.97600 0.03059 0.7860 1.0730 22 - 7681.5000 0.85200 0.02772 0.7280 0.9880 22 - 7682.5000 0.91100 0.03807 0.6880 1.0610 24 - 7683.5000 0.79200 0.02455 0.7240 0.9490 21 - 7684.5000 0.92000 0.03724 0.6920 1.0080 18 - 7685.5000 0.89800 0.02708 0.7720 1.0260 22 - 7686.5000 0.95300 0.04118 0.7730 1.1320 19 - 7687.5000 0.86800 0.02460 0.8000 1.0360 23 - 7688.5000 0.88600 0.02814 0.7720 1.0360 22 - 7689.5000 0.95300 0.01752 0.8300 0.9980 23 - 7690.5000 0.87100 0.02415 0.7330 0.9490 20 - 7691.5000 0.90500 0.02804 0.7590 1.0160 21 - 7692.5000 0.87800 0.01731 0.7620 0.9280 23 - 7693.5000 0.88300 0.03948 0.6950 1.0300 18 - 7694.5000 0.92800 0.02544 0.7630 1.0070 23 - 7695.5000 0.94300 0.03295 0.6990 1.0010 21 - 7696.5000 0.91700 0.01440 0.8950 1.0270 21 - 7697.5000 0.75000 0.02971 0.6730 0.9320 19 - 7698.5000 0.98100 0.04900 0.7110 1.1810 23 - 7699.5000 0.89800 0.03294 0.7340 1.0430 22 - 7700.5000 0.86200 0.03893 0.6570 0.9780 17 - 7701.5000 0.85900 0.02441 0.7120 0.9410 22 - 7702.5000 0.74500 0.04015 0.6350 0.9850 19 - 7703.5000 0.90700 0.03211 0.7180 1.0260 23 - 7704.5000 0.89900 0.02527 0.7960 1.0220 20 - 7705.5000 0.95100 0.02756 0.7540 1.0240 24 - 7706.5000 0.93400 0.04172 0.7130 1.0570 17 - 7707.5000 0.92900 0.03328 0.7380 1.0430 21 - 7708.5000 0.86600 0.04737 0.7890 1.2020 19 - 7709.5000 0.95100 0.03453 0.7130 1.0140 19 - 7710.5000 0.92000 0.02281 0.8750 1.0890 22 - 7711.5000 0.77700 0.03611 0.6920 1.0150 20 - 7712.5000 0.95300 0.02283 0.8340 1.0330 19 - 7713.5000 0.85100 0.03097 0.7310 1.0080 20 - 7714.5000 0.88300 0.02594 0.7870 1.0190 20 - 7715.5000 0.85600 0.03030 0.7500 1.0210 20 - 7716.5000 0.88400 0.02304 0.7660 0.9560 17 - 7717.5000 0.86300 0.03077 0.7060 0.9880 21 - 7718.5000 0.78900 0.03612 0.6350 0.9660 21 - 7719.5000 0.93700 0.03209 0.8560 1.1430 20 - 7720.5000 0.84800 0.03339 0.6510 0.9570 21 - 7721.5000 0.94800 0.03241 0.8330 1.1370 22 - 7722.5000 0.82000 0.03262 0.7270 0.9960 17 - 7723.5000 0.88700 0.02608 0.7690 1.0080 21 - 7724.5000 0.92700 0.02773 0.7490 0.9970 20 - 7725.5000 0.81100 0.02716 0.7260 0.9500 17 - 7726.5000 0.90100 0.02139 0.7530 0.9490 21 - 7727.5000 0.70400 0.03453 0.6300 0.9310 19 - 7728.5000 0.89300 0.03309 0.7110 1.0070 20 - 7729.5000 0.88200 0.04427 0.6160 1.0120 20 - 7730.5000 0.97600 0.03699 0.7530 1.1000 22 - 7731.5000 0.83300 0.02400 0.7680 0.9880 21 - 7732.5000 0.86000 0.01888 0.8180 0.9690 16 - 7733.5000 0.91500 0.03044 0.7090 0.9880 21 - 7734.5000 0.88300 0.03321 0.7660 1.0630 20 - 7735.5000 0.94500 0.02455 0.8820 1.1070 21 - 7736.5000 0.86800 0.03913 0.7210 1.0710 20 - 7737.5000 0.95700 0.03764 0.7500 1.1110 23 - 7738.5000 0.84800 0.02876 0.7540 0.9980 18 - 7739.5000 0.94700 0.02359 0.8480 1.0590 20 - 7740.5000 0.93400 0.03500 0.6940 0.9910 18 - 7741.5000 0.95400 0.03099 0.8030 1.0660 18 - 7742.5000 0.92400 0.03298 0.7700 1.0650 20 - 7743.5000 0.90000 0.03678 0.7080 1.0370 20 - 7744.5000 0.95700 0.04690 0.8070 1.2050 18 - 7745.5000 0.88500 0.02776 0.6930 0.9350 19 - 7746.5000 0.96500 0.02902 0.7650 1.0310 21 - 7747.5000 0.89800 0.02512 0.7320 0.9510 19 - 7748.5000 0.81600 0.03856 0.7040 1.0220 17 - 7749.5000 0.79900 0.02501 0.7170 0.9350 19 - 7750.5000 0.86800 0.02569 0.7560 0.9740 18 - 7751.5000 0.87600 0.03935 0.6920 1.0440 20 - 7752.5000 0.82100 0.03611 0.7170 1.0400 20 - 7753.5000 0.91000 0.02760 0.7940 1.0470 21 - 7754.5000 0.83000 0.03862 0.7230 1.0320 16 - 7755.5000 0.96100 0.02742 0.8120 1.0510 19 - 7756.5000 0.93100 0.02661 0.7750 1.0130 20 - 7757.5000 0.92300 0.02375 0.8030 0.9930 16 - 7758.5000 0.91000 0.04290 0.7880 1.1620 19 - 7759.5000 0.81200 0.02764 0.7350 0.9760 19 - 7760.5000 0.97200 0.03995 0.7500 1.0890 18 - 7761.5000 0.79500 0.03751 0.7170 1.0440 19 - 7762.5000 0.86300 0.03242 0.7300 1.0200 20 - 7763.5000 0.77300 0.03688 0.7320 1.0270 16 - 7764.5000 0.85700 0.02386 0.7410 0.9490 19 - 7765.5000 0.93700 0.03020 0.7820 1.0310 17 - 7766.5000 0.81900 0.03313 0.7670 1.0320 16 - 7767.5000 0.90500 0.02493 0.7880 1.0110 20 - 7768.5000 0.79700 0.03327 0.6690 0.9590 19 - 7769.5000 0.96600 0.02558 0.8690 1.0920 19 - 7770.5000 0.81800 0.02692 0.7030 0.9250 17 - 7771.5000 0.92000 0.02870 0.7680 1.0310 21 - 7772.5000 0.81000 0.02770 0.6860 0.9210 18 - 7773.5000 0.82800 0.02510 0.7130 0.9200 17 - 7774.5000 0.92100 0.04337 0.7520 1.1200 18 - 7775.5000 0.84800 0.02898 0.7500 0.9890 17 - 7776.5000 0.99200 0.04152 0.7210 1.0830 19 - 7777.5000 0.75700 0.03701 0.6520 0.9660 18 - 7778.5000 0.96200 0.02750 0.7930 1.0390 20 - 7779.5000 0.85900 0.04950 0.6730 1.0690 16 - 7780.5000 0.95000 0.02404 0.8110 1.0260 20 - 7781.5000 0.89900 0.03665 0.7860 1.0970 18 - 7782.5000 0.91700 0.02788 0.7750 0.9980 16 - 7783.5000 0.94100 0.03978 0.7580 1.0860 17 - 7784.5000 0.83600 0.03784 0.6450 0.9570 17 - 7785.5000 0.91600 0.03510 0.7770 1.0830 19 - 7786.5000 0.81100 0.02550 0.6850 0.8890 16 - 7787.5000 0.99200 0.05870 0.8420 1.3670 20 - 7788.5000 0.82700 0.04089 0.7300 1.0360 14 - 7789.5000 0.93900 0.04508 0.8530 1.2460 19 - 7790.5000 0.87700 0.02729 0.7850 1.0100 17 - 7791.5000 0.90300 0.03221 0.7190 0.9600 14 - 7792.5000 0.92600 0.03938 0.7370 1.0520 16 - 7793.5000 0.87400 0.03051 0.7590 1.0250 19 - 7794.5000 0.96300 0.03488 0.8770 1.1560 16 - 7795.5000 0.84400 0.03141 0.7510 1.0100 17 - 7796.5000 0.87900 0.03313 0.7860 1.0510 16 - 7797.5000 0.84000 0.04263 0.7130 1.0320 14 - 7798.5000 0.86500 0.02263 0.7630 0.9550 18 - 7799.5000 0.91600 0.03020 0.7740 1.0230 17 - 7800.5000 0.86200 0.02943 0.6700 0.8980 15 - 7801.5000 0.84600 0.04841 0.6550 1.0300 15 - 7802.5000 0.83700 0.03499 0.6840 0.9890 19 - 7803.5000 0.92000 0.05809 0.7560 1.2060 15 - 7804.5000 0.83800 0.06375 0.6510 1.1610 16 - 7805.5000 0.90200 0.03276 0.7240 1.0020 18 - 7806.5000 0.81900 0.06060 0.7360 1.1730 13 - 7807.5000 0.90600 0.03547 0.7350 1.0360 18 - 7808.5000 0.80600 0.02850 0.7320 0.9670 17 - 7809.5000 0.94800 0.04150 0.7740 1.1060 16 - 7810.5000 0.90200 0.04299 0.7580 1.0910 15 - 7811.5000 0.85900 0.03332 0.7550 1.0530 20 - 7812.5000 0.92700 0.04945 0.6510 1.0340 15 - 7813.5000 0.94300 0.03838 0.7690 1.0760 16 - 7814.5000 0.91900 0.04337 0.7320 1.1000 18 - 7815.5000 0.94000 0.04660 0.7580 1.1190 15 - 7816.5000 0.89200 0.04563 0.7300 1.0950 16 - 7817.5000 0.88600 0.03674 0.7340 1.0370 17 - 7818.5000 0.87300 0.03187 0.8090 1.0640 16 - 7819.5000 0.86800 0.01859 0.8350 0.9790 15 - 7820.5000 0.88300 0.03913 0.6560 1.0060 20 - 7821.5000 0.95900 0.03111 0.8240 1.0650 15 - 7822.5000 0.84400 0.02607 0.7240 0.9390 17 - 7823.5000 0.96000 0.02111 0.8150 0.9990 19 - 7824.5000 0.88500 0.02711 0.8010 1.0110 15 - 7825.5000 0.89700 0.03047 0.7870 1.0230 15 - 7826.5000 0.89100 0.04075 0.7520 1.0880 17 - 7827.5000 0.90600 0.03912 0.6540 0.9670 16 - 7828.5000 0.96200 0.04028 0.7850 1.0970 15 - 7829.5000 0.83800 0.03177 0.7020 0.9790 19 - 7830.5000 0.92800 0.02698 0.8240 1.0330 15 - 7831.5000 0.91800 0.03175 0.7570 1.0110 16 - 7832.5000 0.91700 0.03274 0.7680 1.0380 17 - 7833.5000 0.90600 0.03635 0.7220 0.9940 14 - 7834.5000 0.89900 0.03866 0.6670 0.9950 18 - 7835.5000 0.86400 0.02910 0.7190 0.9590 17 - 7836.5000 0.91500 0.05913 0.6050 1.0630 15 - 7837.5000 0.87300 0.04712 0.6640 1.0410 16 - 7838.5000 0.75600 0.03735 0.6210 0.9290 17 - 7839.5000 0.88700 0.04687 0.8070 1.1820 16 - 7840.5000 0.78500 0.06158 0.6840 1.1610 15 - 7841.5000 0.91400 0.03832 0.7300 1.0460 17 - 7842.5000 0.89200 0.03744 0.7360 1.0060 13 - 7843.5000 0.87500 0.03796 0.6880 1.0010 17 - 7844.5000 0.89300 0.04213 0.7260 1.0630 16 - 7845.5000 0.91000 0.05506 0.6960 1.1080 14 - 7846.5000 0.97500 0.05586 0.7550 1.1730 14 - 7847.5000 0.79100 0.02256 0.7460 0.9320 17 - 7848.5000 0.95900 0.03563 0.8710 1.1470 15 - 7849.5000 0.82800 0.03912 0.6640 0.9670 15 - 7850.5000 1.01200 0.04738 0.7090 1.1110 18 - 7851.5000 0.80100 0.04342 0.6820 0.9700 11 - 7852.5000 0.87800 0.03808 0.6790 1.0110 19 - 7853.5000 0.85000 0.04531 0.7300 1.0810 15 - 7854.5000 0.88900 0.03899 0.6790 0.9810 15 - 7855.5000 0.95500 0.05666 0.7210 1.1450 14 - 7856.5000 0.84500 0.02500 0.7390 0.9390 16 - 7857.5000 0.91300 0.03124 0.8520 1.0940 15 - 7858.5000 0.79600 0.02813 0.6930 0.9180 16 - 7859.5000 0.94900 0.06337 0.8070 1.3140 16 - 7860.5000 0.81500 0.03862 0.6450 0.9340 14 - 7861.5000 0.93100 0.03512 0.7270 1.0250 18 - 7862.5000 0.96300 0.03314 0.7900 1.0290 13 - 7863.5000 0.91000 0.04212 0.6940 1.0310 16 - 7864.5000 0.89600 0.05479 0.7270 1.1370 14 - 7865.5000 0.81100 0.04544 0.6520 1.0040 15 - 7866.5000 0.93300 0.02886 0.8190 1.0350 14 - 7867.5000 0.88400 0.03571 0.7840 1.0870 18 - 7868.5000 0.93600 0.05475 0.8510 1.2890 16 - 7869.5000 0.80700 0.03467 0.6910 0.9410 13 - 7870.5000 0.83600 0.04416 0.6720 1.0570 19 - 7871.5000 0.78700 0.04128 0.7380 1.0240 12 - 7872.5000 0.94400 0.03125 0.8030 1.0530 16 - 7873.5000 0.89700 0.03912 0.7220 1.0250 15 - 7874.5000 0.89700 0.02700 0.7750 0.9910 16 - 7875.5000 0.88700 0.03453 0.7230 0.9720 13 - 7876.5000 0.86800 0.04113 0.6990 1.0480 18 - 7877.5000 1.01100 0.02806 0.8740 1.0840 14 - 7878.5000 0.78300 0.03705 0.7440 1.0310 15 - 7879.5000 0.91300 0.04078 0.7150 1.0610 18 - 7880.5000 0.80000 0.03829 0.6670 0.9210 11 - 7881.5000 0.94600 0.04107 0.7240 1.0820 19 - 7882.5000 0.90800 0.04648 0.7440 1.1040 15 - 7883.5000 0.81300 0.03595 0.6670 0.9360 14 - 7884.5000 0.87700 0.04290 0.7640 1.0850 14 - 7885.5000 0.78300 0.03757 0.6100 0.9010 15 - 7886.5000 1.02600 0.02699 0.9080 1.1100 14 - 7887.5000 0.84900 0.04225 0.6810 1.0190 16 - 7888.5000 0.94300 0.03473 0.8330 1.1020 15 - 7889.5000 0.80900 0.01313 0.7630 0.8540 12 - 7890.5000 0.89100 0.03739 0.7630 1.0890 19 - 7891.5000 0.92400 0.05788 0.7060 1.1070 12 - 7892.5000 0.88400 0.01868 0.7670 0.9210 17 - 7893.5000 0.91100 0.05769 0.7280 1.1440 13 - 7894.5000 0.82900 0.04002 0.6960 1.0060 15 - 7895.5000 0.85500 0.02593 0.7970 0.9840 13 - 7896.5000 0.80500 0.03512 0.6750 0.9730 18 - 7897.5000 0.87900 0.02399 0.7990 0.9720 13 - 7898.5000 0.84800 0.03227 0.7030 0.9530 15 - 7899.5000 0.92500 0.05736 0.7060 1.1790 17 - 7900.5000 0.93000 0.03868 0.7610 1.0290 12 - 7901.5000 0.85700 0.05360 0.7150 1.1570 17 - 7902.5000 0.90900 0.04299 0.7170 1.0500 15 - 7903.5000 0.92000 0.05051 0.7890 1.1670 14 - 7904.5000 0.85200 0.04904 0.7200 1.0870 14 - 7905.5000 0.77000 0.05487 0.6980 1.1230 15 - 7906.5000 0.94300 0.05131 0.7360 1.1200 14 - 7907.5000 0.77500 0.02725 0.6700 0.8880 16 - 7908.5000 1.06200 0.04276 0.8570 1.1770 14 - 7909.5000 0.77000 0.03827 0.6770 0.9530 13 - 7910.5000 0.97900 0.03335 0.7790 1.0620 18 - 7911.5000 0.87300 0.05774 0.6970 1.0970 12 - 7912.5000 0.83600 0.04075 0.7360 1.0620 16 - 7913.5000 0.79500 0.03023 0.7450 0.9630 13 - 7914.5000 0.90500 0.04410 0.7320 1.0620 14 - 7915.5000 0.78600 0.03675 0.6970 0.9620 13 - 7916.5000 0.86200 0.04187 0.6840 1.0190 16 - 7917.5000 1.06200 0.03911 0.8590 1.1410 13 - 7918.5000 0.80800 0.03124 0.7240 0.9660 15 - 7919.5000 0.90500 0.03245 0.8740 1.1080 13 - 7920.5000 0.76100 0.05955 0.6450 1.0400 11 - 7921.5000 0.91600 0.03461 0.7920 1.0510 14 - 7922.5000 0.90300 0.04958 0.7620 1.1330 14 - 7923.5000 0.96600 0.05268 0.7450 1.1100 12 - 7924.5000 0.91400 0.04009 0.7380 1.0380 14 - 7925.5000 0.85500 0.05376 0.6590 0.9990 10 - 7926.5000 0.90700 0.04664 0.7340 1.0830 14 - 7927.5000 0.81800 0.04493 0.6840 1.0080 13 - 7928.5000 0.85800 0.04673 0.7520 1.0620 11 - 7929.5000 0.80200 0.04477 0.7150 1.0500 14 - 7930.5000 0.87500 0.04650 0.7690 1.1170 14 - 7931.5000 0.79400 0.04171 0.6550 0.9440 12 - 7932.5000 0.85600 0.04223 0.6740 0.9900 14 - 7933.5000 0.83200 0.02233 0.7430 0.9160 15 - 7934.5000 0.87900 0.04981 0.6960 1.0110 10 - 7935.5000 0.89400 0.04584 0.6460 0.9890 14 - 7936.5000 0.73700 0.03829 0.7090 0.9630 11 - 7937.5000 0.95900 0.03314 0.8090 1.0570 14 - 7938.5000 0.83000 0.03328 0.7190 0.9590 13 - 7939.5000 1.01900 0.02316 0.9050 1.0720 13 - 7940.5000 0.80600 0.04980 0.6560 1.0010 12 - 7941.5000 0.92800 0.05788 0.7660 1.2290 16 - 7942.5000 0.85300 0.06019 0.5920 1.0090 12 - 7943.5000 0.86400 0.04171 0.7690 1.0580 12 - 7944.5000 0.83500 0.04325 0.6340 0.9690 15 - 7945.5000 0.81800 0.02910 0.7530 0.9460 11 - 7946.5000 0.89800 0.04396 0.6490 0.9780 14 - 7947.5000 0.87700 0.04345 0.7100 1.0110 12 - 7948.5000 0.93000 0.05706 0.6200 1.0470 14 - 7949.5000 0.70700 0.02163 0.6720 0.8280 13 - 7950.5000 0.89500 0.04757 0.7340 1.0770 13 - 7951.5000 0.77800 0.02396 0.6890 0.8550 12 - 7952.5000 0.93800 0.03775 0.7300 1.0320 16 - 7953.5000 0.89500 0.06235 0.7370 1.1690 12 - 7954.5000 0.88100 0.03897 0.7280 0.9980 12 - 7955.5000 0.85100 0.03047 0.7020 0.9380 15 - 7956.5000 0.89700 0.05050 0.7100 1.0450 11 - 7957.5000 0.87300 0.02806 0.7030 0.9130 14 - 7958.5000 0.84800 0.04489 0.7120 1.0230 12 - 7959.5000 1.03000 0.02913 0.8580 1.0760 14 - 7960.5000 0.74100 0.04493 0.5900 0.9140 13 - 7961.5000 0.94500 0.02801 0.8110 1.0130 13 - 7962.5000 0.77600 0.03190 0.6950 0.9160 12 - 7963.5000 0.91400 0.04562 0.6930 1.0580 16 - 7964.5000 0.82600 0.05254 0.7410 1.1050 12 - 7965.5000 0.90100 0.03753 0.7560 1.0160 12 - 7966.5000 0.90900 0.03537 0.7140 0.9880 15 - 7967.5000 0.78300 0.03814 0.7230 0.9760 11 - 7968.5000 0.79400 0.04931 0.6020 0.9710 14 - 7969.5000 0.79500 0.02834 0.7310 0.9190 11 - 7970.5000 0.93900 0.03220 0.8220 1.0630 14 - 7971.5000 0.78000 0.03495 0.6430 0.8950 13 - 7972.5000 0.96700 0.02316 0.8940 1.0610 13 - 7973.5000 0.82500 0.03955 0.7350 1.0090 12 - 7974.5000 0.88100 0.03989 0.7150 1.0240 15 - 7975.5000 0.85200 0.03565 0.7780 1.0250 12 - 7976.5000 0.85300 0.04763 0.7130 1.0430 12 - 7977.5000 0.90300 0.02311 0.8160 0.9950 15 - 7978.5000 0.85200 0.02261 0.7620 0.9050 10 - 7979.5000 0.94300 0.04183 0.7160 1.0290 14 - 7980.5000 0.80200 0.03498 0.6770 0.9090 11 - 7981.5000 0.96800 0.02302 0.8700 1.0360 13 - 7982.5000 0.81200 0.01941 0.7270 0.8670 13 - 7983.5000 0.97100 0.03666 0.9000 1.1540 12 - 7984.5000 0.84300 0.05138 0.6410 0.9970 12 - 7985.5000 0.88000 0.03292 0.7680 1.0230 15 - 7986.5000 0.75200 0.05155 0.6720 0.9980 10 - 7987.5000 0.85600 0.03580 0.7380 0.9860 12 - 7988.5000 0.83200 0.04196 0.6920 1.0060 14 - 7989.5000 0.85800 0.00885 0.8130 0.8690 10 - 7990.5000 0.91000 0.03522 0.7000 0.9540 13 - 7991.5000 0.74900 0.03392 0.7210 0.9560 12 - 7992.5000 0.92100 0.03384 0.8960 1.1400 13 - 7993.5000 0.70700 0.02718 0.6250 0.8210 13 - 7994.5000 0.93900 0.04933 0.8450 1.1570 10 - 7995.5000 0.77400 0.04584 0.6930 1.0360 14 - 7996.5000 0.92300 0.02233 0.8220 0.9830 13 - 7997.5000 0.83900 0.04779 0.6870 1.0040 11 - 7998.5000 0.89000 0.03301 0.7190 0.9660 14 - 7999.5000 0.94100 0.03522 0.7370 0.9910 13 - 8000.5000 0.70100 0.04949 0.5040 0.8170 10 - 8001.5000 0.95300 0.05138 0.7610 1.1170 12 - 8002.5000 0.68900 0.06814 0.5350 0.9870 11 - 8003.5000 0.93900 0.06004 0.8500 1.2660 12 - 8004.5000 0.81600 0.03421 0.6940 0.9500 14 - 8005.5000 0.91400 0.03045 0.8840 1.0860 11 - 8006.5000 0.72400 0.04341 0.6950 1.0080 13 - 8007.5000 0.90700 0.02973 0.7710 0.9770 12 - 8008.5000 0.87800 0.04547 0.6410 0.9560 12 - 8009.5000 0.90000 0.02177 0.7940 0.9510 13 - 8010.5000 0.81500 0.05110 0.7280 1.0820 12 - 8011.5000 0.85500 0.05615 0.6190 1.0080 12 - 8012.5000 0.91700 0.03926 0.7240 0.9960 12 - 8013.5000 0.79900 0.05156 0.6050 0.9470 11 - 8014.5000 0.92900 0.05464 0.7480 1.1420 13 - 8015.5000 0.85900 0.02237 0.7460 0.9010 12 - 8016.5000 0.96100 0.03453 0.8070 1.0560 13 - 8017.5000 0.76700 0.04978 0.5590 0.9180 13 - 8018.5000 0.98000 0.02901 0.8620 1.0630 12 - 8019.5000 0.76400 0.03767 0.6750 0.9360 12 - 8020.5000 0.92200 0.03037 0.8320 1.0510 13 - 8021.5000 0.82100 0.03594 0.7210 0.9700 12 - 8022.5000 0.92600 0.02926 0.7640 0.9750 13 - 8023.5000 0.88200 0.04223 0.6700 0.9860 14 - 8024.5000 0.86800 0.02925 0.7910 0.9760 10 - 8025.5000 0.93800 0.03425 0.7370 0.9840 13 - 8026.5000 0.77100 0.05012 0.7240 1.0410 10 - 8027.5000 0.91600 0.03829 0.7840 1.0380 11 - 8028.5000 0.80600 0.03341 0.7060 0.9560 14 - 8029.5000 0.96500 0.01550 0.8880 0.9810 9 - 8030.5000 0.76200 0.05456 0.7130 1.0910 12 - 8031.5000 0.94800 0.02714 0.8000 0.9800 11 - 8032.5000 0.73600 0.02283 0.7030 0.8400 9 - 8033.5000 0.90200 0.02045 0.8330 0.9860 14 - 8034.5000 0.82500 0.04064 0.6810 0.9380 10 - 8035.5000 0.90000 0.03181 0.7460 0.9570 11 - 8036.5000 0.85800 0.03709 0.7480 1.0050 12 - 8037.5000 0.87700 0.04838 0.7130 1.0190 10 - 8038.5000 0.96200 0.06048 0.7320 1.1510 12 - 8039.5000 0.77800 0.06422 0.6410 1.0670 11 - 8040.5000 1.03000 0.05543 0.8410 1.2250 12 - 8041.5000 0.83500 0.05488 0.7200 1.0840 11 - 8042.5000 0.95500 0.02650 0.8510 1.0100 9 - 8043.5000 0.75300 0.05340 0.7210 1.0910 12 - 8044.5000 0.98100 0.03291 0.8450 1.0730 12 - 8045.5000 0.73700 0.06483 0.6900 1.0790 9 - 8046.5000 0.89500 0.03167 0.8190 1.0560 14 - 8047.5000 0.75700 0.06678 0.6620 1.1050 11 - 8048.5000 0.86900 0.03305 0.7280 0.9370 10 - 8049.5000 0.79200 0.05729 0.5810 0.9610 11 - 8050.5000 0.90100 0.03795 0.7820 1.0220 10 - 8051.5000 0.74500 0.03811 0.6760 0.9400 12 - 8052.5000 0.87500 0.04689 0.7390 1.0500 11 - 8053.5000 0.89200 0.04677 0.8000 1.1240 12 - 8054.5000 0.74600 0.04907 0.6290 0.9690 12 - 8055.5000 0.96500 0.01866 0.8990 1.0170 10 - 8056.5000 0.76200 0.03969 0.6570 0.9080 10 - 8057.5000 0.92300 0.01789 0.8310 0.9600 13 - 8058.5000 0.73200 0.02517 0.7210 0.8720 9 - 8059.5000 0.87200 0.03661 0.7140 0.9880 14 - 8060.5000 0.92800 0.03709 0.7600 1.0170 12 - 8061.5000 0.88700 0.05317 0.6810 1.0000 9 - 8062.5000 0.86900 0.06694 0.6460 1.0900 11 - 8063.5000 0.85200 0.04696 0.5900 0.8870 10 - 8064.5000 0.87300 0.07161 0.6120 1.0870 11 - 8065.5000 0.73500 0.04601 0.6710 0.9620 10 - 8066.5000 0.97500 0.04373 0.8510 1.1540 12 - 8067.5000 0.80000 0.05470 0.7350 1.1140 12 - 8068.5000 0.95200 0.04327 0.8630 1.1500 11 - 8069.5000 0.70400 0.02688 0.5850 0.7550 10 - 8070.5000 0.85400 0.03009 0.6620 0.8790 13 - 8071.5000 0.76100 0.03433 0.6470 0.8530 9 - 8072.5000 0.90500 0.02330 0.8410 1.0090 13 - 8073.5000 0.84100 0.02439 0.7350 0.9040 12 - 8074.5000 0.79300 0.01692 0.7330 0.8400 10 - 8075.5000 0.92700 0.04101 0.6730 0.9450 11 - 8076.5000 0.97800 0.05382 0.7490 1.1060 11 - 8077.5000 0.96900 0.04869 0.7380 1.0610 11 - 8078.5000 0.76100 0.04791 0.6790 0.9820 10 - 8079.5000 0.96800 0.02107 0.9200 1.0660 12 - 8080.5000 0.74000 0.03826 0.6190 0.8610 10 - 8081.5000 1.03700 0.05819 0.7610 1.1290 10 - 8082.5000 0.74800 0.05650 0.7090 1.0480 9 - 8083.5000 0.89300 0.06827 0.8320 1.3050 12 - 8084.5000 0.70900 0.08561 0.5880 1.0410 7 - 8085.5000 0.88000 0.03354 0.7610 1.0120 14 - 8086.5000 0.76100 0.02800 0.7280 0.8960 9 - 8087.5000 0.81700 0.07025 0.6360 1.1020 11 - 8088.5000 0.92700 0.04633 0.7310 1.0090 9 - 8089.5000 0.94900 0.05913 0.7370 1.1110 10 - 8090.5000 1.05800 0.05281 0.7450 1.0790 10 - 8091.5000 0.99100 0.05803 0.7050 1.0720 10 - 8092.5000 0.93700 0.05803 0.8510 1.2180 10 - 8093.5000 0.74800 0.02625 0.6860 0.8520 10 - 8094.5000 0.91000 0.04050 0.8610 1.1040 9 - 8095.5000 0.82600 0.03921 0.7620 1.0100 10 - 8096.5000 0.87500 0.04287 0.8010 1.0980 12 - 8097.5000 0.82500 0.07634 0.7320 1.1060 6 - 8098.5000 0.91300 0.02496 0.7970 0.9770 13 - 8099.5000 0.90500 0.05091 0.7240 1.0120 8 - 8100.5000 0.95300 0.00769 0.9240 0.9750 11 - 8101.5000 0.87600 0.06800 0.7210 1.1290 9 - 8102.5000 0.87800 0.03526 0.7260 0.9490 10 - 8103.5000 0.95600 0.05050 0.6730 0.9760 9 - 8104.5000 0.80300 0.02917 0.7510 0.9160 8 - 8105.5000 0.85300 0.05700 0.6600 1.0020 9 - 8106.5000 0.78300 0.03494 0.7000 0.9210 10 - 8107.5000 0.94800 0.06562 0.6820 1.0970 10 - 8108.5000 0.81000 0.04508 0.7400 0.9950 8 - 8109.5000 0.84600 0.03121 0.7470 0.9540 11 - 8110.5000 0.80300 0.06085 0.6980 1.0200 7 - 8111.5000 0.96400 0.01969 0.8910 1.0330 13 - 8112.5000 0.79300 0.04042 0.7520 0.9500 6 - 8113.5000 0.91000 0.04744 0.6340 0.9890 14 - 8114.5000 0.91000 0.07707 0.6990 1.1350 8 - 8115.5000 0.89300 0.05439 0.7330 1.0770 10 - 8116.5000 0.97600 0.05321 0.7510 1.0520 8 - 8117.5000 0.99400 0.04233 0.8830 1.1370 9 - 8118.5000 0.87600 0.04283 0.7320 0.9890 9 - 8119.5000 0.96500 0.05250 0.7470 1.0440 8 - 8120.5000 0.86400 0.05200 0.7880 1.1000 9 - 8121.5000 0.74100 0.03723 0.6800 0.8770 7 - 8122.5000 0.94200 0.03836 0.9070 1.1240 8 - 8123.5000 0.77700 0.07601 0.6870 1.1170 8 - 8124.5000 0.95000 0.11574 0.7690 1.5010 10 - 8125.5000 0.76800 0.02041 0.7080 0.8080 6 - 8126.5000 0.88900 0.04160 0.7400 1.0400 13 - 8127.5000 0.78500 0.14200 0.7500 1.3180 4 - 8128.5000 0.91300 0.01565 0.8940 0.9930 10 - 8129.5000 0.94000 0.09723 0.7710 1.3210 8 - 8130.5000 0.91600 0.03364 0.7760 0.9540 7 - 8131.5000 0.98100 0.07238 0.7970 1.1800 7 - 8132.5000 0.82700 0.01573 0.7550 0.8440 8 - 8133.5000 0.96500 0.02493 0.9150 1.0560 8 - 8134.5000 0.86500 0.07831 0.7210 1.1640 8 - 8135.5000 1.08200 0.06841 0.7890 1.1760 8 - 8136.5000 0.80300 0.07408 0.7150 1.1070 7 - 8137.5000 0.94400 0.07616 0.7270 1.1300 7 - 8138.5000 0.82500 0.04838 0.7090 0.9650 7 - 8139.5000 0.94200 0.06941 0.7190 1.1580 10 - 8140.5000 0.81400 0.05188 0.7590 0.9910 5 - 8141.5000 0.92900 0.04186 0.7660 1.0560 12 - 8142.5000 1.02200 0.07246 0.7670 1.1220 6 - 8143.5000 1.02000 0.03917 0.8980 1.1330 9 - 8144.5000 0.95900 0.09599 0.7300 1.2730 8 - 8145.5000 0.82200 0.06417 0.6970 1.0600 8 - 8146.5000 0.93500 0.05254 0.8980 1.1760 7 - 8147.5000 0.78400 0.04702 0.6120 0.8780 8 - 8148.5000 0.89700 0.05250 0.7330 1.0300 8 - 8149.5000 0.82600 0.06735 0.6980 1.0790 8 - 8150.5000 0.95400 0.06276 0.7700 1.1250 8 - 8151.5000 0.84400 0.04252 0.7290 0.9540 7 - 8152.5000 1.01000 0.09411 0.9340 1.4320 7 - 8153.5000 0.91300 0.05008 0.7390 1.0040 7 - 8154.5000 0.97800 0.02133 0.9250 1.0530 9 - 8155.5000 0.86300 0.05368 0.6300 0.8930 6 - 8156.5000 0.92500 0.06668 0.4980 0.9600 12 - 8157.5000 0.99800 0.07850 0.8040 1.1180 4 - 8158.5000 0.92500 0.03814 0.7660 1.0190 11 - 8159.5000 0.95300 0.07106 0.7110 1.1130 8 - 8160.5000 0.77700 0.08221 0.6000 1.0350 7 - 8161.5000 1.08500 0.09492 0.7070 1.1720 6 - 8162.5000 0.79200 0.02758 0.6740 0.8300 8 - 8163.5000 1.02800 0.04736 0.9050 1.1370 6 - 8164.5000 0.88000 0.04101 0.7140 0.9460 8 - 8165.5000 1.01400 0.05745 0.9240 1.2280 7 - 8166.5000 0.84100 0.06010 0.6130 0.9530 8 - 8167.5000 1.34400 0.12472 0.9410 1.5520 6 - 8168.5000 0.86900 0.05073 0.7600 1.0470 8 - 8169.5000 0.98500 0.08492 0.8650 1.2810 6 - 8170.5000 0.83600 0.03286 0.7850 0.9460 6 - 8171.5000 0.92200 0.06346 0.8630 1.2220 8 - 8172.5000 0.85100 0.02549 0.7650 0.8790 5 - 8173.5000 0.97800 0.03099 0.8650 1.0610 10 - 8174.5000 0.90300 0.08410 0.6910 1.1030 6 - 8175.5000 0.90900 0.02793 0.8080 0.9660 8 - 8176.5000 1.02700 0.11002 0.7130 1.2520 6 - 8177.5000 0.82000 0.06104 0.7100 1.0330 7 - 8178.5000 1.08100 0.12284 0.8690 1.5190 7 - 8179.5000 0.76900 0.05940 0.6210 0.9120 6 - 8180.5000 1.01200 0.04674 0.7870 1.0160 6 - 8181.5000 0.80900 0.01613 0.7640 0.8430 6 - 8182.5000 0.87500 0.06552 0.8240 1.1450 6 - 8183.5000 0.95000 0.09865 0.6900 1.2120 7 - 8184.5000 0.88700 0.01960 0.8250 0.9210 6 - 8185.5000 0.95100 0.05634 0.7480 1.0240 6 - 8186.5000 0.86300 0.02173 0.8020 0.9170 7 - 8187.5000 0.75400 0.07647 0.6940 1.0360 5 - 8188.5000 0.93400 0.03041 0.8050 0.9770 8 - 8189.5000 0.95700 0.03400 0.9400 1.0760 4 - 8190.5000 0.92700 0.03969 0.8170 1.0270 7 - 8191.5000 0.89000 0.02878 0.8170 0.9580 6 - 8192.5000 1.04000 0.04062 0.8480 1.0470 6 - 8193.5000 1.08700 0.09011 0.8580 1.2610 5 - 8194.5000 0.95200 0.01715 0.8770 0.9610 6 - 8195.5000 1.02700 0.07206 0.7640 1.1170 6 - 8196.5000 0.83300 0.02393 0.7370 0.8440 5 - 8197.5000 0.94500 0.06165 0.8450 1.1470 6 - 8198.5000 0.81200 0.02919 0.7700 0.9130 6 - 8199.5000 1.03700 0.05246 0.8550 1.1120 6 - 8200.5000 0.99000 0.02939 0.8510 0.9950 6 - 8201.5000 0.96600 0.03723 0.8860 1.0830 7 - 8202.5000 0.91300 0.09425 0.7240 1.1010 4 - 8203.5000 0.91200 0.07389 0.8950 1.2570 6 - 8204.5000 0.91300 0.06975 0.7960 1.0750 4 - 8205.5000 0.95600 0.10165 0.9130 1.4880 8 - 8206.5000 0.78300 0.08550 0.7790 1.1210 4 - 8207.5000 0.91400 0.05246 0.6870 0.9440 6 - 8208.5000 0.85200 0.07879 0.7280 1.1140 6 - 8209.5000 0.84000 0.03779 0.8280 0.9970 5 - 8210.5000 1.02100 0.09906 0.8440 1.2870 5 - 8211.5000 0.83700 0.02258 0.8190 0.9200 5 - 8212.5000 0.89100 0.06042 0.6950 0.9910 6 - 8213.5000 0.89600 0.20425 0.8310 1.6480 4 - 8214.5000 0.98000 0.03225 0.9110 1.0690 6 - 8215.5000 0.79900 0.03175 0.7240 0.8660 5 - 8216.5000 1.01700 0.05654 0.8660 1.1430 6 - 8217.5000 0.90100 0.05121 0.8170 1.0460 5 - 8218.5000 0.92400 0.03654 0.7620 0.9410 6 - 8219.5000 0.78600 0.12586 0.6980 1.1340 3 - 8220.5000 0.86200 0.06022 0.6870 0.9820 6 - 8221.5000 0.89600 0.13712 0.6990 1.1740 3 - 8222.5000 0.98100 0.08618 0.7800 1.2360 7 - 8223.5000 0.99600 0.08875 0.8180 1.1730 4 - 8224.5000 0.86600 0.03940 0.7200 0.9130 6 - 8225.5000 1.00400 0.09512 0.7100 1.1760 6 - 8226.5000 0.81700 0.01498 0.7550 0.8220 5 - 8227.5000 0.93000 0.07603 0.8160 1.1560 5 - 8228.5000 0.87100 0.03846 0.8390 1.0110 5 - 8229.5000 0.87200 0.08267 0.5990 1.0040 6 - 8230.5000 0.89200 0.07125 0.8640 1.1490 4 - 8231.5000 0.98600 0.06654 0.7220 1.0480 6 - 8232.5000 0.87400 0.02080 0.8460 0.9390 5 - 8233.5000 1.01900 0.03633 0.8640 1.0420 6 - 8234.5000 1.00600 0.04383 0.8960 1.0920 5 - 8235.5000 0.89300 0.03533 0.8050 0.9630 5 - 8236.5000 0.86100 0.06954 0.8200 1.1310 5 - 8237.5000 0.88100 0.04266 0.7490 0.9580 6 - 8238.5000 0.87600 0.11922 0.7290 1.1420 3 - 8239.5000 1.01900 0.03950 0.8950 1.1040 7 - 8240.5000 0.84400 0.10796 0.7180 1.0920 3 - 8241.5000 0.99900 0.03429 0.9110 1.0790 6 - 8242.5000 1.10200 0.10875 0.8640 1.2990 4 - 8243.5000 0.99900 0.02572 0.9510 1.0770 6 - 8244.5000 0.91600 0.07267 0.7650 1.1210 6 - 8245.5000 1.02900 0.05903 0.8490 1.1130 5 - 8246.5000 0.85500 0.06820 0.7830 1.0880 5 - 8247.5000 0.85400 0.13075 0.8410 1.3640 4 - 8248.5000 0.88000 0.06127 0.8770 1.1510 5 - 8249.5000 1.07800 0.29975 0.8140 2.0130 4 - 8250.5000 1.04500 0.08757 0.7270 1.1560 6 - 8251.5000 0.84600 0.00179 0.8430 0.8510 5 - 8252.5000 0.93300 0.03593 0.8150 0.9910 6 - 8253.5000 1.07000 0.05277 0.9090 1.1450 5 - 8254.5000 0.82700 0.02012 0.7930 0.8830 5 - 8255.5000 0.88700 0.06000 0.8080 1.0480 4 - 8256.5000 0.93000 0.05310 0.8150 1.0960 7 - 8257.5000 0.91600 0.09266 0.6880 1.0090 3 - 8258.5000 1.02900 0.04006 0.8260 1.0380 7 - 8259.5000 0.91000 0.11547 0.7120 1.1120 3 - 8260.5000 0.90900 0.06312 0.7840 1.1180 7 - 8261.5000 0.99200 0.04725 0.8970 1.0860 4 - 8262.5000 0.93800 0.05185 0.7580 1.0120 6 - 8263.5000 1.01500 0.03960 0.8550 1.0490 6 - 8264.5000 0.85400 0.00872 0.8470 0.8860 5 - 8265.5000 1.02500 0.04986 0.8680 1.0910 5 - 8266.5000 0.92400 0.01073 0.9160 0.9640 5 - 8267.5000 0.97700 0.06246 0.7550 1.0610 6 - 8268.5000 0.91400 0.09350 0.8550 1.2290 4 - 8269.5000 0.86600 0.05062 0.7650 1.0130 6 - 8270.5000 0.89700 0.02817 0.8770 1.0030 5 - 8271.5000 0.90400 0.03348 0.8370 1.0010 6 - 8272.5000 1.09000 0.03399 0.9520 1.1040 5 - 8273.5000 0.92000 0.03287 0.7860 0.9330 5 - 8274.5000 1.05600 0.03600 0.9310 1.0920 5 - 8275.5000 0.86300 0.07521 0.7620 1.1600 7 - 8276.5000 0.85500 0.12557 0.7020 1.1370 3 - 8277.5000 0.83400 0.06425 0.7100 1.0500 7 - 8278.5000 0.81500 0.14232 0.6930 1.1860 3 - 8279.5000 1.01000 0.07226 0.7780 1.1320 6 - 8280.5000 0.98800 0.07250 0.8490 1.1390 4 - 8281.5000 0.96200 0.16044 0.3550 1.1410 6 - 8282.5000 0.88200 0.04271 0.8190 1.0100 5 - 8283.5000 0.84000 0.00805 0.8310 0.8670 5 - 8284.5000 0.88300 0.04327 0.7920 1.0040 6 - 8285.5000 0.84900 0.01990 0.8350 0.9240 5 - 8286.5000 1.02300 0.04003 0.8900 1.0690 5 - 8287.5000 0.88200 0.01096 0.8570 0.9060 5 - 8288.5000 0.92900 0.04205 0.8220 1.0280 6 - 8289.5000 1.01100 0.14125 0.9970 1.5620 4 - 8290.5000 0.90400 0.04450 0.7670 0.9850 6 - 8291.5000 0.78100 0.01945 0.7640 0.8510 5 - 8292.5000 1.00500 0.06471 0.7020 1.0190 6 - 8293.5000 0.83000 0.04517 0.8050 1.0070 5 - 8294.5000 0.82600 0.02683 0.7820 0.9020 5 - 8295.5000 1.03300 0.06954 0.7570 1.0680 5 - 8296.5000 1.00300 0.04613 0.8120 1.0380 6 - 8297.5000 0.77300 0.09959 0.6910 1.0360 3 - 8298.5000 0.87100 0.04185 0.7980 1.0030 6 - 8299.5000 0.80200 0.10248 0.6920 1.0470 3 - 8300.5000 0.86100 0.02967 0.8300 0.9870 7 - 8301.5000 1.01600 0.06375 0.8060 1.0610 4 - 8302.5000 0.94200 0.09859 0.8930 1.3760 6 - 8303.5000 1.05000 0.05143 0.8800 1.1100 5 - 8304.5000 0.90200 0.03086 0.8350 0.9730 5 - 8305.5000 0.94000 0.05715 0.7410 1.0210 6 - 8306.5000 0.91400 0.02012 0.8540 0.9440 5 - 8307.5000 0.75300 0.07133 0.6920 1.0110 5 - 8308.5000 0.95400 0.03332 0.9480 1.0970 5 - 8309.5000 1.00100 0.01388 0.9490 1.0170 6 - 8310.5000 1.00900 0.07725 0.8940 1.2030 4 - 8311.5000 1.01000 0.07900 0.6730 1.0600 6 - 8312.5000 0.87200 0.04825 0.7870 0.9800 4 - 8313.5000 0.96400 0.04797 0.7830 1.0180 6 - 8314.5000 1.00700 0.05325 0.8590 1.0720 4 - 8315.5000 0.98800 0.02460 0.8830 0.9930 5 - 8316.5000 1.03100 0.04725 0.8510 1.0400 4 - 8317.5000 0.97100 0.01408 0.9510 1.0200 6 - 8318.5000 0.88600 0.05658 0.8650 1.0610 3 - 8319.5000 0.89800 0.03572 0.8100 0.9850 6 - 8320.5000 0.88700 0.14925 0.5320 1.0490 3 - 8321.5000 0.91900 0.02490 0.8090 0.9310 6 - 8322.5000 0.89000 0.10421 0.6870 1.0480 3 - 8323.5000 0.97800 0.03531 0.8070 0.9800 6 - 8324.5000 0.93900 0.03825 0.9310 1.0840 4 - 8325.5000 0.92900 0.02147 0.9190 1.0150 5 - 8326.5000 0.89400 0.04047 0.8690 1.0500 5 - 8327.5000 0.91300 0.01677 0.8530 0.9280 5 - 8328.5000 1.07100 0.05523 0.8710 1.1180 5 - 8329.5000 0.86800 0.03425 0.8340 0.9710 4 - 8330.5000 0.91600 0.01945 0.9010 0.9880 5 - 8331.5000 0.86200 0.00722 0.8600 0.8850 3 - 8332.5000 0.90000 0.07021 0.6550 0.9690 5 - 8333.5000 0.90700 0.03897 0.8570 0.9920 3 - 8334.5000 0.89600 0.07200 0.6720 0.9940 5 - 8335.5000 0.93400 0.11525 0.7760 1.2370 4 - 8336.5000 0.95500 0.04606 0.8540 1.0600 5 - 8337.5000 0.84800 0.07425 0.7760 1.0730 4 - 8338.5000 0.87700 0.03425 0.8650 1.0020 4 - 8339.5000 1.01600 0.11201 0.7060 1.0940 3 - 8340.5000 0.89500 0.01125 0.8830 0.9280 4 - 8341.5000 1.02200 0.08776 0.7700 1.0740 3 - 8342.5000 0.87200 0.00514 0.8600 0.8830 5 - 8343.5000 1.07100 0.15768 0.6250 1.0710 2 - 8344.5000 0.97200 0.02750 0.8970 1.0200 5 - 8345.5000 1.03800 0.12268 0.6910 1.0380 2 - 8346.5000 0.88900 0.04003 0.8330 1.0120 5 - 8347.5000 0.96800 0.10566 0.7080 1.0740 3 - 8348.5000 0.89600 0.02175 0.8200 0.9070 4 - 8349.5000 0.91900 0.12846 0.6640 1.1090 3 - 8350.5000 0.87000 0.04200 0.8310 0.9990 4 - 8351.5000 0.89500 0.04316 0.8380 1.0310 5 - 8352.5000 1.03500 0.08556 0.7930 1.0350 2 - 8353.5000 0.89500 0.01029 0.8880 0.9340 5 - 8354.5000 0.92400 0.01202 0.8900 0.9240 2 - 8355.5000 0.89300 0.02057 0.8200 0.9120 5 - 8356.5000 0.99400 0.02051 0.9360 0.9940 2 - 8357.5000 0.90200 0.05545 0.8300 1.0780 5 - 8358.5000 0.86400 0.01379 0.8250 0.8640 2 - 8359.5000 0.93300 0.01073 0.9010 0.9490 5 - 8360.5000 0.80600 0.04590 0.7560 0.9150 3 - 8361.5000 0.84600 0.02661 0.8270 0.9460 5 - 8362.5000 0.98800 0.22603 0.6270 1.4100 3 - 8363.5000 0.90500 0.04325 0.8080 0.9810 4 - 8364.5000 1.08900 0.26500 0.7150 1.6330 3 - 8365.5000 0.97900 0.01125 0.9570 1.0020 4 - 8366.5000 1.06600 0.17003 0.6830 1.2720 3 - 8367.5000 0.95200 0.01923 0.9190 1.0050 5 - 8368.5000 0.99600 0.10359 0.7030 0.9960 2 - 8369.5000 0.94700 0.05501 0.9270 1.1730 5 - 8370.5000 1.04700 0.10783 0.7420 1.0470 2 - 8371.5000 0.97100 0.05545 0.9700 1.2180 5 - 8372.5000 1.11300 0.14284 0.7090 1.1130 2 - 8373.5000 1.02300 0.33050 0.9920 2.3140 4 - 8374.5000 0.86800 0.11691 0.6580 1.0630 3 - 8375.5000 1.17600 0.40097 0.9780 2.3670 3 - 8376.5000 1.10400 0.21475 0.9470 1.8060 4 - 8377.5000 1.26100 0.13789 0.8710 1.2610 2 - 8378.5000 0.98800 0.05232 0.8990 1.1330 5 - 8379.5000 1.00100 0.00000 1.0010 1.0010 1 - 8380.5000 0.96100 0.02773 0.9190 1.0430 5 - 8381.5000 1.04100 0.00000 1.0410 1.0410 1 - 8382.5000 0.84700 0.06306 0.6620 0.9440 5 - 8383.5000 0.90800 0.00000 0.9080 0.9080 1 - 8384.5000 0.88900 0.01543 0.8730 0.9420 5 - 8385.5000 0.98700 0.00000 0.9870 0.9870 1 - 8386.5000 0.98500 0.02800 0.9000 1.0120 4 - 8387.5000 1.30600 0.20471 0.7270 1.3060 2 - 8388.5000 0.91800 0.02800 0.9160 1.0130 3 - 8389.5000 0.98400 0.17811 0.6660 1.2830 3 - 8390.5000 0.96600 0.03465 0.8680 0.9660 2 - 8391.5000 0.95000 0.10075 0.6500 0.9990 3 - 8392.5000 0.90900 0.01273 0.8730 0.9090 2 - 8393.5000 1.08000 0.13683 0.7000 1.1740 3 - 8394.5000 0.88600 0.04503 0.8790 1.0350 3 - 8395.5000 1.06500 0.13046 0.6960 1.0650 2 - 8396.5000 0.91100 0.06755 0.8950 1.1290 3 - 8397.5000 1.12400 0.17324 0.6340 1.1240 2 - 8398.5000 0.93400 0.11085 0.8210 1.2050 3 - 8399.5000 1.10100 0.11561 0.7740 1.1010 2 - 8400.5000 0.93200 0.03493 0.9000 1.0210 3 - 8401.5000 0.89900 0.09122 0.7110 1.0270 3 - 8402.5000 0.86100 0.00177 0.8560 0.8610 2 - 8403.5000 0.86300 0.10190 0.7060 1.0590 3 - 8404.5000 1.11000 0.06081 0.9380 1.1100 2 - 8405.5000 0.92500 0.05125 0.8870 1.0920 4 - 8406.5000 0.96600 0.00000 0.9660 0.9660 1 - 8407.5000 0.90500 0.03300 0.8600 0.9920 4 - 8408.5000 1.21200 0.00000 1.2120 1.2120 1 - 8409.5000 0.94300 0.04400 0.9400 1.1160 4 - 8410.5000 1.08900 0.00000 1.0890 1.0890 1 - 8411.5000 0.96900 0.04225 0.9070 1.0760 4 - 8412.5000 0.93100 0.00000 0.9310 0.9310 1 - 8413.5000 0.95800 0.05175 0.8040 1.0110 4 - 8414.5000 1.20700 0.00000 1.2070 1.2070 1 - 8415.5000 0.91300 0.03075 0.8980 1.0210 4 - 8416.5000 0.71100 0.00000 0.7110 0.7110 1 - 8417.5000 0.90800 0.03204 0.9070 1.0180 3 - 8418.5000 0.70800 0.00000 0.7080 0.7080 1 - 8419.5000 0.93500 0.02223 0.9180 0.9950 3 - 8420.5000 1.06700 0.10288 0.7760 1.0670 2 - 8421.5000 1.02800 0.05621 0.8690 1.0280 2 - 8422.5000 1.00500 0.08485 0.7650 1.0050 2 - 8423.5000 0.95600 0.01520 0.9130 0.9560 2 - 8424.5000 1.03200 0.11243 0.7140 1.0320 2 - 8425.5000 0.92100 0.00566 0.9050 0.9210 2 - 8426.5000 1.02500 0.10960 0.7150 1.0250 2 - 8427.5000 0.95800 0.00884 0.9330 0.9580 2 - 8428.5000 0.94000 0.06788 0.7480 0.9400 2 - 8429.5000 0.92700 0.02404 0.8590 0.9270 2 - 8430.5000 1.03200 0.09793 0.7550 1.0320 2 - 8431.5000 0.91200 0.02581 0.8390 0.9120 2 - 8432.5000 0.95000 0.07823 0.7480 1.0190 3 - 8433.5000 0.96000 0.00000 0.9600 0.9600 1 - 8434.5000 0.96200 0.06755 0.8120 1.0460 3 - 8435.5000 0.89400 0.00000 0.8940 0.8940 1 - 8436.5000 0.91400 0.07044 0.7740 1.0180 3 - 8437.5000 0.92200 0.00000 0.9220 0.9220 1 - 8438.5000 0.96200 0.03375 0.9040 1.0390 4 - 8439.5000 0.00000 0.00000 0.0000 0.0000 0 - 8440.5000 0.99500 0.04925 0.9250 1.1220 4 - 8441.5000 0.00000 0.00000 0.0000 0.0000 0 - 8442.5000 0.96100 0.02100 0.9400 1.0240 4 - 8443.5000 0.00000 0.00000 0.0000 0.0000 0 - 8444.5000 0.91700 0.01900 0.8720 0.9480 4 - 8445.5000 0.00000 0.00000 0.0000 0.0000 0 - 8446.5000 0.93600 0.01975 0.9100 0.9890 4 - 8447.5000 0.00000 0.00000 0.0000 0.0000 0 - 8448.5000 0.95400 0.00550 0.9330 0.9550 4 - 8449.5000 0.75500 0.00000 0.7550 0.7550 1 - 8450.5000 0.90600 0.02887 0.8900 0.9900 3 - 8451.5000 0.78200 0.00000 0.7820 0.7820 1 - 8452.5000 1.00200 0.03204 0.8940 1.0050 3 - 8453.5000 1.05800 0.09440 0.7910 1.0580 2 - 8454.5000 1.01000 0.05162 0.8640 1.0100 2 - 8455.5000 0.93700 0.06081 0.7650 0.9370 2 - 8456.5000 1.05000 0.07743 0.8310 1.0500 2 - 8457.5000 0.98600 0.07389 0.7770 0.9860 2 - 8458.5000 0.94500 0.01768 0.8950 0.9450 2 - 8459.5000 1.05700 0.09228 0.7960 1.0570 2 - 8460.5000 1.00000 0.02758 0.9220 1.0000 2 - 8461.5000 1.00100 0.06541 0.8160 1.0010 2 - 8462.5000 0.99200 0.02510 0.9210 0.9920 2 - 8463.5000 0.91900 0.05728 0.7570 0.9190 2 - 8464.5000 0.98600 0.03783 0.8790 0.9860 2 - 8465.5000 0.90300 0.06505 0.7190 0.9030 2 - 8466.5000 1.05600 0.05303 0.9060 1.0560 2 - 8467.5000 0.79700 0.16051 0.3430 0.7970 2 - 8468.5000 1.07900 0.04137 0.9620 1.0790 2 - 8469.5000 0.76200 0.27771 0.1090 1.0710 3 - 8470.5000 0.86500 0.00000 0.8650 0.8650 1 - 8471.5000 0.66900 0.28377 0.0640 1.0470 3 - 8472.5000 0.84700 0.00000 0.8470 0.8470 1 - 8473.5000 1.04100 0.10713 0.7380 1.0410 2 - 8474.5000 0.87500 0.00000 0.8750 0.8750 1 - 8475.5000 0.88000 0.07823 0.7560 1.0270 3 - 8476.5000 0.00000 0.00000 0.0000 0.0000 0 - 8477.5000 0.85900 0.07708 0.7330 1.0000 3 - 8478.5000 0.00000 0.00000 0.0000 0.0000 0 - 8479.5000 0.86800 0.06062 0.8140 1.0240 3 - 8480.5000 0.00000 0.00000 0.0000 0.0000 0 - 8481.5000 0.94000 0.09064 0.7930 1.1070 3 - 8482.5000 0.00000 0.00000 0.0000 0.0000 0 - 8483.5000 0.96100 0.08170 0.6960 0.9790 3 - 8484.5000 0.00000 0.00000 0.0000 0.0000 0 - 8485.5000 0.93600 0.07765 0.7480 1.0170 3 - 8486.5000 0.00000 0.00000 0.0000 0.0000 0 - 8487.5000 0.87800 0.06004 0.7550 0.9630 3 - 8488.5000 0.68200 0.00000 0.6820 0.6820 1 - 8489.5000 0.96300 0.05091 0.8190 0.9630 2 - 8490.5000 0.67800 0.00000 0.6780 0.6780 1 - 8491.5000 0.96300 0.04950 0.8230 0.9630 2 - 8492.5000 0.70600 0.00000 0.7060 0.7060 1 - 8493.5000 0.96300 0.02581 0.8900 0.9630 2 - 8494.5000 0.69200 0.00000 0.6920 0.6920 1 - 8495.5000 0.80200 0.00000 0.8020 0.8020 1 - 8496.5000 0.70900 0.00000 0.7090 0.7090 1 - 8497.5000 0.85800 0.00000 0.8580 0.8580 1 - 8498.5000 0.68700 0.00000 0.6870 0.6870 1 - 8499.5000 0.81100 0.00000 0.8110 0.8110 1 - 8500.5000 0.64400 0.00000 0.6440 0.6440 1 - 8501.5000 0.75100 0.00000 0.7510 0.7510 1 - 8502.5000 0.66900 0.00000 0.6690 0.6690 1 - 8503.5000 0.80300 0.00000 0.8030 0.8030 1 - 8504.5000 0.70400 0.00000 0.7040 0.7040 1 - 8505.5000 0.83100 0.00000 0.8310 0.8310 1 - 8506.5000 0.62300 0.00000 0.6230 0.6230 1 - 8507.5000 0.81200 0.00000 0.8120 0.8120 1 - 8508.5000 0.68100 0.00000 0.6810 0.6810 1 - 8509.5000 0.82600 0.00000 0.8260 0.8260 1 - 8510.5000 0.71400 0.00000 0.7140 0.7140 1 - 8511.5000 0.77400 0.00000 0.7740 0.7740 1 - 8512.5000 0.68800 0.00000 0.6880 0.6880 1 - 8513.5000 0.82200 0.00000 0.8220 0.8220 1 - 8514.5000 0.71600 0.00000 0.7160 0.7160 1 - 8515.5000 0.94300 0.00000 0.9430 0.9430 1 - 8516.5000 0.69600 0.00000 0.6960 0.6960 1 - 8517.5000 0.84900 0.00000 0.8490 0.8490 1 - 8518.5000 0.90200 0.06894 0.7070 0.9020 2 - 8519.5000 0.00000 0.00000 0.0000 0.0000 0 - 8520.5000 0.86100 0.05445 0.7070 0.8610 2 - 8521.5000 0.00000 0.00000 0.0000 0.0000 0 - 8522.5000 0.89500 0.05374 0.7430 0.8950 2 - 8523.5000 0.00000 0.00000 0.0000 0.0000 0 - 8524.5000 0.94300 0.05798 0.7790 0.9430 2 - 8525.5000 0.00000 0.00000 0.0000 0.0000 0 - 8526.5000 0.91800 0.06329 0.7390 0.9180 2 - 8527.5000 0.00000 0.00000 0.0000 0.0000 0 - 8528.5000 0.91100 0.07637 0.6950 0.9110 2 - 8529.5000 0.00000 0.00000 0.0000 0.0000 0 - 8530.5000 0.88400 0.06859 0.6900 0.8840 2 - 8531.5000 0.00000 0.00000 0.0000 0.0000 0 - 8532.5000 0.95700 0.08910 0.7050 0.9570 2 - 8533.5000 0.00000 0.00000 0.0000 0.0000 0 - 8534.5000 0.88700 0.07000 0.6890 0.8870 2 - 8535.5000 0.00000 0.00000 0.0000 0.0000 0 - 8536.5000 0.84000 0.07283 0.6340 0.8400 2 - 8537.5000 0.59000 0.00000 0.5900 0.5900 1 - 8538.5000 0.91300 0.00000 0.9130 0.9130 1 - 8539.5000 0.60900 0.00000 0.6090 0.6090 1 - 8540.5000 0.83700 0.00000 0.8370 0.8370 1 - 8541.5000 0.58900 0.00000 0.5890 0.5890 1 - 8542.5000 0.72700 0.00000 0.7270 0.7270 1 - 8543.5000 0.58300 0.00000 0.5830 0.5830 1 - 8544.5000 0.75300 0.00000 0.7530 0.7530 1 - 8545.5000 0.56200 0.00000 0.5620 0.5620 1 - 8546.5000 0.75000 0.00000 0.7500 0.7500 1 - 8547.5000 0.55400 0.00000 0.5540 0.5540 1 - 8548.5000 0.74800 0.00000 0.7480 0.7480 1 - 8549.5000 0.60800 0.00000 0.6080 0.6080 1 - 8550.5000 0.83000 0.00000 0.8300 0.8300 1 - 8551.5000 0.65200 0.00000 0.6520 0.6520 1 - 8552.5000 0.91800 0.00000 0.9180 0.9180 1 - 8553.5000 0.70700 0.00000 0.7070 0.7070 1 - 8554.5000 0.90200 0.00000 0.9020 0.9020 1 - 8555.5000 0.72000 0.00000 0.7200 0.7200 1 - 8556.5000 0.86000 0.00000 0.8600 0.8600 1 - 8557.5000 0.68500 0.00000 0.6850 0.6850 1 - 8558.5000 0.83300 0.00000 0.8330 0.8330 1 - 8559.5000 0.66600 0.00000 0.6660 0.6660 1 - 8560.5000 0.94300 0.00000 0.9430 0.9430 1 - 8561.5000 0.68500 0.00000 0.6850 0.6850 1 - 8562.5000 0.94300 0.00000 0.9430 0.9430 1 - 8563.5000 0.64500 0.00000 0.6450 0.6450 1 - 8564.5000 0.94300 0.00000 0.9430 0.9430 1 - 8565.5000 0.70600 0.00000 0.7060 0.7060 1 - 8566.5000 0.94300 0.00000 0.9430 0.9430 1 - 8567.5000 0.67000 0.00000 0.6700 0.6700 1 - 8568.5000 0.00000 0.00000 0.0000 0.0000 0 - 8569.5000 0.68000 0.00000 0.6800 0.6800 1 - 8570.5000 0.00000 0.00000 0.0000 0.0000 0 - 8571.5000 0.72700 0.00000 0.7270 0.7270 1 - 8572.5000 0.00000 0.00000 0.0000 0.0000 0 - 8573.5000 0.67800 0.00000 0.6780 0.6780 1 - 8574.5000 0.00000 0.00000 0.0000 0.0000 0 - 8575.5000 0.67600 0.00000 0.6760 0.6760 1 - 8576.5000 0.00000 0.00000 0.0000 0.0000 0 - 8577.5000 0.69200 0.00000 0.6920 0.6920 1 - 8578.5000 0.00000 0.00000 0.0000 0.0000 0 - 8579.5000 0.62400 0.00000 0.6240 0.6240 1 - 8580.5000 0.00000 0.00000 0.0000 0.0000 0 - 8581.5000 0.64600 0.00000 0.6460 0.6460 1 - 8582.5000 0.00000 0.00000 0.0000 0.0000 0 - 8583.5000 0.72300 0.00000 0.7230 0.7230 1 - 8584.5000 0.00000 0.00000 0.0000 0.0000 0 - 8585.5000 0.69100 0.00000 0.6910 0.6910 1 - 8586.5000 0.00000 0.00000 0.0000 0.0000 0 - 8587.5000 0.69100 0.00000 0.6910 0.6910 1 - 8588.5000 0.00000 0.00000 0.0000 0.0000 0 - 8589.5000 0.68600 0.00000 0.6860 0.6860 1 - 8590.5000 0.00000 0.00000 0.0000 0.0000 0 - 8591.5000 0.68800 0.00000 0.6880 0.6880 1 - 8592.5000 0.00000 0.00000 0.0000 0.0000 0 - 8593.5000 0.69700 0.00000 0.6970 0.6970 1 - 8594.5000 0.00000 0.00000 0.0000 0.0000 0 - 8595.5000 0.73000 0.00000 0.7300 0.7300 1 - 8596.5000 0.00000 0.00000 0.0000 0.0000 0 - 8597.5000 0.76000 0.00000 0.7600 0.7600 1 - 8598.5000 0.00000 0.00000 0.0000 0.0000 0 - 8599.5000 0.68900 0.00000 0.6890 0.6890 1 - 8600.5000 0.00000 0.00000 0.0000 0.0000 0 - 8601.5000 0.72800 0.00000 0.7280 0.7280 1 - 8602.5000 0.00000 0.00000 0.0000 0.0000 0 - 8603.5000 0.66200 0.00000 0.6620 0.6620 1 - 8604.5000 0.00000 0.00000 0.0000 0.0000 0 - 8605.5000 0.68100 0.00000 0.6810 0.6810 1 - 8606.5000 0.00000 0.00000 0.0000 0.0000 0 - diff --git a/templates/qsolist.27plates b/templates/qsolist.27plates deleted file mode 100644 index a4fc2a0b6..000000000 --- a/templates/qsolist.27plates +++ /dev/null @@ -1,1182 +0,0 @@ -# pl fib ID RA DEC c z1d z1derr zmeas f u_psf g_psf r_psf i_psf z_psf primtarg sectarg -0187 002 QSO 357.649000 -1.001900 4 1.8195 0.0004 1.2910 0 19.370 19.450 19.470 19.260 19.230 0 0 -0187 007 QSO 357.741200 -0.869400 6 3.0199 0.0032 3.0130 0 20.420 18.630 18.300 18.240 18.160 4 0 -0187 008 QSO 357.477500 -1.165200 6 0.7678 0.0009 0.7650 0 17.740 17.560 17.500 17.440 17.270 4 0 -0187 047 QSO 357.370100 -1.152700 7 1.3815 0.0013 1.3850 0 18.670 18.760 18.450 18.380 18.400 4 0 -0187 057 QSO 357.386500 -0.612700 3 0.2792 0.0003 0.2798 0 17.390 17.400 17.280 17.370 16.960 5 0 -0187 070 QSO 357.537000 -0.486800 6 1.1364 0.0009 1.1350 0 18.710 18.740 18.540 18.570 18.650 4 0 -0187 075 QSO 357.795100 0.039200 7 0.1334 0.0029 3.5050 0 22.720 19.170 18.570 18.520 18.320 4 0 -0187 095 QSO 357.006900 -0.688400 4 1.5434 0.0006 1.5500 0 19.070 18.880 18.880 18.720 18.830 4 0 -0187 116 QSO 357.526100 -0.159300 6 1.1863 0.0025 1.1890 0 18.410 18.110 17.860 17.860 18.030 4 0 -0187 122 QSO 356.855400 -1.112100 3 0.1819 0.0002 0.1818 0 18.390 18.330 18.040 17.640 17.590 7172 0 -0187 140 QSO 356.590500 -0.546900 6 1.2057 0.0020 1.2050 0 18.860 19.020 18.740 18.700 18.990 4 0 -0187 150 QSO 356.806700 -0.331500 4 1.1356 0.0003 1.1350 0 19.210 19.290 18.990 19.000 19.160 4 0 -0187 156 QSO 357.067800 -0.185400 7 0.9839 0.0009 0.9830 1 19.870 19.550 19.240 19.260 19.230 0 0 -0187 169 QSO 356.704900 -0.252200 1 0.0334 0.0048 1.9150 0 19.310 19.160 19.160 19.020 18.980 0 0 -0187 175 QSO 356.607000 -0.266800 5 3.5136 0.0003 3.4500 0 21.040 18.620 17.840 17.740 17.600 4 0 -0187 189 QSO 356.531200 -0.485800 6 1.6477 0.0012 1.6500 0 19.360 19.310 19.210 18.940 18.950 4 0 -0187 203 QSO 356.399300 -1.138800 3 0.1917 0.0002 0.1920 0 18.260 18.300 18.140 17.760 17.900 68 0 -0187 219 QSO 356.166800 -0.542100 6 0.5026 0.0006 0.5020 0 17.580 17.390 17.570 17.460 17.360 7700 0 -0187 220 QSO 356.251800 -0.993300 6 0.7904 0.0007 0.7906 0 17.300 17.090 17.150 17.320 17.200 4 0 -0187 226 QSO 356.179000 -0.227600 4 0.3352 0.0000 1.3350 0 17.250 16.910 16.800 16.800 16.890 4 0 -0187 228 QSO 356.137800 -0.189700 7 1.4587 0.0036 1.4500 0 19.510 19.330 19.180 19.000 19.080 4 0 -0187 230 QSO 356.162500 -0.434700 3 0.5656 0.0003 0.5660 0 18.600 18.310 18.420 18.300 18.290 4 0 -0187 251 QSO 356.031700 -0.981300 3 3.1933 0.0003 3.1990 0 22.260 18.980 18.880 18.890 18.800 4 0 -0187 260 QSO 355.900600 -0.665400 6 1.7811 0.0044 1.7900 0 18.910 18.720 18.690 18.480 18.400 4 0 -0187 264 QSO 355.860800 -0.054800 7 0.3424 0.0091 1.3720 0 17.780 17.820 17.700 17.770 17.810 4 0 -0187 271 QSO 356.086600 -0.116900 7 0.8296 0.0023 0.8260 0 20.260 20.220 20.250 20.480 20.230 0 0 -0187 278 QSO 355.951400 0.034200 6 1.8125 0.0021 1.8100 0 19.130 19.080 19.030 18.710 18.740 4 0 -0187 296 QSO 355.767700 -0.564200 3 0.4275 0.0001 0.4280 0 19.180 19.020 19.080 18.920 18.760 7172 0 -0187 297 QSO 355.461700 -0.724800 3 0.2507 0.0002 0.2510 0 19.700 19.430 18.990 18.160 17.490 7172 0 -0187 299 QSO 355.718200 -0.654300 4 1.5123 0.0001 0.4050 0 19.510 19.150 18.930 18.670 18.310 4 0 -0187 389 QSO 356.013000 0.634500 9 9.0000 9.0000 1.2360 0 16.760 16.750 16.780 16.900 16.940 20 0 -0187 416 QSO 356.276400 1.026600 9 9.0000 9.0000 1.7900 2 19.220 19.050 19.010 18.700 18.610 4 0 -0187 421 QSO 356.188200 0.448800 9 9.0000 9.0000 0.5250 0 18.910 18.700 18.830 18.700 18.780 4 0 -0187 424 QSO 356.253800 0.698900 9 9.0000 9.0000 2.1830 0 19.320 19.080 19.060 18.960 18.700 4 0 -0187 451 QSO 356.625600 1.175000 9 9.0000 9.0000 0.5410 0 17.530 17.480 17.710 17.620 17.680 7172 0 -0187 473 QSO 356.602300 0.320600 9 9.0000 9.0000 0.5350 1 19.330 19.420 19.490 19.150 19.290 16 0 -0187 489 QSO 356.878600 0.517000 9 9.0000 9.0000 0.8270 0 18.460 18.430 18.440 18.540 18.370 4 0 -0187 494 QSO 356.672100 0.677900 9 9.0000 9.0000 1.8150 0 18.790 18.790 18.780 18.560 18.550 4 0 -0187 499 QSO 356.722800 0.262300 9 9.0000 9.0000 1.5900 0 18.540 18.430 18.490 18.350 18.400 4 0 -0187 514 QSO 357.126700 0.655100 9 9.0000 9.0000 2.0000 0 17.570 17.510 17.610 17.390 17.250 20 0 -0187 533 QSO 356.839000 1.131900 9 9.0000 9.0000 0.2330 0 19.390 19.370 19.170 19.160 19.120 0 0 -0187 549 QSO 357.360200 0.640600 9 9.0000 9.0000 0.2248 0 19.470 19.380 18.740 18.380 18.200 7172 0 -0187 553 QSO 357.456700 0.593200 9 9.0000 9.0000 1.2410 0 18.270 18.300 18.030 18.060 18.140 7172 0 -0187 570 QSO 357.129100 1.177100 9 9.0000 9.0000 1.6870 0 19.960 19.980 20.000 19.690 19.690 16 0 -0187 574 QSO 357.081600 0.956000 9 9.0000 9.0000 2.1530 0 19.020 18.920 18.880 18.880 18.660 4 0 -0187 578 QSO 357.166900 1.131500 9 9.0000 9.0000 0.7200 0 18.200 17.990 18.100 18.240 18.190 4 0 -0187 596 QSO 357.762500 0.782300 9 9.0000 9.0000 1.1470 0 18.980 18.980 18.790 18.840 19.060 4 0 -0187 619 QSO 357.768300 0.896900 9 9.0000 9.0000 1.3160 0 19.160 19.180 18.960 18.930 19.020 4 0 -0187 632 QSO 357.959700 0.627900 9 9.0000 9.0000 1.9450 0 18.650 18.740 18.760 18.530 18.400 4 512 -0187 634 QSO 357.990000 0.602900 9 9.0000 9.0000 1.3500 0 18.630 18.610 18.450 18.460 18.480 4 0 -0187 639 QSO 357.999000 0.734400 9 9.0000 9.0000 0.6450 1 18.950 18.910 18.830 18.670 18.420 4 0 -0188 011 QSO 359.933900 -0.960600 5 1.7784 0.0004 1.7850 0 19.070 19.080 19.040 18.790 18.700 4 0 -0188 019 QSO 359.910000 -0.580200 7 1.2078 0.0006 1.2100 0 17.830 17.930 17.770 17.750 17.880 4 0 -0188 025 QSO 0.049800 0.040400 3 0.4792 0.0004 0.4800 0 17.620 17.450 17.590 17.600 17.540 7172 0 -0188 028 QSO 0.162500 -0.301100 3 2.1289 0.0003 2.1150 0 19.160 19.110 19.020 18.960 18.800 4 0 -0188 034 QSO 0.068500 -0.309300 3 0.7037 0.0003 0.7060 0 18.820 18.290 18.090 17.980 17.820 4 0 -0188 062 QSO 359.687300 -0.123400 6 1.9908 0.0061 1.9850 0 18.800 18.820 18.670 18.540 18.370 4 0 -0188 074 QSO 359.690300 -0.083200 6 1.6088 0.0016 1.6100 0 18.930 18.840 18.890 18.710 18.690 4 0 -0188 077 QSO 359.987000 0.065200 6 0.4581 0.0023 0.0940 1 23.220 21.510 20.010 19.580 19.260 16 0 -0188 090 QSO 359.260600 -0.806600 4 0.7364 0.0005 2.9970 2 22.170 19.380 19.030 18.780 18.530 16 0 -0188 113 QSO 359.635100 -0.544700 4 1.0174 0.0005 1.0150 0 18.710 18.810 18.650 18.770 18.770 4 0 -0188 116 QSO 359.386600 -0.479300 3 0.5079 0.0002 0.5080 0 19.350 19.110 19.290 18.890 18.720 4 0 -0188 129 QSO 358.971800 -1.218100 6 2.0566 0.0075 2.0550 0 18.900 18.910 18.900 18.810 18.600 4 0 -0188 140 QSO 359.120700 -0.600600 8 2.9783 0.0171 2.9300 2 21.540 19.200 18.880 18.640 18.390 4 0 -0188 144 QSO 359.016700 -0.398300 4 0.7683 0.0001 0.2820 1 19.940 19.560 18.860 18.520 18.240 7700 0 -0188 146 QSO 358.835800 0.129900 4 0.5371 0.0000 1.0620 0 18.170 17.910 17.750 17.760 17.820 20 0 -0188 150 QSO 359.203100 -0.126200 3 0.2816 0.0002 0.2820 0 22.210 21.180 20.100 19.790 19.040 1 0 -0188 165 QSO 358.815800 -0.478300 6 1.9212 0.0032 1.9240 0 18.930 19.020 19.030 18.780 18.740 4 0 -0188 182 QSO 358.602300 -0.188500 7 1.8047 0.0036 1.8100 0 19.490 19.210 19.010 18.770 18.640 4 0 -0188 183 QSO 358.673100 -0.080200 3 0.2787 0.0002 0.2790 0 20.310 19.220 18.400 18.100 17.520 1 0 -0188 190 QSO 358.638800 -0.458600 8 1.8316 0.0000 1.8400 0 20.690 20.350 20.300 20.080 20.330 16 0 -0188 230 QSO 358.538200 -0.330000 3 0.4617 0.0003 0.4620 0 18.260 17.990 17.890 17.660 17.540 20 0 -0188 234 QSO 358.375900 -0.070400 3 1.8898 0.0003 1.8900 0 20.100 20.130 20.310 20.000 19.710 16 0 -0188 253 QSO 358.306800 -0.839800 6 1.9505 0.0023 1.9510 0 19.670 19.570 19.500 19.130 19.010 16 0 -0188 258 QSO 358.486900 -0.870800 6 1.3362 0.0043 1.3400 0 19.710 19.800 19.450 19.470 19.590 16 0 -0188 269 QSO 358.340100 -0.478000 2 0.1901 0.0000 0.7650 0 18.120 17.810 17.790 17.920 17.810 4 0 -0188 275 QSO 358.298000 -0.207200 3 2.0771 0.0003 2.0800 0 19.010 18.980 18.940 18.820 18.630 4 0 -0188 276 QSO 358.223000 -0.480700 2 0.2842 0.0000 1.6200 2 18.680 18.080 18.070 17.890 17.860 4 0 -0188 280 QSO 358.350400 0.066200 2 0.1523 0.0001 0.5610 0 17.270 17.080 17.320 17.220 17.340 4 0 -0188 282 QSO 358.088300 -0.857200 3 0.4387 0.0005 0.4400 0 19.140 19.030 19.030 18.940 18.740 4 0 -0188 290 QSO 357.983900 -1.153700 3 0.1715 0.0001 0.1740 0 15.820 16.090 16.090 15.620 15.790 7680 0 -0188 293 QSO 358.162100 -0.767800 4 1.4310 0.0005 1.4300 0 18.370 18.470 18.290 18.320 18.440 4 0 -0188 301 QSO 358.124700 -0.450700 6 0.8924 0.0008 0.8900 0 18.790 18.720 18.770 18.840 18.810 4 0 -0188 328 QSO 357.977700 1.254500 6 1.5550 0.0016 1.5600 0 18.680 18.630 18.540 18.290 18.260 4 0 -0188 330 QSO 357.937300 1.018100 3 0.2442 0.0003 0.2440 0 19.960 19.690 19.060 18.620 18.310 4 0 -0188 334 QSO 357.945800 0.768400 1 0.5661 0.0001 0.9900 1 19.760 19.770 19.610 19.890 19.850 7168 0 -0188 360 QSO 358.071900 0.651100 8 0.2633 0.0019 1.2390 0 17.940 17.970 17.730 17.770 17.940 4 0 -0188 372 QSO 358.274900 0.773500 7 0.9101 0.0006 0.9110 0 18.720 18.680 18.650 18.770 18.720 4 0 -0188 403 QSO 358.501700 1.023200 3 1.5825 0.0003 1.5800 0 18.960 19.000 19.110 18.860 18.850 4 0 -0188 404 QSO 358.554800 0.916400 3 0.1668 0.0003 0.1670 0 19.640 19.240 18.610 18.170 17.960 68 0 -0188 420 QSO 358.663100 0.964400 2 0.0609 0.0001 0.3900 0 18.900 18.920 18.880 18.700 18.110 5 0 -0188 427 QSO 358.512000 0.325600 4 0.7702 0.0002 0.7700 0 19.020 18.920 18.920 18.940 19.020 4 0 -0188 434 QSO 358.423900 0.300400 3 0.7519 0.0002 0.7530 0 20.780 19.850 19.290 18.950 18.700 16 0 -0188 460 QSO 358.939600 0.823100 3 2.5693 0.0004 0.5570 0 17.940 17.790 17.990 17.930 17.910 4 0 -0188 484 QSO 358.998800 0.447900 8 1.0101 0.0037 1.0180 1 23.190 21.450 19.970 19.380 19.020 16 0 -0188 495 QSO 359.088700 0.485300 7 1.0447 0.0029 1.0490 0 19.700 19.360 18.920 18.890 18.880 4 0 -0188 509 QSO 359.326500 0.730600 4 4.3550 0.0003 4.3620 0 23.700 22.320 19.980 19.810 19.630 1 0 -0188 510 QSO 359.401200 0.515700 3 0.9372 0.0003 0.9370 0 18.380 18.320 18.190 18.220 18.040 4 0 -0188 515 QSO 359.432500 0.408900 6 1.6451 0.0023 1.6400 0 19.220 18.960 18.860 18.630 18.410 4 0 -0188 516 QSO 359.408200 0.541100 8 3.4939 0.0000 0.9520 1 18.850 18.650 18.520 18.640 18.550 20 0 -0188 521 QSO 359.107400 0.772400 3 1.6077 0.0004 1.6100 0 18.970 18.910 18.870 18.750 18.650 4 0 -0188 531 QSO 358.967900 1.000000 8 0.2282 0.0038 1.1920 1 18.280 18.020 17.700 17.660 17.620 4 0 -0188 536 QSO 359.208000 1.092100 3 1.0035 0.0004 1.0030 0 18.080 18.050 17.950 17.970 17.880 4 0 -0188 576 QSO 359.609000 1.172300 7 0.0684 0.0027 0.8950 0 18.890 18.730 18.530 18.610 18.560 4 0 -0188 582 QSO 359.876800 0.626000 5 3.2737 0.0004 0.8640 0 18.640 18.590 18.460 18.510 18.390 7172 0 -0188 585 QSO 359.856100 0.481800 6 2.0299 0.0036 2.0300 0 18.260 18.320 18.210 18.090 17.880 4 0 -0188 608 QSO 359.992500 0.861000 8 0.1455 0.0037 2.0250 0 18.860 18.740 18.510 18.500 18.340 4 0 -0188 635 QSO 359.994700 0.562600 4 1.6898 0.0005 1.6900 0 19.070 19.170 19.310 19.030 18.920 4 0 -0190 007 QSO 3.779200 -0.133600 6 1.7004 0.0007 1.7009 0 18.390 18.400 18.140 17.800 17.700 20 0 -0190 010 QSO 4.010000 -0.206900 6 2.0807 0.0055 2.0927 0 18.180 17.970 17.810 17.580 17.300 4 0 -0190 011 QSO 3.898800 -0.187300 6 1.2951 0.0041 1.2990 0 18.760 18.870 18.730 18.820 18.940 4 0 -0190 039 QSO 3.519200 -1.066100 3 0.9810 0.0002 0.9804 0 18.650 18.430 18.260 18.200 18.190 4 0 -0190 050 QSO 3.612400 -0.051900 6 1.1758 0.0014 1.1766 0 18.990 19.120 18.960 19.010 19.230 4 0 -0190 057 QSO 3.722400 -0.474300 4 1.9228 0.0004 1.9248 0 18.900 18.920 18.920 18.540 18.450 4 0 -0190 058 QSO 3.683400 -0.005100 3 1.5519 0.0004 1.5546 0 17.960 17.810 17.710 17.590 17.570 20 0 -0190 068 QSO 3.270800 -1.097000 6 1.2602 0.0018 1.2615 0 19.400 19.660 19.450 19.400 19.420 16 0 -0190 084 QSO 3.426800 -0.403500 2 0.1552 0.0001 1.6491 0 18.830 18.470 18.070 17.730 17.520 68 0 -0190 086 QSO 3.448400 -0.418600 7 0.2024 0.0038 1.1203 0 18.720 18.750 18.550 18.630 18.790 4 0 -0190 101 QSO 2.787400 -1.187300 3 0.2200 0.0001 0.2203 0 20.260 19.900 19.210 18.650 18.390 4 0 -0190 162 QSO 2.592300 -0.617000 4 3.1389 0.0003 3.1424 0 21.720 18.360 18.100 18.120 18.130 4 0 -0190 163 QSO 2.712300 -0.525900 3 2.0509 0.0004 2.0532 0 18.740 19.010 19.090 18.900 18.700 4 0 -0190 187 QSO 2.577400 -0.969500 6 0.6268 0.0017 0.6264 0 19.500 19.100 19.230 19.060 19.070 4 0 -0190 190 QSO 2.512300 -1.018700 4 0.1840 0.0001 0.5564 0 19.360 18.890 18.780 18.560 18.640 20 0 -0190 213 QSO 2.501200 -0.150500 6 1.4223 0.0057 1.4283 0 19.370 19.320 19.180 19.080 19.220 4 0 -0190 233 QSO 2.268500 -0.725800 6 1.8251 0.0008 1.8303 0 18.380 18.650 18.730 18.410 18.430 4 0 -0190 253 QSO 2.000300 -0.005900 4 0.7592 0.0002 0.7581 0 19.270 19.040 19.030 18.920 18.790 4 0 -0190 260 QSO 1.958600 -0.154100 3 0.7995 0.0004 0.8001 0 18.950 18.830 18.930 19.030 18.910 4 0 -0190 262 QSO 2.055100 -0.964800 3 0.1378 0.0001 0.1391 0 18.690 18.160 17.590 17.090 16.930 5188 0 -0190 283 QSO 1.364700 -0.099000 3 0.6122 0.0002 0.6118 0 19.210 18.990 19.090 18.980 18.870 4 0 -0190 284 QSO 1.454400 -0.576600 7 0.7813 0.0031 1.6244 0 19.010 19.000 19.000 18.790 18.820 4 0 -0190 292 QSO 1.594200 -0.073500 6 1.0382 0.0016 1.0364 0 19.300 19.410 19.140 19.120 19.150 4624 0 -0190 297 QSO 1.175800 0.006500 7 0.9996 0.0038 1.0044 0 19.110 19.010 18.830 18.910 18.980 20 0 -0190 380 QSO 1.969000 0.352800 6 1.2686 0.0019 1.2723 0 18.560 18.550 18.280 18.310 18.360 4 0 -0190 390 QSO 1.960500 0.970900 3 0.3448 0.0001 0.3455 0 20.150 20.230 19.870 19.700 18.870 7169 0 -0190 401 QSO 2.508500 0.706800 7 1.2102 0.0017 1.2052 0 19.510 19.230 18.840 18.800 18.850 4 0 -0190 412 QSO 2.439400 0.227000 3 0.6986 0.0003 0.6986 0 18.610 18.310 18.340 18.340 18.290 4 0 -0190 426 QSO 2.246600 1.230900 3 0.2869 0.0002 0.2868 0 18.950 18.670 18.260 18.160 17.610 68 0 -0190 429 QSO 2.365000 1.182100 6 1.6696 0.0039 1.6763 0 19.070 19.100 19.110 19.000 19.010 4 0 -0190 431 QSO 2.574200 1.080800 6 1.8228 0.0021 1.8310 0 19.330 18.940 18.700 18.270 18.260 4 0 -0190 432 QSO 2.608000 0.913200 3 2.8471 0.0004 2.8521 0 20.950 19.030 18.950 18.810 18.650 4 0 -0190 436 QSO 2.541900 0.857400 3 0.3871 0.0003 0.3881 0 19.120 19.060 18.630 18.420 18.140 4 0 -0190 455 QSO 2.697800 0.316800 3 0.7495 0.0004 0.7499 0 18.820 18.730 18.770 18.770 18.720 7172 0 -0190 474 QSO 3.011600 0.700800 3 0.5480 0.0002 0.5473 0 19.120 18.890 19.060 18.930 18.930 4 0 -0190 481 QSO 3.238400 0.619400 6 0.7631 0.0000 0.7659 0 21.300 21.080 20.420 19.970 19.560 16 0 -0190 488 QSO 3.218600 0.475500 4 1.6139 0.0004 1.6180 0 18.680 18.640 18.550 18.380 18.360 4 0 -0190 493 QSO 3.275600 0.075500 3 2.1637 0.0005 2.1731 0 18.940 18.630 18.530 18.510 18.310 4 0 -0190 508 QSO 2.876700 0.964400 3 1.4929 0.0004 1.4957 0 18.180 17.790 17.450 17.120 16.900 7700 0 -0190 512 QSO 2.740000 1.169900 4 3.0972 0.0003 3.0813 0 21.940 19.130 18.580 18.490 18.460 4 0 -0190 513 QSO 2.627400 1.001700 2 0.0410 0.0001 0.3770 0 18.290 17.850 17.520 17.490 16.900 5 0 -0190 522 QSO 3.506400 0.476200 4 0.0293 0.0001 1.4159 0 19.280 19.200 19.030 19.000 19.100 4 0 -0190 523 QSO 3.619700 0.651300 1 0.3285 0.0001 1.1658 0 19.460 19.570 19.210 19.330 19.350 16 0 -0190 530 QSO 3.443800 0.567500 3 0.2739 0.0003 0.2736 0 18.810 18.720 18.420 18.250 17.830 5188 0 -0190 556 QSO 3.229300 1.151500 3 0.1522 0.0001 0.1548 0 19.730 19.240 18.700 18.220 18.080 4 0 -0190 567 QSO 3.759400 0.203500 7 2.8188 0.0066 2.8430 2 20.540 19.240 19.210 18.890 18.660 4 0 -0190 582 QSO 3.238600 1.257600 3 0.5041 0.0002 0.5031 0 18.430 18.290 18.460 18.310 18.260 7172 0 -0190 586 QSO 3.240700 1.100900 8 0.1674 0.0012 1.0610 0 18.440 18.320 18.130 18.160 18.220 4 0 -0190 591 QSO 3.363800 0.875600 3 0.3623 0.0002 0.3635 0 17.960 17.570 17.370 17.430 16.950 7173 0 -0190 599 QSO 3.364700 1.112900 4 3.0787 0.0002 3.0627 0 20.510 19.110 18.940 18.890 18.940 4 0 -0190 606 QSO 3.835600 0.454600 3 3.6908 0.0004 3.6783 0 21.750 19.210 18.560 18.580 18.590 4 0 -0190 615 QSO 4.074900 0.172500 3 1.5447 0.0003 1.5479 0 19.300 19.200 19.170 18.900 18.970 4 0 -0191 018 QSO 5.664700 -1.128100 9 9.0000 9.0000 1.5549 0 19.640 19.510 19.330 19.060 19.110 4 0 -0191 026 QSO 5.638600 -0.580200 9 9.0000 9.0000 0.5032 0 18.670 18.520 18.770 18.600 18.460 4 0 -0191 060 QSO 5.378700 -1.185900 9 9.0000 9.0000 0.7884 0 18.600 18.620 18.700 18.720 18.590 4 0 -0191 063 QSO 5.554200 -0.809000 9 9.0000 9.0000 0.2130 0 19.770 19.690 19.280 18.950 18.840 4 0 -0191 065 QSO 5.444700 -0.813300 9 9.0000 9.0000 2.4952 0 18.970 18.640 18.580 18.590 18.430 4 0 -0191 079 QSO 5.413700 -0.531800 9 9.0000 9.0000 2.1282 0 19.090 18.730 18.560 18.440 18.170 4 0 -0191 124 QSO 4.912900 -1.171300 9 9.0000 9.0000 1.2701 0 18.920 19.040 18.890 18.940 18.990 4 0 -0191 155 QSO 5.096600 -0.186300 9 9.0000 9.0000 1.6478 0 18.960 18.890 18.960 18.710 18.780 4 0 -0191 157 QSO 5.118100 -0.487500 9 9.0000 9.0000 1.9384 0 19.030 19.000 19.020 18.920 18.800 4 0 -0191 175 QSO 4.844000 -0.154200 9 9.0000 9.0000 1.7009 0 19.010 18.940 18.950 18.730 18.690 4 0 -0191 185 QSO 4.462000 -0.563800 9 9.0000 9.0000 1.0876 0 18.920 18.650 18.440 18.430 18.380 4 0 -0191 209 QSO 4.398700 -1.223600 9 9.0000 9.0000 0.8067 0 19.040 18.910 18.910 19.030 18.820 20 0 -0191 235 QSO 4.411500 -0.521400 9 9.0000 9.0000 0.8547 0 18.260 18.160 18.170 18.300 18.200 4 0 -0191 251 QSO 3.768100 -0.910900 9 9.0000 9.0000 0.6499 0 18.130 17.900 18.070 18.010 18.040 4 0 -0191 309 QSO 3.294300 -0.425600 9 9.0000 9.0000 2.1061 0 21.070 20.760 20.490 20.170 20.220 7168 0 -0191 329 QSO 3.898100 0.898900 9 9.0000 9.0000 1.3622 0 19.190 19.300 18.990 18.930 18.950 4 0 -0191 349 QSO 4.128100 0.543200 9 9.0000 9.0000 2.0858 0 19.260 19.120 19.070 18.970 18.680 4 0 -0191 369 QSO 4.237500 0.925600 9 9.0000 9.0000 1.7528 0 19.060 19.070 19.120 18.810 18.820 4 0 -0191 375 QSO 4.198000 0.662000 9 9.0000 9.0000 1.7071 0 20.130 20.060 20.140 19.900 20.140 16 0 -0191 405 QSO 4.500900 0.767400 9 9.0000 9.0000 1.9194 0 18.790 18.810 18.750 18.560 18.570 4 0 -0191 412 QSO 4.475700 1.189800 9 9.0000 9.0000 1.4606 0 19.300 19.350 19.110 18.900 18.850 4 0 -0191 444 QSO 4.830500 1.031200 9 9.0000 9.0000 2.3116 0 19.070 18.650 18.730 18.620 18.330 4 0 -0191 457 QSO 4.990900 1.198200 9 9.0000 9.0000 1.1349 0 17.860 17.900 17.730 17.770 17.870 4 0 -0191 465 QSO 4.763200 0.116500 9 9.0000 9.0000 0.0725 0 18.760 18.170 17.520 17.160 16.950 4160 0 -0191 484 QSO 4.868900 0.294700 9 9.0000 9.0000 1.8088 0 20.850 20.470 20.280 19.810 19.280 1 0 -0191 493 QSO 4.866200 0.566700 9 9.0000 9.0000 1.6199 0 19.770 19.470 19.320 18.950 18.680 4 0 -0191 494 QSO 4.807300 0.422500 9 9.0000 9.0000 1.5653 0 19.140 18.990 19.020 18.940 19.020 4 0 -0191 495 QSO 4.863200 0.594200 9 9.0000 9.0000 1.2947 0 19.560 19.310 18.990 18.960 19.100 4 0 -0191 548 QSO 5.236700 0.196600 9 9.0000 9.0000 1.1115 0 18.950 18.560 18.170 18.160 18.180 4 0 -0191 549 QSO 5.222100 0.636900 9 9.0000 9.0000 0.1446 0 19.800 19.380 18.850 18.530 18.410 4 0 -0191 564 QSO 5.366200 1.072300 9 9.0000 9.0000 1.8197 2 18.410 18.060 18.170 18.000 17.900 4 0 -0191 569 QSO 5.388600 0.717000 9 9.0000 9.0000 1.2474 0 17.710 17.690 17.480 17.460 17.520 4 0 -0191 573 QSO 5.420900 0.644900 9 9.0000 9.0000 0.3068 0 18.500 18.470 18.100 17.910 17.560 4 0 -0191 574 QSO 5.430400 1.144500 9 9.0000 9.0000 1.9016 0 18.740 18.950 18.950 18.750 18.740 4 0 -0191 586 QSO 5.541500 0.274800 9 9.0000 9.0000 0.5744 0 18.100 17.910 17.990 17.910 17.960 7172 0 -0191 632 QSO 5.708600 -0.000800 9 9.0000 9.0000 0.6329 0 19.200 18.850 18.970 18.820 18.910 4 0 -0191 639 QSO 5.942100 -0.124800 9 9.0000 9.0000 0.5731 1 19.970 20.080 19.760 19.730 19.620 7168 0 -0192 001 QSO 8.159200 -1.009800 3 0.0919 0.0002 0.0920 0 18.720 18.150 17.780 17.390 17.220 5188 0 -0192 005 QSO 8.101400 -0.995500 6 1.2319 0.0017 1.2350 0 18.630 18.690 18.540 18.580 18.740 4 0 -0192 009 QSO 7.890000 -0.828200 6 1.9267 0.0057 1.9300 0 19.010 19.040 18.930 18.680 18.660 4 0 -0192 015 QSO 7.753500 -0.741900 3 0.5424 0.0002 0.5430 0 18.600 18.400 18.600 18.330 18.240 7172 0 -0192 030 QSO 7.582600 -0.434100 4 2.1210 0.0004 2.1100 0 18.730 18.510 18.450 18.390 18.220 4 0 -0192 053 QSO 7.451500 -1.064800 3 0.8276 0.0003 0.8280 0 19.210 18.960 18.870 18.870 18.720 4 0 -0192 064 QSO 7.443900 -0.586300 6 1.1503 0.0013 1.1500 0 19.560 19.160 18.910 18.960 19.080 4 0 -0192 065 QSO 7.449300 -0.383000 3 0.2286 0.0001 0.2290 0 19.710 19.450 18.830 18.420 18.180 5188 0 -0192 074 QSO 7.499600 -0.082700 4 0.2194 0.0001 0.2200 0 19.830 19.470 18.780 18.290 18.030 4 0 -0192 129 QSO 6.902200 -0.985100 3 0.2514 0.0002 0.2520 0 19.870 19.610 19.160 18.950 18.720 4 0 -0192 146 QSO 7.187100 -0.465900 3 0.7268 0.0001 0.7270 0 20.820 20.110 19.820 19.580 19.390 16 0 -0192 152 QSO 7.132100 -0.070300 3 0.2524 0.0001 0.2520 0 18.400 18.190 17.870 17.580 17.360 7700 0 -0192 189 QSO 6.715400 -0.524500 3 1.6517 0.0003 1.6530 0 19.040 18.910 18.870 18.610 18.580 4 0 -0192 199 QSO 6.595700 -0.028400 3 2.9185 0.0002 2.9220 0 23.390 20.380 20.050 19.830 19.590 16 0 -0192 218 QSO 6.537800 -0.630400 3 2.3866 0.0003 2.3900 0 19.350 18.910 18.970 18.980 18.710 4 0 -0192 223 QSO 6.417500 -0.258700 6 1.3518 0.0044 1.3550 0 17.990 18.050 17.880 17.840 17.980 4 0 -0192 247 QSO 6.176600 -1.062800 6 1.0896 0.0018 1.0900 0 19.140 19.070 18.820 18.890 19.040 4 0 -0192 251 QSO 6.290300 -0.675300 3 2.2029 0.0002 2.2050 0 19.870 19.500 19.490 19.380 19.130 16 0 -0192 253 QSO 6.048600 -0.730000 8 0.8204 0.0169 1.7600 1 18.120 18.020 17.910 17.720 17.820 20 0 -0192 320 QSO 5.873300 -0.538800 4 2.3702 0.0002 2.3900 0 19.640 19.180 19.070 19.000 18.720 4 0 -0192 343 QSO 5.926500 0.344900 9 9.0000 9.0000 1.0170 0 19.110 18.980 18.760 18.760 18.880 4 0 -0192 344 QSO 5.899800 0.207800 9 9.0000 9.0000 0.7900 0 19.390 18.990 18.920 18.810 18.720 4 0 -0192 346 QSO 5.775900 0.606100 9 9.0000 9.0000 1.7400 0 18.500 18.550 18.710 18.530 18.540 4 0 -0192 353 QSO 5.796100 0.588200 9 9.0000 9.0000 0.4220 0 19.620 19.470 19.300 18.980 18.680 7172 0 -0192 380 QSO 6.318600 1.191800 9 9.0000 9.0000 0.1790 0 19.180 18.780 18.350 17.960 17.880 4 0 -0192 416 QSO 6.586900 1.255000 9 9.0000 9.0000 0.2730 0 18.840 18.840 18.640 18.520 18.070 4 0 -0192 443 QSO 6.891700 1.206000 9 9.0000 9.0000 0.3060 1 20.270 20.030 19.180 18.780 18.420 4 0 -0192 445 QSO 7.036200 1.167300 9 9.0000 9.0000 1.4850 0 20.430 20.330 20.170 19.890 20.050 16 0 -0192 449 QSO 6.989900 0.867300 9 9.0000 9.0000 0.5520 0 22.210 21.450 20.350 19.830 19.490 16 0 -0192 470 QSO 6.559200 0.070100 9 9.0000 9.0000 0.5190 1 22.300 21.120 19.830 19.380 19.030 16 0 -0192 500 QSO 6.822400 0.623200 9 9.0000 9.0000 1.2300 0 17.510 17.820 17.510 17.500 17.620 20 0 -0192 512 QSO 6.809200 0.201000 9 9.0000 9.0000 0.4540 0 18.390 18.150 18.370 18.300 18.110 7172 0 -0192 513 QSO 6.968300 0.437700 9 9.0000 9.0000 0.2050 0 18.790 18.510 18.190 17.770 17.790 4 0 -0192 526 QSO 7.131900 0.683600 9 9.0000 9.0000 0.3380 0 20.220 20.040 19.500 19.380 18.840 1 0 -0192 537 QSO 7.231300 1.008300 9 9.0000 9.0000 1.4350 0 18.310 18.450 18.310 18.140 18.160 4 0 -0192 550 QSO 7.303800 0.329600 9 9.0000 9.0000 2.7400 0 19.470 18.880 18.750 18.690 18.700 4 0 -0192 555 QSO 7.233100 0.233400 9 9.0000 9.0000 1.6140 0 18.480 18.310 18.300 18.080 18.130 4 0 -0192 563 QSO 7.416800 1.091200 9 9.0000 9.0000 1.3860 0 18.130 17.960 17.780 17.730 17.850 20 0 -0192 581 QSO 7.521000 0.480000 9 9.0000 9.0000 1.4020 0 18.890 19.080 18.790 18.760 18.830 4 0 -0192 596 QSO 7.405600 0.236900 9 9.0000 9.0000 2.5550 0 19.310 18.860 18.870 18.870 18.660 4 0 -0192 602 QSO 7.638600 0.918400 9 9.0000 9.0000 1.4590 0 19.450 19.450 19.380 19.210 19.210 16 0 -0192 610 QSO 7.964400 1.091100 9 9.0000 9.0000 0.5390 0 18.820 18.540 18.690 18.490 18.470 4 0 -0192 613 QSO 7.755600 0.725100 9 9.0000 9.0000 0.9600 0 18.700 18.480 18.220 18.240 18.220 4 0 -0192 633 QSO 7.603900 0.048500 9 9.0000 9.0000 0.2880 0 19.410 19.110 18.810 18.750 18.470 4 0 -0217 007 QSO 2.022500 -0.167200 4 2.9817 0.0003 0.7349 0 18.520 18.310 18.360 18.380 18.240 4 0 -0217 012 QSO 2.124100 -0.117800 7 1.6488 0.0050 1.6472 0 19.010 18.980 19.050 18.910 18.920 4 0 -0217 021 QSO 1.824300 -0.860500 4 1.7318 0.0002 0.5245 0 20.120 19.840 19.960 19.530 19.200 7168 0 -0217 048 QSO 1.932500 -0.409000 6 1.5348 0.0043 1.5325 0 18.340 18.170 18.150 18.020 18.100 4 0 -0217 049 QSO 1.725400 -0.259300 4 1.7199 0.0007 1.7197 0 17.980 18.000 17.960 17.710 17.640 4 0 -0217 054 QSO 1.952300 -0.064000 4 1.2358 0.0004 1.2368 0 18.700 18.720 18.500 18.540 18.670 4 0 -0217 066 QSO 1.509000 -0.899500 7 0.0954 0.0056 1.8614 0 19.040 19.160 19.180 18.830 18.860 4 0 -0217 078 QSO 1.533500 -1.116900 6 0.9505 0.0037 0.9489 0 18.660 18.520 18.400 18.460 18.600 7700 0 -0217 097 QSO 1.634600 0.118700 6 0.9185 0.0008 0.9177 0 20.220 19.890 19.620 19.740 19.730 7168 0 -0217 118 QSO 1.149000 -1.221900 3 0.5066 0.0003 0.5072 0 18.970 18.800 18.960 18.760 18.660 4 0 -0217 143 QSO 1.087600 -0.567500 7 0.3743 0.0064 1.4597 0 18.810 18.820 18.760 18.590 18.710 4 0 -0217 192 QSO 1.022400 -0.802800 7 1.0556 0.0000 1.0642 0 20.750 20.720 20.300 19.970 19.660 16 0 -0217 202 QSO 0.651000 -0.456900 3 0.2912 0.0001 0.2913 0 19.470 19.430 18.850 18.790 18.100 4 0 -0217 210 QSO 0.536800 -0.295200 3 0.6531 0.0003 0.6534 0 18.930 18.670 18.650 18.530 18.600 4 0 -0217 216 QSO 0.593700 -0.078800 4 0.7659 0.0000 0.8105 0 18.580 18.210 18.110 18.090 17.830 0 0 -0217 243 QSO 0.479500 -0.358800 6 0.2931 0.0000 0.2929 0 20.070 19.940 19.250 19.250 18.660 1 0 -0217 272 QSO 0.242600 -0.779600 6 1.8905 0.0012 1.8889 0 18.300 18.570 18.650 18.340 18.320 4 0 -0217 280 QSO 0.288000 -0.689400 3 0.4167 0.0002 0.4169 0 18.730 18.660 18.580 18.490 18.250 4 0 -0217 283 QSO 0.221200 -0.620200 7 1.3155 0.0104 1.3117 0 18.410 18.430 18.360 18.390 18.580 4 0 -0217 284 QSO 359.747800 -0.407300 6 1.7545 0.0017 1.7544 2 18.390 18.290 18.260 17.970 17.890 4 0 -0217 294 QSO 0.296700 -0.336500 3 0.5170 0.0002 0.5175 0 19.420 18.930 18.870 18.520 18.460 20 0 -0217 320 QSO 359.939600 -0.972100 6 1.8143 0.0030 1.8182 0 18.380 18.460 18.450 18.200 18.160 4 0 -0217 328 QSO 359.665100 0.485200 6 0.5178 0.0000 0.5158 0 20.020 19.730 19.650 19.290 19.020 16 0 -0217 331 QSO 359.572500 0.716400 5 0.4338 0.0001 1.0632 0 19.310 19.200 18.950 19.110 19.000 0 0 -0217 338 QSO 0.244900 0.586300 4 1.6545 0.0004 1.6485 0 20.120 19.870 19.460 18.970 18.900 4 0 -0217 360 QSO 0.178800 0.927600 6 0.9536 0.0006 0.9538 0 18.090 18.100 17.900 17.870 17.760 4 0 -0217 361 QSO 0.422600 0.399000 7 0.6782 0.0044 0.9359 0 19.200 19.070 18.890 18.970 18.950 4 0 -0217 370 QSO 0.476100 0.125700 3 0.1396 0.0001 0.1397 0 19.690 19.190 18.740 18.290 18.300 4 0 -0217 397 QSO 0.229000 1.028700 8 4.6618 0.0175 1.4597 0 19.920 19.800 19.450 19.230 19.300 16 0 -0217 412 QSO 0.588000 0.363700 8 2.1640 0.0133 3.1002 0 19.880 18.820 18.610 18.580 18.640 16 0 -0217 434 QSO 0.628000 0.833100 4 0.4504 0.0000 1.3506 0 18.820 18.510 18.120 17.990 17.940 4 0 -0217 455 QSO 0.875800 0.137000 3 2.5801 0.0002 2.5791 0 19.790 19.070 18.960 18.940 18.750 8192 0 -0217 494 QSO 1.190500 0.379200 3 0.4963 0.0003 0.4974 0 19.300 18.950 19.100 18.870 18.650 4 0 -0217 499 QSO 1.379500 0.164100 4 3.4551 0.0003 0.9424 0 19.270 18.880 18.650 18.610 18.400 4 0 -0217 531 QSO 1.488500 0.477100 3 0.2592 0.0002 0.2594 0 18.180 18.250 18.170 18.090 17.740 4 0 -0217 535 QSO 1.676200 0.238700 3 0.1879 0.0002 0.1884 0 19.330 18.990 18.570 18.130 17.970 4 0 -0217 562 QSO 1.854900 0.612500 2 0.8163 0.0000 2.0281 0 19.210 19.160 18.990 18.980 18.710 4 0 -0217 567 QSO 1.791400 0.315100 4 1.4353 0.0005 1.4345 0 18.550 18.430 18.310 18.190 18.260 4 0 -0217 576 QSO 1.755500 0.378400 7 0.8886 0.0000 0.8893 0 17.380 17.260 17.150 17.190 17.090 0 0 -0217 587 QSO 1.562600 1.191600 3 0.1118 0.0001 0.1143 0 19.730 18.840 18.200 17.760 17.560 64 0 -0217 609 QSO 2.144700 0.532300 3 0.2649 0.0001 0.2639 0 17.550 17.580 17.470 17.500 17.290 7172 0 -0217 614 QSO 2.031400 0.272000 6 1.4721 0.0020 1.4726 0 18.950 18.930 18.750 18.590 18.660 4 0 -0217 615 QSO 2.186300 0.430700 6 2.1223 0.0030 2.1169 1 19.530 19.300 19.170 19.160 19.040 0 0 -0217 638 QSO 1.791700 0.891400 2 0.0022 0.0001 0.3169 0 16.920 16.760 16.590 16.710 16.060 7701 0 -0266 003 QSO 146.902290 -0.984913 2 0.65190 0.00150 0.6555 0 -0266 009 QSO 146.938610 -0.687012 2 2.81490 0.00520 2.8415 0 -0266 042 QSO 146.274720 -0.779147 3 2.29520 0.00210 2.2894 0 -0266 043 QSO 146.565610 -1.084742 2 0.09740 0.00000 0.0976 0 -0266 050 QSO 146.386170 -1.000930 2 0.00960 0.00310 3.0231 0 -0266 052 QSO 146.438000 -0.656010 2 1.47090 0.00320 1.4758 0 -0266 074 QSO 146.763830 0.041421 0 0.00040 0.00000 1.7766 0 -0266 088 QSO 146.226010 -0.725099 3 2.28720 0.00180 2.2943 0 -0266 123 QSO 145.898380 -0.722806 3 1.98130 0.00020 0.2716 0 -0266 124 QSO 145.920050 -0.783539 3 0.51760 0.00030 0.5179 0 -0266 131 QSO 145.909240 -1.005369 3 2.37470 0.00560 2.3647 0 -0266 133 QSO 145.939860 -0.790114 2 0.36950 0.00100 0.3670 0 -0266 165 QSO 146.291800 -0.259474 3 0.32570 0.00010 0.3257 0 -0266 184 QSO 145.945910 -0.112617 2 2.17690 0.01050 2.1809 0 -0266 190 QSO 145.925300 0.048792 3 0.28870 0.00010 0.2886 0 -0266 216 QSO 145.740930 -0.784787 2 0.35140 0.00000 1.3646 1 -0266 222 QSO 145.762250 -0.219649 3 0.43720 0.00040 1.5760 0 -0266 232 QSO 145.744140 -0.043567 3 1.61960 0.00020 1.6219 0 -0266 254 QSO 145.465190 -1.064475 3 0.33970 0.00020 0.3398 0 -0266 267 QSO 145.496120 -0.264574 3 2.52770 0.00810 2.5553 0 -0266 281 QSO 145.199270 -1.232732 2 1.01730 0.00170 1.8651 0 -0266 293 QSO 145.245640 -0.640774 0 0.01800 0.00000 1.1635 0 -0266 304 QSO 145.199330 -0.286225 3 0.65170 0.00010 0.6516 0 -0266 321 QSO 145.338870 1.196601 2 0.28860 0.00110 0.4447 0 -0266 325 QSO 145.213890 1.151702 2 0.39180 0.00010 1.9547 0 -0266 330 QSO 145.391040 1.171197 3 1.04390 0.00030 1.0425 0 -0266 352 QSO 145.338600 0.140315 3 1.48000 0.00020 1.4778 0 -0266 360 QSO 145.387040 0.125285 2 0.48880 0.00050 0.4883 0 -0266 372 QSO 145.673670 0.947804 3 0.69480 0.00010 0.6944 0 -0266 385 QSO 145.593840 0.278260 3 1.40530 0.00020 1.4047 0 -0266 388 QSO 145.465360 0.334026 2 1.59910 0.01520 1.6030 0 -0266 417 QSO 146.059060 1.048511 3 0.69360 0.00010 0.6919 0 -0266 459 QSO 146.130060 0.950040 0 0.02940 0.00190 0.5471 0 -0266 495 QSO 146.065760 0.183659 1 -0.02900 0.00000 0.1268 0 -0266 502 QSO 146.397940 0.145165 2 1.89600 0.00260 1.9094 0 -0266 518 QSO 146.508790 0.588518 3 0.64970 0.00010 0.6491 0 -0266 536 QSO 146.584260 1.081123 0 0.00450 0.00010 0.00000 1 -0266 541 QSO 146.814010 0.118929 3 0.36600 0.00010 0.3654 0 -0266 565 QSO 146.634200 1.157262 2 0.29750 0.00070 0.2979 0 -0266 579 QSO 146.644960 0.937431 3 0.65240 0.00040 2.0005 0 -0266 608 QSO 147.095690 0.931780 2 3.87780 0.00970 3.8676 0 -0266 620 QSO 146.826590 1.009940 2 2.18100 0.01300 0.8616 0 -0266 635 QSO 147.238860 0.373756 2 0.58510 0.00020 0.5862 0 -0267 051 QSO 148.428860 -0.863258 0 0 0 1.3044 0 19.178 19.191 18.837 18.780 18.782 4 0 QSO_SKIRT -0267 053 QSO 148.414380 -0.720759 0 0 0 1.3871 0 20.044 19.893 19.419 19.314 19.305 4 0 QSO_SKIRT, ALS, bad -0267 078 QSO 149.108060 -0.064752 0 0 0 0.5123 0 18.967 18.665 18.807 18.528 18.419 1055748 0 QSO_SKIRT ROSAT_B ROSAT_C ROSAT_D SERENDIP_BLUE -0267 084 QSO 148.357080 -1.061524 0 0 0 0.0861 0 20.412 18.693 17.730 17.151 16.909 4192 0 GALAXY_RED GALAXY_GALAXY ROSAT_D, Seyf -0267 151 QSO 148.569750 0.135920 0 0 0 0.8849 0 20.078 19.719 19.284 19.385 19.319 1048580 0 QSO_SKIRT SERENDIP_BLUE -0267 168 QSO 148.189880 0.004309 0 0 0 1.0618 0 20.014 19.931 19.483 19.299 19.435 1048580 0 QSO_SKIRT SERENDIP_BLUE -0267 169 QSO 148.348610 -0.634101 0 0 0 1.3857 0 19.167 19.011 18.772 18.664 18.797 1048580 0 QSO_SKIRT SERENDIP_BLUE, ALS -0267 191 QSO 147.771770 0.013688 0 0 0 0.8761 0 19.552 19.309 19.007 19.044 18.908 1048580 0 QSO_SKIRT SERENDIP_BLUE -0267 207 QSO 147.750590 -1.019886 0 0 0 1.1509 0 19.494 19.294 18.995 18.884 18.942 1048580 0 QSO_SKIRT SERENDIP_BLUE -0267 224 QSO 147.702020 -0.004921 0 0 0 1.8769 2 22.107 21.042 20.326 19.707 19.511 1 0 QSO_HIZ, BAL -0267 249 QSO 147.313910 -0.989294 0 0 0 0.3560 0 19.214 19.089 19.005 18.957 18.425 4 0 QSO_SKIRT -0267 264 QSO 147.554270 -0.477538 0 0 0 1.8935 0 20.360 19.777 19.643 19.225 19.112 1048580 0 QSO_SKIRT SERENDIP_BLUE, ALS -0267 275 QSO 147.520620 -0.336742 0 0 0 1.7784 0 18.881 18.644 18.549 18.177 18.155 1048580 0 QSO_SKIRT SERENDIP_BLUE, ALS -0267 281 QSO 147.030990 -1.145606 0 0 0 0.2416 0 20.741 20.539 19.591 19.049 18.829 4 0 QSO_SKIRT -0267 287 QSO 146.933580 -1.245374 0 0 0 1.3731 0 20.292 19.921 19.625 19.360 19.132 4 0 QSO_SKIRT, ALS -0267 294 QSO 147.139390 -0.850967 0 0 0 1.6189 0 19.086 18.668 18.507 18.213 18.287 4 0 QSO_SKIRT, ALS -0267 330 QSO 147.169540 1.096252 0 0 0 1.8123 0 19.373 19.171 19.134 18.875 18.824 1048580 0 QSO_SKIRT SERENDIP_BLUE -0267 347 QSO 147.170100 0.539087 0 0 0 2.2481 0 20.688 20.250 19.767 19.465 19.262 1048580 0 QSO_SKIRT SERENDIP_BLUE -0267 349 QSO 147.140630 0.416251 0 0 0 1.4921 0 19.158 18.915 18.635 18.417 18.375 1048580 0 QSO_SKIRT SERENDIP_BLUE, ALS assoc -0267 365 QSO 147.376310 1.187487 0 0 0 2.4659 0 20.929 20.200 20.078 20.022 20.000 2097152 0 SERENDIP_FIRST -0267 368 QSO 147.533490 1.236340 0 0 0 0.6920 0 19.518 19.118 19.079 19.060 18.949 1048580 0 QSO_SKIRT SERENDIP_BLUE -0267 372 QSO 147.577770 0.847198 0 0 0 0.6402 0 21.869 21.154 20.751 20.215 20.241 33554433 0 QSO_HIZ QSO_FAINT -0267 404 QSO 147.720160 0.958891 0 0 0 0.8631 0 22.186 21.284 20.857 20.536 19.987 1 0 QSO_HIZ -0267 423 QSO 147.810920 0.681236 0 0 0 0.5022 0 19.247 19.041 18.855 18.604 18.574 1048580 0 QSO_SKIRT SERENDIP_BLUE -0267 443 QSO 147.984570 1.228327 0 0 0 2.3659 0 19.393 18.822 18.828 18.787 18.644 1048580 0 QSO_SKIRT SERENDIP_BLUE, ALS, em in forest? -0267 445 QSO 147.865910 1.036160 0 0 0 1.3486 1 20.226 20.068 19.528 19.133 18.914 1056276 0 QSO_SKIRT QSO_FIRST_SKIRT ROSAT_A ROSAT_B ROSAT_C ROSAT_D SERENDIP_BLUE -0267 525 QSO 148.224340 1.239493 0 0 0 3.0140 2 22.034 19.583 19.141 19.147 18.966 4 0 QSO_SKIRT, ALS, BAL? -0267 593 QSO 148.883330 0.685761 0 0 0 0.1639 0 19.527 19.194 18.634 18.158 17.948 4 0 QSO_SKIRT -0267 617 QSO 148.917470 0.811696 0 0 0 2.0252 0 19.447 19.384 18.842 18.424 18.146 3145748 0 QSO_SKIRT QSO_FIRST_SKIRT SERENDIP_BLUE SERENDIP_FIRST, ALS -0267 630 QSO 149.034430 0.470270 0 0 0 0.3098 0 19.378 19.389 19.183 19.104 18.326 7172 0 QSO_SKIRT ROSAT_B ROSAT_C ROSAT_D -0269 025 QSO 152.040180 -0.036057 3 2.54440 0.00030 2.5513 0 -0269 026 QSO 151.928440 -0.592369 3 1.63410 0.00040 1.6348 0 -0269 029 QSO 152.056620 -0.038473 3 1.47790 0.00030 1.4733 0 -0269 043 QSO 151.277290 -1.218695 3 1.47800 0.00030 1.4665 0 -0269 059 QSO 151.430940 -0.933329 3 1.70680 0.00040 1.7097 0 -0269 064 QSO 151.819660 -0.448568 0 0.48350 0.00000 0.9184 1 -0269 088 QSO 151.131670 -0.821981 3 1.63820 0.00040 1.6403 0 -0269 099 QSO 150.983970 -0.994577 3 2.09440 0.00380 2.1107 0 -0269 119 QSO 151.608920 -0.587781 3 0.18680 0.00020 0.1866 0 -0269 149 QSO 151.374880 -0.697959 3 0.46980 0.00030 0.4697 0 -0269 170 QSO 151.304640 -0.622639 3 3.63360 0.00020 1.0304 1 -0269 182 QSO 151.020840 -0.548169 3 0.28830 0.00020 0.2885 0 -0269 199 QSO 151.096950 -0.678565 3 2.72350 0.00700 2.7330 0 -0269 265 QSO 150.708030 -0.414865 3 0.79630 0.00000 0.7953 0 -0269 269 QSO 150.729620 -0.413853 3 0.12240 0.00020 0.1228 0 -0269 285 QSO 149.877650 -1.258331 3 0.70650 0.00040 0.7059 0 -0269 286 QSO 149.991270 -1.179051 3 0.22520 0.00020 0.2256 0 -0269 297 QSO 150.090980 -1.008865 3 1.65460 0.00280 1.6603 0 -0269 314 QSO 150.430310 -0.602926 0 0.05600 0.00010 1.4707 0 -0269 315 QSO 150.565990 -0.182268 3 0.00700 0.00010 0.3532 0 -0269 322 QSO 150.055720 1.200893 0 0.28410 0.00010 1.8088 0 -0269 334 QSO 150.235560 1.221958 3 0.51990 0.00030 0.5213 0 -0269 369 QSO 150.332060 1.083830 3 1.10800 0.00500 1.1140 0 -0269 379 QSO 150.477330 0.757187 2 1.34250 0.01650 1.3605 0 -0269 380 QSO 150.356110 0.868244 3 0.78040 0.00040 0.7819 0 -0269 392 QSO 150.695240 0.351117 3 2.16450 0.00040 2.1781 0 -0269 419 QSO 150.620880 1.149573 3 0.68490 0.00030 0.6851 0 -0269 425 QSO 151.053700 0.215988 3 2.24150 0.00290 2.2288 0 -0269 467 QSO 151.118490 0.307115 3 3.03760 0.00030 3.0441 0 -0269 501 QSO 151.472260 0.324220 3 2.49980 0.00620 2.4896 0 -0269 505 QSO 151.675230 0.263775 0 0.19050 0.00010 0.8795 0 -0269 539 QSO 151.201070 0.669284 3 0.21370 0.00030 0.2139 0 -0269 574 QSO 151.320880 0.984982 2 1.27310 0.00030 0.6929 0 -0269 578 QSO 151.311520 0.894803 3 0.94590 0.00130 0.9507 0 -0269 601 QSO 151.814730 0.716218 3 1.68020 0.00150 1.6816 0 -0269 606 QSO 151.598260 0.694754 3 1.91620 0.00150 1.9210 0 -0269 614 QSO 151.624290 0.679897 3 0.77250 0.00040 0.7738 0 -0295 029 QSO 199.43718 -0.21402 3 0.91731 0.00323 0.91844 0 18.472 18.181 17.993 17.952 17.785 1048580 0 -0295 076 QSO 199.19998 -0.40934 3 1.73909 0.00342 1.74236 0 18.513 18.428 18.388 18.099 18.101 1048580 0 -0295 109 QSO 198.95770 -0.68004 3 0.84765 0.00014 0.84569 0 19.855 19.514 19.294 19.289 18.810 1048580 0 -0295 110 QSO 198.95525 -0.72059 3 1.96562 0.00049 1.96493 0 19.233 19.321 19.295 19.188 18.969 4 0 -0295 163 QSO 198.38757 -0.85399 4 2.93271 0.00040 2.94944 2 23.659 20.087 19.834 19.301 18.947 33554432 0 BAL -0295 179 QSO 198.63956 -0.83819 3 0.63183 0.00029 0.62881 0 21.353 20.503 20.480 19.993 19.773 34603008 0 -0295 212 QSO 198.03618 -1.11950 3 0.80363 0.00128 0.80270 0 19.549 19.300 19.076 19.211 19.194 8388612 0 -0295 225 QSO 198.00932 -0.30560 3 1.18672 0.00291 1.19670 0 18.926 18.980 18.726 18.666 18.680 4 0 -0295 245 QSO 197.87930 -1.05900 3 1.30354 0.00037 1.30633 0 18.914 18.896 18.574 18.541 18.635 4 0 -0295 267 QSO 197.80728 -0.76517 3 1.38056 0.00630 1.38560 0 19.504 19.295 19.013 18.940 19.050 4 0 -0295 292 QSO 197.71880 -0.92590 4 4.14086 0.00032 4.15020 0 23.905 20.985 19.042 18.989 18.957 5 0 ALS -0295 321 QSO 197.74223 1.13948 3 1.39532 0.00028 1.40044 1 19.464 19.106 18.457 18.107 17.902 4 0 1/2 spec -0295 351 QSO 197.15425 0.77784 3 0.56051 0.00104 0.56122 0 19.906 19.351 19.276 19.018 18.899 1048580 0 -0295 366 QSO 197.86815 0.82492 4 2.80047 0.00032 2.79917 0 20.247 19.071 18.933 18.890 18.691 8196 0 ALS -0295 399 QSO 198.05766 0.00083 4 2.67714 0.00030 2.68195 0 20.718 19.577 19.316 19.011 18.761 2097173 0 ALS -0295 410 QSO 198.14401 1.23605 3 2.06291 0.00029 2.06673 0 20.371 20.322 19.626 19.008 18.525 3145748 0 ALS -0295 441 QSO 198.34264 0.88847 3 0.74823 0.00041 0.74966 0 19.291 18.944 18.938 18.875 18.819 4 0 ALS -0295 476 QSO 198.31326 -0.10674 3 1.19556 0.00053 1.19703 0 19.346 19.358 19.165 19.127 19.241 4 0 ALS -0295 506 QSO 198.74892 0.51767 3 0.50939 0.00035 0.51030 0 19.591 19.201 19.123 18.921 18.862 1048580 0 -0295 512 QSO 198.61865 -0.06190 3 1.48756 0.00000 1.49041 0 19.197 19.085 18.651 18.460 18.443 1048580 0 ALS -0295 522 QSO 198.61020 1.09592 3 1.83002 0.00069 1.82212 0 19.308 19.131 19.128 18.892 18.888 4 0 -0295 523 QSO 198.71992 1.18899 3 1.36452 0.00446 1.36913 0 19.114 19.117 18.869 18.862 18.971 4 0 -0295 540 QSO 198.47018 1.08642 3 1.52818 0.00040 1.52608 0 19.554 19.348 19.167 18.870 18.881 4 0 ALS -0295 543 QSO 198.91867 -0.10927 3 2.10529 0.00055 2.11056 0 19.117 19.128 18.975 18.865 18.614 1048580 0 -0295 548 QSO 198.96709 0.63424 3 1.28399 0.00691 1.29447 0 19.700 19.255 18.865 18.760 18.709 1048580 0 -0295 557 QSO 198.96951 0.08180 3 0.73273 0.00038 0.73215 0 18.417 18.161 18.269 18.289 18.211 4 0 -0295 580 QSO 198.99573 0.91980 3 1.57001 0.00040 1.57174 0 19.348 19.182 19.078 18.833 18.809 1048580 0 ALS -0295 599 QSO 199.30267 0.50451 3 0.36945 0.00053 0.36664 1 19.302 19.148 18.914 18.771 18.474 1048580 0 1/2 spec -0295 611 QSO 199.12695 0.85711 4 2.40190 0.00120 2.40321 0 19.174 18.391 18.405 18.230 17.978 3145748 0 ALS -0295 640 QSO 199.47264 0.16804 3 0.81807 0.01754 0.65964 1 19.012 18.976 18.848 18.677 18.791 1048580 0 bad redu., ALS -0296 035 QSO 201.03755 -0.67418 2 0.04547 0.00003 1.45363 1 19.588 19.407 19.361 19.185 19.292 1048580 0 1/2 spec -0296 063 QSO 200.67636 -0.66389 3 1.57883 0.00038 1.58651 0 19.393 19.141 19.145 18.925 18.895 1048580 0 -0296 067 QSO 200.76909 -0.64907 3 1.82057 0.00040 1.82463 2 18.975 18.782 18.437 17.999 17.924 20 0 BAL, ALS -0296 077 QSO 200.94189 -0.30551 3 1.84157 0.00038 1.84244 0 20.731 20.188 19.589 19.030 18.815 4 0 ALS -0296 084 QSO 200.11154 -1.13139 3 1.90781 0.00011 0.62658 0 19.800 19.388 19.464 19.212 19.320 1048580 0 -0296 098 QSO 200.15462 -0.96723 3 0.96952 0.00035 0.96822 0 19.892 19.477 19.210 19.171 19.188 4 0 -0296 104 QSO 200.65001 -0.82011 3 0.82424 0.00008 1.14081 1 18.735 18.407 18.161 18.023 17.932 4 0 bad redu -0296 110 QSO 200.45050 -0.58803 3 0.21457 0.00123 1.15414 0 19.005 18.811 18.682 18.728 18.754 1048580 0 -0296 147 QSO 200.41609 -0.69779 2 0.09282 0.00159 3.06000 2 23.437 20.602 19.452 18.808 18.549 2097168 0 BAL, spectacular -0296 166 QSO 200.28593 -0.37048 3 1.58000 0.00048 1.58775 0 18.781 18.669 18.739 18.516 18.589 1048580 0 ALS -0296 184 QSO 200.08447 -0.57451 3 0.35301 0.00052 0.35383 0 18.736 18.578 18.596 18.555 17.969 7172 0 -0296 185 QSO 199.91151 -0.82778 3 0.89156 0.00040 0.89033 0 17.985 17.742 17.642 17.717 17.562 3145748 0 -0296 187 QSO 199.92854 -0.76978 2 0.20173 0.00029 0.20150 0 20.268 19.637 19.060 18.795 18.577 4 0 -0296 196 QSO 200.03877 -0.34553 2 0.28278 0.00032 0.28310 0 20.696 20.393 19.526 19.193 18.698 33558528 0 -0296 287 QSO 199.37842 -1.23409 3 1.31698 0.00343 1.31985 0 18.701 18.777 18.372 18.346 18.476 3670036 0 -0296 358 QSO 199.66756 0.12647 3 0.49303 0.00052 0.49203 0 18.315 18.031 17.977 17.839 17.908 1048580 0 -0296 381 QSO 199.68280 0.79228 3 0.39286 0.00049 0.39182 0 18.694 18.707 18.625 18.525 18.132 4 0 -0296 386 QSO 199.72273 0.36993 3 0.13635 0.00009 2.07579 2 19.209 19.059 18.854 18.788 18.613 1048580 0 BAL -0296 396 QSO 199.67065 0.51775 3 1.77327 0.00041 1.77197 0 19.661 19.473 19.416 19.135 19.128 1048580 0 ALS -0296 398 QSO 199.78394 0.47884 3 1.12651 0.00439 1.13098 0 18.506 18.494 18.414 18.512 18.655 1048580 0 ALS -0296 401 QSO 199.54477 1.19468 3 1.63451 0.00752 1.65035 0 18.304 18.132 18.105 17.927 17.975 1048580 0 -0296 412 QSO 199.80830 0.88109 3 1.82585 0.00061 1.82980 0 19.867 19.640 19.558 19.257 19.186 4 0 -0296 457 QSO 200.15640 0.74426 3 1.10594 0.00447 1.10235 0 18.766 18.576 18.391 18.350 18.389 1048580 0 -0296 460 QSO 200.07556 1.19038 3 0.92054 0.00066 0.92040 0 19.513 19.245 19.161 19.289 19.116 9437188 0 -0296 464 QSO 199.97105 0.50697 3 0.59306 0.00027 0.59238 0 21.888 20.388 19.809 19.251 19.081 1 0 -0296 465 QSO 200.03795 0.39353 3 1.70358 0.00036 1.70633 0 18.932 18.780 18.764 18.527 18.553 4 0 -0296 490 QSO 200.29507 0.63935 2 1.24471 0.00035 4.72000 1 24.114 23.717 21.622 20.247 20.236 1 0 bad redu (real z) -0296 495 QSO 200.14102 0.19401 3 1.51998 0.00043 1.51906 0 19.148 18.983 18.917 18.702 18.789 1048580 0 -0296 511 QSO 200.52585 0.29993 2 0.07880 0.00016 0.53460 0 18.335 18.066 18.191 18.104 17.938 4 0 -0296 524 QSO 200.56128 1.13369 3 1.30164 0.00029 1.30484 0 20.213 19.797 19.246 19.022 18.775 3145748 0 -0296 527 QSO 200.41191 1.14619 3 1.42166 0.00040 1.42504 0 19.451 19.236 19.090 19.044 19.008 1048580 0 -0296 549 QSO 200.81042 0.54743 3 1.95786 0.00183 1.96760 0 19.114 19.303 19.330 19.120 18.946 1048580 0 -0296 564 QSO 200.71523 0.78191 3 0.52062 0.00054 0.52191 0 18.890 18.740 18.939 18.712 18.820 4 0 -0296 616 QSO 200.88768 0.79732 3 1.77412 0.00193 1.78407 0 18.109 18.123 17.905 17.539 17.448 1048580 0 -0297 006 QSO 202.27834 -1.18537 3 1.54255 0.00037 1.54733 0 19.546 19.279 19.000 18.667 18.602 1048580 0 ALS -0297 008 QSO 202.57506 -1.04405 3 2.13029 0.00032 2.12849 0 19.450 19.279 19.191 19.097 18.910 1048580 0 -0297 051 QSO 202.04735 -0.89531 3 0.95944 0.00055 0.95885 0 19.179 19.026 18.945 18.882 18.782 4 0 -0297 053 QSO 202.13544 -1.05504 3 0.73693 0.00021 0.73644 0 19.623 19.322 19.245 19.108 18.846 1048580 0 -0297 062 QSO 202.63086 -0.47188 2 0.24039 0.00027 0.24019 0 20.116 19.765 19.245 18.938 18.750 1048580 0 -0297 079 QSO 202.44273 -0.30153 3 1.01911 0.00138 1.02164 0 20.444 19.860 19.396 19.497 19.355 42467328 0 new em line? -0297 093 QSO 201.77605 -0.71073 2 0.09977 0.00004 1.70151 0 22.138 20.899 20.373 19.842 19.686 1 0 -0297 143 QSO 201.95033 -0.17270 3 1.64711 0.00015 0.48159 0 19.451 19.117 19.142 18.848 18.726 1048580 0 -0297 157 QSO 201.96220 -0.06113 3 1.79230 0.00181 1.79703 0 19.515 19.402 19.423 19.154 19.230 1048580 0 -0297 166 QSO 201.72900 -0.09173 3 0.07705 0.00100 3.30220 0 22.232 21.050 20.633 20.125 19.414 33554432 0 -0297 190 QSO 201.54498 -0.30991 3 1.25964 0.00045 1.25684 0 18.515 18.450 18.265 18.242 18.277 1048580 0 -0297 235 QSO 201.07820 -0.51535 3 1.31250 0.00421 1.31675 0 19.860 19.523 19.074 18.949 19.103 4 0 -0297 239 QSO 201.07269 -0.27372 3 1.33078 0.00037 1.32952 0 19.348 19.346 19.104 19.096 19.083 4 0 -0297 250 QSO 201.04361 -1.21216 3 1.83944 0.00410 1.83664 1 19.737 19.784 19.911 19.493 19.702 33554432 0 bad extr. -0297 269 QSO 200.84912 -0.36536 3 1.39092 0.00104 1.39190 0 19.007 18.526 17.990 17.765 17.661 4 0 ALS -0297 299 QSO 200.73549 -0.99167 3 1.15194 0.00047 1.15243 0 18.819 18.805 18.642 18.657 18.722 4 0 -0297 305 QSO 200.61870 0.04318 3 1.59268 0.00054 1.59679 0 19.334 19.156 19.206 19.005 19.010 1048580 0 -0297 312 QSO 200.62970 -0.19015 2 0.17252 0.00038 0.17295 0 19.612 19.126 18.593 18.197 17.977 5124 0 -0297 331 QSO 200.56175 0.90555 3 2.15427 0.00046 2.15085 0 18.803 18.517 18.441 18.346 18.190 1048580 0 ALS -0297 346 QSO 200.41483 0.39935 3 1.61732 0.00104 1.61821 0 18.211 17.985 17.812 17.573 17.446 1055748 0 -0297 394 QSO 201.31664 0.57052 3 1.49067 0.00365 1.49762 0 19.532 19.423 19.339 19.177 19.220 1048580 0 -0297 408 QSO 201.47964 1.23991 3 1.95768 0.00226 1.95458 0 19.452 19.289 19.485 19.223 19.030 1048580 0 -0297 508 QSO 201.96021 0.19911 3 0.39739 0.00008 2.52421 0 19.329 18.701 18.438 18.265 18.025 16 0 ALS, v. strong (not BAL) -0297 509 QSO 201.92883 0.59240 3 1.87519 0.00030 1.87552 0 19.025 19.075 18.903 18.461 18.410 4 0 ALS -0297 523 QSO 201.79639 1.16935 3 2.05307 0.00044 0.75000 1 19.086 19.007 18.860 18.991 18.788 4 0 1/2 spec -0297 528 QSO 201.85022 1.18995 3 0.86484 0.00218 0.86847 0 18.517 18.374 18.253 18.320 18.096 1048580 0 -0297 531 QSO 201.82352 0.96363 3 0.63391 0.00028 0.63330 0 19.296 19.044 19.071 18.926 18.958 1048580 0 -0297 543 QSO 202.11462 0.79426 3 0.00002 0.00000 3.91016 1 21.930 20.980 20.517 19.954 19.610 1 0 low S/N -0297 577 QSO 202.05042 0.94535 3 2.01935 0.00203 2.01858 0 18.649 18.629 18.544 18.331 18.178 1048580 0 ALS -0297 622 QSO 202.71819 0.53839 3 1.47783 0.00025 1.47533 0 18.382 18.376 18.271 18.132 18.187 4 0 ALS -0297 632 QSO 202.80135 0.27706 3 0.35743 0.00614 1.40971 0 19.532 19.191 18.810 18.628 18.610 4 0 -0298 073 QSO 204.32675 -0.08080 3 1.26057 0.00198 1.26057 0 18.773 18.591 18.405 18.486 18.476 1048580 0 -0298 085 QSO 203.85838 -1.00782 3 0.67175 0.00046 0.67249 0 17.708 17.446 17.470 17.274 17.371 20 0 -0298 094 QSO 203.80598 -0.77810 3 2.02684 0.00056 2.03082 0 19.795 19.553 19.333 19.157 18.976 3145748 0 -0298 110 QSO 204.11748 -0.55762 3 0.38238 0.00039 0.38272 0 18.757 18.333 18.300 18.285 17.883 4 0 -0298 114 QSO 204.20461 -0.34927 3 0.29575 0.00069 0.29550 0 18.153 18.192 18.187 18.124 17.552 1048580 0 -0298 159 QSO 203.88460 -0.03797 3 1.90164 0.00502 1.90164 0 20.758 20.501 20.493 20.271 20.249 34603008 0 -0298 165 QSO 203.60185 -0.54241 3 1.71399 0.00023 0.51778 0 22.090 21.298 20.427 19.854 19.433 1 0 -0298 170 QSO 203.45941 -0.66303 3 0.72827 0.00082 0.72632 0 19.308 18.778 18.756 18.816 18.605 1048580 0 -0298 227 QSO 202.86649 0.03139 3 0.67103 0.00025 0.67068 0 20.213 19.451 19.297 19.123 19.007 1056768 0 -0298 235 QSO 202.95802 -0.27364 3 0.86426 0.00257 0.86795 0 18.925 18.891 18.819 18.844 18.761 1048580 0 -0298 236 QSO 203.12955 -0.38838 3 0.95952 0.00039 0.96003 0 18.474 18.437 18.243 18.336 18.227 4 0 -0298 240 QSO 203.11259 -0.52947 3 1.54525 0.00037 1.54855 0 19.708 19.240 18.991 18.715 18.666 1048580 0 -0298 249 QSO 202.77209 -0.95883 3 0.52596 0.00000 0.52767 1 19.850 19.521 19.398 19.126 18.966 4 0 bad redu. -0298 255 QSO 203.09106 -0.78776 3 1.10567 0.00049 1.10991 0 19.841 19.470 18.939 18.771 18.807 1048580 0 -0298 263 QSO 202.84091 0.04679 2 0.29705 0.00006 3.22143 0 22.688 20.620 20.261 20.110 19.958 2097152 0 -0298 266 QSO 202.82759 -0.39007 3 1.62815 0.00381 1.63364 0 19.650 19.390 19.288 19.021 19.205 1048580 0 ALS -0298 298 QSO 202.65440 -0.75818 3 2.09956 0.00347 2.11679 0 18.750 18.606 18.514 18.419 18.237 4 0 ALS -0298 315 QSO 202.29440 -0.31682 3 0.55633 0.00112 0.55734 0 19.315 18.992 19.162 18.903 18.791 1048580 0 -0298 318 QSO 202.30423 -0.56492 3 1.49304 0.00047 1.49462 0 19.754 19.540 19.487 19.265 19.224 36700160 0 -0298 328 QSO 202.68666 1.19979 3 1.03142 0.00036 1.03398 0 19.098 19.026 18.791 18.812 18.779 1048580 0 -0298 372 QSO 202.85805 0.73724 3 0.24910 0.00004 2.03100 0 19.289 19.033 18.737 18.584 18.356 4 0 ALS -0298 415 QSO 202.96048 0.75522 3 1.89033 0.00120 1.89186 2 19.601 19.480 19.347 19.103 19.127 3145748 0 BAL -0298 416 QSO 203.04533 0.98768 3 1.53232 0.00041 1.53361 0 20.224 20.069 20.022 19.812 19.997 34603008 0 -0298 422 QSO 202.97751 0.62438 3 -0.00009 0.00000 3.84130 0 24.188 22.055 20.319 20.127 19.987 33554432 0 ALS -0298 431 QSO 203.08745 0.22101 3 0.86542 0.00183 0.86007 0 20.494 20.022 20.017 20.130 19.578 42991616 0 -0298 435 QSO 202.80135 0.27706 3 1.40690 0.00109 1.40826 0 19.532 19.191 18.810 18.628 18.610 4 0 -0298 447 QSO 203.17978 1.02953 3 1.11165 0.00073 1.10827 0 19.038 18.979 18.776 18.805 18.948 1048580 0 -0298 455 QSO 203.17096 1.04378 3 1.75129 0.00218 1.75809 0 18.898 18.853 18.831 18.611 18.617 1048580 0 -0298 460 QSO 203.34128 0.97342 3 1.51022 0.00150 1.50943 0 18.418 18.309 18.117 17.919 18.017 4 0 -0298 475 QSO 203.14244 0.15603 3 1.03289 0.00396 3.62814 0 24.095 21.481 20.563 20.416 20.166 2097152 0 -0298 476 QSO 203.33112 0.11279 3 1.54537 0.00044 1.54719 0 19.541 19.338 19.274 19.118 19.179 4 0 -0298 477 QSO 203.48344 0.20810 2 0.30514 0.00005 0.91767 0 18.164 17.348 17.179 17.296 17.156 11534356 0 ALS -0298 479 QSO 203.26398 0.08095 3 1.51277 0.00059 1.51583 0 19.725 19.497 19.430 19.228 19.246 4 0 -0298 508 QSO 203.81448 0.16426 3 1.56381 0.00018 0.43245 0 21.802 20.723 20.164 19.622 19.213 1 0 -0298 562 QSO 203.76367 1.25709 3 0.32769 0.00035 0.32742 0 19.126 19.089 18.916 18.738 18.412 1048580 0 -0298 575 QSO 203.71352 1.20451 3 0.41696 0.00092 0.41370 0 19.025 18.907 19.007 18.836 18.602 1048580 0 -0298 576 QSO 203.71013 1.03861 2 0.24583 0.00038 0.24582 0 19.364 18.999 18.473 18.090 17.834 2097156 0 -0298 580 QSO 203.81342 1.09085 3 0.38658 0.00046 0.38627 0 19.523 19.285 19.194 19.053 18.785 4 0 -0298 587 QSO 204.34412 0.63649 3 0.64718 0.00195 0.64721 0 19.468 18.992 19.165 19.164 19.141 1048580 0 -0298 603 QSO 204.36641 1.10969 3 1.42256 0.00068 1.42242 0 20.257 20.132 20.112 20.030 20.043 34603008 0 -0298 608 QSO 204.28870 1.23087 3 1.90394 0.00028 1.90935 0 20.234 19.620 19.431 19.292 19.017 1048580 0 ALS -0298 609 QSO 204.36031 0.97465 3 0.32988 0.00044 0.33019 0 18.253 18.294 18.226 18.108 17.624 68 0 -0298 613 QSO 204.77554 0.69387 3 1.21786 0.00073 1.21627 0 19.549 19.526 19.281 19.198 19.251 1048580 0 -0298 615 QSO 204.57738 0.82105 3 1.52820 0.00359 1.53117 0 19.640 19.454 19.412 19.036 19.212 1048580 0 -0298 636 QSO 204.59604 0.26997 3 2.15902 0.00036 2.16309 0 18.832 18.723 18.701 18.538 18.293 1048580 0 -0298 637 QSO 204.93904 0.16281 3 1.86863 0.00043 1.88036 0 19.250 19.247 19.257 18.996 18.893 4 0 -0299 009 QSO 206.20045 -0.88248 3 2.08097 0.00056 2.08857 0 19.592 19.281 19.163 19.007 18.734 1048580 0 ALS -0299 017 QSO 206.29466 -0.72762 2 2.38625 0.00623 0.47145 3 22.166 21.903 21.389 20.405 20.751 4096 0 Wow! MgIi v strong, almost no pl continuum -0299 039 QSO 206.44949 -0.38981 3 1.09384 0.00360 1.09716 0 17.968 17.765 17.504 17.501 17.457 4 0 ALS -0299 045 QSO 205.82687 -0.99267 3 0.76050 0.00009 0.69906 1 19.272 18.928 18.892 18.786 18.621 1048580 0 bad redu. -0299 098 QSO 205.71501 -0.89591 3 0.32597 0.00059 0.32581 0 16.976 17.027 17.005 17.115 16.574 7172 0 -0299 102 QSO 205.63490 -0.53085 3 1.20657 0.00085 1.20712 0 19.847 19.212 18.773 18.612 18.616 16 0 -0299 108 QSO 205.64044 -0.19668 3 0.51608 0.00023 0.51524 0 19.463 19.106 19.241 19.062 18.821 1048580 0 -0299 111 QSO 205.69275 -0.59548 3 0.78829 0.00053 0.78779 0 18.447 18.277 18.368 18.507 18.383 4 0 ALS -0299 113 QSO 205.85770 -0.27006 3 1.51235 0.00044 1.51313 2 19.455 19.285 19.117 18.863 18.860 1048580 0 BAL -0299 133 QSO 205.30807 -0.88755 2 0.23702 0.00038 0.23693 0 17.846 17.838 17.603 17.201 17.319 2104852 0 great S/N -0299 136 QSO 205.45999 -0.96489 3 0.93769 0.00046 0.93821 0 19.509 19.347 19.120 19.143 18.982 1048580 0 ALS -0299 172 QSO 205.43802 -0.60867 2 0.14286 0.00030 2.20515 2 20.964 19.802 19.169 18.695 18.398 1 0 BAL, wow -0299 192 QSO 205.24683 -0.32915 3 1.85620 0.00040 1.85636 0 20.332 20.209 20.066 19.839 19.650 34603008 0 ALS -0299 195 QSO 204.93544 -0.24768 3 0.70305 0.00093 0.53521 0 19.412 19.202 19.087 19.104 19.158 4 0 -0299 228 QSO 204.76419 -0.71143 0 0.19219 0.00007 1.51735 2 22.413 21.924 21.183 20.346 20.141 35651584 0 BAL -0299 235 QSO 204.68721 -0.36316 3 1.76932 0.00109 1.77021 0 18.101 18.071 18.021 17.691 17.613 4 0 ALS -0299 248 QSO 205.08185 -1.00278 2 0.06423 0.00007 1.83790 1 19.913 19.503 19.339 18.912 18.744 1048580 0 1/2 spec, ALS -0299 251 QSO 205.18552 -0.75465 3 0.38607 0.00070 0.38815 0 17.294 17.237 17.364 17.395 17.026 7172 0 -0299 262 QSO 204.42401 -0.93005 2 0.27905 0.00024 0.27943 0 20.483 19.956 19.348 19.198 18.654 4 0 -0299 267 QSO 204.72935 -1.04164 3 1.29491 0.00532 1.29900 0 18.410 18.519 18.471 18.360 18.513 1048580 0 -0299 286 QSO 204.83833 -1.03610 3 1.62951 0.00444 1.63939 0 19.448 18.917 18.914 18.696 18.651 1048580 0 ALS -0299 308 QSO 204.30284 -0.65784 3 1.51279 0.00053 1.50941 0 18.683 18.425 18.484 18.286 18.363 4 0 ALS -0299 310 QSO 204.14690 -0.35178 2 0.27163 0.00040 0.27191 0 20.216 19.627 19.136 18.937 18.447 4 0 -0299 315 QSO 204.23048 -0.17127 3 0.80950 0.00048 0.80847 0 20.136 19.634 19.626 19.889 19.397 42991616 0 -0299 386 QSO 204.76807 0.37276 3 1.14784 0.00104 1.15201 0 18.099 18.047 17.836 17.847 17.900 1048580 0 ALS -0299 400 QSO 204.73686 0.45513 3 1.94537 0.00498 1.95307 0 19.019 18.991 19.005 18.802 18.656 1048580 0 ALS -0299 427 QSO 205.13071 0.25209 3 1.90475 0.00138 1.90556 0 18.739 18.770 18.886 18.638 18.617 1048596 0 -0299 437 QSO 205.06354 0.00075 3 1.24841 0.00299 1.24066 0 19.145 19.147 19.076 19.135 19.289 1048580 0 -0299 446 QSO 205.47597 0.99687 3 1.71071 0.00505 1.71071 0 18.856 18.834 18.904 18.700 18.712 4 0 ALS -0299 450 QSO 205.43312 1.22340 3 1.16569 0.00049 1.16425 0 19.400 19.368 19.140 19.130 19.375 1048580 0 ALS -0299 464 QSO 205.36418 0.34735 3 0.72168 0.00038 0.72272 0 19.891 19.505 19.268 19.090 18.912 1048580 0 ALS -0299 478 QSO 205.39845 -0.01645 3 1.59917 0.00146 1.59985 0 19.804 19.567 19.446 19.197 19.242 1048580 0 -0299 484 QSO 205.48695 0.50290 3 1.23790 0.00221 1.23779 0 19.312 19.339 19.137 19.114 19.171 4 0 ALS -0299 517 QSO 205.73552 0.01592 3 0.80469 0.00063 0.80266 0 19.270 18.955 18.899 19.087 18.932 9437188 0 -0299 525 QSO 205.74609 0.86603 3 1.06680 0.00128 1.06723 0 17.979 17.781 17.654 17.684 17.706 1048580 0 ALS -0299 549 QSO 206.22046 0.08897 2 0.08724 0.00046 0.08679 0 18.364 18.021 17.580 17.064 16.901 5188 0 -0299 580 QSO 205.96999 1.00267 2 0.25502 0.00038 0.25517 1 19.208 18.894 18.380 18.077 17.798 4 0 1/2 spec -0300 014 QSO 208.19864 -1.05613 3 0.99114 0.00049 0.99062 0 18.774 18.524 18.212 18.166 18.188 4 0 -0300 022 QSO 208.35948 -0.40027 4 2.41958 0.00421 2.42682 0 18.560 18.153 18.080 18.106 17.973 1048580 0 ALS -0300 028 QSO 208.56578 -0.53035 3 1.22392 0.00042 1.22304 0 18.587 18.479 18.299 18.281 18.276 1048596 0 ALS -0300 033 QSO 208.32419 -0.08369 2 0.26544 0.00007 2.30797 2 22.091 21.009 19.770 19.228 18.881 4 0 BAL -0300 053 QSO 208.06940 -0.77571 3 1.24460 0.00189 1.24519 0 19.118 19.064 18.772 18.722 18.771 1048580 0 ALS -0300 061 QSO 207.93364 -0.08469 2 0.15254 0.00028 0.15254 0 20.283 19.768 19.292 18.939 18.787 4 0 -0300 062 QSO 208.02275 -0.37767 3 1.42670 0.00697 1.43346 0 19.126 18.944 18.723 18.558 18.475 4 0 ALS -0300 075 QSO 207.96033 -0.12745 3 1.43880 0.00414 1.44354 0 17.139 16.951 16.839 16.738 16.759 1048580 0 ALS -0300 085 QSO 207.62131 -0.94799 3 1.64826 0.00034 1.64815 0 22.217 20.976 20.454 19.873 19.591 1 0 ALS -0300 088 QSO 207.68616 -1.14982 3 1.47967 0.00031 1.47909 0 18.424 18.254 17.989 17.793 17.770 4 0 ALS -0300 097 QSO 207.74110 -0.73204 4 4.41739 0.00038 4.42294 0 23.754 22.595 20.388 20.016 19.801 41943040 0 ALS -0300 101 QSO 207.86188 -0.19900 3 1.44614 0.00381 1.45215 0 19.521 19.239 19.234 19.147 19.221 4 0 ALS -0300 135 QSO 207.45163 -1.10606 3 0.60004 0.00034 0.59923 0 16.995 16.451 16.386 16.190 16.244 7680 0 much FeII -0300 137 QSO 207.45515 -1.22890 2 0.94714 0.00011 1.25496 0 19.469 19.404 19.153 19.132 19.171 16 0 -0300 140 QSO 207.39294 -0.68413 3 0.51503 0.00050 0.51603 0 18.193 17.838 17.941 17.803 17.777 1055748 0 -0300 149 QSO 207.42799 -0.24869 3 0.91235 0.00031 0.91467 0 19.295 18.766 18.400 18.303 18.145 4 0 -0300 156 QSO 207.51207 0.00111 3 1.57803 0.00034 1.58228 0 20.257 20.033 20.019 19.901 19.997 34603008 0 -0300 167 QSO 207.16312 -0.25322 3 0.55471 0.00030 0.55654 0 19.760 19.275 19.201 18.927 18.965 1048580 0 -0300 173 QSO 207.34219 -0.11603 2 0.26810 0.00007 1.14187 1 19.010 18.674 18.418 18.383 18.325 4 0 ALS, 1/2 spec -0300 174 QSO 207.22935 -0.13079 3 0.50236 0.00067 0.50139 1 20.683 20.421 20.247 19.806 19.273 34603008 0 1/2 spec -0300 181 QSO 207.07610 -0.41169 3 0.73963 0.00049 0.73989 0 19.065 18.792 18.702 18.583 18.558 1048580 0 -0300 193 QSO 207.05455 -0.51272 3 1.20983 0.00055 1.20887 0 20.010 19.690 19.227 19.149 19.029 1048580 0 ALS -0300 195 QSO 206.96547 -0.25516 3 0.55323 0.00042 0.55308 0 18.133 17.922 18.115 18.035 18.073 4 0 -0300 219 QSO 207.11192 -0.99553 2 0.23431 0.00057 0.23386 0 19.930 19.527 18.555 18.053 17.746 2097220 0 -0300 221 QSO 206.65692 -0.33775 3 2.04821 0.00511 2.05398 0 19.642 19.407 19.362 19.243 19.127 16 0 ALS -0300 278 QSO 206.24771 -0.26653 2 0.24480 0.00030 0.24477 0 17.688 17.696 17.636 17.481 17.444 1055748 0 -0300 284 QSO 206.11395 -0.72821 3 1.44810 0.00907 1.45854 0 19.256 18.968 18.908 18.795 18.794 1048580 0 ALS -0300 304 QSO 206.05370 -0.50151 3 1.29220 0.00154 2.17309 1 20.979 20.776 20.594 20.215 19.848 35651584 0 low S/N -0300 311 QSO 205.96277 0.07633 2 0.07335 0.00039 0.07356 0 18.010 17.598 17.258 16.846 16.778 68 0 -0300 316 QSO 206.10815 -0.01559 3 1.09776 0.00098 1.09559 0 18.946 18.836 18.683 18.705 18.733 4 0 -0300 327 QSO 206.65221 1.19867 3 1.67130 0.00076 1.66991 0 19.851 19.624 19.560 19.412 19.287 36700160 0 -0300 339 QSO 206.35101 0.87588 3 1.76640 0.00033 1.77873 0 19.768 19.388 19.333 19.141 19.070 1048580 0 ALS -0300 344 QSO 205.84857 0.20649 3 0.87496 0.00117 0.87504 0 18.903 18.548 18.459 18.529 18.480 1048580 0 -0300 362 QSO 206.73311 0.95021 3 1.43374 0.00293 1.43517 0 19.523 19.465 19.238 19.056 19.033 4 0 -0300 386 QSO 206.35913 0.48262 3 0.96336 0.00059 0.96618 0 20.458 20.530 20.438 20.736 20.575 42991616 0 -0300 407 QSO 206.88387 1.22542 3 0.69291 0.00032 0.69489 0 19.663 19.272 19.248 19.162 19.130 1048580 0 -0300 413 QSO 206.95035 1.24708 3 0.69905 0.00021 0.70049 0 19.717 19.212 19.257 19.391 19.147 42998784 0 -0300 415 QSO 207.04951 0.67212 3 0.96103 0.00288 0.95754 0 18.938 18.527 18.130 18.106 18.027 1048580 0 -0300 417 QSO 207.06201 1.04992 3 0.47070 0.00034 0.46769 0 19.994 19.610 19.104 18.806 18.533 4 0 -0300 426 QSO 206.43564 0.46969 4 2.50451 0.00063 2.45099 2 19.308 18.746 18.606 18.648 18.446 1048580 0 BAL -0300 444 QSO 207.14575 1.10729 3 1.93108 0.01757 1.94909 0 18.463 18.415 18.293 18.183 18.088 1048580 0 ALS, v. high vel shift -0300 461 QSO 207.03664 0.62311 4 3.60099 0.00024 3.60798 2 23.316 20.657 19.482 19.421 19.548 524289 0 BAL -0300 472 QSO 206.84619 0.36635 4 4.28996 0.00076 4.28485 0 24.074 21.336 19.468 19.081 18.892 1 0 ALS, LLS -0300 488 QSO 207.22678 0.49818 3 1.08253 0.00038 1.08301 0 19.062 19.094 18.876 18.888 19.149 7172 0 -0300 491 QSO 207.17201 0.14970 3 0.94695 0.00006 1.10977 0 19.182 18.916 18.688 18.689 18.642 1048580 0 -0300 554 QSO 207.84073 0.28033 3 1.55567 0.00033 1.55559 0 18.807 18.557 18.437 18.253 18.240 4 0 ALS -0300 560 QSO 207.70381 0.25613 3 1.82940 0.00037 1.82784 0 19.738 19.515 19.455 19.199 19.142 1048580 0 ALS -0300 572 QSO 207.86800 1.06073 3 1.08612 0.00046 1.08509 0 17.661 17.354 17.162 17.191 17.266 7172 0 -0300 614 QSO 208.13576 0.71460 3 0.33946 0.00007 1.15797 0 18.550 18.289 18.023 17.999 17.975 1048580 0 ALS -0300 621 QSO 208.21727 0.63295 3 0.48525 0.00036 0.48481 0 18.464 18.126 18.219 18.085 17.953 4 0 -0301 017 QSO 210.70052 -0.82333 3 1.59156 0.00115 1.59183 0 19.512 19.491 19.473 19.280 19.220 1048580 0 -0301 021 QSO 210.93361 -0.56650 3 1.74343 0.00031 1.74588 0 19.484 19.410 19.533 19.302 19.362 34603008 0 -0301 036 QSO 210.84747 -0.10192 3 2.45352 0.00052 2.46383 0 18.716 18.049 18.057 18.006 17.765 4 0 ALS -0301 043 QSO 210.06940 -1.13949 3 0.35078 0.00017 0.35059 0 19.517 19.405 18.927 18.660 18.116 4 0 -0301 051 QSO 210.26379 -0.84184 3 0.92928 0.00184 0.92776 0 18.673 18.484 18.400 18.520 18.488 9437188 0 -0301 053 QSO 210.08223 -0.79665 3 0.25387 0.00415 1.21106 0 18.369 18.230 18.017 18.038 18.278 1048580 0 -0301 060 QSO 210.30954 -0.76031 3 2.51621 0.00579 2.52190 0 19.425 18.890 18.821 18.808 18.556 1048580 0 ALS -0301 098 QSO 209.96286 -0.71402 3 0.56414 0.00004 2.05922 0 19.128 19.084 19.047 18.932 18.855 1048580 512 -0301 117 QSO 210.10992 -0.18406 3 0.60023 0.00013 0.60087 0 20.224 19.790 19.482 19.215 19.078 4 0 ALS -0301 122 QSO 209.68575 -1.18199 3 1.96011 0.00491 1.97044 0 19.054 18.978 18.870 18.665 18.579 1048580 0 ALS -0301 132 QSO 209.39592 -0.78026 3 1.76974 0.00049 1.77447 0 17.967 18.014 17.974 17.722 17.635 4 0 ALS -0301 139 QSO 209.46152 -1.17278 3 0.40552 0.00017 0.40439 0 18.983 18.866 18.973 18.824 18.388 7172 0 -0301 145 QSO 209.84134 -0.44504 3 0.78216 0.00006 1.55590 0 18.273 18.058 17.976 17.749 17.702 1048580 0 ALS -0301 149 QSO 210.05067 -0.58599 3 1.21895 0.00052 1.22151 0 19.822 19.599 19.269 19.284 19.443 35127296 0 -0301 151 QSO 209.92975 -0.57345 3 0.16336 0.00041 0.16309 0 17.983 17.995 17.708 17.228 17.081 5188 0 -0301 154 QSO 209.92166 -0.33758 2 0.57767 0.00005 1.39118 0 18.444 18.335 18.177 18.088 18.093 1048580 0 ALS -0301 160 QSO 209.97775 -0.29775 3 2.51730 0.00017 2.52293 0 21.372 20.603 20.509 20.342 20.011 2097152 0 -0301 248 QSO 208.85692 -0.96129 3 0.89674 0.00095 0.89544 0 19.084 18.848 18.790 18.884 18.722 4 0 -0301 252 QSO 209.07707 -1.25392 2 0.24724 0.00015 0.24744 0 19.610 19.489 19.195 18.984 18.782 4 0 -0301 255 QSO 209.02258 -1.00680 3 1.88444 0.00046 1.87961 0 20.097 19.770 19.399 18.916 18.746 4 0 -0301 259 QSO 209.01462 -1.07277 3 1.93304 0.00025 1.93515 0 18.859 18.934 18.814 18.503 18.340 4 0 -0301 263 QSO 208.77229 -0.33421 3 1.97994 0.00164 1.97777 0 19.420 19.488 19.195 18.793 18.593 4 0 ALS -0301 264 QSO 208.73859 -0.56844 3 0.93468 0.00041 0.93530 0 18.600 18.472 18.496 18.438 18.304 2097172 0 -0301 266 QSO 208.99597 -0.40377 2 0.23458 0.00005 2.33173 2 19.029 18.459 18.306 18.296 18.104 4 0 BAL, ALS -0301 280 QSO 208.89330 -0.14494 3 1.79044 0.00042 1.79613 0 19.407 19.358 19.440 19.253 19.227 1048580 0 -0301 287 QSO 208.58925 -0.80743 3 2.00307 0.00016 1.99900 0 19.877 19.587 19.484 19.254 19.056 4 0 ALS -0301 306 QSO 208.21165 -0.32888 3 1.35202 0.00415 1.35800 0 19.357 19.320 19.142 19.091 19.164 1048580 0 -0301 307 QSO 208.59581 -0.65171 3 0.35508 0.00004 4.43387 0 24.176 23.190 20.732 20.224 20.012 33554432 0 Hi-z -0301 308 QSO 208.19984 -0.39768 3 1.66462 0.00442 1.66751 0 20.221 20.032 19.944 19.681 19.653 36700160 0 -0301 319 QSO 208.60516 -0.23280 3 1.51010 0.00423 1.51366 0 17.001 16.854 16.757 16.594 16.617 3153408 0 -0301 336 QSO 208.89928 0.70363 3 0.78715 0.00004 1.62459 0 19.246 18.876 18.757 18.437 18.504 1048580 0 ALS -0301 377 QSO 208.95920 0.68739 2 0.25339 0.00004 1.17001 0 18.795 18.615 18.364 18.268 18.274 1048580 0 ALS -0301 379 QSO 209.20972 1.04564 3 1.21179 0.00239 1.21512 0 17.809 17.794 17.617 17.625 17.804 4 0 -0301 380 QSO 209.09708 0.74089 3 1.97753 0.00209 1.98124 0 19.106 19.259 19.194 18.995 18.819 1048580 512 -0301 385 QSO 208.81091 0.19928 3 1.80770 0.00343 1.81803 0 18.889 18.771 18.717 18.488 18.542 1048580 0 ALS -0301 388 QSO 208.69029 0.34732 3 2.48681 0.00559 2.49545 0 18.697 18.263 18.206 18.173 18.047 1048580 0 -0301 404 QSO 209.31088 0.86658 2 0.19613 0.00029 0.19657 0 20.219 19.964 19.428 18.952 18.847 4 0 -0301 409 QSO 209.42854 0.83998 3 1.58295 0.00247 1.58820 0 20.479 20.288 20.357 20.214 20.329 34603008 0 -0301 411 QSO 209.34074 0.91701 3 0.23211 0.00004 2.01047 0 18.634 18.491 18.225 18.139 18.074 3145748 0 ALS, strong Al em! -0301 414 QSO 209.26219 0.64011 3 2.30541 0.00024 2.30758 2 21.759 20.456 20.022 19.657 19.167 1 0 BAL -0301 416 QSO 209.52258 0.71402 3 0.89833 0.00000 0.89459 0 19.220 19.009 18.820 18.880 18.814 20 0 -0301 427 QSO 208.88817 0.39949 3 1.56739 0.00030 1.56987 0 19.975 19.702 19.481 19.145 19.168 1048580 0 -0301 431 QSO 208.86047 0.27724 3 1.52958 0.00048 1.52751 0 20.275 19.804 19.505 19.090 18.972 1048580 0 -0301 440 QSO 208.97458 0.19379 3 0.45913 0.00014 0.45974 0 20.191 19.539 19.374 19.097 18.942 4 0 -0301 441 QSO 209.61978 0.96987 3 3.90725 0.00044 3.90036 0 23.688 20.855 19.601 19.438 19.365 1 0 ALS -0301 448 QSO 209.63078 1.06089 3 0.40711 0.00028 0.40773 0 18.869 18.468 18.413 18.312 18.031 4 0 -0301 458 QSO 209.62326 1.15235 2 0.24313 0.00039 0.24376 0 18.575 18.591 18.215 17.938 17.784 1055748 0 -0301 464 QSO 209.32332 0.33695 2 0.28317 0.00016 0.28359 0 20.982 19.828 18.868 18.482 18.114 4096 0 -0301 465 QSO 209.36035 0.26176 3 0.66094 0.00017 0.66277 0 18.555 18.187 18.299 18.309 18.353 16 0 ALS -0301 474 QSO 209.32103 0.12642 3 1.74762 0.00387 1.75476 0 19.440 19.216 18.910 18.460 18.254 1048580 0 ALS -0301 480 QSO 209.26614 0.08770 3 1.01120 0.00394 1.01135 0 19.046 18.916 18.702 18.765 18.830 1048580 0 -0301 501 QSO 209.78339 0.45890 2 0.25665 0.00031 0.25571 0 19.230 18.846 18.410 18.172 17.947 4 0 -0301 513 QSO 209.79042 0.30452 3 1.24900 0.00364 1.25374 0 18.756 18.736 18.548 18.503 18.639 4 0 -0301 520 QSO 209.92328 0.14773 3 0.05027 0.00154 1.72908 0 19.451 19.194 19.105 18.796 18.800 1048580 0 ALS -0301 531 QSO 209.88223 0.91676 3 0.49384 0.00022 0.49475 0 18.678 18.445 18.557 18.441 18.420 1048580 0 -0301 550 QSO 210.12560 0.36906 3 0.25820 0.00034 0.25853 0 18.537 18.388 18.132 17.986 17.708 1048580 0 -0301 562 QSO 210.30006 1.18675 3 0.83602 0.00005 1.77402 0 20.435 20.010 19.757 19.273 19.261 36700160 0 -0301 564 QSO 210.27034 0.72576 3 0.23948 0.00008 0.66685 0 17.731 17.371 17.373 17.185 17.153 1056276 0 -0301 571 QSO 210.30016 0.63315 3 1.62053 0.00297 1.62273 0 19.029 18.802 18.805 18.565 18.643 1048580 0 -0301 572 QSO 210.14464 0.79263 3 0.36131 0.00021 0.36179 0 19.192 19.111 18.890 18.625 18.069 4 0 -0301 583 QSO 210.60066 0.50062 3 0.77159 0.00004 2.40740 0 19.596 19.048 18.848 18.767 18.612 4 0 -0301 585 QSO 210.72192 0.48924 3 1.93479 0.00580 1.95177 0 19.574 19.523 19.286 19.025 18.991 1048580 0 -0301 601 QSO 210.54515 1.02273 2 0.84053 0.00005 1.98234 1 19.865 19.672 19.644 19.565 19.318 34603008 0 -0302 024 QSO 213.07777 -0.54002 3 1.62941 0.00034 1.62941 0 19.430 19.094 19.022 18.746 18.709 1048580 0 -0302 027 QSO 212.99455 -0.65383 3 0.34270 0.00006 0.83475 0 19.449 18.951 18.662 18.637 18.397 4 0 -0302 039 QSO 212.98328 -0.34859 3 1.61429 0.00592 1.61429 0 18.957 18.821 18.681 18.526 18.596 1048580 0 -0302 045 QSO 212.44351 -0.98420 3 0.83669 0.00004 1.29827 0 18.925 18.765 18.315 18.345 18.527 1048580 0 -0302 046 QSO 212.39612 -1.07964 2 1.10476 0.00004 0.63273 0 19.628 19.370 19.369 19.182 19.044 4 0 -0302 066 QSO 212.81198 -0.61648 3 2.41259 0.00029 2.41419 0 20.606 19.568 19.594 19.547 19.306 1048577 0 -0302 086 QSO 212.23035 -1.25515 2 0.19517 0.00025 0.19508 1 20.526 20.069 19.354 18.975 18.738 4 0 -0302 089 QSO 212.13852 -1.08250 2 0.85524 0.00005 1.48872 0 19.002 18.584 18.421 18.271 18.397 1048580 0 ALS -0302 104 QSO 212.57693 -0.68318 2 1.04728 0.00004 1.07914 1 18.247 18.100 17.925 17.987 18.055 4 0 -0302 105 QSO 212.69884 -0.43189 2 0.46469 0.00010 1.49277 0 19.194 18.885 18.664 18.524 18.501 20 0 ALS -0302 114 QSO 212.62645 -0.70879 3 1.68185 0.00037 1.68280 0 19.706 19.577 19.562 19.210 19.291 1048580 0 ALS -0302 120 QSO 212.56401 -0.23858 3 1.86946 0.00430 1.86873 2 19.621 19.444 19.176 18.792 18.611 1048580 0 -0302 137 QSO 211.81732 -1.01737 2 1.03302 0.00006 0.38283 1 20.053 19.772 19.358 18.980 18.578 4 0 -0302 166 QSO 211.97472 -0.50518 2 0.16689 0.00029 0.16657 0 20.530 19.571 18.595 18.049 17.666 4160 0 -0302 167 QSO 211.98459 -0.55367 3 0.61528 0.00042 0.62319 0 18.911 18.417 18.417 18.292 18.275 4 0 ALS -0302 170 QSO 211.96175 -0.27962 3 2.20750 0.00022 2.20977 0 19.536 19.186 19.136 19.069 18.928 1048580 0 ALS -0302 176 QSO 212.03247 -0.38171 3 0.22716 0.00006 0.76754 0 19.546 19.155 19.065 19.153 18.929 1048580 0 -0302 186 QSO 211.93327 -0.43233 3 0.03127 0.00141 0.82218 1 19.726 18.982 18.973 18.892 18.613 4 0 -0302 208 QSO 211.79414 -0.82091 3 1.50668 0.00030 1.50217 0 19.417 19.185 18.992 18.707 18.815 3153428 0 ALS -0302 212 QSO 211.73135 -0.86369 3 2.42419 0.00038 2.42419 0 21.302 20.302 20.312 20.183 19.819 3145728 0 -0302 218 QSO 211.57300 -1.04926 3 1.94198 0.00430 1.93854 0 19.194 19.311 19.295 19.118 19.013 4 0 -0302 227 QSO 211.67770 -0.66941 3 1.94280 0.00138 1.94401 0 19.746 19.568 19.376 19.187 19.275 1048580 0 -0302 240 QSO 211.62544 -0.32765 2 0.10630 0.00018 0.10644 0 21.637 20.413 19.742 19.191 18.968 1 0 -0302 242 QSO 211.50169 -1.12370 2 0.28201 0.00005 0.28201 1 20.969 20.248 19.281 18.925 18.646 4 0 -0302 265 QSO 211.28790 -0.11459 3 0.98811 0.00030 0.99260 0 19.407 19.117 18.787 18.776 18.701 4 0 -0302 295 QSO 211.10179 -1.15636 3 2.29733 0.00048 2.30518 0 19.438 18.869 18.922 18.753 18.461 4 0 -0302 306 QSO 211.05052 -0.22361 0 0.13119 0.00033 1.23096 0 19.335 19.217 18.933 18.790 18.749 20 0 -0302 310 QSO 210.35132 -0.17144 3 0.71124 0.00029 0.70086 1 20.280 19.927 19.961 19.962 19.713 36700160 0 -0302 311 QSO 210.84747 -0.10192 3 2.45255 0.00054 2.46464 0 18.716 18.049 18.057 18.006 17.765 4 0 ALS -0302 365 QSO 211.13692 1.13839 3 0.63400 0.00025 0.63321 0 19.729 19.303 19.413 19.211 19.347 4 0 -0302 382 QSO 211.17169 0.66242 3 1.15853 0.00150 1.16017 0 19.468 19.263 18.906 18.734 18.561 1048580 0 -0302 390 QSO 211.23360 0.66496 2 2.06348 0.01371 0.55000 1 18.050 17.740 17.547 17.589 17.505 1048580 0 -0302 392 QSO 211.30376 0.08393 3 0.54146 0.00022 0.53920 0 19.661 19.212 19.205 18.827 18.710 4 0 -0302 406 QSO 211.63081 1.00092 3 1.56962 0.00024 1.57250 0 20.201 19.773 19.431 19.223 19.135 1048580 0 -0302 435 QSO 211.47528 -0.01025 3 0.16652 0.00385 3.56000 2 23.406 20.264 18.907 18.663 18.402 524288 0 BAL -0302 438 QSO 211.58447 0.17087 3 0.09876 0.00000 1.57498 0 19.419 19.191 19.147 18.954 19.028 4 0 -0302 451 QSO 211.83543 0.84908 3 1.21927 0.00026 1.21805 0 19.075 18.904 18.620 18.446 18.503 4 0 ALS -0302 458 QSO 211.87248 1.20508 3 3.00841 0.00584 3.01849 0 22.296 19.556 19.256 19.177 19.067 4 0 ALS -0302 482 QSO 212.06099 0.64414 0 0.00982 0.00013 0.54339 1 19.144 19.280 19.651 19.992 20.065 42991616 0 -0302 490 QSO 211.97723 0.22003 2 1.10438 0.00005 3.73044 0 23.298 21.388 20.191 20.176 20.020 1 0 -0302 508 QSO 212.39627 0.35232 3 0.53353 0.00044 0.53213 0 19.476 19.096 18.984 18.705 18.600 1048580 0 -0302 524 QSO 212.12978 1.14735 3 1.44812 0.00486 1.45787 0 19.162 19.010 18.852 18.783 18.809 1048580 0 -0302 525 QSO 212.37383 1.24059 3 1.50413 0.00633 1.51150 0 18.606 18.379 18.334 18.176 18.216 4 0 -0302 528 QSO 212.18242 0.79176 3 3.65861 0.00027 1.02217 1 19.670 19.370 18.976 18.931 18.985 1048580 0 -0302 532 QSO 212.32802 0.80673 3 1.99624 0.00063 2.00009 0 19.134 19.353 19.112 18.664 18.418 4 0 -0302 535 QSO 212.11520 0.80423 3 0.44186 0.00013 0.44217 0 19.317 19.064 19.175 18.876 18.603 4 0 -0302 542 QSO 212.78264 0.60200 3 1.70889 0.00867 1.72523 0 18.632 18.616 18.613 18.359 18.432 20 0 -0302 555 QSO 212.65973 0.28995 3 1.74834 0.00039 1.75635 0 19.229 19.274 19.188 18.923 18.894 4 0 -0302 595 QSO 212.90704 0.23923 3 0.98692 0.01052 1.03034 1 19.810 19.429 19.249 19.251 19.241 4 0 -0302 608 QSO 212.82997 0.86637 3 1.83014 0.00728 1.84027 0 19.749 19.541 19.401 19.100 18.987 1048580 0 -0302 612 QSO 212.84796 0.71472 3 2.26147 0.00029 2.26213 0 18.948 18.288 18.290 18.137 17.943 3145748 0 -0303 013 QSO 214.41260 -1.01270 3 0.32385 0.00009 1.09203 0 19.674 19.456 19.209 19.219 19.290 4 0 -0303 046 QSO 214.15913 -0.89798 3 0.55160 0.00028 0.55222 0 19.037 18.737 18.807 18.680 18.655 1048580 0 -0303 054 QSO 213.86772 -1.08751 2 0.02613 0.00007 0.37939 0 20.299 20.064 19.486 19.126 18.435 5124 0 -0303 068 QSO 214.03529 -0.62007 3 1.91744 0.00032 1.92115 0 19.425 19.402 19.424 19.138 19.024 1048580 0 -0303 094 QSO 213.94028 -0.73045 3 0.67447 0.00019 0.67229 0 21.742 21.029 20.548 20.087 19.709 33554432 0 QSO_FAINT only!? -0303 146 QSO 213.83124 -0.50600 2 0.13470 0.00027 0.13518 0 19.437 19.123 18.878 18.336 18.253 4 0 -0303 147 QSO 213.86984 -0.44257 3 1.15553 0.00229 1.15769 0 17.294 17.157 16.912 16.788 16.859 4 0 -0303 213 QSO 213.38481 -0.81935 3 4.14212 0.00169 4.13766 2 25.403 21.390 19.767 19.491 19.352 33554432 0 BAL -0303 250 QSO 213.06044 -0.79245 3 1.07238 0.00031 1.07304 1 23.950 21.541 20.091 19.968 19.872 33554432 0 -0303 275 QSO 213.36340 -0.24309 2 0.12539 0.00019 0.12544 0 20.360 19.810 19.065 18.631 18.461 4 0 -0303 282 QSO 212.95418 -1.24417 3 0.85804 0.00056 0.85715 0 19.636 19.306 19.095 19.110 18.811 1048580 0 -0303 287 QSO 212.61009 -0.83600 2 0.03109 0.00004 2.35803 0 18.476 17.979 17.820 17.722 17.469 4 0 ALS -0303 295 QSO 212.74901 -1.18702 3 0.83865 0.00228 0.84053 0 19.248 19.036 18.915 18.939 18.993 1048580 0 -0303 302 QSO 213.14449 -0.58334 2 0.12687 0.00021 0.12684 0 19.815 19.295 18.850 18.438 18.188 68 0 -0303 322 QSO 212.78038 1.22924 3 0.62644 0.00020 0.62646 0 19.027 18.603 18.569 18.353 18.369 4 0 -0303 328 QSO 212.68698 1.12653 3 0.95428 0.00042 0.95316 0 18.848 18.642 18.276 18.295 18.215 1048580 0 -0303 363 QSO 213.06242 1.12983 2 0.16353 0.00004 0.87906 0 18.979 18.735 18.724 18.887 18.870 4 0 ALS -0303 372 QSO 213.14738 0.68448 3 0.56470 0.00035 0.55968 0 19.166 18.664 18.646 18.479 18.410 4 0 -0303 400 QSO 213.31401 0.00900 3 4.06535 0.00022 4.07687 0 23.517 21.596 19.889 19.882 19.955 33554432 0 -0303 401 QSO 213.51303 0.98357 3 0.96731 0.00065 0.96765 0 19.414 19.173 18.860 18.874 18.810 1048580 0 -0303 402 QSO 213.26135 0.88994 2 1.01365 0.00005 1.91810 0 19.975 19.688 19.292 18.911 18.764 1048580 0 ALS -0303 414 QSO 213.29294 0.66903 3 0.56802 0.00050 0.56852 0 19.690 19.223 19.324 19.223 19.070 1048580 0 -0303 450 QSO 213.81447 1.21475 3 0.18542 0.00004 1.04105 0 19.294 19.055 18.966 18.818 18.691 1048580 0 ALS -0303 464 QSO 213.83260 0.39177 3 1.26334 0.00049 1.26027 0 18.761 18.679 18.518 18.372 18.413 3145748 0 ALS -0303 471 QSO 213.83154 0.09278 3 1.93387 0.00205 1.94013 0 19.287 19.246 19.204 18.994 18.808 1048580 512 -0303 477 QSO 213.79227 -0.11966 3 1.68161 0.00024 0.49865 0 21.469 20.831 20.375 19.655 19.407 1 0 -0303 489 QSO 214.08128 0.45916 3 3.53982 0.00030 0.98195 0 18.834 18.609 18.479 18.628 18.554 1048580 0 -0303 517 QSO 214.22639 -0.08893 3 0.96745 0.00040 0.96801 0 18.664 18.472 18.251 18.208 18.126 1048580 0 -0303 518 QSO 214.15602 0.56454 3 1.56506 0.00015 0.43224 0 19.642 19.347 19.119 18.642 18.208 5124 0 -0303 536 QSO 213.95712 0.89903 3 1.04425 0.00276 1.04088 0 17.729 17.363 17.051 17.165 17.072 1572868 0 ALS -0303 576 QSO 214.33850 0.95397 3 1.96879 0.00435 1.95992 0 19.607 19.633 19.657 19.299 19.093 1048580 0 ALS -0303 628 QSO 214.87154 0.26396 3 1.71379 0.00411 1.72304 0 18.812 18.700 18.751 18.552 18.448 1048580 0 -0303 636 QSO 214.80821 -0.01531 3 1.54589 0.00050 1.54801 0 19.027 18.796 18.703 18.504 18.516 1048580 0 -0304 006 QSO 215.79317 -0.54558 3 0.36547 0.00033 0.36590 0 19.997 19.570 19.245 19.049 18.549 1048580 0 -0304 016 QSO 215.97224 -0.27477 3 0.91151 0.00043 0.91364 0 19.251 19.150 19.083 18.920 18.690 1048580 0 -0304 018 QSO 215.96671 -0.11811 3 0.67987 0.00031 0.68006 0 19.260 18.878 19.048 19.068 18.976 1048580 0 -0304 064 QSO 215.45193 -0.85560 3 1.54223 0.00036 1.54428 0 19.791 19.476 19.343 19.101 19.214 4 0 -0304 081 QSO 215.63495 -0.51220 3 2.70554 0.00740 2.69814 2 21.336 20.071 19.745 19.510 19.183 1 0 BAL -0304 086 QSO 215.56062 -0.48762 3 1.56103 0.00232 1.56028 0 19.554 19.252 19.206 18.950 18.931 1048580 0 -0304 110 QSO 215.21028 -0.90720 3 0.42153 0.00004 1.45897 0 19.366 19.096 18.968 18.780 18.813 4 0 ALS -0304 123 QSO 215.20975 -0.43141 3 2.09057 0.00620 2.07991 2 21.157 20.281 19.442 18.836 18.315 4 0 BAL -0304 146 QSO 215.13858 -0.54259 3 2.68831 0.00033 2.68567 0 19.618 19.087 19.021 18.945 18.785 3145748 0 ALS -0304 153 QSO 214.95764 -0.11213 3 0.51588 0.00184 0.51247 0 19.329 18.919 19.036 18.883 18.765 1048580 0 strange profile -0304 162 QSO 214.83765 -0.61472 3 0.35015 0.00004 0.96921 0 18.705 18.547 18.344 18.362 18.239 1048580 0 ALS -0304 192 QSO 215.05153 -0.75995 3 1.29620 0.00566 1.30171 0 20.980 19.996 19.143 18.854 18.860 2097168 0 -0304 195 QSO 214.96504 -0.76832 3 1.93701 0.00028 1.93965 0 19.716 19.640 19.574 19.310 19.568 1048580 0 -0304 223 QSO 214.58470 -0.99826 2 0.25349 0.00019 0.25382 0 20.000 19.582 18.954 18.634 18.291 4 0 -0304 230 QSO 214.60333 -0.84172 3 1.60792 0.00027 1.61670 0 19.821 19.551 19.374 19.170 19.095 1048580 0 -0304 272 QSO 214.23642 -0.83925 3 0.66898 0.00023 0.66776 0 19.997 19.522 19.472 19.180 19.205 4 0 -0304 308 QSO 213.53873 -0.86890 3 0.82480 0.00209 0.82086 0 18.653 18.317 18.245 18.342 18.075 1048580 0 -0304 342 QSO 213.86725 1.11138 2 0.26553 0.00026 0.26563 0 19.021 18.774 18.520 18.321 18.008 1048580 0 -0304 381 QSO 214.39284 0.95838 3 2.39958 0.00017 2.40048 0 21.910 20.831 20.484 20.202 19.656 1 0 -0304 415 QSO 214.59547 -0.01515 3 2.03505 0.00146 2.03587 0 18.854 18.694 18.549 18.385 18.184 1048580 0 -0304 438 QSO 214.94603 0.98478 3 1.12229 0.00483 1.12806 0 18.733 18.599 18.296 18.241 18.663 4 0 -0304 441 QSO 215.04364 0.57222 3 0.93323 0.00194 0.92941 0 19.135 18.728 18.544 18.648 18.726 4 0 -0304 450 QSO 215.04837 0.62002 3 0.72833 0.00048 0.72779 0 19.017 18.457 18.371 18.328 18.561 4 0 -0304 457 QSO 214.90662 -0.02569 3 0.93420 0.00177 1.84740 0 19.265 19.162 19.227 18.998 18.873 4 0 -0304 468 QSO 215.20718 0.54692 3 1.59601 0.00032 1.60051 0 19.675 18.975 18.936 18.759 18.802 1048580 0 -0304 470 QSO 215.35054 -0.03794 3 1.15657 0.00122 1.16013 0 19.602 19.465 19.141 19.123 19.326 1048580 0 -0304 472 QSO 215.19162 -0.08833 3 2.18969 0.00043 2.19271 0 19.754 19.451 19.303 19.192 18.929 1048580 0 ALS -0304 480 QSO 215.22134 0.24723 3 1.49408 0.00085 1.49320 0 19.238 19.148 18.939 18.729 18.773 4 0 -0304 510 QSO 215.00032 1.09603 3 1.17548 0.00037 1.17656 0 19.316 19.253 19.067 19.042 19.038 4 0 -0304 514 QSO 214.98737 1.11461 3 2.18785 0.00030 2.20676 0 20.103 19.689 19.396 19.218 19.072 3145748 0 ALS -0304 536 QSO 215.72215 -0.03027 2 0.41975 0.00005 1.08121 0 19.823 19.529 19.045 19.024 19.015 1048580 0 ALS -0304 537 QSO 215.52126 -0.02243 3 1.85774 0.00069 1.85836 0 19.149 19.096 19.096 18.838 18.708 1048580 512 -0304 613 QSO 215.97287 0.22713 3 1.13564 0.00349 1.13544 0 19.727 19.176 19.029 18.939 18.853 4 0 -0304 630 QSO 215.52319 0.69534 3 2.14649 0.00029 2.14676 0 19.620 19.289 19.321 19.188 19.026 1048580 0 -0304 637 QSO 215.53799 0.91009 3 1.02768 0.00384 3.67353 0 22.086 20.422 19.728 19.928 19.512 1 0 ALS -0305 012 QSO 217.62593 -0.18752 2 0.10281 0.00031 0.10336 0 19.670 19.245 18.658 18.189 18.001 4 0 -0305 021 QSO 217.08580 -0.89673 2 0.86669 0.00004 1.51771 0 20.631 19.920 19.458 19.061 18.954 4 0 ALS -0305 039 QSO 217.01886 -1.03707 3 0.45893 0.00021 0.45911 0 21.968 21.551 20.682 20.208 19.640 33554432 0 QSO_FAINT only? -0305 062 QSO 216.56131 -0.73115 3 1.80224 0.00467 1.81679 0 19.211 19.014 19.079 18.908 18.834 1048580 512 -0305 072 QSO 216.87918 -0.90599 3 2.28007 0.00459 2.28052 0 18.949 18.411 18.387 18.411 18.263 1048580 0 ALS -0305 090 QSO 216.98273 -0.49752 3 3.34963 0.00024 3.36787 0 21.322 18.819 18.377 18.288 18.107 4 0 ALS, nice -0305 094 QSO 217.00081 -0.17412 3 0.33246 0.00019 0.33302 0 20.082 19.947 19.357 19.069 18.509 4 0 -0305 113 QSO 216.36044 -0.73933 3 0.56742 0.00029 0.56777 0 20.136 19.491 19.255 18.756 18.446 4 0 -0305 122 QSO 216.83589 -0.19168 3 1.35426 0.00037 1.35560 0 19.399 19.299 19.070 19.058 19.042 4 0 -0305 132 QSO 216.93124 -0.07042 3 0.30614 0.00017 0.30632 0 19.955 19.743 19.306 19.122 18.625 4 0 -0305 142 QSO 216.50092 -0.45010 3 0.16562 0.00258 1.07500 0 18.190 17.887 17.787 17.632 17.622 4 0 ALS -0305 151 QSO 216.40515 -0.61797 3 0.04690 0.00171 0.84667 1 22.192 24.879 20.473 20.109 19.468 33554432 0 QSO_FAINT only? -0305 186 QSO 216.12843 -0.97739 3 1.15679 0.00156 1.15789 0 19.321 19.111 18.754 18.730 18.686 1048580 0 -0305 200 QSO 216.04967 -0.99717 3 0.31992 0.00025 0.31968 0 21.220 20.870 20.372 20.098 19.626 1 0 -0305 205 QSO 216.17171 -0.12420 3 0.31799 0.00020 0.31828 0 18.764 18.507 18.257 18.321 17.704 1055748 0 -0305 211 QSO 216.20668 -0.38553 3 1.37542 0.00207 1.37419 0 19.390 19.253 19.156 18.911 18.983 1048580 0 -0305 225 QSO 215.97272 -0.96642 2 0.06090 0.00018 0.39102 0 21.922 21.196 20.379 19.843 19.374 1 0 -0305 226 QSO 216.20450 -1.14766 3 2.13023 0.00029 2.13375 0 18.868 18.535 18.588 18.355 18.195 1048580 0 ALS -0305 250 QSO 216.05313 -0.37054 3 0.36546 0.00020 1.79959 0 21.705 20.541 20.114 19.458 19.179 1 0 ALS -0305 289 QSO 215.77559 -0.85962 3 0.78517 0.00004 2.09055 0 18.854 18.465 18.335 18.264 18.078 4 0 ALS -0305 292 QSO 215.95604 -0.64584 3 1.28144 0.00378 1.28668 0 19.739 19.739 19.519 19.362 19.430 1048580 0 -0305 293 QSO 215.23177 -0.16116 3 2.18377 0.00033 2.18423 0 19.961 19.626 19.628 19.344 19.035 36700160 0 -0305 319 QSO 215.66817 -1.11280 3 0.71804 0.00035 0.71741 0 18.023 17.621 18.051 17.765 17.479 68 0 -0305 336 QSO 215.87495 0.69401 3 0.18476 0.00195 3.74139 0 23.533 20.937 19.690 19.661 19.518 1 0 ALS -0305 379 QSO 216.09901 0.24749 3 2.18352 0.00023 2.17879 0 20.533 20.128 19.927 19.605 19.260 1 0 ALS -0305 422 QSO 216.12679 0.91645 3 1.05801 0.00225 1.05916 0 18.198 18.073 18.056 18.070 18.176 1048580 0 ALS -0305 432 QSO 216.01035 1.02482 3 0.29462 0.00006 0.29543 0 19.883 19.708 19.373 19.072 18.538 4 0 -0305 444 QSO 216.56168 0.69985 3 0.89977 0.00146 0.89641 0 18.322 18.005 18.021 18.105 18.047 9437188 0 -0305 460 QSO 216.44128 0.37854 3 0.32571 0.00024 0.32532 0 19.096 19.045 18.915 18.699 18.176 3153428 0 -0305 475 QSO 216.94496 0.47908 3 1.25963 0.00035 1.26015 0 19.513 19.547 19.192 19.056 19.115 4 0 -0305 476 QSO 216.69920 0.46115 3 3.69743 0.00037 3.69480 2 22.360 20.714 19.552 19.549 19.391 1 0 ALS, BAL -0305 479 QSO 216.79089 0.24729 3 2.89520 0.00378 2.89253 0 20.299 18.823 18.649 18.433 18.366 4 0 ALS -0305 550 QSO 216.70325 0.88983 2 0.21936 0.00026 0.21955 0 19.466 18.667 17.975 17.514 17.352 4 0 -0305 556 QSO 216.71210 0.86410 3 0.36989 0.00005 1.32798 0 19.313 19.158 18.883 18.972 18.787 1048580 0 ALS -0305 586 QSO 216.52255 1.23611 3 0.84101 0.00000 0.84286 0 19.269 19.052 19.130 19.052 18.961 1048580 0 -0305 593 QSO 217.01379 0.94754 3 1.29466 0.00035 1.29652 0 18.493 18.449 18.302 18.091 18.209 1048580 0 -0305 601 QSO 217.62907 0.57783 3 2.00124 0.00437 1.99898 2 20.009 19.555 19.346 18.980 18.670 4 0 ALS, BAL -0305 616 QSO 217.78746 0.12365 3 0.60056 0.00005 1.85261 0 20.061 19.733 19.144 18.743 18.548 1048580 0 ALS -0305 632 QSO 217.25450 0.88180 3 2.15134 0.00030 2.15020 0 19.773 19.357 19.401 19.232 18.985 4 0 ALS -0306 016 QSO 219.11859 -0.64450 3 2.04752 0.00414 2.05956 0 18.765 18.684 18.601 18.385 18.174 1048580 0 -0306 025 QSO 219.10341 -0.48481 3 0.32519 0.00031 0.32511 0 18.558 18.337 17.993 17.875 17.453 68 0 -0306 033 QSO 219.09860 -0.41650 2 0.23795 0.00004 0.91326 0 19.612 19.280 19.140 19.181 19.028 1048580 0 ALS -0306 076 QSO 218.92784 -0.09497 3 0.96655 0.00036 0.96698 0 19.045 18.921 18.704 18.791 18.747 4 0 -0306 102 QSO 218.66960 -0.32936 3 1.55307 0.00047 1.55574 0 19.135 18.892 18.890 18.654 18.717 1048580 0 -0306 108 QSO 218.72694 -0.36479 3 3.25034 0.00045 0.85753 0 18.883 18.576 18.501 18.624 18.479 4 0 -0306 117 QSO 218.59436 -0.15844 3 1.17656 0.00030 1.17515 0 19.225 19.230 18.869 18.823 18.928 4 0 -0306 122 QSO 218.12189 -1.10448 3 0.86359 0.00005 2.08890 0 18.116 17.984 17.966 17.634 17.411 20 0 ALS -0306 126 QSO 218.12915 -0.87471 3 0.36175 0.00024 0.36226 0 19.871 19.485 19.047 18.856 18.390 4 0 -0306 128 QSO 217.92459 -1.22519 3 0.65840 0.00036 0.65687 0 17.803 17.548 17.719 17.609 17.661 4 0 -0306 129 QSO 217.93251 -0.83651 3 1.18915 0.00928 1.18981 0 18.615 18.377 18.155 18.036 18.041 4 0 ALS -0306 137 QSO 218.18520 -0.98753 3 1.02477 0.00077 1.02267 0 17.948 17.656 17.393 17.392 17.417 3153428 0 ALS -0306 138 QSO 217.99318 -0.71777 2 0.28086 0.00005 1.33361 0 19.354 19.286 19.132 18.947 18.981 4 0 -0306 166 QSO 218.09625 -0.02121 3 0.50968 0.00047 2.44993 2 23.088 21.176 20.602 20.263 19.570 1 0 BAL -0306 173 QSO 218.13000 -0.62855 3 0.91208 0.00201 1.81438 0 21.856 20.936 20.657 20.263 20.030 1 0 ALS -0306 176 QSO 218.23065 -0.51923 2 2.06143 0.00524 2.06347 1 19.423 19.102 19.033 18.910 18.622 4 0 ALS, 1/2 spec -0306 188 QSO 217.85915 -0.59092 3 1.29373 0.00129 1.29246 0 19.497 19.680 19.248 19.211 19.324 4 0 -0306 192 QSO 217.78687 -0.25307 3 1.34226 0.00971 1.34917 0 19.408 19.333 19.180 19.206 19.184 1048580 0 -0306 214 QSO 217.75690 -0.71434 3 0.33342 0.00024 0.33420 0 19.402 19.067 18.947 18.969 18.140 4 0 -0306 218 QSO 217.82028 -0.77716 3 2.19485 0.00017 2.20585 0 19.655 19.219 19.160 19.165 18.883 1048580 0 ALS -0306 221 QSO 217.59361 -0.34588 3 2.53190 0.00025 2.53078 2 21.965 20.701 19.891 19.587 18.907 1 0 BAL -0306 225 QSO 217.72516 -0.60761 3 0.17453 0.00303 3.70000 2 24.406 22.165 20.180 19.444 18.870 33554432 0 BAL, wow -0306 242 QSO 217.52298 -1.22270 3 0.60703 0.00132 0.60580 0 20.090 19.453 19.511 19.182 19.105 1048580 0 -0306 258 QSO 217.53825 -0.88868 3 0.81492 0.00115 0.80935 0 18.965 18.521 18.157 18.003 17.777 20 0 -0306 259 QSO 217.45277 -1.21453 3 1.49292 0.00392 1.50266 0 20.930 20.101 19.394 18.849 18.588 2097168 0 -0306 279 QSO 216.89104 -0.17829 3 1.55531 0.00042 1.55831 0 18.148 17.847 17.759 17.553 17.468 1048580 0 ALS -0306 294 QSO 217.30716 -0.73807 3 0.80888 0.00036 0.80936 0 19.550 19.109 19.049 19.034 18.888 1048580 0 -0306 305 QSO 216.86105 -0.33056 2 0.22138 0.00004 0.22217 0 20.268 20.201 19.354 18.827 18.519 5124 0 -0306 313 QSO 216.76125 -0.22914 3 0.75320 0.00014 0.75257 0 20.707 20.245 20.149 20.296 19.744 42991616 0 -0306 316 QSO 216.48495 -0.30522 3 1.14697 0.00033 1.14818 0 19.165 18.881 18.711 18.647 18.539 4 0 -0306 317 QSO 216.74405 -0.34899 3 0.62827 0.00119 0.62874 0 17.204 16.877 17.014 16.982 16.986 4 0 -0306 320 QSO 216.59737 -0.35387 3 2.63887 0.00019 2.63894 2 20.863 19.527 19.421 19.434 19.083 1 0 BAL -0306 428 QSO 217.47705 0.39099 3 1.99476 0.00141 1.99311 0 19.605 19.568 19.427 19.122 18.993 1048580 0 ALS -0306 436 QSO 217.45901 0.05393 3 1.26482 0.00077 1.26703 0 19.388 19.330 19.064 19.076 19.245 4 0 -0306 445 QSO 217.95589 1.24164 3 1.09442 0.00040 1.09403 0 18.515 18.363 18.259 18.294 18.417 1048580 0 -0306 461 QSO 217.74521 0.58485 3 0.37023 0.00039 0.37339 0 20.514 19.900 19.234 18.877 18.408 4 0 -0306 479 QSO 217.80447 0.50087 3 1.07611 0.00401 1.07727 0 19.742 19.549 19.240 19.287 19.031 35127296 0 ALS -0306 490 QSO 217.85016 0.38409 3 1.94832 0.00030 1.95175 0 19.396 19.361 19.386 19.150 19.100 1048580 0 -0306 512 QSO 218.07515 0.42486 3 1.70840 0.00793 1.71853 0 21.649 20.544 19.889 19.247 19.161 1 0 ALS -0306 534 QSO 218.32780 0.76279 3 1.17628 0.00046 1.17514 0 19.819 19.552 19.200 19.170 19.188 4 0 -0306 540 QSO 218.31827 0.86268 3 2.76125 0.00024 2.75290 0 21.939 20.439 19.874 19.418 19.245 1 0 ALS -0306 546 QSO 218.28087 0.55531 3 2.73779 0.00023 2.74163 0 20.557 19.330 19.350 19.306 19.081 34611200 0 ALS -0306 601 QSO 218.65216 1.08951 2 0.86864 0.00006 2.20374 0 19.831 19.422 19.437 19.264 19.051 1048580 0 ALS -0306 628 QSO 219.17188 0.26636 3 1.86306 0.00205 1.86713 2 19.225 19.009 18.795 18.513 18.546 1048580 0 ALS, BAL -0306 634 QSO 219.26718 0.11807 3 0.13805 0.00006 0.14021 0 17.877 18.036 18.016 17.478 17.647 7172 0 -0306 640 QSO 219.00661 0.34499 2 0.27972 0.00004 1.25156 1 18.730 18.528 18.392 18.365 18.489 4 0 1/2 spec, ALS, z>0.7209 -0307 002 QSO 220.38925 -1.21999 3 2.08204 0.00051 2.09157 0 20.434 20.380 20.405 20.205 19.969 34603008 0 -0307 011 QSO 220.73694 -0.75029 3 2.21690 0.00040 2.22305 0 19.649 19.027 18.715 18.337 18.075 4 0 ALS -0307 025 QSO 220.74962 -0.62359 3 1.81503 0.00236 1.82101 0 17.896 17.867 17.897 17.640 17.615 4 0 -0307 073 QSO 220.43623 -0.27294 3 1.91451 0.00025 1.92628 0 19.442 19.205 19.152 18.954 18.748 1048580 0 ALS -0307 089 QSO 219.78131 -1.10465 3 1.82121 0.00024 1.82121 2 20.036 19.642 19.293 18.885 18.676 4 0 BAL, ALS -0307 091 QSO 219.81874 -0.77531 3 0.59032 0.00050 0.58892 0 18.914 18.601 18.738 18.632 18.650 1048580 0 -0307 116 QSO 220.10071 -0.17736 3 1.40882 0.00287 1.41042 0 19.455 19.402 19.095 18.930 18.891 1048580 0 -0307 128 QSO 219.63959 -1.23712 3 0.57096 0.00038 0.57157 0 18.239 17.890 17.981 17.874 17.954 4 0 -0307 156 QSO 219.87303 -0.18847 3 0.35116 0.00025 0.35116 0 19.830 19.567 19.214 18.957 18.240 4 0 -0307 166 QSO 219.69809 -0.13484 2 0.10455 0.00006 0.10381 0 19.076 18.588 18.011 17.486 17.290 5184 0 -0307 175 QSO 219.67407 -0.66200 3 1.83611 0.00070 0.57170 1 20.188 20.094 19.731 19.906 20.178 42991616 0 1/2 spec -0307 204 QSO 219.45090 -1.24341 3 1.80271 0.00024 1.80257 0 20.500 20.587 20.452 20.017 19.905 33554432 0 -0307 219 QSO 219.25505 -1.07168 2 0.28564 0.00031 0.28607 0 19.952 19.561 19.004 18.752 18.399 4 0 -0307 223 QSO 219.21486 -0.63765 3 1.74939 0.00179 1.77158 0 19.704 19.525 19.547 19.369 19.439 34603008 0 -0307 230 QSO 219.36586 -0.39543 2 0.13810 0.00059 0.13352 0 19.633 18.927 18.194 17.605 17.481 2097216 0 -0307 243 QSO 219.20911 -1.20781 3 1.67559 0.00232 1.68432 0 18.683 18.631 18.603 18.316 18.309 1048580 0 -0307 258 QSO 219.18777 -0.86403 3 1.27339 0.00117 1.27339 0 18.792 18.892 18.387 18.346 18.474 4 0 ALS -0307 273 QSO 219.07909 -0.44805 3 1.51329 0.00166 1.51252 0 19.645 19.428 19.232 18.991 19.055 4 0 -0307 287 QSO 219.03069 -1.20737 3 1.52648 0.00031 1.52648 0 19.765 19.615 19.466 19.233 19.176 1048580 0 ALS -0307 308 QSO 218.51964 -0.67485 3 1.37801 0.00397 1.38150 0 19.209 19.022 18.747 18.606 18.581 1048580 0 -0307 319 QSO 218.71971 -0.47446 3 2.23969 0.00044 2.25026 0 19.388 19.098 19.037 18.987 18.763 3145748 0 -0307 359 QSO 218.58405 0.58012 3 0.97970 0.00257 0.98345 0 19.777 19.317 19.073 19.162 19.048 1048580 0 -0307 368 QSO 219.09140 1.16683 3 0.49529 0.00021 0.49529 0 19.707 19.575 19.336 19.311 19.390 1048580 0 -0307 378 QSO 219.11581 0.78213 3 2.16386 0.00030 2.15423 0 21.673 21.311 20.831 20.296 19.898 33554432 0 -0307 392 QSO 218.94388 0.07122 3 1.30751 0.00040 1.30955 0 19.721 19.559 19.223 19.161 19.121 1048580 0 -0307 400 QSO 219.04205 0.00379 2 0.08634 0.00061 0.46654 0 19.449 19.067 18.949 18.750 18.686 4 0 ALS -0307 436 QSO 219.08353 -0.02027 3 0.58214 0.00048 0.58235 0 19.644 19.303 19.463 19.235 19.231 34603008 0 -0307 443 QSO 219.49194 1.18878 0 0.15799 0.00004 2.04218 2 20.212 19.562 19.080 18.859 18.564 1048580 0 BAL -0307 445 QSO 219.54076 1.24463 3 1.84739 0.00062 1.85325 0 19.706 19.592 19.631 19.296 19.184 1048580 0 -0307 464 QSO 219.66519 0.44107 3 1.96242 0.00000 1.96714 0 19.354 19.057 19.001 18.946 18.858 1048580 0 ALS -0307 467 QSO 219.58197 0.47185 3 1.26114 0.00040 1.26131 0 18.563 18.570 18.454 18.463 18.476 1048580 0 ALS -0307 478 QSO 219.50540 0.36111 3 1.58188 0.00026 1.58771 0 19.755 19.314 19.176 18.952 19.001 1048580 0 ALS -0307 493 QSO 219.88287 0.08118 3 1.40558 0.00046 1.40681 0 18.114 18.012 17.907 17.840 17.878 4 0 ALS -0307 511 QSO 220.03645 0.27509 3 1.50502 0.00055 1.50785 0 20.902 19.959 19.225 18.692 18.565 2097168 0 ALS -0307 545 QSO 220.15025 0.44410 3 0.48439 0.00029 0.48512 0 19.818 19.572 19.490 19.346 19.254 34603008 0 -0307 554 QSO 220.12810 0.28122 3 0.64208 0.00030 0.64362 0 22.220 21.223 20.764 20.134 20.010 1 0 -0307 575 QSO 220.41513 0.88059 3 2.13911 0.00052 2.13340 0 18.982 18.677 18.431 18.170 17.933 1048580 0 ALS -0307 588 QSO 220.28770 0.25127 3 1.57275 0.00109 1.57677 0 19.810 19.367 19.248 19.030 18.923 4 0 -0307 601 QSO 220.63220 1.18203 2 0.79350 0.00009 4.50000 0 23.966 23.127 21.096 20.142 19.853 2097153 0 ALS -0307 615 QSO 220.69820 0.92557 2 0.24267 0.00030 0.24269 0 19.841 19.574 19.091 18.737 18.529 4 0 -0307 617 QSO 220.55959 0.96098 3 0.60376 0.00063 0.60099 0 18.768 18.433 18.528 18.354 18.394 4 0 ALS -0307 640 QSO 221.12593 0.16369 3 0.63018 0.00056 0.62964 1 19.568 19.275 19.291 19.129 19.107 4 0 1/2 spec -0308 006 QSO 222.58070 -1.07476 3 1.61254 0.00213 1.61823 0 19.451 19.253 19.258 19.056 19.034 1048580 0 -0308 014 QSO 222.65929 -0.96688 3 1.71313 0.00369 1.71737 0 20.027 19.762 19.775 19.426 19.431 34603008 0 -0308 017 QSO 222.51949 -0.94625 3 1.71966 0.00244 1.71790 0 20.416 20.334 20.352 20.020 19.955 34603008 0 -0308 043 QSO 222.37706 -0.79622 3 0.25356 0.00005 0.25332 0 18.082 17.954 17.641 17.467 17.217 1048596 0 -0308 058 QSO 222.14505 -1.07960 3 0.81916 0.00044 0.81966 0 20.133 19.632 19.610 19.746 19.451 42991616 0 -0308 070 QSO 222.68927 -0.73342 3 2.06577 0.00237 2.06385 2 18.970 18.759 18.639 18.449 18.177 1048580 0 -0308 073 QSO 222.84364 -0.56143 3 0.37609 0.00000 0.37733 0 20.920 20.116 19.363 18.981 18.388 16 0 -0308 075 QSO 222.87639 -0.47517 3 1.56863 0.00037 1.56981 0 20.426 20.104 20.125 19.845 20.010 34603008 0 -0308 085 QSO 222.13193 -1.21087 3 2.06982 0.00052 2.06890 0 19.511 19.230 19.129 19.032 18.846 4 0 -0308 100 QSO 221.99350 -0.84870 2 1.02103 0.00013 3.78000 0 24.309 21.143 19.721 19.462 19.226 1 0 ALS -0308 115 QSO 222.84592 -0.10721 2 0.13836 0.00037 0.13861 0 19.448 18.910 18.306 17.870 17.650 68 0 -0308 127 QSO 221.57231 -1.02533 4 4.16239 0.00046 4.16239 0 24.258 21.329 19.705 19.219 19.037 1 0 ALS -0308 131 QSO 221.49811 -1.22157 3 1.79653 0.00477 1.80116 0 18.600 18.439 18.263 17.911 17.845 20 0 ALS -0308 141 QSO 222.05212 -0.51098 3 0.31914 0.00035 0.31932 0 19.397 19.283 18.952 18.749 18.168 7172 0 -0308 165 QSO 221.89688 -0.54180 2 0.21707 0.00029 0.21721 0 19.956 19.538 19.004 18.593 18.479 1048580 0 -0308 170 QSO 221.81421 -0.56770 3 1.24199 0.00049 1.24440 0 19.808 19.293 18.745 18.639 18.552 1048580 0 ALS -0308 181 QSO 221.69322 -0.52882 3 0.69893 0.00038 0.69626 0 18.307 17.908 18.014 18.051 17.940 1048580 0 -0308 185 QSO 221.53857 -0.44351 3 2.77143 0.00031 2.76875 0 22.936 20.291 20.140 20.118 19.644 1 0 -0308 190 QSO 221.57954 -0.80771 3 1.25831 0.00040 1.25565 0 19.652 19.475 19.100 19.040 19.090 1048580 0 ALS -0308 192 QSO 221.43593 -0.28750 3 1.77694 0.00514 1.79472 0 18.229 18.188 18.212 18.024 18.019 1048580 512 ALS -0308 207 QSO 221.40129 -1.17615 3 1.59149 0.00040 1.59228 0 20.376 20.063 19.987 19.628 19.729 36700160 0 -0308 224 QSO 221.10716 -0.64978 3 1.63065 0.00224 1.63456 0 19.737 19.487 19.410 19.201 19.144 1048580 0 -0308 247 QSO 221.03180 -1.03132 4 4.52129 0.00048 4.52129 0 24.008 23.043 20.382 19.437 19.341 33554432 0 -0308 259 QSO 221.10851 -1.09612 3 0.56277 0.00139 0.56172 0 19.492 19.072 19.076 18.925 18.926 1048580 0 -0308 261 QSO 220.78401 -0.82039 3 1.37263 0.00044 1.37357 0 20.334 20.417 20.024 19.928 20.306 36700160 0 -0308 279 QSO 220.74962 -0.62359 3 1.81396 0.00350 1.82109 0 17.896 17.867 17.897 17.640 17.615 4 0 -0308 282 QSO 220.86176 -1.13668 3 1.06726 0.00179 1.06743 0 19.455 19.376 19.189 19.179 19.174 1048580 0 -0308 296 QSO 220.83220 -1.06598 2 0.29126 0.00024 0.29119 0 20.487 19.879 19.163 18.930 18.375 4 0 -0308 297 QSO 220.75516 -1.12863 3 1.72766 0.00030 1.72613 0 20.210 20.193 20.230 19.969 19.881 34603008 0 -0308 298 QSO 220.68431 -1.16214 3 1.92914 0.00218 1.92932 2 20.375 20.022 19.627 19.185 18.919 1048580 0 BAL -0308 332 QSO 220.84695 1.09746 3 1.17325 0.00041 1.17155 0 19.596 19.376 19.100 19.047 19.110 4 0 ALS -0308 340 QSO 220.63422 0.51597 3 1.03195 0.00145 1.03211 0 19.852 19.716 19.404 19.423 19.398 35127296 0 -0308 344 QSO 220.39590 0.27313 3 1.84884 0.00231 1.84907 0 20.567 20.370 20.454 20.157 20.002 34603008 0 -0308 348 QSO 220.21211 0.15024 3 0.71019 0.00030 0.71026 0 19.271 19.053 19.009 18.923 18.816 1048580 0 -0308 368 QSO 220.99879 1.08491 3 0.57054 0.00050 0.57052 0 20.150 19.674 19.768 19.480 19.181 34603008 0 -0308 370 QSO 221.12268 1.18277 3 0.32838 0.00027 0.32869 0 20.566 19.776 18.830 18.600 17.662 1 0 -0308 374 QSO 220.97252 0.88333 3 1.08703 0.00035 1.08591 0 19.525 19.312 18.954 18.928 18.997 4 0 ALS -0308 380 QSO 221.13965 1.11150 3 1.34384 0.00054 1.34355 0 19.306 19.110 18.968 18.925 18.997 1048580 0 ALS -0308 399 QSO 220.81599 -0.09663 3 1.70394 0.00055 1.70544 1 20.448 20.268 20.228 20.035 20.189 34603008 0 low S/N -0308 409 QSO 221.19205 0.82788 3 0.73170 0.00053 0.73277 0 18.897 18.680 18.707 18.748 18.631 1048580 0 ALS -0308 424 QSO 220.92435 0.42287 2 0.26183 0.00025 0.26228 0 19.529 19.329 19.054 18.944 18.758 1048580 0 -0308 430 QSO 221.14502 0.55150 2 0.19506 0.00005 2.03348 0 19.783 19.516 19.312 19.091 18.890 3145748 0 ALS, BAL? -0308 445 QSO 221.67619 1.21748 3 2.08724 0.00019 0.72515 0 22.753 21.785 20.960 20.205 19.529 2097152 0 strange em ratios! -0308 452 QSO 221.60628 0.87490 3 1.05131 0.00043 1.05197 0 19.482 19.294 19.097 19.067 19.084 4 0 -0308 455 QSO 221.65378 0.78237 1 -0.00896 0.00085 0.72762 0 19.114 18.896 18.950 18.968 18.798 20 0 -0308 477 QSO 221.46312 -0.11401 3 0.62532 0.00040 0.62467 0 20.044 19.674 19.569 19.189 19.127 4 0 -0308 478 QSO 221.44240 0.10463 3 0.61170 0.00037 0.61221 0 19.225 18.841 18.929 18.734 18.727 4 0 -0308 480 QSO 221.60472 0.01148 3 1.01520 0.00054 1.01453 0 18.810 18.496 18.239 18.241 18.158 4 0 -0308 490 QSO 221.79480 0.37016 2 0.94443 0.00006 1.13066 0 19.567 19.204 18.907 18.739 18.604 1048580 0 -0308 492 QSO 221.77278 0.61480 2 0.09543 0.00031 0.09551 0 20.572 19.763 19.234 18.823 18.666 4 0 -0308 502 QSO 222.23628 0.25284 3 0.83284 0.00046 0.83178 0 19.227 18.947 18.896 18.926 18.758 1048580 0 -0308 510 QSO 222.15182 0.30484 2 0.13708 0.00006 1.21929 0 19.444 19.146 18.819 18.722 18.742 1048580 0 ALS -0308 513 QSO 222.28432 0.14007 3 1.63048 0.00892 1.65180 0 18.441 18.231 18.312 18.179 18.182 4 0 -0308 522 QSO 221.91740 1.09497 3 0.34188 0.00030 0.34242 0 18.812 18.631 18.531 18.611 17.945 4 0 -0308 523 QSO 221.94594 0.92169 3 0.29631 0.00050 0.29625 0 19.388 19.152 18.747 18.574 18.086 4 0 -0308 530 QSO 222.05568 0.65591 3 1.63051 0.00055 1.63245 0 19.567 19.218 19.122 18.898 18.784 3145748 0 ALS -0308 540 QSO 221.92905 0.90252 3 1.88807 0.00401 1.89242 0 19.292 19.189 19.189 18.981 18.906 1048580 0 -0308 549 QSO 222.51027 0.27482 3 0.10947 0.00238 0.95816 0 19.664 19.225 19.065 19.134 18.966 3145748 0 -0308 558 QSO 222.50244 0.21120 3 1.75737 0.00047 1.76023 0 19.477 19.332 19.231 18.887 18.865 1048580 0 ALS -0308 559 QSO 222.30627 0.40192 3 0.44058 0.00022 0.44125 0 19.638 19.335 19.106 18.931 18.862 1048580 0 -0308 589 QSO 222.70805 0.02900 3 1.96263 0.00105 1.96317 0 19.380 19.399 19.363 19.038 18.945 1048596 0 -0308 595 QSO 222.65265 0.62343 3 1.08035 0.00049 1.08028 1 18.113 18.053 17.878 17.882 17.956 1048580 0 ALS, 1/2 spec -0308 619 QSO 222.31166 0.76227 3 0.90989 0.00095 0.90922 0 19.752 19.730 19.707 19.855 19.656 42991616 0 -0308 631 QSO 222.98018 0.08943 3 0.80473 0.00005 2.01212 0 19.010 18.941 18.914 18.779 18.536 1048580 512 ALS -0309 009 QSO 224.57304 -0.68771 4 2.60865 0.00034 2.61630 0 19.606 19.000 18.972 18.901 18.713 1048580 0 ALS -0309 013 QSO 224.38945 -1.23586 3 1.60077 0.00138 1.60039 0 19.241 18.984 18.916 18.648 18.655 4 0 ALS -0309 029 QSO 224.76358 -0.38235 3 2.00766 0.00069 2.01334 0 19.444 19.274 19.069 18.875 18.681 1048580 0 ALS -0309 032 QSO 224.74980 -0.25122 3 1.64939 0.00017 0.48119 0 19.582 18.956 18.740 18.470 18.194 4 0 ALS -0309 042 QSO 224.34460 -1.13360 3 2.22634 0.00049 2.22799 0 18.557 17.985 17.965 17.934 17.817 7172 0 ALS -0309 052 QSO 224.34140 -0.62091 3 1.32440 0.00645 1.33595 0 20.447 19.895 19.454 19.374 19.236 36700160 0 ALS -0309 054 QSO 224.12888 -1.07271 3 1.22309 0.00037 1.22430 0 19.466 19.278 19.097 19.039 19.015 4 0 ALS -0309 079 QSO 224.46634 0.00317 2 0.18682 0.00030 0.18676 0 20.316 19.417 18.874 18.520 18.347 4 0 -0309 091 QSO 223.97919 -0.62040 3 1.94134 0.00034 1.93726 0 20.106 20.015 20.005 19.772 19.477 36700160 0 -0309 093 QSO 224.05499 -0.61470 3 1.75647 0.00291 1.76470 0 20.369 20.284 20.262 19.865 19.722 34603008 0 -0309 116 QSO 224.13188 -0.18728 2 0.89611 0.00008 0.13275 0 18.007 18.017 17.881 17.276 17.329 7172 0 -0309 133 QSO 223.65765 -0.61851 3 0.57650 0.00028 0.57579 0 19.733 19.305 19.247 19.055 19.074 1048580 0 -0309 135 QSO 223.78398 -0.75209 3 1.37382 0.00521 1.38106 0 18.243 18.219 17.885 17.809 17.811 4 0 ALS -0309 158 QSO 223.90155 -0.01168 3 1.40287 0.00124 1.40212 0 19.857 19.560 19.259 19.149 19.083 1048580 0 -0309 173 QSO 223.72789 -0.08732 2 0.33931 0.00007 1.41294 1 19.642 19.328 18.740 18.508 18.541 3145748 0 ALS, 1/2 spec -0309 185 QSO 223.49353 -0.58232 3 1.57932 0.00000 1.57786 0 19.892 19.670 19.440 19.119 19.058 1048580 0 -0309 189 QSO 223.40091 -0.54476 3 1.50810 0.00044 1.51053 0 19.305 19.115 18.899 18.601 18.576 1048580 0 -0309 219 QSO 223.53621 -0.80674 3 1.09326 0.00076 1.09552 0 20.462 20.302 20.058 20.129 20.133 42991616 0 -0309 241 QSO 223.21492 -1.04379 3 1.34647 0.00819 1.35479 0 19.499 19.058 18.805 18.679 18.694 1048580 0 -0309 250 QSO 223.25874 -1.09012 3 1.80608 0.00344 1.81304 0 18.303 18.301 18.206 17.930 17.921 4 0 ALS -0309 281 QSO 223.02853 -1.24412 3 1.35436 0.00051 1.35760 0 19.375 19.392 19.207 19.177 19.292 1048580 0 -0309 297 QSO 222.87056 -0.94882 3 2.09687 0.01280 2.12912 0 18.972 18.764 18.586 18.447 18.245 4 0 ALS -0309 303 QSO 222.46989 -0.74378 3 1.26912 0.00420 1.26989 0 19.285 19.218 18.773 18.895 18.937 9961476 0 -0309 306 QSO 222.41280 -0.25248 3 0.51435 0.00087 0.51438 0 19.618 19.229 19.097 18.833 18.674 1048580 0 -0309 308 QSO 222.50568 -0.14699 3 1.19614 0.00156 1.19525 0 18.945 18.798 18.448 18.429 18.460 1048580 0 -0309 325 QSO 222.84601 1.02958 3 1.30157 0.00580 1.30369 0 18.566 18.599 18.420 18.365 18.411 1048580 0 -0309 328 QSO 222.81378 1.23544 3 1.08399 0.00000 1.08744 0 19.324 19.192 19.045 19.110 19.208 1048580 0 -0309 342 QSO 222.49983 0.54039 3 1.70198 0.00169 1.70442 0 19.490 19.323 19.390 19.126 19.027 4 0 -0309 355 QSO 222.28432 0.14007 3 1.64019 0.01141 1.65546 0 18.441 18.231 18.312 18.179 18.182 4 0 -0309 357 QSO 222.30627 0.40192 3 0.44116 0.00025 0.44111 0 19.638 19.335 19.106 18.931 18.862 1048580 0 -0309 390 QSO 223.06689 0.31224 3 0.55099 0.00040 0.55582 0 20.294 19.906 19.895 19.529 19.383 34603008 0 -0309 391 QSO 223.09009 0.39995 3 0.45764 0.00024 0.45785 0 19.686 19.338 19.497 19.172 18.971 1048580 0 -0309 396 QSO 222.98018 0.08943 3 2.01218 0.00285 2.02208 0 19.010 18.941 18.914 18.779 18.536 1048580 512 ALS -0309 398 QSO 223.19385 0.58070 4 2.53788 0.00065 2.53788 0 20.672 20.230 20.156 20.153 20.181 34603008 0 -0309 406 QSO 223.32555 0.86368 3 1.26068 0.00160 1.26153 0 19.017 19.158 18.813 18.788 18.847 1048580 0 -0309 421 QSO 223.34909 0.46684 3 0.64391 0.00030 0.64183 0 20.964 20.908 20.668 20.258 20.205 35651584 0 -0309 422 QSO 223.40828 0.33630 3 1.85833 0.00059 1.85388 0 19.423 19.433 19.438 19.155 19.106 1048580 0 -0309 423 QSO 223.32271 0.57809 3 2.15398 0.00039 2.15548 0 19.207 19.014 18.866 18.686 18.445 4 0 -0309 427 QSO 223.37306 0.39933 4 2.52805 0.00063 2.54042 0 19.117 18.513 18.472 18.462 18.243 4 0 -0309 458 QSO 223.58920 1.07684 3 1.37405 0.00216 0.61858 0 22.788 21.436 20.783 20.179 19.978 1 0 -0309 464 QSO 223.53871 0.31061 3 1.44162 0.00448 1.44756 0 19.991 19.555 19.206 18.986 19.083 4 0 -0309 465 QSO 223.50639 0.13963 3 0.70258 0.00025 0.70277 0 19.210 18.837 18.882 18.939 18.777 1048580 0 -0309 469 QSO 223.67680 0.64766 3 0.39681 0.00038 0.39823 0 19.563 19.197 19.011 18.809 18.416 4 0 -0309 470 QSO 223.62360 0.68923 4 2.64248 0.00030 2.64816 0 20.502 19.402 19.332 19.353 19.073 1056769 0 ALS -0309 480 QSO 223.54964 0.06153 3 1.70659 0.00280 1.71076 2 19.612 19.410 19.363 19.148 19.043 4 0 BAL -0309 486 QSO 223.79768 0.36280 3 2.01130 0.00042 2.00562 2 19.727 19.454 19.394 19.221 19.118 4 0 -0309 499 QSO 223.69875 0.57675 3 1.91245 0.00031 1.91562 0 19.127 19.167 19.049 18.747 18.565 1048580 0 -0309 505 QSO 223.96556 0.45094 3 0.60158 0.00108 0.60090 0 17.896 17.509 17.627 17.606 17.668 1048580 0 -0309 514 QSO 223.91138 0.37725 3 0.43397 0.00046 0.43381 0 19.745 19.331 19.245 18.935 18.568 4 0 -0309 515 QSO 224.13928 0.09874 3 1.83669 0.00035 1.84046 0 20.219 20.241 20.270 19.801 19.526 36700160 0 -0309 542 QSO 224.14883 0.19739 4 2.38675 0.00044 2.39183 0 19.859 18.979 19.053 19.101 18.971 1056772 0 ALS -0309 558 QSO 224.14832 0.12598 2 0.18623 0.00006 0.18625 0 19.336 18.931 18.352 17.909 17.746 68 0 -0309 583 QSO 224.47522 0.61082 4 2.75399 0.00051 2.74870 0 20.509 19.265 19.073 18.952 18.815 4 0 ALS -0309 586 QSO 224.56345 0.65242 3 2.01802 0.00046 2.02003 0 19.450 19.219 19.227 19.081 19.013 20 0 ALS -0309 588 QSO 224.40752 0.12131 3 1.49369 0.00536 1.50506 0 19.900 19.247 19.273 19.066 19.174 4 0 ALS -0309 590 QSO 224.65854 0.40501 3 1.88759 0.00298 1.89445 0 18.990 19.020 18.964 18.607 18.603 1048580 0 ALS -0309 591 QSO 224.40060 0.21084 3 1.12498 0.00047 1.12556 0 18.788 18.705 18.476 18.427 18.468 1048580 0 -0309 592 QSO 224.67303 0.13250 3 1.58083 0.00039 1.58791 0 19.503 19.309 19.360 19.257 19.284 1048580 0 ALS -0309 609 QSO 224.41391 1.19588 3 0.88906 0.00049 0.89551 0 22.601 21.201 20.577 20.124 19.512 1 0 -0310 030 QSO 226.77971 -0.97947 3 1.25588 0.00043 1.25698 0 19.817 19.564 19.218 19.110 19.130 1048580 0 -0310 042 QSO 227.11040 -0.50749 3 1.65245 0.00077 1.65191 0 19.725 19.477 19.486 19.293 19.276 4 0 ALS -0310 057 QSO 227.10092 -0.10107 3 1.57785 0.00154 1.57856 0 19.574 19.114 18.846 18.574 18.538 4 0 -0310 104 QSO 226.31155 -1.23842 2 0.86617 0.00007 0.84779 0 19.309 19.209 19.266 19.406 19.295 42991616 512 ALS -0310 134 QSO 226.84196 0.00493 3 1.10031 0.00183 1.09950 0 19.075 18.882 18.701 18.694 18.816 1048580 0 -0310 164 QSO 226.16187 -0.31095 3 1.16170 0.00247 1.16490 0 20.048 19.491 18.978 18.840 18.685 4 0 -0310 170 QSO 226.11919 -0.33774 3 1.87190 0.00382 1.87508 0 18.947 18.732 18.590 18.321 18.270 1048580 0 ALS -0310 175 QSO 225.81075 -0.15163 3 1.69689 0.00068 1.69414 0 19.582 19.395 19.281 19.008 18.835 1048580 0 -0310 179 QSO 226.10640 -0.13422 4 2.84886 0.00030 2.83799 0 21.018 19.267 19.030 18.997 18.834 4 0 ALS -0310 200 QSO 225.99940 -0.99738 3 0.85986 0.00050 0.85901 0 18.385 17.987 17.830 17.694 17.502 4 0 -0310 214 QSO 225.69754 -0.41407 3 1.77723 0.00031 1.78140 0 19.963 19.529 19.316 18.956 18.931 1048580 0 ALS -0310 222 QSO 225.46220 -0.94112 3 0.65382 0.00047 0.65382 0 19.468 18.947 18.925 18.693 18.566 4 0 -0310 224 QSO 225.83012 -1.18868 3 1.52158 0.00044 1.52492 0 19.492 19.208 19.161 18.965 18.951 4 0 -0310 236 QSO 225.52953 -0.75395 3 0.43855 0.00043 0.43858 0 18.929 18.333 18.018 17.758 17.558 4 0 -0310 246 QSO 225.52776 -0.60192 3 2.19519 0.00042 2.20086 0 19.454 18.989 19.014 18.751 18.440 20 0 ALS -0310 260 QSO 225.18158 -0.03782 3 1.20034 0.00404 1.20690 0 19.733 19.482 19.027 18.977 18.868 1048580 0 -0310 264 QSO 225.42891 -1.18431 3 1.10344 0.00166 1.10721 0 19.170 19.047 18.779 18.797 18.822 4 0 -0310 267 QSO 225.33765 -1.04172 3 1.62991 0.00038 1.63154 0 19.940 19.523 19.315 18.947 18.833 4 0 -0310 274 QSO 225.27061 -1.12444 3 2.12952 0.00038 1.12560 0 20.341 20.173 20.105 19.844 19.433 36700160 0 -0310 275 QSO 225.28807 -1.25077 2 2.11097 0.00305 2.11387 2 20.277 19.874 19.461 19.234 19.041 1048580 0 BAL -0310 277 QSO 225.30992 -0.89472 3 0.35917 0.00058 3.25576 2 23.124 20.562 20.198 19.722 19.645 33554432 0 BAL -0310 279 QSO 225.18063 -0.97243 2 0.22128 0.00045 0.22130 0 19.794 19.473 18.807 18.365 18.156 68 0 -0310 283 QSO 224.81694 -0.22562 3 1.50832 0.00048 1.50914 0 19.494 19.321 19.171 18.914 18.833 20 0 -0310 299 QSO 225.07950 0.04695 2 0.37631 0.00008 0.37648 0 19.413 19.298 18.878 18.545 18.014 3145748 0 -0310 300 QSO 224.80717 0.03775 2 0.12352 0.00010 1.90379 2 19.495 19.053 18.904 18.733 18.573 1048580 0 BAL -0310 303 QSO 225.10916 -0.90787 2 0.28044 0.00042 0.28116 0 20.017 19.465 18.827 18.554 18.138 20 0 -0310 317 QSO 225.06454 -0.63892 3 2.29948 0.00028 2.30764 0 21.712 20.516 20.687 20.103 19.773 34603008 0 ALS -0310 322 QSO 224.68292 0.07946 3 0.31615 0.00033 2.41802 0 20.734 20.115 19.993 20.018 19.818 36700160 0 ALS -0310 324 QSO 224.75537 0.35660 3 1.98248 0.00241 1.98804 0 18.703 18.690 18.583 18.333 18.183 4 0 -0310 325 QSO 224.65854 0.40501 3 1.88478 0.00442 1.89619 0 18.990 19.020 18.964 18.607 18.603 1048580 0 ALS -0310 327 QSO 224.74237 0.49639 3 1.61311 0.00046 1.61443 0 19.319 19.113 19.042 18.842 18.774 1048580 0 ALS -0310 332 QSO 224.81044 0.11354 3 1.89558 0.00032 1.89595 0 19.232 19.399 19.535 19.158 19.040 1048580 0 -0310 336 QSO 224.73994 0.43943 3 1.54649 0.00224 1.54762 2 19.580 19.225 19.186 19.017 19.004 1048580 0 BAL -0310 347 QSO 224.99467 1.18344 3 1.24205 0.00483 1.24329 0 19.441 19.362 19.081 19.035 19.117 3145748 0 -0310 363 QSO 225.13972 0.56490 4 2.42575 0.00369 2.43399 2 19.094 18.567 18.246 18.213 18.109 4 0 BAL, ALS -0310 388 QSO 225.14235 0.84327 3 1.21942 0.00047 1.22145 0 19.580 19.523 19.295 19.308 19.367 35127296 0 -0310 393 QSO 224.92932 1.10042 3 0.24150 0.00007 2.09709 0 18.606 18.371 18.254 18.123 17.943 4 0 ALS -0310 402 QSO 225.27678 0.34593 3 1.00616 0.00046 1.00779 0 18.034 17.708 17.417 17.407 17.228 4 0 -0310 410 QSO 225.34773 0.32778 3 1.93007 0.00038 1.93066 0 18.357 18.156 18.152 17.903 17.748 1048580 0 ALS -0310 414 QSO 225.59212 0.15918 3 1.00538 0.00062 1.00433 0 18.806 18.569 18.245 18.231 18.288 4 0 -0310 422 QSO 225.77644 1.22939 3 1.51746 0.00000 1.51725 0 18.793 18.670 18.498 18.286 18.203 1048580 0 -0310 429 QSO 225.52031 1.17204 3 1.26562 0.00024 1.26402 0 19.288 19.068 18.628 18.431 18.298 1048580 0 ALS -0310 457 QSO 225.69431 0.09210 3 1.24138 0.00256 1.24767 0 19.733 19.581 19.143 19.130 19.221 4 0 -0310 470 QSO 226.01747 0.35694 3 1.55527 0.00316 1.55805 0 19.467 19.258 19.318 19.059 19.027 4 0 -0310 472 QSO 226.16589 0.15102 2 0.26857 0.00031 0.26896 0 20.562 20.085 19.075 18.598 18.147 4 0 -0310 477 QSO 225.88728 0.22088 3 0.00001 0.00000 0.68004 0 19.236 18.838 18.950 18.728 18.605 4 0 -0310 508 QSO 225.97176 0.97721 3 2.07628 0.00063 2.08515 0 18.379 18.181 18.070 17.958 17.741 1048580 0 ALS -0310 525 QSO 226.72894 0.66784 3 1.18036 0.00035 1.17986 0 18.906 18.927 18.553 18.518 18.670 1048580 0 -0310 529 QSO 226.62183 0.59532 3 0.36885 0.00023 0.36973 0 18.942 18.736 18.630 18.540 18.085 1048580 0 -0310 530 QSO 226.55461 0.48190 4 3.35796 0.00035 3.35216 0 21.513 19.325 18.897 18.767 18.566 4 0 ALS -0310 533 QSO 226.63232 0.08836 3 1.68792 0.00416 1.69125 0 18.404 18.264 18.244 17.948 17.973 1048580 0 ALS -0310 551 QSO 226.45169 1.13369 3 1.69075 0.00654 1.70150 0 18.445 18.353 18.392 18.204 18.279 1048580 512 -0310 557 QSO 226.32687 0.86768 3 -0.00058 0.00086 0.73451 0 18.763 18.262 18.309 18.195 18.108 1048580 0 -0310 560 QSO 226.36382 0.93983 3 0.64032 0.00046 0.64324 0 18.715 18.443 18.554 18.505 18.599 4 0 -0310 565 QSO 226.83308 0.48473 2 0.18193 0.00037 0.18229 0 20.500 19.412 18.299 17.929 17.850 17 0 -0310 627 QSO 226.75652 1.13485 3 1.18699 0.00234 1.19203 0 19.802 19.747 19.395 19.358 19.429 4 0 -0310 630 QSO 226.74286 0.72833 3 1.14642 0.00037 1.14675 0 19.145 19.025 18.975 19.011 18.861 1048596 0 -0310 637 QSO 226.70706 1.09040 3 1.54321 0.00036 1.54563 0 19.224 18.928 18.832 18.649 18.610 4 0 -0310 640 QSO 226.90074 0.95042 3 1.39122 0.00224 1.39257 0 19.251 19.190 18.909 18.842 18.860 1048580 0 -0311 001 QSO 228.31425 -0.43510 3 1.63558 0.00058 1.62842 0 19.582 19.246 19.135 18.851 18.966 1048580 0 -0311 009 QSO 228.41000 -0.40305 2 0.89549 0.00007 0.82205 0 20.324 19.834 19.221 19.041 18.811 1048580 0 -0311 026 QSO 228.55241 -0.05326 3 0.22802 0.00057 0.22764 0 19.164 18.810 18.376 17.965 17.823 4 0 -0311 036 QSO 228.52699 -0.00470 3 1.59674 0.00039 1.60375 0 19.232 18.918 18.809 18.569 18.544 1048580 0 -0311 043 QSO 228.12018 -1.20637 3 1.16410 0.00207 1.16687 0 18.465 18.359 18.103 18.049 18.105 4 0 -0311 081 QSO 227.71388 -1.15176 3 1.75902 0.00452 1.77018 0 18.909 18.825 18.886 18.655 18.689 4 0 -0311 106 QSO 227.97516 -0.36768 3 0.82176 0.00070 0.82079 0 19.904 19.359 18.993 18.851 18.671 4 0 -0311 131 QSO 227.81006 -0.53663 3 -0.00003 0.00000 1.15000 0 19.313 19.251 19.017 19.006 19.081 4 0 -0311 148 QSO 227.85727 -0.23336 2 0.24650 0.00006 0.24644 0 20.469 19.949 19.063 18.564 18.196 4 0 -0311 220 QSO 227.48419 -0.94462 3 2.17314 0.00037 2.17892 0 19.093 18.822 18.804 18.627 18.377 1048580 0 ALS -0311 265 QSO 227.37560 0.09563 3 0.97134 0.00142 0.96982 0 18.691 18.576 18.315 18.311 18.250 4 0 -0311 278 QSO 227.37779 0.15179 2 0.23040 0.00034 0.23078 0 20.190 19.705 19.187 18.801 18.732 4 0 -0311 318 QSO 226.87300 0.12071 3 1.72681 0.00093 1.72479 0 19.219 19.230 19.285 19.081 18.965 4 0 -0311 327 QSO 226.94170 1.12599 3 1.57958 0.00042 1.58852 0 18.901 18.650 18.604 18.457 18.477 4 0 ALS -0311 337 QSO 226.93042 1.22334 3 1.34358 0.00902 1.35685 0 18.014 17.952 17.539 17.435 17.402 4 0 ALS -0311 362 QSO 227.18126 1.12379 3 1.24231 0.00034 1.24159 0 18.865 18.821 18.595 18.509 18.596 1048580 0 ALS -0311 371 QSO 227.02873 0.93618 3 2.27063 0.00043 2.26339 0 18.990 18.557 18.445 18.409 18.185 1048580 0 ALS -0311 376 QSO 227.04330 0.96842 1 0.00043 0.00208 3.00672 0 21.325 19.180 19.022 18.781 18.718 4 0 ALS -0311 404 QSO 227.36766 1.18430 2 0.26366 0.00004 0.26365 0 20.774 20.361 19.528 19.133 18.819 4 0 -0311 443 QSO 227.60385 0.97884 2 0.07215 0.00038 0.07216 0 18.021 17.688 17.373 16.872 16.762 68 0 -0311 520 QSO 228.00818 0.36562 3 0.86104 0.00272 0.86367 0 19.191 19.009 18.971 19.078 18.860 20 0 -0311 526 QSO 227.73753 1.07325 3 0.63294 0.00253 0.63000 0 19.972 19.451 19.500 19.218 19.079 1048580 0 -0311 571 QSO 228.08685 0.79591 3 1.11625 0.00040 1.11716 0 19.173 19.253 19.151 19.186 19.404 1048580 0 -0311 601 QSO 228.40234 0.99815 3 1.45262 0.00365 1.46265 0 19.275 19.127 19.057 18.903 19.077 4 0 ALS -0311 634 QSO 228.54865 0.44220 3 1.50410 0.00057 1.50350 0 19.683 19.424 19.357 19.148 19.176 1048580 0 -0315 005 QSO 235.71751 -0.69403 3 0.86414 0.00067 0.86335 0 18.888 18.607 18.560 18.593 18.476 1048580 0 -0315 007 QSO 235.38655 -1.13245 3 1.73203 0.00037 1.72935 0 19.592 19.403 19.151 18.768 18.713 1048580 0 ALS -0315 016 QSO 235.59286 -0.81842 3 1.72305 0.00503 1.72638 0 19.928 19.624 19.502 19.216 19.093 1048580 0 -0315 019 QSO 235.66664 -0.74081 3 0.51765 0.00041 0.51896 0 19.243 18.896 19.003 18.816 18.728 1048580 0 -0315 027 QSO 235.93446 -0.24783 3 0.30217 0.00071 0.30208 0 17.837 17.798 17.782 17.790 17.360 4 0 -0315 034 QSO 235.76778 -0.12350 3 1.03532 0.00071 1.03438 0 18.241 18.031 17.797 17.809 17.738 1048580 0 -0315 067 QSO 235.54042 -0.43606 3 0.57337 0.00049 0.57414 0 20.021 19.527 19.500 19.175 18.978 4 0 -0315 073 QSO 235.56078 -0.34954 3 1.70220 0.00150 1.70458 0 19.504 19.231 19.079 18.742 18.637 4 0 ALS -0315 146 QSO 235.28110 -0.62113 3 0.75591 0.00035 0.75347 1 18.716 18.178 17.956 17.917 17.733 4 0 bad redu., BAL? -0315 150 QSO 235.21687 -0.30628 3 1.85942 0.00643 1.83925 0 20.059 19.737 19.566 19.176 18.994 1048580 0 -0315 172 QSO 235.10455 0.00685 2 0.20115 0.00035 0.20064 0 19.868 19.708 19.366 18.784 18.851 1048580 0 -0315 184 QSO 234.66574 -0.45048 3 1.61420 0.00434 1.61819 0 20.068 19.707 19.709 19.371 19.424 4 0 -0315 189 QSO 234.83736 -0.33141 3 1.71585 0.00246 1.71674 0 19.773 19.660 19.450 19.137 19.034 4 0 -0315 199 QSO 234.78114 -0.05995 2 0.21722 0.00052 0.21666 0 19.494 19.297 18.958 18.532 18.437 1048580 0 -0315 208 QSO 234.35748 -0.72953 3 1.13956 0.00049 1.13893 0 19.885 19.552 19.139 19.095 19.190 1048580 0 -0315 217 QSO 234.38832 -0.92712 3 0.54178 0.00017 0.54035 0 18.409 18.022 18.026 17.866 17.786 1048580 0 -0315 218 QSO 234.26535 -1.16071 3 1.48801 0.00134 1.49408 0 19.877 19.642 19.373 19.092 19.132 1048580 0 -0315 222 QSO 234.63264 -0.64450 3 1.39458 0.00198 1.39687 0 19.954 19.728 19.505 19.435 19.496 1048580 0 -0315 232 QSO 234.38141 0.08740 2 0.22271 0.00004 0.22279 0 19.685 19.424 18.752 18.342 18.158 4 0 -0315 270 QSO 233.92163 -0.27270 3 1.99098 0.00017 0.66549 0 19.986 19.427 19.339 19.227 19.061 1055748 0 -0315 272 QSO 234.28902 -0.51652 3 1.13417 0.00118 1.13492 0 20.001 19.621 19.197 19.155 19.047 1048580 0 -0315 288 QSO 233.78455 -1.18153 3 1.06830 0.00332 2.24844 0 21.710 20.935 20.535 20.096 19.617 1 0 -0315 306 QSO 233.27678 0.10978 3 0.59018 0.00000 0.59151 0 18.319 17.974 18.053 17.800 17.981 1048580 0 -0315 375 QSO 234.04982 0.81929 3 1.55703 0.00044 1.55672 0 19.871 19.639 19.460 19.217 19.191 1048580 0 -0315 383 QSO 233.87723 0.27895 3 0.87021 0.00259 0.87270 0 19.397 19.172 19.074 19.102 18.943 1048580 0 -0315 399 QSO 233.77255 0.22301 3 2.10579 0.01133 1.70000 1 21.621 21.218 20.757 20.100 20.041 35651584 0 low S/N -0315 408 QSO 234.43022 1.16302 3 1.19177 0.00313 1.19607 0 19.464 19.388 19.254 19.280 19.337 1048580 0 -0315 419 QSO 234.27480 0.92300 2 0.13624 0.00035 0.13663 0 17.876 17.447 17.049 16.643 16.590 7744 0 +ab -0315 421 QSO 234.06943 0.72341 3 0.67951 0.00029 0.67847 0 20.003 19.509 19.336 19.120 19.025 1048580 0 -0315 434 QSO 234.30734 0.35456 3 1.74924 0.00453 1.75656 0 19.705 19.281 19.165 18.899 18.822 4 0 ALS -0315 483 QSO 234.79652 0.43355 2 0.26493 0.00023 0.26510 0 19.026 18.734 18.284 18.182 17.767 7700 0 -0315 484 QSO 234.86821 0.62341 3 1.47861 0.00036 1.47384 0 19.367 19.342 19.092 18.929 18.961 1048580 0 -0315 503 QSO 235.10603 0.53052 3 0.68526 0.00033 0.68494 0 19.472 19.225 19.199 19.075 19.029 4 0 -0315 523 QSO 235.01256 1.18200 3 2.03196 0.00350 2.04230 0 18.965 18.862 18.729 18.490 18.251 4 0 ALS -0315 580 QSO 235.30365 0.84223 3 -0.00009 0.00000 1.13025 0 20.990 20.484 19.712 19.397 19.194 4 0 -0315 597 QSO 235.54225 0.36599 3 1.12064 0.00073 1.12458 0 18.809 18.660 18.463 18.466 18.504 1048580 0 -0315 598 QSO 235.64307 0.28440 3 1.80705 0.00342 1.81909 0 19.216 18.921 18.903 18.671 18.646 1048580 0 -0315 600 QSO 235.68834 0.22852 3 1.69388 0.00029 1.69397 0 18.911 18.750 18.676 18.392 18.288 1048580 0 -0315 605 QSO 235.52374 1.11142 3 0.04111 0.00300 0.83761 0 19.241 18.792 18.672 18.752 18.557 1048580 0 -0315 618 QSO 235.36241 0.87149 3 0.82690 0.00184 0.82545 0 19.371 18.974 18.883 18.969 18.786 1048580 0 -0315 633 QSO 235.85396 0.31686 3 1.74638 0.00041 1.75270 0 19.325 19.179 19.264 19.027 18.955 4 0 -0315 637 QSO 235.88492 0.27672 3 0.46119 0.00050 0.46292 0 19.560 19.131 19.073 18.788 18.581 1048580 0 diff --git a/templates/sky_residual_pca.fits b/templates/sky_residual_pca.fits deleted file mode 100644 index 1a00d6f6f..000000000 Binary files a/templates/sky_residual_pca.fits and /dev/null differ diff --git a/templates/spArchIndoUS.fits b/templates/spArchIndoUS.fits deleted file mode 100644 index bedf99a35..000000000 --- a/templates/spArchIndoUS.fits +++ /dev/null @@ -1,8591 +0,0 @@ -SIMPLE = T / conforms to FITS standard BITPIX = -32 / array data type NAXIS = 2 / number of array dimensions NAXIS1 = 5933 NAXIS2 = 117 EXTEND = T COEFF0 = 3.4842 COEFF1 = 0.0001 OBJECT = 'STAR ' NAME0 = 'A0 (19510)' NAME1 = 'A0IVn (25642)' NAME2 = 'A1III (225180)' NAME3 = 'A1Iae (12953)' NAME4 = 'A1V (95418)' NAME5 = 'A1m (78209)' NAME6 = 'A2II (39866)' NAME7 = 'A2Ia (14489)' NAME8 = 'A3Iae (223385)' NAME9 = 'A4 (G_165-39)' NAME10 = 'A4V (136729)' NAME11 = 'A4V (97603)' NAME12 = 'A4p (G_37-26)' NAME13 = 'A5II (34578)' NAME14 = 'A5Ia (17378)' NAME15 = 'A6IV (28527)' NAME16 = 'A8V (155514)' NAME17 = 'A9V (154660)' NAME18 = 'Am (78362)' NAME19 = 'B0.5Iae (185859)' NAME20 = 'B0.5Ibe... (187459)' NAME21 = 'B0IVe (5394)' NAME22 = 'B1Ve (212571)' NAME23 = 'B2.5V (175426)' NAME24 = 'B2.5Ve (187811)' NAME25 = 'B2III (35468)' NAME26 = 'B2IV-V (176819)' NAME27 = 'B2Iaevar (41117)' NAME28 = 'B2Ve (164284)' NAME29 = 'B2Vne (202904)' NAME30 = 'B2Vne (58343)' NAME31 = 'B3II (175156)' NAME32 = 'B3Ib/II (51309)' NAME33 = 'B3V (29763)' NAME34 = 'B3Ve (25940)' NAME35 = 'B5 (338529)' NAME36 = 'B5III (209419)' NAME37 = 'B5Ib (191243)' NAME38 = 'B5V (173087)' NAME39 = 'B6IIIpe (109387)' NAME40 = 'B6IV (174959)' NAME41 = 'B7IVe (209409)' NAME42 = 'B8III (220575)' NAME43 = 'B8IV (171301)' NAME44 = 'B8Ib (208501)' NAME45 = 'B9 (105262)' NAME46 = 'B9.5V+... (37269)' NAME47 = 'B9III (15318)' NAME48 = 'B9Vn (177756)' NAME49 = 'F0II (25291)' NAME50 = 'F0III (89025)' NAME51 = 'F0IV (81937)' NAME52 = 'F0Ib (36673)' NAME53 = 'F0V (90277)' NAME54 = 'F2III (89254)' NAME55 = 'F2V (33256)' NAME56 = 'F3/F5V (30743)' NAME57 = 'F5Ib... (17463)' NAME58 = 'F6II (61295)' NAME59 = 'F6III (61064)' NAME60 = 'F6Iab: (187929)' NAME61 = 'F6V (16673)' NAME62 = 'F8Ibvar (45412)' NAME63 = 'F8V (30562)' NAME64 = 'F8V (G_243-63)' NAME65 = 'F9IV (136064)' NAME66 = 'G0 (63791)' NAME67 = 'G0 (G_101-29)' NAME68 = 'G0.5IV (14214)' NAME69 = 'G0Ib (204867)' NAME70 = 'G0Va (143761)' NAME71 = 'G1V (95128)' NAME72 = 'G3Ib (58526)' NAME73 = 'G4V (32923)' NAME74 = 'G5/G6IVw (26297)' NAME75 = 'G5III+... (157910)' NAME76 = 'G5Iab: (20123)' NAME77 = 'G8V (101501)' NAME78 = 'G8V (75732)' NAME79 = 'G9IV (100030)' NAME80 = 'G9Ib (221861)' NAME81 = 'K0IIIa (57669)' NAME82 = 'K0IV (191026)' NAME83 = 'K0V (10780)' NAME84 = 'K1III (18322)' NAME85 = 'K1IVa (142091)' NAME86 = 'K1V... (25329)' NAME87 = 'K2III (115136)' NAME88 = 'K3III (101673)' NAME89 = 'K3Iab: (4817)' NAME90 = 'K3Ib... (17506)' NAME91 = 'K3V (32147)' NAME92 = 'K3p (165195)' NAME93 = 'K4III (136726)' NAME94 = 'K4Iab: (34255)' NAME95 = 'K5 (110281)' NAME96 = 'K5 (G_19-24)' NAME97 = 'K5III (111335)' NAME98 = 'K5III (120933)' NAME99 = 'K5Ve (118100)' NAME100 = 'M0III (168720)' NAME101 = 'M1 (204445)' NAME102 = 'M2III (169305)' NAME103 = 'M2Iab: (36389)' NAME104 = 'M3III (44478)' NAME105 = 'M4.5:III (123657)' NAME106 = 'M4II (175588)' NAME107 = 'M5III (221615)' NAME108 = 'M5Iab: (197812)' NAME109 = 'M6III (148783)' NAME110 = 'M7IIIevar (177940)' NAME111 = 'M8IIIe (84748)' NAME112 = 'O8/O9 (167771)' NAME113 = 'O8e (188001)' NAME114 = 'O9.5Iae (30614)' NAME115 = 'sd:F0 (G_84-29)' NAME116 = 'sdF3 (140283)' END ?+u?+Š?ßù?€ßŽ?‚i¾?ƒÞ‘?„r1?„(÷?ƒ—é?‚é;?›•?~šT?y ?ux?tp/?w:¬?|m‰? …?‚ü-?ƒŒÌ?ƒ?°?‚§:?a?5€?y•Q?u@Ì?uÌÑ?{Ô‘?úÄ?„Ô‰?…2i?ƒB?€N“?| ?{˜?}S?€r?€|Ü?Á?~1?}Z~?}A­?~)D?€Q?‚;?ƒ¦#?„6?ƒñ¨?ƒŒW?ƒ¢Y?„]¤?…lR?†?…Á¼?„) ?‚ -³?€”P?€m»?4Ö?â‚?gœ?~ŠÜ?x”`?tò¶?vl…?{G?~@0?}×È?|Jh?}b?€;Z?±3?¢?€:Ø?}!…?zûT?z¨?y3ó?v×ú?s¯E?r`­?táû?zdP?€I?û7?‚xC?‚ü?~e?ì?‚kÚ?ƒE™?ƒj¶?‚¤ù?p”?€Tq?~Qx?z¯Á?u§?p„“?m¤N?mž¶?o»¢?sCd?wË4?|\X?¤?~Ù?zI~?we?x±o?}¶?€6ô?€\l?~Œ?{??w•¯?t§¯?s›Ë?t}O?v'?wn~?xS?xê“?zô¶?~Ê™?Ðè?ƒÉ~?„›À?„wÍ?„X?ƒˆ_?‚ª\?Iò?}€?} ?|±?|Tö?}0Ù?~#{?ƒ?€Ïí?íÙ?‚°E?‚ó}?‚¼È?‚2u?–â?™?€|ý?€&Ñ?€ ?€ò?~ìš?|à?y4‡?wÎÕ?vÌ.?s—!?n€ú?k¡Ö?n{?v|?}Ý\?8Ð?x˜?€/?|‹?yÖ?z-?|Û»?€JB?ñÞ?ƒ8Î?„ ¯?„ªÃ?„Ùç?„ÀŒ?„iu?ƒŸ?û×?~/?wM(?o—à?ißF?h9?j»¶?oˆD?tW?x~?zç?|Ty?{ÁÅ?yžA?wÔ’?x5¡?zd®?{ôÌ?zû£?wöŸ?tˆó?q…E?o†Š?o¡-?q…»?rÞ?rzÆ?r…é?uÅ?{¿?€›?éq?â¬?"e?€$æ?~ér?>¯?€¢?äØ?‚ß?ƒEA?‚°3?€Ê?{üd?vØC?sá?rèÍ?ru+?qK?oºÝ?o„?q¯Í?t¿?u%H?rýä?qTÃ?s.t?wöY?|õ@?€§?€sû?€„?}XË?|`?{ë¨?|)?{‹û?y"…?t³z?ooå?kÖ9?kð—?oœ?r¼?rÔ?pû)?o64?n ª?m›?m½Š?mÛ¥?m ­?m?kù`?k#?l±¼?q ??u²?xš-?zcu?|gÇ?~÷´?€Ÿ?€É…?~ÂH?y—î?t¥Æ?ro4?sŸ\?vYÇ?w³(?v)?trì?sXE?sÎç?unÏ?w×_?z™Ã?|¯¡?|ìþ?{ˆS?zGt?zE*?zÓ?{RÝ?|,n?}=²?}š]?}D?|W\?{“Ç?zè ?zʬ?{cØ?{׋?zéb?x…‹?vao?vˆ&?xûO?{xä?{Ïé?yf -?tà†?oåõ?l§á?lK?n.ž?pó¶?sj®?tß–?u°p?w1²?z¸?}DÊ?~éú?~AŠ?{›S?wµô?t'°?s*£?u–?yÀ—?}BÖ?Cx?€6¢?€ŒÇ?€=}?~y?{$s?z"µ?{iN?}:3?~N„?~ï]?Œ%?›d?~OÈ?|ä?zUd?z‡>?{Ýì?|[ƒ?{'Ñ?yr…?xÁO?y_x?z¼‹?|”?|‘›?{λ?zŒÞ?y·?yCQ?xéŒ?y7?z¢—?|OD?}(l?}„D?~+ù?~€e?|ìå?x¶ß?rã¤?mÛj?kû ?m¨¶?pàŸ?s@ý?tHû?tÑs?u)?uû?uÁ?w$´?x¯‡?yŸ…?zVi?z0+?ww•?r{z?nym?n?.?qt?sÔ?sÓu?qyü?o?n?n}ä?pUu?s²v?wƒÍ?yÕ -?y4?uÍ?o`?h2?cä?d¦?j¹À?q•¿?u#j?uzb?u~Ê?wYj?zdw?|TŒ?{´R?x±?tU7?o~?j‰-?fi‹?eb®?iÒ?oÝl?vi?y•™?z6?xœ0?u,¹?pf?kê_?jYF?ls¦?o?n„M?k? ?i”ò?lŽ?qd¦?vØ™?zŸ ?{¿ü?yßP?uH2?ohž?k‘?jÏ¿?mžˆ?oêÞ?p=ò?pîu?t7?x¥?yˆ­?w†¢?t\‘?s`“?u/R?w>ý?wHk?u_y?rt"?o ‚?lt‘?ló´?q2Ÿ?vij?z¬b?| u?{Ú:?{8½?zY -?xŠ½?up?rA{?qÚ?r r?tûC?u¾?t9?q=?o5›?o:¢?qtT?tùT?x W?y¬Ó?y‰‰?xTL?vÇk?uŸ¤?uw2?vcÍ?wäP?y<¿?y¹[?xÁÆ?vOX?s^r?qUS?q Ž?rbf?tG?u—›?v'I?vŸ·?w–Õ?yË?z€H?{mþ?{BB?y}Ó?v_!?s¯j?s„L?u¡×?wÏÇ?xºb?x£´?wé¿?v`£?s±.?oþ?l?jÂB?jÇ#?k[û?lLi?n\?qg$?tŒÙ?w<¢?y4?yËZ?yŒ¾?xt]?vž?tq>?s44?sXl?t'?t-P?sNÅ?r5°?qj?p^Þ?nIC?k£?j\¸?kþÏ?o´—?rÑû?svX?r=d?q^??r:€?sö‡?u?u‡ú?u®?uC?sê‘?qÀ3?nÊ:?k?=?h.?fƒ2?fFÔ?g¶«?kSÀ?p ó?s?t„¼?sÊ}?rÕ?o¸Í?n<"?o,?q„”?sÀÿ?t2k?r¢[?o¶/?lSK?i.{?g/=?gR0?i Ç?je?jÑ?j ?h¢ì?gP?gtî?i‚?l~W?nÖb?oØý?p'À?p£q?qNM?qo?p® ?o»l?o{6?pn?pÞ ?pÙ`?mkÝ?d¶?ZØi?X˜ý?_JÒ?f›?iE`?i‰”?j¹F?mpÍ?p¦?ré–?rÖ£?pY ?m}ž?l›°?mÎK?nÆû?m{g?j`é?gƒK?fµ?h®»?lZÇ?oN«?pNÊ?p¨?qèš?s¿U?t1ª?r‘N?pÅ?n“?mt–?n×m?q³‚?t‡3?v -à?uÜV?tIç?r†/?r…5?uÏ?x??y ô?wŸê?u¤i?tŸ'?tÓË?u´?vT ?vP?uê›?tðg?s5?q·²?qvq?qàÝ?q™È?p(?nX?lPË?kÞû?l©?ml«?mˆÑ?m™Ò?mr?kˆR?f¦O?aë¤?`áõ?b˜Ø?c[ß?a\'?^}õ?]p?]¢±?]•"?^)7?`&É?b_«?c¢ó?dP?e&Ú?epB?c‘É?^ìu?Y]¶?W;ø?Zýh?`Ø?bª}?_\G?ZÕï?XT"?X=™?Y°4?[ù?][/?_Þ?b„d?c®²?bíý?aQî?_ñ?^F?^mZ?`]h?cùœ?g°?g‘À?f!?dM ?cƒW?cnZ?búú?a}n?` -ä?`0?`RÁ?^L(?[2¢?ZSM?[­â?\—$?[{¦?Xµ9?V–ò?X8 ?]iÐ?a®¼?a}?\<Ð?W!?UÐt?Xéw?]qB?`ˆ?aÑ?aöR?aRU?` b?`¥ò?aEÞ?aïn?aÄ^?_¯?[Xq?X£,?Z‰¹?_Š?cA¿?c¿–?bÖþ?bÇ?cŠË?c¯J?bÁË?asŸ?_Ðó?]$?[@w?Z¢Ä?[ér?]bÍ?]Øõ?]|¬?\±(?\‹l?]Ú¿?_œ×?`Äš?an€?b6é?c0È?c¼é?cÿ•?dÞ?fOf?g:Š?gf?f¨ý?f>+?e%?bæ¡?`•¬?_±!?`©?cY}?f¬#?h„\?h@–?g!P?f@ø?eÆý?e7?dÁ%?dí®?eX­?f>8?g»?hBL?g›š?fŒø?cõ:?`ç?bv?fØ£?hœÊ?fÂz?f½®?hÕ?eIå?^×Q?\´´?eg5?tþ8?~ôý?{Y'?p†Ø?mI©?wüa?ƒß ?‡˜~?ƒì…?v•?h‹S?mÉ?À?ŒQ/?‘¶ò?‰l?†»ˆ?u-ý?b*?]år?iYÀ?~Aã?‰“¯?gŽ?ŽÝì?ˆ«š?}.?jhA?g;C?yk±?‹T­?˜@î? yõ?¤n³?¤Á?žÖ?’w$?ƒ¾?l$A?\Ê -?cš?~©°?‘?Ÿ,[?¦j?¨=B?© -h?«*P?¬x?©è?¢Ì?”j??‚‹ -?d£?W?`È‚?wÐà?ŠEÄ?š¼¯?©¨?²“6?´ë¢?³m?±O®?¯Ž)?¬M#?¦¡?žêF?™?‘G{?„oÝ?mO?aûÝ?qþ=?Š< ?›‚?¨¢?²C¶?¸˜¥?ºoé?·?°†x?«¾E?¬W?¯Ã€?³Ú ?·P?Ζ¾?ËÊ?Æ ü?½ê„?³n?¦7A?–²¾?…›h?u’ë?}y™?¶°?¤®?´ðH?Á‚D?Êðú?Ñf ?Ôÿx?ÖÚ€?ØÚ$?Ü—â?áë|?æç¶?é ’?éUà?æ&H?᤾?Þk£?Ý3?Ý?ó?à‡]?æ{¸?êc]?è1G?á±I?Ýñß?à³[?ä{î?â2v?ÚV‡?ÓÔ?Ïè5?ζ?ËÚH?È¢?ÅüÙ?ÃÐ4?¼è.?°°™?¢<˜?’•r?…È?‚ ’?ŒU‚?œ?ª+™?µ¥¾?¿ ±?Èàž?Ô•²?ßc?æôa?ìvð?ð„&?ó?ôÕ?öH?õpq?ô"¡?õá.?úå—?ÿ®ø@E@‘“?ý?ø ó?õb’?ô&Ð?ñv—?ï­³?ô:É?ýÑË@¹@Õd@ÑK@!Õ@‘@Äø@¸@*B@m‹@NH@å?þ3B?û´Å?ýÁ»@Žh@þ?ýï#?ô ?é|?ço/?í&?òø?ðÃ0?ì‹?åTõ?Û‚?ÌJ?º>8?§üƒ?–Ùr?Žƒ}?—ÅÄ?®,¹?Ĺs?ÔtØ?Þ ñ?ä=ã?éJR?î¶?ó -?õ_?òQ°?ï ]?ðÐå?÷&?üÍñ@{@Îÿ@÷@AK@B«@Æ$@ k*@ æª@ "Û@ &@ ís@2)@¨’@ -ö @ 2Ã@B¼@!D@ Ä@ ‘‹@ *@ Z—@ wl@ ú;@ ¶Y@+!@ä<@ ê@ -áõ@ ù@Ô…@½?ô…?Õ“ ?´xC?­¼Œ?ÊiÒ?òs7@@ }@k>@4(@e@áJ@Éœ@pZ@ü@ÿh@™T@jK@ @;è@ˆ@Ó@X÷@¼M@ªG@ã@¬•@fU@ I@ Nõ@ §@ - Ú@”×@ˆÉ@©¢@Œ ?þ®?ô¹”?âi?ÄêÖ?žáB? ð?p!û?Š–|?ª»L?ÉÀp?à±Ò?ðå?ûØU@µù@ f@â‹@¦N@ ka@ -éì@ 4@ `'@a@h¥@­3@è2@á@Ç‚@£Œ@W—@²@ÎÛ@Ç@ÖK@nõ@£¶@Ú€@MÃ@NF@ò@M@ÇY@Ï@\@Šñ@#€@þo@¸é@KÝ@@B @&þ@Ìm@'k@ô@Ýà@0ê@×Y@©f@² @°Œ@ùk@Ä¿@Ѭ@C]@£Ñ@4â@Ø@²À@êí@'„@å&@9™@­@~µ@Ž­@£U@º9@V@@¥@·^@à.@¤@‡W@_Œ@@ìý@( @QÐ@lñ@cí@r'@)}@ý@†¹@Ãû@bû@4ã@>@;¥@°·@Âk@SZ@ý@5’@¦;@51@à%@fü@äI@Ý @·Å@ Û@e9@H@Ãí@÷B@´D@x½@ã@Õ„@­@lÓ@l@Œ@K’@;V@t¹@|º@âY@ì¯@¹@|^@4÷@»ÿ@p@rU@Qá@ êæ@ ¼°@ |“@ «@1@…°?þŽ[?ôÀ¿?ç%’?Òþ¿?¹Þ?§ r?©cT?¿xð?Øçµ?ëh?÷e©?ÿÜÊ@ã@ì@¶{@jµ@ ýk@ 1x@ \É@ jÒ@L@)ª@Ƨ@ 6@C%@¬è@©@‹}@’@^@z_@vL@ºH@#Y@òi@Ø@+_@ƒ@º@w¶@¬7@0@œñ@D¦@6@9×@À½@ت@­@¢Ú@Ì@M¯@Í@Êm@é@°á@L@„D@6=@dµ@vy@þx@õ=@ã8@àr@Ia@Ãc@¼.@EÈ@}ª@‹•@§G@ )ð@†×@sÁ@ &D@–é@´þ@ܧ@ @Ñû@¥@Ï4@3@X—@II@ àY@»X@§—@’@@S@Qè@Oú@·T@ |J@ Í@ GY@¶ü@T@Á@ÇÌ@'ý@çÑ@"«@OO@ ¶¢@ #@ N»@ 1Ð@ -J@ ü@ ‘@ ²…@ t7@œ@Pò@{(@ Ë@ wŠ@ % -@ .«@ å @ @Ùí@ó@ª@ -»}@ E¶@ ‰æ@ /Å@ ›û@ x<@ à2@ {œ@„é@Ò&@ÕØ@k@ @ -:@ -Œ;@ 5@WÆ@ëK@•@î@ÍL@ ÆC@ -N¹@ -ZÓ@ -pÔ@ -³û@ -ÕR@ -£@ šõ@ @’©@O@[—@,£@ t@¦W@+@ô@Ia@›Ì@†„@Ä,@Æ@´t@‡"@ -@©Ú@œ1@¦o@‹Â@Šå@y)@%÷@ýÌ@+?ÿM'?ýÀž@\ç@ŸZ@z˜@B„@Ô@M´@òF@Où@v-@§!@v¡@l@¾b@ý€@e©@¥Ò?ÿ¸?ûÝò?ýpU@ƒÆ@V?ý±?ýÓ(@àá@TÞ@ÌT?þ1 ?øl=?ö›E?÷±T?ú´×?ÿ«2@¦9@c?ül¥?÷/4?øv??ýÇ…@ié?ÿ»ä?ûzæ?÷Ã?õø,?ø„s?ûø?ýáq?ýÒ?ü.«?úM?ùØÃ?úÓ®?ù2Ð?óÒ?îcÌ?ï2€?ó¬ó?ö1?õé?òÒñ?ð,r?ìîà?éZ?ä -E?Ý?Ót?Å~Ÿ?²vÓ?›FÕ?ŽIÁ?™èï?³¨:?È‘ƒ?Õg?Ý ·?âãi?çO?êrÿ?ì ?ì(ñ?ì*Ä?îOº?òf¥?ö¿?ùyô?úïð?û®E?ü(´?üG±?üQY?üü®?þ)±?þÝ-?þ³;?þO ?ýö`?ýZÝ?ü€?ûä«?üº?ü\Ÿ?ûòâ?ú¨ê?ùf ?ùáñ?û¦¤?ý9Â?þx§?ÿ>7?þ>Ï?ù³?ò…Ù?ï -­?òëð?øö ?üs¸?ý²¦?þÔ?þ´?þ ¶?þ!€?Õc?ÕB?Õ(?Õ¬Â?Öo?ÖŸ²?ÖK´?Ö 7?ÕÉä?Õ;d?Ôà—?Õ—?Õså?ÕB_?Ôx»?Ó¬³?Óž]?Ôw¦?Õ?ÖKï?Ö@H?Õƒ4?Õö?ÔæÌ?Ô°^?ÔŠ’?Ôâ×?Õ?ÕcÒ?ÔLT?Ó…¹?Ó8?ÒÇâ?ÒpU?Ò£Ÿ?ÒÃ,?Ò‹d?Ò—r?ÒîR?Óa?Ó;À?Ó4Û?Ò¿¸?Ò6¨?ÒÈ?Ò&&?Ò,?Ñш?ÑfÖ?ÑÄ?ÑÕ?ÑAy?Ñâ—?ÒDä?Ò#œ?ÒR?Ò–Q?Ò†¯?Ò†‰?Òc¤?Ññ ?ѱ?ÑêU?Òom?ÒO?Ñã?Ðà?І?П?Ñ)ž?Ñ›ë?Ñô?Ñêˆ?Ñ]Š?ÐÉp?ÐÝ?Ðp8?Ïç?Ïd‡?Ï­¥?ÐN:?Ðû?Êï?Êw?ÉÁF?É]J?É%Ä?ÉX?Ȧ!?ÇÀ7?ÆÞÕ?Æ:?Åĸ?Åv ?Åk!?ÅM¨?ăÑ?É?Áà´?Á^}?Á[=?ÁÌ?Â`?Á·.?Á?ÀQÎ?¿ÌÍ?¿?¿ñ?¾U´?½¶?½¿ú?¾¹j?¿¼¥?¿»“?¿Ð³?ÀÝv?Á¦0?À×W?¿cÝ?¿)N?¿Ï½?¾{)?¾?½¶•?½[ó?¼¿?»áö?ºË,?º4 ?º Æ?»z‰?»Íý?»Oœ?º¸·?º¥?ºÆš?ºÎ?º‘Á?¹È'?¸å‘?¸Š·?¸g?i~ß?ˆ¬„?•‹ú?œ™¿? Ê¼?£Ê?¦0?§ø?§y–?¨” ?ªµ?«&O?«ë'?¬}?¬|×?¬ir?¬àÝ?­‘3?­Ö.?® N?®ˆÃ?®¼X?®x?®H4?­í5?­/›?­¿5?¯Të?¯èQ?¯¾°?¯Œ?¯]Z?¯C@?¯SÄ?¯…[?¯ÚÝ?°+?°)\?°:r?°ä?±Ö¦?²9?±£ -?±$?±Ü?±^ö?± Õ?±‘;?±{?¯ú”?®{o?­o?­ˆ?­-?¯Š6?¯Y?¯H?¯ˆ0?¯çh?°~”?¯ÙP?­A7?«¯%?¬è)?®S‘?®á«?¯S ?¯œ’?¯¦´?¯dê?®ø7?¯?¯Å(?°Id?°C~?¯Í‘?¯©Ž?¯ÅB?¯x?®×Ã?®e·?®æ?­w™?­3ý?­"¡?¬óŒ?¬¾P?¬ÍÁ?­.ð?­TD?­MX?­V¹?­d†?­‘Ì?­ç?ŸC ?Ÿ÷?ŸN”?_¸?˜®¾?“€R?“?–Úe?˜üè?—{?—w?›Co?´þ?žJe?žN°?žá?‘?š¤¦?•V?”¤‘?™è?›ñp?œÒ?›çW?›ï_?›"?šÔ?›¾Ý?›é‘?›\‚?šâ_?šã9?›B ?›‹ -?›5U?š9+?™ ?˜8¸?˜1?—Õe?—{r?—îN?˜Eí?˜$™?˜V=?˜’¦?˜8ï?—Ãî?—ãæ?˜‡Ë?˜_¬?—ÂY?—À€?—Å?•HÎ?” ?•ÍÙ?–b7?•_ù?”'›?“Ö{?“ýH?”œ%?•<ð?•qÐ?•gT?•f?”ײ?•)Š?–?–©ü?–‡?–›¤?–ÅÜ?–›‚?–£'?–Óf?–R…?•m?•bi?–£?–c³?–:»?•ÓL?•=Ò?”ët?”Óy?”—¯?”/;?’y/?FØ?‘ý?“r—?”Š¿?”s´?“ˆ:?’ý?“þ}?•cô?•2 ?”ú?’·í?‘îÏ?’†ü?“%x?’âÇ?’ßn?“w?“ÆÎ?“š:?“ON?’Î?’bç?’Iþ?’n(?’Šà?’«¹?“?“,?’Z&?‘]d?ß?‘=‚?’ü?’è}?’¹Z?‘ñi?‘lÄ?•w?ö?36?6ð? -´?ê5?š£?DÔ?ŽÀœ?Ò?‹åN?b—?PB?Ý»?‚?²?$‡?ŽO_?ŽM3?Ž0I? ‚?óÑ?†p?P?¯À?f?Ž®?Žœ3?Ž3l?ìÊ?ŽI ?Žhj?ŽF?D’?Œžh?Œƒ:?ŒÑá?Œª’?‹ëI?‹9:?‹4'?‹Ë ?Œžä?Œ¼'?‹ÅÐ?ŠÁ ?‹|?‹ö?Œ„¿?2 ?ý?v-?Œò»?ŒC ?‹¬0?‹l­?‹§/?Œ3?ŒÏ?Œ,6?‡æÛ?€«ï?‚(•?ˆØÌ?ŠÉ?‰þ¾?‰Ž®?ŠD?ŠT?Š" -?‰~à?ˆÉ¤?ˆ -e?‡ÐÌ?‰ Ç?‰º=?‰|?ˆîò?‰ž-?‰¯h?‰9Ú?‰Ò?ˆñö?ˆ±ž?ˆp~?ˆ&ï?ˆ=¬?ˆv„?ˆ°Q?ˆ» ?ˆk?‡÷?‡jd?‡/Ù?‡N—?‡O5?‡F¸?ˆú?ˆÃž?‰±?‰‘?ˆÝö?ˆŒb?ˆVõ?‡Ó:?†˜?… ]?…ûu?†kÖ?†ºþ?‡8ô?‡Ý?†9œ?†L?†÷%?‡UÄ?†ô?†¨ô?†z¶?†.?† [?†M?†N`?†h?†C-?†¼?†:ž?†cT?†"B?…·Ó?…d?…³Õ?…Žð?…R±?…H;?…0Š?„ÎÏ?„@­?ƒÝx?ƒª–?ƒÅV?„:?„¾v?„¾¢?„[?„ù?„}…?„«6?„Ýj?„˜ ?„CZ?„J—?„2?ƒÍ&?ƒ2‡?‚¼u?‚ñ?ƒ?ƒK?ƒbû?ƒÝ?ƒW^?‚ÙÐ?‚zÞ?‚`¨?‚r¦?‚{¿?‚†?:?åo?~µ/?€/è?Fc?€9?Hö?€Â/?€g?yXÙ?yðì?zü?y«b?y›?xuw?xNê?xnc?x?ô?w5Ë?ví³?w¯)?x:?x+Ô?wà?w„Í?wxý?w»6?x'~?xL(?wߥ?w ^?v¡g?vîB?w6º?v¾å?uz ?tx×?t >?tý)?um?t÷?tŒ”?t‹?tTÛ?t@ê?tU?tY?s‹é?sm1?s"~?rä?q•8?r{”?rØD?ryÍ?qö ?qµÄ?q§?qý$?rV5?qÌ?pÛ&?oüQ?oš¨?o¡q?oW?oh|?oo?o9Ð?o-R?n}?mÉ?m׋?nK?më?m‘'?m€þ?mì?l±r?lñl?m*Ó?m;?lžM?kºÜ?klo?k[ã?ißo?h‹u?iÏ?jX)?jÛ?j=m?i´„?jC*?j¸k?j—Æ?j?iTb?hãC?hÐh?hà}?hòò?hØ1?h]%?h ¸?gñ?gÀG?gß—?h+ç?gÅÙ?gê?g2ä?gO?gž>?gè?g å?g K?eò'?e/?e‘›?fS¶?f¦?f‰?f8ª?eÝß?eá¬?eä8?eÀa?eœ¤?eˆâ?e8§?dŽÅ?d?cŽå?cŠû?dÕ?cîØ?c/õ?bhÎ?a»Æ?aÝ?`ˆò?_›å?\vˆ?W1Ü?V.D?ZöA?_†?alç?a‰?`ìÑ?`±Â?`Äv?`ô?a?`™|?^¦K?]fÒ?_!?a}?a¬?b±?aë‰?a‘e?aw?ay6?a<Œ?aÕ?`£‡?`xð?a?a…a?a(q?`£d?`´y?aŸ?a7?a E?aâ?`·ø?`ko?`²å?`Õƒ?`ÁZ?`‹F?`mO?`Ñ?_¼D?_Tq?^Ô;?^]·?]ÓŽ?]¨w?]—I?]Z?\­ -?[Ä}?[éc?]Õ?]?\0?[uz?[íñ?]Q?]÷Û?]¢P?]û?\CX?[¼€?[Öí?[à©?[›²?[3?Z±?Y˜?Yü„?ZU§?Z¹Y?ZOÞ?Y«Ê?Y#n?XÖ÷?X ?U¿Ê?NñE?=ô`?4<š?CSE?P?e?IZ¹?:U}?>0¦?L÷d?Rî`?SÜ?Tå?Už ?U¼†?U’?U T?T´©?T¬m?T»0?T$e?SÔ?SNf?QÅ ?P÷I?QÊT?R~ô?QN½?P†ä?R0$?SÏ?Sv2?R¿‰?R\¬?Qæ¿?Q¯+?QÃ~?QÁó?Q¦ó?PÉh?N§£?M}g?N4]?N÷‘?Nò_?O )?O"5?NëÒ?Oa?O·Å?Oœ¶?Os?M^?LA`?M¥ø?N²§?N…:?Ng¸?NKø?M:^?L%Æ?LCI?L­¨?Lç%?Lƒ¬?L.Ä?KéF?L —?Ls?Lb×?L…?L¶â?L{*?L[?KŠ[?J¿C?J¢›?K<7?KÌ^?K`P?J÷8?KX´?KÀ?KNæ?J«W?Jw?Iï÷?HÙ0?H¤ó?Hke?G°U?GŒ?Fü?G z?H+?HXõ?H>ð?G±Ð?GA/?GgS?GnE?FÞ?Ff‡?FQ?FÏÎ?Gq‹?G~ü?GEŒ?FXd?E S?D,”?D Œ?Ds×?Dx“?CåÅ?CÄX?D7Å?DQ$?DiL?DÓd?D˜I?CâI?CÏá?DGû?D“±?D¢d?DE ?C¹_?C_»?C:æ?Bÿi?B÷!?CAç?C7.?BÍL?B¢M?B´?Bœ™?Bub?BIh?B@^?AÞ ?Aº[?BC“?BEÔ?AÜ„?Aç…?AïÝ?AÕº?AÖ(?B?B¸‰?Aôw?AÌ?AW?A??@¸Ñ?@ÀŸ?A€?AÐ?@¡ª?@4`?@e§?@‘ ?@<þ?@u?@X5?@„‹?@Có??¹à?>xÏ?>?>è?>Ù?>±?>¿¸??0??•???3?>s?=Ü?=p²?=g%?=KÀ?= ô?=;i?=4¶?=F¦?=V+?=~?<Á;?<Ò?<¶#?<žr?<’U?<¡z?<P?;:•?:%Ó?9”¡?:‘?:]w?9âÛ?8ëH?8©?8–Q?8gÌ?8×?8ŸÖ?8—l?9'·?:Kä?:zž?9@¢?8pÍ?8y?8ï?8üt?8ÇE?82Y?8C?8Šè?8t!?8aÎ?9‡?9T%?8I@?5ÄU?47ð?5 -‘?66á?6æA?7(?7!µ?6’S?6ZR?6óE?7IA?7N°?6ð‡?6‡ö?6?ç?5íŽ?6 ;?6tì?6>"?6‹?5ô?5ì°?5··?5X²?4ßT?4Óx?4ô†?4ÙÊ?4´?4oè?4¯?4/õ?4…¶?4ª?4I?3—·?3‰?3Í?3ée?3§N?3Pð?3Â?3à?2é6?2ÅÔ?2«“?1Êw?0¥µ?0M·?0³‘?0ZÃ?-[¡?'(M?$zŽ?%äj?%ä?#D? kF?"H ?'9o?*S/?+…ò?,™?-Nô?-‚??-l¬?-˜½?-•?-~?-6è?-V?-Z»?,¡é?,çÚ?,¹Û?,I ?-~>?.]¾?-¨p?-ª?,nÐ?, Þ?,¬ê?-y»?-ž5?-¾$?.F?.&ñ?-¿E?-8 -?-&7?-=5?,õh?,Ì{?,Ó?,ÁÚ?,‡•?,„4?,~­?+ë,?*üÖ?*ɱ?+q?+Ť?+/Ê?*úŒ?+/o?+%E?*·Û?*~â?*/?)²?)ÔÅ?)ý“?)Û¿?)Ì7?)Äk?)ÿ?)öñ?)¦4?)1?(Ÿæ?(=?(4?)@?)Š?)]è?)Gÿ?)IÄ?(ÎT?(vÀ?(7-?(6?(e?'kÀ?'W^?'0?'6×?'“%?'žü?'!Ÿ?&v€?&™?&é?&Œ_?&nØ?&8+?%ã?%¿Ã?%ÍA?%ÅD?%¿Q?%Ã?%•þ?%]?%·?$Ѓ?$&{?#âa?#·þ?#„:?#+÷?"—­?"¾_?#$?"²¯?"?=?"$k?!Åê?!Ž?!qq?! k? ¬Å? 2?‡â?E¢?Áœ? ¿?D¥?éä?Q]?f)???‰u? ©?gS?p?¡z?#÷? ?´¤?Gj?Áß?Y?¹ý?Üü?z;?/M?³c?³Ò?ðz?þ?ÂV?ƒb?Ÿ—?_9?’ÿ?(??ðâ?ß—?L3?ÀN? [?Øq>üÌa>ÓÇø>¿Êß>Þ·§>þj?<ÿ3 >þCv>ÿG >ÿAc>ÿ$?%û?©â?¸§>ÿÇÇ>ý/–>üxÖ>üVË>û?>ùÎù>ù×ü>ü">ýFê>üÁ">ü™L>ü¯4>ü|Ù>ûá>úG>û¨”>üÂ÷>üëf>ü¶5>û4>ú»>ú’1>û >ûµa>û(æ>ú¤[>úv>úvq>ú„i>ú:b>ùgd>ù@3>øÚc>÷o·>ö¸·>öÎß>öÅï>÷3)>÷ŒÊ>÷î˜>ø:Y>ø‹À>øUâ>ø->÷q'>÷._>÷8k>÷F>öùô>ö¬€>öœ,>ö†Ø>ö8>ö5z>õìC>õ0 >õtJ>õÔ*>õ®Í>ôý4>ó´V>óí'>ô°@>ô‰5>ôD>ónW>óip>óô¿>ô+ê>ô%>óö>óÀß>óŠ¢>ój­>ó(<>ò­Œ>ò±Õ>ò·«>ñÿû>ñVé>ñ¸Ò>ñ5¯>ð 1>ï•F>ï¾ã>ïª>ï`W>î×Å>îiÆ>î‚š>î ‘>íwë>íµÅ>íò>í¤g>íý>ìú<>í7[>í -Æ>ìpÉ>ë_ >êï>ë£>ìS>ìeÇ>ìS•>ì2>ëò]>ë¯È>ëB>êÀÖ>ê>êS¤>êd ->êu@>ê’à>ê@ï>é¿Ç>éG}>èUF>è¾c>én;>éa>é$>è¼Ï>èŽG>èt5>è…ð>èi‹>è-I>çÛ>çl>ç)>ç>æÚ>桬>æWc>æ —>åÆî>äž>ãxã>䂃>å’>å¡>ä÷!>ä©£>äbW>ãêø>ãµJ>ã‘>â£>àË?>ßÖO>ßé›>àgË>à›Ñ>àŒc>àOI>ß‹q>ß+©>ßÅg>ߪd>ß@š>ßc>ß?">ßž>ß!Î>ßb>Þÿÿ>Þî9>ÞÉÞ>Þº´>Þ©»>Þ’a>Þo°>ÞM~>Þ4‡>Ýòi>Ý› >Ý_2>݆Ñ>ݧÀ>݇¢>ÝaÑ>ÝKh>ÝZ>Ý`>Ý!>Üþ³>Üúç>ÜàÕ>Üד>ÜÃê>Ü®>Ü«š>ÜîÆ>Ý5¾>ܘZ>Û±$>Û‡œ>Û°H>Û‰w>ÛD”>ÛÉ1>Û„Y>Û >Ú«¬>ÙÐ ->Ù>>ؽG>Ø„¡>Ø×ë>Ø¡^>×÷~>Ø’>×·Ã>Øgš>ØÉZ>×è˜>×W¿>×hš>×,ñ>Ö`4>ÖaP>ÕÝ>Ön>×–;>Ø1V>ØB¼>Ø%>ØŽ<>Ø­>Ø|">Ø÷>Ø¡>Ø&>×õ>×Õó>Ø+ >׬n>ÖŸ;>Ö g>Öó4>× ±>Özö>Ö›×>Ör'>Ö*’>Õ³>Õé}>ÕªÏ>ÕI >ÕKm>Õu>ÕN>Õõ>ÖHø>Öy>Õ¯Ô>ÕUu>ÔÉx>Ô­‡>ÔªZ>Ô½e>Ô¾Q>ÔY>Óî*>Ó®ä>Óaç>Òà->ѸB>ѯý>Ò†¿>Ò£J>Òù>Òàb>ÒU.>ÑÎX>Ò~>Òý >ÒÃN>Ò->ÑŸŒ>Ña”>Ñ‚>Ñ·¿>ÑÀœ>ѯ>ÑN>Ñ+|>Ñ}>Ñy>Ðûž>ÐÛi>ÐÑŽ>а>Ч>ÐŒç>Ðiì>Ð>Ϙ„>Îþ>ÎÈú>Ζv>Îa¯>ÎG >Ϊ>Íœ>Í2>ͤ>ÍZµ>Í4ù>ÍZ>Ìɼ>̱þ>̧à>Ì×>Ìz>Ìb¾>ÌL¡>Ì7½>Ìù>ËÞž>˺S>˪">ˉb>Ëg“>ËA*>Ë0Y>Ë3x>Ë’>ÊÔ1>Ê¿>ʃã>ÊŠ0>ʳ/>ÊŸs>ÊyÔ>ÊPÛ>Ê)I>Éü>ɽ >ɦñ>É› >Éhg>ÉW³>ÉJ¿>É" >ÈúD>ÈÞ>Ⱥ>È‹@>Èk>Çr™>Æð,>ÆÕÎ>Ƶ>ÆjÏ>Æsð>Æþã>Çb>ÇC>Ç*t>Æõm>ÆÈ>Æ¿>Ælß>Æn>Æ7>Åéÿ>ÅuÓ>Å“â>Åd>ÅÞ>Å/@>Å=>Äò3>Ä ->Ä‚¡>įE>Ä„æ>ÄEC>Ä:->ÃÆ >ÁšÝ>À Œ>ÂÃA>ÃH¯>ÃH>ÂÇÊ>ÂlH>Â$U>µ> ->Á÷Ó>ÁÝž>ÁÆ–>ÁØê>Á¹ð>Á£&>ÁŸº>Á46>À£M>ÀÂ}>À¬>Àh¨>ÀxÉ>Àâ«>Á'›>Á7Ì>Á2>À²Ù>À÷>ÀJN>¿»g>¿|µ>¿=>¾Œ>»6>¸Œ>¸v…>¼ “>¾rÄ>¾II>¾Íõ>¾ùŸ>¾a">½÷<>½æ©>¾K>¾H7>½ˆE>¾$Ó>¿H]>¿jm>¾ÏS>¾X#>½Š>½ú>½äO>¾B>¾Qð>¾×>½‘8>½¦n>¾{Œ>¾ðœ>¾Â·>¾›‘>¾=m>¼ì>¹Ï >»/>»ñð>»çN>¼jÑ>»é‡>»>»<ã>ºýú>»„ >»Ç>>»r‰>»X>ºÓ5>ºÖ>ºüw>ºvv>¹Þ†>¹Ž]>¹½>¸H>¸Ç!>¹„Æ>¹Q^>º Æ>¹Ü>·Ö>¸A»>¸S>¶ÌÌ>¸¢>¸>¶QÅ>¶â}>¶‘±>´‰€>²ð¶>±=±>´û>¶4>²ÜÎ>³o+>·x>µàÞ>±¿á>²Gh>´‰5>µÊÉ>³l6>²k÷>² >°®Ï>²1£>²È—>³¹>°Â9>±øG>³QÝ>´¾Œ>µD>´ši>³‰>±Ýþ>±íL>³>³Œ>³ý>²å>²=">³>²ú¤>±Aq>¯J@>¬¼*>­ƒ>°hf>±ÛY>²#>±ŠC>¯V÷>¯’Ÿ>¯ïÜ>°áK>±k>±Žò>°,U>¯”Ä>°{>±}[>°ÞR>± Ë>±‚n>°7µ>­A>«Î–>­¾{>¯Ž>®r>«mµ>®8[>¯œ>­@û>®B>®¢Ê>®Þ>­Nõ>«šD>ª“›>ªþC>«Ù>¬P…>­c¤>¬‹æ>«Éß>¬8ã>­™÷>­¹Ô>«¬H>ª…>ªá›>«úJ>¬w˜>¬¼b>¬â§>­J=>­WÔ>¬®5>««c>«Ž÷>«éQ>«@³>ª@u>ªVF>«BÄ>« ¼>ªôl>ª—Ÿ>ªR5>ª-å>©€>¨Ìõ>¨åŠ>¨ÓG>¨g\>¨;^>¨>§¯>§zq>§li>§[Ä>§?”>§Ð>¦ìL>¦¿;>¦‹²>¦)î>¦Î>¦K>¥ë>¥Î>¥³u>¥’_>¥r²>¥O>¥Z>¤äU>¤äb>¤É>¤Ÿõ>¤ty>¤M³>¤+Ó>¤ Å>£â¬>£¹H>£“W>£j‰>£1`>¢øü>¢ßI>¢µû>¢›™>¢e>¢EÆ>¢H!>¢3=>¢ 7>¡ø‹>¡äJ>¡¼µ>¡^>ŸÐ˜>žÀí>ŸÛ>Ÿ›6> J> ¯>Ÿ²>žŒÒ>  å>Ÿ;Ÿ>œ·K>ž‚>Ÿ× >ŸÖ[>Ÿ{‰>žØX>ô8>œkç>œÀ>F>œë >›ãì>œ÷†>ž™>ˆå>œƒ˜>œ{>›Rr>šù3>œèY>-=>œFß>›£>œP8>›&S>˜x>š1°>›C‚>šW>šžæ>šàŽ>šÝ>šñi>š•û>šwL>š¢Š>šUó>šF>™Àa>™w´>™{¶>™È>™qÐ>™Q>™s?>™è>™->™¥>>™Ù>>˜¸Ô>—È6>˜°|>˜*q>—Æž>˜=>—9@>—«c>˜–!>—Ú>–ys>—XJ>–’à>–Q>—?>–=4>–Õ¹>—þ…>˜÷>˜!»>—j>–ܬ>–çÂ>—:Š>–÷ÿ>–ê.>•È¶>•Ë˜>—y>—]>˜Ö>—Jˆ>—n¸>–c>•mO>–St>—'2>—}>—p>–“¦>•c£>•uN>•ˆô>•þC>–vè>–¬A>–u#>– ->•¬å>•Hê>“÷>’Øå>’Òþ>’eŠ>“7>”-»>”Ù/>•>“G%>‘‘F>ï>ŽÍí>’Sb>’ÎÔ>’Ìï>“yJ>•D>—±â>—€>–*]>•»>’êß>’aš>’¾H>ŽöB>Il>™ñ>‘²v>‘¢;>’Ê>”N>• ;>”ð>•?>•Ûä>•l±>’ó%>û(>GC> H>š>‘bj>”`Ø>•!i>“êÄ><ã>’sq>”œß>•Ë>• -Ï>“Q]>’mæ>“€È>“Tˆ>Ü@>„Y’>‚Ap>‰E>ˆëa>Œ™f>ŽÄr>s®>šò>ž>à>’¨&>’¾D>’ ‚>’Ðp>“L">“¼>“{ž>’9ö>‘ø>>‘Ÿ>Y•>ìÊ>‚$>`Îp>zA(>…Û>‰ã(>È>tŠ>Ò>Jj>Ž˜ï>Ž•<>µÀ>‘Uý>‘zÜ>ï‚>ÚB>]#>ŽÖù>#À>Ìo>LÃ>Jß>}+>Q¦>x­>ŽøS>Œ£>‹£>ˆ@l>‚j>‚#É>ˆf!>‹´ê>Œâé>9ß>Ž2©>Ž{>Ž ê>ŽJ‘>÷€>Œ®v>‹¸µ>Œ5~> ->ui>Ž B>;A>{L>Ž]Ì>A§>Ê/>ŽA¶>Ž±>ŽÃ>)>Œ?>‹˜{>‹«>‹Ì>‹;>‡jz>oÆW>`Vó>r<†>á“>‡Àö>Š¶è>‹•'>ŒLE>k«>›ä>ŽÓ>ŽŸL>ŽÆ>ŽI>Ž¸>'ù>Ž²²>vh>£”>æ+>Ž(Ì>ñ®>Œ«ˆ>A">ŽEØ>ÆT>Ž.M>>Ž8>$>|>(x>Œß•>Œ•ý>Ÿ>…>ŒT>Œ@j>‹|š>Šì}>Š¨ä>‰á‰>‰;>†ú>y‡²>vBÆ>„a­>ˆ&j>‰OÑ>Šìž>‹)Î>‹@†>Œ;¥>Œ1I>‹ü >Œ ÿ>Œ<>ŒÐd>Œ¾î>á>V<>Oœ>Œ•Â>ŒÂ‰>ŒÞé>è>òp>Žœk>Áh>Œíñ>,>Œ ±>Š,+>ŠEr>‹Í/>‹Ðû>Œ.ÿ>Œùf>B|>Œˆz>‹›ì>Œfó>À>±½>2€>Œá®>ŒÃ[>‹–4>ŠÔE>‹+>Š‘>Šeg>‰x¦>‡"@>… h>‚à?>~µ>w_†>k¯œ>Z…A>O¿»>\Žd>j~û>sŸq>y›^>~œÀ>‚}V>„›S>…Í•>†ôï>ˆÄ.>Š‘„>‹ò¦>Œý>½ö>Ž µ>¦A>o‚>‘7ì>‘ã°>’MÉ>’;>’Å~>ßi>#^>‘P>“XJ>“_I>“]Š>“i6>’a„>7>ŽR­>’îL>“q]>“WÅ>“EÑ>“4Î>“º>’ß>’yM>’c†>’T€>’Qr>’/e>‘ý>‘Äö>‘…ã>‘>¶>¹ >á½>àL>µ>I>ŽÏH>Ù–>Œÿ->ŒšÀ>ŒZ>‹$»>ŠQ>ˆ«>‡µ>…{ú>ƒ•>Bý>|â]>võ>pG“>h6>^%Ç>RFF>C¢u>1°8>*”>8ûC>Ij’>V/b>`¦t>iBe>p9>v?>>{ã<>€<>À×>ƒˆq>…ó>†Q>†é>‡}Ì>ˆ^å>ˆæö>‰â(>Šk×>Š«I>ˆeí>~[Ž>‚ $>Š†³>‹¹‹>‹­I>‹·_>‹>‰á†>…GÀ>ˆj2>‹Éä>‹þj>Š> >„ñª>ˆ·P>‰kÉ>‚xÊ>‡g>‹`{>‹P†>‹:¶>‹]z>‹L×>‰ã˜>„,}>‡t>Šš>Š¢>Š‘»>‰¡ð>‰t >‰Î_>Š Ë>‰á">‰ã>‰«>‰å·>‰Æ>‰›>>‰€—>‰W>‰ >‰ï>ˆäù>ˆ¬‚>ˆ=Ì>ˆ:€>ˆ,S>ˆÁ>‡Éö>‡—a>‡bY>‡ §>†©>…ˆr>„DO>„cœ>„’s>ƒã5>ƒú>‚Õe>ƒ"—>ƒb>‚R\>V¾>€Zy>~ðU>{F¶>v^E>u>Š>r/½>l¹þ>c)Z>`¨>Y >Oyä>KqF>APy>3r)>"Ž>¼>+nk>:‹>D½\>Lùa>W ³>[…>\£>f¿->lÝÒ>oºI>rŸ>sj>v!¥>rý>h±±>lúÓ>o@ã>ywQ>¸>€ T>€n‡>€¿?>€îø>¬>-ú>Hª>\ö>]>aÂ>gù>(Ï>#“>sü>Dë>=>XJ>Y>Al>;m>7'>€ö >€¯=>€ÀB>€Ç}>€mU>€Qú>€µ_>€¸×>€ >€‡¢>€_>€^>€,ˆ>€$c>€!>â0>»6>µ–>¿>`8>5> þ>~ãZ>~°~>~Š >~Q‚>~ Ô>}ÙÁ>}™Î>}r¼>}8Ó>|˜‘>xÎV>y•Õ>zðq>v–>ybr>{é÷>{¹Ú>{/ƒ>w[Ö>j¨^>sq8>y¢Ò>s1>ot8>v{w>yj>w˜¢>w[l>y ø>wû:>w/Ö>wÁ°>w¦º>vW>t¿1>vÂS>w J>v6ú>vî>v{…>v{G>v' ->uߧ>u¡Ù>tdð>t1N>tQÚ>t>q>t:0>s÷ò>s®å>s[Ð>sS>r“ú>qHè>pœû>q4¥>pÞ >pT;>o–Ù>nê…>n8>m@]>lÅ;>ká¡>j§>i£Ì>hs­>g2Þ>eœ÷>c¿>a‘#>_,>\/ì>XÈØ>Tã–>P\„>KZ>Då_>=Ö®>5MÊ>*΋>~> δ>½B> Xa>,©«>6@'>>÷>D†z>Iú>N˜ñ>R¬>UÕI>Xz>Z§Q>\ÈP>^ÑG>`TT>a’”>bšŠ>cjÅ>d,»>dÁû>e)>egà>eã}>eð¼>e‚>_!Ü>bUÿ>ff^>fĘ>fö>g*6>g…>eNÔ>\â>`é:>fqB>fLs>eÉp>_T„>_±Ž>eFÅ>fc~>faB>fL¬>f,n>e¤q>báÕ>cœç>e89>c[ü>Y̺>^Ùk>d’]>d’(>d·¸>do£>c3ù>c,ö>c¡Ö>bº >a‡>b÷>cÌ>b‚>b<Â>`ÛX>a2C>aôË>b È>bH >b#>b¼>aà=>a²Î>a‹$>ad€>a7Ö>a >`Ép>`(¨>`ó>`8–>`x>`>_¹ý>^•¯>]>]¥Ç>^>^ÃÖ>^e¼>^v>^q‘>^R^>^Ž>]ëŠ>]À:>]V–>]Ia>]3º>]›>\òã>\Ã]>\~û>\\å>\6¾>\™>[±ê>[D>[«>[ :>[Š>Z®[>Za¹>Zb>ZK>ZR´>Yö>YfK>Y?:>Ytÿ>Yn:>Y5î>X†À>W­E>Vx2>Wì>X >WÆY>Wÿ>W´m>WfA>V®¬>Vì >Wå>V×`>UÕ¸>Scr>RËP>SÁ’>Sg%>TH>Tݪ>UcÇ>U}>T¿m>T¹Û>TÓ->T²I>Tdƒ>T¡>TX>Rì•>LP´>L´;>R{á>SÝ>R1<>Rdß>R¥Ê>Rv–>Rú>Q˜>Qn->O´H>PEµ>Q… >Q_h>Q ¿>P¼o>OÖ¤>K@¹>MZ_>P%z>Pý>N«W>Mç‚>O(Ô>N¬Ë>Nuá>Nw±>Nn>M÷§>MÕB>MÃh>Myš>MF(>M¼>LÒö>L¢>LHY>KõB>K²>KM>Jó°>Jœ>JR>Iò>I[Ð>HaØ>EÁ³>FÒ½>GG>F_ÿ>EÉt>Dîa>Cð >BϤ>AyÃ>?Þë>>V²>:+‘>7¡|>4¬ï>14X>-5Í>(Q>"î²>FT>$4> ‹ =öçˆ=óÎd>‡ô><û>?> ¶>& >*zê>.@i>1i‰>4-¹>6xH>8EÕ>9æç>;gW><‡¸>=‡¤>>kû>?¶>?µ¹>@3 >@šÐ>@ðG>A)ƒ>@~à>?ÿÌ>?tß>?uy>=f_>>ˆp>A•û>AÆp>=|ˆ>;Bò>@Ññ>Ah’>A¿õ>AÐÚ>AÆ=>A´Ð>AŸ>Aao>@ž>>@˜ì>A-€>A¸>@>@À8>@Í&>@ƒ>>ú¦>@€>@R.>@–>?Œ1>?Óú>?¹4>?ƒÊ>>\¼>>¯ç>?R>>âó>>ùL>>Ú ->>±’>>±>>qÙ>>Ox>>.Ò>>¤>=å>=­Ù>=Ô>=F>=Qì>=><ÿ˜><Ôu><·ü><£³><(¤><C>< +>;Ÿ>;t>>;¡°>;ƒF>;X6>;Õ>; >:ïH>:É>:¦Å>:Q>:Wi>: )>9Ò6>9ßi>9Ê.>9¤œ>9} >9&®>8—æ>8ã>8ëL>8Ç5>8›E>8m™>8P€>82r>8P>7¸ó>7Ž>7•Ì>7mÉ>7(ñ>7 >6þÀ>6Ô¯>6b$>5">5Þ–>6QÂ>60c>5öß>5¢Œ>5¬ê>5‘ž>5v°>5M1>5*ô>5Ô>4¶P>4Hð>3ó¹>3ý¶>3 >2À‰>3ÅG>3N>3¦«>3>3fö>3SÜ>3Ï>2­÷>2Â&>2Áv>2›i>2Yé>24>1ü€>1­Á>1Í?>1Ä>1¡>1z¡>1Vd>112>0Ñ“>0ª2>0Ê{>0¨õ>0„n>0aÁ>0<Æ>0r>/æR>/„È>/[ >.žË>+&7>((Ç>)àz>,·h>.D>.¤^>.ô>,µ¬>-¨™>-ý÷>-ÿ$>-ÄB>-ªÕ>-6>,ùs>,ÝA>-%>-_>,Ø->+i">*q>+öÁ>+=“>+¶>++N>*ù‘>+m<>*xÀ>(ú°>*»j>+>+³>*Ìp>*‰ >*‡×>(Èk>'Áï>)Äk>)ü>)f}>)9Ó>)¾”>)qF>(u<>)4>)Ë>) -–>(ýT>(™>'ë²>'ñ‘>(\}>(&>':ê>$8>&n>'­F>'XØ>'Pó>&ð×>'~>%¿§>$ç\>&©×>&´–>&‰/>&o“>&NÒ>&*]>%ýÆ>%Æq>$§š>$O>$Ì >#þ«>%È>% ž>$ûœ>$¿ö>$ªU>$—U>$]þ>#ó>#ê‚>#¥ˆ>!p>"ºœ>#–„>#…ò>#g¡>"ä»> š€>!çû>!Nº>›<>°9>ó±>î>Öù> ny>!ÊF>!dA>!t>©>¸Œ>i¬> éO> É> §’> ¦Ã> ¦|> 9–>ÝN>üQ>/¹>èÖ>Þ¸>¹¸>…½>B>¨">’v>¾§>>M>gY>Uh>]ã><>4>óY>ØÛ>®¹>—ê>i÷>¼÷>ÖÍ>GQ>ê…>¹u>~ ->xK>YF>±>µÊ>5Ú> >…J>GW>çK>œ¶>>K‘>p{>Xá>6>Ø>ª>߉>Z>j->=5> ™>ØÕ>šÌ>®â>GU>GY>&>üh>ü›>Ëq>o3>í&>Ø>>[’>³P>*!>=>ê’>2>V[>Y£>5«> éÇ> ¸‘>de>ö÷>?™>š'>aÊ=ù"p=ïüP=äƹ=ÖA=ÀS~=¼¨C=Ò3F=áZÍ=ìxž=ôj=÷É>˜>–8>ÿ>î>>Ð> -/ˆ> Ûb> Í> > Ú®> M°>(> 1>È°>,>[±>‹ ->®}>ɲ>Ýh>êf>ö/>þ7>êY>–3>–G>ö>ç´>äg>Øí>É>µ:>©´>–H>x>mo>RŒ>H¾>4Ò>®>ôÆ>àÞ>ÜU>ÄÊ>®±>’ð>vü>d¡>K->.Õ>¡>î>ã >Èæ>”f>dM>ne>_ž>F”>)ô> ÿó> êµ> ̳> ¹2> ¡‰> vF> \Ž> °*> ¥è> ‚B> Œ> Q{> •´> ¥*> k^> ÞN> 3h> -«> > ý¢> àH> Æi> ¨> ˆ†> x¢> \Ñ> A‘> $V> -ü_> -Ø> -¡Œ> uW> Wz> -nJ> -a > -0æ> -r> Á> á&> Ø"> ¼N> ’o> 6ê> SÁ> Jt> -!> f>Êê>ÖŸ>¿®>˜s>}F>mä>P,>/§>î>®ò>5¦>@]>qé>hõ>a€>Æ>4>#a>Ö>ì>>Ð>¡ÿ>˜ÿ=ô5Î>¼;>µº>ž)>Њ>ÄJ>0>u>n1>^™>•>¥>0D>>ÌC>Â3>4?=ÿÎ^>õý>tc>3t>=9>óò>î>ïC>Ѻ>Å>At>_Ë>iÙ>4…>)>à«>‘>ª>“q>Ã>u>„œ> ~>4K>Õ>ßS>b>C?=þÞó>†>Z/>’=þÅ…>àl><>ã³>Ò™>©}>‘+>™ã>zÔ>;”>/í=üçk=ú¸=ü71=ÿb¨=ÿÏ=ÿ`:=ÿ,m=þ÷ =þÀ]=þ‹ð=þV¬=þ -=ýëo=ý®·=ýƒv=ýER=ý =üæe=üº=ü‚—=üLZ=ü=ûÊœ=û›K=ûv’=ûLß=ûu=úáÂ=úy =úM7=ú¤=ú\=ùàž=ù¬£=ùrP=øÎ=ø­=øÐ=ø­©=ø|Q=øMî=øt=÷[=÷UŸ=÷{ª=÷0ç=ös¹=ö¶š=ö­±=ö‚ù=öQç=ö=õÇ2=ôÎÛ=õD°=õ v=ô‡à=ô§¾=ôV -=ò”c=ó…r=óÃ@=ó!Í=ò§=ó+=ò]=ìÐ’=ñRK=ò8ñ=íË}=íê=ñøž=ñô¥=ñw“=ñPä=ñSá=ïæž=îsh=î ð=í­˜=ëÊò=á2f=íYŒ=ïξ=ìPQ=ç}u=ëšØ=ì©D=îÕ•=îµÉ=î†ì=îOó=íªÉ=í£G=í©€=í…¿=í0á=í ‚=í=ìÏÇ=ìN=ìAÜ=ìÂ=ì=ëÕe=러=ë`õ=ë+Ú=ë Ä=êÂô=ê˜!=ê_=êFb=ç:3=Þûo=â ¼=Ó†Á=áì»=éµ=èðÓ=èÏG=è*=èK'=çå”=åÀ2=ãŽ=ç*ÿ=ç1=ç7ï=æÁB=æ¬H=æÅM=æu=ãC’=ããñ=åþÄ=åÓ+=åGR=åR8=å=ãúÇ=äš¡=äxp=߉Û=á!=äŽ=ã€r=Ü/ã=ßÉ=ã]=â!9=Þè=âUv=⤴=â«=á½=Þå=à¹÷=áÁ‹=á¡V=árÆ=à¾t=Ü‘à=Þk›=ßÃÿ=àjØ=ß%£=Ø_ö=ÖC2=Ý… =ßñ=ßwæ=ßI›=ß&=Þí$=Þ¿»=Þ’^=Þdð=Þ6p=Þ’=ÝÚž=Ý­¼=Ý|$=ÝF§=Ý#=Üó‹=ܺ=ÙÈŠ?¦¸ ?¦l1?¦@û?¦as?¦ÊA?§@3?§‰?§–q?§vi?§6 ?¦Ü?¦vz?¦û?¥òW?¥óŸ?¦?¦9À?¦:P?œ€—?œ¥j?œ¡?œd‘?›×ò?šûj?š7?™Wà?™!g?™-"?™Ì?˜Î2?˜Ûª?™p?š?š-N?™½5?™Z}?™†ù?š/æ?šâ„?›E?›>=?šâÈ?šlš?š$ê?š*Ÿ?šR}?š>É?™—s?˜_?—$?–¡?— ?˜ -È?˜ãþ?™0U?˜ñ??˜Y ?—˜#?–ê[?–„†?–[‡?–Oú?–Tœ?–V}?–f,?–ÀJ?—UÀ?—Ây?—ì ?˜!È?˜‘ø?™=?™jA?™h»?™“?˜i¹?—ä3?—º]?—óO?˜AÚ?˜=?—Çà?—0^?–Ú?–Û¼?—Í?—)Z?—Z–?—¨?—‘Â?—Lõ?—-?—T?—&'?—/ô?—[[?—¿b?˜&u?˜^k?˜gË?˜T¬?˜3:?˜ ?˜¿?—÷4?—Þ“?—µ2?—Ó?—ŒŒ?—©]?—È??—ÁN?—tè?–Õ?–?•Q?•ï?•`?•Î?– m?–ã?–Y?–K¯?–²Ð?— Ñ?—0­?—I?–â¼?–‹q?–:ß?–P?–,?–c ?–š†?–½b?–Ê6?–¿?–^?–-Î?•É,?•¢?•ÊÏ?–.?–Eh?–[?–]G?–N¼?–)U?•ï›?•º?•§J?•·Ü?•Éü?•ÀÒ?•¡w?•„?•vZ?•u•?•v?•j?•O[?•5,?•)v?•%Û?•‡?• ?•Ã?•Ú?• -ª?”þ&?”úç?”îÆ?”¯Ù?”Ÿ?“TH?’©Â?’ƒ ?’áÐ?“gè?“Ã?“ã&?“Òm?““=?“?l?“ ?“8™?“u2?“šž?“£U?“„¥?“%­?’¦?’c,?’Šß?’ä±?“ -?’ÁÍ?’%Â?‘}C?‘™?èÌ?‘Nb?’ T?’¼^?“?“Ü?’|v?‘no?äµ?ŽˆV?Ž\)?˜?‘*J?’6j?’•U?’¥o?’®¿?’¹@?’ªœ?’i²?‘ó¥?‘bQ?Ìq?%ø?€d?Hõ?Ò;?ËS?‘š}?‘ý¼?’Ô?‘Ä0?‘3:??=?EM?Ã?ûh?”.?ÇÖ?D%?‚R?Dé?ùJ?‘TL?‘Zá?‘Á?­?¥?°ý?™[?©³?{?Û?ŽÄô?(?ÆÚ?*Œ?&?Æÿ?º£?úW?>×?P3?.™?å‡?w"?`?ŽäU?0d?­‘?l?)M?'J?˜?þr?ÈT?g§?Žô ?Ž³M?ŽÓ‡?*î?dP?PL?ŽóH?Žz!?Ž4?ŽXK?ŽÃ\?"Ã?NÛ?Rß?B—?(_? µ?Žö€?Žï~?Žñº?Ží ?ŽÌ/?Ž{\?ú@?n?? -??€ ?÷Ñ?ŽDU?Ž`a?Žd¡?Žaj?Ž[­?ŽTb?ŽGÑ?Ž)ƒ?ç®?…b?5?0?k1?§Ñ?ÃN?Än?¶?—4?Xµ?Œá -?Œ8ü?‹¶?‹®Ô?Œ ¦?Œo´?Œ¾?Œùr? ?0 ?0?'?û?Y?Œï‡?ŒÖí?ŒÀ?Œ¬?Œ™ê?Œƒ?ŒiÓ?ŒS?Œ7?‹ôÞ?‹x.?ŠøÌ?ŠÕ†?‹$n?‹œŸ?‹ð$?Œ R?Œ²?Œç?Œ J?Œ;?Œe?Œ ×?ŒJ?Œ)?‹û7?‹½ ?‹W°?ŠðÔ?ŠÊ÷?Šö¼?‹>^?‹uì?‹¤œ?‹ÙF?Œœ?Œ6?‹ä‰?‹‚þ?‹Ï?Šþà?‹6š?‹‰¢?‹¼?‹´?‹i3?Šù?Šª,?Š¢0?ŠÃy?ŠÜÍ?ŠÌâ?Š‡?Š5?‰Ù:?‰‰^?‰pD?‰¼¡?ŠX=?Šë©?‹6‚?‹Jv?‹`R?‹…¼?‹–†?‹u‚?‹4¹?‹ -“?‹c?‹Sñ?‹‚°?‹h?Šö?ŠrQ?Š0?Š@E?Šs­?Š–{?Š¦“?Š½Q?ŠàH?‹s?‹QÍ?‹yµ?‹YÐ?‹^?ŠÆŸ?ŠÀÞ?ŠÕ’?ŠÕÔ?ŠË¬?ŠÜí?‹ð?‹!§?‹:Ô?‹Tw?‹_3?‹L%?‹·?Šå°?ŠËÌ?ŠÈ˜?ŠËi?Šñ ?‹9C?‹f;?‹v9?‹£ª?‹åi?ŒR?Œ¡?Œ&D?Œká?Œ ·?Œ¤Á?Œ˜•?Œ¨$?ŒÂÁ?Œ½°?Œ•¨?Œw?Œ›‹?_?„×?Î~?²[?6v?Œ¤†?Œ%r?‹·ù?‹ˆ¥?‹­Õ?‹Ü›?‹Øw?‹¸ ?‹£à?‹Š?‹R ?Šó0?Š©A?ŠzR?ŠG²?Š!Å?Š(x?ŠIÇ?ŠX[?ŠL·?ŠOŽ?Šƒ?ŠÑà?‹Ÿ?‹AD?‹nœ?‹lä?‹%?Šç?Šõ³?‹)Ø?‹6n?‹ž?‹74?‹›"?‹Ïu?‹v??Š»½?Š½?‰«?‰Û¢?Š|m?‹>¦?‹Ø?Œp?‹ô¬?‹Åô?‹»ç?‹Ò`?‹ö…?Œ"–?ŒG/?Œiq?Œ¬\?"?/¤?ŒûÎ?ŒŠ«?Œ-?‹ýò?‹Ö?‹¨ü?‹’Æ?‹‡?‹¯œ?‹ª¯?‹¤4?‹Ã?‹à}?‹®á?‹- ?Š¿™?ŠÚé?‹Œƒ?Œqê?4?T?Œ‰ë?‹õi?‹ÈÃ?Œ»?Œp"?ŒüÐ?„?û -?Žc ?ŽZ?Žoí?Ž\?ŽvÏ?Ž„p?ŽW*?òø?ia?ŒçT?ŒÀy?¤?Âæ?ŽSk?ŽÌ?88?f¦?:Ü?Žè§?Ž¥’?ŽkÝ?Ž*m?ú?Ža?ŽBj?Žl¾?ŽL½?íÎ?—Ÿ?ˆr?¶?äy?ù¹?Ž%?Ž–? ?a`?Së?,X??Žà?Ž¡é?ŽˆL?ŽŒn?Žrn?Ž-_?Ü)?¨–?¹c?Ž-?ŽDÔ?Žhë?Žoþ?Žqh?Ž–?Žê°?Yq?Ó?'«?Û?ŒÃ?ŽÃ³?ßµ?$ô?ŒØÎ?é?aÑ?³”?Ž ?Ž©6?'?Žý}?Ž*Ò?ˆ ?Ž -Þ?À?‘z?‘¨?¬Ÿ?w?J?è·?“•?•ƒY?• ?’U?ŽÉ§?Žu.?’„Š?™M÷?Ÿe? /?›Š^?“¤¡??‹˜{?ž»?šCÆ?¤¡Ü?«…-?«ôn?¥|?š–d?»Ò?‰Ò?Œ/ ?–ë™?¦ß•?·J>?ß"?È e?Å?¹´×?©»?—lp?ŠŠ?†•ß?7k?œ°¥?°Øß?Å(#?ÖTi?âQ,?çÔú?æë?Üç‚?ÌÓ›?·ÖG?¡§?Ž±?ƒ»S?ƒ…]?Ž=k?¡o ?¹hl?ÒW?éÊœ?ü P@ñˆ@¾5@ÆU@ ò?üœÇ?ëTQ?Õf?¼×?¤Œ?Ù?ƒCì?%5?ŠlŠ?«?µ®N?Ð01?é>¶?þ·K@*@³†@ü@Ô…@µ@õ@¦=@K*@ @æx?ýen?ç“?Ï(??µKò?œŠã?‰e?}÷j?€zL? ï?¢¯?»©?Ö˜å?ð_p@å)@AM@A@ç@%,b@*Í@-ÄÝ@0BQ@1–@1×C@18¶@/ÀX@-6i@)Š?@$ãÿ@,É@þó@ @D@?ïæL?Õ4;?¹°Û?Ÿh?‰—¨?wõ•?s P?‚ùŸ?ØC”?êI„?ù -@.Õ@SÊ@ ÃÞ@Ÿ³@ëˆ@Þe@{ð@±@ó¿@: -@º@!‚¤@#Pu@$ÕJ@%Óú@&Ë@%—®@$¾Ù@$V@#·í@#õ¬@$z0@$Âu@$›1@$YŒ@$\@$è@$×C@$Û/@$ºµ@$œ@$Õ@#zÇ@"—¶@!&?@Èa@Ç@Å—@”Ï@ -8o@‡œ@tÞ@ §"@v'@Äî@cp@i³@t²@àá@©J@äÐ@s@f¸@÷€@¦ï@b-@ô@5m@Øã?VÞÒ?y…?Ðã?£'e?µnv?Æ8¯?Õù?áŒÊ?ëßÐ?ôÇ%?ü£Ç@®Ô@m³@ÃY@Ù@ -ª @ :“@ Þ@r¿@=ß@ -r@Ä„@B_@‚D@’z@|ù@]Â@E'@+t@w@¦@5¬@Gø@ú‹@Z·@è¿@Ü@îO@÷´@;@æ!@l@Ή@\@3@SW@€u@Kw@ n‰@ º5@ ªÅ@¼†@%@9ã@ƒ—@qð@D@ ¢@ –@ p@ ÷@ Ø@ ½Ô@ý@ù©@ò@,Ð@T•@~ @± @å€@N@w@Ñ@Ý@Ÿè@Gø@·[@ ïj@ :ò@ æu@ ñr@ »@ /@ ²@ ÕJ@ ©"@ q±@ 0F@ ö@ @ /@ DŒ@ g@ ™Ë@ »l@ ‡µ@ é]@ µ@ -C9@ ¦­@ q@ Œ@ ŸË@ zß@ (£@Ôi@Œ@CÀ@ã«@‹@&p@“ä@ú@ŽÊ@_!@Sä@?¤@í‡@Gj@i\@cv@#ü?ÿa;?ü2a?ø¯‹?ô¹“?ð#Ø?ê¢ý?ãÐ?ÛyW?Ñ¥'?Æ8ƒ?¹'??ª‚.?šdh?‰&¨?orc?Oý?9Šc?1¾Ò?:çp?R7g?qÔ°?Š#%?›Å?ª–v?¸UÇ?Ä/•?Î[œ?×_?ß›Ö?æäá?ìÑ€?ñ[?ôÛ…?÷È)?úb?ünÉ?ý¤Æ?þw?ÿŒ…@zy@9S@¨¹@yT@Ò@t?þ“§?ýÇN?þŽ?ÿ…Z@é°@2’@_;@:D@¸­@X@k‘@¹'@Òò@Ð@íÈ@0“@¦Š@ƒb@Êþ@R]@ß×@Yý@·Ü@ß_@¯‡@Zø@/Û@W@îÓ@éü@ -Á@4Ò@BÔ@(f@ñT@šI@3x@›¹@€º?ù•/?ó¥?ù©@‰#@¡'@a;@X@BÏ@Æa@9@“@ÕŒ@¸ @‘Š@å@ñŽ@x)@þf@e@™Þ@à@c@IÚ@VO@bƒ@e@…l@»d@ÊÏ@°L@‹Ù@Wê@ý[@‘@4<@âý@Â4@"@Vw@yY@z@•F@² -@Ƀ@Ýy@ð/@ò@Ðè@ª¨@”œ@‚4@bR@(è@ñu@éy@Ä@ ‡@$~@@Ýš@_@ž5@ O?ÿç~@=}@Ÿ¨@Ùƒ@¬?ÿÍe?ý»S?üŒ?üè?þ4é?ÿ?p?ÿŸ¿?ÿÖ=?ÿô®?ÿ¢?ÿ3?þØG?þš}?þ‘?ýªþ?ý‡·?ýý?üd+?üM?ühL?üqF?ü?üLy?ý3?ýÖV?ý?ü±™?û³Þ?úÎä?ú\6?ú€¾?ûÅ?üJ?ýÑ?ýˆ?ýL ?üK?ûG¥?ùïç?øÈá?÷Ô?÷Á?öh?öŽ9?öèy?÷J?øM?ù/u?ù·?ù­]?ùd«?ù3z?øöÕ?øh±?÷¸²?÷I5?öüí?ö,î?ôÑ?ó¾Š?óU£?ók|?ó»`?óº‰?óÝ?ñîV?ñ?ð€O?ï±Ï??í.!?ëõû?ë‚¥?ìJ?í( ?î+?î -É?튇?íW?í †?í¸ª?ìîÛ?ëR¤?éañ?ç¾ä?ç ?ç’„?èV›?èfq?ç¥}?æƒ?å*?ãn×?á5Ø?Þ™C?Û²ã?؃ß?Õ)?ѯ?Ízf?ÇÕ÷?À¯ï?¸A¬?®­A?£ß^?—†_?‰†?tÞ?Vï -?=5D?-M:?,)‹?:Š?R7r?o5?†?“¿›? H?ª¸p?³_?ºLª?À#{?Å—ð?ËÚ?ÐRC?ÔÃD?ØC;?Ûä?Ý%V?ß9?àËË?âGã?ã„?Ù{ò?Ø($?×¾à?Ø{q?ÙÝ,?ÛQY?ÜšÞ?Ý0>?ÜMé?Ùf—?Ô•û?ϤÔ?Í>?Íÿ`?ÒBû?׃R?ÚËw?ÛvÏ?ÚïV?Ú"v?Ù2»?Øšõ?ØØ¢?ÙÌ?Úã÷?Û±–?ÜQj?ÜÓ"?ܼN?ÛÅ€?Ú‹?Ùò ?ÚT&?ÛC—?ÛàÏ?ÛÖ¦?Û:Ò?Ú@û?Ùz®?ÙR?ÚPÝ?Û'K?Û'd?ÚQî?ÙO?ضÄ?Ø…ƒ?Ø_Ä?Ø?×oÃ?Ö{¸?Õê¹?Ö#’?Öë!?×êØ?ØŸy?ØÌU?غø?؉ˆ?ØC ?×ׯ?×%ÿ?Ö†µ?ÖYá?Ö«¿?׉*?Ø>?Øõo?ØÌ?×î?×¢M?×Ë–?Ø -?Ø)œ?×è?ÖŒ7?Ôô?Ò l?Ñnè?Ò+?Ó>é?Óë×?Ó~?Òtœ?ѲÐ?ÑÔ¬?Òî–?Ôd?Õâ?ÖÀ?Öù?Õ &?Õ.Ð?Õ&ý?ÕÍ;?Öµg?×y?Öq ?Õ•š?Õ/?Ôܼ?ÔõÍ?Ô÷?ÔÈg?Ô¨z?Ôr%?Ôš?ÓžŸ?Ò¬5?уÜ?ÐÀ@?Ðö?Ñ ?Ñ»W?Ò&ª?Ò?ÑÝT?Ò,,?ÒÌ7?Ó:ð?ÓD?Ô?ÔÈ~?Õï?ÕÜ?Õ#l?ÔìÄ?Ôqî?Ô+ä?Ôy?Õe?Õm-?Õxƒ?ÕpO?Õe??Õ`?ÕjQ?ÕYø?Ô÷I?ÔQ%?Óiç?Ò2#?Ðóé?Ð1S?Ð!_?Т}?ÑpQ?Ò>?ÒØ:?Ó-?Ór?Ò‡ª?Ñ®=?Ðç?ÐpU?Ð>:?Њ?ÏÃS?ÏOÝ?ÏVé?Ð ?ÐúL?Ñ ?ѺÝ?Ñé?Ò(?Ò- ?ÒC?ÑÂQ?Ñz?Ïì)?Ïw?ϳ?ÐĶ?Ñ@??ÑBá?щ?ÄÿÐ?Ä£Ÿ?Ä8U?Ä"ï?Ä€¥?Äâ?ÅQ?ű?Äà?Ķè?Ä…)?Äj=?Äk?Ä;ò?Ã܆?éÎ?òË?ø?êX?Ã\°?®1?Áô™?Áv?ÁN?Àܱ?Áf?Á‚m?ÁÉ'?ÁÄ’?Áˆg?Á9—?Á&Ü?ÁQÛ?ÁiÊ?Ám?Áe?ÁK¢?Á^?ÀÆí?Àfà?À1G?ÀŠ…?Á3\?Áƒd?Á}t?Á[D?Àë9?À|°?À{,?À?ÀOÌ?À…?ÀZ?À$¬?À+N?À0Ü?ÀE?¿œ?¿C?¾fö?½ßˆ?½3?½·w?¾Õ?¾Qž?¾F?¾³%?¾“¹?¾Ia?¾(z?¾Q×?¾ƒ?¾Ux?½òÍ?½§í?½?¼o?ºæ?º`?¹¹?¹Ô#?ºVU?ºÅÖ?ºµ+?ºK?¹ð?¹‘P?¹@?¸<Æ?·z?¶áõ?¶GÇ?µ\?³âŽ?²4?°«Ý?¯\Ö?­WŒ?ª­á?§Š‚?¤Á? 2?›òß?—¹?‘…?‰b?€•…?m]‘?Xhº?C:e?/œH?!²_?ÖÞ?(VŠ?9®Ó?M±þ?bSº?v™?ƒ™®?Šìt?‘cÞ?–òñ?›‚˜?Ÿ*‹?¢?™?¥)?§ûÕ?ªW³?¬d?®8 -?¯¤?°Xk?°ßÀ?±a[?²_?²Ì0?³+?¦?¦î?¥õ?¥þá?¦?¥¹†?¥D(?¥ú?¥d?¤ÿÁ?¤Ú4?¥ð?¥q­?¥p]?¥¾?¤ÝÕ?¤žÑ?¤~Ÿ?¤ªÿ?¤Å0?¤nš?¤$ê?¤½?¤ ?¤+ÿ?¤.®?£í ?£°¢?£L{?¢Þ+?¢Ä?¢º`?¢Ëì?£µ?£VÜ?£‡=?£Éc?£Ãæ?£\Q?¢÷Y?¢ÕÌ?£ ä?£Q?£Ua?£/6?¢ò_?¢£N?¢cð?¢Ð?¡á?¡þ—?¡ðA?¡|j? ù? |×? Þ?Ÿê÷?Ÿû? %?ŸúË?  4? T ? QX? ç? º? «?Ÿà?Ÿq -?Ÿ)H?ŸP³?Ÿn€?ŸBw?žö–?ž®Ç?ž™È?ž­L?ž¨D?žy?ž}?žŽ'?ž`—?žV©?žx…?ž?¬??œl¥?šøÛ?™8?˜À3?˜“—?™W‘?šŒœ?›rT?œOÊ?Mê?—f?nH?$¤?œ5x?šÛ?™âµ?™l?™{A?š/G?šß?›à?›A?›?›@|?›„?š®¯?š@d?™Ò\?™µÞ?š'Ô?šã(?›\ ?›0›?š¯¹?šD¿?š)ß?še ?š¦é?šÑá?šÈ®?šH?™äP?™ÎA?™Jˆ?˜àÙ?™YÔ?š+?šS­?™wy?˜^·?—_£?–X}?•êç?–~?—OÁ?—±V?—uí?–¶Ä?•ØT?•{ ?•Ç>?–cw?—¡?—Τ?˜?™P?™ Á?—ÔÓ?—S¹?—F?–î-?–³?–Ë–?–ë?–àŸ?–“x?–y?•Ê"?•¥Þ?•ZM?”Ö¨?”Pè?“ ?“<„?“š?“b?“ó?”5x?“ýÊ?“c’?’§„?’+l?‘ïV?‘ßl?’;T?’Û@?’ûá?’³Ñ?’½Y?“d?“r?“ÇK?”!?”2Ï?“Õz?“Wô?’ó¥?’­s?’„†?’ŠÑ?’Ä!?’Û·?’”\?’$?‘ÀZ?‘•Ÿ?‘Sƒ?‘"Õ?‘4}?‘/´?‘?ùæ?½•?·b?Ž6/?Z‘?k?Ž\^?^þ?c?ª±?à?Ó?Ža}?Ž{?Ž?Ëì?»×?Ž@ê?ŽÏš?Ž¿S?Ž`Û?Ž ?Ïh?‘?„N?Í‹?Ž?y€ ?xÔW?xx?x`?x2?Xåò?Xp5?XÃ?Wô?Wáý?W·K?W¾×?WÝ9?WØ‚?W­z?WN?Wu?Võ4?Vhh?Uè?Tjë?S¶H?T:„?UA?UH]?U?TÒ9?T[p?S€ -?Q²?NÄÀ?K¸?Lg¢?O Ÿ?O²"?MÖz?M@?O+ã?P͆?QÂA?RS?R‰Ì?RŽ?Rž?RpH?RA?R, ?Qý‹?QÖ°?Q£C?QN)?Q )?P’ò?P~f?Pê(?PÁ¸?Pšn?Q=›?QŒß?Q†?Psm?Pö?Oçg?Oÿ3?P2?PX?OÑ¿?Ný?N8?N;ò?N¬0?N¬5?N??N¢?MÐä?M†¿?MÁ$?MÖ§?M8í?Lç?Kºá?KhG?KËÇ?LCæ?L‰?L´»?L¸Ò?Lqk?KôB?KÈÜ?LÇ?L5R?L&ö?KÇÊ?JÚ¥?Iä ?I_…?It¢?J Ã?J¢?J®‚?J”ê?Jx?Iæ)?I@^?I^¡?I‚Ö?IWú?Iœ:?IÎ ?Iva?I8²?IH?I$?HµÑ?H”?HêŸ?IZ1?IkÒ?I×?HkB?H.ù?HNú?Hœ-?H¶†?Hl?H}?GÛ?Gµ?GÁ³?GË.?GÅL?GéZ?H+§?H©?Hg?H'À?Hè?Gžf?G<½?G1®?G) ?G ¢?G4w?G1J?FïÄ?F¿?F™›?F´{?FÞ¯?F¯?Fm}?FP»?FR‰?F‘D?F·?F™«?F^?FK~?Fˆƒ?F’™?FYÂ?F1q?F ø?F?Eï]?Eþ>?Eÿä?EÜ??g2??{??Žá??D?=Ýî?<‡3?;¾“?;îÖ?<Íû?=ñ-??k??OÎ???y??Nn??'Â?>¾?>¨Ä?>ÓE?>îN?>¹³?>Lz?>j?>*?>0 ?>+?>X‹?>%ˆ?=ß~?=¸?=ŽÂ?=±ä?=œ’?=ï?<ŠÚ?ô?,ht?*Î3?*Ct?*õ)?,¥?.)??.½f?.º‹?.¿î?.¦{?.˜g?.Ð=?.Æ ?.­&?.¨@?.P1?-O)?,1­?+^?+Z ?(ð?)@­?).æ?)‡?(Ãü?(SÕ?(¡?)/W?)6Ü?(Çñ?(7þ?'eÔ?&Õõ?&¥·?&y‘?&¨í?&ÇÑ?'[?'h×?'žw?'dc?&ð*?& f?&…Q?&;¯?%´õ?%0ì?$Ç?$°?$í¡?%o»?%…?%xÖ?%K%?% r?$߯?$u?#ðB?#i_?"ÎW?"=`?!«)? Þ¹?ËI?Wï?›Y?ù?…q?‰è?Uë?s×?X«? ‘ª?xr>ýíô>ötR>ò ‰>è¬>á\º>è>òkL>÷G>ý‡F?Â9?åã? lê?@ª?|µ?çÆ?Ô¬?•Q?ýU? ú?ß–?Šö?äi?3Ø?²:? ?ß? Ñé? å²? ×Ð?!ö?!3?!3Î?!#? úÑ?!v?!1?!·? ä/? ¬Ò? ²†? ËÜ? ØÙ? š/? T‡? aõ? ŠÕ? nò? ,~?å}?¬B?´Ó?òß?ác?Úõ?­°?a4?+K?/ ?/°?éc?[?)‡?q{?oê?JÓ?*˜?À?—ù?iX?LÃ?8?%}?øä?Éõ?¶?s+?$ˆ?Ø?ãÓ??°Ø?d9?‹k?g?Lç?j?v€?&³?.û?M5?+m?þ®?µŽ?q¯?—?á?#8?1?/®?x? ?ÿw?ÿî?ö?Ò3?½¡?²ñ?›E?†b?i8?JU?0µ?"? N?÷Ú?â‰?Ëf?¬5?Šƒ?n?Xô?Eí?/‰?#?ñi?Õ¥?¼Í?Ÿå?A?_–?Aš?%Ñ?8?çÊ?Ë?­o?“«?wÐ?V?Lâ?;?$\?¢? ä'? Ò? Æ&? ²÷? ž? ‰6? sÌ? \ù? G¥? 3â? ó? ? úù? ç? Ô? Á¸? ¯Ž? œ½? ˆ? rÝ? ]“? Aœ? ¡? ×? g? ó¸? ã]? ÐÍ? ¾”? ¬z? ˜? }¬? Z»? Jß? Kð? ;_? ö? Ë? ‡? -îç? -à? -Î~? -º3? -¥6? -þ? -z³? -dþ? -N\? -7? -? -×? áA? ¾;? Ÿ¬? ~? g#? Tó? ;é? .?¸‘?¨Ã?Ó&?±o?A¶?+ù?K7?,D?È?¥ý? Ð?q8?»Ý?ÚŸ?½ð?¶i?»Ä?n?Hf?[š?•V?˜Y?V4?C?ñU?/#?U”?]?–?çc?†˜?]ž?Yè?kü?ŽŠ?´Ç?¾µ?„¬?cI?K ?­?ôÝ?ÛÉ?•³?•?Îÿ?ðX?´Š?’=?»b?Öw?²?œ‘?˜’?»[? Ö?qˆ? ­?¹ñ?$Í?¹?|‡?âÕ?Òq?ù˜?ï|?ÎS?&#?"P?éK?ù8?M ?Ü?ÐÀ?îH?|‘?›?=,?×?O?ØX?œ?p ?AP?1?G;?,ÿùN>ÿÐÜ>ÿ«ä>ÿ‰î>ÿpÈ>ÿX´>ÿ8á>ÿß>þª4>ý×>üOj>ûwÜ>úøâ>úã>úLÑ>ú™>ùÂô>ù†”>ùAM>øõ˜>ø¶>ø€µ>ø@>ø¬>÷͉>÷Ÿ>÷r:>÷<—>öüØ>öÉ>ö®ê>ö’+>ödi>ö0I>ö€>õÔu>õ¤;>õz›>õV>õ+(>ôú¿>ôÇC>ô >ôZL>ô)>>óò>ó¬­>ó`Â>ó;á>óý>òó9>òÁê>òÆ>òX‹>ò'¡>ñÿî>ñ×õ>ñ¯£>ñ„\>ñTÉ>ñ)>ñ|>ðÝ>ðµ<>ð‚>ðJÐ>ð -Œ>ïÆE>ï;>ïkÚ>ï?i>ï Å>îͧ>îŽN>îJB>íðÌ>í˜H>í57>ì¡È>ëöÕ>ëË>ê4>éÕ[>é¦>é|>éQê>éf>èê»>èÇ‚>蜥>èi+>è8A>è ç>çäž>ç¾>ç–Ñ>çuo>çT‘>ç0v>ç w>æçm>æÃÞ>æ ë>æ«>æeµ>æJE>æ/ò>æ%‚>æx>åý@>åܾ>å×X>å¶â>åsi>å;R>å4•>åß>äç>äÄX>äȧ>äÚý>äßU>äzü>ä0>ä1à>ä½>ã«3>㶡>ã¤ó>ã¬ç>㙚>ãm°>ãd >ãÞ>âÉ>â=$>áÂ>áL>áKò>áv>ßÚX>àŸå>àëX>à°5>áGf>àß{>à2Š>à¥>ß,n>ß{ì>àœh>àˆ€>à¦H>àÁZ>à`>à|†>à >ßùk>ߟ[>àõ>àI”>à}å>à‹1>ß×>ß™6>àCº>à-»>àX>àá>ߘ¦>ÞÙ$>Þ]Á>ÝÑv>Ý3™>ÝÉ«>Þhs>Þ„÷>Þv\>ÝæE>ÝÉ%>Þ(æ>Þv’>ÞSk>Þº©>Þö">Þ0Ø>ÝÊÓ>ÝËR>ݧ6>ÝW>Ý5Þ>Ý1Õ>Ýpj>ÝSÀ>Ý$É>Üúö>Üx˜>Ü)ú>ÜEÞ>ÛóJ>Û±c>ÛË¿>Ü ä>Ü&E>Ü/>Ûé¬>Û—R>Û¢>Û¡<>ÛxÉ>ÛP“>Û8¨>Û,p>Úí0>Úí:>ÛP>ÚÙù>ÚŽÅ>Ú€O>Úµ>Úx—>ÚT4>ÚHh>ÚNR>ÚE9>Ú7$>Ú¥>Ù¼Ÿ>ÙI:>ØÞŽ>Ø7>Ø9ç>×ú_>׺`>×~§>×Fô>ק>Öè>Ö¹ÿ>ÖI>Ök}>ÖFÑ>Ö#:>Ö‰>ÕÞð>Õ¿ >Õ¡æ>Õ„¯>Õcï>ÕAÕ>Õ 4>Ôÿ’>ÔÞl>Ôº">Ô‹‹>ÔO >Ô“>ÓÍ<>Ó™>ÓO‚>Ó}>Òç>Òȧ>Ò·´>Ò s>Ò‡J>Òlî>ÒQ>Ò4³>ÒY>Ñø£>ÑÞI>Ñ¿µ>Ñ £>Ñž>Ñ_À>Ñ=>Ñë>Ñf>Ðà¼>нI>К>ÐyÙ>ÐZu>Ð4ú>ÐS>ÐÒ>Ïæ¾>ÏÇ°>Ϩ<>χ->Ïe*>ÏC>Ï ¾>Îû6>ÎÕë>βé>Î_>Îm¸>ÎJ{>Î}>Íõ:>ÍÛÒ>ͼ>Í•A>Íqz>ÍL³>Í#>Ìø¶>ÌÔ >̹>Ì>Ì<6>Ì Þ>Ì,X>Ì>Ëø>ËÒ…>˳/>Ëx>Ë\+>Ë@>Ë2\>˾>Ê×B>ÊÉ>ʽ½>Ê©w>Ê>ÊO>Ê8->Ê:>Êl>ÉãL>ÉÁ@>ÉÀ!>ÉŽ>É®ý>ÉDÁ>ÉÐ>Èã¯>ȼ¾>Ƚƒ>È?Ê>ÆŠã>ÃX6>¾æ>»††>»Ë>¾ž>ÃT>ÅäÒ>Æõ´>ÇOa>Ç|µ>Ç! >ÆÍ´>ÇE>Çõ>Æn¨>Æf >Ƈy>Åç˜>ÅÎí>Žg>ņ>Æ4>Å >Å’U>ÅÐ>Ÿs>ŨV>Ÿ“>Æ?>Åcò>Ä®¼>ÄÎ]>Ãã¼>Ãn+>þ>ÂýÉ>Â,ó>Á¤>Âr>Â>±E>ÔÛ>ÃCø>‚Æ>Â¥>ÁÃÿ>ÁÖ÷>Á9>Àw»>Àj->¿ÿ[>¿Š@>¿%J>¾Ì>½­>¿*™>¾·>¾DÔ>¾?¢>¼fÌ>»í>¼Ät>½)÷>¿*>¿t>¼_×>»›K>ºÔE>·Êr>µ,.>²ÍÇ>¶%Þ>ºM>·æt>·w~>¼EŽ>½¸_>¹‹A>·K>ºxÁ>¼”í>º¢å>¸Ö>¹Z½>·Ç*>¹Ö¤>¹µœ>ºfô>¶ä~>¶ù“>ºñÈ>¼æ·>½¹Ç>¼æ`>¼uR>»%>º[å>º¯L>¹”f>¸Cé>¸DŒ>¸J>¹¾>¹L>¸D>µ)>³4õ>³2Ý>¶F»>¹í>·Dß>·->¶™”>·XV>¸ ->¸Â)>·ùL>·c³>·7©>¶-ß>·ër>¹¶’>¹Éf>¹WŠ>¸¡Ñ>·­k>´Z*>±6>²>µƒ=>´‚L>°Î>²b¡>¶ m>²Õc>³$ô>¶F >¶=Ú>µ÷>²l_>°–Õ>±6>°qf>°}«>³·>³Þª>²_Æ>²ÒA>´}ë>´p¾>²p>¯Ï>°8>²”¿>³(Ü>³kž>³q\>³ë®>´)/>³VÎ>³Â>²¾u>²D>²?>±õ>±Ú>±B°>±íË>±²Ä>±hf>±i>±²>°½>¯Ðç>¯Ø¤>°5¦>¯îF>¯Éð>¯¦ >¯ >¯‰/>¯{g>¯[ >¯7í>¯E>®ÿF>®ãm>®Æ§>®§”>®„>®g¬>®Lù>®4U>®È>®S>­îv>­Ò·>­·›>­š”>­>­e2>­HP>­*>­ e>¬ñy>¬ÕÝ>¬»´>¬é>¬{>¬W·>¬5»>¬ç>«ô>«âf>«Ñ¸>«»%>«Ÿ³>«ŒA>«e>«k,>«S>>«BÞ>«+>« G>ªï>ªÌk>ª¥.>ª—É>ª‡Z>ªß>ªh>ª] >ªD>>ª8O>ª j>©Âú>©ËE>©æv>©Þ¾>©ÅŸ>©žm>©IT>¨ì“>¨ðS>©>¨ú>¨±š>¨³>¨¼y>¨‘!>¨aÇ>¨S2>§Èa>§‡Â>§üw>§ýâ>§Ê+>§”â>§„—>§Z >§L>¦ü£>¦ùƒ>¦æ&>¦ºq>¦€°>¦b>¦:q>¥Ëù>¥‚[>¥@>¥zØ>¥d>¥Z\>¥9x>¥ ¸>¥"t>¥¢>¤áö>¥ý>¤ôí>¤Ë!>¤À>¤Íù>¤áô>¤»>¤ØÇ>¥Š>¤Ê >¤t>¤«ì>¤Þ8>¤cî>¤%>¤[’>¤tã>¤Šº>¤¢ >¤7‰>¤‚Ê>¤ ×>¤êâ>¥ˆN>¥0>¤éÄ>¥)W>¤Ôÿ>¤‡>¤ÌF>¤©>¤É>£ý>£Ž¹>¤¾>¤#¾>£Åd>£b>£h>£ýô>¤‚Ë>¤Î>¤®'>¤k“>£í¬>£—s>£>£²>¤É>¤ÄÐ>¥„Ë>¥p>¤÷l>¤²³>£à{>¢×,>¢X>¢¢Ë>£§>¥>¥Ú†>¥­Þ>¤_>£R“>¡qú> à>¡-¼> ‘ª> ÁÊ>¢}5>¤‘>¦")>§?…>§oo>§/°>¦ -q>£ûÄ>¡ÃÜ>Ÿd5>ž]ð>ž½ >žÅí>Û2>ºº>ž³%>¡ƒw>¥JY>¨ -@>¨ï±>¨>¥t,>¢\>Ÿ"–>›·6>™¤>™è>›ï>ŸQÑ>£Gl>¦g¨>¨¶>ª±À>«}Ð>¬s>¬`Î>«›>©Ÿu>§ù>£#4>ß>˜K¾>“ä:>’S->“#,>•¾›>š6¾>Ÿ8>£Þ>¦Ú`>ª-a>«¸ï>¬€•>­£Ý>®m>®]¥>­]ã>«êé>©f{>¦ÝÀ>£—R>žç>˜™—>‘6ç>Œ \>Š10>‹fP>ƒÿ>”ÒÏ>šJ›>žÐ>£9?>§>©Ö`>«±Ü>­$¹>®^·>¯3>¯J>¯N>¯@Ó>¯ä>­àK>«»`>¨Ï>¦NÜ>¢Ë–>ž>™&5>“)£>‹š">…¤û>‚Öm>ƒ(\>‡$È>’½>”H³>™ˆà>ž%^>¢lð>¥¢,>§Å»>©ve>«‹>¬µ >­‡ ->­Þã>®'î>®eù>®rK>®Ÿ2>®_Z>­£E>¬¹r>«qƒ>©E,>¦ò~>¤í >¡áð>Õ ->™¢ô>”}¶>æþ>…ØH>{·í>pù>o>u¡>€ú>‡Í¦>Žž©>“0Ê>–Ê>™Ôò>œ‡W>ž¸µ>¡fš>¤aò>¦lx>§ý[>©]ñ>©æz>©Û>ª ¹>ªš«>ª©ø>ª„>ª6–>©¬ò>©%>¨H›>§û&>§¹÷>§;1>¦9¥>¥†>¤£Y>£§¬>¡£Î>Ÿ$—>œ± >™y½>•çœ>‘›r>‹Ý5>„þõ>z8§>k0‡>b•5>bÙ0>jœ1>w5&>‚í´>‰šI>Žõì>“Hv>–ñ>™ñc>œu >ž‚i> @ß>¡' ->¡ŽL>¡ºe>¢W[>£?>£m>£(>£Zj>£^>£ «>£¼Õ>¤-ß>£çU>¢þÞ>¡ï§>¡Ôˆ>¡JJ> àù> ÿg>¡W> è¡>Ÿ­“>ž’+>žž>Ÿ- >žÆ”>ž'2>¢Ì>œ¦>›`W>™ô">˜,a>–a>“ð(>‘»â>+]>‹Ì§>‡âP>ƒ_I>{7e>l•¿>]sU>Pc>JD >R´œ>`ÉÂ>o%…>{½“>ƒ't>‡cE>Šºg>†k>ú¯>‘åø>“ns>”¡9>•€%>– à>–‰4>–Øç>—¯>—C²>—sÃ>—>—¼8>—Î*>—…u>–í€>—œÅ>—ëä>—ä`>—ו>—Î">—Œ7>–g^>–—à>—lH>—l >—OÇ>—4>—c>–ýX>–Ý>>–ºo>–˜$>–t2>–LÕ>–"ù>•ø·>•Ë[>•š§>•f…>•-]>”îê>”°:>”i¼>”Ì>“ÄY>“`º>’ñ>’t_>‘å•>‘=ê>w'>ˆÐ>Žig>¬>‹kÉ>‰_6>†Ô >ƒ°5>·ƒ>v‡>k­4>^ýÍ>P ›>?fY>8ð¼>EòI>UÁ;>c]>ny?>xÒ>€{>ƒO>…õÏ>ˆ >‰®>Šù&>‹þw>ŒË…>b=>Úæ>ŽFœ>Ž”ë>ŽÞõ>Ù>3í>‚>Žh>Žf±>Rý>oØ>jk>iF>\3>o>Ž­Ž>Žó¥>/Õ>!¡>Žá">Ž@G>Ž’X>ŽEl>Œ„>žI>Ž~ê>Žgô>ŽN|>Ž>>Ž%=>ß>Í>Q>®>˜Ë>|˜>:>>"é> ì>ŒÜY>Œ—j>ŒžÅ>Œ’è>Œsƒ>ŒR›>Œ2>ŒÒ>‹ï¢>‹Ìy>‹¨Ñ>‹‚¾>‹Re>‹3Œ>‹÷>Šìa>ŠÂÀ>Š—È>Šjû>Š9>ŠG>‰¬‘>‰H>‰>‰d>ˆÎŠ>ˆxë>‡þ>‡ÂÄ>‡kX>†ðà>†ZY>…´œ>„þ`>ƒôK>‚¥¥>¢ø>€1;>|~V>w{3>qÞ­>i#Â>_ ‘>Xñ>LŒ>>ÈÊ>/"J>*Ç>71K>E°<>QÖ6>\5˜>e>kè>nѶ>uöÖ>z·>}lÈ>DZ>€ÛN>ŽÐ> -ð>~fë>ÓK>€-”>‚f^>ƒ»m>ƒäv>„>„Z>„%¯>„3³>„5í>„6>„0T>„t>„>„½>ƒõ²>ƒè‹>ƒæ >ƒÏh>ƒ¶O>ƒ°˜>ƒ¡‚>ƒB>ƒxŒ>ƒc¾>ƒML>ƒ6>ƒ¬>ƒŸ>‚ÞÜ>‚”>‚ÀG>‚­>‚•>>‚|A>‚^Å>‚‚,ò>‚a>‚%>çå>Ï>µÍ>›©>‘>h«>OT>4‰>«>’>€ç²>€ÌA>€±2>€–N>€~d>€c>€B>æs>Ï¡>½>>~ß»>+Y>To>"–>~èú>}çý>{ -;>|Ñ|>}äú>|Úæ>|Æ•>}@#>}'Û>|ùÇ>|Äl>|–=>|1Ý>{è{>{â´>{µµ>{ud>{;>{a>zØþ>z˜º>zZº>z)ú>yô>y·—>yy>>y=;>xíß>x°w>xvR>x:?>wýÁ>w½ñ>wzŽ>w3Þ>vêè>vm>v4>uÚ¸>u¦>uP]>tð…>t‚i>t^>s¡#>s+>r›Ð>rî>qSþ>p‹.>o²5>n½>m™7>l>N>j¡¡>h²ú>f]*>c„{>`ÿ>[ÃM>V‚Ú>P>H[>?æ>4>&ô >Ye>áŠ>)òe>6ù>@h>H”>Oÿ>U8‰>YÈï>]pe>`X*>b¦]>du:>eêµ>g>h>h¿z>iQ)>iÁK>jV>j^|>ja>j»>jË>jÜ>jä->j—>j³ >jÍ$>jÁp>jº->j Ñ>j‡½>j;€>iHL>i”4>jý>ií>iŽ¿>g†Ê>gÇp>i8Ù>i7>i}>hæë>h¾#>h‘ý>hV1>h1œ>hv>gª¶>fMˆ>fÄk>gZã>g7í>g >fÞ>f©!>fÞ>fWœ>f ‘>eä>eÄy>e¢n>esV>eBÀ>e ›>dâ >d³å>dŠ3>dbþ>d5Ù>dÇ>cÙŽ>c«]>c}3>cO>c Á>bò>>bÁ_>bi>bdH>b5ä>b>aÜU>a®O>a}h>aI>aò>`ëÝ>`Á[>`–:>`iº>`;ø>` Û>_ß¹>_±m>_ƒ>_Tú>_&Ç>^÷¶>^ÉÊ>^œ,>^mÏ>^?±>^F>]à >]°Ë>]>]OÍ>]¸>\èü>\ʪ>\ ,>\mâ>\>?>\ˆ>[è„>[µj>[F>[NÒ>[*¾>[>ZÖè>Zž¿>ZY‡>Z g>ZÎ>YÙ1>Y±->Y‰Í>Y`6>Y/>Xñ>XÐc>X¬œ>X~í>XK>X€>WÏö>W°æ>W‡ä>WX;>W1ì>W š>VÖÌ>Vª•>Và>V_>V0>Uúœ>Uʤ>U¢/>UX@>TZn>TIØ>TÛ{>TÀ¸>T‡y>T_<>T7b>T >SÐn>S˜Ó>S€Á>SKc>S!–>RüN>RÌ\>Rš¸>R_g>R(½>QÄñ>Qµ˜>Q²Ä>Q„:>QM>Q¼>Pí¦>Pª >P{¾>P[‹>P,V>Oô´>OÔ>O’‘>OZç>O#n>NðÆ>N¹#>N€E>ND¥>NŸ>MËÐ>MŠ•>MFù>M®>L¹Ñ>Lmž>L>K´H>K«>Jç”>J—©>Jç>I˜>IŽ>HR¾>G‹¿>F¤C>E’Ó>DVg>BÚé>A(>>ã»><<ð>8ýê>5`>0.Þ>*T¾>#Q­>ø¶>ÍX>J>ê>æô>­>!3ú>(‰>-¢>2<$>5õ–>8ò›>;UÄ>=:¯>>´W>?ê=>@âÿ>A£Ã>B<->B´A>C>CZÈ>C’O>C»£>CÙN>Cì(>Câù>CÔ>C¼>C³Ü>Cb&>Cnò>CÄŽ>C¹l>CJs>Cù>CaÀ>CSÓ>C@@>C%Ö>C”>BéÄ>BÊ1>B©$>Bd>BY×>BCž>B 1>Aö->AÙ~>A¸T>A´>A_i>AEo>A&}>@þ\>@Ò¸>@´ò>@>@k ->@@R>@v>?ô>?Î?>?­á>?‡À>?`µ>?:ì>?>>îÐ>>ÈC>>¡“>>z‡>>T>>+û>>A>=àY>=¸Ð>=’»>=kÚ>=E=>=ƒ><ö”><ÎÒ><© ><ƒ0><.–><<>;é>;ÁÆ>;—é>;s->;N?>;'>;Û>:Ú4>:³`>:Œj>:dý>:?f>:>9ò‰>9Ëù>9¤L>9{>9Vá>91ò>9 “>8å>8¾~>8˜;>8qð>8K\>8$N>7þ#>7Ø„>7±£>7‰¦>7d¾>7>Þ>7 >6ë€>6ª>6™ >6€Ó>6[B>64ø>6°>5é6>5ÃJ>5w>5wœ>5Q·>5+´>5&>4Õ¼>4«S>4Š¶>4hÁ>4Až>4 >3û>3Ø>3²Ä>30>3h>3@>3>2ñé>2Ò%>2¬•>2…¾>2_Û>2:Ú>2ì>1ñ(>1ÍL>1¨?>1‚é>1]Z>18|>1r>0íL>0É‘>0¤°>0»>0ZÑ>05æ>0>/ë»>/ű>/ ÿ>/w‡>// >.óÖ>.å§>.×H>.Á”>. ¶>.yM>.M/>.0>.f>-êÈ>-Å‹>-¡¢>-zê>-UT>-/X>-2>,ì»>,Æó>,‰µ>,X¹>,Qã>,"?>, G>+æ >+À>+¤‘>+t˜>+Dª>+4>+j>*ó|>*ι>*§~>*„/>*;u>* ->*:>)ò>)ÆÇ>)£Ï>)È>)iÛ>)@ù>)!‚>(ý>(Ûœ>(¹£>(•µ>(nQ>(K·>(+J>(Ú>'ß–>'¤C>'“Å>'yÚ>'Qø>'1S>'ñ>&ìó>&Äì>&ž>&…'>&c>&?ø>&>%ú>%ÖÔ>%³+>%ª>%h…>%D§>%%>$þk>$â±>$Á>$ž>$y«>$W¿>$6J>$>#êE>#É >#© >#zµ>#^å>#C6>#!î>"ÿÔ>"Ò…>"mÿ>"w€>".C> Tî> …¶>! >á>é3>!‹`>!†>!bª>!A> ñ„> =¯> ­\> ´÷> “0> sw> R¾> 2> 3>¸8>^>|P>†’>eþ>D>!å>ÿe>ÚŽ>«ó>zµ>BÂ>M™>1U>;>ðM>Í—>«ž>‰Ç>gã>E¾>$%>>Ü>­Î>–3>y+>VŽ>3Ì>¸>ï >Ì‘>©²>„>Mð><ò>f>ùš>Õ#>­Ñ>d/>P>CT>>úS>Ôö>­è>ƒç>_>8\>Ð>æ7>»Ÿ>J>TL>#’>þK>¥>ƒ×>e:>,k>îG>«‡>`{>E>Á5>b}>ù >í>ùØ>\¦>¥W>Íf>Ëÿ>Mþ> #ç> €Ñ> -+Ò>ŒJ>S›>n}=÷…Ù=ìb=ÞµP=˘=ÈY`=Û×=èþ•=óñ~=üÀ_>’'>*P>Ó-> Ò¨> j> ªè> ¬(>z$>">š>üG>Ei>‚ó>´=>Ø>ðã>x>M>ò>S>ì> -Q>ü>õ?>æü>ÒM>°•>¬c> œ>Œ>v>`7>I.>1…>7>ÿØ>ç >ÍÂ>³Þ>™\>L>dt>I…>.†>>÷²>Ü>À2>¤P>ˆ5>kÿ>O½>3^>!> ú†> Ûƒ> ¼ù> ¤> ˆY> k¦> Nß> 1¸> > ø> Û€> ¾Í> ¡Ø> „P> \> Az> +t> r> ñÍ> Ö¨> ºŒ> > }ô> c> F•> )µ> ü> -ð> -Ó$> -µp> -—:> -|2> -_›> -BÈ> -%á> -D> ê`> Î9> ¬ë> à> xì> \S> =Ø> °> Ä>é<>Ì×>°->“O>u¬>Z>=À>!*>›>å ->Ë'>¯ >’ >un>Y™>=> ,>‰>æ`>Àd>—>]>uö>Yt>:>!D>æ>é¼>Í‘>±m>‘9>L¸>Ã>™Ô>¿>œ>)Q>`ù>ÞÈ>xõ>{ä>]><œ>%>> ->ðv>Ò>¶Ò>6>÷>]ˆ>EÜ>.Ï>ç>÷¤>Üs>ÁN>¥§>†>eð>R[>7¥>7>ÿÁ>ã^>³Ö>£Ÿ>’R>só>T„>á>¥>ïS>Ó¿>µ”>–·>w‘>aµ>Kÿ>,©> ä=ÿò&=ÿÀ=ÿŠ;=ÿT‹=ÿ±=þçÅ=þ³±=þ}æ=þGw=þP=ý½X=ýxü=ýUÀ=ý9™=ýÛ=üÑa=ü›û=üfª=ü1j=ûü(=ûÆô=û‘À=û\ =û&Ã=úòx=ú½o=ú†æ=úR¦=ú«=ùéë=ùµ*=ù€Y=ùK,=ùa=øáâ=ø­Ë=øyK=øD§=ø9=÷Û:=÷§=÷s)=÷>ð=÷ -¥=öÕü=öŸç=öky=ö9Ã=ö =õÑÍ=õž=õiú=õ39=õ_=ôÎ¥=ô™1=ô\Š=ô0Ù=óÿç=óÌ_=ó˜Û=óe`=ó15=òú:=òÉõ=ò–ƒ=òbR=ò05=ñòj=ñ“Ë=ñ‹=ñcz=ñ.è=ðú=ðÉÅ=ð‹[=ðŒ=ð =ï÷=ï“=ïZ=ïeS=ï5P=ï =îÏQ=î\=îcª=î)¦=íòv=í¿D=íe#=ì‹Ì=íÁ=í -=ì§=ì2ù=ìVõ=ì2˜=ì=ëÞ}=묾=ëzÝ=ëGý=ëˆ=êåq=곸=ê˜=êPX=êî=éíW=é»=é~X=éJ4=é&û=èö:=èÄ‘=èN=è`–=è1=çÿ`=çÎ^=çœö=çká=æá¬=å­E=徇=ã(«=ålr=æC=æ=ååQ=峡=å‚á=åR_=åœ=äÉ=ä¾Í=äå=ä_ä=ä(=ãú=ãÐ)=ãŸT=ãZY=ã/Ñ=ã}=âß‘=â®W=â,=âNº=â¯=áî²=á½È=áf•=áDó=á0=àñ=ß¿ç=ßÿ½=àoM=à:i=ßõR=ßß7=ß±ç=߃´=ßQ=ß @=Þíä=ÞÆÝ=Þ˜=Þhµ=Þ3k=Ýæ¾=ÝÍ=ݪ¦=Ý}[=ÝB™=ÜÁï=ÜX=Üœ¨=Ü’²=ÜdŠ=Ü5Ô=Ü-=ÛØ=Û©ó=Û{[=ÛLÈ=ÛY=Úïê=ÚÁy=Ú“=Úd˜=Ú5Å=Ú=ÙÙÍ=Ù«=Ù?rÀ4?w@þ?|H?C^?€p?ÛZ? ¸?}\%?yÊ?t²Û?pµ=?púö?vÊ?}±?€ü}?X‡?x?zv?v~›?u€‰?wAµ?y7?z Ö?xÜ6?wo›?v¸ª?v·?wše?yÙ??}0?Óé?€l ?€0 ?±¹?áþ?€—7?;?‚T?·H?€H>?|Â÷?zä?y·Ò?zö¹?{ûf?zé°?v÷R?q¯?n¯å?pXŒ?tÅÇ?w¸??waO?uûJ?v õ?yƒ2?{òÒ?{·ß?y/ˆ?vD?tnü?sÀX?rø”?p×o?möÁ?l ?ný—?sïÉ?y7v?|Á¯?}Ü6?}0õ?|7w?|@ƒ?}zi?~Ô?~ûš?}—n?{†.?yªm?w°/?t[?p#˜?kÉ“?iP¾?i\?k[å?n¦P?r¬…?vo5?xZÌ?w$~?s¡=?q(ð?rfº?v3,?y$)?yhž?w°ä?iäú?hI ?g0w?f»ú?fņ?fÅ”?f|¡?e÷ü?ec?dN©?e­@?iw­?mtz?oâj?qWŸ?s 6?u9þ?w--?wwÞ?u½?pŸ?l°?kV?l7®?nß?o¨â?nn?lSÛ?k+*?k˜?lé¼?nýB?qTñ?s ?sDO?ry?pëâ?pï©?qjü?qÐ?r‘³?s©e?t<?t¨?spÎ?rÈ`?r)?qù?rbU?r±ä?qÛE?oÈU?më|?n‡?p$?r_³?rÔ1?på§?m ?h²??eÀ¯?eGP?fÑb?i2ã?kLf?ly½?m"?nt?põ·?s¤˜?tý…?td?r";?nè?lÑ?kT²?mNä?p£?shû?tõ{?uØ3?v\„?uÒæ?sÁ?qQ:?p|€?q£µ?sOG?t[)?tð¸?umF?us3?tc/?rw)?p÷€?põ!?qåÅ?r*?q7?o·ï?oB;?oÝí?q?rÖ?rsº?qѲ?pÖ?p=‡?oëc?o•[?o³»?pºz?r?r¥Ý?rî7?s{}?sÁ:?rgu?nÐ&?iÜ?ež¶?dÖ?e›Ò?h[ ?jY?k1_?k–Ò?k¶??kv?käÏ?m%?ntu?oA²?oÛ¹?o·…?mgœ?i9Û?eñ?eâñ?hj@?j³,?jŒä?hT}?f«?e1?ee?g?j `?mUF?oLÎ?n«ð?k\—?f4g?`fà?\UÙ?] -?bw5?h9?k­P?kÞ?kª?mH?o€ò?q%î?p«ï?n-â?j‹„?f€ª?bTÅ?^Ìö?]ÝJ?`õ)?f»Ô?l?oè?o‡Ã?n) ?k8?g(—?cl™?b1î?cöU?f`?eI1?bU´?`çÙ?c, -?gÔ?l{?o—`?pq€?nËv?jãƒ?eç£?b=G?aýb?dXˆ?f8Š?faù?fÞE?iz¸?làl?n@B?l®?j ©?iZ»?j×Û?l}ˆ?lo ?jÁY?h:„?eSÜ?c(µ?cŸŠ?g7˜?káL?o ·?pD[?p°?o—ô?n߯?m]7?j¸±?gò»?fÞµ?h~?j ¤?jß©?i“9?g:²?e?e‚¾?gf-?jWÌ?lèÇ?n×?mد?l¹â?kdN?j‚ª?jŠ§?kj-?lž²?mš‡?mâ`?lüŸ?jÙ`?hH³?f’?fGï?g?i8#?jbö?jÑš?kA?kÖŒ?m?nC?l?l(&?kmß?iÒ…?g]3?d„?b‡ý?b)5?bû?d¶"?g†]?j°f?lÔ?msj?l½ -?j¿è?h6P?fùc?h ²?j?lŒ?lÂ7?kg?hM©?eÏÆ?dte?duo?e…?f~ƒ?f?D?dÅû?b¢4?`N?_Ã1?a.Q?d€?hD‡?jõ?lN@?m ó?mSv?ll?j©.?hûø?h£å?i¬?jÖº?jÛ&?gÞ>?`qk?WJ@?Së3?YF‘?a<¼?eõ‚?gp?h?i2a?k&?m>Ê?n¥ ?n©Ç?mˆÕ?lœO?mA?nA??ou?nò6?n›]?n|=?n²£?o|»?pÆó?qà€?re?r‘¤?r×?sS?s˜Â?s?%?|É8?|Œñ?{X´?yÕX?xÎ×?x®É?y„?{ _?|s?|Í=?|/?{T?z-?xj‰?væÄ?v¦?wŒÀ?xà?yÂP?yâ^?y²ê?xüé?w¹?tâ2?tÛŽ?vš ?wÐR?xDˆ?y½?{ý?|·|?{V?xÔ?uØ‘?vgr?y‘?zË?xZÜ?t²T?rÎÙ?s O?sä%?sä‰?ssˆ?s^¢?sä›?t˜\?uç?uªO?vq?w>ƒ?x;?xÐ?xá ?x?vÙ2?vP?u‘J?têŠ?sK,?qeÝ?pÎ?p|€?pQ¬?p^?p× ?q»?pÌÌ?ph½?pU?oFö?m'”?jŽ´?j „?lo:?o,ê?ou¹?m@Z?jð_?j^Ô?jú0?kGz?jæê?jQä?i©?i?iuc?kÄ„?nR¸?nñî?mJ¼?iÞß?e*P?`´Q?_Í?a( ?dQ?g’?h -Â?g¾V?f^[?eÒ?d‹æ?cÔÅ?bC?` v?]ëÙ?\Ň?\Éi?])e?\õ”?\I?[I ?[|2?\y_?];@?]+­?\ˆð?[Ê?[yN?[ªö?[·>?[G]?Z¢S?YÐ?XŸu?WBò?VF{?Uñ3?U–?T¬Ï?Sßt?S–¼?S/Ã?RNó?Q‘Œ?QÉ@?R­Á?Rüá?RUê?Q{F?PØJ?Pb?NëÆ?N ?MÄœ?L˽?JÙæ?IgH?H·õ?H¬Ü?K#Y?O6?Pä?MVy?K¼?M•?N¥,?IpÜ?D$?HÐÙ?Wø?dë¥?cR?UP9?Kì?R§?fS–?vu·?t¶‚?aUy?K&Ó?E“A?Wʶ?vO ?‡?ˆÞ|?‡Á?`U?DÞ?<¿€?Kïé?jN?…‘ã?Ó¬?’7z?ˆ­×?n¸6?JÓ:?8µ?At??aì‘?…0 -?—™.?¥Y”?«–c?§€2?˜ù¤?ƒŒN?Z6?:/U?2ž ?GhÄ?ou¾?Ž/?¡¦?¯lt?¸O¦?½¯?¼4¸?³±K?£¯Ê?ŽÍ?l ‹?@£?'P¯?(¿S?A»#?ie?ŒÞj?¦Hù?¼LÇ?Ë?ÒN‹?ÔHì?Ó?ÍïŽ?Âð/?²F“?žåb?ŠW^?h3Ñ?=:n?!eô?!Æ?;Ûý?f É?‰÷}?ŸæG?³Æ¨?Ãôd?Î)›?ÒM?ÓHi?ÕÙÁ?Ù†«?Û\í?ÚÒÂ?Ø_G?Ò•…?ÈpŠ?º5à?¨T?”†6?~i?RGl?,NÌ?|•?Ï+?>¡G?hó“?Š’4?Ÿ¨ -?³QV?Åx?Õ¸ó?ãH?íÉš?õ¢ý?û?þ9h?ÿ¦¸@w@þ@çø?þ–S?ùp/?ó­°?íºs?æ¿ó?Ý|½?Ñû?Á79?­ÖÁ?—ó|?@‘?V$†?.Ç?C±?¤L?(!H?PX“?~a?•K?©‰Ê?»&m?ÉÛ˜?ÕõË?à/ ?é5Ê?ñ{œ?øÆ7?þH.@«¬@±í?þ=??ù¦è?öå?÷Þr?ü0™@ľ@-@@C?ý?ø?ö·R?÷´¡?õøã?ï?å¶è?Ýfž?ÖZó?ÎQ?ÃO?µÓR?§l?—ua?„QÙ?_–ˆ?8=4?SË?¶´?UÌ?)‡F?Mmm?tk?n?  á?±ôé?Âuž?ÐAÐ?Û>´?ä¼?êüe?ð[(?óöŽ?õ¨à?ö^$?øCR?ü+´?ÿ¾Æ@d-?ÿŸû?ü®ð?ù?ø´g?üˆ?ÿÀ!?ÿ«;?ÿÅ?ÿ»?ÿ-D?þ³¡?ÿ‚×@Õ?ÿùö@{@´J@É®@4=@˘@n?þõ\?ûÿQ?ûf>?ûíö?ûhg?øª‰?òÆ[?é³?àõO?Ûmv?Ö3Û?Í´?ÁÀÆ?³L'?¢‹‰?j¬?u!=?Jãa?%%? M? º»?'N?M‹b?v…?Ž ñ? E9?°/_?¾»>?˳ ?Õäã?ÜP¬?ßß+?ãå÷?ê€?ñ¯œ?öñ?÷ô?ø|?ùýÿ?þÂc@•Ö@öŠ@ˆ@LO@È@@„Ç@]@_z@èã@Ï^@Ì‹@1@êÉ@ݱ@Lø@Ðo@<`@òÂ@ ´}@ ¿™@ãý@µ@@Û@ž@ðÍ?üÉ&?å‘Y?Æ„«?µb$?ÃVû?ãˆ?ý´i@S@B¾@~’@ £#@ -Oš@ -/D@ 1ø@çU@kÒ@ë @_´@jò@•²@çÂ@Îü@d@>@Å¢@kœ@—ý@@4Û@yä?ýã"?ù¼Û?òÜ:?ébÂ?Þü×?ÔV2?Çé~?¸¤?¤A¦?Œ(À?`Ç/?+ZÛ?¸Ó?ýp?b­?CÃo?p¼ ?ŽZ?¢O•?µþ?Åʽ?ÔK“?àjá?ê ›?ñ Æ?÷Âþ?ýR@@xÚ@i˜@§M@š”@ö»@ -¨Ö@ àö@ ^²@ ¾@ ~$@MÖ@ƒ@0K@ äo@ ·@@ ¥@ ï’@²N@põ@}€@ýe@k@ ¸‚@ #d@ xæ@Ár@5@”š@Œ&@h@Æ@0Ò@iñ@„Ë@xF@Þ@. @âs@¦œ@ À@#7@@Ãõ@Í¡@ˆƒ@ õ@¹@— @ãß@í‡@ú§@.@,’@|‰@úŸ@”‚@-j@ûL@ñs@“D@´î@©¥@Ó@ @°.@^R@l@?@@ÑF@úà@Ð@¸¾@Þu@–@Àd@òÿ@ú‡@Ú@h@Gr@Rƒ@ÊN@Vñ@c @t@•0@Þ@b*@Y}@gÚ@2@³ù@k¯@®i@Á÷@–T@ä@ýã@ø!@ÆJ@àI@ ªú@\ù@ “@щ@Fþ@Hæ@oo@ –”@ I@ t@ -yW@ C@‚Ì@,C@7Ï?üæé?ôà?ê·?Þ&'?Ï^H?¾'V?«?–ˆ3?€Qf?Roc?,øÙ?"&Ì?92?dœ”?‰ðæ?ŸÆ?³I„?Ä]$?Òàá?ÞÛ:?é*?òêÿ?ü˜@ÿ@ ç@I@ü@ -ø@ -¨@ -Ý@ †ú@ ôs@ æÏ@ 9á@ Hù@7?@M=@ @ n@ ×U@ --e@ -k•@ -fN@ en@ 9ä@µ:@~È@äó@1@NŒ@³J@"ä@L&@‘µ@Ð¥@ `¾@ •ß@Êæ@³u@ðu@À@ƒ@…`@Ï"@Úù@>Ó@•U@{S@šX@‘ð@£÷@áj@ÚP@SÆ@ SØ@ K@ -Èà@æÞ@>S?ÿ¬Õ@ÿá@ _‰@ š£@ <9@ 7·@_B@?ˆ@mú@s˜@ @˜@³ô@ÉÞ@ñœ@ ë­@ -{Û@ -@½@ ðï@ »Ó@ gŒ@µ?@6@”O@ @µ@ wM@ †é@ ×á@ ðQ@ z5@ðã@þ@Äy@!@×@ò@±@U›@‰¨@ÎC@íP@( @rš@}š@<ñ@ù)@à@Þ·@µ¿@!ø@e @HÀ@ã@ga@XÄ@Û@áÐ@Äã@e¸@™@PË@³Î@‰@F7@˜@J@ò&@\?ý¢]?úµæ?þD@—|@õŠ@yõ@|³@RÔ@åÙ@è1@ð@R@ç_@NÅ?ÿ' ?ýoG?ÿ3Æ@N¥?ÿs`?þTŠ?þÞ?ÿ­ò@ ›@wª@îc@¾Ÿ?ÿð;?þ\®?üê%?ü?ü¦/?þŒ¹@:^@Ö±@%Ž@%Š@·â?ÿ½ý?ý Œ?ù`?õ€Á?ô•®?õ¸Ì?÷5Q?ùL?ûè?ûäØ?û÷Œ?üõ?üH?û’?ùp$?ø*­?ø$?øßi?øÞÌ?÷Ø?óî‹?ðÈý?ðuj?óY?ôí?ò»š?ð?ïÚÃ?ñI‘?òʉ?ñjÀ?ì@R?èã?ç£b?èà]?믾?ð/t?ó ¶?ñR¸?í È?ë­R?î—?ñ•î?ñá?ì6:?æŸ?âÉÞ?å ò?ê´¾?îû™?ï¡Ä?í0J?év`?çhÒ?çü?çÃ+?ã»F?Ýö?ÛE•?ÛÏY?ÛO?׃‘?ÑnO?ʽ…?ÃOÞ?¹þ•?®Wæ? Wè?ÿZ?{f?T"È?-ÔH?b¼?·‰?3…%?ZC£?¦ÿ?è¾? _o?­óÍ?¹Wn?ÂÛ?Çë?ÉY\?ÍHZ?ÔÃÐ?Ü ?á^?äaI?æÈÏ?軌?ê0?ëMœ?ìcÀ?í‚Ž??ï¹z?ð±?ïé?ìõã?ëZ?ë¾?ívË?îÜè?ïF…?î|’?í#?í™8?ðJ?òË?óÉâ?óÀ—?ó1à?ñj™?ìä”?æTE?â)†?ãk?èW”?í -J?ïT|?ïG -?îVå?îyÜ?î­a?ëÌQ?æä?åÞ?êƒ?îù´?îô«?ìD??ëX?í¨Ü?ð*?ð[?îSè?î=¥?ïï0?ðªV?ðYv?ð('?ð2®?ð]_?ïú¬?í§?é@ï?ä‚u?ázn?â:ª?æÇ?ëTÓ?ìÝ$?ì 6?êÜ?ê œ?énz?è‹'?çÉ:?çrõ?ç˜ ?çÕ›?è-„?è‚G?èBÃ?è¥?é(—?ëÅ?ìg§?í?íC}?ìÜJ?ë{%?èb?å%?å8V?é:?í/¹?î¹Õ?î;,?ìIk?ê³?ë¢É?íª•?îq?íN4?í4‹?î%£?îÝö?îûú?ï¼?ï-´?ïjÀ?ïk?î“¿?퉛?ì-?êL»?æ°?å];?ç/u?é^{?êßq?ì”=?îX -?ï`Â?ïg†?îv£?ìaN?ç .?Ýz?Ö`¨?Ûã¬?æŸw?í12?ïCN?î¹ì?ì^L?é•B?èº?çÓâ?èk„?ê,c?ì @?íV?îöE?ï®Ò?ï‰Å?íÖ¥?êx?åþL?åî]?éê??í_r?îK½?ìþ¢?é÷¤?ç¡_?è²â?ëäT?îGH?î¿l?ìL?èsv?æ?çg ?éH?èÂÎ?æ^V?ãÔr?áÇ'?á—ç?ä¡Û?è]9?ê17?éûà?èww?ç{ë?èSÕ?èâd?åÙZ?àv?Ýbé?á?æ,e?è")?矢?æ¬?å4®?ä.?äÓv?åûg?æò?åÚ?ã¿ë?Þï?Õ¬a?Ó9?Ù£¥?àAO?ákâ?Þ+Û?Ùû{?Øú0?Ú‘C?Ûb0?Ý?àÑ?á%Ÿ?Þeh?ÚÁ”?Ú‰þ?Ý;C?ßÖ?àœD?àìû?ßaö?ÛAN?×÷?ÙFe?Ü?F?ÜS|?Ú”?É–a?ÈòQ?ÈÖ?Ç3è?Æf2?Åð’?Åù_?ÅÕ¼?ÄÏ?Ê?Á?E?À#â?ÀM?À·¾?ÁEJ?Á2ë?À?‰?¾£ˆ?¼Üj?»È”?»²c?»±Æ?»O‹?»ú?»\?¼Žç?½Û?¾µo?¿g¶?¿ãÃ?À>?À -Û?¿´¨?¿;Ÿ?¾¶m?¾…¡?¾½a?¾Åü?¾€4?¾i‚?¾`‰?½ûQ?½K*?¼’X?¼?»É¾?»e"?º•J?¹C]?¸F`?¸ã[?ºUÅ?»I‘?»]Œ?º¨Ê?¹Ìó?¹Uç?¹……?º -?º/ò?¹Žý?¸£@?¸%^?¸#Ð?·Ív?µÇO?³b?²÷G?µj?¶Yâ?¶N ?µŒa?´¨n?´+Y?´v?³ð|?²¨´?°ü…?°¬V?°®‚?¯ö½?¯|B?¯:Y?®r6?¬õÞ?ªÒd?§Ó=?£Ž?ŸCô?œœÄ?š@«?–“e?‘7·?‰ÑZ?€À_?mÓ¬?XN?>Æ ? r°?¼Ñ>û?W?/„Â?Kç?bæ×?w™=?„®l?‹«´?Éz?”Î8?˜;µ?šØ›?œN¤?~n?Ÿê?¢ÇØ?¤¾þ?¦ê?§,?§r-?§Ð°?©ä?ª"ë?ª¡(?«M?«§?ª…n?ªl”?«Â?¬ H?¬ºP?¬ÿø?­n?¬ÿü?¬Ìê?¬Û(?­:æ?­yÓ?­¬H?®?®Ÿ?®oï?® ?­>7?¬že?­³?®å?®þ‹?¯bà?®¯`?­?*?«‘Ý?ª{?©Ï±?§Jw?¤P¶?¦Y×?«zÿ?®a]?¯-’?¯-Ü?®TA?­@?¬Z\?¬]]?¬¿E?­4?­Ÿ‘?­Ç;?­²²?­¿?­¬Ù?­Oá?­‘?¬¥á?¬_’?¬|õ?¬ª&?¬‹?¬gO?¬_ä?¬yê?¬j¤?«AÊ?© ?¨.Ã?©°V?«Xq?«´¯?«EQ?ªó?«b.?«ÅÚ?«¨?©»ý?©•?ªaS?ªöm?« á?«M¹?«4?ª›M?ª ?©ê?©ôL?©†;?¨sÛ?§ÕP?¨9|?¨úY?©¼)?ª‘»?ª‘·?©wŽ?¨}/?¨:.?¨;-?¨¾c?©€;?©Ùæ?©ÖÄ?©€¹?¨£õ?§n?¦È?¦…f?¦j†?¦Ær?§Pƒ?§âR?¨u:?¨É}?¨ÕÈ?¨¼F?¨¹Ï?¨XP?¥è? e ?œºB?Ÿ~0?¤*!?¦q?§:i?§w?§}t?§ c?¦°?¦¿Ò?¦ÕÈ?¦¥?¦ˆÜ?¦w‹?¥ÿ?¥Xe?¥Z{?¥®?£·??¡ù‰?¡‰®?¢ñH?¤º?¦>?¦]í?¥í®?¥_©?¤‚ù?£±S?£ŸÙ?¤F?£ÕÊ?¢g€?¢c-?£Åm?¤ŠJ?¤™?¤­Ø?¤ýç?¥BZ?¥HA?¤´D?¤Ù?¤Ž?¤fÐ?¤ŽÉ?¤8Ã?£ãê?£´–?£u?£ªÒ?¤GÌ?¤[D?£ì¨?£¿Ä?¤,??¤²;?¤?¤LV?¤i?£ÿî?¤-p?¤Qb?£à¹?£ R?¢Ê°?¢â‰?¢‡?¢¡X?£©?¤É?£?¢:ÿ?¢™e?¢Ýc?¢ªý?¢ –?¡wŽ? äQ? €? ‰?¡²?¡«Å?¡âÄ?¢ë?¢ˆ?¡±ƒ?¡?w‚Ï?ve?v!5?voŽ?v‘{?vTo?vYW?vSO?vh?uµª?tå°?td\?tYÐ?tC½?t K?t%?t?sÃ?sqv?sKí?rýD?rù*?s[¨?s§Ç?sI?r?pŒ§?pjn?qªp?rYM?qÔí?q:?pš£?p'?oWi?nìv?oAê?oÎd?p'ü?oÛU?oÐ?ng ?n)?nE2?mwt?l ?l ?lã?m2 ?lyÀ?k÷ù?l¯¤?m4??m1Ç?m?mÑ?léB?lw¿?kÔ§?k“—?kµ?jò?i4 ?gó?g×#?hoÑ?h¬‹?hÂ?i³?iD¶?iT¤?io?i‹?h–"?h;Y?gïS?hfÔ?i/s?i=P?hw=?gãà?g÷Ý?h+?hù?gÕ°?g„A?g€O?gÀÅ?h9Y?hD"?gÛ•?gy?g‚?fJ?eu‘?eTc?eê×?fH¤?f%?eày?f ?f„x?fL?f,‡?e»3?eGb?e ¢?eL?dÒä?còü?cJ@?bç«?b©?bh%?a½w?a5@?`´7?_ë¥?\û†?VrA?R?VM?[«Ë?^þ ?`?ö?`6ž?`S?`¼u?a 7?`dð?_°Œ?^¡p?]È?]Óy?_î?`æÚ?aZ?a2¥?`ô¹?`ýp?a?a ’?a'P?aIæ?aL?aJ1?ayÞT?MÍî?O±?C}?=¡?Ib?QçE?S'}?S«Å?Uc?DО?DQT?DˆR?DÈö?DÈ}?DÔæ?DÞ}?DÁ{?D`Ö?Dwï?DŸ:?D)d?C®†?CÁž?Cûö?D ?D9Æ?D?DK'?Cʃ?CdÕ?C*{?Cdº?CíC?CÇ£?C„Ì?CW?B°Ð?BÈ?Aý‰?B a?B Ý?BZ?Bwç?B/1?B)ë?Br²?B™$?BX–?Aÿº?Aè??Aú’?B ?B ø?A°«?AQ‚?A{Ê?A©ù?AZæ?A?•?AA¶?@Æ??u×?=Œ ?=':?>±S?@#I??õ`?=‘ë?9RÛ?7Z?:?<Ì?=?=â?<Û,?<[ ?<¦?;õ+?;Ë.?<Â?<?;V??:æ?;2â?;%ª?;·?;ŽC?<!?;Êq?;¢T?;µ‡?;õ]?;÷?<+l?<¢w?<ö?:Ê‹?:±ñ?;D'?:æ±?9µ•?8D?8l¡?9ÌR?:ªŽ?:òÑ?:âA?:›œ?:CÅ?:d?:«ç?:ó›?;=Ì?:òˆ?:œ°?:Hv?9ë%?9´¸?9b`?9i¯?9Û!?9ì¦?9C?8¦†?8R ?6©?5[?6}á?7¶;?7ÂY?7[D?6r?4@s?5A:?71?7wˆ?7wB?7„þ?7[v?7U?7Ph?7m?6{_?6^j?6ˆ€?6¦?4ß?2q -?0äÔ?1óã?34©?2™?-šÈ?&mD?$„Ÿ?%¨*?$ÿ-?"†š?"ó4?'Æ­?+ÿ ?-{}?."?.ß!?/dO?/žþ?/À0?/æn?/‘?/ýÙ?/Vñ?/S?/+=?.öc?/U?.Õ¿?.Ê°?/ è?/m;?.U“?-…“?,ëc?-I?.º×?/·&?/M?/‹¶?/ªl?/ˆÙ?/9°?/  ?/gE?/Ø?.×Æ?.ñø?/ Ì?/=?.²?.5Ò?,Ä÷?'ï´?$ý#?)m¾?,òÜ?-lz?,øª?-@Ì?-³G?-uö?-W?,·?,^M?,2?,dÿ?,OÞ?+V?(íq?%É…?&û)?*n^?+#Ú?*Ÿ1?)È{?)½?)¨?*N•?*Œ?*å€?+q8?+— -?+x1?+á?+<Ñ?*Ìæ?*eA?)Âv?)ˆ1?)zM?)¹Å?)Ùù?)›˜?)™ ?)€¹?)ö?(éÆ?(µˆ?(1Ä?'žY?&ù[?'W?(/Ë?(]²?( ?'‹ƒ?&ÐË?&ðÙ?'oÏ?'.H?&LD?%ˆ=?%÷‹?&>î?%yì?$ˆÖ?$Z?$Ï,?$øf?$Oc?#£Ó?#ÃÁ?#q$?"÷ˆ?"8U? on?T#?¥!?˜u?!o ?"M¼?"S?!ò–?!„? î»? Âw?!(?!M¹? µ6?Èš?Úü?q?¦î?Ár?åí?9P?˜?hG?î?!U?ž?¿è?»R?ôl?ðP?ˆ&?af?·Ý?ž€?v–?f“?ö9??k ?üV?"S?+ù?Ho?J?„ -?¼É?• ?þ§?ã÷?Ùã??ý?p¯?¿ë?Þ?l?¤?ÁÝ?x¾?F?na?¢D?ð?û?rÞ? A? -O–?â+?rñ>ý+>író>ÛÂ[>Äú>¢›½>Ž$Í>¥ªÎ>ÇL>ݼÑ>íUô>ùÔ‹?üò?¼º?–h? jµ? ª ?A›?“Ã?ub?þ•?n?ò\?’Ì?Ô?=®?‹"?—p?±'? -¾?sm?†ø?”'?™?w°?°x?õÈ?Õû?ÊA??ñ^?T3?§5?ýÉ?QU?!q?÷Ó?'s?ù ?ùy?cü?¢c?U°?êô?±?L?¼?'"?€‚?[C? ¢?#e?‰?©?C-?ôš?»2?·þ?±?WÐ?[??S?ÏI?çŸ?Íå?ÑË? O?0Ô?N?Ý?^?Ñ,?€ø?LÝ?p¶?—r?F)??½:?ìè?…?jþ?y?Öõ?i?ã¿?p?„9?ÕŽ?é6?ïâ? -?þB?âK?±ƒ?pÅ?X?gÈ?KÑ?D?¾?Y?6?Û?Z?4k?M,?2ò?Ü ?†W?jß?>E?ðC?ý'?MŸ?_—?(Å?§Õ?Px?sî?‹·?…ø?_1?F7?/À?=? áµ? ÇT? ¬L? ‚ñ? n¾? d4? L? 7–? ¼? ð?? Ê? È·? È? Á? ±‡? œ-? ‡? tx? Xp? >ú? =Q? 5? ? à? ë€? Í? ªñ? Ž(? iÁ? Mæ? @J? #B? ¬? -ï×? -ßV? -Àæ? -G¶? {f? ¹? -Cã? -R¡? ->I? -Õ? ýÌ? ã@? ¿k? œñ? †r? p€? l5? gZ? V ? @¥? !?äž?ªÔ?‘¤?‘M?uÒ?^½?oê?n?UÉ?&Q?ßK?Ú@?ëÀ?àá?̼?´4?–²?oª?SÊ?>:???ü…?ë1?ÕG?¿?§f?"?s&?Wi?;ÿ?Í?±]?¢ì?°R?¦q?ŠÚ?pÚ?Yw?G)?,¶?÷Ý?œ»?í?¸)?›+?^Ú?W™?Yã?O?N§?D -?*¨? -f?ô+?îö?Ùñ?ºa?«´?§R?˜k?qE?Vâ?QŒ?D_?9‹?"Ì?çm?°±?£?Ÿp?®?›•?> ?Õ?IÀ?FÂ?ë^?¯Å?µæ?u×?¨R?ã??Ë~?·š?ÃÌ?G¿?J?€-?ç•?yo>ÿÅ=>þ^£>ÿ ?µl?·ö?÷ý?ô? s?r#?Oî?h>ÿ{â>ÿ^0?2?`?'?[?}Ò?>þÀ">þ“¬>þû>>þ¸s>ÿo¬?1>ÿbû>þ¬>ý’>þ\·>þ >ý²k>ý•‹>ýÿ+>ýî,>ý1Ð>üÁ‘>ûÇ;>ú1è>ù6]>øêv>ø™F>ød>ù>ùøK>úJ6>ùÙÉ>ùÅ”>ù«~>ø°Ù>÷Z ->øE>ú>ú´>ú -Ü>ùV>ùŸ>ùÅ>ùH³>ù·>ù˜–>ù§U>øY¹>÷‡’>øBo>øY©>÷í>÷`->öô\>õÑ ->óõ¦>óÐ>òì•>ófk>ôj/>õû>õý·>ö„Œ>öÝ–>öÄ>ö%>õÖÄ>õÀ¬>õ­=>õ‡O>õsÏ>õ>ôþÍ>ôÉÑ>ôb,>ô‡Z>ôF>ó•>óÖR>ô4*>ôy>óiž>ò)³>òbÓ>óX>òí>òqL>ñÃ%>ñ·È>ò5U>òg¬>òdè>òC>ò¤>ñÞN>ñ·X>ñ|_>ñn>ñ >ñ>ð„¡>ð¾>ðpX>ðˆ>ï~>î•0>î’’>îM*>íó¤>íyÔ>íf>í;w>ìÜ>ì1‹>ì`>ì” >ìWŸ>ëæÒ>ëÓü>ëçÖ>빿>ëA>êiP>ê>ênX>êܬ>êäM>êÒt>ê±¾>êxn>ê6>ê¤>éWž>è·W>èìþ>èô¦>é>>é—>èÐç>èPd>çÙ‹>æôª>çNF>ççe>çÓ[>ç{r>ç7e>çC>æÛ‚>æÝ>æÁ¯>æä>æQ8>åúõ>åÄî>åÇ>嬅>å|>å'ß>äéˆ>ä˜Í>ãï>â|¸>ãa >ãÞu>ãÖ™>ã¼ê>ãs«>ã;M>âí¥>âÝ´>âä¾>âcö>áâ>áÍå>â\6>â¢)>âÉ>âN>áì»>á*U>à±>àïr>à ;>à£>à&Y>ßõô>ß°í>ß›º>ßn™>ßQr>ß!p>Þß²>Þ¶þ>Þ‘v>ÞgÀ>Þ3—>Þ,>ÝÒœ>݆º>Ý2g>Üãf>ÜÍ,>ÜÚ8>Ü×À>ܳò>ÜŠh>Ü\>Ü,«>Ü >ÜT>Ü/.>ܦ>ÛžÑ>Ûd>Û¢:>Ûs§>Úô°>Úø€>Úmò>Ú<>Ú|o>ÚAP>Úaõ>Ú$Ä>Ùó8>Úi>Ù~Ô>ÙbÜ>؉¦>×ï>×G>>ÖÑœ>Öãa>ÖX±>Ö­X>ÖU¹>Õ£•>ÖÏ>Õê]>ÔŸÄ>Ñ£æ>Ò5>ÔÙÇ>ÕÌ^>Õ¤b>Ôÿx>Õ+Ì>ÕèK>Ö5>Õúp>Ó+ >ÎoÝ>ÐÛ >Ôá¤>Õ7.>Ó¤(>ÓeÄ>Õ‚>Õ£F>Ô÷(>Ôç>ÔÏ|>Ó¿_>Ò„T>ÓF4>ÑWŠ>ËVÃ>ÍM&>Ò&½>Ó*>Ó3Œ>ÒÛ²>Òs>Ò†>Òê >Ó 2>Òæ>ÒŒ>Ò,‚>Òe¥>Ò ¨>Ñ–>Ðd>Ñq>ÑÜ~>ѯ>ÑU>Ð#Q>й>Ð$e>ÏþÉ>Ï>5>Ï!%>Ï->Ï&ù>Ï‹P>ÏÒ>Ïd>·Ö>Ϊt>Ï ’>Ï\>ÎØ£>ÎC¥>ÍÒÖ>Î’>Î$—>Íà3>ÍÆÉ>ͳ˜>Í–U>͇>Í[o>ÍM)>ÍKõ>Í)h>;>Ìæ7>Ìñ>̺û>ÌCó>ËÙY>Ën>Ë<é>Ê÷ä>Ê·2>ʘw>Ê[3>Êè>ÉíJ>ÉáË>É©P>É… >É\m>É(ã>É,>É>Èêá>ÈÌ•>È«/>ÈŠ7>Èl­>ÈG>ÈÂ>Çí>ÇáÁ>ÇÃ>ÇŸ>Çkm>Ç#ì>ÆÈé>ÆQÈ>Åâ3>ÅÆA>Å”ú>Åš>ż,>Ŭ>Å–2>Å…å>Åmx>ÅH¸>ÅÔ>ÅŽ>Äöì>ÄÇà>ijµ>Ä¡•>Äy>ÄV£>Ä?ð>Ä'A>Ãô§>Ã>à G>Âœ>Âmj>Â4F>Áüu>Â>Âx¹>ÂÄm>¡ò>‰¨>ÂP> °>Â5>ÁË<>Áv#>Á‰>Á;3>ÀÐØ>Àì >ÀÀ¨>ÀxX>À€­>À†Ã>À<ì>¿á}>¿Öœ>¿ø>¿Êf>¿‡ª>¿sK>¿ À>½?Ó>¼c€>¾}>¾^á>¾>½‚c>½>¼×Ñ>¼Ô[>¼²Š>¼”Z>¼¢<>¼šŸ>¼µD>¼¯@>¼£®>¼u>¼@Ø>¼!¨>¼R>»ò >»ÝÁ>»í]>»æB>»ë}>»Ýs>»Óq>»¦Œ>»2h>ºÜN>»>»Æ>ºu'>·§Ý>¬°ã>£nS>¡Ã“>®ñD>¸É>º9z>¹ê8>º.n>ºy™>º->¹¼W>¹Ó¥>ºu¡>»¤>»zÿ>ºõî>º;>¹¼+>¹rÙ>¹_{>¹öŽ>ºQ¨>¹Áü>¹±>¹¾>¹x/>¹SY>¹>¹1>¸Æˆ>¸ @>·Ÿk>¶Áß>¶n÷>¶Y5>¶ý&>·‡–>·C‚>¶lÞ>¶e>¶š¢>¶i%>¶7L>¶W>¶®>µ»">µw¥>µiÃ>µ¬w>µ6…>´ÚÖ>´çQ>³Úq>³@>´8†>´m[>³ô?>³0>¯Óq>®i´>²b>²Úä>²óÕ>²Ã>°Áp>°Qè>±rA>°(î>¬èC>§b>©ôß>°SC>®²,>¬}³>°YÙ>²¨Þ>¯˜’>¬t­>¯$z>±>¯â>­‹‹>®}>¬ž>«ëÍ>­`È>®È~>¬+â>ªÆ>®$`>°»>°}î>°Q@>°HY>¯¼Ç>®ka>®cÛ>¬˜>«<>«‡,>«CÃ>¬÷¼>­ÑE>­DF>«Oâ>¨ÂZ>§s>©ó©>¬Å`>«H+>«^†>«À¡>«;G>ªîc>«WÄ>«¸®>«¨8>¬~š>«Hu>«ô)>­KÄ>­ix>¬Š.>¬6 >«mX>©+>§°>¨ ->ª"»>ªB#>§N>¦• >ª”†>¨ü>¨eG>ªÓÇ>ª¢*>ª »>¨>¦/ø>¦H>¦0h>¥þg>¨KŽ>¨¾±>§ª¶>¨i>©K¦>¨xU>§bã>¥wž>¥o)>§Á>¨S >¨¢š>¨¤ >©">¨æë>¨#>§Ð[>§]A>§S >§ðæ>§£>¦gV>¦—'>§t}>§ha>¦Ë>¥Ø½>¦¼>¥Òx>¥.>¥IÄ>¥´Ž>¥t°>¥IX>¥*^>¤÷Z>¤Â7>¤Ë->¤Ów>¤Âú>¤·U>¤¢ú>¤‡{>¤jq>¤G«>£ÿ(>£ý³>¤>£é¶>£×™>£Á=>£¤>£‹®>£oc>£9‰>£ Ž>£P>¢þÙ>¢Ü%>¢½->¢¢M>¢…4>¢k>¢I°>¢"ã>¢!>¡ç>¡¸w>¡2>¡‚×>¡d*>¡MA>¡>¡»>¡k> ù> Ïe> ±d> ‘Ü> kn> >ž¤q>®.>žp¬>ž€»>ŸUP>Ÿ¨>ëc>|Ç>žå&>ž>›Ãœ> ‹>ž¿ë>žÈõ>žz°>å^>l>›‰_>›1'>œ”j>œv>›õ>œ(×>A ->œ½>›¾å>›»½>š€á>š([>œ b>œa…>›˜ü>›u>œ ‘>›–>˜¢Á>šv¾>›ÃX>šüÐ>›^ƒ>œ >œOY>œ[™>œHê>œiP>œrÚ>œ„>›Ó¡>œ3>›Äè>›y0>›R¬>›5&>šœØ>š|X>š4h>™¦f>™™‹>™¶0>™äŒ>™ÿ>™+´>™µ >™ÉŠ>˜rù>˜sg>˜í >˜Þv>˜ÆD>˜«‚>˜i’>˜Ïà>˜ò">˜€É>—Aú>—MJ>˜^`>˜2†>–Nï>“I¦>òŸ>’ñ±>—%>˜û>–Œ >”T>“%Œ>•$²>—‡>—Äø>–ã&>”«…>‘ú×>’Š>”'f>–hg>—ªö>˜">•÷Þ>“‚>Žóš>ŒØÌ>h›>•NÅ>—35>—eú>—x›>•+>?‰>Š¢ã>ˆØ>Š^>Ž£Ë>“ …>–“#>—P•>•¸B>‘(‚>Œ“A>†8a>‚³8>‚£!>‡¦,>Ò¼>’˜>—•*>šDN>š¾>—îX>”÷P>Ïò>Œ¦P>…&˜>v–÷>uÔˆ>„!3>Š(h>„t>{´Ñ>">—äP>™Tï>™l>—ý±>”6y>Ž|’>ˆ?>€Êã>n®µ>n‰M>)R>‹:A>‘bà>–.m>™`>™Æâ>šùn>›Z­>›7—>™ i>˜BŠ>–J>‘œÐ>ŠÎ>w1/>i‡>]çþ>^Ùf>t‡é>„Ñ>ŒS>?B>‘ý¨>—]Ò>œ -I>œ²¤>œ”\>µ‚>žMa>ž_>œ|>™Ó>˜)>“Kh>ŒØ·>†Y>ktÈ>J‡?>H;Ú>RÎØ>kùZ>€RŽ>‡ÓŽ>Œá²>‘F·>•q!>˜Œ>›!¶>œ•Þ>šÿï>š8u>›ð<>œ">›÷>›Q>šðÐ>šm>—²«>”`È>f>µâ>ˆ¶¤>€¡>lÏ—>W|>Dò>KüN>dóh>{'÷>…">Š‘Ö>ŽßÌ>‘óÀ>” Y>•QÊ>–Í>—}>™¶Æ>™ÚŸ>™±ÿ>–Ïq>”©8>™™&>›,X>š,>™Ø>™²u>˜I>–zî>”Ì/>“¼¤>ÚD>n¿>ˆúm>‚}>|–§>ly>Kß>4ÿp>5~5>L!D>cQ>u†5>šU>‡^b>‰qÛ>„o >„ìœ>‡õH>Š>‘ö6>•ó´>—ü>–ÏI>–°S>—x­>—Sˆ>•i‰>’Yž>–Ç¥>˜³é>–Ê>’9>–gö>˜«§>’ÿ`>Àß>” >•ÂÚ>”zÅ>ÝJ>ŽäH>ŽñP>Œ»4>‰X¬>†}·>ƒGÙ>}Âm>p©ý>`>Hš¨>0’å>4•>N>ch±>sà—>€~>„ú>‡•>Šô>‹2º>Œ×‰>Ž:>¤Ó>² >‘-Ê>Ó¥>‘³>‘òp>’Ù+>“,û>’\>’Bÿ>’L´>’’¬>“2?>’üë>’TÉ>ç >Ž˜>û±>fÎ>·¼>‘D>:…>|>¡˜>Žô>Sú>~o>üV>ŒË]>‹÷}>‹€e>Š>‰T±>‰r€>‡µy>„Ë8>¹Ž>}Å>>vû±>mçâ>e0}>Xàð>G6 >5ð>.“><¯—>MC>Z†,>dZ>k—™>ræó>x“a>{Ww>~¦]>ZQ>ƒaü>…S>†w>†ÿS>‡àµ>ˆÓó>‰¡þ>ŠZŒ>‹±>‹†>‹õ>Œ9J>Š²M>‡’ò>‹W>7M>Wë>g©>~È>Œ®>ˆé>‰,Ù>Bx>»X>©v>š&>‰•>qx>=á>ŒæU>ŒËà>Œ®¢>Œ I>ŒvÄ>Œ<Ù>‹úl>‹®Â>‹Yg>ŠÎ4>‰õñ>‰ÎÞ>‰Ù>ˆ÷…>ˆ`•>‡ZÃ>†wb>…æ‡>… ->„°>‚á3>‚E>×2>|œu>xÚ>trL>oA%>iÄ>c£à>\K >S«Ñ>I‡Y>=X>.ùÂ>)T4>4§…>A÷÷>L­ƒ>U¦¯>]2Ê>ce£>hóæ>nn>r%G>upZ>xÝÃ>{ï¯>~v>ýà>€»î>®:>‚_ë>ƒcq>„‰>„w;>‚¢Ù>u>zi>„ëÔ>†ç>†2r>†Sg>†Bó>„ß„>€¿ƒ>ƒÂ>†¢d>†ÜY>…Ri>€„¤>ƒ÷>„™£>|iá>‚Ôï>†ŠZ>†‚>†s:>†Ž>†…‡>…:j>ãz>‚«å>…ì?>…÷›>…ä‰>…a>„çO>…*0>…_Å>…:Ë>„E>…€>…-Æ>… ‘>„áƒ>„ÁÀ>„•®>„ZÆ>„<<>„¾>ƒÛÜ>ƒwú>ƒdÓ>ƒDñ>ƒe>‚ËÌ>‚n>‚Kì>î—>>€t4>~š>~!>~€>|ìð>|Êì>z›¿>zê>yÏ—>x#>uüa>sÁ¸>qžÈ>n#>i«2>gØ>dšS>_t¸>Vô>TR->MdÔ>Dóï>AI>89d>,‘ž>z4>`>%ë©>2a@>;.v>B|Ò>K&>OYZ>Pó >Y·V>_Bñ>bS>dß6>faN>i$ >fè^>^ne>bp>d¨¦>n"–>sïë>tàë>uÒ>vž™>w1Ô>w°û>x^>xrx>x¾‰>xçë>yÙ>yBÏ>xü¨>y½>y¨->yl>y+¤>y¡€>y±¶>yž±>y¥Ò>y¯•>yIÜ>xÙ>yZ>yO>x‰>xY³>xÿ>yž>xà*>x·º>xu3>wûÌ>x$Â>x²>x k>wµ»>w•G>w‘f>wnÂ>wCH>w>vøÂ>vÎ;>v‚>vzì>vI–>v I>uÝ>u¢ù>ux¨>u@­>t¯‹>qK³>qüK>s'“>n¶5>q¶a>süÙ>sÍ>>sHî>oC>c€a>kûG>qÓv>lOô>h†±>nê>qSñ>o×>o—á>q'>pAY>oˆÂ>oìc>oÅä>nRÆ>m -¯>nÕÛ>oF>nYd>nQe>n€³>ng>nl>m¿6>mz=>l[ >l,>l.|>lb>kào>kŠW>k/>jÊV>j_©>iÛÒ>h•>gØü>h6'>g½ >g\>f=6>eo%>d€8>c”C>bÆ>a¢>`:{>_*>]'>[ÿ>Z"Z>X/>U™Ë>Ré:>Oãµ>LtS>HY>DBÈ>?L…>9Ÿ¹>34—>+¤j>"”>6> -v> ÔZ>³ë>$Ê>,Z¹>3>[>9•>>'€>BƒÜ>FW;>I(>La÷>Nч>Q!=>SGú>Uk>VˆF>WÑ—>XãX>Yß>Z¯@>[4/>[ÉJ>\no>\·À>\Ö>Vÿ>Yûì>]º>^6‡>^î>^ÁÚ>^Å[>]J¤>Užü>YY+>^~B>^oD>]ùl>X #>XsÙ>]©l>^ºA>^À»>^µ>^žŒ>^( >[¥>\Vþ>]Ú,>\%Ç>SBp>Wôã>]Lj>]OÃ>]tÕ>]6À>\>\Ž>\~t>[®>Z;¡>[z>[þ¬>[“L>[:M>Yøe>ZH>Zþ >[Ä>[F>[#÷>[µ>Zå¸>Z»Å>Z–>Zqs>ZGÿ>ZÉ>Yâ9>YL¼>Y- >YZw>Y5,>Y$F>Xá>WÓî>VxŒ>Vø>WÊÒ>Wú>W­)>Wµ–>W§)>W‡û>WVø>W&O>Vüv>V›Ú>VP>VwK>VV>V6@>Vó>UÉC>U§Ø>U‚ô>UR<>Ut>T¡ï>Ts¡>Tk.>Tj*>T>SÆ„>SÂê>SØÚ>S­¦>SYÄ>Ráº>R¿á>RÝ$>RÐ,>R™@>Qø >Q/3>Pv>Qa >Q~>Q?G>Q£>Q&<>PÜ’>P=>Pq‰>PŽÀ>PPï>O_í>M2>L²Â>Mn.>MÅ>Mç³>Nk™>Nâ~>NžÏ>NF•>N=m>NO:>N,­>Mã>M‚>M‚a>Lt>F%>Fuø>La>L‘¥>K¹è>Kç >L!Z>Kð>KŠS>K!Ô>JïT>IM>IÍÁ>Jò9>JËÇ>JÆ>J/ >Ib>E]p>Gò>I…>I^D>Hõ>GbÞ>H~–>H >GÍx>G¿C>G® >GG°>G¦>FèV>F˜>F[_>F$1>EÏ/>E >E,^>DÌ?>Ds>Cþ¸>C•>C$>B½î>BBA>A•`>@¨>>b”>>è'>>Åö>=êr>=g><¯>:æ>9”ž>8¹>6Qp>4”]>2‹u>0% >-…>*Šâ>'">#Id>ÜÀ>½~>À`> —¤>uñ=ï$ò=ì…v>²i> -Ý=>Ýš>£¸>> ¨ñ>$BÚ>'\Ú>*ò>,}>.rÝ>09A>1Üù>3.Î>4__>5rh>6V8>7½>7ÇÌ>8[ ->8ÙŠ>9;M>8Øÿ>8–÷>8@ë>8X>6x>7±J>:|¾>:¼N>6Úê>4ÞA>:Q>:³F>;R>;%U>;$h>;\>;µ>:å«>:AÔ>:C:>:Éå>:©>:: >:vx>:„ï>9è5>8â^>9Ú%>:!>9èà>9Ž>9º´>9Ÿ8>9m[>8Y[>8¬>9œ>8ìK>8õØ>8Ù¦>8¶!>8–>8y>8YÅ>8;«>8‹>7÷ô>7Ť>7DS>7fý>7o|>76˜>7"³>6ûÅ>6à>6˳>6œB>6Z?>6@W>6>:>5å>5¾»>5Ø™>5º/>5‘T>5M/>5>>5,î>5 R>4è >4Ķ>4ž>4hÍ>4»>4* >4>3ðò>3Ë>3|œ>2þ‚>3=_>3?t>3|>2òn>2Ç>2«>2°>2_n>2n>1ò>1ö¨>1Ò->1”x>1‡è>1fã>1=]>0Ñë>/·E>0c>0¾µ>0ž>0h>>0õ>0Ð>0Þ>/êd>/Âç>/¡ï>/|>/1ö>.Ì»>.•|>.•¶>- :>-a'>.K>.á>.+¸>.Q>-ì±>-Ù‰>-¦Â>-BŠ>-Pb>-L_>-'L>,ê>,Æ >,Ž±>,DC>,a>,VK>,4 >,>+ëë>+Çö>+l>>+E²>+c¶>+C‚>+ A>*þd>*Ú|>*¶ê>*†ï>**r>*Ž>)Qs>&%>#k‡>$ûÍ>'‘Ê>)GÝ>)RG>(Âê>'ƒ>(_»>(®Y>(­í>(vY>(\¾>'ð>'ºÌ>'¨Û>'Ã<>'Ãû>'‘¡>&a$>%‘f>&Â9>&µ>%êÿ>%ûj>%̃>&1;>%Ns>#êZ>%“I>%å>%Ëb>%˜H>%Z¸>%RÕ>#¶¾>"Êy>$œ">$Ï>$C´>$î>$Œ'>$BP>#Uò>#Ýf>#æÿ>#Ý¿>#Ï$>#—>"ÎM>"Ò >#5+># >"$È>.ë>!`t>"ˆv>"8~>"/á>!Ô¤>!ûY> ¼>ô’>!Ž#>!•è>!l2>!R¿>!3Q>![> å™> ±>£=>Nó>À»>ÿu> ¿> É>çþ>¯Ö>™¾>…ô>OÝ>ði>ë­>¢z>™Ó>Åñ>Œ«>{(>\È>á >Â[>ò‡>XŽ>1“>`V>‘>‚\>2Œ>}>È•>m“>x>È$>?ý>ŠA>ð»>Ì>± >¬ˆ>¨¦>?¦>ù>>W~>ñä>ã×>¿K>ŒÞ>K©>¼|>Óu>ÿ>ƒŸ>6»>uF>`¬>eo>Ã> -4>ý…>à„>¶R>ž)>pú>Ï>J>\>ía>½o>ƒR>y;>X|>9V>9>¾e>Y¾>Ô>y>Ac>ñá>–¨>=ö>em>X—>8Á>å>ïð>•>¼„>#J>&z>ñM>·ó>zù>5 ->n.>Ú>Ëê> Ð:>9>G/>ýØ>ŽN>úe>ã]>MŒ>oß> Ê> .> JN> nO> -p> Rõ>C>¨>=þÑ=þF<=ý·E=øŽñ=òxV=ëk¹=ã(¥=Ù@Z=Ìz§=¹¸›=¶=Éì=Ö&y=ßæÀ=ç(é=êëª=ó·=ø®‘=ýK×>‘«>¤ >‚>¿>ÏB>´4>1c>÷@>ËO>ÌB> —R> -½> -^þ> -§’> -ã%> ã> => ]ú> {–> “¶> ñ> R›> †Î> -Ö}> ¿˜> ÆA> Åh> ¾ê> ³•> ¯·> £Æ> Ž;> ‰W> tñ> oò> ax> NÈ> -ü> ð> …> 4> -õá> -ÞB> -Ƥ> -¶Ò> - J> -‡@> -k–> -M­> -DF> -,×> ýÆ> ÒÚ> Ú¯> Ìò> ¶ > ›Š> tÞ> a‡> Eë> 3U> Q>öÐ>ßP>[}>J}>I>Ú>ãØ>#>0‰>ù>w¡>Å‘>¿{>§h>‘0>u>\µ>?n>"> >÷t>Ýr>Áw>œ>z\>G>0u>N>A>3>Ù†>²7>o¹>‹Æ>‚W>g¡>?ú>êU>Ú>úC>Þ>·ù>‚¶>Šà>t>Nü>4Ô>%g>ô>ê>Ðå>qÌ>@>A>4Ó>+l>#ã>æ(>öá>åú>ËX>°p>”•>f›=ý'=íA/=ýu€>Û=ýU,=ûÂy=ÿ]=ü¤>óã>@]>2Z>Üö>ïƒ>>Û*>¥ö>™?=ú„Æ=ø»=ÿ²¯=þÈ(>L>T=ÿ§=ÿ™=ÿ—’=ÿ^ =ýù‡=ür}=þƒ€=þ•&=þ0¿=ýùk=ýŠÕ=ù'¶=û=+=üüÀ=û~k=úK=û!=úAZ=úe=ü~=ûž¬=ú+u=ø¤|=÷,=ùÛ=ú›o=ù'þ=öôä=ù±f=ú<=ùµŸ=ùø=ùG=ùî=ù %=øåé=øvb=øU±=õï=òûP=ôbè=÷^(=÷ˆæ=÷Z =÷(9=öô(=ö¿=öQ=öZ?=ö!½=õñŽ=õ¶œ=õŒw=õQs=õ#=ôóÄ=ôÈz=ô“x=ô^r=ô-Z=óáI=ó³§=óV=óe¬=ó1=òþ±=ò™ã=òo =ò6==ò5=òw=ñÑä=ñšt=ñy=ð¹—=ðý¢=ðÚš=ðªÍ=ð}G=ð@¾=ï=ï“`=ï±M=ïk®=îÁû=îö^=îéÝ=î¿®=îè=î^=î û=í*ú=í=íZÅ=ì߬=ìù„=ì¨Þ=ëÍ=ëâs=ì!˜=ëŽ =ë ï=ë|3=ê=å¦L=éȵ=êŸô=æyL=å»ó=êX=êU”=éè5=é¹Å=é·Â=èj„=çQ=æ²C=æV“=äB=Ú=åë¨=è;=äì*=àc<=äXê=åTà=çK =ç,\=æþ°=æÊ)=æ:–=æ-=æ*=æ=å´'=å£=å‚¡=åS’=å"ú=äÍ0=ä” -=ä’ =äaP=ä-á=ãó+=ãÀ=㞃=ãXÇ=ã-¾=âö¼=âÛ=ßì‘=ز=Ûjç=Ìùw=ÚÑ =á "=á=ápw=á5=àô =à”ñ=Þ•”=Ü°=ßâÒ=ßÆ[=ßèk=ßyE=ßbB=ßv1=ß*'=Ü<Ð=ÜËÓ=ÞµÌ=ÞŠÎ=Þn=Þ-=ÝÛ =ÜÖé=Ý`_=Ý=ä=ج¸=Ú ™=Üâ¬=ÜOÙ=Õž=Ø>Ã=Ü'Í=Û=Ø -=Û-Á=Ûu×=ÛP¤=ÚšJ=×9#=Ù¦Í=Ú—á=ÚxG=ÚJò=Ù¡”=ÕÆÔ=×þ=ØÍS=ÙLÚ=Ø =Ñ´†=Ï¢`=Ö€Ï=س=Ø]Ô=Ø1€=؈=×׉=׫‡=×W=×RÚ=×&@=Öø¯=ÖÌ¿=Ö¡>=Öq¼=Ö>t=Öµ=Õì’=Õµ˜=Ó Y?³æž?³?n?³ !?³ïæ?µ›q?·j¨?¸’—?¸ÊW?¸9Ë?·Ò?µ²“?´A?³(Q?²«þ?²Óà?³‚?´zù?µA¸?µZ?´ê?´Å?´¶x?´¤¹?³Ä?²Eâ?±?Z?±²¥?³€9?µ{g?¶kr?µÉ¦?³ãR?±©K?°1?°?±E?² ²?²4ž?±N¤?¯ã^?®É?­ÿT?®`?¯Öß?²’?´+?µnG?µÞ?µÈB?µ¥,?µ·?µç*?µÒ?µœ?³f¹?±Šš?°m¿?°¤{?±ç¢?³^?´Ð?³l²?±°z?°Ä?¯²/?°C ?°¥°?°^-?°$[?°Ò™?²[?³îJ?´É&?´¢…?³›L?² Z?°=?®H?«@…?¨Žý?§e¥?¨’D?«^Ù?®X¿?°uç?±jð?±{`?±>…?±Cù?±ž”?±ËÐ?±3t?¯ÎÎ?®A·?­'Ò?¬e -?«c¥?©Ý2?¨A?§X#?§ŒÑ?¨¹X?ªzÂ?¬R|?­«ÿ?­ü ?­¥?«a4?ª˜„?«‹D?­W†?®hZ?®6i?­bl?¬n¤?«1¾?©©?¨‹î?¨Ž–?©b¦?©ùº?©¿U?©5·?©a?ªÈ±?¬ÿ?¯W?° ?°3?°”?¯ãP?¯ C?¯~?®(°?­Dâ?¬£?¬Q>?¬°?¬ -ñ?¬Wâ?­ h?­·;?®?­ýœ?­® ?­"Ì?¬xM?«Ö+?«…v?«Ô(?¬£9?­Qì?­4›?¬/1?ªñ!?ª3Ù?©œÄ?¨Ù?¥£s?£Îï?¤G„?¦ò?ªˆ?«Ê:?«¯×?ª1¹?¨E?§‚?§·?¨JO?©Ç]?«"÷?¬Bp?­,?­¦ú?­æö?­Ý}?­{F?¬`?ªê,?¨¤º?¥é×?£C? ë&? jz?¡—ê?£~N?¥%o?¦_õ?§P%?§£ç?§0?¥èˆ?¥‚3?¦uß?¨ †?¨å¢?¨Xæ?¦êì?¥[Œ?£âŽ?¢¯‚?¢W?¢éÞ?£q?£M³?£ZÖ?¤Å\?§[9?©ÈÝ?«?«/?ªˆB?©—9?¨ßR?¨É??©T¸?ª$è?ªÕÃ?«;?ª…™?¨Ý?¦T?£Ï?¢Pg?¢Œ?¢xN?¢–U?¢…†?£ñ?¤t¼?¥¥¢?¥‚ß?¤5²?£4ï?£·ÿ?¥„C?§x¡?¨¶?¨øG?¨b?™d–?™?™B¥?š0Æ?›Ã]?ZÖ?ž:Z?žS?œ¶¸?šƒ#?—Ø^?•Û?•ú³?˜E?› -B?œ¹Ä?Aç?o‹?Â-?ž ¯?Ýs?½?›¢œ?š1t?˜ú³?—Þ€?–ì>?–Ý1?˜*õ?š,¬?›ÐÅ?œª -?œË?œ2‚?šØ¿?™+á?˜%?˜zQ?™¹”?šœÚ?š:‰?˜ç†?—ñ?˜Jg?™¬:?›&d?œ -?œË?›E{?™½]?˜Ž?–ìv?—U?—¼+?—ÿ?—²ž?—Ç‹?˜Ï¼?šá?šž ?šJ?™*»?™†?™ª0?šH)?šF?™¯¿?˜±Ê?—]©?–0>?–ø?—Râ?™r?šRÂ?šÄ9?šÁö?šŸÇ?š[!?™µ ?˜‹?—Wÿ?–æñ?—œ¯?˜È)?™`$?˜ÿ ?—ùÁ?–öV?–Ÿ¹?—F??˜ƒ;?™—Ï?š%š?šAN?š,?™©?™"'?˜Â.?˜È?™t?™[Ù?™)º?˜]?—!?•ÒÉ?•(0?•g­?–Z‹?—_„?˜ä?˜M ?˜z—?˜˜†?˜¬!?˜Â ?˜Îæ?˜£.?˜?–ÿç?–?–G?–’ß?—+@?—|Y?—d?—–z?—Z¨?–Û›?•îÞ?”™í?“€¨?“Tn?“í8?”¶?•}a?–>å?–Ø„?—4Ó?—YÏ?—TA?—,ý?–è?–?–/~?•ÑC?•€7?•IT?•q?”Øt?”¥L?””?”L@?“u5?’yÄ?’?ì?“ -?”+X?”Ö…?”Òø?”y=?”=Ó?”;?”%1?“ÑÅ?“ˆ'?“|?“nó?“ã?’nj?‘I?òª?PŠ?ÏÒ?Ô:?‘¹?’tã?“V?“|µ?“s?’ßá?‘´Ù?eó?ð$?ºX?’÷?’Á?’‡™?‘iå?˜?>?x{? ¼?Ì?7Z?‚—?‹ÃÖ?Š¥Ð?ŠFã?Š­ ?‹è¦?È ?·O?‘=?‘Ž°?‘¥z?‘Ÿz?‘‰¸?‘C1?ÓÍ?¢×?ìÖ?‘T-?‘|ÿ?‘xÜ?‘9}?i§? ?¼?Œxñ?‹c?Š$³?ŠÙë?A?_Ü?¼#?‘H ?‘\?‘-¯?‘ ¡?‘>’?‘¢Ô?‘Ðh?‘z3?¶Ú?÷v?ªÉ?ì?v—?Øu?í“?‘:?‘A´?‘qÍ?‘D“?§ü?°?Ž»f?Ž\?Ž»x?c–?Þ?!0?6¡?«?‹I?Žó÷?Ž‚?ŽQ¦?ŽP ?ŽUä?Ž&S?»Ù?u?|j?}P?BA?ŒÛ§?Œ^—?‹é?‹œÜ?‹lý?‹^?ŠgT?‰¸›?‰m[?‰€}?‰Ž?‰YF?‰ â?ˆÝ ?ˆ‘›?‡ÁÌ?†g6?…% ?„ÂÚ?…j¿?†?‡#ô?‡u?†à£?†ÏH?†¢p?†%ý?…†Ž?„›?‚Òö?€T?}UŒ?~ìº?‚-Ç?„w?…W¤?…6‰?…$Ü?… ð?ƒô£?Y¡?|¬§?z¶?|Ï~?9?ƒ1)?„ É?„.Î?ƒáô?ƒ>?ƒn?ƒ•~?ƒÜ9?ƒðE?ƒÃ9?ƒ²+?„Ê?„iU?„~9?„6?ƒÅA?ƒ(k?‚…?€™3?Uk?€¨?T‚?‚+ä?‚8j?¿u?M?M–?ŸE?Ä}?_?€Œ&?Öj?€Ì?FF?‚Â÷?ƒ´ ?ƒÆÿ?ƒ>;?‚<¦?€ëÝ?€?€n?a˜?®?”‰?‚ -?ƒ7Í?„mò?…ï?„Í_?ƒ;“?€¸U?}[?~Ÿ?WË?ƒÐ_?…I?†á?†¢Ì?‡?‡@î?‡&Ô?†Ü?†Uô?…Ø‚?…Ó?†B4?†ÊU?‡8U?‡—S?‡æ¸?‡ÿ?‡ÎÀ?‡o¤?‡"ô?‡C-?‡î?ˆÆù?‰Uý?‰‹ß?‰œA?‰¢×?‰©˜?‰²Y?‰²°?‰¶Õ?‰ÕŸ?‰úß?ŠŒ?Šo?Šñ?‹‚”?ŒMe?w|?ŽÇ‰?ò?Ï,?‘d?‘Üñ?’[Z?“0#?”m?•ÀL?—+ú?—” ?••?’ØI?’X?“„^?—ÔŒ?žó5?¤B—?£8 ?ŸEé?žjb?ŸF?iï?›©?Ÿ^?¬Î-?»uu?À ¦?¸ Æ?­Œ_?­Èæ?ºÛ(?Ê?Ïk?ÆÈ -?¶b?¬#^?²zk?Ťl?Øxº?àó4?Ûÿ‘?Ëzn?·2@?«·=?°zA?ÁV8?ÕH2?åZª?ììÂ?éX¾?Ú&â?Ã$n?¯‹ÿ?¬«Œ?¼4Ó?Ò-r?ãü?ð¹t?ù­4?ýº?øë?ëýD?×$?À'?³ìÅ?»ãæ@1ÿ@î£@>˜?ü5Q?é+v?Ïgß?¹.Ç?³a·?¿tÙ?Ó?åúV?öÍl@ü–@l‹@ó°@@ƒ™@ s¥@ §e@xÙ@?ûd?çšÍ?Íë4?¸p¢?µ=?ÇÓX?å#a?üÙØ@8D@“‡@n@Ȥ@8\?ú܃?ó÷\?ñ`¢?ó³?øj@ @oA@áô@ -lL@ ™Ó@ ñÀ@\ž?í<É?ͦÆ?¸×¹?½’˜?س0?øŽÍ@Åb@(e@†@k˜@[­@ŸÖ@ߘ@€7@õ¬@><@Uï@ t@á@Œq@|å@€„@<2@ì @Y!@K_@¾g@Ñ°@]@¤E@e @ð*?ï†ü?Ó!6?ɘÏ?Ûh—?û3@ -ü0@ú[@ø@;@E@ûˆ@š}@| @•Ü@”@<Æ@ZŠ@š"@¡«@å@ Ý@ñ@mî@Š@<ä@š™@Vº@{|@¢'@Iþ@§š@PÐ@è@ç@‰3@,Ü@}#@èP@…F@Qj@aC@"ã@¦¼?êüv?Ó0?ÓÎ0?ì}J@I@7§@¡u@x@‚@!x“@"@!tr@ #@ pý@!#¦@ øe@>v@@ÖÙ@…Ä@‹@q@b-@¿[@ –#@ qR@µû@þH@!—@ ÕÔ@Hz@7@:Y@ŸL@~@_«@ Ë"@"Qà@#¾ã@$ín@%ƒ@%0q@$ -e@"ã°@"¿€@#ƒÙ@$P&@$ºB@$·Ì@$a“@$2“@$†\@$æè@$À@$<+@#™@"OÉ@j@³ý@2‹?þL?ÝSÉ?ÒÜ^?çß-@È®@fh@¹Â@ ¶¶@"tS@#2@#Dg@#Ï@!²W@@Š@—l@=S@!À€@"c@ K›@ú¬@Ö@ GÛ@#?@$…@$á}@$*ò@!ÛI@n@"N@‘‰@©œ@!¬;@# š@"ó-@"\Ö@"4[@"­†@#€@$5X@$•Ö@$°&@$kŽ@#ÙØ@#vÍ@#?U@"_º@ U©@.@O@˼?å ?é‡ö@˜A@L@øÝ@J?@ ²@›E@!­ž@#d\@#ŠE@"¢Â@!X @  @ ç@!”\@"2/@"Ód@#>b@#þ@"†è@"E@"*Ü@"†à@"έ@"Ö¤@"¦@"S@!Üå@!ø@ Ü@sS@I @£@§‘@ð‘@óé?úf7?ÇÉä?¢mE?  -å?¾ã?ëKÈ@Æ&@¾¡@b@ä5@”@ê@+ê@¯O@bL@|Ñ@žü@Ÿß@²5@ò*@#m@Ñ@øª@ò8@Ðc@so@L@þT@â‰@ß@ -'@ª¬@QB@@ïI@×@7@¬¤@Üù@.^@é…@ñV@›B@9C@Ð@SË@‚r@-@öº@²@Ê@sp@“÷@Åû@@i‡@_@wÿ@`Ï@›Â@œ@Þñ@s¾@ëd@üd@Gä@ÜJ@*õ@y@U©@ &@¤@E±@2@ùy@?S@Op@@-@`:@± @ã]@ #@Ød@Û-@B@¹#@à|@ýô@š&@:¾@8œ@š@Ÿ4@.@ð@”e@ß@-š@Ÿ@[‚@Õ¶@2@°É@ô@"c@ˆï@ @ Éî@ P'@ Úâ@qâ@:-@Ê@ÀÈ@â5@“@ÊÚ@ -@ .Ü@ Àõ@ 0'@h@”\@–N@]Ð@2.@5U@5Ó@ û5@ º[@ µJ@ é@=}@y@bâ@ í@ ¡@ %3@ U @ @ @v˜?ü,?áÀi?ÂfÝ?³Ls?Áˆ¢?ßÀz?ùU@òY@š-@ @ ->’@ ÿ…@ E„@Ý—@ 'Ž@ ÅÄ@ -P+@ -½œ@ ±@ -ô?@ -{é@ è@Þí@šj@þ@ò0@?û@7•@#@]‘?üSÆ?ôZÆ?òàs?ó0?õ_Ø?ý‡Ë@Â)@¦?@rÅ@gn@-L@õ.@ͬ@Ìœ@Ó@ƒë@¼ô@Äí@Æ@þn@¡+@´ @‹m@Þ@‘Š@Qð@3~@6@<ß@6ý@3÷@3”@(M@ôõ@q…@˜y@€@j8@!M@#²@Û@2W@8?@æº@<€@ª:?ÿ@?öaW?ð•ƒ?òçÈ?ùÙX?ü?õÈA?ìR“?éÉø?ñæc?üíw@‹@ +@ãE@Ü"@Ø@^a@ç\@×@wÀ@§q@¤Û@×@¡@›™@ ¦@²Õ@œ¡@sÄ@a @C‘@ :@Ý @ÓI@ÞV@ØU@à;@?@7™@Ñ@úl@@A@+»@þø@0@å@Ý@y™@Âå@Îs@Èï@àU@ìô@˜?ÿç^?þä¤?þ©J?ÿv?ÿ¨Ø?ÿl?ü¨Ø?óÚ ?愯?à;[?èiÙ?õ¡Û?ýsß?ÿè`@ ¨?ÿÇ?þ2j?úøJ?÷£(?÷b?ùÃg?ûf?ûf·?ûM?üJ?ü÷?ü·ë?ûÈÉ?û ý?úØÍ?û?ûUÏ?úüá?ù›?÷˜¼?ö³f?÷!Î?öåF?õÿa?ö©?øñ?úÊ"?ûÑ?ú5é?ùeÒ?ù•?øöd?ø÷?õë?óf)?òH?ó)Å?ôÏa?ö'0?öÑž?÷#3?÷Õ¶?ø¨a?øúK?ø½?ø‚?÷‹”?÷É®?øob?ø”?÷ µ?õÑ"?ôÑõ?õµþ?ö[’?ô¹å?ñþN?ïj)?íZø?íÔÈ?ïäì?îë{?ë:ã?è“?ä»ä?ãqà?èó2?ñƒN?õ¡¶?ôû»?ô™?õ–H?÷Á¢?÷ÁË?ô¯b?ïû„?ìÇ?íåÚ?òUí?ö ?÷Xà?öج?öû?öW?÷Âü?øž¯?÷pÚ?ôù¨?óÉf?õ2¼?÷•?ÜÚÎ?Õщ?Õo?Ûî?ácQ?ãÓð?ä"d?ãÉ£?ã/À?â' ?àÛó?ߺŒ?ßï?ß™?ßCþ?ß`#?ß²?àô?àS`?à õ?á¿?á±@?â–?㈠?ãÉ?ã ?ág?ÞA ?Ý>Œ?ßб?ã'Û?äð2?åCå?äû?áÿ”?á ˜?â-?ãù?ä’†?äl®?äÚÔ?å™ý?åËp?åS¥?äeµ?ãF?ã}—?ãû?ä?ã¢l?áÁà?Þh?ÜÔ?Û ?Úw—?Ù}À?Û¢T?ß˺?ãž?äˆÈ?äg?ât?Ù\C?ÇÔ/?¹S"?¾È?Ñ=i?Þc¿?âÆk?âÀ?ßÏ#?ÚÂÊ?Ö±M?Õ8j?Ö=H?Úžô?ßá9?âÑ_?ãÁi?㪩?âðÒ?ág+?Þ0?Újó?ÙÁX?Ü¥Û?߈À?à7˜?ݸÉ?×Ã?Цã?Ò:'?Ùíî?߉4?àœP?Ý°î?×X¿?Ò¢º?Õæ?ÚX?Ú½?ÓHß?˪¹?Ʊî?Åì?ÌÙª?×=û?Ýuô?ß)ç?ßY?ÞÌj?Þ¹d?ÞyÞ?Ü*©?×G?Ô½?Ö½Y?ÛĪ?Þ` ?ÞP?Ü{U?Ù+_?Ö½?Ø#È?ÛeÌ?Ý›?ÜD?ÙC?Ñ!?Äõ+?À¢$?É¢£?Ôp -?×<`?Ò-Û?É},?ÄÅ?ƃ?ÉW¹?Íeþ?Ô!á?ØÀ?ظù?Öu–?Õ—W?×/ -?Ù…Â?Û ë?ÛHc?Ù¼˜?Ö €?ÒÀ?ÓQw?Õy=?Ô~º?Ñ‹³?ÑA[?Ó-?Ô’¸?Ó -?ÍŸå?‘$?¸Úf?¼*¸?Èbc?ιd?Ì«w?Ë*e?Î?л>?Ñ]V?ÒKÇ?ÓÕp?ÔOÚ?Ô¶?Ô©²?Õ¬­?ÖG»?Öy£?Öt’?Ö€i?Ö’7?Ök¡?ÖXÌ?Ö”Ù?Ö´?Önð?Ö ¯?Õ×Æ?ÕÂ0?Õ›n?ÔÑ¡?Òä?Ð?ÍÆ?Ê5M?ÉTl?Ë¥H?ϬÑ?Òòr?Ô<Ú?ÔÙ?ÒüÁ?Ð ?ÉøÛ?Ä?Äâv?Ë G?ÎAl?Ëî9?Èq#?ÈÔM?ÌË#?ÐeN?Ò5L?Óû?ÓP”?Óhã?Ó>‘?ÓCù?Óºß?Óå"?Ó…?Ó Î?ÒÚÄ?Ò÷?Òÿ”?Ò¾]?Ò?¾9²?½¾õ?½…Ý?½Ž“?½Ç?¾"]?¾@?½Û?½J†?½(E?¼æ?ºšP?¶¿¥?µî ?¸æF?»­?¼ì›?½°?½Þž?¾ß?½ú]?½Öu?½ax?¼¥1?¼•b?½3É?½Ž?½”Ñ?½ºQ?¾?¾€¼?¾ˆÎ?½@?º©Ü?¸ä ?º ñ?¼1å?¼êÜ?¼¨?¼2\?ºþ‚?¸Äß?µ0)?­{{?ž¼2?š?ŒÏh?™ò?¦Sù?®Ë¦?´Ëî?¸~W?¹å|?º ç?¹£¬?¹j`?¹=ñ?¸9T?¶p?³Ðä?³¶B?µQ?¶”?¶0À?µ¿œ?´âk?³Ñü?³M8?´h?µ5˜?µªÕ?µ«û?µ/?´h*?³è‚?³óÜ?´n?´óû?´®¿?´™Ž?´ã,?´ã—?´®‘?´¤°?´‘`?´}j?´‹Ö?´{(?´hY?´M=?´Ê?³ÿN?´;(?´Ö½?µ\C?µ'K?´?´+«?²´n?­³%?£ßú?šÛ¼?žˆ?ªÂt?³A´?µ¨&?¶?¶Hž?¶bF?¶QN?µô˜?µ^;?µa?´ê.?´À?´Îî?µä?´—?³«°?³@F?³0?²Ü?²Ú²?³O?³r?²ð?±<è?±}ò?²^¶?²Ç?²_R?±Úû?±ÓÛ?²(•?²Q*?±ê:?±1Ñ?°ð^?±=Q?±‚?°kª?°!†?°?±:£?±Œå?±Š?±\:?°ïÝ?°mÞ?°/ã?°ë?¯Ñj?¯T_?®Ì?®QÌ?®jÞ?¯E?¯5d?®Én?­µ ?¬|‘?¬]?¬Y?­G!?®F?®k ?­ý??­Tk?«Ã\?©D/?¨›?¨û‚?ªkŠ?«s€?¬{?¬m?¬è€?­!¾?­‚·?­SÃ?«g?¨W?¢ÎÅ?™0Ð?“ªÎ?›¸†?¦É–?ªúž?«È ?¬{m?¬d†?«Ÿ?«Q|?«B•?ªø?¨Â?¨@9?¨y?§ýÊ?§S]?¨\?¨ËÜ?¦)¿?¡}W?¡b?¥Çn?¨¡Q?¨ý,?¨£N?¨¤f?©+£?©x?©p4?©-ý?§j?¢¨?›­;?œÜÊ?£ü³?¨Nã?¨î?¨ÓÒ?©}Z?ª ˆ?©Ü”?¨ú„?¨k·?¨c÷?¨T?§AÒ?¦ÿ*?¦Ø?¦LÎ?¥ô'?¦šÜ?§»V?¨7d?¨^?§Óš?§‡;?§oï?§Ej?¦Š=?¥¶A?¥¤à?¦%V?¦]ú?¥ùf?¥u}?¥A_?¥;ñ?¤¨¾?£çÁ?¢ó2?¡ §? ¿”?£Ü?¤wû?¤o?¤Ü?¤™?¤w?¤{Ü?¤y¹?¤^??£û ?£ìÁ?£Á(?£;«?¢Þ0?¢®–?¢ä?£PÇ?£R?¢™G?¢”Ž?¢PÛ?¡„Ç? ç?¡,J?¡æz?¢Y?¢aB?¢"B?¡ùš?¡ùT?¡Ü -?¡¡·?¡„·?¡Wç? ~·?ŸVÝ?žä9?Ÿ;š?Ÿ–;?Ÿ ?žB0?ž¹þ?Ÿ^?Ÿ<°?Ÿh?Ÿ¶?Ÿ'g?Ÿw^?Ÿ©®?ŸF?Ÿß?ŸhD?Ÿ„k?ž)‚?™×:?d¥?†©p?‰Ø£?•”…?›þn?ž-?ŸOq?Ÿ$ñ?ž ï?¹?ë¦?ÿÿ?¶ü?œÈÛ?œ .?œZß?œª™?œÌp?œÌ ?.‹? œ?o÷?œÛ?›WÆ?—Åù?”&†?•Gz?™xñ?›ËE?œ;Ÿ?œ(y?œ ¹?œ þ?›ýÖ?œ -v?›ø?›:¡?šT.?™ž¯?˜—L?—;ÿ?–h?—"’?˜¡Ð?™’X?™ï9?™›D?˜ð†?—Þ;?•~ù?“ãW?•Ÿä?˜Pß?˜ØK?–‡i?‘‘8?¸.?;¦?’W³?”s2?–o´?—˜?—ªñ?—|Ÿ?—cX?–”l?•ª=?•a'?•Ž»?•²­?•µc?•êR?•Ü?”ðÒ?•Rõ?•­]?”w¹?’05?’,—?“—?’ò·?’Ù?“–~?•ÍA?–’í?–)?•bÖ?”(?‘ý?I1?ˆšA?Š»´?Ž£?“m‡?”,Ñ?”HX?“6?‘ë?’µÏ?”9°?”¤¹?”)|?“pÏ?’¸;?’©Ù?“ à?“MA?“BÓ?“&?’¸?’$Þ?’E¶?’¨?’µ8?’[?‘z`?‘sø?‘Ö?’O¿?’J?‘+]?Žže?‰ès?ƒ€å?‚ü¡?Š­?§ê?‘•?‘ -D?ÍŽ?°?ÞD?Ãý?ÿÙ?õá?VŽ?€?|s?‰‹?ŽÎ?Žä?ŽÂy?Ž[k?Ž®·?”'?ëD?†~?Žª²?ŽDA?ŽÞù?›Z?÷…?Þy?nä?Žû?ŽŸ!?Ž‡´?Ž|²?Ž>Þ?’®?‹`?ˆr£?ˆ¼h?‹‡¯?G£?Þ³?Éý?:?Œ²B?ŒjÅ?Œ¦ˆ?ŒÒ×?Œª`?ŒÝ2?2? ?Œi“?‹÷³?‹øZ?‹åY?‹[þ?ŠæY?‹#S?‹[Z?‹ ?ŠäÐ?Šî§?ŠŒ’?‰êË?‰ÿÂ?Š‹G?ŠÙ?‰vô?ˆýJ?‰Y?‰Iå?‰k?‰S«?‰òs?Š?.?‰Åæ?‰#?ˆ Y?ˆ|È?‰ø?‰yÇ?‰H¼?‰=?ˆÍy?ˆ±I?ˆY?‡¯‡?‡Õ¼?ˆ%þ?‡<?†Šš?†Î¬?†h,?†?†½Ü?‡‰¦?ˆ?ˆD?‡ñl?‡§‚?‡?†©?†‰v?†|â?†‚Â?†c¯?† g?…íž?…Óÿ?…A"?…*?…ãG?†s”?†|ª?†¡¸?†àN?†Åû?†, ?„é$?ƒáT?„Eþ?…hV?…ér?…Êî?…‚?…KM?…r;?…w›?ƒÔû?€à­?ò^?Ö©?ƒZ?ƒô^?ƒâd?‚þá?‚?õC?‚¢Œ?‚õk?‚¼Y?‚·&?ƒ7\?ƒÈ?ƒýl?ƒÒ[?ƒqš?‚½X?ãµ?A\?€¥?~L?£å?€™³?OÁ?‚"?‚ÆX?ƒP|?ƒ²J?ƒ„?ƒFÉ?‚èÒ?‚ÝÊ?ƒþ?‚Ô.?‚4í?±º?pè?i.?‘Ì?‘‡?€÷?~Ÿ ?zß·?{¶&?‚}?€—G?€{˜?€`½?€1\?0ê?~FI?~üœ?€¡?€)¾?€P·?€g?€Êd?€§~?€R»?€75?€d?€sè?€?xÞ’?xœ ?xb ?x«?w¢Û?wu?w’ó?wYˆ?v…ñ?u™ð?tO?s²3?tó?t|?t)$?smz?sRS?sÔ´?sç¹?s¬ë?sé@?tD(?t7X?sï1?sÜ&?sIu?r¡•?r×T?s=«?rÞB?r?qwë?q(S?q ù?q -/?páÅ?pb·?p@?pq¿?p‰í?pf?p‚?oýª?pÙ?oÕ¸?okG?oAn?or?n§ð?n´?mó€?nA¯?nŸš?nŒ­?nm?m¾É?mŒÑ?l´Ì?k5£?j%Q?iº\?i,.?i=P?jQJ?kÀ?jóò?j´Û?jÕ?jÚÅ?jã(?k/ù?j€Ý?i]œ?hüÅ?i*Ç?i;þ?hÏÓ?gãÈ?g•?h$>?hSŸ?hÕ?gŠ¦?g9ß?g¯?gB†?gU?g1?fý±?f´ü?f:?eM¼?d¶–?d\œ?d¦í?eXË?eÝb?f>Í?fM ?eþå?ešÁ?eƒx?esb?e;R?dí´?d€»?c®\?ci?c/U?bþ ?bb?aÒÏ?`Í¥?_ù9?_‚ ?^m˜?[CA?T!#?Nü?Qãó?X:C?[×Á?]f&?^Í?^aô?^¾L?_|?_ ƒ?^c?[˜›?YÏ?YØ?]7à?^Ðn?_ ?^öÃ?^2•?]E×?]`?]½ ?]L&?]ea?]¢?]{x?]D‹?]!?]@C?]n?]FD?\¶ï?\6Þ?\SÄ?\yÍ?\\Ø?[¬ï?ZÈ?Zw?YÅG?Yþj?Zv?Yá?X¥a?YQ˜?YÅ^?YÁJ?YX?Ye?Yo¼?Yóº?Z 9?Yד?Yd -?XÑ?Xþ?W’à?Wz·?W4È?V›®?U#?P5M?Mj{?R%Ü?Vvû?W"ô?V­­?VÖ?UzÒ?TŒ ?P?<à?Ñ>? CZ?>êx?F?/b°?!xÉ?7±Ò?LæÏ?QÜ/?Q¾?R,;?S…?TBI?T o?SrA?RÀ×?R~þ?R”ç?RYU?R{?QÔâ?Q)Ú?P?Pó?Q,?P$$?OÏ?PÎÜ?Q+?PÏ&?Pô?Q)F?Q†#?QëÇ?Q¼p?Qð?PgX?Ou$?MiP?LN?M# ?ML?M.œ?MžT?N\?MÉ?I?F3}?HA?Jw“?JÂ3?K?L ?Là?KæÏ?L -l?L8é?Lk4?Lä?L’"?K?G‰?Cæ?D@]?HüA?KÀ?Kfz?JþX?JuÛ?J¦?J­?Jø?J°?J¼?H¶Š?GÄ4?I:D?J‘w?Jñè?Jè:?J¬T?J]Q?J/Ñ?I¡?Gã?D÷?D~r?FìC?Hˆ?I)«?I6?HÛl?HÝv?I7b?I;?HšŽ?H…u?HsQ?H]:?HeÔ?HYa?Gñ-?G`z?Fö)?Fë?Een?Fo?FÓ’?FâW?FM:?Ek’?EH?F7~?FÞy?FÌ?F›?FœÍ?F÷a?Fê.?F¾J?F“˜?E÷ï?EïÔ?F± ?FÐZ?F6Ñ?EÉê?E¾¿?Eª¨?E‘Å?E›3?Eàø?FH¤?FTq?F*J?F ÅI?>9‡?=Ïò?=¨N?=f?=/f?<~Æ?;u?:Žó?;?†?;AÙ?;Pe?;áÍ?<7?<=L??$-?$¯¾?$ÿ?%}Ã?%ìß?%ž8?$bx?#Ã:?$K?&”`?(L~?)n -?)\]?)™?* Ê?) -Ø?A`>ÿ…6>ábµ?)Z?3…í?7†?0€?,.?*'H?(Èj?'í ?&óñ?&y?%–?$²$?$sÿ?#g‚?# °?#C>?"»±?"Q8?!µ?!eó?![r?!_s?!w+?!)? ¾!?!,l?!Jë?!¸? ›Q? >O? *¨? ø?C|?ï@?iS?Yê?æÓ? ?ëä?¡?Š1?Sé?»w?ÐC?DÖ? µ?l?ÿ?Ê¡?™M?q’?|ê?H2?¥¡?. ?:?f?° ?˜²??Ù?¬?ð?óq? v?A? ˆ?bß?|¾?ɘ?àp?H¤?mÂ?#@?‰?Â/?¥H?©.?‡?d™?Í7?ß%?ÿß?b#??Mç?­?™I?U?%/?§‡?…¹??ô?Y1?¼?©?Ä:?´?yd?‚Ê?­Ä?°!?—V?hs?;ù?5/?+W?·?æ~?Š»?UØ?o ?t3?Uh?–?çÐ?Øx?Р?¸‘??4Š?? û•? _N? dÝ? œÃ? ´Á? ·½? ¤â? •;? ‰‰? l±? ,? -tU? -a¦? -ÜÆ? -Í? -ZÕ? -TY? -rÑ? -oz? -“C? -˜ì? -†n? -so? -`è? -PÎ? -A? >Ê? ,0? ¨?ïŠ?Ä–?¤”?²Ê?œY?„W?[¢? º?X?í…?úµ?(??àË?Œ?y????È;?Ê[?ºS?¢"?jÈ>ÿS>ý”E>ü“ò>ûÿC>ûh„>úíí>ú„>ún>ùÕä>ù€¼>øëb>øŠt>øŽŒ>øYÊ>ø)Á>øh>÷ü{>÷Ǥ>÷_ô>öÅ>öyÜ>öÎ[>÷#h>÷7>ö®z>ö’>ö|{>ö -Ç>õßa>õæ>õ˜ã>õh‚>õ`>õR">õ;>õ|>ôÂW>ôCJ>óqO>óºÙ>ô+F>ô g>óÀ9>ókf>ón>òçà>òíP>òÔg>ò¨M>òqN>ò0W>ò‹>ñÞÂ>ñª›>ñ}ú>ñJ >ñ >ð±ü>ð<ž>ïõr>ðT>ïù¾>ïÐm>ïœ>ïeŸ>ï7’>îÙà>î§ ->î‡>íë>ìÕ¹>ì? >ëè‚>ëÒA>ëÂx>ë>ë4n>ê¤^>êG>êdÐ>êHä>ê Y>éÃn>énÜ>é'1>èè¤>èœ^>èqO>èMž>è!ˆ>çöØ>çÈõ>碆>çx¸>çD>çê>æç >æ¶o>æŠj>æað>æT>æ/>åÜm>åò.>åÕI>åkš>å!‚>å·>åM^>å¸>åe•>å/>åTö>åy>åÚ>åU[>åÀ>ä£>ä¶7>å!:>äà„>äßû>äŸ>ã¤}>ã -+>ↂ>ãp>ãÌ4>âÕ:>ã0o>äT“>äE=>ãí{>ã@¸>áÞ>á’û>àè >àP³>ÝÞÀ>Þ ã>áŽ>áŸ6>á×>á´>àU$>àˆ>àñÎ>àÿý>ߌõ>Ú‚^>Û2x>ߥæ>à§W>ßL¦>ÞÛ.>ߘÀ>à»=>áM‰>àœ<>ß8>Üb5>Ú\|>ÜÎ>Ü>ÕCc>ÕWY>ÜJ0>Ý}>>ÞÍ>Þ¿>ÝqÞ>Ý(=>ÞxD>ÞΈ>Þ’ý>ß 6>ßë>Þ q>ÞÎÏ>ÞB>ß`>ß>ÞLÿ>ݶ¦>Ý‘7>ÝÅ>ÜÜÉ>Ý‘º>Ý·Ö>Ý'U>Ü«Ä>Ü2>Ü3S>Ý:Ø>Ý€%>ܲŒ>Ü“é>Ü u>ÜŠÀ>Ü­å>Üœæ>Ü®>Û4>ÚÛ>Û>ÛJp>Ûvl>Ûh>ÛOÔ>ÛIÇ>ÛN>ÚÔb>ÚÖµ>Úצ>ÚÎß>ÚÒn>ÚÉŸ>Ú>ÚO>Ùe0>ØÓÂ>Øn¨>ØH¡>Øz>×ã7>׸+>×w ->×D9>× >ÖÀæ>Ö¶D>Ö¯N>ÖwZ>Ö@Ð>Ö>ÕóN>Õ×ô>Õ¡>Õ°>Õ—a>Õw#>ÕR>Õ2±>ÕŒ>Ôåñ>Ô¸ ->Ôm>Óö >Óö>Ò<>Ñ°_>Ñ\·>ÐËÒ>ÐÂ?>Ñ0·>Ñ;å>Ñ3æ>Ñ6E>Ñ'g>Ñ €>Ðåé>ÐØV>ÐÒÍ>г3>Чü>ÐœÇ>Ðz>ÐK+>Ð4Ä>Ð-«>Ð ->ÏÈÎ>Ï|>Ï@ >Ï>Η >Îä>Ï”>Ï–>Î÷£>ÎÛ´>η7>Έ­>Î]Þ>Î9>ÎG>ÍØT>͵_>Íñ>ÍUµ>Íý>Ì>Ì"">Ì…3>Ì›¼>Ìs>ÌC >Ì!Š>ÌÓ>ËšÑ>Ë ^>Ë2o>Êë*>Émj>È›—>Éă>Éâm>Étr>Èï">ȃŠ>È]»>ÈVd>Èl>Ènï>È?Ó>Çü@>È#„>È+º>È_>Ȇ>È_ò>È">Çêö>È A>Çéô>Ç£s>Çœß>Çûi>È\z>Èy>ÈF;>Çëk>ÇyF>ÆÙl>Æn¾>ÅÚ~>ÂH¶>¯‡>›Wó>–=Š>ªáj>À¦æ>ÅÖ>ÆVV>Ƥ«>Ç5D>ÆÔG>ÆȾ>Æ^ >Åþš>ÅÈé>ÆC>Æ«÷>ÆÖG>Ç@W>ƈ>Ľö>Ľò>ÅúA>Åçþ>Ä©t>Å^u>Æqä>Ä¢>øò>ÄŸ!>ÄŸŸ>ÄÓy>Ä@>‡)>Â,ƒ>ˆ5>Âq¦>‡p>ÂëJ> &>Á$µ>Á‹J>Â#½>Â#ô>‡k>Â&’>Áñ¹>Álé>Á}g>Á}>Á>Á…ª>ÀŸc>À%V>À†Ò>À·Ú>¿ÊG>¿ >¾ÐÍ>¼VÍ>¸N >»ÚÛ>¿¯R>¿>¾ño>½+j>¼”š>½>¼s—>ºðr>´˜(>´ï†>»¯¸>¼J4>»P>¼é>»ï¸>».Ó>ºÅé>»q>»mÞ>º >ºu>ºT>¹¡d>¹«¼>¸ä >¸ˆ>·Ÿë>¸'>¹Åá>¹´©>¹wa>¹l)>¸Ÿ€>·eÕ>·ðN>¸‚Y>·ÍZ>·¯>·B>·sˆ>¸Jb>¹™>¶ÂR>µÈA>µø?>¶kÉ>·8d>·Hƒ>¶ïÚ>¶Å¾>µ÷‰>¶ˆç>·,o>¸Dv>¸â`>¸¸>·Î¼>·Â>·<é>¶±s>µñX>µžj>µh–>µr>µ—à>µ:µ>´\€>µæ>µE*>´KÐ>´ë´>µ+…>´)I>´{ï>´Ôí>³ö¾>³/ô>²™ä>±¨s>±²;>±Û>²t>³û/>³2:>² ¡>±Xù>±œÒ>²?>±ÜJ>°®>±ÅC>²–ƒ>²!Ð>²4ó>±ëç>±°ï>±U3>°L*>°-û>°ëñ>±U>°ÖÒ>°­¬>°Ó¿>°Ãà>°ÞV>°ƒ>°1È>°Aà>°Uã>°AÀ>°Ô>°Û>°0>°u>¯ÞI>¯Ý:>¯Ô^>¯â~>¯ÖJ>¯©>¯Ÿä>¯‘ù>¯~>¯sK>¯av>¯.Î>®Ø>®ã>®äv>®Ãè>®´U>®§Ê>®‡[>®pü>®_(>®Aú>®Í>® Ó>­üì>­Ø>­¥å>­“O>­ƒj>­a“>­=>­$/>­ o>¬Û+>¬‰">¬Nb>¬_O>¬MÙ>¬#ý>«á_>«ÅU>«Êß>«µv>«‚¡>«Qz>«.W>«x>«'>ªž>©ðá>©Ñ‡>©©²>ª>ªQÌ>ª»>©ýš>ªÏ>©—ž>¨žQ>©h>©“>©†É>©\Q>¨üå>§½T>¦>>¦ÊQ>¨>§ä,>¦Â7>§©k>¨€ê>§ÎY>§þ>§_Ü>¥€>¥g>§d#>¨µ>§‘Y>§@ ->¨^>§Àæ>¦à¡>§“ž>§ï>§·ä>§ÈÍ>§Ë‹>§ºZ>§´>§³>¦þ>§Z÷>§G9>¦éÌ>¦‡Z>¦Åe>¦s>¦“Ž>¥ãó>¥¬'>¥û¸>¤ÁÉ>¥À>¦T>¥"T>¦j>§Ìÿ>¥§E>¤ƒ€>¦¾>¦j>¢¤ž>£8ì>§2G>¥›R>ŸÓá>žÞ>¥)5>§õ>£t>œWÌ>z'>¥…®>¨PØ>£Ú„>›ÖB>˜ƒ>¡#1>¨Ë>©¢©>¥1å>šyÝ>”÷¢>ž'æ>§Ûi>«é)>ªê>¤SÃ>˜%¥>‘Lƒ>›¸‡>¦¦ú>« ž>«ÕT>©H¼>¢SÓ>•†í>èZ>™L†>¦<>«8w>¬ÛG>¬–>ªZQ>¤$o>—ä>Š0<>ÎÎ>žh>§å>«r>­Û>¬Á‡>¨L>£MÍ>šim>w9>…½9>uv>Ÿí>§N>­ãR>°¯>°§>°<Ä>®Š>ª>¥f">›þÏ>ˆÅÙ>‚!Þ>”n=> l¢>•a€>2ê>—P>­:>¯ÒK>¯N}>¯:L>® Ô>©öÐ>¤—>š•Š>‰nÅ>„q>•ââ>¤Í`>« §>®œ.>°4ä>¯>¯î>°e±>°õ>®ø´>®&¥>®WØ>¬ì>§]ä>™ì>bd>„tð>{>A>ŸS>§e¿>ªÀ·>©5H>«~l>®§ý>¯K>®vç>®[@>®ÿÕ>°`î>°;ä>¯!>¯kÛ>® ·>ª‡‚>¥Lv>’ —>qP.>htæ>sV$>)”> KP>¦œ.>¨­L>©uÄ>«%P>«Ú¶>¬,•>¬k0>«(.>©>L>«×>«L>ªäÞ>«1t>«@^>«Žv>«”^>«S>ª+m>©† >¨'Ø>£”¬>šÒ÷>>xy»>wé‚>’›Ï> Èš>¥¬>¨8>©–¡>¨¡Ã>©ª>©…^>¨Ít>§b§>§™>§¹ß>©«>¦½Æ>¢{?>¦Ëi>©!\>¨ù1>¨Á>¨6í>§Z²>§A¸>§8´>§gþ>§X¨>¦¼@>¥cü>£‘,>¢ŸÒ>œ¹:>††>d]†>`} >ƒy>˜x—> ä©>¤sG>¦±å>¥0_>–Ê>ŒùÏ>ñ†>•U‚>žD­>§j>¨ðT>©.Ç>¨Ñ>§Ão>§'•>£—¿>œƒ!>¡Œž>¦‘ >¤¸¡>.p> i|>¦yú>¢}Ç>œùY>¢ãñ>¦|Ä>¦UÔ>¤]>¢¦¤>¤d>¥J¿>¤Y!>£³i>£wÂ>¢1Æ>Ÿóã>›3M>ŽMì>pÄM>ez>>‰Ž+>šî> >£Á>£Û>£hž>£Ês>£Ðþ>£%ÿ>¢å±>¢Aô>¢‚è>¢:|>¡©é> ©>¡šÙ>¡ø·>¢ë>¢B>¢žµ>¡ñ¨>¢Ñ>¢YÄ>¡Ó—> óé> BÃ>Ÿðì>ŸÜZ>ŸCG>žXV>ž±š>ŸNE>žìM>œš>ð>ž¼S>Ÿ®Ý>  n>žË>žA«>žx>»>Q'>X|>œÝF>œ1>šµ‹>™5*>—¥>“öd>ÿh>‹5?>‚…>h >TSh>g×Î>ˆg[>ŒõÜ>(,>“´>•=Ø>–h´>—L[>˜Û³>šø>šÑ>›83>›”>›Ñ>œ ì>œT#>œ¯¶>œëA>_>>=>œ)Â>šTè>œ)‡>J>œþˆ>œð]>œÜø>œó>˜»š>™Ó*>œLv>œh#>œ#>œb>œ º>›÷¿>›Ôê>›¦»>›‚Ì>›eÆ>›B>›T>šò>šÉƒ>šœ>šgw>š$?>™â`>™º>™‚ >™;>˜îö>˜ˆZ>˜!Š>—¼y>—GÖ>–Æk>–<>•<2>”/>“(Ó>‘Å'>ó}>¥°>Š¿ >‡ø>‚‰5>yõf>l¨£>\Û¯>JÉS>C»§>QêŽ>bÙÆ>pöÿ>|Í{>ƒ<‘>†úî>ŠL>Œ’Ô>ŽjŒ>ÊC>âQ>‘¾¥>’`”>’‹5>’³$>“"±>“^ã>“å;>”¨>”,>’þO>-â>ˆ/>“Í>”,…>“Þõ>“ɧ>“}>’D>Ä8>’‡>“·>“¯>’ö¶>ôl>’Az>‘Ó¸>~*>f³>’Ùì>’sÍ>’T->’¡Ï>’>‘Ûm>VY>æ>‘ê>‘å!>‘És>¯`>}c>‘WI>‘Y‰>Î’>¤–>Šù>ñ/>Ð>¡À>ŠU>nŸ>JÀ> >^>Ä:>-«>E>Jƒ>K»>-o>ð>Ž×>Ž‰>Ž5J>.ø>‹¯î>‹‰n>Œ°S>%[>Œ˜Ê>‹-ž>‹îÞ>Œ'~>‹»ê>ŠÝÎ>Š8—>‰óK>‡÷Î>…Aa>†/å>…©â>ƒÅÕ> ž>}µ>spW>hÌk>dGÓ>XßÇ>J>9#>3u>AÜP>Q~>^6>>hÔH>qÙž>uÍ*>v>>€=½>‚ñ6>ƒ«½>„²ª>…æù>†rk>„¨>}ϼ>€š)>aµ>…°—>ˆ´>ˆ:>ˆAŽ>ˆs„>ˆw>ˆtÝ>ˆmH>ˆh¾>ˆOÐ>ˆ#/>‡ü¬>ˆ>‡œ>‡uX>‡ä0>‡†Ð>‡-¾>‡ `>‡©@>‡Žl>‡rð>‡Wë>‡=g>‡!É>†üÄ>†· ->†ô>…Î’>†€7>†t>†z˜>†SY>†Ï>…—”>…ÜF>…ñP>…áÔ>…ÀÙ>…®é>…—¢>…yq>…WÁ>…@M>…*>… î>„å¹>„×Á>„¹u>„«>„_Q>„E >„Fk>„(v>ƒíÉ>‚É>‚úN>ƒCH>©Õ>‚²È>ƒp;>ƒ\Å>ƒ:H>‚*°>}y3>€Ùæ>‚M›>Ÿ2>þ±>°§>ðø>‚s>‚M>û >\>€µV>[ó>kç>2Ÿ>&>:³>>€ê_>€½é>€¿ê>€¯Ž>€‘~>€v>€RŽ>ï>¿J>Š5>g®>am>1æ>~ó*>~²ù>~nx>~Œ>|øc>|rÒ>}á>|èx>|{v>{½¨>{PI>zëÑ>z`;>z;>yÜ2>y ó>x«>wƒ¿>w>v7Å>uU>s­¯>r×>où >mkl>j=Z>fMT>a, >Z×e>Sni>Iù>>cš>01Y>!(*>#ü®>3j©>@g‚>K ¬>S¦P>Z‰u>_ì¨>d*V>g~0>j>k÷¡>m5x>ngu>o ">pZ5>pê‚>qUV>qœA>qÞg>qíE>qäy>r%‰>r3!>qÞV>q£>p_¾>q ‡>qߤ>q¨`>q˜¬>q±Ù>qcg>p=)>mUu>nò†>pÚÊ>pÅ`>o¦>gÃX>hïÚ>os >ph>oáV>o·š>oŠš>oNI>n½9>n®X>n­î>m™Ú>iÍ,>k¶M>mé#>mÒÂ>m±{>mgã>løÂ>mY>lìv>llÖ>kÕº>l$*>l'e>kï>k»>kUK>k4â>j÷À>jßô>jêA>j¾˜>jˆF>jX(>j*K>iÿ+>iФ>iœÃ>ics>i%Ã>hçÔ>hÁ">hat>h(Z>hE>h>gÊ?>g~I>gH>fãÑ>fë0>fê4>fÈÕ>fœ€>fi>f5>f©>eÛ6>e¤4>etÜ>eCˆ>eÓ>dëa>d¶‹>drD>d?b>d&>cì?>c±á>c)K>be>bBp>b»>>bž ->bn–>b@h>bBý>bò>a‡>aŠ>`á«>a°>a>`ú¯>`’ƒ>_¾>^‰‡>_~;>^ô£>^ö >_$%>_Š>^ªÅ>]È¡>^(‘>^fs>^=7>]çz>]Ha>\ÔÙ>\»#>\Ñt>\˜–>\œÉ>\a]>[Ô’>[Ýd>[ÕŒ>\">[Ü}>[J>[Ý>[Ê>ZH>VÜÇ>WC¤>Z>ZI9>YœU>Y–>Y“§>Y®á>XÜò>XD¶>Y,½>Xé‹>Xц>XУ>X…ï>X*«>Wg_>W6•>Vo]>VÐJ>Wƒñ>WUÍ>VûÏ>VC>V~>Uoû>U]æ>VL>UöÆ>U™ä>Utc>Ua>U>T¾Û>TÀ×>TŒ>TW2>TS>Sß³>S³ñ>Sq>S'J>RÕå>R®¸>Rv´>R ž>Qn>O‚>P^°>P²Ú>P:ñ>Oá„>Oo¬>N×@>N+4>M`ø>LX >KS>J±>HŒ³>F¥–>DFÂ>AJ^>=Ž ->8ä >3¨>+æ>#$Ó>=g> -gþ>ß>/Ã>!x>)°¦>0ª>6B>:±">>/v>@æ>CD>D•¥>ESH>F†±>G¨å>HDÿ>H¹l>IÙ>IT>I„Ç>Iª>IºX>I»2>I´ >I(Z>Hy ->GÏÜ>Hž>F‘v>G+Q>I0˜>I:>G‰e>FÍ0>H‚â>Hí>H¥‡>HšA>H}¥>H\>H8Å>H}>G±>Gn>Gœ>Gq¯>G>G"ž>G>FÆú>FKÚ>FnÏ>Fr ->F,â>EÉ$>Eé?>EÉ„>E¦ª>EbÊ>EFM>Dúž>DÐ>Dã×>D¹~>D†>Dg¦>DF`>D'>Cóª>CË8>C¡I>C{>CL8>C&>CË>BÔ)>B°c>B‡š>B_¨>B7u>B:>AÒ>A´Ù>AÝ>A Ã>@ù>AÉ>@ú(>@Í{>@Š>@r¬>@X±>@1D>@ )>?àÉ>?·á>?%>?_>?>€>?„>>ð.>>Çn>>–\>>YI>>Dl>>'ú>=ÿô>=×»>=¯ò>=ˆ¬>=`o>=5j>= ¥><äù><¿þ><•$><`><>«><ÿ>;öç>;’\>:|˜>;>;Z€>;7b>; U>:â¢>:À>:˜¤>:os>:Hâ>:"Ä>9ù>9°±>9Rw>8øR>9·>9>8à‡>8Ë—>8¬I>8˜>8pu>8L>8'Ó>7æ¯>7JÓ>7tÆ>7‹À>7`Õ>7&ð>6ùœ>6á£>6¦®>6˜>6}—>6XÝ>6/€>6F>5áT>5¶>5‘/>5r >5Li>5%Œ>4ýÙ>4ÙF>4³Á>4‹m>4]Ù>47Û>3ôX>30>2©×>2ãi>3e>32>3.ô>2ø>2£8>2«ß>2—>2uÆ>2Iì>2(Ò>1ðÞ>1Äz>1Šù>1~œ>1râ>1B>0^>/Ù[>0”Î>0!h>0Kß>0+ê>/öC>0‚>/—<>/#Í>/v>/m>/e>/9ñ>.ú;>.Þç>-ØV>-½É>.hØ>.W>-É*>-¶ç>-îÙ>-ÈÒ>-ƒí>-xs>-Iê>-5V>-Ø>,óÃ>,´¿>,•.>,`>,]„>,"’>+ŠÄ>+ÁI>+Â>+ti>+fû>+×>+/ò>*úN>*â>*ÐÕ>*±J>*Œv>*h>*Bñ>*É>)ða>)Ȉ>)’d>)js>)SÈ>)â>)Í>)Ô>(ÛŒ>(ª>('>(qz>(AG>'ó:>'η>'Ì/>'nB>'e)>'lp>'R¦>'0V>&Á%>$ä>%çJ>%ïÒ>!†{>!“a>$õ>!ß”>"ª>%| >%§¯>%|û>%]î>$ô>"|³>$P4>$±ý>$>$~K>$dç>$KÙ>$i>#5=>!8©>#ª>#“ý>#xl>#VP>#1ü># -·>"×ì>"oh>!Õô>!#>"&&>"'›>"L>!øW>!ÏD>!ªú>!Šå>!i>!FÁ>!'o>!> Îc> dA> }x> wÍ> Sú> -¤> M>ë+>Èû>¤Ú>eÇ> -ó>+ý>U>ïO>Ä/>¡> ‰>BZ>r>í+>ð>Í*>¢>fç>L…>/º> - >â>>¸ø>‰Z>éW>«F>ê/> -@>%Ï>j7>@e>>ÇË>s}>+»>ùF>¤È>Io>ã>>mª>æ<>Id>Žš>­T>Ýn> •@>¶z>žc> 9°> -â>:>r›=÷´­>P÷> -HL> Jã>"w>¢>›Z>v>(Ã>ª9> >P|>oÁ>¡>Ëç>å[>î>>w>ÿÍ>øs>íì>àu>Ñ0>Á6>ª4>Wx>ãÐ>CQ>W‰>?”>'Í>>õ>Û>¿C>›'>¿>lö>P£>/œ>»>ú5>ÞŸ>ÃK>¤­>‰…>l:>NO>1¤>C>òù>×;>¹Á>œÆ>}ó>G_>E>g>Å>ê>Ì>«>Ž\>m6>R >5ø>a>ó‰>pl>h >>uû>Tj>@ó>&Û>u>×/>È">¬Ï>c>s…>Uª>7> > ب> Ùk> ¿ÿ> ¢> €6> Ty> .n> V> ì¤> Íã> Ð!> ²—> '> cR> R•> ;ç> —> #> ã'> ¾Å> ¦> Š-> mÁ> Hõ> a> ˆ> -ø> -Ø?> -¸o> -Ÿ_> -~þ> -W§> -2l> -<> »¥> L> –Y> ®Å> ŽÈ> \ -> X'> @Ã> #ª> Š>èú>¾Ú>=ý˜,>põ>>»[>´>`•>ùð>V>šv>Mƒ>%i>5ã>3v>¤>ä/>Ó™>c>Ϻ>f·>MË>LÇ>4Å>­>ú>ß›>Âö>>Tò>i¯>R1>)ø> >ð¥>b™>†>¢ú>të>>d>5p>  >ö×>ýS>ß@>°Þ>;>O¹>PÎ>Rê>Ö>ÓM>óÛ>åy>ÉV>­¾>Ž>>rC>\´>A/>$}>>“Â>LN>b¨>“>Ä>d|>Hû>-s>Ö>ö0>Ú°>¿$>Ÿx>œ>l§>PÃ>*H>\=ÿÿë=ÿÉ=ÿÿ=ÿ\:=ÿ#=þìC=þ·€=þ‚È=þL]=þ\=ýÛ+=ý¤¾=ýj²=ý;°=ý|=üÐl=ü•‡=üR˜=ü‰=ûõ=û¹8=ûŒÆ=ûZ}=û$ -=úÝæ=ú­º=úƒª=úBN=ùÎV=ùБ=ù®•=ùzt=ùDÈ=ù-=øÖ/=øO=øjO=ø4£=÷ùÕ=÷É=÷4=õ€=öÈA=öù|=ö½=ö|ê=öT=õÙ/=ócK=ô­H=õVð=ô;‹=óèÎ=ôäY=ô¾=ô‡,=ôPÆ=ô@=óÁ¼=ó^Ý=ó,=òÏj=ñð\=îôó=ñö2=ò~Æ=ñk»=ð Ã=ñLÕ=ñZX=ñzÒ=ñG5=ñ½=ðäç=ð­½=ð{‘=ðJ9=ðÙ=ïá =ï°=ï~ä=ïK´=ïÙ=îGV=íï¿=îvº=îJs=î”=í³~=í•Ñ=í}Ô=íH-=íG=ìá=ì±Æ=ë>6=çO=èß=âEÊ=è³=ëzô=ëH=ë<=êáŒ=ê°ý=ê…´=éóÐ=éN7=éå3=éÁ>=é„é=é4=èòI=èúÉ=èÇ•=è#¸=è»=è5…=èó=çÎé=ç þ=çl‚=ç"Å=çh=æÖR=æ#y=æp=æGÈ=åì‹=ãé=ä®=å}N=å'=ä==äÛ =ä°·=ä‰[=äH=ã’%=ãÌ‘=ãÃN=ãšÔ=ãhð=âþå=â>â=âŽ@=â M=âwƒ=â \=àX=ßFó=á)=ဠ=áVÁ=á%«=à÷=àÆÛ=à—C=àgï=à8=à=ßÖ†=ߨ=ßx7=ßF*=ßb=ÞèC=Þ·=Þƒž=Ý}X?}Ä{?}¥ð?~¡?k??«?‚]N?‚÷º?‚ÉÊ?‚JÇ?¢}?€k7?|¯ü?wÌ -?tW?sÞ?vií?zü?Ûô?Ž¶?‚ R?ÛÚ?rú?€—m?}?xd?tW?tÙ?yÆM?€l?‚îÀ?ƒL-?©p?~=˜?z6Ë?y4ä?züÖ?}E?}ÓÆ?|‰?{+n?zqº?zpœ?{VÝ?}žd?€së?Ø?‚\ ?‚9?ƹ?ß9?‚‡ó?ƒsw?„É?ƒ¬]?‚7É?€I®?}Ü÷?}|u?~À-?ÈÉ?~²ñ?z±T?uT¬?rIì?søû?xwP?{u+?{ê?y±~?zYª?}G ?À?„?ztÆ?y®á?yðc?zvP?zà?{´?}_é?P?€T&?€‡â?€FÏ?s™?~D†?}8N?|X}?{èu?| -,?|"ô?{º?x~|?uÈG?tl:?s|V?pª‰?l7Å?iÀb?lZy?s?z•?~Î?~að?{ðÑ?xii?uéÎ?vƒ?xs?{¯?~•£?€nÏ?Bî?Äm?òˆ?Ú^?ƒ«?€Á¯?~~Æ?y’ñ?rü:?k÷S?fÈ?e\¨?gÆI?lIï?pÑ?tdš?vù4?x3l?w~?uä?t„?ty‰?vwÉ?wÒI?ví?tJn?qTu?nª½?lÌõ?lÈ?nq³?o°±?o`?o]º?rl?w?\?{éc?~Ò?~·?|´)?{ -;?yð¤?zT¶?|#‚?~N‚?ð•?€IÜ?ŽÌ?|J/?wg?rÈ)?oöó?nñ-?nˆL?m¤?lm-?lQ ?n69?p²¸?q._?oDz?mÀ”?oJY?sl>?wÈv?z’P?{!¢?yê?wë?v–¼?v“7?vçõ?vy¯?th_?pyX?k¾e?h)?h™?k{Æ?nKp?nË ?ml~?kÊW?j­‡?j7I?j@ù?jA?iöú?ipU?hz?gÀ—?i$x?lý‹?q ¾?s?tûç?v´ ?xíH?zçÿ?{3Ñ?xÊ‚?td¨?pBk?nŽ(?oÈ+?r7 ?sF«?r&?oäÄ?n·š?o M?p|è?r˜t?tù/?vÃ?vð?u¬a?tŽŠ?t’`?u?uv!?v:¹?wV£?wë{?w±??w2?vr9?uЂ?uŸÇ?v -¤?v[g?uŠ?sf˜?q‚Œ?qž?sû?vø?v~7?tˆ8?p ½?l5"?i82?h¼ÿ?jM?l··?nÙU?p 9?p¶?r  ?t˜†?wQÄ?x¯å?x+?uÉ’?r‚þ?ož°?náÂ?pã—?tD¦?w@?x§¼?yà?z0?yˆ~?wn©?tõj?tz?uI$?vû)?x ?x¢ç?y!V?y'Z?x;?vÉ?tšU?t—í?uŒ3?uÒ?t¼?sUò?rÞw?s|ƒ?t§ ?uÁ ?vL?uwÒ?txó?sÝŽ?sŠ-?s2Ù?sQ®?t\d?u§Ù?vO1?v˜¢?w( -?wnÔ?vØ?rj©?mcs?i·?g?iÇ?kÜŸ?mâ_?n½ç?o$â?oDÇ?ob?ot ?p¹?r –?rÝì?szF?sU‡?pü®?l¾Ê?ii\?iZù?kì ?n=Ì?nð?kÕõ?iŽw?h*?hÛ%?jŠŽ?m‘p?pê?ré3?rEç?néÅ?i­©?cɸ?_¨û?`_ø?eâ?l•?o;¶?om*?o8q?pšç?s ?tÉw?tM ?qÅó?n‹?iû?e¿?b)Ÿ?a6U?dZ&?j7!?ožà?rœ(?s% ?qÁ ?nĶ?j¥‰?fÛ?e›´?gfî?iõ?h¾ç?eÀ?dL£?f™–?kS?p œ?s4å?tO?reè?nnÞ?i_½?e§9?ef]?gÊ?i±Ü?iÛë?jZ?m¡?pst?qØš?p@`?m©?là(?nc?p?pô?nL0?k»˜?hÉ»?f–4?gÔ?j´Ä?op{?r¼r?sä|?s¼8?s5|?rzn?pò!?nCf?krº?jZ‰?k™?m©?njõ?m?j·ê?hø?hùS?jä ?má ?p{ð?q®Ž?qow?pLV?nñ›?n Ž?nª?n÷?p0½?q0^?qyM?p?nd”?kÉþ?iûÿ?iÁ}?jÿf?l½ ?mì`?n\¯?n¨w?oe’?pš½?qÛŸ?r¥“?r~[?púª?nN“?lÒ?kß7?m²À?o”K?p`t?pO˜?o°f?nRx?kÜÝ?hwM?eV‘?cè$?d!¾?dÎð?e¦R?g[,?iæ‹?l˜?nÕ@?p`?pþI?pÉ>?oßÐ?nS†?lža?k¤(?kÇ[?l]y?le?k3?j£à?iæ?hð?g‹?dÄ?cœÔ?dþû?h?ï?k3?kÃà?jÓ°?j"Û?jãÚ?l^K?mT®?m»?mý?mÕN?lÞz?kÙ?hšÿ?e¦Ï?cg?bº?cn?e6ã?gü»?jí?_‡ô?^‚•?_ÿu?c´¥?h Ã?ks?l"§?l’?káØ?k’á?j„ ?h·=?gs_?gð*?iÊà?kŽ‚?l,n?k]¾?ie+?gV‡?f‘1?föu?g -œ?fRV?eõÖ?f×Ð?hz ?j™?k$?k’?k#?jƒ?jÉë?kéP?lbœ?k$ï?i W?gÉt?h!_?iÞ…?lB¾?nHÍ?o?nÀN?nÜ?m½?m¡b?m1ƒ?kçÃ?j …?i?j ×?l­|?oL?p0\?pª?o†ª?næí?ndî?n ?mÌT?mÄÉ?n.Ç?oG?pf%?pµG?p€³?p’I?pûí?qBë?q'Œ?pÁÄ?oþ¡?nwÏ?lÆ?iÈY?hãq?iÃï?k„ð?mR$?nþ?pUU?pà#?pH)?nZ?k '?gt‰?eµ?fÌÇ?i!Ã?jÊ?hê?fæ?e˜!?eDh?eÁ¿?fó>?h; -?h¨!?h¨?g¦a?hBâ?išÃ?jU¿?isb?gë2?h6Ö?j¨ü?l( -?j ?eÕ¶?büu?cŽ‚?f7t?h®[?j5Ï?k0?k›Ò?k-Â?jR®?j ?j¶H?k¹?kÌ ?krÇ?kê?k‘?kºÏ?lD*?kíé?j‡ ?h;v?eËè?dw??eo?fø"?höð?i§'?hç -?gIJ?g8?fÑj?f0c?d®{?b»?a¢È?c«?f¶?h¸?g][?e>?cqF?cÚü?e—¨?g[í?húü?jdi?k ?k›à?l¥¾?m‹?mC‘?k¤®?iyƒ?fªÒ?c-Ÿ?`¨³?a,?d`Ž?gБ?i­?j<$?j 6?k ²?kUc?jõÌ?iÍ?gñ??fG?e²{?eù¡?fJü?foŽ?fçÄ?g©?gÑu?gDÛ?fØæ?fÈ)?fÊ?g/°?hŽd?jˆ ?kÝ‚?kΙ?jÉ¥?iÍ•?i`÷?i?h*†?fîð?f*¾?fm?f]Ë?fB»?eʾ?eÕŒ?fµz?g£6?gúK?g³±?g"?f¾È?fÔK?g> ?gd,?fª?e-_?cŒ^?a»·?_ƒ-?]í ?^P>?`‚°?c&)?dãÊ?e -L?câ\?b¾?_¥ ?\Çu?['k?\…„?`ÀÊ?e ?eï‹?c?$?`¸Ô?aöõ?f`û?jß?i¢?d¬`?]ÈK?Z-X?]ì ?gRk?p7?rá?mã’?bº?V9a?O*?Q -?[·?j¦?w:Õ?z—–?r—ô?b½d?Q@Å?E‚ª?Fm?T *?hðA?|á?…ö}?Š°?‰”ð?ƒ±f?rB?Yym?CÞ3?:?Aû?VT(?ql?…1î?Ž$â?“€®?–Z÷?–àï?“Ô^?ŒEY?€’o?di‘?G®Ì?38?.BÁ?:G?Pâ~?mï"?†Ô‹?•žJ? àÄ?§Šr?ªJ?ª?v”“?Vê?8?!k­?+}?&&a?@b‘?`?D_?Žw?›W“?¨ =?´­C?À{e?Ê.“?ÑÒ¡?ÙV*?âHÁ?ë[¬?òÅ?ù Ò?þ¸°@¨¹@„Ë@±@ –û@~õ@e²@yn@$>@‰@ çm@ Á[@†x@j7@¦@w»@øp@4>@–@[@EZ@TN@i³@Çb@ -¯@«@c@HŽ@ƒ7@§[@f–?òjà?Ü7?ݾÑ?õýe@Ñ@¯T@k>@b@áv@Ã0@(þ@5@³[@€¾@ f@ñ4@ªº@Hû@ ‘@ Å–@ òò@a½@RV@‡?@%)@U;?üpØ?ó®K?ëÙ€?äU6?ÛTö?ÐÂ?ÃâE?¸¡D?­ªç?¡’G?“´?ƒš=?b|÷?<ñ]?ö§?¨Z?ë“?0mH?O#"?nš÷?†šW?•c×?£SM?°zÑ?½ML?É‘ ?ÔnL?Ý‚”?å]?íK?õ(¼?üÏ«@«G@t@™@ ƒh@ Q±@ †@ ´Å@YŸ@.–@†+@{@Ún@@gZ@¸@Ý@Ý-@u@¼@L@¿@@åú@ÝÐ@È+@ë -@ýO@Ù@l@-ø@Þ-@Ĭ@É@!@ *@v]@ƒt@ŸÂ@…@¢H@¾@ú@}@/\@»þ@Ö6@=)@¿Â@u/@ô@™N@œE@ãÑ@EN@ŸÐ@î&@‰þ@ƒ`@eË@ØÞ@Ïš@x¸@!±@Æå@µp@_@ý…@ª@A@Q?@Ï’@}@¦@9¤@"@@%F@Q@ûz@-|@—Þ@*ý@ @ÐL@tF@@ê@ßç@ÒÌ@ ¤@l@sÃ@@¡–@æV@eh@„Æ@{‰@‰«@ Ì™@ -–‡@¾~@m(@ >v@ -¾Ö@ -­ò@ _@`ú@þ„@Xñ?ÿƒ—?ú¶ï?õ½¹?ð «?é+?àí‡?×»Q?Íé?ÃZè?·Ó?«M¶?žû?ka?‚ò?ežd?F -™?*¯ÿ?Ù?Üç?ß•3?â.w?äýT?çvÒ?é¹Ç?ì¦)?ðÙ?ò¿›?ôE?ó’‹?ò?òÁ«?ô‹L?öæ?øªì?ø´L?÷5ã?ö‘à?øUx?ú»?ûȬ?û½?ûžó?ñÄÞ?ò|?ò4š?ñĉ?ñ—â?ñ*?ñ ô?ñ/$?ðö ?ðnÏ?îÌÝ?ë“?é -?é¨@?ëÜc?í&–?íþà?ïIy?ðË?ïòc?ðc?ïQT?éð?ÞJ¿?Ô##?Öñˆ?ãAê?ìºM?ð^}?ð¯-?îh¾?ê¢T?èFä?è~ü?éùš?ëî?í‘?îZ?ï—?ð™\?ðØ?ï»a?í|?ê;²?éåÔ?ì«J??ð£ž?ï©]?ì¸8?éd'?é:ë?ì7“?îY¬?î[?ì™Ç?ê þ?çRN?çwD?éâ?êMû?ç–¯?伄?ãŒ?ãM?ä® ?çLq?éý?é¹a?é)ñ?è-P?èr§?é-ø?çŠ-?âñ†?ß~R?á¢s?æÐi?é÷°?êO«?é.v?ç;?åyR?å›–?ç!¿?è>€?èmÿ?çì?â x?Ù¸-?ÕN­?ÚÏ?àÆV?áŠ6?ÝXw?ÙŽ9?Ù¹Ã?Ü=4?ÝŸA?ß"´?âV;?äID?âÐu?ßzR?Þ?ßÄ[?⣆?ä‰J?äþ?ãàk?àwd?ÜÓ¬?Üè8?ߣ»?àÓ¥?àd?ßò/?àšì?àky?ßx?ÝßS?Ú1N?Öo:?×…«?ÜM¶?Þž?Ü® ?ÚOi?ÚF8?Û–?Ûiœ?ܧ-?ÞuÇ?ß2[?ß[?ß+?߀—?ß”è?ßHè?Þã?ÞÇÛ?ß ´?ßCé?ß? ?ß> -?ß^?ßwž?ß(œ?Þ}?Þ °?Ýä½?Ý—?Ü“\?Ú¥ý?Ø‚R?Ö¼Ï?Õù„?× ~?Ùr‡?Û|Ã?Ü¿?ÛµÀ?ÛyK?ÚÊ£?ØB°?Õ7?Ôñ -?×€æ?Ø=µ?Öƒ?ÓëZ?Ôn?Öí´?Øݧ?ÙTZ?Ù%j?Ùú?Ùä?Ùâ?ؾ?Ø+Ê?×j˜?ÖÈö?Öψ?×—C?Ø–,?Øü¦?Ø©ê?Ø%?×<?Õ”Å?ÔB²?Ô—?Öâ?ÖúY?Öʯ?Õm3?Ó|?Ò†½?ÑÒ(?ÐÌ -?Ðri?ÑN?Òl?Ó6f?ÓtS?Ó9?ÒÙÎ?Ó8ƒ?Ó¢h?Ó}`?Òé?ÑÑ4?ÑñÏ?Ò@?ÒØy?Òø{?ÒÌW?Òzî?ÒV?ÒN¢?Ò2¼?Òý?Ñû¿?ÑÍà?Ñ—¸?Ñn§?ÑL³?ÑÀ?з³?Ðnç?Ð4º?Ï“9?Îb–?ÍJ—?Í ?ÎÑ?ÏL¯?ϲ”?Ïyˆ?ÏNi?ÏP ?ÎóL?Íþ¢?Í#3?Í1?ÍžÕ?Λ?ÎXê?ÎQ“?Íïe?Ídk?Í3?ÌíY?̨?Ì9?ËÃï?ËG5?Êj\?ÈÊ??Çi¨?ÇÞ?É],?Ê#h?Éáç?ÉAÕ?ÈƬ?È’7?ÈÁr?É=†?ɹ?ÉÒJ?ÉÜr?ÉŸX?É0Å?ÈÁ¬?È…"?ȉ©?È¡>?ȃ&?Çûî?Ç%^?Æ~O?Ɔ¶?Ç Œ?Ç–?ÇÉì?ÇK‘?Æ8?Å*?ĘÊ?Ä°u?Å19?ű ?ÅöQ?űó?ÄÅ?ÃÐè?Ãg÷?Ãbú?Ã…ä?áñ?Ãy+?Âõ]?ÂdŸ?ÂTº?–Ê? š?Âi?Áîü?ÁW±?Á!t?ÁMw?Ár§?Á`¸?Á'õ?Á?Áú?Àþ??ÀÈÚ?ÀC?À%?¿Tþ?¿ ,?¿À?¾Ê?½_²?¼ H?¼#?¼û#?½šõ?½Rn?¼\¡?»—T?»v—?»¶ƒ?»Þ‹?»Æâ?»|?»®?º´S?º ´?¹'¥?· ?´xŽ?´ :?µƒ¾?¶{o?¶TÄ?µ§Æ?´àÜ?´Î?³\?²K°?°»ã?®ì ?­eB?¬B?ª?¨´?¦v¼?£Ý#?¡2É?žY ?š¶‚?•Ù¯?±ä?ŒŽŽ?ˆƒ ?ƒOX?z,#?loÛ?]Ñ ?N¬??>§?,9+?ZŒ?E>øä ? -5å? ¸?4Ž$?F‚j?Vv‡?dÁˆ?qX?|.Ñ?ƒ2 ?ˆd??ô?ȵ?“êB?—½¹?œ ?ŸÝÿ?¢y?£¯„?£æ?¤ªJ?¦ÊW?© ?ªe\?ªÜ>?ªYÜ?©°:?ªÄ ?­æ?®Ïø?¯×ã?°`?°h|?¯þQ?¯«ð?° €?°¢n?°ÞÓ?±¾?±ƒš?²+ð?²Z"?±Òx?°ÀM?°Î?°š;?±É´?²ìs?³s:?²à1?±%c?®þ?­Õ`?­¶…?¬3½?©Ø?«Dø?¯§ú?²‡Û?³bf?³†;?³>‹?²@5?°Wø?®¾Š?¯]:?°ñ:?±K‹?± ?±•Ö?²yÐ?²ìÊ?²ïŽ?²ÆŒ?²cð?±è?±‰r?±[?±*{?°¼™?°›Ú?± ƒ?±|*?°°?®#?¬»&?®™Œ?°à*?±«?±ÕÒ?±ßý?±¨{?±%F?°Ž8?°$]?°y?°Oâ?°®¾?°çp?°üð?°ú~?°•k?° -õ?¯¼²?¯iø?®ãì?®h?¬íÈ?¬“Ë?­Žò?¯ ?¯½•?¯b ?®8C?­#f?¬Ãò?¬úO?­í'?®þ ?¯q‰?¯%–?­òm?«ÎJ?©žU?©l"?ª¤ù?«t?ªªs?ªÙÉ?«Æõ?¬{#?¬ P?¬Þ?¬)?«É³?«3w?¨ûî?¤:â?¡ý?£nà?§R•?©‰‹?ªè?«×Ì?¬Q?«žN?«8ë?ªìœ?ª„?ªL?ªiÏ?ª/?©È?¨‰R?©gÈ?©ê+?¨WR?¥ít?¦Ñ?¨r0?ªj?ªvõ?ª@ì?©º®?©N_?©&ü?©ó?©0?¨¼¡?¦”g?£¸ -?¤T†?§p7?©;?©‘Ù?©“‘?©•w?©?¨ ?§;û?§;?§©l?§Ô»?§xË?§)?¦ñb?¦›Ò?¦•n?§xâ?§óÁ?§ý?¥ÿÚ?¥à?¦Q>?¦?¦­è?¦Là?¥Æö?¥Û¥?¦Y©?¦Àr?¦Óv?¦…¶?¦BÒ?¥ù,?¥)e?¤ƒH?£Àh?¢~‚?¢šE?¤Œ?¥Hµ?¥ªÌ?¥Œ ?¥vÐ?¥´š?¥ãë?¥Ö‹?¥¨?¥‘3?¥™Ø?¥Œ?¥NŸ?¤ù½?¤Œm?¤8Œ?¤;?£ëÜ?£§S?£na?£c?¢7Ÿ?¡hÝ?¡†Æ?¢0 ?¡ïÐ?¡Ko?¡«}?¢U?¢ ?¡Hà? ©ú? êé?¡I?¡xJ? ÷ú? ‚Ë? 6¡?  å?ŸÿW? i? y0? AÇ?Ÿ9??žå?Ÿ–ù? 8’? ¥‡? ¢E?  ?ŸŸ¦?ŸÁÍ?Ÿ×Ÿ?žGÆ?šæ?•:?“jä?–$Q?˜ìì?˜ý ?šå?Þm?Ÿ@¦?žÏê?ž™X?ž¶¶?žX“?œHŒ?˜¤"?—~a?™°~?›‘¼?›³i?›@Š?›;r?šøñ?šÿ%?›xë?›?™|?˜ç?™%è?›L6?œ=W?œ 1?›nØ?š¤C?šeP?š§w?šÜÆ?›4 ?›•Ã?›£.?›!?™½¿?˜q?—Á%?˜ã‘?šQ­?›&‡?›0C?š“X?™‰v?—6?“’?’tR?•6Ö?—ýW?˜QA?–L\?“”²?’€d?“n?”Èå?–?—§&?˜Fn?˜.?˜ª?—Íq?—0Z?–Î ?–ˆW?–c5?–…=?–º ?–—Ç?•µi?•÷?•jG?•¸?•tç?”©{?”BM?“Ê\?’RÇ?‘G ?’?“3ó?’ÏÈ?‘Êk?’ ?’¶Q?’,“?Ý6?Ž?™?ö‹?’5?’¥­?’¥?’L?‘ŠQ?îñ?’H‹?“úp?”Œú?”@¥?“–B?’ìa?’¬?’Ç}?’ýy?“'?’Æ[?’I/?’®?‘è?‘_?‘€€?‘.ü?©Ù?šÖ?òø?‘nB?‘{,?Ë?Tô?Œ€d?ˆ¼ž?ˆÆ?9Q?oG?ÿI?w?Mù?ŽÌ?»$?¨~?\ú?Ý ?ŽÌ•?]Ñ?:l?Žg¼?µp?8?Œßý?Œèä?™Å?ŽÄK?b7? L?Ž‡ä?Ž›-?ã?6?4?Žþa?Žý ?Žù–?ŽìÙ?ŽàÑ?ŽÏO?Ž¼?Žc¢?ŒÔA?ŠÖ:?Šäi?Œ ‰?Œs„?ŒK–?‹»ñ?Šá3?‹·?ŒZ=?b@?ˆô?ke?P??Œ\ò?‹˜~?‹`?‹GT?‹ôk?‹õ"?‹¨3?‹È.?‹üÐ?Œ -(?‹Ý¿?‹“ ?‹?b?Š®w?Š„?ŠÔu?Š ‰?‰ÂK?ˆü§?ˆ“?ˆ“?‡¸d?‡ø$?‡Öm?‡Nû?†ÕM?†}Ê?†[?†^]?‡ ž?‡S2?‡.>?†¾x?†3¹?…]›?„=¦?„Æ?„ñ?}>x?}Lq?|ïj?{ß?yõ¼?xSå?x¯z?zE÷?{U?{az?{?zé?{x?zÔR?zl?z!ƒ?y¤ð?yn¾?y¿¶?yôþ?z •?z1—?z‹?yÎâ?yL?xô0?wb?uÉí?vk ?wúÕ?xcˆ?x -?w™B?w7­?vð‘?vÈd?v½Œ?vÂ+?vÄF?v·Ð?vž?v È?u §?ue¾?u2P?u Þ?tÃÂ?t¨h?tŽÁ?tg?s£?s¦Ì?sÂÈ?sÐÕ?t Î?tJG?tDV?sÆ?sË?qØÞ?püC?qdË?q¨o?q}?qK?qÍb?r?qþŒ?qñx?qá0?q¼‰?q†=?qJ#?q‰?p©%?p8–?oÅG?nõá?n;¥?n0â?nst?nr‰?mÌã?mEY?mb‰?m‹?m±Œ?m¹F?m‹?m‚?mƒ?m0à?lÑ€?læ)?lð¶?l9?kºb?km?jçµ?jú¦?kV?kà?jÚ;?jÏp?jº¥?jKÔ?iÊ?i˜?iš{?iŽã?iD¾?h¦à?h)9?h<µ?hnÂ?hKÿ?h*Ì?hs?gçÒ?>ïî?>?> ‚?>m?>i…?>Ò?>)r?=ù?>„?=²Ê?=;÷?<£¿?<¿?‡?,Â[?,êO?,Ç?-W¸?-H?-E³?-½?,Úá?-Vœ?-T?,â—?-lB?-ŽÇ?,‚û?+^K?*ï–?,*"?-q›?-fO?,Ú?,ÕÕ?-?- ?,¿È?,H?,0Ú?,‰b?,z¸?,KÁ?,QÆ?,T¢?,†¹?,Y¡?*ɵ?%Õx?"xÊ?&ÏÈ?*¹Ö?+?â?*ŸÙ?*ªB?*óP?*×.?*¤—?*†?*ˆj?*­}?*xH?*+’?*J?( l?$‹?$?'¯×?)p?)_1?)Îä?*"°?)¬›?(r?'¬ÿ?'Àø?'üË?(,&?(€ ?(v´?'ý^?'¿D?'ÎÊ?'Â]?'uå?'+?'Ó?'Ê…?'r‰?&Þk?&Ò-?&þð?'Ç?&ò·?&ö¢?&RŒ?$ï¶?$Ì?%N?%á}?&š?&‹?%öï?%Ý5?%Ïã?%–E?$®q?#u?#¤Ú?$Wª?$…:?$0g?$-å?$0×?#Ûï?#žƒ?#70?#_?#Eˆ?#K˜?"òb?!Ûs?Û‘?û?õç? þ=?!Ú‚?!ÄJ?!º¡?!ìˆ?!à?!Ÿè?!•v?!wç? àÊ? Cú?»*?Íù?<þ?Ã?5“?®?Bï?Ÿž?É:?د?)?EÎ?†&?W?S-?z>?Ó?2÷?ã?h.?%T?üm?ËJ?×$?ïú‘i>ñÜi>èó>Þˆ>ÐõŒ>¿ÿ¾>¦»N>”µ»>£ÝÇ>¾‡>Ћ>Ý,Á>çÅY>ðü>ø»=>ÿŸ??ûî?T€? -jã? C£? rÜ?"?½j?ÿM?Óá?h??–Û?×J?*%?©›?ú?ä?)?è? ?(è?\è?},?„¯?Îg?ô?ßg?è?ÎC?ˆ?z ??^ß?0^?q?Ç°??˜?÷R?ت?éÛ?΋?•½?YÒ? S?Ô€?Š?^?Ü?æ?+î?ïr?¯?¾ ?õ¾?ë ?¬y?ª'?Û†?šŒ?ë?¥ÿ?·?â?¾©?UH?Ýé?¿Ç?$å?$u?)*?o -?¬?Þ5?]c?W?°?Æ×?.S?æu?BF?ƒ^?¾Ä?ê?©‹?¨?Ÿ^?š@?‡‘?g?Š’?Tõ?^7?å?½è?;‰? -?}?lÔ?X•?,î?¹?F¦?û ?ü??–?Kï?þÒ?‡2?7´?5M?á?ç?_µ?`?? ?5ˆ?W[?q½?‘J?€R?VÁ?O£?dX?]9?>œ?E? ã½? Àš? Á? ¶ö? –‰? of? B? 3? é? ? Y? ÿ2? è? ÎÙ? ¼ ? ŸÑ? ƒx? €­? zÄ? aø? Kw? 7_? E? ñõ? Ö£? µ»? š€? ŠC? lA? I¿? 6Ø? )â? †? -šu? Ó1? -Â? -¤? -¹? -®—? -–ÿ? -yG? -eW? -J%? -0 ? - ? - ‚? - 9? -˜? ÷8? âª? ÄO? ˆ? P)? ;m? ?‘? &É? ? $€? $? ?àò?[?œê?²?ªH?™|?ƒe?g·?BÐ?*÷?”?ê?ïÐ?èø?ØØ?Ä´?±µ?v?‡’?mÿ?T²?;º?m?µe?ªÚ?»Ä?´d?šv?‚a?mÀ?^??Fv?Ó?¿¤?¶ç?âz?Èö??ˆ7?ˆ¢?{÷?z‰?oþ?WR?6v?,?‰?´?êu?Þ?Ý?Ò?©?‚l?yÏ?n?S4?1š?¤?Ô{?Ép?ÐQ?¾?x$?Aý?_Ë?ié?›?´?ŸD?}?ª=?þÁ?,Q?Z?3t?‹?Ù·?»Ê?‰?a½?fÑ?D?²G?œø?>w?k?C?ý>?ÿ;?³ö?bÀ?¿ƒ??ë#?Ð"?Å?âS?à1? ƒ?éØ?ç™?óñ?›X??ç?+?ö?¦ø>ÿµH?&©?«÷?’Ï?{u?^°?RV?{ñ?í>ÿM<>þ¯f>ýÞ»>ýZ>üw†>û†>üq>ýsÐ>ýÂ{>üÜy>ü?à>üeä>û•†>úU>ú5Ý>û¯e>üŸA>üìÛ>üC~>úsÙ>ú{>úŠ>út”>ú;>úw(>ú ’>ù<¬>ùJ=>ùÚÑ>ùÞ>ùYV>ù3Ý>ø¯­>÷¡=>öQê>õŠ>õG>õP >õßÒ>öq>öÔ¦>÷/¦>÷kb>÷Ý>ö¢/>öL>õþü>õÝÓ>õ§'>õ„Å>õO>õ,á>ôÎö>ôf»>ôsD>ôb>óWy>ó>óÖw>óªê>òý4>ñ³q>ñÚ>ò‹™>ò\š>ñáW>ñ&>ñ µ>ñtì>ñ‰×>ñgy>ñ*¡>ðÝu>ðƒ*>ðLÿ>ð -¶>ï—i>ïñ>ïhô>î¶ë>î A>î¿ì>ï/´>ï>ï8\>ïŽ>ï”u>ïe|>îóÇ>î•œ>î²@>îWB>í·–>íîn>îw>íÓ¸>íT«>í8Å>íJà>í >ì•Ó>ë¹ò>ëLh>ë´>ìÀ>ì>ìŽ>ëà>ëï>ëQ–>ë>êf>é¾R>éîP>éö@>êe>ê#ö>é؇>éX>èå>èˆ>è[¼>èû”>èî;>è–e>èV!>è*@>è N>è Ò>çí×>ç¹”>çpÃ>ç Ÿ>æÄ>æ·i>æ’‰>æ]>æô>å×Y>å„t>äz>ãg‰>äKû>äÍ>äʱ>äºÙ>äzj>ä7ù>ãâh>ãÉ>ã¶&>ã"Œ>â>áÔû>â Á>âWë>âXÈ>â(m>á×>á*å>àÌÂ>á)>à÷1>àŠg>à­w>à”Ô>àk>àk×>àNÒ>àAÒ>à%>ß÷&>ßÞñ>ßÄ`>ߢk>ßxÑ>ßQç>ß0Ä>ÞöÃ>Þ¹ >Þ‡Ž>Þ ž>Þ±‹>Þ‹H>Þa‘>Þ:”>Þ4R>Þ;”>Þ!›>ÝÅÏ>ݸ>Ýxn>Ý3¾>Ý-§>Ý(=>Ý$v>ÜÕî>Üz>Ü1Z>ÛÓ´>Ûý>Ü.H>ÛÆÞ>Û&>Úèž>ÚêÇ>ÛL>ÚÕ—>Ú§m>ÚCq>ÙáT>ÙbÃ>ØeŽ>Øhp>Ù5>Ø>×Îó>Ø…í>Ø>é>×ê>×Kº>×N¨>Ø7g>ØÚ+>ØÊ}>Ød.>Øp”>Ø¢ >Øn ->Ø^>Ø5‰>×@L>ÖÈa>Ö¥“>Ö÷ñ>Ö‹H>Ö04>Öò >×b>×>׫~>×\”>ÕÔÇ>ÔV]>Õód>×y>Ö(>Õøâ>ÖR£>Ö™V>Öû«>ÖǶ>ÖE²>Õ¬>Õ§>Õr#>Õu;>ÕR§>Ôë†>Ô“ü>ÔMA>ÓòÉ>Óf&>Ó¾û>Ô1£>Ô3˜>Ô6>Ó«y>ÓL.>Ó6Ú>ÒÖP>Ñëð>Ñb¨>Ððõ>ÐÝ>ÑÎß>Ò*º>ѳÄ>Ðëº>Ðß>ÑVŠ>Ñš¾>Ñ~é>Ðú$>Ð}_>жÎ>ÐÏŽ>о1>ЬÑ>ЂM>Ðq>Ðn1>ÐCÕ>Ð-0>Р>Ћ>ÏÈ„>φ}>ω)>Ï\”>Ï$>Ï>ÎÅ>ΰÏ>Î’W>Îo>ÎY>ÎP>ÍÂþ>Í´f>ͱ\>Í‚>ÍfK>ÍDï>Íœ>Í>Í *>Ìùô>Ìâ>ÌÆ >̧M>Ì‹Y>ÌiT>Ì4®>Ìÿ>ÌN>Ëê >Ëξ>˧ž>Ë{>ËE—>Êñ·>Ê‘Ž>Êz>ÊJ†>ÊTG>ÊyK>Êd¡>ÊA>ÊÇ>ÉûÖ>ÉÒ>É’«>Étþ>Éb>É-˜>ÉG>Éç>ÈãÉ>ÈÂY>È©µ>È ->È]h>Çð`>Çeô>Æâ0>ƺŒ>Æ~”>ÆAþ>ÆDÞ>ƺŸ>Ç !>Æé@>ÆÔ¹>Æ >Æwæ>Æya>Æ.o>Åݯ>Å÷ >Ŭ@>ÅF¹>ÅjÁ>ÅE›>Åd>Å:>Å#‡>Äã`>Ä’&>Äu>Ľ‚>Äœy>Äf->Ä`¼>Ä -f>ÂKç>Á‹g>Ãd>Ä t>Ä% ->Ä?Ë>Ä9F>Ãûü>ÃØK>óƒ>ÃÒ>Ã_õ>Ã.>Ë>Ãy>Ãü>ÂЦ>Â’5>Âb~>ÂjŠ>Âo®>Â+:>ÁöÒ> >Áí×>ÁŽó>ÁYž>ÁOÎ>ÁOÏ>ÁÞ>À‹!>À —>À®r>¾±†>¶:N>®°{>­ ¦>¶à_>¾ì°>¿ü>¿ÚÒ>¿\p>¾õâ>¾Ðn>¾ý›>¿>¾Íý>¾÷>¾*‚>¾–>¾ƒ>¾ô>¿r®>¿W‹>¾Í>¾„ç>¾-,>½£G>¼åÿ>»ÄV>»k†>»ù>¼GÞ>»ðý>¼¢Â>¼ë>¼¾Á>¼rµ>¼Î>»üÚ>»|f>»I>» È>ºRq>¹¶>¹l>¹AŒ>¹>Û>¹^ß>¹®l>¹°>¹¿W>¹ªŽ>¹J¤>·î­>¶ÅR>µÐ>µµÕ>µr¦>¶Ë>µ¡S>±ÿt>±R&>´Æè>µ—õ>¶ý>µËƒ>´õ—>´ùÞ>´]>²r>¯&;>©±¬>®S,>³pØ>±Í->³>µÖ3>µ½Ò>²íÃ>³r4>µW>´â¥>²Êµ>²V›>±ƒt>±.%>±ù9>±°D>²v´>°ˆS>²-¶>³ð>´ ÿ>´nÅ>³ò>³º^>³"[>²Ï>²æF>²Qƒ>²Îí>²­>³;Â>´!«>³æ>°òy>®Vê>¬‹š>¬‹Ä>¯§Ç>°£w>°h…>°Ú">±>²Ç>²hn>²„®>±¼œ>±ê%>°ê|>°.G>±B÷>²0¦>±ã>°¸e>°[t>¯Šl>­Cµ>¬Ùó>¯ƒ >°Â¸>¯?>¬äk>¯Ó>¯±>¬ü>®Pi>¯ªÙ>¯ ö>®»ƒ>¬åy>¬B>­o&>­kÆ>®´v>¯ÍI>®h3>­lÄ>­ñi>®K˜>®É>­"0>¬±>­hè>®¨—>®÷Í>®ü>¬ù7>¬Á%>¬z0>«çá>«²‘>«|&>«ëT>¬aë>¬>«•ü>«Þ>«Z>«>ª|]>ª5>©üÅ>©U{>¨¯ ->©/i>©.j>¨ÊI>¨=Ç>§·…>§¿p>§í>§„ú>§h>§Hæ>§+X>§$>¦ÐL>¦¤‹>¦rI>¦¯>¦ 8>¦Ò>¥ês>¥ÒL>¥¶R>¥ç>¥mâ>¥HP>¥ È>¤Ø‘>¤Ôç>¤½ ->¤“–>¤k€>¤I$>¤,F>¤“>£ê*>£À>£ ~>£}>£JŽ>£l>£ ˆ>¢ä·>¢Æg>¢‘T>¢v;>¢s>¢U;>¢3“>¢_>¢…>¡Þf>¡„>  Y>Ÿú>ŸÕ>Ÿà§> ©=> Â‘>Ÿ ¸>žª„> ‹>ŸK¡>œìž>ž/}>ŸÓQ>ŸÂ>Ÿ[&>ž´‚>Íï>œUY>œ4>i‡>œÑ^>›Ø°>œß>èÜ>X˜>œR>œF(>›7>š¨ó>œˆa>œÔù>›ý>›b‡>œ ¬>ší¯>˜3 >™êä>›'«>š'º>šY¯>šÒï>šÅœ>šb=>™ã=>™§I>™®ò>™©^>™»`>™½ >™—B>™‡#>™|>™Gÿ>™ä>˜Á>˜ Ê>—Ÿq>˜'>˜“L>˜ñy>˜ÆÓ>˜zò>˜Y–>˜i1>˜uÿ>˜B7>˜Cq>˜!¾>—ÒA>—JŠ>—†ö>—“ó>—•`>—»ù>—6[>–àö>–ì­>—x>—Ž¹>–è >•±/>–W¨>—¸t>—†‰>–ûÔ>–½_>–Ýå>—==>—* >–Ö">–Ú[>–Q3>•ð·>–6?>–«l>–j0>–y>–Q4>–9>–™>•V>”ãÊ>”ɼ>•G@>•Šb>•¢>•š¿>•">•w…>•$¥>”¿ó>•"ì>•¨É>–Nj>–ÛÓ>–©,>–É>•?€>“–ï>’æ¤>“A{>“c2>“…>”]ø>•2>•×Þ>–>•Û·>•®>•†f>•O>”@Œ>’u>‘ÎŒ>’`>“@Œ>“;>#ï>†*~>Ž¶g>“ñŸ>”|>”œ½>”T¨>“‹Å>’"–>H`>ŽUl>Œïx>Œ“¹>Û¦>z~>’eø>“Âà>”q`>•õ>•·W>•ðÅ>•R>”Eš>“#>’Gi>‘S>ˆ±>†2X>„ç8>‡…†>ˆj2>Šg>ŒO+>Ž&’>os>¯Ž>’…>’ØÒ>“>“V,>“oô>“+p>’ý>’„í>‘b >e>¾>ŒÞ*>‰€‰> 5>mÈ>vRü>} ú>Ö>…0>ˆ>Š¢š>Œ¦T>Ž†\>cÿ>‘Ïß>’½i>“ >“UÓ>“ï[>“»0>’êH>’8Ä>‘R>fp>zf>‹1k>ˆªí>‡ -Y>„‡°>€ñÈ>yH¡>pü>jgù>l06>t­á>}ª ->‚Õø>†û>ˆ¹}>ŠÇù>Œ’>Þl>ŽÚ+>‰ô>Tt>‘7>‘¦_>‘ݹ>‘T>‘—>‘н>‘ÙF>‘Pý>&ˆ>(ð>Ž@J>Œ„²>Šl>ˆEÕ>…ê¥>‚žÅ>~Àø>x{>mz{>XZ >MP>SkÊ>[Ïk>eì>pÒ>y Æ>ðã>‚Du>‚É>„˜D>ˆOí>Š}¬>‹´Ù>N®>ŽìÂ>s>fƒ>‘ŠR>’_>’±>’0P>’Ý°>“"W>’ >ï>‘!>‘,Æ>l>¬Å>Oò>Ž¾U>Sí>‹~s>‰¢÷>ˆ>N>†±>ƒ<¸>€ÎÀ>{p>rG>iš^>_OÇ>SL<>GZÎ>Fª}>Qãh>^i&>h°;>q >x Þ>~oÜ>‚Mé>„„{>†–Å>ˆQÇ>‰üj>‹Ã>:+>ŽŠ¾>—ç>>£”>‘>‘ë;>‘RW>‘>m>‘r)>‘âì>’qö>’H>‘˜ë>å>ˆ[>‘^>‘kÁ>‘g>Ø¿>øW>Ž÷/>Ž‰o>ŽG>¾½> ;>Œt¯>‹ø“>Š­Ý>ˆú>‡>…‡>>ƒ—î>”>}ü>v©k>p >h“³>_ó;>U']>HÏ'>;ŒÀ>5>=äp>Kœ2>Vý>`‘­>h >nìª>uß>yá>~>€³n>‚Œ>„1 >…n’>†i™>‡Y·>ˆF<>ˆõ•>‰•¥>Š5>Š¸™>‹&>‹jK>‰å>†ÊÐ>Š‰\>Œf×>Œ‡E>Œ–ë>Œ­é>‹Þn>‡Q>ˆbZ>Œqò>Œê>ŒØW>ŒÉ>Œ¸¥>Œ ¬>Œma>ŒV>‹ü>‹Þö>‹Ð²>‹§j>‹mÕ>‹+Ê>Šà>Š‹³>ŠM>‰*I>‰p>ˆ¶Ý>ˆ-U>‡—D>†’ô>…°ã>… Ý>„[¨>ƒT²>‚ÿ>€Ã>~]†>{'Ž>wjª>s s>mßö>hjó>bSÕ>[Û>RsY>H]Ú><@~>-÷v>(Z>>3œ×>@Ù¡>K^>TkK>[ìC>bõ>gœ>l²þ>p¿Ó>t ->wnc>z{È>|þc>~ƒû>ûÉ>€îË>Ÿv>‚¡}>ƒK˜>ƒ³°>â>s±=>x÷Z>„'œ>…Wë>…lY>…>…|Á>„^>€t>‚Ί>…Û¥>†E>„š>Ù>ƒ4°>ƒÕå>zõE>‚Î>…ÿ>…»ƒ>…¬À>…Çn>…¾ó>„u¿>~i½>ë>…&>…1Ø>…â>„Oî>„#>„e>„šã>„v>ƒÌ•>„C >„i.>„H*>„[>ƒýÆ>ƒÑö>ƒ—e>ƒy>ƒV¼>ƒ6>‚µè>‚¢Ü>‚ƒ*>‚Pé>‚ -¸>̶>‹”>.É>€Â`>m)>}"7>}%F>}Q>{w’>{UÀ>y)Í>y >x^Ò>v´µ>t‘B>rYä>p:>l¹¨>hRB>fÃ>cHÝ>^*Û>U¶¿>SÀ>L5¡>CÑ2>?ä`>7)q>+’ß>C>.ï>$ö»>1Yî>:%>A]¸>IòO>N'C>O¾˜>Xuò>]ù^>aì>cZ>e 8>gËà>e“>]& >a!½>cW>lÃ>r‡Ò>swo>tg:>u2‹>uÄì>vCW>v¨%>w¶>wOX>wx|>w§%>wÒÚ>w>w¤>x7£>wûÏ>w»Ñ>x1>xA>x.5>x5K>x?>wÙÝ>wiµ>w–¿>w©—>w6>vë>w}>w•>wpÇ>wH“>wn>vº>v¶t>v¯m>vB>vH>v'Ì>v#ñ>v€>uÖG>u°H>uŒ.>uaæ>u1u>u>tÞ>t >tr->t8^>tK>sÖ£>sFW>oç>p—>qÀ¡>mUÓ>pQ‘>r”­>reX>qáÌ>n.Ÿ>b0Œ>jží>pn{>jó>g/q>m‰i>oï²>ntú>n61>oà ->nÞ°>n')>nŠ7>ncñ>lò÷>k¬Ä>muJ>m·S>lù‹>lñ˜>m  >m¡>l¯>l`A>l­>jþ#>j¿¡>jÑÖ>j¦ü>j„<>j.£>iÓí>io½>i¯>h‚š>g>9>f‚¼>fß]>fg >e¾?>déU>du>c.è>bDO>awD>`U>^ï{>]¶ú>\I>ZºW>XàY>VÄO>T^z>Q±â>N°Ó>KFƒ>Gu4>C!>>2 >8´>2, >*§ ->!¤>/9> ©­> v>Ñ>#"“>+\K>25Â>8 Q>=Ì>Ad¸>E2q>HsŠ>K4B>M :>Oì†>R>SÍñ>UK•>V“>W£->X>Yln>Yð™>Z„Ø>[) >[qî>ZØç>UÁ°>Xº#>\rÏ>\î€>]7z>]y>]|>\ù>Tc¤>XR>]5Ñ>]&é>\±¿>VÊ;>W4S>\b5>]qw>]wè>]l\>]Uë>\à>Z`Ñ>[»>\’­>ZàÍ>R -”>V¶>\½>\ >\-ë>[ð2>ZÕ–>Zί>[8ö>ZiË>Xùz>YÒ>Z¹ë>ZO)>Yö®>X¶¡>YU>YºÅ>YÏ`>Zn>Yày>YÅ_>Y¢•>Yxá>YSc>Y.ý>YÅ>XÚÐ>X –>X õ>Wìv>Xœ>Wôˆ>Wã¼>W à>V•T>U;ó>Uº­>VŒE>V»->VnÈ>Vw)>VhÑ>VIÑ>V>Uèµ>U¿>U_ >UP˜>U:³>U­>Tú>TÌþ>T¬>Tls>TGÅ>TU>SÊÿ>Sh >S:>S1œ>S0š>RÖ…>Rå>RŠQ>R  >Ru,>R!Æ>Qªl>QˆÆ>Q¥Ý>Q˜ù>Qb^>PÂ,>Oúg>NÞP>P+ø>PHÝ>P -c>OÓ>Oñ}>O¨A>O -6>O=Õ>OZâ>Ol>N-Í>L0>K„–>L>í>Kã >L·¾>M:â>M±>MmÌ>M>M ú>M¬>LüS>L³ >Lmü>LS>KFO>Dï¿>EQ>JÚ1>Kc©>J+>Jº >Jô>JÃ>J]Ü>Iõ÷>IÃÂ>H$f>H£Û>IÆ£>I j>IbÄ>I©>H8¹>D:>Eö>H[†>H5>Fõ>F<‰>GVŸ>FãÉ>F¦†>F˜e>F‡G>F!ƒ>EêÊ>E¶>Eré>E6>Dÿ²>D«.>D[>D M>C©¼>CQ>BÝd>BtO>B‹>Ažt>A#}>@wœ>?R>=I‰>=ÎV>=¬X><Ò><:>:þ >9Ò/>8‚ª>7>5DM>3‰Ì>1ƒå>/!>,„ð>)">&+W>"XY>ò=>Ú‹>æE> È>³â=íÃì=ë(P>òô> -?>G>Ãß>š>»Ç>#P_>&eË>)$Ï>+~s>-qX>/5>0Öj>2&L>3U>4f>5I>6n>6¸>7Jå>7È«>8)Ý>7È!>7†z>70í>7Gù>5å>6¢ >9it>9¨¦>5Ìý>3ÓB>9¡>9Ÿ¬>9û/>:>:&>: -#>9ÿŒ>9ÑÅ>9.à>90E>9¶)>9•Š>9'!>9c7>9q˜>8ÕÆ>7Ñr>8ÇË>9É>8Öp>8|>8¨‰>84>8[¡>7I9>7›w>7õz>7ÛP>7äÏ>7ÈÆ>7¥v>7…›>7hÍ>7I¢>7+´>7Î>6èb>6¶\>65Ê>6XA>6`³>6(#>6[>5í§>5Ò)>5½Û>5Ž±>5M>53M>513>4Ù >4²q>4Ì(>4­ì>4…M>4A>42…>4!{>3þ>3Üþ>3¹Ý>3“c>3^|>3Ö>3 >3 2>2çQ>2Áœ>2s§>1öG>24Ç>26Ù>2>1êE>1¿>1£P>1†>1X>1„>0ëp>0ïó>0Ë®>0ŽT>0×>0a>07¹>/Ìæ>.³á>/^¥>/¹Ì>/™Z>/cÕ>/>/Ò>/>.æµ>.¿r>.ž«>.y >./W>-ʲ>-“Ä>-“þ>,Ÿì>,a7>-I¼>-ã>-*œ>-Y>,ëó>,Øç>,¦j>,BÆ>,PŠ>,L>,'±>+êÍ>+Ç>+÷>+E÷>+b¤>+Wä>+5×>+>*î!>*Êa>*o1>*HÝ>*fµ>*F±>*#¤>*ù>)ÞF>)ºè>)‹4>)/@>)˜>(W>%'î>"zJ>$A>&šl>(Mù>(XT>'ÉË>&ŒE>'g.>'µX>'´ì>'}ª>'d6>&ø.>&Ã2>&±\>&Ë–>&ÌS>&šD>%k‰>$œý>%Ì>%>$ö>%e>$×Ã>%;æ>$Zm>"øb>$žÝ>$ð>$Ö¤>$£Õ>$f >$^É>"Å>!Ú*>#©$>#ÜE>#Q8>#$´>#™?>#OÖ>"dÕ>"ë>"õ >"ëÙ>"ÝT>"¥œ>!Ýø>!á®>"D>>"j>!5n>Cï> r;>!˜ˆ>!I>!@u> åÀ>! ;>λ>r> Ÿ§> §`> }è> d›> E[> "˜>ø>ÃÎ>·•>cÈ>Ôç>¿>‹>‡>ûñ>Ä>®%>šw>d°>É>>¸M>²§>Ý ->¢ž>‘5>s>÷ý>Üm> -Ø>qÂ>XJ>ˆB>9>§">VM>—’>á$>†¨>‘>ã§>c«>¦ > -‰>æ“>Ë8>ƺ>ÂÞ>Zy>6v>¶»>u!> )>ÿ1>ÚÛ>¨¸>gä>ÙŠ>óU><>¥o>T>’¾>~B>‚þ>=¹>(J>­>þ×>Ôã>¼Þ>ñ>îî>2Ä>}> >Ýp>£¨>™¡>y>Z>19>áX>€9>(^>›`>c•>ˆ>¹Ö>f>‹×>| >\z>4Ø>>¹¾>ân>Hœ>KÇ>é>Ýã>¡C>[¼>–>,N>ô±> þâ>¼L>pº>'Ï>¸ê>%Û>o> {{> ›> ø¸> ?ò> {6> - {> ¤1>ˆ>>Gh>áN>½m=ü¡¹=üÎà=ü@½=÷ =ñg=ê2=áÙQ=×ÿ¦=ËLÎ=¸¦r=µ‚—=ÇÞ+=ÔêY=Þœ;=åÓ­=éá=ñ¸Ñ=÷?w=ûÕí=ÿ§Á>ä­>T>ûš> »>íZ>iÑ>0>Ú>R>Ì6> 6> ’»> Úä> -> -G“> -p> -?> -­¯> -Å«> -Âë> -„ð>»Ê> - Š> -ñL> -÷ì> -÷> -ðŸ> -å[> -áƒ> -Õ¤> -À8> -»\> -§> -¢> -“·> -#> -`ˆ> -P“> -N+> -:÷> -(¿> -D> ùÈ> ê > Ó¦> ºÁ> Ÿ@> „> x+> `Þ> 2> f> /> ‡>ê×>Ðg>©õ>–º>{G>hÌ>Ré>, >C>’3>L>Hl>Pñ>?>Z&>g~>0Ç>¯¨>ý%>÷>ß(>É>­˜>”ã>wÇ>Z¢>J©>08>\>úŠ>ÕQ>³Ø>G>kØ>MÞ>MU>@[>ð>ìÛ>ª¿>Æ¢>½B>¢³>{F>& >?>5ö>÷>ô>¿>Ç7>°•>‹¬>q«>bU>F >']>O>¯Â>PA>[1>s$>iË>bM>$ì>5>$¿> -E>ï„>ÓÒ>¦=û±b=ëâô=ûÿY=ÿ¿ý=ûß5=úNÔ=ýä=ú>5‡>>s¢>¼>1.>E>ó=ÿÐ=ÿ¶Ñ=ùö=ö¤‡=þ99=ýP =þ¨}=þ¶x=þ-¶=þ¹=þE=ýå=ü‚=úýÔ=ý Ê=ýW=ü¹ƒ=ü‚=üŽ=÷·é=ùÊK=û‡K=ú *=ø­=ù—=øÏî=øó}=ú“s=ú+;=øº)=÷5q=õ°c=÷¥*=ù)~=÷¸1=õˆV=ø@Î=ø—$=øE=ø =÷×=÷¨9=÷°d=÷v}=÷›=öç=ó™@=ñ” =òú%=õðÿ=ö}=õí{=õ»_=õ‡›=õSP=õ!\=ôî•=ô¶f=ô†=ôKä=ô!ý=óçP=ó­V=óŠ,=ó_!=ó*n=òõ¶=òÄç=òyF=òKç=ò'Ë=ñþ_=ñÊ=ñ—ü=ñ3Ã=ñ *=ðа=ðÏ}=ðŸ4=ðlì=ð5Í=ïž²=ïV<=ï™ã=ïw=ïGˆ=ïE=îÞ=î;N=î1·=îOx=î -?=íaˆ=í•=í‰/=í_==í/¿=ìþ½=쬔=ëÌß=ì0Ð=ëüd=ë‚=뛳=ëK„=é­Ù=ê†==êÅ=ê2R=é²ó=ê ”=é$ö=äSK=èo™=éE›=å%=ähÒ=èþ#=èû¨=èŽë=è`¿=è^¿=çm=åÄ+=å]¶=å=ã-ô=ÙJt=ä˜@=æä==ãš;=ßÿ=ãÕ=äW=åõ›=å×=婲=åux=äæº=äÙ>=äÖU=ä²=äa=äP=ä/Ô=ä =ãл=ã{o=ãBž=ã@£=ã/=âÝ =⢫=âoê=âN=â ,=áÞc=᧱=áŒ=Þ¢=ÖѾ=Ú'=ËÊâ=ÙŽ=àS=àC=à#¬=ßè©=ߧø=ßIj=ÝM=ÚÒÊ=Þ˜R=Þ|=Þã=Þ/b=Þ=Þ,R=Ýà¸=Ú÷³=Û…ã=Ým =ÝBJ=ܾ®=ÜÇ`=Ü“Œ=Ûé=Ü”=Û÷L=×lÞ=ØÇ»=Ûœš=Û -¡=Ôb¿=Öÿ‹=ÚâÏ=Ù¿@=ÖË4=Ùê4=Ú1à=Ú ä=ÙW˜=Õûm=Øe‚=ÙU2=Ù5Æ=Ù´=Ø`P=Ô‹A=ÖQÈ=×H=Ø =ÖØ#=Ð~ö=Îoß=ÕD*=×B=×n=Öò\=ÖƤ=Ö˜ê=Öm(=ÖA:=Öþ=Õè§=Õ»Y=Õ©=Õdi=Õ5,=Õ0=ÔÞ¦=Ô°Ç=Ôz=ÑÑÑ?‹*¯?‹ï?‹L8?Œ‡?…L?Žü?¥a?rÿ?Žç°?Ž/?ŒÙ³?Š“ ?‡ä|?…ÿ'?…¼Õ?‡"I?‰¤?ŒPV?Žj?Ž¢?Žn?úÿ? -1?‹ \?ˆ7à?…ÿ*?†%ú?ˆú?ŒÛ-?›ˆ??Ž6»?‹m?‰7Ï?ˆª`?‰¤k?ŠäÊ?‹3?Šˆï?‰½ø?‰X!?‰W„?‰ÕÊ?‹Ë?Œã??Žiâ?Žú¶?Ž·ë?ŽVÙ?Žq¸?*Ç?-?ÐÞ?k€?ŽÒÛ?Œ´ë?‹8?‹0?‹´¶?ŒEÓ?‹­u?‰{?†Š=?„ß+?…Ë‘?ˆBi?‰æh?‰¶?ˆîµ?‰Jî?Šåå?ŒA ?Œ ?{¹?~6$?”Ô?„ˆ?†•?‡pÜ?ˆ.?‡Â/?†ª·?…Òp?†?‡)ã?‡çè?‡j:?…ø;?„XŽ?‚â´?ܯ?Ú>?‚Ãl?ƒr[?ƒF)?ƒDÜ?„ÇÝ?‡—V?Š&$?‹Xð?‹K·?Š•X?‰«Ã?‰V?‰H7?ŠF?‹va?Œ[§?Œµ?Œ&?Š[:?‡­Y?…$f?ƒ˜ã?ƒ T?‚ÏÐ?‚R¥?¨)?˜¼?‚¢Í?ƒÿÜ?„C¬?ƒ7?‚bJ?ƒ:;?…~b?‡â…?‰iÿ?‰¸™?ˆø¬?‡ßä?‡:Ü?‡8î?‡gg?‡*í?†§?ƒàe?HO?é?Q?#Å?‚®p?‚ô¼?‚4,?NÜ?€²«?€qÒ?€w"?€w+?€NŽ?€·?~ûV?~/å?¶9?÷T?„/•?…‰Î?†Y?‡Jî?ˆƒ?‰˜ý?‰Â‘?ˆp ?†?ƒÂF?‚Ó?ƒ;?„Õ#?…iÇ?„º?ƒŽê?‚éÁ?ƒÁ?ƒâY?… -=?†X?‡S.?‡kÔ?†ºV?†•?†°?†dW?†œ–?‡f?‡¤?‡õº?‡ÕÊ?‡„™?‡&Ö?†Î'?†³m?†î?‡R?†¢Ø?…{I?„qÕ?„€ã?…®]?†ì‘?‡-j?†?ƒö?‰l?ËÝ?D¼?€}½?Ñ ?‚üA?ƒ¤?„¸?„¾?†#?‡¡m?ˆap?ˆ -?†ÊY?„þx?ƒh|?ƒà?„©?…õ?‡€>?ˆ\÷?ˆÛ,?‰$Õ?ˆØ9?‡±F?†V?…ß”?†ƒê?‡qï?ˆ?ˆZP?ˆŸ¦?ˆ¢ó?ˆ †?†ù ?†$ ?†"»?†¨±?†Îü?†6Ò?…r(?…0¢?…‡N?†+?†Å­?†÷·?†„?†¾?…¼†?…ŽÌ?…^è?…oÑ?†?†·Û?‡ ?‡;æ?‡Š‹?‡±^?†ðã?„ñ ?‚/7?¦ -?}÷P?¢Ò?Xâ?‚tÒ?‚í6?ƒ%¯?ƒ7-?ƒ y?ƒQ?„W?„¾?…0V?…†?…qí?„(l?Ôê?€ä?ò?aX?‚¦õ?‚‘¥?U;?€=?E?eÍ?€Ÿ|?‚Ho?„7?…6…?„Üø?ƒD?€&Y?yÖÇ?uO¿?vr?|#?uí?ƒ24?ƒMS?ƒ0i?ƒòÌ?…S‹?†=æ?…ùü?„–Ì?‚â?€PÎ?{ü©?xg?w?zu1?€q½?ƒh–?… D?…WW?„”?‚ðò?€®I?}45?{Õß?}ÍŽ?€ I?FÓ?{ý³?zf_?|ìU? ¿?ƒ¤Ä?…`?…Ùu?„î„?‚ÁÞ?÷;?{â?{›^?~:ã?€(§?€?·?€„é?ù?ƒÝ*?„¡?ƒÁ'?‚Uf?ç7?‚»a?ƒ¦?ƒž`?‚®Ù?FÅ?R³?|èŸ?}lí?€¶¢?ƒO%?…ù?…ÀS?…ª>?…`Z?„ùÆ?„"¢?‚ª?Ð?€…'?3Õ?‚Uc?‚¿¹?‚©?€¸]?…•?†ç?€Ð‘?‚t?ƒáÑ?„‰ø?„g^?ƒÇ¶?ƒ ?‚‹ô?‚f?ƒ Õ?ƒ¸”?„DÄ?„lÃ?ƒìÝ?‚¼9?N«?€QO?€19?€ß?Óõ?‚zN?‚·å?‚át?ƒI)?ƒòµ?„¢¯?…o?„ûí?„'Q?‚°)?mI?ZN?‚Z´?ƒbÈ?ƒÒ¾?ƒÉ€?ƒr2?‚²K?Y?~øK?{Š ?yø%?z7S?zõH?{á„?}À©?€E‹?»?‚ú?ƒÒŽ?„)M?„ 6?ƒŒ3?‚²ß?Ã$?9ë?M9?ŸŒ?£®?6?€­`?€E?|¾?}w”?zéÕ?y¥‰?{)â?~º¼?€æ^?A?€«?€'R?€`’?€ùÆ?OÚ?gy?'?dq?€Î›?s#?|85?xÃ?tO?r?™?rL:?t…‰?x®?}9?€ô?€…è?€ ä?}X”?yŒ_?w?x É?{Âi?€å?]-?€õN?}‚½?wòr?tA8?sºÂ?uf?v®&?uñ?qåÊ?l_?eXå?a-õ?bà¤?j…E?tkp?{›ß?~?³?~³?­ß?€šÕ?€—²?~0[?yí«?w¦È?xYß?zx²?|!?{Äm?xê|?u+?s¦—?r»0?qx´?q>?tdŠ?zB?“? í? ®?Éd?{nÔ?wO[?u°!?v!?tçJ?poå?j„å?e­T?cÈü?g¯ ?qpä?{Z/? E?}óF?yÊ?vtZ?v+0?yƒ¡?}ç>?Êö?0²??€¾¸?ƒ/?… š?†)ü?„cÐ?‚Oï?‚ô?ƒQF?„P ?ƒør?ƒc?ƒK?‚†X?€ãy?€z$?‚[?„¬|?…í?ƒ,?€Cö?{¹u?z,Ñ?{d\?|§½?}ë?}Û ?~“§?}Ø÷?|Ê?|…æ? W?„q ?„H?{ý§?kÌ?a°¬?d‡H?k!÷?j¢å?ce‡?^Jx?_>?a+x?a” ?aON?aÍŒ?cl`?f?i1è?lã6?qAä?tÝ|?tã?n9Y?i??h#z?cùï?U½?BÆW?7=y?7Œ÷??–?I»?T½_?aöÁ?m04?qfó?nÕ¨?kE¼?kJç?n†?r‘˜?uù“?wîÄ?x ?v0?qÞP?jî£?a„’?X-~?Rß?Rø´?Vo¼?[?aB?dn?a8Ð?XÏË?Pø‹?N9U?OÓ|?Qz?R§ë?V¯Å?_Lj?gõ`?ièy?b”ÿ?VÙÃ?O…Í?PRþ?Ue?Y»›?^Ÿ¨?bé?eÙt?j¤?sI—?|Y=?€4m?~Tç?w¶?i÷ ?YH?KåÆ?Hâã?N(6?UšÌ?\\?ba­?ÜQ ?Εt?Â2¦?¼…Ð?ºhi?¹( ?¹ -W?¸Ò‰?´ìÞ?«a'?žÄ??ƒË?l¨O?T‘?N1Ú?bNS?ƒçŒ?—yÞ?¨ö??¹QE?Æð?Í!{?ÌÝ"?ÉÿÑ?Ë?Ô½;?äáÉ?ô]E?ý~M?ü·G?ðµÝ?Þí?ÒsÍ?Ñwý?Ú2:?çÐÛ?óV#?öÔ?ï ›?åßz?ä…C?ê¸?ëÜF?àÈ?ÏÚ?Åæ9?ÁÖ/?¾ãW?»Ã¯?¸A?³ -?ª ›?œh ?‹ÎQ?wGü?\ù?MU?SªÁ?lAn?„¢ ?æ$?›–§?§«Ñ?·hó?È9|?ÔÊ•?Û>?ÝU|?ß«ö?æʺ?ï¥~?ò-#?î×??ð Í?ú9@o @¸•@\4@Lä@¨p@;@Î@k@¾Ë@®~@ 9¹@b:@«@šÎ@ð¼@û @¼J@ˆ@€z@Z"@˜í@Gü@Öm?ø?òÕ÷?ÿ ?@Nn@ ¦»@)[?ôùé?ê©?î¶D?õ’Ý?ðíö?ã<•?ÔÇs?ƨ?µ’q?¢¼?/O?|ÇR?c´_?_¯ç?vˆ‰?Žšƒ?¡ýJ?±b?»ÎK?Äž?Ë¿À?ÓPN?ØÌV?ÛÒ‹?àÂg?ì}½?üe<@Ý@@…3@ w?þ^U?öÈR?òôõ?ûVU@»@Í@²<@žë@”@Ù@.À@Ú@üº@ u-@ @ -Zö@ L@K“@ˆã@¯Í@"O®@(DF@)Œx@& @"Â@›ä@-8@¼W@ ƒP@?ä6?¿mD?¨:?µJ2?ßä¡@†@ƒ@ë5@¼´@"An@â@^@R“@ 2Œ@ 5ª@¸Í@h5@l@;@ -‰~@ \š@ ¸ô@ B@ c @ •m@¡Þ@ -e@&l@ˆ@‚Í@ -\?@ vv@p?óÎÊ?çò?ß÷?Õ½?Ä™°?¬!.?Ž?b—¿??ü ?A`"?baó?‰A? G?³!Z?Ãú4?Ó$S?Þëù?é¹?÷+]@êØ@7@€„@d}@¢C@ãÃ@ R@cŠ@`é@'í@g8@ú–@ý @;ã@» @ ,@9d@,9@vž@xÆ@ƒÌ@)œ@¡¼@%T×@&˜5@%B…@#O#@s@˜À@¯~@~9@ Û¦@(Ô@,~r@-nr@,‡1@*È -@)ì@* [@*p<@*ÍŠ@*êü@,Ú±@2R8@7=ù@6‚,@17„@+ÈË@'Ä\@%¾¸@(ù@1,Î@6ùÓ@5A‡@-B3@!¤·@ì»@m’@ÿ„@÷@$—@*ÜV@0s@4o×@5½c@3³ò@.Ñ@*¢‘@*:@*7ý@%9@¹@-!@£ý@+?ü@0#ê@.ö@-6@*ý¼@&«Ò@!E—@n6@]ú@ #[@" -@"ŽÎ@$Ê®@(µÖ@)ŒŸ@#ûÄ@ôv@la@…@ s`@É+@£.@dK@ ù¾@!x@Yc@í¬@ס@iB@Í@ }Æ?þÌ9?ð,?öÐn@U@S@‹@‚*@~@ ¾@°*@¶¼@„@ ­@ ³|@ º@ -Ú‡@é@øŸ@ù]?û2,?î»?ÞÒÀ?Ï[C?¿ø?¬jD?–x\?3?o±ù?Ž\?˜M?°$)?Ãý?Ïä5?Øþß?ß}=?ä"9?éÿ¿?ó”?ýi–@š"@&è@ ‰"@]—@ Þ@ƒâ@ÝP@2î@Ñy@÷–@z˜@ -ªó@|@öÑ@ Dµ@mÀ@¯ý@®@]á@ûk@gó@¶¶@¸@Kž@zþ@R@ NŒ@&0@*c@'Z«@Öó@…Ó@ Ë8@º@–×@…B@ ¢s@Ž.@I¿@<å@'$@Æœ@Ri@d@¬Ë@ô@n€@AX@Gq@$¡@Е@—…@ä@#e@$jl@"¾@Òè@.‘@!>ú@ {0@eÊ@ BÐ@ûf@&y@ -!@X@P@ 8@B¯@ -e@Â@N@å¾@à'@\r@S@(@"ô@ ¶!@EH@Ž‹@FM@qê@b@!\Å@)!@¤‹@+Ë@ -vU@qÌ@ *ÿ@á@¡v@ †r@ Dœ@ ­†@Ï@i²@;@@ò@Ø@N@"h@#Är@$†@ò@Àî@ }@Ê@µ–@YÚ@CA@fÝ@Ë @®ˆ@¼½@ cä@ ”@ÚR@Uš@°@²Ú@!BÈ@ÚÄ@™@ ã@ -^@ õä@   @C@ q£@ Ñ@öã@AZ@es@Ïz@{’@s½@ë@ Îc@Bå@T“@*Á@ C@’t@œ@£Q@âS@l@¢@ @e@ -oK@ F¾@  -@ã¥@Úã@ñx@<3@ç%@G›@ë`@ .@ ª@è¨@b«@ - @ -@÷¬@õ»@Z]@‡a@W,@àú@ú -@úp@ä@‘±@Œè@ߧ@ »¥@Ý@ -Š<@2"@&@ËÐ?÷µ??ð)-?ðÑó?ó`^?øÅ?ÿkb@ü@Ô?þîã?ø˜Ê?ùU*@¤@ Iº@ £ƒ@­ö?úJ=?÷T“@â@O@m©@LP@IF@ùÞ@<Ô@w¢?úBr?èñ ?ܤ?ÞÚ?æX5?è>?á¾D?Ù”?Ó?Ž?ÌÆ?Å?¼@?®^?šÓz?† -½?fЙ?LÌ?KÇú?i[”?ˆ^?˜®d?¨!ó?¶Û¤?Âó¹?Ì„5?ÒkO?ÐÓÇ?ÉOY?Ǹ ?Ó¿¨?åU?ò}‚?øáš?ø?ò>8?ïð?ó„û?û(õ@µ2@ à@}H@Û@·@{?ü…­?úI§?ÿÚ@-@'Š@6b?þz-?÷ÅF?ÿ¢ð@D±@ ÎÊ@ &y@ -îI@nB@Ò?ï¸P?â&?ä\Ó?ðõ?ü? @>§@›Q@B8@@y@ºr@×®?üø?ù§A@Ì@6@ I@?ù‚D?úç@5@ôH@F@@bÛ@‘9@Ý0@?ã|Ê?âs¯?àŽ˜?á]?âùn?ã{(?âAL?â$?å@¨?êVs?î„é?îB ?ê9ç?ææ#?å».?å™~?ä`T?á~O?ÞC2?Ùû¬?×Ùd?Üše?å#?ë†?ë ,?çû0?äö?ãrÏ?ßI?Ú/?Ü–‘?ãn?åP½?á V?Ýo?ÝW†?ß~?à¾Þ?âI«?ãð8?ä¾ê?ä´‹?ãoi?áz~?ÝŒ?Ö§ ?Ñ+ ?ÑÇ¥?Ø?ÄwH?Æ;0?ÉžC?Ì{†?Í’c?Íi8?ÍÄ?Ìþv?Ëíá?È…?¿ Š?·œø?¸œ®?¿“E?ÃXÜ?Á¨š?¾¶å?½ªB?½TC?½è?¾H?½[‘?º±‹?¹Ù?·v ?´¦?³XC?³’…?²a?± -¦?°U?­Ý†?§µÇ?¡Q?žâa?ŸbP?@¦?—=-?Ž A?ƒoò?wÜ‚?nµ?^ºŽ?AÇ?"¯é?C}?*þ|?Hè?b™¥?x›?…ãu? Å?¹B?·C?Œ™B?‘s?˜ªz?œÔ’?ž, ? øy?¦ä?­`ü?°Þ?­aB?¨[C?¥8Ý?¦Uò?©V±?«´?¬4H?©v*?¦Š?©^,?³?»¾?¿ ?À“?¾s?¹ƒÛ?³Ê†?³¹}?¶žØ?¶˜¾?·¸z?¼½É?À?¿xä?¹cÔ?±O?®Êð?³»ð?¹î?¾&?¿Š=?º°u?¯õ?¦=]?¢±‚?¥-]?¨‚:?¨S?¬??¶#?½û?À 8?ÀêJ?À€¦?½·r?µèÑ?­iæ?­¤€?±¦ç?° f?¬5¯?®°¯?·}²?¾O2?À,C?¿ ?»ÉX?¹–À?»a?½‹?½Pš?¼@l?¹µ¶?·í›?¸þö?¸+˜?°?«›?³R?½\b?À‰‰?À$$?¿o>?¼þš?¸ê×?¶J?¶0¨?µäW?µ$£?¶?¸­ï?»Uý?½zÀ?½d*?º¹?¶¸–?²z,?­H ?¤¢J?›}v?š+¨?¢ B?­k?µfµ?¶ƒ ?³¥‚?± ?°NÔ?°1J?±ÜN?µ>3?¶šz?´»ò?° 2?ª¸7?§¸n?¨å•?«*N?§Õð?¡ÎŠ?£¡Ô?¬Ac?±·?®)?¨¦?¤g?¤¶C?¦Ñ?¥¸£?ž1B?› ð?£7?ªÄ ?¬"}?®c9?²VØ?²yN?­›?ªk¨?­·?²~‹?´Öç?µ9\?²‡¤?«’¿?¦½?¨Ÿ€?ªñ?¦P¸? Jm?ŸiÍ?§!m?¯r??³“:?²Þã?¬Ýš?¦Se?¤•Û?¦_ä?©Õ?®±?¯w…?­Ä×?­ÆÜ?°£Œ?³?×?´Fä?´p‚?³R_?®Ý!?©`3?¨—?¨‘æ?¨Þw?ª¶³?ªñç?§®™?¥²O?¤éº?¥?¦ú?¥Ó?œ¦?–æ?™Õª?Ÿ ?¡Î?¥Ö?¨žy?§[0?§‡¿?©¶Ÿ?«j?¬›/?­ío?®@?«Ã:?¤„è?œ3™?—t`?™y³?¡h?¨Ž¹?«4^?ª¶ù?¨]Æ?¤õD?¢ÿ¤?¢¹.?¤Ì…?©{?«å›?ª ñ?¨.i?©ôÑ?¬¢?«f$?©_?¥à?¡ ò?œp½?›<é?Eò?Ÿ 7?žYÈ?¤½?Ÿ T?Ÿ3 ?Ûi?Ÿ›j?¡Û÷?ž¬å?š=R?˜ÎJ?›?œUÊ?šé©?ÅÆ? 8?!Ò?šÂ²?œûF? „?¡…?  ó?œy¢?™?›zy? $G?£–)?¤Ž]?£2?Ÿ‘³?ž¦Ñ? ?œv½?’EX?‡~v?…=?Œ‰ß?‘Z?‘Y?–á¸? ¡>?¤{‘?¤f_?¤Íœ?¤¥?£?Ψ?”Ã?­©?•B©?šU)?šcC?š3r?™—?“ê ?‘Né?”R?“fú?ˆÙ?ÙF?”zÅ?˜n¬?™È³?™b|?—û?‘¶ƒ?ŽtÚ?óì?“Þ›?—™Í?œhÜ?Ÿ }?Ÿ?›”{?”G2?‘»?”¾a?›/¹?Ÿ©ø?¡X?¡7ê?žz“?–C‚?‰k­?„µo?ZŽ?–]‘?˜öì?”šd?Žú?Œ^È?ö…?”íe?™¿Ú?¶ð?ùö?šÄž?˜± ?šê4?œô!?›™›?™g:?—R¯?–f?—ÆÁ?™d²?—®ú?•Òk?—Î&?›PÜ?ñ?œ3m?˜ÁË?’“F?‹b§?†×v?‡ -ö?Š\„?‰í9?…ç?‡Ð¶?Œ<?‹ò?†þ?…¿x?S‘?”x?“n·?ÇÜ?Žæ?Œ. ?Œtè?“„¿?š&?›ŸA?›J?šä ?™Ë?˜ C?—D?„œ¨?„+R?‚#Ñ? ‘?}ç×?€4÷?‚;?ƒÙj?„¶?„²„?ƒ£é?¯ñ?€Ä?ÏÕ?‚‡#?‚G³?¡Î?€ká?}­ -?||Ë?|i±?|Š&?|2ø?z÷?zsŸ?z!”?x?zò›?|ª4?}c?æõ???âÀ?Àz?~¢?€â?wt?o â?p÷ø?w{v?z­4?yu?ww?y?|ɉ?{Ìm?x‹ù?wYÓ?t¾?ræœ?w¥•?~uñ?€Ô?€º)?€¦H?€vk?€^Ç?}ä>?tUï?kë.?p$Û?wÚ¹?zk ?{SQ?{Rj?v-Ì?oúC?r Ñ?wƒ?{¼?}¤®?~Pß?|‹“?yu?w“‚?tõ%?qƒ“?rÃW?u+ž?t°>?tõ¹?v®u?xtü?yä¢?yœä?w4Z?uÙ±?vªé?u#?p>î?n¿?nr?jRc?k -]?mIª?hËX?h·°?p Ä?t?t#i?t”®?uÝò?wy#?x8¨?vó?t›õ?t?s¼ü?r‡?p¤,?kî}?i݈?l.ö?k¹ª?htç?h?l>î?o¿?p¬?oâß?o¢—?qØ?q¿ ?pï[?o?m;$?mÿ§?mãE?iæ?f\M?c=?acé?c{@?g/¿?jf?kKñ?l L?læ÷?mªÜ?ok¨?pNø?pRú?p,?oŠ?nªg?n#w?m˜ê?l»?ku?la?n¨7?oLB?näx?n‹…?nD?m.È?l¼?m]Ÿ?m~?kÆ?i^"?ix×?iµ?eßD?aPm?b ?f¼Ÿ?iô¡?j¤*?höô?eG`?a[ò?b?g›:?jõ?k?iëý?hÓ]?gˆq?f¸?fQa?f¤&?h#?hiì?f±?b¥vÔ?9K^?6qÐ?:s(??”Õ?@gñ?=z‚?;ƒƒ?;Úg?=Jà?=o0?:çP?:N?<§?>ì??ä1?>k?<3?<©b?=uÕ?:ê?8I|?9X‰?;Ý?=^ó?>»V??-ô?>Êò?=Á‚?<õ?=DÎ?:¹Y?6„;?8ìt?<¡º?=¾d?>pÎ?=³š?<+|?<†?=©É?=çí?>5Ê?>Mû?=Äœ?=Šç?<´Ú?:Æ>?9š?8Î/?9à?#¨¤?'+­?*ס?+ú?(­T?%<~?%Ð^?&¹?$÷ï?&Œx?%Ý.?#&?"Ôƒ?"šÙ?!W1?$ø?'’»?(“{?(Ø8?({µ?%¿Þ?!©™? |?#Õ>?'ì?&ŸÒ?$xŸ?$Þ±?&£?&I?&ž?&e?&`?&?%½%?%ö0?$õg?Á?žR?©?#™ˆ?#^? ÇÓ?!¶É?$jÎ?$¥?#hu?"Ü_?#k®?#ˆ?#†?"„Õ?"HÛ?"SN?!ÎW?±L?³?!J?"±ó?"ã£?" à?gd?w ?Í?R?h?[?? 9·? [\? *ó? ~? ²?ø¤? V? ã? ?‚W?ôC?Â"?ó‘?øæ?;C?¥×?²L?ßÉ?Vö?(«?2?ý$?M?Ðî?—?‰?­?¢¶?·N?D? 0€? sb? -¬ƒ?}ß?+®?¥>ù}d>ïEà>á¦Õ>Í}è>«Ä>‘}Ò>¥Jÿ>ÉŸÉ>à#>ìG:>öº?Dy?‚]?±»?sE? l¨? o?s%?ŽŽ?wY?ð?¼?9×?¥Œ?wM?†ƒ? -?up?}Ü?T?è?• ?Ù?ã?I?;û?C-?ON?¿W?Ûì?ýÎ?¤V? Ú?[?la?2?a%?©Ç?AB?°?Çm?[?¡?èO?¸­?«?Æ?Ê?¯¶?AÑ?×5?2A? >?{e?P¬?áÑ?]…??TQ?X6?4 ?ä?ûÆ?A ?(‚?‚‹?ì]?«ú?Ù0? k?ºj?QL?%ñ?v?³6?ü?¾?O ?U6?Ú?ç¢?w?þS?õv?öµ? ?åJ?kF?O©?³›?ʦ?ôs?qK?ª“?$?11?dá?†/?¤ë?Ê?×/?6^? õÿ? 9‚? û¹? .¬? Y=? ? ×ä? ËT? y'? –Ÿ? å”? ª+? ø’? B2? ö>? é? )? -g? Ù›? ï¥? Ñö? ½Ÿ? ÎH? ‡? ;ö? [Î? ì? v5? -Ò‰? Ñ#? -º? -§Á? -ºÙ? -¥b? -‚? -CX? -•? ÅA? ‡Œ? „õ? ‹„? †? w.? ^ü? BC? ö?ÛÒ?›ç?}ž?|ù?_î?B?K?DØ?*®?ù?î†?·?µ?¶Ê?ª ?ª·?Ÿ¶?„“?b?Iï?Dz?0¦?»??ú;?æW?»¨?žÄ? e?Ÿk?”Ç?x®?M?5¨?@ -?7z?0’?P?ü3??æl?ú?#î?ô•?|N? E?y9?>L?×ï?â‹?Çh?^û?:?õr?2V?Âr?;(?Ô>þqø>üò >ýÇ×?V?³í>ÿÎ~>þý>þÉÝ>ü%ò>ü¦Ã? ö>ÿE_>ü-ü>úõ¼>ý“@>ÿƒ9>ÿUR>ÿXð>ÿxi>ýñ>ü1J>üx>ü >þ°>ÿ¢¦>ÿxÀ>ÿ³>ÿŠ®>þª%>þÒ >þV.>üBÛ>û]É>üK >ý•Ë>ý+9>ü;(>ûà >ûæ>úæ>úL>ü)N>ý=k>ý}ë>ý¦V>ü¡½>ûåM>ü´b>üÚ4>úu>ùM>ú©>ú¡×>ùê­>øØ!>ùË¡>úÛ‹>ú‹Ø>úh˜>ú£>ú±>û>úÏã>ú(`>ùe…>øÅL>÷êQ>ö§>õÓ©>õá—>ö@O>ö¸±>ö_/>õ’>ö>G>ø<_>øH®>÷²>ö›>õøÏ>öÓ>÷%´>÷xr>÷©>öÈŠ>ön–>ö(Œ>öZ>ö(ý>õŒ£>õë±>ö^¦>öTµ>õÃ>ô™¨>ôìs>õÁ¦>õ°¶>õU×>ô£ä>ô{A>ôìÃ>õ'›>õ,µ>õ£>ô×`>ô‹>ô?9>ôr>ó©»>ó‘8>óSó>ò€°>ñà¢>ò<À>ñ²V>ðmˆ>ﺤ>ïwš>ï6Ã>ï>>îOQ>îtC>î%>í“Ù>íÕ>î -/>íÇD>íI‘>í,í>íH/>í)˜>ìÂj>ëõ¬>ëŽ >ëê,>ì==>ì&y>ì–>ëÜ¢>ëŽ3>ë>y>ë‡>êls>éÅj>éü¢>êß>ê8Æ>êS>éò%>é^B>èæË>è¬>èU­>èó²>èå€>èƒ>è(–>çÝ©>ç± >ç·¤>ç§:>ç|·>ç9Â>æßv>æ¢l>æ˜6>æqÁ>æ?H>æY>ååü>å€>ä^I>ã@>ä8¥>äæ×>äýß>äà`>ä{$>äÛ>ã²>ã‡p>ãfð>âÄ…>á³1>á†q>áÇ>â>â1Ò>âÆ>á«[>àôA>àƒ>àÄ–>àu«>ß÷¼>à>ßðé>ßÏX>ßî>à>à3ï>à@¨>à4È>à6>à%˜>à%>ßÎõ>ßœ‰>ßpù>ß0>ÞÖ4>Þtv>Þš>ÞÛ0>Þ·ô>ÞiC>ÞPg>Þ[O>Þnú>Þ/>Ý· >ÝŠP>Ý€>Ü£ç>Ý>Ê>Þ@>Þ->ÝI>Üi/>ÚlB>Ù->Ù>Úø`>ÚÖ¦>Ùd>Û!1>Üà>Üj§>ÚÞ_>Ûôè>Û\‘>ØA>ÕÞO>Ò£ã>Óæ>>×Ç…>Ö>¥>ÕqÓ>Øž>×·Ê>Ò¼K>ÎCC>Òy>ؽb>ÜxŽ>Û÷O>Ú&Ï>ÜŸ>ÝR>Üým>Û§À>פŽ>Óú‡>ÑV‚>ΙŒ>ÐéÈ>ÒüM>Ö~¿>ÛB>ÙÞ>Øá?>Û{>Ûùû>ÖÞ>Ïës>Ó>Ó½$>ѱ©>Ñe>ÒÀÀ>Óu¤>ÓåŸ>Õtx>ÕzÔ>Õ —>Ö$J>Ö}€>Öx†>Ô”í>Ô…í>Ó­á>ÐPM>Íé”>Êqï>Ì P>Í4Ý>Í|->Θ—>ϼs>ÏèA>О>ϧG>Ìœ>Íue>ÍeÜ>Ìã>ΕÔ>Ïb)>ÎnÁ>˽>Ì›>Î2>Îì->ÎZœ>̯°>Ìö>ÌB°>Ìk&>Ëîø>ËV%>Ë0“>Ë^¼>Ëg ->Ë5X>Ëô>Ë >Ë^>ʪy>Ê=#>ÊU>ÊN>Êw>Êé ->Ë"ú>Ë>>Ë>Êòã>Êõ4>ÊÎè>Ê•Š>Ê«i>ÊËò>ʹu>ÊžÊ>ÊY©>Ê>ɽj>Ɇ>>Ébä>ÉOÛ>É6š>ɦ>È¿¡>ȈX>ÈLñ>È!R>È >ÇÖk>Ç¢{>Ç[²>Çù>ƾ8>ÆVd>ÅÑ”>Åvä>Äûµ>ÄÏ>ÄÖ™>Ä­Õ>Äz£>ÄG>ÄS>Ãá>Ãœå>Ãqm>Ã@c>ÂìP>ÂÁ3>¨w>ÂyT>ÂIP>Â&Ä>Â^>ÁÈî>Á_p>Àï^>ÀÚ>Àƒ0>ÀeQ>ÀD >ÀW¢>ÀÎø>ÁH>Àú>Àë¾>À±<>ÀƒÜ>À…è>À9>¿ä >¿ûs>¿Æd>¿só>¿”ï>¿dé>¿>¿$8>¿4²>¾ï¨>¾—q>¾– ->¾ÏH>¾»Ð>¾Þ>¾ŽW>¾B‹>¼‘[>»ÇS>½q>½ôA>½ÁI>½j>¼S>¼m0>¼pÌ>¼!Ð>¼-8>¼~å>¼NÞ>¼{:>¼â‹>½2>½5>¼,>ºÐô>º>¹½>¹&^>º»ö>¼˜D>½ P>»)z>¹ ž>ºså>»ŽO>º¬È>¸ÎÂ>·ð\>·X>´&>­'¢>§cè>¦G£>«ö[>®áN>­ÛË>°d>>³†R>´Ã>´aÍ>³§1>´Fð>µÑw>¶Á>²é¾>¯„Å>°À|>¶‰7>»P>¸¼>·T>¹&>·Yé>´ß‰>·G¤>ºAÄ>»Ká>¼IS>½4ì>½\ï>»§1>¸¢è>¹.>¸šI>²¨¾>´ 3>¶%>¶àD>¹J×>¸¸¥>»Fh>¼I>¼÷Œ>½:ê>¹>¸»ø>º_)>·36>¶½Z>µ³>³s‡>²ÔA>­j!>§‰­>¨²=>°eÿ>¶ ì>¸¢v>´Jì>³ž>¸[û>µaU>²×>²á>°æ+>¯~>²6ƒ>¶Q7>³Nä>«õV>­$A>±†Ú>±7^>°¡>¯xÁ>°x^>±Ð >¯ÝØ>«'’>©ñ<>«ß?>«ùH>¬ß_>¬9>¨úZ>¨ þ>¨º>¦Aô>£‡~>ž‰ª>ž‹>œI>—ý)>›e>Tý>œì>šY>œ¾(>¡Þ©>¤óù>¥n>¦ø>§Ç;>¨£¸>©¾”>ª&>§A—>§æ7>¨ÁC>¨Ã2>©üú>©âÝ>ª¡æ>«Š©>«'Á>ªçÙ>¬Fú>­õ²>¯…ú>¯9ß>­2>ªjX>¨Í>¥Ø>¥T>¥dÞ>¨ >¬Wí>¬à2>¬r>«Œ¹>¨Ai>¤,–>¥«®>©¾>«X’>©ÒT>©R>©ÜÙ>¨Ÿ>©›ë>¨õ4>©2Ù>«G>©¢>¦Ù;>¨Ùº>«:>ªh!>¨M·>¥þ”>¥7d>¦Ts>§=l>ª¾×>«›4>¨ô>§Nš>¥ˆP>£+³>£B´>£àˆ>¥Ÿf>§Uu>§dÌ>¨^>©À>¨W>§õŸ>§C¥>¦ Ý>¦Š>¦\É>¦¤Ï>¥×ö>¤pF>¤Œ >¥µ4>¥¸æ>¥3i>¥:>¤ò?>¤Ñ³>¤È>¤º >¤¤‰>¤6>¤pÖ>¤(j>¤'Ò>¤2>¤È>¤>¤q>£äá>£È>£©!>£xB>£NO>£P3>£?V>£ Ä>£>¢éÄ>¢Ì5>¢¨>¢ ->¢X>¢@O>¢.>¢¥>¡ïÔ>¡åõ>¡Àß>¡¡Y>¡f>¡7>¡'P>¡{> ìë> Ó"> ³²> ‰ˆ> -Ú>ž¶;>¼Ç>ž{>žƒ~>ŸM">Ÿi:>Ìl>^÷>žÊÚ>žÁ>›£Ë>œæ¤>ž­>žè>ž=2>©ã>œÃ6>›@–>šð>œ] >›Û>› F>œ5Î>e¦>œï>›öô>›û>šÁÉ>šjþ>œM1>œ¤9>›ðf>›‰>œYL>›E>˜Š >š¦ð>œU«>›¢µ>œ¶>œ³.>œ¶7>œ‘I>œnß>œ¦ƒ>œÆ‚>œ“É>œqí>œ$ÿ>›š>› ü>›æ>›áp>›¹ú>šò>™R6>˜¡B>š;)>šD>™è¯>™èª>š56>šuf>šp]>™Ïy>˜;2>˜¸>˜·>˜°L>™€ë>™v‘>˜y%>˜Â>˜Ÿæ>—Ud>”Üd>‘[>“á >“¡¢>‘Ãj>‘®­>“‰a>”Vw>”ñ>•ÿ_>•ªí>”T >•:ï>–}>•Ú;>•³‘>•™>”ÒÑ>”rÐ>•…>•Šõ>”Ê>”*Ò>”UË>”2[>“Ïù>“‹ó>“­H>”cù>”¸¡>”G¿>“.W>Žû”>ø ->‘Ð ->’˜Ï>’†ß>’¾¼>“>ú>“Å>“3á>’Ži>’j >‘ø1>û>Ài>„>æ>η>óý>‘òW>’>’1â>’¨ã>’ž¬>’o>»˜>w2>Žže>û”>Žñà>f>3>‰7>ŽkÆ>‘$G>‘߇>’–‹>’Ð >’9­>‘EË>“Q>ve>#®>‰ï3>Œ)«> Æ>Ôˆ>’¾>’FM>’X>’û+>’÷c>’„I>’¸>‘±r>‘æ>Ëž>‹Î>}?> >†÷->ˆÅž>Œ%;>Žp•>>Ù>ôÛ>¦ø>‘ÝO>“‰>”<®>”Žë>“ˆÓ>’%>“>“œ>’‚¤>Õ¸>ŽµL>Œ?„>{h‰>b.H>Oi>‡µ_>‹rß>ê>Š> -µ>¯•>3—>“ÇÎ>”¨u>•l)>•zÚ>•]>•<>”»á>•E½>•d{>•Ð›>•#œ>’îJ>‘Šà>J>‘=0>Ö=>ÜÔ>‰Þ˜>…Óš>‚ó2>„XC>ˆix>ŒPÔ>Ž^ >L>‘Öí>‘Q~>“CÉ>”xŒ>”Ê“>–9C>–S»>—2ê>˜F•>—Ù'>—‚ù>–ˆ>•ÆH>— ‚>—tÌ>—‚Ñ>–÷Û>–1>”Ä>Tâ>Ž —>‘|o>ÓJ>Ž–±>Œ{\>…‡Î>gT>^öw>tfõ>€&,>ƒhÉ>††—>‰vÄ>ŠÙZ>Ž=¢>·> >“„W>“™!>°>ŽøT>•B >“W>‘²8>•k>•;À>–Uà>–Ï®>—ã>—ž>”¼J>“.w>” ^>•Bc>•'Ô>”Ûò>•]Ø>•A>”IØ>‘>‰½>’->‘D>Ž R>ŒrU>Œ)>ˆ|(>…|>ƒS>yçT>kò©>hV>u2,>€ìm>„s€>ˆ![>‰ÿÔ>‰g“>Œ<Í>á>h¶>Ž·>/b>x>‘¡Œ>‘«`>‘ÅÙ>’¡W>’ã>’ >Ž+v>Œá >¬>‘:Ë>’ÁÌ>’ûó>’\H>S6>ˆƒ¬>‰lÓ>Žßã>éá>¾±>I+>…©>Ž–V>ŒÛþ>‰¿ú> %>é>ŽŠÔ>¿>Œr–>Š£ß>ˆ> >ˆ@Ó>‡n¶>…Z¯>‚Û_>Tr>~oÙ>y›*>rœ<>gÒ5>ZÍ>Kõî>C„>L:4>X3D>dEå>mF¶>rŘ>wÕò>}Ô>€N“>¦8>‚ì\>„×à>†™)>‡³é>ˆTú>‰+D>Šl>ŠÈÞ>‹v­>Œ#q>Œ©ó>h>^&>‹Ó÷>ˆ®>Œz>Ž^;>Ž>ŽŽû>Ž¦K>Óè>‰6(>ŠKV>Ži}>ŽãZ>ŽÑR>ŽÁâ>Ž±.>Ž˜ß>ŽdÜ>Ž ™>ñí>Ôs>Åû>œ >a¼>Ä>ŒÒ{>Œ|o>‹ð>‹>Šî®>Š¡>Š“>‰}h>ˆur>‡7>†þ->†65>…+>ƒòŠ>‚¿>€öÂ>~¬>zá¾>vpÓ>q4Ó>k¬?>eL>^!>Ueã>K,=>>ãq>0g1>*µØ>6 Ð>C>NXû>Wdä>_Ã>e@>jÚk>p¤>tÿ>wpó>zå„>}ýÚ>€D»> -A>ÈÊ>‚½>ƒp5>„uÙ>…"V>…‹ã>ƒ³®>wö>|sü>†n>‡6>‡J·>‡kñ>‡[Z>…õ>Ìf>„£‡>‡»“>‡ö>†hÚ>‘ >… >…®’>~y >ƒæ->‡£W>‡šþ>‡Œ>‡§>‡žy>†P©>€üó>ƒ¼Í>‡ñ>‡e>†ü+>†*P>…üà>†@M>†vR>†Q >…¥!>†U>†Cë>†"p>…÷>…×>…ª•>…o2>…Ph>…-¢>„ï?>„ŠŒ>„w=>„W>„$#>ƒÜö>ƒž>ƒ\ >‚ýô>‚>€z>€Vå>€Xr>€IÃ>~ý+>~Úà>|§$>|›5>{ÙQ>z)<>wþ>u¾Î>s—g>p -g>k“6>i¼6>fwÂ>aGh>X´ü>V ›>OÊ>FE>B”`>9º$>-ú>Å/>T'>'F/>3ÕÌ><µc>D>LÆ\>Q -e>R§o>[~ >a9>d+²>f½5>hBs>k -ó>hÊ>`>ð>dHë>f†3>pî>uía>vàX>wÓ€>x¡©>y6>y¶H>z>zyY>zÆ >zïÁ>{>{Kc>{ª>{ï>{±•>{tê>{4>{ªÚ>{»2>{¨>{¯5>{¹ >{R>zàÅ>{p>{!Œ>z)>z``>{>{ °>zçð>z¿,>z|>zµ>z+>z#â>zu>y»>yšZ>y–q>ys…>yG°>y!)>xüŽ>xÑ®>x >x}²>xKõ>x %>wÞš>w£û>wyR>w@â>v®‘>sC¥>sõ­>u#f>p¨Á>s¯1>uúj>uÊk>uE>q„—>e[„>mè>s̃>n=}>jlR>pÝ>sKô>qËî>qŒD>s«>r7>q}>qáw>qº§>pD‚>nù¾>pÈ©>q Ÿ>pK/>pC>prÐ>pYw>oÿš>o¯¾>oj5>nH«>n I>n¿>mðL>mÍ>mvC>mH>l´±>lI&>kÄ<>j{P>i½2>j >i¡>hõõ>h>gNP>f]q>eoŽ>dŸ£>cyO>bÈ>`Ñæ>_^ã>]Ê>[éí>YÆS>WWå>T¡¶>Q•â>NS>J@T>Eܬ>@Ü >;#e>4ªÜ>- -ã>#ç¥>I°> —?> úy>ôí>%ky>-¯>4´´>: 2>?´£>D>Gõv>KB:>N Ñ>Pw>RÖ>U<>VÅU>XHR>Y”S>Z¨P>[¦#>\wø>\ýý>]”O>^:Í>^„¸>]éŒ>XÀ>[Ã.>_‰2>`ž>`Pž>`“>`–œ>_Î>W]">[>`Nï>`?Ò>_É>YÌT>Z7è>_x\>`‹k>`‘ó>`†=>`o|>_ø>]oÈ>^#+>_©‚>]ñŽ>Tû§>Y·é>_˜>_ø>_CW>_Á>]æ0>]ß/>^Jó>]xá>\h>\ß>]Ê!>]]á>](>[¿ >\q>\Çh>\ÜM>]>\í£>\Ò(>\®â>\„˜>\^”>\9«>\à>[äP>[©E>[>ZòŸ>[ h>ZúÏ>ZéÆ>Z¥ú>Y–¯>X8x>X¸ø>Y€>Y½>Yo™>Yx>Yi>YJ>Y´>Xç¥>X½u>X\>XMg>X74>X·>Wõ¡>WÇö>W‡Á>Wf>W@Þ>WÁ>VÂY>V^>V/U>V&Ð>V%Ë>UÊs>U€Î>U}->U“K>Ug½>U,>Tš&>Tx>T•‡>Tˆt>TQ>S®¤>Rä>QÄ>SV>S3£>RôI>R¼1>RÛ ->RÇ>Qð…>R$Þ>RBR>R>Q>NÞ¥>N^E>O8>N¾>O•º>P´>P’’>PNU>Oõc>Oì'>Oþ>OÛE>O‘ >OJï>O/•>N>G±Õ>Hs>M±}>N<â>Mcb>Mæ>MË­>Mš>M3j>LÊ>L—'>Jñû>Ks8>Lš>LsQ>L4Î>KÕb>K–>Fù¢>H»È>K)à>KÒ>I¾ä>IH>J!Q>I¬à>InÁ>I`n>IO>Hçá>H°e>H‡Á>H6Õ>Gù£>GÂ>GlN>G„>FÈ)>FgB>F e>E˜ >E->D¼+>DT¥>C×ö>C)¬>B/ï>?ð2>@vÜ>@Td>?w>>©`>=œ{>;3>9’'>7Î5>6 >4Y>1”é>.ïz>+ï>(>$žj> (ˆ>þ”>ôô> ½E>ˆ=ñe=îso>ÁH> ÿA>>>àk>Çò>!ø{>%™é>(ºc>+ƒ@>-åQ>/ß3>1©K>3Pp>4¥>5Ø>6í[>7Ó>8›*>9GŸ>9Ü>:[™>:¾'>:[ >:{>9Á»>9Ù>8Ü>90î><8>8XÎ>6Wÿ>;˜ñ><92><•þ><¬0><«@><¥'><šk>;ÆÓ>;È<><.ì>;¾ø>;ûå>< -z>;ly>:d>;^L>;¦H>;m&>;>;>™>;"ã>:ðž>9Ú^>:-Ã>:‰ >:n€>:x">:[µ>:7æ>:˜>9úc>9ÚÉ>9¼o>9”þ>9x,>9Er>8Ã>8æ>8î–>8µ<>8¡->8yî>8^ >8Iw>8£>7×>7¼ø>7ºÖ>7as>7:M>7Ta>75¸>7 ˆ>6ÇÕ>6¸—>6§P>6ƒj>6aÝ>6>>>6:>5á–>5—ë>5¢Q>5">5hÀ>5Bƒ>4ów>4tV>4³¶>4µÏ>4’Ž>4h)>44 5>4˜>3Óõ>3Žf>3eÁ>3jU>3EŽ>3X>2ú®>2Ùc>2¯‡>2C4>1&@>1Ói>2/Ö>2ð>1Ø«>1ˆ¼>1¥>1t{>1YÊ>11û>1¾>0ê˜>0ŸÛ>09Í>0>0U>/ -Ø>.ËA>/· >/‚v>/—y>/~ß>/Wï>/DŸ>/m>.¬d>.ºY>.¶M>.í>.S/>..á>-÷>-¬ ->-É>-¾7>-›°>-vh>-Rú>-.¹>,ÒB>,«e>,ɨ>,©1>,…¦>,cƒ>,?O>,s>+ë>+Ö>+dœ>*³>'x>$ÀÔ>&T^>(ïÁ>*©g>*³è>*#_>(ág>)¿`>*£>*6>)Ö.>)¼^>)NÓ>)>)>)!›>)"[>(ï™>'¼ >&ë0>(>'mŒ>'Eƒ>'V>'&È>'ŒR>&§±>%@°>&í>'?x>'%¥>&ò>&´>&¬>% ¨>$v>%óì>&'Ä>%šÅ>%m¡>%ãÎ>%™^>$«>%3¡>%=N>%3ú>%%A>$ìÂ>$"R>$&>$Š>$V}>#wk> {_>"±|>#Ûé>#‹J>#‚š>#&Ÿ>#M¥>" ³>!B¢>"ß‹>"ç`>"½T>"£«>"ƒû>"`¼>"5¡>"ž> ð¤> ›ª>!_> K†>!Oë>!Z ->!5ô> ýW> ç> Ó> œ•> 7”>íÉ>àâ>s>×Ì>Æ$>§…>*Æ>¨>:O>Ÿ>dý>’ >^m>¸…>j%>ÁÖ>>´F>¾à> f>w²>Í>6i>ò>ö5>ñ¨>í½>ƒâ>Tœ>ÄÀ>—¾>5}>'S>{>Ϥ>è>ý>‹>=>½ø>v¸>µÅ> ÿ>¥Í>_>IÓ>= >Ì>õB>Üç>¯Y> >I²>˜œ>*­>úX>¿Á>µ•>”‘>u*>K·>÷">{>?&>³Ä>{2>+ >Ï>oc>™C>>pg>H8>&þ>Ëd>ñ>X­>[ã>&G>ìu>®ü>h{> >4Í>üi>øg>¼>v˜>,©>¼6>'> É>v¿>™Y>ò'>6Ê> oM> ‘‚> ‘¯> -qÂ> ,m>ÁO>•Ã>¿>,¤=ÿÉ'=ú–=ôr»=íWe=å=Û=Î%µ=»<{=¸ ^=ʪÄ=×å¹=áº^=é ¯=ìÖK=õz=úµð=ÿ\Ø>ž/>²Î>'F>ÔÎ>æ¸>͈>K¼> >æê> éõ> -¶®> !÷> ú> É&> 5> 7[> `k> > žå> ·7> ´m> u”> -¦> øs> ãu> ê,> éR> âÅ> ×Y> Ós> Çi> ±±> ¬Ã> ˜2> “)> „> q¹> P©> @{> > > *’> > I> èy> ؆> ÁÏ> ¨‘> Œ¬> n†> e > Mj> ÷> -ò²> -ú—> -ì¾> -Õ¼> -ºî> -“ò> -€r> -d> -Qà> -;®> -Ü> ý+> xE> g!> -v> 6>ÿ¦> ?o> L÷> |>’>á >Úý>¸>¬Q>v>wi>Yä>,%>U>÷>Úæ>µ(>“7>_ð>FŸ>(9>+E>>ñ>Ép>†g>¢¯>™->~>>VE>ÿí>§>û>ó˜>Í(>—u>Ÿ°>ˆ½>cO>Hñ>9d>µ>ý™>ä1>„Q>ã>*ú>FÙ>=^>5Æ>÷‰>e>÷[>Ü‚>Áa>¥M>vò=ÿ7Ë=ï0°=ÿ†Ù>ªy=ÿfA=ýÐE>¹4=þú>4>NN>@.>ê>üË>ƒ>èG>²¤>¥Ò=üú=úÔ>äZ>n">Ã>#Ú>Þ„>×l>Ö°>¹¯>ú=þ¹>K†>Tl>!Ï>ì=ÿœZ=û0=ýIá=ÿ =ý‹©=ü(ª=ý^=üL=üp=þÛ=ý¬-=ü5ï=ú«Å=ù!E=û=ü¦Ó=û0Z=øø¨=ûºá=üm=û¿#=ûš/=ûOž=û )=û(q=úí»=ú}K=ú\V=÷£=ôöÆ=öaM=ùbÈ=ùß=ù_8=ù,h=ø÷ê=øÂä=ø==ø\À=ø#È=÷ó5=÷·È=÷J=÷QË=÷=öóY=öÇ´=ö’C=ö\Î=ö+Q=õÞ =õ°Ÿ=õŒ=õb=õ,ê=ôú/=ô”=ôi]=ô0=ô.á=óýê=óÊî=ó“ -=òùÒ=ò°W=òôñ=òÑ =ò¡n=òs‰=ò6‚=ñ‘s=ñ‡º=ñ¥å=ñ_´=ð´ =ðép=ðÜÕ=ð²M=ð‚$=ðPr=ïý#=ïL=ï£=ïJ{=îÎa=îèp=î—!=ìó«=íÏ=îÁ=íz=ìøØ=íh=ìhÞ=ç…ë=ë°ö=ì‰÷=èZ£=盿=ìA=ì>ü=ëй=ë¡ç=ëŸà=êOê=èûö=è”=è7¢=æ\y=ÜU„=çË×=ê =æÊD=â7Þ=æ5Ñ=ç3Õ=é.=é)=èá=è¬)=èk=è ¿=è -Ì=çåö=ç“â=炱=çaõ=ç2…=ç‡=æ« -=æql=æok=æ>H=æ -n=åÏ==å›Å=åyä=å3—=å4=äп=ä´Ê=áÀ;=ÙÓò=Ý5'=Î¥=Üš=ãwY=ãg=ãGK=ã t=âÉÛ=âiú=àfq=ÝãY=á¶g=á™´=á¼ =áKþ=á4Ë=áHä=àü;=ÞÇ=Þ˜ô=à†í=à[”=ßÖ!=ßÞò=ߪd=Þ¤"=ß.¶=ß ô=Úq>=ÛÐ÷=Þ¯ý=Þø=×\9=Úc=Ýó˜=ÜËó=ÙÍP=Ü÷=Ý@.=Ý®=Üb×=Øú¡=Ûm]=Ü`i=Ü@Œ=ÜÙ=Ûh=×…M=ÙR2=Ú’=Û®=ÙÚm=Ój~=ÑT=Ø@Ì=ÚEß=Ú!µ=Ùõ=ÙÈ°=ÙšR=Ùmô=ÙAg=ÙŽ=Øç—=ع¦=ØZ=Øa=Ø1™=×ýæ=×ÙÝ=׫Y=×sí=ÔÂ?’LÔ?‘Ÿ…?‘ )?‘o?‘^.?‘»&?‘é±?‘Ýû?‘¬±?‘xb?‘a7?‘lR?‘€ã?‘†'?‘y­?‘cI?‘70?Ï?"Å?‹*?ˆ8?-}?‘ -†?‘¯?’û?’+?’Ï?’,?‘Äú?‘h]?ï"?e€?ìs?´ý?Ù¿?>¬?§q?êe?‘®?ö1?Î ?”]?d?[?{V?¨à?Ét?Ù»?äe?ïð?÷]?ê{?¦ý?òŸ?Ž¦Œ? ¶?‹é^?‹×ý?Œ±ª?Æ‘?Ž{~?ŽšÐ?ŽRá?ŽO?ù ?Žw?ß?ù?Kó?—[?ŽB—?Žá©?"3?ŽîÄ?Ž[z?š6?Œå9?ŒTQ?‹çÀ?‹Ä‡?Œ=?ŒÚ1?‡þ?Ýz?àa?¨???ŒÑ—?Œªý?ŒÜf?£?Œû[?Œ–­?Œ9?Œ?Œ?‹Ÿû?Š»x?‰³Û?‰PQ?‰ï÷?‹ ¬?Œ4ó?ŒÜ‰?r?Œ ì?‹­{?Š¯i?Š`]?ŠÖV?‹JÒ?‹$?Š?¤?‰ÃÔ?‰÷«?Šz¾?ŠÒZ?ŠôY?‹ß?‹e«?‹¶]?‹È{?‹xO?‹¦?ŠåZ?‹S?Œ?Œ’¢?ŒÕ?{Sc?y÷j?wú!?v"Ó?um?uø%?vÇ¢?w' ?w”½?x `?yä?zh§?zù?z‡—?zAR?yR?x¦?x ?xCb?xì?yu¬?y‹»?yI´?y«?y P?yBÓ?yeÄ?yC¡?xÙ»?xVù?x Í?x&á?xoµ?xxN?wÓ¢?v>2?t!õ?rÞ‘?s…d?upç?w$o?wös?x#·?x ??wà*?w»³?w©?w¢j?w’b?wM¶?v}”?tÂx?rPô?pD¹?oÄô?pý2?sM?u -?v$?v{L?vN?v‹C?v£?vpE?v[ ?v9?sÉ+?tM¤?tÁ¹?u˜?uR -?uNø?tö9?t4_?slä?s]?t'§?u0F?v?vÿW?wä?xŠ„?x×?xÂ?xIL?w̨?wó¸?xÜû?yí–?zuš?zÀ?xÓ‹?wEœ?v_?vˆo?wI¡?wï7?wó¸?w4*?uð·?tc?rê?rj?s®9?vu¯?y[?{›?{¤¨?{åK?|Ï?{È -?zU#?xlÎ?w¯h?xǧ?z–i?{Íñ?|à?{°?yJÖ?wÒÚ?w C?x0W?xȶ?yÄ}?{¦Ò?}Ãn?'?—?€›?€%?€?€0ô?€­Ü?T%?“z?;Ä?€ºV?€Æ?€Ú­?–E?‚”?ƒlô?ƒÃS?ƒ ?ƒb?ƒV’?ƒuÑ?ƒsç?ƒ \?‚{Þ?‚mX?ƒ'?„2[?… ?…‚Ã?…‰b?…K=?…%®?…Np?…‹¾?…’h?… 6?†*‚?‡þ?‡º]?ˆ2å?ˆ˜2?ˆËÙ?ˆ±Š?ˆ›—?ˆá}?‰7l?‰‘?ˆ9”?‡?†2.?…ýŸ?†¦®?‡ß?‰2>?Š!ˆ?Š’Y?Šõµ?‹g—?‹0ã?‰Ç?‡ûß?‡SÊ?ˆ4’?‰Œ®?Š>?Š.G?‰ìj?‰Ÿ.?‰!­?‰ù?‰±@?‚v?'õ?©`œ?Æ©a?Ú¨ ?Ûöê?Éè -?¬ -à?Ž¦à?†?†ÿ>?¡FÒ?˜4?â2?û€¹@+z@M?ê)*?Å$?Ÿˆ?ƒþ4?{# ?>??±x…?×Ãe?÷k6@Ìã@ ° @Ïl@üÏ@ ßÀ?þ‰]?Ù”ß?¯y‰?Š*ö?j˜?nIb?‹÷ ?¬J ?Ón?ûÆ´@?]@ U@¹Ð@ðã@3b@F$@Õ@!p?êïa?Ê…?¥ÅC?ƒ‡¡?]{¯?`£O?‡±'?«Kš?Ћ?ïÀb@´Ö@ õ¸@ð@u2@ Ô.@ -êº@ !@ ¥¶@ ˜=@=[@v@ ø@ÐÇ?ø)?Ý].?¼Õ>?™4 ?s5ÿ?SO?a…¤?ŠÖ ?¬¸Þ?Í¢r?ê@ÿ@=Õ@ `D@6>@®†@¯²@ÌR@!}æ@!K7@ @Ÿï@ C@«Ã@Ÿ¸@VÙ@÷%@.?æäÛ?æÌ?ëD?ñƒ?ó8]?òÊÖ?ñ2B?ðÃ’?ôºƒ?ûÅ@Ã0@#@@í?ûÑ ?òÑ?ì«Ë?îDv?ô{¿?ù—‹?ü|?üªæ?üs -?ü=?ü²?ýq™?þ*ô?ÿkA@FÏ@ˆ?þ'?û?÷ýS?ô"å?í<…?ßð¢?Èí?ª #?œG?ªÅ ?É‚¨?â<â?í—í?ñNÞ?ôóO?ùõC?ý1“?ýµ?ú?%?öž?õÈ?ö’þ?øñu?ù÷Ô?úH?úÃé?ú²Õ?ù}±?øe§?øù4?úTD?úF™?ø.¼?õl÷?óÁm?ó·?ñv?ìØâ?å÷©?ß–B?Ùìõ?ÑÜÜ?Äôµ?±äB?— 6?k¯«?,Ñ?¹á?s—?#߸?UaÞ?„šÒ?œ*=?±žÒ?Ä\%?Ò¤†?Ü}Ë?ã[ë?èTÜ?ë¥?í??îh?ðû×?ôƒÀ?÷Ž?÷Ï#?÷Ü?ørè?ù¤”?ú{È?ú¼É?ûxÂ?ý3²?þàk?ÿaÆ?þ}š?üV;?ù¸õ?øo¹?ùO}?úáŸ?úÞz?øN=?õ ½?ó¯?óoN?òßü?óäS?÷„Ï?ûH?üuè?üm?ùò{?õè?ò«ž?ó?”?ö@t?ù0?ûÝA?þJ@%@¿‘@Å@†§?þqŒ?úI¶?õ$¶?ñ9?ñY?ôº?öDn?öYB?ö9ø?÷•?øz?øÕ4?ô -œ?òPC?ï…¥?í/?ëÚD?쨿?ð =?óS®?ô½?ó¡u?óÏ?ñ*ü?ì Ñ?äT ?Ýîk?ÝM¸?âØï?èÉk?èâL?âüT?Ý'?Ýßš?äH>?éЬ?ëŽ??ëxq?ë«{?ìj'?ìH3?êçÑ?êjA?ë©?ìÀá?ìѸ?í00?î|µ?ïv˜?ï$t?î,ª?ìïe?êÑ?è·®?è0:?è&è?ç9??æõü?èQ?és”?é¶?ê-6?êíy?ëW¹?ël*?믃?ìe?íð?ì´Ï?êFÇ?ç ?æ?ç™[?énp?ê?ç?êz'?ê‘ø?êIÚ?éO7?çF?Ë ?Ë7¶?Ë`?ÊYB?Éy??Ét?É•Œ?Êf?Ê¡¹?Ê|è?ÊF$?Ê”?ËÒ?Í[?Λ¶?Ïxk?ϱ[?Îɯ?Ì25?ÇÅ?ÃQû?ËM?ÉC?ÎÚ ?Ñ?ÐVC?ÍFÙ?ÊsA?Ë'Þ?Î$`?ÏÖé?Ϩ`?Ïœ…?П ?Ñšº?ѱû?Ñœ?Ïó3?Ï “?Τ8?Í× -?ÍÕ?Î -?ÌTv?Çød?ŵ—?Çd&?ÉG?ÊPO?ÌGK?Ï+?ÑE¹?Ò&é?ÒOM?Ð¥¿?Êå?¾:A?·kp?¾N?Êd?ÐZ‚?Ñ¡O?Ðß?Ë–3?ÆÓj?Å€?ƨô?ÈG?Ëy.?Ά?Ϙè?ÐÍ{?Ñdm?Ñ ?Îø’?Ê Þ?Ås&?Æ3¶?Ë4ê?ÏK¯?ИÍ?ÎßT?Êqâ?ÇF»?Ébg?ÍÃÐ?Ð4«?Ðã?Îhæ?ÉîÞ?ÇOâ?ÉxÆ?ËÝ ?ÊPV?ÆH?Ãï¬?­\?×?Æéb?ËÙ?͆ø?Í - ?ÊÚ-?É&Ó?Éõ1?Ëp?ÈR2?ÁÖE?¿D)?ă?ÊìW?Í{É?Í{?Ë m?ÈIã?ÇÑ?ÈÉ$?ʲÑ?Ë;-?Ëhî?ɼý?ÂO?·…Ö?µ*ë?¾#?Æ‚§?ÇiŽ?‰Å?½vÜ?½Jì?¿®ø?À”?ÃK?ǘž?ÈûT?Åoœ?Àìå?ÀÎÀ?ÄoB?È {?ÉÓ ?ɼr?ǘ -?À?Àì?Šc?ŬÝ?Ę?Â=Û?¼l?ÄŒ?ÃŽö?Â÷?¾ùµ?¸W]?³ù?¸eF?¿Ë9?ÁKš?½¼ ?»_j?¼>ö?¾"?¿Ö7?ÁÝ`?Ã`Ð?ÃT&?Ã>?Ä/®?ÄàÝ?ÄÊ$?Ĺ¯?Å ¡?ÅOD?Å_Q?Å•m?Åþ“?ÆIï?Æ<?ÅÉ~?Å_$?ÅkÓ?ŸÝ?ů ?ÄÂù?Â{…?¿‚?¼½Ê?ºIí?¹Æ±?¼.ª?¿êV?°z?Ãœ:?Ã@l?ÂJP?À8?¼,»?¸ÿz?º§¿?¾Q*?¾ë?¼?» .?¼².?¿’?Á]ô? ?Â~X?¨i?ªu?Ÿe?ƒ÷?Âb”?ÂH_? Ø?Áäž?–?Â$.?Áùo?Á±G?Á>~?¿þå?½›@?¼Ë?½™l?À"µ?Á'?ÀTk?¾¢Ñ?½YØ?¼µ?»CÝ?¹ä?¹À3?ºÓ?»‘à?¼ÀÛ?¾FF?¿PK?Àß?À¤Š?Áb?Á6«?ÀþR?Àµb?ÀÐF?Áƒ?Á>t?ÀÜ?À#?¿¡Í?¿x?¿H_?¿Fs?¿­j?¿çñ?¿Æ…?¿¯÷?¿›Ï?¿rŠ?¿.P?¾Ýí?¾ÊÐ?¾áG?¾{?½i•?½ ?½þî?¾ÞN?¾ŒÙ?¼åu?»)ø?»ˆ¾?½J.?¾7?½ÊF?½@ï?¼÷3?¼îë?½É?½!—?¼ð\?¼š -?¼yK?¼p2?¼#¶?»p†?º}?¹÷m?º c?¹U\?·¿?¶ê?·â?ºW6?»'Õ?º¯(?º )?¹µ¡?¹}–?¹’q?¹ñÔ?º(Ò?º)ê?º?º¥?¹õô?¹´m?¹b•?¸ðl?¸là?·Úî?¶ü‡?µîÆ?µ0_?µ01?µ¤ÿ?µÇ(?µ€?³Vc?°ü?¯Pc?¯ƒ?±ZÞ?³CH?´91?´TL?³ö ?³H ?²—?²U?²„¾?³ª?³îë?´ò?²¬ï?°ßí?°þ?²™m?³ÄÚ?´W?´+÷?´J€?´ž¸?´Ù?´uh?³¾?³S¨?³S -?³€Û?³²@?³ºâ?³ ?²\?²'®?²÷œ?³;?±íE?¯Àú?®-ã?¯¹?±dH?²ž ?²†#?±¦>?°‹s?°R?±7¸?²29?²¥ÿ?²Æ?²ß‘?² ?±Ô?°1¤?¬ïÓ?©¾E?ªa?­ 7?¯‡”?¯è…?°>?°‡?¯É¿?¯p?¯ ?®^Ý?­œœ?®s?®á8?®³Û?®U1?®E?­®?¬¡>?«Ì«?©á2?¥¿p?¡´Ï? õ2?¡w?Ÿ÷¶?›ìS?•g?Œ½W?ƒ?p=Õ?TG¨?0ÅÎ?‚?§?Ùr?A»?a«û?|Þ»?‰rã?‘nd?–F?™zº?›œ½?¯$?žôÌ?žír?žow?ŸûÔ?£ 7?¥f\?¦WI?¦•?¤ÿð?¤3?¤ÐÈ?¦iD?§¡?§Ã?¦¦–?¥{l?¦§?§„ ?¨„M?©\n?©õ?ªÏ?©ûš?©¤3?©k[?©µ²?ª*?ªhæ?ª§C?ªµ?ª‰»?©÷º?¨Á]?§»7?¨Z[?©Û?ªÝ_?«U²?«"õ?©é?¨Qx?§Xã?¦ª?¡‘?œ4á?ž…i?¥àŒ?ªG¥?«ª1?¬+?¬0\?«±~?ª²›?©üŒ?ª5¢?ªÔ?ªÒ³?ªzÄ?ª°Î?ªêá?ª²À?ªT?ª©˜?ª€m?ªÜ?©}Ñ?©+¥?©";?©à?¨†È?¨Ñ?§ýR?§E›?¥²?¤"?¥çÝ?¨)þ?©#ž?©1?¨zP?¨(*?§Å?¦òd?¦O?¦vg?§r?§Ž/?§ÕX?§Ì¢?§~d?§9?§"?§CJ?§H?¦­£?¥tó?¤k@?¤)Õ?¤±Ã?¥ŠŠ?¥òa?¥ƒø?¤ºO?¤»?£v¥?¢Úg?£w°?¤¹q?¥y ?¥×7?¥.h?£/?¡&?¡7.?¡÷ -?¡÷µ?¡ûó?¢ m?£Wt?£z1?£ˆ×?£š“?¢ßE?¡ýI?¡B)?ž÷?–ß?‘»Î?–x?€K?  =?¡œü?¢È?¢":?¡¶²?¡:å? ¶c?Ÿk~?žŸ©?Ÿ\4? 6Õ? Ê?Ÿ£¼?ŸÂH?Ÿ‘?Ót?›³ì?œ:»?žÑ×? V­? k‰?  P?ŸÃà?ŸÒo?Ÿê¼?ŸÙæ?ŸÜJ?Ÿ‰?V6?šLD?›@€?žhA?Ÿ½Æ?ŸÉ\?Ÿ¡1?Ÿ™8?Ÿ‰n?Ÿ3?žÔ’?žx)?ž*Q?öG?mž?œ¼Q?œÍð?LÃ?¤¬?ž~?žz ?žcò?ž?ê€?±û?§³?Ô’?Òæ?è÷?žp?µì?0? ¬?1?‚?œå?œ% ?›pe?š´Þ?™qq?™œ?›-–?œ8š?œ˜?›Á?›¢-?›­®?›~*?›[ô?›Å?›Ç^?›¼4?›‚?›Q9?›.?šíà?šP‰?šï?š2î?š`N?š}?š‘?˜$?–Ê2?–ýT?˜|ß?˜ù?˜Å>?™?™^%?™7ñ?™Ï?™Ì?™5ª?˜î°?˜Šx?˜:•?—»‰?—|‰?‘.?Ž’†?w?“ö ?•‘?”‡o?“¿¾?“ƒS?“Öv?”vë?”¸Ž?”iX?“Äþ?“·ß?”8Ù?“äÚ?’ˈ?’#¥?’ͼ?“ðª?”€à?”›¶?”o˜?“=?ª?Œ$G?‹“d?´o?’â&?’·?aº?‹œ?‰ø†?‹\¤?ŒÅP?ŽC?.ƒ?‘&"?‘d?‘œ?‘˜l?‘b]?¶½?²š?‘Œ?‘-?‘x?§Á?E*?Žn?G{?#?þ…?%í?ŽÃe?Ž)?Œ(?Šãö?ŒRž?Ž?ßÏ?*W?Ó&?Žˆ0?GÈ?‰#â?†Ñ?ˆãI?Œ9?Iz?µ¥?é?ŒC±?‹dè?|!?­j?Š°?”?é3?p7?Óa?õ2?¤?Wÿ?p?Žîp?ŽùÎ?Žÿ?ŽÙ@?Ž™?g?Œö?‹¶+?‹Þ£?Œ[®?Œàž?ŒU -?Šá©?‡Ã$?‚p~?‚=?ˆêÃ?pß?Ž´c?ŽEÓ?Œ‹?Š:ó?‰¹Ù?Š. ?‰L?‰ˆU?ŠãL?Œ]ù?Œwï?ŠÑÐ?ˆéD?‡Š)?‡¾=?‰Oƒ?‹?Œ£V?_o?r?Œ1m?‹ªÛ?‹Üî?Œ&J?ŒkW?Œh?ŒU¾?ŒcŒ?Œ;Y?Œc?‹Ÿ?‹Oé?Š¥ -?‡í=?…u?†\M?‰7›?ŠL?‰¼?ˆòì?ˆ>H?ˆmI?‰–K?Š«@?ŠÛô?Š¦ó?Š²²?Šz?‰›?‰A?‰-ì?‰|z?‰òw?‰Àk?‰ˆÞ?ŠÆ?ŠnG?Šf?‰÷¥?‰[Ï?ˆ¡?‡¿v?‡É!?ˆ—H?ˆ|Î?‡„?‡£?‡~?†Ôç?‡ ­?‡-B?‡&ï?‡yO?‡ÇX?‡kž?†?…¡)?†’g?†á„?†+?†­?†7?†te?„÷Ý?ƒ3¹?ƒ«/?…b?…D?…@æ?…ã¨?…Çó?…G=?…„S?†Ú?†‘³?†¢S?†s?†nC?†ƒœ?†ne?…øW?…n÷?…ªœ?†>Q?†0Ç?…ó”?…Ì?…t=?…)?…?…¥?…·E?…´y?…¡œ?…V?„þi?„ˆ*?„Â?„…D?…J?…Ë‚?…ù?…g›?…Lž?„ü.?ƒñN?‚¥?€Ýb?å#?ƒŠK?„*9?„Q?„?ƒ6¡?‚ï?‚ȹ?ƒG?ƒhT?ƒoŒ?ƒÎ5?„E?„MÏ?„_?„9?ƒ‘R?‚Hm?š?‚!Æ?‚#K?€‡??i?kŒ?Ò¦?‚–°?ƒY_?ƒ¼?ƒæä?ƒû+?ƒÇƒ?ƒd„?ƒB?‚¿?‚LŸ?z¢?€/=?}¢õ?}(?š¶?l?€öË?~]Þ?zU]?{îT?€N?+J?M ?6B?å?€šÊ?€8ú?€zß?€Ã??€×³?€èƒ??ê?€í?€¡\?€‡l?€€y?€\Ò?€1e?€@?ÐÌ?€?sÐ?³-?¹f?lŽ?~õÔ?~"]?}¶|?~c;?~ˆ½?}òñ?}¬?}¹l?~æ?~.Û?~‚?}²?{ö?zZÌ?z»Ð?{Øž?|3\?{ê’?{˜?{g¶?{¸Å?{£R?{O?zú%?zþú?zª?zx²?z_N?z9Á?yʪ?xì¥?xðU?yÉ?zm?y?wàt?x)Ù?xÔ{?xæ«?xï³?xÛ£?x'ú?wp?w5·?w?wx?w×??wî?w{ ?wÉ?vöÈ?vÞ?vÂ?v?;?uÚb?u½?ugu?tC ?s×:?ty·?tá?tÁ{?t¼?tã?tÉ°?t0/?sRj?q[*?pJM?qÛ?s¦?ræ)?r”,?rn.?rI?qÍ‚?p×?p·?q½?ql?p×C?p‹R?p©¸?pìÄ?pÎ?p¿x?pf½?o ?oB¾?oqù?o!@?n¥Š?nã?o?oG ?oz?oÊ?n£¤?nÆ -?n’®?mÙÄ?m^Á?lG¼?jd?iMÓ?iÓì?jâ¢?kšK?kï&?l2`?lsú?lgP?lPg?l.?kk™?kG‘?k³K?kë¿?kùû?k°ò?kX|?koÇ?kX·?k³?jfV?iùä?jCo?jyT?j&?iÕŒ?iw?i ?i,?io?gñQ?fÎp?fè?hD?J ?IÚÛ?I‹ó?JÃ?J[á?JH?I©ò?HÓJ?H·G?I)ß?Ii?I„V?I”h?Iˆ?I ?Hç?IoÛ?I‹æ?Inè ?>¾†??PÂ??4l??¨??­?@ê??Ûì??„??w?@3?@ªo?@áß?@Öß?@qÝ??Ã4??È•??Øò??mÍ?=Âj?;žë?;|u?= Ê?>š"??‘??¢??_Õ??n@??µ?@à?@;p?@-‹??ë:??Ë÷?@*p?@AV??´ ??LR??2Í??3?>Ýù?>H‹?=ü”?=í—?;^þ?8gW?:R8?=PO?=Ã>?<±3?9Ǽ?5ßÜ?7ºñ?;ì\?=‰É?=ª‡?=z!?=xÂ?=S?=kÞ?=Ÿ¬?=‹J?=Ã?<å ?<~A?;3â?9Ÿ?8¶?9‚?9Þ)?8U9?2iÝ?,˜ü?+/1?)â»?%žS? ‘?!#Ý?)e?/â“?5Hx?4á…?5‚þ?573?5ã­?6´’?6@ù?5vÂ?3¬’?2AN?3Ú5?5±V?6Lg?6T“?6ë ?7~·?7+C?6x¼?5õ‹?5èt?6¨h?6öI?6©?6<»?6—?5¾`?5¡?3Ù?+ð??-ë?4bã?4üD?4 ?3ñ{?4Ô?4 7?4UÎ?42?3V©?3#?3{É?3l’?2^I?.úw?)9³?*œ?0Ü¿?2´¥?2ÅÌ?2xï?2U?2ž}?2Z??1i?1ù?2¢æ?36é?3{Û?3€¢?3o¼?3‡?3bc?3c?2ç ?2ÑN?2Ç?2ÉÌ?2˹?2g€?1Àñ?1£ñ?1¶?13’?0ðñ?/·B?-Ö÷?.y˜?0hÝ?0è??1×?1;?1?1”?0ôá?0Š?.ì4?--™?..´?/iN?/)K?.4x?-ï*?-ìY?-³?-Z_?,¼×?,Ö¢?-Xö?-j5?,Ÿµ?*5R?$Ö'? ùâ?%ü?*áµ?,%³?,$?,A¶?,‹ƒ?,8û?+¼B?+ü{?,º?+bÐ?*Ε?*õZ?+Ž¯?+v?*9á?(k(?'f’?(Ó“?*1F?*aa?)V°?'z?&Ì-?'yY?'̹?((?):0?*:'?*xå?*c?*N?)¡­?)´w?)ñq?)Ô=?(ýb?'ëã?%8o?"n½?$32?&¯/?'u?')z?&K?&íN?'3?&=s?%WN?$·ò?$)ã?$?#ø?#Ï7?#Ò¿?#k‘?"Ia? ò? MV?m ?§ -?£²?º/?_u?x”?²â?Ö‰>ÿvK>åd?>½ÅJ>£#5>¾KÈ>æíI>ÿ—[?ke?!ª? a?˜ö?eæ?÷ô?s¢?[Í? E‰?! -ˆ?!Ê!?!„û? ÷?!œœ?"4?"4ö?"Y?"ç˜?#?"ïß?#[z?#ÍË?#¢\?#A?"ɸ?"œÉ?#{?"ûd?!¨Ã?\r?C3?!JE?"Š?"+ø?")B?"x?"*??"P?!é¡?!½È?"?!ð¿?!«g?!9?!}?!¥G?!¯h?!Že?! #? @¿?™6?¡³?ç? Ó? 0T?ú6?¨a?‚ì?0Y?Ϲ?¿´? +?-x?a…?é0?òL?nS?w?…?m?qÊ?Ž?Ð ?á?n¬?¶v?ÊÑ?q\?´ê?4ÿà>ÿÚÁ>ÿôj>ÿÍá>ÿk¢>ÿ;¦>ÿ7ƒ>ÿò>þÃJ>þ¥>þ™>þ›:>þ][>ýî>ý¢ä>ý¦>ýu6>ýÑ>üÞ>üÞ<>üßz>ü­x>üvÝ>üq]>üfŽ>üC>û›'>û^‡>ûJ>û*Û>úä>ú—(>ú…*>ú>úG®>ùÞ—>ù¦¿>ù…1>ù;*>ø4>øÕ>÷¯Á>÷‘•>÷…ý>÷A†>÷B>öè>öˆ>õó2>õ”'>õf‹>õ5V>ôÝ×>ô`¸>ô/|>ôA >ôS>ô/ì>ô ->ô*|>ô_?>ôf8>ô I>óñI>óë>óÛI>ó„u>ó8>òÒq>ò²c>òƒG>òPR>òB¨>òj>ñž+>ñ|»>ñyo>ñ «>ðß>ð•Æ>ð^½>ñÞ>ñ¿>ñg>ïúÀ>ïfé>ïÎ>ðø>ñµ8>ðóo>ï>íý)>î1F>ïMx>ðÒ">ñ«†>ðý½>ïG >í >ì54>ì¯>í~i>î¸>ﺧ>ð>ð ä>í~È>ê@˜>å-W>嬹>鋇>ëå‹>íd˜>îñQ>ñ >ño>ðF¬>íÁ:>è/>àW‹>á]>æåè>è«>è‡>ër7>ï+>ï´¨>ïýJ>ð³°>ïؤ>ì”>æº>æAM>ãV”>Û@•>ÛQO>á_^>ã´>å>>瀓>ê>ê÷î>ë$ÿ>ꘒ>ëQŸ>ëx#>ꪫ>è¡q>å«Ù>ä£>âs>á*2>ß÷K>ÞÞö>Þíž>àlu>â >ââ>ãP>ãýÍ>ä’•>ãy^>âC}>âý>ãñ>ã/I>á~->áôN>â‚>áåZ>áœñ>à‘Ü>ß/®>Þí>Þ>í>Ýx/>ܵÓ>܆:>Üäx>ÝT>ÝqT>Ýa>Ýx‚>ÝxÛ>Ýh¸>ݶ>Üa>Ü_Î>Ü—Î>Üà>ÜÈ…>܃>Ü~9>Ü‘n>Ü“V>Üc>>Ü€>Üu>Ü3×>ÜK$>Ü&Ï>ÛØ/>Û¿>ÛÇb>ÛÓú>Û¸`>ÛdÚ>Û;œ>Û01>Û#>Úë<>Ú‹»>Úbù>Ú]>ÚOC>Ú6>Ù•>ØðÑ>ØR>×”–>Ö¼ü>Ö÷>ÕÉ$>ÕªÊ>Õ¢·>Õc>>Õ<>Õ«>Õ,˜>Õ9Š>Õd>Ô½¥>Ô ý>Ô>Ô„>Ônƒ>Ô[>ÓÔ¡>ÓÍ„>ÓÊÊ>Ó¦é>ÓPÄ>Ó&Ã>ÓJo>Ór>Ó{Q>ÓBE>Ó>Óˆ>Ó!>ÓÝ>ÒÉ“>Òe>ÒI>ÒMG>ÒJº>ÒG>Ñ¡Š>Ño>Ñ[s>Ñ@f>Ðø$>Ðs>Ð4>Ð/>Ð26>Ðg>ÏßC>ÏÆ÷>Ïëæ>Ðû>Ð$&>ÏîÜ>σ÷>ÏH°>Ï'>μ+>Íö*>ÌÕ >Ì;z>Ì>R>ÌN˜>ÌxÃ>ÌmÖ>Ì(¥>Ì5Þ>Ì…>ÌòX>ÍEq>ÍÄ>Í*>Í¥>Ì¿’>̯h>Íá>Í:s>Í¢ ->ͧØ>̧ê>Ë‘ú>ËîW>Ìdô>ËÃÛ>Êp…>ɸ>È÷Þ>Å$P>¸Å>¬[>§Åì>´P²>¾^>Àd>ÂÃœ>ÄÝ>Æy¶>ÇÈZ>Ɉ>Ɉ”>Êt>˯[>Ë€>Ê]¹>ÈÍE>Éáø>ÍMN>Ìà>Í>ÎE2>Ìr>Í!²>Ïï>Ðs>Ï=¤>ÎÒz>ΙÖ>Íô¢>Ëâ§>È9A>È­S>Êa>Ê’:>Ìû>ÌàE>̧>ÌPÃ>ËÁË>Ë|>ÊmF>ÊÃj>ÊüS>Êa¢>ÉÕq>ɳ>Èb>È  >Çr9>Æ@Å>ÅÑ>ÁÆ­>»¥f>¼þÄ>ÃëÒ>ÆF>ÅÈ&>ÁÜ>¿ï½>àÿ>Åã>ŲQ>Ä£P>¹¯>ÂT>Â)ª>Ão>Á>»Ñ«>¿ÔÑ>Äà>Âîœ>Ãjî>Ë×> º>ÀÁ<>Àyˆ>¿±.>¾®è>¾L_>¾àV>¾te>¼ý°>ºù!>»W >ºUí>¸>J>¶ÂR>´„É>²'Î>­Ïµ>ªä+>ªoÏ>«bµ>® v>°ªK>°%>±x8>´²>¶D>¸lÀ>¹Þ">¹úÊ>ºu>ºC->º)ê>»f>»K>»¢>»E>>»@à>ººŒ>º¤>»­Å>¼æ:>¼Ðã>¼Ò2>½Q­>½ ­>¼Õ>»‰ñ>¹¿»>·Ê>·>· -3>¸¹ç>º†÷>¹¨h>¸›>¹bž>¹ðµ>·*J>·Yù>¸X>·ãõ>·\œ>·%…>·ÉÝ>¶ê>¶#>·Ë|>¹®/>¹Þ>·tE>·u>·~>¶ég>·)~>· ‡>·†>¸F}>¸ ->·”J>¸*V>·ú1>¶ƒ<>µ’ù>µoä>µ>µ‡³>¶ Œ>¶¹<>·G>·+ï>·,]>¶üÅ>¶q@>¶Gÿ>¶j>>¶ƒq>¶ >µ­×>µW×>´¥>´ '>³âZ>³øB>³àœ>³º|>³ ’>³˜:>³Š’>³1Ù>³">³ -0>³Ã>³'D>³'>²ãÛ>²’>²Šb>²–¯>²¡°>²Ÿü>²dh>²£>±çj>±íß>±úi>²>±Ò}>±g?>±:>±5 >±/Ü>±-¶>±>°¾)>°jv>°^Œ>°g~>°sE>°m3>°">¯´Ã>¯˜.>¯'>¯¥j>¯¤]>¯w¦>¯ Ì>®Û>®ä…>®è>®ÑÁ>®¶ž>®`Û>®$>®'>®{>®->®W>­ÖE>­_g>­­FV>­RÑ>­T›>­.c>¬P˜>«eè>«¶Â>¬.n>¬Y{>¬F5>¬If>¬‡>«Õ>«Ÿ×>«L>«4L>« >«>>«>ª²Ž>ª£·>ªì>ª¦²>©âÎ>ª,ä>ªl1>ªV›>ª~?>ª§>ªŒ>ªk½>ª8—>ª#s>ª'x>ª!=>ª -À>©õØ>©¼>©Ì1>ªX>ª™>©– ->©q“>¨Ò¬>©õ>©E>¨È¤>©d€>©Y@>¨j>¨{:>©KÉ>¨zY>§Dç>¨Pú>¨úN>§½¾>¥~è>¦–>§Ý¿>¨$L>¦ 9>£p >¤¼´>§t³>¨ûi>§+l>¢9„> 3Ê>¥ Þ>©§ƒ>©Xï>¥Ç>ŸÞÖ>žŒJ>¤J>¨¾º>©¼U>§¨Í>¢¼Æ>›l<>šMÉ>¡ËÛ>§‘p>ª>E>ªÄº>¨&©>¡¨í>—•¦>”¦p>=9>¥µs>ªjª>«ÿ~>ª÷a>¦æË>ŸB'>”Nv>‡³>•&> Yn>§ð>«ñƒ>¬Üæ>«fK>¨"*>¡ŸJ>˜`d>‹Þª>‡Xs>’‰Ð>ž 3>¦…>«R¾>­m>®Bã>­€û>ª 0>¥eò>Hx>ŠÚ>‚é>‚Êè>‘®O>œ^˜>”žž>‰•$>£®Í>®’¦>¯¬û>¯kÒ>­HŸ>¨Š>¡ÇÇ>˜«7>Šþ¥>vb>uU.>Š=®>—ô¨>¡2X>§‚R>«k²>®°I>°Àe>±ƒø>°˜c>®ëï>¬›T>©4Ë>¤ ->™>ƒ}Þ>uÚ>eõý>e9È>‚Ñ ->‘5>š±È>¡*v>¦/ >ªT×>¬Õô>­ÊÂ>®šÈ>¯\×>¯ C>®w]>¬Î%>ªz¾>§€M>£7A>ºž>”ÈE>x0>I»É>Lªõ>\+”>Jè>ŒÆ‡>•’,>›ä8> Xõ>£ûm>§ w>¨Io>¨-…>¦d³>¥(…>¨ >©/i>©Rc>©>¨×¸>¨G>¦„>£¼|> q>œõ¢>—«à>Ž•2>€à>gÚ>J>Ub>yo!>‰‚M>’'¥>˜V>>¡ ?>£/—>£Ô×>¢ë>¡k<>¡¶Í>¤=o>¥v>¡ˆY>{>£ÂM>¥|>¥C->¥:Ÿ>¤zo>£B>¡Äu> ¤>Ÿ‡ë>žYæ>œ˜³>™ >‘æ€>ŒÝ5>‚fŠ>PÙ`>5av>\·Ó>|lC>‰2ƒ>‘co>–ÊÏ>˜Ò>Îg>G>’ƒN>–È>œYÍ>¢ÌÊ>¥lÖ>¤e|>£‚õ>¤>Õ>¤ƒ>¡‚ê>›ä>>¢j>¤Š¥>¢ å>š¸²>ŸR>£.>žKÒ>›M¸>¡¢Á">¢êA> þ‹>Ÿ -&> D>Ÿ(ú>¶>›>—áµ>’ά>‹Ÿ:>}Þ>dwÈ>A?4>Dƒÿ>hØÄ>òÊ>Šñ#>‘ˆÕ>–¶‡>š0>œZ>ž.>  ‰> é> ñ~> T}>Ÿm>Ÿ36>ŸËß> .> ¸>ŸÐj>ŸÉx> N>ŸçT>ŸÿŸ> RØ> ¥>ŸÀ>žÑÞ>›”o>œÖ?>žš=>ž¨„>žd >ž\Ò>T“>›¼)> _>?ð>ž4O>žl>¶ >œ·!>œV>›þ*>›Š>™³õ>˜¦'>—¤>”âÚ>’’ß>VÍ>‹•§>…¶>{«>g&Z>M¶>A†W>U®·>l–ˆ>}“§>…C>‰Ïå>}0>)>’ÓÔ>”£4>–j>—“g>˜Äë>™~ý>š:>š+>›¹>››o>›ä>œý>œW³>œÀ>œÒ†>œ«S>œpS>œ¸ >œÔ >œÔ×>œÒØ>œµV>œWS>œÆ>›÷ ->›÷¾>›öÞ>›öé>›÷ >›õ8>›Íî>›W%>›]>›B>›3>›>šÞÄ>šgG>š=w>š:é>š&“>™½€>™gû>™Z>™c>˜¦‡>˜m ->˜”>—œ–>— >–“s>•þ>•4Á>”Gˆ>“3 ->‘õÈ>b>ŽQ>‹¼4>ˆ½ô>„éþ>€<6>u^œ>h1€>Xϱ>GÑÅ>A6Ð>N3Þ>^oÂ>lat>x">>Ô>… v>ˆIü>ŠÊ->ŒÊ¨>Žl¾>¿v>ç>‘M>’)>’p9>’ðÛ>“.è>“I6>“Tv>“žÎ>“åï>“Bý>“'Ü>”á>”*">”*°>”)Ü>”*>“hI>’D¡>’Æ·>“Eé>“LZ>“4Ã>’ß7>“.>’ì'>‘—Ã>’k_>’ðÌ>’Š+>’oÔ>’o>’nÛ>’d{>’9ï>’M–>’/#>‘¸>‘‡L>‘$>‘&Ö>‘†>‘Ž³>‘Gê>† >”J>²g>³l>³i>±>‚ >>×ç>ÖB>Íw>£p>G"><>Ž÷ä>Ž÷´>Žï°>Ž z>Ž1›>ŽK>Ä>[ú>$#>Š>!î>Œ”š>‹òº>‹üE>‹¢x>‹:ù>Šª¯>Š'>‰]õ>ˆ‹Ç>‡€V>†&“>„‹è>‚’>Óð>z®õ>pYñ>eÇ$>`YÑ>TÙ>F‰1>6~^>1žÚ>?,³>Må5>Zt >eQÏ>n[©>s½œ>v?×>~u‚>Å>ƒ,¿>„F\>….;>…Ô;>…n9>ƒdj>ƒDl>ƒ N>†Xí>‡ñì>‡ìû>‡ÿ€>ˆõ>ˆ A>ˆ A>ˆ A>ˆ A>ˆ A>ˆ A>ˆ A>ˆ )>ˆ÷>ˆ - >ˆÍ>ˆ§>‡ìE>‡Ï¹>‡ag>‡.8>‡+t>‡+q>‡+q>‡+q>‡+p>‡*‰>‡ .>†Ÿ>†Xe>†MŒ>†N`>†M>†C»>†1u>†Eq>†?H>…Ý!>…|ù>…oý>…oÎ>…oÎ>…oÎ>…oÇ>…k¥>…-<>„´d>„’¹>„’Ä>„‘±>„‘è>„‘ü>„‘>„q‹>ƒù‘>ƒ¸±>ƒ³´>ƒ–õ>ƒ+5>ƒv>ƒ±?>ƒ›ê>ƒ)k>‚¼Þ>‚3‡>‚ˆÆ>‚´ >ù>‚#^>‚§ô>‚X>‚2>ø¤>øŠ>øŠ>øŠ>÷ò>ß>kj> ó>¯>J>î>€þQ>>€âÃ>€g>€>v>€<é>€<Þ>€9f>€!u>î«>×>~Á”>~¾/>~¾+>~»Î>~tp>}^`>|ÛÃ>|ý¢>}}>|Òà>{íÃ>{Sõ>{8«>z° >yÒ=>y‡Ž>yÀ>x">wb0>vA >u >sÕ¢>rG9>pTŸ>n2>k^¬>h:>cê…>^–w>X_>P >FŒn>;Vô>-Ò”>ß>"¨->1¨>=['>G÷é>P·M>Wsô>]0ˆ>aÉ)>eHp>h -w>j2ø>l¤>mg>n‘Ý>o8Æ>p „>pÊU>pàÙ>pàò>på>qHÏ>rAè>r™N>rœt>r„>ré>rFy>rŒA>qö>>q´>pâ>pá>pá>pá>pá>pà±>pà­>p•Ñ>nãø>o´Ë>pÅó>p:>oS‚>o&Z>o%x>o%x>o%w>o%>oý>n£Ð>md>mÊã>m Ì>mlÍ>mi7>miÁ>miÕ>miÕ>miÃ>m_ÿ>løý>lHÑ>kÄ>k®>k®4>k®3>k®3>k®1>k­»>k¦G>k">j-á>ióù>iò’>iò‘>iò‘>iò‘>iò‹>ií–>i“è>h«,>h>‘>h6û>h6î>h6¼>h6¤>h7ÿ>h/>gëC>g8ã>f‘ï>f{>f{M>f{L>f{L>f{M>f{H>fuþ>fö>e #>dÁá>d¿>dÀÉ>d¿Z>d¿{>d¿ª>d¾ä>d“6>c«>>c&>c>c>c>c>c>cò>böé>bVK>arŸ>aI>aH>aHe>aHe>aGw>a#>`×°>`Ô >_ñ>_¦>_ŒÇ>_ŒÄ>_ŒÄ>_ŒÃ>_Œ„>_ŒŠ>_z>^Á ->]î¶>]Ñ{>]Ñ!>]Ñ!>]Ñ!>]Ñ!>]Ñ>]Çê>]Or>\f°>\ð>\>\I>\T>\D>[øÌ>ZðS>Zùv>[0”>Zw>ZZ4>ZYÜ>ZYÜ>ZYÜ>ZYÜ>ZYÖ>ZSS>Y×ã>XÝù>XŸ=>XŸj>X¨>Xž%>X˜£>XmÏ>X|r>XQÕ>WT×>Vçy>Vâœ>Vâ˜>Vâ˜>Vâ˜>Vân>VÎH>VH>UBÀ>U&¯>U&î>U&ö>U&ö>U&ó>U#}>TÄß>SÖ>Sn>SkU>SkS>Sk>SN¾>Rzâ>QÁv>Qf>Q9—>Qf>PÃn>PÏ>Oè/>OHv>N^m>MèÕ>L߯>Kó>J®S>I:`>G|›>EuË>Bçä>?´ >;©Q>6¯/>0»Ë>)‹û> ö&>€)> l>ZK>­p>S>'ƒ9>.x´>4 Í>8œi><‚‰>?T>A¦>C€z>Eœ>F#˜>Gg>G’)>H“’>HÿS>H«±>GÔ¬>Hµé>I9>I„>I>I>HýÊ>HÊL>H¬°>H“ >Hö>Ih>I‹>H æ>Hc1>Hó$>Ik>I†>I†>Iy>Iã>IÜ>I¤>HÅo>GÇ>GOh>GIè>GIä>GIä>GIä>GIã>GIä>GIä>GI`>G1Z>FÇÖ>E÷ >E”>E¤>EŽ6>EŽA>EŽA>EŽA>EŽA>EŽA>ED>EVl>D[²>CÙE>CÒ¥>CÒž>CÒ4>CÓ+>CÒÑ>CÒN>CÒŸ>CÒm>Cº5>Bêo>B)ÿ>B>Bý>Bý>Bý>Bý>Bý>Bõ>B8>B$>A6S>@p>@[€>@[[>@[[>@[[>@[Z>@[[>@[[>@[1>@E>?yÈ>>´ >>Ÿ“>>ŸÜ>> L>>ŸN>>Ÿ·>>Ÿ¹>>Ÿ¹>>Ÿ·>>›4>>*E>='Š><åw><ä><ä><ä><ä><ã‰><åX><ãI><ÎÒ><#{>;R>;):>;(t>;(s>;(s>;(s>;(s>;(t>;(t>;(>;>:#>>9y >9lŒ>9lÐ>9lÑ>9lÑ>9lÑ>9lÑ>9lÑ>9lÆ>9aç>8¿À>7Õ„>7±’>7± ->7°ã>7²->7°©>7±*>7±.>7±.>7°Ý>7">6ª>6¤>5õš>5õ>5õ>5õ>5õ~>5õ>5öÂ>5ôý>5ób>5 w>4—Ë>4<ˆ>49ê>46ß>3ðY>3Ð>3ú–>4J>49>49¹>4 d>3JÑ>2Žb>2~)>2~G>2~H>2~H>2~H>2~H>2~H>2~H>2~>2eW>1qƒ>0ž›>0½I>0Ã>0Âß>0Â_>0Â¥>0Âf>0°Î>0† >0µÂ>0©>/Ðu>/j>/>/¨>.Ô>.ãï>/û>/`>/³>/>/Ä>.è³>.>-WÁ>-Kn>-Kb>-Ka>-K>-A{>-#þ>-\>,à¢>,¼§>,’g>,rÝ>,M,>, ”>,'>+Øg>+½>+ŽË>+cŠ>+R[>+0 ->+ Î>*çl>*ÃR>* J>*{>*W,>*2ã>*š>)ç¢>)Àû>)¡¬>)€q>)_õ>)7&>)>(ô:>(ͳ>(¥Å>(‡ >(^^>(!•>(Ø>'ö>'Ñù>'­µ>'‚‚>'04>',Þ>&Ýô>%[>%nø>&\Ÿ>%ß->%³Þ>&EP>&,j>& ->>%ê6>%§ü>%ú>%U¥>%V >%6Å>%ë>$ïý>$Ñ!>$® >$Bõ>#x´>$‰>$µ>#ú>#Ö¹>#¶Ô>#Ž¥>#iI>#9>#j>"ÂL>"ËR>"®6>"›Ø>"~ >"Y—>"4¬>"Ð>!òT>!ÎB>!©–>!‡a>!fB>!<è>!ê> üú> Ûœ> ¶ü> ‘Ú> nÎ> L -> +> ´>Ï™>´W>•”>s1>NT>#ü>Ú'> -™>­)>î>n¨>F >x>ôŸ>Îã>©µ>€b>XŒ>0->º>Òâ>¢w>oŠ>N>õ9>ØÑ>›ï>[§>U>Òÿ>ˆÕ>;†>Ü›>wz>!>€>>èÉ>8º>k>m>1°>Q6>ɵ>êx> KN> h>@>Iþ=õ‹=æÿl=Ód=ÐHO=ãu=ñÁê=üô9>>£ç> òˆ> €]>u²> -X>@‹>2N>û1>•ñ> †>jD>¯‘>äç> õ>- >>‹>Yí>`è>Yë>c«>d1>IÅ>6W>4'>$ß>À>ök>ã!>ÕŒ>¸Ê>§k>‹¦>yÝ>]Ÿ>FH>(ô> 3>ôz>×ñ>À6>žã>T>il>J²>,Â>¾>òö>Ô¾>¸¦>š¾>|ÿ>f>H7>+>>Š>ì>Íð>¶>—y>zÌ>^>?=>"i>>æÄ>Éõ>­ ->Ž<>q">O;>/t>0>ï >Ô±>¹T>œø>{j>Z">=ˆ> >O>ä·>ÇC>¨s>‹\>oi>OB>2ò>g> òv> Õ%> ¼> • > wp> fs> J.> (?> â> ñm> Ö:> ¶Î> ˜¥> |<> ]ê> ?o> "ç> ¡> ä -> Ã> ªd> Œ¥> p> Q¿> 3`> Û> -øg> -ÙÀ> -½> -ŸŽ> -s> -c¤> -K9> -)Î> -=> ïE> Óœ> »ú> ›> > aÖ>ÕÃ>×>®D>áŽ>¢>1>6†>•@>8ð>A¥>'>Ò>ì˜>Ò'>³>•™>|Ó>JÎ>!>î>øÒ>æV>Î~>±>“ú>u¥>XW>=">j>—>ëŠ>Îi>µÍ>–¶>h‡>X>C>$á> >î2>ÑŸ>·»>š>|f>]d>?>(ø>>ñ²>Ù]>¼ >£á>…’>fŒ>P.>-> W>ôl>Ø3>½²>£ß>mó>Kö>=>0™>ˆ>ýI>ä>Ê}>¬·>Ë>sÓ>X>?ÿ>"’> -=>î˜>Ó->º°><>„£>fV>H>/g> =ÿñU=ÿ¾¡=ÿ„=ÿSù=ÿþ=þå·=þ³W=þvó=þ;€=þk=ýÍ[=ý=ýb“=ý/;=üûJ=üÁ*=üý=üW,=ü"¤=ûï[=ûµX=ûŽç=ûT¥=û".=úî=ú³|=úƒR=úHY=úç=ùà&=ù¦ò=ùvi=ù=H=ù¿=ø¾ò=ø$Ó=ø\6=ø7­=øÇ=÷ÃÇ=÷–›=÷Yj=öÛQ=öô„=öË=ö–Í=öi=ö3£=õø2=õ¾A=õ‡È=õ[©=õÏ=ôÜó=ô -=ôXœ=ôM=óVã=óÝ=ó¶V=ó€¨=ó1=ó =òé=ò¼¢=òc=òQI=ò)ò=ñð`=ñº³=ñµ=ñW•=ñ&D=ðì€=ðÃÈ=ðŠÖ=ðS•=ð=ïÛ«=ïÀ‹=ï†B=ï\Ï=ï"‰=îî8=îÄ -=îŠP=îbñ=î)M=î -=í¦T=í§=ìê‰=ëQÌ=ìu=ì¿Œ=ì™3=ì`“=ì(¬=ëþ'=ëÅ=ëÀ=ë?ú=ë8Ó=ë=êËÃ=ê—_=ê_=ê=ó=ê=éÓ=éŸ -=é{`=éE{=ék=èæÇ=è³=臾=èO=è%Ä=çÏ”=篂=çŒt=ç`¾=ç"V=æ÷þ=æÏ=æ›=æI›=æ0P=æ‚=åÍ=嘤=åGA=å/õ=å »=äÕ`=ä­c=äoG=ä$Ì=ä›=ãåw=ã¶î=ã‰Y=ã=€=âðš=âêÔ=âÄÁ=â›=âa3=â8Š=â´=áßð=á¨=á{R=áH|=áÖ=àía=à½0=à&=àWÖ=à0‡=ßõ=ßÕÇ=ß_?™°F?™?4?™?™eÍ?š0û?›{?›œ?›·,?›u£?šóÙ?šKŒ?™ ì?™"…?˜ñ&?™ #?™VÀ?™¬§?™Ñ?™›?™6ò?™ á?™1P?™@|?˜Ðf?—ÿÃ?—nC?—¦å?˜’Ÿ?™“š?š?™×-?˜ýð?—áŒ?–öï?–˜}?–ÅÔ?—a?–ûõ?–k†?•¦Ï?”þg?”­%?”ä?•¼Ö?—Ã?˜J?™V?™m¨?™p½?™c|?™cb?™e”?™<í?˜¯¶?—¬(?–‚Ž?•Ì‚?•ìi?–³N?—“ ?˜l?—µD?–âù?–(Ù?– -–?–cg?–¡,?–‡?–j?–®Ÿ?—O?—ð>?˜?…?˜Ä?—™«?–ÔJ?•ìˆ?”Ò?“nC?’²?‘‚ù?’?“†?•/?–Â?–„ž?–}?–HQ?–5°?–Wm?–kQ?–"?•}­?”Ði?”\Ÿ?”??“g?’jé?‘Ma?‹]?u?‘þ?’~?“3l?“÷‚?”÷?“P†?’RO?‘ìç?’‡?“„3?”*?“Ï(?“d–?“ç?’Å?‘¡»?Þo?Ê“?‘P½?‘» ?‘‘Ö?‘Ù?ý?‘¦ ?’ßr?”\?”¿Ê?”ïü?”çÇ?”×?”¶?”nÉ?”÷?“•²?“=º?’ù°?’°é?’t ?’2?’å\?“Y…?“˜~?““î?“TÙ?’å²?’W?‘ÊÁ?‘„À?‘¾÷?’SO?’Ä?’ S?‘ã -?‘ y?–S?\û?³¼?ŽÚ?˜b?å{?[U?‘ù?‘ûÄ?‘âp?îÐ?¨¨?ŽÇ?ŽÁw?n?Q)?‘"Ý?‘ÒÀ?’Uq?’£®?’Á“?’³4?’lX?‘Í?Áâ?U?£f?‹çù?Š¬ð?Šy?‹BÉ?Œr ?xŸ?Ž?U?ŽÔü?Žþø?Ž‡¬?ÊL?Šù?Ž)z?)š?µÒ?sÚ?Žª›?³ú?Œ¤?‹ªr?‹D„?‹o?‹î€?‹ò ?Œs?Œï›?Žlq?ÊZ?…Ä?›Ö?DU?Â?dd?e×?¹m?;?cÄ?k?Õ?:0?ê&?Œ‹k?‹¦y?‹q‚?‹”Ñ?‹Ž0?‹c›?‹ŸG?Œn?2!?0?Œyn?‹å^?Œ)D?&a?Ž6?Ž×@?ŽåÃ?Ž|Q?åN?€S?{Å?ª±?Ÿ?Œå?‹wª?‰ó¦?‰8K?‰ {?Š·t?‹¡Z?‹Ñ4?‹a¼?Š¶?Š '?‰‹0?‰Dù?‰?ˆÏ8?ˆ‹$?ˆZ±?ˆjº?ˆþª?‰ñº?Š³Ò?‹ -?‹GÔ?‹·Ä?ŒJ”?Œ»V?Œ¸>?Œ‘?‹7Ð?Š…Z?ŠbH?ŠÂŠ?‹:Ó?‹Jp?ŠÎv?Š%ý?‰ÉW?‰Ð?‰ûY?Š!ã?ŠTã?Š„(?Š\Ú?‰Ør?‰~ß?‰©Œ?Š?ŠIÏ?Š™G?‹÷?‹‹ç?‹Â?‹Â¢?‹ ˆ?‹h\?‹3ë?‹–?‹7?Šäó?Š³Î?Š”*?Š¦ý?Šå‰?‹’?‹µ?Š¬C?‰ÀÞ?ˆ‘æ?‡¤…?‡h?‡Òc?ˆo?ˆÌ’?ˆ×Ò?ˆå?‰EÅ?‰æ ?Šot?Š§g?Š’?Š6é?‰¸!?‰: ?ˆõò?‰ -M?‰bz?‰È¥?Š'?Š:ª?Š6Ý?‰äU?‰8?ˆƒ»?ˆFR?ˆ?‰+?‰—F?‰ÑÁ?‰çÊ?‰Ø'?‰–?‰(m?ˆÃ?ˆ¦?†”²?†=Ó?†,?†Oû?†œ§?†Êe?†×‚?†¬H?†Ì?…?’?„¹Ä?„ãÉ?…s?…¿ø?…i`?„¢¦?ƒæŒ?ƒ|?ƒ|¼?„Ù?„ù•?…å¼?†aÊ?†G?Úê?~4_?|àø?|ÁD?}œq?~ h?{?€!?€Z,?€{?€‚ñ?€{?€ht?€L6?€(?€?±?k\?3?~ø_?~°ê?~uÄ?~Bü?}´ô?|‚Õ?{=M?zî§?{Ö˜?}'®?~ä?~1b?~Û?}ôØ?~Ò?~a?}öú?}ån?~}?~AI?~&Ë?}¿?|€,?{1Á?zÄÐ?{©l?}G?~Fá?9ß?€à?€P­?€^(?€Å?~ØŠ?}[1?|ü0?~3k?€Ø?€‘ç?€~Æ?Ší?}œ?|¨c?}D?~y-?~ûŠ?~u?{ã€?y“Õ?xT?xI¹?y"?zÁ¶?}×?Vú?€ƒv?€ôC??ƒeS?ƒ<Ó?ƒ:š?ƒa‡?ƒÍ?„x6?…–?…OÏ?…1¹?„è`?„•y?„b?„l…?„™Å?„Å´?„ô÷?…/Å?…T?…;Ü?„ý?„Ý–?„÷ê?…7?… ?„ö?„à|?„Íç?„ÂI?„¸;?„›Ï?„tI?„Z8?„Uó?„kµ?„šÂ?„°·?„S˜?ƒnÙ?‚j?ÌA?×V?‚y£?ƒ^b?„$?„‰?„Éï?…N?…,é?…×?„Æa?„ -?‚–?€­Q?~ý…?€#k?‚+¹?ƒö¾?„‹”?„Z·?„1?„x?ƒ`?ví?~7ñ?|2>?~}B?l?ƒ' ?„ ?„K`?„cp?„Zn?„?Æ?„J[?„y"?„š ?„·:?…Z?…²â?†D­?†t¯?†B?…ÌÊ?… ï?ƒì?‚Ñì?‚Œ1?ƒ>5?„…?„No?ƒìÍ?ƒ…B?ƒµæ?„ƒ’?…T?…š6?…/?„<Û?ƒJ?ƒó?„Ð?…¤,?†Â ?†éG?†T?…l!?„ŸŠ?„…?…EX?…ý ?…Ó'?…EÎ?…el?†Zo?‡kÀ?‡òm?‡Ÿc?†9ž?ƒýv?‚;?‚gÙ?„S?†k«?‡¶ ?ˆU¸?ˆª?ˆ°M?ˆ I?ˆb ?‡Ñ—?†ûž?†XC?†R ?†Çû?‡cc?‡ù÷?ˆqÙ?ˆ¥[?ˆ™K?ˆ?ˆ­´?ˆÞQ?‰s?‰Pª?‰ ?‰Ìö?‰¼?‰ŠQ?‰PD?‰*T?‰KN?‰ª+?‰ëÌ?‰Éý?‰cî?‰Ú?‰Ù?‰;5?‰8U?‰:¢?‰¥6?Š}h?‹T«?‹ãÜ?ŒIô?Œ°î?) ?Â?Ž6F?ŽaÂ?Ž´³?Ž±š?ý?Œy?‹´×?Œsf?v^?• ¢?™ã?—Dz?”[*?“ùô?•¶?“+Ò?+Û?’»?¥s?ªŒ?­}Õ?¥®Ã?œ†·?ž -I?«J6?¹¡u?½˜œ?³öØ?£íM?›?¢k…?µÎÅ?È]*?ϱÞ?È€!?µüo?¡œ ?—¼ê?ž‹Ï?±¦*?È ?Ù}y?ßý/?Ù>y?Æ¢Ô?­ö?› -?™Ç`?ª˜?Â_Ç?×{Y?çŽâ?ñÃ?òß?ê3?×|„?¾N¨?¦@Ž?›2Ö?¤G÷?»ãZ?ÕXG?çû“?òò?ø`T?ý"v@9·?ÿbi?÷¼à?èú?ÏØ?³m?œßf?˜aM?¥¶B?»ŸÖ?Òá²?èV?ùV@-@@#í@!Â@ }@õj@êô?þŸ[?óX?â ½?Ë€´?° ,?š'8?–ß?§u9?Ä?Ý{ð?ìÎ*?óÓ’?÷;Ð?ø—?öV?ðyÞ?êûÛ?饅?ë—?ïG“?ô¾b?úI?ýŽ/?þÎ]?ü´?ôŠO?ã?Ç©h?¨Â¦?”ë?˜Vg?°ŠÙ?Ï d?çñ^?ø¤ý@´Ç@MD@¨½@ëÍ@ e@ •@ Œa@Øg@jü@n·@ƒ@Åz@ æ™@ -L¤@ -…G@ -¾Q@ -¸@ -&i@ë¢@ݧ@¡?ý3?íHŸ?ÖAø?¹nI?ŸÖ÷?—Ð?§#P?ÃÑh?ßu`?óI?ÿÎ@²Ý@Ö`@ñâ@Îu@ÿ @ -Qi@ &ì@ d5@ ]š@ -í‚@ ^@¦@Xb@F}@6É@I7@Î~@á@0u@•–@‡À@ºq@$)@—å@q!@Xù@bä@l@ý -@A>@)¸?û±Î?ïˆ]?ݯp?Æ?ªÕ?–î?—M¦?«VV?Åé9?Ý'?îÃB?û/³@ço@¶¿@ÇÃ@]Y@ÜÝ@‚ÿ@¡@q8@Ÿ_@Þ6@ k@›k@£0@{”?ùÎ ?ñr‘?ë;}?쳜?ø;@à`@ö@‹L@T?ù\T?ðxv?ò»?üá¹@£@¢Þ@×w@@w@H@XÌ@›è@cí@ÖÈ@~Ë@ûg@ƒ[@q@×@?î@æy@‚#@@õ{@þ?ü.}?òØ"?ä'«?Î?±+>?–Û”?,Ö? „?½Ž†?Ø^q?êÍq?ö&[?üò¨@¡G@Q@Í$@¨@ 5?ü´Ï?ý/@K@¹@­{@%P?ÿ™?ÿgÖ@Ï@î@N9@߉@Ÿ"@äh@Ïy?üð#?ý¹û@;5@fð@NÊ@%#@—Z@7Ê@Kï@Ù5@{{@Â@—k@s@H÷@s@|ú@jÎ@?ý’7?îs?ÕçU?ÃÎ~?É÷Å?àœ?ó…A?û‘ï?üß,?ý÷?@ÿ4@ZÝ@§F@±q@à:@îg@¾@_2@ú)@5Ä@_&@„ @€@e@Yù@J‡@¿@Üt@£(@~¨@oP@v@öò@c‘?þ]X?ü‰#?ùAä?ó£ö?ë4à?Ûü?¾®[?˜à ?wP?k•?ˆB¡?§ç‘?Å~?ôŸ?òò¤?òíB?ôË ?÷A ?ø·?øå?ø…&?ø-"?÷ç ?÷{n?öð*?ö‹Í?ö„-?ö¶j?öÅg?öcT?õ\Ú?óÈ?ñþ=?ðÁ?ìÿž?çò²?àœÌ?Öý?Å¢Í?­)~?’m‡?…‹S?‘ ?«Å-?Ålœ?Öñi?ám?ç‹q?êË8?ë÷ ?ìGö?í=?î„/?ðMµ?òH?ó®ã?ôºP?õ—?ôi“?òÇB?ðr?íß ?ëzq?êmà?ëÇx?íéÎ?í‚¿?çÈÀ?Ýë?Öä÷?ÕÃE?Ö®?Ø—E?à¬?ê{?ï¶ô?ñªý?ñÇM?ñ,?ð»Ó?ñq?ñÕc?ñÍä?ð<?íq ?êÝ%?éàZ?êƒ?ìºÄ?ïd&?ñ)L?ñfÜ?ððc?ð µ?ðl:?ðcâ?ðÀz?ñ+?ñs?ðñ+?ðë??ðŽ¨?ï™?î?ÄóÚ?ÇÒõ?êª?¼ü?¸)X?¹ïâ?¼6„?¿Œ™?Ågk?ÉpÉ?É7­?ÇÎ?Æ’?ÇõÈ?ɧê?Ê£T?Ê}à?Éc?Æ>Œ?Ãøt?ÄŸc?Ƶ?Ä‘%?Á¤)?ÁÕI?Ä0ˆ?ÄøÖ?Äa?À{4?·(o?®*?°˜e?ºæm?À3±?¾Žm?½‘>?Àë?ÂGæ?ÂÕE?Ó%?Är?ÄUÊ?Ä¿?ÄñÅ?ƈ?ÆÑô?Ç­?Æö?Ç+W?ÇL\?ÆõÈ?Æ¡í?ÆÈã?Ç1–?ǃÉ?Ç…ž?Ç0°?Æß?Æ“2?ÅÉ…?Ä*”?Áén?¿Y¤?¼Ã?»¹n?½CP?Àþ?ê›?Å–?ĸÃ?Ã…5?Á"ã?»Ãì?¶$?¶Ë»?¼]ã?¿r_?½˜s?ºz‡?ºœ?¾#;?Á Å?Ãx]?Ä-?Ä8)?Ã÷Ï?õN?î?Ãà˜?Ãö!?æ=?Ã?Âïü?ÃY?¿Þ%?ÀRñ?À—Ð?Àj?¿áò?¿Dî?¾ÝQ?¿x?¿ÊE?À@U?Àu‘?À­(?Àºe?ÀX?¿î ?¿äm?¿ìç?¿Än?¿y7?¿5K?¿)Õ?¿<Þ?¿?¾Ç1?¾¨2?¾½Ñ?¿?¿d8?¿—É?¿A?¾Áä?¾l?¾-á?¾!?¾2•?½™Ä?»Íh?¹ú‰?¹Ôf?ºçt?»ÒO?¼k†?¼Æ×?¼¨‡?¼W–?¼,±?»õU?»hô?ºi©?¹Cb?¸ ×?¸†T?¸é?¶c“?µ9C?¶oZ?¸ŸÂ?¹Õ“?¹í~?¹bô?¸‡?·Î?¸?¸æÞ?¹‘æ?¹×G?¹½Ì?¹h$?¹A¨?¹C?¹3?¸¥?¸E´?·ìÝ?·a’?¶…!?µÇ ?µÑ:?¶Q[?¶i¤?µþ;?µ6h?´+ï?³sL?³‚ˆ?´M?µ&¦?µ˜g?µ°G?µBŒ?´H€?³…À?³aô?³xö?³}¶?³d -?³K?³ V?²‚ö?²Š?³_?³ûa?³ðË?³À"?³¼ö?³–Y?³9Í?³(Ä?³dh?³³ÿ?´v?´¯?³®’?³Ay?³'y?³-?³AL?³†á?³U1?²ˆ¥?±I?°‹¨?±$?±è¶?²`?±­b?°çè?°B#?°IÓ?°–“?°h?°É?š§b?š÷?šÀ+?šUÚ?™ÓZ?™£1?™Ç ?™& ?—¶?–Àý?–Õö?—0ñ?–ŒD?–o?–Ä›?—<Ž?–½?–¯:?— -¯?— -?—MC?—•>?—aR?—dè?— ¸?—†f?–~ä?’vo?ˆ=r?{Þ?hŒ?d[?“Î ?–/•?—›:?—l?–£ö?–tF?–^¿?–'$?•8?”-?“Nb?“ß?”©?•%²?•:è?•no?•ˆ:?•:³?”i ?’¾­?ŽèØ?‹(?Œöñ?‘–o?“Ï ?”?€s?€uœ?€1?Ë;?ƒ‘?e#?p?d§?ø*?¨M?W?~ÿ­?(ç?9~?~À4?}¼,?|ˆn?{â;?|yŸ?}H?}qÂ?}b&?}cÊ?|™&?{'¢?zÌ?{¸ ?|>h?|6:?| ¸?{ßæ?{È?{–O?{;y?z·œ?zŽ?z¸­?zuÈ?yg‚?x«í?xÒÑ?xÐl?x§~?yž?y~t?y[à?x¡Œ?xOš?xß'?xèd?xS·?xvå?xÅo?x¼Å?xƒ´?x¸?x5…?xO¸?wÞ¿?wuø?w@?vÞç?vJ?u®ã?t?I?rÂÚ?sµ’?u d?t+a?r®Ã?rÈ©?s€-?s¶.?tP?tͳ?tú‘?tÛ+?t# ?sZŠ?rç?r«s?réS?s£S?sëÕ?s‚§?røx?rxp?ri?qï4?r5?qâ’?q‚A?q+ÿ?q4·?q f?p~2?pc?p 8?pbå?pÁs?påÍ?pxÝ?oÍV?oB¬?oT²?oæ÷?pj?o¹‰?o?n× -?nšß?mÝ÷?m -W?lAò?k|?jpÑ?jÿ¡?la.?m.†?l÷w?lÐh?mˆ?m/°?m,u?lÅw?lA?k¦¾?k©'?ké?lf?kn?j­}?jÖß?k«?j¶+?j¢9?jn2?iäÁ?iè3?jü?j£?iÄø?iM,?i?Û?i q?hi?gÑ·?g µ?h+6?h¯?hœ£?hÊr?h“?h†ï?h°?i#?id?h‘€?gþl?g|À?g2?fÔ?fæ?f·„?f$:?eƒV?d÷…?dÛ)?dYñ?bÐ(?_À?W¥?Saß?W~(?]É?`<Ü?b&Q?bü±?cr½?d­?d I?cŒU?bDÁ?_éÔ?^”?_Ò¶?b¹l?c¯?c‘9?cfš?c¨?bYØ?b+ù?b}â?b«¸?bj?a0j?aÏ=?cj?cuO?cY?cY¨?c{“?ci)?c‚ª?c·?bí?b[?bv[?b¯ ?b¸V?bî¿?b¦ê?bIo?bºŽ?c‘?bR¢?a*¡?`0?_x?_?]tE?]=µ?['î?Tb?Pé¢?WW?\“’?]Š{?\êç?\b??[äÞ?Zþæ?WŽ³?H"ž?1WF?7ˆ?M×?P ?>¹ð?7»õ?IîŒ?V?X?Ë?WZØ?WØq?Y¡á?Z[Ä?Zm?Y­Þ?YgÙ?Y;?XlU?WøÙ?Wá!?WàR?WT“?Vîû?Wq¾?W*8?V6Ø?Vj¸?W9?WJs?W -ö?Vö;?V× ?W -Â?Wl?WK6?V­Ž?VE2?TÅc?R~?Qí§?SGÕ?S$¾?Ráá?Sƒ?S\¡?RðØ?R-þ?R/i?PÚ8?L •?I¿Ç?L.\?N®Ù?OÙ?P:É?P¬k?OÃü?OW3?Oàõ?POL?Phr?P† ?OÃû?Noñ?KY)?Fª|?Gu…?L„ˆ?Nêë?OV?Nä?N¤¸?Nëû?N²?Mx?M(Å?M/q?Kõô?Kõ?M~Ò?Mè ?M¸?M˜.?Mˆ?Mfä?Mb™?L‡g?I¤‹?F–h?G–l?JMÑ?Kì^?LˆÞ?LŸ×?Lz¹?L`Ô?L‚d?L<Ñ?KÄl?KÉ?K½E?KÈ?Küæ?Kñ ?Kœî?Jô÷?J0:?I‹ ?I2ñ?IZ«?I¶6?IÖ?I‚Y?HÞ¬?H«Ï?I§9?Jg?IãI?I߇?IÍ!?J -ñ?JgÒ?JlÒ?J8?Ip¬?HûS?I‰Ó?I‹Ë?I Ô?Hâ;?HìU?Hº4?H±Ó?I?I'?I+{?I~Â?I²V?Iwj?I?HuX?Gæ`?H?H*ê?H2«?H=z?Hd=?HqÃ?HFP?H"¿?Hš?H&?H;Ð?H 5?Gnç?G??GÆÆ?H&?Gzj?F±„?Fk?F„©?F–\?Fíš?FÓ§?Fšï?G¹?G„U?GsC?F÷š?F±?FÔ?F×Ù?F›À?F{ß?F©å?Fdz?FºÁ?F¹`?FŽI?F<ì?EÎG?Ef?D³?Dã?C}Ä??zé?= ??Ð?CV…?D±’?C‰â??¾Ü?<ª#?=Ùg?A9ã?B¦Ù?Aò‰?@ïQ?@©ˆ?@Ðþ?@ê}?@¦§?@'—??m5?>*•?=€¥?=ì¾?=éw?=È9?>yÐ??•??q$??†??ƒî?@+¥?@Úb?@õl?@²?@=À??Ÿ ??ªí??Å -??DJ?=•?;MP?;V?=1?>ó??Ï#??Ã]??²Â??¹?@c?@Œ?Aù?A!Ï?@ý.?@MÅ??”%??qÕ??–Ý??ŸD??‹7??ƒu??MÚ?>ùÃ?>¿•?>#5?;k?8:t?9Q?<Áq?=9í?<Š|?:WØ?5¢?6²è?;Áë?=ûg?>®‘?>æð?>¤6?>OE?>2‹?>&X?=Ä?=IË?<Ù¼?< x?:ÝÕ?8Ì'?7ž?8ã?:(S?9y?4²a?-+Q?*EZ?*oi?'ß?"úÃ?#AÖ?*L-?1"ê?4.f?4ä‘?5mÄ?7 M?8ê?8›?7äð?7”Ë?81Æ?7{³?6©ß?5:Ø?4©ü?69É?6¶ò?6Ó­?7`?7&?6i?5Ù?3»“?5R?7cJ?8ó?8,?8E¦?8û*?8ê¤?7á«?6°P?!Ò? ø?!5b? ¡=?X?½¤?ëq?sã?áí?ñ_?Ùa?µR?¨¿?o?ªƒ?×?_z?P?’?gÆ?£†?V}?Œ/?FÊ?Út?õ?¯@?Õs?Í?iB?Ä?r²?è?¼ÿ?fH?ýZ?æ¯?˜„?E‚?k²?Y+?7?¶?Iû?(›?ú$?ë8?îò?ß7?zK?—ü?Û?É?kV?e¹?Ò‘?+ƒ?!2?³Ö?²ï?ß?lm?€?…–?îo?ñ?1g? ‰?ÕÚ?½?™ê?”É?é?y²? ?x»?N=??àÍ?É?Êñ?¶M?ˆf?dÆ?,ß???úÿûL>ÿÉ>ÿ‹Ÿ>ÿ+Ú>þ¯Ô>þ¤Â>þªÞ>þ~º>þC¸>ýÿL>ý±H>ýuF>ýTƒ>ý.N>ýÃ>üÒ&>ü–c>ü\å>ü'|>ûõ^>ûÃÝ>û~)>û;>úù±>ú° >ú} >úsˆ>úV>ú&3>ù÷«>ùÄ>ù“ó>ùJb>ù¡>øð.>øª,>ø±#>ù­N>úVR>ú6,>ù×>ùl1>øøÊ>øy>øÕ>÷ä§>÷–¼>÷9—>öÞ>ö‚ù>ö5ý>õðg>õ¢z>õ\>õ“>ôÌk>ô†n>ôC¬>ô ´>óÏ>ó’>óVr>óe>òìN>ò¹þ>ò„Í>ò\ì>òB`>ò>>ò#7>ñ¤®>ñ\¶>ñã>ñ>ñ"2>ñ/E>ñÁ>ðä§>ðúƒ>ðß¹>ð“Þ>ðGŠ>ðW[>ð>ðƒ>ð£>ïÌË>ï´Ø>ï­7>ïk#>>îPï>íÁ›>íY?>ìÛŠ>ìn×>ì Â>êºC>ëOz>ëºI>ë+->ë” >êè‘>èÆà>ä_>åpg>é]>ê$«>ê7ë>éð>éæ,>éÔ>éÁò>ê]¶>æâß>ßù>â§>éù>ë >êô>é¨>éç]>éÜ°>éÇ>éæq>ê d>ç¦'>ä0™>ægŒ>äÿ(>Úâ±>ÛU’>ää>ç¶>çÅ[>窿>ç]}>æ_Á>æL•>攚>çJ>çAk>ç - >æÄ>åK>åqô>åæ?>æ;Â>æ>å¹Í>å>ä† >ä6¶>äB>ãá6>㘻>ã -M>âX>â>âа>ãqC>ãB½>â‘/>áý?>á¼Z>áó;>áŸf>á)>àX£>àC©>àd>àa¾>àA>à!>àQ>ßã%>ߣ8>ß‚ >ß`>ßmê>ßi>ßg=>ßX>ß8E>Þê>Þ>Þ(ƒ>Ýì>ÝÄ>Ýä>Ýt•>ÝDˆ>Ý -¢>ÜÙn>Ü«É>Üy‚>Ü[Œ>ÜBš>ÜÎ>Ûê1>Û¿ã>Û›‹>Ûz%>Û`>ÛN@>Û5±>ÛD>ÚñM>ÚØç>Ú¾ >Úš9>Úo„>Ú%*>Ù~k>؉<>×›<>× Z>ÖÔn>Ö—Ã>ÖŒ,>Öª±>Ö£”>Öå>Ö©`>Ö¥Á>Ö‘ >Öt|>Ö`Ì>ÖM€>Ö.Ÿ>Ö}>Öë>ÕãO>ÕÀ‰>Õ¤û>ÕŒå>Õpw>ÕKå>Õ>Ôöú>ÔÎ>Ô–v>Ôšu>Ô“\>Ôvâ>ÔXà>Ô5M>Ô‡>Óè®>ÓÂÔ>Óž£>ÓpÃ>ÓBr>Ó9>Òè%>Ò¹É>Ò‰™>Ò>`>Ò™>Ò&>Ñôy>ÑËI>Ñ›v>Ñlð>Ñ?z>Ð÷·>ЦÓ>І1>ÐE‰>Ïv¬>Îê>Ï2ø>Îîã>ÎNà>͆Ž>ÌûÍ>Ìã÷>ÌîÛ>Íw>Í%z>Í%:>Í>Í×>Í&ó>ÍjË>Í“Ÿ>ÍzÁ>Íy•>ÍaB>ÍM>Íÿ>ÍÑ>Í-3>Í…ÿ>ÎdC>Î7ü>Ížá>Ì÷Ò>ÌÖÕ>Í>Í©>ÌP¶>ÆiÚ>±jÒ>Ÿ,»>œr5>³Ø#>É‹>Íy>Í’>ÍžP>Íg—>Í«ã>Í¿)>Íb>Í>ÍRø>ͽ1>ÌÚ >ÌqQ>Ì|ò>̲>Ìý©>Ìû6>̲©>Ì2k>Í-v>Í£Y>ÍÓ>ͼ >Ζƒ>΃>̤3>Ì ý>ÊÖh>Ê'>ÊJL>Ê+“>ɼÔ>ɱ>Éõ>Ê Ê>É£”>Éã>Ê[>Ê|->Ë>ʧ >Éå½>É<'>ȼo>É >ÈI.>Çu >Ç*Ø>ÆÜ>Å‚†>ǃ=>ÈIö>ÇŒz>Æ¿±>À܃>¼š>Ä¥˜>Æô>Æo–>ÆÂÞ>Ã_¤>ÂÒ>à >ÀºÙ>»³9>±Ü>³Ïs>Àyè>À‰…>¼\’>ÀÊø>Ľ>Ár8>½D¥>ÀBé>Ã/’>Á.>¾&”>¿%Â>½¡>½þ=>¾H°>¾µk>»ÏØ>¹©˜>¾°Â>Á‰Ñ>ÃÚ¼>ÄhÆ>ÃÇÞ>ÂU¼>Á90>ÂŽ>¿«Ü>½5i>½}I>½'ð>¾Õ ->¿Ýy>¾mÈ>º·¹>·*!>¶Kü>º'>¿¯w>½‹>¼?>»YH>¼ƒ>¼ª>½6»>½I>½ }>½,¾>»Oì>½ú>¾ßŒ>¿1ü>¾o’>¾É>¼´g>ºDÚ>¶åŸ>¶«(>¹¤W>¹½>µY‰>´€‰>º ø>·Œc>¶i.>ºkF>»j/>ºË‰>·>´zâ>´iÏ>´Å>´(>¶þ7>¸bœ>·Ï>· à>¸’„>¸½²>·–®>´Š>´nì>· &>¸_/>¸úï>¸[n>¸ˆŸ>¹CE>¸¥k>·«g>·°L>·W>·¶>¶âs>µÁ>µfw>¶¨´>¶ÛÝ>¶­ >µ»:>µ \>µ¤ü>´›þ>´O²>´ßl>´“‡>´a>´E >´*»>´ %>´—>´Ð>³âD>³Æ<>³®ü>³›¨>³ƒÍ>³a >³.ã>³ô>³N>²ä¢>²ÏÃ>²¿÷>²£>²~¡>²]*>²=®>²«>²ù>±ìÛ>±Ëè>±¦/>±‰¶>±lô>±K>±(˜>±Ð>°ß>°¬‘>°s5>°HU>°9ú>°!`>¯ûæ>¯Ì>¯²û>¯°Y>¯—¶>¯k>¯F>¯&$>¯±>®ç6>®©d>®M5>®-2>®–>®:Å>®KÁ>®&M>® ¤>­ÿï>­§>­ß>­6>­t6>­t >­ZT>­ú>¬R#>«pÇ>«©>¬*&>«þß>«s(>«¹`>«ü%>«¢˜>«<¢>«5o>ªV>©>ªÉH>ªüÀ>ª¢¶>ªZ·>ª«`>ª•>ª&Í>ªo>ªÚ>ªeþ>ªL¢>ªNs>ªi$>ªP¥>©õ¡>ªþ>ª6ë>ªJ>©©û>©zò>©3Ï>©,¦>©è>¨Å6>© æ>¨ØÉ>§«¡>§D‚>¨y•>¨4D>¨¯b>©žå>¨—I>§Â>>¨Ýt>¨lÎ>¦~>§½Ñ>©3ä>§ž›>¤õ>¤‘U>§¬.>¨;Õ>¥ˆí>¢Sü>£Âô>§ª°>¨­Æ>¦)’> Ë>Ÿƒ>¥T>¨øD>¨©Ø>¥F‹>žmh>œ§É>£§>©)©>«›>©îj>¤Lu>›œ3>˜…º> .ý>§Üp>ªò{>«I>¨£A>¢ >—Ú@>”%Ú>œÌs>¥©O>ª‡¨>«äË>«">¨ˆ’>¡Òœ>– U>ŽiÆ>“hÔ>žtÔ>¦$›>ªÇf>¬Çg>«R€>¥Ðä> 4q>–Í«>„O>‰i¡>’bÉ>ž ->¦G'>¬à>® G>®ƒ>­>ªåª>¦/¯> í)>—C‰>†c>ƒþð>“K!>œAÃ>‘sÑ>ƒ¦½>jI>«×y>¬[š>¬•D>¬ý>©\`>¤ ¢>œ‚m>’I©>ƒªI>‚µü>’J¢>žó>¥»®>©·Ÿ>«ö>«î…>¬ä>¬®‘>¬ú>ª´Î>©åL>¨ÈO>¦B> f@>“‚R>Š†z>}°æ>wU°>‹º>˜ON> AO>£¦é>£”>§Ó>ªA ->ª‡>©¥ý>ªë>ªÁì>«Èò>«@—>ª,J>©p™>§1…>¢ê£>œ}Ó>‰—“>j…¿>e=>pFŠ>Šo ->—ìõ>žÜN>¡‹>¢ª)>¤ëä>¦“>¦ˆÅ>¦‡>¤¾Ö>£j>¥¢i>¥çå>¦É>¦Al>¦@Ë>¦>ù>¥uµ>¤>£LÅ>¢¢Û>Ÿi>˜º¸>Žjº>ƒr>g:u>nm[>‰•Ü>–®ä>œÃ´> 3ñ>¢(â>¢‰‡>£R™>¤"Á>£¬>¢hq>¢Çè>£±>¤wd> h0>œ :>¢T>¤ª)>¤ÝÍ>¤‹á>£¤†>¢ƒœ>¢„^>¢‡5>¢‹'>¡¢> o}>žo >š’–>˜Í9>’y§>yèL>[g¹>Z8>|(&>,î>˜´>œ½Ú>ŸÿÑ>žCö>Ž›A>ˆÊ“>‹8È>‘t:>› è>¢Ó>£óØ>¤->£þ >¤/g>£id>ž™>>—ïë>ŸP«>£˜»> ¡>˜Mg>r¿>£m>d>˜ó®> T3>¢é´>¢>ŸÚ>žj¬>¡N>¡Jÿ>  ->Ÿ#=>£>›†Ë>˜ >þ,>‚Ê >_Hß>`x>„\¡>‘ôþ>˜öY>Eð>Ÿl`>Ÿ’l> ¡@>¡d9>¡X> ‰> ôÑ>¡!> ©v> ¤>Ÿê‰> À9>¡ï>¡){>¡@R> ûv> õj> ø3> ÒN> Q>ŸÓÍ>ŸPŽ>žÒ~>ž\ë>¾m>=è>íñ>Ÿ^>žp>>›+£>œ|[>¹`>Ÿ=ˆ>žþ‹>ž²>gÒ>f >œ¼X>œ¯>›ý£>›+>š¹ë>™/R>—{b>”ïû>à¢>Œº”>††>yYS>_$Ò>Pl >dÏÏ>|?[>…«…>ŠoK>Ž3{>‘pÇ>“Íñ>• Ç>–„Ò>˜9>™US>šÔ>š¨¾>›T>›~Z>›ËE>œ+{>œ—>œÕ>œõ6> -°>Á>œ‚F>›p7>œ>"> G>œü:>œëi>œw)>š|£>šü.>œq‹>œ{Ü>œQ™>œ6x>œ%C>œ>›ç*>›À>›œ>›yµ>›T >›*=>›Ž>šÕ/>š¦·>šsd>š9P>™û²>™Äæ>™„d>™:r>˜êP>˜‹[>˜"ò>—²•>—2<>–Ú>•è•>• &>“ÿw>’Î>‘K–>bª>ŒüÕ>‰ú¿>†9!>šM>x r>j×>[H">I¿º>B÷>P‚>a+>o m>zê >‚W>†Cß>‰mÉ>‹øô>è ->dH>ø>‘v£>’)>’•‹>’í>“P¸>“‘Å>“ã>” •>”"Ÿ>“¢Ü>‘¬Ö>’[r>”>>”E¶>”(ž>”l>“ól>“S¼>’œû>“X²>“ÝË>“Ðn>“eM>’J‡>’ðö>’‹l>µ=>‘‹Ã>“ç>’èD>’ËÅ>’ÓT>’»5>’N >Ü'>‘tÔ>’4K>’%>’A>‘wÃ>‘Q>‘¡l>‘&>‘?p>¨>þ>‘Ð>ù¶>ÔÚ>¶½>–»>s>O*>,æ>ÿÿ>³c>¢ª>‹J>qK>KÃ>!¯>Žõd>Ž½p>ŽG>è]>&$>é>Wè>_Z>Œù8>Œ6˜>ŒNq>Œ(>‹¸L>‹b>Švø>‰ê>ˆ™Ù>†Ôú>†‰ë>…y>ƒ›ç>>|ù(>sT~>i,æ>bõ[>WX>HÒ{>8Y”>3 7>@×É>Pœ>\Ë>gxÊ>phÜ>ugQ>w{3>€g>‚’î>ƒ½Ò>„ÐÕ>…ÌU>†aÑ>„ñ>y8>‚ 3>ƒ/>†Y?>ˆ6Y>ˆKô>ˆph>ˆ‡µ>ˆ‰ƒ>ˆ‰+>ˆ‡ô>ˆˆ!>ˆ>ˆf™>ˆTE>ˆO½>ˆ¥>ˆ0>ˆ>‡òj>‡Æ>‡á.>‡Õä>‡¿>‡§>‡Ž+>‡uÈ>‡\Œ>‡B$>‡J>†Ò¥>†¨C>†Õ³>†Ê>†²“>†”x>†l>†0I>†7‹>†.>†W>…ü¸>…ä->…Èô>…­è>…‘->…x<>…_‹>…Bd>…$Œ>… 4>„ñZ>„Îî>„±}>„•ˆ>„‚ã>„e›>„;ï>ƒªÌ>ƒ±Õ>ƒ¾>‚æ„>ƒZM>ƒ§ý>ƒÄ>ƒnÔ>‚³à>€z²>å>‚Å >{.>–o>‚c>‚mG>‚e›>‚M‡>‚:Ô>а>™Ñ>Ì>¿í>™¶>}…>uî>X>5 >˜>€ý[>€äì>€Æo>€ªf>€Š@>€U‰>€8¬>€>€s>ÑÒ>’¶>Rq>5>~dž>~x¡>}ÝŸ>}xÖ>}…ƒ>};B>|Ú~>|Zï>{ñ|>{†=>{\>z É>z"4>yp¢>x¢>wê;>w$Í>v"]>tæÇ>sn¨>qª$>oƒ'>lÛŸ>i‘÷>e}B>`YP>Yûî>R@÷>H¹?>=Cý>/o>!”>#¿R>2“k>?Eª>IË>Rqg>Yl{>^øb>cZÁ>fÍí>i}!>k•r>m"O>nl)>o„w>pOj>píØ>qfâ>qÁ{>r9>r3S>rMÅ>riS>rwæ>rn1>rJF>q©>qôÚ>rS>r.¬>r°>r>qäD>qTõ>o¸h>pm>qW´>q;Š>p…á>kñì>l¦>pFA>pyS>pPt>p$ã>oøà>oÇH>owŠ>oVë>o8E>n—8>lWÊ>mMº>nu/>nV¨>n-ç>mõ<>m°¯>mÌ>mjð>m s>lÑK>lÌ>l¯ >lyö>lGÇ>lã>kÙ,>k¤Ó>kû>kd'>k4Æ>k2>jÕá>j¤l>jv?>jF™>jL>iãµ>i¯>iy,>iJ§>iù>hÝø>hÃE>h””>hWÐ>h >gìŽ>g´Ô>g•>gpV>gD>g}>fåi>f´@>fƒ}>fUp>f%Ç>eôÃ>eÂû>e•£>efh>e5e>dÿc>dЋ>dž>drÀ>d?¹>cõr>c“A>ci3>cq/>cG,>câ>bå>bÃm>b‘ƒ>bJM>bñ>aÛ?>aÆÊ>a¦²>a|¤>a7ç>`È>`/)>`wÄ>`4>`>`n>_Þ×>_ >_3¡>_5’>_)t>^ú¯>^¼œ>^^Ú>^¡>]û“>]ãÔ>]®§>]’V>]i ->]‰>\ô¬>\Úä>\Ñg>\— ->\L²>\2>[þ>[†ˆ>Y·>YÌë>[Ž>[Ã>ZÁý>Z¤Ð>Z‡!>Zj¶>Z>Y®ß>YÙ¨>Y ð>Y|>Y^K>Y'³>XëJ>XŠ^>XPÎ>WÎ>WÜž>X W>WÞ3>WŸn>W^ã>W6ñ>V»Y>V“”>V¨I>Vû>V>ˆ>VR>Uçë>U©N>UlG>UD.>U >TÖõ>Tš>T`­>T'7>Sç$>S£˜>S]/>S0>RÙ>R‡ü>R w>Q>Q*8>QE>P¤ >P0À>Oª³>O ¿>NV#>M‚->Ln>Kcß>J ‚>He°>Fa>Cãn>@Ê¢><ñ5>8+X>2Gë>+>"j>Á×> -ƒÅ> Y>Â> d5>(å">/à¸>5‹>:x>=®%>@‚è>B»Õ>Ds >E§>FÇj>G¶ð>H]­>HÞ2>IA©>I>Iŧ>Iîõ>J ¾>JH>J%ž>Iñ¼>I°w>Ig²>If>H«Ÿ>Hܾ>I½Ý>I¹R>Hä¦>Hw!>I>¤>I8 >I-=>I–>Hõ™>HÔ >H±¡>HŒ†>HRô>H#â>Hª>G÷>G¿¾>G«Ç>GŒ|>GZc>G>G ¨>FòJ>FÁL>F…Ç>Fv‰>FQ£>F+ó>Eù¦>EÖi>E¤>E{‡>EgU>E>Ú>Ek>Dîc>DÈŒ>D ê>Dx>DO×>D'1>Cÿg>CÔf>C­v>C‡A>C\™>C5ü>C >Bå¯>B½‹>BÀ>Beõ>BAS>Bþ>AÛ1>A³>A£D>A}=>AS>A"F>@ÿÌ>@Ü‘>@´œ>@Œ>@dM>@;è>@>?é5>?Ô>?œQ>?t^>?LY>?!!>>ñÊ>>Ð~>>¬“>>„È>>\Á>>4ñ>> œ>=åÎ>=½>=”\>=m>=F–>=‚><ñ.><Ìf><¥ ><ž>;Çr>;Þ=>;âG>;¼h>;”2>;l ->;F >;·>:öö>:Ïä>:©>:>:Nc>: >9Û•>9Åš>9±Z>9…È>9f†>9AÊ>9!>8úŽ>8Ô_>8®“>8¾>83D>8&T>8X>7ë–>7¾¸>7•þ>7sP>7EÌ>7'Ô>7Q>6ß~>6¸9>6Ó>6jÓ>6B‡>6Ã>5ùA>5Ó3>5¬Í>5† >5`]>5:I>5d>4ê­>4ħ>4“”>4'Ì>3Öí>3Üc>3à™>3ÕÚ>3»|>3+>3WÞ>3Cl>3$&>3>2ØV>2´H>2ˆy>2`>24.>2S>1ú‚>1ÐÆ>1c>1‰>1Ii>1·>0ÿÇ>0Üç>0±ï>0¢î>0^ñ>0¶>0%”>0 -ê>/ïU>/Çñ>/™†>/vÚ>.ôÔ>.ÕL>/ú>.Òë>.ÿ>.~>.|(>.Vø>.&!>. >-ãd>-Ãð>-£$>-}@>-O>-,E>- ™>,é¾>,»p>,f³>,hM>,T«>," >,“>+Ò;>+Âí>+– >+jÜ>+ZÑ>+8ƒ>+>*ïø>*˯>*¦‘>*€3>*Zå>*.ì>*ï>)êÓ>)½>)©í>)ˆ‹>)d>);€>)ù>(ù>(Ð×>(žB>({×>(bI>(&Á>(ñ>'û~>'ÛM>'¸B>'v>&ž>&ó,>&·þ>#Úñ>$å>&À>#©÷>#Ä>&'A>&1Š>& >%é®>%s¢>$E¦>%+©>%Q×>%/>%5>$òÁ>$ÓN>$¬->$'f>#  >#ñÃ>$ ˜>$¦>#Ýâ>#ºH>#–>#lª>#.N>"Ü“>"€H>"Ò.>"½‡>" >"¬>"Z•>"7>"%>!ò >!Ï¿>!­ü>!Š§>!`n>!!~>!(> þw> Úœ> ¶w> ”8> pü> Mæ> *>ùÖ>¼•>¸2>šÃ>u>O>#ˆ>£«>c > -[>y'>s6>N:>%ü>÷ü>ÕS>°³>ˆß>_Ñ>5±>³>±¹>}³>u&>÷‹>è—>æ!>²–>w1>7¿>ìõ>£o>]Æ>â>¥>8>»ˆ>,H>„ï>¿>ÑÖ>0`>š>ãA>‹B> L> Ø>ì>#O=ö¸ƒ=èo=Ô4=пR=ä­²=ó05=þD>žÕ>> -[Õ> ,.>Ý>†>´L>œ•>V>â«>Oc>  >Ö>Ê>1†>Lä>\k>j>nW>ma>h÷>`Ó>U®>He>8ð>&B>t>Æú>Ùì>Õ>¾;>¦P>Â>t—>Zã>@T>#>Æ>ïT>ÓÌ>¶½>œ>N>c6>G>)Ý> n>ð?>ÒÁ>µÕ>˜X>z)>]O>?¥>"P>y>Þ´>º”>¨¦>^>oá>Q÷>3>>š>ö˜>ÙÁ>¼d>ž4>~*><™>&I> >J>äº>Êw>®#>ó>k<>R>5Ä>ê>úP>܃>¾>>y>c²>G">)D> -<> è…> È> ­|> ‡:> i> X> :p> ¥> øî> Þˆ> Ãz> ¦r> ˆ×> j¨> Ji> /> g> ôØ> Ô®> ±È> ›F> ~ä> `…> BL> &o> \> -èw> -É2> -«Ú> -v‚> -&e> -Ea> -9È> -> ö¹> â> Ç€> ªl> I> p> K,>_>¢ >ÂØ>ˆk>ƒZ>÷`>œ°>µÔ> r>,¸>±>Þ;>Ïû>½#>ž>{²>ax>Šª>- ->ÿõ>é4>×>¼5>ž5>‚>fü>JG>$q>ýŽ>óP>ØÍ>¸¢>œC>U>5ž>2™>,÷> Ó>ãÕ>Ï!>®c>”•>…d>hW>E9>!»>ýI>ì„>Ü.>¶s>ˆÛ>ƒÎ>m>Q4>5ˆ>y>ü©>ã ->ÇO>ªû>ŽY>P4>#>•>)>²>ê>Î>³>—>{ü>`Š>E>(Z> I>ò§>Öÿ>¸q>ž¾>…r>j.>N¬>3£>æ=ÿùe=ÿÃÌ=ÿï=ÿWp=ÿ!a=þéP=þ³Ö=þ}¥=þHô=þt=ýÜ=ý¥=ýk=ý4à=ýÒ=üÌ”=ü™=üdÊ=ü.É=ûó =û¿¹=ûŽˆ=ûTÖ=ûc=úçX=ú¹=ú„"=úNÞ=úC=ùââ=ù¦~=ùwö=ùC2=ù =øØÃ=øx=÷¹Å=øÍ=ø7=÷Ϋ=÷•Ï=÷f‡=÷ =õûX=ö_ =ö‚Ú=õèÝ=õ¦é=õõ[=õÆð=õ‘¼=õ\±=õ)µ=ôåš=ôŸÅ=ôa¶=ô)ÿ=ó¤ñ=ò"û=óe0=ó‰=òðŒ=ò5W=ò°1=ò˜=ò†r=òST=ò!B=ñí¾=ñ¸=ñ…²=ñS=ñ =ðë‘=ð¹i=ð†¬=ðSŒ=ð=ï¹1=ïy÷=ï„™=ïSü=ïÄ=îà=î³==îSõ=î!Ë=íîR=í¼w=ìÝ=êª}=ë:M=ç x=êóì=ì‡ô=ìXO=ì)8=ëóñ=ëÁ¢=ë‘S=ë7ý=êÖî=êök=êÉÚ=ê•6=êLâ=ê!å=êP=éа=éqæ=éLD=é<Ô=é É=èØ"=è§å=èuJ=è:˜=èœ=ç߆=ço=çT=çN=çY=å2Ã=åµá=æ…ñ=æG‹=åçï=åí÷=åÀ„=å’ª=å[F=äõ6=äïC=äÏ$=ä Ú=äoÒ=ä,=ã¿ù=ãÀE=ãª=ã|Ä=ã3¤=âZ -=á·š=âo-=â‰Ã=â[v=â*æ=áû{=áË]=á›R=ákM=á;U=á V=àÛ]=à«…=à{¨=àJá=àÖ=ßëñ=ß»=ߊ\=Þê–?žf¦?œÌÚ?›Ò?œ?T£?ž°¼?ŸZ(?Ÿÿ?ž1¾?5â?œžã?œ}]?œzô?œJe?›õ>?›Èº?›øž?œ<{?œŠ?›Ä?œ?7?ž»?Ÿáº? }? ÁD? ëÄ?¡©? ýÎ? Jø?ž–Ž?œ?™Õ ?™]?šJ?œŠÇ?ž™­?Ÿº3?ŸèÝ?Ÿg ?ž_H? -ø?›õ’?›¾7?œzÇ?ž§?ž8?Ÿœ?Ÿ\µ?Ÿ‡â?Ÿ¤ ?ŸØ?ŸIœ?žQc?œe)?™Õ?—Åú?—OX?˜zi?š8L?›R?šTè?˜JS?–o?–I?–î?–üI?–`?•­ø?–üÜ?™¢1?œÛ?œöô?œ'—?š?—JÀ?”«È?’Pf?Ià?[w?w?“Lì?–Z?˜‚?™·î?š$Ý?™Æ>?™{?˜´2?™¾?™|›?˜ÕM?–÷??”«¡?’û×?’\e?’YÖ?’‚?‘3I?†Æ?έ?’??“² ?•| ?–ê™?—I.?–A?”º‰?”f@?•Ã??—V?—v–?–2‰?”ÔÈ?“ü?“'?‘Ûê?‘ž?‘dí?’ùH?”Õ?•Ür?•™ -?”ÂÀ?”·I?–t?˜*|?™¼¸?šPv?š.|?™Äð?™?Ÿ?˜ŽÖ?—›å?–“¹?•ù#?–Ø?–1?–ºî?–—ú?–Œ@?–ÇV?—Í?—8?–©“?•ÆS?”³á?“´J?“0Ï?“–?”Á—?•íZ?–Bž?•“?”‚ì?“ð ?“‘+?’sø?šî?iä?#Ö?’o-?”¯ø?•?”ÏÁ?“<¶?’-?’æ?“e·?•#ê?–N÷?–|N?•êò?•1¿?”Ö¥?•!?•¶/?–zŠ?–ýú?–ìã?–ø?”'Ž?‘Å¡?òó?šÿ?Ry?º‰?Sz??¨å?‘m?‘V%?¨r?¯™?’ À?“õ•?•;k?•]þ?”iö?’k?šz?Œó?‹¬â?‹¬h?‹}ª?ŠzŠ?‰ø%?‹@?Žÿ:?’}ê?”©m?•Pä?”é3?”Ž?“i?“k¡?” ä?”ß8?•ï?•ä?•Å£?• è?“Š)?‘@L?ŽæL?—&?ˆO?¸5?Œ4?³a?Žªü?‚(?Žêû?ç?‹’?Œ ¿?ŽCÒ?àb?’Ô®?“ÎŽ?“Õ%?“È?‘» ?•Ï? H?¾°?Ž·Ë?ŒŒê?Š6?ˆÓ=?‰·¤?Œ „?Žò?ŽÑ?Žª²?Ž¢v?Ž÷M?ŽñÐ?ê¡?Œaº?‹£§?Œ*‰?T?À ?Ž8J?Ž° ?Žáÿ?Ž²Ì?Žvº?ŽŒî?Á?ßå?Õ?P”?Ž7Ä?™*?}?w}?¦?®P?‡Ö?Œœþ?‹N9?Š]i?ŠØ?ŠA-?Š©ß?Š¾Ø?‰ÚÁ?ˆnw?ˆ†?‰B-?‹u?ŒŠ?{¦?Ž?Ž4í?Ž`?ŽTœ?ŽØØ?$?ŽË?Õß?Œ¨­?‹Ák?‹m ?‹®Ç?Œk?v~?ŽcM?Ž—^?—R?‹^ ?ˆÔ3?‡ Ù?ˆ®¿?‹w?Œó5?QL?Œ|¾?‹ƒ'?‹@?‹É?Œ”s?u?IY?¶?ŒzP?‹{·?Š‰'?Š+?Š%?‹Y\?Œ4? -n?£X?kÆ?Œ4?ŠXS?‰B=?‰bC?Š^…?‹¢b?Œ·l?1Æ?ŒÁ¬?‹V-?‰UY?‡×ä?ˆD?‰œV?‹)5?‹Žq?‹19?‹"¨?‹Áã?ŒˆZ?ŒÜx?Œœó?Œ?‹o³?Šñ\?ŠmÊ?‰íÐ?‰Ô?ŠQ«?Šøæ?‹X6?‹’?‹òc?ŒLÃ?Œ€?ŠÏü?ˆ‚§?†'ƒ?…8?†9S?ˆ#Ý?‰…¢?‰ÇR?‰7å?ˆqÄ?ˆù?ˆ9?ˆ—´?ˆ¡Ò?ˆ‹#?ˆÛã?‰b‰?‰L°?ˆVˆ?‡Od?‡*µ?‡¶»?‡¯h?†BP?„¼?‚.?‚¡?‚NT?ƒzý?…™^?‡âÖ?‰]ž?‰‘¹?ˆlA?†$ -?ƒv? 1?¥»?ƒ]7?…€‘?†ä°?‡rn?‡ØÝ?ˆ|?‰p?ˆú…?ˆA?†S?„Å?ôÇ?€>?~tm?oD?‚ô?…i?‡SÚ?ˆt ?ˆ¸’?ˆÃ?‡Û?†ÛÁ?†E?†ß?†Àµ?‡Jk?†êÀ?…Þi?…+?…-Â?†þ?‡‘?‡‰Ø?†áü?„Ý”?ØÁ?~[?{ñL?~s? -R?‚ŒX?ƒ­5?…”?†?Ób?µæ?~6?Š?ò?‚u‹?‚Ê"?‚àq?‚¿u?‚Y?ž?€‡;?~+å?{1?{d?}>½?ùo?€íä?–U?‚.æ?‚˜ç?‚¢¾?‚5?ba?€žc?€”ú?kF?‚‡?ƒ'„?‚ǧ?B™?~‰×?|=K?|ÀA?~mÊ? M?}³?zè¶?x!\?v_i?uk]?uÂ?v]Ù?z I?1™?Äf?‚ëC?ƒTõ?ƒpî?ƒ5Æ?‚[e?(Ô?€–ù?%?‚!K?‚®E?‚¨ü?‚Û?€ê«?~–Ø?|&È?{Dä?{-Ã?{³¸?}È?€žä?‚<Î?ƒJH?ƒæ?„'Y?„Ó?ƒü÷?„ ?„wS@=@E}@“ƒ@Žì@å(@DB?ûÅ ?ûüÝ@:3@úJ@~.@8®@„>@¸¨@kè@qS@ }@ FD@^@áû?ÿºÎ?÷â@?ù+F@äþ@H@õ‘@D§@ì=@Žø@ q@)C@À‰@)i@LÝ@%@s—@è§@Pr@×2@¬¡?÷ÔÈ?áøÌ?À l?¦@e?«¾ ?Ìx÷?ëû?úãe?ýï ?ÿ¿Ú@©Ã@¿Þ@7Ù@ @çµ@{¨@Ö'@„:@¾í@¯¾@D€@iC@ý@n @{(@/Ù@ÓP@â0@„ÿ@*þ@¦@Ý@6Í@2@Hø@¨@M@òb?ü•î?ëÇŸ?ÊÕ’?Ÿ†%?€kù?€Â¢?ž'„?ÅIß?â£b?ð×?÷w?ý¦¬@±–@1t@1/@b^@§¥@EÃ@‰@.@™æ@!1@K@0x@ k@?@R@V"@¦ñ@×Ó@Íe@~s@í@rû@Ê´@'-?ÿ­?ÿ¯ÿ?ÿ%?ü" ?ø1z?ö¾?øn*?úsÆ?û¨µ?ýI?þ=~?þTŽ?ý|Q?ûóv?ùKØ?öœó?öOó?ø !?ù?H?ù?øöê?ûÂ?ÿX@™@h@@â?þÓß?ú^?õ' ?ò¼?ôª?÷Ê?ù ?ô³Õ?ôÒÕ?õŠ0?ö³?÷8Ä?÷rR?÷bŒ?÷?ö -?óʶ?ð -A?é¾b?ݦé?ÇîÂ?­SÀ?ŸèM?¬¹?Æš:?Ý -Î?é·L?ðÈ?óxq?ô¾µ?óuÈ?ðwÿ?îšy?ïv?ñ®ß?óc9?ôÐ?óÝá?ópM?òÂp?ñ°?ðN?î3À?êúÆ?è£Ä?éŸ1?ì?y?ìø?éZ8?á’?Û?ÚC€?Ûßo?ÞX¿?ä|?ël\?ð‡k?ò€-?òˆu?ñß²?ñoV?ñ—«?òX?ó—?ò£Ç?ðw…?í¾?ì%x?ì;½?íâô?ð)þ?ñ­?ñÕø?ñÖq?ñ÷Ò?ò—?ò(?ò?×?òzŠ?òÙo?ó?ó(?ò–°?ñdõ?ïˆò?í:?ê±Þ?é=Ÿ?èÁC?ä¸h?Þ¯Ò?àÆQ?éM¬?íص?ë“ã?äS?Úmv?Ô¥b?×õõ?à@r?ã ?ÛÁ|?ÐTÔ?̘¬?Õ~x?âgñ?éµÊ?ëè?êßÏ?ë•?ëg?êÀ?éBˆ?éÌ×?ë ^?ì ?ìR¼?ìŽÁ?í ?í\2?ìô?ì…?ëóÃ?êõ1?ê/F?éï?éˆE?èø=?éç?é: ?é7?é0\?éØÁ?êrç?ê×=?ë_=?ì).?ìÝs?ìÇÒ?ëVE?èüœ?çœ\?耤?ê}„?ë÷Ë?ìž±?ìš;?ëùw?êîû?é{Ù?ç ?æ­9?æÄx?çþ?éà?êyÆ?çí?Ý+×?ÎÇ®?Ç‹Î?ÏÍ­?ÞJ3?ç-U?éÍü?éÌ?éN?çE¦?ã~å?ßut?ßP?â£X?ä‹:?ã-C?á¼ô?ãEè?åÔQ?æVŠ?äì6?ã?â#l?â›?ãë{?䮘?ãN?à>È?Þ…²?Þ³%?ÝôÆ?Ü›±?Þô?âø?å˜?åú—?å‚4?ä€?ã8¡?áÔ?àQ3?ÝþŠ?Û›?Ù`é?Ù‡»?Ú­ð?ÜjÑ?ÝÞE?Þ¶è?à4^?áÕe?áþB?àuœ?Þ?ÜÎ?ÝÌ?ß?ƒ?ÞÛ ?ܲ?Ù¼Ž?ØÏ?Ú –?Ü4T?Ú'T?ÖW?Ó·Œ?ÒîS?ÔOQ?Ö{a?Ô-ò?ο›?Ë-?Èù?Çc?Ít?×L§?Ûâ‹?Ú`??ØÙö?Ûe?ßÂ?ß5¸?Ú Ý?ÓCÿ?ÍÖ ?η"?Õ"ä?ÛQ?Þ¤ ?Þи?Ý`>?Ü}>?ÝËg?ßWÊ?Þ.Æ?Úòñ?Ù–?Ü?߶??áLì?àÜI?àv”?àç‡?áj±?á@Û?ß‹Ê?ÚŽï?Ïûœ?¾“R?¨*Ì?•˜€?•JN?¨Ÿ?¿›?Ív²?Õ¦j?Úöt?ݱo?Ýô~?ÛoÄ?Ô=?É 5?Ã/À?Ê Þ?Õ»‡?Üv5?Þs?Ýk?Üг?ÝM-?Ýw¡?ÜUø?Û/F?ÛP-?ÜIì?Üï.?Ü4x?ÙÃ?ÖÛ?ÕŽ"?ÖÌ?ÙLÂ?Ú°Q?Ùüî?ØT?Ø T?ÙÇ—?ÛL?Ü+D?ÛüŽ?Û~¡?Ú\º?Ö†7?ÍùÕ?Ã/ ?½rû?ÁBh?ÊPë?шë?Ôhò?Ôyû?Ô¬–?Ôô‹?ÑÈá?Ë?Çwœ?Ëà&?Ò–6?Ôž\?Ò„a?ÑlC?Ó†®?Öc?Ö”?ÕÛ4?ÕªV?ÖqÏ?Ö¬­?Õ©ƒ?Ô&?Òâ ?Ò8y?ÑÊË?Ð'ƒ?Ëèÿ?Ä>À?»xþ?¸à‡?¿?S?Çu!?Ë (?ÊU?ɬ?ÇøR?ÇDw?Ɖ?Å}1?Äf'?Ä´?Ä=+?Ä„?Äë ?Åy_?Æ",?Ç[ñ?Èÿ®?Êz%?ËÙÞ?Í.?ÍÕQ?Ì÷?Ê?Å›É?Ãë(?Çúa?ͳz?СO?вè?ÎÌ·?ÌEé?ËÌŠ?Î –?Ðvô?ÑCÁ?Ñ]@?Ò8–?Ó“·?ÔR?ÓúÂ?Ò¾Î?ÑË?Ñ0q?Ðó?ÐÓu?Ñà?ψ7?ʯ”?Æwo?ÆSH?dž«?ÈF?Éñ”?Í·A?Ñxn?Ó€ê?ÓÔy?ÒA§?Ë°?½IÈ?°.u?³É;?ò?ÏìQ?ÔeL?ÓÑ?Ï:…?È[¹?Ãzª?ÂMØ?ÃéÛ?Èùç?Ï5?Òû[?Ôo‘?Ôß$?Ôvú?Òv?Î.|?È¿ƒ?ÇFl?Ë<û?Ͻ?ÑAv?Ïc?ÈF?ÁU?ÂÇ?ÊŠö?ÑUa?Òéj?Ͻ ?ÈrŸ?ÂsU?Äë?Êq±?Ê«J?òT?»¯ -?¶¹Z?µò?¼Õ?Ë -Î?Áö€?´Ëo?¯}~?¸›J?Ä¢‹?È {?Â;o?¸â?²€é?´d´?·…?»D?ÃãY?Ê\ö?É£f?Å?Ã4{?Å¿=?ÉYÃ?Ë’M?Ì)5?ʶ]?Åþ.?ÀâÚ?Áa?Åd?Å“?Â.œ?Áµ?Ä ×?ź|?ÃÅ?¾&]?²™À?§Ô?ª`í?·ì?½ûR?ºþ|?¸ç?º«B?¾Ð?¿JÁ?Á H?Ä ?Å!?Å“9?Æ'A?Ç1¸?Ç÷$?È9D?Èû?Ç÷Ý?È70?È.à?ÇÔ=?ÇwÊ?ÇX€?ǧr?È–?Èž?Çß¼?ÇÆý?Ç&Œ?Ä«¥?Àn|?¼˜?¸™?·¹Ð?ºÊ˜?¿êJ?į?ÅÒ3?ŧ}?Äå?ÁïI?»§à?´ÖM?µX ?»þ”?¿<†?»Ôà?·sO?¸h­?½®3?Â^™?ÄŠ…?Å9?Å-.?Å0ò?ÅI†?ÅhÜ?ÅË?Ãàˆ?Â?Àά?À‡Ž?ÁC—?Šk?ÃŽ?ÃÕ¬?Ã*´?Áwe?¿àÚ?ÀD5?ÁÅE?ÂW÷?ÁÆÃ?À5ß?¾P$?½&™?»ÉG?¹âÖ?¹ú$?»ì»?½X?¾…Õ?¿¾M?ÀNË?ÀU?À¼è?Á)Î?ÁŸÉ?ÁÑ÷?Á´ý?Á|?ÁQ'?Á!ç?ÀÊF?ÀmŒ?À;ú?À2A?À@¹?ÀXÕ?Àc ?Àj(?Àd?À"ì?¿Ë?¿±–?¿¬°?¿‰?¿t??¿s/?¿L[?¿l?¾Ú-?¾é'?¿?¾üe?¾¦Ò?¾ -±?½™é?½5Í?»òI?ºg±?ºX ?»|b?¼Ø?¼Õw?¼Ë¥?¼£S?¼‚t?¼n|?¼5.?»–ø?ºX¨?¸«ž?·|.?·ST?·?i?µãÖ?´=?´ôË?·p?¹›?ºlÂ?ºGÛ?¹ü ?¹Ü?¹¶ˆ?¹Ì”?ºI?ºmõ?º¹@?º¥õ?¹Üñ?¸×?¸O$?¸Dˆ?¸'Þ?·Ÿõ?¶½˜?µÁG?´þ}?´ÆÏ?´ïó?´Ñ˜?³ÝQ?²TÚ?±?°R -?°bZ?±™Ì?³n?´¨”?´á¶?´žÙ?´9j?³»?³xÜ?³†ç?³~1?³DÎ?²Ð¡?±³Q?°s'?°‘?²M!?´È?´£A?´p/?³û[?³œZ?³d!?³‰Þ?´@?´k¨?´ŒÛ?´ðÓ?µ?Þ?µa?´-Û?³T.?³œ?³2b?³?²‡­?±ˆŽ?°J¼?°A ?±Ÿ%?²§¹?²ˆ—?±³|?°šB?°0?°þ?±¿u?±Â"?±ç0?±û7?±ç?±A4?°fÓ?¬áÑ?§‡æ?¦'ä?ªaÐ?®ÊA?°²ä?± ?±Z2?±ƒõ?±)ã?°´«?°KO?¯— ?¯?°¢’?±Ô†?²¡”?²çp?²Æ€?²§ ?²ƒ®?±3ó?­{ù?©¡?ªu/?®+?±.?±|µ?±0?¯ZP?¬Ëa?©Y•?¡½?“Š?…0°?…8¶?´!?› ´?¡Ò6?¨”?¬Ë -?¯`?¯^†?®pã?­Qÿ?¬ ·?«KC? 9 ?Ÿ`—?ž´q?ž¼å?ŸŽ?Ÿ€l?Ÿs?žÁ -?žQ3?žl?ž¼?žø?œò?œ¢#?»?œÆ³?œ?§?›¥Ø?šd?™fA?šé?›µ¸?œY?œ·ƒ?œÂh?b?-?œãV?œ±‘?œ¸?œÊ?œ¡ä?œI‰?œz?œ/-?œ/?œå?œ–o?œœè?œ7R?›¡Ê?šƒ¡?™?™;Z?˜*?—ý?˜‡ -?˜l”?—ûö?˜\2?˜¨ë?—ÃS?–ìA?—z?˜tÑ?™Ç?™$ ?˜¤è?™IÐ?Š¥b?‹*K?ŒCú?Œnÿ?ŒXÆ?Œ±¢?Œâö?‹íY?ŠµÒ?ŠU2?Š+–?Š!›?ŠèÆ?ŒSH?23??ŒW)?‹Ò#?‹ø ?Œ?Œµü?Œ®G?ŒÜŸ?Œé¢?Œ„?Œœ?‹Àå?‹AÝ?Š/4?‡B·?ƒ~Æ?ƒ‘ª?‡;³?‰~?Š ??Š(?Š)K?ŠRž?Š}¾?Š¹ô?‹ ;?‹Y?‹m*?‹G×?‹ 4?Š¸…?Š…?ŠvÔ?Š@c?‰7G?ˆ‰C?ˆÕ¦?†GA?~ñn?~U÷?† a?‰^Ú?‰v‹?‰LQ?‰ j?ˆr”?‡µ¥?‡{?†øE?‡ ?‡ˆŸ?‡ùã?‡øï?ˆ'ƒ?ˆu]?ˆ¬?†âP?†!B?†ä?‡œ¢?‡L‘?†ì¡?‡¢?‡fò?†ÚÚ?…8’?„òh?†s)?‡Ö?†©ž?†]ó?…Ìà?…27?…õí?†Î?‡Q?‡Fí?‡c§?†ýX?†[ž?…Õµ?…¤?…aH?…3v?…Ê?„‡Y?„P?„“‰?„Ìó?„õ:?„é­?„Ü?…2Ê?…Ê­?†0%?†MÉ?†Û?„ø–?ƒ³?ƒã¡?…@?†2ñ?†He?†É?…ðu?…Þº?…@²?ƒE7?€&~?~/Ä?\9?ƒXø?„‹?ƒÔ+?‚¼?¶2?é`?‚Ψ?ƒKA?ƒLŒ?ƒP+?ƒÅC?„^„?„™Ê?„ÄØ?„ƒ»?ƒ?I?‚c?ø>?^ ?€z?µ3?€rä?M?‚EÄ?ƒL?„G?„];?„Y?„$9?ƒÄV?ƒuh?ƒQQ?‚ú?‚1‹?CÜ?€É?€í+?Mæ?[?€§B?}ã?w`ƒ?w°B?}JÝ?€@„?€Ÿe?€º?€‘}?€k?¦?‹?€t2?€·Å?€àj?.}?AÕ?*Y??e?€÷•?€ç?€Ü\?€Öv?€®?€;í?€(ê?€n0?€}·?€@/?»m?; ?98?C{?~Û?}Çæ?|ss?|rT?}P9?}ß?}×8?}”?}9Õ?|·¡?|4Ë?|D…?|? ?{Œ­?{i?{)J?{pO?{ å?z“1?z+?zB?zË?zòµ?z³j?zAP?yæ{?yHÄ?x­4?xäd?yp?xg?x™?R‡?Q6?PÕµ?Q»Ã?RÉ?Rf?R•8?R%Ú?O}&?LϺ?MR?N¿ç?Os©?P)?;R—?>ô_?C³Ä?E% ?D ç?@&?<Ã#?=ëO?ATÞ?B«f?B3Z?Aq?@® ?@"y??ïÅ??Ù#??yã?>½?=lè?<šP?<ÖR?<~`?<ªþ?=ôú?>«¬??N??E??f??lA?@% ?@ ?@æ¦?@mº?>äÙ?>d??>??Ì(?=Ýl?9÷”?8/?:M5?=Iì??„?@F?@%µ?@ F?@¡w?@û»?Aà?A^ô?AgO?Ac™?Ag¬?AK??A*?@éR?A<Ì?Ax°?A* -?@|†??ÚŠ??2?;ÄÀ?86k?:,™?>ý??/é?=âÕ?::?5 ß?7Q³?=¼j?@K?@ È??Ù¬??Äl??Í??»È??ik?>ù2?>ŸÜ?>c4?=À€?<ž?:!Œ?7 Ý?7X$?9ÒÂ?:Å?7ª?2A?#3?ÒO?#¬b?2;??5}O?5y?4æŒ?5H³?5rh?5–(?5tÝ?4Öy?4j6?4¦Ù?4p«?2½Ó?,"?”ü?s?,Ìv?3Kí?2ðí?2‘ó?2ó?2{Ò?3Ê?3š?3xf?4*?4Ý÷?5Q?5Q?4½Ê?4Žr?4M‚?3À ?3öŸ?47^?3ºø?3Âô?4™?3¨B?3 -™?3(2?3Qn?3f?2=Ì?0D*?-º%?.eS?10?2K?27‡?2Yq?2»?1Æ~?1£ü?1CB?0ö?.q@?.†?/ÄZ?0BE?/Ým?/Ò?.uw?.¡?-!?+Šs?+Ù7?,Ë¢?,¸?+ÜÔ?(žh?!Ã?„F?#‘;?*(Œ?+íÂ?+ñ8?+{e?+@U?+í?*µ/?*܆?+-†?+&+?*r&?)*ß?)\?)â1?(Ç«?&zK?%wý?&A?(Ä?)(‰?(ú½?'Žð?&Y?%ðµ?&Ž‡?&¬z?'^?(Åá?)œ®?)¾\?)S©?(Ûã?(Ÿ?(“×?(À?(æh?([?%oê?"Ê?"¤Ë?%oÓ?&Qí?&g?&C?%öi?%ÆÉ?%Fw?$«W?$WÂ?$*?$,?$‘×?%¨?%ÏO?&šF?&Ùp?&7E?%u?&,Ü?(;F?)ƒV?*³e?+^?+'S?,ß?,(Ú?!tœ?Ò?Ø?H‰á?wá„?X{?8­þ?/,ù?,ž‘?+-C?*GÁ?)‹0?(ìù?(…]?(PÅ?'Èp?&¼’?&>?%ŠÂ?$> ?#×]?#®î?#vâ?#C ?#HÚ?#RI?"Ë?"¨¤?#%?##Â?"º?"D?""B?"Š ?"Ô ?!Þë?Ú ?Ã?³ ? º?!»!?!uÇ? ð ? ¤¨? „? /? 48? Ñþ? ß? {¯? x¬? šû? ¬Z? ˆü? rj? %4?n:?Ê?·8?)Ù?˜/?Й?¨*?q? ?­u?Š}?ö¹?–É?-û?¦:?½?k/?ð?uà?*/?h?Ù«?¡?ƒì?Ò?û€?˜?¨˜?¡?É„?´ö?l?ÁŸ?]?øw?¹#?#È?¦?áé?gþ?A?2×? N?à@?ÚÏ?ÌI?€?g+?‚~?غ?ÑÎ?ø`?Øš?õÓ?´D?5¿?Ó?{¾? ?‰ý?H]?ƒ?TÊ?HÆ?io?l×?_î?_«?RQ?Pé?_Ï?Zí?=n?F&?qF?—›?™f?S}?iû?:?VÒ?̨?t -?*R?â€?·­?¨ƒ?| -?6ý?Ê?0?ä¶?½È?³?»†?´ê?¢¯? ß?›Ø?‡…?‚‰?m?tÌ?m½?n»?^Î?dÐ?b?3ú?(Ç?W…?Q ?= ?*§? -ö?¹Á?JV?›?ÜŸ?Ä?«ª?>ÿÍ¿>ÿ\V>ÿû? 7>ÿÐ7>ÿŒ>ÿÙ>ÿ‚í>ÿ`P>ÿ »>ÿ >þìŒ>þJ>ýæž>ý,Ü>üüt>ýp>ývõ>ýT¹>ý">üò|>üÕd>üËE>ü¢y>ü0³>û¸¼>û–!>ü!:>ürw>üL¾>ü:°>ü æ>û€Ð>úó >ú¬'>úA>ú2~>ùäÑ>ù¯µ>ùM>ø°1>øp>øz“>ønØ>ø9)>ø,Œ>øIÌ>ø.¸>÷Ã)>÷h+>÷;ô>÷ >öŸÛ>öBX>ö»>õØ¢>õcz>õH¶>õ„G>õm>ô¦‡>ôu>óÕo>óy>ó–2>ó:Ž>ó«>ôþ>õÝ>ôÓÅ>óeÖ>óv¤>ôäè>õUˆ>õ]}>ôâR>ó°Ô>ò„‚>ô7‘>ö f>õé>õ8S>ôê¢>óâU>ñÍ>îl>ïH’>ïž,>ïØç>ñ…>ñ¢>ò:>ðªÞ>ìQÉ>ã÷ý>á³ö>çö >ìq%>ìá>ìrƒ>ïsb>ðZU>ï’>íù->éÓu>ß–¦>Ýœó>å·>ëK ->ìjœ>í¶å>ïÐm>ïVì>î 5>ïgö>ïe~>ì@‹>è¯>éK>äè;>Ök]>ÓèO>àª>å{¸>å¦Ï>çÕ˜>éð>êQ >é¿z>ç¾>çW$>èÃ>é¿Ž>èÖ‘>æŸ|>æ›>äÄÛ>áð>ßâ”>Þ¦A>à¸Ö>ãÈÛ>åhy>åk7>㛜>ã>âÊt>à´ë>ß*~>߉Â>ßÂa>à D>ÞõÉ>ßV®>àQê>àgÛ>àåõ>à]‘>ßGV>ß!>Þº>Ý<.>ÛÀª>ÛŽ›>܃;>Ý,ñ>ÝI>Üîz>ÜÐ'>Ü¥I>Üj >ÜÚ>ÛÏß>Ûß >Ü‹>Ü->ÛȆ>Û‘>ÛÛ>ÛÔ4>Û•a>Û—M>Û´)>ÛÍŽ>Û± >Û„->Û›Ë>Û´à>ÛO>ÛTé>ÛMB>ÛaÎ>Û_l>Ûe>Úð•>Úì>ÚêÜ>Ú½>Ú€>Úr8>Úvþ>Ú^O>ÙæÂ>Ùi>Ø";>×M;>Ö‰’>Õܤ>Õ1m>Õ;O>Õ˜c>ÕnÓ>ÕOU>Õ‚U>Õ«€>Õ¡±>ÕaŒ>ÕD5>Õ*Î>Ô~F>Ô>ÿ>ÔŒ>ÔŸý>Ô“b>ÔY>Ô8>Óìó>ÓvÄ>Òô½>ÓE>Ófè>ÓtC>Ó…>Óg5>Ó'ï>Ó>Òõ=>ÒÛP>Ò•©>ÒQª>Ò9æ>Ò({>Ò™>Ñà±>ÑÓJ>ÑÙŠ>Ñ a>Ðî>ÐVÙ>пR>Ðç>з>Ðo>ÐB[>ÐkZ>Й±>ЋÕ>ÐC;>ÏÞÝ>Ïe>Ï o>Ï1Š>ΪN>Íá">Íi>Í;g>Í X>̶¹>ÌÉ™>Í$>Íä>Ìæ½>Ìú!>ÍK¦>ͧ >Í­¼>ÍÍ>ÍP>Íõ>ÍF>ÍWC>Í›T>Îá>Î5×>Îd>Í1d>Í'>Í”J>ÍHi>ÌuÆ>Ì3!>ËšÛ>ÅÞ%>°Ö„>Ô>™"ã>ª×{>¼ûd>Äzb>É~Ï>Ëùà>Í%.>ÍØæ>ÎF>ÍóU>Í Y>Î*O>ÍÒé>ËÙ >Èɸ>È¿ù>̤ô>ÍS>Í_>ζE>Íœ>ËÚf>Íô’>Ï“«>ÏÀ>Îo>Î >̼l>ÉÍÆ>ÅÆh>Æ­;>É°ú>ÊnR>ʧ€>Ëá >Ëÿb>Ëm÷>Êà®>Êõ·>Ê{®>Ê>ɼ>ÉB­>È6 >lj*>Ç1­>ÆÏ¿>Åöœ>ÅŠq>ÄC~>½VM>´J>µ¹«>Àê±>Äÿ>ÄÒÞ>ÀŸ>»Ä¤>Á˜>ÄO>Ãê>Ä€w>Ã(]>ÁVG>Áª¢>Â# >ÀÂÙ>ºé‘>»O@>Â'Å>Ã0q>ÁÍû>Âä>Âçr>Âr>ÀÏ^>Àe>¿Ý‡>¿¦>¾˜>¾cÖ>¼ÚÁ>¼!P>½f>¾b>½¦ê>¼×">¼6Ý>·( >­UÆ>¦xÞ>¨GÚ>®EÃ>µT>¸1>·—>¶Ã^>¸#m>¹„>»=—>¼$œ>¼I>»>S>¼ -x>»e0>»Th>¼Š^>¼^À>»¡Ï>ºäH>¹ög>¹r¶>ºL>»R>»0À>»…t>»ÆÄ>¼4U>¼>Ð>»é©>ºr>¸q>·æ>¸°F>¹P±>¹#X>¸ß >¸š{>¹‡>¹Kï>¸´V>·ü‹>·g>·QÕ>·h>·wÌ>·pá>¶iØ>¶æe>¸N?>¸“õ>¸â?>¸Ò>·¬©>¶÷‹>¶ën>·}ì>·³¢>·kF>·AÊ>·X±>·H>·K”>·²•>¶n>µÑG>¶…p>¶o>¶œw>¶_=>¶Š]>·\C>·tÓ>·iš>·¨V>¶ès>¶;¨>¶('>¶x>µâ²>µÃ¡>µrÿ>µ>´Ÿ>´{>´‹ó>´ ý>³ôV>´ >´g>´[>³úú>³¥ƒ>³…(>³Œd>³–>³g£>³;Ý>³ý>²Ôo>²ÚŽ>²åÍ>²¤>²HI>²/Ë>²-n>²'Æ>²·>±éÎ>±ŽÍ>±U">±\!>±sÄ>±Qð>°ó»>°­å>°¢Z>°ˆ\>°@ö>¯ú€>¯èS>¯Ðˆ>¯¸—>¯©Í>¯žW>¯s>¯+¤>¯>®æì>®æÓ>®ê±>®§ >®)i>­ÆZ>­Œv>­7æ>­±þ>­ª»>­>X>­B[>­”>­K>¬è@>¬Éñ>¬Ö›>¬í•>¬ÛF>¬XV>©ì>§m >¨Õõ>«+>«l>ªi>ªÁ >«•T>«Så>ªwß>ª‚«>¨Îä>§àÃ>©ÏË>ªuÌ>©åà>©–u>ª•2>©Äò>§’3>¨ò>ªÒ>©ýÕ>ª¯>©é#>©µx>©å">©€>©…>©Ö>©£ë>©eâ>©‰<>©#Û>©0§>©>§·>§›>¦ír>¥Vß>¦õ,>§ø4>¦’™>¨ÿ>©JÖ>¥!Ü>¦ S>©l>¦å>¢ÂÏ>¦ Y>«@U>¨^P>ŸÞï> 9>¨F >ªZV>¤jì>÷> ¦>©©Ì>¬—>¦Qz>šœ_>—æ>£/b>« >«¹j>¦z4>™n>”MÔ> ‘u>«'€>®¾>­¬Ê>¥Å>—_>’ £>žæ¬>©Z>­!À>®pô>«·±>¢Õn>“Ñ>c'>›ó¢>§÷¸>¬‘ >­Ñœ>­X°>ªõÌ>£³é>”xù>‡¦|>’°>Ÿ™•>§©>«<>­>O>­#V>¨Ö>¢î+>šŠ«>‹7˜>…€¼>”Ut> Ò¯>¦Ët>ªò¸>­†>®p£>®g*>¬o>©Bk>¤lë>štñ>†”®>‚S>•Gg>Ÿtv>Š@>|2Î>™~M>ª„>¬d>«Ç£>¬A >«C>>§ò¦>¡ÚA>—aû>…+ü>ƒæ>–Â>£Ëè>©aV>«¸Ì>¬zh>«Ñl>«kø>¬æ>«§;>ª ->¨G>¨¨Ô>§Ø> ]»>”Ô>ˆýê>€½P>{‰1>Ñè>Ц>£ÏL>¦“ý>¥kˆ>¦6h>©±S>ªh >¨ââ>¨Ì·>ª>ªý<>«€>ªy>©ä>¨q°>¥>žë:>‡p„>c–Î>iUo>x”>Ì>œ¼B>¡š˜>£~ª>£M>¤CÑ>¥-,>¥n>¥“Ó>¤!”>¡ƒF>¤>¤=z>£àÜ>¤æ>¤B>¤ºä>¥Ië>¥ò>£ûF>£œG>¢F>ÕX>”Î>‰U©>q®>}ç>’¨À>L–>¢‹>£Ia>£îõ>£–’>¢û>¢êô>¡¿Õ>žÁê>©>žÓ£> ¹t>K">˜f{>ŸOà>¢•>£"K>¢ø£>¢‹J>¢e@>¡£í>¡=>¡³>¡ÝÜ>¡4->Ÿv!>$—>,þ>–¨Þ>y°Æ>`¢Í>gY>‡È5>˜d2>žßv>¡ÊÎ>£=÷>¡">®%>‡Åz>ŠT:>ôñ>š3R>£ò>¥¸]>¥Sr>¤ïÂ>¤ˆx>£Äï>žÁ >–Ö–>ž{õ>¤T>¡UÕ>—pŽ>ŠÉ>¤`p>õ¦>˜_ê> X´>£~j>£> ÛÍ>ž×c>¡‡~>¢XŠ>¢fÞ>¡Û >¡BÍ> t>ž U>™’í>Œ®ž>n1ÿ>qOö>.Ä>›*>ŸÈU>¢ZQ>£>Ê>¢àv>£H>£*>¢7ƒ>¡žº>¡5+>¡O‚>¡Ý> W>ŸRd> µ> ½í>¡X±>¡sÍ>¡¢]>¡­>¡È”>¡žÈ>¡0À> ˜>ŸÅ#>žh²>žùa>žþë>ó>Á[>ž–à>žºÄ>œ›š>œ>ž>ž’Í>Ÿpx>Ÿdë>žró>û>Ãû>¶Ú>Ñ>oé>œÏû>›¦›>™ÿ’>˜‹y>•{>‘e¬>Œ>ƒ|5>hö•>YÚB>qo>ƒ¾Í>‰úk>Ž\l>‘â>”vG>–ÎÀ>˜/D>™m>š‹C>›ÄÅ>œ“/>œöà>N_>>ðÚ>žj>ž¯Ó>žÅ†>žÇ*>žÇ%>ž¾G>ûQ>œÙ·>ž<˜>žÂ>ž»f>ž°g>žÀq>ž‚R>”3>žÊ>ž±É>ždi>¼v>¸>ò>÷‚>í{>°ê>VÝ>,D>H>•>œÝ>œŠ¦>œ^6>œSQ>œ,é>›Óò>›’Ä>›€‘>›40>šËl>šƒ@>™ù>™$f>˜¦À>˜€”>—ë,>–æq>•A>”Ñw>“õ>‘›Ö>0Ò>ŒmÕ>ˆÍ˜>„ ›>|Ã_>ožƒ>_²m>M_Y>FUU>T¥–>eÅö>s÷#>ù>„ÔÌ>ˆ©3>‹ÓE>ŽH˜>$O>‘“z>’ªØ>“Š>”Ü>”4>“òU>”—%>• ->•Ââ>•Ý—>•Ù­>•ab>’¤>’ ²>•Og>•Ûë>•Ýð>•×}>•ª>’1¥>Š>“qæ>•¥§>•Œ>”¾¦>“8>” >“ö>CÄ>’®6>”Þ×>”aE>“þ¾>”7>”=‹>“ëê>’Žî>“3…>“ñÏ>““f>“.¶>ùš>ü’>’ü¿>“5¨>’#®>ÇË>‘¯F>’™>’˜¯>’„Å>’u>’Û>‘ÔH>‘†>‘·p>‘Ž³>ÍS>¶O>‡>ç%>‘ç>òÖ>•­>>->>ŽJe>Œ­i>è>á>Žé&>ÜÔ>‹°->_?>Üõ>ƒx>Ã>Œ‰G>‹Ì“>ŠÛ >Š n>ˆèA>‡_*>…:½>sÏ>Æp>tÀä>i+†>f‘>[>L~‰>;)>5Ä>DA®>Sô$>`·¬>ki=>u -ï>xs!>vñü>i¹>„¤Ò>…úw>†õ>‡º›>ˆ=Ç>†È>€¹\>‚7>‚Ò>‡Fº>‰Kø>ˆ¨n>‰Úù>Š>Š†>Šwí>ŠO ->Š&Ð>‰½Ü>‰è>‰…&>‰Ÿ>‰d>‰Eb>‰¥„>‰Ÿ>‰k™>‰™€>‰Ÿ×>‰7Ì>ˆî½>ˆçã>ˆçÑ>ˆæœ>ˆÌ9>ˆ“>ˆé>‡$ã>‡®Ê>‡ÌX>ˆ Ä>ˆ^>‡ás>‡z5>‡Ü’>‡¨|>‡S¼>‡I0>‡I>‡I>‡E•>‡/½>‡i>†¼!>†û>†y°>†yP>†yJ>†f>†/ã>…Á,>…¦î>…ª>…Ÿˆ>…S<>…`f>„ð2>‚€¶>ƒ´ï>„Ïf>„Úß>„×Æ>„(°>y6>‚ã>ƒ4>€È¥>„|>ƒ¦—>ƒô>ƒàn>ƒÐ ->ƒ‡ê>ƒB“>ƒ<0>ƒ<>ƒ4*>‚ÛK>‚³ç>‚ÀÂ>‚y¡>‚X˜>‚¾>‚Q>‚hÌ>‚Dr>åt> ²>tF>d<>Y>@µ>{ >æ>€Ò>>€Î>€ÍÉ>€»»>«>~‡£>ÐÜ>üÍ>ñ7>Dl>~YS>~A¨>}¤R>}í>|£>|YØ>{ŠE>zÿK>z%Â>y1Á>xç>vè>të<>rîÇ>p…ý>mVÛ>i/>c¨Á>]Y‰>UÔX>Laá>@·H>2Oq>#">&"÷>5¡‘>BšŒ>M{>Vn„>]$‹>b¤>gz>jlÅ>mƒ>o]>pvŸ>q  >rªÁ>s3¿>t$>tn>tq÷>t‘¹>t¤Ï>t§(>t¥->t¥Ç>t¤¨>t:5>qýø>s-×>tŽî>tXÇ>tWT>tŸ>tŸé>t?]>s >s¾F>tCH>saT>qæÍ>jç,>mÎE>r¼¢>sÇ>s>s>sc>rÈÖ>qâÖ>qn>q6²>oÉ(>kiE>n„$>qK>qg>qü>p, >o¦’>o¢K>o©Ë>o‹d>o@´>ocS>o‰þ>nÜ>nõ>m§>n6>n*>>n*U>n+4>n'ó>mÓ7>lç>lŠ>lŒ>lŒ>lŒ>l‹ú>lˆK>l]>kæŽ>j±ï>j€“>jå>>jìÿ>jë…>jÏE>jû>iÂâ>iÜ>iZm>iN¤>iNw>iNw>iNw>iNr>iI~>hâ…>g÷$>g±Í>g¯«>g¯>g°Ö>g¯a>g¯H>g™W>fáÀ>f(>f->fî>fî>fi>eûT>e•$>dÑ4>dv½>dqŽ>dSq>cÅÁ>cÀg>cÔC>dcÇ>bÉÏ>aèÖ>`Ô?>beÒ>bи>b¦X>b6á>bQ:>aÇ×>a'4>a -_>a0s>a0õ>`í±>`âe>a! >`b{>_jd>_Ã>_ƒ&>_bO>_„>_fa>_z´>_’?>_F+>^W%>]ú§>]÷s>]9>Y¯V>ZÕ>]“û>]ìÈ>]eÑ>\†A>\Y(>\XT>\XT>\XK>\Q+>\X>\Z>[¡Ô>ZÚ@>Z¹c>Z¹`>Z¤¤>Z>ZA×>ZŒ >Zé>Yd>X—à>Y š>Yk>Y –>Xæu>Xèí>XÉ>W• >W}Ì>W|>W|>WxF>WRL>WNY>Vì‹>Vž>Uß3>UÚp>U¶æ>U·Ÿ>U¿ð>Tú§>T,ª>S}>PÚ…>RºÑ>SY>R°a>R›E>R3K>QD>PØ)>OõB>O>Mõè>L§8>K—>I 7>F–ç>C£­>?ÝI>; +>5\F>.6V>%:r> J> þ > -ž>#Ž>#®>+©>>2¹Ù>8v:><̯>@si>C_!>Er>Fê©>G »>H¸¶>J1>JŒ&>K5>Kî>J)\>E}>Jc>L>L$¢>L!š>KòÆ>Jí >HÚÐ>ICÐ>Hp‚>Jûp>L‰>L½>J.ë>HùD>K‹Ö>K¹>J‘ë>J…ú>J…×>J…?>J‡=>J„x>Jjt>JP²>J~R>Jsû>J ->I]/>Hìí>H¿Ê>HEW>H¨û>Häx>H¼/>Hv‘>HÂ|>H£Œ>H6v>Gl4>GEØ>GÃ>G >GEà>GHZ>GH[>GHY>GDD>FÝã>EìZ>E«>E©+>Eª$>E©É>E©D>E©–>E©Œ>EŸ'>E †>D.È>D C>D -Ó>D -Ò>D -U>CïÈ>C›>C¯>DB>CÃÒ>BÎ}>BoZ>Bl>Bl>Bl>Bl>Bl>Bl>BkÖ>BRÔ>A‰î>@ÜÍ>@Í_>@Ì¡>@¹è>@•e>@ÁÖ>@Í,>@Í2>@½„>@ý>?G>?.¹>?.…>?.†>?.†>?.†>?.€>?'¨>>Òô>>¡¹>=ñô>=E >;·>=ƒð>=º>=Á>=Á>=y>=rg><ŸÄ>;ý}>;ñ >;îû>;ª˜>;MÇ>;Ø>;ðÂ>;éH>;¶}>;f%>:Œ®>:SP>:R8>:R8>:R8>:R8>:R8>:R>:Q‚>:/>9OA>8¼Ä>8³{>8³s>8³s>8³s>8³s>8³s>8³q>8°€>8T->7]»>7J>7$>7æ>7>7¢>7®>7Á>6ò›>6 ì>6!‰>43Þ>3B>4>4—ô>5 -8>5iô>5\>5à>5Uj>5^>4³F>3öï>3у>3£$>3® >3C>3zA>3Óó>3ÃO>1ù¤>0àê>2€À>1i>2x>1ö]>1Ù>2+h>1¸g>1:W>2“>28>2.°>1— >0º>0…‘>/«Œ>/öŠ>0>/ú—>0!°>0p#>0—H>0}D>/¨s>/k>.úå>.úÚ>.úÙ>.úÙ>.ú×>.÷u>.Í*>.׶>.åë>."ö>-lX>-KÞ>-#)>-3ß>,êW>-=®>,ýÑ>,Ë?>-OT>-[">-#a>,/%>+ÁC>+¾>+¼ã>+½N>+½P>+¼—>+¡á>+ŠF>+·Ò>+°j>*ÿæ>* >*ú>*À>* T>)æô>*f>*>>)KH>)gÄ>)ÐL>)è9>(ÿÅ>(Q>&êi>'¡>'§%>#Vü>#ml>'->%.Ì>%-W>(C3>'ÉH>&ù—>&ßû>&Tñ>$FB>&(—>&µ¥>&°°>&{1>&¨.>&ß+>&¶ô>$ÇÙ>!×3>$Š3>%@®>%B?>%B?>%B?>%B>%&(>$³*>$q>"Ï…>#H;>#Kj>#žõ>#£õ>#£„>#£J>#£{>#£{>#£{>#£n>#•Í>"à>!ô¬>!ö>"w>"¶>"¢>!ÿ]>!ã>!½>!š>!`B>!Þ>!*•>! â> ݦ> ©÷> e1>M0>>»>.>ßó>ßM>ºë>Ž·>N2>;Ð>¦>û">Ò>¨~>{N>A.>B>×­>´Ï>Q>^O>+>êu>®³>b~> ñ>ÙØ>‡>,Ö>Æš>P»>Âô>Ï>kÜ>…!>²>³]>rl>g¬>÷Ï> Éz>Øš>Î=ú9Æ=ëgÂ=Õñµ=Ò…=ç´©=öÅß>/Ò>‘ò>»?> >>±>ëê>ZD>Y>8f>õ>zw>á`>,a>X>wö>žœ>Æ>ÕÈ>ÖÐ>Ö›>Ïm>Ø#>É«>¯¬>« >•Ò>~>2 >ò…>/v>.b>¸>û >à¼>É~>®¿>v>q%>V»>7®>±>þc>äÈ> >¦A>Ó>s>S·>8 >>ú¹>àF>Àÿ>Ÿ–>€ˆ>a>E*>ìW>²¶>å~>ϯ>´›>”i>o>Ra>4ó>õ>úÓ>ÛŸ>¿>‡Q>p³>_Ï>>“>>úø>åà>Á >¨†>ŒÀ>m!>RA>3>–>òž>ÓI>·>Ÿ>xâ>\Í>9->2>ÆÊ>ÊÚ>‘V>l@>‹ã>nŸ>3H>Ø>1> î±> ÔÝ> µ6> ˜Ÿ> zÂ> Yú> 9›> £> õ„> °”> Áß> ¬> ˆ»> dZ> QÞ> 2®> > ß> Êà> Ÿ> -²> 5ì> [Ò> 5> -áð> ñ> -óª> -Óš> -±U> -”K> -qè>€ƒ>À…>‚Ü> …È>›t>¸ > á> ~>ØK> F4>Ó9>Í;>å>Þr>¼û>˜­>~>ç­>ž‹>>ÁÜ>íY>ÖË>¾Û>¡¬>…¦>k(>4ï>ø±>6>øœ>Ô'>¹f>™ˆ>‰>*¥>Iw>+{> ?>îÅ>Âr>¦p>š¯>}Z>H´>!> [> N>ë&>Õ}>·o>œi>ƒ>fü>GÑ>&±> ¬>÷Û>Ü->¾´>‡>ç>}n>².>#>C>þ*>âO>Åš>¨£>R>oæ>S7>1'>ì>ý:>á~>¸ß>¤>’¬>un>X£>=/>t>+>í²>ÐG>³È>œW>z>a·>H0>,?>?=ÿð=ÿµw=ÿ}3=ÿD»=ÿ =þÝA=þ¬=þu=þ<¶=ýöã=ýDz=ýŠ=ýY¯=üø=üæø=ü¿™=üˆ=üQ|=üô=ûæJ=û¤ÿ=ûw>=ûE=û@=úÍ:=ùÓ;=ö³‹=ùj=úÕ=ù¹=ùT”=øèã=ø˜“=ö¿H=ø:=øiT=ø:ø=ø T=÷Ûœ=÷¥c=÷ˆ=÷TZ=÷$û=öžë=ö$þ=õfý=ôÿ¸=ô3h=ñ‰>=õ6·=õ…k=ôÈ=óÝ =ô‰o=ôu2=ôjM=ô9¢=ôÈ=óÐ[=óŸ$=ókk=ó:w=ó=òÑ!=ò¢Û=òkG=ò;!=òŽ=ñ6=ðÉ=ñdô=ñ;=ñ 4=ð¹=ðW”=ð^i=ð1I=ð P=ïÉú=ïžâ=î‚a=ëàØ=ìžÑ=æxC=ì9=îiƒ=î=-=îª=íÔP=í–ø=í^=ìÊU=ì=캶=ì™ñ=ìfS=ì=ëéS=ëØø=ë¡O=ë5¡=ëb=ë -=êäK=ꮑ=ê€=êG[=ê Ü=éßÜ=éœ\=èð‘=èç=é¬=èêÆ=èo=èa¦=èV>=ç݆=æõÔ=矇=ç…§=çW=çå=åûl=æƒã=æ£÷=æmÇ=æ;Ü=åâS=äý¦=ådÿ=ålï=å7Ü=äêT=ä{=ã„=ãëù=ä7@=ä =ãã=㽸=ã†@=ãUÝ=ã&T=âö¾=âÆW=âŽ×=âhÀ=â4=â.=áÊç=២=áp=á:3=à¾?;"Z?<8Á?>Š?@¬·?C¹w?E ?E?BÜ~?A5õ?@{“?>ÚË?:£§?4±C?0 -z?/ñ?2.¤?8!Ÿ?>à‡?CÊl?EjA?D[\?Aé ?>Y?9Àã?4!x?01 ?1^¸?8…Ñ?B`C?IêF?KËK?G÷ã?A_¹?<Ç?:Ð?=h??ò^?@¡Z??\?>!=?=Åï?=Ñ»?>iØ?@Yk?CL‚?E’¡?Eý?E¦?DUÌ?EÊ?G¶?KE?MÈì?Mb•?I×Õ?E?AæÁ?A„¸?BÝg?CŸæ?AŸÞ?<”?5 ?1$;?3DÛ?8æ¦?TQ?=¸?9 l?5ÏË?5~)?7_‘?8ÞV?7ÝÑ?5•?3{ñ?5¸º?:üñ?@`?Cˆ7?D ?Cbæ?C/$?D½?FáJ?H½™?H¡†?Fx·?Cµ6?A—n??ŽC?<Å?6•#?0ÂÔ?,æX?, ¤?-©`?0ýÂ?5Ë™?;\¯????Á?<(?8€ä?9†?>Y/?BYî?B…í??|?:ûY?6bÉ?3?â?2§Ó?4¶?5Ìÿ?7"é?8\Š?:O½?=¯ï?BŸW?H ?K×Ý?L¦_?Kc–?Iý0?HÅ·?F}û?B©?>Ss?:ÝB?9.9?9Ÿ ?;¿‚?>°!?BK?EÝ?Hž!?Jš­?KuÁ?K4Ã?Iõ]?H3”?FQÒ?Dk²?B¬™?A3H??•?<òS?99œ?6F?4·k?3ø‘?1Cè?-5×?+àÓ?085?8†?@:²?DP˜?DÃ?BÓÃ??æÀ?=ä*?>ŸË?BÓ?F„£?J]ù?M9‹?O'‚?PŸ?Pâ?OpÌ?N|?L»Ã?HÑ^?AÝ°?8£?/u´?)-0?'y‹?)ù”?.Æ•?3ª‡?7Šè?: ?=Ê?>&š?=g±?;ô?;áã?=¯ì??8©?=âN?9t²?3Û?/ ƒ?,¬3?-ä?1†—?4NB?4ß.?5Îø?: £?@—õ?E§4?GFž?F«Û?E‚?DjÕ?Dt?Ei?He?JП?L¡Y?MG›?KÃG?Fû??Öq?9'?4«î?2bŠ?1 „?/Ô°?.ÿ¤?/Þw?3NÏ?7~F?9ò?7I4?5êy?8ã?=»?Aµù?Drƒ?Dåó?CÁ`?B‹w?BB\?BLQ?A„??eò?;¹Æ?6fu?0|?,„U?,–à?/÷[?3H·?3ÌÁ?1»Ã?/ -?-I`?-Gi?.¯]?0H­?1`ë?1Ñ?1ž?/ßÉ?1è?5æ£?;¨??Wþ?A «?Bª?EEÝ?GâÐ?Gå½?Cš›?P?>h?A4š?CqŒ?CÁ??îS?;[?6{?3Þ?3dn?5¼Ã?8“ð?;?< .?='?> ×?@Õö?D¯D?GA?F¾?CÁÿ??%¥?;–?:%h?=læ?Bsq?F7k?H&¾?I¨š?Kf?L¯?JŠ`?Gϧ?F~h?G/K?H=t?HÊ?IŒœ?J¨î?J¬Í?HcT?Dð?C1?D˜?Eàá?E¢²?Bݲ?@*y??ïW?B p?Dà«?G ¥?Gx“?E؇?C9ˆ?A/ý?@Ú??­?@c±?BÖ‡?Eä¹?Gèf?Hξ?I:?H°t?F Õ?@àß?::®?4±#?3¢?6l?;Z?>Ø—?@„¹?@ü?@½›?@%?@ý?A´Ù?Cµ¹?Ef™?G-?G«T?D¸â?>;?84?6t§?9MÛ?=®?>SK?<îÐ?;7·?:Ÿ†?:ïŠ?ó‚??‹ù??Ð`?BOT?Fz÷?I¥\?IÏ?F¿Ö?AY¦?:«Î?3˜c?-¨ô?+Ê8?0?Ê?9;’?A¿„?FEh?F†E?C×Ì??‡?:/þ?4Þú?2@N?3â¾?6Ìz?6‹¾?3o§?1ü˜?4æ¶?;$©?Bb[?H0ë?Ja¦?Gê?AKK?8Ñ?2]?2 0?6nZ?:ÏÍ?<o?=þ ?B$ƒ?GKÅ?Ics?Fþ?CÓ?A¾Ü?E®Ê?Jg?Kñ­?K_è?J2-?HÅp?F3¤?B-š?>LH?<ˆ[?= Æ?>6ã?><"?Ó?J7?I?u?H$t?F£T?CÂ\??*A?:Zx?7Nn?6+]?5ý¢?6ÿñ?9åÃ?>Ó?B‘1?FÀõ?I¼í?JÅg?Já?Gªµ?C­P??Z%?=y??Y[?BûŠ?E; ?Dã‹?CÀ?Aý??GC?=H?:wE?9==?:èY?>å?Ba?Bù?A22??ö?AR…?DÎ?Eå´?F…$?FÖp?Fµ?ER?C›Å?@þ?=X‰?8þ0?5GÂ?3à?61?<Ã?B¾–?G(v?H·-?HN©?F«?B8Ú??Gì??¤c?BºÉ?F`?Gåÿ?G!?CÍ??o‹?<.[?;‘¾?=~??à´?@¼Ê??Úñ?=´7?;û?9?:gã?>{?Bï†?FMÉ?Fúé?F¨/?FëÖ?Gt?Gk?F›?EªP?EÖ?FÞû?GþÂ?HQ“?G g?Db?B¹×?BÝÅ?CTW?BZ{?@õâ?AŠ¯?D†š?GÔÔ?Ig-?IV?GË”?FP?E;·?Eî?EÁó?E×?D5›?A#Ì?=ů?;õd?=â"?C*ø?HX™?JÝ&?K9?Já?J?%?Iu?Hù"?H”?GÔx?GŠ?Hì¨?K¦y?MöÂ?Nhÿ?Ml?Ka»?JÖH?KÉ ?Mi?N¸&?Og -?O¦?OU?Nk*?MU¢?Lÿ1?MÄ‚?NõC?Om?N¤v?LÈG?JRß?H?FÙÛ?F¥Œ?GV™?H¹‹?J¶è?M[?NÅ0?OfL?OZ+?N×F?Lì‡?HÎ?D\?A³'?B¶?D«ñ?DwK?AÛ‡?>÷>?=‰—?=‚+?>¼€?A„Š?DñÙ?G~Ý?Hóâ?J ?J°r?J6%?H„?E–?B’?BÍ?Dƒk?Eó­?Bý¼?=Ð?:n?:¤d?HÏÿ?G‡?Gïí?Iÿ?KOX?I¶Ö?FÄ0?E£:?G &?I1!?J:I?Jf˜?K–n?Nzk?Q5;?Q)?Mp?G›Z?D©±?FSŒ?JO?L~?M%0?M1n?Mžk?Oo”?RçÍ?Vu'?X?r?WüP?U‘J?P]?JD%?GÀ'?J”?OÊ?Só?V[?W´˜?XRÄ?XnJ?XŽ¸?Xé¢?XÌœ?W_ ?T¾²?QÏÒ?Oòá?P'R?Q°_?Ræ=?R¿³?Q½…?Q’Ž?RÚ?TÊ*?VÔÏ?Xá¶?Zô_?]i?^õû?`4"?`‹/?`ÑÁ?ayò?a¥J?`ý?`tö?`Q·?_ÙÖ?_8k?_e1?`¡_?bB?c}·?d ?d?cãT?cÁV?cÕF?dK8?e¯?e”?eOÐ?dä–?d{›?cžÝ?bh?a_P?`ˆ ?_ÿ?`W?a1™?aŠ?aˆ?abW?` -Í?]D"?[c?\4%?az¼?gä7?ks?jE?icÃ?l#ï?qsÙ?té;?sä˜?o£?i¨%?h”?nöÏ?x¦6?t*?ï•?zX7?pJ×?dä4?]c–?]31?cÍ?mxŒ?vpŽ?z—¨?x‚À?pf??eN·?^â‡?d"X?sip?‚,?ˆgS?‹ýù?Uí?ŒK?‡P]?}ãn?húô?V‰?P??[ÉR?rúê?„á%?Œ@ñ??¸R?ã÷?’“??’r??Žü¶?‡¡?xt?^ž?KOY?IûW?Wô??kéB?€×?Œ /?•Vw?š«¶?œ5Ÿ?›i^?™˜x?—\ ?”\?CÖ?‹Õ?†xn?{#R?bµ ?O2ð?Nv¹?aìõ?}à²?‹è¨?–¨?Ÿ:?¤q?¤ç”?¢KÝ?Ÿ-?ž`Ö? ü?¢»ƒ?¥Uù?§Iû?§sÂ?¥¾4?¢yä?:n?–Š?G?‚h›?k‰æ?YBx?\ "?sÔx?ˆÊ3?“¤J?˜Ü¾?œK”?¢ã½?¬ ¦?³—_?¸Cè?»Yã?½œÏ?¾Ö—?¾èâ?¾”??¾ƒ?½õ3?¼'?¹å7?¸O@?·}Ç?¶Õü?µöó?´?±£p?¬$ñ?£þ½?™Ÿ ?Œºç?zõM?`…í?YÈ?mµ?‡Ýò?™°?¦%%?¯"’?µ 5?¸®›?º:?ºùx?¼ãý?ÁÕ?Æ?m?ÊŸa?ÌùR?̳ ?Éí`?ƆÝ?Ä®Î?Ä„??Ƹ?ÉÆ-?Íñ ?ÎõJ?ËÎJ?Çšõ?Æ™™?È¥!?Égù?Æ«Ý?Âp?¿¥ó?¾®?¼cô?¹‚?¶€?³ñ£?¯V•?¦8?™I5?Š¼u?xIû?fÝX?my±?ƒE©?‘œ@å~@ˆ @ð¤@­È@HC@q@¯*@‹#@e¢@Ä@\@æ@ °@µã@ê¸@Y#@=@j†@¾½@Ïw@wê@­@q}@^@æã@³@ iV@ —t@ c•@  @³@S@m@‰›@‰@Bü@d°@ÃG@¡¿@š{@Å@«Ž@d@)Ó@ y@½Ï@ [Ð@ ­v@ É@ ¹I@ ˆ@íc@d»@èÔ@ö@‚Ù@õ!@Ùû@Ko@ù@°u@“Ÿ@¨@9¹@ï»@À@`’@õd@-@Ü@\C@H|@'@:£@U@R®@!c@áæ@æ§@es@5ó@Üù@ßÕ@Šž@Å@ê@@iN?ÿ-±?ÿjÂ@“À@Cü@Áá@[Ù@Š[@Á;@O/@@|Ô?ÿ‰#?þ¼?ü[š?ú^ú?ø?õcÀ?òÚ?íé2?èúP?âð1?Û-?Яñ?ÂF9?®8r?˜”?Ž~Ê?˜”·?¯.?Ĺ“?Óì²?Ýç¨?å?i?êÔe?îˆu?ñ+ß?óÚ¨?öï4?ú¼?ü@‡?ý\?ý¼\?ýŸ?üø§?ü¼)?ý½5?ÿ]@(1@ú@ÆÈ@4æ@XB@0–@ÐÞ@›×@c#@a?ý{Ë?ûü™?ýÌ-@Œ@ä(@¥@.@½Y@NÏ@g@_@7Þ@N¸?ÿ±?ÿßÔ@Ì÷@3=@‡G@MÝ@E@—ü@»­@XÚ@“o@ÝW@ÈR@5@¦ê@ c@s­@σ@æì@®m@sº@”}@>@‹@—@+C@›@÷Œ@q@·ò@ÛW@k@·]@ÎÏ@^¤@P¦@ê@š€@¶F@è@ ƒ@U¬@ÞÉ@Ä(@¸o?þq‚?ý.–?þ£@4 @SÊ@kÂ@:u@àõ@¢@K@aj?þÚ?ûY?ûNo?ü±«?ü£ú?ü(?üÊ{?þj@ Ï@Î5@U @²@Wç@@Ü‹@Ä@þ ?ÿ­¢?ûc?øºª?ùßs?üY?ýx?ý4W?ü½Ê?ü¶@?ü½ê?ûôô?ùŸ?ó$Ç?íØò?ïnD?öû?ýËg@,Ô?þï‹?ûQ ?ø´º?øõø?ùÒA?ùïæ?ú#Ó?ú Ä?ú-?úÔ}?û€W?û|M?úÞ`?ú0'?øöu?ö”?ô„:?ô; ?ó®*?ñЃ?ò)Ž?õÉÕ?ø€v?øKÒ?ø¾?ùÀY?û$?û³‹?ùþ?÷|æ?öpF?÷ÔV?ú“?û§é?ü–C?ü‡Z?û’?úbM?ùIA?÷R?òÝì?ï›v?ð¯a?ó™?õN?ö(?ø?f?úG£?úç‡?ù‹j?÷H?ô??ñþ!?ñÿ?ó’Ñ?ô¨?ôdI?ò;/?íåÊ?é,§?èDY?ëì?ï?îÂÅ?íôG?ï:à?ñž?ðK³?ëMŸ?åç?â¼Ë?ãÝ©?å’Ô?èˆQ?ìâ?í1¢?ë4‹?çì?äy¹?æfƒ?éòó?ë_?ê+Æ?ç­M?æÄ?çd˜?ê§ ?ì5`?ë)?é§?é`y?é†,?éËù?è°¥?åx[?áë?à]Ê?á±?⽩?áî8?àÔ ?ßîó?ÝöÒ?Ú~(?Õó»?Ðæ?Ȭ?½H²?­©Ò?˜³â?†Ý?„tæ?•èe?¬Zf?¼ÚÈ?Ç!˜?ÎG)?Ô ?Øš‡?Û~Z?Ü6þ?Û­?Ú‡ê?Ýõ?àýÂ?ãàB?åŸ]?æÕ—?çFi?çÅç?èòÁ?éý[?ê’k?êóó?ëA‰?ë‹Ö?멵?ëNÄ?ë“?ë,}?ëRÉ?ë`?ëÜÕ?놠?éšq?ç@ð?æ­Œ?è_Þ?êë©?ì®:?íÅ?ë÷Ð?èÃò?äÄù?ä+/?çém?ì:?î E?î\«?î?í\÷?ìÄ'?ìƒ'?êÿ™?çÅõ?æ?è=l?ë¬.?ì…Ù?êÌ;?é]A?éÌ4?êœ?é]v?æù#?ç)­?ésb?êй?ë2>?ë§ß?ìA‰?ì•?ì3³?ê2.?怦?ãæ/?ä0ü?æ*Å?è‘O?ê1F?ê«?êh?élí?èD?ç\Ñ?æŽ6?åäÁ?åõ‚?æЩ?çæ>?é÷?é©?è¯C?æ%™?ãüæ?ä—Þ?ç Ç?é'ì?êI?êr?裳?ä»J?àí-?à_>?ã"¯?å­?æt¡?æY½?åš¹?åDz?æ è?æaŸ?äðb?âž~?â)?ã„ž?ä~?ãÖ¨?ã ‡?ã ?ãfY?ãî?ä\÷?ãÖ¹?⬭?á?ßd?Þç`?àËn?ãIÊ?䬋?åRÐ?åEž?ãî‰?âA?âc°?ã¿$?ä8?âpj?ß° ?Þ¼g?àe{?ân?ã£t?ãÍd?ã?➎?â†æ?â$e?áêä?âó?áÿv?á©Ž?ᘠ?â~?ãAä?ãß„?â±c?à<È?ßkž?á6Ñ?⪹?⇴?âF¿?âGk?áô&?á–ø?áNm?á' -?á9?át¹?áw¼?á-å?à¹Ê?à ¡?à+v?àë7?à[?ß:ð?Þ ?ÝöÂ?Þm?Þ« ?Þæ?Ü œ?ÛwÒ?Ûó¼?ÜÂÖ?Û“œ?ØšÒ?ÖÂ÷?×þ„?ÚÕ%?Ý!}?Þe_?Þ¥–?Þ÷?ÝÜ?Þ(Ð?Þ|?Ý¡?Ý@È?Üž%?Úkþ?Öüß?ÕÉ÷?ØI•?Ú{å?Ù¿?×ß–?×C÷?×Sã?Öu"?Õ÷˜?תï?Ùø?Úˆ`?Ù3&?ׯ¢?××Õ?Ù%J?Ú@õ?ÚÚ­?Ú©P?Ù¢¾?Ø?×?Í?ØQ¸?ÙÈã?Ú?Ù‹M?ØÏL?Ø#@?ײ@?×{'?×6W?Ö¥?Õèá?ÕÕ©?ÖªK?×ëh?Øf?×Àà?Ö¥9?Õý\?Öv?ÖÒ«?×Á±?×úÀ?×Ð?×é|?×èÂ?×'?Ö?ÕŸS?Õ™L?ÕØ‹?Ö+½?ÖDK?Ög?Ö{Ð?Ö(?ÕÂw?ÕíÖ?Ö7{?Õµ?ÔÓ?Ôb?Ô@?Ô+¯?Ôi?ÔPe?ÔäJ?Õ|S?Õö ?Ö~¸?ÖK[?ÕE -?Ô¿?Ô“Á?Óöë?Ó1Ï?Ó"“?Óš-?Ó·¯?Ó~ ?Ò¹t?ÑÈ8?Ñ·?Ò¦Ô?Óå ?Ôl[?Óø€?Ó”?Ó±D?ÓYß?Òrä?ÒA*?ÒìH?Ót?Ò¾ß?ÒÌ ?Ò[J?ÑO”?Ð{‹?Ð6?Ð’õ?Ñ G?Ñ8a?Ñx˜?Ñóå?Òo]?Òµ0?Ò>A?ÐíÐ?ϧû?Ï3‰?ϼÁ?Ðqg?ÐUS?ÏÈÂ?Ï{o?Ïg?Ï–E?Ïþ´?Ð&D?ϲ–?Ï8?Ï+f?ÏÝS?Ѐâ?Ð$?ÏEÀ?Ï8‡?ÏêQ?Ð(?Ï—¡?ÎãÎ?ÎŒË?ÎuØ?ÎÇ?Ï?ο/?Íç?ÍÆ?ÍV6?ÎPÚ?Îzº?Ìä?Êü?ÊüI?ËÀ‡?Ë>™?Êr7?ÊÂG?Ë’o?Ìe:?ÍT?ÌíV?ËÆÙ?ʾ$?Êœs?ËË?˘?Ê”è?É»¾?É Ÿ?É=?ÉÒÐ?ɸi?ÈžÏ?ÇU?ÇŠ?Ç}Œ?ÇGN?ÇäÙ?È}Ý?ÈBñ?ÇÖ°?ÇaÆ?Ç(?ÆÞå?Æ­?ÅÞÈ?Ɖý?ÇOp?Ç£#?ǹ?ÇÓy?ÇÁ?ÇŒw?Çg·?Ç=È?Æã9?Æ‚?Æ"C?ÅÄ6?Å›¾?ŧK?Å®r?Å€?Å,?Ä?Ãì´?Ãhj?ÂýK?µu?¬˜?ÂÀ?ÂÛ|?Ãk?ÃR ?ÃB]?Âú1?ÂÊ5?Â|È?‡?Áª«?Áü?Á -†?Áz&?Áxè?Àö­?À[ƒ?¿×?¿±r?¿…Ê?¿H4?¿5ü?¿@ì?¾Ðý?½ö¢?½œ?½°‚?½Yë?¼—?¼B?»ÀØ?¼d?¼§?»ÿÒ?ºQ7?¹4h?¹_±?¹ÙE?º7?º+?ºH?º'N?ºf2?ºA—?¹ð’?¹ªÿ?¹6?¸pR?¸2­?¸ù?·¾ö?¶×I?¶7?¶e£?¶› ?¶C ?µË?µ­µ?µÁL?µU?´ž?´'?´ý?³Ä€?³|¿?³a?²ßÛ?±Ð&?°ÒV?°ƒp?°?E?¯4¾?­êí?¬¶´?«š?ªÐù?©ül?¨?¦r)?¦Ôu?¦`?¥Ñê?¥ã2?¦J×?¦S ?¥¶Ž?¤F5?£R?¤0«?¥ƒ?¦#X?¦:S?¦nù?¦cå?¥…¥?¤»a?¤ñ%?¥ŒÜ?¥µ?¦v?¦^ ?¦I?¥„?¤Ø?£ý­?£!M?¢;^?¢_²?£b¬?£Á*?£z7?£’ö?¤š?£ºC?¢íÓ?¢žå?¢ß5?£%£?£rx?£íí?¤fz?¤@Ò?£Ð‘?£ˆ?£ï?¢¯Á?¢U]?¢H˜?¢ž0?¢» -?¢‰Ñ?¢o;?¢Áç?£li?£³ë?¢þ3?¢'ñ?¢&?¡¸Ô? Íc? j®? ]ò? 2›? MÔ? °h?¡ À?¡@×?¡R{?¡m„?¡¡)?¡°æ?¡’B?¡sU?¡r? e¦?ŸÛè?ŸµP?ŸÝm? 4(? ¶p? Ó³? +t?ŸX¯?žˆê?ž[/?ž¾?ŸHü?Ÿã? ~?Ÿ¨È?žÆ³?ê¤?Љ?á ?Öð?ž\–?žÀ?žU8?ÏZ?p‡?!A?œÊb?œž"?œæ?œäÄ?œ¡œ?œ¶D?œÔ8?œVÂ?›¢&?›T“?›Äw?œ<¬?›™'?šâ#?›_?›žÓ?œQ¼?œ¡?œ„Õ?œ¸¿?œv«?›r?š‚A?š³µ?›+?›¶?›?é?š°?šR?™¾Þ?™[Ð?—©«?“y®?æ?ö?”Ð?“u‚?m‡?’M¶?—5?™TÓ?™‡}?™7†?˜¦?—Ä‚?•<3?‘9?ú?”í?–ÂL?– W?•¦æ?–0Ë?•¸ñ?•W?•Ç?–?/?–Å@?—Nò?—°A?—‹!?–¤P?•¹?”Õ$?““¦?“T?“h?’ôq?“hE?”q†?•=¨?•Ò?•ì?”„q?”™ë?•g1?–e÷?–ýÖ?–¨j?•¿Í?•è?“¾¡?î„? Ò?’'?“£E?“å¡?’ˆ??‘BS?‘àâ?“ â?“ï?“†§?“©>?“©Ù?“›š?“Ô?“¯Û?“ þ?’{D?’bv?’fÖ?’&”?‘ð?’W?‘õh?’.?’Ùï?“V0?“L%?’‹U?‘¡?‘(©?s?å?Ž?ã?Ž/Ì?Œ=Å?‰‡¼?‹;s?Žò ??”ú?X?âƒ?ñÏ?”?&?Qi?)¾?Êñ?˜¹? -?4?´ ?»Ó?7?ˆÍ?Žüh?ŽýÒ?ì?µ?ŽþB?ŽÛ\?ŽÈ?Žoþ?Ž(‚?Ž­?Ž=þ?Ž.à?eX?ŒËb?vY?ó_?~>?Œw˜?‹œª?Œº?x?$ú?Œà5?ŒaÂ?‹hÇ?‹œ?‹C¶?‰ä^?ˆ½?Š -?‹¢E?Œ?ŒTu?Œ±®?Œ­Š?Œ|Y?ŒC²?‹ü ?‹×î?ŒgŠ?ŒÀ ?‹ã?Šá\?Ši`?Š½?‰ÿz?Šmì?Šëw?‹Zl?‹¯8?‹žß?‹T?Šñ&?‹@?‹êp?‹“ò?ŠÓà?Š_Ø?Š4h?Š)?‰Þó?‰²[?ˆBW?‡j?ˆ?rÄ(?r¯£?rPÀ?qîc?r£?qò?qòM?r2Î?r*©?rÌ?q§Ì?p×#?pŸ?q ê?q'ß?pÚ£?p§à?p·ò?p}»?pF?oð??oÄÙ?oëo?o]V?n„â?nB8?nSv?n5·?mÑA?mÏ%?m¯;?m0²?l¨5?l¥ê?l©Z?l%­?l>q?lµØ?l»­?l:?kžÀ?kjc?k…'?k—h?kƒÁ?ksÌ?kè?l'Ø?k¤Ü?k ?j—÷?j 3?i÷.?j0°?j ??j*Ú?jCi?iðè?iŽ]?iZ?i ?i+?iÌb?jM@?iyg?hX¶?gá?gÕ£?gqS?gÏ?g Õ?gõ²?gÎS?gÉ’?gÍÑ?gi?gö5?i^Š?i‚¼?hÈ?fª?fN‡?fÇ£?g9ª?gƒ??gsø?gCð?g™j?g’þ?fák?f˜?fòI?gGy?gu?fB‚?ežå?f°?f` ?fHó?f ö?eïP?fUJ?T}î?TD’?S‘’?RO?Rª¯?Sš?S¸¯?S’G?Sy?R³x?Q‘?Qu?Rô?RNM?Rc^?Qßà?Pö0?OÊÞ?OP?PKá?PP‘?Pm?O½Â‚?<ø}?=¸U??”L??Ò???>œe?>„3?? ??å?>ú™??ˆ?>ùä?>Ëš?>âP?>üS?>á??æ?>ˆî?=ÀK?=™ì?=Žì?=)?=n?=h?=˜?=M©?=Ü?<âÿ?<Ì,?<€Z?<™?;Ò ?;¤—?;?;²h?;­V?;ƒ`?;MA?;2a?:û¿?:µ(?:•Á?:Bo?:.2?:U?:@?:"¢?9«™?8âb?8•?8üÔ?9¡?8Îi?8T‰?8{?8ý‰?8ÕÕ?8@i?8å?7›G?7ŒE?7¦U?7?5¿h?5¸Æ?5í/?5TÈ?4tÛ?4RP?4h?4pÈ?3t??/uû?*YÂ?)á‚?,D•?.pÑ?0A?1‡E?1ë%?1úÏ?1}{?0Lz?/3é?.ÚP?/.+?/Ç~?/¡É?.ôÉ?/o ?/"¥?/?/B†?.øè?/mS?/9¸?.ø°?/F?.ð¨?.²r?/Tß?/9Ã?.Œ‘?.Í©?/<_?/$Ã?/W ?/±ô?/ÀR?/$?.5z?-Õf?-á?-ç7?-{”?-Ý?-(â?,úW?,ß?,’Ÿ?,Ñs?,ߺ?,û²?-!?-wž?-çØ?-èû?-d?-˜?,Øq?-^F?-È?-‚î?-.¡?,°9?,?¥?,p.?,½¯?,ËÆ?,Ë;?,îŠ?-?-L!?-Dã?,î?,e9?,.n?,(5?+å?+EÂ?*Ïú?*àg?+VŠ?+`L?*à ?*}m?*§à?*ï™?*ôÐ?*º?*«—?*ó?)Êù?)^W?)±Á?)Ó!?){Õ?)(Â?(ù ?(Ñ(?)*?)(•?(ø™?)e?)Y?(~û?'e"?&‹ó?&ŒH?'¸Ý?(^?&Ÿ -?'#ú?(_A?(]À?(D3?'à??'Jô?'Õ?'?'Dÿ?'&Ó?&Âì?&$ -?&Ge?&Ÿ?%I\?#—È?${Ë?%Éþ?&×?&L?%šø?$¹7?$=?$7?$}?#p?# ?#¶ -?#§?#Là?#˜k?#40?"ê?# o?#-Ž?"[™? Ц? j$? ùr?!\œ?!Œå?"j0?#!²?#h?"¼s?"W÷?" ?!ߦ?!Óâ?!ìÑ?!]µ? …º?’É?°ä?µp?öÌ?17?¥s?¶?kC?¦”?{w?³§?ê~?PK?Ñ)?„ú?]?iÈ? ¹??ýQ?=j?q¾?P®?ýf?Š?Á/? °I?J.>ù(>ÌpÛ>²™u>Õ1¤>þYp? yP?Ò+? `?g?}J?¹W?ûÿ?øÍ?Ú=?‘¬?æã?<Ù?©í?ùÓ?ò+?Љ?–`?Æ[?)d?mà?ƒê?‡ð?¬·?®û?§D?µ?Åq?¼u?xª?},?®7?¯~?äÐ?—¾?Ï?73?Ìš?aü? Û?i{?ÃM?‰.?e°?€P?x?¡?•M?‡z?Œ„?vû?Oð?*Ì?6þ?vÃ?‹R?tÏ?Œþ?‰k?ˆL?‚/?lõ?#š?ê/?$H?}ˆ?À?¤Q?/Ü?Ô'?Æ?dò?(?ö?&Ò?Q•? ??!‰? ú?û×?Çr?)%?—B?ö ?rM?†þ?|h?27?T?b`? ?åë?Y?`?A/?€?lÉ?ï?Ât?ð5?#±?!?ÿú?ÚL?tÝ??ºk?Â?¿â??Â6?7Ÿ?%ö?´¾?Nu?õÖ??Z?çÕ?ã?íç?þO? \?À ?‡?t^?cø?’ ?|ä?<ª?ü¿?¯?D1?Ä®?g5?:Q?Ô?³?æ‹?Ô×?8¹?]v?B?=`?š!?¥f?Å»?±??•?S=??¨£?à?“v?nç?<ž?:N?D?Ï}?•˜?Ÿ?˜ã?_Ü?_P?l±?•F?L?•ü?·þ?ø{?û?F?ß’?˜u?'Í?ÁW?Õ??O?I½?;T?%±?Û?¹?•?ä ?E?ö6?“?bÃ?lö?O\?#o?ì?îi?g?ó§?ß®?̈?¡Ã?Rð?/È?2è?÷?Ö? Ý?"¿?â?p?íu?Õ‹?½ï?ª?N?Ov?Ý?Ây?å^?ÍÞ?†#?\Ú?2W?)›?? å ? †ò? £'? »™? ™E? na? mT? xÏ? | ? ~Ž? }Ö? S“? x? c? Ò? æ/? ‹2? “ž? »¶? ²¤? y—? _¬? aæ? ,ê? 0U? (? ´©? ] ? ²? ÓV? ˆ? ˜_? «? ~ê? «? -Î? -g¹? -3? ùZ? -‚R? -‰Á? -? -8Œ? - Ð? -Ä? -¸õ? -½ñ? -˜p? -j@? ÷0? pG? 5L? ÇÅ? -žõ? -œë? -Ž? Ôo? Ûö? Íù? ‚p?éó? G? ÿú? -w? 2í?ÊÅ?¯*?Âw? ps? ¯œ?ùú?åë?¤²?¤ ? :æ?¾‰?OÌ?[Ü?dþ?0Š?±? b(? …Ã?®5?ñ¿? -’?ú¼?ûy?8Ÿ?Øq?ð)?¼É?Ø‘?ß?Àº?­?E(?eÒ?w?€a?ø’?„.?u2?¸8?I?÷Y?wô?mÓ?½½?ŠQ??Ðú?¯å?‘„?&I?¾x?é?;ü?A?$ú?=?Ý?Œ?¿Ý?Ý?e¥?[Q?—…?´,?Wæ?Å?øâ?G›?ì³??Š?òE?e_?ó?Ë?#?áÎ?…?yÛ?P?œ‡?×??N?ôW>ÿéÖ?3X?s•?}Á?LÉ?äK?ÿ{?ÃF>ÿ|R>ýÈþ>ÿ`L>þW!>ûë¿>ýݤ>ÿN“>þ¯y>ýDð>ýqµ>þE>ýç]>ü¿‹>úu^>ù¢Á>ûDŠ>üºž>ýEU>ý >>ý•h>üõ>üPš>üAS>úz[>øߪ>ùª2>ù¸§>úmÅ>ûµž>û|>ùÄW>ú)¦>ùï‘>úY>û¢>úÝÎ>ùÞ>ù‘Û>ú'>ú‚>úNJ>ú>¬>ùæ«>ùOû>øM>÷²p>ø0:>ø+`>÷Å>öã®>öw1>ö&?>óa>ï÷>òï>ô©>õ_>ö:>õ„º>ôó¤>ôz ->ô×X>õmá>ô[S>ñ¥Š>ð¨Ý>ñ É>ò¤ï>óbÀ>óQ>òéH>ñTô>ð„ª>ñÌq>ðŽ+>îrR>ðWä>ðý†>ðÈÞ>ñP@>ñik>ñˆ®>ñf£>ñF>ñ6>ñ7ö>ñ ì>ðÌC>ðŒ>ðP+>ïï>îÂu>íè¿>îgß>ïT5>ï!'>îH?>î ¦>î_>îÆ>î”é>î4%>îÏ>î->í…>í# >í8Ô>í²˜>í®Ê>í[·>ëÿ(>êŒ!>êñ>ë“c>벤>ë™u>ë¼a>ë¾>ëç‰>ë,>ë­‹>êâ:>ê>éÑÂ>é>éc>è>æ¼ß>æUš>æ‘ü>æü >ç‚>ç7\>æËÎ>æŸ3>çvt>蟥>èÈ´>èì9>è˜ >è>èˆ>æ>æ10>ærW>åœ8>æ >æ]>æ!s>æo>æ&>äŸ>äŒå>åT>äÌ>ä¡Ä>äu™>äØ>åpí>åÌ<>åC>äô[>å?Û>ãÄÍ>âåI>ã\©>äÔú>åDþ>åqô>äP¤>â(T>ã:,>âˆV>àÿ>à4ñ>àª>àõ×>á¼ý>áûî>â„t>âxv>áE4>à—ü>Þw>ßÆ™>àW’>ßÔÜ>à:H>à'{>à2>ÞNè>Ý0C>Ýáå>Þ±o>Þà`>Þø>Ý¥~>Þ“ >Þ²á>Þ%Þ>Ýí>Þg>ÝóY>Ý»;>݃>Ý€è>ÝB–>Ýâ>Ü6[>ÛE>ÛìJ>Û²€>Ûnõ>ÛÔ|>Û“3>Ûåb>Ûš>Û‰Ÿ>ÛñÉ>ÛT«>Ú¯m>Û>Ûe<>Û3j>ÚÑì>Ú +>Ù¢C>ÚÏ>Ú‹2>Ú‰†>Ú_,>Ú!?>Ùìª>ÙÒü>Ù >Øç!>ؤ">ØÖ;>ØÎÈ>Ø¿v>Ør>Øu3>ØŒ&>׶]>ÖF>Ö:”>Ö¸F>×–§>د>×ôd>×ÊÔ>×™#>×k>×1b>Öéy>ÖÎè>Ö©d>Ö6ˆ>Ö-Z>Ö1ß>Õì“>ÕÀê>Õ«¾>Õˆr>Õ“>Ó¦˜>Ò >Ð~¹>Ð,Î>ÐpX>Ï¢ƒ>Îyx>Ñ>Ó>¾>Ó >Ó5¦>Òöˆ>Ò½9>ÒË&>Ѿh>Ю>ѳž>Ñ9½>Ð7>ÐæÜ>Ñ,ì>Ðå£>Ðá>ÑW>Ðx>Ϋ>Ïü>Ð¥Ó>ÐÔ%>Ð\>Јn>Ï’§>Ëè>ÊÖ?>Ήô>Ï××>Ðm>Ïù1>Ï¢=>ÎöI>ξ8>ÎXn>Î3¼>ÎÌÜ>ÎÌ >Îë„>ÎÌ;>ÎÎî>ί·>Π>Ìþ‹>ÌÛ›>Ìå>ËDN>Ì8z>ÍC>ÍXP>ÌéQ>Ì>Ë­$>Ëa~>˺>ËÖ>Ëe¦>ÌPF>Ë,’>Ç >ÄÆÁ>Ħ>Ç`>Éð‡>ÉÑq>Éz>Êu_>Ê g>ÉLú>Éô‰>Éqõ>ÈíÆ>Éã>È°1>ÈÂX>Èã:>ÈmY>Ç>>Ƨi>ÆÒ>ÆŽÜ>ÇnW>Ç}>Ç_>ÈŽ>Èø{>Çd>ƨ•>Æ‹->Æï ->ÇŠ‡>ÇÐ>Å¿ƒ>Å‚>Æ -h>ÆÜ>Åî$>Æhò>ÆÊ·>ÅÊ>ÃÁ‡>ÄÀ>Ä:(>Ä s>Äx>Äý>Ä›>Âÿn>ÃîÂ>Ä!±>ã>Ä#8>Ã^>À>ÀC>ÃÚ>Âw>Âè\>ÂM±>¿Ü>¿]ô>Á•ö>Á¶]>Âbd>ÀÁ«>½ì,>½‹§>½5>»úG>»¨>¹¿>½T>¾|Á>»œ>»Š¢>¾î2>¿P.>»êÉ>¼t’>¾â>½YŒ>»x>¼þ­>¼™>>ºWÇ>»nö>»â8>½]‹>¹Ì>ºã>½¯š>¿Vo>ÀV>Àê`>¿{s>½Åœ>½1=>½•>½Bd>¾"[>½jú>¼n>¼1d>½4>»Ê->ºOè>¶¢>´ÊO>¹B >º2Œ>¹FÄ>º6X>ºò>»‰Ü>»2>»ì>>»àì>»->ºR0>¸Âq>¹Çä>¹ Ä>¹‘>¹Í>¹´>¹`>·Tx>µR>·cb>¸À8>·5Î>³æ/>¶;›>¸¤¿>µl>µ‘¨>·€ü>¶XB>µxÃ>´W>µè>¶¡…>µT¨>µ¢ï>·ó|>¶„Ã>´+á>´@Ó>µÄ¹>µfé>²y>²çY>´¥i>¶¥>¶g4>µþ>´Æ†>´Yõ>³ñh>³€ª>´ŒS>´†5>´u>´µ—>´8>³>´@£>³z®>²ÇÁ>²Ä°>²]7>±iž>²\9>²¹ >²¾+>²Mõ>²Ò>²K>±x>>±³ã>²&v>²Bä>²?±>²#>±è¤>±Ãr>±§*>±O=>±Ba>±LÍ>±1ñ>±@>°ñÌ>°Í>°¸>°š->°G!>°`>°#í>°Ý>¯ÑŽ>¯© >¯9>¯wD>¯^<>¯(ã>®î§>®í¡>®Ø¾>®§½>®té>®@~>­Ì >­áÆ>­ú!>­ãó>­Û‰>­Ä>­¥Â>­¢U>­–ƒ>­g¦>¬¾$>©Ch>¨;ó>ª¬ >«Ì>¬A>¬>>¨©l>§²t>ªÞX>©ã>¦ä±>© :>«”¹>«X”>ªê>ªJ>©UZ>§¼m>§@Æ>¨qy>¦xÕ>¦»d>¨çž>ª@ >©™S>§O>§ 5>¦Ús>§Ç>©)p>©z>¨žÝ>¨Ì>¨äË>§*ñ>£:|>¦ -4>¨*Ä>¦­ò>§S°>¨UK>¨0+>¨„>§íS>§ú>¨J‘>¨?‰>§ß÷>§M*>§_þ>§¸?>§h">§:k>¦‘3>¦Fý>¥ú!>¦ñ>¦[´>¥î?>¥6>¥: >¥?¯>¤ù³>¤õi>¤Ñ>¤Æ”>¤¸\>¥„Ô>¥£>¤Íü>¤0>>¤,>¤[‹>¤yö>¤ì–>¤r>£Ñ½>¤j×>£23>¢Ü·>¢æN>£”·>¥æ,>¥×Œ>£¶ü>£¬>¢É›>£OI>£µc>£æD>£Êc>£>¢Tk>¢=>¢ôR>£ Û>¡ b>¢(î>¢p>¡ç³>¡Á˜>¡R>¢žJ>£–å>£gQ>¢Gô>¡bT> y­>¡Ó>¢>¢H¸>¢÷:>£‰¸>¢óY>¡½ñ>¢rS>¢?>¢»Ù>¢7>¡Lá>ŸÀ@>ŸâÜ> I1>Ÿçœ>Ÿê> *³> ¥>¡¦>¡¦d>¡[a>¡h> ë2> ¸>Ÿêè> iõ> ñ>¡->¡›Ú>¡ ë> ´@> B“> ê>ŸÜ>Ÿm>Ÿ÷> =£>ŸaF>žãÃ>ž0Ü>R2>´ ->žTu>ŸJ?>Ÿª+> > ‡>Ÿw>  œ> µ5> W> .Ð>ŸÖë>ží>š¹i>Ø(>–§>œþ>>ªA>‚“>ä=>žêä>Ÿ½>Ÿ -Y>ž&Ã>Ù@>ij>o >G>>T>œ±Ý>œoK>&e>1>œºÁ>œ8[>šÃ>‰c&>€·ß>’»L>™œ>šªÜ>›:>›a­>›°¸>›ÉH>›£»>›{>œA¼>œÈÂ>œ·ö>œÝ>¶N>žhå>žDz>yå>º‰>›Õ>o>>Ò>œµ>›¹+>›–M>švj>™¡»>˜½Z>—¡>˜ªä>™ÓÕ>›01>››fž>œwÍ>i&>Úë>a>œ•á>d>œV>›è>œL]>œ¹,>œ,>› >›±R>›:Ë>›‡ë>œl5>†>->›á>šü\>š_ª>šg÷>š¾ß>™úV>˜×«>“¬O>ƒYæ>‡Cž>“*²>–Úƒ>˜É`>™hð>š8!>›]Ì>›JÅ>št>› >›3œ>›2×>›,ô>›N>›„ù>›íc>›Ì‹>œ>›ÃÝ>œ¢>œÇW>œDŸ>›Ý>œU—>œ¬">œ7«>œH®>›¢y>›€1>›£ê>œç>›×A>›–†>›Ëï>œ">œt“>›Ý6>›Ù>šd>š@w>™·D>˜|‚>•øÕ>“Só>”“>—Ž¢>™w[>™êŒ>™Ê]>š]õ>›T7>œ„ü>PÛ>œÔ>šËŒ>›°­>›S>›žÚ>œ>œÆ->œŒ>œ+">œ°0>œrö>œC©>œ®>œ÷á>œŽp>›ëú>›Ã_>šÚˆ>—ÚD>™Žd>›!¼>šáw>š”I>š'u>š%§>š³Ø>™Ÿ>™8>š¥n>›Z<>›ßŒ>›‹T>›7>›d¦>› >švÌ>™Ý~>™nå>˜z×>—q¬>–=ë>“«9>)¹>Œ2ñ>†.I>{£¸>r„>|Ë~>„v>‰˜Î>*z> @>‘–“>”ƒ@>•ä)>–|Ý>—I >™j>›C´>œ%°>œ9É>œß®>žBò>žÝV>ŸhW> ?^> ±0>¡ L>¡ ->žgf>™an>Ÿ >¡ÏÏ>¡Šô>¡.Ã>¡J^>Ÿâ#>™P©>š}¨> ù>¢Š>¢˜>¢>¡ùŸ>¡Ò>¡/>Ÿöf> 6Ž> ^Ú> Ós> ê)> ¶!> z¡> 4R>ŸÝË>ž÷Z>>a>°(>^Ö>œÝ&>›å>™ÿô>šV>šiŽ>™„7>˜Š«>—[Ý>•Ý#>”—i>’õé>µŸ>*ò>ŠÞ>ˆÖj>…->¶>r©>bi>Ky>B¨>UBŽ>ivÐ>wQ¨>#>…jY>ˆ–â>‹Xª>Ù>>S›>ç>‘ì ->“±g>”õµ>•€¤>–ƒ>–ÁÌ>— ]>˜{>˜Ã¤>˜ød>•ç—>ˆô¾>Œï>˜“×>šR²>šI\>š_>š0®>˜">‘r>”õ©>šI)>šÊ¬>˜%Ø>Ï>•AX>—76>çƒ>”œV>™Äú>š>š>™üÄ>š -§>˜1x>ü7>”:I>™P>˜üÔ>˜øG>˜9Þ>˜ ü>—ý÷>˜Ÿ >˜Çï>˜"ï>˜º}>˜Ü@>˜Ç†>˜¡ã>˜…•>˜Ÿ>—t>—±w>—Û>—Ù>—'ú>—-à>—4>–Ø>–Yš>–@ï>–*,>•Âë>•2y>“š}>’2V>’ÝÊ>’•Õ>ë©>’ C>‘eÉ>‘È>‘c‘>¯ø>½>Ž°C>³R>Œ>‰Ê«>‰\a>‡¼ã>„ž›>|ó†>}ßy>w”x>mñÒ>ki>`â>OÒN>8×>1¤>EÔÍ>X¸p>bdÈ>iA|>vfw>zÝ>yÐ+>‚"ï>…i‹>†e¬>†Œ>…Íà>‡Ž>†Ý™>‚f>„ú>…UË>ŠÝ>ŽÝ>ŽhB>ŽÓ>1b>ei>–þ>¶Î>×>òe>Âv>ÝÍ>ñþ>Àq>â0>AŒ>C>Üó>"i>G>ñ0>Ú>Á>C&>Ž¿>mi>©ý>`œ>u*>Ì>Äm>¢>š>„>Ií>#£> -º>$>ŽuI>Že>ŽÇä>ŽÄ->Ž¥Ò>Ž…!>Ž~%>ŽŠ>Ž~Î>Žj>Ž-Ù>Û>ý=>ë²>¹¿>¬o>b=>‹T”>‹œ`>Œpþ>‰º´>‹|Ð> <>Œ»™>‹äA>‰oÂ>€`D>†©±>‹M´>†?>€…¸>ˆ,>‹a9>‰g´>‰7Ã>‹q}>ŠüÜ>Š#P>‰ø>‰äŒ>ˆ$>…çb>‰Ó>‰¿Ž>ˆŠ²>‰+>‰êa>ŠR>‰´Ð>‰ˆ¡>‰žW>‰Ð>ˆµV>ˆ£œ>ˆ¾²>ˆÞý>ˆ·ô>ˆŽ5>ˆ`F>ˆ;>‡þœ>‡c•>‡ ƒ>‡-Ý>†ú>†¨Ë>†7Ø>…Êç>…A½>„ßË>„¥ÿ>ƒãù>‚ñÆ>‚ÞÚ>‚^ã>¹a>€ïÑ>€ ¶>}î«>{‰j>xî¼>un>r>mÎé>hþ‰>cë>\ð>S-">GBŠ>6$>!ÓC>%ÆÄ>:Bµ>I`u>T/E>\@o>b¬>gÉü>kë">o˜>rrŠ>síˆ>vl>xd>z¢ï>|a>}§>~®‚>lS>€!M>€€Õ>€{I>€{>€ýL>9>€Uq>w Î>{ÈŒ>€ç±>›ç>ïƒ>‚3>‚¼>€ÖŽ>u)¹>{u>L >€©c>6ü>|ln>zÎB>€n >¡ž>ÄÆ>Úž>Åç>0ø>{Ö¼>}œh>€Æm>f >q:Í>y(»>€Í¥>€·.><>€ÒÏ>~Ž>~Ê>Æ<>}°>yÄ4>|±ã>œ>~uô>}š¾>ztõ>{}ó>~-±>~È>Ö>fS>uF>g>JG>?>†>~Øô>~§C>~Vû>|õ·>|Ø >}¶s>}ŒÚ>}†‘>|Õ>>yZ»>sóÄ>v˜»>z©]>{ÀG>z¶á>{a>{¾:>{ßk>{W>{?¦>{/>y} >zh>z`U>zUy>zql>zKÎ>zë>yäß>y¶o>y<>x¯g>x»>xBb>x…i>xOk>w+i>v½>vÞÕ>wÜÃ>wŽ>weæ>všž>v^ƒ>vß6>vËê>v]0>u8>tä©>s×½>u¥>uS·>tßÛ>tež>tæý>tc\>seÅ>t\>tj2>t‚>qÒ8>mÞO>m¼Ö>n‡>m u>o™¯>qãa>r¢,>rXE>qÕ`>qÙ>qø>qé>qŒò>qD->qG>nãž>em6>fÔá>nç'>oÇH>m>F>nJ >ov|>o b>n¿,>mï>l~³>i;©>kSŸ>nc>nR>n>m¼É>l5[>d\Ñ>h®>lßX>l¿Ê>iåã>he>k™²>kZ>j¤>jj²f>j–>i¯>i­‡>ic„>iŸ¶>iq;>hë>h¡Ÿ>htò>gã{>g©e>g't>fÊR>fI%>f­>e¸]>d Ü>cl›>_³N>aµz>b`é>a°C>a->`,ø>_¹>]ñÓ>\’›>ZãA>Ygq>Wš°>UÚ>R°ì>Oó´>L…„>HÒ >D9p>>€Y>7Pó>-ô -> ¯„> ù3> íb>$Ù>+¼O>5/><>A‹G>Eãõ>Ix“>LZ3>OG§>Q… >S.€>T  >V$U>W´>X>Y=¼>Yþ>Z«Ö>[:õ>[²Z>\@>\[ß>[²¬>[L¡>ZØÅ>ZÔ»>X«>Yï4>]Ç>]-'>V¨¦>S8|>\]>]&>]o·>]™Â>]’£>]ŽÛ>]vÊ>\¢X>Z¸.>\%>]Ë>\ßµ>\8 >\‹õ>\Å>Zú·>X~è>[£>\X>[æy>[>[ÆS>[Á°>[)ß>WQH>XÉ?>ZÍ÷>Z¾>Z¶_>Z°M>Z¤>Zn >Z;–>Zà>Z ¦>Y­Þ>Yà?>YUñ>Wº>XN¾>Y7>XñË>XæÚ>X²ˆ>Xž&>X£:>X[~>W¶7>Wžr>X’>Woé>W<:>W–>Wyâ>WJÈ>WÒ>Vñ÷>VÝD>V¬f>V‘p>Vlþ>V7Á>UÒq>U/_>U¦Ç>U°J>U†Ï>UU,>T=y>RD)>TLË>TÆ>TŸL>TSH>Só‹>Sô >SüB>S±µ>S^>R•¡>S4y>S0 >RÖy>RÒ>R©H>Rkê>Qít>PŸY>QgL>R m>Q×ø>Qb>OJ‹>P¹Ò>Pöw>QW>PÌ>P¶>P—è>PX\>OÛ>O)_>O2p>KØ‘>Kƒ±>OØ>Nh…>NÔ>Nÿ.>NÌü>NÑæ>NŠ1>N(>N5’>N^>N …>M©Ô>Mo©>LÜ>LƒM>M>M(T>Lþ>L݉>LÂñ>Lp>K8g>KX>L7>Kûm>KÎ’>K¶9>K‰º>K]>Kà>J`>I>>Hvg>A° >;6a>?Œ>E31>I„~>IÎÈ>H ¬>D÷E>GÙ >Hæy>I.>HÃN>H²•>G§R>GZG>Gjg>Gó¨>H-´>Gðú>E“Æ>Cj¾>F»T>Fn>D§È>D÷£>Dö~>Eh>D4h>A’ò>E=>EÛ)>ERÅ>DÛ.>Dÿ>EY">C>|>@Tü>Cõ>Dîß>DT->D"_>D®è>D>A»2>CmÅ>C÷s>Cê >CÞ²>Cuw>ARÑ>A¥t>C U>BGÞ>?Ôð>:/>?€ó>BvÉ>B*?>B +>Aƒ³>AÁ>>I/>A£>A^®>A>A6>@úÿ>@ÚY>@¯›>@]…>=9>>*><3U>?g'>?ÂB>?›x>?[H>?@>?&P>>éf>>kÜ>>H.>=”Ù>8<>;ÒÉ>>¡>=ú=>=ߟ>=V >; j>:–->+<>*/k>6@>+ß“>-»è>7’—>;ºœ>:¿Â>;;ï>8És>/#>8‘¡>;,>:ó‘>:Xº>:¤7>:á>>9Óß>2€¯>,p¤>7*’>: -5>:‚>9ØI>9S>8’">7|}>2×Ó>4‘d>1°G>7œÉ>81‰>7úh>8<Ô>7V3>7{i>7à'>7ØŸ>7‘Ï>7€>6þ[>4üz>0Ñ’>4ð»>6Å×>6\#>5½o>6ò>5úË>5é:>5ÉT>2{Å>-"þ>3Ô3>5( >3ï->1b`>3@…>,”à>.Óà>3›>3iß>3_Í>3i£>2¡Ž>/¸é>2ã>2ÊE>28>2e¾>2't>1Ô·>0`>/>/IG>%û>++>/¸>/ª)>/.ü>-þö>+"Æ>*Õ1>-ë>,Y’>+š‡>*øs>*eð>)€Ð>(j'>'&R>%ؤ>#rL>Ê6>Þ>ö¾>F¦>ç`>Á>_>Íþ=ü¦1=ßct=Ú€?=÷”X>¿³> ‰l>ù >ß>ÑF>Å>+>}M>ÍÍ> \÷>#€z>$Í>%VR>$ר>!´># )>%Q9>'‹ê>(26>(„†>(Æ–>(ùŒ>) ‰>)9!>)Bg>)`¥>)uú>(ú>(Aô>$‹>'6›>)q>)†i>)€e>)na>)DÄ>)Q‹>)8ç>) >)â>(½ ->(ò3>(õà>(Â>(l]>(dŠ>(š¼>(+>(vÒ>(Që>(.¸>(*Ž>(ú>'ù5>'³ä>'p=>'ž1>'‡>'Yï>'(´>'”>'À>'@>&ã¤>&˜!>&Ž>&tš>&d¡>&B >%“Â>%ÍI>$ÊÖ>$¤>#US>#Ãn>#Gþ>$¦E>%-H>$­Ð>"÷>$hŸ>$Ÿ^>$•>$x‡>$AÞ>$1ï>$*í>$|>$Q>#âµ>#Ê!>#¡v>#Qt>#„>"b€>¼›>Ó>"¾.>"Ï@>"]>"> òÀ>!ÿ™>"C->"&)>!Ï)> ¯É>!y>!¤.>!~”>!X”>!:>!,u>!R> ÒA> ÃÁ> ½v> ŽÑ> ^m> G]>ÄÍ>†Å>Ø>u–>LG>³>NÏ>gì>T>5,>×>ùL>Å>óõ>qí>Ü>òp>Å>ìH>8®>F)>å+>¡Ÿ> - >õª>¤>&j>êÖ>¸ñ>§B>C>ùL>ü>y ->¹?>“>3$>rˆ>ÐB>¬º>ê>>ïÁ>Aä>èo>¾>tu>ì`>-=>Ǽ>ן>ŽJ>QR>­>ý>°>÷l>T_>&©> -;>6>w->º–>O‰>M>i½>ÝV>!Ž>q>þÄ>+ß>áe>Í>Lb>2>Ü>Sç>ê>D´>0¿>ã>ö >ÓÑ>¸î>“Â>ZÞ>\3>2>ð>̺>¹ë>Ðí>»J>•Ä>sI>Yh>ìŽ>ð»>û÷>ïH>ÎO>ªî>_>ö­>Çó>3à>S>·>àà> m>¼B>r>#>d@>Mg>¡>ý@>Qç>Ò…>¬><Œ>_½>X,>IÐ>6K>>¿ >] >Pc>÷(>§ü> ;>ò->ó>Ù¹>´q>NÐ>9>ËÏ>7w> -œ¥>ôg>Ù‚> Øá> /ì>·€>š5>4>ŸÍ>K> ¹P>  > *> f> -l–>•Î> Yƒ>’F> yª>è_> -@‡> {…>&> üŒ> ä¨> ±N> Ì3> _> 4@> <Õ> ¼þ> ü > ç> õ9> Õå> §ö> †8> > `P> ?­> °> ìô> éô> £Á> ”s> o|> {²>üÒ>>Î>)Ð=ñÕ™>W»> -¬û> -Ìn> -»û> -l> --x> W >ÞÐ>kx> ‰>'™> ®,> ž¤> ‘x> ›!> Xƒ>õÁ>¾¦> &ï>ÿÐ>ï>qg>v­>ÉX>ç >&D> F>´G>þ>–">§4> -×>©}>h>>>Ó2>P>3ù>M÷>xè>‡6>ÔR>Á>¥†>ýZ>¦>ñ¶>ã >µ)>rÉ=ýl=ú+U>¥ >šO>Œå>sø>Z®>@ >%Ì> Þ>õ>Ú£>¿$>¦?>>sŒ>V•>Að>& >œ>—Ã?ZfA?Zø?\~?]ïã?`­*?bÑz?bâ€?a`Ñ?_øV?_ G?]%?Xä ?S-3?NÖ¬?NQ?Q?ò?W_?]w{?b§?c†Þ?b½·?`ÉQ?]µy?Xï¼?S?N¬'?Oa?Uí˜?_m?fN?gÍG?d]?^pK?Y®V?X‡j?Z¦4?]Hc?]Þ_?\¾?[c?Z”‰?Z´˜?[Šµ?]«Ã?`·?cK?c—ê?b¼M?aöã?b?d¬Ü?g±Æ?iÞÁ?i…ª?fSÃ?aìc?^Ïä?^:ª?_5ù?_“ê?]L¶?W¹œ?Pû3?M…ý?P ê?Uò„?Y¼/?Y*?VÆ?V÷ø?Yì?\å?Z©?VÈ?S?Ræ†?T=*?UK?T Á?Q]?P=?R_o?WËÁ?]Ÿ?a#ž?b°?aX`?`·?a*Ö?bêÝ?dˆ‚?dŒ»?b´å?`0“?^ù?[îã?Xa×?S0%?Måô?J¡4?J:‰?L*?Où?TOî?YH ?\ì?[âÕ?Wâ?TŒ|?U­?ZSQ?^0Ý?^žB?\;?X:?T¤ ?Q©Ð?Pž†?QJ¥?RŠ”?S“®?T‹M?V&?YH?]©?N«€?OB?Mê?JÃŒ?Ifµ?Izþ?Jœµ?K¾U?LTä?LP?KNì?J)?KX?Oæ ?U+?XKa?Y¶¼?[)×?]’³?`$?`k·?\ñ×?VÂ?Q'?O¡?Pèì?TR?V9N?U¬P?Tæ?S$¬?Sd‰?U:?WáS?[8Ê?]”z?]âŽ?\¥×?[¤?[Ó?\‹É?]:?^„?^¿¼?^8?\¤º?[,À?ZzI?Z…ö?[:†?\Qö?\Ô¡?[–¤?X³6?V:,?Vo??Y4?[yÝ?[‹Ú?Y+?Tœ’?OÙ=?LäÈ?LÐ@?NÄ‚?Q^Á?S°6?U!s?Uؽ?W­?Yê›?]VW?_H~?^°v?[Õ§?W¦‘?Sü¢?S9ô?V#?Z‚ý?]ÜP?_ƒÍ?`©Ë?aêç?b1Ë?`pÝ?]Ð.?\¸?]±Ø?_‹?_æÔ?`ŽÞ?aa(?an˜?_¸î?\ë=?[“?[I?\Ý?\˜?Z[?X1?X[?YǺ?\ ?]â…?^Qf?]!)?[=¡?YÖ#?Xÿ$?XbÄ?X¨Ó?Zß?\ôü?^0?_L0?_Ó$?_¤\?]~ì?Xà?RÉ?M¦%?L?NP¢?RW@?US"?V’?Vþ?O˜}?Pc³?S•?VÆ?YÖù?Zá"?YðL?X-P?VÁ§?VLÊ?VìÜ?XNå?YóH?[‰Æ?\®¼?\‡B?Zƒ[?W^?T”µ?S?G?S¢Ü?Tý0?V?V7™?V˜ ?X7U?Zùù?]ÙÒ?_Åx?_ëq?]Ï…?Yü?VÄö?V¶´?Yne?\\?\¿þ?\3?[<ë?Y²Þ?VÊ9?Rxñ?N]?LEG?Kù?L…?LÎœ?O3?RŠò?Vsñ?ZJ?\´?]³ý?],À?[Q9?X1“?TЉ?S?;?Twf?Vùè?XhA?Wæ'?V`;?TÛ”?SMö?Q$a?N˜p?MMt?Nèz?RÛ?V[?W$?U‡«?TW?Ua³?WŸx?Y?Y™þ?Ÿ?Yq‰?X á?UÍ°?RØñ?OB?KT4?H²í?H2v?Jvx?O4?Te£?W¶7?X›D?WÀ¶?Uo#?R9f?P0ô?Q(?TX|?W_E?Xnì?VÝÜ?S6à?O 6?LMº?K’‡?LÈ?M¿ò?MÕ%?Lš?JQ?G¢?F -í?Fñ\?Jyü?Ox?R„?Sî>?Ts#?U -?UO~?T‚?RäÍ?QÁÁ?RØ?Ssû?T¡û?TŽu?RÞ•?P*A?MæÔ?M)*?Ms0?M™Ü?M‹ï?N-º?OÈ”?Q®A?S)S?Sás?SŸÙ?R˜¼?Q« ?QŽý?Qè?QŸ£?P%?MøÚ?Lku?LŒ™?N¢«?Q¥X?T œ?U9-?Uk?UÃ?Te÷?Sáü?SOb?R\L?QHæ?PåŽ?Q¼r?SŒF?Ut?Vzº?V6i?U£?TS?SÜç?T.]?Tt˜?Th?T<[?TsÐ?ã ?As)?C´^?Ex(?Fä©?H`?H¨ù?HÚr?HÝÀ?Håm?I<?J:Ñ?K¤2?L”¹?L…¥?K—Ö?J ?Hf?F|?D¬?CjN?Cwé?D„é?E?E³³?Dê½?Cñw?C[§?CÄ?B‘ž?AÙl?AAÐ?Aâ"?Du?F|ú?G!?E k?C¼?AZ?A|ª?CUb?E¹?Gç?H‹…?I‚?Iä?Jkn?Kšä?L`š?KX?Heå?Ca?>ö¼?=e¤??&?C -Ê?G??J])?Kôö?Lb‹?LEI?Kò‚?K5ó?I˜Ë?GQ?D¡?C=?Cf-?D¡?Eù»?F¿·?Fßi?F»?F›b?Fz.?F`ƒ?Fã?GUÌ?Hô}?KH ?MpR?NŒ¡?N™6?Mù¿?Là«?K„ƒ?JQn?I?I0Ô?I?w?Iºõ?JfÈ?K?K®#?LhU?Lßå?Lϼ?L{_?LNï?L~€?M?MÇl?N0)?Më ?Lý?Kyã?I[ª?Fõ0?Dü?D ±?D©è?FÎ?G)d?G¥?GlÕ?FBé?D+_?B9?B?DNà?Gž+?J#7?KØ?Jƃ?JÎÕ?LY³?O*?QFh?Pq"?LY%?G¢?FZb?J‡j?R ?Xy?Y¾µ?TÑÁ?K·'?B9­?m?8æ‰?<½v?I$ˆ?ZÅ?j¤(?vÌÏ?| Ï?xÎí?lÁÙ?Yݦ?Eñ?5Rö?0¡U?9.‘?Kä÷?b?uNY?l?…¯Ô?ˆ ¸?ˆaE?…ßÞ?«?j ?Q$?9Så?)´Ê?&VD?/¾0?C›?]š{?y}?ˆ©³?‘BÆ?•µŠ?–È?•}?’-#?Œ©ç?„íù?vÃÉ?a-b?JŽ?5Ù«?(:ï?',q?4ç?L­ˆ?hÆd?¡?Œá’?”Z€?—w?—wo?—œ?˜ˆÎ?› N?žÍ\? ¨Ž? žf?ž‘Á?šP3?“¡—?Šš›?H\?fÄ6?MÇT?8f$?,S-?-ÄÂ?Ñ?ø…d?÷å ?ù°?û 2?üï2?ÿPt@k<@Vå@ô@è@s@úY@Ý@_Ã@¬@ÿÃ@w.@bh?ù€?ò™B?îê?íKÅ?êîD?äðO?Û €?Ð?ÇZˆ?ÁãW?½¸?·ý·?¯s9?¤£q?˜> ?ŠXú?vE?Weù?<´«?,#X?*:³?7’G?P5?mÄ?®=[?µå%?»Òˆ?À½˜?Æ0!?Ìê1?ÔLÓ?ÛS?ßø3?ãä?èÛp?ð7³?ùgœ@6™@¸õ@ã>@£e@ ì@¹O@úÞ@½á@¨@ hg@ -`F@ -¬œ@ -ÕŠ@ K˜@ (ê@ )|@á@æb@XÐ@æ^@ Ê@ -!´@f´@y?óðÓ?Üq‘?¼sr?œ4M?Šp?‘•ò?®i?ÑL­?î4Ž@kì@àU@ -@ -{2@ -!,@Y"@Tj@:ò@c@Û¯@È?@ìV?ÿ•^?û‘Ð?ø8W?õŸy?ó~V?ðÜ?ìqX?æN?Þù°?ؤÆ?Ó\´?Íà ?ƨo?½¼Ž?´Mã?«'`?¡ç?— ?‰I=?oÒ‡?IpÇ?'h ?‡1?¿?×&?6ý%?T§s?rAP?†ÈX?“´?žQÆ?¨ÏÄ?²‚t?»K?ÂúË?ÉmX?Îÿ•?Ô~z?ÚDû?ßö©?åIO?ê?ïÌâ?ôÖ?ùa®?ý¯I@]@-F@ô}@Y@u@*õ@–A@”Œ@Ãø@ÅH@ -¡T@ µQ@ ÙR@ -â\@©é@ß@žŒ@l‹@ @K@Ç@¹1@ „@û@{æ@‰@(b@3v@0¥@àŸ@t;@#S@ X@X/@-º@œd@M@³e@Ù:@Wn@Ø@ ³@ Öß@ uë@ ‰@ M@ ³µ@ ™J@ ÃP@ -u@la@¬ã@eL@{}@2È@Ư@ l@åò@ ·—@ -þM@ :9@ –>@ “*@ ©@ÎA@íu@Cà@ Ï@ µ‚@ -Áè@ -P§@ -*j@ -"W@ -9¹@ -…P@ -ßû@ -‚M@°k@þK@ðñ@cp@Ú:@Y2@‚@‰N@5®@î!@êÕ?þš]?ý¡•?ýåò?üµ‡?øaX?òª?ìçF?ë\´?íu?ïƒí?)Ï—?"j?)Ò@?>q‹?XþI?sV4?…n8?­ä?˜»¸?¡”?©%?°ñU?¸6r?¾ãó?ÅÞ?ʺ;?Ï6œ?ÒŽ,?Õœµ?Ù7š?Ý;Ý?àât?ãê ?æ°»?épß?ëßÒ?í3ê?í/??ìîŽ?í?m?í§a?í°Õ?íâ[?ï»?ó/_?ø *?ü?ÿõ£@=©@Z@w8@3Ê@âB@c£@†&?ÿÀ@##@êÎ@˜«@,‘@Ùí@Šö@«Ô@êW@±ª@ÆÙ@ž°@ê7@ò @ué@.>@ï•@\@"<@r@J@lõ@3–@žF@œ @›‡@›˜@ëñ@öb?ügh?øâ?÷[ì?ù¯8?ü,>?ü0Ã?ùý!?ø2Ú?øî#?ûí¾?ÿu@ûÍ@Ú@¬ç@Aî@F‹?þÄ?þ4@­@iw@—ž@oh@›@lt@~@Ø@óø?ý¨¿?úª\?ùäB?úÕô?üP›?ý«?ÿ@…@®@¶à@_ä@~¥@@“6@UŠ@"@ö@‹„@Ô?üMã?ú}æ?û¡ô?þTY@:Ã@¹'@èA@ÄÉ@¨?üêu?÷ÜE?ñÐÙ?îq?ï¹­?öf‰?ý|Â@(ô?ý§®?ø#j?óù_?ó+?ö>O?ùu\?ûEg?ü“?üžž?ý5?ýÑ?þm}?þy€?üø$?ù~t?õ„7?óD€?ó^?óH?óΟ?ô^?õã)?÷׺?ùjÉ?ú²?ûÁÅ?ûð‚?úRš?÷++?ôL†?óa…?õ -?øå?ûï×?ý•?ý™·?ü‘ã?ú?÷G©?òc?ívÖ?êvÝ?ê`d?ìeE?ï/(?ñâf?ôS§?öK ?÷n…?÷e¥?õñØ?óˆ?ñN5?ðzw?ñT±?òn?ñ¥ ?îO?èǽ?ä™w?ãúù?æsð?é ¬?釳?脵?çÆ®?çB°?å‘?àh|?Ú Û?Õäƒ?Ó¾˜?Ô‹?×’î?ÛmŸ?ÝÏU?Üè•?ÙÙÿ?×éÃ?Øîü?Û ?Ú”O?Ö ~?ÏXø?Ê=%?ÉB?˱š?Îm•?έ¢?Ì0/?ÈÛH?Æ<}?Ä™?À¶‡?»Gj?µ1b?°µÆ?®wÛ?¬ÛM?©ÂÎ?¤í ?ŸPR?™FÑ?’•g?ŠØÛ?«~?nMg?Vòá?=ôø?' -¦?Ëâ?MA?%?;°î?Tq?k/k?óã?‰?N¬?•ªÃ?™fÎ?œ’ ? «M?¦¥h?­í?´Ä†?¹ÿß?½è;?Á7{?ÄO—?Çrm?ʽ?Î-?ÑA?Ó˜»?Ôú–?Ôï?Ô3ù?Óõž?ÔÎ9?Ö´S?ع?Ù€K?ØO -?Ö ×?ÖäE?Ú>?Þ¡?â&I?ãÌK?ã®Õ?áX(?܇‡?Öϳ?ÓO­?Ô)?ØšÄ?ÝÓÈ?á{¢?ã+Ø?ã ”?ãZ+?áÇÿ?Þ€‘?Úþv?Ùâ?Üá?ßõ?ߌÍ?Ýßt?ݪ?Þk‘?à!?à5?à\-?àë°?â«Ê?䦋?å…?åOU?åà?å I?ããy?à¥?Û¢%?ÖÑò?ÔÝÂ?×y?Ûò7?á(?ä?å~!?åaÙ?å!k?äÚ¿?ä—à?ä¸t?åK•?åûW?æ{ë?æPë?å"e?ãIß?á•\?á|?âÿ?äO~?æTÓ?溎?äÖz?àÀ?Û´?Ø1ä?Øgk?Ûøg?à1?âCK?â â?àœø?ß‚J?ßXÖ?ßQu?Þg=?Ü×Û?Ü”?Üã1?Þ}V?ß»x?à&–?à9?ß°?ß&¤?Þu?ݳû?Ü<?Ùwé?Ö}`?Õb?×Û?Ú†F?ÞL?àa?à‚Ý?ßåS?Þë¨?ÝÎ(?Û)õ?Õ2À?Írw?Èóf?Ë9K?Ò¸î?Úö?ÞÜ:?ß°?Üwr?ÙŒr?×øÁ?ØÓ?Ù9®?Ú§ë?ÛßD?ÜÏÔ?Ý›T?Þcò?Þµ[?Ý¡8?Û ’?ظ=?Ø¡w?Úø¸?ÝÞO?ß½?ÝÕÙ?Ûg¾?Ù}k?Ùw¨?ÛDù?Ý@—?ÝšI?ÜÂ?Ùåƒ?Ø“I?Ø}ò?ØÈŸ?ØM¢?Ö³i?Ô¡Ñ?Ó…?Òñ?ÔZú?Ö^[?×C?ÖOÛ?Ô©¡?Óïh?ÔdA?Ô…‡?ÒÅU?ÏôŠ?ÎÖD?ÑA?Õ&ì?Øh6?ÙGø?Ø_…?× ¾?Ö~#?Öæ -?×’Z?×û*?פ]?Ô÷N?ÏP?É|?ÇP´?É…È?ÌëÕ?ÍÈ{?ËÔ?ɺ ?Égã?Êܨ?Ínð?ÐIÂ?Òræ?ÒÐ¥?Ñ{?Îúß?ίV?К -?Ó?J?ÔèÛ?Ô­¸?Òr/?Ïb‹?Í‹Ž?ÍóÒ?ϳ?Ñ×?Ñfà?ÑØ?ÐÄO?Ð*}?Φï?ËÝO?Ⱥå?Ç"e?Ȉ?ÊMÛ?˶­?ËF?ÊoZ?Ê‚ß?Ëb—?ÌÅR?Î=¬?Ï^7?Ð1h?ÐÀ?Ðõ¾?б6?Ð -W?Ï}ü?Ïœ?Ð À?ÐRj?Ð'&?Ïñ‡?ÏÙÖ?ÏñZ?Ïè´?Ïum?Ï ì?Ïx?Ï!C?Έ¥?Í;4?Ë¥ ?Éõ?ȱá?Șê?É£÷?Ë^¹?ͨ?ÍáR?Í×Ã?Í{?ËN?É+ä?Çìƒ?ÈBs?Éoç?Ê&?ÉU?È}~?ÈÖø?Ê0S?Ëic?Ì ¸?Ìn?Ìz?Ìè?ËDo?ÊH?Ê:R?Éؾ?Éz~?ɃE?Ê[?Ê»ú?Ë7?Ë Â?Ê^ ?ÉGÊ?ÈR>?È+¡?Èæˆ?Ê -u?ÊÕV?Êwc?És?ÈŽê?Ç|É?Æ ?Ä…«?Ãwk?ÃlY?Ä]¢?Åž*?Æ©F?Ç`Œ?ÇÖŽ?È-C?È-Û?Ǩ#?Ç?Ç?ǤE?È)l?Èf¶?È%?ȳ9?È_ë?ÇÇ?Ç€Ž?ÇG?ÆÈ?Æ`)?ÆQ?Å–“?Åp~?Å‹¹?Ås2?Äë?Ä…?˜-?À†l?¿7”?¿Eã?À6I?Ár¥?Â_ã?Âr©? Ù?Âò?žá?Âê‰?¯Ú?ÂXÁ?Â:?Â\9?±×?ÂØî?Â’Í? ­?ÁÓ‚?ÁºÚ?Á©¤?ÁSC?ÀÂá?¿ÿº?¿ø?¾·?½Dt?½#?½~2?½ß=?½ÜT?½z?½0µ?½(A?½tÚ?ÐÂ?Œ§„?‹F ?‰À½?ˆ½3?ˆ°?‰Éª?‹Îº?]?•á?ŒÀ‚?‹Úí?‹FZ?‹¿?Šód?‹lœ?Œˆ¿?'×?)[?%@?Œû|?ŒÆà?Œíø?C{?Z?fÚ?±?Ž‡?Ž/t?é—?=M?Œ#Å?Šæ¾?‰Å?ˆî–?‰9?‰ÑÂ?‰œ·?ˆN™?‡§?ˆ‚?‰Ÿ.?Š”b?‹?ê?‹xò?‹M‘?ŠŽå?‰jv?ˆxå?ˆQþ?ˆ÷“?ŠA?‹;}?‹® ?‹¸è?‹<^?Š7=?‰•v?‰žî?‰Bï?ˆXÞ?ˆ%U?ˆèŠ?‰oS?ˆÏá?‡gä?†E„?…Ü0?† -?†Ð ?‡”ý?‡³?‡w?‡NŠ?‡$®?†ø{?‡ -[?‡vö?ˆr?ˆ¶t?ˆ};?‡0a?…Þ¹?…y‚?…ñi?†aÜ?†‡á?‡1i?‡²³?‡,p?†H?†7X?‡–?‡å}?ˆj?ˆp?ˆ#Z?ˆ?‡ ?…½¼?…£?……i?{V$?|I”?|Ì>?|¿?|žÓ?{óä?zê?x •?wp‹?xm?xì»?y¿˜?z ä?yë ?yaØ?xªS?x+ˆ?xŠ(?y•À?z„?yÚ#?yKÂ?x¶n?x7Á?wšg?w0ü?w'D?võc?vfA?vL?v¢Û?vè1?vÕï?v/?u¿ ?u»@?uÜ>?uª>?tëz?sÞ‰?rÃ?qÀD?qšß?qä2?r ·?r ‡?r@š?r10?qòÎ?qôI?r7?rap?rA ?r4î?r|ì?r‡s?r6 -?q’|?pÒ?p¤ê?pÛ—?p5¢?nçZ?n.H?n—ü?owÇ?p¡?p6È?pq÷?p_ ?oiž?nS‘?n5œ?nrÔ?nh>?n‚?nu?m|Ï?l1?là?lg?l<À?l7x?lr?m1Ô?mhd?m!?lД?lk9?lL?l1?lI?kÌ>?kk`?kb´?k2k?j¹‹?jry?j ?j!?k"_?k—1?kt¿?kŽZ?k3ô?j9~?iu?h¾¸?hK¾?hµD?h¢ø?gï\?gÅ2?h³?h Z?hSK?h†×?h[J?gËe?g-À?fÁš?fÏn?gjf?g“ì?gKÎ?g;?fËF?fdÑ?fd -?fsã?fab?fF>?fH?f n?e‚l?e]¹?e^?eŽì?ev°?e(˜?dƒ†?d,)?dC&?d Ã?cÜâ?dQæ?dÄ°?d?d3F?dJ¨?dné?dW?d œ?d,¯?d–Y?d½?eW?eˆþ?dÃ?c²%?cKÔ?cÃÐ?d*X?dwí?djv?dŽ?c×?c±ì?c†í?c–ž?c„g?cP?cÏ?cPò?bΗ?b_`?bsí?bª¯?bâó?bëö?b±h?bV?b(?ao8?`ÁÃ?`îc?a?`˜ä?_ñ ?_Qj?^NÚ?]Ö.?^+?^ÜŸ?_‹w?`Až?`ŽI?`>-?`7Y?`k–?`b¿?_†?^ä¢?_Ç?^úo?^9!?]¯?]á ?]è¼?]b³?\òó?\˜å?[)5?X¤?Së ?PÊŽ?P¯B?RœÃ?Sl¼?R=F?QÏÁ?S‡â?V‡‹?X·@?YdÂ?ZŸ?Z’l?ZD6?Y„ƒ?Y¼?Y%?Yq?XŠ˜?Wó‡?X&a?XF??WŠÍ?W~&?XŠ¶?XQÀ?Vá³?Vú?X!?WÖ?W™¢?Wsõ?VÆì?W*¸?XGÖ?XOË?W–¤?W¼?UÄn?T?…?T 0?Tbí?Sò`?S³·?S×?T}?To?T×ñ?UId?T|Ö?SL?R¡à?Sº?S‘–?Tq?Tn\?TR?Rœ?Qª?Qå?RK?Rd£?R4º?Q¾½?Q7?Pà›?Pºg?P«™?PŽd?Pmû?P0?OòE?Ps˜?PÌÙ?OøE?O6ç?O”è?Oî±?Ová?OlÒ?P£?OÊ‹?OÏ?O6?OZò?OŠ.?O/?N?l?LÎì?Kº›?Lu²?L¼?LBÿ?Lô?ITm?I¦B?I¯B?IE×?Hñ²?H¢Ù?H;é?HV…?D,½?Dê?CÒ?B¹?A¬¨?Ah½?@ø{?@iñ?@‘E?@͵?A8¥?AU¥?@òO?@]ê??òÒ?@½??å?>õ‰?=Å?<ãT?<åâ?=rš?>Dé?? - ??¨‚?@„µ?@ñ?@f??¦?@ M?@ÛŽ?AË?@¨Ú?@j€?@žœ?@Çà?A/?A6©?@™‡?@mŸ?@»¬?@hÑ??¨-??:ä?? ??Tº??é¼?@´??^Ì?>Ód?>™5?>Ê ??bŠ??‹6??gí??5?>¡?>,p?>r¿?>£?>.õ?=ª]?=~Ë?=¡Q?=|œ?= -%?<÷_?<Ý?<:C?;Ìc?;«?;_Î?;0‰?:öb?9Èã?8ž?8\Ç?8ÿ«?9Oå?8û„?8c?6ÎÇ?5÷Ò?6?ë?7b8?8.G?8.ì?8xÍ?8Ô?8ëÑ?9(ú?8ãû?8—?8 m?7òŠ?7»Î?7³g?7\Y?7ü‘°>ô;¾>èE>×¾í>•>®ïÀ>¦R¶>­b•>Àئ>Õ²ð>å”>ò¡>û€P?H¢?{ó?Êü? -‡z? ÿ}?&ß?gÜ?<Ë?G?¤†?MI?’?n>?8D?Bv?ïš?r‡?½U?;?kù?[@?W,?¿@?|ò?;È?Z}?€Ì?¯ý?ö?ô‰?ã?¾)?¦…?äŽ?÷+?Åî?ÇÐ?óã?a€?¥è?æ?~´?S@?<?5V?$o?k¶?”·?+?é? *?G²?þ?£8?® ?ͳ?²ç?E®?â¶?ãÿ?KÂ?mT?<ý?Æœ?m?k?FC?Í’?>Z? f?(K?€¿?¢Ž?R‰?5À?| ?j(?Qá?G²? á?Ñê?®Þ?½¢?©Ì?\F?»ï?dÀ?}Š?Ÿý?Bú?ß»?ô/?Æs?W9?}?áE?Ì ?´å?¼‰?Œ0?B?¬œ?uV?Î?rn?Wm?h?Ï?·?Cp?Xš?uð?I€?Çt?" ?#l?k'?r¹?‰?øô?æè?Î?åù?ì€?Îq?Ï??æ|?úR?÷§?3¨??^>?K°?dì?kÙ?o—?Š×?E?fÞ?\»?ïè? n?én?¡Ó?;‡?êe?”?a¸?iÆ?o²?m?£–?¡Ÿ?{?kz?QÜ?7{?8#?#i?F?¨?.?Þ¤?Œ(?Á£?•?¢?èä? -B?ÿ=?×?¥M?w'?Ó?Щ?Àv?Ë,?Ë&?´§?˜Æ?yì??ß?²°?\“?u»?†µ?e_?l{?–f?˜O?}‚?P_?†?Ø?e?Ù?ü³?æ_?ÄÍ?h?rŽ?iA?9l?A?53?9€?))?³?A?éŠ?Ч?ºH? ?i˜? ? ùÃ?¡?r? Õ¬? ¸a? œr? ‘? }C? EØ? ð9? P? &0? Œ? Ñ=? ÍŽ? ×–? ÙÍ? Úp? Ñ”? ® ? z(? _ã? ld? Ny? ì? v? j? -á? ÖÎ? ºö? ÀÝ? ¬»? œ±? z4? *? -¿¨? -à§? Ô? ? -Õ‰? -žÛ? -™Á? -t? ø]? r? c? fû? ŽÃ? Ц? ؘ? ¾´? ‡•? ^"? ƒ“? ~6? 7'? 8 ? (u?»?Õ3?w ?_?Kv?Aø?b?U"?º^?“P?Á¢?¯ò?Ä«?½a?Š:?*L?Ê-?Ø?€Ø?›D?P”?Ï?‚Å?®Ô?©?Rd???rÆ?X$??Í???S$?v¢?$??y?±v?ˆ*?!\?Ñc?—?× ?…?”N?CÜ?7??Ó?z?8F?×D?0?ë“?b€?ˈ?Üj?z??~Á?)í?*Ž?æ?l[?jÚ?½L?Õ ?šh?s?Í?›ô>þ¯>ý„>ü¶q>þ?Æ?‘g?ún?e?…? j?û°?Ù¡?ÑB?–+?L§?``>ÿ˜t>ýWÔ>þž?}?!>ÿ’å>þb¢>þ«×>ÿT¯>þãg>ý«ò>û«&>ûñ|>ý¨ >þKØ>þnÖ>þD*>ýâð>ýZÚ>ý6?>üê4>ûúÑ>üÛ>ü6&>úŒA>ù.Y>úå,>û3>ù¶>ù_->úR·>úª>ú|=>ùLÝ>øUZ>ù]>ø»v>÷/n>ø\>ùAµ>øÝš>øR>øJ>ø„k>øMa>÷˜C>ö/ö>õšè>ö}=>÷U—>÷˜ƒ>÷º‚>÷¢2>÷4¨>öÅü>ö¥ >õJ¤>ô¾>ôŸä>ô·H>õ&×>õê#>õq ->ô|]>ôv>óî²>ôUÕ>õü>ôð×>ôCŸ>ô>ô.µ>ô''>ôAŒ>ô+ >óï‹>ó“Þ>òó³>ò—ô>òëÑ>òéŒ>ò£ >ò>ñ­ü>ñ[>ïA÷>ìĬ>îñþ>ð8 >ðˆÂ>ðÈ >ðU<>ïÚ’>ïeÆ>ïTÜ>ïI>îC6>ì*>êÈÁ>êž1>ëoÒ>ëÞK>ë×Ú>ë6>êŽD>ê²>êç¢>êZ>èÎ>éÿ–>êh>ê=²>ê{'>êwž>ê >êbñ>ê'G>ê6ý>ê>9>ê' >êŒ>éÝÑ>é²p>é/?>èÆ¢>è¬>èØ\>éJ>é$x>èÅ>è˜Ø>èÈ]>èÇq>èȇ>è¥>èeO>èJ>è|e>踨>è‡A>èÈâ>è±a>è>çAË>æñ¾>æÆË>ço>ç4>ç\>çÈ>瀱>ç´>æ‘ê>æŸØ>æh(>åLÑ>ä\a>ã¥U>ãøl>äÝÖ>äp>ãÀÑ>ä¢r>ä·è>ãùà>ã‚5>ã‘ä>å9É>å×ì>æ¸>æHO>æ_>åà‹>å/‘>ä $>ãQç>âP>âSÃ>âzÈ>ã£Á>ãÇ>ãÒ*>ãï·>ä¨>ä%>ãÄ‹>âÞþ>áöÔ>ás†>áâÝ>âÜ>âªï>âvø>â]~>âÁ‹>âFe>âHÉ>âaQ>âþ>âD}>â7Ã>âGn>â—p>⟠>ãn>ãÞ>áó¦>árÝ>á°Ï>☆>⑳>áõƒ>âø>âŽ>á§>਄>ß‚ë>ß­ò>àG‚>àÅ€>áBX>áw8>à²Þ>Þé>ß=>à|Ü>àà÷>à·À>à‘>ßË$>ào>àÄ >às >à€>à‚E>àc>à.S>ßÈz>ßãÝ>à=>ßà>ßbˆ>Þæ·>ßYQ>߆>Þy¬>ÞHô>ÝÎÿ>Ý­>>Ý>Ì>Ýè>ÝD>ܧj>Ü@>ÜÜRi>Ü\>ÛË ->ÛOÜ>ÚõÚ>Û>ÛOF>Û:ý>ÛÞ>ÚÖ±>Ú©>Ú’Ñ>Ú`ð>ÙòØ>ÙÆ>Ùä¨>ÙÚ±>Ù¿/>Ùj•>Ù3>>Øÿõ>ØCÄ>×>׺>×@@>×µJ>Ø6>×ø@>×Ý0>×»2>×™¶>×mÌ>×/W>×m>׈>Ö´¾>Ö¨ì>Ö¨Ï>ÖyÚ>ÖX¨>ÖB ->Ö#ù>ÕÊe>Ôå>ÓÏ>Òš>Òb >Òwa>Ñá­>ÑU5>Óc>Ôe>ÔD2>ÔS’>Ô˜>ÓàG>Óñ8>Ó8Ï>Òy>Ó:>Ò¼æ>Ñî>Ò{[>Ò™I>ÒSB>ÒUÝ>Òuv>ÑÔ>Ðè8>Ñ?>Ñø >Ñôn>ѵ!>Ñ ¿>Ðü5>Î-«>Í!ª>Ïàs>Ь9>ÐqÕ>Ð >Ïœ>Ï >Ï>ÎÊ¥>μŠ>Ï.Ó>Ï.H>Ï<Ú>ÏPi>Ï*>ÎÔ}>Îk·>ÍËp>ÍÄ´>͉f>Í È>ÍAß>Í´:>Í•:>ͪ>>͸î>ÍYþ>Í^÷>Í~|>Í78>Í -‘>ÌEM>È0B>¿8>>·ä~>·3>¾jR>Æ-O>Éí=>ÊÿŠ>ËØ´>ËÚ&>Ëb?>ÊÄN>Ê*W>Êp¯>ÊŠN>ÉÒ¡>Énç>Ɇ6>Éí>ÈÓ]>È(˜>ÇœS>Ç¥ç>È:¾>ÈS>É{>Ê‚ò>Êoò>ÉÎä>É@Ù>É$2>Èô¸>ÈIx>Çá®>Æù°>Æ µ>ÆÉÛ>Æ'*>ÅÞý>ÆAL>ÆÐ,>Ço>ÆÙâ>Ær•>Ƥ}>ÆõT>Ç ý>Æ°ú>ÆQü>ÆÜ>ÆT~>ÅÀo>Å>Ä~à>Å ,>Å™œ>Æq>Ƭi>Ä­>Áóa>Ã$÷>Ó}>ýÓ>Ä€Ô>ÂÝŒ>Á (>Àê¦>¿ŸÎ>½Ä ->»>¹¢>¾0‘>¿~÷>½{>ÀbÑ>ÂØ>Á(D>½¸:>¿ó?>Á·â>Àx¼>¾HÙ>½øå>½|³>½ìì>¿ ø>¿2ÿ>¾³2>¼Ù–>¿_$>À(ì>¿Ý‘>À½2>À„>Àzù>À:Â>Àè>À<\>¿…>¿· >¿Ìc>ÀGÏ>Àà >À^Å>½Ü³>»8š>¹& >¹ò©>½p6>¾^>½ŠY>½JC>¾D”>¿o!>ÀXk>¿ñ>>¾õM>¿$Ê>¾pÜ>¾]ï>¾b¹>½ém>½v½>¼Íô>»l‡>ºÉ>¸àh>¹0á>»ä3>¼úh>ºÄ€>·ìU>ºëu>¹ÑS>¶õÉ>¸j@>¸Ín>¸w9>·Ê>·r™>¸ž>¹.l>·If>¸„2>¹%>·ô>µp>¶`‹>·)>·—:>¶ù¯>¶ )>·n>¸ ->¸Ê>·÷>¶t7>¶É)>¶‹õ>µýÙ>¶zÿ>¶«ô>·<Ä>·c9>¶“»>µL°>µå™>µÐ>µE²>µCW>µ¿>¶:ú>µŒ®>´Jç>´Ûf>µ{ˆ>µ…h>µQÞ>µæ>´Ë£>´Ql>´v>´áú>´Ûh>´Éò>´¥¡>´vÑ>´T>´0(>³Ùƒ>³Îu>³×$>³¿ð>³©>³Ã>³o>³UT>³5V>²ð>²¹½>²È‡>²²2>²±>²`c>²Eˆ>²)þ>²>±à•>±­E>±F>±ƒ!>±Wg>±0q>±>°¾k>°¶,>°¦v>°“’>°š>°rÿ>°Pò>°FÓ>°1Û>°v>¯j>¬‡M>«„>­~S>­Ð>®Úè>®Ý>«Í…>« 1>­å">­>ª…>«ò„>®ZM>®?->­Ðù>­*Õ>¬BÑ>ª¹¶>ªZ•>«­I>ª'>©ý >«Ô+>­}>¬„t>ªÞÃ>ª³>ª¸>ª -µ>¬H¨>¬°]>«Ö>«7>«÷)>ªqÓ>§9>©sP>«ß>ª2>ª˜!>«ƒ">«Ë>«s>«N1>ªôã>ªÓ=>ªüŒ>ªí>ª}S>ª0(>ª}v>ªI >©ó=>©ß7>©ù^>©“ª>©!l>©%›>©Aj>© -‰>©N >©Ö<>©œû>©.>¨pŸ>§Ô>¨“>¨`Ø>¨i–>¨Ø >¨wH>¨ÿ>§È#>§û>§Õ>§W}>§s•>§JÉ>¥ûü>£‡s>£Àú>£^Á>¤oÝ>¦fÚ>¦wÇ>¦ë£>§;Â>¦ÏD>¦>¥³>¥xP>¦)“>¦‘º>¦”Î>¦;þ>¥äJ>¥j`>¥n>¥ßH>¦>¦T«>¦™«>¦@G>¥UØ>¥"U>¥' >¤ÄŽ>¤“Z>¤Ê4>¥„>¥Œq>¤pÉ>¤ì>¥IU>¤áw>¤a>£¢>¢^>¡Ço>¡œª>¢ÜH>¢¢>¢oÆ>¢þF>¤4·>¥#ë>¥i÷>¥#»>¤ÛÇ>¤€0>£Å>£R3>¡Í> áæ> Ï>Ÿè->œÏÜ>™ˆg>˜ÍS>šñ«>Ÿc">£Oã>£Ùò>¢¡å>¡>â>Ÿ§z>žz½>N@>œ×É>ë>©ð>Ÿ´m>¡OÃ>¢’ˆ>£$–>£[>£Ä+>£ÑR>£ •>¢{>¢$+> a}>œšñ>–ì>’N8>J*>’£>–ß>—Y¹>™;‘>šöË>œ>vr>žŠÈ>ŸÝÖ>ŸÞ/> ?Ö> ¼7> º8> ºž> à>Ÿ›Ü>ž5v>›ð’>—4ª>Ž/L>„éx>€ÌT>‚Lo>‰a@>­{>“¥ì>–”·>˜¾Y>šà¶>œ:P>Íš>Ÿú>Ÿ;ñ>Ÿ9E>Ÿ˜+>Ÿ!Š>žWu>Žê>Ñ>œÌ?>›ÛÃ>š6ƒ>˜´U>—9¿>•{9>“;û>.¨>‹Ñ’>‡ÙÀ>…ò;>†©b>‰6>A^>çª>“é9>– ð>—™Â>˜À+>™Ý]>š›¨>›Á>œW>¢>>Ã>œd9>œ -†>œFœ>œŸÅ>œ>x>›úy>›fÕ>šþ>š">˜³ >—†>•¬€>“ ó>ã„>Ž”>ˆL6>}ÅN>mcÁ>eÚß>iÎÆ>vÊ>[÷>†Yh>Šè>-Ë>Ž—>˽>q>‘Ô6>”f>–Ð>—C¯>˜ºì>š<î>šæØ>›#6>›Š>›³«>›Þ>œ_z>œ -Ç>›­“>œ £>œ%>›Ú ->›Þ>š>¸>™J>˜v>—h®>–!¾>•Û>“s”>‘'ã>Yß>'q>Š>E>†ñ>ƒ—>{¥>p^æ>h S>h< >oÊ^>|§>ƒgi>‡]r>ŠãX>° >ló>’>”J%>•48>–,í>—.¤>™ó>™*>™ ->™ÿ·>š/Õ>™Ëc>™‡Î>™ùÃ>š¡Z>›X¶>›Å*>œ?Ï>›Ì•>š:>˜Ãp>˜ƒÅ>š32>›Ôú>œ1?>›‚1>™Â2>˜ˆã>—Õ >—Àa>—¡¬>—_>–~q>•íP>”å”>”ã>’‰*>‘ >§>{À>ŠÆ“>ˆcÐ>…xÈ>”>y‚Ž>nxÔ>aü#>TÉÐ>O*B>VÞ×>d°Z>q\2>zÒu>€º‰>„G¼>‡g\>‰TÍ>‹7>Œj•>Žx<>< >‘j‰>’;>’Ì >“õ>”‘E>•Š>•Æ>–Ke>–±>–ßP>”À >¦>•z¯>—Ú•>—Ìä>—®m>—Ê“>–·B>‘!>’@·>—›>>˜eˆ>˜]>˜YH>˜Mù>˜.>—ê>—j>—›>—u>—;¤>—)A>–ê²>–¥°>–Wk>•ú…>•/*>“Äg>“Õ¡>“Ò+>“[$>’ÂÃ>‘WÙ>cR>GŒ>É¢>ŽÈ<>°A>Œbù>ŠÚÌ>‰aÏ>‡Ÿ’>…jì>‚o˜>Ò—>z¤€>s1>iÙð>^q>P`>>Ðn>7Ïï>F»>V>b:T>ln>t ®>zJU>Äñ>‚^u>„!!>…Ck>‡v>ˆÀp>Š D>Š¼>‹g>ŒGÍ>ŒÐÓ>Éa>Ž‚ >Žáõ>Œn±>}é>„§t>ö>žÞ>·L>Ýé>Î(>ö>‰6Õ>Œ¿Ï>‘,>‘‘ç>aÒ>ˆ÷>LÎ>Ž”“>†Lµ>ŒO>‘Ì>‘@T>‘9þ>‘Cþ>‘FZ>šV>ˆxð>Œ-¹>¢Ó>ŽM>¡>°û>~¡>ƒ¦>úo>Ê>sU>ìt> s>ë®>Áœ> #>U>Žä>Žé<>Žäô>Žœ>Ž7>Ž&h>Žï>¿>Uð>Æ>Œå½>Œyj>‹ô3>Š•Ž>‰F`>‰›Œ>‰Dû>‡Ûà>ˆs0>‡Ÿë>‡–a>‡3¸>†a->…O¡>„6>ƒ%?>tg>~ŒÜ>|öF>y£@>sØ|>i£>hbè>aÿç>Xû5>Uˆ³>K²i>=®u>+•>&N>>5¢‚>Dá{>Ng>U…>`’>dgÙ>eA>nˆ>t|>w++>x¹L>xB">{žE>zK>q{7>uŒ°>wà >7>„ö>„™2>…~>…ˆP>…Õ€>†®>†[º>†¦>†¾N>†Ä™>†ì˜>‡u>†ï’>‡>‡eÚ>‡Rà>‡0Ì>‡s€>‡x>‡d>‡wß>‡†q>‡¤>†ªw>‡">‡=l>‡Õ>‡õ>‡Q’>‡Qk>‡8>‡/¹>‡«>†ã7>†Ú«>†Ð>†Ö¯>†mL>†]ª>†Œ¹>†„Ê>†p >†Yª>†M&>†FM>†4§>†">…û@>…ÉŽ>…ɸ>…°z>…Šê>…wm>…/Q>ƒR¼>ƒ¤;>„U†>Ûf>ƒ|°>„ÔV>„ b>„J>£B>röÕ>~‡;>ƒ`’>~ Û>u—ž>€³->ƒHó>´Ä>‰i>ƒD>‚Ýo>‚@0>‚3L>‚u>€²=>~=’>]7>Ø“> v>bÛ>ÊQ>Ï>†j>VP>Ln>€¶Ú>€|d>€uÊ>€nÊ>€lj>€:¡>€>¡a>5H>~¥j>}b>|šj>|È9>|<->{{a>zŠó>yœÂ>x…Ì>w‹ð>v¿ž>uD>s‚ý>rº§>qWÒ>o¿Š>mð>kÛV>iu¼>fÜ?>cí3>`‚¿>\»Ï>X`P>SiM>M‡o>F¼ü>>fT>3Ý’>%ÄG>Ð>é>)¸>5´Û>?Eê>FÕÒ>M >R3c>V†Ÿ>ZUÀ>]u”>_½G>b$>d‚y>fÁv>h’ >j -§>kZ>lhZ>mlŸ>nTË>nº>o%ã>p&>pz">olF>g©”>kÙH>q)>r2Õ>rÁ>s¾>s% >q)>f~n>k˜e>rtY>qÛÄ>r:š>lo>kÆa>qVG>s;‰>sgÖ>sxõ>s_ñ>rT>ms¹>níQ>rò>p ç>cá>j{€>qÜÎ>qÍ_>rL>qò>og>of>p§3>oL>lþ>n,o>pU6>o„,>nç>l{5>m6z>o!­>on´>p >oò¨>oò>oÛS>oµÃ>oŒä>onê>oF%>oü>nÓ¶>mÂg>m¤c>nF$>n#ä>nè>m™œ>k*R>g†X>i;T>kçô>lžS>lw>l[B>lw¯>lu¾>l5³>kõÜ>kÄI>jÓã>kö>k2è>k ->kW>jî>j­ž>j‹=>jbç>jÚ>i¤c>i.ˆ>i*™>iE>i%›>hk0>h -ª>h¹>hžç>h}>h%Ž>gŒ¹>g`~>g£&>gŽK>g8]>fSk>eÊZ>d»x>eõO>f19>e×Ä>e{>eÇ#>e\˜>dŽ}>dþ>e:á>dås>c+à>_ã‡>_¢1>`K]>_Mû>acš>bÛÂ>c{w>c6Ä>bÂ>b¾œ>bÒ+>bºG>bjh>b!>aò0>`>">W§n>X¡y>`Æ>`Æ?>^îŸ>_œ·>`i€>`­>_¿u>_!Ô>^94>[gè>\ÌG>_,y>_’>^ÒÏ>^zÚ>]Jü>W2ÿ>Yç>]›ü>]tL>[.>YôÀ>\^>\ ¢>[‰!>[[lþ>ZõÒ>Z›B>Zl>Zn>Z†>YÑW>YX>Xý„>X´J>X2`>WÔœ>WH±>VÖ>VI¢>UåŸ>Ueå>To">SK:>P[@>Qk>Q‡>P¤>OÔÂ>N¹z>M~>L Ã>J‘¦>H¿Õ>Gø>Döµ>Bed>?Ì><Õ¨>9Qà>5k¿>0Éù>+?f>$‰J>)¿>ü³>.ƒ>’ß>܃>-z>"m·>(õô>.>>2›Û>6N>9i™>>¸™>@£Ö>B]K>D $>EG>F|b>G¸Â>H§:>I|Ì>J5>JÔÚ>K_ï>KÌ.>Ki÷>K4³>Jë{>K4>I->J_Š>MJ‹>M‡|>HD>E'5>L΢>MÄn>N! >NH'>NM >NQb>NIj>MÑ„>L“>MMC>N¯>Mî?>MkŠ>M¶Ø>MÜ%>L¥>J³µ>LûØ>M‡H>M<2>Lº>M>Mè>Lšs>Iç >JòÕ>LR:>LBz>LC™>L3;>L >Kð>KɃ>K¨ß>K–œ>KU¾>K`Ö>K=>IÚ>JS÷>JÎ>Jó>J€>JTH>J=‰>J6Ô>Iý/>I†&>Il,>I¢P>I4›>Iˆ>I;œ>In>Hò&>H­ü>Hœã>HŠ7>H`·>HC>H¶>Gó}>G¡²>G$ƒ>GmK>Gj'>GC¯>G>Fcb>E%½>FM’>F‹4>FfI>F+>Eæù>EÚ:>EÎY>Eµ>E>DÇ >Ez>E -u>D¿Ã>D·0>DÌ>DZð>Cé>BÀí>CuÆ>Cì²>CÅi>CE›>BBõ³>CK>Cï>BÐ >B´Y>B‘6>BKh>AÛ„>ArŸ>Am“>>è >>™…>A-^>@ÀÐ>A_>A l>@Ýì>@ÚR>@Ó>@=Ã>@LÉ>@9×>@Î>?ÊO>?œ’>?3À>>ÝÄ>?:¸>?Ay>?|>>öÉ>>ס>>  >=ÉP>=Ÿ;>>AE>> …>=øø>=Ú®>=±M>=ˆÄ>=Hµ><…À><>>;1î>5¼l>0®>3§4>8Œx>;æ><,>:ÛÊ>8q>:u”>;=~>;h>;(>:þj>:5Æ>9ö=>:C>:X>:r*>::µ>8uf>6ëû>916>88>7’:>7Ôþ>7¼>80˜>7>4Êd>7¯·>8[Þ>8 ">7»ó>7©>7Èx>5Ûb>3ºö>6£—>7R¼>6½a>6Œ’>7 F>6‡Ô>4½¬>6'>6]I>6R@>6Dó>5îä>4U§>4‡»>5ŠŠ>5F>3Iq>.G@>2I>4çV>4š®>4‡>4>4D>1™5>0 >3®Y>3â,>3žœ>3™>3~`>3[¦>3/ª>2è#>0ˆ©>/ìA>1&i>/„>2 K>2HO>2"ã>1æ?>1Í£>1¶¥>1|B>1>0ýr>0dG>,9ó>.ò~>0©|>0—>0y>/ô>-½Ä>.ô>-œT> ‘X>bø>)û>!6¡>"™¢>+Wˆ>.‚§>-Ø>>.#d>+ç;>#ðÙ>+¬=>-Ü|>-¯š>-TÞ>-tç>-î>,ºª>&Ö¦>!Xs>*X¯>,Åÿ>,Âe>,ý>,2°>+ª÷>*»l>'“>(Cã>%÷>*–Ý>+ õ>*ßö>+ X>*n†>*x¡>*¦ ->*Å>*Tm>*?ë>)ê0>(>%j>("Û>)2>)0[>(Á—>(æ>(È!>(¬>(‚*>%çï>!x>&Ó>'Üâ>'F:>&'>&sÂ> ל>"¿±>&iŒ>&;¤>& >&\>%g®>#QÀ>$Øþ>%=Ï>%>$Ãj>$|M>$&¿>"êî>"7>!ð·>¡">t0>!ÕA>!™L>!+> "ñ>ÿ´>j†>¡Ü>éŒ>¤>Mu>y>mÀ>;ê>áP>j±>y> ¡ã>>,k> lV>Í>%í=þ¾,=ò؃=âôs=Ë—ÿ=Ǻ½=Þ¼C=ï3ø=û -e>²Ç>aô>ï¼> -À> ª)>ëç>*z>Åç>N>uÊ>c2>nØ>·>ïo>Áe>_>úÃ>cl>ºM>M>>æ>o1>’›>½>à[>°ë>4À>à»>]Ã>&>=@>? >9ø>(_>4>(> ~>Á>äF>þÇ>üp>ß >§K>>º‹>­%>œ5>×>d[>]Á>IH>0.>I>Òs>ço>Ò­>¥:>yO>xž>ou>]>?)>¾>øm>ß1>Ï£>¶.>Z)>b§>©÷>†a>šÅ>á¡>„ ->e®>¹`>Uj>!ß>.>:e>'r>@>êï>Õw>Á>¨P>™‚>yò>`e>>œ>ƒ>ÜŽ>cÚ>ÂI>µ3>r0>xÐ>.Ñ>õ>:E>Ñ“>ð>Ô‰>’•>Ìá>G…>[>;)>Á>Ú9>ç>Î&>šd>‡%>}!>X:>0ý>>&”>öƒ>åó>[*>?ï>aÔ>#ë>8Ô>%ü> \>ëÎ>Ε>š;>"~>¢r> ë->1|>I~> Mx>gÔ> ƒ|>ëa>óð>%C>ïk>x>Ô>é†>´>¡L> Í > -5>\>CM>ä0>F>~é>ž>>Ð>®›>Se> Ù®>>F¯>ü>؈>ˆ> -ÇØ> ¨5>²> !.>  -> < > ¢> ía> Ô¡> [N> ‰`> Ùó>:-> „> Ùœ> z£> ‚–> ]§> ¶ì> a„> lÉ> M•> =i> Và> %›> sÛ> µö>ø—>>SW> 7F> zZ> e(> J> -Ù> > -ôî> -Ö> -­b> -ŸY> -{J> -fM> -3O> -ø> -^> -*> áÖ> Ã> ©u> _²> U.> Q`> @ç> "‘> >“K>„ >_>•Å>~>dí>C¡>©õ>m‚>ãæ>ãS>È+>±r>ƒ’>Í >óŽ>?B>s>¸!>Õè>Ï´>¾d>§•>Œ¢>GÒ>Pb>ð >ºy>Ê>€¦>ˆ>™>º^>Ô>>¥ >¢>é>1°>º{>sF>¬>Š)>N->H3>’Ò>¦>òÓ>·7>p,>Qo>æG=ÿ¿=ð™â>SG>1H>”j=ù·=ÿ€¢>·ƒ>°¢>¥¦>‘>gU>i}>¤Í>ÿM>ùz>¤¯>À>Àø>¨C>Œi>`ÿ>A>;>> ->á>¼->±¾>zý>gË>E×>D9=ü'¡=ð~\=õ\Ã=à*¼=ôQ®=ÿ Q=ÿ2þ=ÿ¡=þÏw=þM=ýEí=únt=öTr=ü¬Š=ûÍí=ýE7=üúd=üàK=üò5=üÍ=÷!<=øT=ü¤=ûݦ=ú~É=û -Ú=úòŠ=ø”=ú#`=úQš=òE+=ôÓÜ=úP=ùD¥=ïz§=óeu=ùJÛ=÷@È=ñΑ=÷ÚÀ=ø•Î=øhZ=÷ a=ðàŽ=õ§µ=÷¦â=÷‡Š=÷Sã=ö?‰=ïFû=ñg=ó7=õãÁ=óØq=é¤x=æíæ=òÔ=õYð=õ=:=õ‚=ôß=ô¬˜=ô{«=ôLC=ô =óì6=ó¹¶=óŠ=ó\£=ó(²=òðâ=òÈÿ=ò–¶=òV5=î`6?0Ãq?1æ1?3|ý?5ªH?8B~?9Õï?9Ð?6ÿì|?=´?<µ@?:²Ç?7'è?3°?/à¬?.q!?/þ?0ù|?3{Ç?6G­?9^v?<-¤?>Ü?>ÙÑ?>‡¾?=7õ?;lu?9”‹?7ÏÕ?649?4É.?30á?0·[?-YÆ?*{¶?)Cg?(pn?%â:?"Z&?!Ž ?%ø?-Ï{?4Ô`?8Vã?8‚A?6¨?4F?2L}?2ñã?6¡?9ð?=`‘??üè?AÖ?BÕ?BäF?BE?AN@??˜‹?;é©?5l?,ÑŸ?$Dz?c ?³ª?à¾?#?¦?'Ð_?+¡?.qœ?0Ïž?2ó?1‰’?0X4?0H¡?1âf?3D¥?2|?-Ý£?(‹Å?#öa?!¸Ý?"ò4?&ƒž?)Mê?)ôó?*Ï?.’Ï?4Xc?8©?9Ó?9G?8 y?7a?7cí?8é©?;—`?>E??®»?@'h?>§×?:/Ö?3‚«?-q?(ªš?&=v?$ç=?$«?#›þ?$ ?'Ì?+›=?- ?+‰ù?*Z‹?,b*?0у?5ê?7a¤?7›í?6lt?5Zb?5Ga?5vã?4½@?2°?/:?*L«?$Ô…?!K?!:?$0?'_¸?(X?&Fè?#Ö?"(¡?"@?#¨½?%2A?&DK?&Ä?&($?%!?&!²?*™¬?/òø?3BÙ?4?5¾«?7óÅ?:>!?:ÿ?5ò?/7¤?)pF?'~&?)˜è?-K?/¯”?/ð,?/"M?.kS?.tœ?/éU?2ó¼?6}??8Õ­?9!K?8$à?7H?7îú?8Ò“?9ªj?:T?:±y?9L'?6Ê‹?4Ö8?4c¼?5)¢?6~¬?7Èê?80\?6Ó?3õ­?1¦¸?2Ê?4¢?6¼?6r3?3Ê ?/ƒ/?+ W?(rü?(°’?*¼I?-3Ü?/[m?0¡ó?0ô??1›w?4S?7xs?9·ó?9o?6É8?2¸x?/+ä?.•‚?1šl?6Ô?9/:?:®†?;òÍ?=¨”?>–b?=j‡?;Â?9á¬?:y«?;mJ?;ñÓ?<¢?=—¾?=„?;N­?8Ô?62ç?7G?8–÷?8?5O³?2Û`?2ùE?5Iv?8Q?: ý?:Y„?8×#?6{#?4£Þ?3›®?3a?3’J?5ÀÃ?8šE?:ŽÖ?;u?;Îm?;1 -?8«¬?3í?-å¡?(ð?'{?*m8?/?2’U?4 Å?4a¦?4¨?3:ç?37?4£ø?6ƒW?8!3?9¾‰?:W?7« ?1½Ä?,(A?*¡ƒ?-;¢?0©P?1ÄX?0s,?.âu?.eV?.¿I?0$?2Â?6^X?8öE?8–”?4Ëc?.³ ?'éG?"ëH?"ì ?(7ô?.¾>?2^?2͵?2Ϊ?4Ô•?8Ža?;™ñ?< é?9ï?4×*?.Ëv?(D?"±æ? É??$µÞ?,ëž?4Ͷ?8ù·?9h?6t2?2m„?-¥{?(÷}?&£?(ª?*qí?*„?'Oš?&#¹?(æx?.Ÿ2?5Aµ?:š)?<šÌ?:E°?4A?,)^?&K¶?%ÎA?)ê~?.í?/¼ ?1 ?4èÝ?9ªá?;·€?9¹?6C—?55?6ÝÕ?8d?6ÿ:?3A³?/-?,…È?>ɪ??4ú?59Ç?8]¦?;%›?;¹Ù?:àô?9Ì5?8m5?5½Þ?1^3?,Ê,?)î?(ç?(ÌJ?)ËG?,}—?0Së?4q@?8UJ?;!ø?< ?;S!?9ü?5,ç?1 ?/eð?1{1?5GF?7ªÂ?7s%?5«B?3­Ô?1Ït?/°?-j$?,MÏ?-Ìl?1z?4Ín?5{b?3Þb?2«f?3Üz?6Z?8û?8Ÿy?9Q?9ÿ?8)Å?6Y>?3Ôm?0K¬?,ƒ?(Š|?'U?)°¸?/5?5Iv?99'?:‘B?:#¬?8 - -?4”%?1ùÅ?2:?5¥?9D?:äw?:e?6Ǫ?2œ5?/we?.‹¬?/¨6?1?1>£?/Í?-$¿?*#Æ?(kY?)hÛ?-T·?2[?6¨?8c¾?9>?9¬Å?:(`?9·?8g^?7C8?70l?8 ?8æà?9€?7ö;?5èc?46É?3Õ?40ú?4J¿?4M‹?51:?7(¹?9U?:ׂ?;Z€?:ÏÏ?9„^?8K@?7à?8ó?7ç5?6¥N?4¯œ?3 ß?2Ð?4£#?7þÄ?;A¡?=1S?=ɯ?=¤ñ?=.Þ?<‡?;¹ð?:Ï}?9ÿ©?9êŸ?;H?=???_:?@š?@´ú?@‡??‡^??~`??üv?@žð?A«?ADí?Ab ?AŒ¡?AÜs?B\-?BåS?C+ß?Bó?Bð?@±Y??Â?=…c?<<?;^.?;>b?< ¸?=’??[?A ?B£ä?CgC?BÉ?@}?<ç¶?94?6Íô?6CŒ?6×K?7E?6ÐŒ?5³n?4¼¥?4æ?5J’?6›õ?7ôà?8×á?9<ƒ?9ŠE?:²?:Ê·?:öÉ?:€ì?9ùÓ?9Á±?9lX?8"§?5vR?2?/¤v?/e¤?1?3jK?5—­?7€Ü?9GÖ?:Ù¢?<K?<Å?=Z?>z??+©?@rß?A¹Â?B²Ò?CS?B˜;?A0Ã?>ù?<?=®^?;¸™?9üì?9µk?:ÿµ?=Ë?? Á?@x.?A¤k?Bñ'?DŽ6?FB?G8Ž?F\‰?C(?>Jn?9™˜?7N?7WR?:é?=çš?AŽü?DD%?Eüû?F÷Õ?G*ð?FK?DQ?AÂm??b ?=Ó÷?=OR?=‘‚?>?>˜˜?? ??vÍ??˳??ü?@5÷?@Öâ?B/Ú?D8Û?Fƒ0?Hs@?I³£?Jcö?Jœ–?J%ó?Häá?G7ý?EÂß?Dùë?Dù ?E‰ù?FWL?G8ä?H!?Hïï?Ikb?Ib5?Hö;?Hy?H=?Hæq?IŒ!?Jg?J<9?I’Ù?Gì¹?EN?B:7??¡ý?>iU?>ÕÈ?@T}?AØ?B’*?B,Ä?@¥å?>‹?<æb?<®‚?>b´?A’r?DÈ7?F•æ?FÓ±?F¾¯?G»?IÓ?K‰?Kš?HFz?E ž?Dq³?Gù?Nmï?Te}?Vá?Qˆ?H|í?>˜7?7â ?77G?<Ó?Eô ?N6–?Qž ?N%?E ê?:ï~?5t¶?8|?BºC?Re¡?b¯ö?oŒ~?v³?thî?iþÑ?Xã?Dsü?4ƒv?.»?5Zà?EÃ}?Z¸?lŠ_?zl?e8?ƒË?„6?å¥?wÇ?dU>?L­Ž?6fÔ?'>§?#?* •??Õ´Ô?ÝÈt?æÓ?í1°?ñÁõ?óÉ?ñq;?î—x?ìœ6?ì¡?îeù?ð¯]?ò6¶?òØu?ó?ôæŽ?÷ì?ùš¸?ûê·?ýJN?ý9 ?ûaG?÷j’?ñl‡?é`a?Þ#n?Í’“?µä0?˜š?y¿˜?Z !?b›?‡Ql?¥Ôª?ÂYË?×€°?å4u?íx??ñÇ!?òŒ%?ð¤?îL?ì}Œ?ëêÙ?ëM2?錥?æp%?âÃí?ßu ?ÜÔ ?Úγ?Ù#?Öî;?ÓT?Î%J?È3 ?‹Â?½³U?¹Æ?³]V?¬-?£Å±?šõº?‘›­?†ËÓ?r¹u?R]|?0 ˜?œ¥?˜­>üK? -Ã$?!Øu?=‡S?YL?rØÒ?„Ù\?#õ?˜’ê?¡Q,?©XL?°n?¶c²?»oŸ?À/!?Å?Ê5?ÎÝ ?ÓYU?×´ç?Ü ?àeé?äžl?è˜À?ì]=?ïÉ?ò:ï?òàQ?ñ´?ðÖ?ff?ñ•Í?õ0?øÞ¼?û"v?ûD“?ù\p?ö†?ô¤?õ7ã?øÌ•?þ‰h@Å@‹9@è€@ý¥@_(@3Â@ŽÎ@U @I·@PØ@^@?Ê@²X@t@e@Ç$@@N@ry@ˆx@#)@Žþ@Ð?ÿ~?ü;(?ùé,?ù+e?ùùÅ?û÷®?þ¾;@¥@²i@é@à³@ø@Ã"@VZ@£µ@O"@:Ñ?üI?ùoŒ?ú?ýAî@–3@ÆM@Ï@ö£?ÿ#Ë?ü'k?ú ê?ù ?ø®?øÔj?ùª{?ûm?ü^¤?ü1?ù’×?õh«?ñç:?ðjþ?ð´î?ñ´Ÿ?òaÃ?òBG?ñ9á?ï?ì4ƒ?é©'?è²?èW×?ç$?ãV“?Þ?ÙÝK?بa?Ú#œ?ÜU”?ÝÇ?ÛMî?׶:?Ó8>?ÎÀÖ?Êö?ÇÑ’?IJÌ?Àö ?¼QL?¶Ó°?°ºO?ª'÷?¢ü5?š÷å?’s?ˆd?{Ô?d¨o?K”T?3p\?!o.?†:? µ‡?2(?Iý?b¹é?y -?†&ä?Ž¦´?–^?Že?¤t@?«27?±É?¸|?½º,?Â/Û?Å[«?ÇÓ"?ÊU%?ÍG?Ïê?ÒÓÀ?ÕÁu?Øwì?Ú–ý?Û†Û?Û@?ÚÃ?Ù¹L?Ú±?ÚŽQ?ÛPÆ?Üæœ?ßß-?ãø?è)Ì?ëȼ?îöÚ?ñÃr?óí.?ôý4?ô¯?ñÎ?íO?ë û?ëwÉ?î‘?ñŸ?òµQ?òó ?òä ?ó'Ñ?óL?òiÈ?ðgŠ?î)¶?ìºÀ?ìŸ?íœ?ï 5?ðL\?ñ?ñ@?ð´?ðs9?ñW?ò d?ò®Ó?ò¼F?òB?òœ?ð#À?ì!•?æ¼ô?âa*?á,?âàD?åª?å¥ ?äj£?ãZ£?ä?æG?é*Ð?ë$?ëñæ?ìqú?ìaÔ?ë„ô?ê§h?ê·†?ëâw?íð¼?ðf?ò‹ ?óܺ?ô2_?óiÅ?ñ'W?í|·?é )?ç9?æ%?æ¯!?è²?éLý?ê}ñ?ì4Ú?îT ?ïù¤?ðžG?ðl8?ïñü?ïÜÔ?ðg?ðÞ~?ð |?í4?êf„?膻?褑?êK?ìOð?튕?íµL?íÚ?ëe×?çÅæ?âjÏ?ÝS&?ÛHõ?ÝÍ?ãê—?êbÆ?í?ú?ë¯?æPa?âc¤?á-g?â”–?äôÚ?æ¼G?çài?èÝn?é®5?êaÎ?ë²?ëã?éŸ?æ¦]?ã0?àp?ßc®?ß~ø?àZ?áv‹?âÃã?äz¸?æi1?è -?é¨?é?çwœ?äŒ!?ááB?á)ÿ?âÁ¢?åáñ?é8ö?ëŒ-?ìKï?ëŒÌ?é†û?æD?ájö?Ü›á?ÙV†?Øqo?ÙÕ÷?ܼ ?ßõ§?âÃó?å•?æ†#?æ¿?åO2?âÂõ?àR?ß0?ßI”?ßß?ÞêÄ?Û_?ÖdÒ?ÒÀÁ?ÒOÏ?ÔfÞ?Öös?ØL}?Ø s?×(/?Ö"µ?Óò·?ÏÞ%?ÊàE?Æs?Ä 7?Ä‚$?Ç=]?ÊÉ>?ÍO ?Í8o?ËB?ÊÖ?ÊÉ?Ì©?Ës?Çœù?Áý€?½Ÿ?¼Uˆ?¾?ÀgG?ÁÖ?¿]Ü?¼¡%?ºDó?¸W?µÇ?°ÈÛ?«Õ³?§¬p?¥Ä?£*Y? šß?œ|?—;J?‘Û?‹H0?„{?w/ ?c4C?L»$?5(°? =?\X?$¹?˜™?/¹a?FŸn?\ÌÛ?p{‰?€Ïî?‡Û¦?Œø?có?“Iÿ?—%_?œÈ$?£À??ª›3?°Ó?´) ?·kC?ºQ÷?½&?À0?Âö?ŹÇ?ÇÐÐ?ȹ?Èn¼?Ç’è?Ç [?Ç °?ÉnÄ?ËU“?ËÓ ?ʵ??Ée»?ÉŒˆ?Ëúf?Ðb?ÔÙ?Ö`O?ÖnÚ?ÓØå?ÏÆ?ɼ|?Æô?ÅÔ ?Èù§?Í•M?Ñ>?Óì?ÓÇ?Óx?ÑÅã?Îú˜?ÌzÚ?ËÁ4?Í"Š?Ï}?Ï¡Â?ο?Î&}?Îçž?Ð]g?ч†?Ò?½þp?¾~c?¾Â‘?¾³•?¾[°?½ã9?½uè?½7r?½ -£?¼²ý?¼X›?¼"–?¼ š?»ØÓ?»w?»Þ?º¡ñ?¹úr?¸èå?·C?´ùD?²º?²ç€?µ@?·dÉ?·Ã³?·¾è?¸ -t?¸€Á?¸a?¸G ?¸?¸0?¸Œâ?¸ß ?¹?¹!î?¹"U?¹ ï?¹?¹ô?¹)?¸of?·~?¶X(?µ±?´8º?³üG?´7%?´K?´ÊÇ?´µ^?´rA?´pQ?´Òu?µT–?µž&?µ¬Ð?µ¨§?µ¨Ë?µö?µí?´Æs?´³c?´§[?´`…?³Áç?²þD?²†„?²r?²˜å?²ì¥?³!Œ?²žf?±J†?¯¨#?®e$?® Z?®šK?¯sÈ?°>?°ÿ?¯Ë ?¯¬¬?¯Ïá?¯ùÁ?°E ?°¯?°²Ç?°)P?¯¯¾?¯‚f?¯^Ÿ?¯3’?¯8ï?¯nÆ?¯”Ø?¯&?¯t?¯aÝ?¯ y?®£?®ô:?¯Èq?°/?¯òÎ?¯EÛ?®uN?­×_?­]?¬Ø)?¬Wø?«ŒK?ª‡?¡­™?¢9b?¢Š[?¢‚þ?¢XE?¡þ’?¡&*?Ÿ{q? ?œ–»?œÒ?žFz? Ÿ'?¢~¤?¢Ë?¢˜? Ân?Ÿ1ñ?žRÓ?žHF?ž{á?ž²»?Ÿ6?Ÿè“? ø±?¡õ?¢n?¢3?¡­q?¡ Ý? '¤?Ÿ=É?žý?Ÿ-A?Ÿq?ž®?éI?ÈÕ?ž ?žE"?žQ‡?ž.ó?Ч?sÎ?nY?×ü?ž3ù?žTL?ž£?ž¿¿?žÊ?žÎ?ŸRl?ŸÖ¥?ŸûÃ?Ÿ–©?žÀJ?Ëâ?œÞ†?œ'u?œ@?œ5?|Š?žv ?žÿ?Ÿ,Ä?žü˜?ž`»?Ê/?Œ!?˜ï?½í?Ø1?ž³?ž,—?ð?“2?’ü{?’È4?’“¨?’þ†?”J?•Ym?•!ù?“òy?’Æ@?’R?‘¼€?’y?“$õ?”Aç?”úÝ?• -w?”›€?“÷Ä?“Ž ?“ùV?•(?–?x?–¡]?• ³?“Õ?Ö¬?Œ?ŒòÀ?Ñ8?ƒ3?LØ?Uœ?Ž#$?¼¥?ŽFþ?ÎÖ?‘¹|?“A?“œÃ?”è?”š?”:?”aê?”?”}'?”+È?“wê?’áH?’ƒ?’Bm?’Ø?‘úª?’ -Ð?‘ÜÔ?¹f?ŽòU?-s?‹œÇ?Š¦¬?Š Y?‰w!?‰ ì?‰8¥?Š_?‹07?‹±V?‹)?Šæ¾?‹¶ ?N?ŽEM?ŽU^?{Ù?ŒÔw?0%?Žp«?êp?‘"³?‘Ç×?‘Å:?‘gL?‘*ø?‘-²?ÁÇ?ñú?•à?¡¼?‡¥?S*?Žï(?ŽL¥?Ð.?Ð?ùè?Ž(Ù?Ž7p?Žü?áÈ?Œ¶ü?Šªe?ˆþ?ˆÓ§?Šj²?Œ}#?mT?Œ×°?‹­f?ŠŽ;?‰Æ?‡ÔÌ?‡Ð?ˆ6Ö?‰Ã?ŠÔÑ?‹rz?‹*£?‰ñf?ˆ=?‡\›?‡½m?ˆù—?Š˜%?‹Äá?Œb,?Œqr?Œ 8?‹Ð‹?‹í??ŒCG?Œ}0?Œþÿ?~_?‚L?sI?a#??‚—.?‚#˜?‚k3?ƒX -?„eá?…u?….M?…8??…8?„®Á?„Dþ?„/Ì?„G‘?„FR?„ #?„X?„O?„V ?„t?ƒ«?ƒ`~?‚ø±?‚²‹?‚°T?‚Õ ?‚ºÔ?‚r:?‚y§?‚Ó›?ƒ7»?ƒ{;?ƒˆŠ?ƒˆº?ƒ£[?ƒÆn?ƒØm?ƒÆ°?ƒK?ìV?Ýï?|¸Ï?|U´?}ê¸?€ C?€Ò??€ÊM?€”Ï?€Ê ?G®?ÉG?‚û?Þ÷?c?n?€òø?€òÄ?[?1X?E¦?,Æ??¥?€î?€Ôƒ?€Ë¯?€ö?€è%?€¡*?€xÔ?€;°?®ö?~íå?~HÂ?}I?|è?}*?}™A?}Ô{?~Ž?~¢?vs½?vK‚?wVg?x‚1?y(±?y.}?x¬?wãŒ?wwç?wô?xÙ1?ySÓ?y ¹?xbc?w}x?vŒð?uò*?u5?uKÑ?uU¢?ub‡?u?•?u+?u*?u?Ý?uG?uMž?u#?tºn?t.š?rú—?pÒ_?núE?n[(?na}?nÜp?o·?pK?p¨?p—\?pÚõ?q=?pÞ†?pï±?qk?p˜Ó?pU9?p¡¬?pá_?p³R?oèg?nÔï?n:f?mëù?mÒ?m&æ?m0,?m²¥?nl’?oQ?o‹?o»?oOH?o>è?n£à?n]?nOË?n„?m¹?låñ?k¨q?jwl?jP?j:H?kó?kþ¶?l@;?lUI?lên?m-3?lÀè?l>j?l)?lø?k›­?kS¯?kv¹?kd ?j÷?j­q?j„Ë?jÄ?jøò?jª?j]?jí?k¤?j£5?ión?iHÌ?i*?i"?hk?gïg?g‡’?gr˜?g>`?fð¡?gB?gžS?g‡Ç?gO@?g0þ?g>¡?gn‰?gúÈ?h€?h[¡?g©M?g!k?fìo?fÃi?fÎ?fô0?fuh?e²H?e“?e±È?e²$?e°±?e”\?ee?dŽ×?dÊØ?dý¶?dâ\?dצ?e+x?ešè?e¿t?e€b?eE?e*W?euI?eU?dþ\?dÆF?e’?eÄ?e»-?dë+?dwÅ?dy_?d¶ê?eâ?e)ü?d­~?d>”?dM`?d»*?dîL?dŸÛ?d¢?d¼Ú?d{Æ?d?cÙê?cë°?cöl?dñ?dfµ?d00?c•??cm×?bû ?bF?b ê?aÿÙ?a~•?`â’?`@™?_Rß?^Ð$?^—Ú?^!¬?^HÓ?^ïb?_³µ?`±?_Ç?_ŽB?_ÇZ?_Êó?_mX?_Lô?_ ¸?^¼ö?^–t?^˜Î?^,Ÿ?]g>?\åë?\p?[ê±?Zaù?VÝk?R÷H?P¶L?P-á?Pî*?R4 ?Re–?Ré?Rª•?T¬Á?V¾æ?Wæ=?Ẋ?Y]É?Yƒî?Yx‹?X×µ?X%ò?W×?W›9?WC?VÒ?V»é?Vaˆ?Uõø?V@?V?O H?O¡²?P6"?OùÐ?OI ?OG?N•L?NA¨?N²õ?N÷-?N\­?Mw?Lé”?LEæ?K»Ó?KhH?JÛ¶?J¨ø?K#*?K(+?J¯Ç?Jf•?J2ó?JU6?J˜x?J}?I¢ë?G£‡?Gñl?J~!?KZ›?JÛÖ?Jil?Jz“?J1?Iò8?I@j?H¾(?HÛ|?I\?I ?HÚS?HrE?H-á?H<‹?H`?Gþ–?H’î?I+?I ?Ht?Hr?H)£?H›?Gþ?G÷é?Hè?H2¸?Gì -?GÜ›?GêD?GT?GFè?GWç?G'ì?Fä?FÎ÷?F[?FMf?Fut?F„o?FÜ?G‘?FñŠ?FÊI?FèŽ?G9?Fp?D×Ú?CIŒ?BŽÈ?CQ?D>^?E%T?Eá?Dt?Do?D™?DÝ!?EÆ?DpX?CµK?B·ò?AVe?A%?Aã!?CÁ?C{æ?CB?B®m?Bä`?B‘?Asþ?@©Z?@AB??ÑÎ??ïz?@gç?@/@??|Ö?? ˜?>t?=º•?>‡?>òâ??:n?>_7?= ?;Áª?;Þ?;/y?<B?= -P?=µž?>Žó??@??Æ?>o²?>WŠ?>õq??M?>ýž??%¦??L`??ur??ŠT??¾ð?@—?@Cé??í?>ø+?>j8?>f2?>E5?>tB?>»ž?>Bd?>4?>W?>ÊÅ??ú?>ö!?>È“?>¦?=2Þ?=®?=XB?=m-?=)ó?<¼¬?<…Þ?<Ω?<Ì? ?2›‹?2Aá?2¬?26?2b?2E?2[©?1·\?1Ÿ0?1žl?28?3Æ?2°Ù?2²?37}?2¦?1Ò’?1€j?1Yk?1;~?1ú;?2¤Ú?2Áæ?3P$?3Oò?3:^?3˜?2Ñ?2®œ?2.ª?1¸Ú?1ÜZ?21—?2Zf?2?0ç?/k?-"R?,ÇC?-èÄ?/â—?1d,?2#/?2³¾?3Z?2õÄ?2.O?1rÈ?1Ð?0Ú¦?1I?0÷?03?.Ï]?-‡x?-ÉP?.¥f?/ Û?0”°?1 d?14`?0® ?0+N?07,?0[#?0‚?0ý8?0ýÊ?0,?0‹m?0c·?/Æü?/P?/)ù?/,:?.œh?.Žk?/3?/ä?.?.0´?.8{?.†°?.*Æ?- ™?,‡Q?,Rn?,½?-Œð?.?.8Ï?-øå?-¨t?-Y‚?,ù2?,d¸?+Ì -?+ß|?+é5?+}Ž?+?*ÉÔ?+i?+¡ˆ?,$?,)—?, ±?,”?+zu?*<­?'ø ?%}è?$Ë?#ìm?$Ï?&£o?'Í…?'ñÐ?(_m?)/O?)—?(™¯?(¶±?(!û?'Cµ?'¶?'´1?'‰t?&ãh?&Øò?&¥?&Èš?'&?&Û?& Ç?${ª?"Ã’?!•ã?! l?!vÀ?"¿ƒ?$d´?%^2?%{ ?%—Œ?%ñL?%Б?%‘ù?%Þä?$þå?"Ã+? x?¹³?Ù{? )÷?!tZ?!^Ç? c? r? žŽ?ù?Äê?×í?ú? Ü?H?&Ö?6\?Ö€?¬Æ?ž°? ?â? ùT? -½Ý?:å?Y?W¬>÷SÖ>ê\.>Ù¦˜>ÅhÜ>´/¸>¬]˜>°vz>À11>ÔèÈ>å€>ñhd>ûp0? -‡?¼? «? ¸•? æ-?±~?•Q?ò?¾ö?ŽÏ?6?Yž?G?óm?®®?J•?ó³?\}?‚?Úê?‚?.s?kœ?9s?Û?ÔÔ??e?ƒþ?µÞ?æŒ?Õ?Æ?ªØ?gý?K,?ù?Éa?•I?t -?¨½?‹¨?0¢?¨?þc?!6?ë?õz?EF?`C?t]?0?”ž?„è?˜Ô?[R?T:?ú@?¨7?äë?í?á§?÷¨? ·?ó²?œÊ?Id?ß÷?T -?ñ?L]?¿0?¼?îÌ??Öm?S ???5Ù?>Ì?uò?™•?~ ?\?'ö?ð?¨z?f¶?Ž+?¢2?ŠÃ?_ƒ?óD?…ö?^r?ó6?¤‹?ç ?g:?ë?y¤?¢?<5?£ê? ª?s°?mÚ?„L?Ôß?ÖÕ?×k?i?“E?Š¹?¢,?Ÿ*?f)?e{? ›?‡ã?<Â?|è?Èø?4ñ?WŸ?5'?cy?Zj?4€?'?ö›?ç¥?àC?"š?N(?C¼?;?Ô,?ÉÉ?? I??:™?â?Õx?û@?ýZ?ì÷?èŠ?ã ?Å?ž–?…c?YÖ?P{?@©?z?òc?æÒ?»9?~O?gÞ?p«?5]?Jì?¸Ÿ?8E?sø?¼}?¶¦?›?p©?3‚?©Ï?0ð?J˜?ª°?ØD?ÅÓ?°G?” ?=j?KT?Ö?3n?`#?<³?næ?Á?˺?®S?…?PÐ?M|?X‰?Ib?6?$‡?öw?¡›?~Þ?†i?D5? ß?hš?‡±?xc?`¦?J,?4»?À? c?ëß?³z?I?2»?]ç?D¥?õ\?Ëa?œ?•H?²?Yß?x?6?Iƒ?. ?³?e?4?}?$"?)ä??Ê?±È?ÅT?4?-š?:˜?`?Rt?þ?ÿ„?úï?Ë?Ñ7?ÓÎ?XÙ? è™?:O?ka?Yì?"Û? ã ? îQ? Ü‹? Yá? ² ? ‡ ? §P? ä¹? H¿? n? U3? /í? Þ? ÒÂ? ‡þ? o ? ë? Ëy? ƒ/? ®? -×? 1? l¦? pÊ? ” ? ¯H? UD? -ô[? -ÿ¼? -øG? -ž$? -û? -À? -Íã? -Ì? -Øá? -¶E? -l«? -H? -TP? -Ç? íö? -2ú? -i -? -L˜? - d? -? -? ¾? Ÿ? Â¥? ð»? †? ? +M?l`?­?;?Óø?ÚG?„¼?ëW?ŸB?c@?A?òã?‰?¹?Ì?¬? -R?–¯?àõ?¸K?ýb?T?Í?)?øÍ?“;?I ?šÝ?ßQ?µg?Dw?¢ÿ?• ??8ó? ?u¹?^>?æ`?ON?%À?ÿZ?Ž?Ö ?K?ý?T–?Šó?ŠÚ?aÍ?b¢?#p?ÎP?ñF??c'?uð?Ö?üb?ŸM?Ó?J?ŽL?,?"Ý?e®?Ñ“?v ?#?F?<&?þ9?’b?“ì?oþ?ô?Ì“?²?Ú?Г?8p?“ä?—Ÿ?qö?5 ?iš?:?.j?Tò?P«?Éó>þù? 9?y?8ÿ?«?Âk?À?áÅ?ij>þÓÚ>þ ->ÿVŠ?A+?Š£?ÂF?¾Í?f ?Î? -ï>þ^Ý>üÀÎ>ýj;>ýD³>ýû¯>ÿjø>þ·7>ýC0>ýÖû>ýÖ™>þ8|>þéÄ>þ°>ýzž>ý])>þÒ>þÀ>þB_>þ1‡>ýÛˆ>ýU•>ü]J>ûÔ}>ü™ð>üÐá>ü‘>û¢Ì>û85>û Ì>ø*ã>ôcò>÷|m>ùP>ú*O>úò4>ú]‡>ùË,>ù{>ù£>ú>ùá>ön÷>õ%L>õ>>ö¯ù>÷cÀ>÷Dê>öÏô>õSÙ>ôŽs>õª±>ô& >ñÉy>óò*>ôÀ<>ôŽ>õþ>õ-í>õM|>õ$Ü>ôÔÇ>õH>õ+>õ¨>ôù>ôÕž>ô—Ñ>óâà>ó\>ò¸³>óä>ô>ô#>ó:>òçY>óPŒ>óª>ó®×>óu7>ó¾>òÆt>òÎ>óÕ>ó:V>ó>ò¸@>ò>ð±Y>ðp>ð@ï>ðÿ,>ñZ>ði>ð N>ñ?>ñg>ð†Ø>ïîµ>ï,é>îoÝ>íæ>ìðÌ>í¥>íþR>í¥ÿ>í\Ã>î Ä>î¼>혣>í ¢>íA^>î[§>ïtÒ>ð6>ð -´>廙>ït·>ï‚%>ïâ>íÞÕ>ìÜj>ì3>ëÞµ>ëÈ`>ëÖÄ>ì>ìT(>ìØã>횃>íŠ7>ìNG>ëe>ë»>êÆ;>ê÷Ñ>ëÇŽ>ì”Ú>í,é>í"þ>í -¯>í©>ís>í®X>í‘J>íB‡>íw¦>ítˆ>í[„>í!2>ì™>êç¦>ê ì>êi©>êñ‡>ëhÃ>ë]>êâ±>êBL>éÔ·>èº/>æÝÍ>çB>è*O>èa!>éxf>ê$t>é¸ >è-­>ènÚ>麔>ê->éг>éR’>é ª>évÍ>éÝÐ>éèŸ>é§u>éuÅ>é^W>é3>èÑ£>èãÈ>é¯>èÊ>çÝq>æä„>çÁ‹>çra>æìñ>ç?>æä9>æï“>æC>æY>æj>åÜ|>å?Ð>å±>åà'>å ­>å&å>ä;>ãÊ>äYé>å7>å>äæ>䜕>ä_½>äQd>ä">ã\ï>ã"{>ãvj>ãx8>ãc>âï?>âÎ$>⯿>áoK>ßSó>ßa>à w>á/Ø>á°s>á¬U>á•>áto>áT>á#>àä>àÑ8>à®f>à7>à6q>àM¥>àˆ>ßýÌ>ßò+>ßÒÃ>ßJ[>ÝÒZ>Ü5>ÚF >ÙÆ>ÚNÕ>Ùt>Ø_>Ûõ>Ýž>ÝuÄ>ÝƉ>Ý¥ç>Ý~Ð>Ýš±>Üeô>Û#>Üv4>Ü"þ>Ú÷>Û¶ð>Üe>ÛÊÑ>Û¿\>ÛÛ¦>ÚÔ¦>Ù&>ÙzŽ>ÛYÿ>Û“÷>Û\ß>Û@b>ÚBæ>Öªú>Õµ×>Ù5A>Úu=>Ú™>Ú‡A>Ú 2>Ùl‘>Ù;†>Ø£>Øw#>Ùj>Ù†˜>ÙŒC>Ùˆ>Ù\¢>Ù -w>؉>×±Ê>×`>Öÿ½>ÖUž>ÖÊÐ>×¾>×àÝ>ב3>×Dë>× '>Öòè>Öñf>Ö²ò>Ö„“>Õ+±>ÐÔ‡>Ȧ¼>ÂfD>Á]>ÇvÛ>Î}o>ÒÂ6>Ôœk>Ô¸O>ÔÚ©>Õq>ÔäS>ÔYH>ÓÞp>Óìv>Ó±û>ÓÃ*>Ó¯>Ó¦;>ÓßÖ>ÓË­>Ô ß>ÓÌÆ>Ó[>ÓÑ>Ò¨+>ÒÄC>Òtæ>Ñð>Ñó$>ÑãÇ>Ò2a>Ò) >Ñá¾>Ñm>ÐcE>ÏÕÐ>Ï’>Ï->ÏÚ>ÎßM>ÏS>Ï*Ì>Îì#>ÎßJ>ÏA>Ï2†>Ï]>ÎéÛ>·’>ÎI´>ͦÝ>̾c>ËØŒ>ËÀb>Ëò ->ËáK>˳­>Êvè>È¢Œ>Èø>Émq>ÊZl>Ë¥s>Ë\>ÊŠ¬>Êñ¬>ÊDÓ>ǘ1>Ĩ!>¨>ÄéÑ>Æòì>ÆS¸>È/C>Ë ->Ë.;>Èß?>ȹ>Ê/;>ÉÃâ>Ç‹‹>ÇÄ>ÇÝ>Æ«v>ÇXv>Æ•>Æü>Ä÷p>Åé‚>Ç^>Çg>Ço">Ç0>Æò»>Æ>Åx÷>ÅmÉ>Å b>Å£#>ƹÐ>Ç}>È ®>È®w>ÇA>Å9ß>ÃD>ÃŒ>Ä÷“>ÅÍ_>Å®³>Åò‡>ÆtC>Ç0k>ǹH>È ò>Ç„g>ÇCø>ÆT8>ÅÆÑ>ÆB]>Æ· >Æa>Å~>Ä´V>ÄÛ>‰Ô>Áyø>Ã/Ç>Äék>Äé> ð>Ãò!>ÄŸ>ÃŒ>ÄV->ÅVi>ÄíÉ>Ããi>Âeé>Á>ÁÔÓ>Á´Q>©C>ÃÇ>Ãhš>Â}š>Âœ6>ÂøM>‘ˆ>Á‡°>Àb_>Àª>Â'ù>ÂÊa>‡ž>Áá%>Áx<>ÀÚÁ>Àl«>Àîã>Á€>Á¿Ã>Â=ê>Áÿ¹>Á´>Á9p>Á7Ù>ÀÈ~>ÀOË>À 2>¿Û>¾ˆ¾>¼íK>¾8”>¾ö¹>¾>½Ð{>½„Ô>½T£>¼“°>½>>½Ž“>½ŠS>½vÓ>½MB>½h>¼ò ->¼Ò¨>¼}}>¼g>¼kF>¼OR>¼21>¼€>»êb>»Ë->»¨b>»W¢>»>»*~>» f>ºÂé>º¡>º‘ >º€[>ºkt>º-¬>¹ãi>¹æ8>¹Õ >¹¬”>¹+>¹FÈ>¸½Ø>¸Ø$>¸û‚>¸é>¸ÚV>¸±”>¸ƒ#>¸yR>¸[í>¸ >·@x>³^I>²j:>µ* >µ¨®>¶É>¶£ê>²’m>±zª>µ >´ý>°ÿ{>³5¼>µÙ >µ…×>µ²>´id>³px>±ìÃ>±†:>²‰¬>°,A>°µû>³ -/>´J >³“>±)Î>°>°ˆ„>°Å,>²Þè>³#0>²H>±¨Ó>²b”>°]Á>¬:.>¯®>±Á>¯Áá>°v>>±dß>±_m>±[¨>±$š>°î»>±ž>± *>°Û˜>°{û>°@p>°1b>°!U>¯Þ<>¯Ñ,>¯½6>®ÿÑ>®ªõ>®­^>®† >®‡>®B>®ù>¯¢R>¯K’>®¨>®Z>®V>­‰p>­þ\>®@;>®­¢>®¯Û>­ú>­{?>¬×)>¬Vm>¬i(>«Åê>ª >¨žÝ>¨i.>¨?°>©„>ªs£>ªÑ>ªÎ>«FŽ>«>«Ý>ªö#>ª N>ª,Ø>ªªv>«Ú>«aØ>«l‚>«0!>« ;>ªî]>ªv®>©ÙÛ>ªf÷>ªÙ,>ªÐ >ªC>ªCê>©Úl>©¥ú>©ð>©)ï>©Dp>© @>ª e>ªèÆ>«‰Î>ªÚ*>©—n>¨’“>¦n)>¥“°>¦^>¦ËQ>§7>¨ {>¨ñ|>©°(>ªK$>ª©&>ªKõ>©òø>©0>¨ž>§>¦úÂ>§'”>¥Ò>¢>Ÿ^Â>žR–>Ÿ¾è>£¿>¦íË>¨€Ù>¨«>§”0>¥t›>£R>¡èp> ÐA> ß>¡ÙÐ>£Ó0>¦"t>§k2>§ù‡>©ÐŒ>«l}>«™­>ª¸“>ªÓ>¨äë>¦tÁ>¢ 1>œE~>˜Ø>– I>—< >›O@>žÇ> ¢>¢ -m>¢å¨>¤;£>¥ó>¦¹`>¦™9>¦ì>§A>§HB>§8ò>§°?>¦Í ->¥Œ>£?>¾“>”Cé>ŠÃh>…ñ4>†©>Œ>Æ>“‘«>˜ä¡>œ©¥>Ÿ‹>¢0ý>¤\¥>¦8s>§ŠÂ>©0]>ªgÛ>«5>«\3>«*ò>ª·?>ª -Ö>¨ªv>¦e>£Áï>¡u5>Ÿuy>žƒ>›´4>—ßß>“V’>Ý>Žlä>Vm>’Xé>–-ê>›PJ>Ÿw©>¡ßh>£ãþ>¤ê,>¥Øy>¦½é>¦ï°>¦½^>¦å•>¦î>§î>§q>§µ«>¨6u>© ¥>¨¿«>¨-K>§¹²>¦âˆ>¤·0>¢ë>¡Œ>Ÿ)>1>™u>’'g>ˆó>6>x¾Ö>xSÔ>>Ö>ˆ¶>ŽïN>” >—Å™>š“{>›Áù>Ž¢>ŸØV> ÄÑ>¡â,>£_>¤!M>¤Ñý>¥u•>¦Èé>¨&2>©nù>ªJ”>ªtz>©èœ>© è>©>¨¶õ>¨a>¨q+>¨…f>§Ó3>¦õO>¥ðn>¤ˆÉ>£c®> ÐR>°t>›˜½>™:k>•´)>’™>Tî>‡û> >{*¢>z…*>€n¦>…çš>ŒC>‘O >•ª^>˜ÈÈ>›C½>Fÿ>Ÿ„>¡+¾>¢hm>£¸>¤ÝE>¦Iƒ>§H\>§MÈ>§†u>¨<…>¨F¹>¨(>§TÈ>§äÚ>¨ß>¨Þé>§lš>¥‚‚>£Œ4>£z>¤=p>¥×Ï>¦ž >¦+‘>¥m>>¤«™>¤­>¤+µ>£~x>¢kÁ>¡Ø¬>¡Ot>ŸÊc>žJ>œØä>›™>™“Ä>—ö€>– >’Õ¢>ì ->‹ýY>‡Ø>V¦>tçÕ>g%Q>`^í>h w>u¡)>Þ¹>‡0B>ŠeN>Ìã>‘(>’å÷>”_>•9 >—¤M>™š+>šŽ¸>š£Æ>›/E>œtý>œÍ> >Èý>ž1¢>ž‚½>ž–÷>œ)”>—ù>œÏÒ>ŸUh>Ÿ -æ>žªË>žÉÆ>ƒA>—¡ä>˜¡>ž>Ÿ¤¬>Ÿ¡>Ÿ¦>ŸšF>Ÿp>žÄá>‰¶>Õ$>ðƒ>žjé>žƒy>žKá>žÁ>Ȫ>t‚>œœ§>šÖ>šáú>›/X>šî…>šlL>˜¿š>—Ñ×>˜ T>˜ >—">–+ù>•>“½L>’}ü>÷!>ŽÚp>‹|Ñ>‰pÝ>‡½£>„Jp>+Ž>sZÏ>d½,>Q1Ý>I8Á>Y£¹>kJP>w~Y>€«¼>„Žm>‡x±>‰óK>Œ,>€×>ü2>áÈ>‘7>’¹´>“RR>“ç“>”ŽŠ>”Åí>•¬ >–ve>–­ >“Ò¨>‡†²>ŠÕ<>–kœ>˜%>˜%C>˜Bl>˜,>–4,>€”>“>˜G­>˜ÎÏ>–:>Ž->“ZP>•?O>Œú>’¹>—ÓÊ>˜3ž>˜9“>˜'§>˜<æ>–v4>Žs->’›¾>—©l>—R’>—I >–Ã>–•<>–t0>—Ê>—+‰>–²K>—$n>—/2>—¶>–ø…>–غ>–b>•©Á>•ñ9>–"f>•Ów>•x >•r>•Vð>•ò>”wÖ>”[+>”Cƒ>“ØÌ>“FU>‘Ôí>x>‘'’>¶ö>¶>Ç>—õ>>.ß>Žg>™A>Œ†?>‹yž>Š>ˆ÷>‡o¦>…Ä€>‚¼ô>y¸ž>zÛ.>uRØ>l~Ó>j/>`à>P±Ü>;6Ü>5F$>G¯E>XÆ:>as–>g›¤>sù„>x=>w•‡>€uD>ƒ«>„W>„¬n>ƒ¤.>…Tt>…«> >‚ç ->ƒõÄ>‰ó>Œ `>Œo‡>ŒÖƒ>3ã>pz>²[>á¢>Ž >Ž+>ü ->Ž#(>ŽEt>Ž1»>Žb^>Ž·Ê>Ž¤ø>ŽtS>Ž¯ª>ŽªÆ>ŽŒ6>Ž³é>ŽÆ‚>áà>x±>ŽAs>ŽsÖ>ŽCÉ>ŽV>Ž™•>Ž‘ >Žkè>Žpƒ>Žaq>Ž0ð>Ž>ö >Ž h>Ip><\>®Ý>¯:>“Z>q]>mq>¯>x¬>dÑ>&}>ŒÏ>Œü;>Œð¨>Œ¸ÿ>Œ¯'>Œq>Š©3>ŠÚÜ>‹’J>‰"©>Š©>ŒË>‹¸d>ŠÆô>ˆ8Œ>~&æ>…‘>ŠKv>… •>~®S>†ê3>ŠqP>ˆes>ˆ3U>Š{ü>Š!4>‰<×>ˆçX>ˆÏY>‡Õ>„¯‰>‡õh>ˆ­¸>‡y>ˆ1 ->ˆó÷>‰ ‰>ˆ¢#>ˆu>ˆŽS>ˆÔ>‡²µ>‡•º>‡©ì>‡¿>‡‡>‡]j>‡(Â>†ÿË>†¼Î>†.>…Òº>…×î>…˜F>…;à>„Á¤>„Lž>ƒÍ©>ƒfâ>ƒ^>‚1‰>/V>)›>€«>Ý€>~4u>|{ÿ>zKK>wݺ>u]„>r §>n­ø>jœ>f¾>`vÍ>Yè/>Q>Fm}>6¡>$>'¢">:YU>H^}>Rl×>Yø¦>_ÿ9>dÑ'>h»Š>l<Ž>o S>pcT>r—Ð>ue>w—>xÕ?>z5ö>{Q€>|Ø>|ö”>}× >}ôl>}øÇ>o>~>~!2>u>yxT>*1>€f'>€É&>€òQ>€ùþ>¬L>s†k>y2E>€D”>8>€R³>{>yÃ>=Ý>€Æ‡>€î¨> >€ú–>€g7>zc>|*ÿ>üâ>}ôW>oôº>wÔ=>€">€>€j§>€/¿>|» >|¹>~ê>|€ >x£Š>{‘œ>~p">}N>|_ý>ypˆ>zdO>}Ò>}~ß>~{É>~P_>~j­>~b>~KÇ>~‡>~ >}äÈ>}¶g>}kŒ>|z>{ÿ¡>|Ð>|¤}>|Ÿ>>{éŸ>xl>r¿’>uƒÜ>yÂÄ>zãµ>yói>z›§>zç*>{->z¿€>zlZ>z0e>x|®>yP>yœ>y†ò>y®á>yŽ!>yQS>y-0>xüž>xs}>wâ>wX‹>wŠò>wÙ>w›>vhS>uïÊ>v ¯>w-r>wä>vÅ?>vº>uãˆ>vE>v)½>u±½>t…Ô>tf°>s->teö>t´ë>t@d>s½+>tE;>sÇA>rõ¿>sŠC>sÖ”>srè>qY˜>m¦2>m”>n(f>lˆj>n÷ý>qj>r}>qÊŽ>qIG>qMb>qmê>qZ ->púú>pµº>pwo>n(•>d§î>fA~>n_ï>o*™>lRé>m~>nÔV>n[ >n%™>mS>k³¨>h¨¸>jɃ>m¾>m«>mh>>mR>k´>d{ñ>g¼>l(Ý>l\>iL>gÖ“>jØ5>j¦J>i×é>iT<>iÚ>ic÷>hä™>h©>h^]>h¢a>hdD>gÏÃ>g‚ >gPâ>f±0>fe¢>eÙ>epR>dÒh>dŒ9>d%W>bï >aÕ¸>^›â>`>`{â>_½”>_\>^_>\á4>[£K>Z4Ò>X{#>Vì…>U‚>Rl$>P!$>Mp >J>F|¹>Bj><‘¹>5µa>,É”> 2B>ÐÅ> î%>Æ>*¤>3tl>:/ >?o>C ²>GZ>IÚL>LÇn>Nþû>P»i>R9õ>S¼0>T°f>U¹¶>W >WÝ>X£ˆ>YIO>YÕQ>ZO >Z«ˆ>ZC>Z‹>YÓˆ>YÞ2>X>Y7>[áë>\ G>U¬²>RZx>[76>\WC>\žó>\DZ>\ÅV>\Î/>\¿s>[àÐ>YïÙ>[“>\ˆà>\T{>[Ä>\ œ>\KT>Zeò>WÖv>[:v>[ø0>[ A>[>[ª>[xD>ZÐ>V’Õ>X?M>Z¤y>ZY>ZuÒ>Zwl>Zv(>Z9*>Zx>Yßo>YÞ,>Yu>Y¿>Y1¹>V­2>XÈ>Y#„>Xï >XÞT>X¯#>Xš¶>Xž¹>X]§>W¤Ì>W‡¤>X!>W>W_'>WŸl>W‚°>WT§>WG>W9>VëQ>Vº >V¢s>V÷>VQ}>Uêž>UN>UÂ>Uˬ>U£I>Uqé>T>s>RÛ>Tfe>Téõ>TÃK>Tq’>T p>T¨>T$S>SÛ›>S+,>Rž´>SX¨>Sc‘>SÝ>Sh>RßQ>R¡Ò>R)”>QŠ>QÁ¿>RBÓ>R>Q'!>O->PØp>Q%N>QKç>Qô>Póˆ>PÚ>>Pžm>P+I>Oš›>O“,>K×Æ>K‡A>O_Œ>N¸>OÐ>OL>OÖ>O÷>NÔå>Nƒ£>N†ú>NUò>NZO>N]>M¼Õ>MØ>LÌà>Mnä>M3>MSû>M4î>M>LÀñ>K[Á>K9½>Lv¤>LTø>L'ù>L¸>Kå´>K· ->Krð>JL>IÓ>HØì>Açë>;<ï>?_>Ech>Iù¯>J: ->H^¾>EY¶>HIF>IUU>Iš>I1Ø>I>H >GØú>GüÝ>Htt>Hœ·>He>FRe>DTk>GDJ>Fª>E.°>Ew¼>Et>EªÄ>DšÛ>B1Ç>E—•>FeÙ>E´Ò>E60>Ev >EÑr>CñE>A!ã>D‚1>Ewª>Díc>D»¬>E/;>D…þ>BI@>Còö>D€è>DnY>D`Ñ>Cù=>AäÊ>B5¢>C‰>BµW>@J>::>?Ê >Bü™>B»â>B—ô>Bº>BGö>>™¡>A•ö>Aæ‹>A€w>A›d>AˆY>AjO>AAc>@íü>=‘Ã><ÀX>>W><“Û>?ð‚>@SÚ>@.â>?ó²>?Ö4>?¹.>?€ï>?o>>óƒ>>Ÿ>8uÓ>>¦A>>>>uW>=õŒ>;ðF><ý·>:ó>+‹”>*N»>6Mâ>+*ð>-)Ü>7s9><97>;d¥>;Ö[>9Rl>0A>9|>;Í>;•f>:ß±>;5>;w>:Dê>2^>,¹>7µÀ>:¥~>:¬Ø>:l‰>9ÕÖ>8úa>7áê>3ÿ>53á>2§{>8HÒ>8Ód>8–M>8ÈÉ>7»Ð>7ñ¾>8t0>8m$>8&d>8À>7w»>5?>0ò >5[À>7O >6á^>63ä>6ˆ>6oµ>6\>62”g>,Äk>4®>5’`>4Z>1Þ“>3žó>,|¼>.ÔÌ>3åÛ>3¢>3™ >3¤å>2Æç>/‡¹>2.:>2úO>2ÆÍ>2‡á>2@>1äò>0Aõ>/6,>/ë>%3>*ºŽ>/zÆ>/`P>.Ô >-|N>*gÞ>*•>,b_>+ Ÿ>*Ì>*Í>)|8>(„±>'ZD>&š>$¨>"N>b7>A0>¬>ýè>¯ò>¤Ç> ú>=ûõß=à_I=ÛÓo=÷,>> ¢“>þ«>)†>ª">2>®#>42>z~>°>"]Ã>#z>$W¡>#âÝ> ±æ>"^>$t>&è8>'¬W>( Y>(`'>(¤x>(Ûé>):>)>)Gú>)j6>(çg>(,*>#ÙÓ>'/¹>)š>)»¢>)¾>)³N>)Ž->)§À>)•@>)hM>))>) ç>)hí>)vû>)B™>(õƒ>(òV>).G>)&>)·>(ó!>(Óß>(Ò>(Àu>(¨>(`\>(.>(SÇ>(?í>(…>'ï>'Û>'×;>'ÌP>'¬$>'e">']>'DN>'3@>'‹>&Mï>&›¡>%Ö>%›3>#ä=>$l>#þŽ>%zS>&/>%†´>#»¨>%Cb>%ƒD>%{ž>%[>% ”>%@>%ˆ>%>$ô¯>$Ð8>$¸I>$‹>$6û>$ -J>#<>\Ì>wÄ>#«Ñ>#Áí>#Dd>#‰>!µ>"èe>#;>#ß>"Å8>!—¼>"oC>"  ->"{½>"Wð>"0>",<>"1>!Óp>!Æn>!¿D>!Ž>!Zí>!FŽ>™?>3>á½> {›> V›> —Š> `k> qÀ> \~> =œ> s> 3>Ëþ>(º>(>±:>W>eß>9>WN>„>îë>È> L>)>*v>6_>úh>ÏÉ>¶†>þý>î >!>˜Þ>Å>+$>;‹>˜>æe>Ã>ÿ3> >ÿh>Y~>ä>ÙS>†5>á$>1¸>ÕÄ>­?>ó>oß>—D> ì>ÌO>r>5Ò>ìð>³1>B>‰z>á–>’>1E>3>ëÛ>:Ž>0e>+>MÜ>þY>„ö>^X>4e>ËŽ>a;>¢>i>W>;Ñ>L>ú>áK>» ->|™>ƒ>ZT>D,>ê>Ú°>ûB>åÚ>¾™>œ >‚Š>ž>©>(¾>ñ>ûq>Õ>˜> -±>à~>`'>I¡>4^>>A+>éê>œ>²*>–r>¥><ÿ>"N>†>ý>áÐ>~ö>—>‹§>~1>k>NÐ>ôÝ>œT>‡>A>’Ð>Às>.y>9M>>>Ë+>6>ðƒ>ú>ph> à>1–>F>  > X,>îó>Í´>=,>±¦>t>ù†> T8> G3> —T> †j>˜> }³>Èã> ”ú>åQ> v0> ¾ >ER>:}>#’>î> Ìë> v>n­>y> ãe>44>P;>7Ž>[> ë"> ÈÍ> ¿é> ¢> ‚Ÿ> _à> 2¢> /> è4> Ø~> ´=> ¹D> - ó>…>Ô•=òDm>%í> ßs> 7> Ø> Ö> e#> -p> \>¬-> -R3> 36> -ðð> -ï> -ßz> -ä’> - Ü>@(>ô> -pç> -Dã> d> ¦> ‘>{> !;> h">öÆ>¿º> Z²>ßä>ö{>VÑ>ô[>®D>>w>•>Õ>€A>t>³Q>Ë >#˜>»>ô¥>HÐ>Þ>ù&>Ðo>ï>“e=þì6=ûá$>˾>åÿ>Ýœ>Æx>­|>’¦>xJ>a“>HÀ>.à>]>úe>ã·>ÈW>¬>–ž>z÷>Xd>ò*?20?3’¡?5×É?8È@?;õ=?=°Ž?<§Ú?:Y?8+·?7†ø?6[?1Øë?+·?&Ûæ?%Õ?(ê?.îy?;²?9«Œ?7Ð ?4`J?.Ì ?(£?$[€?#2"?$¬²?(v?,ñ.?2Ä›?7U¾?7ßp?4@¸?0±8?1¼š?6ºä?:Óú?:Õ?7q‡?2šù?-Î=?*¡?* Ë?+ž`?-t=?.Ì$?04?2@Ÿ?5ï?;/Ä?@Ù?D´œ?E^•?Cç?BdÙ?AÝ?>Ÿ«?:f¨?5¢$?1ÏÛ?/å:?0R5?2·Ñ?6#Ù?:¨?>V?Aeœ?C‘–?D„\?DGV?Bðd?@øJ?>͵?<|?:™‰?8ݧ?6úµ?4^?0 „?,•f?+ü?*,µ?'p°?# †?"Ó -?'ÅF?0r?8&¶?< ??#%î?$©Ã?(­x?+Áð?,™]?-î4?2¨3?9€ó?>rÐ??¬æ?>Çù?=¥–?<Ò÷?<ã-?>®"?AÄ9?D™Ö?FW?FÔ9?Eô??ý¨?8cm?1&'?,P!?)³j?('ù?&ì?&6È?'Wº?+1v?/ÚN?1¯?0 - ?.²€?1?6ƒ?:½’?=D±?=t@?<5^?;,³?;*?;<ÿ?:Ï?7gÕ?3µ?-=z?&ð„?"×P?#ç?&Ì|?*‰­?+Yà?)IÀ?&Pñ?$JT?$5¦?%À·?'’W?(î~?)¬¶?)$s?'ýh?);/?.Mu?4uF?8qÖ?:=»?;à9?>N?A/¤?@ä­?;ùë?4" ?-YÁ?*ÙË?,î†?0÷à?3ÌÓ?4r?3ö?3tI?3›'?5D=?8½¦?<Ì ??y«??ÔŠ?>Ï'?>8Ò?>̹??Üš?@Ý?AÅa?AÇj??Ö\?<§.?:B8?9ÅR?:Ëg?Ô?>|¾?<øí?9Ø"?7gQ?7÷È?:èþ?=Æ?x^?ëg?A?&?Aœ,??¶ã?<¯C?:H?9 |?8¥%?9‰2?ìÖ?Aé??žx?;_é?6§W?2Þm?1,O?3? ?9BR?@ql?Es ?G&?FœÃ?EaÏ?CÒ—?@ûf?<¡??8ˆ;?6¢?6ëß?7Ì?7•Ä?5ÂÝ?3“ó?2»ž?3º?6r|?:TÚ?=–?>‚0?=Oý?;’á?:†’?:~Å?;m}?=.'??‚ð?B$/?DhÞ?E4?CÙ??‰s?<r?9ä.?9•Ø?:tw?;y?:´‹?;?={ã?A¶>?FZ?Hý=?I3(?F>k?AE%?=xô?=á`?A±?EŽ?EÎ?DÛ¨?C¤/?B)¸??@Ø?:SU?4Üî?1¸?/dZ?/!b?0ƒa?3ñŽ?8Ž?=aÌ?Aëd?E'.?F5K?EJõ?B›?>_?9?7S?9‰#?>T?@ëš?@±â?>œ?”·?@f§?@õÈ?AIÓ?A:n?@?>?;Zt?7S˜?2?N?-«Í?+»Ä?.+¥?4ª—?<å?@¸ ?B@½?A¹¦??>4?:ó•?7gŸ?7z?:Ä£?>«+?A?@ž¥?=.?7òT?3¯V?2Jœ?3îw?6r£?7œã?6úš?4¹æ?1P?//Ñ?/ÁÔ?3¼†?9G’?<òÅ?=O3?Ü‹?>ûP?=(_?:~?7-?5½™?5À‘?5†ž?3xú?/ÊÜ?+Ì-?)G¾?*„?/® ?5—D?9?;Ÿ‡?<êã?=C?<¦Ö?<,7?9??‘Â?>Ï?<Ä;?;Zî?;î¡?=Þo??w¼??î0??×-??´2??9f?> ¥?>óÅ?@FI?APG?@ý‹??;-?<Ž»?9Ú?8@Ã?83?8×Æ?9-a?9$?9Mv?:rê?<#Y?=Œ´?>‘”?>áS?<üÕ?7å–?1¨u?.?î?/Ÿ?0æ.?/íõ?+¥¬?'½v?'\k?)S?,Aè?.Ͼ?0®)?1e8?1â¼?3Nh?5±?55?3é?/w?**æ?(¸?,…³?0bÄ?.üé?)+™?#ñê?"“Z?$À?(·?6¿Ž?5$h?4?2¹9?1àÅ?2t·?2æ ?1{?.¡?-.Ú?/…­?2ÚÄ?4wQ?4ƒL?5…o?8˜&?;¶?;»–?783?0b?,^?.:I?3eG?7¤C?9×î?:¸?:äó?;?=×É?@œÅ?B{í?C ü?A•ø?<ž€?5É?0£?1dK?6£d?;:•?=Ù‘??±ß?As?BÚ¿?C»?DA?C©E?B?´?@5-?>*F?<ý°?=-¥?>VG??Œ¦??dv?=pa?;­ì?;ì)?=µW?@ €?B”£?EÊ?GÅ?Hn?Ià ?KhÂ?M þ?NW[?NM‡?M>«?LBŠ?Kèæ?Kë•?L1?LÞG?N?O‡“?Pë?Qm?PÀ?O?M^?M¸-?Pø?RÕ¥?T ?Shy?R|\?RÔ?Q;[?O¨Q?Mñ?LÜ?L­T?MŸN?O O?Oo·?Nåå?Nx«?MÛ›?L¢–?K¹o?Lbô?OX ?S½²?WdX?Ya=?Zµ?\KÜ?]Ëð?^¡Ü?^ÐT?^}?\€ƒ?\0 ?_PÌ?d±—?hÀ`?iV¹?f€q?`Âý?YA?R‰Î?O »?Oøw?TØl?ZÀ›?^›“?_ª?^nb?[ßX?Zß¿?_Ag?hÏñ?r¬ú?y -H?|:r?}—,?{­ö?sI9?dµß?UvB?KzÍ?JÉä?U>?g"?x”÷?Ͳ?ƒë?û€?‚)?„Í?…"á?ƒ]v?|®¬?ký˜?WM?Ffë?A•%?Hô6?V4k?fêî?zkº?…ÆG?ŠèL?Œ*?‹ä~?‰Ïu?‡(?ƒà]?ø;?yŸ—?sÁx?gÃÃ?Ue_?GÈ-?J¢p?]©Þ?už?„”Î?‹š‰?Ä?“«?“Õ?H ?‹7¹?Š<ã?Œkû?z®?‘àH?’è?’|ó?‘Öµ?‘J™?bÆ?‹§Î?†¹U?­ ?mq?]Ùú?^¬¸?pЋ?„3:?=t?’°Œ?–¥š?šï?ŸiG?¢ùÉ?¥k?§I„?¨¸Ž?©a‘?©@‰?©?©£?¨.?¥³k?£±ô?£qA?¤>?¤Âˆ?¤ÕJ?¤È^?£¬Ã? ? -?šu|?“(ý?ŠVY?}ãà?fÖx?^Š¢?mü¨?†I|?•…è? ´ò?¨ï?¬²ô?¯7ˆ?¯¿j?¯9?¯|ã?²"Û?¶¼û?»$£?½’m?½: -?ºP±?¶­}?´+I?²ìù?³¹a?¸B?½ÞS?¿ìY?¼Ç?¶7G?µö?¹6Ö?¼ei?ºNQ?´øÞ?°Ã’?¯+Ù?®E?¬8×?ª —?¨Ö¯?¥ ¼?7·?’?‡bŸ?zH?l¾ù?p§t?€úª?‰æ±?’E?Ë3`?Îîp?ÒŠš?Ôa ?Ó ?Ы¿?ͪV?Ë·€?ÉT?Åqì?Å0F?Ëœ?ÓT\?Øáô?ÚM9?Øòu?×"?×7…?ÙrP?Üi?Ýw¨?Ý4]?ÚR?Ô|™?ÎÓ_?ÍÙ?Ѻ?ÖB0?×^Ù?Óy^?Íþ?ÊX?ÎKþ?Ó×8?ÕÏe?ÔWØ?Ðü§?ËS£?Âm?µç?¥Ð6?•Ô?‰a?‡ð‚?•e–?© -l?¹ ·?Â|ˆ?ÇW¼?Êym?Î?ÒS¹?ÔûA?Õ^¾?Õ3Â?ÖNç?ØúØ?ÛXN?Üs?ÛV3?Ø”x?Ö ?Øg?ß÷§?ç?êë?ìC?í®?íz?ìW^?êï2?ëÉ?ë”(?ê°þ?é9Þ?è Ö?æÀR?åp -?å#É?åìW?ç4ü?é@>?ë¾?ê©8?çÕ?à„·?Ø? ?ÎË¡?À‹‡?¨Ú·?†èÂ?D~>?6?!2=?^IL?—` ?¹þ.?ÑLl?ßR¢?çY§?ë¢Ì?í¨Æ?íŠæ?ìÇ?ìuÝ?ïß,?ób]?ôZr?ó’í?óI?Í$á?Ú5‰?á{q?åß~?éy?ë·C?îiä?ðé¿?òš>?ó?ôU4?õ°z?÷$&?÷Es?õˤ?ôÞÁ?õŸ®?öK}?ög×?÷V?øûþ?ùÍe?ù¹?÷¦@?öÃœ?öí?÷VR?öc„?óp˜?ð°!?ð³‡?ò‡s?ô9£?õ=ü?õ¿H?ö`$?÷9&?÷É?÷YÓ?ô¨4?ï€?ëy½?ì´ ?ñ1?ô Å?ô_‡?ô;6?ôµû?õ{h?õºõ?ô¶>?òk|?ðV„?ð1Ì?ñ°?ñk¡?ñþ=?óŒç?ôþM?õQ¬?õ|?õi?õ?õ Ä?ô7%?òDô?ñe?ñÛ%?ó1Ï?óâ?ñfé?ïtÿ?îU;?îEî?î·.?ïO‡?ïÐ?èï?å"?âiÞ?ã–?å3J?æ¾?çèñ?è¯Ö?è¨?æ“b?äÖÉ?áx£?ÚeX?Óv?Õ?Þ:³?åºõ?ç»ß?ætë?ãø5?â3?Êšp?Æ1E?ÃJè?Äêb?Èr6?Êî¬?Ì‹ ?Î?Ïñ}?Ó`?×®Ù?Û8ˆ?Û·Û?Úï??Úeo?Ù¼n?Ø1B?Ôç6?ÐjX?ÌÚF?Ìëö?Ñ(?Õ/H?Ö””?ÖÒ?ÔÔ@?ÓPÑ?ÑU)?Ηß?Ê‚š?ÃíS?¹Ì˜?«>?˜ïr?‡‡$?…ta?•Ð7?ªmÕ?¸±W?Á`¼?ÇŽä?ÌX?Ï6?Ðñæ?ÐTd?Í7«?ÊôV?Ìþ?ÑUS?ÔHÀ?Õ‹í?ÖDM?Ö¯?ÖÞò?×Id?×Ò¾?×æ?¤º?¤°ù?¤š ?£ã†?£P_?£‡?£Ý·?¤ r?¤s¬?¤³Ý?¤{†?¤I?£ßÄ?£Å«?£éG?¤z?¢ì?¡c?¡Ä?¢Àd?£ÖT?£pè?¢’?¡n ?¡Ë’?¢pÅ?¢É4?¡¸_? ¤Á?¡”]?¢òã?£<Ú?£"%?£$}?£0X?£Ì?¢è¯?¢x@?¡X•? ¦i?¡¬Ò?¢|?¡ÇU? ÅW? G? Ä‰? K¦?ŸV¢?žï??ŸÓ'? Ò ?¡Qî?¡°ª?¡¯Ž? ú ?  -?Ÿ¿? xe?¡1?¡ý?¢?¡ùÓ?¡Çê?¡’Ù?¡~Ó?¡•ð?¡Á ?¡¯«?¡y?¡gŸ? òB? J ? ZŸ? ‰H? °?ŸŽ7?Ÿ!?Ÿ(ø?ŸUo?žÊQ?Ì0?…c?úC?žˆ5?Ÿ ?Ÿ”û?Ÿ¡+?Ÿ_Ü?Ÿ:e?Ÿ:Ñ?ŸH³?ŸCK?Ÿ c?žË5?žšv?ž"„?†¯?U?Å(?žNw?žŒÛ?ž~j?ž<”???›Z?›V?›á¦?œg?1È?^?@ƒ?œû ?l?G ?+?œÉª?œw¡?œO?›•?›h­?›G ?› §?›8¾?›–Í?›s?›"?š¼Ä?šÌk?šØ?š+·?˜ìÙ?—²m?—Þ¾?˜Óí?™Š?™CX?™‘?™éã?š"~?™ò£?™´á?™6?™Z8?™& ?˜ê­?˜˜;?˜YÑ?˜1?™-ú?™`_?˜ôõ?˜0?˜@a?•ÄÐ?±”?‹4¤?´Ë?‘Œï?v?Š¨ª?ŒÉ|?“‹ ?—2ª?—ȸ?—M”?–é«?–}?‘ÃÈ?Š‹ä?‰ØM?‰\?•Ù?•&×?”!#?“¡&?’·©?’-Û?’åg?“¬ ?”,Ð?”sŸ?”‹—?”«`?”yw?“´'?’¾??‘ßÞ?‘¡§?‘©Ù?‘RK?‘øb?“lp?”P?“É?“`º?’ÎP?’q?’þt?“v¸?“{Q?’ÿ7?’ÄŸ?’ s?‘¦?ŽÀ?ŒÆ¢?KŒ?‘¢&?‘¦€?f]?Ô?ÙÅ?‘ˉ?‘íÔ?’k?’e?‘×x?‘E4?‘O?‘á£?’ì?‘–¥?Þ±?ˆó?x^?§I?”‚?&Z?>Ì?Î]?‡d?Û?¨k?Ã?ŽÌ?Žn£?Ø+?Œæ×?Œ?•?Š}?‡¾?ˆÚ?Œ??Ž¯^?Š?ŽÖö?Žµ,?Ž­d?Žcª?ï}?a’?¥?Mˆ?Ž ?„BÞ?„té?„Ø@?„ù1?„µŸ?„Jð?„P?ƒ’A?ƒª?ƒc¦?ƒnV?ƒ*?x´×?xÍ?x}[?x"^?yñ?yÿÑ?yÔ_?yM?yA“?y+?x£™?xP?v2!?t Ì?tþ¶?w-”?wø-?wìé?wÚ?u¬5?u¥^?wz?w°Ä?wœ¿?wK>?w?v?uå?u\¯?ud$?u^b?ury?u¹©?užM?up?u4€?tºv?tnÑ?t^¿?tE£?tJ?sÀ ?sïq?sÃi?sLŸ?rÁ‡?r"Î?rEê?råù?st?rÞ?rÂ2?r¿º?r_¾?qÎò?q´*?r5_?r¸ú?r¢h?q”ª?p™0?pÌ?p”’?p?p(ú?o“Ž?o¤?n˜¶?n™{?n¶?n+^?m½?mö2?noþ?nY?nL¿?nê%?o8L?n¼™?m¶Ï?lV?k‹Þ?l2Ó?l‘y?ló?lð?le.?l°z?l~[?l*?l2?kï -?k‹|?k|4?ks$?k]ª?kcT?kˆÛ?kTÓ?j«Q?i“ø?hÑL?i.9?iùï?jpÌ?jCa?iÖó?i³m?i}Ž?iw?iÝi?jW"?jþ?i ?h9Ê?hŒ,?hù@?hUƒ?gÚ??hD?hDh?hit?hWû?hÞ?gÓÑ?g‰¬?g4z?g9l?g]ë?gw?QÇA?Sx7?WÚ“?Wš??Sˆâ?Rz?Vä‹?YŠ?Y¡;?YÎ?X´ ?Xì‰?YÚ¼?Z4Ù?YÑy?Y]r?Xø?XÔ¤?XéÍ?Xª?Wݘ?W“ü?WF^?U½å?Up—?V|P?Vd?UIÆ?V†?V’/?V$3?Vs9?VSi?U£?V"Õ?VÌ?V‡Í?V!?U&R?RŒè?P@Ì?P›÷?QUô?PòÈ?Q‚ì?Qè`?Q?Q ?QqF?QÐ ?R-?Q–?Q»?QÍt?R‘i?R‹P?Rì?QžÓ?PÕ¶?PŽ¾?Q0?Q?Pƒ˜?O—\?Näq?NùÉ?Olo?P×?P3:?OIx?NÙÌ?N¿ò?N!Ê?Mñ«?NVÁ?NwÇ?Nk­?Nwº?NÉï?OTm?OF‚?Nk?Mtö?MLÅ?MƒÔ?M¾…?MËö?M–?M?KZº?IÈ“?JþÐ?KÖ]?KOe?K Y?Jþª?J˜P?Iä`?Irf?IÉ?JÞ?Iñî?J F?J/µ?J?IöÎ?I°*?Hü„?HÁõ?IM?HÑc?HU¡?Gü«?Gòe?HB?H_ö?H¡?Gâ‰?GâV?Gß?GzÊ?G„o?G½Š?GØ¢?G«¦?GtO?G'*?Ft=?F4J?F–5?Fã?Fùp?F?F)Z?EÛ$?EÚµ?EèÉ?EãÎ?F"Æ?Få?E¶ ?E¤¸?E´†?E“Ù?E ?DìÓ?Dð¸?E1?EB?E?D²?DH.?CëN?C™a?Bº+?B¢?Cäá?DÚ)?DÆÏ?D,¤?C¦ê?C—´?CËs?C¡7?C`!?C¾§?C‚?BY?@Ÿ¹?AMw?Bµr?BÉs?BT©?B?Br?B+Æ?BTƒ?AÞ›?@•æ?@(g?A6?A44?AS?Aª…?AòÛ?AñÍ?Aà±?A©J?A¼?Ag;?A*õ?@èƒ?@Ý>?@ßÄ?@ï¾?@ˆ?=p?=2ã??]Æ?@H??íå?? e?>Ũ??@??]d??™??dÏ????‰b???>ÿÃ?>ï7?>ªÞ?>”M?>¦V?>¡?>?=2ý?=w@?>Ã?=ö?=Ãq?=×=?=ù)?=Û8?=…Û?=ka?=uè?=‹þ?=“ë?=P ?<ÌB?<šY??4Ò?3Ÿ ?3v"?2Àø?2/Ý?1®Ü?1³?1…e?1ä¥?2Ù™?2¸Þ?37¼?2¼§?2?u?3?2ñÏ?2Žº?2A ?1¿ø?1¿L?2Mú?2k ?2\‡?2¶.?2?2q÷?2¤k?2ˆž?2Mê?2Lj?2R?1íã?1¼à?1÷N?2A˜?2K×?2D"?2­?1Î=?1ÄP?1Îí?1ÖÁ?1ëü?1v„?0Z|?0ô?0¯{?0îý?0èÉ?0ÿ«?0ÿ?0Ñu?0‰f?0S?0Ö?/¢?/sý?/Æ -?0?0*I?0²?/Â`?/m ?/[à?/O8?/³?.Æ7?.œ"?.»u?.‹¹?-°Ó?-—?.†ƒ?.Å¥?-Ñ?,íÚ?-”?-0f?-J†?-W›?,ö"?-c?-(?,Ñ¢?- ?,ü'?,ª­?,˜‹?,N¿?+yM?+h?+Ü$?+ßú?+«m?+zà?+@ç?*Ò•?*ã•?+r?*êµ?*G?(wø?(>¤?)´î?*T§?*e6?*K?*#h?)sš?(ôG?):Ç?)G9?( ?'?'b¨?'ŽD?&ð9?%Ç!?&F,?'/…?'}¥?'#ò?&…«?&*Ÿ?%Ϫ?&!?&\?% Æ?#‚½?"­?# U?$¶S?$Èq?$l?$¿Œ?%(?$Ý ?#Í^?!ë!?!Ê?!¹Õ?"ŒÅ?#†?#`X?#x?#mÎ?#=@?#„?"ûn?"ÕI?"ÊF?"Íz?"G;?!Q? ¥Q? h0? ®Ì?!¶?!ê? ή? ™? ‰V? 1¼?á?¬p?7W?Á‘??Äÿ?Ê?™k?å}?£y?mÃ?Ó¾?[¥?8h? ‚?†?õ?Ø:? ¢?Rõ>ÙH>¸ÙW>ÕDÁ?Ø? (Ì?´ò?Æ´?¸?Ü?Îd?‡Ù?w«?I£?ºÙ?¯T?¼Í?À?P?|‡?­³?+?\?̆?%Ñ?T?3÷?O¥?‚?´Ç?y&?9ú?#a?ŽŠ?jø?¾??CÔ?aá?y‚?Hã?Mª?Q?"å?OY?bc?,?s?yt?s)?ZG?W_?"?þ‹?t?I!?òV??ä?ì…?Ϥ?ëo?ÓÜ?^É?kk?­Ä?¡Ï?Ý›?o?ï)?Ì?°‘?hg?t'?™o?Ž?éÛ?=L?ŽL?iq?m¶?ç"?,?#?u&?Yÿ?T¾?2$?g®?úù?’÷?mþ?‘+?\Ê?{h?¬|?Îs?Æ`?Þ?ãr?›[?á¡?¼õ?Æq?]>?{?‚_?”°?e?Æå?­ê?†¶?mà?RÂ? ?ÏD?¢›?¦?C?£¹?ãc?*2?.›?á?éÛ?´?»0?êæ?|Œ?ª.?ÍU?Ù -?s+?8Þ?eª?‹¢?G8?3?üÏ?áq?éª?àý?µ¬?Y?Ñö?¥&?-!?yŸ?o#?xË?ž?]?4Ô?ì5?´…?í?Û?ÙG?×?Ò)?…?9‘?H‚?&Á?(Ï?:u?ë?°ë?™p?ʪ? t?3+?È?߯?ê?Hy?D -?'¥?ûÏ?É*?%H?‘ó?¿j?Qù?Ÿ?•¾?†m?k(? ƒ?ì—?gK?âÚ?'«? ç?G×?¨3?·Ú?™e?o ?8}?6&?D?2ö?¢?9?Î?eÑ?ÿZ>?õ ?é?”?Éï?ðí?w¥?D–?›>þh>ý‰ý>ÿo ?*?ê??2h?9œ?Øñ?tÚ?‚ß>ÿ>ýB¥>þø>þ7>þé%?K:>ÿÈ>þ >þÚñ>þ÷>ÿc¸?A>ÿÝÀ>þ`Ò>þ:†>ÿ -x>ÿ9>ÿé>ÿq»>ÿæ>þ`o>ý3¤>üwe>ý*U>ýCÔ>üçî>ûÑþ>ûV>û ç>÷èð>óÁT>÷,Ž>ù-$>úKe>û_û>úÕY>ú* >ù¬°>ú,d>úÍâ>ùY>öK±>ôĶ>ôì‡>öí{>÷øU>÷ë>÷qm>õ >ô¼Ç>öQO>ôÎÑ>ò=U>ô›5>õ^]>õ#+>õÍå>õðó>ö>õê$>õŽ>õσ>õëó>õÌí>õœª>õa½>õ±>ô(°>óRG>òSª>ó‘>ô|t>ôf:>óŠµ>ó7 >ów×>óê>óÝP>óó>óŒT>óhP>ó,Ê>óh­>ó_Ù>òÅa>òô>òPe>ðà9>ïû >ïË>ñÂ>òc>ñ¶Ê>òN½>òû>ñlm>ñ4r>ñ[6>ïóW>î«c>î>íºr>ídy>íƒæ>ë®>ì5Ñ>íÐ >í9½>ìì/>ì¢ò>íN>íF>ì|È>ìj>íå>í>í^R>íÉq>íÅ3>í{‘>íû²>íÌ„>ì¾™>ìÍ­>íBí>í©ÿ>íÝ!>íN(>ìô>íÑ>ìÉ>ìªÉ>í$>íS»>쳂>ín>í_°>ì³z>ëò˜>ì8ß>ëåœ>ëé‰>ëØ_>ëß >ìÁ>ì.¿>ìµH>í>ìYq>ëL>ë+!>ê?ú>êØ>êåg>ëö>ë¯>êëE>ë×>êø>ê '>çÍ@>èÅ>èÿ>é;†>ê3>ê8>é?w>çC&>ç{U>èùÞ>é‘ñ>éO®>è·i>èS >èúI>énÍ>é|ê>é@*>èâ|>èÕD>èÒM>èZz>èp«>èšh>è_¡>çSq>æF>çmÿ>ç>æyš>æ¾é>æL>æÂ>åκ>å >æ@*>åi>ä§ë>åGò>å›r>å[ã>äÎÃ>ã«>ã/!>ãç'>ä¹>äÏï>ä£Ë>äV5>äD>ä>ãàê>ã>âÓ=>ã._>ã6`>ã,+>âȪ>âÜÌ>ã>áÖ©>ߟ>ßÈl>àžÎ>áø‹>≖>â~¶>âaB>â7Û>â‰>áã¨>áŸ>ቌ>áaª>àÙy>àâ„>áI>àÏþ>ൂ>à¨X>àƒT>ßã›>Þ¿>Ü7–>Ú4Ž>Ù¶\>ÚHZ>Ùm*>׺P>ÛB>ÞP>Ýåc>Þ20>Þ >Ýàe>Ýòr>Ü”D>Û0t>Ü®§>ÜS‹>Û>ÛéP>ÜK>>ÜT>Ü 4>Ü/Z>ÛM>Ù(>Ùƒ›>Û¼Ë>Ü->Ûæ]>ÛÌ“>Ú­—>Ö}Y>Õo >Ùÿ>Û:X>Ûg÷>Û4M>Ú²~>ÙÕI>Ùt§>ØÊá>Ø´l>Ùì2>Ú >Ú$ß>Úå>ÙäE>Ù¹ê>Ùœ>×¥>×zI>× ì>Õõu>Öiç>Øx>Øg½>ØÖ>×æ’>×”§>×;>Öéä>ÖÓ%>ÖªI>Ö•³>Õ˜¶>ѳ™>Îÿ5>Î…¿>Ñëv>Ô˜”>Ô>ÔK°>ÔžÇ>ÔßÍ>ÔóÊ>ÔÃä>Ôæô>ÔÝï>Ô4û>Ó¤è>Ó”Ò>Óæ7>Óòý>Óñ>Óƒ >ÒÜ>ÒM>Ò>Ò>ÒqÉ>Ó>ÓDõ>Òû°>ÓÙ>Ò¸£>Ññ°>Ñ4q>Ðú>ЉY>ÐR>ÐÃ>Ï~Ÿ>ÏЭ>Ðß>Ð?Ž>ÑE]>ÑIg>ÐßW>ÐYM>Ïîl>Ð%Ð>Є>ÏË>ÎGÿ>ÎÄë>δÊ>ΰ>Íq¾>ÍG˜>Ì%y>ʵŽ>Ëû½>Ì*$>ÍN¨>͘ß>Ëä>Êó->Ìõ«>Ì+>Ì¥¹>Ì?É>Èîf>ȱw>ɧ•>ÇÆí>Åóÿ>Ä5ì>Æáö>Ë=Ù>Ç^>Ä>µ>É«Á>Ëþn>Ç“f>Ä¿>È­V>Ë)É>Èà_>Æ.6>Çx|>Æ" >Çt>Ç-ß>ÇŽJ>ÄÉ;>Ä·P>ÉCŒ>ÊÈ:>Ì‚0>Ì —>ËL?>Ê¢Ö>ÉÅ>Élp>È—•>Çv:>È&>ÈÜ>É |>ÉÐ>Ègæ>Ä I>Áîã>Áû…>Ä¡Ô>ÈF”>Æ…ª>Æ›>Äã€>Å*¿>ÅyÛ>Æžá>Æ£ø>ÆvŠ>Ærx>Ãòù>Ål>È{û>Èí8>È4<>Ç]W>Åò>üÙ>ÀI>ÀýÅ>Ä4Í>Ãt’>¾Òì>¿èN>Ĥ¬>Áp>>Áq”>Åá.>Æ_->Å -,>Â$6>¿d²>¿þp>À=>¿G˜>Á«·>”>>Á´™>•~>ÃÚ±>ÂÖ3>Àˆ²>¾ãU>¿³E>ÂŒ>Âñf>¿½>Âq>ÂH>ÃL«>à [>¿>²>Á‡>ÀKE>À•z>¿ôI>À*ˆ>Á!*>Á4Ì>ÀÙø>¾ì»>½Ð´>¿š>¿“>¾ÂE>¾A>¾T$>½ìé>¼é8>½LG>½ñC>½öN>½ØG>½œò>½Q0>½á>¼öŠ>¼–É>¼y‰>¼z>¼XË>¼5e>¼H>»äŒ>»ËV>»«q>»OG>» >»5ë>»!J>ºÝ<>º½Ð>º®ß>º›Š>º‚>º>!>¹óÌ>¹ü¿>¹äk>¹­ >¹r´>¹'s>¸†Š>¸¯~>¸ëÉ>¸Ô“>¸¼~>¸žS>¸… >¸Œÿ>¸$>¸A(>·y>³^%>²O>µ)À>µ¸c>¶üœ>¶èd>²¹>±˜¬>µ5f>´ 5>±è>³iY>¶"á>µ»Þ>µE">´¶¡>³ÀE>²-õ>±²>²¼×>°9Ì>°Ë ->³7È>´ˆr>³Èø>±<Î>°‰ÿ>°Èa>±8Y>³fk>³–/>²Ÿ³>±î.>²ÉÃ>°Äª>¬h€>¯\L>±[8>¯›|>°MN>±Uù>±'²>±>K>°÷0>°´!>°½—>°š¦>°+@>¯ÔF>¯Á–>¯ÔÔ>¯Ù7>¯û…>¯¬>¯I>®Þ>®Øƒ>®÷B>¯ƒ½>¯ÄÁ>®Ã>®â¸>¯¼¸>®üv>­ß|>­H_>­Œé>® «>® ×>­ŽY>­;ú>­§›>­^Ò>­^ ->­F>>¬f>ª1D>ª9>«šv>¬R{>­%å>­MÙ>­Ô4>­ˆË>«ý«>¬>«ÊÏ>«2>ªÙp>«©Š>«1<>ª¹>«Í>«g>«cì>ªçT>ª»7>«eê>«‰£>«1A>ª[ø>©ïÁ>ªXÐ>«Iµ>ªÞŠ>©ù¾>©Ÿÿ>§Ë“>§Æ>©îâ>ª1)>ª=>©]ø>¦YR>¥åà>§#(>¨F!>¨wÄ>§‚>¤ºç>£€®>¢ˆq>¦\r>¨\>¦Ãž>¦#>§•N>©u>©°U>©„>¨×Ú>§'G>¥Í >¦©g>¦|/>¥ >¥êÐ>¦þ>¥Í>¥½J>¦º>§6§>¦ßj>¦:Ï>¦¢R>¦ìï>§'§>¥¼>¤Ù;>¥„>§Û>§ºÌ>§D¶>§õ‰>¨½$>©Z>¨—b>§\®>§ôc>§©å>¦þ4>¦>¦‹}>£½>—b>šÆ&>¤IH>¦G>¥æã>¥wü>¥#>¥Kü>¥/p>£¹1>¡úI>¤¹b>¦±¯>¦í¡>¥ÒÈ>¦œÑ>§=>§DY>¦F>¦a¯>¦]š>¢&ý>:ç>Ú>—2†>¡7>£xë>¤È>¥!&>¥«Ð>¦ a>¥–)>¥²Ì>¦S†>¦À®>¦Å7>¦Êß>¦o‰>¦SA>¥ç*>¥#f>¤—r>¥_¥>¦3ð>¦É>¦>¥5(>¤§¯>¤îË>¤²æ>£öÿ>£ý>£R0>¤Ó>¤™Ï>¤áý>¦BÜ>¥Ý >¤°½>¤•«>¥Â>¥o2>¦L>¦;>¦ðÍ>§Ü>>¦žÏ>¦Öâ>¦Áa>¥Êl>¤îš>¥†>¥ße>¦D®>¦¡ñ>¥>¥w>¤½j>¤Ý(>£ïî>£y>£ü>Ÿ'‘>‹ì>p>ž-é>¢ûñ>£mö>¥›>¥,ª>¥r^>¥¼>>¥û,>¥ÿæ>¥V‚>¥¯‚>¤à>¤ŒÍ>¦×>¦m+>¦tN>¦´®>¥õ->¥±Á>¥iä>¥šž>¥ ->¥b¡>¥C ->¥ÕW>¦>¦ÅI>§>¦t>¥‘>¤FŸ>¤öD>¥1µ>¤d9>£‚>£¡>¤»>£Nê>£Í>£(6>£>¡¥©> s–> R¯>¡Ib>¢‘µ>£Þ)>¤¸>¤ŸJ>¤õó>¤âÚ>¤‡Å>¤¦m>£Õ‰>£Žâ>£Ò[>¤™>¤[I>¤ O>£úÓ>¤‰ ->¤ZY>£aH>£§>£NV>¤!b>¤ ´>£öÍ>¤§>¢$_>ºH>Ÿ}È>£UR>¢Há> ÛÅ> ˆ>¡Ë>¡½"> î‚>ž=>¡Ù>¢3j>¢Ú`>¢l>¡z»> ô>¡> ¼Ÿ> 1O>Ÿa>žI&>1>›Š¾>™õ–>—¨è>“oÞ>Ž®”>‡M&>‚Õ>‡2ß>­>‘Ó÷>”t>•¶ÿ>—î¯>šÑû>›éÈ>œ5,>œt>žQâ> l€>¡4y>¡×>¡›*>£ -P>£Z>£²Ã>¤›1>¥ ">¥Ow>¥Dõ>¢qŽ>C±>£>¥ïù>¥Å>¤öN>¥ˆ>£”õ>œõ>üÑ>¤Ë>¦>¦>¦º>¦¶>¥Ôÿ>¥,>£>£â²>¤ >¤È[>¤ýS>¤ÍÀ>¤•ã>¤PR>£û†>£ |> ü°>¡3Î>¡¸Å>¡…Ò> üÒ>Ÿ >þò>ž›å>žçÂ>þ1>%0>œ&_>š²u>™ >˜[>•á>’#ç>+>ŽÁÊ>‹.è>†Ê>4Ã>n·->W n>M,M>a°t>v‡Õ>ýj>‡QÞ>‹qû>Žl·>þ>“Gì>”€e>”¨ÿ>–¨%>˜†>™¿{>š,¤>š«w>›T¡>›mj>œM>ž>>>š >>Œ†¨>¯>œ®á>ž|\>žg˜>ž|£>žNk>œ#>”­A>˜¿>ž>F>žØ>œn>’òœ>˜¤z>›7>‘\7>˜OE>Š8>é?>ï‹>Õñ>ñv>œì>“y9>—ê >EH>œ»>>œ¸2>œ;>œÉ>›ð·>œ™å>œÉõ>œ<½>œÍE>œái>œÔ>œ³>œ—‰>œ -G>›0_>› @>›ñ1>›¡>›?l>›Jµ>›=à>šï$>šT·>šN€>šMH>™ãŒ>™Dô>—¥ù>–V>—{>–Äø>•">–PŸ>•Óú>– ->•ÔÎ>•.>”H>“@Ñ>’O5>Úó>Ž¯v>Ž\o>Œ©Ò>‰wà>ƒ0R>„2>]”>yqç>wÁ´>m-”>[ÿ­>BB8>:Ü”>Qˆc>e>1>nC>tBË>€üª>‚ëK>‚2_>‡G >ŠŒu>‹dÜ>‹Ì>‰ôR>‹»_>‹>¥>†¾;>ˆ¼±>‰é‰>Z<>’z >’¨>“#²>“}¥>“©s>“Ôü>“íK>”Ž>”•>“Ê;>“èk>”2>“×ã>” >”ho>”E>“ü>””*´>“ý^>”*h>”=ì>“&ó>’™ã>“‚(>“Àd>“|Û>“Ÿ">“ðu>“ã!>“³â>“º7>“©Û>“pç>“2N>“û>“;>’Sd>’E>’Ô>’ÕG>’®“>’ƒŸ>’ƒG>’¤>’¡ò>’Œ¹>’=¹>‘Ë\>’5>’ >‘Ïn>‘Çà>‘„q>‰­>¹£>‘?>ê2>•†>‘)>Ä3>±;>>>ƒÃî>ŠTé>=K>‰©t>ƒX¢>‹ªX>yÿ>JB>Æ>‘~>#}>ŽC>Æ„>¹N>‹Ø!>‰#Â>Œá[> ê>Œ*>Œè >ú{>Ž3G>¼#>“>Àq>7á>ŒÏe>Œ­Ù>ŒÜ> >Œåì>Œºu>Œ|>Œq(>Œ7¶>‹¨>‹Re>‹i–>‹9>Šé>ŠvŠ>Š>‰„I>‰.(>ˆún>ˆ#É>‡}>‡<Â>†×ˆ>†;Ã>…‚”>„´t>ƒ§s>‚Ž>^_>‚U>|B >x/G>sÍ®>nã>gŒ*>^ïV>SZ>A ˆ>+.>/nx>Esš>UL>_ÛÆ>g¥™>mÁö>r‚>vL>yËF>|VÊ>}<„>8–>€Å©>å·>‚Ç>ƒ]–>ƒÓ/>„ –>„…&>„ãø>„Çø>„¨Œ>…?Ô>…aæ>„‰¤>~Õö>Ð?>„ç‚>…ÆÅ>†,¥>†Oµ>†K‹>…5>|×C>u¼>…Qk>„rÉ>…Vï>‚í>k6>„hâ>…±>…ãä>† g>…óœ>…K†>¸ >‚§N>„º¯>ƒ²­>xnö>€z»>„ò(>„ÔÛ>…„õ>‚Ø:>‚×>ƒÕ->‚³¼>€Šå>‚<)>ƒÛñ>ƒ1ã>‚©>€üd>•‚>ƒ >ƒRš>ƒéÊ>ƒÏË>ƒÝy>ƒÛË>ƒÔ½>ƒ¼U>ƒ³Ñ>ƒŸh>ƒ…—>ƒ\‰>‚‘>‚=>ƒ8>‚ì¬>‚ï->‚‚m>€{Á>ztÅ>}°á>N&>õX>P¿>ÀÉ>‚«>‚" ->ô™>ÆZ>¥Ø>€ ”>>KÌ>Jî>i‹>Z>:ƒ>'å> :>€»Û>€i<>€ >€>Ë>€r4>€M­>$ð>~«X>~Ù>€>€í>ÐÌ>~øz>~µæ>Jï>5 >~°Ù>}_c>}N6>|X‘>}R`>}ªã>}#H>|‹>}:å>|­v>{´Z>|eâ>|Ó>|bm>z ->uëÕ>uâd>v¥Ò>tÌC>wjû>zH;>{>z»â>z2›>z<¡>zdì>zWè>yïs>y©è>ykn>váT>mï>nÏm>w3>xV>tÿé>vRã>wÂ5>w@>w -Ñ>v·>t6ò>p÷õ>s~>vÌ>v½>vy>v,²>tƒ­>l >pa>uDÛ>u'Ð>rÈ>p‚b>sõì>sÇ«>rá¼>rYO>sæ>rnÌ>qüÊ>qß>qœ°>r%>qØ'>q?÷>pÿ§>pá>p8–>p >oŠu>o2´>n£á>n„>n4b>lñÎ>kÅ¿>géi>j'[>jô¨>jZM>iÓÆ>hð >gð%>fÒ³>e†Ó>cæ}>bƒO>`Ö >^3š>\§>Y>VBõ>RÝ)>N†ª>I8>AøX>8">*°¹>ey>*j>'ý$>6Hî>?˜%>FŒ>KÓ˜>Oñž>S@¸>Ußî>XÈ‘>Zêt>\o)>]»È>_&ž>_×ð>`´ú>b>b»š>cbU>cèµ>dVÂ>d²ò>dîÅ>dE_>céZ>c~ >crÕ>a[>b‘©>euó>e’É>^°Õ>[ >d}€>ešà>eÕL>f¾>eôÅ>eó·>eØ>d¯>bkµ>d^t>e|Y>e88>d‡d>dÙK>e$P>c °>`3>cé>d·Ù>d>ö>caí>d"w>d"É>ckd>^ºg>`…¬>c>c_>bçÿ>bï>böÄ>bµæ>bx(>bOM>bRŠ>aÙ>b5ƒ>aÓ>^šÚ>`Aö>a‡f>aLj>a=Ó>a¿>`õÓ>aÝ>`´ >_æÌ>_Î>`]Ÿ>_ÅŸ>_Å>_ñü>_ÕÖ>_¤c>_aK>_ML>_6.>_>^éL>^Ǽ>^ >^>]j§>]úp>^ A>]à>]«Ž>\Dó>Y½t>\{>]H>\÷[>\œŸ>\"ú>\1z>\O=>[þP>[5x>Z™(>[wf>[‡>[+÷>[$`>Zù>>Z·&>Z19>Xïø>Y¶s>Z^ô>Z!å>YØ>VÁ3>XÆ>Y%\>Y\&>Y–>Xü{>XæÉ>X¬Ë>X*ñ>Wd>Wo>Swü>S%é>WZ >V‚÷>Vúq>WK8>WÉ>Wå>VÌš>VuÓ>VwO>V6>VPë>Uò“>U§®>Tê¸>Tžn>UZÕ>Ur^>UD>U%À>U >T¥C>S!>Rü >TdÏ>T? >T 1>Sü>SÍÉ>SœÝ>ST>R>Q‚â>Pw>Hër>A– >EÐJ>L¸?>Q¶â>RÓ>OÞ >L…ñ>Oð%>Q>Qsü>Pþˆ>Pî*>OÁ5>Ouk>Oi>P,>Pmo>P1C>M®>KH>Nó´>NYG>L£,>Lí`>M³>MAG>L"À>I†ï>M(.>Nˆ>M9ß>LD>LþË>M…ã>K>HAØ>L>M/}>LG>Lk±>Líð>L2Ö>I´a>K–Ò>L8(>L%]>L>K¨4>IG†>I©M>K6z>J3>G92>A>GKQ>J°:>Jié>J?Š>I¥>Iï!>Eñy>CªQ>I3Î>Iz>I/>I@>I,–>Iø>Hè>Hÿ>Dè¦>D¤>Fq>Câ~>GŠ¸>G÷j>GÐÆ>G‘‚>GrÃ>GTú>G»>Fž+>FpÞ>E !>?ƒ“>C¯0>F=´>F"j>F -Å>E…Ž>Cd>D‰Ã>Blû>2CW>0ãÊ>=žë>2>4@Ò>>Ô2>CÅy>B±Á>CA´>@¯æ>6ÁÙ>@|Ø>CUZ>C0>B<Ñ>B¬¿>C>AÆg>9y.>3^Ï>? -ã>B*J>B9'>Aóò>AI¨>@UŽ>?1ü>:›><4Ñ>9=0>?§ƒ>@Fš>@>@Hÿ>?Œ>?Xc>?õ!>?öÃ>?«p>?—„>>å´>7Ù><»^>>Þª>>`¸>=˜Ã>> -¦>=øU>=ìã>=ÖW>9øú>3÷`>;¢>=.¯>;ƒ¦>8š>:óÄ>3‡,>5õX>;Ó>;@¸>;EX>;^í>:§>6ûŒ>9îê>:Úê>:² >:{é>:<°>9æw>7Ýâ>6¨ó>7Ž>,_\>2ré>7¹Ó>7ÀP>7?œ>5Ë>2aí>2Oq>5¾>4]>3™Í>3>2œ*>1Ä×>0²C>/pÃ>.8˜>+ÚÛ>$n>%|>& š>$†> Í>¸û>Š>¡>–m=í5ƒ=çÙŒ>Ý~>@>yÜ>Û÷>M > ž>!‘?>%]>'÷'>&´à>(=¸>+Çé>,Ò;>-Š$>,Â5>(Çÿ>*2>,Á,>/}ï>0?C>0ä>0Î >0ÿŽ>1$G>17€>19%>1Zž>1oØ>0º>/Ü;>+>u>.Ïœ>1^œ>1z>1sý>1^«>1'o>1>Ÿ>1 :>0åÑ>0ü>0‚õ>0×Ê>0æâ>0¡¿>0>ô>0=T>0‡m>0~>0g>0?–>0Î>0«>0À>/ç>/“‡>/@º>/†@>/oÒ>/M[>/Ý>.ýL>.úó>.ðÞ>.Íà>.{>.s<>.XÎ>.FÀ>.j>-Ì>-Žœ>,Œ=>,Xg>*——>+&n>*¥Œ>,\4>-<>,vP>*l>,(¹>,pÔ>,oÅ>,J˜>,Î>+ûª>,Ø>+õ{>+ç„>+¾³>+§£>+x®>+`>*ßò>)èó>%›H>%Ò9>*Šö>*¢Y>*è>)ÅÁ>(B¦>)´a>*G>)üÝ>)˜>(;½>);>)væ>)N¾>)* >(íú>(ÿÅ>(ã§>(ž>(“~>(W>(Xb>(–>( |>& H>!e>#Dw>'6`>'ä>'YŸ>'Á>'5i>'Ô>&ÿ{>&Þ–>&ÃS>&k>!´s>ô>ï>#ø>!Úž> •>"ÚÏ>!À>$”Y>$ >$ S>$¸Í>$Ô:>$àÖ>$Ÿ¢>$v*>$b‡>OY>`>"L> Ît>#Oë>#Î>"¸>#$>#‹ê>#g>!nü>Xœ>"“Ð>"û[>"i>"n3>" †>.!>£¹>!Lª>²ê>}Ò>’°>É»>P$>!ZG> oÒ>=ô>ÌT>d >L³>ô>ï>„°>«Ž>ï§>1a>°3>¦Ÿ>¤è>Ö‚>ve>˜å>ÃS>†f>êð>‘¼>~Þ>ë>ÙE>½ > >wÈ>^z>3c>é¬>ûÎ>Ï´>¹u>Iú>?Ž>oÝ>[Ñ>2> ø>òó>d(>{_>–4>Šõ>iH>@õ>bò>[´>(ž>Æ>¯â>›ª>xI>„~>"Ä>ù>>V>ù >âë>–Ò>E>Ä>d&>>N>Ϙ>íë>âD>Öã>Æ3>©!>B¶>ª…>Æ¥>@š>[Ö>Îø>r‘><›>$>ÀÎ>Üå>À`>Ý>šŠ>¦Ó>_i>[ï>ÿ¶>G÷>5Ô>÷>ÿs>¶ >»>‚>-Û>4M>e>hž>ñ>ž{> =>©> ”„>I_>®`>~ö>r}>[ô>o>sù>Që>‘¬>¥Ð>û„>^">‚ò>i^>GK>Å>ôŒ>ìz>ÍN>«;>… ->Q³>T,>>ø/>Ò—>ã_>(Ñ>Ô<> ò@=ýJ> ã>>4M>$„>òS>n>OG>ø’> [Ü>;‰>Ë¿>ýG> 2>ö ->ü]>³s> ûz> ÛE>…>T%>è >¤«>Æ> Í[>b>n˜> ŠÊ> |”>ef>ß>c> W>üü> ›æ> Ûz>‡>¥b>„/> w> Eæ> ­>(þ>¦> õR> <”>p´>2>ìÍ> ÒÆ> `b>ý>„‚> -¸7> á¸> Öl> ½> £k> ‡ÿ> ln> Tÿ> ;ê> !*> ¡> êÄ> Ô> ¹#> Ÿ=> …h> gÆ> Cƒ>œÅ?%À°?'¹%?*kY?-©?0îY?2}1?1Ú?.?+ü9?+hP?*6?%ð¢?¼ ?Ã?§2?©ª?"—p?)hk?.ˆ??0gg?/p;?,àA?)K‡?$(?í&? - ?`¦?$ã?.´:?7Á?9t»?5s_?./#?(?&5é?(/H?*äÖ?+Œî?*nÚ?)‘Û?)„õ?)|?)±í?+Tà?.?X?0œ¸?1¡?0'°?/Œ£?0ÁÉ?4#Å?8r?;9¡?:bi?5í#?0Q\?,»Å?,y -?.1È?/RÂ?-ˆe?'ò%? °}?Œ?À?$S$?'Í8?&\¤?#)!?"ùj?&8˜?(©?&öØ?"‚™?Uá?ÖŽ?"ú!?%’?%!±?"M¬? ‚6?"s2?'iú?,l8?/4ü?/¡÷?/%ß?/{”?1fú?4*ã?6?5ª‘?3 1?0:â?.\Ÿ?,ÀÎ?)²?#ï‰?Žï?ëâ?oq?ºA?ý¤? æÄ?&Ó»?+¨w?,Œ!?)1~?%¼e?&Ѳ?+Ý?/ðÒ?/ÁM?,x?'ž?"8@?Ö?ªÿ? 6?"÷?#S†?$£§?&ìƒ?*É@?02 ?5ñˆ?9Æ#?:Ný?8¶²?7,Ý?5âÅ?3=þ?.²|?)’3?%t‚?#W÷?#¼Ž?&P ?*Ñ?.\P?2¸Ð?6]f?8¬Š?9­ø?9s?8Â?5ò?3Ž˜?1ô?.à~?,ò]?*âw?'Èc?#’õ?âÿ? Ý??LR?×c?¤!?"?%ï?,‡Ð?0"à?0tê?.èï?,z}?*¹¡?+¦9?/”?4¥Ð?9Ô?<)\?>$Ñ»?> ?= ?;0@?6Æ·?.Ì6?$_¥?i?ß×?›?L?Ho?Æw? —¸?$)?'ii?)¶?)ñw?(ö?)§?+ û?,¯©?*û?%ã?œ(?øO?“‡?X‚?Ÿ?ê¹?! ¼?"Éq?'ð˜?.ò;?3¡û?4_W?3$¿?2ó?1ƒ?2j?4Jï?7¼¡?:«}?Á?-Üâ?.êí?1Ý$?5m.?7Û«?8þ¬?9P=?8R!?5ˆ?/Zä?(8­?"s˜?!*m?%–?+Aö?0ì?26¹?2×?1Ò?0Œü?0T?1ñ×?41Ê?6C-?8jè?9NÐ?6R?.«º?'w£?%(ƒ?( –?,Cc?.U?-U?+¬;?+P?+£P?,ìÙ?0?4aN?7²…?7}?36?+®X?#"ô?w?º>?!ª|?)O?.8W?.ú/?/F?1y¸?6(©?:9³?;1B?8wz?2Çþ?+N@?#3…?H^?ÚZ?›d?(­_?2cÔ?7‹X?7žU?4)V?/™?)AÆ?#Ño?!@?" A?%`è?$Ýr?!‚ß? ¯?#Zê?*j‡?2×'?9¶u?e?=Ú?Úò?P?<Ù®?:é8?8|ô?6ö÷?8­z?<„d?>'¬?;ï?9Wë?:5æ?=Øk?@gñ???;[Ú?:m?=Ô ?@z?=™4?7,T?3'·?4)¯?7¡‡?9«¦?8‡?63@?6æ?8Yã?:{ˆ?;Æ]?=HÂ?>ó ??èÜ?@Û_?Bôp?EJ??EÌ¢?Cë@?A'?>Y?;¢?8öM?7ñ½?9WO?;æv?>5À??Ò?=ŽÌ?:P¸?7„ ?63V?5Z÷?2ÿ˜?/¾?->(?0Æ’?7£é?<™ˆ?<¬j?9 £?5FÉ?4ƒ?4ç_?6\Ï?7ð8?8í¥?8Wo?7lm?8sÍ?:ëà?<9?;™?7Pþ?0—Ë?(jÜ?#Ã?&+n?- —?3‘¥?7%á?8P@?8<ã?7éy?7§€?6¿0?4o?/yÏ?*J?&ß?%wÏ?&S?'m¾?(R?)Sg?%:\?$ãu?$üU?£çñ?²êA?¾ŒË?ÆÜ?ÍÒÆ?ÓH?Õ4O?Ó•Û?ÑàÇ?Ò:’?ÐùU?Ê×(?ÃQb?¿û?¾#?¾m¢?½–F?¹¦4?°ý“?£!?‘p?yùÝ?PºÒ?(’ä?F>ú«p? î/?3E?_Gÿ?„Àu?—`Ÿ?¦xð?°±ñ?¶'º?¹´?¼³ß?Ã,?Êó÷?ÑP@?ÓÒJ?К?ÆvS?¸?®¬?®>œ?¶#M?Á8?ÉÙ£?Ì‘Ñ?ÉÍ?Â7S?¾`?¿T%?Àƒ?ºÛs?°FP?¨~"?¥Ç?¤;È?¡À?›ý?•C ?‹g‡?x{î?Rp?+GM? û·>ê`:>ìc‚? ΃?-Þ­?Oßc?o7•?…âg?“èñ? êû?ª•t?±0Ï?¶`Ÿ?ºÈ7?¾{¬?Àé8?À©ì?¾}?½B?ÁŽ2?Ç™?É?Dz?Ä;ñ?¿p?¼u?¿(¥?Áë«?Á$ÿ?Á¢?ÄQò?ÆjÎ?Åß?Ã’o?Óò?Ã\¬?Ãò€?ÇÛù?Î ù?Òç#?Ô}?ÐÄ‚?É@™?ÁÈC?À§®?Ær?ËqÁ?Ë~ñ?Äz0?¹2+?±Ýµ?³4Ì?¶™Ï?³´Ì?ª¦ê?ŸÉ`?” -·?…g?fãn?@1q?®Ï?°e>õAÕ?•×?3/æ?ZªÔ?}‘P?ŒË½?—)?Ÿ†?¦­Š?¬±{?®'—?«é ?« Ñ?±Ò?¹:Ð?¼›?¼¹ò?»å¹?ºî(?½è’?Ƈ1?Ïáv?Õ®V?×éâ?×,ü?ÑÀ?Æ¥*?»Ï?¹ÄÃ?¿r?ÅK|?Èœd?ÊP•?ÊýÙ?Ë´Ç?͆6?ÏËw?Ñ{Š?ÓZC?ÔÜß?Óœ¡?Ï­?ÉÜÉ?ÂîÓ?¹§ì?«|5?•ÑS?oZ_?-D2?_l?Nµ?JÞ?‰•?¤K²?´z€?¿ïÝ?Ê•²?ÒSó?Õ^?Ô[&?Ðú¸?η ?Ð||?ÔW?Õ.ß?Ó“|?Ò >?Ñ`ÿ?пÉ?гd?Ó7¦?×ß?Úb|?×–?Ñ­%?ÍÈd?Íð??Ï =?Ì¥??Å?¼9?´ÆÉ?¬š3?Ÿž•?‹é?bYï?$½p>ÝñB>¦$>¯U>ì¬Æ?"4È?Nei?u²¬?e¹?Ÿ99?®*]?¹jÔ?Â|-?Êú?ÎèY?Ϥw?·]?а•?× -?Ýi>?àt“?༱?á8|?ã,?æDW?çÑ^?éP’?ì,s?ïg?ð߯?礪?ëÃ?æÀ?áÁ½?â e?æg:?ê<¦?é\„?åp?âYê?á‰?߬Í?ß|»?äâT?ìÝ?ñKß?ò£A?ñ\[?í"ß?è‚?楦?é,«?ìŠ2?ïõþ?óQ§?ö1:?ø#?÷?ôì?óy?ðÏØ?ëb?ånì?åd?ëD?ðÊX?ðEÔ?ì ~?éàÎ?éÄ?ê?ëÉÇ?íÀØ?ï’±?ñ -¼?ó%?÷˜Æ?û<?ýr?ý'ô?ý -š?ë4½?îÜ÷?ô­?øQv?úÏò?þnX@™@wû?ÿ"¨?÷Èí?ñ`¶?ðé´?ô¬(?ö9|?õHÎ?öž?ùV&?ø ?òƒÑ?îë?ñe¾?öTþ?÷0"?ñ}Š?è/ã?ⶨ?çª?ñd -?ùT]?ü K?ûn?ùW?ö—a?óº?ñ¨Ý?ñ06?ñçs?òH?ñjS?ïž{?ìõ>?è­Ò?âX-?ÙØ"?Îͺ?Àó?°|û?”™?‡Æb?^l+?1e~?»?0ŽÜ?]ál?ˆDð?žÁ“?±!Ô?¿nP?Éšv?Ïú?ÔÚS?Ú»]?áŽ/?è:(?î³t?ô0?ø‘?øh?õCs?òÆñ?ó1ˆ?ô.ÿ?òe¯?ïã??ð– ?óv‚?ôºm?ñ'?è’?á™ã?ááÙ?åd?æÃ?çÈÍ?í)(?óÀ1?ø}û?úÃÍ?úõm?úÄx?ü$ª?þÄ•@6?ý4Y?õü•?ïZ4?îÆ ?ò´?öiZ?÷‚F?õà?ô¤?ôŒð?ö³?÷óK?ö†k?óa€?ñ«H?òV?óuÌ?õWâ?öQ/?ó÷˜?î·?ê÷?ê¬?í®?òwM?÷{ð?ø¢È?÷íµ?÷»ù?õ²«?î ?ÕHò?ß)·?è>í?êBí?ãp5?ÖM?ÍN:?ÐQê?؉}?ÞJÙ?á“?â›?â¦Í?ã'Ê?âä?߯?Þ°]?àn6?Þ]?×#Q?Òa¼?ÕÈ‚?Ú^2?Ùù?ÖU>?Ö‘?Øg?Ù‹õ?Ü—¡?à0?ßn·?Ú7{?Õǃ?Ô$´?Óš?ÕO®?Ú]¦?à5Õ?ä %?år6?䥸?áÑy?ÝÆ?Ø£?Ò: ?ÌŠ?ʨ’?Íç?Ïg˜?ÒÙ?ÕÛØ?ØÍ;?ÚŸŸ?Üé»?Þ Â?ÛÓš?בå?Ôܽ?Õ}??שÔ?×?ÓlØ?Ìë¤?Ærf?Å_?Ëò†?ÒAx?ϹZ?ɽÄ?È«õ?Ë{4?Î-D?Ì´º?Ĭq?¼˜•?¹£õ?¹ƒL?½«?ÆÈ2?Í°í?ÍâÏ?ÉÑ?Ç~%?ËV`?ÑéŠ?ÓÇ¢?Ì;ç?¾B‘?³ä!?µ›²?Àܵ?Ëgf?Ð1Ð?Îø‹?É?Å’æ?É´Ð?Î9Z?ÉÏ÷?¿™\?»‘ ?Á…?Æÿë?ÅÀ?¾à??¹N?·Q?´SÖ?­mL?¢¹j?“ka?~“µ?R‡?)wå? º)? t?&˜û?OšW?tà£?‹½g?œ -?©`a?²§à?·†?¶hu?°Ùg?¯Âu?¸--?Ã2”?ÊÆß?Ï Í?ÐR -?ÏÁÛ?Ϭv?лÀ?ÑΉ?Ò²]?Ô¥=?×&¥?×ãK?ÔÛ˜?ÎP?Èœÿ?Çâß?ËsÃ?Ð2:?Ò ?΃?Å]Ö?ÁŒ?ÈÒ?Òã´?×ÙÆ?Ø5G?×xÔ?Ö ?Ͼn?ÂŒ=?µØ]?³[ ?»;??Æ'?Î^`?Ñ=®?Ï– ?ÎUC?ÎO?Èò©?½ëî?¸âÂ?¿ö¤?ÈÀÇ?ȤO?ÁüÛ?¿?d?Å¿ò?Îq?и?Î ?ÎE"?Ж’?ÐA§?Ílô?ËCq?Ê·\?ËoÀ?Ìg?Ê Ó?Âgã?¹F?²’?²ÒÂ?¼›?È&ƒ?ÍhT?ÌÙ?ËW+?Í Í?ÏŸé?ÏgŠ?Î÷?ÍQý?ÍõX?Î/ˆ?Í@b?ÌH?Ì??Ë«Ô?ËÚä?Îâ?Ña©?Ôœ?Ô¦¤?Ò?˦Q?Â…Ý?ºÖ?¹"–?ÂOº?ÍÕ?Ò›?Òƒ?Îb?Éë³?Ééy?ÎE=?ÐTö?Î#Ì?̈«?Î[?Ð%?пã?в?ÎXT?̵y?Ìó–?̯/?Ë‘Ï?ËÏi?Éì?Âä&?¼îÕ?¾Ñc?Ä—c?ÈÝM?Ëð?Ï@4?Ñ¥g?ÒhS?Ó!;?ÒÝm?Í‚ä?Àã?µÁ?¹_?Ço?Ñ º?Ôš½?ÓŽ¤?Í}š?Å ?Á "?ÂJ"?Ån?ȧÒ?Ërf?ÌøÛ?Ï*?Ñ€@?ÒÝd?ÑËø?Ëï¿?Ãûð?ÂÑj?Éï=?ÑÈ?Ó«ÿ?Ñâ?˶N?Å´à?Ç'?Í÷Ô?Ò{?Ó7?ÐXZ?ÊMú?ÅBP?Ƴì?ÊÜ?Èá”?Ä]?À¯O?¾{s?½˜C?ÁC%?Çm?Êì?Ês?Æ´>?Â’P?Ãkº?Çqš?ÆøÆ?¿#¿?¸ý´?¾T?Èÿo?Ï c?ψF?̤|?È Ï?ÄÁ?Åf?Ç:4?Ç•0?ÈŽÐ?Ɇ? &?´Ž?­¼?µTÍ?ÀƒG?ÁìÂ?ºúÔ?³²?³?¸Ì)?¼H?¿O{?Åp ?È­á?Ä[?¼v?¹µb?¾B?Äl?Ç÷ø?Èó?ÇM™?ÁP?ºˆ´?¼”? Æ?Ã,¸?À¯?¿‡?Á4Ì?ÀOÍ?½³©?º1°?²L?ª;õ?®ÿ?¹V?¾…¹?»}?¶‚’?¶?¸ž?ºZ*?½C]?ÀF›?ÁX:?ÁdB?˜?Â}û?Âû?Á’Ô?Á·°?ÂuÂ?ÃG¨?Ãܦ?Älý?Äÿž?Å+?ÄÅ?ÄeÚ?ÄÈ?Ä‚?Ãö@?Ãú?ÀVÑ?¼9x?¸z$?µPp?³ï³?¶’™?¼*?Áü?à 1?Âzõ?Á(¤?¿EH?º—?µ…?µÍÙ?»_I?½uK?¹æ›?µùs?¶¸Œ?ºÌõ?¾f“?ÀŸV?Áë½?Âs²?¯?¼þ?Âs?Áð?Á¨?¿ãt?¾ôO?¿r¼?ÁÑ?Áû¯?Áñ"?Àÿ¸?¾©=?ºÈá?·Êú?¹£?¾f$?Á F?Àµ¿?¾‚l?¼#?»Û?¹œá?¶Îœ?¶_?¶×¶?¶‰†?·á¾?¼H)?¿û?ÁÁ¾?·ª?Âù·?Âb>?Áxi?Áf?Â:?ÂÞ?Ã9?Ã}]?Ãiä?Ãa?ÃŒ0?ÂF?ÃJð?Ãz?Âæg?ÂåQ?ÂÜ·?ÂÂ?Ÿž?Â÷?Á ?À’‘?ÁT?ÀÂb?¾¯š?½qŽ?¿1Ð?ÁhK?Á<^?¿.?½l?¾ˆ3?ÀÝ)?ÁÒ‰?Á?¿ä²?¿jw?¿ñZ?ÀÉ×?ÀÙŒ?ÀL»?¹?¼F%?½p°?¼“S?»…?»²Þ?¼•Ô?½f?½ì-?¾Í?¾ í?½ó?½¤Ò?½F?¼sÚ?»ç´?»Œ=?»M?º_Æ?¹€Í?¸fó?·d.?·VÒ?¸9?¸`>?·$¾?³÷ë?¯HX?«G°?ª‡?­jè?±Py?³·?´?³ó?±€ê?°‚:?°ßè?±§™?±ÙÂ?±«ï?°ãå?®6¯?ªÑŒ?ª–Ã?­‹[?°…«?²a…?³ Ê?³ ,?²÷?²÷y?²g?²"ß?±³µ?±¥?²7ý?²³õ?²EÃ?°•—?®u’?­²‚?®‰:?¯ŒU?®ü’?«ôò?¨º?©kÕ?­?¯h»?¯‘/?®+Ï?¬)¼?«y@?¬Ø·?®tx?¯"z?¯T~?¯Ž%?¯—?¯î?­.?¨»™?£²}?£™T?§ûÒ?« è?¬ß=?¬Û‰?¬~ ?«àâ?ªôt?©ï•?¨‹+?§Ì?§d?¨—M?¨­º?¨&ƒ?§¼Ý?§7Å?¦D?¥wŸ?¢wÑ?œæM?—À?–öE?˜Ž?–È?’|A?‹#v?T?o²?^“î?Ha?'+í?ÀO>öèn?€?1i?O|¾?iФ?ìâ?ˆ.?Œø)?Ž‘j?Ån?’t?”óp?•¾ì?•£”?˜ -¬?œÞê? Ï3?¢3Ç? ða?ÝË?œÉ?à¤?¡G:?£I?£1B?  Ø?“Ä?žF?¡r"?¤W?¦Jq?§a?§¦ ?§iJ?¦ðö?¦-?¥¯?¤#Y?£ê?¤šì?¥•Ë?¦$d?¦BL?¦fó?¦°ù?¦–h?¦?¥]G?¤ Ÿ?£56? ­u?žv-?ž«4?¡7?£Êm?¥?¦?¥·?¤$ß?£G?¡´œ? y4?¡¥¦?£ô?¤ð?¤ËÂ?£[²? Ý?œÃ°?'ü?Ÿã?žgÀ?œý?žHû? â?¡ÉË?¡2ñ? 0Ü?žŽ?¦Í?žBÕ?›åM?’•E?‹(æ?´Í?˜²}?–Œ?Ÿž¸?¡"P?¡ðà?¡©c?¡&n? Dä?× ?œœd?žÈI? œ×?Ÿ×7?ž»X?Ÿ?ŸP@?|§?š‚™?š©?ž¨?¡ÏÀ?¢µÞ?¢|0?¡“&? yÂ?ŸkK?ž,Ë?´ò?ž¦§?öÛ?›‹U?œc\?ŸØ)?¡©°?¡£a?¡Bï?¡/¬? §ä?Ÿ°"?ŸZÙ?Ÿ ½?ž<Í?ž 9?žæ?œKü?œAÊ?9L?ž2í?ŸWH?ŸbŸ?ž/t?¾t?ž’|?Ÿs?Ÿ¶r?Ÿ’a?ž‹=?QK?ÌÄ?žæð?ŸEa?Ÿp?Ÿ‹"?ŸŸv?Ÿr?+r?›•|?šš -?™[/?š×?Ž?Ÿ´?Ÿ`†?žàù?ž,‰?ðZ?ž?žõ?žÅ?žt\?žÑ®?žÉ ?žÙ¬?žÒt?ñã?œ´À?œK§?œ$a?›ËA?›´C?›YG?™x|?–«¯?–´P?™?”?™ÉC?™JQ?š‘«?›—"?š}?˜ý ?˜2É?™1¯?š’D?šœU?šd?™pn?˜^–?˜ßz?™¥Š?™ 5?™%y?—Sæ?“~Î?’Ř?—k?š›Â?›sF?šÉm?™ â?˜ ?™³?š5F?—öÔ?I?…‰Z?€8?…¢-?Œ´ ?¯Ø?‘Yw?˜Ù?šü…?šÝ`?š…Ö?š•3?š,+?–÷-?§$?Ž?q:?’)¿?‘^â?Ùz?’áM?“iE?”)!?–i?•†­?’:?Ž¼µ?ÈÐ?•?z?—´?–ú?•£ß?“f}?’K:?“%?“·{?”Hà?”Ÿ?•f?–|ö?–EA?”Vº?“¸â?•W¶?—aö?˜~D?˜Õ|?˜}Ä?–ú?’ Œ?‰Ôô?‡³ª?Žf®?“í’?”9?ÕÑ?Š¤ù?ˆ´W?‹?C×?9¤?‘¤Ü?“˜T?”|»?“³Ö?“yÅ?“ç?“KÈ?’Ú»?’Ùø?’îÚ?“W6?“XG?‘œÆ?'?Þ'?’sê?“^ê?’f?, ?Ë/?Š÷í?ˆñ ?Š‰˜?Œ§²?‹"Ü?ˆÿ¯?‹ -?ÝÇ?ŒñR?‡ž}?ƒò?ˆGc?[î?¯\?»Ö?ŽQ?‹¬‡?Š)ç?ò?’8@?“³‰?“Äë?“h;?’ض?’†V?’VÁ?’?Š:? -?ŽÈý?Ž“†?z?Œ‰7?Uœ?‘!?¸®?Žb|?Ž(?Žc?Žƒy?Ž†¤?ŽnÂ?Ž.?Œí¤?‰$l?„Â?…]ß?ˆ¿‰?Šuà?ŠyÒ?‰qZ?‡¬ ?‡‰;?Š ?ŒfL?Œþp? ä?Œú£?‹¢¸?ˆÈd?‡0ý?‡ä¾?‰J”?‹Ô?‹æW?‹Òe?‹®?‹cN?‹ ^?Šº?Š.~?‰xD?‡”¦?‡v?ˆ¼v?‰u¯?ˆx‰?‡ø?…>?„¢?…,Ó?†6Y?†Ê?†ÌÅ?†ò‹?†á`?„á?}Í ?wšÂ?y÷?€]4?ôÚ?‚.ÿ?Ô4?H?€Z?i?€,©??f¢?‡û?…'?‰î?hY? \?!?? ß?º?%-?€ë%?€˜?€OR?€>?„J?~E¸?}ò?}ŸE?} ¡?~] ?&+?~åD?_?½~?€×?€•?€0?!É?{VÉ?wŠ'?wÊu?z€#?|¨ä?}Kò?|'?{ä'?|°—?|'?{H?{éa?{¾{?{,?|“?}8õ?}ª?}€Ä?}L«?}£?}-ð?|Ðs?z!ð?vÍ;?wñ;?{0?|7‘?|J?{¼t?zu“?xÚä?x¥’?xëæ?yÔ%?{ç?{¤E?{]]?z€u?zÄ?z -¦?y“¼?xÃÊ?wZ?vBó?wJÐ?wÚ?x6?xÆ~?y'Ø?xׄ?x©¡?x¢ -?xmÙ?wh›?tÏv?nâ1?k5†?p)ô?tYÃ?sEa?s R?uã?tÀü?r€ô?qe*?sô?uY ?uöÔ?u‚L?tö$?u?uR?tý·?tÕ?sF"?p¹‰?p ?q”}?qày?qxË?r•‘?sÎ÷?t7ƒ?t7G?tTï?tOH?sæ?sX~?r²U?rOA?rØ?q€?ofÕ?nÏ*?oc?o??oŸ·?p˜‰?q¤K?qær?qÂP?qV?pÐq?pÄJ?qE?q>?q*‘?pÅ!?pY(?pxy?p‡í?pS#?oÒ ?oÕý?pl?p„¯?oÛJ?oiµ?oq??oÞ?nÅÀ?n²Z?n=?m/ü?l`Î?mOv?Y¶G?X³?YÅ?Y|#?XÛf?W¤@?W4¶?Xi?X}Ÿ?Xzÿ?XG$?Wñ ?W;æ?V›?UœŸ?Uáß?V†?UV?T¯k?T Ø?Tg(?T´?T6?T~?S߶?RLX?P´W?Q?S?Sß?SW?RÓ/?QþÒ?Q^¦?Qv?RZ?R6™?RL‘?Q÷ ?Q?O¢Â?N|?Nv[?P(L?P\s?OŽØ?OQ´?Oeâ?O=Ý?N?K‰Þ?KÚ+?N„œ?O¹¸?O¸Ÿ?O(N?NzÑ?N¸?NÁ?N¡ó?NHÐ?M%?KÛ·?K°?Jå.?J¯à?Jô?KÊ?L ÷?Lˆé?LjQ?KÅü?K¢±?Ku1?Jý…?Kxò?KÆŒ?KÒÝ?LDÂ?Lf?L›x?L´ ?Lf¶?KË?K]Ò?K:?JøG?Jà½?JÏk?IñB?IŒó?JÄÊ?L!?LgS?K{-?JàN?K§?LS›?LË?Lïí?LªÃ?Lùí?M¤û?M/Í?Kæô?Kú?J±??J¿Ã?Jþ¥?Kƒ¹?K´÷?KŽº?K#ä?Jc¸?JjÐ?J~?I?GMY?H&?IM§?Iz‡?I¢E?J>Ý?Jïš?Jë’?J¡‡?J¬F?JÒ?J¢]?I¢j?G¶1?Gz?If±?JSÞ?J?IxG?Id?H²?FÉ?G[M?H.à?I?I}?H`œ?Fi½?FÐ?Gùú?H_&?H=¬?GWÂ?Gd_?H'?H]ù?GÑg?FF•?EcS?F=Ó?Ec?B\Ÿ?D:€?F©?Däî?>Ö?;‚??°â?D÷ì?F,«?C–?>XÖ?;ùc?>óÆ?ByÄ?AäÅ?A´?C¥{?Du?D:œ?Cyë?C¯?C+®?B¶]?A ?Aj?A?“?@Éî?A#N?Biç?C ?Bõx?B¬?BGe?BP?B{?AC!?Aâ®?Bk—?A²_?Aš?B$˜?B3¤?Ao­?? Å???@0Þ?ATC?BN\?B°¬?B7Ž?A•?Ax(?A`?A´œ?A¿˜?ALå?A3?Aóú?A©½?A?r?A r?@¹µ??__?>Ò½??O ??Žs??)8?:õx?6W?8:‰?=4f?>²?<‡÷?7»?3"¿?6{=?ç?=¸J?>¥?>Í?>q?>;g?>NL?>G¯?> +?=Éþ?=µt?=MW?;i!?:ø?:ü—?;ݺ?:ø-?6zT?/Ž”?,ˆá?-M¼?-?§?*®?*áˆ?/±e?4^j?68u?6PL?6mè?73þ?7m?7ô%?8Nà?7+?6çƒ?6SÍ?6ÃA?6«O?6fv?6Ô?6,®?64Ã?7GŠ?7_T?6…?4ô?2e?4%¼?6z{?7[Á?7‘‹?7Óó?89A?8R8?7¹?6\Ã?6k,?76q?6€?5û?6¶?6ï ?6¡q?6J8?4Iv?+Àk?%Ƙ?.M?4Ô ?67J?64N?5´F?5¯T?5—p?58=?50"?5›?4ïã?5Ï?4—’?3Bª?.ÇE?(9Ø?*C ?2/8?4½?4ž??3ì?3#ö?3(G?2˜H?1Hc?1»(?3ä?3ÆÒ?3ñœ?3Óí?2úâ?2ç0?3œ´?3a£?2M?1¢N?2¯ó?3:ƒ?2½)?1ÉŸ?15t?2û?26?1m)?1V¦?/«U?,MC?,¤?/3Ú?0*=?1uF?2  ?1׉?1x8?1`‹?0c7?-š–?+??-€A?/á?/a¿?-Vé?-^;?.·£?.zt?.…?-†$?-Ó'?.ˆ?.?.—?+±?$u?AC?#¬S?+`›?,ˆ??+;‹?+§%?,ÿB?-:œ?,É)?,}A?,Šœ?,j^?+óË?+¬×?,–:?,~Â?+¹?)ZT?(„Ù?*(g?+̸?,"€?+Þ?'¦ç?%VK?%Xï?%É?%`¡?(L¡?*Ù?+„h?+r\?+_Í?+4-?+B?+Y—?+N£?*Ö‡?)’@?%Ô&?!kf?#¶˜?'¸!?)5è?)-e?(ܵ?(Ç~?(‚?(!?'˜Þ?'7?&šø?&˜ö?&U®?%í?%ÍÜ?%>c?$m?"wõ? ½L?Jî?Ì$?ÎÛ?‡á?Þß?­?—?Úe>ü» >á¡>¸õ6>žËÒ>ºg;>ãuü>ýyÄ?c±?;?I(?=¦?ä•?¹¸?üú? :1?!9_?"9;?#Ž?"j+? ê?!îî?#Â?#«¢?#Ïž?$fÑ?$Š?$X ?$8?%F?$æÈ?$!K?#VÌ?#g,?$2o?$šy?$¿?"·3?"ÿ?"ÿÅ?#´R?$Ö?$B?$gæ?$r‹?$+?#¢²?#}â?#qÁ?#Eu?#&_?"ôL?#4?#5+?#8?#7?"ÑI?!íX?!B ?!M–?!ìŠ?"S ?"#ƒ?!k{? Âú?  ´?!d?!Ä? ›^? 2¤? #×? v? ã®? Æ–? G ?¹? ›? G?Ýç?]È?T?Rë?{k?å]?Ú?Aû?¹?lØ?Ü?f?+?æ?<?ÂQ?ôÒ?3h?(a?Ûc?zƒ?vZ?ê?î©?™?3Ÿ?{¹?Å ?þ?>ù?cR?+t?vå?¿–?ÖÁ?å»?¹å?e®?e¬?O9?ù?÷{?_?´”?íÿ?A(?dŸ?Z™?z%?ÐÝ?fÈ?n‡?ß?C?„ä?|³?¯?£?1ß?ø¯?$ª?ŽÊ?„Ê?~÷?ŠÏ??£;? |?ƒ¾? ?…¹?Z?r?tÂ?!N?Èr?ã—?Æ@?ßî?œ?Ó¾?YÌ?FZ?”¡?n²?à5?5o?f?©w? p?F?ä ?µ?uš?˜–?Ï,? ï?×?>©?1b? ~????#œ?…?1U?Žó?t¼?Î?MZ?ht?JŽ?$¬?øB?øA?Ù?øh?ç%?ÛF?œ®? ?ï?Ë?ÎG?¬˜?!ï?ZÀ?U?B??.l??Ø?þ:?äJ?©?,?=?_?FÇ?ز?“?E^?PÜ?m±?Dì?ö¨?7f?3H?& ?/ê?9??Ec?Kç?Vy?n”?E~?‚?ýE??²L?6?O2?©]? œ?\F?QK?W§?_?:À?G?¥ö?*?¯ê?ý§?h?é -?·3?»Š?  ?Ó?>ð?í‹?^ã?Ø -?÷?Íà?‘? åÏ? ¯ê? S{? -ü,Ð?H?"æ?èé?¬Ö?f®?e?ç?P“?Ýî?X?^?Fµ?N’?¼¯?TH?4ç?Øb?¶Œ?‰?û?÷Ó?Jj?¬8?¥?Ôe?+G?;®?LI?d?ÀL?Ù?؈?²{?ˆþ?YG?Û?s»>ÿ´Â>þVD>ÿò?Hí?D]>ÿG*>þ‹>ÿß>ÿ½£>ÿš—>ÿ2Ï>þÈM>þ?>þqØ>þø>ÿ#•>þ‡Õ>þ”>ý‘>û!>ù8Ì>ùŒ>ú­>û³µ>ü!)>ûÊì>û‡h>údD>ù¶ˆ>útÖ>ùÔÜ>ø<˜>÷ç>ö“>öêž>ø >õ‹Ë>ó¬¡>ö‹#>öô>õ4>ð7Ú>ñ’Û>õÐ]>öÔ;>öE¶>ôÃù>ô§/>õ’û>ö+>ö:˜>ó‰‰>ìþŠ>ï"×>ó4>òæG>ñ‡>ñ¹0>ô=m>ô—ø>ôDù>óç>óŠ>ðv˜>ë‡4>ï¦>ðÔ>é¤i>éÒN>ð<¼>ñM >ð»>ðY>ïÏý>îÈè>ï©Ò>ï¾¹>ï¹ >ð3²>ðñ>ð1>ï”|>î\Í>ìnE>î,ƒ>ï.L>îï¼>îˆy>í«d>í\ã>íCÿ>ì9…>éeó>éyg>韺>é(p>ë‘!>ìÊ>ë­’>é5”>é>êê–>ëÏ>ë,>é¡ø>è‚ø>étû>ê:v>êEñ>êc>é¦t>énz>é4>è¾ì>èä°>èój>è|ú>çV>å©—>æñA>æx>æ²>æ¬>æp¹>æÙŽ>æÃ>åä£>æÕ¿>åѬ>åT>æÍ>æe³>æ,>åa2>ãáŒ>ãg‚>äuÙ>åœm>å©Ò>åhž>äü^>ä±o>ä¯Û>äfß>ãjã>ã&`>ãš>ã¢Ï>ãž:>ãÚ>âÞR>â|ú>àf>ÝLü>ÝT@>Þp–>àEœ>á†>àý+>àéÁ>àÖï>àÁ|>à‹Ö>àG`>à6R>àÒ>ßm÷>ß|=>ߪ‡>ßt>ß\ ->ßR>ß)“>ÞfË>ÜLM>Ú6Â>×ì$>×+<>×óZ>×½>ÔÕ#>Ù U>Üi»>ܹ>Ü‹µ>Ü|Š>Üdå>Ü|F>ÚÛ6>Ù*>Úò~>Ú¨g>Ù2Q>Ú;>Ú`/>Ú+á>Ú¬>Ú;y>ØÞÜ>Ö>× >Ù ”>ÚÂ>ÙËl>Ù™ç>Ø%>Ów8>ÒQ1>ÖK¡>׶l>×£>ÖêÒ>Õí^>ÔÓÄ>ÔSŽ>Ó´Y>Óâë>Õœ™>Õß‚>Õõ‡>Ö$¡>Ö4>Ö"­>Õx">ÓôÛ>Óÿº>ÓBù>ÑìP>Ò~¶>ÔS,>ÔÅé>Ô³î>Ôòó>Ôpß>Óú£>Ô?I>Ô:V>Ô&•>Ô -h>ÐÕ˜>ÁWž>³žñ>¯ 5>ÁXû>ЫB>ÑxË>Ñr–>Ò!¦>Ò‘é>ÒÏ=>Ò±ä>Ò¾Á>ÒÒª>Òé’>ÒwÀ>Ò.=>Ñ×ò>Ñ ð>ÑòÐ>Ò%n>Ò!>Ò0…>Ò9s>ÒBü>Ò`_>Ò]œ>Ѷô>Ñ×0>Ñÿ.>Ò!4>Ññª>Ðý->Ð6Ö>Ïò>Î5Z>Ï>Îí#>Îâ>Í«>Í•@>ÍÕ>ÎAJ>Î{>Î\>ÎI¤>Íáñ>͹~>ÍžÍ>Í¢>Ìsm>Ë£>ËÏV>Ì!¸>Ëóñ>Ì°>ÌŽ>Ì·#>ËÈÙ>Ç· >ÅL>É\ƒ>ʨ>ÊÖD>Êå}>ÊŠh>Êx1>Ê<4>ÉLA>Æ++>¾8à>À‚>Ç\a>ÈO™>ÉFn>É¿ë>Èõp>Ç8>Çá„>È“>È2q>ÇÉ>Çô>ÇVW>ǽÄ>ÆðÉ>Æ|õ>ÆAÆ>Å…%>Å28>Äçé>Æf>Æ#k>ÄéC>Æ@˜>Æ  >ÅCÁ>Ã_Ò>ÂÍø>Äo>Åþ>ÄôÇ>Å©~>Åôú>Å >Ä…>Ä>Ä<Ð>Åg+>Å‘}>Å4>ĵú>Å3)>ÅXf>Åp´>Å©Œ>Ř˜>ņƒ>Åš>Å8%>Ås>Å,<>Åi>Äê/>ÄÖ>ÃÕ·>ÁÑ:>ÁŒª>Ãu>Ä'b>Ù.>Ù$>ÅEÔ>Å-ô>Ãøû>ÄC«>ÄC„>Ã|‰>®õ>Âæ>Âñ>ÁÊ>ÁÉE>ÃD¦>ÃK—>¸>ÂÔÀ>º >ÂG‚>ÁÚâ>Á'>À“ÿ>¿¬ö>ÁfÖ>Âtó>ºb>Â8l>Á·;>À>¿V¿>ÀÇ>Á1D>Áƒí>Á$>À€¶>¿ ]>¿¬>ÀG>ÀÆ>¿¯>¿Ÿ7>¿¸”>¾E{>¼Rþ>½ï ->¾ÂK>¾i>½ÃÒ>½ç6>½¤»>¼³>½}B>¾t>¾œ”>¾§»>¾½>¾]p>¾CÛ>¾Då>¾†>½ü£>¾>¾r>½þô>½æú>½¿n>½¥}>½K>½E9>½ ´>½=.>½.£>¼á»>¼Æà>¼Ét>¼Å<>¼µ4>¼k!>¼Õ>¼8°>¼0Õ>¼J>»ÛÉ>»‘‰>ºÑ:>»N>»a™>»Ws>»FÎ>»!Ô>ºîH>ºÙã>º³!>º[e>¹’6>µ)}>´3>·E¼>·åÛ>¹04>¹ S>´l°>³$É>¶ò>µ»ð>²â”>µVã>¸‚>·˜+>·U>¶˜±>µ•¹>´ Ü>³„ö>´[Õ>±ŠÃ>²£,>µd>¶µØ>µý>³o>²>²¥>³Gˆ>µZØ>µ–Á>´Ø“>´cu>µm—>³Î>®g>²>´”>²¸’>´Ã>µµ>µì‚>¶">µëø>¶G‚>¶eò>¶F>¶Jš>µàˆ>µÆÒ>µè)>µÙí>µ¶ž>µqN>´òJ>³—=>³¥]>´á:>´a>´¥+>´f>³?ï>³äá>´já>²ý%>±£ê>²“b>³uë>²ÕÌ>°}è>°}Â>²¶S>³wv>±`Ç>­ûP>¯qP>±‰)>²¯Ü>°ž>©<Â>¡Ÿ©>©˜>²>>³¾>¯’ø>¨ŠÈ>¦vz>­+>² >³îX>²{ˆ>¬êÿ>¤xó>¡ ä>©#>°`B>²Ü—>²Ã‘>°^K>©Û8>Ÿ -ß>šÒ+>¤®#>®“Ú>³^>´‡ß>²ï„>­õ >¦ªT>T>”›Â>œYh>¨ w>¯ñü>³Ó¼>µ/>´y¹>±P >«„m>¡þ,>”@Ï>õ>˜!ô>¥">¬ëÐ>±Ô:>´>´¯>´V®>±óS>¬Ð®>¤·r>˜Q >ˆRÜ>†„Ð>•æé>¡¶š>›¨Ö>Œ(>¥c#>²ˆ>´(>´?¿>²¤>®ô4>©$> ’‹>“%(>¡>{ä>Žó>œþ>¦V>«“˜>¯j>²cƒ>´eƒ>´À0>´A>²~>¯g_>¬J>¨”>œ“‰>}cÄ>n÷í>p9¡>na'>‡ý>—/Ó> Wœ>¦:;>©Óí>­J>°”G>²£d>³5Š>³Ð>³>±Ñw>°Ø£>®è>¬å>©.¢>£—u>—lR>jÍ0>0a_>GœU>cE„>…o>“ñª>œŽ@>¢=h>¤ñ1>¨åª>¬(>­C>®,Ð>¬ï0>«?->®þ>°q>°–‰>° >¯ '>­Û–>¬*û>¨öÈ>¤ï«>£Á>žQ>•÷è>ˆø>vŽ>Vr{>^Æ&>í¥>¨ä>˜0s>žº>¢È'>¦ >©'N>ª„&>ªñŽ>ªø3>«úF>­^µ>­¥>©™¤>¤Ìm>ªß=>­§>­~×>­c>¬Oõ>« â>ªVã>©ï>¥¬l>¤È>£À‹> [Ï>™ŽK>“âO>†w½>F÷š>,…>CæŸ>hrŒ>„HÍ>ŽZþ>–wã>›–¥>žH>–]‹>•û>™Úú>ú>¡:>§‚«>«Þe>©&>§þ->«¡‘>«è>©¨>£Æ>¨ï¸>«÷Ž>©Çô>¡ão>¦[¹>ª¹i>¥Š>¢]R>¨hÖ>©©ç>©0Y>¦M>¤pE>¦¼>¥íB>¢|>Ÿ§u>G>˜HÈ>’ >‰Rù>t“—>NÐí>Oò7>v“è>‰X–>’F^>˜•l>œŸ>Ÿ‘>¡þo>¤Ÿ¾>¦KÜ>§->§¶œ>¨að>¨œØ>¨«Ë>¨ª•>¨‚¡>¨¹“>¨í$>§…c>¦ø>§ð>§±>§û‹>¨Ê>§Š±>¦> .õ> õ×>¥L0>¦ûg>¦ÿs>¦Ÿ,>¥JL>£9ã>£ræ>¢Tž>¤žg>¥[¼>¤š>¤q>£ÇÕ>¢«˜>¡pô>¡7>ŸÖ‚>Öt>›Z7>™*Š>–Ì>“%:>Ž(ï>ˆ<Ï>}ßa>aOt>Q„ >h{>€ƒ|>‰Öì>rÞ>‘U8>”†&>˜kŸ>™¬—>™Ù>šRš>œü¼>Ÿ/=>Ÿä>>Ÿl–>ŸþÔ>¡©G>¡ïs>¢+Š>£:>£]>£©>£o²> ¡>›’è>¡Cí>£ûC>£hÔ>¢¯½>¢Ë>¡K!>šûW>›Çá>¢Šë>£ðÓ>£ó>£þµ>£ñµ>£»;>¢ÄÓ>¡x>¡Ó>¡Õf>¢«Ú>¢þ¼>¢Ö¨>¢¦¡>¢k'>¢ Ì>¡5>Ÿ >Ÿ, >Ÿå>ŸàŠ>ŸUµ>KI>œa¬>/>ÂC>œé>œ+>›aª>š)N>™4¢>—ò×>•íÊ>’!L>›>ça>Œ¿»>‡ò>µ>sÖD>\cã>RG>gY>{Ú’>„Ø>‰É>ŒÔV>}>‘µ&>“µÆ>””;>”Mó>–@[>˜:>™3>™o=>™ä.>šY²>š7¨>šùq>›Î(>›â¾>˜©€>‹=>ŽžM>›¤>œáµ>œÁ >œÌ>œŸ ->šgí>’÷t>–©>œ\Ì>^>š>Áá>–k]>™Ý>šO>–nI>›nf>›å©>›öƒ>›Éq>›òb>š.>‘›æ>–ƒ>›_`>ššh>š—6>šzd>š\1>š-'>šË>šöŒ>š‹H>› -Ã>› ù>›n>šî>šÕ>š$o>™©>™Ãb>š>a>™ï|>™˜Å>™©ñ>™¡”>™L>˜›T>˜­;>˜ÆÚ>˜`¿>—¹â>–6>>•>•æ¸>•e>“àQ>•@>”ì >•l>”ñ,>”k>“¤>’¥>‘Âw>¢>Ž¹ü>Žo2>ŒÂ†>‰¡ >ƒ|ü>…/>‚¥>|Í@>|i>rOn>ayp>F§~>?ê>Vü>j§R>r„&>wO>‚ˆƒ>„9>ƒ$Û>‡Ð>‹”>‹—8>ŠÓ7>‰g´>‹Ø>Š¿q>†ä¸>ˆ«‹>‰¶ä>ŽÉ>‘§®>‘âÊ>’3p>’zþ>’—u>’¸ø>’Çq>’Ø >’äZ>’bn>’>’§j>’&>’¼B>“s>’öŸ>’¥±>’Ú?>’¿ò>’Ž1>’ÈU>’Þ>‘™>‘Y>’(þ>’^m>’>’K>’‘Ø>’}Z>’Fz>’Wÿ>’N`>’Þ>‘Â>‘¦">‘ÓC>¹;>­ >‘cd>‘hm>‘6 >ûÅ>‘>‘@ï>‘KU>‘5>Ñ'>;<>­­>¹ý>s)>p>6ø>Žo/>Ž€>N­>ŒßV>ŽW˜>ÜK>d™>Ž! >‹Öi>‚wÓ>ˆós>Õ•>ˆ>’>†>Š0Ô>Ž>W>‹þe>‹Éj>ŽYö>ù‹>ŒÕd>ŒT>ŒPÔ>Šw»>‡v>‹{ù>ŒE:>Š¤Å>‹Ö>ŒÆÞ> 9>Œ¾>Œ_ >Œ£÷>Œ8 ->‹¸5>‹‡Ø>‹Ê:>ŒÒ>‹æ¬>‹»>‹’>‹‚Ù>‹P>ŠÔù>Š‰p>Š“>Šj¤>Š"->‰¶l>‰M2>ˆÙí>ˆ˜€>ˆn>‡>†y…>†Û_>†˜×>† I>…qò>„ÎM>ƒÔ%>‚Üh>él>€hš>}öz>zSÙ>vˆÓ>qkÿ>kŒ>c™V>X@‡>FXH>/_>3ç\>J¬¿>ZÛ>db4>k†‰>q…>uK¤>x†{>{“¼>}̇>}î’>¨L>€ðU>‚h>‚Ö5>ƒUv>ƒ·r>ƒê¶>„;r>„“M>„`±>„Ö>„ÁÖ>„ã¿>ƒÿº>}£4>©>„ó>…>…‹>…©¼>…¥>„[ô>{…>€À >„sU>ƒcµ>„™¯>‚5Ê>€Ó>ƒ“z>„ÊÖ>…a>…M<>…0_>„~>€æó>Î>ƒÆä>‚Ù´>v³o>b¿>„0ó>„W>„zx>„,Ê>ï>ìL>‚çÆ>Ò>O/>n4>ƒÏ>‚^>º>€!>€¿œ>‚X‰>‚‰æ>ƒ(w>ƒq>ƒ#>ƒ4>ƒ `>ƒÙ>ƒ>‚ðG>‚Õå>‚¯3>õ>æ÷>‚Rñ>‚2>‚=p>Á><ƒ>xï>{³â>€ˆ=>8Ð>€zC>>Q >€ò>Oþ>4>€ù'>qk>€=9>€™2>€œg>€Ìù>€Ã›>€¦å>€“²>€u–>€ >cÙ>~¹">2k>½>f»>}¬L>}+ò>}ar>$>ö>~ÃÕ>}ëA>}§<>~G…>~.Ø>}š&>|*_>|aî>{ò>|>A>|œÐ>|Á>{_á>|1™>{¤;>zÊû>{|¬>{äÏ>{tp>y(y>u#©>u|>uã>sÃâ>v/ >yxÓ>z*J>yÜÝ>yU€>yfU>y˜>yŠã>yÌ>xÜe>xš>uÍ >l$X>nHó>v{â>wG~>sÏJ>uT†>vï>v^á>vEÅ>uB>s >p>rå†>v'È>v0>uÓº>u“j>sá¯>k<>ogØ>t±G>t˜a>q ™>p*>skÙ>sR>rJ¾>q¨¨>r|>qõ>qs§>qK«>qŒ>q¬Û>q{O>pÙL>p«A>pœ>oâþ>oÊ@>oTY>o!>nr>ne5>n2->lÔ\>kÈ>h‡>j_Â>kHz>jÓÞ>jd¿>ižP>h½ý>gÄ°>f£>e+Ø>cøè>b‚K>_îL>^$þ>[û´>XùU>V 9>R*>MÆ>FÁ>=|>/™þ>^›>K>,Ø$>;=ÿ>D"Ã>J®>O¢>S@N>V">XRó>[Î>]P>^PL>_e‰>`˜Ï>a@>a°d>c -;>c¢J>d4Ù>d¦Ž>e>>eJ›>ev—>dÑ–>d‚9>d"ˆ>dÕ>b%‰>c9.>eÀÃ>eÌ>^ä>[4H>d³ð>eÕB>eúÀ>f"Õ>f I>f ×>eë¾>d>aõº>df=>e8>eCS>d‰>dØ–>e5ß>bêæ>_âÓ>cìþ>dÈT>dP§>cmy>d5¾>d:>cn)>^';>`'>c0¾>c&÷>bÎÏ>bäÙ>cï>bºù>bs+>bI>bYÄ>aǧ>bRV>a™À>^ö>` >a©>avŸ>ab>a,>a>a+í>`ß„>_ï>>_Óý>`Œ>_úœ>_ŵ>`% >` ‘>_Ù{>_››>_†Q>_m>_3i>_"J>_~>^Ì$>^W¨>]¤'>^<˜>^Pƒ>^&>]ïb>\Gû>YM.>\¥¼>]lÂ>]Dû>\Ýf>\J>\g>\£>\K">[sÅ>Z¨Â>[¿F>[ã>[†‹>[~<>[VR>[ä>Zˆ>Ygç>Z!æ>ZÄ”>Zz.>Y+À>Vq>Xñ§>Yk–>YÀ>Y^¦>Y_Ú>YTœ>Y#™>X¢•>WÔD>Wàz>Sz>S*¸>WÖ6>VÞD>WNÀ>WÆ­>W—?>W–Å>WD…>W7>Vê¾>V†Ÿ>VÌâ>Vz3>V >U@K>U P>Uè”>Vi>UÏ›>U³ÿ>U£>Uf>SK–>SAv>TøÇ>TÒ‰>T›ƒ>T“•>TeÔ>T2>Sñ >R|F>QÙÒ>Q ß>Iü>A;^>E¥3>Lä”>RUƒ>RµE>P0ï>LÜ>P›™>QÐé>R)%>Q² >QŸ8>Pe\>P!>PC>Pã–>Q#Ô>Pêé>Noº>Ký¼>O»C>O;$>M^>M“Î>MË>M¶o>LÆŒ>Jq´>Mó>NÆ«>M±J>LëX>M‘{>NG§>L_>I1}>Lçö>N y>M‹®>M[p>MÉŽ>M -D>J‘>Lva>M>MV>Lúj>L‰ >J#>JŠ>Lâ>JÔž>GoE>A8x>GðG>KÜ>KbÊ>K.ì>J‡>JÙ>F‚/>D «>Jw>Jyp>Ië%>J,2>J >J -O>Iè>IŽ>E¡>DŸì>F÷?>D«±>H†å>Hý>Hز>Hž >H|m>HY>H%+>G³Ï>G ->F”ÿ>?õµ>D‡>GN>G.û>G¹>F >Dʹ>EÀ>CQQ>2ÉÑ>1‚Y>>I«>2 F>4…m>?W×>DÓ³>CÂ{>DS >Aº>7¦ˆ>AÔ>D‚>DC*«>C¾>D,§>BË_>9ì+>4a>@ú>CYs>Cmò>C Ç>BU >A8$>@“>:’q>=3>:`/>@å>A‰>AB7>Az*>@Î>@^Ó>A3³>A>ø>@ôš>@ÜZ>?õ5>=€>8_ä>=Ól>@/¿>?¢¯>>¸Õ>?@”>?2>?.…>?&9>:à3>4x8><ÉÖ>>}ø>89>< a>4$>6ªŒ><È><><¶.>;Ð^>7ßû>;D©><[Ô><:Œ>< -C>;ÎÒ>;yë>9DŸ>7׿>8dÑ>,Ô>3è>9_ð>9€M>9¶>7SÕ>3%>3¹>6üS>6>%>5‚>5²>4Ø+>4“>3Þ>1ð“>0ã>.¬ú>&ú´>(¨ñ>)ôŸ>' Ý>$¡[> Î>Ý->†> -çê=ôy=îg£>ç>ÿ­>×›>ø>á >"4¤>$cz>(c³>+}>)5V>*¢d>.n/>/cª>/þñ>.íd>*6>+¨…>._”>1Å>2R>2–>2δ>2ùÚ>3ó>3 >3±>36µ>3Hè>2S¸>1S—>,yÀ>0WŠ>3 >3A~>39ó>3  >2ÚÉ>2ûµ>2Ö»>2>2±õ>2=>2Œg>2¦+>2Na>1çr>1êQ>2Cë>2@È>2(Ê>24>1×\>1Ø>1ÅM>1¨Ù>1H·>0è>1BN>1,Ú>1\>0è[>0¸§>0¹»>0¶»>0”>0@ >08£>0Ø>0 t>/Ôå>.yÚ>//>.F>.ä>+åŠ>,“€>,æ>. Ø>.Ð >.6d>+þÙ>-ߪ>.2Ô>.?5>. Õ>-µÜ>-¹>-×">-ËÕ>-½¸>-””>-~î>-I˜>,ÐV>,Ÿ6>+w(>&¾ >'Î>,Z`>,vg>+°s>+€Q>)¬í>+tl>+ø3>+ÜÉ>+p">)ð>+©>+Vç>+/l>+ ˜>*Ù>*ç—>*Ë*>*…q>*}˜>*yÌ>*:K>)ùì>)æ>'h÷>"â>$À>) ”>(ñ>)L­>)ä>))>)ê>(ñ>>(Ï!>(¶ö>(†„>#æ©>•€> “%>%ˆB>$2>"¸B>$Ͼ>#9Î>&…r>%¢Ÿ>&rC>&¿¶>&Öí>&Ø›>&’‰>&u >&`O> 'q>Þ>$v$>"­Ç>%0è>%Êù>$™>%þ>%“(>%o>#c@>!BØ>$Í>%„>$§Û>$y>$)k>Y>!—Ã>#4^>",>/¡> r¹>t‹> n>#f>"TÆ>Æ.>3Ê>›€>Î>!àž> e>„J>!Àa>!Ú> è™>!±7>!»”>!™>!ò*>!~>)> °G>ŒÌ>Ó”>™g> — >! r> ýb> áà> ÁÊ> š§> „> S6>ö> ¤>óƒ>Úx>GÈ>Iå>™ >‡>YE>21>Ö>j´>™6>ÄÍ>»)>™Á>l{>\j>Z ->'>ò‚>ܯ>ÏF>­À>®÷>>ê>#>Q€>3_> >ÄÞ>DK>î> K>|ü>í>,æ>>B>{>éþ>~B>Ñ>ú'>@Ô>½¨>¯^>³*>\R>E>—¿>;›>:L>>Ç>Ö¼>С>¢ƒ>©‹>+e>mÞ>~>2—>”Ÿ>˜2>ø>EÅ>Y2>hW>y>~O> àÌ>ÚT>\¦>Ü >Šô>sB>ë@>ÒF>ð>¯³>i/>´>)>Õ,>òž>¡>¤m>Ü°>Äå> Ó>rÖ>N‡>D‚>&Õ>w>à%>« >±d>]ª>T>0Š>BP>mÃ> -ÜÍ> ˆ>Nj> Ã>`Á>˜:>‰¤>R>­¬>Mº>8†>œ1>f¦>‚+>X>…j>jö>gy>>H‘>1X>òg>·Ò>ø>ì>/D> «>TÄ>Î> H8> {·>Ó]>Iˆ> -Š> CÆ>n†>q> " >ƒ¼>É>÷ý>Ïá> ‚í>>¢>Ž>p3>°ö> -³Ç> ×å> -Ü> ‰d><>Ÿ> ô>[J>Tø><Ó>#°> [>í>×£>¾ß>¤)>†g>l±>W¾><ü>#„> -@> ìÌ> É > Î?(ãÅ?*åÆ?-¥ -?0ò}?4G–?5Ýû?4i¹?1S5?/=€?.¦Ë?-PT?)ž?"Áø?°ä?§? ´?%«4?,6?1ÕÝ?3¾?2Â=?0%Ù?,Å?'ž0?!ï'?ù8?VN?'Œ?2­?:”ö?<÷F?8â‚?1{?+HŠ?)[6?+^%?. Ô?.Ì?-¨›?,Ço?,ºI?,±0?,è?.’ü?1‹•?3ôj?4lŽ?3}+?2ß/?4.?7ŒŽ?;ïª?>ľ?=és?9^•?3§¡?0¬?/¼­?1}Ã?2¤5?0Ñ,?+Ú?#» ?‚š?!žA?'oM?*ú:?)‚¬?&?§?& ?)]ò?+Ú»?*Ë?%•ø?"YÞ?"Üû?&Ã?(´Ò?(AÃ?%` -?#‹â?%†F?*•?/¯ž?2…ß?2ôê?2vx?2ÍÎ?4€?7“Ï?9ƒ5?9À?6„?3º?1©j?0Î?,¶÷?' Ð? ŠP?ÐÌ?M'?ž:?ñm?#òX?)ü?.è(?/Ð!?,e>?(ße?)ùò?/3?3EC?3Ø?/ZH?*;?%J7?"¢?!«À?#>;?%?&jÙ?'ÁW?*D?.·?3‡¸?9c?=J9?=Õ©?<5¥?:¤\?9T?6¢n?2ç?,ÇÇ?(–%?&o`?&ÕÞ?)vn?-Mä?1©?6»?9Ð÷?<+L?=1˜?<õ¢?;Š‡?9cš?6ôŽ?4y?2/Ç?08M?.i?*õN?&«{?"é¨?!?ýÖ?7ç?²8?}ÿ?z?(!g?/Ë»?3xD?3ËÛ?28b?/¾(?-ôÍ?.åß?2ã3?8?<‰T??¹?A½{?B’?BnC?A£á?@¡?>»0?:3ê??Ö?@²?>"N?8¸ ?0µ›?);?#Å«? Øï??Ø.?:µ?—§?"Ûû?(x?*4V?(ª ?'[?)Î~?.öI?3˜&?5âÒ?5Æ?4bz?3y¹?3¯(?3½ß?25ê?.Úš?)à?#n±?Æ[?œ? ã?2“?!l×?"œp? ›(?^Ó?„?ÀT?T0?IÒ?ßã? î? ª ? –? ÷ä?&P{?,ÞA?1'¸?3Ò?4Âh?7H?:5?9Ÿz?4§?+§Þ?$z9?!ß}?$ï?(nÊ?+´T?,×P?,°Ë?,1´?,-5?-ÒF?1‰o?5ÝÐ?8¥ê?9ª?8%î?7Ë?8”?9Ì¡?:íš?;Ü?;¦É?92í?5h‹?2®ÿ?2Z~?3ÖC?5ß@?7w ?7¾u?6›?2Ë?0pÒ?15†?4Ké?6kj?5ŽD?2„?,¶h?'X ?$n/?% ò?'Ì—?*å²?-Šk?.þg?.÷g?/!S?1¨,?5ãá?8Ü%?8»B?5¥¼?0Á?,z¥?+ëq?/Úë?5xü?9ñ?;Ž/?=bú??ÄI?A9û?@]?=g?;Ï?<*>?<í?=\®?>LÃ??¡•??^]?<x?7‹³?5QY?6Ã?9†?8A?4Ó?1œ‘?1ÎË?4ç?8ô?;?;P;?9-¤?5Ã’?2ù›?1Šû?1'B?2:i?5:ç?8Ü3?;Vx?<~û?<Ò?;Ï,?8‚å?2¬?+g·?%†®?$7I?((.?.·?3n ?5–-?5îò?5/“?3äb?3ªb?5Oþ?7š×?9¶??;èk?<У?9†?1ú?*£?(H·?+:Ë?/†?1Le?0L¦?.ëÿ?.Ž?.âè?02®?3Zà?7ËB?;,‹?:ú–?6{ï?.î&?&9\?m(?¬À?$¹Ä?,ÄÖ?1„r?2Iõ?2WL?4Õ™?9›;?=¿ø?>¼7?;õ:?6*3?.Œ??Ï~?<³N?4±f?*µµ?#ˆ?#&¥?(x€?-ÓÞ?0¼?1Ï?6‰,?ö1?]-?;KÎ?6¤’?2Ze?0ZD?0uÃ?1 m?0—í?.°x?,¡(?+ø®?,ý–?/”¤?3[„?6Œ!?7_ð?6a?4t®?3œL?3È8?4Úõ?6¿¬?9T}?<^2??â?@è?>;±?:{“?6¬¦?48?3­@?4i?4Ç©?40Ä?4W,?7??;Ò ?@Ò˜T?=+˜?:=?4ð©?.¸Q?* ò?'ÄN?'~f?)d~?-q“?2z??7›Z?~š?;}‚?6Gd?2PF?3;Å?8-ì?=^‰??Ê ?=éa?8Q?1úë?-ûÞ?-ƒÁ?/¡Ù?1¨c?1J„?.]w?)‘z?$>p?!kc?$è?,?5š¢?;­?=!N?=F¢?>Þj?<ÆÔ?8­ë?6)2?7hƒ?:£?<ø ?=;–?;Ñ?6h˜?1²3?/ð…?1 -g?2]Ï?38Œ?5SÈ?8Þ?;×¾?=ž?? ??R?=’F?;¶•???b’?Avb?@¢8?=÷š?;Þß?;Ù^?>P-?B:Å?ERþ?Eù/?D¦ù?C›ö?D]?EžŽ?Dï?A°'?=çÒ?<ñá?@dU?F)¶?JÍf?LÁØ?FÑ°?Ff…?B0?< -p?7ö¬?7Ðb?:)ž?ý‡??û‹?ü1 ?þ æ?ÿ?üáÊ?ö„º?îø{?ëX'?ìØ7?ð>®?ò?ð•Ä?îN¡?ï -?ò -›?ô•"?ô É?òü0?òû?ò'?óF¼?ôaÆ?ó ã?ïN ?èxÛ?⾆?ß^l?àp?ç¦P?ð`?ôË?ôr«?ót?ïE?å44?Õ–4?Ɔó?Áý—?˨¨?Ùì?Ú”?ÍK®?¾–è?¾ùÊ?ÏN²?ßþz?çFŽ?ç«¢?æÅs?çÈÊ?èã•?ç¬;?æ—O?èx ?êÖ2?늫?ìs±?î˜]?ðÓg?ñ‹À?ðêõ?ïq.?ìV?éé†?é»?éР?æ°þ?ã~ ?ã?ã¼?ã¾ã?æ?éh}?êUÌ?éžÜ?êj?ëŸY?í?í_?ée­?â£?߀?ã϶?éõN?íf??ïL^?î¨:?ë·Î?ç.Z?áÄ_?ÜѦ?ÚRH?Ýc?åª?ëã)?ꮧ?ÞÌà?Ìp5?Ã(T?˸V?ÚhÎ?ã«Õ?çÁ?èÜ'?éd?è4Þ?ãC¼?Ý€Ô?Ý¿à?ájÔ?Þþ¼?Õ×ú?ÑM?ÎVq?à ?¶ -?°¤ê?°µ¡?·Ñ@?Ç@Æ?Ôk?Ö\‚?Ïð2?Í?ÔC?Ü¡ý?Û'”?Ì*W?·ÔÝ?¬[ð?²És?ÄåÁ?Ô»š?Ü2-?ÚŸ°?Ó]?Ïx­?Õg(?Úƒ†?Ôûæ?Êé?Êx?ÏBŸ?Ïšß?Ì)?Áþ‰?²â!?¥f?£%‰?±²?ÃTZ?Ë Á?ÊF?ÉRõ?ÊæÓ?Ì.J?Ë–ß?ÉsH?Ç~ ?Ç/?Ç—w?ÇzC?Ç^?ÈgF?É«¹?Ë¢Ç?Íî+?Ð0è?Òé?ÒÒ7?ÐòN?ÊР?¿ÿƒ?³é?±±´?¾O$?ÍRè?Ô"?ÓF?Ì»?ŽŒ?Æê–?ÎŒ,?ÓÀ¡?Ô ”?Óº?Õ_½?×OÈ?×ÉŒ?Ö•6?Ô%Ì?Òü?ÐãM?ÎSŠ?Ìž*?Ío3?É©_?¾+ ?¶Á>?»×ç?Ä_?Èý6?ÌØ?Ñ'g?Ö?Ø„±?Ù!f?×aÃ?Ï<?¾zˆ?±©O?¸x3?Ê?Õ[?Ø0¼?Õ.”?Ë¢?¿$?¹÷?»S?¿d×?Ç?Ξ?ÒàÂ?ÕvF?×7õ?קè?Ôbá?Ê6?¾Š?½lŠ?»×>?»(²?¹ñ?·–H?´­"?´L|?µÙ?¶*d?µ3"?´C?´ÄÐ?´… ?³è?°W ?¬g>?¨›¦?§«å?ªa¥?®?¯ç˜?°%£?°TE?±qX?²×?¡Rõ?©í?®£ù?°~°?°¤t?°K?¯åc?¯eè?®‘¼?¬]J?©ðæ?ª¹/?­ut?®Ü–?®þ®?¯Q?®ü?®Õ!?®#?ª¾û?£\l?¤ ? <¬?¥Ó÷?§ÿV?¦Ÿy?¡‹ó?™³Ï?’÷]?J?Û¹?[©N?/$§? %?;?dM"?ƒ=Ü?‘ J?š§?Ÿ»z?¡0@?ŸÓ#?žn×?žþ?Î?š–à?˜yM?›ò? Iå?£`/?£Õ>?¢y7?ŸoÊ?3d?ž¨ì?¡ð|?£û?¤5p?¢’ë? XÓ? 7²?¢‚?¤º?¦)×?§1½?¦Ù(?¥i½?£á¹?£Ë;?¤ËJ?¥›Â?¦V2?§ ?§Ñç?§Ö¶?¦D‡?¢m"?ŸG/? ¸t?¤ã±?§Î?¨¼g?¨—?¥§,?¢1”?Ÿ¨Ô?œÐ2?“Wõ?‡ -?ŠI?™ÕÔ?¤ŽŠ?§æ°?¨vâ?§úË?¦ë?¥?£~%?¤rA?¦ ‹?§p:?§q!?§Ëk?¨?§î˜?§§e?§ƒ^?§,?¦iw?¥è?¥¬å?¥CB?¤tù?£Íà?¤Y?š ?šk*?™ðú?™WE?–ê?’½—?’?—?š{w?›W!?š¯ý?™r?˜ß?™Ž‚?šmÄ?˜º?ŽÓ?~~?hpÄ?ulô?‡v¶?ŒXf?‘(=?—®Ÿ?š·¾?›W\?›¯?›zu?šo?•y?ŽJŽ?Œ ?ŽÃµ?dˆ?ŽÀ\?Ž:Y?’(ö?•J~?–N?—0Ò?•¤?d¤?‰#$?ŒCÝ?“Òè?—ƒr?—óé?—[?––?–S‡?– ä?–­?–[·?•À?•uj?–…Ã?–;F?”Ó?”z?•ïõ?—ªò?˜Ä8?˜é‡?˜:Ä?–g²?‘,î?Š(?Š@W?‘Kä?– æ?•5Ñ?&?†z÷?Á¥?„`ó?ˆKŸ?Œ¡ ?ûò?“×?•‚?•Óh?••?”žÊ?“&‹?’Å]?“?~?“ºÐ?”[?“r\?yÞ?Ž}[?ø?’"T?’³8?‘ŸE?`ì?Ž—_?‹>¤?‰š3?Œ¹Þ?—?ŽÙû?ŽÕ?.?¹ß?‹„p?ƒ.?vÀt?‚JZ?‹:Å?È1?ŽÑk?:?‹u?‰Šä?Ë?’rs?”+•?”&´?“Eè?’™n?’/?’Ž -?’pž?’E?‘‰í?‘8?‘?È“?°q?%î?Ž/^?Œ8 ?‹ã‡?ŒüÅ?ŽrZ?ŽØ·?N?ŠG?ƒœ?t2û?u((?†t?ŽwY?Í?O?Œõx?‰+Í?ˆ4!?‰½?ŠB;?‹_#?Qk?Žœ?8¸?‰˜ª?†ð?„*'?…¼2?‰a¶?Œ•?ŽÑ’?—P?9l?Ž€? =?Ža?ŽñF?#J?zD?°Ò?°#?s?9­?ŽÐ¹?Ž\?‹‡6?…ŽH?€c?ƒ6Ï?ˆÖú?‹?‹ß›?‹4d?Š[Z?ŠÅ/?Œ€Ô?ü ?Ž?‰¾?ŒêÚ?‹§]?‰~b?ˆ~ú?‰H?ŠT.?Šü™?Šû³?‹3 ?‹ºŽ?‹¹ì?‹cá?‹4?Š› ?‰šì?ˆ³?‰7µ?Š7-?‰Ø-?ˆ~º?‡xO?†0ž?„G?„N?…Ñ?‡cÂ?ˆ;¶?ˆ]¶?‡ d?„µP?„Tƒ?†7?†B1?…”?„ÌY?…‘¬?…´ß?ƒR;?€õ¢?‚ƒ?…µ?…•€?…‹M?…X&?„Å?„ Þ?…d¹?†HÂ?†îC?‡B{?‡!?†×º?†@z?…CÑ?„ Ò?ƒW¯?ƒ¢²?„?„<Ä?„N?„=Þ?ƒìè?ƒ“²?ƒü­?„ú?€åj?‚u€?„ò?„±a?„€q?ƒjç?‚qó?‚«÷?ƒ9?ƒMÛ?ƒ?„MS?…Ð?…H|?…If?…s„?„n!?øŒ?s?‚6??‚hˆ?Và?€]Y?€û?€ÔÛ?‚¡f?„6r?…ó?…›Ì?…¼"?…Ti?„±\?„ n?ƒ¢?‚ë[?€¸@?zX3?v1#?y>?ªˆ?ë¯?f?ylâ?pâW?tŒC?}ëú?P?Òa?°Ê?Qy?€_ø?U¥?€7ª?/|?ºÎ?âù?î ?‚Ï?‚ "?Ì‚?â?Å)?zú?8ì?LÜ?>?€ç?€‘Y?€-ò?¹Â?jï?~ê‚?~>n?~Ô?÷?¼Ï?~ù ?~Ÿ#? - ?9é?!•?~Ö1?}Ä!?{>ž?yFî?zæ?{ÅE?|þ?| Å?|?|6$?|Ž?|gì?|[ñ?|¯¤?|~è?|Õ?{ô+?{Þ¹?{ô?|#±?{«ä?zÀÃ?zba?yýÊ?xˆ×?vÆ?w@ ?yi?zR¸?zÎg?z›û?y¸W?y,€?y4Š?y*?y‚”?yÑ?yŸy?ygS?ywø?yó?y¯¼?y`?x8j?v#|?uÀ?uÙº?v_¼?w°?x_?xH¿?xò?xEŽ?xcC?x’?wDü?t~”?nˆ`?kÛ?pd?tD?t”?t&?ty–?sR?q±¢?qD ?r›¼?tG ?u4?tÆ ?t:?tw…?t¶ÿ?u@P?u’U?t~ó?r|ý?qÐ2?sbW?tS?sßû?sÛ$?t%j?tfá?tÒj?u&1?um?tU4?sAS?r–Š?rD?q?n‡þ?lMã?lÆú?o4?p¼â?q+Y?q„a?r ¼?s~?rõ?q³ü?q?qÁ?q¯f?r†?qÐô?qv¡?qŠc?r4?r!­?r Z?q•?qÃ?qb‰?qó ?q· ?qÀ…?qïU?q4 ?p‡k?pŸ_?pn ?nú?mû›?n¶B?oƒ9?o¦¤?p"D?p²—?pÉê?pä›?qº?pËB?p>„?oš~?oW£?nØP?mË?m'?l¬p?l‹?k6j?ió?hêN?hÐ?f[Š?`Ç?SºL?IBY?OTw?\ÊU?dg·?f÷¤?hj?h€?i Ñ?jÀ?jŽ¬?iš?e”?aC?aÖ0?gY~?k/ƒ?k§Ó?k"5?k=¿?keh?k E?jÍÃ?jo¶?i°?h'?hÒ"?jaa?k.w?kŠ?kzë?k -ƒ?j\?i½ü?iYF?i%è?iN€?i‡]?ilŽ?hÖ\?hµG?h|1?h*O?häÂ?iõ?hã?gk‘?f1>?dý?d9¥?e Ã?e‘F?c­D?b8q?bé ?c¨÷?dÙ?d¦¨?dLj?d±?dˆQ?d:0?cút?cÄm?c–)?co‡?cU}?c ¥?bâ?bìª?bƵ?a¾?a0I?b{\?ciª?c2Ì?bÌI?aÞ‰?`Šþ?_=”?Za -?C´j?n½?:î?DLí?MoR?/x?-f?8'J?T¶?YÌP?Yª@?ZÁÆ?\5„?\¿ò?\ƒ½?[½è?ZÀÓ?ZB0?Z.’?Z3?ZV¸?Z0¹?Y?WºÖ?X;~?X‚½?Wë?V€‘?Wä]?Xï?X?Wâ?Y¬?Yðí?Z)?Y¢'?Y'?Xæu?W·º?UÙ›?Ud€?V;h?VÝ?T­e?Sí®?T†|?T¤…?T$?TY`?S¸"?QHÿ?OD£?P@§?Qû{?Rl?S>?S­?R …?Q§?Pkã?Pâ0?Q>?Qlz?QxQ?P—‘?N{?Ké?M6a?OÂt?OôÏ?OõÏ?Pvó?P<‰?O/ì?Mba?JRõ?J”?MZL?NeÇ?N›Ö?N¿¼?NäÂ?NÐÄ?N¡à?Nß?M@*?LÖN?L]b?K“Ç?J¯§?JPõ?K?¶?L»¿?MuÓ?Mü@?NIš?MúC?M|m?Lûº?LƳ?Lý•?LyF?Kæ½?Llœ?LÏ£?L3?L<?KÏ%?K%*?JÃÕ?Jç†?K ƒ?K6?K%3?J’O?J¹?J|s?K*A?Kî ?K®m?Kó?K?L( ?L|M?LM?KÒP?L -&?LM?Kžð?Jüi?Jå ?Jœå?J¾¶?KI§?K‰"?K‚¥?K“Ù?Kné?KSº?K‡x?KGÃ?Iu¶?Gð?Hâæ?K!"?K ?J+½?J¥r?K£6?K„—?Kè?Kj„?K±’?K­_?K(÷?J'?Iã•?JúÔ?Kl?Já?J²‚?J]?H¹à?GGV?H-1?I>Ð?IG?IÓz?I¸°?I‘v?I°?Iº¿?IØë?IZ›?Hb¼?HMæ?I“?IÁâ?IºJ?Há*?H*þ?GüØ?FoÎ?Dÿ?FÓ?Gçt?D8Ò?;t¸?6É?<æW?Dï7?GUY?D³H?>¼Þ?;C…?> Ô?B²?C‡l?BØW?B¶I?Bz?B=Ñ?Aê ?A¤¨?A\â?@ûV??¬‹?>¨„?>å[?>e¢?>i™??Æó?@šd?@ºM?@„Š?@Tþ?A -y?B"î?BT?B¿í?B>q?@AŸ??×—?AjV?Aœj??¤ö?;å‹?; H?=ëš?@E#?A¨?B5Ž?BÜ?B²?B†ž?C(¾?C®6?CÇÒ?Cxí?C>æ?C?BÅÆ?BòÖ?C?BŨ?B/?A´9?ANA?@ÿÕ??Ü?:/2?4Ž?8>ß?>±Ï?@Ó?>ýê?8³(?1/?4—)?=™¶?@æŽ?AD?@³C?@Ž#?@¶?@œŒ?@0ï5ù>Òý™>ìÅ? Ç?-x?†o?r¤? HÖ?" ´?#å?$0L?%©?%]?%¥ƒ?%O?%z8?$†æ?#N?#©¼?$$?#Ù?#×2?$)f?$°û?$Ú?$ß‹?%*´?%¬Ì?%ŸO?% -è?$ݺ?%§ ?&.½?$|??»?TØ?X?#Y§?$Të?$Lê?$"!?$?$Ý?#·º?#§ß?#ÅÛ?#Û?#¢d?#~,?#‘Í?#?#:d?#?"„z?!¡ó?! t?! ?!›?"½?!Ö?! ? ÑD? ¿? Tå?£K?i´?È$?àô?Œ*? 3Ã? ¹q? ^?Ê‹?2?g?­Ú?ï?!ª?/Y?è+?dÂ?C(?S?pu?þ ?±L?•p?þÌ?ŠÚ? ;?ñã?Yì?ú°?çC?hr?|ì?&H?ÆÅ?ÝJ?Æw?<¥?ï½?—˜?dU?iˆ?;ý?˜?¤à?„Ý?‹?”Ü?0?XW?Ü?Ô„?Êè?õ·?ñC?e‚?¾ã?_$?Àã?½@?‰º?Ã?ð?D÷?+²?I–?›Å?v?x0??à?í–?×t?÷»?8­?6m?;@?>·?D?V¿?Sj?9G?Óæ?=-?÷?»”? }?ä¿?à|?åH?À ? |?Z‰?$q?vý?—?g§?f?e?)?¹-?Ñ'?®í?Ç?íƒ?¼ô?A ?,>?w»?P[?Å&?R?T`?›ï?ýÖ?ê-?Âr?ø?OÖ?o‹?¡Í?ÜÞ?ªý?? [?úœ?Þ‰?g?üZ?^Ã? ’?mÅ?U\?°Þ?2E?LÂ?,a?”?Öû?ÔØ?ãI?ÖÍ?Åã?ºI?}Z?û/?Ð?øÇ?­y?ŒO??:§?3å? T? Ì?ù)?çù?ÞÐ?Å ?‰Î? -Œ?ïA?5Ø?À?ª­?e¨?W?#h?>`?§?Ä=?õ?`?ú?[?K?"`?,æ?:…?Uý?11?ø˜?ñO?‚?¬×?ú?L+?¦F?žH?Z{?Nl?\??2?Fu?Eš?ž[?Ÿ?—?¼G?Ó?á?”?Q?\,?Þ?YR?¬?!Š?‚ƒ?¼T?$P?K?] ?3B? =?6K?¼l?ýD?ôÕ?À·? â×? ç¼??MN?Ýä?Ûƒ?šº?@ ?äJ?¤¤?Œ?S?ÝŸ?ô -?C?ñi?¸$?‹®? á»? ñƒ?î? Ï?¸™?”n?B? G·? 9Ù? ®Ã? ˜'? •? oH? L“? x¥? ¹ß? )Ì? ®? -Z˜? -š„? Û?tð?Ø? -¯™? -ñÓ? -? ùù? -RU? -˜Œ? -¶?Žý??ã? Xˆ? -RË? -²ó? -Á§? -? ö`? -Œ? - f?ÞÛ? M? öA?í?O? ï? ?>‰?ÓC?Ø&?a?äŽ?lU?:¢?’?ÁŒ?Ú2?lZ? û?E¡?cÇ?Æ?@ª?:?Só?ÎY?E¯?h6?\©?ÚJ?E@?Tó?Ý”?`_?…v?}I?ƒÒ?è×?¸?;#?JÃ?Ði?ÑQ?cº?£h?Ó¼?*ý?ðÊ?ñ•?á?v?Œÿ?¯ò?§!?dF?ýÕ?I7?à:?f³?ŠS?^f?¥r?P—?I>?}I>üú>ÿïÐ?Ã?äÜ?°ö?qÂ?%?ÿ%?g¡?ôÙ?hY?ùA?Ÿ?æ.?>˜?Á¼?Ž]?%C??g?>ß?6ƒ>ÿw?×c?4u?ð¼?B9?Qæ?cˆ?-E?×G?ë+?åå?½}?”À?fÔ?(2>ÿê>ýó\>ü°>ýa€>ÿ>þÝ>ý <>ý6¼>ýÃÃ>ýÓK>ýG>ý¯ >ýÊÇ>ýS9>ý9ã>ý¨?>þ x>ý×È>üü’>ûÊä>ù«>øË>ù~;>úìà>ûuæ>û ¼>û1>ûC>ú>øç>>ù.Ç>ød>ö¾‰>öCS>ö{>ö+˜>öK@>ô9G>ò!Ë>ôl>ô—_>ò*->îy>ï·½>ò‘A>ócÀ>óV9>òu>òa?>óZ>óÀH>óØÏ>ð±e>êCÔ>íå½>óbð>óÆ5>ð ß>ð¸>óL¢>ôîr>õ+>õ@w>õš>ð^>êÝb>說>ïÅ#>æðÙ>èh’>ð8ì>òna>òöâ>ò@(>ð­>îè>ïÁÓ>ð8à>ñ9§>òNL>ò"¹>ò>>ñ‹Ø>ïd¢>í+W>î¨ß>ðm>ñÑ>ðÖ'>ïÙ >îàÞ>>í¦æ>ë1è>êƒ#>ê_¬>ê£>íg½>î.>ìÏ¢>êBÈ>êPÔ>ì -Í>ìÎg>ìIb>êÛ;>é®ã>êÀ¬>ë¯Ê>ë­ƒ>ëWi>ë>ê×>ê»õ>êa¸>êv}>ê‰.>ê9>èï >ç˜R>èúe>èŽC>ç i>ç¿?>ç#Q>çS@>æS±>æ·>æë’>å×>åï>åÖh>æ#„>åÈ8>äþó>ã}§>âþ3>äà>å&â>å4ì>ä÷ˆ>ä”±>äOà>äP×>ä>ã–>âÙ×>ãPç>ã\1>ãUP>â®C>â,1>áP5>ÞÊ>Û€ >Û>Ü¥+>ÞŒE>ß\R>ßgW>ße‚>ßf>ßa¿>ß;F>Þÿ°>ÞóK>ÞÌŽ>Þ>^>ÞWm>Þ±>Þbï>ÞOî>ÞKÈ>Þ)Œ>Ýk÷>ÛZŒ>ÙOQ>×¼>ÖUo>×à>ÖD>Óþ°>Ø1ö>ÛŠ=>Û;¨>Û£>Û“B>Û}§>Û•0>Ùô>ØBò>Ú m>Ù¿`>ØHC>Ù©>Ùo>Ù4S>Ù´>Ù7>×Ñ>ÕrT>ÕÖ1>ØdÍ>ضu>ØeZ>Ø>Ötá>Ѩ">ÐR¤>Óù†>Ô÷r>ÔJ?>Ò×ú>Ñm>Ðan>Ð ->Ï£Ã>Ïýa>ÑÂt>ÒCh>Òo4>Ò‹a>Ò¬>Òª?>Ò+‰>Ñ+v>Ñ:ë>ÐU^>Ï>Ïü?>ÒB>Ó Ë>ÒàÑ>ÒÁÆ>ÒÆ >Ò^a>ÒG2>Ò’O>ÒÇ÷>Ò-A>ËaÙ>±!>>›6>—§¢>µƒä>Í#Š>Ñ`'>Òw>Ó>Ò²Ü>ÒØî>Òø">Ó¦í>ÓÛÅ>Òü£>Ò™>Ó />Ò›»>Òlï>Ó¡>Òðž>ÓE_>Óž¸>Ó¾>ÓèW>Ôe>Óý™>Ó1Ê>Òïè>Ó^¨>ÓÈ>Ò¤">Ñ>Ï|Ù>ÎŽÎ>ÎÙÚ>Ïl3>Ðò">Ñx->ÐÅ\>Ïâ¶>Ïþ>ÐK—>Ð!z>Ïcé>ÏB0>Ï„Ù>Ð$>νñ>Î~!>Ιô>ÍõÔ>Íî3>ÍJ¨>ÌÖá>Í+>Íu–>Í8>ÌÕ>>ÇÜ@>Ä&}>Ê{é>Ìcz>̯>ÌbV>ËT‘>Ê4>Ë3œ>ÉîÒ>Äÿ>ºµ‹>½«µ>È•O>Ê õ>ÆüÇ>ÈœL>Ëy>Ê¿>ÆïÂ>Ç>>ÉWº>É–Ù>Ç”]>ÇD >Æþ>Ä-ó>Å”}>Æ/Å>ÅÑ;>ÃD…>ÅW*>ÇP/>Çþº>Èô >É}P>É"¼>Æû›>Æ -I>Å2>ÄH>Äpµ>ÄÖz>ƶ\>Ç¥ó>ÇËž>ÅÇ>ÂK>Á*h>Âë>Æ1>Æt>ž™>Æ+x>Å~->ij>Äþ>Å´>ņh>ÅÆK>Äé«>Ä{‰>Æ)÷>Æû=>ÅЉ>ÅéÚ>Ũ”>ÄJº>Á¨R>ÀÖ>Â*>ÂÍÕ>Áyw>¿Ê5>Ãqq>ÀÄ>Á_ÿ>÷>Äú>ÄœG>à >ÀôÁ>¿×ì>Á%~>Á!>Áß>à }>Á©Þ>Á!5>Áíë>Â0â>ÁŠ†>¿ŠÂ>¾ X>¿ª³>Á^>ÂVé>ÂA>Á‘ñ>ÁXj>ÀñÒ>Á1Ø>Á3d>ÁÅ>ÀåC>À|Ö>¿jÛ>¿tœ>Àˆ2>ÀÏ’>Àeä>¿Œ>¿)Ú>¾64>¼xT>½È§>¾Ñª>¾f’>½±>½Í>½fà>¼bâ>½+¼>¾1>¾O‚>¾I×>¾.„>½ÿ]>½çá>½ç¡>½¨E>½•X>½§ì>½›>½…ý>½kÂ>½B(>½$>½ >¼º>¼zy>¼§Š>¼˜y>¼K>¼0X>¼9E>¼5¥>¼n>»ØW>»]>»°8>»›#>»eh>»=#>ºùs>º;>ºjì>º½Ç>º¾>ºÄÝ>º®ê>ºr>ºXë>º>/>¹ó%>¹2÷>´ÎÚ>³Ñ¸>¶Öœ>·s~>¸Éü>¸¶™>´((>²ê@>¶µ‘>µpŸ>²r>µ6>·ÜŸ>·o½>· -Z>¶’,>µ >³óÞ>³fë>´8\>±e)>²ƒš>µN>¶¬™>µü§>³>±û¬>²‘Ð>³&÷>µ->µ^8>´¢Ï>´7A>µ80>²Ã³>­à.>±ãk>´@2>²fÂ>³Ž€>´ÎD>µ%ñ>µu”>µk>µbì>µ´Þ>µµ >µ`õ>µ/ó>´ ú>´y¸>´ïP>´hÅ>³ü¿>³¥·>²[ó>²óú>³‘V>²®Å>³oí>³b'>²Y>³Š>µ<`>³#á>¯ >²A~>¶@d>³´ >¬d>­ð>´¼u>¶„H>¯ôè>¨‡'>¬t$>´ëš>·9@>°ÓÏ>£ú~>žþè>­N¬>·Ôs>·q/>°ÐÍ>¢é5>ŸŠ•>¬ñ|>¶€->¹">·C>­Êð>ž4>š3È>©>µ9_>¹Ãq>¹Ù+>µ9>ªž>˜6¿>“4×>£÷Ì>±Ô=>¸€>ºn³>¸â¼>³0°>¨§È>—,¶>‹b§>—b>§ Ž>±·Wï>ºd>¹·™>²–a>©›m>œ9=>Š0Q>„ùl>• >¤¨+>®$*>µe·>¹->¹ùŒ>¹.Æ>µ=ƒ>®¯È>¥©ê>—ä)>‚[¯>€Í>•KE>¢>“Bá>}r¢>Ÿã>³ ã>´ý^>µ¬I>´²/>±‡Z>«?j>¡&C>’aÅ>|u³>zDx>‘ü­>¢›p>¬ ^>°’™>³>³(ú>³¥q>³Î>³•>±Î>®]†>®?[>«e>Ÿ -Ò>|1x>jk>j&ˆ>kÊK>ŠëŸ>šèÖ>£ò^>¨ô>©A>¬9>°HA>±E >¯Þ9>¯õÿ>°j@>±^a>±c>°Bï>¯î>¬:>¦øß>œü¿>uâW>22Ç>D˜ù>fÊ&>ŠøÓ>š>¢5>¥_#>§ ~>©™N>ªùo>¬\>¬‹Y>ª|Ú>¨:>« >«ú>ªöÝ>ªõ1>ªü·>«Vâ>«>©”«>§N¬>¦ÄK>£®h>›–->ŽÌÿ>€OI>]8ø>j/¼>‹9ß>™ßå>¡¶>¥'>§He>¨>¤>¨ìx>©_3>¨'8>¦Ô>¦iÅ>¨šÐ>©Zø>¤©¹>Ÿ¾f>¦ú¯>© t>©ã‡>©›ñ>©Qö>©(J>¨œ>§âú>§‚Â>§(>¦Ùÿ>¤ËÌ> }ü>Îæ>‘½Ì>V“u>2³>M4º>€T>“û>œ¯f>¢½ú>¦Q>¥QÕ>•ûÆ>‘LÄ>”Ç>™ùî>¡·^>©0ò>¬/¾>«*y>ªK>«¼Å>«¶É>¦ÜÍ> xk>§ß÷>«[)>¨e7> S¤>¦¨>«Ð>¥Æ=>¡Æj>¨÷ä>ªÑ®>ª˜>§÷$>¦)>¨÷/>©;@>¨(%>§ §>¥Lð>¢¨%>ž¯Ÿ>–Å>… -Ÿ>]K„>`j=>ˆS‚>—²>ŸÌ–>¤ç >¦ód>¦è©>¨?¤>©#ý>© >©?›>© ->©ôÈ>©²§>©ˆ>¨˜²>©Œö>©d˜>©Mh>©“>©×º>©¦$>©÷ü>©²>©,f>¨ÛO>§H—>¢=´>£ž{>¦]÷>¥Úð>¥Ài>§>¦|<>£¨>£ÏÃ>¤©ý>¦4 >¦– >¥Û>¤•Þ>¤°_>¤>£b>£•ì>£+>¢e£> ½u>Ÿ5“>›‡>šIW>– õ>^c>…†¾>j»>Y¿Â>tóZ>‡¶,>Fc>”õ>–0‰>˜ú§>œ"ñ>œyÌ>›óÁ>œ >ŸCô>¡N>¡Ù´>¡bÌ>¡Ëû>£Kí>£›Ò>£ô4>¤Þ_>¥6>¥j2>¥HÛ>¢r$>UO>£Î>¥Ö>¥Aê>¤†»>¤¢c>£>œ¼>Šá>¤a~>¥Ër>¥Í´>¥Ù|>¥ÌW>¥•?>¤œ >¢×¤>£Uf>£©ë>¤‚Í>¤Öž>¤®>¤}„>¤A^>£ö+>£¶> Þ“> øÚ>¡³ê>¡¯f>¡"ÿ>Ÿª>ž&i>žö%>ŸŠü>ž¯U>ï/>#>›ç>šð->™ª¿>—ŸØ>“ÈZ>’=¼>‘‡þ>ŽW6>‰|>ƒ,˜>v˜2>^áï>T§Ê>iöÔ>~³µ>…’8>Š“}>Žl >‘…>“Zü>•ah>–Ba>•ûN>—óX>™¸H>šÌW>›+r>›¡¶>œŽ>›ö >œº>‘:>¦ >šcx>ŒÐ>;2>œÚ«>ž§ä>ž†Þ>ž‘ø>ždx>œ&ñ>” ï>˜3^>ž!{>žÌø>›Ù¸>’d÷>˜×>šÚ)>‘: >˜!Ë>0c>¨ÿ>º >Œu>µÝ>›ìc>“Ar>—¶Ô>!1>œYÿ>œVÄ>œ9ž>œ>›ë>œ‹:>œ·->œJ³>œËŸ>œÍÛ>œÉD>œ¯>œ•Ñ>›â°>šÕé>›€Š>›üí>›­$>›Ur>›fÐ>›^[>›O>šU#>šg>>š'>šä>™q$>—é>–͹>—˜²>—>]>•Œn>–ð¨>–›0>–Ì>– _>–M>•O‚>”M«>“hs>’DÕ>W1> Ž>ŽZ >‹/{>„ù§>†”s>„Ø>©!>~ùS>u ð>d4>Hæ>A@#>Yji>mN©>uBA>z>„j>…·Ú>„ ‡>‰YJ>Œ™>+X>Œe >Šõ>Œ•K>ŒQ!>ˆk?>Š77>‹E–>fr>“M]>“‰$>“Ú´>”#>”?Ú>”a¾>”pa>”,>”ž>” -9>”)D>”Oý>”'E>”e>”ÀH>” >”N?>”ƒe>”hÌ>”6{>”qG>”‡?>“>£>’²L>“Ð#>”->“Æ(>“ó ->”:->”%t>“íô>“ÿ¬>“õò>“¿Õ>“gþ>“KÌ>“yp>’\7>’P{>“M>“ d>’Úr>’Ÿ‚>’¦Õ>’åu>’ïø>’Ù{>’th>‘ÜÌ>’Pˆ>’\ü>’[>’)>‘Ø{> ‹>’>í>Žw,>ó°>‘|È>‘»>¼†>k@>ƒñŠ>Šï>p4>‰É>‚ý>‹Àæ>Ú&>“°>^>ö>”’>Žm>êÔ>ç >Œ›>ˆþ¼>Ë>ÛS>Œ6(>¸>Ž^m>Ž¤’>Ž>õp>Ž;!>Íü>Lµ>Ì>^î>8>{²>O™>&%>¾>Œãñ>Œfç>Œƒ>Œ$1>‹û^>‹²>‹E>ŠÚ²>Šf>Š#õ>‰ù>‰>‡þÖ>ˆaË>ˆ‚>‡‘`>†ôG>†NÉ>…QÌ>„WC>ƒa‡>Ü[>€jÜ>}(‘>yR>t&ï>n+[>f,A>Z²˜>H–‚>1Z¼>5ð2>L÷‚>\—W>f÷e>n0g>sÎw>xÊ>{Uû>~l>€U¦>€fÝ>F9>‚eŸ>ƒzÌ>„Pþ>„Ñ®>…4Ç>…hŸ>…ºE>†>…ßï>…›P>†B.>†dy>…}à>€@À>‚j>…˜d>†šU>‡ ½>‡,³>‡(>…Û%>~]@>‚4Ë>…òÉ>„à>†“>ƒ®Â>‚H>…f>†KH>†—>†Ï(>†±÷>…ý¬>‚\!>ƒEÔ>…De>„T†>y}§>#>…¯§>…°>…ú>…«r>ƒg<>ƒdp>„bÁ>ƒJv>*>‚äê>„ŽG>ƒ×Š>ƒ1¢>”>‚4Y>ƒÑå>„Ò>„¤.>„‚È>„’¨>„—Ç>„›ÿ>„‚/>„~\>„k[>„P­>„)Š>ƒmX>ƒ_ >ƒÌ>>ƒ«>ƒ¶~>ƒ8Á>¸>zé7>~Œ•>üY>‚®ì>î7>‚uŽ>‚Ç‚>‚÷Þ>‚Æ]>‚‘ý>‚n‹>*y>°|>‚ €>‚½>‚AÜ>‚8c>‚Z>‚ï>é|>€Æ>#>€ÍJ> -ž>Q>%>€EZ>€s>€€>Þ>F>€Ò³>€e0>€BË>€“×>€‡]>€<->j><™>~i@>„>x%>~ßa>~7¡> ¸>~|Á>}¡ >~TÀ>~¾>~Ll>{ùÏ>wé[>wä >xªõ>v…š>x÷Â>|K>|þ‰>|°<>|'X>|8^>|j²>|]U>{èñ>{¬Þ>{i»>x”¦>nÏÿ>púÎ>yEz>zc>v‘#>xÇ>y¹ú>y($>y¿>x>u—>rÔ:>u¤º>xðl>xà§>x›k>xZa>v£¾>må>rò>wu¯>w\€>t\!>r¾>v,’>vt>u2>tdG>u?>t±’>t.­>t=>sч>th†>t6k>s’“>sd>sT¤>r™{>r€v>r :>q¼%>q$X>qb>pãÅ>o‚>nr£>j£:>mJ>mñ¤>m{·>m U>lB¨>k_Ë>jc­>i>º>gÃP>fŒç>e>bv˜>`¨>^x“>[m~>Xtà>TŠŒ>Ok>HÀr>? £>1–_>…>¼e>.ÌŠ>=\>FZ—>LøÌ>Qæ„>U£å>XŽ>ZÅ:>]š0>_‡5>`Óê>aìJ>c# >c³>d=Ç>e›ˆ>f5N>fɆ>g<„>g—8>gâl>hç>gh>gÆ>f·>f£>d´?>eË>hYê>heI>aiO>]®å>gJ >hn¤>h”>h½>h¦K>h¦Û>h…b>g2à>dƒæ>fûy>h(Ò>gÛ>g%=>go>gÍt>e{Ø>bjþ>f€Û>g^¬>få¥>eÿå>fÊn>fÎÛ>f—>`ªb>b°s>eÂz>e¸—>e_o>euº>e˜3>eK`>eÃ>dØ7>dé>dUN>dá>d&â>`¢>b->d*Ö>d[>cîž>c·ô>c¥¶>c·Ñ>cjŠ>bw>b[þ>c>bƒ >bMŒ>b®>b”2>baŒ>b"ø>b p>aôV>a¹˜>a¨G>a‹(>aQ(>`Û[>`%Ó>`¿ý>`Ô">`©)>`qç>^Ŷ>[ÂI>_$‡>_íÍ>_Å’>_\Ò>^ÈS>^å5>_V>^Èç>]ï>]!Ë>^;v>^_›>^>]ù¯>]ÑR>]Ž#>]9>[ÝO>\™i>]=î>\ò°>[ z>XÞb>[e¹>[á >\6…>[Óô>[Õ+>[ÉÌ>[˜<>[Â>ZE>ZQu>UÞ[>UŽ>ZG>YLT>Y¾>Z7]>Zf>Zë>Y³½>Yo¬>YXò>Xó±>Y:À>Xç!>XŒ>W©¬>Wt>XSÜ>Xk÷>X:›>X¯>X ž>W„\>U¯M>U¥>WaY>W:¬>W>Vû>V̼>V˜å>VV¢>TÝ¥>T9[>Sj>Kb6>CjÊ>Gáf>O5Ã>T¶r>UJ>R‹ª>O->R÷‰>T0Y>T‰“>T6>Sþ>RÀ¯>R{“>Rž>S@V>SN>SG¾>PÅ`>NLN>R©>Q“>O°”>Oæø>Pâ>P ý>Od>L»Ë>PGX>QM>PÉ>O<š>Oäž>PœÙ>NÏi>Kwö>O9.>Pa>OÞÀ>O­ö>PS>O[à>LÛ‡>NÆQ>Ooí>OVä>OKØ>NÙ0>LlF>LÔî>Nb´>MÔ>I°¦>CgÛ>J3>MëX>M¯›>M{(>LÑk>M$B>HÀâ>FC=>L^„>LÞ>L3¸>Lu€>Lh5>LS;>L0˜>KÕ‡>GÌ™>FÙ+>I7D>Få>JËp>KBð>K*>Jãp>JÀÙ>J>Jh›>Iõ÷>IÀ™>HÓè>B!r>FÀ‡>Iƒ>Io¢>I[&>Hß%>Gt>Gü>E†Ç>4Ïl>3„@>@p‘>4#ö>6 >AË>G ‡>Eù9>FŒ>Cêõ>9º7>C¾.>Fºö>Ft`>E_±>Eõ@>Fd˜>DÿQ><n>6°>BK/>E>E£º>EU°>Dˆ>>Cg†>B>¤><®•>?VÄ><{Â>Có>C¹d>Cq·>CªL>B2½>B‹Á>Cc >Cnn>C#:>C -³>B ð>?8ê>:u¬>?øü>B\$>AÍ|>@àý>AjE>A\>AX>AOž><ý8>6‚±>>ìd>@¥u>>’ƒ>:Np>>-Ï>6.>8»b>>ê˜>>™­>>®ü>>Ø„>=ð>9ôP>=bÑ>>}$>>[|>>*§>=îŠ>=˜­>;\ý>9ëü>:z§>.Èr>5•»>;xœ>;™X>;R>9f•>5†Î>5Áï>9>8MÁ>7>7¿>6ãº>6) >5&s>3ó¹>2ã«>0¦®>(Þ >*‘:>+à¨>)†)>&}ù>"Ÿœ> j>É.> z=öÜ)=ñ×> ¡ç>©@>”ý>Áç>ª >$ -=>&?e>*K4>,ö¢>+6>,d>0g,>1_o>1üw>0çÒ>,"á>-™|>0Xg>3¥>4VÏ>4›”>4Ô^>5>5n>5&—>5%>5=‹>5Oó>4Wý>3T÷>.m>2V>5&¨>5Ht>5@Ó>5'7>4à•>5á>4Ü|>4•>4·L>4Ô>4‘Q>4«_>4R—>3ê~>3íe>4H>4D×>4,“>4ˆ>3Ú9>3Úù>3Çö>3«0>3I÷>2è>>3C|>3-Ê>3>2è„>2¸F>2¹^>2¶U>2“;>2>O>26Ï>2»>2>1Ññ>0rù>1*J>0>›>/þ·>-×2>.‡>.0>0¿>0Ê%>0.À>-ðÊ>/× >0+%>07ª>0¼>/¬Ä>/° >/Îj>/Âü>/´·>/‹>/u7>/?F>.Ä¥>.’÷>-g>(¡]>(ùˆ>.MZ>.i²>-¡>-pÔ>+˜&>-dÌ>-ê>-ÎW>-`v>+Ü>,ÿè>-Fñ>->,üÏ>,ÇŸ>,Ö`>,¹¡>,s>,k->,gW>,'>+æ>+Ñð>)M¡>#ñ3>&…>+ -7>*Ú8>+6Ð>+q>+Ù>*üf>*ÚX>*·Ù>*Ÿg>*ni>%Á+>R#>"d>'g}>%øR>$X>&¬â>%\>(gŠ>'‚'>(T#>(¢w>(¹ð>(»£>(tÇ>(Vö>(Aû>!÷>§ >&RE>$„¿>'&>'ªõ>&u‰>&ß´>'r‚>'N>%#¶>&j2>&ãE>&„Œ>&UG>&®> àå>#k–>% Û> îà>ù—>"C<>!B.>!Öº>%?>$*¼> ‘Ø>ø>X5> â^>#µD>!çâ>LP>#”ª>#¯">"ºq>#…T>#Ï>#–è>#Ç>#R > äÀ>"|>Të>“Ñ>^Æ>"h>"ßµ>"Ïv>"³¤>"“2>"k>"TÈ>"#^>!Å.>!ï7>!–>!©A>!é>! >!g>!Tø>!&™> ÿ> çu> 5U> d]> s> †´> dê> 7!>#ü>!–>î >»Ç>¥µ>˜%>v>>t”>B>éí>ó>úz>ãä>Šº>Î>±}>e½>B>ÙÏ>ñ ->à>×>Ê/>­`>@l>Ž^>ºÓ>ÿg>tõ>lL>s>k>Ê>Q„>î‹>í8>úp>‘7>|>\g>fi>Û@>•>:a>î>H>O>²ö>û·> “>ã>&ô>)P> o÷>Œ*>À>‹>*†>#>šb>‰Ï>{>fØ>ˆ>®2>Øã>‰Ø>§Ÿ>Ñ=>XŒ>‘r>yb>Tè>&e>­>÷Œ>Ùˆ>¸Í>’ >\ï>bÄ>>e>àt>òn>°> nÒ>¤¾>Áß>Ÿ >R>Fl>7¬>ÿ|>Y6>õI>Üó>9>}>$ˆ>¦>0€>¿>8>Æê>çb>ÒË>›Ô>`•>›·>’„>Ö|>­´>ùƒ>t&> Ût>R>yŠ>î'> >Ü¿>>¤_> ·¾>&>Áè>›¯>p:> Ó>®K>DÙ>0„>\>Pö> EU> fö> Ì•>½4>#&>™G>!ò>°n>úR>óí>Û‚>Â>§u>ŠÚ>u.>\">A>#> >óÖ>ØÆ>¿>¥x>‡®>c†> —F??MH?@>?AfÔ?Caš?E÷í?GÃa?GmË?E¤í?D1É?CwÐ?Aå”?=þº?8Œ½?4Vv?3—í?6?<è?BF©?F¼¼?HE†?G{Ë?Ep”?BRz?=ºN?8*®?4!ë?4àU?;=P?D9r?K5R?Mó?Ié§?D.??„Y?>SP?@KÍ?BÇø?CX8?B?@ÞÂ?@vÈ?@‰¬?A.ã?C"?EÂ]?GÚF?H>³?Gi:?F¾i?Gj?I»H?Lãk?O&‡?NÖ…?K¯}?G^Ñ?DY?CÈ>?D±s?Dú„?B´è?=Eú?6½?3c?5Í×?;sÛ??*?>3°?;ÇÞ?;ÌÐ?>Y?@Œ«?? ¦?;5ã?88W?7ÿY?9ÚŒ?;_‡?:é?8è?6£Á?8Èü?=С?C?F^Ë?G1÷?F‘$?F¶?FÓ‡?HœW?J??Iÿ€?Hë?E¥?C½ó?A×1?>“2?9£1?4yŽ?1$Q?0Š×?22?5q³?9íS?>Òv?B2?Aæ8?>6s?:û~?;ÿD?@wÅ?D2]?D… ?Bä?>Mˆ?:o?7h?6¿„?7}€?8¯d?9¦‘?:¥å?NÉ?= U?=ž·??\ -?Ax?CÛo?F¢f?I?&?K¶?Kº±?K`‡?JÝ?Hxò?FÔÌ?EBÛ?CÙ¾?B§ä?AL•???;Éä?8ý?7ÙE?7u?4ƒå?0°K?/j;?3l°?;'s?B[´?F P?F]?DS?ArÇ??‚0?@¸?Cþ?FËI?J¾?L«Ç?N-?O…j?O¡2?O ì?N*?Lkó?Hߦ?B®™?:hb?2Ÿ?,+k?*Š-?,í¶?1“?6W®?:Û?=Õ??¿??É?>Þ?=w_?=g(??&?@j¼??JV?;|p?6¢â?2Yp?0¸?1 >?4X?6ì\?7]3?7ò ?;sh?A&*?E¬¬?G/¢?F­À?E¢¶?D¤3?DS!?E‚‰?GñÞ?Jc.?LV?L©ÿ?KP ?G Ó?@šó?:k¾?6@í?4 -~?2Ö|?1ï•?1d¯?26ü?5%?8¯ñ?9ç9?8KN?7Ì?8üŽ?=gá?A¹f?DQ>?DÅ­?C£=?B^¦?Bº?B*Ð?A³A?@Ì?<û°?8Tq?3ô?/T‹?/>÷?2/g?5$¢?5?3Äê?1d¥?/ó?0 ?1Xn?2±~?3‰\?3È“?2û™?1Ör?2ï×?7Tú?<}µ??¨?@øZ?B%|?@²Ä?Bå%?BÈ?@@¦?<á?7‰&?4×þ?4ìÏ?6ÞG?9SV?;¢?<Ö ?=^¿?>Tg?@äŽ?DAè?FNx?Eßý?C.‹??$3?;š?:íÈ?=ʽ?B?EE|?FÉé?Gôï?Ii¤?J -?H›?F/f?E9?EÖ-?Fùä?G™þ?HA>?I"p?I#ú?G?Ë?DKw?B‹—?C'l?DØ?D/‡?Aµü??q{??lÓ?Ae¨?Cæ?E¿[?F ?DÈÝ?B²0?Aº?@/Ã??Œ??þ?A÷§?D•Æ?FXË?G( -?G”y?G-Ô?Dã®?@P ?:dq?5u‘?4{?6?:»‘?=æ—??;/??™”??gë?>Ï\?>ì ?@\¨?B)?C¡V?E e?E|ã?BÙo?=1¯?7þ ?6¾{?9dÂ?<¯œ?=–S?<Ê?:M?9­Å?:º?;`U?>2B?AΞ?DMQ?CÐ??þõ?:é?3p?.º?.ÿi?4hl?:ÖÚ?>I?>Ÿ)?>£Š?@«þ?DD?G ú?G86?D–??ë_?:í?3í0?.¬K?,ó«?0Íé?8±?@7I?D9¹?Dt~?BŒ?>I¡?9Œ?4×A?2Ž$?4º?6‡~?68°?3q5?2=Q?4ôn?:‡—?@Ôp?EÊ3?Gž?ErŽ??¬Ø?8:õ?2©o?2&b?5ô£?9Ã7?;/I?®Ý?:ë6?7Ì?6Zx?8p?=/ ?C0?GI×?H˜‹?H•?Gÿ?E˘?C“ ??þè?úÍ?AØ(?B®?A–J??Öø?> š?>sE??Fó?@¿A?BqL?D*?E’Š?Eº?Cò²?@âG?>Î?Kµ?>J‰?>™·?@h¾?C‡N?FÅñ?Hó”?I,Å?Fÿ1?Cë??é«??ü ?BÕ?Es;?F ?EcÔ?Dc‘?B÷¿?@<ë?<?7Í¥?5n‚?4ÍÔ?4ÊÝ?5g?7çØ?;~Ù??n^?C!j?EË?FÁü?F›?DB?@¢r?<ñà?;\#?<ú ?@Ü?A÷d?A K?@›?>O ?<¤õ?:ŽÞ?84?7á?8‰‡?ƺ?=¥£?>Ïà?A5œ?BÏb?Cpx?CÝÙ?CÒÛ?B¸‰?@Ä>?>x?:yÖ?6W/?3£?2;.?4Ì$?:Z?@YU?D(O?Eg?Dãç?B˜\?>Ñ?<J?<Íý?@«…?Dó?G@i?FG#?BWf?=‡­?:Aò?9Çæ?;‹u?=Oí?=(Ö?:é]?74?2c=?/w-?0ª?6N&?=ÂŒ?Cf?Då?E6Ö?F(?Gg#?GI¦?EOr?C,ß?Bë ?D¡?FÖß?Gäž?Fÿ?C®?@ ¼??S–??ñ×??·§?>÷??÷ä?Cdé?Gz©?Je„?K|W?J‘°?H ?EËé?E}C?F½–?Fð?D7Ì??Ža?;qE?::U?=xè?D!p?Jb%?M7?Lòn?Kµ^?JâÞ?JÓK?Kcí?KŽú?JLù?HÕ?I¹C?MwZ?Qòì?T²?T³C?RL8?OÒ?O˜W?Q“£?Sž ?Tj“?T¸7?U?TVƒ?R®´?R1`?Sð?V/?VE›?T©?Rbž?P&d?N/?Ln…?JßÆ?Jaê?Kïú?O$»?R~?T²k?Vg?W¼e?Y4¸?W2Ú?OÒ!?F$??ÈF??ÕN?C(¼?Dšê?BŸ±??û©?>øe?? ?@.?BÑ!?EõÔ?Fê?E¿f?E|?H/?Kè´?MùØ?L¢”?IÛò?I¸:?L1ð?K|±?CŠ,?8DŠ?1j ?2z?7MP?<¹§?@×?DÝ;?I«??M‡Ñ?N¬?NR‚?Nì?PãÚ?S v?T³­?V %?W u?VÞ?T²ò?PÛe?L\“?H_‹?F'?FKØ?HL?J|j?M"?NK}?L®Á?H~½?DQ3?Bl#?BuÖ?BJÿ?A̼?Cöò?JeE?QÞ[?U î?Q™‰?J†?E³?F)?q ?Üæ?‰E?Ž+|?ŽŽ±?ˆ'Á?wðÂ?[b?D$œ?;™=?Fe|?_Ìó?|}/?ˆ¼N?Œõb?³´?ûû?“âô?”U??åÉ?S…?b°è?CÜÔ?0@?-“u?:Hº?Pm‹?mEw?†ö%?•½X?Ÿ™O?£pÉ?¢n)?ž³”?™µ?“>3?Š²ñ?€ÿœ?mf2?U?¹?;˜Ÿ?*`?+ç?>³Ä?]4]?|°Ý?‹ìX?–Ý%?žq]?¡%ƒ?ŸR2?œ¢˜?œÇê?ŸÖ ?£±ï?§ ?©ˆ?§ëä?£ÞK?{ñ?”OÑ?ˆ­Ó?x¯?]’ù?Cøß?3Ún?6–ð?Jÿ?fá?~gv?‰²è?”£é?¡T†?®ºZ?ºËg?ÄËT?ÌàË?Ò[•?Ô]œ?ÓËZ?ÓU?°›?«‘t?¥|Ž?Ÿ ƒ?˜bÝ?eÍ?‚2û?d‚L?Eº4?-Á?ôÛ?#å?6›"?Nûæ?fq¹?| ?‰0¬?–×?£ŒA?¯eª?¸©_?¿š€?Ŭ¦?ÌÙð?ÔÆ?׊C?ÖÑ]?Ø“?ß°?éŒ?ïÉË?ñ2Ø?î?é±?çŽ?èrf?élä?é, ?ì±Þ?ô.?û+?ýl?ý´p?ý)Ò?ûd¶?ú‡«?üü @³ç@ù@Âq?ø¡?ê”?ÝÁY?Ù–t?ÝñË?ãÅ?á%%?ÕÛ¬?Æ&Æ?¼-‰?¼ü?¾¯?º>Æ?°} -?¤¯L?˜$€?‰Ã}?rå\?R Þ?5}?"Øí?!¥"?3ë§?QrË?oJ9?„ w?ü7?–vê?ž¥ó?¦¿ž?­()?°¹´?³gt?¹Ü?Âh’?Ê7Þ?Ípi?ÎÔŽ?Ïôí?Ѩ?Õìe?àˆs?í5?÷%>?þŠ@ÂI?ÿÿ?ù®ô?óœ?ò¿”?õ??õàQ?õ?ôt³?õ?÷ŒÖ?üN\@»j@ºt@_?@ì@~Ó@Yä?øš?îlæ?áS%?ÏDq?µÅD?“Ÿ©?]Ôl?26?AÅÔ?‚ ?ªÐ÷?Ëô“?á›B?ð&“?ùèf?ý.‰?úR?ôº?íÎ’?ì?ðSŠ?ôªÒ?òC?ëMr?ä?ßÆT?ÝÊ*?Ýk±?ÞÄ#?൒?ßWT?×Î,?Íw‹?Ç(F?Æ¿à?ÇCC?Âü"?¹ (?­á(?¤Ø(?á?“Pæ?…‹?b5²?3à? -§>ëH´>ôÅî?@B?5T?VF[?s– ?‡(e?“(ï?6?¦nO?°Vj?ºL-?Áõä?Å¢3?Ƭ ?ÈÏR?Î)?ÔÝ!?Úë–?ßë/?åM‰?êÅš?î?ðáï?ôM?ù,Á?þÛ@"?þ!/?ù1;?ó†¿?ñ ?õ ?ýð@±@øŸ@Ú@…ð@hƒ?ø5Ÿ?ôU?ù]@TË@ÓÅ@vÄ@ 2@©a@„@»>@£Ð@¸@·j@˜¤@ -& @ á -@i>@«@ ~c@ -SÄ@R¥@™@Ö²@ -ŽÕ@ à@ ÇR@{)@J£?üÜÂ?ú|Ÿ?üm6@tó@‰ñ@R@ -è"@I @X@¸¸@ ¢K@ £]@ õ@ -€‡@?m@ÐÆ?ý@·@¡@/Ä@ °@ ²Ý@ í|@ ¥@%î@ê¯@.ö@Ù,@Vy@R”@20@‡Ø@ËÄ@\‘@mb@Ï?øÙ`?úi´?ÿ³%@V?üð¿?ýºÜ@¾þ@4E?ùQ?ó+Ñ?óÒÚ?öá1?õ@?íH?ಛ?×…)?Ø´6?áÛ¾?êÏÛ?î¹£?ìô¾?æ×è?ßÀ?Øíô?ÖÙ?ÕÄ„?Õ¯M?Óý?Ð q?Ê_6?ÃÞ^?½.,?¶/£?®ì?¤`Ô?™äg?Ž»¾?‚_?hmw?HêT?,¿>? ê’?,þö?JÐ?jâv?ƒ²ÿ?_?˜Qï? Bu?§p‰?®Æ*?¶¹?¾‘ˆ?źK?̆|?ÓÇ?ØL\?Ú‚?تK?ØU -?ÛiC?ßX?à½Ð?â]¹?æ8c?ꬋ?ì˜?êµV?æر?å&s?æ¬?æä?är?äD?éu?ñwÅ?ùÇ?ÿÊ™@£Í@p @åî@ª@@ü³?ùËÌ?òðT?÷¥-@·%@²»@»›@á @<Ä@S@…@³Ÿ?ÿÌ+?ú§¼?÷¹e?÷çŸ?ùÒT?ýOÝ@ƒ@^#@ë\@º@þl@X@î¨@3ã@õ×@e†@NÇ@1ó@x_?öèý?îHq?îP?ô°÷?ù€„?÷~!?ð€?ëðŸ?ï¡$?øš£?þtõ?þÀ~?þk?ÿõ@B*?ÿU¾?ú’?ø¢?ý£D@I’@£Þ@Ub@’ -@€ÿ@x@xL@ :?úð?ó¢?ôÓj?úZy?ü!?û`Â?ýé?ÿÆÙ@MÇ@!@nß@&ñ@ßk@† @¤@=è@ìå@^í?ÿ]?ú|?ý‰¼@Çy@~@^ô@ø{@-U@×ò?ÿ‡&?öÈ?ëÍT?æSÙ?ì›Q?ü„#@MÇ@”é@Ÿ¸?ü×o?òú¤?ñØâ?õ”Ä?ùÓž?ý6±?ýÝŸ?þ@@‚M@@,@ùÁ@<Ë@Âb?ÿ§ ?ög?ñT³?óâÞ?ö—v?ôˆÿ?ôOg?ù‹û?þ@ç?ÿvD@ƃ@œ×@çÌ@Ê¥?û4?õ{]?óè?ù7@ªÙ@é•@—¿@ -@Q”@ˆÛ@Û?û?ñ_?éÙ4?êF"?ï@™?ó_q?÷ðJ?ýøÊ@JR@A @y°@v ?ýÇ?ö“!?ôÏŒ?ø¢?ûXI?úÿv?õ¡|?ìSù?ãªÝ?ãzX?ìòN?õ2†?ôî?ïÛ?í@Û?ìc…?ê ]?ã_á?Ùí?ÔoÛ?ÓfV?ÓM$?Ö}?Ýr¬?áî?àºÁ?ÛÁØ?×ðŽ?ÚT›?á_à?åÇ;?á?A?Õdœ?ËPû?ËHŠ?Ó€E?Úˆz?ÛHø?×þ?ÑmW?΋´?Ï—I?ÎÕ‰?ƺ_?ºÆ%?´[H?¶i»?ºë?¹\?³²h?­^?§? Îò?™xÞ?]m?„¨×?lÍÈ?NTM?1r,??ù?Ã(?1Q®?NÍž?jÎÁ?‚?uG?—tx?Ÿªq?¥Q?¦ëÞ?¥zJ?¦è?¯ç?º.¾?Âì–?È• -?˶ì?ÌÈe?ÍË\?ÐÒ3?ÕbR?ÙÚè?Þü?á« ?ãØf?ã@?ß”í?Ü&Þ?Û¨ ?Þf²?âä&?åŽ?á¹¥?Ùô?Õʲ?ÝÔí?é¦|?ðzd?ñ¨“?ðÙ_?îlú?æAÑ?ÙL?ÏÏ¿?ÑŸM?Û!??äw4?éëÂ?ì?ìrA?ì×ð?í*?éuO?âVš?ß©ª?ä™?é¦æ?è—?ávÄ?Ý ¨?àÀ?æ5ö?èÚ?æN2?è+Û?íâ?ïR{?ï1¬?ð ]?ñ“ê?ò’Õ?ñvR?ê£t?Þžö?Ôóa?Ó ?Ø…ë?âó ?í?ðÙÂ?îíy?ìØ)?팘?î‰_?îf?ínH?íç:?î¬L?î8€?ínW?ì¯Û?éòB?å!ý?âs?å³?ì‚8?ò-?óäž?ñ¹?é;L?Þ>t?Ö4Î?Ø?áœ-?éþ?ëÕÀ?ër?é?æº?æ«Ö?èc1?åÚÄ?Þþ£?ÛÍÄ?Þë?áýS?ᘞ?৅?à4¯?à?áö ?ärH?äÆô?Øœü?Ûºž?Û=ã?Õçü?Ò·Ú?Ø!Ñ?áv£?ç9‡?çâê?äîó?à2?Þ?ßH?ཟ?áub?ẛ?ß‹5?×ù?̽?Èl?ÏŠ?×5?ÕŒ´?Íâ?Çuù?ɹ3?Ï¿*?Óàn?×Î?Ýds?àW[?ÝMý?×{J?ÕqØ?Øå³?ÞK?ἕ?âéœ?àÉÕ?Û+?Ö5¨?×Z?Û÷‚?ÜÎè?Û(?ÚÞ*?Û¬ù?Ú‰ ?×~Ê?Òù¸?Ì‘D?È"?Êêq?Ñã¦?Õ} ?ÔMj?ÒIJ?Ó,Ç?Ówò?Òù˜?Ô>E?×QŠ?ÙEv?Ù¾|?Ú6·?ÚŠß?Ú2¦?ÙŸŽ?Ù‚s?Ù‹˜?Ù^§?Ù.ž?Ù€?Ú—s?ÛÓŠ?Üp0?Ûí\?Úê_?Úeº?ÚXÏ?Ùäh?Ø*L?ÕPò?Ò#Z?Îòh?Íôþ?Ñ Ÿ?ÖB?Ù°¢?Úx¦?ÙOê?×ø?Öi’?Ò€t?Î3F?Ïé?Ó²¹?ÕRð?ÒYN?Ï]M?Ïßc?Ò¯?ÓÍh?ÕMí?ÖÔ/?פZ?׬â?×ë?Ö§?Ô26?Ñ`ÿ?Δð?͹?Ïßç?Ó*b?Õó?ÔÜa?ÓOe?ÑP?ÏO?Ï µ?ÑD|?Ôfƒ?Õ©?ÔƒP?Ò;…?Ð6O?΋Î?Ë?ÅôÄ?Ã|1?ÅU2?ȇª?Ë\n?ͲÏ?ÏR:?Ðô²?Ò¤?Ó??Ñ5©?ÎZo?Í/ ?ÎD?ÏÁ?й4?Ñ({?Ðä«?ÐwS?иÁ?Ñ6?Ñf?Ïúz?ÎÕš?ÎC´?ÎK¤?ÎÂñ?Ï[ñ?Ï4H?ÍÑý?ÌÝ?Ê’T?È`?ÃƬ?Áî!?Å ½?ÈÛz?ÈþÐ?Æ(¾?ļw?Æêu?Éêõ?Ë6Ñ?É»ì?ÆÅn?Åó3?ÈGî?Ë*z?Ì°Æ?Ìî,?Ìtû?ËÚ?Ëæ’?ÌÂj?Í[_?Ì™•?ÊnË?È­?Æ"?ÃÝ·?‰?Ä5o?ÇÔ?ÈD?ƤÃ?Å€‡?Æœê?È“M?ÉT9?ÉRÊ?Éy ?Ɇ??É2ë?Ⱦc?ÈV?ÆB?Äuy?ÂÂ?Ãp ?Äï¼?ÄêÈ?Ãçx?Ã-?ÃÒ§?Åÿ±?Çä.?ÇÜ‚?Å¢è?Âa ?ÀAý?¿ùW?À¨´?Âs?Ä—?Å9@?Ī†?Âíc?Â^?ÃÝË?Ækâ?ÇFc?Ç?Ç?Æ.1?Ä¢?Å?ÂÒu?Á.Q?ÁÅ?Á¥?Á-9?¾è?¼‡»?¼t&?¾/?¿+?¾j$?¼Ùý?¼+r?¼Ì>?½ûh?¾«?¾su?½Ég?½›U?½¡_?¼ÅË?¹ç¾?´;??¯+½?¯ÇÛ?³”–?µK?´]e?²ð¼?±Þš?±Ô?°ˆ=?¯íF?®0@?«ÝY?ª@L?©7?§^å?¥¡X?¤%™?¢pÃ? cs?žµ?š¥E?•…Ê?r?¬ú?‹ïp?ˆ¯Q?ƒ0ö?w¦U?h*?ZÈ?MÙ?<Ú?#NË? ­ ?/˜?¹?- &?CTÐ?Uìª?eϱ?r¨F?zÄÔ?}ÞÖ?€½4?…ˆ?›àÉ?g¤?‘¿?œå?™ÐS?™†@?š*¶?—7?Ž¼?…ñ€?„¡®?‰h?ŒG‡?Œ_¢?‘–?˜Lá?›õÙ?œÈù? ý?œês?›”?•×ß?Ž«N?"’?‘²D?”²O?“Å/?’¸æ?’@ ?X??’+ ?’[²?cê?‘{?‘Ú?”׆?–Æ?•â?“ô˜?„?ŽŸi?§!?‘`É?”˜?—;©?˜Þo?˜³e?–oÙ?“27?’;š?”|‰?—s~?™&l?™¡:?™Xœ?—{d?‘œ˜?‰GÖ?†þ›?Œ¹U?’[”?“Z??Š}?Š%‰??Ýà?“#*?”íˆ?•Çc?•¢??•?–]~?–Ù]?–Z?•§U?”á‘?”j€?”¸Æ?”—Ö?“A?’|U?“§¾?•0!?•`ó?“¬?¶²?N!?‰µ9?‡&o?‡'?‰^x?‡™K?„˜W?‡ í?‹ØÂ?Œ‡«?‰v^?ˆ1W?ŒG”? ^?‘Ð?®}?Ÿ;?‹3?‹_ -?{S?“o¤?”½!?”±Ò?”qq?”ô?“?“1Ö?’¯ ?‘“0?Ÿ?®•?àh?ƒ ?ƒ­?„å?ƒ¶ï?‚p´?õt?øó?‚7?ƒÞ?„ãí?…_Ê?…‡?…g?…l”?…pv?…?„rm?ƒx¦?‚nò?€›‘?{‡ˆ?y­1?~ì?‚x˜?ƒ.&?E+?}û|?f×?ù_?ƒB®?ƒ`—?‚ú%?‚að?‚I?*º?¯æ?‚lI?ƒ°?ƒ4?ƒ -Ü?ƒ*?‚Yr?†q?z2?Xô?Jù?KV?€ô?€.u?~ðx?~.©?~­‡?„ ?~IN?|lú?z‰?xÜô?{?~,`?~éd?>.?Ê„?~Þ?~G½?~Â?|èt?w"©?pÌÅ?o7¶?rºé?wÓ>?y%|?vïV?v“?wG+?u8a?rÙô?t3d?tõn?tT?wT7?{Òø?~–?±?~x=?~%?~‡?|&8?v&?qûš?tí-?y??z¥?z¢;?z;?w?tÚ?tg?vÈg?x¿ü?y¥?y8³?wül?wqU?x8A?wn;?u8í?tçó?tÈ ?t J?tÎV?vqý?wy)?w³Ÿ?vÁ ?u¶l?uxË?v 9?v?sÒé?p–*?l®g?i²?l¤?nÅã?mk#?m¨Ä?q¢=?sš?r¹È?q¡§?r$k?t¾ô?w?v!n?sÿ€?t ²?sûp?a…¯?d¡?d`X?`íþ?]ÇR?\Ú?[ÓV?Z ¯?Z’?[×$?]J?]Á“?_hþ?aï?bâ?b6Ñ?a½)?a\Ë?`î$?` «?`\?a+ä?`ãð?_6ž?]ªÎ?\ôß?\8ä?ZPý?XÈÁ?X‰h?QÓs?Gõ–?IïÀ?SP³?Sâÿ?JÆÞ?G"¶?N6W?Så@?V §?X‰?Z E?[Nk?[;?ZD}?YÅî?Y< ?X Ò?Vò?U(?V¦?Vi9?VP'?X  ?X ¿?U¤Ý?U¡?Wî-?Yì?Wu?Uça?VÕ¢?W]»?VZ»?V ?XŠ?W‘?U €?R¢\?R¼E?ThU?Uc?T¾|?S¼?QÀ“?R{?T`?SÖ¼?S.›?SŒ?Sô?Q©?R@?Rññ?R•¢?Tþ?SŒj?Q´E?Q‚o?QÓl?Q~m?Që¿?RJ]?QÝ?OÑÊ?Nâ?N¢r?O*…?OóB?O‚M?M¹„?LXJ?MK?OO?OÒ—?MuÒ?M¨?OÕÍ?QrC?OÞ=?NvŸ?NŠ?Nç?NÃ1?N¾?NË*?MÝz?L-]?K> ?L„@?M½ ?L@ß?J|~?K@O?6´?:«?:_b?<[?<„?9„ä?9®}?==?? -&??Lh?=Šœ?;ú•?<è[?=ío?<õË?<ä?=M?>Öo??ªö??†Åè?=‰Ï?=µ?>]…?<¹…?;ä?;ÜÉ?<ü?=ÖŸ?=øª?>_­?>ÿ?>*ù?=°e?> ?>«?>¡R?=õŽ?=D?úÊ>îQ5>ßÊã>Ëd>­sû>š½±>¬t¯>Ìej>á¾/>ï!M>ùî?ªm?tâ?Gÿ? 5ª?a?áÎ?’Ù?9§?Æ(?{Þ?‡T?ê?NB?Ó?WÅ?ò?T?Q?E¢?÷‡?ù?o_?ø ?„Ñ?IR?„T??Üõ? ö?!?¶e?vÊ?¨?l ?'6?ŠU? (?„9?ËK?B?jß?­?5? Aà? ¦8?ô4?dB?f?ûè?³1?0??a?c–?.à?Â5?Uu?!?RŒ?eò?@p?7Û?5T?—?.?ÐÙ?­—?Ùd?è??ÌÙ?ßG?üÝ? #l?e“?&x?†w?п?\Ž?ŸW?æX?6=?=˜?þ?bŠ?¥?­d?VI?õ?sž?>?ßü?Fé?~B?xª?õ,?ÍÈ?ÿ?Ëë?½?cv?læ?Hˆ?ò?‘é?´?¿.?OQ?ºh?“–?ð?W?V±?¼l?Æ?— ? ú?,?1?æÎ?ÊD?¨›? G?F?ˆ ?Mò?­4?ü?ñ?»?º3?s½?ý?5Ê?n‘?ñè?ÚË?ûð?Y?·n?%?UÃ?¦o?[T?‹ù?-Ä?iø?£I?!n?Eæ?6Ð?¡?¬Ï?žù?{?ã³?ÿ?*ï?Z>þyö?cù?­x>ÿÈ+>ÿsû?A?aÇ?<>>þØ@>ý„@>þü>þ 2>ü >ýÄI>ÿÂ>þŒÝ>ýŠ£>ýr>þ'>ýÓn>üý?>û@õ>ú‰y>û—>ü‰[>üâÖ>ýù>ý Å>ü}¢>ûèÒ>ûÞW>úOì>øÚ>ùx>ùq_>ùö[>úþ{>ú^¦>ù>ùUo>ù >ùcª>ú ;>ùàÄ>øð€>øµ;>ø÷{>øí‡>ù O>øò@>øœô>ø#½>÷WG>öå>÷o†>÷ˆ >÷EÜ>ö‰B>ö([>õÖ>óH<>ð)‘>òÛÔ>ô|U>õÔ>õ€Õ>ôò7>ô`’>óã´>óé>óýµ>òó=>ñ6¼>ñ2é>ò I>ó=à>óµÀ>ó‘ú>ó!”>ñË5>ñQ>òJ>ðÈw>îÛ×>ð}á>ñÀ>ðÚ²>ñ&X>ñ)À>ñ<‘>ñ5>ðª™>ð¸‚>ð´=>ðJ>ðV>ð×>ï؉>ïDý>îÄ0>î9f>î”>ï:Â>ïJ>î†9>î)„>î[p>îží>î%>î:Å>íÅ>ívU>í{=>íêÅ>íïÖ>ímŒ>ìõÔ>ìˆ/>êÞÇ>éÅ•>ê –>ëPÝ>ë°b>ëS>ëÓÖ>ìXM>ë¥ñ>êÃ.>ê}">é;>ç>æ!%>ä5ê>äœ×>ç'Ä>å·>å;>ç€È>ç’V>ä£2>â>V>ãïÍ>爆>é>èŒü>èRÀ>é¥>é…>éB`>èè1>ç5¥>å5>ä³+>ãîd>ä]G>ä?ë>ä5­>æD¨>ç–>æåP>çFh>æÍ(>ä7>áNù>ã`o>äÊõ>ãÃC>ä3[>åpf>åS>äs>ã¯Ã>äD>äŽí>ãÏÊ>ã»/>äE>ãúZ>ãÍj>ãBz>ã2G>ᤕ>ßc9>á>âž>âqb>âT>á·ö>áº>áËx>à.›>Ý™>Ý3Û>Þ@>Þ³à>à%²>à‘Ã>ß~÷>ÝW¬>ݶá>ß}>ßçH>ßr>Ýþ“>ÝÁ>Þ”¹>ß >ßË>ÞÛ>Þ‚£>ÞA±>Þ">ÝÀx>Ý¥ý>ÝÄ">ÝÛ>ܹ >Ûü;>Ü­¥>Üoã>ÜH>ÜB>Ûü7>Ûù >Ûe­>Û(¥>Ûs±>Úè%>Ú_Ž>Ú©á>ÚÐ2>Ú˜m>Ú?}>Ù— >Ù1m>Ù0>Ùé>ÙÜR>Ù±Û>ÙwH>ÙFH>Ù5[>Ùo>Øq¯>Ø=å>Øtû>Øtè>Øb>Ø ƒ>×ØÙ>×”>Öø>ÔíZ>Õš>ÕaW>ÖJ>ÖyÚ>Öo—>ÖR|>Ö.Ç>Ö K>ÕÞ">Õ +>ÕÑ>Õo&>ÕQ>Ôþs>Õ>ÔËU>Ô«1>Ô–>Ôu>Ô '>ÒêÀ>ÑŸÒ>Ð>ÏÄæ>Ðu>ÏS¹>Î]®>Ðœ²>Òm´>Ò@{>Òfù>Ò2«>Òû>Ò3>Ñ$´>Ð&™>Ñ[>в“>ϺR>Ð\>Ј>ÐCp>ÐBX>Ða³>Ï‘*>ÎNA>΃>ÏÃf>ÏÕU>Ï’Ê>ÏnP>Îœ®>Ë{ >Êe”>Í[7>ÎW”>Î;›>ÍÆ >Í/2>̨#>Ì’ø>Ì>Ëë+≯Z>̺>ÌÛ_>Í#4>Í]>ÌÌZ>Ì>ËL>Ë/ç>Ë#ã>ÊiK>ʇÒ>˪‘>Ì->Ì!k>ËÑœ>Ër|>ËJÆ>ËV>Ë‚‹>Ëm˜>Êø‘>Ç~ã>¼ºA>³>±¡’>½R>ÆÙk>È{T>É2I>Éæ¨>Éõ#>ÉçL>ÊÊ?Å>Êw4>ʪl>ÉFË>Ç›A>ǘ>Èm_>È8Í>È­>È2>ÈÉ>Èûf>Éãj>É@A>È×Í>ÈÕÅ>É*Ö>ȬÐ>ȧü>È&T>Ç Õ>Ææ—>ľÉ>ÃG>Ä,>ÄNõ>Äùñ>Æn>ÆXÂ>Åÿ¯>ÅûŒ>Åô\>Å%>Äÿa>Åih>Äg´>ÃËM>Ä»Õ>ÃË>Ñ>Ãêã>Ä>Âä³>ÃÁ>ÃMs>ÃÖ—>ÃZ¿>¾à&>¾`°>Á²>Á ø>£>ÁA>¿qY>À&R>¿ -§>¼ Ò>¸ã[>´&’>º/¤>¾c™>º“>¼TÜ>Á&1>¿û@>»­>½9>Àdz>ÀˆN>¼H«>ºž®>ºnI>»”â>½j >¼¡>¼•®>¸Ã×>ºlØ>»}Ð>¾d,>¾ÊÎ>½—>¾®O>½­à>ºÞ¢>¸áò>¸ü†>ºç¡>»‚:>»è/>½ -E>¼ñL>¹Ý>·B‘>¶j¸>·>»šq>¼­U>» ->º¯¤>ºë•>»¿7>ºÞ>ºu+>ºqH>ºÖý>¹êœ>º…†>¼X’>¼¬ð>¼[~>»²>ºôV>¸¶2>³Ù>±Ÿ >·.†>¹]D>¶VÕ>² I>¶”[>·R>´J ->¶ÂD>¸Þ$>¸‰à>¶rG>´bd>³G–>³h>±›>´3,>·XÅ>¶ô>´ý‚>¶¶Ú>·’•>¶«i>³ìî>±lò>±Õ¥>´Mé>µé_>¶(˜>¶¥>¶¡R>¶GÓ>µ^ >µsk>´Õñ>µâ>µA”>³óA>²º0>³”>´n>´«,>´‘>³s`>³˜Ì>²Qž>°§§>²Wú>³*µ>²·­>²G'>²,Ï>²>±Œ÷>±ðÊ>²Wú>²QÄ>²F;>²*/>±ÿz>±Ü…>±¾@>±o™>±bœ>±m>±Zg>±FP>±/Ñ>± ä>°êV>°É`>°‚á>°Më>°f>°T9>°Þ>°v>¯ï>¯Ý>¯Æœ>¯’É>¯TÆ>¯I >¯1Ö>¯à>®ÙÈ>®¹¨>®^ý>®jŽ>®r>®c—>®bÙ>®Fc>®$Ò>®i>­ö}>­»È>­™>©Íð>¨Þe>«1º>«žŸ>¬·ÿ>¬®•>©?Ì>¨^å>«v>ª‰5>§˜¤>©£>¬Ä>«ú¦>«‘i>ªóz>ª>¨‚È>¨³>©2">§I/>§p¶>©t€>ª¶š>ªž>¨&>§Ðg>§„`>§“J>©£ß>©ó>© å>¨–È>©yÛ>§²ò>£´>¦Šƒ>¨¸j>§7I>§ö>©3M>©J1>©Ä>¨´v>¨Ëð>¨ñ×>¨½¦>¨œØ>¨NÙ>¨)>¨>)>¨*>§ê>§ÐË>§”è>¦†>¦:i>§9f>§`9>§=É>§›>¦ýh>§!’>§ ¼>¦v_>¥óÚ>¥äÊ>¥Åµ>¥ð1>¦ >¦yý>¦­>¥ñT>¥×;>¥–å>¤'¹>£§>¤N{>¤HÒ>¡->œ¤*>žŸ ->£uR>¤Â©>¤¯ ->£À2>¢Ô\>£*Ü>¤=Õ>¤€@>£Î/>£^«>£­ù>££>£çK>£ì=>£›Ù>£÷>£XK>£u#>¢ú>¢ÓV>£>£-¾>£fï>£³K>£Ã> ï‹>Ÿß9>¡Å>¡Sæ>¡'>¡·[>¢F->¢ ¿>¡òÎ>¡2õ> û•> rÀ> Ì9> Wa>Ÿ™Ï> é> ô¯>¡¿ ->¡Ùû>¡Ë>¡–a>¡ÿw>¡ÇÛ>¡J>Ÿ÷<>ž{÷>Ì(>ž§>ž(n>÷z>–‘>„ö>™"È>ŸÉT>¡•>¡ñn>¡Ã)> @¼>žü>Ë>›ÂÜ>™¾™>˜»2>ša+>œÚv>žþÉ> B> ôP>¡ºÎ>¡ø…>¡Ò³>¡˜E>¡^£> >žËê>œã´>•>‡Õ>ˆ4G>º>“ÿ‚>–»ò>™»Ê>›Ô”>œ”8>¿>ž@+>Ÿ· > g½>¡-,>¡7C> À>žÉY>žt>ž Í>%“>›#µ>˜w>?/>xZM>`òj>|ëå>‹Kd>‘6œ>•h+>˜&}>™×>™S{>›ÒÐ>žf7>ŸNR>ŸT>ŸV>žù>Ÿ:Ê>ŸFà>Ÿœl>Ÿx>Ÿo>ž†n>œÒ©>šÀi>˜NG>—ÎA>–‡A>“A½>Žš>‰­¢>†>‡Á>Œ#>qH>“Åo>–y_>˜’í>še™>›öä>œL8>œò¾>žRá>Ÿ"Ë>ŸW>Ÿ|!>Ÿà>Ÿ7a>Ÿ·°>ŸÈs>Ÿ´>ŸüÓ>ŸV‹>žRÒ>w2>›PÁ>—d>–s>–hÃ>•"j>’NÓ>ªQ>ƒ™(>c`¡>ZŽÉ>n³->}úä>„Ú>ŠA(>Žä%>’Ž>“ÈW>‘ãç>“ož>—€w>˜ÅÆ>—â>™!#>œo>›P>›{|>žå¡>ŸÈ>Ÿ¥˜>žÞÀ>ŸÀÏ> ³>žlù>œÍÒ>Ѩ>žäç>­¼>œî”>fÞ>ÀP>œ¡)>š, >™|W>™Å >˜!3>•in>“gM>‘V>a^>‰kL>„·>zÛN>l£>k­â>y†c>ƒÖ>‰t->Ž[>þ¹>’g†>”§ð>—Š>™ u>™¯)>™p>>›2>9>ŒÏ>že>žŽb>žÞÍ>žˆ4>œÜ<>œ€P>e3>Ÿ^$> x®> Aq>Ÿ¤>P3>—ÌX>˜r¾>K>ŸÊ>žù>žg->Œ3>œç&>›Œ >™ `>› -)>›æ8>šØ>š>™T¸>—ÎW>•ëþ>”áë>“ƒ°>‘<$>@>O7>‹”>ˆ@>ƒ¡¶>{íÔ>mãŸ>\‡á>TBÝ>^¼>nïÊ>|îr>ƒ[>…*>ˆáÐ>Œc÷>Ž7>|>VÑ>’ëÏ>•">–R>–M˜>— ƒ>˜S2>˜Õè>™Ia>šð>š‰G>šàd>šýã>˜¶„>”`>™nc>›æ‚>›¼>›}˜>››·>šqT>”¤É>•±î>›j¬>œYT>œR²>œP±>œDv>œ">›šÉ>šžQ>šË¹>šÕ>›"«>›$„>šë™>šªh>š^³>ši>™.L>—U>—¥[>—Éä>—lì>–߯>•Fâ>”RÅ>”t—>”+">“% ->’ê>ôÛ>t|>ŽO>Œoà>Š<É>‡¡>„¼L>‚‡>}È>tR=>h›<>Zº>GxF>?ø>OJ²>`Dþ>l˜z>vŽ¡>~ƒ5>‚P”>„õ>‡X½>ˆé>‰Ây>‹Ÿ>T'>Ž‘Ö>.>ÙÄ>¨/>‘>‘ï•>’¶ö>“ J>]y>„¢ >‡â¦>’õÖ>”ª„>”¸j>”Û=>”È7>’äd>Œ’t>3:>• -a>•€Æ>“D>‹—`>£>’7¹>‰mž>Í·>”ʃ>•†>•…>•´>•¯>“[´>‹·x>¯œ>”{¾>”Kk>”@ù>“Šf>“Xz>“HÕ>“Ð4>“òo>“e >“Ü‚>“ñõ>“Ø>“±M>“K>“2,>’ o>’Â>’Õ€>’ˆ™>’%í>’>‘ú˜>‘¯â>‘5.>‘Á>Üe>q(>å@>Žu1>&÷>0>8 >‹ªF>Œ}ü>‹Í—>‹Ã$>‹e_>Š¤Á>‰Ÿr>ˆw>‡zø>…ìZ>ƒÄi>ƒX>c„>|ËØ>qx>qšì>k<>b‰©>_~f>Uvw>F¯ >2ïZ>-Tû>>"¥>N[´>We>^"ö>iáL>n ö>nP^>wÑÔ>}Ô>€+1>€›V>û˜>»î>;¿>yáT>}âH>€Å>…*>ˆ=>ˆ·˜>‰/ý>‰—>‰Ü†>Š >ŠY¯>Š‹Ô>Šµ'>Š¤e>ŠÌ >ŠìW>ŠÖ9>Šý“>‹TE>‹AÞ>‹ ->‹\K>‹\i>‹Bö>‹a>‹rZ>ŠÀ°>Š`Ã>ŠûÀ>‹*Ó>Šò>Šú5>‹C%>‹?c>‹!">‹}>‹ -Ò>ŠØp>ŠÀ ->Š²Ù>Š¿¨>Š.»>Š ,>Šnn>Šj²>ŠS‘>Š8Ü>Š0>Š3`>Š%ÿ>ŠÜ>‰â">‰ Ü>‰³Æ>‰ŸÉ>‰q¢>‰bÂ>‰‡>‡E=>‡‰Î>ˆ@>…ÂÒ>‡]¶>ˆÀø>ˆ|>‡½1>…6n>xðÚ>‚¬B>‡$0>‚P%>zƒ>„ú>‡'í>…Oí>… Ì>‡*ò>†É±>† Þ>…Ú>…¾‘>„(D>‚'>„ñ>…Ž>„À>…°>…§¶>…µÈ>…]’>…->…3Å>„¦i>„\4>„K:>„OÙ>„Xz>„'[>ƒôM>ƒ½X>ƒŒ >ƒEí>‚«Þ>‚I¢>‚W@>‚F>´J>8º>€Á>€9õ>ŠK>~Åg>}*ï>{Jø>zØ%>y›—>x -ù>vQe>tdº>r®>o„'>lÅÖ>i\*>eÁn>at«>\¨Š>VÓÉ>P5>G¡v><³®>-®>¤Ý>ät>1=Ù>>ž>H…p>P*b>V[Ý>[k4>_–>cP>fEñ>h9Ä>jž>lèÉ>o%®>pé>rS>s•$>t‡>u} >v^Œ>v¥¿>vè?>wì}>xT">w_>nœ=>rþ×>xŒ>yê>z–>zéÝ>zûD>xÖn>mT,>rÆÿ>yö¨>y8>yäD>tV{>s%>x¼Á>zä¸>{!>{E>{'Õ>z#>tH_>uôù>y>w{þ>j:É>q”²>y6>ytV>z)>y¨ñ>v†Ð>v†Ž>x”>v@¶>rħ>uM†>wà>vãÁ>v">s_Ú>t;>v—>vô¸>wÊg>w¥è>w²ë>w¢—>w‚˜>wW½>w>9>w£>véf>vŸÂ>uho>uJÇ>v |>uç[>uÚÐ>uCû>rC>m‘Ú>oÒˆ>sQ”>tB+>s%>sþ>t0Ó>tAß>sù©>s±)>szº>r0Ó>r›„>ráè>rÓ>ráÎ>r»c>r|>rX½>r,÷>q»>qE¡>pÆ$>pÚE>q >pÝ‘>oëˆ>oº>o“Ç>paV>pG>oï{>oK—>oy>om>>oTð>nï>mè>m­>l>m¦ž>mìÁ>m‡+>m“>ms>m J>l3>l·í>lþà>l¡ž>j¬ƒ>g >fúÖ>g–2>fH¿>h¢{>j•>k;§>jôÞ>jyê>jy >j‘Ž>j|3>j&}>iÞ4>i¦ï>g¦>^}ú>_Ä“>gœ/>hg–>fÇ>fþ™>h>gª>ga>f¨s>eg«>b_{>d$Ø>fà">fÊš>fˆÇ>f5m>dæç>^-K>a.>eJ>e#>b•›>a7µ>cÿD>c½>c€>b¬Ë>c^>bŒ¬>bµ>aëª>a™h>aµL>avÿ>`ï~>`—ú>`Yz>_Ég>_qÜ>^ã3>^s°>]Þ:>]†<>]Æ>[ùº>ZÔò>Wµl>Y$>Y;ã>Xf·>W¡>V‹ë>UYÝ>TÎ>R >P·p>O þ>Má>JrÉ>Gõ²>Eª>AT>=ÎŽ>98@>3¤¾>,ÉŸ>$N>)6>#…>f½>äW>!ÿª>*š2>1Lq>6Ÿh>:ô¬>>”£>A’™>Dƒ>FÜ>H³i>JXd>K÷á>ML>N;Æ>O„->Pi >Q:\>QìU>R…©>S ·>SrŠ>S ‹>RÛ/>R•°>R¨M>PÓÙ>R+>TÙR>U Þ>O î>Kðì>TI‡>UWÌ>U«é>UÕ™>UÙà>UÞ™>UÔ>U-Û>S™Þ>TÀè>U¡¨>Uu!>Të2>U7X>Ugè>SÎ.>Q”Ù>To>UV>TÂâ>T1>T¢Þ>T•û>T #>P’Z>QðÎ>SÑ,>SÆ >S·Ð>S¯W>SŸû>Sm>S?Ë>S#>S>RÀ«>Rçï>Rpá>P{Ä>Q’É>RP”>Ræ>R¨>QÖþ>QÁÜ>QÀr>Q‚ø>Píæ>PÓ>Q)µ>P¶g>Pˆ“>PÃG>P¥ƒ>Pxù>P6ý>P%>PM>Oãk>OÈY>O¥Æ>OwZ>Oó>NŠ,>Në>Nï">NÇœ>N™K>M¨¯>Kýñ>M®ù>N ý>Mè*>M¢›>MN¢>MKÕ>MLq>MÊ>Lp¤>L ã>LŽz>Lˆ^>L8Ã>L0/>Ló>KÎû>KZþ>J8{>JêÜ>Khx>K;ã>JŒ¡>I—>J;¶>Jid>Jy·>J:Ô>J$¦>J ->IÃß>IQ•>HÔ>HÍB>E§>ESØ>H‘(>H ˜>H`u>Hyª>HI>HI >Hv>G¬Å>G¸\>G™³>G‰Å>G0è>Fùë>Fsz>F!º>F >F¬>Fƒ´>FaØ>FDÕ>Eþ>Dãô>D»­>E¦ñ>E†!>E\>EAy>Eq>Dê£>D§>C²>CTÉ>BDÿ><>6# ->9”ø>?=Ö>C87>Cmh>Aé>?!Ü>AŸp>BŽ˜>BÈ0>BhŽ>BU4>Ak>A)´>ACQ>A«Ç>AΟ>A–‚>?£>=ך>@}>?Ô>>š†>>å„>>Úò>?6D>>r>;ª€>>â©>?¥d>?*ž>>Ç>>×Æ>?ê>= />:š·>=Ïú>>§Ñ>>¸>=ä)>>`·>=ÆÞ>;·Ñ>=8>=°£>=¢y>=”÷>=4—>;SÏ>;–‚><Î=><*c>9ñŒ>4_">9iõ><2z>;êé>;ÏÕ>;UÔ>;†Q>8U£>6€V>:á>;$>:ÑÚ>:Ú ->:¦>:¡á>:v¶>:(¿>7EÌ>6>8ƒ>6I0>98¨>9‹‰>9eä>9)b>9”>8ôñ>8º|>8JÔ>82û>7| >2ŒØ>5ÕØ>7ãW>7Îý>7²">7-£>5>6/>4€Ã>&0Ý>$ôþ>0X=>&X»>( -Ý>1›$>5—&>4ÒX>54©>2ÑL>*É>2˜Ô>5 è>4ÙÝ>4Vž>4Ž¸>4»r>3·i>,Ç">''£>19 >3ì{>3î;>3µì>3=ˆ>2Ž$>1†8>-:>.ç’>,lú>1 >2å>1ìT>2@>1Ot>1md>1Á4>1²?>1ož>1Zr>0èZ>/µ>+6_>.î”>0—ã>0:+>/­ü>/êl>/Ï>/¶þ>/Ð>,nö>'H8>-£L>.ç‰>.E>,K`>-:Ó>&Õö>(ù§>-UÊ>-¡>->-|>,@é>)•Ÿ>+«>,AÐ>, ->>+Éo>+*>+'Ù>)¸œ>(Ü>(¢¬> Ì>$´?>(Ã:>(•t>( >&éÃ>$N¥>#Ôz>%¤>$ÓY>#þ.>#=>"|˜>!v×> Ea>éˆ>z/>Ö>`7>>C½>ƒ´>)g> ´>-Z=ÿÐð==Õhv=Ñ:r=ê4Ï=ûúµ>@¤>b> - E>¡Õ>Xê>‹ý>ñb>¼k>^=>G1>o˜>V†>%ì>·u>ð>&¬> ,‚> Üè>!CÔ>!šÂ>!âˆ>"ì>"KV>"iý>"—E>"ºñ>"gõ>!Î&>ôC> ß»>"ú6>#«>#Ò>#õ>"ú.># q>"ýp>"Ù…>"è¤>"¥%>"Ô>"Ù‚>"²‹>"oY>"h">"”—>"Šh>"x>"Yu>"<<>"8Å>"%»>" ò>!Ó">!˜«>!¿ >!ª‡>!M>!S‰>!K}>!Dª>!5Ÿ>!å> Õà> Ì > ²_> ¢Ô> …f>ÿ > #ÿ>_µ>1M>äi>J>à`>r>… >>‹±>Ð¥>ÿÓ>ñ½>Ø$>©$>—O>‹Š>vg>g}>Eh>,p>>À_>•3>ôP>­Ñ>±ú>.‡>=m>Ýé>˜>Õ>}ì>´º>˜Ÿ>J!>Ob>ù>î>ù·>ÔE>™Î>§O>G>T+>D">;Ñ>>å>Ï>†®>›u>ýÒ>>åÊ>Ð>ÝÊ>ñ«>ÝÇ>¿õ>¡<>ƒæ>N˜>´> -ÑG>Ý`>±”>äÔ>Ѫ>öh>¢>ˆ>\Ô>µ<>›l>²®>ÄI>.>\>Eó>÷q>(>Ï>}B>p;>½´>÷>)­>tá>QÁ>¼U>î>¡T>èÊ>—¡>pf>!Ì>Ý<>üó>‘ä>ÿþ>Û­>dÜ>±9>>gÖ>È1>u¿>sK> ‚]> U>Iã>¼!>…‹>Ú•>6¶>Å>êZ>Óº>Éò>éA>ª#> ƒ>#—> ø> ÷>`N>²>Á>ó>Ø->ºv>™¸>Ä>]È>,>&¬>ÿ‹>éº>¦‹>ð>|>‡Ø>d >Cª>*>É<>ɲ>Ï¥>Áq>¡Û>ñ>èÏ>Þ>¶>>÷>ß)>¼x>Ÿ> »>SD>\‚>@`>)ã> òØ> J> Lç> ³¶> Žï> *ç> G> >p> .â> > þ5> ®W> Ö> J¬> ü > -îz> ¸…> é«> -46> -ë> -ç1> »¥> e³> -ÝL> -Fh>›> -&> -ÓÀ>Ü>t0> -¬ž> -›ê> ‡> Ã'> -Hm>àr>eP>PÒ>Ãê>¸u=úÄ2>qƒ> Š„>›ë>_‡>œ‹>¾í> ©>ý1>å³>¸>9>¥>D²>Fª>Ôè>> >ûâ>Ýx>±d>‘ƒ>‰†>kâ>M,>,>S>úª>»˜>ªW>†§>ˆâ>n=û<ƒ>Dm=éy=ÿQŠ>½ø>Ýe>Ь>©j>Rþ>šÞ>,Ù>è(>a§>¤á>Ôä>¾ë>°ì>¸.>yw>f…>H>Fÿ>#>1ù>¡>¥)>5">#g>Q¥=ý4¥> >:`>Èv=ú¶v=ÿ>Óþ>«1=ý> -z>{Â>a–>’=üÖ>ÓP>>ñ>Õ¥>8ì=úuU=û’=ýˆó>ú¿=ÿ“”=ô;(=ñUJ=ýÓz>Ï‚>ú>¬>“Ÿ>y®>`>IK>0Ý>3=ÿù=ÿÈß=ÿ›0=ÿe»=ÿ-½=ÿè=þÎ=þŒH=ú&R?8!¤?9ûM?;ú ?>Sñ?@ö?BQp?A ?>6Î?ºƒ?@Ôš?A+I?@Hp??ÐV?A%Ÿ?DˆÙ?HÆ?K–?Jöö?FÐä?Ab?=¡g?<Å9?=Ù?=bû?:ga?4ò?,Íò?)XÐ?,n?2ÿÅ?6î¤?5{?2\ÿ?1ÿ ?4Ü,?6³j?4_ÿ?/©?,~(?-Œž?1ŠÈ?5 ?5Ze?2û ?1`G?3_à?8|ñ?=çŠ?AQË?BPÃ?Aí?A«ç?B>?D\ˆ?E¬.?EQ?B° ?@@?>{?=º?:?4Ãy?.âK?*¬m?)lê?*éU?.j?3^À?8Öw?<̾?<æ?9<?5Ú?7¤?<G?@?@(û?="?8¸£?4É?1ÃÙ?0Õé?1U?2‚?2»1?3Å ?6?:!®??±?EnÞ?I)F?I°K?H@¦?FöÝ?EÿÆ?CÓ??™?:¼“?6êt?5Cl?6å?8aR?;;—?>T?AÐÍ?EÆ?GX?HE²?GÒ?F#B?CÕÚ?A€??YA?=h~?;›\?9ŒÓ?6—S?2Ì ?/š ?. ?,ã}?*j?&Ç?&öB?,Æ?5­?=0¥?@w9?@FÎ?>S-?;Ð ?:ã?:Û…?>3?B‹v?FZ$?I??KYa?LˆO?L¥Ë?Kñ©?JË?HÇ‚?D8?<ñ?2ü˜?)BÏ?"ªE? ž`?"¢i?'O?+ã÷?/÷Ñ?3n?6Š`?8!?8Ö”?7ôG?7ü·?9¼Q?;D?9Æ–?4¿Y?.Aý?(ǘ?&O:?'üA?,VÇ?/É7?0Ð?2-?6BN?éN?>ª;??o@?AØ®?EKT?H)ã?I®?I×ù?Gà¸?B¶È?;S?3”=?.-¡?*þ/?)O ?(?(”?*?-ÄÕ?22æ?4Ò?2©™?1ˆÃ?3×Ý?8¢¸?<ù??A?>܉?=FÏ?ê*?A‡›?Aß+?@úÀ?@ù?A;U?B[¯?Ck¢?D^7?D^Ë?BQY?>ì?Êh?:‡ˆ?7ÿ?6Éž?:W†?? ?BFÇ?C™Â?Dó?G-?HÍn?H´?EÀæ?Daæ?DÑÕ?E±g?F5_?FûÕ?GþŠ?G¦„?D·?@~?>\??fc?A)ˆ?@3 ?<Šþ?9½*?:rt?=Í)?A^?C”I?CÏ?B ±??R@?=?;¹Ç?:ôu?;u³?=ùi?AZá?CÇJ?Dê–?E07?D1ÿ?A!î?;Él?5+I?/ßè?.À»?2G¿?7Ë?;ëÐ?=–Ÿ?=Ãç?=š?;ÝŸ?;¦ö?=1Î??Ve?ACÙ?C>¾?Dþ?AÉ?:f½?4§?2!N?4ñ??8Âw?: 6?8·þ?70E?6Ø{?7Vk?8¹e?;—??g?BC?B ?>3Ä?7…Ø?/Åó?)ÓB?)c“?/K?6Oå?:ˆº?;}?:©¸?<{€?@Ž«?D^o?E‘?CwJ?>•ù?7Ý?0Uj?)µå?'!(?+A?4‡ì?=¥?Btœ?B_~?>þ?:;¤?5 ?03ó?-Â?/¼?1Kf?0§?-¥£?,šz?/ß?6aØ?=þÙ?D2?F|?C¬R?È?@§C?Bš??å?;ì?5ó¼?2{?1£ó?4lá?:wš?A16?EÏ>?Gn?FöZ?EÍ9?DJ?9žÎ?9Š?9²?9õ?9/?9"?;z§?@í?Dù9?HE³?H­z?EÔ¿?A e?=…C?>!?AìÍ?E?E~a?D>?Bá”?A`?>P'?9 ?3Vp?/šb?..ê?.<0?/Þ?3Tâ?7Ä_?+ -?Až¿?A˜=??V6?<šW?:f?7®?5S®?45$?5È?9«?=‚Ý?>]O?Q??ÛF?@Qª?@Õ?A"Ö?@WÀ?>•Ð?<?8g?2Ù?-×r?+‹Ú?-ûr?4®è?<E¥?@`b?@Žl?@æY?A’?AR¥??©?=¸´?<ä°?=o„?>œz??9Ÿ?>?’?;Ô;?9ƒ]?8‰=?8f0?8*…?8<”?9·¥?<­V??é9?B?Bˆí?Ar–??gs?=X­?<*?;Ðè?; ?8ñ?5qX?2*Ð?11B?3á&?9G5?>Œ.?Aˆ¡?B&W?A‘n?@Üw?@|Â?@bŠ?@3??[*?>Ìe??fŠ?AˆÊ?D†º?Fôs?GªC?Fž³?Dô,?D>)?E!M?F­7?GšÉ?G¸—?G†?GIù?Gî?G;þ?Gù!?I­?I¯?II?F¿µ?Cü'?AçÑ?@Ëx?@Om?@I"?A?BÁ.?DÿV?GM?H‰?Iîã?JH§?HC"?Cm?=q?8ïK?7lÏ?86?9+ð?8Þ¢?7t„?5Ø>?4ËÓ?4«ZT?>)?=$ˆ?%Ö??MQ?@¸Ì?B-I?Cs2?D!Ü?CÑ?BˆM?@fï?=s¬?: å?7bS?5ú?5þh?7'L?8ú‹?:}y?:Ê?8ÿf?6æ?5kÌ?4´œ?41–?3íG?4è?7¦?:Ù‚?<9´?:ª˜?7S[?4¥ª?4Uö?6"–?8¤º?:Õ–?4?@ÍÃ?Ae?Ayz?BÕÙ?EÇ?GûÚ?G¥å?DDù?@_ÿ??sl?CRg?J¿ž?QÄÉ?Tˆ?Oxü?E|«?9ù.?1&4?-åç?12¢?9•Ð?Bø`?H??Fn¿?>Œ‚?5è?/?1÷”?<@?Knª?[—-?i«?p¿U?p•*?g^g?VSJ?A¼F?0ñ?'§?,-G?;ÈŸ?P -£?a®ö?mF?t=?x‹’?zø ?y´?o¶ú?]÷)?FåÑ?0G’?íÝ?Ù"?b×?/ N?E‡?^&ê?tn:?‚5?†;^?†ì?…h?‚Ab?{?nž?_]!?MuL?9¼9?'ç?]?×{?$*5?9rî?S:3?lAµ?€aü?‡4ä?Š&ò?‰»\?‡¨“?†è?†@˜?‡ët?Š8ç?Œ–?ŒOÐ?ŠÆ?†rÆ?€p?oG?Z¶³?DÓý?1a?$¶@?$J¸?/¬A?BhÍ?WHÇ?kfP?~¨?ˆò?’jG?›'?¢Wë?¨!B?¬ƒ5?¯xã?±Ù?±™z?°w@?­JU?¨v^?£Ï?žŒ?›„D?™ŒY?—ŠÑ?”n£?R?‡’ž?z±?cj?IóÚ?2Ze?!;?°Ù?$??8})?S\Ý?nÅê?ƒˆ¼?g?”¥…?™ai?œû?¡tÏ?§Ñ½?¯ã?·š?»—_?»Ac?¶»?°Ä?¬„µ?¬"O?¯á‹?¶ &?»®Ž?¾z?¼H4?¸JŠ?´’ñ?±ì¢?¯’?ªXM?¤)?âó?˜â¥?”•O??Šçš?… E?{by?gËü?O×e?6û–?"º?ž?µÝ? ›œ?2¬D?G’?[li?p0t?‚Ãø?5 ?–8?ž"8?¤:5?©¾Þ?¯7?´@é?¸ä?ºèa?¾ ?ÂMó?Ç+K?Ë¡?Ì* ?Ê…Ò?Çð>?ÆX?Æ$û?Ɔæ?Ç2–?É$O?Ìè^?ÑE7?Ôhù?ÕvX?ÔÖ?ÓÌŒ?Ó©ó?Ô×o?Ö“+?×s0?ÕÜ?ÐÚp?É„›?ÂÔ+?¿d?¿X7?ÀÌ?¾>â?¸Sj?°pÎ?ª%K?§h?¥ÒY?£A^?”‰?•"?Š“*?}Š?c…Â?HgÊ?0¿? O¹?[Š?'þ=?<Ì|?U¤Ó?lñ?€n?‡îÝ?ŽÎ?”ç ?™ì1?Ô$?¡j?¥Ôó?«,Æ?°Eß?³ÜÔ?µÐ?¶yœ?¸ˆ+?¼æ6?Ãrm?ËBÒ?ÒÊ?ØD‡?Ú‰¥?Ùn×?Ö/ ?Ó%?Ñãî?Òi?ÒRÖ?Ò?Ñ„ä?Ñ¡§?Ó6¤?Öö?ÙWÃ?Ü?ÝrÂ?ܸþ?ÙŽÚ?ÓÚ+?Ë¿?Á@Ê?³€Å?¡A0?Š =?^â?-Gœ?oŽ?~M?6dí?lù‘?’Aƒ?©Fœ?º€}?Æ}Þ?Í•?Ð%ö?Ï®;?Λ©?ÎÄä?Ïþ·?ГÀ?Ï[a?̲à?ÉÉT?Ç‚ö?Æ?Å}G?Åg‘?Åá?Ã?¿Cš?º|ø?¶«+?´®¸?³%?¯£U?©C?¡f?˜g"?.¾?„4P?l/Ñ?I]ì?#Ü"?ר>äjp>æÐÅ?! ? ™?>ÏL?[í÷?uï5?†1ù?\?™Ú?¡×?¨èƒ?®Å(?²ìÕ?µò¦?¸Î?¼"¥?¿åø?ÃŒ?ƾe?ÉàÓ?͆3?Ñ•?Õˆ?Ùd?ÝRI?àÖ ?âƒf?áMa?ÝÅQ?Ùúë?ؘi?ÚöŒ?ßÉÛ?äŽl?ç‘j?è^‹?æÔ ?ã ?ß#§?ÝÚ?àºÖ?ædÿ?ëßå?îÿp?ï’??í—D?í/£?íÀ’?ï‡?ðea?ò¡?ôY?÷ -?ø”ƒ?÷#`?òo?í¶ù?ëîµ?ìFh?íÔc?ðs3?òŒñ?ñߟ?íÁ™?è ?ãWÈ?á6Í?áÌÓ?䬸?éÁ?îSû?ó€½?÷¼‘?úd?ûd?ú ?ø¶A?÷s)?õ ß?ðJç?êlû?æî£?è7?ì½½?ñÜù?õ?õ•î?ó»½?ïè«?ëjÎ?çãO?æ+?åËq?åÝ ?æ’F?è³¾?ëÄa?ímº?ëau?æLY?á°Õ?à2A?á$?âN¨?âè?ãž±?ä>?ãC?à_Ï?Ýe ?Üz?ÛÍÛ?ÚrQ?Öœ?ϵ‚?ÊX/?ÈÞq?Ë»>?Њæ?ÓÛÔ?ÓÞ–?Ðòs?Ì™,?È­0?ÆSk?Å>„?Ä`É?ÂÑy?À ?¼ ?·?±jî?«F?¤[{?œç?”-4?‰ú)?}ý?cÄ?IÀc?4%?)Ûß?/&‰?BqV?\üQ?w7ž?†™ã?uˆ?–àŸ?¡L?¤I`?ªìÎ?±V¢?·S?¼ž2?ÀÐã?ÿ?Äúì?Å°Õ?Æ["?Ç~P?ÉhO?ˤÀ?Íšh?ÏmX?Ñ0%?Òý?ÑŸ>?Ї?Ð2?Ð[?ÏõÈ?Ï’b?ÏÚ?Ñà/?Ö)?ÛS'?à^©?ä‰È?è&?êËò?ì’?êÓ??æÔ½?á–F?Þ?ÞN¡?áh?ä®ó?æg?å\”?äRk?ä ó?ä&Í?ãh„?á%?Ýô¢?Û—y?Úá ?ÛïA?Þ#F?àLV?á…é?áë?¢ù?*JH??ƒ%?Y.ô?qt ?ƒñ?‹þ®?“C?˜×?šŽ?š¯¦?œó?Ìú?ÌD?Ì“t?ÌLæ?Êç}?É ÷?Ç«(?ÆôÍ?Ç(ü?ÇÁ·?Ǹ?ÆC?Ä5V?à &?Ã+º?ÃÃ?Ãù?Àƒ*?¾ÈË?Àxã?ÅzØ?Êâ?͹Ù?Í­Y?Ì@Å?Êñ8?ÊF?Ê&Ö?ÊXç?Éò"?Çy?šI?½ Í?¹ô%?ºî&?½æ?¿!?½C¹?»>?»e?½×¸?ÁYA?ÄÒb?Ç”Õ?Ȳà?ÇRÇ?Ä -?ÂØ?Ãh‰?Æ#¯?Ég?ÊBÏ?Èõ&?Æb?æt?Ã3?Ä—Ä?ÆE×?Ƽì?Æ"M?Å9F?Ã÷÷?ÁëH?¾Ù7?»E¡?¸Í˜?¹•?»B?¾}?¾ÔÊ?¾ƒ?¾Ë?¾g?¾ô8?À„?Â<Ñ?ß;?Ä€7?ÄÝJ?ÄÇí?ÄV?Ä3A?Ãò¸?Ãæþ?Ãû$?Ä R?Ä^‘?Ä¥?Å+?ÅNº?Å@«?Ä̱?Äs?Ã¥²?Ã5?›?ÀK—?¾d2?¼þ´?¼¼Á?½Þü?ÀR?ÂnD?ÃÆœ?ö=? ?Àó¨?¿ ˆ?½¿?½¾?¾Äû?¿iÊ?¾ú?¾H?½¬å?¾ -Ì?¾äB?¿Î'?À˜f?ÁJf?Á¹?Á¥n?Àä•?¿a?½”K?¼Fæ?¼ 6?¼æ£?¾nÖ?¿£B?¿—?¾…j?½0g?¼*¡?¼,á?½Mh?¾Û§?À7V?ÀšÍ?¿É0?¾ ”?»Ø?¹.5?¶Ã?µ:…?´ìÍ?¶?¸(ý?º>`?¼;‰?¾¨?¿!û?¿,?¾)?¼ë¯?¼ñ?¼û?¼éM?½Ö?¾ ?½» ?½˜â?½Ø»?¾P?½Öö?½?¼1“?»ñÂ?¼+ñ?¼_ž?¼OÔ?»åE?»+•?ºD?¹j?·Xß?µ˜N?´úÉ?µ¹?¶æ5?·jì?·R?¶³ ?·6Û?¸eË?¹G›?¹;¡?¸¦¦?¸H?·ÜZ?·S®?¸:?¹Ñ¿?ºŒ?ºÿ=?»t÷?»¨X?»qï?º´Á?¹aÍ?·¾?¶K?´¥·?´(l?´ý ?¶T&?¶Î‰?¶(?µQø?µK?¶P¡?·³2?¸Ì?¸¾¾?¸•¶?¸6?·œw?¶ùî?¶£?¶ƒ!?¶RÒ?µôÀ?µRB?´YÂ?³\ ?²Ø$?³ -C?³¡È?³ç?³?N?±Ç?¯8?­XP?¬‡€?¬øÆ?®8õ?¯‰:?°Ht?°#j?¯k|?®ì™?¯+;?°¶?°ô¼?±=÷?°¹k?¯Ñª?®ÜÆ?®*A?­úì?®nv?®ùÍ?®Ýû?®M2?­ÑÖ?­¥E?­Ú?®MR?®ß^?¯±?° ?°-„?¯¶B?®Ã@?­‘²?¬§§?¬K`?¬'f?«›?ªo+?©=š?¨ßS?©iµ?ª,h?ª›?”ök?•$?•9_?•Ê_?–ã?—êî?˜?—IÊ?—"?˜½X?›Ù.?ŸD”?¡Ö?£ Q?¢ôb?¢¿?¡i? ˜¹? ¥.?¡_Z?¢r[?£u÷?¤"”?£Ø>?¢sg? óŽ? “É?¡¼Ì?£Ó¶?¥w4?¥b?£b£? $Z?’?›‹?›2@?›+?›¾‡?ªñ? ÉO?¤ ?¦E?¦ÔI?¥Óq?£Ÿ?¡DG?ŸÜ/?ŸÁP? z?¡3»?¡§³?¢Zà?£Þr?¥Èw?§+?§Ff?¦À¸?¦TL?¦^g?¦¤Ó?¦¸Ø?¦qö?¦ ý?¥™Ò?¤bK?¡ÍB?Ÿ>?ž(»?Ÿµø?¢ñ¾?¥ÍŒ?¦ñ«?¦ª?¥±c?¤‹x?£•Z?£,%?£`;?£æP?¤Š¼?¥Q{?¥ÿç?¦WQ?¦Fv?¥­Ž?¤U?¢?Ÿ v?›Éû?™Œ¾?™q?›Š?žÅ?¡…S?¢‰?¢K? ÿÈ? oh? ³?¡Š?¢x.?¢áo?¢.I? h$?ž.ë?œlß?›ºÛ?›nD?š·c?šŽ?š®È?œ‚è?ž6?ž3Í?*€?›Ïí?š¿z?™·¬?—ñ²?•£?”)¢?”¶”?—Re?š®ÿ?Jg?žš?žÇ½?žk[?ÿò?¨Ë?¹“?ž=¿?ž?ž„ö?žB?1_?œ Ó?šwâ?˜_?–©†?–Íé?™'?œ „?Ÿ;˜?Ÿ©¶?ždÇ?œˆ2?šÍj?™Ò?šH?›«?œ"?œËÙ?À5?ŸS? ? Ž×? Sd?ŸV·?âÅ?œ~s?›žÈ?›Ê?›Èã?›¼#?›H`?šÄ‘?š]:?šL?š¤?šÀ ?šý?˜ÐÄ?—ñ%?—ó?˜õf?šM?›-M?›ƒe?›®?›ïH?œ[b?œßû?5u?Qì?œþ?›ËÚ?™Û¿?˜ -Ø?—:b?—µ‚?™-¿?šï!?œ4]?œaò?›¯?šÒº?š(…?™¾Ä?™Ü5?šç?›Œ?œ>¥?œ¯L?œÕ?œ©þ?œ@?›+?šqô?™ ?—Ád?–Ùí?– ?–gã?–+ä?– 5?–5?–h?–—ê?–ѧ?–Ä$?–Ñ?”©b?“›B?“k_?”>?•L÷?–:p?–¥+?–‚?–²ø?–²î?–ÙŒ?–Ì‹?–ö?•/)?•v?•á ?—Gw?˜T?˜Pm?—R„?–Jh?•Œí?”)??‘g?Œ+ç?‡»H?…ÿÛ?†Ë?ˆž¯?Šã¦?ôC?‘ç†?•³â?—åß?˜Xû?—ÀM?•§?‘Àv?á?Œ +?ŒyD?à–?Ž®n?Ž…]?Ž8ò?ŽlÇ?ŽÍ.?Žý?Žñã?Ž´û?ŽØH?ÓÂ?‘L8?’d3?’(Í?‹O?Ž®ç?hÎ?Œõ7?´¤?i†?‘|~?“$L?“g§?’‹ ?‘“G?‘:Ä?‘ý$?“ ©?• ?•¼¬?•þ?’‚ñ?Ž %?‰ã[?ˆ†@?Š=±?-¤?Ž§?³?‹×Å?‹ -,?‹÷þ?üú?Ó?‘p8?‘ÿF?’/?’Lû?’¾?’à7?’ÓÔ?’Q±?‘¨ð?‘E‹?‘{?¾É?v?‡³?‘+0?‘ÌÖ?‘g$?‡U?Œ…â?‰-‡?††Î?…Y¨?…aD?…qt?…1M?…;h?† Ð?‡“‰?ˆ»¤?ˆÕû?ˆ÷¼?ŠX?‹¿X?Œëþ?Œ­G?‹` ?ŠqÉ?Šß*?Œ•Þ?ŽÕ}?£p?‘tî?‘‰ô?‘T“?‘‰?˜¥?ê¢?Žþd?Ž'é?Ôß?ßÏ?ôê?Þª?2ƒ?‹àÅ?‹ÛD?¿?Ž -?Ž²?Žâ-?Ž`D?Œó ?Š—?ˆ‰Î?ˆa\?ŠEì?ŒÎÐ?Ž!\?y-?‹›¼?‰Šô?‡†í?…Ïo?…Pq?†i2?ˆ¶„?‹?‹,Ù?‹ãT?‹c)?Š~?ˆo?‡ ~?†­T?‡ÀU?‰UÖ?Šw7?ŠØY?Š„û?‰à ?‰) ?ˆ²?ˆMå?‡‹«?†·L?†0c?…ÿó?†Sr?†h}?…IÀ?ƒ£Ž?‚Ó]?ƒ#:?„ñ?„¼—?…å?…8?…PÙ?…C|?…]·?…ׯ?†s•?‡1?‡?„ƒÐ?‚©~?%š?€Óº?Ü;?ƒyÞ?„º5?…mË?…à?…'?„•³?„`}?„”º?„È«?„éÎ?„çó?„«|?„K}?„?ƒÞè?ƒ]h?ƒ(^?ƒž?‚Œ ?‚VÌ?‚ªL?‚ÙK?‚r²?‚ ‚?‚}?‚ïß?ƒØ?ƒPQ?ƒÇ…?„>?„”Û?„Åp?„›Ö?„,?ƒv“?ø?u¨?{@?yñÞ?|C?€ -¬?%R?.7?€Å??€© ?j¼?‚°›?ƒW¿?‚ý—?‚>Û?‘ ?XE?ƒ?ÙÏ?‚§?‚g\?‚qÞ?‚Î?¼¼?Â?”?Ý?ï?rз?sÆe?tqV?t˜?t¢±?t(á?sO%?r¼£?r ±?rƒ[?rZï?q´\?oø?nAq?mŸ?nj?nóî?oóÇ?qr¼?rKa?q­?q\Î?qÁ?qÝ4?qúƒ?rMS?r?ã?q\ã?qAË?q{î?q š?kC8?k¬Ï?l„?l,'?kÎv?kˆ?kšG?kq5?kø?jßš?kJ§?k̵?kg?kÿ?k’?jñ£?k -~?kg:?k_c?k¸?j?h{ª?g1?eÏR?d‹?c_T?cW²?cÈÎ?eL@?fÞ?fÏö?gr?h.Ò?h·Z?h€r?hK»?h“#?huE?gÓÛ?g ?fÝa?fç‚?f?eè?d¦ÿ?d)q?bƒ ?^åU?ZY|?VÛ ?VP¤?Xr,?Z)ú?Y#Ë?W—z?Xˆ'?\O?_Ùý?a¢¥?bZÒ?bcÐ?b” ?bhz?aþ+?a ?`â¾?`;L?_y?_~?`\{?_¸E?_DÞ?`u9?`_#?_ï?_n?`¿°?`(ƒ?_Q~?^ñ?^Î?^íþ?`5?`À°?`áÁ?`kÉ?^Ü{?\•†?\:Ï?\øÍ?\iƒ?[}L?Zõ¼?ZÚ©?[µ?\ÄN?]/D?\ûÁ?\q9?[Ž?[š?\ýP?]Â?]ÃN?]«Å?\És?[|¨?Zþu?[•Ÿ?\[=?\uË?[š°?Z•?Yö¯?Z/ù?ZTã?Yÿ?Yqè?Y Ê?Xž?X<°?X=?WúO?Xì?XŠ]?Xõ3?Y2à?Y“:?Yˆg?X×f?X v?Wê·?Wùé?W¨³?Wt?VГ?UÚn?UÉ?V›ð?V¶x?Uò ?UlL?Un¼?U)C?T¶1?THÍ?Sߪ?S¼þ?T?F?TÍÜ?U A?U³=?UÄQ?UãL?V+P?VŒ?V¦˜?VùÆ?V…o?U–¬?TŒ?S÷È?Sï™?T:˜?T½§?U -€?T©h?SþÎ?S…?S1V?SG?SÊF?T/_?Tæ%?U ª?Tƒ?Rà6?R5·?R,?RŠ¨?S‹?T†b?Ts?Sçå?T¢$?S˜K?QWä?Q"?Q@›?PŒ‹?PD?Q´D?RÑ.?Rj™?R+ð?RJá?RY9?Qî8?Q¡¥?Qˆû?Qb~?PË?Nz?LÓ?MdM?MºN?NYo?O— ?PÑV?P¤Ï?P0©?PSã?Oýd?Pt?Oœc?NŒé?MF×?L|?K’Â?Kï}?MÑY?O{O?OªÁ?NûÂ?N/?Lü?Kqz?Iw‡?G^+?F{7?F¦³?G/°?GýR?IÕ?I]“?Hôë?Hå—?I\Y?J+?J¥Á?IÓ?GG?H1[?H÷%?I %?I¥ü?I~M?H^­?G¼?Gs±?I5?I¤Ð?Hê±?Hû?G¬ö?FÉ?Eë0?E€"?E,?DÅë?D=?D\î?Eé=?Fg/?E”s?Da£?BúÇ?B$?Aó#?BÅw?C=@?B™m?A—Í?@û¬?Ap˜?BŠ?@º?>w¹?=¿Y?>h??M0?A?A'Ä?@Š?@ê?A¦?BY?BÃ?B€G?Bm?B×?C"?B³¾?B6?Aµó?A¡ ?>pš?>Ó?=8?<´ˆ?<õ?=M=?=k?ù“>âTZ>̵C>Àdä>Âi>ÓðD>ìÔN?g‘?…ƒ? [,?Às?Ú«?È—?Ðâ?j½?Ñ’? ¨d?!? ´|?!a¶?#&f?$ §?%K?%\G?&3?(}?)aÜ?(ï:?(˽?)=Å?)?(¢ð?)´?) ?)¼?)´(?*9C?*Rû?)š¦?)åì?*Ll?)ýò?*KŒ?+6®?+6¾?*”¡?*°?)·t?)[?)?)Óg?)Ãé?)?)Ì*?*0j?)œ ?)¤«?)âó?)õM?)ÊT?)œ?)­¶?):Ç?)4‰?)@è?)É?)<Á?(³Ú?'¸˜?'iÂ?'³ì?(¢?(Ÿo?)h?(Ïê?(~?'—i?&¯×?&d[?&[Ÿ?&IÏ?&Œ%?&õÿ?'^?'jo?'#ð?'›ý?'ÁÜ?'?1?&á¥?'É?&hn?%wÑ?%Oè?%;|?%·b?&R?&Z?%ª?%vj?%\Ù?%?ê?$£?#œø?"q?!éa?"`?#0j?#Ò8?#ég?#þ?#©¹?#9#?"ÿÃ?"¬Ö?!õ]?"¾I?#xš?#G?"`(? ö¬? Ÿ? §V? g{? ¬g?!@Ø?!{ˆ?! f? É(?t?¶ª? }¡? û„?!Ø?!æ? ƒW? Œí? Ô¦? —|? vB? N*?åï?í? 9´? ²?Ç}?·?Ü™? ß? 2;? _? 0š? R? ‘1? ¶9? M? -³?îB?£¬?ÃÛ? Î? -¼?  ?©?öD?HD?&š?ò?-‡??V±?óË?‡+?’X? t…? FÿÝo>þfð>ý!Ð>þSø?‡>ÿz>ÿË>ÿ5>ÿLÇ>ÿ…q>þ¶o>ýܶ>ÿ‹@?™C?V‡?"·?‹é?ðƒ?æB?Ò•?o»?½>þ£†>üÚ8>ü· >ýÀ>þ–ò>þUó>ÿŠy?j÷?='>þ*>ý\O>üL¯>û7>û–_>ü§©>üzÕ>ýád>ÿZû>ÿ¦7>þ¨à>üÊ®>ý>ýXh>þ¬3>ÿ’ÿ>þ›„>þž›>ýÉ[>û\¸>ú>ù÷>øäö>ùéÑ>ûÛD>üÖº>ü´†>üL>úï^>ùpø>÷1>÷Q>ø£€>ùV¿>úv>úŒJ>ù·Ô>÷a­>÷I>øG >ù5ð>ù´¨>ù =>øS>ùØ>ù™ê>ú>ùßP>ùZ™>ù#>ù¶>øš­>ø³Ç>øϳ>øi>÷.€>õÖ3>÷ä>ö 5>ö >>öÞ|>öÃL>öÜe>õÓ>õžß>ö„ >õ¨ê>õ–>õØñ>öp>õ¼C>ôû¨>ó‡B>òôÂ>óä4>ôþŠ>õ ú>ôÐ>ôhK>ôÉ>ô ÿ>óÛì>òßD>òœµ>ó&¬>ó<>ó/;>ò·>ò˜²>òŒL>ðØb>íêÝ>íôr>ïb>ðѪ>ñuh>ñuv>ñc>ñA>ñ$€>ð÷Ð>ð¹L>ðŸ§>ðs >ïãÍ>ïð*>ð¼>ïçó>ïËè>︤>ï>îÛÇ>íç>ë-Õ>è–Ð>çÊõ>èüž>èRt>åÄ>éÁ.>í*>ìΆ>í_o>íg>íH€>íO6>ë¹>éÓN>ëÀý>ëÚ÷>ê·p>ëg¶>ëÃó>ë¶ >ë¶*>ëÉ8>êŽX>èB€>èŸÙ>ë9#>ë¤->ëtÐ>ëA#>éô]>æÄ>åL>è—¿>é¶L>é–9>èåÌ>çí>æÿG>æïŽ>æ¶>åö€>ç¼±>è=Ý>è>è -g>èçÜ>æž>å@Ó>åd>ä•s>ã§p>äaÍ>æL>泸>æ€Á>æ„#>æß>æŠ&>æðú>æ}>åÛH>äx>àÁP>زœ>Ònv>Ñþ>ÖVÂ>ÝY>âfú>ãu'>ãVï>äé>äNf>ãæì>ä#„>äå‡>ä6K>ãQ>ãïš>âñ/>â–f>áÚ¦>ãlt>ãd >âG÷>ã>2>ã«z>äC >ãþÌ>ãI(>ã–£>â¥B>â§3>ãÕÅ>ã3Ã>áF>àì?>áFþ>ßàÎ>Þ˜r>ß(¡>ßy¥>á²(>áÛ´>á_}>áÞ>áÉ>â08>áèy>ád>á/>à2Ü>ß¡?>Þæ°>ݹÉ>Ý%ô>ÝÀ0>ß×Ä>àPX>ÞäÂ>Þ3‰>Ýwý>Ý.Ó>ÝÂ6>Ýõl>ßX >Þ„€>Ü×/>ÜxÐ>ÜÛ>Û¸T>×—>ÓJÌ>Ö¥¾>ÚÙ>Ú—‰>Ûqç>ÝÉü>ÜÜœ>Ø™C>×ú³>Úè+>Ûʧ>Ú¹£>ÚS >ÚÜØ>Û}4>Üô>ÜNÅ>ÝÔI>ØŸš>Ø)>Ù>ØG´>Ùh0>Ú¨Q>Ùí>ײ€>Øg>×TL>×põ>Ùq†>Ù]ä>ÚÐ>Ü0ƒ>Û|5>Ù©m>Ö·É>ÒýÅ>Òal>ÖϹ>×ë>ÕyX>ÖúC>Ö¼y>פ¶>Øõ(>Ú >Ù4>Ù>ØP>×>×î>××>×üÆ>Øø[>×rl>ÔG$>Ñä‚>Ñs/>ÕM†>×õ>Õ¹Â>Ñ9Ì>ÓãÒ>Ô»W>ÐhÍ>Ñí®>Ô[|>Õù>Ôá}>Ò«>Ð`Á>ÑY>ÐT>ÐÜ>Ò~Ô>Ñù>Ñ(>ÑÀù>Ó¹p>Ôn>ÑF@>·c>Îk">ÐI\>ЉŽ>Ñtœ>ÑqZ>Ðß/>Ñpý>ÐÔe>ÐÚÚ>ÑPÑ>Ñi#>Ñ L>Ðe‰>Ï4º>ÏòÔ>Ð…>Ïýô>Ð2„>϶Ö>ÏÒK>ÎÛ¥>ÌÊ•>ÎÍh>ÏõË>Ïo|>β„>Î|2>ÍðJ>Ìù¬>Íá>Îß¾>Îü†>ÎïZ>ÎÏ6>Π×>Î'>Îhx>Î >Î -t>Î>Ά>Ííà>ÍÕ>Í®¦>͘Ö>Í‚f>ÍD‡>Í„>Í"6>Íd>Ì®3>Ì>Ì‹>Ì…‡>Ìvã>Ì'‰>ËÉ(>Ëâ>ËÚ0>˹á>Ë’>Ë>•>Ê{>ʸ2>Ë >Ë Ë>ÊðÁ>ÊÂÄ>Êš„>ÊŸ„>ʃ>Êž>É/5>Äp>>ÿg>ÇK`>È à>É1²>ÈÚü>ú´>Âa&>ÆÍ*>Åß…>à 0>ÅŒ>ÈP>ÇÎe>Ç]é>Æö+>Ƨ>ÄÔÌ>Ä”€>Å»>Áã©>ÃL•>Æ$œ>ÇIg>Ƙ>ãi>•V>Â8>Ä:>Æ;â>ÆtG>Åâ>Åuf>Åï>>ü>¾ë—>ÂF~>ÄnÊ>Ã8·>Ä >ÅÂ>Å]>Ň>ÅIÌ>Åj9>ÅD >Å(Í>Å>Äš.>Ä¥Î>Ä”:>ÄU²>Äb&>Ä3">Ä$ó>Ãê¹>Ãe]>ÃÃ6>ÃR:>Ã6¿>Ãj">ì>Ã-í>¨ë>Â4o>Áw>Á'…>Á£˜>Â2~>Â'á>Âp>ÂË>Âl>ÁG>À ;>¿6à>¾ Ý>½Ì>ºíì>¹¸Ü>¹ÎŠ>»ê->¾\@>¿¢Ò>¿¥š>¿¦>¾vè>¾üû>¿ƒ#>¿³“>¿S>¾Ë->¾´°>¿dy>¿|Ò>¾àn>¿!ê>¿.j>¿$>¾ör>¾ûL>¾º@>¾ž‚>¾aN>¾Þ>¼Ÿ)>»q>»Ðo>¼d>¼Dä>»}%>¼}Ø>½‘'>½ÄK>½{¤>¼5S>»¡>ºÕ\>¹³ >ºœŸ>º°°>º >º8Ï>»?®>¼É§>½Ö>¼®Š>¼Ç>»r'>» >º®2>¹'b>·Wù>·U>·Z>´¨…>±<>°/~>²€„>¶’ë>º«“>»þ>»\Œ>ºn_>¸§‹>·:>µK«>³ßf>³œ¬>´Eï>¶gá>¸»a>º'Ø>» f>»už>»ž9>»°k>»åM>ºæÙ>ºì>¸Pš>³çz>¬5 >¦Ä>£ >¥Cª>ª½/>¯Ž>±«¤>³ P>´m;>´õB>·CÀ>¸ÕC>¹U!>º)C>º=ú>¹gï>¹IG>¸ó$>·À>¶gË>³Hý>­> WÑ>“Ž>ŒÀ>B>˜Ò>¤1->« „>°;>>²+¬>³XÕ>µMÚ>¶ä&>¸/ë>¹ ÷>¹˜ê>¹æ”>¹¤ª>¸£Ñ>¸Lõ>·ñø>·æù>·ä²>¶²q>´w_>³!>±âø>°!>­(Ÿ>¨Ý3>¤»P>¡Á?>¡›>¤O>¨“>¬‹'>¯,>°¼¯>² >³9Á>´zm>µüz>·x>·ÊÝ>¸¦>¸¿H>¸¿(>¸.¢>¸4Û>¸=>¸M˜>·âd>·Êî>·jˆ>¶P‹>´[¶>³q>±óm>°à>®$ù>ª¦§>¢î!>—',>Œ´N>‡_Q>‰`,>’€>šÔ >¡Ð>¦YÍ>©hV>ª¢ >«rï>¬>­>®—>°Gx>±vÊ>²ˆ>³Hô>´’²>µéä>¶ŸÃ>¶éV>¶Ý¤>¶ØÜ>¶…Ø>¶"W>µì~>¶#Œ>¶æ>µÅ+>µÅ=>µFœ>´O¶>³O>±Ñ«>°ê>¯Eç>­Ô>¬=É>ª.2>§°j>¥ef>¡„¤>›ÿ`>•Ž%>­ >]û>’aê>˜k >Ÿ+Ê>£wç>¦™ô>©(>«=À>­8ï>®4>¯¤>¯ùô>°Ü¥>±àq>²Ž@>³T>³õU>³p<>²Q£>±³ß>±þ•>²‘>³üÎ>´è>´h>³mÿ>±På>¯¸ñ>¯RU>°»%>²¹ª>³€z>³DÁ>²½à>±E>¯oA>¯á>¯vÓ>¯Q?>¯Eë>®bˆ>­a„>¬[×>«Næ>ª]¼>¨þ->§h:>¥7>£±>¡;ó>÷S>š$³>•¡>Žq>‡ñ >„æ>ˆl>µ¡>”‹ý>™9R>›>>ž¤> ø>¢¨>¢Ãy>£cP>¥£ë>§˜”>¨qö>¨ö>¨{¿>©çõ>ªM>ª,Á>ªëa>«F>«‚Æ>«jæ>¨è>¤e¾>©Šõ>¬0>«‰÷>ªà«>ªîï>©`>¤+>¤§æ>ª¾[>¬'>«ÿ>¬ Â>«ú>«Á&>ªàN>©Y»>©Ï>©ön>ªª>ªí>>ª¾¬>ª„Ô>ª<3>©ì >©'S>§e†>§8Ä>§ÁT>§¨Ò>§>¥w™>¤å->¥W>¥IU>¤`>£§ >¢Ú>¡²‰> ®,>Ÿm·>} >š×>˜Ú>—×–>”ðX>‰c>Šö>„}>w,—>oÈØ>_ >‡»ã>ŒóÂ>‘b`>”Ýš>—_U>™`9>›%Ä>œ«>œ ~>ÎU>ŸPk> Q•> Æj>¡B÷>¡»r>¡´ç>¢fc>£-{>£Fø> L>“^_>–‡>¢¨Þ>¤w1>¤nÈ>¤Ä>¤…“>¢€3>›N>ž®î>¤D->¤Ý—>¡ÿ`>™>ž“> ¾°>–ÝP>øX>£g¬>¤Ÿ>¤N>£æ'>¤º>¢3@>™©Õ>ž÷>£—Î>£p>¢ý«>¢öÔ>¢Óß>¢›v>£ -´>£$Â>¢ãÀ>£0ƒ>£>£I>¢õZ>¢ÔÃ>¢4°>¡< >¡¾>¢^>¡Ìy>¡‚ >¡{Ó>¡_'>¡]> Xz> U> R>Ÿå}>ŸJÇ>ž ÷>)Ž>©^>$Ô>›–r>œ0>œGg>œ+ >›ËÖ>›$”>šY(>™],>˜Zò>—G/>•¯ö>”þö>“1ú>u>‰ßç>‹\Ø>‰->…‰>„`Ê>#>o•ª>Y7~>SëÍ>f¯E>w >Y>‚$9>ˆ³Š>Š‹>‰ñª>Ž2¬>‘>’ -¸>‘œu>ˆ>‘C>‘³t>ŽpÕ>ñ>×¥>•“>˜U²>˜©Ž>˜þ=>™V>™‰á>™º†>™Ú€>™õ>š Â>™¯>™àç>š Œ>š&>šC>š‰à>šM>šMg>šsZ>šc~>šD'>š{½>šŒß>™dø>™ ð>š^>š?x>š ñ>š6>šaÁ>šOº>š"œ>š5n>š.c>š>™»¹>™³H>™ÅÍ>˜¼Á>˜²>™ZÖ>™`¢>™<‘>™ -B>™ 6>™9k>™=§>™'ò>˜Ó>˜V>˜®ù>˜³w>˜l˜>˜h6>˜9m>–Ç>>–Ë™>—gH>•J¿>–~§>—Å«>—KŠ>–~>“7>‰FÊ>wh>•´þ>=>‰!s>‘ć>–Ó>“Ìï>“•[>–(5>•éÄ>”Ñm>”,õ>”ˆ>’nÀ>kÏ>“">” -K>’°1>“µ­>”š>”­É>”#–>“þŽ>”.ä>“Ø>“X9>“%]>“Hî>“gr>“8½>’þO>’È>’§¾>’e)>‘ïu>‘t>‘…‘>‘F²>í¹>x©>ýÕ>‘œ>;G>ŽÝ£>é‡>ŒËY>p>Œª”>‹ýM>‹@•>Šu‰>‰n6>ˆ\:>‡?°>…¿>„.>‚C›>€E3>{<_>tô=>l²>aAš>P†˜>= +>@ºÌ>TxÓ>c.>mt2>tßš>z> Ï>;û>‚ص>„à>„XÆ>…t>†—ƒ>‡â>ˆr¿>‰Ã>‰x>‰È@>Š4ë>ŠŸ^>Š–>>Šp°>‹ä>‹T^>Š˜i>…Âñ>‡æE>Š·þ>‹Ä&>Œ<Õ>ŒbS>ŒnI>‹6Ñ>„¶þ>‡«R>‹oO>ŠË>‹º ->‰ÎÙ>ˆ­>Šÿ¢>Œ ç>ŒB>Œv7>Œ^g>‹¹Ð>ˆli>‰S‚>‹–>Š‹>‚‰¶>†Øç>‹‚½>‹|”>‹ÑB>‹ç>‰ž>‰™>Š€>‰”ö>‡˜Ð>‰ æ>Š•O>‰ýV>‰Wò>ˆÐ>ˆ|Ý>‰ç>ŠA>Š—Ü>Šw³>Š‹Ï>ŠŽª>Š‹ú>Šrg>Šm>ŠZó>ŠB£>ŠÍ>‰„ã>‰u>‰Çâ>‰©C>‰¬—>‰A÷>‡i§>„ ‰>…µ·>ˆ&/>ˆ¼Š>ˆ7~>ˆõ>ˆÇf>ˆèf>ˆ¹ñ>ˆ‡>ˆbj>‡4>‡¯»>ˆÞ>ˆê>ˆ/ü>ˆ$N>ˆ ,>‡ôø>‡×>>‡uu>‡ÿ>†ÓJ>‡¹>‡BÒ>‡C>†\>† -I>† >†æv>†ãæ>†¼:>†m®>†Rì>†|w>†i¦>†è>…lv>…•á>…@>…rz>…œ‘>…Wý>…i>…`¬>…#/>„ÛÄ>…¯>…5‚>…¦>„v>‚?1>‚->‚o‘>dS>‚t¦>„‰>„Iÿ>„#V>ƒà$>ƒåo>ƒû‚>ƒí>ƒµ†>ƒ–>ƒos>‚ (>z&³>|O˜>‚il>‚º>€Ü°>¨>‚Šy>‚;Û>‚9>Èí>€³>~Ò¨>€->‚l>üÀ>Ùf>¸j> ->zç_>~>3> _>©>~9>€„Z>€xš>ó·>;Ž>õÿ>žŸ>~÷¯>~>~Q0>~½Ä>~lß>}ÃÑ>}‰&>}]ì>|¦->|]È>{Ó >{bi>z£¡>zkÀ>z1>x¦ >w¿Ü>té >v3V>vzÜ>uØ>u%>t(é>s -ÿ>qÝ»>pŽ„>nï÷>mc†>k¨í>hó3>fÓ[>djì>a>]ºö>Y_>SÒô>L¨_>Cç>5a¶>"ˆ -> ê>2»o>@Ĩ>J-“>Q=Ý>V•p>Z¼Ê>]ë`>`x–>cfh>eŒ¹>g"è>hzw>ißT>j ¼>k{¼>lÙ]>m¦ˆ>nfà>o>o€>oðº>pKe>pû>p>oæ&>oí2>n‡@>ol>qƒ<>q†å>jª>gÉ>p¶X>qÿ3>r2ó>rV¯>rIû>rT°>rCb>qs>n« >q Ó>rB>qÙ)>qS)>q‰r>qÔ‹>ors>ld?>p¤>q†<>q>:>p´ë>q­>q ¢>p,;>j¤>lÝæ>p9>>p:4>oÌ>oß·>oú„>o§5>o_¯>o>B>oIe>n·1>o>Ê>n’E>k7>m{>n Â>nˆ>nf>n7A>n">n&±>måË>lð_>lÊl>m†G>m(>>lø>m Å>m>lЫ>l˜º>l‚>lc–>l)Á>l+>kú™>kÊO>k\d>jÇE>k7G>k>‘>kI>jÛÿ>i;[>f^é>iS>jT>j*>iÃ>i7j>iS·>iÂ>i6þ>hqÒ>g¥>h™±>hÄÛ>hvi>haÔ>h;E>gúé>g|Ü>fª_>g5ÿ>g–¬>gPL>f@>cR¢>eÁl>f:þ>fˆ>f(V>f*z>f]>eè‡>ewÙ>dô>dÔ >_áþ>_Ú>dŒ‡>cßö>d':>d‚Ç>dTâ>dF ->c÷×>cÂ+>c¨q>cOP>c|¼>c/ò>bÌ’>aãÐ>aĪ>b– ->b Û>bmÈ>bO€>b9>a·¼>_Ðk>_¸à>a>aaN>a*E>a>`ìñ>`µ¬>`|¿>_Ø>^Z¡>]Æ‚>U­>M¨ >Rø>YIP>^ïý>_3á>\åÎ>Yë3>]Eî>^V>^“„>^+>^ m>]T>\Ñ8>]l>]m>]ƒL>]MÅ>[uG>Yî>\?©>[ÂÀ>Z9>ZLÇ>Zqú>Yðj>Y&&>W0K>Z|/>[<“>Z*ã>Yw«>ZÌ>Z‰%>Yí>V4Ç>YR>ZKz>YÙ>Y¦š>Yô>YB8>W®>X´S>YFõ>Y'>Yë>X®¼>V«=>V÷Æ>X8w>W \>Sy¥>L3,>SkŸ>Wšd>Wq¼>W=ï>V§´>VÙU>R)á>Oá>VS>VrÈ>Uì?>V#¾>V©>Uý|>U×õ>Ux‚>Q:¥>P:>RÅæ>P{2>T^Û>TÙ°>T´³>T~>TXB>T0¯>Sý[>S£9>S{¢>RIÈ>K(ì>PR>SX>Ró>RÜ>Rh—>PÕ¨>Qƒ7>N‰¦><È|>;¨Ö>HÁ>;¼>=‹Ý>I¦Õ>P<‹>O²Ú>PÜ>M"Ó>BÕ >Lô°>P)>OÛ/>NÏ>OQô>O¬a>N5>D T>>­(>Kl\>NÓø>NßÙ>N9>MÀ>L“9>KEð>EXî>HÎE>F¾g>Lo]>M²>L¼>LÇ ->KG>K¦«>L}Ì>L_>L9N>L>K,¦>H)š>Bþb>Hº‹>KF¿>JÈ7>IçÕ>JMm>J2§>JÎ>J¼>EÚ>=ˆA>G.T>IKŸ>GµÇ>D‹>Fèý>=É->@ÅÕ>G[¼>Fÿ&>G*>G&ã>F ¹>AµZ>Ef¡>F“u>Faw>FQ>Eѱ>En¡>C¯è>BR >Aä¾>5?&>B¼D>B¼ð>B#8>@aˆ>?s>>·÷>=Õ'>=,Å><ºD>;Ë=>:™À>9:³>7ï<>5±>.Ö>/Åb>/õº>-=?>)ÏÂ>% > ©>ÓU>—T=þ”²=ùŸð> Ü^>›7>Ûš>"©ë>#àÊ>(4˜>*mÜ>.q3>1?>/µ”>1`/>5Qî>6xÙ>7Gµ>6m‹>2w>3R>6rÐ>9£å>:–>:õÄ>;Ië>;‘ÿ>;Ë'>;ð><ã><9+><]k>;‹í>:‰§>5's>9g%><‰Ä><½c><ÅE><· ><€ ><¬–><“è>;õ¬>;ùj>;ú—><0™><Ã>;ï_>;îª>;ÞX>;Å·>;k²>;þ>;i\>;V~>;<ï>;Ö>:éA>:êC>:çJ>:ÇÛ>:‚D>:xc>:]p>:EŒ>:÷>8èk>9„B>9¥>8ŸØ>5ûÏ>6áa>6¡>8f|>9ø>8|p>6j»>8+»>8€Â>8…J>8R—>8´>8¼>8*>8 >7öÀ>7ÐÊ>7·€>7€Ê>7 >6ç©>5Ûÿ>1>16‡>6ª;>5õ>5»b>3õ…>5£f>6$o>64>5¢H>4HI>5Cð>5ú>5]>5:>5×>5 )>4íÝ>4¯‘>4¡»>4—>4Wž>4ü>4 >1™¢>+ÁZ>.ÿ>39¤>3#%>3cž>35ø>3:l>3 S>2þi>2Ú*>2½ð>2…O>-øö>$ 8>*Dj>/’\>.vä>-W>.ôÏ>-\>0•>/˜Ã>0u­>0Ы>0Ø9>0Ð>0Š˜>0no>0Dx>)»O>']+>.|>-ü>/1P>/¶R>.§ž>.þŠ>/vQ>/PŸ>-oÍ>+|_>.m>.Þý>.X>.`Í>-ñ×>(Í>+[6>-D>)ÿ>(š=>*½'>)7x>)ÅÒ>-3¾>,:3>(ÔÎ>&=>#4’>(ÅÀ>+ºÃ>*4t>'Äá>+Ž¥>+¯ >*Þº>+wè>+ˆö>+Žó>+¤B>+6ƒ>(ÿô>*e>'é>$[ß>&K9>*4r>*¯ª>* >*ƒŸ>*b‹>*9Ó>*!ø>)ó>)›U>)º=>)Œî>)rR>(ê1>(æ>)+4>)Œ>(æÙ>(¾ü>(¥¶>'òþ>($Á>(OÂ>(@ª>(p>'ë”>&Ï->&ÖK>&¶Á>'pþ>'X]>'H>'(ð>&Tç>%äì>&–o>&¿ˆ>&¢â>&Š4>&3f>$ãÈ>%€‘>& °>%ç>%¿>%˜>%‚c>%tÁ>%d.>%EÝ>$æK>#…g>$k>#Ÿ™>!P‚>#5H>$Æ>!òÂ>"® >"è>ÁZ>y>"§ã>"-—>Gm>!ñf>"ð²>PH>ŠÉ>"²_>"x> í> ÞP>"/û> §…>æì>ÌÈ>ò¹>•g>¢+>Ì>!sk>ÁÅ>m#>»º>:> ôÑ> åÅ> Ï-> Š¾>[º>j> Ð> |>0}>¸!>ðF>Ö>°å>„A>_>P¦>2¸>‡>ï=>ÃÇ>¾l>rs>_H>9™>-R>ä>žÀ>Ë>íÇ>5>&9>zß>u3>C‚>ž}>9ü>&>•>XÑ>–Ö>?`>dÀ>LÚ>G >û‹>Q.>+z>Ë’>z>¸j>¶k>±>7¨>/=>„>4 >ª°>‘ô>—>]^>Ä>.>¯>ô>Aj>Øû>´°>‘€>PØ>Åî>W¨>C>"ð>aÑ>`ó>­‘>1ý>Ƹ> q>v> DÛ>Z9>ó­>õP>ßÆ>ÅÅ>¨Ü>‹Ê>tŒ>Yß>>Â> I>Ü>íè>Ñ{>¶Q>›>|f>V«>£*@òb@ó\½@ó @óÄœ@ó@ój@ó0×@òðy@ò­È@òr @òB·@òg@ñÅ&@ñ0`@ðdÞ@ï¿Ý@ï¢@ð @ð{@ðµ•@ð«Ÿ@ð€P@ðO6@ð -@ïàð@ï”@ï> @îòÍ@îÀi@î §@î‚>@î\E@î2¨@î -y@íß#@í¥9@íZT@í@ìä#@ìÙ@ìÙŸ@ìÌ]@쨎@ìsH@ì6H@ëúé@ëÆå@ëšÃ@ësæ@ëOú@ë-@ë ÷@êà@ê¬e@êpk@ê1@éî–@é’6@èÒ @ç9@ä¤@áù@àÕ”@áï%@ä.©@åÏ,@åÊ·@ä0»@â -í@àë[@á¨Ê@ãˆ4@å+”@åñ@æå@æ@æª@åðŒ@åË@åš»@åiÐ@å;Þ@åâ@äàp@ä°|@䀅@äQ@@ä! @ãïs@ã·Ñ@ãtä@ãv@âšn@áìŸ@áY@߶¥@Þ"9@Üë¿@ÜØM@ÝÓÎ@Þúj@ßœË@ß¿Ñ@ßÂ#@ßâ@à:@à7`@à3Ï@àF@ßêå@ß¼Ü@߯@ß]¼@ß,@Þó€@Þ¤ê@Þ,4@Ý@Üýx@Ü @ÜãF@Ý ]@Ý>b@Ý4/@ÝÇ@Üò@ÜËá@Ü¢¿@ÜwÕ@ÜKª@Ü@Ûëe@Û¹@Û‰ƒ@Û^@Û4Ÿ@Û¨@ÚÀü@Ú4²@Ù×@×v¿@Õä(@Õd@Ö;)@×+@Ø’@Øü¹@Ø÷‰@ØÐ @ؤ”@Ø|B@ØV‡@Ø2@Ø Ò@×ç8@׺@׃»@×F’@×Ô@ÖÁ¹@ÖH¼@ÕE²@Ó‹”@Ѭœ@ÐØ@Ñ¡Ä@ÓJ{@ÔªÍ@ÕOý@ÕoÝ@ÕY*@Õ3š@Õµ@ÔÑÈ@Ô@ÔHÃ@Ôû@ÓÎ8@Ó¤o@Ó‡´@ÓqÂ@Ó[£@ÓBv@Ó%é@Óø@Òâ&@Ò¶Û@Òy®@ÒÚ@ÑŠD@Уs@ÏA@Ì?›@É Œ@Ça@Èâ@Ë—@@Î[ @ÏÓ¦@ÐFÖ@ÐH/@Ð*@Ð@ÏÅ@ÏK‹@Îa @ÍŸ@ËáS@ˈ_@Ì -@Ì’à@Ìj±@Ë-ß@ɽ@Æ×@Åí¾@ÆÝ~@Èâü@ÊÃ@Ëãñ@Ì_°@Ì‚°@Ìö@Ìm`@ÌQŠ@Ì+ÿ@Ëú@˼¢@Ë{@@Ë?³@Ë@Êãg@ʺB@Ê@Êb#@Ê8z@Êj@ÉýW@Éâ6@ÉÀÂ@Éœ@Éz@É\#@É?@É!"@É@Èßê@ȵM@Èxœ@È @Ç…Á@ÆËú@Æ'ñ@Å˶@Å’”@ÅÓ@Ä$m@ÂÙ4@ÁçŠ@ Ó@Ã-@Ä|Ä@ÅQØ@Å «@Å£©@Ňc@Å^(@Å.@Äþ @ÄÒ·@Ä°Ø@ĘG@ăÀ@Äl'@ÄNƒ@Ä,p@Ę@ÃÚô@é{@Ãv„@ÃFø@ÃÒ@Â÷X@ÂÓ;@¨@Âb@ÁäÎ@Á#Ê@ÀUé@¿Ô#@¿¨µ@¿‡%@¿XA@¿^@¿«@¿à9@¿ŠÍ@¾„É@½â@»‡X@º±:@» E@¼il@½õ=@¾ï×@¿D¦@¿6É@¾øé@¾Ÿ»@¾3s@½«q@¼ý(@¼ZW@¼*•@¼Š“@½Ë@½cû@½RÔ@½f@¼¨g@¼f@¼F˜@¼3…@¼m@¼»@»ø~@»ÕM@»gÿ@º¨Æ@¹èu@¹˜M@¹È‘@º@º=÷@º<@º5Æ@º"w@¹Òâ@¹'¤@¸S@·Ò¶@·è2@¸B@¸o­@¸eì@¸^B@¸t…@¸ŠZ@¸pH@¸µ@·­S@·d^@·P@·H\@·€@¶Ûè@¶¸@¶¾B@¶¶é@¶r˜@¶A@µé@¶L@¶67@¶G¡@¶6:@¶’@µô@µÑd@µ¥{@µn¯@µ5Y@µÖ@´Í(@´ý@´?@³ô)@³Í+@³Ñ@³âÕ@³â=@³ÃD@³‰S@³C…@³ @²ùš@²ÿ@³ú@²ñå@²Ð:@²¤@²sn@²8#@±Þ?@±B_@°Gp@¯@­ß@­|>@®5@¯6c@°"@°@°œu@°…O@°cs@°@4@° y@°@¯ëÎ@¯Í"@¯O@¯>"@®~×@­T5@¬0Å@«Òì@¬jñ@­VÚ@­íù@®=@®ˆ@­æî@­Á@­˜X@­rX@­P0@­+à@¬û.@¬µü@¬_$@¬¼@«Ç]@«§@«š@«‘‰@«@«@«‚0@«_º@«3 @«–@« @ªû0@ªì‡@ªÔó@ª¸`@ª˜ß@ªtu@ªG†@ª0@©àø@©º„@©žñ@©…î@©ip@©Hù@©'ã@© U@¨ë®@¨É¡@¨ ã@¨u]@¨LÏ@¨)l@¨ ¬@§ë;@§Ìm@§«Õ@§ˆ‘@§c8@§<Ç@§Ì@¦ë@¦ÁÞ@¦@¦}Õ@¦b@¦Ft@¦(@¦O@¥Ô+@¥˜ü@¥^ @¥3£@¥«@¥ H@¤ü@¤ä@¤Ä@¤›R@¤gK@¤+Ù@£õø@£Ð£@£¹n@£¥Ž@£Ž-@£ró@£U>@£5­@£z@¢ñé@¢ÎA@¢ª@¢†/@¢bä@¢=@¢º@¡Û@¡§d@¡}>@¡]T@¡DÎ@¡0«@¡Ì@¡@ çñ@ ËÂ@ ®‘@ :@ pL@ N”@ ,N@  @Ÿê]@ŸÆÜ@ŸšR@Ÿ_â@Ÿñ@žïç@žÎð@žƒ¸@¼±@œ…H@›–°@›±˜@œ¡@Š @÷¸@ž€@ò÷@Õ×@·c@˜¬@yE@Xß@8‹@~@œÿŠ@œåÚ@œËW@œ¯Ñ@œ”K@œyú@œbL@œNG@œ=-@œ-@œÿ@œç@œ @œj@›î¸@›¿¸@›p@› @šE@š -@™²)@™„j@™€Ò@™Ÿ@™Î@™ò8@™ðÆ@™Ãw@™}¤@™>y@™.@™ @˜Ùµ@˜X˜@—ª8@—0§@— j@–õ‰@–±ð@–>Ä@•¬¦@•€@”@¦@“|–@’³æ@‘Ñë@á´@QÒ@¸±@’)@“ж@•N§@–E @–”Z@–SO@•ÉP@•Au@”íÖ@”Åp@”›Õ@”cÃ@”!;@“Å@“=³@’”Ò@‘ùŠ@‘¡b@‘¡g@‘ò @’|Û@“ œ@“±„@“ûL@“ÞÜ@“kô@’Íy@’&ž@‘€r@Ï/@ Ý@HT@Ž¸Ø@Žu×@Ž‰c@ŽþI@Õ @ê®@‘ñv@’ž@’Ï­@’…”@‘ß“@‘2@â–@‘"ù@‘Ý @’Õ@“ÕJ@”Áï@•‰ª@–Ï@–3ß@–©@•Ëè@•Ú±@–Â@–#ô@–!@–L¢@–¯@—©@—Ô@–Ë{@–>Æ@•½4@•4a@”C_@’óÛ@‘¿J@íÂ@•Ü@Äé@‘Q@‘ûO@’©¡@“J®@“œQ@“0@‘ÎÓ@Åx@£b@‹¶e@‰ÿ@ˆŽQ@‡Œø@†ób@†;@…ÿZ@…t…@… @…(g@…žÿ@†_@‡Jž@ˆ5^@ˆÙe@‰N@‰ê@‰ -@‰1Š@‰Ñ@ˆ`,@†íC@„áL@‚µˆ@€ÔS@~Ù:@}`5@}ÎÝ@€'p@‚@„7@…›Ö@†£u@‡ @ˆ¢µ@‰@Š{ù@‹}C@ŒdF@Œòå@w@Œàš@ŒB @‹j@‰X}@‡f-@…¶w@„Ž»@ƒë£@ƒ¾@ƒé@„@ƒãÛ@ƒ[í@‚¢Ú@áj@As@€õ•@ Ù@ªë@‚FÍ@‚®m@‚À@‚k@ï×@El@€Ì‹@€Ñ¢@v@‚•Ü@ƒæé@…9ç@†Ú@‡šs@ˆ@×@ˆ›@†Ð®@„¬-@‚;@ß@{nÉ@zÄ@{-4@~C@l@‚ë @„2>@„ÏÑ@„·@ƒüÓ@‚ß@•Ñ@€8[@}Í©@{äÏ@{¥@zÀ@zŸà@zR@z”­@zzÈ@z‘@{ @|@}¸'@™n@€»o@—›@‚Gï@‚¤ç@‚@‚:/@šT@€áU@€/(@.ô@~$Ð@}F@@|Û¼@|÷W@}-§@}Õ@|s6@{ü­@{ÙU@{®Z@{-Ó@z”&@zDk@zæ@y&×@w9!@ti!@q9@nCÊ@kéQ@j:|@iHÇ@i5²@i«`@i¯ó@hue@f'@cÍô@b¡@cÐ@dž“@fX-@h -Õ@iâG@k×½@m‘½@n·û@nù%@n-@lb;@jñî@jÂX@l`Ü@ogÂ@rƒ=@t &@r€ë@mvõ@eûJ@^A @XâŽ@WÉá@Zþ’@`M@ddû@dË@aEÛ@[Ëí@WG@U*n@X4]@`ú°@mûç@{·D@ƒ¿@„ÚÒ@‚¼\@zQ}@k0@[©±@P˜f@LçL@Qj©@\Šõ@kg€@{@„9'@ˆ¦E@Š<‘@‰@„ù<@|c‡@j;@Wñ@Fà@:¯ @7¢0@=µ&@KÝç@_}@sGî@‚{7@‰à@@Ž"—@Œšu@ˆàï@ƒ]0@xl´@gD@TœÄ@BøŒ@5u²@.°:@0 <@9˜ï@Iî@@^L@r]@LZ@†ì&@‰þd@‹B@‹`@Š—ý@Š‹@‹ £@‹†:@‹©@‰:^@…Ìb@€ªh@sHj@b -"@O‡ñ@>~ž@1­Þ@+q@+‹¾@2þÏ@@g®@Qá{@dßn@wÔ@ƒÑ¯@‹H*@‘þC@—¿‘@œNÕ@ŸŸb@¡¼S@¢‘™@¡ùV@ è@[@š2@–°@’âå@y@‹€2@‡‰¾@‚ƒN@x5ë@h‹+@VSz@B§@0M@!"ã@>@ìz@R@*Vå@;Õ?@NÈÀ@`@@nÅÅ@z¯è@‚‡D@‡Me@‹Ì@ @“Úd@–¼ý@˜+Ð@˜n@–±†@”ój@“´á@“˜(@”–²@–³@—T±@—Æ£@—o@•?@‘ا@Å@‰~?@…bO@:i@yŒt@peó@gw@^cã@T,~@H(\@:eþ@+=.@š@ .@IÌ?ùUë?ú:¦@5…@ ÇÑ@Zª@*`&@9z¶@GÄí@T÷5@a‹@l4@u¤ó@}j“@ºb@„8@†Ÿž@‰Õ@‹]õ@I@Ž­7@‹D@Ò.@dñ@ŽxÒ@ˆÅ@Ì@9Ç@ŽÊ@C@õê@àÒ@‘­—@’×@’#t@‘èÿ@‘Á -@‘´æ@‘JR@ôT@@Šži@‡ƒ@„Ã@‚r5@€G@{ãC@v¼‹@qw@jt}@cBM@\â@UXh@No@Fù@;/V@-¶g@r#@Ë¡@‡‘?ëª?Þ²Ó?ݤ—?çYM?ù³Â@±@XI@!U0@+Â@4[H@;pL@A‡ó@G 1@L.ì@Pí8@U=?@Y>@\ÿŠ@`\š@ckª@fòJ@k´r@q†V@w“Ò@|Ýl@€-÷@€¿@€XØ@~þª@}'¼@{uó@z_@y[j@y[@y$Â@ypÖ@zRp@{áÿ@}ªÕ@~ë@~ñP@}6 @yf-@sO¤@jµ%@_Eæ@P@=ÞT@'DÄ@…ÿ?øI_?æx‡?ð#–@·r@‚º@6@Iø‘@XT¢@aºå@f߃@häj@i°@hHà@fúL@e‚@d•@bt@`Ê @^æ„@\Ú @[@Y`E@W„õ@Tò´@Q¥æ@N¢@J0ò@EïÓ@A÷@;Ì@6%3@/Ü@(V1@@ë­@ÅŽ?ïãN?Ð’¬?²³ª?› ¼?Ž‹–?ŠE?œÝë?³«?ÍÔv?é4h@;¢@ ZU@1`@í @&p@,Ã@2;Ô@7+é@;‹§@? @AÈ›@DnÒ@G€(@JßË@NAæ@Q•w@TÐ’@WÃ@Z^¾@\¢Ë@^BS@^Îå@^<5@] -@\$«@\Ü@\õ¡@^¦@`w8@a‡ý@aœ@_dõ@]†@\¡m@]@^u.@`Â`@c;ø@dç@e]Ò@eº@d@du{@dÈ’@esñ@fxu@g¶k@hη@iU @hÊØ@g@eV²@dk÷@cÞê@cDì@b¼®@bDN@aŽÅ@`J@^MB@[¶Ø@YF‚@WùÏ@X4}@YËU@\_ö@_W@b -Ï@d¥@ecÅ@eç¹@e@d@•@aïŒ@^ë@\ç@Z6 -@Y`÷@YŠ¡@Z³@\|^@]ëD@^(@],Ò@[H@Xé—@V¬e@U ¶@Tbá@Tµ?@UŠ@Vu@UÌp@T¼µ@SK @Q§˜@OÙŸ@NRÔ@M´@N˜@N­»@Nš @Mœ”@LEÃ@JûÒ@I @GÑø@EiH@B®a@@"ì@>«@›@@»@CP5@Eã¨@H5A@I¨ô@IËq@H¯Þ@FÛx@E»@CÇå@CgŽ@Cͨ@D¸ì@EÙ‰@F°@FÞ¼@FV½@E=ñ@Cê†@B©O@A”e@@Å4@@þ@@úý@Aþ5@C#¢@D$Æ@Dò=@E—@F›@F"Þ@F$×@F7·@F~@E6Ø@C^ô@@³r@=µ@;S@8õ‹@7@6Ýe@7c@7Ä@8Ž}@98A@9óJ@:ðõ@<2²@=…@@>j@>ª@>>j@=ïÇ@=ÝÊ@> ‘@>œ±@?ðT@AÝ@C à@D9@DJ¨@BЭ@@¦@>d@;³ù@9î@91@9:@9ÈX@:ãº@<$Î@=l -@>¢Š@?ƒ@@ Q@@;P@@qþ@@§@@€z@?è-@?|@>"@= ÷@ì@,¾4@.H@0QP@2c@4'F@51;@5@40×@2ö¤@1ÂY@0¬”@/™_@.J;@,~L@*I@(HÒ@' @&“™@&û@'’@(¦×@),-@(k§@&v@#ô‰@!K0@Š¾@?@%É@a›@‹Þ@Øo@§«@§@£@ûþ@ @\Ÿ@,@¹º@)^@±5@»@Ð@÷/@\ì@Ab@iÝ@Ì“@‹„@îX@|à@ rå@ n"@ 4¨@ @/Ã@ñ@4t?ø–h?îü“?ã|Ù?ÕÌØ?ųÛ?³û?£"?– a?ŽÁÀ?ŽZ–?”Ķ? ö:?±ï?Â?Ñé?Þ$?ç˜$?îoõ?óÓ…?øûþ?þ²P@ˆÄ@ò/@ —k@ K@‡Ö@œ@@½Z@ME@@“À@fƒ@Yì@ÇÁ@.ž@Öü@ÉH@è†@ߺ@z/@×@Cw@ õ@!^@”K@AÈ@ PÖ@ã–@ã@3@ì@Îs@f/@(ù@¶µ@¸„@‚%@;ì@ÉR@¼?@¢Æ@Ô|@T@îß@·Ø@ðã@S@@jÀ@Qé@tD@J@Î!@Šý@@“Í@ 6@<¥@ã€@ø[@€@‰”@z¥@â¢@Cá@ÙÔ@`@GÞ@Y@h~@÷Õ@â@Á@Åx@¦K@oJ@K7@ b@g@v@²@có@š£@E×@û@†˜@2†@Öó@èî@í@Ì9@On@Æw@Û+@ å@ò@Z@Þ…@Ã;@©®@ìŸ@TÛ@»¤@R®@F@ @Ø@Kè@M;@}@«R@á–@Ïñ@Æû@+@J¯@ö@;á@‹ö@Ô@ÞÝ@]?@ë2@Oæ@²¨@ ÄÒ@ hÏ@ -CÁ@ -Ÿ8@ ^ò@ß@ò@ÈQ@|o@«@Ý@Jc@.Ç@ÁD@Í@ë¯@¾.@ÿ°@¯g@Ó@­¶@J@ÔS@1x@® @ Ä@ý@ p@G‰@n@‘@Q@Þ -@j@¤@ʾ@ê@Mþ@ ‹ù@ Í-@ 8@ ‡V@ '@ Ø@ -Ôu@ -l>@ ôõ@ ™D@ :°@ž˜@Þˆ@Ba@·@œ @· @ ý½@ 9Ì@ G8@ ó<@ 1@ @ ÊÝ@ e„@ ª±@ -7,@5@Ïò@s@&7@¨@“@æ>@B{@8F@$Ÿ@É@?D@Õ@Þ-@1é@üg@©\@ž¤@ð>@wš@Ûï@ǽ@Oì@ºß@6ó@Ø @µe@ÑÐ@ä#@›Ë@ïå@ô=@¦@,b@îÐ@;0@Æ@}Î@ ‘@ph@˜_@¾¨@!º@Æl@yR@ -Ê@sá@¿Ü@åH@Ô@²x@®×@£@}ô@t¿@¢¸@Öl@Ö€@»e@§3@”¶@k@@‡J@¿V@ÁÎ@ù@š?ÿC?ÿÉ?ÿÛ“@ž-@L·@È×@×^@[ß@Œ5?ÿž?þ§?ýÙ¬?ý ˆ?ü®%?üÁ&?ü¥õ?üO!?üx?ýms?þ•z?ÿF7?ÿgÈ?ÿ)Ó?þy+?ý>?ûËk?ú§˜?úF?ù݈?ùð ?ùù~?ùó"?ù׎?ù†7?ù4ƒ?ùó?ùû?ùKX?ù ?ùõ?ùì»?øøá?öÖs?ô(Ÿ?ñÓ—?ð"x?ï'Ü?ï ’?ï½›?ñu?òr?óüû?ôØé?õm?õ%?ô¥ -?ô _?óÁŠ?ó¨V?ó½6?óö¼?ôE®?ôaû?ô#‹?óº[?ó6?ò˜w?òó?ñ·‚?ñcy?ðúæ?ð‚²?ïý?ïd‰?î›Ç?íY??ë™­?éø¨?èâ*?èYa?è+r?è0Í?èo ?èûå?éxë?é•I?é©«?éý²?êvD?êª2?êCæ?é±ê?éñw?êÑ?ëtå?ë­6?ë«?åXÍ?å?åÍE?åÅæ?å¡?åtü?å<%?å‘?äèF?äŒ?ä7ú?äÛ?ãÈ)?ã…æ?ãk=?ã]ò?ã$Î?â«¿?áéÀ?àé??ßê¾?ß$?Þ—„?Þ¶/?ßx°?à\D?á=?á»?â<’?⬚?ã"¬?ã²%?ä8ž?ä™}?äÏÚ?äËð?ä³±?ä©›?äbz?㲿?ãé?âÌÀ?â˜b?â^Â?â9‹?â\s?âÍ?ãM‰?ã´ò?ãÑ ?ãÛ?ã:?âÏß?â?ñ?áš ?àÀ?ߧÚ?ÞÀ?ÞTÅ?Þ.µ?ÞÏ?Ýò?ÞMË?ÞÚó?ß?ßA?ßê?ßi?ß‚¦?ßd.?ß??Þ¯Ô?ÝZL?Ûyø?Ù‰j?×Ð|?Ög?Õz‡?Õ"4?ÕJ?Ì>I?Ì£•?ÌÞD?ÌÐZ?ÌJ?Ìh=?Ì>?Ì'?ËÞñ?Ëî-?Ì'?Ë÷û?Ë?°?ÉýR?È1š?Æé?ë#?Áó}?Á¹X?×?Å@'?ǾU?Éà¼?Ë@ß?ËtÂ?Ê™?ÉN¹?Ȭ?ÇÄ?Æ^Ž?Æ>ú?ÆÕl?ÇÕÖ?Èßý?ÉŸÀ?Ê,y?ÊÚ´?Ëeå?Ëtò?ËFú?˦?ʵƒ?ʇ„?Ê0`?ÉJª?ÇÜ?Æ,?Äv“?Ëú?ÃX–?Ãâü?ÅÉ?ƨÐ?Èp?È-?Çý…?Æñ‘?Ʀ?Å°A?Ŷp?Åä ?Æ9P?Æ‘ý?Æ̳?Æ»Å?Æ?Ä?ÅAz?Ûò?ÁŠ??¿l4?½‘‘?¼}W?¼[Ò?¼èì?½÷“?¿'ä?ÀW?À`¸?ÀPÍ?À5ü?À\W?À¤3?À­V?À4_?¿Q¹?¾F?½‹?»•T?ºœ?¸ùò?¸Á4?¹G^?¹È>?¹ßØ?¹ÝÚ?¹ï5?¹ò%?¹OV?·…Æ?µ3??³B¢?²9í?²"ê?²½Š?³ý‹?µë?·ãµ?¹'ú?¹Ãt?¹õ*?¹Í@?¹°¢?¹Ív?¹ÔÞ?¹›Þ?¹Gö?¸õ*?¸;Ù?¶ÕJ?µDa?´&µ?³È?´&ñ?´ú[?¶G?·b??¸.ü?·×Ó?¶³B?µ‘¥?´àä?´˜Í?´‡Õ?´Õ.?µ¶f?¶òó?·ý«?¸ŸÂ?¸áß?¸½³?¸,¦?·?¦?¶BŠ?µX?¡¦?¢“?¢©ã?£&U?£T ?£Uš?£4ˆ?¢½I?¡ý„?¡]?¡i?¡I'?¢+J?£Dï?£öç?¤!?¤#±?¤™?¤+†?¤pc?¤óe?¥n…?¥!¹?£¦,?¡v=?Ÿk -?øë??œ‚?œI*?œƒŸ?œâZ?b?.? f?ž˜?Ÿ¼¬? ß‘?¡éÍ?¢€-?¢´?¢¬?¢g?¢?¡á(?¡ŒÆ?¡Q? œ‡? ;Ê? =…? sµ? X‘?Ÿ›ñ?ži:?Ü?›È?™Ê=?—Ùú?–.7?•ä?”q?”¨ ?•Aœ?•ŒÏ?• ã?–*K?—.ž?—ø®?˜<7?˜}í?˜ä®?™2æ?™r9?™»L?š/?šè¸?›é?Í?žT?žK¡?žH?…P?œðí?œVÆ?›Æ¥?›+ê?š°†?šl@?š7?™úî?™,®?—æ¸?˜3?™Ò?šIs?šk±?š_?˜ÓÎ?—U¶?–?Ë?•Ñò?•ðè?–6»?–|¢?–Û+?–ÙÃ?•í?”h¹?’ùÅ?’?’Ï?’±d?“M?”+?”³A?”¿à?”P?“Gü?’ë?“a?“Bø?“ÁÃ?”]x?”¸Š?• ì?•:?•$à?•¶?•Ms?•®Æ?•õG?–,?–SË?–4Q?•¶©?”ã?“ÓT?’¹ÿ?‘·=?Í ?m?yÂ??´?fÎ?\?â!?‘¸?’\}?’¤«?’U?‘ap?rá?øG?ÛV?ù¦?V÷?Ûq?‘Fû?‘aÇ?‘$?b¸?|?h?Ž±¸?Žq?Ž$?¨å?ŒüÅ?ŒF?‹ºC?‹mØ?‹×?Š·Ô?ŠÂ†?‹î?‹Dç?‹e¤?‹‘5?‹¨{?‹È?‹õ³?‹òB?‹Î8?‹™‹?‹h)?‹î?Š£Š?ŠÀ?‰¦f?‰¡Ê?‰ÌŒ?‰Ü,?‰ÒV?‰Õ?Š l?Š‡9?Šòò?‹;q?‹±ü?ŒB?‹ë7?‹<?Šm˜?‰µÔ?‰UÒ?‰ZS?‰}7?‰Ç&?‰üB?‰ØX?‰’Æ?‰;¢?ˆîú?ˆ¼u?ˆÖ_?‰•?‰U?ˆÈO?ˆˆ*?ˆCÆ?ˆ*#?ˆg§?ˆ­œ?ˆ‹?ˆ¦?‡? ?†k?…¨¡?…¼?„¹°?„ÌZ?…Pì?†7L?†Öõ?†çæ?†×8?†ÊÏ?† d?†Lá?†b?†1?† T?…Ó¾?…–?…ro?…'C?„£=?„Bµ?„#è?ƒ÷Á?ƒ´»?ƒ ?ƒ”“?ƒ”ü?ƒ·?ƒ•ò?ƒ»x?„¯?„:ñ?„^Q?„¤ö?„Ô¯?„µW?„n??ƒï&?‚ùý?ÌC?€ì`?€hN?€@?¼V?€€?€„ª?-¨?‹ª?©a?Ó¶?‚ ?‚J?‚XŒ?‚Ë?Ùj?¢Ê?‘?Ÿ|?›)?š?¡½??\Ü?€ó?€¤ -?€¦ˆ?€Ã?€ &?€Mu?€ R??~ôj?~MW?}iÊ?|‹?| ã?{¯³?{}ÿ?{õ¶?|´e?}4G?}¢¯?}ß¡?}¹?}Ÿ?{£$?y«é?x ¾?w>?v?uxñ?u“ï?v.ž?vÅ?vº8?v?ub?uJq?uBQ?uSŸ?uøÉ?w«?wõ?x·~?yšÊ?z - ?y8Ü?w½·?v‰ß?uÆÁ?u`?t’x?tjn?tiâ?t€÷?t¹4?tØÛ?t´c?t§ù?tÔ¶?tÊÆ?tâ ?u$?tëå?tS´?s|‹?r´õ?r'¹?qΣ?q†ƒ?qt¼?q¤?qÝõ?qç*?r!?r"Þ?qØr?qgx?pxÃ?o…?mˆÔ?ljœ?ks´?j©ÿ?jXÕ?j".?jQ?jên?kˆD?kÿ?lB)?l_'?lsÞ?lÚ1?m-ê?m#•?m¡?lús?l2?kÔ?j°?i{?h=?gI!?fÞì?fÜÍ?fø´?g$±?g…,?gô_?hdq?h£?h……?hNÕ?gÐK?g't?f¦T?f;Š?eLW?cáœ?b´|?b ?aói?b<²?bX?bÑ‹?c:~?c¡Ÿ?c¿ö?c—á?cau?cf?c‰½?cmd?c&3?bÎ?b£u?bh²?bæ?aæ?a8?a>­?a:ÿ?a1Û?`ç¤?`tN?_å|?_ž?_b¶?^Ñ{?^>?]ΰ?]EH?\Ù?\‚@?\BÉ?\+Ì?\¤?\Ì?\É?[ã?[_~?Zñµ?Z•¯?YôH?YÝí?ZO ?Zy[?ZXÝ?Z@Ù?Z?á?YêÙ?YOÞ?XßE?X…Š?Wÿ?Wœ?W‰’?W…a?Wm‰?W/3?V®»?V,û?Uõ&?V3?V­?V%u?Uó\?UÍñ?V -??VZ[?V6?UÌû?UÚ?UÄ?TÁá?Tô˜?U‡?Tü¤?U5”?U_?U?Tt?T ?TW¢?Ts]?S”œ?S'$?SO ?S`J?S` ?SJU?S.@?S"?S) ?S .?RÒþ?RµÕ?R•?R@?R(?R‹?Q´.?Q3C?PÙÆ?PÂŽ?PÏ?Oóã?O$#?N[?M¤U?LÙ?LY‹?L#¤?Kú -?L­?Llr?Lõ¼?ML~?Mvc?M»¡?Nß?N -6?M¿Å?M;Ï?M¸?M ?L¯?L¬ø?L£?L ?K€À?JæV?IÉ­?G™V?Dóg?B@è?@)7??‘o??[·??…Ú?@E?Aˆi?BÛŠ?D?ED¯?F³ì?Gïr?H_?H°÷?Hoû?Gêå?GR¦?Fà?FŽt?Fk‰?F›Í?F—?F×?EÕ?F,v?F9ï?Ed?E'?DìØ?DºW?D"?DC??CÔ?Càd?Dì?D*Í?>H?>‚?> ;?=zo?=CT?=÷?<Ô¹?<ÎÏ?<ÑÆ?<àò?=?=4?=.Ã?=3à?=&U?<ûÓ?<É.?;üe?;kÅ?;5ù?:í¡?:õØ?:¯ä?:3ç?9îã?9ú™?:@—?:N?9\Ç?9 ?9 ã?8ân?8}ù?8*;?8l?8G?8À€?9z?9Z"?9_{?9-?99ý?9Bw?9r?8û$?8Î^?8€E?7ö?7%&?6É„?6ëÐ?7P?6¶?6X??64â?6'¨?5öí?5Ñ}?5êÖ?5í ?5ª½?5x?5Za?5?4¬7?4wO?4ÜÉ?5f|?5šr?5?5W?5>z?4Ðå?4"B?3ôû?46æ?4(?4>—?4O?3ùr?3³c?3Àí?3zˆ?3Zè?3¾Q?3¡Š?30¸?2þ?2?1ò¡?2Á?1ÑÐ?1‹€?1–”?2>?2µþ?2ɵ?20c?2#?276?1·(?1 p?0¤(?0b?/·?/FÕ?/'ë?/=£?/»ü?/þ?/ÉU?/‘?.ŸÏ?.…Õ?-8¦?+ÌÇ?+??+9>?+ Ê?*ôQ?*Àt?*—Ä?*‘`?*£¯?*Ó=?*žØ?*?)q`?(×Î?'ÚØ?'f‘?'è?(Fµ?({ì?(¨O?({?(­@?)c.?)†š?)j?(Ì -?)(s?)©'?)Ö)?)Ã?)Ø»?*'f?*GÕ?*Tù?*?)&¨?( S?'~x?'~l?'¤C?'Ù™?'üõ?(I ?(e“?'þ¯?'¦Œ?'f¥?'/H?'*¤?'à?'’?&ôß?&qÈ?%¹`?%AÏ?%5?$Ñ£?$V¿?$ _?#¬?#ˆ~?"ÿÎ?"Eó?!ʇ?![h?!¸? ®S?ß?ª?ň?ÀÌ?ï?©?Ò†?‹ø?e?­?\c?ë??ßX?R°?9Ã?J?al?ÖÜ? J? Z? Ç?Ý2?‡n?Q?r?ë>?­Q?œç?¨?ë?þ~?ß@?߯?‘1?à§?§r?öë?¥²?¦ú?GR?ån?DË?³.?g»?‡?ý -?øT?Á=?^ÿ?>>?U?º´?$‰?Ëœ?”þ?î?È ?CŽ?o?Ý[?u?÷?Ýá?`_?…—?6†?Oˆ?l ?ì½?²?N?=£?'?ÄJ?w?Õ?_?¡?”ü?µE?l¦?2¦?¡?Þ2?`?$?v?n?D6?$Ë?ŸÔ?KV?ú|?›?"1?Á—?¶q?2{?Û\?N?„ó?}:?û?•O? Š?Ɔ?—:?[ ?Ob?RP?ð¿?eã?´?F4?½ý?áý?´ ?xP?#õ?ðM?åÏ?—Ï?DX? ?!Ë?æ¾?GÕ?Bö?ë?¯?'»?U?èW?ž©?)?¼s?¶F?­u?+ ?áN?ì?óó?ób? -½? ?7‚?t?@?-? ‡?*ò?lw? øî? ¡ï? ”ª?Y?d‘?ï~?š?2 ?zE?ÿþ?ëx?h¥?ÕÃ?]‡?… ?]?¬n?µL?o†?@Â?ü -?—”?º? Ç ? ­? -®? -L? -Mc? -ô¨? ÌÌ? ÏY? –ì? Ç?p? Ê? ‹`? C`? µ¥? *P? tË? -Ë? -A? -p„? -° -? -þ? -ãt? -dj? -2’? -Ú? ž•?Ø ?ÓP?E-?÷@?O]?®?ü?¬ô?ì -?=â>ýà0>úÖƒ>÷>ò_æ>ì« >æ¶>ݱ¡>Ñ1>Á½£>³bå>¨õœ>¤Ï>§Ý>>²É>Àü%>Ï®>Ü:q>äŠÌ>ê-í>ï0 >óøt>øud>ûÙ*>ýè}>ÿÉþ?±?B?~¾?C?)/?mT?ù­?_ÿ?´?ß?LR?Ê#?¿5?º??Àv?Á?É?ëk?Ýf?ŽY?7¡?^À?Ö?ô?°?ˆë? - ?G¬?X?f^?vš?dî?Wp?BÖ?? -?[3?}(?Q6?þ•?Éú?ºW?™K?’Ñ?r|?AÁ?ñŒ?†ñ?YÍ? ->?Ç?°S?È?ª„?Ÿò?£™?÷>ÿðÛ>þò\>þP4>ý¿>ýz>ýXY>üù‡>üôÆ>ýEÞ>ýfB>ý؆>ý§X>ý_2>ýK“>üÙ£>ü`u>ü *>ûÏÉ>û¾>û;Ö>ú‘#>úq±>ú8ú>ù·†>ù1F>øóÂ>øòv>ø« >øÈ>÷…?>öÝ->öÛy>ö¨S>õ¡{>õ‚ù>ö)B>õl2>òÖì>ôBú>ö'>õ{þ>ôÆÿ>ôVÂ>ô0î>ô Á>óâ5>óq>ò®6>ñí >ñüP>òð>ñÛó>òø>ñ÷!>ñª‰>ñ>¥>ñ¢>ñpÃ>ñöé>ò,>ò;>òì>ñ¶Ü>òl>òe>ò=">òAç>ò¯Ì>ów>òû¯>ò¼ö>ò½Æ>ñ÷>îú>îŸ<>ð Ä>ð ö>ðÎï>ðŸV>ðc>ïâ>î·Ð>î”Ã>î± >ï>ïJp>îê´>î;#>íÌ>íc>í:Ë>푈>íè­>íÁQ>í¿>휼>í›>ìíT>ìÏR>ì«>ìuI>ìÕ>ëľ>ëru>ê÷>ê»k>êÆ—>ê¬ý>êf}>êý>éµ}>é„>éWÒ>é(í>èük>èÎu>襛>è¨>èT—>è$W>çùl>çÏÏ>禶>ç}à>çTæ>ç+>æýj>æ¢>æŒK>ædÑ>ææ>åïÂ>åÉö>哲>åQô>å >äøU>äÒ >䮶>äŽ>äj'>äE!>ä"þ>ä2>ãßv>ãºG>ã”=>ãon>ãVN>ãRQ>ãI)>ã$*>âîd>â¿@>â˜õ>âu>âP¾>â*E>âî>áÜí>á·Ö>á’U>ábÝ>á'4>àòä>àÈt>à ‚>àxG>àN>àñ>ßÑ–>ßë>ß_>ß6—>ß>Þð£>ÞÈš>Þœn>Þm;>Þ@’>Þ­>ÝÞ>ݹ»>ÝŠð>ÝfÐ>ݦ>Ü¢!>ܱÆ>Ü®¨>Ü;ú>Û£@>Û½I>ÛÈa>ÛX!>Úšc>Ú{û>ÚNY>ÚF´>Ú7>Ú‚>Ú‘r>ÚxJ>Ú+>Ú ¸>Ú>Ù¹¸>Ù?ˆ>Øù>Ùº>Øèÿ>؈R>Ø«>ׂä>×Rƒ>×^ï>×w$>ׇy>×Åž>×Д>×g>×eÀ>ס¡>׉Á>× ½>ÖÓR>× -Õ>Ö¢(>Ör7>Öàë>ÖÔ6>Ö˜é>Ö¥h>Öä´>Ö؃>Ö†>ÕÅð>Õg >Õn~>Õfü>ÕQ>Ôâ>Ôô>Ôèþ>ÓË>Ò*³>ÑMô>Ѧ>П5>Ï«_>ЀÊ>Òê>Ò¿‚>Òv>Ñ|Ý>Ñ[%>ÐæQ>Ïn>Îõ>Ð!õ>ÑF#>Ñhì>ÐÑê>ÏR¯>νÞ>ÏSí>Ïx\>Ï_+>Ï4”>ÎÆ\>ÎCä>ÎFW>Îyƒ>Î5¤>Íé±>ÍŠÞ>Í 2>Ì}|>Ìà>ËÓÒ>Ëj_>Ë9«>ËÑ>ËŒY>ËáV>Ìû>Ì >ËÍx>Ë]D>Ë=L>Ë >Ë %>Ê×E>Êsÿ>Ê)Â>Êâ>ÉÊ…>É…e>ÉI§>Èý¢>ÈÁG>È›:>Èl÷>È:Ü>È%>ÇÒü>Ç›Z>Çd>>Ç(>ÆÔÄ>Æy÷>Æ.,>Åä>Å™>ÅNù>ÅÕ>ļ[>Äv>Ä0L>Ãè’>Ã¥>Ãc>ÃG>ÂÓ*>‹*>Â]‘>Âuê>¯I>ÂÓ&>ÂÙ÷>ÂÁ¸>¦:>ÂŽT>Âo>ÂLÍ>Â,à> -9>Áåq>ÁÀå>Á˜>ÁhA>Á1`>Á->Àܽ>Àµá>ÀŠ^>ÀT$>Àš>¿»Û>¿„î>¿Qï>¿ò>¾Þ–>¾©->¾€p>¾]t>¾8å>¾>½Ý(>½¨Q>½w›>½J">½^>¼ÌÙ>¼á>¼ZÛ>¼-ã>¼ -'>»ê:>»²Á>»v,>»Eÿ>»!c>ºõê>ºÂ*>º›V>ºL>ºc¸>¹ñ>µX9>ª’þ>­·>¶k>¸ô>¹2à>¹Ì>¸Ò{>¸Ÿn>¸eU>¸)[>·ô›>·½¸>·|5>·6>¶ìo>¶©@>¶|²>¶(_>µÇ$>µŒ>µU=>´÷:>´lj>³û>³ôê>´5>´&T>´ ç>´]>³ë>³Ír>³®ÿ>³’d>³uÑ>³W>³.³>³5>²ÚR>²ºP>²œ¬>²˜>²c…>²Hä>²4 >² >²=>±â·>±µ >±„Î>±eX>±WÁ>±0Ë>±¼>±Š>°ÍF>°­7>°¾_>°³ >°U,>¯áI>¯‰Ý>¯mS>¯<~>¯Ï>®ìà>® Ù>®£Œ>®ìp>¯>®¹™>®>®cL>­ý >­4{>¬Êd>¬œ>«×°>«r(>«åm>«Ýz>«ÞH>¬.>¬>«ž>«S•>«:‘>«Ì>¬–2>¬â ->­]>­p>¬ÅÐ>¬>>«Æì>ªå>>ªú>©ç—>©Öô>ªC>ª >ª™>ªgO>ª›>ªÕX>ª9Ð>©V>©Ð¶>©H>©R´>¨ÇÉ>¨¤Ù>©x>©[¼>©>©ƒ&>¨Ù>¨Y>¨ á>¨L¢>§ê>§¶–>§¯Œ>§‘>§ME>§S{>¦ìw>¦­Ö>¦Œ“>¦E£>¦Y¤>¦‹}>¦d—>¥þ£>¥Åð>¥ƒ¡>¥K>¥ ƒ>¤Ì³>¤°ø>¤¾­>¤é>¤ìu>¤°_>¤}>¤>>¤LÄ>£ûg>£ÔÔ>£¹7>£™þ>£™3>£©‰>££ã>£x>£SL>£->>¢ý³>¢Û©>¢ÎÅ>¢«;>¢|Þ>¢Q&>¢-‘>¢ >¡Ò>¡Œ×>¡I>¡ …> Ø£> «þ> „ > Yb> ©>ŸáÙ>ŸÓ¦>Ÿ¶Ô>Ÿ|¡>Ÿ6ð>žÌÄ>žž>žµ‘>žÝ>žwr>žD‡>ž"Ó>ž°>ž>ë¼>ÎF>®^>Š\>Y;>œµñ>›M>›&c>œ†>›ò†>›¾>›‘ì>›lœ>›A>›Ó>› ;>›û>šåÌ>šÇ->š¥Æ>š‡ >šj\>šJp>š'¡>šŠ>™äà>™¹S>™ŽÑ>™m\>™MÙ>™-p>™´>˜ðˆ>˜Ã>˜š·>˜{t>˜\ï>˜>¯>˜“>—ì)>—™<>—•>—¡Ð>—Š~>—k:>—IÒ>—'ÿ>—}>–æÌ>–ÃË>–›'>–py>–O.>–2'>–û>•ô%>•Ìv>•˜›>•]Ù>•+—>”û|>”Õï>”®á>”{€>”GŒ>”>“Ú?>“z?>“Cç>“E>“2Ð>“'>“¬>“¾>“d>’ã´>’ɸ>’±Ã>’™m>’·>’dž>’5Ý>’ -|>‘ß`>‘ר>‘ãí>‘¿/>‘’Û>‘¾™>‘©C>‘L™>‘>Á™>€>ŽÛ?>%A>‹Œa>Še˜>Š3>Šv“>‹xH>Œø¡>Žzµ>?ë>¢}>à’>§U>>à>Žù>Žõó>_> >ŽÔ=>ŽTŒ>Ž7†>Ž„Q>Žc$>ŽÔ>ŽM>Ž)T>Ž?¤>Ž<ê>ŽF>Ž1ð>Ž¨>Ž4—>´ >sI>Œâ§>Œ&˜>‹Þ8>Œþ>Œâ>‹;7>‹s>‹s4>‹Î¨>‹oÈ>‹Î>‹l‹>‹m >‹L>Šýº>‹J‡>‹>>ŠÒ >Šèý>Š >‰)Æ>ˆ×$>‰ñš>‰bW>‰ˆJ>‰R¸>‡{ >‡¶ˆ>ˆ ¦>ˆ5>ˆ¿«>ˆ‚>†e¼>†}½>…ùn>„K>‚ ->V>„á>…·õ>‚ï>„[À>‡Á§>ˆ>„—†>„‘Œ>‡#>‡(R>…÷>„5^>ƒÑw>ƒ{ >„Œ)>„QÃ>„”¬>Ì“>‚Ú.>„Òj>…œƒ>…~Í>…Yo>…T1>…>…"ì>…QÉ>„{©>„@Ö>„ËÄ>…L«>…Z«>…>B>ƒ¯> %>~­¤>~½»>‚Í«>ƒÏ‘>‚ûC>ƒ2u>ƒ†Ý>„Ž#>…MÒ>…W>„¹G>„ó >ƒÀ@>ƒ9>„†>„zÈ>ƒæ×>ƒ¤Ì>ƒzë>‚£»>€[>~0>4>‚è0>ío>~öA>¯>Öù>~>>€=Ü>ï7>é²>Æ>0>_L>€æg>€f>€+ > q>€U>~OT>€Ç>€ãu>€f>}î>|J{>;]>€çŒ>€Î> $>~±u><>îƒ>Cë>6>~¥¦>ap>€>7ß>~ ‘>~¢'>~œc>}Ç–>}Ÿ,>}?Ù>|Ï>|;>{c–>{³ú>{yÅ>zŠ×>z $>yô}>yËï>y©~>yŸ>ym >y:¿>y >xç‚>xÆ›>x¨¬>xéÚ>xÔ^>xØ>w Ò>wnß>wD9>w>vêŠ>v¹S>v‰]>vTd>vU¨>w5o>vÕ>u˜J>u7·>tþA>tËÓ>t˜N>tdÃ>t,F>sá@>s›l>sck>s4;>s E>rãk>r®>r€>s& >thd>r–«>qc>q%c>pî*>p³9>pxy>pBÒ>pB>oÚb>o¢>opy>o7‰>o²>nÑš>nžÿ>nhV>n2õ>næ>máÀ>m³¦>mv­>m7ú>m >l׋>l¦Ý>lpd>l9Ð>lÞ>kÈž>k…ø>k<‹>júD>j¹ö>j¸v>lîT>mº[>jz°>iŠç>ifn>i.ú>hôK>hÛ>hž>h\‡>h?ž>hR>>hyž>h„ö>h ->g­â>fûÀ>e"m>fX³>g›>g»Z>g‚é>fâ—>f)‹>eÝþ>eÍ >e—ó>e‚Ì>eyœ>dEÂ>cÍ»>dÅ!>d'Ø>c£t>c4>c7ð>c„—>b»C>a!L>`—q>a«î>b4ç>b59>bù>aîÆ>a Ÿ>_ʯ>^M9>]ù>[üj>[Á¸>[©>\Vú>[¹»>[H>Zå<>[ŠJ>\T>\à>]«>\¸>\?7>\"}>[ÙX>\->\r¸>\EU>[–)>[U¨>[!O>Z2ß>Z˜B>\H>\}6>[q;>ZÒ>Yv’>Y>YE”>Y _>Y<>Y >Y K>X"“>X!É>XÁQ>YÍÉ>Y¡;>X"á>W=&>U¢Å>Tx6>U0>Uip>Ua >U - ->U¡½>VÇ>WEÏ>WÜ>WR8>V5Ë>Täê>SÙ¹>SG±>RŽÏ>Q -À>N•¤>LÏ >Kým>Kú+>MšS>O{>QR…>S¾@>TšN>S³›>Q(>O*²>M¬->L˜`>LK†>MY>MÅQ>O‡F>R&ü>S›½>TWù>U8¨>U_­>TÌ>RÎŽ>P@9>L4÷>G¤|>Bói>?Éä>=ú´>>U\>?í“>BâÖ>F<>>HŸ3>J\>KÓS>M·>OÚ>Oe½>Né×>O8³>P¹>O¸é>NÌ%>M©›>Jk;>C_Ÿ>;TŠ>2>(¶›>$Qñ>&rÉ>,>2hC>9ºá>@cK>DÝ>FäJ>I5>JÈÀ>KŽV>L}ø>MU•>Mä%>MöV>N“>N Õ>L£>Jƒ>H>G0¼>EÏ}>D>A"Û><Ó7>8\p>4À>2W’>1Iæ>1A=>3¤>5îv>:ß>>Cb>AUv>C.>D„p>E~ >Fr>GAæ>Ghð>GNÅ>GfŒ>GÕÙ>Gâ'>Gzõ>G8p>G,K>Fÿ¶>EÅ >E:ÿ>C¡@>Aå>@––>>Â]>;Ôî>6Ô\>0þ>(Ò,> –û>>>Ä">{>S>"u¦>)—€>/,£>2¯ù>5¾¸>7r ->8rÛ>:Vâ>;¡4><9x>=Ÿ>>Î_>@!Ð>@úà>Aä >C0½>C¥Ó>CW>Bq#>BF>AÎÊ>Aêˆ>A‚¢>@Óä>@øç>@ðç>?§J>>íð>>bF><…%>:þd>:¤>7Ø\>5@>3d‰>0+ >+o»>&Hß>! ^>Ù“>3‚>€ >Ç> /">%§>*Jz>.ð>2¶>4·ƒ>6W>7“>8˜>9š´>;+ô>= >='§>>8>=v>=BÛ>=y><_ö><å§>=JD>=Fœ>;Ö°>;>:}B>:‡œ>:Mæ>:òl><8¾><¡>;çv>:Êï>:M->:OF>9R»>8)>7Ö›>7kÈ>6¡L>5×l>4¹‰>3bX>1Ì0>0fN>.>+ È>)Ž>%Ô1>"ÿ>hY>¼›> -u>eå>06>‰†>yÖ>#UÈ>&k >(Ô€>*„Â>+éþ>- ‚>.¥>.½—>/f,>/æ[>00>0oÌ>0˜Ž>0­æ>0µM>0µ>0µK>0°ƒ>0§O>0šX>0£>/·¢>.xÉ>/¯ >0+ >0œ>/ê¦>/¤Q>/rÃ>/Oâ>/,ý>/ .>.äÃ>.¿4>.˜>.pû>.AI>.æ>-ãK>-ºý>- N>-Ž‹>-yû>-"S>,áä>,«Œ>,rY>,6>+ðö>+¡G>+TÐ>+V>*°ï>*Rh>)éO>)rö>(ìu>(Ro>'›÷>&6€>#”{>#¤>#G>!º>Í>z}>¬~>Cè>~>µ> B­>«>Ä>O§>1>ƒw>aO> Þã>"ÿ>"ì›>#¦¡>$9>$ª­>%í>%C‰>%sP>%•;>%«Æ>%³(>$‡¢>ÖÂ> þ¸>%L“>%>%Œ>%xI>%]Ã>%8ß>%>$ý&>$9>"; >#†‡>$~N>$mü>$OÊ>$0«>$ f>#ß{>#·œ>#–Ê>#v‘>#Ux>#:e>#+>#Œ>"í=>"Ê‹>"£ >"r>"IG>"&8>"Ö>!áµ>!¿‹>!7>!{>!X>!'ð> å> ª²> ~‡> Y$> 3‰> >çÓ>Á‰>›>t >KÚ>o>å´>·j>Œx>`>3:>>ÓL>>TÂ> ü>Ði>H>J>ý.>§â>H—>Ý2>`¬>r‹>;l>Ñ$>6(> F>ôe>P×>J8>Ì4> ¶Ÿ>Û.>í=úù3=ø.>_Ï>˜]> ­`> ×j>S–>H?>̦>õ`>Áâ>‚#>)ç>—>è>#9>Mö>k'>{ã>{¬>t)>o=>g¡>\š>N¡>=Õ>+8>·>|>çÂ>Ã~>Ø>/Î>‚l>Ÿd>0>=>û×>ß#>Â#>¡ë>w¯>Q>1¯>Í>›H>A¦>É>®Ê>e>kl>Aô> ->Ñ«>¯>vH>MI>Y>¸~>N>ñ³>eÙ>”à>¬“>‰¬>j\>K™>,¹>>ïI>ÐF>±v>’(>mÇ>A]>[>þF>ßÍ>Ám>¢¬>z>W{>- >b>èJ>ÉN>«M>>nx>Oû>1>J>úÅ>×Â>¸B>šŒ>|Õ>^y>?†>*> îa> Íz> ®Ï> ™> c»> .$> Þ> èP> ÇÐ> ¥Ö> {c> NÎ> +8> 8> æ·> Ä'> ¡> }=> Xg> 3>> |> -Ú> -§Â> -| > -O7> - ‡> ïˆ> º¼> Î> &y>û£>`[>vw>â*>e;>õ>“>Cp> .>¥5>l‘>Ê|=ý~j=øZç=ñÙÓ=ég—=ÝúH=ÒË¥=ÕB=á.+=ëf-=òÛœ=øˆ =üä>Q>bx>]>š>¬>o>iN>¥>Ïü>ío>û¯>û>ûà>ú•>õ%>ì%>à7>ÒB>Â>°\>™s>çõ>U{>U>,Ÿ>úœ>ü>éò>dè>µ~>>e">Gþ>-Ñ>ý>ù¨>à>Í>½>¥>ˆú>lÑ>QY>5ƒ>“>þ>â<>Æn>ªí>‰ >a¶>Bš>&â> ©>ð>ÔÚ>¹¶>žÊ>ƒ{>gø>Ge>·=ÿáÃ=þ¹B=þzÌ=üå=ý¨=þº±=þŸ]=üªô=ûWî=ü£ =ý€ç=ý³=ýM=ý¯=üÝÌ=ü©ý=üt=ü>Ÿ=ü„=ûÒ=ûŒè=ûA7=ûÎ=úж=ú›N=úfº=ú5¬=ùÿ=ùÆz=ù‘»=ù[¦=ùÿ=øË¥=ø“ù=ø_]=ø*Ç=÷ö=÷Áä=÷ŽM=÷Z=÷%J=öï =ö©ú=öb/=öiy=ø3Ó=÷}<=õ¨Á=õVˆ=õ =ôï=ô»t=ô„$=ô;=óöÎ=óÁ‡=óŽ=óZ=ó& =òò =ò¾==òŠ˜=òW=ò½=ñÕÃ=ñ•=ñ`?=ñ,Ù=ðùŠ=ðÆY=ð“=ð_À=ð,t=ïùÈ=ïÃE=ï{í=ï9¯=ï==îÒo=î )=îmj=î:Î=î=íÔÿ=í¢j=íkà=í#ÿ=ìÙó=ë÷ =ëzŠ=ì/Š=ì{=ëç$=ëµ=ëƒ=ëP=ë=êД=ê“\=ê`Î=ê/R=éý¥=éËë=éšœ=éiH=é7«=ét=èÍ.=è…Q=èJ¯=èÏ=çÕ=ç~=çB$=ç ù=æ×0=æ¡õ=æ^Å=æò=彄=å† =åNx=å,=äÝ =ä£=äh›=ä-*=ãð§=ã²C=ãrG=ã0|=âêy=â¢i=âW=â=á°n=áS¤=àíN=àq½=ßç=ßWš=Þ$æ=Õã.=ÑÃð=Óôý=Ø¢’=Ù+í=×CS=ÔÍW=Ѧ`=͘=ÈMº=Á0Â=¶æ=ª'Ç=©>á=µ‚±=¿ðÚ=Æüv=ÌË=ÏØU=Ò¢þ=Ô»—=ÖMÞ=×zQ=ØY=Øþš=Ùw¬=ÙÍc=Ú /=Ú,h=Ú1ê=Ú1³=Ú0£=Ú(Å=Úª=Ú@=Ùñ¤=Ù×?=Ù¹G=Ù˜0=Ùo£=Ù5”=Ù#=ØÍ=Øg1=טã=×l›=×½Ó=Ô<ž=Ñ‹’=Öê­=ט=×[M=×*ò=Öÿé=ÖÔ4=Ö©<=Ö‰_=Öo3=ÖD)=Ö=Õçp=Õ°d=Õmò=Õ:=Õ =ÔÞ0=Ô°Æ=Ôd=ÔR¤=Ô(7=Óûm=ÓÍ=Ó•p=ÓTÎ=Ó#…=ÒöŽ=ÒÉŽ=Òœ·=ÒnÛ=ÒAf=ÒÀ=Ñèþ=Ñ»Ó=ч'=ÑEÖ=ÑÖ=ÐèA=ÐÅ=Жp=Ðb =Ð4ó=Ц=ÏÜÞ=ϯŽ=Ïxt=Ï9\=Ï p=ÎÜÕ=ΰ±=Î…=ÎY=Î.=Îf=ÍÖª=ͪ!=Ís =Í4 =Íù=ÌÙ+=Ì­˜=Ì‚~=ÌW~=Ì,P=Ìù=ËÕÅ=˦=ËHì=Ë,¿=Ë”=Ê0=ÀÚ_=À»=É À=Ê0 -=ÊY=ÉÙÍ=É­:=Éua=É8+=É Ó=ÈÞj=ȳ&=ȇý=È\O=È#==Çâ=Dz²=Lj,=Ç]=Ç2W=Ç h=Æߪ=Ʋá=ƈ=Æ]=Æ2¥=ÆC=ÅÞ =ųR=ň÷=Å^ñ=Å3®=Äû¹=ÄÁ=Ä•==Äkj=ÄA]=ÄÏ=Ãíá=ÃÃû=ÙÑ=ÃoÓ=ÃC±=à Ñ=ÂÒé=¨n=Â=ÂUl=Â+l=Ââ=ÁØ«=Á¯_=Á……=ÁYÃ=Á!¥=Àìc=ÀÂK=À™=Àp=ÀFÇ=À×=¿ô =¿ËA=¿¢Ç=¿w,=¿=Ð=¿ -Q=¾àf=¾·O=¾ŽS=¾fd=¾>=¾H=½ì©=½ÄN=½˜Â=½_ð=½+ê=½ò=¼Ú{=¼²u=¼Šž=¼bD=¼9Î=¼S=»è¼=»¾"=»…±=»R=»)›=»H=ºÚ2=º±È=º‰2=ºaÍ=º:¸=ºz=¹é$=¹³Ò=¹=¹Y¹=¹7Ç=¹ -=¸ê1=¸¼˜=¸==¸gg=¸?¦=¸²=·ä»=·®=·„=·]=·5é=·V=¶ç;=¶ÀR=¶˜¤=¶rN=¶Iþ=¶ï=µáZ=µ¸å=µ’$=µk†=µDC=µÛ=´÷s=´Ð:=´©Ê=´‚u=´Pâ=´Œ=³ñA=³Ê¢=³¤g=³~=³WÏ=³0ÿ=³ -×=²ä¬=²½Ò=²G=²W×=²/Z=² )=±âÜ=±¼ô=±–ì=±p¦=±K=±%V=°þ¤=°Íí=°˜»=°p§=°JÚ=°$ò=¯ÿ=¯ÙÝ=¯´%=¯ŽŸ=¯i=¯B°=¯·=®Þ†=®·©=®’W=®lÒ=®GJ=®!¯=­üµ=­Õg=­›Ù=­c==­;ò=­¾=¬ñ¥=¬Ì^=¬§ =¬‚Ù=¬]Â=¬9_=¬e=«ïÅ=«ÊN=«¥Ä=«L=«\Æ=«7´=«ƒ=ªîÁ=ªÅO=ª=ªf²=ªB®=ª5=©ú"=©Öy=©²Ù=©Žô=©jç=©Fw=©j=¨èÄ=¨ÂJ=¨Ÿ=¨|O=¨YŸ=¨7`=¨Í=§ñ=§ÎK=§«ò=§ƒ"=§OŠ=¦ì>=¤$Ý=¤Y=¦–¼=¦™¦=¦u²=¦QS=¦,s=¦k=¥Ú™=¥¤™=¥œ=¥[‰=¥8=¥p=¤ñF=¤Íõ=¤ªÜ=¤ˆ4=¤e=¤9û=¤ -+=£å=£ÃB=£¢-=£h=£`K=£?ý=£î=£Ô=¢¨0=œzS=—u=™¿ò=ž]1=¢‚=¡øÌ=ŸÚ3=šàÞ=—ü>=•5M=‘†T=Œn½=„b=rŸ„=pe=‚ì@=‹1P=V‘=“ð3=–‹/=˜Á@=œË·=Ÿc=ŸbB=Ÿ:=Ÿó=žîh=žÈ`=ž¢¡=žxr=žSX=ž3=ž ¥=à-=³==kÕ=H =%¢=#=œàÑ=œ¾{=œœ2=œx!=œH”=œ\=›ý=›ÛŠ=›º=›Rr=˜[=—Çq=”Q·=™Sº=šéJ=š¾©=š–=št=šR¦=š1=šÃ=™î=™Ìn=™«s=™Šj=™e§=™5Ï=™U=˜î{=˜Í=˜¬=˜‹ =˜j„=˜I¨=˜(u=˜L=—äD=—´º=—Ž=—m¥=—Mk=—,¿=— ø=–ëî=–Ëo=–ªÜ=–Š“=–f=–7s=–V=•ò5=•Ò=•±‘=•‘\=•k=•9ý=•ô=”ô¦=”Ôî=”´„=””[=”s=”QV=”/0=” «=“ë,=“Éž=“§J=“…9=“c=“@5=“¸=’ý¬=’ÚÌ=’ºâ=’˜º=’s8=’RD=’2ï=’]=‘ð­=‘̳=‘¬¼=‘ŒÞ=‘kt=‘D+=‘"º=‘ -=ãø=Ä›=¥ =È=[L=;Ø=Ö=ý±=ÞÀ=¸c=a=p1=Q†=2€=¦=ŽôÑ=ŽÖe=Ž·•=Ž’D=Žj$=ŽIË=Ž+–=Ž ½=îr=Ϧ=±j=’Ã=t<=V=7\=‹=Œû=ŒÜÕ=Œ¹=Œ©Ó=Œ´R=Œiè=Œ=U=Œ/=Œ=‹Û‡=‹º=‹’Ü=‹wÕ=‹Z”=‹9”=‹ X=Šè´=ŠÊ|=Š¬ï=Š -=Šq=ŠS:=Š5X=Š=‰ùÏ=‰Û¤=‰¾=‰ ñ=‰‚³=‰c =‰3r=‰ h=ˆë<=ˆÍÀ=ˆ°´=ˆ’ä=ˆu±=ˆXu=ˆ:§=ˆƒ=‡ÿÐ=‡â?=‡Å.=‡¨=‡‹c=‡mÃ=‡P¾=‡+ù=†ú¾=†×c=†º•=†œx=†Ù=†d=†Fí=†)l=† H=…ðº=…Ó¬=…¶Ú=…šU=…}==…`¨=…C=…%A=… -!=„í€=„É=„¡œ=„ƒÊ=„g=„K=„.º=„ç=ƒéô=ƒÁ>=ƒ£s=ƒ†×=ƒj¼=ƒO)=ƒ1+=ƒº=‚÷Ÿ=‚×Ã=‚ÀË=‚¤±=‚ˆô=‚lß=‚P~=‚4Õ=‚Ë=ûê=ÔP=¯¢=”ñ=yG=]p=A=$]=€ü°=€Ö+=€¸³=€\=€Ø=€f=€J[=€.Ï=€4=í@=¸0=G=I=^=~Ú"=~¡Â=~i=~+Ë=}ÖŽ=}=}4ž=|ü`=|ÔÚ=|³4=|ˆ:=|KÎ=|={í={´ƒ={hw={&§=zð{=z¹=zƒé=zNr=z"=y¼ä=y|4=yF;=y¡=xÛ4=x¦È=xqµ=x=,=x=wÑ´=wœ =wf˜=w1¤=vûî=vÆÔ=v’!=v\™=v=uÐ!=u˜)=ucj=u.Å=tù¹=tÅÆ=t‘Œ=t]=t)L=só3=sª±=sg2=s1ó=rþa=rÉ¢=r“ã=r]ô=rÚ=q͹=q—þ=qc|=q/=pûÎ=pÈd=p’Ù=p\ä=p)G=oöt=oÂÄ=o¯=o\“=o)$=nõÙ=nÁÛ=nˆ•=n?Ž=nÒ=mΙ=mšÃ=mgz=m4`=mÛ=lÎâ=l›v=lhà=l3[=kêÉ=k«å=kx`=kE&=km=jà=j®v=j{Ç=jIž=jþ=iá =iš‡=i]É=i)|=hì.=hÄ÷=h›E=hq=h1½=gì™=g›=gcï=g1§=føv=fÍa=fž]=fm =f;ß=f 6=eÚ=e¨/=evn=eDö=e¬=dã>=d±L=d=dQ=dä=cÛÎ>еÂ>Þt`>ë°>÷™°?X–?YR? ^>÷—Q>님>åN`>à˜à>ÕÛ>ÄŒE>´›¸>®0³>³Á>ÃD>Öie>å\>êÖ>ãv>Öƒ:>Èß™>½Ã¸>´vZ>¬Þ.>«+â>´ò>Æg?>Ùºº>äš$>ã!Ý>ØÕw>ÍDÿ>ÇPT>Ȩ>ËÇã>Ì·>Ëz>Í5>ÑÉô>Ò£}>Ñ>Ó€ >Ûh>âk®>⺠->Þ$½>Û›ç>àVÅ>ìp>øÆm>ýî>õ–>áåN>Ì›Ÿ>¿zo>¼g°>¾^£>ÀŠŒ>ÀÜ9>¾û>¸‰D>µ`¿>¹^U>Â&_>Çòâ>ÆíÛ>Ã-Ó>ÁÈQ>Ày³>¸˜€>©°>œÉ>™;'>¤ä>¸GW>ÌÐp>Ù2â>ÛØÃ>Û2ý>ß Ð>ée¸>ôÖî>úÇJ>ø¶Ò>ò>í¯>î>t>ôwO>ú>û¯Ú>ø7’>ô#>ñ`Ë>ì¡7>áÒJ>ÑŠF>À¨f>´6>°û>²ÝÒ>¹¤’>ÁÖ¡>ËqZ>Õ‚Þ>Ûpw>Ú3ë>Ö~9>×üÀ>ÞæÕ>ããù>áéö>ÚàÞ>Ò»¨>˳¤>Çšt>Ǥ>ÊyÎ>Í®À>Ñ&[>Öƒ¾>Ý€A>äV¤>ëFæ>óâ>ùR>ûi†>úìf>û>úÁ+>ö"è>ì2 >àBî>Ö!ÿ>Ïì¯>΋À>ÑÉò>ÙF©>åXˆ>ô,ž?9‡?JÑ?èÇ?Lp?üA?¯>úæF>ózO>ë>ã+í>ÚëÊ>Ϲ{>ÁB>³Ä:>«û>©-@>§li>§k¤>®L>½P>ÍJ5>ׯ&>ÛÉ®>Ý“>ÞHú>Û£Õ>ÖÏ >×zê>ãöØ>ùù?N)? eE? Ž?2D??–??Â?:ò?µŠ>îÅq>Òa3>¸zÍ>¨(>¡Äu>¡  >¥3¨>¬f¼>·vV>Å)›>Ò=á>Úö>Þ»>áºY>è¼'>òÃÞ>ø>ðÿ{>݈X>Æ -÷>´Tî>­úÐ>²‰w>¼Œ…>ÆdF>Ïâñ>Ýø>ðúa?¢2?9}?KÑ>ùÈý>ò>«>ïøè>ó->ý&?ÔQ? üâ?ŸÂ? éÐ? -ª>?±Ã>ø:„>å¦L>ÖÌs>Íén>Èæ¤>ÃÀ>½ðŸ>½z0>ÈC½>ÙÂX>奫>çE>çM•>îZ¶>ù˯?×Ý?ù2>û\–>òà>똉>êµõ>ëG­>æðÉ>ÜØ>Í”¯>¾,e>°fÈ>©%>¬ûc>»€Š>Íç>؉>Ö³N>ÉA,>¶;P>§$>¡à>£=>«6>´Kà>º“>½ø>Á©'>Ë|m>Öœð>à%Ë>êêD>ùÇY?‘ÿ? ¸t?ê…? -’Õ?·„>ñž7>益>ç¸Ó>íĈ>ò»>ò…†>íÿS>éFð>éýÇ>ô ±?€? -¶¦?ì¿?dë??Ê«?(Ã?‚ó?¥‰?@\?Ó ?Šj?±Ä? ¿@? b˜?B7? ó?I?pA?†J? F?®?I|? GÐ?™ ?M ? ±†?F¹?º,>÷Ô>ôXI>õ)¿>ø(l>ýX? ÷?rv?¬î?‹`? î? -y!?}?â>û€é>úsR?äE? -¥?†n?5G?ôg? ? öÆ?#;Ä?"’k?k?úë?%ü?Žë?!UÕ?$•?%Γ?#Î?õ?0¸? Äf? ÓC?`5? -i?áº?Bï?R4? °?ýÞ?À]?6?9Õ?0? -„y?1 ?Í?|ë? œî?“?ºâ?/e?<‡? ã?7?Õ>þ†>ðÓÔ>òô?E? çh?œ?¥?Ã? ó(?8?—X? ;l?˜Ì?£?Í?°.?*!?Ÿ=>öe!>óë‘>þiê?ºÚ?Úû?î?2É?µæ?Úþ? O? U™?ÜY?J?ƒ^?Ó?zC>ðp½>Óâ/>Ê…þ>Ûº¦>úÖK? -T?«I?Ûó?ι?¹Ê?¡?õõ?Šr?àû?z>éü…>ÐðÎ>Ç Ó>Õ›>õ©? -ø~?d¿?e6?'? ”ä?¥™>ùãI>ñ°l>ñþ´>ôÛ>î>à¹á>Ú>å`W>ÿ^?†¶?„X?öâ?zÒ?„(?1>óu>í >÷Æy?Œ+?dm?‹?oŸ?™ã?[?÷Ÿ?xù?Û/? Ê?8?ïÐ?#‹?b½?ª>ýO`?MK? -É-?Óû?å?!F?!Ôç?!Ï›?!¶Æ?0a?)Ì?ˆm?y™? -Z? Š? ³? T‰? ã? ³Ð? -Ð^? ([?Úê?^î?EU?ÆY?Uø? -~? “Í? Yë?„à?\Ñ??".’?%‰?$¢ê? ùf?Ñ?Yû?v‹?;Å?qu?u"?%?:ð?#t£?*Òs?.÷d?-—{?&ÔD?ÈË?–À?#Ù?âa?#R?#á?!„C?ŸÅ?Pß?Tg?L6>øv>ëá>ë#³>ô 6?M}? ?¥ù?kâ?D~?&~k?*‚°?+?(7Q? ún?w?ó -?u/?!ï?)Hw?*2ë?%2¢?¶ã?&W?Ÿ$?is? §?¬ô?k§?mü?û¶?Êñ?ˆ_?ûT?–”?ËÓ?ø¸?"?#­š?#1Ž? ‡?²•?æ? -Ç?½>þáÁ?Ÿ–? -£u?7?}Ý?á? ÍÒ? Me?e¼?H?ù?ú?%J*?-Óö?0Ëi?, f?#‹?J¾?_–?ôŠ?Ã;?v¯?1??O>ÿæÄ?†B?q?Ûœ?'b?+D?,è™?.ÙÔ?1WY?1¢tÃ?;Zv?:ïú?<‡¿?<ð?;Pª?:I?:í?:¾ï?9tý?:ŽÛ?>ö²?C ô?CxÆ?@&3?;`?7h ?7ª?:úÝ?=ù¿??'??a?=çÐ?;%:?8å?8Š„??Zü?G{x?G˜?©±?B'«?Eˆ7?G>›?F~G?DuD?+‰Á?*i?xå? bÃ?'Š¦?-XÇ?2Âœ?7üJ?=o¨?C¨+?H»=?Iìû?GYÓ?CC?=ܧ?8/»?3 x?0 ®?0ÊL?3¨z?5aA?4²Ù?2˜O?1Ó?4¡ƒ?Ék?>w’?:A‰?2À -?+ÿÿ?*8~?.ëà?7¹e?@r?E$/?GºÖ?H³A?GYÂ?D,`?A‹9??=?;U´?9aö?@ B?MO?Wz\?W|v?O0=?BÞ?3µ.?)™$?'B¡?+8X?2S¯?93y??L¸?UBÆ?^ ?j²?n€Z?dÑ3?PÑ?7tÖ?"Á?Þ.? ™™?3{°?GØf?V‰Á?Yi?RC`?PE?Wl?[on?S7?Bw†?-Þ?? -ôh? õå?.¬?&¼?8YC?J‚ª?Zsâ?g&ÿ?n",?kÎÕ?aÀ ?Vü¹?O”Ü?G»•?<+U?-S—?­ê?ì>ý³o?ü“?›?3Í?J Â?[u‚?h€¯?nDË?g²î?WŽ¿?Jæ?Fºõ?J¿u?Pö®?X‹³?abÝ?h»?lÉj?klt?a‘ ?Qd%??ù?.+`?8?ÄÕ?}?(Rÿ?<ŒÏ?H½]?Ni?TÂ7?^ÅÄ?jÅî?vu0?|V?‡Ÿ?ŠÃ+?Šn_?‰Ð]?‹ys?9??ˆûa?|!‘?hŽ?`t?]•Ð?Z°²?Yf¹?Yš{?Vƒ‹?M -¥??b?1»Í?$Æ?l™?Ž?¥Õ?ˆ¸?%Ä¡?<~„?PhC?dG}?t¢G?{4k?x¬?p§¢?m-[?uG?ƒî?éÆ?”b?“~?‹Hî?}{ÿ?j>?eˆ‡?mŽ&?}÷·?‡TÝ?ŠAX?†%?Õæ?}Á?ƒŽ?„*³?y©U?dâ?XH?S<?P k?M±Ù?Kp?G{?>ï?1>Ô?Ü]?¹R>ÿÉÅ>îÒ>õî~?Ö¢?ü½?#!/?,ü?7É?GI?Xÿ?eQ‡?i»?i¹ž?kƒ¢?t#È?~§r?€}?yçW?y¡£?‚‡?‰/?Œ-8?Œ¤?Ši¦?ˆ›«?‰µO?Œx?‹gu?ˆ4?‰È•?Ÿ?•¸?•¾ð?•$7?•­Ì?•«2?”­?•°??™É?ñô?ž)Ä?—®?ŠK6?xß:?p7N?~ ¿?‰«?Ž ?‰2÷?~#Æ?r‘Û?y¡2?¶¦?~†y?nƒ^?^§Š?PLÒ?*Èr?É? -ù+>ü$¬>óÛb?üZ?•z?+Õ?:{Ü?B±›?GÑò?M©Þ?UE.?[`?]´?b‘?oã?Xì?†d»?„*Y?€"m?x²2?lÁ0?cΚ?i?z7#?‡z?h‡?”­?”'å?´#?S?‹ºš?‰ØH?…Ÿ7?‚v)?ý?ƒ"k?…˜/?Š*D?‘ßm?›Ud?£‡?¤Ô›? W%?›•Ï?—Ý ?‘Û?†ás?wY?_Üë?ApJ?& ? ;? -íJ?5.\?fa¬?„tœ?¡?”…ó?˜±{?”¾”?‹-ë?ƒGí?€0?‚É ?‹¾q?“ë&?’„?‹&?…ÌÓ?…ßø?†’µ?„?àâ?„÷K?‰'}?†‡?.?|ž”?…-z?Œ–²?Œ˜]?„>c?s‡?d·À?]æ?TïÑ?Dûƒ?*2Ž?„T>Ò˜;>°ÛÁ>¸‘ñ>àèÄ? -ÅÁ?"Q’?4¥[?E;é?T˜&?_ÍA?i è?w'„?ƒÅ9?‰Òÿ?‰¢*?„aº?€q ?{Û?†s]?Œ1¥?o±?“yø?”Ãz?“xþ?’Lâ?“ç?—å?˜àä?—8T?‘öµ?‹;Ç?…õ?…ä·?ó„?šT]?¢Vý?¢–Z?Ÿv$?œåa?˜\8?ïD?ŠÓA?/!?œ—?¥?¨ò‡?©Û?§Ò?¥Ä‹?¤•Ó?¤pÔ?¤Å;?¥fø?¥V´?¦²è?¬ª?²ØÚ?²a?ªÖf?£¨y?ŸcD?žû?¢‘é?­é?µ\™?µQ%?­ƒ/?ŸþÎ?‘ðF?Šï«?Š?•Œ5?ŸŠk?§gß?¬ét?°fŽ?±R“?®ö?©‘?¥EŒ?¦ 6?§}*?¡ß©?–; ?¢Ä?šn{?ªg†?±T¢?¯1?¬šp?©??¢Éd?›®u?–Ém?–|[?™Þˆ?œrL?/? D -?¦–?¨yÔ?¢Z÷?—I?‘‹l?–{´?ž ?…?˜W‘?™4Í?Ÿgë?¡NI?œ”?˜†?˜2'?™4°?•S±?Š„|?xò½?hH?o¨F?„Ml?‘,Ê?™3§?™Õz?”sº?»w?ˆŸ?†´g?‰±G??•"?–ˆ¦?•ƒˆ?’ñN?ú?Äž?Š‡˜?„W·?y?i,Ê?X„Ñ?E/§?-U=?Šë?Y‚?­y?,­?HJB?]ƒ?i¦‚?qGð?uA÷?u¤Y?wtñ?±,?†¾?Œ>ß?‘ÛH?—f»?›?˜Ñu?®Ê?ŠOÝ?‹?Ž…n?ŽÞ?ö–?SÕ?”ا?–1½?’:î?‹­ü?‡«½?‡í?ˆé£?‡é?†ùS?Ša?’ž‹?œ…ˆ?£j¾?¥€Á?¨®d?°–?µDw?±p;?¤pÉ?•§Ž?õ?–j’? 2Q?¦{Ü?©=?¨ -?¤†]?¢ø?¤?£×ð?Ÿ÷µ?š9o?–æù?—ö?š% ?ŸA?£MY?¤jJ?¤ó?¦¹ú?¬´o?°ðù?±‚z?®É?£çÝ?ªÓ?¯Š¡?² ¶?°³˜?« ?¤èX?ža–?˜=?”r¸?—R=?œr?œÖ? û?¦lS?«/Æ?«6™?¨Üê?¦¶#?¥’?¤=Þ?¢#2? f?ŸÄ5? '?&?–Ù?Ž" ?`¼?—®k?£q8?§3‡?£àÞ?ž!?˜˜?•sˆ?‘NÜ?‰mÁ?„jå?…—=?ˆk?Œ#?Û–?’øh?’\ö?w?C?ŽhÖ?—¥ë?¢a1?£Ç­?š¨ -?D ?Žs?–•?ž«q?¡Í\?ŸÄø?›,?—…Þ?˜µK?š‘ì?•Iè?‰ ? =?„µ?‹š&?Ž“o?Šµ@?…`?È.?~%ó?w30?ntý?^4?CÿÐ?(?|?‹3>ÿw'?*~?k?,Ry??Ô?RÈ£?f(z?uþþ?€ëg?ƒõ ?Eý?t…]?peà?€¼?5†?•ðƒ?™ªo?˜j,?“v¨?Ô?”Aa?™º\?Ôñ?¡Âå?¥šu?§Xc?¤Új?ž%?–]Ü?”£Ü?˜Ü?  -G?¤kO? d?–=ê?‘‚ê?˜ý?¥b%?¬´×?­| -?«UÃ?¦ÎL?œƒß?az?‚T?ƒë¬?‘]?•ï?š‡?›ˆ_?šy?š¯“?žc?Ÿ ?šÅ?˜†?ž1ñ?£¶? âÛ?™F?’æ6?”³l?œ¹? µG? #5?¡ó´?¤7´? iJ?›9è?›¼F? x?¥ì?¨==?¥i’?…þ?—vº?•C—?•Òk?›¢?¤›?¨š9?¤~?Ÿ1:? dz?¦\?©%õ?¦æj?£S¿? N]?œ§ñ?›ü=?ž![?Y7?š#?™+;?I?¤Ê!?¬/™?¯ìU?­š˜?¤Œ®?˜,?âß?’y?*$?¤¼³?¦â?¥Ëù?£ ?ž‰©?žŒµ?¡äÆ? zá?™„W?•j?–ÿP?—5Ð?“íÙ?‘Ò]?5r?ô‚?Ço?—€Õ?›X(?›6?™ ?•f?ùŠ?öd?–Ž¤?žz?¥…q?ªñg?¬Ê†?¬½Z?®´.?­í{?£þG?“ýÛ?ˆýB?‹øµ?˜T -?£B?©Š?«g¤?§=~?žê?–Ð%?–Ýr?D’?¤M?¥Þä?¤Dk?¤ä ?§"]?©¡Þ?ªè8?¨~à?¤(e?¥o‰?®;³?¶nd?¸Í4?¶ø?¯Ö+?ªï?ª©Œ?° Ã?³{Þ?²†‚?­Ý?¦ú´?¢Ø%?¤¾i?¨m5?©Tí?§Pƒ?¤×L?¡h9?œÉ=?›¯”?œy–?œj€?œf ?š„æ?—tö?—ˆ?™¹?›§ì?™‚7?–ÿà?œ'?¦ìÖ?¯ ‚?®·E?§a¶? }?Ÿï??¤äÉ?¨@Š?¦Ÿv?£ÝÑ?¡º}?z’?•ÓM?‘Þô?—Õ ?žü½?vÿ?•W×?/æ?“îº?œm? OÇ?¢bö?¦7Ò?¨·C?¥Ð|?ží,?š¡ç?œÔ—?¤8w?«æN?¯›?®Ói?©L?£,¹?¥—a?«ˆ -?¬vv?ªß8?«— ?«Ÿ@?¦·½? Md?›A"?•õ?“r?˜àX?¡¨>?¥QR?£Á²?¢Bö?¡_U?…ˆ?˜OC?—ê$?›e¹? @?ÈA?ŸÜÏ?¡…N? I!?•_?ž¼>?¢›œ?¤??¡ö*? ¥*?£Ó¼?©’š?­ne?¬˜.?©AZ?§=î?¦õÒ?§‹?¥ ?¡²Ä?Ÿþ6?Œþ?›åd?  í?¦ùF?«>ý?«)¢?§Óë?¥^©?¥ R?¢Ú^?ŸÍ?¢²?§‹?§Ý?¢Îú?ŸLò? P„?¡ÎE?¡«ž?£ -w?¥–?¦þa?§1×?¥ÛG?¢÷†?úé?–õ?‘çX?’þé?™ÉÎ? `?¢ù·?£¢‡?¡ä\?¤Á?›’?œ¢Ö?¢Û*?©FS?ª¿d?§q©?¡ô©?I?šFX?”9 ?ŠVÓ?…cä?‰óî?’× ?šGs?aº?ž8? ÔË?¥À?§^F?¤ŒÙ?ž%?š! ?›=?žÝë?¢Ñç?¥Úü?¦¢–?¥Åk?¤àÝ?¤*?¢«x? ƒ?žŽ©?žÉò? îr?£Q?¤õJ?£ê»?Ÿ@y?š>-?—ü…?–‘Ø?“Ï?’'?”¸±?˜®ü?˜vä?•"p?“öÎ?—:³?œ‰l?žín?›þŸ?–Û?•åŒ?š¬Ž?Ÿò&?¢´À?¤H?£Ñq?¡×p?¡9Õ?£wº?¥}¨?£¶ -?¾ ?—ón?•Kñ?“Ÿ#?“/¶?—¤?œžá?žâ—?œP?™©4?›ä”?žôì?žÓŠ?ž”ž?  ž?¡%Y? —*? N¤? _Ï?ŸEÆ?žØî?Ÿü?ŸLG?œ™?˜ô?–]Ò?”’?–\L?œ«ï?¢ê½?¤Vn?ŸûÄ?™8?”>×?‘õŽ?‘½C?”ª$?šî?Ÿƒ}?¢V? Í®?ž?žÜ¸?¢#Š?¤=I?¤Ÿ†?¥7I?¤òo?£Fø?£.Ò?£D”? …ã?ž;³?œÈc?™@x?—Ì®?™-h?™õ$?›Ï§?žÏz?¢'â?Žkœ?³…?£y??¶ ?ŽáÁ?Š|?„1f?‚ŒU?ƒÇ«?çx>ÿ.Ú?'Ç?*ËÄ?@,?Q—­?`ùÈ?m??qTå?jÞ”?e*U?kÿ^?xÇ´?€G]?ô?„\ƒ?Š‚®?ÿ˜?’©4?Ž¿?‰Mf?…—ì?„ö˜?†…À?‰ü?Šžæ?ˆÖÉ?…ì;?‰U±?’^ï?™¬C?pÎ?ž>«?œÏ8?˜VÔ?’çH?Ø[?ƒ…Ø?„è¾?‡‡ò?ˆ¾ý?‡Ä?ƒ»?ƒÖ?ƒ;«?Æþ?x%?lF ?l£z?t¡É?y“¤?x?uR?x\ù?~Õ?}ñÕ?yÑ?wë?tâ?s;#?zU¯?‚È?ƒÃ?ƒÕ?ƒ?UŠŠ?a™s?j•î?mYZ?nrª?níØ?mUW?k°Q?mÈœ?oÈô?oå?o‚0?kŠ?eF{?g‡v?lت?nÇî?n’¡?nçq?n‘£?m±¶?n›?n-?j?d}…?c£r?i´?jó?ií×?kÜ+?n"£?n& ?lê?jû‡?k €?lÊÕ?l‰Å?i*¹?dõ:?eŠ‘?gɪ?fÊØ?h­æ?k&ê?j'?hÒd?i½6?jþ9?kZÉ?l%ò?lD‘?ks?i—î?j Î?lÐ?lÚ?l"?ipd?e8ì?c¾}?f?i;Õ?jZw?FÁ$?L³þ?Q®J?P„r?Lá—?NÆf?Qn{?QÎ?Qg?P°—?Q$?Pr?OH;?Q!?P}Ã?Hb?@Pþ?FçÓ?N½?LÞ&?Gìª?J†?OPÏ?P2?MÌX?LÆá?N9?NÿP?O-1?N&O?Nÿ ?P`e?Nû‡?Iœ?G«Ö?Ko?Míß?N§X?M;)?I=#?E"}?>'‚?3ûF?1{?>£©?Jrá?Mt¼?N-N?N[÷?NAB?MÜ‚?M ß?MÏf?Mì·?Lek?F|??Wü?@Ýf?F‚s?Jƒ±?Ku?J3F?Idú?Gç?Gxo?I9§?Hâ¦?F³L?Déã?EW ?Eb—?D[Ç?C\Ÿ?AÜ??¿?;‡?7Ö?7DÜ?7%F?5©?1K‹?+ü¾?&?œ}?›Q?m >àÎ,>»Ák>ÜY3?Y? ?#3?%?+cz?.¥e?1ß?5V?8©¶?:Ѻ?)?>´ú?>Ø`??«©?BK?B–?=ùÂ?9åÊ?>‰À?BÍB?B.!?CÑ?Gf|?Hy?FôÒ?E‚Ð?EE9?Dé?DÒÁ?E§I?DÎk?Eä?FÕÍ?G³ý?H2ª?H„?Gî]?GóŸ?GJ¢?EMÔ?D‚´?Eˆ§?EIÛ?A­?>§ö?BÂ?FRã?G4{?FÔy?D‰??]Ó??‹O?CºP?F#?G)ê?GFm?G Ô?FÂ?F:9?FŽ?F ¤?Ej?CGz?@Þx?C®?E9?E—Ã?Dy?Cbí?CŸ$?DQR?C [?=Ý -?<·?@zO?D#n?E¢?Eµ?E[?D?C6Õ?Büí?Bî¥?B£s?A†ï?A:?A{-?BSN?C/?B,Q?@j¿?@¶ ?Aþã?BŸ\?Buœ?@ú^?@a??'?=¾ý?>Ë?>H›?=×?>y?>z±?=0d??C0?@Y?@AÊ?>ì??> ›?? á?>Gý?>:?>­?=ƒù?<+ñ?=zL?=mÌ?9Á¼?9N?<Ý?>Ä·??(?<.N?:Æ?<0¤?=ª?>??\,?=ÊÝ?8´q?8?Š®??e ??êÑ??;?<Ø©?;ò›?d?:ª«?<å?;ø9?: #?6•c?7”Õ?:’÷?:ö³?:ê?:°Î?9ù=?8ý·?6d{?3ûj?52j?8|´?9ÿ!?: 9?9ö·?9tR?84¾?49Å?2q‹?4xŒ?5¿W?5K`?6VÝ?8z•?9>¢?9Õ?8éI?8¦’?8Ó?8ƒ?8…?8Í?8xS?7—?5*0?4Ù&?6/l?5¶ê?5úÌ?7­9?8n9?8fq?8?7¡ú?7R?7,º?7>ì?7`p?7:Å?6¢?5¥*?6¬?6h?4íÉ?3ã?22?2­Y?3û?4~ë?4h6?4šù?3)ê?3;?5/ž?5wÁ?4ÝO?3ÝŸ?3ש?5?55C?5?‡?5~+?5?31?1d ?2”v?3éÝ?3„Î?2šÖ?3…?3!g?2ý³?3¿ø?4®?3X?2Z ?32?3è•?3ý»?3¼Ö?3!É?3Vn?36?0Ž?,vo?*ËÊ?.YÄ?1É?3#E?2Љ?1ÿI?1á¯?2 W?1sê?0¾ÿ?1I?1Š?/×M?.7Ë?/J ?.#É?+ÃÇ?,µº?0³?0óÜ?/›!?.å†?.”!?*á³?+:?/ÍÓ?/óÿ?,J!?*/?,ðß?/w?/è?/o‘?/Ý?. -¹?,q0?,ôÈ?- ?/b?0ÌØ?0u˜?0¹Ý?1 î?0y?0s®?0U?.‡7?-ÚŽ?.Z€?/ÌÓ?/šº?.ï(?.Q«?-–—?,?+Ÿ³?-ë-?/`?/ƒ?0m¥?/­Ÿ?/ -t?/öz?0ý?-[¦?*Ø£?+Ù8?-„Á?-0Q?+ѱ?- Ì?..W?-ˆ”?-–#?.ƒŸ?.éV?/l–?/ƒÂ?.ßÅ?-€?,Á?+àB?*¬s?*ÚÂ?+yÑ?+ã¶?,I¿?+d‡?(…6?*#»?-Lª?-¹‘?,¥?)À´?(Ì’?+X?-"I?-ð‹?.?-ñ9?-(}?,l¼?,¤?*ÿ?'5 ?) ñ?,XS?-U>?,œ?,T ?-@?-g‡?,ˆN?)ñ?$:=?&Sa?+Øi?-‚?-× ?-Ád?,Š?*Ie?*¯?*^?' —?(//?)ýÐ?'§r?% {?&ü:?'Í\?%š?$@•?&…õ?'×?)ü?'>ô?%`w?'Óô?%•œ?! ?$~?'4¶?&ߤ?%¶?%ò?&¨|?%»ð?$é?!Àê?!Ÿ?#Ê‘?$ó ?%ç·?'¥+?(ë?&Ÿp?$ù@?&±?%F­?$¿?%yB?$v?$H?&‡F?%B—?"š?$:?&?&©?&s]?%]$?!*?!, ?$¥^?%z ?%Ö®?%ü4?%Œ ?$¹O?#šO?"ú·?$†?$j&?$T?!Û*? ÏÄ?!œP?.M?dz?¤y?¤;?! -­?#³‘?#'´?!½ ?!)×?"ZN?#mH?!w¾?þ@?×?ó? ”?!ýÝ?!¸k?!)?’€?µ„? ræ?ÞÌ?Áƒ?"c?–[?3Ø?5¾? 1?!N•?!#¯? žµ?!F?!m? xÍ? Â? »š? %©?’M?¹Ö?éŸ?Œî?–?°0?¯?(£?Ìh? /Î?ë”?t?Ÿ?}ß?;µ?l•? Ž6? ð?\G?@?f?Ô?³ô?õy?©í?‚?_?nZ?Ð"?Oé?ÅÔ?)?[$?!X?̾?„Ø?¥`?®ô?9H?ž1?•Š?pl?t€?È]?@Ò? ™?(?¿?»0?cŸ?#å?×D?/?Ó?=?Â?_ ?&ò?Ï?‚Ï?úm?ã?}H?”¥?ê??|?¬¾?.n?‰A?êæ?ÔÀ?áä?ù ?ý|?â!?Øå?®j?„¯?x ?.õ?kg?°R?"-?þa?úq?(?ìÝ?ÏÎ?ó?]³? ¥©? \/? Ý?? ? ŸÏ?n?äÑ?c2?WÁ?ém?Aa?J?™??ïé?—+?×?ªŒ?lÓ?ïâ?Cñ?-C?ýÝ?‹X?ØÉ?ÏO?Œ?‘Ð?b ?„Î? „z? Zþ€»?Š²??«‰?°? m÷? ˜? -±&? l? \’? CÛ? O? î'?'þ?d? ¸?Ђ?Z{? :?ý„? —%? w²? x¨?‰Ã?wð?&ä?Ëd?Ÿ¬?‚Ú?Ø7?j?¢?iÏ? -Ö¢? À? <±?²r?qÃ?µ?»H?Ó?Ê@?òï?Çå?öÉ?`?.? ^¤? -"é?÷¾?M?î ?ô?ï? 5Z?Ìd? e¬? ¬8?n‚? o$? -·Ù?  ? -K†? ]À? -úw?Ãz? ²8?Gü?˜t? )ã? ]Í? ©? -W? -Ô¹? ? -´÷?:?³ˆ?©_?ä ? Ym? ±u??G?4Ÿ?àè?²[?'õ>øô.>ø-¬>òø>ìÚ¼>õÁú>ùG>ö®¿>ôf>øÙò?Œ?†h?èl?N?²ß?„¶?¯?¾8?‚¬? ?n_?L?¼´?ðN?Ÿ@? öc? _y?qÒ? R(? Æ’? -Ý -? %”? zã?Z ?gG?>Ç?.m?s^?nz?º±?ÖE?ÃU?+Ã?-??O¶?`4?A“?[¥?X?êÙ?üE?ݨ?ʹ?¤ó?œh?µ>?F!?Q*?ï-?1å?ó7?å’?’?ÑÕ?ì?8à? *s?b?Ú(?³Y?¥?ü?è?Q©?z ?–?%ƒ?iõ?)8? n?79?Ç?™g?Å«?€_?Q?_‘?dš?My?"Ó?ó¢?Ù—?ݳ?°Y?yh?Ñ´?ÖÈ?Ìó?Å€?|˜?x­?wújí>ú-Z>þË^?C£?Y·?ê³>ù5n>öMK>ü”n>ûá=>û¸>ý|>þ~J>ý8Û>ýf¼>þ>ýQ,>ýÙ>ýƒ·>üða>ö§€>úd·>ÿÂA?ŒC?ê>ú&>öJI>ú¿Ç>þ‹>þJí>ü§n>ýï©>þï·>ÿGÎ>úö©>ô·>ú±>þ9ô>ü˜ì>üŒ¦>ý|—>ý’„>ý?7>û°}>ü¬ƒ>ýTŽ>ü’h>üÿË>ü1#>úˆC>ûf½>üçß>üòÖ>üuý>ûÖî>ùe>÷ø>ú@z>ùä>÷Æm>ú4>ú˜º>ú¨>û±>ú5>÷(>÷™>÷æú>øò>ûº|>ûHF>ù5>ùŒ‰>ù˜õ>øq6>óäW>늦>ñ <>ð¼>ìÞU>êe®>îw >ó6a>ô›‡>øvI>÷B>óÍÉ>ö®>øà½>ù^”>ù˜û>ø‚Þ>öÕ?>÷ ->ø£Ð>ùR•>õÙx>ö>÷cÂ>ö¡ô>ôu>õè>÷Ë>ø_>øÍp>ù-~>öÄ1>í¾ˆ>êØ>óƒã>õK">ô½]>ôïÁ>÷*>øDÓ>÷7T>õ4À>óí}>ó¦Ø>ñëÞ>òA²>ò‡ò>ð»o>ñU…>ól>óá·>òþ>>ô V>õíŽ>õáw>ô;>ò–>ï®j>í¦g>ëäÐ>î#ì>ðf9>èÓk>Þ8ß>ëÔ~>ñ&U>ò&Ý>óÒ’>õ,>ô5ý>ñ½“>ðQ¸>íT±>çÜ0>á0~>æf^>ì¤s>ð…ö>ó#×>óg¶>òÀ/>ò±t>òbŸ>òŒY>ñ¼ç>ð9ª>îùç>í¹f>äݶ>Ƕì>ˉß>Ù@L>Ýa>å‚»>èÞé>ê§Ù>ëmU>æ`->ãž©>ë ˜>îÂz>ï½C>ðx ->îñ>êEÅ>ì¡ >ì|r>ë>èbç>âØI>Þ¾>ÁË>¥ô8>Æ—ä>Öô…>Üá—>á Æ>äýo>å^>Þ¿->ã@>éa>é‘’>ê7>ê¼!>êfX>étz>èef>éè§>ê?>ê¬N>é²M>åÊH>äÝ>à° >â”õ>áæÝ>ÜV >Õb’>Îî¹>È¡ >Ë‚¹>Ó¨Ð>Ù^|>Ûiâ>Ýæ<>ß2>Ü>à»>â">ã§Ø>æ)Å>åKš>çjÁ>éJ‡>çÑu>åà5>æ)`>å›Í>æ >æ~N>æËl>å¤7>åeº>â´>Ùcš>×µ¯>ÝÏ*>Ü+­>Øç:>ÕY>Ê%ß>§/>¡‘d>¸P>ÁÕ>>Æ‘a>Éý >ÏÉ0>Ñ™”>×NA>Ðç‘>Ó–Œ>Û¾‰>Û|L>ÔÞè>ÓÓj>à¹a>ÝÈ>Úp)>â;Ë>àû>áÅ>àè>â³X>ãî‚>ßxÂ>Ú]L>Þ!²>ât >ßÿ°>ß -§>á=÷>âŽ>à‘”>Ù©¶>Ø‚W>ݦ5>Û¯v>Ô³ž>Óù›>Õ

    Ïm >ÌH>Ê7š>¿Áx>²õÆ>°;=>¼žN>Æ+P>Ê›>Ò1k>Ô¢—>ѱ>ÖâM>Ûé&>Üø˜>Ù+!>ÔÌâ>Üëf>àQÌ>ß Ë>ßg3>à9!>ೄ>ßÛã>ØÚ>Ö»®>Øñ>Þb>àq·>âY½>âð>Ü™µ>Δk>ÐÂm>Ü“þ>á1 >á €>à;Ü>ßtg>Þc¿>ÚÍ >Òïb>ÚX¶>Ý]Ò>ܲ>ÚæÎ>Ú*•>ÖÕ8>Òf >ÕY[>Õ´Ê>Óy¾>ϼ >Ð7à>ÏeA>Íð>>ËÜ}>Ç¿>¿qi>²€/>©äý>´óª>¼»>Æ`Ã>ÌcL>̼]>ÌÅ>Ï7‡>Ð> >Ð^A>Ïz >Ò 2>ÔlI>ÔSÃ>ÑIî>Ñ9s>Ó²š>ÒË>Ò!>ÓDí>Ód˜>Ón >Òš0>ϼj>ËIŒ>Ð.“>ÒŽÊ>Ðk»>Îœ >ÎúŒ>Í8©>ÈĈ>È)>νl>Ñ1õ>ÑÁ>Ò%>Ò <>Ñ+,>Î)\>Êǵ>Ëm>Í¡>Ï°V>ÑBC>Ñ;©>Ñ3>Ñw>н>Ð y>Ìû6>Ën>Î:—>Ï’„>ͼÎ>Ê°Â>Ë\×>ÍÌ>Îú'>ͧ>>͸>Î.±>ͦN>Ízc>ÌÛ—>ËPF>ÆéY>ǽ>>Ë"h>ÉÕX>Åm>½þ >¹3¸>¯¨—>©“ð>¶ñé>À'>Áš>ÄèÀ>È>ÉŒ`>Éë¦>ʼ½>Êü¼>É~>Êkw>Ëâô>Ì@½>Ì ->Ì6«>ËÀn>ÊR9>ÊГ>Ì%2>Ë—>>ÈI”>»®¸>¾3v>ÊXH>ËÉe>ÊïÖ>Êè>Ë>Èè8>Á9>Áñ±>ÉMR>ÊQ>Æ‘>º[C>Àá`>Æ€>¾nO>Äv>ÆU#>Ç(>Ç«‘>Æôò>ÇŸo>Æî0>¾Äæ>ÂÜ*>ǯN>ÄP”>Å Ò>ÈPw>Ș>ÈT}>ÈVß>ÇåÄ>È1>È_Y>Ç°>ÇÖJ>Ç>dzH>Äñ>ÁƒP>Å8>ÇœÇ>Çù>Æ·>Ç>ÇMÑ>Æ}>Ä~G>ņø>ÆRö>Å•“>ÃjF>Âù´>Ć6>Ä‚U>Äw0>Ä7Ú>ÅF_>ÅVì>ÅZÄ>Å\|>Å+Â>Å‹>î->Â0>Ã;å>±>–Ã>¿Y>»K>·Çê>¼€ï>¼}>º{¯>½ÕC>»8¹>´²ï>£ø®>ž¡†>¯·À>¸£z>¸Y>¶²p>½Ì¹>¾Fç>»&Û>¼5›>À<>¿òr>»ãó>¸v>¹=¸>º÷î>¼Ãª>¼ˆ+>½‘†>ÀÀW>ÁÍ®>Áž(>ÁЗ>Áʈ>ÁS<>ÁRƒ>ÁB>ÀöÌ>Àka>½Þt>¾;y>¿ C>¾ÝN>¿éJ>À‘K>À‡ô>¿øm>¿œƒ>¿2á>¾ÉÀ>¿“K>¿âv>½‡>¼ä>¿l>¾°ø>¾»ñ>¿:Ù>¿Ÿ>¿,¢>¾;ð>¿#>¿Is>¿ °>½¢n>½EÏ>¾=j>»¿›>»ÚÄ>½Z&>¼úT>»ÒŒ>º•T>ºÙ¡>½8'>¾t>½¨Ð>¼f—>¹÷>¼c>½i€>¼°¾>¼‹Ù>¼w…>»r²>ºw®>»…@>ºFã>º’">¼9–>»EÜ>¸Ï`>·úÏ>¯ÂÈ>´ë<>¸‘>²‹i>¨ÌÄ>´‰Ž>º˜Õ>¸s³>¸=!>ºï+>ºÝW>¸¯>¶áI>·g{>¶Œt>±_á>¶´ˆ>·âu>µ+È>µ >¸Kð>¸´Ò>¶,ó>¶Ê>¸§c>¹9Ò>·Î>µ÷¾>·¤ã>¸ÁÆ>¸y,>·þo>·ñÈ>¸×A>¸¿à>¸iÚ>¸Á>·.„>·ÕO>¸QU>·é>·>·}>·¦³>·Vz>µíÙ>´@Ê>¶ >¶ŠI>¶4_>¶IÌ>¶‚Ž>µD–>µ¾>µîÙ>´¼š>³áh>²«þ>³E>±ºw>°Ô>°>­.°>¥j€>•Ô>˜•>¦Zb>¬7í>¯cµ>°c«>±Í`>²L >²)=>³?>³2…>°²>°fÞ>°àˆ>²d1>´Û>´1W>´ë>³l>³V>´>³‚(>²9k>³Œ>²*>±`.>¬ø‰>®'ß>°GÇ>²Y5>³h¹>³mÂ>³=>²i>«Ô¼>®Ä>° >­¶:>±–4>±:R>®bV>¯š¨>®ÜE>°Tx>±û>±‘?>¯êA>­õü>®®Û>®»…>®œ4>§#;>¬ -¸>°°—>°‡”>°¶?>¯ú>­Ÿõ>­š>¬|¬>­øA>­#&>®zw>¯™›>®†Þ>¬=>¬Žì>­™*>®êÁ>¯ ¬>¯!®>®Bt>­‚»>­ï}>¯Tn>¯'¡>¯P§>¯!ÿ>®Ô!>®Éè>®x–>®ŽÊ>­k>¬žS>­óÆ>¬Ìß>ªæ%>¦¬>©Œ >«°>«Ã3>ª>¬>­W>­É>­i‰>¬Þ.>¬œ€>©- >ª‘Z>«°>«#v>¬bÕ>­è>­™>¬Í>¬>©›>©:>¨4>ªNÓ>«·Ã>«œù>ª/>©K³>©f>«¢e>«Äf>«A>ªì‰>ªØ>«nä>«]Â>ªßb>©|m>ªeÐ>ªý>©±‡>©ïh>¨à\>¨_>©á›>©““>©Û”>ª>ª>©³Y>©3x>§ð?>§1>¨K>¦iQ>¥òI>¨éý>¨ó’>¨½é>¨{À>¨¤ò>©#n>©ö>¨!É>¨,<>¨RÂ>¥Ð>¡Ûƒ>£ì7>§¬ï>§Ÿ>¤h>¥Âî>§5¦>¦’>§Î>¦ud>£í->¤`B>¦˜>§~Â>§-l>¦“û>¦¼«>¥ó6>¡=)>¤ >¦°>¦“¿>¥×'>¥m>¥È¸>¦Ù>¥ Ž>¤fj>¥_+>¥>)>¤ÿ¯>¤©*>¤Ò^>¥t¦>¥">¤¬+>¥ó>¥ ->¤V>¤} >¤hÂ>¤TÛ>£Æº>¤Ì>¤QŒ>¢ùM>¢ÿÐ>¡¢L>¢ÎÕ>£O£>£½>£×;>££¢>£z>£n¯>£P>>¢Ê²>¢v¢>¢xœ> À÷> Þ3>¡¤>ŸÑ">Ÿ^>œ$Š>­u>Lù>›ø>•¤J>‡tÒ>…ä>“í>™ØE>›E2>X|>ž£e>Ÿ!x>žûÉ>ž›œ> 06> ¬©>  Q> q> 7£>Ÿ¨ ->ŸAÀ> f1> »> ´Ø> ÊB> ÂÂ> ¹g> á>ž¡ç>Zo>Ÿ©ï>ŸÓ”>žûc>ŸQµ>Ÿü&>Ÿ´>œª(>šíz>Ÿe>Ÿ•Å>Ÿ1>Ÿw>Ÿ>Ÿ2>žø>.l>šî>îe>ž¹?>ž*>$>‹¦>ž‘§>œ½©>š\v>œô¾>âA>í¥>a’>ó>éÝ>5ê>˜m¥>˜/M>›—&> •>›¶L>›Âö>œÍº>œšÂ>œFæ>œ(¯>œmO>›¨>œ¨2>œì>˜FË>™ï>›Üx>œc½>œ>›÷#>œ_>œ>›å4>šéÎ>šÈò>›‘<>™yE>™ÚÐ>›~ß>›„Î>›[‘>›IN>›5å>›Z>š·%>šžÀ>šÜë>šÄì>šxX>šN0>š˜ø>š”‡>šnØ>šA¾>˜}¨>•CÀ>™3Û>š>™ó±>™g¦>˜c“>˜š3>™Y÷>™$Ò>˜ÀÅ>—_I>˜Ö´>™6A>˜ò@>˜æ”>—š>’ ¥>’Ì>–E>˜y>˜•·>—>•n>“å >–¢V>–î>—ËR>—´>—€&>—È>—£->—3ð>–ÁG>–ÿò>“">’êÈ>–öD>•¤9>•-x>–ç;>–ó >–ª >–CŠ>–fÀ>•m">“\§>•´/>–=¯>•·á>”²8>•Ò>– -2>–å>•¯ü>•ª->• >“æú>’gÙ>“fÔ>•d³>•=¡>”º8>”õ;>”ç>”Çú>”èç>“¹±>’ݘ>“Ⱦ>Y>‰£I>‹ß>ïU>“Þæ>”&¦>‘º>»v>“‡ª>“í·>“óÙ>“Ã>>“•>’‡p>’ª¤>“£>“6>’ÈY>’·é>’0>‘/}>’¾#>’²>‘° >‘w>’¶>{,>¾}>‘3]>‘ä÷>‘è†>@¹>Ž‚$>A>‘\ò>‘ˆÊ>c±>‘[p>‘¿Ù>‘šú>‘q>‘€#>‘ >‡<>‘t>‘:X>‘ç>‘y>Û«>$Ì>+´>)t>W>‹»>‡G>"ƒ>TS>R¥>¿>v>Ç’>‹É‰>‡ZØ>Hê>]K>Ž}ô>/Ï>ŽÿN>KZ>nì>0È>‹Ê¤>‹>×!>ŒÝn>Žµ>ŽëM>ŽÚ >Ž¾>Ž}U>Ž<ú>ŽW_>ŽQ >Ž!->$>‡7Æ>‹:u>Æ@>vÍ>”–>R>ka>g.>‹Ž°>‚Í_>‚•Ö>ˆ…Ü>˜>‚âÖ>ˆ`¨>Œè>ŒiÐ>ŒP ->ŠÛ\>…ÄÂ>ŠàÆ>Œ{t>Œ%)>Š‘–>‹Œ[>Œ\>ŠŒa>„š>ƒ$Ë>‰° ->‹¤>‹ÙH>‹Šê>Šo@>‰6È>ˆzÎ>„eí>‡Sw>†ùM>Š•œ>‹ l>ŠÎf>Š†­>ˆš†>‰ˆ>Š€1>Š˜p>Ša>Š9B>ˆä>…<†>‚Úê>‡þ>Š)>‰—>ˆy>>ˆñ+>ˆã,>‰X>‰kØ>…_>€>‡a>ˆ•>…ý;>‚@2>†ÝÒ>åÖ>Äh>‡™>‡0¼>‡šâ>‡ðÆ>‡•,>„fp>‡RÑ>ˆIÃ>ˆY)>ˆWD>ˆA>ˆ#>†y>„Gz>……Ç>vür>Zs>†Î,>‡g >‡Õ>„íã>ô>‚Ñ1>†Nß>…M¾>„ܼ>„h¯>†'Z>†dP>…ØŽ>…¶>…{Ž>„¯>|’>€Á>ƒÙÏ>ƒ»>ƒ2>‚2>€ÐÏ>}`;>t½º>\ú>U÷î>qs>{Ç/>€>>€ìC>}Gï>~,e>~EY>ÿ(>ƒOG>±M>€GÉ>ƒ«£>ƒïå>ƒÎ>‚ >x¬|>{ýD>€'â>‚Ì>ƒ»<>ƒÎZ>ƒºQ>ƒ˜ê>ƒ³h>ƒhG>ƒ4>ƒm¾>ƒe$>G&>òt>zmÃ>€V¿>‚©>ƒ¯>‚Ì>‚•Þ>‚ræ>‚¨p>‚u>Ï‘>‚ZÌ><|>çŽ>‚„Ú>Ö ->TŠ>l–>‚.Ì>‚;½>‚Æ>Û¿>·ƒ>ÐÆ>ö<>¨%>&>€ÿÈ>o‹>%î> +>]ˆ>€ïg> >>5> ;>€ê >€Çy>€‰ý>€]ˆ>{W÷>~¶Ž>n=>~­Ù>yô¾>{.ï>|¢.>˜]>€#/>ª>|’Û>}Ú­>~Tq>€Ë>~nñ>|vq>}Æ­>O>:ù>~æÐ>~_>~JŽ>}ü'>|ºc>}ö>zq>rªŒ>sܽ>|Ò’>} –>xW:>yݵ>w*û>{a¦>|Õ>|Ür>{Å>z?ý>{ý>|Æ>{ñ=>{žK>{+©>{Jc>{ÌÈ>{t>{Z@>{/î>yå>xþÙ>z½>r³ó>kê>qÅ>yV7>x÷>yö‡>zY>yÙ¶>yÇ>y_>xr >x†º>y4À>vÜâ>pWÍ>nÏF>uwä>v5>rÖ>sßÍ>uÎP>vSš>rÖa>tm>vv¿>v]H>vq >uû:>vZ‰>v©Ö>oâÅ>l“+>s¢H>s"g>s>ê>uj>t™i>tÞ%>u<>tñG>rK^>qPÃ>tu>tú">tÍ*>tM¼>s»|>l©>oúœ>q¬Ÿ>j{Ù>mJ˜>p<>l9…>lŒ<>rhy>p}Ó>kâÄ>h°â>dˆ›>m Q>p¢>p‘>ns >qˆŸ>ou>lAÏ>p:ü>pÀ>qGÊ>q/y>oÕÁ>iÊá>n¤U>m†»>j^s>l¤Á>oº->pqO>o÷>p§>pË>oÏm>oßû>näé>mc>o<>n¥Ï>nÞ>ká>l„å>n¦º>n 1>mè>mä±>mü>k¶>lŽä>mÒÚ>m§ð>mª^>mÆ>j>j1µ>iôI>lS_>kÛJ>luq>lŠ>kÚX>j¨ü>k²>l-½>l_>kú>j¨Ú>h™>j…>kA>k0¼>j­/>jßã>j©$>j|I>j]8>jKq>jq>h„6>hÜ ->en>]vª>d4]>i8ã>fÌ!>g5„>cÙÆ>](Å>]FÖ>f•…>g$ü>b³w>fû÷>hw>c€í>b”Î>gŽp>f“Ò>_<>aª‡>fZí>e¸ß>c¼>cú”>bp0>aHR>Xš>cùH>fP5>bº>]sÕ>aë[>cI¸>e° >döx>eÀ>dØø>[q>^Ï >cìm>d?Þ>aÃy>c‘±>dó>dV¶>cúã>c¬ð>cŽ`>c™J>co>c">c?i>cA›>cK¿>bºé>bšå>bœÃ>bÁ¯>_åh>Xá>[0G>L§…>ZE>aÂø>bÎ>aÉ ->`þh>^ÆC>\(›>^ >\0½>]^<>Wí«>_ÕB>`¹Æ>`“Ù>`Yù>_î0>\šù>]”C>_ü>_8{>ZVÏ>]bh>_/ä>\¤V>\¾º>]o<>N ">Só&>^?›>]òR>U›Í>XŸ}>]âÎ>\ñg>Ylh>]><>]¡h>]5£>[)%>WØÛ>[uV>]I>]´>\ ->[å>WmÈ>PƒO>Mt¯>YØ8>W3Â>Rž²>Qè$>YwS>[˜@>[†>[fþ>[Læ>[Kf>[#¬>["~>Zñþ>Z˾>Zp>Zfª>Z†Ü>ZP>ZF>Zž>Yݦ>YÞh>VW­@¼f@½o\@¾8,@¾t;@¾lÀ@¾N·@¾(µ@½ýï@½Ðç@½¤Ð@½wÃ@½5¨@¼®B@»°Ó@º_€@¹[H@¹F´@ºN@»¡@»”­@»°K@»—Y@»~@»k@»GŠ@»„@º³é@º~ @ºx>@ºŠÝ@º‹4@ºj -@º<ù@ºó@º@¹ÕŒ@¹‚#@¹) @¸ûF@¹@¹'ë@¹:ã@¹4@¹¹@¹@¸â\@¸Æq@¸­µ@¸–@¸6@¸h,@¸R¡@¸=¬@¸'@¸ @·î¢@·ÇÞ@·‰+@·â@µð$@´21@²_Ö@±)@²Bf@³±0@´~@³¶Y@±Y@®ž~@­oŽ@®±–@±FÖ@³eÍ@´U½@´Ï@´~X@´ŒL@´šÈ@´•†@´|×@´Yq@´/;@³ün@³¿å@³S@³E°@³Õ@²þ¶@²éø@²Í²@²÷@²:@±@e@°&f@®ÕŸ@­1j@«M#@©ýU@ª>î@«ß -@­•X@®x­@®¨L@®¿¿@¯@¯¨D@°x@°:¿@°2U@°Í@¯ñt@¯Í5@¯¨§@¯~@¯MÁ@®ô=@®U[@­yD@¬¹b@¬†T@¬ê•@­}m@­Úï@­ó°@­ëå@­ß¾@­Ó?@­Á›@­©Ç@­Žf@­r@­Uø@­:c@­(@­&@¬é @¬Ë2@¬ž@¬=@«rë@ª6š@©þ@¨¥:@©Jx@ªZ7@« ô@«nK@«n5@«P@«*4@«–@ªÝ©@ªº`@ªœO@ª‚¹@ªht@ªG/@ªâ@©ê>@©´ê@©bÈ@¨²à@§@¦/'@¥œj@¦,9@§Q(@¨9Ö@¨šœ@¨žÛ@¨€*@¨Z/@¨1Ä@¨‡@§Èé@§‡~@§DÕ@§ 3@¦ß @¦ËT@¦Å¸@¦ÁÆ@¦¹}@¦«~@¦—¿@¦ @¦dà@¦GÈ@¦%@¥ìå@¥i@¤-&@¡åä@Ÿ+[@›V@žVB@ £ä@¢Ù¸@¤&@¤x?@¤~Å@¤mÖ@¤XO@¤6š@£ò~@£pÈ@¢·c@¢ù@¡ã“@¢+Ò@¢ƒý@¢x@¡ÃT@ lƒ@žþ4@ž]ô@žôÊ@ 7J@¡M|@¡Ûð@¢L@¡÷t@¡Øñ@¡°H@¡º@¡Rª@¡(p@¡ @ æÁ@ ÉD@ ©@ „æ@ ^v@ 8Q@ ù@Ÿï@ŸÐP@Ÿ¶ã@Ÿš`@ŸsÛ@ŸKR@Ÿ.Ü@Ÿê@Ÿ -ñ@žï$@žÏR@ž°£@ž¢@žcB@ž@œ4@>@œ¤6@œY @œ @›¾^@›x¸@›3ä@šó.@šó@›V2@›é›@œa~@œ›;@œž3@œX@œVÑ@œ%D@›ëø@›­3@›uÿ@›T‰@›D¤@›3@›±@šûÜ@šä -@šÍñ@š²ð@šS@šhg@šA®@š"æ@š @™ô˜@™Î­@™‹@™#9@˜©@˜.¶@—“‡@–³|@•åË@•Ê¼@–b‹@–Ùm@–Y¢@”É$@’Ûd@‘€Ç@‘Ap@’(«@“Ø@•³@–­Ë@—!‡@—1ø@—á@–ïú@–·¸@–i„@––@•œE@•x†@•¥w@•ë[@–Ç@•ár@•uŽ@”â…@”h@”1Ú@”"w@”@”â@”G¢@”…œ@”¤@”OÀ@“öË@“»;@“©ß@“¡V@“‹t@“{Š@“†µ@“—o@“|¢@“Œ@’’r@’$–@‘çð@‘¥W@‘7É@Ö_@Ñá@‘1‚@‘ª‡@‘ëŒ@‘âc@‘·@‘–Û@‘p@‘L$@ÔÒ@FT@‡@ˆ@ '@¹@.Æ@á@™J@8Ì@f@™{@€/@hÃ@\@PÄ@>á@( @Ù@r@úÜ@üo@ø“@ܯ@¤|@]Ê@’@Ž¹@ŽD¶@ÈÐ@~ @‹â@Õ,@ŽE@Ž-“@Ž Y@Žç@íh@Ë$@@ŒÇ"@‹L«@‰ -µ@†Ú¯@†#T@‡wV@‰ã/@‹ò”@Œós@d@ŒÓ@Œ€l@Œ=g@Œ“@‹ü§@‹î@‹Øõ@‹¯-@‹RÚ@Ššt@‰ì@ˆ´=@ˆœ @‰BÖ@Šñ@Šm’@Štm@ŠV|@Š9›@Š'j@Š$£@Š0Õ@Š6«@ŠÞ@‰¹R@‰/m@ˆš"@ˆ$ß@‡ô@ˆ N@ˆHŒ@ˆú@ˆ¢}@ˆ¦{@ˆ€Ë@ˆ5Y@‡å@‡¾@‡Í×@‡ïè@ˆC@‡ùC@‡åà@‡Î!@‡³‘@‡•0@‡t]@‡VM@‡>S@‡(ý@‡¾@†ùk@†â×@†Ìå@†³ÿ@†—­@†zâ@†_¨@†EL@†)Ó@† º@…ë @…ÈÐ@…¢Æ@…sÚ@…=@…P@„øÒ@„÷¦@„ó“@„Þ@„¾Ÿ@„Ÿ@„„Ú@„kÿ@„Q†@„,Ä@ƒòQ@ƒ¦–@ƒe×@ƒL>@ƒXŠ@ƒmè@ƒqc@ƒ_Ó@ƒEç@ƒ)à@ƒh@‚Ñ@‚Ÿ@‚„x@‚¾@‚ƒ@‚z\@‚h%@‚Q{@‚9@‚§@‚1@éä@Î-@²ª@–C@rÑ@> @€õÜ@€«3@€u#@€Zî@€Y¶@€jt@€{­@€~N@€qA@€T‚@€"$@ÀÈ@\8@K@rß@ü@…@Pª@~è…@~=ý@}|h@} @}(‡@}>t@|b@{>m@z!­@zO´@{Š’@|»Q@}M^@}fB@}Oî@}.¾@}  @|çm@| @| @|uš@|M9@|&B@|@{Ûê@{´ñ@{‹|@{`1@{4@{ò@zÙ$@z­ -@z„5@zWN@z@yËp@y€ó@yK¢@y'E@y ~@x÷*@xôƒ@xó@xàã@x³\@xg™@x -@w¶I@wì@wfH@w[@w^~@wyó@w¡J@w¯ë@w~º@w ô@v’s@vSZ@vLM@vG¢@v+•@v3@v -I@vû@uÍe@u*N@sߪ@qôå@p4Ù@o´¼@pˆ@q¼?@r‚S@r¯w@rt@rÁ@qáê@r6@r™J@rïF@rö¯@rÕô@rm@qÛ©@p…@nÚV@ma/@ltD@l>ú@l­@mn@nN–@o9Ù@oô{@p_*@pª^@pÛ@pÍ@p¥ð@p’0@pu@p1?@oÎò@okŽ@o"@nÜe@nCì@làX@j­ˆ@h¤@h<@iD¡@k! @lc¬@lµ.@lm¤@kÇ@jÜ(@jà@iÛ­@iý‡@jW @j».@j¼N@j'Z@iQ?@hÄ…@hÅZ@iö@i~O@iÒJ@j@iÖj@i?¬@hoB@g:Œ@e-£@bn†@`$x@_¥C@aP@cA@d÷ò@f5@g)†@gŒ@g_¡@fþ@fž·@fO@f ¼@f!÷@f>ã@f5@e«À@d£7@c¯<@ci@cÓg@d……@e-C@ew.@dðƒ@c¤{@by@bTæ@c$l@d)4@d¿Å@d¾¨@dQb@c’G@bÁ¡@bCù@aЇ@`†÷@]Ûz@Z"–@VÁÏ@Uzà@Vàý@YÒ_@\¾ä@^×@_àÒ@_ós@_ ¾@_˜“@_ù/@`<7@_öê@_\¦@^ˆ¶@]WE@\:Ù@[×û@\H?@]+Ç@]ÇÇ@]¥X@]/Y@\ò•@\Ç @\PÑ@[Â@[ƒ#@[q@[ Å@YþÃ@Xj÷@W2@W «@XA@Y±U@Zg6@Z]¿@Z%ÿ@Z .@Z%@Zs«@Z¥Ø@Z³Z@ZñA@[G@[e­@[@£@ZÛ@ZP¹@YëT@Yª1@YL@Wú@Vd@RÉh@N¦@K¦H@L*,@P ³@T‚9@WL±@X|Ö@Y'2@Yå/@Z}@Z@YøÇ@YI@X¿.@X®@Y"m@Y¥{@YÈê@YŸq@Y€a@Y†2@Yc±@YR@XÌ©@XøW@YP­@Y¬Ê@YíW@Z§@Z"@ZF«@Z“-@ZÑŽ@ZŠ@Y$\@WÙ@Uˆk@U>9@V@9¹@7¥6@>dŠ@IO[@Sl@Y.Ð@\¿%@_€«@a³Ù@bè@bä|@aêæ@aLx@aøÐ@c7º@d_¨@e[¹@eO@c­@^ߟ@YX%@R,@H§@>'£@6â¸@7Ô@>tƒ@I&³@S.@Zß1@_¯~@bº@c|b@el7@g‹@i5@ißñ@j9@jf5@jE\@iá*@i Ñ@i¢û@i¨2@i…£@hÕŽ@fëo@cë]@a±@_!R@\ø•@XÚ‡@Q‡±@FÑK@:˜ç@1d›@0¶@7•Œ@Co@N\b@Vˆ@[8@^";@_HŽ@^U@]I@^8@bØ@f]@iUß@jÉ<@k#Ñ@jµÎ@iðA@i57@hnª@fóÉ@c1„@[E @Oæs@Fô}@Gb˜@PÍñ@[ÞZ@bô:@e®=@fÈ@eâE@e?@dz@bÏ…@_ùç@\Cª@WŽ@QB™@Hm@<­ñ@0<ê@(Y.@)P0@2«@=ª@HÔé@RÌ@X¦v@\X¶@^0¸@_vk@`Îù@aí¤@b1á@a½‘@a[1@aSq@a@p@`ä’@`ª*@a -$@aŽV@ae¶@`V‹@^ÊE@]Óu@]ÿ“@^ˆ@@^ÏR@_+ó@_ÃÂ@_æ@^Ò@\àv@[}•@[@Z+[@X~ã@WÝ%@XØå@Yx¦@XK—@VoÜ@UÆê@V˜”@W³@X@@X!×@X¼·@Z&}@[?@Z«™@X™@TZ›@QŒ@O]Å@NOš@KqŒ@EA@:[–@-ý@"!2@Æ,@'@4Úå@AoÝ@JKë@OëÐ@S’G@UÃ@VùB@WЕ@XwŸ@Xót@Y/6@YÌ@XšY@X2@Wã\@W¦5@WKJ@VÖ?@Vµ/@VÙœ@VsP@TÇC@R9@Oé=@PgX@RÖÄ@T×$@U_¢@TïQ@Sq)@P‹3@M­`@MÖ@N” @PU@PdÊ@N~“@KƒÜ@Hž=@Fî9@GDh@Iy5@Ljâ@Næû@OoÄ@Käë@D¥Ÿ@?œ,@B€@H¶@M¹T@O#@O„2@Oy@NÚ_@Næ€@NÅ7@Mâä@L?¯@J›@I¾ö@J©Û@L„M@Mü@Nƒ@NG:@M“@LSÖ@J¶@FöG@E@E¦&@GØ*@Iºß@Jš'@JŠN@I‚q@Gv0@DÄ@A?P@<?@6¢ @3Kô@0@'ªa@7@ óå@ íƒ@áÍ@Ó @#'²@,–O@5Td@¼@=É+@=ÀX@>-@>Ù@=WÄ@<@<‰A@>@LN@˪@ô¹@å¦@C@+Ú@<¾@ ѱ@ •/@ ˜C@F@"Æ@–:@Œ+@¸n@ ¯ˆ@ -í@ )H@ ¿X@˜c@x–@ƒ“@j2@‘²@çÈ@߯@jâ@Mú@à@Åk@A -@ÑÈ@<@¦?@Ð@çÇ@ Ñõ@ óº@Ò @@@ò@ò@5@7@ÔÎ@g—@ È7@ @ 'ú@µQ@Ç@ê\@lÐ@ -‡¡@ lº@Ÿª@-.@ Ò3@ Á˜@ ©@ @ g‚@ <Ž@ ·@ "@r@û‚@š@@+_?û‰,?ì4$?Ø‚Þ?Èm…?ÇWþ?Ö÷?éG¹?öž{?üBŸ?þ)/?þW?ûÊÆ?÷ÚQ?÷~Ç?ý2E@"@ÛÇ@ 5@ -2Ë@ @ï@ ó@ 9a@ ]ã@ %z@ u+@ -ûÙ@ -ò@@ -w+@¢k@ -@¶a@¥@&Ž@zC@øŸ@ö@¼Z@ eö@ -B@ -Yà@ Cß@Æ6@A^@ Â@ù^@ @Õy@2ì@'‡@fµ?öµ^?ñô'?ù"v@2Ø@æ›@z¯@ô¥@¯š@äà@s@§@öj@x1@{È@2ê@ß@˜ª@GŸ@ )@Q@Çß@Á@{6@0ñ@~ù@{ï?ý§'?õ^?ñß?òˆ?÷¡…?ý™=@ëP@óþ@1A@Ù9@4"@i ?þ}E?ûª?ùÖÏ?ù˾?úƒ?úÄŽ?ú‘î?úç1?ü\,?þ »?þdÜ?ý+7?ü·€?þ9î?ÿï…@q -@ë@vÛ@¥Ë@¶?ÿ[ª?ý+Ì?ýrÈ?ÿ¿à@Øo@æÆ@²ì@ -@¦³@@;Ú@ú°@®Î@ªƒ@ç§@¼?û¨Ù?ø²Þ?ñŠ?è?ä¬Ë?ë×?õäÖ?û¢:?ýä?üfù?û³y?üä?üö?ý—?ýR×?ü Â?÷´I?ïˆ?ç‚ÿ?èÇ*?ðÉ -?÷N°?øÅX?õêY?ñŠ?î§Õ?ñ~Å?ö™æ?ùÕ®?úÝE?úú÷?úÐ?ú® ?ú˜I?út±?úk?úUÓ?ùy ?ö³³?ñט?î}?îë(?òó?óÞ”?ñYu?îòo?ðM"?ó¦N?õc?ôkZ?ò„b?òQH?óó€?õ*£?ôÄ.?óT¸?ñ†Ä?ï–?îÅ¢?ð3r?òIK?ó!?ówr?ôø?õ«?õ²?ô”H?óz?òá?ó”?ôq?ö'>?÷*Ä?÷)º?öf9?ô–Â?ð¢Ä?ë«í?ê ?ìÕâ?ïœ^?ðÀÙ?ñmÒ?ðv??ë»Y?俼?ÞJQ?Ùr?ØM?ÞÑ -?çU?éeÊ?áq?Ó.á?ÆPK?À M?Ã"6?Ï?Þ_?èÐ?ì²A?ïYI?ñ1M?ñÃü?ðYË?ëÒô?æ²O?æN3?ê‚q?î7?î— ?îaÉ?îλ?ï,á?ïF>?ï'?î÷?ë¯?耗?äør?âá`?ä¬"?èÖ[?ëï€?í é?컌?ëgó?è?䩪?âÑ?å4 ?éM`?ëêÑ?캎?ì?ìiù?ëú¹?êÒö?éLF?ç›H?å_|?ãB?ã3?ä¢;?åw`?äK?á¼Ô?àB5?áÙ­?ä˜Ê?å.V?ã8z?߆?Ù«d?ÔL.?Õ¦n?Üƃ?â¼õ?äÚG?äýä?å‡?åCz?å†?ä¯Ã?ã½b?áÏ?ßÓ-?ß{…?à?áÒ±?âª?âë\?âÀÈ?â}2?âZB?âD6?â ù?áñg?á•Ì?àçe?àEŽ?à =?à^?ßû:?ßâ·?ßÖú?ßÏè?ß’æ?ÞóX?ÝôÓ?ÜÝu?ÜB?ÜAv?Ü^‹?Ü6S?ÛÊã?Û=?ÚU¯?Øþë?×ð°?×ô•?ؽ-?ÙH?Ú?!?Úˆ?ÚUË?ÙÖ?Ù ?Ølé?Ø;?Ø+?Ø°?×À·?×1Ø?ÖTÓ?ÕuÃ?Õ?Öð?ÖUc?Õ¼?Ôêx?Ô¡•?Õ~Y?Ö 8?Õ1(?ÓkW?Ñì•?ÒQÇ?Ô -?ÕH?Õ%Ë?ÔòC?Ô=À?Òü‘?ÑNã?ÐYG?Ñç?Ò?Ó¶ö?ÔUÆ?Ô¤†?ÕE?Õ`?ÕF)?Ô¡f?Óìí?Ój?Ó!Ë?ÒÓó?Ò{@?Òlà?Ò£Ë?Ò~?ÑÅJ?ÐËO?Ïqñ?Íå?Ì*T?É¥z?Å•â?¿.ü?´Ì?¥ŽÞ?•ú·?˜î?šE¼?«;q?¹²Í?ÂnÀ?Æã?Élê?ÊÄ=?Ë…R?Ì3É?Ì’P?Í h?ÍÇ`?ο?Í¥s?Ì­ß?Ì?Ì?ËÜ??Ë+?Ê•B?ÊDF?ÊMÞ?Êß»?ˇÐ?Ëž1?Ë-?Ë'á?ËØË?ÌU?Ëy1?Êûé?ËG.?Ì.™?ÌV´?ËÌü?Ëz?Êî}?ɲT?È)õ?Æë1?Çu¼?Ƀ_?ÊÕ–?ÊÑc?Êd˜?Ê1‰?Ê?ÉÉ?ÉUj?Çò2?ÃH?¸¥©?¬Ù?ªd…?³É?½ö?ÃuÇ?Ç@ò?É2º?ÉÌl?ɽ¥?Ésã?É -?ÉZ?ÉUñ?É6_?ÈîÇ?Èšî?Çp?Å:U?¨í?Á27?ÂJ?Ä€>?Ť=?Ƙ?Æ—r?Ʊµ?ÆPN?Æ?Å©ó?Äÿt?ÄLÀ?Ä??Ä>Ï?Ä^]?ÄSŽ?Äö?ùI?ÃGï?ð?Ã5ë?ÃD;?ÃJ©?Ã|É?ÃÆ?Ã)Ö?ÃÏ?Âù¨?­·?Âh ?²?Á« ?Áu?ÁÙž? -›?ÁŽM?À±!?À<?Àxt?ÀÊË?ÀØÃ?Àíƒ?Àº*?¿û[?¿5ß?¾Ëå?¾ØI?¿o?¿ïÏ?¿Zê?½¬?º|?¹+L?¹.?¹s[?¹èì?»¶Œ?½ -h?¼ìº?»ûï?»gá?¹¢ ?³Çg?¬t?ªãT?±¡á?¸}å?»ü°?½œ£?½®m?¼¨N?»¼â?»aÓ?»u?»;?»¾#?»ä{?»‘M?»=‡?ºÚ½?º]Z?¹ÒV?¹w¯?¹–C?¹Êç?¹Õ4?¹gš?·ñò?µM«?²¨Ï?°o&?®Ûc?°¡Ç?´f?·U?·®?·o?·/®?·cƒ?·uî?·?·D?·‚?· ”?·B -?·:€?¶Öu?¶b´?¶%™?¶ Ô?¶.ü?¤]l?£Ö§?£TÂ?¢Ûr?¢iÎ?¢L~?¢ -Ž?¡Ÿœ?¡ÔF?¢/~?¡Ú^?¡^_? ÔØ? Eb? dç?¡’?¡RË? üÂ? ò? 4ž?ŸiÝ?ž²ò?Ÿ&å?Ÿ“?Ÿ¶?žÑÆ?ž¦}?žuì?žM?žš?ê¿?½¶?ªJ?žˆ?ž-9?†?œ±=?œa ?œtˆ?œOx?œ>E?œ€´?œµØ?œ3?œ?›¹Ó?›Î¤?›ùž?›Ñé?›—Q?›ý?›<“?šòj?›½?›0¼?šð„?šV2?™–Z?˜â®?˜º ?™+n?™¦?˜…á?˜‘%?˜ú?™n;?™¼í?™­û?™w?˜žÍ?˜–?˜È­?˜šj?˜O+?˜ç?—Ã?—¤º?—Žr?—#L?—:?—‘_?—dt?–ùÁ?–eá?–9?–V¹?–X+?–Bi?–Oü?––Ÿ?–ˆ7?–D?•ÞM?•é=?•a?”¯-?”¡?”Ìë?”¢‹?”"‘?”?”i ?”¢ð?”™O?”Ø?“Kô?’Ç•?’VÃ?‘ì?‘ã6?‘÷¶?‘ÐT?‘¨Ò?‘[¥?úÇ?Ü@?‘¤?‘' ?ó?¯Ú?}­? ž? ?º±?ZV?„§?É?™|?ˆ"?aŒ?&|?ì?$?/¥?Ó?.Î?>í??^?ô?'ˆ?Ž‡Ÿ?ç??ÂM?¸?ŒëZ?‹nh?Š”?‰ã¤?‹w?Œà?Œ2­?Œ4»?‹ðó?‹†K?‹WG?‹£ï?‹ÃB?‹‘€?‹a½?‹Jú?‹’G?‹ÒÔ?‹Ó!?‹•f?‹'³?ŠÔ?Š]ê?‰¸p?‰8¦?ˆß“?ˆŒb?ˆ=#?ˆv?‡”?†È»?†YL?†’w?†àN?†g?…ä·?…¿Õ?†4?†°6?‡°?†Çk?…¼/?„Ï>?…ÄV?‡$ˆ?‡Šx?‡nÄ?‡Cþ?‡I?‡¢?†Ðw?†¹?†Íº?†Ü°?†’;?†%?…êè?…üo?†#¦?…ú6?…ƒb?„Ü~?„,?ƒÊÁ?ƒÙä?„[‰?„Ó±?„¥“?„i?ƒóF?„4I?„ ?„õr?…‡?…Ê?„ÅG?„QÆ?ƒÊá?ƒD~?ƒÝ?ƒT?ƒ²a?ƒŠë?ƒU?ƒUG?ƒOx?ƒXÐ?ƒRƒ?‚ûï?‚˜t?‚}È?‚}¿?‚'Ü?¦g?ˆ^?™¸?zD??½?€éb?€bÔ?Щ?•œ?€µ?€~ê?€¥ñ?€xJ?€à?2E?~‡Ï?˜?€ü?€qò?€i)?€I?€`®?€q5?€P?€9]?€H`?€3¶?€?€=?€-?€3:?úu?µ?™Ó?´l?“û?DÞ?~Ñ8?~v?}û–?}b°?|ú?|è‡?} g?}Y?|ë¬?}Ý?|ø‡?|ÔU?|Ø?|RØ?zœ,?x¶•?xŠ¹?y¾?zÉâ?{Ú?{Q?{ˆÑ?{Zå?zÍ‹?z¤¢?zè‡?zÿÑ?z{(?yà?yV3?yZT?yV?y?œ?xò?xrz?xP?x¤ë?xð°?y?y@?x»Î?xiÌ?x%'?wŠ?w<{?vÇÞ?v›Œ?v™g?v ?vh_?v ;?cÃ?b›?a«^?`ÐG?`[N?_rJ?^wS?^q?^FØ?]…Ä?\°©?\L?\FG?[ßT?ZÐ?V|ñ?N„Y?L¨?R_3?XU×?ZcÊ?[bÅ?\5Ç?\ª–?\ËÃ?\¢?[Õå?Z4?U|ì?Qì?T§V?YÑZ?ZÕŠ?[Pƒ?\ ë?]!~?\…¹?[Ùù?[±l?[ì4?[ܹ?\)Ž?\¥_?\Y?[è§?[Yv?[¹Ç?\‘w?]Õ?\¿?[ŒÕ?ZÞ‚?Z’H?Zƒ3?Zì§?[G+?[V*?["W?Z²?Z?YØî?Yy"?Xƒ‡?X5ˆ?X'}?WÃÞ?WËæ?Vâ¯?T°þ?Tû%?Wdù?Xnà?Xh‚?Xn8?X£?X­`?X#t?W†}?WQ[?Wa?WJ•?Vî]?VI¶?UOP?TJ;?P@ ?A—Ù?*ì`?"Ú\?3AT?GöÜ?QžJ?SÌ)?T9l?TLH?S,¾?O‰l?E?9÷’?A*÷?L„I?KG)??î±F?IÑm?ONj?OºC?P-r?QŒ?R‹«?RU2?Q?O•g?N£†?O%]?OúÜ?Pá?PG?OÔ{?O, ?O –?OœT?NÃ?Mcø?MŽ†?N -?MÙê?M‘?Mn¯?M?Mpù?N†?O3´?OHš?Nœ?L^°?IÑê?IÕY?K;&?JôÞ?J9¦?JÈ’?K ò?L@Ü?LjM?LsW?LZ½?K{ä?J"È?I¿Ð?J~µ?K]?KDp?Jè?IÍÖ?H;t?G2?G>Ú?Gé?H^?GÂI?Ggú?Gn*?Gé?GæL?GIÁ?GÉ?FÙÃ?FŠ?Eùó?Du=?CïŒ?DÊ„?E‘¸?Eî½?Eäp?EÚ@?FQe?FÓ²?F©Ž?EÁý?D€â?CÝ’?D•?DÖ?C~í?C -?C!?C£??DÆ?Dsn?D|Æ?DÞ?D’?Cù^?C­c?C]é?C¢?Cê?CVß?Cƒ¨?CÛ ?DŸ?C?B)Ž?AÖ?A²i?AÞW?B½?B -\?A%?AN?Ak?A¸7?A®;?Aºž?A¿L?A¹?A¯ì?A¶?A‡Æ?@ß?@·D?@ñ}?@Áe?@pT??ñÝ??ËN??îw?@r?@ I??ìÍ??±??›ý??•??>Z?>§f?>"?>/Û?>ez?>Ý}??Û?>Y?=*?=ìP?>¢B?>© ?>¤Ñ?>š?>z®?>­?=y¼?=No?=|z?=Mü?<Ö¾?<[,?;Ó€?;’=?;+?:ܺ?:í^?:†x?:…„?:Û?; -?;põ?;x\?;F”?;¹?:ò‡?:Õµ?; ?;š?:•?9Å~?9ap?8àØ?80m?83#?8‘ˆ?8r -?8q?7ìã?8%I?8/ñ?7òg?8v?8h=?8]Á?7žq?6??6fí?6?5 ³?4«¶?4±E?4-þ?3Œ(?3O’?3(?2÷ü?2Åñ?2xJ?2ŠÐ?2vê?2KÇ?2u”?2â?3 ö?2ÓŽ?2°„?2½±?2“~?2œ²?2Äâ?2S¢?1;Ð?0hÊ?16Ÿ?1áé?1?.¦?,ók?.*Œ?/ƈ?0¸i?1!?0Ú?0lä?0®?0ç…?0ÌT?0³þ?0Mv?0N¥?0¦?0_a?/‘Ý?/‘?/0L?/³·?/ÐØ?/G -?.—Ê?.†k?.€x?.9?.«?.x?-tÿ?,ü»?,î×?-e¡?-È’?-š”?-'•?-›?-4Ç?-/ƒ?-"«?,Ø¡?,Ií?,$?,dú?,-J?+bÅ?*k?)p?&ÐË?&g?'Ó ?(Ã;?( –?$,?my?ü¢?ÿÖ?íî?Ÿh?n'?!©?#h?$ÍÂ?%•À?%©€?%à?&œ?&;?&|„?&Bþ?&SÎ?%Ïà?%ìn?%¯o?$¼ö?$× ?$Ëã?$Ôº?%LÅ?%U?$ã4?$™^?$„y?$š4?%ZA?%ÕU?%N*?%n¢?&,í?#0|?"Î)?"¶?"èG?#ù?#1©?"úŸ?"Ž ?"g?"³(?"äB?"î6?"•p?"S÷?"s¸?"žõ?"z?" ¾?"??"dÕ?"0?"g?"Ò?"<¬?"NÝ?!ó[?!j»?!dð?!_P? ¾Ñ? ÿ? !…? XÄ?øj? U? /ö? ÷?Ó?S?b³?e;?‹5?K?öD?—ä?L)?—0?IÃ?žê?3ï?¦g?xí?í??ðâ?ª?}0?žð?ÄN?•‹?{S??½Ÿ?u?Kÿ?E?eú?ã?µ?ïÝ?ƒ?#g?'T?µ‡?4A?Ð?%:?‚Œ?hñ?¿?å‡?/ -?#‡?J²? Ñ?¤?BY?³?”O? ÷?í?"œ?@ß?å?*?ˆÖ?G|?~Ù?SP?¿á?ž´?°?ÈD?¯B?oó?Úº?Ùp?uâ?õ¿?ÊÇ>û?o?Oš?G­?G?Ëh?DO?Q?]?0P?¾??_¶?¾?dT? -!?'’?ð²?‚u?­6?@?™y?0ò?y ?¡î?½:?Û ?¨m?„T?^¡?z>?X?‰?Ï?¾ì?£R??·?;?Üb?¿£?µí?¨°?`?Ýû?›÷?Ž?Ëm?X•?0 ?q;?£?Ðì?r?âÊ?~)?Àr?Äy?³Q?¦m?…n? -?j¿?Á‰?Õ0??«U?‹G??h?b?ƒ?‡?“©?VÝ?å¢>òâ—>é®k?Vé? Ž~?,k?µ?ù??åñ?æ ?ê?Ï¿?w§?7>?v–?€n? >ÿa>ÿâŠ?y>ÿè>þŽ2>þ©>þP>þËy>ÿº ->ÿÃ>ÿ¼ >ÿ—?>þÙ>ý‹n>üûÝ>ýߊ>þƒ,>þÝ3>ÿ>>ÿN;>þ®o>ýÜß>ýÂ>ý“ô>ý‹'>ýÂU>ý¾9>ý¯`>ý‘ð>ý„$>ýâ>þÂ>ý˺>ýn>ýv>üè>ûÑÿ>ûOM>û92>ûj÷>û̯>ü-T>ü">ý„Á>þ5t>ý*>ûÛg>ûªq>ûñ™>ûüŽ>ûhþ>úì>û/ª>úºÑ>÷øú>ôQ(>ð™s>å+>ÒÄÂ>ÔÅ£>èe>óÈÆ>öK>öÀí>÷n›>öOZ>óLc>ô}>÷z_>ø†û>÷ú >÷>õj >õ•o>ön>öQ>õðì>öAä>õ·‡>ôÇm>ôØÎ>ôû“>ô×5>ôE#>ôJi>ôm>>ô~@>ôÄã>õ¦>ô§½>ô'Ö>ó™>óÔŠ>ôœ>ô>óÆ×>òë8>ò¢>òÃ>òOä>ò+P>ñé¹>ñlÄ>ñ92>ñ*`>ðî[>ð¾Ù>ðŽ>ðA]>ðÃ>ïõ‹>ïÎ >ï”Ø>ïVœ>ï#>îû\>îÜö>î¼f>î‘û>îg>î>˜>îk>íâÀ>í©>íQÞ>윜>ëpk>êÆZ>ën>ì[£>ìÈÒ>ìä¬>ìè*>ìÞ;>ì}g>ëaÖ>ê0>éb>èÈ6>è?>çÐó>çx³>ç*“>æÜ->æ‰>æ2˜>åî>å¸Z>å‡m>åUŠ>åò>äÏ¿>ä¤">ä‚$>äe\>äS`>ä;ò>ä&F>äª>ä‡>æ‚0>ïÞ÷>ïB>åÍ>ãÛ>â´œ>âhp>â=>áË>á‚>á8±>àã¬>à¬>àHã>àÅ>ßÇS>ß„•>ßA>ßØ>Þ·+>Þs >ÞW¢>Þí>ÝÎ>Ý•>Ý^ö>Ý!Z>ÜŠ>×sè>ËÂÀ>Ï_>Øl>ÚÌ–>Û)?>Úý÷>ÚÈ[>Ú„¡>ÚÙ÷v>ÙÄ>ÙŽŽ>ÙMd>Ù·>Ø ¾>ØBµ>Ø;>×ä*>×ÈÎ>×™ì>×[å>×#v>ÖåM>Ö >Ö-N>ÕãÝ>Õ¨Â>Õm®>Õ0•>Ôô>Ô»’>Ô…)>ÔS¦>Ô"|>Óî>>Ó³ >Óu>Ó?Ÿ>Ó>Òà+>Ò°6>Ò½>ÒUH>Ò)ã>ÑûÆ>ÑÃÈ>ÑŒ4>ÑQý>Ñ%]>ÐæÛ>ЋÊ>Ð+ú>ÐV=>Ðt¯>Ð\‚>Ð'I>Ïâ9>ÏÊë>ÏË>Ï…\>ÏQ>ÏT³>ÎóÀ>ίL>΀>Î7]>Ί>Î+>ÍÞç>Ͳ»>Ìðµ>ËsB>ÊÎÎ>ÊpÏ>Éëj>É€²>ÈÅï>ÉPÍ>Éæð>ÈÙX>ÈÐ'>Èåm>È1 >Çã:>Ç”>ÆJ¿>ÆÄÇ>ÇN>Çkþ>Çœ‡>Ç'>ÇÒ­>Çy;>Ç6>Æí¡>Ç'E>Çù]>È2>ÇÏi>Ç=Ì>ÆÂÅ>ƹŸ>Æ„Ó>ÆW­>Æ4>Æö7>Èl >ÈÕ ->ÈqÃ>Ȳ>Æ´>Å~\>Å >ÄíÚ>Ät¯>ç >ÄŸ>ÄÉ—>Ä)¿>É®>Ãï²>Ä Ò>Ä1ê>Ãà>Ãt >ÂÁì>Â<>ÂYŠ>ÁðG>Á³Ž>Á© >Áp£>Á.g>Ár>Àï >ÀØq>ÀÝ>Àä>Àfj>À.Ó>¿Ð>¿t>¿§->¿«>¿Y~>¿3Å>¾å¦>¾ŒÜ>¾Ní>¾'ü>½ð½>½Å>½·E>½±û>½••>½^y>½2À>½œ>¼ûÒ>¼ä)>¼ÑÁ>¼­S>¼…Ÿ>¼2£>»¼ >»X=>ºâš>ºw’>º¼>¹Îé>¹„Ú>¹4®>¸“0>·ì‰>¸7Ý>¸M(>¸ Ñ>·‹ñ>¶#>µÉ˜>¶ˆ„>µß ->´é¤>´â>µžÅ>¶O¥>¶h¿>¶O->¶,ú>¶¼>µâ.>µ³|>´Ï?>²,£>²‹>´ŽX>´Î>´®}>´ŠC>´\¨>³ö·>³eµ>³ša>³Ï¡>³¸F>³æ>³bÈ>³D|>³(­>³n>²Úd>²´é>²G>²]p>²1ª>² Y>±ì>±ÓÝ>±ªÕ>±tP>±>ä>±þ>°ëé>°Èc>°¤!>°t>¯¢Œ>­ÚK>®‡‰>¯¬B>¯±B>¯†>¯W>¯.W>¯Ñ>®ÚB>®®C>®{<>®D9>®ß>­êQ>­¾>­’q>­_þ>­t>¬Ì >¬¦Å>¬ŽP>¬Bi>«åk>«•U>«9<>ªÉ‡>ª->©N>¨?z>¨€«>¨¬Ë>¨½1>¨¶*>¨¤˜>¨†>¨s>¨so>¨X<>¨D(>¨SQ>¨;ç>¨P>§í^>§Õÿ>§ýÏ>¨é>§áW>§ÄI>§or>§#&>¦À‚>¦˜ü>¦§ã>¦¬¾>¦>¦b²>¦Ð>¥¡ï>¥­c>¦G>¦p»>¦pi>¦0>¥æA>¦D>¦T³>¦‘Â>¦‰>¦GD>¦r§>¦G~>¦49>¦J>¦ ’>¥Øå>¦,H>¦¤8>¦‚«>¦4>¦^>¥½>£õ9>¤™%>¥¾Ì>¥¼ ->¥™È>¥)½>¤J>£™>£™ô>£3 >£¡Ñ>¤>¤>£¼Ô>¤Ñ>£õ >£…?>£} >£¼Ó>£½Ç>¢ÒÄ>¡õ—>¢fÍ>¢Î`>¢Â>¡$…> O¿>ŸKØ> e>¡oÑ>¡+~>¡m¬> Gõ>În>Ÿ!">Ÿí> CB> Êƒ>ž<>œƒš>yV>œ#V>š'¹>—¸Ú>–´Î>0> -9>˜’R>œ1ö> \">Ï*>˜½‚>š¡>ž C>pó>š™c>›'ë>™ï)>šGR>›Ü>œ€o>›™{>—ú‰>›HÝ>ö–>Ÿ‘[>ŸÁ‹>Ÿ)n>ž¥>Œ>©>ß>œWæ>œú>›Á{>œ6Ý>œ”&>›‘>—D>“ >’x>”}Q>™Ä >™¶u>˜7>˜@F>˜çw>™*8>™›>™Ê‡>˜äû>™\Ú>—n(>˜$*>™Í‡>šQ>™’ä>™u>™£>—VÛ>“pÙ>’rB>•¶Ÿ>–i™>“ƒ6>‘-~>–ŒÃ>•/b>’\C>–:<>—nw>–d]>“Ñç>‘j‰>‘0Æ>‘Ó˜>‘B+>“Å >”ól>“ -ô>“°>”G>”ÚC>“À:>‘> >Å>’c¬>“Ëü>”[ >”Eü>”n ->”ß/>”yS>“…t>“1Ÿ>’±Ù>’¤ô>’yf>‘æö>‘æ>’¹è>’mÕ>‘Ív>‘y>‘)ý>‘ge>Ùð>=>¾Ñ>‚×>ý’>Ëš>Ê>“>Ã1>Åâ>›b>u®>Fô>ª>Žó«>ŽÒœ>ŽÜo>Ž¿Ä>ŽYS>Ž&Ó>Ž -8>îë>Ó6>³n>“P>tì>V0>HC>˜³>q >Œï„>ŒÀœ>Œ¡i>Œ…D>ŒhW>ŒN;>Œ2>Œz>‹ÝÌ>‹º1>‹žà>‹‰ë>‹r3>‹T­>‹>>‹¿>‹ÿÃ>‹<Ë>ŠºÝ>Š—†>Šv2>ŠUï>Š6é>Šc>Š<>‰íž>‰Ö>‰»>‰›@>‰€¼>‰h1>‰J1>‰(ú>‰B>ˆí$>ˆÜš>ˆÈß>ˆ¬ñ>ˆŒˆ>ˆi—>ˆDÇ>ˆ<>‡ò>‡Î >‡ª­>‡‰Ü>‡i›>‡Jv>‡*u>†ò™>†“g>†µ >†º÷>†,B>†r@>†\¬>†J´>†;>…ñä>…äi>…ÁØ>…š¡>…l©>…W×>…«>„ªX>„,Â>„#>ƒë>ƒÞO>„ ©>„0®>„2t>„ª>ƒÄ—>ƒo’>ƒJ†>ƒ—+>ƒiö>ƒaÈ>ƒPÐ>ƒs0>ƒê³>ƒ–ü>ƒ.œ>ƒæ>ƒ&->ƒ3#>ƒU>‚ƒÿ>‚A>‚£@>‚l¥>‚M¥>‚µ7>‚p;>‚.Æ>‚o§>‚›}>‚J1>‚.>‚–>Qî>l>øo>­Y>€ç>€f>€ËÂ>´Ð>U<>CK>y>üE>æ">z>€6>}8•>TÓ>D4>nc>Pk>€ç«>€~Ó>€N>š±>[>~¹ž>ƒu>€„}>i)>*º>€u>|ò>z4Þ>{2œ>} >}ÄÃ>|þ©>y>w>w>uÑ–>x’t>{¬>xǬ>w†>yo2>} >~–1>~>|­z>z·ó>x$#>wÇ1>yWv>uÓ¶>rPÔ>s7:>t"\>sø:>t[>uõ>wÀ>y&>z$é>zâ >z°>w%é>t»µ>t->räã>r$W>r0¼>sØí>vø†>xŽ©>xtp>v_…>v á>vA‰>ulX>t…Œ>tºs>t|0>r3->qØŠ>qÚ>oê>gxß>cš¯>fïS>iÆ>m*À>nØX>m`®>oIý>q…>pm;>oW>q]8>rì>r–h>r0Ü>p >o»>oŸ>lá‹>jÌ>hM>eG>aá…>^æ>^ä8>b<>flØ>hÉ>hrÛ>iƒ‘>k‘>lÂŽ>lÔê>lØR>lØy>lO©>jp¯>jpß>i§7>i$Ð>i3>fã2>cwÄ>cI ->e;ó>e¼+>dw>bcâ>^Ü=>Z¢>TÜÔ>TŽ‚>Yéo>^D<>`3>aݹ>bqv>cV&>d¿ÿ>eOE>f‰>dñ>>cÃÀ>d¼‡>fv›>f•Í>fœl>eT6>dƒ6>chÏ>c{>ePå>cˆ¸>a‹>`y¼>_»g>]ú>]±„>^ ->\‡è>ZbÐ>VÈm>R&Ï>L>I¹º>N—V>T*D>XÛ>ZÚ×>\%>]Ç>`#‹>`¾]>aî¥>bË>bô>b v>aÔ¾>aø4>aÚ>a<}>aû>`ß·>`[ž>_Šƒ>`Ž>`Pé>aX>a”9>a<~>`%,>_0>]Ò>]ôä>]Š+>[~Ö>Z„x>YÊ;>Xúq>X+>Xp.>XO>W1ò>T>P!\>HS°>@ÅÌ>@7>GÀ>O³#>S·>VbÔ>W{„>YƒY>YÅÔ>Zk >YîÒ>X|A>W‹>TT>Tˆ°>WË>Yp>Y6K>YÓ>ZñÙ>[Ž>\ ->[Ðq>ZZ >Yù#>Z»>Y‰>Yj>XÚÐ>V,>TŒ >U†>V·>X®r>W7S>U Ø>V“~>Y>XU>VCþ>V -¦>Uuä>T^Ð>T,G>SR>R3.>Qð>P7>N^\>NAú>LqG>K þ>H±×>BŽÍ>9>:>+ˆ\>$Û>-½>:®h>CÝõ>H·»>KÌý>MÁv>MÐÜ>MôG>NÞ>O&ï>O@Ë>O)g>Oû>NÈÇ>N]’>Móã>M L>MMÂ>M|>LòÌ>LËE>L£Ã>L|m>LJ!>K9>Iœu>K>K®>KŒÀ>K^\>K%k>Jö´>JΣ>J§K>J€ >JY#>J2>J É>Iä¾>I³>I…v>I_ž>I6N>I:H>L{>PÝŠ>JÒs>H‚E>HAÆ>H4>GàS>G©h>Gl¿>G8 >G>FÔ$>F “>FkÆ>F4>Eøf>E·”>Eg°>D'Œ>A&Ì>Bˆã>Ceê>Bˆ>AØ>>Éž>:¸e>3Lý>%´>±¸> w<>¯?>.wŒ>6—5>;§¿>>b>?ÙÑ>@¥»>A^>A4¶>AKí>APo>AH>A6¹>A>An>@ä¢>@ç>@–‘>>T>>4C=>8c>?m,>?äÔ>?¾>?—>?mQ>?;1>? >>æ}>=ò>;–ž>=3>>1l>>å>=î’>=Ä°>=—Ç>=a³>=0>=Ó><Ö@><žf><1>< -Ø>;æF>;¿Í>;‘K>;h&>;Bà>;w>:÷Å>:ÑÍ>:ª¢>:;>:[>:4£>:C>9Ï->9 >9}°>9W½>91 ->9 ->8ã:>8¼J>8•Ì>8nÞ>8B˜>8V>7åà>7¿6>7˜r>7q²>7Jø>7#Ù>6ù–>6ÂU>6Ž«>6e‡>6<ó>6Š>5é>5½D>5+>5^þ>5)->41¯>,éì>)×¾>.¢ï>2r >2ì>2`>0À‡>.•<>*¿¥>#”'>Äó>4à=óž > O>Ë >'ºÛ>,#¾>.Ü>/Ô|>0±O>0×>0´Ì>0Úâ>1 ->1ÿ>0ôÞ>0Þý>0Å>0¨Æ>0ˆ%>0]ÿ>06G>0 >/ò>/Ð(>/­–>/ŠÉ>/h>/EW>/"w>.ýU>.Ï>.‘Ã>,Öž>*ËÑ>-eB>. s>-ñ>-ÏK>-«p>-‡n>-`½>-2´>-Y>,ã„>,¬Í>,K>,U;>,Mâ>,8>+êú>+Ñ–>+œ+>+Ié>*¯P>)R¶>(\ƒ>)!Q>&»>"ˆR>(x>)Äì>'ù«>(ð–>)®†>)Šr>)c³>)Bh>)%#>) *>(ðp>(Ó™>(´¬>(”>(l¯>(@|>(Û>'ùŒ>'×£>'µ‘>'“~>'v>' >'r>>&ø¨>&Ê">&¦¦>&ƒ©>&`ˆ>&=o>&B>%õø>%øF>%ý>%›ò>%i>%F>%$\>%>>$Ýr>$³Ô>$†ã>$a>$6I>$>#÷">#Ñ¢>#®3>#‹«>#hô>#E)># >"ï>"Ë>"©>"‡,>"dÚ>"B>" Z>!üb>!ÙÆ>!µÀ>!‹\>!c˜>!@N>!ƒ> ú•> ×I> ³‡> ŽÑ> -G>u·>Tý>tD> 3>P:>kK>Ìg>ì>’È>Î%>Vr>u>U>Ì•>«Þ> ©ü=ùoÐ=Ñʺ=ÛRê>Au>c>YÒ>z,>>ðG>h>«B>Íq>Û˜>Ü>Óª>Äâ>±ò>œ">€ì>\ê>=>!P>²>çÖ>ÊI>¬]>U>qÐ>N1>TÙ>(Ï>ùõ>ÁÇ>}Ø>Ô…>}b>Á|>( >ÿ>Ф>®>Ö>m´>M«>./>°>òE>ÓZ>³Í>”>tŽ>UŠ>6t>À>ùg>Û>¼÷>šJ>sN>S†>7O> >l>åî>Ìx>´%>œ>„O>h>EÔ>þ>¬%>†>ó=>8|>eò>cÎ>šÌ>fð>p†>—¢>»›>“f>j°>CH>–>öå>Ò>­À>‰v>`*>47>¶>ên>Å>ªû>Ùc>w>_>îo>Øo>Á±>¨A>„>v,>Y±>c>‰>â´>ÄU>¥>€>ZB>Ií>¶>]€>åŒ>À>¡·>‚â>d/>D.>ó> øw> Ù> ºï> œš> ~h> `> B> $?> d> çu> ÂF> K> ~Å> a:> CÚ> &l> ù> ëÃ> Îw> ±¶> “ -> m³> J¶> -> ?> -ô¯> -Ø> -¼> - ,> -„,> -hD> -J„> -%â> -O> ÈÁ> –“>A>øž>°›> Ua> 9€> ¡>ùÃ>Ñú>¯>…>rJ>T(>6p>æ>û->ÝÕ>À> >yË>XØ>;À>9>üä>ßE>Â;>¥T>ˆ‘>eè>8ÿ>+>ù@>Ü«>À;>£ >†}>iÐ>M>0>>öF>ÙR>»°>žO>>bô>D™>%¿> >Ý'>´s>Žo>Ѽ=ö9¢=ð>…=÷å¶>ÉU>+->À[>E>!Â=ý €=÷D¸=ëér=ÓÑ8=®=«Îu=ÐÆX=éÍ;=õcÑ=úõÿ=ý»ú=ÿ.²=ÿûF>5Ú>RÞ>^Ç>_l>Y>M)>>1>*N>˜=ÿê¡=ÿ¾=ÿˆ=ÿbY=ÿ3=ÿ¬=þÒ¸=þŸð=þhÝ=þ/e=ýå=ý—é=ý7U=ü,€=÷Ï,=÷’¢=û%Ÿ=ö±Å=ó!=úâ}=ûÞž=ûƒ=ûd÷=û05=úù°=úÆ=úªI=úpÎ=ú(”=ùðà=ù¹±=ù|=ù5=øú7=øÃò=øŽ/=øVD=÷éÖ=÷”/=÷¯°=÷„H=÷O/=÷’=öÎÙ=ö•y=ö`æ=ö,=õõï=õŸ€=õhŒ=õZ1=õ)w=ôõq=ô»@=ôw1=ô@J=ô5è=õoI=ôá¨=ó€[=ó;~=óý=òÒÊ=òi=ò_³=òæ=ñän=ñ"==îÿ˜=ðä£=ðâ½=ð°=ð}1=ðH^=ðî=ïÉ”=ï•Å=ïdb=ï1]=îþ÷=îÌö=îšû=îgë=î3|=í©=ìð@=íO=íLÎ=ëD=Ù¬=Ú0î=ë2C=ìX)=ì&›=ëóc=ë½=ëz•=ë?=ë k=êÚh=ê¨=êuù=êC=ê -=鿶=é‹/=éX{=é¾=è­Q=èÎJ=è«%=èaÙ=è.I=çüg=çÊ}=ç˜!=çfÙ=ç5=ç[=æÒÊ=æ =æbÀ=æ$‡=åñ¨=åÀ9=厯=å^=å,¼=äû/=äɦ=ä—Ï=ädŠ=ä&=ãå½=ã®=ãr{=ã*X=âÎ=âlê=â0=â$P=â&=âà=áê=áµö=á‰=á[=á,·=àý¼=àÎt=àŸ8=àp{=àA"=àé=ßÓÀ=ß™Ÿ=ßhñ=ß9Ÿ=ß -3=ÞÛ£=Þ¬@=Þ|¿=ÞM€=Þ›=Ýíã=ݲD=Ýx=ÝH˜=ÝÏ=ÜêÕ=Ü»õ=ÜU=Ü^ö=ÜA'=Ü@Ð=ÛßË=Û”²=Û\ -=Û,ª=ÚýÍ=ÚÏE=Ú ñ=Úr=ÚCÓ=Ú›=ÙæÔ=Ù´÷=Ù|<=ÙK=Ù=Øòy=ؽ2=Ø›•=Ød€=Ø.!=×ÿ»=×Ñ=× %=×dn=×.=Öÿ‰=ÖÑq=Ö£=Öuª=ÖGÜ=Ö=Õëþ=Õ¾ª=Õš=ÕQÌ=Õd=Ôï±=ÔÂ(=Ô”È=Ôg=Ô:=Ô ]=Óß¾=Ó²d=Óƒz=ÓHµ=Ó~=ÒäÙ=Ò¸=Ò‹?=Ò^(=Ò1€=ÒŠ=Ñ×Ó=Ѫê=Ñ}"=ÑEŠ=Ñ ¿=Ðßâ=гE=Іô=ÐZY=Ð-ç=Ðs=ÏÕ¬=Ï©C=Ï|F=ÏF~=Ï ‹=Îßß=γ½=·Ì=Î\3=Î0]=Î=ÍØ‹=ͬÈ=Í€4=ÍIÈ=Í×=Ìæº=Ì»T=Ì=Ìe =Ì9=̶=Ëá‰=Ë£|=Ëhý=Ë<«=ˈ=Êæé=ʼ=Ê‘&=Êhà=Ê?\=Ê[=Éçc=ɽ=É’Û=ÉhÉ=É? =Éa=Èë’=ÈÂê=ÈšF=ÈsH=È9¾=È J=ÇÒK=ǃJ=ÇV?=Ç3ý=ÇÄ=Æî!=ÆËÏ=ƪ=Æ‚Y=ÆVÓ=Æ4ô=Æh=Åùù=ÅÜ·=ÅÀ©=Ť£=ʼn=Åm4=ÅP=Å&ê=ÄàÓ=áÎ=¼>=¿­·=ÄèÒ=Ĩ†=ÄZÕ=Ä)=ÃÓÇ=Õµ=ÃTt=Ãd=ÂÑœ=™é=Âdô=Â0u=Áý=ÁË$=Á™ý=ÁiÇ=Á9†=Á=ÀÈÉ=À™v=ÀmT=ÀBÏ=À²=¿ñW=¿É=¿¡”=¿{=¾âz=³µ=ª Ì=±ó=¸¥=¾J=¾?©=½^µ=»bK=¹¸Ï=·g=³\¼=«š­=šÝ={ˆõ=tþ0=–áÑ=©zÎ=±´=µ²i=·È=¹·=º@=»?Õ=»Ó=ºï=ºÄž=ºš‡=ºq=ºC=¹ÄÜ=¹–õ=¹ ­=¹z€=¹oY=¹@Ì=¹g=¸ñC=¸Ë5=¸¤»=¸~Î=¸Xì=¸3 -=¸ t=·å­=·´J=·ˆ$=·b]=·=6=·Æ=¶}'=±³Ê=°Ì`=«A=³œ^=¶(X=µüK=µÐ=µ£Ý=µ{ =µR¨=µ*ÿ=µÅ=´ÚÍ=´³=´‹=´`T=´+²=´y=³ÙG=³²E=³‹=³d‚=³=—=³ =²ð=²ÉÔ=²ž>=²kY=²AÒ=²Ž=±õ‡=±Ï =±©G=±ƒ«=±]t=±7A=±®=°ã=°²ó=°‹Ö=°f[=°@¢=°K=¯õ´=¯Ê=¯”û=¯jû=¯El=¯ =®ùñ=®Ò"=®®=®‡Ÿ=®`e=®9¿=®=­ëN=­ÄQ=­S=­u½=­M=­'®=­ =¬Ø°=¬³)=¬Œ4=¬br=¬æ=é=œþ=œÙš=œ·w=œŽŽ=œcÈ=œAe=œ~=›ýö=›Ü½=›º`=›Žô=›b¨=›@=›d=šþ =šÜ€=š»=ššK=šxè=šWÍ=š6;=šå=™óì=™Ò”=™±z=™ê=™o_=™Kt=˜ðp=˜¿‰=˜×š=˜¹©=˜™{=˜xÀ=˜WF=˜+È=˜—=—à]=—¿D=—Ÿ=—P=—^Å=—>•=—ˆ=–ÿ¸=–Üü=–¼ú=–œp=–{X=–Zž=–8ë=–'=•ï=•´ì=•W-=•5=•%Í=”ÚZ=•—=”û=”âÎ=”ÆR=”§{=”†r=”\Ë=”6Ù=”+=“õ"=“Ó…=“¯è=“ƒx=“?ƒ=’ì‘=’¬b=’§Q=’¸á=’³„=’m=’—=’cç=’Ei=’&Ÿ=’5=‘è£=‘Èè=‘©þ=‘Šä=‘kR=‘FQ=‘½=ý‹=Þâ=¿¿= x=˜=bd=CB=$'=A=ß1=¸0=™6=z=Zô=;T=4=Žô³=ŽÌh=Ž­=Ž=Žp#=ŽQl=Ž3O=Ž=õÛ=×p=¸Ò=š"={¸=]’=?= "==ŒáÃ=Œ¹›=Œ”Ü=Œw=ŒZx=Œ<Ž=Œ>=Œb=‹â=‹Ä—=‹¦Ç=‹‡=‹_é=‹=2=‹9=‹Ÿ=ŠãÌ=ŠÅÿ=Š¨q=ŠŠÕ=Šm¿=ŠP%=Š0¡=Š †=‰çô=‰Á?=‰so=‰…=‰ŸS=‰»f=‰B¤=‰J=ˆè¸=ˆÈ}=ˆ©5=ˆ~ =ˆm =ˆSE=ˆ5»=ˆ¾=‡û]=‡Þ1=‡ÁG=‡¤B=‡†ü=‡j9=‡MÈ=‡0Ý=‡&=†÷-=†ÙH=†°í@×9L@ÙþJ@ÛXÒ@Û©;@Ûˆ @ÛIþ@Û ´@Úˆ@ÚŒ@ÚJÜ@Ùô^@Ù]â@Ø4>@Ö9B@ÓÖ§@ÒJâ@Ò¡Õ@Ô|¤@ÖkÛ@×h@×xÊ@×6ã@×O@×$@×›@Ö¹B@Ö<¾@ÕñQ@Öe@Ö8^@ÖC³@Ö×@Õ¬¤@Õ{B@Õt`@Õ]@Õ @Ô¢r@Ônu@Ôˆ@ÔÀm@ÔàÃ@ÔÚ@Ô¹È@Ô»@Ô\Ç@Ô*°@Óøú@ÓÅÚ@Ó9@ÓW @Ó"0@Òó}@ÒÊ0@Ò¤@Ò~V@ÒU…@Ò í@ÑÇò@Ñ1@Ð6@κ@ÍøÏ@Î+^@ÎÖê@ÎƧ@Ìäh@É9X@Å—ß@ÄŸU@Ç!@Ë«@Î Â@Ï @Ï*i@Ï%@Ï7D@ÏX7@ÏTü@Ï.õ@Î÷ˆ@η«@ÎnÉ@Îr@ÍÓÔ@Í H@͆ö@ÍyÞ@Íg‚@Í>ñ@Ìáx@̆@ÊÄê@Èís@ƼË@Ä0÷@Á“O@À!u@Áý@ÃÅ @Æ6ò@Ç.@ÇÛ@Ç# @Çåè@É>@Éÿˆ@Êf@ÊiÒ@ÊC#@Ê@É݈@É©€@ÉnÑ@É@ÈrZ@ÇI@Å»â@Ä}ƒ@ÄZ@ÅQÝ@Æ•¤@Çnç@Ç¿¸@ÇÁ²@Ǩ@LJ@@ÇcÔ@Ç>î@Ç@ÆöŸ@ÆÔº@Ƴã@Æ“k@Æs@ÆRŸ@Æ.ž@Åö @Åy°@Äu£@Âè¿@Áz@Á’@Áû@ÃNÂ@Ä<¶@Ä”@Äë@Äi]@Ä9‚@Ä@ÃÔÎ@è@Ã…á@ÃkŽ@ÃNè@Ã%>@Âê„@¦¾@ÂcG@Âú@Á>h@¿ê²@¾ã@¾#6@¾ís@À1´@Á7@ÁV@Á?÷@Á ¬@ÀÚ@Àª1@Àzú@ÀGç@ÀY@¿Ïg@¿‘–@¿^Û@¿;ª@¿"@¿ =@¾í"@¾Íí@¾¬®@¾Š@¾eÜ@¾=ó@¾ 1@½ÃN@½*@»ÏP@¹\ü@¶uŽ@´Ñ'@µŸ>@¸?@ºuT@»Ã“@¼.Õ@¼6›@¼'Õ@¼+@»ü`@»Ð@»‡@»"@ººÃ@ºt'@ºNG@º @@¹B;@·tP@´ .@±× @°Õ\@²I"@µ -g@·m—@¸¾×@¹9Ð@¹K‰@¹3@@¹2@¸Ó @¸›R@¸gÈ@¸;º@¸Û@·íx@·ÀX@·Œ_@·Vx@·%@¶ø¥@¶Î#@¶§š@¶† @¶_{@¶+0@µô÷@µÐ¥@µ¼ð@µ¨@µ‹J@µm@µOç@µ,þ@´õX@´”á@´@³aê@²Ê8@²%É@±V@°¨ð@°œ±@±#Í@±°´@±òÇ@²+@²MŒ@²ž—@²Úm@²çŠ@²Î@²Ÿ=@²b,@² @±½u@±s¢@±P'@±KŽ@±EÆ@±.î@±­@°ø»@°ß¯@°¼ì@°d@°Wƒ@°(@°@¯óó@¯ÝY@¯µo@¯p)@¯Ý@®jà@­{o@«çi@©½:@¨@¨á@©aS@ªT7@©Nq@¦s@£rX@¢ ã@¢°‚@¤ËP@§œŽ@ª;î@«ë@¬—@¬¾­@¬ª‰@¬ˆ@¬`@¬1Œ@«ûB@«Åb@«ŸF@«C@«@@«WÐ@ªîo@ª}@¨û@¨S@§œ–@§ˆ@§v¸@§œx@¨:½@©â@©ˆ:@©¥ª@©ƒ‡@©C«@¨ðv@¨Š¸@¨% @§ð-@¨@¨<™@¨Kö@¨ë@§ õ@§“@¦z}@¥ƒ @¤W–@£ŒA@£¢7@¤‚´@¥–W@¦P -@¦‘Ã@¦ŒÝ@¦ká@¦'*@¥‰I@¤pÓ@£=…@¢«"@¢Öþ@¢ã}@¢'[@¡D=@¡b>@¢‘@£ý3@¤»º@¤Û@¤·Ÿ@¤—’@¤‹‚@¤‚´@¤nò@¤Qã@¤2@¤¹@£ïw@£Éø@£¢8@£z‚@£S@£(@¢îG@¢Œ²@¡éÂ@¡@ “{@  Õ@¡"´@¡ Q@¡Ðã@¡Á@¡@¡}@¡S¸@ ê@ŸÊà@S@™x‡@•Õ@”éH@—@›»„@Ÿ" @ º,@ òÃ@ “­@  @Ÿµ -@Ÿu¼@Ÿ[à@ŸSw@ŸBh@Ÿ ë@ž¨@lp@œ»@›I@›:C@œ?Þ@:.@£î@–µ@`@,ö@ -)@é@T@2²@H@œbv@›^N@š3z@™EÈ@˜ñ­@™AP@™Ùz@šeu@šÔ@›O@›@šŽ@š±@™Í -@š 7@šl‚@š§ô@š°@šv@šƒ+@šfô@šI)@š*@š R@™íP@™Î&@™¬C@™‰@™gI@™H@™++@™u@˜ó×@˜×›@˜º6@˜šÀ@˜xa@˜S}@˜,Š@—þ÷@—¾ì@—hY@—O@–òÁ@–ÿ\@—û@—@–ÛE@–µv@–“'@–q[@–N+@–æ@•±d@•!e@”¨m@”Š2@”ÆÏ@•Ò@•?n@•/@• Ã@”èâ@”µ@”fH@”@” m@”(,@”J™@”R^@”Bÿ@”)k@” Ÿ@“î›@“Ïê@“°×@“‘e@“pß@“Ky@“@’¶Ð@’-Ã@‘ 5@‘B³@‘&W@‘E@‘Ž“@‘Ø×@‘ý¡@‘üe@‘æ3@‘ÄM@‘›×@‘vï@‘]ê@‘M@‘: @‘@ê‘@†{@ÚÇ@@Ž¿Ð@‚@p‘@‚è@$­@ŽÃ&@ŽÉž@(H@‚@¦ @¡i@@u;@\Ö@D”@-!@|@Žÿƒ@Žçf@ŽÎž@Ž¶@Žò@Ž…”@Žl]@ŽRÉ@Ž9ï@Ž",@Ž )@õ=@àÆ@Ë@®¥@ˆ;@ZÈ@/9@µ@Œú¨@Œîb@Œç)@Œä)@Œß†@ŒË‹@Œžf@Œb%@Œ-Ñ@Œ³@‹üp@‹äî@‹ÅŠ@‹®@‹ªl@‹³9@‹´‡@‹Ÿ*@‹oC@‹0«@Šûë@ŠÛN@ŠÅ”@Š½I@ŠÑI@Š÷%@‹:@ŠÜE@Šn¤@‰Æö@‰ k@ˆ{C@ˆ.í@ˆ(Ç@ˆak@ˆ»6@‰@‰!ß@‰|@‰¾@ˆëm@ˆìŽ@ˆíõ@ˆÐá@ˆ’M@ˆ3:@‡¨¹@†÷¼@†=Ò@…¦'@…Zè@…i @…°¬@† @†}@†ô)@‡E-@‡`s@‡cz@‡^è@‡@_@‡ ‚@†áê@†Ù–@†à@†î…@‡@†ô\@†¦˜@† (@…`Ò@„i@ƒŠÚ@ƒ8_@ƒŠG@„/'@„Åì@…û@…4@…,%@…3ñ@…Rx@…g@…S~@…@„Ò…@„’r@„6@ƒ¨Ô@ƒ)Â@ƒa@ƒT@ƒ¡"@ƒµ@ƒ‰8@ƒGX@ƒÐ@‚î @‚$@µª@€Š@ž@~mÅ@Cá@€lÌ@R7@‚/@‚æÓ@ƒ]@ƒ‹‰@ƒy@ƒ,=@‚Û}@‚Õ›@ƒ¯@ƒ5@‚ü„@‚rï@ã@†×@o…@–S@Æê@¼-@\ð@€Ç8@€UÉ@€cj@€Ïž@ž@ä@€÷ž@€ñ@€Ë@€^T@ͺ@ w@~@@{ÿw@y<@v ;@t@sd§@tjB@vBE@wÌ@@xñ@zC@zü‘@zò¹@zf€@z[‡@{Ý@{•”@{f.@z€'@yCh@x€@wô@v¢@vìÇ@wÙ-@xÂð@yZ@xõÝ@x¢û@x!'@wT´@vq@u‡H@tG @rŠÛ@pÍÍ@oô1@pb”@q”È@rÖ4@sÂn@t$P@t@s£a@sul@sÄ @tk@ulT@uà[@uÞã@uª÷@u{0@u>D@tÍþ@t|@s<ž@r@p!O@m/@i 0@fá³@eƲ@f¦"@iå@l@4@nö7@p€Ì@pú5@qT@q>@qi7@q2"@p¦´@pT@pš@qTa@r@r© @rÅ@r9¦@q@oùã@oV@o Í@nÒ—@n¢U@nj@nŽh@n›¶@n¿T@nà”@nêü@nÊF@nm?@mÇÃ@lãÜ@l*ò@l+ô@lò @mÑŠ@n/@mýú@n'@nVÎ@nh%@må7@mS@m3@maÞ@m|T@mS¼@mø@lâÑ@lrg@kà¦@k±g@l@lO\@l]@k 5@kƒë@k…@kÑ@jlÀ@iì @i›4@i“@h+j@fé @e¸n@dÜõ@d^¹@cõX@cSê@b•Z@b0µ@bŸ›@d@fTÛ@hy*@h«@eŒ^@_}F@Xî@SÖƒ@SöÊ@Y.@`©Š@fVê@g« @dÑö@_”ã@Yòd@V@VN*@Zýô@aöH@hJw@lk¨@nÛ@m_É@j"¡@db3@] Â@Vô9@TÚ©@WæÌ@^I]@d™ñ@hK\@iV8@i²¡@k Ä@lö£@m‡ë@j÷Î@dИ@\?I@Sò!@O%‘@Oó|@V%@^Õf@g9ê@m^×@qd¸@t@K@v^‚@wµÒ@xD‚@w²¨@u~)@q‹*@kS@b• @W »@KkU@CÇ@CH@Iõ @T¥Å@_cd@g¶ß@m+%@p‚@rŠ*@sªÙ@t&$@tDÑ@t0V@s×ö@sB -@r™@q“W@oÜŸ@lï@hf¹@b@ZO@PÆ@GG@AN-@Bz@IŽ@S¿–@^u«@fÝo@l-f@o @pÓ€@r­I@tÝX@w f@x–r@xõå@xn2@wÍS@w„9@ws@wPh@w -\@v’Ê@u_A@rÏ~@oO–@l@itƒ@fÿ@`o~@W{F@KÑ@@rœ@9Šb@9Ý6@AL@Lñç@X§,@aX•@fiî@h§@h»d@g¼@g¬|@iû@@mï@q€ü@s‘K@tv.@tó@uh@uˆÑ@tØ4@sJc@p @ki@c¸@Ys1@S³@SÕÛ@[EÒ@eÂ@l•+@pD˜@qç@pD¶@n®>@l0@j>@g>6@cot@^f|@W‹›@Mõ @BË@6”B@0U@1‰R@9¼@E@PbÃ@Y¶í@`…@eK@gÄ@i¬ @kn8@làæ@mŒz@m]V@l¸»@l&}@k´±@kRS@kW @kØ@llÿ@l®@lYC@kª¤@k8.@k@j¢8@j@i£S@i‚C@i@h½@fc@d›@cq@aªÚ@`À6@`Õ¾@bj@c{@bôß@aò@aGÆ@a›@bXþ@bZ@a¬x@afJ@a¹(@aã -@aë@^£›@[&R@WÂ@U(@RvÂ@N,C@F±ý@;•ó@/Fˆ@'Å@' p@/6¹@;ož@Gc@O×`@U¦’@Y©ò@\Üd@_)‘@`5Ü@`Œú@`õì@a„’@aýÌ@b_S@b¤Z@b§@buå@b'0@aŸ³@`ç@`Be@_£Ô@^€ @\¨­@[™@[4'@\Ññ@^ˆ‚@_+*@^‡R@\‹¾@YtŽ@V±°@UÁ$@V¡f@X @X;x@VnC@SÕp@Qá•@Q$¨@R -@T^*@Vš}@VÑÊ@SJ@L÷@F6ç@H;@OÙï@VÇŸ@Zpâ@[ÈU@[·D@Züò@Z;<@YºÛ@YCY@X;q@VÂ@TãŠ@Tw"@Uõ@WV@X¥±@XýÌ@X˜R@WºÑ@V %@SPó@P h@N[ @O=n@Qi¼@S3‡@Sï÷@S™*@R|\@P­©@Mêy@JÑ@EKÓ@@‚@:"É@2 @'j:@x€@ü=@}@”l@!U@+ŒÙ@5œé@>"G@D¾ë@I/Ý@K‰k@LˆÈ@Lýþ@M ²@L0®@J‚…@I0—@I@€@J„ü@LÎ@M‚;@NŸ@O[u@O¸w@PY@Oü›@Né²@LÊy@J€S@Ið@HÉJ@I…6@JQ{@JvK@JUä@JŸâ@K@Jê¹@J'²@ICË@H=þ@F«n@D9ã@Ar@=ø%@<Ý™@>“@Aì¡@Eö@Fê‰@GËÁ@H1j@HPÎ@H5†@H&ÿ@HE@GÖ_@Fí|@DŠ÷@@# @9÷š@2ƒ9@+\ç@(@+?º@3põ@< *@AØ)@DM&@DÖú@D‰ð@Cô¡@Ck=@C'@BãÊ@BÚŒ@BµÂ@BA­@A½p@Aw×@ACC@A -b@A @A`ä@AÖ @AóÜ@A§Ï@Agl@A[Â@Ab@AC–@@É¥@@*„@?ÎX@?¼•@?ÔÏ@?ôí@?Éß@>ø&@=š¼@H@/€ž@,Às@(éñ@&>$@'$j@+Ry@/Ík@1Ç@0ù×@.žÁ@+U@'9Ö@"si@½/@*±@ ÂÄ@“ì@3@Ϻ@™ß@6†@"´W@(¤”@,†³@.t@.®@.ö@-Ø@.;‡@.j¥@,ã@)–Í@&|û@$öW@$ ÷@"]E@ ¤Ü@!Ld@%hu@+N@0<”@2¿C@3:Ÿ@2²ó@1Ö[@0à@/ú¦@/)Ó@.1È@-G@-3°@.C®@/½â@0‡L@0Q'@/©ü@.Èñ@-DŽ@*­Â@&ä£@"ÉÂ@ }@!¢L@%z»@)œ˜@,K.@-yº@-âð@-¼§@,ŸR@*›t@(ÉD@(3Í@(ê…@*Y­@+· @,‹m@- -Y@-^Ä@-,+@,Uÿ@+C£@*bI@*þ@* ^@*C@))æ@'û}@'Ë @(¶±@)±(@)é@)‚m@)§@(±ë@({O@(~"@(¬±@(·D@(‰m@(D@'Ñ5@&ö~@%­ñ@$( @"î½@"†ó@"¡=@"ˆ @"]¥@#c@$­@%Õn@%õæ@%À7@%´\@%•›@%/@$°¶@$‰Š@$â”@%I‚@%S”@%¶@$—µ@$V.@$ZJ@$le@$B‚@#Ö(@#ŽŒ@#…5@#n@#@Ô@#˜@"àv@"Ì*@"ì2@"ØÓ@"N=@!‘›@!q@ Ìd@ ù{@!?ð@!Q@!/²@!@ äç@ ãÓ@ Ê_@ A"@Ù@vK@ü|@ Jâ@ @Ò@I@—@¿ -@y:@(o@Òã@›ë@ŽÂ@¡@æp@& @ £@¼@;G@û‘@•²@æA@šW@’s@w@G7@@y@€f@¬@·ù@Á@ j@“ó@]@¸@ÿg@Ä{@`–@[ä@TU@ ‹@r@¤$@áí@f@çÒ@” @Ûœ@ð9@H@À @|ï@â›@›@g(@~¥@*‰@t @ÿ7@ÕÍ@7v@ºÕ@žÃ@šˆ@¼m@Í@hÙ@•×@Ÿ°@lZ@âñ@=@L@Ë«@Ëw@)÷@…L@·L@Ìf@ÃS@ˆ^@(g@@Rü@|Ø@ ùê@ }u@ - l@ -<@ d@ó@¬é@öØ@£1@‚ò@gm@ÿq@Gû@P#@œ@wN@ 4@ ÿ@ -»!@·"@Õ?þ0à?íÛþ?ÛÌU?Ï}n?Ð4?ÝWÕ?îÞÒ?ûe†@%˜@@B–?ÿ%Ë?ýÅÐ?þål@%¼@dc@ -t -@ >~@ðy@ -ž@²l@å@ؾ@¯Ë@'ž@[7@»R@U@ ‡°@ -Šº@ .D@ W¤@ -©b@ Q@ ºj@ ÷j@ HÒ@ ñ@o´@Y2@ Ùœ@ E=@ X@ §4@xÇ@š@ ¿“@ ì8@Ç0@{Ó@æ?ÿÀº@i @r;@ Ÿù@ :²@ œ4@ W@ Á@ [@ è»@ †Ê@ "<@ °À@ ã‘@ vd@ Çq@ Oo@ ¹@ ÝS@ j4@ -ÍJ@ -0Q@ tÌ@F @þ@XF?üôu?øvÊ?ùL~?þ˜å@›.@Ó@U´@÷Ÿ@Di@0)@ÇÄ@@Ie@Ã@D@T8@Eó@x}@Ì:@ìé@çÆ@Ù@¿ò@ê@@T>@÷@6M@_X@n›@@h@@Qø@ßC@ @—Ñ@xÄ@å^@x -@÷Ì@O’@`@Ë@Øý@´p@aÁ@ºŽ@³@d‘@ê@í?þ£?õGã?è´¸?Þûi?ßUN?Ꙃ?úÜ@ÒS@0š@fç@´ÿ@eó@O@‰¯@q;@Ú@2L@áî@hw@~@ú@¾#@‰Í@x@”m@«Æ@¿x@äy@Ö‘@Ih@@Ù@/¥@ -@È>@v@,š@ŸÊ@¾º@Áâ@å»@øS@ªÃ@ Ý@‡¦@_Ü@V@LX@gb@´+@÷ @£@ÿ@!T@ëô@¦@cÿ@&R@xö@ƒ@Þ(@È-@'@mY@¹³@…{@aJ@p´@”@A@Ap@§@?¾@í+@Ð@ì @?O@•¥@‹¾@´T?üøÿ?õsB?íÙd?ëjj?ðG?øò?þJ@™u@Ú5@¥I@€Û@–®@ͽ@¿:?ÿ©w?úò¨?ôOó?ïÕ?ðy¥?õ;©?ú+[?û¦Q?ùZ?õÿ=?ôÊø?öƒ|?ù–¿?ûüV?ü÷d?ý[j?ýÄ ?ýîÏ?ýôÏ?þ&F?þ"?ý<à?û"Â?÷§?ó§J?ñKš?ñ¸[?ó˜?ô|Î?ó˜?ò”œ?óHÍ?õ~u?÷-d?÷6®?öÜ ?÷SÍ?øhš?ù5Þ?øüo?÷¶)?õ“¨?ó|Þ?òû?ô2Û?õÜû?öéÂ?÷]®?÷«°?÷áÂ?÷‡ä?öÉã?öIê?ögþ?÷´?÷Ûk?øLu?øZW?øw?÷¥‚?ö©¸?ôo·?ñõ÷?ñCÞ?ò­¾?ôeÁ?ôÏ…?óÜy?ðçl?ëÌÇ?æ)?àüÐ?ÝÏF?Þ˜ ?ãS¤?èÎ?éÏ™?ã9Ÿ?×å?Ë3?ÅÆ?Ⱥ ?Ò´?ß+?é?ï¿?ò}¬?óW»?ò°º?ïþ×?ë¼Á?è`š?çïE?êQ7?í­?ïøÈ?ðö?ñV?ñjÆ?ñ -u?ðE?îLŒ?ëŽm?èwŽ?æ ?åØò?è?ë)D?îù?ï½Á?ð ?ï;)?í­n?ì{?ë9a?ëËÊ?í•E?ï0|?ï©0?ïd%?îæ=?îa?í¤ª?ì0O?éò½?çš?æ,ð?æž?æ§O?æ´c?åƒy?ãÙ?ãi¥?äܨ?æeõ?æ*L?ãÊD?ß°B?Ûß?Û§?Þ?âÝo?æ¢j?è¸?è?èîj?é$?è÷4?èŽÈ?ç©å?æAC?å8³?åu?å ?æYç?æÑ“?æ÷Ä?æÎÜ?æ]×?åùÙ?åÎP?å–?å -?ä]ˆ?ä ?ä -8?ãà~?ão‰?ã\Û?ãÎÑ?ä I?ã¤b?â-?àþ‡?ßÙ?ß¡Ø?ß¼2?߃Ÿ?ß-Ö?ßÚ?ÞÞJ?Þä?ÜÊ ?Û³c?ÛY ?ÛÛ?Ü€?Üû?Ýw{?ÝÒA?ÝÞ÷?Ý›Ï?Ý ß?Ü‚.?Ü>o?Û°b?ÚëA?Ú]ú?Ú˜?Ù•p?Ù/Ö?Ù?Š?Ù¾?Ú¡¨?ÛÒ‰?ܘä?ÜÌï?ÜÄ‹?Ü??Û¢Â?Û¿·?ÜtM?ÜÙa?Ük`?ÛçÆ?Ûï?Û±Ù?Û|?Ú•¢?Ùì$?ÙË?ÙP˜?Ù2?ÙSæ?Ù½Á?Ú<í?Ú3°?Ùƒ?Ø•x?Øw?Ø õ?Ø[„?ÙÚ?Ù„?×X?ÕV¾?Ôá‹?Õð?×p×?ؼ»?Ù#?ØE?Ö\?ÕžK?Ôº¦?Ô6µ?Ôu?ÓH£?ÑûŠ?Ð5?ÌÀ‘?È%¯?ÁÇç?¸'À?ªŸŒ?¹?—K:?Ø?¬5?ºFÞ?Ãn¾?Èš??ËÞg?ÍB?ÍÂ?Íö?Îàë?ÏþÂ?Ðx>?ÐT&?ÏÊÈ?ÎúF?ÎX¨?ΓJ?ÏW®?Ï”¾?Ï`¾?ÏZ}?ÏF‚?Îòë?ÎZÎ?ͼ8?Íp?Í?Î-?λc?Îõ¢?ÎéŠ?Îh3?ÍïÊ?Íá?Íì5?͹?Í}?̃?ÊÛK?ÉÈn?Éüú?ËB¨?̆O?Í^Û?͹ß?ÍfÉ?Ìó–?Ìëî?ÌvK?Ê+ ?ÄÀâ?¼1Z?³æé?± y?µ ?¼s¦?Âç°?Ç,?ÉÂ?Ë Þ?Ë¥Ì?ËÆè?̽?ÌLK?Ì ï?Ë„Ú?Ë2¯?ʳ±?ɸñ?ÈÂ?Åýe?ĸz?Å¡P?Ǿš?É/ ?É3Æ?Èl2?Çà?Çè¼?È?†?Èf¿?Çèo?Ç F?ÆŒT?ÆÞR?Çg)?dž:?ÇDƒ?lj?Æ×€?Çô?Ç>f?Æó?Æåa?ÆÛ6?Æq"?Æ‚`?Æøé?ƪ[?Å…ë?Ĭ ?Ĥ#?Äׇ?Å3À?Å¡R?Åoû?ıŠ?ÃÏú?Ã)K?¬|?Â2æ?š?Â1¿?ÂoÑ?Â^Ú?Áá§?Á¯º?ÁíÅ?Â[ô?Â1«?Àïó?¿+3?½·¨?½cG?½“Í?½œ ?½”!?½x+?½×??¾•¾?¾ïã?¾Òe?¼ûZ?¸@j?²¯ ?°–º?³qH?¸W ?¼@¼?¾?¾J>?½ök?½ûy?¾ ‹?½º°?½=C?½ z?¼úÅ?¼€´?¼P|?¼Hs?»ç?»Ev?ºÞF?»"Ì?»ˆ’?»EP?º£\?¹ô5?¸«€?¶Š?´GÐ?²ö?³YO?µÜ?·?€?¸ñ$?¹Þô?¹éž?¹œ÷?¹Ö?¹t,?¸Êd?·üè?¸¦?¸¡l?¸?¸"?¸ ¤?·áý?·‰L?·h?·Y±?¶ýÊ?¶:?¶Z?¶mr?¶j#?¶€?µßM?µð„?¶]1?¶ßl?·É?¶£Ž?µ…?´¹~?µ3?µ²‡?µ)¼?´ê?´}?´…b?´v4?´P»?³ÿ ?³Ì%?´ ó?´_û?´|?³{û?³"`?³hG?³ÇI?³P4?²À}?²·h?² ?±Ýû?±`~?±¬.?²Kö?²JË?±×z?±† ?±)@?± º?°ñ?¯ýO?®µÚ?®o'?®¾Ç?¯ZI?¯õÍ?¯§I?®È›?®¦ ?¯#î?¯¨1?¯À`?¯sì?¯ -?®lë?­zî?­Y?­JW?­ÊÝ?®7 ?®d±?®–?­)Ë?¬¸ª?¬¾3?¬€\?«Âÿ?ªµ‡?©¥+?¨éa?¨•Ô?©^?ª¸,?¬Nê?¬æ~?¬ “?¬ ð?«ûm?«§?«O?«3Ù?«‰?«F?ªPƒ?ª ?ªC7?ª4-?©ÿ’?ª›?ªAJ?©÷?©MÔ?©?…¶?„Ý‹?„j—?„~?„K?„ˆ?„†±?„•p?„”e?„;Ø?ƒé9?ƒ¼¨?ƒ{=?ƒ*ó?ƒ%?ƒ*Q?ƒ?‚ú›?‚Ç?‚nÛ?‚*°?‚¶?ï6?©‹?^`?3\?`]?Œ¾?fÞ?+L?ñ?€øñ?€¿—?€®Á?€Ös? _?/$?4D?€üB?€—”?€X-?€WÆ?€^à?€H·?€$¥?€?€6?€¯?}+? -U?~Ä4?~jo?~w?}œN?}'t?|ëä?|üý?}*7?}f?|³\?|Y=?|=é?|$6?{Äp?{zG?{+?zÞÈ?z&?xåõ?wÙJ?w¾ž?xŸt?y}U?yÖï?yêÎ?yµ¶?yp·?y?x¦Ú?x‚?xWF?w¾é?v·?v0G?v’i?vô¦?w%?wf?v„V?uóþ?u}D?ug?uËÕ?vA°?uùZ?u<Ñ?tŽé?t-?tw?t*?s²}?sIÒ?r÷‘?rÖÁ?rd¸?q»?qUc?q2.?q/?pyV?pdf?pÆÜ?p±g?p ?o©å?o²‚?o…ç?ný?nÞ5?nêð?nN?m_Î?lá•?liã?k­?k)‘?jî?k?+?kÍu?køQ?k¨v?kO?j1q?hË?g‹¨?f§I?fTþ?fî¦?gÓ¶?h^Í?h}»?hcs?huÐ?h¤µ?h›µ?h1Ø?g ¦?dÍ·?aà3?_Ð -?`]C?b¿ê?d¤~?e -‚?d07?cË?bµ ?cOƒ?cÁ´?cÜ&?c£‘?c{4?cš ?cˆŒ?cE?b¥’?aG?`?_ƒÖ?_"2?_’ã?`—\?aqp?a®K?acÊ?a ª?`Ó÷?`k·?_«Ù?]æÀ?Zqù?VR{?T‘Š?V9?YB[?[¢j?\Ò?]#d?]8z?]9ü?]Wn?]¨ž?]ب?]¿—?]G]?\˜7?\SS?\F±?\;»?\Ã?[ž?Zü]?Z?Y6„?X ?XØÀ?X°?X2?WÀÁ?W6©?UÕ?Rñ?L‰+?IÕ?NU?SŽ?UûŠ?VP ?VV÷?V¨¸?W9Æ?Wø?VüI?V?SßÛ?Qj?Q|?Sø5?U ?Usx?VR?V;Þ?V>@?V ?Um?D@?7Ý«?0ñ?=?F¾?H_«?Héš?IõË?Jæê?KB?JÙu?Iìï?IuÑ?IÅV?IóÈ?I¬?Iµî?I\Ï?Gî°?F¼?Gn…?Gý?FBÑ?Eæ?G4Ã?GvÑ?Fçú?FôÛ?F¦š?FBÚ?G?Gæï?Gúý?G)Ê?EcK?C`8?C4?D ?Då?C˜w?D+¥?DÈY?E-?EwÉ?Eö?EDÓ?Dz§?C>·?BÅ©?C†~?Cûà?Cа?C²˜?Bûé?A´|?AJ‹?AÁ÷?AØ?Aœ¬?AŒš?AHì?@ÔŸ?@ÀÕ?@Ð?@±—?@ç(?@‹›??ºV??dë??n?>Z¨?>;?>ƒ?>œù?>ãõ??,?>åê?>x?>‚ò?>ì‚?>ë?=™a?<è?•?9n¿?9¹ç?9ëŸ?: ¨?:;3?:9Ã?9Óƒ?9Z¯?9#2?9'8?9"y?8×ù?8›x?8Æx?8™Ù?8 C?7Ú?7Ñø?7×D?8H?7Á?7g¥?7K?6åƒ?6ÈÌ?7š?7(ê?7T?6¸a?6Uo?6Æû?70©?7º?6²H?6†æ?6Ž]?6]Š?6 ?5ïê?5˨?5»?5ª´?5]„?4×E?4 ?4xg?4_»?4Ð?4Ü:?4¤¥?4´‚?4¯¿?4«7?4Í„?4¶E?45?3»?3´Ö?3®?3iY?2ãÔ?2³»?2¹û?2yô?1Úè?1FM?0ô­?0â&?1.þ?1X ?1$g?0óN?0”‚?0+?0 ,?/ä?/†à?/!Ï?.í¿?/ ?.â“?.?.m?-s:?,êÖ?,—?,”È?,Qp?+Ò?+~ ?+xû?+f­?+G=?+¤û?+×"?+º?+T?+€=?+x]?+%õ?*úþ?+>B?+p>?*ØÙ?)îÊ?*0¤?*¤ -?*?(-]?& -I?&j¶?(8ü?)#å?)AÖ?)6?)P?)Ž?),E?(öÒ?(­õ?(ŸÚ?(c9?()‹?(+?( ?'Ëß?'¹{?'ÍÜ?'Ô»?'çÕ?'¥–?'(v?&ãM?&ôÐ?'#î?&ïI?&tÆ?%ø:?%œ¤?%€ô?%ܲ?& –?%¾ì?%Io?$ð]?%·?%2`?%C?$¢í?$<’?$µ?$b?#é¹?#{6?"ĉ?!bI? ž?!T?!à??!7?‡‘?×…?è?·¤??4?P{?D°? 3? -Ž?¹Ô?ö.?ÉÏ? ?;¬?Ro?Þp?ïN?Ø?¨4?¼‡?Êl?É?ü×??§?z[?àÍ?Û ?ã?ö?u{?æ ?©M?{W?ØÀ? ?Ú¿?Q ?"©?*?"S?!ä?He?6g?Ù?Þ?óþ?‡¤?ñ?…B?Y?¼?ú?VA?šè?²G?lç?ç¤?~†?Xv?“z?ÙŠ?Òy?݆?'´?[­?M5?y9?{b?ÎŽ?Å?û–?¡ÿ?×Ë?©?5µ?g?ÉÃ?Šì?}W?u*?N‡?Ó?ª¤?8Í?J+?‚,?…~?‡š?hl?(t?é,?ª*?p#?E¦?9ý?DÀ?>?W+?O¤?â4? 0?ÄU?õ?Ö?Á ?³×? ¥?´ã?¸=?5‹?‡'?a:?D¬?ÍN?‰ê?³7?«?¤5?¡a?<?Ë(?©˜?Ñ)?Ü?Ýv?®±?µ?†1?;²?šÕ?ËÌ?Åõ?Ðç??é?JÂ?~0?ÐŒ?4B?y?²•?Uo?³‰?‘˜?æj?P?þf?;?_1?„Ñ?ý;?Té?só?¨ý?wx?3$?6`?÷`?ÆÈ?Ïú?s¸?l?R#?ª?Œù?ó ?*Ò?Ü/?¹¯?·Ù?®(?qn?Ãè?;@?z:?Õ?¼T?Ñù?+?hq?ü?™Ò?Êç?‘Õ?$?ìÓ?F‚? UC? À‰? -ý?1>ó:…>æv¼>éTƒ>ùÛl?>›? -ÛŽ? ‹´? Øv? ‚N? ŠŽ? b? -¥'? -Ûñ? 3? 7À? ? i? àU? ß|? W? ÿ•? Ìó? Ðy? "6? -|? ðz? ø!? Ñj? ¿? Âg? È? ¦a? ƒü? 5¼? ]?iÁ?ñ®? -1O? Hú? M·? ?Ø? (ð? £? -ä ? -èI? 1? -® ? -‹2? -ƒ£? -"Q? â? YÔ?ºé?‡a?ïñ? dó? R›? ì? M\? ´®? Ô•? ¯´? ¤m? vç? Ã?‘?B¬?x?ž ?„I?{û?€Õ?Sì? õ?Il>øÒ>éd“>ä7¿>ìës>üÎœ?'¬?`R?b?Fà?‚?·M?¶?•?Å·?4w?Ü?}ä?.?\?J ?É?Ì€?‚í?Cµ?&ž?/a? -z?îŠ?Iä?J®?ÒK??Žé?Ñ'?«F?ï?›¡?‹w?·œ?Ÿ¼?«?Å?Ó7?z‚?éO?kß?i?ÒÛ?öz?¿{?¨€?¤•?Ž‰?{z?OÊ??êy?É´?¥E?ha?jà?fô? >ÿÔ?[? s>ÿí >ÿ¸‘>ÿ[U>þù >þµ±>þ…Í>þqÜ>þVí>þØ>ýêœ>ý³f>ýŠ3>ý\@>ý –>üÂÜ>üŸ÷>ü§a>ý5Ž>ýGQ>üŠ†>üÏÓ>ü|Ü>û@š>úÎ;>úÀ~>ú™÷>úb>ú'Œ>ùö'>ùÃ:>ù‘W>ùe×>ù:ù>ùÜ>øÐ{>ø¥°>øŒ[>øs¢>øXé>øI->ø0¦>ø )>÷âq>÷ÃV>÷ a>÷xT>÷O®>÷CÂ>÷ó>ø »>÷¨å>öæ>ö•.>öI¤>ö/`>ö/H>õäy>õ”>õh/>õAÇ>õBr>õZÍ>ôÞÆ>ôfè>ô0U>ôŒ>óØS>ó•8>ó3{>ò«`>ñ½%>ðÜ>î ù>í>î >ïצ>ñÜ>ñ˜†>ñ½0>ñ­|>ñ„P>ñ_I>ñ0Š>ðïù>ð´³>ð~>ðOR>ð&">ïþ”>ïÕÐ>ï¬ó>ï[>ïir>ï/y>ï8>îÙ×>î¦[>îxl>îTœ>î3i>îÛ>íæ¯>í·ã>í}´>íIv>í û>ìù>ìÑu>쨇>ì>ì_}>ì7*>ëüÇ>ëÁ_>ë’A>ë|O>ëvÞ>ëHö>êÈ‚>êl>êTú>ê‹‹>éâ >é W>é; >陋>é¹>èU>è"î>è*‡>è -*>è£O>èáM>豎>èšÙ>èŒÔ>è0ë>çÕ>>çè÷>çÙ¥>èf>è†,>èz&>è7é>çÖÌ>çW«>æâp>ç <>çL>ç6Œ>ç“ú>çZ5>ç>æ÷+>ç0 >æåË>æéÒ>æÌA>æ‹>æ3³>å÷l>å®Ï>åi8>åÏ2>æ`>æÝÓ>èE>é4‡>çê}>æM…>å£U>å×K>æ>åôŸ>å‹|>åc>å].>ãI’>ÝŠµ>Ô‚>Ê8>ÅeT>ʱð>×oG>ß²¶>á’ò>á†=>â4>ác¥>ÞÎâ>ÞN9>àó*>âÊ >âØŠ>áœK>à+õ>ßrÒ>à³G>áv%>á%«>àØ™>àˆ`>߶A>ßšJ>ß¼î>ß©’>ß:>ßSÕ>ߤŸ>߀2>ßx§>ߧ>ßs‘>Þé¤>Þ@ó>ÞJ>Þ}Y>Þ‰>Þl*>ÝÚ‡>Üû>ÜÓ:>ÝÖ>ÝÞ>ÜÚŒ>Ü~u>Ü?É>Ü.¾>Û÷M>ÛÅÉ>Ûœ¼>ÛW>Û‘>Úü‡>ÚÙø>Ú­>Ú|!>ÚL»>Ú#8>Ú$>ÙÞç>Ù³×>Ù¤>Ùb‰>Ù%ö>ØÕ>Ø_Ì>ׇz>ÕÚH>Óv²>ÒA™>Ó–.>Õ¸v>Öõ§>×mH>ב¶>×à>×J†>Ö~>Õ˜·>ÕÉ>Ô_>Ô8”>ÓÞr>Ó™1>Ó[#>Ó ï>ÒåÚ>Ò¥×>Òln>Ò=Œ>ÒK>ÑÚõ>ÑœR>Ñbá>Ñ5t>Ñ>ÑÊ>Ð÷,>ÐÓÖ>а®>Ð’">Ð|•>ÑnW>Õ,`>ÔÇ>иÝ>Ï•µ>Ï[Æ>Ï >ÎÞÿ>Ο>Îb>Î(Ì>ÍâÈ>Í–»>ÍVV>Í>Ìç>Ì´Ï>ÌO>ÌL”>̲>ËÝd>Ë­\>ËjÎ>Ë!\>Êó™>ÊÅ^>ÊŒö>Ê.Z>ÇÙ‡>ÂÀ>ÃöW>ÇuÕ>ÈÄ>Èè">È¿î>È—Ù>Èc)>È&Ý>Çëç>Ç»‡>ljw>ÇLÝ>Ç ¨>Æ·Ò>ÆZ>Æ4:>Æ0:>Æ×>ÅØ >Å—ª>Åcá>Å05>Äì.>ÄžŒ>ÄX¹>Ä&>ÃÞL>çä>Ãu)>ÃGœ>ÃT>Âée>»Ì>ÂÞ>Â^0>Â* >Áú>ÁÍs>Á¡ç>ÁwB>ÁP‡>Á,>Á ý>ÀðÍ>À» >À†->Àg¼>ÀC£>À'4>¿õ@>¿¦£>¿¢@>¿Á¬>¿¤ç>¿M‘>¿ž>¾õÜ>¾á¡>¾çG>¾¥î>¾‚˜>¾zÍ>¾,.>½ù9>¾Š>½°À>½Ti>½5A>½7<>¼c>»+c>º™`>º\Ë>¹¬£>¹˜í>¸óŒ>¸2ù>¹Hß>¹>¸å¡>¹t >¸¦c>·p6>·q›>¶§&>¶²^>¶Ý>·#·>·¤S>·Tp>¶ù½>·J>·@¾>·Cß>·™U>¸%E>¸bÄ>¸:ó>·}â>·”2>··á>·¬†>¸5>¸^£>¸Nå>¸”ò>¹Š>¹ç>¸V'>·h4>¶»>¶?>¶~D>µÙÃ>µ â>µr]>µG5>´»¤>µ G>µ ó>µZß>´ú©>´r1>´ >´@Ý>´>³‹ ->³:Ê>³ -f>³:ÿ>³=à>²ù>²ÍÈ>²gF>²Š ->²°–>²é>±®Î>²ò>²)ù>±š§>±Dà>±\|>±d8>±FW>°úW>°ß…>°¸ó>°f>°*%>°–>¯ð¥>¯¸¬>¯© >¯«»>¯ž™>¯Œ]>¯|.>¯o>¯cž>¯I=>¯Â>®£>®u>®¬j>®{r>®.Í>­ï>­¹½>­‚4>­B’>¬±B>¬x>¬zL>¬‘½>¬Rƒ>«ÈÛ>ªWÙ>©Ï}>©Ëv>§â>¦¼>¦!>¨ Y>ªC>ªÇë>ªßg>ªÖr>ªÁÜ>ª¦â>ª|Š>©§>§Y >§ÆÏ>©€5>©­ó>©‹î>©j4>©D”>¨é|>¨h>>¨ž,>¨ÔÜ>¨Áç>¨“Ù>¨jü>¨P>¨5 >¨ô>§ïì>§Ñ>§­m>§‚é>§\>§=‚>§(.>§#À>¦ý~>¦Äz>¦˜U>¦r’>¦Rq>¦2§>¦}>¥Ý¿>¤’½>¡ÆŸ>£/R>¥2e>¥[>¥?0>¥!L>¥>¤è2>¤Çí>¤¤F>¤{P>¤P>¤)î>¤_>£å¿>£Æ+>£š‡>£L²>£2¦>£‘~>¤V`>£Æj>¢ô–>¢ºî>¢’Œ>¢e2>¡ë´> ˜>ž÷,> ž¹>¡Mñ>¡oA>¡m,>¡L˜>¡'[>¡í>¡Ø>¡&> É–> ”1> ‘:> ƒ–> Z1>  ´> 0¹> -§>Ÿøã> î>Ÿð8>ŸŒ">ŸÖ>ž¹">ž±5>ž•:>ž >sÃ>5>œÖ›>>4Ã>Jâ>âH>ž({>ûP>Ÿi>uÛ>¨>}m>¤*>â ->C€>œ†œ>œ­ˆ>^³>œýw>œ—t>œêx>_>©>œ¹ >œ´~>œ÷>œ®f>œÜó>œPÝ>œ9Ù>œ.ú>›Óh>›ft>›¸>š%>šò1>›_{>›Çº>›ne>›z>š¸D>š>M>š>š1H>™ê >™‡·>˜â‘>˜± >™ >˜ÃN>˜Š>—é×>–m¾>–Ž†>—Æb>—†ª>—àß>—¼õ>•§>•± >–œ>–& >–Ø'>•Üo>“óÌ>“å÷>“cú>‘•r>¬ÿ>Ž×>“0=>”»™>-è>‘J>–c>•¨`>r->€û>”K4>”æ>‘ÚN>‘Óc>‘ä>•Ï>’‘>“9*>“€À>Žº0>N9>“”˜>•ž÷>–˜%>–C‘>•,m>“¯˜>“îï>”’˜)>‘p">‘VÏ>’iQ>“Yä>“`¦>4‹>ŒÍK>ŠÇ…>Šóq>ê{>‘Ç>‘0>v¼>½+>¾š>ñ8>üé>³’>‘Ë>Èù>Žâà>‘ª>“Ö>’’|>‘³e>‘Cñ>F×>f¼>‹Ny>Y­>6>Iü>‰Á >Ž{>å>‹â!>ŽGq>Ä>¹ >Ž[9>‹Ú >Š}>‹eG>Š®Ÿ>‹TJ>~¡>ŒY~>‹£8>R‘>ŽJ>~‚>‹‚‰>‰ÿ>>‹e,>7š>Ç«>ÿ‡>ëŸ>ŽŽð>ŽÝ¸>áº>$[>Œ£â>Œš>Œ¾<>Œ`t>‹ëÛ>ŒÈo>q>ŒÔ/>Œ—>ŒN>‹ëí>‹ƒè>ŠŸ>Šß›>Šë.>Šm¾>Š<™>Š#>Šf>‰é¹>‰Õ>‰ž&>‰hÞ>‰6>‰ –>ˆå×>ˆÃÁ>ˆ¬T>ˆ‡‡>ˆM5>ˆ%a>ˆ -N>‡ñ8>‡Ø0>‡¼>‡ŸE>‡‚>‡a>‡93>‡57>‡!'>†ò>†Ðè>†±>†•>†zD>†`¯>†Bc>†å>…ór>…ÓS>…µñ>…œô>…„c>…g->…Kï>…EQ>…Fç>…@>„Î>„¯¿>„>„mÆ>„Iõ>„(”>„>ƒø>ƒß;>ƒÈ¨>ƒ®A>ƒ•N>ƒ€>ƒdÉ>ƒCÞ>ƒ%d>ƒ X>‚ý>‚ëB>‚ÐA>‚°È>‚í>‚p‚>‚J·>‚">üÚ>Ú¡>¹Û>”¼>f€>%ú>€¦Ö>~ùô>{QÍ>y»`>|l1>jû>€ü>€?>€,¡>€+>€ >ÅÝ>oo>.>->~M>}þm>}^ö>}bE>}©*>}3K>|÷{>|è™>|•¾>|7ñ>|)Ï>{ÎJ>{T“>{†>{ø>{Pâ>{$Å>z„>zI>y²;>yìÉ>yÂâ>y>yG2>xΈ>x^á>wÿD>wÖL>x¯>x¹>wÌr>vr±>uº:>v>O>wK>w•R>ws’>wQ>vD»>v“‰>uÆú>t>s3]>rv>s -¦>sö>t»>tóÉ>tç>tô`>t—>s%>qþË>qçÅ>qõ·>q«>rÅ>q´õ>rÈ>s†D>s˜ >sV­>rX¹>r\Ù>s>U>s@¡>s<8>r®#>rë©>q-š>lö~>líÎ>oÑ>p‘T>p]ì>lù>j&f>h1Y>hw>m f>lÙç>kŸá>lÁc>o£¢>r>qîÃ>q C>ož¹>mRó>kxN>køÐ>itÀ>f@‰>g&4>hU>iaë>jRØ>k˳>m2Ù>mʸ>n(Ç>nÅ·>nVm>kç4>hrv>g@A>fHŸ>fa™>g/>j$3>lâÀ>n5ç>n»>loL>k–¤>l¦ÿ>l>jqr>iwd>j@4>iHç>g›Â>dÑý>aAa>]þ7>]3>_2 >aJˆ>d:ë>f<~>edP>f6y>h·>iO™>h#Ž>hS>hB[>i[¾>i˜î>hZ>gY$>fà>c̉>aYç>^AA>YJ¦>Wˆe>VQP>Vö¢>[ë>_Pž>`Ò¼>`ë >bk>cŽ>d Ò>dAL>es>dB8>cKM>b7#>aH>`o>_å}>_(œ>^(4>]”b>]3²>]j>\(>YvÅ>V"…>Qt>N -°>Mõ_>P !>TL‡>X½>Zþ>[ È>[wx>\M£>]q—>]€>\>>[›>[À>\‡Ù>]Œ>]Zf>])Å>]á>\¤Š>[q®>ZøC>[9o>ZOñ>Xîq>Wže>VáE>U*E>Taò>Ttà>SP©>Où>J9®>EN>Bí>C m>H_É>Méþ>Q®ð>S‹Å>U„­>VvÛ>Vº2>Wøª>Yˆ—>Z™Z>ZWå>Yœ>Y%Ì>Y3X>XÄ>Y Ä>Y>YV>X|>XeJ>X;Q>XÚå>YŒ>Y£>Xkû>VãÔ>V¡>VCA>V9’>UKì>TEU>Sh>Q—H>P˾>P­>OV>N¦›>KÞ>>G…>Aœ'>;Y>9ò>B«{>Hù(>LË—>O¡>OL>P;>Qê5>QCì>P9>NzÉ>Mâå>M·K>Nd>O_œ>QlC>QÏz>Q¨4>R+i>S´>Rø?>R³~>RµD>R<»>Q¹š>QÄÍ>Q‰â>Pí°>Oek>Ns4>Niq>OÅ>PDÄ>Nrœ>MO¼>N0±>Nl’>OvA>O•>NEÃ>M&Ž>LªX>K«->J›€>I­.>H[>Gª>F•M>F¿W>E š>B4ý>>Þa>8 i>/ï›>)©>'«œ>.9T>6Ðê>=M>@ÛL>Ce©>EHs>E®>E¶à>F™º>G/Ð>GpŒ>GT>GHg>G>FÃR>F‚s>FJ">F‰>E÷ñ>E×H>E²À>EŽš>Ej›>EB\>DÐ>D8^>Dšñ>D­´>Dˆ³>D\Ó>D'6>Cú>CÓ>C¬„>C†>C_Ö>C9š>Ci>Bíž>BÅ&>B™w>BhÞ>B6">B*ä>Ešc>J ->CÝ)>A—¸>AX·>A(°>@øw>@Õ>@‰^>@T¦>@!Ì>?í’>?¶Û>?}¸>?@”>>þ>>´V>>_0>=ÍÔ><ÜÐ><›€><#>:ÿ†>9m>7Á>39É>-³>"ï >˜>ÿ> Ýí>+º>/ï=>4.>6Ì|>8\Ñ>9J±>9ͽ>:H>:;|>:M>:P!>:G¬>:7 >: Ú>:l>9è>9º»>7Ç\>/Ð!>3%z>8ÒÌ>9$Ø>9C>8ÚÒ>8²¾>8„c>8Y¼>82Ð>7é ->7u!>7“b>7•k>7m÷>7D6>76>6ë#>6´¢>6€ï>6Pñ>6ý>5Ȫ>5jÙ>5ƒa>5…>5Z.>55–>5Ç>4ïÂ>4Ïa>4°Ü>4‘>>4p1>4N>4)€>4;>3Ý\>3º€>3ŒÚ>3Uk>3&œ>3 -|>2æY>2ÀC>2™ã>2s­>2M3>2&Ì>26>1ÕK>1¥j>1{>1TÉ>1-ç>1Ô>0ß >0·ƒ>0ŒÃ>0X“>0&’>/ü&>/Ñp>/¥§>/xD>/HÂ>/7>.à^>.£5>-Ó>(¦>&Ü>+¾ ->,•š>, e>+ †>)#>'E)>#’Í>lÁ>²Î>£H>¹Á> Èq>ñ">! Á>%Û>'o>(ç»>)øº>*8ÿ>*Š°>*œB>*—>*W>*wB>*h#>*Tj>*=g>*">)þX>)Ü >)½¥>)žø>)»>)_ç>)?¥>)>(þ+>(Üÿ>(ºD>(µ>(dÖ>'ü>'š3>'ãÒ>'Ö§>'¼P>'›¸>'x£>'Tû>'/B>'Â>&ÚV>&µ>&pÍ>%×Í>&M>&7>%×Û>%©0>%ñ>%)=>$‰>#'8> ae>bl>ã€> \>âÞ>"¬Í>$z°>%•R>$eÁ>#‚>#M¤>#4µ>#¨>"ï >"Ýn>"Îx>"½>"§Ù>"ŽÃ>"o:>"IH>"( >"K>!èé>!ÉÞ>!¬Å>!±!>"‹>"],>!,R> éo> ÅŸ> £D> €Ü> ^¯> =d> &Ê> Š > ¯ñ>Óï>’>iø>G<>$I>å>Ù'>®¦>ˆÅ>YE>7ê>Þ>ù‘>Ö>³]>»>mZ>D>1>÷ô>ÕÞ>³[>¨>mç>KO>(]>‰>á*>·`>ŽÓ>jŒ>F‡>!ï>ü>Õè>¬ >AP>M~>>ZÇ>Ä“>m¡>Xd>ñ>©k>ËÔ>ÑØ>#>";>¡ë>B®>[Â>•=ö)'=ÚÜ=ãîT>/ü> ݤ>=ª>:k>æ½>×Q>b­>´>áE>ø">ÿ„>üü>ó5>ä—>Ò]>º)>›â>>h>N<>3»>K>üˆ>áö>Æ£>¨e>=m>u“>þÂ>)`>õ>nt>3>£¼>•ô>l¿>DY>$]>¼>æÒ>Èk>ªì>Ž…>s;>VN>8®>3>þ>á^>ź>ªŸ>R>v÷>^È>D!>'4>">þ{>íu>Þ9>Ð]>Ã[>·Ô>­+>¤t>›…>•#>ºÊ>|ñ>ñ>ó>ô9>x>kk>Ý„>8 ->§!>vú>ÿH>Š>‹¹>W>%> ôy> Å> –É> hß> 6Q> :> Ò0>  »> jØ> Ró> ßü> ,i> p > K†> /®> +Ú> *­> %Š> .> C> -ì;> -Ñ„> -µ> -˜> -{<> -\Û> -9Y> -…> ú™> ÷\> Ïp> ±> ~b> `p> BG> $6> J>àö>¾>Ÿà>‚>d²>G >)z> >îÈ>Ñ`>²k>Žˆ>m5>O½>2¹>µ>ø½>ÛÈ>¾é>¡í>…v>f>B™>"ô>_>éú>͆>±>”â>xÀ>\¬>@># >R>Ý'>3>^ >‚Œ>…>]ì>6Ž>#>û¯>Ý>¸º>˜e>{W>]ù>@Ú>$%>š>ë>Îœ>±û>“û>p”>Q>4>h>ö>ØÃ>¼D>ŸÄ>ƒ¸>cS>:²>>ý>àÐ>Ä >¨ >‹Í>o)>R—>62>u=ÿþs=ÿÇ©=ÿì=ÿX=ÿ=þå)=þ©ã=þlé=þ+ó=ýÞ¶=ý7=ý˜=¾:=¾.C=¾'=¾Ê=¾x=¾=½øŠ=½ò=½ì½=½ç=½á{=½Ûå=½ÕE=½Ë†=½¼$=½—=½!Ö=»T=¹ 7=À2¦=ÀV¥=¿&Þ=¾‚ =¾Ù=½œ’=½? =¼ä±=¼‹X=¼<2=»ò«=»¬–=»h§=»&=ºå®=º§®=ºm£=º6+=¹û=¹¼Î=¹†Ò=¹S¿=¹!|=¸ðS=¸¿D=¸Žm=¸]¼=¸0ì=·‘Ä=­\=§\Í=²ép=¶=·\Œ=·2À=¶Wh=´³=²A=¯è6=¬+ˆ=¥ô—=˜‹=ƒ<=ƒ5®=–å_=¤œè=«b¸=®áz=°Æá=±ö=³‚C=´Nä=´ ÷=³çž=³±ž=³~=³L/=³]=²=P=²&=²1j=²w=²-w=±ÿ’=±ÔŠ=±«)=±Ð=±XT=±/ƒ=±A=°àÄ=°¼è=°—ä=°kõ=°CÆ=°ú=¯üí=¯Ùú=¯‰ß=­Æ˜=­–û=¬½>=®¨‘=®ÿ†=®Ðƒ=®¦Ù=®x=®P=®((=®ð=­Ù‰=­²{=­‹.=­e =­;)=­ -‘=¬áÂ=¬»=¬•7=¬n×=¬H§=¬"ÿ=«ü­=«ÖZ=«°ï=«‡g=«Xb=«0±=« m=ªåÖ=ª¿È=ªšm=ªu±=ªP|=ª+K=ª©=©Ú·=©­¸=©‡Ã=©cI=©>@=©¾=¨õ =¨Ëñ=¨›7=¨s=¨NÀ=¨*R=¨}=§Ü=§º½=§–>=§p=§J‘=§$i=¦þÐ=¦Øé=¦³E=¦Z=¦f„=¦Aô=¦K=¥õû=¥Ñ}=¥¬=¥„$=¥_=¥:á=¥ª=¤ðL=¤ÉL=¤¥4=¤o=¤[à=¤2Û=¤ ¸=£é÷=£Æ™=£¢ö=£~â=£Wh=£/Ý=£ ô=¢è‰=¢Å=¢¡¯=¢ya=¢OÕ=¢+î=¢„=¡å8=¡ÁÏ=¡™2=¡s=¡W›=¡0=¡= ã= ¿ø= œÆ= z1= WG= 3Ó= ¬=Ÿîl=ŸËl=Ÿ¨H=Ÿ…]=Ÿc=Ÿ?û=ŸÈ=žëW=žÆ‘=ž¤†=ž‚4=ž`=ž=0=ž=wU=œÿø=£þ=‘#=l§=@›=7=œ÷ü=œÖ -=œ³¼=œ‘‚=œok=œM©=œ+‡=œ g=›çu=›Å=›£—=›Í=›^==›0.=›z=šäK=šÂ¥=š¡=šk=š]Œ=š;í=šC=™øÉ=™× =™µ­=™”=™ro=™Qb=™0G=™™=˜è=˜¹¡=˜”Ã=˜s_=˜R =˜1-=˜â=—ï =—ÍÜ=—¬`=—‹"=—i·=—I=—(h=—œ=–æh=–ŵ=–¥#=–ƒs=–b–=–<‘=–£=•ó =•Ò”=•²Z=•‘›=•p=•H =•Á=”þ³=”Þ-=”½é=”{=”|Í=”\Ô=”=‰dž=‰G´=‰"j=ˆýe=ˆß=ˆÁ{=ˆ££=ˆ…”=ˆgÜ=ˆJO=ˆ,£=ˆ=‡ñ…=‡Ó‚=‡µˆ=‡˜o=‡zÒ=‡]=‡?\=‡ Á=†üa=†Úµ=†½“=†¡=†ƒã=†f8=†Hµ=†+u=†ž=…ò=…Ó’=…¯ô=…U=…qÓ=…U=…8&=…~=„ÿ=„âe=„ÅÈ=„¨á=„‹f=„h=„E­=„¥=ƒÏp=ƒë=„;¿=„}Ý=ƒ¯l=ƒ{â=ƒRø=ƒ3 =ƒ=‚äP=‚ê3=‚Â+=‚£6=‚…«=‚h@=‚JŒ=‚-A=‚¦=ò"=Ô=¶`=—þ=xÁ=WÂ=2z=€õe@Íæ@Í¢˜@Íß^@Íá @ÍÇÍ@ÍŸõ@ÍiÜ@Í%X@ÌÚÿ@Ìš‡@Ìp¦@ÌXÜ@Ì6]@Ëå@Ëe@Êí@ʼ4@ÊØ@Ë ‚@Ë&€@Ë d@Ë@Êæý@ÊÃw@ÊšV@ÊjR@Ê8¿@ÊT@Éö¹@Éå;@ÉÐ@ɲ|@ÉZ@Ék¿@É> @Èýs@Ȫ—@ÈXº@ȹ@È:@Çù—@Çë@ÇÓØ@Ƕr@Ç–@Çv@ÇUÀ@Ç5+@Ç@ÆôO@ÆØ›@ÆÀž@Ƨˆ@Ɖ@Æd°@Æ: -@Æå@Ť‰@ÄÓŠ@Â@Àa•@½«†@¼¯e@¾@Àg@ÂaÕ@«:@Á¥S@À7Y@¿„r@À€@ÁY4@ÂcF@Âϵ@ÂÓŠ@¾x@°H@£Y@ÂŽT@ÂqC@ÂOé@Â+"@Â@ÁÊ©@Á‰Ë@ÁBó@Áé@À×(@ÀÁb@À²Z@À“8@ÀQ›@¿çI@¿Zó@¾¬@½Å}@¼°1@»ßÇ@»Ý@¼•±@½fÏ@½×&@½ëá@½äô@½ë¼@½üù@¾ò@½óÕ@½ÕL@½°:@½‰¦@½c@½@–.Ã@–Z@•õn@•Í9@•†Ú@”ø@”K@“#@’Ñè@“Fô@“þs@”l_@”~@”ev@”E†@”&’@”ú@”@”@“òÝ@“Ïë@“—Ü@“R @“C@’â³@’Ì‘@’½§@’«@’™û@’Œ’@’yº@’[4@’7¶@’@’ 3@’„@‘ð¹@‘Û›@‘Ã@‘©t@‘‹œ@‘g]@‘? @‘@‘y@ñ”@Ø›@·1@’”@q–@XO@E@2”@,@I@ç@ÆH@¡Y@{D@Tœ@+à@@Žæ8@ŽÕç@ŽÊÂ@Ž¹Æ@ŽžÍ@Ž|@ŽV8@Ž2V@Ž2@ø@Üø@½‚@šR@y$@^9@Gc@/&@&@Œõ°@ŒÙ“@Œ¾"@ŒŸ9@Œy @ŒP_@Œ+4@Œ0@‹ös@‹ß†@‹Ç‚@‹®F@‹“è@‹xB@‹[ @‹@…1@„â,@„ÂØ@„¤@„„c@„c„@„A4@„Ã@ƒùz@ƒÒe@ƒ¦@ƒvž@ƒH¯@ƒ,@‚ö@‚Ïø@‚£ä@‚ck@ô¯@Lo@€©@€xþ@€Ï·@K¤@˜‹@¯©@«ô@Ÿ:@Š$@b‰@@€bÉ@~¨M@|©¥@|¨@|üZ@~'0@~Æú@~òj@~÷x@~÷˜@~ö”@~ôƒ@~ï@~ÚÒ@~¦Ç@~C¡@}¥ö@|ÐU@{à[@zýä@zE_@yÃÊ@yne@y0Ä@yè@y*¼@yb¤@y•Õ@y³c@y¿¹@y»{@yš¹@y`ä@y+@y @xæ@x–ú@wùŒ@wh@uû¦@táõ@sØù@rú@rdÒ@r"®@r#=@r[/@r»’@s @sbP@suÁ@src@so@s[®@s#_@rÆ=@r;@qz@p¶¼@pI-@p:ƒ@p@]¾î@] I@\ü@\tA@\Ÿ6@\É“@\Ýá@\ÿÝ@]#.@] ÿ@\Ær@\Žš@\^U@[õX@[Jï@Z@Yé@Yt@YD­@YOm@Yz€@YÚ:@ZŽ+@[d§@\À@\?@\2g@\Í@\ N@\Ò@\!ž@\}@\X@[êª@[Ó‹@[·ô@[zÞ@Zóê@ZÁ@X§&@W°@U| @TE@Só@RÃ.@Sˆ'@U)d@Wü@XÃr@Yè¸@Z›ü@[ @[N™@[u9@[w2@[lo@[Š@[ß-@\>@\eŸ@\DÂ@\Þ@\Ã@[ü˜@[å<@[˼@[Ä@[ÒM@[ìt@\ù@\&l@\f“@\°¬@\È…@\Š:@\ö@[‘o@[=@Z¤#@Z%¡@Yц@Y½ê@YÆü@Y¼Ì@Y…;@Y%·@X½ã@Xh„@X@W Ø@W"@VÌ6@V–ó@Va¦@V;8@VO@U”$@TçÉ@Toø@Sùó@S)d@RnÀ@Rs3@RÖý@R…H@QI@P,7@Ph@PjÐ@P52@OD@M€ -@L‹@L)\@L|@Lƒ@Küx@KÎõ@K¹³@K²†@K6Ú@Iú@Hm(@G!,@F!{@EH@@D¦î@DE¬@Cñ´@C•@Cq¶@D  @Euu@G$@Ho7@I3•@IÄD@J‡@I§Ÿ@H‚2@G`q@Fæ†@G-@@Hd@I5D@JM@Jý0@Kh—@K¼/@K¢m@JÁØ@Iqu@Hj¿@H ý@HÙ@H&D@HÒ@H~@Hsù@IÂ@IŠÎ@J„@K$Æ@Lw@Mif@M÷ -@NÀW@OõÛ@Q&´@R Û@Rºž@S#@RÒ@Q–f@OÃH@Nq@LÚÙ@KåÞ@Já@Iâ@IYˆ@IYE@Icò@I,Ä@Hñ}@Iê@I´Ù@KJ@NùŸ@S'­@VŽ@X`R@XìH@X¿\@X @V½m@TÀf@R7„@Ow±@Lü@K7@IŽ¾@H#Q@G's@GAj@HO#@I€M@J¢}@LL @NÈØ@Qµ;@TI@Vƃ@X‰@ZY@[‚ò@\©¢@]Sò@]²ú@]úK@]ú¦@]yQ@\–P@[”~@ZjS@XÛp@VÊÉ@T77@Q)z@Má_@Jì@H²@G Ã@E–—@Dr{@Dbó@E¦)@GmZ@I;@J5@L†ò@NÙ˜@Q,S@SB.@U t@V˜{@Xo@Y¸ @[Œ@]}`@_:@`O@`x¥@_ŸM@]ª}@Z–‘@V¥0@Rhv@Nµú@L}µ@Lxn@NÏ6@RÚû@WZ@[-@]Çã@_ @^ïÂ@]—µ@[0•@X z@T~ì@PÍû@Mj@J¼)@H« @FÞ‡@E¯ò@Eí~@Gvv@I\@Kdy@Nš@Qw@U@X'ë@Z„$@\+Ö@]jî@^Ž@_¥1@`vZ@`Òž@`ÿ@atÛ@bH@c8K@d@dÞg@eNÐ@elN@ez7@e–@e€?@e -í@dhÐ@cÎW@c3Ý@b†«@aÅI@`ÐÇ@_`ã@]|~@[¦U@Z^#@YÈ,@YÃr@Z@ZF”@Z…E@Zá;@[XÀ@[Æÿ@[ö @[Âõ@[EL@Z³ @Z ”@Y@WgÌ@U:p@R§@Oç -@Ms‘@KÀ|@J·;@I͹@Hï`@HÌÈ@I‘Ð@Jz@Kcñ@Mß@O÷ê@SON@V€c@YI"@[‡@]#ü@^C,@_'#@_ä…@`_õ@`†›@`sE@`Q`@`*@_ì@_‰´@^õ@^Aá@]¼Æ@]–\@]µü@]ó4@^BD@^™ü@^à @^kõ@]@\[i@[g2@Z¬\@Z@Ywì@X¨_@W¦¡@V±$@V@UÆ­@V: -@Wq@Y>ð@[e @]†e@_@_š…@_w@_x„@_ÐU@_ûí@_¹Ð@_Gï@^å”@^ŽÓ@^#o@]Ÿ@]'q@\Ì÷@\F@\„9@\®P@\Ñ×@\Ñ@\¸@\U@\ @[HH@Zl²@Y¶_@Y*”@XÄß@X¡”@X¨@XäÕ@Xš‘@Wœg@Vj@Sù@Q‹.@N¬D@K™t@Hçµ@Gƒ@FÆ@EML@DJ­@C‚ˆ@C‘=@D'±@DÒä@F $@Hz¸@KÚ+@O@}@Qóg@SÐn@Ue@U·/@Uù“@Uú”@UúK@V+K@Vˆ¼@Vô˜@Wfù@WÛ@X9Î@XP @WõØ@W7ˆ@VNî@U{f@TÜø@T{÷@TaW@T‹E@Tús@U±{@Vvß@V÷º@WO@Vù/@V’¹@UÃ7@T\p@R9s@O-L@K¹w@Iæ¿@JÑô@LÞ@N·8@P…ö@RlW@TV@U ,@UT!@U%†@TÑ@Tf]@S¥*@R4@Oëœ@LñÆ@IŽè@F,ê@CÊ@B™Ñ@CX@EúÊ@I×@L[?@O3Ÿ@QA•@Rk¨@RæÊ@Rõ<@R­›@Rè@Qu(@Pçµ@Pg~@OØs@O=ú@NÇ(@N°ë@O‚@O˜@P9•@Pð‚@Q@Qò”@R)³@RJU@RE@R%@Q¥´@QIý@PøÌ@PŠ+@OøÊ@Odï@Nâv@Nt@N@MÌ@@Mü@N`@N]\@N@LØì@JÙ‰@H‰/@FHf@DZ@Ch@B‚@BØ_@C´Å@D¢¼@EV?@Eæ­@FœS@Gi¹@H7@H>`@H%9@G¸/@G (@F4@DÖs@C4@A†H@@@T@?œ/@?š@@ -Ú@@’°@@¾ @@û@>z@;çR@8Ð@6å@4‹™@4è{@6ê@6¨~@6Ê|@73ô@70‘@6y5@6tˆ@8…@:¾ @=\Z@?^@@™Ø@A@A D@@šÑ@?Ö!@>Ô‘@=–j@<2È@:ý!@:ZÂ@:¸@;†¿@=ˆ@?¹@Ax`@CÞ‰@EІ@Fô@GX[@GLò@Fó -@F,@E’@CñŠ@C:@BÃ&@BQ¹@AêÞ@A…•@@ÈÛ@?ƒ‰@=Ø3@;íû@9ð@8=Î@7VW@7€w@8« @:ˆX@<’@>?¢@?,“@?F@>ê’@>}ª@>+B@=ø{@=õ@>T@?#š@@:@@ˆ@A)@A@@–@?á–@?QÀ@>æs@>^@=½á@=`«@=p#@=ÓÅ@>u"@?*à@?®@@é@@‘F@A3¤@Ag_@AW@@£d@@{@@Pú@?Ÿ€@>P @<ÄÒ@;]Î@:MÑ@9¦@9Ná@96@9WO@9“º@9ÁÅ@9Û#@9è™@9ä«@9ÍX@9’¬@9/¹@8×@8· -@8Ãø@8å¨@9+Ð@9² @:H@: L@:šÉ@:P}@:›@9â•@9É@9‰=@92v@8ú]@8Ôý@8¡@8t@8‹@8–þ@8|Ï@82i@7ã¨@7Îc@7ñ­@8Ã@8R@8ï@7Ø}@7¹>@7³¢@7ãl@8{1@9eÕ@:%@:Ko@: ô@9½%@9 ê@7Œ@5Â@4‰­@4ž@3ÑC@3©Ž@3­Â@3ý$@4wq@4Öy@4õ—@4ìÜ@4ÅØ@4_%@3½±@3P@2‰@2 ²@1¶[@1ªU@1÷@2Ÿ'@3xü@4&@4ev@4B!@3ëÁ@3oc@2³ñ@1ÂN@0õÆ@0‘ñ@0Ž@0åw@1už@1îš@1úg@1~´@0¥¦@/À@/3@.i@.ç@-ë¬@.È@. Z@-ËÕ@-bÞ@-ü@,Ü»@,õq@-3J@-g§@-t"@-mÐ@-’:@-ò¯@.H|@.U7@.O @.–Q@/+â@/Äy@02@0Y\@0+n@/Õ"@/mY@.áÖ@.2¯@-j¸@,žÂ@+ýy@+°Š@+­É@+Ï@+ÜÜ@+’Ø@*æ)@*@)\@(¦ @'ÑË@&ÿ|@&g>@&0B@&n1@'Õ@'˜_@'¯¼@'X @&ýn@&Õ›@&“÷@%â¬@$éÆ@#ä…@"Ç @!jØ@À$@@jª@m@#ì@'6°@)ï@(þh@'»@"§@ -ƒ@”*@À0@]½@›¼@9—@ÐY@Š@ [´@!Æû@"ø€@#{}@#w‘@#_Ñ@#c`@#aí@#)@"©à@"x@!_g@ Ýs@ t6@ J@É(@˜@¡@ G@ y{@ ÃÆ@ Þú@ Øó@ À¥@ Ž@ %@®j@lÍ@œw@ 1´@ Œ?@ @ïð@T'@@î@¨¡@ñÇ@Q–@Ëo@¯m@#@ÛÃ@-š@aA@f›@02@óK@î®@P@­@Ÿ.@@¸3@wç@-@½Ï@,@u8@¥ð@ò{@u @Í@Ç=@¸®@(÷@æ–@^u@Rä@=@ºG@y©@ê@ÿ@ã“@V@ÝŸ@”¡@xP@Z:@(©@ø\@ÑZ@»°@²L@©2@¬@Éw@úR@ @ ›@ßU@ á@K@ïÂ@¨Î@L@»'@ó@N£@E6@õœ@¥:@ˆö@•s@Ã@ï|@â’@È@ô“@Ó@ßÇ@6¾@ @×@ \9@ ÅŽ@¶@³´@êö@ @t@ -äî@ '(@ Aß@•@¾K@)Ú@u@í -@KX@á¨@‹@åþ@¶ø@Ù'@9Æ@˜ @¹/@ƒÈ@ 4@aÓ@¡È@úa@@b@WÖ@"@ Å›@ Š@ æ@ ½L@ ë.@ ÿ¿@ ×n@ Õ@ cX@ 8 @ Ýð@ |{@ K@ _Ž@ Êi@ †û@OL@ϲ@ÿº@ -G@ãã@UÂ@ z÷@ —j@ œÁ@ -Œ{@ ª£@ *D@ '=@ {@ À‚@ Î}@ ¾™@ ­­@ žQ@ lœ@ @°–@[°@1¬@0=@B«@|Ù@øy@ µ@ ‰s@ä@+‡@îC@ì|@»@@zw@•‡@6‰@ð@ '’@É´@D @¶M@êQ@é@÷T@Es@Ÿ@eâ@q@Э@±‡@û½@®U@X±@•_@­Ñ@#@ØÒ@Ê!@åZ@Ùz@ 3Ö@ Ë@ õ@Úä@•c@¨4@*P@U@¾ì@6‡@Ò&@­¶@¥(@ŒÄ@lU@K°@(½@Ä@÷:@¾Ä@x{@L÷@9/@»?ÿßh?ÿŒ?ÿ`Ý?ÿq?ÿõŽ@pÆ@ã¬@6¼@}·@ÉË@ü±@@Ï@ë°@Ÿ@NÅ@6y@uá@Éß@Áø@f”@ø@»q@N?þ3?ü??ûÛ^?úòV?ùNh?öç.?ôYc?òŠ"?ñ¿¶?ñƒ?ñê?ðå?î|?ì¹R?ëE?ê2Ú?êŒÙ?ìL§?ïGm?ó Þ?÷Ò?ùî ?û}?ü9m?ü‰›?üf!?ûü¤?ûƨ?üÁ?üw4?üÊ?ýCû?ýéW?þã?ý8?û­ÿ?úÉ?øÁ,?÷–6?öÕ?ö†v?öd¬?ösº?öÂR?öì ?ö‡T?õr“?óï±?ò¡w?ò¸?ò? ?óCø?ôЃ?ö6{?öá?öêk?ö– ?õëM?õA?ôFD?ó–w?ó2¬?òõn?ò—?ïñ?î#Ó?ï7?ñ9‰?ñÃd?ñWj?ðßU?ðƒk?ïðE?ï ?îbá?îpÝ?ïAO?ðd¥?ñt¨?òF?òË?ó=?ó5¨?ó/É?ó«?ò®G?òaò?òu'?òø?ów?ó~X?ó+Ñ?òçZ?ò¥?·mu?¶Ð?¶qE?¶;À?¶ ?¶?¶Xí?¶r¼?¶%?µig?´ý&?µ¢?µ=?´ú¬?´£§?³Öf?²Ð×?²¹?±)?°«t?¯È†?¯š‡?°Q¢?±žÐ?²ôd?³Õ?´Ak?´6š?³ß?³·?³;c?²§c?²(Ö?±÷ð?±àÞ?±Ã?±„>?±DŠ?±9Ö?±1‹?±Å?°ÿ+?°Ã•?°‚m?°>?¯‰ç?¯4?¯½?®ÿC?¯ c?¯0´?¯&Z?¯!?®ä‚?®›®?®˜?®›?®OC?­å¸?­°?­Ì?®™?®H?®Añ?®Z?­ÏÓ?­‡‚?­^°?­0?¬Ñ¦?¬aî?¬"Í?«þÿ?«ÊH?«{·?«X/?«pS?«s¨?«Qò?«Y?«€å?«lí?« ?ªÙ•?ªÀy?ª• ?ªs3?ªu?ªz?©­L?©_ñ?©(®?¨þb?¨ñ?©R?©2?© ?¨Ûæ?¨×??¨îD?¨ô ?¨Ü\?¨³t?¨k¾?¨/?§ý(?§—?§P?¦ƒà?¦Ò?¦¼?¦°•?§ä„?©é?¬r?­#R?­³R?®÷?®T?«ñ?©¨?§'™?¦?¥e»?¥å?¥,\?¥©ä?¥ýù?¥ò ?¥á\?¦ ?¦ä?¥td?¤§x?¤ ?£ÈÎ?£ÏÜ?¤Z|?¥5C?¥Mµ?¤±µ?¤‹?¤]0?¢ñ›?¡1?Ÿ¨Ò?Ÿ?žŽö?ž4 ?ž Ô?ž¿?ž§?ž*—?ž?i?ž3?â??="?œì?œƒ?œaB?œÊÎ?f¾?´ƒ?©}?³=?úý?ždÄ?žÓ)?Ÿv?Ÿ.?Ÿð?Ÿ ?žŸ?ì?›W]?šnÿ?šF·?š¼Ö?›Šá?œ* ?œ?z?œ;‡?œbß?œ€±?œŽ?œØ?œ}Y?œt5?œsö?œI ?œ?›÷(?›ûÉ?œ/?œ ?œP?›ûÓ?›ÑJ?›g?šçB?šÛe?›Á?œÔx?‚?œÎÍ?EÑ?_Ü?œEÁ?›Ì?šaÙ?™µ?™3´?™)5?™Ù?˜X?—j?–éŸ?––U?–R¨?–\?•é«?•Âž?•ŒÓ?•FÉ?•(½?•Ny?•„Ô?•¡Ž?•¡Å?•“Ó?•›?•¨h?•¡?•ã—?—+?™f{?šù?›*Ô?›mz?›™³?™îÍ?—$ž?•Bê?”‡h?” ™?“ÛÀ?”!‹?”/?“ X?“w?’º(?’´¿?“ H?“MF?“=?“î?’» -?’=¼?‘±Û?‘m!?‘=o?Ò£?p?ƒÙ?Å/?Ÿf?L_??ë?ÕŠ?¿î?éØ?±s?‘¶³?’:£?’c?’µÆ?’Ã\?‘ò?À9?æ?‹ø?e…?:±?Žý?Ž¶D?ŽŽŽ?Žˆ£?Ž£Ø?ŽÕ†?Žçf?ŽÆ_?Ž‘¡?ŽBÚ?áû?·š?ä?ÿ)?Ùs?Êm?æP?úÈ?ô?öa?ïº?ßÔ?¬®?wl?Sà?«?Œ¯Å?Œ\Í?‹ö­?‹…©?‹,ù?ŠÅ›?Š¬È?ŠíÝ?‹T¾?‹ð?‹W»?‹æ?‹E"?‹Òj?Œ;µ?Œh ?Œ™ ?Œ¢X?Œ:B?‹‹@?Šõ_?ŠrL?ŠB?‰Ør?‰Éw?‰œw?‰+:?ˆð†?‰]?‰#?‰d?‰ï?ˆÌ ?ˆŒE?ˆJ©?ˆW?‡ËV?‡¹Ë?‡ŸP?‡€Y?‡^n?‡1?‡|?‡I?‡­à?‡Æ†?‡§È?‡‰T?‡b_?‡L?‡E?‡k?†ÍG?†~‰?†T¦?†H6?†6ž?†+Ä?†7š?†?…6?„ø¿?„ù€?„ã]?„¹ÿ?„–ÿ?„e"?„@‹?„KË?„hS?„”$?„™!?„s?„d?„Ú?„sê?„'‘?ƒÜç?ƒŽÜ?ƒO?ƒ Q?‚¯\?‚`–?‚=‚?‚ -2?Ì?·×?Ç÷?êR?‚ ?‚5“?‚X]?‚[?‚„q?ƒé?ƒ¹Î?ƒ´Ó?ƒ!š?‚ǃ?‚§z?‚p?,£?€œ·?€tØ?€v’?€z–?€…?€‚,?€o|?€8?€ T?¾¡?Qç?Ä?~õ‘? ÷?~ý”?~¶I?~gS?~9??~€?}Ôv?}–?}OÇ?}=Z?}9N?}0??}Â?|DZ?|É?|e‡?|å?{»?{€š?{Uõ?{]¡?{Xb?{#ô?zº?z"?yÀG?y‰?y%/?xǽ?xT?xi)?x9Ä?wü?w™E?wrS?wg²?w°?vã?vȾ?vˆÁ?vA‡?v (?v?uù=?v ?uí&?u« ?uy¹?u0ç?tÒ±?t¹Ñ?tÒl?t¯G?tlT?tp?tW?tt?s×ï?si˜?rä?rl?rÊ?r?r#Ê?qáÌ?q|Ë?qR?q1è?püx?pá?päd?pØ ?p¢“?pdK?p†?pÊ8?pÆR?p·Ï?p‚2?oèL?o(Å?nw¯?møÌ?m„?mt?lu?kÕ†?k‚?kXŸ?j˜?i¨Ø?iXƒ?ió?hP#?g´\?glO?gdD?g“?SÄ}?SÑç?S—R?S6N?SË?Rú ?R«?R-*?Q@Ï?Oñ)?P“e?Un7?Z˜?Yt?XV$?Y?XWF?S¤!?PZ?OhI?OÌ“?OÐ*?O^ù?M¤Ê?JU ?JŽ¯?MÎ)?NÏp?Lß¹?K7¶?L»?LƒÎ?KØ¢?K¬x?La6?Lý¥?M*ô?L¡U?Kªu?K?œ?KCæ?KGT?K(Æ?JéŸ?JˆC?Ie?HS@?H¨‹?HÍÚ?GãÛ?GÊW?H«Ÿ?HÏL?HH?H - ?GÄX?Guq?G É?F2Ù?Fpt?F« ?Eù?Cùl?CÏU?D–·?D¦?D²\?EF„?E±~?FkÖ?GnV?H?H5j?Gæ=?G«?F“÷?FŠ)?FI±?EïØ?Es‹?DU™?Bþ?B»H?C9œ?CŒ½?Cäu?D?Cç?C¬,?CìZ?Do?D.?Cuz?Bžû?AšÌ?A6?A~2?Auo?@øô?@­Á?@ˆK?@*#??§ì??(ò?>ÝF?>‰?>Y?>{—?>t?>?'ób?'òn?(lú?)?)¶{?(å ?(1^?'Êy?&Ý?%4Q?#¶Ú?"á«?"sy?"A°?"2ª?" 1?!ä'?!??!E? åX? †Ò? %Œ?½J?™M?€å?1?rk?œ?\?©ñ?ÜÊ?Zñ?³L?…?Õ7?d›?Æ»?¢ž?Ž)?ŸX?[…?ϳ?ûË?Þz?RZ?@´?¶?×™?‰V?—?«õ?«Ó?!«?!é’?!Áô?"R?!‘W?_c?J?!Ò? ý?? ^?ãt?Ì@?àV?Î3?‡•?-Û?i?•ù?Kp??2¸?Ûö?Àf?à ?R†?ïƒ?éè??É—?âæ?ØB?é(?Ž?ƒº?D:?Bà?×ï?Ñ1?­ò?!†?p?.™?ù?:Ø?~?é?±'?u†?·}?.?õ‚?„n?ß^?‰é?O?߬?[?HR?pÇ?sÿ?RL?KÃ?lS?ƒ?ßâ?šÙ?H2?‡ë?Rh?þÿ?×Å?¸Ã?>o?¶i?ˆ^?œ?÷l?~Å??-?hæ? å?"Ž?PÅ? Ø!? èQ? WÂ? SY?ͺÿØ!>þTn>þê£>ÿÏ©>ÿeŽ>þÔL>þš=>þl÷>þ3#>þZ>ý¾S>ý]Ö>ý3>üÎA>ü“®>üN>üE>üŽè>ü‡·>ü%§>ûÈ->û›Ç>ûmá>ûB5>û? >û>ú´¹>ú[M>út>ùÃ>ùiK>ù'Y>øï~>øµä>ø|y>øPû>ø/ç>÷þ>÷Ö©>÷µ£>÷<>÷k•>÷BË>÷>öëa>ö­w>ödÒ>ö'Ì>õô >õÃp>õ>õP>õ*>ô¼À>óÿ>óÝ®>ô²>ô c>ó×Ü>ó¢_>óo(>ó;æ>ó [>òÛ+>ò¬¸>òt>ò4A>ñù>ñ·5>ñ–,>ñ~·>ñ@‹>ðè‘>ðŒ¤>ðI>>ðª>ïü7>ïÙ°>ï¯ >ï€>ïT›>ï+<>îú×>îÇ >î—m>îiC>î7æ>îÊ>íÕ>í¦â>ís;>í3L>ìõ!>ìÂô>ì‘w>ì_Í>ì0ý>ì¦>ëÂ÷>ë{C>ëB>ë8>êäí>ê¶ÿ>ê‰Ü>êZ÷>ê-O>êƒ>éÚô>é°±>é„r>é[3>é=Ä>é/œ>é-h>é L>èú‘>èÁ >è†Z>èP>è>ççá>ç´þ>ç€û>çM#>çÝ>æé>æ®%>æhÙ>æ+>å÷;>åÆÖ>å˜m>åi¹>å3ñ>äîF>ä°2>ä‚u>äRˆ>ä%>ãû>ãÒ^>ã­ ->ãŠï>ãe>ã=¨>ã >ã Â>âßZ>â”î>âI >áí>á·˜>áª.>áHË>à©–>à“J>àÄ{>à¬>ßûÃ>ßÆ‚>ߧ9>ß>V>ßs¼>ß¼¤>ߌ¿>ßc>ß3x>ßÎ>Þ•;>Þ/C>Ýìô>Þ°>Ýí»>Ýã¶>Þ[×>Þó>Þ=>Ýl½>Ýç>ÜTq>ÛìÚ>Ü >ÜY>Ûæ–>ÛyÔ>ÚÚ>ÚXY>Úžð>ÚÖÌ>Û^>Ú¸>Ù²1>ÙE±>Ù‘F>ÙÜÝ>Ú,>Ú˜í>ÛL=>Úïâ>Ú«>ÚBD>Ù–?>ت“>Ø >ØqR>Øéë>ØÑ¿>Ø.ã>×D¨>×ß¾>ÝT¦>àu¶>ÛÅo>Ù{¥>ÛÔ(>Úù®>Ö²>ÓŲ>Ó°»>Ô?k>Ó¬®>ÒP§>Òó >ÔOm>Ôû–>Ôž>Ó‰­>Ò”„>Ò÷,>Ómj>Óé>Ò»->ÒÈ >ÒA>ÑÚÝ>Ò¼>Ò>ÑÚà>Ñ”»>ÑÕý>ÑêQ>Ñ›>>чå>Ñsv>Ñ8E>Ðác>оm>Ðݦ>Шà>ДZ>Ðdß>ÏÍ>Ï[ë>ÏA>Ï1¯>ϱ>Îòž>μª>Îœ3>Îd>>Î$Ç>Íó©>͵>Íq>Í@Ý>Íÿ>ÌÜ’>̤F>ÌiN>Ì.:>Ëõü>Ë´©>Ë`ü>ËŸ>Êâ>Ê®ƒ>Êv>Ê7‘>Éð°>ɧÉ>É`>ɼ>ÈÔ>Ȉd>È3õ>ÇÜ.>džº>Ç7a>Ç’>ÇQæ>Ç´\>ÇôŸ>È”>Èq>Ç÷p>Çìê>ÇÞµ>ÇÉÅ>DzF>Ç™2>Çyà>ÇUý>Ç5ô>Ç >Æàñ>Ʋ€>Æ‘b>Æq{>ÆEV>ÆÅ>Å´h>Åm#>Å7<>Å"z>ÆŸ>Ëç>Ë3Ù>Å´Á>ÄA¿>Ä >ÃéT>úé>ʇ>Ã])>Ã2>Âþ,>ÂÀ¦>¬>Âdr>Â<>Â>Áþ´>ÁК>Á‰P>ÁXO>ÁP®>Á)]>Àí£>À½¶>À’¡>ÀcK>¿Ó¿>º½“>¯L¼>²þ >¼,>¾À½>¿ >¾ãç>¾Ä3>¾£u>¾~¸>¾W8>¾.¦>¾ >½ÓÇ>½¡'>½fÑ>½Þ>¼·¥>¼6m>»º1>»ƒŸ>»b<>»0>º˜Ê>º%Ñ>º-÷>ºaa>º‹‰>º›4>º>ºy‹>º\~>º<Ø>ºï>¹ýt>¹Ür>¹°_>¹€¹>¹^Š>¹F±>¹0?>¹>¸î>¸Åe>¸ ˜>¸|9>¸Sb>¸ *>·ò˜>·Ö>·Ãw>·¾®>·³i>·|œ>·O˜>·c“>·\®>·4”>·ê>¶øÉ>¶èï>¶Åd>¶œ^>¶w >¶ƒç>¶H>>¶ ’>µñt>µá9>µÜ†>¶Ó>µß‡>µQ >´à´>´vJ>´PÈ>³ý'>³´B>³rm>³·y>³a†>³#ú>³q@>³Ì->³TU>²Ëy>²mD>²Pß>²B¸>²(ö>±ø >±ƒ>±D>±ò>²"û>²r>²qú>³(´>³©ø>³L >²?`>±º’>±¹D>±>±bà>±Úë>²#>² >±éø>²¢®>³2³>²Ü>±€_>°õQ>°‚·>°n>¯}+>¯yã>¯ƒÊ>®ï¡>®“E>®0€>®(B>®Œ>®Ä>¯ö>¯7ò>¯&9>®çÿ>®áX>¯ l>®®->­Ö>­vÛ>­öÿ>®Þ ->¯}>¯Õö>¯‚>¯_È>®jž>¬L›>¬>¬j>«î±>¬ >¬¾>«ý©>«ÅÉ>«‹d>«J©>« d>«O>ªôâ>ªèÛ>ªÎz>ª¸%>ª¶>ªš >ªt¾>ªfO>ª^>ª>>ª"L>ª`>©»d>©WR>©×>¨»Å>¨‰€>¨^Á>¨3~>¨l>§É—>§–>§|ƒ>§V|>§>¦ÎÐ>¦jê>¦Dµ>¦_³>¦K`>¦'>¥ü+>¥âO>¥Ý8>¥É'>¥¯ >¥‘W>¥oŒ>¥Mš>¥->¤¢f>£+>£v>¤â>¥ÿ>¥L>¥“>¤ã>¤¶Þ>¤…ë>¤wÂ>¤f >¤E¦>¤!,>£ý>£ÝÁ>£À>£ž¸>£{>£[>£8y>£ Ö>¢ä>¢Áü>¢ æ>¢ƒ‹>¢_Ð>¢4Ž>¢ >¡Óx>¡¯>¡µ>¡qï>¡Qy>¡é> ÊÝ> ¬Æ> ™Ï> j–> /“>Ÿî”>Ÿ½[>Ÿœ:>Ÿ~v>Ÿ\S>Ÿ0D>žþe>ž×(>ž¶%>ž–>žw¡>žXž>ž.|>ýÁ>Ø–>³M>—3>ƒÕ>q~>Yÿ>?5>'Œ> >œñO>œÍŽ>œ¥;>œ–5>œŽØ>œs³>œ?[>œ U>›Ù(>›¯ï>›bÑ>› è>›Ž>šü]>šî¹>šòÚ>šÕk>š¤¢>š’Á>šr?>š`£>š7>šì>™ºˆ>™Qˆ>™G‡>š!?>œt>Ÿ³> &<>  5>Ÿ`M>·c>›ó>™' >˜Ùm>˜ïÄ>˜¨ù>˜?Ð>˜'Ä>—Ë,>—£u>—º`>—çf>—£6>—v*>–÷n>–? >–[>–™ä>•å ->–Z>–Q>•û>–MŒ>–:È>–%>•>•sù>• >”ý">”çè>•t>•Gí>•*Ô>”Ô“>”ÍŸ>•‰>•+ ->•?ñ>”˜Â>”'‹>“í—>“ú >“·ì>“m2>“0,>’ðÖ>’^%>’}ç>’J{>’'Ž>“(‘>’ëÉ>“P(>”|î>“Ðä>’‹R>“+E>’ß>’ºö>‘°«>|V>Žúq>^æ>‘A>‘Æ>‹a>‘Cí>“ðÏ>‘f`>ŽÝˆ>_">bJ>À>ŒSú>Ž¯ê>Î>ŽÕï>æk>Ûø>Œ#K>ŒmÐ>ŒÄ`>ßm>ŒàÊ>Œ‡Ù>ŽPw>ŽÜè>Žû«>Ž ¸>Ž}>ŽFl>ƒ…>¥°>X>> >Œg±>Œw²>Œï%>ŒÏ>Š >ˆ½Ë>ˆ $>Š•>Œç>Šé4>ŠÜ>Š”ß>‹D>‹LÅ>‹Ëw>‹på>‹ù>Šãš>ŠJg>Šø‚>‹¯>‹žA>‹¼}>‹wÑ>Š¨>ˆÓÿ>‡,~>ˆà>‰)‘>ˆž>†fX>†û¼>‰£ü>ˆL>‡Óy>‰±L>‰éG>‰¶>‡Oí>†O9>†²>†[¨>†0 >ˆ >ˆ,í>†ð”>‡>>ˆ8¡>‡û>†ãn>…²>…ß>†Ùÿ>‡v¤>‡Âk>‡Æî>ˆv>ˆù>‡ŒL>‡4§>†æß>†ËD>†‰£>†S‹>†>†=•>†¥»>†x ->†i>…œ8>…Í>…ªZ>…;>„þÅ>…¾>„­“>„„`>„¨ >„M>„x”>„U§>„(Ó>ƒù£>ƒÖ>ƒ¸õ>ƒŸ>ƒ‰G>ƒ¸_>ƒ¦H>ƒœ>‚à$>‚ĺ>‚¯•>‚¢K>‚”>‚†B>‚}>‚m{>‚‚>ƒ-{>ƒ>‚9Ã>‚5>õÎ>áð>Æl>®ê>›Œ>xd>Lò>(> >€÷<>€à¸>€Àè>€«»>0½>‚-×>>€=†>€ž>ÿÚ>Í>˜>i–>>U> Ä>~Û¾>~¶®>~>~G1>~/>}õ5>}Æ>}—k>}o~>}GŠ>}>|×¼>|£¤>|q>|;>|€>{ÐZ>{™k>{VQ>{ õ>zÀ >z…Ä>z\>z4í>zh>}©j>~âK>zh>y&\>xÛ>x‹™>xle>x7«>x2s>x=ž>w×>w(€>v´~>vˆ>uÐ >ul>sÃú>q.ñ>sô>tá—>t ,>t>tvº>tG:>tÿ>u“|>v*Ï>vHI>x D>vP=>tú0>vô[>v -ó>sJ>s‚ê>v­Ï>u”~>píR>pTŠ>t2>rÒ¯>mB >m7>pz§>q÷ú>o\>j4z>l!>od>r+>r)0>mϽ>kÕ>lýS>mée>mÊ3>ol>lˆ+>kÑs>nÌz>mã>j¹J>mfK>pd¢>o”u>n˜×>p†Š>mé>eê†>bæ;>h¿>n á>mBÆ>n/£>qÒ9>p9®>gƒ$>`Q ->]Õ!>cN'>m?Ë>p‘œ>oÅm>n¶>m¤_>fŸó>^à»>ZWç>Y˜>XÈ*>`%8>i¢l>rŠd>tKh>tMG>rÞÕ>j˜ø>dO >_ö5>]Ua>\ÏK>]úÇ>ahð>m;>vªó>r”v>u××>ƒ¸ç>‘S>”óz>‘¡I>‰>…˜'>mÜM>aaø>^;ÿ>^W9>`þö>lÛñ>z·$>}:¬>}¿ä>€[>|ðÜ>oÊû>e*ó>^d~>Z!G>ZG>\j>^Ê&>^”>_QŠ>b¡”>i¸>pˆ‘>x$>€dQ>€ë>Q)>‚K©>}¿>o‡>cZÐ>\%(>]à>\' ->ZEj>Z Ô>[Œ;>Zˆ>Z[,(>[n>[É>[Þ>a2ö>j½h>t¿6>õ1>sá>ó«>‚rf>{0>l=>ab¥>]1f>[¯[>[­>[h«>[™=>Zâ±>Yî>Yùó>Y¬=>Y|[>Y¾†>YI>Y>‘>Xߦ>YFo>Y¶Ñ>Z¶ñ>^:M>dª?>qñ•>|Ð*>}Ã’>‰Ž>“*>uYg>gäh>`u>\Ë>[‰>[¨”>[>Y±‹>Xó>ZLñ>]Lq>^Ù”>^gç>_`>a">a¿Ö>_þË>]>[Í]>Z·†>YÊ ->X¦ö>Wæ³>YÌ>Z=>YÕž>\Üå>cþ >n=r>{(½>~6×>|>~ÈI>z'Í>li>>c>¦>bGç>bù>dCÎ>e‚>e?>dIã>bSÆ>_Èã>\ùE>Z3™>Yr>Yæµ>Zí>Zö>Y}³>YÐà>\;Ð>[E¢>YTl>ZÉÆ>]^>\ó>[¦>Z9>[Fë>[²­>Y…g>WÊ_>W á>WÂ>W÷>Uûà>T¯0>UÿË>[ß>fï>t3>uÖ~>vÈì>x]Y>oµ>a¹Q>W×b>TÍX>TÁÁ>Tx >S]©>S >SüÝ>SÑý>R}U>R >SÞe>SõP>S­À>Sƒö>TKy>SÛ’>Rä>R¯ú>Rtñ>R¼Ì>RL·>Rùš>R¸ê>RU>>Ràò>Rã>Q@}>QÉå>RÔÎ>Rœè>Pº>POo>PÓÔ>Q6A>Q—>Q@’>QÄ>Q›ê>Oè¨>Oú>O–'>Og>NY»>M6>LÈ7>L¥>JZØ>Iòï>JW8>L#¢>K™K>INõ>L&>Lî'>K23>IìÚ>J>K+)>K¨>Kw¤>L8ì>M¸>M¡¶>Mé>N «>Mëì>M½->M‹ñ>M\ª>M7>M!u>M  >Lõ¾>LÚŸ>L¼ø>L’§>Kâ>IÙ2>Kmà>L Ò>Kíô>K»á>Kt†>K>è>KP>Jì>J»>J˜¡>Jn®>JC×>Jê>IÚz>I¤š>Iz">IJ†>I$ã>I2Y>IUŒ>HŇ>Hq>H=w>Hœ>GÑS>GW>GG!>GÀ>FÃ>F}">F0…>EÛ¼>E|Ò>EÎ>D“Ð>Cùâ>Bié>?M>?Î>?âÉ>>4y>;ã{>8Êþ>4œÂ>.ÝK>&Žü>ˆ>*w>!mW>*Ï=>19Õ>5Éd>9 V>;bz>= ->>>,U>>öR>?‰ú>?ñ:>@7È>@e¤>@€Æ>@>@½>@‰(>@ræ>>¿Ê>7%t>:Z>?¬&>@–>?æî>?ż>?žõ>?lÚ>?C×>? Ö>>w>;3>=7Z>>w¥>>c‹>>=Ÿ>>W>=ì>=µä>=ˆŽ>=aY>=:Ù>=><ðÌ><ÓÚ><°><ˆ”><4Ç>;ýD>;Îœ>;¦Ü>;‹>;X>;1 >; ->:âÝ>:»y>:,>:OV>:->9äN>9¼>9“O>9jn>9AZ>9,>8î¼>8Åi>8›’>8j«>80Ð>8q>7Õ1>7©^>7}5>7P‡>7"‡>6ïe>6©f>6fÜ>61l>5úñ>5ÀÄ>5‚r>5>Š>4ô*>4 p>4?²>3J>-¾w>*ÁÖ>-*ø>/ê&>/¥½>.Ø>+Æ÷>(½ô>$Žš>ª—>Ä> eî>¤>˜™>ü>"Gú>&aM>)sÓ>+³û>-p>.r>-j9>.HÊ>/¥r>/ôã>0¯>0->04ˆ>03‡>0)D>0à>/ò >/ÛQ>/Û>/ªZ>/š>/s>/TÎ>/6>/‘>.óJ>.Ä,>.…">,¼6>*£>>-Zí>.A>-òÒ>-Ð>-­ý>-ŠÃ>-c>-1»>-ß>,â>,B >*…¼>+™ >,\>,@¦>,Ó>+öõ>+Ë£>+“Ð>+^K>+&->*÷­>*Åd>(4¤>$ÍÜ>)*÷>*Qè>)»>)߆>)ðù>)Éú>)¥U>)>)\Ù>)9\>)«>(ñÙ>(Íø>(©×>(å>(M’>(%>(„>'Þy>'»K>'˜,>'t>'LÛ>'l>&èâ>&Ãf>& >&~>&[C>&82>&>%ñ->%Ò6>%µv>%Šn>%e>%CV>% ´>$ýÉ>$Úœ>$¯)>$£>$YÚ>$6n>$F>#ê>#ºº>#”f>#q>#LÍ>#&Â>"ø½>"Ér>"£À>"F>"['>"6Œ>"ˆ>!ìz>!ÆÂ>!¡*>!yZ>!GŠ>!3> ì”> ›> —Ý> l¨> >£> W>ªf>f¨>sƒ> d>¸r>KÆ>“—>ºÏ>²Ò>ËM>ET>6>ží>qr>iS>#g>Üa=üêå=äD3=ì« > -æ{>_>žÙ>>£ >À’>‡>€>jÆ>§¹>Ο>ä´>îÉ>ð™>æ@>Îœ>ºm>¨‰>”¾>~|>f¸>N>4[>²>ø'> >ù>²>mÄ>)o>‰´>:µ>t>Úþ>¯Ó>~~>[ù><¸>p>þT>߈>Äî>¬>Ž^>ny>Nj>.½>5>ïH>ÏO>¯Ê>Q>q>Ki>ë>üG>Ý>¾t>Ÿ†>¨>cÈ>F8>(e> -6>ç>¼ï>’>*ñ>ç>‘¯>%>ú¼>âf>]ß>ýá>"Z>Aƒ>+&>=>åÄ>ÃÀ>¤>>„S>d8>Du>$>ü•>Ñ·>°2>·>q’>S >6~>>>ö§>Ø>¸¸>‘>gö>H9>*"> Á>ìð>ÎÍ>±E>“)>u>>Vu>/>> > {>›f>›µ>mû>NQ>1€>!> ó²> Êà> £'> „> f‹> HS> *j> J> î§> ÐŽ> ²º> ’¬> i> Dc> &^> ~> êý> ͵> °Á> ’ñ> u> X> 8^> [> -ë…> -Î> -±7> -”> -wj> -[9> ->S> -!i> -Q> âñ> ºÇ> ž¹> É€> ½¹>öo>àN>[x>ë>ÏŠ>°Ø>Û>dU>C>&…>û>ëí>ÎÁ>±ö>”ø>x>Z>7j>V>ï|>Òè>±e>‰³>j>L˜>.ø>‘>êi>·f>” >uÏ>W#>9>×>ý ->ß>Àù>¢>‚ú>dZ>E3>$>u>á>>½6>˜u>qæ>G#>>>Ör>œƒ>÷*=øèÊ=ó¾e=÷5T=þ¡> ô=þ›Y=üQ=ù'½=ô·²=îUD=䳎=ÓæJ=¹¤7=ºŒó=ÓËo=ãõ™=íI`=óBG=÷-K=ùÈ÷=û”=üž=ý–ð=þ Ó=þyÑ=þ¯¨=þÊ»=þÓh=þÊB=þ§³=þƒ³=þe€=þE=þ!8=ýùp=ýÏ,=ý¢Ÿ=ýsf=ýD=ýò=üÉ=üŠÌ=üS4=üL=ü*E=ûúž=ûDü=ö,a=òÆñ=ùèu=úÈ’=úm=úE=úÝ=ùÛ¬=ù¨Ê=ù|=ùS¼=ù j=øêi=øµr=øyƒ=ø/?=÷ñ™=÷¼^=÷‡œ=÷S\=÷=öèú=ö¶2=ö‚z=öNS=öæ=õÉH=õ‹©=õW»=õ#=ôð=ô»=ô†Ô=ôSn=ô8=óêÛ=ó¯=óeÇ=ó+J=ò÷f=òÍ3=ò—f=ò\ =ò(a=ñôÑ=ñÀ¦=ñŒe=ñM©=ñ5=ðÍx=ðW¯=ëõµ=êën=ïW=ï΃=ï =ïk=ï9K=îü5=îµô=î(=îM=îC=íéL=í·e=í…¤=íS¼=í! =ìè=ìœÅ=ìgÆ=ì/=êÔN=Þ‚=Þ™R=êŒì=ëF3=ëÀ=êßf=êªÆ=êh=ê%°=éðÎ=é¾M=錿=é[=é(=èå›=èœ=èfn=è4à=çùt=ç¹Ê=çŸá=çr=ç>,=ç m=æÜ=檈=æx´=æG8=æÜ=åæ7=åµ*=傲=åD{=å@=äÎr=ä¬=ämr=ä<ü=ä f=ãÜ»=ã«ý=ãzÙ=ãH‡=ãÚ=âɆ=â—=âg©=â7=â=áÖ¯=᧷=áwÂ=áG¡=á‰=àÖ=à—þ=àg9=à8¨=àý=ßÙ=ß©ª=ßz=ßK›=ßÂ=Þê#=Þ«C=ÞmÙ=Þ<'=Þ ¼=ÝÝf=ݯ+=Ýä=ÝQ=Ý!ö=Üó"=ÜÁÉ=Ü„M=ÜG8=ÜÑ=Ûçv=Û¸²=Û‰ì=Û[…=Û,ý=Û¹=Úåt=Ú¦ =Úd^=Ú& =Ùö=ÙÇ=Ù˜û=Ùjä=Ù<Ã=ÙÝ=Øà=زC=Ø‚À=ØCé=Ø }=×ßV=׸0=׃Œ=×]î=×)Õ=Öõ¶=ÖÇÕ=Ö™ß=Öi»=Ö,"=Õò‚=ÕÃ3=Õ•]=ÕgÖ=Õ;=Õ d=ÔàY=Ô²9=Ô…¿=ÔU=Ôê=ÓàY=Ó²q=Ó„ˆ=ÓW¥=Ó+S=ÒþJ=Òј=Ò¤O=Òwi=ÒG°=Ò -Û=ÑÓ=Ñ¥1=Ñy5=ÑLƒ=Ñ=Ðó=ÐÆ”=КŠ=Ðn =Ð?è=Ðæ=ÏÌC=Ï‹=ÏpÈ=ÏE‰=ÏR=Îì›=ÎÁ=ΕÈ=ÎiB=Î;ó=Î*=ÍÉ×=Íš=ÍnÌ=ÍB\=Íj=ÌìH=Ì¿Ý=Ì”a=Ìi =Ì=t=ÌÓ=Ëʬ=˹=Ërç=ËHH=ËÒ=Êð‘=ÊÅí=Êš=Ê\+=Ê"=ÉëÌ=ÉÀ¢=É•›=ÉjÆ=É@H=É¥=Èë}=ÈÀ¼=È”Á=ÈjI=È?Ì=Èq=Çì=ǹ¢=ÇTÈ=Ç´=ÆØ=Ƭ¥=ÆtÇ=ÆI -=Æ&2=ÅÿÃ=ÅÞi=Ź=Å“‘=År_=ÅP=Å-H=Åã=ÄÓ°=Ä«Ð=Ĉª=Ädå=ÄA3=Ä=Ãùû=ÃÓi=ê‚=Ã}B=Ã;ì=ÂÃù=ÁJ=¾")=ÂÈQ=ÃÑÓ=Ã1®=ÂÙ‹=Â’è=ÂTw=Â+=ÁÛ_=Á“"=Á^=Á+â=Àü0=ÀËÒ=ÀšÈ=ÀnH=ÀDœ=À„=¿õx=¿ÆÖ=¿’¶=¿j=¿Fa=¿#Ï=¿Ò=¾Û®=¾·S=¾“F=¾n=½÷â=µ¢Ë=¯@¹=²}¢=¸£ÿ=½j,=½XL=»œÓ=·Çý=µ/ü=²6É=­êä=§cÜ=›P>=„å€=…5©=šœä=¦ž£=­…=±w=³·h=µžR=¸u›=ºl/=º\«=º$n=¹ïÒ=¹»ª=¹‰=¹VI=¹!‚=¸ðx=¸Âü=¸‘ƒ=¸XØ=¸ñ=·í¥=·¿Æ=·’ˆ=·dô=·8°=· Ð=¶Þç=¶³=¶‰=¶Tn=¶%z=µþ?=µØ„=µ±7=µ( =±/Ð=°VM=«¾=²³À=´Ã¦=´L=´W‚=´;4=´©=³î%=³ÆD=³ŸM=³xÝ=³S1=³-e=³M=²Í<=² c=²yw=²S=²,ß=²ù=±á=±ºÔ=±•i=±oÀ=±Fd=±==°ä˜=°¾=°—×=°q¼=°L^=°'[=°à=¯Üp=¯¶^=¯ŽS=¯[=¯-‚=¯(=®âÆ=®¼Ù=®˜p=®n³=®7j=® -Á=­äm=­¿=­š™=­un=­O=­'z=­=¬Ùã=¬±/=¬Š%=¬c=¬Q=§ù=¦ö:=¦Ó=¦®†=¦Ò=¦VA=¦2#=¦Y=¥ê­=¥Ç®=¥¤Ò=¥€ö=¥]š=¥:=¥V=¤ô=¤Ñ=¤­Ð=¤ŠD=¤b<=¤WM=¤eµ=¤ œ=£×L=££/=£”=£i"=£€*=£m¿=¢õP=¢Í=¢§¤=¢uÞ=¢Jy=¢'§=¢T=¡áo=¡¾b=¡›4=¡xÓ=¡V=¡3%=¡= î´= ËÇ= ©= „S= NÁ= þ=Ÿü_=ŸÙØ=Ÿ¶¯=Ÿ”Ù=Ÿr›=ŸP×=Ÿ.U=Ÿ …=žê9=žÈ_=ž¦=ž„3=žb˜=ž@>=žP=ö=¾Š=”j=r¢=OU=.W=^=œì=œË =œª =œˆk=œf’=œDÏ=œ#°=œ=›àü=›¾z=›œ=›|=›Zà=›24=›z=šá*=šÀ¿=šŸª=š~=š\j=š1c=šâ=™à0=™½=™g=™|›=™Yæ=™9«=™‚=˜ñ”=˜×'=˜·V=˜–¡=˜v)=˜U=˜4ô=˜D=—ñ =—ÃÐ=—›”=—}8=—\?=—<=—=–ú:=–Í]=–¡o=–€=–_Á=–?‹=–=•ÿ>=•ß"=•½¿=•s=•~v=•^‰=•>q=•-=”þ0=”Þ=”½×=”œ–=”qÃ=”HB=”'Î=”Ã=“åÑ=“Èë=“ªÕ=“…õ=“gf=“LÎ=“+Î=“Ë=’Úç=’ºÞ=’›2=’{¿=’\=’8m=’ Î=‘å=‘Ŷ=‘¦c=‘‡:=‘h¥=‘Ik=‘*]=‘ e=ì6=Í=­»=G=p =P›=1u=«=í,=à =£.=„‚=e=Fž='ü= .=Žê?=ŽËŒ=Ž¬s=Ž…¶=Ž]¢=Ž=×=Ž|=ŽÝ=áä=Ãc=™«=p2=Q=3=À=Œöd=ŒØ=Œº!=Œ›I=Œ}*=Œ_ =Œ@°=Œ"v=Œó=‹æÝ=‹È>=‹ª=‹Š1=‹a=‹=r=‹Â=‹ =ŠäL=ŠÆƒ=Š¨K=ŠŠ.=ŠlÅ=ŠN`=Š0=ŠÏ=‰ã=‰Äå=‰§2=‰‰é=‰m=‰On=‰1[=‰»=ˆös=ˆÙ6=ˆ³Ù=ˆŒÕ=ˆmÊ=ˆLK=ˆ3¿=ˆú=ˆì=‡Ýö=‡»t=‡=‡i£=‡Ly=‡-l=‡=†õ=†Ø`=†»ö=†ŸK=†‚=†e=†H =†+=†@=…ñ­=…Ôl=…¶¢=…˜_=…wy=…GŸ@ɤ=@ʨ@Ê@@Ê=$@Ê!ï@ÉøÐ@É¿4@ÉtÙ@É$Û@Èâv@ȼ^@È­À@Șt@ÈW–@ÇçB@Çw¦@ÇC¬@ÇS)@Çyœ@ÇŒÇ@ǃè@Çjm@ÇK@Ç(è@Çà@ÆÔ§@Æ¥Á@Æ~œ@Ædp@ÆQ—@Æ;£@ÆM@Åüx@Å׆@Å©#@ÅhI@ÅŸ@ÄƼ@ÄŽÚ@ÄsÆ@Äf­@ÄW@Ä?z@Ä"D@ÄÃ@Ãâ¨@ÃÂ3@à‘@Ã}a@Ã[I@Ã>à@Ã(Ÿ@Ú@Âö¼@ÂÓ’@©,@Âr'@ƒ@ÁCï@¿†S@¼¼Ù@¹ë @¸Ø"@º9¼@¼Î­@¾»È@¿O@¾)£@¼ÀŒ@»üT@¼kç@½–ž@¾šÄ@¿Ì@¿"x@¿é@¿ê@¿ þ@¾ûà@¾ã:@¾Æ @¾¥@¾} -@¾H€@¾0@½´í@½kŒ@½<£@½,ÿ@½)V@½'@¼Ü™@¼zú@»÷ô@»T@ºy×@¹q@¸¡½@¸@¹+Ú@¹ëÉ@ºZ|@ºv@ºu!@º|—@ºŠÜ@ºÛ@º}Ÿ@º_x@º;P@º¥@¹ïÙ@¹Éá@¹¢×@¹w}@¹?é@¸òs@¸‘ù@¸:(@¸ c@¸k@¸Ü@·æÜ@·¸š@·™µ@·”á@·˜ˆ@·‘@·z0@·YÛ@·5Í@·ã@¶ì@¶Ç]@¶¢Š@¶}@¶T‰@¶%@µº¬@´úL@³Öz@²½”@²\Õ@²åœ@³Ð2@´}u@´ÀU@´¾@´ Y@´|6@´X*@´4m@´Ø@³êÙ@³Ç@³¤¹@³‚a@³]“@³4@²ýÝ@²š]@±Æú@°WU@®®@­ÀÏ@®/F@¯„*@°Ä(@±lú@±™@±ŒÅ@±n.@±C@±ö@°©®@°B@¯Ýp@¯‹¬@¯^@¯\Ž@¯vb@¯”a@¯«¡@¯·U@¯´@¯£@¯…‡@¯Tå@¯à@®‚@­½f@¬fñ@ª)ö@§ˆÓ@¦# @§«@©¢Ê@«ò3@­-{@­Ž™@­¬@­xY@­WÄ@­$»@¬º@«çÞ@ª´õ@©©@©n±@ª ²@ªÓÅ@«!¹@ªÁ*@©Ø¶@¨Ü‰@¨iS@¨Ä/@©”¯@ªN¡@ª²-@ªÎè@ªÅì@ª©*@ª~d@ªJ†@ª @©è¨@©ÄA@©¥í@©‰è@©m¼@©Oô@©.ú@© @¨ßK@¨¸ @¨Y@¨Œ»@¨|Û@¨eå@¨H]@¨'$@¨ƒ@§ÑÅ@§žÊ@§oô@§Is@§'¤@¦ÿ=@¦»i@¦E@¥¢@¥ ‘@¤«›@¤dÏ@£Û‰@¢å@¡À¢@¡»@¡w"@¢»@¤õ@¤áÉ@¥)m@¥#“@¤ÿÄ@¤Õ@¤«²@¤…¦@¤b‡@¤A@¤«@£÷õ@£Ì“@£¡y@£|N@£]à@£BÞ@£(@£ ý@¢î»@¢Ðõ@¢³n@¢•7@¢q‘@¢;Ê@¡Ý@¡K&@ ²@ ` -@ c¡@ wD@ o„@ l{@ …o@ ‘(@ L­@Ÿ…ð@ž-k@œú@›B»@›H@œë@žv@Ÿ5@Ÿuµ@ŸnP@Ÿ3Â@žÓ£@žT@¬!@œÌ(@›û­@›Ò]@œ{´@g€@õê@ž¼@ËÆ@q@lË@d®@]a@L+@9@#ü@œì @œZ·@›e©@švµ@š+@š˜l@›1¾@›ƒ@›—ù@›£V@›¡W@›`{@šÀ¾@™ó -@™qþ@™ƒß@™ãÖ@š$ÿ@š.¢@š)+@š,^@š!—@™ß@™Xi@˜À&@˜lÜ@˜€Ø@˜Â®@˜ê@˜îø@˜ò&@˜ûË@˜ðê@˜Àè@˜…Ø@˜i@˜q¤@˜ß@˜Þ@˜i<@˜GI@˜"ó@˜R@—ç@—Íí@—³%@—’‹@—a•@—œ@–›]@–,9@•úP@– -^@–Á@•ó!@•€w@”ô@”y@”z @”­¹@•Ç@•O9@•u–@•x7@•f¼@•J¤@•…@”¾Z@”1@“9”@’_£@‘ו@‘Ó@’Ní@“¢@““l@“Ö`@“Þ½@“É@“¤ì@“}ž@“]ž@“FE@“/@“P@’ìÞ@’¨@’Q@‘0@?l@èã@]@‘@‘‰u@‘›¢@‘}@‘]¡@‘8¹@‘°@‘ç@‘W@‘Ú@ó @ÀK@|‰@7Ó@ÿ@ç@Δ@µc@¦U@¢¯@šÜ@„;@eE@K\@;+@.N@Û@Ö@Žñ:@Ž×»@Žº`@Ž–o@Žn2@ŽK>@Ž3ß@Ž!;@Ž@å*@½ä@š´@‚ @rM@c¹@Pü@9€@@Œü‹@Œ×ƒ@Œ°T@Œ†&@ŒV¥@Œ'Ó@Œ@‹þ„@‹üQ@‹ñÉ@‹ÙÖ@‹¸@‹’W@‹n…@‹OÂ@‹5j@‹~@Šýñ@ŠÝ-@Š½û@Š£™@Š‹È@Šr@ŠTÿ@Š7X@Š¡@Šé@‰âõ@‰¾i@‰•Ô@‰p’@‰Ró@‰:®@‰#@‰ «@ˆòÞ@ˆÙ0@ˆ¾I@ˆ¡³@ˆƒ8@ˆc¼@ˆE¥@ˆ*V@ˆf@‡ð¾@‡Í­@‡ª@@‡Š…@‡n|@‡SÅ@‡7¿@‡þ@†þu@†ä @†·é@†_÷@…æ@…ŽÛ@…’Ã@…Õ~@† à@†x@† -€@…ìk@…ÈC@…¢ˆ@…‚[@…a0@…ì@„\x@ƒGg@‚vI@‚‘ª@ƒi¹@„<@„ Ö@„²Š@„¤´@„ü@„zB@„d@„Lñ@„4"@„g@„î@ƒð@ƒà @ƒÏ¨@ƒ½3@ƒ¨«@ƒ’|@ƒzy@ƒ_©@ƒA,@ƒK@‚û.@‚ÕŠ@‚¯e@‚‹v@‚kS@‚N@@‚4Å@‚ÿ@‚%@ú¼@á·@Å4@¬™@—)@{¬@]'@J?@C.@7 @’@€ó$@€·G@€Lþ@F,@}ùy@}—@~8®@˜@¦s@þý@€!Q@€/a@€9@Èœ@~æe@}5#@zÂK@x¨”@x/@y$‹@zC@zó@{„¶@|8c@|æ+@}TÜ@}~V@}}?@}Z†@}6@|€â@{ºÏ@z®@y×@x·¨@x3à@wÓ°@wnô@wA@w ã@w}±@x88@xêØ@y}(@yøf@zI@zeR@zkï@zaP@zÄ@y™@y \@xp@w™ @v_(@tè@s›@r´Ù@r`@q¶Þ@q•u@qâß@r–Å@smï@t£@t‰î@tÎr@uÿ@u æ@t°@t-÷@sÖo@s©k@szG@s7B@rà!@rp@qÕ¡@q8@p]È@oä{@oNÜ@n&Ž@l_0@j@g@h' @f| -@esz@dð\@dðt@e¿r@gkd@iµ@k°Ø@mWû@n-¨@nDÈ@mî*@maJ@lÐ&@lxb@lqœ@lžƒ@lÃâ@l¨@l=@k“‚@jâ%@jžJ@jê@k"{@jÀÞ@jv@i\ˆ@hÞ»@h›Æ@hƒƒ@hp$@h4»@g¸@g @eü©@dw@a3Ý@]ºv@Z`@WÍg@VFÚ@U°¼@VÖ@W‹e@YŒ—@[_¡@\Ò@^{@_C°@`ž@`‚Æ@`yª@`¯@_FÓ@^&Á@\÷ð@[Ü€@ZÎï@ZÔ@YÒÜ@ZZp@[L—@\(Ÿ@\è@\Æ@\Ât@\a˜@[jÏ@Za@XŸ¢@Wm±@V€ˆ@V3@V<2@V»@W0Ç@W—W@X¿@Xµ @Y&Q@Yd~@Y´ˆ@Z+O@Zm4@Z,Ê@Yž @Y $@XÒ’@X­@X”>@X6ì@W&å@U.Ë@RY(@Nã@Knº@Hâ%@GÖå@Hk@Jh—@MIÓ@PfÍ@S#G@U@VE@V¾&@VÌÀ@V¿x@V¹q@V¬a@V™@Vy @V9‚@Uõ}@U¾@Uu:@U!F@TÝÜ@Tˆ@T8_@T(Ž@TZ%@TyÏ@Td½@TGA@T_w@TŸ»@T¸–@T’Û@TV@T -E@S—¸@S/@RÈX@S -‚@S«$@T/Ö@TY¹@T3‰@SæÕ@S¦l@S•Î@S¨ú@S»ƒ@SÂý@SÂI@S´@S©Â@SË#@Sý~@SÕÙ@SO§@Rü@S^@Sb@RÚÑ@R| @R2^@RF@QÏÐ@Q]Ê@P»@Pc§@Pg@PÙ¨@PÄ{@P2A@O\:@N¨J@NVB@N^ñ@N› @NÐg@NÈØ@Na@MLŒ@K,ò@Gõ@D9Þ@A‰@?nT@?\q@@xó@BXË@D¨¥@FÜ;@H1I@Hoh@H8‘@Hv`@I£_@K˜Ê@Mîà@P!º@Q ³@R þ@Q@÷@OH–@L®­@Jd@I Œ@Hµ¨@I[)@Jú)@M]@P3@@S(O@Uœ@V±ñ@Uâ$@S2#@OÚ@JŽn@Fg@D¤@BíÄ@Cj~@E¸å@Ið>@Oô@Uª!@[$\@_*}@aÑ@buÊ@bM[@aØ@^>™@Yo$@R|@Jf @BÛñ@=_™@:¸l@:î@=º÷@BÜÛ@IϽ@Qxà@X}@^_@bXo@eµ@h>š@iØ#@j—W@ju@iÜD@h5´@ež~@aþc@\þx@VJ @Nµ@Ev@=Ü2@8@684@6ý@:ÉF@AFl@Iv6@QÓ„@Y(Ú@_-²@d4Ê@hi -@k¥c@mض@o5C@p@p¾ò@q/ã@qN´@q*=@pÓ¢@p@n©b@l±<@jq@f­f@b&Ø@\oS@UX0@L–@Cb8@:³Ü@4,@0{H@0Y¡@3Åè@:6Á@B_#@Jus@QBÅ@V«ö@Zû“@^zh@a„@db©@gI”@jVQ@m^;@oï5@qC@rEU@q¾É@o¥O@k“¸@em$@]ç“@VÀ‰@Qϼ@OÍ-@P`Ü@SQ/@X‘^@_*F@e1Í@i J@jSÍ@im@fЯ@bò@^'E@Wÿ¸@O¿%@E¿p@;‰÷@2Â@,†@)€ö@* @.3D@5ˆ@>èÃ@H»Æ@Q}p@Xp›@]À@aç¼@eH:@gýñ@jö@k†k@l¡i@mRZ@m´@m÷â@n -c@mÜ@mÄ6@mú½@nFê@nuå@n @n„Æ@n´`@nßP@n¶‚@n. @m/Ö@k !@i©@g‚Æ@e]"@c·D@bËt@aê†@`”`@_h±@_0€@_ØT@`»v@aXð@aÂh@b9¶@b—ï@bœ¥@b-p@a8›@_¾ê@]ÁÂ@[;¿@X Ï@S­R@MG%@D€T@:8a@0GÍ@(§%@$§ @$µ @(±ø@0-@9ùž@Dê@LÄ @SR^@X&u@[ú9@_B @aå@c¤°@dÂ.@e«Ú@fg@fÇf@fýw@gjŠ@h @hP@gÙ½@fʱ@eÛË@e_@dîµ@drß@dGö@d^@d;X@c§@b¨þ@ae¨@`P2@_ªb@^ýD@]DZ@\@Z9@XS‰@V.@UA@Tú@Uxö@V¥±@X|î@Zu°@[¦'@[cV@Y÷@YL±@ZæZ@]~Œ@_@H@`@`Oë@`iŸ@`W@`C[@`1@`@`…@_ç}@_¶4@_¢Ð@_Ù¡@`!n@` ¥@_”@^ä$@]Ëy@\)­@Zf£@XþÚ@X0Â@Wÿ?@XD@X¨@W®õ@VIû@Sp@O;z@J*@D°ä@>³Z@7k@.oK@$©1@Io@X4@0÷@(†@4:@%Nþ@/Ö@8V}@@[@Fè@J¥µ@MåÎ@Pn@Qt°@R£»@SŒË@SâÓ@SÜ/@TË@Tú@VR¿@W©Œ@X‘]@Xƽ@X4)@Vì#@U(V@SOŸ@QΖ@Pßã@P|Z@P§L@QL@RÓ&@T/@U/I@UtŠ@Tá±@SšÃ@Q΄@Oq@LHß@HŠ’@ESý@C¨¸@C}Á@DU|@F ·@H¨­@KË@Nǘ@Püç@Rí@R @QjZ@Pv @OV@Lœ¿@H-Š@A„m@9Új@3‰:@0'?@/²%@1Ÿ @5º@;©’@B'Á@G‘—@Jæs@L6Ú@L~t@Ltë@LN@K–c@K0@JLJ@J0Ó@Ir,@H¹7@H4F@GêÙ@Gço@HJ¹@Hû»@I´€@JP€@JÊó@K4@Jà2@Js¥@Iû°@Iš@I0´@H½ä@H†6@H¦@HXÑ@G÷¾@G›@GM{@Fâ"@F„º@Fcg@Ft@E@Ô@CÔµ@A×Ð@?[·@<àh@:Õ1@9.@7ï<@7Zö@7‘þ@8‰ @9Ô‰@:ñ8@;Òñ@<ª @=c_@=¸Z@=™ó@=Dß@<Áò@;à@:“9@9÷@7Ë@6øµ@6bÂ@5ëá@5©@5bØ@4Æ–@3‡@0""@,U8@'²â@!š@Àâ@[¼@ -n6@JÍ@?y@6ƒ@ 3f@»Ý@45@#«ä@)*Æ@- °@/ú@2(@3±l@4˜_@4ëo@4ØÔ@4GÈ@2ò<@0êh@.¨,@,Ë@+ûî@,†e@.)Ñ@0…P@3-È@5–Ó@7o @8¨à@91æ@9g@8<@7@6.@5èf@5Ý -@5™@5Sà@5_@5KÕ@4Gy@2Ë@.µ|@*âQ@'i@%iÃ@%)Y@%ýj@'Ÿë@*;¯@-u_@0rò@2YÙ@2ј@2u®@2!ö@2'±@2e|@2¿í@3L&@3õ¼@4ƒ1@4¿ñ@4­r@4xx@4×@36@2Eø@1cï@0†õ@/·H@/LÇ@/f»@/Ž‰@/|x@/mb@/É@/µÇ@/—®@/A@*ÊÇ@*³÷@*ËÛ@*§Ô@*DÌ@)Åv@)TŒ@) ³@)=@)¨Ç@*³@*-¯@)ð³@)oÜ@(ç@(„š@( ©@'wl@&ó@&RG@%wy@$®â@$Nª@$Jç@$]f@$zB@$Ô›@%}½@&8@&²@&®à@&)Ü@%[š@$n[@#tP@"¤ -@"¢@!Õ{@!ë‘@"¤@#µÍ@$š@%4¯@%¡/@%®@%:@#ÿû@"Í„@"&@!ö°@!ò=@!ÃÀ@!›u@!™@!}ù@!@ +@/;@k @ê@ó4@ò@CÜ@3”@é|@±Œ@°@½´@´B@ˆ@p±@•x@ÇË@û¨@øƒ@š>@6ª@&‹@w6@æó@HŠ@’€@’D@þÐ@Y@l@&D@ï¸@˜f@Bç@C¸@› -@ÙK@±ä@7N@§Y@8@ o@±?@\y@&@l@ :@V¸@ßÍ@‘”@Hk@™Z@gJ@Ô @óP@àl@­n@aÇ@ÿÓ@yÔ@ ´ã@ N@ºü@’Ë?÷Ñ–?é–|?Þ’?×Å}?×DF?ÜÔ?å†?ñ]Â?ü“@¯[@œ_@Ð+@N@cÝ@ @ &—@ ƒ_@ÒJ@¹Ô@Z@Âg@D‘@zG@O @ô@v@ë[@8Ù@mÄ@ºö@M•@Ã@ö‰@ø„@,@¦%@®@bÒ@¡Æ@â‹@7@=¶@s @y­@½@üñ@@ @D*@Fm@úÈ@ -.@ê$@²Ç@ Mw@ ÓŒ@ ˆ‚@›Í@EÒ@o@hÛ@´Í@3f@}Æ@wX@ø@´ñ@“ @¬Ù@¤i@eæ@»@•–@ ”ã@ @ -æ@ C2@LC@®Ô@ƒ0@· @@@ 5@ -`A@ …@ @ Ãæ@  @ G@ -¨Å@ -›@ ^­@Ân@W«@-J@#G@÷ -@¬^@™@ã¹@Fó@zW@’T@Ö@ @À@ v?@ @a=@Õ@‰*@0@ê@wÙ@J'@ÒJ@òû@ Š@ T«@ ²#@ ßW@ ½Y@ s¢@ @™õ@ýz@7»@áË@š@'ñ?÷€,?î³?è=(?å”y?æ¯L?ëá?òj:?û.‰@NŒ@UJ@®@D>@$#@–¼@%¦@s@²@*A@º˜@²@•@Ij@yC@£Q@Ð@×À@Û\@–@,@ý^@¡_@AÛ@ò:@·š@‹¸@`Z@HX@:v@G@¯8@[@0˜@9ô@H@D@XÏ@mo@nS@r)@s‹@g#@T@OX@Sƒ@+Ù@ªÊ@Ò‹@Ž@·ê@wñ@-q@7`@ ›@$@~Þ@¾í@Ö¹@ÚÈ@ÖX@Ò@Ø@êÃ@ò¾@ºý@M¤@ -h@ß÷@"U?ÿM.?ûÚP?ùE?÷À?÷cê?÷þ¿?ù{§?ü7À?ÿ‡ö@ W@¤…@ª‚@l1@ê!?ÿøÆ?ýKs?ú­Ÿ?ùWÍ?ù6Ž?ù?ó6=?ò½Ø?ò•ý?óz?Þ¥¡?à€†?áƒ5?âB¹?â² -?â¬á?â}©?â!û?á–?á=Å?á&?àá´?àÉn?à°:?àX‰?àÅ?ß³ö?ÞýÎ?Þ#?ݱ?ÝË ?ÞR?ÝóÁ?Ý«ø?Ýz?ÝVo?Üã.?ÜP–?Ûøñ?Û·]?Ûgà?Û–?Ú”ƒ?Ùè&?Ù•½?Ù¶z?Ùêm?Ú?Úr?ÙÒ?Ù^Ï?Ù2?Ù1ö?Ù †?ØèÓ?Øãä?ØÝÁ?Ø°×?ØI4?×ÒÉ?ב›?×K”?ÖØ‚?Ösº?Ö:#?ÖF?ÕÑ?Õy?ÕEû?Õu“?ÕÄ?Õ«b?Õ3@?Ô¹?Ô)f?ÓÅQ?Óº}?Ó²F?ÓÃ,?Ô"?Ô]?Ô:©?Ó—³?Òì]?Ò¤+?ÒGÙ?ÑC?й?Ð(?Ð «?ÐGö?ÐÎœ?ÑDÀ?ÑVD?Ñ"|?Ðì?ÐÕ?Э¼?Ð;Ì?ϼc?ÏPš?δ?ÎN^?ÎXÆ?Îx?ζ??Îþ¡?Ï?Îë?ÎŒk?Î)?Íζ?͆ã?Íf£?ÍSŠ?ÍA|?ÍŠƒ?Íôß?Î#?ι?Î\?Îñ?Í1?ÌJ\?Ë”F?Ë4°?Êý ?Ê¡ß?ÉäÚ?È»v?Ç_ô?ÅçC?Ä.Å?Ái­?¼îP?·Ä?¯ Œ?¦û?ž~²?˜Û?”™?”I€?–úZ?œfo?¤2Ñ?¬Ø.?´uÃ?º5h?¾2??Àáñ?ÂÂ?Ãí­?Ä ?ÅC?ÅxŽ?Å´£?ÅÆ?ÆÃ?Æn?ÆÇ?Æò¡?Æòº?ÆÞv?ÆÃ:?Ær?Æu?űk?ÅŒÑ?ʼnë?ňˆ?Å ¸?Å×:?Æ9?Æ’?ÅÊî?ÅŠ¿?ÅTï?Å2ç?Å%e?ÄÝž?Ä9¬?é9?ÃÈh?Ä}ì?Åô?Å‚?ÄÍ?Ä\…?Ãav?Ákñ?¾.Õ?¹ÇB?´ù·?±AL?¯Þ[?°zÈ?±Ý7?´jÍ?¸—=?½ ?Àt?Â@'?ÂaÄ?ÂŽ?ÁÇã?ÁŹ?Áêï?ÁÙÒ?ÁT¡?À8þ?¿?¾‘Z?¾‰Ó?¾Ui?¾Aé?¾¯q?¿d?À&?ÀpÂ?Àny?À'Ç?¿ŒB?¾ö?¾ŸÉ?¾N?¾?J?¾šÀ?¾ë“?¿c?¿#:?¾Ê‡?¾C©?½á?½©Ë?½2?¼˜ß?¼Vá?¼ŽD?½?½à?¼óT?¼ñ‚?¼ñx?¼ÍM?¼¼?¼—2?¼La?¼ I?»Àw?»F–?ºÏî?ºjá?¹Ìy?¹d¤?¹;r?¹=?¸ßÍ?¸â?¸ôµ?¸_3?·ý?µ«3?´O'?²Þw?±¡K?°’Ç?¯Ï·?°c?±@]?²Å?²; ?±æÚ?°ü+?¯¼?®Ð?­zÛ?­†d?® Z?¯Àº?±2¼?³e§?µ"?©Âú?©)o?¨À?¨€B?¨QÜ?¨ Ú?§Ø×?§Ûj?¨k?¨kR?¨—Ë?¨J‰?§´n?§.“?¦À#?¦Ö?¥ÏÊ?¦?¦?¦*ä?¦Å??§k#?§¬¡?§Šy?§{S?§}?§2H?¦Óû?¦£â?¦>ç?¥©,?¥EJ?¥"|?¥"´?¥T?¤Ì½?¤±?¤?¤Rz?¤hÁ?¤µ‰?¤]e?£Í÷?£°‰?£™’?£²?¢¶·?¢öt?¢ó?¢Ša?¢Uò?¢;’?¢í?¡S?¡¨? ¯£? d_? *÷?ŸÿÖ?Ÿ¤Ù?Ÿ`#?ŸŸj?ŸÃ?Ÿ{?Ÿ ´?žtW?å?«&?˜a?k³?+v?7A?‚D?¨¸?ƒþ?)F?œÝ9?œiÒ?›Üc?›àŠ?œz ?œüû?M?œª¸?›¡I?šü -?›©?œžY?=Ä?NY?9ø?\s?[“??œæî?œÐ¬?œ?œj?œ•¨?œ=*?›ž?›pá?›Œw?›mp?›`m?›U@?›ý?šÀ¤?šfT?™ñ‚?™Šò?™D²?]~?‰??Žîã?]ß?‡R§?Ù?†ÖÒ?Œ»™?Ž ‡?Ž,œ?Ž6/?÷D?v÷?Ö?Œí¯?–?›?ŒÕˆ?ŒZ?‹ã»?‹Þ>?Œ38?Œ6?‹þ^?Œ?Œ Á?Œ"ž?‹ÙÉ?‹„æ?‹”š?‹‰;?‹]Ú?‹}Ñ?‹˜?Xáõ?YP?XÙï?XgÑ?X2c?Wúr?Xé?XF^?WÔ“?W¾?Wãe?WñÎ?XT?X‡?X ?Wpg?V½à?V ?U«–?UÙ?TZ÷?TQ ?TÂF?U%ª?UG½?Uf'?UoÄ?Utø?Us)?U7…?TÉÑ?Trœ?Sý?S®7?SÎÃ?S[]?S ?SgÕ?S´/?S)?RQñ?R08?R•ë?RÙÄ?RÓ2?Rf?Q:Ê?P$ý?MÉ?G÷/?BÅ4??L?=Ž?=d?>á°?A(8?D£@?InI?L†Å?Mº?L[e?IÒÕ?AóÖ?9 ¤?=÷ÿ?F†Ý?Fz??V´?>ó?EvÆ?Imé?IÄ?J?Jçõ?K[­?@/Ê?@"%?@«?@¨^?@bâ?@6?@J??ÓÛ??º ??¦(??`*??†D??½G??`Ï??,Æ??W?>Ÿ?>W¾?>b?>¹l??œÊ??À+?>°Y?='¹?<„Ò?=‘?=À!?=ðŠ?=¯ý?=iÕ?<Å ?ÿ?)5¬?)r?)õÐ?*™?)‚?(ãÀ?(ÆH?(ìç?(ÒÖ?([K?'ø¼?(B?(9?'ô‡?'¡,?'?â?',?'o?'$?'xM?'Uî?&‹Ö?%«Ô?%@…?%~–?%h?%\?$âe?$'Ì?#ù£?$£¼?$ÓL?$¦?#-œ?Þ¢?\?¦?a?˜†?Ó?dï?ÌÏ? ±Ô? ŽV?éÇ?[i?˜ú?Á©?m5? \?Ãâ?wV?Ñ?óÈ?4K?Jd?ý˜?þì?ø=?“?\? W?»Å?af?Yj?b!?ct?¬³?²ð?;°?" ?uÿ?_!?"?¶[?~X?…?Æ­?õ?­Þ?.Í?¨?A?? t?á–?6 ?P%?Û}?1 ?·ê?íº?J÷?É?‹½?|u?ê=?{&?ŒÊ?op?mç?Ùß?¾?û?ØF?æª?ºÉ?‡? ï?%Û?š?‚â?ñˆ?öh?S]?ðŠ?ší?…*?O3?ù(?´/?ÚT?%}??ɱ?—©?>á?Ý ?‹¹?î"?4\??Öœ?9È?½“?К?"Á?Þ=?Hi?6J?È=?\7?ì?³Â?¤,?I`? ?ëÃ?¼E?®.?u]?]?^?¿R?ê¸?J ?‡?Jì?¾_?*ë?äò?šÜ?’d?¾h?Å?÷î?[`?•³?þÒ? &?‹?=Ÿ?ÜÀ?›??À?Èj?q*?)¾?8x?¹z?&?Ýí?m_?ë?fi?"@?:8?È¿?P&? ? ù_?8?AJ?‰¥? r? µÁ? L/? oM? /Å? Á ? -±? ÷ä?•N?dU?W>ü+Ü>ñ?‡>ëÏÊ>ì÷Æ>òŒI>ùŒ>ût3>üœê?Ø?«¢?%?53?Yü?sÎ?Þ`?|q?¿ï?äì? y@? -? -V=? -î¶? M-? m—? m? O? -_? -m¦? -Ær? -®o? -N{? Éð? ¥§? å.? -!;? óš? ƒ? r? ? !? ?)8?¢S?Â%?üU? [?èô?ëh?K?Z?¤Í?6ö?Ãv?c0? ??s>û›¿>ö5>ôÓŽ>õzœ>ø ]>ú¥>þÙ„?~“?Xn?t?-š?H?»ù?â?áÌ?‘è?àW?³±?Í´?߯?Ü÷?ÊU?–¹?p>? ?bQ?0Å?Q‚?·?M?Œ`?»t??àö?“Š>ÿiò>ýqÈ>ÿxò?\ð?^R?”æ?š}?‚>ý¿‚>ýMJ>üÝÞ>ü5ö>ý £>ý`Ž>ýd>ýÞÛ>ýÉË>ý£µ>ýö>þ#•>ý­—>þ ò>þO>ýk*>þ ‹>þô÷>þÝÌ>þ­>þƒ>þv>þeW>þ=ß>þl>ý©Ž>ýz`>ýz4>ýΗ>ýÿ0>ýÞö>ýP©>üÓ>üÈ>ü†Ô>ü*&>üf>>üˆ¸>üB>ü>û{à>ú´r>ù÷¸>ù¥Î>ùqg>øÍ>÷(²>÷ =>÷ ¤>÷ö>ö±>ö]‡>ö ¿>õ¼>õl7>õ~>ô”¸>ôV>ôG>óŒ_>óz£>ó¸o>óµÞ>óY">òö(>ò±Ó>ò{™>ò?º>ò}>ñäY>ñ¯>ñz°>ñKÊ>ñ±>ðá—>ð¬D>ðz >ðFm>ð>ïáB>ﯥ>ïz%>ï:>îûn>îÊ>î›\>îl>î=À>î s>íÎA>í„©>íK>íª>ìï™>ìÁë>옼>ìqû>ìGø>ìs>ë÷ƒ>ëÌW>ë›d>ëe>ë+Â>êûÒ>êåÛ>êȘ>ê†ú>ê4¢>éò>éÂ>é—l>élÂ>é@¤>éˆ>èíÞ>èÃÔ>è˜d>èag>èm>çãI>ç³ß>ç…Ï>çUá>ç$ˆ>æé@>æ›?>æWD>æ$m>åîƒ>å¸>å‚Î>åLQ>å%>äÝ0>ä–Ô>äTå>äR>ã¦r>ã`U>ã-Q>âÜ1>â‹B>â—!>âld>áÌâ>á8¶>áK<>á::>àÚv>àY¸>àe9>ßÿ„>ß©1>ßÍv>à ú>ßã>ß#5>Þûì>ß#>ÞO>Þ=ø>ÝÿÚ>Þ3©>Þf¢>Ý2:>ÜÏh>Ýz–>Ýïu>ݾº>ÜþÐ>Ü6J>ÜAA>ÜŽá>Ûä¬>Û&>Û1+>Úœ>ÛK>ÛE=>Ú¹a>Ü„>ÜÐh>Û>Û<Õ>Ûäí>Û‘>ÛpD>ÛQ*>Ú´V>Ú»Ç>Ú¨8>Ú‘ý>Ù}#>ÙK6>ÙÞ>ÙSß>Ù«ù>Ú#$>Ù/‹>Ö°u>ÒD³>Î3>Ëĉ>ÌXÐ>ÍIË>Ëêè>Ì&Ã>ÐFk>Ô\e>Ö+U>Ö%£>ÕX\>ÕÚy>ÖÝu>ÖŒ»>ÖÕ>ÕÑg>Õ¤>Ô· ->ÕH>ÔÔ>Ô" >Ô,>ÓvÓ>ÒÅå>Ó’>ÓU¿>Ò÷C>Ò…>Ò#?>Ñê(>чˆ>Ñ€v>Ѥ>Ñfc>Ñö>ÐãI>Ñþ>Ðá+>Л>ÐKÔ>ÏÀ$>φq>ÏH~>Ï;Ï>ÏV>Îâð>ΆC>ÎwD>Îja>Î q>ÍÖ>͹º>Í{a>ÍC$>Íz>Ìòø>ÌÅ‘>Ì“Ú>Ìa¡>Ì/]>̱>ËÐl>Ë}Ô>Ë(0>ÊðÙ>ÊÆÞ>Êœ/>Êhg>Ê/>Éú6>ÉÆ5>ɉ¦>ÉL“>É>ÈÍ>È”'>ÈUr>È h>Çø~>ÇÆB>Ç¡ó>Ç–2>Çz¿>Ç> >Ç ’>ÆäJ>ƹ³>Æ‘<>Æq?>ÆMz>Æ#Í>Åø>ÅÏ‚>ÅŸÞ>Åb÷>Å1–>Åh>Äó8>ÄÙ>ļJ>Ĉ*>ÄXÝ>ÄHe>Ä;i>Ãñ&>à ~>·¨>Ã?">ÃP|>Ã*É>ÂþB>ÂÍü>¡>Âyû>ÂS|>Â>ÁÜd>Á¦è>Áx >ÁGû>Á>Àôæ>À·.>À\^>ÀÐ>À¡>¿â–>¿ Î>¿fl>¿.>¾õj>¾cb>¹:`>­6È>°«ñ>º3s>¼ø¡>½I/>½Â>¼ñŽ>¼ÃÝ>¼“ë>¼g>¼D¶>¼€>»ßy>»»M>»>»Z5>»>>»:>ºåœ>º­m>ºr$>ºC>¹zd>¸ûƒ>¸ÿ—>¹4>¹cd>¹r£>¹gŸ>¹U§>¹<>¹a>¹F>¸è–>¸È>¸•>¸X8>¸%±>·ûF>·Ïé>·ž8>·kè>·=³>·Æ>¶âd>¶ž¯>¶hÞ>¶5>µÔ*>µ±„>µ²Ÿ>µ{æ>µ5 >µ Æ>µ>´Í#>´Äq>´éá>´»¤>´8C>´þ>´JF>´Tx>´93>´e>´?6>³˜Â>²¨>²¸À>²ã‚>³)û>³S>²Ýó>²|ï>³Kæ>³«¹>²ø >²iª>²nñ>±¡ë>°Ôj>°*/>°5>¯©5>¯2+>®¹á>® @>­¥]>­Ü>¬ß_>«àl>¬<">­7¿>¬ý>«µ·>¬.æ>¬€>­7Y>¬Á>¬½Æ>®»>®3™>®ÂH>®2>®«U>¯Ò†>¯Þ>®Þí>®->>®R >®øÑ>®u$>­~á>­E>¬Þ ->«@#>ª¯>«Sm>ªë">©®/>©$ð>©Om>¨ï>©A>©Zî>©<Ø>¨åÞ>¨Æ >©G>ª.>ªQû>ª Ÿ>©æÒ>ª“D>ª´¿>ªÁ>ªq¦>ª¬8>ª×[>©ùR>©†>ª[>ª¤>ªÂ>ª”ÿ>ª1>©è“>ª>ª>©Åò>©Z{>©D`>©‚>©ˆÌ>©‚N>©P>©!>©=>¨ò>¨×¡>¨ÃÚ>¨->¨~V>¨_Œ>¨.­>§ú¬>§¿‡>§€s>§Ii>§&>¦úl>¦Þ¢>¦¯Ë>¦}1>¦h>¦Ep>¦ -M>¥Ë›>¥|û>¥]t>¥i¾>¥S(>¥5e>¥>¤üñ>¤ò$>¤Þh>¤Çª>¤°í>¤š>¤Ÿ>¤[F>£±t>¡ÜV>¢3M>£|Œ>£› >£}W>£Zî>£9Ñ>£W>¢êA>¢ß>¢Ð†>¢¶’>¢›#>¢€ >¢gð>¢T2>¢?m>¢(v>¢ö>¢½>¡ä">¡Ì·>¡¾¢>¡± >¡¢>¡“5>¡~¸>¡]³>¡@¤>¡->¡)>¡ > ú@> ÙL> §> ¦ù> ­j> š©> …> W'> 1ƒ> Z>Ÿø÷>ŸÜY>Ÿ»w>Ÿ•á>ŸuF>ŸX>Ÿ=>Ÿ)ƒ>ŸÆ>žä²>žª]>žvk>žFŒ>žì>øà>ÏW>¡Ú>mp>-ò>œïT>œ×Î>œÐv>œ¶)>œ%>œŒ@>œ”>œ±ú>œ€^>œIw>œ'=>›úö>›ãé>›Ì>›´L>›ß”>›‘š>›L´>›YI>›iŠ>›'Â>šÎ“>š¢0>š~¥>šf(>šy->š f>™=:>™3ë>™l%>™hš>™/ª>™I³>˜«M>˜kG>˜ÔŽ>˜6ð>˜‚>™(Ç>™iË>˜ËU>˜Æ>˜ëE>˜ƒ‰>˜î™>™ˆ>™0û>˜„€>˜›ð>™%[>˜Òu>˜È>—Êï>—!_>—Ã>—Ø>—;u>–ÿª>—ˆk>–݈>— £>— -N>–ʼ>–OÂ>–9¢>–¯ë>—ì>–Þ>– -_>–‰f>–KU>–<´>–”é>–$>•´ñ>–)n>–Q[>–¯ð>–§b>–Ò>–¼>•^v>”z'>“£¢>“´¼>“t>“ 4>“Œ>“]µ>’íÃ>’Rè>’¤§>’#;>’>’H>‘Fº>Ú>ªf>ƒÏ>’~ >‘\ >£Ü>‘µd>“…ü>’²5>\£>‘—5>’ˆ>’ -d>R.>îÍ>É.>ÛD>˜>üÿ>fÊ>Ž¨'>Û=>‘0`>‘”´>­ƒ>ñV>ýC>Z¾>Ýk>K>6>߆>³r>q >8á>”u>ÁÇ>Œ9>‹Ög> ”>Žÿy>Ž®A>ŽÌA>ŽÔ€>Ž„Š>ŽZ>Ž >ì³>Ëê>}N>‹ã+>‹X÷>‹§É>‹­í>‹éì>‹>Šß_>‰ïÇ>‰˜>ˆý>ŠCò>Š>‰F†>ˆ•>‰eE>‰,>‰è>Š Í>ŠV>Š´>Š ›>‰qý>‰n>ˆÆô>ˆ¢$>‰4á>‰Ó>ˆÏ‘>ˆoË>ˆãß>‰>ˆÊç>ˆ-ò>ˆ8>ˆ-}>ˆMñ>ˆ,>‡Ù7>‡’5>‡=ß>‡8·>‡>†«Q>†_X>†O+>†Kå>†5>†Ì>…î–>…Î>…¬Æ>……œ>…l(>…rƒ>…Šê>…œ²>…¤U>…˜Ò>…K¹>…‡>…ZN>…\#>…?k>…œ>„ôî>„Ô¦>„¸,>„¥Í>„”r>„ƒ>„¼l>„¯þ>„,>ƒ×j>ƒ¼‡>ƒ£Z>ƒ‹>ƒqu>ƒX>ƒ>>ƒ$P>ƒ7*>ƒøµ>ƒ»>‚ÌZ>‚N>‚nß>‚T—>‚<ø>‚(¤>‚>è8>ÅI>¨’>›>uã>\‡>B<>4Ì>ÒÒ>‚óé>¥s>€Ê>€©S>€’N>€|>€b|>€E4>€+K>€D>î>¶>>|‹>BÎ>¤>~Òª>~>~H<>~>}àÔ>}¦A>}`Û>}$>|Ú{>|¤9>|zE>|Ly>|'­>|œ>|4>|M>|gI>|‰^>|ªÂ>} Ü>€y>&´>};>{m¯>{"Ì>zä`>z™E>zSP>yþ»>yÀ>yoU>xû>>xÃ)>xSx>w‚Ô>v}>u€ˆ>s Y>té¿>vgÞ>uïñ>v/´>vL¨>uþh>u›ª>uÚ¦>vOÖ>v3>v6U>v˜>uÎ>uS·>tY>s’;>sú>>sÉÐ>sNl>sìÑ>rÞ¹>q5>q¶»>r¶|>q->o¶×>oøû>p$>p_x>pZH>pAä>pH&>p(>oH†>n¿W>n -‰>mKÊ>lÑD>lŒæ>mUA>mÁ >l¿>l‡ø>lü1>kì—>kv">jün>iŸO>iüø>j™d>ioY>i >i«>iw­>iIÐ>i«">jbb>j¼ƒ>hø£>hÏF>iø>j¥×>j«†>jìä>j€>j8(>jBú>j=>j6Â>id‡>hÙC>hš¬>h$™>h ®>htË>hî>g•¯>gn§>gµ>hª>hO>gºj>g¨>fq>f#W>e]k>e7>dç—>cª>bÉÝ>bŸ>d¢>f%9>fñG>f'þ>eO9>e²·>eí:>eS>d„>ciA>cŽª>dV‹>c]Ô>c¼>c‘ñ>c >cB¤>c/Ò>c²ƒ>d.>c\>c -ø>cÀ>bZK>a†>aaé>aL ->a°8>a=Í>`•¨>`®ß>`Ä>`s>`[ >`ɦ>a„¶>b²Ô>bþ>b¥ >b[i>b >aÅ>a÷_>aºP>aŸ>`›º>_¦ô>^Ù>]í†>^“>^8%>]þ8>]‹{>\ìG>\>]u¾>_´ >`[ð>`Mž>a >`÷>`ñ÷>a¥Å>aä·>a¨õ>_ðÀ>_ƒÇ>^¡ü>]ø1>\ÎÏ>\æk>\š>[U”>Yy2>Xƒ>XT8>VÛ>Uœ‰>UD†>U;ý>V­>W¹¤>Y)¢>\l>^/à>^ì$>_1‰>_Ø>_>_ÿF>aul>b5Ý>ajw>`z>`¼!>`.ð>_»²>_ˆ„>_„ü>_$y>]@R>\|ð>\R†>[)ì>Zª¾>Ys$>X%³>Vz >T~Ã>Qû>PÏ÷>OŽã>O‡ >O}$>OÙ4>Q[S>S´Y>Uå¢>Y ù>[5ê>\Ó0>]É,>^yï>_6>`5v>`!>_³!>_V¦>_ª3>`›>_“Ä>_3H>_ê>^XÜ>]se>^Ù>^2>]#Ù>\f…>\¯<>[û›>[Ž>Zdµ>Y‡[>X¶9>Wüž>W—P>U’Ø>S4>Q1>NÖ>L6>I Ã>G™>F T>FK>>G_">HÔ´>KÞ>N”–>P¡|>SÐ>T@M>T–>S!I>RÝé>R=Õ>Qɲ>R¯>R¹>T1>Ul>U˜é>V^Š>V3æ>UŠ3>U®Ì>UFC>UÃä>UO¹>U9ƒ>U³Õ>UOÝ>TÏe>S¯9>RÊ÷>Rõf>SCž>Rk`>QF¨>Q…>RoV>Q݃>P¡%>QN>P0ó>O>Miò>L ß>JáA>I„&>H"A>FR>CÛŠ>AÓ6>?;i><©Û>9CU>4ß>0Ê >/‡>2.>6`À>:º¹>>lÇ>A`>Cܼ>EuÀ>F¡S>Hd>HîD>Iq|>I¼C>IýÎ>Jú>JŸ>J„>IèÓ>IÅ>I²>I£ð>I‘„>I{>IaÞ>I:Ò>H)2>F{>>H>H¾D>H¡–>Hpe>H%Ò>Gî">GÄþ>Gœ¦>Gs•>GJ>G 6>FõŠ>FÉ>F‹h>FSá>F*Ñ>EþŽ>EÝÌ>EÓs>EÌ>Eb…>E9>Dèr>D±¢>Dxm>D4Ü>CæP>CŸ>CX">C P>B¶ë>BY >Aï÷>Av|>@éJ>@;é>>›>;3¨>;¼²>;«R>9ØT>7fÇ>4;¦>0Q>*£ç>#:5>æ>ר>Ž>&†Ä>,¨#>1*1>4ƒ~>6ÿ >8Õ->:$µ>;q>;È><ªB><ëš>=ê>=1H>=?>=BÉ>=7Ž>;§ï>4H†>7c><ÿ><Üâ><Á><¢¹><~><%µ><Ä>;>8e)>:œ>;^¦>;KÒ>;'>;ˆ>:ÖÅ>: >:r8>:L>:&Â>:µ>9Þ¿>9ÄÌ>9¢ž>9{­>9T™>9&Û>8î‚>8Á[>8™ö>8sM>8Lœ>8&O>7ÿ×>7Ùt>7²m>7‚º>7A?>7d>6Óý>6«Â>6ƒd>6Zê>61þ>6ø>5ß >5¶X>5‹ö>5Y‰>5¿>4î€>4¾>4–F>4i>4:ä>4 >3Ös>3>3G<>3°>2Ôu>2•ã>2R$>2Ò>1µå>1YY>0í>/ì8>*a!>'R>>)š8>,#ó>+·—>)éí>'†R>$^T> )>u>^l>ÚÌ>µ±> ße>V¾>k>!ào>% >'šÂ>)¢>*y>*p>+O_>,RÎ>,¯G>,å>-ý>-c>-#u>-Æ>- -I>,ôD>,â›>,Îí>,¸Ç>, 7>,…Ò>,jD>,MÁ>,/ó>,>+ß’>+¢ý>)ÞG>'´¯>*q9>+.=>+>*ð>*Îï>*­>*‡<>*V>**™>*|>)b>'I‘>(y>)€“>)i{>)Dý>) Æ>(õž>(½G>(ˆº>(V`>(+Ë>'ö™>%io>!úS>&PÈ>'}—>'â>'Ý>'Ð>&÷J>&Ó¢>&°H>&Œå>&j>&Fê>&#¬>&q>%Ý9>%³é>%€ü>%X#>%4à>%ƒ>$ïÞ>$Ìÿ>$§®>$xÍ>$Hú>$g>#ùÇ>#×>#´ú>#’¤>#pB>#MØ>#+ ># >"ìO>"Åù>"¢’>"€´>"^Ü>"<Æ>"Ô>!î=>!½û>!™*>!vÁ>!Sñ>!(U> ö¢> Ð$> ¬Ã> ‰T> d[> 5›> k>ß>»>–¢>qÙ>Lè>'è>ë>Û³>³{>€Š>M=>"‹>øM>Ìu>ž>ni>;‡>ÝP>ÈŠ>É›>³¹>Å>QT>­z>×…>¥$>ˆ›>Ý >«š>ìà>—Å>p> $>=÷¶G=âƒþ=ç1’=ýbJ>©/> æ>‘¯>+¾>ÿZ>Lh>:`>âõ>Yû>¬s>äu> >é>)J>'J>™>3>øÀ>è>Õ">À>>© >‘Ë>xñ>Y½>o½>Y–>+>Ò>“¦>t>Ÿ8>Ø'>C$>g>äë>ÂÚ>¤]>…ö>g6>I>/Ÿ>>û×>Ü^>¼À>@>}ß>^>?>Ò>‡>á>»,>ŽZ>k>KÈ>,Ò> ’>îý>К>²U>“:>sÅ>N­>" >÷">š)>z«>p>ûÛ>X\>A†>Â|>bº>Œ–>¨K>•w>wL>WÂ>8>¾>ür>Ýî>¿t> [>z:>O ->-•>>ð×>Òþ>¶m>—ß>xˆ>Zq><.>> ëB> Êó> ­>> ¤> qí> TW> 6Ï> V> ûî> ÝÛ> ¸,> Ž–> ‘{> Ž\> )> $í> öx> ×z> »Þ> ž‡> (> V¬> /©> Ê> -ók> -Õ¹> -¸P> -›> -}£> -``> -C(> -$h> ü~> ÕÉ> ·•> šŒ> }¯> `ù> Cü> '> -$>íÆ>Ï>¦¤>R>d!>GŸ>+ >¦>òˆ>ÖB>¹ý>»>~ã>V”>0>ÚD>õ>¼>Û`>ÿ©>†;>ká>NÅ>.å>c>â*>Äï>¨>‹ë>of>S/>79>È>þ>Þ_>µ•>“û>wÓ>Uð>,;> >îÝ>Ñ¿>´›>z>[´>5ò>ä>ú >ÜG>½¿>Ÿ‹> >b>Bo>"U>.>áX>¾›>›I>w >PÞ>(±>þ4>ÏÌ>–ú>VD>®=þà=ô"ä=î÷ =ò6×=ù#ã=úŽ—=ø³Ý=ö/3=òȃ=î"!=çž[=Þ“=ÎÌ©=¸SÉ=¶£=̬=ÜyU=åøò=ìF­=ð‘Ä=óˆç=õžz=÷ä=ø{=øÖ¬=ùSì=ù§=ùÚ7=ùöÐ=ùüÓ=ùåà=ùÎ=ù¹£=ù o=ù‚û=ùa“=ù=™Z=˜üÓ=˜Ü?=˜ºÞ=˜˜ú=˜yÈ=˜Xø=˜/†=˜C=—à]=—À[=—Ÿ’=—~ô=—]Ò=—0ß=—š=–àî=–À=– ƒ=–€|=–^=–>H=–_=•÷¤=•ÞŒ=•¿i=•ŸW=•_=•_Z=•?¬=•y=”ÿ$=”Õ-=”©€=”‰‹=”j=”JH=”*o=” -=“ßZ=“± =“Ô=“oø=“P<=“1=“G=’ñ¾=’Ñv=’±Ç=’“3=’tE=’U=’5w=’?=‘ök=‘ÖÆ=‘¶ =‘‹<=‘_ç=‘@qÕh@s<­@t!®@tyo@ttw@tLÇ@t@sÐú@s>¹@r]À@qhô@p¿)@pœF@pô@qŽ@r%Ì@r~+@rmv@qýo@qt*@qÖ@pîë@p³@p^ê@p8ˆ@ptÌ@pîE@qVA@q~P@qd&@q?@p’æ@o¥µ@mïO@kf•@hô@h»@i(@k;@m8§@nxP@o -…@o1E@o&¢@o s@nÞ{@nr@m m@l‹@kŸ@k)ñ@k%@jÞñ@juÿ@iÖ{@iBƒ@iJ@iRµ@jù@jï‘@ktÎ@kS¸@j”ÿ@iµô@io}@iú|@j¾s@kƒ@j¸@j@Ð@iÌ)@i9@gåÿ@fÏT@f|h@fÞ@g*@fÝç@fP@f9°@fë=@hs@i# @i¹>@iÜÈ@iÏ@iÂÈ@i¶[@iŠe@i+d@hªü@h7@gë½@g½Ÿ@g§@g¼„@g÷@h$ï@h!c@gì @g‡ú@fæÿ@eü»@dú@dh¡@d±ó@e‹@f.c@fû@e?þ@d_<@d¥@dX@dgk@cʈ@bè‡@b”c@cñ@cäX@d6m@c¾î@b®À@aŒ\@`ý\@aDC@bé@b¹p@cQ³@cÒ®@d*‚@dG2@d-è@cç@caØ@bs}@aq@_?L@]QÀ@[•Î@Z°,@[®@\uŒ@]Ô8@^¯d@_0Ü@_ƒ(@_@Y @Xœó@Wõ@Wy?@WB½@W=Ç@W@à@W i@V„º@UöŠ@UËd@V)h@Vßó@Wá@Wæ@WÑü@W…þ@WJp@WOP@Wt @WLX@V¢Ñ@UÚÇ@Uˆé@Uʱ@VJ¦@V·@Vîw@Vî®@VÍÙ@V£½@Ve;@Uñè@UUÈ@TLj@T:@SVä@RCê@QÙÍ@R…@S‰@T«é@U(@Un@UŽž@U€•@UD;@Tâ…@TxÑ@T4P@T#@T(±@T-ñ@T5 -@T?Ö@T@õ@T+@SüÙ@S°Î@S)Á@RN@QMB@P¦ó@P´±@Q@@3X@@N]@@C$@@#$@?òn@?µö@?@?h@?e}@?\e@?1¯@>Øè@>YÌ@=ר@=‡®@=’o@=ì{@>Sˆ@>Ž¨@>›n@>†@>xE@>_„@>M[@><ì@>w@=Ó¹@=f @<ÿa@<Ö‰@<åí@<ù@<üï@<ÿE@=°@<ôT@<¹%@<00@;`î@:µ@:¢@; {@;o}@;‰r@;dM@;Ù@:ÛÝ@:Ò-@:ñk@;r@:î!@:Çþ@:‘@:G¤@:Y@9ô@9ô@@9ß4@9ÀÃ@9³1@9C@9$h@8 s@8xá@8ÉT@9/“@9EE@8õ³@8tw@8ë@8@8 õ@7÷¡@7ÈÚ@7•™@7Jÿ@6î @6®U@6•ò@6Ž®@6¤¤@6â÷@7 L@7)@6õ@6ª@6~0@6{è@6t‰@6=S@5ë³@5½§@5ÇÃ@5×E@5²V@5Q›@4Ùî@4‚«@4t„@4¥T@4ÞA@4è @4«Í@4Fª@3û;@3ä @3Ùî@3²¹@3k@3"@2×@2Îx@2åf@2òý@2ö@2÷Î@2â…@2µA@2”ç@2„(@2WA@1óR@1mS@0ï@0‹2@03/@/Ï`@/U÷@.æ#@.¾î@/]@/‰†@0ã@0}`@0¸ö@0á#@0þ7@1 -”@1Q@0ât@0•@0D¥@0 –@/êŒ@/ØÐ@/Èš@/‰r@.ù@./(@-l7@,ýy@-n@-ž;@.6©@.†J@.u@.Hm@-÷Ú@-«{@-‰@-“h@-‘ -@-a(@-#Ù@,ï¹@,¾í@,¨‹@,Æ“@,Ýj@,’Þ@+ç¿@+(<@*—'@*Cy@)ýƒ@){¦@(¦@'¶Å@'+:@'lÓ@(QÞ@)Uù@*)ó@*·@+˜@+:'@+gœ@+Ÿù@+Ðs@+Í @+£#@+“™@+¬î@+ÏV@+ì’@+üü@+ñ.@+¾@+f@+L@*ºt@*”T@*Œ®@*‰—@*cR@*Æ@)´Á@)m1@)4Š@(ø‚@(œ¤@(@'„p@'+(@&ãÉ@&S•@%7@#ü@"B@!lã@!þŒ@#Jö@$‚ê@%9p@%}ë@%y@%=*@$ô3@$Ñ@@$¶³@$a@#ѧ@#@3@"Ñ@"‰@"lÜ@"‹?@"ãã@#>Ž@#UÛ@#/ @"ï @"Ž5@"(@!Þ&@!ìž@!üG@! ›@ «®@t‡@Â7@!À@ ?S@!6Ò@!‰L@!zò@!{@!›@@!³ò@!Ÿ3@!Lã@ ã @ ¤½@ £Ð@ Äg@ é@ ü @ ÷*@ à•@ Ä4@ ŸK@ 7#@.R@d÷@X@c@x`@>‘@_@$«@ˆf@¹I@ÍŽ@Í£@Úx@æ@Ïâ@³¦@´¬@¸9@œ@m#@J@B¢@I•@4U@ôý@¾Ñ@À@áZ@ë@Îi@ªã@¥á@Âô@äé@í-@Í @†ò@$h@Å“@–¬@˜ò@¸ô@éÞ@Í@öÎ@ÏB@¿ÿ@Ü÷@´@4B@¡@Ëb@n›@4 @)ã@0·@Ý@û]@ßý@Ê@·è@¨ã@‚†@:_@îÆ@º\@«@Â}@Äp@Yû@š¸@-g@®@i2@Ø$@Z @0õ@(*@7@7û@î†@äÔ@"u@¨ç@ @H&@ÿ­@Õ @éV@5!@òÊ@Š‰@™@çŠ@Ö’@¶ƒ@Ïm@Ù@v@"±F@&–m@'µ'@%@@ †@jC@‰@ š˜@ #6@bë@]¡@D@&h_@-4@1’v@3Ú@1xê@,ä¯@%œ‚@2@uÜ@7@4Ò@)É@ -´ñ@ͺ@ i@*~£@3G‘@: 6@>´@A@¤@AŽ@? @:ðë@3Ð@*J@Ö¹@b @¿?ýea?ùu[@Ž”@ ±,@\@% @0h=@: '@Aõ@HŒ@L}g@Oaƒ@Q¼@Q›¤@Pƒ›@M˜¦@Hö½@BÌ£@:òë@1 ¯@%:@¢é@ ÷è?üçþ?ðb!?ò¢7@MÅ@ ex@´@'|@3€@=@E€£@LOÀ@Q¶a@Uå@Yµ@[E@]K@]Ãü@]¶7@]@@\,@[·@Xå9@UÚr@QÛA@LŠË@E¯@=$¬@2´@&có@¯i@ -ì?û;-?êg?æèâ?òî÷@·@ð¥@ ¦=@,Âê@7Ö@?pá@F›@KŸÛ@P½+@Up>@Y^¿@\o¥@^½<@`w4@aÀ@brŒ@b8.@`Šq@\`G@Tu8@H¤•@;ê@4Fã@6º@?Ž\@J¡?@RÍ@Vâ¹@W{5@UÊ@Q¹Î@L¥½@FgÝ@>ÙÄ@5×j@+5î@°p@w<@ô"?ëÞx?ß¾?âÈ6?óíö@”1@pì@!Ï-@-»W@7Æ_@?ýø@FÆö@L‡€@QRÂ@U"å@X$:@Z‹@\q-@]áü@^û[@_Ê@`A@_»@^Ù@]ãñ@]£@^Í -@`ì=@b°@cMh@b¶×@a6ß@_oµ@^oE@^²^@_í@]ÃÂ@ZH®@VÁ@Tå$@U[§@Uœ@T’@SPP@SÜ@SîÛ@TÐÏ@TÌ#@Så©@Rˆ @PÕÉ@N¸¿@KíË@Gùÿ@B‚ù@;›2@3ge@)À–@_t@+`@½)?êâ?Øî_?ÖŠ?ãpÙ?úcö@ -ŽE@¦t@#uD@-¶®@6kú@=ü@C5H@G› @K@`@N•Ž@Q‰L@SÕC@U~{@VÅ@WÌÃ@X‘˜@Y&g@Y¨‹@Z@Zm@Zž@Z¼Ä@[ @[xK@[¾B@[Ë»@[®t@Zÿ­@Y6d@V[@T:@R´ @Ráz@SŒÏ@S'“@P÷)@Mnß@IËÍ@G´@Hsp@KÏÐ@Oô¿@Rçm@S¡@Rí@O Î@Léº@MÞB@Q  @T ­@Vñ@W\/@WÞž@WÒ$@Wv @VôU@V‚@V/.@UÙƒ@UZu@T´U@T23@SæŠ@Sx<@RÀÉ@Qø²@Q-@P"@@N¸£@M- -@KÛ@J¶¼@I]@G—º@EF™@B8Œ@>0U@8Úí@1¹Á@(Ì‹@[S@UY@ —Y@©3?æù½?Ñ[.?È:ÿ?·è?á?ùŒê@ {F@`@ ~@'h9@.…=@4J”@8¢¦@;þT@>É}@A[@C F@D¹5@FK/@G²Ð@HÒ@IÓ+@J¢î@Jå@JÓF@Júq@K1œ@Jæk@J&•@I¥+@Iï™@JµS@K-Y@K0@K3@Jô6@J«g@J'@IeË@H[¨@FÜ”@D[~@@$}@:XD@4þ @3>Û@6Có@;Ú@@ì@D @EÒU@FÛ”@G›@Gÿ{@Gï™@GD†@Eáø@CP5@>PŽ@6çå@.£&@%Pž@æÿ@ÂÒ@ @'ª@3^@;3*@@&@BË÷@D9ü@DÜ°@DüO@Dúj@E)4@E„~@EÁ»@E³–@Em7@Eý@D²Ä@D&=@C—S@CRÖ@C^†@C‹`@C­Ã@C¹Ñ@CÀ|@C­«@CZ'@Bä€@B@Bs@BuJ@B_s@Bb@A–<@A9ø@@ë(@@ª @@V@@8@@wÞ@@6m@?áu@?@>ìG@>”@=#ˆ@<†^@<f@;™@;0¢@:»§@: ÿ@9n -@9Wu@9ÆÐ@:I‡@:c)@: -@9s_@8Úr@8.t@7Z\@6s@5žÝ@4Å@@3¨÷@2@0T@-²ý@*Ê©@'U£@#8@0£@P@´@îI?ûu”?äìO?ÎbÄ?½?·rÊ?¿¼ë?ÒL?è^Ã?þ"å@@u@ê -@O@ F@#Ï@&×Û@)^ë@+\p@,Ð6@-ìŽ@.š @. :@+´u@(Ž@':ÿ@)_V@-ZK@0tj@1ƶ@1²@0 @/=’@.CV@-›³@- @-:"@.x“@0‚@1{@1w}@1B›@0ÃW@0%–@.ý@@,½Ì@(Ç/@"›ž@Ÿø@¶*@Áó@ (Æ@&Õå@+Tè@-•Ö@.î@.õê@.¾³@.Ö@-Óq@.K÷@.öŸ@/\¶@/v³@/vL@/yÔ@/g”@.æc@-ó—@-4T@-b@-X×@-X]@,@*Ò™@)Tª@)7¡@*YD@+‰¥@+û¬@+Ⱦ@+”ò@+¯Û@+Æg@+žV@+g¾@+hô@+žÔ@+½ -@+­*@+ur@+ û@*¦Ò@*cŠ@*A‹@*:o@*œ@)Ôh@)³´@)Ã@)Ì@)®O@)q|@)D@(¾Š@(†›@(]ã@(*m@(@(§@'èÚ@'t%@&ée@&—p@&¨@&ή@&×-@&× @&Ç°@&¡@@&…Ï@&t{@&c@&L€@&B@%Än@%-@%j¾@%K;@%û@$¼ý@$tY@$zM@$¯Ç@$Ëå@$¦Ÿ@$Lr@$Ë@#ñ)@#ØÚ@#‰B@#3@# “@"ôÍ@"Ë@"¬ß@"´\@"º]@"‹<@"&é@!¶:@!h*@!Y*@!lò@!bÁ@!D”@!JW@!bD@!Z“@!9®@! @ ë@ }­@ ¹@÷ö@Øõ@  @a @<@AT@JA@9Õ@õ@/·@_@As@@*@Þ¨@2ñ@ÔÞ@l+@=µ@Šf@jß@ê@¯W@6¹@Ú@Øš@œ@ÔÊ@V"@Ï@`Œ@.x@Cª@vr@•¦@‡Ý@d@Tw@Ys@#S@‡@å@Ø@k@?@ûZ@Ö@øC@©0@*p@Ú@â>@ s@ÿ@š=@.½@ @ $@ý/@Ñ'@v«@ë@Và@Ò@O¨@Ïê@wb@b!@rØ@f³@ù@@Ýf@¨@ž8@ io@ –×@ +º@pk@qw?ÿ‚>?õÄØ?é¬V?Û¼Ü?ËÑb?¹ª?§ƒ‰?›Cí?šª»?¥™æ?¶|¥?ÇüŽ?×ħ?åDè?ð…æ?ù™^@aw@M2@Õw@@ ø@ ‚÷@ ¸E@ ®@hw@áP@5@V@N\@‰™@d@PÊ@@A@„@ 8@§@"€@ù@²Ÿ@s6@™j@×´@æÊ@ß®@à@îÃ@ûj@Õõ@[A@@ Š@ Ëð@_@¸‚?÷=h?ô8O?üIî@@”@ "9@ øh@ BÄ@ ­ñ@ ±…@ ÆR@2P@µï@èö@¶Ö@]ê@0 @6ô@B‚@C @4@ ï@ fh@ àN@ ›y@ „@ r5@ <ø@ îC@ °÷@ ŽM@ €ù@ „é@ 1@ µg@ ñ7@ ]@ ¶ @ - @ -È_@ -´¼@ -¾@ -Ÿ|@ -6ê@ ¢.@ C!@ TÞ@ ‚€@ 0@ç@ï @¤@D&@ aÁ@ Ãq@ Öu@ ñs@ þ¸@ é @ ²p@ y @ vG@ >@ †ú@ [@ 5Ú@ -a@ *„@ @þ‚@ÚÏ@Æ@„@W@üI@p@ Õ@ÄÉ@Øõ@þR?þNk?ñµ—?âHÿ?× G?×ÖJ?äc¨?óúƒ?ÿn°@÷<@s@@•@A¬?þÑ?üÇ?þÛ#@(k@l@­ç@r@1s@)b@Ëp@@²@ @0–@y…@×@€@òë@†@:ê@I@Þß@÷@qs@’h@²ç@”@G@ý@»¹@‡*@e›@W»@UÆ@`º@l;@n@^ @+Ð@ç@©™@y@Dm@èH@‹A@„B@®ð@™p@EÆ@è@W@¬o@áï@ ¬@$-@õ¿@•¨@Q·@5×@Ï@øÙ@º@Šm@–„@ÂN@Í@‰Å?ÿùW?þÀ¯?ýe¼?ûá¡?û†Œ?üåI?þ`?þöh?ÿ#æ?ÿ@?ÿ?þÂz?þpN?þC?ý¿3?ý=?ücŽ?ûP'?ú‹õ?úÞ›?ûšý?ûè˜?ûúÇ?û‹?ú¹?ú[Ó?ú<+?ùîå?ùÜ??ùî|?ùÞM?ù»1?ùqP?øó¶?øµ¢?øß”?øüŒ?øÖn?ø£†?øgþ?ø¤?÷é?÷ë0?÷Þ?÷›?÷2é?öå?ö†‰?ö)l?õÙÂ?õ³?õ¹?õšñ?õ)_?ôæ?ôWj?ô\L?ôdÄ?ôa÷?ôW?ôÖ?ó¿Ñ?ó¡?óŠ?òþ/?ñí„?ðß×?ðRW?ð[Ú?ðýÉ?ñá0?òX›?ò?U?ò›?ñÏB?ñX?ð¿?ðo|?ð£ï?ñS?ñC?ñMë?ñ$´?ð:?ïZÙ?îuž?î[§?îiä?î7Ä?îR×?îìm?ïuô?ïXù?î7?íd\?ìÙ?í9;?íÿ=??îÉ ??îAÄ?íÞð?íÂB?íÈ^?í6,?ì2?ëiy?ë¡¿?ì„?ìC‡?ì&C?ëáP?뙀?ëHÖ?êåc?ꎕ?êN°?ê}?éìU?éØh?êâ?ê8é?ê4D?ê ?ê?êWÒ?êS~?éÚ?é\„?é$á?èïû?諪?è¦ç?衹?èU˜?çé±?çi ?æðê?æ„ú?æG?åÇ3?åŠê?år?ågb?å8p?äà?ä¡È?äÊ?äÚ ?ä1d?â°¸?ßth?ÚCo?Ö²=?Ø X?Ü8B?ß ?àQ?à®E?á—'?âü?áî?áÕ–?áùª?áú³?ᾜ?ásë?á;K?áâ?àà$?à·ì?à… ?à(›?ßʤ?ß‹ü?ßbÊ?ß(N?Þ¥¼?ÞX?Ýòî?Þ -i?Ýù?Ý‘B?ÝL?Üð/?Ý ë?Ý>«?ÝM}?ÜñÈ?Ü\§?Ûî?Û}?ÚíÊ?Ú‰/?Ú¸?ÚÄ1?ÚÛ?Úmj?ÙÊ6?Ùh?Ù[Y?Ùi×?Ùnó?Ùh¢?Ù[?Ù-p?Ø×?ØkL?×ÿL?שV?ׂ6?×~Ø?ׄ´?×W¥?×Û?Öë”?ÖÓ ?ÖÈÑ?ÖÝÐ?ט?×\ÿ?×nÎ?×n?×q?Öÿq?ÖHÙ?Õû,?Ö;Ô?Ö‰?ÖQ%?ÕÕä?Õ¢1?Õo¥?ÔÝÑ?Ô`?Ô+É?Ô.k?ÔE"?Ô@²?ÔN ?ÔuY?ÔŠí?Ô 0?Ô½?ÓëÞ?Òã_?ÑÂ]?ÑoM?Òz?ÒÉÃ?Òÿ ?ÒõÉ?Ó —?Ò÷Ð?Ò˜Z?Òj½?Ò ù?Ñ‚“?ÑH?Ñ -?Ñ4¨?Ñ?•?Ðôƒ?Ð3?Ïc1?Îøà?ÎÌ…?Îv˜?Íð¦?Í=-?Ìw?Ë­E?Ê¿h?ÉÎO?È{M?ÆrC?Ä+?ÁŸ¦?¾”ž?ºö?µè?°F;?©w7?¡=½?—,K?Š÷£?{b?h‰i?gz§?wIO?‡]?’a?œ™G?¥D¿?¬*½?±×Ÿ?¶Ñ†?ºßù?½¿h?¿Ïq?Á[Å?Â/?÷B?Å-¼?Æq?ǘ4?Èca?È$À?Ç ¡?Ǩ@?Èq1?ÉnÅ?ÉÇ?É›M?ÉCC?É&‰?ÉTÅ?ÉHê?É|?É8­?ÉN?Èö?È‚¸?ÈRä?Èb¥?È”g?È¢¤?È’§?È£X?ÈÄ‹?È‘ö?È-?ÇÏ?®;?®}?® - ?­€?¬ð¤?¬êè?­?¬â¹?¬u[?«à?«½P?¬P€?¬§?¬6g?«ÁZ?«wF?«}Ö?«Ý?¬¸?«ù? ¥Ü? ~Š? #ß?Ÿ¡­?Ÿ3å?Ÿ?žï«?ž¶º?ž³f?Ÿ) ?ŸrV?Ÿ0µ?ž¨:?žD˜?žZŸ?ž[?žË?È®?Ýò?ž5+?ž"é?‡o?œ¶h?œd,?œ¹}?œÐí?œˆs?œD¬?œ à?œŽ?œ¨?›·´?›Š¶?›µ?›¹°?›£Ã?›Y>?šñd?šÁu?škd?š#=?š-œ?šC‚?š ?šÈ?š8r?™å°?™e)?™<î?™nc?™‘=?™w5?™Å?˜£(?˜~?˜F£?—Í?—#Ÿ?—T?—­ë?—Ôq?—¡C?—gØ?—“f?˜"è?˜7Š?—´:?—+Ã?–æJ?–¾§?–Yp?•³9?•C?•:â?•0·?•%t?•u?•éÓ?•äÃ?•?}¿ù?}Ps?}V?}Ú?|íÃ?|q ?| Z?|4?{Â"?{¿/?{úJ?{Èê?{Ön?{ÿ#?{e}?z¡;?zp"?z•?zx'?z?yÚ?y²m?yŠE?yp?x,?x-?w•ß?wgž?w~ ?w ­?wx2?vÆ2?vQA?vYµ?vê?u²?uNà?uÐ?uC¾?u؆?vf?u»v?u¬°?uÆ?u ‹?táË?t ?t5?sCÿ?rÂ6?r_~?q«?nûs?mÓ?n:?oŠS?où„?oâ?n$ì?nT ?o ?oP?oßg?o”£?o9?o0?nÁÛ?nC9?moú?l{Y?kÏ?kÖZ?l@î?llÖ?lL%?l4ÿ?l-û?lT?k ?kI?k=y?k‰Æ?kB!?j—˜?j?m?j\¯?jBA?j -ÿ?iµ?i=?hÇ‹?h—ÿ?hØ?h¯ä?h8?g²P?g$‹?f¹—?g˜?gpŸ?g@?fèþ?fz?eÛ¼?e?e™ -?eù?e“?dÚ3?dç?dÅ‚?dŽ¹?d|I?dK?c?*?b”'?að&?aŸ|?bn?bú·?b’l?aö°?a(?ak2?aT¼?a80?aî?`¸v?`.ù?` ƒ?`7ô?_þ*?`‰?`3?_w?_?^Òî?^•?^oˆ?^Ë¢?_e?^Ÿ?^JÎ?^QY?^Í?]Ìt?]ƒ?];Æ?]*Þ?]/¼?\Ýý?\—¸?\x ?\5—?[˜e?[ ?[+ä?[n?[]?Yðj?Ys?YëÂ?ZA ?Z˜ÿ?Z¯–?ZLµ?Yáp?YÕ]?Zz?Y¹ú?YkÑ?Y4Ò?Y)–?YUt?Yšp?Y|L?Y,ª?Xõ™?Xád?XØš?Yw?Y^?XýÌ?Yÿ?Y —?XËž?XŽ?Xo®?X&?Wåc?Wã?Xa`?X¸Í?Xo†?X ?WÍ×?WÚ?WìÇ?Wœç?Vþº?VxÝ?V"Ž?V7}?V‹?V­—?Vt:?VS.?V0?U£b?Ul«?UŒP?Uo?T”ƒ?S¬–?Sãü?T¥?TH¿?Sû?T -!?T?T ??Tg?Sœ,?RÍý?R‹ ?R\?R;X?QÈÁ?NþÆ?FÛ?;3?5Ú?–?=ÔL?><.?> •?=¹G?>…?>”+?>‘×?>s ?> ?=x?=‹ñ?=Ó@?=Ï:?=̲?=Û€?=ñð?=zY?<݆?<Ø?<¤Z??3Å?3½?4t‘?4IV?3Q?3_?31W?3)?2‡d?2„?1÷s?2&Ô?2 ?2EË?2™Ý?2–b?2?2£d?2§ç?2%A?1ÜÝ?2&¸?1è?1–?1—p?1Õ6?1Ò4?1[ì?1/–?1Z?1J˜?0î#?1X”?1»Ã?15E?0Ö¼?0¿y?0‚?0cF?0iÈ?0ŒŸ?0V»?/«?/¢?.à(?.£Ú?.¢?.áb?/:2?/eÕ?/3¸?/Q?.ž•?.•!?.˜3?-¥?-$:?-g-?-Š¿?-Iô?-U??-1Ž?-¿?,ìÔ?,ÁÃ?,…>?+ëE?+J²?+<4?+kµ?,ž?,ƒ.?,n?+Ô?,¯?+ª#?*ûÇ?)Ö¨?) ³?)™?* -Z?*ˆ?)v5?)2ˆ?)ÿ?(\p?'½;?'oþ?'?'á ?'ìÖ?'>Ý?$£¯?ÚO? ?Ïœ? %Ä? âI?"ñ?#N?#Ù'?#Ü ?#\ ?#&û?#™?"Ý ?"œV?#?#=Ò?#·?#¨?"ÞÊ?#0#?"ô¡?"ÝÞ?#è?"ÛV?# ÷?##p?"è*?"÷¤?"Ù§?"y?!É_?!ÛÚ?"?"d¨?"d?"6Î?!êº?"-Á?"i?!4È? ³ý?! -V?!"p?!+Í?!Vñ?!{? Ü?r9?£"?°î?Ñ? V? —? б? °¢? Å? ¸í? “Í? Kv? P? Iã?Áõ?Hs?jÁ?ÚO?F‰?>?HÖ?v ?Ñ›?#?Œ×?*?Ä?ž?òú?è?ü‰?‹¦?ÇÆ?Fq?ª?R?Î#?sç?ëÆ?D³?‘?R?¶?±X?:ã?¾Z?ûF?õe?÷ƒ?Ú?°À?£??ýE?ô?|œ?à?àç?ƒe?N~?bZ?U†?‘ç?©?Ù?yo?&‹?é?í?“œ?‡{?W0? -?‡ÿ?²m?‹‹?,ý?k?0?$õ?çñ?ï«?ò›?¤Ì?wñ?¿ ?Ä?†3?<é?W¿?ëá?‘?Ù ?öÐ?Úš?‡V?¨H?áÍ?Dz?@?dK?D&?œ®?Žè?U^?i?¥ ?s#?ÐV?d?}¨?´? ‘?S??‹?1µ?€?gý?Ð6?Eâ?û=?‰?Àß?ù?KW?BÀ?xÞ?O{?²?¥²? -?û?Ïw?*?Ø?Æd? ‡? ›æ? ½ñ? -Ù>?±ý?Ü"?·!>ýq¥>òÖ4>äÌ>ÒÄ¥>Â%q>Áè>Ó®H>è'>õ›S>þ­?6? ?è¡?Q?³±?Ì'?†À? kq? ó7? èt? 6A? ‚? Ú$?@ë?R²?'í?Ë? §? MÌ? á? û?[ú?„ß?L? ´L? Dþ? NA? "? 2¼? oá? õ? ¥Õ? ÂØ? w? /? ¾D? àÃ? "? 'æ? ñ4? ]÷î>û)R?ä ?¢?7¬? –?9x?1?.‰?ð+?×X?j?Ós?8 ?N?9×?"@?Bx?;=?IÜ?ÿ?à?ô#?¥÷?òÉ?m²?nO?œ-?pS?R¥?^û?o?ÀY?N¾?Ÿ@?Då?s‘?š?{?ƒ»?sp?ã?;û?¾¬?U?Eü?|ú?FÜ?ù\?ò?är?Ç?êÒ?ºI?–Ï?·c?¸ª?ƒ²?7?©?Ià?7Í?ÑØ?~?s~?3ú?C?5è?‹+>þmÌ>þ¯º?cü?¶ø?—ú?`È?B›?#?Ý? Ï>ÿ®Î>ÿÄ>ÿ(³>ÿ¹_??Ù>ÿ>þïâ>þÆÇ>þªx>þ¼í>þx)>þIÞ>þn,>þS€>þ¿>ýö}>ýjV>üØ>üÍí>ü¸\>üÅ|>üŒ>ü>ü[>ü(«>üÜ>ûÃ.>ûW½>ûC>ûL¤>û'·>úùÁ>úÊT>ú‰ô>ú>ù¨ö>ù°Ú>ù† >ù+Œ>ùL+>ùV?>ù,8>øÃg>øÕ>ø ->øT>øM‡>ø-n>÷þì>÷Æ>÷~ã>÷SÃ>÷:H>÷t>öýú>öÚá>ö¯Ú>ö>ölŠ>öE>ö,>õê#>õº>õá>õ>ôOS>ô>Y>ôh¸>ômo>ô`g>ô9û>ôÓ>óì>ó®ß>ó)‹>òRU>ò:±>ò½´>ò  >ñ¹“>ðõ>ñcÕ>ñã¼>ò¨>òÕ>ñá†>ñ¼,>ñ•ï>ño=>ñFY>ñ!>ðû¿>ðào>ð´O>ðNœ>ðš>ð>ïá„>ï«‚>ï†Ù>ïgÙ>ïC#>î²É>î8™>î†Q>îŠL>íùý>í½>íö>íÈ7>íÞ>ì¬î>ìž:>ëáC>ì7'>ì¶Ö>ì>ìÚ>ì—>ìQÁ>ëÍ,>ëkS>ëØd>ìª>í'Ð>ìfš>ëœÐ>ë–ñ>ëSÊ>ë >ê³ü>ê¯ö>ê!Ú>éìd>ê”=>ëº >ëŽ>éüS>êÒ>êwà>ê0t>éìè>é¬Â>é{>çª7>æ©—>ç¨$>èØ3>èÞ5>è“N>çÉÀ>ç_>è=M>çãÙ>ç3õ>ç ­>çÉ >çá >ç‡F>çÈ~>çu>åv>ã|>ßù>ØÆé>Óbÿ>Ú¤y>ä=>æ6>äÞç>ä«ù>åck>äÍ@>â»›>ãuX>äþ¹>åäŸ>åçÊ>åÆ>ãéÍ>ä€â>åF>äÎ>ä•>ãùù>ã÷>ãMl>âçk>ãk>ã^½>âú+>âÊ7>âZÄ>âh¨>â°>â…†>âx>à×>à\W>á^‹>áÁr>áôŒ>á¹>áRN>á/r>á#]>à¹:>à\˜>àTã>à6e>à>ßôü>ßÍŠ>ß“Á>ßn>ßDt>ß&>ß ø>Þä|>Þ|÷>Ý̺>ÝÜ>Þ;a>Þ;­>Þ!3>Þ‚>ÝàQ>ÝÎÆ>ݽd>Ý™<>Ýip>Ý>Ô>Ý' >ݽ>Ýè>Üü?>Üáš>ÜÍ›>ܪê>ÜŒi>Üna>ÛÞŽ>Û>Ú¶‘>ÚŽ£>Ú%m>Ù½õ>ÙfI>ÙA>ØÆ¡>Øz±>Ø+>×ÙF>×Éh>ך>×l¢>×FJ>×>ÖÝ(>Ö¤ƒ>Öj>Ö<ý>Ö/*>Ö*þ>Õ­Ï>ÔF˜>Ô^>ÔÔ‹>Òé¢>Ò­w>Ô_>Ôç–>Ô½Q>Ôn¸>Ô7Þ>ÔG>Ô+©>Óú„>Ó°ð>ÓM>Ó:h>Ó7 >Ó^>ÒòE>ÒÂk>ÒŽ>Ò] >Ò7`>Ò>ÑíF>ѹ=>ч>ÑaÇ>Ñ'ã>З>Í•ï>ÎL7>ÐL>Ðz]>Ð@¿>е>ÏåÑ>ϳî>Ïæ>ÏMl>Ï U>Î÷Í>ν:>ÎzØ>Î;A>Íöù>͵þ>Í¡ì>Íe8>Í">Í ½>Ìáˆ>Ì©±>Ìvë>ÌPQ>ÌBŽ>Ì)ÿ>Ì X>Ëë%>ËÆè>Ë  >Ëw»>ËH]>ˇ>Êäà>ÊÈÅ>Ê©[>Ê‚;>ÊYp>Ê-;>Êi>ÉÕŒ>ɬ>ɤR>ÉŒ>É">Èïq>ÈÊù>Èî>ÈV>È>†>È3Î>È ¿>Çß(>Dz:>Ç‹T>ÇlŠ>Ç=þ>Çí>ÆÓ>Ʋ¯>Æå>Æê6>ÆãV>Æí$>ƽ1>Æ=ù>ÅïV>ÅÃ>Å„«>Ås”>ÅAy>ÄÛ%>Äh*>Ä—>î ->Ãÿ1>Ã’>Ã6>íÖ>Ã>«>ÃC>Ã]“>ÂñÆ>Âó>Àê’>À–ï>Áö«>Š¤>ÂW>ÁæT>Áu@>Á+>Àž>Á>Á L>ÁE%>Á”>ÁŸ@>Á-Æ>À—â>À Z>ÁŽr>Á™¬>ÀЄ>À§ö>À:J>ÀÓ>ÀÄ>Ác>ÀŸ>¿¤š>¿ðÊ>¿·É>¿/Ê>¿‰K>¾ìÕ>¾“b>½©Å>½<>½!¨>½ ®>¼•¹>¼•‘>¼¾û>¼ýë>½yc>½K>½IN>¼cê>¼Ê>¼b±>¼Ò˜>¼~×>»óó>¼#>¼L5>¼ä>»â™>»¼Ò>»hm>»+>» •>»Nk>»# >º¹ >º¤>º§™>ºS‡>¹ñ>¹ú >¹çê>¹Ç0>¹™>¹Fp>¹(]>¹Â>¸ê>¸ÿ5>¸Ö>¸¨á>¸™3>¸Š&>¸kQ>¸+Ã>·á²>·÷>·=W>·¶>¶Ô¯>¶¦Ê>¶„>¶[ª>¶0}>µþD>µÄî>µª>µ‘œ>µfp>µ=ý>µ=>´í:>´åb>´ÏX>´µ>´“#>´l¡>´E)>´¹>³ú6>³Ð>³¢È>³uÚ>³FÌ>³é>²Ý¿>²¬>²pÿ>²u>±ó?>²P>±ë>±Ç—>±¡j>±s;>±DÙ>±Þ>°ô>°ÓÚ>°®m>°Ž>°q‡>°N‚>°&5>° -¯>¯÷ë>¯Ù >¯µj>¯‹P>¯Z>¯©>®Ì¶>®Ö2>®Ïë>®«ö>®’>®wX>®UX>®)Ö>®Ï>­Û2>­°É>­>­m+>­Ló>­!“>¬éÕ>¬œ.>¬e">¬v¶>¬fk>¬=>¬ >«ä>«ÁJ>«y=>«.±>«5>«‘>ª¸Î>ªkë>ª|ó>ªd·>ª'„>©Ëý>©z£>©i>©PŠ>©->©(µ>©¡>¨ç’>©=>¨á©>¨Ç“>¨ºÏ>¨›ì>¨qÖ>¨kî>¨Ó>¨n{>¨UA>¨>I>¨ -‘>§ûN>§¥Å>§B¯>§0>§&@>¦ß>¦NO>¥—ä>¤Ÿž>¢ð>žß(>;×>Ÿ’é>£É>¥ -!>¥„+>¥±>¦Q>¦²>¤H>£M]>£©²>£Œn>¤*q>¤f¼>¤>¤­¥>¤ì|>¤Ÿ]>£ó±>¤¹>¤¯˜>¤H’>£æX>£%m>¢]>¡d4>¡»X>¢:@>¢{À>£$û>£Hk>£s>¢y>¢ß(>£JV>¢£Š>¢²ˆ>¢¦Þ>¢é…>¢Yc>¡Gë>¡Â†>¡NÔ> Øã>¡ó>¡£%>¡ÇY>¡ri>¡‹ ->¡b$>¡N>ŸËÈ> Œ> “H> £k> ?>>ž®‚>œ—¤>œ³Ž>œÏõ>²Ï>ž‹ó>1>œb>œ=œ>šÅÄ>˜úò>–&Â>—­+>œË®>›_G>˜>›s>V²>šúe>™}>›2">œ¦Ö>œQ>›Œ+>œ¶>šé'>›´ç>›«3>œ-+>šÖ>˜"#>šš>œˆ®>pÍ>œÞ[>$À>²>ü¸>BN>œ,>›p~>›Ä>›&L>œÁ>›µ>›—>—ó@>–<È>–Ýk>˜vË>šF¿>™Cš>™9£>™,>šð\>œEB>œ»>œ‡œ>›]è>™—Æ>—àæ>˜¥É>™¿>™¦ >˜ð>˜±U>™[>™>¾>— @>—Ù>™a{>™s>>—m>•‰<>—A0>•çã>•YÁ>˜!B>˜¥û>˜¬Ã>—vñ>–)@>–Q;>–V*>•LÌ>–¹>—{>•…ë>•b³>•ì4>•Åù>•š2>”5->”wž>–*ý>—Sç>–óe>•Õ >•ùR>—%%>—'8>–Î>–•U>–a>–^„>–8Ÿ>•çî>•{>•ÐI>•v¹>•g>•˜–>•h}>•±>”q™>”? >”};>”%d>“óÓ>“©5>“@->“(ù>“>’ü†>’ÚK>’§6>’T>’f.>’Cš>’ y>‘¾a>‘šš>‘ö>‘ˆ>‘v=>‘i'>‘HI>‘2>‘%>‘ù>á >©>†O>r0>Ca>-b>">F>å¿>ÂK>žf>bO>$ã>½>S> >Žì¨>ŽÉb>Ž«­>Ž™">ŽÚ>Žd¶>ŽQµ>Ž95>Ž€>ï2>µ>|Õ>q>Wƒ>W;>Iè> >2>ŒúQ>ŒÑ¤>Œ’>ŒU>Œhª>Œt[>ŒPÖ>Œ>‹‚Ø>ŠøS>‹Y)>‹œÄ>‹M?>Š½º>‹>‹%¤>Š°7>ŠF2>Š\ü>‰x¹>‰1p>Š0r>Š_%>Š,˜>‰þ{>‰óÆ>‰ÉY>‰Ä>‰>‰1>‰K‚>‰#1>‰]>‰„>ˆä>ˆv>ˆ;Í>ˆ[&>ˆLå>ˆ3>ˆ;·>‡ÍZ>ˆi>ˆ¥>‡¨ø>‡(’>‡(Q>†ù÷>†æ>‡Ž>†µ>†çh>†ëO>†=Á>†*>†N1>…ò>…ø!>…YÝ>…>…cr>…„µ>…a>…\½>…B*>…‹i>…NŠ>„M>„T>„„Ÿ>„ªº>„†B>„Êÿ>„}B>ƒ–>ƒc>ƒÞ>‚¶Ò>‚²Ï>‚Ïþ>‚ðË>‚ÒE>‚Y>‚]¢>‚‘û>‚>f>ÅÒ>Ù >ûÊ>z$>Vk>N >€ù6>€åò>€Ÿj>€Fƒ>ÍŒ>€ï>€‹Ð>€Hr>€(g>€0Ž>¬¢>D>€ˆ>83>~¹ >}·„>{¡°>z£E>y§>{5>}_F>|v>{ >{²}>}uõ>~mO>~Ô>|Ðr>}ä>|M>zjà>zmc>x×À>xQÆ>yHæ>w†`>qØÄ>n?Ô>s’s>xú>zXî>zª >y½_>y2A>w)%>tüã>tg>t˜ >tx¡>tìæ>vB+>wòñ>xÃ,>y>|>x¸>xP1>y*>y|l>xg>w®þ>vhÒ>s:>pÎd>p>n‹L>m>l¯¾>lÆ«>mnò>n¡K>nýÅ>oá™>rŠJ>t¤>u‘˜>uÉ¢>v>uÃd>tÆK>tn>s8 >q¬>o°Ø>l`@>i’½>eÿ>>aÿø>`ñ>_à˜>bȇ>f É>h¤!>lP>nƒ>pG—>q÷>r–X>ræF>s=¿>sr>s4Ä>rðj>q¾»>q>pse>oÊ>lœ9>k=B>iÊN>g´O>d*e>_ó>\eÁ>YrÚ>W‰>Võ®>XÜç>]ˆ>a -+>d $>fËÄ>hdì>j#~>lG«>mÁ>m¹>nÛÊ>p ò>p¢¶>qµK>qû">qÇS>qs>pì>>p&>oHc>n=Ó>lç¯>kË…>jJ>g¤>e>a:6>]ïÞ>Yàs>Tˆb>NìÝ>Jh>>HP‚>JË>OBE>T<>Y).>^D>aro>cY«>dPº>f…â>iˆ+>l3>mêú>nR§>nøè>p À>p¶¬>qMh>qŸ;>rl>q ­>p¸Â>oÛC>pË>p9>p(f>on•>nH“>nT>l¾¯>jëÛ>idä>gâi>f>>d:©>a’G>^(‰>Z/o>UÚ,>Q?>Jéw>Dã>>†:>>*S>B§V>ICÒ>OIî>Sð…>X>\#“>_BY>b$U>dL>e-ò>f$Î>fVƒ>f*g>f>h²G>j0å>jƒ>k+ê>k7 >khv>k§4>l%N>l0>l ƒ>l0>lj>l->lF>>l a>k¥ >kX8>k–>hÎk>f%8>f:¢>f©ø>fO>eº}>e4k>cìà>cRa>bO >a›>_q>]Ó{>[«ó>Xðp>Uï#>Rcü>N/œ>Iš>B×J>:ü>3%4>/«>4ÿ >=mþ>Dá >JÒø>O.˜>R«>Uuï>W6>XT†>Y‰>Zg­>Zþõ>["W>[:->[,>[>Z·ê>Zc\>Z5>Z>Yú4>Yئ>YfM>X«…>Y!>YCP>Yg>Xõ‰>XÐ>XRå>VÊú>WE>W¸7>WÍ¿>Wx>W[é>Wr¹>WP>W#R>Vô8>VƬ>Všx>Vjå>V9>V >UÝ~>U­O>Uy>U>ª>U -½>TÞ›>T«">Tr‰>T8(>Sõ >SµÃ>St¥>S)'>RÛ†>R~Ð>R>Q>Q >P>N$>M4 >L Ò>IïE>F„à>AÄ>;ln>3:>(½Ä>${ >,Ì>6>=–>B]ó>F-·>HÃý>J‰û>KÈì>L`>M >M`>M”ø>M³>M¡j>M1>M–õ>M‰Ú>M—5>M…Q>MfÈ>Lä3>K{>J/ù>L%è>L»$>L~d>LX}>Lz>KI˜>JÝ·>Kx->K´×>KS.>JÞø>Jm¥>J¾>J5>Góº>IEÂ>JcÝ>JF>Iée>Iö>IÔ>ItQ>He§>H®º>Iš>HÿØ>HÌm>H“>GÚF>HC%>H)k>G¼>Fò€>Ge@>GŠê>Gaø>G3ª>G ¬>Fá´>F¤š>FgŽ>FYÃ>F'ç>EÅ>E²1>E—u>E„ÿ>E^Ì>E1:>EÊ>DÇâ>DqÂ>C‹2>BÅ>BÀÕ>Cbß>C›³>C9S>Bjo>BÃF>BÓ>BŽ>Bö>A³ü>A…ã>@>>>–|>?|>>ï©>=‘>;Q5>7p÷>3 >1,X>+Œz>#‹H>jö>ó>¥ê>'e>-æ«>2Ï»>6[Ø>7‹X>7 ¬>:–t><)><7†><’å>=Ö>="ò>;X§>7º>8y¹>8§>;rÜ><ù›><Íó><Æ©><Â'><©ç><‰'>< Œ>;°;>;xD>;¡Z>;U%>;#ª>;$Î>:Î>:V¶>:ÈÃ>:¼X>:‘Y>:d÷>:?ô>: ø>9ü>9ÎÌ>9>9!>8Þ¼>97>8ÿú>8î‘>8ÇX>8‰>8.‡>8>>84=>8ä>7å>7Ä >7žó>7we>7L¥>7)‡>7V>6Ûd>6®>6‘>6b,>6 €>5õß>5éý>5Ò<>5ª ->5{Ë>5 ¯>4ý>4ìÙ>4J÷>4„„>4¤b>4J>4X¿>3Ĉ>2"Æ>3%>3; >0-B>0ø >2éË>2÷^>2÷M>2Ôë>2¬?>2>1×…>2è>2Ø>1áØ>1Áë>1°š>1‡[>1ZS>1/*>1O>0ñZ>0ËØ>0¨®>0”>0D˜>/Ç•>/Xû>/¿“>/¿U>/œC>/tÄ>/O+>/)R>.ý§>.¡à>.k‡>.|9>.ZW>.$—>-áQ>-º+>-þ>-q>-Lª>-:>,Ñî>,ï>,`y>,<@>+4>*) >*Öæ>*ê>*P‹>(ã¢>(C>'b>&ž>#ðÓ> öÎ>šX>¨>œš>8·>a>eõ>xÙ>±ò> pß>#K>$»Ô>%â>&§B>'$«>'yÉ>'¦÷>'Ä>'ßÓ>'êÂ>'äº>'Øœ>'Êm>'»*>'ž>'|X>'s.>'Xô>')ý>'b>&¦ÿ>&Ÿq>&¿ÿ>&£º>&†->&mt>&D>%òf>%lœ>%û>%bÂ>%F}>%'ô>"z€>"Ö$>$ì¶>%Ö>$á:>$¿~>$¯>$y¯>$I¢>$+­>$ F>#¾î># />#B›>#‚´>#XA>#;o>#‚>"îp>"Ý>"¿À>"Ž=>"Yr>"Pd>"5…>">!ò >!Æ«>!¦Œ>!~Å>!a…>!KÉ>!*Š>!‡> ä¥> Äï> ¤D> ‚U> `> >P> ¼>õ¾>ÔÍ>¡;>|T>sO>SÛ>.•> -ª>Ý©>~w>€ç>†ô>j.>IO>( >C>ä‹>Ä">¢ý>*>^ª>>í>…>ü©>×>>´â>">t®>Rƒ>„>¸5>œß>ºM>£†>ƒú>]`>M >&V>í“>ÆS>¨{>—>…½>ið>B›>þº> Y>²`>[v>VÇ>`ü>;Î> U>³q>È5>Ãà>¬Õ>„‡>RÄ>#Ý>÷Ú>ñÐ>Ö…>Á#>…n>;¨>5À>%ˆ>,l>ƒ>¾»>™Í>‘><Ç>pQ>”o>˜>ÿ>±e>à>-r>j8>+M>ä >/>>Ü>ûÐ>ßí>´›>„û>,ª>ž>Þ>§>î>à >¾å>’a>h>ø¦>æ;>Š>Ó>ä¸>¿ä>£¹>w(>R>E”>&Ú>>èë>Èî>¨ª>‡š>c>7…>Ç>Ò>ßH>­I>NK>T>GÛ>>òK>Íþ>ŸŸ>k_>56>î¬>¦q>W> ËÁ> e·> Á> •4> -×¢> Mh>q>Ð+=þÌZ=òˆU=á ¼=ÞûÌ=ïá¸=ü5Y>kÐ>ƒ`>¥ä> Û> -> -³(> ¼> R´> 9> [“> ¹[> Áz> À²> ¶¡> ¨k> šŽ> ‰> u> `¾> I’> q> -¾> -p'> -š> -EF> -E> -Ž0> -u_> -Â> Ú -> -H> -x> ôÍ> Ùù> ’ > %É> l4> ia> Fp> %9> >øJ>Ö>¿™>¥U>…Ù>^è>H}>2Ë>>ò#>Ü\>À{>£å>†É>k€>I/>,l>ú>ù]>Û1>Â>¦>>‰Æ>m>Pa>2z>Æ>û)>ݲ>Ãx>¦ô>Šá>lý>Q£>6ü>6>úK>àJ>Ä>žž>ƒ->pÛ>VÇ>9O>Ÿ>þ$>æÒ>ËR>¯>“€>w¡>[N>?O>$B>«>ìí>ÑH>´¸>–ª>}q>a¨>E•>+t>>ôw>Ø£>˜A>`;>Àæ>ct>O5>16>Ç>ûˆ>áê>ºF>ta>|X>tê>ZE>>Œ>"í>º=ÿÚò=ÿ£»=ÿnÙ=ÿ8­=þÿc=þ»ú=þr&=þ:e=þ(=ýò¡=ý·v=ý}ÿ=ýK¦=ý3=üã‹=ü°$=ü{=ü6=ûÔe=ûÀ<=û¦b=ûo§=û5‘=úüÌ=úË|=ú[=úc -=ú2=ùúï=ùÅD=ùÝ=ù[‘=ù)T=øõ‘=øÀ¬=øŒ=øV=ø9=÷ì¬=÷¹z=÷ƒ=÷Kƒ=÷¹=öÜé=öˆÍ=öHŸ=ö'ü=ö„=õ×B=õ¬g=õtö=õ3=õ Ë=ôÚ=ô¨Â=ôty=ô@é=ô!=óÑÞ=óž;=ónE=ó>ñ=ó€=ò¨ =ò`ø=ò^=òB=ñõ=ñŸ=ñ‰Q=ñj?=ñõ=ðÓM=ðÇX=ðœ=ðod=ð;Š=ð$=ïÏ’=ïTS=ï(‹=ï4 -=îéN=î°i=î‡=îoÕ=î==î8=íÑÞ=í•Ï=ír=íD=í=ì×^=ì¤Y=ìtÜ=ìEŸ=ì³=ëÙ-=ë®Á=ëxä=ë2­=ë =êÈo=ê°’=ê…9=êS'=ê"Ñ=éñ$=é¿#=é]=é[2=é$x=èó±=èÅf=è’O=è^o=è'Ù=çî}=çÍ—=çŸ=çme=ç92=çú=æÙý=椉=ædç=æ5q=æ@=åÛú=夢=åP°=äÒý=åŽ=äËE=ãß”=ä/œ=ä =âB‡=â_á=ãbd=á®Î=á¦`=ã#]=ã º=âÛ=âªå=âL!=á‰=áèÈ=áá|=᱿=áƒÖ=áV¦=á*+=àù‘=à›â=ßâE=à<”=à7•=àµ=ßÚ5=ߪ9=ßsh=ßCÝ=ß š=Þ¡Æ=Þ=E=Þw$=ÞQ =Þ'­=Ý÷i=ÝĶ=ÝœZ=Ýoµ=ÝAD=Ýk=ÜáC=ܳa=Ü‚R=ÜE¾=Ü!†=Û÷}=ÛÈ:=Û’7=Û_ø=Û:C=Û -ú=Ú×9=Úªo=Ú~´=ÚLÖ=Úw=ÙìA=Ùº—=Ù‹¦=Ø®=Í =΢=Ø' =ئc=Øw<=ØG‡=ØÄ=×ß%=׺ß=׌=×\=×+ð=Öú¼=Ö°–=Ö|=Öe¸=Ö+=Õû6=ÕÑg=ÕŸ·=Õj,=Õ6=Ôþµ=ÔÄ =ÔŠF=ÔQ†=ÔÕ=ÓÏÈ=Ó‡)=Ó7=Òáã=Ò·=Òx=Ï»=Ëi=Í&`=Îfý=Íb@=ËGW=ÈGj=Ä ›=¾>„=¶J=¨b·=¥æ =³”E=¼ê=ÁÌ==Å|5=Æ´=Ê!Ž=Ëë5=ÌÁj=ÍL€=ͨ=ÍÞo=Îà=Î%=΋=Î2=ÍôI=ÍßN=ÍËþ=Í©x=͉©=Íq:=ÍN¨=Í+è=Í=Ìá=̺j=Ì”˜=Ìcí=Ëðª=ˉ"=ËmT=ËÃ!=Ë£+=ËwÇ=ËOY=Ë'}=Êþ=ÊÒø=ʧ2=ÊrÑ=ÉôÓ=É]ƒ=ÉÄ‚=ÉË…=É©u=É‚<=ÉXã=É.¦=Él=ÈÙú=È­ƒ=È„>=ÈZú=È02=ÈJ=ÇÚE=Ç°¥=džŠ=Ç[z=Ç(=Æ÷G=ÆÚä=Æ°÷=ƈþ=Æ_N=Æ4ó=Æ -´=Åß“=ŵÇ=ÅŒî=ÅcO=Å7ü=Ä÷Z=ÄѸ=ĺ=ÄŽð=Äcô=Ä<¶=Äž=ÃÑ =ñÜ=Õ³=Ãk‡=ÃCƒ=é=Âðæ=ÂÅ:=Â’$=ÂWæ=ÂF8= F=Á÷ =Á´Ã=Áu=ÁgE=ÁJï=Á&=ÀýÝ=À×j=À¬ò=Àtº=ÀP/=À1h=À š=¿àm=¿¸>=¿ŽÝ=¿cÁ=¿;o=¿´=¾ëË=¾ÁQ=¾”²=¾q=¾I3=¾À=½ö£=½Ï8=½£J=½o=½*D=½Ã=¼íÿ=¼m=¼•q=¼‰Â=¼a=¼3o=¼Ù=»ë%=»Âà=»š@=»qí=»Cª=¹N×=µg÷=¹Ðß=ºjp=¹†û=¹}=¹rò=¸¤Ì=¹«ì=¹¦À=¹2ì=¹:½=¹|= ˜=¡v= óÂ= Ð)= §ò= ‹Å= k¶= <¸=  L= &=Ÿâÿ=Ÿ¼÷=ŸˆÇ=ŸmÐ=ŸX×=Ÿ6ñ=Ÿˆ=žè8=žÐß=ž®é=ž=žk=žHi=ž#’=ž%=âÿ=À€=ž¤=}[=VD=œàç=œãw=œõQ=œÎÕ=œž¥=œŽ8=œl|=œLÔ=œ)±=›÷‚=›ã1=›Æ)=›¦H=›ƒö=›P±=›# =›Ê=šÿV=šÞM=šµ/=š\¾=š2=š9Ë=š5=š¬=™õ}=™ÔÈ=™³­=™’¬=™qÊ=™PÏ=™/¹=™™=˜íÙ=˜ÍA=˜¬=˜Š*=˜j°=˜I¦=˜(m=—ó@xVU@wŸl@w_½@wÁ£@xŽÅ@yR@y¯œ@y2@y -œ@xM@w™q@w1t@w3<@w‡d@wñ@x5-@x(#@w£@v©c@u¨‘@u8Ë@uvS@uäb@v“@v@v2ú@v„æ@vÛ@vù@vºý@vÓ@uQ¯@t´¢@t@tÊ×@u@u°@tOû@ráû@q‡@oo±@n½¥@o"û@pZ•@qêâ@sRH@t7]@t&@tŠ-@tby@t2¯@sæ¡@sTS@rsF@q~e@pÔ‹@p±¥@q ö@q£u@r;M@r“µ@r‚þ@rí@q‰œ@q0@@qQ@pÈâ@ptC@pMÞ@pŠ'@q«@qk°@q“Ã@qy–@q+¨@p¨D@oºþ@nq@k{~@i³@hV@i'Û@kOë@mM¹@n~@oÀ@oF„@o;ß@o!®@nó²@n‡F@mµˆ@l @k´@k>Ó@k@jóÍ@jŠÒ@ië@@iW;@iý@ign@j&Ã@kn@k‰·@khž@j©Õ@iʵ@i„8@jC@jÓL@kc@jÌá@jUž@iàì@i$ì@gú˜@fãÔ@fà@fò–@g?@fòh@fdu@fN"@fÿ¿@h)@i7À@iÎ@iñŽ@iãÛ@i׋@iË@iŸ#@i@@h¿¦@hK¹@hV@gÒ4@g»¬@gÑ@h ³@h9@h6@h¤@gœŠ@fû@f(@ed@d|ê@dÆC@eŸt@fBÔ@f$j@eT[@ds„@d*ç@dlf@d{´@cÞÃ@bü®@b¨ƒ@c,@cø–@dJ±@cÓ(@bÂâ@a d@aX@aXE@bû@bÍ“@ceã@cæê@d>Æ@d[x@dB,@cûY@cv @b‡š@an@_S @]eh@[©O@ZÙ@[.#@\‰!@]çì@^Ã+@_D¯@_—@_P.@]ã @[ŒW@Yô@Y‡œ@[[@@]­ @_@_#@^ ì@\z @ZÏ9@Yþ@ZCÐ@ZíÁ@[e^@[ðÀ@\ùƒ@^B£@_?œ@_¸w@_Í%@_ …@_9Ç@^¥¶@^h@]á‘@^‚@^@^Ö$@^«Ù@]×Ì@\?@Z,a@XsŸ@WÒ²@X“@XkT@Xg@Y¤@Z9Þ@[wÎ@\Ë@\£@[ã‡@[ð£@\=(@\œ@\´Ñ@\©@\rŠ@\&&@[â¶@[¸I@[‰@[Á@Yæ†@XPr@W@WE@WúÜ@Xå@Y L@X°0@X5@WŒb@WUÛ@WPä@WSþ@Wƒ@V—È@V ‹@UÞa@V@D$ @C÷j@D; @D¬§@Dü@E@DÑD@Dp÷@D<@C·¤@Cœ*@C’g@Ci @C%æ@CŒ@C1D@Cu‚@CŒ­@CfD@C.Ç@C9@C—@C?@C@BÕ‡@B•î@BCM@Aó#@AÍž@Aßl@B6@Ba@B ù@AùŸ@Aæ @AÆÉ@A†î@A õ@@²ú@@wi@@Šs@@¹’@@¯ë@@L@?¹@?E¨@?/¿@?|ù@?ñH@@Dj@@_q@@T7@@45@@z@?Æý@?’@?y@?v}@?mc@?B«@>éÛ@>j´@=è„@=˜„@=£E@=ýY@>dp@>Ÿ•@>¬\@> r@>‰0@>pm@>^B@>MÑ@>,Z@=ä•@=vß@=*@<çO@<ö³@= -f@= ·@=@=y@=@<Éè@<@ç@;q“@:Å«@:²•@;@;€"@;š@;tñ@;,w@:ìv@:âÅ@;@; @:þ¼@:Ø•@:¢@:X/@:ß@:Ÿ@:Ä@9ï¶@9ÑC@9ï@9 ¾@94Ú@8°Ø@8‰B@8Ù¹@9?ë@9UW@9U@8„7@8&/@8¯@8"@8 Ü@7ÚÛ@7§”@7_ˆ@7 @6³k@6ƒI@6a’@6i&@6²½@7Ý@7>å@7&e@6éÜ@6¾E@6¬¸@6‡@6-@5Ǫ@5¢-@5Êv@6 @6a@5Àš@5J«@4ø@@4ò9@5Ä@5V@4ÔÍ@4”ª@4WM@4/ƒ@4 r@3Ñ9@3Y@3+µ@2Ùô@2œh@2{Æ@2ys@2˜—@2Ã<@2м@2³4@2}Ë@2E•@1û@1ƒ@1å@0ÅO@0ÂÏ@0³@0bÒ@/ÛÜ@/\Æ@/-@/\k@/·…@0@0>Z@0{©@0»n@0Üy@0à]@0Ö÷@0®B@0Z?@/ö•@/Á9@/êq@0P@0š2@0€u@/ðÙ@/5v@.®f@.kß@.Aö@-ù@-‹f@-EÚ@-Uô@-„•@-Œ‚@-]l@-$ý@-ð@-,@@-Ð@,Î{@,ãÈ@-=Ý@-YÝ@- 6@,·»@,—(@,n0@,;@+gJ@*ú0@+†@+8ô@+ë@*PP@)ƒ @)’@)f@)w@*'±@*Ñ@*û@*±@*‚2@*©¹@*ÒE@*½±@*¡K@*×@+_À@+Ú@+ñn@+ #@++Ž@*Þá@*¾¬@*•@*DÍ@)îh@)Ì“@)ø6@*>ú@*2ø@)Á@(¯á@(*#@(å@'û•@'òÆ@'«º@&õ½@&[ÿ@&i`@&m@&Ÿ@$¿½@#H@"=ª@!×i@"H¸@#vŸ@$²J@%NŠ@%'k@$†F@#ø?@#ø@$Xu@$tÙ@$ è@#kZ@"ÛC@"v±@"b@"±H@#0@##@"Áþ@".Ÿ@!¨ã@!mÅ@!¥š@"Y@"Lº@"V™@"2l@!Å~@!D@ W^@ÈÌ@zÃ@ag@nO@½p@ VÁ@ Û£@!¹@!%@!=·@!, @ êh@ ¬¿@ p_@ ’@ùÜ@ [@ ù.@!8‹@ ç>@ Y¢@°Â@”U@ï@vS@ ä@Ó„@&@aî@)7@_ª@Nm@d²@˪@ OÚ@ œ@ ˜Z@ ‚+@ —®@ ÇK@ Áó@ b%@׃@^@)^@uç@ @ BR@@æþ@Î@Ê@@ô@@éC@ó?@ûj@«@,p@éÒ@ów@F@Qø@f¯@:ì@÷—@ãë@®@NÑ@eá@V§@&d@Î/@dL@6¨@o@ª‘@nÈ@×¢@B¸@Ò’@­¡@ó%@by@u@ó{@S/@;u@´ @";@ ˆ@‡‡@þ÷@ÿ @•=@y@ÿò@?š@:´@‘S@èÞ@i-@È@d@kè@í¿@æ@ñö@Ú@Ùc@wZ@Í@Ð@wË@º,@êÄ@MT@žè@;‘@Í:@!²@$àI@%¦¥@$kÿ@!mí@ì›@´ÿ@+¸@ü@L£@üè@¢k@$m&@*7:@.c<@0`i@/ç˜@-ª@'ú@ ÉÚ@Gy@™l@ -«@ +e@e?@×|@ Ûà@)´A@1IÝ@7IK@;@=Þ@>Ù@S@DCs@Hºê@K߀@M¶Æ@NQò@M°Ð@Ky -@G^ñ@A€9@:Eé@2 @(ÏÛ@¤ @W@ -¿Þ@½A@ªz@ Ð@õ@R•@'„ä@1•L@:®Ï@Bì­@J5@Oý -@T©@X:¥@Z•Ü@[±ß@[õ¤@[ì;@[Î @[MZ@YÓ²@W-K@Sã‰@P%û@K4Æ@D ¨@<Òq@4"@*]%@]Â@µD@ ¨@Ç0?þëÑ@i@ --p@ª@ jÇ@*{ -@37_@;D­@BÛ@I>F@N‚+@Rí@Vá@Ze§@]'Õ@^Ùx@_œˆ@_æ¶@_´Ã@^b@Z1”@T@Lv@DÇ @?Y@=`@@@;g@FnÒ@MœX@S@UKÞ@Tƒ¦@QÞ@M¨™@G˜ã@?¿@6ª|@- ì@#µ@Â@ º½@û?ú~ö?ù­®@Ô%@ $;@v@!òs@,gT@5áB@>Uì@E¥@K¼÷@P¶×@TÇ@Wù@ZE¥@\m@]ž<@^þØ@_ñµ@`k‘@`r°@_ôl@_!ì@^¬²@_9®@`ç˜@bþ @d+@c¯î@b}@`B_@^Ñ@^!@]{ñ@\Pé@Z‰Á@XÊ~@Wp@Vφ@VÒÌ@V«@V´@UI3@TÒ@T– -@TD¤@Sˆ%@RŠ#@Q~@O×F@Lã?@HˆE@Bü¥@Õw@9õø@3¶Ê@,ƒn@$–š@Ø@e@x‘?ýBÛ?íÆ?äßk?ç|?òß“@PÂ@ J%@ܵ@_\@%ñ¾@,´@2Œ@7ˆ¹@;ɼ@?TG@BM.@DÂß@Fv@@GXé@Gáã@H™M@I‡ß@JSê@JÁû@JÔ@J²‚@J”‚@J“ñ@JŸ @Jså@J -Á@IØÞ@Jo@JrZ@JÔ3@Kpô@KÁŒ@Ks@I²ã@H;@FÅ @D¹°@A•@=_@9–{@7Â@8ÄÛ@;â’@?|`@B…»@DÑ -@FQ±@GÊ@GI_@Gz@GwL@F¡G@Dj_@@Ÿö@:üù@3·@+eè@$Ïø@!¾[@#¨@(\@/â\@7VŸ@=-5@A ^@Bðx@Cj&@C†.@Cו@Dc‚@Dù£@EZÇ@Eˆv@E–@Er–@E0Å@D÷É@D»@Dm@D.X@D|@CÌ@CNª@BÙ9@B¡*@B¤w@B¢È@B@B{@BR@BPî@AÆ]@A"r@@¤á@@uß@@|7@@eG@@#@?ì·@?Ù™@?á\@?îŒ@?ɧ@?,˜@>A<@=§y@=Œ{@=H@@~T@á©@ã-@ @ ˆé@ è\@ ò¶@ ª@ @·H@§Ä@‘ @1æ@üO@@ @s9@k‰@f @Nê@û@µ„@ƒ¡@ZŸ@å§@ Í@ž6@Ld?ýÝÿ?õ+Ë?ì`ó?æ4ö?ä'×?ç -Ý?î‰+?øVM@±Ð@QG@vÉ@+˜@«e?ÿDå?ÿN´@è)@àa@ª¬@º¬@i@Ó¤@y'@D@‹@×Ô@%~@‰)@Œ'@j@+ƒ@¦[@8m@+@Q©@­@Š@n@®@_þ@ç_@Ú@Á@c@^$@Ö@ù@!Ð@–ã@?]@Ra@ŽÇ@Dz@ ø@f|@Ý‘@¯¼@ö¼@g¬@’{@£R@éA@Õ@ãù@äé@Ú_@X¡@‹Â@(â@NŠ@£;@öš@ü—@Öã@X@8®@[@ãx@ËY@€e?ÿ†g?ýñž?ý¼?ü¼m?üÁÄ?üvÖ?ûÉÏ?ûÀ®?ü¡W?ý™Ë?þ»?þ -%?ýŽ­?ý)]?ý­?ýì?ý3?ü³û?ûú3?û¸€?ûè5?üÏ?ü+}?û«@?ú¡v?ú½?út?ûG?û„¯?û»?ùêú?ù\?ù*”?ø¸ß?øPÉ?ø?øÉ?ø4?ù†¸?ú?ùl?÷Úd?öÆ–?ö`?õïÀ?õ§?õËn?ö?ö"a?õqx?ô^?ôý?ô{õ?ôèô?õ’Z?öl -?÷?÷yÆ?öè°?õ‰3?ôæ´?ôÂA?ôE\?ó•ƒ?ó+?ó2”?òϳ?ñî;?ñÁ¸?òp?ò?òQ?ò ô?ñ?ðÔQ?ïÔÅ?ïr?ï>%?ð?ð‰µ?ðO\?ïý°?ðh'?ñ<ú?ñk³?ðÄ;?ïñq?ï?ïiQ?ïaD?ï{?ï?ïHó?î¶?íÍ1?íº?íW;?í­•?í–%?í~:?íÈû?î^ã?îÂÛ?îq?í؇?í¨¯?íB?ì^%?ëšØ?ë£?ê&?êdµ?éçU?éW|?éu³?éùS?ê ?éì;?ê"é?ê;?é-?è¬:?éS?ê8’?ê[¤?é—§?éB¶?éò”?êÐ?éyÐ?èô§?é¿?éb¹?è¡‹?ç.?æw…?æj?æ.ª?æ=¥?æq/?åð2?åh?ä°Q?ä¡3?äS_?ä,b?äY?äZ?ã>»?â1C?àÝk?ÞÐ?Üz*?Úÿx?Ú»2?ÛŽr?Ýa+?ß’—?àÉ‹?áâ?áx?áëã?áìœ?á°ø?áu ?ánr?áis?áò?á1?á>[?àÚ?ßÜÉ?ßs?ßÌÄ?ß³?Þõ¨?Þnä?Þs?Þ[°?Ýè?Ý›.?ݱõ?Ýâ?Ý¥á?Ý=(?ÝJL?Ý]K?Üù?ܱw?Ü·à?Ü€ÿ?Ü"?Û¸?Ûuz?ÛŠ:?Û}F?Û`?ÚÇÂ?Úw ?Ù÷ ?ÙÅw?ÚR?Ú -ƒ?Ù¸?Ù7Í?Ø›á?ØMp?ØR(?Øk·?Ødf?×óˆ?×>r?ÖÞš?׫?×@&?×hÜ?׆?×›?×¥®?טâ?×`?×"t?Öê§?Ö¦f?ÖYž?ÖF?ÕÀ=?Õ»§?Õê’?Ö*?Õåj?Õ³:?Õ;?ÔÍ¥?Ô©•?Ô€ ?ÔK?Ô:‡?Ôy¹?Õx?Õ6›?Ô’€?ÓÍ™?Ó@?Ò¹Ê?ÒN×?Ñø?ÑÛ?Ñú?ÑÝô?Ñ› ?ѹ0?ÑêÜ?ÑÄD?Ñl’?Ðÿ¨?ÐÙ4?Ñ «?Ñ„?ÐÇä?РW?ÐtV?Ð7¨?ÏôQ?ϼö?ÏZ³?ήº?Î$Å?͹¸?Í" ?̈??Ëç ?Ë©?É‚¯?ÇŸ®?ÅŽ?Ãm?Á -x?¾J#?ºõ›?¶ý|?²$"?­%Q?©%Ã?¥Ð"?¡[ò?šaÝ?’úE?ôä?“cP?š›k?¡Í?¥e?¨#ÿ?«Õd?°XÑ?µ ?¹=8?¼Žý?¿3¶?ÁtÔ?Ãk?Ä:s?ÅUN?Æy£?Ç)ä?Ç­€?È/¼?È;×?È+±?È8ï?Èí?È( ?ȼp?É7*?É×?Èß.?ÈËG?È×?Éž?É$?É?¸?É-!?È­5?Ès*?ÈÀ»?É=?ÉIq?É>¦?É ­?ȸ‹?È\û?ÇÖJ?Çbâ?ÇŒ?Æqþ?ÅW?Ä2Ò?Á†k?½$X?·ë ?´¸?²ü¸?´°6?¸k?½ ?ÂD?Ä›â?Åt’?Åss?Ř}?ÅÜð?Æ??ÅÝÉ?Å{«?Å(0?Å!'?Å6?ÄéÕ?ÄŒ?ÄJ?ÃþÛ?Äó?Äbð?ÄnÀ?ÄRÄ?Ähå?Äj-?Ãò8?ÃnU?Ãk³?ÃÄ?ÿ¼?Ã_j?Ã_?¿'?Â[×? ?Â1?ÂR’?Áúp?Á—Ã?ÁŠ?Á`ð?ÁŠ?À¾?À^?ÀÌ?À@Ð?ÀŸr?À¦"?À2ê?¿Á0?¿… ?¿m?¿JA?¾·á?¾}?¾ûÝ?¿^@?¿D´?¾£ê?½´h?¼ï£?¼›Ý?¼®Ð?¼ä¡?¼ó0?¼µµ?¼a„?¼KX?¼E?³ÿ/?²uy?±óˆ?²¦õ?´€?¶Óƒ?¸q?¹8æ?¹_ã?¹k?¸õÆ?¸û>?¸Þ?¸nö?·µÖ?¶ñ¹?¶u2?¶Qµ?¶e?¶wê?¶Y?¶@?µÕ£?µqŸ?´÷Ò?´ò?´TÍ?³îÊ?³(,?²A?±Í\?²kk?³Ã?´Äo?´ÙO?´?²áî?²\Ï?²ÉÇ?³Áy?´· ?µo?µ¼?´Ç'?´:¶?³ÖP?³×?³Í¢?³‰¨?³M÷?²ý¨?²zø?²3?²62?²?±ïH?²±?²‡£?²ëÝ?²ëŠ?²ƒ‡?±ì[?±‡?±`6?±%d?°þ -?°éø?°¼)?°¡Ü?°ym?° ñ?¯÷Ü?°Z?°?¯¹J?¯:–?®ð?®¼Ð?®»Ã?®ô&?¯*)?¯+}?®ß,?®nI?®!+?®'“?®^–?®Hi?­Í«?­¡Î?­Éä?­ÅU?­{¹?­(V?¬ã?©í?©u?¨¹á?¨ž—?¨}Î?§Ì>?¦íå?¦’a?¦•/?¦È˜?§7?§¡?§ªG?§£?§ª¦?§™U?§'C?¦W1?¥_U?¤Îû?¥?¥\ò?¥“é?¥ì?¥ûC?¥œ?¥W?¥#?¤íl?¤T?¤šè?¤£î?¤Lc?£˜¡?¢ûR?£d?£;ø?£&W?£/ ?£’;?¤?£üê?£d•?¢Á?¢@…?¢,†?¢A­?¢?µ?¢W¶?¢`?¢/±?¡Åk?¡k§?¡jM?¡GW? üÕ? õÍ? ½ñ? †…? ½œ? ´? /©?Ÿž´?ŸV?Ÿ|Œ?Ÿ¹û?ŸàÝ?ŸÁ?ŸŠA?Ÿ©^?Ÿœ?Ÿ§?žeZ?žHÃ?žâ?¤í?hý?L=?F·?Bw?Gs?%q?œó–?bb?ž¹?îw?DN?œS?›Éb?›äP?œ/É?œŸ?œo7?›Ü€?›} ?›F\?šþ?mö?Qk?Žû4?Ž¡>?Žn?Ž6?àÓ?»™?½ ?†þ?:³?1Ô?? =? Š?Œëû?Œ®ñ?Œ§r?Œ~õ?Œy$?Œ¬ç?ŒÐ?ŒE¹?‹ýM?‹ªx?‹m‘?‹RU?‹Ji?‹,î?‹!À?ŠÎ–?ŠÓ?‰–?‰u€?‰Lð?‰ï?‰®?‰QG?‰d.?‰†µ?‰â+?Š?ŠÎ?Š"Ô?‰¼¤?‰5j?‰>1?‰† -?‰s¯?‰U?ˆžÊ?‡èP?‡ŒL?‡«M?‡ø>?ˆAa?ˆH‘?ˆh§?ˆ¢F?ˆy?ˆë?‡xò?‡\ß?‡±J?‡Ü~?‡¨ß?‡<9?†ù ?†ó4?†Üt?†ñ?‡(Í?†î„?†wy?†O]?†IY?†2?…üÖ?…¶j?…¢„?…¢ò?…›©?…•{?…‰?…V³?…Ð?„ë5?„§/?„y?„³è?… ™?…–?„„Ò?ƒã“?ƒ«w?ƒ¦#?ƒVG?ƒ&|?ƒD×?ƒ_?ƒiî?ƒ;š?‚Üs?‚²'?‚¹>?‚´¬?‚–¯?‚¹?‚t??‚`ˆ?‚8{?‚õ?‚ &?‚>ã?‚ƒ?¢³?5$?€ðÝ?%?#ï? -—?€¬£?€w’?€•†?€­ó?€–º?€˜Ò?€¶·?€§Ä?€kE?€,‚?ô?Íz?Ûi?²š?È?~–?~V}?~(?~b?~‡c?~DÓ?}õ-?}ÿÙ?~?ø?~E?}÷A?}‰Ø?}i?|Þ?|·1?|¨(?|Y?|ní?|.ü?{à?{ª¯?{W˜?{1?zä¾?z§^?z˜=?zˆÍ?z]Z?zC@?z4H?yâÓ?yO¿?x¢É?wÞî?wBè?w?w$h?w;¶?w€}?wy­?w ë?vÙ½?v_Ž?u±‹?u>"?uXè?udk?u‚ò?u¢{?uWî?tàY?tå?tXo?tš?sÌO?sºj?s¡_?s(þ?r -ô?poC?oJ¹?o¥?o[á?olW?oj?o«?o¼ô?o¾D?oµü?ooH?o0û?osA?oŒ2?o.¿?nÃ{?ntL?n½?m¤?lY -?lï?lS¹?kÞÔ?kÀZ?kÞñ?káÊ?kÚ#?k¤Ä?k-?kj?k3‘?jôÙ?jQC?iàŸ?i’[?iN?i&²?há©?hºç?hÃä?hœ¡?hc?hD?gÁÀ?gë…?h ?g¥í?fú/?frœ?f-ã?fQß?fwŽ?f*…?eâ9?e„?ebO?e5,?ej?d±å?cþÍ?cI?cs?cŸ"?c_V?b›?b[”?b›§?bГ?bÿH?bÍê?b7p?a«q?aO?aÈâ?a·w?aX´?Lëè?KŒ=?KN½?L\?Lõ?M)a?Mó?LÉ?Lº?Kö?KÆ#?Ly?MÓ?MØL?M\ ?Lf¼?K|â?K<?K€?K€»?K{_?K™?Krh?J£m?J¬I?K?JX?IÁ«?JL~?K+g?Koþ?K%u?JAÏ?I~ˆÜ?>Ë»?>™ä?>~O?>ŠÙ?>y%?>1ß?=Ñ"?=~ý?=^?=y?=¥>?=±Ü?=0‚?=?=bL?=š?=]Š?<¯??(Èu?(O±?(?'Ø8?'C[?&þž?'Ž?'2™?'d¡?'¸§?'¯¯?%í?!?(j?4™? rµ?!ÅJ?#”?$7!?$¨_?$d™?#æ ?#Š ?#5u?#]ë?"é -?"ÚT?"·d?"Áo?"ã©?"L“?"»Ç?"€ñ?"Yç?"æ9?"šW?"‹?#>…?#•1?#Äî?$ñ?$_?#ÕÓ?#}(?"˜?"Î?!à”?!­-?!«?!>?!Q¡? °I? ¼[?!(?!F?!4B?!†ê?!‡ù? Â?§‚?÷i?ÙÂ?ŸO? ÙÏ?!n\? üƒ? ±•? Òx? Ÿ“? YS?âK?†??Š?èÆ?à ?àû?kW?t4?„û?ÆO?Í?O?´”?ÎÞ?¨$?4?œ?Eo?mm?PÓ?ݲ?`3?7å?û·?vf?ëÖ?“€?ÜÍ?Ê?)t?<?ú?C?¬Ñ?‰¥?˜Ç?«!?œz?u:?zÃ?B¶?æ ?óó?? x?Ò‡?ª+?§?gn?BF?/?M®??ø? ’? r?*t?WT?Q1?)e?ç ?×?#ð?ö€?Î`?¨?hú?=j?:?ù°?ûÓ??ó -?Ò?¹œ?¨?žÐ?Ÿ;?t’?2m?L?œ? ¶?ä¯?¸Œ?¬“?ˆB?fÅ?d?Pr?=ú?ð?ýð?ñ?áÒ?ÕI?¿‘?¨m?‘÷?w‘?a9?QÖ?:??<>ÿÒt>ÿ’ì>ÿJ–>þõ@>þ“H>þ@>ýéî>ýâ›>ýÏÚ>ý{*>ýkÈ>ýX>üÎß>ü4Ì>ü] >ü©?>ü•ô>ü4Î>ûÌ>ûáƒ>ûûô>ûð¹>û²{>ûG>û5Š>û?D>ûc>úòc>úÅü>ú†ˆ>úm>ù¤*>ùªa>ùƒO>ù-4>ùOâ>ùZ¦>ù0Ü>øÇÚ>ø ~>ø«>ø[>øV±>ø5ê>øÐ>÷Ò‹>÷’Ñ>÷p>÷[>÷8‹>÷&6>÷>öÝÇ>ö¾<>ö 8>ö{˜>öRa>ö~>õê%>õ¶X>õ;á>ôu>ônq>ô¤>ôŸ;>ôæ>ôi >ôBõ>ô>óÓ>óJD>òs©>ò]>òà+>òÀÍ>ñ×>ñ€>ñ}j>ñú÷>ò&â>òÛ>ññù>ñÈ8>ñœ >ñq8>ñB«>ñ->ðت>ð®u>ð}³>ðø>ïÆn>ïÁM>ï¯ñ>ï†ø>ï[¾>ïE)>ï¹>îbæ>îT»>î¤b>î >íç>í&>í…>íN>ìp5>ì\‘>ì$8>ëæü>í=>íQÀ>ì̦>ìœ >ìÄC>ìÙ‹>íô>ì·K>ì*×>ì¹R>í%ˆ>ì8™>ëÅÜ>ëˆ>êœg>ê‰Q>ê±Á>ëgß>ë"Ó>ê†,>ê„h>ên¡>êÓ>ëN>ë€>ê°ò>ê/é>éÏÉ>éMò>èËŠ>è=>ç¢r>çûë>èÏD>é•w>êDŒ>ënö>êˆþ>é¨>éØî>é™ ->é@­>é'>éG>èŬ>èß>ç>ä‰3>à„¹>ÜÁH>ÙÉ*>ÙÅ7>Þ"5>â -á>ä.ˆ>än->äU>ã8Ù>á‘»>àÖf>ã >å~!>å°>å@ >ãXØ>âbJ>ã„b>ãÞß>ãeZ>ã2>>ãù>âp>â1G>âV>â– >ân±>â=>âo8>âl[>âb—>âL>â†>áí—>᢭>á½Ï>áÝ6>á H>á6¡>àÇ/>à`>àPù>à[˜>à1ã>ßùô>ßëâ>ߨ`>ß| ->ß=’>߬>Þìu>Þ½¢>Þ‚:>Þ^ï>Þ@ >ÞÑ>ݳû>ÝÓ>Ý…>ÝkÝ>Ýcx>Ý@6>Ý>Üæ›>Üè>Ü£7>Üvu>ÜEÉ>Üê>ÛûÙ>ÛÙ/>Û·b>Ûk>Û„Á>Ûjk>Û:Ú>ÛŒ>ÚìJ>Úuý>Ùå’>ÙO>Ù^R>Ù4(>Ù>ØÙÉ>سŠ>ØŒ·>ØYJ>Øõ>×Åô>×·">׋>×``>×:„>× S>ÖÝ5>Ö¨Ø>Öq×>ÖCå>Ö(É>Ö Š>Õ~î>Ô›>Ô-:>Ô¢K>Ò¶¨>Ò}d>ÔUï>Ô¸¸>Ô•>Ô'¦>Óé§>ÓóÄ>ÓÕ¯>ÓœI>ÓMŸ>Òé³>ÒÕ½>ÒÑù>ÒºÜ>Ò“#>Ò`ƒ>Ò+ˆ>ÑýÃ>ÑÛ¹>ѸŒ>ÑŽ>ÑT«>Ñ >ÐûÀ>ÐÀV>Ï¡ù>Í°>ͨ)>ÏÖ>ÏÐ>Ï¡4>Ϲ>Ïc›>Ï>q>Ï ½>ÎÒ>ΟY>ÎuO>Î;Ã>Î ¥>ÍÜ >Íš}>Í•P>Îñ>Î1Ñ>Î>ÍÛË>Í©/>Íb=>Í>ÌáÏ>̼>Ì‹j>ÌTë>Ìb>Ë×[>Ë— >ËW:>˶>ÊÖ|>Ê¢Ç>Ê>>ÊVà>Ê'$>Éün>ÉÏ>É™ý>É`>É/{>É -£>ÈëÎ>ÈÊN>ÈŸq>Èyç>Èiá>ÈL‘>È,>Çÿ³>ÇÒ>Ç ˜>Çœ'>Çp>ÇYR>Çg¦>ÇI²>ÆÛ3>Ƈ >ÆS>Æ-h>Åö®>Å×Ó>Æ,v>Æ(>Å·®>ÅSö>ÅV>ÅØ>Ãï¬>Ã)Ü>ÃÁ>«ã>Ât>ÁÄÈ>Á>Á«ª>Â}>ÁÿÞ>ÂoG>Â#‘>Àåa>Àlg>¿´š>¿ß©>ÀÜ÷>Áx>ÀµÕ>À_Ý>ÀŸû>À§ >À‹x>¿ô>¿ŸÔ>À=<>Àà=>À÷>ÀP]>À¶x>Àç>¿Î…>À -‹>¿»Ê>¿§©>¿¬>¿Õ#>¿·Ÿ>¿y°>¿˜Q>¾á?>¾¤F>¾Ñõ>¾(×>¾0>¾{t>¾j>½}ø>½]Ü>½r›>½æ>½ùb>½ÁÞ>¾Ò>¾$>½å›>½b >¼è >¼Ëh>¼“ˆ>¼'f>¼@ö>¼µ×>¼û{>¼æ ->¼6E>»Ó >»ûé>¼p>¼›Z>»ÄŸ>ºÕý>ºk8>º¤œ>º©å>º\|>ºG4>º'>¹Ø>¹©3>¹Á >¹²>¹Œy>¹NZ>¹PÁ>¹Be>¹!>¹!f>¹/>¹"Å>¹Õ>¹ ›>¸ïŽ>¸¢>¸6‡>·Êí>·q>·?W>·q>¶Ðw>¶Ÿ¾>¶mX>¶@y>¶ €>µÆÍ>µžÐ>µ~„>µK>µ>´ÝO>´¿@>´·“>´¥>´‰>´e¬>´AT>´>³ö}>³Õ>³¶ù>³ž…>³†¸>³hÎ>³Gb>³6È>³$!>²ý=>²±>²šý>²°o>²™b>²vf>²S>²,â>²Ï>±Ýn>±½Š>±žt>±vA>±Qs>±-à>±Û>°×ç>°µl>°š–>°t+>°H®>° >¯é0>¯­>¯a–>¯jˆ>¯dl>¯A¤>¯$c>®ÿI>®Ò¡>®¡¬>®t\>®I@>®º>­æµ>­» >­šd>­vœ>­BÔ>¬ó•>¬¿ƒ>¬ÕÌ>¬ÅÔ>¬œº>¬r>¬P‹>¬5t>«öÛ>«µý>«Ä²>«¸J>«kã>«;!>«Yc>«O~>«1á>« *>ªÑy>ª¯ï>ªŠÑ>ªwÛ>ªaÿ>ªâ>©Ô­>©Õ?>©Ìµ>©¯>©Nœ>¨åo>¨Ìr>¨¹B>¨£x>¨Ž¬>¨—>¨˜>¨ªê>¨4>§Î>§Õ‡>§“æ>§EB>§q¹>§þh>¨“’>§ã”>¥ ;>¢ÿ>£$Ý>¥Dj>§Š…>¨½>¨o©>§" >¦tô>¦sv>¥ð•>¥¯ >¥NŒ>¥T>¥!x>¤žÑ>£Î5>£T>£­ˆ>£Ûî>£¿>¤ \>£ÝÓ>£¬ ->£©ã>£e>£_R>£h±>£>£»>¢â>¢l€>¢$‘>¡¸”> Ï@> à,>¡€š>¡µ>¡ôÝ>¢"_>¢Š®>¢Ÿa>¡™!> ðC>¡'­> Ôt>ŸO]>ž¿>Ÿ’/>  ›> ¬>žÿH>hA>œ°ì>ŸZÒ> t -> xv> #T>ž‚ò>'>ž: >·f>ŸSÐ>žïŸ>›¿›>œRi>ê>›–‹>˜š­>–X˜>š³>žY>›‚N>™Ö=>˜M>Õ}>˜êQ>—2Ù>›¼®>žO >›gØ>™nï>™žƒ>—½ý>šH>›"Ý>›Å>—Õú>˜j>œ"->ž3A>Ÿ >ž|%>žÐ>œë\>œ*Õ>œ $>š¾í>™|£>™8 >™\>›>›è ->™‘ä>•71>“œ>’l¦>–Þ/>šß…>™À¾>™Y>˜ˆŠ>™]ó>™‘Y>š1;>š?>šuó>™£'>˜E>šON>›–¹>›ÒP>›wy>š¦>™Ô>— ]>“”ö>•˜ý>˜Ào>—Å|>“8>•I>˜Gð>•4u>–õ·>šÎð>› ]>šƒ>–*!>”/,>•;ƒ>”‡F>”¨ >—²¥>—DR>•ŠŽ>—‡>™?>˜ 3>–Cƒ>“œ>”tY>–´|>—¡6>˜Ku>˜AC>˜ú >™Us>˜›>˜%l>—rù>–×b>—'¾>–þv>–a2>—ô>—§^>–þ;>–ÖÖ>–§Þ>–9y>•Õ°>”÷1>”Úœ>”æJ>”nm>”/ˆ>“ì€>“…>“Qÿ>“I >“>’òß>’½G>’Ž>’lü>’C>’Ý>‘¯M>‘†>‘‚¯>‘iŽ>‘]l>‘Z¸>‘>¦>‘)ë>‘I>ýÀ>â>¯¹>ƒ> >S›>=5>,þ>í>ñ>ÊÝ> 5>[>x><>?>v>ŽäÉ>ŽÁí>Ž­Y>Ž¥¡>ŽŒÿ>Žq]>Ž[>Ž;i>Že>ïÂ>ºæ>ˆb>ž>j(>p.>gB>EÃ>0u>&?>Œò¦>Œ˜Ü>Œk–>Œ„>Œ”Ì>Œt½>ŒB6>‹¥Ö>‹>‹aE>‹™3>‹Ba>Š­">Šñ>‹»>Š¡V>Š8ð>ŠO/>‰\->‰>‰ðN>Š>‰ÛÓ>‰ *>‰…’>‰[L>‰¨>‰ h>ˆí>ˆ 6>ˆ˜ß>ˆjÏ>ˆ%ò>‡øì>‡©c>‡^Œ>‡hð>‡\¶>‡%Ù>‡ J>‡ >†Ü6>†¹/>‡ñ>‡O’>‡ç>†Ö>†zÜ>†Ñ‡>‡M>‡8l>†4>…´µ>…»Å>…€>…÷>…ik>…x>„Üü>„UÔ>„À>„#¹>„¤º>„xO>ƒ±ì>‚ßt>ƒ:M>„¸p>…Ñ>„°V>ƒLŒ>‚òL>ƒ¥C>„¬Œ>… ¬>ƒ‹¸>¿§>nV>‚/>ƒŽS>…!I>…g°>ƒ•ì>øD>9w>uZ>‚<>‚VÍ>ƒ.'>‚áN>Ï>€á;>€gô>€Gœ>€bF>€fk>€{¼>†¬>ƒ‚åÑ>´x>€{>|ºÄ>}Žœ>€ì>~Mu>z}{>xUV>y¦æ>|åW>{¦Ì>~Èá>!È>}Œ#>˜d>€ðO>€>C>zJ>vÉë>uïZ>y5Ä>~îò>hí>€¢>{×)>Ö~>‚zZ>ïÏ>`>|i>vÒ!>vx”>xî¸>x>>uâÉ>xñ.>}¸3>€¯¾>€pM>'—>~M>¡—>Ù°>‚.>}½õ>uíH>q/æ>q±ç>rM€>q£C>pp£ >rbì>wh>~üÒ>·–>~â§>yúX>xw>yÚË>~g¦>€>vQ >n¢¨>o=>oõæ>o“Œ>o­">p´ý>p´_>q9þ>pU¯>okþ>o^è>o"Þ>sm>zØ>y¡>u#o>rÚ>q¸.>uψ>zËp>z%>q$º>j¶>k¸´>môe>o'ê>p¸T>pÊ >p^°>o•U>n|Õ>n|0>mÑ>mn>m˨>lgì>jh>hJö>gôÙ>ls¥>suu>sÓ…>m³—>j²>iþ >mÈ">t·k>sÒŒ>lÕš>gƒý>fS­>hzö>jàà>l_±>m×w>o¸>oÄÁ>p© >p8x>q ?>rS·>rhù>pªÎ>o>>o«¤>n88>l6>i•î>hU>f->c˜ß>a¬W>d.V>k˜»>näv>h—ú>b/Ö>_±C>b§>g«>läº>kR€>f5â>dþR>e¾9>f´Ø>iÐà>mu…>nwþ>n¯Š>n}>nª{>n–ñ>nÄ,>o¿g>p@s>oç>>pB—>pí[>qÄ6>q>Ä>qãë>q‹¤>p+F>nCl>mžÐ>lÖ<>k©>i÷Ü>hy>fÐU>dIT>`ác>^1@>]b>aqú>gtú>fCÉ>]í¤>Wû >W†¿>[>b¾*>gW>b¼P>]Xl>\»o>_ó§>b`>ca†>d¼o>fh„>h'n>h…£>hŽâ>j‰õ>j±Ç>j´>k–5>l%„>l}g>lmE>m 6>kÞæ>jË>kÈç>l7š>lª>jš>iÅ>i‘>j:Ì>jÈ>j[Ê>hÛÛ>hô˜>h«>hÒo>hé>gle>fˆ¨>d“þ>b°O>bHÎ>aÁ>^ØX>\ü‹>Z<î>WàÊ>ULÇ>SEå>Te‘>Rž@>JP>Bè>><>AÑü>Ip>POª>S5Ë>T'>V6¡>Wë>Y Ó>Z¢_>[÷]>\µt>]%x>]OÎ>]=ì>\óg>\Ší>\‡>[¶±>[~>[_M>[B8>[ x>Z­r>Yñ‘>ZgÊ>ZŠ@>Zc>Z<>ZV>Y˜l>X3>X^÷>XüÕ>Y}>X¼S>XŸü>X¶ï>X”>Xg>X7¯>X ß>WÝh>W­>W{ß>WN->WR>VîÚ>Vº@>VŽ>VKS>Vï>Uë)>U²;>Uw‚>U4•>TôX>T²Ø>Tfé>TÓ>S»‘>SJ/>RËa>R?’>QA >OZP>NhÕ>M<Ü>K$>G¯›>Bç—><†x>4*Â>)»±>%r>-Ð ->7'>>4#>C‚p>GWï>Iò>KºÃ>Lû•>MÃ3>NA¤>N•>NÊT>Nè¥>NÖÙ>N‚>NÌT>N¿&>NÌ•>Nº–>N›ß>N…>L9>K`:>MY>Mï9>M²>M‹ý>ME‘>L{€>Lý>Lª[>Lça>L…%>L@>KžB>Kï>Ke`>I ž>Jt¢>K”l>KE_>K<>K&>K¾>J£x>I“6>IÜ·>JK<>J.O>Iú—>I< >I>Ip>IV >Hè—>Há>H‘M>H·0>HŽ>H_m>H73>H û>GÏ…>G’>G„>>GR>Fî¡>FÛ°>FÀË>F®:>F‡Í>FY÷>F,C>Eð>E™_>D±s>Cê6>Cåæ>Dˆä>D >D_>CŽþ>CèZ>Cø4>CµV>C4ÿ>B×x>B©>A_Q>?µI>@œ,>@ü>>+>=m >8…>4($>26õ>,Ž >$b>QÓ>Ôº>”¦>(`ÿ>.ì[>3ÜÏ>7nB>8Ÿ‹>84>>;¯;>=35>=RÁ>=®©>>2`>>?>8Ï ->9R>9¼æ><Œï>>ú>=ê>=â»>=Þ3>=ÅÎ>=¤Ý>=€å>=aO>=&…><Ê«><’_><»³><=F><>k>;¨‹>;o>;áÖ>;ÕY>;ª>;}t>;X9>;9>;ñ>:æg>:¤Å>:8%>9ôî>:1Ä>:^>:Ú>9Ýf>9žÂ>9C¯>9S\>9In>9#Ý>8ùÑ>8Ø•>8³D>8‹z>8`z>8=&>8Á>7îŽ>7Áf>7£Ò>7tŸ>7s>7°>6û¼>6ã×>6»i>6Œä>6!>6 ê>5ý>5ZE>5”)>5´7>5ë>5h">4Ó >3.Õ>4 ‚>4H¾>16_>2Z>3÷>4­>4œ>3â>3¹>3+">2ã$>3 ã>3Á>2í†>2Íi>2»ý>2’€>2e4>29Ë>2Æ>1ûž>1Õã>1²„>1‰->1MØ>0Ð>0`Ø>0È >0ÇÍ>0¤†>0|Ë>0Vù>00è>0û>/¨©>/qÿ>/‚Ê>/`µ>/*¤>.æù>.¿˜>.£A>.v>.Qs>.°>-Õþ>-ƒƒ>-cÞ>-?n>,[>+)>+×û>+ë³>+PÖ>)áÇ>).>(^q>'š>$ç†>!é>†>ŠÑ>s5>1>ˇ>??>\É>½>!bN>#ûž>%³¸>&Û±>'¢ ->( 0>(uÍ>(£@>(ÀŒ>(Üq>(çq>(á`>(Õ0>(Æë>(·‘>(šL>(xa>(o)>(TÇ>(%‰>(»>'¡Æ>'š->'ºì>'ž}>'€Ã>'gå>'>P>&ì>&eŠ>&‡>&[¢>&?2>& {>#o>#Ë.>%ää>%ú$>%ÙV>%·h>%•f>%q0>%@Ú>%"¹>%$>$µV>$Š>$8H>$xÂ>$N>$1>$ô>#ãž>#Ò>#´¨>#‚Ú>#MÀ>#D¤>#)>#ç>"å¿>"º>"™Í>"qÊ>"T^>">‚>">!ø×>!ÖÂ>!¶Ü>!–>!sÞ>!Qå>!/r>! -¨> æt> ÅQ> ‘q> lS> c@> C> >ùþ>̹>l÷>ok>u‚>X‘>7€>>ô>Ò$>±Š>4>n.>Kz>+> -ô>èå>ÃB> ³>z¹>`>=¿>ÿc>¢Š>‡ ->¤¤>º>n>G,>6½>Î>Ö¶>¯;>‘6>€1>nD>RM>*½>æv>‡‡>™©>B<>=†>GÊ>"d>ñ£>™:>®>©Á>’”>j >7û>Î>܉>Öv>»>¥€>ip><>K>û>è>ä¿>¡“>|m>t!>Û>Q2>u…>ñh>áH>’¨>bÛ> í>K> Æ>Ä>½>ø7>Ü>¿õ>”a>dz> £>ôu>î¬>à`>à§>¾§>9>pr>Eá>ÕÏ>ÃJ>øè>å>ÁÄ>œ¹>€d>S>.7>!±>É>ãÕ>Ä|>¤O>ƒÚ>b˜>>G> >ù'>Ý >¹J>†ÿ>'r>-½> ù>ñö>Êè>¦d>wÀ>C1> ¶>ÅÂ>}>-O>¡"> 8ý> æ‹> g@> ¨> ->Ñ¡>–†>%ã=óõL=â`f=àKX=ñJ²=ý°ß>0>LI>r> å&> -ÞÞ> ƒà> ï> $\> ßz> -H> ‹> “È> ’ÿ> ˆß> z”> l¢> [> Gl> 2z> ,> ëÄ> Žæ> @z> j¯> X> /> ^°> E¹> -Ðm> -©{> -ê> -×-> -Äf> -©j> -a> ô*> -;> -8(> -> óš> ãf> Æg> ¤> a> rõ> SJ> ,> ‘>ÿ¿>àÝ>¾¶>¨Î>ŒÃ>p>Rº>7H>Ã>÷Õ>âC>Äy>¦ >ŒÐ>pÝ>T;>7P>>ük>áŽ>ÄÇ>§$>ŒÂ>p>SÕ>5Å>B>ÿs>á€>Âf>¨>>‹Û>f0>J•>8'>ì>H>Ûa>ÄÃ>­O>‘¥>u©>Y>=v> ù>Ð>éš>ÍÙ>±ò>–">yh>[->AÍ>%Û> ž>ïV>Ó»>¸>œ>[E>!j>‚¦>&(>Ë>óŸ>Ù>½ >£Û>{û>5®>=±>68>j>ÿˆ>ã¿>Éd>­û>’6>w>\^>?Ž>§=ÿñ -=ÿ¸õ=ÿ’=ÿpÆ=ÿ5B=þût=þÈÏ=þ˜=þ`=þ,c=ý÷=ý± =ýOZ=ý;=ý!=üê=ü¯—=üv|=üDâ=üc=ûÛÓ=ûª–=ûs=û= =ûe=úÒÍ=ú E=úl4=ú6ÿ=ú=ùÌ5=ù“˜=ùaÀ=ù.A=ø÷Œ=ø¿¥=øŽ‘=øPd=÷ûÊ=÷»;=÷šg=÷t·=÷I3=÷=öæT=ö¤ =öz‡=öJ=öì=õäT=õ°w=õtU=õ@Å=õ Ô=ôÜ—=ô¬û=ôv8=ôÈ=óÍ´=óËH=ó€‹=óa=ó.l=òôÈ=òÕ‡=ò‰Ì=ò=³=ò1«=ò+=ñÙ3=ñ¥ =ñlP=ñ8p=ð¼x=ðo=ð›ÿ=ðPÒ=ð˜=ïíò=ïÖ¢==ïib=ï7¾=îûT=î×m=î©$=îuÛ=î;Å=îs=íد=í©*=ívó=í<=íj=ìÛ;=ì”›=ìnC=ì)¼=ì¼=ëæ"=ë³Ä=ëƒ%=ëQ-=ëâ=êìÑ=êºZ=êƒN=êR>=ê#­=éðI=é¼=é…3=éK€=é*i=èûŽ=èɦ=è•$=èd¤=è5`=çÿ›=ç¿š=çÜ=çir=ç5ß=æþ4=æ©Ä=æ+S=æ`3=æ#=å6|=å†ü=ånF=ã—=ã´ˆ=ä¸=ãj=âùï=äy)=äac=ä0á=ãÿý=ã ª=âÜ|=ã<¼=ã5d=ã`=â×2=⩽=â|ÿ=âL=áíá=á3,=áŽ=áˆü=áXÔ=á+=àúÌ=àè=à“Ö=à]A=ßðÊ=ß‹³=ßÅè=ߟ—=ßuú=ßEn=ßn=ÞéÕ=Þ¼í=ÞŽ7=Þ\=Þ-¥=Ýÿ}=ÝÎ%=Ý‘6=ÝlÇ=ÝB=Ýõ=ÜÜ¡=ܪ=Ü„)=ÜT˜=Ü ‰=Ûó|=ÛÇ=Û•V=Ûf±=Û4/=Û;=ÚÓ=ÙJÀ=Î?’=ÏØù=Ùlå=Ùìh=Ù¼ù=ÙŒü=ÙKØ=Ù#þ=Øÿ=ØÐn=Ø ,=Øoº=Ø><=×ó§=×¾Ø=רX=×mZ=×=6=×)=Öá-=Ö«R=Övõ=Ö?9=Ö5=ÕÊ=Õ‘=ÕQö=Õ…=ÔÅx=Ôtì=Ô:=Ó¼z=Ó=}=Ðó¨=Ì2å=Î[=Ï–=ΗP=Ìy==ÉtÌ=Å4¡=¿\Ì=· @=©`=¦ß°=´¢€=½)è=ÂïÞ=Æ¥b=Çß=ËQ¹=Í=Íõˆ=Îp=ÎÝ–=Ï:=Ï:å=ÏH>=ÏH¥=ÏEF=Ï*5=Ï=Ï®=ÎÞó=ξõ=Φa=΃›=Î`§=Î<™=ÎÏ=Íî~=ÍÈs=Í—=Í#Ž=Ì»j=ÌŸr=ÌõÁ=ÌÕš=Ì©õ=ÌJ=ÌY2=Ì/…=Ì.=ËØ&=Ë£w=Ë$»=ÊŒˆ=Êô!=Êû/=ÊØë=ʱx=ʇá=Ê]d=Ê2ê=Ê8=ÉÛ~=ɱû=Ɉy=É]q=É1F=É=ÈÝ#=ȲÊ=ȇx=ÈT?=È"®=È!=ÇÛõ=dz¿=ljÑ=Ç_7=Ç4¸=Ç V=ÆßK=ƶ4=ÆŒW=Æ`Â=ÆÀ=Åùå=Åâ =Ŷ¹=Å‹{=Åd=Å7¨=Ä÷Ë=ÄØW=ļ=Ä‘™=ÄiY=Ä@A=Ä?=ÃêQ=öï=Ã|Y=Ãj=ÃDf=Ãì=ÂØA=˜Ÿ=ŠN=ÂmÍ=ÂI5= G=Áù›=ÁÎã=Á–V=Áq”=ÁRž=Á*•=Á*=Àؾ=À¯=ÀƒÂ=À[3=À2;=À =¿à]=¿³|=¿ª=¿g‹=¿=Ú=¿~=¾ìÙ=¾À¨=¾Œ=¾Fì=¾4P=¾ -M=½ˆ=½±9=½¥y=½|‚=½N¤=½,Ü=½í=¼Ýk=¼´Ž=¼‹þ=¼]v=ºe²=¶xò=ºè}=»‚õ=ºž*=ºå=ºŠ=¹º¦=ºÃR=º¾=ºI=ºQy=ºS =º2±=ºþ=¹ÝŒ=¹··=¹·=¸»I=¹8A=¹d=¸ô×=¸Îu=¸¦=¸~´=¸W=¸0<=¸=·Ñº=·¹l=·“d=·f&=·=X=·¸=¶Ì§=¶»=¶§ -=¶{Q=¶Lj=¶*À=µü=µÔ¾=µ½…=µ–š=µk£=µ@)=µ=´ñâ=´Ðp=´¥Ä=´që=´\´=´:$=´¶=³í#=³ÅÐ=³Ÿ>=³z7=³SÊ=³-„=³¨=²¾}=²»=²yß=²kÊ=²H -=²!û=±û«=±Õ˜=±¯¢=±‰Š=±cg=±=`=±Ã=°ìb=°Ë =°¥s=°y¤=°V®=°4ª=°ò=¯é =¯Ã’=¯Ô=¯w…=¯Qc=¯,ñ=¯€=®â=®¼ƒ=®‘}=®`È=®Dy=®&=®x=­ØÎ=­­c=­ŽÃ=­kß=­Dh=­!æ=¬ý=¬Ør=¬±Š=¬=¬ii=¬C#=¬=«øA=«ÕË=«±6=«Œe=«g†=«B=«o=ªóO=ªÓ=ª¯3=ªŠI=ªHo=©²4=©ÿØ=©ù=©Ôb=©®Ð=©†=©V›=¨¡=¨Ò=¨ô=¨®Ô=¨…7=¨Œu=¨j=¨FK=¨"=§ýõ=§Ô‡=§©æ=§ƒE=§Yê=§á=¦‹=¦ä¯=¦Þ?=¦˜-=¦F›=¦_=¦DÄ=¦*æ=¦‹=¥ä¼=¥¿å=¥›ê=¥yã=¥V’=¥3R=¥Ù=¤ì=¤É,=¤¥Ï=¤~î=£Ù#=£—=¤ƒ=£ôÄ=£ÏÁ=£š=£€t=£h&=£DÊ=£!¦=¢þ=¢ÛY=¢I„= ®¨=¡,= .=¡‰°=¢Þ=¡åõ=¡Â'=¡™´=¡}\=¡]=¡-Ø= ü"= óð= Ó˜= ­W= xØ= ]¹= H = &‡=ŸõÖ=Ÿ×X=Ÿ¿Ü=Ÿ³=Ÿ{ª=ŸYt=Ÿ6™=ŸŠ=žñí=žÐ–=ž­ã=ž‹Ô=žjY=žC=Ìù=Ï=á‚=ºÌ=ŠT=yÎ=Wß=8=°=œâ5=œÍÆ=œ°’=œ=œmû=œ:i=œ =œ-=›è“=›ÇY=›ý=›E=šø=›!ß=›=šþŒ=šÝ+=š¼D=šš÷=šyÅ=šX±=š7…=š==™ôë=™Óú=™³1=™‘Ä=™oµ=™P =™.Ð=™ e=˜×Ä@yh†@x°Ó@xpÞ@xÓ0@y¡4@zeU@zÃJ@z£½@z”@y_+@xªÑ@xBa@xD,@x˜°@yÐ@yG9@y:!@x´p@w¹º@v·Í@vG‹@v…W@vóß@w#E@w$4@wBÎ@w•@wëŽ@x Ì@wËh@w-@v`Š@uÂÑ@u›“@uÙ@v"µ@v6@u]»@sî&@r¨@px@oÅ>@p+@qcõ@rõý@t^ï@uE@u+@u˜,@upM@u@N@tóì@t`ü@s~÷@r‰@qÞr@q»e@r@r®A@sFÀ@sŸ‰@sŽÀ@s3@r”K@r:Œ@rm@qÒ¼@q}À@qW0@q“¼@r Æ@rv>@rž}@r„4@r5ï@q±ú@pî@o =@l}@j þ@i—@j)I@lS»@nS»@o”á@p'Ä@pN³@pD@p)µ@oû†@oŽ¢@n»ý@m¥W@l¸C@lB@l œ@k÷7@kÈ@jí…@jXÝ@j^@ji"@k)J@lê@lÆ@ll‰@k¬í@jÌ×@j† @k±@kÖ’@lö@kÐ@kXY@jã&@j&V@hú¹@gâÁ@gr@gñ”@h>j@gñe@gbÖ@gLj@gþÌ@i)d@j9?@jÐ%@jóÚ@jæ@jÙ»@jÍ?@j¡@jA¢@iÀ¡@iL4@i~@hÒ(@h»‡@hÑ @i ç@i9ô@i6d@iÌ@hœD@gúˆ@g-@f K@ey1@eÂÛ@fœû@gA@g"„@fQ@eoÀ@e&Ó@ehš@ewù@dÚ[@c÷L@c¢Ä@d&ï@dôJ@eFÀ@dγ@c½@@b™‚@b ×@bQ@c™@cÇý@d`õ@dâ‹@e:È@eW™@e>1@d÷@dq.@c¶@bù@`I³@^YÚ@\›×@[µ#@\ #@]|Ÿ@^Üî@_¹ @`;2@`à@`F½@^Ø @\~¾@ZŽ:@ZwÉ@\Mq@^¡Ê@`L@`|@_,@]mw@[ÀÐ@Zîµ@[4Í@[ßy@\Wš@\ã–@]í~@_8 @`6@`¯z@`Ä>@`—n@`0>@_›‰@_¡@^ÖŒ@_½@_‚Æ@_Ì-@_¡³@^̼@]2-@[D@Ybœ@XÀý@Y*@YZG@Y|@YÿL@[*Ð@\j@] Î@] @\ÖN@\ãz@]0S@] @]¨€@]œ¢@]eð@]7@\Õ}@\ªá@\{å@[ù–@Z×@Y?G@X ‡@Wþ»@XéS@YÔù@Z@YŸo@Xö»@Xz_@XCœ@X> @XA½@X @W„·@VõÝ@Vʃ@W(÷@Wà\@X‘@Xç§@XÓ†@X‡-@XKX@XP>@Xu%@XMB@W¢ñ@VÙø@V‡¹@VÉÐ@WJ]@W·R@Wîò@Wï)@WÎ,@W£Þ@We@Vñ5@VT[@UÅq@U7C@TS@S>Ó@RÔ7@SˆÆ@T¿:@U©±@V&t@VlÎ@Vu@V[@VB¹@UàŽ@Uv\@U1Š@U *@U%Ü@U+"@U2D@U=@U>=@U(L@TùÐ@T­k@T%¼@SI @RG@QŸï@Q­¾@R6@R¨X@R´2@R„®@R}÷@Rʺ@S6ö@Szý@S€³@SZm@Sž@R¶Z@R-"@Q™'@Q=H@QHo@Qœ¥@Qób@R#@R©@QÆ0@Qj@PVî@OàÏ@Oì@PN@P½A@Q Ì@Q,q@Q ˜@Pêm@P‘L@P1Þ@Oó*@Oßn@OÚ9@OÄê@OŸI@O@Op›@OlŠ@Obk@OCõ@O¦@Nä@NÌÆ@NÅÙ@NÂé@NÃ2@NÇ›@NÇi@Nº @N£Ý@N‡ß@N_"@NÃ@Mˆ±@LÂÏ@Kþ¶@K–ü@K«v@L ø@LnU@L¬Ã@L°N@L,@L>™@L@L/@Lô@Kÿ@KÙŽ@Kªš@Kfo@K €@JÀ@J¨â@J¬0@J„6@JD@I—#@IO@I@@IR @IŒù@IîJ@JH/@Jmº@JO‰@Iæ¶@I$ß@Hª@G§@FÌi@G]Ì@HGk@Hç¥@I *@Hß™@H£–@H‚”@Hr»@HD#@GÛ±@GQí@FÊ¿@FLÕ@Eê˜@EâÀ@FQt@Fò¤@Gi¦@G”@Gwj@GH@FV€@E„i@EÏ@EDB@EÒ8@F0q@F†@E‰h@Dý0@DÏÈ@EÉ@E…Î@EÕ›@Eà @Eª’@EIÜ@Dݪ@D»@Dt#@DjV@D@Í@Cý]@CÞá@DÈ@DMQ@Dd•@D>@DH@Cì@Cñ@Cñ©@CÙß@C¬¥@ClÆ@CÊ@BÉG@B£˜@Bµ{@BÜo@Bî®@Bä;@BÏË@B¼@Bœ¼@B\›@Aö1@A‡¼@AKé@A_ @AŽ[@A„ª@A n@@ŒÊ@@Ø@@Ö@@Pe@@Å5@A³@A3Ø@A(‘@Ak@@×{@@š»@@e‹@@Ll@@Iâ@@@¿@@×@?¼¥@?<ñ@>º2@>iÙ@>t§@>Ï@?6¦@?r @?~â@?rë@?[@?B±@?0r@?ï@>þR@>¶>@>H@=àé@=·á@=ÇV@=Û@=Þt@=àÍ@=ä<@=ÕÏ@=šY@=Á@<@ˆ@;“â@;€¸@;ê®@õ@2nO@2­–@2Ý.@2ðM@2áÜ@2¢?@2*@1‘O@0úx@0Wb@/O@-‚Ô@+6ƒ@)—â@)»Z@+j<@-†"@/6ô@0@æ@0³Õ@0Á@0°U@0¼Æ@0în@1ý@1$¾@1‚@1¤@0ÈÛ@0lù@0ÿ@/æ¨@/»@/“­@/ƒp@/†F@/}@/Q:@.׬@-¥»@+Oû@'õ&@$·G@#T'@$Š3@'F¾@)îí@+ɘ@,æî@-|K@-¨»@-z´@- ƒ@,Ÿ0@,Š-@,Õ›@-3b@-Z3@-=@-&@,Ôˆ@,½¢@,—n@,@Ú@+¬¬@*Ä”@) |@(ß@)k@)ð@*ÐW@+_¢@+“E@+t`@+¹@*«x@*$Ž@)ud@(n@&¸š@#è@úø@2 @”@•@ s@"Ù_@$…ƒ@%‰ß@&@&HÖ@&^¯@&‹õ@&¨ú@&›–@&Wä@%³é@$³]@#¨ê@"èï@"¿Ç@#V¥@$V»@%6½@%¼/@%ì@%â/@%¿J@%œ@%ƒ€@%Qk@$™@"ð@ Œî@«@°"@ e@"Ì@$:°@$×@% -@%4@%@$èg@$ÀQ@$¡@$šÜ@$§y@$±@$µô@$ÃÒ@$Ø^@$Å;@$L¡@#M<@!´,@G@°z@J3@(@ˆù@—@~c@ ì@"¦T@#aR@#Æ@#\*@#Š@#!í@#_é@#¡@#Åõ@#»Ú@#„C@#A!@#ì@"¤ð@"t@!0Ý@ jr@ .m@ §@!r<@"z@"gÞ@"X.@!ö{@!‚s@!=±@!+h@!,h@!/3@!(º@!k@ é6@ ¾ó@ ¥½@ ±t@ Ñ2@ àÈ@ àú@ Ù¹@ ºu@ €@@ BÃ@ @ i@øm@ø”@ð(@ÊÑ@•!@k^@Jª@-@*©@H -@_y@Hž@ùi@—º@[Ô@O£@8@Ò¹@AŸ@@™©@}^@"@à3@é­@Ë @n.@E@Êb@Ôq@`@ð«@y\@}p@ ÿu@ 4@î@Ù@”@!´@ªÔ@ÔÖ@w±@ÁI@€Ü@Û°@ø²@%wü@(ï @)ôÚ@(ž@$Û@!¹@DŠ@V×@ß@«@eQ@!I@(,w@-ý@0'¼@1³¼@1w7@.Ôù@)hþ@!9·@C@ ÿ‰@¬,@ iÏ@ظ@~@#€%@,o@2µ@7³k@;EÆ@=4„@=C@;€?@8@2¹£@+y@"#T@î0@ O°@@E2@pú@˜t@?@%…c@.›@4¥=@9®X@=ŠN@@y@Bnw@C5§@BÔÐ@Aªj@?ú~@=‰Â@9Õt@4‡C@-vc@$xc@~@ @~»?ôš°?õ: @8œ@ ìB@Gd@%Gm@.+h@4ñb@:ô@>ø@AOm@C³’@E#D@E9„@C@A¥@@Ñ@A2I@C`@Cýô@CìÔ@C@A™@=ÕÄ@9ym@4fí@.7 @%ã@é²@ ò$@?ffi?ì?øØ?@,Q@P7@!7z@*¸@1jœ@54š@6›K@7@:²…@?ô@E -@H¬{@JÚ®@LP?@M6ª@MpÀ@LìÛ@Km¢@H™@A>Ï@5Yd@&2^@ ?@“7@'F™@5ÔÐ@@B@EOš@F¶í@F@D`~@A«ö@=ÄV@8n@1È5@)ÎF@ Æ@Ð@µ?ô?å­œ?ç„å?ù í@ A½@Fî@!©U@*©R@1D(@6'°@:&o@=ŒÞ@@.«@Aä"@BßI@C¦ß@D–@Eg@EÁ¨@EüÑ@Fr @F½€@FA‹@DèØ@C‘@CHd@D„Æ@F¶@Fâ@FÈZ@F:º@Enž@DI@Cˆ@CRD@B-Y@>Ù@:F@7ò"@8Ǧ@9ƒ7@7Ú @5k@5‚C@8=t@;@;ª@:¿U@:›ï@;Í{@<ÝÖ@<£É@:ÒG@7ö@3?p@.‡5@(·Õ@ «—@ã @Å3?õÿÏ?àþš?Ûúw?é…Q@Ff@É @›©@$ P@+“‘@1[,@5Ø–@9Kb@;Ô@=ª@?#À@@sä@A7@Bj@Bÿ6@CE2@C9ø@CL@Bëð@Bò°@BÌÙ@B N@@ðG@@ é@@ja@A£Ö@B™w@BÕˆ@B@?Æ6@;À@7½ü@67@7[@:f@:Êý@88©@3:¡@-‹@)‰¶@* -@/?ÿ@6 ´@;GÏ@=cA@<œ>@: -ƒ@8+ò@9í@;ˆÒ@=š±@?ì@@q@@‹@@Šþ@@on@@S±@?ýF@?,[@>b@=ZR@=ˆà@>?Û@>çG@?Cí@?;@>ªÑ@=¡*@@:Eâ@9ÓF@8-»@5­Ò@2;×@,ë·@%<@;@{Ó@ü¾@åè?ø–?ßÔï?Ò@{?ÖŠË?éÍ™@]ô@ hü@{@ íW@'\g@+æ@.é@1Eï@3 õ@4VP@5 k@5gš@6%C@7t"@8ÍŒ@9Ë“@:y›@:õW@;3ß@;)Ç@:åV@:8Â@8Š@5·Ø@3r@3ûj@6¹Ï@8ž@6õg@36Â@1ìb@4¼º@7ל@8Ïà@86¿@6ºý@47÷@/à,@(ó@ èˆ@Í$@ @)xç@1ˆ™@6@7÷»@8°±@8çQ@8Ѹ@8™ü@8^Y@7÷Ñ@6÷X@4·@06~@(^@¼Â@<”@,¹@ PF@ Þ@'¬^@0ð@3æ@5}@5ïx@5}š@4}†@3÷@4¡í@5ÍV@6G@6]^@5I-@3ÁT@2ßÉ@2ð#@3t@48ô@5z@5Á¡@5êr@5ìK@6z@6@5©H@5 @4}‹@4;š@4@”@4\@4wb@4{@4æ@3eÚ@2ÓÅ@2ĸ@3Å@3;f@3q@3¢.@3™Œ@2Þc@0ì%@.­@+´@*ôæ@+ m@+P’@+cé@*u@)U‹@*'@,Ÿœ@.“0@/!Ç@/?Ü@/a@/ Y@-ëc@,k×@+tõ@+_*@+K…@*n§@)QÂ@(ü@)5n@(¢2@&Õ‡@$bð@!Gœ@Ç@ƒV@ÙÛ@«^?ü”!?ãõ#?Í“³?Ä(Ã?Í^g?ã;5?ût@:®@œ/@©@ r@j2@!ea@"½ÿ@$1c@%Ñ%@'?c@(A—@(Ý@(·@&ÀÁ@"Ÿ@@ó‹@½@"È@'(@)’¬@*'y@)¡w@(p!@'d»@&Ñ@&2@%’ú@%œ×@&w­@'§X@(yØ@(tä@' c@&{:@%JZ@#ŽÎ@ #B@ª}@ºë@ -k[@ i[@Eã@~À@$DÜ@&œÍ@&Þ:@&Œ°@&@÷@%ƒÇ@$’@$™Y@%½?@&ë>@'Å€@(fA@(œ—@(l@(«@'ˆH@&Üì@&&X@%}¦@%0²@$óS@#ên@"}Ñ@"yã@$-}@%Öæ@&{X@&[ß@%ã>@%x;@%ÿ@&[@&¥r@& –@&`^@&b¾@&«@&çË@&®>@&§@%ÞB@&¥@&‘@%%@$Z@$—L@%rÖ@&4@&DÀ@&@%¯‘@%_w@%iY@%fÉ@%ö@$Ùç@%à@%Žö@%ÑG@%×Ò@%®ò@%en@%–@$Ý @$ßy@$ÛÄ@$™@$5ƒ@#óT@#ä8@#×b@#“1@#@"´É@"¢l@"±¶@"fÀ@!ä†@!Îz@"'q@"O@"½@!Ut@ @ †2@!•@!Š1@!¡#@!šî@!;@!\Ê@ g:@öŽ@(ú@€é@ÿ*@Ç@4T@r2@ùN@ûl@~U@i+@1@6@ñ@2U@? @` @‘ï@]3@ýÑ@x°@fµ@šÕ@Zã@ñÀ@Ñ5@À@< @îÂ@‚û@¨@«)@‹¬@äž@ë{@ãX@&'@”ù@¯6@¢”@v@ˤ@H@ Q@ï@}½@™@þ…@Þ)@)ü@S…@XŸ@n¹@Éö@x[@éå@q;@7d@ù@…@S|@¥'@ì@}&@ãà@&“@¥@4þ@úS@;ð@‡ @>B@›Æ@‰¿@.Á@Äb@y@€/@nM@1”@l@>a@ò,@C@{@|2@ê@t£@‘Ñ@#@Z)@a9@¢@!B@dû@@ +^@ -ë@}Ò@¯@ÌC?ø42?èëP?ÕÂ?¿¸Ÿ?­Ç¨?ªðk?¹B²?Ï ö?â«?ñ$?ûâ@Á3@@ë @¼‡@|@ -`Ù@ ‰ÿ@@@g8@ °@VÉ@| @—ä@™@r.@O -@B@¶@>Ø@¤@ sP@ ý`@ßš@@A‚@ 0Ú@ ó¥@ ‹Á@˜¬@µ>@=ñ@&¨@ð—@݇@§7@ -]@)â@ ´]@ @Y¸?ðAß?鎼?õ/õ@ÀÁ@ -E¾@ xä@Œ@2¤@ ?[@ úÖ@ ¸ü@{>@ª¿@~ü@8@ úz@ çó@ â¬@ ѳ@ Ùd@ é @ ª@ ø¶@ 4v@ ì™@ Ú^@ -Ý[@ w@ìÿ@@Ô–@ ¦ô@ -V@ -©@ ‰G@ 2a@ Lì@ ¿@@ -¡Ò@ ˆá@ C@ »“@ Éu@÷ @•@¿@CV@yØ@4¤@D`@þÑ@Ý@ºr@ Bñ@ ·@öÒ@ 1@oJ@Ü2@šM@g@®Ô@›í@`­@ª]@Â@“$@_Ç@$@ Q@aI@eš@g8@<­@±™@æÝ@Ñ@à³@Õ?ÿkL?òÑ3?àh¥?ÏŒì?͘t?Þ¯?óc$@È@éÞ@Âê@=>@(£?ý´M?úv#?ÿ ê@K@@µ€@®ó@º£@2P@¦@u@{@™¢@êÏ@W¢@£@­@zo@7@  @÷?@ë|@Ðë@¢Í@bç@% @ñë@Ç@À·@Èí@ç@µ–@Ü@Öõ@¡@çO@Ø«@¤d@‰G@†@@xQ@W'@!B@ÕÅ@‘¤@e/@î€@›É?ý¨¦?üBä?þ-´@x@,Ê@GÜ@7ç@&@Äo@?ÿŠ@.@ ]@ɧ@¾ô@˜þ@}ç@l @GÐ?ÿùÛ?þc?úå?ó’ý?ðÞ?õC?úŸÝ?ýJ?ý”É?ýã?ü÷»?ýn?ýå-?þª?ý’?ûé(?ø™ª?ôq?ðãÃ?òÚ?÷ÎÌ?ûQ›?ûò‘?ùüÚ?öY?ô~¦?öž÷?ùÊn?úÿ?ú´M?úy‡?úÍ*?û2Œ?ûB¦?û3±?û`?ûxJ?úè`?ù|{?÷UÄ?õÇA?öZ¬?÷ï?ø3™?ö¼™?õcŠ?õâµ?÷ ¬?ö«—?ô"Û?ñzÓ?ñâ)?ô¸Ç?öiè?õ[R?òê^?ñ|“?ñ†?òjÂ?óó¢?ô ?ó‚Ä?òÐN?ô R?õ+I?ôaã?òkû?ðuJ?îö-?ï¹?ñLY?ó§Ä?ô³ç?õ?ôó¡?ó¶j?ðrç?ì°]?ìT?ï–;?ò²n?ôâ?ôJ'?óÓ?ðš?îÓ?ìØŽ?ë+?è"å?çñ×?ë™Ù?ïn£?ð(?ì÷œ?çrW?ãÙ¥?å4>?êN?îÛñ?ñ¼?ñ6“?ñ«?ñ?ðî‚?ðK??î­¿?ìw´?ëñÓ?í¯0?ï`r??îÇž?íè??í¸&?î6?î²Ó?îu¼?íW^?ë¨í?éÂ¥?è!µ?çÓ0?é0¿?ëDv?ì¼8?í-º?íÖ?ì¦ð?ìY?ìUé?샌?ìV?ë¶=?êúª?êSŠ?é¢Y?èÝ?å&ˆ?ã]ý?äw?å$Ù?ä]Î?äLå?åY?åb??äª?âì%?áŒY?â~t?äb`?佟?ãYë?ßߌ?Ùá?ÒÈ¥?Ôqq?Ûve?à;·?â?ãMÕ?äH¤?äÙÿ?äõt?主?ä&?ãDŽ?â[>?áÆ¥?á§x?᪛?á/?ázI?álî?áŒ?à7Ç?ßG?ßõ?ÞyB?ÝÄ_?Ý´?Þ*4?ÞW?ÞÇ?ÝrT?Üèš?ܤ”?Ü‹Ì?ÜH¼?Û¿ò?ÛR?ÚQ ?Ù?[?Ø6Ü?Øt?Ø£Û?Ù^î?Ù‡)?Ù0?ØAë?ÕØ^?Òê-?ÓDÎ?Ö>?Øk?ØYf?Øi“?Øx?ØJè?×ãŸ?×l»?×-Ù?×3N?×9|?Öì±?Ö">?Õ_ ?Õc6?Õö=?Öd¸?ÖqL?Ö¯?Õ[n?Ô¦?ÔO&?Ôøð?Õ¢®?ÕsJ?Ô±i?Ô/’?ÔhM?ÕA?Õx4?ÕHK?Ô©2?Ó³Î?Ò8}?ÐÓ?ÐØ=?ÑÔ«?Ò‹?Ó×?Ó@’?Òú¯?Ò‘M?Ò;}?Ñ ?Ð×Õ?Ðœ¤?ÑÙ?ÑÆ&?Ñcé?Ð8Ç?Ð2 ?ÑDû?ÑÞÁ?Ѥ,?ÑX;?Ñ#­?Ѐ•?Ïhg?ÎÜâ?Ï„–?ÐZ?Лq?Ðò?Ðp!?ÐN?ÏŸ;?ÏG?Ï=?έ -?Î8-?Ͳ¯?Í0™?Ì®$?ËÝO?ÊŽà?É,ë?Ç÷ ?Æm‰?ÄB~?ÁN¾?½?á?·Ö¬?°»¸?§’1?›h5?‹aÊ?yÞ?s&Ú?„Óù?”ý‚?¢{7?¬[I?³Æˆ?¹i¹?½Œö?À†ë?ÂÀ²?ÄŒy?Åä=?ÆáU?ǬZ?Çö ?ÇÅ?Ç”É?ÇÌ?È&:?È"?Ç­—?Çj ?Ç•ô?ǽH?DZ‹?Ǥ?ǵ¸?Ççð?ÇÓa?Ç|Ì?ÇsË?ÇÆ?Èï?Çõ(?ǬÂ?Ç`™?ÇC‹?Çd?Çf}?ÆÐÐ?Åó·?Å·ì?Åð?Æ÷?Æ-v?ÆE%?Æ?Å|ã?Ä`w?Âßö?Àw£?ºPÍ?®@?¢iÎ?¢{u?­§»?¸ ì?¾ûÞ?Áü.?Ã9ù?õH?ÃÎ_?Ã¥‰?Ã\î?ÃN?Ãp…?Ãià?Ã?ÂT+?ÁÖ?¿þj?¿nW?¿„‘?À{¦?Áw‘?Á¢ç?Á0é?À™µ?À‹m?Á]?Á#r?Àĉ?ÀMm?ÀÒ?À`?À*_?Àà?¿ËŠ?¿¶Ç?¿žU?¿i ?¿(p?¾ü„?¾ñÞ?¾ßw?¾Ã­?¾±(?¾œ7?¾z?¾Z?¾/¹?½æò?½¿]?½¤ª?½bi?½ •?¼ç ?¼­G?¼ƒÕ?¼UA?»ìK?»¨Ì?»à?»ØÊ?»7º?º#?¸÷A?¸®0?¹ˆ—?ºXë?ºKª?¸”ý?´^¯?°ÈV?±‡À?³o?³lú?³”Ð?´°M?µdå?´Ó -?´€?´(ý?²¯÷?¬¿L?¦-6?§M1?®æ-?´”¬?¶­K?·P¸?·lí?·?¶U’?µ?µ(»?µr?µÕm?µH?¢XÉ?¡©¼?¡Íÿ?¢Á?¡·Ç? ÷¼? `V? Av? _Ô? }î? ê? ¶´? …‹?ŸøÈ?Ÿe?Ÿ(w?ŸdÀ?Ÿ«#?Ÿhu?ž°Þ?ž_ë?ž¿‘?žï?ž¾?ž9¡?QŸ?œÛî?žgã? ( ?ŸE ?îî?a;?Ö?G? d?œ½Ê?œkë?œ’?› O?›ti?›}Â?›™ ?›¢?›˜z?›}í?›F?›1€?›Rc?›8‚?šm?™c ?˜õJ?™Ë?˜ë]?˜²´?˜ê¥?™ â?˜È5?˜$ß?—ó?˜RÃ?˜ºå?˜úº?˜ä±?˜• ?˜„?˜­¿?˜¯ÿ?˜x?˜5?—þ§?—Œg?–þ¬?–¬t?–Vé?•úÙ?–é?–M?–-y?–'m?–?ô?– Ò?– (?–?Å?–Wê?–Þ?•²Š?•ht?•H„?”ýJ?”³¿?”Ï?•°?•u?”ÁŒ?”‹ ?”EH?“ë@?“ª?“`v?“ -‡?’×Ú?’Þ©?“ƒ?“?’ê?’g;?‘æZ?‘Ö??Žüâ?Žð?Žò?Žçë?ŽÖ¯?ŽäÁ?Žä†?Ž¸??Žt»?Ž5¶?ŽÏ?ù?Í‹?™Ñ?Lr?!?,Ñ?2j? Œ?ŒÙC?ŒÄÔ?Œ°O?ŒsŽ?Œ ?‹ÞÜ?‹Yë?ŠÑ?‹ {?‹V£?‹r?‹‚p?‹dŒ?‹Z?‹V?ŠíF?ŠH£?‰É -?‰…¼?‰[Æ?‰º?‰3t?‰Àm?Š2-?ŠMB?ŠFë?Š4B?ŠŸ?‰ÔQ?‰® -?‰™|?‰“;?‰O#?‰ ?ˆöý?ˆt*?‡Ã?†ß?†’„?‡®Ý?ˆpû?ˆ¹?ˆ‹?ˆ! ?‡þš?ˆ¢?ˆ- ?ˆ?‡áð?‡q?‡Aa?†ðÿ?†… ?†U{?†gç?†?…bf?„í=?…9€?…Åï?…Þ?…’É?…6ø?… m?…m?…‰?…"•?…Õ?„ð¸?„GX?ƒƒ9?ƒ€?~:â?}ñ,?~Õ?~6Ì?}ÿ?}¼ì?}Wø?|¼é?|††?|¢v?|ñ?|A{?|$­?|M^?|1…?{¶^?{Y?{c“?{‘W?{?{XÉ?{¸?zʨ?z†q?zE½?yê)?yƒø?y(=?y.?yZ-?yY?xa?w˜?w(?w—¶?x -?wêi?wªð?w—q?wX¦?vâu?v}o?voA?veÉ?v"R?uÃd?u`ç?u'?u(Y?uÁ?t©d?tq?tR?tGÖ?t%*?sÐ}?sSi?q¼ö?n?k¬ñ?mÉR?p ´?q ?oaT?lø†?lÝ?o\?p{b?pà?f ?dŒ§?a[ù?bâì?gy¶?hÞë?g]ä?e+7?eTQ?gC?hÞ?gìÃ?g°ï?fúó?cwî?^æ¾?_§ì?cÓë?fEQ?gö?fñP?fd+?f_?eÆ9?dê?b·K?`Û†?a± ?c\Ÿ?cî^?c”?bè?b._?aV?^™–?\Mn?]»¥?`bÕ?a?`Ç‘?`ŠU?`by?`7A?` ÿ?_¾Ð?_5P?]ÇÙ?Z8?W–?Xë ?\J?]?\‡??[ÙB?[½â?\cž?\Ã,?\nâ?[ÚØ?[.å?ZûL?Zª“?Zg¨?Z>Ç?Yò¸?Y\/?Y ?Yå?Yz?Xøm?Xá?X¿¦?XTˆ?WîH?X¤?XY—?X.ø?Wü3?WЂ?WF6?V™O?V6®?V>·?Vce?VO?V?V¸?Uôú?UÕP?UW?U[?UA(?U9?U ?T¸ý?T±¯?TÅ6?TŠ?T8©?SæA?Sž6?SNp?Rßî?R]g?R2ì?R~X?R±Û?R?Rgo?R.?Qü»?QÝB?Q®À?Púk?O]º?Nxf?Ou=?PP‘?PKÕ?OåÈ?OY_?OY?Onb?OÍX?Oµu?OZ2?O”?N·˜?N?MÀ?M݃?N2F?N<Ú?Má¼?MsS?MY?Mµ?Mt?M‘?L™Ð?L"R?K¬Ô?JüO?HZÖ?=ýp?*ìË?$¦»?4Àf?CZs?GŒZ?Gå‘?GÜ÷?G[³?EÛ?DÃå?C8Þ?@Fï??:^?A¿ ?EZc?Fä?D=?CdØ?B¡¾?C¶?Eÿ?FªÝ?G ?F[@?EA4?D¿?DÌ?E!Š?E'E?D¯_?D?B‚§?@ Ï?@Ô?A½?AƒÓ?AQ¡?C(O?CøÈ?BŸ]?Ao?@¼r?@–X?Bxƒ?DO˜?DÅW?Cçå?@݉?;_ù?8’?:è?<Ñ»?=Í?>?A??H??×J?@Ü?@åˆ?@[Ä??î¿??FÒ????ü}?@Ew?@7E?@2à??G¦?=x?<=p?<œø?=µ\?>Ž?>­„?=çÕ?<Ï ?<…’?= ?==+?=‰€?=»Í?=D­?<ûs?<ûÃ?<ž?;ä§?;Õ$?<û?<‹?<'§?;ær?;G?:¹?:Ñ?;õ?:­‡?:Wã?:°?9:r?7§ù?7JÇ?9et?:‘D?:fo?:: -?:? ?:?9Ø{?9×z?9ê²?9ãŽ?9Ö?9…?9 \?8®7?8Om?7ìã?8@?84?7x%?7lš?7¹%?7¾A?7’.?7}õ?7Ÿ?7v?7À?6«Z?6¼V?6ÉÂ?6œë?6;ç?5Ï‚?5Æ?6?68Ä?6:â?68X?6 ?5îA?5å§?5²“?5g`?5>?4¡%?4Ox?4[ƒ?4r‹?4e¦?4q?4m½?4=í?4)?4.ö?3ûZ?3ý?3sã?3[a?30©?2Äí?1ñ?1f?1žß?1óò?2q?2ÂÖ?2Ïm?2ªT?2N×?2?2?2Ý?1óÒ?1Ìf?1ŒÏ?1TÌ?12~?15ï?1Wê?1&9?0¼Ý?0}?0]?0GÄ?0W?/ë*?/ÊC?/¾?/uÂ?/Bö?/X?/?.Ùõ?-Å?,׆?-˜É?.ªû?.Ô˜?.3n?-2¸?,Õë?-UÂ?-]p?,D?+¦?+§e?,@4?,~k?,±?+Üœ?+ÕÚ?+‰?+L[?+Ÿ?*¾±?*xS?*d?*‘ ?*¨¸?Â?$q?a¡?N‡?ò1?»œ?–Z?tR?{M?L-?Ïî?y)?ë4?µ'?±°?Š?à?)Â?/Æ?µ?ê?ü{??,À?,i? -‹?áO?©&?x¡?f?oX?e6?F+? ?ìÚ?ÚE?¹s?V?Ó?zS?iQ?u}?_ˆ???2Ø?:?ñ©?¸O?B£?n? -?å?Åü?Àè?Ž0?Ä»?öç?Ô?‘Ú?¾?¿¿?Ä?°? ´?î?$5?9Ã?tG?˜?õÖ?:–?†?;E?xE?ñ¾?©?@ó?M¨??tÏ?[ò?"¡?غ?]6? Ä?g¤?ÃA?d­?…Í? 4 ? }ß? iX?Ÿó?8i?z?Ü¡?Y?¿?R¿?“?5¢? Šð? ¼;?Ré?žË?? â5? ’? dÊ? +L? -ÝŸ? -S ? -1? Rä?`é?Òý?ôê?¸æ>ø0>è?>Í;Ð>º½æ>Êdä>åÇq>öê¸?NM?m?u?Ñ?7½?—Å?C.?}î?B6?Z ?„3? Ô†? R? šù? aÿH >ê'>ã-º>÷a3?B?ù|?E‡?O?O¿?B¸?L^?AØ?(Ú?¹?ØD?¹a?“Ã?vŠ?h”?oÝ?$?dA?!¸?›&?ĺ?}`?=n?B?-)?¬¨?õ¬?d?E³?ÙS?ºÉ?ÿÛÿ?]?>ÿüƒ>ÿr>ý`b>üÇ9>ý£>ü¬µ>ý#{>ý‰Á>ý8C>û+">ú~þ>ûüŠ>ü…o>üÙr>üÞÓ>ü©>ü¾ò>üäh>üà|>üÔP>üEî>üL>ûãf>û–'>ûmŠ>ûC÷>ûø>úÚÜ>ú»>úº•>ú•ç>úˆ¾>úSÃ>ù°@>ù‡>øûµ>øõý>øÜ>ø˜B>ø>>øN`>øZ>øJy>ø ‘>÷>÷sÅ>÷|Ü>÷Yø>÷1>÷ U>öÎt>öa§>õì{>õî[>õÃO>õiØ>õ‰e>õ“f>õl_>õ ->ôUÞ>ôZ–>ô¨î>ô¨¡>ô‰Ç>ôY>ô€>óÛ_>óº>ó«R>ó‰û>óuÒ>óSj>ó&ã>ó´>òèÈ>òÅÝ>òŸ>ònî>òA‡>ò‹>ñ¢Å>ðÌU>ð¶Ë>ðè@>ðð>ðä¾>ðÁs>ðže>ðxL>ð<>I>îêß>îÓ(>ïRä>ï3¶>îOj>í;>íý>îzF>î¦J>î˜M>îq3>îK£>î)3>îý>íåò>í¾d>픯>írŽ>íE§>ìçž>ìš®>ì”Í>ìzg>ìYä>ì<ƒ>ìã>ëúE>ë­¾>ëzý>ë1 >êͬ>êÌŒ>êØö>ê¡>ê;2>éô<>éÕÍ>é®>éS>él`>豤>èm>èš³>èÝ>è Ö>è®À>èÝ™>éä>ék>è‰Ý>çÖT>ç:‚>ç@©>è¥>çþw>çX\>è_¡>è˜`>çw}>æpS>å×Ë>åì>æ)*>åØR>æZš>æ@1>æ´Û>æ1&>å?>äЬ>ä¼>å1“>äó>äR>ääA.>åfU>åÆÙ>ä›Q>äJf>ä…!>åG·>åœ<>äï„>äáY>ä&ß>âõþ>á|Œ>ÚE>Êä„>ËfR>Û˜Û>â‘1>âÑ/>â³ >âH=>â>áÊ>á4·>áA¥>᧣>áŽ>áFv>á0Ì>á<ˆ>àã‘>à›>ßÑG>àÐ>ßòÛ>ßÝ»>ßÏ:>ßÊØ>ߧ1>ßf;>ßÂ>ÞËÔ>Þ\ê>ÝÁ>Ý©[>ÝÚ>ÝÈ>Ý™]>Ý >ÝR>ÝTƒ>ÝbÄ>Üü¦>Ü­˜>ܬÀ>Ü’>Ü-ð>Ûä>Ûç¸>ÛàÊ>Û¸ˆ>Û„ä>Û_Q>Û;Ž>Û¨>Úç¸>ÚÀ|>Ú”¯>Ú`²>Ùúy>ÙQ°>Ùa>Ù¶ü>Ù¥A>Ùz4>ÙHL>ÙL>Ù>Øíh>ØÅÁ>Ø¡H>؃Ä>Øj­>ØC.>Øû>×ëç>×À@>×—å>×a~>×5g>× B>Öq¶>Õ–>Ôãä>ÔŒm>ÔX >Ô,(>Óý6>Ó¸½>Ód…>Ó±>Ò±Ä>Òn”>Ò[o>Ò&!>Ñ÷`>ÑÕì>Ѫ(>ÑvÒ>Ñ@õ>Ñ ¥>Ðèì>Ðæ¨>ÐÝî>ÐN¡>Îà>Îì®>ÏZ—>Íx…>Í<>Îû”>ÏPÎ>Ï *>ÎÓ>΢o>δ‹>ΔÌ>ÎZó>Î">ͺ>ͦÔ>Í >Í„8>ÍWÎ>Í"¸>Ìër>̽o>Ì™–>Ìtð>ÌJ²>Ì’>Ëí>ËÌz>Ë“¢>Ê|)>Çû;>ȧ:>Ê”>ʾÇ>ʈ[>ÊZ•>Ê-€>Éü½>ÉÉ›>É?>ÉY×>Éø>ÈÒ>Ȉ+>È8¶>ÇÑ©>Ç;_>Æn‹>Å´>Åo>Åi>ÅS >Å/G>Å>ÄáG>ÄÍõ>įÙ>ÄŒD>Ähß>ÄDf>Ä7>Ãõ£>ÃÍ‚>çe>ÃŒF>ÇR>Ãz}>Ã`‚>ÃBÞ>Ã!w>ÂúÞ>ÂÔ×>­•>‚>ÂrÄ>ÂgÞ>Â[…>Â<À>ÁÚ>ÁkÏ>ÁU~>Áe^>ÁU°>Áy>ÀÝ*>Àôk>Á>Á¥>À¾‘>À½^>Àîj>ÀŽn>À¥>¿Û>¿}>¿Tž>¿nM>¿Ó>¿ƒ1>¿Gc>¾yN>¾f>¾Î÷>¾ÞG>¾¬š>¾ú>½KI>½kâ>¾A>½¦¬>½P>½Iï>½—>½‘D>¼ßœ>¼±¦>¼ð>½5·>½ò>¼Å¾>¼’¾>¼¨ñ>¼–/>¼hk>¼‘>¼Õ>»h­>¼_>»Ÿ)>»A>»?Ï>»<ò>ºë>ºèË>»B¯>»Se>» Y>»Mk>»hî>»gÅ>»>>ºŠE>¹±>¹W¢>¹ƒ ->¹+{>¹K>¹ {>¹d}>¹Fÿ>¹tº>¹eR>¸Ø~>¸Çh>¹$‚>¸ý>¸¢+>¸ ˆ>·-4>¶‚Ù>¶ãº>·wð>·Ùi>¸!>·à³>·‹³>·¼>·ù>·P>·q”>·uP>·¯>·/>·s¢>·f#>·"ç>¶Ï>¶µK>¶—›>¶C(>µùj>¶Þ>¶'>µÜ¦>µ¶Ÿ>µ±û>µ;>µŒæ>µŠq>µ{N>µgþ>µUL>µ@¹>µí>´ÑÕ>´}>´*Ï>³ëq>³Ì¼>³§¦>³€6>³Y>>³->³W>²Ú0>²¥>²u>²xë>²Iø>²4>±â“>±Ä˜>±ºc>±¡Ç>±„9>±b‹>±>>±§>°ôG>°Ô>°°Y>°µ>°k¢>°?ƒ>° :>¯âƒ>¯ÃØ>¯–k>¯Aü>¯#Z>¯5W>¯>®ú²>®Ø«>®µH>®“C>®q>®SÊ>®9à>®ï>­û+>­ÞŽ>­¹>­ú>­tM>­a>­B,>­¯>¬ñ >¬Ä>¬ì>¬Q>¬d–>¬f§>¬Jî>¬6`>¬Þ>«þƒ>«Ù>«±Æ>«ŽÒ>«hë>«J>«+ß>«k>ªçv>ªµ'>ªlM>ª<Ã>ªU’>ªJ0>ª'Ñ>ª¦>©é2>©Ó³>©šå>©^j>©rž>©h³>©Ð>¨åW>©|>¨ëÎ>¨µÙ>¨u8>¨8ù>¨'>¨U>¨•>§òi>§Àî>§y±>§k>§k&>§Yñ>§0£>§9>¦æ>¦—£>¦Ÿ/>¦y]>¦Z@>¦BÂ>¦ê>¥Ñ?>¥Ë¤>¥ `>¥iA>¥^—>¥Wf>¤òõ>¤ÆJ>£ðÑ> ->œÐê>œvˆ> €Î>£‚B>£ÓL>£ìi>£Ï>£œC>£VÝ>£Ao>£oØ>£Gœ>¢Û,>¢¤>¢}>¢–¨>£ W>¢Žë>¡Ð‘>¢04>¢—>¢©>¢ü> ÖÌ>ŸvQ> @>¡&?>¡1È>¡'€>¡q>¡;> û§> mÛ> *˜>ŸäÞ>Ÿ¢>Ÿ¿2>Ÿùò> _> ó> 0á> ‹½>¡H> D3>žûû>Ÿ0ª>Ÿ}Ú>Ÿj>žeó>öC>†¬>0j>tê>²Q>óI>ž²¿>žÈˆ>Hú>œ%(>œ<Ý>œ—<>œµ>œ­>œ4­>œYˆ>›ï÷>›hL>š¤>˜¤>˜Üg>šµu>›J¦>›¬˜>›\>šª©>šVÓ>›»>šô³>š\>™Â†>™Íu>™Úˆ>šp >šù_>›9U>šÊq>š‡`>š[»>š"¹>š(~>š -¿>™Åy>™U >™bô>™×>˜>ñ>—‡k>—‡Œ>—B>—(Ã>—û >—ãÚ>—Ÿ>–²ï>•ú>–ȇ>—r‚>–Ñä>–aÓ>–>–©Ú>—wì>—[c>—>—Šu>—´‘>–Ù0>—Qå>˜+U>—«>–ßR>–SÄ>•µ™>”äØ>”˜½>”“¶>•u>•Ùõ>”çÍ>•W®>–¼Ï>•9Y>”žö>•Ud>”»ƒ>“½­>“Mâ>’’w>’RY>“ »>“V3>“€ñ>“>’®3>’”•>’ñÖ>’ïÛ>’«Þ>’J >’'j>’wû>’ÀB>’®ƒ>’Žï>’ u>’5R>‘$&>‘N^>‘¡µ>‘á—>‘Þ]>‘¤>‘“>‘ž£>‘T‡>ó¿>â >õÐ>÷®>õé>¸Q>”€>™3>t7>S>Ø>ð`>â>ÌÓ>¶>{>r>>ä>>Žû]>ŽÙ¶>Ž¢ù>ŽXÏ>Ž:¦>Ž=\>Ž%¡>ŽÒ>Ž ˆ>ìé>Ý>ÏX>¹P>œ>iË>L>@‡>ª>/>Œøˆ>Œß¾>ŒÀ¤>Œž >Œyò>Œ=@>Œ|>‹ûÅ>‹ö>‹Üä>‹Â>‹¡ù>‹†à>‹jç>‹Hm>‹'Í>‹ -;>Šê®>ŠÉ>Š¢>ŠjÅ>Š3I>Š& >Š -u>Š&>‰ô±>‰Ï_>‰²µ>‰¦ÿ>‰{t>‰'*>ˆôé>ˆþù>‰[>ˆÝ>ˆ¬m>ˆ$>‡ŽT>‡ê;>ˆ6?>‡ôD>‡q[>‡»\>‡áZ>‡t†>‡Ë>‡*î>†Ná>†¡>‡Á>‡I­>‡$Š>‡“>‡8>†óÁ>†³æ>†°Z>†¸>†¨B>††î>†pá>†Cƒ>…õ>…mu>…,>…Jà>…F—>…6õ>…1Œ>…S?>…'>„ý>„õÐ>„óê>…&Ù>„ð>„ê™>…½>…>„èn>„eF>„Ul>„}›>„,>>ƒüÙ>„7¨>ƒß5>‚ø—>‚ê²>‚ÔF>‚‘¬>‚_æ>‚3¸>‚,c>‚S¾>‚E>‚!|>û>*é>è>-Õ>€¿ˆ>€Þ>–¼>~Û|>~ÜW>[¦>xˆ>ŠÙ>€cÎ>€XR>€L->€kh>}¤¸>y%Y>zõ:>~§S>’> û>~ª›>}mö>|K>zæõ>{œÜ>|’Y>|Iû>{éì>{é1>|g>{Ô>{>{K¯>|>|™á>|â¾>|™Î>| >{á¬>|Ñ>{Ìó>zÆ#>z >y»>y‰‹>y‘”>z'>y¬Å>xÆ›>x#p>w˜±>wô>vCs>t™™>so.>rTø>pé°>p¹>mà?>jó¶>qNŒ>v^=>wxP>w=I>v‚|>uà¯>tt >r¶R>q«b>qÏ‘>qŸ>qIÁ>r$$>r£v>rÒJ>s…>ržö>rí¦>r¦¢>rx>q?é>p¼)>pf>o>ltÖ>l;>kݯ>jÉ®>j|!>l–>mGv>n¿>p[f>qq>q,R>p|2>oÌ>on,>o¤z>of,>nÇß>nb¯>m?À>mEõ>m >kÃr>i\‹>f =>cLÅ>aÀË>a >c^z>f™å>gõÐ>hæ>jT9>k£Y>lDØ>l‰Ò>l1R>lj>n€þ>o–Ï>oaÿ>o%Â>n>lB¾>hUÒ>dÉ->dUŸ>eq§>dñ>a£'>^·@>[x">W¡>T±´>T§Ø>W€²>[ùõ>_c‰>cs>g*¸>i®C>k+Õ>küê>mo>n~ö>pB>oæ«>o&p>n°>n8d>l6>iÂw>i­¥>jæ>j·>ig~>hÕ>f´0>deµ>c§«>cC¬>a^V>^±\>\;o>WÎÓ>Q©®>K~E>I%5>Kܹ>P]3>UL>X§U>\'0>`ˆ>c5>dù<>gåÐ>iˆé>jž=>l3>l-ä>jó»>jÅ>jlH>ihè>jM­>jâ1>iêÑ>iœ>h]L>gýµ>hZJ>fÊ×>esö>e^ª>f0 ->e¢h>dåø>d38>b³ö>a}k>_æk>]Žª>[ʤ>Z -">WIä>Sè>M!c>F“X>@¤>?¡›>E©g>L^¡>Q>V7™>YeÛ>\Ü>_L>`(ð>_ç>_íF>]Å:>YÔç>Z˜d>^ø›>aÑä>bÆð>c¡>d†>cšz>c+Q>b)\>a¢Î>b´>b_>b2q>bOI>aèÄ>ao˜>aI·>at,>`©]>_êP>^‡‹>[ä>]Ê;>_Ú >_ú­>^Þz>]À“>]ŸP>\uë>ZfO>Y)©>W÷+>Uè>S3?>P¹ >N€Ï>M ->JšK>G(>BE*>:®z>2Û>-¨¡>3ƒ><@è>CNŒ>H®k>L^ù>O_x>Q{ü>S¨>TÇ>TãÄ>USŽ>UŽS>UÀ¨>U¾.>U–#>Uhå>U'>Tä0>T¾#>T¡Ž>T…_>Td©>Sõ->S?>S±¨>SÓ>S­ >S‡;>Sbµ>Rè©>QjŽ>Q¸Ö>RQÚ>RfØ>RS>Q÷Û>R>QìC>QÀ¯>Q’Ä>Qf[>Q;C>Q à>Pܹ>P°n>Pƒ>PT >P! >Oè)>Oµ‰>OŠ‚>OXS>O!%>Nè9>N§[>Ni>N)›>Mà>M”R>M9î>LÌ>LQ>KÉœ>JÒû>Hû >H>FîQ>Dá>>AŒ¼><êT>6»e>.¡p>$„s> ]>(xµ>1†J>8[Ü>=€k>A7Â>C½t>Ex>F¯ ->Gp†>Gë>H;ó>Ho’>HŒô>H{´>Hgý>Hq‚>Hd¼>HqÁ>H`O>HBŠ>GÃ9>Eòq>E S>G ²>G›2>G_÷>G;>FöÀ>F2å>Eɸ>F`P>F›u>F<>>EÊñ>E\t>EªÓ>E%R>Bòg>D;ú>ERë>EL>DÛ„>Dçä>DƯ>Di^>Ca{>C¨¹>DÙ>C÷Ð>CÅ®>C Ž>BÙ—>C?Ö>C&Á>B¼>A÷ž>Bg~>BŒ8>BdL>B7&>B)>Aç=>A««>Ap&>Ab´>A2>@Ñ°>@¿T>@¥B>@“D>@n>@A—>@J>?Úâ>?†ê>>¦>=å>=àÓ>>~Ï>>¶7>>VM>=Œ—>=ã4>=ò‘>=±Á>=5\><Úµ><­Ã>;n>9Ñ,>:°÷>:(>8S>7›r>6 Ú>2Ùr>.žæ>,¼þ>'A+>sD>“Ö>2/>­F>#4i>)ŒI>.Uá>1ËC>2ó*>2‹*>5êÅ>7bÓ>7g>7Ú|>8Z'>8fï>6¨>3!4>3Û“>4Á>6Á©>8> >8>8 õ>8>7ðë>7Ðý>7® >7‚>7V‡>6ý>6Æî>6îþ>6¤°>6ts>6u>5äJ>5¬ >6Ó>6·>5åË>5º†>5–p>5x:>5TA>5(>4è€>46>4>>4y>4^x>4M>4'A>3êŠ>3’C>3¡u>3—Õ>3sk>3Jª>3*t>3H>2ß·>2¶ ->2“Ì>2q|>2G>2Ù>1ÿ.>1Ñn>1}è>1g×>1\B>1E>1é>0ðÒ>0„~>0u¾>0et>/ÇŸ>/ÿ¼>0Í>/ü—>/Õ>/DŽ>-­A>.…>.¾>+ÄK>,Š>.oJ>.|†>.|v>.Zñ>.3I>-©ª>-câ>-Ÿ¼>-“ù>-mó>-NÒ>-=ð>-¹>,éÒ>,¿¾>,¤•>,ƒz>,^è>,<Ÿ>,>+Û >+a)>*õT>+YZ>+Y>+6í>+j>*ëÃ>*ÆÜ>*œI>*BÎ>* Ò>*>)ý>)Ȩ>)‡>)`æ>)En>)©>(ö#>(Á>(~y>(.ˆ>(Ü>'ìŠ>'Aá>%æ¤>&#>&£@>& %>$©^>#Þ6>#1ï>!÷>ÖE>ïS>®Ï>â®> -º>ã>ŸE> È¡>®2>ÅÒ>l¾>ñœ> œ1>!»>"{R>"õ—>#H“>#t >#‘>#¬>#¶¹>#°×>#¥>#—3>#ˆQ>#kó>#K>#B#>#(‘>"úÆ>"Ù ->"{>"s²>"“p>"wá>"[>"Bö>"©>!Êý>!HŒ>!i>!>ñ>!#a>!œ>iP>ª> ËÚ> àr> À§> ŸÃ> ~Í> [´> ,Ú> ¦>ò>¥ >÷Z>,i>jè>A…>%k>J>ÚY>Éa>¬Õ>|>I>@B>&>k>äG>¹ü>šª>sã>W^>B.>!Ã>þ§>ÝŸ>¾³>žÚ>}Ä>\Ö>;s>É>ô³>Ô”>¢L>~R>u‡>VÝ>2†>€>ã >†Ð>‰0>>s >Rý>2Œ>ž>ð¾>Ñ%>°Ô>Ú>n7>OF>/­>ª>ê/>È°>£á>Š>hÆ>,U>ÒV>·¯>Ô`>¾+>Ÿi>yÇ>iÚ>D> Æ>æ‚>Éi>¸é>§‰>Œo>f>#è>Çã>Ùw>„º>€(>Š>eÜ>6š>àê>õ)>ðï>Úx>³,>‚¨>Tí>*>$"> …>ô¬>ºu>rˆ>lÇ>\÷>c®>9Ø>ø¼>Ô»>̯>z >²±>Õç>Mü>>Z>ò$>ÃÏ>q~>¬¿>oh>)ï>s?>\s>A>%ë>û®>Í?>w$>`¬>[>M5>Mz>,…> >à¸>·u>JÕ>8á>lÚ>Y¡>7h>€>ø >Ì–>¨c>œ?>~K>`J>Aé>"¸>C> ã> ¿Ó> ”ó> |Ó> a’> >ì> -> ±> ·©> «I> }¸> WÝ> 4x> C> ÔR> Ÿ„> Z½> R> -Æú> -?>â>’>½>]é>Ý>¥.>ƒ~=øk‘=ìv&=Ûk=Ùfã=éà…=õå)=þP>+Î>@£>¨^>šj>:Y>¢B>Õç>“#>Þ>9ü>Aæ>A#>7S>)y>õ> -ß>÷ã>ã–>Ìÿ>Ÿ >E >ù>!î>Ï7>Ï>N>þ>Œj>f«>¥L>’õ>€Â>fš> y>¶ì>û”>øÓ>ÖÂ>¶`>¦¬>Š‘>i<>SL>9¯>ý>õ>ß*>Ê>¬>Šú>u¾>Z>>±>"P>µ>æ@>Ê6>µM>˜n>{>b{>Gc>+¢>œ>ó­>Ö†>¼|> —>ƒÝ>jK>N~>3>ú>ûO>áT>ÄL>¦'>ŒÌ>qI>LÆ>2> (>»>ê>Æ;>°P>™”>~Ã>c£>HW>-+>Ž=ÿì„=ÿ·Ä=ÿ÷=ÿKà=ÿ÷=þÞE=þ£«=þr|=þ=ð®ú=ð\ù=ðg=ïþ•=ïÚ =ï¯à=ï†=ïP -=ïÈ=îç=î¹=îˆò=îUø=î#³=íéj=í·o=í…=íVU=í(0=ìó=ì•¢=ìOÆ=ìMm=ìû=ëæ„=ëµc=ë}„=ë_9=ëÒ=êÌ=êÀf=ê–<=êj¦=ê8=ê=éÎÓ=éV«=é+ü=é71=èîS=è¶Û=èŽ~=èwå=èFY=è=çÝâ=ç£T=瀈=çSª=ç!õ=æé§=æ·é=æ‰=æ[Ž=æ*â=åñÔ=åÈw=å“ó=åO=å*T=äçé=äÐ¥=ä¦b=äu‘=äFp=ä=ãåB=ã´º=ãƒÐ=ãNu=ãç=âñÄ=â¿õ=âb=âX)=â <=â)=áÒ¿=á¢`=áo{=á@y=á¨=àÞ‹=à =àr;=àLþ=à=ßå =ß“4=ߦ=ßKç=ß =Þ+U=Þy\=Þah=ܘŸ=ܵ==ݱH=Ü™=Ü`=ÝsÔ=Ý\É=Ý-Å=Üþa=Ü¡û=ÛãÕ=ÜA =Ü:=Ü w=ÛÞ´=Û²¥=Û‡G=ÛWå=Úü=ÚG—=ÚŸ£=ÚšÄ=Úl=Ú?º=Úò=ÙÛ€=Ù­&=Ùx?=Ù=Ø­!=Øå=ØÀi=ؘ=Øi=Ø7–=Ø==×äµ=×·o=׆Õ=×YÕ=×-=ÖýD=ÖÂ4=Öžä=Öuè=ÖGÕ=Ö,=Õâ/=Õ½l=ÕR=Õ\Ü=Õ11=Õ=ÔÕð=Ô¨º=ÔwÅ=ÔGZ=Ô–=Òa=Çé=Éuå=Ò¾y=Ó:=Ó =ÒÝ“=Òžp=ÒwÏ=ÒTr=Ò&Ñ=Ñø -=ÑÉ=Ñ™=ÑPÓ=Ñ¢=ÑÔ=ÐΦ=Пý=Ðw:=ÐFÈ=Д=ÏßÓ=Ï©Î=Ïpš=Ï8I=Ïõ=ÎÃÕ=΂w=Î;©=Íí–=Íš†=Í:Ï=Ì¿¹=ʇå=Åì…=È¿=É=Æ0´=ÃD=¿%E=¹{h=±¦=¤+­=¡¾ñ=¯€=·YÏ=¼ò[=ÀŠ±=ÁºÀ=ÅE=ÆÐw=Ç¡O=È(ë=È‚<=È·3=ÈÜ­=Èé=Èê=Èæ½=ÈÌ€=ȸ =È¥8=ȃŽ=ÈdŒ=ÈL¹=È+=È #=Çæ1=ÇÀ™=Çš}=Çu=ÇF*=ÆÕÉ=ÆpÙ=ÆU½=Æ©d=ÆŠ;=Æ_í=Æ8‚=Æ¥=Åé@=Å¿>=Å”‘=Åa€=Äæ¨=ÄS#=Ä·Ž=ľd=Ä-=Ävð=ÄN =Ä%r=ÃüF=ÃÒä=çŠ=ÃM=ÃW=Ã-\=Ã=ÂÙ•=±=‡ô=Â]÷=Â,P=ÁüF=Áà™=Á·¹=ÁÀ=Áh=Á>Ð=ÁŸ=Àë“=ÀÂÓ=Àšÿ=Àrk=ÀH-=À *=¿äy=¿Í]=¿£]=¿yt=¿S2=¿(4=¾êM=¾ËÑ=¾°]=¾‡?=¾`<=¾8h=¾°=½å=½³N=½z…=½iH=½DJ=½=¼Ûw=¼Ê=¼ê=¼tI=¼PÑ=¼)%=¼©=»ÚA=»£q=»Ð=»aÎ=»:ÿ=»Ú=ºë­=ºÃU=º™M=ºqý=ºJG=º$X=¹úî=¹Ïm=¹¬µ=¹…Ñ=¹]h=¹5S=¹å=¸ä=¸±=¸n=¸\=¸3O=·µ‹=·Üø=·Ñ”=·©ß=·}j=·\¬=·6ï=·¬=¶è=¶ÀÀ=¶“¥=´«\=°Ý}=µ*#=µ¿Ü=´â=´`ë=´Î=´“=µ=µ=´$=´—Ã=´™]=´yí=´Q‚=´'e=´º=³_ä=³=³‡/=³dl=³EØ=³ £=²ù…=²ÓV=²¬ê=²‡G=²Z=²+¬=²=±ïA=±Ãg=±›Ù=±wb=±. =±’=± -*=°ßÉ=°²S=°‘±=°d~=°>T=°'Ó=°=¯Øt=¯®Q=¯ƒœ=¯bq=¯B=¯ª=®æi=®ÑÙ=®°Y=®‹=®e¶=®?˜=®5=­öR=­Ñ=­«ú=­…W=­@\=­=¬ýÚ=¬ð4=¬Í=¬¨ª=¬ƒ‡=¬^Ÿ=¬9Ô=¬è=«ïñ=«Ë=«£·=«|”=«\D=«7Ó=« \=ªëz=ªÊ=ª¥ò=ª7=ª\ã=ª8N=ª,=©î6=©Êã=©¦˜=©‚N=©]é=©45=©=¨é=¨Ìž=¨¨=¨3=¨W=¨9o=¨ž=§ñ]=§Ïë=§¬¿=§ˆ¸=§c=§?¥=§=¦ø=¦ÍW=¦¯k=¦Ž=¦j=¦Fà=¦##=¥þÚ=¥×r=¥²~=¥“ª=¥pz=¥L²=¥ Ý=¤{A=¤Æ‚=¤¿å=¤œb=¤w÷=¤Pz=¤"y=£rw=£¢l=£Ã=£Ù=£W„=£^‰=£=ž=£‡=¢÷i=¢Ôi=¢¬B=¢‚ð=¢]~=¢5i=¡÷W=¡mV=¡ÃÈ=¡½‹=¡y =¡*=¡B6=¡(Ç=¡µ= ìw= Ë²= §þ= …= d"= Aç= ½=ŸýZ=ŸÛ=Ÿ¸Ù=Ÿ–’=Ÿpä=žÐ1=ž1=ŸÕ=žêù=žÇ=ž“‰=žz<=žb­=ž@f=žW=ûæ=Ú4=LÚ=›¾=œ˜;=›B=œ’ë=0=œìZ=œÉ¥=œ¢p=œ†ø=œg¶=œ9å=œ ¶=œÄ=›âk=›½W=›Šu=›p+=›[¸=›:¬=› y=šíë=š×(=š¶ =š•=šsæ=šR=š.2=š=™ï==™Í›=™¬—=™Œ$=™f=˜óš=˜ö=™=˜áü=˜³=˜¢ý=˜‚=˜c<=˜@ú=˜ =—ü>=—ßð=—ÀÛ=—Ÿe=—mi=—@è=—5ï=—=–ýâ=–ÕË=–‘=–4ð=–]~=–XØ=–;@=–æ=•û=•Ú»=•ºŽ=•š~=•zW=•Z=•9É=•Û=”ú=”Ù®=”¸«=”™û=”yÅ=”Y`=”%e@Ê4@ʉá@ʹt@ʶw@Ê›2@Êqú@Ê8;@Éí´@Ɇ@ÉZù@É4Ê@É&$@ÉË@ÈÏÆ@È_.@ÇïP@Ç»6@Çʽ@ÇñG@È}@Çû™@Çâ@Ǥ@Ç b@ÇyC@ÇKï@Çì@Æõ±@ÆÛu@ÆÈ@Ʋ@Æ•(@Æs>@ÆN6@Æ·@ÅÞ¶@ÅŒÜ@Å<É@ÅÅ@Äé¡@ÄÜ@ÄÌà@ĵ6@Ä—í@ÄxZ@ÄX+@Ä7£@Äí@Ãò§@ÃÐ{@ô@ó@Ç¡@Ãk²@ÃHs@Ãó@ÂæÍ@ˆñ@Á·à@¿ù9@½.@ºZ”@¹G@º©t@½?ñ@¿.4@¿ö@¾›¸@½1È@¼m@¼Üð@¾[@¿ @¿ƒk@¿•"@¿‹@¿…‹@¿~š@¿nr@¿U½@¿8~@¿z@¾ïP@¾º§@¾v.@¾&»@½Ý/@½®)@½ž|@½šÑ@½†–@½Må@¼ì @¼h·@»Äd@ºé¶@¹àB@¹€@¸ü8@¹šð@º[R@ºÊG@ºåû@ºäü@ºìw@ºúÅ@ºýÅ@ºí@ºÏG@º« @º…G@º_d@º9U@º4@¹æÁ@¹¯ @¹af@¹³@¸¨­@¸zÌ@¸uÑ@¸sA@¸U/@¸&Ñ@¸Ù@¸@¸¬@·ÿ$@·èB@·ÇÙ@·£¶@·~¶@·YË@·5@·@¶êŠ@¶Áë@¶‹f@¶'±@µfÞ@´B]@³(Ï@²ÇÕ@³Pî@´<@´é¼@µ,Å@µ*p@µ µ@´è|@´ÄZ@´ ˆ@´{Þ@´VÈ@´2Ú@´~@³î@³É-@³ŸŸ@³i>@³‚@²1¡@°Á@¯ß@®) @®—Ä@¯íu@±.3@±×k@²¡@±÷H@±ØŸ@±­q@±m'@±©@°«Â@°Fñ@¯ôû@¯ÇR@¯ÅÁ@¯ß¥@¯ý¶@°@° ¾@°€@° m@¯îÓ@¯¾@¯kÝ@®ë@@®% @¬Î^@ª @§íT@¦†Ë@§€ë@ªŽ@¬YZ@­•_@­ö·@­øË@­àj@­¿Á@­Œš@­"=@¬Nÿ@«^@ªæ@©ÔV@ªqµ@«:@@«ˆc@«'š@ª>›@©AÖ@¨Î[@©)n@©úk@ª´Ì@«”@«5`@«,_@«Œ@ªä«@ª°®@ª|@ªN–@ª*@ª ³@©ï@©Óa@©µ‡@©”y@©n|@©Dš@©Ø@©€@¨ñÙ@¨áï@¨Êë@¨­Q@¨Œ@¨eL@¨6r@¨Y@§Ôf@§­Î@§‹ë@§ck@§p@¦¨Ä@¦x@¥l“@¥d@¤Çn@¤=Ö@£F¼@¢!«@¡u]@¡×ÿ@£¶@¤sb@¥D³@¥Œ‚@¥†¤@¥bÀ@¥7ê@¥|@¤èY@¤Å%@¤£š@¤ @¤ZR@¤.×@¤£@£Þb@£¿â@£¤Ï@£‰æ@£mÍ@£Py@£2¢@£ @¢öÀ@¢Ó@¢@¢>0@¡«è@¡o@ À@@ ÃÙ@ ×‡@ ÏÃ@ Ì¸@ å»@ ñ|@ ¬×@Ÿå¤@žŒP@œßÞ@›Ÿß@›¥9@œëÖ@ž{P@Ÿ{©@ŸÕ_@ŸÍõ@Ÿ“D@Ÿ2ë@ž³‹@ž -¸@*8@œY@@œ/Ø@œÙ•@Åî@žT­@žcˆ@ž*p@ëõ@Ë;@Ã@»É@ªˆ@—V@‚A@J-@œ¸„@›Ââ@šÓ_@š‡™@šõ+@›ŽÙ@›àZ@›õQ@œµ@›þ´@›½±@›•@šOe@™Î @™ß÷@š@(@šx@š‹ @š…§@šˆÛ@š~@š;i@™´g@™É@˜ÈM@˜ÜU@™R@™EÊ@™J·@™Mç@™W‘@™Lª@™‹@˜áX@˜Ä‹@˜Í@˜Ý]@˜ÛZ@˜Äª@˜¢£@˜~7@˜]ƒ@˜B'@˜(ÿ@˜'@—íy@—¼e@—j;@–õ·@–†P@–TI@–da@–wÏ@–M@•Ú'@•My@”è˜@”Ó@•ë@•],@•¨Ì@•Ï?@•Ñâ@•À]@•¤4@•tø@••@”r @“‘æ@’·s@’/@’*{@’¦²@“[Ô@“ëô@”/@”7r@”!©@“ý@“Ö@“¶@“žŸ@“‡Ü@“kŒ@“E@“@’q÷@‘‡8@•õ@?8@´8@‘o™@‘àÄ@‘òü@‘ØÇ@‘´Õ@‘Ø@‘s¾@‘jð@‘ma@‘fà@‘J•@‘"@Ó7@ŽX@[e@=f@$Ù@ š@ü‚@øÚ@ñ@ÚT@»L@¡S@‘@„4@s·@^¥@Fû@-l@@Žëù@ŽÃ¤@Ž ›@Ž‰.@Žv@Ž]8@Ž:J@Ží@ï§@Öð@Ç(@¸‹@¥Ã@Ž9@r'@Q@,@»@ŒÚs@ŒªÖ@Œ{è@Œ\ž@ŒR€@ŒPK@ŒE½@Œ-¼@Œ Ó@‹æ@‹Â+@‹£U@‹ˆí@‹nò@‹QR@‹0{@‹7@ŠöÄ@ŠÞå@ŠÅ@Š§ü@ŠŠC@Šn|@ŠS³@Š5­@Š @‰è^@‰Ã@‰¥U@‰@‰uÕ@‰]â@‰E@‰+I@‰Q@ˆóª@ˆÕ@ˆµŽ@ˆ—e@ˆ|@ˆa@ˆBK@ˆ%@‡û£@‡ÛÕ@‡¿¼@‡¤ô@‡ˆÝ@‡k -@‡Op@‡5 @‡º@†°”@†6Ó@…Þû@…âå@†%Ç@†^L@†kì@†Zé@†<Ã@†…@…ò³@…Òs@…±4@…cÂ@„«à@ƒ–(@‚Ä@‚ßþ@ƒ¸@„‹V@„ðg@…&@„ôG@„ß‚@„É»@„³~@„œO@„ƒr@„i§@„R@„?-@„/&@„¼@„ D@ƒ÷ê@ƒâÄ@ƒÎ9@ƒ»W@ƒ©í@ƒ˜ž@ƒ…°@ƒom@ƒUM@ƒ8¿@ƒc@‚ù@‚Ù×@‚Å@‚Àd@‚À¹@‚±‰@‚Œ@‚^È@‚;^@‚$×@‚@ý·@äb@Ñx@ʱ@¼ë@ö@€òÇ@€ -z@~H¯@}¥F@~c8@’3@€/‹@€Y{@€`™@€S@€8Ÿ@€Æ@‰(@}ý—@{v>@y@xl'@y\«@zµB@{¤T@|$…@|m(@|Ÿ/@|ºË@|«‹@|b!@{ó @{hí@z Ë@y—È@x~ @wh¦@vPœ@uVž@t¾ž@t«¯@uk@uÓ@vÅO@wŠ7@wâ@wÚ{@wÑ@x ½@x8Á@wÕ™@w’@vg•@va&@v®<@vÊ@vZ@u`Ü@tå@r²³@q3•@oð@ox'@pÔ@q})@rÅk@so@sŽï@sRU@réd@rÂ@rð”@rש@r@q1!@p´Í@pŒh@p?u@o´i@oS@oiÎ@o×9@p2á@oö\@nó@m“p@l@jP@gøÈ@e˜>@doÁ@e|Ç@hÊ@ji+@kz¶@kÞ@l}%@m’ä@nª³@o+«@ný¿@n‡3@n@mà‚@mî¢@n*¹@ny$@o V@o¾ -@pÛ@o¿ˆ@o7g@n¨Ã@nQl@nAN@n4I@mÿî@m±ÿ@m;{@l„q@k±x@k7@k=@kù@j<@hÏW@g @dž@`åb@\‡ò@Y0™@Xµ2@[ Š@^SÐ@aœ@c?Ã@dÎÔ@e|R@eb @dùë@dŠ@d=@dÅ@cí3@cRÏ@b'B@`¬¶@_£@_bl@_õt@`v?@`¢J@`¿õ@`Íÿ@`›|@`)}@_ œ@_Lá@_ ¡@^-@[µM@X‰@V°(@WË@Z1b@]€@_n@`=q@`g‚@_œf@^tF@]’ë@]:þ@]o[@]è@^@]`@\´Y@\+Q@\A·@\ªF@\üJ@\É+@[\9@W÷Ç@RŸÏ@Lö5@Iý°@K›Ì@P^ö@Ué@W¡ø@Xs¼@X·‘@Y3º@Yª@Y\,@Yõ@YÊ@Yzø@Y€L@YÚ@X¦/@Xi#@X5G@X$¿@Xo@Ww¥@V…@V@Ve @VÐG@VÒ=@Vj-@VÑ@UÈ'@U˜’@Ukà@Uzè@UÎw@V Ð@Uëú@UfZ@T§,@Sÿt@S¿Í@SöG@TC‘@T'À@S¿'@Sž»@Sø@S´|@S\d@RÌZ@R -V@Q¥“@R2¢@S~@S™@QÛP@PvÔ@O„Q@O.@Oe}@OÕ³@PO@P2@Oyƒ@NŠ@Mªh@MÚ@Lª½@Leý@LKâ@L‹‚@Mµ@M4â@LYÍ@JõÑ@I³Ø@Húb@I#@I»÷@JÁo@K8Š@J$Ñ@G#Ñ@BR@;ˆ!@5Š@4l¢@8Ô·@@J@EÛè@H).@G„o@EZ@BŸ @@‡8@@•+@Cø@FÝ@J&»@LÞ@LE¸@JüS@H#³@CâW@>ì¤@:Óî@9j¼@;v»@@3Í@Fd@K“@O…á@Q– @R|@Pã‹@MÏ)@Heƒ@@À›@8@1@.M@/þŠ@5fì@<¿(@D»@KÛ•@RZt@WªA@Zä’@[ÁÖ@ZÈ>@X^l@Ty}@N©@F©J@=0@2î2@)60@">g@ ÷T@%ûp@.ëñ@8Ûì@Bg@Kp[@SßA@[(Z@`šÖ@d ö@f0Í@g -­@f”Ç@d´î@aî@]@Wsã@P<@G”@=Ã&@2»7@&üè@†R@jô@#3@kÝ@)jñ@5¨@?ö\@I„E@Q²Ÿ@X†ª@^2@cï@fÿµ@i¹)@kÍ@k²+@kã^@kÇy@kXm@j„2@i6w@gQî@d¦<@`ÔU@[ž­@U;¸@MÝð@E@:4à@-cË@ Å@Žä@ Jš@ še@ÖÄ@¿À@)ý²@5Ž@>B„@FD@M @R%!@V›º@[öð@aŸs@eñQ@h˜l@jƒ]@l.M@mš@lç«@kÌ’@i¯¿@e:%@\†¿@O)w@@<*@6Ç«@8È@D{“@RA¦@\Oí@aŒ…@cí@aýØ@^ÙZ@Z9ß@TP@M¢@D‹¯@:¦7@/+Ì@""?@“í@òS@®z@ Û@ g¼@ˆ<@%Ò^@2|€@=—^@FÙË@NI†@TM:@Y'!@\â8@_É -@b6@dÅ@eæ†@g:ö@gºý@h66@i0³@j F@j@iy~@hŸD@hHC@h½Ÿ@i¨ê@jœ¹@k=0@jä@i5@fþ+@eXÐ@dh3@c@`æ@\@Y÷³@Z3@[Q@Z½Œ@Y}@Y*®@YüN@ZaÉ@YEh@W¶b@W+•@WD@V–§@Tfù@P¨˜@KŠŒ@EYø@>(ø@5­Þ@+†b@Ž@d@è(?û?ù”c@¾4@\Á@oS@(Ò%@3k¼@<&‘@C}š@IÊ°@O -Ä@S'—@V5ø@X{i@Zcó@\>@]þ‹@_sC@`te@aœ@aÐ^@b±š@clÄ@cnx@bdŽ@`Ø+@`A@ac@cSd@d«þ@d¶g@crf@`ùO@]d¢@Yþ-@X¶³@Y–@ZG@Y R@Vã¿@S*õ@Oá@M[}@NEá@RUù@W§¤@[ש@]5§@[ è@V•À@SÂ@U‰í@Yè†@]b@_s¼@`ÉÊ@amÝ@alâ@a@`ƒ=@_ÖI@^Æ@]…@]o@]p´@]Ò™@]À;@]µ@]‘ó@]}`@\Äí@["f@X¨M@Var@U“p@U³^@Uc@SkÀ@Q=@N¢Ñ@KÈ@F%`@>ÿz@5óœ@-{@%w¡@Wó@â@Á?ñ‚–?èþW?ð¸Z@«@,ÿ@®4@&6ž@/Ô}@7„@=ôä@Co‚@G«@JŠ‡@LVE@M} -@N‘@P z@R"½@TÀ}@W‚@XE˜@Xœ,@X¾@X¯ @X-=@WU@U’·@T8ç@T#?@U¯·@Wž@Xp2@X3|@WÜN@WÑU@W‘@WD_@Vk@U_˜@Sùo@Q­Æ@M?Ø@F;^@?8›@<çï@A"‚@H°÷@O@e@S'{@TñK@U†Þ@U› @U¢»@U¡@UX@T„¥@Rof@Mþ†@FÏ@<©.@/Uò@"s>@¡Ä@$«‰@2¯h@@# @IµÅ@Og/@Qü3@Råe@SN¡@SZŒ@SW‘@Sêï@Tåï@UX@Tµg@Sb#@Rp]@RaY@R‰¦@R¨Ü@SC@T4@T9Š@SÅæ@SG{@SA@@SÂ(@T!Ž@SÁR@RÝÕ@ReW@R’ã@R|5@QË@Q¼@PÖd@Px@P+@OíÅ@P>¨@P˜@P½Ã@P½@P•ã@OÖ°@MÛ@Kµ@IGm@IH@IrË@I}T@H¨@FÙ&@E£í@F‘N@H½<@JÐ@J::@JW@Ij@H›Ç@G_c@F@ERA@E.¬@D®h@C<$@Aˆl@@Už@?$I@=Ø@:ì@6Qñ@1Ò@,G@%`Ï@ô~@ב@ ?õ¯U?ãº?ÝÞ?è‚!?ýXÂ@ -8ÿ@Ð@.e@&u@+ÀS@/°Ó@2â`@5õ@8÷ô@;Æ$@>5@?ݪ@APg@AÖ„@?úÙ@;â@57k@3XÝ@7´>@>:ë@BŒ$@D&F@DN™@Cð&@C’Ž@C„ý@CLg@Bre@AµY@B&>@C®ú@E7­@EÎð@EX @DGñ@BÝã@@÷ß@>!{@9l«@1ÿV@)ji@$þu@(ªl@1aÓ@9qå@>Õp@B-@Ca³@CJ @B+ã@@Æï@@C³@A)^@Bb]@Bã@Bù-@CY*@CÖ{@C¼Õ@BäE@A½L@@Äh@@ ü@?™6@?Š”@?Z@>LŸ@= @<Û-@>&œ@?»s@@Wê@?Ôç@?%P@?$@?›&@?¼ÿ@?>@>½Ó@>Àd@>é÷@>ûE@>ð…@>]@=”@=Î@>¶ @>§d@=À@<¶ü@<¨‘@<Õ@<б@<Í8@<ìŒ@=(@=0 @= /@<Êj@<ƒÀ@<¸O@=å@=@<°H@<Œ[@<½Î@<Ï9@<‰w@é@y@ ®û@ ËÜ@`Z@­÷@¡ä@e@ ñj@ h;@ ø÷@ kd@ mî@ -u½@ -Nô@ -Ä>@ D®@ ¹h@ Ýœ@ šÑ@ ] @ NÝ@ W@ Gœ@ g@ -¼x@ -Š_@ -Q¸@ î´@ ­Ñ@ µ>@ §“@ JÃ@r!@ÄA@Ò@@€=@Ûu@MH@S@²e@ŸÍ@¾¨@Ëè@É@¾¶@ET@³@²è@íN@LA@Hé@ýp@ã@ì@»à@o@<Á@ -€@4K@*@ãð@¶"@‹@ˆì@¤@˜Ü@>§@´N@Â!@†P@õû@ˆQ@´@Ÿ×@¸Á@–÷@5W@­ò@u:@¥H@@X'@Åï@b@í@”’@g–@K@W?ÿý¬?ÿGÂ?þ@?þtƒ?ÿ´Ÿ?ÿë£?þAb?û™Œ?ù«û?ú?ü”7?ÿ„’@Z×@?þàD?þŒ?ý?úÎ0?ù.÷?ú³Œ?ýŸÂ?ÿ¡?¥D?¥=k?¦/?¦)°?¦"Â?¦_q?¦ŠA?¦•Ê?¦i|?¦ -Â?¥ù¹?¦Ý?¥ð˜?¥§"?¥(K?¤Û@?¤ËW?¤Ù„?¥ -9?¥@#?¥@Å?¤þ ?¤Ø+?¤©|?¤eæ?¤fØ?¤œ~?¤¶i?¤cë?£ù˜?¤ö?¤3µ?£ÝÜ?£›ç?£ž?£G=?¢¬a?¡Å‘?¡qM?¢ é?¢…J?¢µÈ?¢\?¢2?¢?¢g°?¢Ì?¡]w?¡Ä? ¯C?™M-?™;]?™j?™ ?˜‹ž?—øß?—¦A?—½”?—ãŽ?i§€?hÏ?gD?g€Â?i»S?jƉ?iâ?h…¡?h……?ia?i´¢?iHÓ?hùº?hƒ)?fÿ•?eLý?e?f¦ñ?fÎ×?f—3?f$R?e‹˜?dû>?d¡®?dã˜?e0‡?díD?dÚ?e*n?e%?dËù?d€œ?d+U?cXÄ?aù9?aW?aý¼?c3ÿ?cŠK?c…U?cJ:?bü?cª?c<ñ?c -¨?b}Ø?ag?_|?]ï¨?^–U?_Ú—?`û?_Ûø?_’¦?_SÏ?_CÝ?_³Ö?`B°?`Kâ?_éŽ?_ž×?_K?_Ž´?_hŸ?_ø?^º0?^66?]±}?]&m?\ë¾?]¢?]£?\­??\d¦?[« ?Záf?Zœß?ZIN?XDª?T@ ?RŽ?U%«?XŽù?Zd?[“?[CG?[À?[ä?[F?Zób?Y¬Y?X´?V¬þ?W]Á?YZ?Z¯??Zã¥?Zb?Y¦»?YŽ?Y¤?Ynk?YK÷?YgX?Y“*?YfK?Y`?Yƒ¨?Yh²?Y\?Y]¯?YÂ?XŒS?X›ù?XÏT?XeÑ?WÈk?Vÿ¥?UÕß?UQ„?V.B?W&ï?Wf?WO¶?Wn?V•|?UëE?U•‰?U‹^?UÂÓ?V -?U´~?TûÁ?T‰—?Sû‚?S¿½?SÅv?T(?T…?TÎË?TµÓ?T:)?SÞù?SlD?Râ3?RÓè?Qï>?NœÚ?FT›?8¿p?3 ?=C˜?Fì€?J¿£?LDt?Må??NËÀ?NUÔ?MLç?J( ?A¼?8)ô?<Øt?G3«?GÎ¥??›d?==[?Dö\?I³º?JŠ³?Jñl?KÓu?LŸú?M«?LÊH?Kw‘?J V?J…?K¢?K:s?J„z?I¥-?HMÛ?G3ˆ?GÄs?GÖ_?Fó ?G>?Gö?Hb?H“(?Háâ?H”?Hj(?I:®?IÅ?Hê¢?G¦ì?Fr?Dçu?D= ?Dß—?E/i?D³e?DŽÍ?Do?DX2?DžT?Düé?E‚ ?Eeù?D™Z?D‹?DvY?D®¢?Eì?E{Ž?DH¿?BC¡?A–?B”A?C>‰?C ?B  ?BA¨?Açœ?Aد?BE0?BfŠ?B -?AÚÂ?A—€?ALÙ?A$@?AOÈ?A‹®?A¥2?Ah$?A;[?@¼º??ˆg??&d??iH?>úH?>…Ð?>œ?>bÿ?>Q ?>3?>-m?>g'?>ˆ³?>‹Ç?>ÜÎ?>èž?>u¸?=Âa?=/?<µÌ?<¨Ý?<œÁ?<ž?;°¦?;œ‘?;n¹?;iÈ?; )?:Yþ?:7d?:Õ?:# ?:‹?9x‘?9‚*?9þÌ?:&¬?:!~?:Æ?9à”?9Æ®?9»ô?9¢ž?9S‡?9”?8Ò ?8Øu?9ç?96?8•?8Iæ?8[s?8]ð?8 ?7Þ¸?7–Á?7g?7ðŽ?8+?7´ˆ?7FÌ?7p??8 û?7õ?7r?7l2?7[n?7ô?7F@?76¹?6c?5ÒM?5˜t?5Õ/?6Q+?6uu?6Yý?6?5ê÷?5á?5z?5_´?5až?4û?4Œ¤?4y‚?4 #?4ôI?4¦k?43ã?46;?3õ?3Ô ?3öZ?3ëŽ?3Ôq?3Ç+?3“_?3)e?2¢R?2Q?2“÷?2Kô?1€×?1PB?1¦?1©†?1gá?1x?0_A?/U?/µU?0¿?/æ(?/±i?/~í?/1 -?.® -?.F?-Ť?-te?,Ø«?,e?,”»?,¡,?,ƽ?,öù?,Ó?,~«?,Ð?+÷¸?,T?, -0?,G?+ë?+ ü?+­—?+¼¥?+¹¶?+}E?+"?*™§?*d?*¬?)æ¤?)€)?(«#?'£q?' ?(=>?(¿\?)L?)?e?)÷?(ÁO?(¤Þ?(žå?(m™?(•?'ºX?(+©?(bÌ?'Ó.?'e?' Ç?'’¦?'³?'{â?' |?'f?'(t?'`ß?'1r?&‹-?& n?%g3?%y?%@«?%PÐ?%_Z?%ŠI?%•å?%}©?%(.?$Û¸?$iØ?$-?$D?$8Û?#¶[?#6E?#P?"yÎ?!5? ˆ?!—ò?"?!m¬?Ü?-|?õê?ý”?Àå?‹¦?)í?Ax?P?J+?]„?T`?*?W5?X?ì?ºÏ?J?äN?˜•?=Ú? d?gò?F?½Ê?‹?û?Xð?÷k?ðÑ?îÍ?&O?ª?’¨?”š?ª÷?RN?àü?Èe?Í?Ù¡??@?éW?ôÂ?„|?‡?&ú?\?‡&?Îõ?ú€?ù? Ü?M?:a?'?õ¤?»^?Çœ?Ü?± ?pÄ?ùž?f,?e0?•å?™S?%?Ò…?¤Ë?PÞ?™2?@´?ŽV?pÁ?‡Ô?g?G?\?EÙ?}8?¨ý?‡ -?L}?þ? '?@¶?)·?ÚR?Êa?è”?°r?F ?Ö>?“Þ?‚Y?6?Àf?¯i?ä?Ë«?ŒÎ?Mù?'?ál?­Ó?l¤?éH?¯?´I?X¦?Î?g´??0}?xJ?#>?yj?Ï=?7?!?Ê?K?ç#?ÍÞ? -ú?;?5‡?ÆÜ?Øâ?)c?2'?¥?@?¨•?ù±?u„?¢0?©H?ì–?±0?}?=Ê?HÚ? Pž? jË? Fc? ;t? ³ ? ü»? êI? Ô¢? Ù -? %¬? óú? H’? lD? ‘›? ¹? ƒD? dá? *6? - ? ¦l?»Ž?RÅ?e??š?à.?–>þú[>øn>ï2z>áQ>Ìœ‹>¿ûó>É%>×í>⛳>ì>û>ôÆj>ü7?˜õ?Ö?…Ê?dí?Å?p?¬9?Á?ÿ ?ÇÞ?ÙÆ? Ñ?Q?¬-?©Ú?£8?³Ý?Š²?‚Í?×|?õÞ? ? ö?¤c??üå?ŠG?ÐÉ?Í;?}Ã?v?Ò?`Y?%…?*“?&?úO?üu?¸?C?¥3?´¨?]m?ë?З?Íu?ól?Éü?‘Y?q(?sÞ?E€?É?ì?/ä?->?ÕT?&¸?¹Å?ß‚? Y?+N?Á?®Ó?A×?¡½?(£>û/Ù>ë(d>è‹>õ³5>þè§?Èï?ÈV?“/?Íë?ÌÉ?¹}?ƒI?Z?G¬?X·?Y\?'B?ê”?ˆ¾?b·?…X?¸%?¡?p{?eÍ?wÒ?8Ñ?Êw?pò>ÿó1>ÿÆú?}ç?¼À?`>ÿ©>üšg>ü8>þ³•>ÿTÚ>ÿ–Æ>ÿƒs>þå>þgy>þã>ý”ž>ýOž>ýPA>üêö>üÐ<>ü(>ü´k>ü¬Ç>üuð>ü~O>ü.>û?>úóŒ>úç¿>ú¶>û÷>úÔ>úÂ>úiœ>úL}>ú ¬>ù>øŽ=>÷²>ö]â>ö>3>õ¸?>õRñ>ó#D>ôB¢>õ¿ã>õ˜>õõü>öO:>öp>õE>ôÜ_>ôÏ&>ôû7>õ>K>õHj>õCö>õO->ôÍ9>ó»[>ó¶>ô8Ÿ>ô>ôYO>óÈ<>óªG>óy,>ó*â>òç5>òÒø>òÀ©>òÃ>ò§í>ò3>ñ¼u>ñÆ>ñŸà>ñJb>ðßÑ>ðŒ¹>ðXg>ð2>ð V>ïßÊ>ï¯í>ï†F>ï`Â>ï5¥>ïª>îÙê>î®M>î1>îTh>î*¹>îY>íΙ>í•>íLÒ>í/>ìë¢>ì¼/>ìõ>ìa»>ì$ä>ëÜ5>ë¡^>ëp›>ëA“>ëà>êìÎ>êÃÅ>ê˜9>êlÍ>êB >ê™>éè>éµ´>éw«>é6Ö>é >èöÅ>èÀF>èz>è>>è *>çßð>ç²Ô>烦>çT>ç&¿>æûÈ>æÏá>æ—à>æU>æF>åí>åÀ>å”ð>åi>å5Î>äô^>ä¼o>ä”—>äkð>äH&>ä+>ä s>ãä>ã½ë>ã–·>ãn³>ãD‚>ã¢>âðŽ>⹄>ât¥>âð>áåÔ>áñ£>á²u>áq>àÞ>áô>àðË>à/Ò>ßÉø>ßÆ&>ß›Ä>ßç8>à -Œ>ßÒê>ߦ‚>ßcÝ>Þs%>ݹÿ>ÞT©>ÞÜH>ß õ>ß#>ßb~>ßp¢>ß -C>Þš[>Þ6û>ݸ3>Ý.>ÝÙã>ÝÛŸ>Ýk6>Ý_>ÜÈF>Üð>ÜÍš>Üça>Ümû>Ü*M>ÛC>Ú/À>ÚiÓ>Úþï>ÛÜ>Û -+>Û >Û(ˆ>ÚÕ¥>Ú-k>Ù—m>ÙWÁ>ÙLó>Ù.R>Øü£>Ø°p>ØÎ>ØžŸ>×/0>ÔèA>ÎÔ÷>ÄöÆ>ÆwÎ>Ïaà>Òýÿ>Óõ4>Ô¤Z>Õ'¿>Ör>Õö>Ô|•>ÓBD>Ô^»>Õä>Õ¶¯>ÕÜ>ÔpÄ>Ó¿¿>Ô å>Ô˜×>Ô¼A>Ô\>ÔF>>ÓÄò>Ó=>Ó3™>ÓM»>Ó#G>ÒÜu>ÒóŠ>ÒÌs>Òž$>Ò}ë>Ò=ó>ÑÏ>ÐÓŸ>Шp>ÑGG>ÑAX>Ñ"œ>Ðöð>Љ:>Ð3¹>Ð1<>Ð >Ïã@>Ï–>ÏI>Ï2 >Ïâ>ÎΑ>Π´>Î`>κ>Íê|>Í¿€>͈>ÍM>Í9>Ìî•>ÌÇ'>ÌG>Ìc.>Ì&é>Ëþ>ËÛü>˸v>Ë‘Î>Ëm>ËLü>Ë-°>Ë à>Êí}>ÊÎ}>ʲt>Ê›ÿ>Ê…õ>Ênø>ÊIq>ʽ>ÉÅH>É¢§>Ép{>É5>ÈÐî>Èšr>Èo>ÈGu>ÈÉ>Ççj>Ç»6>Ç”Ö>Çp>ÇDf>ÇÝ>ÆÑA>Æ­E>Æ­>Æ}¢>Æp¯>ÆDM>Æ~>Åìp>ÅÌ!>Åy>Ä–Ä>ÄRª>Äæ>Äþ)>Äá—>ľ˜>ĘH>Är$>ÄL]>Ä'«>Ãö¸>ùª>Ã…Ð>ÃZV>Ã0m>à )>ÂëQ>º«>ÂlU>Â5¤>Â52>Â>Á׬>Á¥â>Áz>ÁL`>ÀÁá>»>¯Ž7>³#û>¼Üú>¿¶Ð>À -ù>¿ã>¿¾h>¿”}>¿eQ>¿7‘>¿Ã>¾ð¸>¾ÃÛ>¾M>¾P(>½ô™>½ö>½¼>¼ƒB>¼DI>¼ >»ÉÕ>»5n>º½ê>ºÑZ>» ‰>»8j>»E>»7Ý>»#K>» 4>ºó#>ºÙÞ>º½W>º¡p>ºÑ>ºW’>º5ª>ºå>¹û>¹àw>¹ÃÉ>¹§É>¹‘Í>¹m>¹5>¹É>¸Î$>¸µ¿>¸¢n>¸j>¸.}>¸-õ>¸,ê>¸c>·êÝ>·­:>·Ÿh>·¯U>·ˆÅ>·ZÇ>·M+>·î>·;>¶öã>¶½Ì>¶“–>¶§>· >¶I>µÄ]>¶B>¶Dp>¶$c>µ‘Í>µ`C>´õ¾>´›>´]”>´)þ>³ÐŠ>´Ö>´3>³œD>³˜¬>³>²øÞ>³l>³i§>³>²Ö->²¸œ>²õ>²VA>²(®>²N>²yB>²\3>²'y>²+>²"I>²[>²ŸF>²|l>²L>²">±µa>±Ýƒ>²%Š>±ËÁ>±QË>±->°æa>°»Ò>°V´>¯á">¯·ê>¯V!>®øç>®û’>®ÿD>®Ì>®Á>®ª³>®Œ´>®~˜>®§¼>®Zû>­µ>­~ô>­îâ>®>­Ð„>­d‡>­ˆ>­í>­Ùê>­dD>¬âË>¬ÿ>ª·É>«XÇ>¬/à>¬E>¬JW>¬>¬h>«êØ>«{+>«Ð>«â>«Í>ªÍ`>ªœÐ>ªƒÖ>ª‚z>ªc*>ª5R>ªd>ª&>©è3>©Å„>©y>©s½>©6(>¨óŽ>¨¾h>¨Ž>¨e>>¨>·>¨¾>§ê–>§¶i>§Š>§n~>§OÛ>§¡>¦ÛM>¦Œ•>¦k]>¦zÏ>¦hÄ>¦Jî>¦$_>¦ß>¥ü>¥åã>¥Ìè>¥³C>¥—u>¥xÚ>¥P>¤˜d>¢«ö>¢íÕ>¤,4>¤CÄ>¤"¢>¤*>£àÚ>£¹}>£É>£ƒL>£qe>£Rÿ>£3G>£È>¢õ|>¢×ƒ>¢¶Ç>¢–á>¢zý>¢\q>¢2ò>¢ „>¡ï/>¡Óy>¡¶5>¡”%>¡l0>¡<>¡ü> ÷(> Ù> ºÜ> j> rò> 3> $>  Ä> T>Ÿä+>Ÿ¶Ú>ŸL>Ÿmm>ŸKÅ>Ÿ(C>žüø>žÉ]>ž }>žš>ž` >ž>>žt>ìÒ>¹Ï>Ž¤>a&>=[>`>œùö>œÐñ>œžã>œdˆ>œ"$>›õo>›æ/>›Í­>›¼T>›±¤>›•–>›zò>›`™>››3À>›(>›>šüV>šæŸ>šé¤>šì>šá'>šÍn>šŽ>šYÊ>š&“>š9>š†>™ðþ>™Ðô>™fs>˜À–>—Uö>•ò">•ÃX>—m>—á÷>—Êv>—Ù‰>˜=o>˜L÷>˜²>˜J>—ú°>—¨ >—Ü×>—Ì¥>—…ä>— Ã>—Bš>—Ð2>˜u>˜1Å>—£>—xÅ>—{H>–ê>•~|>•3>•â_>–î>–RB>–ZÜ>–Hà>–/>–!Ø>•þ:>• ê>–GÄ>–|ù>–"Þ>•¾€>•Sþ>”‡>”‚¦>”ê©>•(k>”öj>• -B>”Ês>”d>”Yf>”\œ>”`B>”Ë>“ Å>’;ú>’´A>’„#>’P©>‘œ7>l¬>_ >‘#V>Ã>‘Ü¥>’'‡>¦ÿ>õÃ>Êf>Ž1Î>ŒM>‹%e>N5>1>-Q>‹üµ>S{>ÂZ>ŽKH>Œÿ >ŽÊG>ÉÂ>Ž˜‚> Ü>†«>Œw³>!˜>Œ‘M>¦>‹Ç'>‹uÚ>Èn>Ú>Z >'+>Žã>ŽD³>º7>YÉ>jÿ>4é>->rÙ>÷–>åË>ŒØÈ>Š¤ú>ˆ„•>‡o×>‰KU>‹m‚>ŠºQ>‹A„>‹Ð¹>Œ¨­>Œ¥Å>ŒÝ>ŒÊ°>Œ‰Ý>‹¿I>Š\6>Š ¼>‹LÕ>‹pZ>‹0>Šª>ŠZ>‰ÖŒ>ˆh>‰$ˆ>ŠÇÊ>ŠtY>ˆ‘>ˆê>‰e<>‡ž_>‡d>‰CÂ>‰e>‰Ò>‡Ö >†µì>†ºÃ>†ø±>‡f!>‰ ‹>ˆPÆ>†˜‚>†¦š>‡fÜ>‡Œ§>‡1¸>†I>†Ço>‡à>ˆQÜ>ˆ">‡>†ç>†ä>†ï™>†°n>†´¾>†È™>†â >‡”>†œÏ>†‡È>†—#>†JÖ>† -ð>…ÄÈ>…;>…[Å>„þÕ>…º>…O>„á>„Œ.>„›2>„w >„]>„O‘>„1h>„ Ê>ƒë°>ƒÕd>ƒÂÝ>ƒ³>ƒîØ>ƒæ:>ƒM>ƒ•>‚ðš>‚Õb>‚¾>‚¨>‚“æ>‚~r>‚eN>‚vØ>ƒ74>‚ûY>‚v>Îø>¯;>““>|0>h®>QÛ>.=> «>€ï¶>€Õ&>€¼ˆ>€¥'>€‹>€y>“>‚1L>€áõ>€å>Ïf>£›>rñ>?Ì> Û>~Þ‘>~®é>~|ú>~Px>~è>}Þ>}²±>}Š->}\M>}'š>|ï*>|Ái>|–a>|c1>|) >{î±>{¼ž>{Š¸>{Wÿ>{#é>zò>z¿ >z‰G>zQí>zY>yÜœ>zí>}Ò1>;æ>z±>x°>x}K>xEŠ>x$°>wé{>w¬>wb¡>w*">w%1>vü>vhP>ueŒ>t«#>s¦§>q)à>s'ä>tŸŠ>t·‘>tÔƒ>tz >sà4>s6$>s9Ù>sÄs>tÃ[>tÀ>s)à>r‡ >r†>rÆ>qX`>qÏ>pÆ0>qF>q¹>q2>píR>qJŠ>pà!>paî>p6±>p6>okÔ>o…>oGD>oÇ>p9>o‹3>p7v>o¯>mX¿>m(>mIa>lîí>lÈg>lÒ>m‹Ó>m!1>lÎ>mm®>nPŸ>m_>kÐì>i`9>hˆ*>jåü>l¿Á>lœ3>lC>kòv>k(>j q>iÌz>jmË>k >l]>mI>lÞŠ>mk>k…ß>g3=>g\±>i-—>jÔ>iy>fj>d¦>b¯†>dá©>j)>hl>e‰ñ>f2>hÏø>k0Q>kgò>jbÓ>hÚK>f¹>eï¢>g›<>eÄâ>c…4>e>d>¾>cWŸ>béÖ>`ïP>bó5>fZš>g¬>h#Á>gm>fÏ>dU[>e1>fVç>f–d>f¬>gzÏ>g—o>g™à>hŠ‹>fä~>f·w>f×>fK>eU(>dà]>eŸ>d½²>chV>asÎ>aWÜ>av>_òä>_ Â>_aa>_û­>_½ý>^•ß>` +>býº>cf7>aâ¤>b!>c…>e+Ç>dÖZ>ciÑ>czJ>bïE>`®¹>^A>\Ò~>Zô‚>ZjY>Y²—>Y¡K>[UH>\uõ>\l >\(Ð>]ã>_Q¼>`Ý>a]>aú:>aÍé>aEÅ>`=ø>`85>_ê‚>_XZ>_!”>\ìÓ>Zöˆ>Yâ>Z !>YÑi>Waà>UIÆ>Sßµ>QÅÔ>PO´>P1ÿ>RÛÄ>UTu>Và]>W»Ã>XŠ>Z>[•‹>]k>]¨>]ZÔ>\¿;>]ïG>^ÏU>_fµ>_K!>^õà>^‹>\o>\|R>\ż>[Bx>ZY¯>Z8T>X3">V€ç>U>Sëò>Qu>O~‰>MR¼>J}’>H0p>GÝ3>Iœó>LZ>N&@>PŠô>Rär>T»‰>U‘ >Vq”>YS>Z'>[x>[±Æ>\¢X>\Ú}>\l>\œA>\Ã=>]9¨>]œ3>]çK>^3>^[C>^µ>^‹ÿ>]Ñ>\>Z˜Ó>Zí>ZÂ>Xÿ(>W -±>UÛ“>U—>S†£>PF°>M¬4>LN>Ir«>Foç>Béj>?>=Y><=>=Š >A/>F*>Igÿ>J»æ>LŠ>Nžã>P N>Q0Ï>Qj>R,)>Qß0>Qõ¡>R}v>T&¬>TþC>V”{>W›R>Yy>X0>Wë>Xá3>X¶t>X%;>WM>VƒD>V.†>V,>U_Ð>TÁ>UÁ >V‡Ã>Tz¥>R¸>R >S]>TÙö>S¤->Q>O¼G>N5Z>LÎp>L k>J.>H>F{>DRÏ>B>?ö><“->9šô>4f.>/l7>*À">'ê0>*’‘>0aÆ>5ƒ/>9½>=Vû>@¬>A˜9>B*0>CÂ>E(¢>EâT>Fû>F;ë>F[2>F:ª>F4>Eô>EÈã>E±n>E£>E‘>E{ >EbO>E< >D/Ù>BŠm>Dÿ>DÁô>D¥Ø>Du¢>D,‰>Cõô>CÍ¢>C¦>C}Ö>CU*>C,>CL>BÖ¦>BšE>BcÙ>B;™>B7>Að>Aå÷>AÞÄ>AwG>A3\>@ÿ¡>@Éè>@‘Õ>@O›>@ž>?¼Ð>?wC>?+ø>>Ù@>>}Ï>>?>=Ÿ->=É>:ÒL>7|,>8}>7ñu>6'½>3›>0§–>,šC>'@˜>ü“> ˜>Øú>ùè>#8^>):•>-¥¸>0î>3]>5)¼>6rš>7\™>8 °>8>8ëV>9+b>9UÖ>9o®>9}4>9€Ö>9uÔ>7î$>0´4>3e>8Áê>9õ>9´>8ãó>8Ák>8’>8ik>8H'>7K>4»ñ>6eÃ>7¦O>7“Û>7oÉ>7K >7!!>6ëŽ>6¾“>6™>6t>6OQ>6.>6™>5ó>5Ìî>5¦ >5yË>5B>5N>4ï²>4ÉÍ>4£à>4~W>4X¢>43>4 Â>3Þ>3Ó>3`7>32¼>3 N>2ã½>2¼>2“ô>2k¿>2C9>2Ã>1ñ8>1¿Ì>1†,>1Vã>1+ÿ>1i>0Ô >0¦×>0xc>0De>/üh>/¸>/€™>/G†>/ -2>.ÇÌ>.~ó>..§>-Óñ>-iÐ>,n>&ÿ&>#ÿÍ>&(¹>(NÏ>&ŠO>$2Ù>!æ>û>d|>vz>(K>,> N>UŠ>n—>©«>!ØÏ>$Fá>&CÓ>'>'Û>'è©>(æñ>)A•>)vÉ>)˜‡>)«Š>)³t>)¯×>)šÇ>)…2>)sä>)`™>)Jä>)2Ñ>)ò>(ýï>(áþ>(ÄÇ>(£‰>(uÿ>(:>&~å>$`J>'ì>'È/>'¬—>'‹»>'jÅ>'I>'$>&ôP>&ɳ>&¥S>&->#÷M>% Ì>&# >& j>%è¦>%Å'>%šÛ>%c¡>%0 >$þÅ>$Õ >$ æ>" ³>à >#u>$*K>#°>#Ç‘>#Ìj>#¦¨>#ƒµ>#a>#>`>#3>"ùÈ>"×>>"´¶>"’1>"i³>"7É>"¿>!í/>!Ë>!©Œ>!‡_>!bË>!4Ø>!ø> ÛC> ¸X> –[> té> SA> 1Ž> Ó>íË>ÎV>°:>Š§>gó>FÁ>%•>->áí>·3>‡æ>cÐ>B>ø>õ9>Ä‚>žÈ>|>Y`>5">Q>Ø>²}>*>k€>Gq>#=>þø>Ù¼>´G>ŒÜ>Zí>(¥>þÌ>Õe>ªl>}_>N=>^>À>¿þ>߉>¦>­^>;æ>ª>òA>¶¶>‹~>Ù¾>­Ì>÷ð>®°> —>`Ú>r =òË==Þ°=âš}=øZl>üÀ> ÿ> ·ù>DÎ>!>U’>>Ñ>ä >X·>©‹>àp>[>»>#è>!ò>š>ƒ>ôT>ãø>Ñk>¼ñ>¦Æ>j>w>Xy>s>g’>r>Ó‡>–Q>1>µý>Þ‹>Gh>‰>ë>ɪ>«È>û>oÙ>RR>9[>#H>š>çÂ>ÈÄ>©å>‹#>ls>M•>.ô>H>ñv>ÌN> `>}Ñ>_ >@È>"&>->æd>ȹ>ª<>‹f>g >;a>=>¶>—?>%S>ó>už>_<> â¹> „Ý> ­ä> É > ¶˜> ™> z> Zü> >O> œ> ´> äÕ> ÆY>  ú> v¦> UÛ> 7â> R> ý> á> Ã> ¤f> †è> i?> CW> î> -úD> -Ý&> -À"> -£> -†> -i> -L-> -/[> -á> ìñ> Ä/> Ç> -¾à> -[ > \Ÿ> /> ¶>õ¦>Øä>º$>’v>l9>M÷>1->>÷>>Ú—>½¼>¡>„k>fG>?'>7>û>ß'>ÂÝ>¦¹>ŠO>mû>Q>5Ï>©>ð>Ë‚>®æ>’õ>vó>[>?>#Ø>">ìq>Î5>¦³>€ó>,Û>ñ¾>M>=1>V—>Ú}>À©>¤ >„ã>\4>9®>>(>å%>É1>­‰>’!>vA>Z!>; >>ò!>Ö‰>µQ>Œq>l÷>PK>3Á>1>òÌ>À>› >}–>`S>C(>%;>¡=ÿÓw=ÿ–×=ÿX¼=ÿÎ=þÚÇ=þšj=þVQ=þ=ýÊ=ý2=ý0q=üÝ'=ü‚/=üË=û“ð=ûL=ùЫ=ïJ=ê8w=íg¿=ô1—=õ•=óÃÊ=ñKí=íö†=égÆ=ã=Ù¶™=ʱ’=´ªê=³Ò=È›¹=ؼ=áh=ç•Ä=ëË=î³=ð¾=ò/=ó2Z=óåé=ô`¬=ô²8=ôäL=õT=õ8=ôïº=ôØd=ôÄ^=ô«ª=ôŽË=ôn=ôI„=ô#=óúó=óÑ=ó¡%=ó^¤=ó$ø=òòæ=ò½1=ò´š=òƒ-=ñøé=í==éÆ»=ð”­=ñtÜ=ñ.Â=ðó<=ðÁ(=ðN=ð]¼=ð3ñ=ð =ïÞp=ï«=ïw•=ï;=îñ6=î·b=î„h=îQ½=î=íë°=í¸M=퇸=íU†=í"¹=ìèÄ=ìž÷=ìdÖ=ì2ì=ì=ëΙ=ë›Ù=ëi¼=ë8…=ë|=êÔ =ê™=êQ=ê,=éçñ=é½=é‰×=éR‰=é ½=èïn=è½î=è‹Q=èM³=èp=çÒ =çfý=ãoA=âe=æ£=æÝi=æ­‚=æ};=æL‘=æS=åÊø=å–c=åf¯=å6è=å…=ä×ò=ä¨-=äx´=äI=ä =ãÉÍ=ã–X=ãfé=âEû=Öz›=ÖeÙ=á¼í=âw'=âG4=âq=áãÓ=᤭=áb =á.â=àýù=àÍz=à©=àlž=à*=ßã1=ß°=ßÓ=ß9g=Þè-=Þé==ÞÃz=Þ’O=Þb´=Þ3!=ÞÃ=ÝÔ=Ý¥ -=Ýu±=ÝGe=ÝŸ=Üç7=ܨ.=ÜiJ=Ü9=Ü -=ÛÛG=Û­!=Û~=ÛOY=Û ÿ=Úòg=ÚÀÌ=Ú£=ÚDF=Ú=Ùæ²=Ù¸!=ÙŠ=Ù[þ=Ù-Ö=ØÿÏ=ØÑÉ=Ø =Ø_ó=Ø%ø=×÷–=×Éø=לN=×n =×A=×?=Öåì=Ö¸5=Ö‡=ÖFñ=Ö l=Õßl=Õ²=Õ„€=ÕW”=Õ* =Ôý7=ÔÐ=Ô¢ç=Ôs!=Ô4—=Óú=ÓÌd=ÓŸ|=Óri=ÓEw=Ó×=Òì;=ÒÁ0=Ò˜\=ÒdÀ=Ò%)=Ñì =Ѿ„=Ñ’3=Ñe†=Ñ8ü=Ñ r=ÐàF=д=ЇÍ=ÐVo=І=Ïâo=ϸ§=ÏÚ=Ï`"=Ï9¿=Ï 9=ÎÙD=έ=ÎY=ÎQÝ=Îv=ÍÜÈ=Í°v=Í„Ä=ÍXÊ=Í-+=ÍÖ=ÌÖ>=̪U=ÌR=ÌO8=Ìí=ËÜü=˱†=ˆH=ËZ¿=Ë/ž=ËÒ=ÊÙ‘=Ê®t=ʃF=ÊU¥=Êæ=Éâ=ɵ÷=É‹Û=Éa=É6(=É m=Èá=ȵÅ=È‹y=È_3=È%ª=Çì¨=ÇÀ»=Ç–"=Çk‚=ÇA›=ÇS=ÆìŸ=Æ‘=Ƙ,=Æm=Æ6G=Åû“=Åϧ=Å¥»=Å{&=ÅQ¾=Å(?=Äþu=ÄÔ =Ī%=Ä,=ÄG{=Ä9=Ãä‹=úê=Ñe=ÃgÜ=Ã>G=Ãå=Âé$=¨æ=Âiä=Â>Õ=Â=ÁëÐ=ÁÂ;=Á™B=Áp]=ÁFâ=Á†=Àõ+=ÀËû=À¢Í=Àz=ÀQ¯=À)=ÀH=¿Ø,=¿¯ =¿€Ë=¿F=¿‚=¾ð…=¾ÈQ=¾ ’=¾yp=¾QP=¾)±=¾§=½Úv=½©€=½r›=½I,=½#h=¼üÊ=¼Ög=¼± -=¼‹¹=¼g=¼B<=¼Í=»ð‰=»ºy=»AD=¶g¦=¶­ö=ºßˆ=ºðý=ºÆy=º›¬=ºq=ºF5=ºV=¹Ô}=¹«‰=¹‚ü=¹Zº=¹2O=¹ -S=¸âó=¸»ü=¸•L=¸m¹=¸-= ¸=Ÿè=ŸÄS=Ÿ¢=Ÿ€=Ÿ^&=Ÿ< =Ÿ7=žøŸ=žÖ=ž´Ñ=ž“=žq]=žOì=ž-\=žÀ=ž?=ž%&=½=„y=ME=Aà=m=,¢=*N=œ¨O=œ×=œZo=œ(b=›ÿ“=›Ýô=›¼Ê=››k=›yµ=›X5=›7.=›=šôÂ=šÓ=š²r=š‘S=šp=šLô=ša=™çÑ=™Æk=™¥Š=™„Ë=™cÅ=™C =™"k=™u=˜àä=˜ÀV=˜Ÿ”=˜~ç=˜]÷=˜=ø=˜j=—üŠ=—Óî=—œ¼=—tÊ=—T¥=—2l=—æ=–ôe=–Ó¸=–²ñ=–“å=–s¼=–SP=–35=–=•ó==•ÓN=•²˜=•‘_=•rÌ=•R£=•*=”ý¦=”Üm=”½=”œì=”|ó=”\z=”0k=”=“â=“ÁÒ=“¢í=“ƒˆ=“aÀ=“B¥=“"d=’ýi=’äÐ=’ÆJ=’¦Ü=’‡†=’h$=’I=’)ˆ=’ Ø=‘àµ=‘µç=‘–“=‘w®=‘X’=‘9[=‘¤=ïÄ=Âb=¡Ò=‚˜=c}=Dà=%È=ß=ç;=È.=ª5=‹å=mL=NV=/¼=Š=Žñ†=ŽÑo=Ž§|=Ž}=ŽZF=Ž;—=Žø=Ž…=ç£=È=¦9=Œ=nA=EP=W=ŒÿÎ=ŒáQ=ŒÃV=Œ¥=Œƒ=ŒUX=Œ0Ï=ŒÇ=‹ôÙ=‹Öë=‹¹m=‹›²=‹~ -=‹`=‹B=‹$9=‹=Šè»=ŠÊ‘=Š­*=Š£=Šqƒ=ŠL¼=Š#o=Š>=‰ç =‰É3=‰«×=‰Žæ=‰q9=‰S?=‰6/=‰1=ˆð=ˆÊW=ˆ¬K=ˆw=ˆr[=ˆT"=ˆ60=ˆ è=‡ä8=‡Ær=‡©È=‡Œ˜=‡o’=‡RÕ=‡5©=‡½=†û»=†ÞÔ=†ÁÎ=†¤ì=†ˆ%=†k5=†N+=†1%=†7=…é‘=…Ç=…ªt=…³=…q<=…TM=…7¤=…z=„þ›=„áú=„Äd=„œT=„y)=„\»=„@ƒ=„$=„^=ƒëV=ƒÏ=ƒ²ü=ƒ–m=ƒx=ƒP%=ƒ.Ø=ƒ¦=‚ôk=‚ÚÝ=‚Á"=‚§¸=‚‡=‚cJ=‚5 =‚¥=ùÊ=Ü=Á”=¦¨=Šý=o¸=TU=8Ô=S=Æ=€æ-=€ÊÖ=€° =€•=€yˆ=€^¬=€BÖ=€@¼r@¾‘Å@¿¡[@¿áÿ@¿ÈV@¿–´@¿b@¿/:@¾ûÃ@¾Å$@¾€§@¾ Î@½" @»Š|@¹‘ü@¸9Ç@¸eì@¹Ô@»WÓ@¼Å@¼n@»¹û@»›­@»¨Þ@»–Ø@»6z@º±š@ºg3@º…g@ºÓ@ºðü@º»ò@ºi @º@¯@ºP@ºc‰@ºL±@º±@¹öŸ@¹ú³@º.@ºÎ@ºC@¹çï@¹Ç7@¹¦¥@¹‰u@¹pü@¹Zà@¹C>@¹(k@¹ -Ù@¸êl@¸Åï@¸œŠ@¸n'@¸:`@·ý>@·§@·ü@¶D´@µV•@´É~@´å}@µH@µb@³0»@¯ß/@¬¥¿@«Ö«@®)i@±ÓM@´Ž‹@µ§@µÈ´@µ¾@µÌŒ@µÝ¿@µ×'@µ¸®@µŒ @µT`@µá@´¾;@´sY@´Bô@´0@´*@´þ@³ûÿ@³©U@²úo@±Òc@°FZ@®r @¬;´@©Ù÷@¨€¬@©hÏ@¬ Ø@®‡Ð@¯¤ý@¯³z@¯® @°&Ú@°îq@±Œ]@±ËÇ@±Å·@±¢W@±wÆ@±M)@±##@°õa@°´@°:Å@¯_ÿ@®7@@­D@­ Å@­Íç@®³Ú@¯K@¯~ß@¯{‰@¯g@¯O@¯5°@¯3@¯þ@®èK@®ÑŒ@®¼‘@®© @®—@®†à@®x-@®f@®Aa@­ñ½@­qï@¬òâ@¬À@¬ìã@­9"@­c&@­^@­=Å@­È@¬åÛ@¬´W@¬‚#@¬WÅ@¬<=@¬+Ò@¬@«û@@«Ës@«–@«q@«`L@«BÓ@ªû,@ª© @ª9@ª·z@ªãÀ@ªá†@ª¶õ@ªë@ªJ@ª@©ÚH@©œ¸@©\´@©H@¨Ö%@¨•ï@¨ca@¨B¬@¨,Ø@¨ê@§ÿ|@§ãá@§Æ‚@§¨…@§Šq@§ká@§Iñ@§@¦^@¥zG@£d­@ êK@ŸÄ@ -.@¢F"@¤KŒ@¥l]@¥Ì @¥Ø@¥Ó@¥Í@¥Á@¥¨@¥}@¥Aí@¥%@¤äo@¤ß›@¤à@¤·@¤0@£>/@¢:È@¡Æü@¢)À@¢ü-@£¦·@£î@£ì®@£Êj@£œ@£h@£0J@¢ø8@¢Ä‚@¢˜@¢pí@¢Iƒ@¢@¡èj@¡¶€@¡@@¡nD@¡Fh@¡^@ ç8@ ·À@ €Ð@ L:@ -}@ #õ@ ×@  ]@ŸïÍ@ŸÓ¶@Ÿ±½@Ÿ|‘@Ÿ Ù@žšo@ž0@z^@œÑ@›îR@›<‚@›Vº@œ'1@œï§@4@&§@0ý@kË@¦@¸Ù@§Ä@…‡@X€@¿@œÀ°@œm¥@œBx@œ>þ@œ@û@œ3#@œD@œ ï@›õŽ@›×T@›¬0@›y¦@›L`@›/@›!*@›º@šùÈ@šËÏ@š…;@šø@™`ð@˜Y@–Ë@”‚’@”fê@•˜A@–~Æ@•¯*@“0{@t¶@¥@„Ë@‘L@“ÀR@–×@—–Ó@˜<@˜^Ò@˜Pî@˜5Ž@˜û@—îG@—Àš@—“!@—rÜ@—cm@—W@@—4£@–Ö1@–@• Ú@”-˜@“ÑŸ@“Äe@“·#@“ÚË@”md@•*è@•§î@•ÊÃ@•³¹@•@•9§@”çœ@”š¥@”u±@”‹@”»­@”Ïï@”°°@”kk@”b@“‚^@’£@‘—Ù@åJ@ö¡@‘±ò@’“`@“&¸@“X-@“SQ@“9›@“É@’x”@‘„<@yË@ˆ@3 @O@·V@ŽñV@Žÿ@«@‘,¸@‘Ô`@‘øž@‘ã|@‘Êÿ@‘¼¢@‘¯S@‘›ˆ@‘‚ñ@‘i¦@‘Pù@‘8)@‘c@‘´@è³@Í{@°Ó@ŒÜ@P7@ä @Qç@Žàí@ŽÛî@3˜@@¶}@­@”@@}Ù@_@ ë@Ž;@‹ç@ˆm@… @„Dæ@†¿ä@ŠÙÃ@Ž1@®£@«¿@ã@Ž`©@é+@¤ @†Ö@|%@ko@;|@ŒÆB@‹èY@ŠÍÉ@Š@Š9¶@Šüù@‹®¤@‹ðù@‹Ü@‹¬z@‹‚@‹jÊ@‹y@‹¯ä@‹ÜO@‹°@‹_@Š<@ˆê*@ˆŸ@‡É‹@ˆ +@ˆK@‰W@‰_£@‰’\@‰}Ö@‰@ˆ§ @ˆwÉ@ˆ§À@ˆ÷Â@‰&|@‰*»@‰2@‰m@ˆè@ˆÍ3@ˆ±>@ˆ•ä@ˆ|@ˆbd@ˆG@ˆ*Â@ˆï@‡ôŒ@‡Û•@‡Ã@‡«£@‡“~@‡z±@‡`¥@‡DÔ@‡'c@‡4@†ãi@†°4@†lj@†-@†2@†Ö@†!ï@†Ì@…õ -@…Ô@…´ÿ@…–™@…|õ@…\á@…Þ@„ÀX@„o@„W…@„y @„§ª@„µ¹@„ ¡@„«@„e@„=Ã@„Ã@ƒÒ@ƒÃÀ@ƒÕ•@ƒçé@ƒç‰@ƒ×ª@ƒÁ-@ƒ¨¹@ƒœ@ƒv3@ƒ\°@ƒC@ƒ)j@ƒ_@‚ï°@‚»Ì@‚gÁ@‚ƒ@´S@S@˜Q@¿%@ç@÷[@ðÜ@ß @Ç—@¬Þ@“N@~Ÿ@mr@[e@D.@Ó@€Ö@€Z×@ž@í@mÄ@€m@€@Å¥@Hd@Fï@®Þ@€D@€m@€ ->@éè@º@‰@W…@&Ü@~÷œ@~ȹ@~˜ý@~h2@~6¢@~›@}Òu@} @}o#@}=u@} À@|ÓÐ@|ž<@|iÁ@|2$@{ñï@{§G@{V®@{ x@zØT@zÀ#@z¸ð@z¯7@zM@zHþ@yÕ6@y@Õ@xºˆ@x{â@x‰@x¦x@xŸ@xuÕ@xIÐ@x%t@wýE@wÆÓ@wpÀ@vô‡@v„â@v\I@vmk@v‰@všE@v™P@v~‚@vM-@uðT@uè@sw¸@qz]@p @o£@p-@q ©@qäë@r¯Ã@sl @sýü@tQY@tpæ@tgç@t7«@sóÆ@s°@sJé@rie@pÚ@n¥}@mq@lß @mÞA@o@oði@p^î@p w@pã4@q)@qO·@qP“@qIï@qPY@qZà@qIã@q1@pœ@pŸ@oh‡@nLÚ@lnë@iã6@gºõ@gm -@i8P@kÒq@mÔ@@nä@nß^@n\@n#±@mÜŒ@mÃ-@mà @m¨G@m/F@la–@k±.@kŽ¨@kûÿ@lB@m™@mâ@l@kì+@kBÍ@j©–@iåÒ@h5@f"@bh¬@^…§@\÷¹@^ü¥@bÑõ@eån@gH @gv˜@g&˜@f¬3@fÄ@evñ@e -¥@dý§@eN<@e¬8@e¹a@eeÃ@dâ¯@dXñ@cÝÂ@cŒå@co‚@cw¦@c§<@cüI@dJ}@dX3@d\@cÉ¡@c¥Ñ@cšö@coW@c7Ü@cq@bÌ@b:×@aD%@_;@[+h@U`ø@Pu>@O©Æ@Sl@XÌ>@\Û@^ëæ@_’ˆ@_KR@^˜E@^+Ã@^XT@^Ð@^ôð@^E@\š@ZÂ@W;ƒ@Tò@T…ò@?<ð@Iúµ@W®)@`~r@a¾÷@]3w@Ui@LËÃ@G}È@IÝ}@SCh@]æ @dÏÚ@gT@fLí@dlÑ@aÚA@\•3@SKY@IMµ@ErO@K#¦@VX@_Q1@cbÍ@c“ú@c=5@d´Ì@g @gÌ/@eF®@^à~@TsÆ@HŽj@AM@CÆÏ@Nn@ZžÍ@cuÆ@hŒÒ@kP@lÅš@m€á@mæ@mý@mjý@käÇ@it @eãf@_õo@V­@Hþù@>UŒ@=dê@G+@T“í@^;3@b¨@aç^@`žÃ@`Ô%@c†B@glJ@j¦›@lum@lôº@l’Ã@l@k¶@k;ñ@j -q@gÏ@cÖš@\ªû@QM @Cùt@;t@>r@JD·@WòR@aIè@eþÌ@gèé@hdf@hb(@h‘£@i#ü@ièÛ@jƒ@jw8@i\o@gR@ed@dè÷@fÜ@g™6@h­@hõ˜@h/P@fl>@d®ó@cæ@cOQ@`Óœ@Z„¸@O”@A¸@6ï+@6͈@BOˆ@Q—ø@\°3@bC@cêÿ@c´Æ@aAœ@]1)@Zrÿ@[¶Y@_ü+@d-@fW%@gm{@gç}@h @gå¬@gƒy@fõæ@eÔ‚@b}\@Z˜@NŽÄ@E(Þ@Fh~@Q ñ@\8Ì@b~C@dȤ@e‡±@eÏT@e°µ@dö@c~†@a–b@_·K@]vÐ@Y/í@Q% @DÄt@6¨Ã@-àp@0^‰@;;ø@Fª–@OŠÃ@V¢§@[z @]e@]®¶@^2@_ë@_¤Ä@_kZ@^º¾@^W©@^y´@^­¾@^¥‡@^è@^xq@]Öª@\E˜@Z~@YÃþ@Zcæ@[@\t;@\ÊÖ@\³q@\hW@[ø.@[XU@Z³=@YÿE@X‰ÿ@Uâ×@Seu@SFé@UÛ@UÓ@Sä-@Q¯³@Rj@@U·„@X†»@YYÑ@Y4“@Y,Ú@Y@#@YZ@Ycð@XÄ2@W]û@V3Ì@V³@V Ã@T˜Š@OºL@E¯@757@*µY@)k@3ï@C&I@NXú@SǨ@U²f@V1@VmM@VÛì@WPì@Wˆ@W…Ä@W\F@Wü@V·ß@VJÅ@UÌ^@UV¬@TðX@T‚@T'ƒ@TÝ@SÌæ@Ròâ@Qav@P/Á@P€@QÄf@R“@Rv·@Q~¹@ORZ@L#@I@I=k@K ˆ@M5ö@Mï~@L’g@IxX@E›@CÐ@D@GÝ@Kè@N$q@M/@G0L@<¢5@4Öà@7Œ}@AMó@IBÇ@LÐ}@MñX@NAÆ@N[@NdÁ@NT|@Mã@LÚÉ@K­Ò@K/@Kœ@L9º@L· @Lõé@M.¾@Mhv@M@KŒz@H‡‹@DÆ[@BG-@Bç²@F@I=Ž@Jÿ&@Kw„@K8@I”x@E»z@?^d@9ØÆ@8³Ñ@8‹@1w±@"A@(@ {@ °@&Ùˆ@2¿~@:AD@?áw@D€@Fdî@Gbá@Gßp@Gñl@GMe@EÏC@C¥b@AÁd@A]Ž@BU,@Cgk@DE@D @DþM@DîE@D…J@C»Í@A¶Á@<¨@4m@,F@,äh@4-Ð@;”.@?l@@­¿@@ì1@@Ê)@@_W@?¥@>°\@=ßH@<õ4@9üÏ@3ò¶@.†1@.s@3sý@9N£@<å?@>Mž@>Ô³@?/™@?\á@?LÁ@?> @?Y•@?j @?;@=Åu@;iÑ@6åR@.P@#¼œ@¨@"—¨@.g°@7ìM@;Üô@<@<,á@;gš@9è’@7ú•@6à’@7[²@8iÉ@8{h@7 (@4€Ç@2ï@1#‰@1Á_@3›@4òç@6ÉÊ@7±@7ÀÈ@7³x@7ÃÙ@7½ö@7ˆÿ@7DÆ@6ù¡@6‹€@5ú¯@5n”@5@4òo@4ÓÀ@4 "@4oè@4T­@4>e@4/9@4A§@4Wk@40@2ºB@0f@,QÅ@)-Ÿ@'|Œ@&â8@'l÷@(®@(•¯@'u@'áî@*n @,é@.+–@.©=@.±è@.H@-”Õ@,Ùl@,hJ@,D,@+¤@* R@(¬6@);ó@+Pª@,ݼ@-Ü@,žÒ@+ÔØ@*IÞ@'û@%Ùm@#Ž@ô‡@†à@Yw@Q@Ï\@ð­@a@%^å@(”è@*8@*®Š@*¥@) b@([Ÿ@(wh@(æÇ@(Ë@'Õ3@&ל@&4i@$fb@ [¤@ @î„@5@#2ð@&¸R@(4â@(mÄ@'çv@']@&S.@%’@$˜¿@#Ë@#¤{@$F×@%l2@&¿@&ú\@&Ø @&Š@&YÔ@%÷F@$^z@ +ƒ@½@`Ø@.ç@)@!þ%@$•C@%¡O@%ë“@%°ƒ@$Ý~@#i @"!©@"¤@"Ë:@#(µ@#/3@#Yè@#‡v@#n}@#¹@" ë@"8Ç@!ß*@! @!8@ ‘î@QW@Õ¶@;ï@±S@4¬@PJ@5B@Ðè@@„Y@¸@ l@ê-@´™@á~@0[@ @K÷@6@4”@oF@Šš@œ@oŸ@¡Ï@X -@ç3@a@Å@æ˜@²Ç@ ‚@Œò@>_@ú8@Z@I_@c„@XL@0@ø0@Ô @ÐÜ@ç†@³@ò@­²@[E@Á@Ö@¯<@¤Y@¦@žü@‰¥@I]@Û@–@šø@u@§Ð@Wª@›Á@K¦@¤`@u›@‚O@Aj@!V@ÑÃ@´œ@#@e @È@ÇS@ÖV@ÞV@S@8@.S@˜@ñê@À:@¾ª@Ús@·5@¸F@V†@Pa@.@ÞF@€.@ò4@@P@5º@@Ç@Uø@`ä@dú@:@ô|@“×@ü@g@J@¤[@ö<@5F@ñ@ô!@@,Ç@Õf@@Ñ@XŸ@„x@­@*S@ÀÛ@Qµ@ ÚÉ@ØÝ@=@óg@ ¾@+œ@ù@îA@”`@,Ä@@4K@Ÿã@Ûw@žA@7&@#Ù@)Ý@Á@1H@µ@< @o¨@k5@+@ï…@ér@ïa@×Ü@‰)@ ƒS@ U\@öz@£1@3¨@O@ -µ:@ ]@‰à@cô@ À-@ eÍ@ ’@ âû@ ñj@ ›8@ Ê'@ Äâ@ `9@ ¦y@ FÓ@ ;u@FÀ?üu…?çr?Õ‘N?×âP?ìv @¼&@WD@M@Åc@ p@*L?ýC¦?ý-Q@½-@±£@§l@ -F)@ -@ ˆ@ äY@ í@ y@ UÂ@ -C•@ ¯Ó@ §°@ 8@¤Y@u@žÈ@0@!@ã¸@ff@ÊN@M@ 3@ -¹@ -uM@ -SH@ ð@ ™d@ o¬@ EÉ@ û@À?@j@x?ÿ/?ñ ?í+x?÷Ï@{ü@C@oy@d³@á@WJ@a¥@"m@Ö%@ö¤@Å&@–Ï@t@Bk@ú@ª¸@pB@J©@6@¾;@E¡@Ÿ!@–?ÿ?÷Ÿl?ó«Ô?ôÆ?÷$H?ùo?ûJ?¹¯e?¹Ö?¹é;?¹/?¸Ÿ?¸‚ª?¸"*?·¶Ã?·P?·Ã?¸ -?·ôò?·ßâ?¸}?·Ø?¶ù?µP­?³Óÿ?´˜#?¶‚Ú?·1Þ?¶ðl?¶ÌN?¶Ã>?¶t?µô÷?µqò?´Ù–?´Ë?³Äú?´[ô?´à@?´ÐÝ?´| -?´7þ?³å™?³˜Ÿ?³YX?³2‚?³{r?³ÓR?³ƒ?²½j?±Ñ ?±B?°¿Þ?°óH?±?±§?±Q;?±L›?°ÒÍ?°p­?°§Í?±(?±}·?±ŸW?±A?°t ?°‹?° -Á?¯% ?¬öw?«az?¬´Æ?¯ ©?¯÷S?¯®­?®ôú?®“¦?®tS?®Fy?®vW?¯!3?¯Ÿ–?¯‘\?®Ì ?­û‹?­kã?­7ñ?­‰×?­¹?­­?«Õ/?ªöÐ?©òŸ?§Š«?¥uD?¦¸Û?©œÝ?ªE·?©¸?©õ-?ªÍa?«Ëú?¬FP?«^?ª4V?©Ÿ?©êˆ?ªd?©ß?©®f?©§ê?©–?©£¡?©xw?©Ê?©.†?©ïÒ?ª>?©£$?©+£?¨Ÿˆ?¨Ù?§mµ?¦ò?¦È†?¦Ë“?¦´{?¦áç?¦ÀÖ?¦Së?¦n? $G? fØ?Ÿ½Á?Ÿ„z?ŸÖq?ŸÊZ?ŸtÄ?Ÿ;?žë?Ÿ>?ŸM?ž¦0?ž®©?žÜ?ž¡R?žqT?žgE?üµ?U?œ<î?œA?œ•ž?œÊ??œ–®?œ#?›ÂM?›ðÌ?œYœ?œÇœ?œî€?œQL?›~r?›C$?›a¿?›?›0C?š•L?š Ì?™e.?™?šH_?š}O?™êâ?™,j?™#É?™IR?˜Ø±?˜Ö-?™•?™´?™vð?™2Ø?˜ï?˜ˆþ?—íå?—© ?—d?—{K?˜^7?˜”\?—Ì ?—+à?–¶"?–ƒè?–ÓX?–§?–EU?–fü?–m?–;Ö?–q¨?–|s?•ø×?•¤?€jZ?PÄ5?XI ?[,S?[ñ?\av?]5?]Ïf?]Ãû?]$?[ÛÖ?XjŽ?TœF?VÆÞ?[ž²?]`£?]b?]§á?^]?^#­?] -?\£ì?[¼]?[O?[tÊ?\} ?]=?\Ø6?\Y?[ÿ,?\Q–?\AC?\Å?[}U?[*ø?[%`?[9Õ?[°?Yéh?XT?W#y?XC?ZŠ?ZoÝ?ZTÇ?Yné?X˜í?XNk?X ?X?Wɶ?Vf#?V'?W’Ñ?XI?X4o?XMc?Y?Y·g?YïŠ?Yçù?Y¸?Yb±?Y í?Xû:?X©?WOÖ?TnÍ?Nã?CøC?8¼`?<ºB?M?Wf[?Xì¡?XWÃ?Wÿ?W=k?Uñá?S4Š?Hÿæ?8Ð?;‚'?IÊf?K¤X??æ?:?Ä?GV ?OÓS?Q,y?Qäë?R±Ù?RËÌ?RsV?Qµø?Pø‰?Pã?Q?V?Q~Æ?Qh¦?PãV?Oºð?N?¬?Ná§?OíÈ?N`†?L³š?Lç{?LTd?J+?I•>?IB½?H¤?Km ?NNæ?Nè ?N@D?KvÈ?E@?@$Ä?B×ÿ?Gõ?J:‰?Jè?K?K™3?Kk:?Jÿž?LL¸?M‡?M<ö?KÚW?K=‰?KŠâ?KÝÿ?Kæm?K?J!*?Ir´?Iq?IX!?IPW?K»?Jòe?I ?GÀ€?F½n?F‡â?F›ï?F&¸?EË ?F8?F¡?Fα?FÙ?Eê[?En¼?EO“?E?DÜj?D€?Cé?C•ß?B)?@]’??Pþ?At‚?C¸›?DÁ€?E+_?E ?D†È?Cä]?Cw?CM?CH?BÚæ?By?B…ÿ?CHÆ?DFÙ?D{ß?CM‰?AßÖ?A ç?@Å0?@þt?AƒI?AÄü?Ar?@÷é?@™¦?@K?@_?@Ó?A8?A€?@ô­?@}Á?@Iû?@*m?@>}?@wÔ?@nï??éz??‡™??nk??£?@(‡?@a??þæ??žõ??Ûl??ïK??«*??Fø??ø?>ÃÅ?>|ž?>«è?>‡ë?>,5?>#…?>}‹?>ŸY?>@©?=ç(?=Ý?>&«?>U§?>ä?=Ú¬?=Ï?=Ï?=–Ð?=L??-b?-T~?-=?, ?$ O?$‚Í?$âv?$sç?#à?!H“?H1?Ù_?+¥?"­É?#Ü??$@œ?$,n?#ë ?$ï?$q$?$„h?$V ?#qŽ?"¶ ?"ðç?"–&?!i1?!³Ž?#7Þ?#½”?#j*?"ôá?"È¥?"ç:?"Ìè?"©?"–b?"®´?"ÌC?"ð®?# 6?"»{?"…ó?"Šõ?"±Þ?"£ä?"9‰?!ù}?"Bæ?"d¶?!¬0? º¬? {ô? ‡ñ? a)? /¤?îç? Q?ë˜?¶Ú?­?»L? £?vü?˜¤?è?¬?è«?Ò¶?Ìg?Xç?;¯?¹=? ?t?g.?1Û?Î?¥?Üœ?L?=0?–Ü?ªØ?Jº?o¼?¡?fú?'=?õ\?%`?í†?²G?ó)?{?ß„?*?Ú9?&?– ?°?ÃT?PD?UÈ?/?µ -?í?T?‹?eø?‰ù?*e?ø?üU?Å¢?·?pJ?;\?]D?“Ø?Ï ?Kp?Qe? F?Û¬??2B?…e?,??Â`? ?ÅQ?ùÏ?.ðQ?M£?Rl×?>·?,ÈÏ?%^Á?""w? )è?Ì,?C£?þÉ?ýÇ?ïÿ?V?œß?ýY?äh?­ˆ?Œ3?Só?ü?±Ð?Ü8?ËP?>n?Ø??q?P¶?‘i?Zu?ª-?˜;?Ÿì?;?rð?Û?†?y¼?Di?ê?¼Ç?Åô?©ï?{"?cè?Bè?;9?Bô?„?ß?Z¬?Ž??£?_–?’U?Á?_O?š:?©b?u&?8Ø?á^?Aõ?u?¶þ?V ?¼{?¨?L?³’?àº?Éæ?n?W˜>ôTÅ>ïþ ?u½?RL?§Ÿ?…ë?âœ?#$?³Ä?ƒ7?gœ?Ðæ?Ð?($?iÙ?g?'Ê?d:?„l?@à?ÜR?à ?ß?“8?4?^·?ͽ?"Ì? }ð? 9Ñ? 3{? Ç*?jî?8_?*? ÕÝ? pb? Lð? V? AÚ? îø? …¿? Lã? G„? „J? ɱ? Û„? Âã? «9? žÐ? Â? ”Ñ? ¼å? ÃG? ƒ? \v? +ù? ôÇ? °Ü? KÁ? -ã»? -ü? ? -™? G? B6? -µH? -W? -©? ëÿ? -? - r? Ó¨? iÖ? zb? ¯Ì? ™†? u9? ,‘?é? +‚? °º? ó? àr? æÔ? Í•? e#? !—? Y?æß?¨¸?ŠÅ?+?]~?M2?7B?Î?ä2?Ì«?¶Ã?µL?‘?]Ñ?Ež?ÿl?#¸?ó ?¯‹?Û*?Ýã?Óð?Ç’?Áÿ?´š?ž?‰µ?s]?]Í?J8?6è?"i?î?B?ðÛ?Ј?¹)?¢+?Š4?wÉ?f¬?T‰?Bº?/ß?6?B?êú?׶?Ä ?°Ã?2?Š?|Õ?o\?SË?.§?t?ò~?ã?Åã?}Ë?i¦?W?zJ?4\?ú?¿?)>ÿË>ÿK‚>ÿ"c>þåx>ÿ ²>ÿÿ>þÊ’>þƒ]>ýö†>ýœp>üij>û²ø>ýC>þ~‰>þv¦>þf9>ý¹R>üÿ">üö>ý’>ý:F>ým>ý28>ü-*>ûþÄ>ü4µ>üjX>üpë>û‘\>úÄÇ>ú„»>ú¡=>úåÆ>ú¤>øMë>ø5{>ú¿>ûñl>ü^'>üd'>ûüu>ü&ì>ûéO>û<ž>úÞì>û‰>û/m>úöÔ>ûb>úUƒ>ùäy>ùAƒ>÷ªø>óªç>ésk>áÛa>ì«>÷åÂ>øÜ">ø >>ø%‰>÷ý÷>ö©>õŽ>ö>÷6I>÷—->÷ -r>ök×>ö+l>ö6>>öé>öà>ö Q>õÜ¢>õtÂ>õ.¾>õò>ô­!>ôZÑ>óøÑ>óò:>ô¸>óÚˆ>óîƒ>óÇÇ>óhR>ó$Ä>ò©Y>ò~@>òçÛ>òõ:>òšé>òKQ>òe>ñÑ >ñÌÉ>ñÖ>ñ/>ñ*–>ñ&>ñ3>ðÝd>ð¾ˆ>ð¤>ðV¾>ð-m>ðŒ>ïÒt>ïì>ïIß>ï©>îìì>îǶ>îŸC>îu3>îQˆ>î&3>íï”>í±»>í\ì>ìª >ê¡0>æCW>ã£>æЇ>êm…>룓>ëÉý>ë«‹>ëvù>ë ->éú«>èߊ>è$>çœk>ç»>æº,>æoP>æ(>åä—>å¤õ>åj†>å9 >åz>äØ×>ä«ß>är=>ä;I>äA>ãê˜>ãÏu>ã¶Õ>ã…I>ãN>ã&ï>ã¼>äW>é)Ù>è«Ç>㄃>âš>áÌö>á—0>á_ì>á)ô>àô/>๱>àxÄ>à9Ó>àÔ>ßÎC>ßœx>ßg²>ß1·>ß>ÞͲ>ÞŸ>Þ}U>ÞK>Þ»>ÝîX>ÝÎf>Ý©>Ý£˜>ßP>âi >ßÝ8>ÛÕ,>Ûæq>Ü(>ÛÉ#>Û„é>Û:r>Úçø>ÚœŠ>Ú[>Úï>ÙÂÿ>Ùg…>Øô>Øsˆ>×Ïö>×2>Öˆ>ÖU;>Ö09>ÖÎ>ÖU>Õßý>Õ—_>ÕQN>ÕÄ>Ôé—>Ô» ->Ô”>Ôné>ÔFÕ>ÔØ>ÓøÌ>Ó×Ñ>Ó¸@>Ó•>>Ón¬>ÓB>Ó>ÒäÒ>Ò¸‡>ÒŽÐ>Ò^û>Ò&!>ÑÝ©>Ѩõ>ш>ÑHt>Ñh>ÐÙå>Ь‘>ФV>Ðh‰>Ð]û>ÐE >ÏŸ>Ïx->Ï—_>ÏŠë>Ï®i>Ï–Q>Ïo>Ïw+>ÏfÕ>μ ->ÎË>Í¥*>Íc>Íp>Í>Í/>Í ä>̵Ë>ÌO>Ì÷>Ë«.>Ë´Î>ËÑt>Ë“œ>Ë“>ÊÜá>Ê+M>ÊF‡>Ê9>É~2>ɧ>ÉÄ>ɲî>ÉIã>Ém>ÉzØ>ÉE>ÈÈô>ÈF >Ç£’>ÇÑ ->ÈU>Èí”>È~ï>ÇšQ>ÇI/>ÇŒð>ÇRy>ÆÕe>Ç% >Èêí>Ê%¥>ÉÙž>Ê>ÇÿŠ>Å>¨>Ä…>ÄîÚ>Äãv>Ä4°>ÃÛ>Äa>Ä`*>Äwî>Ä>Ä@û>ø>ù>Âüâ>ÂÈ&>Âg>>Á¢(>ÀuÐ>À&e>À¤\>ÁNñ>Á‚Û>ÁOB>Àé_>À¼Î>ÀÀu>À‰å>À'­>À»>¿ýæ>¿º®>¿„»>¿ ƒ>¿ >¾Ö<>¾p >¾H>½Øç>½~>½1™>½ž>¼ïH>¼»©>¼Š>¼Zn>¼0û>¼$>¼I>»Òì>»˜N>»\o>»k>º12>º¾>º>ºy×>º<)>º×>¹ÎŸ>¹Ÿx>¹iÏ>¹ß>¸§&>¸Àœ>¸²—>¸vš>¸ >·1;>¶Äæ>¶*7>³ †>¯žÂ>±<’>´¸É>¶8£>¶}ß>¶s#>¶T>¶1]>¶ Ö>µâ.>µF4>³È >³ðt>´¹->´¬à>´‚Ž>´Wž>´%¹>³ÛL>³†ƒ>³…>³„M>³cï>³55>³ é>²å>²À…>²–&>²hè>²>S>²è>±å‚>±·ô>±Žj>±i¹>±O~>±î>°àÙ>°²$>°ŒU>°j;>°CÍ>°}>¯Ô)>®%>ª…Ç>¬_M>®ï>¯¸>®øV>®Ô/>®­>®ø>®W>®+#>­ü=>­Ìñ>­¢>­y$>­Rs>­*´>¬éÉ>¬hþ>¬P&>­˜>®¶>­¡þ>«ù>«zT>« H>ª·3>©à">¦óF>¤Û™>§>_>¨…0>¨ÈK>¨Á.>¨ºM>¨£Š>¨Œ]>¨>¨p>¨O{>¨2†>¨”>¨˜>§äü>§®>>§†£>§iú>§CT>§@m>§8>¦ôÜ>¦t÷>¦Z>¦f½>¦¹ž>¦³q>¥R>£8>¡9V>¡›4>£ò>¥ŠÚ>¥¦£>¥z>¥t>¥…ß>¦ -k>¦ž>¥üË>¦3„>¦Dw>¦í>¥¾>¥\Ç>¥_h>¥ž>¥Ï>¥Ÿ§>¥%->¤ e>¤‰Ú>£·ô>¢†+>£¢?>¥ù>¥ž+>¥1n>¤db>¤ !>£ ;>£'Í>¢¦Ú>¢® >£ >£m>¢ÿ•>¢Àl>¢]W>¢(Û>¢ž>£cÃ>£52>¢{>¢eQ>¢_Ü>¢ û>¢*Î>¡·¢> ç7> _K> ð|> ²|> n> ý>  9>ŸÞ> ­>Ÿ×>> ‚> oŽ>ŸU >žÒ>žéØ>Ûf>œ¸ˆ>›fÖ>œÚ+>Ÿ·f>ýˆ>œû>ž¹>žûŸ>œçZ>›)}>œrg>d>6>œ >œnÂ>›*ç>›’Ñ>›¢`>œ.>šÑ±>™ùf>›ÐÂ>œê›>œ•J>›Ñp>›Ê¾>›°Ë>›˜¦>›¼ª>›‰<>šÞ´>›$>›b€>›of>›Q>š?¤>˜9 >–Ò©>•ãR>–ñf>˜ÃØ>˜A>˜ >—°a>˜cY>˜Ð‹>™‡A>™½Ê>™D¯>˜„>—ž²>˜dÉ>˜ÃW>˜#C>—‘Ö>—1a>–àº>•Úl>”J¢>”­ï>–\>– €>”,E>”÷{>–»­>•e•>•W÷>–?ÿ>•p¼>•Õ>”8>’ÈÉ>“qg>“>’àù>”mü>“ÐX>’šJ>’Ÿæ>’ÿ>’½w>‘Û$>‘->‘ú„>“F”>“¬é>“’>’ðø>’c²>‘Ó->šè>‘' >‘ˆU>‘žˆ>‘¹#>‘†Ò>‘aË>‘wC>‘˜v>‘1>â >ïM>×Õ>¬Ò>N>;3>~m>LL>(>ø‹>î_>ú™>õÜ>Í÷>O>e–>*Ã>ŽúE>ŽÒŠ>Ž°¼>Žž.>Ž}j>ŽFK>Ž!v>ŽR>ç°>ÇÅ>§è>]>t.>Q >B>Ù>¦>ŒÞƒ>Œ¸•>Œ˜À>Œx®>ŒWB>Œ<Ë>Œ#Ö>‹ÿ>‹Ù>‹´—>‹”»>‹x÷>‹[>‹8>‹ö>‹ >‹ X>ŠÀ>Š{~>ŠMÜ>Š+t>Š >‰êC>‰¾Õ>‰”>‰kG>‰CÕ>‰a>‰P>ˆè©>ˆÎ…>ˆ¬€>ˆ„­>ˆ_Œ>ˆ@D>ˆ&%>ˆ³>‡ñô>‡Ï˜>‡«^>‡…1>‡aÐ>‡H¯>‡1ë>‡6>‡>†å`>†Ä/>†í>†»>„Å->‚ ²>€øB>ƒ– ->…€Ù>…­6>…³>…Á[>…âÒ>…æ<>…ØŽ>…Î>…ªç>…e$>…(>„¿”>„²>ƒ¾˜>„%>„@À>„Uù>„_1>„W¶>„9¡>„¥>ƒá>ƒ‰ê>ƒ›×>„)S>„ƒë>„+¤>ƒ¼Z>ƒÂ>ƒÆp>ƒ?H>‚ý>ƒa[>ƒ*›>‚›»>‚L>‚¨û>‚¸>‚I>‹p>‚·>‚ŒÕ>‚=1>D¢>tè>‚°>ƒ¯>‚ªâ>™¤>“/>‚|Z>‚×>á>}L">yó¡>{ÙÇ>€'æ>‚"[>‚ûQ>‚¨e>&º>|ên>x?&>wþ>}Ü3>ÄÝ>‚Qp>9¬>~ï¸>yá>vW©>xô²>~v(>dû>‚>>æù>Z >~Æ>wÕX>r‚>tÚº>| Â>€ î>€²’>ª>Ÿ>€•:>=½>z5Ö>qãù>k¤T>pÃ>xVÇ>|º>LÞ>€1>€f>€w¸>€( >}ÃÝ>z…>r~€>gšÐ>c5P>kd¬>q}è>qÄy>væ¿>|²>|ô«>}YÃ>~6i>~y>}r>z=R>v’7>mìß>`à>[œ¹>fm'>r!Æ>wÓ>y>z5O>yÖG>yÏÔ>yMœ>wfÓ>v·>v)i>v (>to>q#©>m{\>dÏ*>VQL>P¦‰>]²z>kƼ>q¿Þ>s¢ó>t87>t»Š>s¼>sÑ>sßd>s“®>r®>oð“>m!‘>l7>mÝÌ>nÎ8>n"í>l¤>g&Ò>[dƒ>KG6>G:>UÈß>cø…>i……>k‘>lT¯>mÀ>léá>kœŸ>j¸Ç>jêj>kÏŠ>lò>lQ¢>l†>k¶±>ië„>dÃD>\y×>[öh>cZm>fœ2>e^•>c -D>]V>O‡><ð>N<3>[œ >a) >c[7>d9'>f"‘>f¯v>fÒ>d~º>b©Š>cƒ>ek?>fµÈ>gX¯>fç;>d›>aÀ>b¿>cUP>cåh>c~Î>b9o>_õŠ>\œ2>[5ç>]>É>^×>^Î>^B >YÞ}>P?>=¥«>0ÙH>O},>Y3ú>\~£>]¡V>^Ê^>_‰C>acm>c>c{°>câÉ>d,ª>c¯X>cõ>bPl>`ý'>`µó>a/û>at>`ÅT>`ÚØ>_Z>]¼æ>_E->`X3>_¸Â>_<·>^¢²>^ÈK>^->]3%>[‚>Xøu>VG„>VN>YB…>ZVQ>Z4j>Xà\>SzÊ>EìÚ>1k>,^!>@i˜>Q_J>XI>[ S>[Ï>\b…>]ƒÖ>];â>\£w>[Ÿ>Wsw>NÎe>L}>Tî’>Y•>ZFá>Zo¡>ZeØ>YDz>Yј>Y¯$>Y>XÔÇ>X©F>Xï†>Yë>Xh>Ww>W`>W·u>V»D>T÷=>T Ì>Tq>U^>>V‚O>VÇÓ>V| >Uå">UŽ¼>UTÛ>TÙ¶>Tt–>Rè¥>Pc>KG >Iô>J8¾>L”>MD¯>K¤.>Gœ>;ׄ>%?¥>“>)j*>><®>HnÑ>L¤5>N;Ä>O>Oh±>Of«>Oer>OwÄ>Ofß>OO>O5®>NÛ\>NŠ>N,™>MÈ…>M}v>MSX>M3>M €>LéÑ>LÆê>L£í>L‚ø>LhK>L?5>LÍ>KðW>KÊ>K Û>K{|>KXC>K4ý>K`>Jñ>JÏn>J­ç>Jƒ>Jjù>JH!>J%D>Iÿâ>J5l>QÔ>YHœ>Mp7>Ie.>Iö>HÛs>H¤/>HkZ>H1•>Gúê>GÅ>GŽð>GX“>G!à>Fé’>F¯Ù>Fs>F5í>F`i>GKÜ>Eõd>DµL>D>C>AŠß>>¾N>8³>)ð°>à>¥>&º­>86ü>;á½>?(p>@»Ý>A€¶>Aã>Bs>B>B >AüÂ>Aç=>AÌì>A¯>A>Am >AI >As>>ƒí>3ñ.>8ƒø>@f>@uß>@R#>@-”>@>?à>?º:>?š¾>?ñ>A)>?ó©>?S>>ÌZ>>¡ >>ta>>EG>>=>=Ü;>=¡¼>=Un><ÅÜ><w><Ð>< 1><V><' ><1á><(–><Ä>;÷>;Ö8>;²Ö>;í>;f>;5>;ü>:ò¶>:Ǧ>:C>:ZÀ>:IÄ>:'">:>9ØÌ>9±¯>9Š^>9ce>9<>9Y>8èR>8¿Ç>8˜¬>8q‚>8J.>8"6>7ù>7Îã>7£H>7w¡>7N@>7$Ú>6úö>6Ð>6£û>6v?>6Fí>6¬>5…>-Å#>-ØÀ>6D)>5J>4K¥>3§q>2¼ >1.q>(¦„>ÅÀ=ýø=ï‹m> ¾>$*>,.W>/Vt>0Àß>1† >2N>2g>2$œ>2X>1òO>1àž>1Ìà>1µÉ>1œ>1‚>1ey>1EL>1%,>1÷>0è³>0ÊI>0«J>0‹ð>0l×>0M°>0.>0  >/ê“>/ÕZ>0Àí>1Ú}>/à~>/&>/Q>.í>.Æ=>.Ÿ2>.w[>.MA>.#e>-ú°>-© >,÷ >-5a>-SÝ>- >,àQ>,¾¯>,o>+Ø>*3€>%ò>#>&8n>&Jþ># >)~À>,AY>/"L>,ŽÑ>*v/>)ÖO>)y¸>)s„>)³²>)ñ>*>*>)ï4>)Õ>)¶J>)”a>)t>)Sõ>)4¦>)Š>(÷Ö>)Î>*óý>*ðµ>(§>(@7>(b>'ö&>'ÑÇ>'­ƒ>'Š ->'t›>(0“>(™ª>'3ñ>&ÏÜ>&©>&ƒ–>&]Æ>&7Ö>&K>%ç¬>%¾Æ>%€á>%^m>%P>%,w>%­>$ã~>$¿n>$šæ>$sº>$Lð>$(©>$ã>#á>#¼ÿ>#™ ->#u>#P>#+Ë>#L>"ÞÃ>"¹o>"”‘>"o{>"Ió>"#™>!üW>!Ó>!XD>§ù>E>>«r> ù…> ¡Ã>6>ãx> N>!\=>«|> >zI>€Ë>Ö³>±‹>~=ý÷Ò=Í°=ÛXB>§V>6Ï>W¾>pr>gR>à”>§>:z>Ec>Ed>=°>1U>!y>&>û6>ä¯>Êô>²Á>›É>„->lK>SÍ>;>$'> k>ô>Õð>¸(>¥>Š>Œ/>*ø>á >vc>÷·>Ñû>¬r>‹*>k >J¿>+i>>ðÚ>Ô®>¸“>œÀ>˜>go>N5>6>$> d>ôê>âw>Ïð>½…>°>¦–> ‘>žc> E>¦2>± >À>Óï>î¯>>ûË>Š¼>a¾>#c×>" -É>Q]>ëß>N>"y&>0q>‘>ƒÐ> ÿ>ÌŸ>} >1%>éJ>¥>ed>'÷>ë%>®Ý>uš>ÿD>ý>>,> >™>Ij>¾Ì>@’>od>mp>Wï>:¤>>÷ù>Õµ>³5>¶>nR>JI>%¦>a>çý>ÄÈ> ©>Í>_8>>¯>>þB>Ür>¹ü>™×>z®>[_>A>þR>ßw>Àä>¡¶>€Ø>`>Ak>#2>ý> æ¿> È•> ª¡> Œž> o)> O¬> .Ë> K> ò»> ÕP> ·ÿ> šŽ> }> `Q> C(> & -> o> è¯> Æx> qs> A> -N> -Öë> $X> Û> -ûÒ> -ÝN> -¾> -œ_> -|Å> -^™> -@…> -"c> -p> æ¶> ȵ> ªú> Œþ> nÞ> N|> /•> >óé>Ôö>·r>™ø>|Š>_º>@¹>Þ>þ”>á{>ÄH>§7>‰æ>lâ>OW>20>Ç>÷<>Ù’>»»>Â>Å>a¨>Bá>$g>Ì>æ#>â> 8>{£>šL=÷™ =÷ç8>A>’Ñ>Vy>ó3>u>¸«>è=þp-=ôÈ°=Ú$Ž=¬4}=«ŒÛ=×Òš=óaD=ýXD>š:>uÒ>àü>>1î><„>6R>*¤>É>Ñ>þ­>ê;>Õø>¶>¯a>œ>‰>v >c\>K%>+Y>d>ø.>ÈÒ>z_=ÿ|Ð=ôh=óap=ý‹Û>b>}Ò>“¬>i=ÿçž=ÿ¾k=ÿŠ(=ÿLS=ÿ!=ÿ‚t=ÿ/=þaŠ=þ=ýââ=ý¤µ=ýcì=ý(=üíà=ü´­=üxg=ûð—=û‹ÿ=ûÆ­=û‚=ûgA=û. =úó=ú¼&=úˆ=úSœ=úÿ=ù¬>=ùst=ùM=ùT=ù!±=øí€=ø·a=øŠ(=ùÁ=ÿ>'=ýiT=÷úÂ=÷zi=÷Aº=÷ ==öÐ=ö” =öWg=ö!™=öù=öt;=ö€=õL>=õ o=ôÑÑ=ôš=ôb¥=ô&²=óëÜ=ó´“=ó~w=óG–=óç=òÚi=ò£¾=òm=ò5¿=ñÆÜ=ñ=ñ[Š=ñ6«=îÁÈ=ÙN=Û—k=ïJ=ðRo=ðœ=ïêá=ï¶A=ï}ó=ïH/=ïÓ=îãí==î=îMü=îÑ=íÞš=í«ü=íy§=í6¸=ìó =íÔ=ìì$=ì‚À=ìLÁ=ìW=ëæ¡=ë³Ì=ë€û=ëN=ëÍ=êèÏ=êµ4=ê~ -=êG=êÝ=éà„=鬤=éyt=éE±=éì=èÝ-=è§[=èoˆ=è1T=çï¥=ç¨ =çIR=æ£÷=å6«=âê¸=â -…=ãžÁ=å9`=åÅ|=åÔÎ=å¾F=åœi=åtŠ=åI[=ån=äîg=ä¿Æ=ä‘n=äb=ä1>=ãüx=ãÊG=ãšv=ãk=ã:Â=ã -÷=âÚÕ=â«=â{E=âK«=âë=áæv=á³=áƒo=áS=á$$=àô¡=àÄé=à•x=àx‚=àu¥=àF=ßÑõ=ßžq=ßnË=ß?}=ß@=Þá(=Þ±‚=Þƒ=ÞT =Þ$Ê=Ýõ=ÝÍ,=Ý¡‰=݉2=Ýl=Ü÷ƒ=ÜŽÅ=Ü‚?=Üp‰=ÜA=Ü<=Ûáð=Û¬ï=Ûzz=ÛJÊ=Û>=Úì+=Ú¼Õ=Ú¶=Ú^œ=Ú/W=Úé=ÙЕ=ÙœT=Ùk%=Ù<^=Ù ¯=Øß9=Ø°‚=Ø‚F=ØSÇ=Ø%0=×öñ=×Ç¢=×”M=×bô=×4€=מ=Ö؈=Öª€=Ö|f=ÖNE=Ö a=ÕòÜ=ÕÄ\=Õ’Ñ=Õa=Õ2Ì=Õ =Ô×k=Ôª=Ô|‡=ÔO=Ô"-=Óô¶=ÓÇ'=Ó–ˆ=Ód]=Ó6Þ=Ó -!=ÒÜÓ=Ò°w=Òƒ©=ÒV{=Ò)Â=ÑýR=ÑÐX=ÑŸÊ=Ñnå=ÑB”=Ñy=Ðêw=о.=Ð’ =Ðg›=Ð;=Ð{=Ïד=Ï«­=Ï€A=ÏUI=Ï*=Îþü=ÎÖâ=έî=Î3=ÎS³=Î)¥=ÍÿU=ÍÕ©=ͬ#=̓T=ÍZÝ=Í3~=Í w=Ìêà=̺m=ÌZ=ÌgÎ=Ì;Q=ËŠ9=Êbž=Ê=Ê V=Éýr=Éó¼=Éî=Éåô=Éå=ÉåR=Éæ¨=Éè©=Éë¼=Éí=Éîë=Éët=ÉÞ”=É·=É0=ÆF+=À–ß=˱¦=ÍS/=ËÔ =Ë&=Êzo=ÉüC=É‹=É!¬=Ƚ{=È^í=ÈZ=Ç´8=Çd<=Ç°=ÆË"=Æ‚=Æ:ø=Åô×=Å­e=Ågº=Å,ó=Äû6=ÄË'=Äá=ÄqÝ=ÄFe=ÄÒ=Ãî=Ã’=´2M=­“Ð=dz?=Æd¿=Âñ×=–ò=Áí«=À„Ý=¿@þ=½k=¹ûÀ=³9 = Ë–=}®R=wØ­=œ[=±f1=¸åŽ=»ß2=½9i=½í_=¾·ÿ=¿9#=¿¬=¾÷»=¾Ñ‹=¾¬l=¾‡f=¾Pí=½·=¼å!=½Dk=½3Á=½©=½=½mÓ=½Oj=½0ý=½Æ=¼ôê=¼×=¼¹=¼œF=¼~ˆ=¼]Y=¼=ï=¼!A=¼y=»ê=»ÄM=»^q=½b=úú=½WÒ=»¦=ºâ±=º´=ºy=ºG)=ºÚ=¹çB=¹·¸=¹ˆ…=¹Yº=¹,=¸ý`=¸ËY=¸œü=¸pd=¸D|=¸K=·îX=·Ãç=·™L=·o=·E¢=·Ý=¶ì|=¶Á)=¶˜'=¶o`=¶F®=¶.=µö;=µÎ!=µ¦I=µ~Õ=µUÕ=µ)A=´ÿ˜=´Ù=´²#=´Š˜=´c›=´;=´=³å\=³¾X=³˜{=³pû=³F=³"]=²ü»=²Õ«=²®Š=²‡m=²`|=²9R=²~=±ëQ=±ÃÛ=±==±v=±Në=±(N=±p=°Ù–=°³K=°Ÿ=°gW=°?ò=°Ã=¯òê=¯Ì÷=¯¦œ=¯~=¯Wo=¯1Õ=¯ %=®æŒ=®À¼=®™=®q£=®L=®&Š=®=­ÛÞ=­³Ï=­‹N=­en=­@=­²=¬õ=¬Ê=¬¡š=¬…=¬]ñ=¬5”=¬=«ê¼=«Åb=« p=«{&=«U§=«0g=« Ï=ªæº=ªÁÒ=ª=ªxf=ªS,=ª+F=ªH=©Ù×=©¶¨=©’w=©nq=©HÕ=©Ò=¨G†=§²=¨¢È=¨“*=¨mó=¨D¦=¨6=§ù³=§Õ“=§±T=§&=§hö=§ER=§!2=¦ý=¦Ù=¦µQ=¦‘}=¦m"=¦Fÿ=¦.=¥ö±=¥Ó=¥¯T=¥‹ž=¥gÕ=¥D=¥ Ê=¤üî=¤Ù;=¤µè=¤’C=¤nä=¤K=¤( =¤Ÿ=£àá=£»;=£õ=£kû=£H€=£%o=£n=¢Þ¸=¢»«=¢˜‹=¢u:=¢Q©=¢.A=¢ «=¡è¾=¡Æ=¡¢³=¡€e=¡^}=¡9ñ=¡ß= ñ|= ËU= ¨O= …Ø= c= @–= û=Ÿ÷=ŸÐ¼=Ÿ®=Ÿ‹Ž=ŸhÉ=ŸFŽ=Ÿ$…=ŸV=žßÊ=ž¾œ=ž›i=žxµ=žVt=ž4C=ž+=ð=ÎÊ=°=¹{=‰ˆ=?Ú=í=œùq=œÖ°=œ³à=œŒÎ=œg=œCy=œÈ=›û­=›Ü=›¹F=›– =›s =›Oí=›*ñ=›¿=šá§=š»;=š’®=šf=š1=™ç¦=™be=—û=–×·=– Ã=–Œ¦=˜k¼=˜Þt=˜òÏ=˜è³=˜ÑÌ=˜µï=˜”—=˜qÔ=˜Oê=˜*b=˜V=—Ì =—y·=–¼'=”âÛ=“R$=”[u=–‰=–¬#=–Â=–·»=–¢\=–ˆ}=–l=–Ni=–0Å=–é=•òý=•ÓŸ=•´W=•’Ñ=•oû=•PA=•1=•=”ñ£=”Ò)=”²z=”’Š=”sT=”S³=”0‡=”=“ïV=“Ï·=“¯Ò=“ =“q¶=“N =“+=“ ^=’ë¬=’Ëò=’¬j=’=’mÐ=’N=’-ü=’>=‘ïk=‘ÏV=‘°=‘°=‘qà=‘Rî=‘3=‘(=ðè=Ñ`=±=’ =s(=Tœ=6;=E=øE=ÙÜ=¸ =—·=y=[9==m=È=þ=ŽäX=ŽÆº=Ž©V=Ž‹F=Žj=ŽBo=Ž8=Ž_=ŽJ=ŽLd=ŽÑ=¬D=w™=Rk=2Œ= -œ=Œá÷=Œøª=Œ·u=Œ”ƒ=Œtg=ŒS³=Œ2à=Œc=‹öK=‹Ò>=‹°æ=‹—=‹oa=‹Mœ=‹*¿=‹k=ŠÍ–@z”@yÛ‹@y›I@yþ@zÍ@{’@{ð@{ÐÍ@{J@zŠµ@yÕ‚@yl•@ynb@yÃL@z-ë@zr¦@ze~@yß-@xãJ@wà'@wo^@w­t@x‚@xL @xM@xkÏ@x¾y@yZ@y3¼@xõ @xVw@wˆ|@vê@v˜@wm@wJ\@w:Ë@v„u@u'@s5m@q˜æ@på?@qK@r…é@tÓ@u„w@vk@vÄ1@v¿-@v—@vfå@v'@u†‡@t£s@s¬[@sù@rÝÂ@s6ß@sÑÁ@tjø@tÄ,@t³N@tB;@s·¬@s]@s1.@rõ5@rŸÓ@ry@rµé@s0†@s™{@sÁê@s§‚@sXß@rÔL@qäá@p*_@m›@k#@j/“@kB@mo™@or@p´©@qH=@qoZ@qd@qJ/@qÉ@p®b@oÚÀ@nÂË@mÔš@m^Z@m<>@m¦@l¨¹@l¶@kr[@k7–@k‚³@lCÂ@m#n@m©ë@mˆ…@lÈ@kæà@kŸÀ@l, @lñÚ@m8“@lë`@ls -@kýK@k?˜@j’@hùJ@h¥—@i/@iUa@i@hxÆ@hb?@iv@jAv@kR—@kê2@l@l@@kóÓ@kçI@kºé@k[@jÙh@jdo@j^@iéÑ@iÓ@iè³@j#Õ@jR@jN…@j­@i³¬@i.@h$¸@gž@fŒÔ@fÖÖ@g±ü@hVÖ@h8&@gf6@fƒX@f:@f|*@f‹›@eí?@e @d´3@e8ü@fN@fZ'@eáŠ@dÎÎ@c©±@cZ@c`ë@dV@dÙ˜@esH@eõy@fN @fk@fQŽ@f -@eƒ”@d’ý@c#ˆ@aW@_dï@]¤Ô@\½ @](Œ@^†«@_è @`ÅÛ@aH‰@a›š@aT#@_ã¶@]‡™@[”À@[~4@]V@_­6@ab@a!¥@`"$@^wq@\ÈÆ@[õ¯@\<@\ç”@]`F@]ìê@^ø@`D)@aCk@a½]@aÒ:@a¥4@a=ˆ@`¨!@`@_â7@`­@`@@`Øÿ@`®R@_Ø[@^;ß@\$v@Zgº@YÅY@Z -Ù@Z_[@Z½@['@\2@]rá@^R@^@]ß’@]ìÍ@^:@^‹0@^²À@^¦Ô@^oà@^"Ë@]ÞÀ@]³ð@]„¼@]Ñ@[Ýù@ZD;@Y @Y-@Yíß@ZÚ¡@[õ@Z¤Ö@YûX@Y~f@YGa@YB_@YE€@Y‰@X‡—@Wø@WÌ„@X+i@Xãª@Y•>@Yì2@Y×ù@Y‹D@YO'@YT@Yy%@YQ@X¥õ@WÜ @W‰i@WËÏ@XL÷@Xºo@XòQ@Xò‰@XÑe@X¦ä@XgÌ@Wód@WUÍ@VÆ8@V7`@UR @T<‘@SÑu@T†Ý@U¾Æ@VªW@W'¯@Wn^@W,@W@WD@Váu@VvÄ@V1Ÿ@V +@V%ä@V+0@V2[@V=@@V>b@V(V@Uù¢@U¬á@U$@TFÖ@SCš@R›»@R©š@S2’@S¥a@S±J@S@SzÎ@SÇí@T4«@Ty@T~À@TXM@T/@S³t@S)˜@R”ê@R8@RCÒ@R˜m@Rï’@Sn@S @RÂ*@R—@QQ/@PÚ‚@PåÀ@QHM@Q·ý@Ræ@R'²@RË@Qå_@Q‹Ó@Q+ò@Pìó@PÙ @PÓä@P¾{@P˜­@PxA@PiÇ@Pe±@P[†@P<ë@P a@OÝ!@OÅ-@O¾8@O»E@O»Ž@O¿ý@O¿Ê@O²ñ@Oœ@Oó@OW@O -K@N’@M¸Ã@Ló¿@L‹ˆ@L @Lÿ@Mcã@M¢@M¦,@MtÏ@M3ï@M µ@M Q@M @Lô#@LÎj@LŸ=@LZÁ@Kÿd@K³œ@KœP@KŸ¢@Kwx@K@J‰H@J@Õ@J1Ë@JCò@J@JàØ@K;)@K`á@KB‹@JÙ;@J{@Iÿ@HÎ@G»4@HME@I7ý@IØ÷@Iý¨@IÐâ@I”—@Ism@Ic@I4±@HËÁ@HAX@G¹ˆ@G;@FØT@FÐr@G?«@Gá@HY.@Hƒ¾@Hg@Gþc@GD¾@Fqª@Eþ‡@F15@F¿×@G@Fþo@Fv¯@EéÏ@E¼0@F‚@Fs@FÃ>@F͸@F˜@F6Ö@EÊ"@E{Ö@E`@EVD@E,‰@DèÈ@DÊ(@Dô@@E9@EP|@E)º@Dñ¾@D×ô@DÜ\@DÝ@DÅ @D—¯@DWƒ@D$@C³@@Cd@CŸ\@CÆ@CØÔ@CÎU@C¹Ì@C¦@C†@CF@Bß,@Bp3@B4@BGO@BvÚ@Bm@Bh@At@@ÿ–@@éz@A7f@A¬Â@B¤@Bê@B–@AðI@A¿@A‚@AL¥@A3h@A0Û@A'­@@ü‘@@¢ô@@"§@?ŸK@?N‘@?Yl@?´P@@U@@X@@dç@@Xâ@@Aj@@(m@@@@‚@?ã½@?›S@?,Ÿ@>Äý@>›Ã@>«K@>¿+@>Â…@>Äà@>ÈT@>¹Ö@>~@=óÛ@="¨@&@44V@4ä@3ç_@3Ú@3g@2…@2@1´¿@1VÂ@0ø%@0¾í@0×—@1<å@1ªF@1æK@2@2&M@2Q‘@2h9@2`y@2F<@2[@1çé@1© @1cÞ@1 -{@0‹@/Ü8@.øÀ@-ôŒ@-v@,¯*@,Ï—@-@Í@-·ª@.š@.Tð@.n@.HÐ@. @-ôw@. -@.O‡@.¨@.Üš@.âÃ@.˽@.w^@-Ö¤@->U@- @-$>@-(¥@,÷î@,ŒÕ@+ØB@*Úå@)ŸŸ@(Cn@'-@&")@%—‡@%x˜@%ëØ@&Ü@'ì[@(Ù@)—¶@*!Ø@*v—@*—á@*~”@*-m@)³Ì@)&«@(¹@(ªÞ@(ì:@)Â@(êª@(€¦@(<@(Y‡@(£@@(ÂJ@(·E@(«6@(˜U@(Ws@'Ìù@'@&_š@%äz@%­k@%“@%/i@$6d@"¸I@ ï½@#Ð@Æd@I@¿ @ا@ +Æ@!f@"cø@#Š@#S°@#=²@"õ%@"«Å@"÷@"_)@"&@!ÌÛ@!cC@!Ò@ â¾@ ý©@!@!£@!"Ý@!Sþ@!x¯@!’ù@!½g@!Úx@!£e@ ñ0@á„@Á@ä—@@Ïà@”@¨ô@ Ƨ@!œã@!ø.@!Ø\@!qÈ@!)ç@!Bs@!‡”@!±@!¾ @!ª[@!W@ Ñ”@ 5á@ä@‡@*Ì@ˆn@ä5@rI@zõ@eQ@i@F@B½@ªo@hÿ@ÕÞ@#@(v@g¨@ÎÎ@ ÿ@ 9@ ÿ@ /@ U@ :@çË@xÞ@ût@Ã@áú@B@Ëv@ HŽ@ €Þ@ fy@ +@ @ ‰@ –@ %ý@ •¼@!¿@!A…@!4T@!'p@!ß@ £@ GÞ@ 00@ @i@ Sà@ sÏ@ šn@ ˜1@ \³@ V@Ûˆ@Ü»@éž@Ûq@Àg@°Ç@ÍV@ ÷@ @¬M@€§@¤F@™@3¿@Õ@èµ@mõ@â¿@Þÿ@Š¦@>œ@á@{@5Â@2Œ@ýû@ÍQ@¦/@C @tÍ@]P@(Ð@¨@½ò@þ@e©@)î@±È@Tæ@î·@aÿ@1@,4@ÿƒ@•ù@ -@ Ól@!ØÀ@"2@!ßZ@!'š@ H@éú@`Ÿ@Éœ@,Ï@HS@Ê^@!ß,@$ìï@'–à@)„®@*d|@)ó†@(ž@%@!7÷@.u@|Ù@˜@v@¤@î@#£@(T•@-¹¾@2Ó«@6Á¡@8Ö@8õ)@7Jë@3ñ|@/D@)Q™@#m`@ºÌ@{@[@n¤@q“@õ‰@ì @&²[@-ç1@4ü<@;HŠ@@e@DB­@FÔT@H¾@Ha@Hn@F†ü@C@=žò@6Çÿ@/.é@'v@ J?@üè@Õ°@·@¦‡@¬j@ÿ@ ëm@(íû@1r@9¹=@A@G!@KÚš@OE¸@Q±‡@S’À@U ;@Uî«@V/ @Uÿ@Uˆu@T :@Rå@P. @L…½@Gév@B"Á@:õI@2žÆ@)óÝ@!¿§@^M@Þ@²û@'ë@3d@Xâ@].@$D³@,‚ß@4Žò@;±¥@AŒð@Fx@JñÊ@O0·@S$@Vš¨@Ys{@[ -@\}>@\W¥@[ ÷@XOH@SÁ@Mpy@F ¦@?B­@:–Ü@9–Œ@<¦ï@B†“@Hþu@N*›@Pÿ6@Q5-@Or@KHØ@FBi@?íÓ@8Î@/(Ê@&/÷@!@@µ@¯@EH@<3@¸ª@›Ê@üu@'‰‰@0«2@9xT@A/Ÿ@G‚€@L¡6@Pè@TŽ@Wˆ @Y½¯@[HÂ@\cú@]Kö@^$^@^èG@_‰B@`@`Pì@`kº@`˜ˆ@a 4@a›¾@b0u@b±•@bÀ¦@b@`Öì@_[@]Â_@[Ù@Y‚G@W6@Tÿ@SÝP@Sy@@S=Ü@Rݵ@R|.@RS=@R^t@RdU@R-Ó@Qš@P°E@OQ@Lö@IU¿@D±É@?§@8!Ð@0-ü@(ß@ r@l@'³@}Ù@ ç3@Ï@ô{@“†@"-k@*Gà@2ˆ>@:ué@Alf@GØ@KNÁ@NÄQ@Q’n@S·b@U~œ@W*Ò@X³Ù@Z{@Zÿ&@[™£@\ ¾@\t&@\º?@\Ü3@\Ïâ@\ŸY@\~–@\my@\Fž@[ý@[m¢@Z^Á@XÆ @Væ9@U;l@T:‚@SÌ©@S @QŒ;@Ofø@Mˆ°@Lt@LPc@Mô@Pp@N½u@Mxš@L9¸@JÈ“@HÈ@E×@AÂG@<}º@6‚@.¸ @&áÅ@#@öÒ@ÄÛ@ –w@Ã¥@þq@û‰@ ¬O@¡@ôœ@Šw@$òõ@,q @3ú@8gï@@DNr@@tF@:ÉÞ@3Ù…@,è–@'M¸@$Gç@$ÒÒ@)F@0"@7>@=x`@A~«@CÖ†@Dëu@EM*@Eo¤@E–@E°@E‘*@E\ù@E)Š@DÔÄ@Dd³@Cÿò@Câ°@D4|@DŠA@DFÍ@C–~@C¾@C X@C«@Bæ$@B¹@Bt³@B‹@A´@Aßš@B,]@Bõ@Ag@@ÖŸ@@@@K@?îH@?Âß@?Â@?‡³@>î@>:@= ö@;×þ@:Á-@9¿<@8°È@7Þ@7«@7V@7'@6þ”@7N@7­Œ@8FY@8k4@8Æ@7P@6eM@5·“@5BA@4‚ð@3mr@2Q @1@/jh@-$ˆ@*bÙ@'JÇ@#Ùn@¸@«I@óv@&G@ -d@Â@‡%?þä?ùùÃ?úÿà?ÿà›@[ @.@ |@Öz@<^@2'@ oó@#ó‰@&žj@(‘ˆ@*.„@+SL@+¢=@+0‰@*cv@)uÏ@(‘‘@(â@(¬Þ@*€Ö@,Û¿@.ÀÕ@/±¯@/ÍÍ@/tŠ@.ß:@.CØ@-É&@-–Z@-åì@.ˆ@.ø¯@/Ä@.Ôœ@.,È@--Ù@+Ÿô@)³@%Å@"œ@Ù@ÕS@·ƒ@±@"]4@&Æû@*o@,b˜@- Y@-;š@-_8@-–@-È/@-þ‹@.>9@.yª@.Æ+@/ å@.ô£@._f@-uY@,°@+ @+¦@*´”@*=@*GS@)È@)o@)~n@)°?@)ÓW@*‘@*4^@*;u@*@*å@)ëk@)íK@*Î@*0þ@*)ƒ@)ë @)t7@(ô@(šÍ@(qy@(oÏ@(”…@(¯@(‹@(uO@(³@(ôM@(úè@);@)&h@)^@(Ü@(Ñõ@(Ì@(© @(š1@(‰é@(ZV@(=@(IÕ@(B@'Ÿ@' Ì@&Ѹ@&µý@&~@&?Ø@%þ®@%˹@%ÎÈ@%úr@&'ª@&+u@%õ­@%œ3@%Rè@%KP@%:á@$»Å@$);@$ ”@$.ô@$T@#¤ˆ@#“\@#•t@#i#@#0@"åí@"…Ë@"*Ï@!Ô#@!†Ÿ@!]u@!C @!à@ ÿ‘@!1l@!d…@!_*@!@È@!Iû@!f @!K¹@!å@ Îx@ ”‰@ ;8@é~@Ú÷@ "y@ Œ@@ £Â@ B1@ÐÛ@—@HÎ@¨Y@¾@â@.&@$E@’@Êé@÷@ŒP@«é@ñi@–f@és@+è@Öv@ª@‚´@¬r@y@C@U¤@½@·n@9ì@¬F@¨ö@dÌ@ü@ïø@ä@Çs@d}@ë@<€@‡¨@c@P÷@ëß@º@(š@Út@°©@´Ï@»s@·m@©ï@bt@áp@Še@yb@*°@|¶@ðÚ@¦4@*Ñ@se@ö@„@1!@@†@ñ¢@m.@Äæ@Ï@Ÿï@T´@ ¬³@ -€û@ @ZÏ@(?üºœ?õ¢?ïª?í/º?îîJ?ïÊA?íz±?ëê¼?ì{—?ëTÜ?è´s?èëµ?ígË?ô,²?ûZ@'L@5ü@˜ä@ŒÖ@ -V/@ J@ «R@ÔO@MY@¶ê@|Œ@u@Gw@sô@‘=@a@ßH@fH@OË@c¬@u@@¥ -@¢]@Ÿm@©r@µP@½4@»/@Ël@ìd@Ñ7@+M@Òx@ Ãç@ -ƒ@%¯@,é@ ì@A“@»±@)¢@åo@ -Ž=@ ì@T“@çõ@0j@aŸ@uý@Wý@8c@Oó@/@sã@%*@áß@´¹@uó@ þW@ D @ •@ 3#@ ðÑ@  j@ :ÿ@ -Ϩ@ -mu@ -JÇ@ -žš@ @ Þ@ -,@ *@ P™@ „@ -L«@ — @ f@@ m]@ Xˆ@ 0@§k@G@¶@è„@Š@Y‹@GÍ@=€@xO@ëÖ@Xë@¢Q@Ë@ÔQ@®Ú@ZÀ@ê@Á@‡@ÕJ@Ì@¾ÿ@½‡@¾$@Ï@β@•³@N@Ý@ÎÊ@@êF@a@v“?ÿê‚?ù—?ò/º?ê‹?äÛ§?ã­ ?禞?ïET?÷Ü?þ²D@]í@!C@ëÙ@Zê@@ˆ@óL@Ê@BI@.@@¤Ì@²ž@Äg@²(@Œ²@¹@ L@5@ól@º‘@–9@së@8«@ï/@Îï@ÑÄ@Ë$@·@¬Û@Î÷@çè@ –@:@F@Õ„@‡7@Qû@h@¯@Ý›@Æb@ŒR@Zq@%7@ñ•@Ó@¡÷@Fô@Ö‰@m -@I]@Vê@P„@H×@á@çˆ@"w@¶@áÅ@´D@Ù@‰?@¡T@pD@à¥@‚N@|â@sF@$?ÿã?ýÄ?ü¯?ü ª?ûœQ?ûyŠ?ûýß?üÿ‹?þ&u?þâÆ?ÿ&Ë?þýh?þNÞ?ýze?üÁã?üCò?û¤^?ú–0?ùÖ“?ùÑx?ú_?ú(?ùò»?ùÄJ?ùl¹?øâ?øï™?ù±D?úE?úÜô?úÌœ?ú·æ?ú‡!?ú ?ù“ ?ù?ø·J?ø8?÷ƒå?÷z?÷C¬?÷ËE?øQL?øP0?÷ÊÓ?÷K]?÷‡?öÜ?ö§?ö ’?õlø?õ$G?õ Ï?õ)ˆ?õ(\?ôã?ô¿?ô¥°?ô‹?ô±Ž?ôÓ?ô¡m?ôt„?ô¨þ?ôŒ3?óÁ?ò£ ?ñ^*?ðVD?ðE†?ñmå?òì§?ó­T?ó|Ú?òß5?ò'ï?ñ1©?ð†?ð„Q?ðÂú?ñv?ñ?ðªJ?ð ?ï:¯?î?§?í~ˆ?í.Ù?íH]?토?í¾z?íÑ^?íjÀ?ìÖ¡?ìí?ìb?ì—©?í1Æ?îþ?îÆE?îåÖ??î±½?îÏ*?îÒ³?îq?íÍ[?íDG?í-×?í^º?íYX?í?ìbí?ëä?ëßÐ?ë¼?ëR?êë¥?ê‡Ò?ê;?ê -?é”G?éÛ?é'@?éÌ -?ê_3?ê}¶?ê'?é³£?é“n?険?éi~?èü3?è¥ ?èjÝ?è!M?çàÅ?ç¶v?碆?ç^¨?æô«?æœ -?æ7?åâ?å¥Á?å ?ä=ñ?ä¦?ä5?ã¶?â¦è?àþ˜?Þì¾?Ý!X?ÛÐ?ÛL$?Ü/I?ÝüI?ß­w?á0³?âŠâ?ã:×?ã3¼?â²?â0_?áÿ¦?á³î?áƒ?áÏÙ?áÚÆ?á…ß?á%Ñ?àÛE?àš,?à,r?ßYš?ÞÖ?Þ,|?ÞX?Þú?Þu?Þ,ÿ?ÞN“?Þ*4?ÝË=?Ýob?Ý ”?ܵ7?ܳÇ?Üͼ?Ü–?Ü›?ÛxÌ?Û¸?Úû?ÛPs?Ûß?Ûc\?ÚÑE?ÚAÿ?Ùþ¿?ÙúV?Ú '?Ú8?ÚUb?Úa?ÚƒÉ?Útq?Ú$C?Ùà¬?ÙŸœ?ÙdÇ?ÙX ?Ù3ù?ØÉ)?Øfm?Ø5Z?Ø,?Øí?ØI?Ø?×±Ç?×.W?Ö÷ƒ?ÖÿK?×­?×L?Ö·_?Ö8?Õðg?Öã?Ö\©?ÖJÏ?ÕÅË?Õ1P?Ôõ¹?ÔÞ0?Ô”â?Ô:?Ô?Óõ7?Óé—?Ó¹õ?Ój\?ÓTÆ?ÓO?Ó"H?ÒÝj?Ò†“?Ò<5?Ò Œ?Ò ¥?Ò j?Ñâ½?Ѻ?Ñ©Ñ?Ñ­?ѽÑ?ÑŠ>?Ñ?жA?ПÅ?Ð?ÐBŠ?Ï× ?ÏSV?Îô)?ΫÝ?ÎJD?͹x?Í"Š?Ì•?Ëúl?ËQ?ÊI?Èá?ÆŠø?ľÛ?ÂíÃ?Àt?½ó?¹×?´Û^?±7Ï?±x?¤ â?¤}¡?¤Ë??¤­I?¤t?¤pU?¤s-?¤+Ò?£ª›?£`é?£SI?£`Ç?£€?£ˆø?£ië?£§?¢À?¢¸Æ?¢Ðl?¢Æã?¢„}?¢±?¡Äí?¡³‘?¡ß˜?¢#?¢+—?¡ê?¡¥0?¡WG? û? Ç? ÈÒ? ò¿? ÌÖ? 2Ê?Ÿ¹£?Ÿ˜…?Ÿki?Ÿ4 ?ŸD?Ÿ‡‘?Ÿo¾?žåˆ?ž€x?žY??žL"?ž'–?ž2?ž=¾?ž?šå‹?šÂ´?š˜?šXW?šB%?š>f?š“?™ïè?™ì€?™ìà?šM?šI+?š" ?™¥?™Hé?™²?˜­R?—ìj?—ˆþ?—ì†?—ºâ?—~u?—•§?—¾]?—¡+?—Mf?—"r?–ôå?– ?–QR?–J ?–ˆ?–¼”?–¤B?–˜2?–…a?–%Û?•ºt?•c˜?•6@?•(K?•0?”óÊ?”Ûv?”–Ü?”Bã?”à?”h?”E6?”_õ?”"ë?“Ú½?“ªà?“§÷?“Ð ?“¶¨?“ii?“d?“[?“ËÙ?“çq?“‹¾?“Å?’¥b?’x­?’º?’ªE?’z?‘ž ?‘šw?’÷?’AW?’0½?‘ä;?‘uG?‘?‘Á?‘Y¢?‘{–?‘`^?‘!?{ 5?zŸÆ?z.P?z œ?yê]?ye?xÔé?xƒÎ?x?Eëï?Fü}?Hs?H¨?Hwâ?Gó?Fð??Fà -?HŠ?H¬^?Hj]?GÅ®?F+‡?Dyý?D7Ú?E‘?E­ú?F(˜?Fú?EŽ?E)j?Eçƒ?G&p?Füã?EøÌ?E=ú?D­Å?D~ó?D€M?D4^?CÒ;?C_M?BÁ£?B¼"?BÕ?B­”?BÉ?B¯¦?B®D?B×j?BÖ[?C 2?BÎ#?BDÂ?Aùù?AÁ+?A¿?AØ0?A#?A6X?A/…?Aa ?A0K?@"?@Tm?@,5??Ç*?? z?>€w?=õ?>RL?>Î??>sÀ?=Ûû?=£|?=að?=’ ?>&Ÿ?>5?=ðï?=¯Ð?=V?<ºü?<Ç&?<ˆ?<™.?<áÊ?<æî?<Ï/?<‘=?<Y?;ó/?<æ?;çŸ?<ú?<o?<o?<9?;Ò?;šî?;/H?:8Ò?:Nü?:ò½?;d¥?;ïÚ?;«.?;9?:˜ü?9õ’?9ºÉ?9×R?9úÉ?9ÃX?9Î_?:%‚?9Áx?8þ[?8Ÿ?8©+?8ËK?9ü?9´?8³×?8£±?8Âß?8Âí?8‰³?8$T?8_?7÷V?7e?6öá?7Ž?7Œ?7Ž‰?7Z¥?7³R?7¹'?6Ýi?6m?6·Ô?6Tº?6˜?6Tõ?6:?5/T?4ô?5%j?4lj?3î:?4 â?4¬6?4Yk?3œ?3Á?3R ?3ü>?3³—?2ŸÆ?2Wê?2“?2°u?2ìx?3C_?2ð?2Ä?2)Ý?2>?21&?2?1öM?1Pù?0çš?0îô?1ó?14?1 Ç?0û)?0ýç?0Ш?1x?165?1#¤?0ù ?0}f?/«?/§%?0†?0fŒ?/na?.Hÿ?.WG?.·|?.þ?.ÓþÑô>ýê¨>ýßç>ýÊ2>ý¿Ÿ>ý Ã>ý~q>ý‡>>ým>ýIÐ>ý-¤>üÜ“>ü’R>üÇ~>üÿ·>üÝõ>ü’>ü!ç>ü”>üö>ü‡>û¸ã>ûL|>û=š>ûH>û">úíý>ú¿{>ú4>úŸ>ù›W>ùœó>ùoë>ù›>ù2É>ùù¼>ø¦ï>÷ê§>÷ìè>ø;¼>ø:µ>ø¼>÷ó>÷ÁÃ>÷‚°>÷\Ã>÷F>÷"|>÷:>öëÎ>öÀ×>öžl>ö6>öZ:>ö5Ã>öÃ>õØë>õ¨·>õ2É>ôs>ôtë>ôª×>ô±>ô¦Ì>ô…p>ôa >ô5Ë>óðû>óf;>òô>òvk>òùn>òÚ>ñî0>ñ#þ>ñ>ò Ã>ò8r>ò->òÌ>ñàá>ñ¸j>ñ’Z>ñj>ñ=>ñG>ðê²>ð¼C>ðXü>ð€>ðõ>ïð®>ï±á>ïˆÄ>ïd>ïœ>>>îÝî>î,×>í>2>ín­>í°G>íC>ìII>ì1>ëÏÁ>ëä>샳>ì†Q>ì’Z>ì£;>ì²>ì>Ó>ëέ>ì%<>ìÁ>ìGœ>ìmo>ì—ð>ìmº>ës£>êÁþ>êK>ê>ê,†>ê5u>ê]>éËü>éw#>é`ï>éˆ>é%³>é˜<>éA>è¦S>èWi>è9a>çÀJ>ççê>è§S>éÂ->ë†>빂>꜔>éi>éyý>éG<>è¡>è~/>éGA>éHô>é >éó >êN9>æ¤n>áÞ¨>Þ«4>Ý Ñ>Ýö>áö>ä(æ>æ¤Ö>çu>åØ->ãø\>á× >á-l>ã¼>åœ!>åÕf>äÄ>â²">â>ã}?>äg>äÏ>ãân>ãO>â¶3>âp‹>â‚>âtƒ>âL>â!ó>âOæ>â?k>â j>âì>á÷Ÿ>áÉN>á~>á‹d>á›E>áXÜ>á&>àÔ>àWM>à= >à^<>àEÂ>ßý„>ßÊ¿>ß¡/>ß”ï>ßkï>ß)m>ßn>ÞÌ]>Þžo>Þ€>Þ_­>Þ/ˆ>ÝÂ{>ݯ>Ý ò>Ýs2>Ýen>ÝGM>Ý$‹>Ü÷¹>ÜÖ>Ü´¶>Ü~>Ü>™>ÜÚ>Ûáé>Û±M>Û|¾>ÛDö>Û>ÚЉ>Ú†´>Ú>N>Ú¢>ÙÓê>Ù‰¬>Ù@ö>Øþõ>ØË>Ø£ë>Ø{Q>ØRÜ>Ø(ç>×ó˜>מï>×`>×U->×)³>×T>Öàý>Ö°T>Öw×>ÖBÄ>ÖÚ>Õèò>Õί>Õ³ >Õ( >Ó½>ÓÏå>Ô>–>ÒP¬>Ò?>ÓñÉ>ÔVg>Ô%>ÓÏ >Ó”>>Ó£™>ÓŠæ>ÓU¤>Ó G>Ò©”>Ò‘G>Ò‰þ>Òpp>ÒGÜ>Òþ>Ñæ_>ѽ>Ñž!>Ñ{o>ÑP{>Ñ>>Ðë>ÐÈ>Р>Ïpá>ÌØm>Í|Ý>Ïv>Ϩb>Ïw$>ÏU*>Ï8X>Ï>ÎÛN>Πû>Îx7>ÎQñ>Îí>ÍÌ>Í‘U>ÍQF>Í3>Í=~>Í!Ã>Ìëº>ÌË€>Ìžb>ÌhÈ>Ì0l>Ëý>ËÙè>Ë©>Ëtï>ËC/>Ë>ÊÚ >Ê© >ÊvM>ÊBH>ʽ>ÉôÜ>ÉÍÇ>É ¼>Ézn>ÉS>É$á>Èôò>ÈÉa>È™m>Èe>ÈE>È/r>È>Çûr>ÇÛÕ>Ç»w>Ç‹à>Çi?>ÇL^>Ç*â>Ç#ž>Ç$.>ÆÝ >Æ­¶>Ƭ¦>ƪ‹>Æ€>ÆO¾>ÆMI>ÆD>ÅúØ>Åì3>ÅA>Å6ï>Å=L>Åç>Äi¿>ÄP>Ãmø>Âï]>·=>ÂD»>©>¶n>Â>Áù]>Âyö>ÂJ€>Áî#>ÁþW>Á3™>Á;¢>ÁxŠ>ÁRÑ>Á²Ÿ>Áç°>Á¨>Á@P>Á9˜>À²ø>À‹>ÀÓÕ>Áfv>Á9Æ>ÀÏH>À9¯>Àž>ÀWã>À_ö>À;>¿±Ú>¿}¦>¿°>¿)>¿TO>¿jo>¿:>¿/·>¿'>¿Æ>¾ja>¾ü>¾n:>¾_«>¾v>¾ÐÑ>¾_#>¾ã>½ïU>½Òð>½® >½™ˆ>½©«>½¥T>½k>½U->¼¿'>¼¡0>¼øµ>½".>½C>½H>½«>¼äf>¼[>»Ä«>»)Í>ºÛ1>º¹Q>º†Y>º“Ú>º>ºR¥>º">¹áŽ>¹½>¹Âí>¹¾‹>¹¦Š>¹‘’>¹‰‰>¹‡h>¹cû>¹DÆ>¹%">¹w>¹ -­>¸÷U>¸Ô]>¸~©>¸ ¾>·žé>·E—>·¦>¶åE>¶´?>¶Š>¶]>¶/ë>µú,>µ»c>µ™_>µ{%>µIy>µ„>´ÜË>´¼±>´®Ô>´•Ÿ>´{‚>´_,>´=p>´›>³÷È>³Û)>³ÁN>³¯²>³§ˆ>³¢2>³š >³¡­>³£È>³ˆ¨>³<û>³ _>³1‚>³õ>²ï>²Ç|>²²>²tÆ>²L¯>²)»>² -®>±ã>±½„>±—Q>±jÞ>±;–>±:>°ûü>°Õë>°«5>°}>°KP>° S>¯¼`>¯¿Ë>¯µv>¯‰>¯p×>¯Jõ>¯J>®é£>®µ>®…F>®RA>®*³>®>­ç>­Á_>­‘>>­Eê>­>­,>­ 3>¬úÏ>¬ÒÖ>¬´">¬š>¬Y >¬Ð>¬¿>«ù >«™Ÿ>«`Ä>«ƒE>«y>«V >«8m>«æ>ªí>ªÎ{>ªº>ª¯Ò>ªp`>ª3Ò>ª1>ªb>©Ö3>©%>©X•>©3>©T>¨âÉ>¨ÝO>¨³'>¨h->¨`É>¨{´>¨®F>¨O€>§á›>§ìå>¨@¤>¨¾°>©Ã)>ª{>©(›>§ªe>§à<>© ¡>ª5>¨ùw>§¡1>¦“ ->¦>¥ˆ>¥_'>¥Ã–>¥äG>¥Íâ>¥*s>¥%>¤o$>£Ëð>¤Ë>¤gt>¤.¿>¤î>¤¹>£öM>£yæ>£W>£u–>£RU>¢“q>¢+>¢`‹>¢n >¢û>¢P©>¢ Î>¡æB>¢hð>¢nÂ>¢.">¢ÇŽ>£Æ>¢^T>¢1(>¢Ã>¡ö‘>¡€%> ›> yï> ˜> lò>Ÿ´=>Ÿ&>žÛ>Ÿ/\> ¦Å> ,O> “†> Ä>äˆ>žvz>Ÿ‰ê>Ÿ>Ÿ¾*>ž ¤>›‹.>œ7Í>œƒ>›Ò>š%>˜~,>œ•³>žn±>š<>šlÁ>že>iÌ>˜É–>˜F¬>›¦®>œÖg>š¥>šD>šP$>™áª>šÚê>šÔ>š¶/>—²6>™_B>›Ëœ>&ñ>€¦>+1>œ›E>›GZ>›Oy>›úe>šÁ&>š&g>š#'>›+>›Ï >›%ß>—÷1>”¸k>“³>“nj>—Ò)>šô>˜žÒ>˜È)>™ET>™ã7>š]>šÍÀ>š…í>šRD>™8½>˜_á>™ñå>›R'>š_¾>šQ¸>š³Ì>šm>–Èß>•ü>—¦ã>™Æ>—9>“Ø—>–êœ>—ö5>”ÎØ>–¥'>˜ÙN>˜§>—Æå>•Ïq>•©>•©¹>• º>–mü>˜ -\>–¨ >•c×>–V\>—Ñ >—ÍU>–17>”ÆJ>–"è>—¸û>—­{>—fP>—pÓ>˜†>˜V„>—‹ì>—<Ò>–†µ>–MÇ>–‡º>–@¥>•Ÿ&>•ÓK>–U>–Fn>•÷B>•±>•ì>•:\>”’™>”­,>”Œâ>”3R>”">>“ç}>“—æ>“xÌ>“YÃ>“ >’éf>’¸®>’Šð>’dæ>’7C>‘÷c>‘¢>‘xü>‘rh>‘Oƒ>‘=B>‘A‹>‘.V>‘ ™>‘Ì>‘ >ïÝ>Ã!>¨]>–4>oÒ>d‘>U>7D>é>ù)>Í¥>€]>4d>)>"»>Ó>ŽÞ0>Ž¸š>Ž¢ž>Ž”½>Žvi>ŽTk>Ž8Ñ>Ž®>ô©>Í—>™8>dZ>[^>H^>K>=‰>> ‚>_>ŒÚO>Œ‡#>Œ]p>Œo×>Œoó>ŒB¦>ŒB>‹vó>ŠæË>‹?­>‹ >‹)Ö>Š1>ŠÏK>ŠîÃ>Šy{>ŠY>Š1«>‰J>ˆüé>‰ñ >Šu>‰ê4>‰°>‰¥ >‰'>‰E>‰a->‰yÆ>‰o>ˆÔœ>ˆÍð>ˆi>ˆ,´>‡½ƒ>‡Ëß>‡­þ>‡fÄ>‡Ž¹>‡|â>‡E2>†ñÚ>†ˆ>†5>‡èa>ˆƒd>‡g>ˆAm>ˆzp>‡8X>ˆ,L>‡Ú>…µ²>†è>ˆh>†8>„¬*>†P÷>†ço>ƒßÎ>‚ >‚>Þ>ƒ>ƒ>µ>…>‚¥F>„;e>… Á>ƒK¤>€¿ì>|c>‚šv>‚n>ƒw >‚ûr>Õ6>‚°>ƒÀ7>ƒÚù>„Iz>†¬k>†J>‚õÿ>‚–>ƒ¦Î>ƒ|>€3Ó>~Uã>þ´>ƒ!µ>‚b>‚Ìø>ƒ2í>€‹>x¥>v¶@>z^?>€g`>‚Áu>‚¢{>€î>y>5£>yöÇ>tž§>qƒÝ>p‰F>u›¯>|a™>Fõ>ƒ“t>‚¶’>ƒ =>‚y>~‰¨>z‹ý>t«t>nÒœ>m’ë>p¦6>xy(>‚>+>ƒu°>‚v>ˆ1G>•ÐI>©¾{>°‘Š>®>[>°e>šÚ>ƒ€U>v}{>qî<>rü˜>zD>„ž¤>‡”!>†×3>†1À>‡zÚ>„i–>{sa>köK>jåd>lÑû>l›ø>m7T>m¾K>m-S>mà>nfi>tRý>}’>ƒãÁ>…àŒ>„«•>„7>„‘A>—>y V>n¢ >l¥`>mtÙ>oCu>nÿ¢>oA>n¸>mî>l§Ú>l >lê>k¼ >iÒ >l Ö>uUp>c„>‚ô>‚õ(>„”û>…ré>I°>u©.>mûH>l>l¨ >m7Œ>nÉh>oO>ml«>kä8>iæ£>jû>jV>iè>gq>f˜>fÇ1>fót>hQ>i(Q>n‚>|!t>…_â>†©->ƒµØ>ƒ[>ƒJ>{Ê5>p³¢>jv>c›ƒ>cü>fäÞ>g¸P>je >n~á>p<>pZ>rìl>u¯ñ>v,,>ts¡=>r?ß>o5t>m´7>l|>iuY>fk>cj«>a5m>_I>^È@>cØù>l¶d>{Ù4>‚›Ä>!?>€>ƒ]1>‚_>x‡*>nÊÄ>j >iñ‚>jÒl>kDn>m‹g>nÝ>l•Q>lN>mâU>o†¸>pÈ©>qý¬>s.¸>q¿f>qד>uÉF>u°>qº³>qöª>rÀ/>q›!>o'´>n>m$>lk>j] >i}>iŨ>jX>gÕþ>e]>du>aòl>g{>sÁk>€x>‚ ó>‚b(>êû>‚1¢>x¾¬>k¼>b…}>aàú>aw%>a¯Ü>c¼>dh]>bâ{>by>c'£>eÈ­>g’£>f¢˜>g¨>h!.>h~®>iï>hä›>h‹}>hï9>iMÚ>hd>h%j>iCc>i@¿>k9>li>l‡Ð>lÈ¢>noœ>mIt>mÔ>lçß>l%>m¤>nÉ!>nи>l(Ë>h‹”>eç>g#>eé¹>a¡’>^‹A>\‡ ->Zð%>WeC>V©>W>YJƒ>Zš¹>V*C>Qu6>VÜ>WkŸ>V8S>V‹ÿ>Y0û>[KÙ>]š>^§>_ç~>`Ö>aíN>b.d>aÛe>a˜e>a+§>`º>`ME>_å!>_­É>_>_qt>_O>^ÙØ>^a>^’Ü>^µú>^Ž>^f@>^?Ù>]¿ˆ>\-Ê>\€>] ù>]7 >\ß;>\ÂZ>\Ù½>\¶)>\ˆX>\X>\)`>[ü>[ËK>[˜«>[j>[:Y>[ô>ZÓY>Z—‰>ZbO>Z5>ZN>YÆJ>YŠr>YF?>YÈ>XÂ>Xt¦>X%>WÆ >WR|>VÑC>VBÉ>U?|>SOa>RYK>Q'˜>NÿŠ>K7>FŸ×>@>7›>,øö>(šã>1!>>:¥ï>AÕk>G=¤>K%ß>MÌÀ>Ož!>På>Q°>R1Z>R†`>R¼¦>RÛ‹>RÉh>R´­>R¾°>R±A>R¾ò>R¬›>RN>Rr>PÇ>OAÝ>QDc>QÝ\>QŸ>Qx<>Q0w>Pb‹>Oóö>P’L>PÐ{>Pl_>Oõ?>O>OÓ{>OG>L÷E>NQÇ>Ow>O&>Nù„>O‡>Nã>N>Ml >M¶õ>N'–>N ->MÕg>MÐ>LÝ->MH®>M.O>L¾,>Kï—>Le8>L‹Ô>LaÛ>L2d>L e>KÞ`>KŸ¾>Ka)>KS>Kê>JºŽ>J§A>J‹Ø>Jxí>JQÄ>J#>Iôz>I·>I^É>Hrp>G§f>G£>HI>Hƒ[>H„>GJp>G¥>Gµ¨>Gqƒ>Fî¹>Fi>F`(>E>C]ë>DI6>C¹T>AÌ,>A >@¥>< -…>7˜V>5ª>/Ù±>'¥>CÊ>µ¥>" P>+—¦>2Bû>7K‘>:îs><%>;¸6>?D4>@Ï–>@ï¼>AMf>AÓŸ>Aá>@ F>=ê>=H]>@&$>A¶¯>A‰ï>A‚v>A}×>Adû>ACi>AÂ>@þ‘>@¨>@e >@+®>@UÌ>@­>?Ôõ>?Ö >?=d>?Þ>?wÇ>?k >?>ù>?z>>ë‰>>ËÇ>>¥ô>>w‹>>4©>=Åö>=v>=¿u>=£‰>=‘°>=i|>=)¥><ÌÖ><ÜÏ><Ò°><¬h><Ž><_°><9©><>;åJ>;ÁJ>;7>;q2>;C->;% >:ôï>:>:…ë>:y½>:ad>:80>:È>9–ã>9‡a>9v@>8ÐO>9 N>9+ø>9ÿ>8Þo>8F>6šE>7}2>7¹>4˜.>5h>7fH>7t2>7t!>7Pã>7'1>6–€>6M">6Œ>6±>6W·>66ý>6%<>5úõ>5ÌË>5 Ž>5„>5a1>5:¾>5²>4ì‘>4°>4/õ>3¾”>4'¿>4'€>4>3Û>3´…>3º>3`ö>3â>2Ë,>2ÜJ>2¹Ž>2‚u>2=>2]>1ø|>1Êw>1¥>1mP>1'N>0ÓA>0³>0ß>/Úp>.mZ>/>/3¨>.•Ö>-Æ>,J->+• >*J>( 4>%> ‡ž>o6>0>æ> -bü>â>E0> ŸÏ>$vÈ>'Ê>(ÝK>* -ê>*Õ >+Uš>+¬Ú>+Û+>+ù>,s>, ©>,z>,>+ÿ„>+ïß>+Ò >+¯z>+¦>+‹3>+[>+7•>*ÔÇ>*Í>*îh>*Ñn>*³#>*™Ë>*ok>*§>)’‚>)´·>)ˆi>)ko>)L">&}>&ën>)h>)%>)¡>(á >(¾e>(™~>(h<>(Iˆ>(*]>'Ú>'"Ô>'Z>'œR>'pÎ>'SC>'2‰>'V>&ò~>&Ôz>&¡¹>&k›>&bS>&FÈ>&#i>&ž>%Õ&>%´9>%‹s>%mw>%W0>%5>%1>$ív>$Ìô>$«w>$ˆ®>$f>$Bô>$v>#ø‘>#ÖÌ>#¡ï>#|>#rÜ>#RŸ>#,i>#—>"Ùv>"wà>"z`>"€”>"c>"Ad>"H>!ü©>!Ú>!¸ß>!–æ>!t:>!PÜ>!0T>!> ìf> Æ > ¢Ó> | > a> =ü>þo>ŸÐ>ƒÊ>¡õ>Š›>jE>B´>1õ> -G>Ð>§Ý>‰E>wì>e¨>I)> ×>ÛC>zƒ>Œÿ>3æ>/>9>s>áÃ>‡«>œô>˜ƒ>€ä>W“>$‘>ô}>Ç_>Á/>¥4>I>R>u>h>ïÈ>ö×>ÊÛ>†g>`‹>X>0>/š>TŸ>Òà>Âp>rP>Aš>ë >)Z>èÛ>ŸÑ>ìå>Ôí>¸->›—>o/>>^>ãÕ>Ì5>ÆP>·¾>¸>•`>sP>E®>M>¨>•7>ËÜ>·¦>“ª>mê>Q ->#[>ýL>ð‰>Ñ ->±~>‘>pÃ>O¯>-Ë>È>Û´>ÂW>¥¯>A>N>ì¡>ó >æ>¶>ŽS>i>9”>>Ì>„0>:&>èÔ>Yû>êö>–ò>8>Rå> ¾É> -i3>P>—ü=ø5=æ²i=ä“/=õå”>D+>±>Ün> ¦> †Ý> …Z>-‚>šÁ>Ñ >ŠÛ>Ú%>:H>Bš>AÍ>7|>(ë>µ>¾>ôÉ>ßq>DZ>—b>8¾> èÒ>Õ> ¼Þ> ¼´>œ> î+> v¢> Nò> Ì> }ƒ> j`> Nà> %> –+> Þ[> Ûu> ·¤> •˜> …> gˆ> D}> -l> ~> ò9> ÊN> ³S> > }> ZÏ> D|> 'è> -š> -ìÄ> -ÐË> -­ž> -"> -z'> -[Ë> -<Þ> -#> -—> éi> Ëñ> ®“> ì> tŒ> W8> 9> !> æ>ä>Å|>©r>Ž >oš>Oè>5A>T>ñð>ÕÏ>Ã>¨K>Š>d{>Mo>5ˆ>W>üÒ>à>Ã>¦„>‰Ñ>n>QÎ>5_>>ûÀ>Üò>Ã>¦œ>‰Õ>o >Rê>6®>&>Ø(>˜O>ûg>¢>G>n‡>So>7>>>ô›>¬ö>µ!>­‚>’2>uÇ>Yw>>œ>"¬>_>ëE>Ï>²$>—>iÀ>M,>9“>(d> ->ì>ÒÏ>¹ú>s>ƒ>h(>D>z>%>úä>Þ×>Á>£ù>Š³>jÛ>U+><>Ï>N=ÿÏÐ=ÿœB=ÿhÂ=ÿ3³=þýz=þÇ‘=þ¦=þVõ=þ$)=ýï®=ý·î=ý~ö=ýLò=ý –=ü·^=üu”=üT=ü-·=ü_=ûÕq=ûœœ=ûY =û.Á=úýß=úËI=ú•°=ú`Ö=ú#Ž=ùï=ùº=ùˆê=ùXe=ù —=ø¾P=øtÜ=øre=ø&:=ø2=÷ÒŠ=÷—Í=÷wò=÷*Å=öÝ9=öÐö=ö¤¡=övÎ=öA§=ö×=õÒù=õT¤=õ'Ã=õ3‹=ôæï=ô¬ž=ô‚-=ôjk=ô6S=óû=óÈ~=óŠí=ófW=ó7+=óè=òǶ=ò“i=òb¼=ò2O=ñÿ#=ñÃ%=ñ—©=ñ`r=ñy=ðñe=ð«=ð“=ðf«=ð3X=ðË=ïÎß==ïh˜=ï5+=îý=îË=î›=îg>=î2=íú=í¿P=í—=ímØ=í:ü=íy=ìÔ =ì£â=ìm=ì+Ü=ëû5=ëÔ=ëŸ=ëfÅ=ë¸=êÞ=êÅÁ=ê‡õ=é–[=éèd=éÏ5=çîó=è =é=çW…=çNà=èÕk=è½1=è‹Â=èYï=çøÊ=ç0Ý=ç’ó=ç‹x=çZ‰=ç+y=æý'=æÏŽ=æ½=æ=´=åp=åÜ=åÖã=å¥Ð=åw,=åEü=å Ë=äÝ=ä¥p=ä6ç=ãÏâ=ä 3=ãä'=ã¹¾=ãˆE=ãTL=ã*í=âý)=âÍ=âšu=âk%=â<=â Ó=á˺=ᦙ=á{‚=áK=á³=àà1=๊=à‰=àT=à&=ßùG=ßÆ)=ß– =ßc'=ß0?=ß!=Ýpa=Ò/>=ÓÐu=Ý“-=Þ=ÝäÈ=ݳá=Ýq~=ÝHá=Ý#²=Üó¹=Ü‹=Ü‘-=Ü^½=ܼ=ÛÜê=ÛÅý=Û‰Þ=ÛXÏ=Û-ô=Úû=ÚÄ"=ÚŽÆ=ÚUú=ÚÕ=ÙÞŸ=Ù¤s=Ùd/=Ùt=ØÕ=Ø‚í=Ø+˜=×Æõ=×EŒ=Ôð‰=ÐŽ=ÒKI=Ó“ð=Òˆ©=Ð`==ÍM=Èø=þ=ºžó=¬› =ªý=¸=ÀÆ=ƨF=Êoê=˯™=Ï3=Ñ6=ÑãÊ=Òr^=ÒÐF=Óõ=Ó/]=Ó<÷=Ó=`=Ó9ñ=Ó[=ÓÚ=Òõ=ÒѪ=Ò±=Ò˜=Òt“=ÒPô=Ò,7=Ò¯=ÑÜž=ѵÙ=уö=Ñ Î=У®=Ї-=Ðß!=о^=Бã=Ðhq=Ð?–=Ð=Ïèó=ϼ=φc=Ï;=Îj!=ÎÓµ=ÎÚå=ηù=ÎÅ=Îec=Î:=ÎÍ=ÍãK=͵¶=Í‹h=Ía=Í5A=Í?=ÌÝ,=̲=̇X=Ì[3=Ì&ÿ=Ëô}=Ë×d=ˬj=˃p=ËXµ=Ë-J=Ëü=ÊÕÆ=ʪî=Ê=ÊVd=Ê)ú=Éçº=ÉÁ'=ɨÛ=É|²=ÉP¡=É(h=Èû5=Ⱥ=Èš=È}5=ÈQú=È(õ=Çÿ=ÇÔF=ǧ=Çs$=Ç7p=Ç%P=Æþk=ÆÔ'=Æ6=ÆO]=Æ@Ç=Æ#º=Åþo=ÅÔº=Å­P=ÅÇ=ÅH'=Å"±=Å$=ÄÚV=Ä°!=Ćð=Ä\†=Ä0T=Ä=ÃÝ?=õ]=ÉÒ=Ã\=Ã7”=ñ=Âä4=º=‘§=ÂdŸ=Â/ -=Áè=ÁÕ™=ÁªÉ=Á&Ž=ÁP=ÁD=ÁI=Àë‹=ÀÉ=À¡p=Àx)=ÀN…=À%.=¿õÂ=½ôa=¹ôu=¾y«=¿=¾-î=½¦=¾d=½F=¾SË=¾N~=½×Ã=½ßÆ=½áu=½Àg=½•è=½i¢=½C=¼—ß=¼AÕ=¼Á/=¼œ£=¼|}=¼U_=¼,>=¼=»Û³=»´!=»„ž=»SÐ=»; =»J=ºæ/=º¼š=º–B=ºIÃ=º7Õ=º#m=¹öß=¹Ç=¹¤Ä=¹u>=¹M=¹5t=¹ Ë=¸â=¸µ´=¸ˆÍ=¸eî=¸CØ=¸\=·ã†=·Íç=·ª®=·ƒ…=·\5=·4"=· Ô=¶ç=¶¿ï=¶˜î=¶pO=¶'È=µö=µáÛ=µÓ=µ¯=µˆJ=µa?=µ:q=µÂ=´ìð=´Æ=´ŸR=´uî=´LÈ=´*Ï=´=³×Ù=³´9=³‘=³k=³D=³M=²÷Ø=²ÐÍ=²©ñ=²„Í=²^¥=²8~=²9=±æa=±´¿=±—å=±yw=±Sœ=±*,=°ýí=°Þ¸=°»)=°’ñ=°oÇ=°JÍ=°$ë=¯ýF=¯Ø=¯³Ä=¯ŒÃ=¯_é=¯@s=¯U=®ø =®Ò‰=®¬õ=®†Ð=®]a=®6†=®=­ñ=­Ë€=­ˆc=¬ïK=­>j=­7v=­ =¬ëÖ=¬ÂQ=¬‘ò=«Øå=¬ Q=¬-“=«æ÷=«¼=«Ãñ=«¡U=«|p=«W„=«2¸=«€=ªÝ=ªµ°=ª‹Œ=ªJI=©¹0=ª=ª …=©Æ=©rû=©‹Ù=©q=©V¿=©1²=©>=¨é´=¨Å =¨¢[=¨~^=¨Zr=¨6K=¨E=§îE=§Ê;=§¢=¦ù¨=¦¶^=§3=§Ï=¦ð=¦¹â=¦ŸG=¦†ƒ=¦by=¦>©=¦s=¥÷=¥bh=£¿´=¤¤=£<·=¤žë=¥ †=¤üó=¤Øu=¤¯==¤’[=¤q~=¤AR=¤©=¤O=£åY=£¾^=£ˆÞ=£m:=£Wº=£4û=£[=¢äI=¢ÌZ=¢©Š=¢†Û=¢cý=¢@x=¢´=¡ú}=¡Øƒ=¡µ&=¡’p=¡pR=¡H@= Ïò= Ò’= äß= ½l= Œ= {0= X›= 8)= $=Ÿà³=ŸËß=Ÿ®=Ÿo=ŸjA=Ÿ5³=Ÿé=žû_=žâM=žÀq=ž–K=ž;¢=í+=žÎ=žë=óÏ=ÑÊ=°C=ŽS=l=JÉ=(û==œå=œÃ‰=œ¢!=œ€=œ][=œ==œ9=›ù*=›Âƒ@z@ó@yˆ @yHs@y«@zyÒ@{>@{œã@{};@zöž@z7@y‚™@yÏ@y›@yph@yÚä@z‰@ze@yŒ@@x±@wä@wA@w[B@wÊ+@wù¹@wú©@x^@xkì@x°@xá @x¢n@x @w6V@v˜@vp´@v®t@vøK@vè¿@v2¥@tÁÒ@rä·@qH¹@p•N@pûk@r5m@sÈÑ@u2ü@vÖ@vrM@vmJ@vEH@v@uÈ{@u5 @tRC@s[}@r°T@r)@ræ(@s€×@tÛ@trñ@tb@sñ+@sfÊ@s ¾@rày@r¤”@rON@r(@re]@rßÑ@sH¤@sq@sV¥@s@rƒ¶@q”š@oÚ«@mL¶@jÕ@iáÛ@jôz@m Í@o"Š@pdÇ@pø*@q:@q€@pú@pËÅ@p^‚@o‹&@nsŽ@m…­@m”@líƒ@lÃù@lZ/@k¹a@k$8@jé‡@k4‹@kõZ@lÔ»@m[ @m9±@lyo@k˜—@kQŽ@kݬ@l£8@léÙ@lœÀ@l$’@k®ù@jñ…@iÄä@h«ù@hXb@hºÙ@iò@hºª@h+Ÿ@h @hÈ@ió¸@k@k›è@k¿»@k±î@k¥…@k˜ÿ@kl®@k é@j‹w@j¦@iÊ®@iœ0@i…|@i›@iÖ!@jV@jÃ@iÊü@if@hÃÕ@g×®@fÒê@f@Q@fŠ;@ge@h »@gë@gk@f6Ù@eí«@f/¬@f?@e ñ@d½@dhL@dìê@eº÷@f µ@e•?@d‚ß@c^$@bÍý@cv@cÓ¡@d¦@e'"@e©(@f²@f@f@e½À@e7i@dG"@bØ'@a T@_Ì@][F@\sÉ@\ß'@^<Ò@_žR@`{B@`ýÆ@aP»@a [@_™i@]>@[Ká@[5]@] œ@_bû@`DZ@`Öî@_×Â@^-œ@\@[¬¯@[ó@\žE@]Î@]£D@^®@_ù¼@`ø©@arr@a‡I@aZR@`òÈ@`]’@_Ð0@_—ê@_ÒM@`Dº@`Ž`@`cÂ@_Ž@]ò@[Ûg@Z?@Y}@YÂ|@Zã@Z99@Z¼w@[èþ@])c@]Ëž@]Æl@]•ð@]£'@]ðC@^AV@^hØ@^\ð@^&@]Ù@]•@]j]@];8@\¸y@[•@YûË@XÄÿ@Xº)@Y¥@Z’@ZÍ@@Z\G@Y³@Y68@XÿE@XúE@Xýe@XÇ€@X?»@W°e@W„æ@Wã¬@X›°@YM @Y£ß@Y­@YC@Y @Y ó@Y0ù@Yô@X^@W”h@WAá@W„2@X/@Xr‚@XªR@XªŠ@X‰p@X^þ@Xû@W«¹@WW@V~ñ@UðH@U T@Sö"@S‹*@T@U@Uw×@Vc@VàH@W&ß@WG¢@W9|@Vü¦@Vš&@V/—@Uê‰@UÙ@UÞÒ@Uä@UëE@Uö'@U÷H@UáD@U²Ÿ@Ueø@TÝÓ@Tc@Rý}@RUÖ@Rc±@Rì{@S_$@Sk @S;\@S4Ÿ@S¥@Sî>@T2€@T8;@TÔ@SÏÌ@Sm2@Rã„@RO@QòÙ@Qþ -@RR‰@R©‘@RÙ^@RÑû@R|9@QÐÞ@Q ¸@P•3@P l@QØ@Qrd@QÁ2@Qáó@QÖ@QŸ·@QFH@Pæˆ@P§@P“Ð@PŽ–@Py5@PSt@P3@P$œ@P ˆ@P`@O÷Ð@OÆV@O˜%@O€:@OyG@OvT@Ov@O{ @OzØ@On@OW-@O;@O6@NÅ•@N; @Mt~@L¯»@LG¦@L\3@L»@Mº@M^_@Maí@M0 @LïÕ@Lɨ@LÅF@LÅ @L°@LŠr@L[U@Lï@K»±@Kp@KX½@K\@K3ò@JÄ @JF@Iý¶@Iî±@JÒ@J;Þ@J„@J÷·@Kb@Jÿ@J•ê@IÓj@HÂI@GÅl@Gxë@H -Ì@Hõ6@I•û@Iº @Iè@IQ±@I0’@I ¬@Hñë@H‰@Gþã@Gw?@Føè@F–V@FŽx@Fý‹@GŸG@H±@HA3@H$€@G¼@Gœ@F/Î@E¼Ñ@Eïp@F}á@FÜl@F¼e@F4Ò@E¨ @Ez‘@E¾Ì@F14@FG@F‹¾@FV@Eõ@Eˆ~@E:M@Eœ@EÆ@Dë@D§o@DˆÙ@D²ä@D÷¨@E@DèL@D°b@D–¡@D›@D›°@DƒÓ@DVq@D[@CÃ@CrM@CL~@C^p@C…†@C—Õ@CY@Cx×@Ce@CEœ@CD@Bž€@B/¬@Aó¥@BÖ@B6Q@B,˜@AÈ@A3à@@¿‰@@©t@@÷G@Al|@AÀB@AÛ@AÐ.@A¯í@A~Ò@AAÝ@A @@óJ@@ð¾@@ç“@@¼…@@c@?âä@?_³@?@?ë@?t±@?Ü“@@-@@% @@ @@œ@?è¨@?ÖY@?ÅÈ@?¤@?[¼@>í-@>…®@>\@>l@>Þ@>ƒ6@>…‘@>‰@>zŠ@>>á@=´Ñ@<ãã@<6§@<#m@<¿@<ò@= º@<çH@<ž?@<]¿@D@)F@Ëø@ãO@ºó@´B@*b@c]@øÜ@öÆ@.é@·Ù@Å¿@S8@îE@$@2„@ƒ[@·@q´@^•@M-@•æ@,@@ë@où@§à@„Q@’œ@“H@õ±@\O@x½@ ÷¡@!ˆâ@ Ë»@¯‹@ñp@zî@w@Ó@@F@¹Ÿ@Ñr@ZZ@ çÓ@$Ä@(è\@,ÄÄ@/‘ª@0ßú@0ÊÇ@/m§@,΂@)Uþ@%«@"0@ad@fh@ôð@y§@±ß@{@¤@$ )@*.ù@0Êñ@7Qa@=(î@AÖ²@E@F–Ð@F¢:@EZ‚@B±£@>|â@8äR@2g@+»Ò@%›ð@ @“@bú@$@Ž@âQ@éÄ@s‡@!Ý @(Ix@/“†@6ì¯@=fH@B…%@F|6@IÍ€@L—‹@NÊ@OŸÇ@P%ã@P[»@P'á@OmÑ@N6@L‹]@JOì@G-?@BÁÊ@=î@6[Ð@/rl@(ý@#e2@cÒ@  @¿@_Ý@#a@¯@"«A@(Ç @/Vð@5Ì»@;Œ˜@@aö@Dƒê@Hv>@L†Á@P}L@T@W¸@Yoz@[)@[ÏX@[Qg@YØ@TV@Kó@AuŽ@7¥ê@2H@3¤O@;#Ú@Ei¨@N_Ý@S¿l@U‰ý@T·C@R ×@Më@Hœê@Br¬@;Í@3ß?@,W @%áÁ@ @0a@Ó!@à}@Ó@#ú%@)Áñ@0yî@7ôÇ@?tÀ@FA@KÞ@PKÃ@Söû@W6Q@Z" @\m@^O @_„ø@`‚ò@aP(@aÔÕ@b7ë@bƒÕ@b™æ@b³@cF.@doe@e‰î@eÐG@e0Œ@cÿ$@bÃî@b&’@b -"@a8@^¡œ@ZÄæ@W5[@Tþ×@T"@SïF@S»¤@S—5@Sï@T̹@UÅ\@VSò@V=¤@Uœš@T—»@S‡@P¹v@M4_@H|(@B¯D@;õ@4µÎ@-—Q@'+`@!ªb@÷å@…¬@¸ú@*º@±}@%¡@+tJ@2ñs@:À@Aêœ@H)™@Mn~@Qž§@TØm@We@Ykç@Zä@[àj@\@]ñ@]j@]Ùñ@^"L@^Uâ@^K£@^ñ@^=þ@^Ó~@_›&@`WŸ@`Ë @`ˆ¶@_8@\èˆ@Z5Ê@X„@VÞÜ@VˆH@VÀ@T·£@R ü@N„×@KKd@I³Æ@J«æ@NI@R­ -@VÌ·@Y>G@YC¹@WhG@UÚ·@VK“@X1ï@Z"»@[}@\L—@\®œ@\…@[¾Û@ZÂR@Z Š@Y£9@Yb-@Y+–@XåŠ@X*@Xˆ@W¶Õ@W9 @Vs@UJ @Sá$@R€@Q9q@P/@Núµ@N-5@M@K '@HP\@D§@?…%@9ð@1…2@*Dé@$¥‡@! Ê@|Î@ά@ .@jÄ@Ú·@•@w­@!ÎÙ@'S@-„1@3uÈ@8²Ê@=:@@¡€@CUI@Ez‰@GIö@HÕ@J ø@Jà§@KeŠ@KÇ(@L9—@L™H@L©X@L‚q@LgF@L:#@K£H@JÓF@JTb@Jqg@K.À@L#7@L·Ô@Là @Lê€@Lø™@Lå¼@Lat@Kµ@H|:@Dðt@@m9@;7T@6Ø2@5l@7´z@2@?Á@?v@>³À@>ÚÆ@?-„@?=¢@?<}@?z@?µŠ@?„„@?ù@>€‡@=†ž@<g@:ÏO@:¦@9¿g@9H­@8˜@8ç@8È@8Gà@8Ã@8Žå@8>.@7½@7!T@6pù@5£]@4ÒŸ@4K@3 ®@1ùO@0Ój@/Zg@-™f@+‰ý@(Ôr@%Qž@! -„@Â@½@Æ=@n@ çŠ@ -ø@ žÅ@Ã4@ÖŽ@ ¨ñ@ F@:Ñ@˜@½Š@º|@ ô3@$w³@'[3@)uœ@*ÐÞ@+³@,]@,ê[@-’@+áæ@)¿°@( ¦@'×Ô@)Rÿ@,Æ@/ ¦@0øs@1’Ô@1iš@1P@0“r@0ò@/‚¶@.è¨@.¼@/‡@/a6@/- @.¸@-½q@,¥"@*ä{@'ýw@#²@y:@Ð@ªF@-x@ØÃ@# @'ÿ@*f @+6ï@+,¡@*ñ@*ÞJ@*å¸@*ús@+Fž@+Ê@,7\@,Gˆ@+ÿÖ@+¦Â@+† @+|?@+1 @*´ð@*=C@)«¤@(ÈB@'؇@'‡6@(_Ý@*?å@,(@- ]@-$ê@,ä @,ü/@-‹ð@.(@.\ @.$å@-ŠF@,mD@+u@*;@)J@(Ðû@(}ø@(@Ï@( Ú@'Ýw@'®?@'‰<@'€Ö@'¤@'Í"@'¾e@'h@'xò@'rA@'5F@&Ô@&©@&Ðu@'@&ÿ—@&¹p@&~!@&z@&wu@&:t@%× @%~¹@%L…@%Cå@%N–@%Hô@%ò@$â®@$¡À@$Y.@$#‘@$ d@#ñÔ@#ˉ@#Á@#üå@$-@$}@#©e@#xµ@#¹¯@$Œ¯@%Í@&ùu@'™¿@'¤¸@&ö¹@%Y¸@#Z)@!ð¤@!~Þ@! †@!£Á@!Eì@!e@!_Ž@!ä@!ìÔ@!Œé@!4¨@ ù“@ ÉH@ µÀ@ ¼Ç@ ½À@ §¼@ s9@ ; @ OÝ@ ¦v@ ðì@!@!.@ Ø1@ ^`@½w@´F@œ@6­@Õ`@yx@m§@Ds@õý@ê‹@:Â@9d@@È“@OL@Ü…@‹”@Y¾@2I@ðÎ@ˆ;@Ý@î@,&@˜*@±@|ƒ@¹@7@ï<@Á©@À`@þž@ZÝ@¢ë@Íe@Í)@¸@é¾@+|@ß-@=³@µý@7®@°’@@M@/ @$ÿ@TË@y @€½@[þ@¶j@ê@H@¡F@€@{ @Z•@9g@‡@_e@7z@'Ç@T`@+…@z2@ ~†@ G%@£ @i@¾?üg€?÷¥m?÷·s?ýdó@zÍ@sÛ@Çñ@׺?ú €?õjB?õÏH?ù÷V@ 9@¶ƒ@Œ@ -×4@ dõ@]9@ˆÏ@§h@NY@J@7@¬-@é•@@"¢@1Ÿ@z@Ôƒ@ö™@éz@Ù¤@ÈÂ@£Ä@mÃ@%@Ìw@|,@/V@øŸ@õ÷@ Z@÷þ@Ð/@ç¹@_>@ár@«3@ËW@ -½Ô@Oò@Ë?ýB@#h@‰p@ `(@ ÝQ@ª­@0Æ@TØ@wØ@^~@_@èI@ØØ@ê6@ËÁ@YX@ áŸ@ Ÿ×@ az@ ûî@ ™O@ XÛ@ ;@ oS@ ë @ d@ ¹@ ß™@ Ûf@ ­ž@ 3!@ JÍ@ VÞ@ -ÑE@ -‰w@ -00@ ¹ß@ 0ƒ@Ña@ž_@Xb@Š@ô]@½@–@’:@/¿@.H@.@äš@‘@ì]@F¥@ -Û@ 0 @ ù@Í•@é@{€@ZÏ@zÿ@«m@å@øÓ@¨î@,@¨*@¢]@Û3@¯@Ý-@?H@³@vl@Ò@.œ@æŠ@¨‹?ùäÖ?ïÏH?劔?ß%+?ß±³?ç]{?òµÑ?ü„­@2@Ï8@€!@æD@”©@v@ÿœ@g|@3€@vü@ìã@ ü@<Œ@¥ @°Ò@BM@3@z–@vþ@ØØ@¨¯@Ó>@ê@!¥@ä@ñ@Î~@Ö²@[@LÒ@g«@ã@Y¨@Èõ@?ô@DÜ@þ[@´°@æ‘@8¥@æ§@eZ@¬–@Я@O@,\@Öt@tz@B?ÿ?þX*?ýÚb?ýÞ?ÿ[@Òˆ@l{@U‹@çø@>b?ÿJ`?ÿ+¼?ÿÜ @8x@Z@Z@/Z@"F@—¢@–ø@È@¡&@É@/Î@Î?þ(ø?þ½"@\¿@ùk@Ý$?ÿŃ?ýql?ü˜ ?üI§?ûZ7?ú°‰?út.?ùj¥?÷¥¦?öæf?÷ÕF?øëí?ùc#?ú;"?ûcî?û™!?úï ?úã³?ûå²?üÉø?üÈG?ý­@E^@‡ö@å @¿P@ãi?þC4?ûXÐ?ú½Î?úÛ«?ùÔ¸?øh$?÷ÑÉ?÷x–?öÂ?õʈ?õ>^?õOå?ôýÂ?ô -?òЃ?ñ­Ô?ñ2?ñ c?ð„¤?ð¹œ?òT?ó:•?óB„?ò~ç?ñÚ¸?òC¯?ó¼_?õ¦Á?÷"x?÷½è?÷6ð?õïÞ?ôË—?óæz?ó=Õ?òï?ó;M?ô?ö#?÷è˜?÷gÁ?ö -P?õÏ?ôi?ó r?òu4?ñ¤g?ò G?òH*?ðÛ6?îÑl?íFU?ì±&?í -?í•?íÛ3?íöó?íÞ?ì÷3?ël¶?ê×^?ëÏŸ?íGI?î€T?ïby?ðf?ð~m?ðuA?ïs?îG?í„Ö?í–?í%±?íL’?ìÜù?ì3?ìê?íE‘?ì¾?ìR?ëï?ëHP?àêÇ?ᢗ?âƒ?áçß?áV²?à¡_?à -?ßß?à_Q?ápö?â‰?áá'?á7Ý?à–??ßö?ß>ò?ÞwÚ?Ýâ?Ý»?ݹ[?Ýr!?Ü÷f?Ü¢Õ?܃‘?Ü„–?Ü•h?Ü‹Ž?ÜY»?Ül?ÛŒÇ?Û4d?ÐÉí?Ð6Ì?Ïc­?ÎD?Íõ?ͧu?Í-÷?Ìwé?Ëä»?Ëpø?Ê•±?É<;?Ç•É?ÅDº?Â*?¾àf?»+r?¶£?²â?´´?À?ÖF?èÉK?ë…½?Üis?Çò??Çê?ÇúŒ?ÈV9?Ȥ¿?È~?È@®?Çà)?ÇÓ?ÅûQ?Ä -‰?À‹)?»ºÜ?·‡¾?¶L?·i¸?ºä;?À*?ÄI·?ÅÒ?Åu™?Å‹É?ÅÀ?Å¥7?ÅB/?ÄÝj?Ä¢õ?Ä¡p?Äxñ?Ä+r?Är?ûA?Ãmÿ?ÃkÙ?Ç!?Äê?Ãc£?ÃM÷?ÃF~?ÃT?Ãtj?Ã|q?Ã@²?Âíg?Â×¾?Â×ï?®a?ÂhZ?Â=?Á¶Ø?Á'ó?À°^?Àˆ9?Àpu?Àu…?À–5?Àoo?ÀFô?ÀKN?À K?¿äž?¿×ñ?¿¼b?¿J -?¾ß#?¾áÀ?¿ -N?¾à-?¾“?¾g1?¾2?½ä/?½Ë†?½Ä"?½ƒ$?½="?½ÿ?¼ÏÀ?¼w|?¼­?»Úâ?»Á0?»1?ºY?¸òù?¸½?¹/á?¹wR?¹RÓ?¹ ?¹#ê?¹ë?¸rì?¶ý)?´þ³?³v"?³ë?¶}?¹ÌU?¼ïo?¾ÖÅ?¾`?»ÉÄ?¹ø«?¸é?¸M?¸5?·Äˆ?·‰ô?·4G?¶ÊÛ?¶”V?¶40?µÁ¤?µ¶v?¶m?¶Sj?¶)¯?µm¸?´‘?´ -È?³¢£?²°?±x^?±?±Üe?²û!?³¶F?´"U?´Iv?´!?³Z{?²å?³7˜?³°B?³á?´Bÿ?´®?´mD?´O¥?´#á?´ý?´Hj?´Y?´!K?³«¬?³1×?²Ô«?²xž?²b?²hÊ?²=A?²LÁ?²œ`?²—0?²U'?²Ø?±ßœ?±Ä?±Ø„?±éç?±{ ?°Ùu?°‰k?°qŸ?°yN?°›`?°ÔQ?± ?°î?¯Í?¯¯¼?¯‰?¯G[?¯:¬?¯j?®©¾?®iò?®Š®?®¸¢?®®õ?®[Ý?®—?®2?­æ8?­³'?­»?­œn?­Šo?­¤?¬É¾?­/Ž?­ˆ¼?­Œ?­mx?­Pf?­.?¬¸o?¬zM?¬A'?¬d?¬^?«óR?«Íý?«»¼?«â?«8o?ªÜ?ª¢?ª¯?ª¨Ç?ª‡:?ª{?ª`|?ª+?©Åö?©¼·?© =?©7³?¨üí?©­?©K?©Ó—?ª–2?«íÊ?­î)?¯–?°Èá?±@›?¯c:?¬"Ñ?ªu?©Ê?¨ˆ?§8B?§c?§Gò?§‹§?§ß ?¨?¨¼?¨E¼?¨6u?§µ?§{?¦žo?¥ÖH?¥ Õ?¥J?¦eÉ?§(8?§^µ?§"þ?¥Ñ…?£Õe?¢R©?¡¨ï?¡W|?¡.6?¡,F?¡•? Îè? ¥Œ? }Ê? %”?ŸÕ‰?Ÿ¸)?Ÿ®O?ŸuR?žä‹?žn[?žZ?žœu?žü¾?ŸAF?ŸxD?Ÿsþ?ŸLA?Ÿ:ž?Ÿ~8? P?¡&?¡¤?¡š? `h?çû?œL?œ‚K? ?HÌ?Ï ?žLö?žr‰?žQ3?ël?Šð?³?wD?Oz?9?œëe?œ¢?œ*Â?›î­?œSw?œé1?5Ô?o@?tÝ?1Ã?œ¶X?œ*³?œK$?ZŸ?ž‡ä?žø€?žö½?žØ?}‰?›»ý?›è?œOF?œtÿ?›ús?›~z?š‘c?™NQ?˜ƒj?˜IU?˜w¬?˜–o?˜F?—ßÑ?—»š?—½?—æ?˜A?—Ì?—¤€?—ÂH?—ß9?—èñ?˜â?˜ð?—Ëo?—ˆÕ?˜Ø?š6?œ£J?Çû?}¬?›‡«?˜S_?•Ø¦?”ûG?•7"?•—P?•ì?– [?•­)?”¤?“ó¥?“æ9?”)n?”:?”h[?”¿?”$Í?“ü¿?“m4?’Ëe?’e%?’™?‘¨Ù?‘Ä?’8-?’G`?‘úã?‘ÂA?‘Ù?‘61?çb?ÌÄ?é?‘ÞQ?“Pq?” c?“é>?“Œ&?’ä!?‘Üð?‘)N?î®?‘9?‘S*?‘B%?×?D?ö?ÿŠ??ÃA?–?wÄ?=t?2õ?Žó?‰¦A?‡?ƒö?‹D?ŽÖœ?g¸?B¿?Žê×?Žkõ?Ž3 ?ŽA?ìÉ?‘h?8.?W=?ºâ?°¡?6j?0?xù?tF?B,?Q?V:?Œåˆ?ŒP“?Œ5?Œ~#?Œ? -º?Œã]?Œäþ?ŒRý?‹XR?Šé>?Š¸¼?ŠB?‰Õã?‰«Õ?‰³,?‰Ël?‰Ò0?‰ÄY?‰ß“?Š5þ?ŠT?Šî?‰Ã?‰iã?‰@s?ˆ¨-?‡³*?‡(ß?‡!4?†ÿ\?‡h?‡™‡?‡ÕJ?‡ÔÝ?‡Ô0?‡Í‰?‡áy?‡ú¾?‡óŠ?‡½?‡u°?‡2ô?†áù?†¨ë?†­!?†Á4?†ÀÐ?†Ûã?†á¹?†±è?†‡m?†y)?†b!?†+‘?…æÄ?…£ ?…ŽÂ?…Ÿ!?…žÂ?…†?…`“?…:‘?…ä?„æ*?…Ë?…:T?…Câ?…>w?…[t?…'Æ?„’J?„)?ƒÈ?ƒŠ*?ƒe˜?ƒL¯?‚üµ?‚¤Ê?‚û?‚bB?‚L1?‚Ej?‚4%?‚c×?‚ K?‚© ?‚±X?‚Ÿ^?‚—e?ƒÃ?ƒÙ?ƒá#?ƒsö?ƒA÷?‚¨?{c?€ÌÏ?€Î?€æ¥?€Úã?€².?€¨?€Š?€œÉ?€‡:?€Ý?¢? ×?Ô2?€¥?€j?€ø?åq?§?~C³?}Ü®?}çc?~ú?}îü?}Á]?}¨?}]R?})¾?}$‰?} ?|¢*?|T®?|A\?|Dí?|V#?|tà?|¹a?|·õ?| h?{u|?{Š?z’s?z?yý$?zkÉ?z†ž?zZk?zà?y¨É?y ?xxð?wÈÊ?wB5?w¥?vçx?vðR?wX¸?wŸ ?woN?w(ø?vÍ?vmí?v]Ý?veW?vcÅ?vG?uïý?u?uX?tßÈ?täM?tÏV?tŠü?t 4?s™X?s5‹?rAF?p¾T?oHÓ?n»7?o½?orÈ?o?ot?og;?o5?oÐI?pOª?phT?p`S?p—ê?p†Ì?pVJ?p6 ?oº?o=?mÁÜ?lÂa?l§z?l™‘?l8–?l?lá?kÓ’?kª?k(a?jƒy?j?iË?i/?i ’?i.™?i<ž?i¨Æ?i‡|?hÙ¼?hH€?h8?g÷í?gY™?fÊ×?fIª?eÆá?e´?e|Ï?e¾€?fF6?fŸ?f–©?f>Ž?f Š?e×?eG?d—â?d?d=?dE7?dAª?cÔm?c^Q?bêå?bp\?bt?aËW?a´Ú?a˶?b¢?b#©?b 6?b?by?aÓj?a-?`å?_z+?_q¥?_k?_,?_å?_,?_J?_8?_}Õ?_Aô?^ ?^ ¸?]å+?^ -Ñ?^/?^B?^É?]pú?\¼‰?\va?\¦?\«Š?\‹­?\g?\i?[ü?\$C?\)H?\‚?[6?ZmO?Y¦?Xò ?YëO?Z©?Z½S?Z;?ZŽ?Zb‹?Z>'?Z> ?Z’?YÛÝ?Y˜?Ya}?Yi¹?Y­³?YÌ[?Y” -?Ycƒ?Y€ñ?Y“r?Y3Ó?Xâ9?Y-k?YL?Y?YS?XÙò?XN@?X7s?X±«?XÙM?XzË?X-¢?X m?XMO?XA¤?Wäˆ?W†Œ?WL[?Wâ?W[?VÅN?Vs?Vz†?Vƒ˜?V>O?UùÜ?UÌ%?U¿È?U»?Ugk?TìQ?T˜À?T¤·?Tœ×?TPè?TIW?T?à?TQÒ?TV»?Tˆ?S¨"?S‰g?SRz?R®š?Qìb?Pà¡?N®9?J·w?EfÈ?AJ??™«?A€°?F%,?K7?N#±?Nû±?O; -?NôI?MÔœ?Iùó?F?HþI?MF?MˆÌ?JÙc?Jl?L/÷?Ld²?Lç?L´Ö?N?NÁR?N~Z?M• ?L«e?L??LwU?L§i?Lqö?LÛ?KŽJ?J f?Iœ¼?J–Ž?J×?Jõ?JŸ-?KQé?K-„?KŠ?JæB?JCE?J:7?Iïý?I“?J]P?J(²?GûD?F)?F9“?Fà’?F°„?FÝq?G}G?Gþl?H¢ð?I ‡?ImÂ?I$Ý?HD?G!?F×8?GfŠ?GÉÑ?GöJ?GEž?E—M?Dty?D°Â?=Œ ?=HG?=Lw?=cg?=n?=Šª?>ã?=ûÙ?=ö±?=ëw?=mo?=œ?=ÀÇ?=5ö?<¡??å»?ÌM?RŠ?è¼?øW?y·?Ô?6¤?Ú£?Yý?6¸?‰†?@?8&?§?é…?D?¶¶?ÝU?“o?ö?¶??ÒÕ?-‚?e?K2?¯˜?¶?´T?²æ?«à?ž=?„é?Q©?K?.N?? -?ú™?ÕÔ?¾?±Ñ?Öu?©I?‚??›‰?s^?-é?ï?.¬?AC?¦?ë3?ÉË?¨î??e¾?ia?p¾?GN? ?Ô}?ê?ç˜?Ëë?«Ï?sK?64?Â>ÿÉÐ>ÿhÎ>þöÚ>þÎ×>þ‡+>þ"é>ýï?>ýÆ«>ý¥Ü>ý‰,>ýR>ý7>ý/>ü¥±>ü7Ñ>üiO>ü£ ->üoÃ>ü%S>ûë•>ü @>üÁ>ûý…>ûÅ>ûi¸>û`ñ>ûq†>ûQÖ>û&S>úøø>úºÁ>úL“>ùת>ùÛs>ù° >ùTÉ>ùrs>ùy´>ùN`>øæ>ø.)>ø2>ø:>øxÂ>øSÙ>ø >÷ã>÷œ>÷r«>÷Y…>÷3E>÷ó>÷c>ö×¹>ö´Ç>ö“ø>öl9>öA•>ö R>õÙ >õ¨Ÿ>õ1§>ôo>ôm%>ôž;>ôŸ¬>ô>ôj>ôDO>ô->óÛi>óX]>ò†!>òq¶>òõh>òÖ—>ñí0>ñ'>ñ”(>òF>ò?¦>ò1â>òó>ñÞ>ñ±ê>ñ‡b>ñ[1>ñ*u>ðùþ>ðÓ‘>ð¡…>ð7>ïä_>ïå.>ïÐL>ïÝ>ïi!>ï3S>îúÞ>î‰>îÊÏ>î´t>î5!>í¾ê>íÜP>í×>ízê>í]>íU>ì£â>ì|Ü>ì”Ç>ì4~>ëã{>ì©>ì¡ó>í!ù>ìñ?>ìž]>쇡>쟣>ìØí>ì>ëÏþ>ëÌ>딃>ëed>êé1>ê^>ê¸->ê³æ>ê„>ê‚$>ê8@>ê+4>é‡`>éy>èú>éK.>éÏ>鄦>è ß>ç/ã>æõÜ>ç6™>çÀË>è);>è…>è‚>è–ð>è’±>è*x>è&>èo±>è >è[Q>çø>æ½B>ä+ƒ>àÓ~>Ýoj>Û:->Üö>ßk>âPI>ä‡e>å…Ñ>å8ä>äá5>ãÎí>ä>åëÄ>æ¢>æ!>åï>ãx>ãæ8>ä‘ >ä~s>ä >ãÉ°>ã” >ãÕ>ââd>ã‹>ã,y>âç >âùx>âÖP>â¸Ä>âÀN>â´¤>â_Ñ>áåT>á˜À>ጣ>ácA>á=ß>àón>à’ä>àKC>à\`>à|5>à-«>ßÚz>ß´1>ßsì>ßc>Þìž>ß;>Þô>ÞÄ>Þ•>Þn#>ÞLË>Þ'¤>ÝÇ>Ý >Ý.5>݆¬>Ý>Ý`í>Ý;>ÝÍ>Üÿ>Üêä>Ü¿…>܈Ò>Ü_Ã>ÜFÁ>Ü(Ä>Ü >Ûç¤>ÛÁå>Û”»>ÛRî>Û/>Ûp>ÚÈA>Úe]>Úí>ÙÇG>Ù˜Ý>Ùh>Ù.—>Øôó>غQ>Ø~¯>Ø,i>×ép>×Ø}>צ¶>×wß>×QÜ>×+>Öéc>Öµ{>Öƒ >Ö\ƒ>ÖCÁ>Ö%%>Õ•L>Ô*5>ÔB^>Ô¶>>ÒÈâ>Ò->Ôgñ>ÔÊõ>Ôž.>ÔRÝ>Ô%I>ÔBÀ>Ô2>Ôº>ÓÃY>Ók;>Ó^Ö>Ó_Ë>ÓJ>Ó!Ê>Òí~>Ò´9>Òƒ>ÒX—>Ò)>Ñð‹>Ñ©>Ñe—>Ñ1¤>Ðê•>ÏÂß>Í">ÍÄ>ϺÅ>ÏëÂ>Ϻî>Ï”>>Ïm'>Ï9Ñ>Îÿˆ>ο=>ε>Îom>Î_G>ÎS>Î-¥>Íöž>ÍÔK>Íì3>Î -ê>Íþ}>ÎÆ>ÍòŠ>ÍÑ#>ͯ™>Íš>Í“S>Í€¿>Íiê>ÍP#>Í-°>ÍU>Ì×o>̧1>ÌuÐ>ÌHÔ>Ì*ä>Ì÷>ËÖ»>˨ø>Ëw)>Ë;Q>Êõ¼>Ê­Ï>Êbò>Ê·>ÉìÉ>ɬó>Éh«>É/½>Èï >Èßi>ÈÅa>Èg->È-v>Çíø>ÇÐé>Ç¿®>Çxv>ÇOE>Ç9/>Ç,à>Ç Î>Æ£>Æ5í>Æ [>ÆHn>ÆTÿ>ÅóÇ>źØ>Æ ‡>Æ +>Æ >Æù>Æ,>Æ>ÅïÖ>Å.p>Åm¹>Æe>Å„l>Äï>ijT>Ä)H>Âü±>ÁÎI>Á’>À¯Ü>ÀÊ>¿2ó>¾ˆ >¾b_>¾D=>¾N˜>¾¹U>¿#>¿P›>¿òY>ÀÜ“>Àä¿>ÀÏ5>Á—>Ààè>ÀˆÐ>Àys>Á±“>à b>ÃË>ÂåÎ>ÃÐü>ÃUT>Àõ2>¿Ru>¾‰¢>½|F>¼Å@>¼­4>¼xÍ>»Ðâ>»I$>»2 >ºó>º§>ºƒ>º×V>»SÝ>»iƒ>»)×>»3>».W>ºÖ}>º´¼>ºÄ®>»>»¤†>¼±_>½¬?>½úù>¾¤>½ú>½W¹>¼%->»2,>ºó¾>ºøÛ>ºí>ºèÂ>ºñD>º¸ÿ>ºkÚ>º?z>º@ü>º­>¹Ðb>¹¯›>¹€ä>¹S>¹,9>¸÷ˆ>¸Ø¶>¸´:>¸“½>¸w˜>¸`³>¸A&>·ÿ˜>·¯x>·aX>·%„>· K>¶é>¶À/>¶›+>¶o->¶Aó>¶ n>µÌ}>µ¦û>µ„>µN>µy>´ÙÁ>´º+>´³ >´ >´‡z>´ho>´E>´>³ö>³Í4>³¢µ>³}}>³gx>³bX>³f>³w½>³zG>³Rî>²ói>²Ç°>²Îº>²©å>²zO>²Oò>²$í>±ûc>±Õ>±´¬>±˜ý>±yœ>±` >±Gð>±(Õ>±L>°í3>°Û±>°¾g>°›>°u\>°Jñ>° >¯Ëï>¯Ú>¯×Â>¯¹>¯¢Á>¯‚ˆ>¯V¡>¯ k>®èM>®°Ä>®w>®L*>®%ë>®g>­Ü÷>­©È>­[S>­#¸>­8–>­(ë>¬û>¬Ç7>¬Ÿw>¬~Í>¬4Ö>«åˆ>«è†>«Ì>«m>«1+>«NÔ>«G>«.V>«·>ªëo>ªÎˆ>ª½=>ª±S>ªœ¿>ª^Þ>ª¥>ª)>©ìü>©¸ç>©„ÿ>©0þ>¨ãõ>¨ÏD>¨»g>¨„–>¨†>¨¦î>¨¥®>¨Xe>¨1>§ÚW>§wh>§ Þ>¦¡9>¦v¨>¦Ü¢>¨Y>©hø>©Ä>©”x>©ŽÁ>¨Oª>¦LU>¦p>¦J>¥ö->¥xÑ>¥Tà>¥RÏ>¥; >¥þ>¤Èp>¥cw>¦D>¥ÑŒ>¥Õ>¥%>¤J±>¤+ä>£úh>£Âè>£7d>¢wÁ>¡÷ä>¡ÁK>¡qí> à‹> µ«>¡z >¡Â'>¢3Ë>¢>>¡¾î>¡‹¶>¡Eœ> üÆ> ¥I> ÑG>¡ù>¡»3>¡Œ'>¡ì=>¡öÔ>¡>J>¡;>¡1>¡\Ø>¡k> 0>Ÿâ®>Ÿù‚>Ÿ”J>Ÿ)>ŸÞÆ>ŸÄ!>žeó>žÖy>žæç>ž¢f>žQã>œÜX>œu2>œü¨>œŒ>œŠ‹>œË>›ƒO>ž-B>žoî>›G¼>›.’>œñd>›¬<>˜ïy>š>›òª>›ì+>šT>š.S>š>™³>™£x>™ãZ>™¢–>˜N¦>šG?>›–o>œ«K>œ¾>œH>œ i>›š ->›'>›TE>š5K>šÜ>™Ï˜>™÷R>š¬>š >˜>–ˆi>–/ >—lP>™à>™ËÖ>™sn>™Ä>š)È>šºÑ>š¸>š‹Q>š ö>š÷>˜å3>˜¸&>™u5>™~‡>˜¤!>˜a/>˜²/>˜.•>–N>–;†>˜/§>–Ž>•Á0>•Ë4>—NÙ>–Ú,>–ò>—0ê>—Ñœ>˜`>—ñ>——>—¹o>—X>–Ûa>—‚(>˜ >—">—Qo>—ª›>—‚D>—:>–»Ñ>–‰¸>–ó>—fæ>—Oì>–á>–šO>–•>–z>–Wø>–Pr>–2º>–95>–K†>–.°>–)>–×>•ü>•îÎ>•Ù">•¬Å>•C]>”È›>”W>>” €>“Ø_>“¡Q>“`Ó>“"ã>’ØÛ>’¨®>’~â>’>^>’>‘à>‘¯E>‘Šµ>‘_l>‘>Æ>•U>Œß>p\>hÐ>r¾>c™>cû>mÕ>iŸ>Q{> P>ÿä>î>ÆÖ>»ñ>±ú>–>w+>Xz>5v>Žñ>Ž©é>Ž¢â>Ž¢ö>ŽŒ>Žnë>ŽU6>ŽB>Ž/ì>Žó>Ž >ÿ4>ì¾>Ì >ŸG>jg>8Ö>2)>"º>!S>á>ŒÔõ>Œ¼F>Œµ”>ŒŒ®>Œ? >Œ¿>Œ7>Œ0>‹ÇŸ>‹„o>Šê½>Š[Ô>Š²†>Šò$>Š¢¤>ŠJ>ŠrÛ>Š¡õ>Šk>‰ƒq>‰T>ˆ3ï>‡Ë>ˆÇ¶>‰-Ï>‰_:>‰‹->‰Ó¸>‰îS>‰ £>‰v†>‰´>ˆˆ¯>ˆþ>‡Á[>‡™Ã>‡Q“>†ýi>†í8>†ùŸ>‡S>†ä×>†©N>†">…¡Á>…±ˆ>†„R>ˆ!U>ˆ4w>ˆ>‰Vâ>‰Ç>‡â`>‡jh>†yê>…mE>†G[>‡´T>†Üé>…>…R~>…´ä>„Ô¾>‚zç>‚¥>ƒc>ƒä>ƒ±j>‚Gÿ>‚ôø>ƒÖ>ƒ'È>… ò>…Î>†<%>…×>aÚ>€Þ¯>„âO>…uV>… >…?b>jº>}Õñ>‚–W>ˆÑ>ˆqc>‡F>†X¯>€Ž>s€B>s²Œ>Ö>‡ˆÏ>‰?O>‰#í>‰CE>‚´>tt±>lWl>n>zý´>‡={>‹ß}>‰À˜>‡Ÿé>ƒw‘>uî4>gT>añ¥>_æˆ>e™>táø>‡Z)>²>ŽÏ>ŽEŽ>ˆ >€c>v‰>n>jQ¶>háˆ>gòê>mói>„Ͻ>Ž-<>Žu)>‘Ü>•J>œ ÿ>£ –>Ÿ›è>›]¦>†Õ¬>q¦Ó>l&ÿ>hSO>hoç>r t>…W¯>’N÷>•Õ>–Ÿ>–l>‹Uê>€œÔ>tð±>j«>d÷Ã>h2¿>jŸ(>lD”>l¸}>ló·>m"å>v½—>ƒ‚>Šì‚>–¬ý>š-K>˜-†>•ÃI>‹š|>~ÚL>nÂM>iüV>hÍ>hÅë>j¾ó>mø >k(±>hõÏ>mœç>l¯a>i÷Í>gïb>frš>l9µ>}2>ˆ²a>•Ô¨>šŠí>™M>“ÿ~>†Óá>t4>h.>fN½>há£>jФ>m#>o&â>nû.>n&¯>lžo>j^Y>hZÎ>e$×>c•>b–ç>`g>`ºù>c{P>dÅ€>h8þ>wÿª>‰%%>”û>—(»>—ó>“›K>†›>w™Ö>l¤>h‚Ê>gœÆ>dq£>aƒs>cPF>f6Â>f ‹>k/ ->p#h>s¿Ü>vä>wîc>wg½>r#m>vu¤Ä>oy>i›n>h9>e÷œ>bƒ>]«L>^•Ó>b98>oÊŽ>…®>!:>“6>•>”Áä>‰Zs>{¼¢>nJ,>hX(>pßl>vi>zˆ>{ó·>|ò`>x›É>q#Ý>lf>jÁ%>j~è>m$¬>p>ns>n¨…>sÅä>wÙ >wox>tÑ >x&>yLè>v35>rx>pÆ¥>oTV>n@D>l™À>bÂÖ>b¤f>dsJ>aä>\¾°>Y›Y>[ü>i g>€V>¹&>ŽúŽ>PÀ>Ž[>…ø>lÊ->a1^>að>c.å>dH…>hûƒ>i½z>iF^>džk>c>eŽÎ>f¸Ä>hŒ>i>ii‰>i>´>lè9>mE >eik>gç >fÚ’>e8>i‡j>h¶:>gÆâ>g*>gõ4>ev²>g™×>jD¾>fz®>dOD>eÜÈ>gÍc>gŒp>g2>fñï>hgA>gêM>f”ù>gFÈ>g$Y>c`Ÿ>ah>a=&>a:9>](Õ>Yœü>YU>\„>dâõ>eûR>a`‰>c„Y>^ù>Y>>Wš®>Yy0>\CŠ>]Ý¥>_.>a¢>bÀS>cºµ>d*>cî>c„P>cI>bÁj>b"#>aˆÖ>a>>aŸ>`ÿÅ>`Ý#>`g>_¦N>` >`Bü>`Ó>_òµ>_Ì >_JÓ>]¶I>^ *>^«)>^Ác>^h÷>^Kâ>^co>^?›>^y>]àÛ>]±×>]„6>]S>] >\ñ<>\Á&>\j>\Yo>\4>[ç›>[º >[„ì>[J€>[=>ZÉ>Z‡¥>ZDn>Yö‚>Y¦a>YF®>XÒS>XP3>WÀ¼>V» >TÈ>SÐD>Rœq>PpŠ>Léú>Hé>Av >8âN>.-N>)Çs>2\ÿ>;ò¨>C.ó>H Ð>L>O;ž>Q<>RYs>S&L>S¨ >Sý©>T4Q>TSm>TA*>T,I>T6^>T(×>T6¡>T$)>T¤>S}Ú>Q‘Ç>P³S>R¹n>SSx>SÄ>Rí¤>R¥_>QÖ>Qfª>R>RD¸>Qßê>Qgõ>Pòü>QEõ>P¸>Nd¥>OÁ‘>Pèä>P—Ä>Pjz>Pw”>PTk>Oñ >NÚ>>O%«>O—>Oyg>ODT>Nd>NJ`>N¶ >Nœ>N+'>M[">MÑ”>Møu>MÎ2>Mžf>Mu>MIÌ>M -º>L˶>L½z>LŠ>L#ò>L‚>Kôé>KáÛ>Kºm>K‹d>K\}>K¦>JÅÁ>I×Ã>I N>Iá>I®#>IèÌ>IƒA>H­²>I f>Iª>HÕ >HQX>Gñ_>GÁÊ>Fo_>Dº/>E§>E;>C%¤>Bc>>AYï>=Yº>8ßž>6ák>1+>(Ïõ>\">ǧ>#Â7>,ɉ>3€Â>8’P><;®>=tô>=Ù>@™)>B'K>BG«>B¥ü>C-%>C:­>Aaž>=¥²>>k>>™È>A|«>C>Bâñ>BÛk>BÖÃ>B½¼>B›í>Bw>BVš>BF>A¼>A‚@>A¬©>A]ÿ>A*ì>A,>@’M>@W^>@Í>@ÀF>@“ä>@f>@?à>@å>?ùÏ>?Ë>?‡º>?B>>ÓH>?µ>>õ˜>>ãŸ>>»#>>zÚ>>e>>-{>>#J>=ü¾>=Ñ—>=¯}>=‰2>=`]>=4=>=ý><ëª><¿U><ÿ>;éÈ>;Òl>;Æ(>;­£>;„&>;Ti>:á¹>:Ò>:ÀÜ>:Ã>:U+>:v>:Q×>:'ý>9>7ßÈ>8ÄJ>9>5Ú>6«p>8­7>8»9>8»(>8—«>8m¯>7Ûü>7’>7Ñy>7Å>7œÄ>7{Ï>7iï>7?\>7à>6äT>6Ç“>6¤†>6}Ï>6Y‚>6/>5ò4>5q*>4þÿ>5hå>5h¦>5Dr>5­>4ôÞ>4ÍÍ>4 º>4Aþ>4 å>4!>3ø'>3À¬>3{;>3RÒ>35¾>3f>2áË>2©™>2c>2w>1íþ>1Èš>1ë>/¤K>0W¾>0kú>/Í>.Td>-}N>,Æê>+y‘>)8Æ>&&5>!¥È>‚ƒ>4©> ƒW> Y­> ¿>Yú>!¾$>%›ö>(F°>* -Q>+: >,”>,‡>,Þâ>- †>-+–>-H6>-S€>-MF>-@Ä>-2 >-"_>-V>,á‡>,Ø>,¼ÿ>,Œ„>,hÍ>,N>+ý‚>,>,ï>+ãn>+Éé>+Ÿ>>+Jä>*ÀË>*ã=>*¶ >*™r>*yí>'¶d>(ü>*<Ç>*R”>*0ë>*>)ë3>)Æ >)”q>)u†>)V$>)F>(LÅ>(„ñ>(Ç>(›J>(}Š>(\–>(.>(>'ýß>'ÊÄ>'”E>'Ší>'o1>'K’>')‹>&üÄ>&Ûœ>&²>&”\>&}í>&[›>&6p>&w>%ò»>%Ñ>%­û>%‹>%gÅ>%B>%Þ>$úÜ>$Å¡>$ŸŠ>$–;>$uÃ>$OJ>$*6>#ûÃ>#™>#œ>#¢B>#„>#b¢>#@I>#l>"úž>"Ù)>"¶ô>"” ->"pm>"Oª>".7>" C>!ä¥>!Á->!š6>!~è>![£>!¤> ¼]>  %> ¾…> §> †s> ^š> M¾> %Ê>ë3>°>£â>’j>€>cS>:¹>ô©>“=>¥Ù>L">GL>QÕ>+u>ùm>ž´>´#>¯ª>—á>nG>:é> ->Ý>ÖÖ>ºª>¤—>fö>Ð>·>ú> >ÞË>™Ü>s¾>k:>¹>@­>eô>å>Ô‰>ƒÚ>RÌ>û¦>:b>ùp>¯ã>ý>å^>Èk>«¢>~ê>MÂ>ò™>ÚÎ>Ôß>Æ3>Æ}>£˜>J>SW>'©>´¨>¡¦>ج>ÄR> >z>]>.ÿ>¬>ûÒ>Ü>¼W>œ->{(>YÚ>7¹>t>å>Ë…>®ª>‰ü>V`>ôR>úÈ>í®>½p>•\>oã>@> ->Ò/>‰`>>Ò>ìï>]>ëƒ>–é>I>P›> ¹®> _ð>->€È=úXe=èM¨=æ*¦=÷›ì>*š>ŸX> Ðg> †> _>¢>*õ>˜÷>Ϥ>ˆõ>ØÌ>9š>Aû>A->6É>(>Ï>¸>ó >Þ!>Æ7>•‘>6E>åË>>¹ˆ>¹^>Ì>ë->rÐ>JØ>'>y¼>fw>JÆ>ˆ> È> Ùx> ÖŽ> ²}> 4> ”> aÒ> >ˆ> 'N> 1> ë±> À> ¬[> •ö> vF> S:> <¿> ø> v> äj> È@> ¤Ô> ‡$> q> Rp> 3K> Q> -ü£> -ßA> -Á•> -¤> -…%> -i”> -L > --¢> -> õ > Ø%> ¹L> > > bÑ> Bç> (> -ï>äG>Çó>µ ->š>{´>UÖ>>¡>&> -+>ít>ÐŽ>³É>–>y¦>]º>A?>$>>ê˜>Ë“>±‰>”Ü>wá>\é>@•>$&>l>Ä÷>‚å>æ­>Žw>y’>Z›>?R>#2>Á>ßÕ>—±>Ÿê>˜>>|½>` >C>(‘> p>ïñ>Ô¦>¸±>›>xU>R:>5t>!¸>j>ñá>Ô8>º<>¡;>„>iú>N×>*ý>ø>î)>àÑ>Ä’>¦—>‰K>oØ>OÇ>9ð> ¬>5>è‚>Ëê>±õ>˜>}Q>b>Fß>+9>-=ÿé3=ÿ´[=ÿ|7=ÿBÙ=ÿ|=þЯ=þyÞ=þ7Ÿ=þî=ýïA=ýš=ý–^=ý]$=ý=üî…=ü½L=üŠ\=üTc=ü*=ûáu=û¬Œ=ûw>=ûE¾=ûã=úܱ=úy»=ú/Ä=ú-H=ùà•=ùÀT=ùŒP=ùQ*=ù1=øãa=ø•J=øˆò=ø\N=ø.(=÷ø¢=÷¾k=÷‰0=÷ ù=öÜÈ=öè¦=ö›=ö`È=ö6 =ö=õéª=õ®=õ{=õ==õ;=ôè»=ô´=ôx=ôCÕ=ôÑ=óâ=ó®†=ór=óFT=óº=òÆA=òžè=òX–=ò?õ=ò7=ñ߈=ñ­£=ñz\=ñF¿=ñ_=ðß–=ð§=ðtÀ=ðDö=ð:=ïÚ¯=ï¢V=ïg!=ïE,=ï=îáá=î«ÿ=îz:=îI¹=îŒ=íÐÞ=íŸà=íxt=íCˆ=í -g=ì³Á=ì2=ìhD=ì* -=ë6Á=ë‰\=ëp=éŒf=骲=굉=èóê=èë6=êty=ê\=ê*M=éø!=é–O=èÌþ=é/Ã=é(:=èöô=èÇ=è˜ë=èk=è8×=çØ#=çŒ=çuÃ=çp›=ç?0=ç9=æÞ±=æ¦=æu =æ==å͹=åeü=塸=åzf=åO±=åà=äé‹=ä¿â=ä‘Ì=äaÝ=ä.h=ãþÄ=ãÏg=ãœÄ=ã^<=ã8Ù=ã v=âÜ­=â¤í=âq=âJ$=âU=áãé=áµ­=ሊ=áU=á%3=àñ_=à¾=à¨=Þû=Ó¥ì=ÕJ =ß)=ß¡=ßpV=ß?=Þü>=ÞÓY=Þ­è=Þ}™=ÞL=Þ]=Ýç”=Ý› =ÝdÙ=ÝMÃ=Ý9=ÜßÓ=Ü´«=Üa=ÜJ=Üa=ÛÛ0=Ûž =Ûc=Û(l=Úç¶=Ú¢=ÚW‹=Úâ=Ù¬ò=ÙGœ=ØÅL=Öl!=Ñ‹ƒ=ÓÂ)=Õ =Óÿö=ÑÓ²=λ=Ê^`=Ä_a=»ë =­ÏR=«>#=¹].=ÂÀ=È -h=ËØÈ=ͱ=Фr=Ò|×=ÓYò=Óé„=ÔH=Ô€&=Ô§Ô=Ôµ†=Ôµð=Ô²{=Ô–´=Ô =Ôm=ÔIz=Ô(¥=Ôl=Óë½=ÓÇß=Ó¢ß=Ó{=ÓR¹=Ó+®=Òùr=Ò‚x=Ò›=Ñúç=ÒSx=Ò2z=Ò°=ÑÛõ=ѲÐ=ш =Ñ[“=Ñ.d=ÐøS=ÐvF=ÏÚ=ÐDg=ÐK£=Ð(z=Ïÿþ=ÏÕP=Ï©·=Ï~ =ÏRP=Ï$j=ÎùÑ=ÎÏ9=Σ=Îu¾=ÎJ^=Îg=Íóñ=ÍÇ~=Í’í=Í`=ÍBÃ=Í}=Ìî:=ÌÃ3=Ì—{=Ìkß=Ì?Z=Ì6=Ëê =Ë¿=Ë’\=ËO¦=Ë(Î=ËV=Êãß=Ê·€=ÊŽÿ=Êa{=Êò=Éÿ«=Éâ›=É·=ÉÅ=Écš=É8~=É j=ÈÖ¯=Èš‘=ȈQ=Èa'=È6—=Çò-=Ç°à=Ç¢0=Ç„ï=Ç_b=Ç5b=Ç ²=ÆáÜ=ƧÕ=Æ‚=ÆbW=Æ9A=ÆÁ=ÅåF=ź=ÅŽ=Ådr=Å:f=Å==Äæd=ĸV=Ä“”=Äjh=Ä?Ÿ=Ä/=Ãì€=ÿ'=É2=ÃB;=Ã/"=Ã=Â~ß=¨œ=Âœ=Âr„=ÂCr= È=ÁøÔ=ÁÏC=Á¥T=Á{´=ÁKô=¿Fÿ=»?ò=¿Í7=Àk»=¿€ò=¾ø/=¿lD=¾—z=¿§=¿¡½=¿*.=¿2?=¿3ñ=¿©=¾çÞ=¾»I=¾”v=½è=½‘m=¾ª=½ìÝ=½Ì}=½¥=½{¯=½SB=½*”=½¼=¼Òä=¼¡À=¼ˆÐ=¼aÉ=¼3[=¼ {=»âà=»•Ø=»ƒÊ=»o>=»Ba=»?=ºï³=º¿Ø=º—q=º=ºW¬=º+•=¹þø=¹ÑÂ=¹®¥=¹ŒR=¹`ˆ=¹+T=¹=¸ò=¸Ê¨=¸£=¸z¸=¸S#=¸-$=¸µ=·Þn=·µ‡=·l=·:w=·&=·¢=¶òó=¶Ëå=¶¤”=¶}=¶V=¶/v=¶S=µáM=µ·Ÿ=µŽ0=µkú=µEf=µq=´ô‘=´Ñ©=´ªô=´„=´]›=´6à=´=³èn=³Ã =³œœ=³v1=³O¨=³#‚=²ñ‡=²Ôz=²µÖ=²¸=²eý=²9p=²=±ö5=±Íµ=±ªL=±…=±^ë=±6ÿ=±Ž=°ìú=°Å´=°˜‰=°xÜ=°U=°/õ=° --=¯äW=¯½í=¯”5=¯m=¯Lr=¯'1=¯O=®½»=®#’=®s>=®l>=®F¥=® =­öH=­Å“=­ ;=­>=­`=­g=¬î´=¬ö"=¬ÓI=¬®"=¬ˆô=¬cç=¬9c=¬ ¤=«æ=«»=«yÚ=ªç¾=«CD=«<©=ªôÁ=ª¡ =ªº=ªŸ(=ª„ž=ª_N=ª<=ªÐ=©ñã=©Îø=©ªº=©†Ž=©b'=©=á=©¡=¨õV=¨Íq=¨#O=§ß=¨])=¨?©=¨®=§ã=§ÈN=§¯]=§‹=§g=§B=§à=¦‰:=¤ãœ=¥Ê=¤_´=¥Ä`=¦Fã=¦#=¥þQ=¥ÔÏ=¥·¹=¥–¢=¥f!=¥3=¥*´=¥ ƒ=¤âB=¤¬c=¤Ž=¤zè=¤Wë=¤%ó=¤©=£î=£Ë=£¨”=£…y=£a´=£;­=£<=¢ù=¢Õj=¢²v=¢=¢gÂ=¡î=¡ñB=¢¯=¡Ûö=¡ª9=¡™D=¡vq=¡UÅ=¡1€= ý³= è»= ÊÃ= ©Û= †n= Q‚= "e= Æ=Ÿýˆ=ŸÛo=Ÿ°þ=ŸU´=Ÿ±=Ÿ1 =Ÿ,µ=Ÿ `=žë =žÉ\=ž§0=ž… =žc.=žA#=žü=üË=Úý=¹Y=— =t=S›=1=5=œØ,@y@x^¨@xÈ@x€ú@yNº@z›@zpp@zPî@yÊñ@y Ç@xX©@wð[@wò%@xFŽ@x°Š@xôÝ@xçÉ@xbD@wgâ@vfI@uö-@v3ä@v¢H@vÑž@vÒ@vñ@wCH@w™¥@w·Ù@wy‰@vÛå@v$@uqž@uJn@u‡ä@uÑc@uÁé@u ©@s@q­@p(›@ov@oÛ©@q4@r¥·@t2@tóø@uL@uG@u6@tïG@t¢þ@t?@s.„@r8æ@qŽ‰@qk‡@qÄ@r^@rö`@sO @s>H@rÍà@rD%@qê„@q¾t@q‚Ö@q-÷@qs@qCë@q½Í@r&#@rNT@r4@qåé@qb @pt"@n¼B@l1Z@i¼«@hÊ”@iÛë@l¦@ný@oE¹@oØl@oÿN@oô¡@oÚ\@o¬=@o?|@nm@mVÒ@lj @kô@kÒ˜@k©A@k?õ@jŸç@j o@iÑ@j¯@jÛ˜@k¹ï@l?ž@ll@k_@jC@j8@jÄ@kˆ¦@kÎó@k‚6@k -—@j•Œ@iØú@h­¿@g–$@gBñ@g¤ò@gñ¯@g¤Ã@gc@fÿÿ@g²%@hÜ[@iëÜ@j‚‘@j¦:@j˜}@jŒ#@j«@jS@iô=@isf@hÿ @h³‚@h…<@hn£@h„ @h¾ç@hìå@héW@h³Ð@hOi@g­ã@fÂÖ@e¿J@e-`@evñ@fPÉ@fô¨@fÖ&@fv@e#ó@dÛ@eÏ@e,(@dŽ¾@c«ú@cW@cÛŽ@d¨¥@dû@dƒ@cr@bN¤@a¿)@bM@bÕ@c|»@d@d–ì@dï @e Ô@dòt@d«k@d%´@c6Œ@aÉG@_ÿ™@^c@\Ró@[lŒ@[×i@]3r@^“L@_o5@_ñ@`C¯@_ü¤@^Ži@\5å@ZF@Z/›@\¨@^X<@_»H@_Ês@^Ìx@]$O@[x5@Z¦_@Zì`@[–Ô@\Í@\š›@]¤+@^îI@_ì@`e>@`yû@`M:@_æ,@_Q¨@^Äï@^Œì@^Ç -@_8í@_‚<@_WÑ@^ƒ@\é@ZÔß@YÉ@Xy`@X¾v@Yw@Y4¤@Y·F@Zâf@\!L@\ÂÆ@\½š@\X@\š@\ç?@]7ñ@]_D@]Sj@]Ê@\Ð*@\Œ‡@\aù@\3 @[°é@ZŽÎ@X÷€@WÂ'@W·^@X¡©@Y@YÇû@YW‰@X¯ @X2Ù@Wü(@W÷.@WúJ@WÄ¥@W=‚@V®Ø@VƒŒ@Váá@W™ @XI@XŸý@X‹ã@X?£@Xâ@XÆ@X- @XË@W[²@V’ü@V@Ø@V‚Ù@W<@Wp @W§š@W§Ñ@W†ß@W\Ÿ@Wè@Vª1@V ‹@U~Ð@TðÒ@T ï@Rù@RŽ@SBâ@Txð@Uc@Uß³@V%ö@VF’@V8|@Uûï@U™ä@U/Õ@Të@TÙÀ@Tßp@Tä´@TëÔ@Tö©@T÷É@Táß@T³r@Tg'@Sߤ@S=@RŒ@QZ­@Qhw@Qðž@Rb¾@Rn•@R?!@R8l@R…@Rñ-@S5@S:Ò@S™@RÒà@Rp¼@Qç²@QSç@Pø&@QJ@QWd@Q®@QÝ—@QÖ>@Q€á@PÖT@P@Oœ!@O§N@P D@PxJ@PÆ»@PçU@PÛ€@P¥g@PLc@Oí@O®v@OšÁ@O•@O€D@OZ±@O:v@O,@O(@Oæ@Nÿz@NÎ;@N B@Nˆs@Nˆ@N~™@N~â@NƒJ@Nƒ@NvS@N_˜@NC¢@Nó@Mέ@MDÈ@L(@K»P@KS¸@Kh,@KÆŽ@L*Ê@Li$@Ll®@L;›@Kû@KÕ@KÐÂ@KЇ@K»´@K–4@KgO@K#;@JÈj@J}@Jeí@Ji9@JAM@IÒ€@ITˆ@I „@Hý@Iœ@IJa@I«“@JZ@J*Ø@J ±@I¤@Hâj@GÒ@FÖà@FŠ»@Gí@H@@H¥D@Hɽ@H;@HaL@H@T@H0@Hø@G™©@G@F‰@F P@E©4@E¡_@Fî@F°é@G'Ä@GR@G5ƒ@F̓@Fù@EC'@Dг@E@EÝ@Eîö@EÏ@EH$@D¼@DŽÂ@DÒ¬@ED‹@E”?@Ež©@EiC@E­@DœŸ@DNÊ@D3;@D)q@Cÿö@C¼œ@Cž+@CÈ@D v@D#²@Cý+@CÅ„@C«â@C°C@C°ì@C™*@Ckÿ@C,5@BÙT@Bˆì@BcJ@Bu&@Bœ@B®G@B£×@Bm@B{È@B\o@Bd@A¶@AGÌ@A @A&@ANh@AD»@@àŸ@@M,@?Ù`@?Ãf@@Û@@…„@@Øç@@ô@@èÀ@@È¥@@—Å@@[@@%ú@@ ã@@ -Z@@:@?Ö`@?}L@>ýÂ@>{.@>*ð@>5º@>@>÷y@?2Ì@??@?3ª@?V@?€@>ñG@>àÊ@>¿8@>w<@> 1@=¢-@=y2@=ˆ£@=œd@=Ÿ¸@=¢@=¥@=—@=[µ@<ÒJ@<U@;Ué@;BÅ@;¬˜@<ð@<*ü@<·@;½@;|Ñ@;s@;’r@;¢†@;&@;há@;25@:è@:¨—@:”H@:”m@:O@:`Ä@:S&@:0@9Ãâ@9?{@9Ç@9h@9Ï@9ä·@9”q@9Å@8°b@8›í@8¦@8“|@8iQ@89Ì@7îÒ@7Œ´@7@ð@7@6öð@7Ü@7?/@7y@7zk@7C1@6ø¬@6ÆV@6µg@6›5@6Q[@5õñ@5ËÅ@5ÞL@5óv@5Ô˜@5zØ@5 -@4»@4±z@4Ü@5 -@5@4ñ@4­@4n™@4K@4+@3óµ@3¢ª@3Gú@3ë@2ÿœ@3@3/¡@3/@3/@3M@2åJ@2Ð%@2Âê@2°@2|Ó@2Ñ@1¢¯@1=a@0çC@0@0Hg@043@0`ç@0¨@0Ð @0¿í@07@0^„@0F -@0;M@06.@040@0%Œ@0I@/Õë@/ºö@/«|@/ˆ -@/'N@.sl@-}M@,ˆ‹@,F@,F…@-Û@-¾@.$ã@.Y“@.€"@.’ï@.‡j@.p;@.bØ@.V3@.?@.+@.O@-æs@-š»@-O@-ö@,¦'@,,Ö@+ªZ@+Q@+WÆ@+¾Y@,2î@,?ø@+¤¾@*å@)Œ¸@)$Ø@)c¬@)àŒ@*DO@*yà@*”)@*®h@*Ķ@*·L@*sù@*ˆ@)²J@){Ä@)nM@)u°@)i@@)7’@(óØ@(¯Ã@(gÇ@(Ã@'µ½@'e1@'-@'"[@'VV@'¼Õ@(( @(^@(G=@'ô,@'‚z@'Ô@&­@&E“@%Ñþ@%Jý@$‘Ä@#±@"y$@!à@"`@"ÕÍ@#™Z@$$ä@$|x@$™L@$u¬@$?¬@$&†@$U@#íü@#¹ -@#s@#’@"½<@"hd@"e@!Á•@!è@"K|@"{k@"dl@"T˜@"}@"±"@"®a@"l6@"È@!Ž>@ ñ¥@ [¹@ 3¢@ —‹@! Í@!s£@!–˜@!«W@!¸²@!±c@!’@!t'@!i@!t¼@!•Ï@!µÞ@!±c@!‹v@!i6@!Q)@!(P@ ÛÉ@ sÚ@øF@3~@óŠ@·ú@yU@y @îà@ T@ §<@ óÿ@!@!T@!æ@ ñ…@!u@!Y¹@!†ç@!”Õ@!¹@!o1@!K\@!2¬@ ÿG@ ”¶@ ¢@Ã@«F@Â.@ôå@ <9@ }@ ~þ@ Ì@€&@>@ 5@AŽ@‚P@ ÷@ŽÁ@MV@ôa@´Ó@¤@–@`t@ Ý@ª}@Dè@è¨@ Ï@cä@p(@ÇO@Â@Y@$c@¶ó@‰Ì@Û´@Ë@ÎÊ@ì@'ä@ "@®3@_o@…¥@ÕÅ@G@ã@;S@r¯@^ @ -@C2@=º@Mè@¨k@'@¯m@«°@å@æÐ@5•@~@^¿@në@_§@Î.@: @ýÒ@ËØ@‘<@§@Š@:i@ót@äl@xz@$^Â@&‹à@% ¤@ -»@}@×)@xW@¼+@×?@³l@@$OZ@,Ö @2ÖÒ@5l(@4C<@/‰¦@'Êò@ü«@7ð@ O‰@ -T»@ -9@ ï@Ð]@o@* @@4xŒ@<|œ@B™@E Ü@EwÉ@C&­@>’@6~.@,®@ ÚÝ@Í@ ¦u@{¥@«@ÏQ@ ñ@†Å@$<5@0hó@:º@Bêt@I:@N $@Qa¯@S —@S»@QŽ¹@NÈæ@Jz¾@DLì@<ç@1ì@%Ì”@¯$@ û/@5§@°@"Í@çë@ ‰ý@h‰@$Å -@1=@;Ñá@Dk­@KH2@P¦ž@T°Û@Wž—@Y†ä@Z%U@YŒ½@XÖ,@Xô@Y`Ó@Y€@W‰Í@UM@Q¶ -@MK@Féý@>ç~@4Û[@(¡á@Þ@ ¶¯@0`?ÿHs?ý©û@#¡@ñ&@Qò@ Öï@-Þ@8ïÇ@A–à@H@MU|@R6m@Vû_@[5@^C˜@`§c@b‚¶@cÕÑ@d‰à@du‹@c=‡@`~@Y—ù@Nz}@@;I@5Õ@5Ȇ@@³1@N/h@Wh°@[D¼@[ŒB@Y·@V[Ú@Q¦’@K¡ @D%ê@:ðº@/åq@#(B@§@ w£@»·?ýs×?ý3ì@’’@ †@¼œ@#@/D¡@9a#@AjP@GÄ,@Ló¾@Q6›@Tb@W:@Y $@ZÌ@\$–@]\@]·¡@]Ëô@]Z¾@\ä @\» @\¼r@]/÷@^c3@_»¤@`]Ù@`è@_ ´@]«V@\Ú¤@]>Ó@]î9@\ÿÍ@YbZ@T’3@QæË@RP‡@S(1@Rwý@Q'×@Pô!@R@ú@SÒÕ@T@Ñ@Sqs@RDŽ@Q è@Oiª@M@IÌm@E3@>û¶@7¿@-g -@!ÛÝ@ïé@ J?ÿ®v?÷„Å?õ]º?÷ß@  -@ Aé@ Ã@%kA@/áq@8`@?7>@DÉ$@I^N@M Ù@OÒ@Qã*@S@TïÅ@VE@W@WÖÖ@XPV@X“,@Xǵ@Xßù@XÄÝ@X’w@X—”@Xðõ@Y@@YD@@Y"-@X­@W6Þ@T‰Õ@Q©Ù@P¿@P>@Qgy@Q¥±@OñÛ@L¢À@HŠI@EFN@ED@H†@MsH@Q)˜@R…ú@Qy -@NV@KëÊ@LMÁ@OW@RPã@Tw@Uù@U’3@U¥.@U…`@UR -@Tò³@TX—@S¬X@S3s@RþI@RÔ @R‡·@R @Q•@Pð\@P5š@Ou@N”‘@MŽn@L~$@KX @Jˆ@HŸ¦@F¼/@D%@@r(@;·…@5M^@,¥k@"…Í@® @YÒ@ €?ùéµ?ñ|?ïÒÿ?ð?q?óÂö@8Y@ -­S@OK@!œ@)ÝÑ@0µ…@5Èx@9‚„@¼@J±@Isç@HiÚ@Gü@Dí@ABÌ@;¬Þ@5wò@1ú@3Ûp@9ïð@@k—@D©p@F™@Gb7@G¶£@GØX@GÓ@G˜7@Fü¡@E¿@C…f@?„Q@8I3@-ò@ [˜@<8@*@)3„@5†·@=¤`@Aª!@CUÜ@D -=@DX@Dn{@DŠ@D´ü@DÞû@DÉ@Dm@DZ°@D1±@D¾@D'·@D1@D$Ô@D X@Cð=@CÃ`@Cv@C-¾@Bìë@B†ï@Bþ@Aï!@B¼@B 6@A׈@Az@Az@@Ý&@@ËÜ@@ÈZ@@¦@@z@@@o;@@jž@@9@?ýJ@?ÊU@?:¬@>+ -@=1Ê@<°â@@%~@'Ìb@)Ãz@+ªF@-W@.˜¬@/Aå@.íø@,ü0@)–m@'Aæ@(°@,ƒÛ@/m@0uŒ@0e¹@/½@.»Œ@.€@-¹&@-T¦@-F†@.'(@/KÒ@/ßO@/×@/‘d@/:—@.À@-êÕ@,N¨@)"–@#rÚ@ög@¿ã@ ê@%@&³ú@+E@-¢ÿ@.2Ä@.Á@-ŽÕ@-§@-@-»p@.v@.Ò@.þú@/w@.Úô@.6n@-…@-Ê@,êñ@-3d@-v@-C¯@,ù@+.µ@)ãd@)Ø:@++2@,‰B@-Ÿ@,Óü@,Yä@,<È@,[@-S@-`ö@-Wh@,½®@+Ù<@+26@+Á@+2@+@_@+1f@+î@*ç@*k -@)þà@)õÿ@*)|@*Rm@*]z@*GL@* @)¯@)^§@)5@) Q@(ÆÐ@(—B@(µM@(ù@)k@) @(ÔÖ@(¥é@(\ô@(È@'Þ“@' ó@'5Ï@&·Õ@&Nf@&Œ@%º]@%`¥@$ý™@$ºä@$³@$ºE@$¡Í@$)@$–•@$›±@$†~@$hÁ@$>–@#õh@#¥¨@#€@#™@#Ôµ@#Þ@#€À@"ô4@"{@"$F@!ð0@!ÂÉ@!ŒX@!eê@!YÜ@!LL@!%;@ ã@ ˆ¯@ Ñ@ÑŽ@¯å@» @Í @Ž@èR@E¨@/@0@0®@ë@ùá@¿@s½@bI@•§@yÜ@I @w>@ò¨@·â@Äë@‹¨@B”@@FÅ@ûA@¡¨@r@<9@îM@ÀÒ@Ùr@êO@n@ @É7@Ò@o@d@@šD@—0@Xs@¡@·Ò@r¾@·@Ñ@Ñ@Y@`@Sx@$_@ý@FE@pÈ@`…@f@Ð@š:@O@ñÈ@°4@‹{@ZB@p@Ü(@¹~@M@ ¦@Ã@nM@@Ò@¤X@Q‰@âT@p_@ó3@+Ä@6@ºÏ@5á@ >J@ ½Ò@¥$@Ý‹?ü–j?ñRQ?ãz`?Ô»S?ËA¦?Ïr?Ûªv?Ýu?ÐV£?Èïo?Ïü?Þ ?ëÄ”?öÇŸ?ÿ@Û@-Š@gM@ !3@ r@ pé@ {&@f@~@…n@ÚP@ô@WÅ@ŒN@™f@Žë@  @Ç;@Êf@µw@dz@ì'@ðx@ËÞ@<@W,@ƒ@úÃ@?J@¸~@ ,@õ@Ãû@að@äÖ@Cö@ó@ -è†@Ñh?ûjé?ö%?þM÷@À@ -°´@ nÓ@´c@$@Ð@šî@­@À¼@­ˆ@—@o@Œ @‰ë@‚Õ@Zú@(@@©@ Óó@ p­@ $i@ c@ Êõ@ a|@ S@ -9@ ÿN@ Í.@ \l@ -à«@ -¡P@ - ©@ -šÓ@ -Hh@ ¦³@ðç@u¸@p”@›÷@‘c@{Ï@¡@ÜÄ@£–@eŽ@Ö‘@¾û@>½@­6@ Gt@ p?@ sV@ L@ûf@ŽŽ@9@[Û@æò@ Rð@ Gö@Òò@Ñ@ôQ@á@ñN@'@â@`@ÿ}@ÄÐ@C›@®•@Xj@øŸ@Âv@Ù?øãn?éb ?Û=W?Ù`-?æ“…?÷п@¤1@FÓ@@ß@TÖ@H@ì¥@¼@ ÿ@¯x@’Ì@]Š@˜Ú@…/@Vó@SS@|Å@…t@Or@4@õü@؇@Âà@Žä@4‡@ç@»Œ@t@€ž@pë@{•@®@W@KÄ@<»@Ѩ@Mi@îó@÷Õ@b]@¨@!ú@¥&@Ñ@ÎB@ l@&@Ã@ôä@¿@ÈÞ@¾”@qÂ@òO@»‹@öF@:U@(x@×@‰ê@eÕ@?f?ÿmJ?þvÖ?ÿl@é@)¸@©?ÿ»ó?ÿ‚à?ÿz?œ(ò? ÿ -?¨ŽÛ?¯;2?´ç_?¹‰î?¼ùà?¿{Ú?ÁQp?Â’‰?Ô?Ćy?ÅXì?Å÷‹?ÆgJ?ÆÍ"?ÇMÙ?Ç•¸?ÇLF?dz?ÇI?Ǽ?Èý?È]?É·?ÉF£?É!?ȱ-?È+Ò?ÇèG?Çý‚?È?Èë?ÈON?È\Š?È?Ç®?Ç`?Çp?ÇR_?Æý`?Ææª?Æò?Ç ”?Ç)ù?ÆÆÏ?Å|?ÃOƒ?¾þÖ?¶ÛÂ?®Åï?¯€T?¸“M?ÀN ?ùl?Å5B?źÈ?Å¢Ç?Å‚†?Åkè?Å:é?Å€?Äæ?Äæ?Äã?Ĭ4?ÄQå?Ä f?ÃÑ;?Ê?Ã{M?Þ[?òã?êI?äÄ?ì—?ív?ñµ?Ãzy?Âä ?”´?Âñ?»É?Â\?Â/º?Â3ì?Áõõ?Ávë?ÁRJ?ÁŸl?ÁÙ¾?Áæ¹?ÁãÜ?Á§†?Ájü?ÁP?ÁC?Áq¸?Ánj?Àð™?Àu:?À,?À?¿Íp?¿¡Æ?¿~*?¿q?¾¢J?¾E±?¾;B?¾$e?½‘ê?½÷?½-B?½ˆx?½ÎL?½÷„?½äC?½Nþ?¼TÙ?»„g?»<`?»)Ž?»!ì?»HJ?»ö?»k??º„L?¹ÓT?¹y?·ëã?³®?¯.º?°ð!?¸IÆ?¼Ô@?¼– -?»Q?º$?¹S„?¹.?¸ÙD?¸v_?·­@?¶ç—?¶«?¶W,?µÒ?µÀl?µÑR?µ{¾?µ$:?µB??µW?´O ?´ ö?´œ1?µMö?´ÂU?²q?¯’‰?°‹?³F´?´ä¾?µ<Ã?´šR?³ -?±‘U?±å_?³‰6?´…´?´hØ?´w?´h?´"{?´DU?´P?´t?´C\?³ž‚?²á¹?²ä?±Ë©?²?²‡?²°4?²n ?²¬?²!å?²© ?²p‡?±³ ?±à?±h²?±N?±xé?±:W?°ªÇ?°hJ?°t‹?°S?°AÁ?¯÷Á?¯ÄÜ?¯Â²?¯²í?¯Bñ?®Â±?®•²?®Éœ?¯t?¯«?®ì¾?®­|?®’n?®€?®S€?® Ø?­Ñ?­Ä†?­Ø™?­Ÿ*?­!c?¬ô´?­%ã?­Dâ?­—?¬½?¬~é?¬–×?¬¯&?¬¤ð?¬FË?« #?«_#?«T¿?«œ?«È?«!?ª±Á?ª?©ºf?©¶)?©ØD?ª<Ï?ª­¯?ªÈ?¨É“?¨xœ?¨€ï?¨Ø?©®?©â?¨¤j?¨_È?¨b@?¨Ö±?ªW‡?«Æ?«!O?©;^?§µ#?¦ý?§ ?§@?§%L?§?§9í?§pÂ?§I?¦Ñú?¦~ ?¦l?¦“¥?¦@²?¥Ç?¥Y‹?¤Ýi?¤l·?¤VP?¤Â]?¥³†?¦t?¦ S?¤¸n?£Ž¢?£t÷?¤ø?¤b¢?¤Ý?£š&?£K”?¢é¢?¢(?¡gI?¡Fˆ?¡èþ?¢â?£!?¢‚¡?¡©Ñ?¡@ó?¡b€?¡fë?¡jB?¡w?¡.;? ø‘? Êa? q²? ¤?¡#}?¡°?¡Ä´?¡ ? 8?Ÿ}µ?ŸŽ?ž™×?ž„Ë?ž­\?ž/š?2#?lÉ?ž&µ?ž$Z?ÛA?]?œë¿?œàP?œ·x?œuµ?œ€?œuZ?œF?œh\?œ†?œRß?œ î?›áÅ?›ÔÏ?›Ì™?›x ?›Bœ?›gµ?›ŸÉ?œM?œš?›â?šÝÇ?ští?š2\?šŒ?šü?ši?™ñ«?™éÕ?™ÒÚ?™qd?™%?™8†?™ -Ž?˜`p?—ñM?—Ø ?—Æ ?—z?—Q?—€v?—rp?—D³?—l ?—•¤?—Œ›?—|œ?—HÉ?—€?–ýó?—3›?˜"A?™å;?™þ´?—±,?•ž!?”æ£?•ò?•sÕ?•©2?•¥ð?•s²?”ç½?”>?“é?” Î?”kL?”‰V?”^—?”S^?”c§?”?Ž9a?ÀM?g•?x‘?§Ó?¢ò?U ?Z?Û?Œñó?Œ±°?ŒÙí?ð? -?Œ…Í?Œù?Œa?Œ/»?Œñ?Œ0?Œ<3?‹«œ?Šô?ŠÌ?Šýl?Šã?ŠBO?Š)?Ša?ŠN=?Š>?ŠVš?ŠbÐ?ŠI0?‰î ?‰ã?‰qv?‰m£?‰!^?ˆðþ?‰.È?‰>Ò?ˆâ?‡t‘?‡–x?ˆ–›?ˆîB?ˆ¤Ï?ˆo–?ˆ_Ì?ˆg¶?ˆ~?‡’Z?‡sX?‡ç?‡q ?‡k?‡l?‡ ¢?†%?†`‡?†—9?†³‡?†¶ú?†Øk?‡{?‡ j?†‹v?…üØ?…П?…Ž—?…<?…nÿ?…ö¶?†?…³‹?…f¨?…DÔ?…N?„óv?„Û:?„à-?…1?„×!?„kØ?„K.?ƒ÷ê?ƒ4@?‚Ø$?‚þ ?ƒU?ƒA,?ƒ’Z?ƒÐb?ƒÌi?ƒ•N?ƒHÀ?‚³]?‚,è?ñ3?¢í? ?×r?‚Jú?‚9 ?‚v?‚XB?‚˜?Þù?!p?a?D?œ?€Ä3?€¡?€«{?€¿G?€Õ?€Üµ?€¤_?€i ?€rW?€cA?€×?‘ó?9B?2„?Aî?6Ç?~ùo?~Xu?}èK?~B³?~n7?~7š?~N+?}œi?| Ý?|¯6?|¢9?{»…?{^?{&»?{íæ?|_f?|³?{Š2?{#9?zýE?záÓ?zÑ?zÙè?zì`?zKÏ?y\e?y$m?yï?xõ‘?x×Õ?xv©?wá°?w,?v2¡?uÎì?vqò?vô¦?wK?w9y?w -?vrÜ?uw“?tžã?t}Ž?u -?u)D?tå ?tË?t¼×?t¹õ?t¹p?tF[?s‹J?rÛ“?rµf?rÓN?s?s:ë?r“?oL0?m -„?m÷¸?p?pÐq?p­?n¯U?nnô?ob]?pfš?pâá?p³?p@¸?oÆö?oY ?oí?n³J?nP ?n?m©b?mvØ?m€Ï?mŸA?m=n?mH?mŽ>?mCA?lwÝ?l!?k¹½?kˆ?j4³?j -?j/É?j»?jí?i¢ö?i#;?hÝ4?hžÐ?h?h‹š?hw?gÒ?fš?fH?fŽ?eé¤?eãh?fµ?f;¼?eí&?et³?eƒ¯?eOB?d Í?dWæ?dºf?eA¾?ey£?eTÅ?dÅ?cÀ®?bÍ!?bXè?b`??by,?bú?a— ?aèv?b³?aÒÅ?apg?a3?`ËF?`ø?a›?`†?`62?`=I?_ä%?_î?`g­?`% ?_³€?_À"?>ìO?@9?@Oy?@mL?@@«?@?4?@Z¶?@`??k·?>à ??fª??p?>¤8?>Щ?>Í?>RP?>Fèi??\÷??.8??ë?>Ž•?>!?=¬?=©9?=W€?=1,?=]?=¸®?=Z5?<åÆ?<½œ?=6r?=±÷?=y¥?=Z?<ÇE?=?=r??2À,?1æ?28Ã?2é?2£‰?2,Ä?2Ø?1åã?2Hà?2[ó?1ºg?1¢¾?1½×?2 ?2l*?2@'?1­¶?1o?1‘î?1T+?0èœ?1É?1QD?1(ò?0¸?/¢n?.V­?.”?.æB?.tË?.>7?.X9?.±“?.Æß?.š?.1¨?-=“?,Ή?-G¯?-á?-ùÁ?.:@?.y®?..?-§k?,§?,{É?,Ð ?,„¢?, ?,\®?,Ác?,=µ?+ÕJ?+­µ?+ƒ ?,?.œ;?/jƒ?-Ý?*M7?)ø?*Š?*k6?)°â?(š÷?(§¶?)?(ü?(4û?&û…?&ãV?&û0?&ø?&[ñ?&@÷?%–I?!™?|«??? ^?Åå??U¿? Ä? íº?!º?!ÝÌ?"3¥?!F±? ±¿? òà?!åõ?"'3?#)”?"Á?")?!øY?!Ÿ‚?";‚?!Uß?ín? âß?!Àè?"›Ç?&Äà?* ¦?' ¶?"Õ*?!Ùš?!ßM?"Šö?"¸©?"?!NÞ?!Ì?!"½? Cc? 9í? †+? ”¿? ôÉ?!F?!? Ÿú?·š?rH?÷¢?ûY? B? Ô°? ü? Ÿ&? %y?‡™?i¦?°0? ¸?õ—?mÁ?..?_y??l?È?3?@é?'v?L??Aq?!j?$A?#-=? #t?†C? ?¬M?kñ?#I?Ö?8ê?d“?¡T?&÷?Ûf?š¾?Q?Ù:? n?ÝI?šÃ?‰$?âÜ?•ë?›å?½£?Ià?`®?‘ã?TQ? þ? *?¼ß?=?]·?ÀI?qÁ?Ô#?v­?×…?lµ?ƒ3?’c?4³?¢¡?ÎI?ú?¸•?6ø??óE?9¸?z?J?@Í?·¯?¹¡?Ǩ?Ko?4›?æ—?Óû?¯²?‚?ì?²Ã?¥º?‘Q?C ?aL?Îó?s?¡¬?â?Œô?®x?ç?’?JS?ÿ]?'?ïM?æ ?RÂ?ë ? Ã?­?a -?§¥?oˆ?ìD?ÎÃ?w?RÈ?F•?cì?Ì­?Í^?u?P{?å˜?~‘?Ÿ?Qª?ªþ?¡j?‚ -?‚?;H?ì–?#v?ìÓ?Þ??ˆÛ?k)?n?„G?XN?3^?“æ@ @8à8@ z?•©H?4°C?õI?LM?­?v·? Є? ¾d? Ä? -†? ¸‹? 1 ? ­?ò?’_?0U?¹È?¸Ø?xz?Š? ßl? šµ? ^ ? ¸? È:? \? ëü? ;7? ©Æ? xü? ô? ¼“? -ÈÎ? ¡Ê? Xl? :? ×2? ZC? mþ? Ì? +E? ç? -ÿÝ? -ÿÉ? ? 6Ú? †S? ê;? x? -¾s? -{Æ? -.Â? -6k? -”r? -Üu? -|¾? -Î? - ? -6²? -:P? ò? ‡¥? U,? 3? Ç? 7? Zë? A™?±Ä?ÝR?÷?óÉ?4ë>ý¹>ù}Þ? ²?@(?T—?tf?]?ö?6¶?ö?£~?‹Ž?:9?¿?é*?õ~?c¡?b¨?ë?÷?+s?C‰?õ?~?ÿ2?©?~ ?7?/Î?òø?à®?5u?¤ ?Sç?¤?³†?X‡?<é?Oz?·-??×å?ˆ ?~«?iÈ?Æô?“J?¾K??1|?ç}?§?cï?b?1?Œ´?œ?_?6=?¸­?ËD?Pç?êM?ºñ?'¥?ÿ5?x«?Ñ?º_?G?®?LÍ?¸?¦>ÿ•ã>ÿµ³>ÿ b>ÿ…:>ÿy>þ¹>þPd>ÿ3t>ÿŽô>ÿ†¨>ÿxš>ÿ›!>ÿ¹É>ÿ²ÿ>ÿœ»>ÿ3 >þõè>þ§8>þƒÃ>þs>þ`>þ€>þô>ý|s>üòÿ>ý z>ý3®>üþ>ü˜]>üJÔ>ü_í>ür¼>üY²>ü/>ûŽs>ûx)>ûzD>ûQ›>û! >úïà>ú­™>ú;>ùÂ>ùÃD>ù•ÿ>ù9ž>ùW>ù_¥>ù5$>øËè>ø’>ø8>øhF>øhy>øID>ø{>÷Ûv>÷”Ì>÷kÚ>÷R>÷,¤>÷à>öòs>öÀÜ>ö—Ž>ös>öIy>öæ>õãh>õ¬W>õ|Í>õ>ô9>ô0Ì>ôfq>ôl)>ô[I>ô0²>ôÂ>óÙE>ó•Î>ó>ò5ü>òJ>òœ4>ò{ú>ñ–?>ðÕè>ñDI>ñÁ'>ñîË>ñât>ñ¹½>ñ‘>ñi6>ñD>ñ½>ðó>ðÇk>ð§«>ðÍ>ð#x>ïác>ïí´>ïÙ¡>ï¶c>>ïd>ïK>ï">ï >ïG>î¢z>î#%>î >îp>í¤g>í)B>í2>ìžè>쉭>í4O>í¹>ìËß>ìçf>좃>ì?Q>ë½j>ëÃÑ>ëì>ëY]>ëRW>ëyæ>ë;>êÀ>êG¼>êG>éÖj>é\—>逰>é#j>è–¯>è¹>èÍ>éÒ>éF²>éC>éSy>éRü>é_P>éªc>émS>é9Ô>èÓÖ>çÂÍ>ç} ->蘱>éZŸ>èžm>ç¬Â>ç¼>ç†|>ç¹F>ç`>ç'>çpz>æûo>åhð>ã¢(>âÿó>ß’°>× -Á>Øe >á݃>åJ¿>å8>åy>äÞ>ä ÷>âïø>âú#>ãñŽ>ä Z>ä" >ä7 >ã=>ãÝ>ã®#>ãäã>ãúö>ãçç>㿉>ã§y>ãbÈ>ãLÿ>ã,F>âíÝ>âÁ>â¦p>âWý>âé>â9p>â"·>áÍ+>á»m>á»Ä>á½P>áÒ$>á»ü>áYR>á(ž>áN†>á]j>á)¾>àçg>àÖ>à/>àp®>àS >à0L>àE>ßùb>ßÜ*>ßÆí>ß±™>ß‘Õ>ß5>Þ“¨>Þ­³>ß —>ß>ÞìÂ>ÞÐr>Þ¯à>ÞŸN>Þ‘ >Þkó>Þ:Ê>Þ²>Ýù}>ÝÖ>ݳñ>Ý’Ã>Ýt÷>ÝY/>Ý->Ýð>ÜÐ>Ü F>Û7>Úµ3>ÚD‰>Ùä¼>ÙŸ>Ù^>Ù›>ØË¢>Ø>Ø:>×çƒ>×ÄÖ>בþ>×tX>×W²>×&!>ÖòÁ>ÖÅ >Öœl>Ö‚Ö>Ö}Ë>Ök%>ÕÚ™>Ôl¢>Ô‡ >Õ¸>Ó#š>Òíb>ÔĨ>Õ*Ý>ÕS>Ô»>Ô‹Ø>Ô§Ó>Ô—œ>Ôe3>Ôø>ÓÂÔ>Óµ>Ó·9>Ó >Ór£>Ó;˜>Óœ>ÒÙ>ÒµR>Ò‘Ü>ÒmO>ÒB>Òg>Òr>ÑÐ\>з6>Φ>ÎËÐ>ÐÉå>Ðü@>ÐÍ>Щ>І©>Ð\\>Ð*>Ïîé>ϼ­>Ï•€>Ï`2>Ï+Q>Îý»>ÎÏ’>ζZ>ÎÈ>ÎÎ >ÎÉ­>ÎÛ>ÎÀ”>Γ>Î2d>Íë[>Í·>Í|K>Í;W>Ìõ¼>Ì®â>Ìo[>Ì?>ÌC>Ëì>ËÎë>ËÅ\>˵_>Ë£>Ë‚>Ë\¹>Ë,È>Êô>ʸx>Êk¬>Ê 6>ÉÃÌ>É >Éc÷>Èü>È¿¯>ÈØA>È¡>ÇêÄ>Ç—2>ÇÞ4>È`9>Çõc>Çt™>Çi>Ç·O>È@>È^ª>Ç—>Æõ¨>ƺ?>ƼË>ÇÒ>Ç•½>ÆÜ«>ÅÍ >Åå>Æ¢>Å¥Ó>Äò‡>Äþ>ÅŠ´>Ä-„>Âî¾>ÃÛÇ>Äm)>Äxd>ÄK>ÂÖ³>Áo®>ÁÀ!>ÁR>ÀXý>Áš>˜>Ãì¦>Ä >Øù>Â|->Á#>¿Íß>¾¿Æ>¾üƒ>¾ÿà>¾ÛE>¿à@>Áf2>Âà>Âïà>´d>Áü³> >Ág!>¿Å!>½‘•>¼Ê¬>¼½Š>¼K©>»ÀË>º·M>»5 ->½'«>¾ˆæ>¿>¿œ>¾¢`>¾ž(>¿H>¾ú>¾uö>½RW>»âù>»t‹>ºÁ>¹ßì>¹1î>¸³„>¸èQ>¹Á>º_ø>ºÉÿ>¼.>¾?Ï>¿ ->½ÑV>¼œÎ>¼6P>»ùC>»ƒ=>ºàœ>ºö>ºÐ!>ºWt>¹ql>¸wÃ>·ÎI>·Ï¼>·úT>·ì¦>·¼>·Ÿí>· >·’z>·Q>·P½>·g>·iÿ>·aÂ>·IR>·(g>·>·€>¶á >¶² >¶¡ß>¶ˆ">¶nY>¶Nh>¶ ->µÝò>µ¯Â>µvÇ>µW‹>µ;>µ -ù>´Þ¬>´ªÿ>´”Q>´‹b>´qs>´Tn>´/>´’>³Õ ->³¢p>³h@>³$™>²Ò >²oË>²­>±ž >±0g>°»í>°=Ò>¯Ž³>¯N>®ä>®¥è>®j½>®@H>®W>®ý>­êd>­Õ´>­À2>­£>­‹Ñ>­uC>­Xl>­7ð>­"ù>­ã>­>¬ëé>¬ÔÄ>¬ºê>¬—>¬d†>¬…Í>¬–Z>¬‡l>¬~¯>¬n>¬P}>¬ >«à™>«ª·>«u‰>«GA>«•>ªè#>ªµÍ>ªrX>ª>©Ë˜>©Ô¡>©Ã5>© ê>©{‹>©]à>©F]>© -°>¨Ç§>¨Ða>¨ºÝ>¨h.>¨%‰>¨I>§·•>¦ög>¥èl>¥2¦>¥- >¥C2>¥hX>¥‰4>¥–>¥¦>¥N5>¥$Ù>¥|>¥ˆ?>¥S–>¥DÙ>¥Uè>¥‘>¥Ýf>¦-E>¦Ä>¥Ë^>¦i>¥½€>¥2º>¤ÊÈ>£éW>¢–î>¡.ã>žš>šì¡>—Ò>•|°>»‘>‘²y>”Ð>‘›U>œF>• ú>˜N>›1±>žä>¡Zá>¡²µ>¢.G>¢Š™>¢óy>¤<>¤úY>¥0 >¥Q>¦Â>¦Î‡>§x>§/×>¦Æ‘>¦5¾>¦>¥‹&>¤¿J>£ýÓ>£³È>¤.>¤a>¤ -–>£·4>¤2Á>¤Rû>£Š¤>£1•>¢ù >£Ÿ>£¦>¡üç>¡{Ç> ”ƒ>¼â>›Í>œÅ€>Ÿ^ > ÑÜ>¡š.>¡pî> Ø½>  ý> %à>¡8û>¡9(>¡‡>¡Ä7>¢> |\>ž§e>žYn>Y">œló>œã:>5H>9|>žpi> ëw>¢fa> bˆ>ñð>ž Ý>ž{Â>œÕ>š)•>™©Þ>š=>š5>˜¾>˜k >˜%Z>—O4>—T9>–æk>•›.>çä>›¾>Œ ™>†‡Ï>€ Ì>{­Ã>€m >|7ù>wö >l™>„%V>ˆþå>›>MŒ>“’p>–>–‹–>–•Â>–óB>—~˜>™'!>™?Ú>˜Ó‡>˜¤>˜>˜VÜ>˜ÔÅ>™ŸÎ>™À‡>š~ñ>›5Å>›âp>›ÞÅ>›1È>šÇ>˜å#>—ß1>—›·>—rè>—Ä…>št>œ?½>›W¤>˜ûà>š­>™E¬>–Rj>”ãT>‘ú>Œ×>¯\>”Y5>—‘g>™b»>™lç>š4>šŽ£>˜Ê§>—,y>–²Õ>–ÉË>—ä>–ºñ>–ðÄ>—1œ>–>‘±Å>Œ-I>Žš/>“ž´>• Â>•‘È>–&(>–m¯>—f>—ç³>˜t°>˜qä>˜¹á>˜ŽD>—ɽ>—a›>—g»>—^˜>–ÿ„>–v_>– #>•WN>”n>”1@>”‹>“ÜÄ>“£Z>“G">’ìí>’Ó>’®é>’“>’‡5>’qÉ>’Ah>‘õ>‘×Ù>‘Üh>‘ÇO>‘µÇ>‘¥è>‘ˆ¿>‘|9>‘h2>‘Ož>‘4B>ùU>Ù—>×5>°h>•Ù>ƒv>o:>M­> g>õÁ>Àî>ŠX>k>p">R!>;>V>Žò>ŽÌÞ>Ž£7>ŽŒ>Ž„Æ>Žu&>Ždò>ŽM·>Žÿ>ê˜>èW>Ì|>º>˜>`°>9>0>å>ŒÊn>Œ•0>Œ–>ŒŒ»>Œ_œ>Œ=´>‹Ý¡>‹o>Œ K>Œ_s>Œ(>‹X>‹Ùê>‹ùˆ>‹z>‹>‹÷>Š/>‰Þa>ŠÔÂ>‹þ>ŠÍ,>Š“m>Š3>ŠE>‰úš>Š ð>‰ê`>‰Êm>‰§>‰wœ>‰TN>‰2i>ˆ½½>ˆ¬§>ˆýN>ˆüZ>ˆØ¼>ˆ2<>ˆ@è>ˆ;·>ˆM>ˆ3#>‡9ü>‡«¯>ˆŽ ->‡&Û>‡&E>ˆEÔ>†+œ>†"C>‰>‡¬p>…\€>†g>‰ —>†²Ó>ƒT=>ƒïë>ˆ -Û>‡%¯>‚±4>ž9>„'n>ˆù>†¨Ê>‚`>€Ë¿>‚sf>ˆ`>‰: >ƒML>€ Š>ˆC>¡>‡x>‰ p>‚ú·>÷ú>íú>9*>ZH>ˆ‚ç>Š?>‚q>~-Ó>}£o>|„Í>|LÉ>{ü>‡RÛ>Š"6>¤è>|_Ì>{]a>z4 >yhÕ>yÀ>{çâ>„̵>‹Ö:>ƒ &>yŸ÷>xjó>yšÐ>yÅ>wN>v˜>u„‘>w¦d>…Öc>‹š`>€÷²>vw>w>]>yh4>z!>y?>v#k>u2‰>twÑ>uѶ>{Ž9>‰9o>‰¯>{Y>yç>’VÇ>¦ à>‹`F>{ÀÒ>xHŽ>ur>t}>s1>q>nÙ«>tyK>ˆ¦ >‹§ð>z ×>o—Ã>p€ö>r•§>sŸ>s²ð>tu>tï ->t…\>uq>xÍ>uK^>nƒ­>iñì>ir>q ¢>‡Á>ˆý0>qnb>i}‰>mLq>nÉ>n#×>p5é>qÖb>r§æ>sdô>t>sÉW>s0Ð>qfd>oÕ>mbÅ>j\G>g]5>d”¨>a߃>jë9>†01>„°>fMÅ>` P>ct²>fNz>i|>l s>nÝ>oç‘>pi>p¿W>r”å>s[>qU->q¦>qÞ:>poÀ>o_>l‹¨>j‡S>h·\>d›¼>`”Ù>[N’>WÚ>cý¹>…Yë>~%>\J·>Y½*>]þ’>bME>fo]>i8!>kã¡>m*¨>m9ø>mõs>o`Ê>p©>q†h>r~ç>rÐÓ>rë >q¬ð>r’c>s†â>qhR>nÀ>lTK>jµo>iN¬>fì>cm{>^Æx>[9±>V¥î>P®È>P;>nBó>ƒñÈ>`—ö>N„>S £>XÖl>\ìÏ>a4Ï>eŽ>h§—>ki4>køå>m{4>o=>pU|>pÀ.>puÓ>oéI>p‹¾>qVº>q0Þ>p©¨>po¤>ow*>p4é>o¬Á>o®6>nRõ>n(y>m¸·>lw‰>kXE>jU°>i-õ>fXý>c7“>_¿'>[Úê>VÒá>OßF>HãR>NÆ´>{BÍ>zhÂ>M¨6>HOŸ>O™q>TØÍ>Yµã>^Ï>b -,>eq>fL!>fqå>gËç>hf>g‘~>gÊJ>hV>iw¨>k·Ä>kÈ1>jóÁ>jø>j¤à>i¹O>i©³>jà>jí†>izt>iBå>iÓd>iŒ>hÝœ>i»­>gÎÀ>eðe>c¢3>d >f³v>gì>g×´>f>d6Þ>cN>aö4>`¢C>^tM>\t>ZÊX>Xí¼>UœÃ>R4´>N½0>J°À>Cœ>={>H÷“>U >C8ó>?ù>Eâs>LG>P·—>T÷>W-t>XÞú>Z—>[’¢>\9P>\œ_>\Í¡>\Ñ°>\•‰>\NË>[ÿ´>[£ï>[s¯>[UØ>[8Æ>[>Z¤>Yè.>Z^b>Z€Ö>ZYµ>Z2ž>Z ñ>Y >Xå>XU¥>Xó{>Y #>X²ü>X–¦>X­˜>XŠ°>X]½>X._>X>WÔ>W¤C>Wr—>WDç>W >Vå˜>V±>VvP>VB>V¶>Uáñ>U©>UnO>U+f>Të+>T©®>T]Â>T°>S²r>SA>RÂL>R6ƒ>Q8>OQa>N_ñ>M4>Kd>G§>Bß1><~Y>4"ÿ>)´a>%kn>-ÈŽ>76>>+ñ>Cz>GOY>Iég>K±ü>LòÀ>MºV>N8Á>NŒ,>NÁl>Nß»>NÍð>N¹™>NÃl>N¶>>Ní>N±®>N’ø>N¤>L04>KWw>MPD>MæY>M©A>Mƒ">M<¹>Lr±>L2>L¡Š>LÞ>L|U>Lu>K•}>KæT>K\>Ió>Jkê>K‹§>K<>K|>K@>Júÿ>Jš½>IŠ‡>IÔ>JB…>J%š>Iñä>I3õ>HþZ>IgÓ>IMó>Hßï>HB>Hˆ©>H®‹>H…]>HVË>H.“>H]>GÆê>G‰„>G{¥>GI>Fæ>FÓ>F¸;>F¥«>F@>FQk>F#¹>Eçy>EÜ>D¨ú>CáÅ>CÝv>D€l>D¹“>DV£>C†‘>Cßê>CïÃ>C¬è>C,–>BÏ>B ·>AVý>?­>@“à>@¶>>"Þ>=ev>8}>4 a>2/G>,‡1>$zL>K.>Î;>Æ>(Y¾>.äÒ>3Õ>7f[>8—–>8,O>;§%>=+>=J™>=¦~>>*.>>7]>8Ç>9‡T>9´æ><„Ð>> Ê>=áâ>=Ú>=Ö>=½¡>=œ±>=x¼>=Y&>=_><‰><Š?><³’><5*><6O>; u>;g >;Ù¾>;ÍA>;¢>;u`>;P'>;0þ>; â>:ÞZ>:œ»>:0>9ìë>:)¾>:Y>9ü×>9Õe>9–Ã>9;´>9K`>9Ar>9ã>8ñÙ>8П>8«O>8ƒ‡>8X‰>856>8Ò>7æ¡>7¹{>7›é>7l¸>7>6ÿÍ>6óÚ>6Ûö>6³‰>6…>6H>6>5õD>5Ru>5ŒW>5¬c>5‰>5`Q>4ËB>3'>4À>4@ú>1.½>1ú¯>3ïE>3üì>3üÛ>3ÚG>3±_>3#j>2Ûo>3+>3 ->2åÑ>2ŵ>2´J>2ŠÏ>2]…>22>2>1óó>1Î:>1ªÜ>1‡>1F5>0È{>0Y?>0Àm>0À/>0œê>0u0>0Oa>0)Q>/ýe>/¡>/jp>/{;>/Y'>/#>.ßp>.¸>.›»>.n”>.Ið>.0>-Î>-| ->-\f>-7÷>,‡ì>+!¼>+Д>+äK>+It>)Úv>)æ>(W0>'g>$àl>!â >7>„J>m>ûk>Å®>8ý>V9>–ó>![Z>#ô>%¬•>&Ô>'šÒ>(ñ>(nŒ>(›ü>(¹G>(Õ+>(à*>(Ú>(Íê>(¿¦>(°L>(“>(q>(gç>(M‡>(K>'û~>'š>'’ô>'³²>'—E>'yŒ>'`¯>'7>&äí>&^_>&ï>&Tw>&8 >&S>#gõ>#Ä >%Ý¿>%òý>%Ò1>%°D>%ŽD>%j>%9¼>%œ>$ý>$®>>#úy>$15>$q¬>$Fû>$)þ>$ â>#Ü>#Ë >#­›>#{Ï>#F·>#=œ>#"–>"ÿá>"Þº>"³>"’Ë>"jÊ>"M`>"7„>">!ñÝ>!ÏÊ>!¯å>! ->!lé>!Jò>!(>!¸> ß…> ¾d> Š†> ej> \W> <¶> 9>ó>Å×>f>h>n£>Q³>0¤>->í6>ËL>ª´>‰_>g[>D¨>$½>%>â>¼v>™è>sñ>YV>6ù>øŸ>›Ê>€L>å>†ü>gB>@p>0> >Ïÿ>¨†>Šƒ>y~>g‘>K>$>ßÊ>€Þ>“>;—>6á>A%>À>ë>’œ>§>£#>‹÷>cn>1b>6>Õó>Ïá>´m>žì>bà>®>¾>n> [>Þ4>› ->uæ>mš>X>J¸>o ->êè>ÚÈ>Œ+>\`>w>D–>O>½¦> F>ñÁ>ÕŒ>¹>ï>^ ->8>î ->èA>Ùö>Ú>>¸>>–Ò>j >?~>Ïq>¼ì>òˆ>Þ´>»g>–]>z >M6>'à>Z>üs>Ý>¾*>þ>}Š>\J>7ú> À>òÝ>ÖÀ>³>€º>!1>'|>¸>ë·>Ä«> (>q†><ú>>¿>vì>'#>šý> 2ç> ày> a3> ¢Œ> ->ËÇ>Ð> ^=óêÉ=âV¥=àA¯=ñ@M=ý¥ñ>*l>F€>l#> ß5> -Øã> }Ý> é > R> Ùs> '>> …> ¹> Œð> ‚Ñ> t‡> f•> Tö> Aa> ,p> #> å½> ˆã> :z> d­> Z> 1> X¯> ?¹> -Êr> -£‚> -ä> -Ñ2> -¾k> -£p> -[> î9> -5 > -24> -> í¨> Ýu> Àw> ž> ‡t> m > M_> &6> ©>ùØ>Úø>¸Ò>¢ë>†á>j!>LÛ>1j>æ>ñú>Üh>¾ > H>†ù>k>Nf>1}>­>ö›>Û¿>¾ø>¡W>†ö>jH>N >/ý>{>ù­>Û»>¼¢>¢|>†>`p>D×>2j>0>ú>Õ§>¿ >§˜>‹ï>oô>SÌ>7Ä>H>ÿ >ãë>È+>¬F>w>s¾>U„><&> 5>ù>é²>Î>²d>–g>U§>Ú>}> > 1>î>Óp>¸ >žF>vg>0>8 >0¦>Ú>ùù>Þ1>ÃØ>¨p>Œ¬>r>V×>:>"=ÿæ=ÿ­ñ=ÿ‡|=ÿeÄ=ÿ*C=þðx=þ½Õ=þ=þU"=þ!p=ýì=ý¦²=ýDp=ý0)=ý)=üß=ü¤´=ükœ=ü:=ûûˆ=ûÐù=ûŸ¾=ûhF=û2M=úú•=úÇÿ=ú•y=úaj=ú,8=ù÷S=ùÁr=ùˆØ=ùW=ù#…=øìÒ=ø´î=øƒÜ=øE²=÷ñ=÷°=÷¼=÷j=÷>Œ=÷s=öÛ±=ö™h=öoé=ö?ó=öR=õÙ¼=õ¥á=õiÂ=õ64=õE=ôÒ -=ô¢p=ôk°=ô D=óÃ3=óÀÈ=óv =óV =ó#ò=òêQ=òË=òY=ò3C=ò'<=ñû¾=ñÎÈ=ñš¢=ñaê=ñ. =ð²=ð†=ð‘¡=ðFw=ð @=ïãœ=ïÌM=ï™1=ï_=ï-o=îñ=îÍ#=îžÜ=îk•=î1=íþ2=íÎo=íží=íl¸=í1Ý=í3=ìÑ=ìŠj=ìd=ì=ì‘=ëÛø=ë©=ëy=ëG -=ëÁ=êâ²=ê°==êy3=êH%=ê–=éæ5=é² =é{#=éAs=é ]=èñ„=è¿Ÿ=è‹=èZ¡=è+_=çõ=絞=ç…â=ç_y=ç+é=æôA=æŸÔ=æ!i=æVG=æ¦=å,œ=å}=ådd=ã4=㪸=䮵=âø¢=âð(=äoR=äWŒ=ä' =ãö*=ã–Û=âÒ¶=ã2ò=ã+š=âû˜=âÍl=âŸù=âs==âB]=áä%=á)y=á„K=áE=áO=á!\=àñ=à¹ù=àŠ)=àS—=ßç%=ß‚=ß¼D=ß•õ=ßlY=ß;Ï=ßÒ=Þà;=Þ³T=Þ„ =ÞR~=Þ$=Ýõí=ÝÄ—=݇ª=Ýc==Ý8ö=Ý o=ÜÓ=Ü •=Üz©=ÜK=Ü=Ûê=Û¾=Û‹à=Û]==Û*¾=ÚøË=ÚÉ–=ÙAd=Î6¯=ÏÐ=Ùc‡=Ùã=Ù³˜=Ùƒ=ÙB|=Ù£=Øö(=ØÇ=Ø–×=Øfg=Ø4ì=×êZ=×µŒ=ן=×d=×3ð=× å=Ö×ë=Ö¢=Öm¸=Ö5þ=Õúü=ÕÀå=Õ‡Ò=ÕHÆ=ÕW=Ô¼N=ÔkÅ=Ô=Ó³Z=Ó4c=Ðê¨=Ì*=ÎR3=Ï”¤=ÎŽi=Ìpn=Él=Å,"=¿TŽ=·\=©XÏ=¦Ø€=´š¸=½!Â=Âçx=ÆœÓ=ÇÖx=ËH÷=Í;=Íì¨=ÎxŠ=ÎÔ¬=Ï O=Ï1ø=Ï?P=Ï?·=Ϻ=¾,=¾=½€b=½© =½M=½tX=½F|=½$µ=¼ýÈ=¼ÕH=¼¬m=¼ƒß=¼UX=º]ª=¶q=ºàp=»zá=º– =ºà=ºú=¹²¦=º»G=º¶=ºA–=ºIr=ºK=º*«=ºú=¹ÕŠ=¹¯·=¹¾=¸³T=¹0F=¹ k=¸ìà=¸Æ=¸ž%=¸vÁ=¸O=¸(M=·ù°=·ÉÎ=·±‚=·‹{=·^?=·5s=·Õ=¶ÄÇ=¶³0=¶Ÿ+=¶su=¶D=¶"æ=µôF=µÌé=µµ±=µŽÇ=µcÒ=µ8Z=µ M=´ê=´È¦=´ü=´j%=´Tï=´2a=´ ô=³åc=³¾=³—=³r|=³L=³%Ì=²ýò=²¶É=²† -=²r.=²d=²@\=²O=±ô=±Íï=±§ú=±ä=±[Ã=±5½=± "=°äÃ=°Ãn=°×=°r -=°O=°-=°]=¯áx=¯»ÿ=¯–C=¯oõ=¯IÕ=¯%e=®ÿö=®Ú‡=®´ü=®‰÷=®YE=®<÷=®=­ùù=­ÑP=­¥è=­‡I=­dg=­<ñ=­q=¬ö*=¬Ðÿ=¬ª=¬…Ÿ=¬aü=¬;·=¬¶=«ðÙ=«Îd=«©Ñ=«…=«`$=«:·=«=ªëò=ªÌ%=ª§Ù=ª‚ñ=ªA=©ªå=©ø…=©ñ³=©Í=©§€=©~Ä=©OP=¨™Á=¨Ë9=¨ìÖ=¨§=¨}õ=¨…2=¨c>=¨? =¨Ò=§ö¸=§ÍL=§¢­=§| =§R´=§®=¦„R=¦Ý=¦×=¦ÿ=¦?q=¦WÖ=¦=š=¦#¾=¥ÿd=¥Ý–=¥¸Á=¥”È=¥rÂ=¥Or=¥,4=¥¼=¤åe=¤Â=¤ž·=¤wØ=£Ò=£=¤ -q=£í´=£È²=£“ƒ=£yi=£a=£=Á=£Ÿ=¢÷=¢ÔU=¢B‡= §¼=¡ˆ6= '8=¡‚»=¢ã=¡Þü=¡»/=¡’¾=¡vg=¡V*=¡&ç= õ3= í= Ìª= ¦k= qî= VÑ= A¸= ¡=Ÿîò=ŸÐu=Ÿ¸ú=Ÿ–Ó=ŸtË=ŸR—=Ÿ/½=Ÿ -°=žë=žÉ¿=ž§ =ž„ÿ=žc†=ž<6=Æ-=ÈÁ=Úµ=´=ƒŠ=s=Q=1B= ë=œÛs=œÇ=œ©Ò=œ‰Â=œg>=œ3®=œÆ=›út=›áÜ=›À£=›—I=›>W=šñ[=›0=›e=š÷ß=šÖ=šµš=š”N=šs=šR =š0à=šš=™îI=™ÍY=™¬’=™‹&=™i=™Iq=™(7=™Í=˜Ñ.@Q`ý@PÆÅ@P‘@PãŸ@Q’@R59@R„@Ri@Qøü@QY"@PÁ»@Pj@Pk@P²‚@Q š@QE@Q: -@PÉÎ@O÷U@OÎ@NÀ@Nôq@OQ<@Oy@OyÏ@O“€@OØ’@P!*@P:Ž@P-@Oª@NÕŒ@NQ#@N02@NcÜ@N¡¤@N”¢@MüG@LDZ@K8ƒ@IßÐ@II³@IŸ#@J¥Û@K÷\@M&`@Mç…@N1ˆ@N-W@N Þ@Mã“@M£s@M(@LjZ@K›ã@K ¯@JïB@K9¸@K»#@L;)@L…²@Lwš@L@K¥X@KZ@K4ö@KÚ@J»‚@J›"@JÍö@K4j@KŒ@K­ç@K—Ö@KV!@JçZ@JM@H­Œ@FŠg@Dyñ@C®q@D”5@Fe«@H~@I!@Iœi@I½@I´@Iž -@IwE@IÛ@Hk@G@Fº@FWA@F:Á@F@E¿}@E8ó@D¼'@D‹ @DÉÏ@Ek @F&@F–e@Fz~@EÙ¢@E„@Dâ@EWQ@Eü˜@F7°@E÷/@E’¢@E0?@D‘¼@C–5@B«-@Be<@B·ž@Bø@B·w@B?É@B,÷@B·@C½c@D¡œ@E J@E>D@E2¸@E(V@EÛ@DøÇ@D¨§@D;@=ƒ@=þP@>k@?9@?¹y@@&B@@pU@@ˆ‡@@s3@@7}@?Ç@>þ@=Ë@@<ƒ‡@@$ËÇ@$ßP@$¾í@$%@$z™@$~H@$~Õ@$jÝ@$Då@$F@#Éœ@#†@#fc@#uf@#–@#¥k@#œ¦@#‹}@#zù@#` @#*Ê@"ÔÐ@"x@"EÝ@"Uë@"}¥@"u‚@"!\@!¥j@!D@!1š@!r·@!ÔÇ@"Þ@"1¨@"(1@" 4@!ä@!±@!„w@!oa@!m?@!e“@!AŽ@ ö­@ ‹x@ µ@ÚB@ãS@ /F@ †0@ ¸@ ÂÓ@ ¸É@ ¥,@ L@ €ú@ s@ Væ@ d@½ä@gL@DÙ@QÔ@bo@e<@g4@j@]ú@,@¸Œ@ ¿@xÎ@h¸@Á¬@@+ê@ –@Ïz@™ƒ@‘X@«±@¹6@¨ì@ˆÁ@ZÌ@€@ç@Ö @Ö*@Äj@ª¾@ŸL@Ö@&ß@·“@–3@Ú@0y@C™@l@Ç@Z¨@]É@}×@„Þ@vç@b¨@4Q@î@¹ä@¥-@¢+@¿¹@o@Se@lk@H@ð@Ô'@Æý@Â!@œM@`'@I_@jû@‹Þ@u¿@(Å@ÈÎ@‹–@˜»@݈@ú@ú²@“@@Áø@¸@×û@ì@ÍÌ@„c@E@;Õ@Vß@m÷@x@w@St@ @˶@¬ @Œ(@PR@ X@îÓ@èD@·³@J@Á=@;¬@úD@@9@ð@¨n@0Ì@£@Ëu@ßý@ªr@5é@åÓ@ù2@5Ë@bí@’à@¾±@Ä -@© -@kÆ@ -{@¸ @«Å@êD@Hö@ @LL@ÌÏ@j@Y5@zd@–+@^@ko@0ò@ò@âl@ i@Gð@e°@_@Yƒ@rœ@”š@ b@šœ@@jý@Ž@›–@ûy@‘æ@™U@òv@U$@¨î@ô@%@$@é’@~ñ@ -@Éî@ðW@eñ@Å\@Ã¥@€P@4“@ì @ÄÉ@ßD@Ü@>@j@ƒ¨@ß´@Œ—@Œ -@Ÿ±@ª@Ø@@NÀ@ts@cµ@(@ÃÒ@C@ æ@µ@Ê5@•@~ã@às@dü@}@~B@ó@ÒÁ@³;@”B@mS@\@Z¼@>e@ô @Ü@N@ÀÛ@Å™@@H›@=j@ëh@“¯@f@iÒ@zô@iÛ@.±@êâ@ºÝ@¥B@¬@П@)@t@¶Æ@•Ã@m@xç@"Š@ …@ @B”@už@w#@3Ï@ ð«@ î8@ù@ Ós@ IP@ €ó@ ¨¿@ -äG@ -U@ -N^@ -óã@ Ê~@ 2ð@ n@ ·ñ@ x@ ] @ `@ ^±@ 0P@ -å¸@ -œ@ -dØ@ -oÊ@ -»`@ -÷Ð@ -÷´@ -Æ@ -o“@ ü¤@ ~/@÷„@oU@ t@1-@pD@¦’@ÊE@ém@ @ýÏ@¸·@a@^@S@Ñ×@AK@¸@-°@I(@7d@ûÑ@©X@RÄ@L@Û[@ÞŒ@÷£@ø@ÞÂ@³ë@a6@è@Ö-@±@ê@xý@¸½@„6@bó@â@*q@b³@´y@fU@,í?ÿÛú?þYû@[Å@û®@Û]@Ö¾?ÿ¾þ?÷Áë?û5ý@F@ žÅ@G½@ Ã@­?ø‹§?ëþ??î?þΫ@ -Áó@Û‘@O­@6@ T[?þ ?êxß?å©?ó3@x¼@„ž@RÊ@"}¢@"C@FV@îï@(ó?ï û?Þ_»?àk[?ôP @’×@Æ@"m@)­L@-¦‰@. @*ç@#äõ@ùš@ -ˆV?õ‘n?Üóÿ?Õ‹ƒ?âWØ?ü´0@ ”R@ºg@'Q•@/Ë_@56t@8¦@8ÿC@7ÝK@4sÁ@.²ô@&q¹@<@59µ@6ãê@9z@;@;¥·@:ÄJ@8¹Þ@5uø@0N@)«‘@õˆ@@hÖ?娕?Ì Î?Å+?ÔzQ?ò, @ g@œ/@"¼<@+@1)U@5Œñ@8«@:Ï&@<Ï@@1’@0w}@.….@,@*=@(F!@'ãŸ@*í]@/…Ê@2R±@2@0§µ@,ýU@)­Ê@)é„@-7†@/ÇÑ@/X>@,¦@*bt@*R{@*Í@)UÕ@&X˜@$Êó@&^]@)_^@+`E@+âÏ@+º½@+zV@+U@*¿@)R‡@'@#Ò¸@¹@ ±@‹Z@UE?öÀ?Ö°h?¹ö–?¬{¸?µà¦?ÐV1?ï*=@ø²@i2@tO@¯š@"R˜@%†&@'ª”@) â@*(@+ ®@+éê@,†”@,Ð@,à¶@,È@,ÛÇ@-hþ@. @.XÃ@.î@-®)@-x›@-{ @-”Ñ@-«\@-¥4@-nö@,·@+ ö@(Ó@'C?@';Ø@(|g@)ˆ@) @'Ò@#ÍÇ@ ~@h@"2•@&^é@)5(@)b`@&U@ß/@RÎ@è¼@ún@%xu@)1@*² @+lZ@, @,’M@,§#@,Rå@+×@+[Ý@*î@*”(@*gv@*|þ@*Â&@*÷,@*å@*˜@**S@)¬Ó@))E@(  @(#Œ@'DZ@'_\@&–†@%ZÝ@#Ó@!è @Õô@«Ž@Ð@ ú^@î£?ôê?Ö‹®?·e¡?¥ ¬?§Ý?¼³1?ÚU?öĪ@ÿ=@Û·@K’@Ú @·@ "Þ@!¹@# ¯@$ Z@$ºÖ@%Kb@%ê<@&Šã@' -t@'?r@'+Û@' ß@'Jß@'q·@'XŽ@&Ó{@%ÒÓ@$Øõ@$¾¸@%’Â@&b—@&²õ@&ôÿ@'`‘@'›Ø@'i°@&ùÍ@&b>@%/Ù@#Pd@!¶@6ì@‚ë@·M@&·@ùï@#‘©@&ý@&Ìv@&ïÉ@'×@'Z´@'–f@'•C@'P(@&Ö2@&l@$¹@!ƒ>@.ñ@ '@ -nÛ@ -© @µí@ï @!ï‡@$äç@%ÿq@& O@%ûR@%åä@%è @&î@&¤@%ê‚@%Á @%–‡@%Z*@% À@$ðÞ@$ÌE@$îÚ@%gŸ@%Ðì@%á7@%¹ô@%…`@%N¯@% @$ûA@% p@%I³@%iÍ@%@@%ÿ@% @%^?@%‹^@%Ž@%Vè@$ïy@$c@$@#êw@#þû@$6á@$Zž@$05@#ÏB@#€D@#=„@#8@"º9@" q@!2å@!n@!°«@"‹Ã@#ã@#>b@"ÿÃ@"|´@" Ë@!¿§@!s@!³I@#G%@'—@+dV@-¢n@-R‡@+®y@)kŒ@&°f@#\I@†@”B@5¸@h"?÷€Š?Ùo?½Ì?®æ_?·‰‡?Ñ%W?îŸ"@É)@ .š@Œ@L@‰2@Îu@ Y8@!‰ü@"‡Þ@#B@#¦k@#Ëü@#¿Æ@#?©@!«0@Ój@oT@Õf@w‡@!ËŸ@"§Ð@"z@½@`}@  @p@Ül@Ð@øØ@þ-@ÞÃ@ Œ]@ ›y@ Tø@æã@aœ@zí@Q@Ø@Z @ÚS@.Æ@ý§@.!@3Š@W%@”ä@{_@“@a]@ÑÝ@‹@Ûi@Q9@e@I:@Q@«¨@ér@ÝÖ@#{@@.@Ì@L@Ü2@èÐ@©š@0.@ÅÎ@Q @ñÑ@ø÷@{Ì@ ½@èS@ø@•²@).@Xy@ÑA@ @$Ï@Þj@d?@âÖ@Ç@yâ@gÖ@FÇ@T@‰ @”}@x'@vö@‡ @€p@[³@*@¢ @PÂ@Fc@h•@…ñ@/@v@E9@Q@è@óŠ@Õ_@ÇÚ@Ñ·@Ú9@Î[@¥$@]Â@ y@ß7@öÝ@q@€@ߥ@Æ-@Ðû@Ðg@ª@F8@ @h@!º@ÛÚ@ -@Ʊ@\@—n@»Ê@F@4a@Û@@ë:@z:@*@8@o_@¾L@Ø.@Æé@¬l@ŽÖ@n¡@UJ@/µ@õ @Á¹@¤…@G@4~@Øó@²@Ó’@ ‹@ k@Í@kx@˜w@ yH@ -PÌ@ÓÕ@ -˜Ì@ q•@9Ñ@ÝÕ@ãr@¾@¦‹@’‡@ft@!@Ä<@—Ž@Œg@tC@EØ@-@2o@.m@#»@/Í@Q@m'@eÖ@;*@ ó[@ iM@ É@ ¦!@ s@ c\@ Œä@ ]‚@ ø?@ œ´@ ?@ ÷}@ Ü@ dØ@ ›ÿ@ ¤H@ ³@ Z±@ l@ ê}@ Æ@ •ç@ e°@ G‡@  @ -¸3@ -?k@ -@ -&S@ -oŠ@ -€¨@ -?‡@ Ñ8@ L“@¾¶@G&@ß@:»@å@Šì@·@‡4?û4ì?ó¶?çîô?ØÆs?Ä‚]?«™¢?• ç?Ž§´?C¥?¶1œ?ÍUZ?Þæ>?ënq?óÿÏ?ùÞ?þ¼@C@Nó@öæ@@Xz@?øûX?øé?÷‡Â?÷AV?öë%?ö^Q?öx?ö\U?öÖ ?÷/"?öx?ô¢Ø?ôµ?ö#¤?ø\Ë?ùC1?ù“/?ùé?ú›?ùÜã?ù)Ü?ø¤`?øã’?ùv?ù™4?ùHc?ù2¯?ù‡ƒ?ùƒo?øõ"?ø±?ùÊ?ùƒ?ù€â?ù `?ø2!?÷?õå(?õ‘#?õâç?õ¦?òÿi?ìÍZ?á(X?Ò‹½?̽ü?Ö÷ò?æ\`?ï£ -?ó"²?ôWÁ?ô -=?ð¥?æ?Ü<×?Ýú‰?è‘k?ð«f?ó¥Õ?ô+”?ôb?óÕO?ó–n?óB€?òãå?òÖ*?óÆ?ó&K?óKè?óƒ?ó|¤?òòP?ññc?ðÓF?ð,Õ?ðNÝ?ðÛÍ?ñ3Ò?ñ1?ð8?ï>»?ï.ê?ðâ?ð~[?ðï?ïa?îðd?îÆÕ?ï$?ï{U?ïsÝ?î¨(?í£û?ì³Â?ëÕ ?ë† ?ë²à?ìQ?í(^?í!c?ìC?ëáÕ?ìk¾?í·?ìá[?ìgË?ìc)?ìΊ?í$á?í?ì»?ìU‘?ì>?ëê·?ëæ„?ë© ?ëZ?êâT?ét¡?æî?å9 ?åbò?å`?å ?åö?æôy?ç-‡?çv_?çØõ?è<Ù?è¼9?èöi?è¾æ?èl?èK?è?ç*y?åã ?å¨?æ†ß?ç,D?ç8(?æÆ»?å´?äy?ä‰?䧛?å1?å3²?å?ä’¹?ã)/?á^7?á/s?â°£?ãÔÊ?ãÖ×?ãuñ?ã6å?ãA?ã8?ã2 ?ãñ?â»?â\»?âSŒ?âD¦?áç®?áO8?àºÿ?àÁŽ?áNK?᜻?áS.?ট?à:$?àzÐ?àîú?á›?áÄ?à¶s?àP ?àÔ?ßã\?ßvË?Þ¸%?ÝìO?Ýo-?Ý‹-?Þ9%?Þßs?ßô?Þû?Þ‰?Þ,?ÜŽ†?Û_Ž?Û¢ü?ÜØô?Ý™º?ÝU+?ÜÍ‹?Üáa?Ý>ì?ÝAF?Üü?ÜŽþ?Ûß7?Û‚ú?ÜN?ÜíÎ?ÝLc?Ý“?Ü?Û_û?ÛŸí?ÜÐ"?ÝåÆ?Ý´f?ÜÅ?Ûï?Û@»?Ûz?ÛRi?Ûm÷?Úå–?ÙÇ3?Ù?ÙÄ?Ús?ÙçÈ?ÙZÒ?ÙY?Ù)?Ùÿ˜?ÙéÕ?ÙmF?Ù„?Øõ_?Øðt?ØüÄ?Ù¼?Ù0?Ù;¯?Ù?جa?Øvj?ص?Ù&„?Ùý?ØÑ4?Ø¡˜?Ø„X?ØV±?ØS?×ô ?×Ͼ?×£\?×…Ê?×mÒ?×1'?Ö²V?Ö n?ÕÒí?Ö ?Ö"ý?Ö±?Ö$0?ÖJä?Ö8?ÕËÿ?ÔFÞ?Ðs?Êìo?ÊWú?Î*}?Ñ‘?Ò³À?Ô (?Ôª—?ÔX?Óã£?Ó§n?ÓB?Ò/M?Т'?Ϫ$?Ïéa?ÐÛY?Ñ×Ý?Ò‡Œ?ÒÌW?Òš_?ÒÉ?Ñ°'?Ñg¯?Ñ §?И?К”?Ñ/?Ñ`=?Ñ?Ô?ÐàE?Зä?Ð~Š?ÐL«?ÏÞÞ?Ïf?Ï ?ÎëN?ή¨?Îe4?Îò?Í°ë?Í~ú?Í.?ÌÌÈ?Ì^å?˱?Êûƒ?Ê«?Êž?Ê•‹?ÊŠç?ÊY?Ê¡?ɱv?ÉMÞ?Èó|?ÈØã?Èý6?ɧ?ÈïL?ȨÊ?Èx¨?È™ ?Èè1?É;x?Éx?É?ÉJ?Éwu?ÉK?¯¶ž?³y2?¶%$?¸';?¹Œ[?º`?ºã¢?»-Á?»QL?»d¿?»b?»dL?»y?»jZ?»,Æ?º¨Ü?º‹ù?»CÌ?»ïþ?¼$W?¼ ?¼T?»îý?»»ð?»˜ž?»žU?»¿]?»É9?»‚~?»-’?» 9?»T.?»œ?»çê?¼"î?¼?»·?»yì?»}?»}µ?»g -?»9ò?º^í?¸ô™?¸L§?·?±$z?§ð?£ö@?§Î?®X?³Êc?·‚$?¹ Õ?¹ª»?¹Ûß?¹ˆb?¹‹?¸Þ2?¸¬Þ?¸`?¸¶À?¸þ“?¹ ¹?¸‘ ?·³?·3?®Y„?®¯…?¬ü?¨5º?£2s?¢Ð§?¥Â?¨?«ª?­Ï{?®Ïê?¯ š?¯¼?®%»?­"`?¬èV?­)4?¬ÈÂ?«W -?ª!z?ª±P?«œˆ?«ù ?¬QF?¬~?ªFB?§®O?§™ª?©Ò‡?«o?ª›K?¨^‘?¦:h?§V -?ª"}?«¸?¬ÿ?«?§”N?£ ?£#p?¦ñ"?©X?©Èñ?©±?©êÉ?ªS?ªGÇ?©Ë?©‚¤?©x ?©b?©7ç?¨Ô÷?¨?N?¨ì?¨Pš?¨IŽ?¨I)?¨F'?¨J¤?¨†Ñ?¨Ú•?¨êH?¨‹¹?§ãå?§u¸?§Ÿp?§õL?§óa?§{d?¦óß?¦ëW?§"Ý?¦ìo?¦}Ž?¦z?¥†â?¥„?¤à}?¤ðQ?¥wå?¥æ?¥å?¥ŽŸ?¥/ƒ?¤åê?¤¼²?¤¥ò?¤ ?¤•?¤lE?¤Se?¤Yì?¤G ?¤3?£Èé?£§¯?£L©?¢)?¢ð?¢ƒ?£(?£!?¢¼°?¢†ƒ?¢¥?¢Ãÿ?¢Óí?¢Þ¯?¢Ä•?¢mr?¡¿Á?¡4æ?¡?¡A?¡—û?¡«¯?¡D›? â¯? ©è? xn? [õ? +Õ?ŸÄ!?Ÿš,?Ÿè ? $0? ›? ? Ú? "Ø?Ÿ×?ž¾5?œ°?™@v?™é?œÜm?ž‹a?ž»Ÿ?ž[£?žö?õu?Þ¦?Œñ?S1?l¸?™¯?”¬?r‹?x#?‘i?…Ë?' ?œˆÚ?œv?›ïn?›êB?›¶?šþç?šÊ¬?š€Ú?™Çu?™™_?šXl?› z?›;½?›NM?›j?›]?šÌ?™µE?™Á?™ua?™ŠÊ?™Cú?™8à?™QŠ?™z‰?™”?™”4?™›0?™T)?˜‡á?—Ëa?˜ã?˜É¹?™¥?˜‚F?—q?–ª²?–ç¹?—š9?˜?—åý?—¹×?—¹ ?—…q?—=!?— ?–ý?—^?–ß”?–„?–ª?•Òü?•î ?–:W?–ì?•¨®?•?”Ÿ?”³j?”Öê?”\ß?”#A?”¹‡?•/?•/e?”ÿ‹?”Ã?”€á?”-Æ?“ƒ ?’Ò·?“Á?“–0?“Æ—?“µ?“·#?“¦È?“dÁ?“W?“†Õ?“‰¬?“)Z?’Ä?’™/?’)?’™l?’¥A?’g?’l§?’rd?’–h?’z‡?‘ç‘?‘š?·?‘x?‘Ø-?’]?’z?’e?‘ä(?‘ko?W9?ŽÙg?ŽÞY?þ¤?¼?ª'?2?“€?»?âÃ?þ¨?€®?ªõ?n†?îp?{À?–}?Mð?ð®?¶?Yu?l?£×?…ê?ŽÀÚ?ÄZ?3ß?Œí?ŽJ?Œ´?J?Ñ?Ük?Šë?NB? M?Ž­*?ŽPü?Ú ?NM?;£?h0?sl?~p?}û?eO?Xw?[q?L‘?1g?0?D?6½?ý?ö?Œá?Œ¬Ñ?Œgº?Œ?‹×¢?Œ¡?Œ;t?Œ.Z?Œ m?‹ÖÓ?‹”³?‹hû?‹hÕ?‹L»?ŠÄ-?‰üý?‰ëN?Šy¡?Š±v?Š±€?Š±?Š—m?Šlz?Š>°?Š"?ŠÈ?‰ýñ?‰û\?‰öV?‰å:?‰ÏV?‰µÓ?‰”©?‰]ý?‰/?ˆ½?ˆ!ž?‡lÐ?‡~o?‡ŸÇ?‡ ?‡§?‡ä?ˆ7¶?ˆ;È?ˆ9ù?ˆ+×?ˆ ?‡Øô?‡ª?‡‰~?‡ƒø?‡Ž¢?‡|?‡Hê?†ÿ?†-©?… ÷?…fÝ?†P ?†¤ ?†®3?†ž=?†w‹?†^š?†28?…oÊ?„[F?„dœ?…=Ê?…®´?…¡õ?… ?„Ž>?„ÕŽ?….Æ?…5×?…?„ðì?„Éw?„Α?„ï¯?„Ø©?„€[?„6K?„Lv?„ˆ¨?„n#?„F?ƒûZ?„-?„3ÿ?„7Q?„#Þ?„I?„Ñ?ƒ7?‚ì1?‚û~?ƒI?‚¸‹?‚4Q?Àµ?¯–?‚ --?‚#?ý«?á¯?o´?€Ð¼?€³N?€óÛ? ?©?ß?€úí?€–Â?ô¿?½Ð?€3f?€wX?€_?€©?€Ü?°_?ø?~å?È?0Ð?~þQ?~€s?}l‡?{ý5?{¿“?|¨?|ö%?|å3?|Ý?|ûA?|¾ê?{è?zõº?zQ ?y¸?y·M?zg¢?zº‹?zä|?{,?z’N?y½‡?yFç?xñ?xƒÌ?x8>?xh ?x®?xº¥?xGZ?wË^?wˆß?w)š?vëÝ?v-?sø'?rµƒ?tU?uMl?uA?u&?uâ{?v"k?uŒ9?t²C?tYÒ?tI?t¬?tèœ?tµÑ?t‘R?tO?tR?sÇ¿?së}?sj`?r¬Ÿ?r}6?rx?r%?p”ð?k>¿?f®ë?j3?n£M?o’â?m£]?jÜ3?k_?nIÔ?p ù?pˆp?plÂ?pW&?p<?oYí?mÛV?lS?lz?m@?lÏ~?lf?l0?lËŸ?lß?l³&?l±5?lŽÓ?lö?lˆÌ?l $?kd›?j~%?jb?jÈb?j¬‹?jÂÚ?j‹ú?iÙž?i‹“?i|D?iAE?i`–?i?h˜”?f¾Â?fƒ«?g‹à?h!?gø)?g§‰?fõ…?fK´?fÄ?g\f?gV}?f{³?f,?fUÊ?f‚Š?f…+?eÓä?dù ?dš½?d-‡?ca?d@?erV?e¿2?e@g?d¤‘?dv©?dSä?dU?d¬d?dŸã?dá?caÓ?b‰^?bAè?bÍ?b÷ù?b•™?b\g?bU‘?br?b -à?b’?bù?b -?ašd?aFq?a^c?a^¹?a1?`º?`X–?_âƒ?_nÐ?_X¿?_Nò?_N?^éf?^xú?^æ?^`ø?]†O?['?W!™?UË,?XöÊ?\Ä?]m ?^2Þ?^‰!?^‰ž?^ÑG?^¶é?^$?]`?[d€?XÔ4?YÉ,?\‡½?]µ÷?^ v?^"É?]}Ï?\Ûò?]?]§7?]¢?]–i?]rÉ?]Pè?]šÑ?]ŠÅ?\«¥?\ ®?]>?]Ô÷?]ñ?]\?\XÀ?[z”?[¨‰?\?‰?[Õ?[[]?[|?[Û€?[ßÚ?[Ó]?[‹Š?ZË?Z}ò?Z¢?ZqÆ?Z2?Y¥Ü?X?WJ?W±@?Xk ?Y $?YY~?YQM?Xùo?Xàå?Xýƒ?XͶ?Xh?WØ‚?VZø?TÙ?U w?U¥ò?Tè†?M•§?9ʵ?0£Ö?BZÛ?Q=ß?Ss8?R?QÙj?RR?PÌË?MÖ»?Fiþ?;C¤?>#Ø?I\M?K‹*?AÌâ?=\]?E½C?Kö?KÂ/?LŒù?NÄD?Oýi?P t?OZ¶?NC?Mê??N…Õ?Né -?Np„?M¦?Lâ°?JÎ?Iq3?KHÃ?K‘å?I…?Iõz?LeJ?Mi¶?M¯Þ?MäÕ?L¡Ž?L§?M!ö?Ml?Md˜?Làÿ?J q?Eó?E;´?Eþ“?E$Ü?E»Ô?Gƒ?Gÿñ?HÄé?J+7?J‘«?IŒù?F­?D²C?Dƒh?DW®?D1?C·u?C¯n?Céí?D%ò?D=[?D ¬?Cë·?CÅ„?C`ÿ?C5Å?B®Q?B(?AÔä?AȈ?=½ º?>À`?>£‰?=í®?=º'?>g?>‘ ?>dö?>!&?=¾Ú?=¥Ô?>=?>TÒ?=¤Ä??4t ?3ß™?2Jf?0à)?1ê?1ÖB?2k¤?2ôZ?2ö9?2VŠ?1Í{?1¹V?1Ö*?1yœ?1fn?1cÖ?1'í?1[?0ð¼?0“s?0sá?0B?00Z?/á§?0E?/í;?/o?)þ,?)ÅG?)¦ó?*¹?*°j?*E‡?%R|?§z?íé?|¦?,²?³? Kå?"þ’?$ç7?%­ï?&M?%ûù?%’Ÿ?%“?%ŠE?%†:?%+ï?&?%Ðè?%?#Ó?#•ó?%…1?&Ö?%žI?%‹O?%[u?%§?%·?%§?%ÍÝ?&T?&Vè?%Ìý?%ð²?&O?& ò?%ÍÚ?%•?$¼R?#Â\?$H¡?%ó?%Ș?%l„?%ï?$˜?"“q?ì?]?Å?#až?$Úå?%.U?%z ?%º?%–B?%+P?$Ò×?$•?$¡Û?$ïò?% ?$dv?!g;?ðû?/K?!Èý?$C(?$y?#kq?# ï?#^ó?"[?"gs?#™Š?$bˆ?$’Œ?$Uf?$¬?#ÊB?#uå?"º¨?!Æ«?!­ª? þ¤?u? -G?!&þ?"•H?"ªu?"f—?"8)?!ØÞ?!`ô?!@?!aä?!½M?!É ?!”^?!u¤?!Q—?!? Âj? àh? ¾i? ]? 4? *ó? µ? ˆ¦?î"?œ ?¿d?¹÷?ø.?yµ?§M?±^?†?d ?®9?l‡?’?Œ=?R??yç?ƒ?’?õ!?åÝ?Ž>?û?¼?DB?² -?€‡?–Ç?iÚ?²p?¥!?®¯?™óü>Ô…O>¾ï¼>Ó~³>óGá?´,?«Æ? -Ôæ? à?\°?³Þ? T?? b"?Õ?±a? Çu?¯?yc?þI?X¡?¡c?Ä[?ÁY?œÀ?Wê?“‘?š–?#?ãÿ?;I?|?¬ ?oœ?àÊ?˜¸?«›?Û„?TJ?¤?Áë?Û‰?®8?l?Gï?a?«6?‹À?Ó?Ôc?²2?å*?D?ª??gh?^ -?4Ç?)?aÝ?{Ç?[F?g7?ó?ÎH?¤ê?ŠÃ? â7? jU? |n? *õ? O ? Á? ä`? `X? þ? d¹? ·6?¨J>üªG>õ®Í?[œ? ÅÅ? Ü‘? ¹¼? ? ]Y? ÿ ? tE? (w? -ñ? @? ? -3M? q9? wt? ó? -2­? ó>? §? b†? >5? ×?Ãõ?þ0?g¹? |?‘#?fú?R”?‡?D?è -?òö?#¹?2µ?ÜÈ?Ïn?üi??ÿÚ?–¥?C!?‡W?^Ô?Ìõ?L?ƒ?‡A?¹î?ÇŠ?¾å?³Î?¾Ñ?Àm?Ò/?ôE?$²?^æ?Ø?÷:?Á´? -?÷c?¿3?x7?DÓ?ýU?Åì?Ô??Ýq?âê?Ób?Ý,?‰ü?Jº?âe?Ù7??­?¤?»É?Ø??vi?N½?ge?d ?¥?ï_?ǯ?›g?kf?D~?8v? ”?ÔÆ?òÍ?^?ïX?©?yH?Šs?•²?‹Ž?kÝ?4…?&è?*?T?>ÿÏ·>ÿŽ >ÿ/>þ¢>þ£ã>þwE>þ7>þ7G>þ<`>þ Ù>ý n>üÝÔ>üØM>ý":>ýÂ>ý>üÑÎ>ü–>üGÝ>üB>ûøÝ>ûÐS>û»+>û™Á>ûi­>û@Ä>ûå>úïÆ>ú¾Ÿ>úƒ7>úK>ú°>ùžª>øÃ>ø¯>øá¼>øçÉ>øÙˆ>ø²:>ø‰ñ>ø]–>øˆ>÷†>ö®U>öÜ>÷ö>öô‡>öþ>õ?>õ®š>ö/Z>öYî>öGR>ö>õï+>õ¤>õ—÷>õk°>õ9Ê>õ`>ôÙ>ô¤ë>ô; >óçt>óêg>óà >ó¾ >ó¨Ó>óˆ£>ó3_>ò×>òÍQ>ò×¥>òus>ñðè>ñú">òx>ñ’ >ðæ²>ð€=>ð?;>ð'Š>ð¹–>ðÃÅ>ð« >ðà>ð/I>ïÚ>ï©€>ïá†>ð ²>ðHø>ð9>ïLÔ>ïÖ>ïÛ>ï->îtq>îJ­>î~¸>îˆ]>î½^>îÕ÷>îuš>íÿô>íú >í—ø>í8->í>ík>ì°>ê©Ö>éG>ë>ì–N>ìÿ>ìð.>ëc2>鎇>êg|>ënr>ë-é>êï°>êZX>êmÇ>êŠw>éW§>è0>è!Ç>çG<>æU>á?³>Ó°‰>ÔÚ>ã*Æ>è v>è«y>èjC>è ->ç©Å>æQá>äÑÕ>åº>ç,>çEÐ>ææ’>æe>åPl>åÎF>åýE>埩>åÁ¾>æ¾>åÓç>åý>å^>å-ê>ä™.>ä%º>äH<>ãÝÐ>ã²å>ãàÃ>ã¬Æ>ãƒÃ>ãï>â¥>â¸>â·¢>∱>ât½>â-M>âR>â>áÑ>ánø>áO=>áÅ>àèÞ>àÁ>à•2>àqÂ>à@ˆ>à>ßçš>ßÀò>ߎ!>ß ñ>Þpz>Þ}©>ÞÓÚ>ÞÅc>Þ›¼>Þrä>ÞMÙ>Þ4À>Þè>Ýí>ݹë>Ý”u>Ý„±>Ýq >ÝY<>Ý@d>Ý&©>Ý -·>ÜÛs>ܵ >Ü•“>ÜÖ>Ûe>Úî >Ú˜>ÚB >Ùø¥>Ù¸¶>Ù€è>ÙJ€>Ù [>تP>Ød¹>ØUÕ>Ø(^>×þ>×Ü->ׯd>×~N>×L€>×z>Öíƒ>Öê²>ÖáÕ>ÖTB>ÔáÔ>ÔóÓ>ÕeV>Ór±>Ó2 >ÕŠ>ÕbÈ>Õ5ç>Ôé³>Ô¹ >ÔÏÁ>Ô»¸>Ô}>ÔJg>Óï¸>Óà>ÓÜF>Ó¿>ÓW>ÓW.>Óµ>Òëe>ÒÇÑ>Ò¡M>Òv9>Ò@þ>Ò }>Ñç>Ѩ×>Ї¡>Íð>Κ>З‹>ÐËß>З5>Ðk>ÐAÚ>Ð>Ï׈>Ïšö>Ïjf>ÏBØ>Ï -Ø>ÎÑa>Δ+>ÎF>Î>Íö;>ÍÈÐ>Í‘¡>ÍvA>ÍLx>Í>Ìé7>ÌÀõ>Ì¥Í>Ì‚>Ì\(>Ì5Ø>Ì -t>ËÛ>Ë­±>Ë{>Ë?Ð>Ë Ø>Êë>ÊÄ>Ê—û>ÊmY>Ê>x>Ê ©>Éà>ɶÓ>ɉ5>ÉRN>Éx>ÈùG>ÈÝ¥>È¿m>È>ÈT >Èì>Çöt>ÇÓ<>Dz•>ÇšD>dž >ÇT >ÇAÉ>Ç5–>Ç`>Æüø>ÆÛê>ÆÎG>Æ€>Æ!>Æ;>ÅÛ>ÅS_>Å­>ĽØ>Äל>Å &>Å1§>ÄíA>Äì£>ÄÝa>Ä3>ĵ­>Äqæ>Ãî±>ÃÒe>ÃYŽ>ÂàÊ>ÁÎ>Á>,>Áiß>Áš·>£>ÂX>Áåx>Áƒ×>Á#Ç>À¹³>À`¬>¿K°>¿ð™>À×>Á>ÀÂÛ>¿Ùw>¿µÊ>ÀPé>À¯Ë>ÀÉ%>ÀšR>¿&>¾åù>¿/Ì>¾Ýº>½K‘>½ >¾.˜>¾Ÿg>¾›ÿ>¾)¿>½’ù>½ …>½C#>½Ð>¼Ä!>¼Å>¼i>¼HË>¼Fô>¼*ù>¼Ú>½O>¼ƒ–>¼ ô>»Ÿ1>»yz>»àœ>»Ày>º÷>º­1>»y>»$9>ºAá>¹»t>¹…9>¹’ì>¹­Š>¹žä>¹¢â>¹˜ã>¹5¯>¸æ>¸•ñ>¸5>¸~>·ý>·Ï‰>·œ9>·7>·}Û>·J>·¬>¶õI>¶æØ>¶Å…>¶œ>¶s¸>¶J>¶þ>µÛ•>µ›¹>µ`>µA­>µ»>´û>´Ü>´³>´‹ó>´\w>´(>´P>´K>³Û…>³°>³x‰>³[’>³Q™>³;X>³¸>²ü>²Óè>²ª•>²…f>²_ç>²7b>²Õ>±äÑ>±”u>±%ý>°Æ ->°Š^>°Y>°r>¯ë>¯ÿp>¯ç´>¯Å>¯¦ã>¯‚`>¯Z¹>¯3<>¯©>®øF>®Ù>®¾>®£¶>®‚d>®]4>®Ch>®/^>®>­èË>­¼j>­ˆ®>­IQ>¬ûå>­²>¬úZ>¬Óx>¬µ0>¬–X>¬s½>¬Gî>¬ >«ò”>«Ê">«¨œ>«‡>«X¶>«({>ªë¦>ª•>ªYæ>ªkF>ªZE>ª/ý>ªá>©ÜQ>©¾/>©yÂ>©*2>©%¡>© >¨©Q>¨bï>¨g!>¨?à>¨)>§ÄÂ>§ˆ>§q}>§\C>§E†>§6Ô>§>¦æÐ>¦Û³>¦Ô7>¦½´>¦¼ó>¦Íl>¦¹M>¦“y>¦t+>¦S=>¦9Ú>¦'>¦ >¦’>¥¤Ž>¥OÇ>¥ô>¥*->¤ëC>¤®>¤Ïå>£-•>šwÅ>“˜0>’Ð<>œ€[>£»¨>¤Éô>¤‘V>¤Ú>£ŠÔ>£c‰>£ts>£8>£ä>£ />£…4>¤:)>¤ds>¤¼Â>¤Ç¿>¤o >¤¶>£Ùx>£‹ô>¢Ô·>¢*>¡ˆø>¡' >¡”#>¡uQ>¡Wˆ>¡"g>¡"Í>¡²[>¡Þ>¡ÎC>¡p> è> »Œ> <Õ>Ÿ2m>øà>®:>ž›>žˆ«>Ÿ.Š>Ÿ˜ >ŸšG>Ÿ¥{>Ÿæ]> \>Ÿ”±>ž×>v ->œw‹>q>œr>œý>›B>>˜Êð>—Äp>›å>›©ï>œ¥>›ô9>› p>šÃë>›&…>š>—ø8>“>•®Á>šž>˜?¶>—l>™æ#>šÇ>™š>—¼ø>™9¤>™à5>˜Äâ>—1å>–Tï>•gq>–už>•ƒ>•äª>”“>”õ&>—VÎ>˜—>™FŠ>˜´>˜k‘>—Ì…>—s|>— ®>•Ð2>”Ã>”Ë>”$P>–mà>–\†>•ÿ>“Ò®>’®î>‘áé>“z¤>”Ò€>”´ª>•k÷>•ÇA>–#>•æW>•¼>”×R>”WÂ>“äÊ>’Ǩ>“]w>”Áë>”Ü€>”Ûô>”·r>”DÔ>’Ä>Ö}>‘d>>’Åë>’bØ>ÁÞ>‘ëŠ>“Ÿ™>’J/>’At>“€>“`“>‘μ>Þ>Žÿc>lã>ÊQ>¿Í>’š¸>’5Ã>å>é^>‘0ñ>–å>¼ú>è>·>‘=‚>‘»<>‘Zî>Ê_>¶h>f=>ñ>ŠL>}ž>zÂ>‰>Ê>ëÜ>,«>½ý>Ô>{>ŽÂ&>Ž¶{>Žzï>Â>ž$>ÚŸ>ÛŸ>¡Ê>>P><>Ä>7>ŒàÍ>ŒÆŽ>Œ§K>Œ‰Œ>Œw;>Œ[›>Œ)¶>‹Þˆ>‹¼|>‹¾í>‹¥ö>‹‘>‹ƒÆ>‹f >‹Vç>‹Fa>‹)û>‹Z>ŠÎ>Š¬Ö>Šœù>Šs >Š_˜>ŠO>Š6|>Š§>‰ùR>‰ÕÙ>‰—_>‰Xq>‰R>‰Mñ>‰9V>‰!c>‰ ->ˆêæ>ˆØE>ˆ¹ø>ˆš >ˆ€=>ˆb¸>ˆ@:>ˆx>‡å¾>‡³>‡ªº>‡”>‡’Û>‡‚ >‡Wº>‡8š>‡)ë>†û>†¨þ>†}>†ŒF>†’•>†jæ>†2Ö>…›>… >…`J>… >…YÇ>„ظ>…#>…Jr>„ܤ>„t‰>„ì>ƒ”Õ>ƒI/>„8œ>„dÝ>„4ã>„Þ>„u>ƒö>ƒ¹Ò>ƒ¾>ƒ·V>ƒ–U>ƒoæ>ƒXb>ƒHÄ>ƒ5;>‚íÜ>‚Ò²>‚ô>‚æ>‚½>‚‰À>‚3ž>‚^˜>‚4è>Ö>Š>ÈŠ>‚V>‚Ð>¬Ì>|*>Cq>.>?>€º“>€äÈ>€m’>€WÎ>€’ö>€“z>€qÊ>ª\>¦>€*>£®>|Ò>k¥><¯>†«>2í>~cÈ>~ É>~5 >~.>}=Z>|¥s>|-‰>{2ƒ>z³Ã>{€>}'R>}j>|9ê>zþé>y˜[>w÷±>xy >y®í>z¿P>{pá>yv>wß?>v>u¿„>uÀm>w_K>yº2>z2>zš´>x®b>u³q>s;>qÂÅ>qÙÖ>sù{>w¨>yW¾>y•Ý>wkq>sQ¦>pBÆ>kÓ1>jL>jŒ}>lˆÍ>ožˆ>sø¯>ya˜>|6û>{Š0>yÑy>w•Í>sù&>p¿>kxÿ>d9V>c¹á>i¾v>mÔâ>cÍ÷>Và>m¾ñ>za¤>z^->yB>w.>sÞL>nXw>hsP>aÖ³>Z¢ï>[Wý>bN±>i·ã>owÆ>shf>v >wºú>xµ>y•>z">xØ.>xÈ(>tôO>n¾)>h…¶>b~–>[Kg>Q¯c>P1>X`¤>`ÜM>h -š>k8T>lõ >q=–>td>u1 ->uHU>v >vBœ>u܈>u/>rË„>pO«>m@…>hËf>bÙ>Wt>Jž¯>B¾+>C×_>NÝõ>Y >ahÍ>fÄ1>j¥*>mÁÚ>p>r‹">sÃ%>tðt>ugX>uZ'>t³$>s{>rô—>q×D>oh×>lÖ‡>kzd>iôc>eþV>` >YpW>Q²x>EZê>9PO>I >T ¤>]©>cÙ@>h÷þ>kQç>lüZ>nv4>n°ù>m±6>n0¦>oÆÄ>pkƒ>qn>r(s>qkµ>pzð>r9`>s–>p`'>oˆX>n~Ó>m0>l´>jôS>hEÉ>cì>]ì¤>XÊ0>PTF>B¯¿>3ÐÔ>-û>9m>HQ>S0%>Zà¤>`v,>cß\>aõC>añÄ>do)>gÛ>kzƒ>oœm>oÕ…>pa3>pèÂ>pÆ>oà>or³>mˆÁ>o«n>plˆ>ogn>m5Š>n/Ù>oV(>n_@>noÓ>p_Ì>o^>m_>l/>k=h>jd·>hÔ>e–!>cK˜>`Ó>[®>Sè‡>I¬>;QK>+n>*öm>:§¹>I/‚>S!¤>Y±>^ËX>bÒ>f–0>hº#>ij>i^ª>iö>h›‘>gÞ >gÉÎ>ie>ks›>lÓ>l½è>lL«>m˜>mF±>l¥«>kän>k¤>l n>kWå>kOÇ>k–t>kX1>kÉ¡>lvó>kQ>h½>b*“>eœ >i>išu>i6q>gÿÎ>g,>glé>f«£>fO}>dB>bT>`þ¬>_-ò>\Må>Y60>Už>OC>G¤‹><·ý>02å>*,,>4q½>A9ò>JpÌ>QÛ>UëI>Y7]>[pÁ>\o>>]¾ý>^öZ>_žó>_ï>`“>`G6>`Y«>`W]>`M›>`G>`1}>`r>_öÁ>_ÔG>_^Ê>^žá>_£>_:Ö>_Ü>^êí>^Äo>^CÑ>\±#>]£>]¤ä>]»>]bÿ>]F >]]}>]9Ô>] è>\Ûƒ>\¬·>\L>\Nj>\«>[ìþ>[½">[‹ >[Uä>[ð>Zä–>Z·>>Z‚[>ZH5>Z 9>YÇÝ>Y†?>YCW>XõÇ>X¦>XFÂ>WÒð>WQj>V›>U¾³>SÍp>RÖÈ>Q¤_>O{>Kø>GU>@’*>8Š>-`&>(ÿy>1Šé>;H>BI >G´€>KŸ>NG†>Pü>Qa°>R-—>R®¿>S÷>S:^>SYV>SG(>S2`>SS.ò>S<«>S*I>S -é>R„¾>Pšï>O½>QÁ:>RZ>R$>Qõ2>Q­C>PÞÜ>Pp>Q¹>QM >Pè¶>PqO>Oüß>POv>OÂÄ>Mq‹>NÌÜ>OòÓ>O¢>Otý>O‚>O_ >Nü³>Mæ™>N1®>N¢’>N…>NP2>MŽ(>MWd>MÃ%>M¨¶>M8Q>LiA>Lß'>MÛ>LÛÉ>L¬5>Lƒ>LWþ>L7>KÚ}>KÌR>K™>K3>K &>K­>Jñ¶>JÊv>J›¤>Jlõ>J/g>IÖê>Hê>H>H>HÀ–>Húú>H•æ>GÁS>H›>H,Ì>Gè~>Gef>GÝ>FÖ€>E…¤>CÒw>D¾O>D.>B?È>A~G>@v1>8Ý>6 ->0B™>( >¡›>X>#U>+þ>2­T>7¸ê>;]÷><•Í><(3>?¶O>ABœ>AbÖ>AÀ·>BGA>BT¹>@}×><ÆR>=Šº>=¹H>@˜Å>B*?>Aýd>Aõç>AñE>AØ[>A¶´>A‘÷>Aq³>A5¦>@×Ô>@žR>@ÈŠ>@z<>@Gf>@H‘>?¯z>?tÑ>?ê>?Ý>>?±>?ƒv>?]o>?=™>?°>>é,>>¦!>>7,>=òƒ>>0¨>>«>>Ç>=Ú{>=š~>==w>=Mz>=CV>=ö><ò><Ð><©ò><1L>< $>;á>;²ä>;”®>;dw>; r>:õ1>:èü>:Д>:§G>:wÃ>:š>9ö>9ää>9>>9y²>9šo>9va>9L¹>8´p>74>7ê©>8'*>5ë>5ÔG>7Ó±>7á£>7á’>7¾?>7”t>7m>6¹ã>6øö>6ì‘>6Ä>6£±>6‘æ>6g…>69@>6 è>5ðI>5Íe>5¦Û>5‚º>5X€>5å>4›s>4)Ï>4“8>4’ù>4nð>4F[>4º>3ø×>3Ëù>3m¬>35Ö>3Fý>3$,>2ìó>2§Ô>2š>2b¨>24‡>2>1×)>1ý>1<½>1k>0÷2>0CX>.Õi>/ˆ >/œ->.ýý>-‡>,°õ>+ûh>*¯˜>(qu>%b‚> çb>ËW>‡F>á^> -µ‹>]0>¡Ð> ÿ¡>$Øå>'€|>)B>*p[>+:ö>+»Ð>,D>,A±>,_ž>,|>,‡X>,&>,t³>,f >,Vq>,8‹>,æ>, {>+ñ‰>+ÁG>+º>+:°>+2í>+T`>+7U>+ø>*ÿ‘>*Õ>*">)÷«>*õ>)í>)Ѐ>)±!>&ðÙ>'O>)tB>)‰÷>)hu>)EÌ>)#>(þ>(̳>(­ì>(Ž¯>(>1>'†‰>'¾s>(O>'Ô²>'·>'–G>'gù>'V>'8>'!>&Îã>&Å•>&©ú>&†…>&d¦>&8>&>%î5>%Ð'>%¹Ò>%—©>%r©>%OÙ>%/D>% ³>$êÕ>$È">$¤ò>$]>$Zc>$8Š>$>#Ý£>#Ô^>#´ >#Á>#hÙ>#:œ>"ØÌ>"ÛM>"á…>"Ãö>"¢0>"ÿ>"]L>":¦>"Y>!÷L>!Ô‹>!±>!|>!o0>!Lf>!%õ>!§> ÛÝ> À¯> ”> ]á>ÿ ->âó> 0>éÈ>É_>¡¶>í>i(>.Ö>ƒ>çÙ>Öv>Ä&>§–>,>9o>Øv>êü>‘¯>ŒÞ>—[>q(>?Z>å >úb>õî>ÞB>´Ø>·>Q†>$N>>>ì>®½>bñ>\à>L6>SI>'3>â–>¼¤>´*>]>Šý>°>.¤>*>ÍÚ>>FG>„¹>D>úÞ>H >0>H>ö¢>Ê>™0>>r>&Ä> Û>@>Š>ïÎ>Í©>Ÿì>tq>ø>ï >%Ñ>>í~>ǧ>ª·>|ì>VÇ>Iû>*j> -Ì>êÇ>Éé>¨Â>†É>a±>4‚>>þ\>ÙÙ>¦z>Dà>KN>>C>>>æZ>Á >‘h>[¹>$>Û˜>‘b>?à>°±>@Ñ>ì›>j”>§Í> ¿> -»Æ>në>åä=ù1†=ç< =å‹=öxF>‘H>Ç> .> _š> Ú³> ÙÇ>‚S>ïÔ>&@>ßä>/^>¹>˜>—C>Œì>~R>p>^>J>4­>Þ>ìr>–>={>h˜>l>B>\W>B×> Ë> £?> å@> Ñë> ¾½> £-> YE> ê > 2d> /}> —> év> Øé> »K> ˜+> > f> Eµ> ³> ª> ð_> ÐÔ> ­ñ> —‘> zì> ]Œ> ?¤> #›> Y> -âÌ> -ÌÃ> -®V> -V> -u{> -Xî> -;¯> -%> -µ> áý> ÆŒ> ©'> Šá> oî> R¢> 5É> >úù>ß—>Àÿ>¡:>†‚>i„>C >&×>>ù9>Úò>µ@>ž&>†1>iï>MY>0•>ò>öØ>Ú>¾I>¡ï>…o>i>K®>,Í>ã>öW>Ù>¾¦>¢s>†&>iŽ>'h>æÐ>J#>ñ'>Ü[>½ˆ>¢`>†a>l>CS>û„>³>ü>à°>Ä4>§Ó>Œç>pç>TŠ>9_>Š>>Ýz>·>šè>‡C>v ->W¥>:> A>^>êÆ>Ð^>µ[>‘«>_z>U>GÖ>+¹> á>ð·>×b>·w>¡º>ˆ”>l?>P¬>46>_>=ÿËò=ÿ•˜=ÿ_=ÿ(ƒ=þî°=þ»Å=þ‡,=þOJ=þ0=ýä=ý¤Œ=ýN!=ý 0=üê§=üÄ(=ü—µ=ük­=ü2¶=ûîÿ=ûÄš=û“š=û`ç=û+.=úö3=ú¸Ç=ú„=úO =úÇ=ùí&=ùµ6=ùR´=ù =ù›=øºC=øš(=øfb=ø+=ø ”=÷¾9=÷p~=÷d4=÷7Å=÷ Ö=öÔ=öš=öe =õæÿ=õº=õÅÓ=õy =õ>•=õ -=ôü:=ôÈ=ôŒ¢=ôYì=ô7=ó÷‹=óÈC=ó“á=óX‹=ó$ =òóU=òÂË=ò€=òS_=ò'É=ñðq=ñ¨M=ñ"=ñ;#=ñ"Ÿ=ðö=ð£=ðù=ð]ï=ð*=ï÷j=ïÃß==ïY†=ï)õ=îõw=îÀ+=îˆ=îM%=î+X=íû|=íÈ‚=í’ß=íaU=í1 =ìú!=ì¸À=ì‡ü=ì`¿=ì,=ëó4=ëœô=ëÌ=ëQÏ=ëß=ê!´=êsî=êZ±=èyP=è—w=é¡=çá‡=çØÞ=é`R=éH =é}=èä‹=èƒ,=çºÉ=è=èš=çä=çµb=ç†ô=çY@=ç'P=æÇ=æY=æe"=æ`=æ.Ï=æ=åÎÃ=å–p=åe—=å-×=ä¿ =äWÉ=ä“>=äl=äA˜=ä=ãÛê=ã²r=ã„“=ãTÜ=ã!¤=âò8=âÃ=â«=âRm=â-7=â=áÑw=á™ù=áfX=á?š=á=àÙ×=à«Ò=à~ä=àK§=à=ßèk=ßµd=ß…)=Ýô{=Ò¬¡=ÔNÑ=Þ\=Þ™›=Þi(=Þ8#=Ýõ™=ÝÌä=ݧŸ=Ýw‰=ÝF>=ÝÂ=Üâ4=Ü–=Ü`=ÜI=Ü Ö=ÛÛª=Û°µ=Û}¨=ÛF¤=Û(=ÚØ:=Ú›ñ=Ú`˜=Ú&I=Ùåß=Ù ü=ÙV]=Ù=جŽ=ØG¯=×Åù=Õo’=Д²=ÒȽ=Ô(=ÓA=ÐÜŒ=ÍLj=Ép=Ãx=»H=­™=ªtp=¸‚Ù=Á9=ÇÉ=Êè®=Ì)=Ï®±=Ñ„ê=Òa=Òïé=ÓN =Ó…Ú=Ó­Z=Óºû=Ó»d=Ó·ô=ÓœN=Ó†¿=Órç=ÓOn=Ó.À=Ó¥=Òò =ÒÎl=Ò©˜=Òù=ÒYÐ=Ò2ô=Òó=ÑŠ…=Ñ %=Ñ“=Ñ[¼=Ñ:å=ÑP=ÐäÆ=лÑ=Б@=Ðdû=Ð8=Ð0=Ï€»=ÎåD=ÏO=ÏVL=Ï3K=Ï -ÿ=Îà„=ε=Ήº=Î^=Î0n=Î=ÍÛ¡=ͯ­=Í‚=ÍWc=Í,ž=Í\=ÌÕ=Ì Ê=Ìn)=ÌPÿ=Ì%ë=ËüØ=ËÒ=˦€=Ë{=ËNÇ=Ë#Õ=ÊùÜ=ÊÏ=Ê¢•=Ê`-=Ê9ƒ=Ê!(=Éôå=ÉȺ=É i=És=É1ß=ɾ=ÈôÐ=ÈÉ{=È ^=Ève=ÈK|=Èœ=Çê =Ç®H=Çœ=Çu"=ÇJÄ=Ç«=ÆÅ«=Æ· =Æ™î=Æt=ÆJ¾=Æ#==Å÷›=ŽØ=ŘK=Åx¬=ÅOÆ=Å%x=Äü.=ÄѪ=Ä¥^=Ä{ñ=ÄR=Ä*=Ãþx=ÃР=ì -=Ã=ÃXx=Ã.:=ú=ÂØ—=¢â=Â\>=ÂI;=ÂQ=Á™È=ÁÃT=Á·T=Á|=Á^¢=Á< =Á[=Àêû=ÀÁ>=À—Ï=ÀhF=¾e³=ºcd=¾ëM=¿‰=¾Ÿb=¾@=¾ŠÌ=½¶ü=¾ÅV=¾À=¾I=¾Q =¾R»=¾1š=¾=½Ú¡=½³ü=½a=¼²$=½1Ê=½ (=¼ìî=¼Å¹=¼œ€=¼tB=¼KÄ=¼$=»ô|=»Ã‘=»ª¾=»ƒå=»U®=»,=»’=º¸å=º¦ì=º’x=ºeÐ=º5æ=ºƒ=¹ãá=¹»©=¹£ñ=¹|0=¹PM=¹#å=¸öã=¸Óï=¸±Å=¸†/=¸Q9=¸;Ž=¸@=·ðÿ=·É˜=·¡m=·z=·T5=·,õ=·Ü=¶Ý%=¶”s=¶b¥=¶N\=¶?ú=¶u=µô•=µÍs=µ¦Ž=µÈ=µXß=µ1ë=µ =´á–=´¸W=´–J=´oã=´C#=´m=³ü®=³Ö'=³¯q=³‰)=³bœ=³;z=³†=²ïL=²É=²¢Ð=²|t=²P‚=²Â=²×=±ãW=±½f=±“Ü=±gƒ=±H;=±$˜=°üG=°Ù=°³ø=°Ž=°fC=°@þ=°•=¯õ}=¯Èˆ=¯©=¯…Ì=¯`o=¯:Ó=¯*=®îí=®Åf=®žt=®}ø=®Xâ=®3.=­ïé=­Vu=­¥Ä=­žÌ=­y_=­Rþ=­)a=¬øå=¬?i=¬qó=¬”J=¬M„=¬#=¬*i=¬¸=«â½=«½»=«˜Ù=«nˆ=«Bý=«‡=ªñI=ª¯à=ªp=ªy‹=ªr÷=ª+d=©Ø=©ðþ=©Ö0=©»Å=©–¢=©t=©Nx=©)¸=©õ=¨ââ=¨¾á=¨š¤=¨v‰=¨Rs=¨.T=¨ž=§]D=§Ò=§–Ù=§y}=§S®=§X=§®=¦éÚ=¦Å»=¦¡Ö=¦}Š=¦Z=¥Å=¤!d=¥¹=£ž=¥ =¥ƒ =¥_`=¥:Í=¥{=¤ôˆ=¤Ó˜=¤£O=¤pˆ=¤h(=¤G=¤ =£êm=£Î¹=£¹,=£–X=£d›=£Ev=£-x=£ -”=¢çÐ=¢ÄÞ=¢¡C=¢{i=¢[=¢9=¢ž=¡òÔ=¡Ð¡=¡¨w=¡/á=¡2ƒ=¡DÚ=¡P= ëÍ= Úí= ¸C= —¾= s£= @= +4=  _=Ÿìž=ŸÉ[=Ÿ”­=ŸeÇ=ŸZ6=ŸA=Ÿ%=žôæ=žš=žKa=žv=žq8=žR =ž/ñ=žU=ìQ=Êi=¨Ÿ=†¼=d¾=Bµ=!=œÿ’=œÝm=œº£=œšL=œxZ=œV7=œo@€ß@€€+@€_@€‘í@€ü`@a¸@’D@ö@<¤@€ÚA@€}@€G@€H@€s³@€ªˆ@€Íâ@€Ç@€‚ @€~@~öp@~‚n@~ÂK@4…@e€@fw@†@Û@€=@€)Þ@€  @p#@~œC@}ùD@}з@~Q@~\]@~LZ@}Î@|ñ@z)Ž@x<@wÈr@x1ž@yu@{|@|‰~@}w@@}Ò\@}Í3@}£ÿ@}re@}#v@|‹@{¢ -@z£ã@yóš@yÏa@z+ @zÊZ@{gó@{ó@{²Z@{> @z¯†@zRÈ@z%/@yç€@y­@ygÓ@y¦e@z$ƒ@zy@zº@zžå@zN@yŦ@xÏc@w:@tf²@qÜ*@páª@qü€@t9z@vJ–@w–w@x.D@xV@xKs@x0E@x‹@w@v¶T@u–^@t¡^@t'¼@t¦@sÙÞ@slé@rÇL@r-«@qñ9@r>|@s@së!@tuv@tS@s@r¥†@r\]@rì­@s¸"@tà@s±x@s5±@r¼”@qùu@pÃÔ@o¢@oLj@o±Ó@p:@o±£@oP@o%@o¿|@pô@r ÿ@r¨ð@rÍ×@r¿ @r²Ø@r¥ò@rxM@rª@qY@q @pÉÊ@p™è@p‚†@p˜Ã@pÕ•@q,@q~@pÊ@pb7@o»@nÇÛ@m»J@m$N@mpn@nQØ@nûi@nÛØ@nç@m@lÏ/@m*@m# @l€)@k•„@k>)@kƾ@lšö@lð.@lt@kYˆ@j, @i—’@iá.@j¥ @kd @lµ@lˆŸ@lãÏ@m—@lçU@lÕ@lx@k@i¢ -@gÈt@eÈ @cû@c ´@c{H@dãj@fO~@g3 @g¹v@hè@gÅe@fJp@cÝ @aÛñ@aÄÀ@cª@f`@gÃ@g‘u@fŠ¦@dÓÀ@cÆ@b?¥@bˆ@c8u@c´™@dEC@eX @f­¤@g´3@h1¡@hG@hÈ@g®%@gx@f‚Ú@fHå@f…@fúá@gF»@g×@f>Á@d–z@boÂ@`¦O@_ÿJ@`FÆ@`³@`Á@aH<@b}Â@cǽ@dnÓ@diy@d7Š@dE&@d”@dè@eÂ@e~@dËø@d|¯@d6²@d -©@cÚ@cSr@b'A@`Ì@_A³@_6‰@`(ù@a@aY†@`å+@`6Ô@_¶P@_}¸@_x‘@_{É@_DG@^¸r@^$Ò@]ø@^Y¡@_'@_ÍÏ@`'?@`r@_Ë@_…¶@_ŠÇ@_°è@_‡±@^ׯ@^þ@]²ÿ@]÷L@^|%@^ì¾@_&9@_&s@_\@^ؤ@^—¾@^ @]}ê@\ê:@\WL@[k~@ZN@YßÔ@Zšk@[Û@@\Í@]Nz@]—.@]¸í@]ªZ@]k²@]?@\˜€@\Qa@\?m@\EP@\JÃ@\R"@\]W@\^‚@\GÕ@\Ë@[ÈØ@[< @ZX@YMê@X¡?@X¯„@Y@Jx¸@J}A@J}ï@JeZ@J6@Iô›@IžÙ@IK¥@I$µ@I70@I_r@IrM@Ig€@IRa@I> @I@HÛX@Hq‚@Gÿ\@GÁŠ@GÕM@H4@Gü0@G”š@Fü@F„5@Fmw@F½ž@G6U@GŒ@G¨ª@G@G{Ê@GI7@G -o@FÓx@F¹‚@F¶ã@F­q@F@F$î@E õ@E×@DÆÏ@DÑù@E/v@Ešt@E××@Eå@Eؽ@EÀ™@E¦æ@E” @E‚û@E`>@EÂ@D£å@D9L@Dä@DÞ@D3O@D6Á@D9.@D<»@D-Ó@Cð`@Cb/@B‹@AØ•@AÄÇ@B2H@Bš@Bµ@BŽ€@BCG@BÙ@AöÊ@B9@B'Ý@BÐ@Aì7@A³¤@Afô@A%>@A:@A`@@ú†@@Úì@@ÌÕ@@¨‘@@8—@?¯•@?†@?Ùÿ@@Cð@@YR@@˜@?r#@>ü1@>Î"@>º¼@>…*@>6ð@=åà@={@<ù @<–C@<_÷@<@w@@%0@#¯g@!K@àr@çl@ü-@!Ø@"ʼ@#Šr@#¼@#ª3@#X8@"êt@"°›@"¹ò@"Ë¡@"¸›@"|S@"+ô@!ú1@"Ü@"3Ó@"Ye@"wÐ@"U@!Á`@!,@ ¢™@ fÁ@ ó@†@zï@s?@‚„@U¯@ë.@‚h@Bé@B@È»@í’@:è@¤˜@"è@Tƒ@¦ë@°¶@ìA@Hù@wÏ@¼0@ü@@@ -$@êÙ@äH@ÚÂ@b–@]~@.o@U -@5 @È @‘’@)B@|ò@ g@¨>@—í@wŸ@Q„@þ"@>@çÎ@5@ -@B|@¡„@(@@ @Û‹@þâ@Ë`@‘5@@‹E@ Ô@·þ@¨ë@o -@FÂ@R`@l@iÁ@=¦@ß@DX@_ @é[@´p@¥ê@}®@«ò@tK@Ê@ž¡@¨ˆ@¥}@Ýa@g@æ(@w@ÞÖ@™ƒ@!Ð@Ÿ^@a@T`@,C@Û@tÇ@—@üt@TG@× @5·@[â@HÔ@#¨@BT@¤£@Åo@_ï@åR@È}@é@ñ@?á@–ø@¹„@z-@?@ -Y@=ê@` @+ÿ@¾Ì@l×@g¡@Œ5@®@ßæ@¢@#ß@j0@ -@\c@å3@ž@Šã@²@Q¦@ËX@oR@Pi@“i@tu@³Ì@]}@œ@<@ 5g@ M+@ÔÕ@ðå@p@ÔE@$O@$ÙÜ@'æ@#Z@þØ@~Ò@ ¾–@ ¡Á@ì@"É€@+cÖ@-–Â@)Ké@ N|@ª@·@Uˆ@µ›@'A·@1î9@8\ -@:‰¤@8ï@3oç@)©/@¶ª@Þø@ ý@Ý @Ó†@*}5@5Ìz@=tD@Aã|@CÂi@C4W@?õ@9‚û@/A…@!‘0@^ž@ -3Š@ -Çå@¨@"Ç®@0! @:zÿ@AÙ•@G †@Jºì@Lù@MŸo@Lý@I¾@EÓ@> í@4E@&úf@Ä@ Ýw@ˆ~@%.@†,@-Ug@8µÞ@@.<@EK@IyÕ@LÛ‰@O+@P\Û@QTb@R/Z@RgI@QsD@Oa¸@Ln+@Hnø@BÀž@:qC@.’<@Ià@­æ@ëq@GP@m@#>/@1ظ@<¿D@DH>@Ibî@M 9@Oêý@QùY@SÔ@S{f@SB¨@QøÞ@Oê(@NYí@NA@OcA@P¼@@QpÙ@Q%Á@OÒ @M‘K@J²`@Gª@CbC@<³@25@#=û@­³@öÉ@Ž@ ßÚ@y#@+Ÿ¡@77þ@>ÿî@C:á@Dj™@CæA@Cí7@F`¦@JÉœ@OÉ@Rš@Sž@TDž@T^C@T,;@S¾Î@Rò9@Qh@MàÍ@Fñ@9ü[@/¬]@/Ÿ¸@9Á @E|@L±Õ@Ow -@OëË@Ou…@N–Â@ML@K'@G³ß@B×Q@<„s@4,j@(ð@T+@ €½?ÿƒ@§X@ Õ«@ˆ@,c¥@7¯v@?_´@DZ@FÞã@I­@JÙ[@LL&@Lû·@LÖÇ@L€@L£@LÃ%@Lµ½@L‰@L0È@KI@I3@F£ß@DCÕ@D0¾@G@J­@Lžö@LlÐ@Jfé@Gg@Ew¦@F @GЫ@H«@Ef@BŒ@@ÝØ@Aøc@B ?@?ZR@Ê@@Ï;@AæJ@BÐ@C2/@CÿÙ@D²@E1@E¶@Ek@DðK@D‹ˆ@D ×@C»å@CÔ@Cè±@Cº(@C&{@BÅ.@C m@CÖ-@D@C#@BF@?¬@;P@6ŸÕ@46²@5dŠ@8òš@;˱@;¯@8Ç@4q@0©'@1ÜÚ@6Þú@;¶¿@=äù@<¬@6’ª@,Ùð@&J\@)]­@2IÉ@9M4@<œ–@>Ù@>îÉ@?|Â@?òŽ@@?@@æ@?lª@>_G@=‰æ@=] @=˜.@=åÅ@>Á@>q@=»d@=EG@a?å?Ù ?å0|@ò@f@è·@%ñ¸@+âO@/Žä@2À@3΢@5/k@67@6‘7@6@51@5“¹@6P|@7:i@8@8µ@8`$@7«}@7Ð@6›É@60@5 @2bx@/hÉ@.ôÖ@1@@3»B@4â–@5÷@5J@4ÛD@4·s@4+@4!L@3¡Ž@2¾"@0h.@+Í@%|§@"’º@%}@+U]@0@2Š‡@3— @3Ã_@3¡@3~·@3C@2Õ -@2B»@1$@0[@-ß×@(ÉŒ@³¡@R'@ Þb@qË@È@((@-s¬@/RÈ@/™á@/qÖ@/OV@/0@/=G@/˜@/¿#@/4d@.6=@-Bå@,¸Ž@,»œ@,Õö@,Ô"@-9#@.Ô@.œ«@.¸@.¬’@.«W@.„ö@.S@-MÃ@,à*@-/@-Ro@-iO@-F€@-R@,¹¤@,V@+ål@+Ж@,#•@,^ÿ@,@Ú@+Ú@+Hx@*ÃÊ@*0_@(ý@'z·@&˜-@&H(@&O@%Õ1@%8)@$Èã@%qn@&è3@(ü@(J{@(Ø@'ÍÊ@'«d@'o°@&ïÔ@&}@&Pë@&«@%a‰@$ÇÃ@$³'@%@%!²@$S@"¸@ ½Ò@iZ@.ƒ@†M@§£@g¡?ïf?ÔÇA?Ê -â?ÖÜ…?ñØë@0æ@õí@x@¹@©@kô@ ‰P@!NÝ@!ÿm@"§E@#J@#·Þ@#°T@#|@!nÚ@× @öõ@ –@,@*@!Þ@"Pˆ@!‘-@ô@_D@“@},@6M@É–@#ð@û @ÿÏ@ ä×@ Ïé@ V@ ×@æ‘@.+@#Ë@½@'@ ‘k@[Y@‘Ã@,@#w@é@/@â2@¨Å@Т@ôî@;¹@0&@Ã@Û¾@ÖU@êW@Ä@¿©@L@{\@}@¥@x@™H@œ¼@”W@¬ö@ç+@Úm@¶±@à@Q@t¥@Ç@ܪ@½„@¹@ @fŠ@o@&Ê@›v@~@ @+¥@Þ#@6^@Þ¨@3@ŸÄ@Ž&@I1@WË@¬@¤@)Ò@ê™@UF@ï¬@÷ô@G@f@ÈÜ@¥H@ÀH@þÝ@&O@üd@LÂ@u3@9e@…ì@­@sÐ@@@DG@sÖ@7@”m@ëŒ@×™@mÏ@Û"@‚@²¦@A_@ÄÐ@ˆ@qó@Š?@Ì@ @š@Õ@[@N"@ÌÞ@*@̬@Á@÷›@{æ@ÿ2@"“@ð²@¤ˆ@‡þ@¡ù@¼6@Ž-@îµ@¿@iC@Âx@ƒ@áF@Þk@º›@‘ @tÍ@n@o€@7Î@£Y@ jù@QU@.>@ å@ óx@ìl@¬Q@îs@ÙI@h@à@¡¸@Œ˜@Í@y@ †@ÆÍ@z‚@%3@¶4@¯Q@SM@Ìó@€Ç@ÿó@Ê@¬u@iÐ@ ïã@ sÆ@ Y -@ 1@ ái@ ÿÉ@ ýl@ È @ _Ý@ øÑ@ â×@ K@ WÅ@ ^¯@ :Í@ @ ×,@ yÌ@ 9 @ d@ È`@ ’@ :Ù@ -Z¦@ x@ 4v@ '@ £@ Œ¼@ -I¸@ -»…@ -˜ú@ -$@ Ä$@ œ3@ Xp@±$@Ñ°@äk@ÇÕ@q.@å@”O?ù6?ì#?Øì]?ÀRŒ?¬.ù?«dº?¾³œ?×$4?é5×?óí£?ú4™?ý¸8?ÿ?ÿýz@ ¼@tà@¥°@³@¸‰@@ý@»@,n@'ë@@Ñ€@Èú@ï@ßj@=ø@ b@Gf@Y…@Èê@ÂÎ@W@g@%@ˆÚ@S@a4@s}@H@¸ø@©ã@Æ°@¿@‘œ@Ò?ÿ`?õá?éÁ©?æ -Õ?ï&?úï@@ë@Wl@£û@N±@÷,@H'@_@ñ@|+@ Z@“[@Ré@3b@3£@oQ@Žê@1g@­@6 @õD@Þ@Ð@-"?ýðð?üAÙ?ûÙå?û¬?û*V?û–?ü®?þ«P?ÿæx?ÿÃÕ?þ]?üw?ûtÆ?û”>?û{ ?úm@?ùQ+?ù*÷?ùáŽ?úÂU?ú·I?ø‹ñ?õt?ô¿?öò®?ùYÅ?úxþ?ú¡?úš ?úœ?ùðË?øDÀ?ö¼q?ö³.?÷úd?ù5ã?ùL?ùc³?ùÇ!?úˆg?úÓ?ú}w?ú-V?ú(Ë?ú-u?ùÿý?ù6Ÿ?÷à+?ö³D?öH?õŽ³?ôsŽ?ñNB?èêú?Ø”g?ƶ¤?Ã×?ÓáË?æ¾?ñ5-?ôÄ:?ôç«?òˆN?ìZ?á·?Û†ñ?á'?ëÉ ?ò³|?õF?õS?ôož?ó•²?òëZ?ò®ù?òï…?óg;?ó”ê?ózb?óc_?óBô?òÎÁ?ñþW?ñÌ?ðƒD?ðqå?ðœª?ð½M?ñ --?ñ1?ðv×?ïX.?îçŸ?îÒ£?î)?íhí?í£P?îA—?îyÜ?îµâ?îì?î•?íð–?íz`?í“?ì#?ì¯?ëÆ©?ì?ìk|?ë‘Q?éð?é3v?éäa?êðz?ë[?ì·?ìµg?í?í"?ìîÞ?ì¢Ø?ì&?ë½b?ë²¾?ëoÇ?êÖ¼?ê€æ?êr?éí–?è´Æ?ç;à?ä¤'?à@Ú?Þ3!?áVÄ?å¸Ø?çðk?ès6?èKí?èê?çø´?èE?èT -?è·?çú˜?åÖ?áíw?ÞŽ?ßEx?âñ?åšó?æ!?äÛ?âeD?àýD?â6X?äMy?å#?åò§?æ"f?åÝÑ?å?ä|Ù?äž8?äà­?ä®ë?ä?‹?ãºl?ã7?âÉT?ãÃ?ä?í?äªõ?㘋?â-§?áÙÒ?âFv?â=U?àÖe?ß&ô?ß _?à-?àÕs?à·È?߬6?ÞÓ”?ÞÈf?ß‘Ô?à‰?ÐYÈ?Ðoå?ÐÀ·?ÐvÒ?Ï*E?Ë™Ñ?ÄG>?½Ñ‡?¿‚*?Æ7Ã?ÊÍj?Ìã,?Î7L?Îêž?Îë™?Î~N?ÎH?Í}é?Ìòâ?Ì Ð?Ì•í?Ì—M?Ì”Œ?Ì…4?Ì-“?Ëœb?Ë ?ÊÀ?È ­?Çóe?ÇóI?Ǻ‹?Ç^‚?ÇA?ÇWh?Ç1n?Æí¹?Æ­[?ÆN.?ÅíÊ?ÅÓ®?Æv?Æ.?Æ1Ú?Ƽ?ÅÞñ?ÅŒ2?Å+ž?ÄÊÉ?ÄÊë?Å9Ë?Å‚j?ÅgO?ÄÍŸ?Ä6?Ãåð?Ä^P?ÄÅS?ľ;?ÄS??÷Æ?ÃÈ?Š†?Âpþ?Â;c?Áï„? ±?ž¬?Ã3Ö?ÃT?Ã?ÂÛ?¦Ý?Â??ÁJ?À-?ÀT?À‡Y?Àñ‡?Áz.?Á×{?Á¡ö?ÁG™?Á ©?ÀˆÆ?¿<7?½¢•?½G:?¾'-?¾hQ?¾/ì?¾Ø7?¿à¸?ÀM¤?À-t?¿öX?¿â’?¿ª¢?¿Z?¾Á`?¿9?¿Ø³?¿Þh?¿‹5?¿GM?¿?¾ô'?¿'?¿)i?¾þC?¾ þ?¾/i?½Ë”?½vÞ?¼ð|?¼hí?¼,)?»Éñ?ºÓ0?¹t‘?·äq?µó?³,A?®þ?¨M?/?ŒKè?vþŒ?nK?ƒ#?”ÐÄ?¢Rã?ª9?¯«‰?³#?µ%>?¶R‹?·Y?¸C?¸”ú?¸`?¸Œ„?¸  ?¸Yi?·ß‹?·ð¤?¸{?¸Ã?¸<È?· ?¶}!?·J?·ÅP?·å•?·«ö?·‰»?·“`?·|°?·bÌ?·aå?·1z?·š?·‚?¶ù]?¶­A?¶e!?¶È?µå»?µá ?µä*?µâÌ?µï -?¶2¶?¶•–?¶’?µäð?´{ß?²Ô ?±¶ë?¯\?¦L~?š 4?–ùÜ?Ÿ„3?©C3?¯”G?³É?´»?µ?µz?´»I?´?U?³è&?³Ä ?³¦h?³‘B?³œ-?³’y?³'”?²~?² R?²1Â?²Y|?²zS?²‡?²‰?²nj?²d^?²Ÿr?²•?²:\?²Õ?±Ì&?±l?±eb?±²?±‡ -?±hö?± -Ö?°¢Ó?°}Ñ?°iï?°J?°WÛ?°„~?°‡ý?°]t?°4Ø?°·?¯ý ?¯Ýÿ?¯Ô+?¯Ìw?¯»à?¯ØÁ?¯ÝB?¯hA?®À¢?®)ñ?­Â`?­Í.?­Æƒ?¬÷g?«Ò‚?«.ì?«V†?¬C›?­#¿?­ií?¬…Š?©Ü°?§?¦àñ?¨d?§ÆÜ?§Py?§Öá?¨¬?§–R?§Ž?¨Õ?¥âd?žç‹?—?¢D0?¤Ñ?¦Q?¦¬À?¦ V?¦|?¦ŠE?¦²ä?¦øW?§AÙ?§7æ?§!?¦¹6?¦k?¥1Ì?¤Ùó?¥‚X?¦Œ?¦'€?¦>@?¦ŒÖ?¦–º?¦W²?¦!ÿ?¥¶›?¤ýø?¤³j?¥=?¥$«?¥ >?¥ê?¥4'?¥NQ?¥X=?¥WÙ?¥@û?¥ ?¤yž?£â?£_Ð?£+í?£­K?¤9­?¤4p?£þ&?¤}?…õè?…•y?… à?„j?ƒè?„@æ?„W?ƒÿÖ?ƒšÞ?ƒý´?„¥*?„ðH?„Ï?„bP?ƒù³?ƒÒR?ƒÁc?ƒÒÜ?ƒæ†?ƒÒ`?ƒª-?ƒYû?ƒ52?ƒf2?ƒ„^?ƒo?ƒA%?ƒ#Î?‚êà?‚©6?‚‰,?òÓ?€ù*?€ø?é8?‚”'?‚¹ø?‚¡k?‚r¨?‚JW?‚+'?‚%¬?‚÷?éŠ?Ÿ©?I‡?r¬?šè?po?‰*?»+?‡J?3Z? -?€ø;?€îL?€×R?€ØM?€Þ?€¦¹?€‹å?€šg?€›ì?€¬×?€à¤?€Õ­?€y?€Kñ?€+Û?€ >?€)ž?€3N?€1[?€9P?ßf?~“ ?}ß^?~a³?~…Þ?~’?~ÙS?~û?~ÙÓ?~t¶?}ø]?}X³?|­ù?|±2?}~è?}ö‘?}éý?}»/?} ©?}RÁ?|÷µ?}l?|òa?|Œ?{ø}?{ô ?| õ?{À{?{DÈ?{5«?{‹…?{P?y©ô?vç³?uÔg?w‰ó?y8?yð7?z…?yÛý?yŸ?xãc?xLÓ?xQ?xïš?yFì?yZŽ?xú*?x†¶?xg ?xe ?x"í?w¸±?w]Å?w=,?w ?v¨D?v{æ?t÷Q?oY¢?jf¹?m—¶?s¾?tG?qáé?ntä?n¢?qó?t=å?t¢À?tg?t•¼?t{P?s½ã?r7è?p–Ó?pF®?pÒH?pJJ?n??k¤C?l^q?o‹R?q5?q'?pz?oW«?m$?knÕ?iœÑ?f)e?f•=?jË?m+y?lûƒ?k` ?jŠ#?kÎ?k…µ?k·?kÎL?kjÃ?hU?c€Š?c_I?g;Ó?ia¨?iáa?jN?iÜ?i„ø?i|X?i:G?gáº?faÍ?fôÁ?h=£?h”¾?hFµ?g¸š?gFš?f_Ÿ?dW?adþ?b(f?d´µ?eÔ?e[?e -V?dø¦?e+á?e9s?dÔ\?d%8?bôi?`)’?]?^%?a`?b™ž?b›?b\?bD?bNƒ?bžú?bÓN?b…Ó?b?aÁr?a¯#?aÄ?a´ž?a'h?`ž•?`aÔ?`TY?`CÃ?_Ò¦?_;b?^¼‰?^cŸ?^`Þ?^¤R?^‘c?^,œ?]nl?[üU?[C‹?[ú¯?\þ`?]P³?]`?\Ž=?\tù?\©?\Å -?\…?\e|?\3H?[¾à?[ë?\L¤?\p?\; ?[¿Ò?[uK?[ZÌ?[{M?[È/?[ó?[3T?ZØ^?[¢?[)9?Zþ?Zƒ ?Yó‹?Yà?Zr?Yé™?Y³7?YŸ!?YÊC?YÙW?YžP?Y7?X>?Lé#?G Í??©p?Bl?Ih^?JÞó?F ?DÍq?Hœõ?Jym?KjD?MZ˜?O[²?P(¬?O}d?Nh‚?N?Nº?NQÄ?N?M%´?LvÐ?JÚ–?H›c?IR¯?J…ž?Ig)?Iqk?Kþ*?M4å?LŒí?Lt?Jàq?Jj¹?L‡?Mfí?Ma–?LæI?Jš?E6?Aä?D?EnG?EvÚ?Fâý?Gš‡?H ?I!ß?I·Á?I´æ?HáN?F“Ç?EE¶?G‹o?I§‡?JYE?J0Š?HöW?G5n?F^Ô?G>¨?HDØ?HLz?Gog?F“¤?FÙ?E©N?Eg,?Eæ/?GHÃ?Gª -?F¶b?F#Ì?FDŠ?F»?E’ ?EDÔ?E)x?Dë@?DÖ,?DЄ?D7’?C"?C&›?C¿_?D(|?Dó?C—â?B°¢?@Ü?A4?CY$?DI?Cõ?C‘?C´W?C· ?Cq’?CŽæ?CÐv?CmV?C-ã?C'¢?BíÏ?BPû?B ?A†‚?AQk?A\,?@Ö?@›Q?@´?@É-?@œ?@r)?@…Â?@E\??¸??Ò\??û³??×Ü??Ì ??ØŸ??õà??´`??m°?>Õ?>ƒä?>¿Ï?>û_?>ó?>µ¬?>jÔ?>b?=úÔ?=œr?=˜?=T'?=æ¿?>?=Ã&?=¢&?=gE?=Nj?=E’?=&¨?<à?<»k?<¿0?<À?<Ć?;m’?:î?:…†?;¤?Ú?2æW?2¬{?2õp?3"?2¹?2Ð?2á¾?2ø2?2üì?2¤,?2j?1¹B?1Ád?1›?1ž¸?1”¦?0¬?/Û¶?07õ?0y¸?0_?0 ´?0>Ó?/în?/w8?/9À?/£?.Œè?.Q„?.Mö?.Zz?.Å¿?/È?.uè?.&?.{³?.¬þ?.Bê?-~+?-T'?-©P?.?-»Q?,Ë;?,e¦?,v ?, Ç?+™d?+Œ?+v…?+Æ?+]?*°Ï?*pÐ?*Ľ?*ªž?)ø?)dæ?)^¨?)lv?(ÑR?(1Š?(,É?(1ª?(‰?(Z¸?%e“?c–? ‰?lh?? -¶?!/?"™è?#k?#E€?#uß?#uÏ?#1*?#c?#9¹?#FÑ?#1¥?#ëF?$1ê?#ñ=?$l?"ÕÐ?#j?$Ð.?#âb?#ÁO?#Úž?#ÍÙ?$3Æ?$ˆŽ?$xƒ?$Q?$Z]?$-Õ?$4®?$¾ƒ?%—?$ؤ?%8x?%zC?$¼Á?#Õ…?#ö(?$r ?$‰‘?$ch?$cÔ?$7?"6|?E?h¡?’¬?!½æ?"¼Â?#›×?$ Ð?#ø?#šÏ?#w‰?#ik?#Ao?#ŒN?#Ù5?#§o?"΢? 2Þ?’U?S#? ÿ¦?"Íê?# ?# -G?"¼˜?"LÜ?!;!?!?H"?˜R? zü?!·)?"?"M?":g?!ï7?!Â?!Ø?!Í?!¶Z?!˜Ý?!Ò¦?!¼*?!xª?!*.? ìó?!?Gš?3H?Ô? ?è6?£?O?Ä?ÍO?)6?Bñ? K? -“?í_.>Ü)w>ìå=?˜µ? ´?<ü?§¿?\…?q?çø? \1?ÄÍ?T}? Š?•? -E†?L?7Ž?+e?J?†­?'Ö?¤?÷Š?rÕ??G‰?›ë?¸Ò?ë?×z?;Â?‹!?&?i?{?E??ÀF?Yƒ?d?U¬??&/?×Õ? -??$ ?“?Ê?Jã?;k?R!?Ù?Æ"?›¹?ì,?çb? ð?ƒ©?…Þ?+{? Í?.´?Z?µ ?1Ì?’?6l?I²?`]?%ß? ‘? Ô? ¬K? ¼?‘>êíÑ>áI¬>ÿb.? -2¹? (•?  á? ‹~? š? ÎH? ¡? ¸¦? h˜? €I? *ž? pZ? †œ? ô8? ú;? Î? 7»? -úª? #E? Wµ? ¬? -À,? -+)? ê? -L¥? -h¨? žù? I&? ×P? -D? -3Ý? Þ? –v? P{? H`? \·? 6Â?àÜ?¥v?ƒ”?`é?V‘?s8?ƒÓ?0å?Ý-?L?ó®?®V?€'?––?ÙË?º„?r{?]Ÿ?Lµ?’?õ?@? ‹?—ò?eã?Î?–È?t×?x@?P?2?s,?f?›r?¿?¿·?U?ž?ò\?ªÈ?ðz?fÀ?€7?w"?V¸?/Q?D?6r?7è?|?@?Ï\?ªD?“k?Vn?Oš?O -?ÿ?¼q?±Ç?²®?¡|?s„?Ié?U‹?[«?C?”?ß?Õ?Öä?À\?¥ù?‹?hL?+¸?ì?í%?Öª?§l?¶C?¸:? V?i+?t?´?-?,€?6?V>ÿÆS>ÿ|u>ÿSŽ>ÿ=%>ÿ¢>þÿ“>þÚ>þª>þ‚Ê>þ`H>þ7<>þî>ýÑ>ýl>ýnÄ>üè0>û÷£>ûÓÍ>ûÿÐ>ü¬>û÷W>ûÑ‚>ûªÊ>ûb>û=±>ú¶ï>ùÛA>ùÂs>úHL>ú'h>ù8>øn…>øà~>ùbÅ>ù‘§>ù„š>ù\/>ù3—>ù >øæ&>ø¼Ç>ø>ø`(>ø: >ø >÷§¡>÷Qw>÷JŸ>÷1¶>öñ#>öÔ…>öç>ö××>ö«{>özC>ö -z>õ†Þ>õTa>õT>õ2W>ôÜ´>ô‹‚>ôŽ>óen>óge>óë >óˆ™>òúX>ó-‹>ógZ>òÁ>òk>ó -´>òòÖ>ó!>ó >ò(6>ñâ¿>òsþ>òÕD>ò9 >ñ¯T>ñ >ðj›>ïÞÀ>ïG >ï–r>ð•÷>ðÙÀ>ðÑ5>ïåÞ>î¬Æ>ïå>ï …>îœÂ>í’—>î²ì>ïÒ€>î¶*>îB>ï`>ïxÿ>ïî”>ï×¢>ï9õ>濫>ï°>ïD>ï ">îû‰>íå‚>퀷>ì½n>êâ>àÌ >ÌÄ„>΋©>âßó>ëî>í)>íƒ)>í>ëš>êî§>ë2>ìc3>ìù´>ì½ß>ì¸>ëüÑ>ì9(>ìPñ>ìld>ëþÓ>ëm3>êåŸ>êƒv>êƒD>ê‡>éÔø>é`>é¾5>éê¢>éµ>én>é#Ù>èÄ2>èˆ>èlþ>èS>èb”>èg]>èK*>ç÷‚>礑>ç°">ç®[>çh¢>ç>ç[>ç,ø>æóä>æÃ~>æ>æp>æM>æ9Û>æ”>æU>åÜ~>åx[>äÒ2>äëÎ>åPÔ>åNZ>å1®>åB>äÿÑ>äÿ>äü†>äãž>ä¹Ó>ä•>ä{>äXZ>ä>Ì>ä-ÿ>äÕ>ä Â>ãØn>ã¤(>ãJ¯>âu>àž'>ß°Ð>߶>Þ™ >ÞBó>ÝåÞ>Ý‘ÿ>ÝGÇ>Ü÷7>ÜŠï>Ü6þ>Ü>Ûåæ>Û¸þ>Û’@>Û[>Û"W>ÚæŽ>Ú¥>Ú~>Ú‰Å>ÚŒ6>ÚN>Ø£>Ø£Õ>Ù>×>ÖÛY>Ø´y>Ùü>Øæ…>ؘM>Øg ->Ø}c>Ø`C>Ø'>>×ÛS>×tG>×^ß>×[u>×AY>×>ÖÛÛ>Ö¤Ã>Öz€>ÖY>Ö3>Öœ>ÕÈ >Õ•9>Õrg>Õ7Û>ÔÝ>Ñnˆ>Òˆ>Ô>ÔEÿ>Ô +>ÓÞ?>Ó¯P>ÓyÌ>Ó>w>Òþ>>Ò¾j>ÒwÊ>Ò#©>ÑÎ~>Ñ|Q>Ñ-Ž>в>Ïù#>Ï]>Ï"¦>Ï·>Ï`>Î×é>β>Î>Î|&>ÎZ0>Î.Y>Î@>ÍáŽ>͸>͈=>ÍRÑ>ÍC>Ìñ>ÌÝà>ÌÆ@>Ì¡>Ìz7>ÌP½>Ì#>Ëõv>ËÉŠ>Ë™,>Ë^6>Ë=p>Ë.Í>ÊÞ>ʳÄ>ÊŠQ>ÊVª>ÊÉ>Éã>ÉÀ\>ɳ‘>ÉÌï>É›ÿ>É.f>É>|>Èðµ>ÈŽ">Ș>Èk¸>Èȳµ>Èq3>È æ>Çó*>Ç*<>Æòh>ÇJU>Ç„3>ÇŸÈ>Çz€>ÇJ>ÆÛå>ÆE¶>Æ@m>Æ>Æ0÷>Æpâ>ÆS™>ÅâÉ>Åg#>Ä°v>Ľ>ņ>Å• >ÅB®>Å Ð>Å5>Äþ¥>Ä8|>Ä w>Ä!–>ÃÎ>¾–>Ãj>Ã#8>Âe+>Âì>Â]Ç>Âe>ÁÍõ>Á©s>Á]¾>ÁI,>Àú^>ÀÞ]>Áœ£>À­}>¿åŸ>¿Š>¿›V>¿à¬>¿âg>¿-©>¿M>¿%›>¿Ü>¿•€>¿©#>¾DÜ>½ï4>¾Ú¢>¿@Ô>¿¾Øu>½ØŒ>¼¿h>½ª>½vL>½•>½š—>½›>½'n>½Ò,>½xy>¼Ê>¼IÑ>¼8&>¼¶>¼—>»Ç>»ýÿ>¼F>»¸û>».3>ºò‚>ºÍÌ>ºÁ >º”²>ºZ’>ºOÚ>º±>¹ëŸ>¹Ô¬>¹› >¹x’>¹jd>¹Mj>¹ È>¸ñ‹>¸¾”>¸†Ú>¸Iu>·ýå>·½b>·ŸÕ>·uŽ>·Kp>·'~>¶úW>¶Í¿>¶™N>¶[>¶@â>¶-W>¶b>µÕq>µ•D>µo|>µ_>µBì>µ!ò>´ü ->´Óg>´§->´}ý>´Z•>´6«>´}>³ÚÌ>³„@>³>²º>²~^>²Gþ>±ï>±Í²>±à>±É >±¥ >±‚Ê>±\è>±8¢>±Ë>°÷y>°Û?>°¸Ä>°™Â>°zt>°Sž>°)>° å>¯ø|>¯Õ>¯ªµ>¯y­>¯EÙ>¯ -d>®ÄÅ>®Ô>®Ïò>®¬i>®>®pU>®Jä>®Ã>­ë>­Â5>­˜z>­tÜ>­N(>­)º>­M>¬ÈC>¬uÚ>¬=ú>¬T]>¬E4>¬5>«ä÷>«¾h>«žš>«Tõ>«i>« ->ªãÒ>ª¶>ª6'>ª0þ>©óÚ>©2>©=>¨»r>¨–„>¨…(>¨ƒ»>¨p\>¨A¤>¨ ƒ>¨!®>¨Ü>§óq>§Îþ>§ÓÏ>§é˜>§ó°>§Ê#>§eú>§)¸>§">§2®>§–>¦þ>¦è½>¦‘Ý>¦ƒc>¦Ö‰>¦ã3>¦O>£O,>›A>•\$>•Eú>k>£Éô>¤Á>>¤ëp>¥9Ó>¥I>¤ù×>¤œÊ>¤yÞ>¥ 5>¥E§>¤âŒ>¤Ï>¤Š™>¤|Þ>¤‚¶>¤²>¥ ç>¤ÿ6>£Þx>£v>¢žc>¡ø ->¢½“>£Ù>£Ù>£Æ¿>¢ÚÁ>¢;Å>¡æ‘>¡Ø>¡þ†>¡ŸÄ>¡°>¡ÛÆ>¡l¬> ¦b> ¯©>¡8>¡C>¢¦'>¢œ¾>¡U> i¶>ŸïÇ>Ÿ]|>Ÿv>Ÿê¶>Ÿƒ;>Ÿ%Ì>Ÿ¢#>Ÿ,‘>žªu>žåy>žSÆ>œµK>œ5>¼ï>ŸHˆ>Ÿnh>°Î>7'>)1>œû9>›¼’>š?ì>™4Î>š¿°>›[•>›)‚>œ³>œy>› Ê>šß½>›Í¢>›¸R>šóß>›¦>›-–>ššö>›|†>›¿¼>›Ø_>š4„>šV²>›Cf>ší¥>š¶ˆ>šþÚ>šc>™•>™Îý>š:Q>™®>˜bý>—ñ˜>—ý>˜™>™Ô>˜3C>–i†>–—p>–ë™>—{é>—Ï>–x>–]Ù>–î¡>—ùÐ>˜?)>˜pû>˜Ö>—j”>—aõ>—#„>— Œ>—ì‘>–öe>–FW>–"Û>–à>”ì×>”+E>”p€>•w ->”ñ>“¾×>•ë>–+í>”Ý>”¦¦>•: >”ž(>”n>“! >’aE>“>’øW>’ù·>”n>“f¿>’u>’?«>“G>’Ç#>’`>‘uk>’U6>“!>“ƒ®>“¹ ->“*>’|K>‘èU>‘?õ>‘y§>‘•È>‘Îv>’-Å>‘³t>‘g>‘Š>‘yS>‘=>¯L>ƒ˜>y9>š ->š>¨>Vã>/>ì>¯p>•ú>‰Â>Ò>t>HX>(‚>•>ŽãÂ>ŽÒC>Žº¹>Ž‹á>ŽC&>Ž"~>Ž&Á>Žê>ýì>ñr>Ðe>¿ü>¯Ò>•0>pü>8w>> I>ŒáÕ>ŒÍZ>Œº>ŒO>Œ})>Œ]™>Œ;‘>‹ýß>‹¾á>‹»R>‹·‹>‹ÿ>‹‚¾>‹dÿ>‹KŒ>‹1®>‹ù>Šò>ŠÕF>Š¹›>ŠšŸ>Švs>Š@è>Š¶>‰û„>‰âñ>‰ßô>‰Ó+>‰¯Â>‰”>‰†Í>‰YÜ>‰ ã>ˆà9>ˆî|>ˆñx>ˆÉÆ>ˆ“¨>‡û÷>‡ní>‡Ë›>ˆQ>‡Õ²>‡TÔ>‡ ß>‡Å¾>‡Wé>†óß>‡Õ>† ™>…Þ>†Ü>‡ >†í>†Á>†Ì>†«g>†iH>†vM>†rt>†GÌ>†0]>†&U>…õ>…˜´>…)ý>…4À>…kö>… Y>…ª>…^ >„ê©>„ßë>„ì§>„×Á>„Óµ>„p¶>„…Ç>„õ>„\‡>„>ƒ¾D>„,Å>„ ,>ƒ©B>ƒ„>‚á)>ƒe>ƒ(>ƒ1B>ƒ;>‚F ->ËÂ>‚µ>‚HÖ>öÖ>Ôª>ø÷>ô>É>zh>€ßC>|U>øÙ>Hº>€¹À>=Š>]>€q>€´à>Óø>¶1>€ÜÀ>€5>~«Ì>}>}'`>€‡>Þ>€ÚŠ>€$4>}ßÒ>|->|>>|[F>~•`>€0¯>€nï>€‹>Jˆ>|ê>x¡ >vD¹>xTZ>{yË>~C5>Ñ>€@»>”Æ>~Dé>{.M>wÌÖ>sc%>p¾.>s*ß>vÚ>{&3>~Úã>€HÎ>€]´>€p>~š¹>|q²>yN>rµL>kýÉ>j ø>o/Ô>r™$>k¢¾>dû>s°Ä>}è¡>~Ñ >~ÿÛ>}³¹>{®>wù >s6•>kÜç>d{>bÏÉ>iÑQ>qY>v ù>y<>zÇ=>|@^>}Êæ>~Ã?>}û>>}aI>}/>>zœr>v>pXš>këf>dó>Z€¨>WÑ,>`L>jŽ>p46>ré0>uˆN>x¢ô>yeñ>y÷æ>z`±>zÚð>yÛ!>y¢>w±>u‹ >t_³>sD–>p€|>k+>c‰ò>XÄw>OA•>OQ_>YDÎ>cvL>j6ú>m œ>pÓ1>sm‘>tÏu>uл>u¬&>uùå>uï¶>u“7>unB>u£+>uA>r]V>nq>i¹Y>ih:>kÙv>k~l>h3>cZ˜>[% >Olj>Cèª>E¢ø>QóÒ>\m>c°å>hÀó>kšZ>lï÷>nE>o+>oÈ>o{I>oâ‚>pÊ>pæµ>q|A>qX>oƒÆ>n‹=>oÖð>q¶÷>pÂ:>nÌ\>mê>jiÌ>h>g‚T>g;>dGˆ>aþå>_¥>X”¿>Mh@>>éN>8]¸>AO>O<®>X3_>^!o>bAÝ>e–>d¤1>d¦>f|>>g?>j ¾>m0¼>mB—>kÂô>lð>kªK>kœy>k{a>ji>k m>l-‹>j½ï>i=¯>iöù>jÒt>jCŒ>iŠ—>i®G>i~š>i)±>hRT>g¸?>e‡G>cA‡>baZ>aûR>`¿<>]­X>X]’>P!¬>CUÂ>3×>3]>A¡9>N„>V¯å>\.;>_ʈ>bQÁ>d¤>fQ>fGç>e–>c3v>^`¶>]\ >a¿,>d />e9)>eNÆ>e˜A>e%ì>f¹>eÜœ>eß>dz>c¹Â>d3Þ>dþ£>e,˜>dg¹>cì)>d=È>cäU>b)>_xf>\!>>_Ê>b7ø>c•¤>cV’>bc>aÕÆ>ah@>`Æ>_ÿZ>^û±>[ö>X7>Wm‡>Vµ¯>Uç.>S R>O{q>I\H>?ѽ>3˜>,Æã>6>AÔ}>J!!>PŸ>SñŽ>V¬>Xms>YÇ/>ZÚ>[gl>[²M>\N>\K€>\_O>\]Í>\aå>\UX>\Kô>\7Ü>\w>[þM>[Üp>[i>Z¬†>[#%>[E¸>[s>Z÷9>ZÑj>ZS>Xlj>Y’>Y¶÷>Y̳>Yv>>YYÏ>YpÕ>YMÎ>Y ²>Xñ)>XÃ1>X–”>Xf>X4¸>Xß>W×Û>W§:>Wrr>W7Ž>W'>VÖœ>V¢©>Vi‹>V.Ÿ>Uëy>U«>UiM>U>TÎÄ>Tq2>Sÿn>S€4>Róí>Qô¡>P />Oå>Mìë>KÍb>HZæ>CŽÈ>=(0>4ÅO>*MJ>&{>.e$>7Ä6>>×L>D*&>Hð>JŸU>Li‡>M«k>Nsµ>Nò’>OFH>O{¸>Oš#>OˆH>OsÞ>O}º>Op€>O}û>Okì>OM>NÉP>Lè0>L¯>N C>NŸà>Nb‘>NMõ§>M*é>L¾>MYì>M—&>M4–>L¿M>LLí>Lž>LÚ>IÍ%>K"N>LC>Kó½>KÇt>KÔD>K±ä>KQK>J@!>J‰à>JøÄ>JÛ¾>J§Ú>Ié@>I³u>JM>JV>I”ï>HÉŠ>I=Z>Ic^>I: >I O>Hâò>H¸—>Hzì>H=O>H/d>Gý>G™G>G†E>GkI>GX©>G2>G>FÖB>F™Ë>FBà>EZ->D’E>Dñ>E1{>EjÖ>EŒ>D6¿>Dh>D O>D]8>CÜr>C~›>CP>B2>@Y¼>AAe>@³¼>>Î1>>>= ·>9#K>4¯>2ÏÕ>-"¦>%€>Ö4>V> Š>(ñp>/‚i>4w>8 œ>9=ê>8ÒB>=Õ>=õ)>>Q`>>Õ‡>>âÂ>=9>9m“>:.€>:\:>=.­>>¹ >>Œú>>…Ÿ>>>>h™>>G‹>>#u>>Ã>=ÈÆ>=lž>=4!>=]™>=¯><ÞÀ><ßæ><æ><ƒ><I>;øî>;Ù©>;´l>;†»>;Dá>:×ã>:”r>:Ñ|>:µÿ>:¤l>:|×>:=ü>9âœ>9òV>9è_>9®>9˜}>9w&>9Q´>9)È>8þ£>8Û1>8·­>8ŒU>8_>8AZ>8þ>7»ˆ>7¤±>7˜³>7€º>7X)>7)|>6¹Y>6ª>6™8>5õ×>6/ì>6P>6,«>6¿>5n)>3ÈŠ>4§ö>4ãd>1Îc>2› >4‘f>4Ÿ>4Ÿ>4|U>4SI>3ÄÓ>3|—>3ºŒ>3®_>3‡>3fÊ>3UO>3+¯>2þ<>2Ò­>2¶>2”K>2np>2Jó>2!x>1åð>1gÅ>0ø%>1_°>1_r>1< >10>0î>>0È >0›ù>0?X>0>0Y>/÷&>/Àç>/}>/U>/9>/ À>.æû>.° >.k>.[>-ø›>-Ô >-#b>+»ï>,kd>,->+ãË>*s‚>)¡5>(îß>'¨ñ>%tü>"sê> !> Ð>îB>t$>@>»Ø>ß|>$ò>!ì¾>$ˆH>&AÝ>'jÓ>(1×>(°h>)O>)3é>)QN>)mK>)xU>)r>>)f>)W³>)HK>)*í>)å>(ÿ¥>(å->(µÆ>(’Ú>(1’>()ò>(JÎ>(.G>(s>'÷€>'ÍÇ>'{N>&ôG>'õ>&êW>&ÍÎ>&®ý>#û2>$W¯>&s3>&ˆ…>&g›>&E>&#p>%ÿ>%Îœ>%°a>%‘²>%B¡>$Ž:>$Å'>%Ø>$Û>$½ê>$±>$p4>$^£>$A>$>#ÙÕ>#в>#µ”>#’À>#q{>#E³>#%H>"ý#>"ßž>"ɯ>"¨ >"ƒÈ>"a–>"A•>" œ>!þ]>!ÜG>!¹·>!”Í>!pz>!O:>!.> õð> ìÖ> Í> §y> ƒ9> UÍ>õº>ø/>þK>áA>À>ž>|j>Za>9«>8>ö>ÓC>³;>’†>pZ>J—>'ê>Ð>ç>Ä¡>†>(ç> P>+>>ô0>Í:>¼¾>•­>\d>4È>©>•>ó˜>׊>¯Ø>kV> >H>Æ>ÁÕ>Ì">¦œ>u±>ý>1ò>-’>Q>í£>»j>Œ>_©>Y’>>>(q>ì.>¡º>›Ä>‹f>’Y>g >#¥>þ`>ö > }>Ò$>ö–>rä>bµ>Ò>ãÜ>Ž¦>Ëü>Œ|>D“>v>xÝ>\Ž>@j>±>ä¡>‹~>t;>nn>`>`]>>?>µ>ïÈ>Å>T >B ->w×>cñ>@„>X>þë>Ñð>¬x>Ÿç>€ä>aÖ>Bc>">‰>à+>»»>X>v_>Z)>6K>Õ>£ö>ªG>w>nL>G>"y>ó­>¾ñ>ˆG>A>ø1>¨ >{> ²!> _i> ß°> ^> -’~>F#>B>“Ñ=ôÆ‘=ã"–=á À=ò®=þŠ~> œ>¿}>ç> -[p> Uÿ> û> g> œ“> Wv> ¥‡> -> _> •> m> ó> å> Óh> ¿Á> ª¾> “\> cË> > ·î> âG> Œ§> Œ}> Ö>> ½1> G> n> aC> NF> ;o> \> -×Ä> -j> -±“> -®¹> -‹v> -ið> -Y¯> -<–> -> -`> èÝ> É> ¡Ê> ‹)> uD> VH> 4> > å>å >Ç«>¬!>‰>lx>VÓ>8ð>|>>å >ÈQ>«N>Žd>p6>UB>8b>¦>->ãf>Ç>¨æ>K>re>TX>5#>å>þj>Øž>¼ì>ªn>>r_>MX>6¨>>]>çI>Ë>®æ>’Q>v>ZÂ>>é>"ê>>ê0>ËÛ>²f>–[>z>_§>Cõ>((> >Ë>/>ñ¿>•Í>_>c>Hk>,ë>>ë>¤„>¬>¥>Š*>n0>RO>7Þ>]>€>åÑ>Êz>­’>‹>fL>J)>6Ý>%ò>=ÿÖ.=ÿ£^=ÿry=ÿ:M=ÿl=þÑ[=þ‹?=þ(¥=þL=ýú5=ýÂø=ýˆY=ýO =ýI=üÞ”=ü³ß=ü‚x=üJÎ=ü¤=ûܹ=û©÷=ûwC=ûC=û £=úØŽ=ú¢|=úi°=ú7¬=ú=ùÍ=ù•=ùcÈ=ù%f=øЃ=ø¾=ønÍ=øHý=øT=÷ò=÷º=÷w›=÷Mö=÷Õ=öì=ö·B=öƒ9=öFã=ö'=õß =õ®¢=õ~Þ=õGì=ôç)=ôžØ=ôœj=ôQl=ô1ã=óÿ=óÅ2=ó¥Ö=óYÚ=ó =ón=òÕÈ=ò¨©=òtT=ò;i=ò\=ñŠú=ñ^Ë=ñje=ñ÷=ðåŒ=ð»Ã=ð¤_=ðq=ð6Á=ðò=ïÈU=ï¤O=ïuÞ=ïBj=ï!=îÔ£==îu=îB¦=î–=íÜÆ=í¦i=í_Œ=í9=ìôR=ìÜ==ì°~=ì}õ=ìM,=ì =ëè“=ë¶V=냴=ëLy=ë?=êì†=ê¸ö=ê„œ=êM„=ê =éòl=éÃi=é‘W=é\§=é+þ=èü‘=èÆŸ=è†f=èV=è/ô=çü5=çÄZ=ço¢=æðÄ=ç%Ò=æèû=åû=æKà=æ3=äZ==äwÜ=å|Ã=ãÅ%=ã¼£=å=&=å%L=äô =äÃ’=äcí=ãŸ=ãÿ©=ãøK=ãÈ=ã™È=ãl-=ã?H=ã<=⯯=áôZ=âO=âJt=â"=áì7=á»Ê=á„w=áT{=á¸=à°ä=àKv=à…Ý=à_k=à5ª=àô=ßÑÉ=ß© =ß{þ=ßM =ßÐ=Þì<=Þ½ì=ÞŒi=ÞOF=Þ*¸=ÞL=ÝЙ=Ýš=Ýg`=ÝAR=Ý™=ÜÝ]=Ü°)=Ü„=ÜQ³=Ü"æ=Ûð9=Û¾=ÛŽº=Ú&=Îð~=ЋD=Ú'h=Ú§X=ÚwÁ=ÚG›=Ú?=ÙÞB=Ù¹¦=ÙŠk=ÙYÿ=Ù)d=Ø÷¼=جç=Øwê=ØaW=Ø&&=×õÙ=×˧=×™=×cw=×.î=Ö÷=Ö»Ë=Ö€=ÖH9=Öô=ÕÅH=Õ{ý=Õ+,=ÔÕ0=Ôr=Óò±=Ѧæ=Ìâ=Ï =ÐO¯=ÏHˆ=Í(£=Ê!œ=ÅÝÌ=Àô=·½V=©ñf=§nÖ=µ=t=½Ì-=×=ÇOÉ=ÈŠˆ=Ì"=ÍÎ=Φ5=Ï2•=Ï -=ÏÅÝ=Ïì©=Ïú =Ïúu=Ï÷=ÏÛë=Ïƾ=ϳ@=Ïh=ÏpN=ÏW¥=Ï4Á=ϯ=Îíƒ=ÎƘ=Ο%=Îxù=ÎGÛ=ÍÓ‡=Ík -=ÍNù=Í¥’=Í…P=ÍY…=Í0·=Í}=ÌÞ­=̳0=̇=ÌR&=ËÒý=Ë:H=Ë¢:=Ë©N=ˆí=Ë_W=Ë5=Ë -û=Êà]=ʵ‡=ʈ¦=Ê^ÿ=Ê5Z=Ê --=ÉÝÝ=ɳt=ɉq=É^ó=É3}=É=ÈÎ\=ȱ¶=ȇg=È_=È4ü=È -==Çßš=Ç´=ljä=Ç`©=Ç6©=Ç -î=ÆÉ´=Æ£¹=Æ‹Í=Æ`S=Æ4ð=Æ V=ÅàÕ=Å Á=Å3=ÅdÇ=Å:8=ÅÕ=Äèš=ľt=Ä’`=Ä^Ò=Ä$ -=Ä2=Ãëç=ÃÂI=Ãe=Ã?=Ã10=Ö=ÂïÞ=ÂÆÎ= =Âu#=Â@=º¸ˆ=»*=ºYù=»cˆ=»^P=ºéj=ºñM=ºòõ=ºÒj=º¨“=º|ü=ºW=¹®v=¹YÀ=¹×#=¹³(=¹“€=¹lý=¹D=¹÷=¸õ1=¸Î<=¸Ÿu=¸oh=¸W=¸0Þ=¸y=·Ú‡=·´È=·iv=·WÏ=·C¸=·Û=¶èË=¶Ç=¶˜9=¶p¸=¶Yl=¶2_=¶C=µÛ¤=µ¯o=µ=µk‹=µ@º=µ µ=´÷l=´Ô¾=´®/=´‡{=´`=´9T=´-=³íŸ=³Ç8=³Ÿ:=³WÑ=³&æ=³ø=³×=²àù=²ºÉ=²”X=²n$=²H=²!Ö=±û’=±Õj=±¬ª=±„&=±b´=±<û=±=°íò=°ËÑ=°¥ù=°ó=°ZX=°4z=° =¯çÇ=¯Ã6=¯¥=¯x=¯Rg=¯'<=®ö^=®Ùö=®¼=®–»=®mï=®B_=®#¥=®£=­Ù -=­¶j=­’=­l·=­E®=­!=¬ýO=¬Öè=¬ª¿=¬‹Æ=¬i2=¬D~=¬Ž=«ú=«Õ=«¬5=«…ô=«f =«Až=«”=ªÚ=ªCÆ=ª‘¬=ªŠÔ=ªf=ª@^=ª~=©çÞ=©1¬=©cQ=©… =©?‡=©Ç=© =¨úø=¨Ö¥=¨²K=¨Ž=¨d=¨9¹=¨÷=§éy=§©8=§\=§sÙ=§md=§'=¦Õ==¦í¸=¦Ód=¦¹q=¦”ö=¦s -=¦N=¦)ú=¦Õ=¥äf=¥Á=¥q=¥yù=¥V‡=¥3 =¥ -=¤e±=¤#q=¤žA=¤i=¤\F=¤&ç=¤ µ=£ôS=£ÐØ=£­–=£‰î=£g =¢Ô»=¡8~=¢Â= ·†=¢B=¢“Ý=¢pÖ=¢Lé=¢$T=¢ä=¡ç‰=¡¸=¡†;=¡~=¡]Ž=¡7,=¡€= çJ= Ò= ¯è=  = `u= Hå= &Ÿ= y=Ÿâ%=Ÿ¿,=Ÿ™þ=ŸzF=ŸXÒ=Ÿ6=ŸÔ=žò==žÊÊ=žTW=žVí=žhñ=žB=žx=žä=ÞØ=¾æ=›o=hÉ=TH=6û=Î=œô+=œÀm=œ’\=œ‡=œnQ=œLû=œ#{=›Ê9=›|÷=›¦ó=›¢#=›ƒ=›b=›A=›—=šþI=šÝ=š»Ï=ššk=šxü=šWï=š7 -=š€=™óT=™Ó=™²8=™°=™Zà@wÇü@vÑ–@v#ó@v6¹@vòÖ@wÅé@xÑ@w¥.@v†[@uNj@t¸˜@uÎ@uÓ@v{Ë@v´,@v}ë@uÜÅ@t¯_@sè@q•Ç@qg¦@r£¾@te @u½;@vl@v©R@v¯Ë@v—@vW@uÒ›@tüÂ@tÙ@saé@sbÙ@sìx@t‘¹@tû@u)@tåá@t‚^@sé=@s/n@r–9@re©@r¢Ô@s B@s[ë@s€@s…R@s{i@saJ@s%Æ@r°p@qä„@p³ @oOO@nA@n Å@n°@o¹¡@pƒ”@p§l@p6@oœ3@o+!@n¸@mò<@m4@lõM@mÈé@o -*@oûŒ@pNö@p]@oy @n…•@mq@j—”@g\d@dÁŽ@dˆØ@fÈ|@iÈ„@kûY@m%<@m­@mÔ“@mÀ7@m˜Â@mWÕ@l©¨@kG'@iu«@gñ|@g8l@g C@g!'@fÐ@fMF@fHŸ@g2¡@h£v@iå@jžF@j¸›@j¬@hÎ9@gŽ³@g@ @gï'@h”k@hDs@gD2@f¢,@f×@gC?@g*–@f¡@fHa@f‡Ÿ@g'ö@gŽ;@gWg@fÊ!@f—r@gä@gù5@hü@hÊÈ@h®|@h‹7@hfª@h i@gG\@fU‡@eÂÿ@eê@fˆ"@g@gUô@gR}@g*@fë @fŽ,@eòž@dåÅ@cN­@a˜D@`ÆÑ@a!@cÊ@dAà@d§@bÅü@a€{@aN¨@b¸@bé¾@c¾@bÜá@béI@cF…@c„>@c(@@aþå@`Aa@^¼@^uí@_¬ß@axü@bÆV@c>£@c(#@bßÙ@b›÷@bpÀ@bc@bm#@bt¸@bDM@a˜N@`F>@^‚@]=9@]z@]¼@^A @^1@^ Ï@^"E@]Í«@\Ue@Z2r@XóÂ@Y¨ç@[ÅY@]Ôâ@^Í¿@^\ª@\{8@YŠî@VÆ@U @Uà3@V_@VcY@VÎl@X}@Zö,@]@^Fë@^©¦@^ˆ.@^ Ÿ@]PK@\§!@\mu@\¿@]N÷@]µ@]²p@] T@[jç@XÑG@VC@U#­@U}@Uðx@UáF@VFa@WÊl@Y™á@Z“X@Z•Ë@ZPB@ZZù@Z¾q@[.Y@[rp@[d@[Wà@[ -@Z‘g@Z,›@YÒÂ@Y4l@Wï'@V0Õ@Tíë@U@V5Y@W~@X­@W£@Vî@V¥@Wc@W‹ @W•Ü@W&Ò@VË3@Vå†@WMÌ@W¯@Wè=@Wóð@W¿}@W:s@Vz‡@UÔ8@U¥‹@U΀@U­›@Tø´@T?@T)L@T‘@Tâ†@Uì@U+4@UT@U>@TÚ@T/Œ@S5»@RQ@QD;@P‚§@O(€@Mx)@Lÿç@N”æ@Q¦@SÎ@T @Taõ@T^ó@T4„@T›@Søa@SÐÃ@S~g@S½@R˜6@R\ø@RlJ@R®O@Rñ @S@SK@R©@Q¿¤@Pé@N*­@M@M±F@OZ@PÈW@QT@Q>&@Q -‰@PùÙ@QA@QÆ@QM@P÷Ù@PÝ@P†B@OÊ@NÈ@N@Mö<@N‚9@O-¶@Oª@OÖþ@OŠu@N³å@M¦a@L÷ @Lö@Msn@N÷@N¦V@NìÁ@NÅU@N@Lád@KÀþ@Kt¯@L@LôŽ@MM½@M5ö@M(@MZ¼@Mœù@M±)@Mé@MQ5@My@Lñ.@LÈ|@LŸS@LŒT@Lš_@L±,@L³!@Lž‡@Lƒ@Lb:@L¼@KŠ@J›S@I­é@IPø@I¯@J`~@Jâí@Kª@JÉ©@Jjœ@Jì@Iøª@IðK@IÓo@I¡.@Iª@I€â@IpÕ@I&Í@HÄ€@H”¿@H™@Hwâ@Gøa@GP‡@FÊZ@F\…@Eúø@EûÏ@F 2@G"@H9a@HTT@GÞ@Fñ @Eˆ@DÒ)@DhÄ@D¶ý@Eƒ*@FSK@Fλ@Fóñ@Fèò@F¿8@Fbõ@EœP@D=@B~D@@ä@?È@?uU@@M @BÆ@Cù®@E(@E¢d@E¶ž@E™ÿ@ET¨@Dî%@D”¸@D}N@D  @D¼É@D›¯@D4X@C®™@CT@C[û@C©Ç@CÚL@C”l@B»_@Aú@@nŒ@@õ@@Jô@@¤®@@È…@AÉ@A£¥@BNÉ@BžZ@B€¾@B0@Aøl@Aú@Bm@B&ô@Aø®@A~¿@@ÙÉ@@hä@@uŽ@@ÑØ@@ûä@@”­@?¿q@?$ƒ@?M @?ýí@@‘@@ª}@@gS@@ ¿@?Ü@?åH@?õ~@?ÀÝ@?@=áO@<…Ë@;Ѹ@ºÛ@?Bð@?_ˆ@?Gƒ@?Â@>å@>Àz@>¬<@>”–@>S©@=´C@<ˆþ@:ýf@9½ú@9u!@:2ì@;s|@<¢@=+J@=c@=g¼@=S¿@=8#@=%@=Ê@= ˆ@<âw@<•Á@<@"@<Ù@<Ø@<2˜@<:s@<*"@<ž@;ö @;Б@;Œ@;#à@:·œ@:oã@:R^@:Oh@:[s@:b@:Un@:F,@:K¾@:U1@:>L@:§@9½e@9kò@8ý×@8’~@8l@8Œc@8µÏ@8Éà@8ÉV@8“L@8l@7‹Ë@7²@7éV@8Q$@8[£@8ë@7šŒ@7h6@7”y@7åÅ@8X@7üê@7Á"@7i‡@6üG@6"@5î‰@5a4@5!y@5Lé@5¡-@5åj@6ä@6YC@6€Ø@6€.@6@G@5»ç@5'Ã@4Þ©@5 -ç@5€r@5Úa@5¢’@4­¦@3nœ@2@23'@2§@1à•@1—@1Z©@1<š@18@0Â;@0;m@0 I@0„ó@1^Œ@2v@2H@2îD@3û@2¨0@1üª@1„¿@1]@1î @29M@2*ö@1›s@0›£@/šê@/2@/ -m@/@@/ƒ@.¶G@.Uå@.Oy@.¡Ô@.È»@.Ž @.E^@.2*@.EA@.g@.@.‡¡@.ü@-*Ó@,¬*@,ø[@-Øp@.ö@0 @0…T@0Nì@/ð&@/ï:@0·@/˜N@.‘•@-kÑ@,Â@-ƒ@.[Û@/²r@0;T@/λ@/ '@.”ï@.ˆf@.˜@.`Å@.ù@.7 -@.ò@@/ßÔ@0®Â@1gý@1Ñ“@1®¢@1)@0o¼@/hÊ@-åÌ@, -@*T@(›h@'º·@'Ð -@(ý7@*á.@,©í@-´S@-ÙZ@-,X@+ê@*JÜ@(s @' ±@&þí@(…@(»Ñ@'©ÿ@%}ã@#¿²@#ct@$Hv@%lŠ@%ñÏ@%Öë@%”¼@%Êù@& Q@'Š@&Dj@$´£@#µ@$%@%vž@%ûv@$Ç -@"œp@ ë$@ ¯7@!ò´@#ÝÎ@%‹ @&¡Ô@'.ä@'U¯@'<@&ù¤@&—Z@& -`@%Y¬@%)¹@&T@'ŸÂ@(¡@)¬@)]@(Á@'z¢@%Dº@#^ž@"¶ @# -¡@#ºé@$0(@$@#u¶@# @"ùÔ@"Ür@"Z@!‘@!*$@!ÈM@# @#—‡@"“ì@ òR@ ;q@ š˜@!f8@"NU@# b@# E@"ä@"Ç/@#[@$ü@&b@& -@$u^@!µ@@É%@ -@†•@ s@"ñ>@$»k@%{œ@%¹7@%„L@$ªz@#` -@"3ˆ@!?@ U¨@ÅŒ@ 7@!!Ü@"`@!¬Ë@ʱ@ @Ä-@V@J™@šÊ@ìV@ †N@!A_@!ÞP@"@!âû@!º@!?@ ÷†@ µ1@ Y @Ë®@>V@ã@<>@Ãù@ D @ XQ@³j@ˆ:@“ž@H@{³@Z@ÐÆ@‡ñ@í@æ©@MÄ@ð@ç@¨€@ä@#=@<@у@æ@§‡@Ñ @þ@3@ŸÍ@ûë@R€@ ×@ß@„e@Š@€ì@$Ö@“°@%ç@Áé@È@Þ{@á»@K@3£@¬¹@ó˜@á8@€ö@ -é!@ -ª @ÿ@Ã~@É@t@¶¬@¯@ ‹@4Í@´@ ÓÓ@‡©@@_@%{Ü@'äã@& n@­Ù@%6@¤Ï?ü•é?ôcÑñ@@‰%@?‚@;ï>@4ß!@* T@=Ì@å@Â?ç’A?Ò_ü?Ì­x?Ù”‡?ô¬@ -ˆª@Y~@(N2@3£@;ƒ¡@?ÞQ@B{@C¶¼@Ev~@F†@F)©@D“@@ ô@9?„@/~2@#Bº@\ì@¼?ï‘~?ÕÔ{?űþ?Äjå?ÓÄ?íT@×—@E6@#ñ—@1Š€@=èk@HÇ@R Ü@ZY@`²Ç@eÎ:@hÅï@i^~@hÿ@g,d@dÂÚ@``ƒ@Z”’@T>˜@M9q@DµÇ@:W‚@.C @ “@® @L ?ååD?Éáï?¶•?°0?ºã?ÑÍ?ï'y@à©@;ï@!î~@-“@6èå@@.@I/è@R«@Zz†@b#C@h]þ@lš#@nj@n¡€@n½@nžd@q.¤@tæç@wþ@vö'@r‡Ÿ@kæ»@eóA@a·Q@\öÖ@UZå@KwÈ@Aá@8¹*@0 @&@µ@»T@6K@\Í?ô† ?ÙÁü?¾¥Ð?§ms?™þo?š|Ï?§­í?¼˜Ï?Ô©†?íŽà@fš@ò@/ú@&ÌÎ@/´4@7ؼ@@Ó@H=ø@OEŒ@Tx+@XD@]A@b©Õ@hA–@lˆ•@nÙ÷@o®@n ©@n.š@pfn@sS÷@uC_@vc¬@wLæ@wÿ@wæ@v$±@u%8@t @s8®@s @s*¶@qáP@nM)@h·Æ@b Æ@[³G@Vs@RA -@MœÌ@G(¤@>ÒV@5¯v@-]@&¦ü@ w-@ýÁ@ŠŽ@ÏÆ?ó€Â?Ý#¿?Æ ?®œœ?™2?ŠBZ?†HD?Ž±•? ”?¶´?Í1D?âMˆ?ôüƒ@Õ@ -Ð*@2¯@e·@®Œ@# -@)…@/’j@5ñ@:{_@>{å@Bz@G‘g@MÔ@SóW@X·@[Ó@]bs@]XÌ@\‚@[_ß@\¾z@_µÅ@b @b¹ä@bC;@b¨@b¤•@c¶þ@dÔ@eÝI@f­±@féI@fG@dŒ[@aÞ@^ºä@ZÜÖ@T}!@H­¬@5^@~º@ð@/p@'Ä@=ƒ@LÕ@Rã@U­T@VÎœ@VÄï@U$@R -@Nà@M¯@L|©@K«¨@I·@Fß}@CÅó@@mþ@<¦³@8ÎÚ@5=[@1´®@-–@(r²@"»@H@&‡@¢!@ %j@ã^?úþB?ì{ô?ÞH?Îˉ?½=:?¨q$?‘/Z?uÇ…?U¼²?JúT?W-?tɃ?Yc? “½?²?ÁÇ?Ðuk?ÞÊ>?ìÜ’?úV‹@#ú@= @ Ö@Ü.@«—@:Z@ -@#¶ë@'¨@+Nî@.• @1WK@3 v@5½¡@7ÖŽ@9Â@;&Ó@;»S@;é‡@<‚ú@=ì@?Ї@AFg@A¹@Am»@@àå@@10@?”Ö@?âŽ@A€Ã@Cwò@D–u@D¤Š@D%Õ@C´$@C¥Ç@D 8@DÓÞ@Ežù@Eò -@F,Ñ@FÚ@GrD@GW@F E@E Ù@Cïe@BÙ @BRß@Bn`@BœT@BL8@A‰|@@º½@@!@?×e@?ÏF@?÷P@@q@A\Ë@B@C±ò@D‘@E¬@D¤@CÔƒ@Bìò@AÎœ@@9@> @;Õa@:k@:“[@;É÷@<ûß@=­j@=éX@=Œª@<‰‘@;_®@:®"@:Z@9˲@8ú@8w–@8…;@8±û@8 @6 ð@3pH@1i‡@0³Ã@0ø¸@19@1‡@0¦@/ê@.<8@+Â÷@)ŽQ@(f"@(N@'WH@%s´@"ŸÃ@ &@µß@&;@ƒ‰@@äE@-@îÉ@‰V@ K—@ -J«@ê³@®^?ü?òk¸?èS?Ýç?Ó>p?Çþj?¼ =?¯*›?¡%?‘?5C?b~¿?Ioc??+u?HX?`ßß?€¤'?æb?Ÿz—?¬du?¸7?Ã|?ÎvŠ?Ù*Ø?ãUò?ì¶m?õÞî?ÿ*V@Ò@:k@ ó5@ \B@¹^@Ü@s÷@¡®@¾&@¨%@Û(@ß@í´@­@ž@Ë@íî@¬‚@!P@#ho@%3Ú@&Ø@(nì@)ˆ½@* -S@*7¹@*¨@(ôt@'O–@&TÓ@&ä¿@(•³@*8¤@+"@+N @+ÒÛ@,jŽ@,}@,i@+%õ@*6V@)µ@)ôX@*¹v@+‰%@,¢@+ê@+…Ÿ@+,8@*ñ4@+ç@+¨’@+øÅ@+ð‚@+ñ@,@+šF@)úO@'H¬@$Ïø@$Œ@%[Q@'eõ@(u@'Ý…@&©£@&xp@'£H@)1|@*f@*H@*5õ@* @)—…@(÷6@(œù@(Þ«@)@*Y@+0…@+ÛÇ@+åƒ@+;~@*2ƒ@(¦£@&‹@$ÝÁ@$›·@%\i@%þè@&h„@'I{@(˜È@)™ð@)îN@)¿Ñ@)_5@(ú»@(²S@(Òô@)Cm@)54@(n@&qG@%…j@%ÊÛ@&Žì@&ù-@&í@&Ð_@&Ëç@&8@%Ÿà@#±@!/o@…—@ 5s@# @&2Ý@'i„@&›@#*™@!n@! ï@"ƒõ@#ù -@$°@$Úq@$Ùã@$ú1@%(u@%*@$Ëõ@$&:@"Ü7@!R -@ ˆó@ ˜¶@ Êg@ ¢Q@ _ì@ ­@!…’@"\@#-@#à @#n1@"(,@ }”@:@±ú@±Q@!T¾@"“š@#/P@#[ä@"þç@"ò@ î@<@§å@ @"ø@7a@Ôw@ó¦@~¶@¸|@Ôª@Ï@WT@lÎ@sÑ@âÈ@ Ø@oe@*ù@@R @©n@K@±É@dS@'ˆ@gÕ@û~@Ù_@-¦@<”@wN@H:@[á@pö@S@´¥@tg@“+@¸O@ v«@ ‡0@é@ ¤(@ w@=.@œn@©»@î@+;@ˆJ@Ñ@Ws?û°"?÷VC?òBˆ?ë?ãÌ?ÜÄ„?سx?Ôx?Î@V?ÆÆ”?¾ê¾?¶>?¬’?¢b£?—ÄÛ?Œ%Ç?}»5?`Rû?D–ü?2o¸?06J?>m¯?WÆý?t•¼?‡×G?“ÚN?ž(â?§ á?¯ È?µåm?»Â£?Â7÷?ÊŒÅ?Óýè?ܨ?ãg:?è{N?íg?ñã ?öã~?û L?þdœ@ìï@™·@»Y@/ä@5Ø@\@Aá@¸ë@ò¼@œØ@Êp@¿,@ø@ ëM@ Š@ T@ ÏÜ@ ÂÀ@ ¡Ö@ -MÀ@_ö@GI@Q€@W‚@ ½•@ k@ `ý@ z@ Þì@ " @ bË@ ò³@ ~Ê@ -Å@ N€@ n~@ ”B@ 6‘@ š£@ ãj@ ‚^@ î@ )ž@ Y@ Ó-@ (@ •@ c@ 5y@ V@ Ä1@ e†@ -Ø@û@í«@ !p@ cR@ «s@ ØŒ@ |Ü@ 9@ ¤°@ }K@ ab@ ^à@ ’Ø@ Ó(@ ³S@ Ó@ -#2@ CÐ@ü6@ CÀ@ Ñò@ -s@ -ÌÜ@ -gÞ@ w@@7é@Å¡@ì|@tâ@_@ á@\0@Ò¨@ß@šî@}-@@Û@&F@—ë@à @›g@CÏ@ ÿ@ïÈ@Àö@d@¿ -@ÇÜ@’T@®(@ÖA@ê@„@É.@RÅ@\$@Ö(@õÕ@<.?þ¬/?ó1?뻨?ïQÄ?úè1@µ·@+y@'@¢ƒ@;†@ @É@:@#@áe@€`@ü@u?@‚ñ@ËO@jN@NÀ@RÞ@Y’@i/@¯ @ýS@¸ø@È@þž@C_@Œ´@Ýo@ôç@gÎ@M¾@WA@ñM@…@H]@D?ÿï?þã×?ÿÖ@ @^@ÿt@Ž4@Ký@@ .@ˆÝ?þî?üE?ývÍ@,@uñ@ë@„“@Ït@[„@gš@Ñ!@(j@ùÏ?ÿx7?ùó3?óxà?ñ\Ý?õ@T?úq©?ü%K?ú(‰?÷¡Ø?öå8?÷Í_?ùƒ?û˜õ?ýœ¬?þ,:?üÃ9?ú×m?ú<Õ?û€³?ýdK?þ«ò?þÓ&?üö?ù‡?÷ÀP?ø%È?ù´ð?ú¯?úÛ½?úÿ„?ûj‡?ûI?ùøØ?÷ep?óì?ñT”?ñ¶G?ô¨=?öù»?÷Ì?ö‰p?öÐ ?÷†c?øMî?ù5?ù§0?ù¼Ý?ùM¸?ø“)?øä?øXÂ?ù©?ù{Q?ùkÒ?ù?øâÔ?ù+9?ù±æ?úÖ?ù¶”?øýv?ø“z?ø“>?øÊ?ø“%?÷XY?õH ?òìˆ?ñKt?ñ.?òb>?ôM•?õôS?ö¬V?ö‘??õša?óÀà?ñb?ðc?ïô?ðŽ²?ð‹ä?ð ¯?ï÷Ö?ðµ?ñ´>?òMa?òw?ò~?òÌû?ó;™?óSS?ò´ä?ñn¥?ð"‹?ï¨?ïÞC?ðxI?ð’G?ðu¡?ð¡?ïiã?îغ?îbM?îr??ïé–?ð0¹?ïR‘?î%ð?íç?ìY?êÚ1?é°}?é7R?é2¬?é~l?êGß?ëY’?ìJ¼?ì¦?ìB?ëŠ3?ê¸ì?êXB?êŒÈ?êŸ ?꜖?ê³?ê€r?éü«?é°•?é«{?éZ»?趉?è?ç"?çGþ?ç@o?ç+q?ç†?ç?æ²?æ3?åG¦?äj-?ãL˜?âŒÉ?âäñ?ãض?äY#?ä, ?ãɲ?ãg±?â¹L?áNî?ßWš?Ýí¦?Þß?ߊq?á"+?áð$?áä&?á¬?á{Ë?áp?àÇ°?à˜q?à-@?ß–?Þñd?Þ*Z?ÝyÇ?ÝF?Ýež?Ýi÷?Ý)?Üî?Ü¢Ð?Ü0‹?ÛÈW?Ûªy?Û÷¯?ÜbC?܉ñ?Ü_m?Ûø?Ûžx?Û¨‹?Ûèû?Ûâz?Û}»?Û  ?ÚüR?Û?Û?ÛMv?Û}m?Û[â?ÚðŠ?Ú^?Ùçj?Ù©?Ù—¦?Ù¸©?Ú­?Ú‹0?Úö?Ú.?ÙÍS?ÚC?Ú©ò?ÛUP?Û×Õ?Ü?Ü L?Ûìð?ÛçÔ?Ûü?ÛÇ ?ÛÉ?Út ?ÚZr?Ú‰?Ú6÷?Ù¤·?ÙXÊ?Ù5´?Øò7?ØY¿?×ÝÜ?×èÆ?×÷×?×°N?×sf?×e÷?×by?×M ?×/Ø?Öð–?Ö|?ÖG?Ö! ?ÖU÷?Õì¯?Ô÷T?Ô -?ÔÄí?Ôë ?ÔgC?Ó½N?Ó‘±?Ó¨÷?Ó“?Óa?Ó -?Ò<?Ñ%5?Бð?ÐÄy?Ðßò?ÐJ&?Ï\—?ÎN=?Í*;?Ì.ö?Ë+O?ɲV?Èñ?ÆçA?Ƴ?Ľö?Âö^?Àì?¾¿A?¼‚Ì?º»?·bb?´p§?±'d?­_5?©\h?¤ôi?ŸÏÒ?™òì?“]’?‹Íç?ƒ3“?rª?\H˜?H’?>×”?Eóñ?YQT?oóé?‚)?Š÷Ö?’³=?™4\?ž¤?£|è?§Ò¿?«¯?®nq?°û?³ÂT?¶„Ý?¸Ëp?º§J?¼:‰?½£˜?¾òw?ÀË?Àø?Áð…?Â^?Âp?Âê?ù?Ä›e?ÅsÅ?ÆZ?Æx -?Æíw?Ç?"?Ç~?ÇÒH?È á?ÈÚ?È N?Èt?ÈLÅ?ÈH^?ÇÈÏ?Çie?ÇcŒ?Ç›w?ÇæÔ?ÈØ?ÇæÔ?Ç!Ž?ņ?™é?½öÑ?¸s÷?µ:?¶jb?»„Š?Á‡?Äëf?ÆÊ«?Çe´?Ç{ƒ?ÇE?Æ„s?Æx¦?ƨ|?ÆÏ%?Æå3?Æ¡h?Æ?Ý?Æ3‡?ÆCÓ?Æ -Q?ŪM?Å’¬?Ų%?ÅÅ?Ũ©?ÅT)?Äèa?Ä’Â?Ä£¾?Ä”:?ÃÚb?Âßb?Â4?Ã:D?Ä™?Ä/¹?Ñ?Ã#|?Âúm?¹W?”Ô?¬?ÂÒi?ÂÆ??Âœ?Ân?‚Ž?†?Â^?Áëø?Á°Ÿ?Á¬?Àü4?Àž?¿@ä?¿?¿C¦?¿~G?¿~B?¿KÖ?¾õ?¾Šò?¾¥?½âx?¾'k?¾ŠÏ?¾¤:?¾eý?½çÏ?½)Ç?¼"ü?»i?».Ý?ºäÔ?º”“?ºÅË?»c?»Ó?».?»Ÿ?º-°?·rÀ?³Ž/?°œL?°t?±~O?³ë¡?µü?¶¼i?¶óU?·åÊ?¸Ñž?¸›é?·ï(?··-?·]´?¶èj?¶à`?¶Ì–?¶l?¶p?¶ôB?¶àG?µ¹u?´Y4?³Ö ?´t?µ‰R?µ¤Q?´z“?²Â5?²?²¹á?³ƒ…?´j?´ª?³.?±ªP?±/®?²~?´>?´Q•?´‚?´ú?³ÆM?³4u?²>K?±È¡?²{?²É?²ˆ©?²w?²ds?²:k?²L!?²kÚ?²VÊ?±ìî?±a ?±Ö?±e?±Bb?±u?±h”?±W?°¹‰?°Ïâ?°ÎÏ?°¥ ?°Ïa?±Ë?°«¹?¯ér?¯"t?®¦ä?®“?®É£?¯6J?¯‚´?¯v½?¯Wr?¯&â?®á§?®í%?¯?¯?¯'~?¯L‚?®ù7?®>>?­¶g?­~ù?­m?­L?¬Œð?¬iŽ?¬ƒ²?¬CÄ?«æì?«Æg?«ßs?«Æ?«7K?ªÒ ?ªô•?«b4?«y?ªÝÃ?ª&¬?©Át?©¸S?©Ýù?©÷¬?ªI?ª]ê?ª -Š?©Ÿÿ?©?¨ñd?©Ì?¨Ð?¨…×?¨¢½?¨út?©Av?©¯?¨Ž·?¨ þ?§Û?§È?¦µ ?¤i¿?¢Yg?¡Ðv?¢xû?£G¥?¤.L?¥[?¦uâ?§Ù?§_”?§¥e?§¹&?¦ý6?¥Ã?£ð¼?£ ?£„b?¤Ÿ?£÷á?¤|?¤F¶?¤pX?¤~ï?¤t ?¤+?£n -?£ ?£fù?£»ž?£™,?£>š?£j?¢òL?¢Ç‡?¢—–?¢ä?¢«~?¢üë?£×?¢Ån?¢T?¡ãO?¡£ß?¡íß?¢hO?¢Èg?¢£N?¡ý¾?¡X0? š|?ŸÉ5?ŸYæ?Ÿ²Ø? †è? ¯Ü?Ÿæ…?Ÿ ?žhF?žg‰?Ÿ@?Ÿ»µ?Ÿö³?Ÿ¼$?ŸZþ?Ÿ7f?ŸoH?Ÿ´‹?ŸÅ@?Ÿdû?ž±›?ž/º?ž,*?ž(æ?äÍ?ʤ?ä¸?ž¥?É'?c‹?œö¢?œ?ó?›R9?šÎ)?šÈ"?šä?šÅú?šmF?šJ×?š´y?›?šœŠ?™ïe?š ?šÑd?›Go?šük?šH»?™Ïð?™ê?šY?šÎŸ?šó°?š×u?šŸb?šMB?š-y?šYù?šQ›?™ÂS?™ Q?˜ãÊ?˜ð?˜¹’?—õh?—œj?—þ%?˜.k?˜`H?˜kÇ?˜Fc?—ôÆ?—,œ?–`/?•¨r?”¶ù?”YÞ?•'?–"t?–|Ü?–.?–3?•š†?•?”©«?”T?”;¦?”?Æ?”¾ˆ?•yz?•I|?”X‰?“ðg?“Ô)?“¾?“õ…?”+w?”1?“âY?“j¹?“Kt?“Œ4?“ûs?”@?”*W?“íE?“ªJ?“nâ?“I¯?“(Ê?“ ?’ÆÝ?’ Ç?‘`æ?Û -?Ë?ðd?‘‹?Ýu?ª3?‘Ê?‘h?‘™;?‘ù~?’1D?‘Ãà?ûe?ˆˆ?t»?uÈ?s´?Q*?K?LŽ?ô*?lÊ?6ç?O…?Q¡? ?Žßì?ŽÙœ?Ž­?öÃ?•3?IU?'×?>?Œö¥?,÷?7á?ŒóÐ?Œ×?ŒžÙ?Œ¹?‹Û€?Œ…?Œoœ?Œ”ô?ŒŒŠ?Œ\Î?‹·Þ?ŠëÛ?Š8?Š¾Ë?ŠÅ?Š­f?Š~+?Š84?‰ä?‰w5?‰i'?‰Ú ?ŠG2?ŠxŒ?Š[@?Š)ú?Š ü?‰¶?‰+°?‰U?‰%à?‰:f?‰’ê?‰¾¯?‰p?‡ñk?‡j@?‡x¸?‡Ð×?ˆsô?ˆû#?ˆÁ„?ˆ ì?‡¨^?‡|Ç?‡~7?‡†f?‡€)?‡7·?‡=Ç?‡x)?‡i?†p7?†“?…ð@?…߃?…¼Á?…¿…?…ùà?†#Q?…ó ?…½¹?…©g?…Ș?†„?†?…œ?…G6?…6#?…b¿?…d$?…"T?„îÕ?„ØŽ?„ƒh?„ã?„3õ?i“?i,¥?hÓ?h·Î?h&Œ?gAç?g’?g>ï?g.Ä?g/x?g¬Î?g…ä?fŸ#?f?e³ë?eŒ}?dï­?dh?d®?d%?c à?dH?ds®?d2ø?cÒ¯?cI¬?b]??a±Ð?aÄì?aõÂ?b¹?bRÞ?b†S?až?_òq?_sN?`2L?`²º?`kW?`_Â?`ÅŽ?`òt?a?`íŒ?`&R?_ØZ?`ä?_Ý@?_"?^Y¤?^‚ù?^ë?^ -l?]ž›?]–™?]Yv?])×?]ƒÐ?]“?\™Ì?Zù¡?ZT‡?ZÛ8?[D”?[.ð?[-µ?Z÷º?YЫ?X–â?XÈÓ?Y?XðB?Xôž?X¹Å?Xª®?Y«?Y·?Y¿K?Y–?Y˜[?Yº#?Yüd?Yá_?XÖ2?X )?X û?X‹?Xã?X¸3?X¿r?Xéâ?Xn&?X ?Wñ?X A?X$?WÓÒ?Wcâ?W–”?WwŽ?W3?Wq=?W`ü?WÍ?VÑÿ?V«÷?VÄÉ?VR?Uâv?V=ã?VÒû?V€†?VÙ?Uãï?Uªd?UÃ?U‘O?U¥??U]—?TÀÚ?Tš -?T$¿?SF‚?S -²?S@3?Si?S¥G?Sl©?Sl'?S"?S¿?R\~?R(´?R¶?J¢`?K{Ý?Kì°?K²?K1O?Jº^?J”w?J÷S?K|?Kµ€?KxÜ?J´‘?IFŽ?Gð¶?G¬o?G˜ -?G‰¾?G¡‡?G©t?G»J?GÎÜ?HÊ?HPT?G„ ?Fbç?Eæå?FŸ=?Gr:?GžÂ?Gâñ?Gµµ?F™ë?E˜¶?E†?E Ì?ETD?E“?E-é?DU¡?CX+?C?Cà?DR?DZ‰?D-?DD?Cäí?C]D?C}u?Cñ^?C¬Ô?BóÂ?BT¡?B_{?B¨ö?Bkç?BDÐ?Bu`?BP´?A¡ ?AN?@ÞÊ?@ä[?@ÁÌ?@N³?@ -&?@??É??|??5H??¦5?@]•?@?Ÿ??Â}??ßÈ??ÑB??Q±??ÞÃ?@~??›‰??HF??+??"$??-h??„?>ê#?>Â,?>΋?>Î?=Ù?>1?>&Ï?=žä?=8Â?=:¹?<½Z?<M?<(y?<~Æ?<\?<9?<?;÷??(ÓÇ?(E“?'ki?'% ?'L?'ü¹?(?'¨Œ?'Zý?&u6?"sI?ÉŒ?0 ?çÂ? ψ?!ãá?#þ?$ %?$IÖ?#¶ ?#4ž?"Ä -?"Ãœ?"Î?"°=?"á%?"ã?#1ø?"Ž-?"­O?"¡+?"‚¯?#¼?#¨À?"á¢?#KÖ?#YÊ?"êÛ?"¿G?"¹Ÿ?"¥~?"çÔ?"îX?"ëÃ?#uk?#«?#S«?"±?"@›?"?!ÍÉ?!x‹?!¾9?"[…?"Y'?"C?!µÿ? $ï?tI?t„?oí? Ïë?!¶´?" -é?" !?!åm?!ÁW?!¨‘?!…è?!‚?!S°?!z—?!Sy? ‘f?¤?ß[?.‰?6A? Ÿ«? Ð? €‘? ›?˜É?wˆ?{R?Æ? 2v? Ol?àÞ?—?´?´?jE?ä ?ab?¢>??]?|ä?û±?â›?ÆO?Ëï?¹1?m£?‡¯?!h?þ)?Û4?ÂM?(¿?Ë?XC?l%?¤“?Õ?iÄ?Qw?Ó?1?÷ø?Ž‹?”?Í?ç¾?8u? ~”? +â? óE? yº?É?c?´?U,>û=©>ôîë>ì™>ߧ">ÎØ>¼>³ú¹>¾F7>Ó;>ãØÞ>îÈ>öp>üµ.?÷Q?Uô?‰?<Û?Ùå?˜ -?T·? ¨Ì? -»v? #? ã$? ¦y? Ïj? ½'? Óp? Ê -? ÅŠ?   ? ïI? J? :Q? Fñ? x.? ƒ»? _s? !ë? ïŠ? àÖ? Z? L}? `D? S ? ? ä? â^? ‘&? xæ? ¿Ë? õÐ? ÍB? x½? >ù? 'j? ,"? a? ßi? ¦h? ™×? ¥Ø? Ã? v³? só? CR? 7Ì? lÈ? _Ã? A? -¯? -pG? -žG? -Æ?? -–î? -%Ó? Š=? ?Ä? !?$•?5!>ÿkü?m?€ª? ? e? ê?ß‚?µC?¼ ?ÝU?µ5?u?p"?A? «?׳?a?x•?Wâ?C\?&0?¾?Ö?qº?&D?(?Ø¿?ã?0?Œ?"9?EÑ?î.?z˜?˜§?ô?@?“L?@??ó?êª?ω?¢m?9§?þ?íÑ?Õf?ˈ?Ö[?Â+?¦Ü?R?å?"ü?Cµ?4]?÷?™j?fÂ?fK?p?yí?0?¹=?° -?Õñ?¬š?W?2u?[?gô?W?+?ài?²e? ?¸Ð?¥¼?}?Sñ?:Ó?0‰? ¡>ÿé>ÿØ®>ÿȳ>ÿx >þƒÅ>ýÈn>ý¼>ý}#>ýq>ýç>ýŸ£>ýbi>ýf>ýJ>üµ”>ü®>ühÎ>üÓ >üØû>üÀq>üŽ»>ühÈ>üV:>ü@«>üŠ>ûè¿>ûÃ^>û˜»>ûj™>û;_>û ¤>ú± >úvÑ>úr®>ú3÷>ù1a>ø@E>øóE>ùhf>ùT>ù?a>ù ë>øÑ~>ø–ç>ø{6>ø`Q>ø0›>÷µÓ>ö„X>öM>÷/ >÷Vš>÷3>÷}>öÔ#>ö§;>ö„>öU­>ö!.>õá>õ¨.>õw >ô×>ó¦6>óÌä>ô_€>ôk¯>ôW‘>ô2>ô>óÑñ>óŽh>ó.>òöº>òú5>òÞ#>ò‰>ñ²>ñ m>ñ‘E>ò…>ñþ(>ñÛ¤>ñ³¿>ñz>ñG:>ñ%ï>ðý>ðÍ>ð—6>ðo†>ðY`>ð%L>ï®Æ>ï‰>ïLn>ïyà>ïX#>ï-Í>îå§>îO¬>î!>î'¿>íËó>í á>ìýŸ>íE„>ìþÌ>ìÔ>ëÝ >ëÖT>ëÉQ>ì¤9>í^>ìÊm>ìu>ìs¦>ìA>ì#H>ìÌ>ìE:>ì6f>ëì >ë¦b>ë•$>ë¿9>뎟>ëlä>ëI¡>ë-^>ë"æ>ê·0>ê/Ë>ê_â>êÍF>êžó>ê88>é²>é_>éq³>é/>èer>è8>è^Y>è•b>è½ö>趄>èL ->çÜ>çÛ·>è7=>èv¨>çðÁ>ç]±>çR®>ç¨ô>犞>æç½>åtµ>ãEO>à2m>Úø>×€>ÚÁ>àá¶>ä¤Ò>å8>ä]">äU/>äbX>âë ->áÝ0>ãó–>å„­>å°L>äÙ[>ãgç>⯠>ãuä>ãâÂ>ãÑO>ãÖj>ã§é>ã#>â³9>âÖ[>âúï>âªÂ>âf¦>â‹®>âu©>âO>â#+>â m>áü6>áŠ{>᎘>á×t>áßP>áÁÆ>ár@>á8>àév>àý>àæ;>à±r>à>àN:>à*û>ßës>߯a>ß‚n>ßT¯>ß9V>ß% >ß>ÞâP>Þfã>ÝR>Ýx^>Þ1¶>Þ@>Þ(Þ>Ýøú>ÝÆ…>ݼ>ÝÔ >ÝÁD>Ý™ >Ýo>Ýk´>ÝuØ>Ý^>ÝNI>ÝAø>Ý;<>Ý<>Ý&°>ÜÝS>Ûêg>ÚáW>Ú0y>Ù³…>ÙXè>Ù¤>Ø¿ >Ø^>Øs;>Ø8G>×ÿ†>×ÌÖ>וÛ>×_³>×$>ÖûH>ÖÉc>Ö£³>Ö†ê>Ö^Ÿ>Ö9ù>Ö é>Õð¢>Õ|º>ÔUN>Ôs¿>ÔíÁ>Ô ,>ÓÆÜ>Ô•>Ô˜k>ÔRc>ÔZ>Ô<þ>Ô!L>ÓùZ>ÓËý>Ó€a>ÓQ>Ók>Ó >Òñ!>ÒÐ:>Ò’0>Ò7Ñ>Ò>Òú>Ò>ÑÕ>ѨS>Ñ{œ>Ñ`d>Ñ*K>Ðe{>α¢>Ïr>ÐR€>ÐQÉ>ÐM>Ïá&>ÏÍ…>Ϩ>Ïq2>Ï6x>ÏL>Îèî>ι£>Îu½>Î5k>Íâ^>Í­Z>ÍYC>Ìɸ>Ìs„>ÌC_>Ì#„>Ëòz>˼B>Ëœb>Ëp>ËE€>ËN>Êüí>ÊÛ>ʘ«>Êtß>ÊV´>Ê,">Ê ™>Éòô>ÉÛð>ɵ>ÉŽØ>Érj>ÉFÙ>É-ö>É _>Èâx>ÈÅ_>ȤÚ>È>Èi>ÈkÝ>ÈYÖ>Èé>ÇùU>Ç™z>Çiû>ÇF=>ÇA>ÇŸ>Ç7H>Ç#d>Çm>Æ®*>Æ[ä>Æyõ>ÆG >ÆJ5>ÆŒ>ÅÐå>Å_Í>Åb>Å >Äßô>Ä”6>Ĩþ>ÄZ >ÃŒÙ>ÂîH>¹Ò>Â9ä>ˆ³>ÂS>Áßž>‘Ê>ÃÑ>Âö¨>Âä>ÁB>Á6>ÁTq>Á® >¤>ÂYà>ÁÆ°>Á2>Á›É>Á>ÀÝ>Á£y>Âá>Â\Â>Á°>Á!ð>À=O>À´_>Á.“>ÀÕ¤>ÀbM>ÀGB>¿¿Ì>¿º>¿ïª>¿¼V>¿ØŒ>¿§5>¿yü>¿Hè>¾¡ƒ>¾“K>¾I‡>¾¡>¿Ö>¾¿0>¾ô>½Ä>½º>½·ú>½çy>½~’>¼ð>¼“§>¼Î¶>¼Î¼>¼¡¢>¼Mí>¼;æ>¼#—>¼ D>»Û>»b>»*>»E >»`8>» h>ºÙÈ>ºñ>ºÉ{>º¥>ºt>ºm=>ºUZ>º$Ø>¹ò+>¹à>¹Êµ>¹¥z>¹PÛ>¹°>¹>¹ 8>¹ú>¹å>¸Ýa>¸Ãï>¸­5>¸u>¸5>·ßÆ>·q[>·%>¶æ¦>¶¯ˆ>¶‹þ>¶\Þ>¶, >¶O>µÐä>µ¢ˆ>µ{ >µEå>µ'.>µ;>´×;>´Äb>´¤ ->´¦>´mö>´A€>´¸>´ô>³Íó>³¨>³„4>³Tõ>³(t>²áW>²¢>²‰ >²[é>²))>±ÜS>±µ–>±Ã[>± 9>±}i>±tU>±U×>±#a>±,>°Õ>°¥#>°DC>°Á>°C'>°Dq>°Û>¯÷Ô>¯à\>¯°>¯}l>¯O©>¯8>¯%>¯Î>®Ù>®Ç>®²Ñ>®Š‘>®r‚>®J‚>®–>­ÿm>­Ê•>­—Ê>­>­k=>­E>­$„>¬áH>¬ƒk>¬^,>¬>¬kL>¬=Á>«ÿ«>«à>«ËŠ>«‘>«jZ>«\>«(¹>ªðE>ª½ >ª…¶>ªMÁ>©å®>©m°>©=f>©3½>©>©>¨öÕ>¨×ë>¨Ùh>¨ÓV>¨¹>¨‰×>¨'ë>¨6>¨ ->§úÏ>§ñ¯>§ó¨>§ðœ>§ò‹>§í>§¾À>§ƒå>§$D>¦×’>¦Õ >§<>¦Øq>¥ã]>£žó>Ÿ½=>œâô>Ì>¡› >¤W>¥ŒM>¥½>¥l>¥|>¥èÐ>¥½>¥Å`>¥«7>¥Ví>¤áÙ>¤gZ>¤ô>¥i>¥“>¤ÉÝ>¥>¤÷‘>¤Õ>¤âÇ>¤³>¤v5>¤LÑ>¤´>¤$>£s¿>¤I>£ýR>£…^>¢i±>¡¿¹>¢Iž>¢i>¢lŒ>¢¥u>¢¬û>¢˜.>¡ýV>¡„Æ>¡é>¢Mž>¡t>ŸçÚ>Ÿ®r> dd> 1>ŸÝ >ŸŽh>ŸHâ>ž©>ž÷ð>Ÿ >Ÿnz>ž÷>œ÷Æ>œ9ð>ž>žˆ>ž¾>žD»>›â8>œ6>œgr>™ž`>–Õõ>”ï2>˜Ñ%>œ×ð>š(Ê>™Pê>&±>ž'±>šê>˜Z>›Í >yÜ>›Pì>™Â>š>ß>™b>š‹D>šeˆ>›qÊ>˜Ï‚>™~ô>›ô>cP>žSí>ž!A>'ý>›ŠJ>š°¬>›Û>šµ~>™Ì:>™¸x>šiÝ>›bå>›©¹>šF>–¬>•>•VN>˜ó>š œ>˜×Õ>™&y>˜G¢>™L>™uG>š¸>™Â$>™‡Ú>™Já>˜FÉ>™{>šÜì>šû×>›f£>›f ->šJs>–à[>”}o>–!T>˜”4>—óR>”„ƒ>–X³>˜ï>–d>—CË>™a>˜qµ>˜Ft>•Ò>”Hõ>•˜<>•y>• M>— >—CG>–Ð’>˜Ã>˜¡>—û:>—/>•Ü>•«>–D>—}â>˜-Æ>—û‹>˜bx>˜—–>˜Dµ>—Å;>—f¶>–êX>–Æ>–ð>•Ãœ>–,6>–ç>–µ>–Nn>•ú¨>–1Ó>•ÀZ>”Ò>”­>”Ñ>”ˆu>”by>” P>“v8>“iE>“‹Ç>“Ss>“'á>“P>’äX>’´Î>’¢f>’„Ø>’’†>’ý>‘à!>‘µz>‘ÃY>‘°t>‘Š\>‘xä>‘u>‘T_>‘G>òœ>ð>§Y>˜Ë>§>}>O¦>Bx>( >Þ…>¢Æ>–€>Ž@>vd>nä>X˜>'x>š>É>ŽÝã>Ž¸¢>Ž¯9>ŽŸ >ŽhÌ>Ž5™>Ž†>ŽK>Ò¨>æõ>êE>§Þ>|ý>Š­>fz>*¶> ¤>,>Ã>ŒÍÙ>Œ‹š>‹R†>ŠL?>‹=^>‹åS>‹Á>‹.=>‹N‘>‹‚Ø>‹!m>Š‰â>Š™–>‰ÅZ>‰Iü>Š<¬>ŠL>ŠdÒ>ŠQ>Šù>‰ÔÐ>‰=æ>‰z@>‰§>‰{;>‰c=>‰F¦>‰2>‰€>ˆñÉ>ˆÙ`>ˆâc>ˆ¼û>ˆ‘<>ˆX6>ˆW1>ˆ?y>ˆM>‡áY>‡‹>‡UV>‡w^>‡™Ô>‡tÙ>‡j÷>‡m>‡q>†àb>†ÎÃ>†Øõ>†Ñ°>†m>†F>…ý7>†6m>…â®>…—^>…3>…4f>…B†>„ÖH>„}`>„’ä>„sà>„JB>„\í>„S>ƒ®W>ƒ£j>ƒ|ê>ƒ=Ó>ƒCš>ƒ*)>ƒ >‚±·>‚º>‚áa>‚î!>‚ÞÔ>‚‹:>‚?>¾—>Þî>ó¾>›ú>V>6Ä>T>6|>€Í‹>€1>€™3>€M4>€B>¯_>€J> È>@w>ËP>€>h>Ýh>~pÚ>}%>},£>|2>|¼l>}|>|òí>|M>|">}J>}Ý“>~x>}ºt>|ùö>{‰ã>{"Ê>{}>yÃA>yâ>zUë>yxë>w®*>rˆ>n$ì>r×>xv_>z{à>z‡*>yö7>x*!>výp>vŸ>tÕ6>tœ>tO³>tÇÙ>ubR>uìø>vÎ>w‡µ>xyÅ>y0f>x‹>vÐå>w“>wsy>u%«>qðd>o0 ->mk1>mWj>mOÙ>mÕ>m¬£>o!>q‚>pÔÀ>rSC>ta`>tJs>tbP>u -H>uq>tσ>sÏß>rÇ>pÃ>oØ,>n >lòº>iå#>dÁx>bÆA>búˆ>cŸõ>e×>h6C>ië]>kV³>lÐÚ>nHu>oµ7>q*J>rVP>ru>r7Ð>r<ò>rA>q«P>q -Ê>pÜÁ>oËZ>mÆ_>l5>jŠ7>h*>ez>a£^>^_P>[ëÙ>Yâ>Yà>[]ã>^?à>aNÉ>cá>fÐ >ià7>l‰>mÀá>n ³>o¨Y>p{K>qÐp>r ™>q¬>qì>qØ">qT>pßJ>pÌ>p¨·>oAP>m3…>k4>i´ ->gÉâ>eEH>bÁ>^âÜ>[x(>Vÿ>Oöå>L)×>Jÿ}>Lù2>Qù>U€¦>YŠ£>]W>`u>ck">f&>h@º>j#>lu>mM>o1Ê>o&Å>o#p>oG>p¾1>qj`>pñI>pÅa>pMG>p:Í>oÒà>o‡>o§ >o6C>mÈ7>mXÝ>lÍ~>lB&>j½ö>ijÊ>gY>eT³>bÎ/>_TT>[–Õ>WMï>Rüc>Lø?>F†>AÝÀ>A°©>EŠV>J«H>Odä>Tp„>XË$>\@Þ>^÷†>aÎB>d52>f"®>fñ>gºÓ>hA>hV>hð¢>j/×>jÓi>kCÔ>l>l¬F>lP>l—>lñ9>mW>m¬>kzÒ>kË>kW‡>jj”>jbˆ>jÌH>jK£>h`’>fíž>f¢>gX¿>gbß>fž8>dwÕ>b˜ý>`÷\>_/>^9>\5”>YUÔ>V¬>S·>PÇ#>M²N>Jˆõ>EåG>?â>9ø£>4$)>1“å>4lF>:ô>?Ù~>DÄÞ>Ié>L˜k>Ou>R38>T`”>UÚù>Wi1>XÒ1>Y¸Ù>Zm³>Zå[>[8:>[w>[É¿>\ß>\Ú>\ê>\>[Æ >[g >[Ûw>\Ÿ>\ì>\í>\à>[Þü>[W5>[‹U>[k>[)¹>ZÆj>ZÝç>[-I>ZðG>Z‰»>Zq~>Zn>Z@µ>YÒ9>Y¢¢>Yvœ>YS>XÝš>X¹—>XNg>X ->WÀê>WP>Vì˜>VvŠ>Uûx>Ua÷>Tš>Sæ_>S-ý>R-O>PûW>O…@>N¥>L0b>I³¿>G7ê>Dœñ>AQ>=P…>8£>3Y >-VÁ>&®>$à>)Ù>/B‚>4{b>9 _><ÿ°>@]>C(u>Eˆ>GŒ>I4°>J¢e>K¾ >L°>M3Ñ>M©¶>N9¡>NŸü>O0ã>ON'>O‘>O§Ä>Ny>MOi¶>P¥>P†>P ê>Oa°>M4|>KòÅ>N$>O86>O&]>NØu>Mþï>N†>MÖ>K¡˜>M>NL¹>M³x>Ml¾>M§Ü>M®U>M{B>LtÚ>Lo>LÛž>Lâ1>LªÌ>JÅ>Je ->KÏ)>Kï>>K.y>IbI>Jž°>KE‘>K?œ>Jö >J˜E>J~ã>Jmó>JEe>Ië¬>I”æ>I->IÖ>H­o>HÓØ>HÝ>HŽŒ>H,Ê>Hû>G¡Ò>EÔÈ>D«µ>Eo>E‹o>FB>E"w>Coà>D3Š>D@ >C¥í>Bü1>B!˜>A$>@ ->>É7>=4q>;¾>8x>5³<>3d>-°>(Ÿ#>'7¨>"¤“>¥Ã>ÍS>»">A>VØ>$Zf>(Èi>,©Æ>.šŽ>.ëÇ>3õE>6ÿx>8µ>: ý>;0z>;ü©>:à§>78×>7Ûó>8O>>Né>>-Ë>>ùè>?R>?U©>?U­>?U¨>?Qú>?T>>Èá>>o0>>s¨>>Z>>E>>wb>>;Ã>>¨>>lZ>>9>=ÒÆ>=½ù>=½>=½|>=»->=>= ><žn><|•><=><% ><+>;½l>;ù>;·}>;c¼>;Y[>;Y4>;UÜ>;¥>:¯Š>:ŽN>:Œ»>:‚>:g‹>:"!>9Îç>9Àm>9¶%>9¡¹>9pÇ>9 >8óc>8àv>8Þò>8„h>7:J>7­œ>8$>8(p>8.>7Qò>5¨¾>6ƒ>>6X>2Uø>3¯¡>6f>6Žl>6|>6rc>6*L>5Ñ?>5ÄÅ>5ć>5¼H>5b‡>4úl>4÷>4÷æ>4ëb>4Œ>46á>4,Š>4,U>4$'>3Óh>3Yù>3 w>2Ó>3W>2» >2•Ë>2“¿>2}¼>2¹>1Ä»>1Lg>1¢>1>0ù¿>0Ìô>0[¶>0Ô>/ç¦>/l>/1->.¿v>.V^>-áÖ>-dw>,¿ì>+É!>*dm>)Ú—>(çN>'|G>%‰t>#|>!7é>o¼>;B>„ˆ>67>[ÿ>P‘>²ß>ýa> ˆR>å=>]¨>(A>]„>?)>¸e>!›0>#)Ø>$‡L>%±~>&‰³>'->'º>('[>(h!>(Ç>(ø">)>)>)±>)>)ð>(ð;>(‹«>(Á>)=>)$>)&>)!>)i>(Þô>(’D>(„Ö>(%|>(…>'´…>$¥>%¥f>'ÿÕ>(!Œ>'¸ê>'pü>'k>'j÷>'jò>'fX>'>&1>%2î>%ô—>&–$>&Še>&fN>&œ>%Õ>%ÒË>%ÒÀ>%Íi>%ˆ+>%Ã>% >%o>$ùu>$Òœ>$Ò¾>${h>$?À>$:õ>$9é>$)Ä>$m>#Çà>#w6>#n—>#nƒ>#nY>#a=>#F>"¨¡>"zá>"~8>"Ÿ©>"– >"9#>!á€>!É<>!y€>!ž¼>!Èk>!oå>!o>! -]>! -?>! -!> ÿ)> ¤Ó> I—> >F> > > = > 4 ->Ù>}{>r0>r ->né>Oç>ýø>°„>¦>¥ø>¥ï> >W3>íd>Ø9>ÅÇ>¬l>‹þ>Œ>,¶> æ>Ò'>w¸>êÑ>ÏÎ>^k>B`>A³>@´>/_>ÿº>6>v€>cï>a_>p‰>2>»\>©>©„>©>¥ô>|_>A>á·>Ýt>ÝH>Ý!>ÏG>Q(> ­>F>øö>'>å >~>6ö><>E>E3><ï>Ý>xÚ>x>yü>xÂ>w?>Fy>½>Ÿ`>£ >’>s¡>ûÃ>ài>àø>àú>ß/>±^>;2>Í>>¼>F>¨7>QÃ>Hß>H>7z>Îé>‚ß>|µ>v>*~>ÁÐ>¯»>9>Ÿ*>±>¯£>6â> &>¬Ä>;$>»>5¨>…ç> Æü> æ)> ¸ > -+>Ì -> Ø>õÐ>Zè=þÎ=ø¬=ð =æ#¼=ØÏû=×_U=ãñ–=í}:=õb=û—5>ˆ3>ÞÙ>ëü>†Ó>å¶>å%> BÔ> -˜> å> wg> ²> % > kË> B£> zÃ> L£> iÞ> Úy> ðk> A×> b> ²n> Ž!> > Kz> K›> ãâ>  Í> *Å> 8r> Mœ> BÅ> Íe> S•> yo> ƒL> ƒ¼> ƒÍ> ƒ> sŠ> -¸> -½¯> -·¸> -´> -f> -ª> -¶ý> -¢ > -21> ïJ> ìŠ> ë0> ë—> ê%> Ò`> > 2à> Ô> ‰> ‰> ˆ>  ->ñÊ>yÌ>T.>SÓ>S”>S9>Rû>9w>ź>ŠP>‡]>‡[>‡[>‡9>y¤>n>Â9>»G>ºØ>¼>¶B>™;>X¿>ý>ïQ>ï->ï->ï,>î>ÆG>M£>$T>#>"â>#.># >ü>• >YÙ>W>Vþ>VÃ>D4>¿X>ÉÖ>É>†x>Šã>‰->rp>C•>ÜO>­Ö>ZY>‹…>¼Î>¾z>¨$>5ç>ö>ò»>ò¹>ò¹>òµ>ï>¦>#©>"»>&š>&¡>&”> }>ë‹>†…>\U>Z‹>Z>V>?C>J'>w=ÿ<‡=ÿw=ÿà=ÿæ=ÿæ=ÿè=þäš=ý÷_=ý‰J=ý„»=ý„¹=ý„¹=ý„®=ýyú=üßö=ü q=ûì=ûìy=ûìŠ=ûì†=ûçs=ûœ@=úÔv=ùø%=ù¿]=ùâÀ=úg=ú =úE…=ùÑ=øû÷=ø½õ=ø»æ=ø¼-=ø¼%=ø³†=øVµ=÷ã=÷D×=÷$a=÷#ÿ=÷ =ö«Ô=öa -=öá>=õöÑ=õ‰=õk==õ\å=õ…Œ=õU =õ)ù=õL3=ôox=óøå=óó¥=óó—=óç›=óg=ó’•=ó¾v=ò®'=òG“=òZÑ=ò[t=ò[s=ò[=ò>=ñ©Ë=ðýa=ðÅ6=ðÃG=ðÃG=ðÃG=ðÃ=ðÁy=ð~n=ïˆ=ï-—=ï=îó;=ï€=îó=ï.=îã§=íîÃ=í•€=í’ë=í’ê=í’²=í’°=í’U=íGÍ=ìRª=ëý=ëú½=ëú¼=ëú»=ëú»=ëøÆ=ë©J=ê³=êdu=êb=êbD=êbž=êc5=êW=éÑc=èýã=èË€=èÊ_=èÊ+=è§=çÅÅ=èTÍ=è4®=å$¡=äù—=æ˜ß=儹=åwÚ=ç\=ç2=ç'%=æ†=åzI=ä„,=åN=å™=å•?=åhÒ=å{[=å9Ó=äCG=ãª/=â´a=㺰=ä9=äÔ=äP=ãÕÚ=âë¦=âo=âe¿=áÞc=ásc=â'¯=âM=áh7=àÞR=àÑ•=àÑ4=àÑw=àÑw=àÑw=àÏC=àyI=ß–=ß:¶=ß9J=ß9I=ß9I=ß9B=ß6ð=Þì„=Ýò$=Ý¢Þ=Ý¡=Ý¡=Ý¡=Ý Ç=Ý‹p=Ý#;=ÜL;=ÚÞÌ=Ò+C=Ó„=Ûâ=Ü6=ÜÊ=ÛÃá=Ú̃=Ús=ÚpÁ=ÚpÀ=Úp¿=Úo‰=Ú,º=Ù4¥=ØÚç=ØÓC=ئ -=Ø»˜=Øi•=×w=×@À=×?d=× Æ=Ö7#=Õ²0=Õ¤a=Õ5j=ÔBÖ=Óæ>=Òø¨=Ò1Z=Ñ€=Ïá -=ͶL=Êe`=É]=È X=ÅTé=Áïö=½öD=¹A§=³Ø¥=¬áù=¡ª×=Ÿ½¤=ª™ò=±ÂR=·—=»)2=¾MI=Áýú=ÄÑ‘=Æó~=ÈÇÕ=Ê6I=ËXÐ=ÌÜ=Ìøá=Í£R=ͯN=Í»T=Îe¢=Ï2Ø=ÏG =ÏGZ=ÏG{=ÏG2=Ï=T=ÏJß=ÏNu=ÏG’=ÏGk=Ï7Ÿ=Χ-=Î×=ÍDM=Í¥™=Í°F=Í®À=ͯK=ͯM=ͯN=ͯN=ͯL=Í«Æ=Í>=ÌI¼=̶=Ì=Ì=Ìq=Ìz=Ì=Ì=Ì=ÌÝ=Ëõ7=ËV=Ê…\=Ê~ô=Ê~ñ=Ê~ñ=Ê~ð=Ê~=Ê^=ÊL?=ÊN¼=Éaa=Èêö=ÈæÃ=ÈæÃ=ÈæÃ=ÈæÂ=ÈæÂ=ÈæÂ=Èãæ=È}Ô=Ç…Ó=ÇO)=ÇN=ÇOÝ=ÇMð=ÇN‹=ÇH=Çd=Ç'=ÆMÊ=Žb=Ŷi=Ŷf=Ŷf=Ŷf=Ŷb=ŵ½=Å·/=Ńì=ÄŽŠ=Ä!…=Ä8=Ä8=Ä7=Ä7=Ä8=Ä/=Äð=Ãa“=˜î=Â…Œ=‡ =Â…¥=Â…è=† =† =†=¼=ÂÑ=Áˆ=Àî8=ÀíÛ=ÀíÛ=ÀíÛ=ÀíŽ=Àíó=ÀÜJ=À—‘=¿î}=¿]š=¿E¨=¾àE=¿.g=¿U"=¿Fã=¿g=¿JX=¿HY=¾’=½Î =½¾‘=½¹=¼y =¹dÙ=¼Ù=½XÓ=¼³ú=»§›=»ß„=º©=»Ê$=¼P=»y¶=»å=¼%M=¼$×=¼%K=¼'=»wB=º\š=º0t=º‡ž=º =º"=º"=º"=º -=º‡==ºz=¹1=¸õ*=¸ôó=¸ôô=¸ôô=¸ôò=¸ñ'=¸Á=¸Öe=¸¬=·¬Ú=·^=·\1=·^ =·\(=·\Á=·\Å=·\ =·;þ=¶î¨=¶'=µÆ=µÄ—=µÄ—=µÄ—=µÄŠ=µÃÿ=µÅß=µÃ÷=µ¿ý=µ??=´Pò=´,¨=´)Ó=³Þ=³¿!=³ðÙ=´&Ì=´,e=´+ç=³ÿq=³ Þ=²—=²”;=²”;=²”;=²”;=²”;=²”;=²‘M=²_‰=±úê=±%k=°ü5=°ûô=°ü°=°û­=°ü =°ü =°ü =°û÷=°æ/=°¹=¯l‰=¯câ=¯cÞ=¯cß=¯c¢=¯d=¯d/=¯cš=¯cÅ=¯LK=®qM=­Óu=­Ë³=­Ë±=­Ë°=­Ë°=­Ë±=­Ë®=­Ë%=­Ì@=­”0=¬–?=¬5™=¬3‚=¬3‚=¬3‚=¬3‚=¬3‚=¬2Ù=«Ï =ªe³=«¢ =«W=ª •=ªš¾=ª›,=ªÁ=©ô·=ªbâ=ªšs=ª›T=ªšÝ=ªh=©jŸ=©n=©=©Í=©=©d=¨Ùó=¨²=¨d(=§±ï=¨¾R=¨g=§aˆ=§1!=§d=§jò=§j…=§kÜ=§jœ=§jâ=§jö=§dl=¦Ìù=¥ëø=¥Òâ=¥ÒÈ=¥ÒÈ=¥ÒÈ=¥Ï€=¥=¤:›=¤:›=¤:›=¤:›=¤9ù=£ÎV=¢Jl=£:½=¡X=¢_Ã=¢£ù=¢¢m=¢¢m=¢¢m=¢¢l=¢¢4=¢Œ‘=¢jß=¢L=¢¡¦=¢_á=¡[#=¡ —=¡ ³=¡ -;=¡ ->=¡ ->=¡ ->=¡ ->=¡ ->=¡ -/= ü’= €¢=Ÿ¬Ì=Ÿr¥=Ÿr@=ŸrK=ŸqØ=Ÿo]=ŸL=Ÿ1K=ŸÀ=žæX=ž¦,=ž«|=žŠ‚=žgÉ=ž:¯=ï(=ðÑ=Ú=¸¿=–õ=pÁ=+d=%=•=œí®=œÄq=œuö=œ4=œ@@=œAf=œ&F=œý=›åE=›ÃÂ=›¡«=›¥=›]Ã=›;ô=›=š÷ÿ=šÕØ=š±¯=šŒ=špR=šMÔ=š+Ì=™ç¥@v­H@u÷˜@u¸V@v•@våW@w§S@x@@wå @w`[@v¤@uñ§@uŠ\@uŒ"@uß¹@vH¯@vŒX@ve@uû+@u4@t@s•@sÒ1@t?„@tnd@toQ@t•@tÞö@u4|@uRf@u°@tx“@s­Ì@sÍ@rêý@s'Û@sp¤@saQ@r­Ò@qBD@okû@mÕà@m%@m‰­@n¿2@pLÒ@q±Ð@r•]@rì@rç @rÀ0@r¸@rE,@q³Ø@pÔM@oá@o8W@o­@omg@pß@pœ´@pôƒ@pãé@pt˜@oì2@o“o@ogÌ@o,Â@nØ´@n²‘@nîs@og'@oÎz@oöH@oÜH@oŽß@o \@n ¬@lm@ièq@gy×@fŠ@g˜Ê@i½)@k·Ž@lõ0@m†x@m¬ù@m¢g@mˆc@mZ¶@lï@l¬@k @j ˜@i¬/@iŠš@ia©@hùb@hZà@gÇØ@gþ@g×ð@h•ý@ir.@iö’@iÕ²@i/@h:Ž@gô‰@h~¦@iA_@i†þ@i:ÿ@hĉ@hPŸ@g•à@fmŠ@eX¤@e>@egM@e³K@eg@dÚ@dÃò@et_@f›³@g¨“@h=Ó@ha#@hS‰@hGM@h:õ@hF@g°ß@g1G@f¾!@fs?@fEk@f/ -@fDR@f~ˆ@f¬@f¨Ž@fsŒ@f@ep(@d‡a@c†X@bõ×@c>²@dn@d¸·@dš@cËÖ@bì@b¤_@båo@bô¢@bX¾@ax,@a$‘@a§I@brd@bÃô@bM7@a>Ã@`6@_@_Ö’@`’@aIb@aà­@b`×@b¸@bÔ@b»|@bu#@að¸@aà@_š#@]Ôã@[êx@Z1W@YM*@Y¶þ@[©@\l@]Eä@]ÆŠ@^P@]Ñõ@\gE@Z@X)|@XJ@YãÍ@\1ž@]‘;@] A@\¤º@[¬@YX¶@Xˆè@XÎ<@Yw @YíÚ@ZxM@[K@\Æ8@]Á€@^9Œ@^N@^!Ä@]»µ@](¡@\D@\eÌ@\ŸZ@]#@]X¼@].º@\\@ZÆ@X¶õ@W%@VaL@V¥·@Vøè@WÁ@Wœ@XÄZ@Z+@Z @Zšõ@Zk+@Zx1@ZÄ3@[@[;@[/R@Zù9@Z­X@Zj\@Z@7@Z¿@YÝ@Xq‘@VÞ4@U«Ù@U¡*@V‰1@WrC@W¬ª@W=N@V–s@Vt@UåJ@Uà\@Uãq@U®P@U(|@T›3@TpS@T;@Uƒ!@V1ñ@V‡Š@Vs¡@V(@Uìñ@UñÉ@VH@UîÖ@UFb@Tœ@T.D@To¡@TîÇ@UZŠ@U‘@U‘Ä@Uq$@UGM@U 0@T–˜@Sûv@Sn@Rá~@QÿÏ@Pî“@P…#@Q7·@RjÅ@SR«@SÎ@T¤@T3ð@T%ý@Sê@Sˆî@Så@RÛÔ@RÊ¥@RÐG@RÕ@RÜ@RçG@Rèd@RÒ°@R¤¶@RY(@QÒõ@Pø¯@Où|@OT;@Oaã@Oè¹@PY¾@Pew@P6y@P/Ô@P{À@PæÍ@Q*@Q/»@Q à@PÈÊ@Pg™@Oßâ@OM…@Nò¨@Ný°@OPú@O¦Ã@OÕá@OΚ@Oz@NÑ)@NÔ@Mš@M¥@N@Nt@NÁ·@Nâ@NÖH@N ¶@NHŽ@Mê,@M¬(@M˜¤@M“}@M~i@MY2@M9G@M+@M'@Mÿ@LþÞ@LÎ@L ‘@Lˆý@L‚$@L<@L„@Lƒá@Lƒ°@Lw -@L`‡@LD×@L@KÑ@KHt@J„¾@IÂË@I\3@Ipt@IÍí@J10@Jnï@Jrq@JAØ@Jú@IÜY@IØ@I×Í@IÃ-@Iž -@Ioš@I,.@HÒ>@H‡£@Hp´@Hsù@HLo@GÞµ@Gaõ@G£@G Ô@G³@GWç@G¸(@H@H62@HV@G°©@Fðò@Eã·@Dêx@DŸ@E.Ú@Fë@F´c@FØ‚@F¬m@Fq@FPm@F@Á@F«@E«^@E#@Di@D à@C¿·@C·õ@D%r@DÄß@E:“@Edz@EH0@Dá2@D*q@CZ¦@BéN@C3@C§œ@DÌ@Cå;@C_—@BÔé@B¨@BëB@C\@Cªõ@CµF@C€e@C ½@Bµ»@Bh§@BM\@BCª@B–@A×ã@A¹½@Aã-@B&÷@B=ú@BÒ@Aàµ@AÇR@AË©@AÌO@A´É@Aˆ@AHá@@öÎ@@§,@@ç@@“˜@@º@@Ì+@@ÁÕ@@­ž@@š)@@{@@;±@?Öf@?i'@?-ü@?@ç@?o´@?f@?ú@>põ@=þG@=è„@>59@>¨Á@>ûU@?.@? @>ë;@>ºÔ@>~¾@>J#@>1K@>.È@>%¾@=ûO@=£@=$É@<£y@û@-@?@Ï@%·@ t@9M@€ü@•[@,n@-µ@âU@è0@—§@»@æ@»2@=þ@ç@ê@ª@€d@AÊ@€v@ 0@ã@Â=@Ž›@ëŸ@€ï@~K@nú@k@)@š.@ç@qØ@¾l@Ðs@(Y@”.@i@5$@<+ë@@ù¿@CW$@Cjã@AwÇ@=^S@6ÃF@-¿×@#$ä@aC@@Gj:@Gš@GÛº@G±@FÒ@E9u@BÀÂ@?BÑ@;ï@7n@5+†@6.$@9lp@=U¾@@€Š@B©@Aôr@@0@>Ÿ@>)@@fø@Aý@A¢®@?«ò@<0ù@6­@/?–@((@$˜ñ@&¡™@-!¯@5 W@;ý@?•Ê@A’î@B”Ú@CO•@CëÏ@DRÒ@Dr@DH@C¿ø@C @Bg¹@Bý@B @B~8@Bµ»@Bý@B*@Aÿó@AâÖ@A–°@A*W@@ó™@A0ö@A©\@Aã@AÄ/@An @@Õb@@ Š@?q¬@?7@?1é@?1Y@?Bm@?d;@?XR@?‚@>ÕÊ@>Ââ@>¦R@>Zc@=Ùz@=Mp@<Ú@¬@-*F@-ä@.4@.-'@.\ö@.]@.€z@.¤è@.ë(@/U@/ b@/(›@/5ó@.äZ@.Qí@-á9@-=@)âC@"RR@è“@ƒ<@%´€@*6k@,B»@- y@.h@.Ãè@.]¬@-Ñ@-¨o@.4–@/å@/nr@.¸@-[@,¦@+M8@*É£@*|B@*MY@)üw@)˜@)B‘@) @(°\@(Up@( -f@'ÜÝ@'ãÁ@(\@(&­@(?@'ìÇ@( õ@(Ç@(‹@(5Ä@(uÐ@(w¯@(9@'ù@'ÊÏ@'ª @'ud@'@&¯™@&c‹@&Gó@&Mß@&A.@& 8@%Êo@%‡V@%H{@% :@$üÔ@$º@$ƒ´@$•ƒ@$×@%^@%p@$¼H@$QŠ@#Â)@#p @#Ôñ@$¶®@%9P@$Ô@#ÏB@"èa@"s¹@""ð@!¢Í@!‘@ Ú@ ÿ@!;ã@![@@!PM@!]@ ×è@ É@ ¹b@ ‰”@ V@ 0ý@ ;@òÂ@Ú…@Ê@²¤@¬É@¨ƒ@œe@f¤@½@iä@L—@|@V€@»@b!@mÑ@S5@(ñ@mœ@@í@Ö@êÊ@9m@¢Õ@!l@­­@T|@ Ï@ º@í@ @B†@@ý@MR@Y0@ é@¦@7<@×ú@Åü@åÒ@ö_@Ä@ -D@%ã@y*@àï@ì}@mƒ@­ @ -º@À@Ž2@ @iÄ@ï:@ë@Ñ@#¼@ ë@w=@b§@ J@7*@ãc@³‚@jI@"´@Ç­@?®@†”@‰@TW@ ú±@ ]œ@ -GÑ@¨‘@S@1?ö5Ÿ?ë!b?ßbã?Ô´ -?ÎtZ?ÎW?ÐÀ8?иJ?ÍÎN?Ì{Á?Ñ/u?Û[?çIš?ñò?ú¢ü@3Ç@ï¿@0ï@ -™v@ û@ r4@ £¤@ š@ ˆ9@ þï@R¤@f}@Z»@d3@Ž -@¼ª@Ìa@ç9@â@4Z@.H@ü@ê@ûÁ@TF@šN@›Ê@w4@0“@ºp@I@·@,Ÿ@fê@s@ ¶Ç@ Wý@DT@î<@–1@‘(@þÛ@Ãl@ Žê@ Y…@zÓ@ Ì@%M@"?@@ù†@´…@VK@ Òn@ P'@ A@ -Û@ '1@ Û©@ ›@ —D@ ¥»@ »¡@ à @ ›@ ]D@ ì¡@>@ Ý•@ ùy@ õÄ@ -ô@@ -*6@ ¹Ç@ nú@ °@¶Æ@ré@HŠ@ å@×@É@Íí@ÂW@– @ó@`q@Æò@¾0@gó@}%@rò@ h@ oL@ «ô@ l@Å.@üI@´V@Ø£@@ Ï@ÖÉ@†+@As@¸@öð@ØÕ@¼ù@Ĥ@ã]@õ8@¶M@–@Cb@ºw@´E@4?úa?ðŠ¸?é™´?èD©?í¥?õ‹œ?ýão@¤;@°4@k8@3‡?ÿRa?ýH>?ý–â@ @æ‚@Y@a @K@&G@ÎÞ@ ý@»à@¿@R.@šÍ@–@¯%@qŸ@d@U«@$J@ý@è @·›@¢•@ýž@†y@Ìz@«Å@Ó@oO@E+@«Í@Ta@Í@ÛZ@µ@g¹@‚ä@äõ@ @‘w@J@“;@}@éX@Å@Ü@Q[@Í;@!p@&J@’@±}@ó@|@+'@4@rv@À@Ó@aµ?ÿ’É?ÿR.@!Œ@†@Ƀ@Ý?@»?ÿÂ%?þe›?ÿP @¡Ã@VÍ@X´@¦æ?ÿ¤g?þr¹?ý½É?ý†?ÎA?Í®¾?̳T?˃þ?ʨ§?Êp?É«Y?É2?È¢?Ænâ?ÃÃÅ?Àg†?¼Ú´?¹ ë?´[>?®¼?¨¤ï?¥ŸÇ?¬n?Á¡ì?Ú9ú?áœ?Ñù?·0#?§dO?¥*›?©fn?¯G -?µ­?¹†‘?¼üS?À`?¸ñ?Äh”?ÅgO?Åü?Æ(?ÆMr?Ƽ ?Ç1s?ÇWû?ÇWY?Çi*?Çx?Ǩï?È@0?ÈÐ ?È÷ö?Èô–?É Ô?ÉR?Èä?È£Ô?Èo?ÈU¯?ÈIÚ?È/ç?È*{?È*R?Çÿ?dzŸ?Çqª?Çw??Çʈ?È y?ÈH?Èu?ǹg?Dz?Æ_õ?ÅŸ?äx?¿ö9?»Ñ-?¹ÁÍ?»6Þ?¿Â?ÃVç?ÅÆ,?Æ6O?Æ!ý?Åò¼?Å¡Õ?ÅQ?Å?Åp?ÅN?Ådo?ÅLç?ÄÝC?ÄO.?ÃïË?ÃÉL?æ.?Ã|Ô?Ã[?Ã;W?Ã>I?Ã.l?ÂáN?¶8?¨Z?Â}?Ÿs?î?à ¡?Âäq?ÂÒï?Âi‚?Á¬h?ÁUd?Á?0?ÀèÒ?À}„?Àjš?À…¬?À[ô?À%?À -~?À?À9Ð?À%û?¿Å`?¿‡â?¿®A?¿Ã?¿‡?¿&d?¾ð§?¾ïÿ?¾ç?¾Ä[?¾‰[?¾5j?½Ô -?½ÿ ?¾}ô?¾•š?¾^½?¾m?½›“?½sž?½Al?¼¬›?»ù4?»·G?»ÁŽ?»„r?»7p?»/4?»*r?ºþa?º¥µ?¹Æ`?·Ù -?µ¡J?µP:?¸ ý?¼J ?¿?¿h¼?½L³?ºÚ?¹|o?¸Õ?¸è?¸}©?¸`ƒ?¸6Ú?·ñø?·k?¶æ«?¶B>?µë9?µã?µíè?µç}?µu±?´±?´X?´·?´êD?´"K?²ér?²ˆ0?³p^?´ÕÉ?µx1?´ËÝ?³{â?²\\?±kì?°ã¬?±3z?±ü)?²²Ô?³·?³^´?³¬~?³™?³!?²Ô±?²Î‰?²ìc?³.?²î[?²_Š?±ñS?±º4?±±ü?±¬u?±¨è?±Ùî?±¼ú?±²?°ÂÚ?°Æì?°•«?°dØ?°]Õ?°S[?°8?¯£Ê?¯_?¯Pƒ?¯;¬?¯)M?¯cF?¯Š×?¯)×?®…—?®j?­úõ?®O&?®µJ?®ÝÑ?®½ó?®t -?­ð?­R‡?¬åD?¬–®?¬ÉÍ?­hÚ?­Ë?­…2?¬Ñ‡?¬?«c^?«:?žM ?Œ¿?œp´?›ã?›Ôñ?œ!ô?œÁJ?b‰?ØZ?çE?Ä?À?ñÞ?ç7?žZ‘?Ÿ‚\? ƒ? Iä?žQ`?œ"—?›Æ?œ?¼?œÉÇ?œÐ??œ!?›be?™Î?˜ŽÌ?—¯~?—1?–ðº?–Óô?–׿?–Ó ?–­Ô?–ŠÊ?–œ¾?–£:?–£n?–õñ?—XÄ?—“ˆ?—´?—&?–èJ?–Ô™?–Ê.?˜V‹?›ïW?ž°¯?žsg?›w±?—\ä?”âª?”¤P?•©?–¬¨?—9Í?–ªÝ?•]‹?”¤?”0?“éâ?”+Ø?•›?•ã­?–&§?•¨‘?”¥G?ƒeí?ƒ•Œ?ƒ™Ì?ƒrƒ?ƒXŸ?ƒº9?„f¥?„£ˆ?„`¸?ƒtþ?‚70?mê?B·?3Ã?€û>?€Îv?€Å«?€Ã ?€¡)?€}?€n™?€*?ÈÄ?•É?=™??}?~ׯ?~h?~<?}ò]?}¿ð?}õ?~]k?~|«?~_š?}î?}qÑ?}?|'?|I_?|CÉ?{ÐO?{W¿?{@Ì?{W=?{s{?{?{©—?{¨?{Y|?zš?yè¡?yyR?yå?y ?ym?xö·?x©r?x2n?w¤d?w ¾?vK8?u”ü?uU5?u…J?uÚ?v4z?vyß?v)õ?u‹÷?u}]?u^ñ?tÊ´?t’u?t®µ?t¹"?tŽk?t¤á?tê’?t¹¢?t ?s*Š?rQ£?qþ£?qÙ)?qC{?p™Ó?p¯?ouM?o+=?o‘µ?oŸ½?nɆ?måG?nö?n Ç?nåN?o&v?oÝ–?pšÒ?q?q3º?pÖ ?p9?o€?mÅA?m-#?mAZ?mu?mhÝ?m:„?m3±?m?l¡®?lü?k¦§?k>«?jÁ ?jQ?jfY?jì?kª?jÈ‚?jû?jd?i_ê?hχ?h…â?h/7?gáÇ?gžÙ?g[Œ?fþà?fªº?f¸?fÃD?fkÓ?fê?e±?e–Ÿ?e·•?eÑo?e¹;?e_?dÈö?d}„?dFâ?cê_?c¥#?c Ú?c‘Ú?cbˆ?cm?bØÌ?bä?bÃŒ?b‡–?b€?bGA?aÉ…?aF?`áŸ?`²µ?`vÈ?`5›?`%}?`¤?_üw?_Ùè?_­o?_Ò¤?_÷ƒ?_Ïá?_ŽÀ?_Æ?^¯B?^qf?^2ž?]õƒ?^I?]ÊO?]?\× ?\À"?\c?\t¥?\sÒ?\"×?[¾&?[OÝ?[t?[K”?[8‡?ZZ?Tô;?T±£?T€½?T4Å?SìÇ?Sòw?T*Ê?TvV?To?Sõ?STó?RÛØ?RÒ‰?R­^?RTà?R+?QÏh?Pbâ?LÔ¢?GVi?Br#?A,?Dß?IPÔ?MƲ?Oå?P|Ú?Pw?Pm!?P{5?MôI?Hè?IÊ?NΨ?Oñ#?LMi?I÷a?Lç“?Nké?Mü´?N(?NŒÿ?Nn®?Mäñ?MyØ?M2H?M0#?M’'?MÔ3?M‰[?LŽž?KÚüÕ?>w?>A?=ÂV?=Õ×?>;?>ð?>eK?>3o?=Õ?=‘­?=‚x?=pü?=s>?=„ô?=Šr?=ŸK?=pD?<¶¯?<3Ä?<6??7¸®?7rà?7\Ù?7Eæ?6ü?6·?6–q?6r4?6x¡?6…8?5ÎP?4Ô?4á?657?8C¤?9·Á?: ?9`«?7wè?5AÑ?3µ_?3 *?2úû?3Eù?3``?3I?2Âï?2ÊZ?2ìC?2ÈÂ?28?2L?2¡ª?2¡É?2?2ƒŸ?2_ª?2‚?1œ7?1Q?1Á?0²Z?0i+?0\@?0vû?0nÎ?0{Õ?0j?/å¼?/Wí?/GÙ?/`Š?/CF?.ÖÃ?.&g?-ÑL?-Ùy?-Ìó?-»g?-Ä+?-±Ê?-‰,?-g?-Xj?-‚?,Úz?,×W?,¼d?,k~?,?+î ?,N?,8ú?,ù?,!è?,_>?,µy?-£·?.jÜ?.oE?.%?-0x?,5W?,©h?.6¾?/s‰?/·s?.9=?+§µ?)÷Ì?)]œ?) ?(¸?(JÝ?'ý›?'Ûq?'~Œ?'t?&°ÿ?&l{?%÷ô?%¦Ù?%Ùõ?%ï?$¦.? ±ò?¢?ÎI?ñd? ||?!0‘?!÷Í?"Ë2?"ùª?"®-?"“?"‰z?"†³?"6€?"9‚?"j„?"Žˆ?"ÇN?"Eø?"|®?"' ?!¾[?"Ô?!ºÙ?!¨i?"9È?"Æ?$v8?&zü?&â£?%ù{?$‘y?#Mv?"{Q?"?:?",D?!ë’?!ÝÔ?!ó?!Ì‘?!˜¤?!_Á?!8+?!'Ú?!B? wL?œÙ?òH?‚ž?c?(2?Yt?©ê?ˆ?ei?1?|-?°?—Ó?†N?S?7?ü÷? -?×Ì?‚0??‡K?ÿº?ßu?‘?E£?e¬? ÿ1?"S?!º? #þ?}m?½´?•ä?ƒÛ?I¬?E?‡8?»?#¥?t?Z?È1?@¨?³Z?îµ?¾^?“p? ž?%?Z?È ?E°??G)?Ö-?¨½?Ù5?jÝ?¸°?æ-?_?®Í?"1?ÿ?Án?à?X¿?N”?$¥?ع?‹V?£?©q?(?@H?f*?ÿj?sD?aà?ï¬?òÿ?Í?ÉU?¥ó?]ø?' ?Ÿ? ™?Ös?Ž/?”?À?Áà?‚Ò?2¤?03?@”?‰;?!·?ËM?Ü?ˆ.?![?ø±?iù?í?¬“?nØ?ƒ,?‚ã?C?çD?ñ?½´?Ú¦?)?Ô*?yj?WÃ?¥?v-?3Ó?T?l#?Lü?(²?ݾ?®?µì?Ô”?Ýï?Íæ?Å??6¸?C#?hþ?‚ó?+ê?,=?•ë?Np?ár?0gŠ?e\±?°×@à/@"¦!@ yÚ?»(¶?o~À?4.a?¥Û?~Ä?ý? ?Ÿ?ˆ -? -? æi?å?ÁÒ?VÑ?­I?Ó€?„?õš?t»?8ð?ð? ›L? Me? [? ’[? ‘I? k? h‚? +n? ¶v? .ˆ? ?§? X? ôÎ? ? ´ù? {N? ;Æ? :s? ]3? k ? j²? R¶? U? -Ò^? -ç¯? ˆ? -ù5? -ÏÉ? -ŽL? -jö? -nJ? -sT? -@Ù? - -&? ü? û±? -ö? ôÛ? ©p? fª? D£?ú(?ʼ?Þµ?ïÒ?á?¶?Ž?G2?Ò€?ù‘?'™?N‰?â¦?8à?8?†9?ã¡?Ð…?ºì?—Ý?Œ?’G?ŠÓ?¤q?£¡?r?,½?«?œ? {?Øi?µ÷?Ž?i‡?dà?‚e?oá?Cx?!s?ò>ÿØ>ÿ›c>ÿUë>ÿš>þž¸>þMè>ýûA>ýöû>ýèn>ý”c>ýƒ}>ýo¯>üæ->üL_>üu}>ü½>ü¡>ü;->ûÓø>ûé¼>ü¶>ûö$>ûºæ>ûXÙ>ûS>ûgF>ûK×>û#=>ú÷&>ú¸¹>úHZ>ùÏè>ùÒ >ù¦>ùJã>ùhÊ>ùof>ùB>øØ)>øù>øˆ>øjú>øf;>øC¸>øZ>÷Ô^>÷‰8>÷[Y>÷?–>÷¬>÷i>öâ>ö±ï>ö‰0>öeÂ>ö=â>öÖ>õ×B>õžü>õkç>ôô>ô/ï>ô)>ôWº>ôYó>ôIŠ>ô‚>óõ}>óÇü>óƒ.>òøY>òÀ>òu>ò„>òcb>ñz,>ð³ä>ñ v>ñŸ>ñËž>ñ¼¯>ñ“z>ñif>ñ>~>ñ·>ðèÎ>ð¸S>ð†Ý>ð_š>ð3k>ï×I>ï‘@>ïœU>ï“Ï>ï‡ò>ïy>ïiž>ï8J>î¢Ó>îMl>î…>î6Ü>íT‰>í ¨>íŠ>íiÄ>ì¹Õ>ìŒ ->ìy„>ëüÝ>ì¬Ê>í-‘>ì°B>ìj>ìt>ëÜY>ë:E>ëâ¢>ìÃE>í*÷>íV >íkP>í%Ä>ìú>ìÙ'>ì×é>ìH3>ëbG>êüÓ>êq˜>é½K>é†Î>éïØ>éä‘>麦>éVz>èÙ>è£ê>袆>èõ>çôì>çé>è>ètÒ>èM„>çñ>çV«>ç„¿>碥>çþy>çæ…>ç@>æó>çb>ç°¢>æÓ>å°>㬠->àà£>Þ8¿>Ûœô>Ú¿>ÞÖ®>ãQ>争>ãøo>ä!0>äD>â‚>ávT>ã7E>åUF>åÍÚ>å@º>ä%n>ã0°>äT>ä’!>ãæ>ã…=>ãz–>âÔ¤>ârï>â°Ÿ>âÚ¤>☤>â8!>âÛ>ãe->ã¼À>ä6ó>äm>ã†>âÓš>âFœ>âo,>âc™>âx>á°£>á0ª>àùÑ>áî>àÓ«>à›8>à/>à@`>à(Ã>à«>ßÒ>ßÁ‹>ß©ë>ßv®>ßVf>ß:Â>ß î>Þž›>ÝòÖ>Þ -w>Þm}>Þq$>Þcþ>ÞT¹>ÞFÀ>ÞK?>ÞT>ÞE`>Þ&²>Þº>Þ¬>Ýí >ÝØŒ>ÝÇß>ݵ¢>Ý¢¦>Ýxß>ÝO©>ÝÅ>ܧ>Û:>Ú}>Úä>ÙÀ¡>Ùr³>Ù'>Øàð>ØŸ>ØSƒ>×í‚>×—ø>×xb>×>>× “>Öß&>Ö®ù>Ö~>ÖI°>ÖE>Õâ¥>ÕÌ*>Õ¸<>Õ41>ÓÑ{>Óî>ÔfÀ>Ò}>ÒDe>Ô£>Ô„8>ÔV‹>Ô0>ÓÌõ>ÓÞG>ÓŦ>Ó’p>ÓJ>Òï/>Òär>Òèš>ÒØú>Ò¸e>Ò‹õ>Ò]‹>Ò6¹>ÒL>Ñü–>ÑЖ>Ñ’d>ÑR¦>Ñ7>ÐÕ >Ï®>Í¥>Í´Õ>Ϩ>ÏÕ+>ÏŸ–>Ïxh>ÏWÓ>Ï-Æ>Î÷È>εð>ÎH>ÎWK>Îa>ÍÖk>Ía>ÍË>Ìv²>ËÖ›>Ë#Ó>Êß>Êç>ÊÞâ>ÊÅ`>ʦÝ>ʉ³>Êyþ>ÊcÝ>ÊLL>Ê4+>Êò>Éõ¬>ÉÒ»>ɪ0>É€m>É]î>ÉJO>É.ñ>ÉÒ>Èòí>ÈÓ€>È­‰>ȃä>È_E>È9ž>È(>Çâý>ÇÃÿ>Ç ;>Ç„ž>ÇeS>Ç8Ò>Ǿ>Ƶ×>ÆŒ7>ÆuB>Æ]7>ÆjC>Æs>Æa¾>Æ >Ų>>ÅÎÀ>Æ Ø>Åû?>Æ<~>Æ$¶>Ž0>Å:Ê>ÄÛ{>Ľ$>ı>Ä+>É>ÃEå>ÃÍ>ÂÚ–>‡Ò>ÁÐ9>Ã>ìî>ÃB¼>ï`>ÃKp>ÁÖØ>ÁqÑ>ÀÅë>ÀCf>Áî>ÁwK>Á€>Áë>Á ->Á-l>Á‰V>ÀéÌ>Àž(>Á›æ>Âqï>ÂçŒ>™›>ÂB>ÁY>À,Ô>¿Œ×>À[p>Âv;>Æ€>Ã}š>Ä@>Ãõ>ÀDŽ>¿ d>¾»Ø>¾Q“>½ó÷>½Ó`>½Ò¸>¾ ?>¾ha>¾ õ>½ º>½UÕ>¼íï>½ª>½P•>½‘ >½ü>½[9>½:@>½O>¼x«>¼=Œ>¼\¡>¼ˆ­>¼À…>½Wü>¾,+>¾@8>½ÿ>½‹>»ä{>ºé1>ºY\>º,Ø>ºNˆ>ºVâ>º“«>ºœ(>º>º;_>¹ë0>¹›¯>¹_’>¹O >¹b>¹ ¢>¸ü>¸»Ç>¸ªQ>¸«ò>¸¤Ø>¸Y>¸{<>¸X!>¸Š>·À>·hI>·Õ>¶æ)>¶³r>¶„Û>¶]D>¶.´>µÿù>µÈr>µ‰’>µl@>µSW>µ$U>´õ<>´»b>´ž^>´— >´… >´p§>´U}>´2È>´ >³çô>³Â >³šþ>³sr>³Sæ>³C•>³?º>³J±>³G>³ ¸>²Å>²›Í>²¢Q>²|>²O>²(U>²>±Û/>±µ6>±“l>±t‚>±NÆ>±,>±'>°Ýw>°¯>°Ñ>°t]>°Pl>°'a>¯ûX>¯Í >¯‘6>¯D`>¯L1>¯D±>¯ Æ>¯±>®á>®³à>®zÉ>®?8>®P>­Ë÷>­¢$>­~N>­an>­>v>­2>¬Ã¯>¬Œ>¬›ï>¬ƒG>¬O>¬d>«õ‚>«ØÄ>«•O>«N¨>«U¥>«?5>ªîõ>ªÀñ>ªàú>ªÓÍ>ª®ç>ª‚ú>ªW5>ªC6>ª&A>ª À>©ø•>©Ìz>©ô>©“»>©kÛ>©81>© ‘>¨îJ>¨ÕË>¨®m>¨‹P>¨k2>¨^h>¨Z\>¨h¸>¨€Ö>¨_à>§×g>§qŸ>§*B>¦àX>¦ås>¦¡b>¦ö>§ƒE>¨@ú>§Àå>§®~>§‘Z>¦r>¦51>¥Í¡>¥fÔ>¥?Y>¥[X>¥Ì5>¥Ù–>¥Ã>¤|ò>¤~Z>¤¯v>¤xÎ>¤->£f">£_>£‡Õ>££­>£Õ>£Ãœ>¤.Y>¤=>£«ã>£5>¢võ>¢y->¢¥·>¢.¯>¢f>¢eó>¢š²>¢L€>¢uA>¢œú>¢â>¢×‚>¢š>¡Ý>¢¦>¢¦t>¡yê> ‘Ô>Ÿü³> Ç>Ÿ¶>ŸªÅ> L> Œ>ŸöN> P‹>Ÿ>ŸÁ>ŸÂA>že>¡‘>ŸÂŠ>žÂ>žnä>žP>›és>›\­>›Z(>š”/>™É®>—ÖÎ>šIç>´G>š Ò>—À¥>›ô>† >š¼>˜fµ>›>l>)‰>œ18>šP­>›(`>™˜>š!>š©L>›->™ -Ñ>˜®>›Ã]>¦æ>ž¬ý>žg&>žL>To>œ±>ø>›Ç>š˜ >ša(>š²>š/X>š¤­>™gR>–›Ò>•FÍ>•Ù>—hü>šfƒ>™>˜Â{>˜TE>™Ç >ša>šÐk>šCŽ>™w >™˜>˜ Ð>™“Ô>›Þ>›9ú>›M>›¦>šVÝ>—ת>• x>–µ>˜Àf>—×ë>“Öh>”ðí>˜Vf>•d¾>•X>˜Ó>™€J>˜šE>–„…>”Ÿn>•(n>•>>•†h>˜ü>—Åá>–e>–Òq>˜ -£>˜j>–à›>”©S>”÷ä>—2˜>—áù>—zÕ>—p‹>˜F >˜Ã6>˜vè>—ýd>—UÃ>–—y>–Œ>–}²>•ëå>–]>–¯#>–})>–J]>•§þ>•ÒŒ>•¦ª>”Ô>”¥n>”Ðò>”q>”*ã>“öá>“¹~>“¡g>“’>“OŒ>“¾>’á¡>’²>’´>’bÀ>’Ô>‘ÈÌ>‘œ^>‘–Ž>‘yA>‘c~>‘[W>‘A>‘1¯>‘&°>‘#>ì½>¶I>•®>ƒâ>Z*>IÙ>;å>"n>:>Ü•>³µ>oÜ>+ >!O>®> .>Žõ¼>ŽÙ®>ŽÅ>Žº¨>Ž©ý>ŽÏ>Ž˜î>Ž‰m>Žk>Ž@æ>Ž -Û>Üí>Û>É_>ÉÆ>±Ó>B>a@>[Â>4z>Œäæ>Œ¶š>ŒÁU>ŒÀ£>Œ…>ŒWë>‹ÄŸ>‹;Z>‹™ >‹ØØ>‹R>Šâ>‹ç>‹9D>ŠÂW>Š^>Š€Ù>‰ ©>‰XR>ŠNf>Šs9>Š=C>Š*>Š¢>‰è>‰ 7>‰»E>‰½|>‰iÿ>‰&™>ˆö!>ˆ±‘>ˆh>‡û¼>‡Ó>‡ð<>‡ºå>‡t5>‡\ >‡)>†å‰>†ýü>†ª=>‡Â>‡“T>‡‡)>‡ÎÉ>‡z÷>†]>†œ±>†™)>…Îf>†0_>†¹¯>†9Ð>…„Ð>…}4>„þ>„¾<>„e²>„*f>„‹>ƒôH>…<>…wÚ>…Îd>„ó">…,Õ>ˆó>‰àc>ˆÿL>‡É±>„¼N>‚Él>„…Ä>…2ã>„¬>„ >#W>}²¡>€?è>„n>…ÛL>…°W>„´ò>€i$>y…à>x¿ë>}^ð>ƒE{>…ž›>…É>„¾³>€œç>y>wp>wÛ™>{È­>‚{s>†W¬>†'ó>…()>¤Ä>yh>taw>rŠÀ>q§”>r‰‘>w¡3>”4>…Y>…[®>„‘«>€Œö>xÄÎ>v$r>u.â>t8y>s3U>r ">s58>zìV>ƒ >…"%>…'N>„t·>‡+N>•ëÝ>œR§>“Ùƒ>‚0ÿ>uÆã>s·‡>q‚>n¡>n|H>u%­>S>„YÆ>„™œ>ƒ¬r>{Œ¹>qÕw>o„>oƒv>pC7>r)>sMì>sÙN>tÀª>t¦Š>s´O>|ëŒ>ˆ8Ž>Œ˜¿>“- >‘û >‡ >€áh>u"ç>mùN>lCU>me‹>p´>qi‘>qî—>rAU>s ã>r~>qg>p«Z>nÛy>mžÇ>m¢>uª{>‰OÞ>•NZ>š »>›ì9>Ž\>€2>m˜ž>gr>gÛR>iû`>l(ç>mSÕ>máã>obÕ>pëw>q’Z>q—ò>pña>p€Û>oæ>nç[>n[g>m$Æ>jÌ@>h ->d”Ž>au©>`¿ä>gÒ>s8â>uÜ>t]7>mÀ²>b0*>^g¾>`Yä>d<>g}C>j0Q>k›ï>lv#>m >nTP>oNv>qr„>sp>sÃÅ>sùØ>s^“>qÞÄ>pŽ{>oõù>mð>lž>k“S>iÜ >gæv>esc>aâµ>`Ö>k¡v>‚0Î>Š }>1v>‹Ú£>|·ƒ>eq>[#P>[]«>_¶;>dÏÙ>i^Ô>mÆ>qD5>r3ˆ>qb1>põ>qêî>q²>pC«>pBD>qª>qB¯>pÙh>q&z>q‘>q5»>pf7>pCv>pm€>oÔõ>néç>n<1>mD>l>j¤&>iÌ4>hý%>fXÿ>cq,>a*A>\Ä´>Vý>Sî>Uås>b>h¯>hÞf>c¤­>Vó->Q”m>TÙC>Y±>]m>`¹”>cšg>eöò>g2Ü>gœ.>g5Š>gl>ggr>h%/>hσ>i´>i2Ì>i6Z>ie’>h°†>h§y>h=;>hl >j.Z>lŽi>mB(>n9¥>mßs>jIØ>gZ(>f=£>e•€>eIâ>eex>eÁ+>eñl>fw>dìr>c‚ô>bZa>aV‰>_a>]ðƒ>\°%>Z.˜>W§>Ur™>R¿ô>O‘²>Kir>G–º>H0>HÙ@>Fp>H?f>G Ñ>I%>M3x>Q4Ÿ>T¤Š>WH6>Yó>Zk>[V>\Ê>\…ž>\šö>\‰¾>\]^>\À>[¹>[i‘>[>Å>[!+>[ >Zâi>Zo…>Y³Ù>Z)ð>ZL\>Z%D>Yþ7>YØ“>YZÌ>WÑ>X!°>X¿a>XÕ>X~ñ>Xb¢>Xy>XV¯>X)Ç>Wút>WÌ°>W F>Wpy>W>Ù>W4>Vâf>V±ü>V}p>VBÏ>V£>UâL>U®”>Uu¶>U; >Tø4>T¸ >Tvœ>T*Â>SÜÂ>S›>SX>R¯>R>QÝ>O—>N.a>M½>Jåž>Gw>B°d>3÷¼>)‹Ÿ>%C´>-žÑ>6ó;>=þE>CK>G{>I¸é>K>LÁˆ>Mˆí>N;>NZ‘>NÄ>N® >NœF>N‡ô>N‘Ä>N„™>N’>N€ ->Na\>MÞ(>Kÿ*>K&¡>Mõ>M´ç>MwÝ>MQÇ>M o>LA—>KÕ3>Lpe>L­Y>LK9>KÖv>Kd˜>Kµ]>K+Æ>Hç¨>J;M>KZÅ>K Î>Jß·>Jìx>JÊ?>Jj>IZ >I£Œ>Jò>Iõ >IÁd>I£>HÎ>I7u>I›>H¯±>Gå4>HX€>H~Y>HU5>H&®>Gþ>GÔT>G–ï>GY™>GK½>G¤>F¶K>F£_>Fˆ‚>Fuö>FO”>F!Ë>Eô#>E·ñ>Eai>Dy¿>C²»>C®l>DQ;>DŠU>D'|>CWœ>C°ß>CÀ´>C}ê>Bý¶>B J>Bqù>A(Ž>?~þ>@e >?ؘ>=õ5>=7ú><5º>8PÁ>3õ>2|>,]Â>$RÌ>&>ª>gt>(1P>.ºÑ>3©ß>7:P>8kB>8>;z><ý >=$>=xò>=üƒ>> ¯><=4>8š´>9ZÆ>9ˆL>=à%>=´H>=¬õ>=¨m>=>=o(>=K;>=+­><ðô><•4><\ø><†A><9®><÷>< >;sf>;: >;¬¡>; '>;tó>;H[>;#+>; >:Þö>:±y>:oê>:i>9ÀD>9ý >9á«>9Ð,>9¨Ã>9j1>98>9à>9õ>8ïo>8Ån>8¤<>8~õ>8W7>8,C>8ù>7åž>7ºw>7\>7oÑ>7@«>6ê—>6ÓÚ>6Çê>6° >6‡©>6Y1>5éŽ>5Ú[>5É‘>5&ê>5`½>5€Á>5]>54Â>4ŸÖ>2ü>3Ú„>4¯>1/>1Ïñ>3Ä>3Ѳ>3Ñ¡>3¯>3†8>2ød>2°z>2î(>2â ->2ºÚ>2šÆ>2‰_>2_î>22¯>2R>1ëT>1É6>1£†>1€1>1Væ>1¢>0ž>0.å>0•ú>0•¼>0r>0JÐ>0% >/ÿ>/Ó">/vê>/@O>/Q>// ->.ù >.µp>.Ž>.qÌ>.D°>. >-éb>-¤Ã>-R`>-2Ä>-^>,^}>*ø£>+§Q>+»>+ R>)±«>(àM>(.Ã>&êG>$¸Ó>!»,>Yd>_ç>J•>Û=>¥>>1£>q>!4š>#Í->%„Ë>&¬p>'r‘>'ð“>(F>(s~>(Â>(¬Ÿ>(·œ>(±Œ>(¥_>(—>(‡É>(jŒ>(H«>(?v>(%>'õë>'Ó&>'rM>'j¶>'‹l>'o>'QT>'8}>'ô>&¼Ø>&6k>&Wò>&,…>&>%ño>#@·>#œË>%µé>%Ë#>%ª_>%ˆz>%f>%BV>%>$óõ>$Õi>$†±>#Ó>$ Æ>$J.>$‡>$’>#â}>#µ4>#£·>#†K>#TŒ>#€>#g>"ûh>"ؼ>"·>"Œ>"kÀ>"CÉ>"&e>">!ï'>!Êø>!¨í>!‰>!h=>!F$>!$6>!Í> Ý > ¸ã> —É> cø> >ä> 5Ô> :>ðÇ>Ì°>Ÿx>?Ñ>BD>HY>+p> -i>èú>Ç >¥*>„™>cL>AP>¦>þÂ>Þ2>¼->–•>t>N >3Œ>7>Òí>v.>Z¶>xH>ae>A³>ê> -€>ãœ>ª”>ƒ$>e(>T'>B?>&Q>þË>º˜>[Ã>má>>×>>ö¾>Æ ->m»>‚˜>~=>g>>—> —>Ýw>±>>«.>Á>zE>>G>ô'>î8>Ýì>äØ>¹»>v¢>Q‡>I<>ô>& >Jé>Æ©>¶>h>8D>ão> >áH>™°>å=>Í¿>±>•Œ>j>:+>án>ÊF>Ä~>¶6>¶~>”‡>s#>Fi>ã>«ò>™q>Ï>»1>—ì>rë>Vž>)Ö>‰>ø>Ù&>º;>šì>zÈ>Z\>9$>Ý>è­>ÏÐ>³º>>]É>þW> >÷ß>Èé>¡ç>}m>NÖ>V>ãë> ->Tx>Â>x½> þ> ¾¤> ?}> > ôè>«*>pù>™=ó°5=â J=à Ó=ñ\=ýi> -ì>&A>K`> ¾> -·‹> \]> Çs> ü«> ·Ý> •> cÐ> kø> k/> a> RË> DÝ> 3B> ²> -Æ> ó> Ä$> g`>  -> C3> -íõ> -íË> 78> H> -©> -‚6> -ÂÂ> -¯Û> -> -‚%> -9ß> Í> -Ú> -> íè> ̈> ¼Y> Ÿb> } > fm> L> ,f> F>î¿>Øò>º>—ü>‚>f>I^>,>´>î:>ÑT>»Ç>ž>µ>fm>J‚>-ç>>ô<>Ö1>»\>žœ>>f§>J>-Ë>Ã>ôG>Ù€>»•>œ„>‚d>f >@h>$Ö>m>ø9>Úž>µÁ>Ÿ*>‡¼>l>P&>4>>ûŽ>ßl>Ä>>¨…>Œ¦>pß>T,>5ú>¢>·>ä‚>ÊA>®®>“>w ->6Z>üØ>]ù>M>ìö>ÎÒ>´B>˜â>%>WP>>> >öÚ>Úÿ>¿?>¤ì>‰Š>mÌ>S;>8><=ÿò½=ÿ¨=ÿpŠ=ÿJ=ÿ(n=þìû=þ³>=þ€§=þOú=þ=ýäh=ý¯“=ýiÇ=ý=üó[=üÙa=ü¢d=üh=ü.ý=ûýq=û¿=û”=ûcP=û+æ=úõù=ú¾N=ú‹Å=úYK=ú%I=ùð#=ù»K=ù…w=ùLê=ù =øç°=ø± -=øy3=øH-=ø -=÷µ=÷u=÷TH=÷.£=÷+=öØ=ö h=ö^/=ö4º=öÐ=õÓ;=õž±=õjã=õ.Ò=ôûP=ôÇn=ô—>=ôg°=ô0ý=óШ=óˆ©=ó†>=ó;•=ó0=òéŽ=ò¯ú=òÂ=òE=ñù=ñí=ñÁ¡=ñ”µ=ñ`œ=ñ'ñ=ðô =ðxK=ðLN=ðWÛ=ð Ã=ïÓ™=ïª=ï’¶=ï_¦=ï%•=îóÿ=î·¦=î“Ê=îe=î2S=íøM=íÅ -=í•S=íeÜ=í3³=ìøæ=ìÎF=ì˜'=ìQ›=ì+N=ëæÛ=ëÎá=ë£T=ëq=ë@s=ë‰=êÜL=êªI=êwà=ê@ä=êâ=éá^=é®=éyê=éC=é n=èè`=蹓=臺=èSF=è"Ô=çó=ç½è=ç}ù=çNH=ç'é=æôe=æ¼É=æhq=åê$=æõ=åâc=äõ’=åEü=å-M=ãVŽ=ãt =äwÊ=â =⹨=ä8u=ä ¶=ãðB=ã¿k=ã`3=âœ<=âüa=âõ =âÅ=â–ô=âiŒ=â<Û=â =á­å=àóe=áN"=áI=á=àëK=à»=à„=àT<=à·=ß±_=ßLd=߆‰=ß`C=ß6±=ß3=ÞÓB=Þª´=Þ}Ø=ÞO0=Þ=Ýî¹=ÝÀŸ=ÝT=ÝRv=Ý.=ÝÖ=ÜÔY=Üž=Ük˜=ÜEµ=Ü3=Ûâ2=Ûµ2=Û‰B=ÛW&=Û(=Úö=ÚÄ5=Ú• =Ù 7=Î)=Ïž=Ù/R=Ù®°=ÙP=ÙO`=ÙN=Øæ€=Ø =Ø“=ØbÓ=Ø2o=Øÿ=׶=×¾=×kF=×0W=×B=ÖÖ@=Ö¤S=Ön‡=Ö:9=Ö=ÕÇ™=Õ=ÕTŠ=Õ=ÔÒ/=Ô‰7=Ô8Á=Óã'=Ó€ƒ=Óª=и{=Ëù=Î ¦=ÏbÊ=Î\Î=Ì?U=É;¿=ÄüÈ=¿&›=¶ìc=©0#=¦°n=´oX=¼ôV=¸©=Æm!=Ǧz=Ë%=Ìãú=Í»4=ÎFô=Σ=ÎÙ•=Ï5=Ï Š=Ï ñ=Ï -”=ÎïŠ=ÎÚu=ÎÇ=Τ]=΄h=ÎkÛ=ÎI=Î&4=Î1=ÍÛr=Í´,=ÍŽ,=Í]F=Ìév=Ìp=Ìe=Ì»µ=Ì›˜=Ìoÿ=ÌG`=ÌS=Ëõ²=ËÊg=Ëžl=ËiË=Êë3=ÊS+=ʺ¨=ÊÁ³=ÊŸy=Êx=ÊN…=Ê$=Éù§=ÉÏ=É¢T=ÉxÜ=ÉOg=É$j=ÈøL=ÈÎ=ȤA=Èyó=ÈN®=ȃ=Çê=ÇÍ{=Ç£\=Ç{1=ÇQO=Ç&Á=ÆüN=ÆÐø=Ʀù=Æ}î=ÆT=Æ(”=Åç¤=ÅÁÔ=Ū=Å~»=ÅSŠ=Å,=ÄÿÎ=ÄÀ=Ä ˜=Ä„M=ÄYî=Ä1¹=Ä­=ÃÞ·=òÖ=Â=ÃDý=Ã39=à =Âã«=¡=Âaƒ=ÂS6=Â6½=Â/=ÁéN=Á¬=Á˜=Á_„=Á:Ì=Áß=Àóà=ÀÊ=À¢!=ÀxŽ=ÀM==À$º=¿ûÍ=¿Ôµ=¿ª=¿}2=¿Yj=¿1V=¿±=¾Þa=¾¶Ç=¾Š£=¾V=¾ -=½þr=½Ô{=½Rà=½{€=½oÄ=½FØ=½=¼÷I=¼Ðe=¼§ï=¼=¼V™=¼(=º0è=¶EE=º³=»MÛ=ºiQ=¹ä1=ºU/=¹† =ºŽn=º‰<=ºÛ=ºµ=º\=¹ýö=¹ÔN=¹¨é=¹ƒ=¸ÛN=¸†ø=¹Í=¸ßú=¸Àv=¸š=¸qÏ=¸Jt=¸"Ü=·ü=·Í=·«=·…d=·_g=·26=· s=¶ãÞ=¶˜ã=¶‡O=¶sP=¶G¤=¶É=µ÷)=µÈ”=µ¡?=µŠ=µc-=µ8B=µ Õ=´àÒ=´¾¤=´;=´r›=´>Ñ=´) =´=³à·=³º/=³’ç=³l`=³Gc=³!=²úÆ=²Òõ=²‹Þ=²[*=²GS=²9C=²=±ï‰=±ÉD=±£;=±}P=±WC=±1+=± .=°âœ=°ºG=°˜ú=°sm=°Gª=°$¾=°Ä=¯Ý=¯·;=¯‘Ë=¯l=¯EÓ=¯¼=®ûU=®Õï=®°‰=®‹=®` =®/f=®=­õK=­Ð0=­§’=­|4=­]=­:Ã=­V=¬ðÞ=¬Ì =¬§~=¬€¢=¬\0=¬8•=¬Z=«æc=«ÇŽ=«¥!=«€—=«[Ð=«6ü=«—=ªèû=ªÂå=ª£!=ª~Ý=ªYþ=ª5=©‚%=©Ï³=©Èã=©¤J=©~Â=©V=©&§=¨qC=¨¢°=¨ÄD=¨=¨U~=¨\º=¨:Í=¨¤=§òs=§Îb=§¥=§zk=§SÔ=§*…=¦êŽ=¦\U=¦µl=¦®ý=¦hÿ=¦„=¦/ã=¦­=¥û×=¥×†=¥µÁ=¥õ=¥m=¥K=¥'¿=¥‰=¤á=¤½Ë=¤š=¤w.=¤PY=£ª½=£hÈ=£ã =£ÆV=£¡]=£l:=£R'=£9à=£=¢ós=¢Ïô=¢­;=¢= '=¡ak= Á=¡[ñ=¡Úû=¡¸=¡”W=¡kð=¡O =¡/k=¡3= Î‹= Æ[= ¦ = ×= Kf= 0O= <=Ÿù-=ŸÈ‰=Ÿª=Ÿ’ž=Ÿp=ŸN€=Ÿ,S=Ÿ ‚=žä~=žÄê=ž£œ=ž€ó=ž^í=ž=|=ž5= I=¢Ü=´Ì=Ž!=]¶=M6=+P= ‚=œè3=œµÈ=œ¡^=œ„2=œd*=œA®=œ+=›àN=›Ôÿ=›¼l=››<=›që=›=šÌ%=šõð=šñ&=šÒ§=š±P=šr=šo/=šN=š,û=š Ø=™êš=™ÉR=™¨i=™‡ª=™fF=™DA=™$¡=™o=˜â =˜¬{@!<Ó@ @(Û@NM@ Xl@!¼@":Í@!üþ@ ú3@Ëõ@/O@g‹@ x@ ŠŽ@ ™@ RÀ@ç+@L,@hÃ@¡@±•@È#@ C­@!tð@"(Ž@"€k@"§°@"¯.@"u@!ÝÁ@ ¢?@@îÃ@ÙÖ@Å9@ -d@!5@!z¹@!m‰@ ô@ @@@:ÿ@C@›ˆ@p^@ @ v{@ “@ š[@ ›*@ …M@ 3½@k‚@ý†@( @µÀ@k.@W"@Ê@@ÓÀ@ØV@ý{@ - @À@x|@õo@/¤@×@$°@ÕÞ@/ñ@¬@AY@Æ@e@Áj@”è@·@Où@€@®(@fÈ@f·@‰ë@z@/Å@ûÏ@ÝÓ@êô@¥_@y@së@V=@öà@ €@ð—@1`@«@ L@—e@©´@Úô@ä@†i@bü@`è@5 @ûf@âO@Åø@‹-@mÏ@Í@lu@Oc@œ@à @£L@a@¼C@m(@$A@iF@HK@>:@½t@ß @E…@3Ö@ 5@á5@~r@¯ú@¬J@ç@Ll@,@–*@Ê@Â~@ª‹@‹—@M«@ÈS@æô@»Y@˜˜@%$@Òš@3@EÏ@S÷@o¿@h@ G@-ê@íÐ@9@7î@zl@«ü@Ìö@÷c@@xƒ@TÕ@g‡@²h@^É@…î@ÖÙ@‰º@½@Ÿ™@Ð@®†@a@W¾@Sj@³,@Nõ@lX@îà@©q@K?@ªr@Y\@@Ši@ô$@}õ@wC@#L@/r@íÉ@9Ÿ@„Ö@Ê#@ Ñ@†r@ $$@ º@ ,Ï@ F4@ Èj@ ½z@ I@@»T@W~@Ýï@¨®@Ó@eú@þ@p@Í@*8@Ù@…à@é_@z_@9 @ ñ°@ ÖÐ@ 5@ “r@ ´Á@!Ó@S$@~a@œn@À@þç@>@_ç@ªh@“ï@ù!@â÷@e[@¯³@ä@®Ò@?@4=@ zL@ ݺ@ i¤@ `4@ óå@ÿ™@ç@~¦@Vä@ÎÄ@?M@íü@%@ b»@ ž0@]`@Z@’"@ß•@Üm@v¶@ÐJ@EÀ@<@•9@œ‘@ ðp@ z@ âÓ@ à@ -@ @ :š@ me@ >_@ ±¡@ @ j’@ -Öê@ -xˆ@ -?@èi@u~@#m@Þ@ -Ø@ è@ …à@ ðW@ ì&@ ¶|@ ¨{@ Ê•@ ÍŒ@ pb@ ¿$@ e@ ¢/@ Äk@ Ql@ ÷Ð@ o‘@ ’t@ >¸@ ;ß@ -pB@oÉ@~ÿ@\ä@ -Dä@ ½#@ ž@ œq@ /n@ 3ñ@ Š¼@ Þ6@ @ i@ üˆ@ ³{@ -ÿ@ -—@ ?b@ 4@ È@ -’Ý@ K‘@ ±+@ ]Ã@ -)P@žÈ@¯@Ï›@¶ï@ ä¢@ -ðO@ }˜@ Eø@ -, @nâ@ô}@˼@ó¢@ =Ð@ µ’@ )@ ” @ - -…@ -’Ù@ -ÃT@ -‘²@ -4€@ âG@ ©²@ w^@ N£@ \@ ¬@ -!@ -,•@ -1b@ -6Á@ -3#@ åx@û@hP@Ï9@/Ñ@à‚@2ä@<¸@”@P@Å @b@i@¥²@µ­@˜Ò@•£@­6@ƒ*@ä’@1Å@þu@>ý@5´@dµ@3o@TÐ@èŽ@Ï@Wã@¶Ð@Wv@iÈ@ŽÙ@ÃÓ@78@dŸ@ -q@Ç'@¨u@£@OÏ@Ï@cŠ@¬@¸Ñ@RÇ@]ù@Ú‰@°@„­?þÉ¡?ýÑ“?ÿ-î@~-@¸Ð@M~@ÿ»@@ì@~@ÛL@U%@Qý@Ä~@) @Ž@tÛ@µ@Tß@œº@Np@Ç®@r8@@?þc?ý ý?þm«@9¸@ê!@—!@§Q@À2@Fd@F@„H@(Ÿ@Ik@°ç@ôe@ʸ@A@-ó@‘L@Â:@ƒ@a@ñŸ@+•@…¿@¬@p@@@.@µþ@'@¾@ùù@dã@j,@¿I@{@?þ2½?üïŽ?þUZ@´8@ @¸µ@Ù¿@±¹@l8@)’@ß@E@¸@÷y@_}@?üÊ«?ùæ\?ù ô?ú¤?ýn@ ¨@ÐH@*;@Wð@p<@zo@~f@u2@K›@ðA@fÂ?ÿËÜ?ÿ„Ö@ @„ž@Ó¨@íÈ@ã9@½Õ@xS@”?þ¯w?ýT÷?ülî?ü_?ü<ç?ýØ?þz?þú¥?ÿzJ?ÿ¥f?ÿ‹=?ÿ2}?þ³3?þ.´?ý…{?üuc?ûS:?úê0?ûIû?ûµ?ûÏú?û·t?û('?ùèJ?øÛŸ?ù>1?úÒO?ü'À?üWŽ?ûˆ±?úvO?ù÷9?ú[9?û‚?û˜ˆ?û’è?û%#?úY–?ù+!?÷Žõ?õÞ?óÀJ?ó0 -?óø¹?õ‚@ê$@“\@V}@Ú¶@}Ñ@ Nk@Ca@îZ?ýk¼?ì„‹?ÕJ¦?Á·?¾òr?ÏË`?éü‰@ë@ -ª\@r@ @ȼ@i¯@<4@§?@&@[®@‹@–i@Š @0ð@cÈ@c·@ l@ÂL?ó0ƒ?ÚÒp?ÈiE?ÉR?ÞCl?ú‡@ˆÑ@žŒ@ š@â@"9@%õÔ@(à @*ç*@,Ž`@-c0@-_Æ@-5%@-/l@,~<@*¸U@(¸ß@'bÅ@&Ô@&Y@%îá@$fX@!ñd@=Xa@<½³@;Ðå@:8º@:7Õ@=$@AÝ@CjV@C™@B>(@A -ó@A8@Bì@CE @D#T@Có¸@B@>f–@:Öˆ@9¢²@:æ @Ð@6h,@8´@<‚„@@Îû@C&¶@Cû°@D‹@CH•@BA@A˜Ô@BÄ@DRÐ@DÅø@DÀ@Bé¹@AœT@@¶È@@¹Ÿ@Aª@A#‡@Aö„@CO6@C¶7@Ba{@?xÕ@<þ@8Z™@29H@%ém@Äw?å/j?¼Êê?ÇU?ü_Ï@¯§@/ „@9·@>9@@1@@ðã@A 6@@q¾@?cÛ@?#5@@)ð@A @@@—í@?ZÉ@>d @> #@>%[@=ÞÙ@=EJ@<„ -@;@3ðE@3ÁÉ@3ÀH@3j@3R@2Oý@1óÃ@2 8@1î @0¨Î@.Z@+á2@+èå@-_×@.@@.?ž@..“@.%@-Hƒ@+Rx@)¿Y@*|@+A‚@+Ö-@+!u@)9Ý@'6·@&Ìó@( @)mä@)í¸@)¦@(G@'pŠ@&¡ß@%Ý@$ü@$8Ä@#…&@"¦@!xà@ßi@å @ O@ðp@¬O@´½@ £]@´]?÷·?ÜÅÜ?À’Ï?³«Å?Àk›?Ü‘Ò?÷fò@/K@ ‚{@í)@Ò@s¼@~Ã@fö@2ç@χ@]@ê=@.@ú;@ %š@ h‰@ ê9@!\X@!»º@"O¹@#0@#O“@# °@"¥™@"œ·@#?@#^÷@"Þ@!{@ ŽV@!7(@"<@#|Å@$¶@$dN@$™@$»@$Fˆ@#ÎÖ@"Á?@ »@•@¾Ã@!ä¢@#]x@#˜@#Xk@#Nç@#Š¼@#’L@#H@"~@! Ã@ ›@ ®f@ ñ{@!fÀ@"n@"¬L@"è•@"¯c@"&ó@!¼@!²{@!›@!ƒ@ ¤9@ Ö8@!@3@!@ï@Ì@N¡@Z@°@¦ø@†@f×@“»@¹š@o,@-‡@ƒÕ@á&@‘@Uÿ@î4@h‡@( -@º@?Ÿ@a¢@ßÀ@*Ð@ÒÏ@AÑ@¬>@}U@6@÷´@›ø@YP@Òu@zÐ@·ì@}e@¾ª@¹@yi@ö«@„f@€5@˜…@A+@"ª@kA@q€@"þ@m/@,E@”Þ@ÝZ@¶@BÂ@¢Ó@c@#æ@a/@ÔE@&›@ @B@ŒÌ@7s@îÀ@™¯@ä6@x˜@A+@—@“3@ÓÉ@&ö@q@×`@~\@³ã@C]@ @ -Õ@ß@¿Ó@bº@œ@”¢@od@s@„@E§@&þ@N‡@r@5@³R@Ûß@º#@#Þ@='@ «@†å@¿f@?Á@¯O@À@X»@úš@³µ@?;@?þ¸ð?ÿB?þ­]?ýH?úâ„?ú£?ü3‰?ýÀ_?þI¶?þ ×?ýxð?ü´[?ü¢ÿ?ý)ÿ?ý](?üÙ?ûü÷?ûj?úcN?ú;¥?úGè?ú ý?ù‹ù?øþ?ø‹?øBŠ?øT)?øo°?ø:K?÷ƒ?öé?õ ½?õo-?ö!?õ|M?òüô?ð¶’?ño4?ô>õ?ö‹ï?÷@3?öÅW?õÜR?õ&?õ#?õa?õo«?õ$M?ôQ—?òY%?ï™?ìÉI?îBC?ðÉK?ñ­?ð"ª?ðx?ñ0?ò -?ò›?ò€Ú?òZA?ñÖ;?ðrõ?î´ö??ïê/?ñ?ñS¬?ñ&B?ðOÕ?î,ý?ìH‘?ìÔÔ?îÌÎ?ðÐ?ðA?ïÕ ?ﯗ?ï_P?îŠl?ícŽ?ìC’?ë^9?ë†r?ì¶!?íÀé?îŽ?í¼&?íÊ?ìä ?ìÇÁ?ìz‡?ìb\?ì ƒ?ìûï?í»?ìÛJ?ìˆY?ì%È?ë~{?êð!?êßÓ?êõ¹?êѲ?êÀŽ?êÓ&?êâœ?êÅþ?êw?ê8‚?êñ?ê#?éàù?éu?é=ª?é•?èÿ¿?é f?èÝ’?è½ð?èÝÇ?èÙÊ?èŸÎ?èaÍ?çåš?çC0?æûN?æþØ?æü?ç?ç;x?çÆ?昶?æ?åÁu?åËÚ?æ?æ9Ê?æ['?æiæ?æ# ?å•W?å+Ì?å˜?åe?å,?åE?凈?åû?äF:?ä!‹?ä?äÍt?äÌe?äÊÎ?äþ¨?å ­?䪥?ä1?ã€È?âí?ât ?âzÉ?âÌ›?ã?ã)?âÑ“?âw»?âQ/?âHØ?âXÿ?â=I?áÿV?áÎþ?áº?áµ–?á‹Ó?á:³?áñ?á??á?m?àË\?à‚¡?àÑ?à‡^?ànâ?à@‘?ßî±?ß®Ö?ßšÁ?ßp³?Þé¦?Ýú~?ÜðW?Üu?Ý1?Ýüv?Þ]f?Þh™?ÞW;?Ýý ?ÝwX?Ý7ˆ?Ý'ó?Ý*?ÜöÜ?Ý$0?Ý&?ÜÆ>?Üq?ÜŠZ?ܺã?ÜY&?ÛÂ?ÛŽ?Û‹(?Û=ì?Ú°£?ÚK+?ÚW?Ú?Ùè?Ù”?Ù ¯?ت™?ØW{?ØAP?ØL½?Ø[ ?ØJ?Ø"£?ØQ?Ø?ך€?Ö­·?Õè?ÕÑb?Ö>(?Ö‰(?ÖO?Õ²H?Õ ?Ôõ?ÔË:?ÔMÐ?ÓØ.?Ó°?Ó}´?Ó:?ÒvH?Òç?ÑïÙ?Ò›?Ò0(?ÑÿÔ?ÑAy?ÐM´?Ïñ?ÐÔ?ÐQ‘?Ðeú?Ð?¦?Ð8P?Ðÿ?ÏIÛ?Îwî?Íñi?ÍíÚ?ÎwÄ?ÏI?Пt?Ñ·?Ñæ?Ñ_9?ÑY¾?Ñ%Ø?Ño?Ðëä?Ы"?Ð$‹?ÏŽ6?ÎøU?Έ-?ÎR9?Î*Ð?Î0t?Î0g?Î'/?ÎiÚ?ÎЬ?Îüw?Ï?Ï?ÎìÄ?Îþ?ÍÓ­?͆%?Ímô?Í"b?Í7¯?Í„ ?¯ÅÃ?°*n?¯þ?¯v¥?®‹@?­âi?®,¼?®]®?®º?­É ?­ÁŒ?­â;?­Ôb?­„Ý?­iž?­‰ˆ?­9?¬. ?«\Ð?«k?«²?«l¡?«™Q?«K·?ªÑ–?ªîZ?«cô?«Q?ªÏý?ªûù?ªÅ>?ªCd?ªƒ?ªÒ?ª×?ªŽ—?ªB‘?ª'¦?©Êÿ?©gÿ?©O?©A…?©ö?¨Õ?¨Ñ?¨+?¨4£?§ð?§µ\?§íª?¨0š?§úœ?§ƒâ?§Eh?§¿?§´l?§wm?§Ä?¦Ã„?¦`J?¦Œ?¦C—?¦d¾?¦/Ó?¦º?¦ é?¥ÊÕ?¥fÍ?¥SJ?¥C?¤çf?¤"?£~&?£ðµ?¤–É?¤¤³?¤¡?¤³¢?¤ì±?¥0š?¥ -=?¤¢6?¤ _?£X§?¢Ñ#?¢| -?¢œR?£0?£™?£>Í?¢‚H?¡é6?¡ˆõ?¡R¼? pt?œþG?˜ÂÄ?˜€s?›£?›P?˜ñ9?™®ç?Uä?Ÿ?º?Ÿ„ô? ;? ²? >¦?¶Å?™.*?—ù¸?›?/E?&?œ3?œYf?œZ?œ©†?Gµ?šü?‘¥?†¶?Ͷ?žR?½Ð?!ã?œ>ÿ?šÞ‰?š -??še?šK?šj¦?›!ñ?›%?œÿ?œo?œu?›W¿?›7/?›Ž9?›e2?›Ö?šÜ9?šo>?™õ’?˜¶S?˜$ ?™­u?šÚ£?šbà?™.Ñ?˜E*?˜`'?˜èÊ?™G[?™µ½?™÷§?šñ?šGM?š]?™¡÷?™sï?™dD?™,i?˜Ä?˜tì?˜‘ª?˜‚ß?˜7H?˜ V?—´N?—z1?—pL?—e?—BA?–Ù]?–&y?•i?•Mñ?”Ã>?’…~?+M?‘¹ñ?•w?–!±?•ç?”ö»?• -L?•Kë?•˜Ü?–!ˆ?–q^?•ûm?•dÞ?•h?••ë?– -O?––C?–Kƒ?•JÀ?”´t?”Éj?”÷Ä?”³h?”D;?”þ?“ÿ®?” ê?”U+?”O ?“š¼?’‘¼?’â?’ë½?“®À?“©?“èj?”Ñ?K´?{(?‘œÑ?‘ª?‘\ª?‘0M?‘U†?‘1­?éŒ?ÓŸ?Ö?‘ 3?‘[f?‘4\?‘ ?‘?΋?Ù?:?—X?vØ?‘"?‘K;?‘ Ã?‘ H?åE?i?Óo?v•?; ?ŽÒÁ?Ž^]?Ž|?Žø?”i?æ?µ?ŽS?Ža??Ž¯?Ž¯L?Ž<¡?àÀ?Í/?¨Ä?o¿?e>?9Þ?­??ˆÅ,?‰)ú?‰O–?‰V\?‰#?ˆÕt?ˆ}­?ˆ;ó?ˆz?ˆ3?ˆ7?ˆPÛ?ˆJ"?ˆ.Q?‡óÛ?‡¬Ó?‡šW?‡_!?†Ø?†°°?†æ›?‡á?‡?†¿ ?…Ì÷?„µÀ?…à?†ü?†~Y?†©y?†},?† á?…©?…{v?…tË?…rH?…D—?„á.?„Äì?…»?…I—?…54?„÷-?„½â?„„Y?„K¨?„4?„3ï?„ "?ƒýÏ?„ ý?„c?ƒå,?ƒœ§?ƒ|?ƒT¬?‚Ø?‚¯R?ƒ[?‚ý»?‚©?‚Ú‚?ƒÿ?ƒ&®?ƒ$5?ƒ!V?ƒ#?ƒ?‚þÌ?‚Ó9?‚—º?‚4ƒ?¥"?÷?€Ò?8Ø?¤?‚?7c?+??#?EQ?<?.É?1´?%Î?€õæ?€æÄ?€üß? *?Q?€å?€Á˜?€“r?€[ˆ?€G´?€8ô?½j?o?~¯É?~Kö?~%?~^þ?~-?}|á?}%3?}?|¯H?{ï²?{ÁN?|*§?|7&?{÷•?{œð?{0p?{.^?{dW?{‰½?zö´?y€!?wÎ?vÂu?wŽ‡?y]ü?y·Å?xŠ‰?x D?x^±?w† ?v™ó?vŒ=?vº.?v±?wÕ?w*·?vÓ¨?v™8?vFÌ?v¿?v }?u´×?t¿±?sð—?tY­?tõ7?tî>?t²È?t??sIv?sI²?s¬š?sy³?s,Û?sB?s#Ñ?r£[?rVõ?r6-?qõÏ?qäÛ?q´å?qRB?q+R?qN?q_k?qD^?pÞA?p@W?oÚp?oòZ?p'?oòÐ?o{·?n×Ã?mê?mkð?m´Ú?n Ð?nj.?ni?m¦ö?lè½?l›^?lÀR?lÃD?l-l?kþ+?lF½?l??kØ?kxp?k;/?jÍ;?j˜?j¿??jÂf?j­j?j„®?j?i]à?h¿?h‡N?h›e?hJ?g‹[?fâ?fÜ…?gû?fÜÐ?fŠH?fl_?fOà?fù?eÎ÷?e³&?e¹?X‚?X­¡?Yà?X£Á?Xv«?Xùó?Y¡"?YÒ?Y«Èt?=î(?<À?<}?>ˆ?>_?>a?=Ïñ?=ö9?>04?=ð§?= ¶?=™¼?=‹a?=ŒÎ?=o?<­H?<º‘?<¯·?<=??*h?*‰—?*rç?*2?)Å?(ĺ?$vÚ?Gä?_™?"Z?#Ã?$›;?&{?&Ùã?&@³?%Ä?%iL?$Ôì?$£2?$^|?$8g?$Oá?#å?$n?$K6?$m~?$T?#ó·?$ï²?%D¦?$ÛÊ?$Å$?$Uª?#û?$'Ý?$g?#ûÄ?$¬o?$ÏL?$"?$À?$0¡?#®ƒ?"è ?"—?#4T?#éÚ?$D‹?$&,?#ǧ?#tÏ?#+»?"çk?"¤?"q®?"<ƒ?"}½?#Ó?#m??#bÞ?"íO?"zß?"4{?"f£?"ã?"Š–?"·ö?"‚Ü?"LC?"Ká?"ƒ?!¾÷?!å­?!øz?"8?"q„?"C?!±d?!f€?!™?!¬î?!‡?!º*?!¹?!'&? ¦P? ÃU?!Y? ?Ò?íá? ? g? .z? ´?£Ë?KÒ? ³?(ã?.?´N?®¥?ø?ó†?óú?d?ÿ?üÜ?ê_?Xg?Û°? -1?vL?$¿?!Ì?Ù^?òc?%?zé?”Ø?b?#€?„X?÷r?<ü?¹ì?¬?T‘??mj?-?_?3£?W?èH?‘˜?IZ??êý? ¼?ái?O?L/?fn? ð?†?ÿ‡?åÉ?'™?C?D{?N“?¼Ú?r·?ûÓ?Y|?µ¯?1?5d?ßå?œ?‚Y?i%?`’?5"?.Ø?¯ -?Ìõ?É?ÄÃ?¹b?6…?^?KÔ?(>?'{? -c?Îï?¥Ã?;;?†‰?û?Ð?¿?Ô¨?º?ã§?²â?O?z? ã÷? ,? ¥y?m?êt>ýêG>èÙ‹>ÁwC>¤¨~>¿Ø|>æÈô>ú“0?ë?…,?‚k? üî? N»? H“? õ§? ÿˆ?à˜?/9?;]?cj?Žø?{B?E’?<£?n˜?¡?Å=?µ?ba?p·?jµ?qÚ?;7?ì ?Âê?À¥?¬.?]•?‚6?*? -’?\U??ë?ŸÓ?g½?|@?Žs?1˜?‹?9Ž?EK?;?r? ëš? Þ6? Þ -? ©{? V:? dý? ‘m? –¹? ¶? /è? Ï(? O—? ðâ? ûÜ? ¨‹? X‘? kŸ? Û=? þŒ? ê§? ×c? ™2? ^S? .D? ²E? *? -ù>? ? g? ‡? ²? -À? -­¢? -È? -ª? -¯Q? -³ó? -„h? -rx? -.Ä? ±? Ÿf? È4? {?òÿ?ŒÏ?ÿ¢? WB? a? *ƒ?˜h?Ep?h–?¤?—h?_€?'Â?I­?Q«?"K?ƒÃ?Êo?Ö]?+1?oý?j÷?m³?WC?©?ûº?ËÅ?Šé?ƒ«?–z?¾~?ãG?â ?»V?Žc?W?@#?.‡??ø-?èÜ?À„?ˆÈ?tr?r‹?m³?_?D?$õ?T?ùT?â?´Â?«½?±??o¢?nû?d-?G*? Ö?ñå?Ýx?ßz?ÒX?ºä?™'?y‰?U½? Ê?¼Ú?ŒŸ?^ü?Æ?­?™G?|??A>?º]?3?„ -?ì.?ð-?Ûx?·u?—Ò?ˆì?~?r?]ý?IÏ?:?' ?~?ùï?»}?Ÿr?©v?x†>ÿTl>ýö×>ÿ]U?Œ?¸?"6?í>ÿË|>ÿ€>ÿl;>ÿp„>ÿ:N>þJ>üÃ6>üÁ>þ¹>þZ’>þ1¹>þ>ýÍõ>ýª•>ýŠI>ýb&>ý7}>üø=>üÊ>ü—>û»©>úg>úxk>ûƒk>û³;>û¥Ë>û{½>ûE\>û>úê·>ús >ú4µ>úND>ú/s>ùÁö>øÆÑ>øQ¦>øêò>ù6Ô>ù8à>ù${>øäU>ø¬®>ø€4>ø]Ä>øBæ>ø >÷Àê>÷¥¸>÷†¨>÷K=>ö§´>õÁõ>ö0º>ö› >öKH>ö½>ö4&>ö.t>õÓ>ôì >õ/2>õ>ôq>ôMR>ô®>ôˆù>ó•k>òÕT>óÏ>òÔ•>òræ>ò¿>ó-A>ó0>òûŠ>òŸ>ó,È>óõ>òO>òkÆ>òþ!>ó’Ï>ô^>ôþ >ôùM>óuë>ò—>ñÊ—>ñ&¯>ð^|>ðœË>ðü>ð]#>ïû¨>ðCb>ð'|>ï ó>ïÆ,>ïÓ°>î—S>íág>íÍ4>îe >íòŒ>îæ>ï{>îF‹>íaH>íZ>íjG>í >íµF>íóÖ>î2Ì>íü«>í8=>ìH>ê~³>èëH>èaò>ç4Ú>ç[>èÀl>ê2Ð>ê€+>ê´>êŸÙ>êåþ>ër>é)Ñ>éE>ê5[>êÝd>êr¦>èíZ>çX@>ç$>çò>>èyk>è+>çóõ>ç'=>ç Ó>çbÓ>çÕ¼>牦>ç;Ç>çb†>æýå>æ¥Y>æ6Ö>æ‰Y>æ">åp9>å-•>å:¥>å4“>äüT>ä·&>äná>ä%>㺛>ã©‹>ãã >ãØ¢>ã™F>ã?æ>ã¸>â×H>â,>âk©>âFÙ>âž>áÀ¯>á!y>ß«ª>ßÄ`>à¤w>à–É>à`ø>à*ý>ßÚ÷>ßòþ>àQ>ßíÛ>ߤË>ßPD>ß-¸>ßø>ÞÐñ>Þs—>ÞSZ>ÞIÂ>Þ*k>Ýùã>ݽD>ÝFT>ÜîH>Ü×w>Ü¿Æ>ÜÅW>ÜÚÝ>ÜÆ>ܬð>Üžå>Ü]Y>Ü >Ü=>ÛàÑ>Û›ð>Û„/>Û\¬>Û'b>Úþé>ÚÉl>Ú°>Ú‹|>ÚA >Ú ý>ÙÛ>Øàï>ØÔ¤>Ù*Â>Ø‹¼>ØK>د8>ØT¡>×ô»>Ø6ç>Ø(R>Ø{>×åQ>×°M>×NÃ>ÖÅÅ>Öëó>× >׿>ÖÜG>ÖxØ>ÕÅx>Õ›±>Õë>Õä9>Õºè>Õw¦>ÕHi>Õ#’>ÔÒ4>Ô6Ü>Ó Ò>ÓD >ÓûG>Óí>Ómp>Ó*È>Ói§>Ój>ÓJ3>Ó$v>ÒúG>ÒÊ>Ò¨ü>Òr>ÑôH>ÑeH>Јu>Ï>Þ>Î1[>ÍÄ€>ÍŽß>Í’ª>Í ->Í…·>Í…ê>͸>ÍÆ >ͼU>ÍÂØ>Í°>Íf6>ÍT@>ÍYc>Í%>ÌüR>Ìõ7>ÌÇŽ>Ì‘Ž>Ìt¨>ÌEu>Ì®>Ëû™>ËÖ1>˼É>ËÆÓ>Ë×>ËËó>ËÚP>Ëá}>ËËr>˺S>ËŠ+>ËNv>Ëi>Ë!ö>Ë€e>Ë€v>ËuK>Ë‚p>Ë‚>ˈ¿>Ë0>Êâ’>ÊâÌ>ʵy>Ê ¹>É ï>Éèi>ÉƘ>Ȭ”>ÈÒ™>É@j>É›Â>ɉª>É0š>É"¤>ÈÎú>È¡|>È 3>Ç´X>ÈE>ǹÓ>Çút>Çö3>Ç%Ý>ÆJ½>ÅÜì>Å>įó>Äh*>Å2â>ÆHs>Æ Ö>ÅÞþ>Æy>>Æ ->Æ)>Ʀ$>Ç­ ->ȇÜ>Ét>Ée?>É­ >Éþ˜>Ê>\>Ê>J>Êlª>ʘ¥>ÊQ~>É-Ú>Èý.>ÈíZ>Èkf>Ç€Ï>ÆK‰>Å1>Älø>Ãû·>ÃoÑ>ôç>ÃÏÜ>ÃËÜ>ĘS>Äîÿ>ÄÍm>ÆLó>ÇD‚>Æ”7>Æ´¡>Æàd>Ç >Ç>#>Ǹµ>Ç·>Çv“>ÆÐã>ÆŽ>ÅÀ>Äö>ÅEù>Ľl>ÃûÅ>í¸>ÃT>Ã< ->ÃZF>ÆÀ>Ä71>ÄŸÚ>Ä•‡>Ä‘Ž>Ä®¥>ÄÑœ>ÄžÅ>Ät¢>Äm>ÄJ)>Ä !>ÃÎ:>èÎ>Ã…d>Ãxñ>Ø>ÃŽ>Ã:>ÂW ->ÁÍê>ÁQf>ÁB€>Á(1>Á“>Àçb>À±³>À‘>ÀTö>¿öÏ>¿½~>¿5>¿@ä>¾ûš>¾ÔÏ>¾»'>¾…>¾_›>¾^>¾Dî>¾Z>¾ j>¾ƒ>½îÊ>½ÉÁ>½À»>½¥ý>½e5>½:>½CI>½>¼Ò»>¼^ø>¼:]>¼K>¼@ž>¼8`>¼m>»Ì²>»¹*>»™¶>»o²>»N>ºÁ/>ºªˆ>» :>»·>» _>ºÝó>º°>º—m>º. >¹ª9>¹ÊÎ>¹å³>¹Èù>¹©>¹Ž>¹‰p>¹V$>¹Y>¹>¸Ùw>¸‰ñ>¸O9>¸"I>¸ }>·Ú>·ÎÛ>·Ër>·”‹>¶õa>¶È§>·ZS>·S[>·¨>¶ï§>¶Ó§>¶–˜>¶Dç>¶Ó>µå>µ‚E>µ>´ý^>µD>µ,>´ý>µ&@>µ-Ä>µA>µM>µ,,>µ›>´ÔZ>´áÞ>´ô>´},>³½9>³]>²î'>²ô>²eÝ>²£ ->²'„>²T >²m >²xg>²ÊÏ>²ëT>²×¾>³d­>³ÏÃ>³dÇ>²¶u>±‘ê>°ÛC>®vÓ>«É¨>«cG>­ËY>®v>®ˆ9>®Gž>¯>¯šÕ>°Õˆ>±2>²‡™>²S>±÷ø>² ?>²-{>°?÷>®¯|>­Á£>­ ->­nF>¬uz>«—8>ªâˆ>«€>¬qŒ>­Ú>®ùœ>¯~H>¯m>°­1>¯µT>®‚–>¬Q®>«=F>ªä(>«Sä>ªŸ›>ªA>¨¼–>©Ý>ªÞ>¬^>­Oü>®‰A>®©>®¡þ>®4ä>­ˆ>¬M>©‚2>¨A~>§W¹>¦G->¤˜>¥©ò>§<>§ÇF>¨ét>©{T>©¢§>«èb>ªÊ½>ª‚>ªQ4>¨•]>¦Kš>¥q*>£»>¡ª$>ŸÅ‹>ŸPq>£ŸØ>£©U>¡‚>¥6>©‡>§æ>¤}1>§ g>ª¥ˆ>¨Üt>¥YÓ>¤~>¢>ˆ>¡²>¡Æw> wá>ŸãÏ>ž™•>¡³¦>¥1K>¨™>¨à¤>©§j>©0’>§`¿>¦f=>¥Å>£ÙJ>£"C>¢Âq>£|p>£œ§>¡›>a2>š‰ì>™NC>›’÷>¡ù>¢¢j>£ Æ>£%l>£µÄ>£Ù>£=j>¢G>¡”/>¢9S> ›´>¡,–>¢Š>¡ça>¡Pj>¢û>£,G>¢¢>Ÿª_>Ÿ³>¢f·>¡‡¡>ž->›«±>ž¶">Âü>œ5K>žò¾> þ>¢¢†>¢ý¹>¢?>¡D¾> Ò>œ¯ê>œÅ¶>œ ¸>šR.>›íæ>žõH>ŸÍé>ŸÃ>œ_ >œ/‹>žNÊ>ž†I>vI>‘¿>Ìù>ž€?>žyË>žG>ž&É>ž‘ð>ž%k>ât>œ¶˜>›x>›ãd>œ >›‰>›„>›»Ô>œo>œF“>œ!>œLÎ>›¯->šêU>šM>š_M>š¿o>š¥G>šš”>š>š‚>šY‚>šH>™îÌ>™ÉJ>™É¶>™›ƒ>™OÍ>™U§>™xe>™J>™(ô>™,¨>™&–>™ Þ>˜¼}>˜“ì>˜†ñ>˜:ª>˜;>˜Å>˜>˜ o>—ÓL>——!>—„î>—NË>— F>—ª>–øº>—œ>–ÿQ>–ÖÚ>–^>–~Š>–„Ñ>–|‘>–Jc>–„>– e>•Ùä>•²>•4é>•>•3õ>•H§>”ùÏ>”Æ®>”òÿ>”ë­>”Ì7>”¡(>”Ë>”¬>”hn>“Ûs>‘õ>“ >’x>“bF>“[ˆ>’ˆc>’»ú>“+ä>’Ì]>‘ðÀ>‘ØŸ>ºÂ>UÔ>‘Ð0>’.È>‘ö >‘î3>’H9>‘Äœ>‚Ç>‘ R>‘ƒ¼>‘R>‘)”>‘ø>‘e–>‘(>ò±>ɉ>ú®>ÌÎ>Å—>q >w‚>ý‰>þº>`ï>ë–>PÈ>ŽÑ¸>V>‘>á)>PÃ>W—>s‰>Žì†>ŽÕ¯>Ž§>ŽSÌ>ŽÐÔ> ->>ŽÈi>Ž½â>Ý>ŽÊ>>ŽôÒ>ŽÔ¿>Ž×Ÿ>Ž`å>Rš>6`>‡ >q>>‚A>AÈ>ŒE5>ŒGé>Œ9s>Œ0C>Œ¾¬>ŒØ±>Œ‚†>Œ!>‹,½>ŠÛK>‹äª>‹æ‹>‹Ç´>‹%d>‹'¤>Š€J>Š‰‚>Š”%>Š³©>Š¥$>ŠK6>Š'Ñ>‰ø²>‰}x>ˆ¸°>‰8 >Šc‡>Ša¢>‰àY>‡ËŽ>†`>‡&—>‡Õ¤>ˆ8º>‡‹Æ>…>„™]>ƒ£‡>…gþ>‡S«>† ->… ]>…Æú>‡Ü>ˆéË>ˆk8>‡j>†‰>…2>…•D>†$ç>„mG>„PV>…¥ÿ>„«þ>„"/>… >…,‚>„Û>„{ž>…&Â>†…>…>>„ -i>‚¾‘>ƒ Â>ƒ¯ >„Κ>„Ñè>…­>…Â>…ž”>…1”>„ >>„I ->„}ö>ƒÒó>ƒ$>ƒFj>ƒž­>Jq>så>x¤>~>| >²­>¼Ù>§¼>‚ûº>‚µ>€çÃ>‚G“>ƒfy>‚r>W*>‚ >>‚è³>ƒá®>ƒ”‹>‚›>‚˜>ñ0>’ >kÂz>WÁÕ>pIÜ>|¹ù>€\>î>^>Ûà>B>€ê>‚&N>‚œ:>‚—->‚ã¹>‚à>‚Gd>¬A>;d>€ô˜>€ðî>aA>·Ì>o~>5æ>€Û>€¡«>€Ja>~>{óµ>z©w>{§>}\>j>€Š2>€oÈ>€2>€Ó>*>áó>€­…>1Ä>‡@>‚=ƒ>Q×>n·>R>€Ì¦>€ÿá>€ÜÎ>€ù>€ÙÑ>€æV>€6>õ>©£>W>º®>2û>~Z >}WP>x]+>aÝr>`àÍ>ty[>y(T>{‡>} A>~Ÿ,>g>ÕÑ>€:Ï>€‡>€5>€>L>€—>~öÌ>€>€´5>€óé>€‰2>€<ì>Ãû>•l>€T>€pÊ>€]d>€tÆ>€aÌ>€‘ø>€9 >ó4>.¶>}üï>}ôü>~&ã>}KÞ>{ÁQ>{¹§>{d>z6Õ>zƒª>z¬ >xÒ>v¼û>sØM>n.—>n’]>rÍ>us>wN3>y6W>{2·>z¬À>zk^>z>z ÿ>y­i>yªß>z-*>zwÛ>zm >zø`>{@>z¾>z!`>{+>z¦Á>zSr>yÉ>z†>{gû>zÔ!>x@&>s”‰>to^>vr‚>uÃi>ty>t_K>vmj>uó˜>súC>tË>uÕ>v)>u«N>u2õ>t>sá@>r >q_¯>r5Ð>që>oÙå>mf@>j¯=>fð,>aìì>]ˆ>VÏ>J“>D«µ>Kƒµ>SßÖ>Yò+>_2n>c¹>f‹³>iY†>k5>lL>m&h>n˜6>ox>oÊd>oÅ·>pø>p!²>oò]>oè,>oïŒ>oð§>oð£>oéš>oNÚ>nhû>o‚¦>oêT>oµE>o%½>nè>nþ>mq¹>n"u>n×Ó>n’û>miZ>mPZ>mÐ#>mÜT>mÈ>mR3>lãW>lÒÅ>lÆe>l‘Ö>l ´>kÁ*>kDZ>kº°>kPg>jÕ[>j¾O>j‰ä>iú¥>i²>iZç>h½m>gÙÄ>gBD>gAM>f—Ã>e´>d-">cE>aÖÂ>_àÂ>]9£>YÉû>U4¶>Oaÿ>H2L>?Y>4{>'¼œ>"1>,È<>8¨>B!õ>Iåæ>Pã>T» >XhL>[9>]6½>^ª.>_°>`‡S>a(>`è´>a4>a°I>aÂR>bW‚>bo‡>bjö>aôÊ>_E>_Ý>aéi>b]¥>aïR>aoÌ>`UÔ>\„“>ZTo>_¯>aKL>aR4>`‚t>^Â&>_…>_A>[}í>]â7>_Èg>^÷>^Ú¿>_F>_F¥>^ÒX>]ö>]Mi>^7™>^FÊ>]çä>Z´v>Z‚í>\÷¦>]Â>[ž >X³>[…>\W»>\6)>\4l>\3G>\š>[‚·>[¬>[ í>ZÕê>Yð2>Yòy>Y|e>YøÆ>Z„>Z ›>Y–'>Y%ï>Xêì>VYC>Tg>T§8>Uå>Wª>VBE>RüS>U‚•>VVN>Uîù>Uj«>TÏù>Sì0>RÉÎ>R >Q†>Oxb>M!,>IXÆ>G6>?„[>7ñ=>6ˆG>/'d>$Øã>l“>J>.>*2(>2ÖP>9ÜS>?–<>Aw1>@,ì>G‘³>K\¹>L±0>M±.>N€½>NñE>L`¨>EÙb>Fç*>G…Ó>M0>PM>NÖ >OÊP>P>OÄr>O½›>O½ƒ>OºQ>OŽÇ>OQÝ>O=0>O„M>OÇ>N]•>NŸ¤>N”¶>NR­>NŽ0>N±5>N›ƒ>N:â>MÇÝ>Mª¢>M¨)>M†S>M=>L”Þ>KeØ>Kõç>Kþ>L„?>Lœí>LX >K®¨>K°Ã>Kš/>K•ð>K•ç>K•Ï>KŒm>K+Ë>J¦€>JŒ>J‹v>J}»>Ji_>JXg>IÏ¥>I…¬>Isÿ>I`ì>Iz>Iky>Håå>HN6>HDQ>GÝÜ>F A>GPâ>H»>G“Þ>Glã>FÔ>DtM>Eå'>F@Ž>AN>B¦Ð>F>FKž>FH>F<â>EÞ÷>Ejð>EZ®>EZk>ETÌ>E •>D¨€>De¯>DP]>D>{>Cøt>Cÿ…>C¨>CO&>CF­>CAw>CV>Bé°>B&”>Aör>B8Z>B<±>B8–>Aò2>A^Ã>A$Ê>@f>@<Š>A³>@¤\>@/Ð>?ß">?Õ©>?¿Ä>? -1>>çý>>§ð>> k>=õ\>=ÎI>=:Á><Ш><&m>;iÐ>:‡M>9^è>7÷>6'>3ÄD>0• >,×X>(c>!ÁÐ>¼> #>–2>Ù³> >$ø>"V±>'åó>,4¨>/zC>1íj>3ÎÆ>5Ep>68³>6÷2>7 V>7Û»>8'7>8ºP>8Ú±>8ÂY>8Ö¦>8âÚ>8ä>8ã>8ã„>8ã>8¶Ã>7½>8 -h>8*ß>7Çú>7À‰>7×x>7Ö >7§Z>7/º>7xo>7œÐ>7 œ>6+>1vµ>3F©>6x>6γ>6Èá>6o×>5ã~>5Ær>5Å×>5ÄÄ>5’w>4›—>2„ ->3Š>4¯‘>4¼ð>4»r>4¹³>4¢l>4”>44Ÿ>3½>3”ƒ>3žì>3±>3±d>3û>2ô>2¨|>2¨>2§Ë>2¨r>2§$>2}>2U >1ÖV>1 „>1ž7>1ž5>1ž1>1š->1Q—>0¶>0Gê>0MŒ>0 >0ž>0ZÆ>0/¶œ>.öO>/0>/†R>/Šb>/ŠY>/ƒ+>/&Ø>.›¡>.€ø>.€,>.t]>._\>.wª>.SE>-¾>-y§>-vs>-v“>-v‹>-r'>-=Ù>,¾@>,s >,lµ>,l«>,l¨>,i7>,$d>+Ò>+](>+>*÷>*ý¥>+H>+CÓ>*²‰>*C>)tó>*)q>*W‚>*;¾>)ä…>)¥‰>)We>)9Q>)3œ>)I>>)1ö>)!>(õF>(rU>(Ü>(î>(@~>(9 >(#ú>(6:>'Þ>'T>';†>';!>':ù>';>':Ø>&ë>$·>$¤>& â>&0>&%ü>&N>%ÄÇ>%H…>%(E>%'N>%%>% >%È>%$Ó>%>$o˜>$!È>$¸>#ã^>#ö½>$@>#Ò6>#€q>"ñs># Y>#H># À>"ò>"ø;>"tµ>" o>" >" ‘>" •>"/>!í>!»§>!5Ü>!„> ÿ®> ýß> æî> ×È> q·> w>ßz>…7>´>Ò•> w>ìž>ä­>…>ùô>Ôw>\D>ÕB>Gþ>›Ü>¢>ª_>@À>˜>ZÜ>Mƒ> p.>±Ý>é•=ömí=â -=ß©=ó„ñ>|Â>v> ý)>a>úB>%Õ>ÉF>çñ>  >O^>á/>:¨>±¢>ºG>´¬>|¤>rÕ>•ñ>µg>ºQ>¸O>•–>’>EG>>³>úÀ>,e>¥)>V+>Ã>ME>ˆ>°1>°l>°l>°b>¯æ>©É>D¶>¼>¦Æ>¦U>›¢>½>¤>¥Æ>€™>Í‚> >›Ë>ŽØ>xi>‹º>xS>*>_Ë>Â>x´>xÝ>‘>’²>’³>’²>>Nr>³˜>‰Â>ˆz>‰5>ˆñ>ˆ>ˆž>vÖ>ó>‡û>~è>zy>]>mL>} >Kl>•Ê>\¤>râ>uÖ>n’>QH>f·>o6>L>…{>kn>k>k>k>k>jã>Xj>ÒQ>i°>a¤>`Ù>a(>a*>a*>`Á>D¹>±T>\>WE>WB>WA>W>>RÙ>}>ý!>Œ]>(ò> O€> ¹§>G>MV>MX>K> œ> o> Dd> Cq> Co> By> %x> ýÊ> 6˜> þ> fæ> :Ž> 9‰> 9‰> 9ˆ> 9ˆ> 9x> 0> ÕK> O¼> 0E> /f> /ç> %> ë> +Y> 'š> -â[> -^q> -'ù> -%¸> -%·> -%¸> -%¸> -%·> -$¨> ÷ƒ> Zñ> Z> Ç> Ï> Ì> ²>û>ê>T=>ªæ>¦3>ÊÈ>ïa>> s>í÷>ˆ> L>¹Š>$B>u>æª>ð¤>È‘>àJ>ž>ü ->â®>Îß>¾ >‘>åþ>èº>ß„>øŽ>¶”>l´>Oo>ûD>ô5>ô.>ô%>é»>z> p>Þz>$—>Ë„>é->êE>êE>ê@>æ,>È™>ÙÃ>Þ°>h>ìÙ>ào>àB>à>ÙÖ>»×>Õ>ɲ>]>íÏ>²ì>Í >ÂH>·>Ó»>Ös>Ök>ͤ>_6>Ü„>ÌV>ÌŠ>ÌŒ>Ì>ºõ>«Ó>Èí>»>.½=ÿO¸=ÿfã=ÿ„B=ÿl—=ÿ>=ÿyÎ=ÿwF=ÿ€=þ|=ý³Ï=ýs=ýq!=ý4=û˜j=ü–=ü û=øs§=øáô=ûî=øç2=øˆc=û4=û]=û]¦=û\œ=úãâ=ùç=ú„ü=ú :=ù‘=ù -ø=ù%g=ùHÇ=ù=ÞG©=ÞH=ÞH<=ÞH<=ÞH==ÞH==ÞH<=ÞH<=ÞF=Ýê+=Ü¡â=Ü5™=Ü ¿=ÛòÎ=Ü/ž=Ü4"=Ü4k=Ü4k=Ü4l=Ü4f=Ü)™=Ûaï=ÚDY=Ú Ò=Ú š=Ú š=Ú }=Ú =Ú"=Úç=Ú =Ú³=Ù£–=Ø›<=ØÚ=Ø Ë=Ø Ê=Ø Ê=Ø É=Ø É=Ø Å=Ø =Ø<=Øî=×mÊ=Ö0í=ÕÂø=Õ€r=ÕÆ!=ÕÃë=Õ¿Å=ÕöI=ÕôÜ=Õ¸Ó=ÕÌô=Õæ0=ÔþÅ=Óûë=Óå=Óå(=Óå)=Óå)=Óå)=Óäç=ÓÌÊ=Ó˜ -=ÓÙy=Ó´;=Ò€™=Ñ׋=ÑѤ=Ñѵ=ÑÇ—=Ñ…Ý=ѵc=Ñ—e=Ðw|=Ñjm=ÑÏ„=щE=Ð9p=ϾM=Ͻƒ=Ͻb=Ͻ%=Ͻ/=Ï¢Ð=Í{à=È/á=Í•Ô=Ε=ÍŽ=Ë„¦=ÌÊŽ=ʘü=Í€»=ÍÕE=Ìàs=Í+‹=ÍZÜ=ÍDß=Íî=Ìé‡=Ì»ª=ÌÝ=ËÊe=ÌJ=ËÔ=Ëå¬=ËÂí=˘‡=Ëk=Ë7X=Ë ·=ÊÔþ=Êï=ÊŽ -=ÊhX=Ê8z=Ê=ÉÛ•=É_X=É^Y=É`Þ=É0ô=É  =Èâ€=È£&=ÈqÏ=ÈcU=È3‡=Çô¬=ǹ°=Ç” =ǃÒ=ÇW¿=Ç.c=Æú9=ÆÖ¨=Ʊ€=ÆŠI=ÆaÁ=Æ1ô=Æ÷=ÅéÖ=Ź©=ÅŒ=Åe²=ı.=ÄEž=ÄhÏ=Ä°1=ÄT=Äcx=Ä@=ÄÎ=Ãëª=ÃÁ„=×1=Ãl=Ã9t=à -²=Âìð=ÂÈ)=Â…Ï=Âf’=ÂJ=Â=ÁîU=ÁÏÓ=Á¨º=Á~¤=ÁT3=Á)†=Àþ’=ÀÕC=À±u=À‡p=À\€=À3u=ÀO=¿äž=¿´v=¿Šö=¿aÞ=¿2 =¿.=¾èÕ=¾ÁÍ=¾—*=¾l³=¾FÛ=¾ =½ï=½²?=½™­=½xÎ=½Qá=½.¾=½Ø=¼Ù=¼¯Ö=¼‹k=¼Z»=¼17=¼á=»]Ø=¹KÁ=»=»pw=»KC=»H=ºËï=º™!=¹·Î=ºDb=º?â=º D=¹å}=¹É¯=¹²Û=¹Ž£=¹d1=¹?:=¸ûð=¸¹(=¸OÒ=¸b=·Ÿ%=¶p¬=·ö¨=¸G=·¤ê=·.&=·ný=·W=·<'=· S=¶óÄ=¶Ë =¶¢=¶}E=¶Y=¶2Ò=¶ ?=µáŒ=µ¼=µ“ -=µd¹=´€Ã=´ ó=´í<=´Ós=´§ç=´h†=´0ö=´2Ÿ=´ ¦=³å±=³Àñ=³š =²Øö=°·L=±Ç*=¯Ñ=±ÇG=²µû=²•ì=²lå=²@ü=²î=±ð}=±§Å=±HJ=±~ÿ=±b¡=±8=±©=°ã»=°Ä=°œó=°\s=°>=°-w=°Z=¯ãþ=¯½ä=¯•½=¯k =¯L9=¯%û=®õŠ=®ÔK=®¶=®=®]§=®CÕ=®&ˆ=­åc=­zd=­©µ=­¦=­k¶=­8=¬»š=¬àz=¬Öî=¬µi=¬†=¬Zò=«íÍ=¬Î=«ó<=«Î¸=« Ò=«0==ª˜¿=ªê¦=«Â=ªó%=ªÑ.=ª¬s=ª†Û=ªa;=ªB=ª=©ñO=©Éí=©ªË=©†ö=©bÚ=©9-=©Ë=¨û=¨ÕÄ=¨Vy@8°Û@8DU@8l@8;Â@8¥&@9@9G…@9;7@8õ @8ŒŠ@8#Ø@7Ýþ@7Î!@7ëå@89@81…@8¼@7Á­@7#h@6†X@6Hx@6y%@6Æ©@6æá@6á"@6åú@7 <@74Í@7G¢@7,@6à@6x³@6 ®@5ûV@6Ó@6@5ý›@5Œ@4³ @3˜ƒ@2Ÿ@2.Œ@2hN@3#œ@4å@4å“@5gŠ@5–@5‘B@5|@5h@5Oˆ@5¹@4¼ß@48 -@3ºl@3z@3‹@3Ó,@4# @4Q@4G¾@4w@3Ï @3¢O@3ƒû@3Xÿ@3#“@3Ø@3X@3Rv@3}@3‰û@3vÄ@3G1@2øÍ@2r@1ƒ—@0)0@.ÜR@.[@.è@0}@1¼@1²ì@1ùï@2 @1ü@1éI@1Ë;@1Š•@1;@0y@/÷@/³ï@/—€@/k+@/ ž@.‰8@.Z@-×1@-þ`@.{@/R@/l@/QM@.Ç…@.(Ÿ@-ôî@.Qs@.Õq@/@.Û @.˜@.Z @-ìM@-,‹@,r@,:ó@,„Á@,È2@,¦Q@,Pu@,:Â@,›Ç@-G5@-å¥@.=¯@.Q´@.F²@.8¦@.(#@.@@-ÍÆ@-„”@-A @-”@,æÏ@,˺@,Ï -@,îÔ@- Ð@- ~@,ñµ@,·t@,Pw@+±0@*ü“@*“o@*¾d@+K/@+¶‰@+¥³@+$S@*—Þ@*hú@*3@*œÛ@*E@)ÅÄ@)˜@)ë @*l#@*¦0@*^ž@)©n@(ÞF@(qá@(”{@)9@)u‰@)Ïë@*g@*U'@*lQ@*d@*>5@)í @)V@(oð@'SÜ@&&i@%Æ@$—Ñ@$Ú¾@%¤Ê@&fE@&ÕÕ@'(@'K”@'0G@&|i@%hJ@$±[@$ïe@%òT@&øL@'mG@'9\@&y€@%Ti@$-h@#–…@#¸Ð@$.@$d‹@$¼,@%k=@&He@&ôB@'E@'Ny@'/(@&ù7@&ºº@&ˆ@&tæ@&ƒZ@&w@&£’@&wš@%ûZ@%@#ýT@#y@"˜@"˜ò@"– @"{ü@"¶{@#v$@$O@$¿ø@$½é@$›@$«@$È[@$õ—@% u@$ÿ#@$Ýp@$±$@$Š#@$nM@$I­@#ê5@#&@"o@!3Ò@!9K@!ðv@"°¾@"ý`@"Ί@"cç@!þG@!ºµ@!›ô@!‘Þ@!uÒ@!1Š@ æ"@ Ë*@ øw@!X÷@!¹O@!ç»@!Ùh@!¬s@!Šq@!Œ5@!‹@!‚(@!Ù@ ©ò@ zs@ ŸA@ æµ@! h@!7Æ@!,µ@!‡@ ì[@ ¾˜@ pç@ Õ@¿'@‚ë@Z@ˆ'@>;@ŽÄ@/Ý@®h@ñÐ@ Z@ &1@ U@ ?@à‹@µ @‡@u¨@c@T@K=@H2@D@8@"/@þ@¹4@==@›X@ V@p@[7@Ÿ @¢Þ@~ @q~@šW@Øš@ÿ@Ù@ë3@ÆÞ@”¦@Q¹@Õ@ÖØ@ÓG@ó@"@#ÿ@@ã @‡r@(@úÒ@ @@:h@]×@n±@o)@^@9ª@T@Í@®=@ª@«ô@Z@‚[@m(@e@_¶@OÐ@0¦@ ,@ç½@Õ9@Ìâ@Æ¥@Á«@¾d@¸S@«‘@™ë@†@l@>Ú@ï˜@~Ê@9@Ô"@Þy@4@BÇ@`"@_(@B«@¬@@ý@ûL@ñ„@ÞÂ@À£@Žv@M@ž@@ ®@3@Ðé@;@U±@2 @&+@=T@s8@¦e@¹÷@¥k@cÆ@è"@6 @J@]š@¾@W@À²@å©@åÝ@Ûn@ÈÎ@¤þ@gº@Þ@³7@\r@ À@ÏM@Æ<@Q@d@©[@À@¬»@k•@ö.@m,@”@=5@–Z@ÏÛ@¹V@fn@i@‡@6@r{@”é@‘@k‡@.v@ëZ@ºó@¨”@žÜ@~˜@LŒ@2‹@I^@u@‡h@sN@R@?ú@>»@;@(o@§@Þ˜@ªÚ@z1@d.@o¿@‡w@‘“@ˆ`@v‡@cù@LE@#Î@äY@œÈ@qo@wâ@•l@˜!@h<@í@Å@£ç@Âß@š@2Æ@A@7…@"@@à¢@Á@¯—@©k@Ÿ}@‚R@H‡@ô@˜Ø@XŸ@PM@}>@·u@Ùq@ߘ@×@È#@·o@¨^@˜°@@Oã@ õ@ÎÅ@¸±@ÄÙ@ÒÍ@Ô@ÏÖ@È^@¶@Š@.è@ ¨¥@ ;@ 2Ö@ €3@ Ðð@ ö´@ ÷e@ åG@ ÐG@ ÃB@ ¼X@ °Ç@ ›*@ S@ `j@ =@ "@ o@ ôÐ@ å@ Ы@ ¸@ ‹ú@ ?X@ ö¨@ éþ@ Œ@ I¤@ S -@ 5Ð@ -m@ éN@ ÖF@ ¾@ —Û@ wÉ@ km@ aÉ@ IÐ@ "1@ -ëà@ -·@ -¦x@ -Áã@ -ë@ -÷@ ä@ °@ @ -áû@ -¼Ô@ -ˆì@ -M@ -.@@ -:=@ -YÎ@ -r!@ -r¥@ -R:@ -Ú@ èš@ ÎC@ ÁZ@ ¤B@ ]@ü@ºy@¹Y@Ûò@û®@ @þL@é»@× @ÁÈ@¤‹@‡Ã@q½@]Ù@H@0@ý@â@©@o@E@5'@)2@ú§@¡±@@É@b@6‚@ƒÿ@¾1@Ø@ÝÅ@á@ü@3ô@j}@y@`@Ma@U®@Sú@@»N@V¼@/@ A@.¨@^@kþ@=ª@â'@~@0|@ m@t@e¾@Ȭ@ó@´Ü@=Ù@ðm@õE@5@w@Ò/@´…@ªû@£Ý@¬›@¹›@¤O@c¨@@Ó%@Ѭ@´@<#@PÇ@9Ï@4°@b™@ý@ X@²F@ÓÁ@ë@é¸@׌@á@¾A@Í@Úz@Ç©@›Á@f©@, @…@ð@Ø@¤&@eg@à@¶ñ@V@º@½@W>@¯²@ƒ@)=@ò±@n¤@Óº@7˜@@S?ÿ³º@Ì@c”@˜¬@´'@w@XÐ@!ê@‰@ -?ÿ¬ô?ÿ ,?þxt?þFˆ?þƒÔ?þår?ÿ˜?þ¼ú?þ4Š?ý¡p?ýA?ý$³?ý0?ýV?ý~‘?ýŸ?ýTW?ý·?ýÈ?ýJf?ý`?üøä?üfÊ?ü0.?üBš?ü-?ûê&?ûÇA?û¬|?ûG˜?ú©F?ú6{?ú2F?úo©?úž›?ú·?úÆ‹?ú½ã?ú—$?ú`ï?ú._?ùùf?ù±U?ùm¢?ù:Ì?øû?øÊï?øÿ?ùš½?ú0·?ú[ -?ú&W?ù¿o?ù0Æ?ø²ø?ø~n?ø?øÐ}?ù0?ù9?ùˆx?ùY†?ù/?ùÄ?øÕ§?øio?÷ú?÷´?÷Šá?÷sƒ?÷Ij?öý@?ö½"?öu?öšÑ?ö»"?ö½-?ö[x?õÕK?õtÐ?õ*’?ôõÍ?õã?õž)?ö6?õìf?ô÷ç?óù¿?ó ?óȨ?óî?óÛ¬?ó¥)?óhÄ?ó5»?ó?ó.i?óU)?ó`?ó -%?òK{?ñ¬?ñ?ðÞÈ?ðò^?ñP:?ñƒá?ñh?ðgF@>Û…@>ï%@>•@=PH@9ÿ_@3©@+|@$7¯@#‘€@)Gð@0ƒ@4ì$@5ÈÙ@4Pã@1“®@-ÜÜ@)ó@#DL@\@@ -Ju?þ!?åN¬?Ë -Z?²ëà?£òµ?¤5â?³?y?ʾ?äc­?üÓÜ@ aƒ@ò-@#”@!ðj@'hz@+àÍ@/¤.@2©@4ÞK@6Q@81 @9âÉ@;Có@;†ù@:r„@9­@8N@7~ @8f@;EË@>Hæ@?­ö@?q²@=òå@;…-@9¿¢@:Kx@<©@<™¶@:ùý@8Ks@6°À@6ù@7·?@7å@6š @5—ñ@5N@4¥4@4 @2Ò¥@1ï@.½Ž@+Ï’@(]+@$KŸ@6’@Ùy@.N@7o?ûêc?äú9?ÌK¾?´T?¡½À@9TÒ@9‹Q@9…@8ð¥@7¸Ð@6D­@5C@5/è@5ÑL@62@@5©’@4@[@2` @0ê²@0Û\@2R.@4V˜@5²@5…Ž@2â@-—L@);@)ìõ@.ö3@3<À@5#\@5͉@6r@6Ï@5ûp@5Ñt@5ž@5b @5Ò@4Èb@4W @3´S@3d@2Ã0@2‚­@27î@1Ëx@0þü@/±÷@.°@,¡)@+AÀ@)”ô@'X‰@$ª>@!™u@ýg@•@)U@ aì@}/?ù³Ü?æå?Îaý?³æ?]?’É4?— Ö?¨Ø_?¿Ø¹?×A¾?ì‚?ÿ@‡s@l¨@.í@ê}@Õõ@ L@"Û)@%@¬@'9‰@(¥±@)¯ê@*§+@+ k@,xÐ@-¥@-;i@-J©@-‡é@-ð£@.1g@.2F@.(²@.2i@.DÒ@.]V@.…7@.«Î@.¢@.OØ@-û{@-ª†@-@,'h@*˜@(%0@%4a@#c›@$T@&°@)iM@+["@,|t@-@-Rœ@-†7@-~@-*]@,¥N@+ìÈ@*{·@'1U@!+q@43@x<@ R[@Z@WÇ@ Ò6@&}õ@)wý@*°©@+ @+v€@,)@,‹ƒ@,“ê@,„í@,¨F@,Øú@,ù @-"@,×–@,Œ¢@,/c@+Øþ@+º÷@+¸Œ@+<@+JÁ@+" @+ -:@*Üë@*•y@*YU@*Pä@*‘@*¯s@*–@*=¼@)ï%@)Ⱦ@)¿­@)°¿@)fd@(ó@(ª@(y÷@(‹@'ha@'7@'>@&ß—@&¾Ý@&˜J@&Nº@%Ó‰@%\@$=@#úÔ@$nd@$å¦@$ÚË@$lÍ@#Ø®@#H§@"ï@"™@!È|@ ]@™º@î5@“$@"Ú@ É@-ý@¦«@ ›ú@êž@M?ùQ£?éÆ?Öàq?ÁŠD?ªðG?—D“?Ž4º?”Õi?§lj?½î¤?Ófô?æ__?öf*@¸ø@"@ çÏ@g@–â@d@@Ù@S÷@¶Õ@ù£@Ï¿@y;@ÛÞ@ˆ~@j8@A@ Wk@!\x@!*ž@ÔØ@¼ð@VW@ \@—à@©ô@›@ :@!‚@"@"^É@"hE@"t@!t@ zÙ@»¬@Ãè@Êœ@½’@z@yÑ@–X@“û@!9°@!Ñ=@!ÕM@!²'@!tñ@!UM@!©ß@":R@"©v@"ð¼@#m@"èŒ@"³@"[5@!Íý@!i#@!gí@! @!¹—@!²l@!.µ@ Nf@ÏZ@ Ä@ ™Ñ@ È@ð@Ä @ H`@ ÖW@ Äõ@ ! @×”@ kt@!ø@!2»@ ûÅ@ д@ «Œ@ g@ rN@ ;Œ@áÐ@¢7@Ñ“@ @<0@ @ýI@îÉ@Ç>@—º@s˜@L×@¾@¯0@d7@<ž@8¥@]Ë@¦‡@ÞÃ@Ú“@’ì@×=@ý1@L»@J @Á@"2@ #@r@ˆ @r‰@Sb@B @!i@Åÿ@_@:·@?s@'_@)@Ÿ@ Æ@L@/ý@m‘@z–@Zý@%·@ÐB@S˜@Å@Z¬@><@U•@gø@fI@kv@ni@+¯@”x@'@ðˆ@? -@g@+_@Æ@|¼@a»@\˜@5H@Û@jö@š@˜³@&Ñ@¹X@M"@ê@¤@M -@šg@„@ AÔ@ ù_@ -œ@ý‘@Ž@¦P@¶¤?üE–?óïd?ê3?Þj?ÏÀ^?¾ó>?«œ\?–ì¥?†š?ƒþ?†?¢éŠ?¶p0?ÇåÃ?ÖÊ?âím?ìÃ?ôÀÄ?úçì?ÿ’Ù@öä@\«@·M@“È@ Ň@ -4@ ¤@ É@ g@ Åo@ ïñ@ ¬@ M@ ™K@ Û¨@ ã<@ Îw@ ãw@ -@2@`¢@pô@e@câ@g@IÁ@ý@ ßò@ ÀÉ@ šö@ $$@ (*@ -¢+@ŠŠ@e«@Y?þTG@\@ãÜ@I@ -¸9@ @ Ap@ @ *@ W@ ƒ@ [Ž@ ú4@ ®@ Ä@ •@ BÛ@ Br@ ¯@ ÂÌ@ ›°@ }’@ F@ š@ *@ ê@ -Åx@ -;t@ Û¡@ Ú@ ý@ ÿp@ ûC@ -³@ -#½@ õf@ “`@ 2Ü@ì.@ŵ@¬%@à@>‚@ò§@¨Ê@Œ–@žÄ@?Œ@_º@'Í@¦@"@fá@Z‰@<É@>\@;@ø7@šC@dî@Lï@5»@”@ê½@Õ¹@Êú@¾*@µ³@»Ö@¹3@ˆô@$ö@³‘@L@äµ@“ß@Cu@iÊ@si?û”ß?ð%µ?ä #?áú?ëN…?ù'®@êÀ@¹y@gc@kQ@³K?ú“2?òžÆ?õ"ß?þZa@Mà@9@JH@NØ@F¶@Y@ìê@ó$@§@6ý@1|@$j@*ì@6i@>ÿ@/ß@ ”@ä@Âœ@»—@Èå@œ(@z@g)@Qp@ž“@¾Õ@¦c@Ü@{@[9@>ã@2ƒ@ø@–Y@;œ?ÿ½N?ÿ¶?ÿ #?ÿ¼Ø@^L@ÀÊ@µv@w˜@S@D‡@!?ÿxç?þ§?þšr?þÿ„?ÿSÇ?ÿ _?ÿ“r?ÿÉ?þ˜R?þò?þž -?þO?ýãs?ýwh?üz?ú¨è?ùŒ?ùÐß?ùù°?ù¿¹?ùË?ùñX?úMÔ?ûñ?ûˆÆ?û™8?û™¬?û¾?ûëG?ûýC?ûßÃ?ûˆ¹?úÚ?ú ?ùåd?úÆ?ù§ž?ù 1?ø¼ ?øˆµ?ø=½?øA?øŠM?ø„?ø;ñ?÷üñ?÷{j?öû?ôlÿ?ôS?õ:p?ö&?õÿs?õ‹Ê?õ…ô?õ¹?õÛR?õüK?öí?õì?õ|?õó?ôÔÑ?ôž.?óÞL?òòü?ó¦?óîþ?ôNy?óìc?ó}?ó"6?òïB?ó"?ó‚Ü?óª‰?ógù?òå[?òeþ?ñþ„?ñŸØ?ñG¹?ðÁ‰?﹃?îó#?ïoZ?ðlï?ðð?Ö?Ö"ž?Ö§?×?F?×tX?×&T?ÖÁI?Ö¨?Ö³ü?Ö`Ô?Õ¹T?Õg?¤þÃ?œ‚¢?’†M?‡ "?r;¦?Uj…?IY¢?Xu3?tÊÈ?‡Õ·?“N¥?LJ?¥}y?¬}?±­”?¶dS?¹× ?¼›V?¾÷t?Á1?Ã8¯?Ä› ?ÅY¾?Åï”?ÆmU?Æãq?ÇZØ?Çw†?Çpa?Èš?É?È?Ê>?ÊBÌ?Ê,?ɺ?É?ÉH??É_?È÷é?Èè7?È´Â?Èví?Èt¼?ÈÕõ?ÈñÊ?ÈsT?ÈŒ?ÈI‘?ÈÜÜ?Éo?È»¶?ÈTý?ÈG?È  ?Ç©U?ÆÁQ?Å9ñ?ÂÅ»?½ä>?¶ó?³ª?·:?½ {?Á¥?ÇÎ?Ä0Ö?ÄË?ÅA?ÅÀ?ÄÔ?ÄÄS?Ä×?Äü#?ÄØÄ?ÄV»?ÄA?Ãkõ?Âx‹?Áà-?ÁòB?Âm?ÂÜ|?ÂíÑ?™ù?ÂZ?Â3?°”À?±ƒe?±j?±"“?±;?±I?±PÌ?±P„?±t?°è?°Z­?°‹t?°€J?°]K?°Á¦?±LÅ?°òa?°Tä?°Mö?°G?°dÏ?°ŠÉ?°+?¯®¼?¯]ö?¯7¤?¯ih?¯c?¯v‹?¯hÕ?¯w?¯À?¯%ï?®d"?­Àp?­?«o…?©;P?ª³y?¬÷™?­NŸ?­q[?­±§?­M¨?¬È”?¬‘Ë?¬ÔÐ?­'ª?¬Ìm?¬p?¬=¨?«ÚJ?«7ñ?ªëV?«‘Ë?¬?¬ÑC?¬Z•?«ý…?¬#X?¬<‹?«Ôæ?«.?ª¼1?ªŽ?ªØý?«FN?«3,?ªX?©IÇ?¨¼?¨”?¨«_?© W?©z¬?©lž?¨Î?¨j/?¨—??¨„Þ?¨8x?§ýŠ?§bH?§"?§o ?§â?§µ6?§²l?§Ñ®?§Š™?§]Ò?¦äË?¥L‰?£2p?£-ã?¥ ?¦!‘?¦Se?¦cú?¦rV?¦;?¥Èl?¥¤E?¥Ùs?¥Ñ¸?¥ŒI?¥Z%?¤é?¤À ?¥­?¤óŒ?¤ É?£ª?£W ?¢äÆ?¢°1?¢©?¢eŠ?¢4 ?¡áf?¡? ¸¹?¡ï?¡Œl?¡¼?¡>C? Yõ?ŸÞ±?ŸÂ£?Ÿu~?žÂ°?žFß?ž1¢?ž{Ù?žã®?Ÿ }?Ÿ\Œ?Ÿv ?žä=?ê7?:ú?œù/?œ 1?œÍX?lþ?Yu?œG&?›Cº?›S›?œ‘?œ¶î?œÔm?œ;?›?œ_3?x¾?~Ÿ?»©?žmœ?ž{ü?ž¶?ߦ?iK?œÅù?œn.?œ£=?%í?s1?œþN?œ3 ?›ùý?›š"?š…Ô?™ðº?š¨Î?›‹ -?›áÈ?œ2?œ:K?œt?›¾ÿ?šÎ?™±þ?™™À?šR?šžæ?š…¯?šL·?šb?šSò?šnÿ?™ÁÜ?™%?˜ú™?˜Õ?˜£Œ?˜y?˜U¬?˜3?˜€?˜¬ ?˜è?—žŒ?—ñw?˜NT?˜f?˜Gà?—êÜ?—Y>?–¸?–a«?–e¶?–h?–MÞ?•¦ý?”Aä?”–?”È ?”Rp?”#¹?”¯z?”ÖB?”‹M?”’õ?”ã?”}¢?“b¿?’ß›?“[~?“«%?“«?“þ.?”-?“È…?’ö»?’Ky?‘Ãê?‘iJ?‘`‹?‘Œ?‘°¨?‘£U?‘Ο?’*?’8Y?‘Ýê?‘ I?‘°?‘‡q?‘pÌ?‘¼‰?‘0'?òr?‘º?o†?‘(K?‘´?Á?¼0?Ro??Hä?,Æ?Û·?¾·?©?•‘?e‹???e'?™s?sÄ?$Þ?ŽÈp?ŒžÚ?†Æ?…<ˆ?Š»?Ž -Ú?Ž©ž?Ž’k?Ž}á?ŽN»?J?‹û³?Š“I?ŠèÌ?Œ ü?ŒÑ¶?’?Œé?ŒýC??Œ°?Œ{ƒ?ŒAø?Œ?aå?`6V?`EÀ?`¿M?`§x?`”2?`¢Á?aÛ?aQ]?`ø&?`s?`Bö?_¿.?_7]?_5?_:Ê?_ Õ?^éG?_?^¼‚?^>Í?^?]ùú?]à-?]í?]rs?\g?[<.?[”C?\^?]<Ñ?]„#?]â?\S,?\:¤?\yä?\„‹?\QÌ?\G?\ ~?\.Y?\V?\?X>©?XGm?XÙ?Xøz?XêÅ?Xo?WVE?W[w?W‰Ì?W^ø?WlÜ?W{Ì?W;Ú?Ws?W;Ð?VFí?Uî?TCð?T–Ì?U-3?TlV?P?D;c?<¤…?Fºè?QC®?SO?QÙ ?Qz ?R@G?R·l?Püò?K_u?B%?B$½?J# ?Mr»?I?è?ELT?I‘?Mk!?Mîñ?MüÚ?O%:?P…N?PŠ_?OÃ5?NùÊ?Nw\?NÄÿ?O/R?NÏY?Nž!?N™ð?MÆx?L¦M?M$?M¢„?Mo?Lâ?Má?N@?Mò?M¼é?MnÑ?LÁÚ?LÞQ?MVˆ?M¼D?M¹š?Lz¦?J1Œ?HðQ?IGú?Ilã?I\0?J ~?J¼Þ?Jö´?Kt3?Kä¸?KtÖ?I†}?G} ?H;^?IØÒ?Iøó?Iû?Jà?I…l?HÝ6?HII?H'Ü?Géd?GÚø?HŽ?G¸ -?Ff?DO€?DA‘?Fp ?GêÊ?G¼õ?G;?G'e?FëŒ?Fü>?F¼“?E»Õ?Eh ?E•é?E‰j?E0+?DÂ?D\÷?DBæ?Dtá?DÅy?D˜v?D/Û?D2Ý?Dvô?DªÚ?D½R?DÄÍ?D‡t?D9?D+?DL?CÙÄ?CCf?B€«?BiV?B̶?Bü?B²©?Bcý?Bj¦?BEˆ?BGÂ?B?Bu‘?B&Æ?BÊ?A¶ˆ?Ac ?AoG?A>ÿ?AF¿?Aœ¬?A¥ì?A„~?Am?AI?@”ç?@†à?@¨Ø?@©ë?@œ°?@‡ž?@=i?@Ï?@ ??Í[??¹€??¡$??#*?> X?>ñ??? ª?>~Ï?>^`?>®\?>¡?>‚5?>•b?>¢[?>Ì?>”c?>qS?>h‘?>DB?=]T?<Ï%?=›?>4,?>8º?=ùž?=¦è?=ž,?=}™?<É…?<7î??#BO?$^?%¶u?'/ü?'úý?'­L?&À/?&2„?%¸¦?&?&6m?&+g?%€m?%‡+?%Û&?%~Ò?%jw?%=æ?%ð?&_-?%¯Ý?%?p?%W?$ÿƒ?%(Ž?%6º?%þ?%uÛ?%ý„?%³î?%_0?%iá?%eŒ?%cS?%Tî?$ò??$E?$A?$£?$µœ?$™«?$W3?$ -€?"Ã?ç?÷?¢5?# f?#´L?#˯?$!?$QF?$bË?#ãõ?#™I?#ÁÂ?#ë?#Ê¡?#±”?#¶ˆ?"&j?¹È?ëh?! •?#,?#K?"÷"?"ôz?"Ñ;?""?"*I?"¸l?"ºÔ?"–÷?"˜ó?"p„?"t_?"v?"<Ï?!œü?!=?!?ÿª?¥5? Á‡?!r? ÝC? H¯? D? œ^? Žˆ? Æ? Q[? Z‚? ŒA? ®ê? ºe? vg?áU?h[?YÕ?F?nb?9 ?T -?cÍ?õ?ÿƒ? Š?X?–?$?ÓÁ?Ñ>?Š¸?‘í?Í‚?C?÷?c8?×}?[?P?ßg?©°?}?.Å?â¥?ìÃ?ùf?ô,?8£?¬?²v?É«?m°?ƒx?Ò¯?òV?;’?UÖ?Ý?¦…?4L?Gï?{ ?ž°?;;?ס?÷c?C?Ëõ?ÏÛ??_ò?˜Ù?ŒÕ?È?½í?^€?Àh?¢,?‰×?ðÎ?n)?1?o?:ó?Ÿp?rz?Ì?¹ô?r³?‰ü?V9?0ˆ?&C?=³?? ™? ¾? ¤Ÿ? qi? @s?ºj?û1>ú–I>î,R>ÞDñ>ÄR¹>­Í>½‹ƒ>ÙÐ÷>ëeÖ>÷ f? @?‰?H©?qË? Ò²? ö? ñ2? ë ? ?†H?óî?_??Þ­?Oõ?Ã*?ðœ?º(?—?`ï?ú~?M~?Ü'?Ë?í?¼ ?QF?B?;Ò?õè?Û.? ³??Ú6?“?v%?¥a?Áº?š¥?^?#®?Ñ?"I?-Í?"f?/h?*£?Á¿?R-?I ?{±?.*??v?óÒ?ô?ÏO?¾×?ñ?3? åÊ?A·?¤?…?$P? ôà? »;? û·? Ž? ’Á? 5?» ?#N?¦ù? #5? ³Õ? Û]? “_? ü? ¶Í? ½Ï? ë”? óÊ? ƒ? …[? ;^? -·s? -D\? -§? -E? á¦? ÅÉ? Σ? Å‘? ‹/? +»?–¹? 0?¥0? X?çS?Å:?~y?(¼?}Ô?^´?,?í?â?Æ:?¯«?ƒâ?F¢?ï$?Ôã?Ë“?·?Á?¯Ò?§t?·Ù?˜?eŸ?f5?}s?€?d?Õ?¯Ù?©Œ?Å ?T?W?•È?³Ê? ·?|A?Kf?,Ò?û? Ò?ø–?Û¨?»w?¡;?ˆ”?sî?]B?6??ÿ?ðo?Û”?í?©L?‘?yX?\Õ?<ï?@?ø{?Ü•?¾7?¬á?šõ?z‰?g?RÁ?&?ù°?ôî?ôÓ?à®?¼Ã?™é?’ ?‰å?v?VØ?.?Á?%??ëÉ?Ô§?¸¿?‰?c@?XÝ?B‰?›?†?=?a>ÿ²“>ÿ5*>ÿ%>ÿ@¥>ÿ0×>ÿù>þéb>þ¸5>þ|s>þO>þ.X>þ -5>ýï¤>ýÐY>ý­p>ý‰x>ýc>ý:¯>ýç>üáz>ü´¾>ü‹¦>ü8 ->û¯Ó>û›Ž>û®>û¤Ì>ûŽM>ûh÷>ûD2>û!C>úò·>ú™u>úë>ùá6>ú&Ó>úß>ùžä>ùZ¥>ùly>ùwñ>ùx”>ù]h>ù4>ù -j>øà9>ø¶Ó>ø‹Æ>ø\ƒ>ø*¢>÷ü‚>÷Ç>÷p4>÷'l>÷z>öâ<>ö‡>öÅa>ö“?>öV¸>öŽ>õ܉>õÿ±>õ”i>ô½>ôÀ)>õ@‹>õ>ôƒ[>ôAö>ô2ó>ó´Ò>óë$>ôNO>ô ->óø>óŸ¼>ó(Æ>òÐs>òÂÏ>ó»>òØÏ>ò5§>ñ¢»>ñõb>òHä>ñÉW>ñiÍ>ñ¨->ñØ­>ñŒÇ>ñw¡>ñ&>ð…¾>ð›Ñ>ðé®>ðœi>ð>(>ð4Ø>ïµP>ïwé>ï°Y>ïÊQ>ðÐÐ>ñyà>ð¨>ïü÷>ï,U>íŸä>î‰Í>ð6s>ð| >ïÄn>ïÊ¡>ïth>î0e>íçg>ísµ>íÐ$>íò>ìÙ>é>w>â|>âʤ>êžk>î?É>î-Õ>í •>í…>í‘Û>ìr>êk¶>ë%Å>íJù>î©Ý>îRÙ>ìá>ëÕÏ>ìHÇ>ììO>죎>ìR*>ìz6>ëøê>ëv4>뾤>ëþ|>ë‹­>ëHV>ë?8>ëC?>ëM·>ëv|>ëmQ>ëï>êÁ>êÞ¾>ë m>êvJ>êH¡>ê:P>ê<>éî<>éÂ0>é™>é‡J>é£Ò>éw`>éMŽ>é6Þ>é`>é>èí¡>èÑ&>辩>è®Ì>è’|>èTb>çñ>çöè>è!>èü>çó…>çÝ >çÂã>ç­—>ç›t>ç†=>çoA>çZ­>çI}>ç1®>ç°>ç‚>æï>æØ>æ¹>æ’è>æ>äà™>ãœ_>âÖR>âW3>áóÜ>áŸo>áUµ>á >àÒ¸>àK>à? >àå>ßì2>ßÃP>ß8>ßxa>ßP/>ß$ð>Þö|>ÞÉ>Þªi>Þœé>Þ‹ˆ>ÞSÄ>Ýçù>ÝÌ">ÝÁÐ>Ý41>Ý ¿>ÝNN>Ý?„>ݾ>Üíã>ܾa>Ü›\>ÜqN>ÜC¨>Ü ’>ÛÀr>Û¥¾>Û“>Ûo#>ÛGû>Û²>Úí¥>ÚÄ>Ú¡ë>Ú~D>ÚW/>Ú+“>Ùüó>ÙÓ>Ù¡ž>Øüþ>×–>×χ>ؼ->ØÃ>Ø’g>Øfà>ØB5>ØG>×ññ>×¼ÿ>ׄS>×Tj>×>Öä¤>Ö ë>ÖC4>ÕÙâ>Õƒ>Õ4>ÔÜ>Ô·>ÔŒö>ÔZ¢>Ô`>Óí•>ÓÎ×>Ó«>Óˆß>ÓdØ>Ó:ˆ>Ó÷>ÒÔ»>Ò¦£>ÒË>Ò\0>Ò;—>Òì>Ññò>ÑËœ>Ñ¥Z>Ñ{ç>ÑR+>Ñ,ð>Ñ!>Ðà2>н >З>ÐwÚ>ÐEi>Ð#$>Ïë‚>Ï´ñ>ÏÌM>ÏÂú>ϧÝ>σâ>ÏF˜>ÏB>Ï>Îÿa>Ï1ê>ÏIè>Χ(>Î}ï>Î[¬>Î"Y>Ît>Íç¢>ͺ>ÌúÝ>ÌvY>Í p>Í/ >Ìx0>˦ÿ>Ë.m>Ë€>ËSì>Ë4>Êò›>ʸL>Ëy+>Ë£µ>ËL[>ʤM>ÊKh>Éó>Ê,`>ÊZš>ʉS>Ê‘,>Ë4µ>Ë - >Êa‚>Ê>ɘ>ɵ>É™>ÉÖû>ÉI>ÈZ>ÈV™>ȧ»>ÈD>ÈfË>Ȧƒ>ÈHË>ÇÔß>È#Z>ÈO†>Çñï>Ç‚¨>Çc@>Çmj>Ljp>ÇAh>Ǩ¡>Ç£>ÇK>ƤJ>ÆF >Åî)>Åí >Æ£>Çó>Æ ½>Æ>Åã->Ål€>Åø>Å\ò>Åb÷>ÅFn>ÅU¢>Å"/>Äýâ>ÅŽ>ÄÝT>ÄæÄ>ÄàÀ>ĉ»>Ħ >Är²>Ä!–>ÃÈx>Ä >Ã÷.>ÃÍx>Ã¥˜>ÃŽ>ÃhË>ÃG’>É>¾#>Âhu>ÂO>Â=>Â->Â'u>Â%¡>Â/6>Âg>Áüo>ÁÓ«>ÁŠœ>Á?>ÁÔ>ÀÅ{>À•°>ÀdÖ>À3Í>Àö>¿Ôì>¿©Ò>¿yÕ>¿@">¿x>¾úÞ>¾ÎØ>¾¤ >¾~9>¾`q>¾Fs>¾+Ù>¾†>½ï>½Ë*>½§}>½‡¤>½fo>½C=>½»>¼÷€>¼À‚>¼{U>¼;I>¼ É>»ã%>»§Q>»Ž™>»”Í>»}Ó>»_ô>»B÷>»#[>»>ºçU>ºÊú>º¯>ºŽ>ºn«>ºP(>º.M>º ]>¹ð\>¹Øƒ>¹¶—>¹o>¹k¦>¹H>¹3>¸é4>¸çl>¸Ú¨>¸½y>¸¢þ>¸ƒA>¸`Z>¸: >¸Ý>·ò—>·Ë>·§˜>·ƒ³>·`a>·;>·ß>¶Ñ†>¶žó>¶™{>¶})>¶N¯>¶Ý>µðÚ>µÈ'>µ“ä>µd8>µc>µPŠ>µ Ï>´ä>´ók>´Îò>´$>´pC>´I¼>´3z>´ >³üY>³ã>³µÛ>³w>³n*>³f>³W©>²þÌ>²×Z>²à>²´»>²|>²{t>²ž.>² É>²xv>²by>²7 >±¸E>±œ$>±ÀÙ>±q>±=¥>±ì>¯zq>ªU5>¥ñC>¤óe>ª¾>¯¿>°™‹>±Eò>±8Ë>°+ì>°U.>°93>¯ùê>°Y0>°C>¯½»>¯à(>¯‘ >®Î*>®ôÇ>®pz>®®—>¯[¥>¯0l>®Er>®W>®öü>¯Ñ>®(µ>®€ñ>®h>®Bß>®P=>¬Ìï>¬:>¬£š>­Ð>­v>¬½Ê>«ÿË>¬¼Û>¬Ëÿ>¬‰(>¬t‰>«DT>« >ªë€>ª¿>ªô’>ªZk>©I>©0â>©®}>©®>§Ño>¨¤ >©>E>¨ïÕ>©_h>§¦:>¥!,>§‚Ñ>¨wþ>¨Ù=>¨JL>¦£¼>¦Šä>§L>¥è¬>£¸{>ž°Û> Mš>¥Ò >¤~á>¢ÍI>¥{Õ>§¡w>¦Tö>£õ >¥’½>¦Ì„>¥§ú>£ø‚>¤a>£SÕ>£z˜>£–4>¤Kß>¢àN>¢¨Ø>¥h>¦Þ>§"›>§4(>§o“>¦Õ>¤½ó>¤•±>¢ Ã> Ä¿>¡‰">¡ð]>¤>¥mÂ>£Ñ>  Ì>žO±>ž1b> å'>£Ô>£N/>£>£ ¡>¢ÖJ>¡ùÍ>¢S–>¢Sâ>¡¨G>¡iM> ¹>¢5>£ü>£KŠ>¢’>¢¯o>¢?¤> J>ÍÎ>ò> nÒ> Q >ÇÛ>BG>Ÿ@™>ž%¸>žy}> çû>¡TË> ô¬>ŸrŽ>1Í>œ›²>è>6h>žYý>žwD>—>¥ê>ž÷c>Ÿ)>ž:>œSü>œ2>‚>£)>žgœ>žZJ>žg>ž‡N>žÙŸ>žWË>¤’>‡>œÅ^>œð¾>œ’†>œ·ì>œåŽ>œÄ>œ¤•>œ7>œHˆ>œ,þ>›ž>›}¬>›Ÿ>›>>› s>šía>š³r>š>šƒ§>šo3>šL\>š0º>š>>™ù4>™Ù^>™±">™„‹>™i>™K„>™-Þ>™«>™$>˜çƒ>˜Îœ>˜¶_>˜–v>˜sð>˜Qé>˜5x>˜ð>—ïî>—ÕÀ>—½ñ>—Ÿ•>—{Î>—V<>—/¿>— e>–Ý;>–´>–žJ>–†‡>–i©>–E?>–&>–>•ñ>•Ñ\>•·>•—>•p¯>•Eä>•º>”çH>”ÓÇ>”¸ö>”®>”š>”tŒ>”Uc>”Aß>”¢>“Û°>“Ì¡>“ƨ>“¬º>“ŠK>“[â>’Ü:>’i0>’¥Y>’ÅÇ>’†B>’!Þ>’9M>’B)>‘ó>‘ªþ>‘ª}>èa>™‡>‘Kæ>‘aï>‘?–>‘o>‘—>ñR>³>ªn>·ƒ>¢N>qw>d±>‡c>f>€¨>wU>Nc>±>ßâ>ÞÐ>f>]>˜>i£>Ø>Žñ¸>ŽëÎ>Žõ>ŽÕ>ŽPa>Ž~d>Ž¿d>ó >­>ñI>ù>®>Œ¥>ŒÉÚ>ŒD^>‹þä>Œ™ò>ŒŒØ>‹Ü±>‹ìT>‹À>‹Ln>‹F¦>‹,>Š©`>ŠÛD>‹IÍ>Šíþ>Š>¡>‰éæ>ŠL€>‰õ>Š7>Š“…>Š•.>ŠV³>‰·U>‰~Ý>‰¾ò>‰µË>‰£I>‰jã>‰?¥>‰ ¡>ˆ¡!>‡Ã§>‡ý>‡þÐ>ˆÄ>ˆvÐ>ˆn@>‡¡Ž>ˆr>ˆp>ˆf>ˆN:>‡¶ç>…Næ>„ÉŸ>…Î>†Î}>‡"~>†,¦>„ý>ƒá>‚á>„Ò>† „>„†k>„Ë>…®Ï>ˆd>‡ö¯>‡6>†i>„çå>ƒÔQ>„_>„2•>‚Ï>‚->‚È0>‚H?>~8>s"ú>€äj>„Ìj>…b¥>†ù>…wý>„_5>‚“¡>ç>€¥Â>€nÁ>$ú>ë>‚¡W>ƒí:>„Ã>…Oô>„ñ4>… -d>„¡µ>„I>ƒ5@>ƒ3¼>‚”Ü>hG>ã>|ªN>yá>wC>v÷>y[Õ>|Qu>Ôê>€eD>€j×>‚™Š>ƒºÐ>ƒË4>ƒ[>ƒå¹>„Cª>„P¿>ƒ»P>‚ê4>‚5/>€fN>{|,>w†d>pgN>j>É>jƒ>k¶3>o›Ò>s‹r>x>z¯<>}]>€N>xì>‚j‰>ƒ³^>„*–>ƒëG>ƒSb>‚úu>‚òÿ>‚¦>‚6^>‚f> õ>}ñn>zŸê>xä>s„—>n’>i`½>d >]Æ.>]>cÍ>jŒ²>nà*>r‰µ>v³>x<">{­Þ>~áí>€nK>Ð>Ô¤>æ¶>‚+>‚§>‚‰Ð>‚Ï]>‚[Ó>‚_>>‚UÐ>/“>€K%>Ó>{ùV>z!Ø>vØ>sv>o·k>jºx>e»c>_>X!«>P»ƒ>L¡˜>PäÕ>Xa=>`$¼>f…H>kÕS>o–[>p§ç>rí½>w€d>{ÜÕ>}ü;>€6:>€~ë>€ŸÈ>€Â)>€óí>=>K|>WW>}>ÍÏ>•>>Üa>Í#>!•>„ó>}ñ…>|n>{ø›>zŸÛ>yN¸>w!>u±h>rþÛ>mÜ>híÄ>dÔ>`™>YÊ,>Ru_>IÆ>@>?FÙ>E ~>O>X–ü>^¥Õ>c,B>g#H>käc>oÝ(>p]>q‹o>tþ>v‡ä>wÿ>x Ž>x±Ý>y|>y7k>{0O>{ßj>zö9>{^°>|> ->|ö>{{H>zª÷>zYÖ>yvo>xƒ>wš>vçÈ>w›x>w`Þ>wjy>tiå>t‘#>u>viï>u;õ>rÖL>pÏà>oaþ>lŠ»>kYB>i®Õ>fÞƒ>d©É>`{h>\#•>WõÉ>Qì,>Leˆ>E‡>;®:>3X¯>.è/>4Œ—>=dM>EQ+>KȦ>Qz>V= >YŸo>[ÿµ>^Á>`Æ9>bh˜>c–i>d8>e:>e .>e´/>e½I>eÆn>eÞl>e÷#>f ï>f>eËÛ>eGâ>e¶C>eßÏ>eɧ>e°D>e’»>e1ô>c÷Ç>dDl>döy>dÜ%>dT>di¥>dZ]>d0î>dý>cÎ\>cš€>cf>c.×>bô‰>bºû>b}Ø>b=N>aø>a¬“>a_§>aî>`½Ö>`^ú>_÷:>_‡>_³>^u¿>]Ñv>]s>\7c>[(Í>Yãå>Xc>Vrì>SæÓ>Q@>M÷Š>IÔË>Dâì>?`>8>->0<>'%~>#Ñ>*‹ð>2ö >:™>?ü&>E…>I3·>L¦¡>Oy>Q´ >Su'>TÕ->Uäú>Vµ>WA>W¬>X¸>XRæ>X˜q>X½o>Xѽ>X—a>WfÕ>Wm>X_²>XÀD>Xž<>X‡>XVÊ>WÅã>Ws>WâÅ>X>WóÍ>WªÍ>Wà>W?½>VÆ»>TÖÖ>Uïþ>VÝ>VŸ >Vuû>Vp=>VIÛ>Uõ‚>U®>ULC>U“˜>UpØ>U>A>T¡D>Tl„>T°þ>T¹>T.Ç>S„M>SÐL>Sßÿ>S²>SP>SQÆ>S"¶>Rìe>R´®>RŠÂ>RP>Qô‰>QÒp>Qª>Qƒ\>QNä>Q‰>PØ(>P‘%>PD>O˜˜>N¼ô>N…Õ>NÔ@>NÏÄ>NQ>Ms>Mzñ>M6!>LªR>Kæû>K&Ë>Jq&>Hâå>F׈>Fd­>Dî >B{F>?ö~><Æ>7`Ï>1Õ>.*ˆ>(ù> a>>Žè>©¦>÷×>#íD>*|y>0%>4án>7éñ>9˜Ñ>>7>@Óõ>B=>C„d>D­b>E]>DZØ>A•¼>BrÁ>B·>E™Z>GEö>GU@>Goi>GÄ>G=>G~?>GoA>G`|>GDW>Gù>Fðî>F÷Û>F¼—>F˜;>F¤0>FmN>F: >FIÐ>F3>F)>EèO>EÄ>E£€>E~ã>EU>E"'>DÎÎ>D“ ->D°™>D”à>Dv>DN>Dæ>CÌ?>CÊz>C¶%>C³>CeÓ>CA >CE>BðŸ>BƘ>B¡h>B{@>BPÁ>B$‹>Bs>A×n>AšM>Au–>AV‚>A8ð>Aî>@à|>@t>@hã>@OÔ>?ÆE>?éU>?÷p>?Ðå>?¦,>?>=¯î>>hÎ>>—r><x><­…>>;q>>=>>0>> T>=Þã>=f„>=#W>=HÐ>=1>=ƒ><ÞÀ><Æ><—Œ><;{><Á>;îd>;ă>;š…>;m>;7;>; …>:ߟ>:´ >:‰ö>:\Ü>:,7>9ý>9Ì‘>9—!>9A{>9‚>8ò">8¼®>8y¸>8'ì>7å/>7©V>7^7>7>6¶û>6H·>5ÇÝ>5Zh>4Ü>4 >2Ö¸>2`>1‚>05+>.™;>,›œ>*%¼>'À>#U‚>êÃ>§á>„+> -ù>á¦>_ç> ›l>Nµ>àÞ>œ>"Y>%Å>(Wç>*_•>+ó×>--ü>.x>.Ö¹>/oÀ>/Þ‡>03”>0s²>0¡ˆ>0ÃÛ>0Ó>0ÝÞ>0ðÏ>0ïã>0Û&>0Ê÷>0©J>0©>0¬È>0•g>0€Ò>0o>0Pe>00>/¦ÿ>/Ã>/âK>/Æ•>/\>,ô›>-J©>/j>/+¿>/ Ó>.êØ>.ÉŠ>.¦È>.|j>.]˜>.=`>-ú%>-_½>-„>-±>-š>-nw>-IJ>-ü>->,äW>,µ¹>,…5>,sÞ>,WŸ>,4n>,Á>+æ_>+ÃÝ>+œ->+{þ>+aL>+>x>+2>*ö>*Ó>*°^>*;>*hû>*C†>* ->)øC>)Ö>)©>)ƒÂ>)o©>)M{>)'u>)4>(Ù!>(›q>(‰>>(w¤>(UŽ>(2¾>(_>'ì>'ÈÉ>'¥’>'‚U>'_>';à>'Ÿ>&õn>&ÑÂ>&«>&‡Ò>&bE>&C>&ö>%ç§>%œ´>%|«>%„>%iH>%GÉ>%"">%J>$áZ>$¯c>$†•>$e»>$Pï>$6²>$•>#ík>#±û>#fø>#fÙ>##Å>#Â># ž>"åU>"·€>"pÛ>"qà>"bº>"Bý>"Ñ>!ï2>!Ã>!™—>!†£>!f»>!K>!o> ߣ> ÌÐ> ²æ> ¨Î> 7> H•> !á> æ>Äw> ¼>-Ö>6>jJ>*> ¥>êM>â>>^Ä>½>by>B&>#„>ú±>ͦ>ˆ(>j>SŽ><*>0z> W>çï>½>“*>:â>À>2>>ì¡>Å¢>¢Ë>u†>Lè>31>;>å³>¼'>”>lÇ>AÊ>^>às>µ“>‡>S(>ç>¥¦>Ž‡>d¾>Ë>Ëm>x>%>£*>"8>…Å>Ôw>g>øö>‰>â>[;> 'è> aâ>>ðü=ú:Â=îTÁ=Þ¿¤=Üì½=ëÖŽ=÷™T>r÷>P>~x> -Š> (J> Ìþ>L>Q>©®>Y°>óÆ>RF>˜->Ìn>òÃ> Â> >/°>2R>1u>G>ék>Á±>Ö->–½>–+>Ë£>»7>m>I->qÂ>`ª>M‡>6>Ç>Ø>èR>Í[>­I>ŽÇ>zx>^>=‹>%|> -1>êÍ>Çð>±h>—Þ>x¦>W'>?>#­> >ç7>Ê.>§~>‰¤>rÎ>U>6Á>v>ý>ÞÊ>¿²>£>†ƒ>hÒ>K>-`> > ò]> Ôº> ·> ™C> {¡> \P> ;ô> {> D> Þï> Á˜> « > Žô> p> NC> 3»> Þ> û^> Ýé> À‹> £ > …r> g÷> J—> -R> ì> -ò‡> -Ôµ> -¶> -šg> -}>> -_ó> -BÁ> -%Š> -8> êç> ½p> )T> DÊ> s†> Yw>

    > Ò>ä÷>¿>ƒ^>}Ù>pâ>T‚>7Ž>·>ýù>á@>Äh>§Œ>ŠÁ>m–>LŸ>)ì>Ê>ñh>ÜP>½ð> %>†>>kœ>O>3P>­>öV>Ë>¹i>¤Ù>ˆ>h>KJ>1¹>ƒ>øÜ>Þ¬>†>¥>‰;>l‡>Oø>58>ñ>ýÙ>áÆ>ÅÐ>©Ý>Ö>pÛ>St>9m>’>ñÁ>φ>¼˜>§1>Žz>v>X·>7œ> á>¯>ìŽ>Ñ >µ5>–¬>{•>_c>EE>+±>ø>àr>º¶>¶H>‘)>}ñ>er>I—>3Ë>ã=ÿÖú=ÿºŸ=ÿ‰ï=ÿY@=ÿ ·=þâ~=þ°=þG·=þ§=þ -ü=ý“=ý‰¿=ý\%=ý9Ÿ=ýX=üÉN=ü•Å=ü\Ÿ=ü,º=ûù=ûÂt=û†ó=ûT=û *=úê=ú´N=úuÄ=úGÜ=úö=ùÏk=ù¢º=ùa=ù=R=ù =øÕi=ø¢Ð=ønD=ø9B=ø:=÷Ï1=÷š)=÷d­=÷//=öú.=öÅ)=öÈ=öU9=ö(ƒ=õõ =õÀ7=õ‹=õWx=õ#2=ôì§=ô±M=ô}=ôOy=ô½=óäw=óµe=ó¨=óM{=óÅ=òG´=òm8=ò@¨=ð¢º=ð¹=ñ†ò=ïå!=ïÖÕ=ñ.â=ñ=ðÞ©=ð«1=ðRr=ï©Ø=ïéë=ïØ„=ï¥j=ïr³=ïAA=ï€=îÜ1=îN=íÝ¡=îø=î:=íÝc=í©ü=ív­=íCŸ=í ¸=ìÌ•=ìtÊ=ìB=ì5(=ì4=ëÖk=ë§n=ëw–=ëEV=ë=êÜê=êª=êxì=êEÒ=êþ=éÏk=é§c=éxð=éE =é==èÚN=è«à=èx=èAË=è ³=çÙ=ç©9=çuÕ=ç@á=ç ’=æÓP=å¨E=Ýa=Þ™=åwŽ=åÍ=å—ì=å`†=å#Z=äì‹=ä¹0=ä=äGJ=ä k=ãÏI=ã{´=ã9ì=ãd=â»Ë=â~B=âDÆ=áü'=á­æ=á[7=á%=à¢2=à>Ó=ßÏ×=ßU:=ÞË×=Þ/Ñ=Ý}6=ܯ‚=Û½@=Ú˜¥=Økü=ÓÍA=Óî =Òüþ=ÐÙ=Ìdi=Çê¸=ÂŽ=¼%0=´ -Ì=§›*=¥a„=±®$=¹æÄ=Àè=Äõk=È,)=ÌŠ^=ÏØ=ÑÎP=Ó…Ç=ÔÝ?=Õçá=Öµî=×Sð=×Ìf=Ø&T=Øfõ=Ø–ä=عU=ØÍt=ØÖ(=ØÛ=ØØ8=ØÎq=Ø¿ª=جú=Ø–ß=Ø}¿=Øbš=ØC=×ö1=×Àš=×Û=׿Ô=ךî=×vZ=×PÄ=×)å=×k=Ö×½=Ö§›=Ö`¯=ÖÒ=Öõ=ÖÞ=Õàš=Õ¸-=ÕŽÚ=Õdn=Õ9=Õ¿=Ôã¢=Ô¸Q=Ô,=ÔaM=Ô4à=Ô »=ÓÞm=Ó²¥=Ó†‘=ÓTƒ=Ó#¨=ÓN=ÒÖV=Ò«'=Òb=ÒS(=Ò'3=ÑúU=ÑΓ=Ñ£)=Ñwh=ÑJ=Ñ -€=Ðân=ÐÄÿ=Й=Ðl:=ÐB =ÐÜ=ÏäF=ϸý=Ï‘ä=Ïf=Ï:Ð=Ï1=ÎãV=ζÎ=΄ä=ÎNª=Î1==Ή=ÍÛ÷=Í©í=Ív -=ÍMt=Í(U=ÌýŠ=ÌÒ=̪l=Ì~4=ÌI=Ì ]=ËúØ=ËЃ=Ë¥9=Ëz=ËNv=Ë!¨=Ê÷=ÊËÝ=Ê¡b=Êté=ÊFî=Ê^=ÉôÀ=ÉÉ=Éš=Ésm=ÉF¦=ÉË=Èà=Ⱦ+=ÈŠ-=È$4=È2=È…=Çïr=ÇÀð=Ç›=Çqz=ÇF×=Çþ=ÆñC=ÆÀ°=Äìj=ÁL1=Å[ó=ÅëŒ=Å)Ô=ĬÚ=Äü=Ä@ß=Åö=Å»=ÄÇâ=Ä°A=Äšþ=Äv=ÄJÖ=Ä1=ÃõN=Ãf=ú=ÃqO=ÃJØ=Ã&z=Âý˜=ÂÓ@=©ª=€ =ÂV™=Â'ç=ÁøW=ÁÙ7=Á°ž=Áƒ=ÁYa=Á0¶=ÀíÊ=ÀÓU=À·Y=ÀŠ³=À\==À6¶=À -g=¿áè=¿ÀÀ=¿—T=¿k&=¿>´=¿Õ=¾í?=¾Éƒ=¾›ø=¾i€=¾Lâ=¾&õ=½þ7=½Õª=½¬~=½ƒÉ=½\=½3°=½ .=¼áÉ=¼¤¥=¼s=¼V™=¼>ù=¼f=»ð=»Ç›=»ŸX=»wH=»O=»&ç=ºþº=ºÕ =º«ê=º†?=º^A=º2=º Q=¹æ­=¹¾Æ=¹–¾=¹o'=¹GT=¹R=¸÷s=¸Ð=¸¨w=¸€ê=¸Y=¸0T=¸ö=·àÁ=·»'=·“£=·jñ=·A—=·Þ=¶õ³=¶Í7=¶§—=¶€Í=¶Y=¶1)=¶ -t=µä4=µ¼!=µï=µmz=µH%=µ!d=´ú=´Ó”=´¬p=´ƒ·=´^=´7ï=´þ=³êƒ=³®Û=³7Ò=³b$=³Pa=³)~=³9=²Û=²ª½=²‚=²2z=²>£=±ÿæ=±Õå=±Ï˜=±ªü=±„Ê=±^k=±8X=±n=°ã®=°»¡=°’X=°W[=¯à#=°#=°r=¯É =¯=¯ˆN=¯i=¯KN=¯%4=¯–=®ÚÃ=®µ#=®ó=®j|=®E=®‡=­ú/=­ÔÕ=­¯w=­ˆ#=­>=¬å(=­j=¬ôØ=¬Îo=¬ž =¬~u=¬`=¬:Ò=¬ñ=«ð}=«Ëp=«Vÿ=ª,=ªª=©l‚=ª‹ -=ªí=ªÈÈ=ª¤Š=ª}´=ªZ=ª7<=ª \=©Ù¬=©È‹=©¥¥=©:=©Q=©/©=©Q=¨ï=¨ÀJ=¨žÉ=¨‚^=¨^L=¨:&=¨õ=§ñg=§Ë:=§¨ô=§…]=§_[=§;Ü=§n=¦ðÇ=¦‚¡=¦=¦‰=¦aÞ=¦3E=¦K=¥øÍ=¥ÖJ=¥±i=¥q=¥g”=¥Gx=¥$Ä=¥›=¤ÑÏ=¤¤7=¤î=¤s=¤P -=¤&ë=£Úg=£–ü=£¬Ò=£»=£|=£X¾=£6=£×=¢ï©=¢Ìµ=¢©¾=¢†£=¢cš=¢@Ì=¢Ï=¡úŠ=¡Öð=¡µ=¡’$=¡o'=¡:¥@`®²@` 5@_Ï—@`(*@`áÂ@a’q@aç@aÊ©@aQÍ@`¦D@`Ì@_¥·@_§T@_ów@`S@`²@`„æ@` v@_*œ@^BA@]Ý @^Ë@^x^@^£@^£é@^¿z@_ ™@_W@_r¾@_:‰@^¬W@]ó¤@]eŽ@]B4@]y¥@]»ñ@]­û@] -}@[¿Z@Zÿ@X¡@X@X[²@Yuž@ZßË@\$ô@\ô7@]C£@]?$@]8@\ïü@\«,@\&Î@[[1@Z}£@Yãö@YÄc@ZK@ZŸ+@[(Œ@[xˆ@[ii@[@Z‡È@Z6ï@Z0@YÙj@YŒÛ@Yj@Y ¨@Z™@Zl¶@Z÷@ZyI@Z2Ç@Y»ç@Xå:@WXt@U Q@RÖ:@QûÛ@Ròk@Tåå@V³#@WÔs@XXÆ@X{Ù@Xr8@XZ…@X0ë@WÎÒ@W@V @U@v@TÖn@T·Ø@T’@T3’@S£3@SG@Rè•@S+ï@SÙ @T¡™@U0@Tü>@TO¡@S…Â@SEü@SÃÈ@Tu%@T´Ž@ToV@To@S™Û@RïÃ@QáÚ@På£@Pš—@Pòþ@Q86@PòÔ@Prg@P^4@Pþæ@R ä@SÌ@Sˆ¼@S¨ç@Sœƒ@S‘_@S† @S^V@SZ@R”#@R+A@Qç @Q½N@Q¨ì@Q¼O@QñS@RÐ@Rš@QçS@QŒÂ@Pû@P' @O<ë@N¹L@Nû©@OÀ)@PSù@P8u@O|7@N°Ì@No@Nª[@N¸3@N*5@M]©@Mƒ@Mˆ“@NA’@N‹Ü@N¶@M)_@L"@K¡ @KáL@LŒ @M3 @M¼Ù@N1–@N@N› -@N„&@ND@MËv@Ló¼@Kª@@J j@HN¹@F¼í@Eí@FM}@G‡m@HÄÎ@I‹+@JY@JJÔ@J -¿@HÀf@F¢·@Dãl@DÏ5@FvM@H‡@IÏÊ@IÝy@Hø`@GyÅ@E÷@E:V@Ey|@F<@Ft@Fý@Gí@Iá@IûÂ@Ji@J{Ï@JSp@Iö{@Ip„@Hñ”@H¿@Hóz@IZ5@IœU@Iv@H¶7@GD\@EdH@CÕ‚@CCé@C‚:@CÎ@CìÕ@Dbª@Ep|@F#@G!Ë@G @Fñ™@Fýv@GB±@G‹{@G®ô@G¤C@Grý@G-ß@FðÜ@FÊz@F &@F*Ã@E%@Cµ®@Bž£@B”é@Ch?@D<‰@Dq¼@D N@CtS@CK@BÒö@BÎx@BÑG@B ã@B&þ@A¦M@A@@AÔW@By@CÇ@Cf¾@CTœ@CÔ@BÙî@BÞX@Bÿ•@BÛ§@BB9@A,@AC@A~ž@Aòm@BT•@B†°@B†ã@Bi+@BC@B -|@A¢@AÎ@@”@@ú@?Fk@>MŒ@=í‚@>*@?§Ø@@{@@ët@A*Õ@AH?@A;‹@Aì@@¬|@@LÑ@@Ò@?ÿ+@@M@@ @@z@@?@@C@@@?Üž@?—Ì@?‘@>VÁ@=nO@<×Ê@<ä:@=_ -@=Åü@=Ъ@=¥Ü@=ŸÏ@=äö@>Fw@>ƒ¿@>ˆä@>fj@>+!@=Òš@=Vþ@<Ñ®@<~ê@<ˆö@<ÔÓ@="ö@=Má@=G@@<ú@@<`h@;¯g@;Dþ@;O@;§p@< •@@8eo@89+@7ÿ@7ܺ@7ØÊ@7Ø•@7ÅÌ@7£ù@7y¬@7½@3[·@3@3š@4lv@4üÎ@5´@4õŽ@4¿~@4¡Â@4“{@4i@4 j@3O@3‡@2¤@2K™@2D‰@2¨B@39x@3¤®@3ÊØ@3±@3SE@2¬Ï@1ïŒ@1ˆO@1µÁ@25¤@2Š†@2mÅ@1ô @1u»@1LÓ@1Š@1ðÍ@28±@2B@2ì@1ºÌ@1YT@1 @0úD@0ño@0Ì@0D@0sÎ@0™@0×K@0ìA@0É€@0—M@0€.@0„!@0„¹@0oK@0F@0 @/ÂA@/y¹@/WÇ@/gã@/Šû@/›k@/’@/˜@/mß@/Q˜@/Ó@.»@.X@."+@.3e@.^@.UK@-úþ@-uþ@- Š@,ù·@-?–@-¨Ñ@-ô@. |@.S@-å]@-¹G@-‚@-R¢@-<@-9¸@-1|@- -Õ@,º{@,Gp@+ѧ@+‰F@+“@+ä@,AÅ@,wH@,‚×@,x@,c@,Lž@,<.@,-N@,@+Î@+jÖ@+ é@*èò@*öß@+±@+ ²@+ Ï@+è@+é@*ÎX@*Rd@)–Ï@(ûG@(ê@)Ix@)£ü@)»z@)™Ü@)XI@)`@)œ@)1â@)@c@).é@) d@(Û@(˜9@(^ñ@(LŸ@(LÀ@(9´@('@(ß@'òB@'¤@'6@&õf@'>8@'šÕ@'®Ý@'hS@&÷c@&¨ë@&£•@&ºí@&µ@&™è@&x@&:A@%æë@%¯ð@%Œ@%”Ò@%¢š@%ÕY@&v@%ûZ@%¹»@%l @%NM@%jP@%€³@%T”@$þx@$Ìö@$Ý@$ÿf@$÷,@$¥S@$Ò@#¥@#ƒu@#¦v@#É@#«]@#7¦@"£_@"K’@"K¹@"sg@"–ö@"£#@"Ø@"w'@"yâ@"ˆ´@"i~@"…@!Äe@!œÃ@!–\@!›5@!“c@!h¤@!Ð@ ¥Þ@ =€@ p@ñ…@Ás@]p@àj@ n@è?@+@ßÊ@á4@µS@…@^ê@<Á@@þj@ u@3²@€ @ñP@ ki@ ħ@ ÚÝ@ ‹I@Çì@г@@äo@¥@0a@2Ï@;N@|;@Ïä@î@¸Ö@n@0¡@q@JØ@¶×@'W@àÆ@ì[@$p@"?@¸Ì@H³@bG@4u@&w@-ò@ê.@C(@«Ñ@©%@5@Ú¬@Fê@tä@ƒ@šŠ@Ã@Óm@§Ë@OM@#@ñZ@ô @Ì@)@?K@@Ä^@†o@D¿@Ò@ÿ@@;@`§@@@~@)@3#@øË@†Ö@^Ó@¸t@ê@¸j@y™@",@sŠ@ ?@{Ë@¨@Gw@¦Ï@»ÿ@>f@a6@@Ê@É@Á@+Ã@Þ†@8Ý@°·@“@žÇ@…†@T@ <@ég@ÃÌ@Å@Ï6@¯0@W¬@ÓZ@YÓ@1k@>"@#7@¨ž@´à@‘D@u@æ@¦ß@e,@¨@Ý @%Í@5@è @U@C‚@ì"@³à@ÏÓ@û@ÿL@«¥@[ä@Ac@&·@ÓP@_Ê@ñ^@jÄ@Úe@ÆP@Jë@à6@:¹@w@¦È@žq@e0@qk@èq@9ƒ@ß@ -M@P°@ÿ|@îû@Öˆ@“¦@ _@Á@ê@ Úâ@ ËÌ@ æ%@O«@Þ:@;Ì@B@Œ@Ê÷@Áí@¹¿@‚–@3 @ î=@ ·‡@ ê@ ˆH@ y@ (’@ ·Ó@ x°@ ƒÃ@ ®Ó@ »g@ ¸‚@ °@ ņ@Jî@7 @ à¸@ y -@ Ñ@ QÆ@ šð@ ¦@ ™<@ ;ä@ L@“ë@ »¸@ V@ -’«@ Ëá@lø@çÜ@ -ðù@cÝ@‰@>Á@©¡@Õ@8Û@?Á@ÃQ@ J¾@.þ@@zq@Å-@ Ú@²Ó?þ›€@ÏÔ@þ­@{@#%@$g–@·@Yh@U?ý[¨@–y@ z@By@'»?@0àÆ@4m‰@2Q@)è@ò\@ iC@ G?ö=Æ@8÷@Mà@4@,_u@5N%@:a@<ßé@@F‡o@H#d@HÞ©@H¶ñ@G¿ê@F=*@DáÜ@Di*@DØM@Eel@EPm@Dw@C(@@Ên@=a -@8 a@2mß@*w@-7@‚?ú9 ?ßKÌ?Ù‚÷?ë­»@–Þ@°N@"ér@,wR@2Ÿû@6$•@8ö@9½|@¹]@=é–@<@9-¬@5î@0‰X@)—Ø@ë¦@Ñ?@{?ä ?ÏP?Òkú?êD4@hð@ð®@!™Ì@*˜@0@3¢Ï@6 $@9-–@:׿@;–³@;®Â@;j*@;ß@:ñ;@:ý&@:¹ï@9B,@6•â@3Æ–@1@.é-@/Ã=@4c™@9*§@;"Ó@:xO@7Ïá@3èv@1~µ@2ÅÑ@5×s@7x¬@6}—@4@2”·@2Ü @2Å1@0Ó×@.e@.mž@0æ@3i@4á@4˜ø@40)@3Éó@31Ù@2Qù@0Ô÷@.’~@+Ñv@(OT@"ùe@ës@ß½@³¶?ã%h?É J?Ã@?Õ›?ôÇW@ @Cx@ßh@$î@(zò@+Ã@-ºÊ@/.@/È)@0›@@1|Þ@2 -@25?@2/q@1õñ@1†š@19@1sÇ@1÷K@2:)@29p@2ñ@1Ðt@1_÷@0êÖ@0u•@0IÕ@0h.@/ç!@.f@+šl@*—@*¶@+>@+›”@*˜—@(*@$ë‰@"˜4@#Z@&Lô@)åA@+¶Ý@* P@"ö@£0@`Ž@M*@ j@&«@*Xî@+|¬@+Ïb@,;X@,¢t@,›ä@,6ç@+À/@+Yp@+Â@*½Y@*ƒ—@*˜˜@+ `@+q@+m?@+Ã@*½›@*Y@(ë`@'Ì@'œ«@(Bî@(¤Ù@(l@&áÊ@%M@@# @_€@«‘@éù@ ÃÑ@k…?ñ«p?Ïâß?³ŸI?ª È?¶ÖA?Òõ?òjÅ@XI@¬@â@y•@Y@ >@!˜@"{ @"ýz@#Aœ@#id@#Ÿl@#þ[@$‚ @%Ž@%[¼@%sô@%R@$Ü&@$,û@#˜¾@# 8@"Q›@!Í÷@!ø©@"‹‚@"á’@"½Õ@"€P@"pt@"O@"ò@" -Þ@!ú»@!£}@ ½Õ@Ȩ@x@‹@FŸ@w-@íô@Uµ@öÿ@ õ@ å±@!d†@!׃@"á@") @!Ô2@ ÑÊ@X@C¹@¹0@m«@ + @B=@ Ž@@7"@¼æ@„’@{º@Dâ@@*@a9@¢­@Á‚@Ô³@ïš@ñ@ë@xÓ@Ü+@`Ç@9Ç@{^@êß@/@Þb@œ‡@d˜@YÜ@”×@¹N@}¨@ñº@S;@ò¼@î³@¿@ç…@£ @Y@(þ@e@(£@¬@©õ@%@×ë@û™@@yÔ@€Z@²l@i*@RÁ@èÊ@r«@³€@vŽ@Ü›@ÐÍ@Ò0@á«@´Ò@[ó@ ü@­™@;@ßb@Ë@Û{@¬ž@ð@+£@ä¨@uE@˜™@ ´S@¡ú@b?øbÝ?ãÛ‘?ÉXd?¯®3?¤rÓ?¯T†?ÈS!?â<'?ö½@°@­'@ -êé@ @«y@ @:œ@FQ@óµ@$-@™@,¹@âE@>Ç@?Ë@ €@ Ú<@_á@_V@Û@L@²@ ?o@ Xº@ý¡@xv@ T@ !í@aå@S@dž@Ü:@)@ø@w~@bf@ w[@ Üi@ÒÑ@l*@Ò>@¡ò@ ÓE@ ·Æ@/†@Z@~Á@SÑ@ Ü›@ ËP@pj@&`@‰@±¾@™0@PŠ@Ûµ@ ýq@ ¹@ Ää@ Ø -@ «ç@ UÉ@ #Ú@ ¼@ -²ö@ -ƒß@ ›x@ ±<@ ½@ ˆ?@ -Óy@ ï@ ¡ð@ Æ8@ ‘½@ WF@ w3@ ˬ@ ìÈ@ ¼l@ b@@ 9@ ”@ Á@ -È{@ -a¸@ -P»@ -³¢@ -ô‹@ -ÞQ@ -±P@ -x@@ -U…@ -`:@ -x=@ -lî@ -+÷@ ú @ þù@ ù¡@ Ò@ ­­@ m³@ ³@ ì@ ~@Ò¥@mC@)ô@(ä@E°@mÁ@œØ@³ -@²ˆ@ÖB@þï@Û÷@¶©@Å#@•Z@*Ý@üå@½D@$Î@»”@¨P@¤ @e«@”³@|¿@*e@éU@Ƚ@%â@2~@Ï@»Ð@"F@«ˆ@«Þ@4@äR@ZD@m»@@x³@R0@S@`@ñI@Ú@—ã@^ñ@%N@³ž@a«@y×@ªã@ËÒ@û‚@öw@\ô@ø?ÿ&t?ù×?ø¾W?ý¶@èÂ@ [@S¾@Kb@D@@m@Cµ@@ -A@C‘@ @‚-@ÿÖ@•@‚"@‰*@”@¿º@»%@@zà@g<@@?ÿMD?þ¶‚?ÿã@@‡™@¡@Iº?ÿê?ÿet?þ9æ?ýŽ?ý'o?ýÏ·?ýóÃ?ýQ˜?ý š?ýš¿?ýÜ;?ý“?ý &?ü’#?üdí?ü¤?üŒ¬?ûÌ?úô?ú_ä?ú®?ùý?ùö?øáÑ?øÙÊ?øØ9?ù%S?ùÔ?øØ*?÷Á?ôò\?òTù?ï½0?íFó?éZ"?âÙý?Ù–Ö?Ìml?¹lß?¡‡?Ôå?‹©?œ®¹?´ ‹?Èö&?×.ˆ?à ½?åM?èc?êü?ë„ù?ìÑË?î1”?ðâ?ò+Å?ôË?õr?õòô?õ•’?õ†?ôÔ[?ôR¾?óÛ?ô(?ôÌÙ?õ?ôoª?óO±?òŸ™?òú¯?ó£œ?óbÁ?òži?òƒj?òË©?ó?óMë?ó¤r?óÌm?óUœ?òµ“?òQ­?ñkû?ïÈ ?íÕ>?ê§Æ?ãâö?Úè¶?׿/?ÝÈ ?æ·?ë$R?íÛ?ïc™?ïž‹?ïy?î×t?îÀw?îÜ?îqW?îlw?î^‘?îX?î,B?îÿ?íàq?í¡I?íkÞ?íš—?íô›?í¸:?ìα?ëö?ë!Ì?éµ?èBi?çïX?èÄŠ?éÝ?çæ…?çf?æ¨?å{‡?ãçh?âÌt?â3®?áø*?â?áëÎ?á(î?àõÄ?áš÷?âbö?ã~Ñ?äo«?ãêñ?âxÎ?âœ]?äô5?çAx?è%?è?è?èi‹?èƒ^?çÞÅ?ç -È?ç?çÑ6?è܆?éh?éBk?é;Y?é’?é–2?é€O?é­a?éž?èÙ]?ç´?æÉò?æ{Ë?æ‡A?æªf?æð±?æ–?ä' ?Þ¦?Òc”?Ä£Y?Á Ù?Ì^Ó?ÚÁØ?âæ¯?å–‹?å·H?ãùD?ÞZ?Ô/^?Í&-?Ñ€:?Û«B?â[‰?äÓØ?åÁð?æf†?ææ?æó\?æ6??å]ö?åŒ`?æN0?æÄU?ç›?ç;Z?æÆ{?åš½?ãÛÎ?â3¨?ákŠ?áÞ#?ãø?äæ?ãáü?âõ¥?âP®?âv?ãi?ã-Ô?âÝ?ã2o?ãÒ?㉓?äS~?åWH?å?ä[þ?ã¿ ?âl?àü?ßüè?ߪ)?àZ?á±z?âTä?â/Ù?âBè?âqæ?áåé?àë?à¼s?á ?á Ô?á!?Õæt?ÕÏ?Ô\Ú?Ô^?Ô¦í?Õ^É?ÕEÏ?ÔÖÐ?ÔóÏ?ÕÁ?Õïö?Ö*ó?ÖNÀ?ÖY?Õd¥?Õ^ ?Õ†b?ÔçF?ÔVä?Ô³I?Õ‡?Öe?Ö(J?Õ”å?Õd?Õ9?ÔÚŽ?ÔtÝ?Ô=?Óý£?ÓvÞ?Ó=E?Ó=¥?Óµ?ÒÊa?Òk ?Òq?Ñúë?Ò<Ü?ÒFq?Ñ°1?Ϭ”?ËÛ?Æz‘?Ç4?Ë)Ô?ÍæQ?Îøš?Ï£4?Ð+$?ÐC7?Ð]?ÏèÝ?ÏšR?Ε?Í|?Ìÿª?Í::?ÍÿŒ?Ϋ“?Îä?ÎÌÐ?άì?΢1?Γ¾?Î3Ã?͘®?Íb?ÍŽu?Ílÿ?ÌÒZ?Ì^µ?ÌR—?Ìo6?̱Ë?Ì×®?̆µ?ËÝ{?ËN=?ÊÿŒ?Ê­ò?Ê4¤?ÉÞè?ÉÊÂ?É„š?ÈÛ ?È@?Ç3?ƈ™?Æp&?ÆõZ?Çp?ÇÜ?È4V?ÇòU?Çe ?Ç&“?ÇX?Æßt?Æ£k?Æu²?Æcv?Æ'ƒ?Åð?Å,±?Åg£?ŵ£?Åïc?Æ_•?Æð‰?Ç?Ó?Ǿ?Ƭº?Æþ?Ư?Æ»ø?ÆÝR?Æþq?Æð?Æó?Ç9?Ææ·?Æ|×?ÆŒ?Ų«?Åc?ňÌ?Å{f?Åy*?ÅÍl?Æ/&?Æ-ì?Å‘¥?ÄåÁ?ı}?ÃéÅ?ÂgQ?Â()?Ão?Äl`?Älù?ÄF€?ÄTö?ÃþX?ÃCK?Ã`?ÃBR?ÃuÍ?ÃÀ¡?Ãâ±?ß?ÃAÞ?Ã+Ø?ÃCæ?ÃO¼?Ë ?Ãí?ÃÂÇ?Ã!&? a?Â7?¸/?ÂÄE?Â3²?ÁCƒ?Àk½?¿º2?¾¤¥?½L?¼&R?º‰[?·©?³Vi?­â?¥Á??™Ë?ˆ(!?l»¥?bÖä?{ë_?Þ:?Ÿ•F?©Ø?¯“Í?´$??·-?¸ø?º+ç?ºû?»x?»Äý?¼ ô?¼F??¼5Ö?»\?»?»E'?»|?»m??»ƒ?» ½?»¨)?¼Ia?¼‚+?¼&Þ?»ÍÄ?»¦ã?»ì=?¼ib?¼¬½?¼¬‰?¼…+?¼f?¼F¤?¼Fß?¼n0?¼‰W?¼{«?¼Dß?¼ ?¼ -ú?¼ |?¼ ?¼Ð?»ßÏ?»àÒ?»K?¹Þ”?¸¸q?¶©Þ?°6Å?§˜?£Ì’?¨½­?¯Û?µ¹M?¹A4?ºv¹?º„Ø?º”q?ºÚg?»G?»A?§‘â?¢?¡šž?¥¥?¨&Ê?«¤û?®¸?¯òÁ?°e?¯ð?¯´§?¯ ?®Ê?®íã?®mm?¬wM?ªë¸?«µ–?¬Þä?­+a?­Mš?­#}?«k¥?©5?©½ ?¬Tâ?­’?«ë×?©™I?§¯Ô?¨èú?«b?­Jó?­ÕP?¬´î?©:?¥-C?¥Ø§?©¿÷?¬\B?­G‹?­n?­…Q?­ÎÔ?­õ’?­«ƒ?­«?¬Y«?«‡¼?«XŒ?«“V?«c+?«D?«|?«Œª?«Ùç?¬n?¬Ê?¬±.?¬W×?«òÑ?«rm?ª¾?ªL?ª•N?ªê6?ªÂÞ?ª?±?©Â?©†¦?©°µ?©ÝE?©Ÿh?© Ñ?¨ˆ?¨xƒ?¨9Ä?§¾?¨Ç?¨w?¨r]?¨;å?¨O??¨ˆP?¨WÚ?¨@·?¨™æ?¨¤?¨g,?¨U?¨5#?§ÜØ?§ƒ­?§R8?§}?§Uã?¦R‚?¥“T?¦f?¦Ò¿?¦òì?¦™?¦wò?¦ä{?§aw?§???¦ÂÊ?¦Z[?¥ø©?¥\Y?¤Åï?¤¹Õ?¤Úì?¥0Œ?¥§?¥E?¤Ñï?¤Ëè?¤¥Õ?¤WÅ?¤T?£°„?£›ú?£ÓÆ?¤-?¤‹-?¤€¿?¤ †?¤ ®?£ø_?¢õ2? -D?BÓ?ž3ƒ?¡È ?¤T?¤¯P?¤;ò?£%1?¢r¨?¢Œ0?£j?£_›?¢ô)?¢7¤?¡þ ?¢‚?¢å—?¢O?¢0Ü?¡äÂ?¡{b?¡7?¡YŒ?¡¤®?¡X? s?Ÿ¶?ŸA#?Ÿ -–?Ÿpé? ]Ò? ås? éU? åÅ? à€? |?Ÿ¾Ä?žêÑ?žsÁ?žl¸?žK±?žB½?žu ?žÎ ?Ÿ]_?ŸŠ·?Ÿ]§?‹Œo?‹Ç$?‹ÂÎ?‹ß!?‹ÖY?‹’?‹‘†?‹‰µ?‹!w?ŠÜu?‹ß?‹x?Š£?ŠN.?Šv‡?Š¦ž?Š›?ŠGJ?‰vM?ˆ,?‡=Ø?‡^÷?‡Dâ?†Q?…÷?‡—?ˆy»?ˆÍþ?ˆÒ£?ˆÎð?ˆ·?ˆXB?‡ð¬?‡Ö’?ˆ p?‡÷N?‡¬î?‡…Ÿ?†ê»?…Å?‚Ùç?ƒU?…•’?†™â?†?„=ú?ƒC?„‰K?† ë?†6R?…üŽ?…Ó™?…Þ­?†I?†}?…jo?„¬Ë?„ö÷?…c¦?….ä?„Âú?„£½?„ç½?…"Ï?„ïÝ?„\µ?ƒ«{?ƒ"å?‚ÿÇ?ƒ}©?ƒø²?„r?„+"?„/®?„-*?„6Û?„s}?„³ž?„°?„JÑ?ƒÚh?ƒ7?‚Úí?‚’?áø?ß$?‚ÁG?ƒR?ƒ_³?ƒHÃ?ƒ\?‚î~?‚ãç?‚Êç?‚š4?‚sJ?‚1Ë?ͪ?¬%?¸4?†~?T™?Z²?)¤?€Á˜?€³¸?€áa?€Í?€µ¡?€Ü£?!þ?‹?€©„?€®b?€åU?Ó?€èË?€·B?€”@?€O¦?À8?xŽ?€c?€hÏ?€xÄ?€<?_…?}º?}Á?}ö†?~ÆW?~«>?~U?}ÙÙ?}º?|åÞ?|Ìá?|Tk?{ï÷?{·Œ?{êŒ?|žJ?}Qñ?}_'?| ¾?{óí?{Ôâ?{Ô?| -š?|"µ?{Šn?{4ñ?{R"?{R ?{]?{Q?zú2?z…u?y}?wp ?v&³?w?wÕ±?x{?xlO?x€ž?x ¦?w1"?vÀ?w'6?w}x?w”E?wnË?w§?vËÇ?vŠ€?v-¦?u¾R?u£.?uŒÜ?ua?t±·?t¼ ?t©9?rÖò?m†8?i.B?lVq?qê?qî»?oÖ®?l‰ù?lÝü?p=»?r„Ï?rÊ"?r$;?qÈ´?qè??rC?pÜÌ?nœë?n8?n¸6?n/à?mV -?mDC?n!?nô6?nâ²?n‘?n¨¬?nª…?mì?mIZ?lÅ•?k’€?ky¸?l?m/?mPÝ?lè=?l6ì?kÚI?k›?kh4?kja?kT?jY?h.!?gåJ?h¸Â?i#Ø?iW%?hÂ?g½v?g•f?göÚ?h,Ô?g’e?f»J?fâÚ?g“?gðÎ?g‚®?f¹Ñ?fŠn?f¦&?f_?dà'?dõI?e±?eáÀ?eÞ?ezÚ?dìö?džü?dë’?ege?e*:?dÁ?cw~?b"‚?aØo?b]8?b‡?bÂ?a£Î?a¿?b|?bcí?bWø?aþ§?aï?aíl?aÐi?a¶?ai ?`þã?`„p?`1?_¾?_Q?^o#?]ø¨?]¼Ñ?]°Ò?VÌŽ?V¾?Vñ×?W?V‹?Uÿã?U×?V[?Vµé?Vø«?Vßÿ?Vr -?V2Ô?V4ß?VR?Vn?V .?U) ?SÑj?S†Ú?T¾?Sê?IѲ?4JX?*œä?k?Mñì?OB&?P¼?PW?O¤§?NãË?N— ?NÅØ?N¶`?N=?MïÏ?MËð?LQi?KTÉ?LÏ‘?M,?KH#?Kr}?M@ü?MÃv?M· ?M‚Þ?LŽ¹?L4?Mn?N(r?Mäz?M!?JíI?H,'?GæP?Hˆù?H.?HcK?I@ÿ?I¢Ë?J'£?Jp*?J¥Þ?J‚2?HY?EJ£?Er -?E“ã?E¬t?Et¬?E/z?Dóå?D6¾?C¹x?CKÈ?Be?Añâ?Be?C\è?CÊ6?C~6?CA?C!Ë?C´ -?CÏ­?Cƒ’?Büh?BÄ£?Bð`?C,¾?C­?Bþˆ?BÈÕ?B€?B“¿?B˜%?BT5?BK?BvÄ?BND?BD?A¶ê?ALß?A§ ?B*??BB ?BR×?Bho?BJ"?B*?B2?Aø ?A»÷?A³?AÃN?AªK?A‰D?At¯?ASp?A0t?AYJ?A m?@HÄ?@?î?@ÜÀ?AGr?A;›?A(?@ðG?@õQ?@Ó>?@lº?@?@ «?@µÒ?A?@…Œ??+?>‚°??y?@L?@—?@^8?@?·?@??©D??yV??VJ??Ò?>Án?>¯Ä?>ðÈ?>ëL??H??7=??zû??Ä ??‡·v?>hÎ?>y?>ÔË?>²)?>4?=á?=×)?=¥p?=eü?<á“?;Vâ?9î†?:ÚW?<±?;ë?;†Z?;f1?;~|?;m³?:o¶?8Œt?73T?7çd?9®Õ?9øé?9ê?8L»?8nà?8¯£?8x#?7ìP?7Å(?7E1?6,"?6qÁ?7`?7M?7Œ -?7²?7š³?7`D?76p?7xì?7£?8?8/ ?7àÊ?7?6}¥?7 ;?7_/?6—Ã?4è?3&¾?3ç;?5^Ç?6pä?6òü?6¬ö?6º?5Ó4?5êÉ?5ñ(?5Ó‡?5æ?6 ‹?6¡?5˸?5¹å?5¿~?5•°?5] ?+ÅÍ?+R?+ Ÿ?(Jà??ŸŒ?">x?)r ?*´)?*»¯?*ýÕ?+Ðt?,é?+l?+?+È?+0{?+H?+¹?*:§?&p;?ÀV?˜'?'™¼?*_H?*'{?)Í?)ÛY?**_?)œ‡?)§?*N}?*’è?*Á?*é§?+€?*û²?*i]?)V3?(‹×?(Í¢?'å“?$×`?$ð'?'ïb?)j?)U”?(õˆ?(ÎP?(Ad?'Îî%É>Û„¯>ð¨|?[á?]Å?±;?–å?Ya?¹?÷?S ?Ì{?­ ?æZ?À¹?Fý?9ã?òR?;}?4‡?8¦?GM?Rö??èì?æÑ?ÍV?ÌX?Ü$?»Ÿ?Fó?É?~?‹w?¡·?jë?%™?rm?¼?ìÏ?Îc??¶H?ãÎ?Ñ7? --?Hk?oé?^?/­?*þ?l%?“r? ?àx?¬y?i?Gw?Vk?3Ã? ñI? ß? ¾ö? k_? ? !ä? 0µ? ý? ÖÇ? “ƒ? œ? ‘¥? ƒ¢? a? &l? ï? *«? “? È? ðœ? ÒD? ™È? \‰? aî? ML? ø? 3‘? :a? $Æ? -ìÅ? -†ª? -ˆ˜? -´º? -µ? -§ ? -‘²? -tØ? -O? -8Ï? --8? -‡? -h? -? ò­? á©? Ò -? ¾Õ? ©[? Œ? s#? ]Z?  ?©o?¡J?ÀS?Ç‹?Ãt?°ï?žu?Š>?i? ÿ?«? ‚?ìD?Þé?`·?õ„?6´?W?ž?™“?†?qÍ?]F?I¤?6?"é? ¶?ú¯?ß?¥Ü?vH?h?Sù?;º?58? ?ÚÅ?›~?|ž?‚î?EL?ÒM?Ôº?ø´?ÕR?€õ?N¶?õr?ÄF?BK?…j?iB?"i?J?Åf?†¯?‰G?‰v?½à?ë¤?ˆ•?hE?Ñæ?Æm?S;?E?9þ?r?Ñ?9»?Ïb?C:?Z‹?\É?$?Ôž?Ö£?ìc?M‡?9¨?›?`w?áI?q?Ó ?DÛ?|Ð?åã??ø ?4r?9‘?Çx?l£?9p?Ø?ß?3Ð>û`˜>ësO>ëJ>üÞ??ð?½#?šk?Òê?ÇV?àÿ?Œ™?u‰? ?æ?œ@?4¿?h?^‰?hÄ?bX?ŽN?Œj?>{?†?#å?ø;?·¶?•Æ?Ôª?ïI?Îß?¯£?£Ã?ŠZ?L?:G?Rè?g£?hÚ?E|?? ?â>ÿî>ÿ«®>ÿ—®>ÿsŸ>ÿa>ÿT>ÿ<à>ÿ$>ÿ Y>þð9>þà7>þÏr>þ«‹>þA¢>ý‡I>ý¢>þ>þ†>ýõ>ýט>ýÂ%>ý¼>ý¯º>ý&>ýcê>ýM*>ýUæ>ý\…>ýTó>ýHl>ý> >ý05>ý‚>üÝ>ühÕ>ú>ø9Z>öŽˆ>õ¸2>õ¶>ô¢>ô?0>óò`>ó©¹>óPú>òÛ˜>òŠ >òw>òE¾>ò=>ñèY>ñ®¹>ñw ->ñ<Ž>ðÿï>ðÕÔ>ðÕs>ðÐ>ð7æ>î¢_>î¾õ>ïBk>í¬>ìÐ~>îÛr>ïD!>ï -Ú>î°>îxt>î’h>îz¬>îB>íò›>í†Î>ío)>íg>>íGÒ>í¾>ìÔ¬>ì”*>ì`f>ì9‚>ì @>ëÖ>ë”í>ëZè>ë/(>êé‘>é§N>æ½~>çx¿>é­M>éÝ®>é›Ó>ée‹>é6 >èÿ×>è½9>èr(>è6*>èœ>ç¶R>ç^„>æü>æ~Ð>åø>åfb>ä­v>äDO>äŸ>ãê>ã«]>ãsŸ>ãDC>ã$9>âö/>âÂE>âª>â^>â"á>áær>ᨈ>áiy>á7´>áÈ>àóR>àÀG>à >à]§>à'>ßð'>ß­·>ßió>ßN>ßÚ>Þïß>ÞÖd>ÞÉY>Þ5>Þ6¬>Þã>Þ -Ê>Ýò6>Ýûè>ÝÅŸ>ÝP¡>ÝR˜>Ýgx>Ý´>Ý1É>Ý=d>Üê>ÜÛF>Üìé>ÜÙá>܆¶>Ûøß>Ûx>Û<>Ú³Í>ÚcÞ>Úi‘>Ú·>ÚÏp>ÚÍ>ÚYñ>Ùh}>Ù®5>Ù\>ÙA€>Ù>Ù5,>×î—>×#³>ÖИ>ÖÌ!>×)>×\>Ø`[>ØE‚>׎>×@®>× >Öh™>ÕPÉ>Ö >Öû¾>ÖËz>Ö4é>Õê’>Ö0+>ÖG}>Ö4>ÖI&>Õê¶>Õ|í>ÔRó>Óv¼>ÒèÎ>Ñäm>ÒË>Ôh>ÔŸ’>ÔŽ«>ÔKþ>Óf>ÒóZ>Òþe>Ó{>ÓRÕ>Ó(k>Ò@_>ÒŸ6>Óae>Ó7>Ó:9>ÒÏæ>Ñìp>ÑðÜ>Ò,í>Ò"n>ÒBU>Ò]Ø>Ñò3>Ò6>Ò·r>Ò¨Ä>ѹM>ÐÞÙ>ÐôÔ>Ðýz>Ðòá>ÐÙe>РÁ>Ðs.>ÐY>ϱç>ÏwÂ>Ï,¾>Ï: >ÏT>Ï%Ù>Ï º>ιt>Î¥J>λï>Α˜>Îwà>΀8>Îe±>Î?->Î)ñ>Íý>Í¢…>Í?)>Ìæ>Ìšö>Ìwí>ÌT>Ì5G>ÌÐ>Ëñ‡>ËË¡>Ëšj>ËX÷>Ë6*>ËÖ>ÊéO>ʵ”>Êu‰>ÊU“>ÊLW>Ê7Ð>Ê# >Êg>Éå«>É¿i>É›œ>Éy›>ÉVŸ>É3·>Éc>ȦÐ>È\>Ǩf>Ç`R>Ç*>ÆϦ>ƲÔ>ÆÑ?>ÆÅ„>Æ°”>Æž{>Æ„â>ÆeO>ÆDý>Æ*¾>Æ>Åøc>ÅÞ¤>ÅÂö>ÅŸs>Åwc>Å\%>ÅIò>Å+F>Ŧ>Äß>IJú>Ä|E>Ä3>ÄEâ>ÄGÚ>Ä)²>Äp>ÃõÌ>ÃÑ„>à¿>Ãob>ÃEý>ÃÄ>Âùò>ÂÒð>®t>‚°>ÂK#>Áø´>ÁÃð>Áå:>ÁÜý>Á¶Œ>Á‡>Á`->Á?š>Àò²>À¤F>ÀªA>À‚^>À>¿¶>¿¦­>¿aâ>¾íÝ>¾W´>½æ>½×É>½Õ>½ÙO>½è‹>½ã<>½Ó¥>½Ö >½ÝÆ>½Ól>½œ6>½G>½N¶>½Fg>½'>½W>½ ->½ñ>½6ä>½›¶>½€>½26>¼®°>¼†Š>¼Œò>¼¨ >¼w’>¹Ì>®ô >¥®d>¤õç>°ƒ×>¹©õ>ºæ>ºþè>»9¿>»æ†>¼>5>¼l>¼[²>»¹Ï>»‰]>»Œ°>»ŽÏ>».í>ºŽá>ºU'>ºk²>¹ß‰>¹ˆº>º0š>ºÓR>º_é>¹íb>º>+>ºMç>¹‰¡>¹êX>ºk>¹¿0>¹ >¸Ìp>¸H2>¸GØ>¸‚n>¸[>·ß%>·º‹>¸Z >¸˜µ>¸ÑÄ>º|>¹Áœ>¸°r>·‘”>·cÞ>·«B>·ŽÉ>·a6>¶ÿG>¶Áí>¶˜>¶aí>¶`¼>µî­>µÂ„>³IÑ>±÷ˆ>´u>´~,>´sö>´!>²Ý>²+>±àG>±(Ð>¯n…>«]ª>®x3>²j$>°U‡>°œ>³'Z>²á5>°l>¯>±qx>±þŠ>°aé>¯TO>¯K>®p8>¯ A>¯Îb>¯‰">¬„ü>­jC>¯wq>°g>°„/>°o->°?>>¯åÔ>°ƒ>°â¢>®§=>®UÖ>®·?>®x‘>¯êÃ>¯é\>­“G>«#¿>©Òè>©V®>«…H>¬->«÷>¬ïï>­]ý>®¤1>®>®6>®C¸>®=!>¬íû>«Õ7>¬M!>¬µ>¬‘x>¬Ú7>¬K‘>«U>©¬…>©<¯>ª›X>¬@>«õW>¨ª+>©V>©™Í>§E¥>¨ - >©A6>©t“>¨¹j>§Ø>¨9>¨ƒ>§—e>¨J\>©~>¨>¦ò>¦?>§V”>§¢]>§–‡>¦Æå>§LÊ>¨sg>¨uý>§Š>¦ê¸>§X>§ÁÜ>§‰4>§HT>§uu>§V^>§:>§4Á>¦È>¦Z>¦¢>¦^¢>¦ €>¦Í>¦mÈ>¦SN>¥ºù>¥ƒ¤>¥pÄ>¥W¤>¥Xª>¥c>¤²®>¤£Ü>¤°'>¤Žt>¤j<>¤1>¤v>£è‚>£Ía>£•Ž>£?‹>£>£`>¢ûŽ>¢ät>¢×r>¢·Å>¢­]>¢ >¢£>¢Tæ>¢¹>¡ôy>¡äÚ>¡°5>¡•%>¡„ª>¡iz>¡Gø>¡)>¡ä> Âý> |ò> y­> uÐ> ]Ä> B> —> ƒ>Ÿíà>ŸÑ(>Ÿ³T>ŸœŒ>Ÿ‚z>Ÿd\>Ÿ>ä>ŸI>žË/>žÀ2>ž¥Š>ž¦†>ž›>žuZ>ž_!>ž[>ž+V>Ïò>¾>±˜>½Û>˜b>am>œ¼x>œ!õ>œÚ>œßG>œ‘ª>›þx>œXñ>œ‰g>œ œ>›ž³>›»ò>š·r>šg—>›Š>›Ëa>›¢ä>›v>›fL>›CN>šÿ?>›M>›g>šýÒ>šèž>š£ª>šK8>š4E>™r€>˜Û>™2`>™ð&>™ðC>™pÜ>™+ü>˜È>˜Ý>˜‚P>˜Nf>˜ºW>™²>™«>˜7í>—•Q>—¿`>˜²^>˜5Ò>–ÑU>–ªÑ>—¡">—yõ>–úÊ>˜U|>˜i2>—w>–`>–¬Ì>•Ï>–°^>—\>–¬>•Úd>–ù,>–g>•×>•¯>–!\>–:ú>•è>”Îy>•ñ>”hç>”d>•Ï~>–¦©>–8 >•Ô.>“,Â>‘˜>’\ú>“c>”êi>–?»>”öy>“I«>’g´>®¼>ëÜ>“.Ô>”ù>•¡á>•™§>”tX>•ƒ>‘¸ð>Žb>.Š>Ç>“›>–«>–Eã>”àE>“~õ>‘ª>Œó>Š—>Šr>Œú> ó>’–†>”þX>–’+>–˜Ù>”>‘·>jñ>²>‰ùk>…\Ÿ>„Ü6>ˆþ>Œ¸>‡ a>”¹>Ža>—a¾>˜U>–ÒË>•ªr>’w>‚>ŽŽà>‰ïx>ƒxv>‚ÐÛ>‡ ™>‹Oš>Ž«?>’t>”°S>•a >•¹>” :>’Gý>’+A>“îH>“P÷>Ú>Ž>‹S˜>†‚>zC©>u³_>i>‰-˜>ÏÂ>,Ï>“Cê>•5»>–“@>–§þ>–Í>•RØ>”VÓ>”Cb>“àÙ>’ó‚>’nÄ>=¼>‹ok>‰>ƒ^K>v;Ž>jº¤>m=^>}>>… ·>Š$y>‹íž>Ž¼,>’eõ>“'=>’ìØ>“­>“Fà>’×>”¶Ë>“zi>“Ä™>”$>’¹„>‘E:>‰Ú>rp>d±>ŒQ>‰O>†>>5†>qE>czD>g·/>xE>„=Õ>‰fâ>–n>,H>è>‘ú>‘>5§>)S>u>’K¬>‘¿ >“Õ>”M3>’ãR>’Øð>”Ŧ>”Ë>“þÿ>”9->’P±>‘+Ð>}>Ž²>‚a>‹jŸ>ˆœ{>†ØØ>óÔ>qAÐ>]}ä>W­z>faÐ>yhL>ƒ: >‰^U>ŒûW>Ž?>Œõ>Š`À>‹jV>î—> >’Ö»>’3ƒ>ë>o‡>]&>Òg>‘`|>©c>’-‹>‘—>ç]>Žú‚>ŽÅ`>’Ó0>”'Ê>‘Ñ¢>‘®U>‘ŽÆ>–Q>ŽÙ¦>Ä!>Žê<>ŒûÍ>Œ-t>ŠÃk>ˆø6>†(ö>ƒ:>zþv>hLv>RÚ'>Q¼J>e‹7>y|M>‚ï>„Ó§>ˆá>Œ´0>#>Œžî>É©>µ#>ˆ‡>Žìœ>Œ™{>ð>­>Ê>‘o>Y>ŽÝú>¿>Ž$¡>Ž8Í>w)>•>Œ˜ý>ŒÚð>ŒÌ+>ŒÉŠ>ÂL>Œ$±>cc> ƒ>‹ë2>‡r'>‰¥>‰s&>‰"µ>‹!¦>‹¾>Šéb>‰þ(>‰Æ%>‰U>ˆs_>‡­d>†ËÇ>‡µâ>‡#>…>‚p@>9>tÖ4>gSî>Wƒ[>O‚>Yõ8>i‚˜>t÷…>|Âï>€°Ÿ>çÿ>ƒ­“>„Põ>…¢>…•ö>†>†0>†QÄ>†zE>†„T>†o>†y>†iÇ>†SÖ>†A›>†/Î>†&>…ÔÂ>…aÆ>…ª!>…¿7>…§D>…W>…xG>…+7>„9ô>„ka>„Ëÿ>„Ù@>„¤„>„“,>„¡7>„‹Ú>„pV>„SW>„7N>„>ƒþÎ>ƒàf>ƒÄo>ƒ§Â>ƒŠ>ƒiç>ƒEû>ƒ&>ƒ -Ù>‚ë*>‚ÈR>‚¤b>‚{m>‚T>‚,>ýŽ>ÍÄ>”±>OM>²>€¬">€i>}Ìö>|¥d>{69>xŸ(>tjš>nf>fÁt>\†q>OÁ >J‚&>T¿U>`-ÿ>hÏ^>oMï>sÿK>w.¯>y]£>zæR>{Ú§>|uk>|ÛŠ>}º>}AÕ>}, >}'>}->} >}|>} u>|ãÜ>|C>yø'>xîÒ>{XÍ>|‰>{ž>{—>{@à>zI>yÄ»>z‚ç>zÍ—>zUZ>yÆF>y:À>y¸>xõ >v.E>wÎu>y.µ>xÍó>x—í>x§Ž>x}ž>xÈ>vºŠ>w>w›È>wxa>w9>vPŽ>vï>v >vpa>ué²>tñ“>u~Ú>u­:>uzÑ>uAÎ>u‘>tÜå>t‘ª>tF>t5†>sø#>s~f>sg6>sFK>s/‘>s‰>rÈn>r}>rFº>qܲ>pÀÓ>oÌô>oÇ­>p->pÕ%>p\>o]M>oÊ®>oÞ>oŒ<>nï%>n|«>nCê>l°B>j¦Ê>kÁf>k•>hÄC>gÜc>fŸð>aÚI>\ƒ=>Z"®>S5ë>IZó><ãJ>8ž">CSÎ>N°>VV>\'>`…>aúÃ>awn>eº>g”ã>g»€>h+ÿ>hÍ6>hÝZ>f©>b4ç>c A>cX >fÉ^>hªt>ht´>hk»>hf.>hHS>h >góú>gÍP>g…[>gî>fÐ>gœ>f¤È>fgÝ>fiD>e±Ñ>ek†>e÷ò>eè¨>e³·>e}>eO>e)[>dûî>dÄ0>dsÛ>cîå>cœŸ>cç>cÅ>c°>cÓ>c3&>bí>bÖÜ>bʵ>bœº>biB>b@•>bç>aâ4>a­’>a‚U>aW>a"!>`êÜ>`ƨ>`Œâ>`#i>`Œ>_øë>_Û¬>_ª/>_q>>^èr>^ÕÓ>^Á@>]ùñ>^@Ì>^h>^<Ô>^ -è>]Tm>[R>\b£>\«$>Xèž>YâK>\G>\WÔ>\W¿>\-k>[ûW>[M>Zõo>[A>[2)>[%>ZÚÖ>ZŃ>Z’»>Z[J>Z&'>ZÛ>YÚ >Y«Þ>Y€“>YMù>YZ>Xko>WãC>Xa“>XaG>X6>Xx>W×.>W¨•>WrÑ>WÒ>V¾é>VÓw>V©¿>Vg’>V¾>Uä‹>UÁÛ>UŠ•>U]º>U³>TÆ>Ta©>T:í>TT>S6Ð>Q€Q>RV\>Rn>Q°ñ>Oïª>Nï>N>L‡ô>I×ù>F-Å>@Ï/>9}>/•Y>$°>&6³>1Èq>:~>@ì>>Eˆà>H·7>JÑè>L<->M.õ>MÉ\>N2'>NiÈ>N¤>N¯É>N½@>NµÒ>N¦ç>N•q>N‚¦>N^Ó>N5O>N*>N ¼>MÏè>M¥N>M.¡>M%T>MMi>M*œ>M:>LçÉ>L´ä>LPH>K«>KÔ¥>KŸo>K| >KW>H >H{î>K>K(>Jÿó>JÖk>J¬Ë>J€y>JEO>J n>Iúÿ>Iš‹>H¾x>Ix>IPd>I >Hø¤>HÑU>H™Ø>H„j>H`]>H#g>Gâg>G×A>G¶,>G‹°>Gc>G-±>G%>FÕ,>F±)>F–g>Fmw>FA!>Fj>Eð_>EÈ&>Ež^>EtÊ>EJ >E—>DñG>Dȸ>D‰9>D[Ë>DP°>D)ö>Cü>CÏÙ>C˜q>C#<>C&<>C-°>C -C>BáË>B¸Ó>B>>Beº>B=Ò>B>Aë`>AÀå>A™Ò>Aqë>AH;>A+>@ïÝ>@Áb>@ Ñ>@v¿>@*k>?¸Å>?—>?»X>?ŸM>?xv>?Hð>?4Ó>?+>>¿I>>Žö>>j8>>Ub>>?q>>8>=ìÊ>=™8>=%>=;7><Ð5><Êp><×><©:><W><è><’>;ù4>;Ç”>;ŠO>;P‘>;`>;ò>:ñW>:×>:€>:2¬>:+g>:o>:ê>9ë>9˜Ý>9ke>9a=>8øÞ>7ý#>8)™>8Á=>8­>8MB>8À>7ªÍ>7õ¡>7¨*>7Pp>7­>7:>7m²>7K]>7>6Ûd>6n§>6RG>6K3>69²>6: ->6l>5ç>5°³>5|˜>4ól>4ÜÀ>5b>5>4Úã>4­‹>4ŠÞ>4Sþ>4&I>4ô>3ñ >3Ë=>3¤ß>3}}>3UÃ>3->3š>2Êu>2«þ>2‰“>2]Ò>2 D>1«O>1³>1£c>1iØ>1: >1 X>0ÔA>0“í>0Q>>/úe>/¡w>/?Ë>.”8>,Ûf>,v}>+Ú®>*ñH>) é>&>*>"IÉ>Ú‰>M‹> -Šü> DÁ>«Ê>Bd> “ ->$aœ>'z>(È¿>)úh>*Ä_>+G—>+ˆÎ>+4~>+“º>,1>,0>,:>,Õ>+òV>+áE>+˲>+³¹>+š>+}>+C‰>*ÑÞ>*qà>*¥Š>*=>*<â>*–Û>*xL>)èº>)¹>*&>)ðý>)Ú>)¸ù>)`k>(Û >)1Ô>).Y>)U>(Úp>(Æ›>(£>(y>(]Q>(<ù>(6>'æE>'ʪ>'¯ô>'Š)>'`Z>'EŠ>'#7>'>&Ü.>&º–>&V>&lí>&R…>&.>&ê>%éï>%ǹ>%¤­>%H>%^>%92>%P>$õ>$ÐÐ>$°…>$i>$jØ>$F >$$_>$>#Þæ>#¸Õ>#˜Ñ>#v>#G÷>#&->#Ÿ>"ïƒ>"Ë;>"ž>"‚b>"e¬>"CÐ>"!>!ÿ>!ÜÆ>!¹ç>!—n>!v >!T(>!2>!÷> ìÌ> ÇÌ> ¨¾> †‰> cø> CÍ> "> >ÝÕ>Ž‘>h>…l>M>4¢>³>ï(>Íœ>®>}C>'6>1>'Þ>>äï>Âí>¢«>>_ >>’>9>ùô>Ðt>£>€¯>i%>T‚>0> µ>í¶>Ïã>­ >û>m>BÚ>µ>úL>êb>ȱ>¤ï>ü>c¡>=b>#U>3>ã?>Â5> >$>b6>BY>!É>i>àn>½È>ŸG>Ã>^H><>>÷ü>Ä4>œ²>ˆ›>qŠ>Vé><‡>f>ñÔ>Øm>»>œ±>|>\Ã>7ö>g>øž>Û>½õ>œq>al>5P>3Ô>>òÚ>ÓÕ>°Ž>m>o>@‚>9%>†>>ã>À]> >T¿>9Ì>@ß>Ý>ï×>Ö[>È>¨Í>…:>fØ>Aß>+æ>’>ð0>Ì£>­:>ÿ>rê>T/>0(> >ôâ>É©>²1>ˆA>y‘>^â>@>"M>¸>äñ>ÆL>§j>…º>g³>K3>+À> Ñ>ê6>Æç>²¦>•ù>wo>WL>9>°> ûÈ> Ôœ> ·d> Ÿâ> €R> ^@> *“> Ý1> ý> Øq> GY> xž> i~> I> [%> úI> -î#> -èò> Ó|> Äï> §?> ‰S> Nü> -Öì> Ô> V> -ïó> -Ó°> -·Þ> -œ|> -~‘> -Då> Ò¢> - -:> -&> é­> Í«> °!> Žb> q> O·> V>Ïw>ó>Û¤>Â,>¤v>…@>lg>Pë>4U>¥>ù;>Üü>¾É>™~>ƒ2>iR>L:>*ú> >ôÕ>׺>·Ý>œK>_>b¬>F >'8>¥>ë¿>û¯=ürâ=þgþ>”>^>A–>$8>üZ>ãö>Í¢>°Ò>“J>u¤>WZ>)µ> c>ûž>׃>º > Q>º>`Ä>@¸>œ>ú~>Öï>³ÿ>h>d!>7l>!>ѯ>•?>Gˆ=ÿÂ=ùð®=ü”‘=þN=üÞH=úFÇ=ö•O=ñac=ê:|=à%œ=ÏPñ=ÌA=Ý=ç‰==ó$¾=ô¤¶=øÝ=ûˆ=üB=üÃ=ý4K=ýw.=ý¦‚=ý¶Ø=ý·V=ý³6=ý’=ýx@=ý`y=ý5÷=ýÎ=üð¹=üÆ(=ü›`=üo?=ü?Å=ü¥=ûá=û¥)=û?=ú—È=úuŒ=úß/=ú·Ö=ú‚i=úP¢=ú=ùì=ù·€=ù›=ùA=ø¥ÿ=÷ë´=øjƒ=øs%=øI4=øê=÷æ=÷²=÷~=÷IÁ=÷=öà2=ö­e=öx¹=öB©=öí=õÛ®=õ§×=õrÒ=õ4=ô÷t=ôÔ=ô ã=ôo¬=ôw=щ=Ðë=нë=ÐmO=ϵn=Ðv=Ð =ÏßD=ϱG=Ïi=ÏEQ=Îg =Σ=ÎÌÃ=Îwô=ÎE=ÎMâ=Î$Q=Íø=Í˨=ÍŸv=ÍlÁ=Í8“=Í J=ÌÖ¬=̈K=ËÚ=ÌG/=Ì?N=Ëé‰=Ë…±=Ë£=˃q=ËcÈ=Ë7H=Ë æ=ÊàÏ=Ê´Å=Ê‹=Ê_ä=Ê4¿=Ê S=ÉÞ=ɲÑ=ɇˆ=ÉWó=È=È<2=ÈÒ=È®Õ=ȇ=È@l=È w=ȸ=Ç×o=Ǭl=Ç€î=ÇVa=Æ£á=Ĭü=Å¿Ê=ħ=Ź=ÆTÀ=Æ*=Åþ1=ÅÌ®=Å©ý=Å‚…=ÅHª=Å Ñ=ÅÈ=ÄÚ2=Ä«`=Äk=ÄIì=Ä0=Ä]=ÃÊÃ=Ã¥q=Ȳ=Ã^â=Ã59=à Y=Âà¯=³T=ÂŒ¢=ÂcÓ=Â9Z=©=Áæ¯=Á¶Ž=Á&=Á)6=Á?1=ÁÏ=ÀÔ{=ÀÀB=À–¹=ÀoÀ=ÀD}=À´=¿í±=¿Éò=¿¢²=¿xq=¿9Q=¿=¾óC=¾Õ'=¾¬{=¾yÜ=¾ ø=½®¹=½áð=½Ü=½¶³=½Ø=½e’=½<Ð=½/=¼ë±=¼Ã=¼šZ=¼q’=¼I?=¼!=»ø4=»Î…=»§Ä=»=»V/=»Š@ ÀÆ@ @ \ @ cô@ @ ½c@ Ó„@ É>@ £Ù@ n5@ 6Ã@ @øÊ@ùŽ@ ×@ ¯@éÉ@«6@G‹@ç.@Áw@ßB@f@#n@ü@Z@V@)@-@@þ@ö@ÀÓ@ŽÏ@o@bn@Zä@@³@úÒ@|è@؃@BÞ@ùB@?@|@‰@qò@´ @Ǹ@¿†@®c@m@Š¯@l@@7+@ëY@e@mº@m9@Ž+@²ô@Õ@¶Í@“ @lü@Qû@>å@%Ö@Í@ò‘@óØ@ß@ @ @÷V@؃@«W@dg@î[@G©@¨V@gk@¢|@p@+@Ñ@èd@äÇ@Õ@÷@®m@Š*@L×@ÿG@¼T@”‡@yV@L(@ùè@Œ'@'K@ò<@Ì@P@³_@íØ@Ô+@k`@õm@Ì×@ -@dv@‰â@qô@I @á@Ññ@K@É(@¦@âv@ ï@@è|@ÐA@ùp@PÙ@¥w@Ô7@ÜV@Ñy@Âú@²f@šY@wË@N@&ý@û@âƒ@Ç@¾¬@Ék@Õd@Óg@À£@š…@Ua@ç¾@iM@R@25@‰Ñ@Ìp@¾ò@iq@ @ì·@É@@óÐ@´ý@›Ü@À¸@ûë@í@Üó@eä@ÞÙ@“€@¥L@ëd@.l@_w@„²@œˆ@¢Ñ@˜@~@J@ëô@^+@¯¢@ø -@[Š@|@C@¸2@‡@QÛ@mö@…s@p.@!@e¤@ó@9¶@Ís@Ur@ˆ‹@]›@ß#@ @WÙ@êç@óP@(¸@O¶@†³@õ‚@}Û@ä(@î@"@ü€@ÝF@½¢@¥¹@™ž@–z@”,@ˆŒ@g@ @£Ð@ÿ@q,@"ì@ C@âÌ@¬|@¹X@0‘@Æ@@!¬@ ½@ü@y@-@1¯@%Î@ ž@ðV@ÖL@ÁY@¢ý@X=@¾9@ í6@ Uv@ ^+@ ê!@}Ê@¾@µ^@{’@8@ ý@ Õ€@ ›@ ²f@ ”j@ r¨@ c¿@ sw@ ›ú@ Æ*@ ×¹@ Ë@ ±„@ Ÿ\@ ¤@  E@ Š^@ OÒ@ @ ïV@ ü@ =@ 2ò@ 6¨@ &E@ g@ ï\@ Î@ ›¡@ ^[@ /@ /@ ת@ ‡@ YÒ@ } @ Ëe@ @ %¸@ 3°@ 7P@ /]@ k@ Î@ îl@ Ö¤@ Âç@ ±@ ¡A@ “c@ ˆ¿@ 5@ sµ@ d(@ L˜@ !ñ@ -×,@ -t¦@ -%ì@ -ì@ -:@ -^F@ -\Õ@ -Bv@ -4v@ -Cÿ@ -_³@ -o@ -jû@ -Y~@ -@±@ -!E@ úë@ Ó9@ ·@ ¯Þ@ ·Ç@ ¿e@ ½}@ ®´@ ô@ Z¢@ %­@ W@ ¹@ `@ (B@ (@ h@ F@÷.@Ö{@¶_@¡¦@™‘@“[@…7@q@_·@T@Jj@;@$„@ -Q@ó?@ãa@Øa@ÎE@Äw@»8@° @£@“r@ƒM@pE@S@%¾@çU@ªM@ˆ%@ˆK@š±@¬@²„@ªc@”ä@zƒ@fÜ@]“@W¼@Ny@@i@+@ â@à™@¾à@°Ÿ@®ž@¤·@‡!@]@@5@@G@ ‰@#3@;!@@¬@/o@›@²Ê@=@ÌÙ@¨¦@äW@Cg@‚§@”ý@Ñ@„`@u2@]l@7Õ@@Ê™@”<@`2@2Ë@#¨@A/@t˜@šK@¤=@”Ø@iÃ@@Å@L@žb@Ñ4@ï|@ÜL@¦@v½@o @‰ @¦1@±v@§÷@¸@g™@>d@(@˜@@ç¹@Á@©;@°¼@Çl@л@À@­0@é@—r@ø@€Œ@i÷@Mß@,Å@ o@üJ@üå@ã@ë@ùí@êÛ@Ú»@È -@­&@…Õ@XÏ@9ø@6Ý@BÅ@C @)L?ÿñþ?ÿˆ'?ÿJ‡?ÿW–?ÿK?ÿ»\?ÿÁ^?ÿ­6?ÿŒ•?ÿdI?ÿ7D?ÿ €?þïJ?þÚ7?þÁ?þ•?þJ¤?ýáP?ýme?ý?üþ ?ý'?ýbD?ýè?ý€?ýlo?ýQ‘?ý4q?ýé?üù×?üÑ4?ü’?ü=Í?ûòÊ?ûÓÓ?ûÚŒ?ûâ?ûÚ,?ûÇÿ?û°?ûŒ?ûJ(?úÎÝ?úW?ùª?ùä?ùÞq?ú??újì?úlò?ú\‹?úE0?ú*?ú —?ùéh?ùä?ù›ò?ùs/?ùHw?ù¯?øûÙ?øÞ ?ø½Y?ø˜Â?ømÚ?ø(è?÷¿¿?÷^`?÷Eœ?÷sÎ?÷§ ?÷±g?÷‘±?÷^°?÷+K?öù8?ö»?öo¬?ö-°?ö?õÛR?õ¦Ð?õa©?õ ?ô¼ý?ôX?ô‰ü?ô‰j?ôsU?ôJá?ô?ôÍ?ô†?ó÷Y?óÄ0?ótt?ó5 ?óñ?òë}?ò¼‚?òƒ›?ò:É?ñôý?ñß?ñöe?ñý+?ñÍ,?ñsI?ñ?ðƒ-?ð¡?ïä¸?ï÷Ø?ð6¥?ði?ðh=?ðMú?ðH?ðM;?ðE*?ð+ú?ïøM?醴?ïSs?ï!n?ï¾?ïÁ?îê.?î¯A?îlt?îC?íÅ™?íz¬?íAø?í-?í<^?íY?ípO?í|À?íz?í]l?í6î?í'?í'P?í÷?ìúú?ì¿à?슓?ìgÆ?ìEõ?ì&X?ëóº?놕?êòÍ?êoí?êy?ê9?ê†?ê*9?éú}?éÉ?éÔý?éøÓ?éÞ?é‡u?é]?éz‚?éhŸ?èõå?èƒÌ?è3¶?ç¯E?çB?æÂ?ç†?犨?ç¯?ç~€?çÏ?æžb?æn?å“é?äür?ä‹–?älõ?äŠï?ä 1?äz€?ä#?ãÉ?ãž$?ãÔ\?äeÐ?äâ -?äé~?ä›É?ä4 ?ãÉD?ãj?ã -“?â­¡?âˆÚ?â­Y?âçœ?âö?âĈ?â‡Z?âZ¾?âü?á¨=?áH?¸«?³R=?ºžT?Ëïi?â+ò?ù@÷@Z­@@Ê×@&J.@,û@0ñÇ@5ú@8@¶@:ó @=Gð@?é@@A@?ó`@?Š@= @9w@2n@)%@!¾,@ O‚@%l¹@->ß@3aè@6!Ã@5âº@3tÿ@/Ö@*)@$§Ž@Œ @]ù@ @¨@)?íÇu?ÖNm?ÁQ©?´0c?³`?¿Ò?Ó#?êaî@¼W@ c"@é@F½@$~}@*ž°@/Ôo@4ZB@8;J@;_£@=Ї@?²É@AKA@BÍ:@Cê"@D,¹@C¯â@Bí@B{ @CP8@E¾þ@H“^@JY…@J›„@IyZ@G^A@E¹»@F®@Gwj@GÏ9@EêÞ@B°Î@@V@@WB@A¡Ó@B&‡@Ac@@A@?€Z@>ð‹@=êö@<2§@:q@7Õ˜@4óÈ@1,U@,ƒ)@' “@ ª @`@ð@¤?ôå=?Ý•æ?Ç9s?¶Ii?°¡Œ?¸ô?Êîª?â"?ù‰"@é@5¬@§È@! Í@'Œz@-%@1m$@4ÿl@8Ç@;q@=ÅN@@ê@A«@B¸@C´µ@DæÍ@F&å@GQö@Hn8@IC @I“x@I£q@IÖE@J-D@JtÅ@JRã@I`Œ@G»@Ff@Eh@Dî@E^Ü@E‚=@D·®@CU @B_@A5L@A‰@AÝ@CŽƒ@EQˆ@EìÐ@D –@?Ôò@<{î@=bÀ@A¥€@E§ð@G´¼@HfÂ@H§o@HÐ<@Hñ@Hê‡@Hc@Gx)@FÍ0@F{~@F Ç@EiÍ@D²E@CÖt@B¶@Att@@h¢@?‹“@>i@<¹S@:§¶@8šŽ@6ÄF@4Ŭ@1ü@.-,@)†ª@$8`@Ù@—$@ Ø|@Ÿ±?õë)?à%?È¥,?´1X?¨÷½?ªðË?¹S‚?ÎÎÈ?å|ð?ú]`@™@Ëî@+±@¨í@"EÙ@'‚@*æp@."c@0Þ@33K@5/%@6Èi@7àÉ@8”­@9B&@:'J@;±@;·@<+r@<¸E@=4Ú@=ZX@=>«@=H£@=—§@=õà@>W‰@>œ@>|@>"Ú@=έ@=.ü@;çù@:©@7‚k@4-$@0–‘@.‹Y@/À@2–@5Èî@8@9™r@:i[@:©t@:¤Ð@:™]@:jX@9Ýx@8Ȭ@6­a@2Üô@,­”@#Âç@û!@ ™@Ý@)#@'ä˜@/eÜ@4 ò@6À=@7ú @8‚L@8»¼@8³µ@8¦Š@8ßš@9A­@9k÷@9"@8eŒ@7ÆŸ@7cÅ@6öò@6•&@6‡s@6£B@6“2@6C­@5êK@5Ö@5êv@5ÄE@5g®@5ò@4í@4æ;@4Ô@4­­@4…‘@4Uo@4 ¥@3›§@3+È@2Ï_@2s@2 d@1žÝ@1aP@1bñ@1,{@0ww@/“û@.ã2@.få@-̸@,Çu@+s@*…V@*…h@+ò@+[@*„@)¥ù@(¬;@'•Ð@&p#@%T¸@$D+@#!^@!¯@ªC@N@È@Ò+@:+@0@ -/€@{ø?ûÈ?ì¡Ñ?Û Z?ÇÝ?²t? &H?—?šì?©¸Å?½Ò?ÑE¥?âØó?ñ÷Œ?ÿE¿@¥R@ -áC@?Ô@ï]@ðÅ@KÔ@BÄ@ñü@6+@É›@'±@^V@ @È@Â<@ vƒ@!ü¶@"Hð@!‚v@ x@õá@£@oM@u}@­:@!Õ¤@#¿@$9V@$5@#ŒÄ@"Ü$@" $@ ¼]@†ö@ÿT@j{@Þ¯@Í1@IY@-@ƒ@!vÊ@"K~@"6ø@!à6@!…'@!:B@!Lt@!æ@"¦o@#¢@#@"̆@"ô@"i@!x`@!#@!1@!V³@!w@! ç@û]@Û2@x,@µ±@êŸ@ÚØ@õ@úþ@€\@ãÛ@ßó@£s@iP@?@()@–@ÛÉ@ªû@…@?!@û¨@Ûð@ž£@A‰@,‰@qä@©¢@ž&@l{@1¨@‡@@ @9@Ò@µÔ@ÌN@ׄ@·ó@¤J@±Ú@Èß@ÃØ@‚d@$B@÷9@øç@Äé@F@ÛR@°@¤ @ @²û@ÊÖ@´À@UW@ç @Ä@ÃE@œª@^=@/Ä@9¸@r@X@Q@ºˆ@'E@‚@Q@¤¸@Ô@ÏÃ@“$@<š@ès@§k@¨@È‹@™I@Ê@¿@@®t@ÇF@ð$@/î@>6@J@Õª@®Q@dM@~@ëh@C@Y™@ƒ@k@1Y@ÌÂ@†@†è@ʆ@Ï-@„‹@ ¡@Ñ\@Hx@5³@#t@ö3@¬Î@‚»@–@¼v@¸¤@tŸ@Ö@$ï@â @îb@Ýî@¬ @‡@r·@^_@[\@s×@]&@ì,@};@PM@7i@/@¾@öQ@ÝÎ@׳@ׯ@£Í@:P@ÆÑ@D@èx@õ}@,‹@MÌ@4ˆ@Ù(@qd@ ö@ –Õ@ @ hK@ Ë@ 4 @ -³P@ -[)@ þê@ hN@Ë@B…@ìÅ@žù@²@Ìg?û×?õ'‚?î^?æ?Üœ ?Ñ[Î?Äã?µè˜?¥?”?‡#O?ƒùŸ?Œãï?œë6?®J?½“Ð?Ê·?Õò¿?ßqB?ç‹ò?îN*?óõ?øå?ý£±@ž@×ò@x@F¸@ƒJ@gg@õ@pÐ@î†@ b8@ »¶@ új@ -S@ -~@ æL@ ñ†@ -]@ -¿@ -;æ@ -‚Ë@ -®È@ -¹!@ -Ì(@ -÷ @ Ž@ ý@ @ -€ë@ K@ @Eñ@×­@¯9?÷ÉG?òùR?ö£s?ÿ­Ò@D‡@:@£ž@ Ö@ .l@ iw@ »3@ õ2@ æÁ@ œˆ@ j¤@ lL@ Šý@ ²•@ ¦Õ@ Dþ@Åý@bZ@*ê@"G@@óê@©‚@+ @¤@aÙ@m‘@Ì@cA@Ã?@À’@@@S@-f@íõ@mö@û/@½@@t@%ì@ Û@›@äq@¢`@á’@åÜ@¥×@k7@X@®}@´_@Îß@õ2@I@¿˜@'š@Ä -@É+@Þ”@âì@ö@ k@Ó@F@åu@©¬@^Ý@É@äú@׬@|æ@Âú@$ï@–¹?þ¦®?ù;?ð–?ã‘K?×Ög?Ôyì?Ü®…?êKu?õ¸Î?ü¡×?ÿéÐ@"F?üø©?öõ?ðUh?ñt2?ø>\?þ @ÊX@å©@{Ì@<½@80@:H@A&@_¹@™2@³ @—¸@ƒí@“"@”@2Þ?ÿ~X?ÿ2š?ÿ[”?ÿgº?ÿ>?þœN?ý´I?ý]:?ýÅJ?þZ?þ|Á?þ;M?ýãs?ýR?ü¡º?üD?ý9b?ý“^?ý €?ûü?úÚ?ú2Ä?ú`?ùÿê?ùÎÜ?ùç¾?ù» -?ùù?øé0?ùIs?ùsä?ù"â?ø«¤?øP¦?øm?ø …?ød?øaï?÷¢½?öäÔ?öÓ§?öÅÐ?ö+;?õ¾?õ¿Y?õ@X?ôý?ó:y?óÑ?òÎZ?òHï?òT´?ó›?ó“Ó?óTŠ?òÕ‰?ó?óË©?ô8)?ó¾7?òø´?òªJ?ò™n?òC?ðëœ?ðXè?ðÖ?ñn´?ñs?ñ#ã?ð¡Ü?ð |?ï³ë?ïõ?ï;¡?ïÉ?ï`?î}?íR(?ì<?ìC?ì£?íp™?í‹Õ?ìå¶?ì_Ç?ìg?쯤?ìü¥?í0.?í0A?ìÒ~?ìTõ?ëöf?ëÞ˜?ì+ê?ìp?ìZñ?ì ö?ë¼ë?ëv?ëi?êþ?ê&y?ê ?ê›?ê=µ?êˆø?ê’³?êBÌ?éÌå?éó?èTÊ?çä×?ç®&?ç†{?çÓÑ?èˆi?èÆ{?èK¹?矽?æÍ?åëË?åËE?æ`…?æÞÍ?æâp?æŽ?æB ?æA8?æQÈ?æE?æJí?æ/¥?æ H?æ: -?æbH?æw;?æoÿ?åÌ?ääi?äfÞ?ä*Ã?ä"?äsl?äœ@?ä~„?ä[’?äX2?äfÁ?änM?ä?ä4†?ãv ?âíe?âßÿ?ãX?ã?âë'?â·ƒ?âÖá?ã -”?âß­?âGÄ?á¿ò?á«Š?áç¢?âT™?âÁÅ?âÎÃ?â€C?â.þ?áÔÄ?áW?᳑?áô^?á¶Q?á%ö?à²Ê?à|?àÛ?áÁk?â”?âËÔ?â>d?á˜ô?á.«?àº?à—º?à°+?à„–?à Å?ßuÎ?ß+ï?ßu?Þ×Ý?Þ—¦?ÞV?Üc1?Øži?ÔŠN?ÓçQ?ÖØ?Ùðq?Û³?܆,?Ü¿Ù?Ü£c?Üg?Ü7?Ü+p?ÜË?ÛÒÔ?ÛU’?Úµ’?Úg?ÚW«?Ú 7?ÙÒ ?ÙÄ«?Ù”ô?ÙO¥?Ùz?Ø?×ø"?×_~?Öñh?ÖÔ?Öÿî?×ë?ב?×â?×3å?×H?× ?Ö²k?ÖFr?ÕÜÌ?ÕmW?Õ ì?Ô•?Ô‹?ÓØÇ?Óµª?Ó´?Ò[?Ò&Š?ÒN?Òp?ÒZ®?Ò'V?Ò4L?ÒWß?ÑõÝ?ÑG?ÐB9?Ð2l?пr?Ñ_>?Ñž8?Ñj¥?Ðòi?л)?Ðœ•?ÐSt?Ï¿·?Ïå?Ϧ?ÏIt?ÏK‹?ÏG¯?ψ?ÏM?ÎtÐ?ÎFŠ?ÎøÏ?Ï]”?ÏO?Îam?ÍÈr?Í„¶?ÍÐ1?Í÷H?Íø?Í^y?ÍlÆ?͇ý?ÍÌÖ?ÍÙÏ?Íbô?Ìãï?Ì¡?ÌTù?Ëîô?Ë¡¿?ËÆ3?ËÙÛ?Ë “?ËgÐ?Ë -¸?Ê­?ÊK2?ʘ-?ÊõÝ?ʱÒ?Ê(z?Éçƒ?ÉšG?ÉÒ?Èqy?Çá†?ÇC¯?Æmv?Å·Ä?ÅWï?ÄÇp?øž?€?ÁA‹?¿Ñ"?¾ ï?»ç ?¹Ë?·ºP?µE#?±»Á?­š?§±Á?¡ñC?›r -?”"Ô?‹½ð?w?jx%?TD?KGÂ?U÷+?l’+?Ùã?‹Ÿt?“üH?›ƒ¡?¢.M?§˜Ï?«—±?®î?²—?´‘´?¶éJ?¹nz?»gl?¼ú?¾gÿ?¿\~?¿ùŽ?Àq?¿Ût?¿±u?Àl?ÀÌ?Á;¶?Á«'?Âb¨?Ââp?Ãl¯?ÃÖû?ÃÔÎ?æK?Ã)“?ÂØ*?Ã)9?ÃAG?Õ?Âî ?Ê?Ã-y?ÃME?ÃMÖ?Â?‚Á?Áƒ?Á8?Á×? m?ÁÄf?À7ë?¼Z?µ¯?®|j?«°¦?¯O?µ£R?ºÑ‘?¾ST?À@:?ÀÕ•?Áÿ?Á=8?Àñ?À¸?ÀØw?Àì‘?À¯ ?ÀS>?ÀXf?Àl?¿Vá?¿A?¿jg?¿¦Ÿ?¿ö?¿G?¿H?¿¬?¿,?¿ZX?¿iC?¾Ê…?¾$ß?½„_?½1}?½i†?½´!?½¹?½]â?¼ÚE?¼ƒØ?¼Iþ?»ö:?»‰Å?»x6?»?¯¶E?±ú³?³Qw?³‚«?³)þ?³X?²øÃ?²£·?²fÜ?²6?±’d?°¤~?¯Í²?¯Ú?¯å¨?°[?°£!?°aÅ?¯µ?­xâ?­U4?®N?¯84?®¤’?­#ƒ?«Ê?¬5Ÿ?®¤?¯K½?¯AØ?®M)?¬VD?ª.?©¶Ï?«tÜ?­/U?­Ñ?­¨C?­*?¬ÌÀ?­L™?­ç.?®Ú?­œÃ?¬Ü4?¬)?«’”?«kå?«Ÿæ?«é_?¬*?¬Ž?«­«?«d@?«“ ?¬š?¬>6?«˜Ž?ªð¶?ªÖÄ?«u?ªì.?ªŠÝ?ªo}?ª›.?ªCh?©’×?©‚?¨ñÕ?©Y@?©£—?©R+?¨ÿô?©B;?©Á¶?©Ïü?©œò?©(z?¨›R?¨C?§×0?§B_?§P@?§ò+?§äO?§$ ?§³?§§^?§|@?¦‚O?¥Ñ(?¦[K?§æ?¦‘´?¥}3?¤ÚÏ?¤Ú}?¤Ð•?¤ou?¤v[?¥?¥^à?¥]­?¥8w?¥?¤÷~?¤tn?£M&?¢«b?£"“?£¾)?¤…?£ÌÝ?£-Ú?£É?£Uì?£V?¢¹ ?¢#?¢b½?£ -?£8ú?¢Ôÿ?¢µ1?¢Ñ?¢“T?¡¿R? › ?ŸZ?ŸyÕ? Ô?¡H?¡ã´?¡ïÇ?¡„f?¡>? Öj? hz? 6ÿ? ,?ŸÒt?Ÿd¥?žôv?žÁl?ž×k?žÂ8?ž¸?žÍç?žéš?Ÿ&é?Ÿw?Ÿ?ŸŠ#?ŸT?ž€£?ð™?Û5?ð ?ž0õ?ž$+?ÚC?ÑN?©#?œÿ@?œ?–ž0?–q?–%§?–·,?—}²?—¼ß?—‡O?—G¿?—â?–S ?•‰‰?•`å?•‚Í?•´Ì?•ïí?•û}?•è?• ì?•M%?•Q,?•uß?•ˆÒ?•*ð?”r?“Ó~?“x?“Ûƒ?”dâ?”`?”@L?”Dv?”5)?”0?“Ý^?“&x?’ê5?“:Ï?“ªØ?“©½?“jz?“z¹?“wë?’ài?’ ò?‘O?‘3?‘@ô?‘^£?‘Mô?‘p­?‘ºÉ?‘õÕ?’ Ô?‘¤Ö?žÜ?Ó?­Y?¢?—î?üI?‘<Ô?‘E“?‘>¾?‘F?‘E¯?‘­?ˆ:?Ôc?/q?Žô$?i?Å€?Ó?ì?Q?!©?àe?”{?H´?Žøß?Žg‚?Ž©?ŽÊ?Þe?Ž%?ŽÏ?Nä? ª?Ž”Ò?Žˆ?Ž`,?Õ˜?—ø?×:?ŽN)?ŽV?Éä??b1?]˜?[ ?F?ah?€¨?Zx?Œâ&?ŒEÆ?‹Ð ?‹ÔC?Œ,×?Œ¨[?Œˆ$?‹ÇÌ?‹eË?‹g?‹éÞ?ŒŽ:?ŒÛ=?ŒUï?‹°?‹¬(?‹Žõ?‹$u?ŠÄ?ŠåÏ?‹BP?‹–Ç?‹™œ?‹’?ŠU?Šë?ŠE¶?ŠtM?Š?‰Âz?‰¾Ò?‰‹?‰]]?‰fž?‰jÍ?‰i‡?‰l:?‰e?‰R;?‰.R?‰a?ˆÆm?ˆJ³?ˆ©?ˆ6­?ˆ˜_?ˆ…«?ˆ(¼?‡ÕG?‡?†'ž?…Ñ?†)h?‡ ‹?ˆ??ˆl‘?ˆ2ö?‡–Ó?†»;?…í?…?~?…2?…Ý.?†WP?†.?…¸Å?…Œ ?…Kl?…Q?…eX?…„½?…šö?…e+?…6¸?…[Œ?…Xh?„ßC?„˜ ?„ÛZ?…•?„ÝP?„V3?„ ˆ?„ú?„/¡?„=¶?„(Ë?„e?„"?ƒìÿ?ƒ»k?ƒÙ¯?ƒí?ƒ¡¢?ƒc‡?ƒ‰??ƒÍ±?ƒÔÛ?ƒ?ƒ?\?ƒ=?ƒ -Q?ƒ,?ƒæ?‚ã¶?‚¬ú?‚’«?‚u½?‚H?‚"Á?‚°?‚¶?èº?£?j”?Sâ?B&?F+?pý?Zâù?Z`›?Zê?Yç•?ZG=?ZËM?ZÖ‹?ZÛ?YsÝ?YñC?Z­Ç?Zþn?Z¸?Yê×?YK$?Y`@?Yâu?Z6?Z{j?Zæ?Z߇?Z¨`?Z\W?YñÜ?Ye??YA?Yh?Y£[?Yžõ?YM$?XµÈ?Xbê?X`j?Xˆ¨?Xi±?W°ò?WJF?Ww—?We?W*Î?W -ú?Wæ?W:m?WŒÂ?VúR?VP¡?VE‚?Ušõ?Tã¿?TI?T?T´…?TÒt?U'Ø?U ?K\˜?Kòà?Kãg?KÌ?J¤Ê?GðÅ?F95?FÄl?Gÿ?Fy7?F´„?F¿?F¡ë?G¬k?HíÖ?HÞ?G>?EŠŽ?E†?Fª·?GJq?G|†?G§’?G;O?F¼?Dü¥?E(ø?EÔm?F7?Eäc?E*2?DÁ?CK?C‡±?D^d?Eô?E`1?E'ë?E#?EO:?Dµö?DE?D@f?D•?DC…?Cøä?C´Â?C~ª?CM2?C2ô?C3À?C3ý?Ck\?Co‡?Bâ_?BA?B\-?Bºl?CP?Bí^?B™?Bwµ?Aó¬?A á?A˜}?A@?A )?@ÕÖ?@S0?@OX?@wÊ?@0f??éN??ø??¼¡??¤n??ƒB?>ü˜?=Ò?=¥Z?>·§??]ø??jr??A“??7‚??6·??[?>ä·?>ý8??U??+??8??¸?>dŠ?=z¦?=@ý?=—/?=Ü}?=ÇÜ?=6d?é?; °?:Á]?:î›?;X?:¸?:¤D?:àÚ?:¿(?:va?:F?:A?9Óì?9¯ä?9gÖ?8äÍ?7ãˆ?7kË?8?8uô?7îˆ?70]?6ãk?7Hm?7›?78Ë?6ÙH?6™‚?6™?6Mk?58ä?3åb?3T5?3Ù?4Ûô?5cP?5'H?5 -±?5C?5®?5F?4³ ?4‚\?4¹Z?4Í?4t+?4TÔ?4< ?46?4 ž?3ÖC?3?3„X?3qÙ?3¤ð?3è^?3\-?2¡ì?2¦b?2Ø“?3Î?2Íé?2"…?1pi?1?0½Ã?0݆?1l?0fŸ?0Î?0;B?/èN?/Qú?/Ñ?/Fé?/O?.ãÙ?.Ó?.¼Á?.²?.ÂŒ?.ª?.¯!?. Ë?.?.¬y?.º?.Áf?..R?-tÄ?-n?-«Ý?-® ?-šD?-L?,0v?+œm?+¶ü?, I?,2?,??,•?,Yv?+µ?+†ù?+c ?+±?*Æ÷?*!?)Œl?)e!?)©¯?)Ñ™?)ãî?)Fð?&(R? &¢?>¡?EÄ?!)?"€?"üz?$rÊ?%Ó*?&F5?%ée?% ‚?$‚ã?$´?$—À?$µÜ?$M¥?$Íe?%?$‡?$œÿ?$5?$Ïò?%L ?%Á?%¦û?&A8?%Ÿ†?%L?%œe?%‘ -?%UÍ?%v>?%a?%¢ï?%x -?%P^?%,ô?$ï8?$#™?#|F?#îˆ?$f/?$†à?$fÞ?$#[?#°A?"?ùâ?tÁ?®ê?"Ò?#m„?#^Ï?#€+?#’ñ?#Zó?#?# @?#- ?#fJ?#wž?"Ýy?!éq? 1à?l/?E? gÒ?!Φ?"8¼?" A?!²?!w ?! D?!Æ?!,?!\?!]?!¸ö?!Éá?!±/?!>ì? •x? Mí? Hq?*?Ýö?B«?c®?èà?üŽ? 6Ò? [1? *_? T?ß^?…¼?A?LÎ?S?Xö?P?ƒù?TÞ? -~?Ÿh?¦Å?ºñ?¦“?¿p?¹?;Û?üÞ?ð?ˆƒ? n?8?M“?2"?¿†?O=?Z??pR?œp?X?Q7?L5?…?7Œ?Ù?¡Û?†7?¬‹?og?»Ò?Òn?ð¦?Ž ?Ù?‘?{N?X=?èÂ?%…?¾F?%£?û‚?éÒ?öe?ß?Ê?Å?B–?ñ?@7?j!?0Æ?]]?É‚?›ô?WW?Û)?d?1x?. ? ¢?l¤?Á¯?,? ²?Êl?"ð? ?©?b–?]»?‰ü? R?TË?ú?? bÛ? °(? ›? ÍÞ?"5?iš?í´>ü—a>ó_/>ç`‘>ÖŽõ>Áó>µÆh>Às¬>ÕüÈ>ç_8>óL†>ûþ?]Œ?V/?[ö?W£?ƒ? -:? Z9? ØT? Ñø?j?z ?é®?§Ž?/Ý?}Ï?¨i?`Á?´e?„Z?8?pø?£?Ç‹?±7?³:??P ?•?(„?7?ôí?ÆŒ?‚?gˆ?Ô?X­?Þú?Ê}?Õ?9’??q?éÜ?ÔQ?¡¶?œ\?¶¹?I¯? “D? vI? ÷æ?:þ? Ù? Çë? ‹*? .L? ø? 2^? (º? íû? Ï? å.? ÊJ? l? \? !? ©? -§×?¨t?ïÑ?Ð ?öÍ? -? Gú? C•? 8? f? `¥? 2þ? ¨? -¶º? -s’? -Uø? -þ? ím? -û? -W¥? -uc? -Sä? -ø? ë­? ç¥? ùÄ?  Y?ùF?’ä?›¤?¥ï?ß?ß?¦µ?!Ç?Ì¥?‰”?ú,?PB?&?ó¿?¢ê?I|?U€?{p?ŽÇ?{»?ö?µ+?Ö?Ø_?‡¢?a7?_ƒ?,A?ï?úw?í?ù(?¶s?‡¤?ÁB?ùb?Ó_?s¬?g¦?l?E?9—?Rÿñ4>ÿÌ>ÿ¶ž>ÿû>ÿhÂ>ÿ?Ö>ÿ3>þãç>þ·C>þÛ>þcè>þ@J>þ×>ýôï>ýʲ>ý ^>ýtK>ýG.>ýì>üê.>ü¹»>ütÜ>üØ>ûä>ûÆò>û¥ >û—>ûU¯>û,¢>û!>úÕ1>ú˜µ>úDF>ú‘>úÒ>ùöi>ù´÷>ù†Í>ùkÝ>ùKc>ù-ß>ù 0>øß¿>ø¶h>ø‹Ô>ø_É>ø4ÿ>ø>÷í>÷È>÷Ÿ%>÷if>÷4>÷Ê>öð¡>öË>ö‘>öY>ö/$>õëõ>õ­v>õ§Ë>õS >ôÌ?>ô¥Ç>ôËÏ>ô©=>ô"¶>óÁë>ó˜>óÙ>óPù>óƒ]>óoÙ>ókb>ó€Ó>ón¨>ó3>ò4>ò|I>ò‹ã>ò´Â>òÇ7>ò@­>ò.=>ò“>ñË>ñȃ>ñÀ£>ñwè>ñiž>ñ“>ðâì>ðȈ>ðG’>ïÛñ>節>ð"¤>ðjd>ïïî>ï ù>îW3>îhª>ï>ï²W>ïñ>ïT>îˆõ>îr>îxa>ïð>îÂz>î9ý>î ->íÏ>í Ø>ìvì>ì:á>ë6>éä†>æà >à“>Þ³X>äøÝ>ê{¢>ëž2>ëB´>ë(>ê–Õ>é·Ÿ>èÿÍ>éš}>êsæ>ê°ß>êhŒ>ê‹>ép»>éyí>é]->é$M>éa>éP>è©v>èÛ>èï>èIi>è ¬>çvp>çmX>ç^Â>ç#¿>çC¿>ç^y>æù+>ægº>æ;¼>憕>æ?H>æŸ>æŸ>å—Ž>å1^>å,¢>åV>äÁr>ä–b>äY–>ä:>ä8>ãÕÂ>ã¨T>ジ>ãRj>ã'†>ã}>âÖÖ>â 7>âV®>â4>â# >â¤>áÝ’>á¶K>áÍ>ál®>áIc>á%ø>áf>ààe>à¿\>àœc>à{Z>àX¬>à2Y>à î>ßäN>ßÆE>ß>ß>r>ÞÆ>Þ`‰>Þ$>Ýæ>Ý®s>Ýy¿>ÝF‰>Ýâ>ÜãU>Ü°’>Ü}³>ÜR>Ü%¯>Ûùé>ÛÍG>Û >Ûs>ÛD6>ÛP>Úö>Úáü>ÚÒH>Ú³¬>Ú®>ÚW>Ú4D>Ùüº>ÙáC>ÙØ\>Ù¸ý>Ù“”>Ùkè>ÙB>Ù%>Øï'>ØÃ8>Ø­>ØZÈ>Ø7‰>Ø>×í>×Ã>×—>×k^>×B >×ú>Öùõ>ÖÓl>Ö¬B>Öú>ÖU¢>Ö%>Õ´­>ÔÑÀ>Ôä’>Õ_™>ÕQ’>Õo>Ôñ^>Ôͱ>Ô¢‹>Ôr>ÔBG>Ô´>Óè>>Ó°—>Ós>Ó1Ì>ÒÑ>Ò9>Ñ\>Є_>Ð0h>Ð>Ïí>ÏÍÁ>Ï«ù>ÏŒ…>Ïtõ>Ï\Ù>ÏB:>Ï&Ò>Ï 7>Îñd>ÎÓì>ζY>Λê>Î>ÎcÈ>ÎHA>Î,™>Îå>ÍðU>ÍÓQ>͹>Í S>Í„™>Ío\>ÍaÅ>Í;k>Í'ö>ͱ>ÌöÅ>ÌíN>Ìä³>Ì©o>Ì[>Ì“>Ìs–>Ì8o>Ì3,>Ì„>Ëß>Ì>Ëís>˲D>ËÁ>ËÔ|>ËYÁ>Ë’>Ë‘D>ÌWÍ>Ìí>Ë9µ>Ë">ÊýÐ>Êe>Ê Í>Ê&>ʃ>ÉO–>É#G>ÉZµ>É&}>ÉF´>É0>ÈŒˆ>ÈÄo>Èà>Ȫ½>É™>É!W>Éc>Éi>É°>Èù$>ÈCÙ>È)¡>ÈD>È:¿>È’O>Èn¸>È3™>Èsw>Èe‘>È è>È‘G>È >Ç u>ÇßÆ>Çá>Ç›u>ÆÐõ>Æp>ÆÒU>ÇFû>Ç6í>ÇGP>Ç >ƾ9>Ƹœ>ÆžY>ÆUJ>Æ'i>ÆPN>Åé>ÅÙÀ>Æ’>ÆÝ>ÅÑÙ>ÅÑ«>Å÷™>ÅÈN>ÅÀ>ÅÁC>ÅÓÃ>Å™´>Å`\>Å$µ>Å0>Äþ”>Äø…>ÄôW>Ä´u>ÄjÑ>Ä>Ãôv>ÃÖÁ>Ãæ >Ãöh>Ãß >×´>ÃU±>ÃY>Ã^v>ÃEA>ÃÒ>Âï>Âè¤>Âð,>ÂÛ>ÂÃü>¯>‘>€2>ÂpÐ>ÂTi>€>Á¦ >ÁJÔ>ÀúH>À»ï>À†o>ÀTO>À!¯>¿í¼>¿½h>¿ŽË>¿a>¿=ù>¿|>¾û/>¾ÕÀ>¾²â>¾”t>¾vÁ>¾W9>¾4±>¾ƒ>½í÷>½Ío>½®™>½Žj>½l™>½J>½#—>¼ñ¼>¼²>¼qJ>¼9a>¼ 0>»ßc>»Á>»®¿>»“»>»vý>»Z.>»<¦>»á>ºþù>ºáG>ºÃ4>º£ >º„}>ºfÏ>ºGë>º'<>º†>¹ì>¹Ìÿ>¹«ˆ>¹ˆs>¹d›>¹>>¹Ä>¸þN>¸âñ>¸À>¸žv>¸{ç>¸Y>¸6¥>¸f>·ìÔ>·Åº>· »>·|ú>·\ >·;C>·9>¶ì>¶ÃZ>¶¬G>¶î>¶p>¶Mì>¶+e>¶ -å>µåb>µÀI>µ§º>µƒ^>µHç>µ§>µ å>´ô<>´âñ>´âÆ>´Øj>´¹÷>´ƒ>´nº>´W×>´8¼>´r>³Û#>³¼&>³®>³‰¢>³z2>³iÿ>³Tê>³ n>²æÎ>²ñ>>²Û >² Å>²>á>±õë>±ço>±ï>±÷H>±§>±|ç>±3>¯í*>¬1R>¨-#>§IG>ª},>®EÅ>¯Ï#>°UO>°Xs>°>¯æÈ>¯×þ>°]>¯µ>¯×Œ>¯<>®þª>®ê>¯a>¯ >®»U>®nŠ>®M>®Eî>®ù>­òp>­_‚>­2>­’r>­]]>­ ->­bÛ>¬ùU>¬u>¬L>¬­¸>¬i>«êJ>«¦[>«uõ>«$í>«@‚>«v >«H@>ªÆq>ª£^>ª¡d>ª¡±>ª›ò>ªÖ­>ªˆ¢>ªDâ>©J >¨Å>§V{>§Óc>¨!‡>¨ƒí>¨è5>§Sç>¥aÐ>§>§_Þ>§æÊ>¨U>§@¦>¦X®>¦QÁ>¥#_>£>Ÿ×V> >¤ôü>¥r’>£ðð>¥Óù>§d>¦À>¤wy>¥å>¦g>¤ÉL>£x >£œ>£/'>£Á >£Ÿ>¤< >£Nž>¢L=>¤\}>¥B>¥ þ>¤ß©>¥:>¤Ùô>¤r‚>¤âü>¤ Z>£cY>£Zx>£S~>¤˜ò>¥)P>¤8‰>¡§³>ŸÜ—>ž}þ>ŸÃ€>¢0…>¡¤.> ø¦>¡€>¢¬Ö>£/;>¤<þ>¤Œ¹>£p™>¢1g> ûê>¡ïò>¢T>¢%>¡ª¸>¡m>¡"Z> I>Ÿ' >Ÿ€º>¡zæ>¡&Q>Ÿ>žš> „®>žì±>žU,> J–> z> 4Ï>žÊÕ>ž>žpw>žÐ´>ž~R>Ÿš–>ŸTœ> ÷>é>–>û >óB>^«>Ÿ&>žŠÖ>žg>žò>=¬>L7>t¤>œê‰>œ¤;>œµ¬>¿>iã>„]>->œÈ$>œ¡Î>œL>œô>œ N>›ú>›¾ì>›jÿ>›Mé>›x>›f¬>›" >šðB>šÒƒ>š¯>š«>šzÝ>šb˜>šC^>š Ê>™þt>™às>™Âˆ>™ŸÉ>™„ã>™jY>™Pé>™;ò>™'‰>™0>˜ôë>˜ÞÌ>˜Ç>˜®q>˜”7>˜xt>˜Wk>˜4n>˜ô>˜A>—é >—̪>—¯9>—“N>—v¥>—Tú>—3Î>—Ð>—Þ>–åÞ>–Å]>–¦½>–Ž?>–sF>–W»>–AÑ>–'‡>–3>•å»>•Ã]>• Ž>•†>•i§>•T|>•9=>•>”ý7>”ê+>”Í¿>”§³>”’á>”€>”cJ>”@,>”X>“Î|>“‘>“£ä>“¦ˆ>“‚l>“Os>“J/>“;d>“X>’ÖÇ>’À)>’Ix>’º>’_H>’^ >’@2>’%>’ {>‘õš>‘Æu>‘”J>‘˜«>‘Ï>‘†M>‘}÷>‘@I>‘@®>‘M>‘+‰>Ä‹>Æó>‘ ó>É›>Œ4>ž>¨è>ˆx>51>ãÐ>¯.>þR> ª>àÎ>øº>Þ%>>ŽáF>_î>¢Ó>»">}>Ž×^>&‹>ŽÓï>Ž2>¿>p%>þ‰>Žþ>˜º>Ë>nc>Ö~>ŽX>ŽA.>„®>Œ™®>Œœâ>ŒÜR>ŒZã>ŒÍ>Œ5 >ŒV¦>Œ*4>Œº>Œùv>Œv>ŒO>Œ+ô>‹Ìè>‹ )>Šÿá>Šà->‹– >Œ™->‹ù >Š£>‰ã–>‰}9>‰‘À>‰Ù¸>‹u‘>‹á]>‹~ù>ŠYY>‡;«>†œÖ>‡”>ˆ †>ˆNÁ>†›ú>„ªü>ƒÁÅ>ƒ‘>†GÎ>‡3>…•É>…>>†‰>ˆù”>‰$Ã>ˆF ->†è§>…°f>…2M>…ÊV>…º8>„E[>„ÁŒ>…<>ƒÀ!>€Â]>„%>‚>„„)>…>…åŒ>†ö>…S™>ƒƒL>ƒk2>ƒ”Ï>ƒL>ƒ¼F>„œ>„¾÷>…€>„ã˜>„.ï>„-6>…>…-;>„kR>ƒ©>ƒ»2>ƒo{>‚Ži>[J>€Þ >»D>~™X>Ìí>€P%>€]°>€µi>€Æy>Í>ƒ>'>ƒÅ->ƒ>N>ƒU>ƒd¶>ƒÝÝ>ƒöª>ƒi,>‚Ý>‚6è>€˜a>}½¬>zÚµ>vʇ>u6>s%M>tŽ>wGC>z+h>|é†>~:Ò>€à>€ãñ>œ‘>‚Š—>ƒŒ5>ƒˆ%>ƒ33>ƒ_>‚>ï>êT>û¶>‚‚ª>Ã>€X ->Fê>}Êm>z™>uÃ+>qìð>oe#>lôó>j@ ->ix)>l“_>q¹+>upŸ>w‚h>z˜>|Ì>ZP>€ >ì>‚xÑ>ƒ0M>ƒ–â>„ t>ƒÅN>ƒ»>ƒ>*>‚ì>‚çn>‚q´>‚>>~öû>~uÈ>|› >zoÇ>w‘Þ>t®l>q‚Æ>mÅ>g–Ð>aÒ±>]kœ>\ >>_¦Ã>cp”>hµ>mHc>rgÍ>uÏD>vðk>xhP>|¢>~wÑ>\ý>€ù>Œž>‚QA>‚I¹>‚0T>‚•ø>‚í)>‚õö>ƒ8ž>ƒ`Ø>ƒXª>ƒgì>ƒç>‚§>‚,>€ÉQ>€p[>€[>~ö>{ZL>yÚ>vêÜ>sÙ™>qeì>mÜ>ic!>cýb>_#´>Yq<>Q¾S>M#ø>Lës>R(;>X´¾>^¸|>cÖ>fKª>iõ¢>n/>qÇŽ>s™>u7>wÈ&>xÒÙ>yHN>ydä>z°œ>}ÿ>}Žx>}Ê>~$Ó>~6>~q9>~*>~®j>}û’>|çÝ>|þ8>}¸¹>|ãª>{n>z¨>zd>{M×>zO>v±´>w¥ê>y·ã>yÆ&>wnP>t–Q>qá/>oë›>nŠû>m»F>kŠÁ>hPŠ>eF.>aç>>]Î >X€­>Råñ>Mv¨>E¯$>=Xô>6O›>3/9>7×>>ð‰>F‹>Lªm>RB®>W*n>Z}W>\ƪ>_ú>bœ9>dD>e >fhÇ>g#í>g’ß>gß‚>hÀ>h7Þ>hkp>h›s>h¾·>hÔ×>h¹ˆ>h|(>h½>hÙ=>hÌ´>h¸[>h q>hf>gº„>g͉>hP>gûâ>gÊQ>g s>g{>gNq>g‰>fé >f³¥>f}d>fC(>fÜ>eÆ&>e‚â>e;±>dïU>dœc>dF„>cë®>c‡‚>cT>bŸ->be>a}>`С>`Ÿ>_#>^„>\Í«>[Gb>Yv¯>WAG>T’Ó>QV ->Ms>HÒÐ>C^ù>=Ê>5ªÝ>-)@>#º> ¡>'@T>0 >7¬f>>->C»Y>Hk>LU>O‘{>R1[>TM}>Uý˜>WTñ>Xbâ>Y/á>YÐk>ZU->Z¹…>[…>[IT>[qò>[nt>[ Ê>[D%>[«Ý>[§þ>[”Ý>[ŒT>[mã>[$Ü>Zñï>[G>[!»>[¥>ZÓ~>Zy?>Zw>Z.>YŒ>Y™Ä>Z¶>Y×ó>Y°X>Y—j>Yoù>Y2R>X±³>X´>XÀP>X˜È>Xhÿ>X ì>WÚI>Wßþ>W¸a>WqÈ>W @>W,>Vý¯>VÍž>VšÔ>Vj>V9>Vò>UÐ>UœÎ>Ubå>UY>TëŒ>T·W>T6>TE%>T»>SÃ[>Szy>S,§>R±>R >QÕÂ>Q½¡>Q|¸>Q²>P[U>P[>O‡R>Nß >NÈ>M-Œ>L71>JÆ‘>H÷ï>G­Ù>EÇØ>C;G>@Ë>6÷æ>15¶>,wÕ>%¼»>±Ë>§,>¼¡>)¿>!uô>({­>.“´>3Σ>7™±>:;¼>>{ä>AV>C1ð>D¿">F º>Fùv>FÓÃ>E| ->F"">FRe>Hi§>I¯3>IÙ >Iü>J>J ‰>J!>J ÿ>J—>JS>Iø>Iãx>IÙK>I²þ>I–Î>I>IjC>IBè>I8•>Ié>HýÞ>HÜ­>H¸„>H–q>Ht>HO>H"ð>Gì>GÀK>G¶Ò>G•ï>GqÖ>GJ^>G'>FéÂ>FÏP>F¯*>FŠÁ>Fcj>F<{>F >Eìf>EÃI>EœÅ>EuÔ>ELç>E#¬>Dü>DÓ;>D¤Î>D|Š>DVT>D1Œ>D±>CÜÚ>CšZ>Cy>CVa>Bý.>Bøù>Bêº>B¤>B˜q>B;>Ab€>A·¤>AÀè>@yÈ>@¬z>AT=>A=Ï>A>@öß>@Ì—>@€Ä>@K,>@B…>@g>?óE>?ÉD>?¤8>?x>?K´>?ß>>ô!>>ǘ>>š}>>m¥>>?Õ>> ¦>=Þ>=®@>=L>=Q >=¤><ëÀ><·d><‚><È>;ÄE>;•¶>;Vq>;>:À¢>:rO>:"”>9È!>9j >9%>8†>7ù—>7fç>6À3>5ùI>5>3øÎ>2­G>1æ>/<>,ïÙ>*#»>&¼{>"¤™>̾>~>•t> Ô†>§Æ>$ã> w<>~>vJ>—Ì>!ë´>%~½>(g¼>*ÀY>, ]>.‚>/K>0;N>0ý;>1“ë>2 ð>2eÉ>2«Ù>2â¢>3Q>3#ä>3=I>3C³>3?û>3>}>312>35«>30£>3 >3°>2þè>2æß>2Àˆ>2€œ>2€æ>2ƒA>2hÖ>2#˜>0Ë'>0î>1Úé>1Ój>1³þ>1”>1s˜>1R,>1->1 á>0í3>0¼¨>0[Ì>0Zð>0b>0A©>0B>/ú>/Óí>/¶ >/“,>/j¨>/B4>/%ë>/ñ>.áø>.¾Ô>.—0>.u">.Pá>.-w>. –>-êN>-Æ”>-¢Ø>->-[+>-7r>->,ïy>,ÈÉ>,£m>,‚9>,[Û>,7E>,>+ô¥>+Ï:>+©t>+„Ç>+XQ>+:°>+Œ>*ú>*Öa>*²¤>*Žj>*j˜>*Gh>*#¹>)ÿþ>)Üb>)¸·>)”ç>)q>)L>))>)Â>(á*>(¾È>(•Ê>(d>(AN>(*è>( ó>'èg>'Ã[>'¢³>'}‚>'RÕ>'+ª>' T>&î­>&Í’>&«¯>&…ž>&X#>&#Ø>&s>%áC>%Æ@>%¬†>%‰>%aæ>%1>%y>$ýj>$Ü>$¸>$ù>$i±>$Eg>$&r>$\>#ä >#½B>#(>#q)>#PP>#7®>#L>"çÂ>"Äã>"¦>"s >"©>"V>"¢>!ùq>!Ëq>!«K>!‹[>!n¦>!!Ó>!> ã|> Àè> Ÿn> {> SÜ> ý>ý>Û>¿†>¥<>€Ë>Z×>3Ä> ¦>Ô­>±~> Ý>}>Uç>.°>3>Þp>µŽ>·>ee>;b>å>ãÚ>¶>†v>U >ö>ìý>¶}>{{>7h>Ý*>ª>g6>F>µ;>L‰>Õ>L¿>¯t>ö·>> Ñ>ïÍ>Ç>Â_>¦7> J> u>WE>ù[=÷¯Þ=ëT]=ÛÓ=Ú -7=èÑ]=õ'=þæ…>Ÿ>> øH> Pc>6T>½3>óS>Þ>©Ç>O‰>ËJ>,>wy>±¾>Ýû>þ¬>Æ>&ó>(Ï># >n> á>©>î»>è'>ü†>ë>ÁÓ>¦v>¬ë>šo>…²>o>W–>?>%£> ²>îž>Ò>»]> >‚w>h¦>Mt>/>ð>ö¦>Ûž>½†>õ>„!>gÛ>J]>+3>>îÒ>Ñ6>·>™>z`>]p>@F>"¨>×>ç>É+>«R>_>ow>Q½>3Ñ>¹>÷±>Ùç>»á>´>~¨>aŽ>D*>#Ñ>¢>êh>ÌÂ>®Ï>%>r°>U0>7>O> û‹> ÝÅ> ¿û> ¢ > „U> fŸ> HÐ> +> }> ïE> Ñf> ´k> –Î> y> [•> =ý> ]> ß> åK> Ǥ> ª7> Œá> od> Qk> 4 > ô> -õ²> -Ë–> -¸Œ> -¡U> -„A> -f÷> -I¬> -,y> -H> ñÁ> Ô;> ·Š> šl> {2> ZÊ> <¥> "> $>ë<>̳>¯ ->”÷>xF>[Y>>>;>øë>ã >Êæ>®A>­>qg>Vl>7(>X>>åq>ÈÓ>¬L>Æ>s4>VÂ>:J>±>8>ää>È^>«ç>›>sB>VÁ>8þ>l>õA>ÜX>ÅD>¬s>‘2>t³>W`><> ³>©>è±>Ì’>¯>“;>wR>\>@ù>$–>ÿŸ>à6>ÎÎ>°Ÿ>˜Î>|°>` >D‰>%Ì>’>ñr>Ö´>¼o> N>‚ß>h$>@'>&'>å>÷Ë>Ûw>Á>©I>ù>qv>VÆ>;w> Ú>¿=ÿÔ¦=ÿšR=ÿbw=ÿ0Õ=þû,=þÃs=þ„}=þTÎ=þ!–=ýèß=ý±Á=ýq•=ýFÃ=ýg=üÜè=ü¨=ürZ=ü<–=ü=ûÑ=û›È=ûcl=û*¿=úø£=úÃt=úŽ¯=úW©=ú$P=ùí¯=ù¸ß=ùƒ¾=ùO4=ùŒ=øä==ø«]=øuó=øDI=ø á=÷×Ñ=÷¦=÷qñ=÷=D=öþÅ=öƒ=ö‚=öIe=õQ =õK×=õ›Ñ=ôŒV=ôm,=õ l=ôùã=ôÄÍ=ôƒ=ôJ0=óÜv=óà‡=ó¼=óˆ,=óU§=ó"=òî‚=ò¹–=òq%=òð=ò q=ñé=ñµ?=ñj=ñMY=ñæ=ðãš=ðª†=ðeñ=ð!=ð=ïÞú=ï¬5=ïxÏ=ïDY=ï=îÜC=î¨=îsÞ=î@=î î=íÖH=íœk=ílÕ=í:£=íû=ìÐó=ìœY=ìh=ì3W=ëþN=ëÈ1=ë‘=ë]Ø=ë(›=êò?=ê»'=ê‚e=é¼=ãPž=㕱=é=Ù$Œ=Øú˜=ØЃ=Ø¥õ=Ø{e=ØPq=Ø%Q=×ú=×έ=×£=×w‰=×KÆ=×æ=ÖóÔ=ÖÅF=Ö—=Ön¨=ÖC=Ö*=Õêù=Õ¾=Õ’(=Õeg=Õ9 =Õ Ï=Ôà}=Ô³v=Ô}·=ÔS =Ô-e=ÔH=ÓÔe=Ó¨¶=Ó|g=ÓNo=Ó!©=Òöœ=ÒÊ9=Òÿ=ÒqÃ=ÒET=ÒÙ=Ñê…=Ѻ]=Ñ’Ü=Ñg_=Ñ:ÿ=Ñ I=ÐÞŠ=в =Ј<=Ð[‰=Ð/B=Ð6=ÏØÞ=Ï©j=Ï~ =ÏTE=Ï(¼=ÎüÌ=ÎÐÍ=Τ¼=ÎxU=ÎL´=Î Í=Íõ0=ÍÈÎ=Í›Ç=Íq‘=ÍF=Í!=ÌîX=ÌÃ=Ì–Ü=Ìi¥=Ì;g=Ì$=Ëá =Ëã=ˉÍ=Ëf/=Ë:¥=Ë Ê=Êäx=ʹ©=ÊŽm=Êc:=Ê8=Ê {=Èæ‘=Æ´•=É=ÉIZ=ÈÔ«=È}T=ÈŒÛ=È=Èqñ=È\L=È'(=È)=ÇÜ"=dzÈ=Lj•=Ç\™=Ç2=ÆÖµ=Æšû=Æ°=Ƈ€=Æ_R=Æ5P=Æ -¯=Åà„=Ŷi=ÅŒ=Å_¯=Å3=Å #=Äãh=ĸ>=Ĺ=Äcó=Ä.Ù=Ä =ÃæÜ=ûz=Ã8=Ãg#=Ã<\=Ã=Âì^=ÂÂu=—k=Âl==ÂA=‘=Áòz=ÁÆž=Á™=Áu=ÁLÅ=Á#S=Àú=ÀÐ’=À§S=À~w=ÀU<=À,=À®=¿Ðÿ=¿£Õ=¿à=¿]ô=¿5½=¿ Ð=¾ãç=¾» =¾’1=¾ib=¾@œ=¾Ø=½î£=½Å½=½Ó=½u%=½K=½#-=¼û=¼Ó =¼ª¬=¼‚6=¼YÝ=¼1‡=¼ .=»àÝ=»¸²=»q=»h=»?Â=» =ºï‘=ºÇÝ=ºŸÐ=ºwk=ºNõ=º'N=¹ÿß=¹×b=¹°6=¹ˆ—=¹`Ï=¹8‘=¹ -=¸é·=¸Á§=¸—«=¸r3=¸Kg=¸#ç=·üh=·Ôø=·­f=·…@=·^‘=·7Q=·¿=¶è¦=¶¸Ó=¶p4=¶j¨=¶L7=¶$ý=µým=µÖ¡=µ«=µV·=µJ=µ8î=µí=´Þy=´Æ =´ =´yF=´RV=´+Ó=´„=³Úù=³³0=³‹•=³[e=³¶=³ˆ=²÷p=²ÅJ=²,=²}“=²Z‡=²7¹=²j=±ë=±ÅZ=±Ÿ=±y=±S =±,÷=±É=°àæ=°»=°•=°nŒ=°2.=° =¯üu=¯×¼=¯±™=¯ˆ=¯dI=¯A=¯e=®õØ=®Ð=®ªZ=®bR=­ÎŽ=­ãž=­'r=­ª.=­É<=­¤A=­Q=­Yt=­4}=­¯=¬æ`=¬¼==¬Ÿï=¬{˜=¬U±=¬,ä=¬ o=«çk=«Âw=«˜Í=«u,=«T =«/U=« -’=ªåÓ=ªÀç=ª›J=ªw=ªS=ª,œ=ªš=©åm=©¾€=©qÛ=©^Ý=©S6=©-u=©==¨å›=¨Á–=¨Á=¨xÿ=¨OL=¨/€=¨ ü=§é3=§Äì=§œ×=§s”=§Uì=§5=§2=¦ê§=¦´=¦°=¦x6=¦]>=¦: =¦)=¥òÉ=¥Ï%=¥«}=¥‡ã=¥dN=¥@Á=¥:=¤ù»=¤ÖG=¤²·=¤=¤l=¤H¯=¤%>=£ø¿@:Ó@9ß½@9»ù@9»—@9ÔØ@9î @9ô”@9àõ@9·Ù@9‚8@9LÕ@9$©@9³@9 £@9G@9<@8ç”@8£@8@%‚˜@%q–@%eº@%e˜@%f@%^@%L1@%2´@%»@$ú@$à!@$º·@$j@#Î_@#‡@"nQ@"yü@#c@#Œá@#É@#¹r@#…¶@#O¨@#%ÿ@# z@"úÌ@"äØ@"¿²@"—l@"‚0@"‰4@"¢¡@"¹Ã@"¼z@"§J@"…M@"fí@"W0@"ND@"3'@!úñ@!¿U@!£ó@!¬õ@!Â@!Î"@!ʾ@!¹ä@!¡—@!†L@!c¬@!1£@ öN@ ÄÈ@ ›L@ \Ñ@  @Ù¬@ôø@ 9h@ mð@ ‚ù@ …«@ ~[@ n‡@ XH@ =Õ@ !¯@ —@ñA@Ý@ɳ@¸<@¨¸@˜ô@†¥@pö@Uº@,Ì@ì -@™·@WA@EX@[U@o½@g@@KÙ@9l@b@)œ@—@ð@Éâ@ í@€j@qÇ@pâ@p»@h÷@Vâ@7X@ -_@Ü!@¿@¸@º9@¸±@°f@¢‰@9@u@V@6¦@‘@@@î@×@Â,@±¸@¢n@ä@x~@^S@Eá@2@!Y@C@q@ò@áà@ÏË@¼K@¨@‘x@ts@KÚ@Ø@äš@Ãô@»9@¿.@Ât@¾Q@°c@™•@‚@if@YN@Já@9ù@&6@á@ñQ@Ï@°ß@Â@‘5@~Á@_Ü@:Ü@®@ÿ<@ìõ@ç½@íƒ@ò<@ëç@×–@²ž@v@!4@Î}@«1@Å°@ø¹@ÿ@É@è@E@ì·@Ók@±@@†@Wa@+@@Ü—@Ë•@Õ•@ëÈ@ø£@óû@ß@·z@y†@2Â@ä@&@$K@2Í@ @õ$@ËÞ@º@¿ @Èû@É@»Ž@¢€@y@^U@A,@-}@ì@@â$@Ë@Åí@Èð@ä@±5@™Ø@†à@xô@j4@VÏ@?`@$²@ø@êM@Ö@Ì]@ÆI@»Ø@«\@˜5@„Ô@oÊ@U?@2ç@ †@ñy@æp@ã{@×H@¹&@Ð@c@Ie@H?@Sø@Z@SF@C‹@/{@Ã@q@ée@Ö—@Ç!@¶g@Ÿ{@~õ@U@(A@@öÌ@ý.@Å@ -´@H@ñ½@ß«@Ìý@ºç@¨¡@“@v@Qá@0<@Y@y@ 5@_@óU@ãð@Ð@°Â@{Ç@3=@ öÛ@ ê @@ –@%€@õ@ øA@ Ü0@ Ì@ Æ=@ ¿‚@ ±+@ 0@ †Î@ n¬@ V@ B@ 0ç@ Þ@ -æ@ ô¸@ Õî@ ª±@ Ë@ qo@ xç@ v@ z}@ d?@ GH@ +È@ å@ ö@ Ó"@ ²š@ šq@ …A@ oW@ [õ@ Kh@ =ó@ :c@ A9@ E@ 9µ@ [@ -ø2@ -ͪ@ -¦\@ -ƒ @ -[Ô@ -0¥@ -6@ ü@ í±@ Ùý@ ÃÎ@ ²Û@ ¯Q@ º¥@ ʱ@ Ôí@ Ùñ@ á9@ ôá@ -•@ -O+@ -s–@ -v:@ -S—@ -õ@ ¼?@ aß@ 7@ß°@Ä—@¸›@²@¯o@³3@¹é@¸g@©â@™2@’¨@@zÃ@Né@‘@Ä–@vÈ@7‘@ @ðh@íì@@$Û@3®@*I@z@Î@ˆ@êt@Ät@Ž„@L³@'@Â9@€n@IW@+À@3£@\@’[@Æö@òº@ Œ@ _@ê¿@¨C@Tv@@ê0@Òb@Á=@»£@É=@èÐ@™@³@Öy@…ø@+o@ät@½¬@¦¦@Š@mJ@]‡@YE@_š@u™@—ï@¶U@¼c@¡@kY@0ž@²@€@:@Ië@IŸ@>@,Ã@z@ÏŒ@hV@ùè@¾Ô@Í@ö\@”@ü±@øý@û¿@ç‰@¯Ï@qþ@N@B@7Ì@'÷@#²@5!@Rì@p@€©@vÍ@Q@)‡@ƒ@€@R@û*@ܱ@¸Â@¢@¢Œ@˜ø@bÃ@d?ÿO®?þ©a?þ5S?þC?þ>¬?þš¢?þð?ÿ/?ÿG%?ÿÿ?þ¯½?þ; ?ýÕ£?ý„›?ýM_?ý2ë?ý1?ý2>?ý!?ý'?üÙ¶?ü·-?üœ9?ü€k?üjF?ü~Á?üÑ?ý5M?ýgT?ýUÅ?ý!?üÜþ?üŒ?üÎ?û¸??ûˆz?û…;?û·S?ü>‹?ý µ?ýĦ?þf?ýðç?ýF¯?üI8?ûcê?úí?úÑe?úÖ+?úñ)?û*È?û‹u?ü&&?üêŠ?ýV?þr?þF?þ4þ?þ‡?ýîW?ý¯€?ým’?ýK®?ý Z?ü¹È?ü6æ?ûÑl?û~q?ûL?ú–î?úV›?úk™?úÄÎ?û+¦?ûbr?û_Q?û.u?ú¾}?úÕ?ùiÇ?ø»?÷ï¯?÷i?ö‘?õ3Ë?ôq?óµW?òêW?ò$E?ñµ?ðö ?ð‰‹?ð„ð?ðñä?ñ…ž?òó?òp–?ñîÐ?ðÃD?漢?î—f?í,¡?ì!?ìF?í-O?í;W?ëæá?ê@J?éZ1?èó²?çö?æ:?äuÔ?äŒR?æK?ça?ç?x?å³Î?ã²?âÔx?äG0?ç:¯?éx)?éŒý?çƒ\?ä^¯?â~?â¬?ç"ü?î?ôË9?øö•?øÂo?ôO?좬?å H?àf™?áyÈ?èŸì?òã]?üšì@ã¥@¤F@ñ^?ÿ6³?ô¨s?èÚÐ?Þÿº?Út…?Ýp™?çˆñ?õü¦@¥@ < @ ß2@2Ï@ûó@ Ç@€¸@A)?ñø?㳕?Ü+3?Ý™?åÙv?óÃ@ç@ -¡Ó@†J@Å/@f@z"@ tñ@ÝÕ@D,@mä@¯ð@ œ>@¿?ïÿ?áþª?ÛBz?Ýʵ?èxâ?øOå@ZŠ@û\@E¬@ xÎ@'#:@,H¦@0 -Á@2Cð@2¸@1zò@.Ë@*º9@%8@7‹@½ù@ P@õª?ïåƒ?ÞIÏ?Ò¹â?о$?ØáÖ?èU‡?ûh–@Â@„9@Fv@!Œ(@'KØ@+ÆÃ@/J<@2T@3ï&@5'i@6…@6Á@7$È@6Í?@5¯¿@3ñ@1zÍ@. -Û@)v @#±€@¿‰@œ@ j€@¢Ø?ðm?Þ¸n?Ñþ?ÍRV?Ò‚ú?ßÈ}?ñ†W@lº@ þ?@Ót@y8@"É‚@'éÍ@,ó@/–J@2w$@4ï;@7:Ý@9d”@;;Í@@5Ä@8ž§@:¿¸@;¼É@;’|@:ì6@:¶Ÿ@;É@;@:‚å@9a.@86î@7G¶@6~„@5Éw@53÷@4¼@4VB@4 £@3Ù×@3…4@3»@2’T@2JF@2¶@1@0äÕ@0‰@/ Ó@-Ì`@,q@+'þ@)èê@(`ª@&("@#5@Z @Â@ôd@ ˜@ }ú@Âv?÷Ô;?鳓?Üt•?Ó¢?Ñõ¤?×èW?ã)?ñ~ø@ÂÂ@zN@Ÿ)@ùÑ@S@ï@ ‰Ñ@#×=@&@'˜B@(ëY@)ý_@*±ˆ@+'W@+¡V@,*E@,‰¦@,’$@,aL@,)Â@+û @+Þ]@+çà@,(@,Ž@-?@-‡y@-ý@.6O@.¸@-ÞÇ@-¼þ@-ŽŽ@,îå@+¹å@)üë@'Ôu@%¸,@$…ü@$ß@&@(Ê>@*Àß@,á@,ƒt@,z¯@,5š@+ôB@+ü@,—D@->)@,`Ä@)hƒ@$ûŸ@Ä°@@Ù@­Ù@@Ñ@" !@&kÐ@)qR@+Ž@+Ò§@,e@,7b@,@^­@m­@!D@³ñ@A´@“¬@sõ@÷1@<1@]_@š@1ù@2@aÔ@bZ@!Õ@þ@Ì@#˜@ ˜@K@å@¦Ò@;@›¤@“{@••@¼Õ@ÕÍ@÷ð@„’@4&@gë@:$@2@ãÏ@N @£Ñ@2e?ÿË?ÿÎ?þCß?ý±’?þØ?ÿKã?ÿþû?ÿm9?þ‰ú?þE?þÍ?ýyh?üÕ?ü“??üi…?üY‘?üy?üªh?ü‚«?üäR?þ g?ÿ•?þ®‹?þ/’?þ¨Û?ÿr?ÿÊ?ÿ'?þø3?ÿœ@)-?ÿŽè?ýÅŒ?ü”Ò?ü^?ûRJ?úV?ùÈ?ù‚ ?øçŽ?ø-q?ø‡?øi)?ø˜??øža?ùN?ú"·?ùº=?ø†¯?ø"%?øÒD?ùÏÕ?ûE?ü·±?ýŠ[?ýBÿ?ýRË?ýµ2?ü–I?ú?øI?÷Çé?÷¡#?÷?ö;?õ)Õ?óïÂ?òá¤?ò6I?ñ¿?ñ\[?ñ þ?ðЃ?ð®ó?ð‹{?ðR¥?ðw?ïÚ8?ïÊ+?ïÒ?ïÝ ?ïàb?ïõ=?ðIp?ðë ?ñÕÖ?òõ?óç1?ô=Ö?óÜL?ó?ìÛ?ëáX?ì?ìc}?ìb?ì‡`?ìf??ì)?ëöG?ì ›?ìc%?ìëv?íaj?íeÏ?íGH?í}Ö?í±W?í9É?ì+†?ëm?ë»?컢?í‹?íé -?î$û?î?íe?ìR†?ëe?ê¢÷?éÞB?éL­?éŠ?éEJ?ê"ª?ë4¯?ë ¦?ë~æ?ë?ê~Q?êè?é¨/?é -=?èP?èE?è$%?è 8?çÇQ?ç¯?烂?ç–Ž?ç…Ï?çpþ?炃?ç´B?ç¼ ?çiŸ?çd?æøŠ?çr?æïj?ævœ?åÖ'?äÐÍ?ã!¾?á>?ß\?Þ•Ë?ÝÔÜ?Ýt—?ß4–?ár¡?âs?â±}?↚?â Ê?áÆ¡?á«–?áÚ?â=L?âÆA?ã2"?ã>?âÀi?â¯1?âv¥?á‘.?à>»?ßá?Þl?Þ?ÝÖÎ?ÝuÐ?Ý»?Ý!â?ÝW+?Ý8c?ÜÆ ?Ü?4?Ûäü?ÛÂ^?Û–?Û&ø?Ú¤â?Úv±?Ú¦ ?ÚÔš?ÚÑŸ?ÚÝ‹?ÚþE?Û Y?Ûg?Úê­?Ú¹½?ÚšY?ÚG$?Ùƒï?بz?×öV?×8Ç?Ö‚?Ö0?ÖQ?ÖrT?ÖW9?ÖF?Õé(?ÕÊY?Õ°à?ÕÑL?ÖK4?ÖµD?Ö³>?Ö:ý?Õ??ÕKØ?ÕZï?ÕÄ?Ô1?Ô7g?Ôœ?ÔTU?ÔÕB?ÕFŽ?Õn8?Õ¥?Õ§ ?Õ‹Ñ?ÕgÙ?Õ!§?Ô‘?Óï‹?Ô»?ÔTx?ÔO?Ô -½?Ó„ù?Òæ?Òœn?Ò‘Ê?Ò,Ð?Ñ¿«?ÑØN?ÒH€?ÒÓi?Ó7–?Ó$º?Ó?Ó˜?ÓÀ?Ò>`?Ð÷?ÐI3?Ð}?ÑB\?Ñq8?ÐÇ?Ðr?ϸ·?Ïeè?Îì¿?Îb,?Íè?Í ·?Ë¿6?ÊËå?ÊyÀ?Éà½?ÈL@?ÆH?Ä (?Á˜†?¾iv?ºG ?µ?¯AÀ?ªné?©Ž@?®lz?µ¢?¹e­?ºˆœ?ºC?´È?ª¾å?¦­Á?©ƒ³?¯pB?µ-¨?¹åL?½á?Á,g?ÃÀÓ?Å~Þ?ÆŒE?Çñ?Çoš?Çà¸?ÈB?ÇóS?Èë?ÈÙ?•¯þ?•v?•4ž?•/ó?–`?˜¼?™ƒ•?™J«?˜ô?˜ës?—ui?•4,?”/O?”0Â?”–¯?•?•@U?”Ë…?”8#?“ɱ?“™?“ÿ˜?”º^?”é›?” ç?”•?“.?’Y?’ˆ«?’6?‘UÊ?ø˜?øF?Æ8?Ç?ÄÊ?«>?”°?,Ë?Ó?°²?®‰?=I?‘W?‘í—?’r?’D-?’?W¹?+K?ŽÆ>?Ž‚³?Ž<?ªî?2?*?ù???.š?už?°“?}?Ja?G¡?Fò?f«?ˆ.?q‡?t/?À«?¥š?õ?ŒŒ'?Œ¨Á?Œ-™?‹“R?ŠÑM?Šµ?Š_Ê?‰õ,?‰Èþ?‰Ì{?‰ˆ¤?‰,ô?ˆØh?ˆ˜Y?ˆÒ!?‰a?‰a?ˆóP?ˆ|•?ˆT¢?ˆi?ˆ&Ð?‡Ë?‡œN?‡hË?‡?‡?ž?‡üƒ?‡îQ?‡)>?†Â½?†”£?†)?…Å'?…„(?…v?…•–?…—>?…¿ ?†jR?†íµ?†¬Ø?†2!?†:?…Þ?…ƒƒ?…fs?…eD?…AB?„ô?„Ô1?… -È?…@R?…D?„Ë“?„x\?„E‡?„Cû?„†‹?…Š?…L¬?…/?„×O?„¬ë?„ŸV?„rg?„0“?ƒô?ƒ¯?ƒYÊ?‚ùå?‚¬“?‚õ?‚ˆñ?‚©•?‚R?‚…f?‚î?ƒ¥?ƒÐð?ƒ®?ƒÉÏ?ƒø]?„ ?„f?„Ĭ?„m§?ƒÛÐ?ƒæŽ?ƒù ?‚ã½?€N?€º?€…ˆ?€t‹?€~?€·ì?€˜Á?€»?U'?3&?iÝ?Uh?~ø?~ú?_ï?‚?PŒ?(?Wcq?V~?VN(?Vw ?V|‹?UÜÿ?U'‚?T²?Sð?S ?Qx?NUí?JTþ?HÕ½?Jeƒ?M45?P*?Q÷?Ri=?R[_?R Ç?RR‹?RÙ`?Qv3?Q½‡?T¨7?UÛZ?T^÷?R}B?R)?QA?Om¶?Nvº?Oî?Pc¸?Q -{?Pq®?O²Ò?OŒ:?Oª—?Ovƒ?O2?O( ?Nݪ?MB?KÓW?L¯X?Lýo?KÒÏ?LQt?N?N´ ?Mtò?Mk@?MTê?M,X?MÌ?N³?MI!?KB?I?H¾?HZ¸?I*?HH?H8ë?I 4?JÏ?J®ö?KTï?K¸¡?JçQ?I}‚?Hh?H.2?H¼š?I‰?Iø:?Io?H3A?GcÄ?GFq?G½©?Hk®?H¸C?H1¬?Fì}?EF×?E?4?F¶?Fp•?F_®?FG?Fhk?G:Œ?H‹•?I‰¾?ISN?H¹?Hr:?G ?Fd&?EñŽ?E“?E1N?DÚ?Dœâ?DÂð?Eg?FÝ?Eä[?E!^?DC!?CµW?C¥¶?CÏÝ?D–½?DéÖ?Cú²?BòO?C3J?CèE?DB5?D¹?CE×?B¿A?Bp„?B ¿?A©u?Aƒ-?BÝ?B4*?AÕ!?B)?CMý?C©Í?B:«?Ar,?Adà?AÈ»?Be“?BS÷?B'Ô?Aqõ?@sú?@BÑ??ݺ??à?>þ•??Xõ??!??/‰??Y¬??¨š??ñÿ?@ ??v?>Ò$?>™é??9?@Fü?@1£?>â¯?=ûö?=Ü?>TÛ?>°©?>N»?=lÞ?<œ!?<Ó4?<€?;–x?;^ñ?;Å"?<}¦?=,{?=!Ù?=?<ø{?<’¹? I?=Qk?=#?<Ú:?;ì?8€Ú?6µ·?5íÏ?5üL?6ZÄ?6wÆ?6tK?7?6Îh?6"F?5ÏË?5ÂÓ?6y?61?5çà?6<?6 ?5U?5H?5f¯?5%u?3Úê?3*¤?3˜?3ª¶?3w3?3Œé?2÷L?2ÿk?3Y•?2ÊÊ?2z"?2Ü?2ÖB?2Ë?1C/?1¶æ?1ƒD?1°?13›?0ŒÐ?0+Ó?0˜ç?0„i?0 ¤?/¬-?/më?/ˆ?.ëµ?/è?/ £?.ä?/oÕ?05ƒ?0E?0*;?0°F?2 q?2Y?1š}?1×y?3%?30B?3Œ?2êó?2‡?2p?2 Â?10'?.A?,Ù?+ÙE?,8?,Ç[?,¡!?,>b?+Ñs?*ÏÃ?*e?)´ -?)Ç??)ÈÄ?)‡ù?)í?)2È?$?¿*?&Ý?!£ -?#Å?$5à?#è/?$$?$¦r?$l,?$1Z?%#}?%?%dc?%‚?% -*?%Ç4?%áž?%£¯?&R\?'8·?'ô?(½>?)"“?(«}?'»÷?%ŧ?$0ñ?$…Ô?$ñ¸?$á‡?%T?$âú?$¤o?$Ì?$OÎ?#à·?#š³?#:4?"êV?#\?#œO?"÷*?"0T?"ó‹?#ň?#Ã?#EÖ?"ní?!ý½?"3?"‰’?"%4?!Ö?"à?#@?#š™?$?#‡è?"û2?"ƒ?"«Q?"“?!g?!j²?"T?#È?$+~?$"½?#ãw?#Bú?"ó?!?!L? Wæ? —R? ðƒ? z®?Ì3?'t?Ö§?Æú?;‰?H‹?+%?^?»z? S§?!¦u?"1-?!®Ý?!Jx?!2ï? «„?(c?n=?p/?‡®?é¾?!Æ ?!¬=? ï‹? éE? ߧ?ˆR?àì?‡?Y1?Õ?F!?žÉ?&‹?„P?¡)?‡e?!¥¨?"Ø2?!gí? ¯!? ˜,?í¼?7??³?ÜÔ?€à?·§?ž ?¦­?‚±?À>?¶Ö?Æ?ǹ?Ø ?[?¡Ë?fn?b>?ò]?Øô?ÿe?õœ?²?Dw??žÚ?¯í?Sx?“ö?7y?—p?]?÷©?Þã?{¯?{Ò?Ø?7‰?„²? ±?5F?Ç?ùZ?X€?Xé?ø?VØ?O±?€Ç?`~? Ë?is?!±?ç©?XÏ?þ~?‡…?›¿?Ù -?z—?fØ?!†H?0bÂ?MV?„,?°ö’?ÚAì?ë‰ø?à/Î?¾*S?‘ “?Zûƒ?4È6?#ÃX?8;?™Ž?}«?ï‡?{? V?á§?“e?±Ê?‡¤?q)?3Æ?ž?p+?Cä?2?˜c?òP??£?M+?Ö)?Õ0?á?Ë?È ?®?Ý°?e ?G -?+¼?J“?óZ?·?k?÷ó?ûÛ?Ec?°ñ?f?Ý&?k¥? ô‡? Áë?8à?1?“%?+ø?(Á? y†? r¿? ee? ?Z? 8˜? ;I? )? ½c? c”? ¨|? Ûe? l"? ^? âÝ? »/? ¾¿? -? -ÐÎ? à¯?¹í?q? +? -öç? E$? xr? µˆ? MJ? P? Æ? s? -ñ¸? -ãú? -ÈÜ? -^\? -%? ö‰? -9“? -iñ? -vî? -ËÜ? -Ð? -\? Ì4? s¨? ;ë? ¥? W? [­? Q«? wy? E³?a¨?k -?‘ê? =?™?“E?QX?Ç?â'?Ó?4I?û.? ?·^?8y?Oá?ïm?#û?+©?„j?8ÿ?=ù?^?Ów?ëË? B?ü?ÂI?Ê1?6?Lø?éM?Ii?$§?è.?Ñ’?uJ?K•?k?–Ç?»þ?ìÖ?ÙÀ?³Á?{¨?nG?–C?_Ë?o;?™?>É?¿Y?od?‘?¼q?¶4?ª\?X¶?&‘?b?õU?ôE?åà?Ì©?§?P3?÷¼?ôë?÷ö?Ú¹?¾¾?¯?ªž?‡·?zn?t“?Q’?9}?/;??‡?ð+?Û0?Àý?¤?”¿?/?hŸ?Z»?K4?5Þ?X>ÿæ‡>ÿÂ'>ÿ®>ÿf>ÿe¶>ÿ8Õ>ÿ ¶>þÝô>þ³ä>þˆm>þY¨>þ2e>þ œ>ýâ…>ý¼*>ý˜®>ýsö>ýKS>ýn>üô3>üÈQ>ü->üH'>ü+Ð>ü“>ûúë>ûÚÊ>ûµ&>ûÍ>ûe+>û7®>úýô>ú²[>úŽË>ú >úg >ú#N>ùð7>ùÝv>ùÅ¥>ùª–>ù>ùm¦>ùM >ù*>ù>øÙá>ø¯0>ø†~>ø_Ù>ø5œ>÷ñè>÷>÷hv>÷UÑ>÷Cj>öðß>öª°>öv>ö)‚>õÏÍ>õ•6>õCæ>ôžù>ôj,>ô¡1>ôa0>óuw>óob>ó<£>òïr>óUw>óðo>ó„’>òÕ>ó‰>óÓÚ>ò©~>ó>óoÂ>ò™`>ò…6>ó…À>ô'e>ô¦`>ôö >óþœ>òt!>ñ{ >ñõ=>òó…>ñþÞ>ñPÆ>òDî>òC>ñb>ñt”>ñÕÒ>ðm>ï†G>ïºU>ïfÃ>ðŸï>ðï>ïN¡>îÆD>ð&–>ð^ñ>îõS>í+*>í£O>ïžÐ>ïä\>ïMÿ>îâî>î±o>îf?>íŸþ>íÕK>íUÄ>ë+²>éè™>é“>ëß>ï >ïž‹>îù >îR>ì·p>êÙ>ëð>íY>í¸>ìsÍ>ë‹>ëK>ì?r>í‰>ì ->ëdú>í»?>î¬Ð>íkÌ>ëèv>ê®>èØ“>éå>êD×>êQ¦>ê7>ê:&>ê…P>êË~>êL§>éô(>éÂ^>é¦n>éè>ê1ö>ê_/>鱈>éD>é–>é·ß>éoV>é„>èÀƒ>è_À>èü>çܼ>çÅ">ç°µ>çü>çlb>çLV>ç({>æðâ>æ²>æ—´>æ‚Þ>æ_j>æD‹>æ2„>æ'—>æ"!>æ˜>åñd>åÊÖ>å²p>åŸK>åX>åds>åQY>å9(>å{>å <>äë;>ä–h>ãÐÀ>ã8>âjK>áÐÀ>áI->àþl>àʪ>à‹.>àOB>à">ßàù>ß”î>ßaØ>ß1ó>Þôà>Þ°Å>ÞpË>ÞDÔ>Þ <>Ý÷’>ÝÏÌ>ݦ>ÝÄ>ÝP4>Ý -Ó>Üîu>ÜÙ•>܉'>Üd>Üm¡>ÜTÅ>Ü-J>Ü©>Ûäe>ÛÃ!>ÛžŽ>ÛtW>ÛJ>Û% >Û W>ÚâF>Ú³õ>ÚŠÀ>ÚnŠ>ÚW¯>Ú>É>ÚÔ>Ùù•>ÙÖÚ>Ù´>ÙŠŠ>Ù\ >Ù%ä>Ø}ÿ>×o>×Y¡>ØN“>ØO§>ض>×äø>×»ü>×á>×0L>ÖÜT>ÖŽ_>ÖH>Ö X>Õ×>Õ¡>ÕA8>Ô§‹>Ó«¾>Ò­I>ÒL¾>Ò4>Ò*n>Ò4 >ÒLH>Ò\>Òað>Òb>Òk¶>ÒuŒ>Òk>ÒJ/>Ò/>Ñ÷Œ>Ñ×x>Ñ·ü>Ñ™¯>ÑxD>ÑYÀ>Ñ<>ÑÓ>Ðõñ>ÐÐñ>ЯÃ>Т>Ð,Ã>Ïîv>Ð>Ïû²>Ï°ž>Ï–§>ϱU>Ï#Œ>Π1>Îë>ÎÖŽ>Î:>Í}ï>Í’t>Îiœ>Ά#>Î) >ÍöØ>ͤ“>ÍÉE>Í~A>ͺ'>Ï >ÎAÉ>Í{>̶À>ÍHM>Í\:>Í3¯>Í"³>˨>Ë¡Ä>Ì7å>Ìa¶>̓×>ÍýÕ>ÍÎ >ÍF„>Í(s>Íä[>ÍF>ʦ¨>Éðˆ>ÊYb>ʬú>ËR”>Éû~>É?>ȉð>È­y>ÈÁ>Ç׿>ÆÕR>È4T>ÉzÂ>ÉFÊ>È€÷>Èǵ>ÈE>ÇMk>È Í>Ë…Ù>Ì/>ËÞü>Íe^>΂>ÌšM>ɘM>Éâ(>Ém­>È)R>ÆȲ>Ä4Ã>Ãhñ>ÄLy>ÄÖ >Ãóm>ÂŽÀ>ÃF >Åk>ÆØû>ÆØ">Åû{>Ÿ÷>Åf>ÅE>Å-×>ÄÚÏ>Äß]>Ån¢>Å>ÅÍ›>ÆÇÏ>Æò–>ÆŒ}>ÅŠ>Ä‹è>ÄFò>Ä!ˆ>Äw>Ä3Ñ>ÄRÒ>ÄHÇ>Ö+>ó“>ÃìÉ>æ¿>à E>ÂoL>Â"ó>ÁÂ’>ÁœZ>ÁˆA>ÁuB>Áf>Álž>ÁL¢>Át>Á˜>Àè>ÀÇÁ>À `>ÀfJ>À>¿à>¿¯>¿‡%>¿j">¿J¸>¿,¹>¿%8>¿E>¿Ž>¾à>¾¹v>¾šõ>¾>¾e¸>¾Cù>¾\>½ðü>½Á™>½—Ÿ>½o>½J%>½&ø>½q>¼ì—>¼ì>½ >½¡>½(ì>½8´>½5Â>½h>¼çN>¼» >¼Z>¼BÓ>¼ -¥>»×D>»¤9>»tø>»Iµ>»*>»Ê>»™>ºí>ºØ>ºÅ>ºµ>ºb>ºx½>ºPT>º(i>ºP>¹Òv>¹ >¹~“>¹^#>¹;ß>¹¢>¸úÛ>¸Õ>¸§Ì>¸x=>¸HÚ>¸§>·òÀ>·ÉÒ>·¡›>·vu>·Bò>·o>¶Ì->¶ª¿>¶±>¶I>¶G>µäG>µÁš>µžŠ>µƒl>µwT>µe>µBÛ>µ"e>µþ>µ >µ=>µj=>µ|.>µ[]>µæ>´å->´Â%>´„>´mÄ>´TŸ>´T>´~g>´«•>´->³–Î>³:>³tØ>³´Þ>³Q>²î­>²•>>±ö>°ù >±Fá>±4$>±£>°èÜ>±h°>²Q>µÔÚ>·üƒ>·7Z>·=~>¸%>·2ê>³¨>°R!>®j¥>­¤B>­<>­¾>­<Ž>­K‹>­\G>­Ž >°DV>±½>±?ñ>²%˜>±|v>±?×>°zÉ>®œÿ>­tÎ>­~i>¬·­>«>>©Î ->©•Ç>ª7Í>«Ä¾>¬{V>®8>­‹^>­Z ->®cÄ>®yq>­D+>«š>ªK>©óI>©!>§*$>¦‹Y>¦Æ?>©Sš>«ç0>­¾>®D,>­€F>­÷>®mO>®!¢>¬S3>«‚â>ª Æ>©Ið>¨¿Â>¨z#>¨nw>©B¤>¨’z>¨?ç>¨F>¨Ä>©Æ<>«T\>¬0>ª~>¨Æk>ªI‚>©‘³>¥¥’>¤Ê•>¥Àã>¥_´>¢ö{>¤Þ]>¦)°>¥÷>¥Â\>¦Î„>¥lŠ>£C>£Ž*>¢£±>¢A>¢>£‹>¤þö>¦œ>§Ú.>§¨>¦¬¯>¥Ë}>¤xï>¤Ê>£Ùø>¢H?>¢” >¡Ñ˜>¡><>¡^>¡”…> `„>Ÿ{ >ŸÙŽ>£·>¥¨>¤Å×>¤€ß>¥Bà>¥S>¢m->Ÿ¦±>å£>Åv>œ#>”Å>¡ ó>£öè>£¸>£ðê>£è/>¢it>žiæ>œNJ>/¢>ÿö>ž–,>Ÿ*>¢Y >£Ê¤>¡Í> ÀØ>  > Ao>ž£ò>›ÿ°>›5¥>›È(>›Þ>ž> :\>ŸR>žÅU>žfÂ>ƒN>›¸>™Iv>™§È>š÷n>œùg>›¡>Ÿ[ò> ,[>Ÿ. >ž>~Š>œEU>›‡b>œAo>œŽ>œÜ>œÔ>œû•>œÊ>›)>›w?>›ÝC>›ÚU>›ë!>›b$>šŒ½>šžü>›K1>›R´>šÏ >š­â>š“>šw‰>šN;>šF>™õê>™Ò~>™²0>™">™h‚>™@z>™!7>˜ÿÿ>˜ÜÚ>˜¿ß>˜©t>˜T>˜oi>˜Ri>˜2g>˜5>—îØ>—Ó¥>—º>—Ÿä>—”>—zM>—\Þ>——Â>–ù>–ÏŽ>–¡Î>–}×>–jŠ>–T>–8Ò>–ó>–\>•á,>•¹ç>•’¯>•qm>•RŸ>•1u>•m>”îi>”ÐX>”¹>”¡P>”‰1>”e>”=/>”ú>”§>“àx>“¿?>“´Ÿ>“®œ>“•—>“r^>“M®>“ >’½>>’¹“>’¯•>’…>’Q²>’HD>’3Ö>’œ>‘á*>‘È“>‘aÍ>‘8ª>‘‚»>‘´>‘bþ>‘=ƒ>‘Ý>‘->‘Hï>‘+>øÍ>éì>Ÿê>‚>tx>N¹>,X> J>+i>Ú >¤…>+>#> —>Ž©j>ŽuÇ>ò>?d>ŽÝï>Žß_>Ž·É>Ž‰k>ŽœA>ŽÖ§>ŽF›>¼Ý>Žè>Ž$">ŒHŽ>C¡>Ž¡[>„H>‹¨¹>Šò>Œuß>gW>Œ=<>‹j?>‹Á>ŒFÖ>Œ(F>Œ;>‹¹.>ŒXn>ŒÆ>‹r—>Šaô>Š‹‹>‰µ->‰Ïõ>Šû>‰Ôs>ˆÀ>‰«2>‹k»>ŠœÇ>‰Ð>‰æÆ>ˆõ%>†g‡>…>¾>‡‰£>‰áé>‰Ý3>‰îÏ>Šc>ˆæt>…ÿa>ƒÔ%>ƒêÅ>†·ò>‰ë>ŠCì>‰Ø >‰\}>‰ì>†Ì5>„b5>ƒ£…>‚å.>‚ž>ƒòE>† 1>‡VT>†V >‡‹J>ˆZ>†iÖ>„÷ý>„6t>„*>ƒj>‚¯F>ƒ*7>†>ž>‡¨þ>†{K>‡¹>Œ-T>ti>Ž»Œ>‹Ž>Û~>ŒKà>†¢>ƒYç>‹‚>€1 >Ž„>‚V(>„¤$>ƒŽš>ƒ^o>…,æ>…áá>ƒ×>¼Ì>ÐÛ>‚gx>ƒYì>ƒÖ“>„>Ô>ƒÔi>‚‰ ->->>€Z!>€en>‚¬ò>ƒò@>‚H@>€üÊ>‚>‚p­>}äs>{+r>}¡j>€;‡>'Õ>—>‚HÀ>‚¦(>‚"{>á]>žR><¢>€IÀ>}{>{jU>|K•>~»þ>~_h>z^>xUZ>z“ï>yµS>tç>tDÉ>x–~>|æo>€,S>Ro>‚…>ƒ¶Ù>„He>„aN>„°>ƒòÝ>ƒžù>‚¶=>)>}®Ç>yÒk>vg9>rè>m÷/>lí9>qõn>qÇ>l¿Á>lØ›>qõ¹>s:B>p¤Ä>r¤ü>v#ú>y­·>|sÛ>}Û¡>€*Y>€c¬>€3>¹B>‚jÀ>‚hJ>‚×i>ƒq>ƒŒ>‚þ0>‚tn>ø¶> Ø>€•.>8{>|é%>xù*>uöl>qœÏ>kÞØ>h³×>jw\>lœa>fd]>bH+>eBÚ>h°J>fKœ>d€2>jš>pûˆ>vci>zH>~jÿ>µ™>lS>O>~k>S >óÆ>€Kç>€Ú>Vb>j#>v[>ÿf>2«>€dü>€ø>>€þM>€Ò]>€ý°>€€L>~æ…>}œ>{c–>x{>szX>n‘¥>j­p>edÃ>^0q>Z£è>]” ->^ >VÃ>U›j>[î>^ Î>Zî>\ñø>bVS>goG>lœ>oup>q„%>sàÏ>uÑ>v–(>w¹…>y?>yvj>x¡w>xÇ|>yÁ¶>zè…>z"¹>yÐ>xŽÙ>x‚Y>x.X>v‰«>v:ø>vE>vÙh>v°ü>vœY>uö$>tÍ->s Æ>sÌ<>s~3>s`>r°ú>røÞ>rÛl>qðu>o›[>mÔ+>kå%>j*)>h$>e·>b H>^j>XïO>R¸?>MÉM>IñG>F÷>?lj>;f•>@ž—>GZL>JPº>Mó;>RÚA>Wbì>[ -¡>^q>`­>b°Ó>d'j>e65>eõç>f¤‡>g >g@È>gX·>g^->guP>gŒ ->g¡>g¢e>gŠH>gT>>goà>gr>g[ž>g@Ü>g"¦>fëŒ>fe¨>fgT>fÀ>fj{>f5‹>f ^>eæø>e¹¼>e‰>eW€>e#¶>dîN>d¶Œ>d|>dAø>d´>cÄ>c½>c6â>bê3>b›h>bEÍ>açñ>a>a/>` >`“>_`Z>^¥$>]È>\¾L>[%>Yü >X -Ë>U|ù>RÛ*>O–.>Ksæ>F€Ñ>@ªY>9Ø4>1Ü>(èÚ>%il>,:>4Ê>;š>A”™>F >JÒÚ>NEu>Qæ>SIA>Uø>Vd>>Wq<>X>½>XÕ>YGF>Y£š>Yä‘>Z¶>Z:›>ZOå>Z?>Y¬º>Y$M>YìÔ>Z9 ->Z%>Z¾>Yí->Y«>Y|ò>YŒá>Y† >YeF>Y5‘>Xêý>Xá>X™±>WÄÝ>XR>XVÓ>X((>WÿH>Wàà>W¶ï>W}/>WÝ>W h>W 0>VàÏ>V±l>V]”>V-Ö>V)”>V1>UÀ0>UdÀ>Ua}>UHÔ>U!>Téè>Tº>T‰©>TW“>T#ß>Sòí>S¾V>S~–>SOm>Sž>Rëu>R´>Rz>R>>Qü[>Q¶¤>QOù>PÕï>P“˜>P{¿>PC&>OÚü>OR>Om>N ¹>NÔ>Mmí>L¶>KìÙ>J¾±>IAõ>H.>Foô>D>A‘n>>Y·>9‡>4KÃ>/È >)x>!Þ >9þ>kj>ƒ>%`±>+ñÛ>1”}>6\Â>9ÚŽ>?æ¤>BM™>Cת>E0>F±>FÒ‰>F®=>E—t>F D>FÂ>G¹h>H°4>HÅI>HÎ>HÒU>HÒ“>HÑ,>HÆA>HµÍ>H¡_>Hƒe>Hf‘>HX >H1”>H…>HR>GÙp>G³”>G¡®>Gƒ^>G_þ>G;ä>G“>Fóæ>FÏ >F©Z>FË>FKN>Fu>F T>Eé ->EÅ2>EÙ>Eq>E>>E#Ð>E>DÚÀ>D²p>D‹c>Dcí>D;¾>Dô>Cë:>CÓ>CšÈ>Cqì>CIÖ>CO>Bðù>Bʳ>B¥O>B€>BX(>B,ÿ>Aò¾>AÏO>A«Æ>Adw>AS>A;->A>@é’>@œ¹>?ùR>@(+>@[>>»õ>>øF>?¬I>?•Â>?t¯>?L>?#Œ>>ßå>>®F>>ž<>>zt>>OR>>&&>>–>=×´>=«~>=ð>=W>=+à>=?><Õy><©Â><±>;ó'>;ÇÐ>;™>;i,>;8”>;ø>:Ó@>:”Ô>:[ã>:.à>9öù>9¹¢>9tý>91è>8î>8£!>8Sr>7ù3>7’l>7>6§´>6´>5Je>4¾>3¡U>2È\>1}Ã>/äÌ>-ê->+uó>(i>$®·> 7®>ïL>ËÓ> gh>q>íW>íî>”/>'x>åq>#Ù?>'ã>)¢F>+§+>-9…>.q\>/`M>0N>0«A>1×>1lT>1ª>1Õí>1÷?>2 -I>2w>2">2!ž>2F>2">1òã>1ç>1Üz>1Åê>1¯¶>1™ï>1 >1YT>1#|>1K>1Æ>0ñA>0²'>/œà>/¯H>0_K>0R>01o>0+>/î–>/ÌY>/§R>/…Ó>/cÊ>/6‰>.ìÚ>.á@>.Ø™>.µ%>.’È>.nÑ>.Hx>.)z>.>-ßè>-¸å>-›u>-wn>-S°>-1>- -¸>,é¦>,Ãí>, b>,×>,\B>,7…>,Q>+ðä>+Í\>+©†>+…Í>+b#>+>n>+ž>*ö”>*ÎJ>*ª>*‹.>*h>*Cü>* >)û]>)Ï>)¯¸>)‘>>)ng>)Jæ>)']>)¬>(ßõ>(¼¿>(™V>(uÒ>(RF>(.ñ>( ~>'è>'Ä…>' Ê>'{Ž>'Y>'6ò>'™>&Þ>&»y>&¥(>&ƒŸ>&_3>&=C>&ö>%ø>%ο>%ª>%ˆ—>%j*>%J>%'é>%>$؆>$¨ê>$R>$aÆ>$Fm>$+r>$à>#â5>#³¯>#œ ># ->#\{>#9>#ü>"îV>"ÉE>"ªà>"‰?>"h>>"AW>"Ž>!ù%>!ÙÄ>!¾¶>!š²>!pÓ>!MT>!.*> þ-> °Z> Ç> ¢ç> ƒF> XŠ> 8V> æ>ù¼>Ì> F>“r>r³>Pr>.> -*>ä÷>µ¤>”{>u´>Tï>9¥>¨>ò >̶>§œ>sE>P!>=H>°>õ¸>ÏÇ>«k>ƒ%>[Œ>9M>Ï>ë+>”>˜^>oõ>E!>b>éa>ºì>Š;>V²>>Ó>¢ì>k>"k>Óx>}ó>R>«ƒ>+Ê>”ˆ>ã¶>ˆ>>”è>,Û>kÚ> :¢> -t>9>T=üU¼=ðŠ=áz=߸Ñ=î\=ù±B>~˜>]æ>¦> $> 7>Úÿ>#µ>![>×Á>x.>ùI>T\>˜×>ËÎ>ñ> ‡>> > >Ô>Á> 0>õ?>ðO>Ïß>ņ>Ƀ>¶">ŒF>r´>oG>Y ->C>)¯>ú>¶É>Íb>À>£”>‡>m>Pò>3ª>>û¶>Ýl>½Õ>¤>‡õ>iô>Ky>/Â>œ>õ$>׉>¹Á>™÷>|*>`º>B‰>$<>¢>éô>Ì(>®L>{>r>TÆ>6Í>ê>û&>ÝJ>¿b>¡c>ƒz>e©>F°>'™> -Ä> îW> Ï%> ±$> • -> ww> Y;> 8I> >> I> â¶> Äñ> §9> ‰—> kó> NM> 0¥> > õ~> ×í> ºS> œg> i> b > Do> &í> œ> -ì2> -Îv> -Ÿa> -§> -$p> -VA> -;Ö> -F> -ñ> ãü> Ç> ¦Ì> ~Ï> jÔ> R`> 5> z>û`>ÞJ>ÁS>¤J>‡O>jB>M>/>H>ò>Öù>¼ö> =>ƒn>f·>Iý>-C>¥>ô>ÖN>³Š>š/>/>dÖ>G>*o>þ>ò>ÖB>¹é>>0>dÐ>Hp>,>Ý>ó‰>×K>ºõ>ž½>‚±>f>JX>.$> >õ‰>ÖD>·q>œ™>ƒœ>iÞ>Mù>1Ì>Ï>ùÊ>Þ6>Â>¥k>Š>nö>SO>7™>î>d>äQ>ÂŽ>¥&>È>qí>YO><¦> #>>èï>ÊŒ>´9>™©>~é>c2>F|>+Ò>À=ÿÚQ=ÿ³]=ÿw=ÿ>‘=ÿ Þ=þÛù=þ¥é=þn˜=þ9'=þ“=ýÌŸ=ý—@=ýah=ý*Ö=üô¿=ü¿I=ü‰z=üSe=ü=ûç(=û°µ=ûu=ûC¦=û -Š=úÚ±=ú¦±=úq=ú;˜=úB=ùÑ=ù›¡=ùfB=ù1\=øü=øÇ=ø’=ø\Ü=ø&£=÷ñ =÷½³=÷‰=÷T8=÷o=öêã=ö¶!=ö€ÿ=öJ†=ö&=õâÙ=õ®ë=õzc=õEå=õš=ôÜÌ=ô ç=ô=)=ô'«=óõä=ó>ñ=ó,¬=óP =ò„O=ò]ä=òÊM=òŸ>=òkn=ò7O=ñ÷À=ñŸe=ñj=ñfí=ñ3S=ðû8=ðÉr=ð™=ðe=ð&B=ïÏN=ï¿Ú=ï— =ïc¤=ï0/=îü²=îÉ8=î•«=îa“=î†=íܲ=íÄœ=í”=íaY=í-K=ìù=ìÇ1=ì”$=ì`§=ì-P=ëùÐ=ëÆS=ë’ˆ=ë\Í=ë+3=êù=êÅ:=ê‘·=ê^=ê*V=éö‘=é¯=é=éU|=é%Ç=èò=è½=èˆõ=èQ5=ç*¬=Þ =ß\S=æð0=çGI=ç=æÛ5=æ¡2=æhx=æ2v=åúr=åÀ€=å…S=åHD=å<=äÄî=ä‹Î=äD =ä®=ã¾£=ãtû=ã'-=âÔå=â|©=â‘=Ạ=áK€=àÑ^=àHÌ=ß®K=Þýk=Þ0¨=Ý?ß=Üš=Ú%ú=Öêý=Ö:=ÔŽ=ѤÄ=Íòf=Éw…=Ä“=½¯¤=µªò=©³°=§“÷=³X§=»p^=Á¡Ô=Æ¥=ÊrQ=ÎD=Ñ&’=ÓTW=Õ „=Ö^!=×f =Ø1L=ØÌÑ=ÙC =Ù›=ÙÜ$=Ú -…=Ú*’=Ú==ÚE®=ÚGŸ=ÚC©=Ú8å=Ú)U=Úâ=Ùÿ'=Ùå=ÙÉ—=Ùªë=Ù|=ÙT!=ÙEv=Ù$0=Øÿ =ØÙ³=سŽ=ØŒ6=Øcm=Ø9‚=Ø -_=×ÁÐ=×yN=×~M=×fï=×@m=×_=Öíƒ=Ö®=Ö—h=Öl@=Ö@Ô=ÖD=Õé”=Õ½¹=Õ‘À=Õe÷=Õ:=Õ=ÔáŠ=Ô³k=Ô…Ñ=Ô\x=Ô0€=Ôƒ=ÓØP=Ó«Ë=Óz=ÓRÙ=Ó&‰=Òúb=ÒÎ%=Ò¡e=Ònî=ÒCÕ=Òü=Ñï·=Ñà =Ñ—D=Ñjë=Ñ<½=ÑÃ=Ðæ=йà=и=Ða=Ð5d=Ð "=ÏÛ"=Ï«Æ=Ï„=ÏX=Ï,}=Îþa=ÎÏÏ=Τ÷=Î{=ÎOn=Î#=Íø®=ÍÌ=Íÿ=Írâ=ÍI=Í¢=Ìñç=ÌÆB=Ìš€=Ình=ÌC=Ì’=Ëì(=ËÀB=Ë“î=Ëi‰=Ë>G=ËÃ=ÊçV=ʼ,=Ês=ÊcŽ=Ê4g=Ê =ÉÞ=É V=ɇ7=ÉbG=É7=É -Ð=ÈáH=ȶ®=È‹Æ=È`Á=È5Ð=È©=Ç$k=Åtú=Ç&ß=ÇOñ=Æð»=Ʀ=ƤÑ=ÆBµ=Æyâ=Æ]Ã=Æ'§=Æ<=Åß=Ŷî=ÅŒG=Åa=Å7=Äê=ijÃ=Ķg=Ä’=Äe/=Ä;d=Ä*=Ãç:=ýI=Ó‹=Ãgþ=Ã<:=Ã¥=Âì"=ÂÁT=—_=ÂmÕ=Â<0=Â5=ÁñÕ=ÁÇ[=Á›ø=Ásº=ÁII=Á =Àù2=Àϼ=À¥{=À{=ÀP¢=À(®=À=¿ÖŽ=¿ªl=¿…"=¿\ô=¿3÷=¿ =¾áì=¾¸þ=¾Z=¾gƒ=¾>«=¾¸=½æ˜=½ºÌ=½•×=½rg=½Jj=½!Ð=¼ù0=¼Ð¯=¼¨1=¼·=¼WK=¼.ã=¼ý=»ÝG=»µÁ=»ƒ=»d'=»>=¤ã=£÷‘=£Ô@=£°ü=£º=£jz=£GO=£$2=£ñ=¢ÝÂ=¢ºÖ=¢—À=¢t§=¢L'@ 9@Š)@[˜@½™@ž’@“t@.{@H’@õ9@Yo@ž…@ôC@ˆa@q@¡Ž@úþ@U©@v¢@50@ÃÛ@ŽB@¯A@Æ8@s @Òî@m9@®¶@{¦@Lð@¡[@EÂ@_*@Vq@¡û@€æ@Ò-@!/@ùI@Ež@RÀ@†L@.+@t“@X^@›m@ˈ@‰×@Ê¢@Ål@¹>@°@Ò @¶¥@8Ì@L§@?ì@š»@¯ù@WÀ@³@sc@ S@Lf@“@qâ@½]@âÍ@°X@Š@Ü@•@LÄ@ª¨@”@­@Zi@^N@ü ?þFt?úÂ(?ùeÇ?ûŠ?þ›5@ @Iu@Ù»@îõ@Ó¼@ÌÏ@ãý@Û9@l®@ b@Òá@PÊ@Ü?ÿ›?ýŸù?ûçY?ú¾«?ú±²?ûÂÛ?ý–S?ÿ†ü@i@s‰?ÿ«•?ýñ4?ýH ?þjR@{@y@[ù?ÿï”?ÿA8?þ1?üom?úÒp?úxN?û<Š?ûÒQ?ûfÞ?ú9?ú…¾?ûø ?þe|@Rû@ñe@á@í@üØ@é–@®É@I?ÿ¨C?þèí?þf=?ýú6?ý´µ?ýî?þ¨!?ÿ^Ô?ÿ©Û?ÿ†ò?ÿ -«?þ>f?ý8ý?ûú?ûù?øJ‰?ðø‡?æ8Á?Ø0»?Æ÷,?³–å?¡ä?”2(?‘€º?šð?ªz{?½ÈÀ?дæ?â·?ñI3?þ Z@îG@Y#@ †×@ -¾h@ -ûR@ -$@ñM@™F?ÿÕ…?óŒu?äEç?ÒLÆ?¾Nè?©¼“?—Ñ»?‘?ŽÙ+?› ò?­ÂI?ÂiŽ?Ö?é?ù{€@«µ@ oª@6)@Ö@).@lX@ËÁ@u@@­°@}Œ@«@hr@v³@Ü2@Yû@ -±@Î{?û¡ü?ë¦â?ÙO?ÅfË?°q?œ#o?ŽYý?‹Â¹?•XÓ?§Ü?»år?Ð}Ÿ?ãp?ô› @²c@úh@ I«@ÉT@¤Ö@ý®@Êf@ì&@mR@ …”@!K @!®Ã@!r@ b³@Cû@Ûÿ@lc@ @ ‚_@9È@†¶@–š@ûù@~@Ú9@T{@õ@ ¶Q@uê?ø-?ç?ÓÔO?¾²&?¨ß&?•´Õ?Šà?ŒÃ?š^¿?®„Ç?ÄU…?ÙB†?ìKƒ?ý°@¾v@ Ò–@é)@1y@Ó#@ÝN@Dò@ ÿ@!° @#T4@$×@%ˆ²@%!@$@{@#qm@#¡@$ -@&× @)‹@*Ö1@*Ï„@)µ#@'â@&¶<@'UÒ@(Æ2@)Á@'ŒØ@%|Ú@$ 4@%3i@%Ôï@%†@$“?@#ºÂ@#FØ@"é€@"2@ ö”@Gr@&@wé@ D@ñq@ ÑB@Éu@Ç!?ñR?ÞÃ.?ÉóÉ?³¦”?žiº?~?Œ«w?—7A?ª–Þ?ÀÓå?ÖVê?éøA?û‰ª@m @ Ûp@%@ˆÜ@Fè@†8@\9@!Є@#ÒI@%M&@&Vˆ@'Að@(_í@)¡ÿ@*Ç}@+·ý@,{ @-U@-ˆ¤@-Ó@.9@._Q@.¥$@.™ˆ@. 0@-j@+ú¢@+n›@+±ß@,f@, 1@,@@*ö‡@)Ú@)Z@)(@*@õ@+ÛÙ@-!v@-3@@+]‘@'ôî@%×@&—­@*T@-"N@.´Í@/a²@/§@0ð@0Y¿@0@®@/Ò1@/?º@.Éé@.iÍ@-íû@-k@-%þ@- @,Ã@, j@+,ú@*4@)†@'ðÊ@&³4@%J”@#‘@!]Ü@žÜ@Aë@4"@i¤@ ¦@¤‹?ûCä?êd?× ä?ÁTš?ªý?–l?F?’TP?£?¸÷Ó?Ï3û?ã¶?öß@þç@ Ôº@¡n@xÂ@‚@ùè@8@!œ¨@#Ðä@%®œ@'?T@(‚@)@*Bª@*¾U@+Ñ@+z@,.þ@,Ò?@-!7@-Q±@- Æ@-Ùü@-È@-³ -@-ë@.7þ@.+¸@-· @-4 @,÷Ï@,Ïo@,--@*¡K@'ýè@$ªý@" ï@"@%þÂ@)öD@,k@-›@.#_@.NØ@.e¿@.@.ª…@.n\@-©8@,;p@)œ9@$»²@3ü@-ù@>›@V<@3Ó@$@))õ@+¹F@,»q@- y@-TÜ@-δ@.Kš@.Æ@.‡4@.^á@.X{@.s@.z@.X‘@."ƒ@-ê«@-»Ó@-šÚ@-3@-‡ @-Uy@-@,ç$@,Ë}@,¸æ@,Â'@,ß•@,÷@,ý¦@,ãÓ@,¨E@,q¶@,SÝ@,V™@,Š›@,¹â@,K@,M@+˜Õ@*ô¶@*c©@*4@*K@*N2@*š@)Ñï@)€%@)Œ@($@'$@&¥³@&Úå@'9ø@'T•@'Ã@&k³@%Œ¹@$±z@#ä-@#¨@" ø@!·@"Eõ@$ @$¼m@#f@p·@Äþ@R@-Û@:@>?îø?ÙC^?Â`?«ø?™Ý”?” ?œÑw?¯£·?Åž‡?Ú¯–?ít–?ý•Î@žÔ@ b¤@<:@HÉ@¥O@q÷@Æ@¹¨@ X×@!’k@")~@!©H@ =<@r‰@ ‘I@"ÏD@$˜¸@%?Ì@$Á)@#)ø@!K@Üñ@hô@^@µk@!²È@#¿°@$ÛÊ@%5<@%6ž@%ï@$¡@$¿@"îN@!D@Ý@ô˜@[c@ ä@s0@:Ú@!߆@#5ô@#¦µ@#¡˜@#_r@"ú¢@"¾W@"àÛ@#%¢@#AH@#.ê@#Ž@#o@"ÇZ@"5Ê@!{ñ@!Z@!A»@!ª@!ÒŒ@!g@ ¾™@í@ „@Ýò@ù…@ˆb@ôš@ßM@Bk@…¥@?@¥î@[‘@¦@I@_1@j@NÇ@ @@Á@„•@De@ûý@ȸ@Èu@ê£@¼@ï@ñ9@ÑK@«y@lÚ@«@@d)@i€@–I@Ã{@Õœ@À*@—¼@wQ@]@IØ@B²@P{@cê@N…@ù@®3@i½@Nc@\@|²@‹Ÿ@vÞ@O‘@,†@ Î@Þ@£‘@z^@e.@R`@,@Ø"@)’@'@ˆE@èœ@°§@!@!x@¨@åÍ@>@2È@Ûw@Ý°@I@M½@T‚@<Ü@™@û@Þ¾@Äá@§f@ã@X³@7:@Õ@ß‹@ŸÄ@tg@oè@yB@aA@1ú@Œ@eK@»v@§-@)ª@˜C@Î@Ê}@óž@òË@âc@Ér@·î@²â@™X@l5@VS@MÖ@!°@ÏE@y!@:j@&<@A™@l*@sÀ@@'@÷@ÎÜ@°Ù@jV@c@ã2@Ô0@è @³@ò$@®Å@R•@Øè@xB@|¦@´ò@·5@j#@ À@à±@Ìú@Æ@›@¢»@>ø@ ðç@ ¦¹@ =ä@ ¯|@ j@ ’³@ x@ -^Ã@ †D@eÕ@ d@ *@4Ä@˜@ò?û¡Ø?õÒ?í ‹?åã?Úð¨?ÎçA?À²¹?°I÷?ú½?‹vM?|_á?zH™?ˆä?šÃ3?¬º6?¼ÃÇ?Ê—æ?Ö@/?à?èpO?ïb?ô8Y?øĬ?ý|(@òÐ@¯è@ê @¼Æ@dÿ@4@¶Ë@3l@c@˜@gÛ@ª{@¼@£@ŽŠ@«@á@ Î@ 5@ -à@ ?R@ A|@ 2’@ (Ù@ 8^@ N@ =H@î!@I?@#ì@ƒ;@nã@y±?úT>?ø7?üc^@®;@}À@=ã@% @p©@o•@~Ÿ@ªŽ@ÀØ@¥E@v”@\‹@Q@I@4F@@@ÏX@š@l@BŒ@$@ -@J@΀@X(@¸u@JØ@K8@zÄ@”x@žÍ@ž¥@Žð@nü@2Æ@ß7@©@43@È@%¨@ l@¨@Å)@€“@Fš@Ó/@6ï@4¡@ñÃ@©\@èå@Ь@”B@kb@kÞ@YÊ@+¡@ @ç@ñm@±ƒ@ˆa@w£@\¸@HŽ@SR@f¬@`³@4ˆ@ío@’M@&?ÿ}`?þÖ§?þ?üó?÷ê†?ð‹Ã?æV?ܘ`?Û¹£?äÿ?ðO–?÷eN?úÖ?ûåú?û]²?÷<)?ï$Z?év.?ìñ×?õ6†?úµ€?ü}L?ü á?üR(?ûÃE?û"?úÃ4?ú½ã?ûT?ûX#?û„?û¦þ?û¯¸?ûk?úþk?ú–Z?ú2¬?ùíO?ùã_?ùýõ?ùðm?ùn¸?øS?÷C?÷E_?ø ?øz?øIe?÷×h?÷C?öWý?öFû?ö¯Ù?ö´Ý?öÂ?õQ›?ô‡c?óåz?óÊù?ô ^?ô€+?ô¸Ø?ô«?ôR-?óÿù?óðõ?óÐ?óX ?òðZ?òú²?óI?ó„Ç?órÈ?óÊ?òj?ò ’?òd?òPs?òg•?ò'í?ñy?ð9…?î0Î?í>?íeX?îÝ?î]ü?îŒ?î4Ä?í¸Ö?íÄ)?íò ?îx?î}0?îÙc?îßÄ?î© -?îUÅ?íù{?í¯Ë?í•?íªì?í½’?혥?íG•?íB?ìåÑ?ì¤"?ì0€?ëáu?ë×4?ëÄ‹?ëzä?êÈa?éy”?è0g?è2/?éO_?éÞ9?é`þ?èÖ’?èÔ‘?é -&?é3?éjç?é¥?é”?éSŽ?é<Þ?é5?é;?è®C?è`ì?èVÅ?èlr?èP¿?èñ?ç´H?çfò?ç$q?æü ?çQ?ç]˜?çYç?ç?â«?ã)Q?ã­ë?ã•´?ã?âʯ?ã ã?ã_n?ã|v?ãd?ã:r?ã%q?ã'ë?ã>¼?ãWt?ã9?âÝ0?âo?â5d?â!€?áTë?ßÑ­?߯º?àøc?áX?ᆨ?á¿J?â$µ?â+o?áŒT?à•Ò?à»?àh;?à²Ë?à’ø?à]M?àL?àOà?àHc?à0?ß™U?ßs?ߥ÷?ßÅ(?ߺ?߬8?ßšŸ?ß|¶?ßn?ßu¶?ßx]?ßi±?ßgø?ßgí?ß<¾?Þôó?Þ¯?Þ˜¸?ÞN>?Þê?Ýá>?ݾ?Ý…?ÝR0?Ý/ ?ÝŒ?Ýv?Ý÷?ܼÑ?ÛÅ ?Ú–?Ú­]?Û¸?Ü@t?Ü?Úœ4?×uz?ÔS›?Ô’Ñ?×Ua?ÙkD?ÚZ£?Ú¯×?Úð?Ú;?ÙÙ ?Ù’„?Ùjn?Ù8k?Ùu?Øã?ØÒ?Ø¿}?؉;?ØHÚ?ØA½?Ø[K?ØDÙ?×ÿ{?ײ‡?×;À?ÖŸ‹?ÖbÜ?Ö¤?ÖÉ2?Ö¢³?Öz£?Öc@?Ö=½?Ö+?ÖÁ?ÕÜl?Õ„0?Õ@é?Õ ?ÔÔÅ?Ô¥Ò?ÔVä?ÓÒ"?ÓRu?Òút?Ò¬­?ÒL|?Ò?Ñöˆ?Ñ÷¯?Ñá„?ѽ?Ñ©3?Ñ€q?ÑË?Дé?Ð?Ð -k?Ð7œ?Ðn7?Єh?Ðj$?Ð7ò?Ð7L?Ðn#?Љµ?Є ?Ð…‚?Ðo‚?Ð5—?Ð Q?Ïôï?ÏÂ?Ï‹?Ïn?Ï9°?Îû?ÎÌ®?Ϊ›?Î9?ÎXh?Î;n?ÎM?ÍÓ³?ͤ?Í|+?Íd×?Íus?Í8?Í„Æ?ÍOK?Í É?̵÷?Ì ?Ëm¿?ËRn?˧A?Ëž‡?Ë:j?ËR?Ë•?ʨé?ÉïÛ?Ék ?É1°?ÈûÉ?ÈØK?ÈÐ ?ÈA?ÈÄ?Ç”Q?Ç c?Æs?ÅÇe?Å~?Ħ?ÃäŸ?Ã!?Áñ›?À¨?¿/?½ -?»±M?¹\À?¶\?³‚x?° C?«È-?¦| ? FÚ?™Dû?øe?†â¿?uþ‰?[<¼?C×y?>:'?Nö«?i!Í?€ÍU?‹9£?”Ù?›§É?¢ Â?§OL?«Ÿ$?¯E@?²<5?´’?¶x¾?¸—?¹{D?º“Í?»v?¼1—?¼¦î?¼Ò¼?½C?½“8?¾V?¾è?¿€?¿ß?¿(Î?¿\;?¿Å?¿ªP?¿ÃR?¿õ›?À -à?¿Ò±?¿–´?¿—Ç?¿ÃD?¿õÆ?ÀY?À‡?¿üÝ?¿·?¿nÒ?¿D?¿ ?¿H?¿.b?¿ó?¾^I?½)…?º”?µP?¯tŒ?­å?±[ý?¶b¥?ºz?¼¹Û?½eC?½i¼?½`Ò?½Z}?½F0?½-?½&?½?½à?¼õE?¼Ö ?¼Ž0?¼5é?»ýc?»áw?»äÊ?»ÛO?»žú?»f$?»7«?ºùt?ºÐª?ºÍ"?ºñy?» í?º÷¼?º²R?º[z?º7?ºgb?ºŠ?ºaé?º¼?¹Ô?¹€¤?¹6Ö?¹(…?¹TQ?¹oN?¹W!?¹2M?¹?¸Ù]?¸[?¸KÌ?¸HÞ?¸M ?¸0?·Õi?·l–?·Q:?·wm?·å?·9‰?¶¼?µâY?µ”N?µä0?¶JY?¶u½?¶yS?¶a?¶õ?µD?´V$?³ê=?´u?´D¹?´M"?´/ê?³òç?³èC?´1/?´³?²ž±?¯Œ»?¬¡Ú?¬wû?­ëÏ?¯Ò?°‹A?±ÑÁ?²_Œ?²ª*?²äs?²Ëµ?²^?²?±®Š?±à?°b›?°\?°RÞ?°@¨?°¾?¬$O?«ë¡?«è?«+¥?«:?«3ð?«d§?«]?« -I?ª£S?ªlÿ?ªOÔ?ª"x?©ä’?©`Ð?¨²¹?¨Ï?¨®;?¨áÂ?©1?©0é?©7 ?©AQ?©-C?¨í®?¨¯Ÿ?¨ Œ?¨±„?¨Ž-?¨@ž?¨X?¨•?¨O?§Í?§Šg?§:Ä?§l?¦È‘?¦ã?¦‡ð?¦±ã?¦¤Ú?¦jR?¦?Ï?¦S`?¦|w?¦‰m?¦\r?¥íT?¥ƒÐ?¥KC?¥1?¤½þ?¤” ?¤Éu?¤à»?¤„1?¤-À?¤Z?£þ™?£Æ}?£ð?£ˆõ?£†Ê?£›O?£ž?£~m?£d‡?£O5?£ E?¢˜?¡”½? Z?žÙj?Ÿæ? $¿? Þ%?¡Ã? ê©? ª? i1? G6? AÄ? 9±? c?Ÿ¼ò?Ÿ*Ø?Ÿì?Ÿœà? n?Ÿòe?Ÿ¤í?Ÿ!ó?žcV?Ý?Ñ­?ÎÈ?¢X?¦â?¨Æ?QY? ¶?)g?L¼?E&?47?ñ?œÁe?œ|Ì?œ "?›Ì§?›?›Ya?›4 ?›jH?›²v?›Ô´?›È@?›vù?›'?šm&?™ËÌ?™v#?™«V?š$Š?š5K?™­¦?˜çæ?˜¯?˜Õu?™+?™A®?™Ju?™c­?™hÅ?™9?™ x?˜ñx?˜ÄÐ?˜š‘?˜vG?˜+B?—ÜB?—¶Œ?—–å?—„F?—‡p?—Z¯?–Ò[?–M[?–-»?–j?•ž?•‘?–2~?–½³?–Á?–€º?–^,?–@?•àÁ?•Ó?”_x?”hu?”ÝH?• «?•¡?”þ“?”Øã?”‰ù?”†@?”Ê?”ßò?”©ð?”Lb?” ñ?”[?“ð«?“ÙÒ?“Ò‚?“¦l?“m??“q±?“}Ì?“D˜?’âÍ?’·Y?’§4?’˜+?’e?’|¹?’cÄ?’Lð?‘øw?ìŒ?¤®?pÃ?$´?£t?Ûª?‘,–?‘hb?‘hþ?‘\?‘&¶??ém?ò§?p?¦Û?v?-R???Ú ?’è?Žy?¨Ã?ª¾?d?‡ßÆ?ˆk?ˆ´?‡Ý ?‡¡)?‡f¹?‡ƒ?†e -?†u7?†€w?†~½?†Xã?†,Q?…é¢?…¡?„ Ê?„?„í×?…\ä?…k?…3?„ê§?„Ã?„£I?„”µ?„Ž®?„p2?„$;?„í?„GH?„CØ?ƒÜ?ƒ…?ƒ¬®?ƒÕ?ƒ‹#?ƒ@d?ƒN@?ƒw?e)?eÂ?d½…?d§?c“÷?c¾—?cÔ¯?cã?cç?c‡0?c«°?d?cÅÉ?ck?cK­?cO^?cdO?cjÈ?cá?b³ ?b´5?b^¸?a§ˆ?aLŸ?aA?a41?aOá?ax ?a|?a÷?`žW?`jR?`PG?`Ž?_zé?^ ?]²?]¬?^v?^ÜÚ?_c'?` -?`0?`!?_ðA?_œË?_S?^Þa?^ -?^0c?^êˆ?_Wç?_x-?^î˜?^ -&?]úe?^‰(?^°•?^yá?^+_?^Æ?^X“?^?^fV?^Â?^j?]óž?^(ä?^%_?]ly?\ÞÞ?\—†?\¬?]QÔ?]W?\ˆŠ?[ß^?[ðT?\B'?\M/?\Ÿ?\&Í?\cÑ?\»?[Œ„?[¡}?[©X?[ «?Zfù?Yå?Yô?ZV?ZiQ?Zbè?ZD,?Yì?Y¹Ù?YíÙ?Z! ?YðÖ?Y>?X/P?Wõ?W”S?V?PÉf?FWØ?C)«?Ls?S×9?U_ ?T¡J?Tql?T¶Ý?Tdß?R‡â?N8Ñ?GÉ&?Gþc?N1+?Pâ¨?M3?J˜?M;,?P‚?P"?OÖš?Q-ç?R–ù?Râ?R¢ô?R !?Q‚?Qƒp?Qõ?QðS?QuA?QK?OÂ?M¨¢?NeS?O^ç?N2?MÚ^?O­þ?PÞŒ?PË?Pªý?Oµ ?NØ­?Os:?P?P!?Oàq?N¢£?KñÅ?JŸy?KÚ?J—±?J!ñ?Kï?K€Š?Kæõ?MF¼?MçÕ?L±?J‡8?HÐŒ?I3á?K à?Ku?K{w?K®e?JäH?I„ï?HÔ>?HïÃ?I‹Ø?J„¢?J‚Q?IÖÿ?H?GkD?HfŸ?IË?J¦?Iéž?IÃ#?I›Ý?I²D?I?HýÎ?H»0?I'¢?IN?I Š?HÉË?H®Ø?HŽ@?HY?Gä=?Gž‘?G‰¶?Gzã?GVâ?G ÿ?G8R?Gê?Gï?G„Ð?G”?GÀ?F£?FžÀ?F€Ë?EÅÕ?Eó?DóÞ?E+?EØ?E}·?E1m?E[?EO)?Ei»?E‰š?E°¢?EV?Djì?D?DÐ?DA/?Dœ?CÈ?C…?C:µ?C+—?C v?CK?Cx´?C›Q?Cø?C6?BÁÂ?Bxã?B †?A¬è?Akú?Aå?B)+?A§k?@ñ-?@úZ?A ?@Ö?@`ÿ?@H*?@íD?AMÛ?A+!?A "?A*Þ?A:o?Ay?@Èx?@«ˆ?@J¹??ìU??ú -?@L0?@mæ?@(?@ô?@&L??ñ!??Qµ?>ã€?>à?>ã???ú??Œ4??–l??8º?>æ½?>¤?>œ -?>Ï:?>¯Ú?>i“?=ë ?=Ƕ?=ùR?=üb?=ÄÑ?=OŒ?= »?<ÔÞ?<¥¥??9Cû?9‰Q?9=?9p2?: >?:C÷?9îa?9IÃ?8Ë|?8”2?8Ïs?8î4?8p?8U?8Y?84B?8‚É?8’?8-o?7ñö?7ÒÇ?7˜¯?7fæ?7J?7RT?7FÍ?7*?7$ž?71·?6’z?5ýo?5ú#?5ó5?5ÃW?5T„?5Ö?5%¡?56Ì?4Ö?4Jç?4Á?3ïk?3®,?3µ?3š?3Å?2¬ -?2Ç?3 ²?3 ô?2Tõ?2 -:?2r;?2qò?1Úˆ?1Š?0Ý™?0ñ?0â?0¤o?0/·?02Æ?0zE?0£I?0ÁK?0a8?0$Ù?0A?0`q?0î?/³?/EÙ?/^—?/$?.7¥?-òÜ?.Ü?.7Ò?-øû?-K´?,¹_?*]?%?|?"ò?$ú4?&ÝM?'Vs?'ÿz?)k”?*WÉ?*R%?)î"?)z?(Ûf?(Ã??(ÎÞ?)Q:?);Ê?)O^?(èù?(c¹?(«w?(~ä?(Ì+?)[O?) 3?(qˆ?'¶f?'Ã.?(Gf?(SD?(u?(aŒ?(ÒQ?(OT?(¥?(¸’?(ív?([ ?'§Ü?&éi?&š®?'•?'“u?'éŽ?'Üa?'ˆ£?'4ù?%y?!QŽ?q>?"Gß?%{?'?'¡s?'©2?'°K?'–þ?'!`?&Û2?&˜×?&…%?&Á/?'ê?&¯Œ?$©ê?!q`?!a?$LÙ?&h?&'û?&_Ž?&y=?&-?%/n?$­?%<?%¿H?&p?&"?%ð÷?%À??%qê?%"ÿ?$ùi?$›v?#ll?"!v?"~?#¯d?#Åq?#r?#X˜?#Bn?"íÚ?"Š?"ÑŒ?"õk?#–?#sÎ?#wi?#hJ?"ý?"h??!ýÒ?"Io?"’Z?"Sˆ?!Þ²?!´Y?!ú‘?"0‡?"Æ?"A?!àB?!k=?! ? ¶¶? ~?? —¼? ó0?!ø? 5É?ɶ?&§?y8?¥Æ?ê?Y½?c?—?d -?ð3?P`?7?åM?ù¬?ÿy?”þ?¦(?5J?,?ð?ˆ[?ƒØ?—£?¤V?”R?Pì?¬?Aº?,è?©?~®?þ(?ÛÅ?æL?µ÷?ÃF?‚á?½(?e‰?º?þ?‹ ?ØŠ?©~?Öš?^ñ?¦?@ -?+‹? !?ȇ?À?†?mÊ?uA?%æ? }Y? ™? ‰°?!H? <>úÌ)>í`‘>Ü È>Âè¡>´ºø>ÂL ->Ú[ñ>í‡>ù~H?f*?%l?jâ? -Ž? ê? •‚?Øá?õô?O?ž ?¡D?ïÛ?‘{?O9?Ö.?.T?™‘?¡C??œm?Þ?_v?x"?¡Í?.?3·?ú‰?oó?2Ñ?B[?`Ê?/#?ÀG?™ú?Þ?3?)Ì?-?½"?¥w?6³?x%?–€?‹v?a?F¥?Gû?=ý?(¾?B?8?|R?²Ý?C*?ÈW?ïÞ?¦? ?ø?É ?¬ƒ?ÜÐ?B9?b§?éÀ?5r?Ö–?x -?о?º ? Rd? Ää?ß?Í*?ª¨?ë?–?•û?O†?Š—?€¦?¤k?Wb?ê÷?Å>?_ä?ór?©Ï?Ñ)?Ôá?àô?Ü*?Õ?Àï?8°?…?D…?µí?â?Ùˆ?R?Y§? -Ï?‹Ø?br?·‹?nÌ?Õ?Ûá?Õ?¨?=ã?ÅÁ?.R?ȵ?œP?¯Æ?¾Ù?’º?f?-š?‚? ÆÀ? ‚7? vF? F¸? bA? ŒZ? ùŒ? òQ? -io? È6? -ö#? -öu? -ÌQ? -ÈL? -·g? -“P? -SV? -/c? -]Ò? -9? -Å? -*ž? ×A? º? ³9?]J?¶e? ud? -r1? -“? -PÄ? Ø$? - «? -d? -6? é@? Ç~? ¦‚? †P? vÑ? u¹? Xã? $„? #W? ,?ÓH?¯~?¸¨?«??Mæ?ô?ô?õä?çS?¯²?_Ï?N?K!?,Ò? h?éá?¼1?rF?'?'v?;?Ìé?ã˜?èœ?ÊÕ?„? Ñ?M?6v?2h?ñ?ý€?Õó?¢à?Ð?mo?PÑ?A?*Ô? ?ó±?Ü-?¿¸?Ÿ ?y“?V^?9h?ï,?kœ?`?|‘?$?s©?Y0??Ü?'V?Î?ºÉ?1Ô?Â?h?S;?òâ?Ý9?ìK?æÓ?ö®?ðH?Ùd?ÁN?©@?“q?{?^è?D ?0ú?`>ÿ·”>ÿaj>ÿq>ÿs:>ÿ^Ù>ÿ9Ã>ÿD>þ½>þ€+>þGJ>þ7ô>ýî9>ýCg>ý>ý:I>üíÞ>üQ>ûØ >û»)>ûZ>ûæ>üŽ>ûŽ¯>û>úÚ•>úµb>úh>ús>ú4Û>ú‰#>úzI>ùX”>øÂÀ>ùES>øòl>ø]“>øCÏ>øJ>÷ËÜ>÷ö­>øEÑ>ø~>÷T>÷>÷ ±>öà6>õÿ(>õº_>õ‘Ú>ôØ >ó¸Í>ó»z>ô -h>ô²N>ôØ >ôTc>óe>òup>òÊW>óT¿>ó[>òÓn>ó`ø>óº>òc°>ðÚ/>ðáé>ðç{>ð¾o>îåz>è<*>æYô>ìw>ð=>ðñ4>ð{">ïÊÃ>ï¬>î~>í¿Ý>îxm>îø¸>î³2>î`d>îô>íio>íÃF>îUQ>î¸>îÉ>íÖ>í-3>ìÔð>ìÄ*>ìÊ°>ì®Å>ì”>ëãŒ>ë³b>ë^S>ë">êÜy>ê²+>êxµ>ê8v>êZ‘>ê_>ê1¦>éÆà>鉛>éœÕ>éz¼>é´>è­>è¹i>è ï>è\–>è N>çÈh>ç´¦>çŽå>çS¶>ç!±>æõö>æ¾ >æ!Í>äÿT>å+>åÝÛ>åÞU>å¼±>å“a>å]Ë>åK3>å;Š>å$>äá¡>ä»°>äž>ä…¨>äj>äF¾>ä/>äª>ãöÊ>ãÍ>ãÃq>ã¡T>ãVa>ã*Õ>ã&Ê>ãY>âü®>âÔ>â¬>â‹F>âXN>áþ1>áÆî>áË>ᡬ>ávÖ>áY“>á3>á½>à½y>àco>à&Ù>à8Ý>àT¹>à1™>ßà²>ß¼Ó>ߢ;>ß=»>ßÐ>ß ‰>ÞêR>ÞÇ >Þ´>Þž>Þ‹q>Þb>Þ) >ݼ>Ý€>Ý@P>Ý’l>Ý{›>ÝG÷>ÝÛ>ÜÛ™>Ü´~>Ü£:>Ü…Ó>Ü\»>Ü+_>ÛõË>ÛÐL>Û«ù>Û€>ÛZY>Û4C>Û ->ÚËË>Úo>ÚHÎ>ÚC0>Ú-â>Ú>ÙÍÜ>Ù˜û>Ùl€>Ù3>Ù°>Øúï>Ø®±>ØN>ØN>ØT\>ØAN>Ø.>Øè>×Çî>×€/>×Z¦>×k1>×a§>×J6>×+•>Öÿ«>ÖÖG>Öªç>ÖyQ>ÖXô>Ö3'>Ö>ÕÛ˜>Õ¯ñ>ÕŠ>ÕeÜ>Õ=×>ÕA>ÔéÙ>ÔÁ]>Ô©·>Ô“;>Ôo”>ÔDI>ÔÄ>Óý‘>ÓÓd>Ó¨.>Ó|—>Ó> >Óö>Òí>ÒÏÛ>Ò£)>Ò™Ž>Ò³é>Òg¸>Ò>ÑÃ\>ÑÉB>ÑÇÍ>Ñ\”>Ñrñ>ÑU>Ñ}<>Ñ36>и—>ÐÓ°>бo>Ðu>ÐJ‡>Ð7Ü>Ѓ>Ï}A>ϸ{>ÏþU>ÏÔU>Ï¥ë>϶^>Ï@ >Îu">ÍÊ>ÍÛ´>ͳì>Í06>Íy×>Í ›>ÍEo>Í_>ÌÈù>Ìá>Ë–è>Ì §>ËY>Ë”=>˲>ËŽ>Ìï>Ì >ËÒÀ>Ë>ËŽE>Ëq!>ÊÁ³>ÊÓp>Ë=¤>Ëq>Ë Þ>Ë-_>Êä>ÊÚø>Ë¥>Êö>ÈÚv>Èž>Èvï>Èu>Çîå>ÈUt>È@>ÈnÓ>È¡h>ÈP>Èö~>É >È€>È%>ǾØ>Ç2e>Æò;>Æ£=>ÆA²>ÅÜ®>Åzß>Å»>ÆI>ÅÞo>ÅÊ>Ŭ>Å»>ÅžŠ>Åb0>ÅQy>Å•>Ĺ:>Ä’_>ÄnÂ>Äœ>Ãð»>ÃÏ$>Ãô>Ãsü>ÃYè>Ãy>Ã>Ãs>ÂÝ>®!>‹ô>ÂbŸ> :>ÁÑ>Á}>>Á2j>Áö>ÀÄž>ÀŠc>ÀZæ>À$¨>¿ùc>¿Ç>¿€Â>¿h6>¿V_>¿!>¾èm>¾¹>¾™§>¾zó>¾Y¥>¾4Ê>¾ ->½Ú½>½¨œ>½x«>½K²>½™>¼óe>¼Éd>¼˜°>¼\¸>¼-v>¼O>»Ä]>»P£>»)#>»J)>»- >ºý>ºËr>º•t>º]Ý>º$T>¹üË>¹ÛO>¹«¥>¹‰>¹i;>¹?Ä>¹_>¸ïÙ>¸Õ >¸¨~>¸l+>¸*±>·é@>·œÒ>·5ÿ>·B¨>·Av>·Z>¶þ>¶Úõ>¶µ>¶‡^>¶\2>¶4ã>µÿH>µÑ2>µ¦4>µuê>µ:‡>´øƒ>´j>´@c>´g`>´^G>´*k>³ô—>³Ñä>³¶7>³lû>³!¿>³1î>³ >²V“>±æ»>²p“>²Žñ>²ƒg>²‚Š>²n>²Bí>²l>±×ò>±>±H&>°õ[>±ö>°ùQ>°óƒ>°ºr>°w‹>°WK>°ƒ>¯Öð>¯Þ±>¯Õœ>¯ˆJ>¯s>¯ô>®ÇÎ>®„Ö>®3s>­Ü×>­°>­¡Ä>­›F>¬h>§”ê>¢¸7>¡Aá>¦L\>«º >¬Â>¬K>¬*i>«t>«ó>ª±ü>ª>ª{Q>«c>«O>«9ì>«6æ>«³»>«øª>«æÎ>«0D>« ç>ªJ…>©>©i>©N²>¨i§>¨@~>¨Š>§—“>§ˆù>§Å4>¨4G>¨e>©G>>©,t>¨jE>§2±>¦„>¥³>¥É>¤)è>£ý>¤7Ð>¤à>¥ºô>¦>W>¦Ë>¦œ€>¥ñ?>¥¿>¥f>¤:ñ>¢äb>¢â9>£õ>¢áŒ>¡Ö÷>Ÿ÷»>žË)>¡8i>¡Í5>¢\ö>£ß>¢ÒÀ>¢‰Ç>¢Õ>¡²b>Ÿóa>œ`Š>º>¡Xü> Ê>Ÿ4> ·–>¡ò$> v!>žø*> ‘C>¡ç\>¡3>Ÿ­6>ŸBÌ>ž{>ž_Ô>¨>ž&À>² >U>Ÿ5×> I> t%>¡¾>¡#=> _£>ŸÌX> &|>Ÿ$>|O>| ><>Ža>ž–¡>žwÊ>Š>œào>œ[>œØé>žRm>òÏ>ž6B>ž-,>žS•>ž<>ž=°>ì>Q9>>œL->M>ð>ž—>ž‹E>žm~>ãÏ>œ{D>šù§>›g>œ8¡>œ}ï>›s->›îÖ>ÃT>}>œßõ>žH>²Ù>œH>šü€>š^^>š«m>›Ž>›®,>Mñ>z>œ¥¬>œ¢U>&f>œ\„>›6˜>šHn>š` ->›‰>›Çø>œ;×>›í–>›h>šø»>šÍ‰>šKG>šM>™ó©>šÏ>š2°>š‡…>š«Ö>šdé>™Øv>™y¸>™8ƒ>™\>˜øL>˜u>˜Y*>˜Œß>˜‘q>˜X×>˜^>—ðš>—ç’>—ñ¹>—Ú­>—Ï>—ÃÐ>—­q>—›x>—ˆÑ>—eÔ>—*D>—/>—+½>—¸>— ->–÷i>–ßá>–Ð`>– >–ªf>–2>–|Ñ>–jO>–Pï>–3@>–%>–>– Ó>•÷ú>•ÜÇ>•Äi>•®>•ƒ«>•]>•`l>•W¿>•K|>•)ç>•¨>•>”þÿ>”æ}>”ØD>”È >”­»>”Šœ>”:>>“Èm>“Äü>“²3>“ôf>”n>“Àz>“šò>“¬>“Y>’®>’éS>“>í>“'¡>’ø¯>’¢P>‘£©>’­>‘ >‘û»>‘± >»d>‘Z>‘äg>‘Rî>´º>Õ>\ÿ>Žÿ§>Î÷>‘5Å>Þ >›>ÝE>•)>íÀ>g_>¨Ç>‹î>‡Å>œ>˜ï>[>^‘>hh>Ko>ZÄ>ˆ+>}@>AE>X>Ž>=G>6ý>Fù>ŽÙL>Žïp> >Ž—=>F:>qé>Ž¡:>Žæ8>CG>l>ö>ŽV>Žv>Ž1Ó>Ž°ª>Ž¦ë>ŽÄ>Žíh>!Þ>Ž¾â>‘+>Gé>’ý>Üz>Ž]r>uŽ>'>žÙ>º>ŒDÄ>Œ1‰>ŒUã>ŒÎ3>¥>Œ©s>Œû>Œ >‹íë>‹Ñ ->‹º >‹ýº>‹ÊÇ>‹¿Þ>‹Hì>‹A5>‹–ý>‹Å>‹K]>‹>>‹¤t>‹.G>ŠðÇ>‹¼>‹k(>‹WÇ>‹YX>Š‚³>Š 5>Š%>Š f>Š¥>‰ÉÓ>ˆŽß>‡òë>‡.)>‡Ö>ˆHû>ˆcì>ˆt¨>ˆ­°>‰W`>‰­Ÿ>‰ºª>‰a›>‰>@>ˆzù>‡æ`>‡XÅ>†„>†×Û>‡S>†Éƒ>‚\T>}é}>„Ù“>‡Ä*>‡ú­>‡Ã:>‡H>‡ þ>†>„²œ>ƒpT>‚µÕ>ƒf?>„/ >… >†›>‡>‡ƒˆ>‡£s>ˆß>ˆ>Q>ˆ-Ç>‡É>‡_>…÷r>„¤j>‚Æj>­9>€Û¦>À>§7>€ä|>Íú>‚§>ƒTS>ƒØ%>„ß9>†2È>†šŽ>†Ì>†èÅ>†˜>†-é>…ðT>…e®>„5–>ƒÇ>>Ò>~ßY>wãY>q¿ÿ>pï»>r#>u4ƒ>y¹'>}Yš>€hB>‚Z«>ƒ›…>„™n>…qÈ>†1>†û…>‡xÀ>‡™>‡†>‡1¥>†*>…>„ m>‚úñ>àþ>€St>|ã>yÝ>t—'>ogˆ>iY€>e2>fñ°>lT>rÈ>w’ª>}/>€NA>ˆ§>ƒ0þ>„N>„üK>…Ba>…»¿>†FT>†•‘>‡Œf>‡ä&>‡ŒÄ>‡dð>‡·é>‡QL>†•¬>…¦·>„Þu>„Jm>ƒV>z9>~°(>y®>tâ:>p24>i3>`(‰>Yº>W›#>\^f>dx>jÃ>pçN>vT>zE>}B>kš>^Ÿ>ƒMc>„æ0>†?4>†¿>‡ß>‡Œ÷>ˆ]>ˆWÈ>ˆo¿>ˆÔr>ˆè>ˆÿ±>ˆö„>ˆ,m>‡úX>‡ýó>‡Ë‹>‡ÁH>‡ƒI>†“>…xÀ>„Œq>ƒ Ÿ>ëÍ>€Ì`>}¬>xâœ>tIf>n ->f$¼>]¦•>T„{>L´¼>M)¢>TÖ°>^;>fº>lb!>q¿¦>wá‡>~ h>€±>%õ>‚ >ƒ±y>„;X>„h>… -q>†C>†xò>†‚«>‡BR>‡x0>‡6>†ÕC>†äª>‡qn>‡P+>‡[í>‡”s>‡G*>†ïG>†ê>‡§>‡°>†’Ò>…Fó>„((>„‚]>„Ž;>„’å>ƒì\>ƒ«>‚ž0>‚%f>‘ >€oÔ>}í=>zÕÍ>w† ->sÔí>nhƒ>>bW’>ZÞµ>Rá$>IjÔ>@M¹>=J ->C!Ì>Ký@>SûÂ>[a >aî›>fáQ>k2Â>o 0>rœ%>u†&>x5Á>z¦Ø>|§ã>~SÎ>ÑC>€9>"ë>£ä>‚ Ó>‚`T>‚¦‘>‚س>‚j6>iÀ>‚¶ð>ƒZG>ƒn¯>ƒw‚>ƒx³>ƒE>€ì±>š+>ƒ>>ƒT'>ƒ#þ>ƒÅ>ƒö>ƒ£>‚ås>‚Àœ>‚žÄ>‚|C>‚Tè>‚'I>ùm>Ç> >N’>Z>€­Ž>€gã>€">S>~nË>}U>|+ó>zê>yqP>wÉL>uØ>s’ >pú>n+;>jè>g(>bæ¤>^[>X²>Rž°>KÐe>D0Ú>;žW>2K½>.¤/>5»Ù>>yž>F*¡>Lü4>S¯>X7›>\æ—>a&Ò>dÂ`>gÜz>j•1>lð>>nìŸ>pD¸>qyö>rÙ>så¥>u+)>u÷•>v€Ä>u×>púw>s -Ä>w„¸>x;“>x!?>x9×>xÖ>vrU>tÆ‹>w>x•æ>xœ\>wº>uç>vܹ>v:N>p#j>tLB>w¾>>w;Ô>w™>wvY>w]ô>vg^>ráŠ>t}'>vwX>vhð>v2<>tÆš>tys>uu“>umy>t²á>s.Ò>t:€>t¥µ>thÖ>t˜>såp>s¨E>s`«>sø>rËë>re>q™º>q‡©>q_·>q2æ>pÞ>pyb>p (>ozL>nØØ>mR >kBM>jϨ>k·A>kÀ‚>j©í>h…P>h¹¥>hCÇ>fþ§>e3>cvd>aë¥>^¨ë>Zƒ#>YŽe>W—>SM >N¡j>J>Ü>B÷3>;èü>8Šî>1Ú¹>)”> v)>˜Ú>$ïM>-g >4’>:ëœ>@±%>D',>EôÄ>M7Å>QÖK>Tuh>Wˆ>Y¡ã>[eö>Y#„>Rî°>U¿f>W1“>]ú8>b>b„ú>c-–>c¼>dÄ>dQ:>d€>d«ó>d»Ó>d«>d›F>dÒÙ>dk >dJç>dÑ©>d~Ä>d-5>d®“>d¿Ý>d¤ª>d†ë>djK>dMn>d)Å>cý^>c¯ñ>bê?>bs>cQ,>c_.>cD_>c >b®>bá>bhr>b‚ì>bbŽ>b0ò>bï>aê‘>aºÕ>aˆH>ad>a> ->a -=>`ÒÔ>`¶¿>`„â>`2,>`Ò>_Û®>_Ì>>_šw>_AB>]°À>]é>^<&>\—>]c¯>^]c>^8W>]ý4>\a>WT>ZŠ­>\wð>X|Ì>YÇ>[³½>\Q>\ -¬>[áI>[Ñ>Z´›>Z/â>ZâÕ>Zâ>>ZŠ±>ZUØ>Zl²>Z5>Yéü>Y¥M>Y‰`>YZ >YÙ>Xç˜>X¢š>X¶>Wã(>W³•>W>WRR>WÖ>VÅy>VwV>V%T>UÂ>TÊN>T?ˆ>TŽ@>T6]>S³²>RþÍ>Ro>>Qæm>Q4Ú>PŸ>Oâ+>Nß¾>Mµ²>L´Ñ>Kœ›>J2û>H†'>F˜®>D`«>AÐÝ>>ÚÛ>;tv>7–ò>3(ô>.4Ý>(м>"Ãg>÷•>Ýà> @×> ÏZ>Œ¯>Ùâ>#À>(š©>->1òk>5ÐÕ>91‡><,>>Ž”>@•U>B_>Cø*>E@T>FS’>G9Ó>Göë>H›¨>I×>Ioí>Iã»>J0>JI&>J]Ç>I¹Ú>JIi>Jó>Jü >KE>K!ã>K >Jm>H|ˆ>I‰>JÝ&>JØÑ>Iù0>CÑÄ>DÔÒ>Iÿ>Jz#>JdŠ>JI¡>J-Y>J™>I2>I“½>I—2>HÚÏ>F* >G~G>I]>Hò\>H×Ô>H£®>HVÅ>HS/>H?>GéV>G…±>G¨^>G£~>GzÛ>GSU>GÈ>Fí>FÃH>F«.>F¤#>F|å>FTÌ>F-V>FW>EáX>Eºû>E‘G>Ee>E4‚>E>DÞU>D™=>Di>Dsd>DP">Dç>CÖ*>C¬Ä>C`º>C]“>CWw>C5Ÿ>CÈ>Bå›>B¼H>B“ >Bl»>B@“>B”>AíÒ>AÊO>A¢·>Aw.>AB>A>@é%>@Ìî>@›>@7r>?¯°>?•ó>?Úë>?½;>?’Ï>?jì>?c4>?0>>ØÝ>>ð>>nh>>sé>>k>>Hò>=ù’>=VO>=g><Á!><¾$><Òz><·`>;Úê><®><* ><k>;Ã>;M >:ýú>:Ý=>:ßA>:°->:ª#>:>:²>:>:,>:(+>9ðà>9‡J>9Q>9PD>8±ž>6+>6fY>8z@>8– >8A>8 f>7þ >8b>7n>6öÐ>7„`>7Lô>75e>7,›>6ð>6¨t>6ö>5íl>5j»>5–>5ôþ>5È^>5%>50p>5 >4Ní>45²>4’Ê>4x ->45æ>4ë>3Ù»>3‹<>3C>3,¯>2õ€>2¸P>2rý>21]>1î@>1Ÿ)>1LÕ>0ðw>0¥|>0N+>/áù>/D„>.³>.'>-Ùf>-2H>,ô>+Ò~>*ð >)ïÄ>(ÉÓ>'n¹>%ü'>$P|>"`¥> $ê>’³>¿>;¸>b+>™> - â>Õ=ü\=ëS&=éd~=ùb[>,X>u¤> />4F>Ë>ê >šÒ>ë²>ß> Z¿>!ݪ>#7Æ>$@S>%r>%×j>&sÆ>&öt>'c|>'¾L>(è>(AY>(ï>'Û3>'Ý>'Â&>&Ûµ>'Wš>(Éy>(är>'ÑÑ>'`i>(ŸW>(³Ñ>(Ç}>(Ê`>(ºÄ>(§Ñ>(• >(|®>(@¢>(->(4E>(x>'Û@>'ßj>'ÒÓ>'¤¨>'R6>'d>'bî>':R>'/>''>&á@>&Å›>&‘>&{o>&U¶>&5>&.¤>& >%ép>%Ì[>%°€>%‘>%mâ>%L»>%*ª>%>$æp>$Æ€>$©I>$‚h>$c—>$F©>$%$>$Ã>#Ùº>#²ù>#™>#yã>#9F>#£>#È>"ùa>"Ô>"ž‰>"‰[>"rÂ>"Qš>"/õ>"A>!ì\>!Ç>!¢ >!†;>!eÚ>!DU>!"> ü¥> Ð,> ·0> ›¸> zw> X)> 3¡> E>ô)>Ò>®‰>‹™>k“>HÞ>N>y>ߢ>À>sl>¹û>3>>Ï>{>üM>Ù‹>º«>˜Ä>v³>W1>6>_>Ôˆ>ŽT>lÕ>eò>Xž>-t>>úâ>ç~>Ã">¤÷>†ß>Uí>êc>ü±>×>ݦ>±Ñ>ŽS>qð>C°>6R>ð>ý>Ùü>·<>™i>u¯>VB>:@>N>ø;>Ø´>·Ê>–F>ui>O¦>/„>úd>s > ->6>VJ>`È>PA>#Í>à,>à’>Í¥>°Ç>Œç>ol>C > v>ûØ>èb>Óa>¬Ä>+;>á‚>(a>Ì@>áä>Æ°>œ/>¦¼>Md>ö>4ì>(ì>x>ðà>À·>¥„>æÜ>χ>Ct> š>Íß>µ¿>Ö>µd>~ >qz>LW>8)> s>þ¦>Ëù>°¡>žˆ>€¸>Q>ãã>U>û/>¼À>®Ê>o>~h>Uß>*¾>,>Ä>ñ„>Ò¨>³M>’>o>M.> ÿ>ÿY>ê >¹:>¸×>Ÿœ>÷>X)>>->%> þ> ÅÁ> ¯> ž> V]> HÛ> G˜> /Û> )> ºM> R‰> X> ¦>Ùj>ñ“> V>ö‹> H> ¥Ê> ÁÅ> ž­> ƒ;> -øº> {­> -¸Ç> -õâ> -×Ï> -Å8> -­_> -•ö> -pr> ȧ>e> ©Å> ùŸ> ßy> Á³> ¢F> €Ö> XŽ> ­>’Ù> :>Ÿ>¾K>©Ð>»>mŸ>NÞ>29>R>ô‡>Ø >¸µ>Œ[>;u>FY>;I>7>ùB>Ún>»Æ>œe>{s>F˜>ý9>.>÷ >Ó†>­j>2>¶Ñ>âY>p>ÚØ>Ùl>µ9>ŠÜ>Tã>5Ê>æ>çl>ºô>ŒX>Yy>õû>¹O>©}>úõ>ôº>úŒ>·ö>i‡>->¬D>F¨=ÿÏž=þØ÷=ýÈt=ü—¦=û=Ù=ùµå=÷ù4=õü =ó³Œ=ð:â=çÉÏ=ç“ã=棦=â@b=Ý%‡=×[Ö=ÐÌ‚=ÉIÊ=À Û=²O{=¯åË=½m¨=ÆÅË=Î=Ó½»=×;˜=ÝÉú=â†m=æ‚=é,œ=ë¿«=íü’=ïìl=ñ†Ö=òà=óûI=ôÓ°=õ¡â=ö_=öò&=÷bt=÷ÑL=ø Á=ø^æ=øN=ø³ô=øÎÈ=øá%=øì•=øê?=ø™]=øÎ=ø x=øÍd=ø»=ø¦Ì=øŽ×=øsú=øW@=ø6˜=ø -ñ=÷ë»=÷Ï¡=÷ªH=÷…=÷]=÷3¨=÷ Ÿ=öã‘=ö¶Ú=öŽ_=öb•=ö5­=ö -=õÛQ=õ©»=õ~}=õPb=õ#O=ôòÈ=ô¢¥=ôYm=ôZQ=ô4¡=ôr=óÖ=ó¡ß=órÐ=ó=³=ó`=òâL=ò°ú=òz†=ñò¯=ñÒÖ=ñÕ´=ñ©æ=ñs>=ñPo=ñ$z=ðèc=ð§=ð‰å=ð[P=ð*Ç=ïú~=ïÉ=ï–=ïSL=ïJ=îúÇ=îÎÛ=îh=îd»=î =íåð=íÃŒ=íu›=íB=í=&=í ˜=콇=ì -=ìl#=ìD=ì=ëâ™=ë®É=ës=ëHµ=ëã=êè=ê­C=êgu=êOß=ê"/=éí=鸌=éŒÊ=éWk=é%=èÛÐ=诖=è!™=çQ=çÛ­=çø=çÃÓ=çuo=çeÏ=ç°=âè=áß,=ᱜ=á„-=áS^=àÿS=া=à½=à”=àS²=à#0=ßñB=ß(=ßG~=ßlõ=ß$l=ÞÎ{=Þ¹¦=Þzž=ÞRú=ÞS?=Þ ¯=ÝØ=Ý÷=Ý@¾=Ý8=Ý1Ü=ÜÝÚ=Üm{=Ü”6=Üx.=ÜH=ÜÀ=Ûæ=Û¶º=Û½=Ûa0=Û0ô=Úý¡=ÚM­=ÙÝê=ÙúU=Ú;b=Ú=Ùê‹=Ù»ñ=Ù.=Ù^I=Ù/“=Ù:=ØÒ{=Øì=Øl -=ØFQ=Øš=×Ù°=ײ=×ù=×_¢=×0¸=×1=ÖÓG=Ö¤Š=Öwo=ÖJÔ=Öê=Õî‰=Õ¼Ø=Õ=Õ^@=Õ5K=Õ =ÔÚÝ=Ô©h=ÔrÝ=ÔF—=Ô!ñ=Óï_=ÓÈ=Ó =Óo=Ó6e=Ó ×=Òç/=Ò²o=Ò]Ï=ÒS[=Ò2=Ò±=ÑØ¢=Ñ«=Ñ{E=Ñ@í=Ñ =Ðòò=ÐÁˆ=ЗS=Ð º=ÎÕt=ÏŶ=ÏæÄ=ϵl=ÏÏ=Ï[Ä=Îû =Í"°=Î %=Îb=ͽœ=Ízî=Î#Ñ=Î}=ÍÓË=Í¥q=Í{J=Í2ê=Ìç{=Ì©$=Ìr=ËÈþ=É¡4=˾=Ì¥=ËLÜ=ÊIÜ=Ë-'=Ë0d=Ë=ô=ËD=Êéä=ʾ =ÊE=ÊeT=Ê:î=Êî=Éáü=ɸ¶=ÉŽS=Ébª=É4U=È›„=ÈVˆ=ȯO=ȉ¡=È[]=ÈŽ=Çö=ÇÛû=Ç®Ç=Ç„=ÇW=Ç.=Æ =Ê=Ä4Œ=¿.¶=ĸ=Æ&T=Åü:=ÅØ<=Å¥ö=Å|ž=ÅX?=Äë=Äp™=ÄÑ3=Ä°û=Ä~Ü=Ä#…=Ä&=ÄØ=ÃÜÀ=ÃdŸ=ÃO=Ã`=Ã7W=à -=Ââ˜=¶š=Â|P=ÂaN=Â7²=Á¹Q=Á­ =Á½Ù=Áx=¿†ú=À"e=Ák=ÀÏü=ÀVa=À‹É=Àf”=ÀD"=Àé=¿Š¤=¿ª†=¿œÈ=¿y,=¿O=¾ÿ¯=¾s=¾¢F=¾¦ß=¾‚=¾0 -=¼ô«=¼%¨=½e=½±„=½4=½d=½?öÜß?öÛE?ö®Ý?öz?öO ?ö/…?ö/?õòO?õÒ³?õª¨?õJ-?ôY`?ò¯z?ðÖ“?q?ïx?ï(?îp¦??ïß/?ñÅ?ò•n?ò¨*?ò|D?òœb?ó:?ó“¢?óñ?ô?ôÒ?óÜR?ó{B?ó?ò‘è?ñíÑ?ðͱ?ïG!?î~?îT?ï!“?ðw_?ñYn?ñŽ?ñ^Í?ñ2z?ñ,?ñ…?ðvN?ï¶n?ïT‡?ï•z?ð)¦?ð¢E?ðß3?ðð‡?ðÞx?ð©¹?ð[ì?ð_?ïÛª?ï´¤?ïar?îÖì?îeÿ?î_a??îëÓ?ïœ?ï -Ò?îç¡??î,?íRƒ?ìmÄ?ë~%?êîJ?ê¶ç?ê3ë?éHò?èî4?éÜ)?ë}?ìÒÍ?í&?íâ³?íõÅ?íÝ(?í¯„?í{b?íBD?í?ì¼=?ìz#?ìLY?ìAš?ìX¥?ì?ìœà?ì˜ ?ìLÕ?ë‰6?ê.'?èŒ|?熺?çÓ?ég?êZœ?êó›?ë?êî¹?êï?ë?ë -¶?êë,?ê¬J?êbÂ?êÌ?饟?é'?èÍË?èÑ~?é!a?é~Ý?éÃ’?éÜÞ?é« ?é‹?è`1?çßI?çÐw?èb?è\Ÿ?è•Î?諤?èŠ:?è×?çK?æ‰J?æZ)?æÔ?çg‹?çŽ?çU\?ç¹?çÃ?ç;é?çLz?çF8?ç2Q?çÉ?ç L?æü?æð&?æîy?æð?æÛ*?æŸ0?æS™?æK?åùÇ?åËÔ?åb?䵞?ä‘?ãù?äic?åM?åi?åv5?å<©?äÜ?ä?àJ¢?àá?á?Ö?áb©?ánI?áy‰?ávÓ?á8—?àyÃ?ß[?Ý?£?Û—÷?ÚbÛ?ÙÜø?Ú}²?Ü9È?Þ+»?ß}`?à?à<ê?à6z?à(?ßß$?߸Ö?ߺ*?ßÓÉ?ß؃?ߨå?ßIÆ?Þà¤?Þ›î?ÞŽŽ?Þ £?Þ¢f?Þcý?ÝLj?Üâ¹?Ü,?Ûؾ?Üg?Üd?Ü^Ñ?Ü\c?ܧf?Ý.?ÝJ7?ÝJ?Ý0m?Ý ?Ý)Û?Ý@!?ÝH?Ý'á?ÜÓ?Üaü?Ü.?Ü!¥?ÜSQ?Ü\*?ÜY?Û¼×?Û|ö?Ûb?Û°e?ÛÕ›?ÛÓ ?Ûª£?Ûw?Ûaù?ÛzÇ?ÛŸª?ÛŠ‘?Úì\?Ù•?×ßÀ?Ö×G?×=*?Ø‘8?ÙÁ?ÚY¨?Ú†ë?ÚŠ&?Ú‚?Úyþ?Úv)?Úq?ÚVé?ÚU?Ù<=?×ÚÛ?ÖG?ÔÂÑ?Ô…«?Õe4?ÖÊ"?Ø?Ø·p?Øþ#?Ù2?Ù?Ù ?Øõµ?Ø ?Øm‘?Ø –?׺™?׉=?×}y?×*?×£Ë?ײí?×¹?×¹Ê?×µn?×¥¢?×~€?×7r?ÖÖ„?Öng?Öê?Õác?Õßù?ÕÿV?Ö!?Ö84?ÖCp?ÖDª?Ö -?ÔûL?ÔÐ -?Ô¸\?Ô Ç?ÔfÝ?ÔI?Ó±„?ÓÁÂ?Ô#±?Ô¥?Ô¢?Ô•S?Ôrò?ÔGN?ÔÐ?ÓÛn?Ó©o?Ó‡Ò?Ótl?Óf+?ÓU)?Ó3î?Òó½?Ò¬å?Ò õ?Òè'?ÓK$?Ó‡?Ó€Û?Ó<Ï?ÒÙ?Ò„×?ÒT8?Ò-º?Ñÿ3?Ñä¯?Ñùô?Ò)l?ÒD]?Ò(È?ÑÍñ?ÑYE?Ñ?Ñ;Ñ?щ?Ѻ~?Ñ­Š?Ñq®?Ñ7±?Ñ!ñ?ÑÜ?Ñ(?Ñ †?ÑJ?Ñã?Ðü_?ÐÁo?ÐŽñ?ІK?З?Ð6ì?Ï·¼?ÏMÀ?Ï×?Îù?ÎèÍ?Îô[?Îü®?ÎÔ’?Ά?Î2ù?ÍÐi?ÍGD?ÌØw?Ìá$?Í@s?ÍŒí?ͨA?ͬ’?Í¢~?Í‘L?Í ì?ÍêV?Î9…?ÎA–?Í÷ƒ?Í–Ö?Í_÷?ÍhB?Í©8?Î !?ÎQŸ?Î[??Î:I?Î$¶?Î,‰?Î*E?Íû¥?Í·ã?Íœ*?Ͷ?ͽò?Í|^?Í}?Ì|L?Ì !?ËÚç?ËÒx?ËÍ?ËË?Ë»µ?ËŸj?Ë¢?˼w?ËÀ¸?Ë®?Ëœ+?Ë› ?ˬñ?ËÚæ?ÌD›?ÌÐg?Í)ó?Í.=?Ìât?ÌdV?ÌÉ?ÌE˜?Ì°?ͺ?ÌÀì?ÌV{?Ì^I?ÌÛ%?Í5ª?Ìúˆ?Ìrg?ÌBä?Ì|?Ì¥ý?Ì‹\?ÌPì?Ì))?Ì/ô?ÌU‹?Ìbò?Ì-Ð?ËËÃ?ËEì?Ê{ -?É«J?É\1?É–ì?Éàƒ?Éã?ɢ?Éøg?ÊIT?Éý˜?È»O?ÇFE?Æ¡‘?ÆèT?Çn?Ç¡ð?Çw?ÇFR?ÇH“?Ç=þ?Æã°?Æe&?Æë?ÅÒ?Ÿz?Å¥¹?ÅœÞ?ÅžÀ?Å“¹?ÅU?ÄÜ´?ÄC?è½?Ã=ö?Ã!˜?Ã+µ?Ã?ÂÌá?ÂCs?Á 1?Á>[?ÁR~?Áµá?Â1?ÁðK?ÁŸJ?ÁŽà?Áà ?ÂE3?Âq¯?ÂH(?ÁÅ:?Àýh?À%‘?¿„#?¿b„?¿ÈÇ?À=Ø?À4ð?¿½p?¿\;?¿E)?¿[,?¿ŸÞ?¿ß ?¿‘¿?¾«à?½ôi?¾Í?¾Žc?¾ç€?¾Çñ?¾eH?¾²?¾?¾<¿?¾:v?¾¹?½¡ ?½µ?¼uÄ?¼TÏ?¼~o?¼(?¼rH?¼I'?¼1$?¼,L?¼ß?»+?ºé7?ºb½?º3O?ºDÚ?ºD?º m?¹Ä¨?¹©A?¹®…?¹©Ÿ?¹Œk?¹„?¹¶¤?¹î?¹Ìå?¹XO?¸óÄ?¸Î?¸¸n?¸ŠÜ?¸Z?¸Hh?¸Oó?¸QÛ?¸X¶?¸M?¸äG?¹A?¹‘®?¹s–?¸—ù?·t?·@0?·ëN?¹Pc?ºÁn?»D?º”¨?¹µ?¹'?¸Â•?·Ô?·½?·˜'?¹ƒ]?ºÖ@?¹Ý?·$Ê?µ†?µ°?¸MÄ?º}C?º1"?·eþ?´7Ë?³q ?¶v?º}y?½á?¾|Š?»ø?·k?³:|?²?µ?º¬ó?À¦?Ä¥a?Äêû?Áù?ºPu?³&“?ùw©?îF?ßå¼?ÏzM?¾Eú?®Õ*?¥†?£ñÈ?«¾]?¹zÅ?ÉÇ0?ÚŽ?ê¤ö?øð @%@@¿£@ -©Â@ Û@ ¸@ '¾@ ?q@X@EW?ù­Ñ?ëîz?Û™Ð?ÉŒÎ?·rÚ?¨iú? ê?¢‰Æ?­V[?½GÏ?ÎÞs?àE`?ð¸[?ÿÊ$@”*@ I¨@÷@šx@E¹@@6r@ØL@Ñ?ï»Ð?ÿÓ@%@ vP@Ž@E@ù@V@È‹@ #ô@!ñ»@#Ø@#§6@$XP@%ŽÜ@'µ@(sš@)ƒµ@*N5@*‚Ÿ@)õ˜@) K@(’+@)ö@*Ar@+$˜@+Fú@*áK@*g@*!)@*Â@*”@)Ür@)xô@)/@(§Ê@(“B@(íƒ@)… @)ßÁ@)G@(`@&I:@#Ó@"‰æ@#‡Ï@&|@(~Z@*'Ò@+$û@+é@,© @-<«@-jÌ@-0–@,¶q@,"›@+û@+ž@*ßm@*üú@+F@+TÉ@*å(@*"3@)jy@(Ïa@(Z@')@%ñØ@$Rù@";­@­@ˆ@½P@cQ@r @ ½…@ Ú?öÚ6?äôº?Ñ(º?½‡ñ?®,?§Õä?­ŠÆ?»š -?Ìnç?Ý}?î£Ë?ÿ…)@y¾@ ý¾@Kü@®@`f@†l@!J@#ºk@%¿¸@'\j@(¤@)ˆØ@* -@*˜"@+1@+¿ @,;@,¼È@-A@-£¯@-À¯@-¨@-Ÿá@-̶@.@.Dâ@.b‡@.U@.7@-¸’@-M&@,º@,}@+RÊ@*»í@**T@)¶@)Žh@)Ç-@*|@+¬³@,ìþ@-Õð@.mh@.Øf@/$a@/6;@.ÙG@-ÒŽ@+Š¡@'[o@"2s@­±@×¼@ß@ @"fÞ@%‡3@(ä×@+¸ð@-‰!@.k@.ÅY@.ä;@.ò@.ø†@.÷÷@/â@/Z±@/Šû@/ªÙ@/²è@/tn@.âæ@.(‰@-¤ß@-”·@-ÏÅ@.v@.3.@-ú©@-†"@- —@,Æp@,Ö÷@-ó@-:Á@-CN@-R·@-wR@-“e@-‰@-:³@,²H@,AÑ@,û@,›@+Ë@+Ž@+Ûœ@,!í@+îA@+GÎ@*@*-Ú@*0Ï@*6@)ìw@)TŒ@(Òõ@(·S@(Ó5@(Ôæ@(¡–@(/@'zŠ@&¦š@%Àu@$³Ä@#y’@"«@ }ô@“[@*‘@>@Í4@«W@ –É@“G?ÿ±G?ñ×?áœø?ÑÔŸ?ÁI?²7Œ?¬x?³P®?˜&?Ó6x?ãTF?òÿ@aS@nG@ —(@¥@âj@n€@/@@½W@àH@ ™v@!=@!=@!O°@!Vü@!}@!õ€@"™ø@"éÓ@"r§@!1Ú@ƒ­@¡@eå@¤O@¨¨@ :@!£0@#Ú@$D«@$ìf@$ä @$W’@#¨N@"Á¥@!\È@¡ @`@E@L@ÿ@¨€@!ap@"’>@#2«@#o@#a7@#G!@#T[@#r\@#Š;@#±}@#à³@#ÒÀ@#r8@"æ^@"9ù@!‡?@!@ ïB@!bu@"%Š@"¸Y@"ée@"Æ@"]G@!ß@ O<@$U@é@ ë@!K`@!6@ cf@çî@}ó@qo@ ¬þ@!) @ ã¥@ a¾@ñÎ@““@5K@æt@³½@‹@v–@‡@Ÿ"@€¯@,@¾2@Œê@rí@N@* @>@ôæ@›è@Gû@,È@Q;@˜ -@Ī@½ï@œÎ@ƒ”@fW@.@ðÆ@º¹@­@Zz@h@he@&v@çÂ@â @ìz@Ïž@‰Ò@7@óå@í@‚@@%!@y[@0×@ £@rÐ@¼Å@“Ü@Ú$@g+@-*@@×9@g@O@ä0@4@‰å@¦Ÿ@[ù@º@8Ï@ir@R@×6@5„@Ðw@ï@ìú@X@Ä@U2@S@î†@Îø@´í@¬’@Ñ@)«@‹Y@V@ÜN@ò@ž@ /@â²@¡ñ@p»@w[@©@Þ@@A@Lþ@bÓ@C|@ðé@|Ÿ@/ž@I¼@«»@ìu@Å @@û@¯O@Š@è @·@°@0@Þ|@$ò@Èg@;¶@ñª@ìq@ÀÎ@þ;@ôó@œÕ@>ò@‰@-”@„@òu@Üß@ÿ5@³N@ α@ ªÐ@ Г@ ¤„@ 4Š@ €@ /ì@ 6$@ -·P@ -³~@ -W@ Ë@65@ÜŠ@y@ø¹@ è?ÿ-?ù7s?ò¡?ëWY?âî¸?ÙBk?Ï¡?Å\/?¼ ?°i)?¤ýv?£ë3?®ƒ?¹l?ÁMƒ?Ê5E?Ô±•?ß9@?è¤Ý?ð+-?õ."?øaÄ?üU@ªN@6v@Ôê@‚É@Â8@"P@¿n@B@}~@¡Ñ@æœ@Aê@_•@9@mª@l@NÝ@ö@åË@ A£@ G@²u@–M@Îs@ Å@ ½@ @ "þ@Þ/@É`@ås@¢@ÃE@÷ -@J™@%@ê¾@Ý$@ A@Ý@¸Ì@*G@P@hÅ@tˆ@hº@€1@íÐ@HJ@Úc@Ú)@hª@@%Á@;{@¯@®¦@Z@uº@æ.@f@Œ -@<®@ôÁ@µ@«@ã @S®@@Þ@p@5)@à@Ÿö@…ž@ê@t–@H@÷`@¥ï@z|@XÁ@\@ðG@@H²@}%@\±@ÊÂ@@Þ@i@£@Ë`@08@ë@[Ï@aÊ@ìC@QÙ@<¬@@ „@/H@(a@ôt@¢p@gÌ@[@\ˆ@LF?ÿŽI?ü\ ?÷TÁ?ò–„?ï¥Æ?îv?î›ß?ð?®?ó…x?÷{ï?ú@ÿ?ú>Ã?÷A)?ò’—?î6I?ëö)?ìÂÍ?ðuô?õʵ?ú—×?ý,?üáÐ?û4|?úã?ùáÓ?úI??û½?ûú½?ü`?üm´?ü†G?ü¥?û½¯?ùܦ?ø@ô?ø)E?ù£ð?ûu"?ûøµ?ú–?ø 2?ñ£»?îìÚ?í±?ìñà?í¶ƒ?îµJ?ï£f?ï³­?îo?ìæÏ?ì­Š?íËÔ?ïõ?ïľ?ï…i?î"¡?ìZ?êí{?ëp‚?ì)‘?ë­L?ê²À?êÀõ?ëÝn?íë?íÛ ?ítÝ?ëSÀ?é=®?éÎF?ì ‰?ì“b?ê¥|?è$?æèF?ç`?瀘?ç±?ç§?ç´$?玃?çJf?çK?æÿ2?æ³?æW§?æ_?æ‡n?æ\³?æ,µ?æBf?æTJ?æ-?åÝö?å³[?åÇ¢?åÑå?å™*?äá­?ã¯È?â?­?áå?àÅÚ?á€Å?âÞé?ä)º?å »?åº?æDl?æá?ä‚?ââã?âÖ?ã·?ã–í?áå?ß×.?ß©?ß²ÿ?àß>?á¥?áçY?âY?â)¤?âO?âI]?áø:?á~¦?á?àòÛ?áG‰?á¿J?áË?ávJ?á"ò?àÖs?àÞ?àS2?àu1?à¡À?àˆ.?àD??à ?àr?ßóâ?ß’„?ß>â?ß@Æ?ß`ç?ßSå?ß/f?ßÛ?ß#Ò?Þõ¢?Þ±?Þ£›?Þ?Þ^?ÞK?ÞRÍ?Þ?À?ÞÂ?¾yþ?¾Q_?¾?½Z?¼“û?¼)Ë?»Z?¸ÍÚ?¶‘x?¸å?½ØÂ?À=?ÀŠ¹?¿R?¾Y?½1”?¼Òß?¼²ý?¼qi?¼CY?¼hp?¼‡V?¼7£?»´Ö?»œD?»±¯?»i?»Ï?ºÚ.?ºç„?ºÚ]?º–?·}ã?·ê?¶ÙÃ?¶üß?·?·?¶ËÒ?¶ì?¶”}?¶|-?¶°?µ{?µHô?µ¯r?¶a?¶D?¶?µh÷?´ç?´š3?´N¾?´5?´ô?³Ù/?³»ã?³Ç&?³Éš?³¶´?³ž”?³ú|?µ:ô?¶•o?µÔý?²c?°:?³×W?¸,¹?¸?¶¬Ê?´“!?³›?²Y¼?±±…?±!)?°Ý?­ÉÑ?­ÏŸ?®*{?®ƒj?®¥z?®¡Õ?®£?®´Æ?®cc?­~Q?¬Y_?«{@?ªê!?ª ý?ªÎ ?«‹õ?¬Û¦?­÷`?®hÆ?®Z¿?­Þ?­lþ?­MI?­^T?­sÄ?­-w?¬‹Œ?¬.z?¬'R?¬#p?¬5›?¬=?¬7¿?¬Bz?¬V5?¬ny?¬_õ?«üK?«‘ä?«¯?«óá?«Ÿ9?ªñ??ªƒ©?ªw?ªŸM?ª„˜?ªaH?ª2f?©Â¹?¨õ?¨mP?¨·²?©+œ?©Œœ?©Â?©Õf?©ë£?©Þ9?©¢Š?©oÝ?©¦?¨ ?¨ÂÉ?¨öÿ?¨ÓÄ?¨SÏ?§Öï?§É??§¥c?§C­?§Lº?§kª?¦ßD?¦¿?¦6©?§?§”?§˜?§i?¦gÉ?¥Å ?¥B -?¥`·?¥Ø}?¥îÃ?¥“©?¥ÿ?¤®L?¤g½?¤³??¥6?¤§a?£Ç?£Z?¢ÆD?£&?£¹»?¤¼?rtÜ?qÉÞ?qZÍ?qŒ ?q¸­?qŽÒ?qŽ‚?q ?q–“?qLß?pãZ?q?q½?pe&?oT0?n–?n«U?o]õ?oÆ?oq‘?nÀ¸?n-?mû¯?nL˜?n°S?nÞ?n:o?n2B?h5&?gÌ~?gš¸?g›.?gaX?fÏ>?f_‹?flÅ?fxù?f6/?fÝ?eñ&?en8?déÓ?d©¢?dÔF?e8h?e:Ê?d³Ü?d-z?c¥þ?cxí?cãO?cñº?cpK?c ?b¾U?b‹T?b…k?bR²?bL`?b…€?bxº?b7|?aÓE?a1+?`äš?`Èä?`Æ{?`ÒT?`–[?`Hf?`¸?_Ô$?_ªe?_½à?_ÛÑ?_¿?^ù?]Ôi?^¹?^Ÿ‰?^¼ü?^ž7?^Ýî?_i×?_·‘?_£S?_5­?^§û?^Œ?^œ¨?^Ñò?^ãç?^¦:?^>b?]ú4?^Q?^B?]ð¹?^®?^=›?^€?]HÊ?\­x?\é«?]Ð?]¯â?]y.?]ŸC?]œª?]®?]Wn?\à?\sc?\¥ÿ?\ß3?\×C?\ƒš?\G€?\–D?\Ê„?\‹Ç?\$??[Š?[ -?[=?[<º?[ ñ?Z¦Ó?Yð.?Y’H?YÊ?Yôu?Yóø?Yë¥?YÂ?YÀ?Yç -?Y–Ê?YXù?Y-?Xåû?XÙþ?X€?Wvw?V 8?T]d?R§õ?P‹?O‡ú?PP{?Q‹ -?R¨?SòU?Uï?Ud.?TÞ?RÑÞ?MAO?H -$?K‡y?QìÊ?Rd”?LîÁ?J¨+?N›¬?Q¾&?RwÍ?R¡Ü?Rí‹?S(0?Rô¶?RmM?RF?R98?Qûw?QÛ¼?QÕL?Q¤Ö?P«?O@¨?O{?PbP?O‹?N±T?OŸI?Pâv?Pæ]?P½%?P‚{?O®€?Oó3?PA?P*±?PØÉ?Pç?MHJ?KCJ?Kó?LIw?KÇ?LZ–?MZÚ?MÖe?N'‚?N ø?Mn?M•?Lñ?Jî/?Kkè?Loù?LºG?LÂß?Lk??K~ø?J¯?Jã?K»Á?LAÌ?Kñ ?J»À?I— ?In?I`?Iþ]?J2Z?JuÙ?JÙ½?KR?K·R?KÂä?Kh?Jâ«?K@?K–°?K«‹?K÷?JŒ ?Ja0?IÛû?IpÄ?I/?HR?GÅ®?Hq?H«H?H8)?G$?GZ?F‰Ö?F‰À?Fµ·?FœÝ?FL?F!X?Eùj?Eyt?EÌÉ?F€)?>H?>Ñù??HD??Cd??w=??@?>à?>b??>)¥?=ö?=ÔJ?=.ï?<ß‘?=dÉ?=w‘?=+?=q¼?=¤1?= -¿?='?=1-?<äD?<­R??9Â?9'$?8ø?9x9?9ãŠ?9j}?8¿^?8“¬?8`‡?81?8BŠ?8Q}?8¤œ?9ø?9)Ù?8§ê?87L?8H£?8Kl?8#?7¾?7 ??6©Ú?6Ï¥?6å0?6vø?6=¶?6JÐ?6:?6?5¨à?5G?55ü?5Êp?6?5ߤ?5ûz?5øp?59í?4S?4gL?4 -½?3îå?4¢!?4¶º?4¨ï?4ýô?5ã?5EÙ?5Då?4u?'þ?)¾á?+}?+@T?*~?)·ÿ?)(?(—?(›?(ø“?)çÛ?)ár?*-?)/ß?(žJ?(«?'÷í?(±l?)˜G?)èo?+FM?+æ;?+©%?+‘F?+rý?+’6?+çF?+qW?)Ê”?)?)ý9?(ÃX?'@q?&ùÇ?'n?'›È?'à|?'Øn?(W?(žu?'“g?%j´?"Êã? wO?H½? ¢-?#´?%Ù -?&ˆ*?&R?& –?%íK?%ý„?%Òå?%×ü?&­ª?&Å?%Èl?$:v?!Í? ? Ke?"iX?$§é?%ªü?& ò?&r®?&«?&'?&2O?&?&Pã?&Ð?&P*?!uu?"fÙ?"ëž?"Ð -?"¼?!-?!3ü?"53?"oÓ?!àü?!y®?!©Ÿ?"`?"œš?"–r?!Ô“? þ,? |‹?!*‰?!ÜÁ?!Ÿ·? ßo? ^4?îi?BO?7?Y©?¨b? ®ƒ?!öÃ?!SÇ?¢Û?à(?dÞ? ˆ? ø?Ñw?Ñ?´?m(?@f?Œ?éX?†#?á.?È/?x?xñ?‰ö?Ãð?*¶?Ðñ?O?5Ó?ˆÞ?)¡?¼|?™¾?¤2?¾g?ˆ¨?Á?¼ä?:Ð?Âß?¾?Ñ?h?n!?ä[?Úé?Ûš?d ?É¿?Š2?9`?‰A?íÅ?ŽN?…˜?%b?I»?|ž?Q^?ðÌ?X”?‚?4´?šL?Äj?W%?2â?¡ ?ùº??‚?÷=?!­P?+2?>ÏP?h¿F?œË¥?ÏzÚ?à ?ÕJ?ßø?Ñ ·?Ÿi@?j°·?>vd?)µ'?W_?¶?á -?8¡?Þ ?–z?lÆ?¯,?aç?JÜ?þå?¬#?© ?8?+Î?ùv?ó¿?2»?`Ì?Cá?4þ?Ф?ªå?,Õ?Ï?¦Ä?< ?ÒÍ?çë?í?ÇÕ?`?C(?¥°?ÅI?'ê?Ý?$??0á?÷?€;?A€?(Ó?P¢?‰ý?TZ?@Þ?U?|n?ª~?zA?;/?Çw?äL?¡­?„3?q_?‘?U/?A?P? Î??ÙX?„j?À?ä?ÏÆ?Û$?±î?g¥?b«?Œ?y@?-Ê?C¸?9(?#Å?D -?‡–?WÀ?(?JÏ?"à?Éü?yÍ?m?’?©ÿ?:?ç ?ì&?·º?~®?q/?Þò?««?§¥?¦j?Ññ?j¨?ƒ5?7ú?FÃ? ? Æ;? x? ‰C? ‹7? c? ¾õ? b»? Al? ÷ ? _t? -ï? -Â?šL?xÕ?P ?7? ¢?Ín?ºÏ?©?‡Ã?rž?S,?0˜?D?÷º?Ø?Ƙ?¨?‡°?sþ?P\?,Ð? ?Å?ëÒ?ߤ?Æâ?©C?™'?~?ay?X?DE?* ?Ø?æ>ÿÎu>ÿ­L>ÿŸ$>ÿyL>ÿK°>ÿ >þ¬ƒ>þ8­>ýç>ýß>ý»Ø>ý e>üÜ1>üõ~>ü}E>ûÔ“>ûÐb>ûœ>û#O>ûŸå>ûø?>û›Å>úä7>ú`2>úx£>úp<>úÊ>ùf>ù">ù-h>ùžë>ùbù>øÇÀ>ù3>ù†Ì>øÐu>ø¥õ>øºF>øl}>øÂ<>øÊÿ>÷¯Ö>öÆ<>ö˜¤>ö2Ÿ>ö‹Ï>ö]•>öÅ>ö‹Ë>ö _>õO_>ô”C>ô&3>ô†¡>ô N>ó€>ó'>òÚê>ó€>ó1|>ôU>ô<5>òŽ>ñ8 >ð¡«>ð,‰>îòã>înµ>íh>ëUO>ëe¤>íyY>î«>îÞJ>ïW>ï²7>ïò#>ïÈ>íaB>íÑ#>ï#î>ïïP>ï‰Ü>î.˜>í` >î%â>îkç>î#Š>íê_>í´ >íð>ìàä>ìý–>í5—>í63>ì»(>커>ìi'>ìŠ>ëÍ]>딺>ë’Ÿ>ëUÊ>ë*$>ë;<>êÞ‹>ꎋ>êyË>ê'T>é´•>évÖ>éj>é5>èîµ>èÀÎ>葲>è?>èð>çëã>ç¦u>瀫>çac>ç«>æë¸>æ¾S>æPÅ>æ">æ*^>åü–>å¾î>å¡í>åw‹>å@ã>å+­>å²>äã·>äÁ>侇>ä¦|>ä}ä>äsO>ä]»>ä#ù>ä >ä {>ãçß>ãÑ >ã· >ãdÝ>ã%[>ãæ>âû>â¿¥>â‘>âzè>âFE>â>áç­>á¸8>álÿ>áG>á.K>àö->àΨ>àÀÒ>àê>àY‹>àSí>àGµ>à Q>ßÚË>ßÎN>ߟ…>ßl¡>ß[B>ß8G>Þñ«>ÞÏ“>ÞÍX>Þ˜Ô>ÞZª>Þ> ->Þe>ÝÂ¥>ݨs>Ý)>ÝW>Ý8Î>Ý'd>Üå´>Ü¡>ÜŠH>Ün'>Ü,ë>Ü ì>ÛüÆ>ÛÅž>ÛŒ)>Ûv”>ÛKô>Û±>Ú×%>Úº:>ÚuÊ>Ú/k>ÚX>ÙôL>Ù·>Ù“Ù>Ù{Ë>Ù>ë>Ù>Øä”>ؼ>ØgF>Øf>Ø -7>×ý¡>×à²>××=>×µ†>×kÉ>×C¿>×/>×€>Öß³>ÖÙ >ÖÍN>Ö“d>Ö]>Ö?C>Ö#>ÕÔs>Õ³g>Õ™>ÕQñ>Õ•>Õ .>Ôò>Ô¯>Ôê>ÔgÒ>Ô#y>ÓÒ‡>ÓÑß>ÓÂ<>ÓŠ>ÓXÏ>Ó5Ü>Ó$¯>Òô)>Ò¿(>Ò¬">ÒjX>ÒP^>ÒD»>ÒH}>Òo€>Ò_Ø>ÑÔŒ>Ñ|>Ñí>Ò±>чû>Ñv>>Ñ£ >Ñm×>Ðì›>ÐsÚ>Ð i>Ïøi>Ð!>Ђ÷>Ð]?>φd>Ï#§>Î÷>Î(>ÏV.>Ï:>ÏN¯>ÐS>Ï<4>ÍOE>Ìél>ÌÚC>ÍO‡>ΪÕ>ÎÍŸ>ÎŒ>>Δa>ÎE>ÍàT>Í€ >ËŠ>ɤÖ>Ê×ò>ÌCæ>Ì\µ>Ì.¨>ÌOÕ>̽t>Í(>ÍcŽ>ÍO>Ìl>ËRk>ʨ¼>ËaŠ>Êÿ>È>ÇØó>Èÿ3>Ê ñ>Ê¿D>Ês>ɼÔ>ÉÈ>È[á>È‘>Ȉþ>È‘À>È¿¿>É:»>Éɾ>É.–>É8Ò>ÉŒh>É10>ÈLÂ>Çõ&>ÇçÌ>ȇD>É%>É[…>ÉU>È]»>Dza>Ççˆ>Çò>ÇZx>ÆT™>ÅÅ!>Ågá>ÅSÂ>Å!Õ>ÄÒ‡>ÄŽ>Ä¡V>Äщ>ĉ>Ä]i>ÄGg>Ä&j>Ãä_>ÃÂç>ÃÄ®>ÃÍ>ÃdÀ>ÃVP>ÃP·>Ã?>ÂÌD>ÂwŒ>ÂL>Á§}>Á<Î>Á >Àá(>À›>ÀX}>À8x>À®>¿Ý¸>¿“9>¿w>¿a1>¿a>¾Òù>¾² >¾š£>¾Xæ>¾ ,>½íò>½ØH>½—™>½Pï>½A’>½>I>½>¼Ø·>¼É!>¼¬$>¼UÝ>»òÖ>»É>»·Æ>»„ >»Fƒ>»7>».&>ºþS>º¸¶>º ‰>º•>ºb‚>º³>¹ó¯>¹ÝŠ>¹´$>¹qÓ>¹N>¹C±>¹]>¸Ï÷>¸¨×>¸’Â>¸c>¸­>·îs>·Þ >·Á>·xÚ>·Ah>·-J>·>¶½5>¶nµ>¶N™>¶,>µØ|>µ‰>µiÔ>µWs>µ>´Ïz>´©E>´š1>´y¢>´2a>´²>³ÿ®>³Ö;>³„’>³X>³N5>³8ë>²ð>²¬>²ŒÎ>²R–>±ôÓ>±´D>±†×>±XM>± >°Êh>°Æ_>°Îá>°šË>°rí>°`Þ>°^n>°Dc>°©>¯áÉ>¯¾>¯z³>¯9”>®Ú>®äƒ>®ÖÍ>®q\>®TA>®4[>®>®{>®hÃ>¯ó>¯—®>¯½†>®)Å>¨ï¡>¤@²>¤Ë>¨ÖS>­&¬>®TÞ>®ú>­‘å>¬ÉJ>«ä>«äM>«×÷>«zB>«5…>ªß³>ª"Ä>ªD·>ªÊ>©Y >©²ˆ>ªe>ª¨’>ª+>©Ó>¨%Ö>¨h©>©4™>©lU>©ZM>©m”>©R•>¨€>¨O>©ÿ>¨lz>§ìh>§‹%>§u‚>§3(>§Á>§µ>¦þy>¦Y|>¦ž:>¦ÆÔ>¦F„>¥Î’>¥ÎŸ>¦*¼>¥Žs>¥¶2>¦zÓ>¦uö>¦²>§»´>§>¥û÷>¥€P>¤>¢Æë>£ø&>¤Bo>¥/l>¤Çœ>£Ë>¢é>¢_›>Ÿîl>½Ò>›ÚÆ>žë>¡Ž«> RŽ>Ÿò>£,Z>£,>Ÿ]j>Ü®> É>¡aC> ¬>žÞö>Ÿ\Û>ž¸ >Ÿf†>Ÿ¼>  ¦>R*>q>Ÿ£>¡Lv>¡Út>¡C}> x>Ÿáò>ŸŽ*>ŸýO>Ÿi>ž¶Ù>žý9>ž·†>ŸC8>Ÿ§Ç>õì>šÚ:>™ªË>™»h>œH‡>žÃ>õ> Ä>ž*Ü>Ÿ”Ü> €a> ô> !é>ŸßÖ>Ÿ|­>êL>žb’>ŸI>Ÿ7>žtŽ>1Û>›éj>›2í>šú>œDž>âñ>ž¢>šë¬>›PÔ>œè>™ì>š&x>œ7 >œCñ>›Ù2>›,J>šXŠ>›G>›…Ê>›äX>P|>›äÛ>™÷y>™É’>›h>›:Å>š…>>™yA>š>Ã>œc“>œ´ô>›¶û>šË\>š@g>šOÆ>š0J>šÌ>š‘>šùC>›MÍ>šÿg>š -÷>™ø0>š$>™í >™®Ž>™w…>™˜†>™œn>™ ó>˜Ÿ=>˜’y>˜…—>˜¢6>˜m7>—ú´>—Û>—öÙ>˜ -j>—öD>—¯.>—„>—‚¢>—~>—MK>— ƒ>–û>–þZ>–ó>–ÄÒ>–¡>–¤Õ>–·‘>–”>–˜h>–dë>–bP>–h0>–aœ>–1ð>•÷6>•ìg>•ï#>•êù>•¸†>•z·>•gÏ>•]´>•U>•3¬>• >”õL>”ñè>”ùu>”ä˜>”©•>”“>”>”ŒÊ>”qþ>”=6>”/­>”%Ó>”|>“ö>“Àå>“³ì>“·q>“Ä™>“¸¼>“fb>“<×>“Aµ>“U>“W@>“O>’Ùƒ>’_>’ L>’a#>’iD>’C»>’/E>’=u>’B >’ä>‘±ð>‘•>‘Jž>‘$è>‘E>‘>ê!>Ò¤>ëŸ>Õe>i->_ÿ>“Å>®>—o>7Q> º>{>>*G>(Ê>ò‚>Èz>ÕH>Œ>Oý>I>%0>¼>>0÷>¡Ú>ç>Ã=>Ô>µ©>Žk°>Žøi>2>@>Ž >CÜ>[œ>Ž7>‹ŠP>Œ&ó>=l>ò>¼z>‰·k>‹¼ñ>Å{>“3>®¯>‰1¢>‡§;>ŒZÒ>’ ÿ>“‡}>sß>‰D>‡UN>‹K>Òµ>’÷>’´>†>‡Œ›>…̬>Š4>M>‘ 5>™À>ÛH>Œ<>>†¹Ó>„@>‡Àa>ŒòË>íÀ>oá>¿@>ÀË>‹¥>…Æþ>€F>ã>†óÌ>‰—H>‡¯Ù>†>„´ >…°Å>„ì;>…|ó>„i’>õè>…e¼>‹;>ŽT½>ou>ŠE>ˆñ>‡ÜÈ>†©>†P>‰åX>„ÿ>{z>‚!K>Ž®å>›Åï>–‚>ŽÒ>–Åð>–äœ>Ž,µ>Š >‡0>†x >‡ -_>ˆ%P>„Å>|lÖ>{êr>„Z>ˆ]U>‹Œë>‹ó>†8v>…-\>‡™Ž>‡Ì7>†œ>…î ->ˆ¥&>ÍÓ>œA®>š7>>q×>Œ€->‘qr>¤>ˆZ>‡ >…:>‚cÜ>‚²Ú>ƒuj>„…Œ>†ò>ˆ:>†!‹>…€§>‡Ñ€>†Œž>…PÝ>…É„>‰”>’PÌ>•z\>Š?ð>ƒùx>‰é|>Žœ0>‹tb>…L >€Sç>}>>€‰ƒ>ƒ)Ã>…7®>†¨€>‡åÂ>‡µ+>†êl>…·z>ƒÆ(>ƒ?™>‚3¾>‚ -Ü>€í >|ýy>|]H>~¤à>|Ù>yj>| C>|°F>trÿ>kF>mì>{É>€—ˆ>€oØ>~‰$>~ËG>€å>~c>}$Ä>A±>ƒ [>ƒÂ>…‹Š>†¢>‡Ëk>ˆÆ…>‰ˆüæ>‰9œ>‹€¿>‹ >‡ÙI>…“>ƒª%>ëV>}ëá>x>}Cµ>…‡÷>îÑ>²w>‚Dº>y³n>„ï>ˆœ©>„0ä>€³e>}N>z†j>VU>~Ð(>}TÕ>}åÀ>‚zù>„d5>„ª>„’â>…,s>…cY>†ØÚ>‡>…i>…é >ˆ‰;>Š,1>Š|>‰C ->‰¯m>ˆu>ˆ2~>†®¶>†\Ô>†Nµ>‡>†=9>€K¿>"À>¨Í>~5$>xÀ,>t…>qõ]>tÁþ>w£!>r2>a““>c+T>r]Ö>x™>vÓp>vm×>{o°>|ƒ˜>>‰>ƒ~Ñ>„ò>… ä>„`«>…„>…Ýu>†|’>‡K°>†ÂL>†E>†º>‰¡9>ˆÀè>…èL>‡ìá>†io>‡‚]>‰_~>†¬>„0$>ƒ>„ >…ï>‡8>‡›>„C$>‚È©>ƒZ±>„§E>„Çè>„+g>ƒ•@>„Ò…>„kæ>ƒR£>ƒ1l>ƒu>€á>€†>~{>zè´>s/>la>f)]>`¯·>[RØ>NÅ5>G7è>N¦Ü>W®_>]}ƒ>bú>hL«>mÌn>qwn>tî2>yï>|Õg>0a>€”Ô>I'>À=>‚7>‚ˆÆ>‚Ï6>ƒ S>ƒ=>ƒLy>ƒžû>ƒµ‡>ƒ¨B>ƒ“5>ƒ­>ƒ¶Ë>ƒ·>ƒ·>ƒ¶ð>ƒ°Û>ƒ—4>ƒ•>ƒc2>ƒ"j>ƒ×>ƒÇ>ƒÅ>ƒP>‚ù•>‚¤e>‚}>‚zn>‚u>>‚@«>ðV>Ü}>Î~>…=>E¾>,:>€ÞÕ>€žÄ>€^M>€ ?>p6>~Œ>}‡Õ>|‚>{Z>y÷ò>xU¢>vSú>sàÃ>q>m¥z>i„(>d˽>_>X+Æ>Pi°>G„‘>=YÈ>27¦>-þn>6}ƒ>AP>J,ñ>Rc>X³°>^“ >c†Ì>g¦ç>k$$>mé%>p6­>r’>s=>t›g>uz¿>v4y>vèü>wWU>wº>xc>x…®>wør>wʇ>xwÊ>x–b>x–Ô>x•ª>xsü>wãU>wL>xW>xa>x–4>xtÎ>w··>wKì>w Q>uûT>vªÄ>wM1>w8]>w4Ù>väÕ>vD„>v¢>uÑ¿>uó>v{>v œ>uz>taL>tI²>tÑ­>tÞ}>t3>s‰Ø>sZ>s£>s¤a>s¢‰>spâ>rÆ©>rmï>rgm>rh>rA‰>q o>q5I>q+/>q"p>p½C>p.>oï“>oß^>o[ >nUk>mÎK>m›‹>mO¥>m:E>l]á>k]—>k Æ>j‡ž>i€ì>hs¢>gCÓ>eÕ>dLV>b|f>`WÛ>]œ”>Z)">Uñï>Q\ò>I˜N>B>=æ>5û`>,r*>!ã`>ŠH>'ZÃ>1T´>9±º>@âŸ>Gc>KÇ>N~>T}>Xx->ZÿÔ>]u>^±K>_óQ>_øM>]Î>]·k>]¯¬>aî>c¬Z>d4}>d­Ê>dÌ0>dÍ >dÍ>dÍ>dÍ>dÍ>dÍ>dÍ >dÌæ>dÌ‘>dÎd>dÌP>dÄé>d™P>d4î>c¬w>c‘>cq>cq>cq>cn>c€>cLo>bŒŠ>b/¤>bJX>bS>bU>bS>bDQ>aý¯>ap>a«>aD>a8>a8>aò>aç>`yO>_î)>_Úã>_Ú›>_Úƒ>_Ùˆ>_Á'>_&Ç>^«€>^ž$>^þ>^÷>^š`>^i@>]݇>]W¼>\ìN>],Ÿ>]_Y>]`¾>]AÇ>\„’>[”¯>[Û1>[ßç>Z]">ZåÒ>[¥•>[©>ZéB>Zè+>Zè*>Zè>ZÛ%>Z`¡>YÆ¢>Y¬ ->Y«>Y«g>Y¨“>YlÓ>X¹­>Xrd>Xnö>Xnð>Xla>X.C>W|¶>W5¾>W2V>W1æ>WÕ>V€«>V`>UõÛ>Uôþ>UÖ>U >T£Œ>T´Ö>T”G>Sî)>S„Ï>Sm>Réí>RSÝ>Qÿ>QJ>PÌä>P>OTÁ>N`>M?Ä>Kæb>JgÙ>HÅÔ>FÁo>D\Ö>AB>=öã>9¾+>4~U>.ì>'ÚÖ> Z>׿> < >ê>úï>!aÀ>(”ô>.çÖ>3ýÀ>8ný>;òY>>ì©>Agë>Ckö>EÒ>FWØ>Gd¤>H@>Hÿ_>I‡ö>I· >JYh>JÊ >JÕ>>JÓ¬>JÔ,>JÔ(>JÎZ>J¯&>J¿¸>JÓQ>JÔ8>JÔ8>JÔ8>JÔ8>JÔ8>JÔ8>JÔ6>JÓÙ>JÎÐ>JAÔ>H\j>H­>IF>I—”>I—œ>I—œ>I—œ>I—/>I|ÿ>Hà:>HfR>H:E>G‘>GüÞ>HVô>H\>HPu>GÝë>GGé>Gc>Gc>Gb>GC>G>F«->F í>EãO>EáÈ>EáÄ>Eák>Eâ>EÜP>E~T>DЂ>D¦5>D¥*>D¥)>D¥)>D¥>Dš¸>D%>C„Í>Ci>Ch>Ch>Chc>Ch?>C`^>Bî·>BK>B,|>B+ñ>B+ñ>B+ñ>B+Â>B¡>AŽF>Aÿ>@ï…>@ïT>@ïT>@ïL>@îJ>@Ñ>@+>?»w>?²Æ>?²¸>?²¸>?²¸>?²&>?’n>>ì)>>~†>>v)>>v>>v>>v>>qm>>>=kž>=:•>=9€>=9>=8Õ>=Ð><ê]><ÿ-><P>;üë>;üâ>;üâ>;üà>;ú>;µà>;z>:Á÷>:ÀD>:ÀF>:ÀF>:ÀE>:¾Ù>:‹Æ>9×^>9‡r>9ƒ­>9ƒª>9ƒª>9ƒ¨>9\>9C~>8½>8?:>7äW>7ü>>8Bñ>8G >8EÃ>8·>7`Ž>7j>7 -t>7 -q>7 -q>7 -k>7>6¨>5ø÷>5Î@>5ÍÊ>5ÍÕ>5ÍÕ>5ÍP>5­û>5 >4™>4‘C>4‘8>4‘9>4‘7>4Žo>4Gd>3 >3WP>3T&>3T•>3TŠ>3Iù>2Ï>20À>2P>2ÿ>2ˆ>1ù>1R•>0ã‚>0Ûi>0Ö>0x>/ºÇ>/Gø>/;¨>.©$>._m>.ª>-I>,»ò>+üü>+EI>*TÕ>)< >'á ->&<á>$_§>"L>Vš>Z{>«>+º>ûñ>Á¼>F´=ð|w=î¨u=ÿâM>-> 8 >&I>fì>í>â>cM>!Kâ>"Ô>$*³>%Ca>& >&Ð$>'=ž>'õÀ>'ã8>'-Þ>'ø9>(©€>)R@>)në>)nÓ>)Nµ>)!”>)+¹>)À>)@¨>)lU>)m°>)0N>(…I>(:{>(31>(3>(3>(3>(2“>(4:>(2¦>(3>(3>(0P>'æ>'-«>&÷ã>&ö€>&ö>&ö>&ö>&ö>&ö>&õž>&Ì>&¬>%½Ï>%¹Ý>%¹ã>%¹ã>%¹ã>%¹ã>%¹Î>%­>>%'t>$&>$}r>$}G>$}F>$|í>$}¼>$}q>$|´>$cC>#¾n>#I8>#@´>#@ª>#@ª>#@ª>#@ª>#@D>#(4>"›”>"´>"Ï>">"¬>"ô>" >">"j>!Ý|>!*> Ì9> Çu> Çr> Çr> Çq> Çq> ÆÑ> ©>þë>‘P>ŠÚ>ŠÕ>ŠÕ>ŠÕ>ŠÕ>ŠÔ>ˆã>H1>Œª>Oé>N9>N)>MÂ>OF>M“>@„>ø7>©ë>)å>ä>œ>œ>œ>œ>œ>K>ö%>Lú>ܧ>ÕL>Ôº>Ôÿ>Õ>Õ>Ôû>Ï9>gð>¸Ò>˜Ñ>˜c>˜c>˜c>˜D>˜">˜k>kŽ>³Ã>_?>[É>[Ç>[Ç>[Ç>[Ç>[Æ>Y†> >Ví> c>¶> ->³> >*>&>>®²>ÿÌ>È®>¿ >ߪ>âŒ>âŽ>âs>؈>´ð>…˜>Ö—>¦ã>¥ñ>¥ñ>¥ñ>¥ð>¥ð>¥ï>¢A>IŽ>{J>DI>eg>i¦>i„>i>iS>g›><Û>×Õ>Z¶>-é>,¹>,¸>,µ>)œ>_> >& >Î>$)>ñ·>ð>ð>ð>ð>ð>ð>ïà>×l>/„>ºï>³h>³J>´8>³>³}>³>³V>žó>þ>€>vì>vã>vã>vã>vã>vÁ>v¿>t>8>b¼>:à>:G>:G>:G>:G>:G>:G>:+>)l> (> ª> ýÀ> þ> ý_> ý©> ýª> ýª> ý¨> úM> £6> é¤> Áj> ¡È> L> 5À> œí> EÐ> G> ¹é> ·ó> 8ç> -˜> -{†> -YO> -x©> -„N> -„r> -„r> -„q> -ƒÈ> -X©> †±>ô˜> 5U> G¬> GÕ> GÕ> GÔ> GÂ> >å> à>æ{>6(> Ý> 8> -ó> Ÿ> @> > 8> ->8>w˜>Þ˜>γ>Îœ>Îœ>Îœ>Îœ>Θ>Î4>Î,>’W>Ñö>“v>’>‘ÿ>‘ÿ>‘ÿ>‘é>„n>?>˜×>?">3 >U>V >U ->Ua>Uc>U>7©>„û> >Ê>Ç>Ã>¤>ê´>ˆg>ò >Ü£>Ûð>Û,>¥Á>ä¿>¡8>˜ >Ä=þï©=þ„W=ý=ü=ú‰k=øº-=ömD=óh=ðÄ=íŒ=éI@=ä<‚=ÞIc=×M:=Ï)Ð=Å3Ž=¶ð¼=´£=›«=ÌŠ =Ôp¥=Û=àz6=årÜ=évS=ì§V=ïF"=ñk3=ó)ñ=ô“x=õ¸½=öŸX=÷5¹=÷\=÷ܬ=ùc=ùÐ÷=ùÓF=ùÓo=ùÓ=ùÇ4=ùׇ=ùÛÚ=ùÓ‹=ùÓp=ùÓo=ùÓo=ùÓp=ùÓ3=ùÓ(=ùÔ¤=ùÐ^=ùY=÷Òâ=÷\Œ=÷Z8=÷Z7=÷Z7=÷Z7=÷Z3=÷W=÷6·=÷á=öÚ8=ö°‡=ö}û=öMê=ö×=õë–=õºÞ=õŠU=õYL=õ'ë=ôöë=ôÆY=ô•„=ôd=ô-Q=óû =óÑ=ó =ónô=ó=ñ=ó H=òÜC=òªÃ=òys=òH©=òÒ=ñæq=ñ´æ=ñû=ñH=ñ=ðÜ¡=ð°ö=ðƒT=ðR=ð!A=ïéë=ï³ÿ=ï‚z=ïQ…=ï }=îîÞ=î¹Z==î[Ö=î)4=íø =íÆ`=íw=í]}=í2$=ìö¼=ì¾[=ì“Z=ìb=ì)m=ëùð=ë̾=ë½=ëjÏ=ë9b=ë¥=êÖ4=ê¥=ês}=êA=ê Ô=éÕ6=髾=é{L=éIF=é==èæ¢=èµ_=è‚™=èPú=èf=çæ™=玘=ç|n=çX!=ç$ú=æó¡=æËÓ=æ›­=æj=æ83=ææ=åÒƒ=åô=ãZú=äÒã=å=ä§Ó=ãúD=äf=ãKŒ=ãñÝ=ãé=ã§O=ã{=ãR=ã$Â=âü=âË=â—ï=âPO=âP=âT=áÒ -=᧱=áv×=áE=á–=àéü=àºX=àƒ=àPé=à+•=ßúÄ=ßÈï=ß›=ßm=ß,¸=ßü=Þâ=Þ¯Å=Þ}¨=ÞJž=Þ¥=Ýãy=ݾ‰=ÝŒ£=ÝS=Ý ²=Ü÷ê=ÜÍ·=Ü¡:=Üoâ=Ü8=Ü ó=Ûâ@=Ûµ=ÛZ=ÛY‰=Û+†=Úÿ -=ÚÍ\=Ú¡¥=ÚqP=Ú(V=ÙôÞ=ÙØ=Ùºü=Ù‹=Ù` =Ù/p=Øÿ¥=ØÓù=Ø¢É=ØoÕ=Ø>Ó=Ø­=×ép=×¹Ô=׈4=×^=×,‹=Öü]=ÖÑB=Ö¦ì=ÖzÈ=ÖMO=ÖÆ=Õï…=ÕÂ_=Õ—]=Õe^=Õ7s=Õ -Û=ÔàÇ=Ô´ã=Ô…µ=ÔS|=Ô)“=Óüþ=ÓÏþ=Ó¦3=Óyö=ÓK#=Ó=ÒîN=Ò¼ï=Ò‹ì=Òa,=Ò6=Ò«=ÑÜ¥=Ñ´)=Ñ€í=ÑP;=Ñ%“=ÐúE=ÐÌÏ=Сw=ÐvÃ=ÐIz=Ð5=ÏÝ,=ÏXÄ=Ï€G=ÏmÙ=ÏDU=ÏÃ=Îê|=η=ÎeL=ÎY=Î2±=Î -H=Íáq=Ͷü=ÍŠ`=Í]=Í2:=Í=ÌÒ=Ì›%=Ìf=Ì7O=Ëúü=Ë–=ËÄ=Ë£¼=Ënª=Ë3+=Ë]=ÊíÐ=ÊÇí=Êž=Êx=ÊLÜ=Ê*=Éó`=ÉÈJ=Éš¼=Én|=ÉK=É’=Èò3=ÈÆ×=È…K=ÈOÐ=ÈJ€=È1=ÇðÞ=ÇÆ=ÇB=Çt¹=ÇI®=Ç(=Æè<=ÆÇ=ƃ=Æò=Åù=Å Ö=Å©w=ÅÀ½=Åœ&=Åp´=ÅE6=ÅS=Äí#=ÄÁ™=Ä‹<=Änt=ÄK¤=Äy=Ãò6=ÃÐS=áî=ÃuÂ=ÃQø=Ã%k=Âø„=ÂÔÝ=¨'=Â{6=ÂW¢=Â*Î=ÁýÙ=ÁÙÂ=Á©¤=Á„M=Á]|=Á/þ=Á=Àßl=À²Y=À€>=ÀOÊ=À5 =Àó=¿å(=¿¸=¿‰Æ=¿lP=¿A.=¿ =¾ïs=¾Âö=¾Z=¾r+=¾ON=¾#Í=½ùŒ=½Îý=½’¶=½u(=½U@=½4½=½ -Ï=¼ß,=¼·|=¼g=¼i…=¼?t=¼ø=»òö=»ÇÑ=»¢á=»{$=»P=»%=º÷E=ºÊ“=º“?²'A?±ÝŒ?±´8?±Úƒ?²Od?²ÒÞ?³$v?³4”?³£?²Î9?²g3?±êÓ?±y¯?±8N?±4Â?±`æ?±š?±¯˜?±ƒ?±9??±¿?±9|?±??°Õ™?°Å?¯w­?¯•?°Pr?±0½?±°ñ?± .?± °?°|?¯'þ?®_?®y%?®˜Î?®ˆ?®5y?­Ó?­š -?­U›?­K?¬[²?«M¥?ªd?©;¯?©í?©v~?ªj,?«?¬9T?¬:è?«\?ªŽ;?ª/7?ª´Œ?«Œu?«óç?«ÉC?«u=?«2ã?ªÉC?ªA?©q®?©s?ª -C?ª“?ª’?ª-Š?©ðl?ªD??«å?¬?¬•>?¬ÈÔ?¬È›?¬¶Û?¬”»?¬Zû?¬œ?«Ì÷?«— -?«^9?« Ú?ª¼|?ª®~?ªøJ?«`»?«¢¯?«¤ ?«iÖ?«H?ªy×?©ñâ?©§ñ?©Ï±?ªDÎ?ª’Î?ªO•?©x6?¨|?¨$ä?¨f?§Í{?§?¦—–?§ì?¨8?©‚“?ª7~?ªð?©J­?¨#æ?§Fì?§0 -?§É?¨œ…?©Y?©ê -?ªKÇ?ª€?ªŽ?ª}?¡Î?¡Bá?¡•¥?¡Ðƒ?¡é,?¡ì„?¡Ýc?¡³ã?¡rª?¡6´?¡#·?¡9È?¡Q -?¡Gæ?¡#è?¡0? í°? ì¤? ñú? ë÷? ÓÌ? ¹Q? ¬Ø? §¤? œÅ? ‘ê? ò? þ? ‚«? u? uh? l? #¾?Ÿxi?žˆ‡?ÄP?Ÿ›?žp?ž·ß?Ÿ?Ÿ>ï?Ÿ(É?žßF?ž}®?žOÛ?žzÛ?žÅò?žô¦?Ÿ?žáv?žrì?Ý?’%?ÈÐ?ž:m?žj?žŽ?X?œ­?›ÿç?›æ?œb°?E?ž¼?ž€-?žiÕ?Í?œ¨?šÇ?™5Ì?™ ø?šx)?œ[?’y?ü?ž -ÿ?žµ?ž.š?ž(¬?å‡?au?œ»?œ ÿ?›Ik?š…Ì?šC7?šä?œ -D?†?wÇ?„ù?;?œ˜«?›Í?›Vg?›‡f?œ—?œM§?›Í•?šÙÔ?šBá?š•¿?›„S?œ_F?œÎä?œÙÑ?œ•Ç?œ H?›_ -?šØƒ?š»~?šÕ³?š¨×?š$º?™Üñ?šG?›w?›„—?›`\?›?š÷T?›J>?›¤?›¿»?›šî?›Dg?š¾ß?š6o?š ù?šk‚?› #?›}?›©F?›©ó?›šš?›}p?›?[?šÏ?šJh?š6?š)(?š»?šÔì?š¿T?šUó?™Ìô?™~ ?™©”?š%È?š•0?šÉ¦?šÏ?š»þ?š?š}ð?ši?še?šjý?šh%?šD”?™é|?™V”?˜·r?˜SG?˜_Ô?˜Òh?™\?™´¶?™ÕØ?™Ü ?™Ú²?™Öû?™ÑJ?™Äã?™£x?™X­?˜è5?˜Œ¼?˜ˆç?˜ÏÛ?™›?™:R?™?–âN?–Úý?—?˜|ÿ?˜c?˜G?˜./?˜V?˜?—íÙ?—Ð?—¶Ó?—™?—N?–¾x?–(?•ùW?–Qø?–â?—J±?—l?—^4?—ED?—0ì?—Õ?–ô!?–Õ¶?–ÆŸ?–´¥?–ƒº?–{?•m˜?”´2?”`ê?”›r?• f?•^¢?• -?•³ƒ?•¿+?•ŸÝ?•BB?”ž?“ït?“­?”°?”ø?”ßÁ?”¾?”7Ã?“ŒF?“d?“+»?“„W?“Ë•?“ʆ?“á?’òd?’ƒ?‘i?Y_?oà?‘M?’u•?“]A?“Ë-?“áD?“Øà?“Ì?“°¬?“y¶?“BÇ?“3ç?“>×?“Aå?“2÷?’ï”?’QÑ?‘’¹?‘%‡?‘)Ñ?‘`V?‘žN?‘ïâ?’S´?’§Ë?’Ð"?’Æà?’žá?’u´?’Qˆ?’%$?‘ôð?‘Ñ–?‘¿4?‘¹Ê?‘°`?‘š?‘šH?‘È ?‘øX?‘ý›?‘ìr?‘è?‘ñR?‘÷K?‘ä?‘£Þ?‘K2?‘I?‘I¾?‘œž?‘Á?‘ªâ?‘Ž ?‘oI?‘),?Îk?—¢?”`?ª^?¹(??O?÷J?µÊ?‡1?f ?Qå??o?"^?Žê¡?Ž•ƒ?ŽFc?Ž ù?ÏI?”?|×?m{?2#?Œãn?Œ¿Ó?ŒÁ2?Œ¤+?ŒU§?Œ ¡?‹ø’?Œ±?Œ Á?‹úR?‹Ôþ?‹‘þ?‹!†?Š¡~?ŠZ×?Šx!?ŠÑŽ?‹î?ŠÔl?Š½?ŠR&?ŠL]?ŠP‹?ŠI?Š4?Š+c?Šê?‰›ç?ˆM?†¤?…Èõ?†`?‡Ê‹?ˆúÒ?‰~±?‰‰.?‰wk?‰oU?‰[J?‰I?ˆ¼?ˆO`?‡øÉ?‡àT?ˆƒ?ˆWú?ˆj?ˆ *?‡tß?†z2?…Vs?„Y²?„0?„á-?†&&?‡*R?‡®¹?‡¼Å?‡o¢?‡æ?†° ?†I?…p_?„Q=?ƒÑm?„sG?…œf?†g4?†šõ?†a?†>?†Xî?†+?…Ñù?† Ä?†mc?†„?†\!?†>W?†8'?†)¸?†a?…Ñ‹?…b?ƒš%?‚{5?‚¸©?„†?…/?†‹¢?‡.?‡dÝ?‡‚ã?‡d?‡mB?‡U¿?‡C?†iŸ?…¡à?…/F?…;â?…•D?…ÿ€?†]"?†ª)?†ÖÞ?†µÂ?†9”?…­ª?…r¶?…™Ø?…ïœ?†2¦?†@ß?†-?† Ä?†6n?†oÎ?†¯@?†·Ú?†u ?†8e?†L1?†U?††Ã?†yí?†š?†Õ?‡3?‡d?‡ÑÑ?ˆD?ˆ#‘?ˆ[?‡ÿc?‡ÝL?‡¨‹?‡B¶?†l©?…É?ƒíÃ?ƒé}?…*²?†­¾?‡y“?‡g‰?†êÎ?†Yc?…ŽÌ?„ƒb?ƒðq?„Õ?‡8Â?‰Ø?‰ÑR?‡¯?…|æ?…þÄ?‰e—?­?µ?Šiö?…H*?‚‡ì?… °?‹ÿ©?’å'?•œ¨?’R~?Š`’?‚ ÷?}t?‚nï?‹üÀ?–î&?žö®? íI?›¢™?‹ ?ƒ¸}?u‹ô?tÛH?ƒVß?‘|D?Ÿç»?«¥1?²“à?²¢ë?«L+?ž,?ŽÀ?@?qý?xÈ4?‰àp?œ ?­ÛÂ?¼.ç?ÅÝ?ÊÆ?ÊÀ~?ÅfÉ?º²˜?«>‰?˜~±?…½£?põŠ?l?~¸æ?Â?¤…v?¸P.?Éù|?×ê@?áC„?æAn?ç‡ü?åaB?ßš?ÕÐÉ?ÇÔZ?µ¾? wÁ?Šâ -?ty?h®J?w6ü?ŒÁ¦?¡d–?´Œ?ÄÇå?ÒüÛ?à`?ëŇ?ôÚ×?úÂ&?þX?ÿð?ýÓå?úßÌ?ö ì?îœ8?ä=c?Ö¬?Ÿa?±–‡?›_b?†?±?p89?mÂÊ?ƒE?—ãï?®‹‚?Ľ?×?è‚û?öº@&@ßÚ@ ÏÔ@ þE@Fz@ž]@]‘@þc@@uU@€z@¦h@ é@ »@•J@[Ü?ó»û?ä(-?Ñù_?¼ÿ#?¥™Â?Ž+ ?x(€?lT?}«W?’dÔ?ª'?ÁÃE?×M.?éô*?ù®Â@fü@î@ $ @çŒ@2à@ÔV@µ_@„@Îí@1¿@„V@]@k„@Ð@6@Às@§=@ƒ@·@]K@nè@°@œe@׿@¨´@ á«@6@yQ?õ ¶?äM»?Ðo~?¹­V?¡9?ŠM?vr?tãÂ?ˆgš?Ÿ ?·âH?Ï-?ã¤-?õ" -@Þ@¼„@ i¿@‚²@h@À»@*@â@c‰@Ýñ@ 4@ æp@ ‰ý@£…@õ=@³F@ƒ†@!ÅI@$>à@%¼ø@&x@%y-@#ó¿@"­Á@"Ö¨@#³¹@#Öe@#b/@#H•@#Ô8@$–·@$ïg@$¥È@#ñ@#W@"I³@!ŠÛ@ ¢x@`v@¦ù@N!@f/@-m@ˆf@ ð@Œ@ï’?ñïó?ÞüÂ?Èô'?°û?–©z?‚Ò?xþˆ?†ßL?œÊ§?¶)ˆ?λ?ã ?õÏ@Î@j@ °@,Ñ@ÙÜ@°O@;¦@Í7@å@!È@!l>@!ªù@"Ò¹@$ú@'p@({@))/@)@6@(Ûä@(En@( {@(š,@)£™@*^ò@*}*@*C—@*`@)ë)@*ç@*–R@+é@+€@*À¿@*EÈ@)Å @)P@)ái@*X©@*M%@)9F@&E@!8Ú@''@(â@#!ß@'¨¡@)øî@*¹›@*ã @+¡@+e˜@+ù@+M@*ðî@*·V@*µ5@*™…@**æ@)–y@)1@(´Ÿ@(AX@'°~@&÷™@&v@%(n@$X@"Óº@!?@e}@²@0I@”Š@bI@ t9@[?ÿ¢t?íÀÈ?Ø¡ó?¿fe?£Ž?Šêü?{5 ?ˆ?“¢m?­;B?ÆÍ?Ýwº?ðÞm@­.@­@ s@ y@çÃ@IZ@ê!@¿=@[s@!3`@#Ã@$ ß@%Ø|@&Ó@'Ÿ%@(=æ@(®q@)|@)câ@)½@*?@*l?@*­Î@*¬7@*@*… @*g|@)éÚ@)%‰@(·-@) -@@)«‡@)ÄŸ@(·Ê@&ºÀ@%q;@%æZ@'*@'õw@(i¯@) a@*ê@*Ƙ@+I@+@S@+RÊ@+^À@+MŸ@+á@*€‚@)Ž»@'©¼@$!¶@qz@.Å@ù@!!Â@%ŠÙ@(HL@)p‘@)Ðú@*@*T @*»@+>@*ÑI@*,À@)£~@)©³@)þÃ@*1¥@*V@)Âh@)Bï@)I@) @)Dû@)v@(—b@(< @(.G@( Ô@'³ @'k(@'O@'o"@'¨6@'Ũ@'ߥ@( ü@() @(õ@'ÎÑ@'Ü@'T˜@'FŸ@'”@& ¦@&$Á@&ä@%ó@%lI@$¡¾@$" @$ ®@$Â@#°>@"ê@"A@!ÉJ@"k@"\J@"5@!2ó@ Ô@0o@}ñ@•Q@vN@S@j@™«@à_@ß@R:@è­@ -’ê@w›?ÿ./?ñ\6?à¸|?ÌÖë?µú?v?‡©X?zÕ?ƒ–?—_g?¯w?Æø?ÚÔ…?ëêO?ù¿@HÌ@Šy@ -CÐ@ Ö!@B@å @Ë@š@ÐŒ@¬ë@á@#\@×@bØ@-.@7¯@òO@Ø@–o@dÜ@ÕS@½l@Í¿@t@ͱ@Ä@wå@à¤@®ö@‰`@Ò*@C°@o§@B@Ñ @ðJ@/@–@v@H @Ž@4(@t”@Bd@ð@ ù@~“@·Ù@%L@^ @RI@/†@ð @@•@nð@Ô>@µä@.^@¾Ì@êÉ@¤/@œ@}P@Äß@¯@Ô@Ú™@;0@H@Àö@ðÑ@ˆ@èÖ@»@1ù@)Â@c¾@7ô@‰@ë@Ú@Ìn@¿n@•@n@‹•@¾@±Ù@m.@/>@"y@]@âL@mN@¯@óÓ@3¡@Z6@v@5¡@•X@·¸@WR@߶@(^@Pl@`g@N«@@ ì@2î@@@E½@u@v\@>@åµ@^ù@½Æ@šà@_@@“@Xv@¸@†/@æ@ÿµ@ÞO@{f@V@M=@ÔÚ@`@ø0@¿@ÿí@õk@Ä@ù @Í>@^@­¦@µk@ñ%@ÆC@ @Bm@È@¦q@ž½@½@šÒ@Ò@p @@7@Šü@X@Ñ+@[ª@#g@$@1@œ -@'7@m[@Y¬@ü×@r3@@FP@¼·@ú·@ä@áì@tÅ@®e@çg@·@G@ @~«@a0@Ëg@2@¾â@¥D@ˆ2@W¥@9s@(@'‰@:@ Ž«@ ì@ d@ .@ ó@ u@ M@ ¼@ ’„@ 4P@ bh@ Äe@ Ï@ De@ \U@ -¥M@ -‡Ö@ -Ë@ -Ó‡@ -sž@ å=@ Rì@Îë@er@ÔÌ@´ -@è¦@ýY@Ä™@ :@|?üfé?öà|?諒?æ×Ã?Ü›Ž?еP?Âký?±$Î?œó„?‡Kt?kh?bÁ?zEÇ?‘ ?¥H?·U?Çj¢?Ô{L?Þâè?çà?ît€?ó$?÷7y?ü;@‹ø@GÂ@\"@ß@Ó@¢Í@0Ý@[­@WŠ@m›@¿v@4µ@­@’@`@du@¶å@ ð@B@B´@ @éƒ@ -°@Mo@…ø@ ð@„@ÿ@W!@)Ñ@²‹@Ÿ5@3Ï@Ä^@[@+º@ù&@®Â@4@ ’@¾’@^î@¿I@Œ§@ú@Ò@uç@?Ç@î@øï@ç2@ìŸ@ön@è:@Ì@¨‹@x-@Xª@E½@.@ @ÈM@ä¬@»@G-@Ê]@î9@»÷@bZ@)Ç@B@н@K@Äù@±Ò@ï¬@:@Õÿ@m@@ @Wr@_¹@“É@ Ù@N@0k@âN@@a¡@|@ß@)@Ô@Øp@p:@;@gÛ@ 2@….@f @œ£@â®@ß“@šú@=_@ß @¯[@˜q@P™?ÿÖä?þò¿?ýG4?úOÌ?õ½R?ð?•?îÅ?òO?ø…ò?üƸ?þF?þ?ü¦0?øÅž?ñ*u?êYJ?쀌?ôüÍ?û;Ä?ýÐ?ý“ ?üx¶?ûŒ?ú.¾?ú$î?ú˜?û¯h?ü¹ ?üèv?ü¥?ü[G?ü*?ûµ?ú`]?øäÒ?øŽ?ù\Ç?ú!‘?úaü?z:?w—?D£?Qº?h=?[‘?:Î?ê?;?hh?ê?Œè¹?ŒúJ?ŒøT?Œ¾À?‹×v?ˆ(?€†×?~ê^?‡j?‹A·?‹„š?‹1?‹,?‹BP?‹d?‹Ù?‰ü\?‰_ò?‰Óq?Š4U?ŠVq?Š*?aß$?bÞ1?c<%?cAJ?c@‹?c(·?být?bÇ?b“¶?bz(?b_š?b6Í?bWs?bå?bnœ?b;¬?b)³?b;Î?bJ9?b -+?as„?`ø?a ³?am“?axç?as¿?a€ì?aHN?`êÎ?`ªú?`NÛ?_õ+?_ì?_ªÉ?_sj?_BI?_PŽ?_ce?^Ê?H8?G²|?Fái?FU?F£F?FÀâ?FŠþ?FMw?F ”?F;‘?F_G?FfX?FOÓ?EáI?Eq+?Eˆ²?EÔ5?Eú?EŸ»?EŸ?E«?E=²?EMØ?E8·?Dî:?D¦?Dté?D»’?DíB?D°?D€µ?=|]?=f±?>*Î?>¶Š?>l"?<—ã?9ùX?92]?;˜?=)?=MQ?<Õä?<žÜ?™?+cð?+-G?,#1?,ä?,ír?,ä–?-6?-{?,þ¡?,Ìs?,u‹?,Xù?,DÓ?,Rò?,ZA?,2Ð?+ë÷?+›?+#?)v1?$Á ?#¦ó?(r?){`?'DZ?'œ_?)„q?*U?*s5?*A?)Î3?)–?)Óí?)Ú?)IŽ?(’ì?&¡ï?#ñâ?%Žé?(Iy?(Р?(ÄN?(b’?'÷?(À?'ÿÇ?'ô“?(Ž?(;?(=?(%?'ïN?'¨G?'¯E?'–#?'8×?'&W?&î0?&r?&› ?&êŸ?&ÍD?&¨¹?&ì?&:s?&D&?&l:?%Ú6?$í”?$øî?%[ñ?%xÙ?%uû?%"h?$ד?$Ýö?$ó†?$¶h?$/?# Ò?#d,?#j0?#gõ?#-¦?"è?"¤S?"}»?"7Þ?!Ýß?!ìF?!èñ?!– -?!K?¸q?ãß?“u?/“? 1Â? ŸÍ? ©î? TZ? 9ê?ìÃ?žl?·?¬g?\]?_c?òF?D?§_?(œ?Ûf?¢?é´?&V?Ê?ÝÆ?BÍ?y? ©?Þ¹?Ñ ?,Ü?”—?Žª?ÿU?œ…?…7?yÛ?7y?ð\?ÙR?mw?Z0?§>?. ?§?ªk?A$?„?t?kL?³T?+?oI?È\?u©?pî?'Š?“z?°d?æ©?£?è;?Žò?b?w#? ‘Œ? u?Ü ?º >ø’V>ê}'>Õ¬G>¶pÌ>«wV>ÆeZ>à§>ðòý>ü¹G?ž?,ù? @ ? €É? æ&? €?³Ä?ZÓ?¶¾?¯?6F?Nª?’´?´ë?ò…?å?DÀ?gv?N(?4Ü?Il?/3?ï¬?ºj?Îp?× ?´h?D?^?à²?Ñ?7O?/0?Ò²?¦û?¸w? t?‹?¿æ?C?ù¹?ýÑ? Ï?:„?3?Óâ?Á?‹Ò?×?Ǽ?¨É?½a?Í?/†?&??Ðb?žÙ?D?îš?#?][?¢ò?Ì?pH?²?àb?ùk?Y÷?¼Ì? ˆ? ?§á?c@?Y4?ap?ôë?I?ev?ž?Öw?v½?4?Í?š»?ìÌ?(’??ÓÇ?Ô ??1Ã?6?ÛÉ?²? šÈ? ³? Èp? “ë? Î? y¼? ”? ˜t? ¢ô? ? `1? %Ö? Îr? „ù? }? ’—? e? 4­? ûš? â\? ûu? òI? Ì»? ¿7? ©ä? ~ä? ;L? ? L? %1? Q? -ë×? -Ó‘? -ª? -ƒ? -f? -Eç? -? ü?? öq? ç\? Çq? ¦? ? x¸? `? I“? :=? *å? ˆ?û”?à!?ÄÈ?ª?‘¥?}¼?gp?L?.ø?Ï?þk?ã|?Çé?®?”r?|+?a,?G˜?.¦?Ì?þÉ?åî?Æ ?°1?ŸÞ?‹¿?sé?[*?D{?2?? o?ñö?Ú?Ç©?³Õ?œN?†D?pW?X-??)Ê??Ö>ÿêw>ÿº >ÿ„©>ÿV¬>ÿ*0>þÿ8>þï>þÖj>þ‚>þ->ýñÀ>þõ>ýɯ>ý8Ó>ýk§>ýyC>ý4>ü†H>üG>ü >û°b>üh>ü²b>ü=É>ûØ >ûa>úøù>úRj>ú…š>úÐö>úŇ>úÄ—>úµ>úYŒ>û3£>û)>ùû÷>ù¿>ú­¿>útq>ù«2>ùF’>ø¡4>ø–>ø&>ø:˜>øË>ø‡Q>øï>÷Ž÷>÷/P>öô”>÷öN>ø>÷•â>÷ü_>÷ÚË>÷‚ >÷×—>ø;ç>÷bn>öµô>ötô>ö,r>öq¯>õso>ôY>óˆ{>òr\>ò>>ñ2Â>ïz[>ð¡š>óƒÙ>ó‘>ó -~>òšR>òÿk>ód>ñô²>ñ>Z>òÁ}>ó¹>ó–‚>óq>ò(«>ñk”>ñˈ>ñ¦5>ñ"É>ñf>ñNÑ>ðß4>ð¬?>ñJ…>ðé^>ð ¦>ði>ð%>ïÙ¨>ïÐ >ï˜c>ïP¦>ï*2>ï q>îý>ï+>ï¦>î¯(>îtJ>îJÄ>î89>íýT>íá >íä”>í°>ífŽ>íKP>í¹>ìàÂ>ìÍÍ>웊>ìeh>ìC>ì‹>ëî>ë«>ëV÷>ë9>ë1>ë Ñ>êáŸ>ê¹I>Ꜵ>ê‚o>ê^v>ê<è>ê#œ>ê¾>éç¶>éÂø>é™1>éqv>éL.>é%¢>é¬>è݆>è›>è ->ç[4>æÇ¡>ær€>æ;’>æ0>å׌>å§ë>å}Î>åUÆ>å#ð>ä÷‰>äÕ¼>ä¯*>䀠>äU>ä-œ>ä¦>ãÏ4>ãš>ãpÅ>ãZI>ãBq>ã'>âìŽ>âĉ>â™c>âhÜ>â;C>â0>áæ>á»ì>áŠ>áb'>á3>áî>àØ>àŸ>à]g>à;Î>àê>ßõŽ>ßÌ^>ß>ßk¶>ßAd>ßÎ>Þñ>ÞÃS>Þ‘|>Þ`Â>Þ8:>Þœ>Ýð>ÝÉN>Ýœê>Ýqƒ>ÝGÑ>Ý®>Üî8>ÜѪ>Ü°÷>Ü…U>ÜO>Üò>Ûíù>Û±Y>ÛxÈ>Û.7>Ú¹÷>ÚEŽ>ÙÚ>Ùmæ>ÙCÛ>Ù.‘>ÙË>ÙÛ>ØÔN>Ø¢€>Ø}Î>ØY>Ø3Œ>ØŠ>×Öc>פÅ>×€b>×bW>×B'>×_>ÖðB>ÖË´>Ö¨(>Ö°>ÖX¹>Ö2û>ÖÃ>Õêð>Õ»j>Õ¥p>Õ•’>Õv·>Õ[>Õ6ô>Õ)I>Õ!>Ôâ‰>ÔÈ+>ÔÔ¿>Ôò>Ôj(>Ô0i>Ô ^>ÓÖW>Ó¦ý>Ó§+>Ó¥>ÓEq>Ó,{>ÒË >ÒÀã>ÒÇ>Ò4Ú>ÑîÁ>Ñí0>Ñáó>Ñó(>ѱ¸>Ñzë>ÐÊ^>Ðlä>ÐÃ7>Ъ>Ð#->Ïj'>Î@Ï>Ï‹Ë>ÐRT>ÏŽ>ÏOG>ε’>ÎŽ·>Î g>̓6>̨Ò>ÌîT>ÍÕ5>Ϻ>ϬO>Îá’>ÎÎ>Ï¢>ϼ=>Ïóì>Ï0à>ΰÝ>ÎÀ=>Î1M>Î&>Î@Ì>Íý²>Í!>Ìî2>ͦ>Íî>ÍW×>Ì£Ù>Ëðù>˪>ÊЈ>Ê4Á>ʃÖ>Ë®>Ìü>ËÌ¡>˼>Ë B>Ë’'>ËÙ‰>Ë V>ÉÐG>ɇ“>ÊTù>Ê›'>Éõª>ɧ>É”%>ÉÖû>Éjµ>ÈÑ8>È¥>È.>ÇÄ=>ÇÖq>Çôg>È!>ÇŠr>Ç =>Ç$‡>Ç#>Æô>ÆÕZ>Æ¿–>ƪž>ƲE>Ƹ>Æ«m>Æ;±>Åöµ>Ư>Æ W>ÅÄB>Åv,>ÅJÝ>Å)$>Ž>Äø\>ÄÔ³>ļ®>Äà>Ä`T>Ä.+>Ãÿv>ÃÑ>>æÜ>Ã~0>ÃLÓ>Ã>>Âòh>Âѽ>ªf>ƒ>>ÂZ@>Â.;> >ÁèR>ÁÅ>Á£>Á††>Áip>ÁJ²>Á-p>Áþ>Àí´>ÀÇÝ>À¶>Àsœ>ÀH±>À Ä>¿ÀW>¿q>¿3ñ>¿ -ö>¾ßº>¾½ÿ>¾¥ >¾ƒ«>¾`>¾A>¾$E>¾Z>½íX>½ÕJ>½¼±>½{>½{”>½Y>½6}>½/>¼ôa>¼Ñˆ>¼®i>¼‹ë>¼h†>¼C½>¼c>»õ>»ÜØ>»Â^>» >»{’>»U…>»0q>» c>ºí•>ºÌü>º§Û>º‚À>ºb`>ºC|>º!‰>ºŠ>¹Ú>¹´±>¹šø>¹zÊ>¹PÒ>¹!Õ>¸óÈ>¸Íä>¸¡†>¸g˜>¸4=>·ÿv>·¥D>·jx>·D>·lW>·Pè>·>>¶àø>¶½ô>¶¥ÿ>¶ˆÞ>¶u—>¶ie>¶3>¶n>¶Ì>¶J¦>¶$‰>µÊ#>µ†Ö>µIõ>µ]y>µ‚8>µ.‡>´è`>µ4º>µ*5>µ?>µQŽ>µ>´ª[>´(>³™á>³‡â>²^ˆ>¬s>¦c±>¤¯å>«Ç>²">²±ž>²Å{>³â>²½Ú>²î/>³Õ>³ð4>³Òî>´G>³¾À>³8ï>²V>²%ß>²SÐ>±÷„>²^>>²Ež>²l>²š…>²'>±¼õ>±rÌ>±®F>²t‹>²56>±~·>°‰>¯¤S>¯S|>¯âÐ>°w ->°9>¯˜>¯w2>¯å¨>° Ý>¯ÕÐ>¯_¢>¯§<>¯cš>¯k>®hl>®8Œ>®+¾>­’_>¬Å >¬v>«.ÿ>ªö8>¬;">¬->«ï >¬>ª^Ÿ>ªJ¥>¬¼>«üe>¬ >«Õ0>ª™>©N>¨…>§.ƒ>¤~ø> ‘¯>¤qñ>©c>§Wƒ>§>ªNs>ªÞ>¨kç>§(û>ªÈ>«xy>¨Vf>¦Ùª>§»x>¥®S>¦‡>¥ùç>¦ËÎ>¥`>¥}>§[¿>©>m>¨ðV>¨|É>¨ñ'>¨]`>§(>¦êÌ>¤÷g>¤K,>¤}u>¤`ç>¥É`>¦ŠÔ>¥8>¢þ> Þ> {ÿ>£ç\>¥fØ>¤JÑ>¤ë>¥>Ó>¥£>¤Y >¤¥>£ò>¤‰>¤ØØ>£èR>£ÝG>¤SË>£ëc>£lj>£}ç>£±Ü>¡â¼>Ÿñ†>¡QE>£3b>¢®`> 8Y>¡J>£ƒ>¡àÚ>¢s >¤6¾>£ÂM>¢›½>¡ÿ­>¡­\> —ž>ŸÆö> ^>¡Ûñ>¡”°> €¿>¡ÿ>¢o>¡µ0> h>Ÿ6¨>  y>¡­Ø>¡—M> ÿ>¡î>¡ßÁ>¢F²>¡Mx> Ê”> Õ> P²> > 0 >Ÿµf>Ÿë·> (m>ŸÄá>Ÿ¯ç>Ÿ‚ò>Ÿ>Ÿj¦>žÀ>ž™­>ž£>ž9Ì>ø>å>ßÜ>Ä/>®.>ß>e(>@<> •>>œßÓ>œ½ö>œ—>œy>œX‚>œ6ó>œz>œ,>›äi>›Å×>›¨Z>›ˆ’>›g’>›Hþ>›(>›z>šä3>šÀJ>šð>š}U>š][>š<«>šQ>™ý‘>™ÚÄ>™º7>™¢€>™‰ë>™kƒ>™H¤>™*Ž>™1>˜î1>˜Ë¡>˜­q>˜Šn>˜c{>˜=©>˜;>—Ö1>—ºì>— 0>—™Ç>—ƒA>—V >—3æ>—×>–ê:>––9>––>–¢M>–ˆ>–^ù>–,§>•ÚH>•~>•pA>•‰>•g>••>•=>•Ü>”çV>”³þ>”™Ö>”£>“ØG>”5o>”2>”>“äÂ>“Õè>“ªŸ>“Wc>“jk>“©’>“¬Í>“| >“GØ>“€1>“ny>“Rb>“„Ï>“P>“ -~>’ì]>’ʳ>’•æ>’H¨>‘À>‘Ä’>‘§?>‘ò/>‘¸I>‘ ô>‘¨,>‘R>‘L>•×>o+>8é>÷;>/¬>F>@©>=T>3>ðN>Îo>‘>Êp>Yå>Žü÷>Žî²>Žw“>Žƒ>õV>¶>Ž>Ãã>$>”>>Ë>Œ„¢>Œ“1>P·>?#> ê>Œ9>‹u¥>‹'5>‹¸ó>Œ?º>‹uÜ>‹¹ä>‹kZ>Š}­>Š_ƒ>ŠÞ>‹?Š>‹R'>‹—É>‹bÊ>‹c>‹,7>Š¾ß>‰ºd>ˆŸB>ˆr©>‡%#>‡[|>ˆ4ä>‰ÀÚ>ŠÄ4>ˆî“>†|>…—y>„uC>…ì(>…þ¦>…/´>†j>ˆû>‹_U>Œ^º>ŒX8>‹]>ˆË>‡-X>†”Ò>„“M>‚Ÿ>ƒRM>„Xo>„Ñæ>€Ç>wO>…C>‰tç>Š{„>ŠÏj>‰Ÿ>ˆ>…_>ƒÓ^>‚=> -Ñ>Ž >ƒ$D>†‡>ˆ>Ì>‰ì…>Š´…>‹)¶>‹Ê”>‹>Ši >‰Ö”>‰êE>‡ÕL>…Ï°>‚øà>|ù >xµó>t->riÅ>wÝM>y8>ƒVg>…@\>†§Œ>‰ÿ½>‹Ó>Œ‰i>Œ2ð>Œ•6>”Å>jì>Œh>‹D >‰½Í>†w°>‚½*>~Fâ>p¿ >d®>c±©>e~s>m8z>vè>~Œ¬>‚eÌ>…8n>ˆØ>ŠC>‹T>ŒÅŽ>Üž>Ž>E>Œ{Ë>‹×›>‹þi>Œ…¦>‹©>ŠF>‡zu>…>‹>‚ûÏ>}é&>uÌV>mf×>b{¯>YYî>\“G>g¦>s•>|=Þ>€Ög>ƒ3>…EÔ>‡Db>ˆôÜ>ŠJñ>ŠÐË>‹¶+>Œˆ>Œ¿ˆ>Tù>­>Žtq>Žˆ ->îT>2L>'z>Œ(Ã>Š‹<>‰\`>‡Î‡>…iA>‚Æt>€C…>{m>rek>f4¹>XES>K0ü>I*>Ssy>`&>lg>vžž>~C>ñ¦>„'o>…í3>ˆ¾>Šð#>‹¨Ç>ŒoÀ>ŒãÎ>Œ›P>Œ7»>#‘>Žn>Ž·(>Ž¯>ŽeÑ>Ž+>Ž¢ ->ŽýÌ>N‚>Žñí>´y>Œ¶ü>ŒJ">‹·ž>Šc>ˆÐ†>‡Bí>†á>… í>‚ªq>ïy>{<·>tM>>jÈ>]Ÿ†>NŸR>Agd>Cx‚>R>_|é>kd;>v“>}°½>«ö>ƒ›>„øT>†m>†ì¢>ˆR>‰¢Á>‰Ã2>Š¬3>ŒÚ>‹Ã‚>‹Øà>Œ$M>Œ|>ŒƒX>Œ:‚>ŒÃ>Œ!Ã>‹Õð>Œ†>Œq‹>‹Ï¯>Š¿é>‰õ¬>‰­D>‰šÄ>‰ëû>‰qÙ>‡Às>‰ -‡>‰æw>‰ÖÏ>ˆ¶>ˆQ>‡RF>†˜>…U§>„œ_>ƒo&>‚n>€²A>|Â>wJX>oëÁ>gÓx>_‡>S¯2>Dõ½>6 Œ>/Hr>9Ü]>H2Œ>T†V>^W¯>fä>n%>sž>w|Å>{ØÔ>Ž$>>º>‚1â>‚óR>ƒƒ'>ƒóI>„QU>„œ >„ãÃ>…*>…Hî>…j ->…~Œ>…1ÿ>„Ž¦>…IA>…Ÿ‡>…¡é>…ž«>…’l>…Tð>„*¦>„\>…>>…C4>…,>…ª>„ý>„ã\>„Æì>„¦õ>„‡¹>„gÏ>„Eß>„!>ƒú(>ƒÐ’>ƒ£ù>ƒt>ƒ?1>ƒ>‚Ê9>‚ˆé>‚?>íô>ù>%ê>€°P>€)>æ>}›Ú>{Ø#>yºª>w6>t{>pKá>k˜‡>eݹ>^ý‘>VÛª>MTU>B<Ü>52µ>&i)> ¯0>,7Š>:'Ã>EØ‚>OÊG>X? >_YK>eHŠ>j+¯>n >q%ì>s™É>u9>wù>x? >y+Ü>yý8>z›®>{0x>{—µ>{ßÛ>{P>yQÐ>z é>|0 >|Šw>|‰¥>|uÙ>|R&>{ä…>zý>{’u>|à>|Ä>{„5>z+ >zëu>zb>vÉ>y*>zò>zÏ£>z¥->zŠY>z\}>yÍ@>x<>x²³>yŽ6>ylþ>y8±>xǦ>xŽ¢>x•‰>xk¢>x{>w§&>w¯Î>w˜º>wa(>w&n>vìÜ>v±Þ>vu>v7>u÷¦>u³>u]e>u$4>tæ>t¢A>tW>t >sµª>sZ>rø>r]>q«D>qL°>q´>pµú>pÝ>onü>n>m1>l°>jÞ;>i‚J>g—ì>e14>c8Y>`}©>\ÞS>X.¼>Só>K`¶>BõÓ><7?>2CS>&!­>IÛ>Ög>oŠ>,4¢>6ÏV>?ß=>G©Á>M>P¬O>WÞ>[Iü>]þÓ>`7è>b -–>ccê>b„r>_6Û>`“ê>a L>e9~>g²l>h€>hG‚>hvÝ>h“ß>h¡[>hºî>hÉ >hÃ>h§}>h–M>h“ù>hnÇ>hPÀ>hR!>h'W>hÿ>gùœ>gÞ>g½›>gš‘>gu]>gLó>g%§>gj>fÓc>f“­>fd(>f^y>f=%>fô>eå>e³ó>eyO>e_…>e;D>eV>däý>d¸B>dŠù>d_Š>d0Ê>d?>cÚ8>c¬¡>c~ã>cRx>c$Þ>bõÊ>bÅá>b•Â>bjH>b:‹>b)>ak >aYQ>aNl>`}>`ʪ>`öÆ>`Êq>`•°>_‘j>\–î>^ƒÈ>_´ë>^Ù°>^ºÃ>_©>_ «>^ܘ>^®¯>^‹ >^3>]ö>]î(>]Ã\>]‡Ü>]RÁ>]1\>]6>\É®>\’{>\b >\3û>[ÿx>[É ->[‘Z>[G<>[V>ZÞö>Z©€>Zr)>Z8n>Yûq>Y»6>Yx¦>Y1ã>XÑQ>Xƒ>XO>X=>W§¤>WA>VÙ¯>Vl>Uñm>Uwe>Tín>TGÅ>S‰)>R¹ô>QÑE>P»¦>Os1>MíÛ>Lr>IìŒ>GFš>Dz>@$°>;aÚ>5 Æ>.¿[>&–>Â>m¬>`æ> ~>,>®×>'‚!>.ö)>5-n>:I>>r>AÐ >D„ç>F¯ß>HhE>IÎF>JòÔ>K×)>LŽf>M >M“Ã>Mî¢>N3Î>Ngm>N’’>N®Æ>NÅ>N¿é>Nh>N–)>NÑc>NÉZ>N°>>N¥>N–Y>NG>MDÃ>Mžá>N*k>NÍ>MÆx>L q>L>–>M|Ö>Mz…>MY>>M6·>Mã>Lìt>L¸ >L™Ë>L}‹>L&>J¢“>K.æ>KÚ…>K½Ô>K›‡>KsÀ>KDÃ>KÛ>Jüe>JË(>J”b>Jy„>J]¸>J2²>J ò>IÛý>I¸µ>I’Þ>IkŽ>IGž>I >H÷>Hά>H¥à>H}º>HU->H,p>Hø>GÛ>G­ø>G…>G\>G3T>G²>Fæð>FµÉ>F….>Fañ>F;Ê>F†>Eð×>EÉ»>E¡ø>Eyu>EPm>E'l>Dÿ5>DÕä>D­‡>D„â>D\Ü>D4“>D ¬>Cá4>C¹>C‘>ChÎ>C>s>C£>BÞÚ>B¸Z>Bš±>BrH>BHU>B!¯>Aý`>AÔJ>A¦ø>AwU>AOs>A.Þ>A -‡>@âå>@²Â>@vL>@/W>@/~>@/>?âH>?¾ >?š–>?o€>?9Ô>?>>ü?>>Ó¼>>¥<>>c>>1r>>->=öÈ>=͆>=¬x>=Ž>=_Ÿ>=7“>=”><ôG><ËJ><œë>< -Î>; >:ýÇ>;œ >;†÷>;Tæ>;1B>; ó>:è >:³é>:ƒ¸>:k‰>:9©>:Š>9ö>9Ìi>9 û>9m¢>9:›>8ÒY>8˺>8Ò>8©>8vP>8F+>8#'>7èÄ>7¿3>7 x>7v>7DO>7W>6ì`>6º£>6ˆì>6Z×>6(’>5õ>5¿>5ˆe>5PÑ>5>4׊>4—$>4Uu>4ë>3ÁÑ>3cL>2ÔŒ>2¡å>2V¡>1äW>1g1>0׺>03e>/vú>.›÷>-™ð>,o‚>+ -a>)\±>'VÒ>$ãŠ>!ê>Oå>ø>Å(>—õ>D¤=üžÊ=ætÇ=äð=ùDÃ>‘á> ½6>º0>¸ø>Ú8>< >!úä>$2t>%ùw>'`ý>(ˆ.>)v½>*2>*Çœ>+>Ï>+>+ç$>, ¬>,L£>,mj>,ƒÊ>,ˆ>,v`>,c>,^C>,¹>,#Ð>,y„>,r5>,Ð>+¾M>,'¨>,Î>,¾>+úÊ>+â1>+È>+­4>+Ò>+kß>+K€>+9Æ>+3>*ö4>*Þ>*Á£>*À>*rV>*]>>*Bþ>*ó>)ù³>)ßø>)¿»>)Ÿj>)xæ>)Z%>)8>)®>(úC>(Øø>(¶ï>(•ª>(t‡>(S>(1f>(|>'íB>'Ëh>'¨%>'‡m>'eú>'C->'!È>&ÿ’>&ÝÏ>&»ú>&˜ª>&u…>&Ty>&3‚>& I>%é*>%ÍŸ>%¬>%‰”>%d¹>%D|>%#ÿ>% >$à>$¾ >$›ð>$y‰>$V¦>$5í>$\>#òt>#Ј>#­>#ˆÕ>#i]>#I>#'W>#>"ã“>"Áî>" >>"~H>"[Ò>":,>"F>!÷>!Ó­>!³m>!’>!pØ>!H”>! ý>!> ë -> Éï> ¨A> †s> e~> D%> "ó> †>àI>¾Ï>š>rô>Må>16>Ý>ïB>Ó >²C>“Í>s>R >1r>Ð>ä¸>ÉÕ>­˜>Œ‚>j.>Hò>(U>>çt>Çó>§V>†h>em>E>#F>œ>ãi>Âø>¢w>÷>ay>A> >þW>Ýü>¸p>o)>4®>.>( >•>üÉ>Ù™>±C>˜ú>|*>\È>;Ö>R>ùî>ØÁ>·a>šn>}>[Ö>$ñ>ùI>ô/>Èê>³‰>”í>s>[Æ>0(>>ø…>ÝX>ÀK>ŸØ>}>^1>Í>û…>þ®>Þ>¶ï>—Û>…b>e˜>@…>%º>×>è…>Ê·>ªô>‡j>i=>M[>.> >Î~>Å>±>É>q>M)>4ë>ì>ìÎ>Ùp>»¬>œ¬>~>_l>@‰> ã>K>Ý“>½Ä>¢Ã>Ü>i>K”>,Ì> Š>îý>Ñ>±]>Ž>q5>Tr>(p>(>ûl>Þ>>À>—n><->Fu>ù¤> > 6ù>s > ­>> »h>rª>rû>S”>6> å8> $r> ©^> ºj> œ…> €­> d+> G}> '|> Ï> Ä> œ¹> °9> “®> u§> WU> 8Ó> q> ën> Àñ> §> ›X> ‚î> fµ> IÞ> *þ> > -ï0> -Ñb> -³O> -•š> -wC> -Už> -)Å> -ü> þ_> ߥ> À·> ¢±> „#> eš> F > >î€>äð>Ê>ªC>‰°>eÎ>r> Ž>½>çê>Æ>¥&>æ>[v>;>„>óç>ÎD>§©>w>Iç>r>ú%>Ÿ{>…®>n<>9ð>c> >{|>22>æÞ>ò>*r>º >9§>¥V>øn>-)=þwP=û¸=öx=ôÃ'=ò:±=íxÃ=ç²F=àÆd=؈æ=μ=Â¥Í=±´u=®Ö=¿z—=ËÁ­=ÕdÅ=Ý*=âã^=éF=î=ñ¼i=ô¯Ó=÷U=øíÛ=úx"=û®^=ü¥€=ýf=ýõÀ=þrm=þ×ï=ÿ#Ð=ÿYÐ=ÿƒƒ=ÿžT=ÿ®=ÿ²ã=ÿ²Û=ÿ®==ÿ¢=ÿ‘=ÿ{d=ÿYî=ÿ=ÿµ=ÿ Ü=þçÎ=þî=þØ=þv‡=þN¥=þ%)=ýù¹=ýÏ=ý£W=ývê=ýI<=ýØ=üìå=ü¾E=üÄ=ü`)=ü0^=ûÿ÷=ûÏt=ûžú=ûmæ=û<•=û =úÙ@=ú¨A=úvD=ú?¸=ú - =ùÞ¼=ù®4=ù{ä=ùIe=ùG=øä=ø°¼=ø~Ô=øL£=øÇ=÷åõ=÷ž™=÷oó=÷HÂ=÷±=öã]=ö´†=öƒ‘=öOw=ö =õé°=õ·•=õ„Ä=õRu=õ…=ôìZ=ô¸¡=ôƒÞ=ôT -=ô!Â=óîó=ó¼#=óˆ =óSU=ó!2=òãé=ò°è=ò‹•=òY=ò$v=ññ:=ñ¿)=ñŽê=ñ] =ñ*­=ð÷Â=ðÂÏ=ð’½=ða0=ð.î=ïúÃ=ïÄ€=ï—r=ïf=ï3?=ï¯=îÏ¢=în=îj =î8¢=îË=í¾á=íx¹=íh=í>[=í ^=ìÕ8=ì©Ø=ìy­=ìH=ìt=ëäá=ë«Ì=éTÃ=䢹=éæ=ê©ò=é¸Ä=é¶=釄=è—=é»=éÃ’=鎋=éS»=é*Ð=é6=è΋=è™r=èg±=çZç=æÝd=çdz=矱=çy8=çJ=çß=æçÿ=æ¸=æ‡Í=æN‚=æ&=åôÅ=åÆ=å“­=åco=å0ü=äÕ4=ä½&=ä¢s=äk,=ä1ù=ä =ãÓ§=ã¦K=・=ãRð=ãé=âä=â«€=â‡y=âc¶=â*±=áê2=áÐñ=á¦=ávw=áGS=á®=àç=à¹È=àŠh=àZ„=à*Ÿ=ßÚ2=ßš›=ß==ßl9=ß@*=ß!=Þâ=Þ³=Þ„4=ÞUI=Þ&q=Ý÷–=ÝÈ`=Ý™=ÝkV=ÝA=Ó‚=Òç^=Òº<=ÒŽ=ÒZ=Ò%g=Ñô=ÑÆÔ=Ñng=Љ8=Ñ'–=Ñ+b=ÐÉ9=ÐT5=І¼=Ðj=ÐOb=Ð#ã=Ï÷à=ÏËÍ=ÏžÈ=ÏsS=ÏGð=ÏS=ÎïÆ=ÎÄÉ=Ιs=ÎmË=ÎAé=Î ¼=Íà+=Í¿ -=Í”=ÍhU=Í:q=Í6=Ìæ7=̺~=Ì'=Ìcz=Ì8˜=˯a=Êrû=ÊŒ–=ÇÒÔ=ÊCO=Ë2=Ë -Á=Êàµ=Ê´­=ʉ»=Ê_+=ÊË=ÉÜJ=ÉÜR=É´r=ɉ=ÉWÜ=É/f=É -ý=ÈßÈ=Èž=Èyô=Èa7=È7=È z=Çáú=Ç·I=Lj,=Çbg=Ç7=ÆÜ=ÆÃl=ƺ±=Ɔ=Å7§=ʼn%=Æd=Åà—=Åž¥=Å‘Y=ÅjÀ=ÅAØ=Å>=ÄÏ=Ä»}=Ä›"=Är=ÄHj=Ä)=ÃÎ6=ûŸ=ßë=Ãxò=ÃBu=¾A=ÂTš=ªŠ=ª=Â¥=ÂX‡=Â/e=ÂU=ÁÝ:=Á´B=Á‹Q=Áb^=Á9i=Áv=Àç¦=À¾ƒ=À• -=Àm=ÀDK=ÀØ=¿¨¨?ÜvÖ?ÜÊ?ÛÙH?Ûðû?ÜTÛ?ÜÆR?Ý -?Ý£?Üçî?Ü E?ÜF´?Ûì[?Û§o?Û‡n?Û‰¥?ÛœM?Û£¯?Û|º?Û ?Ú¬D?Ú‚C?Ú©h?ÚÓ`?Ú±l?ÚM•?ÙþÅ?Ú…?Úug?Úä?Û‰?Úïö?Ú}?ÙÜÌ?Ù@«?ØÛ~?ظú?ؤŸ?ØZ×?×Ðú?×/\?ÖŸO?ÖEì?ÖQJ?Öá?×ÕÇ?ØÎq?ÙrŠ?Ù²?Ù¶b?Ù§û?Ùš)?Ù‡d?ÙT¡?ØÙk?ظ?×A?Öxq?Ö–¯?×9U?×âþ?Ø29?Ø f?לf?×;Y?×*Ã?×Ts?×m‘?×W~?×;??×Iç?×ô?×¹ã?×̤?×­8?×`H?Öó²?ÖpK?ÕÈ£?Ôó™?Ô*9?ÓÙÀ?Ô3k?Ôõ?Õ´s?Ö.¢?ÖX?ÖC¹?Ö3?Õý™?ÕýJ?Õöº?ÕÃé?Õg´?Õ ì?Ôʾ?Ô†˜?Ô•?Ó#Ò?Ò†?Ñ7?Ðâè?Ñ.\?Ñüs?ÒñÝ?ÓÄ?Ó|˜?Ò½¸?ÑÖ{?Ñ…à?Òû?ÒÍw?Ó"‚?Òôí?Ò«b?Òu?Ò -l?Ñ;#?Ðs?ÐT§?Ðàd?ÑiÛ?Ñi÷?Ñ–?ÐÀ?Ñ?Ñ¿®?Ò‹²?Ó ?Ó73?Ó2‚?Ó [?Ó#?ÒÙÞ?ÒŸ?Ò_?Ò"?Ñá?Ñ’?ÑL?Ñ>þ?Ñs?Ѹe?ÑÜ0?ÑÑk?ÑšW?Ñ3â?Ðl?Ïù?Ïšš?ÏÁ¡?Ð>?ÐW?ÐDñ?ÏmŸ?Î?ÎA7?Îrð?Έ?Î0n?ÍÏb?Íò}?Χ€?Ïwp?Ïá?Ϫ^?Îá[?ÍÛ+?Í%Ä?Í!¸?ͨ½?ÎP„?ÎÝ;?ÏFÂ?Ï‹ä?Ϭ9?Ï­Ÿ?Ï’É?ÏNÔ?ÎÆ?Íâð?̦?Ë'f?É´Ý?È×?Èé\?ɵt?Ê°U?Ëx¥?Ì Ž?Ìy?Ì‹‡?Ì2?Ëg½?Ë*Ã?˦¬?Ìo?Ìà½?̾?Ì/ã?Ë_?ÊT\?ÉJU?ÈÂs?Èâ2?É-ö?ÉI?Éa?Êì?Ëÿc?Ërï?Ê‘Ò?É‹?Ƚ6?ÈiÒ?È`¨?È1‘?ÇÜT?Çë=?È0?Émr?ɵŒ?Émq?É«?É7ö?É´Ö?Ê8Ç?Ê}Æ?ÊqÕ?Ê%Â?ÉÅ;?Ɇ9?É}”?É„J?ÉE2?Èo`?ÇV?Åá\?Å“?Æ?3?ÇK[?ÈG?È;Ü?Çå¥?Ç9Ù?Æe$?Å«Ì?ÅFY?Å#ª?Å2?Å?Å#¥?Å>_?Åš‹?Æ!}?Æy?ÆŽ7?Æ«Í?Æþˆ?Çf -?Ǫ?Çžs?Ç8ê?Æ¥¯?Æ2/?Ʊ?ÆNð?Æ–´?Æš?ÆA³?ÅÈš?Å{h?ÅiU?Åg^?Å\õ?Åaœ?Åt­?ÅZ¥?Å,?ĽÑ?Äʘ?Äø?Å?ÅAŽ?Å“´?ÅäÒ?Æ —?Æ 8?Åóñ?ÅÐ*?Å­Ó?Å•:?Å€Ì?Åe1?ÅAî?Å$ç?Åž?Å'?Å/Ñ?Å÷?ÄÐ4?Ä9Ø?Ãp§?ÂÉÅ?š¡?ÂßY?Ã?,?Ãhp?ÃXÈ?ÃP^?ä?ÃÒ”?ÄÁ?Ä)U?Ä_?ÃÚp?Ô?ÃBð?Ã?Ãî?Ã3x?ÃXü?Ãp›?Ãu]?Ãd?Ã0{?ÂÔj?Ât-?ÂJ?Âeò?Â#?Âý?ÂÐË?ÂÌ ?¸0?‘I?ÂYî?Â%a? ô?Âw?Â?Â0?ÁÞQ?ÁÁ¹?Á´F?Á®±?Á¤?Á‹i?Ág*?ÁF¤?Á5l?Á-@?Á#&?Á¢?Á×?Á -?Àýr?Àëú?ÀÞk?ÀÇï?À‰^?Àa?¿RÞ?¾´“?¾…?¾ÊŒ?¿7´?¿…ð?¿£?¿’!?¿U’?¿Ÿ?¾Û?¾í ?¿ð?¿,ê?¿+j?¿ ?¾³ê?¾DÇ?¾Î?¾­?¾OÍ?¾c=?¾ {?½™€?½x?¼†?¼[z?¼©7?½K©?½ár?¾'Õ?¾¿?½–"?¼’Ì?» Ú?¹¤a?¹`??ºxò?¼•?½Ž?½fò?½u?½t ?½nd?½R*?½ ñ?¼˜„?¼ )?»|?ºØl?º3!?¹õ/?ºn?»Q›?¼ ™?¼c.?¼b›?¼’?»}˜?ºÁ?ºU -?º‚þ?»ý?»<…?ºÞ9?º=?¹—Í?¹Å ?ºp€?»r?»[¡?»[´?»$^?ºÁw?ºJn?¹ðK?¹ÕC?¹ÏQ?¹‹k?¹ -H?¸¿á?¹6?¹›?¹øþ?¹ë%?¹±?¹ }?¹ÆÚ?¹ïd?¹ñ?¹Ìº?¹Šé?¹-Ç?¸ÑN?¸¯è?¸áÃ?¹7O?¹r-?¹ ?¹uü?¹a£?¹D5?¹.?¸µ3?¸Ih?¸Ò?¸V?¸]û?¸ˆ?¸m)?¸+?·–.?·M"?·h²?·Æ›?¸o?¸9½?¸6\?¸!f?¸/?·ä‹?·Ê‡?·¼)?·µ}?·¨§?·ƒ:?·3}?¶·¾?¶/G?µÑð?µÏ?¶"|?¶Œ?¶Î|?¶âz?¶Þï?¶Óâ?¶Æ¿?¶¸É?¶¦?¶„¨?¶C?µäu?µ•¥?µ‰‰?µ¶C?µäp?µõÝ?µñ?µß?µ¾ò?µ}á?µ?´O?³Ãø?³¾E?´$I?´‘Ñ?´×­?´þb?µO?µÎ?µ:?´ø=?´ä%?´Ì„?´±ø?´–-?´{ ?´añ?´J?´1Z?´,?³ù¦?³×}?³ì?³m?²¡g?²…!?²Î?³1õ?³mh?³uÓ?³cc?³N‘?³=Ž?³&ß?³°?²ò¨?²ëÙ?²áE?²¸??²\¶?±Ìü?±?r?±D?±M^?±¨x?±àé?²T?²t?²+`?²Ø?±À¢?±4$?°©ê?°~ª?°Ç§?±6C?±v…?±b?°ò^?°VÒ?¯õO?°ç?°Gþ?°€ƒ?°‡}?°LV?¯ÓÒ?¯)?®fi?­Ùs?­ÐÅ?®Nû?¯I?¯ b?¯ì[?¯ô¶?¯Ór?¯Ÿ°?¯\M?¯¬?®¼]?®³"?®ê‡?¯-?¯;v?­ ?­b•?­“?­ïa?®Fç?®•¾?®Ý?¯g?®úM?®½«?®f_?®-?­×ý?­Ëš?­ç·?®™?®Mc?®[¤?®XW?®eB?®€±?®Û?®‡Ü?®k{?®FÄ?®?­Ó¼?­˜,?­]D?­T?¬É¬?¬ÓÔ?­9P?­¤-?­Æ?­ D?­[7?­½?¬Î¢?¬ 6?¬Ë?¬ž?¬À?¬âö?¬ôa?¬õ ?¬ß?¬§?¬`w?¬(?«ýv?«Ùf?«ÇÙ?«Æx?«¶?«¡?«dS?«C•?«?ªÏ"?ª¢Þ?ª°Â?ªÓw?ªÆœ?ª}o?ªB¹?ªVp?ªŒ?ª˜Ý?ªtâ?ª3l?©à6?©›—?©ˆî?©ŠÃ?©]?©?¨Åã?¨²„?¨ž?¨~±?¨z?¨ª€?¨ã¡?¨ÔK?¨m±?§ö\?§¢?§c¦?§X?¦O¢?¥‰?¥\W?¥Þ;?¦ø?§.%?§ á?§Ê‘?§°‰?§y?§Cˆ?§¥?¦ÓX?¦q8?¦?¥äW?¥êh?¥Ó°?¥y¼?¥ y?¤Á{?¤™J?¤aÙ?¤ "?£æS?¤Ý?¤_é?¤Nç?¤%Ã?¤-b?¤O‡?¤`?¤S?¤?£·^?£R?£9Á?£xš?£×ó?¤$ò?¤@#?¤-x?¤¸?£ÌX?£}?£Yk?£qý?£{Õ?£I5?£‘?¢ó´?£?£1ÿ?£&?¢Ü ?¢F–?¡Ž)?¡+:?¡ek?¡ê:?¢?®?¢Xî?¢mD?¢†z?¢õ?¢€ˆ?¢O¤?¡õC?¡p¿? à‹? ~w? m? š‘? Íg? Üf? ãT?¡O?¡Z°?¡kb?¡'â? Ós? ®‡? ¾X? ñ}?¡.ž?¡bS?¡^?¡€¯?¡x1?¡gâ?¡:M?¡??¡?¡6¨?¡~D?¡Åñ?¡ò9?¡Þ?¡ k?¡„ô?¡£`?¡Ä?¡¿+?¡©’?¡…?¡P? ä^? ¤Í? ÖJ?¡(? ¾V?Ÿë¸?ŸD?Ÿ6|?Ÿ‘Ú?Ÿä«?Ÿò·?ŸÇ2?Ÿ„¿?ŸÉ?ž_±?Á?ð7?ŸÜ? ZN?¡À? ÇH?Ÿ¾Æ?Ÿ^?Ÿ´ä?¡49?¢Aï?¡¸ç?Ÿ€¶?œúM?œT4?žš£?¢s’?¥8‘?¥Ñ?¡Ûq?œî£?˜Æ¨?—ú­?›‚ ?¡ïù?¨p?¬=b?«—¼?¦c@?ž*Ó?•Ï4?‘Œ?’κ?šÃ¸?¥Ÿ4?¯¯W?¶žR?¹8 -?¶ÜŠ?¯ˆ?¤D?—‰[?I_?‰Ã?ŽÚ/?š  ?©&?¶ä‚?ÁøÈ?É_Y?ÌfÚ?ʸ?Äš?¸úh?ªz­?šf?‹ç¹?ƒC ?ƒà¾?’¡??®ž\?¿×?ά‹?ÙÁ®?àʽ?äp†?å‡?â?Ûz?Ð ?Ášò?°•H?žâ?ŒªW?€Žv?{͘?…£—?”Ö@?§WØ?º>H?ËøÐ?Û} ?èÐ?ñ¦^?ø]Æ?üÈ!?ÿ2\?ÿ‹Ð?þ@#p@$Î@$ÐÁ@%W‡@%ñ@&¡@')@'s­@'˜¾@'½­@'óÈ@(5m@(p'@(‰1@(…C@(pD@(?g@(Í@'í@'ÁÛ@&Üi@%=ñ@$zÞ@%^î@&¢J@'vc@(é@(£{@(Ùå@(ê$@)o@)X@)«@(æ±@(–<@'îr@&“@$@ Y4@HÉ@o@Qú@ò @"°%@%E@&µƒ@'v–@'ß@(&-@(Xf@(c@(W„@(Lz@(F{@(Jx@(A2@( @'Ç}@'€Ë@'.@&Ч@&“ð@&sj@&Já@&'/@&R@%ø'@%Ä™@%‡Š@%9e@$÷{@$ü¼@%8ù@%e @%j@%Q¨@%"J@$ãÎ@$ ~@$hU@$8g@#þÓ@#¹ò@#eÿ@"öf@"‚K@"%R@!Í?@!l¹@!@ «1@ø@)@“ù@KÀ@$I@æ-@]t@@y@\ï@´@‘‡@óK@ƒ£@# @m°@"U@ 9‘@à @1N@÷¹?øë?ìŸj?ßÙû?Ñ[o?ÀÞ?®;ô?šq.?†Å¦?mûg?bb(?pßh?ˆÝä?œ)®?®ïå?ÀkÙ?Ð^$?Þ{?êžy?õR?þ.×@1@ÅW@ ס@ wÙ@®j@‚9@óÂ@ß/@Y^@ãm@Æc@Ü/@ðQ@·J@¬e@V}@IN@# -@V@$y@P@ˆ¾@÷°@+B@L*@h@ò @+@uº@Ñ@H/@}@U @kê@a°@:–@eÀ@SR@Ò‘@ÿ@)@ô$@Ùe@Âã@ÎK@íÙ@ü¢@ïÓ@Óþ@¬0@t @§@1Å@DK@Ý@°þ@ŽÚ@è~@±ø@6t@¬n@o@"å@næ@[Æ@òM@Â@ -ÿ@Ž}@ÝI@¯ÿ@ @š(@º§@˜r@v+@c-@@á@ @ʘ@—p@–¡@Ëä@óÑ@ì¯@¸@o@E3@F4@8@ó@¡>@ŠO@µÜ@ÕÎ@£b@/½@°æ@oQ@™M@òÃ@*×@8@P@Þƒ@–5@^Ñ@)ô@í@È„@Çä@Ó‘@Í:@š@?¨@ë]@Ëê@á@#@ ý@Î-@9@gV@î@A@"à@£@ @Ô^@:@åû@€-@=œ@4@˜@ýT@íY@M[@™R@®æ@°³@º(@¼þ@ˆ°@þ@}Ê@HÑ@p„@¹V@úg@ @ày@by@M@ ë¹@ í¨@§@H@m@ 7£@ ÿ@ ³i@ F@ ÷Y@ Qà@ vÛ@ `Q@ üµ@ Œz@ Už@ M‡@ >U@ ¦@ ñ€@ º@ PÅ@ -Âñ@ -aµ@ -gé@ -›.@ -;@ -e@ -@ †ü@ ð@ "@ <œ@ôÙ@²Á@Ñ @ á@ ÷@ˆé@w8@€ @=+@Q—@u @¾ß@ø¬@À_@¹@¶þ@×6@ô#@˜q@ØÑ@ón@$–@ æ@‰ä@ž@hˆ@¿›@¿ ?ÿY ?ýmG?ûsù?øÛô?õg?ñ—?í¼?éø¿?åCÉ?ß)+?×ÚI?ϱé?ÆzY?»Ìz?¯Ó/?¢•?“wË?‚?cÒò?L»=?KZ ?` ]?Iò?— ?ž¢@?¬i¦?¸Uf?Âh²?Ë,r?ÒÅ÷?Øú»?ÞIÊ?ãO?èÓ3?í‡?ñ+z?óÓ×?öh?ø5—?ú Þ?û|ƒ?ü‘S?ýi?þû?þ¡”?þ³®?þiù?þu?ÿ[t@Z³@áæ@%0@'È@õÇ@Ò@Ú2@îÚ@ì@ -½@‰@ò„@¤ ?ÿÒ5?ýä«?üBv?úÄÀ?ù¨?øMÙ?ùg?ú`4?ûñ2?ýF ?ý^Ä?ü;o?û˜þ?ü¿Ø?þgœ?þê)?þkJ?þm?þxá?þÎî?þ°?þŠÍ?þ¡J?þ6?þNp?ýå?ýsÅ?ý´?ý"?ýAÌ?ý†?üf?û^?ú2?ù[?ùæý?úƆ?û*1?û?ú·Û?úPš?ùÝ3?ùKV?øµ‘?ø]¶?øT³?ø_‡?ø(½?÷š?öìä?ö“d?ö¯¯?öÃy?ö€ú?öWú?öÌ?öÕœ?ö«?õ˜:?óý?ókÔ?ô;†?õÁ?õ3¬?õT?ô:ù?ó^x?óP?ôû?ô—±?ô‰!?ô<Ý?ÌÝê?Í7?ÍnŒ?ÍÎ!?Íô:?ÍæL?ÍØm?ÍÞØ?Í̓?ÍÑ -?Î*ú?Îr{?Îl¹?Î!c?Í¥?ÍGÀ?Í.†?Í2?Í;0?Í@À?Í<ü?Í -È?̶ý?̬Š?Ìè#?ÌÌ4?Ì .?Ë3/?Ë?ËvŽ?ˬ?Ë %?ʺU?ÊX…?ÉÎ?Éf÷?É )?ÈÛg?Èéþ?É"û?Èõ;?Èw'?ÈF?ÈO'?È4û?È:?Çöd?Ç­”?Çgé?Ç)•?ÆÄê?ÆcY?ÅøÑ?ÅF°?Änü?ÄMe?Äפ?Å×?Ĭ¸?Ä Ï?Ã~?ÂãÔ?Â>3?Á{?Àv?¿Y?¾w¡?½«=?¼·?»©?ºC?¸\?¶„Œ?´K ?±Ÿ¹?®I]?ªÕ?§Âï?¤ H?žþÌ?˜úM?’C?Š­9?‚1¬?q7›?Zͳ?A!v?*·s?%€•?5e±?MË)?döü?yOÐ?…~a? S?“•Ã?™×?Ÿ?£T??¦‹?©™?«’Á?®]d?°úô?²½ç?³­ü?´VK?´å ?µ?¶¢×?·Ð±?¸¼+?¹Æ?±Åñ?±r&?±Z—?±;Q?°æd?°™S?°y˜?°P(?¯øc?°Ç?°x!?°e”?¯Ç0?¯kÀ?¯_?¯^[?¯'V?®«–?®2õ?®e?®f?®¢?®.=?­ »?¬’*?¬Õ®?­P?¬ÈB?¬„ ?¬T%?¬C?«¶ï?«iÃ?ªêÛ?©ð¢?¨—Ë?§Úi?§.h?¦½Æ?§ËC?©2÷?©ÝÏ?©Ù-?©œæ?©±%?©­J?¨ìn?§Én?§@þ?§Q[?§X?§ò?¦?j?¥¿3?¥Û?ªÈ?ŒÈ¬?i]?Ž€~?ŽÒ2?Ž±p?Žã -?Žþ?ŽÏx?Ž¶À?ŽÃy?Ž²¼?Ž˜Ð?Žu‹?Ž,?AR?Œ)w?ŒHÇ?-z?—?Ú·?Ž"}?Ž¸?ò?É?z?ŒíÖ?Œ=.?ŒP?¾??'?ŒªI?Œ^„?ŒŒj?Œ’?Œq£?Œ¢ë?Œ°e?Œy?Œ×?Œªv?ŒÆ?ŒwÖ?Œ…Î?Œ?ŒU?Œ/õ?Œ'Þ?‹æ?‹|ž?‹S -?‹Mš?‹%™?Š»?ŠUñ?Š„R?‹ -á?‹“Ò?‹ë×?‹Æž?‹o¹?‹ ¿?Šìƒ?ŠðÙ?Šà ?Š±W?Š˜Ž?Š}»?Š%Ò?‰?‰B6?‰Oi?‰t-?‰T?‰7?‰7?‰Bs?‰<€?‰0`?‰LÑ?‰JÝ?‰)ã?ˆà°?ˆh?‡äv?‡s›?‡X}?‡³?‡üL?‡ø?‡…î?‡ ?†Úß?†ýø?‡1?‡?†õê?‡8¥?‡„þ?‡ A?‡t ?‡?†ËÅ?†£´?†§5?†Í‹?‡ÿ?‡L?~ßÓ?~Ò?~Ûs?~€–?}åa?~c?~ -À?}^„?|ë8?|ÐÜ?|l?|Q¶?|¸¼?|ªÔ?{îG?{¨5?{Ø’?{æ7?{à2?{•?{=?z¦¦?zV›?yÝS?y_?ygƒ?yã=?zPä?zCÀ?yêc?y¹H?yv -?xðP?xžu?x¼Ÿ?xÜÕ?xÀ0?xVB?x?x*?x&J?x^?wÃk?wjà?wö?vÏZ?vëÙ?w’Å?wÞ™?w?V?và?v??v.?uÈ?uW¢?u1´?u/?t¹Ô?sô‰?t³?tæ¹?u?t¥Ç?t%¯?s¾§?sŠa?sQ5?s?róT?sÜ?s9?sjf?sL?rµŒ?r‹P?r7n?r'ã?r/?r ?qÛ¯?qmÔ?pß™?p´?p½K?pº?pß?oöÞ?p¡?oz6?nåz?n¨W?nžM?n»©?n|>?m˜´?l +?lLŠ?lz–?l µ?l]ù?lO©?l_?lzO?lÕ?k–ž?knv?k˜®?kÞX?kŽL?j»¤?jEÿ?jlx?jl„?iܽ?i.m?h².?h4ÿ?gO[?fÚ?fþ‡?gjÈ?g“ð?g×?gcA?fñ?f8S?eÔ«?eÃÑ?ew$?e;?eu²?e’?d€v?dWú?d_K?dy~?dé?dAâ?c˜K?cŒ0?cÛŠ?cÏ@?c—£?c‘+?c7??b‰w?b[ô?b1>?aî ?aòG?b??a¯ ?aGø?a(‘?a;î?aˆ??azô?a2â?`­Œ?`Ä?_ö?_³•?_¤Ý?_Uy?]ób?]A{?]Ë?^X#?^ã?_L5?_5¡?^É?^bW?^Ì&?>‚Ð?>¨ü?>Æ/?>]g?=Î’?=Éá?=׎?=Á+?>Pv?>…D?=ô—?=ro?=N?=z?=å½?=ôå?=ù~?=£?=bç?=‡“?=…?=;Ò?=Ý?=1?<ö°?<Ün?<Ë~?<Ãó?<Ê?<?;ýZ?;·¬?;×?<º?;µ?;^#?;vt?;’`?;ó?;Åg?;•¦?:ãÑ?:J¨?:±?:S?:!ì?9ûx?9’f?9H?9S¦?9„Y?9U½?8¹%?7¸+?5€u?4¬?5Cº?7«?8þù?8Õ³?8œ'?8¬??8|í?8ü?7Ž;?7V?7c¸?7¦?6¬Ü?6Ž‹?6ƒê?6±S?6ð±?7„?6‡ª?65²?6‹Ö?6æs?6š5?6:ý?5ÿ6?5e?5†A?5£ð?5ƒ³?5*?4¦j?4]¿?4,ÿ?4"r?4\0?4_‚?4?3äS?3Á?3b€?3`|?3C²?3ù?-¡?-%'?,á|?,k?+÷¢?)¥¦?$¡?"?$*•?%Í{?&ùZ?(Ãt?*nw?*u¤?)Úw?)’!?)!¥?(§ ?(™(?(>h?(¢?(Ž«?(Ã1?(›‹?(L–?(¨/?(°?(øn?(æm?(y\?(ßÏ?).1?(«÷?(jO?(B?(]Å?(¢i?(¡¶?(‘Ú?(„‹?({ÿ?(Gú?(2D?( /?'¾ž?'q?'QO?'mÛ?'k?'IU?'6˜?& T?%4S?!±Y?4ï?"ˆ•?% í?&V?%œI?%n¼?%»Ü?%·å?%F}?%4Ç?%|ð?%…d?%s?%0%?%•?#ç? ¹=? •A?#tú?$uˆ?$Œ?$žr?$`Î?$(;?$Iº?$'H?#Ǧ?#h«?"ÉÏ?"ËÆ?"ÒŽ?"¥?è`?ì˜?tL?f?&Á?O8?&›?²??8?ÔÌ?/È??_Æ?±è?”ô?{?Œp??lÆ?Äš?ã?K,?lÖ?4“? Î?ç? T?.©?ËB?·¦?Ÿ? -¾?yP? -ä?Ü,?!ä?’¹?Pj?“Ì?«T?ã]?¢×?áè? Ÿ? ‚Ò? L2? ÍT?I±?Ã7>ÿhU>öÈŽ>ì•i>á¦>Ѹ>·o >¥í4>·u*>Ñ£t>ááÃ>íŒ6>öóŠ>þo›?xÞ??+•? W$? PI? ¦3? dD?{?c?û“?=?$·?Jµ?Æ-?0Ç?.Í?€î?Å ?«¡?x!?;–?37?F.?0ñ?B›?]?*?Úª?ûp?$î?ã?wà?‡H?m5?!Œ?è?OÏ?EY?Sh?XŽ?‹7?–?gh?H?®?ú ?êk?z¤?i?w?o»?¦"?Ÿ”?U/?/?ÙÛ?§4?¥c?€½?T”?S?~…?Žü?ZŒ? к? aÝ? u? Œ? «È? !? °'? G? E¤? lí? ? £? ÕÈ? ÔÓ? lW? à}? pÊ? }? ã–? Cæ? å¢? 8³? îk? ³ä? Î? íl? š±? Pz? t? žB? 9Â? W? -Áz? -Îf? ÷? -èà? -Ù? Y¯? ¿Ë? -Ó? -²Þ? -7ê? åð? þs? -Hò? -zÝ? -}ò? -Ù? Xg? ð? 9? @§? b9? ’.? ]¢? 3°? á?v¦?0ó?_J?YÁ?ñ‘?”?/‚?ŽË?˜ÿ?y^?2]?'X?AÆ?Y?Õ@?§¿? Ì?k?xº?;?-­?@?\K?Rˆ?OŽ?ª ?±~?!ê?¿*?Þ)?ðh?3e?ì?¨?wŒ?=]?#¦?ùx?ÙÂ?Ô„?º?ˆ:?cY?OŒ?Xz?“?‘ø?m#?4£?û5?Â*?Ž´?mô?Q?,¡? š?òW?Ýy?Ç?±2?š¬?‚è?i?PS???(÷?]?þv?ìy?Öã?¼#?š˜?‡G?y?fF?R—???*?„?þ?é?Ó#?¿Ñ?­ ?˜'?‚—?mŽ?Xˆ?C©?-?ð?üU?ÝR?·?£?”Ë?‚Ë?n ?X(?A±?+«?Ð>ÿî>ÿ¤Ò>ÿz°>ÿpð>ÿK«>ÿ>þèÙ>þÃè>þšõ>þwÒ>þPŽ>þ%¾>ýú”>ýÏ>ý¤Ã>ýyÖ>ýQ¥>ý.3>ý¯>üÚ;>ü›Ò>ü^>ü/>üj>ûÍ”>û‡L>ûH˜>úþi>ú“>úa;>ú_ª>ú>ùvˆ>ùRð>ùz.>ù?©>øv/>ø4^>ø?¹>÷ûc>ø{´>øÕþ>ø~©>ø2W>ø3g>ø >÷æ>÷D>÷G">÷L>÷e>öÚ%>öÚ°>÷¥˜>÷}’>ö§K>ö/U>ö]þ>öh>õÃÌ>öP¿>öº¶>õ®°>õ*j>õ'Æ>õg?>õ°>õΫ>õ¶>ôÅì>ó¬C>óÂB>ô–>õŸ¶>õƒ~>ô†>ó“V>ó²>ò±>òh>ò²4>òÛH>ò¾ >òŸ >ò6>ñö‘>ñ­Ÿ>ïõ!>ï>î3ü>ì±Ç>í +>îÛm>ï¾#>h>ï‹>îÏÎ>î~M>í7#>ìmw>í{z>î~o>ï$˜>î³j>íV>ìw>íQw>íé”>íÅi>íqÒ>íV¥>íË>ì™î>ìBº>ìd>ë‘h>ë[}>ë·>ëAR>êÖâ>êÐã>êÕ|>ê¨ >éâƒ>év²>éä¼>éø`>é´*>ét®>èþT>èÒ&>èÙ ->èÌ/>è—ø>è_¥>çýN>çÍY>甲>çOï>çY>ææ6>æ¬,>æ{»>æJS>æo>åІ>åwF>åK}>å4[>åd>äÎs>ä›e>änë>äCm>ä>ãÛ½>ã§l>ãq“>ã<þ>ãº>âæO>â®õ>ây›>âH&>âé>áòæ>áÞõ>áéá>â>âJH>âUú>â%>áèã>á²s>áŒØ>án,>áF‡>á„>àæ–>àÂ`>à•«>àf¶>à:2>à ‡>ßÞ8>ß«T>ßt¼>ßDÏ>ß$Z>ß´>ÞÞü>Þ³>ÞŠy>Þ`4>Þ,à>Þ„>ÝÛì>Ý´×>Ýá>Ýa¹>Ý2A>ÝX>ÜÚÄ>ܬ<>Ür×>Ü0ë>Ü -N>ÛæÃ>Û·’>Û†î>ÛU+>Û$R>Úø>ÚÏF>Ú¢¶>Úw–>ÚNy>Ú$>Ùø+>ÙËA>Ù¤¿>Ù„>Ù[¥>Ù.†>Øÿ­>ØÏz>تx>ØŽ£>Øg>Ø5¤>Ø>×ÐÉ>קw>×vF>×Eç>×t>Öã{>ÖÆÙ>ÖÑ´>ÖÂà>Ö›á>Öl¬>Ö<>Ö5>Õãz>Õ¸¾>Õ— >Õr>ÕIý>Õ!Ì>Ôùè>ÔÐè>Ô¨Ö>Ôê>ÔX»>Ô0Ô>Ô >Óß¿>Óµº>ÓÀ>Ófo>Ó=n>Óë>Òñg>Òâ‡>Ò²„>Òf÷>Ò0Ù>Òm>Ò>Ò<>Ñͪ>щˆ>Ñ}#>Ñg¢>Ñ%²>Ðþ)>ÐÍÏ>ЫÚ>Ð[>Ð1p>Ïö†>ÏÎA>ÏÄL>ÏÀø>Ϩ2>Ï»_>ÏŽ;>Îò»>ÎM°>Îœø>ÎÄÖ>ÎÁ}>Î\·>ÍÒ>Í°Ê>Í}Y>̓>Ì—>Ít>̤°>˺/>Ìu>Ì‹y>Ë»#>ËN>Ëwl>ËÑ>Ë_6>Ì)>ËÚP>Ëãe>˯>ËN>Êõt>Ê›Œ>Ê@á>ÊØî>Ê®3>Ê2Ê>ʼ>ʱŽ>Éíi>ɤ>ÊY>ʾ>ɯ…>ɹë>É°/>Éë)>É}½>È´¨>Éü>É$>ȾY>ÈÙ>Èod>Ç´«>Çrø>Ç“O>Ç;Q>Ç.ù>Ç&R>Æ´œ>ƼÔ>ƨ&>Æ^ >Æ8#>ÆP¨>Æ>Åõ?>Åï(>Å¥ý>Å\_>ÅJ4>ÅR ->Å&F>Å >ÄØI>Ä›A>ÄUÊ>Ä d>Ä3>Ãæ=>çŸ>þ³>ãù>ÃW(>Ã÷>Âê^>ÂÅ6>‹¯>ÂL|>ÂE/>Âe>Áèe>ÁËÁ>Á²ž>Á’>Áw">Á[€>Á=>Á/>ÀñK>ÀÎ*>À±v>À‹_>ÀVÙ>À)™>À>¿ÔÊ>¿¥ü>¿|>¿Q¡>¿$Š>¾÷›>¾ÍQ>¾«ê>¾Ž>¾p1>¾Pj>¾/§>¾â>½í >½ÌÎ>½®ì>½’y>½sõ>½S¼>½26>½ Ô>¼çu>¼Ä >¼›µ>¼c²>¼ ¶>»àl>»¯Ñ>»‹P>»b£>»C >».ä>»9>ºñ­>ºÎq>º§ë>º‚¬>º^>º<>ºæ>¹ý¥>¹ÞB>¹¾É>¹žg>¹>¹b²>¹G:>¹(o>¹&>¸áº>¸½‚>¸—n>¸mL>¸Q¢>¸5K>¸R>·õ4>·Ó›>·²Ø>·u>·jë>·G®>·$>·¥>¶Ý>¶¸O>¶‘å>¶gŸ>¶77>¶ Š>µðP>µÍà>µ§§>µƒ²>µa©>µ=B>µç>´ë—>´ËÓ>´¢l>´Z¥>´˜>´ ->³äN>³¨c>³s§>³Md>³-¬>³t>³·>²å±>²¼ç>²¤¦>²Ã>²wÚ>²Pb>²Dþ>²FÇ>²LÐ>²R÷>²2þ>±øÈ>±Ù§>±¥©>±¥¹>±·‘>±Ú>±‘È>±IÞ>±X>°Ž@>°eº>°{>¯9×>©À)>¥` >¥Ë>«Ž>¯~€>°7>°>°œ€>°a]>¯^a>®¥T>®Q?>®­Í>®àl>®ú‡>¯É>¯~®>®Ãö>®ÌP>¯8>¯Á¥>¯ßº>¯°>®ý>®?q>­ØG>­Ø§>­B/>­•>­)%>­—>­†;>­Ñ>®JÅ>­æ“>­x«>­B>­I>¬æ~>¬Kí>¬#>«`r>ªÛ>ªT’>ªô!>«K’>«p>¬ É>«ÛÓ>«`>«>M>ªë!>©ã&>©ß>© ->¨ØU>©ñ>¨íÌ>§(>¦jÐ>¨“>¨Jñ>¨©Ã>¨­©>§-â>¦Á>¦ù>¥Ê®>£(Â>Ÿ'>¢%ô>¦A“>¤A¶>£±º>¦\<>§•>¤]Ç>£;'>¥¼K>§.ö>¥¢>¤\U>¤jØ>£,>>£éÓ>£LK>¤cµ>£Cì>££¼>¥q>¥µ>¦e®>¦’Œ>¥Ã>¤¦7>¤²@>¥Ðá>¤Ê>£òÈ>£d5>¢wZ>¤©>¤ê»>¢ÜÀ>Ÿî+>Ù>>Ÿõ>¡kû>¡ð>¡Ã>¢‹·>£ ¼>£&Ô>£¦N>£Ñ!>£V×>¡ð$> '> |c>¡›š>¡Ä>¡UÓ> éµ> ¸>Ÿ|t>¬ã>ž¼%> gØ>ŸÐ]>n>€Ê>Ÿ3Ú>w‘>*>Ÿ$”>ŸÆ¹>Ÿvô>žQ>œ§+>œú{>z>>ž+Ø>žDT>…>¡¸>ž?‰>ž>™>œ„à>œÃZ>ž&Ú>žƒö>žkè>:x>Pò>}Ù>Y>5–>ñ>œ½É>œÑš>œá¿>œ”Ì>œÆ>œÌ¥>œF>œ >œ{>›çÂ>›•«>›0>›Bð>›z(>›6š>›´>šä¤>š½’>š¶Š>š¹>š§±>š‘j>švG>šV§>š:ò>š#>š ª>™íƒ>™Ô•>™¼C>™¢Ñ>™Š|>™sP>™[^>™D·>™/ò>™Ë>˜÷«>˜Ü*>˜¿>˜ž9>˜}ö>˜_â>˜D;>˜*š>˜ ~>—îØ>—Ó\>—¸Ú>—›#>—~_>—i >—V >—=<>—(>–ÿ¼>–ë©>–ÒÚ>–¹¬>–§>–’d>–w>–Xv>–2e>– ->•õ5>•ß–>•×}>•ÃR>• p>•ƒé>•pš>•Ja>• «>”þõ>•s>”ïb>”ÎÅ>”¤–>”V<>” B>”–>”/>”ð>“ÔÓ>“Òê>“Ñ2>“§Ù>“{>“c•>’é$>’°u>“(>“I>’é¨>’Êh>’¾è>’¢F>’Šœ>’žú>’k>’mî>’gá>’vß>’gÿ>’1_>’’ -j>‘Ùç>‘ñw>’I>‘Óä>‘ J>‘rc>‘2g>Æ>ks>‡Ð>ÔJ>‘&”>Ð9> -Ý>yJ>e >ÜÆ>½>äô>ˆT>­g> œ>E>ÇG> -ü>Gq>NÈ>„¦>²>Zá>úØ>y;>ü>Ž†þ>ŽŸ?>Ji>iŒ>ŽY>Zx>ŒÑ>ò>Gv>þ“>­Í>Œº>Œy7>Œ=P>Œz®>Œ®i>Œ^;>ŒVŽ>‹þV>‹ÑV>‹Ø[>Œ+¼>Œd°>ŒÇJ>Ø>Œs->‹èì>‹ÆI>‹ÁZ>Œ1>Œj>Œu>‹úi>‹·W>‹]¼>‹‘?>Œ>‹Ž®>Š´‰>ŠOU>‰àY>‰z>‰2>‰†~>‰ìc>Š&W>Šxa>Šû‰>‹\>‹+y>ŠÕú>Š¦r>Šrû>ŠN0>‰Ä>ˆéž>ˆÞ>‰"X>ˆø„>„EZ>}Ò>†3W>Š8Û>Šc>Šu>Š&ß>‰H·>ˆ|>‡z>…þU>…Ë>…uq>†:È>‡Á€>‰>Š>Š‰+>ŠÏP>‹ X>‹(×>ŠËx>Š8z>‰ãŽ>‰”>‡î²>†_ê>„,r>ƒH³>ƒ#>ƒ+C>ƒœ5>„t>…ï÷>†É>>‡>ˆ¹»>‰ßó>‰Á®>‰¯k>‰¿(>ŠHä>‰ïG>ˆè|>ˆ£>‡‡É>†X~>„ü9>‚Ýc>~¦>v>v Ý>x2‚>|I>€Ë>‚kk>„[z>…Š>†óø>ˆ'¥>‰}ã>‰÷Õ>ŠªA>‹m_>‹Ðq>‹Ü©>‹u >ŠÞŸ>‰¦ƒ>ˆ,*>†½Ÿ>„ýä>ƒHÁ>{Ü>}¹ƒ>xF>seß>nbq>kw>kø>po >vÏÄ>|¦>…>ƒ&©>„“k>†~¬>‡w}>‡þš>ˆœ®>‰R>‰£â>Še6>‹R>‹Ó‹>‹¿h>‹t¶>‹ô>Š…>Š&§>‰¤@>ˆeO>‡%º>…ÿ>ƒÝÃ>Ëü>~³Â>xã™>s~£>lÍ >bBr>YD>X>]eé>e¼>mÏ>s¢¼>y6>~öl>Šš>ƒ M>„–§>…¹Ò>‡:Ú>ˆVx>‰Œ:>Š@>ŠŠ >‹8ä>‹>‹ì >ŒFO>‹±>‹nÜ>‹RT>Šßã>‹Y*>‹W“>Š³~>‰ò)>‰,œ>ˆBS>‡ M>…ÆÔ>„ ]>‚Q9>€k(>|¨t>xtü>råý>læ>d®ö>\0z>Qà">J>Jª>Q¿u>ZÁi>cÄÚ>j(>o¶ƒ>u¿\>{fô>~ÇÀ>æ>âT>ƒ‡Œ>„ý•>…¤o>†¨>†Ù?>‡ç•>ˆz!>ˆFR>ˆóX>ˆM¹>‡·€>‡}ƒ>ˆc©>ˆÜ>ˆ>ˆ'|>‡ýi>‡ãH>‡Ð³>ˆÞ>‡°…>†’ >…Ÿ>„L×>„~‘>„”0>„>ƒs2>‚>‚8ê>ä_>€È‹> Á>{†ü>xkÜ>uO’>o¼>jU0>dge>]Ú>Tá4>KâÂ>A¶1>7fÚ>2ç›>9»è>CöV>M¯>Uq>\KÓ>b03>gŽŽ>lÛ>oàÕ>sï>uÆ>x i>yí•>{eä>|…w>}T>~R>~¢)>1M>©Æ>€->€'Å>€?>š#>€;>€l€>€qÌ>€q÷>€mÎ>€M÷>B>~˜>€:¯>€6Æ>€!{>€ G>íq>»â>„x>F<>>~Äú>~~ý>~2>}ßB>}†+>}%Ù>|½^>|J–>{Ëô>{G²>z³µ>z C>yS9>xb>w>v‚\>uJ5>sàÉ>r8+>pBŸ>mðü>k7÷>gûË>d)a>_­ª>Zu>Tk>M{_>E‘2><>2=ö>&ä‡>"ŠÖ>+4„>5ô©>?;ÿ>GQJ>N\Õ>Ts>Y²Ë>^2…>aû$>e$c>gÅy>ið¹>kµÇ>mN>n=÷>o:á>p®>pµÞ>qq£>q¡X>p§/>qA">rt">r®.>r¾©>rÉ>r¾4>rwK>r™>rWM>r£D>r•>rG>q‹‡>qå©>qv>o7µ>p˜Q>q°Â>qŒj>qf>qK“>q!œ>pÁ†>o²y>pp>pg»>pAÀ>p×>o©â>os­>ot­>oHB>nüê>nŽ#>nJ>nuÓ>n>*>nš>mɲ>m>mO>mÍ>lÍñ>l‡Õ>l3y>kô{>k°h>kf¿>kN>jÀu>jg5>jÊ>iš†>hþœ>hK)>gÛ>gô>gó>fg)>e}9>dß >d>>c -u>aÏx>`p>^è7>\ß²>Zfw>X.R>UKQ>Q«’>MGÉ>HZ3>A†r>:RF>4`ù>,3v>"‹r>ÌË>_M>7A>'1ƒ>/¶p>73->=ɺ>BÀ˜>Fg >L>Pü>RðŽ>US>WSŸ>Xßu>X±7>Vš>WÝê>XoN>[á)>^^>^rI>^Ê>_·>_E>_kF>_ˆD>_•x>_©%>_³—>_°F>_§>_‚Å>_z>_€ö>_]m>_?š>_:>_'K>_ -É>^í.>^Ï•>^®Û>^Œ@>^gR>^>N>^|>]ÚŒ>]Ôp>]µI>]>]g >]7%>] >\è[>\ÄÄ>\d>\rŸ>\Jæ>\!ò>[÷w>[ÌÄ>[¢.>[w5>[K>[»>Zôä>ZÉ>Z›>Zm‰>Z@>Z¹>Yëº>Yµ®>YGl>Y->Yn>Xz5>XŸÄ>X®¶>Xƒ[>XS%>W£d>UÃ8>VÙ<>Wug>V‘Ç>VŒm>VìË>VÑæ>V©>Vzd>VO±>UýÑ>UÃ>U´d>UŠk>UTn>U!…>Tùj>TÆŽ>T>TZù>T+~>S÷†>SÀ¡>S‹>SS>S ¦>RÕ'>RžÄ>Re#>R)¶>Që¤>Qª¼>QfN>Q1>PÓ£>Pp€>P>OÜ >O„*>O!ø>N²é>N@2>MÅ€>M=>L¬Y>L ;>KLÇ>Jvb>IŒd>H‚?>GJU>EÞÎ>D67>BBõ>?ö2>==Æ>:ó>62¹>1°>,i>&UG>e5>‡«>LÒ>Áý>€G>LÞ>¾'>þ¸>&X´>+Û>0g>4‡N>7ÔÝ>:‘‚><ÔD>>®¹>@8Y>A>B‰>>Ccœ>Dó>D§×>EÄ>E~X>EÊÑ>F ¾>F9½>FZ>Fpw>FU¿>Fn”>F >F‹Ö>FŒ">FŽw>FŠH>F^©>EÍ>Eÿ>>F< ->F(>Eݺ>DL•>Dê>E£>E¤ê>E‡>Eg¹>EH=>E%Î>D÷,>DÙÃ>D¿ª>Dxf>C ÿ>Cß>D.b>D‚>CíE>CƦ>Cž >C|É>CY >C/=>C >Bâí>BÁë>Bš >Bq‹>BF™>B!ì>AüU>AØô>A¶ž>A'>Ait>ABÁ>A×>@ô×>@ÍÔ>@¦Í>@š>@VŽ>@-g>@Ñ>?ß>?·B>?”L>?l÷>?@Í>?¸>>ò¦>>ÇÛ>>¢ó>>~h>>Zb>>3“>> R>=äí>=½ž>=–>>=o ->=GÕ>= m><ù><Ѳ><ª¤><ƒj><[­><3.>< õ>;äd>;´Í>;„'>;a‡>;D+>;¡>:ô„>:Îk>:«Ó>:„>:X>:,“>:^>9äé>9À(>9š‡>9mâ>94Í>8ðÿ>8ì—>8Ã/>8 >8>8[>81o>7ÿ§>7ãŸ>7ÃÔ>7œö>7pï>7<>7 î>6ê>6É´>6¡T>6}>6X»>6,!>6 ”>5ãB>5Åÿ>5Ÿ›>5oà>5DÊ>5#º>4è˜>4<¸>4&Ž>4xÕ>4`Ó>4/—>4 >3æõ>3Ä>3>3aC>3Le>3à>2ùq>2׃>2¬€>2Œ>2M>2!l>1Þ§>1Å(>1´(>1Š+>1[Â>1.(>1n>0Ê>0²>0~Í>0V>0&_>/÷n>/È<>/’à>/[z>/.½>.üV>.ÅB>.‹ë>.R½>.Ü>-Ø]>-•a>-OF>-£>,¶»>,a:>+ýË>+y—>++x>*È >*F(>)µÝ>)Œ>(WV>'ƒ>&Ž°>%ri>$+b>"¬> èª>Ô²>`Ð>{÷>g> > sé>ö>äÂ=õ$=ãp=áï=ò>¸>aç>` > ‡¾>òŠ>´@>ßÖ>‡¹>¾N>“ >m> SÎ>!_>"7t>"é>#z}>#ñ>$Q>$Ÿd>$ÝØ>%F>%5>%D·>%L>%J‘>%R#>%%Â>%7>%wT>%u >%4f>% ö>%E>%<>%/›>%}>%ö>$òð>$Û×>$Ãd>$¤­>$ˆG>$v(>$ZÃ>$:À>$#4>$>#èÚ>#ÃÂ>#­*>#“T>#s}>#Q|>#77>#±>"ú3>"×û>"º>"™t>"yÕ>"]á>"=ü>"z>!þ>!ÞO>!¾L>!ž>!}º>!] >!<Ã>!†> û€> Ûz> º~> š5> yx> Xñ> 8h> Ä>õe>Õu>´ô>û>oC>S>2Ÿ>k>îB>Îù>¯u>Ž¶>mð>M)>,a> Y>ê>Éë>©^>ˆ¢>gæ>F‚>$1>ç>å>Äo>£Ë>ƒ'>b‡>Aé>!*>->ßµ>¿„>ž¯>}.>]J><õ>·>öª>Â]>±ú>›9>{'>Z¥>:*>>ù¿>ÙŠ>¹S>™>x¾>U¿>0¶>Ì>ò>Ô|>³<>•\>uæ>W°>7À>Õ>ø>Ö—>®.>“÷>xm>Xj>7>S>÷Ø>Ö>¸Ü>š>z‚>Z·>:Ñ>K>û3>Û©>¼ã>u>}÷>^w>>ü>’>ÿê>ß»>Ài>ž>j¢>?2>,Æ>ç>ÿ>æ>Å> Ç>†Z>i`>J¹>+> P>ëÏ>Ì)>¬K>J>r >R8>$/>þ+>ð/>Èú>²>”>sÀ>Zì>4> x>ü,>àa>Ão>¤+>ƒN>e?>-I>9> b>èà>Åa>§‡>’d>sÚ>Qý>6g>”>úœ>ÝT>¾Ï>ž >€j>d3>Eþ>$Ý> øÂ> å¸> ÌÅ> «> > mB> Tª> 4N> :> ü> ÞÃ> Àß> £> …M> gi> I> *È> -> ì.> Ð[> °?> –ü> z> \:> =v> ˆ> ²> -å> -Ãð> -§z> -‹Ô> -g—> -M¤> -4E> -¸> ú~> Ôõ> †f> ‰·> Xª>.O>Is>éª>¾ù>¼Ô>“>·Ï>™Û>|ý>ER>Ó:> -â>¡>è˜>Í >°É>”Š>vQ>:œ>Î^>D>>åµ>ȇ>«)>¦>nä>J;> º>ô+>öU>Üü>Á>¤k>†¾>iy>L>.º>1>ô>Ö–>¶í>‘€>z^>_Ã>A±>#}>‘>ç]>É>ª†>‡É>`Þ>Kú>.Û>>>ï>Ìí>>šé>B>6>)÷>ò>äj>¾Ã>›Ò>w_>QE>*>”>×[>£ñ>uj>LH>>=ÿµ³=ÿb<=þí$=þm =ýã}=ýIÄ=ü¥…=ûõö=û-@=úL·=ùO?=ø/%=öäâ=õgì=ó­Ð=ñ©=îìˆ=éôç=è*=åZ/=à×ø=Û‰”=Õ]=Î:=Åø=»ùÑ=­ÙÜ=«kf=¹CÖ=ÃW=Ë]£=Òp=×PŒ=Üå2=áO`=äØù=çÊ=ê7/=ì:§=íåZ=ïAÓ=ð_Q=ñG'=ò,=ò›j=ó}=ó€‹=óÏ&=ô¬=ô=Õ=ô`_=ôxH=ô‡S=ô®=ôŽ=ô‰Ç=ô~á=ôh­=ôAÔ=ô?U=ô0z=ô¬=óøh=óÙ1=ó¸7=ó•§=óq‹=óK²=ó%–=òþ‹=òÖ@=ò¬™=òƒ‚=òY=ò.=òu=ñÖ=ñ©ä=ñ|Ö=ñOn=ñ"=ðô=ðÅÔ=ð—F=ðh[=ð9½=ð -u=ï×S=ï¥=ï{=ïL=ï¿=îì´=î¼9=îŒI=î[±=î+µ=íû‚=íË=홬=í[É=í-è=í-=ìÕ~=ì£å=ìus=ìE¼=ì.=ëà§=벃=ë‚=ëQO=ë È=êïñ=ê¿=ꌹ=êY\=ê+ú=éû·=éÊÜ=é™ù=égø=é5ƒ=éµ=èÏÂ=èž=ètû=èDn=èV=çàv=ç°ä=ç‡=çQ7=ç ©=æïÎ=æ½á=掊=æ^p=æ.=åü.=åÈñ=åœ$=ålU=å;Œ=å -Ù=äÛH=äªÃ=äyn=äHÛ=ä‰=ãÛ=ã”=ã€å=ãXê=ã(l=âô¨=âÉ/=âšP=âjf=â:‘=â -Á=áÔà=ßðï=Ü1=àX-=àë=à,a=ß©(=ßî=ß,å=à…=ßý=ßȪ=ß“Þ=ßjø=ß@Ë=ßM=ÞÞ'=Þ¯B=Þæ=ݦ¤=Þ=Ýïö=ÝÆÛ=ݘî=Ýi!=Ý:©=Ý U=ÜÝb=Ü©Z=Üt£=ÜP =Ü"F=ÛñÕ=ÛÃJ=Û“Õ=ÛK5=Û+=Û ”=Ú×{=Ú£Ù=ÚyQ=ÚHW=Úÿ=Ùóô=ÙÅ]=Ù“A=Ù`ë=Ù. -=Ù=ØÞ³=Ø«1=Øs =ØR˜=Ø'R=×ùJ=×ËW=לä=×o,=×By=×Ã=Öæ±=Ö¸¥=ÖwG=Ö@=Ö”=Ö’=ÕÕÅ=Õ¨a=Õ{=ÕM­=Õ \=Ôó=ÔÅÍ=Ô˜=Ôj×=Ô=o=Ô'=Óä =ÓµÂ=Ó‰S=Ó]=Ó0,=Ó?=ÒÖn=Ò©‰=Ò|›=ÒOó=Ò#o=Ñö»=ÑÉü=Ñœ×=Ñp’=ÑD =ÑÔ=Ðëp=оþ=Ð’ =Ðdt=Ð7ô=Ð $=Ïà}=Ï´ð=ω=Ï\³=Ï.t=Ï:=ÎØ›=Ϋ=Îyã=ÎRþ=Î(Ê=Íý=ÍÑ==Í¥r=ÍyE=ÍKJ=Í!†=Ìõü=ÌÉŒ=Ìžp=Ìj%=Ìç=ÌÔ=Ëðä=ËĤ=Ë—ô=ËnB=Ë;+=ÊÔ=ÊÑ—=ʼù=Ês=ÊD‘=Ê?g=Êð=ÉêÖ=É¿‹=É”é=Ée€=É5Å=É*=ÈÜ{=Șì=Ⱦ=ÈM÷=È>"=Çõ=Ç¡Ð=Ǭ¸=ÇŠ½=Çiq=Ç?=Çò=Æê…=Æ¿‚=Æ•a=Ækt=ÆA==ÆÃ=ÅìË=Å·=Ř¢=ÅnA=Å9¶=Å E=Äïí=Äƃ=ÄœG=Äoé=ÄGV=Äñ=Ãõ=ÃËP=á[=Ãw|=Ã=Â@P=ÂCB=À’.=Áý=Â{ì=ÂSð=Â+[=Â;=Á××=Á®Ê=Ázy=ÁCì=Á1ó=Á -€=Àà‡=À±è=ÀŠ¥=Àf;=À<é=ÀU=¿áÀ=¿Âq=¿™¾=¿pX=¿Gà=¿Ì=¾ó_=¾ÌÞ=¾¤=¾gX=¾EÄ=¾+=½ú=½E=½Yy=½‡Û=½\=½&…=½ ¬=¼æ­=¼¿=¼• =¼]÷=¼A =¼=»öŠ=»Îb=»¡ê=»h±=»NB=»-Õ=»Ž=º×…=º}Ì=º1¦=ºP=º>Î=º¶=¹ð=¹Èj=¹ ¹=¹y=¹QŠ=¹)û=¹‘=¸Û=¸³ =¸ŒC=¸d˜=¸<—=¸=·îÖ=·ÇH=·~1@)ÿy@)lb@)<©@)˜û@*Wï@+ñ@+{œ@+qÇ@+¼@*e@)ÄÆ@)cS@)_†@)§ê@*½@*L@*Qõ@)ùß@)B¿@(X@('*@(Q\@(œ¥@(³µ@(©£@(€@)o@)q -@)Ÿd@)w@(ñŸ@(9Ü@'§º@'€Ó@'ºö@( B@(Ý@'Žû@&wt@% ú@#Ø›@#TB@#§=@$¡k@%æü@'o@'Ï?@(Â@(à@(@@'èñ@'Å@'kV@&ÃZ@%î@%?¯@%˜@%DÏ@%Ó0@&j€@&Ên@&É|@&qJ@&'@%»@%–œ@%`™@%‡@$ú@%9v@%°Z@&•@&J„@&@êå@þÉ@‰<@¾u@S°@ì=@t@ñL@NÇ@z @tÂ@E¿@â,@* @ 4@¥w@z@©}@Ô‹@ Š@Û@1R@ë‚@]@«X@‹é@¢ð@2@-a@nM@ÉE@4Å@×-@“¤@©@W|@4@~@Ââ@Iç@›(@ýŸ@Ù@V@òo@l[@ƒ±@[å@©@“²@1Ù@ô@N”@«°@ã@·Ñ@ü!@¡©@ó@¨@+@iV@°‰@×`@QZ@Mø@L¦@»ß@œ³@fW@zü@Ö@6 @jì@j@>…@ü°@ÄZ@¦@‰‘@,ñ@P0@w@[@p@Å@”(@Úî@…t@ê@i@'¬@Ð@5@îM@xœ@û@Òj@#@Ëv@x @Øc@ØÇ@¨_@ˆ1@žT@Ëg@±‚@"#@qû@"û@TB@ÁÆ@%@[A@^l@Cû@%Ñ@û¹@¦ð@1I@ÐA@€š@ó4@/ñ@Ø{@SÄ@5*@ã£@Hb@‹ @¯­@¬@„@AÐ@õF@½@¥ñ@ @ Â@ªÑ@¾@˃@ÄÒ@¨1@rX@ -@TÔ@v@Ýå@áû@V:@½Ä@Ï,@¬Á@®õ@ýÐ@j¿@²œ@¿@£“@p©@$Æ@º–@Ge@ÿ>@ \@Q¸@ ý@ÒF@Ò@ˆ@ó[@X>@e@I±@©É@ú›@-#@BÅ@7´@2@¯¦@W°@*@/w@A@8`@1@{@¢@ -ì@Ô@ä}@²-@‡Ï@wß@{ @ƒI@Ö@¡+@­?@«X@ž@Œk@mª@+ª@ ­"@ ô@ ;[@ Ú¸@ ó@ Vê@ Äa@ È@ m@ úý@ Åì@ ªÈ@ ±Ô@ ¾Œ@ ¸ï@ ¢‘@ |e@ 7@ Ö@@ ‰¢@ |@ ”E@ ‰ @ 9¸@ -ÑÄ@ -@ -|—@ -‰¨@ -Å*@ -F@ ‘¡@ Â,@ ®D@ Q@ -¡@@ ¬Ž@Ï@”¤@ #ù@ -Ð@ -¡E@ -Øb@ -ÒB@ -½é@ -«3@ -‹p@ -Dq@ ÏK@ GÇ@Í@aÌ@T@¨@K@ . @ ¦+@ ÖÓ@ ÅÞ@ oK@Îð@@´%@å@k@Æh@­á@5 @ºU@š@äô@ZS@­ý@½z@‹ñ@,Ç@Â@yÅ@i¶@nÞ@T?@é@@Cõ@‘È@¯y@v@[H@Kh@]J@j‹@[@2Û@öÄ@§`@\j@B7@fx@¡¹@ÃÕ@Ã#@µl@¨˜@¢@Wg@÷@E@]@}R@»»@Â@nÛ@ë¼@„¦@uÙ@Æ€@>@–v@¸Â@µ@Œ@sÿ@>@]@@ -r@ @ì@šƒ@ ë@£@TÒ@\d@¯ê@d@N¼@b}@`î@T¹@F6@=\@5¨@Ž@ÜÝ@w-@@ú@Ð@4ó@D€@PŸ@Zr@Qý@"'@¯ @þ@k<@`;@Éï@:«@sÛ@z@ch@JÄ@EÚ@Nü@Lu@1ä@ _@ÚÑ@¡õ@j@O@O~@L¶@>Ù@.o@‘@©°@N©@Fq@‘\@ÚÆ@ß@œ-@?‰@F@&@ J?ÿó‡?ÿ¿+?ÿ›ö?ÿZM?þê¡?þ{™?þþ?ý¼]?ý×û?þ‹E?ÿZ?ÿ»{?ÿ©–?ÿyn?ÿh6?ÿi¡?ÿJ|?þð¶?þ…-?þ[Š?þ’M?þÞJ?þÝi?þuB?ýÈ8?ý,¾?ýƒ?ý Ù?þ,?þ1I?ý˜ï?üµÃ?ü ?ûÔ%?ûÃß?û›Õ?ûS!?û?úâ3?û²?ûI6?ûuu?û^u?û Ä?ûÕ?û??ûÑ5?ü’H?üùÚ?ü¥ä?ûÇA?úÙ?ú)š?ùO?ø{?÷?õ»??õȘ?÷”O?ù³u?ú£ê?úo?ùøU?ùÄ(?ùÐL?úâ?úQb?ú¢??ú·ñ?ú²¥?úõl?ûQj?ûN½?ûD?úØ0?úbë?ù¯ü?ùB?ø{B?÷ðl?÷Sþ?÷?÷_?÷´?÷WÀ?öþz?öÊy?ö̹?÷+'?÷Þ?øsZ?øe'?÷¨q?öË??öc®?ö¦­?÷Kµ?÷½Õ?÷Õ0?ø M?ø]o?÷ýƒ?ö­?õdÔ?ôå‹?ô§?óà¡?óm?ókÝ?ôÁ„?õâ:?ö,Å?ö(\?ö¥?÷¼4?øÝ2?ù‘I?ù™?øÛ ?÷Ö4?÷I?÷<Õ?÷N?÷Q?÷??öÚ?öC?öL¥?öd”?öƒ¿?ö‰y?ö?ôÛú?ó¼¦?ólÊ?ô,?õ¬?õª×?õüü?öGh?ög?õÝa?ô”?òÖ`?ðj…?í£D?ìJx?í¨Y?ð ?òäé?ópé?òÙú?ñØ)?ðÐy?ðì?ïÛy?ïÅâ?ï¿`?ïâ#?ð!Ë?ðv?ï'?íäÏ?í5è?íyP?î+ª?î *?î—?îu±?îÇ?ïz³?ïò?ïÃë?ï|£?ïÍÈ?ð4ñ?ï¬õ?îÏ?ì©C?ìÊó?î2?ïHØ?ïšš?ïµ8??îù?î‰ ?î¸?îªê?îw?îl?íÆ£?î5À?ïb»?ðë[?òN?òâó?ò, ?ð`µ?î…?í’®?íT?ìÑ;?ëñC?몲?ìµæ?î´ø?ð”Þ?ñq¿?ñ1ù?ð†?ð+\?ðeß?ñ%?ñü,?òe@?òi¼?òwV?òÊè?ó=?óR½?òÃ?ñ×N?ñ ´?ð—?ðf?ð%?ïÍ?ïÛõ?ð8?ñ‡ ?òõ?ñÂ?ðí´?ð‘”?ñ??ñÊ‘?ñÎ?ñ¶?ðÚX?ñǘ?òÊ¿?ò½À?ò9 ?ò@?ÿ,¨?èŠ(?âõ?ò±@x@§}@¨@#<@&ñQ@)t@*¿ô@*Ü@*tr@*]|@*›Ê@*Ï@*Òq@*€@)ò@'Ø@$¦Õ@™@È­@B&?òšÖ?ß<1?ât?ù$`@ ”Ü@I-@ ¶i@%°Ø@(ËÓ@*ìc@,b"@-r²@.AÎ@.®Á@.rþ@-t!@,‹@+¹@*ÂH@*é@+;!@+¢Ê@+ç¥@+œ@*«Î@)QQ@'vA@$wb@iî@Y@ ¥@?û2?ã¯Þ?Þ­Z?ïÇ€@·@C @˜@"Pë@%JO@&ã@%˜Ÿ@%ž@'S@)Jø@+ ù@,TÛ@-á@-.Ú@,ß‹@,P>@+æB@+Ò|@+•Š@*"@%îƒ@8Ã@‰²@¹@ @&ê@)ý¸@+>t@+K@*B @);©@(è@' -ç@%Ä@#²¹@ ! @"Ë@¿ê@¢e?êa-?תE?Û!?òW@Ÿù@²Ç@J @!É -@$ìþ@&Çæ@'èB@(eû@(ÆS@)‡ @* N@)â}@):¿@(Ùý@(´#@(V:@'4ï@%8@"Qñ@%•@{T@~@!›ñ@&XÑ@'ø @&ƒ@#SÑ@Lû@û¹@œA@"cÿ@$ºP@$r†@#¡@#R@$Y|@$äØ@#?·@ ä‹@ =@!G£@"^¼@#ó@#Þ @$iå@$vV@$W–@$H5@$ á@#v@"h‚@ ‹@xù@§œ@ü@v„?ícå?ÔL?βW?áá@L‡@ ¦´@G…@^‚@¨>@ ç%@"1¦@"¸@"æ@# î@#C«@# @$Ÿ@$?¦@#Õõ@#ï@"‡¤@"•@#(¾@#Í!@$ê@#ˆè@"Ä¢@"ZÃ@"Yg@"|Ñ@"ˆ$@"1Z@!]ù@ ¦@@€@O²@8Ö@Ó¢@…±@ž4@;o@˜í@WÖ@Ù‡@¡ø@78@—F@[v@F¢@ZF@ -öc@…5@5ò@ÕÈ@üÁ@Fš@—Š@),@ÞA@ [h@ Dõ@Üú@a@Úk@w1@9t@Ñ@†@nL@ÆQ@Éô@aB@á@’\@qå@wº@’Ì@”@fm@E@5ÿ@ñT@dh@ï^@æÛ@~Ü@ /ù@‹Ã?÷–C?Öå”?º½?²é)?­ò?à7?ý(}@ö@“N@Õ¥@{@ã@@v@oÑ@'Ÿ@Ý@ -@Î@n@\l@ðµ@0x@ÍŒ@/Ô@ÞK@Àû@í@61@s°@:î@N3@dÉ@#Ù@ƒ@¥@@ÛZ@ @f{@&%@É@_©@=@.%@ Á@O @ ù:@y.@5@æ@Ùº@ “@þ›@í@#O@œï@ò@ä@¥‘@@œ.@ua@ -nò@Nò@z‚@»9@ ^ð@%†@Ìí@]“@El@(;@î$@p@ì@¤ç@”ò@¤@ªl@ŠÄ@Vr@¨@íô@4v@¥€@É$@¬z@o%@8@Þì@ÐA@Ï?@Ìù@·[@†Ÿ@[5@Y$@~‹@ž×@šÊ@nç@#Ë@Ï­@~q@3£@ ø½@ Çp@ …ò@ 6/@ èX@ y¶@ @ ßö@ ¼ @ LÁ@ -Öö@ -XP@ ܈@ è•@ -‘;@ >~@ Œè@ •®@ oÀ@ -·@ ”@ 1 -@ X@ {j@ ¤é@ Ë@ áÔ@ Áý@ ]g@ -ã™@ -_~@ ±E@¹ø@J@+À@/?ú Î?ëè?ÓǸ?»Bd?°P?»±"?ÔGw?ë3?úSq@àš@Þ8@±Š@¦@>‰@Ó°@ J@ vô@ gO@ Fš@ "@ǵ@\@rO@ à@ï@ Á@£@Ä1@ŸF@ð@L¸@4Å?úÿ:?ù¤Y?ø¿}?ú$V@^n@D?@Œ‘@7@0b@k@¦<@=@Š8@ÁÝ@²p?þc?øõ -?úW@®@¾µ@ã@2ï@ÿ×@®"@[¦@Ç?@aÍ@µ‚@_Û@Ëü@ù…@ö´@±3@4Û@k|@f·@ÈŽ@ô@ŠŠ@Ò@"è@Wª@?j@ÿ—@u?@‹á@Û@ïr@¯„@/(@žž@|ù@}@×@GŽ@àØ@J@—É@Ū@¿h@†@1Ÿ@Ö@…@f©@ŠR@µf@Ç£@д@¸Œ@k_@!Å@©@@Ó×@ªc@µ©@³@§K@«@±S@U@Ö@$_@“?ÿª¤?ÿ)q?þׯ?þ¢Á?þÐ}?ÿj?þÅ?þ+ó?þ?þŒ¯?þ¢?þp,?þWR?þÁþ?ÿw?ÿ?þˆ ?ýª¸?üô?üÝŸ?ýÜ?ü‚[?ú-­?öÑû?õbh?÷«)?úû*?ü1??ûÑì?û”ù?û‹P?úë-?ù˜H?ø€x?ø’Â?ù€ú?ú9£?ú ñ?ùj ?ùP¨?ùúÛ?ú{ ?úµ?øê3?ø?÷ù -?ø8Š?ø7?÷ç€?÷™i?÷BU?ö÷‘?öÔþ?ö V?ölé?öR?õ6º?ðýÇ?ê§æ?è4?ì­?ñT½?ôv?õn®?õ*w?ô¤?ô]Ð?ôO?ó®$?ó?óÔ;?ô•>?õ Á?ô‡4?ó£Ê?ó8?ó -$?òÕ?òËG?ó¾?óz—?ó\-?òÔå?ò©B?ò©I?ñÙá?ð« ?ðAˆ?ð{ö?ðÑÚ?ðÒ„?ïæi?î“z?íüÍ?í±¢?íd²?î!º??ðIþ?ðWŸ?ðRÔ?ðEµ?ð î?ï»ÿ?ï\§?ï*·?ï½?î¹{?î'?í†?íJU?íg`?íÝg?î‡ý?îë"?îé/?î¿P?î@V?íª[?í¹_?îÂ?í²ñ?ì¶;?ë°“?ê‰?é{É?ç"Z?ãW?ݲß?ÔžF?Å‚n?°{é?ž4¶?œ:1?¬r?Â?Ò>?ÛùM?áS ?ãÎ,?äÃß?åFÉ?å]?äÐÀ?ä²¾?æ7B?è»õ?êÞ¸?ë£ì?ëƒh?ë®?ëïÌ?ë¡U?êÄB?ê·?êV?ê^™?êe?é—?è ’?繜?çk4?æ˧?æ4Û?æ] ?çV«?è_æ?èöÁ?èøö?è´7?è¶Ã?èå/?èÑ?è‹š?ç×…?æƒ?ãK?ßì?Û6?Õœ?Ó?מ?ÝóÞ?á÷Â?ã÷K?䙽?äey?ä}?ä3#?ä· ?å7 ?åoÅ?å4?䤈?ä¿O?å ?äøü?äk£?ä]?ãùè?ä >?ã³þ?ã 0?âÇ€?âÉx?â·?à?Þ•u?Üê‘?Ü‹?ÛÁ?ÛyŒ?ܪ?Ü­~?Ü`E?ÛfÍ?Ú*?Ùå?Ø^y?ØQ?ØzÏ?Øa?Ø£?Ø@/?ÙX?Ùèš?Ú'²?Ù?ã?ØÎ?ØQm?ÚV?ܨ?ÜÁS?Ý©V?Þ›J?ÞÑ"?Þ|è?Ýùô?ÝÇê?ÞB?ÞÊû?ß'c?ßW?ßU_?ßv©?ßœ¶?ߪ?ßÝ ?à?ßìß?߃Å?ßÂ?Þób?ÞÄã?ÞYç?Þa¯?ÞË:?Þ˜?ÝAy?Ù:?ωx?ÂÀP?¾Ï™?Èá3?ÕöP?Üœ²?Þ —?ݽÏ?ÛßC?Õ]$?É6M?À¯Ð?ÅØ$?ÒR»?Ú°ÿ?Ý€‘?Þ?Þ7Ã?ÞÈ?ÝÀU?Ý_å?Ýl?ÜÞÎ?ÜÂr?Üå´?ÝC:?Ý¿?ÝÔ?Üø?Ûp”?ÙÓÄ?Ù -?Ù®´?ÚØ…?Ü -†?ܳà?Ûûñ?ÚÙS?Ûc?ÛæV?ÜDJ?Ü?Û}?Úâü?Úe—?Ú¿ô?Û¶=?ÛàÕ?Û-?ÚRÐ?Ù•ñ?ØÑ¥?ØÉ!?Ùƒl?Úh@?Ú¿ê?Ú?Ùø?Øã ?Ùwä?Ùç?Ùì¨?Ú ð?Ú§ -?Û˜Ë?Ü)4?Ûî ?Û;l?ÚÌ(?Úæ™?ÚÓf?ÚLø?Ùù3?ÙîÊ?Ù`Š?׆ -?ÔǪ?Óc>?Ó—?Ó;?Ó »?Ô;M?Õ`¯?Õùy?Ö’Ž?×%Þ?ØD?Ù5×?Ù¹b?Ùž?Ùó?Ø??×+;?ÕÝ¿?Ôß ?Õ5Š?Ö‰j?×}?×qÉ?Ö©3?Õ¸”?Õ,?Õ7(?Õ§h?Õö°?Õêè?ÕúÉ?Õû?ÓrF?Ñá?ÑH¿?Ó»»?ÕF?Ôºê?ÔEj?Ô…À?Ôý‚?ÕXÿ?ÕÎÈ?Öx?Õ„J?ÔØN?Ô¢?Ô¿ö?Ô_Ê?Òÿ$?ÑåÝ?Òaœ?Ó™´?ÔFÓ?Ô}?Ó4w?ÒÕc?ÓÞ?Ó{ÿ?Ó¯?Ó¨?Ó;f?ÒÂu?ÒðÌ?Ó…,?Ó£L?Ó(ñ?Òœ™?Ò"Â?Ò:?Ò»¥?Óƒó?ÓË?Óž[?Òä¡?Ñå?Ε?Ìëc?ÍÃG?Ðs?Ñ?Ѭ4?Ñšô?ÑíÚ?Ñú˜?ÑŒr?Ñ5Ý?ÐÍ›?Ð[ï?Ð{:?Ñ)Ð?ÒÔ?Ò‚+?Ñäï?С¹?Ð ?Ð{¤?Ñ8˜?Ñ ˜?ÑÑT?Ñì4?Ѧ›?ÑO“?Ñt$?Ñä³?Ò3?Ñ>T?ϼ|?Ï&¼?ÏŽ?Ï»[?Ï’a?ÏsN?ÏN?Ïê¤?Ð"-?Ð??Ïî[?ÐZÝ?ÑZë?ÒYX?ÒéF?Òô[?ÒÆ?ÒÂ?ÑÛ‰?Ññz?Ò c?ÑÞ?Ñ¢à?ѯN?ÑÀ‘?ѯF?Ñp?ÑM†?Ñ)Ý?Ñ#È?ÐâÄ?Ðv¹?Ð,?ϱF?Ï°Ù?Ïóå?Ð#ð?Ð š?Ï¿ï?Ï]#?ÎÛæ?Îjô?Îfç?Îœ—?Î+Ü?Ìp?Ä(P?ÃþB?Ã÷¶?Ãsó?Â=d?ÁW9?Á î?Â…Ó?à 2?ÃC±?Ã…°?Ä#?ÃFŠ?ÃU+?Ôs?ÃÐß?Ãõ?ÃÒ?ÃÝ?ÄYt?Ä“[?Äk?Ë?Ør?Ãyj?‰‡?Á|ê?ÁmÕ?ÁçŒ?ÂŽ?Â^œ?ÂÓ?ÂÇB?ÂK©?Á®~?ÀÕk?¿¿‡?¾£?¾±å?À'd?ÁLã?Á¤µ?ÁÕe?Á¼ø?Á#?ÀÉL?À£?À<×?À?À(N?ÀTå?À„S?Áî?Áx?ÁB‡?ÀÁ ?ÀÁÇ?Á Í?ÀÚý?À¾Ñ?Á$?ÁBú?À¤ô?À1ê?À6+?¿ûº?¿™Ó?¿O -?¿8¿?¿?¾’v?¾Å?½ê?» ÷?·Éq?²Ô?ª€?›ü?v3?‰‘›?“œ1?¢&Ø?­j?³‘ ?·jO?ºD?»o?»äë?¼ -í?¼ Y?»º?»?À?»ý?ºó¤?ºº"?º¬Ý?ºë$?»Añ?»E?º5˜?¹3µ?¹?¹áà?º N?ºì4?ºå6?ºðµ?º×6?º3N?¹ÁÆ?¹ý ?ºj³?ºy?º3»?¹ü?¹¯Û?¹œ?¹Ü?ºR\?º¸B?ºà´?ºúë?»'Ð?ºì?º6_?¹Á¶?¹¯¹?¹6¶?¸(â?·®i?¶½‡?±¬ ?¨…ò?¢Ìþ?¤¼m?ªÜG?±·?¶o½?¸0?¸Ç?¹+ ?¹ip?¹žé?¹2?¸îò?¸!¶?·ßó?¸!Å?¸9Ô?·¥M?¶Òœ?¶¤i?¶ê7?·!å?· ž?¶ç»?¶ë~?¶­?¶Î?µ¡ó?µáé?¶_Ï?¶;)?µ÷d?¶(Ã?¶V­?¶FÓ?µëç?µ–?µOÄ?µ{?´ë}?´£¶?´-¬?³ï¥?´’?´á?´š?´S“?´Ž?´|+?³ß2?³o?³w+?³B?³ #?³??³3>?³A§?³o[?³fh?²ù?²;á?± ?°C÷?°ªø?±_Ã?±ÎD?²ê?²?±]g?¯ º?­ns?¬‡]?­Õ?­ØÅ?®è?¯3Ç?®Ö?­ï:?®#{?®~K?¬Ê?¨R?¢…B? Ýé?¢¾ ?¥#þ?©¢ÿ?®N?°˜?°=ê?¯Ô?¯ ?®’?­¢»?­Þ~?­ä²?¬sc?ªÏm?«¿î?¬a?«û§?«œÎ?«[–?« -|?ªäË?ªëÕ?ªmû?ª ?ª™=?«Ù?«Y?ª€g?©Ò¼?©lÍ?©l6?©fP?©¥t?«‹?¬MÉ?ªÛ?¨d£?¨ -Ù?¨y[?¨´H?¨®I?¨À°?¨× ?¨ì@?¨ðØ?¨±r?¨iñ?¨€ø?¨á÷?¨çÝ?¨ed?§ò[?§ôÆ?¨ [?§â»?§bc?¦=¤?¥F?¦O?§e?§Âò?§‡›?§#)?§?xÁ?xo?x¨ý?xTö?xA¬?x•D?x‡Ø?wé?wWM?w,í?wA-?w?V?vÎ÷?vE ?uÃÂ?uGy?s_x?mÒ†?iNø?lu»?qw2?r€?p[ü?m„‘?n€?qW?r›2?rÐ?rØk?r»?rz“?r ²?pÍ>?nÉF?nŽ?Bu¡?B‚;?Bªþ?Bþ?CÛ?C*s?C å?B¬Õ?B™ª?B•?B“K?B¯q?B·h?Bzb?Aì?A™–?AÉŽ?B-™?B'g?A¢œ?@û -?A:Ò?A®$?A‡ž?A@Œ?A­?ALç?A€í?A¾A?AßN?A|­?@ü¢?Ak?ATÙ?@Øe??¼Ç??a\?@r?@s-?@@²??òÎ??ön?@G??åQ??Ó¿??Ò¢??Õô??¬??*ë??pN??¸©??ãW??î6??èš?@x??¼Ê??ŸÒ??ÚÛ??²/??_!??5À??.¡??O¤???>‘Ø?>0q?=Û9?=Tø?< †?:Š—?;$Ž?r?8m ?8cÐ?8y+?8£õ?8•F?87Û?8(Ô?8U?8^Ó?8dð?7¡Ð?6•??77M?8#Ê?7î:?6TZ?4&M?4ø?5Nþ?6¾?6¹*?6ép?6¦ë?6lR?6<û?5ë³?5þ¡?6˜ -?6ªd?6?5Ù(?5Úá?6ê?6wc?6o£?6% ?5èª?53È?4š®?4†ˆ?4 -{?3Ñ•?4d?4ºŽ?4ŠŽ?4®?3os?2õ ?3^à?3¤P?3p‰?3_²?3€”?3´r?3_o?2£‹?20?2 „?1ù¼?1uV?08Ø?/v¡?.º?-è²?.Ó?/„-?.û?+û?%Ÿ?!ðD?"¤N?".)? p? £?$kJ?(6Ó?*wq?+m¤?+Ç*?+A?+D -?+Te?+³­?+ "?,?+ÃÐ?*_Ã?)c[?))‘?*Y?+S€?*Ó|?*ŽÅ?*”y?*ÙÃ?+.©?+G?*óœ?+ˆ?+¦?+˜+?+®?,~?,?+»·?+%!?*j¥?)Çâ?*s\?+€?+Õt?+Åž?+°?*eù?%øÔ?þî?â¯?ÁO?'…r?+e?+b«?+Lg?+¨¶?,«?+—²?+!b?*êŠ?*íÞ?*ô…?*Ä8?)S[?#.³?à?nê?$*Q?)×?)k/?(um?'ÒÉ?)Tª?*.ô?*¶ƒ?+Sn?+~?+Z±?+>â?+ã?*Ãî?*#L?)Qp?(Œ?(‰?'uI?$¼š?% Œ?(Jh?)î?*('?*T?)Øõ?)ƒä?))ª?(Ò¨?(Ϙ?)á?)W?)b2?)/-?(Ú?(ˆq?(eù?(‘-?(}’?'Ý?'g ?'U¢?'¢?'¯„?'c}?'eÃ?'qS?'ß?&"c?%c©?%‹Ž?%þÅ?%êŸ?%›?$½¹?#5x?"›%?#€ø?#´þ?#ÔU?$ Š?#÷û?#ñ5?#oÖ?"ž:?"Á0?#?"Áè?!Ÿ ? ):? ÞÃ?",? Ù=? (}?ö˜?î­?!:¯?!˜m?!ŒK? Í®? f? K? +÷3&?,"?gá??N¦?=o?s«?m?*e?d?Sx?‘?è\?J?¸Ž??øÑ?¶?6y?Šî?¶l?Q?ÍÝ?,?çÄ?)? H?æû?¾¥?¶?CG?-?é?–R?TB?SW?Eã?Ž? ?+R?õ?aš?Y©?øÿ?"£?D?í´?—¿?Iª?`?ÀL?¥|?oÛ?"¤??.™?Ë,?õ?)²?ÂT?~Ä?c†?¢ýù2? -h×?µ¥?W\?‰'?b@?.‘??7m?bÉ?È?k½?Ò@?i?Ôë?>¼?˜Ê?¨S?M? ÿ? ³?‹?IÑ?çó?ó…?ˆ ?þ?Zw?€L?0ñ?Æ™?{-?MN?‘h?Í”?B¹??în?ê? ?×;?\é?5?îe?à‰?¸Õ?Ž¦?’K?¸ ?µ?|ð?`A?kÞ?{:?[²?Ž?Ïa?³Ÿ?Ÿ/?HÚ?5?yW?b™?D?BÃ?(?Þð?Õ)?µ4??‚—?u«?h ?H^?7l?+O?? òQ? ßÕ? Ìñ? ºC? ¡D? ƒ‡? g3? Jv? )ã? p? Õ?ã?Žò?Ò?ö{?X?K ?ÁÙ?c¸?§È?ëÐ?–?ž?ú¹?å9?Ï;?ºó?¤¼?Šö?p•?]»?Cl?ë?Û¥?î?è€?Ü=?Ûö?Ê–?«à?r™?Zû?d€?=«?á`?Óp?ù¢?ÿ{?±²?r?DL?$½?’D?Ó|?Š˜?QÆ?9?ÏH?l"?ÏB?=¦?%ú?åä?2í?AÇ?Ú1?¨‰?zÁ?f¹?1o?U?e?í+?Êã?¡ô?j|?P‚?=Õ?¯?™ì?¡#?„'?%?ÚV?—`?}•?I‡?ØÂ?F?Ú¤?m?ð?þ§?/½?«â?bm?k°?†>ÿÄb>þ5ò>ûX±>ôµø>çCä>è'º>÷<ä>þ0û>þà!>þêß>ÿ 3>ÿNÕ>ýÓá>üI(>ý¤>ÿ‹>ÿ!Ó>þ·Á>þ,>ýÉÖ>þ>þ ·>ýõÿ>ý½W>ý>ýeò>ý/P>ý'ˆ>üàÜ>üaí>üSÙ>üÁ>üuã>ü ß>ü >ü*™>ü >ûž›>ûbÊ>û¶º>û‘¸>ûK >û>ú—+>úr‘>úsö>ú4å>ùÝ1>ùõL>ùÉ×>ù˜Z>ùƒð>ùq¼>ùgS>ùO?>ù)5>ùv>øúÝ>øÐÎ>øSx>÷„f>÷´J>ø>×>ø>à>ø>øõ>÷ê©>÷æÆ>÷ç¸>÷Ï·>÷©Õ>÷ï>÷Š >÷}³>÷n>÷Z >÷BÑ>÷,>öûO>öÆ>öi >õ@R>óô§>ó)>ò«ï>ò@ä>ñâj>ñŠJ>ñ@ >ñ~>ð¯Ò>ð4Â>ïá >ïÜÃ>ï±\>ï ->ïo9>ïCç>ï…>îØh>î¡>îz>î‹Ê>î‹>î(“>ìâr>ìñ>íQŸ>ë—²>ëd>ìûç>í@™>í ä>ìÃ>ì“»>ì¬%>ì’>ìY³>ì*>ë”2>ë’×>ë¥J>ëŒ>>ë[z>ë„>êÞ>ê²¢>ê—™>êt~>êH‚>êl>éÛè>é¶>éz´>èw>æ,†>æµ5>èfÆ>è„c>èFŠ>è£>çÿ>çײ>ç¡Æ>ç`w>ç']>æüú>æ¿¿>æ|)>æ"?>åŒ+>äÃâ>ãÚ±>âç5>â1>âk»>âGx>âa>áØ#>á¥À>á[>ál]>áB„>á§>àáã>à°¶>à€Â>àHâ>àá>ßøY>ßé>ßÔÄ>߶/>ß>ß‚©>ßcP>ßC_>ß)>ß >ÞèÜ>ÞÌÉ>ÞºÆ>Þ¡¼>Þ˜¶>Þ–>ÞVÕ>Þ2À>Þ1>Þ#±>ÞEE>ÞGï>Þ)÷>Þ<ó>Þ!¬>Þ//>ÞkU>ÞŸ>ݸ5>Ýõ×>ÝÖO>݃L>Ý[\>Ý“ >݈´>Ý¥>ÜÂD>Ü->ÛÐÖ>ÛÎ>Û˜¨>ÛÃÉ>Û{Å>Úoe>Û%î>ÛrÙ>Úé^>Úëä>Ú­ç>Ù…á>ØS~>×ù#>Ø<Æ>ØßÌ>ÙdÁ>Ù¿N>Ù±>ÙM€>Ù0R>Ù>Øqá>Ør>ÙÊÐ>Û!Õ>ÛW>ÚÉ >ÚŽž>Úh->Ú,T>Úm>Ùßf>Ùqå>Ù=>ÙXE>Ùº#>Ø >ÖcK>×°>Øü>Ø÷ª>Ù!>س†>ØØ£ >Ù\š>ÙÚ>Øþš>Ù5>Ù)†>Ù -J>Ùÿ>Ù†T>Ú&x>ÙKH>ØF»>×ÄV>×úq>×ÉQ>×Ù(>×Þ¶>×®Æ>Ø>ÙBj>ØüÚ>×í°>×i4>×7³>Öö>ÖØÆ>Ö†£>ÖjÈ>Ö¡j>ÖÑ)>ÖÆr>Öj>Ö>>Ö È>Öþ>ÕèÉ>Õà•>ÕÇå>Õ¾\>Õ¯æ>Õ•>Õ·N>Õ¼>>ÕÃ;>ÕÕ>ÕÑ>Õªq>Õ!!>Ôh›>ÓÍ>ÓWD>Óõ>Ò×¥>Ò]>Òj‰>Ò2ª>Òø>ÑÆp>Ñ{5>Ñ`ÿ>ÑM>ÑV>Ðå¯>г´>Лc>БÙ>ЃÁ>Ðu\>Ð^ >Ð?Ó>Ðn>Ïû¼>ÏÚZ>϶a>ÏÃ>ÏM>ÎÊY>ÎL>͇Û>Í9˜>Ͷ>̘ø>̈·>ÌÊ>ÌÉm>̺>Ì°i>Ì›Ò>Ì&>ÌcŒ>ÌL©>Ì=_>Ì$V>Ìê>Ëöù>ËÔæ>Ë«Ö>Ë”€>ˉ >Ëm’>ËG«>Ë«>ÊæŒ>ʦw>ÊO‰>Ê{Z>ÊŠ¤>Êm>Ê[õ>ÊAÝ>ÊŠ>ÉæŸ>ɱ >É…é>ÉW÷>É5²>É–>Èñe>ÈÊ>È’p>È.‚>Çí->È$q>È >ÇïW>ǸÄ>Ç“Y>ÇwÊ>Ç>ƽ>Æ×°>ÆÀ$>Æ-P>ÅÎç>Æ F>Åâ‡>Åqö>Äì!>Ƈ>Äu+>Äw¤>ÄxÉ>Ä|º>Ä`‹>Ä'+>ÄC^>Ä\m>ÄTô>Ä>Ãþg>Ä™>ÃÏŸ>ýš>Ãø­>Ã÷“>æe>ÃÏS>Ä.e>Ä>ðË>ÃDG>Âç™>ÂÑê>ÂØ>Áð>¼ùœ>®Ÿ²>£Ã›>¤‚7>³°D>¿É>Â(Ê>Ââ>à ,>Âüß>Æ>Úô>ÂáK>Ân>Á„€>Á8>ÁÕë>Â,Š>Áu[>Á4>ÁE>Àïì>ÁfC>ÁŽË>ÁŸ²>Á|=>Àê$>ÀËŽ>Á€u>ÁW>À*›>¿ š>¿O7>¾"á>½ÀÁ>½ñg>¾˜f>¾ßN>¾ïÌ>¾‘É>¾|>¾ ·>¾,^>¾Ò>Àsï>Àhœ>¾”Ã>¼É­>»ë«>¼&>¼Oo>»º¶>ºø›>º?ˆ>¹Ò>º‹Ú>º >»3—>»V>¹'¶>¸B°>º7™>¹Ö<>ºˆ#>¹ýS>· y>·s>·@Œ>µñ:>´C>±_æ>³˜±>·¾{>µ„÷>´N/>¸«>¸ÊQ>µœ>´'%>¶»!>·~,>µ¥>´¢Ì>µ -C>³5ä>³m>³äR>µ_Z>²ü—>³'>¶-«>·|d>·½ò>·&ì>¶…ó>µ‹ï>´°>´ÅÅ>²Ô‘>²ß>²@>²Ùr>´Ÿi>µ,ˆ>³ˆ[>°Ác>¯-¶>®— ->±H‡>³jÃ>±¨±>±Ñ&>±ª">²™s>²—>²Ü{>²Y >²¯Á>²Å>±,>²$ >³LZ>³cA>³‹í>³T5>²Œ>°/x>­2»>­Îµ>°`>°'Ú>­›>®\ >±a->®þ;>¯W>²NA>²B‹>°äÑ>®ç=>­ž„>®UÃ>­ñø>­›2>¯c_>¯‰^>®_´>®4>¯ØM>¯¾B>®éµ>­h•>­n,>®”ù>¯y>°3°>°vµ>°ÕÃ>°ò>°/]>¯–>¯?;>®ç=>¯ß>®îB>®‹8>®äÞ>¯Ü>®­…>®[>­À>®#g>® ¯>­fÎ>­Ru>­d>­À>¬Ì>¬¥f>¬r¦>¬h>¬t>¬G¥>¬)\>«ÿ‰>«Ü{>«Ìñ>«¯³>«tŸ>«2š>«->«£>ªç¦>ªÙî>ªÖ£>ª¸Û>ª²b>ªªO>ª¥>ªoü>ª=â>ª"y>ªR>©à\>©Ð>©Äà>©«h>©‹ë>©hQ>©@£>©/>¨Öx>¨ž•>¨—À>¨†>¨mL>¨KE>¨5ñ>¨,$>¨>§èÌ>§Ì!>§¬ß>§‰¿>§_´>§ö>¦ÐÏ>¦È >¦²>¦É·>¦Ð >¦­X>¦•Â>¦“É>¦X®>¥ï­>¥üW>¦ ä>¦ ƒ>¥è·>¥°Ã>¤Ü²>¤³>¤Š€>¤ü½>¤£ÿ>£ï«>¤qs>¤Â¬>¤)€>£¡Õ>£Õu>¢5>¢->>£›×>£õþ>£Ñ³>£¬>£ÇA>£¥>£D‘>£j">£’4>£a`>£%g>£>£ ´>¢Û >¢x1>¢1»>¢5a>¢67>¢"`>¢5>¡>¡±á>¡¼f>¡’×>¡@ù>¡~T>¢aú>¡ïè>¡+H>¡+9>¡ïò>¡›Ë> æÙ> Z·>  Ò>ŸÕ©>ŸCÄ>Ÿ–ž>Ÿµ >ž4X>œ¡ >VÖ>ž)„>ž*>¬_>œÄÏ>Ou>ž´8>žy®>ÿ>›^Ä>š³í>œƒ¢>ø¿>dh>œê>™zx>™Ûà>T>ŸÃZ>¡> ¢>H†>™Ñ>˜/Ã>š0õ>ž(«>Ÿæ> ÿ>žëh>›xG>—å>•5ç>˜m>„k>  >¡Jà>¡ÆY> Tà>œµÃ>—–˜>“[@>“Ó÷>™MÏ>žDR>¡k|>¢¨¾>¡9Ä>ã†>š¹B>•PP>‘Ó‡>"Ù>“v“>™ûX>ŸÎ >¤Õï>¦xÐ>¦"5>¤¯>¢Wn>ŸFô>œÃ:>•û+>‹ô>‹Ry>“y£>—á1>àk>‹<ó>›"B>¥ÞÊ>¥öm>¥/>¥å>£>žÞæ>š¡>“*>Š¦z>Šì¢>“®Ÿ>›½q> Éj>£îm>¤ös>¤¦¢>¥>3>¤Íˆ>£ý>£Ö¡>¥é>¤4À> ¤Í>œË>˜©>Î#>…ˆ~>ƒ?e>Œ«n>–/‡>œ°|>žd>Ÿ0”>¢qi>£¥N>£b>£‡>£ª>¤T >¤ZD>£ -ã>¢x´>¢3>Ÿç‚>œð>™¸>&Ü>…Šj>zk,>~@Ñ>Š¿>”4>™©Û>›ªt>8>ž§Û>ŸÃH> 6> Ü‹> ¨S> ]>Ÿª¸>ž·Æ>ž<7>ž\V>ž²'>Óš>›xÿ>šÊÜ>›>šÕ¼>—ÀÃ>“€Ô>Ž°>ƒ¼>qa~>v Ú>‡ŒW>‘‰>•Î$>˜w¢>š8>š1Õ>š‘³>›DÝ>›<>šd“>šZ¿>›O>›Õ$>›ß¿>›>šÜH>šÆ>›">›%›>šš'>™È>˜ÄL>—ý×>—l>•ñö>•Û>”ÕÎ>“‡Ü>‘ÏŠ>Ez>ƒ[Ÿ>mh>d®>y Â>ˆaÌ>f>“B¶>•u>>•š ->‘µ>ÔD>’'K>”ü>—zF>™»>˜×s>™*>˜¾²>˜€Æ>˜A#>—vR>–(q>—5¥>—¨W>—m>–š¢>˜&>˜Í¤>–ºf>• â>—b¡>—Á~>–ûœ>•®>”è{>•%Ú>”Ê(>”“>“Ò>>“5,>‘tâ>Žq)>‰·>{¢ñ>a-Í>bà¯>}¦ú>‰W>ˆ~>’ÒN>“¤á>”L‚>•¾§>–O>•Un>”ÆG>”·Å>“wÉ>’Uœ>“cÅ>”A>•I>•›²>–'f>–_n>–t>–@­>–!d>–ì>•SU>•Ko>•~>•#>”Ðè>“Ño>”q>”•Â>”½m>’û1>fä>’Ì>”’Ó>•æõ>•¦È>”@F>“ùy>”Câ>“~x>“Rù>’¥Z>‘Mr>!'>{ã>Žêñ>™>‹H¤>ˆ¦¸>„/Ã>y,8>e¾>\Ú>kPµ>}W±>„}>ˆ*ˆ>Š¶Æ>Œ¼º>ô_>Ž]¥>)0>ú¼>Œ#>Äì>ìå>‘ä>‘b>‘Æ>‘)h>‘?Ý>‘@0>‘4Í>‘&J>‘€>µâ>Ö>¼>»w>£è>‹>t> -ä>Ž¬‚>i>õV>ä >†o>ta>(>zS>\Ô><Ê>K>>Žà%>Ž½×>ŽŸm>ŽÙ>Ž^œ>Ž9|>Ž¹>é¿>Ì>§o>}¢>Rb>7>Œîv>Œ»è>Œ€Š>ŒC9>‹÷>‹—>‹)t>Š´í>‰ö1>ˆµ’>‡ë8>†µP>„²—>ó">|§->s^G>gžÀ>YLn>Sy_>^çk>kÝÑ>uó”>}ÙÈ>ê3>„ ‹>…—õ>†»j>‡zA>‡ùÚ>ˆSð>ˆ’¨>ˆ¹ß>ˆ¶C>ˆ²>ˆÆ%>ˆÈ…>ˆáp>ˆÚ£>ˆËœ>ˆ_ò>†âî>†œo>ˆë>ˆj|>ˆ7£>ˆ (>‡ë]>‡4Õ>†Ú0>‡|0>‡Ç]>‡²l>‡j/>†ÁÒ>‡ •>†ŸÓ>„ª€>…ݤ>†å+>†¨>†Šj>† 5>†ŠW>†;Ÿ>…Ob>…žw>† >…û’>…Ø>…1þ>… Ý>…{}>…ný>…c>„`¹>„Ø>…>„ëé>„Ë¢>„±L>„•P>„l¾>„BË>„8Ã>„Ô>ƒ½Š>ƒ¹u>ƒ­©>ƒ§ü>ƒ^>ƒp9>ƒPU>ƒ"4>‚ðH>‚U>x[>a>‚a>‚IÕ>÷">>%>žk>¸$>‚Ý>¿>€Å>€¨> ý>|>}Á >}9ú>z¥ˆ>xñ.>vâ‘>p”>iÏc>fà·>^¾Ñ>S†ø>E¦Ü>@ò9>LÓî>Xø>bBW>iŒï>oÌ>q+>pÇ÷>v>yŒ>yfì>z%Ø>{4p>{j™>x˜£>rß‚>t@Y>t«²>y)á>{¦ß>{ft>{u>{„Š>{k‚>{EV>{õ>zó>>z¢>zÈ>yÄe>zD>y’è>yJ6>y‡ê>yp>x¶Ž>yÝ>y">xÉ8>xŽë>x]>>x4Â>xD>wÂ>w]Í>v¦¾>v@¤>vÇ0>v¨Á>vš>vcò>v >uv2>u¦@>u¨D>uyÍ>u?»>uñ>tåt>t¯ö>tuP>tH>t!>sà>s¡®>sD>s?´>r¼'>rœ>rø>r~_>rJ/>r?>qCŽ>q=w>q67>pÕ>p·>pï>pÁ÷>p‹²>o™>lÆ;>nT<>nì¦>j:®>kj>nja>nˆ>n«>n>nGM>mHD>lÓ—>me >mcã>m,c>mò>lü9>lÂv>l‚>lE >l%´>kúY>kÉ°>kœv>kcx>kî>jæ|>j²>j…>j_î>j-‘>i÷²>iÅ”>i“&>iV >hÅU>hua>hžÅ>hqc>h!•>g²Ö>gxª>gXÅ>gÛ>fêy>f—Ã>f&š>eš…>es>eDÒ>dmH>bË\>cC/>c>bÉ>`[I>^ãœ>]CM>ZÍà>W)Â>R‰>L x>C¡>8m>+®D>.º>:çù>DÍ>L\D>R >V3.>Yn>[*Ã>\Ÿ’>]šr>^Jæ>^®ª>^þ&>_J >_k ->_Ý>_‹Û>_{n>_nl>_OÃ>_#}>_'X>_=>^ÆÏ>^¤>^AÛ>^D>^WD>^+H>^%>]í!>]¯®>]#§>\@h>\œ…>\ªê>\‡Â>\(è>W±@>XR>[á&>\:>[éû>[¾I>[‘g>[`¸>[Ž>Z÷³>ZÏÑ>ZN‰>YÈ>Y‹Ã>Z|>Yàk>Y¼ >Y‹ø>YE„>Y:>Y¥>XË>XwL>X}#>X_>>X2È>Xi>WÆŸ>W›ß>WbH>W?\>W,¹>Wþ>VÎ^>V >Vxè>VN(>V!Õ>UôA>UÅ?>U‘ÿ>U`}>U6]>TæÏ>T³€>T¶Ê>TŽÇ>TYº>T(é>Sé]>SUÓ>Sgâ>S$>SWà>S,>Rÿš>RÒ>R¤½>Rzp>RM¼>R P>QðÑ>QÆó>QV>Qp>Q9+>Q -6>PÖn>PµÒ>PŠµ>P+æ>O>Ol>O³4>O›'>OrZ>O<¡>O/Þ>Nøf>N=>Na>N: ->N4î>N&Ù>N0>MÈÜ>MY÷>L¿4>Lï¦>LbW>Li®>L‹«>LV÷>LF>Ky>K°¯>K½X>KŸû>Ker>KÍ>JÑ>Jž>J™£>J{y>Jb®>Jc>IŽõ>I•Â>I‚Ì>I Ü>IeU>Hùö>HÄI>HÅé>HFÒ$>G$Ô>H|>H‘>G†>GT >G>GTÕ>FÕ3>FZ{>F÷ø>Fà1>F¼>Fš®>F[">Fš>E~ò>EcQ>EdZ>E[L>Eq£>ECz>EC>DÎÝ>D“ç>CÕŒ>CÀV>D6N>D"D>Cê+>C¼#>C›¡>CW1>C>C->B÷s>BËj>B >Br>BH(>BØ>Aáe>A¢•>A„g>A_©>A,£>@ÙÐ>@!>@Ký>@OÀ>@³>?Ðk>?œ8>?R >>ÿÞ>>¥Ã>>-Z>=³”>=,><[û>:£>9Û>8¼Å>7!Ù>4ˆý>0ëï>,–>%» ->6¢>a2>ÿï>mW>#÷}>*,(>.×0>2A¶>4²—>6nv>7£?>8w>8î2>8 >9'´>9Ü>:À>:Û>:¯>:‰>: ³>9ô¾>9ä:>9Ìô>9²Ø>9l3>8Ó3>8O>8ªO>8a>80>8È>8ª/>7â>7ªå>8/½>8³>8.>7å«>7•’>7>7_Ž>7Rš>7K>6ò >6ä•>6¾>6Œq>6r£>6P?>6$>5í >5×J>5»>5ŽÚ>5[…>5E«>5 Û>4ü¾>4Õi>4±%>4}k>4V¼>4Aˆ>4&>3íe>3Ͳ>3«È>3…Z>3\À>39>3†>2ï¡>2È2>2¡t>2~Y>2S>21>2 C>1è~>1Âø>1™w>1py>1O‰>1&/>0êù>0Ɉ>0¼>0™Ð>0rÀ>0CK>0$¿>0>/à >/ºþ>/–>/pÉ>/Iô>/#³>/d>.Üä>.¸>.“8>.l¹>.Dú>.#ü>-ÿ>-ÙÖ>-¶‰>-‘Ú>-m>-G >,ýí>+í×>,;$>,®™>,->,gú>,D>, X>+ÿM>+ÃB>+JÄ>+hÆ>+m>+J¬>+%{>+ >*Üú>*¹>*’À>*n¦>*L>*)>>)øÑ>)¿¬>)“5>)>)qÔ>)Hr>)">)F>(äš>(¿>(F>(z7>(G>'÷Î>'ö°>'ëÑ>'Æ6>'›.>'tõ>'YO>'.p>'5>&ôá>&ÑÀ>&®">&ŠÃ>&f•>&CF>&!;>%ýF>%Ú#>%·C>%’Ð>%qU>%N½>%+>%›>$ã]>$·>$v?>$BÌ>$2a>$!æ>$ Q>#îL>#È«>#—Š>#T>#d>#CÎ># ‹>"þ+>"ÓÊ>"±Ú>"ŽJ>"p>"R¬>"-z>!Ø+>!–ô>!°l>!yl>!nð>!P¹>!*í>!E> àT> §> § > ‹ò> q³> O¯> '†> @>ŸŒ>ƒ¶>>a'><_>%Û>>ûŸ>Í#>²N>‰ú>s=>Vœ>4'> -4>éº>Ía>¬¯>‰˜>_ƒ>Eb>"y>ï ->Ø«>§§>)>€>^Š>@7>(>þ>Ý >»£>–±>r>PI>2~>>ïf>Ä >®Ü>‘å>pð>L¯>.ò>à>ë*>¼È>œ>‡>aœ>@ç>)<> -²>ê>­Í>ã9>3¯>(R>†„>žç>¡î>4½>7Ò>¶>…ì>cé>DC>øq>Kž>µ>»e>œS>¸>aå>D°>#J>Ö”>/y>˜>¤u>…>e¬>Eð>& >>ؾ>;>->tK>`¸>Dì>#>,>åm>ÇW>¨ê>‡”>hé>Jm>(‡>û·>ås>Ë*>¬Ú>Š>g>Læ>-ú> -¿>éú>Ëâ>°†>‘”>n—>M >+ô>2X> @> -ov>H4>“2>s=>RS>%> -Þ>ó>Ó]>²µ>‘ô>o‡>0c> -F>Ë>×|>¶µ> +>~>W!>2B> â> Þ™> ´ö> ˆ^> XW> #é> ëq> ªÜ> c°> (> §õ> -1Z>~Ó>Ú >§í>˜>ÓÃ>mN>7û=ø$=ì¤=Ú5¯=Öãî=éKø=õ -=ýPª>oÞ>l>G>Ø÷>§>5©>˜­>Û¿> P> #ü> 3ï> :T> 8‡> 3> *ü> ‚> >þ8>ë¡>×>Á\>ª€>’¤>z>aý>E>Ø¿>¢Ð>ñ˜>às>ÄN>ªÚ>‚>u>Y >Õ>Ó¬>Š>¶<>¬ò>•Q>zñ>`>D+>'%> E>ðZ>Ô>¸v>›é>~b>b«>GS>+a>¤>éÊ>Ƶ>¸†>>‚à>g;>Jï>.ã>ã>ö1>Ûe>¿Ì>¢->kk>Tö>N0>1r>>ûY>Þ>³Š>¤>‹é>oã>U“>:ž>è>p>Ü\>°ˆ>«å>“©>xR>L>¡>(>A>ëÍ>ÐÒ>¸Ò>œ5>rK>[$>I—>/‡>;=ÿó=ÿ»Æ=ÿ€ú=ÿKþ=ÿš=þâ‡=þ¨Ë=þjŠ=þ>ª=þ -=ýÒz=ý›:=ýg^=ý*ì=üßµ=ü{=üj~=ü+Ã=ûPM=û´X=û´A=û}w=û=0=ûÒ=úâS=ú¬½=úvR=ú@E=ùÿõ=ö¾â=ð1Z=÷®Ì=ø»²=÷-˜=öXe=÷>=õå=÷Ë.=÷Ó­=÷–=÷3á=÷I=÷"~=öê=ö®Z=ö}ù=õ]ß=ô×p=õÐÿ=õ¢†=õ}L=õKT=õ=ôá=ô¬œ=ôyc=ô7"=óòä=óÛ`=ó©Ï=óji=ó3˜=óÎ=òŠÎ=ò†=òo­=ò2Á=ñïÛ=ñÆ{=ñ‡=ñSÎ=ñ:Ã=ñð=ðÊÿ=ðŽ=ðP1=ð'=ïÿ¤=ïš=ïu«=ïd=ï8ö=ï=îÓ=îžK=îk =î;=îê=íÕ=í  =í3&=ìé1=ì×Ì=ìÓ=ì¥G=ìrÙ=ì@=ì =ëÛ=머=ëv^=ëCÅ=ë f=êÖ -=ê¬=êyõ=ê<¬=êÒ=éäá=é²Ø=é€==éNÖ=éû=èéÔ=è·4=è‡F=èU›=è#ó=çñÝ=ç¹=çx1=çS=ç+P=æú=æÃJ=æ‰=æ`¹=æ3v=åþ=åÑ-=å¡Œ=åpL=å;•=å Š=äÝ-=ä©c=äjC=äEü=ä‘=ãé =ã¸@=ã‡=ãUM=ã³=âîê=âÃ(=â’=â`Ú=áûN=àü =ᛀ=á ù=áp =á>/=áK=àÁ,=߆’=ßõ=àC=ßÓ=ߘÁ=ß¼â=ß‘=ß`î=ß0ú=ß=ÞÆe=Þ‰=ÞU=Þƒ=ݶs=Ü»r=Ýzü=݃w=ÝR=Ü‹$=ÜÍö=Ü°Í=Ü”ô=Üd;=Ü8Ä=Ü=ÛØ*=Û«)=Û|I=ÛM§=Ûz=Úï·=ÚÀê=Ú‘ú=Ú]G=ÙUã=Øô=ÙÊì=Ù¦ä=ÙtÔ=Ù#”=Ù=Øì =ؽ=ØŽ·=Ø_'=Ø1H=×H­=Ô©µ=Ö=Ó­›=Ö$ñ=×·=ÖêÍ=Ö¼_=Ö…Ð=Ö`h=Ö6ò=Õð(=Õ¤=ÕªU=Õ€Þ=ÕLÅ=Ôÿ =ÔÝy=ÔÈL=Ô›$=ÔQc=Ô+=Ô/=Óåí=Ó¸ç=Ó‹¯=Ó]=Ó)ð=ÓÔ=ÒÖ=Ò¦¾=ÒyÖ=ÒN—=Ò–=ÑA1=Ñ]†=јÇ=Ñb)=Ñ@=Ñ Õ=Ðá=зÎ=Ї¼=Ð9Ç=Ð'‘=Ð=ÏÚ=Ï« =Ï\q=Ï‚=ÏB=Îûw=ÎÏ“=ΓÃ=Íü=Í~…=Íâ¡=Íì5=ÍÅ=͘Œ=Ím<=ÍAk=Í^=ÌéŸ=̽¬=Ì‘H=Ìe=Ì9”=Ì ì=Ëáa=˳¨=ËŠl=Ë^&=Ë1™=ÊÚÌ?¬ÿr?¬£±?¬nÌ?¬Š¶?¬ïh?­`Ã?­¥ø?­¯?­ˆB?­B?¬í?¬œ?¬id?¬ZI?¬g3?¬|e?¬¿?¬YÝ?«úo?«’:?«k¿?«“n?«Àž?«¬f?«aJ?«*P?«BÌ?«±?«ú@?¬?«ø ?«Ü?« -o?ª‘ ?ªJx?ª8ð?ª,O?©éÆ?©e«?¨Ä6?¨5)?§æ/?§þú?¨Ü?©m>?ªI?ªÙY?«M?«¸?«˜?ªü±?ªí›?ªÃ“?ª\ë?©¬ú?¨æ?¨n÷?¨‰ò?©¼?©Ÿ¬?©æ™?©Ë„?©m÷?©A?©®?©T?©+(?©Ó?©¬?©§?©T½?©ˆË?©œ$?©„>?©Cä?¨å¹?¨oý?§ÔÅ?§ -ê?¦H?¥õE?¦D¾?¦û??§²ä?¨,“?¨\"?¨Rí?¨2ÿ?¨â?¨{?¨à?§×?§uo?§Ò?¦Û?¥LA?¥Æ&?¥î_?¥ì?¥Þï?¥Ê?¥¦•?¥qÂ?¥5?¤ú©?¤¿n?¤{R?¤BI?¤>C?¤t?¤¶;?¤×™?¤Ï+?¤ ?¤Fê?£Â¹?£2^?¢á™?£ ë?£?£Õã?£¯E?£ð?¢po?¢0³?¢F)?¢6?‘b ?‘ ½?¨~?lð?ƒƒ?É_?õI?Ýê?‡?‘?ØÀ?÷–?Sò?¤?Y×?QÖ?0þ?æƒ?rF?Žóâ?Ž »?Ž£¤?Žöe?\9?œÁ?²°?³W?¬{?¢Í?˜2?‰Í?ll?0O?Ž×ñ?ŽŽ§?Ž…‡?Ž²ð?Žá¬?ŽõY?Žô±?Žè‹?ŽÏ?Ž™à?Ž.¯?’?ë?A?oT?Ö?Ž?Ž9Þ?ŽI¯?ŽK±?ŽD?Ž7Ì?Ž'a?ŽÅ?ýš?åÚ?ÍY?µø?¡“?¦?w?`h?C©?ª?Œ˜´?Œ0S?Œî?Œf?ŒÃÐ?Œù?‰?Œõ*?Œð’?Œ÷v?Œû»?Œöv?ŒôÁ?Œþ? ?Œÿn?ŒÛÁ?Œ”š?ŒJ{?Œ=Ç?Œwr?Œ¼?Œçµ? -—?0ƒ?L5?Nú?0Ç?ŒîÍ?Œ¢Ê?Œ‡4?Œ´?ŒöÀ? ?p?ŒÊ?ŒÈ?ŒDq?Œ%“?Œ$²?Œ6M?Œ?0?Œ%›?‹úL?‹äé?‹ó ?Œ¯?Œ7?Œd—?Œ¨Ë?Œë?D?÷?Y?Œæ/?Œƒ©?Œô?‹ïú?Œº?Œ~•?ŒÌû?Œï0?Œï¸?Œ½²?ŒS\?‹ïV?‹Æ?‹ÐC?Œ«?Œt -?Œòï?ZÓ? &?Àþ?¸E?žz? á?½Ù?ÓC?ì??Ž+©?ŽŒ£?Žå?í?X?ŽÜõ?Ž€?Ž;f?Ž4?ŽPc?ŽhO?Ž^Ì?Ž6@?Ž%?Žjâ?‡?ã?t -?Œ¡?Sk?—?ï7?ÌŠ?ŒŠ?F¯?M?Æx?jò?Ù­?‘°?‘à?‘ Ê?Æ?[Ÿ? -K?ü?©?$”?‰?ëv?ÃE?¦?˜)?‹?Î?°?Ö*?>z?’[?¥ ?|z?J„?+u?ˆ?-Ð?hm?‰m?Wr?öÑ?Ÿ?W–?%1?"K?dp?ÝŠ?H•?Y??§w?"ì?Ž™»?ŽVÜ?Žs¢?Ž«o?Ž£L?ŽEü?ïc?õp?Žè?í?Y;?ŒÉÿ?ŒŽL?Œµ?ŒŠ??Œ`ø?Œ#N?‹ú??‹æù?‹Ö0?‹±?‹`ƒ?‹?ŠÁ¯?Š†5?Š9?‰è?‰¸?‰ËÑ?Šî?Š H?Š)†?ŠÆ?‰µè?‰ ý?ˆg1?ˆß?‡ÿ?‡ï§?‡Å'?‡Ô?ˆI¸?ˆœ¶?ˆT½?‡ÉÙ?‡hï?‡%?†¿‘?†Œ'?†Ž¼?† õ?†™Ù?†w ?†\æ?†Q?†&_?…Íð?…fß?…?…]?…b?„áÅ?„»?„§œ?„{?„ á?ƒtB?‚ñ‘?‚¾¥?‚Ú?‚ön?‚ºS?‚$ö?€Ø?_?€ÁŒ?€Âõ?€õË?JÄ?Œ?f°?€à?€]A?€ ˜?€³?€?€Æ?€Â?ªC? i?~U ?}©–?|ý.?|/U?{d–?zÖ?z‚?zO{?z'ç?yïÂ?y«»?yt™?y^÷?y‰«?yÙ.?yó“?y½þ?yÑ?yÅû?{@?|ˆ?}î?€'>?>?Ĩ?ƒ9R?…˜?…<,?†Î?Š…«?Ž'²?Œ/Q?‰±?À ?”=H?“³ó?>Û?ŒÉó?˜­?§•Ì?ªŸÍ?žìØ?’J²?•X=?©4?¿rõ?Åm¸?¶®t?ŸAÉ?“°C?  ~?½àb?ÚU ?åO=?Ù­?»®¿?åÅ?’»¸?¢ €?Å)?ë Ô@Hz@Ê?ø>Â?Õ»–?®£š?•È?—J¤?µ®?ßÞ&@ý0@-ö@²p@³Û@ Þ?ô@³?È<œ?¡4Ù?£?œ¡ý?Á¹ò?ï7f@ Ò@ÿ@$-¡@( ,@'1â@!b@Ó@Î?ݺë?°Ñ@)+ü@(8@(¹‘@)o@*’d@*¶Ú@(ZŽ@#¡@P—@ uk?÷õX?͉?£<"?‡WÑ?†âÛ?¡Ú8?Ë*‰?ôDµ@ -¹@Îh@D@%þ@(ø<@+}Ý@-"^@.'ä@.|Ô@.1@-­@-B˜@,ðß@,™@,°@+?o@)ßv@'ö{@%‘Ó@"OŸ@]&@Ýb@ -þ6?÷í!?Ñq?§bñ?†:_?y‡¥?¥õ?´È ?ÝS`?ÿõõ@ ä:@¼X@–Û@pL@!üü@#Ø5@%K(@&D:@&¹4@&Ø+@&×"@&¯û@&S@µ @~ƒ@¬V@«+@Ù~@6s@}À@®a@ÛR@¯@Å/@a@™:@5Ž@ˆ@mL@¥@‘“@rA@J2@ƒ@ú¡@@¤@÷P@¹ù@’u@Ÿ@ÆI@Ê$@C¦@JI@¬@ eQ@ @ #º@e“@\@ò,@s5@Ž@±@\1@K—@Q‚@Sÿ@;@ÿN@Âf@§Ò@²~@×@øt@ x@/@ÿ6@ÃÃ@lâ@ûÐ@‚Ø@@žâ@2@&¶@ãÙ@))@Î @ c@]L?ý}A?æ!Ž?Ålà?Ÿ,À?z‚4?XêÙ?i“±?‘éÀ?¶ŽŸ?׬o?ñ3¤@¿Æ@@ z@aì@]D@Òå@ÞÔ@A@=Û@Òƒ@Lš@™6@Èx@S@; @Kx@,˜@ÿ@öé@ú\@@õy@±å@iì@=Ñ@ @À@îž@é@ìP@õ,@@Þ@y@DÆ@=¾@ «@0é@J¤@Ú´@FÎ@`Ó@Œ0@¦5@œJ@•õ@©ü@ÀV@Æ@¾1@£…@iV@¿@]­@¡?@7$@|®@9A@Öœ@´@íÐ@Ä@”¦@x@Œ%@¨ý@“2@RÔ@% @-@`Ì@‡ó@hl@¨@Æ"@‹ô@Y@Hø@q‹@¢@‘Ç@GÀ@ñE@¡@p@w„@ª›@ÚR@ßÞ@ÌÕ@Çù@Ф@Ë]@—*@9@™å@_J@ko@vK@dq@h@‰¡@ŽL@`Y@*é@b@ -@ôÀ@°9@hò@L.@\ -@cë@IL@Ý@»ï@W2@¸@úq@àŸ@˜÷@Þ@ Ç@ Úw@ ,P@ W—@ --É@rº@ß(@;”?úE ?댎?Ö¢Õ?º½?™zc?u~?Yí9?qð?–%i?·Y2?Ój1?èK|?öÄh@*Ã@X³@—B@6@e”@ L`@ à^@ -'@ -U”@ -xØ@ -…H@ -•·@ -œH@ -dÙ@ -1@ --@ -5Á@ -!j@ ¹@øÒ@@Ÿ’@‡À@m—@•Ë@M2@ú¢@ @åz@°´@Œ˜@Ž @¶y@Ö@ÉÙ@£@jF@&f@ O@),@Iû@\{@k @fÜ@Iá@5½@&@ð~@¢²@ir@FÖ@)¶@÷@ד@@Fj@á!@‹S@p…@Ÿ!@Ò`@ÜF@ÐL@¶u@Å@2@‹@ñS@ Ã@ÍÍ@€@@â@ÆÔ@Pð@… @þo@,@¸@Óü@Á¡@Ór@îÂ@é»@ÀM@…Ž@5#@çI@Íw@Óô@Ó•@–@¥@@z¿@^ù@OŸ@J…@O@V2@K—@;&@ä@Ê5@t®@J®@+H?ÿô•?ÿŸ\?ÿiò?ÿ\?þ|Å?þ:?þ )?þ‚?ýï¤?ý‚*?ý&Ü?ý†?ý ?ý¦?ýS?üðö?üŠï?ü0Î?ü§?ûÚl?ûLß?ùœœ?ößÑ?õ9O?ö=Ÿ?ø$\?øó?ø÷ì?øÝÝ?ø³f?øy¼?ø-×?÷Û ?÷“?÷¼•?÷L9?ötî?ö`?öhô?öõ7?÷õ?÷2?öË»š?at®?Œ+@?¥½?¹[ó?Ç^U?Ñ@?׃ ?Ûùž?Þ¨æ?ß»Y?àºË?âöÑ?åcÇ?暢?æÚâ?ç Î?ço[?ç› ?ç˜ñ?çî?è)?èî‚?é?èÕ?è}?èO)?è-q?è:i?è¨2?é L?éKM?é5»?èøg?ę̀?èéc?é ?èÞ?è‹è?èI?çùú?çZ¤?æoá?妮?åGQ?åB¿?åw(?åèš?æ—?çÃ?æîw?æ–£?å¾`?ä"?ãAÊ?äH?åÏ¥?æJz?åïˆ?帣?æ E?æ‰Ð?æ¬Ú?æh\?Ñš?ÐâÚ?Ðëe?Ñ Ï?Ðþ?ÐÊ‘?ÐËÞ?Ðåh?ÐÜ­?н[?Ðyý?Ð3¦?Ð ê?Њ?Ïê?ÏÆ?Ïù¬?ÐKÞ?Ð:ã?϶ß?Ï!ö?ÎÎ[?ÎÒ™?Ï'?Ïy{?Ïœ>?ϵÇ?ÏÉ ?ÏÛ²?ÏÎ]?ÏA™?Î(¦?ÍFB?Íku?Î(?Î]®?Î=?Î@H?Λ?ί?αü?ΰZ?μ&?άÝ?ÎyÛ?ÎN?ÎHˆ?Îhž?΢ì?ÎåJ?ÎÛë?ÎaL?ÎQ?Îò?ÎS)?Îo^?Îrc?Î~&?Ϊ‘?ÎÁC?ÎéÝ?Ïp†?ϼ—?Ïih?ÎÜ?ÎT/?ÍëS?ÍÅ?Íâæ?Î ?Î!¢?Î3t?Îü?Î |?ÎQ?Î{'?΂š?ΟŸ?ÎÖø?Ï$è?Ïq=?Ï£ð?ÏÉþ?ÏØ ?ÏÒ@?ÏÏq?ÏŸU?Ï0¹?ÎÍØ?Σê?Îog?Íåá?͉u?Íì8?ÎX¯?Î’?͸‚?;F?ÍÑ ?Í{?̸œ?ËÇ5?ˇÏ?ÌY?Íò?ÍT0?ͱ?Ì®á?ÌK?ËÓ?ËK³?Ê÷ú?Ë-?ËCð?Ëap?ËI@?Êöà?Ê—\?ÊS?Éï?ÉvÔ?ÉF?ÉG ?ɧ?ÈÝ­?ÈÙ?ÈÝ?Ç”Ø?Ç-?Ç;e?ÇOí?Ç.?Æíh?Æ~…?Æ7s?ÆfÝ?ƃ:?Æ$Á?Å„æ?Äþ?Ä¿³?Ä€ž?Ä>V?Ä#›?ÃúÛ?ã¡?Ã0ã?ÂÄc?Âv¿?ÂWÏ?Â3ñ?Áâ0?Áe)?À‘Š?¿”o?¾ÁÃ?¾ Y?½Ÿî?½‹?½¨ ?½“§?¼õ=?¼•$?½¶?¿…B?ÀMÇ?ÀO ?À*‰?¿ð?¿ÐZ?¿»?©U4?­ó?°/?²£?³/·?³×Ý?´„?µU@?µÓ”?¶y ?· [?·£?¶u?µ¢?µ13?µX²?µÿu?¶¨°?¶©½?¶_s?¶ Þ?µ£ü?µWö?µ^˜?µª„?µè‘?¶Db?¶‚´?¶·?µ—?µw?´€ù?´l1?´Ök?´üO?´Ç?´z0?´\G?´·¡?µ{?´ô¤?´±G?´a8?´_?³§W?³?²lW?°à?®tþ?®/ô?°øÀ?³]9?³ª¤?³Û?²ÍS?²õI?²ÑG?²‚+?²`m?²io?²Ì?°Eè?°3‹?°)w?°Z?°Ô?°Çb?°¼à?°?¯™·?¯´ª?¯àS?¯ôd?°ƒ?° -L?°W?°?¯¹á?¯}?¯iƒ?¯$ò?®ÔÕ?®¿Á?®ßd?®äÕ?®dL?­ÙÌ?­½Ö?­²ê?­nl?­Pû?­{q?­¡×?­¿º?­‘?­"­?¬÷Ù?­ ß?­¡?¬Ç)?¬.€?«¹:?«Ž?«y+?«šm?¬r?¬kw?¬Fa?«Çe?«*³?ª€M?©®·?§mk?¤Ù¢?¥êJ?¨ý?ª{ ?ª¬T?ªÍ?ªœ˜?ª¯‘?ª{È?©Ñ?©w@?©x®?©_Ä?¨õS?¨CÔ?¨${?¨l??¨{A?¨KU?§™ï?§o?§…é?§ß?§öf?¨<\?¨ŠÀ?¨,_?§ºú?§ö/?¨ y?§Ç‚?§[3?¦®-?¦|V?¦ÀY?¦ñ•?§n|?¨Ì?¨ -œ?§¦_?¦æ"?¦0Ÿ?¦P¯?¦üd?¦ôÁ?¦??¦r?¦H?¦!Ç?¥´D?¥cñ?¥’±?¥¯¡?¥_Y?¥ž?¥"÷?¥ƒd?¥±×?¥M?¤Å?¤c3?¤F^?¤§?¤“ä?¤Á?¤jå?¤W-?¤>w?£êD?£ØS?£­î?£ƒ?£˜ù?£fq?¢Ñî?¢…?¢{o?¢‹ú?¢uì?¢G?¢P/?¢[Ý?¢|?¡±/?¡‘Ç?¡ŽÉ?¡y3?¡s®?¡n‰?¡Š’?¡ûÜ?¢"V?¡zÅ? Ú˜? ¾`? íš?¡d? ìÀ? è"? Õ¡? œ#? ô? lr? *˜?  ?Ÿíq? m?Ÿú?Ÿ™Ê?Ÿ?k?ŸIu?Ÿ•0?Ÿ“š?ŸYä?Ÿ=i?Ÿó?Ÿ-‡?ŸUò?ŸA&?ŸCí?Ÿ?”?žêÔ?žh‚?öý?V?ˆù?›…?›éâ?˜k?—¼½?š~í?œ=?œáÈ?<‡?œÚ¨?œº4?œæì?i?œÞf?œ!?š¸)?šEÉ?›Ô?›Úv?›‡6?šÃ­?š¡>?›& ?›èê?œU?›ä?™³º?˜û?™Á6?šä½?›?šs_?š=(?šÇ‘?šÐB?šk?š£—?›%¤?› Ê?škÜ?™Ä£?™R -?™'-?™!n?˜îN?˜° ?˜Ã+?˜™a?˜eZ?˜¦\?˜D·?—XL?—OÝ?—çï?˜@?˜?”Hu?“žë?“°n?“ƒí?“{?’ï-?’ô³?’X?‘¸?‘6L?’?’f -?’mE?’0=?‘÷?‘ób?’Xú?’·g?’e¯?‘ìæ?’=þ?’¨ª?’Ïr?“‡?’å‘?’l°?’'V?‘ªu?‘u¶?‘æ£?‘Þ6?‘œ&?‘q¥?‘Bî?‘?‘l?îâ?»í?]ä?ó¹?u*?Žw»?ð?Ž™©?'?ö»?û ?¶ª?nø?Ÿm?üs?©?Ž„×?ó?Ž}R?Ž^„?Ú ?Ž/?ŽÉÏ?M?Žõ.?ŽÁ*?Ž¥m?Ž)“?}ü?QL?q²?cq?_?Ï?Q?Œ˜?ŒB1?ŒSb?Œ¬0?!~? -ã?Œkè?ŒV?‹Û’?ŒLÖ?Ö?~?‰k?'?Œf)?‹ùÞ?‹ý?ŒkÌ?Œ¶]?Œ^Ž?‹Å–?‹^º?‹ -?‹a?‹­?‹ƒü?‹?Š—…?Š»\?‹?‹&?‹AD?‹0m?Šìá?Š‰Þ?‰ó\?‰ØG?Š#)?Š=v?Š6Ž?‰Øq?‰QV?‰wú?‰Ï?‰t+?ˆÜ?ˆ¢?ˆ÷?‰®0?‰ùö?Š)ƒ?ŠLR?‰·‹?ˆáÜ?ˆfF?ˆÎ?ˆ+?ˆ‘?ˆíû?ˆŽ$?L? ˜?€Ö®?€Ã‰?€¯š?€¯C?€Ëª?€³[?€ƒ¸?€p?€M£?€H -?€Ys?€k3?€yÐ?€fk?€6A?€¾?ýÌ?ªP?“]?CŸ? ?h?|”?zø?‹•?W¾?~§;?~eJ?~»W?~¿ƒ?~Âq?~ÊÊ?~¥¥?~*‘?}¯?}¹ˆ?}ç[?}àŒ?}ì0?}ä—?}“*?}Ö?|´?|~.?|Ž†?|…†?|"ó?{¢Í?{&?zäÅ?{*#?{¤Á?{µ?{\$?zð?zŽË?yçU?y"U?y`ë?zH?z G?yÊÜ?y¯:?y­Ý?y³‘?y›s?y†'?xû“?x 4?wš‚?wã'?xOþ?x’ ?xkG?x\?wÖA?wÈÄ?wÔ?wÀL?w1ú?v†F?vHR?vY²?vJÛ?vmä?voŸ?v%ˆ?uØ#?u’¦?uOþ?u?tÚK?tÚ?t¨U?t‚ -?t8W?sù{?sÛ¦?s§Ð?sŽ„?s‹?sP?rœ?rµŽ?rÁÁ?rL+?qá?qßà?qâU?q¶ ?q—Ÿ?qYD?pñ¬?pÅE?pÀŒ?p>®?pu?p,“?oë??o|é?oG“?nê?n”è?nƒ|?n<æ?m²Þ?m*—?lù?löY?lùˆ?lœ?l2ö?lK%?l"?kÆÏ?kvù?kQ?jÈ]?jç€?k?jËû?jX\?iåæ?ij[?hõó?h¥E?htß?hLî?hZG?hWÞ?hÓ?gÉŸ?gkž?g.?fø„?flà?eíb?e® ?e”R?eÔý?fÊ?e—[?düt?dé–?dù?d}?d¥?cé?c«€?c[Z?c&t?bû¨?c1?c-9?bòd?cŠ?bº=?bO?aÇË?aÄL?aʵ?b –?b ¯?aœ?an?`»?_Ū?_4?_#Ö?_&°?^¼‰?^–Ö?^­ô?^¿%?^Þ?^ÞÒ?^¥—?^…?^Œz?^iA?^Uk?^E¯?^N?^|ô?^¿?^¯:?^§?]?],?]jž?]vè?]|?]W¾?]J”?]?Y?]JÜ?]ˆµ?]‘W?]HÉ?]4'?]U‘?]H?]å?\”l?[îÐ?[`ì?[gf?[ËL?\Q?[Üv?[™µ?[K3?Zàd?Zƒ?Z€)?Z—z?Z›ø?Ztn?Zp?YÆá?Y»˜?YG?YL?YNa?YoQ?Y6·?XÌ*?Xe€?XY?X€C?Xvë?Xy‚?Xm´?XÁ?W¼œ?WA?V¼>?Vªˆ?VÖÞ?V©R?Uò=?T½‰?TG†?U?à?Ui?Tã -?T¥Ñ?Tsz?SØ?RÔ°?Pÿë?N$f?NŽ?Q'?R©6?Q=ì?P ~?PØØ?Q“l?QÑM?Rø?Rˆ›?S -·?Sx`?SKk?R|Ù?QçJ?QîÍ?RA’?RK{?QÁÅ?Q#ß?PZ}?Oïí?PŸÌ?Pï?PG ?Pø?Qì?Qeû?Pük?P¿u?Pvt?P„ß?PÐ’?PØï?Qî?PÝÙ?OpÄ?M~ô?Lüú?Mì?M?¢?M Ð?Mcq?MTÙ?M}z?N0–?N°?N¡\?MõC?LÈ!?L ?Lב?M‹?M‹^?M1†?Lµn?LOª?Lo?KÿD?LF?L)F?K¨?K%?Jï±?KP1?K²=?K Å?K؃?K²-?Jù˜?JZ½?Jtå?JžÎ?JN­?Iµ>?I^Ä?Iñ?I¼?Iw?IÂ\?IýÀ?J;›?J2½?J‰?I„a?I -´?HYu?Fð?F·Ä?GØ?Hy?HÇL?HÚí?HÍþ?HÇ ?H¢?H[©?GÙz?G6?Gœß?Gà*?GÙ‰?GŽf?GLp?G8)?GWþ?Gpž?G_c?G?G -(?Gì?FÏ@?FÈ?Fè«?Fíó?FÁ|?F\5?Eßh?EÛe?F+?F|?Eë¬?EØe?Eï?Eé ?Eè?Eó£?Eê£?EÞ?EW?E1Ž?EÁ?ET ?DñÎ?Dú??EÄ?DØt?D”e?D?Cìø?Dc?Dn?DŽe?DWé?DC‰?Dow?Dˆ‡?D^á?Cï'?CÛ4?CÓ^?C±Ø?Cž?Cc‹?Bó"?B_?BNm?Bf9?BHà?B‹š?B“ê?Bjæ?B­X?BÑé?B©C?B\f?Aòâ?A»o?AûÊ?B+§?B(?B=¬?B£Ž?B»?B™½?Bk¡?BCê?AÚÆ?AtÔ?Are?A§?A°?A~Ê?Axã?AÍ1?Aº²?A?@x—?@W$?@JP?@51??ï_??)ƒ?>iò?>§×??˜Ú??Ör??³ ??ç²?@c??¿£ò?>Ǫ?>èÎ?>t™?>D?>ž?>‡?>,'?=É@?=½ ?=é‰?=°?=Fi?=9W?=’9?=˜?=Í?<´?<¢?<©?<ÝÕ?<°0?<,?;åó?;Ûé?;ŽK?;!ß?;?;%»?;zA?;Q)?:Ž˜?:Ik?:m¬?:sb?: Š?9…#?976?9>?9LÑ?9×4?:O?9¿Õ?9$h?8¯½?8«N?8æ&?8¡'?8?8& ?8ks?8'6?7Ð&?7–]?7,x?7m?6÷x?6˜Ý?6w1?6‡æ?6‰’?6{I?6Hü?6h?6â?5üb?5Á?5v)?59L?4øœ?4­l?4j¼?3Bd?.?(¼þ?(Äö?+ì^?.V¬?/þ¬?1d’?28?2 Y?1O?0%h?/b×?/t?.±x?.Šä?.r?.C`?/"Y?.ùJ?/-?/Š[?/p?/£@?/œS?.u˜?.¤æ?.V"?.ç?.¡?.1g?.YA?.ˆø?.\¿?-ñ}?-­Ý?-uP?-‚j?-a9?-¼?-è?-Ù?-Ô?-^î?-7w?,²m?,¼§?,Òä?,–³?,0Î?,!Ÿ?,~?,¿!?,…¦?,,Ñ?+ä³?+ëÇ?+å9?+Úª?+Å‚?+ε?+ÜV?+ÿ»?+èÚ?+žY?+M?+9Þ?+0Â?+Yî?+1ß?*òú?+ «?+"?*Í?* ?*Ñî?*°Ù?*L?)°a?(Å?(B?( 4?)d/?)‚Ñ?)Ñ?)¼?)¹?(ÞJ?(Æ?(Éå?(eã?'šw?'-’?'¼5?'¹_?'2?'d¯?'8?&ö1?'7ù?'LÒ?'}A?'M!?&ÉK?&z%?&w?&Ñi?'AÓ?'iê?'l¿?'!Ø?&þÜ?'\¯?'Pt?'%Ù?'F?&–Ð?%µ¾?$e?#\Ž?#tD?$.¨?$È™?$ûÓ?$–g?$c?$ôH?$ö7?$tu?#‘u?"ËÞ?#¯?#n ?#Dà?#XM?#M#?"0?!VN? Ì÷? ¼½?ÐË?çT?üÔ?&™?ƒ¢?¥?™u? È{?ú>÷UÒ>Õs">º,#>Ñ©ñ>ô•A?¾Î? v2?U`?'Ê?çÿ?„?8Ê?J?Îñ?/M?~Ù?¦‘?í ? dº? Ü? ÌÕ? >? Ž­? Ë? ö0? ìf? ô>? ¿&? ®ß? ö9?!z? ¼v? då? l?ò‚? B? t?°?kf?~~?sq?.Ÿ?-?P?çŒ?õÍ?J?R…??°?`œ?Â?ž??sn?K?6??çh?—`? ?Œ?¥??¥ ?UO?$´?0ƒ?÷÷?§A?–?Â??@ú? ó?/â?j?ßÞ?¬ö?•"??ý?ÿk?÷w?Û?º?j?8³?‡F?Б?(?É?ˆ?‡¢?V?~.?ih?'n?Ø?£Z?&?Ê?ÞM?Ôj?Üë?î? ³?ô?–8?1–?-~?¾w?`e?=Û?‚i?ÔÇ?éÇ?Î?ë?Š?{Þ?Iq?¥?gY? •?¢Ä?… ?i°?Ç'?~E?Ñ?á?Rˆ?IÏ?½?# ?Pñ?\Û?<–? ?Þ:?¹}?óT?Ñà?öÁ?š_?T…?5“?1n?8¡?ì2??»Ù?ÂÏ?Ö?¶D?›œ?©i?Ľ?Ê~?”Ö?F ?#Â??×=?ÈŽ?³D?•]?gZ?98?'å? Ù?ä=?ÊÔ?°?{?n?Tä?;ì?!»?)?ïø?ÖÂ?¸ý?›I?‹r?uù?[?Mï???)³? Ó? å4? Õ”? Îf? ¾)? ª±? ”—? }“? eù? P;? ;F? &7? E? J? óz? à? ̦? ¸Ð? £t? ‹Æ? u£? `ú? C? ¾? _? A? øø? æÞ? Ò†? ¿8? «c? ”D? wB? M¢? ;? ?Ó? .G? J? -ýÔ? -ò‰? -áÁ? -Õi? -Åã? -²Ý? -Ÿ˜? -Œ¬? -x×? -cr? -MT? -8+? -#¢? - w? ìc? ÎØ? ·Á? ¡G? ”W? v? B¨? ~? ‚? Ë?Ùª?Ÿ9?¯Ì?²‹?~:?(-?Ï?ëÍ?§8?б?ܬ?à¨?è³?–(?@È?y…?\?hÇ?sè?²#?ñ?­;?*Ù?D)?;Œ??;?ùž?»û?Á£?¦?¨×?æ°?ôx?¢r?qo?‘µ?ͱ?JÌ?û³?h?À? ?+V?ç¹?ö?ˆ?¬?;®?õÃ?zR?Ó®?ÅÝ?„k?fï?‹ ?dˆ?k”?Æ?N´? "?ÉÕ?Fœ?¾š?¶Ø?x9?\4?~á?Íó??»$?HH?U×?"½?‘"?;q?‰"?ÒD?ÕY?×Z?Ö?Û?}”?mÌ?Ù?Õ¦?íº?Â?×?°?­à?¢ê?x?)q?Zš?“Â?uŠ?I?&Í?c?r?ú?ä8?Ρ?«{?ˆÃ?ˆé?n?RŒ?ÿâp>ÿ¸Ÿ>ÿŒ7>ÿ`Þ>ÿ4“>ÿ Ü>þëK>þÅV>þœ³>þu4>þS¯>þ*–>ýËb>üìõ>ûÞ >û)§>ú½Ö>ú[Ý>ùþ¹>ù¬¯>ùc«>ùF>øÕÉ>øô>øT”>ø,w>÷úÂ>÷ȳ>÷—œ>÷b‘>÷+n>öó±>öµ?>ö}>ö]±>öD>ö9>õòV>õÎ@>õ®!>õx>õHi>õ ¦>ôíë>ô½ >ô“ø>ônB>ôIÁ>ô>óïw>ó¶n>ós¨>óOø>ó1t>ó¥>òÏÖ>òœó>òiÆ>ò=*>òì>ñé_>ñ¾o>ñ“>ñ`¿>ñ3Ò>ñ ¢>ðÞ_>ð¦a>ðië>ð0ø>ïù³>ïÀ×>ï‡Û>ïU(>ïÌ>îØ’>î•s>îR¬>îå>í¤Ï>í7>ìµÚ>ì)œ>ëf×>ê}­>éÏó>éˆH>é\¥>é1z>éš>èî¼>èÔÓ>èÇ>è­ã>è‹ ->èd,>è?>èC>çû>çÜ¥>ç¾5>çš2>çr>çKq>ç'u>ç>æäÃ>æÉ»>æ²#>æ–>æ}”>æhª>æD>æ!">æ×>åãÂ>å§q>å’>åaú>årß>å{I>å::>å$w>äê£>ä– >äUh>äsO>ä-©>ãé#>äQ¶>äÁ>äÞª>ä{©>äîÀ>ä¸Ä>ã"Ž>⊡>ⳬ>âö»>ãâ>ãl^>㉙>â­·>âŽ@>â›×>â?->â_>â;G>áÂQ>á û>á”Î>à)4>à\×>á‘È>áã\>á­>áb5>á…ì>àñf>à>àƒÂ>ß Â>Ýœó>Þf>ߢ>à&„>߈>ßÉ >ßvY>Þ÷ž>ßra>ß•e>ßÕŒ>àmˆ>àTš>à"ö>ߪê>Þݧ>ÞÛ‡>ß1=>ß:d>ß…ê>ÞØt>Ý®^>Ý;¡>ݱ>ÝPb>ݦ¡>Þ1î>ÝïŒ>Ý>݇7>ݯ>ÜéI>Ý{>ÝÛh>Ýã>Ýrí>ÝFZ>Üéò>Ü9ÿ>ÛÞÍ>ÛÉ0>ÜÛ>ÜA³>ÜZ>Û€>ÛU˜>Ûß1>ÜL>Ûè‚>Û¤ó>Û‰@>ÛÃ\>Û·>Û>¤>Úób>ÚlX>Ú;,>Ú^±>ÚEx>Ú™>Ùì>Ù¾T>ÙÐË>ÙÛR>Ù´>Ù’Û>Ù‰’>Ùus>ÙT>Ùâ>ØÉ7>Øta>Ø1à>×ø¿>××>׸>×_ç>×<]>×#z>× -ü>ÖïÑ>ÖÕs>Öºb>Öš9>Ö{Ú>Ö_V>Ö@¨>Ö§>ÕúÏ>ÕÒ>Õ¨ >Õ}v>ÕU>Õ2|>Õð>Ôðå>ÔËb>Ô¢9>Ô^š>Ô>Ó¢(>Óa>Ó<$>Óˆ>ÒòS>ÒÜv>Ò¹->Ò”>ÒpÔ>ÒM´>Ò+ª>Ò Ï>Ñì>ÑÓ¦>Ñ»“>Ñ£ÿ>ÑŠú>Ñn´>ÑO3>Ñ/É>ÑÖ>Ðît>ÐÍ;>Ш£>ÐÉ>ÐY¿>Ð*%>ÐX>Ïò/>ÏÑ,>Ï´B>Ï—{>Ïy>ÏUß>Ï0p>Ï [>Îè>ÎÆA>Î.>Îo÷>ÎBÕ>Îí>Íä>ͯÑ>ÍÍ>Ík`>ÍC¦>Í%->Í ³>ÌéH>ÌÀ;>Ì—ñ>̆à>Ìn>Ì>ËéÆ>ÌÐ>Ì0Ž>Ì=ž>Ìa >Ìdn>Ì6=>Ì ±>Ëå>˼>ˉs>ËNí>Ëcø>ˆ >Ësc>ËeÝ>Ë*“>Êï>ÊÈŒ>Ê° >ʬE>Êp–>Ê!V>É»¼>É"l>ÈÏÿ>È•ù>È_>Ȇ—>ÈÔ¡>È{{>È¡>Æ›G>¾ài>·Ç»>µªZ>¿C>Æßk>ǨÑ>Çsu>ÆV—>Å¡">Å´‚>Å>Å¿É>ÆBÞ>Æ®>>ÇT0>È>Çùe>Ç"»>ÆÓ}>Æ©<>Æ.>Å*">ÄM>Å=•>ÅsÅ>Ä'r>ÃØq>ÃÒý>ÃSt>Ãa2>Ä2ô>ÄcÇ>ÃБ>óª>ÃF³>Â[´>Áóø>ÁhC>Àç>¿wÀ>¿i>Àî>Àk?>Às'>ÀV^>Àsª>ÀÀ>À­0>Â/x>Â6>À‹>¿4°>¾yµ>¾’‰>¼íl>¼0(>¼ß–>»ÓQ>¼¾ð>¼ä;>»Õ<>½>ú>½îª>¼©v>¼w–>¼ƒÎ>»l'>¹§>·Áœ>ºò">»Ê>·÷©>¸'ª>»Ú”>»Òû>¸˜>¹MÖ>¼‘j>¼ã0>º7>¸‹ >·²ë>¶s°>¸nÚ>·¹&>¸A>¶aÿ>·ñ>¹rÁ>ºy$>»ç„>»ÔÏ>»–o>»ÎE>»C >º±¤>¸Ú¾>·¥Í>·èd>·¥Z>·8;>·à3>¶:H>´ƒp>²Üv>²É>·"Ö>¸¦U>·á>·Ùƒ>·äJ>·üÅ>¸ž>·‡ø>¶þ›>¶›û>µÂ_>µ³Ç>¶œ›>·zá>·ƒš>·£Ì>·ÛÚ>·°œ>´8>±eþ>³>9>µ¢…>µ1–>³-J>¶i>¶†‚>³Í>µ,ü>¶i£>µhþ>³þS>²`à>°¹$>±?t>±î>³ÉÉ>¶>´m>²Ï1>³Ø£>³¡ >²gÿ>±•6>°œ>±hÉ>³>³o·>³»>³œè>´b>³>q>²8>±#>±W“>±È†>²«²>²åÆ>²Yä>²r”>²1 >±XN>°Ì>°“î>±Ñ>°üh>°'>°Ew>°~¹>°YÝ>°'!>¯Øö>¯·E>¯§>¯µ:>¯¦K>¯)>¯v>¯aâ>¯L_>¯4^>¯U>¯ø>®æ5>®Ðë>®¾,>®¬b>®œ­>®‰¨>®pí>®[k>®DÑ>®)Ñ>®>­õ¯>­Ú¿>­½Í>­¢ò>­Žw>­u0>­S_>­3|>­é>¬ús>¬ÔŒ>¬°½>¬f>¬”²>¬|ì>¬Uq>¬3Ÿ>¬²>¬ >«ô >«Ï>« 3>«€m>«oK>«aˆ>«H>«{>ªñ‘>ªÎá>ªÃ½>ª»>ªª<>ª“ >ªoŸ>ª/>©ë¢>©ï|>ªÕ>©ú6>©ée>©Äâ>©WÈ>¨Ù>¨Ø*>¨ö¯>¨æp>¨½_>¨ÖÈ>¨âq>¨±,>¨tœ>¨B>§ˆx>§>}>§Ñ’>§î>§Ë¢>§«,>§¶ù>§r>§rð>§rs>§M†>§PF>§H¤>§Fs>§[>§3æ>¦ÐB>¦Ñ*>¦²û>¦v?>¦Xt>¦ƒ¶>¦O†>¦D6>¦’³>¦t®>¦¤X>¦k°>¦%`>¦ZN>¥éÃ>¥Úð>¦‘>¥Õ>¥K>¥«w>¦V‡>¥]¦>£©¿>¤yr>¦5 >¥6Þ>¢óM>£ÏO>¦¤5>§y¢>¤!>Ÿö1>¢s>¦øÅ>§”»>¤×Ž>žò¦>ž"x>¤ª#>¨z‡>§ø~>¤Œ>œÓB>šIR>¡1‹>§¤î>ª*/>¨3R>¢0o>—äþ>•>>žÄì>§Ú”>«Ê&>«Nô>§öÒ> p>”Ú#>]…>™öö>¤d„>«EX>®D>­>Ÿ>©!> 2Å>’–¢>‰I>‘S>Ÿ¯’>©4^>­Ù>¯ª¦>®©d>ªË¦>¤$g>™”@>Šw?>‚ƒÂ>Ž—é>ÜD>¨A§>¯‚¸>²Û4>³ÍM>²§ã>¯ ý>©¥¦> 3>’aŽ>™©>Œ>ƒr>of>ž3ñ>–Í—>© Œ>²› ->´¥š>´1>±X÷>¬gi>¥Zr>›š÷>,>uí}>p®š>‰Ò>š¡>¤qž>«.Ð>¯•°>²ÈF>´çÆ>µ|‚>´ª>³ªã>²±>¯_Ë>ªÁ´>£µ$>–Ö8>‰ u>oâz>dô¶>ƒrQ>” Ó>ž3¹>¥$Ä>ª»º>® -›>¯˜É>°FÈ>°ž‚>±y>±VÕ>±G>°¬ˆ>°-c>­á>ªœ>>¦(ó>ž¼>ÒÑ>w¿>Z-;>\Ô†>7B>ãd>šßÆ>¡ÌB>¦~ñ>©ªš>¬C>­Ü„>®ú£>¯f%>¯# >¯«ü>¯Yç>®¶>­ù¾>¬½Œ>«-–>©º€>¨A}>¦»e>£ÅÎ>žÙÍ>—:>‹¤>vLÀ>R¢Â>ZK®>€£Ï>t1>™Å…> L>£þÛ>¥Ç§>§N ->¨+ÿ>¨=d>¨SX>¨ýÄ>¨ðç>¨Û>¨æ0>§Zâ>¨iã>©¾Í>ª3>©·>¨´/>©"%>¨v‚>§sG>§< >¥Ü:>£êQ>¡Ï>2>–ÿƒ>‰$>y@(>SY)>C/>a˜Ý>ƒ‡Ñ>Ë ->—°é>K–>Ÿ¼:>žù>µ>ŸfÁ>¡+1>£.D>¤¹[>¤Ù.>¤óµ>¥Iæ>¥þ>¥ÿÈ>¥5>£¾æ>¥;¦>¦E>¥y…>£ª„>¤Sf>¥G±>¤®¤>£ôË>¤Ó/>¤°‹>¤7˜>£w×>¢á%>¢3¼>¡>/>Ÿ·H>žQ¾>›»l>—•ß>‘,>>‡]>oa,>H¸>FT~>lÏ‹>†V>?f>–Õf>šþw>œä>žê$>Ÿül> ¶¾>¡Z>¡7>¡ƒ>¡ö€>¡Áö>¡pì>¡‘º>¢.>¡™> ˜> FV> <“> ›Þ> ´À>Ÿ«ù>Ÿ$\>Ÿb>ŸV2>ž×x>žÀí>Ÿ;¿>Ÿ’>žµ>žG‚>šè>—j>ʲ>·{>“Š>â‚>„Ï>!ó>œŠ”>œ\¢>›³ï>šþ>™Ñ >˜ ›>–e>“ ï>ŽÝ>‰8>‚8>p ú>Tò@>En‡>YU>r[¹>‚J>ˆD@>ŒÊÐ>òý>’z¶>”¾‹>–mØ>—šQ>˜ˆ¨>™rŒ>š¥>š}>›û>›{W>›çU>œI\>œ… >œ¢/>œ³ª>œÁ>œå>œ(Ñ>œ>œ²>œªn>œšþ>œ‰5>œN–>›vr>›™Ê>œ!×>œQ>›õ|>›Ù±>›ÀY>›¡a>›€s>›]:>›9©>›«>šïˆ>šÆþ>šž%>šr­>šD{>šJ>™Þ&>™¥þ>™l]>™,Š>˜æu>˜˜ô>˜A%>—à†>—sk>–õû>–eó>•º3>”ë[>“ò>’Èx>‘T¾>‚y>8>ŠV&>†¸¢>‚>ø>y£M>l»3>]Š>LŠÄ>EýÙ>S'ù>c@*>pâ ->|\˜>‚ëÝ>†½8>‰Åå>Œ(v>þM>h'>€í>‘Zd>’!>’z¥>’Øý>“+>“fÅ>“œÄ>“¾Ô>“Ó©>“°ç>“¼>“O•>“â‚>“ê‚>“Ös>“Î1>“µ+>“t–>“0>“a¾>“Š>“l•>“:]>’Í>’ók>’¬N>‘aé>’È>’¹´>’›ì>’€z>’qA>’W>’h>‘ˆî>‘¬S>‘ÞE>‘Æ)>‘¦k>‘]Þ>‘<$>‘Hä>‘/Û>ý>­R>¼‰>´§>”Ú>r>Re>1£>ú>î0>ʧ>¤m>rÇ>U‘>5ƒ>z>Žën>ŽÁõ>Ž—>Žg@>Ž3æ>Ü'>r‹>E\>BP>a>ŒÎ>ŒYì>Œ.r>‹åÅ>‹{o>Šõ>ŠdÐ>‰Ë>ˆÓÃ>‡•m>†Ò8>…™§>ƒÞŠ>¦±>~…>ue´>l >d³p>Yì>Jñ>;p>5ç>C-*>Qûÿ>^r–>hì½>qƒ~>w -z>z;Ë>€‘›>‚¯“>ƒèì>„ëŽ>…Âà>†TŽ>…Ïœ>„i>„¬,>„Ô€>†ÐS>‡ü>ˆc>ˆ)9>ˆ<Ž>ˆC>ˆC>ˆ:/>ˆ,©>ˆ&²>ˆ^>ˆË>‡üz>‡Þ#>‡ÉÍ>‡Èf>‡«Ò>‡ŽÉ>‡ŠA>‡x˜>‡b@>‡JÇ>‡2Û>‡>‡ø>†ê>†Ía>†¥[>†…´>†ƒ#>†nq>†UE>†:]>†K>…÷0>…é5>…ÓÓ>…¹Ç>…Ÿ\>…„í>…jT>…NÎ>…3T>…—>„ÿX>„ä>„Èw>„®a>„’ø>„t¢>„Y/>„>d>„%Ï>„ d>ƒéÛ>ƒª6>ƒš>ƒ‰¨>ƒ. >ƒC>ƒKG>ƒ0Þ>ƒY>‚´H>±Ô>‚>>‚‰?>Ú¯>äR>‚7>‚)é>‚H>üs>âI>ªJ>„E>†«>p >O!>2‹>>€ÿ5>€àQ>€Ã>€©>€Œç>€oJ>€Q[>€24>€ i>ÜP>¡Š>e}>*¹>~êœ>~§í>~c~>~m>}Óe>}n‰>}?>|éý>|šD>|?¢>{×\>{sL>{ —>z™M>z'8>y¢m>y$>xSl>w™i>vȶ>uÌÌ>t Ò>s;W>q;>o€c>lù­>iר>eïŒ>a„>Zèÿ>S\Å>Jf>>áP>1je>#˜>&¶>4rt>@Ð|>Kô>Sx>Z6—>_Œ¹>c¾‘>gª>i•ÿ>k’M>mÅ>nKº>oCÁ>oþŸ>p>pýt>qQ>q}>q¸´>q×q>qðD>qòÈ>qêò>qäm>q²Ú>q´u>q¾ñ>qª$>qŒC>qu¯>qPV>q -É>pk%>pŽI>pÃW>pŸÔ>p41>mõÀ>n;ó>oÕ´>oÓs>o©>o}e>oQ8>o#2>níG>nÃa>nš4>nD’>m[Â>m‘Å>mÚ@>m²u>m†‹>mSÚ>m=>löŠ>lÊO>l’>lS>l1j>l :>kÙæ>kªp>ktO>kEŒ>k!>jè’>j¾L>jŽ¿>j^§>j.²>iþî>iÎõ>iž’>imÛ>i<À>i m>hÞ.>h®^>hxi>hGÔ>h[>gîÊ>gºõ>g„g>gV>g%ü>fûc>fÏ#>fŸ‚>fo²>f?ô>f.>eàY>e°š>e€µ>eOà>eð>dðä>dÁ×>d‘°>d^ê>d1>d >cÑ>c l>ciÚ>c*>bû>bÞ>b¯Î>bs>bS>b(>a÷É>aÃ>a‹$>aWÓ>a3>a “>`ÝZ>`©`>`fõ>`¤>` M>_Õá>_­>_†>_[f>_%>^ß–>^Û>^ŸŒ>^pv>^<‹>^>]Ì>]£Ÿ>]x >]F>]!>\õª>\¸™>\N>\f>\B>\L>[Ø>[§d>[€>[5©>Zt6>Zc6>Z¹Ô>Z–·>Z^$>Z4a>Z Ì>Yà|>Y‰>Ycœ>YTb>Y# >Xöa>XÌý>X›Ù>Xg`>X$¿>WôŸ>W¬&>W>>W~¬>WO¤>W}>Vâ~>VµI>VkÙ>V;¯>V"I>UõÌ>U¾‘>UŽ•>U]˜>U%_>TíÂ>T½™>TˆV>TP¡>Të>SÚû>S¡W>Scy>S#>Rá[>RŸQ>RX¢>R >Q«À>Q»>Pð“>P¬n>PAí>OÎA>OJ(>N²ò>N&>M={>LPx>K=>>Iò›>H`:>Frç>Dî>A´>=g%>8Ì>3Å>,™>#¤1>DP> €û> ¤>PI>!£Ù>)ís>0¶–>61Õ>:;>>¥>@µÍ>BѬ>Dt">E¬ñ>F±û>GÊ>H¼>H’.>Hì×>I1J>Icå>Iˆ>I Ž>I¯<>I´>I£—>I‹?>IlD>Ib">I,>IÁ>IS“>IA%>Hêg>H´n>Hàk>HÉN>H¯®>H‘T>Hp>HNn>H+ >HÈ>GÝ=>GµŽ>Gš>GtZ>GIœ>G)>Gô>FÛQ>F«ö>F>Fjª>F@…>Fþ>EóV>EÌæ>E¦>E{x>ETþ>E)¢>Eœ>Dà>D¸>D>Dh!>D@¶>Dë>Cðâ>Cȸ>C >>CxR>CO{>C'•>Bÿû>B×H>B¯Ž>B‡P>B_C>B7>B p>Aä±>A½ß>A•˜>Af4>A>D>A>@ö…>@Íø>@£4>@|å>@VS>@.X>@c>?Þe>?¶o>?ŽT>?eç>?>…>?Ò>>îû>>Ç!>>ža>>tj>>N>>'÷>>Y>=Ø¢>=°û>=‰X>=a²>=9ø>= ><ê‰><Ãa><›><$á>;þ>;ÏÇ>;ŽB>;z>;`…>;9Å>;K>:êÊ>:Ä>:œô>:u¦>:NÀ>:'Ô>:>9Ö>9©;>9{ù>9Zi>9:U>9K>8í4>8Ç>8¢q>8{Í>8U#>8.›>8³>7ÒË>7´Q>7”>7m>7D§>7š>6ø“>6Ð>6¬ >6†×>6`­>6:,>6|>5íR>5Æ™>5 œ>5{6>5U!>5.ö>5¹>4âÖ>4¼á>4–§>4oø>4Iý>4 ù>3æî>3µ>3œ>3Ô>3cŒ>3Ad>3ó>2ï(>2Î~>2ªÞ>2…¥>2_:>2:'>2Ù>1ì«>1Å>1¢\>1À>1Y >1¢>0ê¨>0áõ>0´M>0˜?>0sÑ>0LÞ>0.W>0/>/Ò>/ºí>/™>/w(>/Q‰>/)Ô>/€>.ø>. ó>.–M>.lž>.CŒ>.  >.}>-á¶>-¹]>-—‰>-r&>-O'>-+¼>-â>,ß·>,»ª>,˜Î>,t°>,M¾>, >,>>+â~>+¹ð>+—ú>+o>+Qf>++L>+*>*æ>*Ã>*žú>*zø>*Vý>*2ä>*(>)éÉ>)á>)Ÿ<>)}>)V³>)7j>)T>(ðm>(Ëj>(¨p>(…œ>(`²>(8·>(->'õ>'Ë >'ª§>'‹µ>'iG>'F>'Ñ>&º”>&¾S>&ŠT>%P>%i=>&þ>$Çé>$Áx>%Ѭ>%Á>%¥>%zà>%<³>$®>$ö>$ë]>$È“>$§s>$…q>$cw>$?v>#ý’>#‰‡>#¼N>#³ß>#‘ã>#o>#Kó>#(±>#6>"Ùy>"§4>"r¦>"t=>"Uç>"4¸>"ˆ>!ï7>!ÌX>!©­>!†ß>!cù>!A>!¢> ùˆ> ÎÁ> ²’> ’Ð> o> L8> )\> />ã ->¿¢>˜ã>o>Sq>1a> *>è}>ÂG>x¤>ÿR>y®>n> á>ç¤>Á$>˜Ð>s9>LÊ>% >üj>Òü>¨>nµ>@><>Ùð>²•>Ê>Y> >ãH> ]>Z2>²>¼é>`>÷‰>€”>÷â>Xe>œ>º¸>[ô>9 >׈>Âõ> Q> -?f>se>̯=øVŽ=êv)=Öü¾=Ó§ñ=æÍm=ôÛŽ=ÿï>Uç>Z:> -áR> cò>3>›š>²×>Œß>7>º>Ð>k>¢Â>ÎŽ>ï©>â>V>O>>Æ>k> -Õ>þ–>ð>ßž>Í>³>“>Š^>x•>a>HÇ>/Û>a>üa>áê>Æ’>«ž>•>tÂ>Xa><¨> $>š>ç>Éõ>­A>;>s>UÇ>8S>¼>ýV>߬>Â@>¤{>„B>d§>J“>-™>Ã>ñØ>Ó¨>µâ>—½>z>\Z>>m>À>ö9>ÚÐ>Ä´>§€>‰>lH>NÞ>0ˆ>(>ô¢>Öò>¹>›l>}>_³>@±> ½>¿> èd> ʘ> ¬Ê> Ž> nè> RP> 2@> s> úM> ܤ> ½> Ÿq> ƒ > f'> H³> +&> > ïT> Òw> µ-> —ª> ym> Z…> ?> !ý> <> -æ¤> -Éå> -¬e> -ŽP> -pb> -Si> -.é> -k> ö¹> ߇> Â> ¢Ê> ˆ:> k¿> N¸> 1³> ®>ô,>ÔR>˜¬>_>gÀ>õN>¦>Îù>[š>ؼ>Õô>´v>•Á>}™>cÜ>Fz>(> ø>®«>{q>²x>˜‘>>c>F >)õ> Ö>ñj>Ò_>²ð>›Ü>€>b³>Fe>)ý>s>ë¨>Ö->¸(>™M>1>aÐ>F?>-ã>½>óÈ>Õ­>·W>žš>†.>gz>F©>1O>Û>úù>ßU>Ã)>§Q>ŒP>p¬>Tô>8ü><>òÃ>ÝH>Ê,>¯‰>”>x‡>]>A¨>&>> -×>ïw>ÓÀ>¸@>r>‚!>e©>Jù>0y>5=ÿóÛ=ÿ½Ä=ÿ‡=ÿQ=ÿ=þå=þ®î=þxÎ=þB=þ Š=ýÖˆ=ý¡=ýkI=ý5•=üÿX=üȃ=ü’ç=ü^v=ü'ú=ûóv=û¾9=ûˆ‹=ûQ#=û·=úè­=ú²0=úv\=úFú=úÕ=ùÞÎ=ù©±=ùt§=ù?Q=ù)=øÕ6=ø g=økw=ø6à=÷ôÂ=÷$=÷‹£=÷dN=÷/=öù<=öÆW=öˆ±=öë=öY=õï¸=õS=õeŠ=õW¼=õ%8=ôðÔ=ô¼=ôˆå=ôPc=ô–=óàš=ó«°=ó^Ž=òÃW=ó†=òê=ò—·=ò:ê=ò=Š=ò¨=ñèp=ñµ=ñ‚ =ñN¿=ñü=ðçë=ðµ=ðà=ðN™=ð=ïèž=ïµ—=ï‚=ï;ã=ï=îé=î·0=îƒö=îLÍ=îK=íìK=í¹=í‡=íT=í!™=ì¯=뻯=ëÇþ=êO=ëuÉ=ëñ“=ëÀØ=ë•=ë\Ž=ë*ˆ=êù#=ê»Ü=ê|m=êaÙ=ê1ˆ=éþò=éÆ€=é–¨=éjÍ=é8ò=èú’=èÌ{=褛=èsC=èAy=è@=çÞi=窲=ç{»=çJL=ç ƒ=æÝÒ=æ·o=æ}„=å¹I=åÇù=åñö=å½£=å•=å^F=å.¬=äþ¸=äÌc=äŒY=äg¶=ä;ø=ä ×=ãÛ=㤩=ãci=ãA]=ãµ=âé4=â±Â=âN¼=áù"=âl=á÷I=áÇÎ=á—µ=ágì=á7é=áí=àØ=à¨*=àx[=àH—=àÒ=ßé=ß¹=߈ =ßZ=ß*|=Þú°=Þ¨!?Ät?º"?Á¸b?«?ÃGé?Äo,?Ä°†?Ä¥?Ãe?Â8\?Á“†?Àà±?¿ãý?¾ÓO?¾7}?¾}†?¿‘ö?À³?Á¿?Àð?ÁV-?´L?ÄYñ?Åy?Åô¨?Æ'H?ÆfÏ?ƽô?Æát?ÆHT?Äuž?Á„i?¾.?½+?¾¤?À–7?æ?Ä‹Ø?Äùç?ĶÝ?Ãò¸?ÂÑÁ?ÁÓ¦?Á¢r?ÂZ‡?Ãd?Ä!Æ?Äz‘?IJ?Äùû?ÅB|?ÅX:?Äù ?þ’?ÁR?¾Ì?»u{?º™?»xô?¼Ä -?¼Ñ§?ºÈ#?·Y?µµÎ?¶ƒ'?¸©á?¹™?¸X‚?·Cß?¸† ?»ä¿?¿È?À;?¿ ¢?¼\?¹fS?¶þ´?µ&…?³°Ò?³C1?´Ã«?·Õ?º÷j?½ö?¾<?¾`+?½„(?¼A”?»¹à?¼W†?½8¿?½-D?»ô%?ºUœ?¹4Ã?¸¶%?¸-®?¶Ôe?´à-?³¢r?´²?µùÌ?¸gÐ?ºµÒ?¼H¾?¼`?º²³?¸l]?·¥i?¹a?ºû«?»dv?º5Ò?¸ÑC?·õ3?·*ú?¶(&?µ}I?µÇq?· F?¸µŸ?¹å ?¹öX?¹b??¹…–?»'?½O}?¾ô?¿Ž1?¿o^?¾û£?¾R~?½ih?¼<5?» ?ºX™?º^¿?º‹¡?º?°ºÍ?°üN?±vù?²31?²À`?²»z?²ÿ?±'?¯Þî?®ó¤?®‹ñ?®û¥?°H:?±¿å?²Ss?±C»?®Œ­?«S„?©Ÿ®?ªšÜ?­A¢?¯vu?¯øÀ?¯À?­ï[?­´Ž?®•C?¯ß4?°Åš?°÷˜?°lÆ?¯1I?­¨í?¬–?¬?­|ï?®´?¯»a?°•n?±)Ã?°ó:?¯©¼?­ù?­­?­…û?®¼Ð?¯ø!?°ÁË?°ÏU?¯îÅ?®j?«Æm?ªÞ?ª4K?«íã?­¢Ì?®(?­áq?­ÞÞ?®€‡?¯QZ?¯Ë?¯Æ¤?¯i7?®óE?®|?­Ù&?­ „?¬™ø?¬Øê?­]?­£?­Í?®O·?®ÝÝ?®¶Q?­F‰?ª´ž?¨?‡?§†e?¨Ö´?ªÍ -?«ìŒ?«õJ?«„Q?«±?«š?«?Ä?«rŸ?«(ù?ªÉc?«e?«Öî?«îÂ?ªõg?©ÕR?©¬U?ªLŠ?ªA°?¨}û?¥­Ð?£o?¢…Þ?¢Ñy?¤d…?§!Ã?ªH?«êÐ?¬?ªb¹?©¦¯?§Fã?£˜Z?Ÿð>?ž8í?ŸA¸?¡¨—?£•g?¤í—?¦†­?¨MÏ?©r?©ƒø?¨Ùê?¨B»?¨W“?¨ð¥?©eu?©0%?¨0š?¦Å?¥Ò·?¦?§:Ã?¨WQ?¨«Á?¨B:?§Î,?§ðû?¨Š?¨ñ‰?¨£å?§™ -?¦aÄ?¥â?¦uÛ?§z?§óÀ?§[«?¥¸x?£ª}?¢|ß?£.7?¥5¹?§?¨?¨¬?§ˆî?¦Öü?¦‚‚?¦¿¶?§?Ý?§‘ý?§tã?¦³I?¥Û?¢¾ ? ½Ý? -Ø?¡T‘?£t°?¥cÚ?¦|ü?¦ñE?§*5?§OÜ?§dÉ?§lj?§ai?§+Ä?¦­i?¥íÞ?¥H?¥15?¥­?¦Eø?¦›@?¦ª?¦’ì?¦T?tò×?uЧ?s7×?nfæ?koy?lKb?oØP?toF?z¦>?‚gâ?‰à?Žg?D¾?Ö?Éò?“–D?—¥ ?›\y?[Œ?²s?Šl?$k?›.?–Ã[?‘oõ?É?‹YŽ?Š}@?‹%?Œs5?‹£[?‡•’?ƒIÒ?‚í?…ÂC?‰êb?‹ð?ŒÅ?EŒ?pZ?’ò^?‘|5?‹Mš?ƒw-?}æ‹?€P*?…ìJ?Œƒ¬?‘|?“ȧ?”ýì?˜!?R?¡,?¢Áo?¡$=?œŒ?”A?‰œ‘?‚»n?‚[¥?…ðé?‰¡"?ŒŠ‰?d ?’6ý?•(¶?˜ª??œE?Ì;?=?š¢õ?—¯Œ?”Ãy?‘Þ?Ž}©?Œ\\?Š?ˆN«?‡?û?ˆ›ƒ?‹×¥?Ž?”¸Ô?™?›Í0?œú‡?›´?žÐá? ×8?£[?¤Æ?¤Á?£—ð?¢F? XF?ëœ?›ÖÒ?›¡N?œõõ?ê…?³o?œMò?™eÏ?–›±?–ÿß?šé’?ŸMr?¡U?¡RÍ?¡1¢? ¢ß?¨Ï?˜«]?”dN?’6?‘„?’Û¾?•üL?™HŒ?›Z ?›#¥?—È{?’J?WÞ?‹dy?´Â?“†F?šuR? c’?£ò?¤@Þ?¢·?Ÿ…Q?Ò]?›ÿé?š¥}?œÃÚ?£¤ë?¬,ç?±zV?±?«dò?¡ã?–¦L?kò?ŠW?'?“l?—é2?˜˜Ï?—5O?– %?–Wª?™*“? ¡Æ?«Ûã?¶O>?¼ÀÏ?¿Ÿ?¾Xx?¶–?¦ÿ?’xÚ?üL?r?–?t=?„ï#?•ì?§´G?µb^?»„=?»áß?¼rˆ?¾;¬?»ÓI?±ýo?¢hÔ?½Ä?z†ô?_Ýï?X·?d—ð?€k¿?“Åþ?©v>?½¢¾?ÌÃÆ?ÔHü?ÓÃð?Ͷd?Åá?ºÒ ?®¤?¡Ÿ†?“ã‡?„VÁ?kÍh?_@–?ký?„â?—¹â?ª¸s?¼Þ3?˦Ý?Ó=?Ò­ò?Î2Ô?Ìu?з?ØZ…?ÞdŠ?ßÀ?Ü6Z?Ö)?Ð-?È~?»À:?¬Jü?Ÿ¢Í?–žb?Žãí?Š#p?Œý¡?—ÊC?¥ïÊ?³‚?Àb¿?Ížj?ÛL0?è[?ôËI@ª{@Yj@ -X@ Ã>@Ÿy@¨@æ@@ ¸¹@ˆ@m€?û¹?ò^?éqù?âÏÿ?Ûðò?ÑDR? ?ˆ‘£?™ý?¬S™?»­U?Ç#E?ÐkN?ÚÊŒ?ç)¤?ò=?ù”P@Ž@}@ x{@ íü@žÑ@¡Ð@ý@Žõ@w@Ä:@aö@"¿@$ï@&—@&^ì@%¦r@$°L@$B1@$Š@$õ@#îÂ@#f°@" x@ ![@̳@@ €Ë@!Í‹@!Ìš@ö @¶@Ÿ<@)@ÞÍ@@?ÿ‡?é(-?ÓÁ?Ç.ó?Ì‹v?àVà?ø]Q@7•@ pÉ@˜œ@õ@²€@Çb@Íñ@×ü@r—@Êc@­¡@Zs@§@ÜÐ@¿ @‹›@41@ÉB@[ @"ð@UL@ ÁU@ å@À“@†z?úŽ?èD¸?Õ@%?Ås³?·zc?§ÓF?•ð?€ˆ??Xãà?7¿¬?$­F?$¸´?6ô.?U:0?xî"?2Ü?¢=µ?´«í?Ŷö?Ö$Ú?æ2?õ¤W@¯T@,¡@77@‘‘@ O@‚±@Œl@¬@r@õM@²@ p@ çh@"ù@$O±@$‡@#À¢@"Dõ@ äp@!%@#éÁ@(+?@*ëG@+„â@+yS@*–>@'2‚@"T@Îì@ ÿ!@#¬@&@)A>@*Ë`@*Ùj@*@*»@+f§@,lü@,ò@,‚@,tô@-Ä@.TJ@-–@,ª@*|‚@(Û@'o—@'Ž@)y;@+áÀ@-;¤@+Ûñ@'Y -@"V@¢þ@:—@ Y(@"íÿ@&¹@*Ük@-ô«@.ݨ@-Žl@+m˜@*uX@*¬@(«f@"ÊR@sP@ûÊ@@Ø@!ò³@&¶Ñ@(oÕ@(°Î@'Ì×@%¦‡@# Ð@ ´ã@¥@t£@@ÏR@2Ë@!ò&@#O€@ ›£@š©@á—@3Y@@n@)€@ê@ Ë@âÑ@¼·@&@¤Š@¹@L@”Í@€@ Äg@ è@íQ@ÈÈ@#Q@ÇŒ@ÿ@Uë@ðz@ @˜~@@m@9Ž@ 2î@#@«ü?ü¸¢?ôuô?é?ÙÜ7?Ët?Àc}?¶2d?©)”?˜¨?‰Õa?…у?Ž9(?."?­¦#?½b”?ÊgK?Óü?Ú³¦?ßÝ?åÍY?î 7?ø;Ï@QÛ@•ü@²Ó@ -²·@ C@ òq@ o­@ w@ 9@Uá@óm@I“@þE@_W@öˆ@\@ ÁŽ@ @@ å;@ #'@ š–@ —`@K@>û@°£@,Q@T@u?@Ò)@ž“@§O@3³@ '@J@B¦@ñH@­ë@ÄÆ@ï±@³b@Ó@Àî@†f@µn@ºv@,@+]@ì‚@ië@Ö@1«@e @Ý@s @ û@™ @ZG@0r@zÀ@.¨@^z@ ì¸@ WŠ@î@ ºO@ Ïw@ àû@ -:É@ %‡@ ÒC@ =†@ ‰‰@ ÷q@÷@x@/@(ø@Y -@[¤@ÿ|@Ÿ@à%@ "@“@é@‰ê@ †@ -•$@ Ü:@ -Æ£@ Né@ ï@ ;Ñ@ ›@ }(@_È@N@‰ @X~@ß¹@ º@4@w@&{@Sv@"@ -%ù@ -¿@Œ@ÌÆ@%?@w§@Æ—@þ“@Þ9@£6@ -uì@Ì°@²±@IÍ@˜Ã@Úú@ Ã@ak@Ž}@Ž†@®@ò‹@KL@ôF@.E@g~@:þ@ ö@„‘@æh@R|@ƒº@ïU@5Ã@h4@ á@ {u@ úV@mû@‡@·@”©@ Ã@êT@º›@ µ@ó4@_ß@ 6†@û*@,Q@E@Âi@îv@nI@­ª@ l@‹`@×k@Gà@Š­@·Á@ -$A@¢­@ï@B0@‹ê@ Ûª@ §ä@ š@ Õ×@ |Y@ -iÓ@ rý@æ«@d@°L@ƒû@!·@ýì@ •8@?@C@<œ@%&?ù1Õ?ï‚È?ê’O?ëP?ìž_?î9u?ðnj?ña¨?ï‹?ê±:?æ<‹?æª?êû ?ïn5?òÁº?ö??û@þø@ ~ @ S²@ H%@ ì@ãß@”@~#?óÃð?ãâ^?ؼ‹?Øîê?äê?ïЖ?ò#y?ëxÆ?ã¡ž?Þ^M?ÙíÊ?ÕÆð?Ïç‚?ÂMâ?¬k¤?–œå?†O??{Ür?ƒª?’ã›?¢n?¯5Y?¼¹?ÆfÇ?Íæ{?Öâæ?Þƒd?ÝÀ?ÔéÕ?Ò™þ?Û~K?ç˜Ë?ð¢N?÷®ÿ?û¹W?úŽ+?ù­?ý²x@ÚÔ@,^@ß@¦Ï@½•@š@»@»³@?@‡@‡@“@x?ù?÷¸ý?þ:@üñ@©¼@Ÿf@æ­@'?òÞ¢?à b?Ùä7?âîa?ðåÚ?øÞc?ú.}?øq)?öÞ‰?øD?û!ˆ?û'ý?øÖ°?ú @Nï@Î@Ÿõ?üW ?øID?ûœé?ÿÊ?øþ?ïâÃ?ïÌZ?ôûA?ö s?÷—F?ý?*@Y£@·@›ð@à?ömy?ð€ï?ò|?øtå?ÿº¶@ZJ@ÜC?þj«?úô`?üo#?ÿ^¡@Ò?ÿ¶r?ÿ;\?ý$c?ùNè?øq¾?ù×]?÷¦?òJ?îÑô?ò9?ûC@i^@Yô?ÿ“†?ö­?ï*?í,?ñÔe?ùw?ýµë?þŽ-?þÏþ?üôv?úr?ùQì?ø’˜?ô@ˆ?í·s?éùe?ꌭ?ëy?êµ?é3–?æý·?æ¡?êË?ï–?ñL?ðü?î:r?ë²é?éÿ?è¹?ëàÀ?ñ>/?÷*}?ûCÿ?ü¹W?þÕ?ÿ î?ú²–??á<´?ÚÅ_?Þê7?êI#?õK?Þ¾Ø?Ú°¤?ÚR?âÁ?ë¹?íOJ?éC ?ä¸e?ãÅO?åÅ?æcw?ä (?ãs¹?â²Ì?ß|t?Ú -?Ø -ò?Úþœ?Ý+?Ûå?Ùg‡?Ù -W?Ü­?â`™?æ9†?çÁf?èxž?èÉË?æ*?ßÙ©?Úv¸?Û#?áŸk?ç»Ú?éG°?æ´„?á‹ã?ß_?âë³?åز?å‡%?å ^?äbz?áWÓ?Ûò¨?×U?Õãu?ÕúI?Õѱ?Ö™¨?Øš©?Ûíþ?àA ?ã#™?â–?Þö?ÛE”?Ú Ð?ÙèÑ?ÙUy?Ùuø?Úì ?Üãú?Ý Á?ÛÀ?ÜGÝ?ÝÝ??Þ-?Ýc?Ý™±?áFZ?æx ?éœl?èc4?äªÑ?áÎU?àÊ ?á·î?â¿î?âte?á•ü?ßÆU?ß?áYÇ?ãQ`?ã»?ä;?ã–Æ?âkî?áß?àÌæ?ßZP?à@ø?â8?àßg?݉S?ܪ?Ûɼ?ÚÅì?ÙVe?Ùç?Ú"ú?ÜÝÏ?Þûø?Ýß?Ú|Ç?Öq?Ñ2ë?Ï?Ñ36?Ö—?Úì¶?Ýæ[?Þ`É?Ûh‹?Öåý?ÔîN?×c„?Ýv%?âõc?ã ?ßp›?ÙÌw?Ö'›?Ô5m?Ïå?È[s?ÅI÷?Érh?І*?Ö.€?Øoz?Ø"½?ØnS?Úï:?݇-?Ü‚?ØZß?Ô„v?Ò¼e?Ó¶å?×6i?Ú‡½?Û„Ý?ÚÔ?Ù$°?ׇ`?ÖÕ?Ö|?Õ1‹?Õž€?Öþ°?Ù_?Û -ß?Ùç*?Õ'Þ?Ñ B?ÐA?Ï•’?ÍÚ?Íö?Ï,2?Ñ‚©?ÐËñ?Î!`?̶l?ÎXo?ÑÐœ?Ón ?ÑÁ?ÏA“?Ïÿ)?Ô1ü?×îD?Ùùõ?Ûï?Ú—­?ØîÇ?×á?؉¦?ØÍi?Õ^›?ΕÓ?É#p?Çqª?È-?Ê|?Íj‰?Ï%?Ð1?οŽ?͆Ž?Ï1ò?Ð`v?Ï"ö?ÎÈ_?в“?Ò5ß?Ñ°‰?Ñ’Q?ÒÂò?ÒØD?Ò‹?ÑXå?Ïê™?ͪ…?ˉ?ɪ¹?ȶ™?É0ó?ÊÉß?̈ª?̵µ?ɤÙ?Äõ0?ÁÁô?¿Ì,?¾ž{?À ?Ãì¥?È2?Êv×?Éwí?ÇaÚ?È?Ë -£?Íl?Íî‚?Ï ?Îé˜?Í`Å?Ì:É?ÊõÐ?Èîê?È Y?Çå?Ä^•?ÃAƒ?ÃgJ?Âä?Ã;à?Äãu?È=Î?ÌÞ[?Ïz_?ÎA²?Êî?Å%?ÂTp?Ãxî?Æåe?ÈG?Æ8›?Ä?ÂHá?ÁŠ?À;A?Á°S?ï4?Äi?ö(?ÄÆ?Å“&?Çð?Ç«Ó?ÇŠ£?ÇlR?Æm•?Þk?¾¿¤?»cš?¼âD?ÀÅ?À÷x?¿‚ù?¾B˜?½LÙ?»+?ºsS?»ã?¼m8?»—m?ºi?·‰V?³¼º?²7K?²Pj?±@¾?°Œ#?±‚D?±)€?­8…?§zø?¤Ò\?¤þÿ?£Bh?žÏN?—‹Ø?Ž¡Ä?‰X.?†óV?€Ã?džs?I -o?Dä1?Z8Þ?r,?‚®Ð?ŠÏ?5V?“ Å?”ÌŸ?’þü?’Ëy?—Ðt?Q¼? ¤½?£Í‡?§ž“?¬†{?°À?°>?®\?®Ÿ…?­”W?ªà¬?ª>›?¬2x?­Œ°?«¼×?¨ó?¸ª¶?º¼,?¼~?¼9?¼RV?»}å?º<å?¹ÀH?· `?¯ƒ#?«Xã?±¾˜?¹ª?»ØL?»žŒ?»#R?¸!,?´žò?³¢p?³VÏ?³)ù?³þÖ?¶w¯?¹Lk?ºî ?º›w?¸‘5?µÏï?²å -?±DC?¯Dc?ª?¦=·?¦jx?©ë¿?¯=Ò?³öÔ?µÈ?³j”?±å ?² -?±ÿ¸?²Lf?³Î£?´J£?²ýÿ?¯u?«÷=?ª®Ú?ª‘?©Ý?§*?¤‘L?§†k?­þÆ?°ÐY?® ,?©—…?¤ÌR?£pu?¥bÌ?¦O"?£ÒS?¢¶ð?¥W??§P[?§ÉÕ?©ò×?¬¡(?¬î×?ª‘??¨Àò?ªª™?­´|?°–q?³“M?³Ä£?®ß)?©†Í?¨Ò3?§­"?¡ë??›µ,?f¦?§%/?¯ŽÌ?³ã‹?³þc?®Úù?©/?§®?§ÑE?¨°n?«ß¹?¯=E?°M³?°?°»ƒ?²­?³ÚÑ?µaI?³¦Ï?­Ì?© c?©Šø?ª·Ä?«/w?­?¬åŽ?ª!Ú?©»7?ª÷?ª£M?«=W?¨ÇU?¡¡Ø?ž˜Ð?¢È·?¦‹Š?¨ g?ªe?«»Ý?«BÛ?«¶²?¬øH?­pä?®N:?¯¼??¯­¾?­u?§‰A?¡)?ž ?¢×”?¨ö?ªÆv?©Wg?¨ º?¦µ}?¤‡%?£§v?£÷©?¥¶š?¨áÓ?ªkA?ªP ?ªŠ ?¬[a?­æ ?­9ü?ªmõ?¦qˆ?¡Ð“?ž‘þ?ž½Ë? ˆ? ?ŸrŒ?Ÿß¡?¡yO?£ÿ?¤|?¦H?¦<9?¢ÍE?ŸŠÛ?ž1i?ŸV?žtz?œn)?ž?ŸÃ?‡&?œÃI?ž­8? N†?žä)?—?·W?žy? yX?£Y?¢÷p?Ÿc¥?•´j?‰#º?ˆ"¢?“i?›(s?œiW?œÃ?œ”?–¥Ã?“äS?–‹?—Rt?–ÝØ?˜P‘?› „?†à?ž‚ª?ž0C?œl?—Åû?”p?“·?“ÙÙ?•ì;?™rƒ?œ˜Ø?þ¡?›?—Nc?–nµ?˜ôY?›©D?œñ ?Œ?›&?–í?ŽÙ©?‰)ô?Š×B?’žÿ?˜0¦?™_?–›¶?“+M?’«j?•Z¶?™f&?›Œð?›ô›?œRÌ?›áð?›' ?šU¿?—uà?”ž?“Ï?“ü?‘ÿƒ?“—Ô?•K?”,?“?–®}?›r?œo?™z?” š?s‚?‡ÜD?„?…md?‰34?‡‰³?ƒæp?ˆ#ô?ðh?Ž‡?Œí-?¸™?“Ru?—¬s?–±¨?“Ô?Øü?ŽÑ?à¶?–ž?š’·?›«?›M^?›àË?š¾„?˜c4?–è&?• ë?'ñ?‹ø¾?Íô?‘ß?‘aç?’äT?–p‚?˜{?—¶ÿ?–¹Þ?—Õ?™TÄ?™(S?—™?•Æ'?“ó2?‘¦?‘5A?’ÁD?“p?“c?’­?«â?ãu?Œ¾¹?‡n@?ê!?…¯8? ?È?´E?“ -l?“Ý›?’–É?¼ó?;>?Š®'?l"?‘KÁ?’ ?}K?„?Žž²?ªO?ˆS?’í?’Žà?“ýŠ?–9Û?–Âe?–Nf?•Ùæ?”h?‘Ÿ¡?˜i?Ž]>?OŒ?–„?@æ?Š{‹?†då?†5˜?‹ ?·Š?’°?‘åø?‚(?ª}?Ž@?C+? 7?÷Ë?šu?]~?è0?Œ6Í?Š‡Í?‰{Í?‰;?ˆÿ³?ˆX?†j?„ãí?‡œ?‰?n'?k§?l˜”?mÃ?k(?k';?nj€?qQÉ?rÞõ?r]X?qñz?r_/?oÎ%?l:?häP?eò%?hKy?jÏà?g«?cG?`<÷?^þÚ?`l²?c;/?hÕN?li}?mò?nD&?n‡©?oÞ¡?q*÷?r¡b?rØY?q#Ì?mÍÀ?m -Ž?nÛ¶?maˆ?k5À?lîv?ní†?o¤?nYò?mÏb?mr?ll®?kIÄ?lx?mVÒ?kv!?gR?gÄ_?jV?fàY?`œÿ?_h@?e7”?jk]?k -»?g¬P?c }?`G/?cE]?if—?l?`×Ç?XÌ»?WQ?X B?X?[(¸?`¡g?cJü?b1'?`Ñu?aÁ´?c7w?dÿ?a>Ö?` ?d7X?gY -?f…L?aÚâ?]¢J?]þ„?`9c?a˜Õ?bûH?cuà?b¿V?`¿.?]¶Ã?^­b?c‹ñ?f?eœì?dw…?dÈ?dBê?cÞ¤?cGœ?cæÙ?cýQ?c‰?bQ?`ã0?`ã ?a'ò?`L„?a_?bÃ?bå?aúa?_úñ?]®y?\ž$?]qK?]À8?[È?WÐ3?WäÄ?W1?S=I?Sa?WjÐ?YŸ?Y÷?[Š„?[§Q?ZQØ?[`{?]Mª?]ýk?]L?\¿?\z?[ùy?[Rb?Yn®?WoY?W°w?W†ü?V¿…?Wsç?T\Ú?FÈÏ?5z¨?7À?D—e?Hƒš?@N™?<å?Gg“?Olm?Sƒ?U·š?V¢¢?Uý!?Tïå?Uä?Uà>?U°Ò?V]è?T™L?PÅý?Oæû?Q¹®?S^5?TÏ?UyJ?T6Ê?TØ?U¾ ?V°?Rú¤?OÆç?P…Ç?TX?Tg+?R¥4?SÅ°?U…«?UmÏ?RÎ?M¶?N Y?Q>?Rò?PMh?M™?MŠá?O}S?LÓ?LËk?O[ë?MØ_?LËx?O+°?RUí?S‚ ?SW?Q‰s?Pú?Q!l?Râ¢?SÒt?Sì?S"ž?P+?K˜ -?JTÿ?Lø)?PA?P¨w?M0v?HØX?I ->?Kr?MjË?NS×?Léù?M N?O|?OÈ·?Lo?I„þ?JŒ€?L)?Ka6?JZÉ?K:â?Il³?EA¯?DЀ?Hœ?H¸½?F¶;?G66?G®¾?GÇò?G„`?D‚Ÿ?CÙ?Eñ?Gv=?I6Õ?Iî?Jú?KsP?L~?LÎñ?L¶±?L›Ì?L»-?L€É?K‹m?JcÃ?IÍŸ?Jÿp?Kâ«?Kú"?Kç?KÏ‚?LL?J±S?H«"?Gjµ?F—:?H…^?Ko?KHd?IVŽ?FÎU?D:3?D„È?I2?KFÐ?KtÍ?KÂF?L/‡?L ±?JÝš?GÛ2?DÙI?Eˆ|?EŽˆ?DV&?D`G?D;?DßÞ?EžH?Cë¨?BöB?C”}?E(­?G&?F¼'?Fš ?Fí8?C5Ð?;Õ?=7|?D?EmŠ?D?F s?EÿV?Eng?FQ?E€$?CÞ|?EÌ?D€õ?AeÒ?>u?@ט?CĤ?CQ&?3‡ ?<…??¿º?<ª-??’…?Bøg?Bq6?@ ?>þo??ò?A[¼?A€Ó?>rr?= -‰?=‚?>Ù?: .?2éÏ?2î5?8¤?<Û?=aS?9À?7=i?<á?>Ù´???>2C?=ôJ??‘??A?A•ê?A¶Ú?AÐã?AQÏ?@f?>f:?9´Ç?62?7*˜?:@3?9Qw?7-©?9Z?<1‹?<2¤?<?;mþ?8x&?2¸Ò?2m?7Th?;ï÷?#?+´Œ?-Ñ -?/%?.ù?.—y?-ˆ?+Ìò?+¬6?,xÄ?,"¶?,Žô?.ƒ?.5×?-†ñ?*ì9?&1?&È÷?+3?,¡ƒ?'ž*?"ú(?'Ö?+Îà?+¾‚?)+x?%?&zª?&ãf?&pÐ?'«Þ?'D??'†?&àN?#Ü?"a?&p6?) D?)ËÑ?*¤±?)åþ?%Žå?"?#¾¦?&ð£?(œ?%Ž–?!¥L?#îr?( ?(µY?(¢ª?(¸¼?&"´?¹Y?xh?"?# c? A6?Tr?#ýÏ°>Ü o>æ¨>âJÌ?? =? iÍ? –Í? ”–? xœ? ^ì? %? á©? ²^?  @? šh? ž? ™? y? Pî? 0?? ? §? û¬? ÝQ? É€? ÃË? ©g? ƒ²? r"? ]I? 9? µ? -ç%? -Âî? -€˜? -d? -c›? -I? -'ô? ú®? ª? †”? ¥? ³—? ›? á? y…? e/? :™? ?ý.?ÒÝ?´ ?£ï?†[?_[?I ??âÚ?Êî?©?3Y?Êð??5=??ÿÌ?ðN?Ë?¥§?Ÿ&?˜ö?pV?2”?Ä0?¬p?ï›?ú–?î?Ѻ?²ü?¢”?†A?^:?M‹?@?È?ûø?È›?X¨?T?‡?í?€?\?J¨?FØ?)ì?—?ð|?â¤?·b?†?YÈ?E‡??»?D?GÑ?-¬?6?ïZ?ßH?ÏÅ?À¨?½½?ª?‘W?„é?e¥?#ç?ç$?P?#–?k?Ý•?ßS?›)?YÒ?Â?‰?-«?;Y?ò>ÿ·î>üïá>ûþø>þªô?r?É®?…÷?,>ÿ¦>ÿB?;¶?bÇ?ZÙ?KÇ>þzÜ>ûdˆ>ü{£>üM >úJ>úø¶>ýz:>ý½¯>ýO>ýD@>ùÝ~>ñ¨J>ô¢>ü{”>ýpA>÷ P>óAü>÷}´>û‡¿>ûÚu>û^U>ûŠe>ú®M>û˜J>øT>ôhÁ>û†Š>ÿð„>þDG>ûÂþ>ýI~>ÿÄÚ>ÿlò>ú¾ö>ø¦>û_{>ý‚à>üvY>ù>ù#Ç>ú,n>úk>ö^U>ò¤>öü=>û1Ü>ûžy>ûÂé>û-m>û´²>üV~>ü~H>÷±×>ñ†4>ò²>ö?>ö a>ô[>ôÁÎ>õX¼>õ›Ù>öª>÷x×>öÕf>õ÷ƒ>öœ;>öIR>óð¼>ó&>ñ¼q>ðóá>ò21>ò’2>òŽ*>ò1 >ñd>ðÇq>ò¢>ó0>òiS>ñéñ>ðñ >ðêj>ñÄ`>ñëT>òø>ñò“>ñ G>ðÎk>ðšœ>ðŽÊ>ðeÎ>ðH>ð'>ð3!>ð >ï@)>í±I>î;/>ïvÖ>ï]H>ïd>>îJz>îQÈ>îo'>îyH>î\å>î >íŽÖ>ìô¾>ìo²>ì§>ëÊÄ>ëdõ>êÖ>êNû>ê >éá->鼃>é|i>é7>é4û>éj|>ér1>é@>é'Ž>é >è×>è¿>èÊr>èÞþ>è½–>èpR>è^>è|S>èu¢>è+M>çðR>ç± >çj}>ç~>æÌZ>æµ>æ’ß>æRf>æ Q>åµÁ>åB[>äöi>å Ï>å/m>å'ñ>äÕC>ä`ë>ãØ >âÿî>ãD³>ã‹r>ãf ->ãM—>âý×>â2{>áíV>âA¼>âMß>âE>áçµ>áØ>áÊa>á›…>áHÓ>áq>áœ>àøL>à€.>ßí«>ß»3>àf>àÇ>ßðº>߶>ßN´>ÞÎÛ>Þ›>Þ9o>ÝÝe>ÝCÖ>Üã×>Ý6&>ÝV‰>Ý5N>ÜõÛ>ÜÑÕ>ܶ >Üg>Ü:w>Ü,†>Ü’>Ûí>Û¸ >ÛjÊ>ÛNf>Ûeq>Û„J>Ûc0>Û0‡>Û!¨>Û–>Úµž>Úr¼>Úmì>ÚlH>ÚN?>Ú%>Ùög>Ùº>ÙÀê>Ùå>Ùã>Ù:È>ع®>Ù>Ù=>Ù æ>Ù)“>Ù[æ>Ø°×>ØnÊ>Ùm°>ÚvÙ>Ù ->ØP>×Y >Õ0p>Ô+ù>Ó–ø>Õôª>Ö2}>ÖF_>×Ñ>×®ª>Õ:R>ÓŒ³>Ö¡µ>ׂJ>Õs >Ô -1>Ðox>ÒLe>Ô£>Δ‚>ÎîÐ>Ò«Ð>Ô8>БY>ÌÝ>Òüî>ØŸ>×þ>Ó¦Ó>ÑÒJ>Ôœ×>ÕÈ#>Õ>Ôá}>Ñ°ù>Ðu>ÑAV>ÎY)>Ï!×>Ò -->ÓÜÌ>ÔwM>Ô̧>ÔœM>Ó>Ñû>Ì¥—>Éõô>Ð"h>Ôn>Ôˆ>Ò¨±>Ñg(>ÏŸ>Ïaé>Ïñ>Ð æ>ϤD>Î],>Îæ>С[>Ñü >Ñ M>Ï«>Ì«n>É™ˆ>Ȥû>ÎVÆ>Ï),>Îó¾>Ïo>Îd>ËH>Ë´º>ÌgW>ÉFH>Ëd5>ÌKô>ÌE>ÍŸ¹>Î/i>Ì|á>ÊA >Ê‹ç>˪>Ìf_>ËCþ>Ê2Î>Ë+ ->Ëü¢>Ëïƒ>Ëm†>Êðµ>Ë œ>Ë-Ø>Ê{Ç>Éþï>ÊF·>ÊT¿>ÊG >Ês>ɲg>É®~>É©F>ÉpŽ>ÈéÑ>È@Ž>ÇåF>ÇÓ‚>ÇÅV>Ç©ª>Ç`å>Ç7j>ÇA>Ç<Ä>Ç š>ÆÏá>ƶû>Æ©Ê>Æo’>Åû >ÅŸ5>Å’é>ÅŸ>Ťþ>Å|>Å*t>Ån>Å ›>Åì>Äî>Ä°ý>Ä¢>Ħã>ÄžÞ>ÄeC>Ä P>Ãòè>ÃÄ°>ÃÏð>Ãǯ>Ãf>Ã`×>ÃHë>Ã'Þ>Ââ>š/>ÂŒ>Âxt>½>ÁÐâ>ÁÎÒ>Á̈>ÁÄð>Á©*>ÁV°>Àþ ->À®%>Àx¸>À¹¡>Àª‚>ÀcH>À'?>À9>ÀNÿ>ÀC">¿ú~>¿í@>¿àˆ>¿µù>¿W5>¿Þ>¾äÊ>¾ç >¾àÜ>¾“â>¾Zý>¾>½Üh>¾F>½ï>½ >½yâ>½z ->½~®>½*~>¼Úe>¼á˜>¼éº>¼¨–>¼6Ë>¼ -3>¼%F>¼! >¼ W>¼ >»Òœ>»Ú…>»§#>»¤ª>»¾È>»]>»W]>»­‹>»®‰>»{Ì>ºóÐ>¹è >¹î€>¹ë>¶é¼>·Ä†>¹•Q>º*ö>ºK:>ºm¼>¹Ÿ->¹[c>º$Œ>¹Ñ!>¹³>¹ÑŒ>¸Rƒ>´Ÿ>°L9>¯¤s>³dÊ>µ´@>´‰>¶:†>¸4>·Ó>µ b>³Ä'>·Cé>¸Ö¶>¸8 >µŠZ>²`'>²L'>µ.!>¶¿3>¶5^>³÷W>³ŒM>²w¤>´q>¶ÕÍ>·WÕ>·GF>¶þ>·L>¶íŽ>¶8Å>µ‹q>µR>±}>®a>¯‡ >®V€>±¥>³Sw>²²j>²±->²ç›>³ƒô>±Ê ->¯5š>°,->°µ>¯¦]>± —>±UÎ>°¾>¯©Ð>¯Ø8>°2ˆ>®²ù>­ñÖ>­ ,>«ó>¬!K>¬]‡>¬%Ï>ªDû>ª™)>¬D“>¬Ék>¬5E>«iÑ>©ÈN>¥³>¤oÐ>§  >¨ÐÕ>©±>ª>ªI9>©–5>¦+3>¦G”>£„y>¢ñ>¥º>¢Ah>¥->§Úö>¦T’>¦ûž>¦'<>¥M>¤Jq>¡Ñ:>£Ë >¤˜m> Ü>£0>£5í>Ÿy#>>¡§ú>¥g_>¥X>§>?>¦Þ×>¤`>¤ˆ>¤íŸ>¤ýy>£êº>¥“‘>§ %>¦F>¤Íè>¦G>¦6ä>¦Î+>¥ ¾>¤ù>§I=>¨Œà>¦%]>£­*>§¬t>©L!>¥²>¢7h>£_3>¡ûf>¡5>¤!û>¤Ha>¥è{>¤£&>¥ìÂ>¥·v>¥ÕÑ>¨+.>¦—²>¦A¦>¥k‡>¤ >£RF>Ÿ½V>ž½â>¢µh>¥Ê|>¥è>¥Uc>§ek>§¬>¥>£{> L0>ž¼º> °>¢1Ì>£•>£bÿ>¤=§>¤H>£­>£pI>£v_>£Ô>£i>¡ÆÇ> ÿ!> º > äi>¡W¨>¢4¾>¡‘> ºº> à> D¼>¡%> ñŽ> Š>Ÿ¶Þ> -^> (>Ÿíú> B¬> v…> ‚ > yd> 9÷> > š> ]>ŸúÝ>ŸøO>ŸÂè>Ÿl>Ÿ— >Ÿ©G>Ÿµå>Ÿ¨>Ÿi>Ÿ.Ž>Ÿ#X>Ÿ(N>Ÿ)’>Ÿ²>žég>žšx>žw>žpè>žië>ž<Ü>Ùg>¤Ø>¶>‰>´e>£|>Iû>ó>‚>¦>œõæ>œØÞ>œ…Y>œ1‘>œº>›÷§>›‡Ô>›'I>šýP>š€Ž>›+>›J,>š Ž>šE>› v>šŽå>šL?>š~I>š–->š£)>šW÷>™vþ>—ÆÏ>–y>–ÕÎ>˜ÁÛ>˜º[>—†E>—ÆÝ>˜¾Ÿ>˜ƒã>—´+>—à>–í›>–sf>—ÞÞ>˜3[>—Ù>—O]>˜C®>–í!>”d‡>–€Ÿ>—òœ>—ÈT>—ô‹>˜­á>™]½>™=[>˜¿a>˜Ýã>™#>™• >™£>—‡¬>—w0>˜Œ˜>™¯‡>™‡‹>˜[ï>˜h˜>—_]>–³ë>˜‘>—]O>–v¶>–NW>•s>—8V>—7„>•Ì">”°f>”â/>’»Ã>”;P>–Pä>–‹ß>—)J>•>¼>“¥>”Œ\>’ä£>%¶>’ðó>]É>z->8 >ÞN>Ž½>’®+>’Òˆ>‘*Ä>Ãì>>’0Ñ>”Õå>”:>’rD>‘’¬>’A„>’¼9>E#>>>“Æ>’CÌ>8B>ÿù>‘ö>Þ >’CÙ>’5«>‹â†>Ž1Ò>‹ö—>Š¾¹>w>“ò>’Fƒ>,ž>²™>‘(Î>ƒ»>¯X>‘8d>‘¶>‘¦>©Ÿ>Ž”>ti>–ö>Ž·†>ŽÎù>öD>‹»¬>Œ}Ì>‘’ç>‘XÒ>‘Ú>†ØŸ>Š…j>ŠN >Šÿz>gH>‹ Ù>‰•>‹¥§>ðT>‘­C>‘/>Ž©{>ŽsÐ>*Ï>ɱ>Œq¤>ˆäÖ>†½Ü>‰E>‹ô>|¦>±ý>Ž>ŒŒI>‹Ì>ÕÜ>ŽÜm>ŒÞÄ>-È>ŒÅ™>Š–>/>RPè>b>€¯m>„û/>‰Ã‘>ÊX>Ž&S>Œ8>‡ ->„‘>‰–9>‹×]>Œœ×>Œ7>ŠŽ>ˆY>ŠlJ>‰Ø>‰*Ñ>†Xf>|xµ>cÜÁ>7ùæ>#ÙZ>P¦:>q¼>}àÚ>„ŒÁ>‰¤>ˆnQ>†>‰éo>‹2ÿ>‹ »>‹£>Œ®>‹Õ/>ŒDÏ>Œ&Ÿ>Œ‹>Œò*>Žz\>~>ˆÑó>‰S™>Š®¡>Š¢Ž>‰V >‡DW>†Œƒ>„i}>‚µ£>…y*>‡n>‡D>ˆ)”>‰7>ˆIê>†y†>Šs>‹Î>œ> b>‹WÑ>·í>K>ŽX”>Ž>Œã^>Œ9É>±^>Ž{T>ŽVâ>Œ»>ŒU:>Œ=Ÿ>ˆ›>†Ð™>‰ Õ>ˆ³>…®¥>€ ü>a[¤>+Ì×>5´Ï>dnÖ>yÁ>€ù >‚l5>"Í>¥Ò>‡^ú>†-û>‡ +>‰‰É>‹'Ã>…4/>„¥ ->Œjö>k>Z>Œ2>‰×>‹+?>‹J+>Œ£€>ŒSP>‰V%>‡•Ú>ˆº/>‹ÉÆ>Šp7>‹åé>Œî€>Œ>ŠíB>‡È—>†ÎÒ>ŠA.>Š$=>†:î>‡?">ˆ,>„ÿÍ>„‘>ƒH">«>~w >w’™>€³>‚KÚ>‚®6>‡%>‡Í>„¥û>…ûÌ>ˆZ»>‰²>†?ß>…Ä>‰Žë>ŠyM>Š!.>‹ à>Š>ŠÜR>Š[>…°ø>„YL>…?>†Å¾>ˆN;>ŠP>ˆ™J>‚>sð>|Já>†Cî>ˆxž>ˆ%>‡±Þ>†ÉÃ>†X'>ƒðî>]Û>†“‘>‡F>‡nu>†ïl>†8 >ƒSV>)ï>‚A9>ðQ>€Øn>}¸ø>|ˆ>yXÉ>tïÊ>pÈ»>l8ý>dH>Z>U$<>Xçó>\hã>e+ä>l)?>o—P>r5´>ux_>y/|>|‹~>¶>!1>‚‡‘>ƒ‚C>„$€>…(*>†7^>‡B>ˆn>ˆ­‡>‰1}>‰­>‰üY>‰RS>‡âx>‰î?>ŠüQ>‹W3>‹_C>‹a7>‹9G>Š‰%>ŠÐ·>‹i$>‹t>‹cò>‹gÈ>‹u>‹lÂ>‹!š>ŠµX>Š¢¬>Š™¢>Š‰">Š$m>‰Ú…>‰·A>‰X¤>‰†>ˆ­|>ˆ28>‡ÈŠ>‡Nd>†¯>†À>…D'>„n->ƒuO>‚}š>tô>€->}d]>yôù>v—[>rÅç>ny±>i¨>dU>^e|>W®Ç>P2>GÃN>>!2>3¨=>/Æ>7Ìå>A|º>J˜>QŽ“>X>]ìa>c4Y>h"‚>lz">p)û>s]Ö>v.|>xœ>y÷ß>{Y´>}ª!>`Ø>€ì§>Ÿ >‚>ç>}ð>|¨™>‚æ)>ƒ¾F>ƒËø>„î>„g>‚F¢>}eà>ÐÊ>„cm>„ƒ¶>ƒÍÜ>J >‚î®>ƒ8‘>}Ùw>Ãú>„[¬>„8*>„>½>„€?>„z®>ƒÌÔ>çÈ>‚¹¯>ƒ³ð>ƒÁÐ>ƒ›¹>‚RÕ>‚B‚>‚þ³>‚ä>‚k>P†>‚u¿>‚÷0>‚Ò >‚eÅ>‚:X>‚8>‚4÷>‚­>™%>Z>>¨>€îÊ>€–j>€¡Æ>€~Š>€Å>©ð>~ß×>~é>{}¾>y\…>yªã>y‘½>ybæ>wɨ>tæ>u+P>t[E>r±g>p“`>nOü>k¬Ó>h× >eÚ0>bA#>^!‚>Xå~>PÃu>MØE>FB>>^(><-ý>5u>+ÏÝ>!©n>Š>&ÌU>0*>7yd>>PÝ>E=ú>HÛ3>J >RÚk>X•L>\,+>_X>bY >d®¹>b¬#>[f[>^W>`Xh>i,M>n\[>oÒ>p@ð>qS„>qæâ>r>„>s™>sw>s|d>s|q>sI>sÖ±>t]ˆ>t‚>tð>tã>t§h>tæà>uÇ>uË>tþ>tÓ@>t¯i>t/«>t>s×$>s <>rR¹>sI>sK1>suC>szO>sH>ræ(>sQæ>sy >s8v>r_p>qø3>qññ>qñè>qñè>qñè>qñ>qÜ©>qµ >qTË>p•¨>pgî>pgB>pgf>pgf>pg'>pKÎ>oM>n‘™>m$>i'E>lKq>nÄ>nܽ>nÉ—>l_e>d{½>i&>l†>hb¯>gÑÙ>kȳ>lýY>l,w>k”i>kÂ6>k¾U>k•´>kŽ©>k

    i¨>hÝS>iÎ@>jI>i÷€>iŠ*>hô>h¶ç>h²à>h²a>hb>g’r>fâ*>fŸ>fÍ>fÊÀ>eò>e¡:>e‘â>eQ>d&Ž>bÛ³>b'>b–§>b\>aˆ>`½5>_çi>_Aa>^2q>]…>\,i>Zë‡>Yl;>WÃS>UèŸ>Sêr>Q“Á>O>L-ó>Hð >EFI>Aw>=0%>8D>>2èu>- >&–¦>> u> B>de>Ã> -á>&èÂ>,á>2HÅ>6ùÖ>;,¤>>ÿý>B­%>EÒ>Hè>Jò\>M¬>Nð¹>P‡¿>QÚ˜>Sz>T¶>T»¼>Ui>Vé>V°>W‡]>W¶>S˜ù>UÁ>X:W>Xý}>Y#®>YF>YHÇ>Xòe>W»>Wç9>Y6ñ>YG£>X_½>R¥Í>Tª>Xø´>YIE>YIÃ>YIÃ>YI–>Y9>XËû>Xµí>Xø>VI@>P8É>T ×>Wš>WÀj>W¾¤>Wµ†>WN>WP|>Wx/>Vݨ>U£;>UžÊ>UþÚ>UÜ >UÒþ>U=->Uêh>Vj>Vú>Vú>UVï>T¹¢>Tª^>Tª=>Tª=>Tª=>Tª=>Tª3>T¢í>TC>S‘ >S>Rüç>S>SL>R£!>RgÄ>Rª–>RŠ,>R„>QÕ¿>Q—">Q•9>Q•8>Q•8>Q•8>Q•7>Q“R>QRû>PsŠ>Pž>P -1>P ¼>P -n>P -Œ>P -¦>P*>Owq>N¨k>N€é>N€4>N€3>N€4>N€4>N€4>Nò>NhW>Mù>L²>L«Ê>LÇg>Lðm>Lò>>LÉ{>Lª>JÃ>KØ?>K˜>KVÙ>K;œ>Kby>KZÚ>K_>K2¼>K=×>J¼­>IÉ>I“f>IËc>I[>HÛ†>IPó>I‡Ã>I¦>If8>Hiq>H>>HU>HV*>HUú>HV>HU*>GA>Að|>BC+>Fj(>FÅÛ>F ¾>F®è>F¾’>F}¸>FH>EÛ>E7š>D¥f>D»Ô>E8v>EB3>E?U>E:>Dg>B >Bðì>C­Š>C¯ñ>C'z>BÇD>BÉ?>B<¨>B,C>B+ä>B‚>A—7>A\f>@È>@¢G>@¡š>@›€>@*X>?Lä>?B>?§>>ÚO>=ùJ>=‘}>=€¹><í­>;Äæ>:­k>8º>9¾>8·g>7ÇÔ>6î”>5ÌS>4›m>3Lò>1™k>/Òp>.(>+à¯>)o>&¨½>#…O> Ï>Ow>h>>h> õ.>ü­>³Þ=îúç=íº=þªÓ>‡y> IÛ>Qk>½ >{>ÿõ> ]A>#F>%{{>'Ò@>)Òë>+bN>,Ϭ>.Þ>/1ü>.–Í>,9>0)²>2aG>2Àq>2æˆ>3pÆ>3g¶>1æb>1¬Ö>0È >32Ù>442c>1¨5>0‡@>5€>5©§>5Óá>5Ø ->5Ø>5Ö°>5ª>4ÌY>4:9>4ú>4FZ>4=[>4ý>4@a>4Kk>3ù¼>3Ka>4ñ>4KY>49!>4Þ>44>4ü>4Þ>3Y>2ÌË>2Ã>2à ->2à >2à >2à >2à >2à ->2à ->2Âþ>2¸|>2&â>1Yä>19>18?>18ˆ>18‰>18‰>18ˆ>18~>11û>1á>0½Ê>/ïö>/­>/†a>/‡>/« >/¯ ->/¤ž>/y>/˜å>/­v>/ŸE>.úÞ>.;©>.#º>.#„>.#„>.#„>.#„>.#ƒ>."æ>.å>- >-n>,Âe>,™«>,™>,™>,™>,™>,™>,™>,™>,•à>,;‚>+RÆ>+™>+£>+ :>*ÍÈ>)´Æ>*ki>+}>+W>*ýÿ>*l;>)­>)„Ö>)ƒý>)ƒý>)ƒü>)‚>)A>(è¼>)lN>)}R>)ô>($ô>'ú>'ù{>'ù{>'ù{>'ù{>'ùj>'ðÂ>'ÄË>'äN>'ÑD>&ùJ>&tB>&L¶>&CÖ>&k¨>&nö>&nø>&nø>&nø>&nß>&^s>%°¿>$ø~>$äŒ>$ãø>$åŽ>$ãô>$äk>$ä>$Ðc>$Šf>$DÔ>#åP> êO>Ç’> ©å>!ó„>#€>#Sá>#)c>"‚6>#¥>#X²>#>Ñ>"u„>!ØT>!§?>!¦>!žÐ>!±ü>!Îh>!Á‘>  V> É>!A¿> 4[> ß>ñ”>éÃ> 8N>¶“> :> o> Dx> DÚ> :×> ?>‘¬>Ëß>ýÇ>­Ë>†¬>z>”:>¸D>¬N>„M>§—>t>Òm>>{>.X> „>ª>->/€>e>Ä)>î> -ö>bC>½´>P=>Šš>ïp>L>Œ¾>¥S>¥h>¥D>¥B>¤„>\ÿ>oã>$>3>øá>ã¹>> í>ä‘>y(>ˆÌ>Ü>Xv> - >">Ï>wH>Ë>‡L>xÉ>\N>æô>Qa>/>Ã$>ïç>ž>u1>eÌ>g\>ºÏ>ô>½Š>ªl>¸%>VÃ>3`> />ç`>™+>Ÿ„>´^>oE>Z§>ïß>@>Ý>ì;>ÇP>£<>l<>!^>+ >ª™>«ú>Ä>Ag>…>sý>?þ>($>î>çž>Æ>­d>…'>C‘>©»>èì>øþ>Õ>¬È>Žê>k‹>H>!>«>ˆ>Ñ>† >Zù>*>ß8>›¸>¹>ñ®>M¬>*>”>Ás>]Õ>ZÓ>3C> ÷p> ¼í> } > ?_> õ÷> °Ó> 0¸> -µ> -ÁM> X> -ü> -¼> -'> sí>ÜØ>hæ>ÃÄ>6>#¥>8£>1r>>³®>9¦=üöŠ=÷m=ô;=ðã›=ëÜY=æ<=ß»&=Ø*=ÐH\=ÅôE=¶÷–=´‰`=ÃA£=ͨ=Õ¯$=ÜNG=áV×=çr =ìp=ð "=ôP!=÷£=ùüæ=üÛË=ÿ™>~¨>C7>ÚÝ>k2>C>£#> é>b)>§">à0>ò>M;>o#>Œà>¡b>²>«á>†9>½>éB>êw>ê¼>ä­>Ì‹>Ú>Âi>µ¡>  >–1>–>€º>q±>OQ>Cœ>?d>(¦>=>m>î@>Ø(>Å>«U>Ž£>{’>gT>Q>\>ï©>>õ>Ü4>Ã2>§E>>s~>aº>F>)J>@>ç>Ñ<>¿.>=>^l>e˜>]J>A]>#]> Ü>îõ>Ö²>¿•>¢þ>Š]>iø>N'>B*>&v> h>òÃ>Í#>£q>Œ»> ±=ÿÆ>Hu>8L>ò=ÿäÎ=ÿ”R=ÿ‘Ç=ÿk£=ÿ0&=þò*=þµê=þŠš=þUñ=þ"C=ýÊ =ýD¤=ýrÇ=ýO=ý]=üÁh=ü±z=üž=ü8‚=ü;=ûÏÓ=ûgñ=úe-=úßÎ=úï==ú³º=ú´=úV‡=ú==úk=ùÒª=ùŸ±=ùW=õIÕ=ë©ø=ô®²=÷./=õ`È=ñÌ=ô‡ú=ðª¤=öT°=÷Tõ=öä=ö€Å=ö†Ó=ö‡Ü=öN=ö£=õàø=óä=ó J=ô¥b=óÈð=ôÎ_=ô½œ=ôˆ =ôTc=ô =óóR=óhÂ=òÄ#=ó3„=ó#=ò×µ=ò§Ã=òiÒ=ðÈ=ñ@Ë=ñéŠ=ñº¾=ñ‡=ñM#=ðå=ðÇ"=ð¹=ð}a=ïå.=ïe3=ï=Ÿ=ï¢H=ïxX=ïR'=ïñ=îØs=î¬=î}6=îUV=îD=íèw=í¿#=í”(=í^ -=íÂ=ê×-=éšÛ=êsú=ì.d=ì0>=ëüI=ëɾ=ë›z=ëm¶=ë8Š=ëß=êÕQ=ê˜Ã=êXB=ê9=ê °=é̳=éžø=é~Ç=éA7=é ¬=èÛ=è—o=èqÝ=èE˜=è3=çØé=ç´´=çmz=çN¼=ç!7=æêz=æ¿x=æŒÖ=æ]u=æ1=åô=åÉ„=åŸ=ån_=å9Ó=åX=äÄ^=äœS=ät¢=ä>(=ãÝ*=ãÛP=ã¼=ã…¨=ãZô=ã(µ=âö=âÀP=â’ó=âY>=âE=áèÊ=á'=Þéw=à½B=á64=àÞt=à0ø=ß­\=ßn=Üh+=ß>’=ßÛx=ß·í=ߎî=ßci=ß.Á=ßk=ÞÑ=Þ›%=ÝÝ—=Ý/'=Ü–=ÛÈÏ=ÚÛZ=ÖU5=Üs&=Ý%Å=Ûë=ÚLö=Ûê(=Ûþô=Ü@==Üu=Ûì=Û»Ù=Ûw²=ÛOë=Û*Ê=Û$=ÚÔ=Ú”L=Úk‹=Ú8©=ÚA=Ù¤–=Ù`=Ù‚=ÙO,=Ù —=Øé4=ØyÒ=Ø„f=Ø_F=Ø9ƒ=×ÿ\=×ÕÒ=Öi;=Ó`Á=Óõñ=ÊÍq=Ó9ý=Ö»Ž=ÖŸû=Öz×=ÖH==Ö =Õ×¹=Õ¹=ÓÀ=Õ6ÿ=Õ&g=Ôý?=Ô±Š=ÔŸ>=Ô‹J=ÔSÛ=ÓœÐ=Ó˜·=ÓÍ=Ó­=Óuå=Ó>¼=Ó{=ÒÏ=Ò¶7=Ò`^=ÐgÊ=ÐÆZ=Ñþò=ÑÈQ=Ю9=Ðî -=ÑIž=И=Ï#!=Д¬=Кû=Ðn =Ïý4=Î:„=Ïx=ÏÄÍ=Ï¡b=Ïpé=Ï|=͉=ÎOÓ=ήü=ÎŽA=ÎÃ=̦±=ÊêÄ=ÌðÏ=ͨ˜=Í‹š=ÍZÃ=Í6Æ=Íh=Ìç°=Ì´J=Ì=Ì[ÿ=Ì*î=Ì=ËÑ.=ˬ·=Ëx¤=ËU„=Ë=Êð‡=ɤ?±y?°äq?°ƒQ?°N?°ðÂ?±Sl?±x˜?±_l?±)?°ñó?°Á9?°‹?°EÝ?¯ÿ¡?¯Ô8?¯Ð+?¯Ö ?¯ X?¯ O?®wì?®v\?¯(6?°u?°¶%?°ú?±Ä?±^?±›?°ûJ?°Ë?°X?¯ž¨?®×0?®g^?®‘?¯-Ô?¯Óÿ?°8f?°U&?°C¸?°T?¯ÑÒ?¯–·?¯ƒõ?¯ž)?¯Ç?¯áÈ?¯ç?¯ã?¯Þµ?¯×_?¯¼z?¯eâ?®‹è?¬ýš?«R?©ÎÂ?©á_?«‹?¬na?­+?­ þ?¬hx?«öë?¬þ?¬kK?¬VV?«¹õ?«5â?«ré?¬b4?­X¡?­¾Œ?­h ?¬|¹?«Z?ªmÌ?©èå?©À‹?©÷?ªžô?«J?¬a?¬Þ&?­Ã?¬Âù?¬#?«mm?«%:?«r)?«å¹?«ýÍ?«°??«V‘?«+€?ªûO?ªOî?¨ó–?§pú?¦×‚?§£ƒ?©91?ª«“?«†e?«±Þ?«Y?©Î‚?¨‡?¨13?¨èÙ?©¯_?©”e?¨Ç¡?¨:ï?¨i÷?¨óØ?©\/?©—¼?©Óo?ª#†?ªoŸ?ª{Y?ªv?©•¢?©l,?©å»?ª°î?«Q=?«—h?«œ)?«F?«Un?«‰?ªÈE?ªs”?ª=ÿ?ª5q?ª2?ªç?©Ì{?©¾·?©ìÝ?ªŒ?ªy?©‡E?¨¬Ç?§•~?¦‡€?¦ ?¦y-?§ú?¨>/?¨A?¦Ú?¥¬Û?¥q?¦?¦«?¦¹m?¦ª?§?§ï³?¨½Z?¨û?¨|ç?§oÝ?¦jt?¦(0?¦Ý?§ú>?¨Î²?©&?© ?¨ñg?¨Ø1?¨Ø.?¨ë›?©!?©ä?¨â­?¨„%?§àM?§ü?¦™ª?¦‹7?¦ÁB?¦ÒP?¦§?¦‰”?¦k?¦N?¥kÌ?¤fÝ?¤6C?¥"¼?¦uâ?§]#?§‰£?¦è?¥Tæ?¢ú7? Ãã?ŸÉi? þ? W¨? +C? @Â?¡z:?£•Ã?¥ˆ?¦µ†?§?¦ò#?¦¤{?¦nþ?¦y+?¦±T?¦è¼?§L?§U?¦å+?¦.?¥É¯?¤{ ?£ g?¢'ô?¡é?¡›>?¡ Ù?¡ñ?¡î%?¢ùe?£?¢h ?¡Òw?¢)˜?£I?¤ƒ?¥U—?¥®q?¥ŸR?¥7 ?¤—Â?¤ Ö?£Öî?£°i?¢ôr?¡Z?Ÿ{`?žvÇ?žü1? ¬ò?¢sê?£‚o?£× ?£Ý`?£Àb?£<™?¢? µ·? $ ? Ê,?¡÷ñ?¢Ó‹?£2Î?£I›?£5%?£`?£ 0?£,U?£h ?£˜…?£å?£D4?¢ç-?¢¾·?¢Óü?¢ú…?£ì?¢²7?¡Ø8?˜·?—ìm?—ÞÕ?—êÞ?—ý?˜Y?—þT?—ð0?—Úï?—·Ÿ?—|?—@x?–úê?–¢„?–6Ò?•ôw?–Ô?–„ï?–éÕ?—$‘?—=Œ?—BÝ?—?•®[?•{[?•2?”Ê?”Cõ?“Ìí?“°?“ó¦?”JE?”‚?”›?”°?”­Q?”¾?”dV?”7œ?”q?”ç?”+%?”;c?”(Ï?“ÝÌ?“\ÿ?’Ô•?’“?’£‚?’Ð?’Ó ?’¡?’S—?’ v?‘èƒ?‘án?‘ë«?’ ÿ?’Om?’¨œ?’ï)?“.?’ôò?’¾I?’hÄ?‘üg?‘—?‘j?‘…?‘´¦?‘ºt?‘‹ã?‘?L?ãû?‡€?F?6p?Px?"?ÅØ?‘a?‘_ƒ?‘†¾?‘Ž"?‘ƒŽ?‘w%?‘k©?‘Vq?‘/Ò?øã?¿B?žw?«°?Þ?‘?‘8¿?‘>>?‘/i?‘q?‘?Ó¥?•b?VÊ?(n?£?F?™?ÿ}?×í?£u?mÑ?--?Žáõ?Ž«Î?Žžˆ?ŽªÖ?Ž¼¤?ŽÇT?ŽÂŒ?Ž®Ç?Žý?ŽbÈ?Ž:?ŽÄ?Ž,?Ó?“’?Km?Î?Œö&?Œý[??,Ö?RÚ?u?ƒå?y`?N¤?Œô\?Œm -?‹ä¢?‹™h?‹žÓ?‹ÀÝ?‹¼?‹Õ?‹(Ò?Šáf?ŠË†?Šå÷?‹ç?‹”?ŠéV?ŠÐ²?ŠÏ~?ŠÞ€?Šë?ŠãÚ?ŠÂ¡?Š˜?ŠvT?ŠQà?Š?‰xù?ˆó©?ˆ»?ˆçF?‰L{?‰ª‹?‰Üy?‰ß?‰Â“?‰¢‡?‰“]?‰Q?‰‰Þ?‰ -?‰€ó?‰…?‰{Ä?‰^¢?‰7?‰ È?ˆÞ6?ˆšÙ?ˆDõ?‡õå?‡ËÉ?‡Ö?ˆ-?ˆ-F?ˆ, ?ˆÊ?‡ÚŒ?‡Èá?‡ÏÃ?‡×¼?‡Óu?‡ÈH?‡É«?‡æv?ˆ?ˆ#¨?ˆÑ?‡Íê?‡žj?‡°?‡¥V?‡ÅË?‡ßõ?‡û…?ˆ%?ˆ=?ˆWƒ?ˆs£?ˆ„w?ˆiÛ?ˆ›?‡‡J?‡1?†Æ„?†êj?‡nc?ˆ +?ˆu4?ˆ›`?ˆ˜2?ˆÖ?ˆR¹?ˆ?‡²˜?‡|(?‡j“?‡s®?‡‡Ì?‡–«?‡“õ?‡„0?‡€K?‡ß?‡Í?‡¤?‡¥p?‡ÃÌ?‡ð ?ˆr?ˆ>•?ˆ\u?ˆeà?ˆNñ?ˆ-¨?ˆ(?ˆ ?‡ð?‡Ó÷?‡ÇO?‡Î¸?‡é7?ˆ -?ˆ)r?ˆHT?ˆbÖ?ˆq£?ˆuÆ?ˆx?ˆ|­?ˆ…d?ˆ–?ˆ£²?ˆ…?ˆST?‡ú­?‡“q?‡&]?†Å?†Šù?†˜¤?†ñé?‡_°?‡ž[?‡I?‡.ï?†§Ç?†/•?…ùN?†,'?†ÆÒ?‡¼?‡ô1?‡ù ?‡¼ª?‡«?ˆõ?ˆ×{?‰;Ÿ?ˆ·Ñ?‡„ -?†ŠW?†Á?ˆnC?ŠÄ?Œ@?‹¶·?‰'˜?…¾;?ƒ3É?‚ùþ?…†q?‰÷ ?Ž`Ê?ÃY?æ‘?‹×P?† Z?€ö?}âJ?Ht?‡¤–?ƒ?—íL?œòï?ž`?šßC?“ð)?Š©•?„k?vâÅ?udÝ?ÒK?‰Øè?•è3?¡W¾?ªOH?¯Û3?±vë?®æL?¨5W?Ýv?‘%0?„E?të?iÏ·?lâ±?}Ù?‹ž?›…?ª¦‡?¸[9?Âð¼?ÉÆ“?̱K?˲×?ÆÝ?¾Yí?² &?¤?• m?†4?tÖ?f{?f9Q?tø ?‡°M?˜é?©?¸¿+?Æ4?ÑTP?Útº?áÜ'?çoÝ?êÕ­?ë­¡?é†Æ?ä©?Û{?Ш?¹?²(ª? ûU?«Â?€Ò?i!5?^áø?d±?wûë?‹R ?T‡?°;?ÂwZ?Ô ?䊖?óxô@Nõ@àO@ -^l@ ¿'@I@e<@Ï'@:™@‚ª@ –@Œû@Ž]?ûSq?í®|?Þ+`?Ì÷v?ºz‹?§Y?”wj?ƒ6:?kJ?\,š?\bJ?lNÏ?„p?–i[?©§W?¼Ä?Ï$>?àz®?ð°7?ÿЊ@çI@ ?"@ÖÉ@Ž"@?Î@à×@šŽ@ »à@!¢@"™Ç@#¨@$yž@$™Ñ@#»R@!õ‹@®í@6q@~ƒ@"U@ÂL@ \ä@9 @”O?òð;?ãž?ÓI?Á…Ý?¯/Ù?œ”’?Šˆü?ubÇ?^§?TíÌ?ZXµ?n1°?†Q¢?˜H›?«:¢?¾NU?Ðît?â¯ß?ó6±@^@²X@ €X@~c@¸›@cY@ö@ íš@#¾X@%ú@'Y@'×w@( Ë@(»@*J@+•­@-@.ÿ@.3`@-Ä]@->¡@,ê\@,í’@-X¯@-áß@.#F@.ê@-šª@,Ì9@+tn@)‹@'Bj@$×Ù@"Z@¦”@q¶@qÓ@ —@;æ@|@g`?÷©¤?é²?Øõ-?Ç”‹?µW¶?¢‘†?äÈ?}X9?b#?Ró?S?b±ã?~Ð?ð§?£q«?µ¦l?Ç5Ã?×âó?çL3?õ@œ|@ h@ Ý@À0@U@Çc@÷t@Ë¥@ ‹O@#N@& P@(‚?@*f¶@+šó@,-@,?·@,'Á@,KO@,ì@.@/Õ@/Ú@0 Î@03Î@0n´@0¾M@1›@1g‘@1¦G@1Åt@1¹Ò@1€ƒ@1ä@0z@/?@,íà@(ûŒ@#´ž@Í@\@£g@"=~@'® @+g0@- K@-žd@-ÜX@-Øc@-LÓ@,>ÿ@+ ê@)ÿ$@)LY@(Úö@(K-@'[G@&5@$ª@# -þ@!5»@(´@àª@Ez@4Z@® @ÄW@ ^@DÂ@n1?óÿx?æ<ü?×ÉÑ?ÈŽö?¸*u?¦|µ?“ìê? ™?cvš?Må?G'?PT?gEv?ƒqÓ?• -X?¦Æ£?·ón?ÈIÕ?ו‚?å¾`?òÆø?þ§I@¨¹@ f4@ ›p@Wv@ è@‡C@Ë@i -@_Ì@ -R@!w€@"­_@#²…@$œâ@%q(@&Ð@&WÒ@&”·@&í¼@'`@'Ê£@'ÿï@'öd@'Ë@'ž‰@'Žj@'¯×@'þÙ@(Tú@(l@(UŽ@(’@)€@)/G@)ÿ@)r@)8¼@)‚k@)­9@)Ó«@*Š@*J;@*Nq@*@@)_Y@(IO@&çq@%Œ‹@$ŸÎ@$gR@$ëG@%ð¶@&ý;@'­¦@'ÿb@(’@(3‰@(Y @(‘À@(ÁS@(Ík@(Ì@(ØP@(ãÅ@(ÝJ@(»M@(gß@'Õ®@'¿@&Uk@%ÙÅ@%ÀY@&L@&\®@&‡»@&}@&J™@%ô‡@%£É@%y@%eÉ@%V>@%@Y@% û@%6@$Õ~@$w·@#Ë–@"õJ@"3V@!£µ@!D×@! @ »Y@ v+@ 4Ð@Ô©@<ß@š]@"„@¼Ë@@ý@³û@—§@Þ×@ww@@!D@¿L@§@ Ó@ÈÓ@ C@ -{Ü@cø@â0?ÿÒ@?öÙÎ?ìÅ?á‰Ñ?Õ&u?ǯ?¹Hb?ª’?š4à?ŠÙ?tà?Yñ…?HYx?Dk?O€þ?g)Ç?ƒ‹?“Tt?£"w?²’?À'¿?Í\Ä?Ù¨F?äú¼?ïJ\?øa@[@àŽ@Ö@ NZ@ uL@ ]™@þß@db@¤„@É@ÉŽ@yê@”²@o@EK@™:@o!@Y@•@”­@bp@üá@õ•@qû@Á@@Yø@|Ï@[‹@õû@pn@†@@f@ñp@iä@¹ @ßN@ë @ï¦@òã@ïÚ@ç´@çÑ@ò£@õX@âß@¿û@ˆ—@/E@ÇÈ@Š¢@•þ@Õ?@#@Y<@]†@!Ê@Ÿn@×Ì@è¢@% @ç=@-H@ŒW@†^@×@€@wÀ@ æ@ê-@~@Ʊ@»@‘ˆ@W@–@ì§@ö¶@*˜@]?@w(@‡=@šL@ž3@qÛ@Ô@ü@Bô@û@Ëø@̃@ïP@D@[@šÞ@Éù@è­@ú@üØ@ø@íš@Ä%@[i@¾I@*`@ÖÔ@é@W°@ÅÇ@î@ãä@°@‰@2Ê@¿@S0@6l@p@Â@àn@~_@•§@Š8@ß]@òÙ@³-@‹Þ@ @0#@Œ@£ó@JÈ@P@A@õ£@Ô @è@[i@YŸ@r`@wÁ@hÐ@v@°€@è´@ú+@Üp@Œ€@:@Ø@>@5j@kç@Õ>@I>@Š@z‘@2@Ê@Jÿ@¿õ@:Ã@Éß@ŠŠ@™þ@Új@¶@R{@‹”@¯þ@ªã@Ž‚@e³@-à@óº@ʃ@´@@<9@È^@ZH@ D@æf@Ô,@ž¹@-ö@¸ç@lú@/@ §±@ Ç@ [ü@ Ñ@ ´¥@ èŠ@ *ª@ >w@ ï@ ]º@ -êÊ@ -Çw@ -¹Ú@ -A3@ -@Ó@»M@3é@@@l.@P@õ@Š%?ÿõ{?ü$T?÷lX?òò?ì€Y?æü$?á3E?ÚWV?Òf?ÈÏX?¾ˆR?³JŽ?§×?šY?ŒCÚ?{í?_ï>?H€†?:÷h?;=?IË ?b¤?k[?ã©?›-¦?§?²Äb?¼¸˜?ÅhÐ?ÍLË?ÔÔB?ÜH©?㈻?éá?ï?ó/Ö?ö¿J?ùó"?üÄŠ?ÿë@’_@ç@Võ@©@wU@ć@£@Uý@×U@c@ÒŒ@û@:7@dú@¤E@ïƒ@, @Ce@@Xõ@ 3@º@±ù@|»@$@K@´Œ@ËÍ@»@ºK@Äí@¼8@•º@Œ‚@Þ @c‘@¬{@—Á@c¶@D@0s@•@ÔÅ@¾¤@éü@:>@h&@aB@@V;@A‘@õ#@¨Þ@†e@›$@Ç•@Ö€@ÉÜ@Éâ@Ø @Õh@¬ @q¤@Hi@2b@À?ÿÓã?þÛÑ?ýJü?ûwÉ?ùÇÑ?øœÅ?øIC?øÀÎ?ùêÉ?û†W?üÍR?ý?ûè?ø—Ø?òÂÜ?ì`8?èèà?꣕?ñ8?÷».?û&’?ûŽ(?úŸÞ?ù]š?øi?øC!?øÒm?ùŸ?úzþ?û6ç?ûú?û£?û-é?ú@Ý?ù1]?øpX?øC¸?ø½—?ùjj?ù€&?ø¸¬?÷(?öš4?ö“›?÷aQ?ø/ü?ø/A?÷dm?öaÕ?õ«…?õ{/?õÓ?õdM?ôy?ó?”?òt„?òŒ^?óS?ô~°?õ„b?õÔå?õ˜d?õF€?ôôÈ?ôV_?ó+?ñÚ"?ñ8R?ñ·?ó’?ôQï?ô?óÜÁ?ó J?ò¤Á?ò¾S?ó&ß?ód[?òÐÀ?ñ"?î0n?ë…|?êfY?ë]¨?íUæ?î-Œ?íg‹?ìRq?ëæï?ì7 ?í‡?î À?ï×?ï—¶?ï|‰?îë?î“ ?îàG?ï‹Š?ïð?ïª8?îÂ]?í¤?ìÛ&?쪑?ìð:?í$s?ìö?쮧?ì©é?즕?ì:?ê*?èà^?çÛ ?è?éh?éÿn?êé?é°Ã?é¶È?ê%Ü?ê”?êÑö?êþ?ë#µ?ë'?ë¬?ëS?ë*ö?ë0(?ë¢?ëÖ?êý?êÕ}?ê°C?ê¨Î?ꤴ?ê¸?ên­?êH˜?ê°?éÂ?é?G?èvâ?çY!?æ1=?åh´?åc?åYs?æ¥?æé1?ç]’?çII?æ°ö?åË5?äé{?äOô?ä%î?ä^ ?äa"?ãÔ*?ã=û?ã*?ã­÷?ä{|?ån?åJê?åR ?åVµ?åF?å ?äÛÃ?ä›—?ä^§?ä '?ãò¶?ãèá?ãèÂ?ãÅÒ?ãzu?ã+?╦?â>\?â+#?âGË?â8ß?á¸õ?á?àTM?ßÌÌ?ß{f?ßQü?ß:8?ßNØ?߈H?ß®}?ß¼ç?ßÃÉ?ß½²?ß·‡?ß·Y?ß³¿?ß¾¢?ßár?ßõŠ?ßÒ^?߉?ßA+?Þý¯?Þšˆ?ÞY?Ý ?Ým$?ÝR‚?Ý)?Üé¿?ܧƒ?Ü}ÿ?Ü_•?Ü. ?Ûâ?Û™s?Û\?Û*?ÚJ?Ù>t?ØÒ -?Ùf?Ùç?ÙÄì?Ù1'?Ø…´?ØDN?Ø:s?×Ï6?×HM?×!ð?×6?×CO?×?®‡‹?«Šÿ?¨C?£ºÝ?Ÿ ?šq?»#X?»é|?¼r«?¼¹²?¼Æ?¼Öž?½ß?½uF?½Ë?¾ -è?¾.D?¾.¾?¾¦?½ò±?½·Ë?½s?½{â?½Ço?¾,#?¾`D?¾:Ò?½¼‰?¼ú3?¼&ž?»(G?¹cù?·›+?¸f°?»NÝ?½iI?¾'?¾…?½¯³?½+À?¼ƒ™?»î¯?»ê?¼TÕ?¼‘?¼ƒ?¼›³?¼¨?¼tÁ?¼(?»ög?»ái?»§;?»5?ºæã?ºÐ½?º˜u?º\•?ºaŸ?º_á?¹é°?¸ùá?¸|?¹(”?º¼?ºa(?º5?ºÀ?¹àõ?¹›ä?¹%?¸¥?¸ls?¸n}?¸¡]?¸à ?¸à]?¸ü?¸1˜?·õ?·ç=?·ä˜?·Î?·"?¶ùã?¶hÑ?¶s?¶Ïû?¶â”?¶’f?µù??µYN?µ)-?µq+?µÈ_?µêW?µäÛ?µ­š?µð?´>?² [?²½?²M±?²•S?²¡ã?²µÒ?²í?³)|?³MJ?³+Ð?²Ïì?²B/?±g+?¯íÝ?­S?«~Ê?¬¼|?®÷&?°?°‚í?±¬?±Gu?°ú«?°{U?¯ém?¯l4?¯K(?¯`Í?¯Kô?®Ïì?®e´?®® ?®½?­N;?«`¿?«‰k?­Z?®g?®`²?®²?­Ÿï?­Šj?­´?­»?­C?¬ÛH?ª&?§’a?§¨n?ª@?«än?¬*õ?¬+á?¬LÛ?¬K²?«Þ3?«Vé?« -[?ªÑ1?ªŽy?ªlÖ?ªã?ª_?ªKÕ?ª5?ª.C?ªQÐ?ª?©šX?©Mr?©&–?©‹?© -?¨ìû?¨Ù"?¨áb?¨òL?¨ûë?¨Æ?¨Q„?¨ C?§åí?§?§E3?¦¹ ?¥ é?¥J,?¦;~?§?§>É?§?§_?§À?¦úª?¦Úä?¦³û?¦|Œ?¦Y²?¦4¤?¥÷q?¥ÊQ?¥§Y?¥‚a?¥S`?¥ %?¤ÊØ?¤«Ä?¤hå?£ÔÍ?£N—?£=h?£ƒå?£„¥?£ì?¢ÝÊ?¢þ}?£„?¢»«?¢e?¢Al?¢2?¡õq?¡¡é?¡m«?¡e#?¡W“?¡7? È9? ü ?¡Ä? ¬_? ŠÇ? ±ì? Ë_? ãä? ð9? Â>? ³? {¾? YÏ?Ÿ{5?XK?š‘?™´?š/í?›¬`?›Åû?œ™?ž^²?Ÿ#1?žè?žÂ?žÊì?žrG?#?›)œ?š¸ß?œš??—À¡?—†,?—i-?—o¯?—(?–Ès?–ݾ?—y?–Ň?–.ª?•ñÉ?•É:?”ÌÒ?”>š?•±?•þ?•ÿÑ?•’¯?•†Ë?•r˜?”ÔØ?“¡Ÿ?’¥?“9È?”‰D?•%h?•+.?”Ó?”.¬?“éÈ?”Rl?”ßM?• W?”ßz?”wY?”Ñ?“Ë!?“µ«?“°C?“¬?‹n?Š¨#?Š^/?Šv½?Š†N?Š(Ð?‰…¬?‰2?‰Gä?‰f@?‰}B?‰w~?‰o–?‰cq?‰<€?‰s?ˆ³Ò?ˆ€ÿ?ˆÏ$?‰6¡?‰Cð?ˆþC?ˆ°a?ˆdf?‡êÔ?‡|"?‡rò?‡kB?‡8¨?‡4@?‡Q??‡Gm?‡S8?‡‰+?‡Ši?‡xª?‡p?‡ö?‡Z[?‡- ?‡ ?†íî?†Øâ?†×V?†Ð4?†×¶?†éÜ?†ÓÂ?†4?†A?…Ä&?…¨}?…Ðõ?…ðQ?…×ê?…°;?…€ô?…~?„Šm?„´>?…3q?…v8?…¬?…_?…"M?„Ü¡?„c£?ƒž9?ƒ8ö?ƒÅ -?„M›?„n ?„Œ³?„¬ ?„ƒ?„HÖ?„ZT?„k?„7Ó?ƒþr?„U?„3ê?„J8?„J ?„C?„ -?ƒs?ƒ,š?ƒ?‚Þ&?‚±?‚êÜ?ƒ ?‚ðp?‚ý¼?ƒ)?ƒ: ?ƒI*?ƒIv?ƒ/Ó?ƒ ?‚ñƒ?‚ñw?‚Ô«?‚| -?‚.?Ÿ¦?8Œ?2Q?vL?€.? ?€Œ?€Å?E¾?z¡?Ž¶?‡F?O±?€é3?€¨ë?€¹Ç?€½¥?€£O?€ª§?€·¤?€£ã?€vP?€QÔ?€?OÂ?O/?N¯À?Nóö?O/ ?OLÿ?O{?N>?MÒL?LÎ?K½ý?Lä?MGÖ?M¿Æ?MŽÖ?MY_?M k?LºÁ?LxJ?L¢?KÝ?Kùd?Kú'?K×Z?K›î?Kdi?KFT?K‰?Jß?JÅ?JÛW?JÊ;?J¢?JL?Jq¦?J#¦?IÞs?I¼ÿ?I®ô?I&?IU?I/´?I!„?IÆ?Hé?H¯b?H„Ë?Hsï?Hk?HTH?H1I?Gâk?Gp4?GFõ?GUÎ?G3g?Fé‰?F¡É?F]?F3?FTø?Fy?Fgj?F ²?EÓ~?EÒ7?Eìâ?Eó-?EÑõ?Eƒ©?EQê?EYv?EF•?E'L?E ­?Dðó?DßD?D¾c?Dº?DÅŒ?Dµ ?D‹K?De—?DCð?D ª?C¸?Cuè?CvW?C÷?Ci´?CR ?C:?C#ý?C(L?C#?C ?Búü?Bèn?BÆ~?B}-?B\Ò?Bk5?BKj?B0 ?B/u?B'›?Aò~?A¬§?A‡?A²?A{?AeÆ?AV™?A ?@Ñâ?@–Œ?@d?@Nõ?@H?@BÙ?@Ie?@4÷?@h??ñt??·Þ??€s??7[?>ßÏ?>ìð???>V?=KB?<¨ö?=J‡?>á?>ù?<íú?:{o?8îV?:§??; ?;7?;?:úÑ?:Î?:"?:?:p?:€?9¼ü?9¢¹?9|?9I?9 ?8ó?8¸²?8€É?8BÁ?8'ˆ?8=…?82?8¿?7ß·?7©?7f×?7.–?7 ?6Ì?'1B?' ?&Å -?&¢Ù?&˜Z?&œÝ?&© ?&•¯?&q ?&ql?&^e?&88?&¸?%µ;?$ñ¼?$ÄÊ?%#â?%_ï?%‡?%™?%d´?% P?$ð)?$Û…?$m?#ÒÀ?#ÎQ?#ÿP?#ú*?#Î-?#­?#€&?#/ì?"øx?"±‹?"£±?"´þ?"“ñ?"2?!#?YÞ?5C?Ub? á?!Q’?!?¯?!8æ?!92? þ? ­ô? –`? e°?ÚÂ?!(?ê?¯?ï°?éV?*:?sC?!î?²€?¼ï?U4?ÉZ?x¶?@Ý?Ú¥?Úß?_ -?¹K?•f?Jé?]?ÄL?aÅ?OÞ?< ?Ñ?Û?~?vØ?Ž?éæ?G·?ÃE?< ?)i?æ?l,?¸h?¾#?ê?Q¹?º?÷2?ág?O)?d? ûá? $?ð?½C?€þ?G>úL>ñËö>è3­>Ýá>Ðwí>¿›i>¦‡N>–X,>¥§¹>¾Ö€>ÏÅû>Ü1>æÏË>ð <>øÿ>ÿB%? =?É?í? Í­? Ÿ? ½?$´?0¹?1Û?ÕW?^U?ä ?`Z?ƃ?áô? ‘?GÈ?l)?oä?h?x8?Œý?šõ?¡×?¯Ø?¹?¹½?’(?tU?eO?R5?Tl?Ie?!þ?0#?f=?|{?nË?S.?5?/"?%Ã? Ó?Ô?ˆM?>°?)Í?P”?|4?uu?H?+u?t?äj?¥é?†M?‚h?gf?PÞ?V(?C?ç‹?zà?Qj?^¸?C>?È?q?º?Ïð?ü?~À?-ô?CF?ŠE?“Ã?]?’?Á ?_~?B*?}Á?­°?±G?š]?y¨?fK?Bh?!…? ï%? ¾ª? ? Q? Ft? íÓ? ¿Ù? Wy? õ? –? ðî? Ð ? é? •å? =?? õ"? á? ÈÝ? ×ç? ߀? €/? B”? KÃ? H@? cž? ˆ-? €? Vó? æ? -Ã? -Ÿß? -ÉX? -æw? -Ê ? -´.? -»A? -Ì×? -ì–? -ü ? -Õj? -‚? -jÖ? -”»? -žZ? -ƒú? -b? -OE? -? Ò? Et?>›?…? }ñ? 8? z?Ôv?£ä?³Ø?Æ?¥;?u&?dž?[€?#?ÛÏ?ÍÇ?°ê?‚?h‡?fá?[Œ?=ù?,l?#]??Ñs?¹?±»?–·?rP?fN?`9?C÷?“?Æ?û?áÝ?¸D?£è?‚?„¹?ZÊ?Gã?C!?)é?ø ?ÜÅ?Ý´?Ær?Ÿ¢?’“?5?|?Qø?;?7?"X?ô­?Óf?ÐY?ȹ?¢ˆ??‰ã?yK?O…?4ß?/ê??ò›?Öû?Ї?»«?†J?k?l(?T"?)&?³?M?ü“?Ñ@?º?µÄ?¤?y?[K?L°?5ª?F?ûô?ø?í›?Æö?¢Ú?˜Ú?ŽÏ?jP?Bõ?7(?0?&>ÿت>ÿ¸(>ÿœì>ÿg9>ÿ$r>þþ4>þßk>þ“q>þ>ýßÁ>ýéÒ>ý²Ö>ý7>ý ·>ý.o>üáî>ü?|>ûõ`>ûâ¼>üü>üRÉ>ü2>üg>üÏ>ûõa>û¿r>ûo©>ûdI>ûqG>û<%>úõ>úœ\>ú‚ì>ú•£>úŒ[>úq¼>ú2>ùêî>ùºÝ>ù…Ù>ùXH>ùGj>ù%º>ù>øû>øѧ>ø˜m>ø^>ø_:>ø4t>øi>øâ>÷½>÷•F>÷n$>ö÷v>ö‡>ö®>öìÛ>öòN>ö›Ù>ö?f>ö#å>õâû>õQ×>ô™ó>ónß>òŠó>òPV>òS>ñŸ8>òz>òóÌ>ó>]>òñ>ò‡%>òy_>òe£>ñ©ï>ñ=î>ñš>ñá†>ò+Ü>ñή>ñ+E>ñ«>ñJÓ>ñƒ(>ñ…q>ñsô>ñ&8>ðÊ>ð³ô>ðÙÃ>ðÛ†>ð¦>ð„>ðn²>ð'¢>ïâ1>ï•>ï(“>ïÁ>ïÞ>ï¹>ïC#>ïJ©>ï.Ö>îØ>î>îx>îX>î«>íûT>íí=>íË>í€Å>í>ìù>ìó`>ìÒ,>ì}º>ì:2>ì/š>ì,£>ëç>ëYg>ëJ >ë€>ëuì>ë+Î>êð+>êëL>êò¤>êÑå>ê€ñ>ê\M>êdp>êd >ê+Ž>éâð>é×æ>éæÞ>éÝG>é™->éeý>éH·>èÏ'>è ’>çhà>ç!e>çâ>æÒ«>æol>æ,>æÉ>æ—>åÞ>å}ÿ>å9P>å,ü>å%U>äïÍ>ä•Ÿ>äs1>äv>äjl>ä#>ãÚª>ãÎj>ãÏq>㯦>ãdç>ã/">ã'¢>ã(÷>ãÀ>â½/>â£C>â¨Õ>âˆÐ>â,¦>áï4>áã}>áÇ‹>áo—>á=!>áG9>áR?>áKR>á4>àŒG>àY@>à[T>àPú>à¹>ßlj>ß»·>ßȽ>ß¿->ßq`>ß2>ÞþG>Þê©>Þ¹1>ÞI#>Ýý >Þ&>Þp>ÝçV>Ý…‡>ÝMª>Ý@¡>Ý0s>Üóv>Ü$>ÜF">Üx”>Üüï>Ý_û>Ýo~>Ý| >Ýx<>ÝG¤>ÜÊA>Ü%c>Û¸q>Ûma>Ûà>Ú¤p>Ú/>Ú Ö>Ú(>Ú.1>Úí>Ú3>ÚGÅ>ÚÆ>Ú±Ð>Ú…>ÚCŒ>Ú.]>Ú¦>Ùؾ>ÙTÇ>ØÏ">ؼ>ØJ•>Øk>×’Ù>×'q>Öí>ÖÇz>Ö—Z>ÖA<>ÖR>Õù|>Õý>Ö >ÕìÅ>Õ¢ >Õr~>Õp‰>Õ|V>ÕSÑ>Õ2­>Õf>ÔÎN>Ô“¨>ÔkS>Ôa>Õ>Ö>ÕÇF>Ôm>Ò—¯>ÑN>ÑžŸ>Ò_O>Ó­9>ÔÏQ>Õ7`>Ôt>ÒS >Ïi^>Ì÷’>ÌUa>ÍÜï>Ðkã>Ò¨Å>Ô4ï>Ôøë>Ôœœ>Ó>Ð,>ÌSƒ>Èë>ÇŸ²>ȵ>ÊÆM>ÍC&>ÐTh>ÒÃ>Ó±>ÓpO>Ó`S>ÒèQ>Й >ÌÃ^>ÈÜZ>ÅT'>Âp{>Â^|>Ä<:>Åì>ÈF>ËY>Í×4>Ï—À>Ð]Ù>О:>ÐAô>ÏR¼>Îd:>ÌŒô>ÉƉ>ÆÚb>ÃÒT>ÁxÜ>¿Ä>¾íË>¿u >ÀÚ¢>Âkü>į>Å®%>Ç8ñ>ÈmÙ>É ÿ>ÉG&>Ée¨>ÉXÓ>É+ê>È¢Ú>ÈD>ǧ¥>Æwç>ÅH>×K>Â_F>Ávb>À„Ð>¿Zˆ>¾…ò>¾„O>¿à>¿¦>¿÷}>À‹>À$¶>ÀHj>Àd.>ÀKz>¿Ø,>¿š×>ÀW>Áu¢>Â3H>€À>¡½>Â×Ø>à />Ã6N>Ã?ˆ>à l>Âð >ÂýZ>ð>ÃÆ>ÂÛC>”+>ˆž>ˆµ>Ây“>Â6#>Á®D>ÁH«>Á -è>Àʃ>Àn>¿É|>¿ >¾{¬>½÷0>½\ž>¼”>»…G>º>¹Ïy>¹$>¸€`>·Øh>·—>¶»x>¶Ø>¶tâ>¶Jæ>µë¢>µš>µ€>µg’>µVÔ>µ1‹>´ØX>´´ >´¼¦>´ÍX>´Ìã>´’>´u>´°B>´õÑ>µ»>µ â>µ{>µ+Ù>µTY>µqÌ>µ^>µ „>´áw>´Ü¾>´ØK>´Ç´>´ƒÍ>´ «>³¾T>³”<>³aÉ>³;>²ÑY>²>²…¯>²¡Ð>²ÖB>³ -â>³«>²ûw>³×>³.>³Ü>²É>²3>± -h>¯~„>­Ke>¬Ì>¬>¬8Q>¬µ->­QC>­ÃW>®1>®†˜>®á<>¯T›>¯—>¯çu>°j¢>°•6>°È>±5l>±4M>°ü->°Œ>¯=Ã>­Ž>¬§j>«3w>¨|y>¥Ñ>¢üø> `Â>œêà>•ç£>Ž€½>‹pð>Œ‰ý>ŽSû>¸Þ>‰M>ä(>“ŽP>—žÊ>›-.>·ø> Q?>£gÐ>¥=>§<>¨‡ß>«5+>®àØ>°ÈÙ>²ä>µ>µˆ¤>¶¦>¸y|>¸³Œ>·îî>·*">¶ÕR>¶™\>µ·ä>´³­>µ´O>¶Øû>·¬õ>¹n·>ºcÛ>»!Ž>»ƒß>»ø>ºÏ >¹Ä>¸àO>·í³>·'>¶¼>µ5>µ­>µñn>¶nO>¶!>¶-L>°l>¥c>¨Žã>³xÎ>¶i’>¶>²|â>°9¾>±ki>±^>±y4>°‘ >®Z=>­þŽ>¯™°>°¢>¯ÒH>­†9>¯Ò>±C>¯FÄ>¬èç>¬Q¿>ªÛë>§`æ>¤ú~>£ŠE>¡º>ŸOO>¨T>›Ì>—Ü¡>•îº>”³v>‘$3>Š>ã>… c>»~>sqë>fFI>Xyí>P¨Ê>Orý>ZÔZ>f~>nh>z¥Ô>ƒ,=>‡í´>Œ÷P>’sõ>•äÓ>˜D*>šo>œ\Š>ž‰">ŸÆ >Ÿœu>Ÿ|è>Ÿ^æ>Ÿ­> Ù>¢¿*>¤Ô>¦4”>§°ª>¨5G>¨V">¨"g>¦È>¤6Ô>¢*>£ >£Sî>¤–>¦é¬>§!#>¦7‚>¥(×>¤Þ’>£_>¡(> wL> °>¡,>¢)Ü>£WŒ>£¥‚>¤p¥>¤·>£Å&>¢­G> ö->Ÿ->žË¥>Ÿcù> Î> à0>¡7”>¡È>¡‘]> ÀX>ŸÚ">ž´¸>ž'>žë>žQ²>žø>žb±>Ÿ€>¡-Û>¢,¬>¢L[>¢ˆ >¢ì>¡L˜>¡ZÃ>¡Ø¹>¢>¡õ7>¡-«>  j>žØ´>ýÂ>ù[>ž1Q>×ö>(>œÉ€>œ¶ ->œÁ5>œÃK>œÉ•>œ¬!>œYK>œ@{>œN>œ\\>œjg>œq­>œA°>›è¯>›Î>›Ñí>›×>›ÞÙ>›Üþ>››«>›BS>›+ö>›)>›"ç>›A>šý|>šœo>š>÷>š(ï>š&y>š$Ó>š Þ>šÅ>™›>™F·>™1 >™'$>™ô>™Ã>™>˜¤|>˜`ž>˜W¥>˜R$>˜6¾>˜2>—ú®>—‡‚>—T‘>—H²>—%z>—"y>—@Z>—à>–¥>–w„>–lÅ>–a:>–Kc>– >•Se>”¾0>”ëê>•T¼>•j>•W©>•cØ>•7Q>”ßÜ>”µ<>”­û>”uÊ>”T1>”’Z>”c\>“û>“ß9>“úA>“ª‘>’ýj>“‘÷>“åŒ>“Ÿ>“M>“¹­>“Ôß>“ót>“çË>“¡Ù>“hÁ>“Ju>“-Å>“>’Ú³>’²º>’o>’0Œ>’œ>’M>‘Ì>‘†¿>‘ˆN>‘\Ö>‘ÿ>á­>âž>½J>ŒI>V;><%>)À>ïj>¸©>š¼>qí>-(>Žü‘>ŽÈ¿>Ž®å>Ž´>Ž¦˜>Ž§º>Ž„>>ŽPM>Ž5™>Ž#v>ûô>Ø'>‡F>#„>í>Œêò>ŒË>Œ›b>Œkˆ>Œ=Œ>Œ–>Œ -«>‹ì?>‹Áœ>‹¤º>‹„>‹Y>‹:>‹>Šð>Š² >Š²|>Š¹%>Š®Ã>Š6>Šv>Šxe>Šd»>‰ºt>ˆm>ˆÃ¹>‰d>‰Ö(>‰´í>ˆŽd>‡*Ó>†Ob>†EÚ>ˆE(>ˆPï>‡]¹>‡ÄT>ˆêh>Š 5>‰ÿ†>‰ªø>‰5e>ˆCÒ>‡“Í>‡Þ >†õV>…— ->†.ž>† ¨>†>>y’Â>„´>ˆkp>ˆã>‰%ä>ˆí>‡ðä>†k >…Ãr>…7™>„®‡>„‘>…€H>†öN>‡ìD>ˆøq>‰0»>‰1ª>‰È‰>‰äS>‰u×>ˆÀR>ˆ²>‡Ž°>††D>„?Û>€;5>~‰Ý>€ T>€læ>ÇÃ>ƒ¹Ï>…~ù>†>>‡!>‰Ö>‰ÍC>‰×r>ŠGõ>Š¼J>Š.>ŠQ >‰Ñ>ˆÑ>‡°>…Íñ>ƒöÁ>v>v€œ>nx>sä>x%‚>|¶W>€ë¯>ƒ >„Íj>†Ò¾>ˆ™&>‰ÙZ>ŠçP>‹ôŸ>Œ.ä>Œ(¿>Œg¬>Œ2J>Œ,>‹Â€>‹ î>Š6¼>‰Ï>‡U³>…Xe>ƒcâ>€ÌÂ>{>_>t‹œ>nw=>jš>lN<>rQK>xÏÙ>~¥ù>‚"!>„‚é>†›ô>ˆv…>‰óh>‹jì>Œé>ŽÆ>Ž¯®>Žè#>Ž >š&>ŽÁÄ>O‘>Žý`>Ž…>Ëô>Œ}>‹Vu>‰ëÇ>ˆ!`>†,O>ƒØ§>F>|’[>uá>l˜>^°„>W(ù>Y”>_ÿ>g›U>pO>wyg>}ÝÌ> G>e>‚ÑÅ>…d>‡–N>ŠuM>ŒÈ»>ûq>Ž'>G—>F÷>~>ÿÜ>NN>n4>‘g>hL>&>±>Ô>ŽNØ>Œú,>Œß>ŒPÄ>‹¡>‰_$>‡”l>…ô\>ƒÞH><>|s›>uÇ'>nºà>fæ”>]¥á>Rñå>J¬>JVÕ>S_*>]¦V>fSK>m‹>t*>yÿ >C&>ïç>ƒç@>…É›>‡U™>ˆ…7>‰ëž>Šâ9>‹Ík>Œ…Ì><>u>´(>ØA>Ž4Û>Ž‹¥>Ž°Å>ŽKÅ>ŽÃ>‹ã>Œw0>ŒoC>Œ¥ý>ŒPª>ŒV‡>ŒaÓ>‹;>‰„Ò>‰µD>‰¾z>‰<>ˆA(>†Òæ>…¥À>„Hú>‚¢>>ï>~Ð.>z¬ƒ>vP>p¸”>kk_>dÔ“>]<Å>U9N>K,Ÿ>@7>5†J>0Ùì>7Æz>B­Ñ>LÝ>UDù>\”¡>c9`>hZh>l|\>q‹>tú>x-‚>zØi>}&Î>>€5b>€¿>E~>Íý>‚7j>‚‡Å>‚ðn>ƒ ‚>‚ä8>‚éâ>ƒ¢>>ƒÕ+>ƒÖ‹>ƒÖŒ>ƒÖ^>ƒÎ²>ƒ®ª>ƒºã>ƒÔ´>ƒÖ`>ƒÖn>ƒÕ>ƒ³Ã>ƒI~>ƒü>ƒß>ƒÑ>ƒ å>‚Ý>‚q+>‚I>‚>B>óÖ>’N>_B>€ô–>€®Ô>€Q|>­>~Åô>}¢>|vf>{†>yl+>w‹>ukt>rþb>p.;>l÷¥>i·>dÆ–>_Ïl>Z8z>S¨A>L‚á>D¬ù>;w>0žÞ>$ŠC> "È>)p>4¸F>>rs>FÌ–>N G>TYÞ>Y²”>^Ž>bï¥>fªA>iÏø>l^–>n²Y>p‘m>r \>s\G>tz°>u£ï>vr|>w+>w¬¿>uçK>uXÏ>x…á>yŽÅ>y¢>y¡ž>y‰‡>x®L>v_>wüÌ>y‹£>y ·>yV`>xHÎ>xó}>x‘Z>tÔ¼>w;>yz1>y &>xMm>xã>xN>wó™>w0>wÇÔ>xo>x>w÷7>výî>v:>vxø>vË>vO×>uêL>vM‰>vÎ>uD>t÷­>tô!>tô>tíù>tŒ4>s³Œ>sgP>scb>sCé>rº™>r -Ê>q×,>qÆ´>q8>ppF>p1Ï>oK>nHq>nD>me©>læø>káî>j¾‹>iú*>hóµ>g†">eøâ>d3Ë>bT8>`%È>]OÝ>Yо>Vn>QÎ3>Lq>G‘ª>@ -Ü>8GŸ>3še>+JÛ>!3£>¼Ñ>&>œ >&$g>.ÚM>6hŒ>=pÓ>Bf >Eѱ>L<•>Qo>TnÖ>WN>YÐø>[Ê>\/>YI>Yç¸>Z2b>_Æ>c9>cȈ>d5ž>e<>eW5>eYö>eZ>e`¥>eº<>f… >fâ3>fæ»>fÇ>f¿ò>fãi>fé=>féb>fé >fÒ>f&q>etP>eZ`>eYø>eYø>eYø>eY7>eE9>e'ï>eMÿ>eY>eZì>eB>d•Â>cä[>cÊñ>cÊŽ>cÊŽ>cÊŽ>cÊŽ>cÊŽ>cÊH>cµR>c ->bWL>b;•>b; >b:Œ>bb:¢>b:è>b/¥>a©u>`Ú ->`¬Ô>`«¹>`ª¦>`l™>_ƒÆ>`&0>`‹Š>_ÛQ>_/å>^¡p>\Ðs>^ ó>^ôX>^>>^v>^Kj>]½‰>]ŽB>]Œæ>]Œå>]Œº>]|y>\áä>\4>[Ø(>[×¢>[ùì>[ü³>[îs>[‡>ZÁé>Zr¬>Zn>Zn ->ZiÓ>Z-$>Y} >Xò>XÞé>XÞœ>X×™>Xh>WŒÞ>WPà>WI>>Vê>Vw>UÇ>U²ç>U#Á>TXN>T·>Sw[>R­T>QõX>Q&>P U>O!>Mø>L˜ˆ>Jð¡>ID>Gù>D´">Aè|>>­å>; -`>6š*>1«¨>,'*>&>8@>í> #º> -¤>Œ>}¹>aÓ>Èr>&®>+±‚>0·Ÿ>4ñë>8³A><>>á`>A<}>C-Á>DÖj>F6d>G^Ÿ>HJ»>I&â>IÔ‚>J¦é>JÕ~>K -Í>Kå|>L[8>L>F>Ky‚>Kâ>L]¢>LcQ>LcU>LcT>Lc,>LUb>L>L,Ö>L`2>Lc&>L5>K$ž>K£<>LY½>LcL>LcT>LcT>LcG>LZp>KÜ*>K.>JÓ¦>J_ù>H6Ë>I‡°>JÆÉ>JÕ >JÓ^>JЗ>J­Ø>JªX>JgÉ>I‰Z>IF›>ID‚>ID€>ID>I4+>I8>I7<>ID>I3ˆ>H“Ž>GÓ>Gµ&>Gµ>Gµ>Gµ>Gµ>Gµ>G´þ>G§é>G{>FIO>F&?>F%«>F%«>F%€>F%l>F&¢>F%$>F >E»6>DÙT>D˜2>D–C>D–B>D–B>D–B>D–B>D•¹>Dyb>CÏÖ>C$›>Cç>CÍ>C“>C¯>C×>C×>C>Bðö>B?'>AO>Aw§>Awm>Awm>Awm>Awm>AvÜ>A` >A`>@zf>?øÖ>?è0>?è>?çe>?Ó@>?·N>?ÞÈ>?æÚ>?µÙ>>Ú×>>`I>>X¢>>X˜>>Xc>>X‰>>W'>>6A>>0}>>1É>=i><Õƒ><ÉC><É/><É/><É/><É/><É-><ÆÄ><|q>;–J>;=7>;:[>;³>9Ä5>:¦>;*8>;9­>;0l>:ª¶>9Ôô>9«>9ªZ>9ªV>9¦è>9‚î>9ˆŠ>9¦¿>9v|>8–>8!Ž>8î>7ïZ>7þW>8Ÿ>8>7ø`>7|n>6Á>6ŒØ>6‹‡>6‹†>6‹h>6‹*>6‚w>5öÆ>5#Ÿ>4ü¼>4ü>4ü>4øü>4£Ì>3¼)>3o2>3l²>3jª>3$²>2=É>1àì>1Õ·>1Tr>0F>0/>/°­>.ØÁ>.CÂ>-Qù>,n¦>+C_>* ê>( É>'Ý>%36>#"¡> ž->³>‡ >á->£Ó> ÉA>Ca>á–=ôN²=á<´=ßY´=ñ©œ>vŽ>žˆ> êT>…,>|>ï¥>Úž>RD>¡¾>!ƒ>#+>$nê>%ˆ'>&Œ¯>'8Œ>'çë>'¤u>(ó>)³8>* ÷>*Ï>*²>* <>)Úç>)ÀJ>)´ÿ>*¤î>+z>+˜>*ên>*yn>+C¡>*™>*Ê>*J>**>*«>*W>*½>*>*5>*5>*5>*5>*5>*‡>)ñ„>)§é>)î ->*>)g>(ß>(€¬>(ä>(€C>(€Â>(€Ë>(€Ë>(€Ë>(€Ë>(€Ë>(€º>(t;>'Øž>'´>&ñ±>&ñ`>&ñ>&ñØ>&ñ‹>&ñ>&ñ`>&ña>&ñZ>&éŠ>&fZ>%‹x>%b>%a÷>%aö>%aö>%aö>%aï>%ar>%bÿ>%a>%\j>$ê‰>$¡>#Óz>#Ò>#ÒŒ>#ÒŒ>#ÒŒ>#Ò>#ÒŒ>#ÒŒ>#Ò‰>#Íæ>#el>"~>"Cñ>"C!>"C">"C#>"C#>"C#>"C">"C">"C>"9!>!§’> Õ> ´ > ³@> ´Ê> ³5> °d> ˆ…> > ±ô> ³µ> ¯d> F]>^>%h>$N>$N>$M>$>$›>$•>$>$=>ˆ>wª>¯>•!>”ä>”ä>”ä>”ä>”ä>”ä>”Ä>”¡>”º>\q>ty> Û>|>z>y>÷>ùp>ÛÀ>»…>˜>wµ>[£>;]>>ôþ>Õ@>µc>•i>t\>KM>"A>}V>!®>P_>r>‰>rè>Há>]>í>óê>Ó>¯>Å>f#>CÑ>'K>/>ù¡>ØM>Š>P¦>eË>-ä>R>¿>ãó>ÐŽ>¡Í>oþ>pÊ>Vi>1à>ì>ü€>Ùd>–Ý>}i>x>W[>:,>‰>Â>à…>ÀÜ>¤µ>>c1>E.>$N>w>ä'>Ã8>¡ >‡K>]ë>EQ>&z>ì>èò>Â>«]>w{>H½>Nu>4>N>÷G>Û>½3>›³>|>`8>@é>>öÊ>ãá>Å_>¥ƒ>€>eÈ>M>-E> \>í¨>Äæ>wÏ>x«>m>VD>7>>Æ>Ã%>L‘> ùß> #> Èõ> ü> ã¸> òI> è·> ÈE> «í> W5> n > û> ,2> 6> òØ> ×s> ¾R> ›ç> üð> -É> í> #ò> ’> è|> È*> ¢ž> |Œ> ?T> R> -Ý—> -÷Ñ> -æA> -Ô> -·> -™€> -x÷> -\š> -=E> -1> ûð> ßÈ> ¼ã> Œ> {Ó> c> B(> ÿ>ÿk>àÆ>ÂÇ>/>nC>C>>64>Þ>ó°>Êq>¦ÿ>^™>S‘>Bé>>ó²>Ð.>¦s>z‹>VQ>+á>ÿÚ>ÑÃ>Ÿý>n ><>ì>Á/>3z>â>+>º‰>h]> -ø>¨z>>>Ñ>K¾>·ð>¼=þ«û=ý=û6ø=ùJ=ö—¸=ó¨"=ïÿ|=ì{O=èb=ã¬=Ýåp=×i²=Ïú•=Ç\ñ=¼¿Ç=­Áý=«_¯=º=ĺ=Í&}=Ô89=Ú- =ߧû=ä>õ=è:Ë=ë¥E=îvj=ðæ7=ó - =ôÜÚ=öM[=÷ƒ==øæ=ùYÔ=ú!Á=úÉ =ûRŠ=ûó=üd=üS€=üœ³=üÊ;=üë§=ým=ý=ý=ý =ý=ý Y=ý -=ý•=üÖ=üÁÂ=ü¼F=ü’=ürÜ=ü`þ=ü/½=üQ=ûñf=ûÐH=û©È=ûw7=ûQ¸=û*a=úù=ú×ë=ú¦*=ú}F=úK®=ú*=ùø=ùËŠ=ùž=ùlh=ùBÕ=ùh=øÐ^=ø°–=ø…f=øRž=ø¯=÷òÿ=÷Ã&=÷“a=÷h˜=÷3§=÷p=öÑZ=öŸê=ölù=ö9=ö n=õÓ‚=õ¨.=õyç=õG =õO=ôå¶=ô°I=ô…­=ôPn=ôT=óðÒ=óµÒ=óy¡=óR­=ó&=òå¼=òº‹=ò…h=òQÚ=ò!‡=ñÑ©=ñ›==ñˆÆ=ñ[ì=ñÙ=ðê=ð»Š=ð•T=ðg=ð3Ì=ïü_=ïÇ8==ïgÅ=ï=Ù=ï=îÆ(==îs@=îH_=î^=íÜ£=í³=í~¬=íRw=í=ìßX=쎻=ìy:=ìOŠ=ì_=ëÒJ=ëµÉ=ë†:=ëPß=ë$s=êöÐ=êÀ=é»Ñ=ç)=é\?=éá9=ép)=èf§=謼=ç…q=èÃ0=èÔÏ=蟬=èm:=èE|=è=ççž=ç´Q=ç…r=çl=æÕH=æØë=æx=æ‘Û=æfW=æ;U=æ¨=åÚÐ=嫧=åoË=å.Ó=å -Á=äÖJ=ä¢)=äpŽ=äG¨=ãç³=ã̘=ã½A=ã‰(=ã]á=ã+=âô4=âÈ,=âšþ=âo²=â4"=áúÐ=áÍÂ=á«=áú=áQK=á+…=àúË=àÉ=àœæ=àjl=à=Ô$Ö=ÓïÆ=ÓÅÈ=Óˆ=ÓJ=Ò¢m=ÓJ=ÒñÛ=ÒƼ=Ò˜i=Òcâ=ÒA=Ò r=ÑéÁ=Ñ·T=Ñi=ÑC=ÐèÈ=еó=ÐDC=ÏHå=Ð_¯=Ð[A=Ð6=Ï¡j=Ϲ=Ïš=Ï~Ý=ÏR\=Ï*´=Îø‚=ÎÌ‹=ΙØ=Îs¦=ÎDä=Îv=Íð?=ÍÁ?=Í›1=Íh­=ÍE=Í=ÌïQ=̺ƒ=Ì•<=Ìf=Ì;Õ=Ìø=ËíÊ=Ë»Z=Ë‹¥=Ël…=Ë Ã=ʃÇ=Ê0=Ǥ~=ɽ¸=Ênë=Ê> =Êê=Éè\=É¿?=É“ =ÉK§=Éì=Éñ=Èï=ȽU=Ș3=Èfœ=ÈHà=È_=ÇàÁ=DZê=Ç™e=Çfg=Ç4=Ç=ÆåT=ƾP=Æ‹Ï=ÆjI=Åë™=Åܽ=Åã;=ÅÆû=ÅwŸ=Åa=Å>=Å=ĪÖ=ÄÀ[=Äšu=Äy=Ä@†=ÃÙÏ=ÃåH=ÃÏ6=ç>=ÀÂ=ÃN£=ÂíG=Âèf=ÂÐ=³É=Â=Â3W=ÁÁ=Áì§=ÁÞ*=Á¿X=ÁŽ=Áp=Á>}=Á A=Àî²=ÀÊ=À•ø=ÀyÚ=ÀF/=À* =¿õâ=¿Ðò=¿ w=¿=¿M÷=¾À,?»‹§?»K?»!?».ñ?»sL?»Â¤?»ñŽ?»õ?»×ö?»¤}?»_H?»¼?ºÊä?º¡?º™¡?ºªC?º»h?º­…?ºqe?º'h?ºÁ?º ?º3-?ºø?¹«?¹Ix?¹O?¹«U?ºÙ?ºOS?º:?¹Üê?¹MZ?¸¶Á?¸M¡?¸%Û?¸%?·á¥?·…â?·"ü?¶Êê?¶ˆ?¶€?¶à4?·žz?¸ir?¸ïè?¹"Ã?¹&/?¹›?¹ ?¹ è?¸åX?¸{ò?·À?¶äB?¶["?¶rð?·?·’£?·Ï?·¡”?·7??¶æ|?¶éY?·#.?·Fþ?·4?·a?·v?·Hš?·|6?· -?·o1?·*³?¶ÐK?¶lc?µ÷¼?µhæ?´âÍ?´®î?´ð™?µ|É?¶^?¶a8?¶z?¶` ?¶4 ?¶Î?¶Ê?¶%W?¶ k?µÕ?µ—›?µf%?µ)u?´´?³ðë?³?²NB?²Ü?²DO?²í¬?³·Ò?´9Ó?´)?³Š?²É™?²„±?²í÷?³0?³Øq?³··?³|¢?³L´?²ò1?²Já?±®0?±œƒ?²0?²L?²´?²UÕ?²ˆ?²H‘?²ÎÆ?³eo?³Æ3?³å§?³á(?³Ñ?³¸ž?³“·?³e%?³6>?³ ¨?²Ü?²É?²c6?²SÇ?²y;?²®Ù?²Ì ?²ÃZ?²•Â?²C†?±Î”?±P?±Ü?± J?±wª?±£l?±Iì?°q?¯˜…?¯PŠ?¯?¯À2?¯”Ì?¯^µ?¯‘'?°1]?°Ý~?±3V?± ³?°j?¯“??®÷?®ìp?¯\€?¯íq?°d|?°·y?°éœ?°þã?°ýi?°ç–?°³¦?°J¡?¯”?®‚Á?­%(?«Ë_?ªûÔ?«í?«·?¬£@?­r.?®I?®z?®8?®4Å?­­¼?­{L?­Ó?®bt?®«*?®m?® ÷?­p}?¬±I?«ò5?«}?«¦D?«Û¢?«ìy?¬B?¬¦?­xü?®*?®€n?®ƒ[?®Pž?®ú?­Õ8?­Òû?­÷Ï?®?®1ä?®'Ñ?­÷7?­ŒÒ?¬âQ?¬ÿ?«zœ?«6I?«(?ªøÞ?š'y?š ?™Ò3?™qq?™ ?˜ô?™(q?™x½?™­ü?™»a?™³?™ªr?™¨Ÿ?™¥¡?™œN?™”Ë?™”Ù?™’\?™~š?™Oç?™¨?˜»8?˜Ÿ€?˜¾B?˜ôÍ?™$"?™F?™[/?™[¼?™C ?™Ù?˜ÑE?˜šÚ?˜?˜ª?˜Ïi?˜Üz?˜Ì¥?˜¥œ?˜rü?˜Pð?˜Q¡?˜kÁ?˜ˆÎ?˜†³?˜JJ?—ã?—€½?—Jœ?—Nv?—ƒ?—Ñ7?˜p?˜<»?˜HÃ?˜K.?˜F°?˜2G?˜ z?—åò?—â?˜¯?˜(·?˜)"?˜ ?—Öû?—¨4?—}‰?—G?—t?–Ù¸?–æ“?—!n?—cå?—™?—Á+?—Ó?—Óð?—äâ?˜›?˜/Ü?˜19?˜)Þ?˜4¨?˜D9?˜G9?˜U¹?˜ó?˜àÙ?˜ýœ?˜¹ß?˜V,?˜1Ô?˜W(?˜™B?˜Ó—?˜ó°?˜ûs?˜ø_?˜ó?˜íó?˜çñ?˜ßÑ?˜ÖK?˜Â‚?˜ž2?˜ƒ§?˜’¡?˜Æo?™¸?™ µ?˜ø£?˜¤$?˜u}?˜„N?˜¯‡?˜ß-?˜íª?˜­š?˜8É?—å^?—ÉV?¦¸ ?¸úg?Êu?Ú½Î?én?öcN@Ü@Ëe@ - Ç@ ¥»@’¡@Õy@tW@sf@ÿz@qé@äœ@ü@±j@Èh@ò@JÓ@¨@¦ý@³y@ öO@U#@èÿ?ý®“?òGú?å|ò?× H?ÆÈ_?´ï ?¢..?ë?}‹i?d¥ ?Y$ò?]L–?pNc?‡TK?™’4?¬ƒX?¾Ðî?Ïîí?ߘ‘?팷?ù¡]@ Ü@¨@ -¤¸@°@ÓÀ@%@!@Ò-@e@p@H‘@@c}@}w@?@Ü@<Ò@`Ä@˜:@rš@µë@×H@¦s@„ë@ê€@Áì@Kô@®#@à•@ÙÖ@Ÿ?@:ƒ@œÃ@¹ñ@™ˆ@&‡@ 1+@ š@^@‹µ?ö?P?éäô?ÛÚ´?Ì?—?»:Ò?©(?–:?„Er?k]É?Zƒî?Yw²?h)ë?±®?“e?¥¡’?·ÞÐ?É:a?ÙKš?ç˜H?óÎ4?ýõ¥@Pv@?C@ -Úî@ û@Á4@þº@È)@K™@Ó™@ŽO@ZG@Öå@Á9@)l@FÅ@_?@´Ž@Uy@ ò@ žU@ Ì@ ¦R@ Nê@ ¦@ @ vÚ@ ï<@!R<@!Œæ@!–n@!@!‘î@!œ!@!‚¨@!n@Ô@Ùy@½•@‰h@Éo@+È@Èú@Þ5@f#@ÇÎ@ µ@ 9Î@ @®3@:Á@ª'@Ä@aÛ@ÃÕ@@Y\@ é@àñ@ê„@• @ð@l@ @·@ i@ ÷j@B@@Ý×?ùšs?î"ä?ákÓ?ÓgL?óÖ?²`ï?  }?Š€?y](?`üç?W_­?^¦?tçq?ŠŠ¥?œµ}?®ñ¹?ÀSœ?Ðt@é1@T²@Á@,?@€v@ªŒ@µê@³š@°û@Ä\@¶@á$@xŽ@Y…@ -Ï@®"@ M€@ Y2@ @œ@ >3@ gn@ ¡ -@ Ìö@ ë@ û}@ þ!@! @! Ç@!@ Þ@ NZ@C#@Á‹@@Ê÷@\x@ú@b]@å¹@ðG@{3@ÄB@÷4@ 2Æ@ y•@ °Ñ@ ÆÃ@ ¸ƒ@ ša@ ™N@ ²U@ £¢@ O3@Ñê@F@Îê@›Â@²ß@åG@ù@ñõ@î@è/@ÌZ@¥î@‚º@^L@D¦@C@L@C¯@L@Ã@sH@2Û@%@Σ@™­@Ì@Œa@rá@ö@5ž@…ì@ @ö1@ËR@`ú@¼Œ@ ®@¾@{è@y@o.@‚Ä@W$@@@Ϻ@Pº@Œå@ ”ä@ -W&@§£@q;@ÀC?ù> ?ïÙµ?äüS?تš?Êñì?»¾²?«(à?™šm?ˆµ?qÛ+?^½?Y?eN?~Ü€?©Z? Ø¢?±€#?Àöc?Ï•?Ûô¨?çRA?ñè?ù½“@Æú@8m@@ %ö@ -Õà@ L"@ }ð@gD@E£@3ô@ñ@Ó¿@.¢@ì @(@1h@_[@ Ì@cF@_#@%@ãê@TÏ@!@ˆì@°X@¨ @‡"@c@LK@*Ú@×û@‡Í@‡ë@Õ>@G¸@´Ž@õN@Ø@þz@ò}@ø)@š@*ù@ å@Ýx@º¯@Ÿ)@¢3@«,@ƒs@8L@‘@&Œ@"å@å—@–B@Yµ@>Ï@-g@ì˜@XL@ W@6%@eÞ@Ø4@Ò¼@DU@¼œ@ ²@ù@„‹@èÇ@ @ÿ“@ËÀ@Ž˜@vÑ@v@[½@6Þ@9È@k@œ´@‘‘@Bð@ç8@žl@Ef@Î,@c¡@>6@vˆ@Í@ö—@úQ@æì@ÇŠ@Çn@ð@º@(d@û’@É£@»@´ò@á@$l@Úº@¾:@Ç”@Ö‚@Ñ_@¹e@›@~è@[)@)k@ýí@ïx@àp@¡@{@Q7@ ô@ I+@ pm@@Â.@5â@1`@ð·@˜@%@ Áã@ ¨0@ Þr@$¼@8N@ á@ õQ@ µð@ t»@ K@ I @ cÇ@ g†@ 'n@ º@ sI@ j@ l @ `@ QE@ H¯@ 5â@ þC@ ž@ 5I@ -ÞV@ -¾½@ -í·@ !@ -Á@ -¾ù@ -0@ -n @ -qÚ@ -ny@ -i’@ -z¡@ -‹ @ -ƒŒ@ -dp@ -4Ü@ - °@ æÜ@  @ Yò@ Af@ 6@ +@ÄÐ@ž@¡4@@L\@ž@Ë@‹C@E«@ôÑ@œp@-y@¯w@]î@Ob@i}@ˆh@„Y@P/@ -À@Õ@©Ü@G@œ @íÚ@ud@¨@“Þ@í@B0?ÿ å?ýa“?û‹S?ùq=?öÈÇ?ótÍ?ï½Z?ë¼L?çMÁ?âb¿?Ü·Ë?ÕëQ?Îa?Å)Æ?ºøù?¯9Ë?¢"¬?“ë…?„í3?lvÞ?TVÍ?Gg ?ILb?Y`?r4-?‡†ë?•Öý?£$Å?¯L?º2Ñ?Ãm?ÊýÂ?Ñ…y?מ4?Ýh?â—b?æù=?çËÙ?ãS?àÚ†?ⶮ?ç=¾?ë°›?îl?î„?ìæ(?ìš?ëß6?ëÏ{?ì?ì™Y?ípQ?îi?îC°?îS?í±Þ?ír]?ík)?í]?í¨?ìÌx?ì¤Ë?ìxó?ëé?êþØ?ê…ˆ?êÜ0?ë™?ì?ì ?ëdÖ?ê†?ê=?ê?êÊ?éÃÃ?é?èI«?çÏä?ççþ?è™ß?部?ê).?êm¦?êp(?êrÅ?ê^é?éü‘?éP†?è„(?è±?èu?éPW?éÌÏ?é},?èµ?Á ?Á–r?Á‡5?ÁÏ?Àv?¿õ±?¿Q¦?¾po?½¯Ù?½É?¾[F?¾‰1?¾W?½Î¿?¼õø?¼Þ?»_?ºœê?¹‘w?¸ð?·´Ì?¶pé?´‘g?²â|?±… ?¯©ß?¬úô?©ý‚?§Õ?£rÈ?Ÿ(^?š}É?•1¿?4"?ˆ(?€Î>?oØ{?[×??Fm°?2É?&%³?$+É?-â?=ìb?RI?fGû?xHP?„3?‹f‘?‘¬Å?—)?›â×? B?£ÃR?¦Ëo?© ’?«J?­Œe?¯4b?°RŸ?±N ?²GÅ?³»?³¸8?´<?´°Ù?µ$3?µ³l?¶c,?¶ßê?·³?·7È?·‰"?·é@?¸! ?¸.!?·Ýu?·?9?·©?·iÌ?·Å~?·Ûž?·Î?·Çk?·µŠ?·™"?·qS?·nY?·³Â?¸?¸<6?¸?·j??¶ g?´xä?³m±?³Uã?³é?´ü"?¶s¼?·q®?·€s?·QÀ?·72?·:T?·m?·Ââ?·xÙ?¶öê?¶Ð?¶`%?¶:ü?¶?µ÷S?µáj?µß?µÓ¾?µ¤Á?µÃ?´2_?³éå?´=?´-?´:ð?´9S?´6\?´Rü?´o¼?´p?´ÍÌ?´óž?´”[?´<«?³àá?³Qª?²ÿb?²Ù)?²|{?²j7?²Òì?³ m?²Øî?²‚¨?²U¿?²`ý?²ÿ?².?²5Ú?²•?²%?±ìF?±–ñ?±™J?±¥·?±MU?°Ø«?°ï?°šË?°ù?±Oc?±M@?°ñá?°H?¯}×?®ÿE?¯¥?®ô[?®²9?®Ê?¯?¯G‘?¯.H?®ãÄ?®è/?¯þ?®·?­ÉR?¬¡x?«„Â?ªÖ)?ªÜÇ?«bØ?¬)’?¬ðî?­Dþ?­)ç?¬ìË?¬²±?¬•8?¬¶M?¬¥Õ?¬²?«kÊ?ªùN?ªÀm?ª9?ªn?©e¿?¨Ü„?¨Ã?¨¨?©kÓ?ª,¤?ª|‘?ª”6?ªçg?«F%?«^û?ªËý?©?§(Õ?¥þ?¥ÿŽ?§?¨ ?¨x»?¨‡4?¨¬ž?©.¢?©fc?¨ö¢?¨›˜?¨Å?¨ùz?¨Ýb?¨‚?¨-»?¨¯?¨c?¨ ×?§ë$?§Ü¾?§ù(?¨ü?§ÿ‹?§êã?§¶n?§#V?¦Í°?§7?§*N?§w?¦¸?¦Uð?¦ˆ?¥î°?¥«Ú?¥c“?¥XÏ?¥”Œ?¥¿Þ?¥eØ?¥#É?¥XÌ?¥’ä?¥„…?¥‚±?¥¡?¥“£?¥9x?¤þ?¥x?¥ ?¤ÿã?¤Ï?¤yœ?¤Y¶?¤ª?¤°´?¤A?£_œ?¢á©?¢¶6?¢ïÏ?£<ê?£]k?£<–?¢˜™?¡ÿ­?¡ö·?¢Ié?¢§6?¢¡?¢Py?¢]?¢Y?¡ád?¡‰ -?¡:? Ía?ŸþO?ŸE‚?Ÿ×?ŸX×?Ÿ’S?Ÿ\G?Ÿ4(?Ÿ |? !P? &/?Ÿä?ŸÔ_?Ÿª>?ŸT?žTI?q?œG3?›|?›sw?œ -?Q?¥R?˜2?–¿?¨V? O?˜Í?˜ ?`ø?œà ?œQü?›é½?›ç?œ8?œaB?œaÇ?œR$?œ X?›ÆF?›—½?›PV?›@%?›gå?›+Á?šïÓ?›/?›?›Ä?›¾q?›£]?›¯·?›Çg?›l|?šã?šV¥?™zŸ?˜áX?˜´S?˜øä?™Ã·?š6Y?™ØU?™S?˜XH?—²}?—Ù?–µ6?—0M?˜3?˜Âð?˜q¶?—ÒY?—‰6?—¾?—¯??—¶?——Š?—·O?—úi?—Ïz?—l­?—(ß?–öj?–fE?•÷Q?–1Û?–^Ë?–yÍ?–~r?–Ç?•™N?•’?– ®?–7e?•©Ì?• º?”áh?•?•g@?•µë?•tV?•æ?”êé?”Âá?”\[?“ÕÆ?“Os?“Ä?“¡á?”|?”’½?”>Ê?“Ø…?“Åá?”Â?”8o?”ð?“Ï®?“H#?’ë!?“™?“K­?“Eô?“e?“Ñ?“$×?“/¶?“K?’Áš?’†j?’h¸?‘áx?‘U?‘HL?‘‰?‘?‘ñ?ø?Ð?ŽRÎ?Ž=]?ŽßÆ?¢§?ït?-?Žå? x?9ñ?‰l?'«?:§?,1?Žó?ŽÇ}?Žë?Žø?ŽË,?Ž»®?ŽÈO?Ž¾Š?Žª­?ŽÓ?Žàê?ó?=q?ŽÞ½?Žq?Ž£?Žè?j×]?j‹c?i‡‹?ht`?h=ì?h@ˆ?h\&?h_œ?hø?gú?hW?h,?h#(?h… -?hÇ"?h( ?g`-?fª[?eè™?eîõ?frà?fžï?fa?e±§?e è?dú]?e{S?eœò?e‚î?eB?dƒ·?dhe?då?e(Ÿ?epy?eó#?f62?eÀ}?e(.?d„3?cëä?cœ?c¬G?cµÈ?cC’?bó?b>£?bÐ#?c"Á?b¸d?bF»?bc8?b~€?b€U?bå%?cGú?c¾?b»)?bÁ*?bÌ?bÅU?b-´?a½F?a½Ÿ?b¿?bF:?bª?aÒ?b?bÛ?bþ?bl?a× ?al!?a;Œ?az?a/¡?a^B?`ý¢?`ù?`—{?`ŽZ?``6?`\0?`V?`aJ?` -1?` Ä?_ù0?_„0?_]ß?_M©?_­?^üû?^ÿR?_h?^é¢?^šg?^:^?]úQ?^X?^QG?]Øa?]į?]¸?]y¬?]eã?]:þ?\³>?\Fè?\V?\C«?[¸ë?[Ñ?Z -?Y"=?Y|•?ZC¯?Yê•?Y3?XÑk?X£Û?WÚc?V:™?Ukö?U¥?U0B?T÷d?Ucš?V*m?V—?U ô?T‹v?TnÔ?T†ê?UuÜ?V4ú?Vm ?VÅ?U0?T¿?TùÌ?UHÙ?T©W?T5'?Tl?Sç¢?R…”?R¦Œ?S i?Rb8?R`‡?Sòá?T®–?T:€?T_‡?T­?S›+?T¶?T5—?TÉ?SÑr?R‡u?P2ˆ?O!Y?O¯ÿ?Ožv?Nÿn?O6?OÅO?Pî?Q2Š?Pw1?OdÚ?Nu«?MZ¡?M5W?NŽ?O¸J?OÎ/?Op?OQ*?NŽ°?N<ê?N‘?Nª+?NèÖ?N°L?MÊì?M%1?M?MS ?MJ–?ML#?MÁi?N8 ?NF?Mc¢?M G?LñÄ?Lðˆ?Lù?Lv?L(Î?Ln‘?LȪ?M9?Lâ—?L]/?L*Ó?L‡?Lï~?L‡;?L5É?LeÞ?LZN?L(4?L² ?>ñÏ??au??¿?=Éœ?5ì????jý??3ú?>.?>Ÿy?>§-?>g?>m?>0æ?>?=Õˆ?=ºá?=³T?=••?=×;?=þf?=æ?=ùö?>!«?=§?<ð¾?= £?=D?<ÓÝ?<Þ;?<ÿÝ?<å¦?<ƒS?< @?<Î?<ÒÛ?=Ho??/¢?0LC?0ob?/Õ?0?0I’?/Ü×?/{M?/M¥?.ø0?.µa?.æ -?/c?.öÓ?.å_?.£A?.kÑ?-ÿh?-ÐÜ?-ÔÀ?.>ã?.¾f?.¡?.{®?-öI?-Ü?+³¹?*ž‡?)ç­?*IP?+“÷?,ˆ?-)?-?,§P?,2?+ò ?,™?,,î?,]ë?+ÚV?+yÄ?*ºà?) E?(s)?(òø?)´ ?*E:?*ò–?+ƒ{?+Jß?*ð?*Ço?*«Ù?*^–?* â?*5Æ?*‰?*È?*Ä3?*„í?*Tç?*4º?)ͨ?)4Á?(ð -?)/a?)ê°?)êK?)Ñ?(ÔŸ?(‚¶?(4{?(j]?(t/?(¬?'R'?'v?'oþ?'p/?&øü?&§ ?&{5?&[À?&h8?&{”?&c°?&8|?%÷M?%üµ?%Æž?% ±?%%?%… ?%Z?$8¬?$0ì?$*?#ìG?#ý¸?#P¶?"E?"&?"@ˆ?"´p?"ý.?#]?"Îï?"mb?"{ -?"v_?"TÇ?",^?!õÁ?!t? µ6? ¬? þ;? ³R? ,?Vs?U^?àR? >? h?ÖO?4‹?b?\?)­???Èv?Ž¥?z/?—´?–5?5þ?_?¼ò?±-?tM?°‘?ß™?—O?íý?µÙ?zã?GÒ?,?üØ?¦A?ê¯?ÿ‰?Î?…$?}?Àª?Ž?^³?´ß?Ø?:‡? âf? -Ô?cÚ?Ž>ýìø>ô„F>è×Í>Øên>Æ ‡>¸]8>³!.>·ï>ÆG¨>×å÷>æÙo>òÕ•>ü=•?)&?¼ª?Êæ? \n? )é?Ùc?9Æ?r?Ùý?çÈ? +?8P?ìÙ?Æ?HN?Qm?F“?t'?¨>?´Û?¥%?vö?mv?±®?ëN?ïž?,~?¼õ?Šv?Ï?áö?ñ¸?M?ñ\?£?Ž?ï"?=Ì?7é?×?.?ÇQ?£¿?‡·?zÈ?gŒ? €??Á8?am?X¤?–?¿Œ?Õâ?vl?T,?œF?h²?9?=;?ñ?½?4Ë?T#?Ç/?gO? ?…Ý?ºh?ÆÎ?r’?Ø??Þþ?´Ü?ÆI?‘*?÷~?ËÞ?à£?ðì?ûƒ?fÚ?yÉ?Ö´?O?8Þ?ø?µÚ?î·?Ý|?uÆ?7¹?kï?S¹?Ýc?ºþ?Ö5?¡ˆ?4Ÿ?3?J? -9?@Y?_¢?„?^e?€¹?‰^?w?™I?¥÷?8Ã?Ù‘?ØT?øè?«?O?L¥?,ï?ÿ?ó‰?íe?ÈÏ?¢ø?p‡?gV?p¨?A˜? þ¦? Ì? È@? ÇL? Ã…? ¸°? ” ? r,? J ? -"? %—? ? ø(? áÄ? Àâ? ò? zþ? ]I? ?%? !7? ¨? î@? ÆX? Ÿ? à? `u? 9Y? Ó? -òe? -ÓI? -²I? -x? -i¤? -F? -' ? - ú? îõ? Ï? ¶ž? ¢? Œt? v? \Á? CŽ? -„? {? Ü?ç¢?Ë+?²*?šd?N?h´?Oë?5²?Ü?û@?ã`?Êd?°q?œ3?†?lµ?O ?.h?î?=?ðº?Ø™?À.?¨?)?zƒ?e%?M¢?6}?•? 9?òÇ?ܵ?Æa?®¢?“Ë?w?Z?8¿?¯?ù[?å?Ïü?¹ÿ»e>ÿŒ¹>þë‚>ÿ+ù?¼?Q??§>ÿ’Ì>ÿòN?(s>ÿ„J>ÿ)o>ÿx*>ÿg.>ÿgØ>ÿL>þ >ýÃý>ýŸo>ý`Ô>ýÉ>ýÈý>ý§ð>ý\b>ý0>ýAœ>ýÀx>ý©c>ý >ü{õ>ûé >üù>ük±>üÕ>üh>ü3I>û­L>ü 0>ýY>ýàÇ>ýFÆ>ûÈg>úá>úÛÍ>û¾>ûMe>û=Ä>û[Ë>û˜>ø|I>õúh>õ’Å>õ7>óxv>ôŸ>÷ï!>ùY«>øM_>÷0>öõÅ>ö:>ò§j>ò_9>ö’>ùFÙ>ùÇ%>ø+Y>õ"§>õ=þ>öäÑ>÷>öA¬>ö ã>õÔ‹>ô¹Þ>ôÎÌ>õ5Ô>õt+>ôl>ôZ>ôœ>ô>ôü>õ“ø>õF«>ô’>ô¼>ôUh>ô@·>ô9¦>ô7Ø>óbë>òwÞ>òr>òt‚>ò[±>ò8>ñÕt>ñ¨Ì>ñ“H>ñEK>ñ Œ>ðç>ðšµ>ðk2>ðU®>ð.ý>ðs>ïÑ>ï]>ïa¨>ïZ5>ï:›>ï=>îïq>îÀê>î”´>îfj>î7Š>î Æ>íâT>í·‚>íŠò>í^z>í6„>í>ìô*>ìÉ6>ì—Ë>ìfú>ì$+>ëÃ>ëc¯>ëø>êè9>ê¿p>ê—>êký>ê7>éÿÙ>éÆð>é”>élî>é?ø>é ">èÜt>è©—>èw(>èEù>è£>çðõ>çÖ>çº9>ç’0>çb ->ç4>ç>æÚp>æ·“>æš‚>æna>æ7V>åú!>弶>å‡>åTž>åK>äÐ;>䇛>ä^­>ä?>äÊ>ãì>ã¼é>㈋>ãVS>ã- >ãµ>âÙð>âª>âp>â6!>âµ>áÒ9>ášu>á`Ç>á#O>àÝ”>àŸ´>àt;>àRÎ>à( ->ßóv>ߺó>ß&>ßX>ße>ÞÛ>ÞŒˆ>ÞE~>ÞVÜ>Þ¢G>ÞÕ>Þ·>Þ}b>Þ=>Ýùu>Ý°'>Ýk>Ý0±>Üîµ>ܪi>ÜmU>Ü3:>Ûü”>ÛÊK>Ûž ->Ûv ->ÛMy>Û"ó>Úùê>ÚÏÕ>Ú¥j>Ú}>ÚUÌ>Ú/é>Ú ñ>Ùß¹>Ù¼–>Ù¬ƒ>Ù”ñ>Ùy%>ÙX¥>Ùb>Øñ,>ØÈY>Ø«Ñ>Øĸ>Ø•û>ØY,>Ø(D>×ák>׬\>×(>׸Ä>×›¾>ׄ>לÞ>×ED>ÖÐ >ÖŠÐ>Öh>Ö—z>ÖÂX>ÕÔE>Ô“Ÿ>ÓþÈ>Ó¾>Óa²>Óá>Ñ·³>ÑyH>Ò°¹>ÒÚ>Ò»7>ÓÅZ>ÒøÆ>Ò(÷>ѳ÷>ÐWÉ>Ðê>Ò>Ò >Ò|>Òºð>ÒÍT>Ò£_>Òí>Ñe>ÒÞ>Ò"I>ÒF¨>Ò&>ѹØ>Ñðÿ>ÑñÜ>Ñž²>ÑÃ>иó>ОM>ЖO>Ð4¦>ÐFh>ÏçO>ϬF>ÐSé>Г«>Ïùd>ÏÑ>Ðs>Ð(¸>Ð>Ð46>ÐGœ>н`>Ðg›>ÏàÞ>Ï8>ÏZ¤>Ϊñ>η>ÍÑè>Íâ—>ÍÆþ>ͼY>ͱb>ÍK÷>ÍÂ>Ìè“>Ìø¤>Í Y>ÌÖí>̼Â>ÌÝÏ>̨>Ì>Ìó>ÌN»>Ì0ä>˶Ã>ˈ>ËWÅ>Êò>Ê­>ʦ´>Ê‘Î>Êzk>Êav>Êk>Êrh>ÊM>Êf>Ê*>ÉúF>Éù>Éèg>ÉÛ>ɾ >Ék„>É:>È¥ >ÈJI>Çý‚>Ç·‡>Çw!>Ç<Õ>Çu>ÆÕ·>Æ©%>Æ}›>ÆY>Æ6y>Æ*>Åòs>ÅÐø>ůX>ÅÓ>ÅmJ>ÅLJ>Å(>Å">Ääj>ÄÁß>ÄU>Äw>ÄIJ>Ć>Ãܽ>è3>ÃyÕ>ÃLH>à æ>Âù1>ÂÚˆ>ÂÀm>¡®>‚ß>ÂdL>ÂF,>Â%g>Âr>Áä5>ÁÃð>ÁŸ0>Ázþ>ÁV’>Á0·>Á Ú>Àå?>ÀÁ&>À›ˆ>Àu>ÀN$>À)4>À¤>¿á->¿Â9>¿ >¿|ç>¿[>¿6x>¿U>¾èP>¾Á¾>¾œ>¾qý>¾In>¾&>¾°>½Ól>½¥>½v#>½HŒ>½%>½’>¼àa>¼º¾>¼—>¼vÉ>¼O×>¼!>»ö€>»Ì>>»’&>»iÎ>»d0>»J®>»)>» w>ºóc>ºÎU>º¢e>ºŠ¹>ºoB>ºIµ>º/ß>º%T>º>¹ýé>¹Ü‚>¹Éª>¹½ä>¹C>¹cû>¹@©>¹&7>¸öž>¸è‡>¸É+>¸fà>¸?%>¸Wÿ>¸C>·ž.>·`O>¶Š>³ûl>°ÄÄ>®vê>®åû>±›ì>´L>¶l¥>¶Ì_>¶T>¶i>>¶q]>¶·Ž>¶ùõ>¶7i>¶?¯>¶i1>µÀ>µm‰>µ4·>µ$ø>µŒØ>µ¢K>µiz>´ñ÷>´÷ÿ>´W°>³ôŸ>´#>´Æ<>´“>³À˜>²Ð€>²ì‡>²H†>²i >²|A>³=>³)d>²·d>³\>³*Ÿ>³6_>²$>°Š3>±€>±r>°Ó>¯îÌ>¯Ý<>°@ÿ>°?§>¯÷¯>®©9>«ç´>­>®ˆ®>­ìÍ>®>¬ïŒ>©Òÿ>«Ís>¬/>¬*º>­ô>«3]>¨Ïõ>©¹>¨5>¤€ê>¡Íi> ‘ñ>¨P¼>©`º>£U«>¦>¬iy>ªûá>¤ ->¦<°>«³™>«¹i>§‰È>§H[>¥¸>¤ÿ¯>¨Æ¾>ª#\>©ˆ†>¤Þ>§ó2>«#^>­ Ô>­¤‚>¬ÂÏ>«ö>ª{H>ªËE>ªëÉ>§ÄI>¦Ê>¦¦>§Â¢>©«>¨åÊ>¤-Ê>ŸI@>œ¤‘>žãc>¥ÿÒ>§3n>¥ú¸>¥ü>¦J¾>§3>§¢€>¨Vž>§Dï>§9[>¥¡>¦x>§Æ>©8>¨í?>¨uQ>§÷ý>¦­ > ì>Ÿfï>¤øC>¦1>¡ô¶>¢´>¤`>£ýI>Ÿ;h>¤žÌ>§Ù>§iÔ>¤n;> Â3> rŒ>¡ä,>  ü>¢•æ>¤îk>¢½¤>¡Á>£Ôç>¥i>¤8å>¡€>ŸÅh>¢oò>¤Ó‚>¥)ú>¤³í>¤û>¥ò1>¥ÈÐ>¤À“>¤WQ>£™ >£^ >£< ->¢aò>¢þ>£w¹>£WÞ>¢‡z>¡×=>¡Ö7>¢¡>¡?z> aé> ñj> µš> \> FÄ>ŸÙÛ>Ÿ¦>Ÿ§µ>ŸÉd>Ÿ§¼>Ÿ‰‹>Ÿni>ŸPH>Ÿ2A>Ÿm>žöO>žÑ>žµ>ž ¿>žŽ‡>ž@>žte>ž` >žN>ž:q>ž&>že>õÈ>Üß>Á„>§b>Ž–>y>d>L>.ß>S>œï‰>œÎâ>œµk>œªú>œ›Z>œ‚ß>œiÓ>œ^>œQ—>œ::>œ,Ê>œ b>œž>›æö>›Ç®>›¦Ð>›…(>›vë>›h>›ga>›T(>›1ƒ>›Z>›e>šêG>š¥ç>š­?>šÂ{>š²>šŽ²>ša¸>š>™ÊŽ>™±4>™ºÒ>™‘’>™H>™>Š>™7@>™ Â>˜Û“>˜¾·>˜@‡>—û>˜90>˜0?>—úŠ>—½¯>—°®>—‰I>—+u>—'Ø>—'÷>–ÿë>— Õ>—!>—À>—$>–ä>–ä!>–¿]>–Àœ>–¢?>–U]>–3y>–34>–'>–é>–J±>–RÅ>–“s>–Vx>–5n>•â>•l•>•ÁF>•r‰>•S‰>•Pç>•GØ>–!Ä>– ¾>•S>”Y>”7w>”B>”T ->””.>”Ôc>•¥>”¹€>“± >“ëÿ>”ÒN>•q>•+#>”ïô>“Ê>“D~>“ >“'T>’š>’É—>“Ä>“$>“")>“ª:>“A>“½>’Ûk>’y˜>’`¤>’š>’š>’½±>“’>’®í>’>’Ò>‘Åñ>‘]>>‘ÐÓ>’T¦>’¸å>’¿›>Èd>ÚA>Ž.·>æA>²>þÒ>\,>Œ>>Š>‹¶>Žh>Å•>Œ£> >9L>‘>ør>kæ>[->º4>-">V¦>‹ˆÞ>Šn >‹É>Šíž>ˆßû>ˆži>‰'¥>‰eß>‹gå>˜¯>ŽXd>ŽI>Œ­©>ŠY)>Š>Š[A>ŠŠ©>‰ÿ >Š€ò>‹£ð>Œ¡ž>O>ŒcÑ>Œªs>eÇ>0ÿ>ŒK°>‹ê·>Œæ>ŠV >ˆô‚>‡ˆ ->†£@>…ŸE>„Ó>„,‚>…>†Ÿ>‡—‰>‡=>ˆÿ:>Œ†>ŒÅÝ>‹y–>Œ9>Œñ*>¨Ã>Œé>Œ02>‹¢->‰øM>‡Væ>…v@>‚©Ž>~Y>|1">{Öô>~ >€‰4>‚•A>„_>…ć>ˆn>‰ÌÕ>‹/^>ŒŒN>‘8>²ï>Ú>hÏ>^>vÅ>Œöÿ>Œw|>‹lº>Š!z>ˆ$>…Þ¦>ƒ¤ª>€ð;>|`•>vÐÔ>rZý>o¼—>p˜>t_>z­> £>â>>ƒÏ->†;'>ˆ*£>‰ýH>Œ>àË>Ž‘A>ŽI>Ž|>Ž%>¾z>ŽU>Ž—ü>ŽHü>Ž“>Œé†>‹…>Š–·>‰‹X>‡z‹>„ôL>‚÷â>€•›>z‚>sšÂ>kÔÚ>e É>`öå>`Î>bdš>gÈÁ>onÀ>vtö>}Fª>_&>ƒ<ž>„²)>‡gù>‰Pw>Šy{>‹°Ä>Œ˜>£]>ŽÈ>ŽÔÏ>Žë >Žä#>k>8>KT>ƒ“>pŸ>½>ŽãÜ>Q¼>Œ_F>‹w_>Š×Þ>ˆü>‡Ox>†|Ù>„‚*>‚o>2>xTÃ>rð>kع>c«5>[[;>S•>N°•>O®7>TÖy>] Ú>f>mN>rE>xoö>}í5>€Ò‘>ƒ >… z>†Ç`>‡lŽ>ˆ‡>ˆÝ;>ŠQ÷>Š¡Ú>ŠÑ=>Šû9>‹?þ>‹Ë>‹Ö›>Œ¡>‹ë>‹01>Šèl>Šæ¼>‹Lc>Š¼@>‰¯>‰”§>Š€>ŠD–>ˆ®>ˆ>ˆh¯>ˆp >ˆAV>†Æê>…t>„„à>‚_0>€Ÿ >_g>|¾>xóx>tD‘>o>±>j¥>b¬Þ>[Éÿ>U">K²Ô>Cu—>=oˆ>; Z>>’l>FbÛ>Nˆ˜>U×>\Î$>bÈÖ>g/ >k€>o¯>shÊ>vIæ>x¬è>zåD>|±È>~<º>­Ø>€€T>ü>“™>‚ ->‚qH>‚ÇÔ>‚Ðb>‚—•>ƒH">ƒ­f>ƒÑ(>ƒè¨>ƒùé>ƒâÖ>ƒ²>ƒN4>ƒøá>„9>ƒôn>ƒã>ƒÎ«>ƒµÀ>ƒ˜q>ƒv‘>ƒPµ>ƒ&‰>‚ùw>‚Æ>‚ú>‚O}>‚ ÷>½©>gš>i>€ž<>€)d>KC>~#1>|Ñ>{XÂ>yµ0>wÜÁ>uÊ>su>pÚ€>mîá>j®6>g ‘>býh>^v§>Yk½>SÐ>M’>Fº>>×>6ì>,žè>(ò>0×>9¢>@í¤>GãÝ>N->S’Ï>X|4>\àL>`Ĺ>d8 >gHr>iþ`>laÆ>nnÏ>p=¨>qáà>sFÚ>tt>už>vƒs>vÕ8>uÆ*>vÕk>xÆ<>yXŸ>y¤Ì>yçå>zª>yú>yp[>zp>zše>z§¬>zWã>ycú>z}>yª‘>vƯ>x¿l>zDò>z5>z§>z>yáë>yp>wÿÍ>xˆÇ>y3•>yÀ>xä¥>xŠ7>xT¤>xF>xŠ>wÓ->wq®>wYð>w-‹>vë©>v¤â>v_à>vŒ>uÊi>uy®>u%?>tË>tdÀ>t>s¤‚>s;(>rÇ_>rK³>qÇŠ>q6’>p™>oу>nò’>n:Ç>m‰±>l¨C>kÓ>jWó>i1">gÕ>f90>daÃ>bT‘>` ,>]^8>ZRü>WAú>S¹Ã>O°:>K0>FDÍ>@.¬>9ÏÕ>4F.>-÷>$¹Z>›w>Æ)> z>(¡>>/öô>6rH>A¡>Dà¼>J'>N1>Q‡Ý>Tƒe>W&i>Yký>ZÉ>YW>ZËW>[×)>_±ƒ>bC>c$ì>cß>dá>e³>evœ>eÖ¡>f'O>fiù>fž#>fÉ#>fñ}>fÿ¢>gê>g0¼>g+g>g&‚>g1¨>g3µ>g3¢>g/>gÿ>g`>fï>fØ¿>fæ>f˜²>frZ>fp >fXƒ>f9¥>fo>eï…>eÀ§>e¨R>e‹w>eh¯>eBh>eƒ>dóÕ>dÍ>d¢>dzÒ>dSƒ>d)æ>cÿ¦>cÕ>c©>c|½>cOL>c ¾>b÷(>bË_>b“8>bV>aÿ)>aé>a:È>am >a„f>aVó>a">`7ò>]ƒ>_>«>`?>_Œ@>_dŽ>_¦–>_‹)>_UG>_!>^ö>^©I>^i±>^K’>^ø>]Ô´>]•ž>]iº>]0M>\ïš>\²>\u“>\7>[ö>[±±>[i²>[‘>ZÊ>Z‚ë>Z5›>Yäè>Y†>Y1œ>Xн>Xjò>Wý>Ww>V÷Ÿ>VŒr>V>Uj­>TÁø>Ts>SJ\>Rqè>Qˆ>P„>O]Ó>N¬>L¨G>K>IAç>G5–>Dä@>BEÀ>?Rï><Ý>8Tà>4<Û>/²Ã>*¯x>%(c> >-±> K>Ÿ4> !ˆ>ÀØ>‡>c2>$øv>)û>.{ý>2…Î>6!Ò>9X>>¬a>@Úð>BÀ{>DbE>EÊÕ>Gs>H Ã>Hñ§>Iµâ>J]>Jï[>Kj¢>KÐö>L >L&Ä>L†§>Lç>M>M5L>MPh>Mg>MHL>LŒÖ>Læî>Mh>Mnh>MD>Lƒ>L5ì>M-ï>M?7>M/Ã>MÐ>MÅ>Lç´>LË>L¬Ž>L—Â>LHƒ>KÜ>KG>Lú>Lí>Kç>KÄõ>KœH>K{a>K]Á>K3w>KÉ>JëÝ>JЉ>J§ÿ>Jƒ¬>JZi>J9¥>Jç>IòA>IÏs>I©È>Iƒ•>I\Ê>I4ß>Iœ>Héi>HÂs>H›Y>Ht ->HJŸ>H#*>Gü€>GÔå>G®á>G‡#>G[>G-?>GÀ>Fà¦>F¼Å>F–¦>Fo!>FG‹>Fl>E÷F>EÏ>E¦O>E{x>ET>E-]>Eï>DÜe>D³m>D‰>DaÁ>D7°>D ö>Cãù>C¸ >C->Ce—>CDn>Cý>Bñj>BÊ3>B£f>BzH>BNR>Bí>Aøƒ>AÓN>A­ë>A…Ý>AU>Aç>@Úç>@Ó>@­>>@„¯>@\—>@4ç>@ õ>?Ü‘>?»Á>?—Ñ>?n>?=´>?>>Ó€>>·&>>Ž=>>`i>>=->>!>=î>=Å>=Ÿd>=xò>=PQ>=$><õY><Ξ><]>;­Â>;œ¸><X>;úƒ>;Çã>;žÇ>;z‘>;N´>;t>:å5>:ļ>:Y>:fþ>:?ì>:é>9ãH>9ª¤>9wy>9Ö>9V>8ô>8Ã0>8‰+>8PÍ>8$m>7äÈ>7®Y>7€>7IÂ>7 Ï>6Ò>6•c>6RÍ>6þ>5Ì¿>5‚À>57>4æú>4“š>4=?>3à4>3}¨>3ü>2£ù>2*×>1¦ >1ð>0]Ú>/Ê >/è>.Lù>-iÞ>,kZ>+NZ>*_>(©>'e>%RR>#U>!¯>â>·Ð>†H>óÖ>øÉ> ‹®>ž˜>*=÷=æÁá=äé2=ôZú>¦>÷> -£`>Ì¿>‚“>ÏG>ºº>L·>ŒÏ>‚Á>!; >"ºã>$¬>%&/>&˜>&ôÙ>'­N>(KÒ>(ÓÍ>)H+>)ª„>)ðA>**½>*Vs>*ƒ>*v*>*©ß>+¢>+(D>*çð>*ÊL>+8&>+E>+K‚>+I\>+C>+: >+.é>+!:>+ u>*ø6>*ï¹>*Ûñ>*Â">*±û>*¡>*‚w>*`Œ>*P¢>*;×>* >*>)êÚ>)Îà>)²ò>)‘)>)v”>)Z]>)<¾>)!l>)N>(ä‡>(Å×>(§9>(ˆ>>(hæ>(IB>()(>( k>'è=>'É'>'©V>'ˆD>'hM>'Gª>''.>'²>&å$>&Ã>&¢ª>&‚¹>&^p>&=<>&…>%þ>%ÜÜ>%¸ò>%™9>%y=>%Wã>%6x>%>$óˆ>$Ñ«>$¯X>$Ž¾>$m>$Kï>$*Z>$ø>#äw>#Ä>#¤>#‚|>#`×>#? >#>"ü>"ÚS>"¸#>"–š>"u›>"SÂ>"1 >"i>!ï,>!Íš>!¥Õ>!p">!` >!G´>!&y>!Õ> ã> Áö>  ‡> :> ]Õ> Ç>ö1>ϼ>¯Q>Ï>n€>KÓ>.Á> Õ>îã>ÍÐ>¬>‹Ô>ij>AI>$Î>E>æ>ÃÆ>¢‰>?>^>@ > *>ÿT>ÞN>½;>œƒ>zª>Y°>:>^>ø™>×â>·!>–e>uZ>Sƒ>2ñ> —>Ë}>–S>ŠÙ>Ò>nu>Oû>,Â>‰>ë->Íã>®8>I>mJ>JÓ>)Õ> Ž>ë<>Ìa>«2>}?>W->Då>>>ã=>ÁŠ>¨z>~>Rú>Eá>)é> >ê>È!>¨¡>jŒ>J³>HM>(»>µ>á–>ÌÌ>¬“>‡t>l>LI>.A>Ó>ïÆ>ÌQ>­˜>‘6>q’>Lü>Æ>Í>òÀ>Ï+>²>ŽN>u>PÀ>-à>m>ú>Ú’>»>œm>}>]&>=<>q>ùA>Ýo>º|>¢r>„l>e->D§>&M>>>çô>Å3>¨]>‰ó>__>G?>.>¥>ñØ>Ê>vl>z\>3ê> ‚ > ®µ>²­> >> #7>¡R>ˆ>}‰>_@>Œ> q±> Ù> á -> ÂB> ¥%> ‡Q> iw> H¯> ù$> ]Í> æ> Íx> ¯S> > pš> PÈ> .Ý> ð> Ù™> ¨;> ­> ’¼> tŒ> UË> 5g> «> -õÎ> -Õ¬> -µb> -•i> -t¼> -Q> -$–> - }> ñ*> Ïa> ­L> ‹Ó> i«> GS> $R>øé>ÄÄ>µE>•>oÐ>I®>ü>Ð>'~>çp>tã>XÊ>-»>">Îê>¡â>q“>>M>É>Ðä>–>R>G>Íf>`>$>>åg>‹˜>)A>¾>Fn>ÆU>=Š>¡ý=ÿë7=þkv=ü¾…=úÞ=øÂ}=ödî=ó»[=ð|U=ë¨ä=èä=åUé=àšm=ÛJœ=ÕYZ=έ_=Ç¿=½ÖP=°¥„=®_j=»@­=Äø=Ëã -=Ò"_=×^8=Ü 5=á=äô„=èY =ëN2=íèÀ=ð0ó=ò)K=óÞ’=õV =ö”€=÷®¼=ø¤=ùu=ú%Ð=ú½ï=û=t=û¨Õ=üÇ=üM‚=üŠ¹=ü¼8=üãj=ýñ=ý"=üÿŸ=ýX=ý/=ý/<=ý)œ=ýö=ýÚ=üÿ•=üëO=üÓc=üºÌ=ü =üƒ =üd =üC×=ü!h=ûþB=ûÚB=û´l=ûŽ4=ûf¨=û>==û}=úë¦=úÁ=ú–!=újl=ú>«=úí=ùá1=ù±=ùˆ«=ù[ì=ù-u=øþ´=øÏU=ø B=øp=øA=ø‚=÷á"=÷°t=÷uõ=÷G=÷&=öêû=ö¸»=ö‹=ö[›=ö))=õót=õÆI=õ•ž=õd=õ2Í=õ6=ôÏa=ôœÐ=ôiŸ=ô9Ï=ôH=óÖa=ó¤M=óqV=ó>=ó l=òи=òù=òw¶=òF=ò4=ñßt=ñ­o=ñ}g=ñKÝ=ñÌ=ðç@=ð³.=ð‚þ=ðQ˜=ð†=ïëë=ﶸ=ïˆÒ=ïWƒ=ï%-=îò¸=îÁ‰=îš=î]==î*ù=í÷I=í³k=ír=í\Ÿ=í0ð=ìÿ3=ìÈÛ=ìœ`=ìkù=ì:L=ì¬=ë×=ëžf=éÛ=åvá=éÿñ=ê¦ô=éÙ¤=éLJ=é›#=èÉð=éµt=é´Þ=é=éGZ=éÁ=èò=è¿k=芦=èXš=çeÁ=æñ$=繤=çU=çh¾=ç9K=çð=æÖ²=æ¦×=æv!=æ=i=æ°=åâh=å³~=å€ò=åPŽ=åö=äÄý=äªí=ä =äXQ=ä™=ãõd=ãÀÄ=ã’ê=ãn€=ã=s=ãL=âÏö=â˜*=âr‰=âM6=âÀ=áÕ^=Ṭ=áŽH=á^[=á.³=àþ<=àΣ=à k=àpÃ=à@—=àw=ßÂ4=߃ß=ßf¬=ßQ&=ß$š=ÞõH=ÞÆ=Þ–º=Þg=Þ8[=Þ ?=ÝÚ=ݪ•=Ý{o=ÝM=ÝÏ=Üíì=Ü¿¯=Ü‘i=Üb‡=Ü3Í=Ü=ÛÕÒ=Û§V=Ûxå=ÛJ_=ÛÔ=Úí5=Ú½û=ÚÅ=Úam=Ú3‰=Ú5=ÙÖÊ=Ù§ÿ=ÙwÓ=ÙI=Ùs=Øï_=ØÁÂ=Ø“Ó=Øe”=Ø5=Ø =×Ûæ=׬½=×wß=×P)=×$…=Ööó=ÖÉ5=Ö›Ÿ=Ömq=Ö°=Á}=ÀìL=ÀÃ"=Àš -=ÀpÂ=ÀG6=ÀÓ=¿õè=¿Ì|=¿o>ß?c>áæÔ>åˆr>éæ>îM­>ðfß>îzÍ>êeÚ>ç¤_>æÝ'>åx>ßö>×$W>ÐqË>Îóv>Ó0>Úýo>ä+³>ë>í—í>ìK>è×>äÉ>Ý‘>Ö ­>ÐÑg>ÒžØ>ÜèL>ëMÌ>ö¢R>ùÉ>ôd ->êš‹>âia>ßÝF>â…ñ>æ,>çx>å)>äcƒ>äR">äF>䎴>æÂù>ê°_>íß¼>î~‹>íB>ìqG>î¨>ò >øl>ü+>û 0>õ >íz<>è¦\>èL{>êž>ì#R>é¹÷>â3š>Øm’>ÒÙe>Õ¢½>ÝS >âÝ>àp>ÛÁ©>Ûe>ßàã>ã* >àá!>Úá]>Öš½>×H >Û‚\>ßU>Þi=>Úš>Ø/?>ÚÌž>á|2>è;7>ëû7>ìŽ>ëæÜ>ìZM>îð&>ò©>õ8u>ô®b>ñBi>í[ö>ê×Î>è­$>äM¾>ÜÌä>Ô5ü>Í÷.>ËöÅ>Í´V>Ò~>ض®>à±Ö>ç3>èf1>ãá¸>ß9›>à¯>çzþ>ìø5>ì¸4>çÊj>á1>Ú}:>ÖEÓ>Õ´”>×Èš>Ú<1>ÛúÂ>Ý¿|>àÓ7>æê>íP>õ ÷>ú6¶>úï>øÉ>ö¶­>ôú>ñjŒ>ëKs>äcø>ÞØÈ>Ü¿>܈9>àA>å?>ê×d>ð·,>õŸ>>ø»p>ú(>ùÆæ>÷æí>õ¯>ñ×>î$>ë‰j>èïä>æ(à>áû[>ÜP2>×XÍ>Ôú‡>Ó|K>ÏÑÞ>Ë)ù>Êäð>ÒJy>Þ>x>è`a>í; >íª>ë”É>èNo>åñà>ç0‰>ìv•>óO->ù7¼>ýmô? R? n?*>ÿöÍ>þ ²>ün>ö->ën>Ýcã>Ïø>Ç*÷>ĦØ>Çl:>Í>Ó'ú>ØL6>Ü÷|>á{o>ä”T>ääH>㑳>ã²Ë>æ^>è– >æIï>ÞêÎ>Õ ˜>Îê>ÊΓ>Í0¯>Òòú>×c5>ØåÇ>Û@È>â1ƒ>ë¡O>ññ8>òðC>ñH‹>ïÈö>ï>ïÅŒ>òÔÆ>÷xO>ûkž>ý”h>ýï>ûTX>ô+å>镇>ßjM>Ø{¡>Ôé>ÒTs>Ð¥º>ÏÕ“>Ñ¢Ô>×Fº>Þ‹>àüI>Þó>Ý8Ü>àu¨>çF<>íeÅ>ðmD>ðGN>îq8>í=>í„/>í—¢>둆>ç!¤>àŒä>ا>Ï;Æ>ɺ6>ÊOm>ÏÊÓ>Õak>Öò»>ÔL@>ÐQ>ÌãÝ>Ì>ΤÜ>Ñ;ñ>ÓT´>Ô¹Ø>Ô_î>Ó>ÔÆÕ>Û×è>ä®>ê,^>ì²ã>îð>ò£¡>ö#’>õ]Ó>î>>âçd>ÙjK>Õø÷>Øç >Þ¤Ã>â÷Ý>äx>äE–>ã—>ã—¦>åÄ=>ê­‰>ðf¦>ôñ>ô–y>ójÄ>òò«>óüë>õ™ƒ>÷~>øS\>ø G>ôÎW>ïË¢>ì1”>ëÁá>í·á>ðh>òƒ™>òáý>ð—H>ìV¯>é:›>ê>>îSd>ñ!Ó>ïý>ëJð>äM>Ý5>ÙZa>Ú->ÝÎ[>áæº>åeA>çP÷>çG¶>ç >êÖ)>ðnª>ô[¡>ô0'>ð…>餫>ãþ>ã@·>ètt>ïá^>õ4%>÷ëÂ>úWp>ý|Ú>ÿjÓ>ýóì>ú\Ç>øB>øº >ù»˜>úO>ûŒv>ýNú>üö >ø£ß>òžä>ï¬ù>ñ•À>ô¦&>óàÖ>ïõ>êÆÒ>ë 7>ï i>óø<>÷99>÷™Þ>ôÇZ>ðCö>ì”4>ꯓ>ê+Á>ë—y>ïM>ô[³>÷¢>ù*>ù—ë>øA©>óå§>ì.F>â’˜>ÚÍ'>ÙÏ>ÞGm>æ©€>í.9>ðõ>ð}K>ï€T>íÊŠ>í}à>ï«.>ò²é>õ{í>øc >ù•ÿ>õ<Ñ>ëBY>᎙>Þrn>âW6>è8>ê\Ù>é -É>ç8¡>æ¼{>ç,ž>èèv>íÇ>òòé>÷j±>÷(§>ñ7¨>ç;z>Û¹W>Ò½ >Ѿ¸>Ù¾I>ä`>ê¦ð>ë¬>뽧>ï d>õX7>úÒ[>üÊ>øsø>ðËž>æº >Ûϧ>Ò~$>Ï8]>ÕŸ>ã/Å>ðDµ>÷5í>÷O€>ò§†>ë¾>ã÷¦>ܤX>Øþ·>Û O>Þ¾a>Þ S>Ùˆï>×–V>Ü·>å‡W>ðà >ú!—>ý‹«>ùo9>îÙ‹>á§K>Ø*>שk>Þ±˜>åÆX>è©>ë ¦>ñI)>ùÅ>ülm>ù>ólê>ñÈ>õ,ª>ø!Ê>õôš>ï¡>èµa>ãaŸ>á6T>äGª>즢>ö³>ý…«>ÿÿE>ÿc¥>ýÉW>û¢)>÷”>ñm`>ëÁÀ>éÊ>éA">ê œ>énK>æéò>ä0ê>ãR6>ä«>è>íŸ>ñM>òe >ðº­>î‰H>íkB>í¥P>ïz>ñ‘4>ôú´>øþ¸>üž?>ýß}>ûuæ>ö€Ä>ñx >î9>í«>îyÙ>îöø>î/ƒ>îbG>ñïÐ>øEu>þá¯?¢)?Ä&>ÿ—>÷þ¥>òÑÇ>ó¹F>ùXi>þ&q>ÿˆ>ý§=>ûðZ>ú9>ö.Ý>ï-+>æôR>àÆä>ÝÃg>Ýg>ßé‹>åDj>ëëÙ>ò³–>ù$±>ýÄ,>ÿ9K>ýÖÕ>ùß>ó D>ë±p>èã‘>ìå7>ô·>ø•E>ør>õ][>ñÈ™>î‹ >ë<˜>çúº>æ…‚>èÁ˜>îp>ò°U>ój>>ð±Š>î²/>ðh>ô‰H>÷û>ø „>øê”>ùs§>øp>õ÷>ñþ\>ë‹ >ã à>ÛF">×ïI>Û¨Â>åŽT>ðq3>÷6K>ù[Ù>ø»y>õD¸>îïV>éÌX>ê±(>ñ%ü>øº)>ýC>ü>õ#Ú>ì‚>樼>åç£>é.±>ìR'>ëǧ>ç@Ã>ߨK>×(r>Ò]ž>Õ@ >ß3>ì7>ôŸ>õù­>öŽ>÷¡‘>ù‡ª>øµ¨>ôYê>ï•x>îö>ðM‘>ô ->öÉÌ>õž¹>ðY>ëO¥>ê˜>ì‹Ì>íIÜ>í->ï|Á>ô³Þ>ú…>ý¶>ýTj>ú*Ñ>ôi´>ïÀµ>ï|Ï>ò$¸>ò¢Ò>î*ã>çLÂ>â2Ÿ>ᯃ>ç°o>ò–ƒ>ü%x>ÿO>ü½/>ø±v>öVâ>ö>öaª>õƒÃ>òØü>ñÇ—>õªÓ>üƒU?$i?Ÿ¤?a?­“>þ]˜>ÿ"ë?\F?yã?ÿI>û§>ùÿ>÷c*>õ¨›>õ—>÷Q>ú#ö>ûuð>ú -O>ø=Ã>ú l>þ‘>þœg>õ >æ?á>ÜÓ<>ÞBw>åR™>éyÖ>è°>>æ¡7>äÜa>â -#>à´>â >èÎ>Ꜯ>èzÝ>æe”>è£ä>î¬>òI>ñ¨¶>î`6>îúà>ó5>ñß>å’>Õf×>Ì¥º>ÎIï>Ôšt>Ù¼~>ÜUB>ßs">åˆø>ë™8>íÚo>îKP>ðì¬>õß>÷ò>úˆØ>þ“?f3?úÝ?3•>ù¼>ñt$>é±>ä3W>ã0:>æw?>ëî§>ñµl>õ¦>óQ >ìÿÖ>æiî>ãG>âæº>áP…>Þ\ø>ßÀ”>èºg>ôO>ú_Û>÷‘->ï…ì>é«Ë>êJ>îåò>óü>øâƒ>üu$>ý¥Í>ÿ=Ü?+°?U ?Õ‹?Õ8?ì>ö'œ>å÷>Ý=ù>á†À>í@>øÅ?1«?µã?Vß?*F?“2?z€?Î?;š>øZ®>òÔ>ðlp>ð‰¯>ñ»ï>ô˜ >ø3É>ùæN>ùäñ>ùüõ>ùÛå>ùdþ>ûÐ?Ý‘?øf? -‡7? â? !…? |? Œk? -.?#³?³?¹?Q?±¤?Ž ?-Ÿ?æŒ? -4? –”? `Ë? -?C? ‘? - ?? +?¿§?_½?ð*?$†?%p? M”? Tq?‡ý?q? Š ?S‚?ê­?åË?k:?€?÷è?N?ÑÔ?d?Ód?.ø?4`]?,¨‘?#–í?&†?3ö??Û?AFï?7|n?'¸ÿ? Æ>?-Á?H%s?^Aï?dÅc?[è?EzG?,eo?öˆ?(W?( ~?>»´?Sùa?]Á ?W:{?Cà}?-/Þ? ý?'wŒ?@bÛ?[î?rˆE?„N[?ŽQK?‘J¼?‰ˆž?r[!?Jót?)}P?v ?(:?Iž4?pô˜?‡6f?‹½V?Š)?ŒAÑ?“½?–„¸?H¨?D -?V÷?/è¯?C’?"A?% ù?@=;?bî?…ìJ?˜ó ?¥©5?ª‰?§ëÌ?£ ”?ž7*?˜-þ?±?¿Ò?b”q?B?"‹?Z\?ï?7ó±?d"ú?†óï?—Áò?¥©,?¯–é?°“i?¨è?ž+‹?š/æ?›[c?ž*?¢în?©¹²?®@£?®,î?©†p?Ÿ1 ?ðå?‚læ?f¨¬?FŽ?1Ö©?8Í>?X^[?{©|?‰Ñ¿?‘ûß?œF ?«p`?¼±\?Ë€Ä?ל‰?âr?éÀX?ë=g?é”?ê¿?ëçì?æŽi?×Ùí?Êm9?ÅW ?ÅeG?ÆžÃ?ÇÏŒ?Ç›?Àþî?³£²?¡iú?Žb?wÝ}?QÖ??1k’?(¯ú?@¦ñ?nŸÑ?–?§Ø?¼ª¢?Ìè?Õ}+?ÖÒ.?ÕQ?×û?â¡?óÓ@Ô@ÞØ@Ô ?ô…?ÜJ?Í0?Ρ!?ÜšN?îÒ°?üÉ@kË?ú‚K?ï­“?ê¹b?îN?ï!h?ã8?Ñ‘˜?Æ÷]?Ãà?Á•ù?½ªê?¸Ãø?²à?¨F$?–¾I?€À?X¸?7ü?%á?+-]?Idb?o_©?ˆD(?•ÖH?£IÎ?³¨÷?Ä3‰?Њš?Ùãv?áÊ?è“?ïýc?÷UÃ?ø¶i?óBu?ñš?ùRš@ŠÊ@„@˜v@šJ@æ?ý/?ÿß%?ÿ>;?úß0?þ-Q@ Ð@ L:@ *¬@³2@² @\P@ó¿@Çu@ ä(@Í·@îã@ ð²@/?ñ¿?í´R?ùh©@»@9^?ükX?çwõ?Û -Å?à™¦?é<£?ä‰T?Õwë?ÆM¼?¸;n?¦—¤?‘'X?w³B?RxV?8Fð?6/?Q’Y?|ó3?“gÂ?£d?®Mö?µ¼V?¼Ë:?ÅŒ?Ìo|?Í,?Í4F?ÓØ@?âu^?í" -?ìÑ?鈄?ç@·?ãί?åÛo?ò–Ô@lu@Wç@ -{E@ 9¹@ed@øO?ñ¤é?ë¸?îS’?ðq‰?ñv?ñF?ñ.p?òbQ?ömÙ?ûl±?þ-C?ÿ.‡?ý?ô™+?ç™?×ñs?ÃÚÕ?ª+3?Š¤i?Ot{? ­S>¯¸¢>uQë>ŒÙæ>æÌ?89 ?€w•? ÅT?½nŽ?Ô“’?áÑC?æ6?å£z?ãò?ä>?ì§?ö!Ò?öc™?î­=?çÉõ?åÕÚ?æ³’?è+.?ìÂ?ôa?ø‰{?ñ ?ã™ô?Ü‘ÿ?ß)ì?ãl—?à?Òáw?Ân|?´Hå?¥Ö¨?’^)?p\]?1úV>ë>—f>€ >¤£@>òŸ‚?(48?Sï]?z.n? Ð?¢”?±‘ë?½?É´Ë?Õ„Ç?ÜÈe?Ûœ0?Ö+?Ö¹/?ßo»?éIÕ?î«d?ïš¡?ð2h?òÛ-?õ÷–?ø®R?üÔÇ@§å@œé@š@k´?ú¾l?ï\ ?è±;?ì6e?÷[@£h@0?ýh?øÆB?ó~Ñ?êxP?æpÓ?îÛ]?ü;þ@<à@B†@½;@³¸?ûgÄ?ø…¼?ùòñ?ý­V@Y×@Šº@@# @ /@Òã@ÇI@[?øôí?ñŸº?ô¶@ O@fn@¶€?úg‹?î?äè¯?âÙ\?æs"?ìª:?ó`ï?ùkY?ÿï@‰„@@NJ@j@¹ˆ@ú1@.?ÿè?ób¥?ë¯ç?ñêm?ýûâ@<*@Q?þ³Á?ûïö?ö6«?îMÆ?èä«?êäx?ñu?öyR?ùë“?ÿi&@ô@§@ÆÎ?ôhY?éÔ¨?ê…?ñï¬?ô98?ñ¸?óõÂ?ù›­?ø‘?ï)?èÜ–?ë{æ?ñ«4?ñ?å?æ!ü?Õ —?Ê©I?Ðo?àìF?ïIb?õÔ?ôç–?îñÒ?ç‚’?á™+?ß"Q?à  ?äYß?æßp?æ%?â¡?Þu)?ÙÐr?Ôx?ËÜì?ÀÚ£?³øe?¦aÐ?—ð8?‡TI?f§ò?>Ò?,[H?=Ã&?gž?Šž?›îá?¨È.?²)º?¸£+?¼Bœ?À}?Æó?ÏÑx?Ø2³?à0“?çîË?ìÒ¢?ëT|?äUK?Þõ4?à4 -?ãel?â/?ßH?à*†?äŒo?æ΄?âè;?Ùkt?Ò§N?Ô‡Ù?Ød_?×SË?ÕÝÄ?Ú¨Ý?ä c?í&?ò‰æ?óÙ¯?õ‰?ú}×?ÿè?þ4´?õ²Y?è`"?ßá¬?ã?ëà/?ñˆQ?ñïÖ?îDa?ê:æ?éÓP?ëò]?ìýE?êˆu?å\?áéÝ?áɼ?äZ?é+?ìV??êJª?ãÐ_?à›f?㘾?è¤G?ì–?é7?àžh?à Á?ë'¾?ð,?çtó?Ö ã?Ƙ?ÂfE?ÊK$?ÕÖ›?Ø¿l?ÐM?ÇÕ?ÊÕÓ?×úÙ?áqò?àû–?Ý?ܸ?ßœ#?áùŸ?Þvœ?ÜzÔ?áê;?çe?è ý?éÁ?ïa@?ôÇT?òjR?ëì?äS"?Ýj{?×½?ØTE?Ý¢Ý?Ü™ö?Ø7­?×c ?×pþ?Ø-?Ý&·?ãµÕ?åÿQ?ä.E?ã©N?çxÍ?í9Î?ðQ}?ëð?à7º?×éW?ÛçV?åQû?ê*º?ê«?êëî?éë?åê¥?Þ¯?Ô‰?ÈòK?Ã/q?ʆ±?Ý„?ìÈž?ñF4?êV}?ÛO}?Ï^?Ï–Ê?ÕS§?ÙÜé?ÝJw?ݾ)?Ýs§?ਜ?ä, ?ä‰o?åM$?æp ?á„?Öq›?ϵÅ?Ô"?Ú÷?ØSÙ?Õij?ØØu?Ü•ï?ÞO~?áÛ_?æÐ?æT‘?ßY?××Ø?Ó«!?Ók?Øf‚?áä8?ê?îœ?ð?îcs?é“©?ã@?Ûsº?ÑÜ?ÉÈ?É—ç?Íä9?ÑË?Õ°Ç?Üæè?áÐ?ãÎ?åÈf?åö¨?á˜?Ùo?ÖP,?ÙK.?Ý@?Ûò?Ô‹ñ?É#!?¾Ó?½ZB?ÊÍ·?×IÊ?Õòr?Íçf?Êð ?ÌÈ ?ÎzC?Ê.ÿ?¾lg?µMQ?³O?³B°?¹U?Ä^Â?Êøã?ÊRÕ?Æ“?ÃÉì?Ç~j?Ñ‚œ?ØÇ0?Òøï?ÁÔ¿?³‰v?´pÑ?Á€ò?Í}o?Ò†n?Ðôÿ?Ê5?Æ5?˧`?Ð÷D?ÉwK?¹ùÐ?³Æi?»–ª?Äž’?ă?»KS?´s#?³?°Ïd?«=?¢‹Ì?”º'?€ä^?X²—?5Û»?Œ?¿Â¯?½|?º•%?·B ?µB-?· ?»e{?¼áD?»Œ?¹íÏ?»Ç?½j~?¾K^?¾PJ?¾ÖÓ?¿Š?¿ä?¿+=?¾ëé?¾˜l?¾¬m?¿ ?¿Ü³?¾Úì?¼ªÓ?º4?¸ÞX?¹´g?¼0p?¾v?½4ò?¸M#?°im?ªG?©·}?­òh?³}°?·Å$?¹ðp?¹ÝZ?¸t?¶ëÕ?¸Á?»Kç?»÷ˆ?¼í?¼”?ºÀ3?¶®?µóq?¸V?¹v·?¹5¥?¸ã¶?·7·?¶1?¶Áb?·‡º?·ÒZ?¸'?¹xz?»Îì?½8w?¼‡q?¹§5?µÌû?´:ª?µä -?¸e[?¸r`?´KG?¯Y®?°e?µû?¸]>?¸—©?¶»K?´‡K?´`¸?¶¶Ó?¹ ö?¹ìH?ºR?ºZ—?ºýî?ºØÜ?·?¯£?¨s?ª¤?±›?µ›%?¶z)?¶¨?µž¾?´¼µ?³ ?²Ác?±‘¤?¯ó?°K“?±.î?°à?®ýt?®Ù©?®?®5C?­?ªL?£Lÿ?œdÖ?›W¸?å?É»?˜ö¢?7Ý?ƒ(”?uÛê?l¯?%]?~{?‡?š÷æ?“rr?†có?‚>E?Œ%Â?•3?–|Ô?‘ ñ?ŠN“?ˆÛ_?Œ‰V?‡h?‘i(?“oh?•d?–ò1?–g -?––9?—¦’?—'â?–8A?•’?”4m?•^ª?•¾x?“]ƒ?‘ƒ—?“ ?•á?—Ÿ?•÷!?è«?‹…Ë?‡FE?ƒ×\?„Û°?ˆ98?…ÍÛ?W?„ý:?‹l ?‹C?†?ƒ¨9?Šuþ?­‚?ÏÉ?ŽŒ#?Ž*4?Š”›?ˆÄW?Ž ?†¡ ?‰P˜?ŠOu?Šœ¢?ŠìH?Š¹?ˆ·€?„Üç?€QT?€’F?…ô?‰Â?Ø”?4?‚; ?‚åõ?&€?€XB?€5Á?€¨?­?ƒ"?„‚??…j"?…¡É?…Ž?…t?„?„¸?„h?è?zÁ?q‰Ç?q¦ ?zVE?‘†?‚£!?n0?w‰ú?z”ù?¼µ?ƒ†–?ƒÔ©?ƒ‘z?‚;ç?€j?~ -|?€ µ?áz?ƒ -a?ƒ1ë?‚²Û?‚ $?£¡?¦8?‚q£?‚ز?‚Í°?‚Œ?ì˜?€ø7?€C]?€'Î?€hB?€NV?~ŠÌ?}¶?|ÀÍ?{NY?~R?jr?vH?€¬¦?q¢?+]?€i$?€}-?€ä?y¡)?rq -?q†Ï?u¡ô?z´Þ?|…ã?zK?yO?|K?z Ë?w8=?wf?vnÌ?u;&?y+†?~ãŸ?€fÓ?€ff?€fv?€zu?€“¶?_ã?xñd?r¤S?u]?{I?|ܘ?}T¨?}o?z³x?w;˜?w©?y7Á?{i ?}æ´?~zT?}[á?{mÇ?zÐÈ?zv{?xÐ`?wˆ?uG?sE¢?v í?x¼}?z´?{hp?{ê·?zÁ²?yùú?z›©?z’?v¸_?riF?i}S?b1?iÑ¡?qžÂ?o{†?o‘?sÉð?rÑ/?nÆÛ?m£?qU†?uö€?wù¢?wz?u½?uf™?u‘6?uO-?t$Š?og¤?jQ?i†?lé?m®?kí·?n¿æ?r(x?sVR?s=?sšH?t?s².?r¨N?pÕª?p'?qs…?qnÓ?neœ?k­?iö3?hü‰?j%g?l’¼?oT£?où?oÊ‚?o².?oÉÕ?pˆ6?p¶ã?p¸•?p®­?p †?o%þ?näz?nÕO?nŒ -?mœB?mÛ:?o·z?p`·?oì?o{Ð?oG†?nÚ?nÝ?n8?mçš?l¢D?j¾Þ?ksé?m²?k²Ì?hë?i/ ?k”.?mEM?m©Ó?mr?ky?h?h÷?jÇJ?lz§?l…?k— ?jÒü?iøP?iQu?ii?i5Ž?iϼ?häƒ?ebX?aþH?b°?e ?f!>?g,î?h2Z?h„c?h~?f©®?eíÆ?fE?gK?fÄ7?f•ù?gÈ"?hV±?h€“?hoo?gô£?gzÕ?h-?h}]?h’V?hYè?féE?e®?e½é?fÈ~?h36?h4ù?g¸Á?gƒÇ?ggê?g¹¤?gÌ!?gQ5?fÜ•?f÷2?g`’?g6?g6?fk?gý?g¯@?gõ¥?gʲ?g -Ø?f9Ë?euó?e‡?f+\?f/–?ej”?b±’?^X?^*?_ÄÂ?]ý ?^¶º?aeä?bÏ?aâŸ?co?dc?cî«?c„j?c§Ã?c¹?cÙ˜?dw?d I?c¦Ü?c€?c¸?bŒ@?aEÏ?`›?`Î?_\e?\u‘?O&‡?7£ö?9¢Ú?P”?Uüq?DGh?8Žu?I‡f?Y.å?\»?]kì?^r?^?T?^4s?^«?^ëØ?^~?]É‹?[P?X±o?Z,¨?] ?]«‰?\ó?]ka?]Pˆ?\†?\<Ó?\í?[¯~?Y?Xjm?Z¨>?[þo?[³?\5Á?]l?\‘˜?ZÅE?Y?8?Y=Ç?ZW›?Z^ -?XŸZ?V¸>?Ww?XëÈ?XN-?XœÀ?YW¢?XY+?W¦?WÝÆ?Y,?Yc?Y×U?Y™ô?Xíç?X -å?W“Ü?Wöô?X¨O?YY?X΂?WRÕ?V²?U$a?VOx?X0ù?W*‰?TDY?S÷}?U~2?VCØ?UGz?R;z?RÄÈ?V`q8?CŒ?I-ø?GÆo?A×?=+D?AÏý?HÔ?IU ?Fk–?B™æ?AI?Báç?Cnú??!z??\#?D‚è?FáÈ?Fû¬?DÅÚ?C"I?E;L?F˜?Eag?D8ß?DõV?EiÍ?E¾1?F÷/?G~ ?G¯ê?G¸Ì?Gˆ´?Gâ?E?ù?B… ?C±?E=r?Ex?F|Ò?FRƒ?Eo?E‰Â?E¡7?E%l?EXú?E÷?FNö?FzÂ?F$Õ?D¢j?Cßc?D|*?DëŽ?CóC?BçÍ?CçŠ?DðÃ?E'j?Eµ?D¬ƒ?Co??o¬?>\'?@BR?By?BV?<ÊY?7hD?:Cë?@=º?APÇ?=…«?7?2¬?8-??öK?@^.?=¥?=«í??µ¥?AÊ?A±D?Aï?B Ê?B:y?Aˆk?A?A#¾?@S??aŸ??Ù8?@oC??øc?;×á?4 ?/‚M?1[œ?4Í4?5ê}?7R°?:`¹?<Ñý?<}~?:Ä'?:-Û?;f(?<Ï"?<Ð8?;Û1?9íë?7ë…?75?9›Ö?;&ï?;\o??/æ?3u´?7H??6?1ç?2WÑ?6$ ?6k;?6¾ê?6¯^?6„Ç?5Œ|?5)«?6‰Ü?4ñÏ?,™á?#‹Ã?*É?3ïQ?3áº?0›?1©±?5²Á?6¢?5:ó?4 û?3Z?3ït?4k}?3§Ö?4sä?4ùê?3˜}?1R®?0p}?1óÝ?3Ë?4vò?3a?.½!?*!:?'_G?$^`?#±?*‚H?1-B?3é -?5ý?4¾O?3²˜?3š?4 Ì?4b?3ºÓ?1ós?,¡?%¬R?(yg?/^?1êÔ?2O^?1·?1Ö?0TÐ?0B?0ó5?0"è?/*?.ÚZ?.£c?.“(?.n:?-Ùz?,Ì?)Ô9?(b?&ŒÞ?&O?%!?#ç? ï?ÜÎ?<}?W?ú‹>ôC¡>ÈgŒ>§ƒZ>ÅR·>ôÙ1?Y?;?&]?;?¬1?!!¿?$=Å?'ì?(X?))?)·?* -ƒ?)WÌ?'¦¹?)sv?,3/?+Ž?*l?+œã?,é;?,Óå?-Q ?-¸#?-\?+jÓ?)ª,?*P8?,*Ë?- G?,Q4?*Ί?*–?,?,}u?,©?,ª?,¿‡?,hy?,G?+ëF?,·?,Š[?,~€?+o?*|Ü?*Ü?+x?+Øž?, Å?+T:?)Äf?)n?*.]?+1Y?+•k?+‡‡?+Ò?)ì?)‡š?*¹?*ª…?*Æh?)´’?(—­?(û:?)×W?*)+?)í>?)/)?(Ök?)Pè?)®?&#þ?$gä?&yØ?(âU?)M©?)C!?)ÆÑ?)·’?(øH?) -·?)-l?(ˆå?'d?&Ö?&Ùk?'œ?'K{?'V:?&ÇÃ?&Ö3?'‹H?'em?&úz?&Š?& .?$÷½?"Ô ?"×2?$Ð?#ÖS?"÷?$ ?%)´?%’‘?%ʲ?%ïD?%ÞÔ?%_–?%0?$Âß?$Ÿ©?$~4?#ž?"‹á?#$?#o?!}? þ€?#´?#Ϊ?#©T?!Ť? p;?"]Ã?#|7?#{Û?#YS?"ô´?"€;?"h ?"Ér?"ž&?"U?"8?"BÞ?"Dá?""4?!äß?!^à? ª? i~? ÷Ö?!<Ù?! ? ó~? î>? ¾0? ‘í? ?×? g? T? pÀ? 8È? .>? &í?ÍË?o9?‚?Y`?l&?‰×?Kh?Á–?¥˜?ò?Ë?1S?pµ?®]? -+?tÎ?jj?G?¦?Õá?ó%?%'?c´?3N?šÙ??€”?dZ?çÀ?oO?É?zW?ÜÖ?Äá?#5?§?Á¼? a?wI?I$?IY?WÕ?Eø?1?'?é5?c??9«?fœ?´?ö9?n?¥T?™ö?€‡?h -?O]?8?'†?C?Ä ?:ï? ?`?D3?Î?~–?%Ü?*Ö?Cè?É?¶Ó?ñ¼?æ"?Ðw?Ò?Òe?ÕV?Óê?×£?ép?¶ü?o?Yp?j¦?ú£?SÇ?†n?ÜE?ÉÖ?zC?kÍ?v©???UÈ?X?¨ƒ?'?jI?~¶?ɳ?ä¤?]˜?é?§?a-?>?¥Ð?rÓ?#m?¾?û?Ñ?U?Ë­?:?ãw?%h?i[?Ë+?åë?C§? ¼?ËÂ?è§?ØŒ?PÆ?ú¸?5)?ck?¢_?¼m?¢ƒ?C¾?Lr?„?œ?L'? ?Ë? yÍ? jß? ׯ?)?c¾?â­?tú?áå?ç?[? ?{Â?^ ?î?Aþ³>ûŠ¢>ü%>ÿ—8?]÷>ÿr·? r?cr>ÿâª>þ–*>þš/>ü«t>ùÔÛ>ù„L>÷<±>÷X>ú5š>÷Ó{>ôÕ>ú ->û³9>ø»>òšX>õìD>úTn>û<›>úûÿ>ùGÎ>ú?]>û²Ï>ül#>üÁH>ùÕÀ>ô²Ý>õãH>ö >öy >ô¦ƒ>öê>ú¦e>ü‹>ü’¢>üP5>û&£>ö—~>ñJ>öñZ>ù,|>ó[L>óÔ$>ømø>ùGí>ù‹>øŠ>øC">öæó>÷'ú>öä>÷÷7>ø¶¤>øïx>ø…j>öÙƒ>ôê>ñp5>õ4×>÷%I>÷07>öÜÅ>õ³]>ôâ§>ôè>ó›™>îûŸ>ði>ðÓ9>ð¢!>ô©>ôèb>óƒÄ>ð¿:>ðõ>óÍ>óÑ;>òô°>ñ- >ðci>òj>ó}$>óœ1>ó8#>òˬ>ò›~>ògr>ñÐ>ñù[>òš>ñÅå>ð^¨>îá×>ðnÀ>ð+Ø>ïžð>ð7>ïÑÈ>ðÓ>ï‡>îëÍ>ïä½>îÑG>î=>ï|>ïww>ï1ù>îcì>ìÍB>ìQð>ío%>>î¸ý>î‚D>îÿ>íåw>íúu>íÂ>ìÈæ>싵>í*>í-Î>í>>ìÁó>짢>ìX¾>ê@ü>ç,>ç#->èS>êH)>ë>ëÑ>ë`>ë¼>êóQ>êÅù>ê‡Y>ê|Ý>êO•>é¯â>éÃI>éý>éÍå>éºA>é³¼>é‹a>èÅ0>æ “>ä†u>â-Å>ám>âGø>ák+>ß@>ã†ð>ç>æÑ’>çSº>çLÖ>çç_>å¯a>ãïÀ>åÙ>å›>ä >åk>åsJ>åLÐ>åU*>åˆ3>ä å>á­=>â!>äâ\>åIÝ>å >ä×'>ãVÞ>ÞsG>ÝFå>á~Ñ>ã"l>ã<«>â—¡>á©V>à“„>ào>ßOz>ߘ*>á“>áÑ:>áÒw>â"Ë>âzŸ>âRm>áª>ß(ë>ß«÷>ßä>Ý>Þ.>àxX>á >á{r>â/ù>á™Â>à|Ð>àµÚ>á ->àä}>á@/>Þn >Έm>À ~>¼‘Æ>Îe'>ÝÖ>Ý?>Þ`>ßfÜ>ß9.>ßýÂ>à1“>àr>à†›>àRŸ>ßo|>ݪ’>Ý"ü>Ýî >ß >ß‘î>ÞÖ>Þ9Ù>Ýç9>ßRÇ>àæj>ßð¡>ßRÀ>àT>àGÁ>ß­>߃ß>Þ`ì>Ý’>ÛW—>×Á>ÙV>Û -]>Û´½>ÛZh>Ùó>Ûåd>Üë·>Ûpm>Ú€+>Ú€^>Úó8>ÛóÝ>ÜuÅ>ÜO)>Út#>ØŒ„>Ù=$>ÙxŸ>׊À>Øê>Ù¹†>Ú!>Ún‚>Õaa>Ñ 1>×>c>ÕõÈ>Ö°>ÙûY>Ø>>ÖÔ>Ö€>Ô%>ÐÓ>Å’Ø>ÇÀ•>ÔÇ%>Ôs¼>Ïl>Ôž>Ù¦)>Õ­„>Ï¡Š>Óg×>׆>ÕôE>зÛ>ÐëT>Ðÿù>ÑW0>Òs>Òï!>Ðj>Ë>½>Í›©>Ó=Ù>Õb>Ó£0>ÖLR>Ökó>Ñëf>ÎI‘>Ï8&>Òw¨>Ôwà>ÒÃ@>Ó]‹>Ô›L>ÓŠ>Ï5*>Ì¿¬>Ìl“>ÎöU>Ôx¿>Ó>Ñ,¤>Ñ[>ÒNå>ÒLŸ>Ó ¡>Ó¾„>Ó½>Óòˆ>Ñçù>ÒN¼>Õ#>Öa¼>Õ2o>ÓÃ>ÓU>ÍË™>ÉI>Ë€c>ÐsG>Ñ6;>ÌÉH>Ëb…>ÒIõ>ÏKŸ>Ì9’>Ñ”!>ÒÉ´>Ò*R>Ϧ`>Ëô`>Ês>ÊÛ>ʺ‚>ÎíT>ÐOO>Îgç>Îȱ>Ñ g>Ѷ >Ð9>Ë”™>ÇÞ6>Ì×Å>Ïúï>Ñ%z>Ш1>Ñ…>Ь>Ð.­>Цñ>Ðmï>Ïâò>ÏöØ>ÏÒø>Î>;=>Ï_P>Ð £>ÏI>Î@Ï>ÎvÈ>ÌÀ>>Éݵ>˃‘>Í'R>Ì•4>Ë‘o>Ë‚>Ë -³>ÉÙ´>Ê¿I>ËÝG>ËÛˆ>˽|>Ë‘Ž>ËPè>Ë&î>ËŽ>ÊÎ>ʲ>Ê¿>ʯc>Ê›D>ÊÑ>ÊUÏ>Ê/†>Ê C>É·¶>ÉvC>É£À>É’!>É=»>É>ɬ>É >È÷v>Ȥ×>È@E>ÈX@>ÈIl>È”>Çåv>Ç™é>Æ×!>Çœ>Çuæ>Ç^›>ÇS…>Ç3 >Æüî>Æñk>ÆË¿>Æi™>Å‹>ÀØG>¿Þc>Ã6>Ãïß>Åa&>Å?»>ÀS`>¾ü!>ÃÙ>ÁÔµ>¾ËA>Áf">Äb‘>Ãí>ÃxO>Âñ¼>Áå¢>ÀL:>¿Åë>À¢7>½Ž~>¾ªà>Á‘°>ÂöÝ>Â)>¿ -F>½íí>¾¤>¿Hw>ÁiB>Á˜>ÀÌ7>À=§>ÁJQ>¾¿X>¹v>½gè>À:÷>½ë!>¿2J>Àû³>Á -Î>Á$Â>ÀwS>À‚‚>ÀÈL>À‡4>Àbò>À(~>¿žû>¿S>¿ÔÍ>¿Å°>¿œ >¿Ô>½fP>½É>¾˜Ò>¾Iã>¾cï>¾È>½é¾>½ðA>¾ù>¼Ò%>»ƒß>¼Âä>½L»>¼„Â>ºþá>»'¥>½Cƒ>½Œ²>»g¹>¹2>¸bÆ>¶e<>ºÉ>¹õ>³~—>ªM>²§¶>¼.*>¼³Ÿ>»i>µ…†>±ú>·8>»ú >½ >¼’>¸>±«Z>¯þÌ>µ§Y>ºÐÃ>¼®š>½ Ô>»K>¶³µ>®â*>¬\e>³¸.>º&>¼î,>½Ô>¼®ò>¶?O>°£ö>¬–¬>¦CŽ>¬¿>´«Û>º2>¼÷Ù>½‚“>»ê°>¹Y²>µ´t>¯-¼>¥:Ñ>Ÿªr>¨ÛO>²›–>· Å>»Eg>¼@¬>¼Ï>¼ë{>»O‹>·Ü4>²÷÷>¨Ç>šµz>š4²>¨q5>±'Â>¨é>š;Ã>±X>»HŸ>¼(#>½5„>¼Ü$>ºH¯>µ®‚>¯„>¥†ö>•Ìý>‘°ÿ> Þ#>­=_>´eò>¹WÇ>¼|x>½½®>¾v®>¾ûË>¾Ë!>½¬µ>»ºó>¸Ê—>´_F>¦iF>„ƒU>Ð<>‰Ò>ŠãU>œH×>©–ü>°×á>´©¹>µ"®>·7?>»#>½|I>¾h>¾xo>½0>»`½>»É>º1¡>·ÂŠ>±ÚÔ>§ä,>–&‰>_Ýë>.ŽZ>U˜9>€xq>–ËÊ>¤‘0>¬Ž>°ß>°øp>µ²·>¹æ”>»Í>»jk>ºTð>¹ƒv>»‡@>»àÁ>¼,*>»s¥>»ì>»5->¸{u>µ‡1>±É¹>±ÉÊ>®¦}>¨ $>sé>b­>5 ->„œ;>—Ïs>£u>ª{>®Ù>±Aº>³t>¶d>¶ür>·$>>¸QM>¸k‰>¹Ûÿ>º k>¶l[>²EŽ>·_g>¸õ>¹ã¤>º¯>ºt@>¹ew>·²õ>µÚÃ>±+>®Þ¹>°Î>¬ö>¥é>žú@>Œú‘>Më>8YÉ>],0>„¶Ü>“Í>œ‹Y>¤×j>¨üs>ªéÛ>¡€>¢_j>§jg>©„•>©³>¬Hú>´‹Œ>°¨ä>¯He>µùY>¶?6>´\D>¯±>´dÈ>·©>´P>¬Ãé>°±J>µa>°T:>­)4>³)h>´­z>³ê„>¯?Ë>®IÚ>±’>¯ÅÚ>ª¦x>©ýq>ªiû>¤Ó>Ÿ™«>š4Þ>Œ‹n>pu >lÝ>Š‰d>˜‹0>žÄŒ>£ãï>§`>§/ÿ>ª2²>­ö>®»Š>®¦)>­ç$>¯°œ>°ì>¯nª>¯w4>°Tx>°-Ë>¯ŠÕ>¬‰>«ôÞ>¬™k>¯US>°‡G>°X†>¯Þ•>¬€>¢M>>¥ -Ð>¬î«>®¤g>®mL>­°5>¬™£>«#J>©ÏÕ>¦c>ª<6>¬8ê>«¥ž>ª&d>©I>§é;>¦,.>¦?6>¥“>£›î> úª>ŸÈ1>ý±>›jÆ>—†Á>‘:j>‡ïö>rïf>`¸>w¾˜>‡¡ƒ> b>•“Ž>–‡†>™`ª>v(>žF‚>žPˆ>ž®·>¡•þ>£øm>¤wâ>£Ã€>¤Dþ>¥äü>¦(>¦;Â>§ 3>§x«>§­„>§‹¸>¤«>Ÿ|S>¥Qú>¨Ì>§„¯>¦Æð>¦âù>¥Y\>žàñ>Ÿ²¡>¦¡1>¨>¨b>¨T>¨>§Ù(>¦Ü>¥ó>¥‘n>¥ç>¦Âô>§ë>¦îÕ>¦½™>¦€ >¦4f>¥B®>£ú>£,œ>£ê<>£å¨>£WU>¡?Æ> PI>¡"Ý>¡¹½> Û> N>ŸI×>ž  >Í>›Äì>™²Þ>•Íì>”=è>“…¬>I¸>‹]“>„÷þ>y÷Ó>aî…>W>m*9>Ý>‡f>ŒxÐ>^×>“¼>•_>—l’>˜PŸ>˜“>š‚>›Ò¥>œêz>Jã>ÂÄ>ž;=>žW>žß>Ÿ¹>ŸÎ*>œ€,>Ž½H>’4S>Ÿ> ÓŠ> ²> ½R> 2>žIÓ>–©w>šHh> KJ> ù>ûŠ>”e«>š3š>œø}>“6ª>š6˜>ŸVæ>ŸÑ(>Ÿân>Ÿ´;>ŸÞ3>žw>•E+>™Ê*>ŸG~>ž}“>žzM>ž\À>ž=Ë>ž ’>ž¯{>žÜ>žn>žðÁ>žó>žî]>žÓØ>žº7>ž£>œô.>¡%>ž;>ÎZ>uv>‡>~~>'D>œq¥>œ„>œžC>œ5–>›Š‡>™ý%>˜Ýß>™«ž>™P >—˜/>™I>˜ª¥>˜Ü=>˜¯ç>˜&û>—Zm>–U>•lµ>”E>’P´>’>L•>ñ>†Ë\>ˆkÇ>…î“>”A>;&>xg)>g$Ì>K¦6>Cäñ>\cÙ>pÄ>x5>}‡>…о>‡Œ*>†q>‹:P>Ž…y>À>ŽPÒ>ŒÜ+>Ž¦>Ž<>ŠI>ŒG>-Y>’`+>•Q?>•Ø>•à…>–)à>–G>–ii>–x?>–‰E>–•â>–±>–0)>–Wi>–.#>–lÈ>–É>>–¨œ>–U¥>–‹†>–p>–=Ž>–y(>–m>•BR>”´>•ÕÐ>– —>•Ë²>•ù1>–AM>–,K>•ô >–ÿ>•ü#>•ÅI>•l>>•O©>•}í>”\Í>”Pè>• >>•g>”ÜÂ>”¡>”¨q>”çë>”ò”>”ÛÈ>”uS>“Û¤>”Põ>”]•>”ù>”»>“×D>’>’H>’é">j>‘ëÖ>“zP>’ÿ›>‘³ì>Zˆ>…¿£>Œdþ>‘fŽ>‹«>„ÇØ>ªY>‘Ñó>ƒ†>M5>‘îD>‘‹l>_í>ÛÛ>Ø>ó >ŠÞ†>ŽýÒ>Ì#>Ž!5>Ô>Q >˜#>>æœ>-A>¾>;’> ý>N >/>k4>>€>{>Þ>ŽÑ_>ŽR >Ž0>Žÿ>åž>›T>,Þ>ŒÀþ>ŒJÓ>ŒÁ>‹ÜK>Šõš>‰Û>Š?o>‰û;>‰l*>ˆÌë>ˆ%)>‡$¶>†&¿>…-§>ƒ£(>‚,›>€O˜>|»¾>w~>qmz>iR_>]°†>KU>3ÇÞ>8mb>OÅY>_›ç>j J>qr˜>w$U>{v–>~Æ7>€ó>‚>‚(Ž>ƒ -ø>„.M>…GD>† e>†¢Ø>‡K>‡;Ù>‡Ž>‡è­>‡´Ë>‡o;>ˆb>ˆ;%>‡Qd>‚ì>„X«>‡lF>ˆq¾>ˆæº>‰>‰`>‡¯ð>€ì >ƒüÎ>‡Çç>†±t>‡ï9>…{ð>„U>†âk>ˆ!œ>ˆfÚ>ˆ§I>ˆ‰³>‡Òð>„$®>…“>‡ >†#ú>|çm>‚çR>‡ƒÚ>‡cs>‡Ï9>‡—>…3p>…0š>†2f>…F>‚ÝK>„¯V>†^…>…¥G>„ý>ƒYØ>ƒüZ>…Ÿ>…Ò*>†t¸>†RÞ>†bô>†h&>†lm>†RB>†Nb>†;>† >…øg>…9¢>…+">…™Ô>…x¢>…ƒÈ>…S>‚Ó¹>~W÷> >ƒÃ—>„x›>ƒµC>„>s>„‘‡>„ÂŒ>„^>„[F>„7X>‚î×>ƒv°>ƒÔù>ƒØB>„ - >„r>ƒã>ƒÏU>ƒ°w>ƒFR>‚çã>‚b>‚ÎŒ>ƒå>‚é]>‚–>ÄÌ>à8>‚Ä«>‚Ä>‚•Þ>‚&Û>‚ý>‚V&>‚I€>ýH>@Å>]?>€ò!>Jö>{n>.>€Øú>Dy>€ü>€Œ¨>€ç½>>€ã„>lH>{M™>{HK>|Ù>yäú>|_³>¾§>€:J>€›>šq>«²>Þ·>Ñ+>[/>J>~Ú<>{û<>r^>tFÅ>|®{>}5>yð«>{²>}$”>|¾>|w>{lÃ>yL>v&«>y>|XC>|HG>|>{À*>z‡>q&D>ulá>zØX>z¾Ñ>w³ï>v4>yŠº>ypA>xb[>w¼1>xšy>x -Š>w…Û>w\Þ>w'o>wÀ>wµ>vçŸ>v¸k>v¨×>uë>uÑÂ>uXä>u -Á>tpà>tc½>t/l>rÈÐ>qµ¼>mØû>pDg>q2ú>p»o>pI„>o~>n˜!>m˜>loš>jîÿ>i´X>h4O>e¸>cºë>aƒ·>^mú>[jô>Wrê>RAý>K†>B?Â>4S>@E>ÖÐ>10¹>?óB>IE>OƧ>TÅ£>X>[„t>]Ãi>`¢J>b– >cçO>e†>f>…>f­¯>g]!>h¿«>i[Œ>iñË>jf\>jÂM>k‰>k; >j’x>jA>iß>iÊÒ>gÕ8>hïÌ>k‡©>k“0>d~À>`·G>jt>kœ¬>kÃ>kì3>kÕ>kÕ§>k³¹>j\–>g¤6>j$m>kUå>k>jNÃ>j™¦>jùG>hŸŒ>eƒö>i¨">jˆû>jL>i%g>iòµ>i÷2>i&>c½6>eÊ^>hç&>hÝ >h‚À>h™Y>h¼J>hnk>h$Ï>gù®>h -Ä>gtû>h&>gEì>c´¼>e¦œ>gIî>g!é>g ã>fÕz>fÂû>fÕV>f‡>e±>etÀ>f1i>eœX>ef>eÈq>e­º>ezb>e:ó>e% >e ®>dÐ#>d¾•>d¡>dfD>cîÛ>c6×>cÓ>cçˆ>c»ù>cƒö>aÑé>^Ãî>b2>bþ >bÕE>bk>aÔ>añÖ>b)¸>aÕ%>`ø^>`(@>aEÄ>aji>a œ>a>`Ú->`–>`;>^ßS>_ÿ>`DÄ>_ø€>^¡©>[Õè>^f>^ã>_9Á>^Õ×>^×>^ËŒ>^™N>^ >]AŠ>]N>XË_>Xyü>]C‰>\EZ>\¸«>]3›>]ü>]€>\®.>\i.>\R%>[ë>\3‰>[ÞÆ>[‚f>Zœù>Zf©>[I}>[aì>[/ã>[•>[H>Zw&>X›­>X‘L>ZS©>Z,t>Yô >Yëë>Y½>Yˆv>YEL>WÇ&>W >VNƒ>N*‚>F/>Jm>R u>WŸi>X”>Um ->R¯>UÚc>W{>Wqî>V÷ë>VäŠ>U¢É>U\»>U¥>V$0>Vf >V+±>S Š>QÏ>Tôi>Tq>R‡ô>R¿>R÷Å>Râ—>Qì«>OˆÑ>S È>Sùª>RÝQ>Rd>R¼µ>Swu>Q£´>N@Ž>Rì>S:Ë>R¶Â>R…N>Rö0>R2>O¨ü>Qš}>RFk>R- ->R!×>Q­ž>O86>O¢L>Q5ƒ>Oî9>Ls>F6>L÷C>P¼…>P÷>PJÌ>Ož½>Oò¶>Kø>Hù™>O*C>O¿>Nþá>OA>O4>OÒ>Nû¶>NŸf>JˆV>I‘”>K÷ø>I¥>M‘«>N -Î>Må‡>M©ÿ>M†ð>Mb³>M-|>L¹G>Lƒ.>K“@>DÉU>Ixš>LQl>L1>LW>Kž¤>I½u>J¸õ>H:>7H©>5øö>C‰>6šÛ>9m>D'€>Iƨ>H®’>IC]>F™>Fk·>Irö>I+i>Hð>Hª‹>Ii>G±>>>˜ð>8˜v>Dó¥>HBæ>HWè>HÌ>G8Š>Fà>Dæî>?Cc>Aôá>?ß>E¿(>FfÜ>F4>FW>DÚÝ>E5>FS>Fà>EΤ>EµÇ>DÈÒ>AÖž>=²>B™P>EÕ>Dt9>C„~>D§>DE>Cý$>Cô¢>?“>9ã>A‰ >CH&>A-ð><Úì>@ÇÛ>8¬>;B[>A‡9>A53>AJÍ>Atç>@‰O><‘>?ú>AF>@ö)>@Ä©>@‡¹>@0¯>=í->=¾>1,“>8¯>> ->>*[>=¨•>;ïå>8>8>}>;–0>:Ó:>:n>9Þ>9d?>8§>7 à>6iõ>5V.>3Z>+-‰>,æ—>.:œ>+×ß>(Å>$Ù'>Èu>ÙD>f -=ú<¸=ôf:> ƒì>±å>µß>!ñi>!ÙN>&H¿>(…¡>,Ÿœ>/Tc>-v„>.ì¿>2Ðú>3Ì¢>4kÐ>3Sb>.}¾>/ùx>2Â>5öQ>6Îe>7>7M¬>7yè>7—¼>7¡>7•k>7¸J>7Êò>6Ϙ>5É>0Ïö>4Æ£>7¡>7ÃY>7»>7¡§>7Z>7{Î>7Uæ>7 „>704>6‘˜>7 ´>7$>6Ê>6`š>6c‹>6¿e>6¼/>6£–>6yú>6P>6PÝ>6=™>6 m>5½à>5ZÑ>5·N>5¡P>5‰:>5[>5*1>5+L>5(9>5¤>4®>4¦õ>4Œ…>4v–>4@µ>2Üð>3–Ã>2§Û>2g>08>0ê[>0qÌ>2n7>35M>2—È>0Qø>2>à>2”!>2 Ò>2n4>2>2X>26!>2*‹>2>1ñæ>1Ûµ>1¥>1(¹>0ö]>/ÆÞ>*ïò>+IQ>0¯Ì>0̈>0™>/ÐA>-ñ>/Ä>0K'>0/ >/¿ª>.5æ>/]Ê>/¥Ì>/}T>/Z¦>/$¼>/3°>/>.Ï>.Ç>.Ã#>.‚ >.@ >.+°>+ž‘>&/]>(å >-a=>-0•>-Žq>-Y[>-iü>-S;>-0¶>- ½>,ôö>,ÃL>(®>r>$œÀ>)±Ç>(=–>&Ϭ>(ôž>'Tz>*µT>)ÌÍ>*¡©>*ñ>+Û>+ -”>*¿>*¤†>*B>$.W>!Ö/>(˜Ä>&Äî>)X:>)ö+>(¼ƒ>)(">)¼ò>)—ö>'~ö>%PÞ>(±>)+¿>(˺>(›Ð>(J>#T>%§ë>'Næ>#"€>")Ü>${ƒ>#vñ>$ †>'Î>&i¯>"Ä2> !@>xB>#Ò>%òœ>$é>!z6>%Ñ>%ìd>$ôZ>%Â>%Ì£>%ÓÕ>&˜>%Ž>#<>$ºž>!‚ï>¸/> ‰k>$¡X>% >% ©>$íu>$Ì’>$¤r>$M>$[6>#û¼>$&X>#ù>#ßn>#I>#K9>#œ]>#‰ý>#Zü>#2í>#û>"fk>"–>"ÂÈ>"¸æ>"–¦>"h>>!QU>!Næ>!¤>!ë4>!ÔÔ>!Ç>!¤·> Ÿ†> ,§>!z>!F%>!'B>!\> µú>+»>ÙÄ> {> lI> £> 0> ú>ÿç>òÍ>Õ˜>g'>¯)>ߺ>!¾>Žf>Œ >–ô>1>¥>mù>¤>L>4>®Œ>ˆ>y>†¨>ë–>)K>Z> ¶>]å>gÿ>ÐÀ>>Š>*>4Ò>3¶> XN>žë>1d>š?>&í>(b>©Ô>£‰>”•>€>7Í>ºi>é0> >¾A>äð>n>§Æ>a>jh>;B> -> Ä>íX>Ì*>¤á>o ->tô>>J>ðÜ>>P>Z¦>›Ð>ˆO>’‰>Ù>T¸>EÄ> Ð>dD>ûx>ßL>2)>>$[> „>:ÿ>à>M>Ï÷>âÞ>Ñ€>¤J>h;>+>—X>Ü?>«ç>ü@>x‘>ÈÄ> -n>~>ð¼>Å>Ñ>§>¢q>¨>%ö>Ãã>$>m–>ó>©>E>0>ï>Mä>0˜> O.> ¶1>¸>s> -w­>û6>¤)>ö>ï–>ÖÕ>½>¢>…>o>U¶>:U>Ó>w>ëý>Ð>¶s>œ>~[>Y´>ƒ¨? #?;?Ùl?°?/?†ž?€ã?Ñ=?l§?áh?¶Õ?…ˆ? h?¿¿?cö?7+? þÊ?Ãè?\?(?ô?’J?›?yW?Ç?¨s?,t?ºÓ?Î?N-?ü•?,‰?"3?%?#Ÿ]? •?gÄ?Zµ?6r?\´?†?Àú?²[? Ó©?Ñr?Ë’? O°?’i?á—? hÇ? -ÿl?ö?þ? îÏ? ?Ã?Ty? ž?Ww?²†? 2·? Ld? ØZ?B”?®í?s?RÚ? -§?Ã=?l? -"?ð¨?]ý?©B?Ó¦?N?/Î?X¨?Úâ?.?·^?… ?aâ?rÈ? H;?R‹?™Ì?7¢?‘?ƒþ?ºô?Æ -?°E?#t??ê¨? (»? +ß?Ïn? -Nî? þ? "Ý?k?Ñ=?Íô??È?õ?#­¿?$s?"gÈ?!c?Ü„?¤?áÜ?µ? qâ? z? j?4Œ?W?|?í‰?ýv?"Š8?#œ?#Z¯?!å¬?žÒ?æ7?k?]p?-x?úä?º(? 7÷?å?Ž?à¯?'ú>úûü>ý-i?3è?l£?x­?an?‚c?ee?~ž?ñì?õ‰?DO?»?#ç¡?'1‰?)³?)±À?)Tj?(‚i?'“Ü?%»¼?!è?q[? GÂ?ó‹>øÐ~>ô­Ä>÷<ž>ýmj?Gš?‘? ¤c?-?³ö?þ?¦Ÿ?)¢?}r?Fo?2:?Ê“?ÙÎ?¨B>üÀÌ?–@?C’?êÔ? -•? "Ø? -Y??6?\?‡?/¨?·?ú?z?µº?#æ"?' ‡?(XÑ?(e?%¶†? X?ô\?ó[? -H'?ý“?#?¿Ÿ?.T?¸/? m†?F?°?üÿ?ÝP?X±?ZE?˜ð?Nå?™ì?àL?ð?d¯?Dí?û?…¾? Œç?‡Ð>ÿŠ>÷¸×>ù€v?~Ç?‡©?Ž¢?ò@?`.?5®>þ^ä?FÎ?Ÿ?ñA? ´?h?’þ?5{? Ô¼?½·?[±?~£?gþ?u?"(?!8&?Ó?(ç? -¯\?ß"? õC?rD?K–?=±?œ?"ê?#:´?'äf?+¬™?,T7?+B?)Õ‚?(›Œ?%©œ?§|? ¿?в?Ÿ?¦j?À‘?à?M?!Œð?&Ș?*Äy?,#3?+ ?'ÀÁ?!Î8?]Â?k?ñ´?#’§?'ï3?(?%y=?".S?:Ô?—5?N™?` -?ðF?•î?!æ¶?"k‘? Qó?¬w?ýø?# -?%‹?%ì?&øU?(ª?'Ûi?&_·?#™&?·g?Æ?¸?=ñ?&­?.rª?0Ã>?,,‘?$âc? þ?"”?&§è?*Pû?-S?.¯­?/¤?2N?7ʪ?=nb??ª2?=9?6ç?*V‰?¼±?Êo?™?hX?%×Ï?*B»?-Ê£?1f”?5;?8°ª?:<é?8x‘?3Í%?.?(Ân?$¸Ó?"…½?"Õ:?%°?) u?*¢ë?)åà?(Sø?'c?(OÆ?+óÚ?1²m?7),Û??3Ç?5Õ?6š°?7‘?5à?2¤.?0D€?0â¿?4­ -?8Üš?:m©?97¡?7AÜ?4è2?0~'?*J_?%M?#Þú?&Q„?+G²?/hÄ?0;?/Yz?.¸Ö?,¥ç?'²¯?#hÝ?%¤Î?/†Ö?:ƒ–?>ŒI?:úH?7,§?9» ?A:î?G7û?FáX??^¾?5Ux?2Ÿ„?=¡M?PÜÃ?_߯?b£ë?XÉè?FH?28¯?%•?#Rý?,\¯?;¹?J+?P[g?KIÿ?=¹N?.Ë#?(?0•-?Dðy?Z¨j?lE ?{„Ð?ƒœ¾?„C?zèå?`ý(?Bjû?)”Ï?!|?-8?GˆM?càz?vÖ ?{‘?y„?|’?‚ w?‚JC?w•?_Ÿ„?B -–?&h?Ì?¶x?"Ì?7sL?Q»?mÚÿ?‚öö?Šj9?Œ„¹?Šo+?†‚?‚|’?{› ?m²†?[™g?F¥I?.}?t»? çB?oÞ?+ÝË?Kd?i(ª?#Ó?Šõ³?Õ˜?Mµ?…9?{@°?uJP?w#?|ÐL?‚Â$?‡¸a?Šô¦?‹?‡‰Û?€ ¦?lÜ?X‰}?BïN?-‹Ž?!Îç?(ÄÛ?>·?VA?eá¤?pS?|·p?‡/&?‘¸?™år?¡t?§Ö ?«¯û?¬=Ž?«A‘?« U?ªMÂ?¤åw?›Oª?“b?¨?6Æ?=?Þ?Ë7?Œa£?„s±?sUé?\¦Ú?Exù?-#Â?ÑÅ?g?)RÌ?Huñ?iö?ƒx?šE?˜Ñ? Ô?œÝe?›n3?h?¤6i?®¶Ø?·æ+?»Üj?¸'Ø?¬÷_?ŸŒÆ?—¡h?˜¸·? ×u?«ˆ'?³‰V?´ïµ?¯Ý0?©QÐ?§EË?©Oñ?¨Lj? VC?–oè?x?Ž*¸?‹ôê?ˆû/?…˃?Ù¼?uÀ?^ã&?CM¢?)¢Õ?ç/? üÎ?­?&Ù¸?=³?P?`pa?q¡©?‚Õ¬?Œ|û?“Â÷?˜ó\?œÜG? žO?¥À’?ªèx?¬jÈ?ª¨U?«!þ?°—V?·'S?º„ø?ºÙ²>–!ù>qü÷>Ž~õ>Òã—? ?J­?v™?Ž–&?œÄ ?¤"?¦<?¦ß?¦*Ð?©XH?¯Úq?´`£?²UÈ?¬|E?¨¶ƒ?¨¨À?©æô?«?­³a?±Îc?²«’?¬ÜÐ?¤ì×?¢? ?¥vì?¨oå?¥Wù?›ém? ¢?†¥?yà?^-;?9†Á? Õñ>Èž£>‘üf>ˆ_¦>«6Á>ëY?Œ:?:" -?VDO?p@Û?ƒ—ì?Œ«å?”Ê0?—g?¥ë9?ª¦U?ªJ¢?¨!?¨Øx?­©T?³D‹?¶»¸?¸?b?º°?¼x©?¾W$?ÀIÝ?Ī?Éa]?Í6?Í -ˆ?Ȧ½?Á§?º¾?·ÕŽ?»¥Ò?Ã÷³?ËFÏ?ÎC¨?ÍÇd?ËL?Å J?½ˆ|?»o¨?Â9A?ÌLÁ?Òç2?Ôæq?Ôd‡?Òt½?Ðt?ÏT?Фk?Óe?ÕK?Õå:?ׯ?Ü2Ú?à\Ê?ßð ?Û›?Ôž!?Îf -?ËI?ÎaÖ?Ö~?ÛTÐ?Ø¿?Ï›?ĆB?¼å‡?ºàh?½¢u?Ãö?É¢?ÐŒì?×Ýt?Þ2?ád?ß+3?Ú›³?×¢T?×ò?×FG?Ðøå?Ƕí?Äc??Ë Ä?ÔŽ*?؆2?Ø*Ï?Öõ¤?ÔbJ?Ï`¢?ÉRœ?Åq¥?Åéæ?Èë8?Ë6¦?ÍC}?Ñ‚R?Ö°8?Ø*Ö?ÓT?ÉéÐ?Äâ?Åà?ÊØ?ËMÖ?Ê-Æ?Ì?ИL?Ïx>?É,÷?ÄÖ?Æ6A?ÈÉ?Æ$7?¼8??¯N^?¨fY?¬ðN?¸¹;?ÃÉÙ?Éué?È›Ã?à -?¼—?¸Œô?¸:?ºØu?¾?¿H8?½Þp?ºÑü?·M}?³Ê@?¯¿?©Öø?¡Ô÷?˜ä?z†?„Ã2?oEí?P#?4&?*ç¾?;Áb?\¢ã?}óy?‹‘Å?“ÃÖ?™t? -I? u…?¤žª?ªÑ?°$?¶Ñ?»ð?Á–?Ä×\?Ã2"?½é ?ºj)?»]¥?½5‹?¼×ô?¼n‡?¾¬?Áóa?ÂÈd?¿¨˜?ºœ?¸&?¹Žô?ºÀ½?¹Q?·Ò?ºÞÂ?Á®?É,[?Îq`?ÑC£?ÔŒ¿?Ù‡?Û²?ÙŽ?ÐS@?Ÿ?Á3?Å‹l?Íö?Ñ..?ЦK?Ím4?Ê¡°?ʈk?Ë×Í?Ëšó?Èf¸?Ãöì?ÁrB?ÁÄy?Ä•?Èè@?Ì?Ëœ²?ÉUU?Éœw?Í\—?ÒN?Õ„?Ö -?ÓÌt?Òé¿?Ô@À?Òsµ?É'?»Gç?°âÞ?¯‘W?¶é?½3´?¾#?¹ˆœ?¶¾Æ?»Yg?ù~?ÇÇÇ?Æ?Ä?Ä1i?ÄÒÿ?Ç!Á?ǯ?ÃéM?ÃxÌ?Èp?ÍRŽ?θ?аH?Õ°w?Ø ?Õru?Îh5?Ç“?Àõ€?¼¶Ì?¾Ì??Ã&2?ÃN?ÁPú?ÁO?Áâµ?ÃéC?ÈÂ?ËòL?ÌÇ?ˆÖ?˯ü?μX?Ò—ë?ÓŒ¼?Ξ?Å·½?Àв?Ä8%?ʃ?ÍÐ?θQ?Ïù?Íì§?É÷O?ÃH?¹7—?¯Tñ?«âH?´7þ?ħ?Ðϼ?Ô–?ÏJ8?Ä•»?¼¯³?»ôt?¾šò?ÁT ?Âßú?Â5h?Áç„?ÄÎ?ÈÓ ?Ë‘?Ì f?ˉ?Å‚0?½GÕ?¹{Ì?¼yi?¿Ž9?¾ÔF?¿J@?Ã-Ö?Åþ?Æh“?ÇâÆ?Êz·?Êù?Åré?¿{Ú?» Ù?»}?Á&?É C?ÏW?Ò¸?Ò™¬?Ðj_?ÌÑ?ÆÝ@?Àñ?¹¸¾?´Á¡?µ†Ô?¹?¼lô?Á;g?Ç*?ËÏ?ÌlÃ?Ìtx?Ê5L?Å E?¿é¯?¾ßb?Á]ƒ?à ì?Àål?¹ÄÙ?¯9¬?¦­Y?¨2¸?³·9?½¿?¾ ?ºV?¸ze?¸YÖ?¶?®~Û?¤IÅ?žiÞ?êC? ?§/Õ?¯'U?²Ì?±Êš?®ÖB?­4?°Âë?¸¤#?½‘º?¹"?­Ö)?¥"?§‘%?°ùƒ?¸ÇT?ºÙÉ?¸;ñ?³µw?²??µ•‘?¶Ë?¯´?¤è2?¡}›?§Ÿ?­XÊ?­2a?§áÇ?£7c?¡/È?žõó?šª½?“yß?‡‘ë?nñ"?MÞ9?1gß?³:?#~”?<[9?ZxB?t ©?…÷C?‘ˆd?šãè?¡„?£4 -?ŸÉñ?™Ï ?™ ?³´®?¹>Þ?½Þ¾?¿¹|?½Ã½?¸š?³ÊC?µþ?ºÛª?¼7ì?ºø"?ºtë?¹À?¶Àv?²x¤?­éÌ?¨Ô?¦>d?©íï?°º?´„$?´ü?²MB?±Z–?°ò?±?´‰Á?¸B‹?¸×§?µÔ¯?³‹ì?´9«?µíî?·:è?¸Ê1?º r?»ÿm?¼p«?»¦ñ?¹­«?¶šP?³_?°É©?±=i?´4?·…'?¹Sc?¹?‰?· ®?³ªn?°ÂE?°š?´x?¹½h?¼0ù?ºüø?·þ¢?µbû?³wÝ?¯×Ò?ªO™?§×?¨¾?«?®÷ä?³ M?¶€?¸UÇ?º.0?ºaÓ?¸2/?µ£?³xÝ?³–Ä?´:þ?µS7?¶Ž(?·?1?·ªm?·øT?·‹ó?¶^Q?´ú|?´#‚?´dF?´´k?³È?²ÔI?³?²•÷?±,?°±¤?¯èe?­m?«äO?­e?¯þ?®'æ?«Ÿu?ª•0?¬¾%?°mâ?²~¿?±éØ?°re?°—É?²o?´á?´ª?´»j?´µå?´Êì?µƒ?µ³P?µä9?´œ´?±ÑÛ?®ó•?¬¨—?ªœh?ª¥?¬-±?®·Ë?¯LÆ?­æT?¬Ço?­Æ’?¯tê?°!?°_ž?°í§?±)%?°Äe?°\?°.T?¯öŸ?¯ú{?°@ ?¯×Ü?®,Ð?«Ø¥?©÷r?©,?©Ý?«ðä?­Í©?­V€?©5»?¢†Á?j÷?V?¡Å?¥gj?©.{?«{é?«ð?©åã?¨¯ ?©Ãó?«±q?¬ß?­÷µ?®±?¬Ö¤?ªUþ?ª+r?«€??«–Ó?ªùÔ?ªWâ?©/Ü?¨uí?¨tŒ?¨¬…?©{7?ªŸW?«ú^?­ç9?¯[¶?®ë?¬6Ô?¨¹˜?§-^?¨>¶?ªá?©ÜW?¦éS?¤Æ?¤›?§Ks?©ô?©<-?¨j®?§ÏŠ?¨fz?ª64?«ÌÖ?¬ê?«©)?«PU?«¼?ª=5?§Rv?¡oÜ?œ{#?˜?¢˜ö?¥÷¾?¦6†?¥PÁ?¤ÞÓ?¤‡”?£÷+?£\‹?¢ke?¡T? Í[? ?žp?ý?žó?Á?'?œ0?™t{?”?-~?ƒÿ?š3?È@?‹œ^?„B[?w¦?kQ?aßî?R(K?6è?Ku?ùÑ?&Î?A™Ã?Y±f?m§S?~ c?„z7?†«?„u?ƒãc?‡DÆ?‹å ?Ž(§?Žfß?в?” g?™T?›(%?™«3?–žM?”Þâ?•¦M?—ŽU?™?™ö?–\W?“ìõ?–]Æ?œ’s?¡Åó?¤‚ç?¥Uº?¤)à? ¼Ž?}ï?„©?žÜ\?Ÿ:Ý? {?¢ðc?¤T+?£KÌ?Ÿ©X?›³?™³B?>4?¡ÜÊ?¤€d?¤™!?¡^?šóË?”Žo?‘ûæ?“:÷?“å3?’È?•bÜ?œm3?¡ýœ?¤ñ?¤€š?£TM?ŸÞZ?šŠŸ?–ù?˜ÕÑ?œxg?œ…È?š·?›‹«?ŸÛÊ?£vå?¤¹ ?¤Š/?£ou?¢žR?£µ?£Õ?£÷,?£áÁ?£‹;?£±?¢~?Ÿr¹?™ç?–D>?›f¿?¢¤?¤®¸?¤íN?¤Ù¾?£½Ÿ?¡„ ?Ÿì‚?Ÿ~è?ŸÍ?ŸüA? ù"?¢¶?£8?¤V?¤"û?£$­?¡OI?žÌÙ?š‚?”p.?Š?aÌ?”ÒP?šÍi?Ÿ´?ŸŠÈ?qn?›^¼?šª¹?›¦?œ³€?Ÿ[ò? Ã`?Ÿã½?œÕ=?˜º‹?– ?–˘?˜3«?•Æ5?’:`?“Ï\?™Yâ?œ›?›"p?–úê?“VÁ?’|Õ?”å?“²ú?ŽŸ?‹Vü?Žöâ?”dä?—GË?™iÉ?›–K?œ)ú?šÀ¡?™[?˜ðh?˜©Î?™½3?œy=?r5?šÝÈ?˜(ø?—²Ž?–yÊ?’]ì?½Z?Ž!é?”è¾?›öÕ?Ÿ`´?Ÿ\_?œ¦J?˜í€?•þR?”eA?•;µ?˜Ìo?›´Í?œM?œåË?žv—?Ÿ¨;?Ÿúb?ŸëS?ž¯7?›Œ´?˜ì„?˜ý>?™~—?™ s?™Dˆ?˜ïÜ?— â?–bw?—EÝ?˜k¤?™%È?—W?“!?‘''?“?|?•ôì?—–™?™ ?™6?˜?à?˜“©?™º?švË?›?œ¶E?Û?›V]?—\è?’á!?º?’Z¹?–˜E?š>„?›šÒ?›'ø?™Å?’Åé?“< ?’úƒ?”Ø?•Í?“: ?X¾?Y?+?‘KŒ?‘qŒ?“8]?”›:?“„?‹Ë-?Ú«?Î?‘Œ]?I9?Œð?‹Àœ?ŽJ6?‘üK?”QO?•BÈ?”Ôî?‘Ði?Š"Ë?€ƒb?}Dv?…¼.?Œpò?Äk?Šx¯?†…B?…ò?ˆa‰?‹'?#?ŽOù?!V?¨?ø>?$Ö?Š?ŽBœ?Žðª?ŽÌŠ?Ž ?Ž=?Ž˜û?’¶?Œ…ñ?¤é?ƒ?‘ ’?ŽÒZ?‰Öh?„]X?€+?{ïY?~r¼?º™?€5¦?{;Ç?€¤Þ?…’7?…Óö?‚ƒ ?Ú¼?†·Ä?‹L-?‹B)?‰@L?‡M£?…ls?†!µ?ŠÕÁ?|!?‘L¬?‘Œ&?‘Z(?ÜI?6z?aÉ?Ž«?‹—U?‰Wb?Š?‹Ì?‹Í­?‹±Â?Œ‘Ø?Œg[?‹ä?Š‡Œ?‹­y?Oö?æ½? ?‹E?ˆTÎ?„Z2?„\?ˆ?Œ¤3?ìN?Œˆ?‰ ›?…û!?„£?€™&?{2?>¡?‡Ý?‹5 ?‹?‰f·?†Ú^?„]ÿ?ƒˆ?ƒxO?„h~?‡¼Ì?‹@H?ŒÉ?Š‹??‰á?‰j?ˆ„$?‰_?‹1ô?Œ š?ŒÇ?Ž^?Ž£„?Ž‰Ç?Ž$B?Œš?‰š?…^?„\,?…j@?†]?†*?„)?P6?9ò?…]a?‰ÏŸ?‹æ?Œ:I?‹zÿ?‰"K?…yˆ?ƒ†õ?„8?†ls?‰Wê?‹9?ŠÎE?‰™Õ?ˆ¬­?ˆ?‡X“?‡-²?†Ü€?„Tj?‚¨Ì?„mV?†S‹?†B4?„PÀ?€Ûó?|ú·?O™?‚¿?ƒÕð?ƒ^?ƒÓ?…€?„àF?ƒ·­?…3¨?†ÜÜ?†v ?…ùÑ?†Ÿ?…1?‚Û÷?‚Gä?„Ç(?†©?ƒå?‚Ó?ƒ´Y?„?‚ÿ/?‚¯µ?…3?‡íÅ?‰í?‰øA?‰³ƒ?ˆÞ§?‡n?ƒŠñ?€, -?€Ø“?…j?ˆj?‰cl?ˆ¯-?…¿å? ?EU?…7}?ˆ®?ˆ/y?†A?ƒMÌ?‚EÍ?ƒ¬Æ?…u?…òA?†áŒ?‡=?†¿>?…h=?ƒ–5?€àU?z˜É?yLb?&k?èú?ƒ¯?„±ÿ?†E¶?†§?…¢²?„‹ ?„tº?„¤è?„”Á?„v³?„™3?„y“?ƒC?‚~Æ?ƒ8é?‚Òo?€ÍS?€d¢?ÊI?ê?€¬Q?€@ -?€u®?€¿s??«Ô?‚ÆT?ƒüF?… w?…– ?…`3?„ÒN?„qÈ?ƒùï?‚>3?} -X?uuå?taÔ?zï)?H*?‚‹5?€Á@?|`n?}Œ@?Áz?ƒ£R?„:?ƒ«[?‚Vó?€”Â?uõ?€uˆ?ßQ?ƒÑ?ƒjp?ƒ+?‚{f?Ñ1?‚”?Ø‘?‚$Ë?‚£?ã?bÁ?€‡?¾?>^?!I?~‡3?|úÊ?|P)?{‹?z‰}?|x?}£?~œÁ?€C€?€º»?€ø?~ÐŽ?J¢?~xµ?xšz?q!?nQ:?q¥m?wt?zÛ?wÞñ?v¨6?x¹å?xÅ?u>?tŠ1?sR4?rá?wwA?}­¼?€_[?€žÛ?€z?€f?€FJ?~fá?xd?r²ß?tCW?yg'?|2e?} §?|ž?yë4?wP?wŸº?zâ?|r”?~ -?~>ê?}IÜ?{¹Ù?z³E?y˜¼?x!w?w„'?vZK?ub@?wM ?yô?z·h?{P‰?{¥r?{.?zk?zZ?ybÃ?v5S?r1?kÞ)?g$£?j¯ï?o¿ˆ?om¬?pCt?t?t™?r'¦?qq?t4}?x Ý?yèè?y'?w—Ì?w·??x/ã?x¦?v»m?s6æ?néi?mYß?nb¾?nÑÀ?o7b?qŠG?sØ?t»?tÓW?uR?u}µ?u?tÓ?rÊÖ?q‹?réd?sƒH?q8Á?no¾?l^?j7ð?jÁÿ?mló?p±•?rv?rÈ.?r¡á?rÅŠ?so?tt?t2?tvñ?s¸?rÎÃ?rV?qä?qñ?qÉ-?rñ?rݨ?sQ?s;ÿ?rê¸?r˜ ?rG¤?r"g?rO~?r -?pÈ?oËÖ?p&©?p^ž?nj?k™}?k€ë?n—?p ?pp¾?oíî?n6N?kØ?k:æ?m÷W?pDˆ?põ -?pž/?o1?n<ˆ?mU2?m'[?mõ¢?o¿?o]ô?ni?l æ?kC¦?j÷¾?j}?jð?l-c?l˜Ä?kñw?j¹Ð?iÑa?jR)?kÏ»?lb¤?l&¨?l4£?l\?l¯²?k×-?j:?i?j{“?kÀk?lQ?l l?k$?jŠ ?j;c?j{õ?k”?lCÖ?l"v?kÜ[?kÛ.?kú2?küç?l 0?lXõ?l‡ß?l(ð?kµM?k˜W?k«Þ?kð¼?kñ?kÎŒ?kÑ=?kÂ?kXâ?j¶k?j9ª?j(÷?j9(?i›@?fÔ^?bï|?bÐ?b®½?a8"?arù?d"C?e£?eí°?gsŠ?hÆÂ?hœ¼?h@•?hMª?hy?h¶ð?húÕ?hËÀ?hI?b2õ?c9?cBP?c(“?c ?c®P?cÈ,?cR?bÜù?aD9?_`?_fü?aª?b‰Y?aÝz?aÓ?b¨?`ï¸?`wº?aFÌ?`c7?]þª?]nA?^äÊ?_¯ø?_Ñê?`¥?a¹Ñ?aÙu?`’Û?]¦ý?\?]À±?^@Â?\aÉ?ZÎ*?ZÔ?[qA?[ŒÐ?\u€?]è?]½õ?\¢z?\sõ?]fd?^>?^·Š?^Âè?^‡h?]ð'?]ƒ‘?]îÍ?^,y?]¤Æ?\y?[VÝ?Zv‹?Z›f?\l?\Âœ?Zú ?X=_?W~?XÉI?Z_?Yû(?XÍ?Y(Ï?[\ö?\ôÉ?\į?[pË?ZwÇ?YW˜?Wr&?W‹?X¶Z?X—÷?W¬?V Ü?URÚ?U\ø?Uáy?VI?V} ?Wš?V»ã?Tù?Sãé?S°´?S’?Tâ…?Vjô?W?WÖ¡?X°Î?Y ?Y= ?Xóç?X‘_?XJô?X$÷?W:=?Uú_?V>[?VpØ?V.¸?W?Wî1?W y?UúS?T†?S•½?T x?UjX?VÊk?W8ü?W?P?V‡e?T,–?Rµ?SÔb?U ‘?V,=?V\•?V½É?VÓb?VC‡?TqÚ?Rm?RîV?T]?S÷·?R­Õ?RÙ?S#‚?S…¢?S–Ï?S~i?S‡ž?TN?Tv¯?TnÑ?TC.?S]Å?Pà?K2»?Kß?OÅ`?R´¤?Ss?Sîw?S¿õ?R°¨?Qïq?Qø ?RmK?S.?Rý?P`?Kƒí?Kœ|?O¶”?QØà?Q"?P¶Ã?Pt??Pûq?QŸ?Oúu?JÝ?FÈö?Hî±?Hÿ?EŽÂ?H ·?MsL?MßÝ?JÕ?G€Y?JRÎ?NŸ?Oë@?M›‡?Jq’?I¢p?JÞ?IñM?E4O?D8Õ?IƒÊ?ú(?AåX?CÃ?Dôr?EÎ?DB?B¢?BXz?CA?C¡¾?B·q?A…ó??“Ä?=Àq?=f&??¹?Bä?BÀ´?BºÎ?B½«?Aàß?BE+?B6?@›?=Ï’?<§×?=øG?@?ÿ?A¦Ÿ?B¥ë?CaÄ?CÆè?CÊÓ?C89?Bzõ?BB?AJ?>ñË?>¤??‡ -?Abw?B'x?A¡??Áš?;éN?9HÕ?=*µ?Aݦ?B«i?B M?AžÁ?Aw]?@ï"??þ`??Nœ?>“f?>±‹??ä?@“Í??Æ~?<Þƒ?9g?:C?>È?A)m?AG?@÷&?@ì¶?@"W??k¼?>ºã?>zë??eY?@r^?@=ñ?>íH?<¦ ?<V?>QV??TM?<ɱ?:I?< ƒ?>äã??L#?=¡g?;°Å?;ÏY?<ã?;ON?;‹N?;(6?9A9?8Ï­?99?8˜x?:M?<Û?=™Q?=È?=t?;J?8*‘?6µ?8¶ô?;=À?:"Ï?67z?6h3?:QÞ?;ïþ?;æ`?;Ç3?:Ì’?8|:?7Ž-?9K²?8Ä·?2Ài?,ºç?0 â?6wB?6W=?2å¤?3àÕ?7½?9.‘?8_î?7º?5ìÛ?6€|?7†D?6Óþ?5º$?6Vâ?7*?6¡t?6C?6ý?78?7»?7C?4`?/1g?)êà?%ð­?%Ÿü?*á!?1K?5U?6šA?6¼º?6¤Ô?6 ?6_?6“?6‡]?4ô¨?1l0?-QJ?-\?17?3°6?4h?4Ë?3;…?2gf?2gÁ?3J?2ùC?1ˆµ?0Žr?0Y2?0É?/—*?/h?-êr?+¿¹?)xÐ?'Ñ|?&ýà?&:•?$èv?!éþêØ>Ø™C>¼óU>Îa#>ø.¼? Y?)Û?ÁS??ë~?"1C?$“½?&ò?(¦?)‹-?*j²?+>?*ë?*M?*ï§?,TÄ?+ŠH?*Hî?+Žm?-?./N?.á‹?/¨X?/©?-ì?,W?, ¢?-Š?-û¨?-ôx?-§~?-´¤?.nZ?.ÜÊ?.ú’?/!O?/!ô?/3?.÷½?.dq?-é6?.„?.8*?-Šÿ?,Ÿð?,è¨?-Üp?.¢X?.ÖÕ?.(µ?,Ü?,D?,©W?-–ó?.¯¿?/ ?.¢š?-ºI?-ô?-;.?-˜å?-Ú ?- ?+Ó?,#„?-Wj?-«æ?,úL?,Eå?,0*?,’m?,5?)êï?(®V?)èR?+ÇB?,©?,î?-,ž?-(Y?-Të?-ÁŒ?-¨e?,À?+ÑÀ?*·¾?*v]?+\?,Cæ?+üÆ?+9â?*“R?*²Ô?+Œa?+ò?+t÷?*±Z?) ¡?'#Ê?')²?(=q?(=ÿ?'¥Ã?(DÈ?*7ƒ?+C?+Me?+ y?*ƒ€?)áß?)Bí?(ã?(¯{?(æÅ?(eI?']Ý?'&^?' /?&s?&ˆ?'æ.?(ûy?(­Þ?&Ûw?%A?%y{?&b«?',?'ýV?'¡?&Ã?&ø ?'‰r?'K_?&Èq?&6ú?&.9?&Î`?'@£?&Ç?%jã?$5?#ÄÁ?$ô?$|C?${ø?#[Î?"©w?#5??#Ô–?$dk?$²P?% ?$ón?$­?$¿t?$Í?$V×?$Ä?$bÇ?$ è?$Io?$Є?$ÉR?$3]?$?$‘R?$Jž?"¬1? 2!?!)©?#T»?#ÐÉ?#¾L?#ŠÐ?#7>?"ºA?!h³? Aå? »?"9?"Äç?"±F?"œú?"nJ?!ºn?”?­ª?¾ƒ? XU? ?$? Ð?!”à?!ÂÝ?!ž™?!|µ?!WG?!GM? °x? -žW?…¸? Ç?r­? -I/? Aº? 3‚? -Þí? šD?ø˜? -.|?ûÊ?á??Èt? d ? 2 ? Ê? -ó? -`›? -.¨? Òå? -1? -"È? -? ôï? ÕH? ï?½÷?ý?›?¬r? è? ï?.É?Õ[?i,? ¼?ú?ÚÏ?“Ø?^?6?¾Å? 9?Ûß?uµ?èv?Û?ŒË?¾?üB?8?®Û?£Ž?ˆŒ?‚t?Þg?Š*?6-?Í?yš?,?“"?àƒ?õñ?jž?àî?4?º?wS?n?­?½¥?@0?ü³?q)?Âí?¬?ÄÌ?ÅØ?ù?­¶?Œ'?î?a?Ú?–?ˆ?ß?.g?PÜ?ßœ?2Ù?­1?³Š?—©?3O?”&?Èl?„?Qô?6?9Ö?¸??Ol?»¯?b?‹â?°´?à?ù??^`?öß?}?]Ø?5¬?|P?ßî?ãá?Ë>ÿ?™?wÍ?n?¦?Žt?2å?Žª?ª@?®ó?+œ?Ñ©?û?îî?þ=?Úp?Q¹?[n?OW?[? —?î|?– ?Äü?ôy?¥Â?ˆo>ÿ -€?8?f?.?¿6?µ¯?S?D?:ÿÞó?É¡?ä?ê?AÒ>ýàk>ýc*>ÿj´?¸6?Ïv?§¿?^j?8¸?Qp?-M>þó">þ Ô>ÿa>ÿ•¼>ÿò>þúÎ>ÿ¸>þý‘>üD›>÷Í$>÷˜¹>ù†Ô>üÏX>þ >þ$O>þµ>þÏ>ýòá>ýÄ‹>ý‰~>ý„4>ýL >ütê>üD>ý>>üå’>üØŸ>üÒn>ü¦|>û†Î>øv‰>õäY>òÛã>ñ‚>óÏ>òEŸ>î@³>ô”…>ù>ù7»>ú# >úl>ú}_>ú~™>ø7*>õ×>ø—P>øÍå>÷8Ä>÷èJ>øQ•>øu'>ø—>ø­Ø>öÝ1>ói‰>ô ý>ø t>øëÒ>øÎE>øœŒ>ö†ð>ð€¨>ï~>ô"m>ö‘>÷6 >ö m>õƒ>óÉ#>ò§Ü>ñÜ€>ò‘ >õ©Ë>öu»>ö@’>öA‹>öJ/>ö'i>ôØý>òž¸>òçE>ñ)>î,ñ>ï ’>óS7>ôÂù>õ->õXø>ô’>ô2#>ôÕ\>õÝ>õY>ô#]>ï‡Ù>ã->ØU>؈¦>æ4(>ïû>ðÍ>ñ ±>òç>órh>ó{.>óYZ>ó—ù>ó©ò>óæ>ò„>ïúj>ï"®>ðCÊ>ñ£¡>ò"î>ñC>ð˜Ò>ð/$>ñ7ö>òoÅ>ò÷>óSñ>óEj>ó¤>ò™õ>ò`>ñŽä>ð!Ÿ>íuÃ>ëë >íºœ>îˆÌ>ït>ï‰>ïfÏ>ï»E>ðÆÑ>ð^>î9>ími>íÃb>íâ>îð’>ï^·>í€>ìûö>î+'>îñÐ>î†Þ>íÒÿ>ígë>íÙx>íGþ>ëš>êz>ëÉ>ëk>ë’Þ>ë¾I>ë¯×>ë€>ëZ¹>ëCÈ>è†Ç>äTT>æœý>ë~>ì÷>ëÒR>ì ¥>ì% >êÞz>éä¿>ë2>ë»å>éÀ>ç‚Ç>è1>é¹Ù>é݆>éÅÌ>êô>è÷„>ä’ >ão >ç;s>æ¸6>äÃ>çù->èY>äI>à{>ãŒa>èUÌ>éäH>謤>豇>é1J>è§E>æn>åä>æ+þ>çYÐ>çà¹>ç>æÉ„>çP‡>çéœ>èÕˆ>éQë>èF¹>èsl>èX¢>ç>ç/ð>æ´>åB«>åq)>åu”>ä -Ð>áå>à s>ânn>äM}>äâÒ>äw">å"¾>æ Z>争>㸠>äíŽ>ä‚>ãsA>â†ô>àÅ_>à-@>àXu>àþO>âõ¯>ãEÜ>â¥_>âæÞ>âþø>⌠>á!‰>ÝòÖ>Û›z>Þú>àã0>âQ½>á²Ý>à‘J>ÞäÂ>Ýq•>ß]î>àˆ>á\É>á1ó>à”>ßJ3>ÞÖ¨>ß®´>à,>ߊ$>ߎ>ß¼£>Ý—)>Ú×>Ý~z>ßb>ÞªA>ÝI:>Ýh·>Ý ->ÛŸS>Ý6>ÞŽá>Þ¹è>Þ§>ÞsZ>Þ-o>Þ>Þ}>ÝÉ>ݤ^>Ýà >ݼ!>Ý©¥>ÝŒš>ÝYB>ÝDw>Ý7W>ÜòW>ܺÒ>ÜÛˆ>Ü´Î>ÜA×>Ü&S>Ü7ë>ÜA:>Ü6>Û¹>Û,V>Û†¿>Û§ï>Û–ž>Ûk“>Úè+>Ù´Ô>ÚBˆ>ÛK>Ûâ>ÚÔo>Ú¢M>Úq¢>Úyö>ÚMÕ>Ù±@>Ø»n>Ó½>ÒG¸>Öv>׌?>Ù½>ظ>Òu¦>Ь&>Õ©>Ôw­>Òæ>ÔóÛ>×ý>×R>Ö¥‰>ÖrC>ÕŠ²>Ôn>Ô2 >Ôšþ>Ði¬>Ò´®>ÖjÓ>×®6>ÖÛO>Òß…>Ðò>Ó_>Ô(>ÖvÈ>Ömù>Ö>ÕÙ¼>Ökµ>Òè±>Í>ÑÙE>Ô³D>Ò‘Ó>Ó£«>ÕAý>Õ¯>ÔØñ>Ô&Ý>Óÿì>ÔAj>Ô2Q>ÔRs>Ô…>Ó¾->ÓyÃ>Ó«»>ÔMï>Ômü>Ô/>Ó5 >ÓQm>ÓÜ>Ó9'>Ònœ>ÒåÖ>Ó]h>Óþ÷>Óf§>Ò¿O>Ñlm>Ñ*Ž>Ñq=>Ñ0Ö>Ò:Þ>Ó…d>Ò¬,>Ò{é>Ò©g>Ñ<>ε>Ì¢ù>Îœþ>Οc>ʨ>Ä{e>É.Ý>Ï >ÑÅw>Ñ*í>ÎöU>εÆ>Ò >Ó÷&>ÔJ¤>ÒºY>Ñå€>ÐÄ:>ÐOÍ>Ñ|>Ò2g>Ói>Ó\U>Ò’ >ÑD>ÏY>ϱ>Ïûs>Ñz/>Ò>>ÒÝS>Ñg>ÌäÎ>Ë­_>Í{J>Í•¿>έ¦>Ñ€ >Ô,>Ôg©>ÓRÅ>ÑÐê>Ðò>ÎÈU>ÌÔ#>ËF>Ê‘‡>Ì€›>ÏA9>Ò?;>ÔyŸ>ÔêB>ÔÊ>ÔÌC>ÔÀ>Ò6 >ÏDÕ>Ê© >Ǽ>Ç´C>Ë~[>Ì?>ÂèÞ>¾]h>Ê!|>Ò Z>Ó¹*>Óý7>Ó€J>Ñ×>Ïd¾>̬>Ç#ï>À¹®>¿Z;>ÆQ>̯,>Ðœ0>ÒÇz>ÓÌ->ÔÔb>Õ±Â>ÕýÓ>ÕR%>Ô¨M>Ó:x>Ðã ->Ìg!>»kà>¤Z)>¦u¼>³04>¹Üì>Á~>ÇÒB>ÊîÍ>Ë$>Ê.;>ËP“>Ï Z>ÐÛË>Ñ›">Ñ°)>ЉÃ>Ϻ>ÐOµ>Ϥû>ÌÝ_>Ǩ->¾ð>ª?¦>‡©C>tvj>Œ>¦á‹>¶Þ2>ÀõN>ƹ>Çfí>Ç|ø>ʼB>Î= >Ïú»>ÑNà>ÑÛd>ѽ±>Ñ]>Ð[>Ïé›>ω*>Ïq->Íí“>ËSk>È·ó>ÆÒ¯>ÆÂv>ÄØ>À>î>¹û:>°0>¨^>¬¼>·&!>¿E>ÃI>Æ>Ljß>Çûs>Èò´>ÊB”>ÊùË>Ë€S>ËÞÕ>Ì|Ï>Í ->̬ >ËŸ4>ËÒ>ÌÞ>Ìv+>̃Ü>Ì-É>ËØÏ>ËœÒ>É•>Å?L>Ä'¢>Å*>Ã0>¾Nê>µ"Ÿ>ž$‹>€I>y­*>‘ô>£† >®‡ë>µ½Ä>ºç+>¾yk>¿…>¼ýË>¾Í>ÃIC>à v>¿‘…>Á(2>Å—Ì>Ä`Š>Å:>Ès>Éj>É6‡>É9Š>ÉØë>Ê5¢>ÇÚÝ>Åê…>Çu>Éq\>Èi¶>È:¡>ÉS=>É\>Æ£å>Ãèà>Ãη>ÄÇÏ>Âdy>¾Ç>½‚Ü>¼û¥>¹ŒF>µÿ8>°E…>¤ÐX>˜l>˜ç¡>¦Òj>±ƒ‚>¶î>»râ>½ïê>¾pA>ÁQ>ÄE>Äœ>ÃÒ´>ÄÍ>Æ%>ÆȲ>ÆuQ>ÇI >È7ü>È9Ø>ÆÁ„>Ãçè>õ>Æ7H>ÈÊ[>Ép>É&Q>Çëã>Ã,¨>»|N>¾9k>Å`Ð>dž/>Çsž>Æ÷ò>ÆÐ>Å7[>ÁÁ)>¿H >‰s>Äí¦>ÄìA>Ä^Ä>Âõ$>Á0“>¿êº>ÀÐ9>ÀI4>¾¤1>¼ >»[>¹Õ°>·n>³R³>­¢ç>¥_>—Áw>‘m>›>¥”4>®Æ>³8Ï>³¯Ë>µôV>¹L¸>º!Ø>º3>ºJÄ>½,¯>¿p>¿ÚD>¾‡k>¾ßC>Àêx>ÀÕ×>À»á>Á½×>ÂR>Â>Á¾ >¾qù>¸Êz>¿$->Â>Á)>¿Ð¶>¿êË>¾$µ>·sï>·Ù¥>¿£Ï>Á‘¦>Á¤A>ÁÃf>Áµ>Á[>¿Ìã>½@”>¾>¾§_>Ài>ÀÀH>À¢>À{e>ÀB`>¿û‰>¿>¼z>¼6>½§>½ê±>½ h>º—´>º >»DJ>¼kQ>»€!>»>º˜ã>¹>¸ßO>·Ý>µÔü>±8 >°{Î>±hÀ>®¶ö>©­ß>¢îþ>›<Î>Ž:9>ˆ?]>•#Ò> \>¥½I>ª‰²>®E¥>°¥õ>²sP>´‹>´wî>³bä>µWR>· Ø>¸ Á>¸=>¸•…>¸Áý>¸"z>¸ÄT>¹½Õ>¹šý>µÙ¬>¦em>©ò!>¸KŒ>º@>¹ñ=>¹óö>¹ËÈ>·F>®o½>±Î‹>¸ø>¹ÞÓ>¶9Ò>ª~>±#É>µ!¨>ªV¿>²†>·@[>·þ2>¸-ö>·È>¸3>¶H">¬^>±nÛ>·«Ž>¶6>¶æ>· -Ï>· ñ>¶Ås>·Ie>·X‹>·) >·’%>·fi>·x±>·h>·O>¶ Õ>´Q­>µÂõ>¶Åà>¶hd>¶e>¶=l>¶@>µÌö>´½y>µÛ>µs,>´þ­>´>²°É>²d>²Ýª>²G>°ãa>²rn>²h*>²˜ª>²xÒ>²D>±nm>°j`>¯un>®ÓÊ>­J>­>ªÙ¶>§2v> z>£Ä±>¡ñq>ý>žüa>šXs>‘%Ô>ݲ>v‡V>‹>–NÃ>™1«>šYO>¢s>£æ>¡¼>¦ …>©Àõ>©íà>§é¨>¥_ >¦è>§En>¤tÕ>¥åT>¦×ú>«ðó>®­»>®Â‚>®ðs>¯$¿>¯%)>¯2Á>¯(z>¯ >¯ f>­ìM>®Z>®d£>®Bý>®¬8>¯1>®æž>®vç>®”r>®Z—>®>®w >®”œ>¬°&>¬©>­Ç‰>­æ>­¯õ>­öŠ>®1>®é>­®>­à>­ây>­¥¾>­ü>¬èt>­1ù>«mþ>«eî>¬‘õ>¬œU>¬-4>«­>«É÷>¬uº>¬­f>¬‘7>«Ø>ª°>«¾Ü>¬k>«o>«© ->«y >©Þ>©Ÿ™>ª>¨:¹>©kH>«Y>ªR5>¨jQ>¦*Ò>›—>¢æœ>¨fo>¡Û_>™"E>¤K>©KB>¦¤¡>¦c­>©s#>© ¶>§ˆá>¦š1>¦²‡>¤ÐW> ¸‚>¥Ã©>¦¹ >¤Ž±>¥¦{>§–>¨›>§'¯>§é>§§>§pˆ>¦b>¦D×>¦Æ>§,Š>§ì>¦ÙK>¦°ç>¦Âr>¦™l>¦3!>¥ñ>¥Þ>¥Ê'>¥Ž>¥|>¤«>¤O>¤7ö>¤>¢û>¡œ3>¢“)>¢¥,>¢)¯>¡³0>¡K> WÒ>ŸŠ_>žõM>‚Ì>œPá>šœä>™7>–ç;>”St>®§>ŠêÕ>€„>bÿ£>i&>ƒI>‹ªe>æ">”+ë>–±Í>˜vŸ>™¥Ú>šýu>›Õ->šêñ>›³ò>œÆW>ém>žå#>ŸFŽ>Ÿz'>Ÿn¥>Ÿ¨> ú>Ÿ—¸>ží‹>ŸÊÛ>Ÿç>žÀX>˜žü>šøÁ>žD>Ÿ°è> MT> b»> Xµ>žÖ¯>—">š|×>žhž>œ½>žèx>U>›A>‰Õ>ž|v>Ÿ9>Ÿž{>Ÿqd>ž‡ >š¡P>›ˆ8>Q >œ~>“²Ü>˜ò4>žLÜ>ž)A>ž‘¥>ž$Á>›{}>›rÒ>œHM>›t«>™(¢>›.r>œø]>œ'>›Š>™ u>šVÊ>œ#¡>œU·>œü>œºá>œº„>œÒ->O>œã3>œêê>œØ*>œ³®>œK>›Ù>›ÈO>œ¹>›Â>›óÕ>›>•>˜ÅH>”/>–œ˜>™ëý>š¦>™È>š^®>šãû>›;Ü>šú©>š®ú>š|ò>˜q¾>™V>>™ò'>™øØ>šeË>šlh>šSß>š<=>š -C>™Eÿ>˜Ä_>˜JÏ>˜ÛX>™_F>™!>—Øç>—x¨>—5>™ ‘>™Ž>˜ê¼>˜m)>˜Cì>˜©Š>˜›>˜0¸>—3æ>—´´>—~->—i6>—˜å>—&c>–­>—^~>—>–Ë4>—%>—Pö>—ø>•ï>“ÉÂ>“®7>”:º>’¶…>“ª[>–5>–UÃ>–'n>•Ýò>•ñ>–>–k>•·•>•Ÿš>•{¾>“ŽG>Ž;ä>Öÿ>”hœ>”¾>’M`>“eÆ>”}#>”>”.¦>“Žn>‘Ö›>À—>’•“>”>G>”1|>”]>“ë>’èo>Æ¥>[=>“r=>“f>‘åÀ>‘ Î>’¾ >’ÆŸ>’D>‘–B>’>Ä>‘þ>>‘©!>‘v>‘ué>‘ò}>‘Ï\>‘j>‘lï>‘o!>í¿>öÖ>Ä«>¢@>@?>U>>Ub>h‡>Žù®>Œñ(>ŽgE> ›>Žø„>ŽÓe>Žƒ/>Ž$·>¿ü>Kz>Œ£>Œ$~>‹s>ŠÝ>‰rê>ˆ¯>‡?Ž>†)Š>„€>‚%í>}Ú`>tR>dM³>HBý>EW>`ßÐ>qô°>zôå>€¼¸>ƒ !>„¬l>…¾›>†xM>‡ú”>ˆÒÃ>‰Lx>‰¨þ>Š:>‰ÿT>Š!Î>Šô">‹*ð>‹i>‹‘>‹ªñ>‹¿>‹Ã˜>‹av>‹C >‹Ø>Šÿq>Š¬>ŠŽ >‹š„>‹…™>‡#>…T >ŠØù>‹€Ö>‹p>‹ŽÛ>‹p~>‹qÄ>‹X­>ŠKp>ˆaI>Š`€>‹‚>ŠÞy>Šk >ŠŒ,>ŠÞH>‰VÆ>‡ad>Š >Š”Â>ŠV;>‰Ï¿>ŠDœ>ŠH%>‰º >† -Á>‡kp>‰©d>‰¢Z>‰ ø>‰@l>‰€ä>‰H0>‰™>ˆ÷>‰>ˆ˜Í>‰Z>ˆ Š>…øî>‡G1>ˆ©Ø>ˆ³C>ˆš¢>ˆz>ˆp±>ˆ>ˆV >‡¡ù>‡Œ2>ˆ$ò>‡Ûi>‡½š>‡ì¹>‡ß>‡¿p>‡¨Ñ>‡–±>‡ >‡U¸>‡P>‡GD>‡%=>†àÎ>†ƒô>†Ù†>†ã@>†Éç>†¨é>…ca>ƒR>…ÇŸ>†c>†K4>…ýP>…€í>… >…ãý>…´9>….ü>„v >…Xa>…†O>…O>…Fà>…5ö>…>„ªñ>„'I>„Ž>>„ãë>„›Ñ>ƒ‡þ>»>ƒŠ¼>ƒè“>„Bì>ƒõ=>„ o>„û>ƒù\>ƒ®v>ƒ6Y>ƒ=“>€ô>×¼>ƒ9Š>‚„>‚°,>ƒ3¼>ƒZ>ƒ~>‚Ú±>‚Êñ>‚‘ >‚>‚’S>‚|â>‚1ì>…f>‰ä>‚-u>‚6>‚ >‚™>ý>|©>€+ý>€GÙ>œ0>ƒ3>Wç>_—>F>%!> ƒ>€Ý>æ>~éH>tׄ>jP>oÀš>xâz>€W>€V >|öª>y}‹>~~q>Í@>€>  ->{û>}þº>}Ìf>~Ñ>~°d>~Ýâ>~¢†>|.>yJi>}{Æ>}"e>zÝ+>zÕ½>{^>zZU>yÅ>x>{y‚>|5V>z<Ë>xÀ„>z8§>{¬>z.¶>v‡¥>zI·>{Œ®>{»>zçÕ>{7h>z_>wØD>yÑÞ>z‚š>zR¡>zDî>yÍ>wH{>w³\>y+ç>w80>r=E>j‚)>s©)>xÀ_>x˜#>x?*>wSN>wÍ>qÄE>naS>vÉÇ>w[_>vuü>w6>v÷Y>vö>vÝŠ>vo*>pò|>o±á>sG,>p•>u?Ò>uÒ>uªG>up°>u=ü>uÞ>tØp>tux>t*ˆ>rÅr>iŽ«>oþ•>sÞË>s¥£>s›Ã>s*\>qð,>r>nÒ5>Zªo>Ym0>hqx>XÙ >\œ>iI>pðC>oòà>p{7>mCK>a2>m"½>pÏ ->piW>n”š>oŸA>pWª>nYÍ>b©z>\|*>kfà>om¾>o’½>o%ð>mã^>l3‰>jÂ!>ckf>gÁu>et>l¹µ>mˆo>m,t>m6[>jÞs>k{º>m‡>m'>lÙç>l¢Š>jí¸>f˜¡>`¸>h—>kõÙ>k5;>iÐ)>j•>j‹³>j—í>jµI>d©3>\ ¯>gƒC>iÝÊ>fˆ>`Þ>f‹[>[Å‚>_ÿ>gÐ;>gP¨>g—Í>gè/>fÓu>aF0>fAL>gé©>gÖs>g­{>gq@>gœ>dö>aÔ7>béM>RÕ–>\qW>dÍf>e:>d¬k>b>\„¼>]¡˜>b­é>a³í>`å¢>`w³>a>`ˆ•>_ˆ >^ML>]’Á>[eÎ>RÞÚ>Ue>W<Ì>U3u>Rs>N¶X>I®ƒ>BNž>5õ“>û>'>2Zœ>?ì~>GmÁ>KrŸ>IÍÙ>Mµ>O`9>T…Þ>W°Ñ>T>Unw>Zˆ¸>[m >[Ô&>YÉC>R9>T+Á>WÊ >\\u>]ƒÓ>]°µ>]ØÊ>]÷¦>^|>]ìe>]» ->]å#>]íW>\.>Z–>T6W>Y”>]sg>] R>]Žj>]h>\ë´>]*z>\è!>\rÜ>\·œ>[¡W>\…>\Áâ>\>[ ¶>[¶¡>\\B>\#ù>[óG>[º¯>[»">[ªÔ>[ˆø>Zøj>ZbÄ>Zûù>ZÝS>ZÙh>Z¶{>ZK6>ZVF>Zeõ>Z>b>Yàü>YÔÄ>Y¶b>Y‹3>Y,p>Vyt>Xv>Wv–>W -ˆ>S D>TÔN>T£È>W(÷>X&R>Wmç>T§H>Và ->WHZ>W…÷>W‰>V{;>V°W>W”>W÷>Vðí>V¿À>Vª >VU[>UŒ²>Uk;>S¥>M>Ñ>Mã_>U5«>UW >SÃs>SÛä>Q*·>SýÄ>Tß">TÃ>T;ú>RX¼>SÉO>T"ú>S÷º>SÐÖ>S¥š>S­q>S>S>º>S69>S-G>RÉJ>Rf">RP>Mö>FøR>KQ®>Q•±>Qs—>QÚ®>Q­>Q¯è>Q”¢>Qj>Q;ì>Q%½>PõÃ>LGô>A~ð>Fø>My.>L¨˜>J>L}>K‚Ñ>N„“>L­>N§>N÷†>O>Nä>N…l>N†">Not>FÙA>CõÌ>Lû>J3¨>L³>M·i>L=ž>LÌn>M‹U>Mc&>Jðœ>H•ð>LLç>L…­>LP&>Kæ6>EŇ>H¾X>JuZ>D§ä>D›‘>GŒ>Eø>FDÎ>K8>Isó>D³y>AUK>=Æ°>E{á>Hî“>GJ÷>D}Ÿ>I/>H©ˆ>Fëa>HÓÐ>Ið>I0×>I^¦>H¡w>Dm³>Gk >DDJ>@øM>CG$>G½·>HW>HIí>H*Â>H5>GÏÀ>G»b>GlÜ>F¼G>G7Ú>G@>Fá€>E¾>Eë¾>F§Ç>F˜X>FV£>F#>F Û>Dä3>EZ>E¼¦>E°³>EŠÎ>EEë>C‹ä>CŽÆ>C[?>D¶„>D˜š>D–Š>D{W>C\‡>BµÁ>Cµ>D¬>Cî)>CÓè>CH­>A*>Beª>CK·>C"Î>B½>BÃh>Bž&>B—m>B“x>BqŽ>Aï[>?ûù>A?Ê>?Î,>;q>>»û>A v>>:d>?2>=†Á>9—>9½ä>?(>>Ú®>8ù5>>£°>?å >:q^>9†ß>?ž>?Å>:Y‡>>áÏ>=y>:ÅR>:â˜>9‘ù>8Rþ>,æš>;Gu>>TŠ>:è>3Š„>8.>:LR>=¶P>=–[>=†,>= ‚>7Hú>9ZÖ><›„>;-j><$•><šW><€-><[>;íQ>;Üì>;¿¨>;/>;p)>;9f>;B·>:ÛV>:Òn>:²:>:½á>7:>-í›>1º"> Ó>0†K>9­n>:‹>9ï>9›g>8}>6@³>5ű>2Õ«>6Ði>3n°>8X>8â ->8½ >8š¬>8<Ý>3¸ª>4Ï>8õ>7´Á>4Øb>6€×>70 >4‚8>5Ëa>6Ã>,Є>09¢>6´Ì>6Õ>-ˆd>0ý>6N!>4ŸŠ>/úî>58W>5îò>5¼;>4'ë>/¼>3n}>5g¢>5QW>5/v>4Kª>.4ü>+a&>*Û¨>3%é>0ó>){t>'Ü‹>1³>3âð>3åŒ>3Çõ>3¨§>3‹f>3i>3TX>38>3¹>2ò×>2Ó >2À>2žK>2€¯>2eˆ>2A†>2j>.–À?Ýü?#K?&úï?*’ ?-é ?/B÷?-?)?&}³?&À?.Á}?*¡ç?%ŠN?!R? c?:Ö?©{?(O?vÚ?—x?"‚c?'a1?-¹¸?4 ?8J?8gB?6ÀÅ?5–A?4½í?1í0?,Z¢?%Êa? „þ?\?·\?!Æ–?%®?)êµ?.–¾?2ï¸?5Þm?7•?6w%?4z?1¨?.r?+‚?(À!?&T ?#ÃU? /f?Š‘?Jª?£‰?~Q?bð? Æ?U3?—7?"–?)Í?, -?+q;?)âÀ?'èX?&_C?'Yô?+¥$?1eÀ?6Lü?9©C?;Ë?<ÓB?<Æs?;û¢?:Ê?8•S?3…Š?*H ?/a?ÒÌ? jœ?„? ʼn? õt?Þ?Á@?k?4(?"¬„?$¿?$ä?%›v?(?*t?'Ìq? Ä?ðÕ?Ñ?œ±?7?žF?ÞS?«?þ1?$¡ö?+—?/2°?.0#?+¾ã?*Ë%?+“Ý?-ê¢?2?7Ö?:šO?;Ò?;/ø?8Z?2D–?)€¸? ¯?~?N?Õ:?ÏÞ?¬Ï?Uv?ô?Ù-?!ê?! -|? 0õ?"úì?(8£?,ˆ¡?. õ?,Á?*NÍ?)2'?)é­?*H?'ƒ¶?"\•?áÖ?ÄÔ? w? -? -ú/? »?ÖF?Ó?¤N?þë?P?Yi?V“?'?§?;Õ?Z?¹‹?|Å?‡?%íÖ?*ŠÅ?, I?-8k?/ï´?2•}?1^å?*˜0? æ]?"ì?ÇÌ?ãÃ?rŽ?$ ¨?&S½?&ˆŒ?%Tº?$PÛ?%÷?*'œ?/0û?2@?2ÔN?2pL?2»–?4«?5š…?7?-‘~?+üì?+,³?.i?4S ?;? çf?@¯?£?În?ÉU?$e¨?)ûP?/m?53?9Ú}?;Û?:—ú?6ú?0có?)G“?' ?+ôY?4 -7?9kP?9Éb?6žX?2Wy?.ƒù?+z}?)Ö?(¼?)e?-«¦?1Ð=?2Òß?0nÕ?.:?.ök?1ÛÃ?3¾?4g ?5{}?6ºÑ?6£º?4ûõ?1çf?,ª)?%5o?°?ó??&(°?0e|?7C;?:-¤?:lø?7¼.?1ý…?,ž?+æs?0#?5ì”?:}€?;n?7_?0Xî?*¾Ø?) ‡?++Ä?-åO?.H~?+ÿ«?'“?"Ò?Jî?…'?&»?0$”?6ü0?9¹?9×?9Ñ?;-?;^?8Èú?5ŽŽ?3hã?34?,À??/T\?3íX?8{Q?;A??O ??ÝJ?@Wˆ?Ak\?Cc-?DÇ?B«i?;³p?2Q-?+,ë?(Æ?)ˆ?*IF?)£}?(`¨?'—”?'„û?( ï?).?*Å9?,W?-à©?/ùñ?3Ï?6?7@?5Ù?1½š?/ŸÔ?.Ý?,¸Î?&šM?·6?t ?ý?ÝÒ?¶?DÉ?%^ø?+Â*?1- ?4ƒ_?6ù?7R—?9G?;à ?>&Ö?@'Ÿ?A¾?Aç‰?@-Ü?<>Y?6×Ú?1Y?-W??+ûñ?-Ræ?0A,?3T?4=9?2É’?/Bå?+ Y?)…ä?(§ò?'×í?'Wä?(îô´?D6Û?GÎ7?I† ?J.ê?J¡­?KÞ?JíG?J<Ý?I{*?H»ž?GŠ?Eì½?D×Ú?EE‘?Fü ?H±6?Hò®?G"I?D/?Bå?B˜?EÌM?Iã¸?LT¸?LÜ?Ià·?F¦-?Buà?=“…?9cà?7‘[?8ŠÒ?;"¢?=žR??Ð??L?={œ?:I?5ðl?3DÄ?4›ú?:1 ?AJ ?F“×?Hõö?J ?KÉ€?NXh?Oê¸?N¬;?J€È?EÌ–?D³Æ?JKµ?U1ß?_c?bv?\(?NÇ\??¸?3y?.Ò?0¥¯?8ûÄ?B¶F?Hü½?H³ü?BN¸?:î?6[Õ?;1'?Gß*?Wø½?g;?s|Ì?{Dÿ?{ò?rÛ”?`f:?IPL?5{/?,Âa?2Ƚ?Dšß?Yïï?jÏ?qÁJ?tuW?w-X?z„w?z6‰?qµm?`?·P>?¶ï$?¶÷?µ³H?¶ÓÂ?¹’?º„?¹—?³ˆì?« Î?£SÁ? 9’?¢€È?¦µz?§Å‘?£ƒ•?œÁ¡?˜xF?˜¯?š~S?™q°?”_?Œ ?‚ÁO?pÏÖ?Yîj?B{f?-Ðô? ?*?*|Ö?>ò ?Tæ(?fÖ§?t?~©?ƒù?‡ÝR?ŠZ?‹(?e?™?•ƒV?™|?šÂ€?™†É?—˜c?—ë?™0 -?žgõ?¥]·?«í›?°‘m?²›?±Œ?­Àa?©N¤?¦x ?¥o°?¤œ¹?£è?¡n ?¡ý?¢~k?¥4ý?¨o?«S?¬­ó?« ?¦.?žž|?•O¶?‰åž?w_a?Uy¡?/þ,? -m¸>Õ¾>²¦ž>·éd>å´S?Yw?@T?f=?ƒBÚ?…$?—r?š! ?šBª?š%o?›Í2?Ÿ ?¡Êp?¡Å?ž©C?›ü±?›>‡?›ç"?}?žª7? EÞ? Ì?œÇÀ?˜D?•I?–x?˜–?–™ù?»X?ˆ]?c -?nX?YÙÙ??…Ô??Œ>ü2@>ÈÌs>³Bv>ÀÔf>êŸ?GX?-Ò?G‰f?]’+?p -?Çì?‡(ƒ?Žpý?•X©?š0O?›Î_?›c?›V ?œô5?Ÿæ?¢ ?¤9?¦%š?¨¿?ªÝO?¬ÿ¢?¯´?³,?¶ -?¶—X?´(?¯iW?ªF?§†”?©6Ÿ?®¦F?´ª¶?¸la?¹%º?·Ò?²X¾?¬Ãž?©c?ª¡{?®Hˆ?²{?· c?ºŒ6?»…E?»Y?º…“?ºŽƒ?ºÿ•?»§’?¼¾ß?¾¾Á?ÁÈ#?ÄÃü?ŧÖ?Ãtå?¿Î?º­?¸s?¹A?½+??ÀŠ;?¿ü??º´:?³¨?¬P=?¨ß?©;ô?¬³/?²-G?¸¥ô?¿ ?Ä"µ?Æ®Ÿ?Æ+¾?߈?ÁV?¿d?½ -?¸,?²y?¯16?²n?¸¼ô?¾»€?ÁU(?Àå?¾ô?ºï?µØÓ?²¼?°”b?°¶­?±Z|?²¡%?µvÇ?¹$:?ºÈ\?¸#*?²Š?®?­§ž?¯Ìí?±vÍ?²Ð?³C¥?´æg?´¥5?±ÚX?¯‘?®'?¯;È?­Šp?§ŽK?Ÿ8ì?™DC?™Gk?žìÔ?¦›?¬Gá?­Ìß?«:(?¦§N?£=…?¢Û)?¤è!?§Dó?¨2?§Jï?¤ñ?¡ÊÙ?žZ­?š˜¡?–¹?â?‰Í'?‚¾?rGA?\ã}?DhQ?.Šì?$g?*¿½?@%?Zó¶?r !?Å?†d%?Šk«?Ž-æ?’4ª?–œ„?›{?Ÿq ?£·?§µÖ?ª'?©ð`?§¾`?¥Š/?¤µÎ?¯e?­Ò?­‹„?®d?® ®?­Ó?­Ì?°(?³í?·v?º[S?½¤?¾œÿ?½Û?¸–?²”F?¬êý?©|Ý?©GÒ?«PÌ?­X¥?®?\?®çâ?°u ?²Î3?µÎ?¶Àµ?·^ƒ?·oh?¸G:?º¤?½K,?½¯€?º_€?´ëÝ?± Ù?±8S?´dÏ?·¢ ?¹V¹?¹Ã«?¹( ?¶Ó?± ‰?©6?¡wD?ž8?¢{D?­9Z?¸„I?¾by?¼Õ?¶’ê?°Tï?­Q²?­¶·?¯d?°\e?°tÅ?°ÑÜ?²=?µ¹2?¸×ž?ºk–?¹AÎ?µ. ?¯æÁ?¬w°?¬N“?­õ]?¯¦ð?±Zè?³¸T?¶/»?·Øü?¹6Ð?ºŸp?º³Ñ?¸y?³6Q?¯ ?®–ø?²3 ?·÷Ï?½?ä?Àll?Á ½?¿³®?¼Ä«?¸ß—?´?®‘J?ªi;?©Zj?«(ò?®` ?²X¹?¶è‡?»?½oú?½Í­?¼ó?¸k‰?´u??²s@?²îR?³Ô?²] -?­)?¥N€?žæ?ž€¢?¤Q?«U?¯TC?¯jX?®ˆ?¬l¸?©s?¢ÒÉ?›C'?•Žœ?“£k?•¹ó?š˜™?  -w?££Ö?£Þ÷?¡Ù? Áó?¢åi?§žI?«?û?ª?¤‹Š?Ÿ&?žz ?¢À‘?¨,æ?ªÕ ?©ê4?§ª"?¦™å?¦Ûk?¦2?¢³?œ?˜3Ÿ?™#ê?œ¡Ñ?žpN?œ÷~?™ôß?—>‰?”¹?‘ ç?ŠÙò?Nö?i\¨?LÒ_?2p ?!ÛJ? úÙ?/“Ó?GzR?aB?wà?…£5?‹‰?’ê?”ÿ½?“Ï ?‘.A?¢Å?”S²?›*ÿ?¢:r?§AP?©Ê?ªˆž?ªè?¬[F?¯Q·?²ÿõ?¶ Ú?·Ÿ?·sà?µ-K?±9ï?­}¿?«ø2?­9?¯Ä}?°®M?­ët?©+8?§u?ª¾?±ŠÒ?·¾\?º¦B?º\œ?¶ýÇ?°ç?¦òê? 9 ?ŸjR?£Ê©?©º»?®R?°È?±ås?²[ù?±kÃ?® ƒ?©À6?¨)-?ª†°?­²h?­–?ªâ?§X?¨”$?¬Œ²?¯Ïó?± ?±kz?±¢Û?±LÏ?°…L?°žü?²I?´bÀ?´¨?±:§?ª¥d?£ì=? «þ?¢äè?©`Â?°xì?´}Š?´•U?³2@?²¢?²Ûb?³?³A$?³Ýƒ?´B@?³Ù„?²µ,?°÷ÿ?®j»?«r ?ª2±?¬¡–?²¥?·{q?¹„‘?¶¨?¯‰?§&¾?¢ -?£U?¨¤¡?®íá?²¤Ž?³`?±®™?°IV?¯¹?¥*E?¢Ñ¥?£Ì˜?¨*'?­åš?²¨J?µ:þ?µúù?µô‡?µ”?³¢>?®5™?¥ó:?Ÿª?Ÿç&?¦:V?®º?³#u?´¸?°ü˜?¬&~?¨™p?¨_?ªÔÄ?­o¿?®¯?¯-i?°&Ý?²5Q?´x"?´ö?²þ?°™´?°É¶?´\È?¸ü‹?»s3?ºu?·Hè?´ÐR?´û­?·¿?¸Ó}?¸¯›?¶‚ý?³_´?°ù ?°=[?°‡{?°lï?¯kX?­Ûé?¬6’?«ƒ?ªm‹?ª~?©"ó?§hë?¥KÊ?£ö?¤N9?¥cf?¤Ô…?¢(G? VQ?¢Í-?©qþ?°ƒ£?´RR?´ V?±Ð€?°2c?¯Ï¨?¯Ç ?¯jè?®Gô?«¬+?§ -s?¡Éº?Ÿc!?¡H×?¤†|?¤ñÿ?¢5c?ŸïÜ?¡O?¤ß’?©o¿?­g$?°B6?°å?®u±?ª¿ÿ?¨ìõ?ªjË?®??±¦?³Ü?±ož?®?«9?«µ¥?­ö¯?¯åo?°ë?¯9ã?­åá?«©f?¨5T?¤U? 4·?ž¥?Ÿæy?£o•?¦¹#?¨#¡?¨µ?§’±?§,ô?§e÷?¨Ä?ªÄû?¬ev?­,—?­k?­\Œ?¬óØ?¬\è?«Ø’?«Ô0?¬sÚ?­_½?®P8?¯[m?°j)?±«?°ÜÆ?° «?¯ Æ?®Y§?­Ò?¬²¾?ª„/?¨ - ?¦ªh?§%?¨óé?«´š?­Ý«?®ž˜?®Yá?­@?¬8™?ª|’?©^?©ÐÆ?«€?«W?ª#P?¨ÑF?¨\#?¨Œ3?©*¸?ªN†?«¼Ì?¬êG?­] ?¬ÁJ?«y?¨©Î?¦³?¤sM?¤éè?§ *?©=H?ª_C?ª2u?¨ö©?§1/?¥Ç5?¦c?¨A*?«F¨?­A¥?­#G?«hÓ?©-ö?¦~ö?¢µî?ž‰b?›Õ/?œ#?žû?¡•h?¤C?¦å­?©Ré?«˜?«!‚?©u ?§:¤?¦×?¦W?§Æ[?©WL?ªL6?ª‘Œ?ª„s?ªuQ?ª;›?©ƒF?¨s?§À?§¤“?¨AA?©,Ä?©¦3?¨ð?‹Õ±?Ž¸?Ž—;?ŒÑª?Š v?‰ô?ŠÔú?ø?WV?‘P?þé?ŒÐ‰?‡YÓ?à'?ó?‚ÆÅ?‡**?ˆíŽ?‡sw?… à?„N®?…ßS?ˆyú?Š¨ž?‹ý?Œï?ŒT?Œn&?‹cæ?ŠI?‹”¿?Œ^c?‹¾õ?‹…?‹¨?‹ª{?‹v -?‹m´?Œ*e?{Ò?¼Z?‹y?†ù‹?À}?{%·?w¤`?x®?zž¼?zÛ¬?z¶6?}A3?€Ù ?ï ?Ö?‚ Î?„šl?‡µˆ?‰o?‡Î¶?…ed?ƒþ?„öç?ˆ0L?‹ß?ç'?Ž„Š?ŽÆ(?Ž Ò?Ž.ý?y?Œ%?Š&ò?ˆÅ­?ˆsŸ?ˆÔ=?‰OÃ?‰¶·?Š"†?ŠOy?Š+?Š P?ŠÌW?‹õ‹?ŒzÃ?‹ Õ?‰Ÿ?†èc?„Á?„²ô?†Õ@?‰À?‹k?‰ÝÓ?‡|È?„öÐ?‚‰á?€¼?}àÍ?€§e?„XÊ?‡”Í?ˆTÔ?‡?…µI?„N?ƒ<ú?‚´‡?ƒœ?…q—?‡\á?ˆA)?ˆDî?‡Ï‡?‡0á?‡Nu?‡ó?ˆíg?Š7É?‹]m?ŒVÅ?ú?8?Œ†í?‹. ?ˆÍ?†3±?„Rž?ƒšÀ?ƒ¸¨?ƒ‹?‚_?"è?‚™?„0?‡ÿ‰?Š‹F?‹?ŠcÅ?ˆŒõ?†_?ƒèr?ƒ±?…y?‡â‰?‰’6?‰Ñ¼?ˆôf?‡E?†8ç?…¼$?…ÄÏ?…#?ƒÅ?‚öR?ƒ7\?„CÌ?„˜ö?ƒP?€³§?~*?~»Ë?€ì3?‚7?‚lA?‚ª»?ƒ&?ƒ?ƒðO?„—3?…š”?†t?†wt?…Íj?„aþ?‚¸?‚n ?ƒª„?„¡•?„MŒ?ƒK?ƒ,?‚È??‚I1?‚w–?ƒü?†]?‡®¥?ˆ¤ù?ˆàS?ˆ0?†®?ƒ S?€Ê?€×«?ƒC?…ñ?‡²©?‡dÞ?…?‚¶?‚ƒ?ƒvµ?…ë?…u+?„%?‚z-?¾ð?‚_a?ƒ³?„æº?…×B?†2Ô?…¶m?„q0?‚[‰?°;?{ÿL?züš?}#Ô?€Òh?ƒÌ?„ŸÜ?…b?…Z?„Œ¼?ƒˆº?ƒ"D?ƒ í?„ò?„ML?„;ƒ?ƒÁ?ƒ5?‚õ³?‚¤ò?‚Ú?nV?€ô}?½?+Ð? ?ì?JH?zÁ?~£?Ù ?‚Ú_?„(e?„ç„?„øÇ?„èª?„¶¶?„*X?ƒ(1?X?}¤E?yä?xJC?{¾?€DV?s@?€Áó?•?€u?€?‚è?ƒo~?ƒy?‚j@?Ël?q[?…5?ÿ‡?‚¡!?‚÷Ü?‚ÁH?‚Ï?ny?@=?pô?¯µ?΢?®$?j?€9?~§Ð?~#?}àð?}?|Ê?{…?z3?yèr?zÈC?|©ø?~è“?€=•?€l˜?€?A“?~fþ?|-{?w½¾?rb?o(¹?pu?tEB?vÙJ?wcÑ?wC—?v¾U?v a?tݨ?rî!?r/?sùì?wß`?|¨Ò?€(8?€õY?'¹?B?€x«?}™º?xîì?uƤ?vu?yY[?|”K?}«.?|j|?zÄ?xi+?xÉ+?{®?}wß?~© -?~Ù#?~ø?|¶`?{<>?y¤-?xgR?wy?w3a?wÛ¤?y,^?{¬?|hŠ?|ä?|¯*?|"?{–Ê?zç!?y‰Œ?w ?s)Š?nåã?léü?mÌD?p´?r Ž?s”`?tþ–?uì0?uÌ?uåÄ?w'ª?y$(?z—?zÇ?z@û?yPh?x·d?xþ?vd`?t?nÃó?o¯ ?pL6?puU?p!P?pDX?p÷!?qHŒ?pi°?o ¾?n’w?oR•?pEg?pÃz?pÜì?p(?o"8?n‹í?nµ?ob?p‚,?q™N?qï„?qž*?päG?pr?pÿ?pßs?qV?q¸?pýA?pŠ¢?oã¾?o´“?pE÷?pÓL?q??q9?pð¼?pe:?o’°?n”Ì?mÒÜ?mVÊ?kë^?j?hEÜ?fMc?eZl?e•?fèw?hÎ?j) ?kc¹?lÝ?nS?nHŸ?n;?m«ü?m˜?mA¥?lØË?lÑk?mÈ?m/Y?l]3?kYÌ?já˜?j”K?i/O?eF-?_*ý?Zà?Ybò?\&›?]ÇN?\,Ê?ZÇ@?]9?b}x?fh?h8b?i#?ic¢?i<;?hó?hÛ ?i ?hI5?f^A?dçÚ?dÉð?eûÉ?fÉ5?fõÆ?hœ?hK€?g@?fºû?fÖE?ei‚?cÛR?c‘?cçþ?e@?fZ™?g)ë?g£&?gu?eŠå?b&×?aÏ1?c‘Ÿ?cb]?bf?aº¾?aYx?bV?c¸Û?dªÈ?dE ?c¯?bí0?b±”?cà¬?dË?d™}?d*4?c:µ?bQù?b³j?c‹t?c¿~?c(O?a÷;?`mÒ?_+€?_¿¸?aSM?aÖ?`!„?^$¡?\öô?]¥^?^ã1?_?_u?__©?_3Å?^j!?^Š+?_âl?`”J?`„ó?`ˆ}?_ûD?^÷•?^-Å?]5ã?[Qï?YÈø?[˜¯?]Hï?]7`?]o?]y…?\>.?Z߃?Zd?Z%?Zjl?ZÀ?[€ä?\Œ?]Ñð?_ˆ?_™n?_È?`Av?`ož?_¹ý?^çG?^uÄ?^6Ü?]å~?]×*?]è=?^-Ñ?^«]?^Z4?] É?[ÞG?[š?[bš?\±,?]Û—?^Dò?]÷(?\Ì4?ZõÔ?YÐ?Z§.?\Hœ?]T§?]ä ?]ôˆ?]\Ü?\*#?Z¹Ö?Yžë?YqA?Z›Ÿ?[Sý?ZðÓ?Zyd?ZJý?Z„Ÿ?Z½Â?Zší?Z‡?[-º?[ö@?[÷\?[¡?Z(?VtU?S9?SP~?U²?XÒ‹?Z0_?Z7Œ?Z%Ÿ?Z6ž?YàI?Y}æ?Y¯W?YpY?X6õ?Uñ?Så­?Sñ˜?V-f?X?Xf¸?Xº?X–r?X.?WY?Tç?Qj?OW?O5?O³?P¾?PïÁ?Rí|?SÙð?RŒS?Qª?RÞ$?U[?V |?T&U?Ru?QÆN?Q)c?O/?Lö"?Lš¯?Né%?QM3?Q2„?PV?PdÊ?QYª?Spû?Tó¬?T×*?T¦Y?Ték?U¦Ñ?VX?V²™?V,A?U j?T¸?T2?Rd–?Q†:?RY$?SïÂ?UŠT?Vu?Uš‘?U#?T‘?T.´?T»P?UÛ ?VCõ?U˘?TôÖ?SÑß?R ¸?R%?R5³?Rw?R¦Î?R??RrÔ?S¹?T $?TQg?Sr?P?Mý?Lþ?MôE?O:?OJï?Lô“?K0p?KÞ†?MÉ?MH³?Jõ?H>?Gfâ?I<˜?K»o?LDD?Ku?Jï?J¬ ?LR?Mçë?Nß’?Ok-?OÁò?P -?O®=?Nú­?Nê¾?Nü?Nù ?O){?O+ø?K‰e?C¸D?@1ñ?BýÉ?F—¤?I°j?KõV?M­f?M“?KQ?Jf¿?Jx-?JGz?JM´?I­H?HU?F -z?Etá?Eä?GUð?IçO?Jµø?K?KÓÃ?K;?Km&?J9n?G¤&?Eس?EÓ?GX?Hàm?Iòx?Jy|?KL“?LgÌ?LÙp?LhÒ?K…ç?JcT?H¾w?G4Ì?FÔ½?GÝ“?I……?JÒ?Ii®?G?S?DÐý?Dú¢?Fò6?I7*?JA±?IÒz?I²t?I¡à?I¢?I?GÒa?G|?G¦?H¥q?I\h?HÁk?GÈ?E®ó?F/*?HIº?Ja?JåÆ?J‰8?Iº¬?In@?HºÝ?HB?H‚?I‚ò?JQ?I¨•?H."?FJä?E¼é?FR^?FàU?F?DÜT?E{»?GK?GÔó?Fƒ/?E ?Dé?CÅã?DÈ?Dôë?Dö«?DIv?C`?AÇA?B!¬?C›?E‘Ì?G`ù?GðŽ?Fé÷?E_?BðÃ?B9æ?Cu‘?DŒ?Bï7?A–?AŠ?C-¢?Elç?F•?F?Dœú`??{ÿ?A™¯?Cc8?C?Asþ?@ü5?AAÚ?A„ ?Apÿ?A±L?B:ó?B#0?AêÃ?ABC?A -h?Bº?C¾–?C@?@#m?:¾l?5c6?2So?2«J?6Ço?<t??‹ ?Ah#?BMÒ?B›%?BbÝ?Aü¼?A÷“?Aèa?@xB?==¯?:r?9ü?<ÚL??]•?@ý??à ??Ø?>Ì)?>e?>õ?=ôÃ?=A?çŽ2>Ö8á>ß >ÿÌB?ì?+ì?"œ?&¹¿?)çÍ?,j}?/2D?2%ç?4Z?5^c?6* ?6œv?7Ô?7„>?7³ý?7Ä?7ÑM?7xñ?7¸®?9ª?:¡¾?;W ?;k?;(?:y¶?9×¢?: $?:¹$?:Å?:¸k?:­5?;#?;Ð?;Ór?;¡/?;ÿÅ?<”e?<¼Y?i?(E^?(R4?(ç?(?ð?(pÝ?'Öœ?' Â?'¥}?()|?(0é?'ø…?'½C?' É?'A~?&7=?$¡§?#ç‰?%z?&nÆ?'J…?'k/?&úø?&§?&¼?&÷Y?&Å ?&eÌ?%ù×?% -?$-&?#Ò~?#F…?"Ñt?# -?$¢Á?%°?$ëz?$?$?#Å?#ÔŠ?$$O?$0/?#ß7?#e$?# þ?$@?$è?$Ü?$™?#Tº?#Ú?#¨w?$%??%/b?&B ?&Q¤?&7Ö?&.²?%á?$Ä‚?$cw?$hî?$êˆ?$Õ¡?#ó¢?#V2?#Ïí?$/¿?#ÈN?#Œ]?#æÆ?$W?$dY?$r…?$¡?#Îè?#mª?#xN?$?#í§?"ã8?")?!øÄ?"C ?"=S?"Eo?"¡ ?"æ¦?#ú?"âþ?"”?"°þ?"Ö?"p›?!Ék?!$? Pï?ó?+(?¬?lþ?e?±ð?Ÿ? <º?!Ý]?"%?!½? Gö?ÂÙ? í"?!Î;?"Ä?"/N?"5û?!±©?!J ?!d?Á»?«°?¦ª?!Wp?!Ô?!WQ? ô±?!q?!•”? åé?“?€­?ÞŒ?Ü…?!Ô?!Zr?!HÈ? ¨Ô?| ?·7?¨5?‰6?þ‡?ìõ?¿¾?Ĥ?Uÿ?û?|?š ?_@?2Z?et?yè?ÐH?Üì?€6?3?,q?52?ïÒ?gò?²Ž?óÈ?QÌ?¯,?"ª?ˆ?©]?Xb?ýª?³õ?ÅÌ?ì•?C?ž‡?Üá?.D?~5?·s?ûF?T>?ˆu?Î?9”?[?#Ü?Tµ?ÔŸ?øÕ?µ?§^?è?òÛ?ê?“…?¹??Œ\?ˆ?ï;?Çk?‘ù?½?Fè?Ô+?ä?Y?ïº?ß?æÊ?i$?Ùç?ú¢?vµ?έ?«?ê?ŽÛ?ïÙ?~??í?ò?–c?q9?Î?©'?ó£?\?è?T¸?à??Ù:?W?Þˆ?w©?Äõ?ÖZ?²Ç?¸·?§Q?Fø?qL?&G?a.?¬É?ða?¸??…Å?B? -?Ä?²G?S‘?ü/?ÑU?Â’?÷ó?˜?óƒ?R¤?’?Á?–ƒ?MV?<û?1Ø?æì?t)?z?÷J?÷?zq?\?à?Ž??8|?G­?·9?UÊ?tC?ì-?›??Ô%?«?Ûq?j3?þ{?º?<„?é{?Yh?Èr?Û×?ŸÐ? ÛW? rÈ? •×?Å?A.?é÷?ÍJ? -+?¶›?¯Y? ü™? ý?WÅ?` ?K˜?q/?Ð?e,?XH?æ ?vÝ?•?b?©e?ë#?Á5?n¼?ý&? Ñ%? ¨^?%Ÿ?åy?¦?‘M?·‰? Ú¿? D -? x? -œÊ? ™m? ùË? ªr?=Ô?’|? õÛ? ¼ò? â2??¤õ?AÓ? Ôf? Úû?nÓ?ü³?å?¾ã?{à?rü?HÔ? Ȩ? ø(?? ©ø? yî? \5? ¢? a-? >? å+? è†? ù*? óÍ? Õ? ÀD? èS? ­? ”Ë? »‰? Œz? Ç+? -;8? äÒ? Y? 1? Hæ? ? ¹Ç? ˆ®? ¡°? r2? -•›? -c¦? -ÜM? -ý9? b? -¢S? -Å@? -Í%? Gâ?·?‘?´E? •Í? -;R? -G=? -I ? -:Ç? -.¨? -.? ó -? ë»? Ê-? ZO? p? ¥ ? ? ~v? q3? SB?±?Û?ÔÄ?àœ?ùÛ?$…?ñ©?E!?¸}?›Ï?ip? X?P×?\/?K ?üe?º?20?¨r?z?"‹?3”?[?lî?cç?vü?Yk?€ ?ÈS?5à?/?ím?ÅÜ?ýK?½µ?œ?Ū?.W?á#?Bh?rá?7¢?N?‘«?/Å?À¶?ǃ?Á?³?¡ˆ?ñ—?¬Ö?G>?J–?&?Ë9?¡Z?ÿ?Á§?i?ñü?¶e?Md?ªk?p”?Í4?g>ù[ò>ñ‘>ð/Í>÷`g>þzœ?’s?…?´{?aÁ?w£?!ì?*ý?`Ñ?7“?îÈ?§&?\ý?2s?·?í?›ï?Q†??=æ?ê?²‚?œ5?õ?hx?yw?Þí?ày?{ø??H>ÿ³->ÿ•_?!‘?w‰?t/?8?Ò?¼é?„ ?ðE>ÿü>ÿ¹›?`J? -…?}r?ˆ—?ê}?¼? o>ÿÒ¸?nû?£Ã?”Ÿ>ÿ|Y>üõÈ>ý>þž×>þUÿ>ýV>ý†>þÉö>þøà>ü“€>ûÅÛ>úu>ø;È>ú[g>ü¼=>ü_@>þpó? 2>ÿØù>û5>ûÌU>þ>üød>úW|>úè>ùŠ¾>ú ->ü&ù>ûoË>û#}>ø ,>÷-ë>öŸ¸>õÿÕ>õãÀ>÷Áƒ>÷íô>öÐ>õ!y>ôÄ>õûP>øÚ>ú9>û!ë>ûôÜ>üÛb>ûv£>ùuw>øš>ùf>û_Ú>ûªG>ûN×>ú¡Y>úRV>ûX?>ûQD>úô>ûÓj>ûÆÎ>úQL>øÈe>øj±>øK>÷+¼>õtG>ôú>òÿ¯>ðÃ<>ðVÚ>òÌÚ>ö=ð>õs†>ó X>ôæk>õ‰^>ôþh>öŸ¼>÷•>÷±æ>õ÷À>ó3D>ò½ >ó-$>ñŠ>ò)">õ]>õwò>óC>ó77>ôqA>óÆ—>òQ•>ï5q>íÄö>ï~É>ñ0ý>ò w>ñð’>ñ ¿>ñ7_>ñv¬>ògº>òÓ¼>ó¬E>ó¼~>ò`Þ>ðni>ð¶B>ñÓl>òAT>òWô>òp>ñÆá>ïæV>ì̧>ï€g>ð÷Ü>ðo¾>ïk>îìU>î`!>ìèR>î§ñ>ð“š>ðËÛ>ð´>ð|Ö>ðFÖ>ð'z>ðÔ>ïåÛ>ﻓ>ïâ¼>ïã©>ïÐ{>ï­Þ>ïq¼>ïWË>ïH¨>ïõ>îò½>îóD>î¹à>î3>îÐ>î(t>î4¾>î*v>í—½>ìñÄ>íaÐ>í’J>íC>íc4>ìÀÁ>ëZ>>ì >ìøÇ>ìúu>ìÀO>ì„>ìW²>ìdÐ>ì.Ü>ëji>ê0 >ãgï>ãº>è(â>é~)>êá>ê -»>â5?>à -®>ærÈ>å¼N>ä¼>æÍH>éw>èL/>çÞ<>çà6>ç!`>æuó>æpº>æÎ>àÍ >ãî>èê>é />è0\>ã¹…>á[G>äJ‡>æ:ú>ç«í>çnº>ç]5>çP4>ç†ç>äX>Þ«‡>ã>åé¬>äÎ¥>åkC>æ’>æâ(>æíà>æQ‹>æW>æ”±>æ´+>æô·>æ·y>æÓ>æN|>æðï>æÈ`>æj->åðl>åF>åZ>åQ>äïì>äÇ>äé<>å"L>å ç>äjz>㶸>âNG>á”`>âå>⋺>ãu>ãxÎ>ãp>ã>âˆ>à’‘>Þ¿<>Þ‹>Ý5»>Üq>Ù³ >×´>Ø·º>Ûhð>Þ5n>ÞÙ>Ýæü>Þ A>ß2¹>àb?>áËÅ>áÏW>á Ä>à;ƒ>ßYu>ßíò>ßó>ÞÈÖ>ßõ>ß|>ßž>Ý”£>Ý„ã>Þ¯>Þ6ã>Þ¶>ÝÜþ>Û¥>Ù9>Ø:å>ØÑ ->Û¹>Ü >Ûõ°>Ýjû>Þ…ÿ>Þ]Ñ>ÝG>Ü_×>Ú»³>Ù2ƒ>Ùî>Ú-r>ÚF¤>Û0t>܃>ÛäI>Û³>Ü}v>Üœk>ÜR!>Úà>Ú>ؤ>Öe>Õò>ÕñŽ>Óë>Ïæn>ε >Ð̾>ÖxÇ>Ú`>ÚëÁ>Ú̬>Ú’ê>ÙZÅ>×®³>ÓÝ@>ÐÎü>Ï®>Ñ-Þ>Ôh«>×€M>Ù†'>ÚÖ>ÛFx>Ú¤¥>Ùç>ÙÛ>Ùì>Øà>Ö(>Ïè4>ÇG>¹åá>¶ãÕ>¼…œ>ƺß>Ìrï>Ïã>ÑÁX>Ñ‘Å>ÑEÆ>Ò2>ÓÃ>ÔªS>Õ¦O>ÕÚò>ÔÃ×>ÓìC>Ó²l>Ó€>Ñuû>ÍƵ>ÄÜ8>²®B>Ÿq>–É©>Ñ>¯µ*>¿/<>ÈŠ>ÌZ\>ÌØö>Í1>ΔN>Ñ,+>Ó Ü>Ó…5>ÓÈ@>ÔŽ>Ó‰->Ók0>ÓSQ>ÒÑî>Òw­>Ñö>Ï»´>ÍÒ>ÍFì>Í:>ËÙ\>ÉtI>ÄòR>¾ë£>» f>»ïZ>¿Œ>ÃÔà>È>Ê™>Ë(>Ì!>Í1>Í£ >Σk>ÏŒj>Ïë6>Ð(">ÐP>ÏÒ‡>ÐÒb>Ð] >ÏÈ^>Ð!¥>ÐN‹>ÏŽ¾>ÏM—>Î{t>ÌQj>É…>Ç÷„>ǧ->ÆCl>½ >º?{>¨Ôá>˜‰l>“@Ë>› œ>« Þ>¶4k>¼°ë>À.þ>Âå>Ã+>ĸË>ÅÁÆ>Æ«¢>ÆþV>ÇiM>È è>És>Êše>Êç€>ËxÇ>͵†>Ï.>Îù¢>Ïj>Îϯ>Ìö8>ÌN®>Ì_Ò>Ì T>Ëù>Ìtš>Ì¥³>̉–>ÊÎ:>ÉKA>ÈÚ >ÈϪ>È'Ê>Ɔu>Ä™^>Ãyâ>ƒ>¿Ž=>ºªW>²ç>>¬?>ªÓi>¯ÿ>¶Œ„>¼_ >À‹ >Û>Äëö>Ç/>È£ >É ù>ÈæQ>Èí4>ÉÛ>Ë ¡>Ì ->ÌŒ¼>ÌÂ_>Í<&>ÌY>>ÊU1>ÈZÜ>ÈÇï>Ê·:>̲k>Ík&>Ìû>ÈG1>ÅYë>ÄÏà>È'ä>Ëï·>ÍÙ}>ÍÌ>Ë…‚>ÉY4>Ç H>ÆÆ¡_>Èg°>ÉlÚ>ÉlF>É"r>Çm(>Å>Ũ.>ÅYL>ÄEÒ>¡J>Á,l>¿>½[>ºm^>¶0>°PÒ>©ºŽ>¦!Þ>©l>®‡>µò†>º÷>»#ß>¼©A>¿2>¿ò>¿ñ,>¿í5>ÁÚ>÷?>Ä@>•æ>ÂÁ(>įÞ>ÄX>ÄQÄ>Å<4>Ås¶>ņ™>Å!~>ÂEà>½} >Âç×>Åb2>Äfº>ÃÚ>à 6>Á~„>¼˜>¼ À>ÂÞÁ>ĶD>ÄÆ>Äèà>ÄÙ»>Ä|`>Âì¨>À|>ÁKP>ÁËd>Ã3€>ÃåO>ÃÉf>Ã¥>Ãpû>Ã1ž>ÂÏ>ÀhU>¿ª\>Á >ÁQ>À„>¾“>>¾Æä>¿¦À>ÀÀ>¿'>¾ÐÜ>¾•[>½Éû>½*H>¼P}>ºy)>¶ ì>µÊ¬>·j>µn±>±&X>«Ž5>¦S>ž÷í>››¹>£’9>ª¸.>­ïà>±¢²>´³z>¶§3>·á>¹´>¹\O>¸¢z>ºþ>»ZS>»ú>¼"B>¼kþ>¼uv>»¼Ù>¼?>½0s>¼ø¶>¹r8>«7>®/™>»˜>>½k>½:E>½=7>½23>ºë]>²§—>µsr>¼-¤>½ _>¹s,>®‚>´`à>·ù>­9\>´×6>º0b>»!?>»b>ºë1>»: >¹G>°>´ç->»É>¹“>¹gí>ºÎç>ºÝ>º—;>ºÏ>º´Z>ºÀ–>ºñh>º¦>º·4>ºª7>º¶>¹Bø>·{o>¸ør>ºõ>¹ª\>¹p>¹†î>¹€d>¹ >·ò¬>¸K®>¸´ô>¸E’>·_Š>¶y|>¶N¯>¶ªR>¶H:>µ)Ê>¶,º>¶)\>¶Ü>µàê>µt>µ>´ -Ì>³ ¶>²»¨>±¾>±9¢>®Ý>«2þ>¤‡µ>¨P>§i¥>¤7G>¥e¼>¡¦P>š*œ>Œ—U>Š,>•ÄF>ž=>ŸßG> >«>§ÑI>©.ƒ>§cZ>ª³ï>­ß1>®SŒ>¬6˜>§ßà>©Œ:>«tá>ª7Â>«t>«¶->¯Ôò>²³>².>²Nˆ>²tÙ>²rÝ>²|Þ>²t“>²eè>²U>±+Ø>±Pû>±®/>±§ >²a>²X%>²H²>±ù½>±ù>±¹y>±|">±Ùz>±î7>°>¯—^>±aŸ>±g«>±Tæ>±zn>±“>±b >± )>±D/>±J¦>±U>°y>°z×>°£%>®Åþ>®¿ß>¯úb>°W>¯˜>¯>¯+.>¯ß‹>°ü>¯ÿd>¯Cž>®N>¯,\>¯{+>¯u>¯Œ>®ûž>­æ¸>­„>®*]>¬{¿>­0£>®v°>­°é>«§4>©/>ž¸<>¦RË>«Ä>¥5Ý>›Ù~>¦ÚÐ>¬µÃ>ªD¢>ª6>¬é¯>¬»8>«í>©÷Ö>ª ö>¨É>¤‘Ä>©ÿ>ª*>¨`>©ªz>«:N>«{ >ª’>ª‘>«¿>« >ª,Ï>©ÔÓ>ªLÖ>ª¡l>ª‚Ž>ª@d>ª@>ª&â>©ü6>©©Ç>©oi>©Cl>©(2>¨êš>¨Šp>¨Y>§à>§Äð>§{f>¦Lö>¤ìœ>¦>¦$>¥‘œ>¥Õ>¤Ç™>£ä+>£¼>¢£ý>¡n_> @r>ž›e>s'>›`ü>™’>•ðæ>åN>‡ó>w-Y>{ï™>Šô>‘{ö>–û>˜Øï>›>œ e>¬Ö>žàñ>Ÿ™ >ž†>Ÿv³> €œ>¡dß>¢Sw>¢®Û>¢âƒ>¢Ó>£Ë>£a>£ è>¢r±>£?¾>£`e>¢X4>œÚ>žÀM>¡ŠŽ>£Í>£´ƒ>£Æ‰>£Â>¢SU>›~>ž!ó>¡Å,> &Ë>¢È>¡…þ>Ÿ´¨>¡nØ>¡õ>¢yî>£ê>¢ë£>¢>žð.>Ÿ¢K> È¢>Ÿü†>—yT>œ…/>¡Þ˜>¡Û>¢=>¡¾~>Ÿ®e>Ÿ¦> F>ŸÀ#>ûÎ>ŸvÎ> Ñì> ¥>žÞò>ž@!>ž» -> [> >é> –¥> H> Hl> c·> š‚> wŠ> '> p/> L> ,å>Ÿ¶>Ÿ£g>Ÿ >ŸVÄ>ŸŒt>žñã>>˜Â)>›B>ë>žWŠ>…+>žGŒ>žž“>žÜn>žœ*>žNa>ž>›òF>œã±>‹v>‘ >ž|>ž Ô>ù;>àT>ªV>œ×[>œTœ>›ãt>œ…> Ü>œÖ>›Â1>›&ý>›..>œ¯±>œ¾Ò>œ—#>œ<ã>œM>œ[L>œFÑ>›ÖV>šÒk>›rr>›KÂ>› ü>›šË >šNr>›;>šÈ>šÂe>šøS>šüú>šÊe>šk>˜\Û>˜%]>˜”ò>—¶>—e>™Æ>™ÿ1>™Ñ%>™Œa>™¡3>™Î >™º?>™^ø>™Kî>™&²>—7Š>’XX>”È>˜Cz>˜f~>•«Â>–á>˜->—¶à>—ê>—lÅ>•¬Ô>•W>–·>—æ>—Ó>—¤'>—R>–Ô*>“Õ>”Ï»>—·>—­>•ó€>•GK>–iæ>–y->•ÕT>•J >•èˆ>•ÕC>•yu>•#q>•&b>•¶>•Z=>”û>•{>•»>”–’>”‹‡>”Y™>”'ÿ>“´“>“Åê>“ƺ>’Îå>’8>‘W‰>’+>’y >’jÌ>’8®>‘èV>‘‡£>‘ù>¯>€>‘N>Žñw>r‚>Œæz>Œ@Ÿ>ŠÛÁ>‰Ô>ˆ8|>…ú²>‚å>|ݶ>m†!>T*w>QU>jDL>zW>oï>„>†ÆR>ˆY2>‰F¦>‰ìð>‹jä>Œ5J>Œ´x>8>sB>r>”>ŽO ->Ž„'>ŽÄ!>Žík>–>¡>+>ŽìÄ>Žëº>ŽßÝ>ŽÍ­>Ž9´>ŽÍ>*…>$>‹>2>‰;J>Žkß>*>å>>ŽúV>Žþ>ŽäX>ËŽ>‹Ýœ>Ž>Ž¯Ä>Žuš>Žã>Ž&Ã>Žt‰>ŒÇï>Š´l>–Í>Ž0×>Žd>ÃD>÷>ì‘>Gº>‰=á>ŠÒ}>f9>eß>Œ¿g>Œân>*î>Œèf>Œ­Â>Œº>Œ²¡>Œ,›>ŒÃC>ŒEB>‰z`>ŠÚ>ŒWï>Œr[>ŒN]>Œ1o>Œ&>Œ2_>Œ ý>‹Ku>‹.ß>‹ÖH>‹¯\>‹•z>‹¡¢>‹‘¬>‹qš>‹\[>‹L±>‹3›>‹>‹>ŠþX>ŠãH>Š¤]>Šc$>Š˜É>Š™C>Š—>Š\½>ˆÿ%>†0>‰w!>Šœ>Š\>‰®þ>‰,O>‰O|>‰š>‰qf>ˆú2>ˆ‡>‰ r>‰CW>‰F>‰Š>ˆù™>ˆÖ2>ˆrŸ>ˆ$š>ˆrb>ˆŸ‰>ˆQO>‡+î>…“>‡.®>‡–¡>‡ú>‡¨>‡Äv>‡Ñ§>‡¶Ä>‡sá>‡*ú>‡>ƒSá>ƒ%C>†ð§>†w9>†r>†øý>†ê>†ËÖ>†–D>†•Ì>†M>…Ã>†P{>†IM>…ñ">…59>…UJ>…ù>…øt>…Ñb>…Ä8>…º >…./>ƒ¾'>ƒÜŸ>…U·>…Eª>…“>…K>…3>„ÞÁ>„Ó|>ƒÚé>ƒ9É>ƒzÊ>|ù°>rwð>wƒÑ>€'2>ƒï>„Ñ>‚Kø>*>ƒC±>ƒÀÏ>ƒÔŽ>ƒ è>ƒ…Ê>‚ëî>‚ã >ƒ>ƒ7>ƒ,ü>ƒ{>‚Bè>Y­>‚¦W>‚€¤>¡¶>•]>ÃÐ>€Í/>€½Y>€ní>¿½>ý>æ>€,p>€ä2>… >%>Ÿ>Ò>§>fD>Kl>[;>ü>€Ñ>€Ê>¤>€è>€ß>€°X> j>ÝÃ>€[Ñ>~Ô°>y8Â>o -ã>y¦6>€ -c>€ >Ì%> >;P>x”>t>£>~ ->~ÉF>}à>~r~>~n0>~q¸>~[‰>}à%>w¸&>vWï>zÚ)>x…W>|¿÷>}Jb>}%u>|òc>|¸B>|vº>|SÁ>|>{Ûp>yÝ>o9>v˜Á>{F=>{À>{ 1>zªå>yéÚ>z_>u¯->`°~>_Ä™>n1í>\¾<>`y>n[2>wý©>wò8>x(û>t”¯>h˪>ty4>xF >wç>uïÒ>wÛ>w´Ó>u(>g­>c>r¦Š>vÔ`>vûL>v‡ö>u(>sD¤>q_ >hÁQ>o(3>nJ³>t{s>u0*>tÝð>t’o>qýá>r»X>tlŠ>tŽc>tQÊ>t7>r{>mÎ>f²>o3p>sIÏ>r ‹>q9ˆ>q׆>q¿£>qÁw>q´>já>_8>m¢î>põ>nO>hkÖ>m^€>_z^>d‰>n¶ž>n;¸>n¡>nñ >m>g$>løÝ>nþ×>nì>nÁÜ>n—>n g>k«·>iJK>iÛ>U­³>`òà>kgE>kü,>kgþ>h’À>bgn>cþ>i<¹>hgd.>fïŒ>g‰>gŽ>eøL>d¯,>còO>aû#>[&ù>\è“>]œv>[ŒÝ>XÛ>U&O>P"‡>H¿v>&¾ >#Š>8ÝÏ>FN«>MÙÏ>RG>QC9>TXÎ>UEK>ZvD>]Þ$>YŸ»>[ K>`Ðï>aÇ·>b1&>_Ü>W}>Y²y>]ÐB>bÓZ>d &>dU>d‚>dª^>d½Ù>d­Ë>dƒj>d¼t>dÂ'>bÄ>`×0>Y)ë>_‡®>dO)>d—T>d¡>dj>cæÌ>d3F>cò>cz7>cÌ„>bžì>cü>cê>cCm>bìÂ>bú±>cl ->cv–>cZ?>c1ü>bþs>bö˜>bèS>bÇ÷>b6>a›Í>bbZ>b"z>b³>a4>aœn>a²š>aŽÙ>aHµ>a6É>a¢>`ÜÎ>`vq>]–U>_e>_{>^Íð>Z_>\8>\²ï>^Å­>_—s>^çá>\“M>^VH>^¯P>^òa>^tN>]Ñ>^(€>^qY>^i>>^Pn>^&¯>^ -´>]¬p>\Ò¾>\ä®>[P²>T¶ò>Tÿ)>\€Ä>\­ß>Zû£>[6>X|ó>[L²>\=ï>\!Þ>[¯Á>Z0ß>[Ge>[…">[be>[9¾>[B>[ˆ>Zó<>Z³ò>Z¢Ô>Z¼>Z"]>Yµ³>YŸè>T¸>L=_>QUþ>Xí›>Y ö>YF >Y!>YÜ>X÷>XËx>X›q>X…Ê>XUG>T|R>Kth>M×å>TàÞ>U0>SU>TDr>SÈV>Uó >SÁ…>U]õ>V~j>Vt3>V@ñ>Uß>UëÌ>U¼$>Në>K»>S¶>R—#>Tß>UO>Sýy>Tcï>TïN>TÈ'>R¾k>Pã)>S£æ>TGr>T:>SÓ¬>SI>M¨Å>PY >QÆ©>K†3>Lõí>OÒ[>Lí)>M•t>Raç>Pþì>L°!>H³F>D¡u>LèB>Pcg>OrD>M6s>Pż>Oô#>N(>P7Ý>P‘>P±>PºÙ>Oô0>Kw>N¨ç>L•>Iþ>K]¼>OÍ>O³W>O§6>Oˆ >Obk>O*c>Op>NÆr>N*>N‘@>Na¹>N6#>Løl>M.r>NÕ>Mó[>M­Î>Mw¨>Mc8>Lr>L¯.>M %>MŽ>LêÂ>L–ê>J¥y>J»É>J·P>L¹>Kë‹>Kîü>KÞR>Kf>J^µ>K>Kg±>KJ(>K->J˜O>H¬þ>Iÿ>J¦>>J‚E>J6>J)Q>JT>Ió±>IêÎ>IÈI>I]>Gõ•>H¸R>Fï>AæE>Eê>Hƒî>F8t>FÖë>D²Õ>@D >@E>F‰>Fm}>A4>F&8>GE¨>Bã>A-<>Fê>FH)>AFž>CO®>F)±>DÓK>BòÐ>BÚç>AÄX>@ V>5É>B„Ð>E>Agé>;dô>@ƒ/>B*2>EE>Dá<>DÓ0>Dg¤>>!(>@_º>CàG>Cî=>BFŸ>C_¹>Cè>CÏ%>CšØ>Ch >C8r>C%->C º>Bí^>BÆù>B¦>Bžü>BEÓ>B2­>B7>AîÔ>>ø>4Nc>7Œþ>&g?>7R>@¹˜>A8>A6^>@Ý>?šÍ>=‰>=?z>:Àþ>=ø@>:C¢>?·>@*=>@ ->?â >?ˆ.>;¦]><Ç>?[Ø>>ì9>;¦>=Žþ>>“D><]><ñ&>=(¯>0ÿ>4’)>=§½>=I]>4õh>8U>=ŠG><>7Þç><ˆÇ>=.Æ><ú±>;l–>6ø>:Ïë><§æ><’–>;š>5ð>22k>1:õ>:*°>7ËX>0sV>.´>7ó²>;Á>; 1>;>:éž>:Êö>:¨¸>:”d>:wý>:Yu>:2G>:ò>9þ˜>9ÜO>9¿G>9£%>9}W>9V#>5øA>ÇIÉ>Ê„ß>Ι0>Ó3>×–'>ÙpW>×'Ü>ÒÕ>Ïá}>Ï-Ì>Íœ<>È<>À G>¹i‘>·Ö—>»¡ >Ã5è>Ëþ>Ò³–>ÕFË>Ô&>Ðà >ÌFf>Æ, >¿j>ºÌ>»äà>Åó¸>Ô#(>ßl±>â« >Ýb`>Ó—6>Ë/{>È;n>Ên->Í¿(>Îõ>Í?&>ÌpŒ>̧,>Ì›Ï>Ì£(>΋F>ÒN>>Õx8>Ö!ì>Ôò›>Ô<†>Ö²>Û ->á b>ä¿•>ã@y>ÜÂ4>ÔØ‘>Ïë|>Ï­ó>Ò4ì>Ôš>Ò>Ë -'>ÁÅÚ>¼fº>¾ÿx>ÆL9>ʱ3>Ȫ >ÄTs>Ãö>ÈÊ>ËÏ>ÈšÊ>—u>¾ŽÁ>¿¶4>Ä…Û>È“,>Èor>Äå“>Âuò>ļ™>ÊÛ—>ÑH>ÔT>ÔË>ÔPU>Õ -Œ>×Ó >Û•à>Þ Ò>Ýb§>Ùíý>Ö+O>Óôp>Ò0>>Î<_>Ç !>¾€d>¸¬>µ¢U>· &>»(>Á}>ÉGÄ>ÏÞº>Ñ€>Í‘„>ÉLù>ÊÉ;>Ñ]ù>Ö”c>Ö‰>Ñ Ã>ÊZ„>ÄØ>Àš>¿™–>ÁœÔ>Ãêu>Ń>Ç5|>ÊH¤>Ïq¦>Ö‘|>ÞÆ>âüW>ãŒÍ>ác^>ßn^>ÝÍÎ>Ú3Ý>Óå >ÌÇ?>Ç>Ĥ>Ä——>ÈÞ>ÍWH>ÓJ¸>ÙXÍ>Þ`p>á‰N>âäA>â–1>à»>ÝÛ'>ÚƒŽ>× Ö>ÓÜ+>Ñ'X>ÎUT>Ê&ö>Äv£>¿Y|>¼©T>ºä>·\A>³\Ç>³ë<>»ÅÅ>ÇŠ‹>Ñ L>ÕLa>Õšn>Óß\>Ñv>Îëç>Ð1{>Õˆå>ÜŒß>â“V>æÀ6>éE9>êAÖ>éèn>èÞ2>çœg>å.Ú>ß=6>Ôb>ÆI>¹ j>°‡ƒ>­ýP>°54>µG>ºVJ>¿7>Ãá¯>ÈêÔ>ÌÀ3>ͺ¹>ÌØ%>Í3^>Ïù/>Ò3l>Ͼÿ>È >¾T[>¶˜§>³Šx>¶$>»üR>À…>ÂY_>Å+ˆ>Ìe>Õª>Ûc•>Û³>Ù¤l>Ø2_>×ç½>Ù'>ܽÿ>á³k>å¥t>ç‡>ç‰8>ä½·>ÝÆ>Ó%<>Èþ >Áïæ>½è}>»ˆ8>¹à±>¹+±>»Ú>Àó/>È>ËE”>É„ð>ÇðÇ>Ë!>Ѳ>×jv>Ùûn>Ùt›>×}'>ÖkÞ>ÖÝÞ>ÖÚf>ÔbÑ>ÏRð>È8Û>¿|:>¶È©>±Ž^>²jg>¸&<>¾>À">½Å>¹c/>µã…>µ/f>·$>¹ˆ>»ÁM>½}t>½Û>¼ƒ>¾eÔ>ÅwD>Î)c>Óç¶>Ö{¢>ØÀð>Üz>ßâÑ>ÞÛ >×N¶>Ì>ÂÕ>¿ê>ÁîK>Ǭ~>ÌN >ÎW*>Έ¸>ÍßÇ>Íœx>Ϥ±>Ô”¯>ÚPC>Ýë >Þu÷>Ý'>Ýt >Þ» ->àw¯>â Œ>ãAš>â¿>ßõ>Ù¥š>ÕáÙ>Õ²°>Øp>Û±>Ýa>Ý$>Ú~®>Ö_ >Ó˜\>ÔÚA>Øè>Û|®>Ú' >Õr>Ζ.>Ç­¾>Ę>Äý†>Ȩ¨>̳Í>І>ÑØç>Ñk&>ÑD>Ô>Ùqm>Ýb>ÝOÉ>Ùe >Ó/?>ÍæV>͈>Òö>Úi«>ߤî>âJ>ä¼Ä>è E>êP®>é=Í>åÞ‘>㳜>ãô¸>äÍy>å]>欱>èn”>ç×s>ã›>Ü‹ƒ>Ùuí>ÛˆÃ>Þ°#>Ý®g>Øz>Ô/¹>ÔÔQ>Ùmñ>Þ‰9>áÀ >âv>ß>ÚY¤>ÖYÕ>Ô=<>Ó»=>ÕNô>Ùkí>ÞLá>á©´>ãD|>㜓>â -«>ÝÕ>ÕÎu>Ì_!>Äßœ>Ã~y>É‚>ÑêI>Øļ>Û¸¼>Ü>Ú­Í>ج>Ø6æ>ÚZ8>Ýhj>àC€>ã?—>äw&>à Ã>ÕõI>Ì)>ÈÞ5>Ì©Ù>ÒRÓ>ÔÌZ>ÓŨ>ÒFç>ÑöV>Òaü>ÔR>Øy>Ýã¹>ânÖ>âl0>Ü¿¨>ÒÍü>ÆÿŽ>½s>»Üd>ÄÌ>Î+ª>Ôœâ>Õ ¿>ÕnŠ>Øv¤>ÞÖê>ä¿v>æ¡Ó>ãx€>ÜÐ>ÒÜ>Æç§>½PV>¹¿³>¿ýó>Í¡ÿ>ÚòÊ>â|>â%Ì>Ý-Ø>ÕèH>Îq>Æÿ>Ã7>Åy>Èáá>ÈS>Ã>Á§>Æ79>ÏóÔ>Û˜§>å W>èj>ä u>Ù0J>Ë×°>Â^ÿ>Áý>É+ù>Ðc›>Ó[º>Õ¾¾>Ûñô>ã·”>ç" >ãù€>Þ{“>Ý Å>àžº>ã£ð>áPQ>Ú­Ü>ÓzZ>Î?>Ì ¶>Ï<#>׈y>áD—>è&t>êµÉ>êH®>è߸>æÔå>âÃ>Ü—>×M>Ôed>ÔU >Ôºs>ÓÓ£>ÑT$>ÎìK>Î[½>Ï¥ç>Ò¥š>×! >Úø‚>Ûè>ÚR9>Øa>׉f>×ì”>Ù`ï>Ûæ/>ßt§>ã̲>ç×Ó>éx->çKÜ>âkT>ÝO@>ÙßÖ>Øô^>ÙÅ×>Ú(>ØøÞ>Øå>Üvï>ã>ê%ã>îѦ>ï -û>ê`,>ã;>Þ1>ßN >å)>éì¶>êÏÇ>éFÛ>ç™ë>åè!>â.þ>Úû>Ò*>Ë ?>Ço¬>Ç2ï>Êa>ÐLø>× >ÝÑß>äTÇ>éè>ê¢Ä>é:O>åô>ÝëÛ>Ö-…>ÓXx>×Ñ™>ß–p>ä¥_>ä­…>ázB>ÝœÐ>Ú%«>ÖÛ*>ÓÑú>Ò‡æ>Ô£¡>Ù$>Ýô(>Þ£1>Ûü¹>Ú -°>Ûñ>ßÿ>Ⳋ>ãÈ >äìâ>åÚ>å6Ü>ã æ>ß[»>Ùë>Ðx>ÈK>Äi>ȶ>Ò •>ÝK…>äVo>æØ$>æ›>ã?ž>Ü¡c>×>×Ä»>Þ1">åâ©>ê½5>éñ4>ãUÎ>Ú•Í>ÔzR>Óž>ÖõŸ>Ú3ù>ÙÅa>Õm&>Îæ>Åo>À£>ò>Îv…>Û^n>ãfk>å+$>åC>ç >éâ>èº>ãqw>Þ”í>Ýj >ß÷ª>レ>å~!>ãåˆ>ÞÍR>Ú-ý>Ù­>Û¢×>Ü‚+>ÜÒu>ßÄ%>ål>êg>ìœX>ìp>éâÛ>å“>àâT>à°‰>ãžÉ>åˆ>áÂ]>ÛË>×%>ÖÙi>ܧù>æ©’>îÔã>ðÕ*>î,>êòP>éÔ…>êq§>ëUT>êmù>çÅ>之>ç¾Ë>îýu>ö4–>úŒW>úÖ¼>÷ÞŒ>õŸ>õ6Ž>÷nÊ>÷öê>öY>ôó>öHš>÷f>ö¸€>ö¡¿>ù+:>ü>¶>üx>ù¸ª>ö5[>ó -s>ð ç>ìý|>é¯>ç´Q>éaè>íuÞ>ð—Ó>ðŒË>ïq¼>ñŠÕ>ö o>ö'>í%ã>ß,Ç>ÕÞÙ>ÖZÕ>ܵ”>ᬸ>âc>àG>Ývj>ÙŽ:>Ö¤ð>صÂ>ÝØ>߯j>ÜÆ«>Û™>ß‘>æ0>ê?Á>çòâ>ã8‹>ä´>ê\^>몲>á—Þ>Ò¯÷>ÊF}>ËOù>ÏåÊ>Ò9™>ÑÊ\>ÒÄP>Ø2>Þ5->á$>â@Î>å@s>éaÇ>ìv>ïy«>óò>øOª>ùgô>õÁ>îÒ–>çMò>á"N>Ý·g>Þ;>áH”>åÁ™>ê(—>ìSÔ>ê>䧩>ßšç>Üý>ÛJ\>×Aç>ÑòÚ>ÒI=>Ü+Ü>ê é>òY>ð…>èVW>âKL>ã<>çjé>ëÐâ>ïæ+>òk>ñü3>ñÛS>õï‡>ûöÿ>þÃœ>ü]ª>ôX±>åÔT>Ôßž>Ì †>Ñ$ú>Þ“>é¼í>ñ`>õß>ú!>ýº’>ÿãˆ>ÿig>ú¦'>ñÏØ>èH>áçk>à ƒ>á÷>ã5>æ˜->ê6û>ëi>êÒç>ê½e>ë¤>ë<ƒ>í¨>ò³>ú’?J?®¨?=û?ŠÊ?ò?G;>û¡Ú>øsŠ>÷¥[>÷TA>÷€>÷~x>øD>ú@þ>ýÔY?Ÿé?€_?„é?PM?\??¶?P4? 8¢? ?¯»?Ô?0R?ÚÙ>û[>ùÖç?Ú§? |Ó?›Ø?F1? ƒ{? œ•? Ÿ?~¨?D?Gö?´Ý?)y?/0O?&Õ?ÙÉ?ái?,^˜?9>+?;É?1ž(? ¿“?`#?$?>øÇ?UJf?\q?Rêò?>n?%Vò?Dñ?á ?ì´?4•'?LfN?X(4?QH?;¾Ý?#„V?©¿?tE?5?*?Qnç?ih?€µ?‹}ù?ŽxŸ?†b?j1y?B€?!=P? z?Ó£?>3É?fPš?‚ëÂ?ˆ«?‡n?‰ÑM?‘ý?“Ó_?‹ü¯?vÕ!?M?%&v? ž?$É?Ãb?/¡1?R  ?|Èu?’Íi? \Â?¤;?¡ä?œêä?˜hí?’‡x?‡‘?q`ô?R9²?0Ó3?s´>üp}?(?$ÑE?Qe6?{~è?Ž@?šþ&?¤K?¤M`?šik?ý½?‡e?…ÞÑ?‡ëõ?Éš?—!O?ž†T? r?-Ò?“;'?„߇?l³b?ObÈ?0¿k?Þ?#˜Ü?@í?aƒ½?w£?ƒ|í?…,?œ²¦?® 3?¼?dzs?Ñr?Ø't?Ù(ô?×VÜ?Ø?Ú?Õm?ÆF³?·úb?²“Å?³“K?¶ŽÝ?¹g3?¹¶ã?´ ?¦ìî?”´ö?|Þ?^<Ü?9ù?àé?e»?(å³?SŽI?å?˜±B?­wÒ?½î_?ÆÙœ?ÈU¼?Æsh?Ç׊?ÑbF?à^S?ís´?ó6?íÐŒ?ÛC ?Â=Õ?±t!?±C?¾Þ‡?Ðû¥?ßW1?äˆR?à -?Öö€?ÒÐ;?ÖBô?×#*?ËäB?ºÊ—?°eY?­æv?­+?«]¥?¨vÃ?£gí?™‡}?ˆ7m?dÝS?<Ü›?)? ?û?6“?.Úq?RÂ?q‰È?…ûä?’î?¢ -à?°¤£?ºžÞ?ÁNM?ÆìÂ?Ì\?Ò}?×oc?×ñ"‘>šw>^×>}eu>ȳ?¦È?XTð?‡2ô? K‹?µá¶?Ãvê?É{?Éa¦?Ç5Ù?ÇžL?Ϊ^?×Æ?Ø!Þ?Òh£?Ìêe?ÊÞ¼?Êã?Ìaö?Ñÿ·?Ûþ?áå?Û‰!?Ïν?É„®?ÌX{?Ñ ?Άw?¦”?³É?¦êå?™+?…w“?W3+?ÆÒ>Îl>‡E'>h,r>“9*>Öîå?á‘??À?d&Å?„þ>?˜•?§þI?´@p?¿~?ɽa?ÏO1?ÌØã?Æ­;?Çw?ÐNµ?Û?àß”?áe%?àû˜?â­j?å'?ç5ö?êÁP?ñ&?öÙD?÷Ï?òŽ¤?è´Ë?Ý|?Ýóë?ØòÃ?ÕQ?Õ -1?×}?Ûê3?Þâ”?Ü°?ÔÔõ?Ñ•3?Õc×?ÛÊc?ã:,?è±?é!U?èGz?é™?ÈÒl?ÁÐÎ?ÆÅŒ?ͳ±?Ì)?È"?ÊŠ4?Î H?Б?Ô»õ?Ùì|?ÙJ½?Ñ­y?Ê‘?Ç2?Æ°C?ËŠ?Õ5Á?Þ^´?ãã!?åîY?ä*‡?ÞŒ·?׆?ÏÒù?Çd -?¿TÕ?½ß³?Á…?Å&®?Éõq?б -?Õó?×9?Ú,Î?ÛXÙ?Öåq?ÏN4?Ë€Ó?Íß;?Òr?Ñí?Ë-³?À??´ôÑ?³Š|?ÀY?Ì÷.?˘;?Âç¥?¿Êú?Âmä?Äì?Á -p?µJ ?«¤s?¨äº?©?¯ƒj?»íÀ?Ã{?ÃBK?¿´?¼—–?À7¯?ÊQõ?ÑL?ÊwZ?·ûœ?©Ï?ªš¡?¸éb?Æ(D?̃Â?ËÐ?Åä?Àä??Æû¢?Í ?Ån?µ¨?¯!?¸ýÀ?Äa¶?ÄVî?ºY?²Â ?±Ò/?°¹Z?«Î?£k??”Õ‰?¶?S?.ºÞ?øð?lS?/êR?V—?v®y?‹ ??œ‡ƒ?ªÛ?³2?¶Ô›?²ŠÌ?¨™?¥î?®/û?»!8?ÄÐj?ËÄ?Íî¬?Ê©Œ?džN?É c?ÍG6?Ь„?ÔKó?Ø]v?Ùñf?ÕÕ?½ä?Àp?¿ö©?À?¾3þ?µOW?¬þZ?®½1?¶ûÿ?¾_?ÄŠ?ÉW­?Ì|ñ?Í¥?Ρ¢?Îïw?ȱ?¸¢?ª–?­>?¼k?É\Œ?Ï ?Îi–?Æ e?¹þ¶?³ññ?¶$Ú?»Ä?¿§°?Àò+?À÷g?ÃŒw?Æó6?ʃ?ËJá?ÅøE?½‰í?¾ ?È“&?Ñ$?ÔI?ÐÏ€?ÈÕ?ÁœR?Ã?Ëæ¢?ÑX‹?Ñ™k?ÍÑ?Å̘?¾Ó_?¿˜r?ÂÆó?ÁgÛ?½S.?ºfÖ?¸.æ?µÕæ?·sS?»tò?¾4C?¾]?¤sz?¬2?±mf?³óü?´0‰?²Q?±,²?²XÏ?´´²?µ¿Ç?µÁº?µCÀ?²%×?­HG?¬ßÒ?°¡û?²Tµ?²)i?±¼m?°Rª?¯Þ–?°ÜG?±k??±°æ?±Îf?²o'?´+Ó?µS"?´W?±}Ç?­+?«œf?®4µ?±x­?±ÑÂ?­X|?§¦ù?¨h?­Z;?±2Ò?±à?°6?­‡ ?¬úw?¯£?²¢D?³â‘?³û‡?³ýŽ?´Z?³Qô?°d?¨Q9? '? ¬ˆ?¨Hü?®^Â?°%ä?¯?®¾Å?¢Ó^?¦õŠ?¦ôC?¤ ¤? ÂÓ?žÆ›?âÆ? JX?¤u‡?¦k ?¦P?¢û$?Ô?˜›ÿ?š3º?2?š4?–7Ä?™E6?ŸÔ‹?¢&Š?ŸÓÌ?›ññ?˜ Ð?—"{?š"?™…Ñ?"Þ?†d?Šô¡?•zª?›Ü8?Ÿ¸·?¢“c?£ã?¡3¿?ŸÌ?Ÿ]©?œp¤?›Ü?Ÿ ?¡m/?ž­É?›¾é?œk¸?C³?š5'?”–t?”(/?›d?¢)Z?¤Ïë?¤pú?¡¼Ê?žmÐ?œI?š±=?›¬Ü?Ÿ¹?Ÿ¯›?œæ?^ä?¡l?¤1)?¤ßã?¤Ì?£õ‡?¡å?¯í?œÐ ?œWg?›A?›æ´?›ªœ?™?™A?š¯?œ‰?ž±?#Â?˜ç?—N?™Â‘?›É™?œx!?´Ì?#?›-b?œca?žËÖ?–ŒÎ?—ã?•4Z?‘¹ ?‘‹ƒ?”r ?”Á?”U‚?—;?™6€?–ÊM?“úD?’ÿ@?•.?—?–·§?—©¨?—}ä?•y„?•t.?–ù†?—¸œ?–°õ?“†Ó?–´?ŒFÖ?“?™X”?›Að?šC:?—Sƒ?•`?–b¬?˜v?•i?ŠZ?z°†?qo?åf?†×6?‡)¾?ŒÉ“?–tH?›&:?›¢«?›3?š‰9?™_?”«d?‹‚?‡ f?Š -‰?Œý?yƒÅ?`h?‚©‰?P?v2?yŒ?î]?„8ÿ?„~u?„º?‚¦H?€9X?}é?ái?ßË?ƒ'Õ?ƒ‹á?ƒKY?‚¤†?ë¦?¶?‚Y}?‚Šc?‚*Ã?ü£?ÆÄ?æ?€YÇ?€n?€ d?D+?}; ?}6Ù?|íg?{Œ@?}Ëš?~îC?@ -?€¶y?ˆ?? ?€—ó?€ËC?€#Ð?y9^?qÓ6?p¹?t‡“?y‚´?{à{?zû?yT3?| ?z¨Ù?wÄÜ?xè‰?x#9?vu ?yï ?~í?€]›?€ˆé?€¢Û?€©‡?€Ÿ¤?vk?y&??räŽ?uìÓ?{· -?})ê?}„?|Ò)?y¶1?vZÖ?w\Ð?xûø?zü:?}·R?~§{?}³I?| 1?{±²?{6'?y\ç?wº©?tc=?r†?uÏß?x$?z i?{Úò?|nœ?{e=?z {?zãQ?z?T0g?R‚d?Qöæ?Q©Ã?P¸˜?RY ?S6ñ?RÎ>?SyE?Tt?U,¬?U½?U4?UCˆ?U|?T£Y?SI¯?Qñ"?Qç3?Pý?PyA?R‡?Ts?S¾?Q+?N¦7?Ok?PE?QÝŠ?RÛú?RÏÛ?RÏð?RÐv?Q†?O­Ó?Q"?Rï?R+Q?RŠC?RÌ?Rõ?Ra«?PçR?O5?Où)?Pú?NŸî?K¬?L…?OKÁ?O¼9?O¯?PC[?PŽ?P¾8?PÞÏ?Pý€?Q.Ò?P¤³?MÆî?H«"?H¶x?M?Oƒ¢?Ošá?PÁ?Oî›?MŒ?Kgž?L‘O?M¼J?Nô¾?O>f?LqÁ?Gåý?HÿÁ?Lh?MÕ?MSÂ?KuÈ?K(à?L‹Â?M¢l?L›ý?GŸä?DJ?GRÉ?EâÅ?@Á?D~Ÿ?J—Ê?HÔˆ?@!£?:Ê?@º±?IHL?K0þ?G¤h?Bû?@æ¬?CZL?DÀc?@ím?A˜n?GkK?J&?Iþ’?GyÙ?EÞ?HP?I -?G{è?FK¸?G!â?G›¬?H ?Iµä?Jjd?JT^?J??IÚ?I•d?G½?Dߥ?FR?Gá8?Hf?H¾Ì?H=Ñ?Gê?H*º?H¯Œ?H’é?H¤a?H˜U?H…?Hb?Gún?FËÎ?E¤þ?EÐÌ?FVá?Dý?CÆu?Dè?F-Ò?F”l?F7?Eš?CÛB?@;õ???AK?C\?CW?¢s?>ÎÚ?@‡i?AÊY?BUA?BZº?Bl‡?B°Õ?B+??AÜ)?B#˜?@ù??å?@y²?A/ß??´?7g??0Ž?0>‚?3§×?8ÑÉ?¬‚??„@??ã?=yJ?;„?:É?;¯È?;ð*?<Å?; 7?9ý”?8V´?8¯?;$?;)á?;©z?<ç®?;~Ø?;ê…?=ìw?=@?;J?8HJ?5l…?8-?;—°?=¹?>…?>âW?>ô,?>é?>p?<½ø?<¤­?=;þ?;^ù?:ìù?<®‚?=é ?>"7?=¬É?;¬¼?2¼×?+Jc?4“È?<­©?=ú£?>I®?>-?>E5?> -Ì?=hy?=û?<¸%?=K?=šô?=ý?;[ ?4ôT?-mõ?0ì?9à:?=›±?> - ?=©õ?<ãÚ?ôWh>Çç>£Fê>¿å>óP¸?a?mé?Õ;?P2?äá?"œÿ?&O?(uÐ?)¨N?*rÂ?+8ù?+Éó?*ãw?)›¦?+½?-®?,¢ú?+ -\?,“³?.{?-Þ‰?.¾?.æ9?.nÁ?,F?*·?+ Q?-/þ?.@å?-óÂ?-¡?-û?-ä!?.G*?.f…?.v©?.~ë?.K#?-òû?-v?-}é?-¥/?-FF?,’ë?+Ú´?,F?- ÷?-|1?-xJ?,õÐ?+¾¸?+W?+?,W¶?,ê«?,ýQ?,f+?+´?+q??+¿'?,0=?,0«?+ T?*™õ?*É:?+‰L?+nV?*ë®?*oŠ?*,!?*j(?)î?'?%·?&…&?)/½?*YÞ?*v»?*²±?*²?*¼?*ÄQ?*r+?)Ì%?(ù–?(IŠ?(H†?(äi?)^W?) M?(¯?(Ž?(žé?(»Ç?(µŸ?(!‰?'—?&…?$I?$Z†?%ch?#‰ý?#F”?&%?&øF?'A&?'’¥?'q§?'‚?&Õ*?&}X?&?&X?&l˜?%y4?#Ò?$p?$`¹?"²?"Ó–?$ð?%ŸO?%v[?#¬¡?"j(?$$`?%)„?%uÚ?%°Å?%mp?$ŒU?$W¤?%(?%I?$Ê?$Š?$©?%:’?%‚?%Ý?$``?$ -N?#÷”?$(Ä?$á?#rg?#ø@?%!Z?%º?%s?$ïK?$ø"?%fH?%6\?$Ôœ?$ÍV?$í?$áv?$¯d?$»Î?$wa?$‡¬?$²^?$m?$|?$-D?$”`?$PU?"‡?Öø? øƒ?#1¿?#u?#†ˆ?#VÄ?#ó?"Í?!Ï? Óæ?!—?"#z?"®æ?"œ ?"‡ ?"c–?!Ð…? @?D? *Á? ¬_? —8?! Æ?!±?!ØP?!¹?!—q?!r*?!oc?!|D?!lT?!\o?!Vþ?!? Z? ,’? s¢? k?ÿ"? ›È? èÂ? äÑ? Í? ¶í?  ¯? Žµ? ‡ñ? jc? +í?Ÿ?‚g?ãž?Ç!?:&?ÕÃ?dk?}¬?¼¶?£Ü?Z?¨Y?‡o?‰?»ü?Ìd?Ðú?Ëo?Öe?0?Þ|?£’?¢\?¸y?)?_Ü?Æ}?PÛ?L2?ø‹?è=?ê?£Þ?Ì|?Ôz?9Ù?§ù?)–?§Ç?¾?‘?‰]?©}?Yg?>5?é?‡¡?\?”?ÚN?C??#??Õ“?ï?›â?´£?FÍ??ª?8??¤$?ö´?º?½?ø¦?X7?!?ò?û?L?5¤?Öz?à?æm?% -?™Z?Pè?¤?-È?Ë­?¯c?˜5?p?Å‚?E?}‹?¬”?‹h?,?Î?´?Q?t? Õ?§?Ñ?ͯ?ôa?Þ?µ‘?óz?;L?·ˆ?‘:?NÌ?;?@?-ì?q?mð?Œ?r+?ÅØ?%"?5?Áú?e×?NR?À??'?%—?u;?Ÿß?’Ä?à?û‹?&*??…ù?g?þ?âì?ê?–h?’?ɹ?¿û?{‰?_è?±?§"?BÂ?p?j?rÉ?É?¹Å?ö¬?«Ï?¢?©×?Ùá?/ð?ÃT?NÞ?¶¶?é?;?_”?:÷?Ÿ?[?‰?iÖ?n›??/[??ÛÇ?ûL?pä?ã?½Ô?½Ø?tv?„)?h?°¯?ª,?ùë?ºn?eA?šÕ?Ô-?=?¢š?®À?6Þ?³’?ÀM?!˜?~*?Âã?©'?œ1?ÿµ?£?.é?x¼?ÛY?›Â?dY?×?úy?KË?þ¢?©à? ?ƒê?ª²?Ò¾?ÎÓ?†í?@?E†? Ó'?‹?ÆÇ?œj? ¹"? P,? Tþ? :Ø?4¬? -aÑ? ©1? ¸¨? ¼é? V×? Ò:? ‘? ñ†? [!? dÏ? -§H? -ë†? èÎ? õ?EØ?? ¹‘? xÛ? ÔŽ? à¶? °G? ®Æ? ]Ø? ÚÉ? œÈ? =? Eü? s? 8ÿ? Ù|? 3? Â? å«? È£? ¡ì? _ó? -že? ÷¬? #Â? Ì¡? .‡? 1? -å? «ä? ->™? -­Ø? -šÓ? -kÂ? -#Í? - -i? -)´? -~¯? -’? -Ú:? -ç>? -C?ýÝ?Â?E?²f?éh?Å€?þþR8>ú8±>ú*w>ûè>þs`>ÿŠÀ>ÿ™i>ÿ• >ÿ³>ÿ†ý>ÿZ!>ÿ ->ÿ(>þë(>þ1">þYn>þ²W>þˆì>þx\>þqÇ>þGW>ýPË>úžl>ø,Š>õ`±>ôJ>õ{/>ô}>ñYm>öñP>ûk>ûÈ>ûÖª>ü>üÅ>ü7P>ú-®>øð>úu)>úba>ø½£>ùžæ>úÂ>ú à>ú$>úWÈ>ø«Ô>õ›œ>ö4>ùÈ>úq†>úK]>úò>øD>ò–0>ñ…>öV­>ø>ùv>ø»>÷‚©>ö -t>õ4²>ôH™>ô­Ñ>÷lÚ>÷Ïë>÷ã>ø0{>ød>øÞ>öªâ>ôD¥>ô¸À>óÙû>ñDø>ñýX>õƒ½>öœ>ö]Ñ>öyõ>öFc>õ>¹>õŠý>ö)ö>õœ>õƒ>ò¥ò>àî‘>ÏZþ>ÈžA>ÝÅ»>ð^ò>ðBñ>ñÏò>ôZ9>ó¸>ó™'>ó0–>ôO3>õ6®>õÙ>ôŠ<>ñ.>ðø7>ònè>óe>òÅO>ò·>ò1l>ò;>óoo>ôŠ>õ¦}>ó¥N>ñ~ù>òë_>óËÚ>ò±õ>òaú>ñM^>>ë¶t>î[‚>>ï¿>ïçý>í— >í^®>>ïÿá>îì>îú>î¾t>î¦>í5>íE>ìl(>ë³Ø>ëäl>ìº{>ì9‡>ë]Æ>ìQ>í >ìàL>çí>äfu>éÂl>éd>ê‚>ì–ä>ìÛR>ëäÍ>ê>e>é`˜>å­é>Ûp‡>ÝŠä>å|Ê>çê>êËÈ>놠>èƒq>æ6¢>è;>êF~>èù>ç§>æ<;>åÉ×>çtí>ç*>ç{à>æ#Ã>ä1–>ãÍ>ã-Û>åãÿ>å*>âòï>æí>ç0Í>ãq>ݦG>ßÈ>ä/Å>å>N>åIÿ>凇>æ/&>ã:Œ>àt¼>àh=>âà£>äïV>ã¾Ù>ãKÀ>ãqë>å >å)À>åLS>äÍ‚>åÇ>ã¶Ê>â¼ð>ãØr>ãçi>ä.>ä4>ã A>áµÙ>à8ú>ÜÖò>Ý2>à—Þ>àëÕ>ß©¨>àäÆ>â>àDÑ>ߌg>àì.>ár‘>à™Á>Þâh>ݹ§>ß.—>Þ¢³>ÝŸÐ>à‘>àðc>Þ̓>Þé>ß/ì>ß>…>ÞçÔ>Þp×>Ühž>Ú>ÝDÖ>Þƒ&>ß P>Þèe>Þm>Ý„­>Üýë>Ýö>>ÞDW>Þ0^>Þ„>ÝT¿>Ü,@>Ül>ÜY:>Üíµ>ܹ>ÜSy>Ü/>Ú€µ>×è?>Úx%>Ûm>Ú¼)>ÙÐL>Ùó>Ùš¬>Ø^>Ù6>Úˬ>ÚÜÑ>Úɼ>Úž›>Ú[ß>Ú6ú>Ú5D>ÙîN>ÙÏ­>Ùæ=>ÙØ<>ÙÂø>Ù¨e>Ùxt>ÙUÖ>Ù=>Øñ;>Ø®ê>ØØ´>ؾ>ØV7>Ø5Ú>ØCÂ>ØC >Ø,W>׼>×På>׋t>בz>×m!>×DÇ>Öãó>Õàã>Ö?Í>ÖÕ>ÖÉQ>Ö¬à>Ö‹v>Ö_Ž>ÖZ„>Ö5>ÕÇ>Ôç>Ï™s>α;>ÒzÄ>ÓY•>ÔÛç>Ôh>Îó3>Ífœ>Ò -ñ>ж/>ÍÙG>з½>Óß2>Ó.3>Ò¸ž>ÒY“>ÑT‹>ÏØC>Ïaµ>Ð>ÌaN>Î&É>Ñ’A>ÒÿË>Ò45>Η>Íi>ÎS >Ïmç>Ñ•x>Ñ·#>Ñ>Ћ>Ñšz>Έ#>È0Ï>ÍN>Ð@T>Í~¥>Ψå>Ð>ÐlI>Ð+^>Ï[À>ÏEw>Ï^">ÏDt>ÏYó>Ï >>ΪÙ>Î…â>Θö>Î܇>Ïš>ÏŠ>Ìü·>ÌÔ`>Îù±>Î7é>Îz>ÎÑš>ÍZ¢>Î >Ï{®>ͬ>ÊDJ>ÌTí>Íð¿>Í&Ñ>ˤ>ËMÐ>Îzõ>ÏÙ§≯å>ÈÁH>Èú?>È“>Íu¬>Ìøø>ÅT>¼È">Æ°]>Ððc>ÒGå>ÎDV>Ä~>À‹•>ɾ–>Ñp¡>ÔBÇ>Ò®â>̘,>ÁÁ>¾e¾>ÇÓG>ÑFä>Ôõ>ÔU†>ÑqF>ʯý>¾ÔL>¹8>ÃøÜ>Ïè>Ô¾A>ÖΞ>Õ¸É>ÎÙý>Æ/>¾L)>³}>»Ò0>ÊFß>Ò2>Ö¥Z>ØO>×T»>ÔÖk>Ïy¤>ÅÜ(>µµ>¬`>¹^Y>È-9>аù>Õª@>×Ä‚>Ù)9>Ùwœ>ÖæÜ>Òëý>ËXÌ>½*>ªÛ>¦ð >¹6«>Ç[7>¿Ä'>«Ž\>Ȳ>× É>Ùy>ÚÜ^>Ùñ¯>Ökf>ÑÞ>ÈB‡>¹“>¤ë>N.>±š§>Èà>Ís>Ó¬m>×¥¼>ÚJe>Û—Ï>Üå>ÜFw>ÚþÇ>×s9>Ôr>ω“>ºÔü>ŠŽŽ>†Å>•6>—6Á>­˜™>ÀÞ>É :>ÏZE>ÑC³>Ókô>ؼ>Û/>Ü,Y>ÜAI>Ú ¸>ÙBb>ÙžÑ>Ø+™>Ô˜ð>Í {>À™þ>§í)>g >%%8>[¾&>‹2¯>¨Eï>»"->ÅÆ©>Ëõ>̼ ->Ñ"¦>ÖÐ>×TØ>×½‹>ÕBË>Ò} >Ø#«>Ùf>Ùùs>Ùá^>ÙP1>×ÕÃ>Ô¿d>Ю/>˘>>ËaŸ>ÈK>¿gç>¯O£> 1>Œîü>‘ž¼>©X >¸Õ’>ÁŒù>ÇÊ>ËÇÎ>ÍŽÏ>Ь7>Ò >Ó">Ö>׺>×6t>ÖÜk>У²>ÈV>Ð|6>Ó¦ô>Õx>Öý>ÕI@>Ô`Ñ>ÓÞ>Ñæ<>Ëüj>É+S>Ë >È#>¼ä>³¼>šOø>MyÖ>7*>nC>“ ->¥H>¯Q´>¹Ì‹>¿¯´>Ã{È>µ4w>³z>¸W˜>»³ü>¾!>ÅÌç>Ï?>Ê ž>ÇÕÉ>ÐD(>Й“>Í;¥>þ>Ëõq>ÑNÖ>Ìh/>¿£Ÿ>ÅÏh>Íìù>ÆWß>Á*>Ë š>ÎÂ¥>Îd>ÇqJ>ÄÄP>Ë>Ê />Ø>Ât›>º>»Ü2>µvø>®Q>â¿>…£Ö>‚éÕ>›­f>¬µ>µ›Š>¼ |>ÀJ ->Á2ù>ÅW>È(ë>É\(>É&>ÇÙ>ÊS@>Ì á>Ì?H>ÌXÆ>Ì79>Ì;²>ËYT>Ç„†>ÅÀ«>Æ<>É\>Ê1ì>Ê“>Ê¥î>Çí>¼ E>½…>ÅP'>È<»>Ȇ >ÈQÍ>Ç™²>ÅÈ >Ãþ>¿‡>Äÿ÷>Ç ->ÆÁŸ>ÆeT>ÅT>à>Á@>ÁƒÎ>Á>¾áÂ>»a=>ºÑ>¸¢>´Áù>°¾¿>ª22>Ÿšš>ŽwT>ƒ”|>‘e°>Ÿœp>ª“?>°e\>±Q>´7/>¸¡>¹pì>¹+Ï>¹Zý>¼“z>¿Oœ>¿â$>¾¿ä>¿7j>ÁL0>ÁV„>Á]c>Â`2>¼;>ÂîX>ª>¿LÚ>¹cÑ>¿úJ>é>ÂE>Á4ª>ÁQ÷>¿†>¸]Ã>¹ M>Á!>ÂÌ ->Â×æ>Âï›>Âßë>”>Á=>¾ê >¿š>ÀÇ>ÁQj>ÁÕØ>Á­6>Á}ˆ>Á?ß>Àón>¿ó3>½f©>½T>¾g>¾!>½Ü>»sØ>º]>»±U>¼˜Þ>»­ >» •>º^„>¹Ã>¸3á>·ü>´ÀW>°2 >®í¸>®ÿÅ>«Í)>¦qÈ>ŸL>–‹%>ˆœ—>‚u•>{>›’w>¢!ï>§ƒ`>«œ­>®Y0>°“ >²Œp>³=Ñ>²€è>´˜s>¶š>·¶8>·þu>¸`n>¸»î>¸aå>¹&ß>º,>º }>¶5ø>¦e>ª63>¸éŽ>ºò˜>º´q>º¸J>º†”>·ñâ>¯ :>²àñ>¹øe>ºÍû>·<6>«Â¿>²x~>¶>ªôp>²çy>¸‹f>¹1«>¹Rl>¹²>¹C~>·I>­+h>²[B>¸´>·~q>·w:>·Ø:>·ÅÙ>·„3>¸&À>¸K‰>·ô[>¸tq>¸`>¸e½>¸Næ>¸4D>·0(>µº>¶Îˆ>·”Ø>·8ð>¶àG>¶ûê>¶ø>¶Ž/>µŸ¦>µÒU>¶U>µc>´Ë>³1k>²6d>³ê>²®‡>°Û>>²‚ñ>²Tà>²‰ >²Y¤>±ÖU>±)>° -þ>¯õ>®8>¬$¸>«ê>©ËÇ>¦!|>Ÿ>¡©Ÿ>ŸQq>šÆw>›~>•µ¾>‹È+>uÎú>l}H>…p³>‘GW>•BÀ>—O>Ÿ†Ý>¡7ë>Ÿt4>¤€[>¨)û>¨œg>§%\>¤öJ>¦²®>¦º]>¢ë³>¤®ˆ>¥Åã>«eÍ>®‚5>®«ê>®ìI>¯,/>¯<é>¯Z¶>¯]è>¯_!>¯\a>®„>>®§ ->®ãÔ>®º–>¯>¯rÓ>¯NZ>®äæ>¯Ì>®æÉ>®¦H>®øT>¯>­^v>¬½J>®B¿>®r>®.M>®l@>®²>®M>®D@>®eÿ>®a>®#Î>­Ÿð>­—>­¾²>¬5g>¬*>­-$>­5Å>¬äÃ>¬†e>¬˜ >­ “>­*Y>­=>¬zž>«” >¬Y*>¬í>¬!o>¬"·>«êÙ>ªN>©üË>ªä>¨OP>©Èò>«}”>ªÚØ>©&0>¦£Ú>›µ“>£EW>¨øÿ>¢Yk>™óþ>¤˜v>©§€>¦õ~>¦µú>©Ì‹>©j×>§ð¾>§* >§3L>¥L>¡E>¦<”>§1K>¥ '>¦8w>§ñk>¨Ru>§‘°>§xZ>§å)>§ˆP>¦Ôã>¦Ë>¦ôª>§L)>§*ö>¦ö>¦Ê¤>¦ÉÁ>¦˜#>¦»>¥ÑC>¥ÍF>¥ªä>¥a >¤êD>¤uâ>¤>£Òî>£­Ä>¢—Û>¡Dä>¡ÿ1>¡å€>¡WV> » > ()>Ÿ&À>ž,†>H©>›¶]>šGß>˜X°>–‹*>“Øî>Ä1>Œh>†)>v`ç>Yhƒ>_'ƒ>{™[>‡_>ŒÝ>³Ó>“¡>•ÇÁ>—L>˜æ>™òÀ>™‚>špç>›¡¨>œÊ>Âv>žBV>ž“N>ž§G>žðy>ŸSÀ>žþ)>ž}‚>ŸKÔ>Ÿo>žR>˜¡>šªÖ>ž¼>Ÿmé>Ÿÿû> •> D>ž‹°>–´¾>š/>žb>œë>ž¹>œeB>šƒÁ>jr>ž©Î>Ÿc>Ÿ}#>ŸU>žv->šP>›R>më>œsü>“Š5>˜ÅÇ>ž'­>ž>žwO>žÍ>›]“>›W:>œf>›I‚>˜ËÕ>šæÛ>œÍ—>›òÇ>› ³>™WÑ>š‡>›ñË>œ)1>œà->œ­æ>œ»F>œÉ>œàw>œÀŽ>œÁ>œ¬×>œ‹·>œa>›•>›ƒÙ>›è>›¶)>›Ñ6>›,ƒ>˜ ñ>”)>–tÄ>™ÄÚ>šÀ>™’x>šH>š¹¸>›U>šÄ‹>š€Å>šRò>˜>™Q7>™Ög>™Üç>š-Ð>š*>š n>™õ{>™Ë£>™0Ã>˜¸ü>˜K=>˜²=>™>˜àõ>—·«>—cN>—†‘>˜Â‰>˜È.>˜–~>˜ù>—íK>˜P9>˜A0>—àV>–õ›>—G&>–ï)>—+>—JÓ>–å½>–wä>— _>–»y>–U2>–¸&>–î6>–¬Ú>•gÛ>“y>“‚>“^>’*i>“f¼>•‘>•í^>•¿ˆ>•rQ>•€3>•£H>•™µ>•L®>•.ì>•Ç>“;À>ªû>–>“ÛÊ>”DK>’:>“ž>” <>“ª–>“¯K>“>‘‰:>ú>‘Ú¶>“®>“£s>“y\>“Zþ>’VB>'o>³@>’Ù¼>’Í >‘$ƒ>:¿>’ Ž>’H>‘r½>‘ý>‘š‘>‘O¢>ý©>Þ>É°>‘6+>‘U>³]>¦‹>¤~>-K>+D>ï>È´>l/>s=>dm>Ž‡#>þ>‹×>LT>å‘>º">ˆy>&¶>Œ¶‚>Œ;>‹«ö>Šé ->ŠQ»>‰™Ç>ˆ»>‡D>†?„>„£>ƒ;ü>=¾>}2>uº·>kHµ>Zo>?›><œ×>WÅ>h›ã>r×…>z2>s >¥B>ƒ‰>„ L>…>†–8>‡4>‡²Y>ˆAT>ˆVþ>ˆš>‰h >‰¯">‰øV>Š,Í>ŠSQ>ŠrS>Š€ƒ>ŠI>‰÷N>‰ÄX>‰²A>ˆ®*>‰84>Š|³>Št¿>†ZN>„&>‰É>Što>Š}Ç>Š‘V>Š{ù>Š{Ü>Šd">‰{*>‡»>‰u >Š*8>‰õð>‰ˆB>‰­ >‰ïa>ˆz¼>†—2>‰!™>‰ª;>‰f>ˆÞ(>‰Ue>‰Xó>ˆÔk>…fá>†±]>ˆ¹>ˆ²à>ˆ\o>ˆr>ˆ™Ñ>ˆeª>ˆ4Ò>ˆì>ˆ,>‡Åý>ˆ0Ð>‡¹ˆ>…]>†š>‡Âm>‡¹¿>‡¨'>‡‡ƒ>‡}t>‡Š>‡\Ð>†½”>†ª>‡,&>†ÛE>†»Ä>†ðf>†áa>†Âü>†¢H>†”ñ>†„>†^M>†Vb>†H²>†&Q>…àÜ>…{>…Ô÷>…à >…Æ}>…¤á>„„ð>‚ÿ>„Ó/>…\Y>…Du>„ÿM>„—#>„¯>„ß>„®œ>„*Ö>ƒ“¯>„Vy>„wï>„@Ó>„9×>„$Ü>ƒþ=>ƒ¥>ƒ ð>ƒv>ƒÑF>ƒ™.>‚­Ê>€Ú>‚™Z>‚î‘>ƒ3µ>‚ðj>‚ù£>‚ù>‚ßš>‚”•>‚ƒ>‚ F>~€>~"º>‚í>{Y>²>‚Z>ûš>ôÌ>Àú>¤Ã>… ->-©>{ ->U">W>€|Ù>€mê>¹> >€í>€Þ3>€ÕQ>€pq>~y>~ˆs>€q}>€YŠ>€4Ú>€5Ç>€)>ö§>µå>}Û,>|ó\>|Zã>rƒË>h~­>mæ>vÜæ>}Íë>~C">zè¢>w!®>{ä">}H×>}ªï>} S>}ß>{‹>{Fì>{ví>|-T>|mþ>|-Ú>y[f>v>zâ\>zl‡>x$‰>xA¼>x¥‚>x_>wA×>tñ¤>xÌJ>y«æ>x >vã&>wþÃ>yJ>wM?>sr>w”à>xêw>xgy>x/ü>x˜@>w·Ç>tñ}>wÔ>wÖñ>w¯ô>w¢ >w!/>thX>tÝ®>vŒÑ>tÑR>pN¯>hÄë>qX~>v:>u×ÿ>uŒi>t²[>u …>oˆo>l_ë>t+½>t¯„>sé¼>tT«>tI >t9Z>t^>s«>n‰Î>mY´>pƒ£>mÁ÷>rt`>s>rÜ=>r>rq>r=’>rÍ>q“Ù>qM>pl>gˆù>m~o>q¥>pÞ`>p̉>pJµ>nƒS>od‰>lŠ>X¶>V°û>eêÝ>VÑ>Yân>fþ3>n>lïH>m¥>jdÎ>^E|>j7=>mØO>m|õ>kña>lË™>mhî>kš>`oF>YÈ>h™>lu´>l”n>l0ø>kÇ>i–a>h/Å>a=›>dúÉ>aì­>i£>jkô>jj>j<>h6,>h¸Ò>iöf>jc>i»A>i”£>h9k>dZG>^“ >eÀ>hÖé>h!A>fäã>gš>gŒ¬>gÃ>g™Ÿ>b -…>Yì>d˜o>fÍ >cê7>^“>c¬ü>Yê>\ÈÂ>dÀV>dQï>d€í>d­>c¬“>^ˆÇ>c>dŒ9>dnˆ>d=Ž>cüÈ>cš³>`Ë+>^ÕC>_µT>PÊ¿>YœM>a>ˆ>a‡K>`÷•>^²­>Y¢â>ZLØ>^Ç0>]Ý >] ž>\3>\´~>\_>Zñ_>Y£6>X¤Á>V;]>MJ>Ou>Qb¼>Nû>KÌÆ>G–>Aôÿ>9ê'>-U{>Öf>-'>)ÒØ>7e•>?’9>D7">CXš>Gðô>J¸>Ob>R5=>OHq>PÏ‘>UŸÛ>V¢}>W0Ò>U‡‹>NñÔ>P¿*>T,Q>XS8>Y_Ó>YŸÉ>YÔÈ>Yü/>Zö>Z %>Yí¥>ZŠ>Zí>X¥8>WIþ>Q:n>V3\>YÊO>Yóâ>YæP>YÙ>Y\ù>YŽ>YW€>Xó >Y'®>XCô>XøÙ>Y%Ü>X e>X#>X.Ž>X¦>X§:>X‰(>XWÃ>X#È>X$Ÿ>Xl>Wî‚>Wlæ>VéM>Wjê>WNó>WBa>W>VÄ>VÆ‹>VËy>V¢—>V@ >V6ó>V¡>U÷Q>U¨!>SŠ>TÀ ->SÙ;>S~ž>P†;>Qƒç>QÖ>So>T†¬>SÊN>Q -ê>STk>S½'>Sà>S‘˜>S¢>S&Q>Sc$>S[F>SHŠ>S²>Rþ%>R¶>R –>QØ0>PBí>J7>>JÀ>Q–Ð>Q¹O>P…¬>Pk>M÷>Pr >Q/î>QË>PŠù>N¬>P>PqR>PD>PÓ>Oç5>Oò>OÏÔ>O€‘>Oxc>Oqè>Oñ>NÄL>N®Œ>Kç>D`>H‹>M×z>M§C>N²>Mß>Mê>MÍã>M¤ü>MzK>M`©>M+F>H¾><^Å>CgS>I¤½>H^^>F‰ú>H½Ê>G>Î>JÀ‘>IPý>J€>KB>K0*>K#g>JË->J¸“>Jž>C†>@?÷>HK->F>¹>Iˆ>Iéa>HnQ>H÷˜>I±>I‡à>G9>D—7>HnÁ>I >H Í>Hi>H@>Aæm>DéÀ>F¼Ù>Acg>@¾\>C•É>Bv>B»û>GŸ>E²>A&h>=ë{>:˜U>A¼Z>E,Î>C?È>@D$>E6M>E r>C¦>E³>E)â>E;h>Ep9>DÍ>AH4>C¶¥>@5v><çû>?!?>CÎ>Da">DQÉ>D2>D :>CÚÙ>CÂ#>C`>Bóì>CF>Ck>BðD>Bv>B&Ç>B­½>B™“>B^?>B.ª>Bí>A">AmÃ>A¶Æ>A©»>A‚ð>AG>?Ê>?Êë>?‘¥>@¶p>@›ã>@ù>@n©>?C >>® >?¹o>@‚>?ß>?ÄÍ>?K´>=UÙ>>TÕ>?5„>? G>>œ€>>¬À>>&>>‡š>>}%>>[Ÿ>=Ù>;Ø5>=3><|>8G#>;5¸><íß>:o>; >9ë%>6‡ü>6¦>>;r>:´ø>4·†>:{÷>;»Ý>6G;>5^Ÿ>;}×>;(>7&­>8¼Ì>:Ñá>8ÜO>6Ší>6¢h>5h;>45æ>(« ->7 ™>:,0>5ì%>/jè>4B×>6O>9Šc>9s•>9^ª>9¥>4ò>5Éœ>8Lð>8w~>7E>8ê>8il>8N‡>8 >7ëý>7¿>7°u>7ˆ>7kí>7=˜>7¤>7 -¥>6¥N>6›&>6t>6…I>3 Þ>)ÕZ>-©‰>êT>,o>5sR>5¿ã>5®Ê>5cZ>4u×>2ˆ>1š>.†¾>2Ù)>0 <>4.¥>4•>4f&>4W!>3û¾>/bn>0|«>3ÎX>3|‘>1†>2gs>2år>0Bx>1´¿>2Z³>)³m>,­>2r°>1Є>)zo>,Øô>2>0Må>+ž•>0ê$>1£6>1s‹>/ø¼>*Ñ>/"Î>1f>0ü©>0Ú€>/õ`>)àº>(ö>(s>/§>-š>%V`>#¦>,Èz>/n>/ŒÙ>/o°>/PÅ>/1å>/B>.ù>.Û¤>.»¦>.˜¤>.yy>.aS>.A>."Ë>.ñ>-âë>-¸ø>*Lü?$Æ?(°?,Æ¢?0Þ?4œØ?6 ü?3¶4?/zª?,Áx?,<ï?+ Ô?&Fº?­n?Q”?’G?Ï“? ’§?(„Í?.Êc?1–¾?1&Q?.£:?*´®?%E‚?Ée?ñ¾?ðv?#Ç?0Eá?:ëE?>?:zv?2Š?*L??&ôå?(þ?*‡5?+%„?*3>?)Öë?*Rò?*N?* ?+R?.Y?0õÉ?1a?04Ù?/±?1ÜU?6ý¿?=·?@›_?>þ?8³?0Ô›?+ìò?+Lv?- ?.É?+¾;?%„æ?Ây?³é?¢-?#n?'I=?%.¨? øú? ]˜?#¹£?%ÓÄ?"Ó˜?ã??e?dC?!E•?&œ?'ä?%I?#Œ?%Bü?*:š?/X[?2FM?2ïw?2»,?3Iþ?5^?8>k?:ª?9Jk?6@Ý?3;À?1ÅF?0²Ý?-—?'v´?ßå?ÉW?:b?/Š?½Ç?!I?( ?-É-?/oK?,lÅ?)‡?*Šd?0H7?4»f?4$Š?/¥p?)þH?$ë?!¶ä?!'?"G)?#‰+?$V+?%?(w.?-Fž?3¹Ð?:X6?>‘?>õ9?="ò?;¸ž?:›Î?7z:?1–N?*Éß?%T¬?"™ù?#+5?&el?*Þ?/Ús?56?9º?<¹L?=ò‘?=†[?;©Æ?8ä?5¶¬?2v¸?/S?,üW?*j€?&¾Â?!ÐÞ?>Œ?u…?S?¼?:?Z?B?&Ø“?.ÆÎ?1¼ü?1„?0|?."?,XU?-rr?2&ì?8n%?=É™?Ak„?C›%?D…?DMô?Cq8?BMw?@­?:Ðè?1á?$~.?½?(‰?‡ˆ?©Æ?õÿ?ð,?çˆ?c{?$ž?)2?*è¸?*ÇÅ?+m?. -k?0‹?-¹å?&\b?.°? Ž?€d?*?°ú? ¹?!ùÏ?$±’?+Ç?2ÈŒ?7Y?6Yš?3øq?2ÍC?3/?5'4?9/ˆ?>45?Aä”?CK?BËo??ëk?9[?07Ø?'u? X”?]L?"D?Þ_?€T?G?g,?%Ôí?) g?'í?&Ó¿?)¸3?/\=?4Ù?5å?4Û¾?2¡ê?1¶?2ã?2?/t2?*>Ø?#w­?º?Oƒ?ñŠ?Ö»?$F?ý?¯—?+??)?´°?’~?Ãr?»ö?Ïl?Ô¼?ƒ(?í?Û™?$=¯?,Ð?10-?32™?4Ü&?7øa?:ÛX?9¦f?2•‰?(^G? Z?(¶?÷|?%t,?*Ü?,|?,Û?+è¹?+!?,½D?1IÇ?6†£?9¹?:G%?9Ç×?: ?;kþ?=„?>«!??Ïh??6X?;‘p?6EÞ?2̲?3Ò?5ý!?8ùS?:qR?9ÕÉ?7Z?3NŸ?0ò´?29ª?5æˆ?84“?7!|?3;ø?-á?'¹~?$¾ù?%²-?(Ôç?,7;?/¹?0H.?/`?.dè?0\¦?4Ïr?8.€?8#˜?4Ò)?/Â?+Ùª?,P@?1¬?8)j?[c?@Gx?Cb|?Eö?E¬?CÃ?A k?Aí?AÆÃ?BWA?C‚‰?Dã¿?Cñ;??F?8 n?5š—?7†Ý?:B·?8Äu?3nÓ?/™Û?1!?6á?;Æ?=ê¦?>¹?;«Î?7›?3ÙÜ?1ˆ?0±Z?1ö¹?5¾Ÿ?:Tó?=’›??»??4?=kö?9!á?2SØ?*?G?$³?#v§?(ð?1˜?7ô?9wä?9Qà?7Âè?5¹ƒ?5;*?7)?9ék??2Bq?1]–?0?¬?0/ˆ?0¨š?2 ?5•(?:”?>˜¤?>ë?:R°?1 Œ?&Ï'?³ñ?©·?"]?+Ÿ™?1„?2K‹?1Œ£?3¢x?99¥???Aµl??ë°?: ã?1.:?&èž?´?Ùl? Y?+_ ?7¾¦?>}?>wQ?9†i?2‚–?+o?%zU?"¨—?$$?&¶U?%³þ?!Ö{? ‹?$üb?-ÿ+?8¡S?A ‡?Còï??»?5º“?)”p? ì\? u}?&ìå?-à?0d,?2’]?8 ?>ùÓ?B=Á??Ðp?;C¤?:!)?=>r?? ª?=³?6sP?/|\?*¨(?)m~?,îO?4?<íƒ?BÙé?E:Ë?E)?DAÚ?B¬;?? Í?9e ?4??1©?1$ø?0ü–?/å?-ËÃ?,- ?,@„?-‰Ú?/ÄÝ?3 ?5Æw?6?4Q?2_‚?1¢Ò?2X­?4=?6õ¬?:_Å?>ˆ?B«þ?DÂ6?CA’?>õÒ?: ?6­?5™ü?6=ù?6SÛ?4ÝÚ?4Hx?7gM?=Щ?DÊa?Iu§?I¹{?E[™?>ÓÌ?:–¡?;êÂ?A'?E2ê?E´r?DÔ?B~é?@Õ?<ñ@?5u€?,?%ÖÂ?"ÔX?#`ê?'6;?-?3¢?8ð„?>æ?Cà?E>Ç?D?@IÎ?9l?1ÿ’?/€0?4IÈ?Î?:¿¨?7†?44?1rÒ?0Z?2 ¾?6??:>c?;s?8–r?6vB?7±?:êÊ?<ýü?=»t?>ׂ?@7??îV?>;P?; „?5a?-?%¾m?!Óå?$õÏ?.[?8ùÝ?@ _?C?CIz?@a‘?:;?4B;?3´?8l?>]ê?C¼e?7Zô??í¡??…õ?@:4?A­5?A“±?>Å/?:æØ?8»W?9)?; -ñ?<‚?;¾Ï?8¨â?5À¿?4ÝÈ?4™g?3tü?3F?5»ë?:®Ú?? -?A+ò?@øß?>o›?:64?6n?5 ù?5ܾã?<¼·?;ép?<¹¬?=Ìy?==?<Â?<Ò$?@Lç?E¼?Hôv?I¿?Gš?EpÉ?Fï?Hu?IóÐ?I‚O?HÒE?HØ3?H\]?L"?Fí?:Y£?+Î)?" ?#·»?+T?2xë?7½?:ix?=—í?@–ˆ?CD@?D 0?C-‡???9ÛÅ?4´ó?0¡Â?.  ?/-F?2+-?5Àœ?7NÔ?6jñ?4q¯?3?3èƒ?8]??aI?Ež)?HnÆ?Ho¾?HÝ?HÇ™?Ii?Hj±?FÆ?D A?C(™?BF+?A ó?@K{?@¬&?BHN?Dã?DTç?BE{?>a?:ß?;‘??¦®?EOq?Gúi?G 2?DÍR?BEd?=œŸ?6vF?0Xe?.N?/Îÿ?39?6Éõ?8†À?8j‚?7TÐ?4q?/H?+f0?,5 ?31??<8I?A³?@gl?>ËÒ?A«?FGM?IÚÙ?Hàn?B†Ñ?9e‰?5c?=(Ù?M$þ?ZW®?] 8?T¤ä?DD:?1õ?$Û ?!ÙJ?'ÿ*?4D?A ›?G¬‚?DEM?8ªÞ?*¹È?#þ?)^ë?<?P‰„?`Ô?lÌö?w5?y4}?me?U¿H?8Úß? pP?ìa?!SÑ?:?UŽ?iªÃ?o¡ó?m;6?oÙ?uñæ?vrI?j=Š?T`1?9]?´&? P^? S?"ò?)"Ë?B Ý?]t~?u{ ?‚Ÿ%?…{Æ?ƒÌ?e&?w3k?nü„?bÆ{?R½Ù?@öû?+gS?Ç´?Zd?à¡??9¹?UÑ?nšX?€Œ?‡†‘?†‡ ?l¼?rxª?ou²?t-\?zˆ?€°W?„Uö?†SË?…v?õ;?vF?c[?Oàh?:¾r?$&?yÖ?þO?*¾?BÝç?Tú,?aÛG?o¹¹?€»o?Š0ð?’N¡?™=L?ŸÄâ?¤¶!?¦½Ð?¦öÝ?§Áu?¨Š5?¤Ñ,?›ª ?“î?Ž±?Œvé?Šc^?‰0?‡ÉŠ?ƒ°ñ?vÛ©?a¦ä?LÃ?7Ëq?!A®? ¦?ˆ?ò(?.˽?MÁ?g€v?~×Õ?ˆÐ5?þ×?á?Žg?$”?—ý?¡zñ?ªÍ?¯³s?®-j?¥±¢?š]t?“Z?“á?š]*?£÷v?¬‡9?¯m,?«?£á?žÃX?Ÿ¸W?Ÿ?—dz?‰?†Ñ¾?„š -?‚H?}B¡?usü?mw|?aPÄ?L̯?3 ?±l?ù ->ø8>ÿ¤®?an?$n™?6bŒ?F¤b?Wãß?lœÜ?€Ö?ˆÇó?Ž#?‘×Ò?•M¬?›!T?¢¸µ?§ò?¦Yø?¦5?«/£?²Pu?¶ý?µóÎ?²Ø[?®h?«¿o?­ å?¬óÅ?ªáò?­7°?´Íä?»n7?½©2?½†+?¼}?ºƒ?¹?º¥Ä?¾€l?ÀZ?¹ø?¯)÷?¤\F? û›?¦°?¬G?¬È|?¥Iy?™9…?‘Ú½?“ð??—§Ò?”h=?‹tï?øã?qµü?\ ?BÒ$?)ö‘?ü–?W?*?üý?+‰Þ?CÀ§?UØ'?c@4?nØR?zrì?ƒÔ?‡]Ò>Ÿ÷F>«õ_>ôŒ?.:8?a?…n?•áÞ?¢wD?¨›–?©oW?§¸S?¥dë?¥Ã?ª|ƒ?®®†?¬å`?§`ø?£ìÞ?£ß>?¤ÿ?¤NÅ?¤›“?¦»?§¼?¡]E?™º?•–Ÿ?˜*.?šÞé?—ó—?Žê]?„5?wW`?hµi?UÞï?:4a?+R>à’Æ>¦BÇ>J>¢Ê,>ÒÙp?¬÷?$7“?<\G?RA1?eÞ¿?u™C?‚?ŠmH?’ûo?˜âM?šZx?™‘~?š¤¤?ž[c?¢j?´I)?·gb?»$•?¹Ãð?¹r¼?¾ ì?Á®‰?ÁÇp?Âé?ÆY¿?Æð?ÂSz?»ÚÔ?¶Ãc?¶%2?»ÌÄ?ÃäR?ɇ[?ËËx?˲.?ÉNÈ?Å8¢?Áy?¼¤ð?µæÕ?°0Ó?±b?µEi?·ÄR?»?À¢ô?ļã?ÆMÈ?ÆÔ0?ňÅ?ÀÝå?ºñ½?¸é÷?»I˜?½§³?¼œ-?¶õÇ?­“Î?¤•?¤;Ì?®Âö?¹7`?ºpË?¶|ï?´çA?µSw?³’?¬p2?¢4à?œ³ ?œšO?ÅØ?¢{?ªô?­¹'?¬7¸?¨Zú?¥fÓ?§ñX?¯y%?´øa?±Ôµ?§ƒÛ?ž”ô?Ÿ W?§t ?®oü?¯‚Š?¬u¬?§”‚?¤ìO?§WF?©º?¢Þm?—³ ?’g&?–z?›þ9?›æA?–º¶?‘œÞ? Ô?Œš–?ˆ7¸?Vy?mF™?P«L?3Zœ?[¡?Wt? E?GL?6ŒW?MJ9?bé¸?x¹-?…Më?‹¾¿?kb?Žd^?‰”#?ˆ_º?z†?™‘ú?¡[ ?¦ïP?©¥ ?©8?¨‰Ó?«JX?°^?´A…?·–Þ?ºiü?»oL?¹¾?³ró?®”g?­³L?°!.?´(J?·¶?³÷­?«H“?§(?®; ?¹†þ?À<í?Á N?ÁpÀ?¿×¬?¸Yø?«!Å?¡v?¢µ;?«&ù?²¶³?¶Ôq?¸š¿?¸¶?¸çÚ?º-?·J?¯gä?¬ â?²ò¦?¹£ç?¸P÷?°¾¿?«yR?¯?¶ä?¹¾Ó?·Ø??¸Ô?»ÖÕ?º±|?·ÙL?¸N‚?ºçC?½`¾?¾r?º’÷?±!Ê?¨ÔÛ?¦€Ó?©º -?²“ò?¼}?¿ÔÎ?¼£?¹øF?»Y!?½3¥?½§?¼xû?½ ?¾#´?¼µô?º\N?¹Z?·z*?³?±2E?´Ï"?¼Þº?ÃWÉ?Äöo?Ávå?¸ÿé?­Ëå?¦4›?¨åÏ?³{Z?»[õ?¼Ç—?¼UÚ?ºÙü?·íé?·Ç?¹À ?¶Ú.?®¸­?ª4š?­ ?± p?±Ík?±¬#?±¡?° Ï?±Ä—?´]6?´Ý{?´I?²¥?­uÉ?©‡g?«!Í?±p¶?·ï­?¼°?¿ Ö?¾œ?¼¸*?¼–j?»´x?µM?¨tË?ž*T? ìL?­~¶?¸=¤?½ 0?¾Ê ?º¸Ç?²á{?­—?®>?²D?¶ž?·Ž?¶š‡?·{:?¹ùO?¼ÐB?½Í[?º}Œ?µ}V?µáL?¼ŒQ?£§?Äoú?Âu)?½ŽD?¸þ)?¹œ?¾ ?ÀÔ{?À™|?½äÇ?¹-™?µØÓ?¶¸ñ?¸ŠÒ?¸3²?¶xa?´é-?³aþ?±Øÿ?²n9?³V/?²z&?°Š ?­3ª?ªK5?«8?®` ?®³?©—½?¤ëÀ?¨°u?²{ì?º·?½WÎ?»`?¶ï!?´Ð›?¶.?·>R?¶?µª?´: ?¯/x?¥{? Ó?§ ?®³e?®mn?¨:¬?£ŽF?¥}?«‚?¯¹ó?³s?·¯?¹Ü§?¶Ø;?°PI?­ -I?¯¹V?´À?¸’n?º˜?¸Ÿ_?³¤`?¯Î?±Ä?¶(?·5û?µUÎ?´·G?´„'?²&7?®n -?ª{}?¥µ~?¢CÒ?¤Í?« -†?®›R?®ML?­&ë?¬íð?¬‘Ä?«Ñ|?­1Y?°—Ú?²m2?²Æ¸?³n’?³¾â?²¸â?±I?°±ë?±©Ù?²Ï#?³Ž?´2Ÿ?µU¥?¶² ?·©?·7ï?µë?´Z§?´m„?´•½?³Ê?°!C?­“Î?«SÕ?ª¤Y?­¥Ø?²‡/?µû?¶ ?µ.’?³Üã?³A‚?°æ4?­~?®$Z?² %?²ñ=?¯Ä¼?¬ð-?­6?®’?¯@œ?°î?²o^?³×?´dl?³Û~?²[ü?¯àÄ?¬s¯?©ïð?ª]ø?­‘'?°Ñ¿?±üœ?± á?¯ð¹?­+ ?ªô?ª¾Õ?­í?²i”?´U?³H?±©T?¯¦S?­ÅB?ª ?¤ø? °`?¢t7?¥û­?©YÔ?¬Fñ?®#?°,X?²Äo?³Ñ?±×?®¹J?­ÆO?®þ&?°K?±\Ì?²;í?²[i?²/Ü?²?±h?°…S?¯.“?®&Æ?®`ò?¯?°1?±@?°¤?®›»?¬WÕ?«Fß?©âM?¦›Û?¤½ì?§|è?«J?ªºú?§²m?¦„?¨?¬×?®j>?­m?ªù»?ª¡?¬Ø½?®òE?¯°l?¯Úˆ?¯ö¶?¯ø?°0?°ÚR?±&J?¯Àm?¬Š-?©Š–?§Àý?¦ò?¥²?§×®?ªGF?ª¦$?¨Ø”?§E™?¨‘>?ªÿ?«Ý?™!?—û??–?E?”èÆ?”fu?“¹N?’ž ?‘`3?Žúþ?Š1_?…+ô?ƒ­¼?„Tk?ƒi?}Üþ?p4W?_æd?S)Ã?IÙT?:á‚?!zq?£¥>üª¡?zÿ?)z´??Ó??R{½?bó?mR?ri3?qÞ?pÊZ?x·h?¿X?„܆?…ô?†¢‚?ŠI\?rZ?’Ÿ¬?’^?8¸?Ž”?ŽøÈ?ã?’ž2?’ÉY?Yâ?•?Ô]?–^Ù?œ -?ŸXs? v?Ÿ¼?Yp?›Lw?œÐ‰?[³?cY?œB?˜à/?•Ÿ?•ƒ„?•ôƒ?•DT?•²‰?•ªD?“þè?“„U?“Ô*?”¿3?–E†?”¥=?uœ?Œád?Dm?’4„?“áÂ?–&y?—W ?–¨?—ù?—ä+?—ÿŠ?˜ÎÝ?šh?šG:?˜RA?“«ü?Žú\?ŒáC?Ž±ã?“³Ÿ?˜K?™e9?˜à&?–ËÞ?“Ç-?’z§?’9?“É?–mU?˜Lw?˜IJ?—ÃÖ?˜–Z?™¢?d3?dXÚ?gøx?i}-?i¨§?kÀ?m„û?mCd?lÃk?lí}?m Ç?mî?lïg?mÞ?ló ?lR?k£†?k¿?js?in"?h‰?h—&?g„G?_w??RÚ3?U O?`‡—?b…3?X½…?S”?\ËŠ?d6?f^F?g^Û?gÌu?gln?fŽè?f‰ü?gÖ?gtÕ?gk¥?dªÕ?a±?a÷-?dš¨?e|?eõ`?f! ?e˜?eªw?fÑ?fh ?dL“?a#?_ù]?bCN?cÞé?c€=?d5¢?ea?cÂÜ?bb?bý?b£­?bá ?bR?`?]¨ -?]ÿŸ?`2!?_ÿÑ?`6Ð?a?`Iö?_Å›?`Û=?a§{?aèž?bP?a‘r?`ÆJ?`z0?`Çé?a^Ö?aΞ?a‰Ï?_×Á?]j?\¥ù?]jN?^çý?_²Š?]Æ?Zð?Yó ?[§ó?]?]H®?[¶¹?\Ó?^ Z?_†J?^\q?\û&?]Jœ?]F…?[úa?[pq?[å°?[œ?X›•?Xe?ZÕ°?Z΂?Wûf?WL1?Xi?Y5Â?XÈ?Vˆ?U€¯?Vq?Uäl?W·’?X°D?VæÈ?UJs?X½Ù?[ßk?\*R?[™u?[¢h?\ç?[ŠX?YÒš?Xrk?Y j?Xº*?Wã­?Y_?Z‡s?ZJ›?Xí’?W±Í?W|’?V܆?X+?YÏo?ZTØ?Z7Ï?Y“@?VãÆ?Ul?W_ê?Y}»?Z‰?Zœ?ZÐT?Zµ€?YÐ?WeA?U)p?Vd/?X$¤?W*ž?UY™?Uv ?V˜x?W&?W4Š?WQ?VœÇ?Vû?WÐv?WçÄ?W[a?V^¡?Rìj?Lá??@ãí?D¹˜?Gä?IÑ©?J)?IJl?GÍ ?E¤@?Dú¤?FSæ?G ?G -Ú?E°¥?DìV?BQ¿?@öÿ?DÞ?Fx‹?GŽ¾?GÜò?F}?Få?G¤?F,“?DÊ?Aû”?@9?B¿Ñ?E³?F^Ñ?Gž‘?I>c?I;*?HQ›?G×Ó?GZÍ?G ö?Eþé?C8?B,F?D|q?F€?GÁ?Fz?Eà?@<Þ?ź??«?E4•?G»?GË«?G —?FC/?Eÿ¸?EôÂ?E#I?E{£?G ÿ?GÒ8?G®ž?FÇ_]?=1Æ?@qÒ?C„Z?A¸¬?<)ñ?<ÃV?Aªm?C¶?C_ü?BÁ?Aµª??¼?>Fb?AË?@wˆ?9k ?1¼Ð?6fù?>yñ?=æß?8q-?:V—??³¡?A)P?@z?>c?<™?ùß?>êj?>8?;ò4?;qŸ?=_ê?>Ð?>N?=:ò?: £?5‰{?0“?,€Ô?.,ó?4èµ?9Üù?<8!?=~ü?>W?=ú‘?=X?=Hþ?=-?< –?:%Ø?6 -‚?2e?4§j?8N?9ÅÊ?9ßi?9‘[?9Ð?7ÂR?7u†?7Ñz?6òÝ?5Õþ?4î6?4s ?4TV?3°E?2„ª?1·?/g?,°L?(çÅ?'²e?'y?%‹?!³˜?÷õ?®.?&? áÌ>û+¨>ÔSÓ>¶ I>ÌoZ>õòû?μ?Í?å²?éQ? þ?"ˆ™?&H?(¯t?*A?+ê%?,Äd?-Yˆ?-,»?,Uð?.q?0èD?/Ú"?-@?/®?2få?2ðŒ?3 º?4nè?4xf?3[ü?2›¬?3‡?4pH?5?5¥¡?5ÍÉ?5ùE?6o2?6£n?6–‘?6Å8?6Æ??6¶.?6¨Ü?6J?6S?6¨¥?6¾ó?5-´?3‡a?44û?5>¾?5ºí?6",?6/¯?5B?5Hº?6Þ?6 ß?6»?6tM?6±?5Mv?5m?5Œ -?5àw?5Í?3£}?2ÈU?3² ?4ÄY?4ÿ'?4áö?4wC?3ï?3¾¤?2ØÛ?/¹È?.?0Áô?3d?4N?4 -=?3¯Â?3Œµ?3¯´?3æz?3Ñn?3ž‡?2à¦?2—?2Øx?2×[?2œ?1ço?1™ ?2a?2AJ?2Kž?2 -º?1‘?1/2?/ð˜?-›à?-wˆ?.Á¾?/ñ?/ùB?0x—?/s¢?-¸º?.êN?0Û?/ï~?/ô?/á\?/¾?/œŒ?/\?.dß?-–?.Á?-æ·?+ãà?+=–?,½D?-Ûi?-íŽ?,;ÿ?+ 2?,ó ?.1—?.O?.SZ?-ã\?-)Ò?-8Æ?-é´?-­T?-Ž‘?-âS?.I?.-í?.?-ÞW?-žN?-BÖ?-L×?-–L?-ý?.I8?."t?-f˜?,å¹?,Ñ?,äƒ?,²Þ?,ªÝ?,”)?,fA?,yÆ?,MÁ?+â¶?+£c?,v?,3?,+I?,=²?,º?+v?+n-?+ù9?+÷´?*ˆf?(?(ÿÙ?+E2?+º?+¦O?+‡?+*&?*§{?)A‘?'ÿ?(‹½?*Œ?*Þs?*ÎF?*À7?*”â?)ÙB?'ž$?&²W?'Éw?(iD?(Qû?(òÆ?)È}?)ü¨?)Ö¶?)¸’?)›?)†å?)…r?)k?)Yk?)\V?(ôê?(ü?'ÊB?(3?'ÌS?'®Ì?(~¼?(å.?(Þ?(À:?( í?(}ª?(c¡?(]Þ?(9ü?'ôŠ?'T¸?'*?'žy?'uv?&¾2?&+x?%‚Þ?%¨?&¯?& m?%ʇ?&ÿ?%Áö?%å?&cË?&s…?&SL?&#Ë?&#?&no?&\7?&+h?&#^?&f?%8@?$'G?$ºj?%kÿ?%ZÖ?$÷³?$ø?$û[?$¤9?$ÜË?$úU?$BŽ?#†ä?$<?$Ýf?%í?$ã´?$­?$¿¨?$e?"ên?!“? r±?"/Û?#Ö?$r¿?$0û?#ç0?$f?$?#°d?#EA?#F»?#*ÿ?!èü?!1ü?"ƒ? ô°?Iõ?¨U?!êo?#HÏ?"£N?!ÕÍ?!»? Ç?Ñý?"{,?"¬Ç? œ¦?ØF? Ù¿?!c¼?!ÚD?"U? ¡Ž?^G?%Ï?õô? †?!‹?""¹?!¼?!ž+?!ƒ?!Y,?!Š¹?!%ý? ˜†?áK?g¨?¼G?¨%?{Û?þö? (?ùD?š2?À$?ð÷? ß?•Ù?p?†×?ñ?ØØ?(?:l?ÖÅ?Û?æz?]?bK?j†?x?pL?;q?Ù?‘ó?ÁÇ??É?]e?m ?wá?GÄ?6”?Od?ùD?y?ª/?¿?z‚?Hi?m6?ª?€*?À2??ç`? ·? ?ùJ?nh?æµ?ž?|(?sþ?IÇ?ÌC?/Ñ?¥|?/,?šì?¶­?û¢?ÌO?¯?/|?Ä6?ïá?;R?%?‰X?fÃ?O?\ð?eÆ?Ùé?²b?¦ ?ÎQ?H?:?§¥?š§?Q´?ù¿?s?O¸?Ä;?¹®?w?³œ?)›?¿?Àâ?óÛ?DÑ?Ë’?J¶?‘~?ÒÌ?3ñ?‰š?i? á?»?Ön? ?BÇ?¹?Ñ°?÷•?KÌ?¤ª?ä?g¬?¦÷?1Ò?B?=? J?^#?ï?20?B´?§Ö?äý?þ’?ü¥?®N?9¤?`?çô?×k?5?ž?ó4?r? ?Q? ®µ?ù,?eÐ?Ðé?e?‘!?ë&?Äü?w?`™?1a?Ä?‰N?… ?ï?ç?ÄÑ?g«?4+?”˜? Î?9? ìí? ð!?¨è?v€?2?[?·Á?í?>w?–'?´»?œ‹?¤%?•_?I~?Žö?46? MÙ? ¤ª?²?6?¥? ¿§?•ý?3c?(‡?ÿë?§?N^?gÐ?c?•Ç?P&?»¦?Ed? ª? -s{? -ºï? ž’? —Ð? i3?.f?ƒÆ? ƒj? S¼? ë? PI? -ö? -¸ç?§‘? –? #˜? -þI? ó]? }û? 6{? Q…?¯«? -4?È?ð?v‡? á ?s?(C?? €ø? á? -¥s? -¡? 4Ç?òÔ? E“? óÐ? »`? `? °¨? ës? ¢Ñ? -¦??÷? -–2? fà? _N? ÓF? É?#? ýÑ? ? ݃??  ? -ª? âç?n1?¿ð? Ý)? ¾;? <¡? a? -ʘ? ^æ? ‘Ñ? ž? i¥? Å3? ‚R? -¢b?‚µ?íq? -œ…? -›? A? ôj? í? -@Ô? -Nj? Ü? ù“? e¯? XP? T? Z¤? ? ›? Þå? ¤£? ªÃ? ñ? Œ? ?Ÿ? lM? $? ? ñ§? B? ‹? -–8? #¢? -õ ? -ýq? îT? ÅX? -¥Ñ? Ä^? jÕ? -N ? -ƒÖ? -VŠ? •??À?Ýá? õ? -Ò? Ú­? ‡¾? [z? u`? K?P?S?Âá?ãB? Ÿ??º¾?µ¾?2H?½Ê?¦ê?¼Ä?‹Î?6ù?E?E¼?8?-r?S?ö?ñÀ?Ðu?\Ç?q0?ªX?™’?Ž\?„ô?i;?Ë…?2?êÖ?)‚?Y°?Uò?2>ÿ`i?F?Ù{?¦1?>?vç?ƒ—?ý?Aú?ë?w—?Ã? ¥?G‡?i;?„¿?˜x?œŠ?§Ò?«¬?æì?y?€Å?ey?=?Ó? :?À'?ê?/Ÿ?¨?eÖ?ÏÞ?ï`?|­?ÛŸ? )?ȼ?-¡?E?)¦?þ©?I?Bê?01?9Ü??ŽX?L?¼?Ü)?ÌÔ?­?-‚>ôÈN>è\æ>å'¨>ôì=?»=>ÿŽq?-Í?¸»?ñs?¤)?Aÿ?ƒ­?ßR?•?§e>þéÏ>þ›)?E?I?W[?d?-6?S¨?¥s?,?–?j?6ü?hb?_4?ðŸ?À?©l>þ -}>ù^Ä>ûùY>ýÃ>>þFà>þõ>ÿ>þÌÊ>ÿ,ï>ÿg8>ýEF>ü>ýÚ¸>þ;¸>ýð=>ý£Â>ü`”>û{?>üíi>üþM>ü˜º>ü´¢>ûÿ¦>üŽz>ý>øß>õºÛ>ù?Ž>úÑ>û >û¯ö>ûh<>ûÇÝ>úá»>ù¯£>öëc>ñT>ôƒ0>ùž>øþö>úªW>û÷>ù‚à>÷ÆW>ùz>ú½.>ùý>ø›Ž>ö›>õHS>øf >÷Ò_>ö·h>ö1y>ô‚W>òP>îöÒ>óV«>óé[>ñW—>õh >ö†k>òO=>ít„>ð#ï>õî›>÷"ž>öÃ2>÷>÷IÄ>ö™Q>õ4>ôøI>ö,®>ø)H>øLê>÷­‡>öi´>÷*z>øæ>÷þ7>÷þˆ>öÿ¼>ö°Ý>öœ>õãp>õY*>ôý³>ô…>óÓ >òn?>ñzÛ>í8x>í 6>òü&>ô >òù=>òx;>ôk>ó£ß>òªJ>òøà>ó†>óÉ>ñ½§>ñ8t>ñ]ê>ðê»>í–=>ïŒÉ>ò¬>ñi)>ñHô>ñÊV>òJ>ñtp>ð(÷>í:U>ê ­>í^Í>ï‡>ñN>ð²4>ïǺ>în>îeî>ðBÞ>ð>ñÀì>ò!›>ðøõ>ï%/>îð&>ï>ï‡>ïe¥>ï1>ï -d>ìÞâ>éA >ì+Û>í—æ>ì²7>ë°>ë„>ê¹ >é3>ê—H>ì\…>ì{F>ìN%>ì Ú>ëÀŠ>ë“K>놷>ëCZ>ëY>ë/ß>ë#J>ëõ>êÙÕ>ê–>êt>ê\>ê>éáâ>ééé>é®»>é(N>éÂ>éE>é&(>éu>è†ë>çèï>èPP>èyŠ>èn§>èCú>ç³q>æ]ž>æóh>çÖ±>çȳ>猂>çRC>ç"b>ç#>>æçâ>æ3>å}>Þ؇>ÞC>â×£>äø>å‚>äã >Ýâ8>Ûãq>áxó>àmÈ>ÞU>á$s>ä5>âõ¾>â~ˆ>â^q>á>à•h>àrU>àvf>Û«K>ÞTÁ>â?w>ãQa>âc >Þ x>ÛÌ_>Þ=»>ßõ>áœö>áls>á$z>àÜm>á<è>Ý‘c>×F¦>Ü„œ>ßžF>Ýk>ÞhŒ>ßã½>ß™º>ß\’>ÞY¤>Þ/p>Þ”ö>Þ>Þçõ>Þ¨»>Þ W>Ýéh>ÞK†>Þ>á>Þ7'>ÝÌ>Üös>Üùí>Ý>Üð>Ü•?>ÜQÛ>ÜÜV>Ý–b>Ýœ%>ÝÊ>Ú‡5>Ú…O>Û«—>ÜtŸ>Ý >ݪó>Ý“ñ>Ýï±>Ý>9>Û õ>Ø\^>ÔD)>×ý#>×ò>Ó½÷>Ë¢)>Ћ®>Öò>×ë¶>Ù°F>Ø:R>Õ›+>ØÜ>Û¡>Û7w>Úº>Úr>Ù}*>ÙPQ>ÙŽ>Ù[¯>Ùa ->Ú+f>Ùѱ>ÙZ}>Ù;÷>Ù±>Ùi >ÙbÏ>Ù˜å>Ùùù>Ù›ç>ÔW >Òk>Õ²*>Öf%>׌>Ø·P>ÙÝ>>Ùgª>Øš^>Ö×H>Ö1 >Õ\ÿ>Õjv>Óù¢>ÓBú>Ô<þ>Õä­>ØÜ>Ù é>Ø>ئ>Ø‚ú>×°ù>ד>Ö,>Ò»Ö>Ð2\>Ï»>ÐÖ‰>Ò­ª>É{­>¾ ï>̺î>ÔÙ7>Ö){>Ö­ž>Õ¢G>ÔJ>Òž>Ñ1>Îé¦>ÉæW>Æ~…>ËßÒ>ÑÛ>Ô0>ÕJ >ÕÉ>Ö¿Û>×f«>ן0>ÖÚ«>Õ½á>Ô³>Ñòg>Ï—>Ä8c>¨UÉ>ª÷ž>»?G>¿ÿB>Æ7>ÊÒ>ËV:>ÌAì>Ë%¨>Ê«ð>άh>Ñ?'>Ò>ÑÜ >Ð>Ϧ>Ðp>ÏÀÖ>ÍbÈ>É;>Â_ž>µ­>>”.>z‰>˜®‚$>¹Ãÿ>ÁŸt>ÆEÍ>ǯ>Åñ>É6>Í$>Ϊ->ÏXx>ÎèÑ>ÎäÅ>Ρ[>Îð>ÎzV>ÍÂÛ>Í6>˹T>ÉS>Ærý>ÃÜí>ÄRt>Ã>¿-3>¹Þ«>²=ã>ªý“>­¨ž>¶wo>¼H¡>À2;>à >ÃÈø>Âù:>Å0¦>Æçð>ÇÛJ>ÉAo>ȯ­>ÉB>ɘÐ>ÉP¹>ÈZ‘>È«>ÈPa>É&|>ɽß>É-¦>È;ˆ>Çñà>ÆGÒ>¿òP>½å»>Àª>¾'4>¹É¤>³ß©>¤DÈ>ƒJÄ>{²>“D ->¡M¿>©¤4>¯OÛ>´Î¥>¸~>»:ò>¶‰>·à+>½b·>¾Ï0>»m>»4ñ>ÂmI>À"Å>¿ x>ÄM>Ä®‰>Ť>ÃÙ>IJ]>Åk>Ã.ò>¿ä >Á&Æ>Ãø/>Á§>À0>Âkï>ÃK>Á¡>¼Å->¼§1>¾gs>»éß>¶þ>´¯!>µÀ?>±Du>­G:>©ÝÂ> j;>”Z;>‘í>‘Ñ>§¿y>¬í8>±¾ä>´ý¾>µ?]>·Ÿ£>ºÆµ>¼L?>»[/>º˜z>¾T­>Àh¥>Àƒ>ÀLy>Àt@>À¥U>Á#>½kõ>»ÉÏ>½B‚>Á$M>ÁØ”>Áô©>Ám(>¾Š>³º >µ->½Å³>Àë>À'»>¾æE>½áU>½?>ºäŽ>¶ž>º6E>¼&À>»ã²>ºôX>ºK/>¸">µ‚ã>¶Wà>¶>³ë~>°ïÆ>°?ã>®ï÷>¬¦‹>¨Ý•>£ê >nÑ>’Õ‚>Œ¨½>” Ð>œ:ð>¤5n>¨Àó>©)F>ªã°>®/>¯!T>®÷m>®í\>±};>³‰Á>³×–>²e¾>²›¿>´z²>´:æ>³õ8>´Óu>µ >µ#>´É[>±û¡>­1Ö>²™‰>µ­>´/<>²ó ->³§>±{,>«ë >¬>²ÑW>´»>´™>´¼Î>´¯:>´Y¸>²è2>°”>±WË>±Û >³*¿>³ÌL>³±.>³Žv>³[Ü>³ì>²[(>°9?>¯¹ˆ>°ûÞ>±[ÿ>°l>®yG>®T>¯I¦>°">¯¶>®¹û>®iÊ>­’Ñ>¬õ;>¬>ªF”>¦D>¥>¦¼v>¤ˆ¨> 2D>šnÕ>”c>Šžu>†9+>—>˜º->œØÌ> Ô§>¤T>¦8>§|J>¨Æl>©!@>¨S>©å€>«Nÿ>¬á>¬9 >¬…C>¬ž>«þT>¬„ð>­nJ>­Eó>©ïS>œ2A>ŸBW>¬ ¨>­ÒÞ>­’Y>­–ì>­‚(>«Nb>£i±>¦>³>¬§ä>­w¾>ª ÷>Ÿ~°>¥u¹>¨úó>Ÿ‡>¦@>ªô±>«ºy>«î…>«ˆ>«Ò„>ª2>¡Gµ>¥Ù>«Œ6>ª G>ªõ>«*7>«0ò>ªîß>«DY>«>w>«1©>«u >«;—>«L¹>«@*>«'å>©÷¥>¨V†>©±ü>ª¦ä>ªQþ>ª%>ª-¼>ª+>©½>¨½ð>©>©jÞ>¨ÿI>¨)Þ>§©>¦Æœ>§Lv>¦ï’>¥«Š>¦Ö%>¦ÒU>¦Þ>¦±ë>¦U%>¥Ï>¤Þ{>£ô0>£‰Q>¢cþ>¢·>ŸÞ>œƒ9>–^#>™’Ò>˜Ci>”êØ>•ÙV>‘ç’>Š6>w|>pT>… -¦>Žhv>ž#>‘f*>˜«(>™úÕ>˜1š>›Âî>žäž>Ÿ6æ>bT>šP%>›½®>œ³Æ>šÛ¦>›î>œ¤.> ãÔ>£->£EM>£mÿ>£™v>£˜ï>£¥ ->£„>£‘C>£€D>¢rì>¢—ù>¢ê>¢Ú$>£?¦>£†¦>£r&>£í>£&>¢î>¢³m>£ >£#G>¡cP> ì>¢Œþ>¢šö>¢xæ>¢§ú>¢Ì¼>¢¢ü>¢Q›>¢ƒ >¢‡j>¢S,>¡À)>¡¶H>¡é*> ;·> 5l>¡Q ->¡Zì> ô‘> yt> ”b>¡7“>¡m9>¡S> ¦A>Ÿì> ‘> Õ‡> sÕ> }> ZU>Ÿ É>žÕF>Ÿ‡a>·1>ž•<>Ÿéy>Ÿ9t>gs>›>p>‘;>˜rÂ>y9>—tÍ>->™=R>žOÄ>›òq>›¶&>žuó>ž<¦>œÁ>›ÍV>›á­>šgÓ>–”F>šú]>›ï>šë>›9[>œÓz>"à>œOZ>œJ>œÈ|>œ«Ã>›â;>›‘>œ>œXü>œ=A>œ3>›Û¶>›ìH>›Äé>›q>›8>› >›>šÈå>šgÛ>™ý>™¹´>™£Õ>™p>˜^E>—q>˜ t>˜¶>—ŸË>—32>–Úû>•ü(>•=Õ>”Áß>“„W>’fF>Úó>©›>Ç>‹W7>ˆ&0>ƒ%>t3>Z/§>_Kb>x]>ƒ¿ >ˆK>‹(=>_Ç>Žð>ù`>‘'Î>‘çÎ>þP>‘Ì/>’Ê©>“º‚>”:>”ó¿>•"ø>•=>•N³>•§&>•M¥>”¶>•{~>•›{>”šœ>:v>‘2#>”¼>•b³>•õé>–>–ò>”¨ê>½·>¸>”2ú>’­æ>”ÆW>“}“>‘°Þ>“¦ >”S?>”Ð=>•`ç>•68>”e÷>‘$Á>‘ãö>“?~>’‚¯>Šˆ>G¬>”6I>”#->”qP>”A>‘àÂ>‘Ø`>’t >‘è:>\>‘¥e>“œ>’aB>‘LÀ>_X>é×>’`*>’ŠÐ>“>’½Î>’¾R>’Ö˜>“Ž>’çÖ>’ïê>’߃>’¾'>’ž>’>’Ç>’Ù>‘Ü}>’ Ù>‘pT>f–>‹QÜ>„>Yý>ä>¯>¾>‘Ù>‘e>‘*=>ãÐ>²O>ŽÁÐ>›K>1o>7­>Ÿ‰>§>’">{·>KÚ>ŽG>i>Ž©7>6Ú>±¹>}>ŽcU>òH>Ž®>c->oÞ>H¥>Žç;>ŽÇ>j>ŽþG>Ž™P>¬¨>Ž2Õ>Ž>Þ—>Ž >¢‹>/¼>Ô±>–Æ>vÝ>¸\>Ìñ>™½>Œ¶ ->Šôþ>ŠÍ¼>‹C|>‰ÖÌ>Šuê>Œ¥¸>Œã‚>Œ¸=>Œv¾>Œ‰ß>Œ²5>Œ¢Í>ŒOÔ>Œ;¼>Œ>ŠPÜ>…—½>‡>‹3ñ>‹k*>‰ -B>Šè>‹0>ŠÈ¯>ŠíŸ>Šip>ˆÎ>ˆ !>‰¢>ŠóN>Šä5>Š¹>Š¤ó>‰Ø#>…·ò>‡ºÀ>Š5J>Š&ò>ˆöÝ>ˆA¯>‰‘e>‰œÎ>ˆûÔ>ˆ‚;>‰ñ>ˆö©>ˆ¡Œ>ˆdž>ˆbF>ˆÎ>ˆ£¦>ˆH4>ˆSf>ˆPÏ>‡ß9>‡Þ3>‡°H>‡‰ >‡%Ž>‡6¿>‡6î>†V)>† I>„…z>…’ >†>…òS>…Èo>…|­>…"r>„ÄV>„Z«>ƒÅ|>ƒI*>‚¸>X!>€Ì°>€"S>}¨›>{­a>x¤•>tc‹>nˆ>f Î>WW•>>Y?>;†¿>T9V>c¯C>kØ,>qÄ…>u÷_>xïU>zÎ>|Ò>~ݹ>€2Î>€¥$>f>\z>Så>rÍ>‚*³>‚^c>‚š‰>‚Á%>‚Úš>‚ï>‚÷>‚¯>‚¢>‚ŠÅ>‚x1>Ëw>‚ !>‚è(>‚Í >~fÿ>z‰>‚8R>‚Õ”>‚ÕŸ>‚Ý¢>‚¿|>‚Áâ>‚ª>¬f>Î!>Ð>‚u>‚?0>Ýh>õ'>‚?Û>€É >}ßy>wÒ>þ>Ô¼>tè>¿Y>»œ>/M>{E>}üj>5ï>1¹>€§>€Æ%>¥>€Ì›>€—å>€ƒÕ>€™>€$>€¨Ó>€4’>{aã>}Ú;>€AÊ>€S>€6Z>€¯>€‹>€0>ò&>~•„>~eÚ>»>+·>~øM>+H>©>~Ôd>~«æ>~Œƒ>~`u>~ü>~º>}ûL>}Äw>}J >|¸À>}8W>}AN>}[>|Ô1>zev>v>{0a>|U>|(e>{“h>z¦v>zä§>{h·>{o>z/•>x¶R>za/>z£>zei>zOÌ>z4 >yð°>y7>xz}>y >y•(>y ñ>vü|>s6–>wu>w¶Ê>xfŸ>wÑ™>wþò>x°>wäç>wbc>vµ¸>v©>p]’>pª>v§>upî>uˆ“>v~ª>v]{>v4B>uÑ1>uÂ÷>uI§>tS{>uLå>u3»>t›”>sMX>spi>tŸ½>t¦®>t`û>tHN>t8>s?©>p³>pê3>s‚B>s\>sv>sã>räa>r¤Ý>r†P>p·£>o¤–>oÏÍ>f”>\ÛZ>a±²>iöb>pÖ°>q4@>mκ>jÿù>ohñ>pw¦>p±/>pDâ>p›>nÝJ>n¿q>o>owJ>oY>oMf>mZ >kB?>n`ß>nÄ>l7>l&„>l•A>k6‰>jã,>iËE>lž[>m-Ì>kV°>iàa>k=P>loG>kvp>h‰>kvÿ>ly'>l 6>kíT>l >khÜ>ig¢>jóÏ>k}_>kKe>k<é>jÚM>hã>i1 >jBÜ>hx¼>c¤>[¥?>d³>iʃ>i¶’>igA>h|>hò >bù¿>_­É>gót>h†(>g­Œ>h0>h,N>h.¾>hT>g®Ï>b\â>a(æ>dÒG>byä>f>g’>fûÌ>fÉ·>f—C>f^5>f: >eòX>e¶È>d.ü>[Â>anï>eKà>e­>e{>d®Ì>cÈq>d.>`hÜ>Mtù>Lw”>Zë>JÞ>MðM>Z—¾>btÜ>aõ×>bM§>_)r>T'G>_ ·>b|>b!¶>`^ñ>aZ®>bX>_õõ>Ttâ>Ok–>]j}>a0‚>aQ>`èD>_¯_>^ …>\Ñ>UWü>Z'¶>Xq¤>^Ù|>_‹Ê>_:Å>_D>\ÑG>]r;>^ñÔ>_¬>^Ó$>^–f>\äË>X >RØ>Z’t>]ñŽ>]G‰>[úÜ>\Ÿ>\‘™>\˜é>\®I>Vy¦>M§t>YfÚ>[éz>X÷ý>SVù>XÅ“>Mªà>Q95>Yï¹>Yrì>Y¸R>Z >XðP>Slá>XfX>Zq>Yþ¾>Y×ÿ>Yž†>YF ->VÅò>T¡Ñ>U1>Dú>Nˆ">VþD>WlT>Vãö>Td³>Ný„>Po>Tò¤>TÐ>S>E>RÕb>S^n>RäK>QïE>Pć>P$>N)+>Gð>I Ê>J1¬>HJ >EÄ•>BRº>=²>6â›>+mŠ>°>&°>(>4¦ >;™>?fú>>D„>A„¯>B¾¶>G„¤>JŠ>FùŸ>HNI>M=½>N>N|>LB>E9ã>GÅ>J¤Z>O^>P0ç>P]>P‡>P©>P·—>P§®>P|º>P¬L>P² >Né>MVÆ>G >La!>PJz>P}>Pp“>PNý>OØ,>Pé>Oݦ>Oo>OµB>N©þ>O‰¨>OÈx>O-À>NÍý>Nß>OP«>OXZ>O=‡>Oü>Nâb>N߉>NÐÅ>N³!>N,ƒ>MŸ>N0ú>N,>Næ>Mö6>MŽ>M›R>M¬¨>M‰u>M<ê>M/0>M”>LäW>Lˆä>Ióÿ>KF>KP]>JÎÃ>G0>H;>H©•>JÑ5>Kª£>KÎ>H Ï>J} >J×>K ->J¦ø>Jæ>JO*>JœE>J—;>J‚`>JXŒ>JA{>Iî¨>I+ž>I#®>G“5>A˜õ>B Ó>HàL>I¾>G}ä>G¥R>E#t>GÀÊ>H˜>H~â>H -©>Fu5>G¤>Gë>GÇH>G¢e>G€>G€™>Gcv>G!$>G¢>GÀ>F¦´>FEù>F3‘>AöH>:ü>?K€>EŽ,>E‰™>EÓí>E®z>E©>E¿>Eeò>E:$>E&0>Dùœ>AÞ>7àŽ>;˜Š>AÍ4>Aud>?’§>AÄ>@Xœ>B¼Ö>@ßR>BF]>C4¹>C4…>C p>B´’>B¼]>BE>;‘¾>8ã >@› ->?0á>A -Ú>Aùé>@Å`>A8ï>AÑò>A®#>?™½>=¤î>@ž>A9P>@í>@¾}>@LF>:Öñ>=zŸ>>ó >9m#>:·><°¤>:lì>;u>?x>>¼>9â1>6‹7>3l>:d¯>=–r>: n>=߬>=B2>;žŸ>=t>=½Ô>=Û>=ò¨>=>×>99`><E>9a;>6t#>8Ÿ¸><þ><ò4><ÕI><²=><½><#‡>;w…>;òì>;ÆA>; >:†9>:´>>;mŠ>;_Ý>;!†>:ðÁ>:Ü­>9¹Ô>:6>:—è>:ŠÜ>:i>:" >8mö>8y.>8^å>9¡C>9³>9‚Š>9nã>8‹Œ>7ë‡>8®G>9³>8é'>8Ïs>8K>6k­>7™\>8Q7>8-%>7Üë>7ײ>7³Ã>7ª˜>7¥]>7†">7K>5Œž>6{û>4û—>0{‘>4²>6J%>3êE>4¦É>2ç®>/>/ >4y=>4PF>/)>4‹>50F>0@J>/jI>4ä³>4R±>/Ùm>1°æ>43/>2»•>0ÌE>0Ð>/°¹>.T>#ðý>0ÜX>3«¨>/Ê>)÷w>.Ÿ)>09O>3#˜>31>2ô >2“¡>,ù0>.÷á>2²>2s>0¯\>1£µ>2>2Ø>1Ó‹>1¤v>1xã>1gù>1Ow>12^>1 >0ã€>0ãe>0Šk>0}>0``>0V ->,ë½>$(Æ>'p2>¬">&ªz>/L%>/ªS>/Ÿ>/OP>.5Û>,>+Û¦>)U£>,­b>)f>.>.¦>.ƒ¶>.cÌ>.5>*(_>+k>-èp>-ˆ(>*²y>,W±>-Æ>*Ý8>+¾#>,A9>"Ö>%¥¶>,ˆ`>, >$BÙ>'dÜ>,;x>*Áx>&®a>+G¤>+ç±>+·õ>*D>%Ü›>)§t>+k>+Vh>+6'>*jæ>$øN>!öå>!D‰>)9=>'æ> FÊ>¥¯>'B†>)ùº>*>)èú>)Ím>)°Ã>)‘>)~¢>)cï>)F×>)#¾>)`>(ô„>(Ô±>(¹B>( g>(~O>(Z>%-ö?Ž¿?ðÎ?~?oµ?M?ª‡?íì?^J?þ? e?«v?,? œv?åà?¡c?”? -cL?‘?BÁ?Ó?f¥?Çè?^±?+®? «r?6Ÿ?¸? Y»?£?"ì6?'{?%J»?ç>?a"?åã?í'?'g?!º??å‹?©»?ëØ?ŸÝ?\?tÿ?£?Ÿu?Ûº?9R?¯´?/Þ?%…?)e{?(a:?"¾×?ž¹?ª?ÿê?¡??̨?#í?<?Ý<>þ_Ê?ðß? Gö?ÅA? ›?˜R?ÕM? òÜ? œœ?ø?à>üÿ?OÑ?Üé?…\?Bœ?àF?Âd?7P?`·?ïú?ëŠ? ÷Ì? Õj? ¬€?!e ?"â@?#Ú‘?"ùI? Šç?pö?¼%?)á?«‹?–?>? - ?ÆÃ?¬¸? ^?B?„ü?¸©?t ?ª?ÿ¨?ƒ·?’±? ~0? +ý?¦?^?£Ô?!?¶5?J¦?ù?ÒÖ?ܹ?ÔØ?šU?d?$Vt?'äg?(6S?&Ò#?%î¨?%[…?"ús?¿?Ó?Tõ?>·??Ð\?íæ?6…?™?"÷…?%¯=?&²>?&q?#ûÉ?!<à?ZE?Ÿ ?+7?êA?gr?øŽ? «³?ÏM?e/?pÛ?ÄÆ?@?Ò1? -à0?ªc?X?Eb?]¥?» ?äs?€E?O÷? ~?!?%c?(\?*U?+`e?+g³?*¡õ?)cy?'@@?"›Ë?#Ò?ë¶?F>úœU>õ¾a>ø¿>þ|§?"j?â&? -é¨?–—?Ç?æî?FØ?“??¿?øŒ?þ?¡ ? -‹?3T?Ü®?6x? 2m? m?~?Q…? -œ?þÓ?äN?˜í?7å?˜=?Ú?Š?!µd?&MF?)c­?*Tö?)¨Ù?'W?!ºø?äÉ?ÑÔ? ‹?€5?”/? v?~Š?oæ?_É?ËÐ?`’?k„? tš?CD>ÿ)y>ø§>úœg?¸?‚ã? -ŽL? ÚD?•h?I9?új?µ2?A¶?2H?]\? cƒ? )?? -Á‹?.i?¿ù?¢²?›Ž?[À?±ê?!V? µ?Þ.?? -E„?†¨? Ð0?+£?j+?_$?Q½?ñ}?Öe?$'?25?ÏN?!Ÿz?">³?"?"S•?#p3?$ÉJ?&à?'! ?&Å¢?#¿c?&.?&º?ºV?Á?"©V?#ÝŸ?# ? Mp?˜÷?6Ú?(‰?cá? ¨6? A)?š?d˜?úM?¦G?N²?¡?+#?@7?þî?óY?×7?I?eæ?Ïd?hQ?jã?‚½?7D?¡É? -?ì?†¤?%uã?%=J? ·~?±,?ð‡?($? ¨J?^=?ò|?Õ"? ¼? '?Œ?žH? ¹"?'Ë`?*l?&}??n_? a\? -FÃ?“Ý?ƒ5??~?3ƒ?Ôü?$Ó¥?'õÊ?&lË?"øx?!ü‚?$?%@t?"·?€?êN?"?.?|?|L?#xã?(;Â?*>?*S`?)±¤?(tš?%p ? ™Ú?þê?LÚ?9Á? •?œw?õ?0V?Ì’?Eú?)ª?Œâ?9Û?Ž?½?¤J?*{?DÃ?ƒ¸?]Ö?"*?"ñ‚?$Ï?%fí?%_ ?#Í? î ?£? ? ï;? -“M? ñ?b?!$æ?'Ò?*£¨?*ÚÙ?(&¼?"`´?ïÐ?/ß? k\?&Ä?+‡˜?,c -?(0…?!&N?S?Öª?pÓ?‘K? Rz?—v?Ž,?¼?4y?íÎ?'g?"ex?)ª_?+›Î?+Lø?,?-ü$?.|ð?,ç?'î?%?¯?%WY?'Eú?(ê×?(7•?%«?"4? óŒ? ‰×?só? -?!¡a?&¥?+‘ ?.f ?.Ò?,„?'ݱ?#Ñ?"Œ?"ƒò?";?%k?GÃ?ìí?;e?¢k?ô¿?(t}?,‹„?,6ù?**?(lB?(&-?)Àí?+­¨?+Ú?+¾?+Ñå?/f?4ˆz?8¯?9°?7LÆ?5O±?6<?9Oè?;‚?;¡ü?:à?:5N?8ð[?7¬×?8¯\?<$—?? Õ?>³q?;E¿?6Ìu?3_?2a?3w%?4Ø}?5Í'?7l?8|õ?9Cª?8üD?9E…?<*-?@e??…P?<ùî?8§|?1ÔÏ?*ň?&—È?&Ip?(oö?+°à?/ s?0³ã?.Ž?)È=?%¸T?$vA?$¢û?#'h? f®?!S?(Ž?1Ž3?5?0}3?'íÉ?"œ}?#—?'¬Õ?+tÔ?.±í?15Ô?3ì?6²°?>‡?Eãy?IÛò?H„Ž?A¯"?4Ú?%8p?Úq?È?!n?(N¡?-*Ç?15Ø?5a™?9èq?>‹ç?A³ô?ANŒ?=I?7ó?1‡1?,Q£?)?)+P?,šª?0ü0?3«?2a’?0Eè?.° ?/¡3?40i?;Q>?Aù?EÏ?FH?Fp6?G«?Hî³?H1k?E¤7?C„Ø?B„?A?>Ô£?=(G?=:î?? Ë?@ù­?@ò;?>ZZ?:;Ù?7€?7Ï8?==´?C¡4?F{»?E$*?Bo??ÍF?;d]?4–A?.»²?,º¾?-åÓ?0Ïß?4Zð?6Ć?7*Š?5…â?1pS?+çm?(&D?)D?/¹{?8'„?=¬?>ð??)—?Af?D×?FšØ?EƒŒ?@Ô=?9òþ?6íB?=Ÿ«?Kø?We:?Z •?RÈB?Doy?3µÈ?&¸”?!¢Œ?$ìª?.¤Q?:?@“-?>Óù?6Pî?,$?'wr?.ZÍ??V?PƒH?] N?g~?q$??sà|?iõ¦?T”ª?:7½?#ÍX?Åd?#?9_?Q©©?bo½?f9!?b¡Â?c»¼?jÚ ?m¨?c€˜?P4K?7Å!?‡b? Ö? Ÿ?¥1?& û?ó °>ùœ ? - Õ?R?(—,?6;”?En?W`«?hyÓ?t9?{2(?Ѷ?‚—o?‡Ð6?Ž?’–?‘ê?¥è?”ɤ?šSÅ?œç^?œ6ô?™I÷?•‘@?”»?”†n?’ÅÇ?ø¸?‘è?˜Ïº?Ÿ®?¡†»?¡²—?¡×?ŸŒ¾?žnç?Ÿ?¢z×?¤· ?£“p?ÑÑ?“ö˜?Š{ó?‡â\?1?“ŠÞ?”ñë?©?…Ín?'»?„SM?ˆ@d?…»†?{ø?kX?[Ý?I?‚?3áG?ÐÕ? ZN>þãS>ý'¼? u>?":s?6oá?Dèê?Nì9?WK”?_݆?h=?m†÷?nÞ¦?p‹?xeŽ?‚ÔÚ?‡$ -?†G¬?ƒ…€?œ˜?€½„?‚ê¨?‰WN?ÿ,?–Íê?šª±?œ×1?›ÌN?–¼§?‘«?%f?`H?Ž7?‹ñ=?ŠIC?ŠK?‹›H?ŽâJ?’¼á?•£?–«?”Q?Žœ˜?†þ?|ï´?gre?Lo§?,ÉÖ? -…>Ñÿ>šÔà>|K>‡«Ì>¶¥ô>ü€U?#-m?…Ú2?~%?y ì?ý?‚Ë¥? ?s#Ÿ?`¼?Qjž?C¹G?2Q&?ñƒ>÷yq>ºÛN>ŽÓ’>/(>”y!>¿o<>ón?LC?%–…?8Ï?H|S?UPµ?`ýŸ?nžþ?|»ª?ƒ#Y?ƒä¶?‚E?õy?„?Þ?‡mù?‰˜Û?‹À?ìù?‘©X?“óÕ?•Ak?˜?œs%?Ÿç? .v?œøÙ?—Uõ?‘Ä?H³?Žé?•4ª?œ+^?  ¦? Å”?ŸQ#?ššû?“Á?!³?“žz?œ–r?£?¤é‰?¤êk?¤Ù?£žÅ?¢¹%?¢¶¾?£ƒ?¤te?¤|Y?¥É5?ªk%?¯‰ ?°”f?­/n?¨ ¡?£!?Ÿ‡¡? Ä×?¦üÑ?¬»?ªÞ×?¤ ?šà³?“r!?Šå?‘¯p?•©?šß.? ï±?§œŒ?­«î?°¦¦?¯nü?«“¾?¨È?©6Ž?©d?¤E“?›y(?—I?œÃ1?¦-E?«OÔ?«ò½?ªâÀ?§ê–?¢ÆÝ?Ù?˜Î¾?—×ç?™Ì?™v}?™uD?œ¨¥?¢Ð?¦?£³m?›þÄ?–+?–ù‡?šçY?›“/?š—?œ -Å? c9? Š¶?›tª?—|À?˜­Ó?›L!?™ÙL?’¿ø?ˆª!?½™?‚Ö`?ŠS0?’÷…?˜a?˜" -?“CG?“u?Š{Ð?‹‰?Ž?ßí?‘Éá?@?¶¥?Š>?†×?ƒª¥?:c?sÈf?fgö?X[0?HîÇ?6¤I? Kž? ÿµ>ÿ‰Ó? ÄË?!Ó(?;€ì?Ot"?\Š·?dò'?k8?pÿ)?wÊ'?€È?„Á?ˆõ|??’b ?•ã;?•z¦?‘då?ŽO?Ž”º?=/?{?øÃ?“ˆâ?–a¶?–·Õ?“õ?"?Ž½?î5?’žæ?á³?Ž’à?ã`?• µ?›Š? †&?£K¸?¦r—?ªÍF?­†Ä?«þq?¥˜?œ£>?—þI?›a«?¡íµ?¥bæ?¥ð?£Y?¡N?¡|á?¢”ÿ?¡Þ~?ž U?™„?–‘l?–Î?˜†Ê?›š!?Ÿñ? °å? ….?¡u«?¤Çv?¨Ý?«â?ªéd?§ÈË?¥¡u?¦ýº?§(“? c?”|ï?‹0¹?‰Ô7?J?•' ?—^?”Š -?’ŸJ?•ø?œ~U?Ÿ4€?œµ?š&¬?šÍŠ?ë¶?Ÿpt?œÂ~?šÓÌ?žj?£²Ë?¥ðX?§©ß?¬¯?¯Oç?¬]!?¥¹£?Ÿí\?šX|?•ªŠ?–™Ñ?›Ø?œ^[?›‰»?œ-é?”•?Ÿ%Ë?¡ÑW?¤„û?¥\f?¤±?¥7?§Ì©?«|ˆ?¬ÑÑ?©=•?¡|–?›×o?V¸?¢(è?¤²,?¥T?¦dl?¦Îs?¤sV?žx?•8?‹9{?‡£?Çß?œGœ?¨ÊÙ?­ÉÚ?ª¬W?¡ži?™Š°?—¿U?™Ž?›©?œèH?›è?šî?•?¢þ?¤†%?¥[•?¥? ô+?™×¡?•Æa?˜:V?›Ð?›ž²?›Ê^?Ÿˆs?¢¯œ?£õ?£Ô,?¦Mõ?¦°?¢ÕW?œâ?—ÓD?—€?œƒ;?¤oT?ª ô?¬BÚ?¬«?©¿ -?¥ÄÙ?¡É=?úH?˜ ¹?“é5?”0õ?—f?™äá?D?¢d†?¦uÙ?¨09?¨Pß?¦p?¡Å‡?œtå?š¾4?œ×9?žÑ„?¹?˜{E?­ç?‡zU?‡k?‘-Z?›Ue?s?š>4?˜[›?˜2Ï?•ó•?ŽÏ#?…B-?±c?,:?°Q?‡à?ŽE¹?‘}?;†? V?ŠüM?†–?”žè?š:l?˜>ö?¢>?ˆÒ?ˆ€M?ù_?–”?˜ž?•Ç[?’p?NÏ?’§?”W?Žu¤?„«5?é?ƒÄæ?‰ÕÐ?‹+Ÿ?‡cz?ƒ?è?p?ÝG?y ”?n¬ó?\, ?B›t?'ö?SŠ>ÿ+D>ÿ7q?Ž¶?+;R??Ø«?R‹Ò?e¬?t‡â?µk?‚Œ…?€ª?vë?s*¾?~`ã?‡é¸?Žév?“ËÆ?•óQ?• s?”Rþ?–ò?›n­?Ÿv?¡¿é?¤,°?¤ñG?¢WV?œê'?˜0£?—?™MÞ?Bñ?ŸŸS?œ?“Ò‡?:F?–Í¢?¡[°?§²x?¨Ôe?¨>ã?¦VÊ?ŸEû?“+l?Š!?Š¿'?’ -(?˜ôd?œëÏ?žÐù?ŸoR? €â?¡´?žwü?—{.?”ÇÙ?šˆ?  -Ó?žÓ5?—ÙÜ?’ܶ?•±H?œÎ7? 7É?Ÿ³?¡´?£I½?¡·?ž¬•?žæˆ?¡¶ö?¤¾b?¦.S?¢Šy?™ƒã?‘”#?or?’Å?šóF?£Ò‰?¦Þ -?£Ûi? ð]?¡¿?£y÷?£jˆ?¢ÜË?£ðÄ?¥nß?¤_=?¢a? ¯$?ž“??šwä?—Ð?›d?¤ Q?«i¢?­’Š?©Û}? ø›?–?3™?’t?œÿ?£œ­?¥Bý?¤¿-?£2q? µë? ž -?¡Ë'?žì?•¤Í?‘#N?“÷?—Â?˜ÝÊ?™8q?™ â?˜¢¤?š§|?• ?žˆª?ž ì?œ'Ü?—Èß?“Ýi?•g?›A\?¢)Ž?§5?©ü4?©þ&?¨·ˆ?¨Ç;?§ÿð?¡®Å?•ÈÂ?ŒN¬?Žvö?™¬L?¤Ž?©¬?ª¯A?¦a˜?žÈ2?™ÐÀ?šƒÝ?žóQ?£P5?¤2Ë?£¬?£º>?¦'}?¨êd?ª,¶?§Üô?£ç¸?¤Dÿ?ª8?°.†?²h4?°úN?¬ª€?¨˜Ú?©#]?­E?¯­›?¯!?¬??§£á?¤tc?¤ö?¥uz?¥/?¤&Ï?£u*?¢8?? ‚r? ô?Ÿá#?žMK?œõ?™7#?–îˆ?—ÔM?š©É?šÅp?•×f?‘9‹?”I¨?½v?¦p?©¨)?§è˜?¤‰}?£?¤CÃ?¥Z?£ÀÄ?¢ƒÍ?¡HA?œ{«?”-¼?%q?•T–?œ(©?œC8?–ÆX?’UL?“ô®?™¯Z?ž/Á?¡º.?¦¦?¨Zü?¥‚Z?ŸP©?›¤)?®¦?¢üÎ?§¬Ñ?©®{?¨}À?£öÅ?ŸÇõ?¡H´?¥åG?§tI?¦?¥W?¤( -?¡&Î?e?™*?•>g?’œá?”¨/?™ò¡?Âê?ž–E?ž ?“*?œ”ö?›¤>?9? Ô4?¢õa?£*©?£5z?£B?¢_¿? Ù? vV?¡f5?¢-?£Fb?¤;?¥»ª?§OØ?¨rÜ?¨RB?¦òA?¥ÛÀ?¥·c?¥­?¤\Û?¡™¬?žæ?œÇÖ?œWº?Ÿ'‹?£§|?¦âŒ?§bö?¥ñŸ?¤Ð›?¤zB?¢šK?Ÿ­Í? ¹?£`/?¤_?¡"þ?žjn?žØ?ŸÚÐ? µ™?¡û¬?£á•?¥pÎ?¥øH?¥ Œ?£7c? ???œ-E?˜Ð‰?˜ÆI?œuê? ·‡?¢Ë€?£ã?¡ºo?žÚA?œPÈ?œ?Ÿ–º?¤ŠD?¦à#?¥Ú>?£9ª? ¯ª?žk?š&§?“„;?m%?ö_?•5ï?™j:?œÌ?Ÿ$£?¡uö?£ÅŒ?¤=Ì?¡¨W?ßn?œ…?¾"?ŸÆ? :'?¡5#?¡§-?¢›?¢u?¢b¢?¡¬D? *?žº€?ž?žŠ7?ž±?žn¦?Ÿ Ü?ŸS?šó»?™‰Á?—üR?”‘Ú?’~ú?”ˆi?—¢A?—‘­?”à]?“uØ?•yì?™}?œuú?œžÍ?šØô?™ú?›|P?…’?ž€Á?Ÿ ?Ÿhœ?Ÿ9ñ?Ÿ”?Ÿƒ£?Ÿ“,?¿H?š7L?—‰?• g?”­Ì?”s}?–*?˜‰÷?™p·?˜?–P”?—¬?™ -Ê?š??šA-?šÅË?›Av?šÜ\?š¯?›7Œ?›… ?›À?›R?š[l?˜*?•?’É.?’AÇ?“¡¤?–²½?™¿%?šsI?—]ÿ?ì´?‹+Å?‰¼L?‹©ž?Ž«?’Wå?•ÆY?–Q±?“Ø‹?’¾?•¥y?šB?›ä?œØö?ž'Û?”6?›!Ó?™U?˜‹ñ?—’¶?—>Ñ?—°L?—€&?—¿?–™‚?–zÁ?˜ R?š˜N?œ¾?žf?Ÿcq?žo¬?›Ü·?˜¦ÿ?–O?–U€?—±[?˜¡B?—¹º?•]Ç?“ï_?•>A?—áï?™òn?šŽ­?šhí?šÎ/?›´ô?œ\?œƒ”?œ`…?œVv?œÎp??›ö¥J? #õ?#ˆ4?:¯?L2?Z¨»?f@Ì?i‰¯?eÀy?eG?mŽ?wØD?}D -?~I¿?©Æ?‚Ð?ˆ ?‹fò?Š‘÷?ˆ?…Òœ?„'?„÷ ?‡‚?‰2V?‡ ¡?ƒãN?†{?ŽM¹?”ßÞ?—Êú?˜a]?—‰˜?”²‘?‘á½?’D–?”<?“bð?’é?”<ì?–×?–c)?’½’?ý¸?Œ@a?G?’Èø?•k?–:à?“Àö?Ž?‡=t?…MÃ?‡Ö%?‰Dv?†½O?‡Ô€?3‹?– ›?˜¢ß?˜n -?—[í?”¨?´?‹¯è?ŒKÈ?ŽÒø?Ž¶•?Œƒ„?ŒÛH?‘Ãó?–ÞÄ?™/f?™Y"?˜6?–ñ?–ͧ?˜­?™·?™J=?—7å?•t?•Œ@?”?•?Iå?Œ ?È‘?˜BM?›~?šÖÙ?š¼?™Âý?–7Ë?’Îé?’Bú?“ªr?”3b?”?°?•[ü?–ÖW?˜p¢?™]©?˜Ø?•ðý?’<$?Æ™?‡³g?¹S?€±?…„B?ŒÃÃ?’M)?“ðñ?’Á?f?Žd?Ž!R?mW?’ q?”nI?“o»?F‹?‹’U?‡öÈ?ˆN™?ŠRä?ˆ_s?„ƒ0?†„ç?ÄÜ?’ó?£?‹B?…‚Ã?ƒX¸?…›?…Ž„?é ?vr–?}¸ç?…y\?ˆöØ?Šü3?}@?ö§?Šù ?ˆð­?Š ï?ŠÕ7?‹Yy?ŽÊï?[Õ?Œª*?‰Ý?ˆâ“?ˆm|?„ÝÞ?-ô?}|?†®?C™?”¹h?• ç?pº?Š;±?†)‚?„o??…ç¼?‹2ˆ?º ?’?‘5V?“¥º?•$«?”Ã?”%?’i¼?ŽÅ ?‹ãø?Œ»?¼N?$?j ?ùÐ?‹5®?ˆz?ˆøI?Š\ä?ŒOŽ?Œ,?†ï³?ç?‚P¡?†DÆ?‰›Ó?Œc½?Ž"Ø?þR?ŽK%?mÙ?"©?ŽÃê?®}?·ê?ªŒ?ŠûW?…›S?ƒJø?†.q?ŒCÄ?B¢?ë?%å?Žt$?‹ž&?Šå?Š-Ê?‹j?ŽÁ?­}?‘ºâ?‘N?‘]ƒ?’„”?’äô?ëó?¬}?Šÿ?ˆÀ\?ˆ%ô?‰Ñ?‹5Ž?‰\å?†Ã‚?‡Ž?†µõ?„÷G?†z?ˆ¯Û?†Þ?„É?‚õÁ?ƒûí?…Ò÷?†¤?‡!6?‰ê?Š¦Ä?‰ðO?Š8?Šãj?ŠR? ?…Ž€?ˆóv?Š$â?‰.{?†œ?¶ƒ?€Gj?‚^Û?„ò½?ˆ~ú?Š I?Š)?‡™Ÿ?…\R?…cµ?…͹?…1?…»?„7?€'„?YS?…?…O?ƒ_p?~zl?u|ÿ?uK?|°M?€?|Jê?|0 -?S|?ƒ ñ?à?‚ü?…ž?‡¤.?‡ É?…é?„R_?x4?zôÏ?€Áµ?„4 ?‚×î?€‘#?Üh?ê”?~~?|¾†?H?…)?‡þÄ?Š'ÿ?‹œ?‹¶_?ˆë7?„? Ã?ÿ¼?„Š›?‰Û?‹“©?‹0?‡›?–´?€i?…=O?ˆÉ:?‡bÇ?ƒ2-?|¬Á?x©?}h¨?“'?ƒ2ž?ƒÛ­?„Þ?„ 8?‚ÏÂ?€yu?z2Ì?qÇ ?rA?|^è?wx?‚AÏ?„ü?†+?†s(?„ø×?ƒ®?4?t?Cõ?½è?¡¢?c}?ô?ƒ6r?„‹M?…ˆŸ?…ò©?…Âã?…B??„`?ƒo¼?›¶?{2“?r¨W?o=•?vJc?€ý+?ƒè?€’“?{&?{–§?€{?‚†?hE3?gôþ?j(?j\9?hjö?e?c×?c±L?c²_?bñ•?`Ü?any?b -?`'„?`¤˜?c(¹?c?a¬_?cH#?et¦?g@_?h ?gè?fy”?fEŽ?f¿Í?hÕ?gp¬?e…ñ?c&w?`cé?_¢v?`À?a•?aí2?`Fú?\°H?[ʧ?^©?_-S?_Î?^mR?]ùB?`Ôp?cA?a¯P?^šÈ?^L?_HO?]²³?[å³?\¯Ô?\?Yì¥?Wuþ?XRY?[&€?[Œ?[÷?[xI?\1?[–¥?XÔ?Wäê?XTð?X€Á?Zz ?[x¢?ZL°?Z8?]ŒO?_þa?`˜ ?`kõ?`?`0$?_Á¦?^s?\ÖB?]/?\—Ò?\Ó?]s…?^·?^v?\‰Z?Z”ù?Yôº?ZG?\Y¶?^_î?^ìñ?^¼Ô?]·?ZÃU?Y)Ú?[¨œ?^^ñ?_2?_?^ãz?^Û·?^)ï?[>?X°?Yø -?\8e?[Ä?Z&?Yø¡?[Uë?\[?[ŠÆ?[b?[œ ?\×?]fô?]¸ª?]GÓ?[Íø?VȤ?PW?QB?X:?\4ƒ?\°7?\ˆT?\Uç?[¼L?[ã?Z~Þ?ZM?[?[Ú -?WÎÆ?R;S?S:q?WÆE?YÖõ?YÒ‹?YX÷?Y7y?Yçò?ZþŠ?X%?P§ý?K£»?O˜Ø?Q/Ö?Nn?QÒ?V¦Œ?VÝ6?RÁ¯?Pzr?SªÓ?WÔç?X7ã?TÌ?Qe?Q ?Rä÷?Q„K?JíÛ?Ji?Qé?U'‚?Të¿?Pl ?N15?R¸?Uþ?U¶@?Tñý?UÓÿ?WSŽ?X"E?Y{=?Zd ?Z*??Y€¡?XÍ?XGÀ?UG˜?Qqv?S -ƒ?V©?Xc?Y.?XEJ?W@Û?W¹“?XqÃ?XL?Xö-?X¤$?X=?XÛI?Wàå?U¥?SÓñ?S؈?Tß²?T’.?Sç?Tûg?V[?V0«?VG?U˜K?R©;?M¾C?L(Z?O}Ö?S -W?RÚÆ?Mè=?Jd ?MU?Q‰÷?Qz?KÌÖ?E¬€?D#?J?P¼?NÛï?JŦ?J>»?Lu^?Nx?OÔa?Q?QÁ?Qî4?Pð­?Pð?R ¹?Q¹;?P£Ì?Pâò?Pá"?L ?A/s?;Æ°?>‰¯?Bð¨?Hº?LuI?O’?OR?Mv†?JØ?I -)?Hé?Jÿ?K/"?Kj¼?I=¼?Gp,?DÛ?Cµa?H5?J„e?L‚b?M$`?K’ù?L -8?L[Ú?J@‰?H1?FX?DIg?FÀ?J9=?K 4?L¶K?Nt>?N?MÝö?Mˆ?L0 -?Lh§?K ü?G»½?FÕí?I/?K›O?Lo?KZY?I-?Dj=?B–?GÄ3?M¾?N˜f?Mó??M -¦?Ms?Lòé?KT?IÇN?IBV?J4ì?L(‰?M?LˆT?I±??E³Ü?Föä?L¦?N|è?N±õ?Mò‘?M·?LØ?M+,?LÁ*?Mú?NËX?P.ò?OÛ?Mý©?JT+?I;?L0Ý?M\t?Ito?EÄê?H-–?LA„?MY?Jx,?GjÁ?H"L?HÄ…?G÷;?I76?H?F¾?G=y?GKÝ?FRû?Hȇ?Lzö?MaB?MNQ?MÝ?JRg?EîÙ?D´×?Gï§?K-¿?I.Q?Ci?C–•?ID?K”µ?Lø?LG?Jçó?GÂ=?FÓj?I­É?IG?Aml?9´d?>‘?Fï¡?FC?@ìw?C5?HÎÀ?IÅ·?HY ?FðÄ?DâM?DXþ?Dý?F~2?Hº1?H®?G¿ˆ?E+ù?D)A?F£`?HI£?HÂ?Fæ?B?=J?6â?2Âä?4øÙ?<ëþ?C‘î?FÙ”?H^Ø?Hé?I?H‰?HWœ?H#?G2Î?DB?>°+?;è?=Ùî?Bmä?Dö?Dô½?D˃?D¸®?C̦?Cž -?CåŸ?Bê»?Aâr?A]±?A ¤?@óƒ?@Ll?>æ5?=?;Tp?9%:?5zh?4Ì?4èÁ?2ò?.ä!?*í'?%Œ¦?EY?ê¾?Âu>ßÒf>¾¥É>Ø{¨?u\?(?@?#Eå?(œ5?,1´?/T?3iD?6aÕ?7Ð?8Ù¯?:â?:Ë‘?:1ë?9;$?:Öš?<õ¦?;=™?8ú’?;Lõ?>q]??T?@ /?AKµ?@õ¶??Z¾?>·Ç??Ãp?@’?@þj?A}×?AõÛ?BXŠ?B]ó?B=Ö?B{™?Bä¾?Böý?BÉô?B‡µ?A©0?A~B?Bæ?A1Ë?>âÉ?=o­?>žé?@ŸŠ?AyŒ?AÅ?@Ú?? ??N]?@LH?Aq,?Aƒø?@ÕÅ?@qÂ??Ç€??ý??"Ó??da?>Ü&?=in?;ÿj?<Ç—?>K?>ƒ´?>=&?=ù9?>5ç?> ÷?<½Ð?8è«?6·é?95?<2R?<ø›?<·p?<“ú?<.d?< ´?<'‡?;»¤?;æ?:Yf?9Ä—?:I9?:b'?9‹?8ha?7Æß?84è?8Ä?9&”?8÷?8Ji?7[¾?5|;?2¸ý?2àM?4¾’?5£?6=?6l_?5ó?3W¤?4ÍO?6Dà?6 w?5²Ù?5œº?5A§?58?4¿?3¿ë?2ò"?3LŠ?3©?1 ?0Z?2Ê?3´á?3¹Ã?23R?1Es?2À?4ŠB?5k‡?5“”?4üà?4ï?4)þ?5>ã?5‹?5£?6jå?6Ö„?7>?7À³?7o?6ã—?6ú¸?7¯Ç?8;T?8<µ?7:?6nÖ?5ÓÎ?4ß}?3ûz?3zJ?3<Å?3ö’?4S ?3Ù?3¬0?4À?3ö’?3°ø?4M?4z?4B?4C?3¢R?2àÿ?3?l?4ñ?3Úß?2hz?0PÆ?0ñº?2Ë…?34ñ?3º?2Ö?2qå?1ØÜ?0+Í?.¬Ý?/1Ä?0å2?1´1?1•?1r»?15u?0iÐ?.É?-'º?.;w?.ÔL?.¾¤?/wº?0`Å?0œ_?0|L?0hŒ?0U?0A?0AS?0*\?0±?0$µ?/µ©?.³§?.u—?.êu?.‹?.dÝ?/Gò?/¼"?/¹½?/Ÿl?/…Š?/i¼?/Wó?/X%?/1ÿ?.ñ–?.bZ?.7ó?.¨7?.{X?-¼±?-)Î?,{o?,¡?-í?-Ø?,å4?-C^?,×É?-0?-µ?-Ü?-§#?-aŠ?-^@?-»?-½µ?-e?+ ?+«Ä?+¸ÿ?+g„?+Qº?*û?)Tœ?'4?&o²?(-/?)å`?*Ô¼?*§ž?*1„?*Xý?*›ë?*Ú?)•¨?)Õ?)œ;?(5w?'^Ä?'[`?%÷?$j|?%eL?'±=?(dÉ?'~Ý?'jš?'gÊ?%¡ó?&Ô?("\?( q?&÷†?'ºˆ?) a?(àm?)O´?*A_?*_?(0?' -a?'Z›?'bJ?'Í|?'°B?'ƒ~?(œÃ?)å?(yC?(KÃ?(W?(¬?((?(ªÔ?(¶Á?&Ù~?&«?&eX?&|A?%Òv?%µÜ?&v#?&ª2?' ;?'¸Ø?'ï£?( -?(W5?'¥÷?%˜?$º9?%Ê:?&/Ü?&ç?%¨`?&8u?&ÞÍ?&‰?&-H?&­Ï?'Æ?'Óà?($?'¸ñ?&Â$?& A?%7?#¹?"cç?"d?#‚?$w­?$fG?#GÚ?$¨Ñ?'?'8?&Ú·?$Ï?$? ›ý? ¬~? Þä? /ª? ©t?)’? VF? -× ? ‡? \?0[? µÊ? jØ? ÿŸ? \? S=? RP? ï? “Ø? Œ? Sÿ? -Ù? -ò¤? Ë? -¹? ‰+?NÆ? o? +? _ã? ? Öš? Ux? ‘ê? ¸‚? äc? 4.? (†? -½? f³? Nº? Œp? -ô? -—Ý? ¼m? é%? Ù? ÛÂ? s? @\? K~? b? 9À? ~? yg? 4? ™ø? Î? #n? É? K¦?‹?U‡?jÒ? @>? ׿? Ñ ? Ŭ? °A? œ$? zi? [§? P? #h?¦^?´?ïþ?âî?Ò¡?ȶ?ª¯?¼?wp?G#?6¨?Pû?Ã/?¶Ÿ?Ê·?JÕ?J?×?¿?Š? }?öl?£t?*4?Ù?„Å?%? Ö?û”?¤?4u?-?QÐ?ª??b?°?;*?=õo>éÓC>çÑ]>ó„™>ûò?>ý;P?sX?[3?ÚM?ê†?}‹?0?ÚŸ?Ž?¶ö?zš?/—?­0?8±?Qå?0"?÷™??è2?°þ? ‡£? ¤V? ïŸ? ®Ä?´t? š?I?m(?No?qÔ?bà?qŒ?·Ï?͸?Ñ?ž‘?ùõ?3? -/?É?¸™?¹Å?7>ý²=>ûe‰>öÖ»>ô%†>ñLŸ>î;>î¥9>ñ3è>õ+>ó²°>îù>óÃ? ?jÛ?kT?*þ?2ý>ý‰1>ÿZ9?rû>ýÜ>ô¶î>ö ¬>üßæ>þ92>ý„³>ý·È>ýk}>û˜K>ùy8>óõŸ>òHè>õÛ[>ô|æ>ôº=>óÛt>î&>ëª×>ë+«>ç‰G>âÑe>݆d>ÜÎ >Úš‘>Ù2H>ÝXA>ßß©>Ýâ >Ü->ßaþ>ã`X>æ,‹>èÔ>ë¹>ð½>ö{Ç>ø?>÷³R>ôHû>ô>ök¼>ö.c>ö>o>òY×>ó>ùÎÚ>üh>ûõ>þ¼N>ÿ•F>ÿüÏ?‘¡?¿ê>üí>ôc2>îww>íÖ>ô¦ >úu†>ÿ–??q?F>þåé>÷a>î`">î>õÐî>ùW²>÷Çb>øÝ>ü ¨>úlç>úwù>ø1>÷©Ë>úÔŠ>÷k{>ó†ò>öä>ücÎ>üäò>ù(5>õ ¨>òÇa>ð>ïö‹>÷èf>ùùÚ>õo>ñÓ5>îêt>íe>ë”}>횣>ïõ>ó$ ->óNð>õW”>øx>÷¯,>ök:>õUh>ô%Ô>ó{{>òþ“>ôB]>ñi…>íc2>î|¡>ñŽè>ñŠ¯>ïy>ðð´>ò´Y>òÐE>ò¬>ò>òaÔ>òQÅ>òMw>ò&ý>òu>ò+>ò+>ò@>ò >ñà[>ñÑð>ñÐ$>ñ¶¤>ñ£B>ñ§;>ñqA>ðíÇ>ð×É>ðîÐ>ðô×>ðßh>ð9>ï‚o>ïñö>ð2>ðEÑ>ð$>ïp<>íë¶>>ï}É>ïcÜ>ïÆ>îîœ>îÜi>îì¹>î°Ñ>íí>ìˆZ>äì¨>ä¸M>ê‰>ìî>í[/>ì&]>ãà>à°W>èV±>è -½>æÁû>é>p>ëš”>êP>éíÌ>êê>é[_>èÆ3>èÃÖ>çñ>âB²>æ¾>ê×>ëþH>ëYF>æÁÃ>äF¤>çžG>é¡3>êÆn>êj>ꢴ>êÄÒ>êàê>æè¤>áI>æ“í>êk/>é!*>é¼">ê¹J>ê´>ê4Q>é5I>é]Œ>éÒ?>é‚ >éAa>éš>èž”>èu>é5>é­`>ê>éd@>èd>èC‚>è¼ò>æýö>æ®Æ>èRl>è¤ ->èÜŽ>ç‚Å>åÙî>äuµ>äSç>ä Ò>ãÖ">æÍ>æJ>å‹>囋>åÀE>å4>áƒx>Ýêí>àå—>á:>ÛYi>Õ^>Ú$Ô>á0+>ã|Ì>äIö>â|Ô>àOø>âûN>æ½ >æéÎ>åÏ >å4F>äd>äq…>ã÷W>å)ó>äÍú>äÙ>ä³(>äZª>ãÇ>áÿu>â?>ãö5>äø>äÖ>â×s>ÞEP>ÜüÑ>á+%>á…¦>áåI>ã±6>ä϶>ä“>âû>àÑ5>àãŸ>ß·î>à,‹>à6>ßnœ>à%+>áGî>⻜>ãŒ3>㟛>ä>äpæ>ä=¤>ãùÚ>á³Ï>Þ£>Ýh>Ýk>Þvš>Þ`Î>Óò]>˵P>Ø£>ášè>ãQ<>ãËà>ã!¼>áÏ…>ßø¬>ÞËû>Ü«C>Øú>ÕG>Ùuú>ÞÌI>áÑÎ>âÏC>ã«/>ä’B>å‡>äÒ>ä].>ä - ->âi >àëê>Ý.V>ÎQ‰>²¡ï>¶=Ä>ÉHÔ>Ð_U>Öâ>Úpò>Ûœ‡>Û{>ÙÃ>ÙvÙ>ݦÏ>à“N>â2M>ᙤ>ß T>Þ"€>ÞÕë>ß<>Üð+>פ«>Îñ >½÷*>™ø?>††ç>¢ò>½çþ>Ë3>ÒrP>ÖÌD>×Ë>Ög>Ù^>Ýç°>à O>áBÎ>á >á:•>àÜg>àT¼>à„i>ßëó>ßoÅ>Ýü>Ûõ>Ù71>×.Ÿ>ØŸ4>×qó>Ó,w>θ>ǹ‘>ÂÄý>Å®^>̨A>ÒG>ÕÇ>Ø4>Ø Ñ>×½´>ÙY×>Ú3é>Û²‰>ÝiB>Ý>ÝÃ>Þ‚o>Þ:Ö>Ý[—>Ýda>Ý©>ÝÕ—>ÞSS>Þ:>ÝæH>ݧ~>ÚüT>Ô®P>ÒÂ&>Õì%>Ô‘i>Ïÿû>È+ø>³(}>Hq>Ü>¦º|>·°I>À¦6>ÆÄK>Ë¥F>Ï\(>Ñü>Í ½>ΚÅ>ÓÊþ>Ô|¯>Ð>ЧK>×Èj>Ö -ç>ÕŒµ>Ú=p>Úu<>Úzæ>ÚHÄ>Û’>Ühz>ÙŽ>Ö_–>Ø >Ú\Ä>ØCî>Øi>ÛLR>Ûc>Ù*>Óë´>Óf”>Õô­>ÓaŽ>͈¶>ÌéH>β>ÉÎÌ>ÆÒà>ÃÄ¢>ºãœ>¯OŽ>¬à >·º>Á—F>Ç$Ø>̈>Ï>>΄>Ђh>Ô^{>ÕÌÐ>Óóù>Ò†4>Ö_µ>Øò>Øîë>Ùgk>ÙÅù>Ú–>Øד>ÔŸ‰>Ò¥q>Õ>Ùa]>ÛZ%>Û|>ÙòÜ>Õ!ñ>Êà>Ìjß>Õüª>ØêI>ØÈ>×åÙ>×6>Ö©:>Òà>ÎtW>ÒK9>ÔÔÑ>Ôe>Ódh>Òî>ÏÐþ>Í£v>Ï>>Ï>Ì®7>Êo§>Éù$>ÈÖ>Æ¡%>Ã̺>¿ß>º„~>²^:>®6F>²Þ¦>¸5Á>¿– >Ãý>Ãm”>Äk’>Æø–>Èî>Çà8>ÇÀÑ>ÉÏÓ>ËO>˦a>ÉÈï>É׳>Ëá>Ë~>˃>ËùÚ>Ì*o>Ì6®>ËÄ4>Èùû>Äd®>É–>ËôK>Êï0>Éxî>És…>Çép>µn>ž0>ÉI>Ë&è>Ë5Õ>ËYŠ>ËI¹>Êê:>ÉNC>ÆÎ[>Ç«Œ>È(8>É—€>ÊPÓ>Ê6R>Êj>ÉàŠ>É£Q>ÉØ>Çå>Æ0o>Ç>È ¡>Ç>ÅHº>ÅÏÒ>Æ—ï>Æ×û>ÅÙ’>Å”è>Åv >ÄLj>Ä7Ñ>Ãwë>ÁµC>½3þ>½Eà>¿zÓ>½ê>¹ù‰>´û>±£R>¬çi>ªÅµ>°{†>µbÌ>·4,>ºEd>¼ù(>¾¥=>¿ >Àn2>À²ç>À r>ÁB>ÂNS>ÂÃ…>ÂÞ>Ã<>Ã?>ÂH#>·—>ã™>Ã^]>¿ÃÉ>±Wn>´jœ>ÁÙY>ÃÌþ>Ã…Þ>Èa>Ão>Á<>¸ø3>» t>Âa…>Ã=P>¿€ž>³öè>º<þ>½±ø>²‚œ>ºj„>Àý>Á3È>Á‚ñ>Á>ÁSw>¿…¶>µüÓ>ºßª>Á$Ú>¿žå>¿~<>ÁD>Á5(>Àñk>Á -ª>ÀÜH>Àú>Áõ>ÀÃi>ÀÕ6>ÀÈ>À¬ >¿U6>½€Ÿ>¿ Ñ>À">¿È+>¿Š>¿£‡>¿š®>¿ ¤>¾á>¾`ð>¾Ðê>¾d²>½‚U>¼Ê¯>¼È¼>¼öM>¼šg>»²·>¼}H>¼~->¼a´>¼ «>»Å®>»P>ºb3>¹d†>¹7„>¸fB>·ÐÙ>µdI>±ŒÖ>ª‹…>®ì¢>®©Î>«á±>­ut>ª`š>¤ÿ>˜’$>—†/> ù°>§mT>§ëK>§—Õ>¯)>°k>®˜¼>±p²>´xb>´ñ¼>²sœ>¬žQ>®œÌ>±ºÌ>±3#>±àó>²W»>¶$>¸2E>¸Hs>¸^Ð>¸~{>¸y]>¸Ï>¸w¾>¸hÖ>¸Oð>·ù>·;á>·œ×>·›>¸[>¸G]>¸=q>·ýO>·ñR>·¦’>·hd>·Ä>>·Ô>µÙ_>µvö>·Wz>·V[>·L$>·g¬>·v=>·D½>¶êA>·%k>·- ->¶ùh>¶]b>¶gÈ>¶‚ª>´‹‰>´…A>µÒE>µßõ>µo >´Ýï>´û7>µ¶a>µöc>µØp>µ>³Üd>µf>µS>´ç >´íù>´×#>³ïL>³{ù>´—>²—ž>³ö>´Cç>³nß>±C>®Šÿ>£º‚>«±½>±[b>ªm1> (F>«Å¢>²a´>°^>¯Çß>²­X>²‰ë>°Ö’>¯‹o>¯¢=>®·2>ª=×>®%>¯Õ_>®.Ú>¯’Ò>±S>±<5>°L/>°P#>°Ù>°×‹>¯íÑ>¯“Î>° R>°]á>°?>¯øq>¯ÉM>¯Þð>¯¶w>¯lž>¯1…>®úÿ>®Ý¸>® >®GÃ>­Ù¢>­ª<>­”B>­9(>«úÈ>ª‘+>«Áè>«òÅ>«ab>ªëî>ª›Ø>©¿·>©">¨›H>§~>¦U½>¤·Ì>£³©>¡Éª>Ÿ¼a>œã‰>˜[&>”<>†&Ø>ˆ >’2l>˜Â>œØ¼>ŸeC>¡i•>¢ÑÅ>£Èk>¤ã@>¥„Z>¤R>¥MO>¦OÆ>§!I>¨¡>¨j>¨‘$>¨y„>¨¤ë>©ˆ>¨·U>¨%±>¨â6>¨ý´>§øv>¢§I>¤c£>§ >¨¡„>©J¯>©TÙ>©M>§Ó°> xã>£¨>§5l>¥’.>¨v>§q«>¥µd>§“>§u«>§ûì>¨¡«>¨qÌ>§ö>¤Ç¡>¥]t>¦8²>¥_^>œ±>¡ÏÂ>§]ç>§lë>§¢g>§GR>¥|š>¥uè>¥º,>¥”R>¤ :>¥H>¦t“>¥ÌQ>¤sõ>¤0§>¤›>¥ÀW>¥å>¦]>¥À\>¥½¦>¥Ü>¦5>¥ñ¢>¥üW>¥ë>¥Ç>¥©t>¥KE>¥7>¥&>¤ÉÙ>¥G>¤sœ>¢°´>žx > å|>£Œ*>£Ñc>£ê>£Õ7>¤ ü>¤P{>¤×>£¿#>£:>¡E+>¢B…>¢õ€>¢û`>£q7>£{v>£gÚ>£N¡>£^>¢:$>¡³>¡B¥>¡ïà>¢uò>¢G#>¡P!> ‹÷> º>¢˜>¢%E>¡ÿˆ>¡®0>¡“'>¡Ã)>¡¬…>¡5²> 'É> Ø†> ¸U> g·> š> &Ñ>Ÿ§,> ]¨> )`> <> dy> ZM> *¹>Ÿ…×>ž•>×Ó>ž9½>œ–}>œ©›>Ÿ Á>ŸTg>Ÿ%ò>žâP>ž÷>Ÿ%j>Ÿ0>ž°#>žž>žw+>œ}A>—Àõ>™w&> î>ªP>š«ò>›þî>zÝ>œýß>;q>œÌ£>šþl>š¬>œ4‡>-Ð>g>œçX>œÔµ>œ2Y>˜à€>še•>œ\Å>œG®>›a!>šÉ>›­>›½>› Ä>šÀ>›&>› æ>šÆ)>š]ö>šfù>šÊÈ>š‹W>š.>šK!>š>†>™ÔC>™À>™Ò>™S>˜Õ>˜æ£>˜è>—æË>—Ño>–áO>—u0>—œ >—ŒM>—Vj>—ƒ>–§õ>–B·>•Îo>•9Ë>”±Ù>”¦>’«>’ó>‘qf> é> Æ>v„>‹Fi>ˆFm>ƒïG>y$t>aãÇ>_U7>v‡>‚«S>†É¨>‰ÑÔ>‹û™>…›>Že>£>~6>‘GH>‘ËÞ>’-Ž>’|4>’…–>’®°>“X3>“‡f>“Æ{>“ï&>” ù>”'[>”/ç>“ù£>”ò>”€>“ñ¹>“yf>“² >”8ˆ>”‰>@Ê>ŽD%>“l„>”"Ô>”#>”"ê>“ý¸>”‘>“çÃ>’¿'>º9>“ª>“³t>“y>“D>“((>“r¢>‘–>TŒ>’…Ø>“2\>“Í>’à>’þ\>’íÝ>’1Û>É>`>’iò>’n«>‘¹£>‘Ýä>’*@>‘ã>‘¥R>‘›#>‘¬Ý>‘ ¡>‘¾>‘8 >Ž@ÿ>»Z>‘S>‘tT>‘L.>‘/’>‘"Ò>‘.!>‘ Ô>=ü>X>ÏO>²Ç>™>™f>ˆ›>h%>Rã>CZ>(k>úî>öl>ó>Ù¯>œ¹>e">1>‹G>oÐ>JØ>ÔN>‹LÚ>ŽXç>>Žït>Žš>Ž$>Ž9P>Ž…_>Ž^>é >Œý²>ïg>Ž.¤>ŽT>ñz>å²>ÂÐ>^>> —>f*>†>3K>‹ùñ>‰³+>‹üó>ŒqŽ>ŒÚ›>Œ…Ÿ>Œ¥x>Œµ”>Œ™J>ŒWŒ>Œ{>‹ïj>‡•”>‡ed>‹¿±>‹a>‹N«>‹Øì>‹Ë¹>‹¦©>‹p,>‹u*>‹$é>Š“t>‹)>‹'ý>ŠÉ>Š¼>Š.">ŠÔû>ŠÐ`>Š§;>Š™ô>Š¿>‰ú>ˆqx>ˆ:>Š$Œ>Š{>‰ä¯>‰ëm>‰Ñã>‰¬ù>‰¥}>ˆ§¤>‡ön>ˆ]¡>ƒ/’>{”>>€MF>„Ķ>ˆ¹>ˆåG>‡>…ûg>ˆ)0>ˆ“Ù>ˆžA>ˆom>ˆPû>‡Ãm>‡¾Q>‡î‚>ˆ[>‡ñm>‡Ú>‡9r>†p>‡yñ>‡TÑ>†•Ö>††æ>†¥S>…qá>…>…y¸>†—Ã>†Æñ>…ÚU>„êI>…œA>†>)>…þ^>„ß/>…í>†K¾>†'W>† ó>†W>…Á?>…•>…r>…¾ƒ>…d>…“B>…hÀ>„¯š>„ÂÂ>… á>„Þ>€éÿ>uY>€©3>„¡j>„¹.>„–³>„@>„<Û>€ -{>{ª…>ƒ‹¸>„ G>ƒ•Ú>ƒá_>ƒßQ>ƒá¥>ƒÕý>ƒŽè>€5>~ À>‚ ®>k>ƒÛ>ƒI²>ƒ7Ó>ƒl>ƒ>‚ÝÐ>‚Ì>>‚³a>‚’œ>M<>va>~Í“>‚6O>‚$8>‚#.>ôb>¦>›0>~Wú>h›>gG´>u¼>bº5>f‹>udò>€^¦>€¡&>€°>}x>qmE>}`>€³£>€†L>~úR>€ ´>€al>}«x>nm'>jÒô>{l•>âÈ>€n>—ò>~&{>|R>y”Ë>of>w¬²>x\>}­¶>~V%>~>}–¸>zà>{°¿>}uÈ>}–«>}_x>}Ò>zèê>u<Æ>lâ¼>wJÁ>|5>{œ­>z5Š>zã>z¥>z‘p>z_ÿ>päŠ>cÇ.>u7ì>y¢š>vëL>qÇš>uŠÖ>d>jz—>w0)>vÝ >ww®@>vä>nŸ`>u]5>wÂ>w´>wˆ¿>wE¾>vÜî>tŠ³>qü3>p²Ë>Z@>fù>s°)>tˆh>s÷‡>pïD>jÒ>k]S>q¯“>p¸>oߊ>ogÕ>p¿>o|8>nk7>m€>lX¶>jn“>dEŽ>e³W>eëk>c׌>a«>]V>X>²>Pȸ>Dm…>/S”>+Ó>@Þg>NGð>Uç">ZLg>YÇV>\y÷>\îû>b^D>fõ>`þœ>b¡Ú>i]>jÚ>jw?>g¹k>^Uö>`âu>e™0>kê>l6>l¸‡>lë>m`>m*g>mŠ>ló>m*°>m)á>k„>h½º>_w0>fèF>lªÆ>m >mr>lãS>l[¬>l¯$>llî>kó“>lH->k -„>l@>ll>kÅÁ>k{(>kƒ±>kíy>kùn>kÝÇ>k·ˆ>kƒÝ>kz/>kl‚>kK>j¶ƒ>jò>j¼Ü>j v>j¤Þ>j„4>j ‹>j>j4¯>j >iÒð>i½¸>i—>i\Â>hîZ>eé½>gÖS>h8S>g_É>b;M>d›>e¼>gaË>hã>gq>eZ>fÜw>g*¤>gp÷>fæ§>f?“>f«à>fêé>fÞõ>fÇ>fšI>f|o>fø>e4P>e_„>cá>\Ï>\ÐQ>dÒc>eè>cMê>c•§>`Äÿ>c¡Ù>d¤>dŠT>d í>bÓõ>c¹“>cç°>cÇ>cë>c>cty>cS¡>c›>cö>bím>bwì>b8>açŠ>\aá>R>Wùo>am>arÌ>až>a}N>ak>aI±>a½>`ê‹>`Ó>` >]$>T¤û>U-Š>\ê¬>]­d>[­]>\¯/>\nv>^:8>[̺>]‹>^Ïo>^½>^€U>^ª>^(>]äË>Uà>Rº`>[ôh>[?®>\Q`>]UQ>\i¦>\»ø>]*¾>]ê>[%ƒ>Y†m>[Ù÷>\zj>\BB>\ç>[w—>Vž>X˜Š>YË^>RÝh>UL‘>XTB>T÷(>U›S>Z†{>Y;“>U ¦>Pj{>KÅ¥>Tã’>X„">Wçœ>Uî,>Xü½>Xë>V$›>XV>X·±>XÚ²>XØQ>X˜>S?">V¢t>T@­>Qeç>SË>W3$>WÇ‚>W¼6>WœD>Wuâ>W<‚>W- >VÕ•>V€>V(>Vn>V?º>Tîë>U*1>V ½>Uü…>U´s>U| >UeÕ>T u>T¯>U( ->U >TíÁ>T’C>R}>RJ>R²&>T«>Såe>Së—>SÞ4>S0»>Rve>R÷Š>S_ø>SC >S#Ù>Rˆ">P§ì>R Z>R™á>Rw‰>R3?>R3>Q÷%>Qåã>QØ®>Qµ8>QRh>P&V>P¯Å>N±´>Iaò>Mªš>Py@>Nk÷>NâZ>L_>G”©>Gl‘>Na$>N`è>Ikž>NÒ>O!ñ>IîÊ>I Ê>N¿F>NL>H¿ >Jéa>MöÊ>LÛ8>K*z>JöC>Iúø>Gë9><ä >J*œ>MJ">I„>C=>H’¯>J2ˆ>LÓj>L©ü>Lœc>L)¾>E}—>GàÐ>K·›>Kµ$>Iê>K±>K«n>K‘ß>K\‘>K*'>Jú“>JäH>JË>J­@>J‰K>Jo>Ja4>J >Iðò>IÓ>I”­>E={>;j>=ý’>,_&>=ùï>H1F>HÏÂ>HÙ>H„þ>G%§>Dfe>Dëä>B¥>E}•>AˆV>G.#>GÔš>G®>G‰™>G/\>C’µ>Dgä>Fÿ&>Fƒ!>Bí{>E>F=Ñ>D1>D\À>Cõ%>3\ ->8ò>DÉÅ>DºÃ><9õ>?·Ÿ>Ej>C¢>?·à>D!e>DÂa>D‹ñ>BùÔ>>Éü>Bm>D7¡>D!£>Cþß>C(->= Ó>9%O>7õ->AŠ+>>þ›>7‰O>5UA>? ¯>BL>B à>BS>Bo{>BOÎ>B- >B{>Aû3>AÛ“>A³g>A’X>A~ñ>AZö>A<ƒ>A à>@ùš>@Îþ>=eZ?$÷z?*Þ?.­?1wÃ?4Ât?6T?4U(?0=’?-‚™?-?+ýŠ?&Òa?"+?kI?Ð;?3q?¨?(l¶?0î?46J?4ßâ?3K?/Û?)Y?!¥ì?`É?Ï^?"n3?/fr?;8B?@u?=ñ;?6™Ö?/©?+€?+"Ú?,‹÷?,…r?+T'?+?+û?,G†?+ð6?,È|?/1|?1 Ð?0ˆu?.\?-Ƽ?0› ?6íK?>4H?B¨®?A}ž?;?2Óø?-"'?+8i?*Ë ?(±&?#VŒ?fù??'¢?ž? l?$ï?!:?Ñ?ðó?…s? n²?kÉ?>b?\ÿ?˜«?F ?&Ý?*^à?)íß?(¥Z?*Qä?/.?4W…?7Äô?8ù8?8ѵ?8¢±?9vÂ?;,Ï?­›?>†?;Hž?5”j?.¾`?)MÇ?&çÝ?'â×?+Ã?.–=?2\9?6ÐA?;EA?>dº??Ž\?>Æ£? ³?Ax@?C¼?Dï2?D÷–?D[?B¦`?@1Š?:ÛÙ?1 ?$Ø_?@ Æ??¤¤?<*í?6â)?3pB?4à?7”1?:ëi?%?3É?9Ø—?=7Å?>0Í??…j?B¢‹?EËe?FR?DEm?Bmï?BeÎ?C&_?CÊÁ?DÅ"?E¸ñ?DuX??‚2?9&è?6õ?7‹¾?9ƒâ?6ú’?0óÆ?-rg?0o?61È?;±”?>•è?>ö›?=!l?9ÂN?6D7?3ŽT?1é8?2i˜?5ν?:t®?=ôÃ??™‡??n?=«?9A:?2Ç?+N–?%ìH?%ëj?+vœ?2úÁ?8BE?9÷?9f™?7Ÿ˜?5t?4Üz?6»?9b‹?;¶k?>è?? ?;b?3?r?+?)RŠ?,¹š?1Mè?2çˆ?1š5?0-:?/öÎ?0‰w?23²?5¯‰?:Q?>?>Ÿ?:“u?21 ?'2Ž?¬B?P¦?!¿¾?+ƒ†?1²Ð?2_?0ò?2$·?7DN?=]-?@âð?@Cú?;p¢?3'ÿ?(Õò?I?Cý?²‚?*ÇÎ?7Q?>"Ò?=áÉ?8¯R?1Âþ?+&»?%§¾?"Èy?#™Ž?%j?$".? ’Ý?è.?$ôk?.:À?8±5?@Ñj?Ck÷??Q>?5—?)jû? *›?åÝ?$ý[?+ÏH?.ô?12—?6„Ü?=hb?A(??>?;FX?:$Ï?<Ø?=åk?:<?2°¬?+”?&§þ?&ÔÈ?+Ç?3Ò–?;Ùê?AR?C¡š?Cº?C3?A“á?>3?8C?3B?0)ˆ?.íh?.=e?-|?+Q½?*Ià?*ýh?,¯?.Úë?1™K?3†=?2Àâ?/„;?+õL?*C&?+‡†?/Bg?3®ä?7±?;Å ?@^?B¤r?A§*?=m2?8':?4*?2Žß?3 ?35 ?1mt?0O??34”?9ï¦?Az)?F—Æ?G¨?B×C?­?BšÁ?B˧?@·à?>\Ó?;1•?4¡??*^R? Äâ?Z?÷å?s?"õ-?(¾?.fÇ?4­?:m ??°?AÎã?@Ûú?=›?65Ò?.ÄÏ?,’¥?2V?;Ÿ?@û=?Af—?=¼Ú?8 i?4n?0ݨ?.ƒÉ?-a?.çþ?3k ?8=¶?9 k?6òÊ?3þJ?4ƒ·?7t~?9r¼?: N?;CÈ?<ž?¾ö?6å!?0c?-à‚?0‡³?4)ù?5„?4}b?1²?+fï?&nÁ?&¸ä?.2}?9n€?A™/?C†®?BaÊ?BB.?CÎc?DÔ?C®?>âa?;Mÿ?:=?;s’?=z?<›—?9Å?6á„?5_ú?3šB?0Õÿ?/ÊŠ?2ýR?9hŽ??í?D"?DË¿?Bó?=!?8;¨?5?¶?3ë?1Ùb?-™4?(e´?#ÆÚ?!|Í?%³?.¿%?9 ·?>nÑ?>²é?ÿ¤?A f?@º„?@Zí?B?FI}?J¯§?KRù?Gâß?D¯!?E'x?HD7?Jš"?J«¨?J Ó?IêO?IE:?H@õ?Hès?KKb?L¨ã?Jîr?F»V?B í?>Ò?>Ãà?A¥ ?DÆœ?FK?F®.?Fµà?FgÆ?Eöb?G ¤?Kø?O(w?LÃn?Aˆ?2*/?)Å -?+]¶?0i?/W=?)H»?%}Ñ?' ?+LÒ?-SJ?.=É?/Rø?1ð?3÷¹?8K^?Îc?@SX?BÞï?E® ?GÍ?Hâ(?I‘N?IÏh?G¹?@ÿÄ?8Hì?2Â?/ûš?0Ä2?3i×?6æö?7çÏ?4b?.’ˆ?,z=?/+j?2ÝG?2Б?/¿]?/²Ð?5sA?Ï!Ð>šN>{â>…¼b>°Gs>ñó?|`??‘^?_ŠH?x*?ƒH?…×0?†W¥?…ü5?ˆ"?Žmô?”(Ü?”Z~?‘yÅ?‘h?”Ý?–„ô?•Úy?”rº?•ð`?—ç™?•m¼?}r?MÑ?’ͼ?•âD?“b¸?Šµ†?€TA?p¥Ó?bõ›?O«€?2ê? q£>ÏP>œýò>’Çç>²ñË>ïAÉ?ˆó?7gµ?OÆ3?ec&?x+©?ƒ4•?‰{ ?§?—Z/?›Ç?œ7¦?š ?˜„Ê?™ ?š¼P?›Èl?œn5?žÅ›?¢£?£J?£fà?¥d„?¨õ¼?«w‰?«€?¨Ê?£ºL?Ÿm)?/?Ÿ}…?¥×Ž?«3W?­nB?®c!?®ÿ?© >? †À?›°z?Ÿ.%?¦Æí?¬Iþ?®Oy?®è?®Ü›?­³É?¬B?«T]?¬t?­wË?¬«¾?¬«¥?° -¼?´@?´ò&?³e;?±G*?®É?¬d?­ˆ?²C?¶'ò?µNÚ?¯µ®?§E`?Ÿë?œ÷¸?èi?¡]a?¦Þ?ªúµ?°~?µÉ?¸KÓ?¶±L?²x`?¯‘Å?°+\?°'è?ªç?ŸƒR?™Ä3?Ÿ\F?ªkw?±,A?³S?³~1?±êº?®?z Í?_‘º?BPº?4†·?Bî?`Ìç?~ó+?‰ú?ï.?“§?”äˆ?–|¡?™ÿ?œÃŒ? 9?¢ë€?¥a^?¨I%?ªÅ ?ªË?¥r1?¡kf?¡o ?¢ÔA?¢ÔÏ?£ -?¥>]?§Æ[?«¶K?­C?¨Á`?Ÿ»?˜?–öB?›©x? ìÒ?Ÿ˜Í?£Ÿœ?¨B®?«{ž?­ ?¬dÂ?«=?¬8Þ?¬²>?¨iÑ?ŸþZ?™7À?š€?¡JÞ?¨'?«¼9?¬|6?ªÿ?¥e?¡Ý?¡uy?¥_q?¨ÑÛ?¨«(?¦Ío?¦‡Ô?§æ?©üõ?«MÌ?ª,4?§Üº?¨ˆf?¬ÜV?°»&?²?±'?®žÄ?¬@k?¬rÃ?®G¶?®ÚÛ?­‘?«q{?©.±?§ð?§û?§ås?§ú…?¨ ˆ?¨º0?§»?¥‡?¤”å?£Q?¡‚?Ÿ|C?bu?›å…?œË?Ÿ+?Ÿ¹Å?œ¥?™‚?š2ƒ? ¶Ì?¨0o?«±é?ªºì?¨(™?§°?¨S?¨|S?¦‰ü?¤¬Ã?£»? ÿ!?›«?™?œì±?¡tn?¡GQ?ž?œS˜?ž¯?£z‹?¦¦ì?¨O¼?ªF‹?«L?¨þò?¥5Ü?£B{?¤hH?§,Y?©¼¥?ªËn?©Áy?¦f§?£²?¥n/?¨Ûe?©ù•?©~Û?¨ò?§«?¥ í?¡ñÀ?Ÿ†T?îö?O?ž4Ý? òJ?£w®?¤ö?¥ai?¤Ñn?£.Ž?¡+?¢,'?¤¥µ?¥Ø-?¥»?¥/?¥;º?¤}ò?£ =?¢Š)?£>-?¤„a?¥|•?¦;?§bÿ?¨Õ™?©÷?©?§Óë?¦l?¥ü'?¦fí?¦j ?¥` ?¤…ˆ?£˜5?£-¶?¥·?§Ë ?©KJ?© ?§“V?¦¸?¦û–?¦„?¥´?¥a?§'É?§*?¥¯Æ?¥¸?¥QV?¤¬#?£„Å?£ÝA?¥’z?§KG?¨5 ?§Æ´?¦¨?¤´„?¡…©?Ÿ?ò?Ÿóm?¢Þ»?¥K!?¥ãþ?¥t›?£çL?¡Ç?•o8?•·?’Ò@?)[?hF?Ô?¼?`.?ˆñG?ƒ­?}]’?v¦U?gù?Kb ?+98?"b?8Ù‹?W¯?mlƒ?{ôy?ƒ‡I?‡$|?‡¨;?…“?ƒØ?†·»?‹_?±s?ÌC?ƒ®?ŽùÁ?’>[?“Òþ?’õ±?‘»G?‹+?uš?.¡?¡y?.?£6?‹z?ÆÁ?“Ã}?˜p·?št-?šêd?šŽ?˜ðM?–æ¹?–šš?–nÚ?”û£?•U4?—ü´?™–?˜ï?”iž?Î@?¹8?”M?—r’?™†3?™ÚÊ?–Á.?ÀD?‹¤z?ŠM|?Œ…F?ŽÂ'?ŽƒØ?Ïã?”2î?—€é?˜È…?™G+?˜û"?—lê?“ƒY?å?‘:ã?“Am?‘K?Ú›?Ž\ˆ?“OD?—rš?˜÷§?™ú?—´^?–·/?˜†?™o?™vØ?™8?˜Ø\?˜!R?—xâ?•™?Ù?‹´À?‘HŠ?˜8ö?šy¢?š$?™ƒÿ?˜Ì?•½“?”¯s?”¹Z?”Ó ?•Ô?–+Ü?—v¬?˜”¶?™h?™ó?—ÙS?–ö?”R?‘ss?Œe@?ˆ?ˆ‡?Œ i?‘–°?•“´?•íç?”0?’¯ž?’å5?“>O?“×?•¤´?–Ï?•²¹?“A!?zR?Žï¥?ŽN?¤X?Ž]+?ŠV ?‹,?¾²?”oÈ?“U§?4}?‹ƒ?Š‰^?Œ4ý?LÛ?Š½˜?‰A®?Œ‘*?¹Ð?vÊ?‘¬€?“Qê?“|?´ß?Ÿµ?‘šß?“Zõ?”Z?– ?–u?’Å·?©±?æÃ?~ö?‹£}?†Ž?†l8?:ä?“«—?–³|?–ëõ?”$®?„®?Ž¿·?Žyß?»ý?’âO?•(ü?•‹?•‰7?–¨?–© ?—IÔ?—½æ?–ªä?’õn?­ ?S?‘–A?‘—|?’kc?’‰V?Ì“?7Ð??‘®?’F?›-?‹ã?‡þ?ŠPè?Ä?Ž‰?‘7½?“M•?“#±?“@?“Ÿ?“~\?”†f?–(?–A—?”]÷?D?‹¦n?‰µT?ŒÌ7?‘Ñã?”BT?”Hð?“lk?‘h’?Žwf?k=?Á??KT?’«t?”²?”&T?“ Õ?”„V?•z2?•'j?“¥Ô?‘°‡?†£?1)?Œ´?ë?Ž?µ?ÁÐ?ŽÏ¶?ŽÜ?ŽHv?n??Ž!{?ŠÅÖ?‰'i?ŠL?ŠÜ,?Š ª?Œ¿™?W÷?Ž|î?[?Žq?$„?Žh?¨¶?3Ú?#C?Žò;?‘jÎ?’€œ?’+–?‘4Â?eé?ŽÊ´?ŽÛ"?Š’z?nË?sŽ?u–²?#Ì?;­?wo?~="?‰ýÃ?~i?’|?’L?’Sh?Hd?ˆç¼?z1…?t…H?ƒxŒ?Š»?Šì„?‰ÿ?ŠVk?‡èÕ?†·½?ˆ›?ˆqÕ?ˆ½?‰JÝ?‹Iy?Èã?Ž‘F?[´?‹‰?ˆ½ò?‡3Ð?‡À‘?‡sõ?ˆÁ¨?Œ­?Ž¥d?Ã+?° ?‰‰ø?‡óT?Š=o?ì?gÊ?‘L»?‘ÿ?@?Šh?‚Ù¦?€¦·?…ñŠ?Š§g?Œ¢?Š§?‡z?‡x‹?‰‹‚?Œ"œ?Ž ‹?%¸?T§?Žu3?¤b?Žpg?Žïâ?ë??Œ&’?Šð}?‹Àj?Œß‘?Œ/2?‹ã¡?Ñg?Ùí?Fh?ŽlO?‰_1?ƒwÃ?Ž[?|xé? -A?ƒXL?ƒAî?~ñ)?Us?…Â3?† ¹?„˜Š?„ÐÝ?‰k?A?E•?Šâ£?ˆOG?†XŠ?†Ù!?ŠÐt?Ž -î?Ž¾I?Žím?wÆ?_å?Žó?Ž)?Œàw?‰Ìì?†Ðó?‡·Ð?ŠL4?Š’?Ší?ŒXL?P\?Œ1í?‹Š?‹ÔÅ?5¬?¬0?Qk?ŒNk?Š‡b?‡&?†5(?‰2?‹ók?Œ.?‹œ?ˆ5?…͸?…¥‚?‚½M?|‰?Hü?‡Ž±?‰+[?ˆ©Ú?‰=@?ˆûh?‡Äc?‡s?…Mc?ƒ¶/?…Ãp?ˆÍo?‰í?ˆg‹?‡§B?‡$?†rE?‡ôƒ?Šá?Š"R?Š‹ú?‹Äë?Œ à?‹ß ?‹í|?‹eÇ?‰+º?†‘ ?„÷#?„Cn?„âà?…f?ƒÊï?-?€Àˆ?„bu?ˆ;à?Š5Ô?Šƒ´?‰Çú?ˆpÞ?†y ?…A›?„Ño?…a.?‡–?‰~?‰*?ˆ1?†õ›?†!‚?…_á?…¹c?††Î?„‚¢?‚;G?ƒu‚?„Ù•?…>ã?„¡Ú?T?|;l?ï?‚ç’?ƒu?Y?È)?„P·?„·Ò?ƒNe?„ 8?…£?…Ë?`Zß?`˜?b{o?bäÏ?açt?c%6?d2 ?c«?aaI?`•?aM¡?aè ?aK ?_¯È?]^À?^*l?`ŽŸ?`M?_¥?`I[?_Ìä?_Oé?`hG?ae?a¥À?aÖ?aIã?`I£?_ˆå?_û–?`gè?_ñÎ?_ ?^Hâ?\Ÿ8?[ìè?]äw?_¼ê?`2?]À2?Zdq?Zx¾?[ýf?]Î?]®T?\=?\¨Õ?]È‹?]úN?\±Ý?[š]?\)2?\¨¿?AóI?EwÃ?Ct»?>q??ìY?DçÓ?EÎç?D0õ?C;>?Aû/?AÝñ?BCË?A"Á?B¿ê?Cm ?C ?Bó?Aí‹?C.ò?Câ„?Då\?DÛ)?BKÌ?>®?86?2ÑA?4’?;q??³*?B'Ó?C«W?CþÝ?Dsy?DƒM?CÎL?Cv4?C]Á?BE¤?>WÆ?:…V?i?;‹?:|?7ñš?7¯É?8þà?7Pˆ?3 K?0£y?.R ?*d¡?$3Ë?ÒQ>ú&‹>ÏŒ>óøC?.)?#·k?*4?-ÎÑ?0à ?2‹8?40ú?7n?8¶x?9`?9ù‰?:?;•?;Ù§?;¨³?=Äö?=ïN?:—Ó?85E?:©à?=ï?=ã«?=þˆ?>#·?=A1?<-L?;óÎ?<9„?<Îç?<ï ?<ž?<ºm?=\÷?=¶?>Z­?><…?> ?>¼€?>-ö?<î?=©?>VJ?=‡?:Ë3?9e4?:Êh?=-Ã?=Õ-?=§?<¶>?:hN?9þ(?;Mr??2O^?2j—?2Æ)?2rÚ?2g`?2ì÷?2‘ª?2%i?2s¨?2êÞ?2l0?1L·?/BÏ?/Ÿ\?1p5?2â?2"µ?1º*?1TÙ?0ô`?/j?-ö©?.>?0Jø?1'ð?1q?1S?0àÝ?0 ?-Ô†?)´?'œ=?' J?)2»?*é¯?+<£?*nÌ?)‰;?)É?)®œ?)Ç ?*o×?*˜ß?**S?)”?(†?(É+?'TÃ?%è?&^#?)TØ?*§z?*S`?*>«?)ò?%oÅ?%f?'ü‚?)%Ê?'E3?&-?&ÿò?(cÅ?(¨ë?'TŸ?&Wþ?&J?&ë?&OÑ?&VÈ?'Ah?' ÿ?(4 ?(?)?)×ÿ?)ni?)~O?)øŽ?)ÒV?)M?(Î?("±?(4?'¶/?'œŠ?'ó?'ç•?)Ç?)1µ?(ƒ?'Ŧ?&ô?'Er?'Ó¹?'ú?''?&3e?&FW?&9&?&5R?%á?%þ§?&,ˆ?&@Ò?%åÏ?%Éâ?%ÄR?'(‹?'@’?&K?%‹D?%0Ø?$Ùù?$}?#”s?#`?#ª??$Ó?#O‚?!nš?#1Â?%¿?%Èè?%8Æ?#‘\?"ÅÛ?$Jß?%A?%u?%™H?%®š?%"‹?$¹?$ç?#,!?Ñ|?!Ü|?$°K?%*9?$©*?$Mú?$Ï?$òO?$NÑ?!ê÷?˜?ôü?#2ó?$…w?$Ì¢?$Í;?$Aw?# é?#/î?#÷? õ\?!rÙ?"Y´?ýb?æÍ? ¾ž?!¶ë?¨K?@I?!?!ÛT?"? &?(š? ›#? {›?[a? ÷w? €? âe? •p? ßö? á_? »’? KÇ? -ºí? rJ? ? ”¾? ‚b? v×? ªG? Ìñ? ÉŸ? æ°? š–? ½Ž? ?±? Љ? ÒT? ¼o? ªv? '*? "Ï? -Ê? ÷û? ~? @æ? ò? -Ï? -ÑN? ÔÞ? œ«? š›? î•? Àm? éÝ? ìø? ¼‘? -ºÎ?Új? 5Ï?s¦?Fu?dP? -*V? -±¸? -EV? p? -R[?÷å? ž‘? -|? ð ? -fá? - I? r?Ô¦?å?¯”?Ò¸?'p?†? "ð?ÒK?9„?¡Ð?à ? ¡„?æ;?æ,?ó†?Ñü?ºø?ô-? K?à ?½Æ?¨ô?½M?0ˆ?¸ô? ¹l? ký?“»?VI?MŒ?ûB?î.?Šg?t§?z‘?@å?×?4ú?(v?¬€?¼…?aQ?yT?Ûv?²à?'?ÿ5?Ð7?Y¾?¿c?5©?ð·?Š°?:(?ß?ˆ?Ly?|D?ßÄ?¯?“Î?DZ?÷j?Éx?”Ã?v? »?#Ý?¬€?R/?@g?á½?yÄ?&ã?m¤?Ív?f²?è‘?h?©?`²?D"?5ÿ?f ?›H?£?óì?Éñ>ýÕŸ?AÙ?He?4–?¦W?v<>þqv>ùô>þ8Ý?‰Ù?nµ?§Ü?_²?ç?:Ê>ÿãh>ÿ™&?×?¶?Ž™?Ñ_?Û®?ªI?DÅ?,G?Iõ? ?ˆ½?X0?@1?éÅ?%Ä?]Ï?š?Kv?Þ™>ü×€>ú¾†>þ•>ÿõþ?Ae?u…?º?W?šÆ?ä?”?\9>þçU>þd§>þТ>ý™Ê>üz>þQ?þÜ?–m? å?Ý¿>ÿ´¢>ÿlf?f¤>þÏÈ>ù:>ùu¸>ü¼>ÿ:ÿ>ûø‡>û‚'>üöë>ýh>ÿ¡A>ÿ”:>þÖ¾>ÿ?ß>þ[ý>ü9¨>þ Ü>ÿ"/>þ}>ýŽÂ>üøâ>ýƒJ>ûz >÷Ük>û€>ýc>üï >úûÿ>úÇX>ú‹š>øïF>úÐ >ýL>ýZ>ý>t>ýª>üÒó>ü§ >ü‹z>üMW>üï>ü83>ü2»>ü>ûùê>ûÁ©>û®>û¦>ûð>ûW½>ûJÜ>û Ø>ú€O>úcW>ú€C>ú“r>ú‡>ùó¹>ùC7>ùºß>ùòØ>ùñe>ùÀý>ùB>÷”û>øWE>ùzz>ù€&>ùD>ù¶>øë†>ù×>øØm>ø>ö¡l>îÅ+>î£Z>ôÙÐ>öt4>÷Í >öŠæ>íã>ê|>òoÇ>ò3u>ðøæ>óž|>ö‘>ôÇÈ>ôg<>ôˆ7>óØj>ónt>óŠv>ò¬>ìœÑ>ð\s>ôÿ×>õîþ>õ ø>ð1Ñ>í™ >ñÚ>ó;+>ôyà>ô6­>ôJ0>ôM>ô“>>ñ,Ì>맫>ð¶v>ó¨V>òiË>óO>óøé>ó´>>ó¤¹>ó4{>óQ>óÝ>ó_l>ó1{>òâH>òd¹>ò@R>ò{>ò¸š>ò®I>òÙc>ñå^>ñ´s>ñÓÑ>ð >ï`>ñU¼>ñø>ñÙ>ñ'3>ða>ï;ì>ïω>îÔ²>î…Þ>ð¹¡>ð“M>ïš¡>ï£a>ïoÛ>ð¬!>ïp>é„>í]n>í÷y>ë“0>é>ëæ>í7…>킆>ïhù>í;ô>è’d>êò2>î!˜>î7,>íR>í~>ì´ >ëù&>ë„8>ìSâ>뉈>ì…b>íæú>î3ø>ìûÀ>ëÁÄ>ì8e>í&2>í?Â>ì—Î>ëý:>çü{>æÖ'>ìÔ>ëˆ1>êEß>ê!>ëBJ>ëÇ!>ë>émt>èÝk>è >èðš>éû>éHC>èNÖ>èÙG>éâ>é‰é>éué>é˜Ý>éa%>éº">ézR>è‡/>倫>æ»I>æjC>æì->çÿø>ã6ç>Ý¡>ä4>çÖs>è>é>èˆo>èú >è->ç š>æaL>å->ã[>ߤÇ>âœ>å«Ý>掯>眓>ç\2>çÆ>æ߶>æž„>æØÍ>ç?>çsÏ>åã<>ãñ¸>Ù“>»e>À8>Ö:.>ÜF—>àØñ>âš[>ã5<>áÍR>Þþn>Ýgü>â*\>ãjó>äø>ãöT>ãi»>á½ú>áº×>àóÖ>à—>ܪa>ÖšB>ÊÊ`>¦3.>Ê>²›ø>ÎóF>Ù>Ý…>ÞîÊ>Þ[>Ûl>Ý.G>àØå>â9>âc>âke>â` >áòÅ>áP>áZ>á]>â=®>â'z>ÞæB>Þ›°>ß0—>߸>ßÉ>Ýø€>Ûr^>ØÌâ>ÖXb>Øh >Ü·ª>Ýßµ>Ý ì>ݼZ>Ý\Ù>ÚÞ>Ýhä>ß2>ߘ©>à÷ç>ß¾u>àZL>á$u>઄>á #>àÐ>ßbª>àbp>à™ª>áqp>áe>à(¨>ÞQ>ÙÞï>Øv0>ÜŸ>Ü~'>Ú,Ú>Õý™>Åõx>±> W>Á=¥>Ïœý>Ô¤>×i>Ø+”>× ->Ú­?>Ù_'>ÚüÃ>Þ -1>Üô~>Ø ->Öqx>ÝÕl>Ý¥€>ÜÃ>ÝÞý>ÜÓø>ÞIá>ÞÄa>ß@ê>ÞÓ‚>Üž2>Ú1û>ÚµÞ>Ý›>ÛÛv>ܽ>ÝÝÆ>Þ;v>Ý̹>Û*{>Ûw>Ý£S>Ý$M>×¼ì>غE>ÜCÔ>Ø«>×N>Ø9`>Õ#7>Ïqµ>Êìœ>Ðû·>Õ­Y>Õ¨Â>Ùðñ>Û,M>Øçä>Ú -à>Ü1I>ܼ;>Û\è>Ù[n>ÜSÌ>Üo§>Û•'>Û“G>ÛÀ3>Ü\ò>Ûûx>ØÒÇ>Öë&>׉)>ÚëÕ>ÛÝ+>Ü>Úª…>Öòc>ÌqB>ÏV™>ÙY×>Úù'>Ú=ê>ÙÚ]>Ùú>Ù#Ž>×–l>Óq>×YQ>ÚDR>ÙäK>Øí >Ø+e>Öl>ÓÇ/>Õ -‚>ÕC2>Ô»R>Ó -–>ÓT¼>Ó–Þ>ÓW§>Ñ®ø>Ζ(>ËË>Æ0 >ÂW¯>Å8!>Æîý>Ìà>Ð0•>Ð ->ÐZß>ÒÝ>Òƒ”>ÒL€>ÑñJ>Óêì>Õ¤g>Õ­ï>Ó¾ >Óœ'>Õ½Ð>ÕqX>Õ+£>Ö*´>Ö_$>Öl>ÕóÐ>Óã>Î5ï>Ó©Ï>Ö&N>Õ%>Ó‹/>Ó…€>Ñç¸>Ìq!>ÌX¹>ÓXÞ>ÕN§>Õ^S>ÕƒÑ>Õs5>Õð>Ó^a>о|>Ѧ¼>Ò)¤>Ó«H>Ômß>ÔR ->Ô-d>Ó÷ø>Ó·¯>Ó~>Ñç>Ы>Ñ—‡>Ò!«>Ñw>Ï%a>ϳ:>Ð…X>ÐÈ—>Ͻw>Ïu^>ÏTù>κ>ÎÓ>Í=V>Ëd'>Æ©<>Ƽ>É 3>Çhn>ÃEv>¾‹>º„>µŒ>³O>¹Mû>¾t>À\¤>Õ>Ækt>È,ð>É U>Ê ½>ÊTá>É¥ >ÊëB>ÌÞ>Ìë>Ì›¿>Ìß,>ÌÕ»>Ëþ_>Ìse>Ík3>Í">ÉYÏ>º4à>½oh>ËŠ >Í–ª>ÍKü>ÍNŸ>ÍIm>Êäæ>Â7C>Å…>Ì>ÌÿÍ>ÉH>¼õì>ÃŒK>Ç-‚>»o>ü>ɹ’>ÊÜ3>Ë/Q>Ê«ª>Êýw>É¢>¿»>Ä7>Ê̆>É3>ÉÈ>ÊÅœ>ÊÝ¥>Ê–…>ʱ>Ê€S>ÊŸ¨>ʾü>Êf6>Êxç>Êk">ÊMª>Èåµ>Æù±>È–‹>ɽA>É^i>É$>É7ð>É.¦>È®‚>Ç‚v>Çå9>ÈZÌ>Çé+>Æû}>Æ:©>Æ8>Æhv>Æ÷>Ų>Åéc>ÅêT>ÅÌo>ň%>Å(œ>Ä­*>ó\>©>Ây¾>Áž>Á%>¾u‘>ºlô>³ý>·«&>·dú>´yD>¶!6>²äí>¬Lö> 2™>Ÿ?>©²>¯Ëæ>°P*>¯ø‡>·à4>¹<¼>·S>ºOh>½}ß>½ýI>»_C>µ?S>·WR>º6>ºÅ>ºÅF>»Aý>¿>ë>Ágp>Á~º>Á–5>Á·u>Á²>Á¸Ú>Á°b>Á »>Á†—>À<î>Àd»>ÀÊŠ>ÀÉ!>ÁA»>Á}–>Ás+>Á/Ô>Á#>>ÀÔÁ>À“w>Àóé>Á…>¾ð>¾‰->À¶>À€ˆ>ÀuÎ>À’·>À¢>Àn >À>ÀM%>ÀU'>Àð>¿{>¿†>¿¢B>½‘û>½‹c>¾é >¾÷k>¾€Þ>½è>¾>>¾ËÃ>¿ø>¾ï…>¾$j>¼Ú>¾ ¯>¾c‚>½ò¬>½ùW>½á\>¼íî>¼t×>½Ö>»…>¼.>½FÃ>¼g>ºo>·D¡>«éÀ>´Fë>º9>²ò&>¨)Ð>´[Î>»Lv>¸Ò÷>¸‘X>»›â>»v°>¹­”>¸Qã>¸iÔ>·s ->²Àn>·8/>¸Ÿ…>¶ãá>¸Y¤>¹áÑ>ºK>¹E>¹ l>¹°:>¹®™>¸¹0>¸Z®>¸Ù7>¹.Ú>¹q>¸ÄX>¸’Ù>¸©>¸>¸1ˆ>·óz>·º;>·›}>·Z¸>¶þ >¶Šg>¶X¢>¶A>µáç>´“>³ì>´Wå>´‹3>³òŒ>³w9>³#!>²;ÿ>±x>±ò>¯Ýï>®¦V>¬ó³>«â>©à>§¸‡>¤»@>ŸøÛ>—Îk>ŒÛ—>Žßõ>™P> dõ>¤¯è>§]>©{/>ªõ`>«ø[>­!S>­Ê{>¬ˆä>­¯>® >¯|>°w]>°ÕI>°þM>°å>±>±u\>±&f>°{>±Sl>±pJ>°]ý>ªÈÅ>¬›U>¯Y'>±>±Á>±ËÊ>±Ã>°7`>¨~u>«¼Á>¯‘3>­Ù>°zV>¯Ðu>­ýù>¯w>¯Ô¨>°a >±§>°Ýc>¯þö>­R>­¡£>®‡×>­£¥>¤†@>©æx>¯»´>¯Ëy>° >¯£þ>­ÂX>­»P>®þ>­Û?>¬@š>­‹´>®Æ¶>® >¬¬x>¬eÍ>¬Õ‘>® x>®/ü>®eä>® }>®¤>®'>®c >®=:>®Hx>®6Ú>®>­ñp>­Ž‹>­yL>­XÞ>­§>­Bô>¬¬>ªÒ©>¦d>¨ð{>«¹>¬Å>«7­>¬Ë>¬UY>¬‡8>¬BL>«î>«­›>©Tó>ª^ø>«å>«!>«œÊ>«§>«’÷>«xz>«=g>ªV+>©Èa>©RM>ª1>ª”ö>ªcÑ>©`v>¨’}>¨…£>ª-²>ª@A>ª¡>©Ã8>©¦Õ>©Ù=>©Áw>©D´>¨)M>¨âß>¨Á>¨lm>¨¡Þ>¨(H>§¢B>¨aÞ>¨*ø>¨>ˆ>¨i>¨^X>¨,c>§C>¦Ø>¥»À>¦">¤jZ>¤~m>§>§KZ>§“>¦Ó>¦éM>§>§¡>¦žà>¦‹õ>¦c>¤OÛ>ŸVõ>¡#>¥‚>¥‹÷>¢gI>£Ë7>¥Z%>¤Öç>¥>¤£4>¢½ã>¢gï>¤~>¥ >>¤ñ¶>¤¿?>¤«­>¤4> „à>¢g>¤-¿>¤š>£%†>¢…Ò>£uK>£†>¢áò>¢G”>¢çˆ>¢â>¢‚Ï>¢g>¢Ý>¢‡ª>¢E >¡ã°>¢¡>¡ôd>¡„Ò>¡o¡>¡:Ü> ý0> yb> ‹Q> Œß>Ÿ~¯>ŸhA>žl >Ÿf>Ÿ0Ï>Ÿ«>žç>ž“0>ž/é>Åœ>Kƒ>œ¯q>œ ´>›|²>™á>™Q‘>˜¶£>—Ab>–0=>”ˆÓ>’<¸>Y>Š‡§>‚Ì_>m.>j7>(j>‰3>†‹>µƒ>’ú÷>”˜«>•ƒÒ>–)Ë>—·K>˜Šj>™¡>™|4>™ÎÈ>™Ø¢>šÊ>šµÆ>šçU>›)‘>›TE>›s–>›I>›˜B>›_H>›i>›g‰>›Vù>šØ¢>›>›¡R>›ní>—vÍ>•`»>šË>›Š‰>›Š¼>›ŠŸ>›c‘>›h¨>›Lƒ>š>—öN>šZê>›—>šØ?>šuË>šƒT>šÑˆ>˜Ý.>–~À>™Øç>šŽ >šy‚>š7¡>šWq>šF >™€·>”ß>–¼…>™»œ>™À‘>™}>™(>™x»>™.>˜í(>˜âw>˜õ>˜aÕ>™->˜zj>•]m>–ê²>˜–Ï>˜¹·>˜>˜q…>˜d">˜p>˜Iä>—sÜ>—S¯>˜ r>—î~>—Ó€>—ÓØ>—Â6>—  >—‰Í>—y~>—]6>—-s>—(·>—%0>— -‹>–ʉ>–+>–¼T>–¸7>–›a>–t>”ëM>’C|>•v†>–.|>–š>•ºö>•.T>•U\>•¥8>•{á>•°>” ÷>•Á>•J'>•“>• î>”ý>”Øï>”oV>”.›>”w§>”™*>”B=>’ù9>•R>’üb>“vÑ>“å>“‹ã>“­S>“¾=>“ Š>“[ƒ>“}>’î,>Ž\¨>Ž*>’¼>’Y7>’Ec>’ÖŽ>’Ȳ>’¡Ç>’h‘>’mÏ>’‹>‘€Ñ>’Û>’Æ>‘¹#>éê>‘o>‘Åž>‘ÀÉ>‘••>‘‡¤>‘zÓ>ß·>CŠ>bÈ>‘ ]>‘Ì>ÉO>Ðd>µ’>ŽÐ>†õ>|k>ŽÂY>.¶>‰¾\>„Û>†·)>‹gÁ>+>½#>Ñ…>Œ­ú>Ž÷¥>g£>r‘>Ae>!m>ŽŒÌ>Ž‡n>Žº>ŽÔ>Ž½>Ž¤†>ûë>8>Ž?£>Ž©>P">@r>`e>Œ”>Œ+j>Œ%Ï>R'>ƒ±>Œ‹A>‹5>ŒJ>Œô>Œ±>‹ƒ>Œžë>U>ŒÜ>Œ¿Y>ŒÇ>Œpê>‹©Ä>Œ< >Œn >ŒKD>Œ@ >Œþ>‹Q—>‹e´>‹²{>Šµl>‡[·>€¤>‡®>‹B±>‹[¦>‹7r>ŠÜo>ŠÙ>†q>„>Š>Š¥ >Š)Á>Šy >Švå>ŠyV>Šm>Š"v>†{=>…­ž>ˆú>‡u\>‰‘ƒ>‰ÙË>‰Ç>‰­h>‰Œþ>‰h„>‰V>‰;ö>‰Ž>‡Ãê>1É>…Å&>ˆ¸£>ˆ¥¥>ˆ¤>ˆsk>ˆ!<>ˆÄ>…‡i>s¹ >r×g> >n¦>qŸd>€Ô¢>†Ég>‡:>‡×>…ä>}~Ò>…|>‡"£>†ó>…ܤ>†rP>†ÌQ>…,Ù>zXN>v>ƒÿ >†V¯>†mÓ>†/e>…mm>„WŸ>ƒY>{^>‚>‚….>…†s>…]¿>…!ô>ƒµ>„"Ò>…©>…!í>…ò>„Öî>ƒ¹é>€¿‹>xº,>Ó®>„hQ>„I>ƒ[½>ƒ¦W>ƒ’e>ƒ‹ü>ƒr>|ïA>o*>€¼ÿ>ƒ™>¡‘>}Ý«>€è†>oüð>v3:>Ÿ>š>Ì#>‚ê>&>z ->€Ð’>‚X>‚ -÷>ô:>Ñ >š>€b>~å>|»>e) >r„Ô>Þ¦>€`Ú>€Ë>|ú…>uÓì>w!L>}Äp>|À>{Ý5>{_„>|,>{tì>zVE>xøí>x)@>v&œ>o®Â>q.Ô>qi¶>o;@>l[V>hfx>c ý>[8‰>N?7>8=>4iñ>J‚Ž>X—º>`˜u>e5ú>dªB>gi>gúG>m¯>q‚m>l=à>mö>t¶ä>uÆM>v/·>sNÎ>is4>l Q>q^>vÔ7>xQ¬>xÛ>xÂú>xðd>yk>xôÄ>xËQ>y¸>yà>vЦ>t` >j¢ã>rs5>xi>xä>xÝ‘>xºË>x,[>x„>x>z>w¿>xã>vÊY>wæ>x=ž>wŽò>w@Ÿ>wI”>w¸¦>wÅ4>w¨,>w€>wIÂ>w?™>w1=>w>vr%>u̳>vxÏ>vZý>v_ž>v=R>u¼‡>uÑ>uéÓ>uÄi>uƒ1>ulê>uDè>u>t“.>qgò>sm(>sÔ >rð±>mŠf>pz>q -~>ròÌ>s´>sâ>pÑ ->rfÎ>r¸ä>s»>rq>qÂ>r3Ê>ruù>ril>rLŸ>r!Q>rú>q™Š>p©s>pÖÐ>oEÁ>gØ»>gÚ>pB¡>p…S>nª½>nö>lb>oÞ>pî>oöø>oˆM>n*¯>oÈ>oL3>o)ï>nþ¾>nàt>nÓ9>n°¾>nrÄ>n]>nEm>mÊ >mP>m2s>gf>\î>bÅD>l_I>l·Þ>lå?>lÂç>l¯Ï>lŒ¶>l]‚>l(Î>lº>kÚ©>h'˜>_F4>_Õ–>gõÁ>hÂ4>f¨•>g·J>gsU>iV>fÉ„>hž+>iòÀ>iß~>iŸ±>i2×>iCw>hü`>`s,>]C>fó->f5j>gTË>heº>gnH>gÄ·>h9>h >fð>df>f×j>gã>gDë>g&>fp>`Â÷>clT>d®~>]gÚ>_ö*>c$¢>_œ|>`HÜ>erö>dƒ>_È>ZÕ—>UõS>_‡ë>cVç>b²>`ŸÙ>cÕ‰>bÏ:>`Ù>c&~>c >c±Ê>c¯K>bÎâ>]Îw>a]%>^Üâ>[Ý”>^aS>aõ>bÙ>b„ü>bcq>b;$>aþæ>aî«>a’Ó>`ºq>aW•>a&>`õz>_“Ö>_Ò>`¼Ë>`®ê>`c>>`(>`²>^§>_PÖ>_ÏÐ>_·«>_’>_2Œ>]¸>]$ˆ>]:o>^ªy>^} >^ƒ‹>^u|>]¿X>\û²>]ƒK>]ðñ>]Ò>]±Ñ>]R>[>\‰3>] ó>\üä>\µ0>\ #>\v>\cö>\V>\0Ý>[É>ZŽ >[X>YÇ>Ss >Wò†>Zå>X½>Y9Û>V–j>QŽ´>Qd›>X²0>X±ñ>S}4>X^ç>Y| >Tï>S¯>Y>X_g>RÇÿ>U >XB…>WÆ>URg>U”>T¹>Qé˜>FUJ>TE¾>W<>S#Ù>M>R™m>TN>W•>Vå>VÖÍ>V^m>O\ã>QÞ©>Uæ•>Uãÿ>T>U>­>UÙÍ>U¾ö>U†þ>UR>U >U²>TîE>TÎê>T©)>TŸ>T>T&Ç>T 3>SéÙ>S¨P>O’>D]¯>G|ã>4üÿ>Gy>R3&>RÙŽ>RãD>R‹ >Q%>N7¼>NÃç>L`t>O\á>K4û>Q#>QÑ×>Q©P>Qƒ>Q$W>MYw>N9N>Pñ¸>Po>L«ú>NÞT>P&¸>MÿÄ>N-›>MÀÓ>B0Ö>N >NQ>E¢³>IM >Nó´>Mj*>IMM>MïI>N˜P>N_(>L¸ò>HS…>L%>N¢>MïŠ>MË >Léœ>G‚>Bf¡>A'J>K6ç>HŠÆ>@¶>>eÈ>H®Ž>L:c>L[Œ>LG>L'®>Ll>Káì>KÌU>K­–>KŒa>Kb3>K?}>K+>KV>Jå^>JÈY>JŸ>Jr_>FÝ>þ -å?bâ?pš?°¥?pÂ?!w?cð?¯3?Zq? Ž_?°´?'w>ï=&>ÛÖI>Ôe>ÚÌ)>ísy?}É? ­g?tŠ? -~ý?‚>ô€þ>æûi>Û¨Í>ÒjY>ÐY¸>Û>i>ñJ?‚°? ®? -;®?÷)>ùÚÔ>òšÿ>ô¥>ø -ð>øV2>÷1Ç>ú2º>ÿ[?1ï>þ~ä?¸*?‡û? ÌÍ? ü}?2k?§‰?ˆx?¤™?g­?ŠÑ?vÕ? {>ù ª>éj>åSÉ>ç·ú>ê\£>êÀ >çEû>àž>>ÜÆ>á¡–>ìQé>ó`Ü>ò##>í’–>ëßl>êH!>à°É>΋g>¾€>ºƒo>dz£>àMÿ>ùLõ?0?Ì“?g¯?ËÕ? Ê?ƒ?ŸÎ?^-?I^?GÚ?þæ?ÈQ?sß?-X?¼?•?ç5?g? os>ÿ ’>ê€÷>Û¶>ÖR¥>Ù·‰>á÷>ëðÙ>÷¡œ?ñ}??Ìs?Šv?sD?¨‹? -±Ð? }Û?5´?@¤>÷òM>òõ9>óú>ötL>ú[>þ“ó?Ò?ÎP? -÷š?0¢?ìö?¼¨?‹?¶d?ÆŸ?œ?Ì?¿À?|e?RU>ý&>ûh>ÿ[?< ? ”Ž?šÛ?Y?Ï5? {?Ñ/?7û?ñu?²ª?.W?? -AÍ?ü×Ó>ë<Ÿ>ÚÏü>ÑUÝ>Íì->ËÉÙ>ËÈê>Ô(=>æ+þ>ùá,?D -?Ãe?Ú?Hy?¬\?»¥?$@? -½L?‹O?#z?)¬>?)7¼?$½?ÁŠ?? ? `L?"+?áç?Q? —>àŒ¢>Ì®D>Äçe>Ä»>É>ÑØõ>ßO˜>ïü¨>ÿè0?Bç?Ž,? `à? ¤—?¿N?ÿ÷?«û?Ó<>ñ÷>Û€>ÓÄÎ>ÙPÛ>倞>ñ{¬>ý -J?×à?¨á?Ê[?")S?˜Ò? ?n=? .?ÿX??"åÉ?*dÉ?-š??,¼È?(È—?!„?‡? Ãâ?º>ú¢ú>ô‰>îE>ç2>æ¡é>óÃG?‡T? À? ÀR? Å~??­?Ô?ü§?ú«?H¢?bR?Øl?1? ?ïì>ú;Ó>çzÓ>Ö·o>ÍÎÖ>Òæ>ä:n>ùª?‡Ô?ªÄ>ô÷Â>ÝÐ&>ËH>Ä¡>ÇÈ>Ð.M>Ûu>ã^>æ,Ê>ë¹~>÷¯?'?jª?øB? -?"•?+I?-õ>?(¬?äP? —? ôð? Ã?´³?¹ñ?™]?Ø{? ù?hU?…š?Ú+?(×±?//?21 ?4&Æ?6Sµ?7ýÖ?8kž?8•·?9R+?8Í?4Íä?.çÅ?+Q_?,1?/—˜?2ü[?4~g?3vq?/êt?*½Þ?&^ ?%ã›?)ˆb?-’?.m)?+@©?$¨¥?¯ð?Ê$?µo?4ê?ƒ???ÇÜ? F¢?#Äš?'ãš?(ŒÏ?$mî?´?Æ?l³?É?(ÂG?3‘p?:|H?=Ô!?@w@?Cí ?F°8?Eâ?A8?=Ü?>z?@ÿj?D`¾?G°Ó?IÒ ?Gb??>}þ?3)?,=?,¡T?-Lä?(yÈ? †å?Vh?"Gh?+?|?2ë6?7~Ä?9 d?6Û?0 é?(šž?"Á?™¢?"{f?)ïý?1Ü¢?6@}?6ÎO?5¦°?3±¤?/OÇ?&m?çZ?‘j?Üæ?š?+‚??3?3 -–?.(©?'é¼?#_@?#Ó,?)yN?0û?48r?6W(?4ûÛ?- ? 5ø?ôÛ?sD?Ö/?"ÆÉ?&”µ?%tc?"!*?ò?~? ¹‚?')õ?/™?5~;?74…?1Üð?$ç`?U?óä>öƒ"?º??¨ð?(_À?0|?2Áí?5! ?8®^?;x«?;fÐ?7=#?-é¢?ŽH?g‘>þRÅ>òJ ?­Æ?)è?)'Ö?5×¥?9?5tT?,Ui?!uP? -?«?GO?p?âð?ÄÊ?¼¸? ™N?‡?-{Â?:܆?@FZ?=@#?2W?"þ?ðö?@Ä?Ëç?¯Œ?¶Æ?)V?&?19ê?7éÞ?5RÒ?.¢£?-â”?5hî?<­W?;_U?1áw?&Y? Ô?*;?šž?(î>?5'p?>ù?Cþ°?Dûi?Dôö?DÖ½?AÃò?:nO?2\C?-kÌ?+×b?+ºg?+B€?)—ß?'Ö6?'œ£?(öÿ?+ÑM?0Qu?4˜ö?5±h?2§¢?-@m?(’Ý?'u¬?*Ö?1 U?8=4??@2?EhŽ?Hý?He`?Cð;?=©/?89À?5íN?6Ý_?8VS?8ZÍ?9)½?>)ü?Fõr?OìÝ?Tø??SKå?K¨?@A?8ƒ¸?9/w?@-e?Fmó?Gy\?D™A?Aí?= ?4Œ%?%æí?û^? -ä?7?†‡?cA?'^Þ?0?8O‰?AÜm?J¨*?O‹Ç?PF‰?LÀÓ?Cñ|?9 ê?4£?9’w?EC?N N?O*®?IP??øu?7úå?2wé?.¾?,l2?-ª:?28›?7?8ñ¢?7hp?5º†?7LÓ?;uÈ??n?Aa?C˜?E4?D×?A?z?;c+?2CN?' R?[?Aâ?âÒ?&>Ö?01S?7X’?%Ê?=Ôx?@C?Cš4?E+?DÆX?D¾ì?Fšq?JJÕ?MoÆ?M"3?IéÞ?GŠ–?Hˆˆ?K¨Ä?Má¬?N -™?M}…?Lúz?L·?K{ ?Lì¤?OV9?PÀ?Nß?IÜ°?E;…?B ?B?DÖ?GÂ(?ItB?JM«?JÀ3?JÃì?J–:?K²‰?Oc?QÁ­?MÿÚ?B7H?4¤3?. Ó?0>í?49Ï?2èg?-d*?*?+wÂ?.o»?0¡.?2Ux?3ìa?5¾µ?8¼‹?<æÔ?@–š?B²??`‰?7*¼?,ã‚?(Õ&?,Ú5?0+m?+!;? ì^?a?ü?;»?#ê?*iy?2¦Ø?;¸n?B ?C–F?B«ñ?B|õ?CûG?F‡½?IT}?K¤­?M9Q?NC -?N/Ë?K# ?D%g?;¸U?5Öü?3Â?4kó?7#.?:rX?:Éù?6tš?1É?/£®?2¶?5õ?5^5?2Њ?3öù?:G»?@›?@­¶?8Ö?-Í©?'Î?*ÉÍ?2´%?:÷?>‹??áX?@Yl?D_†?Lw?S×c?V«Z?TÌ?Mc…?>ë?-gÿ?#‹õ?%r?,ît?2XÎ?5§?7»é?;œ7?AŒ?G°˜?Mé?OÉ•?M„Î?GøF?@Çó?9È{?5 ‡?47^?7?:Fû?:æ$?:4B?:3M?;\Q?>Ow?CŠ?IÁ ?NT?Oý?Oõ±?Pr½?Rz?Táw?Uöj?U¢6?U¡?Tau?Rpl?O<'?L†‹?L61?N=t?P1?P?MTº?HŒs?DƒP?E’ô?L×?RÜ*?T¿ò?Rf¬?P(¶?Oë?K¹â?E—Ð?@«Ñ??h|?@1!?Aä+?D®~?G¶Ó?IÐÀ?IæÍ?Fú¹?B?=À™?<…”??šê?Eë?Lw¬?Q„ù?U Ý?W#?VÕG|?+ŠA?Ô»?rí? žš?]“?Uè?#GY?,Ñû?9â\?I>m?Z.?kT/?w+â?}­³?€‘ç?‚‘l?†ª­?‹K5?Œš˜?Šx¸?‰jI?Œ-Ž? õ?‘•d?n!?kE?‰ì´?ˆS ?‡Üï?„¢¥?¸~?—#?†#?õd?’ž"?“¹•?’þ»?‘ëØ?‘¦/?’xu?“– ?“œ—?‘@]?‹×Á?„>?{©´?{t½?ƒfÆ?‰>‹?ŠP:?…z‚?|E‰?vðz?Æ9?„W‡?‚ôx?{ú¨?rÜÅ?iÄ‹?[ø÷?Jj?8H?'u’? -±?„?)úä?AF?SDï?].?b˜Ù?h~*?pŠ-?x®N?|‹?|?}Óÿ?}ó?„½è?…ŠC?ƒY¬?€œô?|#«?xØ?}ó?„(Ý?‰>?Œ‚­?Ž?æ´?½??Ž®Þ?‹ƒŽ?ŠWÈ?ŠTC?‰[?‡›?…µ'?„Ö?ƒG.?ƒ¬?…9®?‡_Ì?ˆy%?†´Â?«Ù?u¿z?d…Ô?NT1?5&6?©ë>÷lÆ>¼FŒ>Œ¦÷>kS>p>¨Ñ?>åw#? ð?3òÜ?P&g?dý©?p(æ?t_¯?tÆj?t1‰?x¡Y?ój?†U?†;ü?ƒ—?ƒr??†#K?ˆÈ?‡Fx?…ý?‡4c?ˆ?…ø¡?¦÷?\?„˜þ?‡3}?„~o?y ¡?gÉ?Y§Ø?MÐÉ?<¸T?"Eø?s">¾z¼>‘Í\>Š9æ>¨åg>à^?Ô??)I½?>‚ù?QCm?an™?mƒ[?x)?‚ ü?ˆ»?‹ï?Œ/Ø?Š8?ˆöC?‰ƒx?Šæò?‹Çb?Œvú?Ž¸µ?‘¦L?’ÙL?“f?•ŒË?˜§¥?š~?™ñ?–ÿ’?’óè? ô?A?ã?•›Ž?™î²?›g“?›í`?›0$?–—?uº?Œû?Á?–8ã?šåb?œt?œÑf?œÔ:?œ6Á?›uH?›UÍ?›í ?›ò?šÍØ?šô?óÖ? ÷Â?¡K?Ÿá@?ž\1?œ•¬?šã÷?›¶+?Ÿnh?¢e¶?¡«ó?3¶?–yÁ?Ì[?ŽºV? 4?’Pž?•èJ?™þì?žå^?£q?¥S¥?£¼(? 7Î?þç?ž–®?žCj?˜^Þ?ŽÉœ?‰Öú?7¿?™Vc?Ÿ„?¡o}?¡ä_? ŒÄ?Bý?™«ò?–ä?•œã?•¤¼?”û€?”$?–ˆ?›l?ž3¸?›æ¦?•<Î?2ý?‘ƒm?•¦W?–° ?–7=?˜À›?œ‹Â?œ*~?—F?“Ú2?•“Z?˜£é?˜0g?“U ?ŒY?‡×½?‰T?ŽŠ±?”äT?™.ì?™52?•›Ò?‘´û?vÑ?’‹?–Bñ?™Cž?š7Ã?™:"?—ú?”>u?’*¬?‘!È?»?Š¶ô?…ØÊ? L?v:j?dݧ?K•r?0`]?$ñ_?3ˆQ?Pÿ?lz?û?„ÆÝ?‡°¾?‰€±?‹ l?9? l?“ -?•„T?—°p?š*™?œ8?›Xó?—Vu?”M}?”Ã}?– ?–ß?ƒë?‘•—?–ò?—œM?–ˆÀ?–a¸?™JÑ?œ¤?œ_Î?™¥Ä?˜Ž­?™Ä¢?›Àñ?›¯?˜cŠ?–‹?™¥˜?ÿ–?Ÿu$?ŸýZ?¢‰Z?¤>?¡±•?5ë?™ßŸ?–W?“R°?”›£?—Àæ?˜`œ?˜2?™X,?š¥†?›³œ?œüˆ?žu?ž ¤?Ÿ?Ú? °Ì? Ê|?žm{?™®©?’8e?ˆå-?ƒno?ˆþ½?•àù?Ÿ¢ ?£Bñ?¢U?÷•?™äD?˜§Ä?—΂?–ì8?—(3?–ü÷?–Ó?™M?œ‚@?žG?ž“e?Ÿ/õ?oB?˜ós?•–?•º>?–ªk?–‘:?˜Ëx?Ÿ‘?Ÿ¿ ?æ9?œ±ò?ž•–? OÚ?ž?H?˜ú*?“ÂW?’ö ?˜š?ž”í?¢J?¢ô‰?¢™"? ”Q?Ð7?œÞ?™°%?”Nj?È?Îç?“Ñ?•ˆ^?˜É+?ׇ? ýK? ªL?ž7‹?›Ù?šA ?™60?™{?™Â?˜=]?•åö?’ã×?Ó¥?ˆRŒ?‡²ª?ª?”¢é?—ø?•Çz?”d?’™Ä?Žuj?‡å?€/x?zv?{Éä?~ï½?‚"=?…ÄÈ?‡A­?…Ì?z™?|Â?€?…o¼?Šz±?ŒÉÀ?Œ·%?Œº,?‡Ð?—ÔÑ?Ó?Ô!?œM?™£F?—Ï(?–ÅÉ?“l(?Œ·¼?†cÆ?†ƒ?Œgé?“Š?–I*?”Ýç?’á?–(t?”À?—‘î?›o:?›0Â?˜€?–ðû?˜ºÞ?œ®ô?Ÿ‰E?¡5¸?¢ûä?£Îë?¢'„?žê]?]f?žŽ­?¡s?£6{?£Ø?¢{›?Ÿ'$?œø¹?Ÿv?¢2@?¢ÿ?¢e„?¡é9?¡)?Ÿª?œ º?š‘Š?™A?˜.(?™?›*p?0S?žd?žÓ/?žEd?œû ?›£¥?œ<#?žiÖ?Ÿt¾?ŸyD?Ÿ“•?Ÿ~É?ž®j?q¹??¹—?ž˜c?ŸL¼?ŸÝö? ¦š?¡°ª?¢™?¢;? Å?ŸÇµ?Ÿ §?ŸôÖ?ŸÄb?ž»;?ÐÊ?œÚ?œ­õ?žqJ? ˜þ?¡§þ?¡m? 7>?Ÿ€?ŸÙ?Ÿw$?žÙ?ž'?ŸŒ?Ÿ–¸?že?ž%?ŽLã?Ô?“Ö·?–mª?—(?—f -?–ç¸?•#Á?‘u¦?Žš?î“?‘º?P?C—?Ž& ?’Ó?–2?—ì?—»u?–0E?•7î?•ÿ€?–¬ƒ?–”V?–£N?–}?–&Ä?•Éñ?“™?ŒÑ‚?ŠÛ?¿?•å ?—žŒ?—“_?——­?Š¯j?Š@P?‹zt?1P?«|?‹Ùó?‡€|?‚ø?€2Ï?}Ã4?‚w?‚eÆ?y›?{é„?€…b?… ö?…=×?„T˜?„Ú ?ˆSÆ?‹h?‹ë?ˆ°m?†1?„g+?…S™?‰Hó?Œ¿?ŒŸâ?Œ¿G?86?E?Œïø?Œ¶?‹^e?‡ë -?…(•?†x?‰ s?‰ - ?ˆËA?ŠD7?Šó[?Š?‰Š?Š›‹?Œ¯?Œ}?‹ç/?ŠÑs?‰.›?†%?…5µ?‡ëi?Š'Ë?Š’H?‰c$?†^c?„:à?„eJ?ŠC?zÝr?€ª±?†™¸?‡ôB?‡p?‡â£?‡ˆŽ?†ˆ"?†+@?„¹”?ƒ6ñ?…Ø?‡¸o?ˆ`r?‡™Ó?‡?†p"?…¿«?‡ `?ˆµ¹?ˆ—å?‰?Š?‹J¥?‹K‹?ŠËz?‰¹—?‡à$?…îz?„Ö:?„DÞ?„«3?„øÿ?ƒð?qÒ?€Ú?ƒÑì?‡\?ˆÐl?‰]X?ˆóÅ?‡ø!?†p®?…U?„™?…]?‡H¾?ˆƒÓ?‡õä?†–?…mÖ?„ÌÈ?„]I?…(r?…þ0?ƒß²?µW?ƒ?„ÐÀ?…|Ç?„¿x?*¹?|¼|?¢j?ƒU -?ƒ­u?k’?Íz?„D?„uÈ?ƒæ?ƒý]?…•´?…8Ö?„èe?…BS?„Á?‚¤é?‚:ä?„Ô¶?…ð?ƒ-4?G?ƒ$‚?„(°?‚‚?&æ?ƒm?†¨?‡6Ô?‡;1?‡õ?†Òi?…’Y?‚¡¡?zÑ?€Cö?ƒó?†e?‡÷?†à¶?„¸û?€q?ù´?„ -?†s?†(?ƒÌÌ?€¯˜?€O#?‚o*?ƒ¦?„Øß?…éî?…äÛ?…]Ö?„Fu?‚¿æ?€4î?y°?{AÝ?˜D?ƒC\?ƒ_?ƒ¢ô?„]ï?„š¿?ƒÁ8?‚´O?ƒTG?„Or?„fÅ?„®?„ÿ?„N?‚ÇÅ?‚ b?ƒÓ?‚ª5?_?‹û?ƒL?‚¹æ?T\?Ôµ?‚×Ç?‚ßu?óP?!ý?Î×?‚ÿ°?ƒÑ%?„T^?„w?„#¿?w*ê?wI¶?vþ?v£÷?vC?v3?v -ø?vo?uŠ7?tÿ›?t£?t] ?ts?tÏk?u<6?uT$?u"Ó?uŠ?t÷-?t®?t ¥?t ?sÛþ?rþ?o‘V?o/?n…7?k#ò?kƳ?n—9?oA?o&?q#ê?qðÏ?qs°?r -ö?rÆ)?r˜K?r²¤?r¬?rµó?rÛé?rîd?r0?q†¨?pàF?pG?nøÌ?nóŸ?m«Á?e|Ø?Yi’?\Š?gV?h¡J?_Ôb?\7•?eZ¬?kϦ?m‹Ù?nƒ?n¾A?mÇ?mT_?mû³?nQ?m›Ç?mfd?k¸-?hÜ&?i?k??k”?kß-?lÆ©?lj©?kÔ¾?la²?l·l?ky3?hý?hŠ?jTŠ?kei?j¬€?jÿ¼?kÓK?k³†?j¤,?i¦?i°s?iò%?ii?gO?eq ?f^û?h¶i?hÂÔ?hÔ¿?iŽ†?i –?hM?hêÆ?iV?i›â?i‹?hû?h'œ?gÙÑ?h(è?hš?i)?i6&?gÏT?e…?eÒ?fúä?hw‰?hxÍ?ft„?c[ë?b¶â?d$W?eEk?fI?eæÈ?fe ?gëG?hQD?f»®?e%?f3£?fÛ?eÑŠ?eô?eÐü?eÔ?bcH?aŸ§?dCš?eKË?cž­?bÌ?cŸ?cÜ?bC]?_—ÿ?_V•?_ø™?_ª¿?aO»?bŸ?bå?bï¢?d -‚?dêb?dè—?d—Š?d©]?eG?e@õ?coV?aÓ™?b˜?cš?c±Á?cÿ¹?c¬n?cjM?bØ9?aÿW?aqÊ?a'-?b­’?cã?c:a?b‚?b½?`ºü?^2Í?_ð?bVº?c_Ñ?cíã?cò3?c?bÁS?aá?_œG?`Ü1?bGç?aÿ5?aŠô?aUý?auª?aŒ?`ŸÁ?`+q?_Ô?`ͺ?bwÐ?b› -?bI\?a»Q?^-7?WÍ·?X²Z?_eú?a¤?`µÂ?`ö¬?a6?`–¬?`‡h?`¡¼?``?a‘?azñ?_(:?ZŸä?\†?_Õ’?` ð?^Û¦?^˜*?_Rê?_Ä?`8È?^b^?W­0?RÕQ?W ù?Zñ>?X¬Š?ZÚ«?]èü?]¾T?\8Ü?[¥?]‚a?^¬°?^ƒ?[¥+?Z~?[¯á?\o˜?Y« ?Sø£?Tu¯?Z Ü?[â‹?Z=_?UX´?Sðå?Y± ?\‹Û?\4?[{,?\\?\àÝ?\¯s?]1å?]ÜÒ?]Éq?]9?]‹?][Ã?[Y?Wd¶?YÍ?\&`?]Ð?]h?\T?[+?[/?\N0?\¾•?\tœ?[ùõ?[˜Ç?[î?[´Ù?ZÙ?Y:ù?ZO¨?Zñ?YR|?XNŽ?Y«7?[8z?[¼å?[K¦?Zá«?Yž?Uëø?T†~?W(Ô?Z©?Z?ß?WQ”?UæÖ?Vä†?X¶?Wˆ?T$©?QS“?QX5?UZü?WS‚?TÐõ?Qž•?QÂc?Rå¶?S‹É?TjD?UØ?WMd?XŒ?Vʾ?VKŽ?WOE?W -?VÞ?VÉ_?W1?Uå?OšG?Fâ?DÓ#?Hd¦?M†S?P½Ò?R£&?S¦c?RÇ?Ql‰?PP½?P;í?Q/š?Q>Û?P4?N×ä?MÀŒ?L4-?Jdr?N†¯?Q̧?R"Ý?S'M?R´A?RR;?S'.?QÍ?Nló?MÇþ?L_ã?N![?Pð>?Q4j?RY?T‡?TeL?T –?Sm4?S$=?Sk¤?Q~?Nlê?N®f?P¢ø?QÈ_?RYe?QÊþ?Q w?PAÿ?Nݨ?QA¼?S“Ó?SâÉ?S%"?Q“ª?Pð,?P«l?P{?P<"?OÕš?P.Ú?Q•+?R´?Rª?Q>Â?PL-?P×è?R'(?RÄï?SÂ?RW?Q.ù?P»i?PÔ?Q?QFÝ?QóA?R!ÿ?Q?OTó?L<?Lç?O¶?Le?MÇ…?N$l?M:0?Mœæ?Mm%?K^×?L™?O=Ê?PZ?P{?NàS?Loé?IÙÛ?JãË?M’m?O?ç?M¢¯?H÷?I¸M?Mõ!?O‹?O+È?NØM?M†‰?K‰?Jsi?Lr?LÈm?Iõù?Fx"?HÖÕ?Kí÷?I‡?Dœ\?GæP?M!?M¸î?LXv?Jx?Hªä?I/?JM2?JôM?Lü»?Mç?K]y?IiE?I+_?JË2?K—f?KhE?Jëi?IS}?EÖí?@0Ý?<€µ?=Ò[?C.#?F­‘?Hõß?JZ?JÐ?K€?JB¿?I°g?J7?IÛE?I8?GVM?D‹4?EÇ£?GÉ ?I0¿?IÎ|?Hò`?G®B?F<¾?F¿ö?Ha„?H*…?FâÙ?F{?F!)?Eyj?E4Û?E -å?Dä«?Câc?A°D??<¥??VN??wŒ?>lš?;ì¸?8×ñ?5/å?0Ã?)“"?­p?· >ÖH²>û‘M?š?)JW?/ëH?4ã?8f¢?9Ù­?:÷Ô?=|?>ô›?@ -œ?AGÊ?BK7?BEº?Bj_?BÛ?CÝ:?D)¶?AbÏ?>(?@8?CÀ¦?DÃp?DÚ?D§ÿ?Dsl?Cí4?B°X?BR™?B'h?B¼7?Cšƒ?Ckã?C C?C¶>?C¯ë?CµZ?ChÀ?C“?CÞ¶?D=%?DYg?Cü®?Cé*?CsW?B?@è»?Aù?Bß ?C8>?C>¾?B€E?Aš?Av?BoÃ?C»¶?CÙ.?C„—?C?BÅ??B©P?B™?B4³?A‘“?@›°??U^?@¿½?AØ.?A„?A5+?@É1?@™c?@•#?@)?=Ï ?=0E??rÌ?@–?@Ý ?@l ?=–ø?;UÌ?>›l?@Ã?@5??^‘?>2õ?=zý?=̹?>Ü!??—X??&ž?>za?=o¡?<¢^?> H?>ô?>Eÿ?=Ÿr?<’(?:Xg?:>ï?;¨?9ï5?9=Œ?;ÕW?<üê?=<?=šC?=Ãb?=fs?<Ñl?<ƒ?;‘O?;³?;sÞ?;h¿?;œ?;Î?;5A?:gœ?:M?;О??1+Ì?1"Ù?2`"?2|•?2‰)?2Ȭ?2M¿?0€—?.·/?/án?10P?0Î?/æW?0F?0O‘?0Ž?0¹¹?0ä1?/òç?.¾½?/rV?0*K?02é?/ÌH?/:O?/W?/Ë?- ‚?*…?(®H?+>‡?-úÿ?/ ?.¸é?.–?-Äw?.w?-Ù*?-^?-§Ø?-Äi?,k;?+ô™?,JÕ?+jƒ?* ?*«®?,AM?,z°?+ŸÄ?+Ÿ?+g„?)Ü™?*[«?,è!?,ù‹?+/?*¹?+è¯?,)æ?+å$?+Ÿ?+uË?+7?+Wó?+hY?+RÃ?,¿Ã?-K?,‘€?,uç?,Ç?,V?,V:?,à‘?,µË?,Ë?-AŠ?-' ?+‰^?*¡g?+Qà?+ç -?+ý?+w?+÷j?,i?,,?,X•?,k~?,­?,Ñè?,OX?+ ¿?)ý?*cz?*ìZ?*Áq?*-è?*ÇÊ?+šÛ?+L&?+••?,tÛ?,ø?,é?,íù?,, ?*ÓF?*WÆ?*Bn?)f*?)M@?)ó?*`}?* ‘?)êÏ?'á ?)}b?+¬?,ì?+Pµ?(³œ?'ëI?* -î?+Î?,X?,iî?,|ì?+Öq?+!ð?+]S?)°ƒ?%àê?'±€?*ùy?+ôü?+=«?*÷,?+ÞQ?, ?+6·?(9ó?HÏ?šu?ê?/š?!?«G?zN?ø?ÝÌ?ª&?!Û?Ħ?›Ÿ?Æ?‰ÿ?¿×?ú"?¯õ?;n?7U?ß?XY?ÂØ?æg?VW?5?Î?2s?°?.?' ?84?Q?Xx?BM?=Õ?I?ï?åÜ?¨Y?ðS?7«?£?|ý?{ÿ?‰ˆ?p¬?V³?} -? ß7? “? -Çu? 7]? ZÈ?î!? ³7?#E?¢Ç?—B?-H?ò?MD?Òb?Pò?/ ?Æ{?ó?É? ú -? KÒ? -èÈ? j? [? TN? 6]? Aj? ˆï? Dv? çy?Jz?<ƒ? ™Ä? •?pÿ?]? ×|? ¤/? €? -™Ê? j? -Rÿ? -x? -{? (ÿ? Ïs? £? q.? X? €?·? 5?‚"?ÑQ?áˆ?Â?zº?–\?Ll?H?ÌP?Î?t…?mÅ?¾é?þÁ?qù?‚µ?-·?/Á? p?'?@?>?øÓ?ÉÇ?IÓ?!Â?Z?ÅV?ÞN?£5??Š?tÖ?ç½?íýSY?‹>ÿv^>üO?p7?&ÿ>þ´3>ü·B?›Q?¢Ø? ·?G?‰µ?"&?‰„?/Ð?ßÇ??(?ôx?t¾?O€?XÔ?L0?™2? F?ÕÍ?IØ?Ö?6¹?Nv?×d?ó2?Ù¦?RÙ?,l?‡{?Ìl?Õì?×?ѵ?#?I??‡4?²?8:?‡`?:`?§?‚?ýp?ùã?n‹?Z&?êÐ?é?BÕ?¡œ?cü?¨»?6m?Ï?ë›?ç?œ`?£^?ké?‚…?g0?=‹??J4?àÛ?«?Õ§?¨ë?¼½?á(?²æ?í“??ÚH?sC?mP?‹?)N?Ps?h¥?9?çÆ?÷§?þÜ?pø?ÌO?Ûä?Âã?0?Y×?<0?;î?C?Ù‰?.?/Š?#\?J?Òù?Ú7?ãÞ?Û ?çÆ?ã¦?°’?FÑ?r?AU?sÁ?o,?·?Þ?Ř?&±?DÐ?6I?‘Œ?Jï?'?í¥?ò¡?Ð?°ß?”?Ç`?ª?Óq?hù>ü?G>üª?SÒ?0V?Dú?Öm>û]>øË>þn>ýÉ>ý­q>ÿrX?23>ÿæ>ÿ n>ÿË|>ÿÌ>þï=>ÿlP>þág>ø´>ü5?»–?U’?Ù>ü[>÷ÓM>üb!>ÿ¾'? q>þ|Õ>ÿÇ ?_g?N>ýO>÷]=>ý ¨?&^>þ¸:>þæH>ÿ½³>ÿ˜Ø>ÿf{>þX>ÿ_P>ÿØO>ÿJR>ÿœ>þ¯->ý¦2>ý~£>ýù€>ýÚ>ýæ&>þ+>ýš3>ýl>ý>ûí>ú)R>ûÛ‘>üXE>üÑ>ûº‡>ù~È>ù>úÙÿ>ùs>ù²A>ûcÑ>úgÅ>ù\þ>ùjA>ø(h>ùKÍ>öñL>ò/>÷ÛI>ù­i>ö…§>óß>÷´>ø°}>øݾ>úž>øiª>óãÄ>õÞÕ>ø T>øP*>øÕ>ùt>÷©Ê>öN¾>õ¤æ>õÚõ>ôýá>õÁÛ>ö¨ª>õÂ)>õCË>õÓä>õ§@>õý>ö -{>õfK>õ%>ñx>ð¡l>ö">ög>óÚi>ó² ->õL>õ6Í>ôÑ»>óË>ñû>ñDd>ðþ@>ñ­”>ñ¬ÿ>ñ“ä>òJÉ>òp>ó$ž>ò>òË,>ò;V>òe>ñÁÔ>ñ >î·ñ>î”Î>ï:¡>ð¸¡>ñ^>ì[ ->æ½>íÌl>ñ?>ð¾r>ðz»>ñµ>ð¯f>ï×ì>ï/ê>îññ>ìêb>èR±>êÜJ>îd.>ïSC>ïç8>ð 3>ïÅ>ï…®>ï²f>ïº>ïˆP>ï>¨>íLå>êØÞ>àv>ÃS¦>ËSä>à¸>åi>èaš>éèz>êê~>éSi>åv²>ä®>é±ð>ë-ˆ>ì%­>ëkõ>ê(î>é+î>é®ì>é:k>è >ãîw>Þëw>Òê–>¬ˆ„>”œž>¼ ->Ø[>á ¼>ä4Ù>昨>æ«Q>âÀ<>äËS>èe´>èÄ6>é–ÿ>éié>è•>ç¨7>æ'C>ç—Œ>è>è3å>çÿ>åö’>å{T>å•>åúc>æû>ä¼é>ã8>àS>Ý«”>Þæ!>âdÞ>ãù¹>ä]>ä_D>ã¦û>á“Ã>ä*ë>å¸>äì¶>åÐ(>å‹­>æƒ5>æëÞ>æ*R>åãU>æÁ>årN>äÑV>åyP>æJR>æOL>åͪ>ä*I>ßÍ}>ÞSB>á΃>á2>>ß&6>Û{T>˦ý>£e>¥4æ>È/>ÖŽd>Úú>Ý·>Ýv¼>ÝF‡>àð >ß|ò>à;U>ã ç>âWÚ>ÝzÃ>܈U>â¶>âœf>â0\>ã‹>âÇO>ãÁ‘>ä]×>ä’_>ãµ ->á 6>ßÚ>àDV>âˆë>àöÈ>áPo>ãl:>ã±›>ãÌò>àdÂ>àO­>âÿì>â`k>ÝW€>ÞM¹>áj>Þ¶*>Ý_>ݬ>ÙŸª>Ô¾y>Ño >×@K>Û§>Û0”>ß1>à;=>Þ1>ß2œ>áø¹>âfÂ>á3 >ßm>á*¤>Ṃ>á€!>á„›>áDP>á„>áå>Þ>Üòñ>Ü¢î>ß¾¸>ày‡>à¥ï>ßý²>Üi7>Ò=Ù>ÕÝÙ>ÞA›>ßG>ÞÉd>Þí‰>Þ•6>Ýq;>Û¶">׋‹>Ü|>ß<„>ÞöK>ÝÏû>ÜŒ‰>ÚòD>ØvØ>Ú¥§>ÛC¶>Ú),>ØÉ‚>Ùuü>Ùù1>Ù˜±>Ø,¹>Ô÷Q>Ѐk>Æò)>¿c>ÇA'>Ëù=>ÒÑ6>ÖÓ>ÖQZ>Öm>×Eå>×Ç:>×ê7>×)>>ÙH.>Úó¥>Ú“à>×¼è>×£(>ÚW>Ù?È>Ø©ï>Ùíz>ÚH>Ú¥>Ù>>ÖI—>ѲÎ>Ö¿Z>Ù2¿>Öþp>Õ >Õ›>Ó±‰>Ïs>Îy—>ÕB>×Êê>Ø_ >Øų>Ø« ->×Ãé>Ô©Ó>Ñ,ß>Ñ×d>Ó‡5>Ö=!>×Û¼>×Ôì>×Ì>ךõ>×RE>Ö›$>Ór%>ÑØì>Ô»™>Ö_>Ô9Ù>Ñ3>ÑƵ>Ó€)>Õ4>Ô#š>Ô4÷>Ô¯S>Ô"£>ÓõU>ÓQˆ>ѹ¿>Í/G>Î Û>ÑŠn>Ð2Ý>Ë6ð>Ãû÷>¿ -÷>µ2É>®í ->¼¶ï>Æ6ß>ǵ$>˃>ÎQÑ>Ïç˜>ÐIà>Ñ!>Ñc’>Ïjæ>Ð͹>ÒQ >Ò±Ë>Ò€–>Ò§h>Ò-p>г®>Ñ6>Ò•a>Òô>Κž>Á™þ>Ä3>йï>Ò6¯>ÑVD>ÑNF>ÑnË>Ï>B>Ç>È…>Ϧ>Ðð¤>ÌÔA>À;Ô>Æö>ÌÒ˜>ÄoÅ>Ê7'>Ì–e>Íoï>Í÷ >Í;>>Íë>Í4E>ÄÉ>Éb>Íû{>Ê‹>ËB±>Ρ¸>Îë—>Î¥ß>ΨT>Î3©>ÎG>α>Íü3>Î#±>ÍÛD>Íÿ•>Ë'¨>Ǩ>ËpD>Íè^>Íc>Ìûx>Í_û>Í–ê>ÌÄ%>Ê°¯>ËÁ¹>Ì”&>ËÐÊ>É“ú>ÉÛ>ʸß>Ê´Ý>Ê©_>Êh >Ë>Ë*>Ë” >Ë•æ>Ëc£>Ë<7>ÉÚ>ȯë>Éd">ÈÔÜ>ȹË>Å>Á3$>½“°>ÂrÕ>Áõ>À]F>ÃÑæ>Á F>ºeÓ>©$…>£¢>>µBl>¾v->¾)q>¼uv>ÃÉ>ÄG>Á Ø>Â%">Æ()>Æ&>ÁÐç>¾GX>¿H>ÀÝp>·«>ÂzL>ÃŒ>ÆÔ‰>Çê_>ǹX>Çí_>Çç>Çl>ÇkQ>ÇZ[>Ç µ>Æ|å>ÃÛa>Ä;U>Å'V>ÄâD>Åö´>Ƥ>Æš_>ÆQ>ŧ>Å:Š>ÄÎ>Åÿ>Åï¨>Ã.>€3>Åï>Ä´ˆ>Ä¿Ú>ÅBÃ>Ū#>Å4>Ä;Ï>Å*G>ÅQÓ>Å%>Ãv>Ã=ë>Ä=V>Á«i>ÁÇm>ÃRç>Âð>Á¾ó>Àwº>À¾/>Ã/Õ>Ãÿ{>ä >ÂW©>¿Ôm>ÂSü>Ãb½>¤&>Â~>Âi >Á\>ÀY$>Áo6>À&Ð>Àtn>Â)=>Á-Ó>¾£u>½È/>µMÎ>ºŸæ>¾c >¸,è>®—>º;$>À{W>¾Dä>¾ ™>ÀÔf>ÀÂ>¾‚'>¼¥È>½06>¼NF>¶÷î>¼wž>½¯>ºâ|>ºÃ]>¾ß>¾ˆ>»ëÃ>¼Ù>¾z5>¿B>¼ä7>»´à>½oŽ>¾•m>¾J‰>½Ëí>½¾ß>¾«–>¾“x>¾:»>½ç>¼õs>½¡>¾!p>½µæ>¼Ê¼>¼áÒ>½ql>½¬>»ª«>¹ð>»¿€>¼L ->»ók>¼ …>¼D>ºü>ºÄ‡>»«´>ºoË>¹°>¸N„>¸ÂU>·U_>¶g´>µŒö>²¤ä>ª¢>šŽ*>dù>«™s>±¦Y>´ë»>µóÃ>·hà>·ë >·Ç£>¸¥m>¸ÙI>µ«•>µ÷>¶t‘>¸t>¹ÃÊ>¹à%>¹Çü>¹'>¸ýè>¹¯m>¹+o>·ØT>¸»f>¸1Ð>¶ø=>²m>³¥ï>µÖþ>·ù>¹2>¹e>¸ä>· ž>±@>³œ‹>µše>³0µ>·/÷>¶Ñ0>³â>>µ$i>´`>µä>·˜ ->·*Ú>µv…>³ry>´1,>´>=>´ï>¬h¢>±w·>¶C>¶Ï>¶Hò>µ†Ì>³»>³¦>±íC>³tÑ>²˜ý>³û!>µ#T>´í>±ˆ>²>³¹>´nö>´ì>´§Ÿ>³Á[>²û–>³kÆ>´Ûù>´­Â>´Ø>´§ó>´W >´M>³ù2>´>²ã8>²ú>³p1>²?þ>°Iê>«í¬>®äæ>±$>±-ñ>¯{v>±„c>²Îþ>³D&>²á˜>²QÙ>²>®‚è>¯òr>°ö½>°‰*>±Ò›>²}ë>²†â>²@ >±{4>®ôs>®G>­eT>¯­Ò>±"$>±‚>¯bä>®¢†>®½»>± >±/.>°öK>°P‚>°;æ>°Öù>°ÅM>°Bð>®ÔÊ>¯Å‰>¯p>¯ ‘>¯Kd>®3Í>­®`>¯=)>®ìª>¯6ñ>¯m>¯dÖ>¯ q>®‰‡>­<>¬×ÿ>­™Ê>«¨Û>«.>®=»>®Gž>®D>­Ì>­öƒ>®xü>®cß>­o7>­yþ>­¡»>« -Ï>¦öH>©©>¬ö®>¬Ö`>©FG>ªý8>¬{¢>«ÑX>¬d>«µO>©§>©]>«Ù >¬Ç >¬s%>«ÔÝ>«þÖ>«/>¦Rð>©5v>«ñÓ>«ÔŸ>«>ªR>«1>«CH>ª=ÿ>©•¶>ª–P>ªtC>ª3Ñ>©Ú’>ª>ª¬y>ªW>>©Ý«>ªH¸>ªA—>©…M>©­>©˜">©ƒš>¨ðý>©3>©€0>¨>¨#Î>¦»C>§ñF>¨v%>¨æö>©>¨ÌÉ>¨¡í>¨–+>¨vÅ>§í>§–L>§˜V>¥ÒÓ>¥ðû>¦’>¤Ûn>¤dª>¡,>¢¦{>¢Bô>Ÿèˆ>š\p>‹ºq>‰R¯>˜—k>ž²Y> *È>¢NÔ>£¤,>¤&:>£ÿ[>£œ%>¥=‚>¥½á>¥±&>¥€p>¥E*>¤± ->¤G‡>¥u1>¥ˆ>¥ÆS>¥Üi>¥Ô­>¥Ë>¥‘À>£¢£>¢P×>¤²þ>¤Ýô>£þñ>¤Wý>¥Í>¤½d>¡›>ŸÐM>¤Þ>¤ž1>¤†è>¤>¤V>¤7a>£û>¢#q>ŸÐç>¢éw>£º·>£'w>¢³>¢ƒœ>£‘à>¡¯>Ÿ:¶>¡çð>¢Üñ>¢è±>¢X4>¢î:>¢äË>¢++>œûú> R>¢*> Ÿt> ¬„>¡¿²>¡‹>¡4>¡r>¡\=> ·>¡˜û> þÿ>6>æË> ÆÔ>¡R]>¡N> âW> ìå>¡G> ÏÖ>ŸÌƒ>Ÿªž> y8>žPZ>ž´ù> fH> lf> AÜ> /> >Ÿò6>Ÿ˜A>Ÿ>Ÿ¿8>Ÿ¦w>ŸWy>Ÿ+ý>Ÿy >Ÿt‹>ŸM­>Ÿ&>LÎ>™øÚ>žÀ>žøR>žÎ£>ž>.>1æ>j?>ž0>ù>>’ >œ%g>¨ª>ž 9>Å>¹ >œbŒ>–¼k>—mÂ>›;>œë§>eŸ>œe¤>šDÛ>˜+>›b>›°§>œ”Ø>›ãÑ>œGN>œ‘>œko>›ø°>›‚i>›Ã>—Åé>—Œî>›¹>š\^>™áÞ>›©>›¶Y>›jˆ>›µ>›%>š#Š>˜d>šlÕ>šú«>šp¤>™b»>™Î¡>šÅ>šÁ>šh€>šb‚>šX>˜‘>—Þ>˜ ã>š×>™òŠ>™jü>™§Û>™™E>™y->™›$>˜b^>—T>˜qå>“‘S>ú„>Hå>”yh>˜ˆ¿>˜ÒÂ>–R¨>•Kø>˜.Ã>˜˜>˜ž[>˜l8>˜<Ÿ>—&t>—JÄ>—±ë>—Úš>—ii>—Xu>–ÌÔ>•Ã¨>—^à>—Rz>–HD>–>–ž’>• §>•O>•Ç§>–~Û>–‚‡>”Í\>“²>”©Î>•ò>–Æ>”ño>•ðþ>–X’>–2‰>–Ï>–Ú>•´B>•>•£¥>•ÎÛ>•›Û>•—I>•m2>”°Ž>”·­>”µ\>“—>#$>‹‹D>‘•ú>”á•>”ßÙ>”ï>“üV>”Pc>2>‹Ÿ¥>‘½—>“âÂ>’ü`>“³×>“Î>“Ð@>“ôñ>“´×>3C>vø>’PJ>‘N¸>“5¬>“m,>“[_>“>÷>’û¼>’¹Y>’Ô”>’Φ>’œ¬>‘˜%>‹{x>žˆ>’>á>‘ìì>’ ¦>‘Ç>‘á%>‘ÜÐ>õk>†íj>†´!>ŒÔ>…K>‡>Œ­·>ü¯>×t>¼Ý>‰üÁ>B>é¦>¢>ŽðV>ó>Š§>Žêö>ˆÉ>‡G˜>Ž¬> x>B]>ñ†>ŽÌê>Š—>ŒÈ°>ˆ’Û>‹˜>‹;>Žô|>p>/>Žå>Œég>b>ŽÞd>Ž÷g>Žî>Ž•8>Œd·>‰p9>†ûb>ŒH>ŽzL>íì>ŒÇ>BÈ>4Y>qb>ÁT>‰“ä>„ >‹¦>ŒäH>Š7>†[É>‹®>ƒûí>…Ü>‹ßÛ>‹t5>‹á´>Œ:N>‹ÛÏ>ˆ“a>‹—]>Œ–>Œ¥û>Œ¤>Œ)>ŒZ§>ŠU+>ˆsr>‰»É>~Æ‚>…nÌ>‹‰>‹¬P>‹TU>‰>…z>†ñ[>Š‹9>‰û>‰ h>ˆ•³>Šbu>Š¡W>Š,>‰N_>‰±=>ˆÞB>‚ê>„D>ˆR>‡â>‡UV>†å>„àÑ>‚®ñ>|uª>c -ý>\·l>x¯Ý>Ûø>„#v>„ý">‚¢i>ƒ?>ƒ%>†³>‡sk>ƒàÔ>„Sx>‡Ò±>ˆ>‡ö2>†:«>€B>÷Ý>„2>†ì>‡âÈ>‡ö€>‡áÕ>‡¿`>‡Ú´>‡5>‡WV>‡’Ø>‡‰ù>…Zã>„o>)Ï>„bç>†Çü>‡:>†ì>†´)>†>†ÇQ>†8ü>…ç›>†w;>…Oâ>†Z>†¢œ>…îH>…h³>…>†I×>†W0>†.þ>…ô+>…ÎË>…èÚ>†>…¾ñ>…9F>…E>…„Ž>…8Ÿ>… >…qù>…_>…ó>…±>…%O>…>„ûr>„×/>„—Â>„iæ>¢›>ƒ_>ƒ¾>>ƒ[>€ëe>q>‚Lë>ƒÓø>„-·>ƒÝ>‚E>‚î>ƒ,æ>ƒÇÏ>ƒ:‘>‚6]>‚ãÈ>ƒ®.>ƒ£Í>ƒxd>ƒJC>ƒ'Ì>‚ÿ\>‚Yg>‚Z>+‡>zQ¼>{•>‚eá>‚ƒÍ>€>€ßƒ>~öƒ>§š>‚g,>‚jù>Úá>4>÷½>‚ä>ñ©>Æá>‹Á>›š>ÞÛ>±>£È>õ>€ãR>€l‘>€ô)>z[o>rn]>y‰>€™¡>€hŽ>€ìP>€û->€Ýs>€ÓÐ>€ž3>€#ó>€.>€ˆ_>~¥ô>wì<>vWS>}5³>}ÉŠ>z~–>{¾>}ŽÙ>~W>z~ó>|"h>~<™>~"T>~6¶>}½.>~~>~qL>ws‚>t .>{QH>zÍ^>zêÈ>}=w>|P5>|—>|÷ô>|ªØ>yïŽ>xí >{Ñ`>|³ú>|…—>|$>{kH>tÇ>wŒ>yKÍ>qàù>tÆc>w­Â>s¬³>t>z “>xu>sS6>p‰>k½±>uÐ>w°:>w§é>uø1>y&ª>wN>sµ@>wÎ>xXZ>xãÊ>xÊ´>wf>q*m>v+>ul>q¦>tQ>wI¢>x‹>wˆ>w”f>w™³>w_Ž>wp¢>vm¥>tŽy>v¤§>v,Ž>uœ3>sQƒ>sút>v-€>v&Â>uiV>ueX>u}ƒ>rý‰>tÄ>uRò>u&­>u).>t–>q€:>q”>qU#>sÇ^>sK€>sêƒ>sÿÎ>sJ†>rˆ>r~¤>s >s‹Š>s32>rf>oXé>qäÃ>r¬]>r›‘>rÞ>rH+>r²>qál>qÁa>q¯ >qbµ>oÙt>p4>lʾ>dr¬>kfË>p“Ô>n~>n€4>k Y>d"R>dAU>mÛ*>no&>iÙÂ>nDÖ>oiG>j­²>iº!>nÛî>mÙi>f(¢>hÈw>mž¸>l÷Ž>jê¶>k+/>i”[>hc(>_oD>k)Ú>m“ª>ià>do¿>i V>jt¿>lîq>l/>lH>l—>b\°>eÕë>k—>kr©>hâ2>j¾þ>kÃ4>kŠ9>k+>jÛ>j»’>jÆÔ>j›7>jKä>jj>jla>jvØ>iáp>iÀj>iÂV>ièm>fõ >^é>bë>SÑ>a'R>há­>i&ž>hçð>hê>eÌÚ>c>e Ç>c"w>dYy>^¼ü>fäe>gÐ>g¨ÿ>gmL>fþ>c >d‘3>g `>fB¬>a9—>d]Æ>f9Ð>c™µ>c´ï>dk>T N>Z¢Y>eAó>dò9>\Xc>_tj>dâ8>cé5>`GÌ>d8v>džÂ>d/—>b>^§„>ba'>dC«>cøý>bù¨>bÔ^>^9>WÂ>Sït>`·>]ý6>YC(>X†Ø>`S>b…+>bru>bR\>b7q>b5å>b ê>b ²>aÙª>a²6>aSª>aIò>ak(>a2“>`å|>`èî>`¼›>`½d>]1>¸ð¾>¼ÿ>Á¼f>ÆÄ>ËXµ>Íø>ÊtŽ>Å  >Â}S>ÁÆÜ>À?Ÿ>ºÁ6>²EÈ>«T>©ŒX>­@>´Ò×>½±Ù>Ä–1>Ça{>Æhý>Ã5.>¾«I>¸­˜>±¯ã>¬Á‰>®€>¸Â>ÇJÍ>Òüõ>Öu¤>Ñà>Æß0>½ÝË>ºKÕ>¼>¿>¿ÆS>¾˜ê>¾'Ø>¾ÀI>¾Ì>¾Ÿ˜>ÀTæ>Ä!>Çg>È!‘>Æë]>ÆC¿>Èw¼>Íôa>ÔŠ2>ØZz>Ög>Ï>ÆeH>Á[>Àæ×>÷à>ÅÝÿ>Ä;F>½šÚ>´šS>¯Y>±ðÒ>¹+4>½pý>»9×>¶­->¶#>º¬>¼Û>¹û¶>³©Æ>¯¬•>±TÃ>¶ó>»ÔM>¼KŸ>¹=>¶‡ú>¸ŽÕ>¾WÖ>Ä#Ÿ>Ç57>Ç™S>Ç:¹>È,˜>Ë.>ÏÀ>Ñ”F>ÐÔ>ÍH\>É‘>Ç’ø>Æó>Âc>»1 >²R•>«I>¨hX>©‰ž>­Ž>³ãŸ>»ÍÙ>¸{>ÄÖÂ>Á]§>½^>¾õ‘>Å‘\>ʲ¤>Éú>Ä­g>½ä¡>·¨´>³¾v>³EU>µ;Û>·pÁ>¸ðw>ºžz>½ÃR>ÂüÓ>Ê=>Ñš ->Özh>Öù>ÔÏF>ÒüE>Ñyá>ͽ{>ÇD>¿k/>¹X>¶4;>¶¯>ºW>¿Â(>Åõˆ>ÌR`>Ñ¥ >Ôüf>ÖcC>Ö >Ô$È>Ñ) ->͘<>ÉÑt>ÆW¿>Ãyü>À˜Í>¼U >¶m7>°èŽ>­±ì>«9>§îJ>¤p¤>¥àz>®‹/>º —>Ã܉>Ǭm>Ç×>Æb,>ÃäQ>ÁÜ€>Ã0°>ÈÕ¹>ÐYâ>ÖÆA>Ûu>݈>Þ\^>Ýâ>ÜÎá>Û–K>Ù+¤>Ó ü>ÇÁL>¹ Ð>«—ñ>£²> O ->¡ü>¦ -i>ª¶¢>¯F>´\b>º,­>¾ìh>Àœõ>À*a>ÀÖ >ÃâÈ>Æ9š>À8>»¯>°´>¨–b>¥™Q>¨~É>®Ÿµ>³i<>µ˜e>¸ðq>À­>Ê~>Ï‚>Ï0+>Ì©>Ë.f>Ë;Ù>Í -q>ÑG>ÖÄL>ÚæF>ܘa>Ü>º>Ù$Ñ>ÑÐ%>Ç>¼ ’>µ2ù>°âå>®\P>¬£[>«ä÷>­é>´~>»½’>¿vò>½ü¨>¼ƒ°>¿ÄD>ÆS˜>Ëã†>Î!g>Í4D>Êñ“>ÉÐÓ>ÊO™>Ê%û>Ç&R>ÁNÀ>¹{k>°H•>§l™>¢My>£wü>©¯{>°Ha>²ðl>°Ô>¬&K>¨?>¦¨Ÿ>¨¯>ªy>¬äd>¯¿>¯µJ>¯Ç>±,&>¸Š>Á˜>Ǥé>Êq›>ÌòÖ>Ðò@>Ô|p>ÓAh>ËB3>¿…¥>µº6>² -u>´Æ[>º§ø>¿³>Â?Ê>»¬>Áû:>Á|b>Ã>È´y>ίè>ÒdÓ>Ó >Òl >Ò¯->Ô=Ë>Ö&ý>×Þ>Ù!>Øp[>ÔS>Î\>Ê\à>ÊnÕ>Í[–>З|>Òb†>ÑñÉ>Ïa>Êå¼>ÈU ->ÉÞå>ÎV>Д>Ïf>Ê/7>Ã/~>¼)a>¸€->¹œ¯>½s¡>ÁŸ>Å>ƹ>Åç>ʼn>Ç«)>Í+>Ñ¿>Ñ“>Í>Æô:>Áî>Â>Çû#>ÏÎ>Õ+s>×Ñ…>ÚP˜>ÝØq>à}?>ßÃ2>ÜyÌ>Ú&Ô>Ú: >Û©>Û§O>Ý<>Þé8>Þ+>؉Q>ÑNœ>Íí7>Ð1ø>Ó_>Ò*Å>ÌaÌ>Çè›>É>ÎVº>Óäz>×.µ>×^•>ÔQb>ÏI>ÊÎ_>ÈM">Ç­R>ÉhV>ÍÍ5>ÒòR>Öˆ›>ØH´>Øg>Ö³ï>ÑÏ»>ÉÑ>À3>¸¾>·ÁÎ>¾+>Ç¢m>Ïð>Ò8>Ò>Ð]Ã>ÍúÏ>Íb…>Ï¡ì>ÒàJ>Õä&>Øû#>Ú$»>ÕlC>Êàì>À«>½Mö>Á8ª>Ç–>É°>ÈÖ">ljJ>ÇQ^>Ƕ8>ÉW®>Í:>Ó×>Øv>صÖ>ÓÖ>ȸ¯>¼ ->±o1>¯$w>¶Ïú>Áø~>È×#>ÉÖ >ÉO>Ì1d>ÒðÛ>Ù“G>Ü+©>Ùs&>Ò>Ç>»ÄF>±n>­]ž>³°³>ÂA>Ð-L>×äG>Øw>Ò‹Å>Ê“>ÂG>»!‚>·¿/>¹žó>¼Ø™>»µŒ>¶÷e>µi>º">Ä›ç>ÑV>Û#>Þ‡É>Ù¶i>Î'>À$°>¶Jä>µ÷ >½‰>Å¿>È?…>ʳ×>ÑE>Ù›>ÜÁ¬>Ù«X>Ô,>Òãô>ÖÒ >Úm>׶>Ðiî>È©¦>Âðâ>ÀêH>ÄWi>Ìéä>ÖÛl>Ýëï>à¯È>à€>ßW'>Ým¤>Ù;é>ÒÍ$>ÍÁ>Êd >Ê'k>Ê8Z>É‚>Ænú>ÄCJ>Ãý¬>ÅA9>ÇâH>Ëðž>Ï|F>ÐIå>κ»>Ìèý>Ì.Å>̦Ç>Î2>Ðáå>ÔÄL>Ù¡R>ÞAk>àQ‘>ÞQZ>Ù]N>ÔÅ>ÐK6>Ï1ù>ÏüM>Ð4‹>ÎÏW>ÎrÛ>Òs>ÙCY>àô >æƒ>æ?ú>á"’>Ùyž>Ôm,>Õã¨>ÛÿÔ>àô…>áÐ)>à4Ã>Þ‹9>ÜïÒ>Ùä>Ñ4e>Ç9ˆ>¿>ºâ›>ºìM>¾üí>ų{>ÌÏ~>Ó°ƒ>Ú‹ò>ßÄZ>áï>à-ð>ÛÑ >Ô >Ë•ù>È•¨>ͧJ>ÖVè>Ü ü>ÜCu>ØÔ>Ôƒü>Ц>Í0µ>Ê2¨>Èú>Ë¢>ÏÎÞ>Ô*Ð>Ôä>Ò:>Ð2>Ò>ÖB³>Ù(N>Ú‰¸>ÜOn>Þ->Þoé>Üçå>Ù•,>ÓSD>Ê?o>ÁP¨>½>ÀÎH>ËÁˆ>Ø „>àUè>ãÏ>äVî>áiÉ>Ú‰©>ÔJ>Óç]>Úbˆ>ã`ã>ê[„>ëWÑ>å9t>Ûë>ÕA,>Ô—Î>ØÙA>Ýï>Ý6t>ØÕ©>ÐÔ>>Ç->Áä>Äb>ÐvŽ>à>ê@/>ì·³>ì³í>î‚J>ñ1>ñMî>ìâ'>æix>âÕÒ>äq>çõN>ê… >çX¡>Ý>Ôô}>Õ»Ù>Üv>à µ>â}ƒ>èg >ñ^¿>øÜÒ>ü›m>üÙv>ù-3>ñÜ$>ê²>>çì}>èÉÅ>肉>䃘>Þ¸^>Ù¦Z>׳>Ýw9>ëTc>ùxà>ÿ¢A>ý’„>ø\ >ô>ò³S>ô9+>ö`>õ“>ô÷Â>ø›?\?.^?èl? º;? -V?æ;?t¶? lù? ò¿? Q§? …”? Š{? -ö? w‡? &r? -èr? ¶ ? €”? -`›?–?³P?@?ü]? RÞ? Ìÿ? -ŽP? jP? :Þ? í-? ¿ð? ù?åü?ú)? -y>ü3>ëª2>êÆä>òa¶>÷:Á>öêp>ö¦ƒ>÷ý9>÷W]>õ"¶>õÞœ>ùî>ý E>ýg`>þ¹9?R·?ãÐ? -ã?Ÿz?bâ?©ñ? ½?>ü½ù>ç:±>ØxÆ>Ö[r>ÛÜ>àð>èd>ô®å?vB?×÷? ®? @«? Žy?P ?h?yè?iä?»?œ$?ü]?p•?ón?ºÍ?Jo?–o?!Â? 1?* ?že? E?“œ?ÕV?ÖA?ÈÎ?¨Æ>ý†?=>?9?ë^? B?‚? -…€?x£?W½? æ?ظ?—ö?˜¼?Äë?Éh?›B?'Ë?*S?([á?!¼Ã?¾:?%>üV>þ,u?û¶? €?Sc?Ý~?ü?1?#ôÊ?'kÝ?'yÒ?#ö»?žh?÷¢?-Ó?.ý?¸o?„f?Û?§£?%O?ßì?Ã? -b?Ú€?#yL?*}ñ?.$?.×e?/™Ê?1è×?4Ô?3®°?1(î?/%?.A_?-DO?+¿ ?*ªE?*õ÷?-Š?/H¶?/ ÷?,MÂ?(JÙ?%È>?'³z?.†?5CP?8xÊ?7&‰?5?3^6?.ÔŽ?'°’?"f -?!'L?#›þ?)„g?/‹H?13?0ny?1%?0N?)Ôµ?"b9?"ªñ?.†ã?>»e?Gç?Fõ?BOK?D{f?L†È?RÖˆ?Ráæ?KcÔ?>ØP?8a’?Bú¢?ZŸ?mœR?sÖÿ?lJÊ?Y–v?B>?0Ú?+,?/ç|?<”Õ?Lý?UÞW?T”È?I–¤?; û?3~_?<Ûž?Tš)?k6?z¬=?„“s?Œiº?6g?ˆå5?v¼?UÍ^?8¸\?, ?6×c?Rv?pŠž?ƒU°?…US? ?€Šª?†ÿ?‰§?„'?qº9?TÚ}?6ðI?"b?ÜS?+{Û?@?Z ?wõa?‰z”?’ZÛ?•cŠ?“>‡?Ž¾?‹24?ˆY¿?‚& -?p4p?Y¶ ?@ ÷?%ºß?Cl?v?;`Á?`}]?p‹?›?šø?¡_?xŠ?Þù?„,š?}|'?ª??ƒØp?Š/H?’lä?˜õ‹?›—Y?™¦X?‘Åa?†Q¹?w׊?d˜™?No†?>ÀK?Eo8?`–€?|7ù?… -c?‡8ó?ŠÚ&?“??ïÎ?§î[?±\?¹Ûf?¿€?¾ãÉ?½;?¿z? _?¼‹Ò?­´O? ¤n?›Ð§?šó‡?š’E?›ØE?ž­?œR'?”<"?ˆÁ+?|0_?h‹Ó?P^ü?7–?/³?–P¨?¥I?±8f?µäi?³#u?­G?ªj?° -?¾?ËËa?Óh¹?ÐÀ?Âoô?®Zr? qä?Ÿb¹?¨Ê ?·*©?Ã` -?Ʊâ?À%å?¶‰5?³Å¹?¸õÁ?ºÚw?±?¢?š;??—íÛ?–¿k?•k¨?”I‰?’"?‹ð€?~ºE?^±ú?B¡?.3q?# ?(/?=¢?U­ö?hÿq?xp?…™?‘+?¸ª?¦b?«4;?®ßŠ?±ì¸?·Q?¾LM?À2s?»‡Ö?¹Y?¿'“?ÈKE?Í?Í8º?Ê3p?Å]??ÃÇÓ?ÅxI?¼‚?½;?¿|ü?Ê ?Ó#ü?Õ¡i?ÔÈç?ÓÄ‘?Ñç4?Ð+Ù?Ò -m?×Ș?ÜÑj?Ü#?ÒøÚ?Â?±³?®€8?¹`?ÆH~?Ê^?ÂÁS?´J?¬–Ü?³-ö?»\Î?·^Á?ªøJ? Q?˜~?Œ§É?|\Ò?`ÿÈ?IIZ?6RP?2¶±?E˜¤?epø?»Ï?Œl?‘î±?•zœ?™@ú?žŠ€?¢+Ï?¡ØN?¡K ?¦˜U?²%Ž?º[&?¹¤?´Ÿ1?°œ~?«‹?¨èŒ?¯Æn?»Ðl?ÆYl?Íä?Ð?Í™_?Ä´O?ºbŸ?¶Ä?µÊJ?³âû?±¢Ï?°b5?¯zµ?¯²Ñ?²]?µÚÍ?¹8Â?ºà?¸"?®Û|?¢S†?”eœ?ƒËX >’hV>hpæ>xá±>«éó>õýj?%H?P?zM›?ŽL¦?—•Ü?šùè?œ”y?žHw?¢õ¼?¬ª¬?µ@ª?´C‰?¬rú?§…À?¨ä?¬??­ÿ?®±?´·S?¹yÆ?´C?¨Þ?£¨ ?¨2z?®jù?­©?¢*?“+ö?† o?só¬?Vs?/¶ú?6<>¶ï`>¯>d‘Ë>Ó>Íá ? >u?-/ -?JÈÚ?g«.?Œ…?ŒBS?•Rý?Ÿ|Æ?©É?°Î?®}Ï?¨Yß?¦A4?«< ?²×T?·üÆ?¹I?º®ë?¼Â~?½ñ,?¾ë ?Âwó?Èzz?Í›²?Íùw?È[ÿ?¾í?µ"?¯’Ö?³ -?¾‰…?É"ö?Ì_r?ÊÏÂ?ÈÅ?Ë:?¹bÖ?³JÔ?¸ýa?ÄÒ(?Í\?ÐXõ?Ðmg?Îkß?Êì%?Èçx?Ézü?ËëØ?ÎA/?Íò?ÎB8?Ô#?Û=,?ÛÒÓ?Õø:?ÏÇ?ÉK‚?Ň1?Éõ?Ô¹Á?ݸ)?ÛÑq?Ñ=“?ÂÈŸ?¶(å?± N?³¢?º’?Ã8¸?˘?ÓøÚ?ÛÐa?à?Þ -‚?ÖÓ??Ї¼?Ðr?Ñ5Ú?Ëð?À…Â?¹ïJ?Á¡y?ÏæÆ?Ö’ï?Õ‰ø?Ó)i?ϲ?Énm?Á{?»˜Š?»…Ä?À56?Ä”(?Æõè?Êà?Ñ>¦?ÔäL?Ðq~?Äüì?»³8?½GÍ?Å%?ÇG?ÃÍn?Å[q?Ë­8?Ì”?Åv÷?¿F«?À“³?Ä^õ?Â$?¶ÄÛ?¦Tl?›¬$?ŸÒÂ?®ßú?¾0Ð?ÇI ?Ç}Ô?À”F?¸\?³Vß?³n?·`?½­í? -b?Âg]?Àø?¼žõ?¹g•?·+Ë?³¨ž?¬b:?¢úP?™•ž?Çü?„%\?i~{?GL!?6Dã?EÒh?kOù?ˆÔD?–¶¥?žª¿?¢{|?£´©?£´g?¥8?ªîW?²*Ï?¸ÚÑ?¾ÃÓ?ÄŒ9?Èz¿?Æ)?½`?µ‰ ?¶ 5?¹~?¹ý?¶ñî?¸Ë?½Ž|?¿³©?¼ Ñ?´t®?¯(µ?°¡±?´SM?³ºÖ?°Š´?±É”?¹÷?Âõ^?Ê~?Íg%?Яt?×~)?ܵo?Ú«¡?Ïæó?Á?¹?½ÎŒ?ÇÊi?ÍÆ¿?Î>s?ÊŽ?ÅÏ´?ÄžÀ?ÆŠ¶?ÇBÀ?Ä?º};?¼ô÷?ÂÕ÷?ÈOn?ÈšY?Ä|?ñ·?ÈÉ ?Íÿz?ÎÞq?ÇÁ2?¾??¿Ü?ʯa?Ï2•?ÆU½?´ý ?¥¿T?¡å?§ÃL?²V…?¶K¼?±G?«‚u?¯½?»œ?Â~C?À G?¼$?¼[ù?Àk‚?Â]E?½ñ%?»S˜?Àó®?ÇYË?ÈH?É€°?Ðr?ÖdÚ?Òë?É+?Àô{?¹É²?³’?µ„?¼XM?¼Ég?¸µ?·nŠ?·yÜ?¸m4?½`?ÄSÎ?Ç…G?Æ»Ò?ƺ¸?ÊÂÞ?Щx?ÓÞy?Ïàb?Ä_?»G°?¾M?Ç©á?ÌÕù?ÍTF?ͯ7?Ìî?ÈŠ¶?Àvw?´žÓ?¨1?¢+ ?ª¯Ç?¾5;?ΪØ?Ô«?Ïüò?Âìq?·¼È?¶yÒ?¹Wß?»ž ?½•}?¼Ü?»ÕË?¿¹!?Æ%·?ÉYD?Ê2Ž?ÉïI?Ä!ë?¸è­?²,ù?¶¹ ?½¯Ê?½y)?¼cÔ?À¢L?ÄuC?ÄŠÇ?Åu7?ÈÒÅ?É:Š?ÃÍ:?¼¹Â?·qy?¶vÔ?¼àK?Æò%?ÎzW?Òta?Ô˜?ÒP?Í°Ñ?Çuí?ÀšW?·±K?°DT?°çÉ?µÌ1?¹ Ž?½ÓW?ņe?Ê~–?Ë'×?(Ö?)•Ï?Fu&?h×á?€™??Œ7è?˜Ò?¢{P?¨Âv?«Vu?¦©Í?œ?—. ?žØ ?ªû?´hâ?»¡Þ?¾ ?¹}ô?´º"?¶ç??½¿/?Èc?ÇP‹?Éý/?ÊÀf?Ç(S?¾fû?µá[?³e*?¶fþ?¼À?¿D?¹Ø&?«ÃÎ?¤Ë¦?®Í¹?¿pï?Èúƒ?É«`?Ȳ?Æÿ?½-#?«f­?›áê?š=L?¤ª3?°<`?·G$?¹éù?¸ºv?¸M~?ºÁp?·ýª?­÷?©Tt?°ý?¸îr?µÔÐ?«¾?¤œ?©òy?¶³Ð?¼<)?º:ì?»F?½çµ?¹ÅÍ?²Yu?°ûf?µXë?º°?½ë|?¹ÖD?­ŸX?¢·Ø?ŸL“?¡Ø_?«´?¸¥¿?½¦?¹tO?µHÒ?¶É?º,Z?ºÙí?¸óÄ?·Ü^?·è¿?µ”Q?³0 ?³º)?³NÆ?¯,ø?«ÿF?°½í?»Ä\?Ä¢ì?Æø*?ÂC?¶Ð¬?§Ô¾?'ð?Ÿš ?­ãE?º*)?½qP?½ ©?º +?µ'•?µ?´ñ?³½?ªþ"?¥¡?©#h?±ÑŠ?·uë?»ö?À!?ÂbŽ?½£Ÿ?´µØ?°H½?´Q?»Œ7?Á²?Ä~³?ÕD?¼Î‹?µmø?·´ü?¿)…?Á]C?¿¥?¿ƒœ?¿; ?ºÕ“?´¨Ã?¯xy?©XR?¤Ð?©DE?³-½?¹ -f?¹,n?·_€?¶è?´^`?²•³?´|?¸»?»ät?½ñ?¾[ê?¿)A?½¹Ò?ºª?¹g‹?»/)?½§‚?¿2I?À:P?Â"+?Ä©³?ÆÑà?Ç*„?Åž2?Ãò?ÃÊ?š×?ÀÈV?¼ø˜?¹ñ -?·MI?µÓN?¹K?À¢·?ÅÃù?Æk-?Ãð¦?ÁÜà?Àé´?½,û?¸0Ü?¹âx?Àu?Â{'?½ã´?¹Å¼?º8?»Ü´?¼Ö»?¾Üh?Áýê?ĈB?Ź¥?ÅZ?ä?¿ƒ(?¹Ðã?´Œó?³í?¸ùC?¿&Ý?¿?ÂJ©?¿½4?ºW?µ@Ã?´"?º ?Ã?Æä¤?ÄHº?¿#†?»?¸éù?´øv?¬ß—?§0>?¨0I?¬J¡?²h ?¹S?½Õ¶?À‡÷?Ãp2?ĺ?»?¾ëÑ?¼Þí?½$Û?¾?¿?ÁzÙ?Â#¶?Â?Áÿ¾?ÁØz?ÁLC?¿Áf?¾*?¾y×?À|?ÁeØ?ÂK?Árø?½ðe?ºŸ³?ºT6?º6ë?·Tî?µ£?·c¹?ºj?¸ë•?´¼?±ja?´MÔ?¹æø?¼«¨?»0?¸¬Ô?¸íŒ?¼8Ç?¾â›?¿:'?¾Þà?¿?¿7?À3«?ÁY?Á½”?¿ƒ?ºà‘?¶Ìq?´¼‘?²¿?±Èh?´PÔ?¸ ö?¹˜e?·ïr?¶"Ë?¸8?ºÚ?ºù'?ºK­?»[?¼e?¼¼o?¼œ=?¼n~?»½ò?»‚?¼M¯?¼AÒ?º=ÿ?·Wx?´àš?³®O?´‘?·›Ê?ºcR?º5?µ<"?¬ÁD?¦Ò?¤½?§õŸ?­V‹?²„??µÝ(?¶È÷?µ4?³¯Á?µ[4?¸zÒ?¹Ã?¹¬5?¹˜d?·—¸?´5ì?´I?¶€Š?¶!.?´úA?´:?±¹Õ?°zC?±:Ž?²(â?³Î¹?µoá?·?¹Së?ºèb?º5?¶Ïn?² ¯?±F%?³[¯?µåÀ?µø?² ?­|f?­¸W?°êH?³8„?´'J?³Q“?±½¾?±îÍ?´&l?¶B?·7?¶ôã?·Dê?·ó0?·RP?³lÙ?«$š?¤S ?¦Õÿ?®&?±Ü›?±/]?¯ÞÄ?¯ºC?¯R´?®¢Ó?®°Ú?®Û?¬^Ú?«ïã?«®å?ªaî?©þÄ?ª³b?ª¯l?ª*?©=É?¦-â?Ÿ÷Ü?š-±?šW ?à—?ž¶?™6ò?³õ?„9c?zêÕ?uÃÚ?fÙ·?FtÆ?$Q~?9ê?5àá?TÃO?mA=?Rƒ?Šœ?ý8?’¸þ?8»?Œsð?ã>?•Y5?—‹×?—))?™æ?ŸG?¥NÏ?¦û*?£´ -?ž˜Ü?›c`?œm?Ÿ›Å?¡ð«?¡Ÿ„?¹¢?™ý?&˜?¤Ãu?ªÕû?®Ð"?°AŽ?®ã(?ª[´?¥ƒç?¥›ÿ?§Z=?§V^?©D#?­>W?¯KÖ?­w8?§“X? j/?Ÿ$?¤¯‰?ª¹H?®;‡?¯=?«nî?£.¼?šøz?—bŽ?˜éÒ?™ÆÝ?—"…?š€h?¤ðK?«ñ1?®ð?¯K?®RY?ªlÛ?¢ö´?k°? ª?¥¾Í?¤YÑ? ë? ´Ø?§?¬q?®Æ?­¥Ü?«~å?©oâ?ª9Á?«ö?¬rò?¬xÖ?«ÆT?ª…Ô?©u?¥ñD?£~?š.è?¢l"?«Kž?­‘?­ò?­å?«š?¨‡x?§Ê?¦û?¦S’?¥ø?§|Ü?©Î ?«ºœ?­„?¬úÈ?ªóÜ?§ˆY?££D?®º?•¤Û?{:?’ Å?˜ms? [“?¥ôÞ?¦S?£æ? ?ŸÀþ?Ÿòì?¡Ÿ€?¤ú.?¦ÀG?¦o?¡ý2?œNV?™>3?›N/?¦ ?™¯Ô?”Q+?—Y?ŸÇ?¢¹.? X?š¡?–"€?•pf?˜† ?™3?‘k?ŒY>?‘¿ô?˜â•?œ%?ž¤á?¡Y ?¡·;?ŸGò?Ë9?žò°?žAÀ?çô?¡rî?¢ûg?Ÿ]?›P;?›Ä??›PŽ?–OI?£œ?±,?˜ÆŸ?¡4¨?¥uŽ?¦+Å?¢¥Ñ?iB?™˜‰?—€F?˜ÉP?Ë.?¡³?¡i?¢ú?£^Ó?¤q¿?¥ …?¥ªÛ?¤Ñö? ª8?œ„.?œ‰è?œþ3?œ1õ?œä1?œ¢?š°?™ø=?šÑº?›†f?œÈp?šO?“x ?‘.?”²ž?˜+?™õ?œËÃ?^?›uf?œ®?ë¿?ž¹D? &?¡WS?¡­î?ŸCW?™@³?“cƒ?á“?“ ?˜Ø?|y?ž÷è?žŸñ?œ×?˜<´?–Ì&?–ØQ?—äÊ?›v?žW8?žh¦?º¦?ž]Ç?žÂÀ?…l?›>®?˜Še?”Ýx?‘¸Å?‘Ñy?“fü?“?³?‘)’?õý?“r¨?”<?“¿¶?•Éa?—Œ$?”ƒü?ä]?Ñ"?’+M?“_÷?’@?”4?•°r?“Ж?’Êø?“þ?•g?”q™?‘éñ?Ž`?y’?’á:?˜8 ?š"K?™ F?—§?•Š?”î²?–Y?‘Íé?†Á?x5?vs?‚¦ô?†x?„xL?ŠzÕ?”º?™]©?š¼?š5Y?™Â?˜#^?’Ç?‰?…–´?Š›°?Ž+j?Œ  ?‹}g?Œ=«?ˆ¢K?‡b?Š¨?‰ÜŸ?‡¥Ú?‡šB?‹6®?Æ¿?‘Iè? Á?Žµ?ˆ–Ö?….Ð?‡g9?‰¢ã?ŒN?|?‘Æí?”.@?’é?Œy„?Š„Ë?Žê?’Ðü?–Ó?—o0?—Ì?”3 ?‹ßZ?~Õ¤?y=ê?†4n?°}?ŽÏs?Š[Ë?„ç½?ƒõh?‡|í?‹D„?äÉ?Œ"?˜â?¤&?‘^?’{f?“+»?õe??¸6?!m?Ž»p?g?ŽvS?ŒûŽ?5ï?’Q>?“;:?j_?Š?ƒŠW?}Í„?wx;?zäz?ì¨?€6æ?w‘H?€[?†t?…û?€@7?}ç?†¯?ŒøG?‹ö'?‰y¬?‡ÌÒ?„žš?„r†?‹\\?‘>þ?’M÷?’IÚ?’d¿?‘Í?؃?j?’C?‹÷(?ˆÎs?ŠB4?2+?Œ°¥?ŒÖ?Ž -§?óR?‹-g?Š("?ŒC¾?ŽÁÂ?W7?Žd’?Œwê?‰Yª?ƒ³?¼è?ˆ–/?·è?Žý??ˆÞD?„®í?ƒåè?€/ˆ?ušÅ?vô?‰_?Œ‹R?‹A|?ˆð(?…âè?‚ßÇ?‚…Ç?‚º•?ƒt?‡ºã?‹èû?ŒcG?Š‚?‰ò?ˆ±?‡€?ˆû½?Œ-?Œ‰ž?Œ¿…?ŽN\?T?h…?o¼?¬·?ˆû²?„º?ƒb¨?„ð¥?†uK?†`™?„JÈ?€4ì?r?„­.?‰ü¸?ŒC†?ŒMý?‹oT?‰lË?…]9?‚ØE?ƒCw?…a?zË?|ŸE?‚´h?„¯?…H(?…L?ƒwv?€[ó?}á(?€ý?‚bu?„=›?„¼z?„$­?ƒÀ?‚?îÎ?ƒ$?ƒ\€?ƒ?‚Ûg?‚4~?€ä”?€L ?ña?×?~< -?|ˆ;?}l?|áZ?züã?~Šá?C÷?0??Ô9?€÷E?ñn?€Æì?€“i?xß&?nÆ?kÍ’?p°Ù?wàA?zQ?w®?vct?{2I?yL¹?uè?uQ??r’?pèŒ?wìV?€6¥?} ?Qì?T’?Š?³®?€sÂ?wHU?nõÉ?sxÞ?zƒi?|Ã?} µ?}sB?x¬ö?s Å?u¨ì?yèÈ?}>œ?òp?€bD?ú?{ÕÃ?yÍ?x€?uãÅ?uIØ?sC ?qÚ¸?užÖ?xˆÍ?zÂ?|P(?}+¼?{?y´¸?zw?xȲ?s†™?nÑl?eø ?]±w?eúª?nÀ?laþ?mø(?s`µ?q‹?mu?løw?qÓb?wjA?yͶ?xn!?uúÀ?v®Ê?w,e?v@À?t-×?m½‚?gÐ÷?h|r?ks:?j;ú?j -1?oX»?s³?t£#?sË~?sÐx?tqä?tÊ?r¿>?p@?nA©?p@à?pQx?k׺?gêò?dã—?cHQ?eÓ?iÂ?nž?p[]?päü?q×?qSñ?rÞ?rRC?r&?sM?r’Ï?pgÆ?pZv?p ^?n«P?oW“?q@?qá?r/.?rd§?qsš?o‘?oSN?p¼6?qaÄ?oÛ®?mtO?no?ob?k¾ç?fÎV?f÷è?k¹@?næÜ?oˆÝ?n~Ö?kÅÔ?hSE?iÝ?mÜ_?oÝx?o ?m×k?m)™?lr?k1Q?jðk?k\º?lÚo?k½?ffç?a¿n?c"?RMK?U)?Uàe?UŸÛ?TH?Q±?KUõ?IÔt?NŒ?S|E?S"Ö?KÔú?FC?IU:?Pg?P)‰?I?B5¾?A ¾?Hø?PIÐ?N•Æ?H÷¦?HN?K°Û?M¶0?NªZ?Oºß?Päx?QÆM?P›.?P°?QûP?Oì?M‹¡?Odo?Qhæ?PÄ{?K¢}?B~¹?<éÊ?>L?BªÕ?DÐÛ?G ±?J¦Õ?Mä?M5÷?K‚!?Kiú?L—•?LÌ?Kvè?IÍ?Fb…?BœË?A; ?G‚?L4?LÀV?LÚ7?JBû?Id?KŒ?I©?Fä?DtV?B8"?D¶Å?HgÊ?JXø?LÐÔ?Oh?O%å?N›?LÙ[?KŸ}?Kð‹?J3¨?Ekª?E™J?Iü?K0?LMÙ?J×?Hî@?E9?B–?Gߘ?L§å?M$d?L¶?JlÊ?J[þ?I£?Gë‘?GwÝ?FS»?F³à?H©æ?J*š?J›?EÊ?AÂ6?Eß?JßL?Ké•?JÒ¾?IæÒ?I.û?ISæ?I+“?G‡q?H?KÇŸ?Lg¹?J{ ?HCV?D 6?C;?H´m?Jà?EÓž?DóÔ?Eã$?EŠR?EDÅ?DUè?@eà??ˆÛ?CB]?Bžé?:˜?2)˜?9Êu?A°º???µ?8|ñ?<Ë?CH$?DŸ?B•?@gy?>]B??ª)?Aú˜?B#¸?Cü]?D~"?Bƒ?>J­?>  ?Ad]?CR?CÜ?A{ ?;?5A ?/3„?)—é?)º ?3 ©?:Ï*??iÛ?AäP?B8ÿ?AÓ]?AF¼?Aß?A=¾?@Ëe??ŒÐ?;w?5e¹?7o?:á4?>Tð?@ ?@Þ?>b¢?:ñ?;>6?=ÁI?= c?í^é>Æàf>ì‰í?¼?a?$ˆÝ?)“ì?.’¸?0°?1R,?4 ?6,+?6š?7 ¦?8.|?8yS?7–€?6R®?7}x?8¼¥?5:=?0Æ?40:?8X?9?:0?;U±?:ó3?7²o?5?6BY?7.;?8'Ä?8ò?6ëÑ?6}?9|?:ŽÃ?:[?:6¬?:¨€?:ŒI?9ðu?9U–?9K?9BÈ?8”ß?5ÝQ?4@ý?7Vè?9¾Î?9‰Ç?9§?7Ðz?5ZØ?5•ž?7å?9HŽ?9?9µ7?9ž?8îf?8,µ?8%ƒ?8nz?89j?6ŽD?4rò?6X|?8«¡?8øè?9Í?8[?70 -?7¦A?7g?2¬9?0’Ù?3Û]?6êü?7ßÊ?7Ü?6Í"?5£Ô?7/?8v~?8¢}?8…?6å?5‰ù?6-b?7B?7ŠÂ?6ˆ§?5Ê5?6‰˜?6ù"?7FÇ?7-?6k¢?5²µ?3›©?/?/ãÖ?2|Ä?2!F?2„ ?4iØ?4­c?5?5Š—?5dQ?4ãþ?4Ȇ?4Ê?3Ê0?3)?3 F?2—?1Fp?2Aª?1÷8?.Ðk?.%È?0ï?2Ÿ;?3]I?1$a?/ g?0sƒ?2õ?2¾F?2ת?1ã]?0@‹?/›%?0Éë?0ØC?0?0¾?1`?1èw?2ã?1†¡?0Z’?/ B?.kJ?/#n?/î?.„?-ÊU?.X?.8Ç?.kL?.ÎT?.ËX?/Jó?/÷?/L'?/¡,?/×*?/_ï?/ =?/gÂ?/i4?/¹n?/ñ_?/}Š?.È ?.ãï?/qå?/@Ž?-¨?*ƒ?+½?.I ?.·C?.Ê?.<¨?-Úœ?-b¬?,d?*³„?+:Ñ?,ʤ?-„­?-m?-VW?-#5?,a†?*?) Ý?*D‰?*êÜ?*Ó-?+o‡?,Cq?,vk?,P*?,,¥?,N?+÷!?+þ:?+ä ?+Ò?+Õ?+m¾?*„{?*Kü?*³º?*Oœ?*1æ?*øM?+Wt?+MÉ?++:?+ ³?*èk?*е?*Éç?*¢æ?*Xi?)«?){í?)ì“?)Àö?)P?(oÌ?'ÅŒ?'íä?(R?(Iž?(¸?(Qº?'ýQ?(†?(wÉ?(‹Þ?(z×?(Y ?(]»?(¤?(‚½?(H’?(Gh?(K]?'~?&p¯?' ·?'Çh?'¾Õ?']ä?'b»?'o@?'!“?'XŒ?'nJ?&·ß?%ð4?&vÝ?&òþ?'&F?' Õ?&ËG?&¾W?&d›?$»n?"®í?" ê?#ïÝ?%ÇÓ?&ƒ—?&,?%ì*?&.?&$?%{?$’±?$Ü?$à$?"ê=?"bM?#E?" Ø? Ž?!ª\?$Ô?$Ã.?#Æ?#å?#*?!]:?!|¥?#à—?$A³?"’"?"x?##³?$ W?$˜9?$vJ?$3=?"Z)?!æ?"uÒ?"]?#¦]?$Øê?$ýy?$Ÿ©?$®n?$Sb?$*Ô?#Å?"èv?"U~?"ç–?#C¥?!© ?! - ?!W†?!4F? ^ê?êä? ½ß?!jÃ?!Èê?!÷¨?!Zð?!g·?"°&?#/¿?!þe? ÅÃ? Ìs? u†? kß? Œž?!?!•½?!© ?!†X?!bt?!lŽ?"PË?"u¯?"s?!C)? tÅ?k2?| ?©˜?ª3?6˜?X?™*?æƒ?“`?!¼-?!èM?!RÕ?žî?ÜÑ? M¥?!U‘?!£q?!š?!£B?!.ž? ·X? ô{?o?^?\–?!8?!yº? øZ? …[?! V?!>€? ƒÜ?UÁ?™H?Õ?†Ã? Ü…?!L?2Å?ƒµ? ?N÷?õ?N?p?:J?àV?g•?±ù?³Ñ?ÚH?Úr?„#?+??ß?Ì|?~?6Å?M+?÷?Éo?|!?çE?NÈ?+r?ÛW?3¯?PÙ?3?&õ?¤?«B?¹ß?üÑ?Ôk?}Ì?-Ø?L?Ð ?y3?-2?ÏÏ?ÀW?‡Ç?q3?‘?Íã?k?ÿé?µÁ?B?õ¾?|Š?ˆó?ÔÞ?OU?AW?šš?è?e? c?“!?=Ž?¦?"?s? ²R?³?e‹?X0?^ù?ÑN?þ?á? H1?„O?ž¼?Ía?ýä?ß7?AB?’‡?y¬?¬?÷?C? fÐ? °Ô? ¨9? Î%?˜`?³|?t›?ù¥?êî?¥Ù?´Œ? -ôu? Ü»?ºX? z? _H?TÊ?‰w?z&?"X?q?ü§?_Û?ð|?h>?eá?¨?È2? Ë? J¹? =? |4? ’? « ? èô? ¶L? oá? §+? óW? ã? -Þ? k¤? -Z?? :þ? ÷W? é‡? j!? Ä#? ±“? “? æG? -?™? á9? -àf? }`? K+? -Ð? -ˆè? -©³? -¤‡? -Lˆ? -kÅ? -y? - ë?ýd?ÐJ?÷Ö?Ç ?º#? Á¹? ù-? -v? Áå? Ñì? -ÎZ? -? ¤ì? -¨\? ^? -öû? -Kß?ßO?”€? £ê? -³•? -Ï’? -«w? -`C? -0ž? -=`? -¶? QÒ? &í? Š!?   ? ´? Eƒ? Fì? )?ž*?$ó?óÒ?å?™™?=0?D:?>Ë?/h?#¹? §?ëæ?çA?Â?GÜ?Y´?“ª?‚s?xa?sL?Xó?¼¸?r?ÀÛ?)%?x?Q$?ö>ÿ¬ê?@?ô±?½æ?<¶?\)?a‹?fš?-6?å`?`@?ƒ5?«g?=?ÿØŸ?K?¢Ê?e‰?ñ?8v?Ô?ܹ?éB? â?÷ -?øw?¼>ñ1~>äÇ>â„æ>ò/(>ûÆ ->úË#>þ Ñ?k1?è>?qÆ?6?’Ó?œ%?ÉŒ?'ˆ>þ£&>þ9Ö?Øp?ë?tü?òµ?d€?o\?•?Mò?íì?B?½}?í9?Û$?S?˜ ?YÔ?Iñ>ûÜ>ÿ_[?dÓ?á ?}î?è?£½?Õ?ü7?ªË>ÿC>þVü>ýù1>ûáÒ>ûM[>÷ä’>ôˆ>òä->ð(‹>î³|>ïZ|>ñ“>ô-.>õðf>óC¢>ôÃU>û9X>øϘ>ù¦«>ü µ>û/|>úÐX>ü +>þD‘>û Õ>ò)V>öN³>ýZ>ü·>ü?¢>ü·0>ýnå>ü –>ú©>÷†>÷>øQ;>ö¢?>÷#¹>÷T>ôW²>óO‰>ó>îž÷>èRÍ>ãW‹>庚>â5v>ßÕ>å­ß>èOY>æ6>ã ¥>ç‹ù>ï™ö>ò»°>ò³Ö>óËN>õ¼Õ>õÙ>õÖ¯>ô‘>ñDf>óÜ>ö^>öX>öøÝ>öYv>öV>øa>ù>ø6¸>øÕ>ùðá>ûU6>ûMô>úN<>÷ˆ>ô ×>ð™>ðŸw>íwÂ>ðåF>÷§>ö’þ>õ€>óÑó>ó ->ðíæ>ñø>ôcë>õÑV>õk>õGL>ôý”>òNE>ñDK>ï¹É>ó -‡>öÂ,>ôâ·>ñ¡ý>óz)>ö`_>õàd>óD>îØ›>ìM>ï ˜>ð­¿>õkƒ>õ†>òµß>ñ\>îÎd>î0«>ï¬|>ñÿ>òT5>ò_ú>ðÛd>ñëÚ>ó ý>óm>ó"Ê>òˆ¿>ò!÷>ðP>ísc>ð‚Æ>ñ$B>ïtî>îƒS>ïŽ>ï >íNr>îäº>ð˜E>ð»2>ð«&>ð…c>ðH$>ð%ã>ð(¶>ïÞ3>ï´Ë>ïߦ>ïß5>ïËû>ï±þ>ïƒ8>ïp‡>ï]¸>ï í>îѶ>îö>îϽ>îZq>î=>îQs>îXS>îD:>í¼å>í#´>툅>í²Ü>í¨P>í„>ìþ1>ë¯>ìC*>í (>í¬>ìä>ì·L>ìŒ^>ì“Ò>ì^S>벇>êŸÈ>äh}>ã=>èæ>éK0>êú…>ê‰V>ãÂn>áÛ/>çCå>åï®>ãQH>æfª>é°i>è¶P>è>>è ß>ç 9>åÈQ>å¬>åêÅ>áe™>ãø¨>èš>éˆÝ>è©ù>ä]g>âK0>ä|¤>æ~>èÚ>è >ç°<>皯>èU%>ä|[>ÝÛD>ã½½>ç#=>ä²’>æZÐ>çü˜>çÃO>稡>çr>ç¡>è:Ï>çÉ„>ç`ì>æTà>åÀÉ>æ†Ë>çA>æÿ¥>æËA>æí¸>åå£>äÅr>äýg>ä©é>ãÓØ>ä©ý>æPŒ>哆>åö>äG>á÷>ä+ð>ä?z>ã¬Ç>ã<î>ãóÞ>䌙>äU>äñ­>â“Ë>ßt{>ÚË>ߘu>ÝŸ>ØqŒ>ÏÈ·>×K[>ÝÇ/>ße>áØ…>Þ >Ü~>áÅŸ>äJ¿>åQº>ä^Ñ>â3>ß3F>Þ®>ಃ>â®»>ãiY>ã^Ø>âÜ>á6¦>ÝG>Ü‘>ÞÀA>á½>äµ›>äÿP>âÄ>Ú8o>×ÑÜ>Û<ù>Øßá>Ø ÷>Û3>Þ¿ >á~W>â@X>àCõ>Ûd>Ù\>Ô%>ÓõC>Óvx>ÕÓ‘>Úˆ+>Þe]>â¤->â—ñ>â-,>᳦>à >Ü„’>ÚÑÜ>ÓÒ:>É+r>Éí>ÓmÉ>Ö…‡>ÌiÂ>ÁrN>×ý&>àj>à›œ>áœÕ>á“>ßÓº>ÛA>Ö´R>ÑD†>ÆŒ5>¦–>Î8>×Äm>ÜÞH>à¿J>áün>à6À>à»>áV>àöÒ>ßy*>ße)>ÜÁ•>×Ñ>Æ4¦>GÑ>£Iì>´ÁÍ>ºÕr>É >Ò'š>×±è>Ø<>Ófy>ÕZï>Û®->Þß>ß>à( >ÜŠ>Ú1Ñ>Ü9¢>ÚÕ>×®>Ð5>Ä@ç>¯©Þ>Vå>T„ó> ß>©y>½k#>ÈþŸ>ά>ÐXí>ÎC?>Ôð>ØeÑ>Ù&ô>Û4Ø>Ú˜W>Ù²>Ú37>Ù>Ù–F>Ù˜>Ø¥g>×ß#>Õõ>Ôß>Ф²>Ñj³>ÏÆ>ÉB>ÁN>¶ut>©ÐØ>°Òo>À)ã>Ç°¿>ËwÁ>Îéð>ЈÃ>Ð; >Ó>Ót?>Óäl>Ô;>Ó¡>Ö>×ó>Ôú7>Ó‚P>Öu>Ö‚>Ø c>×t>Öä?>ÕÒ˜>Õ å>Ó^å>Ìûñ>Ìp>Îë>Ë›>Ƈ>¿¨>¦“Í>n‘î>j|>’¸Ñ>ª6(>¶õY>¾G¶>Å}>Èkh>Ë"U>ÂK>ÄË­>Éà >ËSƒ>Ç•e>ÉB—>Óp>ͯL>Î\d>Õk5>ÓX*>Òz™>ÐÆu>ÔLC>Ö%>Ñž2>˪3>ϽP>ÔT½>Ï¥T>Ϭ.>Ô‰ê>Õt‰>Ô\ô>Î>Í¡ù>Ñ'U>Ðr>É“ë>Éij>Ê-â>ÃuÇ>À#§>½6 >±ÅV>Ÿä>ž³µ>³CÁ>¿¶Ô>ÃÜË>ǦJ>É‘H>Èþ•>Ìäô>ÐœT>Ñb>Îæ1>ÍŠO>Ñ>ÓŸ<>ÓÑx>ÓÈ<>Ô„ÿ>Õªv>ÕjÍ>Ð5Ç>ά>Ï(>Óå5>Õ´>ÕËH>Õ€é>Ð U>ÂfÆ>ÇDM>Ð[>Ò P>ÓÅ`>ÕQÚ>ÔY>ÐpÈ>ÌÐÊ>ÈÂ>Ͻ<>Ñ©J>Ðø%>Т>ЦA>Íü>Ë3F>ͳ>ÍÅV>Ì_>ÉÚƒ>Ê6œ>ÉD=>Å‚>Á£Ä>»2>°Èé>¢`Ä>š'q>¦¯®>°Þ>»9>À¦P>À—>Ã8t>ÇÑ>Ʊ=>ÆkI>Æíö>Ê|™>Í@)>Í¿í>Ìm>Ìr>εh>Σ}>΢(>ÏÃk>ÐÙ>Ð+–>ÏÄ>Ì;b>Æ+>Ìú}>Ð"ô>Ïâ>ͳƒ>ÍÏ{>Ëè†>Ä»Â>Å(Ö>̓]>Ï”ô>Ϩè>ÏÊN>Ϻã>ÏZ_>ͯj>Êóá>ËÆ>Ìt¦>Íü>δm>Δ>ÎjŽ>Î-h>Íáp>ÌãÜ>Ê&ò>ÉÖ>ËIÀ>˪P>ʺÜ>È·>Ç…>ÈÒÌ>Ê/>Éø>Èã>Èý>Æþs>ÆAq>Å->ÂþÆ>¾ m>½By>¾@’>»\Ú>µöp>®ºŒ>¦y¼>˜† >’\>Ÿï¿>«÷ß>±¼×>¶â->ºãT>½o­>¿^o>Áð>Áˆs>À_[>Âx>Äb¨>Å_¥>Å” ->ÅòP>Æ">Åvð>Æ$‚>Ç0>Ç -µ>ÃÌ>²q'>¶?£>Å¢û>Ç»Á>Çg3>Çj>Ç?>ÄŠ >»x>¾­½>Æ\t>ÇSu>Ãjè>¶Ö<>½öž>Â>v>¶«Š>¾æ>Ä„s>ÅP>ŃA>Å>Åkë>ÃzA>¸Øz>¾G>Ä÷h>ÃL;>ÃEu>ÄK>ÄL=>Ä¥>ÄŽ$>Äžc>Äkq>ÄÜ(>Ä­B>ÄÀÝ>į>Ä”H>Ã9—>Á_m>Âëp>Ä>ÃœÙ>ÃI5>ÃnÅ>Ãq¦>Âö+>ÁÓ>Â,r>•á>Âó>ÁK>¿ Z>¾÷‘>¿Ð|>¿kC>½±Œ>¿]|>¿Rz>¿†}>¿dV>¾ô7>¾F©>½/È>¼)>»{Ã>¹Õ™>¹š>·7ü>³M>¬>¯Ÿ¸>­ª¤>©m>ª~Å>¥„Ø>›§Å>‰1Á>„0>• ¯>¡0T>¤H¹>¥…Ä>®Bî>¯Ã„>­qU>²'A>¶ -è>¶;>´|>±WÈ>²ýF>³a_>°\œ>±çÈ>²ëÿ>¸cp>»Ró>»i<>»š>»Ò•>»Ó>»á›>»Ö•>»ÉV>»·f>ºƒ„>ºª.>»>ºà{>»QT>»²ã>»ô>»'>»7Ö>ºùÊ>º¯Ä>»N>»8>¹0{>¸ˆ©>º\>º|à>ºBÎ>ºŽ>ºÍR>ºžû>º@Ó>ºvu>ºxú>º7Ù>¹Šb>¹lÛ>¹»´>·×>·ÎZ>¹>¹:>¸¤>¸>¸9¢>¸ñÔ>¹-‡>¹N>¸H¾>· Û>¸-¹>¸xQ>¸ à>¸R>·âð>¶*¨>µç!>¶Ö¹>´hk>µ¯>·iÿ>¶¦«>´›v>²2M>¦ÚŽ>®±Ž>´—L>­’ù>¤86>¯ç#>µŒ¯>²´î>²oG>µ·t>µ_>³©´>²©¼>²ÃÖ>°¾½>¬[>±Ã¬>²Ës>°xW>±¤c>³·Ç>´0ˆ>³Ay>³6þ>³ÊŒ>³˜>²­)>²N5>²ÙQ>³F­>³)>²íh>²Â>²Ôè>²¨ê>²;7>±ôa>±ßí>±Ê£>±Š4>±‹>°–É>°4>°T>¯úº>®Ç>­O:>®X>®kb>­æô>­gá>¬ø9>«ó^>« >ªw.>¨éÛ>§¡Ë>¥Î?>¤Nƒ>¡ÓÖ>ŸK>›'ø>”ùO>‰ÑÈ>sny>yä¦>Œ|>•Æ½>›cw>žåå>¡š‰>£€#>¤ÅR>¦5Ì>§">¦!ñ>¦ù>¨Â>©Wë>ªeÙ>ªÎQ>«¦>ªùP>«7Z>«œ«>«%\>ªnÜ>«\3>«z~>ª>e>£«l>¦0Â>©¹#>«@_>«è>«ÿ>«ôQ>ªVY>¢ý>¥«ß>©àQ>¨¿>ªil>¨tx>¦=>¨ñg>©õ˜>ª‰T>«,œ>ªüA>ªó>¥Òü>¦Ê›>¨´—>§Ò3>žd>¤ª>©ÂŒ>©œ]>ª P>©—‰>¦¼õ>¦³©>§˜—>¦µ£>¤? >¦jU>¨Ug>§jR>¦>w>¤¿‰>¥ƒ>§qE>§¦û>¨Ye>¨w>¨>¨,s>¨b6>¨>´>¨Fú>¨2ß>¨ ¿>§â”>§!Ö>§V>§O >§°>§>>¦{£>£Ô~>žé¾>¡ƒË>¥‰>¥Ø>¤«‚>¥‹‡>¦{>¦x¹>¦2Í>¥á£>¥«ü>£zç>¤oò>¥%>¥Q>¥“(>¥š@>¥ð>¥f—>¥0ÿ>¤^‡>£Ó„>£Q'>£ì'>¤y¡>¤6ë>¢×>¢oÉ>¢–ü>¤">¤.Þ>£ü¨>£uý>£IÄ>£¶¾>£§@>£5,>¢&>¢°/>¢uµ>¢_9>¢’\>¢>¡•>¢Sº>¢Ð>¡µÇ>¢>¢E8>¢½> É½>ž|¢>ž_>žõÇ>Ux>žZô> â…>¡7Ö>¡&> ·Y> Ë×> øñ> ìf> Ž4> t}> N>ž<Ù>˜‡Ô>š@³>Ÿ&û>Ÿ‚¨>œä¶>ži>Ÿ<ÿ>žÌG>žèÓ>ž=>œeX>›;3>2#>žù•>žëÝ>žºh>ž b>Šÿ>˜ ->šÎƒ>žÆ>ž¬>œu–>›‰·>^)>f¼>œ¤A>œ W>œÕ >œÙ>œ4”>œã>›ý¥>œƒ?>œ]“>›ð÷>›ô>›ö`>›k >›u`>›?“>›ª>š±‘>šÈ>šÈ<>™Ê<>™S\>—%'>˜¶Z>™dp>™R>™*N>˜ÔI>˜nú>˜õ>—†>–Ñq>–I¬>•§³>”>“f->’”$>‘ ->ßä>Ž£>‹‘ã>ˆr>ƒL>tÔ·>VÂR>SU|>q'H>¼\>†Þ>Šˆ>ŒˆÁ>ŽG/>m7>4[>‘Ò˜>’ºm>“<ò>“ +>”>“üÁ>”!º>•H>•> >•€µ>•«†>•ÇS>•Üï>•áÃ>•x†>•Wå>•)“>•i>”>”•Ê>•µ¶>•ŸG>‘P]>Žû‘>”æ'>•š+>•˜¬>•©4>•ˆ¥>•Š>•o>”N`>’@¼>”dö>•,p>”ì >”pF>”“Ë>”ëÙ>“Gÿ>‘.R>”>”>”Yò>“ɺ>”G >”J×>“²u>¾á>‘9>“ ™>“™ >“M>“0>“u*>“8[>’ýÐ>’á_>’û >’|E>“ ~>’„“>«Ã>‘9>’Ž>’˜§>’~=>’[D>’QB>’bÀ>’4­>‘s“>‘\8>’>‘±,>‘‘4>‘ý>‘µ>‘“->‘zê>‘g{>‘N½>‘!Í>‘¬>‘N>íÐ>¤m>@Ú>œž>§ >‹Ý>h|> c>ŒV>vã>¢>þ>°v>+>L}>•N>b>ŽÓ3>Ž ~>Žÿ—>0Ø>Žõ>ŽìÑ>ŽÚ®>Ž²>ŽE™>¸h>Ž&Ò>Ž‚³>Ž5a> •>Šî¬>†>u)>Ö >‚½>˜e> ~>‡)>6×>Œ¶>Œ½È>‰a>‰.>Œ¹t>Œ>Œ&$>Œ³;>Œ^>Œo>ŒS½>ŒBÙ>Œb>‹}š>Œ">‹ï$>‹žÀ>Šå½>Šê>‹™÷>‹£?>‹|’>‹n&>‹f>ŠÜ^>‰sS>‰‘3>Šþ->Šãa>Š´ó>Š½1>Š¡Ü>Š~€>Še,>‰WO>ˆÆ>ˆ®´>ƒH„>{Fø>€æ>…su>‰`e>‰ m>‡£Y>…Æ›>ˆuk>‰(ð>‰Wv>‰²>ˆý]>ˆ0ï>ˆó>ˆ6Y>ˆ2>ˆ¨—>ˆˆÃ>‡!T>…«/>‡ê¸>‡ºË>†ƒ%>†)>†ÈE>†<ý>…ìî>„þQ>†Öù>‡;¯>†-&>…a?>†*î>†âÛ>†%š>„09>†4>†áA>†¥Ã>†ˆÜ>†³‡>†?‰>„ä·>…óÑ>†R•>†8Ü>†1ƒ>…ñD>„—Ÿ>„Ðí>…šÔ>„Žâ>ãG>{|,>‚¦e>…a+>…K˜>…ã>„l>„Þñ>¢e>£>„S®>„¡¿>„&À>„qg>„l>„kd>„^G>„#>1é>€†>‚qÚ>€ÿÔ>ƒ€q>ƒÎ×>ƒ¹†>ƒš¥>ƒu>ƒ`L>ƒI>ƒñ>‚ëÃ>‚,K>zw >€¯!>‚Ã'>‚¤>‚Ÿ5>‚bg>¹ð>‚‡>€>j~×>i* >yE5>h‹Á>l™>z,Y>0¸>€¨Û>€ñõ>~pZ>q|>~Mq>ç>€è`>Ú>€|>€Þå>›>s>lrI>|qq>€ax>€uN>€:ø>>}Lë>{ÀÅ>sâ >xˆt>u¯8>}ÜÎ>~º~>~WÛ>~bz>{ß$>|‡Î>~(À>~R>}ÿT>}Ãõ>{ï„>wJ#>pü—>ymˆ>} -Ä>|<4>z½I>{a>{†f>{“ƒ>{²ÿ>u6Ø>kûÏ>xEÂ>zËç>w8R>p<|>w;ç>k®h>oEù>x˜K>x|>x[È>x±ü>w‰9>q•>vì|>x³‘>xž÷>xs>x2p>wÎ>t›>r-_>sV…>bÛ>lf®>u]©>uÒ1>u:K>rz{>l{z>m¬ö>sÔ>r -¿>q-…>p·¡>qRu>pÉ»>o¶¶>ne>m >kGÇ>b"Ë>dØR>fÑ«>d¢—>a¯¹>]­:>XH*>P_š>C!¸>*¡¼>&b\>?Cñ>MÑO>Uݦ>Z->XiÄ>\™S>^cf>cèn>gN>ci >dáß>jZ¯>kP)>k¾>i^>aq>c‡Ì>giÄ>lPI>m>m½*>mè'>n >>nð>mý->mÈ?>mõd>mþ0>lÆ>jPä>c“&>iT\>m{l>m«—>m˜d>moD>léç>m-7>læ>lhO>l² >k‡Ÿ>l|Z>l½ >l -1>k†ó>kžt>l-Ö>l3ý>l¶>kß~>k¢Í>k£H>k‘Ì>km|>jÒw>j1ü>jÖI>jµj>j±7>j‹Â>jº>j$—>j5i>j -ø>i¦Ï>i™´>iy >iJÐ>hå0>f0>gÁ‡>g¥>f›Ä>bò6>d<>dƒ>f¼f>gÌ>gU>d D>fn3>fÞ>g #>f¯>f>f; >f˜™>f•Ì>f€N>fK’>f4a>eÙz>eJ>dÞf>b÷M>\ƒ>\Êú>d¤ö>dȾ>cñ>c2&>`O>cV{>dH)>d*>c™1>a’ø>c9>c~b>cP>c&L>b÷ï>cW>bßÎ>b‰œ>b€~>bvå>b ¬>a¡V>a‰¡>\ß>U_¸>Z ­>`ÁÎ>`<>a Ê>`Úä>`Ýê>`À¬>`“>`a‰>`I¿>`L>[Ç>O€ã>U_v>\Y>[yi>YH>[J¬>Z>^>]wÚ>[~%>\ÿÔ>]ó >]ÿˆ>]Þ6>]xÃ>]y†>]a4>U>g>R%j>ZâŸ>XÖò>[„—>\›Ö>[±>[ŸØ>\l‘>\Ay>Y¡”>WG>[?>[¼o>[Sø>[‘>Z¨ö>T·>WFœ>Yf>Räf>R×/>Uþ1>SÛ#>TŸ5>Y³d>X \>RðÒ>OT:>Kƒ³>SǼ>WzU>U¸X>R·>W¿n>W0J>UQ×>W]¢>W£x>WÁe>Wò…>W'¤>R¥ÿ>UÚ½>Ry—>Nð>Qj>V3g>V×ç>VÉÃ>V¨W>V€>VF¾>V0æ>Uܱ>UT>U£Ù>UpÍ>UG>>T¼>T?²>U X>TøË>T²T>Tzô>TdG>S%>S£o>T 2>Ta>S×¾>SÞ>Q³×>Q¶ï>Q­>Rô>RÔ>RÑË>R´ >Q >PÎ4>Qà>R@>R9>R>QkÂ>O%ê>PxQ>Qo>QC&>PÕú>PÜØ>P´ã>P­®>P©o>P…>Oùq>Máè>O=*>M°Ê>H«H>LŠÀ>O >KÿÇ>M _>K?#>Fïx>G0#>Lè=>L«¬>F]7>Lp³>MÉQ>Gð›>Fõ">M}2>LØÏ>G× ->Ióf>L³Q>J¿9>HJ£>Hj>G ->Eªø>9jß>HÖ1>LÒ>Gs>@‰Ù>EÚZ>GÈà>Kr$>KOÞ>K>ƒ>JÑ}>D±>FÅé>J0>JBÞ>HºD>IÃT>JAœ>J%>Iñ)>I¹o>Iˆ>Iv{>IW>I2 >IØ>HÇ>HÑ>Hb?>HX²>H6)>HB¨>D}³>:„ê>>—Ø>,x>=M¸>G{>GzÔ>GdÞ>G '>EØ>CrI>Bî_>?Çè>D f>@l>E°l>FD_>FÈ>E÷Ö>E“=>@»V>AåÕ>Ehq>EF>Aïã>C·>Drõ>A“|>Bôy>C¸>9S0><ûƒ>CîÊ>CDP>:`>=Í>C€°>A²ì><¸E>BVÉ>C>Bä:>A2¥>;Ë>@kÊ>B‰>Bq™>BMD>AXû>:Ñw>7É:>7:>@ö>=Âf>5À^>4m>=ã8>@è«>@ëx>@˽>@ª*>@ŠÌ>@fr>@OÁ>@1a>@Ñ>?ç1>?Å>?°³>?Œ†>?lÆ>?O§>?) ->>ÿ>;:N>ä->ó3è?ÕÀ?XÐ? hù?±h?Cc?W„?ÁÙ>ú±>õ‹’>éÍÓ>Öá<>Åt>¾oÔ>Ä…>ÕF)>êhã>úé>>ÿæ³>øÊ>ê…!>Û›×>Ïv¶>ÅK=>¼ý¼>»"î>Äë®>Øè‚>î o>ùìu>øQ>íÊ>àj4>ÙçT>Û5">ÞÉŒ>ß $>Þ>à¹&>å[>æHå>ä•L>ç:>ïÞÏ>÷‰è>÷ß”>òÜØ>ð~>õCK?s?ý5? -Γ?>ô>ö÷>ß±>ÑVX>Íú9>Ð >ÒØ>ÒÙ">Ϲ±>É¿m>ÆK~>ʨ]>ÔB>Ú™ >Ù{­>Õb>ÓÛ?>Òml>ÉÐ>¹ƒ¯>ª­^>§…×>³^I>ÉwY>ßêÆ>ítì>ðZ>ï¤Ë>óðn>ÿ*ˆ?Öy? Ž?ô­?J??—?;~?¢4?î? ”¯?¯?t ?ò?Y›>öâ7>ås>Ò y>ÅW>À€/>ÃŒš>Êõ'>Óêæ>Þjñ>élÜ>ïè>îî>ê©>ì!Ý>ó± ->ù%M>öü>ïK>æcP>Þ³j>Ú8^>ÚBí>Ý\O>àÝÒ>ä¨6>ê…²>ò)>ù¢ª?œK?Ý/?I‰? n=? )×? 8l? 5?‹ò?Ö>õ-›>êÕ>ãQI>áÏo>å[>튌>ú¼›?y`? /#?‰¬?6^?‹r?è? ³? &~?è?ú>ø\>ïVô>ãN>ÓI>Ĉ€>¼f>¸ô¬>· ø>· !>¾Ž:>μj>àoæ>ëÍ>ðIŠ>ò>>ów>ð )>êØ>ë“ë>ù9î?6?Ôõ?eœ?ü÷?ÎW?}f?"B? ý?¨? Ι?…H>æk>ɯœ>·×">°Úø>°³&>´œ+>¼{&>È’Ú>×>>åÙÏ>ïb¸>ó«>öÈ ->þq&?´-? ?¼ã>ò1Ý>؃Ÿ>Å&³>¾4ë>Ã0a>Î"}>ØåC>ãF¢>ò:3?º? ¹r?¦|?rä?ŠŒ?k]?-[?í²? -a??OÁ? ]?í/?&E?™#??°º>û >êÕ.>áù>Û£Š>Öv>ϧÎ>Ï&S>Úñr>îÄ>ûð>ü×>üàd?Jñ?Œ? Ü?? ¯? g+?I–?Èì?M?œ¸>üzð>ð™†>àÁR>Ïé'>ÀÚµ>¸ÚR>½ª>Ìý„>à>^>ìFÍ>ê¹±>Ü„>Ç:r>¶•Ê>°$Ù>²Á;>ºûî>ÅÍ>Ëùâ>ν">Ó¹.>Þw >ê¡=>õ À?i©?‰¦???Øn?>ë?‹? ÐÂ?¨>ý5ž>ýU¢?øÙ?¯\?’?ü>ÿâ>ÿÐÆ?fH?­•?¦³?Y:? ]?!Ï?#Ãç¥P>Ýi¡>ð9? Â?:ù?)Š? Ž?"¯Ê?%àˆ?(b?(R?$”æ?4}?O\>ÿÏf>äm«>Ùž >èó8?ùÜ?î¯?#SÎ?&›ñ?"úš?Ém?Í?˜ì?œ?Hf?o?"a>õ¯¦>îq®>úÅ$? ±–?ÑÍ?'ÕÜ?,²–?)û3? .„?4?àÇ?¸?qK? ¡^?Ë?ô±?)K?.f?%0 ?"Ü?Ú¨?.'?"ð]?)wY?(KY?Ää?6? Q? -wÒ?t€?ºõ?"µŠ?+‡2?0 ô?0ìò?0ç(?0Ì?. S?'rÞ? 3/?Ãw?X:?>2?Ò?SP?¿p?‹º?ÂÒ?RÄ?]œ?"5’?#1v? vá?œƒ?há?hº?q?l?%zä?+Ç?1Nú?4†,?3ýí?/üø?*Y?%wÊ?#gC?$>â?%‘u?%•z?&OX?*Í?#»?%‹\?.P?6È?:iõ?;³?7çÍ?/þ?&5t?!¿ž?&­i?1 Ž?9m?:¿?4› ?,lŸ?%?V? L?É°?Ýå?ûž? È?$v?&)ß?$ß°?#……?%#d?)a?,™x?.ô?1@«?2îD?2e?/{Ä?*#R?!¾¯‹?B?D]›?DJ?Cç?B³?Ai>??rW??èw?C©U?G;ô?Gb??D‡‹?@±O?=}?<[Ä?=‚ý??œn?A¬?CO¿?D+•?D%?C¿?Dâ,?I(Ž?MŸ”?K‰È??ï«?0Ù)?(H?)‹v?.dò?/Œÿ?,ÊB?*¼H?*Ú]?*ºá?*2]?+8¡?-AZ?.A(?.ê¤?2 {?8<¼?>ë?B%C?>ñ ?83Q?5aÇ?7`Z?5²ª?*–?×?f? -4?sD?Ø?!n?(ø?2½ý?9ÿ?<%>?;Ç=?<‰â??Ì?B9`?EÜB?I®Ã?Lp)?L²?IÔó?Dj?<<`?5Ï?1'á?1}E?4šê?8ÏC?<]ò?<¶õ?8hS?1Á…?,åi?+M£?*Ÿ·?(Ks?&i?*-|?48Ü?>IX?ADy?;cö?1ÏÃ?,ƒ¥?.jn?3ƒ#?8 ±?;¤ø?=ò–??±]?D‰?MP÷?U;?Vï>?RÞš?IHc?9òÈ?)Å?˜°?!îÎ?*¤[?2AÙ?74?;$L??kÓ?D/?Ië?L)Á?J¼f?E·?>‡?7fy?1²??-Ë~?-UE?0Ã8?54"?7$?6fÚ?4Âú?3Þç?5kû?:¢1?Bm9?HúÃ?Km¸?K)j?K¸º?Nþ?OÒj?N¿C?LÞ?J@—?Ifÿ?Gv‡?D‹§?Bpè?B5 ?Cï!?Eõ*?Eâ=?BðÙ?>3ˆ?:•?;r•?@þ´?GQ+?Iù?H@€?E6¹?B`?>-•?7zÙ?2Ÿ?0sÛ?1½±?4¸ý?7Ï3?8Í¡?7î?6 y?1ÌŸ?+ƒS?'b'?)ü?1ý?;îö?A*?@Šj??á?@Ý-?DŒd?FÓ?EÎc?@¢?8›s?5H?=>"?M ?Z–,?\¢#?S ?C -Ü?0r?"Åî?ÜD?!‚_?+´Æ?7Qó?=dO?:“?1,Ú?&Çb?"©§?*×{?<†Å?MT)?X¼ç?c<–?mCy?o ÷?c@8?L¬’?2SÇ?«i?ëý?MŸ?6_?N{ì?^_t?`$®?Z%Ù?Yƒ?_Sg?`@?V¬?C?+AÞ?ó?,¾?;Å?ÁÕ? ?2¿?Gù|?Z3\?e‹M?h~ƒ?d„Ï?]¥?WFä?P¡t?F[ä?8ç¦?)¸ú?Pž?ˆ‘>õaf?æq?_$?/- ?F¾?ZÁ?kÏ?rÂB?kçr?Y¤É?HA?Ayá?Bê?HÔ(?RŒJ?]èä?eq%?g$Å?cØ?Wâœ?HYå?8ê›?)*Œ?5G? |/?lk?$wi?6y??ÃÒ?C¤i?J€¸?X80?i%ì?wî>?‚/ù?‡  ?Š™•?Š?B?ˆË?ˆÙF?ˆ»W?ƒfî?rj­?aüÓ?[ì?[ -:?[é¬?_:Ú?b^?_'?S"®?BK@?1ëè?"o4? ??'Ó>úƒf? -¨O?"ÔB?;jþ?P„G?c/K?pÇæ?tŒ£?oEg?g€¼?fCk?qe]?‚c™?Šé#?ŽS±?Šÿ–?On?k:U?\ý{?]&Ü?h*È?xg÷?ƒ²?„Ð?€uv?t.Þ?p ?usH?vFE?j ï?Z<¯?R2n?PKÌ?N5Ö?J× ?GÔ8?D3¾?;:L?)š?ÈV?5Á>è\>Ý„â>ç’ú? ¯?JŸ?ê$?%Ri?1˜?Ar?PèN?[MÅ?a^?dä•?hº•?q*Ü?{–÷?~à-?yé‘?x-?€ƒr?†‚?‰t€?‰Ô?†?‚4Ú?€Š•?€›¡?|”Ó?v£Ö?{Bh?„Ñ?Šé’?-‚?g?ŒÅ??‹2?Š@W?‹Ç5?Žü#?‘,á?ë«?‰© ?~ ¨?kMJ?hã?vEW?‚†?„1H?|èò?jÍ€?cI?kóO?t¿.?o²U?a0Ä?S9Æ?F«q?6â}?#Þß?‰Í?ªc>ìø@>íTâ?Ù[?¿²?,5Ç?8WF??tÊ?DÎß?Jè™?Q E?UtS?TöÐ?T£{?[o“?i -?qÙ²?oê±?jûf?fÈY?b)?c\Ø?o ©?‰?† ö?Š?}?Œvé?‹bÞ?†- -?€Y—?{í1?z`?vœ?r¸¨?pñ?på[?sÁv?yòî?€}?‚ò?ƒÿ ?‚;ç?yŽ?k„°?[Ïü?GÆy?.׳?Ûª>æ´Ö>®/m>‚>ZM>pó>¢OË>ßL~? µ?.ˆ?J³?^²?hKë?iĈ?h"V?f¸ž?j¥„?uQ€?}4v?yt -?o2à?hõE?iAc?kÔÕ?n ð?rÄ=?{3?~×l?u¦»?gZ×?c#?kQ¶?sò¯?qwŽ?c1o?QÛñ?D å?7µ‚?'PÜ?jã>âö¿>¨yB>€‚…>n£«>ŽF>º°ð>î½?ô?#j?5#w?DÍe?Pœ?[\M?h²†?v”#?~-?{rO?tDÈ?rûr?yI—?€€ì?‚°W?ƒ® ?…™´?ˆ1“?‰w0?Š2b?Œð˜?‘ÏÓ?•¿ä?•¢%?‘RU?ŠÏ??„D|?€Ú*?ƒóŽ?Œ`Œ?”M?—$¾?—C?•Q‚?H?‡Ù–?„ î?‰x?’z?˜=?™ÙÎ?šP,?™È&?˜ '?— ?—«Á?™PA?š¬õ?šÇF?›ê‚? D™?¤¤B?¤‰?? GL?šã??•›?’ Ç?”‰Ò?œ@—?¡‰u?Ÿc]?—É?ŽxT?‡b?…*3?†ý@?‹_?‘(?—–?ž¤Þ?¤ø‚?§êÄ?¦?¡ ?{˜?ž%Ö?žË0?™¤Ñ?•/?Œ¢ø?“F?#D?¡¯‡?¡fW? Ç?±ö?™‘Ú?”b??žÕ?·þ?“}?•C ?–™?™5B?žo·? ¿L?œ€â?“¿“?ÉØ?ºÄ?”–ô?”ÕŠ?’Í?•]Ç?š§>?šÉ¨?”îJ??’'Ã?• Á?“e¢?‹Sê?Gf?p\?u>ð?„¢ ?ŽÓo?”ˬ?”Çæ??¢ƒ’? ÷ó?¢±q?¢:¦?šÀ?ŒêÛ?ƒû?‚*Ž?ˆUè?Ž°Ï?†*?‹‰ó?ˆùÜ?ƒ?”ª/?—œ??•3Z?“?“£*?•Ôï?•ä?’¿?¹q?–?›ßB?`[?ž¯¸?£•ð?¦ýœ?£`?œ“›?–ðç?‘5ò?Œk¡?Ž+¦?’ÿ‚?“mB?‘ ^?‘Ë)?’¤˜?”@í?—ú²?›«?œ7?šà?šp¶?žà?¢¼?¤`I?Ÿå`?–w‰?m?“ž>?šy?%3?ü²?Ÿ0e?žÛ?šQ*?•oã?–œi?›CÄ?ŸÖ?Ÿý?žÒí?ŸÎK?¢Ÿ0?¦/3?¨$\?¥Eƒ? ,…? ¬ó?§¨È?­ÒA?¯{Ä?­vÃ?¨§r?¤`„?¥rK?ª)>?¬ê ?¬Nã?©C¯?¤J?¡”}?¢¤P?¤?¢ò›? ÜA?ŸQç?Ã$?œ!?œR$?œ¢i?›1&?™ -©?•ò‚?“—Ï?•GP?‹Z?Œ2O?¿L?“½?—8ü?™ÉÓ?œ -f?žVì?ŸP¹?em?™¾N?—ʤ?˜U?™m¢?š±ß?œ?œŽÞ?œp?œ¿Ø?œË ?œ (?šÅv?™ÌÝ?š*×?›NL?œ#ç?œ˜ ?œ Þ?™år?— »?–ÉA?•™´?’{ -?±±?“?9?–sª?•Øã?’—™?êS?“V?—t„?™ñè?˜Â’?–.Ì?•é*?˜oS?šùì?œþ?œ3À?›øþ?›zV?›Ï -?K?žR-?$õ?™â?–Áy?”ùj?“€Ò?’ï×?”Öæ?—™Ç?˜Ÿ?—à?•º?–ë?™‡‡?šm!?ša?šô×?›¦Í?›¨I?›Š/?›–´?›5Í?›0ÿ?›õK?›Ìg?™õ?—£á?•òÇ?•H?–a?˜‰!?›" ?›²?˜­?’ë~?Ž~'?Ì'?›R?’¶ -?–Šù?™{??š?˜Œ?—|Û?™4Ê?œ1?;£?pX?”?›ýH?˜ß†?—ü“?™”?˜Í†?˜!?—½Z?–x?•JÎ?–:?–°R?—ýK?™´.?›l7?x`?ž×œ?žz?œ-N?˜ýš?—<?—ã¢?™©L?š&?—œÐ?”º?“ã‰?–Žq?˜5?˜,¤?—\ ?—*?˜:?š#{?›ã³?œkõ?œ@ë?œX¸?œ‹g?›È?˜ºÑ?’7?ŒwO?þ?“Û2?—E6?–ÿÚ?•¨¡?•3p?•!x?•.ä?•Oâ?”½Í?“z\?’³ ?‘å–?[?”?ç?ÖÇ?r]?"Ã?tJ?‰3Þ?„›N?ƒŸ?…›?„­¾?£?t¾X?dqè?Y±2?T(É?GB?- B?‘Õ?H»?o‘?3ú?Jbí?\&[?kP ?uØÏ?xKê?rø?lò?ròN?}ÎÈ?øh?‚N»?ƒ©?†ç,?Œ’„?)A?:Í?‰qK?‡Ï?‡Èr?Š&Ð?Œ³?‹ûì?ˆŽE?„v$?†¼l?ŽŸd?•f?˜0?™(T?˜@Å?” j?dƒ?$/?‘–?‘ƒ?’,?•ëê?˜˜«?—¦—?“j}?ˬ?ŒG?.{?•O4?˜:Ï?˜É(?•<–?y ?†=…?„ÿ?†¦Ó?ˆ9"?†7?ˆ;¨? ¿?•ùÞ?˜ @?˜Ä[?˜º?”à:?ŽË¬?‰¼?‹’?ós?dZ?‹ãD?ŒG?’‘?—Œ·?˜æÃ?˜q?–À?•£ò?–½Q?˜a?˜>x?˜*–?—kJ?–SJ?‹ò‚?ˆU?Ží?–ÅÜ?™~á?™;?˜éú?—Œè?”±«?“Ú?’×>?’Ìñ?“*˜?”\«?•…£?–ÕÝ?˜Z?˜Á?—w?”ׯ?‘™&?Œ²í?…"¥?~…?®?…Ö?ŽÉ?“¤B?”# ?‘„§?Žñ ?ŽjP?Ž¸Ø?'~?“%z?”¹Þ?“pD? Æ?Šá—?‡Òð?‰!?‹*?ˆ¯@?ƒwÐ?…N¦?ŒÉ¨?‘ê?u?‰Ñ ?…s?„^?†›É?‡*ñ?ˆS?{3R?‚v??ˆ×?‹` ?[+?ù|?”9?ŽSè?Œí ?ŽMÕ?Ž¢?Žß„?‘ÑÙ?’íÝ?(W?‹ˆ ?‹Ä›?‹-?†¿‹?€ø?€ÏŽ?‰U?‘c»?•+ü?•-?‘cÎ?Œp—?‰TØ?‡ûÇ?‰-Q?ÔÖ?‘i?‘ë ?’RD?“®Á?”ì×?• ¹?•³ð?”^R?‘?Œé1?ŒÙ?S,?ŒÁ`?½û?Ž8?Œ:Ù?‹²Ü?Œ”?ŒÆ?Ž*?‘8?Œrp?‹E?‰ø²?ˆíï?‰ó[?ŠÛÒ?‰•Ø?ˆ—?ŠR?Œö¨?íÖ?‹BE?„£‡?{5¢?qÎ"?l"š?nȃ?w˜ö?u‡?l„?rån?€…%?kû?{Ê8?y1¾?‚ky?ˆp ?ˆzà?…ø‰?ƒ/C?Œ¼?×8?†po?ŒXÇ?ÚÎ?Є?Ž›?Û4??Œ“;?‹zj?ˆ9?…á?…çª?ˆFN?‡ãï?‡;v?‰<²?Š7"?ˆ†®?‡HH?ˆpñ?Š§ÿ?‹yü?ŠXu?ˆr?…Ë?€È@?…û?…¥ ?ŠHÛ?‹ _?‰\Þ?„É?€®ˆ?€È?y ?nY?vX¹?„&,?‡þê?‡ˆ¨?†%§?ƒÇ»?€ù±?Óš?}Í?}K¹?‚Ñ¥?‡€þ?ˆ=Q?†ys?…¢?…8?ƒÓ2?„ÎÑ?‡‹ù?ˆ…è?‰t„?‹MÅ?Œ0—?Œ'Ì?‹õ\?ŠŸœ?†¢¬?èW?€þ?€lo?£?Ã^?€Y¶?yØç?xK ?DY?†÷ì?‰¡?Š -?‰Ž>?‡q°?ƒuÛ?i?Õ?‚Ž%?†‰«?‰:ä?‰'ž?‡_?…ÕÉ?„»?ƒÉØ?„(´?„ÇC?¢ê?}”ï?Þ?ƒA?ƒc ?¯¼?yj?r9£?vkñ?€ 1?v?}?~qô?‚ÄÚ?‚xh?€2õ?‚”?„ Î?„G -?„‹?„z/?ƒ€×?P[?|?‚B¶?…k{?‚~H?~…?–,?‚ÄÒ?íá?€}?€cv?€ö?{ié?v[Ñ?x±e?}d^?€*?€ð?A“?€Ÿ>?~âR?}¶-?|W“?zgœ?zrÍ?yHæ?wøÞ?z»·?}–£?!+?€`?€ ™?~çy?~N?~üé?}Â?y“_?uj?n.§?g ?l× ?slÇ?pË™?qÒ?x?yY?v -?u6ó?xÎ}?}DÀ?&?~xc?|çG?} «?|Ùx?{Ú?z‰Ò?vs?q`é?q:ˆ?rÑ?r@à?rq{?u¾@?xív?zsÍ?znp?zZn?zïÝ?zèý?z3ã?xqŠ?w0f?x—Í?x©å?uSZ?rŸ?nl?k·?lì±?q ??u¯F?w¨b?x.~?x0û?x‰u?yÞ?{¢?{Æ\?{œ¾?zØø?zi?yÃÈ?y±?yJ°?x~#?y ¶?z`—?z¾Š?z„$?z|Ô?z=Í?y?yoþ?yïd?zF?xÓÕ?w*?wÔ?xfù?uY?q5V?q¦?u¬0?xQç?y+ ?x“›?uÝý?qÑÃ?qÈ?v€£?yw«?yß ?ySm?xq ?w´?v”M?v­)?väè?x+?xqè?vðm?tÜA?t ¢?t>7?t4?tš?u†a?uæã?uk?sý7?sº§?u ]?vØQ?v™Ü?v!Ç?vý6?wïÙ?x†Y?w7À?tÍE?thP?vö?wPd?w¹?wÞ?w¨q?w R?uÀã?uµ?wŒõ?x}?x®Ò?xŠ?x5®?xqO?xá?y¦?xÎ\?x“ì?xy±?x‹8?xÙ?w­\?wÍ,?wÌI?wâ½?wö?xÉ?wÇ~?vêö?vf£?v-Ñ?vkÌ?v-T?r´6?m*Ç?lò?lÚ#?hä?iŒ?n݃?pý?qŸ?sRx?u+$?u8"?u@\?u¼L?v×?vÐ?uݦ?uŽŸ?ujz?uƒ?uOŸ?t×c?tpL?s- ?r&z?r]î?p^?eŠ™?V1¸?Yò§?gé?i—Ã?]nÿ?XVL?d¸õ?n"þ?p¹?rC?rµþ?qî&?q?l?qéº?r8Ø?qõ£?qÍ?oP¾?kðf?m8A?p)*?pà#?q ¼?q\?p¾Q?pv±?q²ç?q´?nï~?kV‡?j´à?n -s?oËt?o*Z?oŸ¨?pM¿?p=??oT¢?n3!?n¤Ë?oXM?nùt?lí°?ié?j‚?l“¼?laã?m1¼?np%?m¡¯?l¥©?m>‰?n0'?nPâ?n?…?n9¾?m´›?m+?m“O?nf?d¼«?aÅä?a&|?aF%?`Ú½?cuÇ?e9ý?eïB?f÷¸?g¾ê?h¿`?i„ë?iÈ°?iñ?i» ?h¾]?fIŽ?dIQ?e)Ò?er#?ex ?g£?gþu?g_L?ew?bÞI?b¦x?bí}?e_?gM?gåØ?g½ó?fRƒ?bNÅ?`]Ë?dÈ?fÒé?g>†?g$_?gP?g,6?ft ?cá -?aD=?b|Ù?d`ÿ?cxB?ap®?awÞ?b›Ì?ctÖ?cÉð?cbŒ?cD?cßz?dÃÉ?dØ?d©/?c‚\?^@Ä?VV?Wôä?` Ò?b†­?b¸§?cª?cÙ ?c ?bl??b42?baì?c“.?c@‘?]ü¯?W1°?Z ·?`Kæ?bI%?aÎ}?a M?a3É?aÕÐ?b Ù?_ÈÓ?Vo©?QÈ?XR?XNy?Rud?WƇ?^ã2?^©?Yî?Vö]?[;?_Œþ?_|Ä?[Ó™?Y@ ?Y°?[o ?XE}?NÑÔ?NØ×?W´°?[°t?YüY?Ræ?QT?XÁ?\ÈO?\9_?[>Ø?\‘?^<­?^©?_¸ ?`8³?_è…?_š?_}O?_3 ?[¥J?Wó?YÕ9?]ô°?_*5?_¹Î?^¹Þ?] Ì?]wÔ?^º?_<»?_%ô?^}6?^ƒ?_s?^XŒ?[ÉÚ?Yü¦?Z ?[Ò?ZÁf?Yåœ?[§è?\ëM?]C»¥?EÁv?N5?KI¹?DÚ˜?IPˆ?OñÙ?Q,‡?OÏû?Nb?L-2?M—?OD ?P?P¹Í?P­.?Oçö?NH¼?MÝ?Oq¯?P½(?Pí0?Oí?KY?E¿?<òk?7¢‡?9 -º?Bx?IX¼?M(?O:Ï?OÃW?OÇ¥?Ooß?OA£?Ov'?OB?MýB?IÛc?EÔ?G¥F?Kö?MAƒ?M¡Ø?M7“?Lr¼?Jä3?Jü§?KçØ?K‰?Jþ?Hß2?I?HçÁ?H\Ð?Hñ?Fã?Dƒ?@ÿÔ?> ?>£L?>ß?<‹î?8rê?4”?/K¾?)dq? ¯{?éß>ìp>È<£>î,?mt?"Ë€?*5?0Jv?5$ ?7½¦?9ÇB?<¡¨??ŽÉ?Ah?BŠ¡?C;?CcA?BÜ ?B K?CøO?Ek!?BÅ÷?@”š?CbÃ?F*–?FëT?H#Ú?I‚+?Hã?Eüª?DHú?E¤_?FÕz?GYÛ?GW?Fæo?Gyê?Ht†?HŠ0?H±S?Hô~?Hû?HŠþ?H=á?G­¶?GaE?G„ñ?G º?E’.?D§{?Fl?G® ?HT?H?G&?DÄU?DƒU?F6„?G6u?Hó?H8Ã?G}œ?Fu?EÂ?FS¹?F©?Fš ?Emï?Dµ?E¶b?G>?FÙ\?EÞ´?E}?DƵ?E…?D)k?@?>¥°?AÑÖ?DR&?DÓ°?Dd+?A½e?@|‘?DƒE?F¬€?F0»?Däë?C‚?Aæú?B±+?D7¶?Dåä?Dù?BÔb?Aƒí?@þ±?C 8?D²?CŽÇ?C>n?A"p?=]â?=Ëý??nØ?=­&?=Ny?@Ù?By«?C9f?CãÎ?CQ?B¶‚?AÞy?A (?@‘Y?@¸~?A.(??þ}?>,·?>‚‚?>xß?<Ö®?=Ãä?@¡H?AÁ^?AD?>™Ù?=-?>:…?>ßó?@M?A)‹?@è?>Fè?>ª+?@fê?@²ù?@y’??Ô???eý?@:?A[?@Å?>$ ?=g?=#|?=ÇV?=™?<ª§?=Ì?>"T?=Ú ?=åÝ?>/Æ?=®L?><Ï?>ÆÛ?>kÜ?>­”?>Ö?>_r?=òv?>›j?>dr?>ü??G?>éO?=¥?=Õ‹??¹?? ²?=/$?9îˆ?; w?=ú›?>pß?>_ ?>Ã?=qQ?<Ÿð?:&,?7׿?8õÈ?< Z?=¢)?=¸?=§«?=%'?;â)?7×?6 ã?8)?9zÙ?9Ï?:??&EQ?%Ð(?%Õ?&á`?'Ñ[?'Kc?%¤W?$¼¾?"‡? u¢?!È?#½?$Ÿ.?#m'?$Ãh?&^/?%*?$‘ø?%í…?%u?"3¡? ·/?%T?e?"”? ÄÞ? ?#b?#gÄ? At?,þ?~Ú?$¥?&ÕG?&Nä?%Œ…?'@c?(5í?'tà?&[¹?#úJ?!»ˆ?¶1?Ù?v²?!9˜?#rä?&:¾?%A­?$Îg?&Wâ?&wÒ?"£X?6…?!F…?!æC? ,Ù?±§? ÿ?!»?!2$?"¯D?#š„?#í¡?#Ê -?"òé?#;o?"ÖÁ?#³V?"ÎÓ?Ö?ßá?hô?·k?nÓ?æG? ƒÚ? ÌC? d~? Èh? C?­I?Ò?±F?z‹?ü]? ©?1?î·?Î ?kj? è€? ½?ðì?®ä?ÜÉ?ÉT?‡F?Õ?z[?âI? ò?L ?“Z?Ë´?EC?öÀ?Ž?p?)?úý?ÁS?,¡?Ì?³;?¨Ì?8U?´*?=E? •?ŠÄ?O'?Ò?X?? ?"é?½??»??®Ä?l?Ò@?’z?øY?‘Þ?„˜? ûf?‡?6?lÛ?'C? E? M? ¢»? ü÷?Ý=?L`?æv??%Ì?‹Ï?–å?z%?¹?=æ?ú? T? ƒÎ? G'? О?߉?àv?²ð? ~Ÿ? ±„?‡¦?²•?Wë?Êc?c?"E?î?“?6˜? §?uú?ƒ¶?á¥?þ-? ol? -b@? -}? Ü? åó?üE?!™?î?=y?C,? †y? °˜??Ó‚?˜?®¡?«H?ng?\? „?? ?Á?? \? tG?Ñó?æ÷?`¬? 7Ã? -? -M? 5?¾B?L? J? º ? -Ýá? -‚4? -Û ? y½? ‚H? øó? 3ã? Á=? ¦œ? úh?Î? }? ìÜ? \u? -ÈØ? Ü? Âw? -G&? :×? -[œ? -QC? "­? -ª? 'Z? CH? /Š? q? Ò¡? ¼c? Æí?  @? pb? Ó}? Þœ? Ú–? Öm? ‹z? Ž—? •o? ‰–? –U? •À? `ˆ? -ï»? -Å? -êÎ? ^? †? -Hâ? ‰Æ? -T\? -½ø? -ãÖ? -Ø? -*m?ÐÓ? s? -ƒ ? -€h? -T!? -.>? -€? -,l? þ­? ? f?!Ü?ÿ'?pš?Zû? €›? Ò?z?ï|?H?îu?ÚD?ÇI?IÎ?—„?±¨?´?²ò?¡†?âÝ?¢?U/?P5?'w?Úì?^â?i–?)ó?‘„?WÍ?‚¡?ªá?]é?å^?5?¨?µ?dP??þ?‹?rž?9Ó?IÅ?å?x?Ô??Æè? ¶?Ò+?Z ?o³?Î?D?î“?h‚?fÓ?]³?Êæ?EE?p?# ??ó?i?Fð?:½?}ú?#Ï?Œ?sÖ?M¯?¼ ?š?y?Íõ?dù>ÿAg?m6?J>þ¶V>õô^>ýµ?eÌ?j?1 -?7?3}?L?¾¯?ôy?³á?Qâ?ºç?†a?±´?ÒŸ? -Q?=?¨=?K³?Wû?Á¡?Y?Ól?úû?§/?О>þL>üj+?‹…?ª4?¡ß?Y?B5?·¥?½¨?¸ò?Éd?÷2?P>ÿÛ®>þâ·>ÿ¸P?¸h?£?çó?:ä?w@?ç?``?#‰?s>û³>ù1>ùn@>ý…Q>þi[>ñ‘Á>æÆ¿>ùF?c?ÁŒ?] -?8ƒ?†/>ÿ“>þ<>ú!>ó¨´>ïšK>õnå>úò0>þj{????ø?^¡?‰Ì?x??”&>ÿû>þ«§>ýs©>ùýS>çô¶>‹Ë>Ë";>âÿk>êz>òb>øô>ú.O>ùÞŒ>öšÔ>õ¦|>ú¡º>üÿ>ý‡@>ü[ >úw>øED>ùog>ùr>÷"Æ>ð¬Ù>ç(6>ÔZž>§eÈ>‘/Ø>·¾ >Ö@>å_x>í¬h>ñ”E>ò5X>ïµ?>ó|@>ø¬”>ù—“>ù¤ >ù÷Ð>ùvt>øÓ>ø>>ùY>ù=Ó>ùÅà>øü>õ8>óCs>ñ™î>ó~¯>ñ{>ìÖ_>廃>ÝnY>Õùý>ÙT\>âé<>êB>íã>ï'>ïø+>îÌ…>ò‹Ý>óÞ@>ôØå>õwå>ô=X>õG>öµá>õðë>ô”ÿ>ô{->óxü>ôë >õ £>ôÙ>ô _>ô >ñÇÊ>ꚦ>éh÷>ìÍÉ>ë«>åÂ+>Þ>Æ;Œ>™À¢>š@¡>º‘m>Í‹>ÖM/>ܺ™>á”+>ã’ð>æwD>áÞ>äÕ„>êÜÇ>ê’ì>äO(>äÚ">î>c>ê2„>êÔ>ñŽ¨>ñTc>ñ1$>ð0Å>ñ‚A>òL»>îÞv>ê×÷>ífd>ðá>í •>ízš>ïãþ>ï1>ìÊŽ>èZò>èí›>ëÀ*>éÞ >ãÀ=>äl>äÿ>ÞR€>Ü>ÙÛ|>Ïïè>ÁV®>¿w>Îw>Ù8Í>Þ >ãâ9>åvP>ä[n>ç’³>êëÆ>ì„‹>êVð>èÊS>í´V>ïwã>î«á>ï>ïA_>ï¾o>íä±>éë>çŒw>é>í“^>ï*¤>ï¥>íêÃ>ç›Ð>ÙJ£>ßL>êÂ>í•2>í®@>ìô­>ì\“>ëX€>æȃ>á%>èoO>ë7B>ëYW>ëKð>éò>çèÎ>åE”>æa}>æ]ˆ>ä<>áC>áä>á[>ÞÖ>ÛÙW>×É>и >ª>¹c>Æ y>Ïú>Ù™Î>Þ'«>Ý© >Þ a>àw:>á3ä>á\Ê>à™>ã%ñ>å¨>äªf>á³è>âÑ>ä»>ãáL>ã/˜>äyf>ä›Ö>䦰>ãÀó>à§k>Û×Í>á"à>ã´ >áe>ßoŽ>ßÕÃ>Ýï=>ÙA>Øvª>ß“©>â;b>âÖ¯>ãBM>ã&Z>â4 >ÞóŠ>ÛKd>Ûþ(>ÝÂÝ>àš[>âM>âEà>â<…>â >á¼ç>àüê>ݬÈ>ÛÿÃ>ß,>àz>Þ~%>Û2’>Ûì«>Ý»y>ßÕV>ÞfÓ>Þy>ÞùN>ÞeÏ>Þ6Q>ÝŠ—>Ûß>×_>؆>Û­y>ÚEI>Õ ¢>Íw>ÈHì>½öÓ>·cf>ÅØ>ÏÍ¥>Ñ^h>Ôò>ØL÷>Ùö`>Ú]i>Û?‡>Û„¼>Ùs¥>Úç£>Ü}³>Üã >ܯŠ>ÜØ<>ÜX^>ÚÌU>ÛTú>ÜÅV>Ü+Ó>Ø™K>Ê÷£>Í°ã>ÚÒä>Üb>ÛvÈ>Ûng>Û>ÙDÙ>мY>ѽ(>Ù²/>Û >>Ö¼ò>Ɉ‰>Ж©>Ö»5>Íð‡>Óÿz>Ö|>×`(>×îi>×(ë>×áJ>×!œ>ÎN*>Òº¹>×òt>ÔMw>Õõ>Ø ½>Øî.>Ø¥>اª>Ø-Z>Ø~¹>Ø°Õ>×ó5>Øœ>×Я>×öÁ>Ôû>ÑEÉ>ÕG¼>×Þk>×S>Öæ>×Oo>׉>Ö¬>Ô~ã>Õ">Öy½>Õ¬î>ÓTg>ÒÚ«>Ô‡x>ÔƒE>Ôw8>Ô2¹>ÕWF>Õi->ÕmU>Õo1>Õ:>Õ+>ÓÖ>ÒeP>Ó"?>ÒŒ >Òo«>Σ>Ê‹Ð>Æ¿}>ËÚø>ËW¢>É«™>ÍK>Êx>ÃjA>±SA>«ŒÁ>¾7>Ǭï>Ç\}>Å“j>ÍAÈ>ÍÅè>Êdµ>ˉ‚>Ͼ8>Ï”F>Ë14>Ç{×>ÈS¼>Ê1ö>Ì#">ËâË>ÍÂ>Ðrï>Ñ–5>ÑbÐ>Ñ™[>Ñ’Î>ÑË>Ñ>Ðÿ;>ЭÓ>Ð>ÍTô>͹>ΰø>Îh>ÏŠ_>Ð@>Ð5õ>Ïš½>Ï7W>ÎÅ>ÎSj>Ï-_>Ï‚ü>Ì}Ô>Ëèû>ή>Î8>ÎD{>Î͹>Ï:>ξY>ͺ >δ>ÎÝ„>ΛÍ>Í >̯á>Í»¦>Ë æ>Ë'E>ÌÅà>Ì^@>Ëb>ÉÇT>Ê1>Ì¡>ÍzÍ>Íò>˾{>É!>˺¡>ÌÖz>̬>ËæÆ>ËÐÊ>ʶ¹>ɧD>ÊÊÊ>Ér€>ÉÃß>ËÐ>ʆ=>ÇÜh>Æö‡>¾&>ç$>Ç™}>ÁÑ>¶Œ>Ã=>ÉË>ÇyD>Ç>@>Ê(|>Ê4>ǹ~>ÅÆ>ÆW3>ÅjV>¿Ñä>Å•®>ÆÜ1>Ãìñ>ÃÌR>ÇNC>Ç¿°>Å>Ŭü>DZ)>ÈO„>Ƈ>ÄÉ„>Æ™›>ÇͲ>Ç/>Æús>ÆìÃ>Çäí>ÇË¥>Çn>Çé>Ƙ>ÆÍù>ÇT>Æã[>ÅìÑ>Æ>Æ›‘>ÆDÐ>ľÐ>ÂîÐ>ÄÔ¨>Ågþ>Å >Å"@>Å_¢>ÄÅ>ÃÍŠ>Ä¿å>Ãtµ>‡©>Á9 >Á²x>À3Ú>¿:°>¾U\>»IK>²ã1>¢>>¥6>³æœ>º>p>½¬U>¾Á#>ÀHM>ÀÑ_>À«¦>Á”*>Áʈ>¾uw>¾Ä˜>¿H,>Àëg>ÂÀa>ÂÞ>ÂÄÇ> L>Áðì>«> ¨>À½$>Á«3>Áõ>¿Ò7>»¼>¼VÆ>¾¢ú>Àß…>Â&> -˜>ÁÕá>À‚½>¹Ó+>¼Lí>¾cr>»Ûà>À £>¿©F>¼–>½çÁ>½Ý>¾°´>Ày¾>ÀG>¾=Ö>¼ Ó>¼èÀ>¼ör>¼Ô”>´¿Ñ>º >¿S>¾çù>¿q>¾Næ>»ÃÊ>»½i>ºˆÈ>¼#H>»<Ñ>¼°>½æž>¼½>ºØ>ºœ†>»¼q>½)‡>½M!>½dí>¼s…>»¤/>¼Ì>½›Ð>½k]>½—º>½eE>½>½>¼®>¼Æ>»Š£>º­->¼n>ºß„>¸Ñ&>´>é>·ZÝ>¹«t>¹À5>·ø¶>ºÕ>»up>»ðB>»ˆð>ºò<>º«4>¶ô!>¸us>¹†V>¹u>ºl×>» q>»)Ö>ºß¨>º5>·k+>·&>µÈ¼>¸->¹³×>¹–Þ>·Þó>·G>·1Í>¹œ»>¹Á>¹…Þ>¸Ø>¸Ât>¹e>¹R>¸ÉÖ>·Iù>¸F^>·ìË>·ƒf>·ÆP>¶¡2>¶Q>··d>·c>·°ß>·é©>·àý>·…^>¶û>µ†>µ4’>µÿ¼>³öÃ>³v>¶«›>¶µù>¶{ñ>¶4d>¶`ò>¶é»>¶Ó˜>µÓ>µÞf>¶>³Q>¯ ->±EÆ>µT¼>µ2ß>±v¥>³BÒ>´Ó¼>´!6>´»>´Ò>±FÐ>±ÃD>´)^>µ"Ì>´ÊÖ>´$æ>´Pç>³w >®^Ä>±e>´CC>´$¥>³X±>²×>³I>³ŒF>²zY>±Éì>²Öð>²³>>²o­>²>²>«>²î+>²”Ñ>²\>²…—>²~>±¸¸>±âh>±Ìv>±¶ï>±;>±b†>±³\>°?>°F>®Ì#>°&>°œq>±¸>±/>°÷G>°ÊW>°¾>°>° ¬>¯±Ä>¯³ç>­Øu>­ø>®{>¬Õ>¬X•>¨Ûæ>ª„Ð>ªx>§¤è>¡Ô>’|å>÷Y>Ÿù->¦_·>§ê\>ª(ë>«ŽÇ>¬>«î_>«†\>­;ê>­Â>­µ&>­‚>­Cñ>¬¨¦>¬:>­vK>­‘è>­ËY>­â>­Úe>­ÐG>­”;>«+>ª+>¬ª³>¬×½>«íð>¬KJ>­œ>¬µš>©le>§‹€>¬ O>¬”ä>¬|z>¬t7>¬‚>¬)>«êe>©ûo>§Œ">ªË ->«¦i>« >©ð,>ª`A>«{˜>©}>¦î­>©½>ª½é>ªÊ:>ª2¿>ªÐ>ªÆ#>ª‰>¤×>¤”#>¨Bý>©ìx>¨d­>¨r^>©’Ü>©[¾>© >¨à`>©*—>¨U9>©jG>¨ÈØ>¤­‹>¥ŠP>¨ô>© >>¨Îh>¨ªÌ>¨µÝ>¨Ïm>¨—f>§‡ˆ>§cÿ>¨<˜>¥øû>¦bw>¨(½>¨/'>¨Ž>§îÎ>§ÙÑ>§¯ >§P¿>§6]>§y˜>§_¥>§ Ô>¦ß=>§0>§+N>§Ž>¦ÑÈ>¤èà>¡kµ>¥­é>¦©>¦}`>¥åí>¤Ì«>¥¾>¥× >¥¨>¥1t>£³/>¥I->¥°‚>¥f÷>¥ZX>£óI>ž3>žÁ>¢í>¤ƒ>¥å>£öˆ>¡»c>Ÿð‡>¢æÙ>£8É>¤(>£nm>£Ö¹>¤$‚>£üš>£„N>£N>£L>Ÿ‰>žáÌ>£A>¡Ô ->¡S>£1Z>£>Â>¢ïE>¢€T>¢¦h>¡˜v>Ÿ\ñ>¡åM>¢yÿ>¡éK> ÎS>¡?q>¢BQ>¢=ª>¡àÂ>¡Úz>¡Ï>Ÿòˆ>žT4>Ÿgò>¡W>¡e> Öú>¡Ë>¡> åÛ>¡ w>ŸÁ>žÓ‰>ŸÑÖ>š´Þ>”Ø×>—CÈ>›¨,>ŸéÌ> 7c>˜R>œ„í>Ÿ‹u>ŸùÑ> s>ŸËã>Ÿ™ý>žv]>žœo>Ÿ“>Ÿ39>ž¼>žªÉ>žf>f>ž±„>ž¤„>m>PW>çè>œ?g>œˆ3>˜>Æ©>Ê‚>œ1>š>>›Úê>3>bú>œ&>1î>ž„>v¥>IÚ>YŸ>œòB>œLr>œà×>$>œØ­>œÓâ>œ§Â>›áþ>›éu>›ç>š»X>—2>’Kp>˜ ù>œc>œ“>›Îx>›%>›},>—+ç>’`Î>˜Ê€>› ->>š¶>šÙ >š¤™>šöÖ>›N>šÚ>—->–g²>™dM>˜VE>šTÇ>šŽö>š|M>š^…>š ->™Òq>™îý>™èÅ>™´a>˜£?>’:à>–‘,>™R >˜ü >™V>˜Ôt>˜ïÇ>˜ë=>–ìC>tj>8[>“¤,>‹ˆ™>‹¡>“{ð>˜D>—Ù<>—½\>–*T>©¥>–0/>—ìP>—Žý>•Ú>–é¾>—ˆ·>•Ôë>g>Òõ>”æ¢>—a>—<î>–è/>•µk>”c€>“˜7>.>>’XÓ>‘÷Q>•Þæ>–`x>–P>•ÎÀ>“º„>”9 >•Ç¼>•áõ>•Ø*>•{>“/h>Q>ƒ>“N>•^Î>”Ë£>“–†>”8>” >”I>”œâ>;¶>Š‚@>’h>“µ&>æ·>ŒÛ¾>‘Ù™>Š^y>ŒUß>’¤>’3D>’¦>“ò>’Ÿá>.Ë>’X>“c->“sÕ>“qÈ>“YÏ>“$Ü>‘W> P>e‰>…Œá>‹ãI>‘Ȭ>’n>’Ø>ÁG>‹‚€>x‹>‘?>(ð>®¹>19>‘E>‘V2>¿>òÔ>Z{>}K>ˆO!>Šøñ>Ž–·>Žul>á]>ŒšÛ>‹Np>‰a>„V>nÉ>gdß>‚[Û>ˆ$4>Š‡ë>‹l>ˆô>>‰oÇ>‰}E>Œ•h>Žæ>ŠB>Šº@>ŽdÈ>Ž®™>ŽŠ>Œ¹>†v~>ˆAr>Š—À>s >Žu¦>ŽŠS>Žt§>ŽPˆ>Žm/>Žï>ãv>Ž!Ù>Ž‹>‹Îi>ŠeL>‡il>ŠÊn>M,>ÄÇ>rï>8c>“>Ly>Œ·A>Œað>Œøƒ>‹Âá>Œ{â>%ý>Œhð>‹Üä>‹öæ>ŒÈí>ŒÖë>Œ¬È>Œo>ŒGí>Œc>>Œ‹Â>Œ7O>‹«,>‹;>‹ú>‹ª}>‹Ž¡>‹æž>‹o„>‹”>‹„Ó>‹–>>‹‹s>‹j[>‹DV>‹Ø>ŠÑÄ>‡è>‰º|>ŠÎ>‰µÆ>‡'ý>‡Ñá>ˆšž>Š4•>Š’«>Š>)>ˆ’U>‰C—>‰…n>Š'Ö>‰“Ã>ˆ‚ø>‰8Ç>Š ø>Š>‰Ô“>‰¤7>‰€>‰U±>ˆ§´>ˆÏ}>‡k9>ƒ6æ>ƒÜv>ˆ´È>ˆÔ'>†Hd>‡ˆ>…¦ ->‡íM>ˆ¶$>ˆº>ˆ#>‡P­>ˆAQ>ˆJé>ˆ:ñ>ˆ>‡Ð>‡à¹>ˆ':>‡÷H>‡éL>‡Òj>‡†>†£>‡1.>ƒ;û>~(¼>‚•X>†ÒD>†žÒ>‡(ô>‡8‰>‡_>‡D>†×>†Vå>†b>†À->…{Ð>õO>!>„ºÈ>…F>ƒNh>ƒÞ>„é‚>…1•>ƒN™>„*y>…D–>…6Ñ>…A€>…Ì>…5U>…`6>¶>×l>ƒ¼Ú>ƒwµ>ƒ‡>„¾Ù>„B{>„g¦>„šj>„qþ>ƒo>‚{í>ƒÿÿ>„vÈ>„^w>„>ƒÊ{>ï>Âë>‚­˜>}”>€Nä>Ô>vy>Ïì>ƒ+>‚ Þ>§>{¤*>w%6>€}?>ÕÛ>Ñ~>€ï1>‚š!>z¯>p>åº>‚-û>‚w>‚ií>®ý>|Õ > ×>€oi>}t·>êp> >‚>Á>ÇD>Ê >«‘>´…>,Â>€1•>I˜> -¤>€¾ø>ß>Çü> #>š>€¤O>€¢7>€®â>~¾Õ>ÒÌ>€˜’>€^>€‚®>€5“>}/>}DT>}ç>’n>‘>·F>͘>Œ>}ÅQ>~9Í>i»>Sµ>~÷>}Å->zí>}˜z>~i»>~X>}ÉÜ>~°>}Å}>}”ú>}sa>}`)>}">{sÚ>{ÒÖ>x?F>oß>vÊ>|7>>y—î>z æ>vh$>o+¢>oL%>y\à>yø>u)Ý>yË©>zþ@>v>u´>zj>y[ >qK>t Z>y‚>xnA>vH>v‹>tá>s¡$>j>`>vŠ7>yê>u0î>o|Î>tQu>uÌZ>xd³>wœ>w¶H>w|>mP >pôM>v|P>vÖŒ>t&S>v0>w*ý>vï@>v‹ó>v7§>vš>v"g>uô®>u¡„>uÁ4>uÔ>uÎŒ>u1ë>uK>uP>u9=>r!S>i²4>m - >]RF>l ¸>t%È>tn>t,X>sQ6>pêË>n›>p b>nf>oes>iƒx>rÝ>sý>rÝú>rŸc>r*Ò>n’H>oŸà>r9Ç>qfQ>là>oiõ>q]>nœi>n¸ó>owÕ>^é>e6>pY->p˜>g=>jCÆ>oôÐ>nïÁ>k!b>oBØ>o®>o9‹>mV>il÷>mT¼>oN˜>oM>môž>mÍ…>hù+>a~ƒ>^0&>k•ù>hºl>cÅÓ>cg>k-0>mz~>mfà>mE9>m)>m'b>lül>lû%>lƱ>lU>l:5>l0>lRÖ>l„>kƲ>kÊP>k›Ø>kœª>gÌj>Ñ‘ >ß^>짢>øÕ?à|?ä`?©>ø›s>ìƒ>æ?L>á„Ú>Ö¼@>ÅZÇ>µYz>®ç·>´}ò>Ãá:>×J«>ær~>ëÃ>äŽ>×d›>ɲ¦>¾‹>µ3õ>­“Î>«ßº>´Ü1>Ç7³>ÚŸ|>åŠS>ä€>Ù¹H>Ϊ>È!½>ÉTR>Ìý>ÌÜ>ËêÙ>Îe,>Ò¦_>Ó€Ì>Ñð»>Ô^B>ÜN”>ãY’>ã¨@>ß#>Ü‚£>áBy>ìýk>ùËÎ>þøß>ö˜>âÒ¥>Ír˜>ÀCœ>½-£>¿&¦>ÁTØ>Á¦Ú>¾Èœ>¹K'>¶P>º!>Âò\>ÈÄö>ǾÝ>Ãúå>“ë>ÁCí>¹Zs>ªbY>œÁÐ>™Ü&>¤½E>¹ô>ͧ¡>Ú>Ü¿¿>ÜK>à ?>êZñ>õØ,>ûÎÅ>ù¼">óZ>î -Ã>ï8Ä>õx)>û†J>ü¸J>ù<]>õ#…>ò^f>í™Õ>â¿Ž>Òfn>ÁrÑ>µ>Ü>°Ìú>³™¿>ºgž>¢J>ÌG>Öc2>ÜW>Û->×_•>Øß®>ßÑ>äÓi>â×R>ÛÆÖ>Ó™>̉ª>Èl+>ÈuÞ>ËNŠ>ΆÚ>Ò>×e >Þhú>åFŒ>ì>>ôA>úX>üq­>ûô >üÑ>ûÈ >÷%ƒ>í*6>á.>×û>ÐÇ%>ÏdÃ>Ò¦]>Ú*ò>æI>õ-)?À??ÔÃ?s_?Öd?„Ó?¤J>ûíã>ôz>ì ->ä›>ÛÑÍ>Гº> >´>¬¯¹>©Þÿ>¨Q>¨‹>¯¢>½ßþ>Î!å>Ø‘Â>Ü°š>Þ|Z>ß2†>ÜŠ™>×°º>Ø]O>äæ\>ú˜?ÛE? ÷»? —ž?ÀO?É|?Š©?Ls?Æí?=Ò>ïÀO>Ó><>¹< >¨Ø¿>¢nl>¢IÙ>¥á:>­Þ>¸7>ÅøÁ>ÓÆ>ÛÜ›>ߥ…>⧃>é°®>óÂî>ù ²>ñü°>Þq>ÆÛ >µf>®±œ>³E >½RŸ>Ç4¸>н\>ÞxÂ>ñ÷‘?*e?Åv?Ô·>úÏm>ó=/>ðõ >ô,•>þ0?`î? ÷?5›?~ë? ;ï?=->ù?R>æ—•>×®!>ÎÁÆ>ɹ¸>ÄŽ,>¾¸/>¾AD>É&>Ú§#>æ–ó>è8>è@š>ïU$>úÒ"?_üd¯>òÿ$>ì>ë¬>ì>à>çãm>Üú>Îl®>¾ô4>± >©ÆË>­±">¼EŠ>Íôh>Ùš>×”â>ÊŸ>¶úÇ>§±œ>¡Ç'>¤->«»è>µ O>»W>½à¦>Ât >ÌR8>×~l>áL>ëá>úÍÈ?V? LN?€­? $m??Î>òœ>èŽâ>è¬I>î¾X>óº>ó„U>îùa>ê< >êó >õ -? -ž? Hd?ƒö?þ»?œŸ?h ?Ç”?"#?DÝ?àS?r‘?&{?H¾? S!? ÷$?ÙÈ?¦r?äé? )?#? Ùs? =­?Ø­? Ú&?.Ý?ã™? EX?ÔÛ?Al>øÇå>õY>ö+T>ù-'>þ=?“?û„?7G?¼? -? -ž?¤k?k>ü‰'>ûzu?l¾? 6º?!n?Ö??˜B?Å/?!Ÿä?#çE?#=9?ª}?žÍ?Ê ?5‚?!ÿW?$ºó?&|È?$z!?$b?Ë^?YY?hE?õÌ? -úì?lJ?Ê¿?ÞG? D`?˜O?^Á?¥ð?׫?´¦? ?½‘?¨? +? /ž?¹?X3?Í0?ÙS?;ÿ?žŠ? dÃ>ÿ‘Š>ñÐÜ>óóÂ?Íï? {s?¹.?²0?«? -„?Å!?$Á? ͵?0¸?«3?jæ?Lf?¿?)‡>÷h>ôëØ>ÿu8?G[? jÅ?|î?¾»??ñm]>ÔÀÍ>ËZÇ>Ü¡‚>ûÝ×? -ås?CH?v@?k?Y3?¦s?—¸?(?w?Ÿ4>êò\>ÑÌU>ÇÞö>Õóz>ö+? Š?µ?S?¯Ç?)¥?0÷>úéÕ>ò®[>òüõ>õR>ï -¡>á¥þ>Úÿ:>æQV?Lï?u?%¤?œÙ?-??¼ð>ôÛ>íÿ>øÊÍ?G?íl?Kî?þø?2Þ?·?”#?·?qG?¦`?¥?‘Œ?½?ò ?9>þY…?Ö2? Zþ?pZ?‰à?!®t?"~î?"y?"`®?×¢?ʸ?"b?K? Á®? ©Æ? FÜ? æì? -sý? -D~? b7? ¼ª?s?úÒ?â*?`?ë„? œ? -$Y? íb?Ä?ûÙ?Ä–?"Øø?%Í?%Oä?!¢‡?tÕ?ù?”?Ù?“?D?¾ù?ß?$ `?+…í?/¯9?.MÝ?'ƒŒ?n’?6?ò?ˆC?#°š?$2?"-ö?Fn?ô?ð??Ûj>ù>ëÿÒ>ìÁ>õ Ÿ?ÕX? -‰?=ó? -ù?ëÔ?'-Y?+5Ö?+Ïç?(è?!£?§2?Ž|?^?"™5?)úS?*å½?%à4?\—?Å&?91? ?ÿz?ܲ? -»;?ï?óã?%£? &? ?·?Ô?b?¿è?' ?/S’?1Åê?,­í?#PX??óó?®î?å?®D?Q—?í? -ö? Õ?H«?Uc?M?(7ª?,‰ü?.¸f?1G~?3F¾?1õ ?+ÕF?#£û?‡Þ?Õ¾?" 7?&,³?&rA?#]5?ù9?E??üÔ?J]?E2?:?&O\?-.??1DH?1ÏI?.Ò ?)7Ô?#–l? ›Æ?êª?\S?bZ?¼ö?a9?Ö?y?"+…?, ?/ð4?.{ž?+0“?(®3?(–¿?+$?-Ò$?.bi?-Òã?.ÊE?2dJ?8 >?=š"??UÍ?<âŸ?9ü"?:ì?<Ÿ¾?> _?>°º?>:“?>%w?=yå?<’±?=Œ2?@„×?Bµ®?AÁ7?>â?9a=?6ÿ?6;?9˜§?=jþ??ÌY?@¬$?@s?>QF?gÅ?<‡W?6@?-ªã?(*$?)Y?1h:?;ðd?CöŸ?G7?I Â?KU†?M{H?M¿?Kèè?G#†?@+û?=½“?F:?V‘j?bkù?c;I?Z#4?Jud?8U¸?)Êj?"ê?$1Ú?,P‰?6î«?=Ì?=œ€?7À—?0l”?.9?7v3?IÕ?Yƒ(?bú?k3’?s¹?u#¨?iM¨?RUe?7©?"?‚Ë?$àÒ?;(‘?RÈ(?bO!?c5?\O ?ZÃ×?a -)?bØÄ?Y‡†?HbC?3Ï?68? ŧ? -ö×?¨?"g?5Aƒ?JRC?\W?gÒ¼?k}9?gTþ?^î?W´ì?RJ5?J!£?>j?0ʃ?Zã? Š)?/? «?!Šs?þ"6?lÀ?Œp?^Š?(Ï?2°%??јÜ>§¨‘>‰œ>t2>~7Ì>™Öz>Ÿ³>úä¼? k?6H?L¿˜?Yj[?^ù ?a>ý?bçS?iãå?xy ?‚ w?>æ?z;6?x{?}ní?r? ?^‹?„¿à?‡UÃ?ƒü÷?{ßÓ?ylp?—?„î?‚j?rfa?\tš?JÛ?;o­?(l»?@Þ>äÃö>°¨¥>°>‰Ý#> ;~>Ìy÷?ém?Áë?/J’?C¾,?V!¹?d6G?qH;?€–#?ˆœ¥?:Ý?Œ?Ò?ˆ[ˆ?†Æí?ˆºv?‹Ó²?ê‹?4?‘¼:?”Ǥ?•¹«?•åë?˜t|?´? ¹ë? p4?›Ì,?”Çp?Ž9?‹#?Š’?™ Ø? — -?¢±´?¢'Ô? Õä?››R?’Va?CZ?’—?›„?¡ù?¤ n?¤†?¤K?£Œ?¢¬?¢iÍ?£ðµ?¤Ý?£Ú¶?¤PV?©q;?¯/µ?¯çó?¬ æ?¦óÀ?¡ÂÏ?ž2M? È¦?©>µ?¯›?®+¡?¦;Æ?›y ?’ í?D?У?•²Ý?œD?£*?ª€ç?±o?³ö?±‡”?¬ø?¨ÀN?ª¸?ª‘¸?£Ù-?˜«ç?“ÿ?›ÿ$?¨F?­Ýã?­¶K?¬N!?©N?£†É?|é?™5 ?˜uD?šq?› è?›åb?ŸCŒ?¥Ê9?©¸I?¦BÅ?G½?–ÙT?˜¾­?ž 1?ŸR?ÿ¯?¡«.?§°)?§Ëê?¡xÈ?æ?ŸLe?¢”Š? 2×?–Ž3?‰&K?€Qv?‚Õç?Ž%¸?š•?¢U -?¢« ?y¤?—àá?•nî?–ù=?›°Ð?¡Ï?£ìƒ?£)O? ?P?œö ?šÞó?™áÇ?—ü?‘¼?Š~’?„¢I?|R?j9û?O}ž?1¦±?$:è?3Šs?T2Y?sŸë?„¢p?ŠŽ¥?ê?¶F?ö?±•?“xƒ?˜ K?œœ@? Ò£?¥#k?¨D?¦¯?ŸÉ0?šwÍ?šèP?œÊ?œ d?›4ð?>Ÿ? !? )p?œ½€?˜?¦?–§ù?™+¼?›y?™‘?•õß?–"n?›^?£+n?© •?«¼›?¯?³Ü‰?¶&{?³b)?«)=? ïA?œ½Ç?¡à‰?©M?¬_—?«xM?¨¯e?¦N?¥²Ë?¦Ï=?¦sÞ?£‚?žy?œ!“?œ ?Ä&?¡žÁ?¥1€?¥öû?¤ûŒ?¦Ð[?«¨ -?¯*?±m1?°ºü?­z?ª`Y?«šo?«Kñ?£M“?•ÑË?‹"°?‰L¯?u?—&?™Ù?—?•?™<»? …?¢x?Í?œ* ?šÜæ?œÓ ?Ÿuu?Ÿºµ?ŸM"? >“?¡<ë? ú®? »Ž? ñ'? žM? ‡w? ù\? aI?žrL?œ$‘?š7à?™%6?™¯¨?œ`Î?Ÿrl? â?œHö?•Éæ?‘<?OÂ?‘qF?”E¹?˜‹-?œOÐ?ÄŠ?œ€?›/’?œÂÀ?Ÿ¼¥?¡Y?¡Hs?¡‚? v¡?ž:¸?êœ?žh^?œîh?›Ìí?›ƒ?™¨‡?˜rã?˜ÈÉ?™o?šI£?œ83?ž¬œ?¡ÄÔ?£–ã?¢ðM? Û?œ=?™å?š[ª?œ—?È&?›Ý(?˜¯‚?˜4Ø?™ã°?›1?›R?›1µ?›I…?œLŽ?ž_? lû?¡B™?¡Ó? ýž?¡ˆ? Ñ?œÒ°?–’-?‘u3?“aî?™÷?œÁ?›aN?™Ç!?™0_?˜âÇ?˜Í*?™A•?™#ˆ?˜?—É?–³S?”€?“c–?”%ö?”ÃÈ?•B[?– '?•V?‘N?Œ˜i?‹àù?Ž$'?Žœ?‹›2?… Ž?xïê?nÀ?j‚?^g?@O`?q(??(Ô?JÖ?aÞŽ?s1 -?€¸Å?…@ˆ?…s?KÉ?|U?Kq?†¨¹?‰•?‰êõ?Š»N?Ž_ñ?“rþ?•"ò?’©?ö?ŒA?‹5?Œ`?óŠ?Žx'?Œ:t?‰t›?Œ&[?“½”?š Ò?Ö?«?œvÂ?™&—?•™O?•«Ñ?–®e?•µ?–¡8?š\?œaö?šfR?•?ŽÚ©?{°?’3é?—š?›q?›úÉ?˜¦?*f?‰dF?‡pG?‰¢¬?Š²H?ˆGá?ŠL‚?’—(?˜®ˆ?šÃ?›©?›Å?˜ ?‘þ.?f6?’:?’Å?n?Œ#,?OÈ?”3¬?™Ï0?›å1?›á-?™Ý?˜i ?™«Ã?›‹?›‰?š¹è?™ãH?™R?™J?—dƒ?oŠ?ŒrR?’ý -?šú??ü?œºÖ?œGw?š«a?—ÃÅ?–³?•uE?•"n?•X?–Ø«?˜Ï«?š«_?œ!Ÿ?œO?šC;?—Û?“ÊF??‡• ?Ð?‚¿?ˆ2ð?tÇ?–‡…?—-ÿ?”u ?‘¹Ã?‘+?‘]h?’¶×?•Ï?—^ì?•Öâ?‘¥??ŠÕ¤?Œ:»?ŽE#?‹GC?†q?ˆ˜`?Aã?”7í?‘™¶?‹°a?†}»?…ó?‡Ÿ¨?ˆ Ô?‚j_?~Aý?„˜ô?Š¹’?ŒÓ'?Œà?ŒÑ¸?‡ñß?z¦k?g -G?eUþ?sïï?yº¬?sÚ“?}Ï•?Ša??Œ?‘jþ?‘׬?‘¹Æ?ÑË?ˆÿ­?zõy?ráT?€qh?†W†?…õÅ?„øS?…s?‚P?€uA?ƒ’?‚³?š?Ÿu?„¯Ð?ˆ]þ?‰Ñ ?‰Pë?‡W÷?‚çô?û®?u`?‚â?…c?ˆUI?‹P¸?mL?Šðá?…"ô?‚ÈX?†. ?‹¡?ŽÑÛ?~ ?Ž¯r?‹Yá?ƒk?qþù?mò?3Y?‡'¹?‰ †?…Žä?€ç´?€&ƒ?ƒN¯?‡#º?‰’o?Šrb?Š\T?‰c?‰cÝ?‹ß?<å?‹R?‰ÿY?ˆ¤Ô?‡‡î?ˆÆ2?‰Üý?ˆz8?‡‰E?‰¿¶?Œ¿†?Žï?Š @?ƒëÓ?y’Š?oŸ”?j>?m| ?w:2?v…¢?n÷3?u½‹?€¤ù?€uJ?yì¤?xÝA?‚Ó³?ˆz´?‡ã3?…*"?‚õ?€¥û? Š?†Þ¤?Œei?×Ñ?ê4?ŽU¬?Ž -Q?§?Œ;I?ŠZÆ?…•*?8N?‚‘É?†Š?‡Ah?‡F?‰¹ÿ?ŠÈø?ˆÁ -?‡D'?ˆ Ä?Šßº?‹½?ŠçØ?ˆð|?†5ö?¢\?€ÉD?…ó€?‰Å?ŠBj?ˆå£?…??ÃÍ? ü?za°?nÇ6?vub?„Aã?‡§"?†àG?†D}?„Ó½?‚G—??ªà?~`Ý?‚§è?†ós?‡µ>?…“â?„^ô?ƒà?‚­³?„†?‡Ûê?ˆ Ä?‰YŒ?‹XP?ŒY!?ŒÕ?Œ–í?‹0 ?‡Sª?‚ó½?€ý÷?€ø7?‚ x?‚x©? P?{Aø?z<¡?ìj?‡P?‰y‡?‰æ¬?ˆòª?†x?‚¹[? -õ?›Á?ƒ5?‡PA?‰ut?‰+Ü?‡Jx?„ú ?ƒ‰?‚Û£?ƒÊ’?„©?£]?}º?€Èè?‚¾³?ƒGŒ?‚Y?z;?rã^?v î?~- ?”e?{db?}¤˜?‚i™?‚W#?€­E?‚˜Q?„Çö?ƒ÷¬?‚ïè?‚¼Z?‚?c?~Ú?|´ñ?‚ŠT?…„’?‚s™?~¢u?¶­?‚Ám?€ÿ?~ @?ñë?…Ú?ˆFŽ?ˆÕ,?ˆ©‡?ˆ^«?†_?mš?y 4?z+?ƒ{M?‡ð®?ˆïÛ?‡øu?„“ë?~já?} ?ƒõ°?‡¼ ?‡ÔÝ?„ÖÝ?€"?~ˆ·?‚F7?ƒ×)?… ?†œä?†ú,?†!M?ƒ÷?|z¹?}Tß?{°Ø?v¾!?sA˜?lþÆ?e|¯?kCt?rŒ>?p¡=?qóö?w‰…?wIJ?sé?sê|?xÐ?|÷?6?}]R?nÙ.?pf?gÃK?h-ò?i½h?hØC?gô-?iy.?jÝE?k^f?kºÿ?jȱ?hü3?h{N?i™?k?kd¤?jFã?hú?e Þ?dt?fÛî?i1ú?ix!?fY?a2?a+…?cÕÚ?eµ ?f=¨?dƒá?eUb?h~®?i^ç?g>(?eƒm?fÚY?gºi?f0…?e?f×?dÞÐ?`éÚ?`a?dmö?e_T?b¹¢?aîf?bœÒ?c&¼?b¯‹?_Y?]ç0?_#?_zŒ?a¾??bôÃ?d1Ì?eù?fàì?g›?gâ¡?gÔn?g™9?g‹â?fü˜?eS?c\??diµ?d™3?cúë?eZr?f‚Ã?f‚ž?dwX?bg?aK?a)?c|ß?eþ)?fR ?fs?eØ?aF]?^ÿ]?bÁ/?eì??fU¥?fNc?fŒ7?fqj?e;¢?aû†?^u¸?_ìV?bÄ@?bX?_ðù?_³?`ºµ?a‡9?aUü?a0?ak´?b^p?c4Ç?cFµ?ckª?bãP?]º-?TD“?TÓy?^)¶?b‹?bs?b”ú?bœl?aR»?` }?`§`?`|?aÊ%?b/Ç?^\?Wm¥?XýO?^œ±?`OÙ?_œÍ?^®z?^Ž?_}?`>i?^A÷?T€|?Nj»?U”)?Xc¼?Rê?VÞ×?]­?]ÓH?Y.¢?VV,?Y«:?]ì”?^Q,?Z{Q?WÌC?Xh­?Yõ'?W–Ü?N” ?M,?T˜`?XÖœ?XÀf?S±ñ?Qº?W‡ü?[hc?Z¦]?YY?Z?\ø?\æ?^#u?_¾?^¨€?]…5?\Êu?\õ;?YàÑ?T™=?Wuž?\Nþ?^S?_ -?]Óò?[ZÚ?[ù?]jp?]Ý­?^(?^|n?^jq?^G‰?\Ë2?Y}?VŠ•?W€?YVd?WËÂ?VÓ?Ybb?[«2?[æg?[g®?Z¡>?Xx/?R·‹?P=?SØù?X«Ô?Y„?SXá?OC?Q×Ù?V7š?U×?Ptã?JI?I†?Q ½?Vòp?T@¸?N¥˜?MþÓ?Ptk?R_e?Sòb?Uê¡?Wr7?W¿Ô?Uê$?UÏ•?WͶ?W…8?Vÿ?V‘?Wµ]?U°M?N[™?H@Ê?Gâ‹?Jª?OÁÂ?SËe?UÎ’?V;÷?U‘p?S³‚?Q'·?Pã ?R ?RáW?R#?Oœ ?N0)?JëÞ?Ix8?O@½?Rä?T£ê?U&µ?S~?Ré“?Sí»?Q?Lÿˆ?KJ?IËl?M`?PÆz?Q>Í?S0]?U„Ã?Uèð?U~µ?TÊ¥?Sî$?Tu?Q»V?L¢F?L?Oi?RØo?S¾»?R ^?Pq?M?KYF?P¥ï?Tc3?T»&?TŽ ?Sè?Sû?S®?Qbê?O°ˆ?MÀz?N¨†?QŒf?SV°?S;?Oôí?Lp?N½v?S­u?Uf·?U`Ë?TØ?SÐù?R¬s?R«?Q÷?R#¡?T?Už?T¹-?Rå¬?N\?MS”?R!Û?S߯?OºÁ?K`é?Ou¥?Sû?Sã®?PA»?L>¯?Mº?Nˆ?MÅ4?P¬z?O‡š?L”F?L€?Kë6?J@W?MÈñ?Rtl?S¯Ö?S ?R™¸?Nž?IÑ ?Iž”?Mýä?Q¦#?OP9?HyÌ?IŽÃ?Oé?Q–;?Q¾L?QB"?O@º?Jq#?I™V?N ?N#§?G o??´#?Erù?M]ð?KrÀ?D±?Fe?Ló?N`®?L§N?Jrð?HL?H‚‹?I0a?IZ?K_à?L+D?KûI?In0?HH ?KZ*?M†‹?Më¿?LP?G¡µ?A¤ë?:ä?4ŠN?6s??ZP?FZ?J9ð?L¡ê?M‰‚?M¬~?MM?MG?MH?LtC?Iè?Doö??›ï?Aéy?F¸?JFÓ?J”·?JT=?J?#?Hu?Gþú?I??̶?>]Ï?:Ë‚?7kr?3Cº?.ZÍ?&¼Í?µ«>ò7 ->ÃÌ>çùò?„&?' ¹?-Hy?1ùŒ?6'F?8 ?9·}?=t‚?@_ˆ?A_—?AÅ5?BPB?Bª²?B ?AZú?Cj?Eß?A‡Ê?=]?@¢»?DJ.?D ?E-~?Fè§?FMvÁ?ÄÑ?= K??ó?Bi?ArN?@›?>„?:½ð?;BC?=aï?<-Y?=/†??Á?@Lm?AG?B3?A——?@«?@&”??‘¡?>ƒ—?>žê??Ò[?>ÚÌ?="?=„¾?=€X?;$Õ?:ã?=¶6??G±??z›?=E?; j?=PG?>%ç?>ÔÔ??…ù?>ží?<??;´†?=‰?=m®?=<Ä?=Q?=<+?=î5?>‹P?=¹?;Ç\?:N½?:Y?:Ü?:Ó,?:¡½?;Kþ?;‚ü?:Ôm?; ñ?;›?:Þà?;Ñ=?<Ô?;† ?;£ß?;ì ?;‰9?:Þ·?;^?;ú?;zi?<5Ø?;¼?:\ó?:ž¯?;Ýï?;ÛÍ?9ò“?6€?7—.?:‘?:ÿ?:èÙ?:«?:•?9,?6n?4.|?5Yš?8„?9öp?9üí?9à?9Y¿?8?4U?2QŒ?4Xé?5ž?5)×?68}?8a§?9)•?9??8áÔ?8§`?8r?8£?8ó?8-?8é?7›!?5G÷?4ù€?6Q`?5Õ?6‘?7ÄÆ?8ƒb?8yb?8&ä?7³ ?7c˜?7;Ë?7J?7h?7@¦?6‰?5°?6¸·?6s$?4öø?3˜J?2w?2¯³?3ù®?4zk?4a-?4“E?3$.?3{?5"?5aÌ?4Å¡?3Äþ?3¼Î?4ÿú?55?5+?5k÷?4ò¦?3$Ý?1[Û?2’ñ?3ðg?3•/?2³ý?3$ú?3:h?3A?3²Í?3ù(?3%n?1ü†?2ØÙ?3¸?3ÊÑ?3gÆ?3i?3P&?2øv?0T¶?,Õ˜?+o‰?.©L?2(‚?3'O?2¥?24Ø?2?2'S?1ƒç?0ÿ?1ƒþ?1¨?.ÍW?-Ó×?.úó?-mT?+|ð?,ÉM?/gv?/ït?.å5?.n:?-åi?*Õ°?+#?.ÍU?/à?-£è?,‹ý?.*•?/‡ ?0Y‚?1b?1a/?/KÈ?-¦«?.å?.S&?0U?0ìm?0kû?0¤¤?0°6?0{«?0o?/Ô"?/J?.Ì?.Æ ?/ ?.9?.Ò?.d¤?.d…?.!?-xã?.~?,,?-)?,q??,)à?- ‚?-&„?,@)?)0?#á]?%òì?+m?-Í?-G*?-!¬?+Ú?)‹>?)åK?)“?&&?'5Ò?) Z?&«?$#O?&Ì?':~?$í;?$H“?&¡ó?'ôÌ?))Â?'>D?%^S?'Íß?%‰é?! ?#ï?'>?&¹?%g†?%Ên?&„G?%šë?$oˆ?!§,?!Ð?#»Ã?$ì?%ãS?'£î?(Á?&« ?% b?&*?%Vz?$Ñü?%’1?$#§?$V5?&–Ì?%Y4?"µd?$V–?&!?#Ø;?#@³?$SY?$Å?$nÐ?"#V?!É?!Ôá?j!?+?Ò|?»??!ö?# €?# -?!ï? ê ?!ÿs?"à ? ¸í?Y ?ùŸ?)³? ^õ?"RÍ?"÷?!®? ?:›?!>?ƒI?l|?ÓË?P²?ñc?íÄ? Ým?!ë'?!¶¸?!';?!Äê?!”Ð? ù’?!IN?!G·? ¸‹?+?Q ?vë?'?Þe? =?&?ˆä?ë? Lh? Ý?s?WQ?¹–?ª}?êõ?§=?[§?„¶? Z(?þ¸? p?Bb?0B?D?Äè?á5?`¬?E‡?ih?t¢?©(?˜æ?Ùì?›ý?`t?a2?Br?ç¸?—°?vâ?Ç…?Nô?À?‡F?÷²?Æ?z?ÄÛ?É0?¢]?Pk?ðä?“Ì?ÍJ?íV?•›?Î?ÓÐ?U?7?ÍB? »?ƶ??9?Šž?ÏÈ?ä€?m‘?„ò?ûØ?ª ?èÒ?¬¹?U9?àš?F?{ú?™Î?‚ ?Ç’?Õ?¼>?Á?Ú=?À?æ?ML?–|?ÉR?9-?߀?x©?ïµ?"‚?ë@?Š_?ëj?Â"?ƒæ?{}?þ?Œ¾?t?ȧ?8)?øp?¹Û?_À???òK?´H?å°?«? â?æß?=À? -s?²ƒ?fñ?ã+??ph?’X?õ4?-?ÏF?`3?ÔZ?S†?S{?i+?„•?S?vá?qp?K -?&á?$?æH?(¡?ne?ݱ?ºg?¹ ?ÆÎ?¬r?Ð?²{?É? [ò? ‚? ƒÝ? ªi? -7X? ?ˆ­?-?Z?—#?ìÔ?ºÏ?<2?´ã?—¸?5§?‘«?8n?ýq?‡ ?Û#?Âk?–?!Ã?hÛ?Q¬?ÿÎ?¿?Øh?þs? ? ô¸?ôM?Pn?ªì?R(?^å?hï?…?¬A?ªc?ý?‚Â?±?IF?…[?l§?d?ë`?£ì? ”? -°m? ^?åú?)??9?º?Ôç? ?TÛ?÷L???V*?¥Æ?Cé?;Ó?çß? m¢? J!? d2??S? 1­? ø”?+´?Ζ?[¶? ¼Î? ?ˆ? -®Ô? ˜‹?ŒÅ? ž?^í?Ãg? ”? Üj?kh?¦ä?‹4?\ë?zÁ?ç%?+ -?LY?=¦?/³? -p¢? øô? ? Í?Bñ? ¯‡? ø„?o¹?°â? Œ? %D? -Ù™? Jf? -Ü”? -Ø+? -+?®@?X"?, ?#"?•Á?Ã3?P? ê?ä?»Î?§X?‚?´‘? Ùô? ª¯? M%? ‡þëA?Ï?oD>ÿ/ñ??Š?‹X>þ>b?*?J½?¡{?Á?9?ô?–)?&Å??~¯?Œ:?Ù?S??1Ê?SÎ?¡R? -ž£? -Ÿ[? ¾ ? -/;? -”j? -ü_? N{? -sˆ?íŠ?ö|?~Á?ðÜ?R•?:£? â8? ŠV?ŽÍ? –?áŸ?e?›D?ÎI?Û?"O?£?#²?³­?Éø?o%?S?Ã?_?CÎ?þ?q?YØ?çþ?eº?y¬?¤b?{¹?H´?¬—?`Ã?—Ù?,t?¦¸?ý?ÈÂ?ck?¯;?ÿ%?f?5W?‚S?¬¤??¢r?åã??’?Ç -?®b?±?„?d?o"?=6?¹g?4…?Gš?/í?‚?Ó7?¹›?½Ð?’ã?`7?»?Âi?»b?²x?e^?c?gA?Yù?_%?U©?Ì?°y?„ó?¥\?Õ?Èó?‚?PŽ? ?l™???ÝË?–3?HÉ?.(?+M?üB?Ô?°Ì?ÔØ?ªf?Í?[>ú%>>ùáN>þtT? ?)6?»³>øãl>õú¨>ü=Ú>û­>ûjú>ý,Ž>þ!>üΕ>üüº>ý»›>ý>üëÂ>ýg®>üäT>ö e>úH\>ÿ’½?o >ÿõ>úgp>ö-f>ú°>þk>þTù>ü¼¯>þ‘>þóõ>ÿ6Ð>úÍa>ôg->ú8X>ý¯Ÿ>û§Ù>ûó&>ýGV>ýjú>ý7>û¯¯>ük>üÛF>üQ;>ü”E>üP>û æ>û¤—>ü>ü{¸>üQ`>û'>ù >ùΪ>ú×ó>øÂÆ>÷æV>ú-û>ûj®>ûxÅ>úäŠ>øN'>ö¿>>÷òÔ>÷E>øI±>úë~>út„>ùÛñ>ùÀY>ùÓ0>ú œ>ö,z>îãh>óW>ól >ïKâ>èòÃ>íåE>óJ„>ô÷™>÷Ï:>õe„>ñ)">ô͹>ø–®>ùb>øn1>÷ ×>öR™>öžý>÷u.>ø#f>õ“Ê>öVC>øÇ>÷Œ×>öâŠ>÷¨>ø>ø+8>øœ,>ø6´>öÿË>ðZ³>íÎg>óÔè>óÖ(>ô=ñ>õѱ>÷Š>ø1>ö¡¼>õ&G>õ(,>ôh®>ô;W>òå¸>ñA£>ñÝ3>ó~>ôˆ>ôÂö>ó‚>ôZ¸>õ²2>õ®#>ôL¦>òÄ>ía†>ìÔN>ì2µ>ï‚É>ñyY>è}>ÜØ>êîy>ñð]>ó@…>ôóx>ôêº>ó!”>ñŸX>ðrh>îÖ>èÁ½>âÄN>è˜>íùŒ>ð.L>ò!°>òlž>òû}>ñôl>ñÈ>òIÉ>òC>ð…ÿ>ííB>êA¾>ÚW>µ’™>»2‰>Õ7>Ýñ?>æK">êV>ë]K>ëmt>ç>ä/¢>êôæ>íå:>îQÉ>îÖy>ìq9>è²’>é‘X>èùV>æ‡C>à¼c>× >Ź4>œé>‚Ãr>¦7Ú>Ç_õ>×-—>Þ•­>âòo>ãíç>àT©>ãÐ|>èr >é.ò>êÂH>ꥲ>éÛK>裟>ç¸ò>èÓq>édÁ>ê;@>è«r>äÀÅ>äk‡>ã—×>å$->ä«>à³>Û‹>Õ›š>Ϙ>Ò²½>Û&>ßD >à¶û>âC¯>â‰Ù>ß >â2£>ã@¢>äí>å®Â>äN>åʆ>æ€w>å©J>åc>ärê>ã›>å17>åçi>å‹>䤸>ä³>â ð>Û³]>Ú Ø>Þ‘¨>Ýl‘>Ù8!>ÐìŒ>ºd>£>Œ!ñ>°:>Ęó>Ì´>ÑFÑ>Ô¿E>Õ¯Ü>Ú\\>Ö¤>×ÿ>Üð©>ÜÞ8>׎à>Öµó>ßÆ®>ÜŠ>Û™®>àQ$>ßJ>àÆV>àŽv>àܳ>á#¬>ÞD>ÙqÄ>Úëú>ߣƒ>Üù>Ý]–>áó>âF>à¶Ä>ÚϬ>Û 4>ßr³>Þ3«>×d>Ø`v>Ûæ$>×`r>ÔA>Ô‚>Í ¸>À™>¼5 >Éq>Ñqž>ÓÑ>ÙWÚ>Û´>ØŠÄ>Úˆr>Þ/Ê>Þߟ>ÜN>Ø l>ܧÇ>ßE…>Þì¤>ÞÏ>Þ†í>ßç>ÞR¢>Øûv>×å>Ø&N>Üä~>ß¼>ß2&>Ý£æ>Ø¿ ->Ëm€>Ξó>Ú‡÷>ݸ;>ÝR>Ýhè>ÜÍP>Ü$ô>Ù˜Ê>Ô=+>Úãl>Ýïì>Ý@Û>Ü'Š>Û Å>ØLÚ>ÔÐp>×J2>ØP ->×,>Ôµ >ÕùG>ÖÄô>ÖAT>Ôô>ÐBM>Êß0>½àt>´W¡>¾Èô>Æ6>ÎJ(>Ó -h>Òœ_>Ò]û>Ô%ç>Õ—>Õ>ÔSk>Ö±Ò>Ø¢¼>ØK>ÕSì>Õ\I>×ì–>×(õ>Ö›l>×ßø>ØÎ>Ø >×3>ÔE6>Ϲ|>Ô¹Ü>×'Z>ÔøZ>Ó‰>Ó>ѳg>Í&c>̈ >Ó@§>ÕÂè>ÖU¥>Ö»U>Ö ì>Õ»ø>Ò©[>Ï4Ï>Ïݹ>щz>Ô8Þ>ÕÓ‘>ÕÌÒ>ÕÃû>Õ“f>ÕKe>Ô•þ>Ñtœ>Ïß=>Òº÷>Ôe>Ò:o>Ï\>ÏÍ3>Ñ‚~>Ó~µ>Ò$f>Ò5™>Ò®Î>Ò#q>Ñö‘>ÑTM>ÏÀ\>Ë@Õ>ÌZ>Ï‘|>Î=(>ÉM=>Â#±>½>™>³~$>­Gƒ>ºð->ÄY9>ÅÓå>É5 >Ì`£>Íò˜>ÎSó>Ï)š>Ïjþ>Íw>ÎÖŽ>ÐV<>ж>Ð…T>ЫÈ>Ð2ö>μÂ>Ï=Þ>Йí>Ðà>̨Á>¿Çu>ÂZF>ÎÂô>Ð<>Ï]Ð>ÏUå>Ïv>ÍJÚ>Å:Ä>Æ-l>Ͳ)>Îù%>Êæª>¾l˜>Å)>Êå>–h>ÈOÝ>Ê©c>Ë€á>ÌK>ËL¯>Ëúå>ËEÇ>Âîâ>Ç>Ì >È™>ÉXâ>̯Ê>Ìøö>̳æ>̶V>ÌBÃ>̦>̾ÿ>Ì Ó>Ì2ò>Ëë4>Ì,>É>>ż¡>Ɇ>Ëø.>Ët>Ë ƒ>Ëq>˧~>ÊÖµ>ÈÈ@>ÉÖ¸>ʧ*>Éå¤>Ç®8>Ç;2>ÈÐ\>ÈÌd>ÈÁ>È€I>É”µ>É¥ >É©>É«N>Éy„>ÉRw>Çó›>ÆÌO>Ç~Ô>Æðè>ÆÖ>Ã? >¿a”>»ÊÚ>ÀžB>À"*>¾¹>Áú>¿Nã>¸¤¦>§Œí>¢í>³¡>¼«5>¼_3>º¯R>ÁñK>Ân#>¿<¡>ÀQJ>ÄJ¦>Ä#>¿ýÚ>¼|Ò>½HÑ>¿ ®>Àâr>À¥§>Á´Í>Äõg>ÆŸ>ÅØ>Æ ˜>Æg>Å‹>ÅŠÃ>Åy÷>Å- >Äž–>Âi>Âbv>ÃL>>ÃÒ>Ä©>ÄÅT>Ä»É>Ä) >ÃË4>Ã_D>Âó×>ÃÁÉ>Ä®>Á8%>À«€>Ã:>ÂÚ…>Âå»>Ãgi>ÃÍÐ>ÃXâ>Âbï>ÃO(>ÃvU>Ã8>>ÁÆ>Ágo>Âdr>¿Ø·>¿ôw>Á|8>ÁN>¿ì>¾§í>¾í¸>ÁY{>Â',>ÁÌ™>ÀƒW>¾)>À´>Á‹è>ÀÏ>À©j>À”¤>¿Š>¾‰¡>¿>¾WÆ>¾¤©>ÀU[>¿\O>¼Ø>»þÛ>³˜ç>¸Þ.>¼˜Ö>¶q>¬{þ>¸z^>¾«>¼zc>¼B >¿º>¾ñ‚>¼·>ºß0>»hP>ºˆ>µ?>º±u>»åù>¹ #>¹O>¼QÁ>¼¼í>º&ë>ºÇz>¼¯3>½DÔ>»>¹ðŒ>»§>¼Ê*>¼û>¼>»õ¡>¼à>¼È:>¼pS>¼t>».>»ØŠ>¼WE>»ì¾>»Ë>»©>»¨é>»Vð>¹æp>¸0>¹û>º†J>º.€>ºDe>º~d>¹9{>¹v>¹çv>¸®‡>·ÎŒ>¶’a>·>µ›•>´°'>³×w>°öf>©Ñ>™¹>›é°>©ûð>¯úA>³7Á>´=M>µ®ç>¶0k>¶ Æ>¶èy>·Ø>³õÍ>´@’>´¼ä>¶I>¸$>¸ :>¸K>·W&>·@>·ïø>·m8>¶N>¶þ=>¶uò>µ?S>°¿>±õ>´ Î>¶=Ê>·S;>·X`>·&>µæ>¯”æ>±ë¸>³äÆ>±€æ>µv‡>µ¤>²0Ä>³oç>²­\>´-Æ>µÝŸ>µqw>³Á=>±Â >²~ô>²‹å>²kå>ªÉ+>¯Ì>´‹ç>´aÿ>´‘¯>³Ñ]>±j$>±d>°@€>±Ä_>°êœ>²Ik>³nÔ>²V>¯ÕÉ>°S'>±c3>²¼)>²ÝÍ>²ôI>²0>±LG>±»i>³(%>²ú^>³$I>²ôœ>²¥ >²š™>²G>²^0>±4$>°bã>±¿Ê>°’t>®¡>ªO^>­?r>¯o^>¯‚û>­Ô˜>¯Ø>± >±”)>±2ˆ>°¤#>°a>¬Þ`>®Ju>¯LL>®ßÁ>°&>°ÏÌ>°Ø­>°’•>¯Ï„>­NÚ>¬ëŸ>«Ã|>®z>¯wK>¯[ë>­¼@>¬ý²>­¦>¯av>¯„5>¯KÛ>®§¢>®“7>¯,Ô>¯S>®š1>­/}>®ø>­ÉU>­eÀ>­¤ù>¬>¬ Ù>­–à>­G$>­·>­Æ_>­¾.>­g›>¬äï>«š¨>«7|>«÷t>ª 2>©‘>¬™Ú>¬£¥>¬lÐ>¬)5>¬SN>¬ÔŒ>¬¿¢>«ÍG>«×ô>«ÿR>©n£>¥cò>§€0>«Uá>«5á>§®^>©a->ªÛý>ª3N>ªÄ¥>ª‰>§+>§öÃ>ª;>«&±>ªÓ•>ª6Ê>ª`^>©’ƒ>¤Â#>§¶>ªS{>ª6>©u×>¨¸>©g>©¦”>¨£Á>§ý>¨û=>¨Ù‚>¨™«>¨AC>¨k]>©0>¨¼Ã>¨DU>¨®`>¨§Q>§ìÌ>¨/>§ÿs>§ë>§Yâ>§›Z>§ç¼>¦‡ø>¦Ž >¥){>¦\“>¦à1>§Oò>§j¿>§6>§ >¦ÿê>¦àÐ>¦XY>¦t>¦y>¤C;>¤a>¤†W>£N*>¢Ø„>Ÿ ->¡‰> »ñ>žg1>˜èw>Ši»>ˆÄ>—'µ>3í>ž¨Ò> Ç´>¢Ö>¢šª>¢t)>¢â>£¯Q>¤.{>¤!ß>£ñž>£¶è>£$,>¢»§>£æz>¤’>¤6Ù>¤Lº>¤E>¤;>¤Ä>¢Q> É²>£&>£Pª>¢sÀ>¢Ëõ>£z>£0i> ’>žO0>¢‘e>£>¢úo>¢ò >¢‹ê>¢«¨>¢pg> œº>žOÈ>¡`ã>¢0+>¡žM> ’> ûý>¢¶> )>»> aÉ>¡T{>¡`> Ðþ>¡eš>¡\B> ¤b>›Ád>›¯>žü> Ž–>Ÿd>Ÿ)T> 9ë> ×>Ÿ°&>Ÿ‘F>Ÿ×f>Ÿ Ê> ’>Ÿ{ >›™°>œjI>ŸCe>ŸÍž>Ÿ€K>Ÿ^¦>Ÿi>ŸB>ŸLR>žKo>ž)Ü>žö…>œÒÛ>6‡>žãÁ>žéÑ>ž¿®>ž­>ž™/>žpÇ>ž¬>þ¾>ž>D>ž%¿>×€>¬l>øÖ>ôK>ÍË>Ÿ´>›ÑÀ>˜…Ñ>œ‹í>y>>Oó>œÀÚ>›·>›îê>œ²Þ>œ|>œT>š­!>œ,¾>œŽ`>œHã>œ<ö>šé³>•Q.>–Ú>™Œ³>›qƒ>›êU>šìÃ>˜Ñ>—Š>™ì>š9z>›…>šl)>šÎ¶>›4>šò€>š€Õ>š «>šKµ>–X->–»>šAÑ>˜èe>˜o >š2t>š?>™ô>™‹0>™¯+>˜°>–”>˜øµ>™…4>˜ü{>—ñ>˜[þ>™P˜>™L3>˜ôj>˜î{>˜ä*>—!n>•™ñ>–ž|>˜§|>˜>—ùH>˜5•>˜'">˜W>˜(ý>–ó(>–B>—Š>’-¹>Œ¤b>Ží4>“ž>—->—b~>”èj>“ä3>–À ->—(Q>—.•>–üë>–ÍÄ>•º7>•Þ0>–D_>–l«>•üŒ>•ëÀ>•ao>”ZÂ>•ò>•åÔ>”Þ>”¤g>•3>“¢‚>“çL>”^¸>•3>•Ö>“fÈ>‘žt>“C>”‰6>”¶>“Š„>”‡«>”îE>”Ș>”žE>”­,>”K‚>“®Ö>”; >”eÚ>”3U>”.Î>”>“J@>“QN>“O>’3Ø>ŽÇÎ>Š:ÿ>7&>“zÐ>“y>“7Î>’—º>’êü>ŽÖ¥>ŠO0>^c>’~d>‘š->’Oê>’Z>’l>’g>’Pè>Ž×Æ>ŽA>ïµ>ð>‘Òî>’ è>‘øG>‘Ü#>‘™Š>‘WÇ>‘rÀ>‘lá>‘;_>9L>Š+Y>ŽDq>Þw>G>«·>gÊ>œ>}R>Žšƒ>…¨E>…o†>‹€º>ƒ×‘>…¾5>‹Z¶>ŸM>zk>`>ãE>ˆ°<>èÍ>Œr>4E>—ã>Ž˜!>.W>’>‡x>†š>Œ±j>Ž°[>Žæ¼>Ž–¨>tÍ>Œ5ƒ>‹un>‡I¿>ŠG¥>‰ëƒ>›ÿ>Žl>Ö>Œ½>‹•×>Œ g>†>žã>•¡>= >‹g>ˆ%>…¶>Šõõ>"ö>Œ—è>‹sÕ>‹îa>‹à>ŒŠ>Œk»>ˆH\>‚ß®>ŠV ->‹Å>ˆéð>…>‰Ïo>‚½à>„™†>ŠŽË>Š$(>ŠŸ>Šèc>ŠŠÉ>‡JD>ŠFü>‹CQ>‹S >‹Q>‹:w>‹o>‰Ò>‡*¢>ˆoá>|`>„-A>‰¿q>Š[¼>Š”>‡Ô­>ƒÑÎ>…¬->‰=]>ˆ6Ÿ>‡Ã%>‡L>‰û>‰SF>ˆÄv>ˆ>ˆeo>‡”q>€Ë™>ƒOÔ>†º’>†›>†7>„Úµ>ƒ œ>t>zL>`çÞ>Z£Œ>vX–>€£ ->‚å ->ƒ¼©>g>ÜV>é>„Õ>†->‚£ >ƒ˜>†‹d>†Ñ#>†®>„÷5>~ >€¾«>‚óÿ>…¦ø>†›T>†®Ý>†šc>†xB>†“T>†F>†3>†L%>†C[>„ˆ>‚ÄR>å>ƒ#â>…ƒ2>…ô5>…¦à>…oŽ>…KÓ>…‚ˆ>„õŠ>„¤í>…33>„¢>„½q>…^,>„«Š>„'7>„?Ê>…=>…v>„ë¥>„±_>„ŒY>„¦)>„Ìq>„|¥>ƒø<>ƒÐ›>„BÏ>ƒ÷—>ƒÝD>„0g>ƒ¿Þ>ƒÞ)>ƒÔ>ƒäu>ƒÚC>ƒºþ>ƒ—>ƒX>>ƒ*Ð>€j7>‚"í>‚€Å>‚z>iu>€UA>í>‚–K>‚ï2>‚ŸX> >²–>ðÌ>‚Š@>þV>€ü•>¨^>‚pÝ>‚f”>‚;”>‚ â>ë¿>ð>K>Dâ>è„>wö†>y/g>+§>IJ>}Âê>Qê>|>€o*>,ï>0²>€¡ö>¶X>€¾Œ>€Ç>€¸†>€Ž&>€S”>€cG>€¥æ>€x˜>€kb>€UÃ>Yv>~n2>zÓ>x">p&)>vÅ:>~Çw>~f>>kH>ˆº>MÕ>:¼>~І>}ÞS>}ós>~¥F>|@P>u–Ì>t³>zÓ‡>{eù>x"ô>y2ˆ>{+Õ>{´>x#P>yÂÓ>{×ò>{½í>{Ò>{Y»>{»>| &>u6>q½>xó«>xpÿ>xŽ!>zÛ7>yð1>z6m>z–\>zIú>w•E>v•1>yrŽ>zS>z%>y¢Ý>y l>qÓ>u7“>vó>oš>rxŠ>uXé>qa>q¶>w³>u½§>qÛ>mÅ>i…>rÐ">u[\>uS>s§w>vÎE>t¯>qiù>uyZ>væ>vŒ>vs->ué>nåF>sÙÓ>rµý>o|>qÏ>tõ»>u°Ý>u4>u?Ê>uE >u r>u]>tÐ>rA&>tRM>sÛU>sLV>q,>q®†>sÜF>sÕ—>sô>s>s-ñ>p³ý>q¸½>sÆ>r×ì>rÚg>rH²>o:E>oNY>o•>q{ì>q7>qž»>q³Ó>q@>oÈ:>p6I>qUw>q@§>pé$>oÈ>m$>oÛ>pc”>pRð>oÌ„>pS>oÈc>oš>ozÎ>oh¥>o>m—y>mñ9>j!>bL+>i/ˆ>nP>kÕÊ>lAy>hÒ÷>aü“>bK>ký>l0”>g¦<>l«>m([>hx->g†ç>lœV>kœ@>cþ>f—ƒ>kb>j¼…>h´ž>hô|>ga|>f3)>]T×>hó*>kW)>g¬é>bIE>fÙÁ>h?Ä>j³~>iõß>j°>i×»>`;6>c¬>hæ>i;I>f±>h‰P>i‹>iR¡>hôÍ>h¥'>h…ì>h‘>heÞ>hK>h5;>h7y>hA×>g­Ø>g!>g >g´Ã>dÈ€>\Ðe>_ù>Q>_Á>f°|>fôÈ>f¶±>eç¢>c£>`öÑ>bãÕ>`ÿ >b34>\¤=>d¸>e¡>ezÀ>e?>dÑy>ak­>bji>dß›>dÌ>_Ú>b7w>d>au?>a7>bD“>RŸî>X“}>c>bÊ…>ZEi>]Yñ>bºª>aÃÿ>^+U>b>bw×>b ¸>_ñÇ>\Žù>`?¢>b›>aÓ¡>`Ö´>`±Ã>\!>Ur>Qð½>^™€>[æF>W7›>V}>^6}>`cO>`PÆ>`0ú>`P>`È>_ì0>_êû>_¹l>_’W>_4®>_+ >_Kô>_ç>^lj>^Êô>^Ÿ >^ŸÒ>[c>Óž¿>ØBé>ݯ:>ãp©>è®v>ê±­>ç©e>â"~>Þ‹û>Ý»2>Ûû„>Õ²8>Ëýˆ>Ä ]>Âæ>Æ>E>ÎèÎ>Ùn>àòL>ä$Ç>ãp>ß^\>Ú,Ú>ÓQé>ËR>Å­Ž>Ç»à>ÓiI>ä -Ô>ñlì>õeÏ>ï<$>ã°>ÙA¸>Õ+ç>×%]>ÚŸ—>Ûp¹>ÚÔ>Ù–r>ÚDâ>ÚRÝ>Úy>ÜÞ>àe|>ä+>å“>ãž>âÝÓ>åc,>ëªt>ó3w>÷–>õU³>ìõä>ã2>Üñ;>ܺÜ>ßóê>âid>àŠD>Øõ>Ψ#>È¥p>ËœQ>Óá¤>ØÅ7>ÖÑ‘>Ði™>Ôõñ>Ø©>ÔÐ:>Í”â>É`>Êé¾>ÑW>Öìý>×u†>Ó¶3>ÐÝ>Ó.µ>ÙÍ]>ào3>ãò >äd®>ãøm>å 1>è}œ>ìö¶>ïÐ5>îôJ>êåž>楥>ä]h>â°I>Þn>Ö21>Ì />ÃþÍ>À³Ç>ÁþÈ>Æ—§>Í×>Öåœ>ÞÏ­>á<.>ÝBÐ>دš>ÚÚ>â´>çðp>çL>á Ü>ÙI‰>Ò'b>ͬŽ>Í!ô>Ï`ø>Ñç\>Óžn>ÕŠx>Ù#l>ßà>çGÆ>ïÖÎ>õkB>õüB>ó‚ƒ>ñl#>ï²>ëk£>ã»B>Ûo>Ôé>Ð}->Ñ -:>Õ8Ê>Ûkô>â„S>éÌ%>ïãh>ó¶&>õPÇ>ôî¸>ò¿l>ïU€>ëA>æîÄ>âôµ>ß­>Üa>×€ø>оa>Êmî>ÆÀŸ>Ä<À>À(>¼)Œ>½Îr>ǹ:>ÕŒä>àÜ>äz‰>ä«ó>ã£>à&Ä>ÝÓö>ßY9>åι>îhv>õ >ú°g>ý}[>þpV>ýäc>ü©‚>ûCÓ>øí>ñ€h>ä’k>ÓÕ¿>ÄY>º‰>·o_>¹ZP>½þn>ÃW9>È!>ÎaB>ÕA>Úw^>ÜfR>Ûã6>ܧ¦>à%>âÒ6>ß´:>Ö¾>Ê1Ð>Àèu>½}>ÀÍt>Çе>ÍK >ÏÊÛ>Óžf>Üx¿>çFë>íq‚>íÌ>ê/J>è~ >èp>êžÄ>ïwÙ>õ¿Ï>úzj>ük$>üŽ>øx>ð¶>ãÖÿ>×Ö»>ÏVÎ>Êgs>ǃ—>Å‹>ı+>Æÿ¶>Îÿ>ÖÒü>Ûå>Ùe>×µ®>Ûn]>âïõ>éMN>ëÝø>êΠ>è8s>æî >ç>çO}>ãá>Ý1Â>Ô=m>ɶá>¿“¶>¹·q>» >Â*>ɶ¥>ÌÀË>ÊVy>Äûë>À<©>¾³w>ÀVV>ÃÇ>ÅÕq>È\Z>ÉV>ÈGË>Ê»E>Ó)I>Ý…¯>äqï>ç¦>êƒÂ>ïÏ>ó#¹>ñ»?>蔵>Û&¶>ÏñŽ>˹¦>ÎÚ„>Õ•U>ÛZ·>ÞE’>ÞÓS>Ý÷>Ýeù>ß·…>娭>ì>ð¾Ø>ñ}>ðÇÅ>ñë>òÜ >õ Ï>÷C>øsÄ>÷©Ÿ>òô_>ì!%>çŽM>ç¢Ù>êûž>î®ó>ð¼6>ð;5>ìòÛ>è*ç>å;x>æþ%>ëÌ»>î«>ìí(>çZ>ßWÚ>×NX>Óð>Ôc}>ØÈ<>Ý°>á…Ê>ãd">âsÆ>á~K>äy>꧛>ï>H>ï/5>ê° >ã§Ã>Ýè>Þ³>äÔš>íÈ€>óëü>öóß>ùÏ#>ýÙa?oé?w>üH'>ùŸZ>ùµn>ú.>ûWL>ýá>ÿ>þý>÷Æ/>ï€~>ë¢A>î:Ê>òp>ð|j>éÝË>ä¿f>æå>ìý>òu×>ö9’>öpZ>òòv>í0Q>è+>å2m>ä{>æv|>ë}¡>ñ`Á>õ{ƒ>÷|@>÷ÎJ>õ­>ð=>æîb>Ûí>ÓdÐ>ÒD>Ù}¥>äo>ìâU>ðg0>ðnö>îlæ>ë±Ð>ë>í•ö>ñL>ô¿T>øHl>ùœó>ô6%>è%e>Üv€>Ø#>Ý}>ãÈ7>æÉ0>åÏ1>äRT>äV>ä…½>æcm>ë4k>ò%>÷°>÷ù >ñ„Ð>å­~>×*p>Ëý>ÈhŸ>Ñ/d>Ýóý>åÐW>æô>æYŽ>é¦h>ñ_>øöƒ>ûî½>øÑ¿>ð`(>äZ >ÖÚ§>Ë°>Æ`(>ÍœÏ>Ýþ>î5r>÷ V>÷)—>ðëh>çÌP>ÞMã>Ö h>ÒA>Ôf>Ø×>ÖÉÎ>Ñ\~>Ï<ý>Ôîu>àøÖ>ïJf>úÀ™>þ¢>ù¶>ëäw>Ûܳ>З>Ð7Ó>ØàÊ>á³>å"Ù>çñÏ>ï;s>øn¹>üšd>ù >òÇÒ>ñPO>õÐ5>ù„’>ö¦H>îzÒ>åœI>ß6>ܾÌ>àªv>êy…>õÚF>ýï¯?ŒÒ?qŠ>ÿM>ý_+>ø’‹>ñ65>ꣴ>ç–ƒ>çQ">çd‚>æÒ>ãJ>à“p>àCÇ>á¶>ä¸)>é\I>íjâ>îV+>ìk>êx}>é£h>ê,¹>ëñ>ï>óuó>ù•>þQ?Vë>þc»>ø¸Á>ò™¦>îW¬>íÝ>íýa>î=¼>ì¥>ì;,>ðl>ø› ?³à?¡£?»¦?Î>øÙ&>óA>ô¾Ä>û¼–?´&?1Ð?Fq>þ¥ó>üÏ3>ødÀ>ïb>ã÷>Ú¢s>ÕØn>Õã†>ÚŠE>â8¾>ê[P>ò:a>ú ? ? ?B‰>û‡$>òœB>èô‘>å…i>ëR=>õB¤>ûÌÉ>ü ù>ø8>ó,\>î¿“>êÊŽ>ç]ý>åøK>èPI>íÆó>ò· >óX†>ïÁî>ìf;>í |>ðrˆ>òš®>óoô>õ>öèz>ö™R>óÄ>î¾/>沪>Ûç>Ñy¬>Ì6g>ÏЪ>ÛAW>è Ó>ð_>òó@>òî>ïQ²>çZQ>ßäÊ>ßÀÃ>è ƒ>ôìÕ?a¬?V°>ý8ƒ>ïBé>ä >á”y>æçö>ìˆ.>ìq“>æï¿>Ývß>ÑT¢>ÈBQ>Éïœ>؆g>ìÌ>û‘„?ÆÍ?É?ªC? ¦ì? W§?„%>þqù>ïè@>ëËM>ñŽê>úìŒ?.•>þ•±>ùbñ>ôŽ†>>çß9>å¯Ã>ìÒ¶>û— ?&? ÷­?`?Ë ?2&>þÁ>ðåÏ>éØU>å"Z>ß„X>Ü>Ûÿ >Ýïä>æ³>ø5v?ñ‚? -X`?l?9K>ù*¦>ôY2>ù;ê?…Á??¹õ?àN?d$? ± ?2 -?Ø?ãØ?w¬?·…?ïË?È!?,’?.?ܾ?0? ‰’? -OV? ˆd? g? -eÌ?v ?W>ú§Ø?eK?ƒ?/?Í? ®f?£?ÅÊ>÷ Ö>ö -?]ë? š? ?À5>ßFù>Åéè>ÃbL>ËZ½>ÎA¢>Ëú>ÎÆÌ>ׇÖ>Ü@Ÿ>Ùÿ‰>×r >ØC‡>ÚUU>ÛãU>Ý«>ߺ(>â4u>â7æ>Ø>âÖ>´¶I>µ‰>ºn£>³ '> Å>‘µ£>ŒÐÃ>ŽŠZ>“ïë>ŸÝ6>·N>>ן)>òð>ÿg}?¶{?~7?´»?`ù?ù? Ý?Ï¡?X?‘? Ú? à>üñ>îëƒ>í¾{>ób>û{X?'(?f>õáA>ß"ü>Ð%€>ϳ‡>× - >ÚYÿ>Øë>à-Ë>öB?ÍJ? Úç?çî>âÐ>ÌH'>Î>…>ãl>þ®ë? -ÃE?µ¸?€Ñ?¡?&Ã3?5ÑT?:«Ó?5Øl?)Õ?>öÒo>Ô^->ÑFì>ßÑH>ín>ö„·?Q­? yæ?Kö?"±M?0¯?7!ç?3Ì ?*»K? £î?õ?’?ŒÔ?ˆ¢? <€?³¨? {£?žE?R)? @&?¼ ?%¢g?/ßY?3»²?4a½?7‰Þ??*?H_#?LȵÙ?8üL?4«5?6lq?<Ì‹?@?<_œ?49H?* °?"&É?$Ÿ?2E2?Eƒ?PÈp?RJ?P°|?QUò?N‡°?E’ú?=È?9ù?8 µ?;ùµ?FzR?R6?Z1%?[_ú?QW@?>@??,æ?&,‹?-Ê?As ?[¶?r±?€¡ ?‚§G?~qÜ?s^e?lh?i©¢?g ?if*?zˆ?‰úŸ?’©×?“)¦?Ž“?†åÀ?w‚—?_\x?Nl—?HTÀ?Jys?O*|?R›?W6O?a·?p“i?€Ey?‹ì?˜3T(?AO9?QµÆ?l|¸?‡c²?—Óê?£˜8?¨$?¤ Æ?›ˆ?–O?–l‹?“ƒè?ˆ´º?t^Ü?Tƒ•?7Ý?0*­?FÎf?p'l?(o? )?³?³4?ÆLe?·{a?šm?{GÝ?^¯.?]dÎ?k¦“?‚¨ä?’¬p? øH?¬1?°Å?©,?š…?“"?•qÃ?—Î?—¨«?»,?¬›?·çö?¹N?´z?°”Ü?±ß?µeÌ?ºÖ?Æ3÷?Ô ?ØË?Ó¡?Ñ?×î?Þç¨?Ö*?½6y?¦4—?šÁ?”?IÉ?‘éP?šž0?Ÿé§?·?–3e?½Ð?°>?‰É?„ëº?…Œ?ôô? A­?¯²?½± ?ÎXè?Þq?䮶?Ýò?Êî¤?¸É•?³så?¾."?ÏåY?ݤÃ?áM,?×Ù:?ÂÓ?¬¬ñ?Ÿ‹.?{{?¥O”?¯—„?¯ƒ? ”?’z‚?”Ü?¡Ù¸?¨Ù>?ž0Ò?Šj"?xN?qÖu?? ?‹Ð†?—l‡?œÒä?™¥c?Žþ?}•?gÛd?c?Ö?jV?t¬?zäÏ?{ºƒ?x+ ?vű?v0?Œ³Q?žÄd?«F?­ü??ªò~?¦ò?¥zb?¤’?íÔ?’KË?‹T•?]Ý?˜¨Ò?vZ?&?œÑ”?ž)ˆ? 3?Ÿk)?–¼ê?‰a×?ƒH—?‹§?žïr?°ö?·ub?´'?­´Y?¦å`?Ÿ¹?˜~¯?{"?†%?vÐò?kI·?sVÎ?‰QÔ?Ÿ±˜?°õY?µ Õ?­kò? ;L?–‰°?”?TY?†Ô“?„‚ž?•`€?¬¡„?³@?¬kD?ªö?­aa?©ÍÉ?¡ª?£?²Ó.?È ï?Ö›½?Õî¡?Ì¡[?ÆÙÀ?ÉñÒ?Î@ ?Íyÿ?Ìñï?Ô®Š?ã+ß?êw,?㤭?׫‡?Él?µµÿ?¥ío?¦^L?µÉÓ?ÉpW?׫b?Ýk•?Û•u?ÓZt?É6?ÁÕ?¸]\?­÷?§‡?¥ À? Ÿ€?˜õc?’6c?ƒW?’BÂ?’=g?Œõ?~p»?_»;?BÛ•?(Jå?‚@>÷¡“>ÒTs>°Qm>“‰>ã™>‚!œ>”®Š>³_3>Øí?•R?lŠ?*ã–?9ë/?FJv?Rд?a„1?wie?‹1é?—æf?™¹?“•?’BV?™ðÕ? ý?Ÿµ,??¤´Œ?±"?±Q!?¤ªm?›S? ?£ŸX? …*?×Å?rAÊ?Kg‡?.fš?T{>ø’x>Æ ò>šL‰>z>q:y>Ž_ñ>´ñæ>â Ý?³T?"t`?@TÎ?`0”?~Ž?Žkì? në?²é ?¾Ù=?½?±NÉ?ª÷?°AÏ?¿ý?Ï€·?Ø8d?Ü,?Þ‹]?Ûrê?ÖUý?Ö€ ?Ûã†?àè_?ßÎ?ÖÑ?ÈÀ¦?¼Å»?¹ÞÈ?Æ¢Ÿ?ß A?ò[à?ö5?ò8‘?îb?å0?Ò˜©?ÄT¾?ÇP-?ÕŠ?âV?èàZ?욧?îÉp?ð s?ñÓ=?ô«œ?ùãe?þס?ü«²?öéT?÷rb?úÏ1?öI‚?ê—ö?à,?ÙÌ?Ùì?ädÝ?û÷@‹¨@ ’Ï@UÑ?ë½??Ìß -?ºâï?º\û?Äî³?Õ>á?çW?ö»+?ÿ›o@b?ø1ž?ëÁÄ?ä _?æ~Š?è²?Üzz?ÅC?¹–I?Ê(P?çM*?ô~?íN?ã–(?ÝÜ?×7!?Í\?Ô–?ÀŒ£?ÄŸ?Èât?Ì ã?ÑÙ(?Ü$ß?ã]T?Ü×?Çåy?¶4R?·ø¨?ÅÒÚ?ÊŸ ?Åé—?Ém?Öɦ?Þ -ì?ØlK?ÐÑG?Ñ^X?ÓæN?Ëó?²Í'?•Õo?…¯h?Œ«e?¤—?¿õ·?ÔH¥?ÙJm?Ðcõ?ĉÑ?»Œ?¸Gþ?Á§?Ô&?ã¯p?èc®?ç®?å6»?åç?囆?ཤ?Ô¢?Æx€?½ƒÝ?¶¢¶?«ú?™cÓ?†±£?Ìì?n‰?¥›9?¹Z\?ÅŸš?ÉO4?ÆŠ?¿ëÁ?¸Ÿ#?¶h¸?»ÈU?Å$J?Îÿz?Ø€¦?àŠ¶?â‘ö?Ù+è?DZ_?»ø?ºO÷?¾õ?½ÑI?»÷,?¾Å[?Ä—h?Å~÷?½¨¯?±¹~?ª¿?«°V?¯É’?°U?­õf?¯YO?¸?ÅŠ¬?ÏÕi?Ó…4?ØŒ?â?æ?æìZ?ÞMW?Éñ)?´à®?­è2?·úä?Æ‹´?Îòk?ÏóÆ?Ê”?³"?¿Àœ?Â_Ù?ÃÖ¾?ÀN?¹ÔŸ?¶f?¶„Ú?¼*Ò?Äýq?ʤ›?É[+?Åð×?ÉF‹?Ñ>ö?Õ¦g?Ö;´?ÔÇX?ÑÝ ?Ñ Ÿ?Ó%…?Ð -?ÁóV?¬JÏ?™³É?“âÑ?›Ž«?¦¹Ê?©N?¢&Û?Y?¥;]?³Ž™?¹¯i?¶)Ÿ?³K¥?·u?¾¸m?Àf5?º+Î?¸x\?¿W2?Ên?ÁÇ;?ÄyÐ?Îîn?Õ¼?Íd?¼› ?¯wd?¨*g?§2Ú?®Ô%?¶n&?´ht?®MÀ?«@?¨è/?ª3c?³ °?¾®"?Å?År8?Æ©ë?ͤ?Ôvù?ÕS?Ê:o?¸v?°ya?¼×D?Ï£÷?Ù4@?ÚB8?ÙD©?ÓêÃ?Ç}¹?·²J?§q?˜Mp?”E=?¤|?Áǵ?ØHÃ?Þ9–?Ô%'?À«=?³‹ã?³o¤?µÖ‹?µá?¶ `?µº?·ðw?À‡?ÊRz?Θ˜?Ïøw?Ðr?ÈvU?º™ü?³®?·tI?¾K†?¿Ã¥?Á ¿?Ås?ÈËx?È°6?ÈG?ÉCÓ?ÈÊ‚?Ã2e?ºå:?µ?º?¶£Ç?ÀͶ?η?×Ð -?ÞEæ?âNÎ?ßÜ?Ö–Ç?Ë‘J?ÀTº?³˜?ªÔé?¬€V?³r -?ºDí?Ä-`?Ïý?ÖŸ?ÔE:?ÍLÅ?Æî?Âzy?ÂÒ?ÃV9?ÃR?¿gH?¸ü9?°"w?¢Ú[?•{ˆ?•‰s?¦ŠŸ?¹r?¾´û?¹wð?²ùð?®’ ?©0I?œç$?‹{c?•?‚å?‡]¬?4!?˜mÄ?_Î?Ÿ"£?žCd?š¥ÿ?œk¶?¨?G?´]?´‹‰?ªTÛ?£uš?¬É*?ÁÙ”?ÒJ¼?×úõ?Õ~D?ÍòI?ÈÝ“?ʳ0?ÈÜ ?ºB?¨;8?¦+ö?·y?ËÉg?ÒÒ?ÉÒš?Â.ž?Ãp?ÅŒL?Æþ•?Æ46?¸éX?œž¸?€¡ó?]òa?N`:?]Ï’?„¦ ?—§!?¢F?®€?»?Ã9t?Ép?ÊŽF?¾xv?©°ä?¢m?®ðÂ?Àlª?Ìú—?Ö%?ÖTl?ÊÉm?ÀLù?ÃÀ´?Ð ¢?ÚU—?à„m?䕼?å?ܦ-?˱i?½vd?ºÇ ?Àv=?Èä?ÊIB?¾˜?«"i?¦×?·Þq?ÏÞ ?Ü@ü?Û¸§?×·^?ÑÐ?Àu?¤‘#?¡Ú?’ž?£pØ?²S=?¹ƒ?¹½"?·3‚?¸ÂÚ?¾íß?½*w?²j?®ê?º%"?Áòê?¹}J?¨í0?¡‹?¬”?¿“o?ÅeÍ?Àc‰?ÀO7?ÁbÀ?·ãY?¬¢?®p?¹>Œ?Ä,A?É•?Á¢?° ?£3U? ub?¥e?²I?Àà˜?Õ£?»e?µÛè?¹ Ž?À÷¥?ÿ†?Àµº?¼Ø³?¹[ß?³†?°NF?²Iã?±Ø?«ƒ{?§œ?°t;?ÂÑg?ÑVb?Ô/ø?ʬt?·¿e?¢+?•W?›ÁÏ?¯Õ¸?¾Ëç?Ãc­?Ä?¾ãÒ?·!?·{ ?»¬í?¶Ã—?©Ö?¡_“?£›û?§Ôg?¨¸Ý?§Õü?¤0? z7?¤°Ž?­ w?±Æ}?²È„?¯~?¥ÿ§?žc·?Ÿ¹U?©I?¶/Õ?ÄQ=?Ï­¦?Ó¢è?Óàn?Õ”ƒ?Ò &?ÃAQ?¯­&?¤û?¨-•?¶¦ú?ÄÌ?ËØa?Ì­©?û8?³ì÷?©<;?«wÐ?¶²?½‚#?º™ƒ?´}¥?³›?¸ ”?À©5?ÆϽ?Ã\´?»±A?¿ ?ÏbÄ?Ý€z?ßæd?ØÛ®?ÍëF?Ç|?Ê1?Òb2?Ö G?ÒŽ?ʦú?Áiç?¼T]?¼ÿd?¼ë¾?»÷?¼ª[?¿#¥?¼Že?´N[?¯…P?®q?¬´Œ?ª4y?¦¿´?¤±˜?§Ï*?­Îá?¯Ñ^?¨„À? ¾?¤'?´`Ü?Å'æ?Éo?Á}«?·òî?µA ?¸ñÆ?¹xÃ?´›?³šÎ?¶¯+?³ `?¦øJ? îF?¨·@?¯Ês?«·”?¡oÿ?œ4?£Ü?±Ðâ?¹»?¼ìD?À>??Á -È?º¼t?®ê-?¨ Ã?¬÷?·>º?Áq;?ÆI?ÄÀD?º‹a?±òt?¸5?ÂA§?âÙ?Áa?Á:§?½âP?´¡?«†?¥Ÿ?žüª?›¯e?£ï›?°ìÏ?¸†º?º¬Ì?ºŽ?¸?³s ?­È+?­]V?±Í?³˜ ?µ¨—?¸È?ºêÓ?¸ŸB?²”ˆ?± ?¶ ¾?»#e?¼oî?¼W*?¿‚û?Æv?Ìr?ÍI¿?ÊÏ?Åx©?Â7Ã?Á—ñ?À9#?¼¸¥?»=0?¹in?¸?¾&?ÇðÅ?Íxr?ÌÓ0?Ȉ;?ÅMÖ?ÃÆ ?¾i"?¸MO?¼œ?Åò^?Ǽt?ÀÔ?»iI?º€)?ºr²?º•?½3?Ážy?Æ]j?É'ð?È?Ä(?½a?³8ã?¬«?®tE?·™?¿“Þ?ÃSd?Ãï?¿Ùp?¶L¶?®/?®Ü´?»ž\?ÊËÙ?ÏÆ?É%Ç?¾)ì?·^L?¶ð?°Õ?£À?™Þ˜?šsÏ?¡²³?­™p?¹K?¾î$? í?ÆÙi?Êéþ?È—Ø?À@?¸õU?µëv?¶d>?»J˜?Â*u?Å·¸?Æ"n?ņ9?Äk?Âçˆ?Ànu?¾¼P?À·›?ÄŠ?ÇkÞ?É e?ÇÏ?¿ ƒ?·¶y?·x?·«”?´¬?±­€?³Ïd?¶cî?³?«³ú?¨i‡?®fH?¹ ­?ÀÁ?½^š?·&Í?¶&Z?»Ê ?Á-¬?Â`÷?Â?Â÷&?Ã÷/?ÄÕŸ?ÆóÊ?È^?ÄÉ?º~-?±OË?­ð˜?­˜?®?³@µ?¸èÄ?»P?·Öú?´/Â?·\?»}!?º)Ù?¸§Ï?»l8?¾Ù?¿=?¾´å?¿eb?¿D?¿d?À?¿ˆ?»õô?·pÒ?³D§?°õ?±£?µ¡n?ºÈ¢?»÷ -?µ€?§äÕ?¶H?›B‰?ž´î?¥˜X?­¢?´FÙ?·ø7?¶ÞÄ?´op?¶o7?ºR?¼F}?¼ïë?½Rþ?¹ÐÔ?µ ?¶_¶?¸ÿ?·†2?¶Ùw?µþÎ?²E?±'ð?² ô?²ù~?µf?·²¿?» -…?¿9?Á„]?¿U?¹*b?²Yë?°±Ð?´?ÿ?¸Gÿ?·å™?±¹5?«ñ-?­pc?²:5?´ÒJ?´µd?²Þr?±êî?´UR?¸â¥?¼½?¼¥?¼dê?¼õ­?½Î?¼X?µ  ?¨¶ä?  Þ?¥7N?¯Ìq?µ|?ž˜?‰`?C×5?g>š?³/?Š÷?”Ñ&?šÆ?—üË?9í?S?‘ù?—Žû?™y?˜€W?›‰?£-½?ª°?©†R?¢fc?šç?•Ú?˜ç?œ½ì?Ÿ÷ü?žãã?™L2?•£…?›“&?¥ˆ?­Ç?±ó ?³ ?±N?©ÇH?£b‹?¤àè?§.‚?§$P?ª¾}?°¡7?²T›?®K§?¥'E?›IŸ?šÐ´?£‚j?«œ¸?°L7?°¯Z?©®C?Š?“J-?—W?‘•¡?‘ /?Ž#x?–ß?¤|ü?¬ Q?®FŠ?¯(?­‡’?§à?žò?˜Ìê?ž?£–¢?Ÿ‰€?™Û?E?§ÀÛ?® ?¯rx?® k?ªœ?©Fî?«¸È?­xp?­…Î?­]#?¬8 ?«wÐ?«Á÷?§” -?k?›xK?¥éq?®!n?¯+è?®ä·?¯&?¬,u?§Ç ?¥÷Ó?¥‚1?¥ä?¥ï*?¨ÂT?««Î?®ž?°s?¯/¼?«xq?¦ú5?¡Ð«?˜¸‰?ŒúG?‡ÕL?Œº›?–‘?¡7ì?§r}?¦„{?¢&z?žúÚ?”B?œŠ? 2ÿ?¦#_?¨Nï?¥c™?Ùò?–XŽ?”c‡?˜Šk?šO›?”Ç?ö?—´Ã?¡ù"?£õ2?ž:€?•ÌF?§:??”û?’Þ«?‡ÐD?…P?È]?˜R›?›]1?ŸFd?£ ?¢¨@?ž´™?†¼?ŸYà?ž”ˆ? G…?¥è?¥öð?žÄA?™ÜZ?š=ï?˜9e?‘`'?Šï?>¯?œ{Q?¦5´?ªaf?©@?¢l×?›r—?—æ³?–ú·?š×”?¢Y?¦FÞ?¦M ?¦ÖÓ?¨ÃY?ª¡.?¬¶?¬VM?¨Ûa?¡eó?œÀ ?[š?!#?œÃò?ŸÀ?åÑ?š:°?š—\?›²2?.â?ž5?™ò?Qq?Žo?”¥ÿ?˜Ú&?›ÀÜ? ´?ŸÊ.?‰—?ŸŽ”?¢°?£Z?¤ÿ~?§=?§kÆ?¢Ï3?™C?À‹?ú?’ Q?›4p?¡÷?¢|A? É|?œYÖ?˜6+?—­;?—ìÑ?š_?ŸU,?¡kÑ? .? '?¢³M?£C~? P÷?œÇe?˜Ø^?“ â?7?‘½x?“ˆÿ?’aÈ? 1?ÅÊ?’ËŸ?’À?”R(?˜Òm?˜Í‹?“½_?³Ø?ûÃ?“â1?“8í?’Fç?–’?–I—?“a?“ëI?—h¬?˜-Ï?”§Û?ÊÍ?ŠÓü?Œ‡?•5 ?›Î}?vó?œÜ?˜¾b?–$Q?—Èã?—gà?Ž‘?~Š&?hL?kX„?_C?‚U†?‚ty?_?™(1?Œÿ?žN^?žOX?l?šWe?‘±;?…ͪ?ƒë®?‰Î ?Œ·×?ŠúÙ?‹˜¼?‹-?…kÎ?…¨%?‰ ³?‡ã?„Çu?…Ì€?ŠÊµ?c?‘Q?M•?‹yê?ƒê×?‚ZV?†±y?‰mF?Œq?Ž|ó?’Mq?•<ô?Ê÷?‰²š?‰<?›J?–z‰?™É{?šƒç?™< ?“G•?…ƒÊ?o1å?t,d?‡œ0?Î?L¢?‡‰¶?€™)?€òB?†?‹f>?Žl?9+?‘ÞF?‘°‚?‘Ç?” q?“.?ô^?±~?‹‰Ö?‹ZA?Žn5?6ç?Œ@?‹e?_?”t?•*u?R?†ˆü?zK=?lÖA?h?q¼ï?{´Ë?s¬Ã?nf{?}¯H?ƒÞ ?€@Y?uiÈ?z„)?ˆ"Ø?Œèe?‰Ä·?‡\ý?…,?0 ?ƒôÅ?ŽMk?•*=?–`?•—¿?•@Ý?“Ù±?’A?‘°â? -6?ŠÀs?‡›`?Š¦'?Y8?‹ç_?Œ/?Ž†Ê?la?ŠHG?Š+Ø?Dê?Çx?ú?Ž8U?‹¸Í?‡F'?€ÈH?‚S¡?Š-Þ? #?î=?T?‡~ð?ƒUs?þ†?x ê?qC·?M?‹;?Œëñ?Šxü?‡Ù2?„(ÿ?í?8#?QF?ƒ±?‰j©?Ž? 2?‰‹:?ˆkf?‡|7?†¡r?Šdï?ŽS£? ?Tb?‘Ìò?‘ž=?‘¯f?‘Šê?Ž×µ?‰H?„¡x?ƒ Í?„Šü?…ñó?…ç˜?ƒ™÷?€%?€Þ?†Ëµ?‹í¡?Ž$N?Ž|¥?q+?Š)I?…˜é?„?„ï5?‡gB?‹?–??Œ‹‰?ŠÚ?‰@¶?ˆ„?†æï?‡(k?†ì+?ƒ>†?§?„Ç—?†¶º?‡l?…«»?€€?xÅõ?~aj?ƒX??ƒut?0?‚ ?„#F?ƒGT?‚šr?„î?†Æï?†j?†c?†ò‘?†|˜?ƒÃ^?‚a°?…=õ?†Ð‹?ƒe ?€Æ?ƒÚ0?…©~?ƒÛc?ƒ1–?v·?x'y?ws?v¥q?tƃ?qè?q›?r¯ª?tÿ?qMð?lÊÃ?ný”?q™•?k°Ò?c:?dÝ?l¶%?r¶÷?sñ°?q Ž?k€”?fý[?jŒ®?r†?uU?sƒ?p;?o\?mÈ(?lÛ?l£ä?nU?pe¸?mÕÇ?dÝ£?]º?^6f?aÀÕ?bŠ¶?fŽ™?k‰o?mtý?k=0?hÓg?iU?k¸?l¯?gq`?f~¬?l—þ?plR?oŽ=?j0ñ?døý?e©G?i‡x?kÌ©?m½Å?n©e?m|ì?k:Å?i,?jã¸?oÇ?pž?p‡Ê?p.?o^á?pì?p„ü?qI¦?qõá?qpÐ?pÖx?p~u?o^ÿ?o‰ -?pý?p°?qa¨?q®?p7?o´\?n³#?ms‡?lÖ??mð??m±î?fJs?[ïÄ?]\.?`?Zðk?\Ç?c:?f2:?fÇ"?j×?lw'?kd?lS?nA™?nû´?n˜ê?mý ?ncË?n°?m.Î?l'e?jГ?j!ú?h«?h‹è?jó’?gî?UÝ;??uk?GŒr?Y£_?Z®õ?IZç?De¤?W3Ã?cD?fûN?h™E?hèB?g/ -?eÝ0?gæ½?h3?g%?hq­?dáS?_[?`^?eB”?h¸?ié?iÜ?i3O?iNx?iÁ©?ho?bÛ ?\{~?]ô ?dc?d}â?b‚g?fc?jNm?k›õ?ižF?fˆÿ?fž?hÿ?hT?c¦-?^h•?`bý?b>•?_,î?a¥µ?dä£?bî¡?bT??d%?f'?g?…?g‡½?f¦¹?e“·?ež²?fŒô?g¾U?hEü?gP»?ci(?^3V?]P»?a?e7?ey;?_œf?Y!2?Z"¡?]$4?_w?_Œ`?[ט?^{.?d?cñ?`cá?^ñ®?bl;?cÛ÷?`‰?^ß?`©?^Y?Wi«?WÖy?^«?_E}?[Þ$?[úÇ?\X?]Ú?\]u?W o?V>¬?X¿?Yü?[ÇÐ?[aÏ?\ ?^ñÅ?alM?cO?c)©?c7?cÍf?d…??d!Ý?aDà?^r]?_+þ?_Oc?_á?bÈ›?dè?c!z?^’T?ZV¡?ZÖ¹?\vÄ?`Õè?dEú?dÒÌ?cü‡?a_Á?ZÎJ?X×Á?_ãÐ?cîü?dsd?dïA?e`?e,?c1?]w?YF?\Á-?_kË?[?8?VÉs?X%a?[ZÑ?\úP?\‡Ï?\×~?^[?_YS?`e?_`¾?_·#?_+?Vú¾?J"?M×?Yê5?\>Ï?[©e?^.ß?^¹æ?[’É…?9T?ô?A¿`?:†?;™?C?Hs?C¬{?;eú??ƒ·?GP«?H}o?H«È?Gñ0?E™?=ë¤?=¾æ?DG³?C™R?7Î2?0fÑ?<à ?EÐÓ?@WŽ?7.:?<Ž¨?Dà—?Fç?C£[?@ˆð?>eƒ?A¤Å?C–ÿ?Bd!?Df?E³?B]¡?<¬¢?=™½?B+?D­E?E+?B)+?9uÚ?0¿›?&ê?E¾?!„V?.˜%?8f=??ž?BÞè?CèÔ?CÈ?C¯‚?CÏŒ?Cùø?CHp?@¡B?9 ª?1„6?4n?:r˜??]8?@—M?@W ?=Ô?9óž?²?>ar?àÂT>È ?©„?Gí?(ðç?+""?/qŒ?3Dm?3/¼?3Õo?8,û?:σ?:Š?9¶&?:±?9ŒÑ?7<3?5îc?9 ?9úª?2¤u?,Ò?2Ñp?8Ѩ?8ª?.î?-Ù?-v?,ï?*´¡?+0r?,«Ï?-bR?-Nû?-;F?- -»?,K?*?)þ?*)ê?*ч?*ºò?+W\?,,Ê?,c?,?W?,K?+õç?+æÉ?+íf?+Õ[?+Æm?+Ì»?+h!?*‚ ?*H¥?*¬7?*Hk?*.?*ø,?+]?+[t?+> ?+?*ûØ?*á€?*×d?*®R?*a?)­[?)w³?)èò?)ÂZ?) -ø?(rS?'Ç5?'ðQ?(Pa?(=`?'ë½?(4â?'Û“?'èÌ?(Q>?(cj?(N»?(,U?(/ì?(q7?(I0?(+?'þÙ?'ü'?'+“?&?&«Q?'`p?'P?&ç‘?&ä?&óv?&ºÚ?' ´?'H?&±Á?%Óç?&!³?&çv?'[ø?&ö$?&?b?&}O?&Bë?$Aã?!Œ©?! ¦?#%Ÿ?%p?&Ù&?&ÄŸ?&“‚?&ªE?&èü?&•?&'?&æ?%EÆ?"pø?"‰ ?#ª?!9?&Œ?!‹’?$ÍÞ?%„?$£:?$;î?#z3? - ?!;š?$˜?$ÕŠ?"dø?"<?$ä?$Ç“?$›?$¿×?#í ?!¶Ñ?!Îa?";û?"¸?%²1?'„?%ìŒ?%†g?&u²?&áx?&m~?%‚æ?$¸¥?#?#Lg?"~t? Ap?â2? @Í?ë?Ü?" ?!g¸?!²Ã?!žx?!èä?!ˆ? \‰? |J?"`4?"@—?!1? •?]_?;?Û¦? ã§?!&~?!2Ç?!\)? æì? ~Ø?!˜?" ?!†? ‚8?¨ç?EŽ?L?‹Ê?¨U?4«?IE?]Ö?›3?«g? é? ÍÈ?Á$?ÖÊ?M?ì"? Ñ? DZ? @? ´?oý?Ú„?h?Šß?y¶??Ì?l?ý?ž?Ú?8U?t²?@u?u5?Žà?"“?h|?Ëù?Às?.¡?´?•?ÔÄ?Ö÷?X¯?@9?:®?k†?ÚË?o ?{?Bx?Úƒ?«r?¶?UV?Ñ?݃?ª¿?ìR?n ?eˆ?ÿ”?ãÁ?C©? ?ª1?É:?²?ÿ#?¤Û?ËV?r«? Ú???rñ?¨/?‹?—?ø‹?Z$?Çg?N{?Ì>?‹?v…?yâ?'?8Å?|? -°?Cƒ?8•?~?µ ?ÝÀ?Ú#?…)?¹?…?˜z?xO?Ë\?Ÿ«?ˆj????¢4? `?‡?ê?v!?ºö?7?„ ?)?“?þ~?Ð?Ú?kç?"Ç?X?ù>?ÐI?]Ž?ïÃ?5Ä?tö?ë?«ù?ž{?/?êÔ?†"?äÒ?5„?òš?€:?·€?¼—?z?|C?Wu? -Ú?1²?‚I?cx?0q?ø·?â?³€?ƒ?]›?ù^?Ñú?³?°t?3æ?ä?±l?_?1Œ?U?_?ñ? F? ýæ?þ?K?¬o?_È?-?%6?}Ñ?ÜÕ?¥? yÓ? w@? d? -¬æ? õû? ¡?? E? ÛG?”? -}?w¸? Cf?L^?‚9?ä?Bå? x?^N?”¤?Í ? ½? ˆ? ¹? -ÌA? -y? -E¶? fâ?ó¶?e-?R ?R?A? £ü? [B?ƒð?" ? S¦?³6?^³?.?z8?²W? 7? ¯D? ©«? ­Ý?pú?Uè?D{?è&? ‹(? +? Fá? iö?.™?š½?OC?rL? m€? -? f¶?ŽE? ¯ñ? -{I? -Ó§? –j?p¢? À«? -4? -v;? µ? ±°? QN? -ŠQ? -×»? µu?  ’? ŽÆ? Oõ? {? F? Ñ{? l‹? ¬¢? Üp? \? sÙ? -b ? ǽ? Ô? '? “©? T? {‰? -€»? -^{? >,? -\? ì]? -Ù? ,Ë? ~? -J=?Úä?™? §ƒ? -ªí? -¿´? -œÈ? -Vo? -3? -Qè? -.…? q ? J;? ·=? Úü? ý©? š -? žõ? „h?þæ?—´?~õ?„Î?Ná? ÿ? ¶? G? ¶?ú­?â¼?ÄŽ?Àþ?Ê?(+?Aœ?K?n~?d?]^?D1?ª¨? í?³X?î?Y°?'ù?À?”s?þÅ?¹?…ß? Ð?7?HB?Q•?d?Æ¢?El?k–?—~?öß?+>?A^?a…?vî?t?‡ý?Ô?ýö?aô?H[?(¸?¨?»}?+ã?¦Þ?n?Z ?æã?Dj?YÓ?¾Í?8o?§ë?q“?ÑÇ?Ê>?ùÃ?&O?I?*?§?'§?Ø1>þ“œ?Åv?•4?•ß?¢E?¸ÿ?7Ú?Î?7?GW?|±?q?¶5>ñ5±>äìK>äǹ>ù¼r?û+?I‚?Kð?c¢?ŠÚ?D»?.@?°4?iù?ÐÚ?žˆ>ÿHd?LR?hö?r?`v?!?W?E?¤?­W?U@?ß´?5®?†?ÇG?¢ë?&š?[C>þOØ>øÙT>þ÷@?Y·?H?J?|X?MF?Љ?\?h¥>ÿU«?á®?ÄÄ? ¨?¼?¢„>ÿ¶R?0D>þßÁ>ÿp4?y­>ÿÀ?¥§?\n>ø >øÄ>ü;>÷Yê>ý<>þ³¡>úõx>ü¶!>ûµ>÷,]>ñ/y>é>öÐ.>þ3)>õT„>÷H{?M,>ÿYz>ôÙî>õ¥Ï>ûÂ.>üþú>÷H¥>ñÖó>óÙº>öH%>÷Ó´>÷³K>ù°->ðÔß>í×ç>òO>üÈ?>ùë,>øS>þnü>ú¨å>ò ?>ì b>ñÂ~>ú_n>ûR>ú„>ûÅÉ>ü­·>÷©Ø>ñ|Ô>í-‹>îÇ>÷ì)>û;>÷»ê>öÎý>÷—Z>ø—s>ùý>ú/¾>ùÎü>ûò~>ùÌœ>ø‡Ü>ût>ýÅ>>ý>û_ï>ùûe>÷Eš>éÖ>ç”Æ>ó¡Þ>÷L>ò¾>ë¤å>õœ >÷Pç>ðw>õâ >û9°>ù{í>õs>ðºu>î,(>ì²à>èHl>î¬:>õß>ó¸Y>ð¿–>ôá>÷íb>ö2O>ñš>ê6ß>èç>ð?Ë>óŒN>õq–>õ¹>öRù>öÑ>ô#—>õ$Ú>ô`ô>ôr¯>ôè1>óvx>ðµ3>òÛë>ô‡¤>ôN >óˆÿ>ó Î>óc±>ïò">ë’ï>ðwÄ>ò¤>ðÇ+>ï@ô>ï|1>ïå>í†Ö>ïz…>ñU>ñ†>ñt^>ñ@)>ð÷>ðÔ8>ðÔä>ðF>ðI>ðt>ð‚l>ð‚»>ðrV>ð@o>ð% ->ð·>ïÅ6>ï}À>ï•à>ïi‘>îä‚>îƒ>îÕ>îÚ¾>îÂ÷>î2˜>íƒó>íÔY>íñ™>íÙÕ>í·Æ>íG[>ì>ì›>íw=>í_õ>í*Í>ìés>ì­.>ì¼è>ì…N>ëÁt>êœí>äm>ã±+>è<º>éué>ë3ž>êÌý>ä>â5v>ç¥o>æO¸>㯺>æÎâ>ê%l>é6a>èÃ(>èe>ç—>æeÂ>æ >æn>áÊ->ä/»>è#Ÿ>é}>èˆÛ>ä3b>â)>äVk>åät>çØ£>ç»>çQx>ç7>è \>äv»>Ýžë>ã0‡>溰>ä{>å\>çR>è+¯>èC>æß9>ç<ÿ>ç¯È>è W>çáM>ædÉ>åOd>æ™w>èy>èno>ç·3>çrW>åö">äP>æ@O>ãùÑ>áÑæ>ä^ƒ>ã—>å!>æ(Þ>ã‘©>ßò'>âcß>ࡹ>á(¿>äMê>åÁé>çc>>æxÙ>ãª>ãHÐ>ÞaÑ>а>Ú4>ÚïÞ>Ó½í>ÔC>ØâP>ׄh>ÛÀ¹>áÿ>ÞÏb>ÙŽT>ݨX>ãK >ç8Q>æé>ä‡{>à¡>>Þ*>Þñ>ßGI>Û,H>á²Á>ä°G>â!÷>áØA>â …>àÚ|>â©Ü>å3¼>Þø>à’>Ù¸—>Ó$Z>ßA¹>à_à>Ýoƒ>Ý|E>àÁ>âc ->ßi¢>Þ›>Ý>Ücœ>ÜŸ|>Ú´>×ë5>Ûˆ>Ü»5>ßQ>âúh>à©÷>Ü®>Ú]5>áä.>⨓>ÞÀy>ÍJñ>Í™ç>Ñ¥(>ÕÇÁ>ÜIÁ>×ïK>ÐÆn>ÚSó>ß w>ã`%>äŠÝ>â”>à¡ÿ>ßb(>àN>ݪÛ>ÔÙ>ÈA>ÒžÑ>Üå:>âÄ>äèG>â•{>à=ã>ݪe>Þò˜>ßî=>Ýòß>Þ“×>Û»>ÔÃ>¸•>~œ“>…x>°m¹>Áæ>Чý>ÙóÀ>Ûö >Ö Ù>ËÚï>Ä9¾>ÓL>Ø¡u>Ú‹õ>Ú#>ÖÀÑ>Ðøc>ÒË)>ÒA>Ízo>Á‹>«›ÿ>óf>?H>˜6>Xèÿ>• ô>¯Z€>¿>Êà©>Ìí>Çva>ζü>ÖQ|>×Rä>Ùìœ>ÚDÜ>Ú(>Ø|>>Ö6A>×~á>Ùå>ÛÀ~>Úüä>Ò1N>ÒÓl>Ö+ >ÙÙ>Ù„>Õ*u>Ò&:>ÍÏç>Å¥î>Êyè>Õ®z>×ü©>×%€>ÖgT>Ó,>ÉQG>Ͻ>Ô#¶>Ö ->×͈>Ñuã>ÔÔþ>ÙÁo>Ù* >Øa‹>בÞ>Õø$>Øå>ÙT\>Ù¢¸>×î>Õ>ÕP“>Ì ~>Ç!‡>ÍP¥>˯>­¦>²ˆ¡>NL>7èó>5Ç>‹¨á>­µõ>¼·y>Ãqh>Å@™>Ã#ó>Íù»>ɯ/>ÉøÜ>Ò>ÓÑ#>ÆÛ>¿‡>ÑÞ!>ÒŽ‘>ÐŽ >Ô"3>Ï;ê>Ò[>Òöô>Ö=²>×:v>Ò½>Ìzw>ÍYª>Õè[>ÓJ4>Ó¼º>ØÅz>ØÏH>Õ|>Ë^>Ê– >ÔÏß>Ö¹ý>Îî>ÏÔ>ÔpÚ>Î)>ÍŽ„>Ó.#>Ï:>ÄV#>ºÕ*>È&f>Ï™v>Ê‚±>Ô+1>Õm>Íì>Ð(ä>ÔäA>Ô~>Í-Ó>ÈAÓ>ÒŒ0>ÖÚX>ÕFÓ>Õ}m>Ô€u>Õ™Ä>Ö•V>Î'>É*>É‚é>Ñ´É>Ô{ó>ÖØK>Ö,&>˪>¹)æ>»¡>̲:>Ól>ÔÄ–>Õ„ê>Ô´>ÓX´>Îñç>ÂH—>Îrw>Ôß>Ô†®>Ô ->Ò8T>Í<>ÆDó>ÍÄ<>Ñ’Ï>ÐHB>̾>Γ>ÎÐö>Ì >Ê’ô>Æ{>À[ì>µ!6>«¬>³'P>·¥<>À~Þ>Æ÷Ô>Ǥ>ǾZ>ÊK>Ê]Ò>Ê»‹>Ê¢à>ÍÎ>ÐY±>Ð|Æ>Î_ö>ΨÇ>ÑCÈ>Ñ0N>Ñ)‚>ÒV6>Ò£è>ÒÁ>ÒX·>ÎÄN>È Á>Ï…È>Ò¸G>ѧß>ÐA>Ð]k>Îpk>Ç,Ú>Ç›H>ÐZ>Ò(„>Ò<·>Ò^ˆ>ÒNì>Ñí6>Ð<ó>Íx¼>ÎN>ÎþG>Њ›>ÑE4>Ñ$n>Ðúj>м‚>Ðo˜>Ïnß>Ì©B>ÌWQ>ÍϬ>Î1n>Í?>Ê•‚>Éÿ>ËPã>Ì‘3>Ë‘Û>Ë >Ê–Ì>Évº>È·_>ÇŸ‡>ÅjX>ÀhH>¿›Ò>À>½°,>¸8™>°å¹>¨Š°>šj«>“ìœ>¡ëì>®G>³ñ”>¹'D>½5$>¿É–>Á¾|>ÄŽ>Ãï`>˜>Äáé>ÆÒ¥>ÇÒÆ>ÈÑ>ÈgC>È—Š>Çê[>Èš>ɨø>Ƀ#>Åoo>´¨!>¸‚µ>Èò>Ê6b>ÉàÇ>Éã¼>ɸ>Æû>½b×>Á ˜>ÈÒ¸>ÉÌÊ>Å×Ò>¹,>ÀR3>ħ¦>¸ïó>ÁE>ÆôÛ>ÇÂ÷>ÇöÓ>Lj<>Çß3>Åç\>»#Ì>À£´>Çi>>ŸÃ>űè>ƺ¸>Æ»ó>Æok>Æþ«>Ç>ÆÛŠ>ÇM§>Ç,>Ç2>Çø>Çã>Å¥ä>ÃÅ×>ÅVÅ>Æoá>Æ -b>ŵ´>ÅÛ¼>ÅÞ¥>Åa¢>Ä:á>Ä•i>Å&>Ä«>Ãà>Â9>ÁVW>Â1ó>ÁËy>À F>Á½…>Á²`>Áç >ÁÄv>ÁRò>À£=>¿ˆæ>¾~ö>½Ïw>¼$>»çº>¹~#>µ†¼>®:å>±Í½>¯Òq>«‡Y>¬œ>§’Ã>–X>Šå¬>…Ô>–ú„>£0|>¦R·>§“²>°lŸ>±ñü>¯˜l>´]Q>¸MS>¸~>¶M¡>³‹D>µ5ý>µ›T>²Œù>´ >µ$>º­O>½¦&>½¼µ>½î•>¾']>¾'Ð>¾6“>¾+j>¾>¾ Ø>¼Ô#>¼ûH>½VÊ>½2B>½¤‚>¾F>½ãè>½jŸ>½Š²>½Kâ>½ð>½jÆ>½Šß>»|å>ºÒþ>¼¬:>¼Íj>¼’ >¼ßA>½Ü>¼ïò>¼Ÿ>¼Æë>¼Éx>¼‡‰>»×ê>»º>¼ Ø>º!>º_>»\>»ga>ºîº>ºd>º‚ü>»=w>»yè>»[O>º’H>¹Qv>ºví>ºÂr>ºR¢>º_<>º+7>¸mx>¸)>¹«>¶¥¤>·ðN>¹°Æ>¸ë>¶ÙQ>´h>¨ìµ>°ÜŸ>¶Õ>¯º{>¦Aÿ>² >·Í‰>´ì¿>´¦;>·øÕ>·ŸX>µä>´áj>´û×>²ðS>®~±>³ø>µ‹>²© >³ØÒ>µòÏ>¶m>µ{>µpl>¶Ï>µÊ >´äâ>´„À>µ–>µ€N>µbR>µ%í>´ú>µ >´à•>´q…>´)Î>´>³ÿŒ>³¾P>³E+>²Çà>²c÷>²Jã>²)à>°òÕ>¯uå>°‚>°•”>°>¯ŽÚ>¯Ð>®·>­6©>¬”Ð>«Ž>©¶l>§Ý>¦X”>£Ö>¡ ³>õ>–Ò§>‹‡¯>vsò>|þ¦>Ž:m>—¢¢>Q1> ÞÆ>£œ>¥‡¤>¦ÐÛ>¨Eé>©0>¨1Ï>© >ª5ó>«qü>¬ƒC>¬í>­% >­>­W^>­½ò>­E'>¬Œd>­|¬>­›X>¬[R>¥³v>¨@Î>«Ôi>­`€>® -S>®!>®®>¬s“>¤õ>§ºE>«ü>ª+Ð>¬†â>ª‹¶>¨MJ>« -2>¬ž>¬§0>­L~>­Š>¬>§áÞ>¨Ü>ªÌ¡>©çn> [X>¦ Ð>«Ýð>«·H>¬(ž>«²e>¨Î¾>¨ÅU>©­>¨ÇV>¦Hè>¨{>ªlB>©~C>¨N¯>¦Ë>§õ>©…K>©»¬>ªpM>ª)>ª)>ªBÌ>ªy:>ªUH>ª]¨>ªIM>ª!°>©ø>©4á>©"%>©b§>©k>©Qf>¨Œ>¥Ý -> â«>£„ü>§>§ç >¦¶º>§™†>¨*@>¨‰ª>¨Bß>§ð´>§ºc>¥‚W>¦zm>§#³>§*ö>§¡?>§¨n>§Ê>§t!>§=ß>¦hÊ>¥Ü>¥X>¥ôþ>¦„:>¦@°>¤Üg>¤sè>¤›˜>¦+…>¦8‰>¦´>¥}^>¥P˜>¥¾ì>¥¯=>¥;¿>¤)C>¤µ>¤yç>¤c#>¤–é>¤—>£–ê>¤W€>¤’>£·—>¤>¤HÐ>¤‚>¢ÈŸ> t4> VL> îÚ>ŸI`> R>¢á¶>£8>£È>¢¶>¢Ê¿>¢øi>¢ë·>¢ŒY>¢rP>¢Ka> 3 >šlz>œ*Ñ>¡ «>¡}{>ž×8> ¦>¡6ô> Ä×> á½> 3Ê>žVF>(m>Ÿ%›> òµ> äÑ> ²¿> ˜f>Ÿ‘>™í/>œºd> .> ê>žf·>wë>ŸR->ŸZÛ>ž•ö>ži>žÇ\>žN>ž$æ>÷¨>íI>žt‹>žNg>às>ã‹>åí>Yt>cS>,Û>}>œ>œ³á>œ´ >›²á>›:ˆ>™e>š›“>›KÓ>›9E>›ø>š¹á>šSP>™åô>™gv>˜°¥>˜'1>—ƒ5>•æ>•:„>”eà>’Öà>‘© >Û>MZ>‰Íî>„ºÜ>wÞ¢>Yl±>Uôù>t%ƒ>ƒX”>ˆ;k>‹Å1>ŽGI> A>‘4ï>‘þŒ>“¡í>”Œ£>•Æ>•u:>•ç|>•Ò÷>•øf>–ÜÀ>—@>—[¼>—‡>—£:>—¹>—½þ>—Sr>—2j>—…>–é>•ð¦>–mç>—‘e>—z¯>“>Áà>–¿C>—uƒ>—sÿ>—„¼>—cÄ>—e'>—Ié>–%™>”p>–—j>–Å;>–Gê>–ká>–Å>•÷>’û>•Üo>–u4>–1P>•ŸN>–.>–">•‡¿>‘‡>“…>•uª>•n>”á>•²>•I±>• >”ÐÜ>”´>”Î >”M¶>”Þµ>”V>‘tB>’ß*>”`7>”jq>”O³>”,L>”"*>”3ß>”:>“Aº>“*>“Ïí>“€>“_¹>“’â>“„>“a¸>“I)>“5{>“p>’îð>’è¼>’ß@>’ºN>’p>’ 2>’h>’r©>’W$>’3R>Ñä>Ž\>‘>¹>‘ç‹>‘Í•>‘y>ñø>‘Í>‘]†>‘)©>™>ÐØ>Åò>÷Ð>»Ù>²ñ> ”>ww> ¦>zµ>ê}>G‚>ù:>ŽÍÃ>Œ¨>ŽÐ½>6Ÿ>˜¶>D_>ZL>b~>HÙ>Ž÷‡>Žu>Ž|ø>‹>Šâp>Žx–>¿þ>ãr>ŽrI>Ž\'>ŽL>Žœ>Žƒ>ÂH>8Ñ>à >«Ã>Z`>ŒŸ>Œ£ò>U‡>^í>7Å>)+>! >Œ•”>‹(>‹FM>Œ·Ï>Œœ®>Œm¬>Œv>ŒZX>Œ6Œ>Œè>‹ ±>Šx¬>Š`þ>„é¦>~e^>‚&]>‡{>‹ä>‹U·>‰RR>‡o©>Š&ÿ>ŠÜ¿>‹ Ù>ŠÄ4>Š°¡>‰áª>‰ÆX>‰ç$>ŠB>ŠZÎ>Š:•>ˆÎ¯>‡Sæ>‰š”>‰j>ˆ.Š>ˆ*>ˆt†>‡çƒ>‡–v>†¤â>ˆƒh>ˆé_>‡×z>‡ >‡Õ;>ˆq>‡ÏÖ>…Ô;>‡Þ~>ˆÑ>ˆQ–>ˆ4T>ˆ_†>‡ê>†Š÷>‡o>‡ý`>‡ãU>‡Ûå>‡šÙ>†<ê>†vï>‡CW>†4>ƒú>~›;>„E„>‡÷>†ó >†ÂÓ>†BÊ>†…>ƒ>K>g¬>…ø">†G+>…Ê¥>†9>†ß>†#>†Ü>…Æñ>‚Ìi>‚_>„S>‚™µ>…"F>…q¤>…\>…<Ì>…!G>…º>„ê&>„´m>„‹¿>ƒÉæ>}’ß>‚H>„b¢>„Cš>„>>>„®>ƒV >ƒ£«>¤ó>mgë>l|>|];>kn£>nö‘>}G>>‚Ë4>‚A§>‚‹ª>€Ìf>t~Ð>€ºº>‚¹+>‚ö>ƒ>‚B>‚x^>c–>vf>oa>“Œ>ùb>‚ w>Òg>#K>€8à>~à¯>vèñ>{ž">x»Ú>€¶>€ñî>€À>€Å`>~ÿn>ª0>€¨'>€½>€“0>€u">>z[Þ>súK>|†>€c>]¦>}Ùú>~¯±>~¥–>~²Ý>~Ò½>xAû>né>{Zœ>}èÆ>zIÕ>s7Î>zMu>n›A>r>;>{®,>{#ª>{pé>{È.>z›¼>t”©>yý >{ÉÈ>{´ì>{ˆr>{G >zác>w¤J>u.Ü>v[²>dç@>oUÐ>xiG>xßB>xEx>u|ì>ojÞ>p %>v6>u Î>t+Õ>s´z>tQ:>sÆÎ>r°^>qZ>p>n3Y>dñO>g¯r>i¯>gy >d|Ð>`m“>Z÷_>Rõ®>Eº>,¿å>(s>A£©>P_D>X….>\â:>[d>_V?>a&>f¼”>j->f;š>g¹>mCQ>n;Ö>n«'>lss>d=R>fZ¾>jI >o?$>pÒ>p°>pÜ>pý’>q -l>pñZ>p»Å>péy>pòa>nð«>m9f>ff=>l9¼>pmý>pžÂ>p‹R>pa¯>oÚª>pÐ>oÖÈ>oWv>o¢>nsü>okÁ>o­B>nø.>nsN>n‹>oC>o"~>oÑ>nÌò>n€>ný>n~J>nY†>m¼•>m>mÀs>mŸ+>mšë>mtÿ>mŠ>m Œ>m“>lòœ>l5>lð>l^ô>l0>kÉ/>hÚü>j¡æ>iíÐ>ix>eÃM>g¾>fÝ>i™‰>j¬›>iäb>fàÛ>iJ\>i»œ>iþ‚>iŒ ->hÜé>i’>iuI>irt>i\±>i'N>iÓ>h³Ë>gÙï>gµš>eÈu>^ÕÜ>_ˆ„>g{s>gŸ¬>eé€>f >cÌ>f(Ñ>g>fÿ>fl[>d_³>eïÝ>fQ7>f"B>eø >eÉ>eÑ›>e°«>eYg>eP,>eFu>dÙç>dn?>dV?>_Z>X¯>\¾v>c‹ñ>cfê>cÖØ>c¥W>c¨g>cŠË>c\•>c*z>ce>bÞN>]ÉØ>R3>Xl>_:>^2Ã>[úc>^q>\óÏ>`7‰>^7Ž>_¾>`´W>`Àç>`Ÿ+>`8v>`9;>` œ>Wãõ>TÁ!>]š>[‡í>^>>_XÊ>]¾Ÿ>^Y¬>_(ð>^ýN>\U>YÆÀ>]½(>^vž>^ Û>]Ò¾>]_¹>V¸™>YòŸ>[ÏA>U‚{>Uu>X¦ >V|H>WBÉ>\g>Z·Ê>U>Qæý>N -W>Vh£>Z&ü>X_i>UT—>Zlñ>YÜ>W÷¢>Z î>ZP¢>Znî>Z ª>YÓD>UCN>X‚<>UX>Q‚>T>XÛÿ>Y‚Š>Yt9>YRc>Y)>Xï”>XÙv>X„6>WÄ>XJ©>Xû>Wìè>V°…>Vâ>W®=>W{>WV%>W>W >UÃõ>VCã>V®ö>V¡ü>VxØ>V.>TN$>TQF>TT>U’]>Uqâ>Uo¥>UR>T¹>Se§>TzÛ>TÜ">T¸Õ>TœU>T+>Q¸>S´>Tw>SÜ >Sm†>Stz>SL>SD»>S@n>Sœ>RŽA>Pp>QϤ>P>X>K(â>O¨>Q—ê>N‡õ>O”Ù>MÄí>Ig>I©>OsN>O5ü>HÓ~>NúH>PW->Jkä>ImK>P ->Oc¯>JR>Lu>O=º>MCl>JÇ ->JæÒ>IyY>H>;¸>KTS>N¤Y>J>Bí>HO>JCª>Mø>MÕÞ>MÄK>MUë>Fþ7>I=|>L“;>LŇ>K8 >LDg>LÄ@>L§Ù>LrÎ>L:c>Lf>Köš>KÖÔ>K±f>K€…>KE>KO.>JÞñ>JÕE>J²N>J¾õ>Fî><ÕŽ>@õn>.œ>?§5>I—(>Iô§>IÞj>Iƒ—>HM?>EßJ>EY½>B)D>F{Q>BÏf>H$>HºW>H’B>HlÛ>H>C·>DMë>GÛ®>Gs;>DX>F$î>Fã&>CúŒ>E_ë>F%í>;  >?Sû>F]W>E°À>@(,>Eíß>D`>?ç>DÀF>E†‡>EOx>C˜>>À>BÏ/>Dóž>DÛk>D¶£>C¿Q>=#>:/>9€@>B€c>@V>8Ü>6?e>@>>CM>CPr>C0R>CU>Bî“>BÉÅ>B²Í>B” >Br>BHð>B&l>BÅ>Aí%>AÍ>A¯…>Aˆm>A]ö>=2>îŽê>þD¾?²l? V?Ø?FË?¼y? û?? Ë?[Ø>ôq.>à¨)>Îp >Ç ->Ív!>Þúa>õM?)î?Ź? ó>õ0Ó>å™Ù>ØçA>ÎER>Å—>æ³>Íák>âÇ>øÞ?¥Ê?ξ>÷Ø >ê 1>ãÑz>å.x>èì”>é3@>è §>êò»>ïÊœ>ðÃA>îû×>ñ¿Z>úÈÓ?fŸ?“h>ýé·>û?6?ã@?-6?g? Z§?Ô>éÞ˜>Úܶ>×Yt>Ù˜T>Ü¿>Üq>Ù-H>Òíc>ÏQ=>Óàí>Ýêw>ä‹G>ã`ì>ߘ>Ý~õ>Ü}>ÒþÍ>Áô>²qk>¯%'>»‡’>Ò¢>êø>øBÓ>ûI¦>úŒ+>ÿ ×?c[? ík?RQ?$K? -O*?|?(r? ¶Å?)?×:? Û’? †™? òü?ïÓ>Ü5Ü>ÎQ¼>ÉBp>Ìr^>Ô15>ÝR>艫>ô Î>úÒo>ùhŸ>õ+>öàV>þÇ‘?=­?}>ú.N>ðÞá>èÕq>ä&4>ä1>>çn¹>ë>ïž>õ1j>ý-µ?6?vZ? -èÉ?}?¯ ?g†?vÄ?NÑ? «&?ü¿?*¹>ôÁ±>í©>ì®>ïÊš>øYn?™? Œ??›?Æ(?v?“2?p.?d? &.?X¿?Ô~>ú:É>ín>Üæ>Íy¹>Ä“z>Á_ ->¿^>¿]">Ç9Ò>Ø${>ê¦&>ö‡¤>û8i>ýCÃ>þ#>û '>õ‡z>öKï?Hv?N¬?ƒB?T¼?çT?‡ý?Å?™Ö?™Ú?H¯?B^?u—>ðw|>ÒÜÚ>À4‚>¸æü>¸½Z>¼Óë>Å”>ѳ$>á[þ>ðO>úG>þ– -?G?s? -½ê? ËÒ? »_>ý6ô>â]•>Î >ÆÜs>Ìò>׃>âë>íó>ý?¬? ¸u?,B?G?î#?Àû? -qÊ? %O? -ú ?­?÷þ? ?#k?"5t?~õ?«â? ÝA?? >õ„…>ë\$>å¡æ>ß¿@>Ù•>Ø“6>äç³>øæÎ?>®?,?0ó?8˜?Â…?Dý?k?§¤? -Nz?¥?#…?vÌ?ûë>ûŒ >êûG>Ù^ç>É¡>ÁC}>Ÿ~>ÖQ?>êr]>÷õ>õgÇ>æ `>ÐK>¾äŒ>¸(”>ºã_>Ã}í>ÎÆ>ÕAÍ>Ø%;>Ý[V>è–S>õN6??Aj?À ?¬0? Øl?#Zß?d3?D¡? -?]?n>?âÄ? -¸á? -šI?^?QÄ?ºB? x ?+€?#?$‚?'Tœ?)+Ã?+6¿?,Æè?--ÿ?-U†?.~?-‰?)ȱ?$>? à2?!šå?$ã¹?(ˆ?)~ ?(†-?%1ˆ? U®?:?Ç#?3?"ý¾?#Ë{? Ð?Ÿ_?# ? ™G? ¥ ? À? Òé?¡Ò?€‹?O?À?É;?§í?FÒ?h=?uÔ?¼f?"T?wÈ?y?(Ÿ‡?/p?2B?4¼?7ûâ?:“÷?9Òf?5Á?2I?2zÊ?5;ô?8hŠ?;„î?=„þ?;;$?2á¡?(=Ž?" -°?"­?"¼È?4ó?¾?¿`?cE? Ïf?(o?,O”?-Ä?+µÏ?%ÜÞ?SÊ?>?ßK?”?”Z?'Y?+$´?+©á?*”G?(½Ä?$ I?f›?vL? ¢m? -Ùµ?æk?!?((Û?( å?#‹(?­°?j?Öé?$æ?%F¯?)<[?+9ý?)óÛ?"~÷?r? Ðÿ? fè?f-?Úã?mr?^³??\?gd?m-?í ?ù™?$oI?*nI?, Ü?'¢?ÚG? iÌ>ò/‡>ç|§>û';?Zä?‚?%[Ñ?'ܪ?*Ä?-l¬?0 q?/ú¬?,ó?#Oø?Ô£?¹Š>îÒh>ã…v>óŒ¡? j?Øf?*Â??.0œ?*dü?!Ôc?û?Ð? - ? -MùK?? ¾?"èÊ?/xÐ?4Ž,?1·&?'xQ?=R? -ì‹?uæ? šî?? -D?uØ?ò»?&l‹?,´'?*E…?#ý³?#IX?*ZH?1-L?/ó¥?' â?ä?yW?ij?ïÓ?¢Q?*È?3U(?8 u?8ùÇ?8óº?8×W?5ô‚?/P?'}2?"ÙÎ?!^ -?!BÓ? Ò:?Aš?›Z?eI?ª‰?!XT?%’B?)–ý?*žW?'Ãù?"±?L?@²? l_?&T†?-h?3—þ?9`E?<¼ë?<.z?7þã?2Ê?,ÿ*?*Ö–?+¸?-?-4?-à‡?2’½?:Ôø?C@{?Gý&?Fjè?>°?4Y~?-D ?-åç?4v¼?:U¼?;PÙ?8›?5O7?1‡3?)Šô?ÊA? Ç?Ré?b=? xÿ?Ëp?+H?%U¿?- ?6 ?>Mü?BåO?C”°?@Eï?8?-Åu?)«?.Bß?9±?A~'?BŠ!?<ÒÀ?4E?,Ä$?'—)?#ëô?!éÈ?#q?'[Æ?+î/?-ªs?,3t?*“ù?,Ä?/åV?3KE?5ke?7rþ?8æ¦?8 M?4é&?/Ez?&Ÿ?ý#?¬õ?A?ËC?›â?$?*ëh?/ƒ’?2˜º?29L?-"ñ?'S¥?&¶s?,–\?6+3???ó?B ??=¢ê?3Jú?)’é?%)?&b³?(áU?(ó|?&ž¦?!o;?‹?Ús?™Ñ?,ß?,¥o?9F{??’™?B?D ƒ?F#?Eý¯?AY?8±ž?2?}?1¿?3û?6øt?6žÞ?2õa?/C-?-09?*À?'ñ?$ó¢?(y?0B?9œ›?@Æ?Cd÷?@ïÍ?:´Ö?3É?.@†?*ë?&Áa? +„?aŽ?¶•?wý?¯z?$ìª?2%?9XP?:u?6þ?2çN?1,Ú?4sÕ?:®L?>µs?>·„?=c?>0d?BÊT?Håš?K8?G'?BB¿?Bƒ?F¢?Kƒ -?MU)?LÚK?Kæä?J]>?Héå?IüC?MM½?OUâ?M °?Hx=?A“4?;£,?9ò?=7Ô?AÍ8?Cä?C';?AmÚ?@§€?Ažd?DÚÅ?JÁõ?O²|?Kåí?<Ù?(g/?´=?Ú?%…X?#rÙ?n?Ç¿?Æç?ÒÃ?#¾?&å'?(Öy?+4§?/<^?3bÛ?4Ñ?1d?)ßl?Y?E^?Ÿ\?†?û=?tã?¤?»?Ì9?Ò.? ?Ë¡?'°6?41ª?<Üç?>aÙ?;Ãt?:òq?>+>?Cƒ£?HD‘?JÁS?KN+?KÚ¤?LëQ?KF°?Cj1?7}µ?-¢Q?(Æ?'µW?)1 ?+÷?*|x?#–†?ãm?¬A? ãÈ?(¤†?+`J?)f?(Ÿ¶?. -?4ú?5%‘?*¯7?Fï?+°??<,?(©ù?1µ•?5°~?6Ñ ?;f ?EìÅ?Q Ö?W‘?VŒ9?OS ??\ˆ?)Z~?™h?!Ò?‚È?$:?(t?,€à?1Íê?8.Š?@?H*;?Lѯ?LÙ?Fí??d}?7G¶?0e½?,È ?-?-üµ?,u ?*äÄ?,Uö?0@×?6-ü?>Ÿ‚?H‚?NÆ·?P¶˜?Oç ?Oÿ?R?U«Á?XÖ³?ZQ?Z!y?Y °?V]“?Q9Ð?L ù?J´?MG“?Oœ£?Ox?L4/?GM?BB?BV.?I°æ?S%?WA?U¸b?SNÕ?R6?N·?E2ç?<âí?9“É?9PN?:^ƒ?>AR?Dkà?I”ë?J¡;?FL?>¡r?7T?3 -˜?3ö?:ø?Fû?R&?[r?^_?Z`U?T É?Pœ]?P£?Oç+?PºÂ?UùT?_¨?f=¥?f¥/?`Ææ?V ñ?IÅ?:b¨î?E*‹?LmI?V_ø?bz?jÖ?l98?k¨?j£$?e€=?UOY?<Ø=?&X¯? Ä??)/‡?>¦?R–(?^<#?];ª?T“ê?Qð?WSM?ZãÑ?UŒç?J~?:RU?&Hù? ï?µD? -û?x]?# -¶?7Ë?L&û?ZÝÈ?a=¤?]Š?R<.?FR£?=†T?5c©?-É.?'^ø?£†? më?dý?>?)¯l?Bœ?UE?eè;?t¨\?zØ\?p¾D?Xl÷?Awã?;ˆ?C–²?NÈA?U}?WÁ·?W¼?Y -?Z÷?U¨K?K ?Bø'?> {?64¾?.A?0ö3?A6ß?THÇ?`~ž?e´ì?h²æ?lzY?p®›?tÄ?zÔ'?¥9?„ؾ?…Õð?††?ˆdL?ˆú´?„Ã?u"?fY½?a2?^Üd?[—‡?[:?^]0?^Xi?WDÍ?Lö?DXÊ?<þú?1Д?"îà?lW?$ßÅ?;?QÆ@?bî?q‚³?}º¸?to?Òã?x?rM?v!ð? ?‡¤D?‹B?‰øY?ƒd5?s.U?`>ß?RQ?Môj?Xu ?jYä?póa?ci?Ny??H¿Ô?VÕê?d=¯?^¨[?JÐÞ?8¶¡?0k?.X?-Ó#?/|?2:Ï?1š?&¶5?cP? -`?j`?Îë? Ê?‰ª?¦D?“E?qÌ?'0 ?;­G?RŒ7?c=É?kò?p »?s - -?y–Þ?‚š?ƒ1¨?€?fËá?o¤?uÖ÷?u«/?t_?w¿?}?}=?t¸]?k‹?ck}?^Õ)?cûý?sc?€ö‰?„³é?…ÿÜ?‡§?‰ˆV?‰@?†›!?„Ú?ƒ¾]?‚%Ê?€²?}Ð(?wdÑ?o/Ð?i+t?i'ì?m¤Ê?q­(?oxó?d$?S?>Èš?'¿û?å>÷Ò>п>¬1V>¹ó>wn>zvK>“Wt>¸}'>ålÊ? "Y?$"m?9xª?G£?MÓª?O¡r?O Î?TLÓ?cÈ&?s±?w×A?t/t?ue?}ðì?‚xq?ž¸?}ó?~$»?iÙ?€œ?wŸ?u”Œ?})?Ù}?}fP?gî­?Np?= - ?2<ˆ?$•¦?õû>çº>´™>’Dè>Š¨>žcc>È<Ï>újN?˜i?(Š?;Þ?Loš?ZªÐ?gÝý?vÍ‹?‚Ü€?ˆ&?‰…o?‡Í?…â²?…Wt?…ÿû?†×Y?‡”×?Š%½?ŽÉ?)?¨¿?’p§?•\t?—_½?–ü;?”R­?¢µ?ŒÃb?Šƒ•?.Õ?”+ô?™àË?›ÃO?œ| ?œeo?—d>?R ?†s?‰ü?‘P?—àu?š9û?š±ò?›'¸?›|÷?›qß?›Q0?›’e?šØ?˜IM?—ï6?œ˜¹?¡Ù‡?£]?¡n?  ?ž—ø?œÆ2?L?¡s?¥i±?¦1A?¢0?™hý?kŽ?‹Óm?‹Ë3?Ž±q?“r?™‹? ŽÐ?§£?©ª‰?§‹b?¢Ùõ?Ÿ§å? RK? `¹?˜ÃS?Š“U?€ú¼?…øò?”‡ü?Ÿƒ'?£™w?¤€‰?¢ ø?ô„?™Sº?–Wí?”ºp?”ˆ?’Zõ?4g?‘ï?˜I(?“n?›Ì¤?’¡Œ?‰r?‰,5?åÒ?”%?•b?˜¡?ž(´?ž;?–†G?Va?’»?˜¯F?™†Î?“F=?‰L8?‚ì?‚êÂ?ŠÎK?”Ûç?œB?ƒ?™N–?”N#?’_?”…+?™|v?žq ? ¸?ŸÛA? X?™‡ï?—?–/?”Ô|?ǹ?‰Øð?…Uú?€ö:?t:?]Uq?Ag?2+æ?<Þ›?XÂü?tʸ?„y0?ŠM?ŒüØ?Žc?Ž¨)? ?’ˆU?•´«?™:c?œœL?Ÿ¾’?¢8º?¡c9?œÂ?—Ó?—…?™_?™ñæ?™u‰?šið?›çî?›>_?˜¶ž?–¡™?–¬­?˜â?™9?•ù¬?‘N£?óÔ?“>l?™œe?Ÿ×`?£N?¥[U?¨Hx?©Ùå?§Î:? ìu?—%±?‘‡o?”ö·?œ˜ß?¡X#?¢[…?¡”?žÈç?é‘?ž‹©?ïš?š·?–€n?”ŸÔ?”ö–?–UÝ?™X«?œÕ‹?Ÿ„? N?¢Ïá?¦v?§©À?£¶r?™Åa?—?£è?™Ñ?ž½?œ7b?“h?‹.?‰?›??“P?•Ü?•Ù?”Ä?—ìD?œ®?›á©?—‹Æ?”ÕÕ?–.?™k—?™¡x?”ŽS?¶ö?”;Þ?›¼?ž™ø?Ÿ½G?£a?¥÷¹?¢ÌÊ?›òô?–¬Ù?’Û?y?¢6?‘/M?’VÛ?’oA?•.?˜Tu?š‹]?œy?ž‹? m?Ÿ­»?žæL? ·U?¤Œ£?¦œ?£Ët?œ‘ë?–ó?–é?šdÝ?›A?Ÿ…?¡~/?¡¡O?žHÂ?—ÌÜ?¯8?€N°?léó?v ó?Œ œ?šùc?¡}`?¡·ü??—³H?•B_?“Â?¨å?‘…?‘ß÷?‘Ñ`?”1?˜‘:?šêû?›!‹?œƒ´?œ¹ë?˜ÆÇ?“›Þ?‘:%?wA?j?‘í+?˜ñy?œå?š2è?–øs?˜¿-?œ_Ü?›!?“ß?‹L?ˆQl?ŽÙù?™S¬?ŸØ ?¡Ú×?¢J? !Ý?›ìt?—ç?“'š?Šðo?ƒh°?ƒâ?‰?Œ¸?‘“?£=?žóÃ?šà3?š;¡?IR?¡Kd?£W?¢®˜?ŸA?œ0%?ž s?¢ã?£{”?£:N?¢ì"?¡‚.?Ò¬?™A“?–NÚ?•{«?• ,?•:?–Šì?™®?œ ?ž'+?ž1n?›éà?™-&?™Á?ší -?›cæ?šr?šB-?š›K?šjð?™D’?™MÃ?šþ ?œPP?œný?œÍ?ýÝ? I{?¢hØ?¢y•? -…?ï ?(?çB?ž¬þ?ü'?œñë?›¸,?›1Ê?-?Ÿ§G? ˜? |­?Ÿ¯È?žêä?ŸL`?Ÿ‡?žK“?ž5?ŸŽ¼?Ÿ¦_?·q?œ»½?œâD?›ò?šW?™ŸÇ?›ê?œæQ?ž6?³Å?›ð?™|I?•„ú?’±?’"i?•ä„?š p?œ?Œžq?ŠaÆ?‰Í?Š‰U?Ž{©?’œ¶?” ?”3c?”e?”VÑ?”X?•=?• a?Îí?‹V‘?Š¤‰?ŒV?î?§?•d?õÿ?Œ“?=?—?Ž°?ŒíÄ?†nË?‚T“?…I?ˆáé?Š|Û?¹^?‘ z?‘5l?te?8é?b?‘†N?“ª?”2Ÿ?’lI?qŽ?‡y;?…8…?ˆƒµ?5y?Sl?ÁN?òÈ?Ž€¼?‹±?‰¶5?‰æ}?‹lƒ?i?‘àÙ?‘½e?‹m?‘;?’Çp?’ÐØ?‘F–?Žðæ?ŒVø?‰Zr?‡.æ?‡ªœ?‰»Þ?Š’1?ŠkÒ?‹L?‹,‡?Š¢á?‹©Ï? ?ŠB ?…÷²?ƒÒÓ?…8ê?†Ò;?…‡£?‡Œ˜?Šk×?‰˜ì?ˆ?ù?ˆòÂ?Š×É?ŠõL?Š3?‰ˆú?‰$?Šgì?Œå1?ŽÂÛ?y?Ž™z?Œ--?‰Øö?ˆè?„.ž?sæ?arf?b§?pç?pyÝ?_•Í?dC ?€ìh?‹0â?ŽE?qö?ŽÞM?‹,W?< ?b²ð?W^é?oÏÐ?„vq?‡,H?†\?†Âû?ƒRz?€[?‚ý ?ƒÕÔ?‚º-?ƒÉ ?†O2?‰â?‰ß?ˆž/?‡¾?ƒÊÔ?€c¥?€œ?€g?‚r?‡+P?Š²ü?‹²û?‰F‡?„.? º?ƒÐ?‡—Œ?Š¢ë?‹Œ†?‹*?ˆ@Ò?‚?¥æ?‚-—?†M?|Åë?yï?€Ù”?…ý?ˆù;?‰ºZ?ˆ“A?†ýÓ?…I?„%Ô?ƒË?ƒ0‡?†b!?ˆc?†D?~Fœ?vÕA? ˆ?¬B?‚lÍ?ƒÐú?€­{?‚OÛ?‚u2?1O?šÅ?‚‡)?‚9?€Z?~ÓÊ?€Úš?‚²Í?ƒ•©?„:R?„š:?„wò?„q!?„]ô?ƒ`?€Ü?ym?u4©?{Oú?‚(Î?ƒXC?‚?€P?ù8?‚1?ƒ`Ç?„-?„Zü?ƒ¯?7Q?Wm?èš?‚¡Í?„ ï?„»¥?„ƒ!?ƒJÖ?„ã??‚&á?‚Òò?‚Ó9?‚c?›r?¨£?}Ð=?}è[?~B?~tÙ?}+¿?} ?{ñ•?x¾²?|DO?pØ?€*?.®?¹ð?7¹?€5)?€|5?€ü?xs?nâA?lÂ?qbo?xT¸?z€Ó?w.R?vz?{w?{oì?vÄå?u|¦?r`U?pq°?wÒ`?€ß›?‚vœ?‚{Ò?‚³ð?ƒ•?ƒ6É?ñß?yÂ?n×”?r‡Q?{€?~©¤?€7r?€£?|)œ?uã -?wí?}¡„?€_¸?i?ŸÌ? ?1°?|û–?{-Ø?x×(?yå?{N ?z?œ?{…»?}‘¼?~¥D?€.?€iQ?~j£?|j—?|Ø]?{kü?vËG?uV?s•ã?mŸ?n÷x?ukL?ui*?uñ¦?y„R?zxS?y˜G?z<Ç?{ò§?}¿ ?~ó–?}Ã?zòM?zõó?{é ?zí8?y ï?t6?pÔð?r”Ÿ?sć?rj?q»‡?tîÈ?wÞç?yZO?yyŠ?y³L?{SP?{{E?z(ø?x²?u 0?wIÈ?x!ô?sÓw?oóÀ?l˜R?i ’?iJÈ?lé{?rþÚ?u¼†?vsq?vè½?wxž?ytp?zó ?|A?}3+?}N%?|yD?|q?|4*?zÁs?xnc?x³Š?z–¿?{nß?{Yž?{qÛ?{â2?{YÑ?z3±?zÃ?z>f?x`¶?v -u?w;?xNÁ?tÓm?nÁ?mNâ?rd?wÚ?yi?xE?u:?q?q^¾?v÷‰?zr?z¸?yOf?xfñ?v ù?t‚‡?twD?uÏx?xƒf?xÒa?uªó?q›:?p† ?pÀ¬?oÅN?q?t8?u}_?t}d?rÔê?rØ´?tÇË?wl?g¥?gŸ?gßD?h¾î?hé}?gOÒ?e¡®?dc:?bý?d¥”?gk?h1i?gšë?f[?bLo?`L¸?cÃò?f-ù?fF†?f;µ?fR ?fM•?f±?cuÒ?`Ž?a×T?d[ ?cqÌ?b+Q?að˜?b^ð?cl?bÙ?b/ï?aùÅ?bç³?dÇ?djq?düò?dÕ’?`/C?Qî?Qj@?R÷?Qüœ?T˜…?VÓH?W†»?U½œ?ReV?R`T?RÇ£?Po¢?NÂt?My?N*®?Q$á?S£G?Tš4?SÃã?RF‡?S=?Uî?U?U -ì?T€ÿ?Sc7?Se8?T°M?T°?T¨?Utq?U”m?UIï?S=…?N¸Í?MÆd?R!à?Skq?Nù3?J@õ?N•â?S?S.ë?P*­?LjŠ?N"7?Ob»?M·j?O‘Y?OS??O„+?P©?Nªb?KVÂ?N/Ý?Riê?St[?SÜ?S?PS>?Ld¦?L›–?O“^?Qÿ?OÒw?Iž?J˜j?P¨è?R/?RL?Rt?P!?K3?J\³?NƒÌ?OMG?K}?Gm?JÕ£?Ov?L¢?FN¸?Iׯ?O²1?P Ê?NKú?L)‘?JÚH?L|?Mx|?M9%?NÈÏ?Ox -?NŒ2?LN‚?K¾à?N+R?Oéæ?Pb¬?Oì¦?M‹ó?HÚt?@µZ?:èŠ?<—?Ce -?Gn?Jgj?Lè“?N1a?NŠÛ?N:‘?Nê?Mü‹?M§Ÿ?MR?K-?H^?GfÜ?IBK?KôÓ?L_ÞÁÌ? I?ÖÁ?,«ÿ?27?6I?:Â?<Í„?=ð -?@·s?B®^?C0?CÁÚ?E „?EzÄ?Emè?Eî?Eß?FÝ?CÆÛ?>ác?AÑé?Fm:?F}g?GDÄ?II?IG?G#è?Ehd?EhÙ?DÎÿ?E=?GÆ?G‡ë?GÀÝ?H>x?Hh?H)s?GðÑ?Gü¥?HŠ?Gß¾?G,?F°á?Fµ+?EÁT?C1?AÍ…?Dæò?G)¡?Fêž?F%›?Eeõ?C1?C~‡?EÆ0?FÊY?G©Š?Gê†?Gî?F8?FW5?F7ê?Ff¨?F Þ?D‰?Aú#?CÐÑ?Eƒï?E0˜?E/í?EXp?E0€?E8b?E?ElÑ?C;í?B31?Bwi?CŸÆ?D¶ª?Cî¬?BŒ]?A'R??l×?BL?D“Z?CO­?B9ò?A ?=¦?=À“??{á?=¼M?>-5?Ar&?B/ø?CWP?DŽ°?D3O?B™“?A÷Ö?Aä?Aî?@Á+?AVI?@ââ??×??ω??ü|??À?>Ž??²?@ -@?@ÙŸ?@&?>‡ ?>ÕS??“¤?@z9?@fs??®9?>¶‹?>mm??Ã?? ??,_??Ÿ®??¼?@/ñ?@e0?? Í?>[? -è?<øx?=R?=¹5?=Û?=…B?=¼ ?=¬â?>™õ?>»Ý?=ÑI?=ë9?>t`?>3F?=­h?>yJ?>Im?>ˆ??S"?>Þ»?=u“?=½Ž?? ¢??Dm?=×?:ad?;¸?>‘?>•?>€?>3î?=’’?<•k?9ûã?7¥A?8×,?<æ?=£Ÿ?=´·?=¡u?= ?;Üœ?7Ïf?6?8Ï?9iU?8ø?:’??ƒÜ?ÿt?DD?€?|:?î?€T?£[?Èb?èŒ?õc?ÞÈ?×y?®q?Š ?‹Ñ?Q?P?Ö{?J$?#?"•?XÀ??l…?¯v?ó?È}?ÜA? -é?©[?aó?VÈ?%?]…?ì?‡?Â?“g?•ä?á§? ??R ?ð“?£á?1;?íþ?&ö?µC?á? ?W?R?”‡?ý4?gÖ? ÉÅ? ó?__?®w?Ï?̈?Úö?CÁ?>å?AU?‹Ü?ÜÌ?úH?¼¯?¦Ö?·?£E?›Ü?®×?I9?%ã?ì?¼? N?š‡?ðE?)‘?%?o°?­?uy?Á+?O ? ío? uV? W.? ¿;?2Ä?0Z?Ðû?”?¸Þ? ‡Ó? -ÝÖ? ±º?oÃ?§š?…l?²¦?KY? ä? Eæ? ¾V?¥¦? ô? 1I? Íî?l•?Ü? Ü? ¤ç? -½K? *Š? Bi?kö?Ok? kþ? Hø? ª…? šÓ? )¿? È? Ü? kÕ? ? hÞ? ‘Ë? ßž?5>? ½? #? „•? -µG? =|? ­? ù³?¨"? -ZÑ? -½K? }­? Ò? Ÿo? °=? ‹r? S!? Ä? úˆ? û'? Å? †:? ß\? ã? ×`? Îí? „±? ŠG? ŽZ? €„? ‡? y? =|? -Ë? -œ2? -¿ ? -ö? -íã? -$ò? eE? -*? -Ž? -®g? -Ÿ? ó ?œ·? ]? -S#? -V ? -*ë? -f? á¬? -? èŸ?ÿ²?ˆ$? -·?ç¨?V|?Aî? k‡?øm?hz?à¡?<û?å…?Ôè?ç?D£??¥L?]?¨¬? Œ?äI?šo?Ab?3 ?þâ?¤Ô? ?'ƒ?ë}?TI?J?;Y?[V? -œ?L?«Ç?sÂ?F£?<¥?’?QÞ?‹+?!?í?öÝ? ?VW?‘?UŠ?˜›?1? -¤?WI?7|?3»?8k?„Ö?;?q?CR?ƒÉ?åQ?X?ÇÜ?fG?i‰?õw?v?O·?±—?oq?ÝM?û -?ŒÒ?¡6?æw?ëÝ?¦¾?L¸?ñ[? >þîÈ>ü#Ë>þ®ž?Å~?=D?h4?>ÿÆá?õ??f?p[? Ö?!ª?Äñ?\?’@?íÈ?U?š“?Ó5?3ô?ÏW?d?¡‚?Õ4?Š?M¾?¾¿?É>ü‘¹?óY?i«?¤Q?±?ö~?ÜU?r?‚S>ý€Q>ý€|>ûÇâ?Š(?p^?b†>ÿ²?‡ñ?ƒ?Íö?gÿ?k£?>£?s¸?0µ>þ&þ>ú­Ä>û6¦>ü“ß>ýu>ú±>õC»>þ.”?U]?`?éª?Š?~†>ÿÄm>ÿeá?FS>ÿW¶>úq ->ü?_ê?‚…?ž ? ¶>ÿ>þoì>ÿz>ÿÌA>þI¶>ÿ ƒ>ýÞ >úŸç>ïú}>ÌÑ>Êã%>èSß>òaÝ>ù„>ûF£>ü} >ú&•>ó½ç>ðn9>öòÎ>øò>ù¶¦>ûìŠ>ù*>õ'¦>øDr>ùrÑ>ößœ>ð”>æ>Ø%Z>³Ò>•šá>¶fï>ÚåO>ê#¢>ðAÈ>óÝ>óÏñ>îί>ðš>ö >öwo>øC>ù -T>÷Øõ>öòœ>ôí«>ö7ì>÷?Y>öÞa>õŒÆ>òžž>ò²>óh¿>õdg>õÓb>òyÆ>ð†>î6!>ì¡‘>ï‘Ë>òÍê>ó¬ >ò¢K>òß>ò.–>î-=>ïŸÍ>ñaL>òLþ>ó`ã>ñED>òªF>ô¯>ô[ ->ô¾á>ôúò>ôQÖ>õ$›>ô¿Æ>ôQ>ó¹»>ó_>ò1ß>ìt;>è\k>íÞ}>îª>í>Ò>çï>Ôzù>ª÷ë> Á«>È->Ý®¹>åYy>çìÇ>éfÌ>è×&>í(ö>ìB`>ëÛy>ï°>íoÎ>ç´Ë>ãšb>ìÙá>î·>îŽ>ñ%û>íÙ>íâ>ï”X>ð¨>ð|h>íŒ>é2q>é¤>í’>ì,À>ëÛ>ðL>ñdA>ðKA>êõº>èÔÐ>í°x>íƒÁ>æ>y>å«>ꢶ>çr>åÀf>éÆõ>艾>æÊ{>à+>ã)Ï>èë>çVM>é€u>ê’•>ç–û>è½¹>ìéÄ>ít»>ê´&>æ´É>ë -þ>ï]>>î•>ï}>îÜë>î¤>éen>åÓ„>æ:^>ë†>îàY>î|Ð>혓>èÀk>Ùa²>Ø<>çÍÊ>ë¶1>ìÅ>í>=>íN]>꪿>é*„>ã4)>èoñ>íà>ì–ž>ëm>êÓ>è L>äLú>èRù>êµ›>éöˆ>çO½>é(s>éøå>èÈ>æ×}>ãG>Üô…>Ô·ÿ>ÍÒ0>ÕJ6>×Ñ¢>ß4>äì½>䇃>äA>äýœ>äæ>åQ>äÐÔ>çB>èçä>袯>å}8>ånß>è/è>çcø>æÈ5>è%">èI»>èTÇ>çkW>äE ->ßa™>äÂ{>ç^Ñ>å¯>ã'>ãp>á§>ÜœÓ>Ûò‰>ã,×>å߀>æ}M>æê§>æÎA>åØ >âŠ$>ÞÒí>߈’>áT>ä7Ã>åñk>åê*>åà©>å¬k>å^ü>ä›é>á> >ߊ3>â>äÿ>âÜ>Þ¹µ>ßvÍ>áM>ão“>áû)>â ©>â>áú">áÉà>áb>ßhþ>Ú’¬>Û{ƒ>ß6–>ÝÈ›>Øyl>ÐÅ­>Ë‚#>Áƒ>ºVÿ>É6>Ó%Ö>Ô½ >Ø_h>ÛÈ+>Ýxm>Ýá>ÞÆß>ß 1>Üó—>Þm‘>à -+>àq:>à<Ï>àf(>ßä;>ÞQÓ>ÞÜ«>àRõ>߶ù>ܹ>Î;ç>Ñ`>ÞX|>ßî>Þÿ>Þö>ß%>ÜÄ ->Ôa>ÕR>Ý3">Þ’Ã>Ú1µ>ÌÆä>Óò>Ú/ñ>ÑA ->×hó>ÙïÐ>Ú׌>Ûh>ÚŸk>ÛZÂ>Ú—þ>Ñ />Öø>Ûl3>׸2>Ø…ò>ÜI>Ükú>Ü!µ>Ü$T>Û¨ >Ûúº>Ü-¤>Ûl÷>Û— >ÛIâ>Ûp‘>Øi%>Ô¤>ض~>ÛW×>ÚÊM>Ú[|>ÚÆŽ>Û>Ú Œ>×êi>Ù D>Ùíl>ÙP>Ö» >Ö?n>×ó!>×îÝ>×âž>×>ØÆH>ØØx>Øܲ>ØÞ•>Ø© ->Ø >×½>ÕÈ0>Öˆ)>ÕïŠ>ÕÒµ>Ñöd>ÍÎW>Éò^>Ï"ä>Îr>Ìê…>ИÝ>ͺ>>Æg>´-Þ>®O“>Á,>Êã£>Ê‘å>ÈÁw>Ð{>Ѽ>ͦœ>ÎÐ>Ó)>ÒëŠ>Îve>ʱÀ>Ë>Ís >Ïl8>Ï*Ø>ÐNm>ÓÍÉ>Ôõ¿>ÔÁ†>Ôøò>ÔòJ>Ôo3>Ông>Ô\W>Ô  >Ópm>Тö>Ñ ->Ò”>Ñ»>Òá{>Óš>ÓÓ>Òò>Ò>Ò >Ñ¥„>Ò‚û>ÒÙù>ÏÈ`>Ï1">Ñðú>ÑŠI>Ñ–W>Ò!Ë>Òë>Ò,>Ñ °>Ò·>Ò1×>Ñï>Ða>Ïû;>Ñ O>ÎNu>ÎlM>Е>ϨI>ÎcE>ͳ>ÍQÀ>Ïì9>ÐÉk>Ðh>Ïò>ÌX½>Ï>Ð"s>ÏWm>Ï.ã>Ï>Íùñ>Ìæ>ÎU>Ì°>Í/>ÎÔ~>ÍÈ­>Ëß>Ê*K>Á"K>ÆÍE>ÊÏá>Ä1]>¹|#>Æaï>Í -Œ>ʯ#>Ês,>Íik>ÍUÓ>Êðe>Èôñ>Ɉg>È—¹>Âè:>ÈÃÄ>ʉ>Ç2>Æó >ʃq>Êö±>È.É>ÈÛr>Êçî>ˈÖ>É7r>ÇôQ>ÉËá>Ëí>ʵ&>Ê.G>Ê _>ˈ>Ë×>ʤP>ÊK2>ÉIÎ>Ê>ʉ_>ÊÑ>ÉN>É4æ>ÉÍß>Éu¸>Çér>Æú>Çÿ£>È•X>È6ð>ÈN{>ÈŒÙ>Ç/t>ÆôI>Çê‹>Æš>Å©*>ÄU*>ÄЊ>ÃKÃ>ÂN—>Áe“>¾Lô>µÄ>>¤£Ù>§ª>¶ËÖ>½=Í>À¹Ó>ÁÓ>Ã`‹>ÃëÒ>ÃÅ}>ı¿>Äèý>Á†1>ÁÖ™>Â\J>ÄE>ÅâÌ>Æ>ÅçC>Å(Ä>Å>ÅÍ>Å@€>Ã×D>ÄÉ'>Ä6–>ÂèŽ>¾r>¿^Å>Á´p>Ãú2>Å$>Å*>Äô„>Ûì>¼ÐÎ>¿TÃ>Ásâ>¾áä>Ã#ë>¾ô>¿Ÿ>Àö3>À$ÿ>ÁÂb>Ã’È>Ãy>ÁM«>¿'ó>¿ó>À>¿Þ™>·¨Š>½ >Â'œ>ÁúŒ>Â-Ó>Á_>¾Ék>¾Âï>½‰W>¿*r>¾@F>¿¹†>Àõ >¿Ç'>½•>½f>¾Áô>À4ê>ÀY>ÀqE>¿{ú>¾©N>¿ Ð>À© >ÀwÏ>À¤ã>Àqž>À>ÀÑ>¿·v>¿ÏÜ>¾Y>½®R>¿%…>½áx>»Ê¢>·%>ºNR>¼¨r>¼½‰>ºîµ>½Ÿ>¾yÎ>¾öš>¾ž>½ô}>½¬P>¹åï>»mu>¼‚¼>¼>½lò>¾#p>¾,ý>½áœ>½×>º^ã>¹ô.>¸µ¹>»$Z>¼°ø>¼“ˆ>ºÔˆ>ºž>º$™>¼™~>¼¾Û>¼‚B>»Ñ¨>»»³>¼`ä>¼N>»Ã4>º=)>»=ž>ºâš>ºwƒ>º»€>¹‘«>¹‰>º¬W>ºV˜>º¥·>ºßj>ºÖ›>ºy‚>¹ìý>¸‰Ñ>¸,>¸í›>¶Ü?>¶Ys>¹œ?>¹¦Ç>¹kÐ>¹#>¹Pa>¹Û^>¹Äà>¸ÀA>¸Ë¼>¸ö>¶3ã>±Û5>´ ,>¸?Ú>¸r>´QÔ>¶%i>·¼Ç>·a>·£¬>¶é„>´!:>´Ÿ¯>·«>¸ >·³¼>· !>·7×>¶Zw>±-4>´?ë>·)û>· -ß>¶;¢>µo>¶+Æ>¶p >µY·>´¦s>µ·Ë>µ“…>µNÞ>´ïÌ>µ>µÏe>µt›>´ó>µe#>µ]‹>´”÷>´¿S>´©>´“'>³öú>´=b>´…>³?>³g>±œV>²æ”>³t>³ìK>´ >³Ðj>³¢Á>³–;>³tÈ>²â>²…ª>²‡Ö>°¤¼>°ÄÛ>°ìæ>¯2>¯®>«“¡>­Cb>¬Ù]>ªW¢>¤nà>”Øt>’H…>¢ŒL>© 6>ªž5>¬æ>®Q¡>®Ü+>®²Â>®I>°¬>°Žk>°€Ü>°Lø>° Õ>¯p ->®ÿ¤>°@ý>°] >°—j>°®ñ>°¦´>°œl>°_i>®Oþ>¬è'>¯r>¯Ÿâ>®²R>¯->¯Ìv>¯}2>¬&s>ª=Ò>®Ò2>¯[ö>¯C(>¯:Â>®ÌN>®îp>®®¹>¬·Ë>ª>v>­Š½>®i¤>­ÌÈ>¬¬Z>­<>®>#>¬;ã>©žx>¬xi>­}f>­‰ê>¬ïÿ>­Ï>­…Ã>¬À>§~¾>§:<>ªøC>¬¨–>«}>«(g>¬MŠ>¬ˆ>«¹b>«˜.>«ã—>« -Ê>¬$M>«€D>§T >¨4_>«Do>«Ù>«…ì>«a½>«lû>«†ö>«N>ª9É>ª®>ªñÃ>¨¤Ò>©>ªÝ–>ªä>ª¶Ê>ª¢¹>ªe>ªañ>ª>©çP>ª+ >ªA>©½>©ŽÉ>©àõ>©Ü>©²¬>©>§V>¤Ë>¨X‹>©W¿>©+X>¨‘u>§s­>§¯³>¨‚l>¨H>§Ú>¦U©>§ò0>¨[.>¨u>¨¡>¦–Ë> ’N>¡O7>¥}>§(Ø>§ªÆ>¦š>¤UÁ>¢ƒƒ>¥†>¥ÙK>¦Ì_>¦Ë>¦yÆ>¦ÈÎ>¦ C>¦&>¥¨>¥ìå>¡­>¡pl>¥âC>¤nÍ>£ìO>¥Ñ½>¥ß\>¥Ž˜>¥Ý>¥D>¤2D>¡íŒ>¤€X>¥n>¤„g>£dà>£×Ñ>¤ÞÛ>¤Ú!>¤{º>¤uX>¤j@>¢…‹> àŒ>¡ø»>¤(ÿ>£þ>£m«>£®ƒ>£žú>£|É>£ ø>¢SÉ>¡aï>¢dS>2I>—>>™³>ž)ƒ>¢|«>¢Ëƒ> !¤>Ÿ Ñ>¢Ð>¢Œó>¢“°>¢^H>¢+”>¡B>¡)ñ>¡—Ó>¡Ã)>¡J–>¡8†> £É>Ÿ‰O>¡?]>¡2(> ’>ŸØ> rƒ>žÃ,>Ÿ %>Ÿ’> Pº> T£>ž‚ò>œ˜9>ž]>Ÿ»C>Ÿëq>ž©_>Ÿ¹›> 'ñ>Ÿÿl>ŸÑé>Ÿáï>Ÿxè>žÐm>Ÿg6>Ÿ•=>Ÿ^ê>ŸZ >Ÿ-5>ždB>žkÙ>žia>8ß>™ŠÍ>”¦3>›Ö>ž˜|>ž–£>žPm>¤H>ýÑ>™šÃ>”»é>›@>‰ >œ“Ÿ>W>!Â>uR>œh>X>™›ú>˜Óe>›ÜN>šÉí>œÐ§> Æ>œøÐ>œÚ>œ’ï>œL8>œi9>œbè>œ-¬>›%>”•`>˜ýŠ>›ÉÃ>›rt>›“/>›J$>›eè>›aK>™Z>»<>~6>–{>Ç>ÒÓ>•Ûš>šrŠ>šJá>š.Ž>˜• ->’ý¯>˜šþ>š^D>™ÿq>˜Cú>™Wˆ>™ù>˜>A>‘µó>L>—L">™q–>™¬>™Uó>˜?>–Æä>•øV>‘|->”³Í>”Pº>˜Hf>˜Ì >˜†Ì>˜7ý>–/>–›Ã>˜0Ü>˜K>˜A>—âê>•×>’gü>Ê>•oA>—Æ=>—0´>•öž>–zf>–k>–¬ ->—3>’û>Œ¼ï>”ÃG>–»>“;¼> >”2‡>Œ˜”>Ž˜>•P>”£>•G>•`©>”ü>‘|¼>”³>•Âq>•Ó]>•ÑH>•¸í>•ƒ>“[ß>‘Z·>’¸z>‡³">Ž#§>”!U>”Ég>”k®>’“>ÁO>¿o>“•s>’zç>‘þ¹>‘4>“j>“­>“p>’Cí>’­>>‘Ì€>Š€À>5‰>â5>Àa>)ð>ŽÞ->Œh>‹5ß>†w^>qÛ€>kB>„tõ>ŠU">ŒÂ²>ª’>‹(…>‹¦ >‹³Á>ŽØ¤>Iû>Œ{·>ŒõÖ>¯x>úy>ÕK>ŽüÓ>ˆ >ŠrØ>ŒÒÈ>¹Ö>Àœ>Õž>¿™>šå>¸>et>,>kv>b>Žq>ŒŸƒ>‰—Y>G>“]> å>¹¼>~>>WÒ>’¦>Žû>Ž¤W>=V>Ž¹>Ž¾´>k>Ž«t>Ž(>Ž7•> ý>5>Žðd>Ž±º>Ž‰é>Ž¥«>ŽÎÖ>Žy>ê£>À>Ž:Ô>éñ>Í¢>Ž' >®>Θ>ë>Õ^>Êg>¨Æ>‚%>>•> »>Š>‹ñó>ŒVß>‹í+>‰TÜ>Š{>ŠÍt>Œn>ŒÍž>ŒwÀ>ŠÅ>‹y%>‹¼ >Œa>‹Ê›>Šµl>‹n(>ŒEÃ>Œ:´>Œ w>‹ÛS>‹¶>‹‹‰>ŠÚÀ>‹->‰™->…S‡>…ûÂ>Šè ->‹ê>ˆqª>‰H3>‡Ì³>ŠX>Šék>Šíw>ŠSù>‰~3>Šr¶>Š|v>Šl=>Š>ª>‰ÿ¯>Š‘>ŠX5>Š'}>ŠH>Š>‰LB>ˆÍÂ>‰^2>…X±>ö>„¯_>ˆýÂ>ˆÉ|>‰U×>‰e¬>‰F>‰;½>‰¡>ˆ€g>ˆ‹Â>ˆë`>‡¡Ë>„ Ã>ƒ5>†Ý§>‡,e>…kj>…ýp>‡ ">‡V^>…kœ>†K>‡i­>‡[¯>‡f‹>‡%Ð>‡Z->‡…¿>ƒÌv>úÅ>…Û¤>…•a>…¥ >†áÉ>†ck>†‰.>†¼Ã>†“²>…<>„•Œ>†Ý>†˜>†Ú>†9×>…é|>‚Î>ƒÙ>„È>€Ô§>‚_Œ>ƒë|>É„>öö>…/9>„!§>™Ù>°ù>{>‚Ž¥>ƒìÍ>ƒè_>ƒm>„´<>ƒ*>Î>ƒüí>„FY>„ž>„ƒA>ƒÅO>€sl>ƒ>‚€—>€Ä€>‚n>ƒ¶(>„Æ>ƒ×¥>ƒÝú>ƒàÍ>ƒÁÕ>ƒÊî>ƒ@ü>‚AÄ>ƒ^H>ƒQ>‚Ñn>˜ò>òí>ƒÒ>ƒ;>‚¶W>‚´6>‚Á>l8>øl>‚ªi>‚’Õ>‚”+>‚EÓ>€¡ >€«ë>€Š,>׸>•¾>êp>õÇ>•9>€ís>(¡>à >·Ú>ˆÌ>€ía>~öô>€Ö¬>@û>8 >€ïÂ> ž>€íŠ>€Ôä>€ÃÓ>€º>€‘g>ã>àf>|>>sZ¨>zÂî>€#6>}œN>~>z_b>s>s&>}`M>}ýñ>yü>}ÐÞ>d>yýÁ>xúK>~qÒ>}^n>u-1>wøÜ>}é>|m×>z>À>zƒn>xÒ>wŒò>n‚>z‚>}">y#*>sWŠ>x@>yÁ>|d!>{˜8>{²ç>{wÎ>q!Ô>tÕ>zsâ>zÏ‘>xE>z.>{%_>zè«>zƒÆ>z.>z ‰>z‡>yê>y•‘>yµÃ>y¸,>yÃR>y$+>yý>y ->y+œ>vó>mu>pÚ³>`â*>oØG>x·>x])>xc>w;¹>tËl>që“>sýÀ>qôƒ>s?Ï>mE˜>uõ4>vðO>vÆ£>v‡ ->v™>ri>>s{->vÌ>uHî>oë½>sDd>u?>rsˆ>r‰>sR}>b€>hæf>t7u>sâˆ>j¹>nþ>sÑ{>rÈ8>nê*>s¥>s‰ž>s2>pÒÜ>m.¹>q&–>s(–>rÙ>qÉ ->q¡Q>l¹>e˜>aÃœ>o`¢>lyO>gpK>f§²>nö)>qLó>q9>qÓ>pú&>pø>pÌÚ>pË>p–B>pl;>pƒ>oý(>p Š>oäC>o’$>o•Ð>of™>ogn>k‡y>; -Ô>Eh>Pzþ>[ Ü>dšJ>hò¢>d8>XÖd>N,œ>HLˆ>CÀF>:Ñò>-†V>"ê>2'>"ÌH>.(><{¯>GÍl>K7Ì>FZã><»>2zú>)ju>!Q°> ->pü>&ÿ>8Ja>HU^>O.ü>J^><†>.…Æ>'0>( ½>,;>-`C>-$Z>/M½>2ð>2¸ >1<9>4YU>=ÁR>G{€>K[Ð>IÖË>Hs6>KöQ>T¥Ô>]Õ“>`> >VÐ&>Coí>/›>#Š~>#¸ ->+5Û>3»ü>8 2>72¿>0’×>*¾u>+sì>1²E>7"&>7¿ž>5‘Ê>44>2±J>,Î>"$Û>fý>†>J>*¯‡>7Íg>>£z>>{õ><îŸ>@cg>IÂÒ>Sø3>XÏG>V4Æ>O¼$>K•B>M¦¬>T¿ž>[Ðd>^">[UQ>Vø•>Ss>NÀ4>Ef>7¥>'(>Äõ>Ÿà>5Y>Úl>)‘P>4 - >=zæ>Aö„>?àP><…ä>?ï>F²«>KÇâ>ID >A8>7¼Ç>/ML>*+[>*ê>-ðÅ>3W>8GÁ>>>>DeÂ>J¨^>Qv§>Xò>^g¨>_mh>]̃>\Äç>[¿4>WJ>Nw_>Dû>;‰N>6Š>6Ô>:™>AÀÜ>L†>XÑÃ>bè¶>h9ù>iyË>hDÊ>eˆ€>aÉ>\³ï>Uк>N&1>GEÃ>@…O>6÷>)Œz>Då>Tä>l”>NØ>>·¢>z+>.ç>9ê§>>ö7>@Îd>@e><ìC>7Òz>88«>C2ö>U¶À>gxã>qÊü>sí>n;Õ>h”P>fq™>gðä>g²¿>^‰`>JJ’>0^Ã>‘w> ïg>’]>Þv> U©>õ:> >-eG>9jó>@ei>AïŸ>BÁ)>H?Ç>Q“§>W‚>Q¨‰>A¯í>.&Â>ƒ>=¨>ÿB> Gî>(aÁ>0ËN>={Ù>P 9>bpW>kG>gÓ >^Š×>W ç>S÷H>UÞO>]»©>i“q>sæ@>xØ>xxà>szþ>iZä>ZÞO>K‡~>?0þ>7dä>2>-rÿ>'ï>'¡¾>1pÖ>@–[>Iøz>JÏ>I‰>P^h>\8>e{<>g­>bµ3>Y»q>R0&>OºÞ>P9>M2=>D&2>5³*>$`A>Ÿ>> Õy>^t> å>0Ž¹>:ë>8“0>,¶Ï>š™> z>…Ý>¤> àô>>Âa>AJ>"’þ>+J#>5 d>>g>JÓ2>\Ù>n„Ë>|(£>x[>váœ>fxõ>UÅÃ>KkD>I©Î>M­>O{>Ljf>FÒa>B¸Ä>Dt>N3â>]£>m ->wéd>}ÉÖ>€‡¤>ì|>‚õw>ƒEC>ƒ—‰>„¨>…(ì>ƒ%B>~iµ>x6á>w:ø>zj>~º1>€×>>€Õ>}ä{>w8>p®>o>™>s½Ò>yAë>z>>t¯ˆ>i[U™>Pô >Mz^>NßÜ>R”>VMÔ>Z|á>]ÙŽ>bY½>j‹>q±(>r׎>l >cMÃ>[ª.>YqM>_ýI>n^b>~È>„´å>ˆ¸>Š¡>Œú>Ž0¿>ŒÁ>‰9¿>†Ë•>‡“‘>Š\ˆ>TA> ~>‘£w>¶M>‰`>€|%>v§C>vtÓ>xGt>sEò>iÈï>eß·>l&e>w¼z>œ>„x >…Ö¶>„Y >…è>sÆÖ>jžÕ>g_»>k’>uµ>€ R>‚¡$>‚ >>Å>€¦ê>{[ >n$>[èÄ>N]¢>Ol>_Ið>réù>~¶> á>w¥³>mÂá>f°ç>gÔ>q!>{¶û>f×>ƒK>‚Fì>xK>dx±>U— >T‘>]žI>h·>m5Ã>iÚ>bý,>]mæ>\g>aíi>m Ú>yÁa>¢§>‚{ˆ>{ÉW>g’ø>K’>1ÏA>)ÅÚ>:‘>VîB>nÜÈ>z¼A>Qq>ì<>…£>‡“'>‡©È>„‰ö>{–\>g…2>OnT>95s>/–Ó>:ù ->VT>rt>‚4ø>…Ð>‚Ó*>y`·>i½V>\PY>VQ >X@°>ZY >Sš>Dâ>;ó%>Eð>]ûe>y]˜>†¦Š>ŠÅ>ˆce>€–>iåÍ>U£×>P_>Yõ›>bãÉ>b³Z>b">l,>}uÜ>„ -g>‚!F>yüZ>y g>‚ÌJ>‰}^>Šx>„V•>x@a>i‘#>ax>d!Á>q»ú>‚>‰Ó¡>ÐŒ>Žœö>Ž…Æ>ŽjÛ>Œ[¨>‡C¸>¢¯>|ò‡>{ìr>|Â!>|n>x‚K>sùg>qÖv>sE>xTw>€E¼>„V¹>†-ò>…%4>‚}f>€ U>~=S>€@:>ƒ<+>‡p¼>Œ> -&>’Ò>‘wÿ>Žxÿ>Štù>†ü>>…7—>… È>…ˆt>…Ý4>‡|E>‹´e>‘ ¹>—v>™þ‹>˜’c>’±>ŠþÛ>…ÆÕ>†³A>ŒuM>‘Å >“">‘aQ>$T>AL>‰il>d·>nˆ">_q§>Z‹ß>_&z>jè¶>z'Ö>„LÂ>Šº©>ñ”>•×–>—ú¤>—Ÿe>”ÖN>Žá!>‡Ÿ˜>„‰>‡ ¼>Ž7Õ>” ,>•Dá>’ ¼>ä>ˆ'I>ƒ½=>Ö>{`'>}©7>‚ˆv>†5Þ>‡ÏA>‡YG>†—8>‡K:>‰^A>‹€–>X¼>^³>ú´>‘ž>h3>‹Û>…G>{be>nš…>hSè>jïï>tí>€>T>„­Û>ˆB>Š·â>ŠÃÃ>‡te>„•>„÷H>ŠøB>“õ»>œM)>Ÿ9Í>šËƒ>’Ÿã>ŒPŸ>‹ -à>Õz>O>Z>Š+õ>ÿÄ>pW>d>>jkÞ>€þ‹> -Â>˜”˜>œÌŽ>Ÿ™z>£?Ñ>¦U‡>¥jn>ž6¥>“ÒE>Œê>Œ·x>‘)B>–LÇ>˜¯ý>—c>”Ò;>“>‘tã>ùÙ>‘2S>–óŸ>Ÿ>>¦Nv>ªMÎ>«6>¨>Ù>¢ -Ÿ>›U]>—¥†>–¼1>”˯><¹>‹‡>ˆ‘Ê>ˆŠ|>Ž~¨>š?L>¥'‚>©f>¦HÆ> ì…>œæ²>œÇÒ> Ÿ*>¤Êƒ>¥Þ]>¥e›>¦ôý>«Ä®>³s >»RG>¾:E>ºÑå>¶u¬>¶œO>º’z>½:ð>¼7Ì>º¾ ->»9>»>¹ŒÝ>¹–X>¼$%>½þ'>¼$">·mÉ>²Á2>°çó>³Ö–>¹Ñ¦>¾e>À>¿|Š>¼®;>·€m>²MÍ>²ÍÇ>¼C>ÈVt>Ȥ/>¹>£ÂC>——l>œú>œÛÏ>›¢>œRk>Ÿ¶&>Ÿé >œÞù>šãU>›Â¤>ž)=> á>¤Sž>©@¡>¯L>±²M>«« >  >š³F>žòu>¡‹>—è>†iØ>v¨@>rÈŽ>x¿ç>—7>Š>f>—½®>¦÷A>±JÒ>´®í>¶f>¹.>½RH>Áú¹>Ççß>Í7[>Ï«>ÍY¢>É! >Á´ê>¶‚®>«Rr>¥ŸÞ>¦8H>ª/I>¯ŸÂ>´¼>>µ>è>®’g>¤¸¡>ž©4>Ÿn>¡bˆ>ŸÉØ>œMJ>ŸÕ5>¬†|>¹>R>»®M>±Å>£=Ú>›º¸>Ÿ~@>¨ÝŠ>²lÏ>ºÍ>½$<>¾L­>ÅÍš>Ô‹>á…ã>ä†>Þ²§>Ñ.æ>º’Û> û5>’G8>“ÿ>c¥>¤òç>ªO¸>°Îü>¹]Æ>ÄA >Ðàq>Úóó>Ý¢ÿ>غá>Ï€2>Ä£´>¹È7>°ÈÔ>¬ñ:>°Í'>¸E‡>¼0>º‰>¶Ü>µHÎ>¹4a>Âèó>έå>×Ó>Ù¿ >Ùõä>Ü{¼> >çÿ>èùÜ>åÒ¶>â:k>ß¾i>Ü&$>×L>Ô>Öy>Û4Š>݈¢>Û#ê>ÕJœ>ÍQ<>ǯ/>Ë83>ØXm>æÉ>ím^>ëîq>éŠæ>çøù>áE>ÖÄ>Ε˜>Ìn>ΰ5>ÖéG>á9C>ç†è>éíÃ>éj€>á•«>Ò‡+>ÅðB>Æ ô>Õr>ë¶8>üž—?œ??¡S?»r? ×?>—?ø?jb>ô¿Q>òšö?¢¾?}°?–á?ÜA?+7? ô>ü -Í>åIJ>Úñ@>Ü+ß>æ?í>ó×ð>ý*L>þW>ùŒw>óA=>ô.??Ü2?ÜA?!ðü?( u?/¦?0¬ä?'?]×?;ª>åÿŸ>Ú]>é†k?Ö°?þÛ?»?À ?ó?ö?Ÿ!?Y?½>? -ìs>ü}œ>à©É>Êœ¢>Ä^c>Ί>ã;’?)?˜?Ýð?)¹ò?,îª?)u?#?ž?k?­? ý˜>û >Ú:A>½ >´kê>È·Ä>ñ?_á?!K¸?1¸Æ?>@¯?@Ç ?3°?™«? >þÛ^?|T?(?^ ?Rœ?*¯­?2I£?3#˜?*=?ö?ø¨? –É?h(?8? ¬?Ö?'.írì>í`x?óu?:?*ÿ?9Æ¢?J¡?Vî|?Z.µ?S¼C?HFc?@D©?Cù¡?R3?aú?h£?dÞ¼?TtÍ?<¿E?*xz?%ƒÜ?,ÄX?;@n?Gp?FcU?9ÕE?.{¤?14?=/•?A[í?5Mc?#™Ð?pd?J?…]?Æ?!>ï?!|Î?hç?p>ýå‚>åý>؇>Ö5?>áã">öÁÜ?9?×}? P?΂?#ÉŒ?1¾¸?9L?;®5?;úÞ?ú?5‘Ï?2±i?9¬£?BÍÖ?F«;?Fy¶?E -?D˜»?Gy?H´)?@¾b?6Rw?6€Ð?Bgr?Qõ?ZEA?\êƒ?\n?Y?U1?SD=?Sé×?R]Å?Iû ?;7"?+Ó5?%&4?-Œy??í$?O©?T:Ô?M0*?@š?:‰F?@6X?AþÆ?6­©?)–¼?'iÄ?*s?&_!?°G?¹? é·?h2?]f? ü?ÍU?,¨b?7?8é?7Ë?7÷Ê?<Û6?@6F??í±?A>¥?I¤?V=¿?[@ö?U^?KçQ?A)Å?3oÈ?+šá?1Y¹?@o ?Oð$?Z>;?]Ú ?ZSu?PO/?EE?>S?7Ô&?1!¨?-êˆ?,é?*f ?&gd?#îª?$Ý@?&qæ?$pl?Dv? b§>ó©T>Ðè”>¬†>‰Nö>UúN>$w6=øq¥=º!A=šJÈ=¦¶=Ü8+>f2>Hóà>ƒ€9>¦,'>Äã>ÚIE>é­Ö>ø.?JÆ?«Ú?!›i?-ÀC?,½z?%–?$÷É?, -?1})?01B?0Š·?:?C3Ö?>r–?1©ð?,ÖÓ?3Á?9~ß?4(«?!M? ©`>êYØ>Ç4>¥>=>=TI>ƒ›=Ëì=Îà>˜>>œY>~ªÒ> Ìk>Ä2M>ë_o?Îø?àV?(K‡?9¯!?J[®?RÒÿ?MÀÃ?B¤½??‘ð?HO?UT%?_%á?cI~?e¥"?fÑ;?d³‘?c;§?fïó?m÷Ð?s.¶?q´#?hÑù?\dZ?Q”†?OO ?[B?oà?~#Q?‰þ?{¶º?wø'?n€ó?^¦­?W ¿?`,µ?p7?{¥‘?ä?‚´è?‚Dù??gP?ƒ1?…B³?†…?…[é?„f"?†ò©?‰­å?‡Ëª?‚î?{´j?uµ?s`.?~Í?‰Dü?#_?Ž˜Œ?†6?rÃâ?\NÊ?S`p?WÅ:?do?s˜Ú?KÄ?‡¨)?Œµ?Œú ?‰Ë?„Ms?ŒØ?ƒ^Œ?ƒž?x»T?bÀ¿?\"º?oŸf?„e„?ˆ6`?…$Ô?Ï?~<Á?v<Ä?k„T?c.M?b©{?hÁ?oLZ?tê‚?}ºb?„[3?†Zš?*?nš?b/Ý?g¦i?sw?u?q3m?vò??É?zl?t¸?w/?yÀ>?o–Á?W*(?;tÑ?.…æ?:&?UE?pU·?€[æ?€®x?w5i?luÍ?eîÑ?eñÂ?o=S?}å“?„Î?…7[?„O?‚ò?‚ˆT?Yiè?L l?7jÓ? eh?æh?(]?C<Æ?[e–?j:f?oq³?nnD?i+E?bO?`¼f?gÖv?s—„?GF?„Áè?ˆëu?‰çC?„zõ?u%õ?h`?jÍÒ?q—«?qpß?mêÉ?oÉg?uÈ ?vÆŸ?nMË?a€?Y%Ò?Zñ8?`?`Yï?]t?_Õ?j:]ã?3j&?65œ?= ?GT¾?R‚?W?WÄà?VPJ?RoE?VÅ?fä?xbÅ?yÞÜ?k¾Ò?_‡?g*É?~;?‡Ï4?ŠU¾?ˆ–Æ?„>$? a?ƒ#?ƒÅ ?w̬?b• ?_Áé?sÜ"?…6U?ˆQ?ƒr?}îð?y§?¸?yJ?€9P?n¤ô?Lê_?->,?7(? S?Æz?0r]?G•Ù?U7?d³’?u?V?€i!?„|?„ÇÇ?yÆä?b"²?[£¥?l?€‘?‡i¿?ŒÕ|?ŒyÔ?…YŠ?€å?ƒI‹?Š™¹?+A?“Ï?–hé?–î?‘}—?‡õž?€WT?~Mð?‚G]?†w«?‡·?Ê?l9}?gÊ®?~*?ŒÃµ?’¢?‘añ?\?Œ?‚„Ÿ?dâó?N’é?R/;?fѹ?xEñ?€ â?€R?|¶­?}®?‚5"?€Íß?sôš?pÍ?{i?„±^?ZJ?kK?a{…?oŸ³?ƒ2”?†xÐ?„å?„ËÕ?…&Ë?}Û?p^Ê?s_>?€–s?†ß?‰ad?„i?uO(?hÇ4?g¤?m -?{»T?†´?‡x?‚ºZ?%H?‚Qt?‡¼?ˆgÌ?†!­?ƒ ÿ?Z5?{b_?xh ?{ƒ`?zYÐ?qÃþ?mDþ?yÁ¤?ˆ¶ ?‘WU?’sð?ŒE)?€Õk?hqN?Z´^?dG‰?|þK?†ÛÉ?ˆ¾«?ˆ\r?„Â]?€f@?`?„Bá?g?q:C?gx‡?k9?pû3?rC¿?pÒ¢?k>Ô?gÈ?n?…?xÞ¾?}}ó?~¨á?{<2?qT?hü§?k7û?wzç?ƒ›–?‹UÑ?‘g’?“‹K?“ѹ?”»Ó?‘û¸?ˆ‡W?y«Ò?lÉ"?s’å?ƒO,?‹™Ç?:•?“²?ŠüÇ?”Â?wô6?|‰>?„’¶?ˆ e?…wâ?á‹?äõ?„íÀ?Š*?£×?‹=?† ô?‰R¾?“Žü?›‰f?œ–ö?˜¯T?’Áˆ? ?‘9Ÿ?–#ž?˜!U?–d?‘«ˆ?ŒDr?‰-õ?‰¬k?Š!Ì?Š?Šù?‹²?ˆ×´?ƒ<è?€¿B?€[?}=T?z§Y?vìö?t–¥?y3„?€å[?‚dd?{2?p‘¸?v{ì?†@§?ø°?“æ?Óe?ˆD?‡>h?‰Á?‰¼ß?†  ?†q?ˆWc?…EÀ?yZO?qÓ?}N!?ƒ´?žw?wrS?rJb?|é?†Þ„?‹á?Œ¯R?‚?öê?ŒE?„ƒj?Ô|?‚~?Š!?ÞF?“·Ü?’zi?‹ëú?†Úª?‹ -ï?‘F?’{y?‘Ü’?‘Ãë?3û?ˆ×H?‚¾q?}¯?u»?rw…?}?=?†è’?Œ4c?ùu?·3?‹ö»?ˆeß?„×¼?„æI?‡„£?‰Ð?ŠeX?Œ Ö?Ž(:?Œ_C?ˆ˜|?ˆù?ŒRG?‚«? Ó? Ž?’t?–¶§?šÆ?šG?—~[?”Ș?“)?“GÆ?’¨›?¦Ö?Õ“?Žx‹?Æ{?‘ªª?—i?š€Ì?šñ?—[?•‹3?”áÂ?K#?‹Í?’N ?•(U?˜&?™Óâ?˜ÙÒ?•äS?ÍM?ŠLj?†£³?ˆ¶7??”¶ò?—1Õ?—‰4?”Î?`”?ˆÚJ?Š¤l?“‰:?œ¸Á?ž®»?™ž°?’‚¹?Ž’½?¶š?‰aÐ?€-n?tõò?x†?‚¢?ŠEÕ?‘–z?”ìŠ?—kr?›_‰?ž6X?™k?™â?™¦T?š^É?™o`?€Ã ?€Ž;?‚å[?…PÄ?…<&?‚&–?(á?ƒ›?‹¼‚?’Fi?–dÜ?—¢Ì?•Õ?Z¸?Š¼r?‹Y?B×?4‰?2í?“í€?•ìñ?’±6?‹nÁ?ƒ‚e?‚ ç?‡ëµ?Ž6?’<Å?“Þ`?ô?†8ð?{v?rxÏ?t« -?xçœ?w?~±í?‰¯Ñ?¾?“bò?”ûÃ?”Žf?ï›?‰%;?ƒu?…óN?‰þ|?†íþ?s:?ƒ?‹Ìy?’1Â?“Ÿ?’Ö?h-?2 -?‘m ?“’Ò?“É`?“{`?’6þ?‘ ?‘ŸÌ?û·?’:~?Žr?ŠÅÜ?„Ny?t¸R?hÑ?ne?|£?†ç‰?ˆÏ?Ž)ø?Š·g?ˆ‚?‡Í?‡G_?‰¼? ?Ž—?Œv§?†Ÿ)?€Û0?~Ô?‚yø?„˜'?€0ˆ?w"–?€: ?‰š›?ŒÓ¤?ˆ=•?€TÜ?s£H?q¸Q?z?—?|´Ï?phà?k ?x‡Á?‚[?ƒôÃ?†æ?‰Ùf?ŠJ‘?‡~?…Is?ˆ ?‰ª?ŠÜå?%?@š?ŠL—?„?ƒ–g?‚b@?xØ2?k¦ß?oÞ?ƒðÄ?ŽM?“BÇ?’ïa?ŒôÄ?†læ?ƒ­o?‚ËW?„Ü\?‹1ª?,ã?‘;Ü?‘>,?’Q?“Ë?•1 ?•ø‘?“NÚ?Œ'V?†×Û?‡î±?‰*á?ˆÖG?ŠâH?ŠÙS?†Ùg?†D?†ð ?‡C?ˆ¶ã?…œ‘?y^G?s–?<]?„IH?†Ÿ:?ŠÖ0?ŒK|?ŠCü?ŠÕ?Œ°Ñ?~»?1É?‘-Ë?‘é©?ŽÓ‡?†‚ó?{n?t¶U?~|•?‡ØU?Œ®Ú?1‡?‹øV?ˆÑ+?„¡¤?ƒ‡1?ƒñ¦?† í?Šþo?Ñ[?ŒÊ¼?Œ€?Ž\*?×?Ž ˆ?ŠüÖ?‡>D?a?{`Š?~'?Ï6?è¿?— ?}ëÇ?ú'?€£f?‚ßw?‡µ²?‰?„?à?€t[?ÉS?‚ Œ?|O?~²?‚rÆ?„|g?Ûü?6é?„+M?† ?ƒÎc?€n1?yB·?xÄ@?‚9´?ˆcn?‹"¾?‹:ä?‰vd?†¯ë?†×Õ?†ðª?€$?gfR?SI?îÈ?QÀ?€wH?ƒœÁ?…3?‚³{?^c?ƒÊc?†ƒI?†Ð¡?…™Ë?ƒâ?QE?wwl?u ?yï?ƒx'?„|B?ƒ}'? ?w²?vV¿?lÆ?_Ç¢?j»?~ÍÑ?‚S¥?€ñó?€W?}?w €?v4à?t¯Õ?sÚ/?}ÑË?„$?ƒÊL?Ó•?|È.?|‘°?yù»?~×K?ƒØ‘?„âC?†^b?‰;?‰ìë?Š!Æ?Š„J?ˆ3?‚‡õ?{‡½?yw–?zä†?}ÝI?}žE?wÿ ?os?p.j?}Ñ.?…q]?ˆx?‡²ÿ?†=D?ƒY¤?|ï ?xû•?{ØÍ?€æ¹?„Èy?†)1?…ç˜?„[Z?ýF?€$?}J„?}èÌ?}º¯?tzd?pf£?y$?Ü?€c?|S?p1~?g„^?kø?s­»?t@¶?p‡?u¸B?~œ£?|¿&?z ?€7ƒ?áJ?5?{æC?|tF?}hÊ?wH?u`Ù?€Œú?ƒÌ¡?~b½?vÚÿ?|­Z?}tÐ?v™N?uí?} -^?„ ­?‡—ž?ˆI|?‡í*?‡Wô?„¶µ?|Í)?q$@?u€æ?‚×?†ûš?‡* ?†l?¼"?vfc?x>à?„…?Š;?Šyµ?†Eü?&µ?|N‚?‚LE?„1@?…X·?‡-»?‡1ó?…;_?~[?}}?wƒ£?i7ñ?eí?qrâ?x!Þ?z+¿?€|u?„‡t?†P?ƒc8?€Œ¼?LÕ?‚e?‚j‘?ê?€³?‚b?+?€®?ƒPˆ?‚- ?x}\?w7Ñ?º?€4R?z¢?y!¦?y ô?x-Ê?x¦$?{®?#†?„R©?…n_?†¼?† +?„ñû?„=¨?„^(?ç"?x((?nÆW?o0c?zt?ƒ=?„-L?€iý?vš÷?xíC?¾`?„]U?…ÛU?†<¤?ƒ^'?~&þ?zÛ¸?}q,?‚@—?…§`?†±B?…Øû?ƒÈ4?Ö?í$?ƒ–f?„ ?ƒÕå?ƒbŒ?‚÷?t?}Óñ?~F?~wå? -/?}e:?~À{?~gÂ?zÁã?~Ñ:?€9Î?€4V?Ù7?‚öþ?‚˜?]??‚bÐ?‚;™?y¿?kxc?f^‹?lHt?urâ?x“3?uHù?vU\?~ÕV?}]‚?v¾×?uÉ?p‚í?nõ1?yõz?ƒ®J?…á½?…¦Ô?…Fµ?…q¢?†/j?„Ÿœ?{M?o¥?uȬ?~ò?€I? ô?¯±?|Ý-?tŽ[?wºÆ?~û&?‚b8?„ìÑ?…ªx?„æ?‚?¡?€µ¯?~Æ?zDê?zJÔ?wº?tx?zO”?€ Ð?m1?ƒÁ?ƒ„3?”?€X>?Vy?€xb?yc?t0&?ijú?[ßI?e6Â?qié?nÄï?q?d?y»»?w¨?q?pée?x©±?€ÿ¦?ƒu‡?ƒ$ü?vþ?‡Ý?©K?€Ì\?~çä?uê?mž?mbM?q…«?p>õ?oЀ?vuÖ?|§å?•?Tù?~ýª?€>{?€#í?}ÞŒ?yp?tŠŸ?wÞd?zCü?tk3?múq?h Ÿ?c´†?f€?lJ˜?u¨¨?zÎt?|«û?|¢Î?}x?€3?Pß?ËR?Äé? I?Äæ?4Ó?€?~íF?{—?}*?€Ä8?™[?_u?€ä?€Ó?}éí?}\?T_?€v1?~T?z?{]Õ?~%†?xv?nÑ?m¾å?vbÀ?}Ý!?“?|è¬?wÀø?rÄ-?tíß?}™G?€ãI?€Z?~ ?|£±?{B?yèˆ?ytg?zª?~á?|öæ?u©ñ?m¹?lW ?nþ7?oU?rÑ?võ?eý7?f±?jR?gå?h€„?kç?jT?iaô?k¾ô?mÕ0?nš`?náJ?m‡õ?k‰µ?k|‰?lóÂ?n¥p?p X?oÃz?k…ó?e-E?c§Ž?g¯?kÚã?l›æ?gžA?`É]?aU?d“%?fÁB?g¦?d&é?ep?j¶?k×í?h¯?eÉE?h3™?j0?gSX?d˜??f}?d¯??]i“?[Õ?b©†?fMê?bîv?aÙs?b8r?aÕ(?b2—?\ê?K?In?R7?V¤?NÂA?EtÑ?Lcƒ?TùM?U™;?P“À?Hþô?Jß?MrÌ?Jêm?N"‡?Mœå?JT ?J©Ú?I͘?DÙ‘?I¯ò?R«D?U«?T¼ -?SSÆ?LÈÍ?C‹?BU -?JT?QÃw?OAî?F?GiW?PM˜?RL?R§?R@V?O×Û?Hjy?E2?L‡?NŸb?E†?;Ô?Db?NÐÔ?KÑn?@_?B`É?M ‘?Oà×?Mœ?J}?Gg?H£?K'8?J¼=?Mšß?OB ?LÁù?F+L?D‰è?JTŽ?NG?O1?M%_?EÔ?<ÎM?2I9?(N!?(Iè?4AJ?>ü÷?F|^?K’"?MB?M1Ï?M'Ç?M@N?MÍ?M¨®?KKe?E½?=ž?>¬p?Cž¶?Iß?JÊ4?J²q?I‹:?E'n?E±|?IÚ7?JI}?Hàm?â’?%ÑX?4À³?6·û?8¦ß?<=V?;îß?;qé?@Ž?D¸Û?DoB?B´.?C=a?CóÃ?Aú?@šŽ?CÝi?Eó?> ž?5r³?9ö?Aô?B Ñ?CÙ?F_D?F?@Ž¶?;âb?<¼?=|X??vª?Cb?B. ?AÓó?DŸ‹?Elq?E‹×?FO¡?FÅÆ?EÝž?DeË?Cê^?Cì¿?D·?B¦W?=è0?:?>B?B•&?C„9?Cš›?B?¶?<½‘?;ð“?@v•?C˜³?DÞ?Dí­?D«&?D-§?C¶»?C²i?DF?C®Ö?@^³?;¼?=<¡?A¦N?B+c?BKA?BJj?B0 ?B¿¢?Atl?:‰Â?6L´?;åˆ?A¹3?D(?E/?EÌX?E‰’?E-j?D½?D ‚?C[*?@÷©??>J?@Gî?B^è?B±œ?@3?>aœ??ï¡?A«·?B/Ê?Aß??ø7?>>´?;÷Ç?6é?7š½?ò{??0??íV?A®²?A±ê?@??nµ??ã.?>…Ø?<’·?=3?=.²?<º?<î«?=7ä?9vº?6§?9Ï;?<Ùw?=±h?<Ü?:߬?=:¨?>œÂ?>îÝ??Ó?=±‡?9Êý?7>?:1x?:OÕ?9Á?:+é?;DD?P?:•?:£â?:¼^?:.¶?9®²?:•?:Ÿ?:Äx?;b ?:è9?9jk?9šî?;§?;3?89«?3t?4Ò=?9T"?:&?: -é?9íQ?9\Á?8lI?6 ?3ë=?5?7üé?9bä?9¥?9·Ú?9H?8ô?3¼I?1¹—?46?5ˆ'?55X?67q?8^¶?901?9¡?8Ýî?8œ7?8 °?8ª?8 h?83Á?8¤%?7Îp?5£?5T.?6ˆm?5û?6<´?8Ò?8ÅÏ?8¹.?8JÌ?7™Y?7Hí?7!‘?7X?7€×?7ï?6zø?6 ”?6ýý?6Áˆ?5]û?4®?2”m?3KÌ?4Šr?4ü?4ã…?5 ?3·?3™F?4¯Œ?4ó?4Ï|?4bH?4|h?5‹q?57 ?4Ú@?5?5I?3×î?2^?3'ä?4²?4h?3uó?3׺?3ßÎ?3Ô?4œ«?4ÌÛ?3oÒ?2€?3¢Š?4²Ü?4Ø?4›{?41w?4b?4 ¢?1’?-®·?+˜¥?.È?2ñ±?4¾"?4–g?4ä?3¿…?3ëò?3x„?2Ç}?3^É?3@?/ÒB?-Óp?0‰?.éç?,à?-‘7?17+?2JÏ?1@;?0E€?/ó‡?+ä?+‘î?0®Á?22²?/q6?-‚g?/ì?1õÙ?2¤t?3§È?3ËÑ?1\ ?/bx?/±À?/"ä?2-?3“¥?3ª?33×?3wH?3Fi?3\’?2ž|?0׊?0hþ?1.?1¤Á?03½?/ä‘?0ÂZ?0Œ¬?.í?-½I?/Q?0 [?1ï?1é×?1Qß?1(Ä?2mð?2s6?/þm?-W?-µí?.§h?.ÚE?.ë?.÷õ?/ø?0#­?0?0}»?0ˆ;?1^|?1y?0æQ?/wX?."]?,§±?*Î?)Yï?)œ'?*JÚ?+Ç5?+Ûp?*ÐÏ?,À@?/§Ä?0 %?/Á?+î­?*ªý?-;?/=±?0 °?0K?/ú–?/<²?.qü?.ÓÔ?-m?)¼6?+Mz?.—Y?/¼+?/‘?.ë?/³+?/Á)?.Ÿè?+¦ð?&°?(}?-—a?/EO?/·G?/š‰?.M“?,F?,!?+<?'ýJ?)yŒ?+^??)¬?&s«?'ñ?(sÂ?%äó?%ä?'L?(q[?)j2?'”Ü?%Û?(R`?&7k?!ïŒ?$·?'·2?'$ò?%$?%oÙ?&}V?%ðq?$£T?!Eö? ?#ÊŒ?%pù?&f¼?(¶?(“²?'½?%@Ï?%Ù?#ô?"=ó?#ðH?#‰?$Af?&À?%i#?"ZÜ?#üÚ?%ñQ?&l?&y?%k®?!CÎ? î¥?#Ë…?$Ô™?%Ÿã?%È¡?%Eõ?$Nu?#$ç?"¥?#™1?#ÞŸ?#Q`? ü]? k?  d?èò?¢¢?ËÜ?™?²Ó?"]C?!½?ò?|É?½â?!Ñ?Î…? r?Ë'?`Ð?û!?!+þ? é? @Š?j‚?Z¡?&‡?ñ0?6‚?J?-?¯_?Q?A? ++?ûK?]—?ñ‹?Ë~?%d?/&?N?§9?õ¨?ƒË?k ?jÔ?Í?8]?V?‰Û?åù?-?¼?ÛT? ?§R?z÷?¸³?àþ?yõ?îŠ?Ð^?=?Ê"?•Ò?Æ?R•?ts?~D?b²?â@?ݪ?­?Î_?‡M?,“??ÿä?Ñ(??çª?\j?Bf?n?[?  ?¦ ?&Û?–ù?êÀ? ½?bÊ?1¬?Z=?úÃ?ö?Âv?‡+?k¸?À?¤[?vP?^?îE?cI?ø’?ë? å?¾è? -×?6Ÿ?(ô?ļ?<¬?‡?u¤?ñÈ?7P?Äé?2ƒ?öd? 6?ë?ʧ?L×?])?o3?à\?ùÞ?D³?¸(?Þ÷?N?æ1?˜p?i?“þ?ò?yÎ?5Œ?f$?pÖ?üI?±?@ø?7?(!?xæ?ÿ?ÿ\?|Ó?px?² ?D©?©?­#?Øí?ð?7ç?¯$?jÖ?Å?R?íI?»,?Év?ÑÀ?ô?/?!æ?{ ? Ê?=Z?ñV?­¾?w?d’?G?I?£¼?.|?T ?)Ö?°R?›?í?À›?Ž?G„?¡$?³,?ü?TL?…?–ý?‹Î? oÇ? óñ? ;•?úß? ã?/ã?;š?#ø??ðo?¼ò?®V?_Æ?šk?ó?PP?ïù? -e?D ?8?'Þ? ;Ù? -l? z? ¤?¦î?]? º? •?9Ð? ¿•?m?õÒ?…?XR? Ê? XÜ?'¿? õ? ¸a? Q? v)? ¯q? Æ?Ô? êø? -É4? ?H? ìÉ?ƒ«?tM?@? lQ?ý¸?›ð? -Lš? É?u? ÜÎ? 2? ? „? - ?jÌ?„??8'? Bb? &? å? 7ˆ? U? ‚W? ¦€? ¦­? ? ?Û? -x¯?Øé>øÂ4>öˆ?h?±!?­?^x? -ÛÂ? ÅU? -U0?â? ãF? x)? Vä? ŠÄ?zð?K›? óæ? Æ¥? á†? -nJ? -¢? —Q?Í#? b? Ú? pè? ÉÙ? ìÑ?3}? ñÍ? Óc? \? Ó?K?AM?þ¹?°? -m{? hð? ö‹? -a|? -™!? ï¶?üa?¾{?a?³?1?^E?!?õ”?j?²ã?\2?x¯?/í?:™?³?ì·?èg?ÙD??–?Ì? ?¡2?ÎC?Ð?Ý*?¼?%a?d0?€v?ÿ?†X?ýi?8M?šx?À?‘u?ù?9S?†Š?bþ?C -?<[>ÿ¬÷>ùÖÔ>òÃ÷>÷Ü>ö¥{>ð]t>ù >>üe ->÷õÒ>ï¯z>ô5?a?QÂ?/X?3?‰‡?*K?E?F¨?wU?²?ÓN?ÈÇ??£à?¹[?ï?Ú†?Š?|o?È?WE?3¡?4ì?•Ü?Óe?^•?Í×>þ9¾?y¸?!4?")?=q?®]?LL?z?±?)H?'é?é¢?%_?Ÿã?OÞ?¥ý?Þ¡?ÝŸ?¥“?ãÏ?··?õ&?šþ?l€?•?2Ñ>þE‡>ÿ™›?!û?)“?Dp?Ý?¸Ä?^?“?ÖE?Žù?¾?ùÉ?ñm?‘T?µä?AÚ?]j?Ÿ%?þ‡?®#?ÚN?Àš?À‡?i6?ã?ûh?§>ÿÜu?2í?_?L>?(ö?ö?º7?¢‹?Áä?‡/?`ð?³§?·?”F?¨ã?_w?lç?q¥?V“?_Z?_C?1E?Ðó?Ž%?¤ã?ò‹?ð?.>>ÿ ?B?ˆ¢? '?±S?#>ý²C>ÿÁ?Xf?ak?M¦?ø>ÿ¶-?{?­>þm¡>ý„m>÷‘“>÷Ê>û*>üÊ×>ÿKå>þÁ ->÷%5>ô‚@>ùëA>ø¡q>÷vm>ùÊ>ûZ">ùü>úW]>û%=>úBR>ùšâ>ùåO>ú)>ôªR>÷I>ü\»>ýób>üîw>÷…7>óŽÃ>÷{d>úz>û.>ù«^>ú@°>ûÐ>û…>ö£Þ>ïÎÔ>õ÷=>ù'g>ö†&>÷Áé>ù&ü>øû@>ø3>ö{ó>ööZ>÷S>÷Ÿ)>ø@>÷Ræ>ö|R>÷$>ø{>øUE>÷Ã>ö|>ôkˆ>õK\>öb8>ôØz>õZ’>öK1>öE>ö€m>õj…>ó}>ò>òÖÙ>óÉ>ô¯Ž>õÕ>ö->ö÷,>÷¥Æ>ö”7>óZB>îÞl>ëÜ’>òL‘>í}˜>æO>ßzƒ>í1±>ò=>ô4ý>óæ>îx2>íOK>ôϪ>÷úö>÷÷¢>öŽ’>òç%>îì>îIÖ>óŸû>õô¹>õxG>ö}}>ö ¹>ñÉa>ì+=>ì§;>òÊ’>ö¨å>÷Ç->÷_ª>õKœ>ê"í>çßË>èn>æŠ÷>ëÕ >òsÈ>÷U‡>øN4>÷…5>õ»>ô>ïÓÁ>ê¿>â÷š>árV>éë>ïoG>ó(1>ôNz>ô >ô²×>õ×>ôT>ñÃP>ì‹>àŽ?>×{>Ú»˜>çÔ9>ë«Í>ÚHI>Ô€>í[~>òÊf>óÚÓ>ôñ*>ô.Ã>ò-Ï>îË¢>é\x>Þ š>Í»Â>Ìüç>Þ >èMÖ>íbº>ð†>ò4¡>ò§ˆ>ó.\>ôË>óÇM>ò¦>ð’Û>í&¢>æ _>ƨ/>—ñ€>®Ó>½ëM>Ç#‡>ØÊô>ã>èí>é_±>äÊ>æÍ¿>íÙ]>ïÏ$>ð`Ò>ï·Õ>ì8 >éȽ>ë r>é1]>ä? >Ùo½>É>¨¶ì>b¯>W|Ñ>“ÖÁ>²þS>Éùä>×B>Þ’÷>ßÇó>Ýëh>å@V>éYG>ê'Æ>ë˜>éÌ >馗>éóx>é•Ì>ꇳ>ê]/>ê«6>é3%>å–o>â!x>ßã–>âG>ß.Ë>×l>ÍÎ>¿4È>±›>¾Q>Ï¥}>ØH»>ܧ‘>ß‹×>ßdò>ÞR >âÕi>ãn>ä‘=>å+Æ>äJô>æ¿”>çA]>äNÄ>ãË>åVì>åÍ>æáV>æöT>æ?¾>å¯î>å,S>áÏË>Ù«!>Úö >Ýí>Ù\>ЄÁ>Ã*->̹>X7>>vKs>QÎ>·h>™…>Ê_]>Є‘>Ôüf>ÖIô>Ê‘.>ѦŽ>ÖÎB>×È>Ñ‘!>Øã>àý–>×ô\>ÜaK>ãç>âS>à(g>Ý®Í>ã<¥>ä4¤>Ý2Ç>×Æ>Þ(\>â&ƒ>Û³I>ÞÝ>ã@A>âÊ7>ßP>×ã >Û¹b>ßÄ›>Ü €>Öñ>Ù» >Øøu>ÐÁ0>Ï"¹>ËRñ>»‡ú>¤í=>ª”}>Â'>Ì?ù>Ò0ß>Ù4›>Ùˆ—>×E¸>Û®‹>ßqÃ>ß÷X>ÜN³>Ü_ä>áÕˆ>â”Ø>áò>âz%>âJª>ã‘¿>á†>ÚŠû>ÙÇ”>Üñj>á!>áßV>á‘>àNò>Øñò>Ë’±>ÕbË>ß©>áG3>àçÝ>à˜8>ßÍ‘>ÞT—>Ø}â>Ôèx>Ý|”>ß„†>߉V>Þ“o>Ý®‹>Ú!†>س>Û{)>Ûæ>ØPî>Õâœ>ÖäD>Ö>Ô2‡>Ðÿ…>ÌK™>Ãô>± ^>¨_>¹¤b>ħÜ>Î[æ>Ò…±>ÐP>ÒÌ>Õp«>ÕtÕ>Ôêå>Ôeœ>×Ðñ>Ú(>Ùw·>Ö€ª>×/®>ÙÖŠ>Ù>ØrÇ>ÙÏ»>Ùó>Ùÿ°>ÙÄ>ÕF >Ï8f>Õi>ظK>Öü>Ô°^>Õv3>ÓD6>ÌøW>ÌÓ‰>Ôùy>ן>Ø8×>ؤÈ>ØÉ>×>Ô…]>кå>ÑZ3>Óc">Ö&K>׸/>פa>×”÷>×h~>ײ>Õ¤‘>ÐïH>ÐÒæ>Ô µ>ÕNe>Ó©ß>Ïv >Ï@€>Ñún>Õ D>Óìø>Óø >ÔE/>Ók‚>ÓoN>Òõ>Ñ_=>Ìçà>͵A>Ðí¢>Ïrû>ÊRñ>Âü¦>½†W>±„>©¯õ>¹ó">Ä­>Æ’ô>Éý¡>Í Ž>ÎyŸ>Ïk…>Ц½>ÐR>ͱŒ>ÏhH>Ñ»>ÒB‡>Òr>Ò4>ѱÃ>Ð9A>ÐÖW>Ò&7>Ñ•>Í />»c>¿ì>ÏÎ>ÑÖA>Ðú<>Ðãé>л>ÍÙ¼>Ã8>ÅÍ>Ï%ð>КÓ>Ëây>½^•>Å|2>Ë[F>À >Çü>Ì=q>͹>͈û>ÌÛé>͇>Ì£>Àç`>Æ“>Í">É›8>ʺ>>Í(>Í)>>Ì‹|>Ík%>Í£>Í­>Îò>Ížb>Ͷ >Í9€>Í[á>Ê«B>Ç7i>ÊôÎ>ÍW|>ÌÇ ->ÌX>ÌÎ>Íõ>Ì6>Ê79>Ë9>ËÅÿ>ÊêÈ>ÈÄS>Ç6ê>Çòí>ÉRè>ȼ¤>ÆÜ>Éôj>Ê|º>Ê£ø>ÊÅ›>ÊŠ>>Êe">ÈÜ£>ÇâÅ>Èuá>Çgî>Ç©Š>ÄdI>À]í>¼t¿>Áf™>Àe´>¾Y!>Âz=>¿˜e>¸K¾>¥?þ>žÀY>²¯3>¼Ö%>¼‘^>º½>€·>½‡>¾Ê™>Àòe>Å(û>Ĉs>À,>¾B@>¿™>¿|m>¿ëv>¿ò¾>Án>Å–>ÇÜ>Æ϶>Ç<à>Ç4ê>Æ„ˆ>Æ”ê>Æ›¬>ÆZ·>Å™¥>Ã"µ>ÃY>Ä€M>Ãé²>ʼn>Åé¹>ÅÏh>Äð9>Ä–>ÄUT>ÃÜï>ļ1>ÅÕ>Â-,>ÁŒ>Ãòª>Ùh>Ãeô>ÄB >Ä÷,>Äwç>Ã\õ>Älƒ>Ä)>Ä]}>ÂË’>ÁÀŠ>ÃAŠ>Á ×>Á+ï>Š…>Áñ>ÀÈ>¿½à>À>Âþ>Ã)ß>´¢>Áœ¢>¿/>Á­œ>š†>Á–Ö>Áv‰>Ápr>¿Ý±>¿Z>Àd>¾ž˜>¿[|>ÁI÷>ÀM5>½è >»ø>°>§>·!–>½Â>·…>­æ>ºŸ>¿„0>½=>¼ê>¿Ý:>¿Æ±>½ŒÖ>»r">¼(t>º°>µ‰È>»Ã$>¼µ±>¹Un>¸Øš>¼˜>½l½>ºØ>».6>½~ã>½à>»´>ºDI>¼DÁ>½t¼>¼Ñu>¼–î>¼×t>½¶”>½™é>½D@>¼×è>»¸ª>¼d‰>½9R>¼µ+>»ž>»•³>¼ES>¼/>º¨n>¹1>ºÎ>»>»>»F >»`ž>¹øD>¹å>ºÊ€>¹ú>¸I>·]3>·Ì>¶%¾>´þ¥>´E\>±?>¨¡Û>–­X>šþ>©Šw>¯ä‹>³>´Ü‰>¶o >¶Ö>¶{¸>·?>·ïö>´¯ >´¦ã>µLû>·>¸¶k>¸Ìè>¸ß>¸02>¸,>¸±z>¸ P>¶xÇ>·Z$>·õ>µ}¸>®Š3>± >´Û±>¶÷H>¸1ï>¸=>·å×>¶(c>­Tî>°ÙY>´‚·>±ýø>µê+>µ<>±#)>²Õ¡>³hb>µ ->¶žæ>¶.>´dž>°½À>±¶:>³EÅ>²|ç>¨/€>®½ >´½ê>´Ox>µAq>´jj>±K>±(è>°;>°ô.>¯b >±}ä>³©x>±ñ‡>¯·>®„Ú>°®ã>²ï~>³-¡>³›,>²¦>²T>²}›>³ó„>³ÊŸ>³ã~>³œÚ>³bè>³9t>±Ý]>²>±ä>±>ò>²…ª>°üX>­{6>¨ö(>¬»@>¯§ >¯í¾>­a>¯¼ë>±D>²D$>±â(>±JÌ>± µ>­§O>®ü>>°f>¯¡á>°ÊÁ>±ƒ>±‘>±+Ž>°dº>®3D>­Ä7>¬sV>®§>° >>¯áñ>­Óu>­‰û>­Ùå>° -;>°)T>¯æq>¯e>®Ý™>¯ÃX>¯œö>¯2>­éy>®žJ>®6å>® >®[">­'U>¬¶±>®I·>­«°>­.—>­ü=>®_[>­·=>«ö—>ª>>ªÊÃ>ªU>¨‚î>ª’>­)ü>­O/>­¡>¬³>¬ÑÈ>­j‚>­g×>¬b¿>¬f>¬†>©ØQ>¥$º>§4 >«?D>«˜>¨a4>ª¬>«Ai>ª³z>«B§>ªN˜>§gä>¥í[>©+~>«³€>«^­>ª¦4>ªÙS>©È¾>£O>§"÷>ªåÿ>ªÈ>¨«“>§N«>©¾ß>©ýÍ>¨Î8>¨£>©6Ž>¨Ó>¨¹À>¨³>>¨Áû>©1>©M>¨Êå>© >¨û0>¨±>¨{ƒ>¨jn>¨g©>§æ >¨$.>¨uM>§ >¦Ì >¤²ý>¦‹‹>§Jz>§°£>§ö>§¦K>§º>§‡‚>§[Î>¦¨±>¦Se>¦‹]>¤Û>>¤çm>¤×£>£œ>£P>Ÿ?>¡:J> þ¸>ž‡¹>˜°Þ>ˆ“->…ë >–á®>@>žå>¡$ÿ>¢Eå>¢‰`>¢ÐV>¢#>¤1`>¤´c>¤uO>¤g>¤@>£9>¢ÜÜ>¤[g>¤q>¤®>¤Èð>¤Â„>¤ºa>¤s>¢È> Jç>£%>£QÁ>¢ G>¢¸Y>£–L>£R²>žÒË>œA¾>¢¬>£dš>£4Ò>£>$>¢åg>£7>¢Ê–>¡%>žæ¾>¡Íi>¢”">¡öË> Í ->¡X>¢uo> —Á>ž+Ó> ÂÂ>¡ºí>¡vÈ> Š>¡«¡>¡ºa>¡­>œRÒ>›Uº>ž›ç> ­þ>Ÿ…ž>Ÿ‰]> ‘A> n÷>  Æ>ŸÈ#> S>ŸmÄ> lí>ŸÚt>œ9¦>œõ)>Ÿ¤Z>  ">Ÿºi>Ÿ‹>Ÿ¹È>ŸÑÎ>Ÿ‚\>ž”Á>ž„>Ÿ*E>œJ]>œÑ>Ÿ#>Ÿ0_>ŸŠ>Ÿÿ>žßË>žµ®>ž^,>žQS>ž¬>žJ÷>Ë>"ð>ž>ž>h>žý>Úî>œ+>˜è‡>œÕ>Ê>“>œýä>œã>œ=¡>œò‹>œŸ>›Ë¹>šÔJ>œy…>œË¸>œ{ì>œwé>ší>”ÁH>•3¸>™.Š>›g©>œÉ>›2ð>™:d>—¢P>šAª>š…>›WL>š£æ>›±>›J>›j>š v>™Øï>šIT>–Ô†>–‚ø>šC¾>˜#Y>˜eò>š+‘>šo>š!a>™£ø>™™É>˜åü>–á¥>™&>™eL>˜ü¡>—õÇ>˜>™:Á>™[>™‹>™×>™£>—GÏ>•Ý#>–â¦>˜Ò>˜˜]>˜Æ>˜X9>˜8ß>˜*O>˜½>–‰›>•ÖR>•Õt>9s>Š­Ý>ò>’ž;>–åB>—kê>”ªH>’>•ºÇ>–Ȳ>—5‚>–²F>–ªW>•.>•Æ>•uÍ>–%ž>–Ê>–¸>”,>’YR>• >•©>“w×>“Z¬>”r>“º->“¨>’XÝ>”c»>”Ô>“È>‘uH>“@i>”Ÿ+>”N>‘R¥>“Ý>”þÜ>”ÑÕ>”Ÿ)>”´‹>” -½>’*¬>“ÆÃ>”u7>”LQ>”Hy>“Ü]>‘Ð>‘õ>“+w>‘öý>Ž{Á>Š´ò>¡ƒ>“•^>“}¥>“'@>’Xî>’î”>Šca>%u>’>‘¥œ>’N‡>’.->’o´>’™Ê>’d5>09>Ž‹“>Ùl>“Ü>‘Ö&>’^>’z>‘Ï,>‘“F>‘cG>‘yF>‘: >âË>O >Šç}>Ž›Ó>é>™S>µ>fX>LÈ>VT>ÜÑ>‚4Á>¶¶>Š†>Ö>ƒäi>‹¹>~è>Ž >Ž¬$>3>†>;¨>o#>5>x%>Ž|X>$B>«k>‡dÑ>ƒ¥È>Œ¨>Ž ú>ŽÚ >Ž’â>|>ŒLÇ>‹¹¡>‡÷Ø>‰y•>‡.Ð>Œú>ƒX>!>s„>‹¡ˆ>Œƒ>l‘>>N\>µ>‹(Ì>ˆeB>†U >‹d>Œõ×>Œ,w>ŠÙ_>‹à>‹á”>Œ’>Œ\O>ˆjÜ>„ >Š€Í>‹“Ê>ˆÁ@>„pñ>‰Ý>ƒød>… ]>Šuë>Š(>Šº>Šä%>Š’4>‡~o>ŠA«>‹1Ì>‹C+>‹?7>‹+ñ>Šõ¸>ˆ’ê>†ÂÊ>ˆµ„>º->„Û„>‰˜‹>Š:í>‰ï‚>‡Û>„ž>…ÝB>‰4ß>ˆ1,>‡¿O>‡P¼>‰å>‰H•>ˆ¾Ð>‡þ”>ˆY7>‡l>~®->‚`>†¤x>†‰U>…è ->„€_>ƒR‡>a>y.>]˜>Vˆ!>u0X>€K@>‚œ>ƒaÔ>€›à>y¶>íQ>„éƒ>…õú>‚²ß>ƒ‹>†5 >†€Ä>†]R>„Îx>~p•>€ÜÏ>‚ä·>…h¶>†@>†[>†50>…ø¡>†-<>…Ïe>…¥ˆ>…æ>…ã³>ƒÂË>‚˜E>€W‡>ƒ_>… y>…®œ>…?h>„ãÇ>…d>…%W>„t8>„5§>„Ø>ƒ¿>„.ò>…>„T¸>ƒ2¶>ƒ]€>„ªÕ>„­ª>„ož>„{>ƒû6>„;Ù>„sä>ƒû›>ƒUÃ>ƒ\T>ƒê‘>ƒà>ƒ<¡>ƒÊ7>ƒjr>ƒX>ƒK²>ƒi>ƒ-y>ƒ>>‚ÿ¶>‚ß8>‚Ê.>€å>¥>—>SG>~÷H>Ì>€ð>‚z>‚‚‹>‚Ö>ún>!‘>sÕ>í>Žñ>€\½>€â>>‚>ü>Í“>Œ>Z&>Kô>€ÖÌ>€¶L>}â,>uîu>xÿ>€Ç©>€÷Y>}Ï>~|>{qó>€æ>€Á[>€Ñþ>€8>}Ôó>€I>€\˜>€FY>€!Ò>Q¬>›Ã>€=´>¯i>Óî>Æm>~2>}>>~Ǿ>w¹K>pÙT>vÊo>}d>{â±>~]ƒ>~¹>~t‚>~l}>}â{>|– >|°È>}ר>z[>qõ>s|É>y¼p>y*9>vÔ>xd>yy¢>z»D>w’>xÙ>z…_>zx¾>{‚>zœ>zÓq>{ú>q]I>m0”>v>sNY>wS2>yðB>xyÊ>xË´>yZ>xëï>tŠï>q×\>xAæ>yg¯>x•R>w·Ó>w©«>m¬K>rÂ>u‡à>mËÜ>lÐ>oì÷>ojf>p/K>vWÆ>tO>nÕT>lü>h8S>pêI>sXö>pÇW>m7>tÒr>sÇU>pQ>sõ>t©©>uso>u_¹>sÏÏ>n02>rá>oB{>j@þ>m®>s —>t±g>sî >t)>t8Ù>t>t ä>rý>qDÞ>sda>rªŠ>r¶>p!õ>p¶À>räÜ>rÈÌ>qßø>r™>r8„>oŸm>p<ê>q½ô>q«$>q²>q0®>n,§>nbq>mÖD>pCí>o¿l>p…²>p]¤>nñ>lÓÀ>nå">pKç>p-Ž>oÀä>nx½>jU‰>m€>o>oL>ng>n›>nƒ>n[‹>n6>n4O>m˜*>i‹è>lX>in >acq>h à>l²Î>h¤p>jTˆ>g¼>aYî>aJ§>hÝ+>in‚>bU>iû>kÚ>d–Õ>c=¡>kO£>jÝ>c9>e— >j1>gÃ3>d%A>dæa>bÛK>bb>Tj>fi¬>j~>d‘>\ >b1{>d§T>iu_>h¾ç>hÄÆ>h¬/>_‚+>b½‚>g2t>gá@>eªÜ>gs±>ha>h ·>g«(>g_ì>gYG>gbå>g">fx'>f•Ç>eõ.>f†û>ex>e˜½>eZ#>f2\>b^¸>WS§>[ì#>GÇ>Xª.>dê¨>e¨{>eF“>d“%>bdy>_ÕV>_ÕO>\A>`ŒR>[Æ<>cb >d'Ô>dš>cà`>cOå>\ä%>^¶¸>c]ö>bÁ¦>]ø>a?>b#ï>\ýÖ>_³š>a@Þ>Tá…>Y†¦>aî<>a¾>W`Ê>ZÏ>a.>_`]>Xúú>`+•>ax>`v>] ->W½>]´Q>`ÆŒ>`Y>^â>^'…>Vî>Rô5>QzÜ>]Bñ>Z5>Qxl>PYi>[£:>^Ôx>^²â>^¡ë>^•Ä>^šç>^|Î>^†Õ>^FL>^Q>]Õ>]˜²>]ÏË>]žÍ>]2>]4Ž>]˜>]0>Y -¢>ÏF>ßã>í_>ù5S?À•?'’?þ>ÿp >ò¥õ>ìiO>è n>Ûù›>Æ‘Ã>±B>§X>­²¬>Áñß>Ûâ@>ð+>ø-­>ñæz>âΣ>ÒMG>ÄÑã>¹qµ>¯ U>ª&Œ>±£Ð>ŧÑ>ÝI>ì¤R>ï V>ç¥ ->ÝnÊ>×=>Ö÷|>Ø0]>Ö|Ì>Ô>×¥>Ý© >ßö>Þm«>ßc!>äs>çšã>ãN)>Úï¡>×°>ÝQ†>ìÚ¯>þ=H?{b>ÿ߃>ëPÿ>Ô0—>ÄÖƒ>¾pŒ>ºê>µÁœ>¯)÷>¨}±>£\Œ>£¸…>¬S¥>¸~.>¾Ä«>»  >µ>³÷I>³´ª>«‘Š>šÕ>‰6™>…˜n>”+Ú>°¢>Íy°>àÚ>ç_¯>è€>ì.ý>ö£E?|/?@ó?¡?ù¦>þKé>ýñX?Jõ?© ?Â?Ðî?)>þ°>øï>ìDU>Ú,>È“Š>¼žö>¸C·>ºƒ¶>À,Ú>ÇÛ>ÏýI>ÚYÄ>á8>àQx>ÜFX>Üó>ã.>èÏ>æ÷ƒ>á°¤>ÛÄâ>Ös“>ÒŒÓ>Ð÷h>Ñ>ÑÙ>Ôx>Ùýà>âsß>êˆ+>ò>;>ú³¡?Üö?^À?¶é?gœ?µÀ?Xì>÷g >év >Ýìû>×µÌ>× ¹>ÚZ%>á È>ì¹l>üS—?å)?@ó?Ó½?Á?^“?7y?tC>ûS >ò>脉>ÞDm>Ñz>Â,x>´LP>¬>©o>¨>Á>«Ë>µ–>>Æúä>×Η>á¥ø>å>Æ>ç š>çÿ>å@€>ß¡b>ßkò>ì -?Wx? ²?¡ ?EÑ? ôC?,?E!?? -_l?¶r>û ö>ÜõŒ>À8>¬eš>£ºÅ>£ ->§€>¯ûo>»­*>É/ó>Ö9×>à>彚>éæ >ð¶„>ú53>ÿ/>øŒ>ã>Éym>¶¬¶>±,ê>·ãÓ>Ãó%>γ‹>סÉ>ãŸi>õ%8?ß{?oæ?Rß>öŸ>ð£>ðao>öÆU?ùî? -}d?9Ð?Ê#?›}?¤m?»8>û×>æ¬>Ó ‘>Çd]>Àh,>»Aö>¶‰M>¶õw>ˆÀ>Õw±>ã0Ä>æ9,>æçw>íÍ>ø">þ ->üG>ó°ã>éê¼>åi¯>çÅÖ>ê³>æ,”>ÚÛ>ÍÐ>ÁÜ=>·S>±:n>´—›>ÂA³>ÓÅn>ß<í>ݹ–>ÏIT>»€y>¬Â>¨/Ê>«·>³³->¼Ë~>Âz~>Än–>ÉIƒ>Ô¤I>áMF>êQä>ñÿœ>ý>ž?’¯?R,?l)? :?Î0>õi >í¢I>ò|>üjm??RÓ>ÿr†>ùl3>ùm?NV? °þŒE?>? Ó?Az?ˆÅ?C>?K?–Ô? Û? ŒD?‰ô?‡? ?<ó?ŽÇ?“Ä? ýÍ?ðš>þ©È?? žž?AÁ?QF? |r? çÁ?í›? /?Þ9?ó?¹Ò?wm?ñ9?8>þhV>à>Ö0>èv?îÞ?öÌ?×À?×;?Dù?Þ1?",Ó?"F‚?ÊÔ?Rf?ÈÞ>ñFž>Õf£>Ë ±>ÛYÜ>ÿSÕ? -?TÅ?¥d?»z?÷ò?{"?¾>õI8>òÐ->ôgî>ð9Ï>ånÅ>àÄ">íC?SR?ñ? y§?%ô‘?#„"?Œ3? -œE>ú¾½>òëá>þ E?‹??D¤?e‡?àh?ÏÌ?Îœ?×·?If?_I?šR??f?‰Ã?óH>üPˆ>ýŠø?2?'å?p¸?%2’?)âÕ?+ -±?+N?*r¢?&ö¸?Ùt?,¤?Ç?Έ?hò? ÉJ? OS? ~$?ùøŠ>ÜxH>Ó‘ÿ>ÚX¾>çvê>÷sû? -w? mŠ?£×?£ ?)—r?0Oá?2]?.µÑ?%–V?Uð?®¦?`¬?):5?2«¿?35Ñ?+‹? hÐ?2ƒ?-=?x? £É?'Þ?Q¥?—ÿ?˜y?-R?€¿?eX?Å?!I±?$c¹?&Õh?($?&(T?!Câ?–Þ?¢i?S>÷Ãe>ïjí>ùÓò?Áu?à?JÃ? †Ü?"È–?!vK?) ?˜?°?gb?#áM?-Œ4?0Ë ?*® ?°?§°? &´? ˆÓ?U?GF?·4?Âþ? -À#?F? P? $í?ô!?) ý?0e®?3$ô?5k±?8] -?9Uu?4ç ?,TH?%l?$»?&üÏ?)Eÿ?'F?!?1?3ú?j?’«? y ? ÙÌ?¶Ù?%J›?0ÏZ?6 -b?3î­?,_á?"Þ–?Æ–?º?_?[1>û%’>ó»>õ•?º™?LZ?"'Ê?)îj?*‹a?&Ç ?!vû?ù?"Ñ-?)àm?-ÉU?,±2?*)½?*ç•?1Å?9â?;V ?5°?.¹ž?-8ç?1>ñ?6 ?8lå?8nà?7 -?4Sg?2À²?5 “?8½7?9÷?5#¦?.\P?&“ö? Æç? ›?&’–?,¶æ?. -à?*¶?&¢„?$éå?&q?+…Ä?3¿~?9…G?3r?Ix?m >û¨õ? $? é?¥P>øAÜ>ê¨X>ñÕH?Z¶? -­?wÊ?mz?<é?Ü?¼9?£:?‰ä?Ùð>ë]>Ð>ÆÎ>Òz>áWü>ßœB>Îüô>Á»¯>Ã{¥>Ñ×Q>å„>û°? \?§¶?%ˆH?'³>?%yÍ?&l:?,¬â?4ñë?:ñ:?úSí>ù+‹?©Î?SX?Ó¿?ß?Í?íM?$âõ?!ŒI?÷5 >Ü®¦>âq>ÿ5"?2´?°–?"aÒ?$Ûf?+ý{?9T;?E¯†?Jðç?HßW?>á§?*P…?.>üðú>úû?Þ? 4“?]Ô?Y‘??&Œ[?/øH?9~¨?>ÓÇ?=ç?8"«?0f?'…Ç?‘Ò?%ø?ï«?p‰?Ú*?ä%?S?2?%=I?0Ø.?<Ö?B©?C‚8?B¡[?D&Ã?HjM?M“ë?R,«?Ty.?SÑ(?Qr??MN?EëŸ??€I?> ß?@º‘?Bú?@bK?<ô£?7À?1_ï?2êÔ?=…)?I]ª?NZ?LVš?Jh?I…?C»?8Ä?.‘Y?*\ª?)x?*vÂ?0M‰?8²??wp?@Â?:£°?/ó?%æ.? B±?" ¡?,7I?<ý?Lê¿?XcG?Xäl?Oà×?F7?BŸ?AªT?Bë¤?HLÒ?S9?_ ›?eÏ?d­?]€r?QÄ´?A‚-?/¤³?!Ô/?²?]1? ØS?#ù=?*5ù>ä>ã*½>åÜ„>ûÉT? Ç?)ô¤?BU?Tö?[F)?T¹%?D*j?3 >?&"È?¼F?l¦?ö2?uJ>ï8„>î´¯? -óâ?(œŠ?B™%?UâA?g,r?u–??wX’?cî?A•ä?&h?!‘&?.<ª?;_Û?@îx?@€y??ž!?C©‡?H3?C^:?9t6?6ˆ=?:-$?:‡??8¥ -??*)?O&D?^*â?e ƒ?fKB?fÌá?hi&?iÉ!?kÙ?rª.?}#Ù?‚ U?‚¿?ƒgZ?…Vç?„Å¢?yÉ?a–?Oë?H°J?DO³?An;?E~‰?Má ?Oþÿ?H`*?=¤`?6~ê?2À?, £?!Õ?,"š?7G¬?F[ôIR>ç‘Ô>ía>þ;“?Kƒ?ŠË>ûbL>îÞÄ>ñ̈?˜A?oY?0Ò†?AL&?Gö0?J 9?KïF?Q?V¨©?Säß?Gé‰?@lÝ?FÞ?Q9?QÊÊ?IYó??È?9 -?6XÏ?2ç?%»Ú?, ?k¾? ?;»Î?UÇÿ?`2¥?]D?Uîž?Pj ?Lð`?Hn??Ü -?1µâ?!¹Î?•J?†ë?1) ?JÀ€?\é?\7?LäÙ?94&?0éõ?6eÏ?9å ?2.V?*™[?0v?;Æâ?:9?,Ó?"Æ?V˜?0?$é ?5¨ý?J2?Wà`?\Ê?'˜?-œ?zߊ?vÝ8?s†?nÂu?jñ?e?Zxü?M)Ì?C9‚?B9u?G÷%?Ms4?KkF??DQ?-•?4é?…>ÞWé>½¸ã> +@>ƒÃ–>Uä>9.‡>CÓ>rb >š|>¿©*>çk>?ø]?¾?"Ñ€?&ðH?&jÞ?%‰?,NÏ??\?Q•o?WXä?WÏ?]XË?i‚I?p f?jüµ?c–d?eÈ.?lc?im?`eó?_(?fÌÖ?k°?^ÐÜ?Aó?$³J?’? t?šf>àÖ>³l>ˆeP>[ì[>Z^>…“+>­Vì>ؽ>þÒ ?q[?$Š?62ã?FP?UÖ\?fÿz?wk?€Óû?ˆp?}ÿÂ?yd?w¢P?yŸP?{ã ?~×?‚¤Û?‡£?‰=c?‰¾?Š«?Kâ?Ž¾¸?lÑ?Š'?†Š?ùP?€®X?…×Ó?Žµû?”;9?•Wê?–b??–??ßi?ƒLí?wƒœ?÷?ˆÚ”?†z?‘²Ê?’HŒ?“6Z?”=Ð?”Öf?•Uh?–P{?•äô?’ø?‘öÃ?•¯”?™:?˜©&?–…Õ?•j°?”<'?’UR?’²!?–ÃÞ?›aÕ?œàú?˜˜h?Ž:Ü?ƒRú?{6—?yhQ?~ó?ƒùŽ?Š÷?“—F?›kÕ?ž“±?œ ü?—‹ ?•Þw?—Ô -?–O?‰š‡?n$ñ?Z·÷?ki6?‡R ?“™?˜?˜¦?•Ì??Šz4?†zð?ƒä_?‚J!?,V?zì?ë?‡©ñ?§?‰‹­?|N&?i'Y?kª?{•8?‚R‚?„9³?‰Ç?$÷?ŽÐe?…©§?á®?„Á$?Œh?‹Õ?ƒQ™?p„?d‹%?kcü?€ -?‹Ð?“zI?“eÖ?‹L?‡ r?…”ê?ˆOá?Ž¸>?•K®?˜ -ö?–]?’ò?2+?8??O¤?‹Q?„Çk?}]¨?w@Í?sGÃ?iýÆ?VQŒ?>ø¯?6@=?DDF?]Hš?tô?‚H?†æÙ?ˆ"ž?‡6N?…ÀÛ?…Q*?†Ï?ŠtL?_?“q?•é‡?–÷õ?”£?ŽGÎ?‰.?‰ò›?Œñ–?UL?Œh??@N?Žà¡?üÃ?Šœ]?‡y¶?†¡|?‡‚ç?†Íå?‚%?y©”?x2Ü?€—G?ˆºº?QZ?“£ž?•Œ?˜Iè?™j?–5r?Ö?Hü?w»È?%I?ŠŒ?DS?j”?ŽÚã?ŒK?Šð²?‹ª_?‹$?ˆa?„,)?‚ §?‚ÖW?„‹V?ˆ‹å?Œ­à?ŽÇ?/&?“ìá?˜A‘?™7ï?—`?“Ï ?Ž?Š#?Œ'Ð?m¶?ŒPS?‚“„?rÕÔ?o—?x‡Ò?õ}?„lô?ƒ¼8?ƒül?‡¡¤?ŠÔ:?ˆÚY?„P?‚‚²?…Ån?Šyû?Š(?ƒüÖ?€Ü‘?…{¨?‹s“?P)?Žøè?”œ?–È ?‘vÌ?ˆ‹M?‚$w?{/Ô?táe?w •?{‘^?zB?zæz?úÍ?‡Dð?‹Wî?!O?’`É?“ˬ?’‰«?‘,v?“Õ?–ø÷?˜Qf?“ù4?ŠÐô?„O²?†T?Œ7ø?L ?“Oº?–¡?•”ê?Ö”?†-?r?Sj‰?AG¹?Q†¿?y¦??ŒÆ!?“”³?“’x?Ž\©?ˆî{?…Þ ?€Y?{2?|±U?€u?µJ?…€©?‹l?9©?œ?ƒu?‘ú†?×?†Â^?™Ì?|ùë?zj*?˜¯?‰Ð'?ŒÉ?ˆ‘t?„þA?‡Ú?Œšu?Š{”?€Ó3?mpÊ?hõ½?{#P?Š¼ˆ?’ºÙ?•bM?•óž?“?‚?E}?‡"o?ö“?kXý?[ùk?_u?jïK?r¯r?~so?ˆ,Þ?Žž´?Ž•ù?ˆù$?„"i?„”Ž?‡;?ˆH?…‡O?€@?zà¼?yîÊ?r«?e@š?`ß?m4?[U?„É?‚:µ?}‡X?ud¶?g î?Q–Ú?;Þé?3=ú?8#ˆ?>¡?C%ó?I€'?KVü?E»B?9¤®?.-û?.š?:#b?HöU?XQÛ?h?–Á‹?{(?ˆfz?ˆÇÏ?Œ\0?‡Úì?~j?Õª?‡?‰X?‰”¶?Ž×á?–Ö?œûf?ž¬Õ?˜pc?ŒÌ6?†û|?ŠÐ|?’Á?™Ò?Ÿ>ú?žg?•àµ?Û€?y˜?“Ü?•Í7?—Ý?™#?˜úÖ?”Pò?«?ùí?¼ä?Šx‘?†Då?‰VÌ?’H?›/]?ž5*?š<ƒ?‘ù¼?Š’V?ˆø?#ì?˜!?›‰ ?š-÷?™ûè?™ýˆ?˜f?—<©?–[E?D¢?†Vï?€Ð•?‚<«?„]“?„Aú?„3 ?ƒÁU?ƒ‘¾?ˆH°?w?‘ëõ?’Y?’Ÿ?éö?å“?Œëk?Ѿ?–Þü?›×?ž”¨?ž¶Ô?Ÿ¾?¡e@? kä?—Î:?‹âˆ?…5v?ˆD ?‘þ=?›(¬? )Ê? À˜?œ&?”ç?Ž`Õ?@]?”¨?˜ã?•‚L?‘4t?‘‰?”Ø„?™[3?›æ?›Ê?˜<[?˜¶?ž˜X?¤C?¥Þ—?¤¢ô?¡ö(?Ÿž¾?ŸüË?¢ Ù?¡À«?žt?™mí?–‡¾?–s ?—Ë?–Rõ?–´†?™S}?›h?š{?—n?”{Ê?‘aÃ?‹ýQ?†)?‚ƒù?€Îw?‚oK?†”K?ŠZÔ?‰u?…8Ì?„¢O?‹ýK?–~ï?š¬j?—•?“w?’¹?”Ç?”Y`?‘J ?Žæ‡?ŽN´?Œ`V?‡Ñ¸?…®¬?‰eH?=:?l?‹æL?Š» -?Œñ4?’ - ?– ˜?˜®?™©.?šÈ³?˜æÑ?’t?‹¦ê?ŠƒÀ?Èè?•Þ*?˜% -?–½ð?’½t?Ãa?”¾?˜Î—?™Ÿ?™J?™T‚?–iY?)|?‰éM?‡i]?ˆWU?‰\'?‰ Q?Š>•?ŒöF?‘ñé?•ö?•õ“?‘ãÕ?D?‹õ·?Œ»X?ŒOø?‹Ë"?Œ²ð?Ž9ñ?Žhý?û?ä -?‡´?‘Œ÷?É@?‘.¿?”Q¹?˜bM?šìò?™ñ?–¶H?”H©?“z´?”­0?–Lì?–bI?•ñ?”åæ?”¯E?–Üi?˜aw?˜5R?˜¢?—‡5?–óù?—íè?˜«K?—•Ó?—rp?™ ?˜†ã?–#t?•?”ùä?“kž?Æ—?ƒª?™?’þ?•-?”ض?’ ñ?Ž=?ˆð?…€C?†ã›?Œ2A?‘âå?•|ò?–­$?”›b?ªË?ŽÉI?’Ú?•Ð?Žâ¼?Œ9Õ?Š m?ˆÍg?‰n1?‹üê?Ž¶?Ž[^?Š‡?†ëL?†Ef?…ÑÝ?„Tñ?…A·?‰ú¨?‘ ?’Ö -?‘ÀÔ?•–?‘\Ü?• ?—ž-?—±V?˜Î?™>Î?˜ Ù?—Eè?•²¢?’N_?«"? ?µá?Œíe?Ïž?Žs?ŽûÕ?€…?“R?—Ä~?šÕ×?š©?—è?’7â?Žæ ?¢1?“S½?•¡?”dØ?‘Âú?VÜ?`?Ž.?šc?‘ÚU?“?“[a?” f?•àÞ?—¸?˜Tj?˜…R?˜ëü?—ÿˆ?”òš?ÈU?Œ\ö?ŽÔ?“R\?”˜Z?’aF?-î?¨]?\?TC?ðÝ?’ ­?’ æ?‘iÀ?Ž¶?ŠÇL?‰lÃ?Š´3?‹„?Œù.?«?‘2D?Ž«A?Šì÷?Š{d?Œ¶B?Œâá?ŠÑ?„z ?zœÊ?sKC?s ñ?iùŠ?OÇ6?1qD?*¤¶?Aœ‡?]?ß?o®â?{˜í? ?ƒsu?‡ß?u°r?mÖF?vå°?‚*¸?…†?†»Â?ˆ ÿ?‹‰?ÜŽ?]ç?Œ&?ŠÍ×?ˆ›z?„>I?µ?‚„Ã?ƒ?4?zzU?CW?ŒL—?”¢f?—P|?–¥O?•h?“Uo?úª?ÐÊ?A?Ž)T?F?’÷f?”3??“Â?Š,?„[\?„7r?‰~0?(?“ -Ð?“›`?>?‚gŽ?rt?nŽØ?yËÆ?‚ðÈ?„?‰?† ›?‹„„?»ô?’Y?“Õ4?“Ò?‘«?ŒHŒ?ˆ)ñ?‰ç?Š<«?„ñú?€N6?ƒ{®?Œk2?’¯]?•,?”Í@?‘qF?¥?‘íÖ?“×_?”™?”%6?“Qé?’?‘–º?Û?ƒ›B?}DZ?ˆt¸?“¿?–øü?–®?–V?’Ê ?Ž‡?Œõ?Œ?«?‹´|?Œ¨•?Ãâ?“Á?”ÈQ?”Ë:?’þÝ?€?Œ]Í?‰ÿâ?‡Q?€žµ?t ?ui??‰îè?‘°?‘@P?Žfh?‹¾5?‹ÍE?Œ¦?ã£?Ÿé?žÔ?¶ë?‰Â?…¤w?ƒ¦ö?„ e?„„? ø?yiÍ?š;?ˆ=?Œ.‰?‰aI?‚ÿ`?zo¸?wÍY?}Œ?€ ‹?z3Ø?zUÕ?‚,¬?…Œ?„±Œ?†)ä?ˆªÉ?ˆr?…^†?„©ƒ?ˆÚ±?Œ<É?Ž9?ÁQ?|Ø?ŠA‡?„Pï?„pé?ƒ;b?yì?jàe?o˜A?„?Ž-?’±?‘åÒ?‹jª?…SÐ?„B-?„õ/?†ÃÔ?Šém?Ž\1?5?`Î?»?’bÈ?” -Z?•Xã?“; ?Œk?…Ù?†"\?ˆb?‰Ãý?Œvô?Œ¦?ˆ¥ ?ˆS?ˆû¹?‰Û‘?‹_ï?fU^?€(´?‚'?ƒÁ?‚½t?yn?tk.?|Ÿ?}æ•?|·?€å°?… «?ˆ'N?ˆ‰?†? -?ƒý2?g³?yíÉ?zgf?z5)?€9 ?…¥¬?‰6?‰’Ô?…¡?}Œ¦?zr?Œ?†~T?‰_Ô?‰‚i?‡•§?‚ÙO?uWb?dwl?e7×?w‹X?‚Ξ?„'?€<‚?y§Ô?{þã?×v?†mù?‰@ ?‰½?‰R¾?‡ÒS?‡‡m?Šƒ¡?ŠÀ0?†…`?ƒŽ×?‚5‚?]1?ƒ?Ì?„ˆÑ?‚·c?‚)À?†S7?Šèô?‹ÔŒ?ˆ=‹?€€ž?o²,?c.õ?[æþ?]ª°?gon?e ¦?[Û ?f#?u•ò?wóœ?sæî?v,È?‚lÍ?‡«?†/…?Üž?|³Î?xH?|ÁU?†Ô?‹k·?‹äœ?Œjñ?éµ?Kã?‹ ž?‰ƒÌ?‡o?€­V?uÍ—?yÊ;?ÿå?ƒ[ ?„º¿?ˆ©À?‹8?‰ó0?ˆ¹$?Š^_?Œ¾˜?R×?‹óR?‰ÁÑ?‡:V?ƒéÐ?ƒÌù?†ýj?ˆS\?‡i¹?„Øò?€?z p?{ˆ?pÿ?bˉ?n6V?Nm?„€&?„¦—?†ªï?‡dD?…Ý6?ƒ°?~±x?x^7?& ?„‰^?…ÏÎ?ƒÿ§?‚¨Ï?py?€M»?ƒ9¿?†öb?‡¿g?‰Y—?Œ=‡?€s?TÎ?Œ“Ê?Š¹ñ?‡Cc?„$?‚ô?€ "?€Æñ?€Yt?zÓl?q|£?rYa?€S?†¦G?‰&?ˆ}„?†ÓA?…žË?ƒõ?‚Œh?jö?‚¨f?†uÄ?‡ºò?†°Û?„^?HH?~a?|×µ?~?€UC?{È5?v{Â?z˜Õ?~µ®?€RÌ?)@?sí?h{ò?kÜ‹?vpo?yPu?tå?x»?€lÚ?€Î·?~¢•?›]?„…^?ƒó×?~?€9E?€?z†2?{Z8?ƒÑ§?†/q?€“6?x1R?~Ò?€í?|Y–?y9O?}Ì?ƒ]Ÿ?ˆÍ?‰¥ç?‰!ô?ˆ_,?…¿µ?“b?t±y?wè?ƒœ0?ˆ”•?ˆß¿?†å?‚¹ý?zŽ?zË?„; ?ˆZ†?‡“;?ƒ4’?zî*?y•ä?€Ðö?‚ÄŠ?ƒù"?…7?„Í?ƒøW?‚.¦?à?yј?oàj?rw?~P?M?zo%?}s -?ƒÖ?…¥Ï?ƒ++?zÃ?€£y?ƒHü?„Hx?‚…?1÷?‚‡‘?‚L?‚¦%?„ñ#?„1˜?€v¹?~óV?%[?j?€s?<å?‘Ö?€Rê?|LD?y°]?}àž?¿?ƒR*?„Ù´?…™ð?…E4?„æ™?„™‚?ƒ}?€$?wŽû?r Ž?y¸(?‚:?ƒQ„?Ùê?Û?fA?‚ü?ƒN?„é?„È)?ƒ“?€Ò­?D?ß¡?ƒOh?…˜c?††?…Ì°?ƒf?€£?€t_?‚"~?‚TÈ?‚#‘?æy?€q¥?|kÓ?{­?{‹’?zù?{ß?{jâ?}1œ?{¼3?w{§?|`?;R?€N?(q? º?A¡?€>Œ?€”d?~r¶?s"Ò?gA8?ey’?li&?t«2?v_Z?s)°?u„"?}îó?|?tæ2?qÇ,?m[ª?l¹Š?wÞñ?‚‰u?„æS?„Ï9?„’¨?„¿‰?„ãA?‚¢~?u|2?h@t?op!?yó(?|·"?~Ü?€Í?yÂ?qÃŒ?tý¶?|^a?€²:?‚áA?ƒtµ?íS?~©&?zÖn?w™?uø?x -š?x5 ?uWW?wq€?zÁ\?}ªS?€Ÿœ?€Èq?|Ò"?z‹?}c?zÖå?sfO?r3]?oèz?föÒ?jjZ?qÆ•?q¥»?tf©?y–K?xÄ‹?v Z?wp­?{xo?€H?•õ?€tX?|G ?}qæ?~´%?|æ4?zb?s?n?oã¢?p¨*?ndn?o_+?t—}?x•Á?z܈?zJÂ?yÊ ?{\3?z=¹?wÿH?ub6?rg+?tÁ0?u½?p)?jl?e]‚?aÜÅ?c“õ?hÍ©?q®?vL)?wæ$?xã?y-?|S?}ßp?¨?zv?~³c?|д?|üÁ?~jú?{Ï!?x†;?z¿}?}³š?}õz?}1¶?|º!?|•>?{»?zLÈ?{[q?|ÿ]?z -å?t¤Ë?uñ?xìó?s¬£?jFË?i;„?qãŸ?xÃú?z -?vÿ?q¾¶?mM§?ps\?y(^?}4?}Šó?|Þ_?zö?w´?u¦?tÐu?uà5?y?x®à?r‡Ã?js#?hS?ixô?h ö?kðG?rV?u¢;?teU?rAó?s.‰?uÜ?x#?uÚú?sÒ÷?wæ?{PÆ?{›²?wPÀ?r,ì?q«*?t0;?uÐõ?w+?y¹©?yæò?vÛ.?rµ?r— ?xnÓ?{¡w?{ç?{Q¥?{FU?{ÎO?{}…?zúR?{\°?zÞ#?y°N?yqÏ?xjê?wô[?wò|?wv.?x®?zlš?{qé?{*?y¡ç?wZÄ?uÀ}?vý¼?wÚ*?tæW?qK¶?p¹?mÇÅ?fË?g5O?m·‘?q3n?qó´?tò¯?uµƒ?sÏ9?t¿’?w½®?y& -?wòV?vÓ¤?x ?x¨¦?vÃC?tÁˆ?s½ø?s_Ô?q›?n~?po?n??\€?Ecö?JK›?]_2?afò?S…h?M†g?\²½?h¢¤?o…ê?såK?tªy?qõ?n°2?p-þ?r§¾?s?7?s’î?oÊÊ?i‡‘?h›ì?k?»?pGä?shd?qÕ¤?pz8?s~Ž?vzÓ?uIµ?p§¥?jÌ?jO?p-„?r:?p.j?qçñ?rû—?p+?lu–?l:A?mFo?nOP?o¿y?lùv?h ‰?jÀo?o@6?lq0?k¸?mÉ”?l|}?m9ˆ?oÿF?q;?q³?p\)?my,?k©E?mƒH?p)~?r+?ssê?qw?l@Q?g‰h?gbþ?jÅŸ?n ,?ní?j7H?c–ù?cF5?eðƒ?hw!?jäö?k§?l?nÜ#?n#?hµb?dßê?h%•?kcƒ?i*í?f$?g´v?e‰¹?^yú?]yy?f?h‚ë?cêô?cm4?dÁ?dõM?dá"?_´i?]íó?`QW?aß‘?dÜ?f»?gM?i „?jœ¼?l)ÿ?l)”?kòå?lAk?l´Š?k³ï?iiâ?g‚?hæ?j*ý?jKå?kH?l±?lÅ?j^a?g)?dVõ?cl?fÙ§?js˜?k‰b?kY?hšB?d3Å?b‹Ý?g‹3?kD?l?köc?køŒ?kÜ?j}`?eú=?`€Æ?bq?e…ü?dý?c‡¦?b{?b­´?d\•?c³?bM”?b|?dé?fÊ?ff¾?f˜?fx?a%a?U!º?VYÑ?a±“?dë‰?d\ ?f7?fi¡?eÒÑ?f‚e?eÇ?c_œ?e÷?e`ë?`æí?YþÞ?\3¾?b#ì?c®?aÀt?`Üp?a â?bƒP?d—æ?b™?TÉ?MnW?Xµ¦?`2¯?\D{?^[z?cYè?cù|?`÷—?_A±?a«Û?c39?aöÏ?\¾¡?Z†ß?]Ö?^–„?Y8?L£{?Jظ?TU9?YÀ—?Xûù?RÏ?PK?Yl’?_B?_?]qQ?]‡?`)ì?`Ö‚?c -?d|­?chm?aâ?^óÚ?_k?\t?VSŽ?ZÛ«?`QŸ?b\V?d´Ö?c%¥?^êÐ?`¨?câ!?cj?c ?c×o?d#K?d"?b˜Ÿ?]Z?W§‚?W»ð?\k§?[õw?Y²?\ø6?`[Ó?`$?`–{?_]«?[² ?Ta -?Rí‘?Xëæ?_ Ÿ?_ð©?Z~?Wc¥?XÀª?Z³?W» ?RVK?PPF?SmY?ZŽö?]¬â?XGh?PJ‰?NÖ%?Q9a?Ré?T-?Xõ?\¶1?^v?[Öp?[Lä?^*²?]±:?Z“s?ZØó?[x?V%?O®?Ný?NÇ_?O~K?Tà ?Yóæ?[Æm?[L?[A„?Z(Ž?VÇ?V•z?X‡ê?Y‡ê?WW4?SUs?Q“º?Mœ?L?‡?S ?Xïj?[^’?Yõw?W¼*?V&}?UϾ?RíE?M_¦?KÙ³?IÄÉ?MÊ=?S† ?TÏ?YF¸?\ªÜ?[ E?Yß ?Yœ?Xé#?ZZÝ?W|?P'?Nµ ?Qb.?U˜‚?XØ?T¨?Q¹Ï?TV?VR?YÐÑ?\œÃ?\ ?Y³?Vt?V„??U±Þ?Qs?NÎY?L\ß?N‹ñ?T)a?WÞÇ?YC?W™x?V£?XdF?[)?[`’?Z¹¿?Y^*?XM°?WÅ[?Xw>?WÔr?XM?Zäî?\/î?[½¶?Y -Ù?RËû?QU˜?Wjü?Y€é?SH?KžE?RŠû?Yáß?Y×I?U)P?O+Ø?Pæz?R?*?PÝ?T>?TÆ?T.?TˆW?P©?L®Ý?Qü+?XÑþ?Z– ?Z¾œ?Y”a?TÌþ?P%ß?Q¯â?V?†?XŠ?U‡Þ?N4p?Oá?VðŸ?Y ø?Y˜&?YZ‡?V-i?M€>?KH -?S?UKA?Ox -?Kœs?Q¸“?V‰K?Rçr?JŸÎ?Myú?U'¤?VÚü?T§Ñ?QÚ:?O± ?QÓl?T9þ?T`8?V¥“?WÐ?UDf?P É?P &?T‚ò?Vìø?Wec?V/‘?Rþˆ?MoñôÄ?j¢?.Sä?;J#?>‚é?AéÂ?E7?E`n?FP4?JÍ+?MáÌ?M°?L¹?M9a?MÛ ?MtH?MCã?O¬¢?P:?J:ˆ?C%¦?G­Ç?M=1?L±??NØø?R5ì?Q½È?Nªw?Lì›?LÁ?JÆ&?K†ï?O5O?OèÇ?P6i?PžÚ?P,k?P»ƒ?QŽw?Q1ä?P"?OOÅ?Nò#?Nâ×?Nü“?M(Ø?Gƒ2?Cïë?Ie?M™±?M&D?M¬?LØ?Ifk?JÄ‚?N5&?ORI?Oâ‡?OãA?OQ?Nbå?N“V?NæØ?NÎ?M«ê?J[U?F­?Ibú?L-W?KÐí?L¡?LÁ:?Mó?M‘ª?L‰f?G>.?Eg`?I·™?LR•?LDç?I6þ?H›?K¢¨?M™¹?MK?M ¹?Jì£?FðT?Eê­?G‡‚?Jb?KØ?Ié?GVâ?FôF?Fû?HK­?IÙR?H@ì?F’¯?D??ÅÌ?@p?Bð?Av¡?E²3?Gg$?Fxz?H²?I·š?IòS?H‚`?G÷ÿ?HIƒ?F)è?DÓ‰?F?EzÛ?DÍé?E}Ï?E¼‡?Cíú?Bwi?Dù?E¥¨?FÏÌ?Eôƒ?E?*?EÞG?F„ý?G»?Fç™?E“€?Cå?Bø%?E)?D£b?E ?Fw?FI?G3?GÃö?Fwò?C¦:?A¢÷?A»Ê?B—?C. ?C–U?DPN?Ch ?B«j?B¹?C~?C`d?D¤?CÈE?BâN?CU?CER?C ·?B£x?Ct»?C?=?C£?DªÉ?Dó?Bñ?B„¸?DH¢?Du/?BÃF??Ë?@1Û?Bö.?CP?CÔ?BÀ ?Aå¥?@—Ô?=ªj?;>x?<ÊS?@ŽË?BEÍ?B9:?B - ?AuE?@#v?<?:^F?;Ó?@¯?AK§?A%%?AF?@Ê÷?@3‹?@>??@8Õ?@L|?@­^??¨?=/Î?<äæ?>gÐ?=õÛ?>?Ó?@P?@Õ?@Ïà?@Õ?@Añ??ðÙ??Í|??÷G??îË??¥I?>jo?=úü?? ¦?>ؾ?=I8?;ãJ?:G?:Þ? ?=J€?<):?< ?=.?=æë?>?>)?=‰`?;„µ?9š?:öµ?«?5È$?2üU?4‘¸?7lë?7Î×?6Ûb?3m?2Og?5”?7w¦?81s?8&}?7ý ?7?6aa?6€¹?4! ?/Cõ?1ì“?66 ?7a.?6t?6e?7„í?7¼Õ?6ð€?3oŸ?-M?/¡e?6K?8!…?8YA?8?-?6é­?4\e?4Ò|?4¨h?0×å?2€?4 i?1,(?.9?0©¥?1ˆË?.aŸ?-§?0? ?1Ÿz?2ìÝ?0T?.š?0ã>?.DÓ?)Ÿ?,Áò?0‡ø?0|…?/Ô?0?#ôq?" ¨?"k?#åÕ?"P?" -?#ì±?$6a?#éb?"a?Œº?%­?!D(?#V?#’ ?#P+?"£g?"~í?"å£?"Ó? üÇ? ª?!g!?!¯õ?"7­?!P~?!ò0?"K[?¾.?³U?"d?þ"? ž[?!ö@?"$P?"8t?""??"o?!ýû?!åÜ?!ðÛ?!¼Œ?!ÿ?!Jy?!Ç?!°»?!¡4?!›@?!rì? .??cX?ÓÖ?`?<º?°š?C;?Â.?÷?–1?Ýé? ŒQ? Äx? …ý?é@?Ï?"Ñ? ,?ª ?U?©´?@q?Ÿì?€?V?7s?F?º?‰?“¯?^”?[É?ƒÍ?š|?á:?#Ü?ŒÒ??®f?ª? &?X¸?û??ݬ?J¶?×…? ¤?Q[?'Q? ?Z0?Ž?õÙ?Æ9?Ò?{Ô?"?ÑÔ?h?ÌÇ?oº?Xž?f|?¿¦?ƒ0?Ö?gÝ?Ã"?1.?A–?n?˜s?û'?ù?\˜?bH?'?J’?â?]?ãk?öu?ïZ?oê?°Á?áÊ?îØ?jþ?ß?ŒM?`Ã?W÷?œS?>‹?EÍ?=2?ÔË?X"?ÈO?§†?Ú?˜v?] ?×??û?ï\?}È?¼l?…Ñ?¦?ŽH?¦?“™? /?X¬?í?û?ª?V?Á²?þÝ?M?ÁÍ?Ùo?nŽ?.?»e?”J?²ö?A¤?zÎ?.0?s?ý??Xe?Ȭ?ŒŠ?Ê9?qí?îq?§ä?Âü?îä?TÆ?Ú?“š?¶ ?+?`y?ö?ù?^ý?Z–? -]?ƒI? Q$? Ÿ=? ]³?˜? ï? -8Ï?g? 5ƒ?ze?Þn??'s?µ(?6¡?mè?ãù?^i?,T?76?š?èG?ý–?Up?6Ò?Àã?LU?IÐ?ªx?ÁX?Ì?±x?«?}ë?#@?—•?N?t?k -?…?„æ?xî?;?-?ø?Ž?°˜?$3?#(?¶?S?m?l?¼1?´5?—?RÝ?í³?]é?bÿ?èr? Ÿ? y? ¦Û?Vj?ù?NÎ?m_?xY?•«??Þ"?ßR? ê?€Í?ñÎ?Ú•?×?—“?S_?µ ?3J?ƒ? ç/?é¯?tÜ?J? ³P?Ò—?Õè? 1¢?CO?{°?Ÿ0?ˆË?eT?B$?0•?'ý?ôƒ?Æq?-L?G2?Pj?0ó±>Åý9>Ò6¯>ó2y>ÿ¼.?ÂÈ?a¾?t?Ä ?O¨>üõA?w?¢P?,? Z?šf?Áv?Cì?ã|?oŒ>úÓ·>í`>Öza>©>‘ZÀ>½½Õ>ã“`>ô3Z>ü%U?¨‘?€§>ú´ï>ÿðë?œ? Ø?Œ5?È[?3K?2?¨C?»¦?mb?™? -J>ÿ÷;?yä?Q'?b(?§$?…Z>þ%>û2t>ùÖ`>ýøÆ?h?N?lF>ÿji>þÍ·>úHR>üþB>þvÌ?‹o?8õ>ýò§?Q¦?ë$?úq?r«?³@?:?í½?‰ƒ?‡a?’?×>ÿq¾>öS¬>ó÷«>úì.>úEl>õîj>ìa÷>Ðß^>žÒ‰>£³>Ó?À>éÅX>ñ&š>óDÚ>òc×>ñ6>øíÙ>õÒÒ>÷„]>üjó>ú”¶>ðª>íO>ú¨>ûV£>úùc>üNn>÷1|>ùáŒ>ü y>üû_>üyÆ>öè)>ñ-i>òBe>ù†>õ(³>÷³þ>ýþ7>þªŠ>üD´>ô7l>ô6,>üEÈ>úÍx>ïß>òSK>ú> >õ>õ5Î>ùCÛ>÷9>óGT>ë“>ñ¡œ>õ1>ô>úOö>úÂ>ó=>ö[%>ûŽ€>û_|>ôy^>í†ü>÷H>û ¡>ùbg>ù‹±>ùz>ú«È>ú”.>ñ\>í˜J>ï¥&>ö”>ø¨Æ>ùÏL>øÝ€>ïl ->Ù¹Î>ßp>ò«’>ø‹B>÷÷û>÷MÌ>÷œ™>ø|Ð>ô¬$>ì‡U>õ½ˆ>ø«î>ù&µ>ø8Ø>ö±>ó‘>ïJß>óÊ >õ¾ƒ>ôñF>ò]~>õ2µ>÷’>ö«`>ôÆ*>óðZØ>çº>>á?å>åüÃ>å¬>î&P>óê$>órô>ñ™­>òN>ôB>ôÌÆ>óÓï>õÊc>÷p²>÷Q>óq{>óe>ö*>õÉŒ>õB(>ö©?>öÉ >öÓÛ>õÔ >ó{>ï­>óÖ]>õøÞ>ó©»>ñ9˜>ñ`A>ï”™>ë±Ê>ê’°>ñV->ô1Ÿ>ôØŽ>õMA>õ,½>ô(ž>ðšÝ>ì®”>í– >ïi->òtý>ôJu>ôEÁ>ôA>ôÀ>ó·z>ó Ž>ïÇ >í° >ñè>ò·þ>ðKµ>í|>îýQ>ð¾>ñí4>ð-ø>ðL¶>ðþò>ðŠ)>ð?È>ï€%>íœ0>çýD>é;v>íæC>ìŸ>çâ>ß#>Ú®²>Ôjb>з>Ú»ß>â™ã>ãy>çé>ê®Ø>ì’’>쎀>í5™>í¸Ë>ì7Ë>íf3>î–à>îÀ?>î… >î¥N>îs>ìpÉ>ìíA>îrY>í×>êtK>Ý£ê>à˜>ìt>íúŠ>íÆ>íw>íS‘>ë(º>âÙz>âüÊ>ë >ì†U>èp>ÚX>>á\>çîÕ>ß-R>å$ê>çb>è„C>éJ>èM'>éD>è|’>àg>äAY>éZ>å`h>æ0>ê8Ð>êœb>êT[>ê. ->é™>ê>ê&>é=È>éa5>èôÍ>ép>åí,>áå>æ<2>éš>è‰;>èê>è‚Ç>èÀç>çÕ{>åg>æžÔ>çw–>æŸÐ>ä(Ž>äø>æ3$>åΨ>åÝf>åï7>æ®°>æ Ç>æxm>ænY>æ2.>æ'æ>䓱>ã*¼>ä,ù>ãÒq>ãv¹>ßHª>Ú²á>Ö®Ô>ÜoO>Ü…>Û(Ù>Þ¦'>Ûª>Ô³Ó>IJ5>À.‡>Ю>Øè/>Øb°>Ö‚Ï>Þ;>ß -#>Ü/ð>Ü4>àfÍ>àñÛ>Ü'U>ÔÞÁ>Ö9æ>Ú”ž>Þ)ö>ݘ[>Þ»%>á¬>âT}>â%Z>ârì>â]÷>Ἠ>áÆ >áÌ­>áta>à¤o>ÝŸD>ÞI>ß1>Þâx>à4^>àóT>àøµ>àŒÝ>ßíÿ>ßz>ߤ>ßÍ>àD>Üƺ>ÜYˆ>ßVê>Þä>ß-¥>ß~>ßâ#>ßN%>Þ¢>ßG9>ßp8>ß3ð>ݤì>ÝRÀ>ÞEx>Úú¡>Û7>Ý2W>ܺF>Ûj1>ÙûÙ>ÚAƒ>Ý>Ýþœ>Ý|$>ÜÐ>Ù,!>ÜH>ÝT{>ÜjÝ>Ü0>Ü5³>Ûtd>Ú6R>Û5¿>Ú>Ú$·>Ûäë>ÚÄ.>×½a>ÖòQ>Î=&>Ô8«>צÍ>Ï¿©>®>Дý>Ù˜œ>×r¾>×Më>ÚWH>Ú[ó>×™”>Õ'Ç>ÕÃ.>Õ¤">ÎÕ&>Ô— >Ö¬Š>ÓúÐ>Ô:3>×€>×Ј>ÔÉÑ>Õqã>×±/>؈•>Õóþ>Ô¼ð>Öħ>×õ¾>ײt>×%½>Öës>×ó;>×Õ8>׉Š>×Bû>Ö4®>Öò“>×|E>× ñ>Õó>ÖA¼>ÖêÑ>Ö@a>Ôˆ->Ò]>ÔÙg>ÕmÚ>Ôú|>Õ •>Õ]<>ÓÕÍ>Ó°">Ôê>ÓÆ}>Òyø>Ðó+>Ѥ|>Ïþ>Îðb>Î2h>Ëñ>«g>²ß>µ‡d>ó§>Ê#>Íf°>Ήû>Ð'5>Ь>>Чß>Ñ>Ñ¡j>ÍÌ™>Îr²>ÏŠ>РQ>Ò>Ò¥">Ò“e>ÑÏÍ>ѦÔ>Òlr>Ò>>ÐÒä>Ñum>оj>Ϥ>ËŸB>Ì1l>͹ >Ðpó>ÑÏù>ÑËø>Ѳ>ÐAt>Ê·>Ì;±>ͬ‰>ÊÜ[>ϱS>ÏÊÆ>Ì–>Ío>ÌVÃ>Î&Ê>ÐÃ>χŒ>Í©>Ì).>̪2>Ëú*>Ì%4>Äh‡>ɧ@>Δ­>Îu.>Î×>Íß>ËÙ^>˺”>Éå#>Ì2­>ËÚY>ÌÁÄ>Í >Ìx—>Éœ>Ë>Ëñ>Ìó>>Íå>ÌÒB>˼ >ÊÍ>ËMÑ>Í æ>ÌÛ>ÍÅ>̼>Ìj>ÌjÉ>Ì5©>ÌQ›>ÊÂ>ÉÎÛ>Ël`>ÊMÏ>Èn>È'>Ç,ð>É5N>ÈïÛ>Ç£½>Éô->Ëã>ËA>ÊÌX>Ê.—>ÉÖ–>Å£€>ÇZ÷>Ȭ>È"L>É’>Êjì>Êu‚>Ên>É,>>ÆA³>ÅÎ>ÄŽ">ÇPì>ÈêL>ÈãŒ>Ç|4>Æ >Åëý>È´Ó>Èä>Ȥ…>È#>È‹>ÈŒÇ>Èm|>ÇÖ>ÆÝ>ÇEæ>Æì“>Æsû>ÆÀÇ>ÅoL>ÄÝ>Æ»†>ÆtÇ>ÆñK>Ç!>Æîé>Æ”Î>Æ>ò>ÅHŒ>ÄÖ™>ÅH>Ã>ÁÏ}>ÅŽM>Å©@>Ånï>Ũ>ÅFž>Åç.>ÅÏM>Ä©Î>ÄÀ]>Äúá>Âe>½ÐÔ>À\.>Äc¹>Ãÿ®>¿FB>ÁtÉ>ÃÂi>Âë(>ãô>à Æ>¿öƒ>ÀÖ­>ÃQ#>ĸ>ÔM>Âëi>Ã,.>‘y>¾¹‰>Àú>Ãw>ÂñR>ÂlQ>Á¹_>ÂÍ>ÂR/>ÁCñ>À~Ù>Á“ >Á¬ü>Ág:>ÀÇY>Á.>Á§Ý>Á@º>À̦>ÁN¤>Á;è>À¤€>À¥>À€ì>ÀVQ>¿™ >¿î9>ÀLO>¾š©>¾ì£>¾:ö>¾ïE>¿']>¿¨¥>¿Â&>¿zØ>¿QÙ>¿M†>¿.‘>¾±Æ>¾K<>¾2Ø>¼9ø>¼[>¼r>»C²>ºðŒ>·Å‡>¹R>¸RØ>µ¶z>¯•5> ó>žBv>­°<>´IÉ>µçC>¸]>¹ÛW>ºj>º9Ç>¹Ãø>»•“>¼!‚>¼”>»Þ6>»–>»)ª>ºÀ >»Æâ>»ÞÚ>¼E>¼5>¼.„>¼&@>»æM>º*§>¹5<>»@­>»K¤>ºnú>ºÁé>»U#>ºøp>¸ ‰>¶bF>ºXu>ºØ>ºÐ]>º±>º1[>ºZ)>º(>·È>´Æ>¸¾3>¹Ê‚>¹%8>·úÿ>¸pq>¹—Ç>¶ùQ>³ÄŽ>·˜!>¸Ð®>¹î>¸¥¯>¸ÿ¦>¸Øs>·ÌŒ>±kå>²]>¶Ù3>¸Ÿ>¶;õ>¶M‡>·’.>·K>¶ß_>¶Ôµ>·¢>¶i>·[¡>¶ >±„->²à‰>¶y=>·'>¶ÅH>¶£é>¶³‚>¶Â‹>¶ˆæ>µ^>µ2Ä>¶3ç>´¦>´í]>¶¹>¶®>µë>µÖ‡>µ¹X>µŠ>µ*O>µ ×>µX¢>µOÜ>´êõ>´Ì±>µ_>µU>´Õ>´žH>²m'>®x¿>³VC>´wâ>´C¨>³›ð>²yÄ>²µÇ>³‘I>³Y>²í!>±?>²ù3>³mw>³(Ì>³!>±›>«¼Ø>¬ù¨>°vU>²Q>²°(>±…>®â>¬g->°!õ>°¯Ø>±ÂÅ>°ùH>±i}>±Á“>±˜|>±N>°Ê>°ê.>«_T>«˜>°ºp>¯bš>®¼N>°Ä„>°Õ>°wû>°>°,Ê>®ÿŸ>¬ˆc>¯V>°[>¯h%>®) >®±q>¯Ë>¯ÀÏ>¯X¬>¯Sl>¯C¢>­3*>«Kã>¬m">®ø>>®àÇ>®:>®z·>®lu>®L°>®v‰>­ -¿>«õÅ>­d>¨~>¢ãÇ>¤ï9>¨ô÷>­c>­šu>ª±²>©è >­ >­^?>­Sz>­'°>¬î–>«ÊÁ>¬>¬ñ>¬žl>«òµ>«äó>«É§>« >¬ -7>«õ$>«"¯>«s>«T€>©>©Ÿž>ª³ù>«@À>«0M>©…Á>§(ƒ>¨Ó>ªJà>ª¹@>©éÊ>ª†n>ªÍÙ>ª¤ç>ªrf>ª{ž>ªÔ>©¶³>ª„>ª+l>©ïß>©çñ>©¿Ï>©5¬>©.H>¨ñ£>§ä+>£ƒ$>›”>£ßä>¨òJ>©;>¨ä>¨le>¨m:>¢ª+>§ä>¥È¢>§ó2>¦ç¤>§Á>§{>§æ.>¨¡>§±ß>¢Ê&>¡ÎS>¦C®>¥ä>§EÎ>§y…>§gž>§GÚ>¦øÁ>¦¬ˆ>¦Ð>¦Õ>¦¦$>¤ô\>œv‚>¢<È>¦>¥ÂÏ>¥ç†>¥›=>¥Õ›>¥»ì>£º«>™øs>™Ód>Ÿ˜™>–">˜[`>ž‹Y>¤†4>¤ÒÙ>¤”‡>¢ìv>¯Y>¢óR>¤¦À>¤BP>¢Uï>£€ü>¤3V>¢ >š>™þX>¡‡°>£¬‹>£ä>£‹c>¢;H> ž>Ÿ2Ã>˜þ„>žC…>ŸOY>¢©U>£ø>¢Ð*>¢Zn>  Á> °é>¢d}>¢wt>¢r)>¢ ->ŸiL>›ƒù>—qa>žš‰>¡×6>¡P{>  ò> y > ZÕ> ˜e> Ò>šxÔ>’:^>¥Î>ŸíÞ>4ú>™‚‹>tt>’Ic>•×ç>ž¥>ž9ß>žÈn>ŸH‡>ž²”>šcq>žcv>ŸÀ=>ŸÔ(>ŸÑû>Ÿ¸Ë>Ÿ>zE>›$f>›Ž¤>Œµ>•>±>ž %>žFª>›Ÿ^>–†¶>˜­±>Z>œ9l>›Æ0>›8à>Dú>µ>œæÒ>œX>œ€)>›¸¾>•BÐ>—“è>šþ>švÑ>™ÎV>˜RO>–ûv>”šÓ>™R>‚Tˆ>~Q;>zK>“›é>–1²>—Ch>”Ø•>”Ë<>”,¸>—ß">™¡>”7±>”ö6>š(*>š°>šeJ>˜ >C8>’ž@>•¼à>™2æ>šgA>šzi>šSñ>š;>šMÌ>™î‡>™¼Û>šÊ>™ò¹>—]{>•{”>Ô”>•c±>˜õÓ>™¨‰>™@¤>˜ìï>˜å8>™ y>˜jä>˜! >˜Ë>—d6>˜Ú>™P>˜\>—³Ì>—±>˜ R>˜ªù>˜t>˜'é>˜ á>˜-(>˜`‡>—íê>—Qn>—FÞ>—Ä>—e>—*˜>—¯P>—-Ñ>—KÕ>—+Á>—M&>—U >—*ê>–û‹>–±ø>–{‚>“'[>•=ò>–4'>•‘„>’(>“C´>”¦õ>–w>–? >– >”Zž>”á>•8m>•ÔÄ>•)á>“î¦>”é5>•Ì >•±Õ>•r¥>•3ã>•é>”ä„>”3 >”| ->“@)>ŽV£>Ž•d>”'¬>”i'>‘‘i>’vÇ>ûÄ>“]î>”C;>”Pø>“¢Ã>“ >“èH>“Ö >“Â>“—ñ>“:4>“Lë>“¹>“„B>“p!>“OS>’sÈ>‘ã->’f>ÉŽ>‡º–>Œ+y>’€>‘í³>’Î>’¼g>’‘d>’‹5>’D&>‘™Ç>‘§á>’3z>‘=f>Ž ?>‹î>£“>‰>Žº¢>?¢>šf>Žk>ŽTü>>×>~>oa>œ>Sœ>ˆ|>½e>p>‹C>ŽùÚ>-%>ŽÃ£> >ÕÈ>Ñø>ÓJ>Ÿo>ŽWÉ>Ž)>QÞ>¿O>±©>Xì>å>‹;~>Œý>µÿ>ˆà…>‹%>Q¦>ŠÚ>Šö>Ž) >GB>‹ >ˆˆî>…›F>‹Ÿ²>Œþ>> >Œ› >×p>Œy}>ŠŠÄ>e>N>©Ã>…7>Œ˜¶>ˆÛ¥>‹ñP>‹ÌÑ>Š/é>‹a¦>ŒÀ>!Ö>ŒÁ¨>ŒÑ>ŒßE>ŒÄ¬>ŒÏ¥>Œ)R>‹â>Œ\*>ŒÜ>‹©Ú>Š^Î>ŠÈÓ>Œn>Œ|>‹–«>‹¤Ï>‹´g>Š8Ÿ>ŠËž>‹ž§>‹~š>‹‡s>‹&O>‰E1>‰jø>‰h >Šµƒ>Šd‘>ŠÑ >ŠÞN>ŠŸ€>‰â¿>‰ïø>Š¬.>Š¡ê>ŠcI>‰®š>ˆEŽ>‰Ì‚>ŠÇ>Š>‰ÁF>‰íÈ>‰Üq>‰´)>‰>‰†Ó>‰sÎ>ˆÝB>ˆÌë>† ý>²Ñ>…áH>‰Â>‡í|>‡ôí>……Ï>GG>4Ÿ>‡])>‡ã×>…ûÛ>‡Ô¾>ˆQÌ>†;>…Ÿ‰>‡ý»>‡Wy>‚šñ>„Gª>‡7¹>‡67>†Wø>†d\>…­6>„èÖ>€Å_>†¢>‡;è>…pô>ƒ™>…`³>…ùk>†é‚>†p6>†{‰>†[i>€}C>‚Ÿê>…ô}>†y>„ä>…¢÷>†?6>†>…ÞC>…´>…©D>…¬]>…o>…\a>…w>…‹ƒ>…ŠW>…86>…Î>…>…/>ƒšg>~çO>€À>qÝ÷>€™ë>„št>„Ã]>„›L>„">‚´Ä>€ÿ¬>‚±>‚>âo>|å¨>ƒmW>„ê>ƒïS>ƒÇ$>ƒk>‚'¸>‚™é>ƒ”j>ƒ5>¯‹>Ñ?>ƒ$€>äz>{k>-+>io>qý…>‚ |>‚Mò>{ɽ>~îò>‚M˜>ý\>€v@>‚ž>‚6¶>ð„>€Ð_> >+¥>‚B>Üs>±>Z(>~fƒ>s®Ü>op >µé>|£y>xÁö>x>ÑÃ>Ü>€öc>€æâ>€Û@>€àt>€È«>€Ê>€©>€‘M>€W.>€Xi>€oI>€N¹>€‡>€L>€P>€ \>|\5>¶É>ÒC£>ßmø>êb>õó&>þ;>ü >ð>j>ä7>ÞYf>Ú>ô>Îãú>ºÂ>¦¶é>cê>£]¸>¶h>ÎÎ>â>7>éj–>ã‚ü>ÕPù>ÅÊò>¹Ù>®iä>¤Ÿÿ> œ>§Ö>¹æ >Ï÷?>Þç>àç>Ùݶ>ÐB÷>ÊoŽ>Ê.>ËTc>ɺº>Çêe>ÊÑ`>Ðy¾>Ò£Ä>Ñ2®>ÒŠ>Öõ5>ÙÔ*>ÕÈè>ÍéÒ>Ê9™>Ð'p>ÞÄ>ïæ>÷R‰>ð§A>ÝQÃ>Ç‘‚>¹!3>³©>¯ËÒ>ªñó>¤¾°>žx>™¤þ>™û~>¢’>­„Ù>³kÇ>°w>ªÏ™>©Bã>©:>¡]>Ù¨> 5>{LB>‹[™>¥›f>Á@Ù>Óz#>Ùœ|>ÚG|>Þ"Œ>ç÷£>óò>ú§µ>ú6>>ô|ó>ï+¨>îÖz>ó4Y>÷¨l>÷ד>ô0[>ðÕ(>îø©>ê ~>Þ6Ÿ>Í$Ò>¼¥L>±fÅ>­MÜ>¯k˜>´¾Š>»?B>Þ*>Í\ß>Óµ“>Òù´>Ï,'>ÏÏ>Õ«1>ÚMj>Ù:>ÔCý>βd>ɲ>ƶ>ĉh>Ä¥M>ÅIt>ÇsM>Ír>Ôû›>Ü”á>ãÕ…>ëÊ>òer>õ;!>õàö>÷-V>÷ÀR>óNŸ>è°P>Û“>й¥>Êá>ÊA'>Í]:>ÓªÑ>Þ¤¿>íQV>ùû ?&,?°:>ÿÓ–>üÀú>ø´U>ó‚ >ì`>ã±£>Ú¯ê>Ñ ä>Å<>¶Ÿ¹>©’Û>¡Ù—>žø¢>ž<Õ> â ->ªÉ)>»$ö>Êøm>Ô9ô>×›ü>ÙMg>Ú2Ì>×›>ÒT>Ò!Ö>ÞŒ>óKâ?²y?ø ?¡´?‘è?~>ü‘>ÿýt?$`>ÿGÐ>ìO>ÏÐï>´–q>¢$v>™ý›>™WZ>‰æ>¥ƒ³>°ƒ[>½8h>É{Á>Ò¿>ØD>Ûüg>âe>ëS4>ðN‰>éRó>Õ•>½}ƒ>«Ï>¦£>¬ó­>¸K[>Âh >ÊÎI>ÖT>æP>ö-F>û>óC=>çó²>áÈ&>â>è>ô}z?@?–j? -ÿ³? ã ?(^>ÿPÊ>ìÜ9>ØiÝ>Ç ->»ˆ(>´öU>°‡>«­Ã>¬~>¶ö„>ÈÅ'>Õ­C>؇}>Ù+j>ߧþ>é_´>îø >í1>å2!>ÜÎ>×ÄW>ÙüŽ>ÜŒé>Ø{¥>ÍÖp>Á’Œ>¶TD>¬k…>¦¯¸>©Ù¬>¶³±>Ç,¹>Ñõ>ЉO>Âôé>°YR>¢{c>ž.Â>¡€M>©Ô>±§>¶é>¸¿t>½Ps>ÇþS>Óæˆ>ÜaÔ>㚟>î.b>ý#?Û?ÅÄ?Ó™>÷îJ>æЦ>ßÂ>ã°#>ífÐ>ô”.>õ$²>ð@¿>ê–)>ê¸;>õ@?a'? €ê?è?öó?}¿?~?Ý?àÞ??»…?ÍV?âç? è? Ä? cþ?™z?P?­o?>æ?JÇ? èÝ?¨–?om? ï? º? Àè? Êp?uð?y>ü:Ê>ù§>ùNá>ü”?ÎT?jó?,£?8?ª‹?L‘?¯ð?7¦>ÿo>÷^o>øy?u¯? Lm?Hr? -?LÈ?g&?X3?"¯)?#5§? :6?S?ÂÔ?°È? î_?#à?$s™?"ŒM?¹š?[?00?+? —¨?µ>ÿ®>ù-?¡? -Lý?_9?Bõ?dÙ?‡Á?ƒ½? v?zý?»â?V[?:Œ?J¤?ñ4?X×?¨t?.?)ë?É€>ûjä>ïh0>ó$?¿? Q|?9,?÷È?üO? Þ«?¬Ÿ? ß?áÊ? ’ï?yê??]H? ½U?È>òŠd>ïƒò>úh?A\?­?Êï?!8?³Ô?È?ç­?@F?é½?X?û.?¹Þ?P>ïFd>Ò®>É]ü>Ú¢Z>ú O? -8î?±$?’1?ê.?[Õ?‡U?Ÿ}?XÙ? af?¦>âì¢>ȵ>¿ š>ÎM»>ð#á? ZL?ù -?&i?‡Q? Iñ„>æ²+>ä^È>åÞI>áïÑ>×É >ÓeŒ>ß&¸>øè·? L£?î ?ƒ?Ê8?j?]š>ëÔ>äxÖ>îïÍ>û3w>þq¾?H’?`È?¸â?\g?ƒl?Iµ? m…?Xè?Q?'Í?ðÖ>ú›>íNu>îv1>ü>y?…?"Ž?_?Çì? Þ/? Ù? O,?O?W`?o? - þ?@¾?ðm?ZD?çŽ?–?x"?iæ? -«? ?è?uÈ?àÌ?Ÿ>öh>õcî?¡!? X)?Cg?òC?å¦?!µo?!Nº?±–?ùÊ?"¾? Æ?7?m×?!)?ný?ü?Iþ?&†g?,"¶?+F,?$!‚?&·?ÿ??²Í?~?y?ç¬?„R?±?¹û>éÁ€>Ï[>ÆüY>Í[é>Ù²U>è»ï>ø_¬?"m? -Û®?3n??%Ó?'pv?$Qr?¼ã?'Ò? Çc?v?)T?( ?(Œí?!["?Þ5?4.? {\?öa?6þ?³H? ž6?—?†Ñ?d£? %œ?L±?}?BÇ?`’?È ? Û?¢?c?A¢? ¼†?ïf>î {>æ7ñ>ð@·?”×?Xe?xÈ?ŽÓ?È“?qó?Ó?ܬ?@??8?"½¯?*ÿì?-˜?(g‹?„ñ? ? iN? ™›?¯V?šÒ?÷ø?Ü9? #·?S*?fp? µž?}•?"ß?'‰ú?(ÞQ?*Ã?+Ñ/?,¬?(³û?"‹ž?‰Á?ve?Œ2? “C?‹›?³?d—?ø¡?°f?ú? q?|?Y+?c ?$ë›?&á¦?$}$??À?j??à?ÿn?ú? -=,?â–>ÿÜ^>ÿ½?Ì?;N?¯t?æø?!ÂG?!x? ›g? Zœ?!ï?$Ð?&½õ?&ßÙ?&„?'/?)šÿ?,°†?-§ö?+œï?)H¬?)šÊ?,\‹?.Ìì?.ý`?-Òh?,Új?,õ?+…x?,?Á?-ÛÖ?.kâ?,î?)é²?&b«?#µÅ?#§q?&w+?)¬K?*í¥?*hØ?)§?)¬·?*;(?+P±?-ÞH?0zï?.I?#Á6?UË?…?A?X…?æ?ÒO? -Ð? Ú8?¤ð?D!?©_?êa?Q/?R?!@ó?$“€?%ï6?#R5?å ?C? yõ?K´?Ã…?Ü3? :q?æå>þˆÎ?c¿?‘?»ú?÷? :?&ÞÑ?(ú?(6_?'ê,?)4³?+X_?-И?0fU?2Áº?4šÆ?5h?3’ ?-¼c?%ó&? n?gÚ?w?Ú9? ñS?!|!?)?|Õ?äí?‰Š?þ?]ã?`é??#º:?)y?)!£?!??ù? ÖQ?ÍU?Gé?#cØ?)x?+'­?*XK?+Ñ™?1͇?8Gä?:±â?8öÍ?3Ïg?)/?×°?)@? i? ?Çé?"b?ÑH? ”?$Q¹?) œ?.[”?2Jr?2¹??/,ƒ?(ï×?"B…?r?qê?|?sÜ?3?ò/?ák? oM?$2y?(Ë?,x¨?0‹=?3e?4V_?5‹¯?72¹?8¾?9{y?92å?8P'?7†‘?6Ë0?5—?3ô?37Ð?4ºü?7{?7° ?5]²?0e†?+ˆ?) (?.Æ?4ª?87?7í‹?7[?7ÀQ?5Äô?/ÿÚ?)ïA?&~?%œŽ?'a?+#g?.¢?/ve?5 y?AÚ?L—Í?Q?Q‚?Q^?L÷7?>¾Z?(Æ„?‚À? ¨? -å‡?ç?+ç?=Èþ?GÑÇ?Gbv?@¸?=“1?Aµž?Dø]?BLJ?;0?/9v?F’? -ÃÅ?KŸ?å,? Øí?ã¶?(¤?8±ð?Djê?J5H?IÛµ?DC\?<6–?3¤e?*xW?#7¶?Àü?o? 0Ø?Ì\? -ñà? € ?5¤å?Cä¥?Mò3?VVÖ?YŸÏ?RHr?@ïC?/è?*Vª?0%´?9(8?@T-?DÚI?Fì%?Hà¦?K¥?I1ü?CJ‰??‰?<´?6j_?.e[?/HT?;©¬?I½z?P¦½?PÙ%?OÖc?QB?S·±?VŽÉ?Z±¤?`×·?f2?h ?gM?f?e:?^¿ö?Sˆà?JÐk?HË?J$w?K2.?L+0?Mè??N?J;?Cû4??q?;:?3•6?'(?v?& þ?7³è?Iðã?V´Û?_O“?e*2?fÌ«?cØÄ?]þè?X÷±?YBt?^ñ¥?eN?h†?e$‚?\T˜?P>&?F/?@r?@T.?H[?SU‰?V)û?J¤à?:Ùi?7Òq?C~A?Mv#?HÖÒ?:`Ú?/Dº?-ع?2*ç?6LC?9Í?=ÈÒ?>+?5}?'º¬?œ_?Bý?6J?»K?"~ø?&U?'õ-?+«?1šÔ?;$`?Hu¬?T£1?\ ×?^µŠ?^¤G?`(^?c¥ù?d+¡?_F™?Z.(?[Tº?a¡Y?gBî?hã?e‡È?^A¿?X!?U—å?P0&?DáÐ?>M?FÔ?Y¶?g¯4?l£z?k8é?h‰Í?hr?j­ ?n%å?o Í?lØ?`fš?MVË?<‘Ï?9º5?D™x?RI1?X‡‹?Sîü?J«?Gœ=?QñÐ?^Î=?c‚?a;6?]P’?W«ù?M¿?>©2?2Œ˜?*2þ?#)Ë?"Q1?-f -?>M’?J;É?M3Q?J—°?G±U?Hûe?N©ç?Rf??Q8Ô?O´P?Q<°?SõØ?T]H?SC“?RÝ?O†f?Hc?EA7?Kê$?UÉ -?[Àp?]ùg?a£a?fÔ„?fÛƒ?`Ô?[“y?YßM?Ye?XÍ?V¸?Q¨?JhÖ?D¡¶?D` ?I}?NQ/?OÒ?HÒ?:×Ò?(šP?Úü>ùÿá>Ïl¤>¤w>vÈ­>6Lƒ>>n>BéD>ˆdª>¹íò?Ef?$š¯?1šB?8ä?<~?=š=?A-ü?Kœ?WAó?[F½?Y$x?YO¾?^c°?b—Ç?`¦?\ƒ??^ÓÌ?eä)?gÆ?a/§?]Î?aÔB?gÉÝ?gå?[ÓÊ?J]^?:$-?,E¢?a7?¾l>Èñ>f@>L0Í>:»£>j·>¤by>Ý‚? -aµ?"”?7í?J>\?W‰®?`Ó~?i–?r‡K?y ?yœQ?t„?p(q?qð¥?wÀï?{yF?{~a?|{=?€;?P?W€?‚«s?„çÆ?…ª2?ƒ¢÷?€Nn?{£Ø?xCç?u´ó?wbÇ?~ŠÉ?‚Þ`?„ØÝ?†i8?‡a?„IH?|Á?t|?w ´?€nÌ?„Û?‡:?ˆ?ˆD?‡)?†#?†PJ?‡z?ˆ7Ñ?‡$?‡,f?ˆ? ?‰Z­?‰ó?ˆ{é?ˆZ½?‡ìE?†Èl?†ûÄ?‰Èž?ŒÍ‰?Sñ?Š¯…?…‹µ?€{Ž?|5?{‡?}?€ºä?„s?‰Uw?‰m?´f?;¶?Œ¾‚?ŠžÇ?Š§É?Št?†0?|o?q &?v-N?ƒk\?‰Å±?ŒBw?‘…?Ž/m?JG?‹n?‰Ž(?‰¨?†|?„wÎ?…[ª?‰F(?Ž•?‘!Ý?’·I?“ËÉ?“ôí?’›ñ?ŽË×?ˆõt?…Xi?‡–?ŒÛS?1z?k?ŽÃŠ? ?¶?ŽX?øÃ?Œ -¼?‰Æž?‰»?‰Þ@?‹<æ?wˆ?ð¹?‘¡§?’(ÿ?’Hò?’»&?“5?“Ó‘?”C.?“`?‘õ?‘È[?‘¦Î?Žâº?‰²?ƒ‹?€Àž?‚°Ë?†®?‡Ú³?‡Å&?ˆ_4?‹kÿ?Žp…?ŽEˆ?Œ€?‹0)?‹È*?ŒNU?‹9D?ˆ^}?†öý?‰,Ö?ŒQ?Gi?K˜?Aq?‘{½?Tö??Š˜[?‡ÿÁ?„µc?ƒØz?…CQ?†©?†R?†îô?†Øû?†š~?‡à\?Š¢©?eõ?Ž8–?B°?Œîà?Ž2Ò?‡g?”?‹½£?‡aü?…ÿÎ?‡ýç?Šôú?Ùš?¿+?Žß˜?‹FH?†ŸÑ?€óx?r¯?fÕz?mÛ?/û?‰½?‹®?ŠƒŸ?‰Xí?ˆËY?‰VË?‡Àÿ?ƒè%?‚]?„€Í?‡M?‰‚Ä?ŠÛ˜?‰Yê?‡³Š?‰R‚?‹1ç?‰YÑ?„-?€K4?|½$?~•y?ƒ…?ˆê ?Š‡U?‡Iµ?„?…Œ,?‰˜?Š2¹?†+ë?„9?¯?‚©–?ˆ#}?Œ‡?ãÚ?Žcö?Œ0?ˆ`å?†Gt?„>O?~—ã?uEO?t¢é?wå?xM¼?*©?†:\?Šñ?Š)?„$?‰Â?[³?‚5«?„*ª?‚ç­?|–8?v -î?vK—?tx?kÛk?dù³?h3è?s5?{…?{W¬?vÄ??oÙ°?eT?WÔ\?Jsi?B•?Bm§?C[/?CL?F@6?JÀ¥?K+X?C½k?8À„?3î¿?6T?;ž¾?DÚ?SXÂ?eâX?{W'?ˆûö?ŸÄ?’¦?‘º‹?˜H?Œ)¥?†©¡?{ö³?kSf?eÙž?nU?Èâ?ˆ›ò?+·?Òê?¯²?Ž”)?Bq?å?Ž1?‹ƒþ?ƒú?t™?^âÌ?KÐÏ?J¯w?`mI?x=Ã?‚¨?‡å?ŠÙ©?Œ‰»?oü?Ž–¶?Œ¾Œ?…Û?*?€|l?…ºó?ˆöc?ŠY°?‹Òõ?‹›?‰‡™?‰•±?ŒÙ—?6?ŽšŠ?Ž’¸?¤ž?Žc²?Š³#?ˆ¹9?‰Ga?‰X?‰•­?‰Ûƒ?ˆ{?ƒÄ/?€ÅÆ?‚¯ô?‡¯þ?‹ž°?h?o?‹^?…?–˜}?“ã?ù?Ñn?““!?•÷ð?•…å?“Ñ]?“nÜ?”HÅ?•óÐ?—–¤?—=K?•"1?”ÙK?—Î?š¥þ?›P®?šŽ~?™*J?˜!?˜?™Åš?š %?™~?—­?–g?–Ì?–C?•´4?”½Y?”ÜÓ?•O?•?“ƒ?’ü¤?“PM?’Îê?‘.h?ŽË¦?,±?œú???—?£ ?ŠB*?‰ys?"Ò?“ ?—’?—¶…?–ͨ?–d?•ëê?•HÞ?“¬"?’ØG?’ô?‘Šo?Ñ?‹·¥?Ž+?ØD?Å?Ý?!•?5‚?’å=?•ŒÒ?–Îô?—»M?—ìã?–V¡?“ªŠ?’† ?““?•Bß?–sÓ?–³”?•J¥?’?Ûé?”„¸?“?’üš?’ø:?’þ4?’žI?’wÂ?’R­?’+Q?“ ?”³z?•w?”ÀÔ?“W¡?’Òó?“_¥?“# -?‘º?‘hŸ?’œ´?’ãh?’%²?’>”?’¦~?’¯?‘eW?’=?“ ð?”ÖŸ?•"q?”Vl?“5L?‘¿ë?˜•?Ž[Z?c?±b?‘œz?‘Rú?³¨?©?ŽF,?Ž7†?…?‘¸w?“ò‘?”Û«?”xÞ?“w?’¹Y?’¬¯?‘Ä?Ž˜Ú?‹‰«?‹v0?Kÿ?NF?Ý2?‘m{?‘ÂÏ?’¶}?“•y?“MÉ?‘ÊÆ?@ø?i¨?@„?;?‘[”?’9 ?’|û?’c›?’& ?‘¡?¿3?5J?§p?‘ Ò?’“ -?“C3?“;?’2?‘Ä?‘Q?’ÝÁ?’©\?“Š?“u;?’é?‘ƒ?_j?H/?k¢?P?°ý?ÓI?óe?Z&?V?U?‘¦•?‘Ü -?‘À(?’(#?’½Ü?’µy?’X›?’N%?’r?’­Ø?’¶À?’KÑ?‘°?‘Ó?¤ª?‚p?¤r?‘1L?‘òÇ?’T”?‘ s?Ò£?}ôÞ?|Y?€j?7-?í®?‚þ?„§ ?†O?…{¬?ƒ”È?’·?}œÃ?|!?}›Î?}2?ü“?‚Ñ?„éã?…ôH?„ƒ"?€éJ?~>ã?,Î?„û?…g™?…¨[?…R?ƒ€n?}`?pÑš?pã@?|?â&?‚Ïá?#S?~ïV?€=i?‚€?„b$?…6³?…- -?„žM?„& ?ƒüÃ?„>?ƒ—ô?Èž?2ï? X?€?ƒ -Ô?„Ëœ?„•Ÿ?„%û?…6?†c?†mæ?„»s?1Û?{?xH?x(Î?y²1?|Š“?w?K?o·S?v€–?zx?€m¼?€ƒþ?€þ‡?ƒ7u?…ú?…ÀÃ?ƒ­ ?'L?€?~?„´Ò?†ô?‡yå?‡R??‡7?‡×Ù?‡†c?‡£?…±?‚×Ã?Q”?‚Qï?ƒz»?ƒ"Õ?ƒ[?„üÌ?…ˆ?…%¶?„¬F?…—¸?†‹ ?†Ó°?†Ò9?†7v?„µ”?‚B ?“M?ƒS?„Lã?„N ?ƒÊ]?‚7?_Ž?&à?yuÁ?p¦?x<¸?Ž?‚M?‚®M?ƒÛŠ?ƒà?ƒR?‚D?¤î?}DÉ?v?ƒoJ?ƒ6?ÄÌ?ß?€Ñ›?æ?ƒÍ?„б?„"?ƒþ$?…¯?…qÅ?….Ë?…FU?… f?ƒ×Û?‚{¶?Ãq?Õ?ú¢?¤-?€j?{«?zy?€³'?„5Ÿ?…Áš?†'Ÿ?…Ì’?„¢g?ƒqº?‚Ï?‚Q·?‚ƒ6?ƒ…T?„sz?„¼4?ƒ½û?ƒV?ƒ4#?©_?€g(?z¼?n ?p7ò?~yÙ?‚„]?‚ûÕ?‚of?̽?z°u?|®Ï?1Q?b/?€[T?A*?‚¥÷?‚|«?™?‚ -ª?ƒJ¦?ƒ¦ž?ƒ¬Á?„ -Ï?ƒ¿¶?ðÉ?Fø?‚Êë?ƒ/¹?€¯à?~ô?€äÁ? à?€?~¤|?Z?ƒh?„}?…¨?„œ,?ƒí‰?‚»?€'¾?{ó?|׈?‚RS?„ ?„á?ƒ°ì?¼î?|`‚?|?~t?ƒ^ë?ƒY?‚ÞŠ?R?€»¥?š?‚/Ú?‚–m?ƒ·?ƒ6¾?ƒ ?‚kû?tD?l?yªÓ?zï ?€©É?‚~?þ”?×I?eh?€ñî?€Ý~?+ë?‚?‚µ¿?‚Ûâ?‚¿?‚™±?ÿ^?€O~?~Óª?€bt?€8á?~Žç?€l?Às?€Ì¤?~~I?ò]?U°?´Ï?d~?€ó‹?:h?‚f?‚´L?ƒ$?ƒ1š?ƒ!?‚»À?‚?Ì_?€/?{´ ?yõh?~!? Ð?‚3¯?U—?€e³?€¤?‡¯?»f?†w?mz?€þg?€‰9?€Ú?3@?P¢?œ‡?õÙ?ÛØ?Š´?^6?9„?Dê?jY?Š?hb?€ÌU?¶?~è4?~Ô—?~¿1?~Ç?|LÛ?|G„?{²‘?zÛ?{¿ú?|‘“?|³ô?}ÏF?~÷?#??~?~ç€?zÎÑ?{BU?{¢h?{_¬?zÏ?zÉ{?{X?zÚÀ?y«Û?xw?tìÃ?qJw?s§?vHI?v0?vî.?xȬ?yGc?yR]?yŒ-?zV?z·2?z¦˜?yÍœ?y(¹?y7?xÌÐ?x?t?x**?wâ?w#p?v¶¤?vÅ?vȪ?w.Ô?wÌs?x;8?x+o?w+l?v˜?vé‹?wZG?we?v:é?t߬?uâ.?vÖ?v Ä?tö°?qö -?n¢i?nãQ?qa ?t©.?vÕi?w-µ?vÎñ?v±Ú?w\€?wÅm?w³N?w],?vÄ!?v??uÅu?uÍ–?u=?u¿—?v‰j?v©V?v(Ø?vv?w?v¿Q?v¼,?wkl?wUC?vú?v¼?vV?v:Œ?uÎ:?t8_?r^–?r`þ?t°H?voË?v¬?vK/?uhš?sb?rÝe?u7¶?vr|?v"¥?vŒõ?vàz?vnP?vI?v°?bl ?`Áº?Yö-?U—÷?[ç?`F?^j4?YaÀ?X?\f?^:„?]ï2?[u÷?Z-9?\Ô?^ ¢?^”˜?_Òv?`š?_‡~?^Ù¼?^Ð ?_EI?_)O?^½?^À7?^§ª?[á,?WNê?X¼?\‚b?^Ò?^¡?^g?\ø ?\ßÔ?]§(?^ø?]éå?]Ûè?]Þ¶?]÷ð?]UÁ?[?ZŸ?[z×?\P ?[ í?Z?\!Ž?]<ª?]"¤?\úk?\hç?ZÙ‘?WÇ8?V–ˆ?YÍ?[…ƒ?\Ÿ?[x?ZÅ5?ZZß?ZhÏ?Z§?YiÙ?Wû?VÙy?Yl«?[A?Xš^?T-?T09?UC"?V{??X4?Yø—?Z ?Z=”?XE)?X?M?Z{C?[€?ZfH?Z\ ?Z€ª?Z|f?Zmñ?ZB?X²ù?VÞt?TƒB?N€˜?K;ª?MÍW?PŸÜ?R C?TE’?VQ?VþF?V°Œ?U/¸?S6u?Rÿ>?R;=?Q |?S`á?U–?V-—?V4–?V$?W†?V3ó?Ul3?T}×?Sc%?Ræ*?TÕž?UàG?U€#?Vˆ‹?Wƒ­?W¢Ì?W„A?Wse?X -’?Qîó?R#ÿ?R§?Qï?P37?N©­?Iá9?F{:?G -|?J&¢?MDÚ?Où?Pž¯?Q¼Ð?RÙÖ?S†G?Su2?S+J?S5|?S“?Q÷??Q -e?PôÀ?Pé7?P€?Nß?Ni?P$ ?QQ°?R˜?QÏc?Qˆê?Qî?Qþè?R3I?Ró?QQ™?Q¸?PëÛ?PGþ?OBÙ?M ?NT¦?N„}?Mº»?MÛ-?Lù?KF?J‡f?Gl`?=\Í?!‡h?~ï?¾¸?:Jà?GPü?JPF?K5Ò?L{w?M }?M91?NO#?N÷Ù?NÒ?NÛß?Od$?Phd?PKd?O²°?Ouæ?NÍœ?L˜†?I,V?KW ?O¾?O·@?OÔ?Oû ?P3×?OÅÃ?N·â?NX'?N!ƒ?N|?O(y?N£ì?NF‘?N#?N¤?N† ?NÈX?Nø£?OË?NŠ?N+?Mèf?Møj?Mé£?M(¦?LÕ¶?M^?Mïr?M©‹?M^o?L®û?K!?KN?L(„?L“?Lû?M^í?M7,?M*?MX?M1£?L?LY?K[?I†p?JQ?K½Ý?L Ë?KêŒ?K‘R?KAÕ?K?J}?GÑá?F½?ID?JHH?JÅô?JÿK?KZ?Kê?Jú -?J_ü?J/?JC?IШ?HuÄ?Gíj?H·È?IV?Hа?Háø?Hå?H“7?H¡?Hí‹?HôY?Hq£?GBÏ?E!&?D„?EiË?El(?E¾?F‡H?Fáú?GO?EãÃ?Dó”?Fi ?FÐ%?FË*?Fx9?EéÃ?Eá?Eãâ?E}_?Es¢?E4?Dº‚?C…2?DW-?EtŒ?F$â?Eì#?EZŠ?EÜ;?Eóõ?Fi?EéO?D§Ÿ?C*É?C?d?Dëò?Dœ‚?D˜ ?Ev?E „?E3 ?ETú?Eô?C2S?A³.?BSî?CÓ’?DÐW?D›8?Dµy?DŒ?C­N?C9?BÒˆ?Bw?Cw,?CŒO?B¾p?Bà¸?C9R?BÍ?B Â?BÂ,?Ba?Bèu?CøÊ?Ct€?A¥ð?AÁû?CW‡?Cs ?Aì0??¼??ÈÜ?B|v?Bð•?BéY?Bžž?A÷ ?A„?> ¶?;y`?<Ö?@{l?B4?B0D?Bz?Awò?@2ý?<4~?:ƒ?<‚=?=¾ƒ?=Be?>v­?@È*?Aš‡?ArÞ?AT?AŠG?>8?>U˜?@”?@è“?@çF?@©u?@^â?@”??íž?@?@6??Ï&?>“á?>&ø??O???=k$?;ý ?:Yx?:ë»?W?=\¬?<9z?<,¹?=šù?=÷½?>3?>9~?=“¶?;‚?9††?:Ò»??9šƒ?9 ?7@b?7\”?8Ž?8Ö†?8?7 Œ?7£€?8.˜?8ò ?9K`?8Æ|?85\?7´Ô?7¬Ì?7Á·?8ÜÑ?8üÌ?8sµ?8%p?8Tâ?8UC?7âÆ?7ÂB?7ëC?7Ìì?7çŽ?8 ?8cõ?8­×?8ÿ¯?8©Q?7·ú?6)Ë?5`Ó?5zB?5I%?64?7Du?8 -?7²Ñ?75?7(›?6ò?4Øø?5œí?6¼u?6á†?7kß?7zZ?6á£?6Ò?7cn?7\ ?7&ž?77‡?6Üù?5È}?5©8?5±o?4̼?4²5?5K¨?6M?6fV?52?3;Ý?4!ñ?6 R?6/W?5«ý?3T²?2š?4½ê?6jË?6Õ?6õ3?7 w?6] -?5½a?5Â&?3MÚ?.}?0ÿm?57?6-?5Q¹?4üÝ?5þÏ?6%Ü?5Pè?1ÊP?+½?.ÿ?4¼ì?6}ã?6«–?6²?5Yb?2ò"?3§s?3™?/¾Î?0ðä?3.º?0„ë?$¢£?%ñ`?&]?%ÌQ?%ëp?%Ui?%eã?&tY?&‹ç?%ýu?&NO?&n?$s ?$í?&j•?&‘ÿ?&ÖÄ?'e?&ʳ?& ?&?&6˜?%@˜?%¥?&ga?&ï¤?'?×?&×*?&š€?&Ž€?&0?&GÆ?&?&[â?&æ?%÷^?&Gy?&G?%¹þ?$ô9?$¾Ž?"å‡?$“ ?&7k?&’A?&þz?'Æ?&O -?%öÙ?%²?!æ‡?#;?%£“?%Ÿª?&^\?&Ñ—?%²6?#?#t˜?%2?&;²?%„à?$na?$ÛU?%Ÿ—?&4?&Fï?%ä]?%Žä?%Àè?%Êã?%ª?%}?%ßw?%;*?#™H?"÷?#äL?"¸U?"˜?#ë“?$IÞ?$Šì?"¥!?"{ê?$=Ø?"›=?"IC?$î?$@¿?#ã“?"e‡?«Ã?Q4?!È?#©ý?#ê?#œÊ?"æ-?"ÁQ?#+?"çZ?!F#? íh?!¤S?!âk?"[?!l?"3?"‡µ? Ö? -™?…¡?qi?!°?"_8?"„?"“Ô?"}¨?"wÁ?"L?"#b?"#?!ñù?!Am?!‘Œ?">?!û?!òÿ?!ôÕ?!Ôi? ‘I?g?¡g?¼?L?hY?Ø“?bˆ?Ö?U?•¡?Ñ;? ‚Á? Æa? º?ú?6`?8À? ñ?  ?”? È?82?Žì?nŠ?KÄ??ÐB?³?±r?×,?Z ? ¾?:h?ÁÓ?>;?mƒ?„M?@?Áß?y?Nf?¿?;?Ù?rM? -?.Ê?sÚ?0í?à?ìr?N‹?7?ü?¯?vû?E˜?Œ¶??å ?_?òy? U?rŸ?Ã=?Û³?~K?èù?ø¿?'? Æ?îy?±ý?¸Ç?¨ª?¿Î?ã?÷ ?Ûé?g?ß»?m„?®ƒ?ÏK?gÜ?)Ç?°?ÒS?,±?fÚ?âÏ?>[?’5?Ã?[ø?0à?O?HÆ?£û?'? [?­ü?WC?6t?U*?x¯?šÖ?RÜ?í2?rû?N?dz?È -?º“?N??sZ?;$?h–?CQ?uË? ?lƒ?‰Œ?V©?Q?¾ˆ?Éè?¯?œÔ?±õ? #?lr?ŸÏ??c??1ñ? ë? -JŠ?ÍY? -°m? Î#? Ñ•? üˆ? Þ? [p? U°? &ö?…/? b? ®:? ? !? zø? X)? N? ‡? ï!? ëû? ˆ}? ¢? -zp? -d? -]œ? -±¤? -w? qg? *™? ?C?ák? Aš? -Æ? - ¿? áü? ±ù? ~? W? »B? aB? Â?F ?öZ?],? G;? ¨Ó? -&5? -C™? -…ç?âþ?@½?ëð?Ä1? 2 ?ƒ4?á;?&Q?:¤?µ? "ç?VÅ?‹‹?ô ? f?? -ê0? -o?èî?r”?ù…?;?à»?;ð?…è?9ø?Eä?üá?©B??(?¢?¶M?OÛ?’Õ?ù ?=?ÏU?|N?åÎ?D*?[,?®´? /?ñn?  ?!ß?¸ê?íØ?Ï?~ø>ã>ý>æ‚à?øž>Яv>«†ª>ÓEÆ>ôË#>ý¸´>ÿÄô?Í‘?:5?SÌ?ºŸ?Ö>?2a?²Ý?ï7?‹ù?úç?á ? -º?Ç ?3t?@—>ÿÖF? u??¢º?ƒL?çx?\V>ÿø¢>ýÂ>ü}L>þ{>ÿC•?F?Ò>þyó>ü¥>þô>þÊ">þt¨>ýl>ü±>üð>þ0±>ÿgÒ?.:>ÿi\>ÿF>ÿ3Ô>ýøÃ>ýfÄ>üÜ„>ü;’>ûð>ú–’>ùZs>ùÞì>ù½”>ùh>õðë>æâ5>ºè>µVá>ৠ>ò*´>ö>×>ø—»>÷µþ>õg>÷ Ó>ø@M>øÅ~>ùR¡>únÿ>õμ>ð¿|>÷ÜZ>û”À>ûöV>ú¿ÿ>ù&ý>ùÚ¸>ùÚB>ùÏQ>ùŠs>øFà>ø «>øwj>ù>Û>ø’Z>ùñ½>û3>úÛ>ú/>ø >÷Q>÷ü4>÷½þ>õã>>ô‹ß>öM˜>õ­Å>õ g>õv/>ôš;>ñ­8>ð›&>ô¾í>õ•e>ô'0>öÓ>øO¯>÷Á>÷Œ]>ú1ç>úy+>ø1>÷¼>ø[´>ø:ß>÷54>ö`ž>÷Cã>÷¼Ô>÷‹\>ö<±>õÙÓ>ô˜>ö¿3>÷ØÎ>øòÂ>ø¡O>ö]À>í¤¼>íœØ>õNw>÷ôê>ø¿ô>ø3d>öú>õ/ò>ò1G>ïK&>õ>>õóè>õæU>ö¹Ä>÷×>ö`‚>ò»D>õ’>öÌÊ>õÄá>ô!_>õ¬Æ>ö+>õ¼·>ôü€>ô54>ò>ê&>äVÎ>é¤Ö>é~M>ïÞ‹>õ*>ôóc>óVH>óØ>ôèŸ>õf‡>ôð|>öAO>÷9{>ö¤[>ô5>ônÑ>÷e¨>ö¿Ì>ö5š>÷–e>÷µò>÷À·>ö¿ï>ó÷¸>ïê >ôÀZ>öäç>ô“>ò!>òGâ>ðz€>ì“÷>ësÉ>ò=Ä>õô>õÃ>ö8¦>ö>õê>ñÀ>푳>îz >ðNë>ó]§>õ4á>õ0)>õ,>ôîê>ô¡Y>óöË>ð­$>î”·>òG>ó é>ñ2L>íõû>ïâ¨>ñ¥>òÕ\>ñs>ñ3N>ñæ5>ñpü>ñ&S>ðeù>î€3>èÛâ>êF>îÊ>í‚->çô¤>ßÞ)>Û€Œ>Õ68>ÑY>ÛÅ>ãsV>äS]>ç÷®>ë >íu–>íq>î:>îœê>íx>îJ>ï{Ô>ï¥[>ïjƒ>ïŠP>îþð>íS­>íÐœ>ïW*>î»Y>ëUG>Þx›>àò¦>ídh>îÞè>íè8>íæè>î7O>ì -d>ã³*>ãÖ›>ëê“>íiM>èæ>Û)Ä>â4Ó>èÍf>à{>æÍ>è@>écc>ê)ò>é,>éäà>é[«>àÙ]>åb>ê9þ>æ<„>æñú>ë“>ë}…>ë58>ëÃ>êy¸>ê÷À>ë·>êš>êA)>éÔY>éþ$>æÉÐ>â½Ý>ç!>éõF>éh`>èü¨>éaå>é A>è³ó>æC²>ç|">èU´>ç} >å€>äíÕ>ç >æ«.>æ¹û>æËÝ>çŒ>ç~>çU–>çKy>ç>çÃ>åo >äº>åï>ä­>äQ>àî>Û„¿>×|×>ÝB×>ÝX¹>Ûû'>ß{Ï>Ü}Y>Õð>Ånõ>Àæò>ÐÚY>Ù¸U>Ù2U>×P§>ßW>ßà*>Ý<>Ýi>á>#>áÉ·>Üú˜>Õ«>×y>Ûf_>Þÿ'>Þm>ßá>âv->ã-®>âþ]>ãL9>ã71>â•G>âŸH>â¥[>âL»>á|>Þsï>Þëg>àL>߸Z>á „>áË2>áИ>ádX>àÄâ>àPu>ßÖ£>à¤S>àöV>Ýš–>Ý,û>à-<>ß¹ô>àÏ>àU>à¸ú>à$o>ÞóÈ>à{>àF¢>à - >Þy>Þ'">ßÄ>ÛÌÃ>Ûíy>Þš>ÝŽ>Ü<¿>ÚÍ>Ûô>Ýè:>ÞÓ£>ÞP®>Üáü>Ùüˆ>Üí~>Þ(ß>Ý>a>ÝÛ>Ý >ÜFû>Û¸>Ü>ÚÔ7>Úö >Ü·î>Û–>ØŒh>×À•>Ï>ÕQ>Øu¾>Ї>ÂÓñ>Ñ]%>Úij>ØA}>؇>Û(Î>Û-}>Øhy>ÕôS>ÖO>Öq%>Ï› >Õc >×z‹>ÔÆ;>ÕÛ>ØNß>ØŸ¡>Õ–>Ö>¶>Ø€*>ÙX_>ÖÁN>Õ‰>×’¿>ØÄú>Øq>×ô2>×¹°>ØÂu>ؤV>ØX_>ØŒ>×<>×À×>ØK >×ÜO>ÖÀf>×V>×¹>× ú>ÕT >Ógy>Õ¥¨>Ö:©>ÕÆÜ>Õí>Ö)û>Ô¡>Ô{E>Õ¶i>Ô‘¶>ÓCñ>Ñ»­>Òm¨>ÐÅš>϶ö>ÎøF>ËÚÕ>Ãf5>³Š½>¶5—>Äos>ÊÅÿ>Î+Ê>ÏP.>Ðîô>Ñt}>Ñp>ÒX)>Òj”>Î’>Ï8Î>ÏÛA>Ñh…>ÓWª>ÓoE>Ó]w>Ò™#>Òp>Ó6_>ÒÚÔ>Ñ›H>Ò>m>цº>Ðdß>Ìb§>Ìõ^>Î~u>Ñ8ù>Ò™P>Ò•K>ÒJ¾>Ñ L>ÊÕ¡>Ìÿ­>Îqç>ËŸ>Ðx >Ð’,>ÍZj>Î42>ÍÙ>Îì>ÐÚo>ÐN±>Înx>Ìí>Ín˜>̽ç>Ìé>Å%>ÊhÂ>ÏZê>Ï;M>Ïd>Î¥,>Ìœü>Ì~>ʦà>Ìö >Ì÷>͆A>Îeß>Í<Î>ÊQ>ËÂè>Ì´È>Í·ê>ÍÚ³>Í–Ï>ÌŠ>˳>Ìè>ÍΨ>ÍŸ›>ÍÅ~>Í€>Í.=>Í.ò>ÌùŸ>ͬ>Ë…!>ʃ>Ì/•>Ëñ>É.j>ÄCÉ>Çì>Éöc>É°®>ÈcQ>ʵù>ËÓÁ>Ì‹>ËŽó>Êð›>ʘF>Æa(>ÈE>Él“>ÈâY>ÊSƒ>Ë-*>Ë7Ê>ÊÝ`>ÉíJ>Æÿó>Æ‹î>ÅJÀ>È0>É«>ɤR>È;¢>ÆÇ>Æ©ê>Éum>ɤÕ>Ée>ÈÕ$>È׎>ÉM:>É-Ñ>È–S>ÆØø>È>Ç«w>Ç2k>Ç>Æ,Â>Åš>Çz;>Ç38>Ç°3>ÇØ/>Ç­Ï>ÇS]>Æý/>ÆÜ>Å“}>Æ<Î>ÃÑ8>‰y>ÆKá>Æfî>Æ,e>ÅÛÐ>Æí>Æ¥>Æ>Åf‡>Å}+>Å·è>ÂÁ–>¾†ú>ÁÅ>Å .>Ä»Ã>¿ýÏ>Â.n>Ä~D>æ4>Ä_±>ÃÄï>À®¸>Áº>Ä >ĽÏ>ÄOû>æu>Ãçx>ÃL.>¿p>Á³1>ÃÓ¯>ìc>Ã&ã>ÂsF>ÂÁÿ>à ¨>Áýg>Á7’>ÂMb>ÂfÖ> Ñ>Á€W>Á¿h>Âa²>Áú,>Á…©>Â#>ÁõV>Á]\>Á]â>Á9¦>Áâ>ÀPè>À¦f>Á×>¿Q‘>¿£Ú>¾ñ‚>¿¦~>¿ÞÌ>À`>Àz*>À2—>À q>À>¿æ>¿hÄ>¿×>¾é]>¼î˜>½Â>½Rq>»÷f>»£ï>¸uá>¹²Û>¹¹>¶dÚ>°=²>¡8>žÚT>®Vè>´öË>¶•Ñ>¹ ÿ>º°>»>ºì{>ºv<>¼I•>¼Ö ->¼È>¼’~>¼J>»ÝE>»sB>¼{>¼“">¼ÍÅ>¼ê>¼ã>¼ÚÍ>¼šœ>ºÝM>¹æ÷>»ô^>»ÿ_>»!á>»u >¼è>»«Û>¸¾'>·J>» G>»‹Ý>»ƒ¢>»d.>ºä>» ü>ºÆ¸>¸xp>µs‰>¹o{>º|Ë>¹Öâ>¸«‹>¹!n>ºIà>·¨æ>´q>¸HO>¹‚>¹²v>¹Vß>¹±->¹‰Ô>¸|ì>²&>³0>·ˆ©>¸ËJ>¶êÕ>¶üx>¸BV>·ûu>·ŽÛ>·„(>·ÇU>¶¾>¸ ”>·?<>².†>³Œ0>·(W>·ÖÆ>·t¬>·S,>·bÕ>·qì>·8>¶ >µà¥>¶â¿>µSp>µšü>¶Êz>¶Æk>¶™˜>¶…>¶gº>¶8Q>µØ(>µ·‘>¶¨>µýÙ>µ˜‘>µz0>µ¿ >µ±>µ‚‹>µK›>³_>¯ ,>´[>µ%>´ð¤>´HK>³%>³aE>´=š>´6>³˜Ô>±é%>³¤ñ>´¥>³Ô¹>³»ö>²E†>¬a¥>­Ÿ¥>±«>²ü6>³[¡>²/é>¯‰Õ>­ ž>°Êú>±Ye>²mZ>±£>²½>²l&>²Bé>±ÄA>±sº>±“ó>¬Ç>«ÀË>±d>° -ç>¯cü>±n%>±~´>±!R>°¨û>°ÕÙ>¯§>­-ó>¯þZ>°®E>°x>®ÐÁ>¯Y>°sË>°iv>°ï>¯û«>¯ëÑ>­Ù_>«ðD>­˜>¯ %>¯ˆ˜>®á3>¯"&>¯Õ>®óó>¯ô>­°Í>¬šÉ>® ->©´>£€>¥>©—>® g>®A >«U>ª‹¬>­²>®œ>­ùÍ>­ÍÚ>­”‰>¬oœ>¬ª>­C–>­D>¬—¶>¬‰ç>¬n€>«±1>¬¯N>¬š'>«Æé>«¨>«øé>©¹W>ªBd>«WÈ>«å>«Ô”>ª(n>§Èë>©u>ªîJ>«]>ªŒ×>«*>«qÀ>«H¨>«ö>«7>ªÁ>ªY>ª·¹>ªÎ¸>ª’ò>ªŠü>ªb³>©Ø >©Ð¡>©“Á>¨…G>¤ >œ)P>¤}&>©”i>©µz>©†>©>©Ù>£FC>ž?.>¦g¹>¨”]>§‡Í>¨b>¨.D>¨‡L>¨²è>¨RË>£f]>¢i˜>¦ã:>¦ ·>§æR>¨;>¨C>§è`>§˜û>§Ly>§p>§u¨>§F>¥’§> §>¢Øw>¦®_>¦aà>¦†º>¦:(>¦t¾>¦Zö>¤WÉ>šŒ3>šg> 1¿>–²>˜í”>Ÿ#}>¥$>¥q>¥2v>£ˆÎ>žFª>£°>¥DÁ>¤ßð>¢ñ¶>¤â>¤Ðè>¢¢œ>š©÷>š’>¢"²>¤I›>¤I>¤(T>¢Öö>¡8(>ŸËˆ>™‘U>žÛd>Ÿè9>£Em>£°v>£lg>¢ö:> ¦W>¡K>£S>£\>£ >¢ ƒ> F>œ5>˜´>Ÿ2»>¢r„>¡ëH> §‰>¡ -> ô¶>¡2>¡lq>› >’Ʊ>ž=> ‡V>ËÖ>šÛ>ž Œ>’ÕÃ>–g±>Ÿ=>>žÑ´>Ÿ`Í>Ÿá`>ŸJÞ>š÷˜>žût> Y‰> mˆ> kY> R> >žc>›¹F>œ#ë><>•§0>žHX>Ÿ8]>žÞŒ>œ4µ>—)>™@5>ñ>œÏV>œ[«>›ÍÓ>Ûå>ž&è>}b>œ›>W>œN->•Ò >˜%\>›2^>› ->šaî>˜äz>—ŒX>•)m>#>‚Ñ™>EG>Ž>”)>–ÁÓ>—Ô>•gj>•Z>”ºè>˜pß>š4>”Åì>•…(>š¼>›$>šùs>˜œü>ͧ>“*ò>–L‘>™Åé>šûl>›§>šè ->š² >šáß>š‚>>šPc>š—–>š†t>—î¼>– >‘_>•ó >™ˆ›>š;ý>™Ó´>™¯>™wñ>™³k>˜ý'>˜³ >™]¼>—õ}>˜±Õ>™•$>˜îJ>˜E_>˜B¨>™2É>™=z>™h>˜¹ì>˜É>˜¿0>˜òÀ>˜µ>—â£>—Ø >˜U¥>—öc>—»¨>˜@ß>—¾ã>—Ý>—¼Ñ>—ÞW>—æE>—»ú>—Œm>—B”>— é>“´‘>•Í)>–ÄJ>–! >’´D>“Ñ>•5›>– w>–ÏN>–“>”èû>•oü>•Çž>–dŒ>•¹>”|›>•x>–[ß>–A{>–>•Ã>•”ê>•se>”Á?>• -‡>“Ív>Žß:>7>”µØ>”÷’>’>“S>‘†å>“ëX>”Ñ‚>”ßK>”0o>“™«>”v7>”cè>”QM>”%“>“Ç|>“ÚE>”FÉ>”Ñ>“ý>“ܯ>“R>’o,>“*>ŽQ>ˆ<Õ>Œ±ü>’›©>’y¼>“*>“I6>“ ->“Õ>’Ђ>’%>’3§>’¿Å>‘ÈÆ>Ž•>‹£m>-i>‘ -3>C˜>É>‘%)>‘#>ŽÝ‘>ÈM>‘ 8>ùû>‘&Í>Þ>‘/>‘HJ>¡Ø>‹É@>ƒ>¶Š>L£>—P>_Î>[û>]N>)A>Žàa>Ž±{>Ûf>I@>;>â{>Š>‹Á>„Y>Ž=ü>‰cÞ>Œ>ÙB>‹_?>‹{m>Ž±v>ÎÔ>‹¥Œ>‰ ó>†|>Œ%®>…^>Å”>!÷>Ž_Œ>J>‹¶>‡³>Õ>Ž1´>Ž >¡>‰^ù>Œwš>ŒRø>Š´…>‹çf>G¡>©E>Hº>X£>ft>KÂ>VÄ>Œ¯Ò>‹™X>ŒâÛ>Œ•C>Œ/à>Šã–>‹N>ŒžÞ>Œ–ä>Œž>Œ*Ð>Œ:w>Š½C>‹PÎ>Œ$¢>Œv>Œ X>‹«Ö>‰Èë>‰îÖ>‰ëè>‹:ž>Šé_>‹V?>‹c>‹$†>Šg>ŠtU>‹1@>‹&ò>Šè>Š2¹>ˆÈR>ŠP¾>Š¡O>Š™>ŠEw>Šr#>Š`¼>Š8M>Š>Š -Ì>‰÷µ>‰`˜>‰P2>‡".>‚/F>†aÁ>‰†<>ˆoí>ˆwd>†ð>ÃV>°œ>‡ß>ˆf>>†|m>ˆW>ˆÔœ>†™é>†Â>ˆ€;>‡ÙZ>ƒF>„Æš>‡¹{>‡·÷>†Øâ>†åR>†-}>…h`>@ñ>†ŸV>‡½®>…ñ>ƒ™i>…à°>†yû>‡jø>†ñ8>†ü–>†ÜW>€ø>ƒD>†u>†>… >†#4>†À >†—¯>†^¹>†4f>†)ˆ>†,£>†š>…ÜZ>…ÿ’>† ©>† -|>…¸ >…œ‹>…œY>…®Ð>„°>Ûë>;>rÆ>S>…´>…BÃ>…Œ>„ë>ƒ21>{v>ƒ.m>‚Œl>‚_>}ØW>ƒëu>„‚™>„mî>„E˜>„ ¨>‚¤ž>ƒ=>„®>ƒü>€Rt>‚MÒ>ƒ¢Y>‚a >÷«>©!>i÷>rå¼>‚ˆG>‚Êý>|»[>ã•>‚Ê¢>‚z>€ñ†>‚p>‚³ª>‚m5>Kü>ý¾>§™>‚… >‚Y>ûõ>ÖI>Z¤>t˜³>pUÍ>€U¥>}•è>y°¬>y’>€c >„®>r$>b”>Væ>\ >D@>Eš>$ˆ> ­>€ÒV>€Ó’>€êˆ>€ÉÙ>€”t>€™>>€*>€ˆ>>}N`>ÀPs>Ϭ=>Ü­>ç >òë*>ûò>øðJ>íHn>ág >Û›ß>׎_>ÌW9>¸tÙ>¤¨ë>›sW>¡ZJ>´)>ÌA‡>ßtg>æŠ$>àµ,>Ò¯ò>ÃZå>¶ÔÏ>¬Cš>¢˜˜>ž´>¥µ>·›ˆ>Íg>ÛÒ±>Þ!€>×.U>ͱâ>ÇðÛ>Ç°9>ÈÒß>Ç>B>Ås¦>ÈQy>Íçý>Ð />Ξ¥>Ï‚©>ÔO>×$æ>Ó&g>Ë`&>Ç»>Í–²>Ü1>ì+x>ôF7>í¯ú>Ú—|>ÅÜ>¶Ù>°ç>­¡,>¨Ö›>¢¶é>œ„ >—À;>˜«> 6>«ab>±5²>®JÌ>¨´­>§,Û>¦îø>Ÿ_æ>¥>~ì>x3e>‰£ê>£å>¾ß>ÐÞê>Öíè>×–Ì>Ûe²>åÄ>ðz>÷ß>÷ Î>ñy“>ì9>ëäí>ð5>ô› >ôÉž>ñ-í>íÝP>ì°>ç=Ï>Ûy†>Ê”>ºR>¯7>«+>­B">²„G>¸ð{>Á4ú>ÊÔð>Ñž>Ð`>Ìž‚>Í?Z>Ó >ל¨>Ö#>ѦG>Ì&?>Ç5±>Õí>ÂR>Â8ß>ÂÛ>Äþ>Ê”>Ò[¢>ÙÜî>á°>èâ/>ïh«>ò5i>òÙ3>ô!z>ô²§>ðNø>åÒ+>ØÞJ>Î'>Èa>ÇÃ>ÊÕJ>Ñþ>ÛæJ>êd•>öæW>ý#´>þ4j>ü¬p>ù£…>õ£§>ðÂ>évG>àã?>×ýñ>ÎxV>–¢>´_ˆ>§{×>ŸÚò>>œI•>žær>¨®R>¸Ö‚>Èx >Ñœ]>Ôó¹>ÖŸÌ>ׂ^>ÔõS>ϼ~>ÏŠÛ>ÛVá>ðLD?õ?Gç?òŸ?ï¤>üüÔ>ùt?>üÕÊ?‰Å>ü"c>é2a>ÍAB>²\­> $ä>˜Â>—s>›˜Ú>£y}>®Vr>ºãg>Ç>Ð&>Õi‰>ÙFU>ßšÐ>èl½>íXZ>ærÌ>Òó1>»'¨>©°ÿ>¤•B>ªÒ>¶å>À¬>ÈNl>Óqá>ã¸ß>ó$’>÷è>ðCº>åß>ÞÿË>ßKÇ>åñz?¥›?çy? I&?0?>ü+A>éðê>Õ¿>Ä–>¹8{>²»b>­òÝ>©>©ô•>´µB>ÆK¶>Ó >ÕÜS>Ö~;>ÜæX>æd>ì>ê3>â_>ÙJ®>Õ•>×LË>ÙÕ>ÕР>ËM>¿/Ð>´>ªK†>¤¡Ð>§ÁÈ>´sA>ĸP>Ï_->Í÷]>ÀÏ>®,î> z¾>œ;¯>Ÿ‚Á>¦í–>¯`l>´¨>¶x>ºû'>ŇU>ÑIù>Ùª‚>àÌ„>ë>ç>úV?4¯?=?0…>ôà >ãøj>ܾš>àáÄ>êyË>ñ…>òA>íJ»>ç²>çÓ­>òé?¤? ÈÆ?QI?*l?¬g?¦å?!?Ö?´z?ßó?ô³?Ÿ? -Òr?u? ¬5? Ôj?@?ØY?nU? †¯?5À?ã?Ên?W—? ž? «? -d?ÊŒ?‚ó>ùý>ö½>öù>þoß?ÌR?‹ž?{g?Ò?ž‰?®?“V>üI/>ôQø>õi&?Ú? -‘Ç?qs?$?bÍ?y°?au? ­â?!2·?@¯?Í?Ôûêò>öä??˜¤?”?l?ŠX?³"? ¾ð?U'?Ü)>þKq?»"?Œ½? †Œ?o?¤?Ón?°ù? ib? =>øQ§>ìtØ>ð?"|? “ž?h¬?(? 9.?+®?ß?|×?1ë? ÔC?²?4o?’¥? -r?/>ï(>ìB>÷R? ? ?!§?€W?œ>þdz?Jª?’d? &×?„ ?!û?î?YV>ìSw>Ði>Æâ¨>×ðŒ>öøa?„Ô?è ?ÃÀ?€?q?¦?½ô?¦? £U>þ 9>à ¬>Æ;Þ>¼°×>ËÂÔ>í.9?¨ñ?&-?L­?¼*?˜>ýÎ>î >ãÚO>áŽB>ã >ß&ø>Õ O>ÐÊ”>Üf©>õ×d? •#?Ú?)?å?¢q?ÂJ>èì>á§þ>ëýñ>øè>ûNô>ýg©?¸Ï? ón?…)?²? ˆÈ? ¯O?‹,?)?Z¬?Cï>÷“>êa½>ë…Õ>ù" ?ÖÓ?RU?tÙ?ÏÍ?â£?Ý¢?Ub?Ü?} -? [ß?Xr?–?I×?µˆ?D;?o¹?Ïß?»?ö ? ÞH? þ? ´O?0ð>þøÁ>óï>ò]µ>þ—?¦Õ?y?Ý?óy?·;?QÊ?Ã5? œ?[ü? L™?=Õ?ŸØ?T?¤"?&}?Y¼?$y?*?))Ë?"ª?@[?/@?@?Ñ?µ?ˆ@??¬–? ì2?8>æßý>ÌÌå>Ĉ‰>ÊÓý>×|>åݤ>õP ?„°? %“?\±?‰Ç?#Çî?%`.?"K?ц?]Ø? 9?Cm?3)?%øâ?&y$?^ ?5? s…?É™?L‘?’²? v?ì? Õô?¿)? ¡F? -^ü? hÅ?Ó? ƒ?«?z?ç!?V?ò?öÛ? ¯€>þq³>ë<œ>ã© ->íWš?¤²? ¾©?*÷?”d?3ß?g?Ø‹?¥? ÜÕ?A?Ä?&cá?),?#ÏE?Ða? ¸?Æý?#°? -·=? ñK? Ý>? }!?c >ú9E>ú?%¨Q?'Ìç?)؈?,D;?,¶è?(µX?!?º?…$?ÔÚ?ü±?ì˜??Ã?x?ŒÄ? 4S? -›>? ,•??Û_?&±H?)Ù?'ÄN?!åé?ü`?²V?V$?Yé?Aö? ä>ûàÖ>ú̉?ý!?€ ?=%? ¿Ö?!~?G?Þi?ì)?s?#2ˆ?&=´?&I¨?%½’?'YT?,@.?1ôä?3•Ï?/í)?+lp?*¡±?-aX?0;Å?1-ß?1.g?0ù¾?/Ëß?.ºn?08¤?3dà?4¾x?2–%?-Ëo?(?#ã'?#·*?'°¿?,4"?-öá?,Ö -?*r&?(s®?(J?*ÜË?1a%?7?3ðñ?%”¬?¡? -þÚ? $Î?E\?+Ð? -Ná?ã9?Gu? Õ^?!a?Žµ?s±?º?¾ÿ?è)? ™?K"? ?,—?Ü+>øÿh?_‰?§t?\>øøc>êh½>é}G>ó€?À? ]ƒ?C?ØM?' -’?)á?'Öa?(Sô?+¼º?0dî?4•–?77?7¦??7î=?89Ñ?5Å?-Ê_?"Ðä?Žâ?ù?]¿?õE?²Õ?V±?K-? 9e? ÿä?U1?y·?¿•?3?I"?ÎÛ?!Â;? ظ?w6?ß>þ•u?B? Œm?MÊ?êÍ?!þ?#k?'âÑ?25?;è??ùÒ?=éÇ?5Þ?&¶? -(?q¤?â? -Èk?•Š?,?£.?h?!ª?)_:?1³?4Æ?3A²?-Ø6?&d8?Šg?"ž?@û?\J?x?yu?‘!?»º?—Ï?0Ž?&R?.¤´?4h™?5½'?4Èô?4¯F?6€É?9>z?;«ä?<Í?¦õ?3R…?%,£?M?\?Jä?•?²>?+¸?”²?S*?!iÿ?%×3?.£t?:Ñ$?Cîñ?Fʯ?G&?Fþˆ?A -?2–•?Dd? Ìö>ýŒ–>ÿ/? ˜?’?/_!?8~M?6hÂ?.€#?,‹¬?1Ò ?4²?.R«?#ß«?s?Y>ëÿÞ>Þ­(>åï>øQj? -XÅ?‚#?+mÿ?7ö?<ð?8\H?.Šº?$äÉ?ðÌ?3w?…ð? ÔÝ>ýšŽ>â#>×S>ì)Þ? -ÙÈ?”?/m!?<ÌÔ?H Á?K†Ï?A.?+g?ñD?Ü?;Ï?&éW?,Ý?/Î?0ùÒ?3ˆ?5B'?0–;?';? Ž?ÑÍ?èo? ã?íŸ?®§?.=‚?6øm?: ˆ?;þµ?>´€?A:â?Cï}?IœG?Qß?V¢‚?W³?WÇ?[WÛ?\p‹?S¨?B-?7 O?3ù‹?1ÞÕ?.7U?-xh?/ãð?/c–?)@Ñ?!W£?[^?À? È>ÿÑE>öhÚ?Šs?¼•?'ä`?4¸?@)Ž?I†Ø?LÇÿ?Ia'?BO ?=ZA?@hk?J’5?U!)?Zw*?X -a?M<á?<Ú?-@0?#8?"æ?+Âw?8×?;ŽS?/?ì?³)?›´?)è›y>׺ê>Ñ\>Ó7¯>Üò>ä@¼>åðÅ>è>ó?Î ?#Y?#Î>?/œ?4U†?6ˆÌ?8IK?=Cå?D‰ý?FrE?@¾Ï?<è,?B?Iêä?K@Â?FWE??‚ˆ?9ïÏ?8_õ?7©o?/’{?"sÎ?éÜ?)Ü?<ñ?Mv?SÑ?QÇ9?N]?K‰&?JÃp?J4ù?G1?>‘p?1»?%ŸR?!#¥?(–÷?842?EŒQ?Hwã??ÎÆ?230?,†?3…ì?92|?3V?(«û?$ÒP?&ŠÐ?#4 ?Àk?2Æ?ãö>ý§>ýÚs? -ç°?6¢?)l“?/œM?1µó?3©?8µä?@¨'?EÊE?Eìû?EÒþ?IT.?MåÎ?L¹‹?EB6?=¨?7nI?3L„?7 ?BÆt?N ?S˜k?Uü“?Y¡s?]Z7?\Z|?WÌD?TÒª?S?P•œ?N`1?KkÖ?F 7?? Þ?9ør?:¬Û??¬s?C†É?@ßÙ?6ƒÐ?(2?Om?f+>Þ_y>¹w)>—l×>p"1>;Õ>æz>&ÒD>R•š>Šb³>°‹9>ÙÍI?8»?W!?hF?$7Ð?%-?%z?*h ?8W—?E¹?HÏb?F,?HUØ?P?Uò6?Ràp?MgÃ?OAx?Tµ§?RßÃ?Kû÷?Kâ?Q£¡?Vœ0?Oë¬?Üâ†>­²©>Ðá>J‹ >Bf”>m‘>\t>ÈÜë>ð—„? {û?ü1?)ÁŒ?7À?CX?P»Í?]Ñ}?fþ]?h~.?cü,?_ê—?_‘K?að2?d!Ì?e_8?i™S?p/ÿ?s¯?s”»?w)R?}?¸?€“}?×­?zkI?sz?lh×?i\Ž?p%Í?}£=?ƒ}ƒ?„–.?…)U?…:‘?€¦ð?o[o?d:G?j/„?y7å?‚1“?„/?„ÞA?…„k?…ÉÊ?…»š?…þÑ?†ôx?‡k?… ª?„›?ˆ#?‹·&?‹¬E?‰ºV?ˆa6?‡?…I ?…õ2?Š'÷?Žy`?PÍ?‹G¶?ƒw?uç?nx²?o ø?tO•?|ŒF?ƒgŸ?‰´‘?™å?’?üå?‹¶L?‰ií?ŠæÌ?‹ -?ƒ­ü?n]?a&Ù?mÒê?ƒ« ?‹§Ï?̽?×R?‹?†íŽ?‚hh?%?|\8?|:o?zË?w¬)?{¡×?ƒÜ[?ˆ¬¨?‡×?~CŒ?oÕt?p×O?{}g?€+?€yH?„¨ -?Š[í?Š5ð?ƒ¥{?~?ëÖ?†¸)?…îŠ?}»×?k)¤?`,é?dp¯?t1|?ƒ5?‰W˜?‰•\?…}?€B?~¯å?çe?†µT?‹Uï?zX?ŒŠp?‰´Ê?†n€?„ŠÎ?„Ÿþ?ƒV$?}9g?r°?kyt?dpí?XO`?CqP?*ï?îÇ?,— -?FY¬?^ì?nVº?w§‘?{÷Æ?}¡?|ê±?~ "? ?„o~?ˆG$?‹„"?î?p?õô?ˆèî?„Â3?…6F?‡7¾?‡+&?†™Þ?‡ê?‰Ó†?‰ta?†»S?ƒÞ?ƒ 3?„€A?…d=?‚ëÙ?}Ú)?{Ý?4Å?‡Œw?sA?+K?’Bj?•þ?–5^?“ýÑ?“–?…?X@?…¹?Œ%?qÄ? ‚?Ž Ž?‹óñ?‹x/?Œc?‹L¦?ˆTô?„Ãi?ƒ^Ð?ƒ±™?…C?@™2?Dl&?HuÌ?N“ø?Qßó?O†¬?Fûb?=7w?<ýq?Gñ?S¤…?^Š?g~¼?pTÈ?GÈ?ŠÁ?‘X?’ß(?‘0ð?Ž -*?Š•c?†®«?~0é?im$?Z¥÷?]ƒX?r|?„Æç?‰÷l?ˆ«C?†cè?†?‡^ë?†ó?„½˜?|Ï?cÈÉ?HnY?/Ó[?EÍ?!/Š?8Õi?Q,$?a¡"?pxM?}?Œ?‚°Ü?†5ä?ˆ˜B?…/û?wÃ?ldy?tØñ?‚!Þ?‡„?Š¤ƒ?Œ«ë?Š¿‹?‡Î\?‰zë?Ž¶?’ò?“(š?”ëŒ?–?“*‚?`?‰¯ê?‰e¯?ŠB?‹²s?ŒL©?ˆÑ=?‚Ne?H#?„nà?Œ&?äí?‘|¯?Hx?¥?‚æ¸?gíð?YŸ?fÑ÷?~4ð?…®ÿ?†»Ó?†€?…‹?†ô«?‰òá?ŠQ•?‡Gs?†©(?‹öÌ?‘q/?ܹ?Šð?…H ?† -?ŠŒ}?‰–~?„?…pÍ?Š.ÿ?Š™³?‰tq?Œ¬¥?’Yê?–ë×?˜¥?”¢?Œ?‡Aì?‰Ë?­U?“Ê_?™]Ý?™¡_?”˜î?Cë?—{?’±f?“ˆ2?”€?•hA?•5?’Š7?Ã?~‰?kÚ?‹0c?ˆ?‹ €?’ù?™çº?›ý]?˜ãò?’Ž?‹è8?‰ÿ?<¦?”á?˜‘”?—ÀÂ?—}^?—cÃ?•¿r?•P–?•:ë?¶o?ˆw?ƒ‘¦?„ï?‡“ ?ˆ­?‰g?‰Q?ˆ Â?‹²"?™×?’µÔ?“[?’ãî?‘:?Ý?aú?‘pZ?—ç?›€d?žBF?žU?¥á?žÜ?žtø?˜2?ù+?‡+Ò?‰õ?‘i=?™kF?¨s?žŽ–?›z¸?•à?9&?‘ à?–?™§K?˜Ž?•‘x?•\Û?˜?›”e?Ž1?œ™ª?šC?šŽ$?Ÿ}3?¤UÇ?¦²?¥h¢?£Î? ©‡? Å>?¢ò?¢ùl? ÏÃ?Ò'?›k ?š­É?› -Ÿ?š²}?› ˆ?œ÷ -?ž,ô?œÎ‹?™Çí?˜?–N?’“Å?Ž¥C?‹áF?Šë‡?Œ¤S?Ào?‘‡9?Ba?‹-?™ /?—¹?“P¹?/n?çz?‘H?“¨ü?–€?—?—-Ž?—"f?–ŒJ?•Œ!?”Vo?“{´?”EK?–(8?—ºÉ?˜n¸?—(š?“ˆ7?ø1?Ž´$?ÿÆ?‹§?‰¨$?‹›¡?tm?ò¿?% ?‹c‡?Iü?‘ªl?”ªs?”z?‘¤?‘¯¶?”ç]?—ƃ?˜÷K?™„Ž?™>>?˜’¸?™·?š«p?›)•?˜Èœ?“Ày?i–?ã?Žº?“ë?’ ¾?”!V?”ÇÞ?“?­?‘¸?“r$?•Âû?•Ö'?•¾?—#à?˜k¸?˜KÖ?˜ \?˜i -?˜rN?˜f/?˜Œç?—\?•* ?’¯ ?‘Ž?Šý?‘wA?” ý?‡¦?‡ÞV?ˆ„?†?„`ä?‡ -é?Žbw?”zž?—­?—1¹?–'Û?“åã?‘­#?‘Š³?‘u{?ìò?):?’ò=?”} -?’‘¡?îÚ?‰Í?ˆnj?ŒŸ½?‘A‹?”uÜ?•2d?‘?‰0J?‚5?€:·?ƒˆ ?‡mï?ˆ%±?‰”?ŽSë?’;A?“ôû?•‡?”à×?’œ9?óZ?‰õ4?ŠÒú?Œ[?‰Ñß?†S8?‡¿‚?Ž?ƒ~9?Š‡?>‰?‘\?$?Œà.?Œº™?8+?Žø?9£?‘?ŽN?Œ7¹?ˆÏë?‡0:?‡¾?ˆ‚?…â>?î?ƒ{¨?‰ä¦?ž¬?‹Ñ•?†²æ?ä;?€ƒw?‚‘Ñ?ƒÉÐ?*å?€3ê?„!?†ø\?†ý??‡‡?‰¸?‰tS?‡Ø?‡?‰¤ˆ?Œ9¹?¦M?ê°?‰Ú?ŒUk?‡ŒM?†ù…?…æP?";?w|:?x µ?… B?yH?‘œì?‘œÌ?Œó‰?‡¿z?†%G?†Z^?‡½z?‹Œ?3 ?¤Þ?Àï?‘€?‘Î?’}?“ ?‘¬æ?Œ°;?ˆü?ˆ[µ?‰é?Š€?Œm]?Œ¨L?‰ÂA?ˆ±°?‰ƒ•?ŠPÆ?‹sv?‰ –?ó?|˜-?»4?…¯å?‡§ô?ŠÝ1?v•?^•?¡?¤!?Ž,y?ƒ“?‘ ›?‘>4??‰}?‚•y?~eÚ?ƒ Ò?Šk?Ž-ç?Ò?Œ?²?Š”?‡!m?† ?†¿ƒ?ˆË8?ŒÔï?"?Ž™.?á}?(é?˜¡?n?¾‹?‹ ¤?ˆtæ?…¥?„ ?„Õc?…ÿÝ?…ýF?†6ø?‡RH?‡©1?‡Ã_?‰sí?Š‚R?‡Xû?ƒ}1?Ù??ƒ"u?ƒ‰Ó?‚ â?„´x?‡gì?†8¸?„ç‡?†HÊ?ˆ:Ä?‡}Ä?†O?…f?…G™?†õß?‰Ç›?‹ˆ¡?‹Æu?‹+Ž?ˆÐ˜?‡Ì?…ßÒ?€?kA§?[‚Ò?`O?oø=?n‘?_ •?f§?›£?Š?‰¶Í?ˆw»?†úó?„Ü°?ƒ¨Ÿ?ƒAÖ?„*?‡"Ñ?ˆ¨V?ˆ ¦?†h¿?„$h?‚xv?“¢?‚8ª?ƒ8?î¿?~Gü?€2Õ?‚T?‚øv?‚UŠ?zf^?rc?uOœ?}Ð?—?zßN?|TH?¸ž?‚O?€à?‚X?„ʈ?„žn?ƒ°?‚?ß…?WÁ?~ßO?ƒô7?† -•?ÙH?{é†?€Èo?‚“1?€E?}`?€t?„D?‡p9?ˆvw?ˆW-?‡ýÚ?†$s?nþ?yy´?{s?„ Š?‡îâ?ˆ‡?†Ûe?„÷?~J ?|í'?„,j?ˆ¸?‡Ïƒ?„{É?|?vé[?O¸?‚¾j?„M¤?…”ë?…vb?„ºŸ?ƒAÊ?Y ?|Õ1?sÈy?u7?~øÀ?€Â½?¸?x+?„aZ?…ê×?ƒéš? ?ŵ?ƒ”Ø?„ g?‚õr?‚Bk?‚ì?‚?y?¾â?ƒŽÛ?ƒ8?€h?©ø?ÿü?‚3J?×?Я?‚o1?Ä*?€bé?LS?mr?ƒ“f?„˜Y?…J!?…—^?…LÌ?„ô?„–×?ƒ/“?€Ê?xª"?u,Š?|(–?‚…(?ƒ44?ŸY?Â?€Þ?‚´/?ƒË>?„TG?„ê?‚ðf?€ðM?*Ê?â›?‚ï?„Œ?…#i?„¹?ƒZC?]ˆ?€øÂ?‚Eý?‚™?‚qx?‚6°?.?Z©?Tø?SMý?WÆA?\Àß?\o:?Wyb?UmI?Ww‹?Z-ô?X¢ ?SZ$?O‘Ü?QLx?W½Ê?Z°Ç?Vz ?PwÍ?OœF?Qœ?R¼Ì?T¸¬?Xba?Z¤)?ZûÜ?XnP?XEð?Z‹÷?Yx?WÏY?YD?Z°¶?Zî»?W»?N -.?F‹¾?H›®?Nû×?T %?W?X³ì?YE÷?Ww?RÝ_?RlZ?T ?Tƒj?RÈ?N¦©?L -½?IÀÞ?IÄM?OZ\?T§ÿ?UB?TÖö?TV?Rád?Së?Pœõ?KÝ€?K©d?JÙg?N\?R¦?RôL?UVÔ?WW=?W-H?V‚Ç?U…l?U ?Uù ?STò?M«l?Lï·?OZ€?R:¶?Sï‘?R Ä?P£(?Q'?Q³?T?W»?Wt5?Vi?U< ?Tù*?Ulú?TßH?U¼)?WÄš?Xaí?Wûß?U¥ ?Pš©?OøQ?T§??U×Ý?P¯?KÅN?QsÃ?V?VB?R e?M¥\?OD ?PG?O/°?PÙ?PI}?PNp?Q—?Nñ?Kü?O›…?Ty?U€U?UŸ~?Tü?QJ -?MÈ?Oyâ?R¯Œ?Sö(?Qt¦?KÊý?Mtg?S÷?T§Š?T˜?T ?QΪ?KíH?KI£?P(?Qá?KùD?H“‚?MüR?QÓ?M›?F€?J"?P‘m?Q[Ó?O˜?LßÇ?K–ä?M®Û?O?MèI?O'®?PÕ@?Oxì?LD$?L7R?N p?OVl?OÓP?Oæ?L"n?G.??0S?:;‚?=:+?D–ò?HÆJ?LGJ?Nº`?Oiº?O¤ -?OkÐ?Nß?O# ?O0é?MðZ?J¹?F€‰?E_Y?Gâ½?KÇì?M+©?M3ã?K¿`?IR?IÏn?Lá?LB?!"Ž?­ò>ÞK?é?#n¥?0‹ ?5Q?9½5?=µ?>üK??ïd?B¥>?EzŸ?FK`?F&–?Fm‡?F®§?EùÄ?ER?GI?GÆø?C~?? »?C#Ñ?G”?F¹!?H7g?JH£?J8Œ?HDØ?GG ?GŽ½?Fœ:?G/?I}?J ?JB ?JaT?J¹?Jâ?JY£?Jly?J ?IDK?Hâv?Hú?IRã?H z?CÒ¢?A„r?Eañ?HÈN?IÉ?H³Ü?Ggâ?D—À?FÅ?H¬=?IäM?J’ž?J67?I#¬?H¢?Hèn?IGä?I0 ?He½?E^?B˜ü?Dò³?F1?FFG?H -+?H§?HÅ“?I"?G”ô?B¸ ?AÂÝ?EÜ:?HD?HÄ¿?HÂk?HcÂ?Gî?GÔl?G Ø?G6C?FdÊ?D™„?Cüg?DÒŸ?EÃ#?E™5?CÐï?C?DoÄ?DàÆ?E\?E Í?Cû½?Bï¨?@ÜL?=þm??šV?AïÜ?B€H?DF{?D%?C2ª?D ?CŠ#?A!g?A_D?Bò±?CŽ`?Bܽ?BÌÊ?C=G?BYÓ?AëX?B[Z?A÷ ??·!?>Hþ?@-³?Azï?Bñ?AI†?AA•?B‡8?C8›?Cxî?C+Ý?BL‘?@ä??ƒt?A?@|ï?A)Ý?B‡)?Bà£?C÷?Có?B?@iO?>Ä?›ñ?@Í®?Aq?AhÈ?@¹?@d??èñ??¢?=ZH?>Ò8?@=Î??͆??æ??@4é??¼??x¯?@Š´?@RÙ?@º?A±ˆ?Aª??ZÒ??¾n?A l?Aë??º¤?<Þó?=«?@tÅ?@Ûn?@¿È?@ZÙ??†Ž?>e?;•-?97ú?:??>7??ã@??Þ&??·ö??-?=æb?9ð3?8=“?:-é?;e§?:îÞ?<–?>c©??4Ê??ƒ?>÷†?>¿C?>/#?>>†?><-?>Pñ?>² ?=­6?;5?:ä>?<`Õ?;ðó?<;b?>=?>Ñ}?>Ô;?>ši?>Q?>?=á/?> -|?>t?=¸ ?<~-?<&?=2÷?<ïþ?;hŒ?:¥?8r~?9 -›?:m¨?:ôã?:ÑÉ?; -„?9„?9þ?;çñ?<4°?;‚a?:f‰?:`6?;Íw?<)¼?—?7[Ö?5eI?5zY?7à¡?9l?7‡ ?6›n?6Iœ?2¬?2Fk?7–L?8ƒn?4¼ä?2àÁ?5ÇÉ?7á ?8ý?8¯?7ìý?6 ›?5¢?6aç?6?8f?9è?9+ú?8îm?9´ž?:.—?9ê©?8zz?7!?6–É?6ÜÂ?6Þï?5f!?5E1?6»?5ùl?45?3½?5gz?7OÝ?7Ý?7¥#?7ÒJ?7M©?6H7?6­d?5ÇÁ?3rã?4l?5ë?4×?3Œû?5FX?6"½?5·f?5Ë¿?6Ž–?6mç?6íZ?7£\?7/?5o?58”?4r|?2÷ ?3`"?4(?4…¿?4äh?4?-Å›?-¡Š?/Ü?.‘d?+Ô°?-–æ?/†Ê?/¡1?/ú?.Éå?*RT?*š‘?.µa?/~ø?/¢1?/¼¯?/Fª?.w[?-9ó?,{?-¤Õ?.&á?-í ?+ˆÚ?*S?+G#?(³Ç?"˳?$¹?&½‹?*dú?-Q ?,À¾?+Ý?+‡?,æ?-?6?+T3?(÷?(_;?(+?+˜?,Ø–?,—ø?,Š?*¯~?)ÿ?+¾°?)Ï?%¿å?(Ô}?*Ï?)¹#?*W©?+-n?,3Ï?+Ü?+-J?+Éá?+‹j?*àó?+ZÔ?+s?*¦´?)”?(Åù?'!j?'5,?)Ò÷?)èW?'€Ð?&ýX?(ÿ°?*kk?*oŽ?*5±?)åò?)2e?)!?*%¯?+ ¥?*GP?(‘?'3š?#ˆ$?!àD?"›R?%ñ'?'0$?&"÷?'¸ú?(dÿ?&™ë?%[?'s¹?'6[?$ùR?#Ü?ôu? á‰?$~?!– ? ¦?$Ìc?&`b?"ò®?p?"ØÙ?'?(ü÷?(V¦?'9{?(2»?(l?'œÊ?'/‚?%CX?$1´?$+,?"ö?"œò?$[0?%‰¢?&få?&®B?'Uu?'l¬?&“w?#µÚ?!_r?%£?''Ð?&ò½?&°1?&VÑ?%×&?%˜A?$¦X?$æM?%)ó?$8Ç?$?% à?%³g?%·X?$Mµ?"™ -?!0V?-"?#WT?%FV?%tý?%’C?$Ä’?#:Ð?#é?"à?A1? oC?#¯?#qœ?$µÿ?$õ“?#W?§ ?p7?!í§?#×d?"–˜? Ðs?!¸?#"^?#Ü4?#ð¦?#„N?#‹?#D?#Ì?"?"«i?"í?"FM? ‰Q?Þ;? ·?¤?#†?!)?!¨'?"I? <­? ,k?!ø1? dÜ? É?!ïæ?"3±?!å¢? jg?®*?Sµ?v ?!Š?!Ħ?!? Òò? ´?!# ? âš?H ?öä?´a?û? |Z?•Û? 6×? Ž‡?¶?­? ?bq?ü? NZ? vþ? †¢? l²? e²? ;ñ? ê? z?à¶?'ì?o£?êW?×M?Ë`?Äõ?ŸÄ?`³?IZ?•H?Ý?K?[?ÆŸ?b³?Ër?ÿ)?Š?Ç—?wØ?¸(?~?ç^?'h?'&? e?«Ç??µ?OÆ?µ™?žw?|"?oG?¾?ã‹?­+?¬R?s­?qM?¥{?¾£?ÿ ?,A?sÜ?Èp?o3?u?Ze?#?ÂÍ?™Ç?l?±?ä×?C#?/¦?÷/?N'?k¢?·Ý?¢&?{·?˜l?Q¿?u³?•p?àÆ?jÇ?A?1?ŠN?›¬?é5?ϸ?Î?‰;?­,??üÇ?J)?ZD?é?2"?éÕ?÷Ó?N1?E,?]?g?¬?ÏV?µæ?Œ/?†¹?`?w+?p§?ä„?ù¾?’?âV?º$?B?Y÷?û?îÈ?ó¾?¹ˆ?Êx? ˜?V^?Þk?… ?#{?L?G³?þ? -D?§s?ÛÕ?Pƒ?ŒÞ?Š[?Ù?Á.?ýX?»P?ù?e?¿?^±?Ù?C¥?ÁÅ?Âè?èÑ?Ÿú?O®?ò?Ä'?n§?L?yë?¼-?·¤?˜Ô?T.?j?ûù?£Ó?õð?ñ?oú?ë¤?>Ý?dv?/0?7p?\è?™Ù?eò? ×þ? ŽÑ?ÂK?®Œ?ç·?±d?VÊ?BT? ‚t?Át?Ë?¶'?öì? ÷?.I?†·?wé?x…? æ?r!?ãl?^¥?Å®?Î?ä¨?8Ý?Ôq?± ?†>?UA?æ}?ÿ?{?Ï ?…?Œl?ÿd?(Ã? Tâ?Û8?¤¹?”Ï?Ü}?k¸?L¾?†R?Ý«?ª™?Ç?áp?Õ…?Ìc?´? “j?^?_Ä?„²?¾?Ç?¨«?áÅ?R? B? -¨¤? GD?Ön?{ÿ??ãé?é?%`?mh?˜†?¦œ?ë?“`?•?B ?O,?e±?Ø?? ¯?Ý*?ñö? ô÷?6y?‰a?ƒ’? Ž ? í°? ®±? 0? *(?D!?b#?>”??Ôz?µ‚?¡ý?dp?,i?ˆà?žª?¨?ˆ?+I?5¿???;]?Rê?=4? øm? „2? `H? ŠŠ? ºµ? ¬Á? ×ì? ¿? ß…? >C? _í? Rz? š¤? <:? &? ‹? e? èO? ÏX? ©f? Áï? ‘Ú? – ? -ã=?‚Í?‡1? ÏN? -ñæ? !? ]+?pò?¡4?=?Y?í? º? ûÕ? 8? G? Éb? }? ©@? -j? '®?äå?aÜ? -¯Æ? 9‡? -”+?V"?å -?²{? µ«? ©d?ÌÁ? §g? -? -²?ÈJ?íž?êW? >?‰1?’c?æ®? *`? æ?H?¡?¤Ñ?x'?õ*?†{?“Ä?ç‡?¸è? ™?²ø?<ç??t?ü.?þÑ?õ(?©Ž?á‰?ß?¡²?›Û?$;?PÇ?§+?nÿ??~?,+?ÐI?X#?˜¨?Éõ?¡H?eÁ?;z?À¬?–,?PA?5ø?¨??°q?¹÷?ìÓ?]ô?E¾?f?²+?M?¾O?ë?ÓÉ?Šš?Ô?lÞ?P#?k›?(M?¹5?ù? ¶?îR?V?çK?ˆ¥?!¾?™Æ?©)?Ÿ—?Ù6?rp?ŸÛ?q5?s¾?&Ô?>ª?b?ô;?U¾?I%??(?Þƒ?Î?Ð¥?f?IÏ?:?þÿ?#\?=?<„?:ª?Ë{>ý´_>ù€?T:?ž¹?Òp?«ó?Ûœ?À˜?n>?ß?™h?«n>û[J>ÿÊÇ?9=?К?ýa?\?á‘?1Ï?m?è?³K?o—?Âu>þz›>ìÙa>Ä¿->Ñÿ­>îsˆ>÷Ãê>þ”x?O?™>þ™r>÷¬£>ô×¹>üé>ÿƒ? È>ÿÆ>üµÓ>ùÇ >ü|>ü˜6>úÝ>ô®„>èoe>Õó>¨­Q>‘™>¾x>â ->ðúÍ>÷Oà>ùâf>ù¤ >óÈ>ø]Â>ü¶¿>ü/è>ýtc>ýzº>üáì>üÿ>ùÄ>úãÆ>ü…¿>ý‰;>üg|>ø!>øº>øùm>üVM>üŠª>ùFH>÷ Ž>òÅÀ>ð½=>óÀî>÷‡ >ø=å>÷´Q>÷ì>ö„Ç>òmb>ö"œ>÷Î>ød >ùmÆ>÷a>ù£ô>üPå>ýÅ>ü;+>úlO>ù}>ûN¤>ûüŒ>ûx>úf>ùòÌ>øF‹>ðÏU>ï÷*>ö(>ó³.>îôh>çáq>Ð -v>ŸPÖ>¤û'>Òó`>çô>ìðm>ïßÞ>ð¹ê>ïOŸ>óà@>ï•p>ðŠ>õê>ô-ê>ìÈ>íCè>ø`d>÷…Z>÷è>ù6>õ÷>øÄÖ>ú->ù¢f>ù0è>ôë>ðo>ñ«C>õ›>ðø©>òŒ~>÷½>÷îû>ö4ì>ï8->ð“»>öoä>õç½>íÎ>ð+=>ör>ñó®>ñ'Ò>ôdË>ðR>êE>ãô1>ìÝ>ð@F>ï Œ>óÿô>óž]>ïÎì>óÃ@>÷’<>÷_>ñÖA>í?q>óµª>÷)Ô>ô´>ô’Ô>õfÑ>õóç>õH¢>ïk“>íZ>í=ƒ>ñY…>órÞ>ôëÐ>õº>íL«>Ü >á«›>ðÕ­>õs>õ±U>ôÎ:>ó=>òzœ>ïø>è]m>ïoI>ò_x>òä2>òà§>òÚ|>ðPÿ>ë£p>ïX®>ñÈ>ðV˜>í;>ír*>í­¨>ìËý>ë¬Q>é°>äÌ“>Ü–³>ו>Û·á>Ý œ>åŸ >ë>꜃>éW¤>êJ†>ëz>ëe[>ê»·>ìY;>í…š>í>éÍu>éÀ¾>ìŒÏ>ë·—>ëù>ìf>ì„Æ>ì>ë™â>èñÚ>å>é±k>ë½/>醤>ç0x>çU†>åœý>áã‘>àÐi>çKÝ>êá>ê¨Þ>ë¶>êùŒ>ê@>æ˜X>âÕ×>ã³®>ås`>è^¿>ê ®>ê->ê5>éÝà>é“Ð>èð÷>åÍW>ãÍ'>ç>èžö>æL{>ã5—>å >æº>çÜœ>æ/û>æMr>æøC>æˆV>æA >å‰c>ã¹>ÞV>߇w>äŽ>âÇ>Ýyµ>ÕÀÇ>Ñ•©>Ë”>È.>Ñ¢I>Ù,ƒ>Úk>Ý|œ>àëe>âºÿ>â·>ãW>>ãÔû>âcÿ>ã…Ó>ä©Ò>äÑy>ä™J>ä·§>ä2“>âšž>ãè>ä†Ñ>ãò ->à³H>Ôk`>ÖÈÆ>⪗>äþ>ã(s>ã'2>ãs÷>á`5>Ùiu>Ù‹L>áAÕ>â¯D>Þ`A>ÑBÍ>×üd>ÞH¬>Õäj>Ûœt>ÝÁÅ>Þ×ã>ß•y>Þ£>ßS†>ÞЄ>Ö°¡>ÚÂ[>ߤË>ÛÕy>Ü‚¼>àzF>àÙ´>à”¬>àoó>ßá¤>àYû>àhE>߉°>ß«£>ßC¾>ßk¥>Ü\b>Ø=>ܨ>ßc.>Þܦ>ÞuÌ>ÞÖv>ß>Þ0`>ÛÜS>ݦ>ÝÖc>Ý—>Úª™>Ú•è>ÜŸp>Ü?">ÜMD>Ü^W>ÝÙ>Ý„>Üá×>ÜØ/>Üž…>Ü”«>ÛF>Ù·U>Ú®Ô>ÚX>Ú)>ÕþŸ>Ñ™«>ÍÀc>ÓC›>ÓX€>Ò -º>ÕbÞ>Ò‡ >ËÚz>¼ƒU>¸/»>Çj¢>Ïâ>Ïb>Í–2>ÔüB>Õ±>Óà>Ó -Ý>×Ú>×– >Òþ >ÌŸ>ÍPR>Ñ|ª>ÔëØ>Ô`L>Õvý>Ø:Ë>Øê>ؼÓ>Ù+>Øó>ØX}>Øb ->ØgÖ>Ø8>×Kì>Ôfë>ÔØý>Õè>Õœ­>Öà„>×—‰>ל±>×5U>Ö>Ö-é>Õ¹˜>Ö}ý>ÖÌK>Ó—c>Ó.½>Ö G>Õž5>Õä¹>Ö2D>Ö‘µ>Öà>Ôàü>Õý=>Ö$ˆ>ÕêÁ>ÔlW>Ô–>Õ6>ÑÞn>Ñýª>Óþ†>Ó‹t>ÒI[>Ðê@>Ñ->Óá…>ÔÂK>ÔEA>Òç >Ð#,>Òò>Ô?>Ó?Y>Óx>Ó e>ÒS!>Ñ"K>Ò>Ðñ>Ñk>Ò¾ù>Ѫ@>Îï>Î>Ũ¤>Ëdq>ή >Ç>ºs>Çç†>Ћ$>Î|&>ÎXÜ>ÑAá>ÑF[>Ρ_>ÌI›>ÌÞŠ>ÌÀÉ>Æ:P>˾å>;1>Ë))>Ëeé>Έí>ÎÖ >Ëï>Ì¢>ηþ>φn>Í S>Ëã5>ÍÕN>Îù³>ι6>Î2Z>Íú|>Î÷K>ÎÚˆ>Î’>ÎN`>ÍKR>ÎP>Î…H>΋>Í v>ÍWÔ>Íùá>ÍVˆ>Ë°¥>ÉÚ@>Ëþ~>ÌŒÄ>Ì2>ÌBµ>Ì|Ö>˱>Êá–>Ì}>Ê÷>ɸT>ÈAÉ>Èë¹>ÇVÓ>ÆTj>ÅžX>¤ï>º’>«n>­ú >»^>Áœš>ÄÛ>ÅòG>Ç~O>ÇýÐ>ÇùŸ>È×2>ÈèÈ>Å<Å>ÅÛõ>Æw>Çòb>ÉË(>Éá²>Éв>É=>Èíø>É«^>ÉSõ>È"Ú>Ⱦ >È:>Æúx>Ã&ž>ò³>Å*>ÇÄü>Ég>É‘>ÈÊb>Ç—v>Á«ˆ>ü‹>Å ->ÂkÓ>Ç T>Ç%¹>Ä/>Äã >ÃÖ}>Å“6>Çj·>ÆåJ>ÅÃ>êÍ>Ä&s>Ã}¾>æý>¼<·>ÁC”>Åü‡>ÅÞW>ÆO>ÅNþ>Ã^O>Ã@Í>Á~ã>óç>Ã_@>Ä= ->ÅŽ>Ãöé>Á,ì>ÂŽ>Ãu >Älu>Ä«>ÄLÙ>ÃB2>Â]1>ÂØ>Ä‚,>ÄU?>Äyl>Ä7™>Ãé>Ãé®>öÃ>ÃÑŒ>ÂS>Ái‰>ÂõÚ>Áã5>Àp>»e­>¾ã§>ÀÖ_>À“Ñ>¿U„>ÁM>ž,>ÂÌÂ>Â\z>ÁÅJ>Ápò>½j–>¿Å>ÀRÊ>¿ÎÎ>Á/J>Áÿ> A>Á²ì>ÀÍ°>¾4>½“m>¼`Â>¿$>ÀŽ|>Àˆ>¿/Ÿ>½Ëï>½°>À[=>Àˆ€>ÀKœ>¿Â2>¿Ä€>À4Û>ÀÞ>¿†8>½Üû>¾û”>¾¥ø>¾2d>¾{ÿ>½8Ž>¼¬r>¾vö>¾3(>¾ª}>¾Ð«>¾¨5>¾QÚ>½ÿ>½j>¼¦5>½Gà>ºøH>¹¿X>½VE>½p>½85>¼ëD>½‘>½«s>½”>¼{G>¼å>¼Èû>¹ôì>µë;>¸[|>¼8>»Ø;>·Q >¹hk>»ƒ>ºÏ6>»€R>ºìŽ>·ú >¸Ðã>»0ó>»Ú/>»qQ>ºÏt>» ‡>ºyB>¶ÊB>¸ò¿>ºú£>ºÕ>ºU¦>¹ª&>¹õQ>º<š>¹9›>¸|¶>¹…ù>¹žF>¹[k>¸Â1>¸þi>¹™^>¹6…>¸ÇF>¹CÛ>¹1ç>¸ Ë>¸¡J>¸~²>¸UÝ>· x>·ò>¸LE>¶¬ª>¶û;>¶Pò>¶ýÁ>·3„>·¯k>·ÇÝ>·ƒ†>·\;>·X>·:k>¶ÂÑ>¶`‹>¶I+>´eL>´„ö>´Ä£>³yE>³)”>° M>±Nõ>°§½>®'->¨G1>™ïT>—¬ò>¦vf>¬É©>®Uï>°±Œ>²ç>²¨¿>²zj>² ‚>³Ç½>´MÚ>´@>´ [>³È<>³`R>²û>³÷>´ ø>´Eõ>´a>´ZR>´Rf>´>²kë>±€¶>³v`>³€â>²­f>²üâ>³‰ý>³1$>°eP>®ËÓ>²—Ñ>³˜>³ -½>²ì´>²rW>²™s>²V\>°"¿>­@Ä>±¡>²Æ>±q\>°S‹>°Ä>±ß'>¯\–>¬Iù>¯ôË>± W>±N•>°÷!>±M[>±'É>°'>ª -L>ªñf>¯=Î>°qÛ>®§>®·ò>¯ï>¯«i>¯C¸>¯9€>¯y¤>®|i>¯ºÏ>®÷²>ª!’>«op>®áÖ>¯ˆc>¯*·>¯ -»>¯¯>¯(>®ðÙ>­Òp>­¨ò>®Ÿc>­">­fn>®ˆ6>®„W>®YŠ>®Eå>®)í>­ü¨>­ ×>­¹>­Í=>­ÄÔ>­d >­G>­ˆñ>­{|>­O>­£>«Û>§6‘>«àD>¬õ×>¬ÃÉ>¬# >« ñ>«Fu>¬Ö>«âþ>«{>©ßT>«‡>«ö>«´²>« >ª7ˆ>¤—È>¥Çj>©ô>ªå÷>«A>ª"å>§›t>¥;>¨Î>©V>ª]>©œt>ªÿ>ª\j>ª5 >©¼>©o7>©û>¤>(>£þ3>©`:>¨²>§wQ>©iã>©y²>© ˆ>¨­¡>¨Øx>§·Õ>¥ZÛ>¨ -µ>¨²®>¨>¦ê½>§lç>¨zØ>¨pû>¨ ->¨%>§ù>¥þˆ>¤+†>¥@½>§°Ã>§šE>¦úq>§8u>§*Ê>§ X>§4s>¥×Ë>¤ÎW>¦-r>¡{…>œó>žž>¡í…>¦,e>¦a‡>£—À>¢× >¥Ù >¦'Ñ>¦>¥óˆ>¥¼Ï>¤¥>¤Üô>¥o„>¥oú>¤Ëh>¤¾8>¤¤>£ïM>¤áï>¤Í¼>¤ ->£ç>¤3È>¢7>¢‘>£™î>¤ Ú>¤>¢xI> 49>¡Ìþ>£54>£žý>¢Ø)>£nH>£²º>£‹}>£[>£cì>£ ->¢§2>£>£>¢Ýý>¢Öc>¢¯ì>¢+‰>¢$s>¡êT> è>œµ¯>•>“>¡êô>¢ -‡>¡ÝF>¡j¡>¡km>›å¼>—Î>žâü> öy>Ÿö > Æs> ”þ> ê>¡¤> ·Þ>œc>› ->ŸXé>žŸ/> PL> Ý> p´> RB> t>Ÿ½f>Ÿßl>Ÿä¹>Ÿ·G>ž‹>•ô!>›|ç>Ÿ&q>žÝg>Ÿ—>ž·z>žïj>žÖÍ>œêç>“>“m>˜ôÙ>ã>’¹>—òÍ>­÷>÷l>»²>œ%F>—ó>œ+Ù>Í)>lç>›•>œ³>^Œ>›Iz>“­>“–D>šÏX>œÝ]>‡>œ½–>›{w>™ïf>˜“@>’¡>—­ö>˜®¥>›äð>œK#>œ -'>›™Q>™d,>š€>›¢õ>›µ">›°>›Gz>˜Ç„>• ¯>‘$w>˜[>›Ž>ššo>™eP>™Ëö>™¯>™ê>š!S>” §>Œ$þ>—Î>™F’>–ª­>“>–ç‚>Œ3c>œ>˜ d>—¤¶>˜-X>˜¨>˜f>“÷(>—Ì“>™×>™-î>™+Ø>™´>˜Ü_>–í>”°>•è>†Úƒ>Žä7>—!Ž>˜»>—°ù>•%ð>C>’Sž>–Î.>•¹•>•K$>”õ>–º>—¡>–_Ä>•‡¬>•ýa>•>B> ">‘EŽ>”/E>” ¹>“hA>‘ü >³t>Žl#>‰Ÿò>yÐò>s¼¬>‡—‚>wÔ>ò>øg>Ž§S>Žšˆ>Žœ>‘§>“<á>Ž !>ŽÃ¹>“¾X>”!>“øî>‘·Æ>ŠBÆ>Œ„¸>‚>’ÓH>“úÏ>” ,>“èM>“´Ó>“âi>“‡>“W€>“›|>“‹!>‘e>CŠ>ŠÎ>,¥>’˜¿>“D>’àt>’:>’ˆÖ>’Á >’˜>‘ÌÔ>’oÐ>‘Ø>‘Ë®>’¤¸>’h>‘d>‘a†>’FÎ>’Q>’n>‘Óg>‘¸‰>‘Øn>’ ©>‘›Ñ>‘Ø>û¸>‘s¨>‘´>à >‘_Ò>ã¶>‘{>á¼>‘¾>‘ P>àî>³‡>m>8Ò>>y>ôo>X>Œg>#J>ŽwÃ>Ò;>þó>Å`>Ž.š>Ž¯>.>™>Žõ=>Ç >Ž·B>¼>w‰>:ú>ŽþÔ>ŽÒÄ>Ž²Ã>Žª>ŽN¡>å>ˆj°>ˆ¦Õ>ýÆ>Ž<ˆ>‹ƒ>Œ^ä>Šó¥>Ž0>Ž%Z>~e>Œîp>Á>¯Š>Ç>t>0>,>“¼>a)>MÞ>.m>Œ\>‹Ñn>Œƒç>‡ãy>‚>†VŸ>‹ûè>‹Û„>Œ„J>Œ¡ž>Œxf>Œrx>Œ.^>‹‹>‹˜™>Œc>‹2Œ>ˆ$Z>…TJ>‰©Æ>Š|•>ˆÊ…>‰Iþ>Š–T>ŠŠÙ>ˆi>‰I;>Š{¦>Šm>Š—å>ŠR|>Š…)>Š·Þ>‡;¥>…xh>‰>‰8E>ˆÓ'>Šä>‰Ùä>‰Ö=>‰×€>‰¥Î>ˆkÉ>ˆ?>‰[w>‰Ä[>‰·F>‰b:>‰ Ý>…p >‡{>‡Ð»>ƒ.¼>…ÁÁ>‡pŽ>…0>….>ˆ>ý>‡f™>…VQ>‚ÚÊ>€ R>…Ш>‡ u>‡]Ä>†Á‹>‡ðÇ>†¡d>„Ç?>‡"¯>‡m>‡Å>‡¡ú>†¿P>ƒ*>†á>…ûç>„p->…•1>†å>‡B¼>†æŽ>†õ¿>‡ð>†ér>†óö>†T>…Jª>†…I>†;2>…Úd>„>…º>†D^>†<Á>…È>…Õ>…ä>„x†>…g>…Ï©>…°ñ>…¹l>…\R>ƒ8>ƒ³l>ƒ°¡>„ð7>„¢¤>… -˜>…P>„Û>„&8>„2ä>„çE>„Ýo>„¡i>ƒô>>‚š7>„è>„]Ö>„Vp>„#>„0Ë>„ ->ƒù’>ƒÔ¡>ƒÎ>ƒ»å>ƒ+œ>ƒó>&>xšø>€Ok>ƒO>‚EÐ>‚Lñ>ï>wÌØ>w©>»~>‚<‘>€hâ>‚.>‚¥ó>€… >€g>‚Ub>¶ >zWé>}¯>—>–*>€Á*>€Í ->€ƒ>~Â>vÓ×>€Š8>›Ÿ>dž>{Nƒ>¨^>€f>L¦>€Øg>€ãA>€Äw>vIž>zaq>€aÓ>€{°>}ýJ>€±>€©p>€‚é>€L†>€$>€»>€³>€ù> >ãV>ún>ø.>ZÃ>&;>%Ý>I>|A’>tL>vÉŒ>gÎ>v€Œ>~,_>~zÉ>~-ý>}?þ>z‰h>wC—>z‚6>yLÙ>xö>>r`9>{ë3>} Ò>|äY>|—S>|(°>y{ >zUï>|6>{<ƒ>u i>xÕM>{_•>xú*>x0È>wšÌ>_dï>gì?>yDï>yÄS>qP>tSÒ>yæ>y)Û>v<->yT„>y—É>y=>vèí>tlÍ>w—à>y>¾>xêÆ>x8ù>wñ>sÑ>i‹>eyò>uƒ>r Ê>nh>mÃU>u-4>wU2>w1Ê>w>výÆ>wÀ>vÚ(>vܽ>v•>vp>vŸ>vû>v.Ô>uði>uŠs>u“—>uež>us >qÜ~>X‰>%>36B>?ý >KJù>Q ‰>LO‘>?AÂ>2€¦>+Y>&D>ˆý> :^=ø5w=ë£=ô`¶>‡Œ>>>*@¢>/d¥>*&f>™->½Ò>8ÿ=øq=êÁ=ê»=þõ)>“‰>"Î×>*SÌ>$ªí>q>¿x=õ$u=òÓŽ=øÜx=ûü&=ý¿ž>s&>š>¶í>¼ƒ>(À>J> |—>'cQ>'¡¼>&ª©>)û0>2Ôå><áœ>?Ó©>5 4>+ß>¯==íÄÄ=ÿdX> -Q>?p>£ž> “½>ê>> £ó>C»>oy>•…>-Þ>2#>ÿ>ب=ó`—=ÙÍõ=Ó’T=äøX>€>Y> oÕ>"Ð×>!ÿ°>%gm>/5Ÿ>:Å®>Aä>>á&>7Y§>1Þú>4Î>=O>>G>KÌ>H‡Ü>Cyî>>¥>7Ów>+—;>]¼>’Ñ=öËö=ì;6=ñl>0}> rg>ƒÀ>a>",Þ> jÚ>²•>z>%Ë>+?@>)¥ >"uè>ë>õ> èp> dy> c>ìè>õ.> " >'Äæ>.ƒÒ>5+ý><·]>Cù>E¥t>Eöt>Fh’>E¯S>@I>5Æ >)‰{>*Ñ>…Å>g >ëŽ> 9q>,Þ><ô¬>Jñˆ>R²>T‹>QJE>L%i>FL°>@ Á>8Šu>0sÄ>)€>#»>¯ü> -ï=ûÐ=è¬=ÞCø=ÕØ=нã=Û^h=ù"H>â*>÷>$£Ý>'Š7>%‘>^>>9¼>_á>6cÎ>N6€>]Æ>a(!>[çØ>TÝ2>R9´>Tœ>U{þ>L7>6 -‡>²N>Ät=âÞ.=ק~=ÙQì=ãGC=õ»> ó>ÈI>¸q>$§k>$³Â>%õL>-Ý>:©>@Àâ>:%Ò>' ¨>·+>zU=ðMë=ò²ù>åÃ> -T>/¦>%V>;àT>Q¡Ú>\ >WÐS>LE>B6>=D>>»â>H@>VÊœ>c·'>i_>gÆÃ>`Þ”>U$_>EC>4 >%£^>?ã>àD>Ò> ¦¶> "K>õ>'2Ë>2Ä>1×C>/Ó">6uæ>DC>P¹>RÉ£>KÞ><îƒ>0P>+–¤>,áq>,FŠ>$T2>>Z>]ü=âŽ=Òe‰=Ý¢ =þò>û>3]>Ð> }=êŠð=ÆBú=²w=°é=½'ë=ÏY4=Ýzñ=åž²=ðmÃ>¼v> š>‘f>$•><ü±>X¿v>nß‘>wüµ>qN®>^äÈ>Iö»>;™ñ>7+1>7Ên>4¬Ÿ>*?“>¥w>ù>È»>+š”>BÙ>XËV>kRú>w«„>~«9>µ>$Ÿ>˜ö>}Úc>€7´>ÿ¼>&g>{Eã>t¥]>r‘\>tÆÚ>y$ì>}SS>~v}>z6+>q}>gÍX>e -a>j_D>ql>s.>>l$ú>\Ét>Ik§>:*S>4TJ>6>:ÁK>@>Dò×>J!>RŸp>_¥ˆ>jÚ>k¨«>a¦ô>TSó>K$Å>KK>Vð,>kÍã>€p>‡Æ>Œ)û>8L>‘‰è>’½>?˜>Ši>‡'¨>‰lF>Ž°ÿ>“ª>—né>™$»>– ¦>Œ½ÿ>!>sÇ¥>r¢š>t¿–>o >di¿>`@b>g?§>s¡â>³>„|>†a>…Æê>€Êî>sPj>g}>`ü>c½>m„„>xAÎ>}*6>|‡º>zÙ¦>x­ô>pß >_ ‡>G‰9>7m@>;Wa>Qöñ>l0ç>{>zê>on">_¾˜>SD>S|>`P>pÓJ>|M»>€ì >~”Œ>mõÄ>V}>F¡_>H¬>VéÆ>dOh>f|u>\ö>LK5>@iè>>kŸ>Gò>Y‰w>lKÒ>xÊY>x—ý>i –>Léæ>*C†> 2b>Å©>d>>>w>]Ò >nÆ>v<Ê>}΃>„KM>‰ -'>Šd²>†ŸÝ>yçã>\¥?>:è¼>õ0>1>#i|>G -‚>kí>+M>…eÝ>ƒhÔ>yH>en¹>S®>IPH>I.ì>I(Ï>=ñ>*”>^ø>,_q>Mój>t3„>ˆš>àv>‹˜_>Àæ>e4è>J+I>A¡_>I¡G>OT>I%D>DHü>PyX>ixF>{×ý>{0b>päý>r.K>‚¡U>Œ³E>Žpk>‡f™>xÉ`>czÓ>V×>W­d>j%È>‚–~>Ž}:>•^°>—ª+>˜W!>˜°w>–-ë>\g>‡Ø>ƒï@>ƒ¨v>„Av>ƒƒH>€òs>{ÿœ>xÿ`>z ®>æÚ>…M>Š·ñ>Œµ/>ŠY>„˜í>Êÿ>}2>+ô>†ŽÝ>Oý>”t>šƒŸ>œ>œõ>™zÿ>”§á>õÚ>Œùî>Œ7>Œ~o>>‹5>•bÑ>`ü>¤­\>¨UÆ>¦¾>ª9>’@’>Š/>Šè">’í‡>šóC>ãg>œ{˜>™ä(>–ÀÑ>½‡>‚¯®>gáK>Tó2>Qn>Xg¾>gý6>}A#>‰Ž­>“—˜>œíÌ>£öG>¦þH>¦à>£ãâ>œ…i>’£>>´D>šñè>£Ô>¥”r> r>˜XŸ>a>‰T>‚.Ö>|Žñ>€>†}m>ó>«&>‘LB>æ_>‘š>“µÒ>–Cª>˜ÂY>›qÞ>qY>F¹>š{‰>”ÑD>Œh,>ƒ>vôÓ>nÅ)>pŸ½>{Þ>…&>‹ba>×Ø>•.œ>•‡ÿ>ÚÄ>‹ÌG>Œ=Ç>“*O> >§ªJ>«a>¦H9>›®Ú>‘ Ì>Œ¶»>>B>k¾>Ž 9>ˆª­>€}œ>tñn>y´Ð>ˆPÛ>–Ú ->¡+>¥‰Ï>§—)>ª6>¬Ð¹>¬2>¦¿½>œë>–î`>–%Í>™¬Ë>U¾>‡ >š+s>–ªÍ>”Ì>’}<>Ž½ó>ŒŒ;>T<>–Ýf>Ÿ‹>¥šË>§I÷>¤•›>ž­•>˜º>“5E>4Œ>‹ç»>„ó >} ¾>woy>z>‰>ƒ¨R>Ž‡)>˜ÛR>žŽm>  ÷>Ÿªy>žÛi>ž÷]>¡.Q>¤uö>¦mî>¦ÔÔ>§7v>¨¾>¬&Á>°fõ>²&}>°?c>­Ôþ>­è”>°Û>±Ï@>± é>°}ü>¯±º>®Àê>­¥?>­¨þ>®yÐ>®Î>«”`>§Ð§>¤¢õ>£Þû>¦hª>ªÏU>­þ¸>®|r>­->«´w>«'4>«;o>¬M0>¯úŸ>³ÿ¼>±)W>£ó>“As>Š~:>.{>“}…>”,>Žˆú>ŠÕ+>W>’œá>–·ú>™g‰>›>œÞ>µÝ> Ûó>¤¢>¥+E>¢Î>˜Žþ>‹Îˆ>†c|>Œ§^>”X’>‘¡,>† ¸>xÆ>uˆ>|»¼>„>Œb@>–ú4>£Rí>¬i>®öq>®¡>®<×>°yR>³Á>·ß>¼C\>À *>Ã9>Ä?3>Àúœ>·ìr>­W5>§=µ>¦W2>§¦>ª?È>­­+>­¶º>¦õ%>ÉP>šB>ž]Ó>¤Zò>¥Ü×>£ÿ<>¥¾È>­q”>µ1L>µŽ>«‹è>›Ãô>‘à*>–º>¤P>² !>º36>ºüq>¸G>¹®^>Âk>ËiË>Î >Ë;Á>Ä.u>¶U±>£Ø£>—òy>™‹\>¡«7>¦ƒ>§r>©GÜ>®•>µEÖ>½Ý[>Æ7k>Ë2>ÊD{>øo>ºm>±“ù>ªö>§ä>© ]>«WÃ>«u)>«~˜>®Nš>²·>·ÿ>»ùr>Áá”>Ç ¿>Êä>ËâÍ>Î9²>Ñp>Ó+>Ôk§>Ô¿w>Ô*>ÒÑ(>Ñ„>Îwê>˽³>ÊÍÜ>ÍÃ>Ðfh>Ñ+á>Î…>Ç\Ì>Á >Á$¥>ÈÓ>Ò8t>ÖÄú>ÖKÔ>Õä%>ÖâÕ>ÔÒ¡>Î-C>Ç“>ƒÞ>Àðn>Ä‚>Èàœ>Ì“Æ>Îvw>К²>ÏöX>ÉXÈ>¿À>¹áa>½„ƒ>ÉåÔ>×Y>>ß•>âg->á¹È>ßBÁ>Þ0£>áÇ>ä >âB³>ß~§>ä_>ò2ó>þÑ2?2>ûZ[>ìZ¦>Ø€>ƪ{>½B>½t3>Ä8·>Ë›>϶>Ð#“>Ò˺>×Áª>ß7‹>ë÷÷>üò?u¿?D5?Gw?e>ýT->é7¿>ÌMc>³Cö>§z˜>«Û>¾áI>Ø>í‹¥>ùPÖ>÷M9>ìÕj>èðÛ>îØ_>ò}É>î>0>å‰d>×^@>ÁŠJ>«>Ÿšg>¢{»>¬ÙÔ>»µO>ϼñ>ä*\>óì>ù­¡>÷Â>>åG€>ÚêŸ>Ïø>È!¯>Ã[Þ>¸ß>¦Ôõ> Û>±¾…>ϹÔ>é.F>ø¬ß?|?9S?Ç? -«>éN˜>Ш­>É(#>ÑKx>Ýôa>é>ðÜ{>ô¶>ø’:>üÍL>úÁâ>ó¦Ü>ñ`>ò¡i>î•>æ›H>èRÒ>ö® ??t!?Ië?7h? ?* ?? ? £›?: -?Þ?z\?’j?7J? -•^?ìý>öÏÓ>óýÿ>õ >õ>÷ 5>ûÔR>üÄJ>÷Û9>ñ…>î~Ð>ì·*>äÒ >ÖuÂ>Îa>×È”>îY?M°? ßž?zO?Ѧ?õ;?Ù²? Üå?¯n?A`? -©T?ÿˆ?Hë?å? ,î?jZ>ò¼®>ëÐ9>í'>ø,ä?¸ö?Ø'>ó¢>Þ«2>ÜŽ>í!Å>ù}è>ñ¾¬>Ýé3>ϳª>ÎÙž>Õðs>ÜþP>â·C>ç~>å´X>Ø£¢>Ǿä>½ùL>¼–Š>À±Ô>È<'>ͤ£>Ì¥>ÊŒÞ>Í>Ó½F>àšh>ò°? i?$°?ùÄ?Ws?Î3?ÿ?è_?yI>ûwë>ýp°? n?‘'?=Œ?ã5?Â">ûÆ >øëú>ïÚq>ßp|>Ö~M>áVo>ùð?À¸? Ü? t'? ·Ç? ?z? î? -,‹?@Z?o9>ïÞ©>×6>Éh>Ï•>äE«>÷W°>ýSC>ôô9>çv>äCØ>íýµ>õo¬>ðBÉ>çtë>èž>ñEb>òÔI>ê6¨>âCw>ÞÇ>ØLª>× ü>ã¼L>÷«ã?An?J>ý4>ös)>øc–?üJ?ò\?ú«?Ÿò?è†?ˆu?y?ÿˆ?«½?32>ôR>ð6ñ>ùâ¥?­ù?ã«?pûE‘>íëY>âæ­>á#L>æ¹>ëÅ¢>éoG>Ý:>É{ >°-Å>“˜ƒ>q!°>B-=>»=ꨢ=´Sg=–pù=šy‹=Âú>>u>3˜ó>ije>HI>§æ‚>¸Ås>Ä`ð>ÌIé>Ñ“v>Úu>ëÕû>ý"?t?O?.?ì?΢?¡ÿžœ>âÕî>Ér>³Èç>œÅ;>ç">@Fõ>¶d=Í{=Ķú=÷Je>+‹>f+>’2¤>±f>Ï;Ð>êÐ>ÿ0ï?QÊ?Å?#K?:?#Í?¿þ?Ë?å?ËŠ? ž? #2? Öv?#Z×?$Õ†?%j¥?(~?,gX?.bå?+‘'?&$w?!×?Íd?]Ü?bè?"Ö?(c‰?+¼ ?.ëY?0àì?,Ͳ?#H^?ó ? )?(Þ»?0J°?3ïµ?5¦—?5‚‹?3\¯?1—‘?1ç?3Áì?4³ê?3Ì?1…?2«Œ?4<µ?3ô–?3Bö?3EÛ?2E¸?0`?0¸t?5½×?;?…D?=1(?9µU?6 ?4Y?4„ ?5/[?4·g?6Y?:ýn?@M¾?@-?8g?.?¯?+“Ö?.õ˜?0ú?2xÆ?8?@šG?B¦4?=3u?8”?9\à?<²?;*e?3ûí?)ýR?"õ6?%¤?/Š­?;^,?B÷?C¸B?>‘\?8fÀ?6ˆ`?:³A?B“t?JU>?NÂ?NÈÛ?Kà‰?H~?G5y?H¯¿?Hóî?E ?@~??-&?>ü‹?:Ñß?.Ë? ¼?o -?ó¡?,Ú%?:2 ?A¶i?D«?Dß?BñH??¹¿?>V ?@–¿?Dè ?Hû?Keî?Lùr?N¥I?M•5?G»b?AëQ?A+Û?B£é?BŒ°?Buf?DÌv?Hia?I³f?GaI?CŽe?A=?A¿°?C6’?AÈ?<ÍI?8¢ª?F²Ü?L1:?O¹ñ?R”N?BÊJ?L= ?S§ø?W6é?X -?Sxƒ?Kþ4?Hˆ!?F4m??}?7ð?6žø?61¯?5m??<&k?I²?R¬=?Px_?E3n?ÄW?=Ϲ?8B/?0Ý“?&¬†?}s?¢ ?›@? ”? -Àu? -uì? Ž{?gÒ?°? GŒ?¦Ý>úIc>û”)? „? -†œ?5¨?)­ý???UÁ.?d§(?hõx?gö?d4£?]=ð?Q¼Ù?@=¶?0†¬?,™’?6¡?H.6?XÌ?`Kë?`GÔ?_ÛB?b-?d$Z?dÔš?eŠ?`4a?R­?@‡~?0q{?$2=?&Û‹?9˜Î?J6?Rqá?Xäõ?^PÒ?_>w?` _?bª?^ ?Nú‡?BáÓ?EÇå?Ol¨?Tœ?V?X¨?WHŽ?Rà4?TjÌ?\ac?`àJ?_ÄÅ?`œf?c"…?_²U?Wãe?TŒû?UÃô?U›â?TÒ?TÝJ?Q-ÿ?H{s?CM«?H˜?SO:?Zm?[Ø?[eÍ?YZ~?O>î?>Sœ?4Þi?:Ÿ ?Gx\?Oö~?QÉý?Pæ?N˜_?Qbô?W•?Wÿ€?R§?PÀ?UÄa?\¤^?\ª?VÅn?Rq(?V„µ?^47?]¥Œ?V)Æ?T¸H?XÃ?W»E?Tòç?Y§+?crö?k'?n e?j+"?`=Í?X¯Ä?X°ð?]ER?e g?l€?m:ª?h£ ?f51?h?iEw?fìJ?d*–?e?gå?fôQ?f)?gÓ„?fšp?_R£?XL?ZpI?eÖ?p3?s„’?p8?gZå?\b¡?U¢?X¡A?b(?hÄÖ?i¸)?is®?hŘ?g f?gŸ­?i"|?ekö?]Dr?YJK?\ùë?aü½?bÏÑ?a4Î?_aµ?^8‹?a†?f3?hÃ?iR½?h‹C?eVà?aT?a|þ?fíN?nšW?u8½?xcÞ?wv-?uÀP?wM/?yK}?vÓB?pY¶?i6?e±©?j;†?rdÿ?w¬ð?xèð?vö?nöŒ?h‡ª?iPî?oë]?tnÐ?r¶z?nŠ?lº?n!Ô?rš?vÉ'?v+¤?rb¼?r°à?xöD?~ÜF?€_?•q?|ó4?{ö?{Úa?}«ú?}U†?zº?x=ð?v¬ž?uÝ ?u"ô?r·‡?pùþ?rÍ?ueÿ?tbH?p0X?n»?më?l×?h;?d½?bOy?dx$?h×?i_?dÞÍ?]€1?[{“?cÒ?p[/?yƒb?zþÞ?x‹­?vºÈ?vcc?s·h?n¯?le ?m @?k†–?dMX?`ß[?fM|?k¸?i^?eæª?eÑ -?k?|?s½?y™?{9ª?{1?zZî?wD/?r¶?q+ß?sò&?xß?zÑV?{Rà?x˜?q§+?m”?r„‚?ywj?{àf?{ºó?{RG?y×L?vú?qTæ?n½þ?n¯Í?oE9?q—?sÚÑ?w.@?zvª?{a²?y‰C?vˆ?s¾?s©n?w ?z¥½?|ã·?~è?~/?|Wþ?x©{?u¹'?uDý?w¥y?{lò?~?Ó?€*?€ë®?Pb?€‹£?~›æ?}Cž?~)Å? î?~1¹?}Ú6?~- ?ô?×?‚ëô?ƒŠf?‚üµ?Ë“?€ýç?4õ? -E?øÆ?€%?œÅ?ì6?K4?XV?k…?€Äp?€-Ô?€¤É?‚ ?ƒ¬ƒ?„ÉÞ?„Þ!?„%Ã?‚së?€¼?}Ås?ê?‚\?‚³š?׃?>ê?€rÖ?}Ñf?|k‰?~…ç?‚rí?†(á?‡øÛ?‡›?†U¸?…?…Mw?ƒ÷­?û?xq^?xk£?}Fó?”5?„9²?…‚@?† =?†ëH?‡á®?‡šÎ?… U?ƒb¬?‚ ’?¬å?‚ªé?„·¯?†<?†¯V?†Ã„?†ê£?†Ám?…ÜÂ?…-?…ú??‡}Ö?ˆxX?ˆŽ€?‡PA?…?7?„7ë?„¨Ë?„¬ ?‚ëš?I?‚õ?ƒ~g?‚¯?€l.?~þ`?€ö’?ƒçN?†P'?†Qˆ?„•¢?„á?…¶¼?‡‡œ?ˆ$J?ˆ!?‡¥?†Ïâ?†£d?‡sg?ˆ -q?‡N?…}š?„÷?ƒð?„Æ?ƒÊÝ?ƒú?ƒßs?„•c?„IÃ?ƒ¯M?„©i?…ɳ?…N1?„“§?…\ ?†»?†ô†?†i8?†J?†L?…Ê?…?„Y»?ƒñ)?ƒn‹?‚å_?‚?‚Qj?‚~N?ƒ?ƒ`Å?‚8Á?~jÔ?x>D?uvú?wBò?}ÙÎ?‚rÅ?„H?…" -?„þ2?ƒçß?ƒ¤’?„øÙ?†0?†Xø?†?…KÐ?„³?ƒ§?ƒ»-?ƒ5Ð?‚É›?‚\B?€ä%?€?€{`? ò?‚@Ã?ƒ?„«¨?…ÅŽ?†J?…µr?„×?‚4 ?çÙ?ƒE+?„¼;?…1?ƒæã?‚cî?‚n¦?ƒsù?ƒõT?ƒâN?ƒÞ?ƒ³õ?„]b?„ëˆ?…Z½?…Ñ$?…ù5?…½ý?…bg?„ôæ?„<•?‚d.?€—â?WU?ƒ–á?„ɸ?„H?ƒ¥/?ƒøP?„^,?„¨?…í?…&?„àž?„‚É?ƒh™?§¸?€îÙ?Ó?‚ÄÍ?ƒ_W?„VJ?„û~?„Dò?‚¤$?‚4Ÿ?ƒ7J?ƒãÄ?ƒþ?¸Ë?}ÉN?|á?~r…?yõÇ?eBË?G"ð?<Ðþ?S x?lÆÛ?xRT?|Ë/?€?-?€i?y°°?t y?wkÓ?}¦?”4?}íS?{߃?} ù?£?Ý-?€s†?~æ2?~ ?}8?}sn?}³ý?{3º?vê?r8{?v¶1?€±.?„`ä?……ä?…¹h?…an?ƒ3?S!?½?%z?¡+?ÑU?‚V?ƒt ?‚åg?€ú¬?}–?}R©?€ÿ?‚ä?ƒD&?„/?‚õ+?~&y?ty?oy?rÒ®?yŽ?z@?z¹h?€#ë?‚¨º?ƒ ;?„/??„o…?ƒî?€!;?xŠ´?y¨¼?~¶ò?}X\?v©þ?tЩ?|'ð?‚©?ƒÈÃ?„K9?ƒ“%?‚¯l?ƒX>?„,?„ -†?„%m?„—?„Íë?„¥ß?‚·/?z÷ö?sé6?{\?ƒ,Í?…0?…)~?„é?ƒêµ?‚V6?Öã?‚7Ÿ?‚Os?‚ou?ƒc?ƒÍ,?„ºw?…‹7?…8m?„\_?ƒ/?]?|ó¥?uÂå?u¿ ?y¿»?} ?~ˆâ?&¯?’?|Å ?zù?yžh?pcW?]ÏÌ?PJV?TÑ2?aà -?`ô–?Tä?Yî?mm?z’*?~„?@(?~;±?z¹C?nÑN?Zµÿ?UÎÀ?eÇ?r’K?slM?qmù?q*)?kœ¹?g É?j>ç?m g?prx?rè?tzZ?w;…?wáÁ?tý?pD?jG/?gd_?iº ?ià ?jþ”?pÜæ?wè\?|t?zCå?rè??oç?rÇ×?x‘?|*7?~?}È?y ž?n~F?a–c?`?k|Û?t›]?wpv?uØ?qÅá?s2?wf ?zÜ?{ÞÖ?{vg?{a ?zé?zb˜?{€‘?zt¤?uÇ?l{­?oeô?o×&?q_?v¦?| Î?|;¸?x?t;Ç?q!:?r2X?x>£?|ìã?~õ?~F ?~¾”?~“m?}¤Ü?|¥›?z.Ä?t[+?o¥n?r -?v§ƒ?v¢ ?vÛH?z§À?}}?zЩ?xS ?z’I?~?+V?~ž\?}vs?zÉ:?uçŸ?tôZ?yf?{ç’?{6 ?xÒ?u){?s•Ö?sÇ¢?k¹?a³ù?hÜ?t}Ý?wÀž?wd5?y`?y?v™,?vDì?sO?o“?q¨‘?x\T?z Ò?wš$?v\‹?u ?tɈ?w¥ -?{77?{ÚÜ?|ûi??€5Ò?€ý?îî?~åš?|f?xÐ?vhš?vˆ?vþÑ?vÈÅ?tr ?o7ü?lŠ“?r–??z÷Í?ps?€R±?å€?}Ë©?z¯?x(ä?w´Ü?yª?|š%?%¡?h??~;2?|Ár?{So?y÷?xSÛ?x}Ž?tÂ3?rnŒ?wnò?{¼ ?|ÌS?{ä?v~„?p`=?pÊ?w@??yNë?vd«?x`?~6§?æ;?}ß2?~¤?&‰?~?Pœ?€X»?ï?|;Ú?{S ?åR?€òC?|3³?vbJ?yðó?}]Ú?yŽÆ?v9 ?y×?óU?‚Ü?‚¾ƒ?‚è|?‚Ôã?°ô?}1õ?uª‘?u#f?}$w?d?åš?ÜS?€;?x$l?u¹g?}þ­?‚…?Æ¿?Çç?{îÐ?{…>?~–?4t?€¡?€ºë?€ú›?€ÍÅ?€$Á?~Ü?zY}?t©d?utÂ?|-…?~’Ø?}'q?}dq?€ Ç?* ?€ß!?̆?š?(‚?€?€^µ?€…Å?€V™?}J|?{9ƒ?~>Ÿ?~@©?{v?}I8?€- ?~ºº?zÝ ?|RD?Îà?€K™?~»c?|t¶?}gâ?€h¹?ÊÍ?‚_Õ?‚€z?‚>s?èR?¿,?P²?~þV?y?v?z·Ã?€œÓ? ?€Ô?tY?é¾?9%?‚ ñ?‚U$?‚K–?ÊU?Eê?|×?éý?‚Fœ?‚“¼?‚§€?‚“¸?‚2X?T]?¿?Îa?‚Kž?‚Xâ?‚%H?š?€²{?€FÃ?€i¼?€]º?Ô«?~?~‹?}Äþ?|rë?~n?D?’?€8”?€òl?€ðA?€2f?€šÙ?€»¨?|­?v?suç?v0¯?{F«?}ˆµ?|F?{¦Î?~Ö?}ݽ?zÍË?zØ:?x†e?v‹?z±×?€Û?‚3q?‚qo?‚ƒ?‚ŽA?‚X•?‚¥?}•?vç?zU?€ ?Hm?Ú»?€—"?€îu?€»5?€4?€Ü?€1è?€_:?€‘Š?€Ó.?€÷}?€¯ê?€$X?€Ê?€Ãb?:i?M¹?vA?œ?©?±¯?° ?¨?˜}?©?¥Š?œ?Àu?¯Ì?l?zo?Ëx?Úþ?¥2?CØ?€Ý??€ìÑ?yË?€–?€vÓ?}xÉ?}?}¼§?{Rõ?|#†?mM?€jz?€õ?€åÃ?€¢ ?€§?€–6?Jö?{N?Z?BÁ?R?>¾?€ù/?€ï„?Ç?€¿‹?€E?~þö?|·?~¿H?w)œ?ja?eƒ?iq`?pV>?nÍ•?jz»?mƒ{?sàî?yí±?|1a?|³P?}›?~~ß?…u?Œ‹?~~?~#x?|þP?zèÉ?z¶ƒ?{ô€?}€?}šß?|D?|&?}˜S?}2?f^ž?ká?lál?l—?k2?it?jy?kï\?aö‹?_â ?^[?`N:?a‹?] ?Vƒ¤?Y§-?_Öü?a†¡?`¬Õ?^[P?[Úî?\ ?]ðÉ?\êÜ?\±?\Ì#?]È?\[è?]€ƒ?^þ´?^-é?^›?_õ?]I?X¶#?QQ¤?M•Û?Oü?Sâj?WÒ]?\ò¯?_Í}?`U:?`ð?`É?`QK?`8Ë?`7®?_Ù}?]Ô?ZÝ??X‰ê?X˜÷?[Ô…?]ÐÈ?^¾þ?^o?]«Q?^:¯?^Õk?^ì«?]ü?\Òv?]&L?^"?^]L?^yÄ?^‰ä?]¢J?Z'­?V©½?Y… ?[ËÅ?[°Ç?Z² ?ZÁ¾?Yã5?XÇD?Y¥?Zb#?Zš{?ZYË?X¤ ?U“Ó?V\¥?X‰ù?YéP?ZÇ?ZÇ´?ZÅõ?ZsP?Yâ?YRš?Y­?YTÚ?XYà?V2•?W±‰?YXM?YhÅ?Y™?Y•¯?Y6Ð?Xü‰?WïÙ?T¹?SçZ?W\Õ?Xô8?Y}F?Y|Ö?YmÈ?Y^?Yþ}?Zd?YrÃ?Y!b?Xå9?X”z?WØ?WÕY?XA?WØœ?W©O?Wü$?X7G?X€w?X½-?XÈ?Wýs?VÄ?S6f?Sí>?V™?VÇ?V¾‡?U´Â?TªÇ?V«…?WÜÂ?WvJ?V®Æ?VÑ?V½¤?V¤‡?V—?UÆê?U/®?U "?UzÈ?Uœn?TÜÔ?SN¹?T??K5u?L?Oú÷?Q§Ê?RØ‚?SKØ?R|?PΤ?Ju ?GPî?JÐ9?M`?Lß?M}Q?Q ^?SUj?S)+?Ræ?R]k?PÚó?Pl?PŒ¸?Q;ð?Rk£?Q(¯?M½Ô?Mgû?O@,?NB(?NîU?Qø§?S*Z?Rü'?R®?Pz´?O®ª?O`ò?O??PÉÝ?Q¦?Oéx?O ?P‡è?P?Mç?M æ?L»?L=?N?M>æ?Mv?M«ç?Mp˜?KX?H¬?J\?L†ã?K³:?Iöø?J™r?J`N?JÞ?L[„?L×?K/?I„K?K™v?L¯ù?L¾_?LoF?K/Ø?K²?JÌ?Hñü?EXK?Bo¥?En­?ISá?J®{?Jòø?JËk?Jr?JDõ?Jiy?IhO?I‡ò?IY?G“ã?Fd‚?GÚÛ?Güø?G Ë?G… ?H£P?I -Ý?H_ä?GüK?G: ?Dq?D‡?GS'?Hð?FÕ„?F—?GC?H Ó?HŒÿ?H•™?H w?G«G?G˜0?G8·?FŒ¹?G€ ?H¶?IE>?I$4?Hµ -?Hõs?H¶G?Gµ§?GP®?H6Á?HùG?Hu1?G©.?G(_?Fɹ?FE?E« ?ERË?F†ä?Gÿé?H~a?HŒ?GwÚ?G1æ?FqB?Eƒ ?Eqz?DÝß?E=Š?Fœ?F=Ä?Ea?Ft?GSf?G…™?GsÊ?G~-?GD¯?GÍþ?H:æ?GŸ?EÇ?D©€?CO®?A•=?B>¬?Bç¾?Cj?DI«?CŽ ?BU=?DiL?F¢E?F³?E;ú?AeB?A,K?D‘,?FÉÙ?G²é?Gçk?Gšt?G*=?Fï?Fy??E«?@ :?@Èœ?E)ç?G¬×?F–H?FPF?Gö6?G¼„?Fc?Bã€?Õ?<ì?;p°??O£?A »?B$î?@?>ŽŸ?AñÐ?>o-?8$?;¶B?@zz??ö?<µ?<9·?=É¥?=oa?;]¹?6ÀJ?6X²?;Gt?=)?>1?A@?B\)?@4V?<ÂI?="?;?: -‰?<¨ï?;Ç?;îÑ??ÒL?>L`?9ÎX?;œ=?>N:?>ºƒ??°›?=äú?7Qˆ?6¼?;*!?=i+??ZO??Äl?>ër?=Aë?;Ý@?;²%?<}?q?2Lq?1Ö`?1¤L?1š™?0ؾ?0Çg?0-Ú?.~‰?/yv?1S?1À“?1L¦?0/W?/»³?09%?0À?.?½?-ž`?/‹c?0‰Ï?0Ÿø?0r|?/Äâ?/‘p?/]?/UÛ?05—?0A -?/R?.ê‚?.Á?/sa?/uø?.1Ê?-n·?,‚i?*×?-¦ò?.õ?/l?/©?.^J?-z?-rR?,d#?(Œ¡?*?+×D?+½$?-¢?.j?,ª?)f?)oô?,Ç?-`#?,]g?*fæ?*Hå?,Gí?-m:?-å?,"—?,!Ê?,Ú0?, n?+‹ò?,mm?,¹–?+íÑ?*_ð?(ÿ‰?*Ðú?)šÂ?) -?)Ìâ?)cÑ?+OW?*_Â?*%Ï?+Ò¶?)Ëû?(\T?*–î?+Ý?++o?)’?&Ï?&­Å?(ÿZ?+5÷?+d?+Ew?*µñ?*Ô?+t&?+4Á?)uC?(õÐ?)0/?)&{?)ʸ?(¤?) 0?)|l?&ÛN?"ÚÑ?"n?$‘?(Ç?*O/?*p?*›œ?*X?*_°?*Ø?)¾]?)h?(¯ ?'¶?(Å`?)A‘?(&ÿ?(TÀ?(÷¸?)%"?'¬?#R? ÏW?@È?¦‡?•|?àµ?ª¡?!‹¬?%Çö?%=ì?%öâ?&¦“?'èú?'ÃÈ?%ª#?#Ùi?&0J?%üú?$‹ -?$Û­?$¢0?%I?%£ ?%Ò?#ÿ­?!nž?"D–?%Ü?&ªs?&œI?&Z ?#¤Ò?{??r?¨©?#Á?$[Ê?#ÄÌ?"°$?j¼?ø?6ú? O¬?#d{?$3¿?#Þl?#ÎX?#Ô?#Òƒ?#Í?!/? Ý?]?Œ?ïù? ¤¡?!òÖ?"^Õ?#!2?"~?"-?"€Ñ?"¢ß?"…[?"¯w?"ªÕ? i‡?‰²?b? 4´?!M‡? h…? Ç9?!X×?!f¤? g¥?:? Œ?!6n? ì“? !=?¼?Òˆ? ¿? aû? |?—°? „? Ä,? ûþ? ø¡? çF?!$è? ×m? ù? ºõ? ÝK? Š’? Uñ?Ì -?Ø%?XÓ?÷Ÿ?N?S?ðí?c?Uy?ò«?Ÿë?yø?½?¿ð?CE?Lß?´E?àë?zÔ?gH?=¯?^²?ñi??È?Žª?të?ˆ?º[? ?aw?4 ??Þ½?oð?;Ù?ëg?„$?ªð?B?C?°¯?? -©?™?kâ?ýÇ?',?t ?¼Ï?·?Æ?™?‰¤?"Q?Ž¸?n?¦;?B?É ?óï?|8?qy?„ ?d?ž?VB?Þ‰?=?Y´?ný?¼?&i?f?Ü›?\(?Ô@??§f?Ïî?ÿR?º?fÙ?p˜?’?6¤?ˆF? ?ë??Ní?Ðü?þ£?‚?CG?O?8i?¬¾?Û?º#?×ë? áô? Ön??êÄ?a™?æ ? ј? ?Š}? ¡Œ? ð ?0‘?’g?Iô?³v?u‡?)?®@?AÛ?(ß? :a? ù?@.?®Æ?­? k? -GK? vŠ?µ?y¨?•Ý?ï6?Œa?o5? áØ? - ÿ? ÇŒ?äª?!? ós?dc?ú§?½ò? Sƒ? iÀ? Ø©?CÀ?<? Öì? f\? |.? Î'? ÿQ?j?#Ùs„>â4´?¶?²Ó?F„?)*?•Ð?ßL?ã^?~?¯i?C?!Ý?ì? P?gý?—Ó? -?(7?£4?l­>ðÙ9>ÁuL>Ÿ)À>Ñi8>÷Ò¸? ?<Þ?ÖQ?Ê#?`ó?t…?ÚÂ?‰ë?üö?Ú?g—?%?àÛ?¢?6B?Gü?ƒ?äæ?ˆ?uz?]Ê?€r?XÙ?Ó?%+?¨7?'Ò?—{? F?¨¶?^”?¾/?2è?¸n?Ï??rÀ?;ã?Pb?‡,?‚O?‡õ?‡?PP? ù?~?S?ý?“?M?'ë?4˜?_¡?F]?:?­¿>þÞ¦>éÌë>´†>µÓo>èo*>ûÚq?|?C¯>ÿçÍ>ýT¾?âµ?s?2â?‰æ?x >þ4\>úìë?Ù?Ó? -·?ƒÜ?,?©!?÷÷? …?Õ?@`?«?˜º?_ ?,õ?ÿä?S?7l?ÍG?=?"Æ?žÙ?6*?º?pÒ?Q=?j?DÚ??–?J¿?¤Õ>þe¬?x?;è>ÿ¶ ?j ?»Ä?bn?í¹?.?W?Ÿ?m?Çò?¾ï?v§?VÌ?F)?'"?yû>þíÀ>ýÒV>þN?5©>ÿÖH>ÿÀ1>ÿ%ü>ù¸ >îh‚>õN>ÿ€{>ÿ^>ÿ*>ÿ¿;>þs®>ý.i>ù@Ñ>òÓ>ú—>ý‰¾>ÿ\>ÿ:ù>þ‰n>ü’>÷[Æ>ùúý>ülö>ü~¸>û}…>ü">ûq7>ú¤>úÅc>ú >÷ÈÍ>îÒÓ>æ©>ïŒÐ>ñl›>÷@3>ú¶]>ø£>÷‹Ö>øÞn>øñé>ø¦é>÷é>ùãÆ>üWç>ûCe>÷$b>øHÆ>ûˆ¼>úa•>ù¹{>û‰>û•÷>ûÕB>ú*>ôð >íYë>ôÇ>ù£Ú>ö@]>ôtv>õ³>ò¿Ç>ëjR>ë-Ö>ô‘º>÷ç`>ùi4>úQý>ùÕb>ø->óºe>î6€>î¾>ò¹>ö÷¶>ù]d>ù®>ùr>øÊÐ>ø4l>ö¨#>ð‚Â>ïɧ>óÿs>ö‡ù>ôR>îªx>îuÐ>ñÒT>öaH>ôÜ$>õ >õ¤t>ôep>ô–>ôQê>òà®>íg>ï'>ô›ë>óž>íJ>ä—Q>àÛ'>Ø4>Ñ^—>áUÈ>éô>é÷>ëFH>îÈ>ï§>ðgË>ò'p>ò¹¶>î_î>ð :>óâ>óÕö>ó?>óÚ(>òÔÂ>ð•Y>ñÊ$>óƒg>òœ>í¬>ØÝ(>Ýo‹>ðñ:>ó#>ñÉ/>ñžw>ñYO>îR=>áîù>ãï¬>ï™”>ñ†î>ësy>Ùcö>ã:ñ>ë–>ßr)>è%>ë«>ìF->í.Q>ì0Z>ì±Ë>ë˜G>ß -8>åŸQ>ì™=>æé^>éV:>í×Á>î -ÿ>ík¿>îL>îê>íü¨>î¢X>î’>íy§>êö>ê >çÀÅ>âÙè>èÕ->ìƒ|>ë~ƒ>êÐå>ë•O>ëãÏ>êí ->è>éT•>çW%>ån>ã>â_I>äøb>æFq>åWO>ã˜1>è_œ>çû±>æï>çm°>æÞF>çÿ>ä¿ø>ãÛÔ>åÔø>ä.ß>䮽>áCŽ>Ú´À>ØX>ß‘p>Þ~ä>ÜÑl>å>á=Ó>Ù-)>ɨ>Â~¸>Ö9>ßÚÿ>Ý7>ÙB‰>á ->ी>Ý>Ý9a>áZÛ>â=b>Üý">Ú<á>ÚÓZ>Û•Ä>Ý“=>Û—6>ßÓß>äeŽ>ãé^>ãáD>æ|>åÜ>â±U>ã½l>åBc>äð‹>áZá>Þ¿v>à‹•>â¦q>ß¿>áæ>äJ ->ä€í>ã‰>àîØ>á÷‰>á©>â?3>â¨á>ÞlÍ>ß*¶>ᤠ>à;°>à™‘>á®À>ä/>âå.>ߘ¿>ã\>âÕÕ>ãmÚ>á!Y>܇²>à­õ>Þþ>ß1Ä>á(Q>Ýœ†>Ûu>Û›#>Ü“*>á">ál>ßZ•>ß0ô>Û¿»>à(>á“J>ÞaŽ>ÝK)>Þ,>Ü#©>ÛÉP>ÝK€>Ú³F>ܹ>ÞŸR>݉û>ÛvŽ>Øè>Ê@Ë>ÑÔ>×üù>ц>È &>ÖQ>Û±a>Ù' >Ùß>Ü´þ>Þ¨>Û9C>Õþ’>×â)>Ö Œ>Ð,>ØVÃ>Ù“Ý>Ô¦R>Ò€ÿ>Ø">Úå>ÖSÒ>ÖÜŸ>ÚÊ:>ÛU>×Ï!>Õ -;>ÙÆç>Ú|Q>Ø`d>Øü>ÙÃÿ>Úº%>Úl²>Ú«>Ú{>Öª>Øï>Ûç^>Úªš>×@Q>Ø“c>Úë>Øëˆ>×ë>ÖX•>Øæ6>Öú >Øke>Ú%Ç>Ù¡‹>Ö3‰>Ø Í>Û@¹>×5ß>Õ >Õ¹¿>Øpß>ÕK>ÒÍá>Ö(Ó>Õ3d>Ìžö>¹f;>¾9­>Í6à>ÐÀO>ÓË>Õ¡>ÖîÞ>Õõ6>Ôz >Öx>×)Å>Ð÷?>Рä>ÒH>ÕN >ÖÜÔ>ÖL>×JL>Ö"x>Õ >Öš¦>ן>Ôúo>Ô°>ÓÀ>Ò5;>Ëîº>ͧ¶>зI>Ô]>דÞ>×}L>ÕÊÿ>Óæû>Ê\C>Íân>Ь*>ÎOr>Ô÷'>Ô>ò>Í|>Ρ >ψ+>Òüò>Ô…ú>Ó;K>Ð8>Î -'>ÏÞº>Ðuq>ÏLE>Äý>ËP>ÑÄB>ÑU­>ÓDm>Òo»>ÍÔx>Íq>ʦ³>Î4>Í>ÏK|>ѳr>Ïf>Ë0ý>ÊŸ>Í>J>Ða>Ñuë>Ñr>Ï >ÎGz>ÎÔæ>Ò>Ò†õ>Ò6ã>ÐÎ>Ðí>Ðì™>Δ>Ð ->΋ç>Íä;>Зü>Î@ø>É€Õ>Äf>ÉÏ\>Ì,Â>Ì¥>ÈIÛ>Ìlù>Ð Ü>Ð’ì>ÏÙN>ÎΟ>έ=>Éùw>Ëo}>ÍÃu>Ëå¸>Íp2>Ð5>Л>Îï¿>ÌÒ‹>Éšk>ÉÉr>Æõ4>Ë!}>ÎZò>Íñ.>Ë>ÊØV>ËaÉ>Î&&>ÎDƒ>ͽ«>Ì™ >Ìô>Î!6>ͪ¬>Íøï>ÌS…>ÌC‘>Ë,%>Ì&Å>Ì£>Ér¬>Éì¡>Í#>Ëè>Ë!Ð>Ì'>ÌÝ>Ë >ȳ—>ÈÎ>È–d>ȹ³>ÆG0>ÆÒ>Ë,s>Ë×B>Ë°Ë>ÊJ^>Êx>Ì”>Ì{d>Éçå>Ê!0>ËÈ>ÇŸ>Á¹>Ä.ÿ>ÉÈë>Éœ0>Ä©Á>Ç=H>É %>ÈPh>Éݾ>È@Ý>Äš>Âï°>Ǹƒ>ÊØû>Éc/>Çm(>ÈrŠ>Çt>¾CÉ>ÄG>ÉÁt>É¢>ÆüÎ>Äóe>Ç©ž>È,Ò>Æ î>Å Ï>Ç<„>Æ"4>Æ»n>ÇW>Æú¡>Çtû>Ç‹ž>Ç'%>Ç^¯>ƨø>ÅML>Æ¢3>Æ•U>ÆÁž>Åëù>Æ0À>Ç>Ä…¹>ÄFŒ>Â"X>ÄT«>Äì­>Æ />Æ¿³>Å‘`>Åó§>ƈŠ>ÆX©>Åg>ÄEH>Å`Ð>Ãm>Ãuk>ÃI2>Áâ>ÁÕŠ>½S>ÁP>Â% >ÀøØ>¼9>«IV>¨Áw>ºâ£>¾Ý´>¾ƒô>Ár–>¤>Á„‚>ÂÝ>Á3°>Ãlî>Ä>Ã)z>ÂÇ>Áø9>ÀÁp>¿¾Ë>ÂB>ÂÙ>Âé:>ÃU¹>Ãpv>Êá>ÂÛ·>¾ßÜ>¼Ÿe>Á4ý>Á÷>¾¥²>À+­>Áæ¾>Á!®>¼\1>¹¤ó>ÀšÇ>Áe>Á^à>Á<>ÀaÔ>Áv>Àqî>½y®>»TB>¿‘ï>À_®>¿%Ç>½ q>¾§,>ÀÈ >½Ùt>ºw<>½yã>¿1M>¾€>½sc>¿ÊW>¿¡P>¾‰e>¸Æý>¶úŸ>ºÿM>¾[€>¼t‹>»Íy>¾2>¾d¸>½‘­>¼ºc>½X¬>¼¢û>¾N>½•ž>¸›'>¹3>½W´>½õW>½ ­>½3>½´Ê>½…>¼ØV>¼…>¼Õ>¼Žj>¸­Ÿ>¹£>¼åá>¼ø`>½ ü>½ -Ä>¼jÁ>¼O>»¡®>»g{>¼ X>»ØG>»G>º¯Ü>¼l>¼"Ÿ>»ÝÄ>»hî>¹i1>´´P>ºNc>»ä >»*È>º [>¹,>¹DK>º3ý>¹¤V>¹+à>·þP>º3Â>ºkt>º¦>¹ùY>·¨a>¯†>¯Of>´Vô>¸LM>¹’->¸¾>µ5£>³«°>·&Â>·‡ì>¸ÆŽ>·yŠ>¸Ä>¸›´>¸T™>·•Î>¶T4>·„P>³>²k>·±>´?Ô>´?>·Š>·Wr>·|">¶†¤>¶84>µeñ>±D>µpH>¶¤|>¶ ^>´bù>´üÍ>¶ÅH>¶åï>¶?>¶']>¶ ¼>²aŽ>±?Á>³ŽK>¶6ÿ>µÏÐ>´ÚC>µN#>´ý8>µCD>µ“Ž>³r¸>²mm>²êk>«Ñâ>¤9>§e(>­÷Ñ>³„Î>´šœ>°øÃ>®)>²÷¶>´q>´V>³¶¿>³ªl>±€®>±ÌÃ>²OK>²Õ>²:©>²N>±9L>®/C>²;>²€>°W>¯µÎ>±(c>°†¼>°f˜>¯No>± >±TI>®½G>«ÿÖ>®Üt>±Ox>±ù>­ò1>°®>²K >±ù>±ó>±“¹>°àÕ>®ïê>°§>±’ >±h¹>±`ù>°±Æ>®>®zº>¯tN>­þç>©4Ò>¤f“>¬±¥>°¦•>°“ò>°)>¯>¯Î¯>ªÁŠ>¤>«È”>¯3½>­°D>®ŸI>®a>®ña>¯“Ã>¯]>«n>ªjÚ>­µD>¬IÖ>®ØZ>¯ú>®û¤>®e‰>­ú|>­ÜH>®D>­ï>­Kù>¬(>¥*ü>ª$]>­ƒ>­ã>­UH>¬®s>¬×¡>¬±Ä>©÷X>œŸ7>œ:â>¥ëd>›òg>ž±E>§.¿>¬s>ª‰Å>«*B>©Wá> ûµ>©y>«Ñõ>«L¯>©.™>ª¿µ>« Þ>©./>¡Xr>ž+>§Ù–>ªýX>«Nô>«+>©—Š>§æD>§@Ï>¢[À>¤Bœ>¡•¹>¨æ >ª†>©ÿ>©½“>§fq>§Ò>©ÇÁ>©Ü•>©²g>©Hô>¦ž>¢‚ï> oW>¦Ä­>©1¯>¨3`>¦ˆ>§ó°>§ÛÕ>¨F·>¨©)>£šH>žJZ>¦Vú>§t5>£(>PŠ>¥cö>ž V>Ÿ¨>¦ >¥Ê>¦ƒV>§ -ø>¦¼f>¢¨>¦9ó>§}ó>§¦{>§¥B>§¨>§\'>£Ó’>¡Lr>¤ŒZ>™'u>ž˜,>¤‘>¥Úª>¥­'>¢{à>H>  >¤ú®>£HO>¢Ñá>¢e>¥ ¹>¥¿å>¤éÙ>£Ù\>¤Ç2>£í²>™š»>°N>£'©>£ä>¢b>žB$>žñ;>ž8Œ>›>Œ]>ˆ80>™A„>ý|>Ÿ°>Ÿ­H>›ZG>œX>œ¤T> •T>ŸgÓ>™Pã>™©>Ÿœ>Ÿª,>ŸH©>Ûœ>•¡O>™È>›åd>žY >Ÿ¹ÿ>Ÿî´>ž¤£>g>ž¿û>ˆ—>Ý”>ž¶Ï>žÂð>›Eæ>šÄ>˜±y>šd§>œˆâ>ŸÎü>Ä>›Ì+>ž¬Ã>žd•>›’Ü>œC5>žQ¨>œyÍ>›‡z>ží†>žA+>šhA>šƒj>žx>žQŒ>$f>›¹6>œ†Î>’R>ž‘(>œ ã>š¾Ç>Q!>Í|>œ_i>™ý3>Œx>6Ú> -û>›d#>œXß>œÍ‹>œ#>œ>›ýt>œ4¾>–úã>™¡Š>šð0>š:©>˜Ny>•¼`>˜6]>œ¿>œ>M>œH–>–î>™^†>›­˜>›½«>›R7>—8B>˜Ai>œô«>œš>›}ç>š4G>™râ>š~->›W>š,¼>–¦ž>‘‘\>“”Ÿ>šF«>›•’>–±$>–†I>–l >™U7>š…’>›M}>˜OV>–ìŒ>šÓW>šc[>š>™ñ’>——é>˜U>šýÛ>™ú_>™òë>™“>—=Œ>–e>™×è>”„i>>”H>—`Î>”…>™D>š5h>™€ >™Ò >˜²Æ>•Ã>•ä>™m¨>—á…>’õí>“.³>•¦V>“Ÿ]>’0>•·¤>—Â>—,z>•`ô>”‹ÿ>”â>”ùN>—¾k>—l{>—Q,>˜$•>‘[*>ÿM>‘À>’ß_>•K¢>–åW>–p™>•ìY>•L>”aK>‘ãó>’M)>–W&>–ÐÏ>–uG>”»ƒ>”Äb>0>‘­u>”ˆ—>uš>ŽÔÎ>¡Ú>Çm>fŠ>“‰>’×>QÕ>i>ŒiR>‘’>’ëã>õ­>ŽåÒ>“êJ>“|U>×x>“>>“GÚ>”Å5>”p>‘œK>ŽÕ¦>’©r>‘„L>úç>j>“¥‹>”}&>’/#>“ >“Ìæ>” >”Sc>’a >‘9’>“ú5>’–í>‘4¼>æ“>‘)>“‰ú>“8T>‘ˆÌ>’ëa>“<Ä>BÍ>=Ë>’¼n>’D>’ÔÂ>’t>[a>§d>'>ù >(>’~>‘Âe>”ª>wª>ù>’Rƒ>’W?>‘,)>­ä>¨->æT>ù>‘0Q>Ö‹>‘S”>‘F>ƒD>Ôö>9ž>›°>Ïõ>5p>Œ[r>†æ5>Œ|>B,>Œüî>¼j>Œ%v>‡¯¶>‡jF>€>Fã>‰ü >ŽË>¤Ò>Š•B>‰‘>O>Ž®0>ˆßÌ>Šjæ>Ž >:â>‹=>‹`>‰±U>‰1>>îâ>ŒŒ]>Ža¯>ŠR½>†¥>Š>‹¾D>ŽX“>X>í>³>‡ -Ì>‰rÂ>‹Ò(>Œí1>‹Îi>A©>åÈ>,>Œ²>Œ¦S>#Î>'²>ŒrÃ>‹\„>Œ}Í>Œ`>Œ¦«>‹>‹p[>‹d>Œdž>ŠDô>ƒšÈ>…Ãz>t7>„I'>‹¨=>ŒXÛ>‹uÍ>ŠÿY>‰$e>‡ý>ˆgÂ>†UU>‡iF>„¾¨>Š>‹ª>‹"u>ŠÐ!>Šbd>†Am>‡×5>Š£;>Š9’>†=>ˆíû>Š*™>†q>ˆMj>‰"Å>€ÌM>„>Š>‰|>‚Æ—>„=Í>ˆŠX>ˆ¾¾>„ð>‰>‰]K>ˆ}>†²U>‚ÅÆ>‡–×>‰ÄÐ>ˆöž>†ná>†Ä_>ƒ„>P¢>|°ù>†Ï†>„µT>€m>¯™>†rœ>ˆ!>‡‰í>‡©ã>‡Ù#>ˆ8¬>ˆ1>ˆqå>‡ê«>‡‚J>†Þ>‡;V>‡ÔÕ>‡³÷>†Æ‚>†õÃ>‡]>‡­¾>„½>º»(>Æ©Ý>Ò/£>Ü–Ô>æ@ê>ëpÄ>炬>ÜrK>ÑïV>Ìv§>ÈL>¾áI>¯Ê•>¡øá>œz±>¡_˜>®±`>¿zB>Ìš’>ÐŽ>Ë -—>¿Ì‡>´">ªZ”>¢+~>›|(>š‡>¢>²M>ÃQ°>ÌÍÖ>Ë]ð>Â$_>·×B>²‹ù>³š&>¶„Á>¶Ãj>µíŠ>¸/>»¬m>¼_U>»>½*o>Ä(O>Êa÷>Ê»õ>ÆÈÔ>Ä—”>Ȳ>Ò³9>Ý0C>àI>Öä›>ÃŽ†>¯±9>¤Gð>¢Ð>¦[G>ª*>«bx>©#ö>£Í>ŸØ>¡ø>¨Ñî>­í›>­†1>ªŽ:>©TÊ>¨@'>¡Îý>•€k>Šk>ˆ¨§>’¿T>¤ •>¶Bã>Àjô> n>Á|>Ä >Ìò‡>×µ>ܵ£>ÛR?>ÕŸã>Ñ¥>Ñ™>Öƒ/>Û¤7>ÜÔ>Ùܧ>Ö*Ç>ÓwÚ>ÎÓ)>ÄÔÁ>¶I>§C®>›í´>–îõ>˜k‰>ž4>¥yK>®´9>¸±Ë>¿6À>¿X>¼Úå>¾;¸>û>ÇS >Å9>¾üû>¸ â>±Þo>®Ö>­Ó>°Wb>³ž•>·TÁ>¼R->Â#>Çw<>Í:«>ÓØ>Øá8>ÚF >ÙìZ>ÚY>Ú¯6>Ö¨M>ÍsÉ>Â/>¸Ç>³Ž">³4A>·Œ>¾N¿>Èþ>Õœ'>ßÜÉ>äæÌ>åÝ6>ä½>âR,>ß¼>Ú†>Ó÷~>ËÍï>ùb>»íQ>²5ö>¥U2>˜u6>y>å¢>ƒ(>’>•Ê«>¢[>¯Õ>¸¿>»éâ>¾,>¾ôX>¼¸>¸iw>¸•1>Âå`>Õ>æÖ;>ðß>ñFÚ>ë,>ãúG>á2(>ãŒú>å®ì>ßÈv>ÎÍ.>·:B>¡c>’SÒ>‹Žà>ŠR>ŒT>’·‚>TS>ª: >¶.>½»u>À½>Â…>Ç­Ï>Ð*¸>Õm>Ð%e>¿ëu>«ÞI>œœ>—5>šœo>¢¹:>ªíI>³%>¾tŸ>Îoe>Ýù6>ä¶>àz>Ö†L>Ï©À>ÍÂ>ÐÖA>ÙV>æw>ðÚÏ>õû£>õ=N>ïB>ä+O>Õn>Æ`>º>±Ê¤>¬ˆ/>§ì>£‡ ->£ÞD>­Y>¼èI>Ç`¨>É ¾>Éj½>ÏV¶>ØÈ>߆1>àhp>ÛÂë>Ôr>Ï&ç>ÎZ>ÎÕÿ>Ë=Ý>†>µ»–>¨R>œ1ü>•¶Ü>™%(>¥ôx>µpc>¿£>½Õ˜>²)1>¡Àÿ>”ÛÞ>.ç>’ˆ¤>™\> ¬ç>¥®¨>§°ó>«è(>´õ">¿ -c>Çic>ІÎ>ÝÖ>ëó5>øf³>üRþ>ôÒY>åk¢>Õí&>Í:]>Í]Ì>Ò»Æ>×>>×LÅ>Óª>σL>Ðí>Ø™r>ç47>õY@>þF+?5™?‹³?(?H??¦ä?Ö?g? Ö?/U>ýßg>ø¥Ž>ù²–>þ³?ÇÄ?Ù…?k>ÿ+æ>÷Ò¾>ñ˜Á>ðå¿>ö{>ûÔ9>ý ü>ø˜>ï á>ã¬g>ÛMŒ>Øi¨>Ù0k>ÛÌÙ>à>äLè>æ¥F>è·>í¯k>óœB>ô¥Œ>îãª>åð\>Þ¸O>ÝŸ‡>å}î>ôƒ¿?îª?Þî? D±? &c? ›?’õ?W? ù|? ^Ì? ? ˆ? äÐ?=D?º?L? µD?¥0>ùçi>ú V>ûÔ>ôM‡>ém>äj>ëh>ø,’?Ž?Ð?éÓ?X8>ÿÊê>ôY‚>ë$¼>ç›ö>ëÊ>övå?áÎ?ÿ$?_#?‡ª?Ü>þó>ñŒ>àö9>Õ W>ÖÆÂ>åÜ‹>ø,P?rŠ?m§>ûú¦>ó=?>ìöú>í¼ý>õÇ>þüè?u?ô–?ýÅ>ú¬’>èb>Ù½s>׈²>àŽÄ>ëÎq>ñ7Ó>ï±È>ëí>æô1>åˆh>éBå>òJP>ýx¿?@W?{”?¹@>ïÜ>Ô´ >»õ/>³Õ>¶U>Ý•>óÒ‹>þ±”?5–?àE?cî?`U?Z]?w&>ûòo>çäM>ÏÆß>º"ì>±d4>½Ež>ØÈ>õŒ?#? £? ¹>ù=¾>éÓ>ܤ >ÕÁ{>Ö6µ>Ø#C>ÒèÈ>ÇQ¥>Á‰>Ë1Ñ>á­O>ûø?ô(? -À±?‘¹?Ïœ>ê¡à>Ö‘ë>Ñf€>Úâ>ä§_>æ>r>æú ->ðÍp?He?÷-?>ü˜>ûkù?À?(?@G?G>ðZ´>ãªC>ß‹ü>åÊæ>ôb®?Ñ? ¶~? 5z? ÞA? Ó‰? ¸¹? ˆ#?VI?Ÿn>ú= >÷þ4>÷ؽ>÷3¿>ôÕ]>òPÈ>ñûZ>óèŠ>÷õÍ>þV>?5Ä?Ú?ù>ú‹ß>ô >ò“'>÷1¯>ÿßÁ?â¡? Ë»?P?£?3? u?‘æ?¿€?&¹?Î ?Í?ÇA?Xô?ãò?ý?el?îÊ?Áª?üý? -I??0? -}K?ß—?’N? æ? ¬?=Â?i„>ð‰ >Û˜—>Ð ‘>ϵ>>Öʨ>âܱ>ðÛA>ýf´?°˜? û®>ø°}>úo÷?d„?Æz?\?Â?$›?Œd?Åt? -Ž×? VŒ?‡?Kt?Æ? ûÈ? ?äD>öC“>è«ÿ>âÓ«>çøT>õrx?ô^?8f? -í4? ™s? ¼Z? -[?o[?W»? -ØÃ?¨ì?Ù„?/I?Ç? -~? Ý?ƒˆ?FK?l ? U?—°?Âq>û˜?>ò¤>õ0K?÷? Í›?Õ`?§ß?Š@?™ç?ÒÜ?º?Ö¬?¼? ¸±? ‘‰??.h?¡?]j? •U? Î? M?´V??ªk? EÕ?xZ?ÒD?gš?{¹?ùJ? oX? Œ¶? H{? -QC?M?îU>ÿY>ýg?ãö? U?FO?FÒ?z?õ®?z?ºy?é?`ß?·Ø?¿¸?C\?Ô-?òÏ?F,?Æ•?Vª? Ï?¬o?úV? `Û? ¸ÿ? ì®?!S? Kp?ß -?<6?”ý?’™?Vm???I³?ˆ?n!?/#?S¿?K¢?1œ?_p?~“? ú]?!Ž¦?"™&?#÷e?"ر?,E?Só?º=? ×?Z²?óæ?ò? ™f? ìc?'¿?ß?Û³?ª³? t?”ã?4Â? “?#±?Ž?Bñ?—N? ”?‡%?g ?ˆ‚? ‚¨?ÉK?½? n—? ±?ã´?«?¶Ú?üs? ãœ?\«?ó?FØ?àh?"e?%4"?'Ô©?)±(?)¢'?&ß(?"(Ó?Èš?Ç9?—¤?”V?&Ë?ðÒ?®ç??÷?j_?û ?ÙŸ?D?D÷?‚¨?Þd?"aÚ?#&$?n˜?î¨?Ãc?s‰?û^?!]ë?#Ñ¿?$È?#¿Q?%.ó?(å(?,§?-êž?,tG?(¤P?!•_?m_?ŽÇ?ìƒ?Ÿ0?ù-?zü? ˜?"ÿó?%õ ?'ý;?(Žš?(.ç?'Q\?% g?"áÐ?òÆ?î×?p'?WÇ?6?„y?£’?à?X? £5?"«9?%‘õ?(™ ?*¥¨?+Ì6?,„M?,³‰?,KF?+„?*Ë,?*Ðþ?+`á?+I;?**•?(¥?'²b?(Z·?*E•?+„ù?*‚ù?',«?#f?#2â?"ë¶?"%ö?­°?M?ZÀ?u’?"'ä?'fÛ?)H'?(ìW?(é¬?)´D?*_J?*Ÿå?)Ó?'_l?%k¦?'Œ?-Ø‚?4#x?6=Ò?2Ö9?*àæ? ÌÛ?„B?7?˜>?^X? –J?#a½?"Î$?·q?øÜ?îð?éÖ?)ˆþ?2 -Ù?5øœ?6òX?6óÇ?4\û?,$à?µ(?É¿?p?ƒ‘?»©?3?-É?4¢6?4²`?1W¿?1¯?3ò¼?4›ç?0Oõ?'áÇ?¬ÿ? Ô–?\4>ùÿ?­? -¯Ì?sÐ?!àÆ?-t?4??6é®?5ßä?2º ?.¼ ?)aƒ?"®7?µ ?l±?å?º(>ü<.?Ø÷?=?ïÜ?*$?1·?6‰?:(Ï?8DŒ?0§h?)Ð?'6?+€?0tŸ?4Ý?7{?6ÿä?5œb?2†–?- s?(>ª?%˱?!RŒ?Ô·?}?<,?»K?(ÊA?0‹?3ZŸ?4û`?7ý8?ß?=y´?;ïB?=|p?AœÚ?EÔ)?GÏÅ?EÀ¼??Š ?8F‹?3­m?2‘s?4â?:Ýj?AR4?Bc²?;©G?2Ë­?1.µ?7h“?< ?8¹Ù?0Öò?+/z?*D|?+aÙ?+¾9?,@?- ý?*¿”?" -G?†µ? ©?g‰>ÿ·‡?æo? -€s?Á¿?PÏ?'?%Uÿ?-ùÅ?7+«?>]?A‚p?BƒÀ?C9ù?Ei{?H-è?H…N?E‚X?BÎî?D;?Hƒ?L>‡?MÕž?LYP?GÎ8?Bê??‘Û?;|q?6Y?5¨]?<©ª?F¾?MÃì?P?Ü?Oš4?M™L?Loa?MK7?OKµ?Pbû?M÷?F!?:d©?1 ‹?1c.?7þü??4E?AÒÝ?>y:?8Åf?7Âp?=ÏŽ?Dï¥?G¼Ì?FÁú?D)??54?7º?+ûh?÷ ?÷? -rÐÙ?>”S??Vd?@$Ò?@s$?A”?AbÏ?>[(?9Ã?;Â?Ct?Kga?OeÒ?P'ð?QVc?Rÿ;?Qç¤?Nº?M?Më?LM?Jy?F„Ü?Cí"?D~·?GÖ ?KÕ?M }?K{?CÃb?8z…?+e?lz?Þ>ìÿÉ>³dµ>{h)>>Q¤>KŽ¥>‘>ЕD? 1?#üö?6rT?Al’?FëS?Hù?H\ú?FÂ?H½/?OŸù?Uê?Wk:?V~½?VÄ$?X6}?X¡À?V}·?Tü?U«ô?YÃ,?Z8³?W ?V ?Ye_?]?[áŽ?T…´?Kç?CŽõ?=a ?3!A?ßë>ÿÉ>¸\>‚ÏÅ>nn>™gÈ>Ø3H? Œ|?%ŒB?6â?DHM?Ok?W?e?\*‘?`» ?eŸË?h£f?gÚ­?d ?bØÀ?d²H?h‘u?jÙè?jcr?jp7?l¬=?n „?o{W?pÓ¸?rÎÐ?sd"?qC•?nX¦?m^È?mš˜?mo?m&—?oÈÏ?r‹?t^Û?xY?|Ê1?{é§?th?n…¦?o?sZ?v‘?wwX?x.ž?xøã?xý?yKú?zXu?{'á?zóñ?zX*?{OÄ?}¥%?~‡ô?}€§?|Ì?}L³?}oã?|4N?{ç?}}†?€?€rë?~,?xÅë?t,¢?r¼Ï?r©´?sÃ?uªw?zé/?€‡ˆ?‚Õ?ƒ¹¹?ƒ;æ?ý6?0\?G*?€þ{?}Kú?tŸ^?nt?Ã…?ƒ§í?…m?…­:?…wf?…1u?…‚r?†*?…°•?„ ?ƒÒÞ?…ó+?ˆQµ?ˆy®?†Úœ?†!;?‡«Î?‰V_?ˆ7Ü?…›ß?…Ä#?ˆOá?‰Í[?ŠŒÛ?Œ$?–Ñ?Ž‡Ÿ?Ž€?Œ’s?‰ -~?‡?ˆIW?Šé)?/“?ŽXÞ?Ž&?H)?; ?Ûý?\?‹ÞÁ?‹cD?Û%?•o? I…?¥³?ž}?”(L?õÔ?Šáß?‹3?Žc¡?‘@+?‘ðH?ö›?4?Œit?Š­(?‹µ?Ž±ø?­˜?àš?¹>?aR?Ö³?J)?‘?È?5?Œ!²?ú??Ò?â¬?kí?y?Žñ?ÐÎ?Ù‡?ã?xQ?ñî?"C?Ž{?m?‘b?’òß?”?” ™?“(½?’1.?’?“±Ø?“ûj?’Õ¤?¾r?¶1?‘xm?”Z(?–?–D ?•Ô?”øÂ?”¹?”mÃ?•«3?•î¹?”Ï…?“Ù,?”%±?•Aà?–gå?–·½?•O?“,|?“9?•¶í?—áŽ?˜˜×?˜§‰?˜=a?—†i?—Z ?—”½?—•Ý?—¾?—{I?—Ar?—2&?—½·?˜±?—Âî?—‹?—œ?–ýC?•®(?•È?•µ?–€S?–F^?”ò’?“üz?”'?”kr?“Ø?’F9?‘I?’i"?•ð?˜¡?š1&?šÊà?šNË?™³–?™ŸÕ?™£á?™e-?™2Ÿ?˜¦à?–ÂK?“¿}?’X@?”è?•ïI?•Sp?“ìI?” Ê?•Šž?—Yš?˜Ÿ8?™]À?™ÿ…?™×Ó?˜j -?—b?—|ê?™"J?šNh?š¬¹?š6É?˜;?• ¸?“¤q?•?—_?˜­×?™Y?™º?˜ûM?˜«³?—÷?—Z?–+À?•d¤?•þ?–’b?—u"?—éN?—½€?—OW?—6î?–ç?–µÕ?—Žþ?˜ŒQ?˜¾ª?˜mp?˜)É?—êæ?—8H?–""?•pñ?•¼í?–‰i?—#?—“š?˜( ?˜°›?˜r?—š2?—+?—[Õ?—g4?–˹?–ZÝ?––^?–©?–Œ‡?–ÅÁ?–«?•à?•Bg?•Ù?•OÙ?•Ò\?•×?•2Ü?”ø¿?•”Æ?•Èn?•(?”$?”¤7?”Çi?”Ž%?”œé?”úÏ?•D|?•Q>?”ë×?”Q?“²A?’íð?’–æ?’øl?“¾K?”7!?“æN?“™?’:?‘ñ%?’šš?“[ ?“ê×?”O?”B©?“ç?“hÇ?’ɦ?’gá?’#¼?‘ ª?¹4? ?ø?‘z;?’ Ö?‘ñ¶?‘Q^?ÀÇ?“ ?5?oŒ?ŽÿV?;?¨?õW?3ì?}²?¨5?ú?Ê?¦|?·º?åA?‘U‹?‘ŸÚ?‘´y?‘ÔW?‘û|?’~?‘õ¥?‘ 1?én?qy?ŽˆH?O«?l?³ä?•?½›?ðý?‘}?‘C¸?‘Žý?‘–1?‘»Q?’# ?’v}?’«Æ?’íÔ?’õ:?’Ý?’H‚?’›à?“ ?“2m?“ -?’Ø0?“ —?“Zý?“S(?’þ?’®°?’¸K?’Àj?’²˜?“&8?“è4?”sx?”¨£?”Ìå?• \?•@?•{k?•æÚ?–¬?•Þ?•ÔÂ?–(¸?–t?–‹;?–wÓ?–ŽŽ?–ÐÍ?—8?—å8?˜lz?˜63?—5R?•Í ?”Áã?”|’?”aÁ?”ì?“þ?“ü??“î™?”ä?”>‡?”u?” À?”§à?”“s?”8?“Ùê?“ä°?”)=?”*y?“û­?“ÆÙ?“|*?“[œ?“a«?“{‡?“çD?”nb?”ÅE?”ÄÒ?”ŠZ?”Wî?”.‹?“ÞÝ?“½@?” î?”_Ú?”Iˆ?“¿ª?“0×?“EÜ?“˜{?“‹`?“Q“?“ô?“'?“‚Ž?“Ü«?” %?”E?”1?”?½?”:D?“ï ?…°}?„º6?„ð÷?…î?†i?…Àä?…9 ?ƒÆ±?‚À?‚ð—?€Êd?|2í?€T2?„D?…Y]?…Zí?…¥Ý?…`?„é#?„•ü?ƒo?‚6%?‚ õ?„B7?„é†?„ѽ?„ÈŸ?„S?„aN?„ô€?…qƒ?…8Í?…WØ?…ßÑ?…ò?…¶€?…¢G?…˜C?…Ja?„Ô??„lk?„”?ƒÎ ?ƒØ?ƒVý?ôñ?€–U?‚a?„†?…N‹?…XÎ?…Œz?…=v?„Ví?ƒàO?ƒÊœ?ƒãA?„‘¬?…!+?…OD?„üˆ?„PC?„û?„ -½?„ Š?ƒý«?‚uÓ?­ì?ƒ$3?„Ä?„[ ?„?‚;–?€Š?€Ã?‚û?‚¿ -?‚?‚g?ƒ½º?ƒ÷D?ƒÿ?‚å0?ƒ9ž?ƒˆä?„!Ê?„X3?ƒ©ƒ?‚1?‚„!?ƒnÙ?ƒ^Ž?¿z?€}B?óm?ƒV²?÷ç?€¢¬?ÍÂ?ƒ6?ƒÔ$?„-¾?„U?„[³?ƒ»?÷¾?…ù?E?‚UÃ?„±?ƒì…?ƒB¯?Øf?+ˆ?~ô -?æ%?ƒQ"?ƒX…?‚ôþ?‚e?‚&.?‚›(?ƒ1?ƒ`?ƒKß?ƒ‡¤?ƒr9?ƒ?‚¡S?Ä«?€RÔ?€[?ñý?‚àÛ?‚×€?‚—ò?‚ Ø?‚Ït?‚¸Æ?‚{—?‚n?‚—Ï?‚«%?‚¥f?‚œG?‚;†?#?€Uò?€í$?,?€ÏF?L½?Óõ?18?€P?€ø?‚7ð?‚Ž?‚9@?׳?» ?éÁ?‚;B?‚_¾?‚8H?‚'?öj?ë?Åÿ?$Ø? M?|n¼?~‹¨?=?–c?|]?|’Ü?{Ì_?zû9?| 4?}è…?~§|?~Äo?~îG?~£ø?~_X?~^?{í®?ySˆ?zX?}2¡?}÷±?~6º?~?|Õ?{¸ô?|c™?}ƒ³?}í¡?~9T?}ðf?}"´?|õŠ?}<;?|ø^?|h?|ã?{ÊR?{ò§?|¢Ì?}PN?}–«?}^‡?|ñ=?|õ+?}M?}Öi?}æü?}Yf?|¡é?{i£?yó¢?zUI?{†?{Ë€?|7¹?|»b?|’?|%5?|W?|YJ?|Ae?|!è?{Äx?zðd?zþá?{e>?{?{ Ÿ?{N¯?{KÆ?zÎö?z.=?zÂ?z4'?zH-?z?zm?z™±?{l?{àö?{« ?{1?yþ~?yYé?yU&?ynU?y3?yó?xñ?vô©?wQ?x7Ð?y•7?yüs?y x?yrœ?y°?yìã?yúi?yx0?x¸í?xñÌ?y³Ø?yìu?z(?z?€?yÔJ?y†r?yh?yƒÿ?yª­?yy?yTè?ysÙ?y|J?y€)?yK%?y<1?yŒ¶?yÎ(?ys;?y a?xó?y!?yž—?yÍî?y°=?yEC?yl?y'¦?yS”?yy5?yi?yÞö?zO¡?z¾?y–µ?y^?xÀ?xªÑ?xá·?x©‘?xÃH?yšþ?z??yÕ?y“ä?y³j?yæÆ?y™¡?ykÌ?y#?zy?z”?zôº?zx?z!@?zŒ,?z×)?zÀÙ?z’Û?zB,?zbÂ?zËÿ?{©?{W?zå?zL¢?zNˆ?zSK?yêS?z?zz`?zf?zoÌ?z½:?z¥¼?zn?zZÃ?zJ?zTa?z«?zúÁ?{?G?{pÓ?{Žs?{˜?z ¯?zXÝ?yö?y|?x¥‹?y¬?ysá?yb0?y&l?xÞâ?x5Â?x4°?wû+?vÀñ?w½?x6L?x~…?xK†?x)¤?wÛÞ?w±?wÀQ?wÆâ?x`?xi®?xÊš?x«X?xDò?wü>?w±?w¢N?wm?uÔþ?s„`?rEØ?s5â?p›R?iÓó?jV—?p>?r•?n9?k«¶?på‡?t¯:?v©?v‘f?vH÷?v?uéß?u†a?u ?t\/?t??s¼­?rçÓ?rà‰?sp…?sÐ?s׌?t ó?sñ?s¥Ô?s±6?s¸ë?s¡ø?sm?rYŸ?r2ñ?q§²?qXo?qˆ?q§?r'H?rN“?qkà?péÍ?q(%?qˆÏ?q¦ú?q‘×?q¼!?q@™?pœö?q?qRw?pËF?pT—?oàï?o…?oh)?oJ@?o8_?oZÀ?oÝ?n/ˆ?mãn?n¥x?oç?obî?ow?o_w?o?ou¾?oFí?nõ$?nd?mÄR?m½/?n\X?nI?noä?n¨ë?nþî?nòH?n®ó?n˜Š?nˆ??nG?mÁ?lÉ'?lF#?l«þ?lcÚ?l‚?lw[?l,ÿ?k@Ú?kP×?kÐæ?kŒ@?k{+?kT'?k1b?k?@?ksd?k–é?kÏ ?lÞ?k½z?k?j®B?j‰?jkÍ?j?j•??j”?jw?jk¤?j£?jRC?j?j,o?jµ?jO?ió?j]9?j±è?j•Û?j'?iP—?iAÒ?ieË?i/]?hýA?h@Ä?h?hö–?ic?i[È?iQ;?hÑê?i {?i—;?kŒ1?nù$?mõÅ?j:?hw“?hSï?hÖm?hÔI?hl²?gÊ4?g¸Â?hJ`?h®á?i?ii¯?iÏ2?hšÏ?e¤‚?e=q?gØ -?iOT?h©¡?h¿?hª?ha¤?hí¿?h£!?gõL?h?h‰?eû?bs¨?båø?fT?g¢™?g£G?g•?f¦4?fÙÃ?g³¹?fû|?bW?`Hš?c3ì?dàÆ?cBŒ?c®õ?e£°?f± -?fÔ ?fj ?eÒ?e·Ü?f ­?f -¹?eëÞ?eg„?eå?cµI?_·1?^iV?b¦?dT ?d'_?b¬û?b‡ -?dIÕ?dàa?d}©?cæE?d½?d¦?d’µ?dÏ?d˜ä?d;G?d?ä?cìR?cÊ?a×a?`Eå?a˜ñ?cšÆ?cÆ\?c^è?bš3?a´ä?aÐ?bφ?c&4?b»P?b».?bïØ?b˜K?bX;?a²7?a¶,?bŽ?b~^?aâT?aü8?b§j?c"-?bØ2?b^v?aå‚?`Ÿx?^oO?^K™?`J?`Û4?`NE?_¬—?_› ?`/?`0«?`7 ?`•?_ü0?`?`¸ ?`R"?^®?\v?\Ûn?]L«?^M¹?_àò?`jï?_d?^Üi?^-â?^¬å?_|µ?^ó?\ ¥?Uws?RT‰?V?[IÃ?\Y¦?[›'?\Ê?\òx?\úà?[ì›?ZÝ?Z2›?Z»C?[î?[n†?\l?\UP?[Wð?Zl-?Zœ?YåY?YÞü?[Uá?[‹?\t?\Ú‘?];n?\Þ+?[…«?ZCb?Z‚?ZY|?Y©t?ZJ'?[M^?[7­?[±?[ìR?[Ò{?\Dé?\³8?\Êà?\1!?Zåå?YÄ8?Y¥ ?ZO?[_?[ô­?\Ã?[ËÚ?[n?Yžà?Y¡É?[Á?[z5?[?ZHÄ?Zvã?Z¹‹?Zc?Z¼?Z -]?ZB?Zo?Z]5?Z± ?Zþ³?[8€?[T ?[P?Z¡²?ZL;?Z„Ó?ZÛÒ?Zià?YÒõ?YŒ(?Y±|?Yµ@?YT¯?Y|þ?Y9Š?WB?VžÄ?X|¨?Yb?M|†?LÇ&?LE ?L…?Lȃ?Lé?L¤?LO”?K6…?K€½?L-;?L+ö?Kü|?L`?Jwÿ?HŠ?Iλ?Jÿ?K.?KB¯?K×í?Lq(?L–?K¶?Kód?K˜%?Jã?K?KD ?Kå?JN?I{?I‡Ä?J>Ï?Jªâ?JÐs?KVü?K¥S?KN?Jz?J'Â?Iðí‡?=Œƒ??–ü?AÇû?BŽ%?BŽ3?B%?BÍ?B]Ü?B,?BJ?BŽ -?BÆ?A†?@s‰?A!I?@¿??êù??òy?@¿ö?@¼›??Å??¶q?@ -??„Ë?>µ¿??Ô??Ø%??wÓ?>É??k–?@Y­?@ÌÒ?@kw??-\?>v#?>­??åÍ?@½??C’??fæ??˜??2/?>ÑØ?>¶æ?>ÚÓ?>dZ?>R4?>Ž¢?=ù?=[Œ?=L‘?=ËŽ?>/ì?>8?=Ÿ?=›?="?<Š‘?Bƒ?>A?=¬°?=#u?<@?=Ì?=?­?<æ4?=t?=o@?=)'?=L?=²ö?=9¶?<¹«?=u”?=ö?=¦Ÿ?<Õ?<"Ö?;@f?9¨?9§‰?9Ù?:/?;Ð?; ¨?9ÿæ?;í?<´1?=!ÿ?<”™?:3Ì?9Ré?;+?<Âð?=6T?=m1?=I?<÷Ž?þ?:wÃ?8É?5Z?7Ë—?96¥?7_?6õ?: ?;‡Æ?<—µ?:bç?8gƒ?;%Ì?8š°?3¢Ÿ?6÷’?:ŠÎ?:(À?8¬æ?9=#?::†?9>Ø?7Ó-?4Çé?46¬?7Pÿ?8µÅ?9Ó¤?;è×?<Œó?; ¹?9Dî?:*ô?8 î?7‰Ÿ?9H?8K˜?8Šè?;-º?9ãX?6Ú±?8Âä?:ð™?;=L?;ÌK?:¤m?6a?65F?:2Ö?;I?;Ê?3”X?3*¥?3n?4²±?5¢/?5:O?6*?6~x?5q›?4…F?5ù?5{ž?4¾‹?4&Ç?2ºf?3q]?4²Ã?3þ!?3× ?4¬?4v³?3\â?2©ñ?3ñ2?4ƒ'?4³ ?56B?4È?4}—?4£®?3äD?3»Y?4Ü?3®I?3S\?2ê‘?3)¹?3o½?4;l?4¤m?46Ð?3äù?3Æà?3Á³?3(N?2¥?2>¸?2Sÿ?24±?2‰Ü?2 5?2“ò?2Ö?2ºu?2×?2j?1ñÍ?2ˆv?2.C?1è?2D?1ÚO?1‹?0Ô,?/ˆ?0é0?1öd?2/H?2%g?1Îp?1Kr?1œ•?0à§?.r?/Ëõ?0¼?0Pü?1¨?2'w?0Ì•?.Ó?. „?/óÉ?0óË?0Wœ?/[D?/#É?0X?0èe?0ûø?0¡–?0?¹?0Y¸?0d¸?/Á–?0?0A£?/Ÿ!?.õ?,ª&?.JN?-?•?,ãÁ?.¢ ?.òå?/Õ—?.ƒ(?.‚Ÿ?0<û?.•?-ÿv?/é„?0\U?0:?.“*?+õb?+Â?-î:?0M?0Ac?/ò ?/Fv?/'?/‘j?/QZ?-»Ÿ?-cs?-ù#?."}?.•j?-“Å?.0Í?.­º?,bÖ?(ž³?(Â?)ÑÖ?-Xø?.”7?.¹?.È?.®?.­ª?.y4?.Eg?.9–?-ôŠ?-2w?-u?.Ô?-Éb?-Ë_?-êÍ?-Ô?,”5?)J´?'g{?%J_?#¦¶?$Ë??$v\?!1D?'?+ ·?*wF?+“4?,9b?,¦d?,o¤?*°?(êl?*ø’?+ñ?*E?*BÞ?*?(?*®?*×b?+Þ?)Òî?';?'{W?*Ú?+¬”?+ºò?+†®?)dâ?$Üs?$ÑÈ?')´?)Üã?+Zã?*þ?)èÉ?'œ"?&qP?&È)?(n?*š5?+—?*¢~?*¶¨?*ÀT?*†j?)Ä??'ë`?'cÍ?%”ý?#’.?$Á?'™?(æ ?)"?(Ô -?($K?'éÄ?(u"?(­¬?(¬ ?()?'Õ×?&?$˜ ?$@9?%ëµ?&å?&¼%?&í?'é?&ù ?&¤¶?%Û]?&¼?&‡­?&‡ ?%ò†?%œF?%În?%ø?%¯Â?%y‰?& ?&]ß?&*»?&}?&C–?%ª>?%~Y?%„¸?%a¦?%(Î?%Qz?$±K?$ |?#p’?#Z?#Û?#Hý?"‹C?"Ͼ?#è_?$)½?#›Z?#'ù?#º?#2A?"_·?"ïš?#+ó?"Å7?"Ž+?"{?!Ü¿?!Þz?!Õé?!}œ?!د?" ?!pö?!~(?!þe?!nš? ÏI? u¦? \Û?†Ã?ìû?˜?  ?TŠ?;+?m‹? Àž?èª?r? SÊ?\’?J7?yc?ÇÞ?—@? -†?ÞÜ?¢é?H@?ä©?2?t½?i™?<Ê?vÒ?ì?>Å?þ]?;?Vn?„ë?Œÿ?¾á?óÄ?qà?óF?Ð?çu?oÚ?(„? ?ì -?!?Þ6?jf? „?®^?ç?œ?X‰?t†?Žú?PA?ýä?šÙ?á?2?€?eÏ?ûo?ùÇ?:F?à? ?,D?´¬?UÚ?Ê[?U&?ƒµ?²?"??*¢?ÞÄ?Ý?Ot?vÍ?ì?Ú±?^©?;Ü?,^?÷d?Ë-?)«?Ób?¥Ý?S?!Ì?{ä?в?ç?V?&ž?Ú+?ƒ{?’•?õÚ?A)?2A?¿'?>±?U>?²?Ø?»X?ðŸ?ɱ?Gâ?ª?Mx?¼©?¡C?ˆk?6?Ƽ?£ ?nE?M?à?ýÀ?øJ?šž?‰Š?ì”?èP?û1?ÓW?R6?º?Š­?zä?³?–G?Md?çØ?¬’?ßó?CE?AÀ?OE?Œ]?‡?Ô²?þ‡?¾?UÄ?·!?®2?ÉK?Àg?¦ä?œ?gè?•?‘ -?¤¬?Y?X™?;?èb?×ç?IÃ?Ë?È~?'ø?ëj?‹^?Ov?q‹??=Õ?F?Äž?l?^ ?¾?y*?¾ê?Ç-?àÛ? -?í1?¿£?o ? ö?õ?·?rË?*i?¾?®¨?sÚ?^ï?Rš?è-?î?~?Â?µ‡?—Ë?ó#? \?>×?L?OŠ?"=?ŒI?(ø?$é?}´?u:?;Ó?0Ì?Ú? ‹?œ"?I-?Ç€?Š?¥?^?6è?Ë0?w?«e?ë?E?WÍ?¼Ð?È?¿?Æ[?Ä?“Ã?é?ã?Ä ?œ?«Á?bÄ?w;?ˆì?Oa?3?‹?V?¹Ž?ö?9¼? –?C¦?4j?¸ ?·Ì?#Ñ?öá?= ?j³?“A?ÃÆ?é?(5?='? Õ? |â?ñ(??ˆz? wr? Q¾? ŽË? ð‰? ðø? “Í? „Ž? hÔ? ¾r? ˆ? µ”? ¥? |Š? [? K0? g? 0? §? ¢L? ôÔ? -l? Ž? 9À? ?¤? 7? àÝ? Ÿ? m#? ÔF? -/? -±D? 4'? ú? €? º? ÈM? Ê? ‘ ? -Ý¥? -¬F? -õs? ? -Ó¼?Ä>÷fN>ûë ?S°? ÷!? -$? -µF? -f? -D\? ƒX? Ü? è0? -e¥? -2á? ;ˆ?W?Z9?ï!? §5? Ek?¢:?9 ?/ý>èàå>ÊÖ“>ò¼? /?c ?<›?Šâ?Eó?^ù?T?Æÿ?çá?š*?·â?0?r*?ô‰?Ö@?ˆÀ?;‚?‚?¤â?£ó?©?Õ‚?]K?0^?›÷?}?åµ?a ?¡¨?—?Ò¶?Ÿî?þn?^—?U?è¶?•?áð?þ—?áp? ‘?ì0?_×?€×?ŠO?*Û?ƒÖ?.À?cž?’À?¼A?¢?Ìi?Éà?:â?Íu?;>þ8î>Ù!…>Ú« >üÈh?ßa?Þ?¡? -F?Ë?«6?ã¶?$ñ?Qk?‘ò?Qá?˜?Ó|?®.?µ?²ø?«³?—­?¢,?†ë?X?ƒ?é]?Ø?½†?ü?Ò?£s??8??k?9Ð?KÉ??‘¡?&¶?3?…?$?°ò?wé?üâ?/t?Q¼?® ?¹A?o ?Å´?ó×?½š?—z?¸ë?f? -ö?~ñ?äf?Þ%?Ñ?”‰?¸ß?¸ï?p??ðg?n4?NC??ü,?”,>üÿò? ø?ܧ?º‰?²U?ð ?ã?–X?cX>ÿ³T?í;?¦Ä?ßœ?š±?4?‘4?Ãí?«Q?Å?ÙŽ?£ì?º$?™¶?G?ïO??E>üj>òà>êLç>ó>ønB>þ@=?‰R? 5?-É?p?mÿ?_’? ‘?ýú?èr?óÔ?XE?@?´?Z.?j?Ë’?Ù©?ål?U? >ûº×?ÞÒ?Jd?ïÀ>ÿÙ·?3ª>þ.>ø³‹>÷þ$?%?z?×y?‚?þ¨?už>ÿ_‘>û@>ü">þ i?¢¹?0?‚7?à?`—?1¶?Œ#>ü^¶>ûl_>ÿN¤?yÌ>þ¨<>úfZ>ûFE>ýÆ5?v>þœÐ>þ¯>>ÿG»>þ‡Ö>þGû>ý£€>ûÂä>ö[é>÷c€>û€¹>ùÝÏ>óÖò>ë;z>åP4>ÙK“>ѬÑ>âGÌ>í¼ô>ïµk>óÎê>÷¨Ñ>ùŒÁ>ùûd>û±>ûYö>øîL>ú~Á>ü`Ø>üÙ/>ü£~>üÐö>üA>úƒ>û¸>üŸT>ûñr>÷Ÿ>ãI>ç{Ù>ùäT>ü!è>û2þ>û-:>ûR¿>ø/b>ìJÒ>î‰>ù -Ê>ú·²>õ)>äcÇ>íÅ>ô\ì>ç=Ì>ðg.>õYP>öxÆ>÷0Â>öEc>öï‰>õk²>èùD>ïfJ>öëù>òø<>óôå>÷g÷>÷†û>öç‚>÷yd>÷gä>÷Ìà>øy>÷8³>÷A>öQõ>ö}:>ól>ïGU>óÉ‘>ö²£>öA>õ¡b>ö>öT >õmV>òî–>ôg>ô\F>óE3>ð÷™>ð•>ñ–‡>òj˜>ñëñ>ðV5>ó$>ós­>ó7Î>óHÍ>òï6>ó³>ñ@Ý>ïò¸>ðð?>ð4>ïåä>ëõ4>æï%>⹦>èÕ>è%>åý?>ꊣ>æï—>Þ\b>Ê~Ø>äÓ>Øt>ã×>ã‘+>á‹—>êè>ê–n>ç2&>èCf>ì”a>ìë£>èL<>ãæÛ>äû>ç&€>éÜ>è_8>ê1–>î7>îî$>îÅ>ï‰>ï[u>î9>îqÄ>îÅÈ>îz>í"—>êTÇ>ëª>ìJ6>ëd >ìÁŠ>íÞí>íá>í&E>ìLÐ>ì?â>ë¦3>ìtÖ>ìÓ”>é[/>éø>ëë>ëSè>ë• >ìV>ìà×>ì"ƒ>ê;>ì \>ì:Ê>ì%÷>ê{Û>é<À>êÕ>èV>è8Â>ê£>éU>çÃ?>æ¯>ç~>éù\>곤>é×Ý>èÁ»>åâ¬>èþu>ê†>è¡þ>èHÚ>è†ù>çŠW>æ‹\>ç–>媽>æES>è\Ê>çL˜>äaz>áí&>Ô‹">ÝbÝ>ãŽÔ>ÜLÂ>Ð×Ý>Þù>åû>ãow>ãxj>æ•ë>æÒ‰>ä/o>á|8>âG >á3w>Úú'>áÕ>ã€>ß W>ßlç>ã!×>ãâ#>àÔV>áBg>ãæ{>äŒs>áä>à_^>âç>äe>ãe[>ã*Ä>ãÿ>äR>ãÔb>ã¨z>ã`f>â>âÈ_>ãÌ>ã!>á– >â>ã >âZ>àRá>Þ² >á>á«>àíÅ>á\œ>á^¿>ßoU>ßž>áo>ßã>ݯ‡>Ü­>݃o>Û^8>ÙÐG>Ùoµ>Öì≯·h>¼c”>ÍŒ}>ÔÉ>Øb?>Ùý%>ÛÐE>ÜÏ>ÛÛö>Ý'>Ý…%>Ùcw>ÙÎ5>ÚÀÚ>ÜŽ >ÞN’>ÞMý>Þ€´>ݪ¢>ÝJ»>Þ5Ï>Ýë¯>Ü[ü>Üäµ>Ü?E>Ú×Á>Ó¢q>ÕÅá>Ùd>ÜAá>Ýë¨>Ýá@>ÝF >Û^Ð>ÑÃÔ>ÕvÈ>Ù)>Ö…{>Û‚‹>Û>Ö¶¤>×íZ>Ø -Ê>Ú"¶>ÛØà>Û/v>Ù-ˆ>ÖFª>×2>×Öê>×À>ËŽ;>ÒÄ>Ù°Í>Ùqs>ÚZ+>Ù£Ð>Ö“S>ÖD?>Ô¨]>Ö€‘>Õeî>×v>ØÙþ>×.>Ô8á>Ô+®>Ö„>Ø>Ø^ô>Øus>×:¦>Öi‡>ÖÛ>ØÎO>ج¹>Ø®ñ>Ø.š>Ø -F>×öì>Öʘ>×,³>ÖF×>Õ‚Ñ>×û>Õ›>Òhu>Í\>ј(>Ô;>Ô1ç>ÒÚ>Ô´l>Öe>ÖÊ_>ÖCˆ>ÕŒŽ>ÕQý>Ñ*F>Ò¼~>Ô2³>Ó’Î>Ôë>Ö >Ö³>Õ|â>Ôk^>ÑâÆ>ÑdÙ>ÏÅ->Ò…>Ôeþ>Ô&¹>Ò$$>ÑMú>ÑwÀ>Ôž>ÔDf>ÓñÎ>Ó<Þ>ÓLÝ>Óè>Ó«Ä>ÓL?>ѱ>Ò‹ >Ñõæ>ÑÒý>Ò2j>ÐK>Ð(#>Ò/>Ñ”ˆ>Ñ>Ò Õ>ÒKè>Ñ ­>Ð+å>α*>Îõ°>νÏ>ÌHÂ>ÌùG>ÐÇ>Ñ®>ÐÈ`>Ð.š>ÐAÁ>Ñ-Y>Ñ/c>ÏÈ>Ïæº>Ð6²>ͱ>È>>ÊÌ>Ï0 >Ï/©>Êå>Ìçl>θn>ÍæÔ>ÎÂñ>ÍÔU>Êb>Ézä>Ìê¯>Ï2‘>ΠÕ>ÍÕ·>ÎBd>Í>Ä>Ç4¿>ÊЫ>Î@>Î >Ì*Ò>ÊÆt>ÌÖð>Í9Æ>Ëäœ>ËÑ>Ì_µ>Ì2}>Ì>˽à>ËÙ>Ì|»>Ì:>ËÁj>Ì$¯>Ëîw>Ë›>ËvÉ>ËVà>ËD{>ÊŒ3>ÊâP>ËR±>É€û>ÉÄ>Çô¶>ÉWr>ÉÓ>Êo4>ʧß>Ê'p>Êf>Ê*ð>ÉøP>ÉL‘>ÈÙó>ÈéJ>ÆíP>Æî½>Æøþ>Å•¾>ÅÂ>Áw>Âì€>Âz›>¿±á>¸ç*>§I>¤yõ>¶Ü>¾´>¿ã>¨>ć>Äk¶>Äœ´>Ä1Ï>Æ)…>ÆÀ¤>Æ…>Æì>ÆÐ>ÅV>ÄÖõ>ÆN}>Æ>Ƭh>ÆÚ<>ÆÙ=>ÆÙ>Æî>Ä ý>Š²>Ѩ>ÅŽ›>ÄFA>Äëd>Å´ï>Å;¤>ÀV>½•Š>Ärå>ÅLz>ÅBN>Å™>Ä’>ÄÒv>Ä€Ï>ÂFá>¿­í>ÃY°>Ä<š>Ãzu>Â6 >ÂÜ>Ä)¤>Á¾(>¾Ú”>Â1>ÃCü>Ã&>Âtƒ>Ã\Š>Ã@œ>ÂLV>¼ˆƒ>¼J=>ÀP÷>ÂKÊ>À›ë>À“>Áìa>Á¼à>Á7À>ÀôÁ>ÁH >À`>Á¶2>Á>¼r8>½sŸ>ÀÔ£>Á`>ÀÛ|>ÀÂ>ÀõÎ>Át>À¨ê>¿>¿px>À=7>½Ñ4>¾U‚>À=«>ÀA>À-?>Àè>¿Øÿ>¿ Ø>¿<‡>¿1T>¿|×>¿g>¾Å>¾Q‚>¿H>¿)2>¾õ+>¾§}>¼ >¸¤Ï>½>¾©×>¾Qb>½y>¼}Ò>¼½>½ß>½.Ô>¼–u>»3>½¾>½sÖ>½()>½ >»FÙ>´˜>µnì>¹¢ >¼_>¼š>»y¦>¹û>¶þ×>ºHÃ>º¬¸>»®À>ºÊ'>»C >»™Ð>»^B>ºÖ >ºAÕ>º´ò>µÿp>µ¡7>ºˆÉ>¸t¹>¸^”>ºx >ºbT>ºF¾>¹ªÇ>¹¦ß>¸Êy>¶I>¹U>¹šO>¹Í>·¯H>¸›>¹km>¹yÝ>¸û}>¸ûô>¸éÌ>¶²•>´ûù>¶Eï>¸¸c>¸ˆ¥>·â«>¸–>·ïù>·êK>¸ -¯>¶QÑ>µX±>µéj>°$X>ª R>¬¿ >±á†>¶Í >·7:>³úv>±›Ã>µ¶—>¶›Ð>¶Ôr>¶cC>¶A¤>´®>´âU>µ‰ü>µÖÈ>µjê>µh>´{Ø>²‚?>µ÷>µ„>³?Q>³2>³à¢>²­>²©0>²Ì>´E>´OF>²EÅ>°[>²:>³·>³½>±x>³/®>´F >´>³Ì@>³ÎÙ>³->±—z>²ó>³‘t>³_ú>³XÖ>²êl>±p>±P¬>²%f>°Ø÷>¬¢^>§®>®€ >²wu>²t5>²*“>±sC>±Ée>¬Ý«>§‚$>®ÆS>±Cê>°>°äŒ>°Î•>±ø>±Y9>±ª>¬Ò>>¬>¯tT>®Br>°ƒÍ>°Ãp>°¦>>°XÜ>°g>¯àÌ>°ë>¯á>>¯—'>®qÉ>§N >¬3J>¯K>®ù>¯k>®´†>®ÃZ>®¡=>«´õ>Ì[>H’>§+>œ.Á>ž´->¨8Ÿ>­–™>¬·†>­ ”>ªðí>¢à~>ªÿc>­„u>­'²>«S´>¬zÙ>­4°>«OŠ>£cj>ŸÊM>©§ç>¬¨Ô>¬Ûs>¬ñ>«9ñ>©±³>¨Ñ“>£»'>¦¢œ>¥>ªï<>«¤^>«@ê>«8Ž>¨úè>©Š >«BY>«_d>«6Ð>ªáÉ>¨dc>¤Ø³>¡á?>¨–>ª¡ò>©ã>¨x\>©]b>©R.>©Žò>©ÜÜ>¤±«>žqÄ>§|>¨ò^>¥ºþ>¡&ä>¦Ï‡>žGW> fÜ>§”B>§">§®V>¨°>§´>£Åˆ>§Uƒ>¨ŠY>¨¡>¨–è>¨ƒâ>¨E>¥Ì>£˜H>¥0Ì>˜ð>Ÿæ >¦p¼>§:v>¦ì>¤W>Ÿ™ç>¡ÎÅ>¦ø>¤Çì>¤H¯>£Áh>¥Õj>¦'>¥yD>¤’g>¥z>¤¥>›Þð>žà]>¢ß0>¢¹õ>¡ÝÐ>ŸÞ{>ž¬¢>œ5ì>–è®>‡ºµ>ƒå>”¥½>›@>žÚ>ŸÑ>œ6>œð>\> •>¡¤è>x>‹I>¢>¢lL>¢Cž> [>™-\>›l©>žp>¡@">¢bK>¢v>¢>¡¡à>¢f>¡ŠD>¡r>¡Õ>¡ÎŸ>Ÿ„>£>š„¹>Ûà> šá>¡Âù>¡> Zb> ãF> ÿ>ŸåY>Ÿ¾0> ° >ŸKl>Ÿ‹1> î¤> Gæ>žÏŽ>žá> Œª> €¶> ‡>Ÿ’M>Ÿ¢&>Ÿôð> R9>Ÿ{B>ž«s>Ÿó>Ÿ°>Ÿ!Ù>žhÇ>Ÿƒè>Ÿ ->Ÿ!ë>ž¦ >žô >žïÒ>ž¼T>žy>ž[ë>žIÆ>š¹5>œÃ >v`>œê$>š97>šN‰>›‰Ù>Öà>üø>½Â>›J>œO{>&>pÑ>œòO>›0ß>œg>®>‰—>$X>œ´I>œbµ>œy>œ%w>›ýb>š|>•h >–R>›ëÚ>œP>™)W>™º>˜€›>›‰>›ïà>œ >šêA>™õ7>›Ÿ1>›‰Ê>›jå>›H»>šk¹>ššÃ>›€ ->› - >› H>šé>™´>™>šo³>•ïò>‘@<>•ö>™mÂ>˜u3>š)ó>š~&>š8v>šBˆ>™ÏX>˜­i>˜Ä/>™è’>˜€y>”lö>“’q>—@æ>—^>•iM>–¸×>—ÒÄ>˜9>–:>–Ÿu>—Ž¸>—„ü>˜E>—òM>˜M>˜K~>’…>û>•4>”£ê>–!¹>—+>—#>—Í>–ÿ>–§®>”Š>“®…>–§Ú>—=¿>–õH>–Gç>–^>Xy>“a¨>•$—>b³> ">’£a>‘Žñ>‘ÇÆ>•'>”V>‘¿ü>ÑZ>>š>’y¢>“þ¥>’Ù >‘>”°æ>“êó>‘Ù>”u>”^—>•>”ÂÏ>““M>GÚ>“F!>‘£Ô>Žà·>l9>“Ûy>”}à>“¼#>“ñ¡>”#œ>”>”-¤>“J>’DÝ>“À >“1t>’˜>‘ +>‘ùÙ>“k}>“Lc>’‘¥>’ëê>“6>‘@~>‘žà>’È>’Ÿè>’¾>’P>Qr>¸Ó>>‘»„>‘OB>‘ÿÿ>‘î}>‘ S>5Ñ>ÜÂ>‘ë~>‘ßé>‘v>•{>Ž¨>S>‘%ý>‘#:>šÚ>‘ û>õà>µ`>wM>ƒe>cÝ>Ž‘r>„é>†0>ˆ²>Œúr>õŽ>ÿI>Ž€ >Œ«ñ>ˆ®H>ˆ…ß>ż>û>Šk;>Ž`é>H¾>‹9>ŠqÚ>ŽéM>Žm>‰ÄÜ>‹7>Ž‡>3C>‹f>‹¯;>Š£Ï>‰ß>‚>Œ(m>Ž”>Šû>†ö[>Š;*>‹‡K>ØÌ>I°>Dl>Nc>‡—œ>‰¦<>Œ>>ŒÚ€>‹x>Œ >4M>Œç§>Œ¤à>Œ~;>ŒÓ>Œ’&>ŒN·>‹àP>Œ0õ>Œ <>Œ7Þ>‹¡V>‹k>‹g>‹Ú>‰„§>ƒV>…Kô>spÃ>„O>‹¯>‹‰{>‹6 >ŠÌ©>‰c>‡ÙÀ>ˆII>†w)>ˆ<>…S>Š>Š› >Š’">Šn+>Šs>†Ï¬>‡Ï>Š!>‰¾²>†’0>ˆœ >‰“:>†ÿ„>‡ú”>ˆ’>~Ž>‚¼E>‰3’>ˆéÑ>ƒÄÂ>…g>ˆ«À>ˆê>„´<>ˆ\,>ˆ½ú>ˆV>†Î5>ƒl>‡”>ˆ²Ÿ>ˆer>‡™Î>‡;ê>ƒ`œ>€>}Ø=>†b»>„}>¸ô>~EÓ>…‹b>‡g@>‡Bo>‡Bß>‡G>‡W]>‡H½>‡[ >‡%X>†ñ>††Ö>†®î>†âR>†Æ+>†gT>†nß>†nÔ>†’>„^2>Š‡$>™½>¥çV>¯Ò&>»±%>Åà >ż‹>º°‚>®XÛ>¨km>¥)r>šíÀ>‡>dò>N¡a>Yà¬>2b>›æä>²;H>¼u~>¹ ¥>¬¬>œÂÇ>ð€>…³>uN¾>hãV>s–;>Œd>£Zi>´d’>¹ÇZ>µ‚5>­E½>¦³ý>¤V>¢wœ>Ÿ>œÆº> .§>§A¬>«&æ>ªcS>©¼‰>ªå:>©2>¡-¹>–»Ò>‘ü >˜Cb>¨¤Ê>¼²>ÇÇ«>Ä5±>³j>ž…§> ®>ˆl<>Þ\>q)Ž>\ }>JÍß>Bc›>G—?>[3›>rò->~®}>yÏ>møx>iãÝ>hEn>Yëë> ñï>(ï>:úÉ>r‘>—cª>¬Yd>´ÐD>¶ƒÜ>¹Í>Â9.>Ìñ'>ÔŽà>Õ­«>ÑS->ÌH>Ë2>ÎQt>Ñn´>Ð…º>Ì€ >Éš>ÈQ6>ÃzK>·{>§R;>˜ÎÖ>uÑ>ŒC>xô>‘…>•N”>›få>£”v>©†•>©œ>¥#s>¤Ð>¨ð»>­ \>­7{>ª¯à>¨ >¥v>>¢~u>Ÿ]’>œ3`>™§d>š1‹>ŸæU>¨¼¾>°Ûw>·ì >¿[Ø>ÅÐ9>ÉCu>Êðè>Í >Îâ>Éãj>¿O¼>²>§pq>¢b>¢zr>¥fG>ª¿{>´áw>ÃL>ÐÇ>Ö=>× ->Õ -6>ÑX¤>ÌÙ·>ÇÚ8>ÁOp>¸ÃN>¯°>¤Ïf>™0Ä>ŒxÇ>"µ>s™«>l¾ñ>kê]>tî³>†H>–׶>¥Ix>­:™>°p?>²½å>´B¶>±à@>¬ˆ>ªŽ‰>´üÅ>É&>ÜÚØ>ç”.>ç_Ë>ßz}>Ö W>Ñè‹>Õ06>Út·>×wW>Ƹi>¬Ž>’tI>™ï>msœ>jøÈ>sM>`U>Šò…>•*>žÙ„>§™I>®4Ç>³E˜>¹M=>ÀóI>Å3˜>¾fî>«R>“e5>‚-•>{K>„–p>_>šs[>¡Ç>ªµ(>¸&>Ä—C>Æ¥h>½…>±¯>­.>>°]á>¹«>ÈbÒ>ØØà>ä#v>æþ >ãXç>Ûa>έ‹>¼â7>¨­X>–>‰è>‚Ê„>}Á>xM>zp>†Ú>–»©>¢ò*>¦—f>§øº>­×>µÇ>¹hü>¶~>­]‚>¤E˜>¡N>¥yÒ>© >¦( ->œ:Œ>’Á>ŠG>„b>€^˜>ƒKz>ŽGØ>Ï>§‘]>§=¥>›2d>Š Ý>{¶>sæ>z«o>„b7>Œó>¹T>’7>–~3> ¡’>«|3>±¼ò>µhÎ>¼È>Ê R>ÙJ÷>àªï>ÙêK>Èêþ>¹Oý>µ)¨>½4ÿ>É”½>Ñ… >Ñžõ>Ëò“>ÅÞØ>Æe»>ÑÇS>ä/[>ôP">üÄâ?\?é‡?V%?¹?J‘?b?\?q€>ûf…>ïj>èîH>í>øË„?h»?I­?q¨>øÚÄ>ëÄ3>â >áÞù>é° ->ñE>óC>ñ>ëK€>ãc >Üæj>ÙÌ·>ÙY%>ÛÍ >á^É>æŒÜ>çi¸>åßç>æÿ½>êGX>éˆÙ>ád>Õ»ä>Îár>ÓŽX>äŠ>ú'H?ëÃ? {a? 0? KH? dÊ?Ôð?…d?? ´í? -ë?µ?.l?â`?Ý&?ñI? -½?aÝ>û¥m>úÒ²>öùÍ>ç¤">Ôæ(>Îö>Ú”c>íwú>üS?b?%’?Td>øÞß>ëÓØ>ßÉ[>Ø Ç>Ø£¨>â×Ì>ñ²`>ý{å?Xµ?ûË>ü„¬>ò¶:>äl§>Ô<+>ʳÝ>Пj>älf>ùýî?Í.?i >üO>ñgê>æë1>ã |>è3z>ðÉ>ô̤>÷Þ>ø1ª>ïr>Ý\§>̪~>É2>Ô&<>ã±>ê|>èû.>ㄲ>Þ`È>Ü;ð>àBj>êàÞ>øT‡?ÈV?®>ÿYÙ>ê–>Í>²)ó>©™c>º9´>Ø´f>òÛ¸>ÿØ+?Œ¼?h¡?¦?žµ?Ïï?_˜>õ$ä>Ùð>¸Îø>žÙ‘>–­q>¦ñ9>ÈØ4>êá‹>þ¤v?*^>ôÎ*>ä >Ô¾Š>Åì>¹NÇ>³u>²Ú¥>±,>«Q[>ªUÄ>¶ý¯>ÐíÜØ?v? ¼?7Å>û~_>Þ‘O>Äž6>»ñò>Å>K>Ñc³>Õ“Ô>Ø‚>äù/>÷¬ ?ã¥?ß‘>ø±ÿ>öµô>ý»§>ÿÚ'>òg>ØÉy>Ás2>·[Ü>¾Y3>Ñé¡>éê??$ò?é­?t?Ïæ?âÛ?ã? -Ë]?XÜ>öóa>ê|>>áF>Úâ¨>؈>Ù€5>ݱ˜>äu¿>êÐã>ï¹U>ô">ôÕ‹>ëçÊ>ØCÂ>À¥>°³Æ>²\÷>Å8°>ÝÄÄ>ñÝô?Ûm?J“? ¶+?Ã?òg?‘¼>ñQâ>êÜ@>ïï$>÷Å>ö““>ó! >ù‰ ?k‰?ü,?wÇ?P?$?zš>ùbã>÷¶œ?Uì?ñü?÷ç>ÿ[>ò+B>á8|>ÆRQ>¤Û”>ŒÈ_>ˆ^>‘s^>žµ>«pæ>¹>ÆPl>Øg›>ò÷m?!Ã?âV?«8?‰S?²„>òž6>èÓÝ>ùE…? út? Ô?iº? Œ˜>þÆn>èOÉ>Ýëg>ÙÄ8>Õáó>ÕÜ9>ÞÔº>ëË_>ñ>êª >ã">çs:>öÅ~?Z?õ½? õÛ>ãœ\>Í,>¸“>°v>½¿l>Ù¼>õ M?? –? Ü? -›$?À®>÷ž€>ô•?ýÀ? æ?¹?í?í$?4Â>ì½K>Úÿa>Ù“>ßç>æ]o>í)>ð¤A>éÇì>Ü^ê>Ö]_>âBé>ý? µÐ? ÆÍ?hU?ˆÏ>þà>ø+l>í{x>㆔>ãÌÞ>òUC?ùE??˜?¤k?'$?v?~¯>øãÙ>ï)N>â*“>Ôê\>Ì®ò>Ëã§>Õ¶Ã>ë2?àš? öÂ? Yü? -ët?œà?,?’æpð>ä6H>>òÊc>æ¯9>Ùaµ>Ú=Ñ>ç >ô >ûe¨>þá ?Šj?(º?µw? (?l¿>ýk#>éØ™>Ñ!o>¿í,>Âtô>Ð-õ>Ô‰Å>Ék>ºñV>·•‡>À¸>Î-è>Ý”>ï{ç?ç ? +ç?òî?Í·?çF?Gû?¼I?¿Ç?"Yç?"Gs?!šÚ?"?–?"H÷??.?Ï|?h5?Zû?T…?$I?×?š¤>þçù>î‹Î>矷>ð´9?²S?÷µ?ÈV?Ä? *q?ß?¹ ?ï>ïô#>Õ¿>Ðé7>âÙ°>ü¢É? JI?=V?Ýñ?‡? j?'ô—?.aS?.€.?(ø3?‘?R >í#_>áè >ìnÎ>ú99?fT?07? ¼Õ?÷T?Éñ?¶á?#?$[? ƒX?)?¶+? á?’?Ã[?g?nc?%V?Òk?ÀE? ¸E?–·?nÛ?$ L?&/ê?%!?$±6?&ËO?*S°?-¤™?/ÒÌ?0B?/Pè?-r?(u­?"äö?ëï?!Ð?#Dt?#[«?![–?;¬?Þ?Bz?>?&,}?,hÅ?,.?)´S?(sÖ?%ª?Yh?þ ?qÝ?J?;?§D?üÃ?šùaT>ây•>âÒ`>ø„§? c8?S'?)¦Ò?*®è?"ªb?ËU?ýc?${5?!²3?ç°? ü¥>ûib>ÚË>Ä¢>ÁR>Ìö…>äR­?Ð[?…©?"Ó?+s?*¨:?!³g?»¿? Þ¬?Ëž>ú<>ðÑP>ãL«>Í%à>¿öÈ>Ϩ>õÖø?Ù²? Y?-7C?9,H??p~?8ˉ?$¬.?—®?¤? -0·?Íx?½p?%h?r³?±?M×?«?|ödˆ>èe\>î.è?/¿?È? —W?*üš?4q]?9©þ?8+º?1Gó?)úN?)GZ?1”?;¬˜?Bƒ4?BS?:Ç?+ZŽ?þ&?<0?Bó?Y›?<>ëx>Ûëõ>Ú0>Þ >ã!G>èêm>êXó>Þ¦M>ÉA¤>¹ž>´õÎ>ºkm>Ä3?>ʬ>Æ·û>ÀØ»>Âè‡>Ï{T>çæ¿?ž_?£=?Èã?cf?žº? ‰«?%Þk?('2?"ºÚ?¢^?ƺ?$uß?(Ë?#ðÖ?éƒ?d”?,ã?Ž!?Å¿?Mï>ò {>ü)ü?Ý?$ Ô?0Ž?1‚Ç?-zx?):ö?&uS?#Ó??j?¿Ó? v?n >ÿx´?»u?js?(ð?.Ž?'¹?SÁ?ÜÀ?ôÑ?á¸?3 ? -RŸ?Ƚ?rï?ÿ? lô?q¿>ö©G>îÑò>î'ò>ÿ¸=?Iü?¶Ÿ?#£?%¬û?&_?(Yè?.—É?4¤ë?5a¬?3—™?4å$?9-±?9x×?22'?) æ?"—?Dy?¬È?+H8?8~e??Òx?A½z?C‘™?GP¸?I?Fâ²?Dg?B.??ºÀ?=LU?:9?5/-?-4?%…9?"áN?&¸?*ƒÿ?*؆?#¡Î?ÙÊ?t»>ëò+>Èá;>ª3> s>jÎí>;£Ö>Å>‘À>4ú\>hž™>“Æ>´­>صu>ú¶?z.??„?l9?¬ü?a9?,){?4.;?3æÄ?5†£?=KÅ?DˆÉ?CÛ?=È?<_^?AKu?B°}?=c’?:#?>L}?Càâ?@RO?.öö?žË?«È>û¹×>êÍ>ÏË>©hš>‚OO>I>4 G>MÙV>… >ªè >Î>î h?9?u.?#+?/ÂÄ?=-9?J©U?U$©?YI½?W"+?S)Û?Q Û?QÆR?S‡b?TÃk?X¹Ø?a¼?fÿ‰?gïÝ?ipØ?mÇ"?qO?qu¾?moø?g²±?aTD?\Ö"?`]à?l¡¿?x'?|ù?}Lc?~°b?y¹?h@?WÚ!?WË&?eˆ?sa’?yì>?{Êñ?|ëo?|ú-?{ž?{x¼?~}x?€/?~:b?zz)?}ýø?‚É?„I?‚ÌÊ?lD?€;‚?}A?|%©?€ÈÇ?…‹?‡gÇ?…¸x?~)þ?lž|?a±?]í0?`IË?g+o?q‚ ?~ºó?†?•?ŠdÍ?‰öÈ?†m„?…-?ƒ¨?„Ü?„7?Ý ?|©?xEÂ?w£?xÁ¸?~ é?‚æ±?…sÁ?†vb?ˆ‡ú?ŒJE?ŽkS?¹:?‹G)?†î?‚¦%?‚¼Õ?…£Z?„¨g?z¬q?h¤?`X?e˜ ?pK$?w6¶?wU4?uï¨?z:f?€ñL?ƒ1?{¢(?uVÖ?vÆÓ?}Ñ~?€ÌB?z¿*?r*\?uOx?€$%?ƒG(?ƒã?†J?‰!?‡>X?RÕ?x.ô?pL/?iì?hU±?më?oó??o@˜?s£³?{Þ?€]?‚ÚW?…~9?‡‚«?‡o·?…øn?†‘Ñ?‰×Ä?Œ2@?Šs?„×?z?#?x2U?€zŠ?„«‘?‡U8?‰ßª?Š°ô?‡[x?€\Ë?mK2?Tÿ?@’G?C¸ý?aBD?€ ?‡Ñ(?‰K¹?†B? @?|˜Ë?w]ù?p$V?nb'?pX0?p€7?tKÓ?~GQ?‚NÌ?‚a?ƒæ?†×?„Pú?~:ï?u.?ptò?nB ?rÄ?«b?„E¶?‚EÏ?|f°?}&z?‚ƒK?‚²|?x2Ç?fnì?]h?f¨%?{ÆT?…ûT?ˆí8?‰x?ˆ?ƒš"?}c?t‡?g½?Xa“?V)—?^Ää?eRÄ?lSy?yÓ~?ƒVá?„ó ?Cs?xð&?vóÄ?z™¼?}oý?{z?s¬8?lTù?i§Â?dîI?Zj?R…§?X›Z?…áM?‹ãR?y??ŒJÓ?‰JÙ?€9„?_Åt?H„x?Pi…?k4¤?~•?h ?€Lg?~Éq?€Ši?ƒÈ%?…‰â?ƒ„V?ÑR?…µó?Œi?Ž“??Š+p?ƒnt?t‡?…Ç?…e?|Û?wåÂ?!Ó?„£?„nn?‡~?E)?’õ±?•Ý?“3:?Š?ƒcp?„'y?‰K¼?–·?•½†?—pJ?’è"?#®?‹èå?û²?lò?<õ?’Â?“—Å?‘qM?‘ñ?Œ­³?Œh?ˆÜ{?„?Ÿ1‹? Êâ?¡˜û?ŸVß?›a%?˜Ý?—µ?˜ý?˜Œ?—µw?™r‡?›Ÿ\?›¡!?˜áT?–Cž?”1I?.£?‹JR?‡‰+?…‰U?†C?‰o»?ŒÉÕ?ŒÄ?‰ ?‡I¬?Œþ?•ãš?œŽO?›â•?—Àª?•”À?—,?˜G ?–1c?“\g?’?ŒGþ?‹Ðo?ŒP/?Œ~¦?Q`?y?“T?–û÷?—Ñe?•-?‘'§?Øg?‘Cþ?‘vô?8]?Œ?øÃ?‘nŠ?ñ?>.?‘.”?“8[?“g}?“Š?”±«?—Ú/?šåA?›dê?˜×¤?–ù?”¥ê?•E?–b?–T0?•_H?”1´?“m?•#Ž?—†Â?˜_?—Ï?—?•ö(?–I½?—6.?–O¯?•U†?– -?–ïÞ?”ئ?“=8?“}?’pb?o?/>?®?‘ej?“•š?“íï?‘ÝD?Ž¯Ä?ŠLó?†GB?…Ýf?‰¿?Ž?‘¤”?’íB?’:á?9?ŒaF?ŒÑá?˜0?•ÉÝ?˜†‰?—5v?“”¨?÷™?hÈ?‰›‚?ùÜ?vºW?yµÛ?„­c?‹åŒ?Ž².?Žq?ŽMÙ?‘2Ž?” -•?“fa?Žúz?Š®,?‰Fª?Š%–?Œ?cØ?Í÷?‘'à?‘I…?¡™?u?ŽE¨?€?#W?ŽóH?‘&!?’Ó…?’ Ë?K¾?ŠöÇ?ˆÚk?‡ë•?…§?ƒÅj?…às?Š?‹1Ï?ˆi ?…¼)?†Û³?‹o`?]¨?lï?ŒÒ—?Œ÷?z£?“pÈ?•?–ß1?—[ó?–‹¿?–®?— ?˜5Ã?–î?‘W%?‹Š?ˆŒ®?ˆ ô?‰ .?ŒÆ?ÁÆ?‘x?ÝÒ?Ín?î?’jÃ?“6„?’wd?“’c?•H?•%U?”¥z?•iD?•Ù¾?•’V?•É?”Ƙ?’˜È?Zî?ŽŸ0?˜A?Ž ?Š£?“ñ‹?•Ã?“µ?ŽŽ?Š¥h?‰,A?ˆé?ˆOa?‹°€?t-?“ò0?”?’)º?’º”?–/U?˜zó?˜™?™8U?™Ê-?˜Þ@?˜A.?—Êã?•Ký?“ 3?’˜H?Åh?Žþ2?KZ?Œ?G?‘î?”Wå?˜JR?›Éƒ?œM‹?™ÊŒ?•†Q?‘Ð\?‘ÿ?“nd?•ôf?•Ûu?“°?’2ð?‘§â?‘T?ŽS¦?C4?Ž#‚?‹?‡v?„0Þ?ƒá9?…#‡?ƒNb?|­`?|³2?…rÂ?‹€?‰ÿ¯?„Œ??}À[?y¶?|‰$?€}­?}H4?z-Û?€ï?„¶!?„°?…Hf?‡ûß?ˆò?†s®?„AN?†ðÑ?Šv?Œ3à?Ž¶=?4?‹õ†?…¬]?„sš?„:‰?~É}?q'¿?n¿?€ˆ†?ŠÙQ?úJ?»„?ŒNZ?…û)?ƒ£H?ƒñ°?„é}?ˆx”?ŒlF?ü¹?Ž#?ŽÂ ?Öî?ñR?’6\?‘ɤ?Œçå?†‚*?…b+?‡ó?‡ñ?‰ôõ?Šõ•?ˆ:°?††Ù?‡½?‡¡`?‰Q¬?ˆfÅ?P?vrÌ?zòŠ?Ñz?ƒåK?‡1?Š¡?Š·‰?Š"è?Šøù?‹íÓ?rŽ?)Q?³?Œé„?‡Ž ?€:;?w††?}à?‡ÿ?‹™—?‹?‰Fc?‡©,?… -v?ƒk{?ƒ„T?…¼?‰vÐ?ŒÝü?ñ?Œ]@?”å?¤ý?¢¹?Œýã?‰^˜?†Q?ƒ1ž?€îö?\6?‚ø?ƒÉ?‚Ó?ƒðÇ?„š¡?„uÌ?…ëÝ?ˆ)à?†C3?‚*a?6)?€NE?i‰?~òM?)±?„Oµ?ƒI?X?‚@[?…;¨?…Y?ƒÓ1?‚êc?‚’¦?„Û?†ò?ˆõÖ?‰˜=?‰Œ’?‡,ž?„Â?‚$é?yv?c¯?Pþ4?Ss¥?dí¦?fC=?S3â?U"Ù?‰vÎ?Šz ?Š\?‰-î?‡˜–?‰ 5?ŠâÓ?ˆî?†Iˆ?… ?ƒ³_?„ÃÁ?†Ï›?…Î?„I?†Éê?‹'?Œè®?ŠÉÓ?„®Î?y“€?mpß?ežý?dWf?lëó?oâó?g?jÒ¼?yä?~™Æ?zä?y%·?‚?ˆO·?ˆ{c?„ãû?•)?~†Á?~ò?…4Ì?‹6Q?Œ¼à?Œçd?íp?õÀ?Œ…'?‹)?‰in?„’ ?|¯Ç?|@?ƒ\:?…Wæ?…Æg?ˆî?‹‘©?Šªñ?ˆêW?‰Ú†?Œ6Ç?:h?Œ¢?Šð:?‰D?†?„i˜?‡5g?‰‡³?ˆö?†ìû?ƒ;O?ÝX?€[:?zù‚?kâh?oo?Ï3?†wd?…ÔÜ?†òó?ˆa?‡2æ?…+W?Úƒ?|:o?Œ8?„œY?†³µ?…Ô©?„¢Š?ƒ©ï?‚3?ƒj#?†Ùi?ˆ ³?ˆ÷?‹~$?8ë?ˆè?Ù?‹Òº?‰æ?…®“?ƒpV?Ë“?ØÔ?‚ž?€l˜?yk;?v}$?Ì™?…ÿí?‰,?‰q?‡í?†‰ú?…S?ƒéR?ƒZÿ?ƒÙ4?‡ë?ˆô ?ˆ7‚?†¦Û?„U?tàÅ?w)Ì?ze–?z;¨?yÅè?wþ¸?u|÷?t.\?sjH?uwt?xM?sßp?od?mi?nY?a¬#?eÒ,?iŒQ?dÑY?]»t?f ˆ?se•?q!Æ?o3ð?wS[?vé°?r?g5E?Z^?]à–?n¼/?ub´?mAÛ?jÿ¦?rÞ!?rê?l“›?j¹?m¨Ý?pô?ní?g\?h†«?m -I?ksÆ?h¿?eÕ?et÷?iH?hÓ†?nöA?‚mâ?|Qè?bÕ?br¦?iGÕ?g/?]Ž?QxA?WŸý?bÒ!?e½™?aj?i’ã?m2??gõ?`ø?aÀ?aãð?R¸@?Qè–?dÐÞ?k´%?h€Ü?n©4?wëk?t.^?ha!?aÉ;?]ì{?`:f?ih²?nGà?df?fE­?mÙ?m ?dæò?_†X?i¤”?cz]?R—“?W.?aÞ;?ct?fM?mãO?q¨o?mQD?dg%?`÷f?^%¸?eªÐ?i8L?cµþ?b¡5?e‹£?j^l?e =?X¯Œ?]î?\Ìk?SÐþ?VÇê?ctZ?kUH?aèÕ?Yœm?_{?^^Ø?VWÔ?^eù?j3Ã?m\&?o˜Ù?nË8?jgU?g©?V˜I?NVC?_™†?kC?o¶£?p| ?o s?lj -?v|ö?uQf?d€Â?Vˆ4?Xæ´?])‡?a@?m*M?n_a?c…?Y4A?VÞ?U+o?^o?_öª?_?\˜Ÿ?R@r?KÖî?H“Q?L5á?Zä)?`íÎ?\ûë?TÎã?SvŸ?P†?Lñ?Xó÷?cU?alz?S¢~?M:p?XÞp?`¶C?`b}?\#ø?\q ?\=¶?Z<Ã?\u??SíS?D÷t?Bí?T͇?_ø¥?\`L?YÚ›?^æÚ?d W?\’?TÏG?=dÌ?<‰v?; ¢?:Ãh?0—ý?-k?7N¾?8Ÿn?5«+?4„1?%ø¡?¤>ú°>Ç7r>¹ë>è…|?c?t?:Å?«Ÿ?$Hý?34g?=Ç„?=E—?7Îë?;`³?K@Œ?Xr?VI?Há?DY?NzE?NóÃ?WÃk?Vlå?M3ý?Q“ë?Uà?O¸s?I‘??P—0?TwÚ?S¼Á?T_[?Q]%?J¬?RÇ ?XÉ€?[è?b.%?\*x?Vu?]¥?[oä?Vh ?T}?O8?a·Ó?itú?Xï˜?MM–?LòE?J¯á?MûÑ?S)8?^¾?h‘ó?do ?^Ñù?QÑÖ?Hq}?F#?]ã¸?l¿Û?i ]?cà ?V+J?Ho¾?Gvž?E²ü?ESN?MÀƒ?V«?Pî@?Hˆk?NÙ?[^ ?VHò?E<(?Bk??S&?]> ?Sì¡?GíÚ?MÙÒ?Qz]?P?R¾Ñ?N[2?Ld½?HüŒ?K7Û?Sǘ?R¾`?M5´?D½?;Œ?:ô-?=Ž ?@† ?Cç?F¦ƒ?J·>?Rí ?Lµž?Bl?;°3?£v?@wX?DÝ$?Fåå?FÚÏ?FŽÆ?EÆ?DL¬??ÄÎ?=ÖË??íÁ?AI?@ªÍ?B›?EQ?FBð?F6?F³?EÒ?E¶?E ?Ej?EA€?E×?D‘+?A[?AvH?BP -?BE ?B[?@5ª?@Ìr?CUn?Cë?BÚ'?AGA?A0Î?CE?C£™?CßÏ?D©?CD?@°í?>U=??ê?A¸$?AOµ?@Qˆ?A$Õ?A~_?A[·?B4@?B¡Y?AÃk?@X?A Þ?B _?B_ô?Að¿?A -"?AJ÷?A˜?=Âr?8àJ?6Ñt?;µ ?@…q?B"À?AÝ”?@é6?@„P?A}Œ?AR_?@mÌ?@ÌK?A3E??€Û?=j ?>‚Ð?=`?;b?;¾?>ö€??òË?=áÒ?<²Ü?;¼á?6fO?7‹š?>(±??2?:ï`?8¦O?;Ö³?>[3?>[‡?>¨†?>ô?<ðr?<2í?<ñ3?=$Ï?@¢é?B2Ó?Ah~?@…Ä?@ŒÕ?@þs?AŠø?@<0?=w,?=ƒ?=Ùø?=à?<ã?fb??;’?>Û ??y?@RÃ?@%×?<ù­?9/?:X?<\B?í'??‰Ü??´¬??Íð??.Ä?=s½?<Æ5?;Ðb?:Lj?;ˆ?<ŠÅ?<øÔ?=\û?<^?8Ó?:>?=x:?=Õ^?<õü?9 ?7ýŽ?;oD?>$Ï?>æë?>ê?>°l?=Ôg?=?= ?9™Ÿ?3?6£? -Š?= -?<Ô ?>I+?>€¾?=¶ó?9‡f?1Ï"?5$?=Qã??n¬??›H??”%?=ñ?:˶?;v?;5Ë?6k?8ð?;)?7b…?3KÒ?6™ù?8ˆ?4a@?3¡?6Á?8bÝ?9çØ?6±¨?3´Þ?7ƒZ?4LÝ?-½Ÿ?2XÀ?7Nq?7ž?7)ö?7“Ï?7Ñ°?6c„?55E?3 ò?2Ò¹?5x²?5ÕE?6že?8õ7?9ºd?86?6‰·?7¹—?7?7U?8Sª?62??5и?8zJ?7ˆ?3ÊD?5™5?7ðß?8+5?8¯?7$²?1‘?2 y?7T£?8O?8s†?8¥R?84(?7SÜ?5îj?5â?6YÁ?6åC?6¾&?3û©?2}?3©¦?,S‰?0›?2Ä÷?2—š?2ö…?3ô‚?5ho?5.p?4„˜?5I^?4Ö"?3Öa?4§‡?4ê¢?3Ȩ?1â;?1Àž?/Ìu?/y&?2ŒÛ?2–©?/dŸ?.²Ž?1Mß?3)ç?3`?3[?2ª¼?1Ç?1C"?2†þ?3ì ?3e±?1Ïé?0xt?+›£?))?*H?.Ù?0®¾?/§L?1Ù~?2ÙX?0‡í?.—Ê?1”?1ò?.ã?,æË?'Á?)B]?-?)Åq?)?-q8?.4å?+@?'ªÙ?-I?2“7?3_î?1¬’?0ñr?2Ë¡?3añ?2m±?0žž?-#ÿ?+å¤?+3æ?(xÑ?*u?-œ?0-¶?1 ?/¹V?/ Ã?0¬Q?0ú—?,(w?(í.?,Ë5?.EÍ?-¦º?,¥ˆ?+Ò'?+U ?+Ç?,#Y?,Úa?,í?,Ai?,Ö€?-îd?-)¿?-Š?+Ž|?(‹?&\+?#ݶ?'÷}?*'N?*ݲ?+­Œ?+£9?*—?*)ç?)·?$u»?'–ú?*¯4?*ž?*ÙÉ?+Fc?)8??%pv?%»?(•$?*ŸV?)œö?'‡?(8a?)W+?*5A?*<‚?):¾?(¥¦?)&@?(öœ?'è˜?(iŽ?(£3?'ÃŒ?%B?#~b?%Ε?$~î?$ 0?&áP?'þE?(‰Ü?&]‰?&o¿?(ݽ?'Ð?'ã?)Y„?)¬–?)Ný?'a­?#î¿?#ld?&t?(ÈÉ?)?(ɲ?'ù¡?'ÙØ?(Pë?'ô?&I?%£B?&r]?&Æc?'f ?&C1?'?'q~?$i?û?\ï? Æ?%[L?' «?'JU?'e}?'Nr?'Q½?')§?'m?'Ù?&àå?&-Å?&‰ö?'Š?&ü&?&ä?&×'?&¡ö?%Ñ?!t!?~²?ì?´?•£?_O?§f?HZ?#ËL?#{|?$ò¨?%­õ?%ê¶?%·ª?$?"B?$D’?%m?%??$xÄ?#Þ†?$su?$Û¯?$ ?#‚x?„?u{?#ÒØ?$ò?%%?$ÈF?"~i?«È?3P? ??"¢Q?$_?#É‚?"2¸?ðI? ŒÔ?ñ‰? +9?#”?$4l?#²Ú?#ù -?$)?#Éî?"t?®Ô?îå?ñQ?ŠË?è‰? ³*?"¿?"p?!Ç?!“ê?!jr?!ùX?!‘T?!‘´?#¡?"<)?uæ?«Ç?T„?Ä:?:?Û?³³?"®Ù?"ù\? Я?³^? •Ï?#|'?#ØS? @ž?D?õÝ?!a2?$T“?"<}?³~?8V?þò?‘?"ˆ+?$½?$$?#\½?#Šž?$mƒ?#  ?")?!ùj?½?³?xŸ?Ô¿?ìn? k ?…ó?çi?¡=?™O?¶²?s?Ï-?‡‚?8?­?!¹?á?!?öo?Ú?Èi?Ía?O?±?š ?BÇ?õ¨?!º?ë¡?á¹?<Æ? •?R!?N?š?>™?˜¿?{¶?€#?c^?%w?'k?Àï?9l?B®?sù?Ò/?z?Pê?öj?|?k"?w¶?òA?ß ?Æ&?ô‹?T$?Är?‚¾?ý?0Ü?Ï\?÷ß?~·?Ûé?†q?¤º?P?iX?z×?™Q?”B?¶ ?Ÿ5?óO?‰¥?¦-?žR?=?¦£?‚? ž?7û?ÎD?äw?”°?ÌX?د?"÷?'Æ?=M?èï?—ô?b—?0?Á;?v?$?²`?Fn?l1?òJ?I©?<´?Ô±?y&?¿©?ÓA?k?Vë?”?åt?îV?ä}?y?î†?kü?’v?ÒI?ºÖ?·^?n?µ?Â7?˜$?zx?Wj?E,?!?»-??Ç?G ?rP?6|?¢Ï?Ò)?âì?ðŽ???q?¨2?>w?n?\â?£?ˆ.?qo?˜t?¬p?Ç?[¥?u–?¾?â¶?ÿg?2=?f?ã ?ìS?¿‹?Ä?‹«?Hd?6? fi? ×??•/?"é?Ü,? -§v?S[?Ý•?Š8?ˆ? ¥?L“?q*?šs?‡û?QZ?ªê?)þ?‰3? -ªÜ?5i?ØS? ï?Û ?!E? -½?¾¹?`á?…?V?F6?Îÿ?Æ?Q÷? | ?ÀÅ?l?ëF?€*?Þ+?>å?1e?Dô?¨?ï§?“7?›Í?¢P?™=?PÞ?2?å:?vå?R^?…_?¬s?úÔ?žë? ñš?9ú?ã?§a?¹ˆ?t? ÓV? ×ø? -â? Ó? ›‘?  ? ¦º? -W+? -åò? “:? 47? ]”? -ÿ¿?÷ ?K?ƒ‰?KS?“? -©? èY? …3? é'? ƒÅ?M©?ô»?ç?¹¬? á? qÌ? »q? †Ú? Ž%? -hÃ?Ü+? Ÿ? E›? f? 9? Šf? cR? ¡o? ù? è‰? Y"? -—`? Mh? àz? -iö? -Z4? ß¿? VŽ? ò ? -ÒJ? -­? â—? ì? L1?LÖÁŒ>Ñ»~>öR.?¶`?ZÒ?Ú$?ý\?¨Ï?³?Ä4?äý?çÑ? ?À^?ÏÏ?Tq?T?lh?Y’?è´>÷f>äô›>»Ku>—Ó?>»ý¶>樰>ú–Y?•Þ?·b?÷«?[´?–…?¾N?"¡?[?ƒˆ?ö‰?)½?bD?¦›?sâ?òb?Uû?Ž.?M?ý?ºý¿?\•??!u>úw$>äq#>³¶½>¥àÚ>Õ]–>ð2ù>ùY9>ü›n>þ½1>üoŒ?;?»ì>ÿ¤D?B?Ïò>ûÒz>ö%?Pî?EJ?èÝ?Øs?Íù?Nÿ?fO?Jë?zš?o>üm>üE?Ý2?Õ³?ª?ë?Ã{?¼?W>ûáñ?ï§?<|>úoå>÷mÿ>þÙ^>û^g>ú/±>ÿ[ >þÞö>û˜Œ>ó®S>÷0,>ý&>ùŒ¾>ýD€>ÿ‡É>úéø>ûm.?pÊ?0©>þ«T>öÇ>ý(?Q?“`?9j?§þ?·?Á°>û*ó>÷†">ù“Ù>ÿ‘®?§Ð?è?îÊ>ú•>çÍv>åv‰>÷§ù>þ7:>ÿc¿?l?ä>ý·®>û“>óo>ù>7>þÚt>ýÙ>ýTß>üj>øõ>ô„>ù¨þ>ü>úäÙ>ø…¥>û*…>üÆ>ú§9>ù;T>õŽ(>òÓ®>îÃè>éß¾>ë›>èƒp>ðYÙ>ö”>öÎÛ>ô{±>óÿ>ôeâ>öA>õt’>öÍY>ø§>÷…>óÝ]>ós>ö™°>õÍŠ>õ'ë>örÅ>ö‚Ï>ö˜Î>õfû>óð>ð2>ô›>õ¼÷>óG²>ðQ¦>ðOÑ>î»´>ìD^>êç>ðzÙ>óº>ô½>õ†>ôåo>óª>ït2>êòF>ì›>î”õ>ò©>ô)>ôÈ>ô'>óÚR>ó†>òéB>ïg >í>>ðô>òØÖ>ïä”>ìQ{>ïSA>ñ_w>ò£>ïøP>ð1c>ñ%ˆ>ðÆ>ðˆ >ï¾q>íº>æì.>èÛÏ>ïK>î½>èñ¾>àŠ¸>Þè>Ýü>Þ‚>âe²>æ§ ->åºP>è¿Ú>ì+Ü>íô>íV;>íÊð>î•Í>í4¯>î*o>ï1¨>ï8›>îë >îð:>îO‚>ì›>í>îž°>î!>ëu>àwð>âp=>ìëy>îm>ìüÐ>íÑ>틪>ë´þ>ä$>âÍ_>êÍi>ìyÆ>çå!>ÚK>à£d>è6°>á>åÓ¸>梅>çúÚ>é0ñ>çܘ>艸>èÍ>áaz>äû>é*Õ>äf>åb=>êk¬>êñ>굈>ê}j>éÜL>êki>êe%>éL>é@î>è:º>è¬>å%c>àœ;>åžY>èóþ>è[Ö>çÚ¨>èMì>è§G>ç¨õ>äË>æ/ù>æ©ø>å¬1>â×>ã.O>æ#Š>åvÇ>å°„>æŸ>æÈ÷>ærß>æ¼>æå>å½>æÝ>äø>âM>äé>ãÒŸ>ãp¾>ßš>ÚÅ>×_?>ÝlÑ>ÝÍÔ>Ý8“>áv >ÞÈ>Ù'u>ÎÉŸ>Ì‹>Öèö>ÜéÒ>Û]ì>Øú >ß œ>àI‹>ÝõÑ>Üâ>à7 >á>ÜXé>ÑÈB>ÓAù>Ùàõ>ßL)>Þ3t>ßìn>â<>â*c>âË>âÃ<>â…ç>á\ó>áŸÏ>áÿX>ášv>à¦>ܳW>ÝlÔ>Þã]>Þ/é>ßôÿ>áÚ>á,±>àÔY>ß´T>߇¢>ßÝ>ßÆ@>àá>Ü\‘>ÜO°>ßs‚>Þ½™>ß]Ó>ß’„>àC>ßsñ>ݶ>ß}x>ߟò>߇H>Ýʱ>Üó|>ÞPñ>Úm>Ú¦b>ÝWÑ>ÜU>ÚÇ>Ùsž>ÙËØ>ÝRÿ>ÞKâ>ÝYu>Ü‹>Ø·Ì>ÜÝÃì>Ür>ÛûÁ>Ü8 >Û¿*>ÚT¥>Û=a>Ú!«>Ú?®>Ü :>ÚÜ >טg>×I“>Ï°*>Ôò>×+¶>ÎYÞ>¾lç>Î u>Ù">×’ÿ>ײO>Ús¡>Ú¸û>ׂ+>Ô!X>Õ>ÕÚè>ÍÐ>Ó¡¶>Öwî>Ó¬Ó>ÓÁü>×RŽ>×áW>Ôp÷>ÕÐ>×Õ!>Øço>Õ×->Ôp >×,A>ØG¡>×èá>×>×Ñ>ØAŽ>Ø>×õÎ>׺À>Ö:ù>×:p>ØGê>×¼²>Ö`>ÖÚ>×æ>Ö®;>ÔÙÈ>Ó©>Õ“x>ÕÐ>ÕŒœ>Ö©>ÖKÖ>ÔG`>Ô—">Ö—>ÕMî>Ó„4>Ò*Æ>Ó¤>ÑΪ>ÐØ{>ÑzÝ>ψÆ>ÈÞe>¼Äç>¾°Š>É)Ÿ>Í”K>Ð)E>ÐÑ>ÒYX>Òvb>Ò;˜>Ó&3>ÓŠ>Î!>Îãõ>ϤÉ>ÑrW>Ó)>Ó„>>Óš>ÒÆß>ÒdÙ>ÓKß>Ób>ÒE3>ÒCÃ>Ðùh>Ð ‡>ÍØç>ÍzÁ>Î'>Ñ6»>Ó2>Òó>ÒXé>ÑV:>Ì„>Íì|>ÍñP>ÊÞ>л=>Ñ?ÿ>Ío‹>ÍÈH>Ìa>ÎÐá>Ðùô>Ð,>ÍÜÎ>Í¥>Íôº>Ì*)>Ì×µ>Æj©>Ë*!>ÏX¦>Ï?›>Ï{æ>ÎÇU>Í!Ë>ÌÐu>Éåy>Íyƒ>Î >ÎfP>Îß*>Í€f>Ê*t>Ìœ>͘Ø>ÎG'>Î}P>Í݈>ÌpŠ>Ë ->˱'>Î6Ö>Î >Î%Ë>Í›¿>ÍE>>Íh7>Í@è>Í‘¡>ËP$>Ê(Ò>Ìi>Ë=5>ÉM)>ă>È–u>ÊY>Éi">Èl>ËS>ÌžÍ>Ì„¹>ÌÃ>ËV>ÊäÍ>Æš>ÇøS>ÉÄÄ>È´P>Ê\]>ËÕØ>Ëóð>ËXˆ>Éð]>Æ)Ã>Æi>Ä‹R>ÈEª>Ê@L>ÊP4>É&¨>Ç.>ƵË>É÷Y>Ê7>Éé§>Ée“>É•>Éö…>ÉÂ=>É?j>ÇEÌ>È€!>ÈÁ>Ç´0>È”>Æ*Þ>ÅÐÝ>È9h>Çø4>Ȫ>È£}>ÈnD>Çô»>ÇÀ‹>Ç]&>ÆõÃ>ÇsÃ>ÄšÌ>Âm‘>ÆäÑ>Ç(>Æ÷Y>Æ’&>Æ¡ß>LJ‚>Ç€Œ>Åîu>Æ!¾>Æ¢D>Ã\Û>¿b‡>Âj×>Æ3>Å->À6>ÂvK>ÅRÒ>Äs­>Å\é>ļB>Á'¶>Âoç>Å@B>ÅÍ>Å>Ä6Ã>ĺm>Äd–>Á~!>ÃLÍ>Äá>ĵÑ>Ä_W>Ã¥>Û·>Ãø(>ÂË¡>Â+>ÃC ->ÃnÀ>ÃNÙ>Â…È>ÂÎÏ>Ã`">Þ>§>Ã(Œ>Âö>Â}¦>Â}¼>ÂN+>Âè>Á;>Á¦¬>Â,ž>À Æ>À·N>ÀÉâ>Á z>Àða>Á˜¦>ÁÌ\>ÁW\>ÁI)>Áww>Ájä>Àó.>À€h>À„>¾˜ç>¾¿€>¿+>½Àß>½ë'>»M>¼¢õ>¼CL>ºiV>µ{>©r_>§®s>´4>¸Ý)>¹`,>»Ê|>½>½Mˆ>½ q>¼i§>¾7…>¾·>¾~ >¾>½ª¯>½Zs>¼Ò@>½Ôô>½þ{>¾6‚>¾cÎ>¾c>¾b„>¾ €>¼QÎ>»³¬>½ö>½l<>¼T>¼Ì+>½wR>½ >ºÚì>¹¡9>¼†Ê>¼ì>¼ýã>¼Á>¼ù>¼d»>¼ º>¹'>µˆ>>ºyÝ>»É>»ý>¹†«>º@Î>»¯s>¸‰†>´Þ>>¹(¡>º°>» X>ºÖò>»2Â>ºç#>¹žÂ>²›‚>´O;>¹:c>ºGñ>·ò!>·ÛU>¹†”>¹UQ>¸ÍF>¸Á\>¹b>·Þ‚>¹nÖ>¸gÔ>²¢>³äp>¸{Ø>¹a¦>¸äý>¸Î‚>¸ùk>¸çÝ>¸ ¶>·’'>·i¥>¸gÑ>·Rë>·Š>¸]È>¸Q?>¸.Q>¸á>·ã>·¯†>·N¹>· ->·‰S>·œs>·ã>·_>·hŽ>·O">·‚>¶ÛÆ>´jÌ>¯ð>µre>¶Ïˆ>¶„L>µÀ›>´ ]>´Ôô>µÂÕ>µˆ¶>µ4«>³pX>µG¸>µ¹<>µ~>µ[>³Ý'>®!;>¯y>²™¿>´Ÿ.>´ÿQ>³ˆu>°2f>­½>±Õ‰>²»@>´^>³$ç>³¡¿>´I>³ö >³c@>³Q>³5”>¬j>¬Ë>²ù©>±kÛ>°Šd>³%¾>³?‚>²×‡>²Iù>²rG>±§>­Âž>±a>²ls>±Øc>°†h>± 2>²KY>²>z>±ºW>±»÷>±¨ç>®þ6>­,„>®¥÷>±nS>±\ >°‚ÿ>°Ú¦>°×>°ËÞ>°þø>¯>®a‘>°5>«Ê`>¦â>¨l®>«Â%>¯õŠ>° ç>¬ÆÍ>¬5G>¯´'>¯ñ»>¯Ù‡>¯¼S>¯€>®">®}!>¯Vì>¯6>® 5>®A>®¡í>®!>®Þ>®ˆ•>­×ý>­Ùä>® ø>«‡>¬>(>­¹>®‘>­ä >¬IÉ>©=]>ªüŒ>¬Á>­z^>¬ýV>­?8>­y1>­G,>­q>­³>¬Á»>¬Ž¯>¬É%>¬Ó“>¬’#>¬…Ñ>¬]ö>«þ>«å>«^”>ªˆ>¥bP>š‚r>¤©–>«_o>«°Œ>«™>«HS>ªú>£Ìà>žy¨>¨;À>ªy‘>©Uà>ªN–>©þ>ª{=>ªÄ|>ªG'>¤HÒ>£* >©×>¨Ô©>ªÄ>ª5¤>ª'¡>ªM>©œ±>©A:>©‡>©•Ë>©[I>§v>œsŠ>£“9>¨™÷>¨P‚>¨Š7>¨*ý>¨”€>¨mŠ>¦¿@>ž 9>ž ÷>¢O>˜m]>š·Y>Ÿù“>§b>§¿‘>§ke>¥õ!>¡›Ñ>¥ýÏ>§qê>¦ÿd>¤Â>¦!æ>¦ðç>¤ ->›Â>#M>¤Z!>¦f0>¦«n>¦]B>¤ø#>£> çt>™¦> ¬>¢ŽË>¥šw>¥ü…>¥µ >¥.3>¢Îú>£}¡>¥FN>¥B^>¥G1>¤½~>¡w>œùA>—»™> f>¤—þ>¤%†>¢àÉ>£-™>¢ê¢>£2ø>£G¦>šð%>©ý>Ÿ 8>¢P‰>ŸŽJ>œ0â>ŸG>‘FV>– k> ùÌ> œÕ>¡Z >¢ -d>¡Q+>œC¨> ÿ*>¢¬">¢Ëî>¢Ëú>¢¶]>¢u¼> JØ>f>Js>‹°>•»>Ÿü7>¡nõ>¡"Ò>ž ?>˜%þ>š´ì> ;¢>žúò>ž«Û>äÆ> e¶> ÝÃ> Ê>Ÿ¢>ŸÝÃ>ŸTW>™¯_>›¹¥>žU>žd>¹R>›â>›*b>™ƒí>•nþ>Š­>‡\Ù>“ŽÃ>˜«{>šÁO>›‚>˜šÐ>—¯>–B>š k>œEý>”·Î>•¥‚>œµ#>Aë>>š#Û>©µ>“çK>—ÖË>›“²>>'G>œÀQ>œ<ü>œÂà>œ2w>œ!H>œ‚‡>œiÐ>™\j>–÷M>‘bÏ>–šÉ>šüõ>œ`Î>›˜­>šíö>›‡[>›®L>š~l>šx>›k1>™ª~>šB>›ºF>›L>š>™ØÃ>›]Ž>›]Ô>šøí>šlŒ>š} >šÊ©>›2I>šH0>™ˆÔ>šò>šˆ:>™çV>™3>šrh>™êå>™üY>™V>™âª>š!ó>™×a>™™™>™JT>™".>”ø‰>—~á>™?Ø>˜Z>”ao>•`±>—£¿>™< >™­>™¬>–ÞC>—\Y>˜$>˜¨á>—Ü>•ëZ>—^Y>˜ö">˜»T>˜Ay>—ÊÞ>—#>— £>—"t>—_C>– W>pB>€À>–Û>—q’>“Ý >”ºH>“©>–&¹>—-å>—cŽ>–7Í>•ßw>—ª>–Ó3>–´ô>–†G>•´b>•àQ>–èÄ>––>–wŽ>–Ba>”ï=>”+ø>•{>‡¥>‡‚°>ô>”Þ>”).>•¡w>•ýÜ>•¯Ü>•½ï>•D>”0>”ß>•bã>”ÂÔ>‘Û*>¦>’h>“?>‘Fm>’<’>”7>“ª™>‘?}>‘¸1>“4>’úË>“¿>“rÀ>“ ô>”ì> >Ž¤¤>‘|>’„Ž>‘¬Q>“,¬>“Qƒ>“Ç>’ª!>’KÈ>‘o>‘q>’§˜>’÷¸>’õÙ>’P>‘ûÊ>áC>ã³>[>Šlh>Žw0>Žu>ç‹>Æ<>ÝÅ>C->Ž²ê>‹+•>‡€>ŽÇf>‚>mI>ú®>‘7>tÛ>(Q>&Z>`<>úl>¤H>5K>Šîo>ŽÒR>ˆ~>ÿ>Žåq>e>|õ>§†>ä>!]>&>5W>+>>Þ>»¦>8Î>Ž„ž>6B>Âõ>yV>dS>Žž¶>Žö$>Ø>Lc>ÃO>Žû¿>ŽÃy>Žî>Žf”>Œ8Ã>Œ’>ŒÒ>×Ó>_²>Ž+Ç>Ž5ý>ŽI>,>Œü¹>Ž%'>Ž!U>©k>Œ²à>‹Q=>5>rŠ>y >Œç¤>es>gÓ>>Œ»~>ŒÉ¨>Œí\>Œif>Œ"Ì>‰uÍ>ƒÌÆ>ˆ¨=>Œ…R>‹’h>‹[Ä>‡øŠ>‚ì«>ƒ!8>Š}…>‹HD>Š>‹{Á>‹ÑW>‰æ0>‰k«>‹mP>Š›r>„¬i>†ýâ>Š~I>Šçp>Š=ï>Š4æ>‰…y>ˆË`>…×S>‰æÛ>Š¬#>‰×>‡oí>‰l{>‰åR>Šp>‰´>‰À©>‰ºG>‚¨F>…Hc>‰>‘>‰v$>‡Ü>‰#/>‰Ðº>‰‚:>‰;~>‰÷>‰,Û>‰.%>ˆõÆ>ˆ›m>‰>‰6>‰$ò>ˆº†>ˆ‹«>ˆ…†>ˆ¾×>‡bK>ƒÔü>„ƒý>{ÔR>„½/>ˆ-€>ˆa¨>ˆM>‡|a>…«^>ƒ»D>†]3>†,,>„·\>€«ª>†Ò >‡”¾>‡ˆ>‡E•>‡)>†Ø>†Ù>‡+%>†‚>‚}4>„åa>†±R>…eg>„>ƒ'Á>dœO>o²Ô>„ª4>…²+>²ß>‚ù¯>…¬÷>…À>„¯]>…Å`>…Ï?>…e=>„7ü>ƒº>„þ=>…¸8>…nÌ>„þ>„î¬>ƒ=P>v,>q8E>ƒÔ>t/>€x">€æ>ƒÉf>„±W>„vø>„mŽ>„n÷>„‘3>„uŽ>„þ>„H‚>„+g>ƒ× >ƒôÚ>„%¤>ƒý9>ƒ›a>ƒ´>ƒžL>ƒÄ|>õü>0’>%y]>4e>A@¦>Ló>Rúœ>N->>@Áé>3 ]>,M>&çÜ>)Ü> XÍ=÷IZ=éq^=òçÝ>HÞ>«W>+7‘>0)>+!@>%Í>Îv>ê4=÷\-=賋=è}£=ýƒ³>!¨>"¹6>*|”>$ݳ>‡p>©×=ô¤=òâ=ø¶=û" =ýn>9B>~¥>  ->˜ç>¥>’ƒ> µC>'½>'ÿG>&þ¾>*Y™>3>>B>BOi>8²A>"ƒŸ> ð¸=õ®}=ó>y'> o> Ô>}E> ï > -JÖ> R >çÑ>A&>6>[ã>Lx>ß > Äô=ö¤Å=ÚÆH=Ó8±=ä~ >ÈT>‰ ->"ˆÏ>%ŠE>%\>(çþ>3.<>?é>E4Ì>Bž>:Æâ>5W8>8>>Aú‹>Lì>Oý‚>M8b>H>C@ø><€€>09>²ì> –==ÿ—=õ•=üï>ú‘>^½>?a>"XR>&›?>#Ó¹>Hh> à>(ª >.Éy>-‚˜>&&„>n$> > ‰> ¨ý>¹Z>P>ñ¡>#_m>+Êý>3X€>:uœ>Bn ->IvÎ>LÅ>M"0>M€>KÍ7>FH>;u?>/Šk>%t>•Ë>¹R>d¡>$Ex>1D]>BT˜>QP¥>YzÞ>[ “>XRõG>LÑû>F³>>`>66ž>/çR>)ª>Ôx>ŸT>•=õ'é=ëá=à¸ó=ÙžÖ=㎻>¢6>›'>$Ö¨>,žô>/j>,ߌ>%%µ>A>ìo>&ßj>>Ý&>W-j>fRí>i)>cY>\N+>ZAÉ>]~h>^Ûú>TëI>=›>´[>oÑ=éÝ<=à&—=ä/==ð->B}> G÷>ok>%ý>)ò¿>*Fç>,l[>5„)>BTl>H¹4>A»>-+Š>(Æ>=n=÷†õ=úÙ>Îj>óŒ>vL>,Þ4>E8å>\6ï>f–P>aßZ>V &>KÉp>Fn¦>GŠJ>QÜ>`~m>mó>s`h>q@W>jY©>^Ï>N(â>;`>+ÏŸ>"«´>ú½>”¢>ŠM>÷>˜ >,gß>7×h>7Ž@>5q·><©%>K•@>X>Z4U>PáB>@æÒ>3*Û>.?>/Ìñ>/9]>&Ǽ>óš>u9=ãý¼=Ó•£=ß">¢>2>æ>áè> -û™=ì)Ú=ÆÂœ=²D=°ì=¼v¸=Ï!‡=Ý̘=æP=ñHZ>, > ->Gˆ>%‚×>?z>\p >sÊ>}^>vKè>cG±>M’'>>¤6>9ýj>:ƒõ>7>,»>Ä>ñˆ>×S>-X>D¯ˆ>\|>où">}>‚E>„+>„©>‚ï>Š>‚ÑÀ>„¨¹>ƒÎì>€<¸>yÉ–>w¿J>z -€>~‰¦>pW>‚ß>Ø>v 2>l]s>i‡Ò>o'>v­,>xg¬>q ï>a0&>Mà>=¼>6êƒ>8º>=z>C!›>H<>Mšˆ>V‹Z>d%à>oÑ;>p™®>f¿>X„>Nœ¦>NÛð>[ž>q§>ƒÙ>‹u>øt>“¹>•€Û>– >“Ü>”–>Š‡g>ŒöÂ>’‘Ž>—ÕÏ>›Ê7>–>šKÏ>‹Í>„^Œ>y¤í>xjø>zÄ>t¡ >iv[>e X>l]«>y*È>‚ŠI>‡4¿>‰úë>‰/R>„ˆ>yN’>lij>eõs>hr}>r³ò>}×>zƒ>,°>€Xø>~€³>vZþ>cÐÜ>K@A>:•Û>>Ö„>VÎ>qðu>€¶è>€s8>u*§>d¯>W{å>W%¯>dâÔ>v/w>J>„)>‚PZ>sU>Z˜ ->J¬¡>MÒ>\,>jÀ>l.'>aŒ>PZq>CĨ>A¥M>K¤¿>^S>q³|>~³>~X“>nX>P†\>,™ >©³> ¥>€Y>AàT>b{´>t8#>|U>‚ Á>‡¾ë>ŒÃ>Ž0š>Š,Š>Ë>`×È>=sö>m+>Ï>%½¿>Jø•>p–‚>„p>ˆãÍ>†ÝÙ>dG>jîÑ>Wœ>Mª>L¢’>Lq¸>@×À>,p^>!Ö>/(>R9·>z9¡>‹ÈŽ>‘é«>™»>…WÒ>jþ¸>N¬>Eœ9>M´¿>SV§>Lž^>Gae>T ->n4#>€Í>€™Ë>v²¢>x<>†&ÿ>± >’w‰>‹ ->~ò>h¡ü>Z›>\t0>oìO>†4÷>’Ì×>š#Ì>œ¤>g’>Êá>›#Ò>“ïå>Œ;>‡ó›>‡µ>ˆVe>‡†[>„Ó>Åd>€9ü>€¾‰>ƒÀæ>‰TÁ>Žÿc>‘/>Ž>ˆ>‚ù>‹æ>„w>Š[0>‘¤¦>™HL>Ÿ½:>£ˆ>¢Z7>ž¼>™³É>”À‹>‘”á>Ê×>‘Â>‘¼H>”D ->š\b>¢Ê>ª‰Ë>®p>¬V>£'k>—>Žx>&>—û> ">£)>¡Âœ>Ÿ\>›½w>”$‚>†}>l÷+>YM->Uº2>]ÜÀ>n€ë>‚v>>êL>˜s›>¢XÑ>©à[>­0I>­*¾>ªO>¢c¬>—ëˆ>‘ó>•Û2> ÂÆ>ª;>¬¨>¦{•>¹Ž>•*>Tš>†#˜>‚?>ƒú”>ŠÐL>‘Ôå>•¤‰>–(ò>•\…>•›>—0+>™|b>›þ]>ží‰>¡%a> Û>’*>—9è>ŽI>„07>xrQ>oõ[>qX¤>{Å×>„€Ø>ŠZ>ŽÕì>’¹æ>’§w>Ž>ˆv(>‰·>>’v)>Ÿ >«Ék>¯Ûz>¨èÁ>œ[>‘Y*>z>Æ>“,8>’~>ð>…ºO>uGƒ>eB>jý>‚•G>”ç> ¤Ù>¦›~>ªÊ‘>°i²>µ—v>µ@N>«®@>œ¾æ>‘ü“>”Š>•ð#>œf3>žçÆ>›ô)>—O>“²Â>Ý>ÃÑ>Nî>’«Å>œëÅ>§Êž>¯}ô>²Fü>¯yŠ>§‚i>j>•ÖZ>’%ü>ŽãZ>Šœ>†3>…=£>†í=>Í>™Çî>¥‰%>©úû>¦“>Ÿ¡t>™´µ>˜Z>›Õ1>¡?”>£f›>¢½\>£†>¨UÆ>±‰q>¼ ->Á3>¾c>¸ýs>·S·>¹È@>»§ò>¹ÌR>¶Ü8>µ¦Ê>´‡>°âw>¯wØ>±“Ö>³Ïe>²!«>¬¬O>¦Èb>¤zÖ>¨õÐ>²§>ºˆ>¼·b>¹÷ >´"ø>¬îf>§&j>¨Ì>³u>ÀÐ>Áÿe>¯þõ>• ™>ƒêŒ> Y>…o>‡öª>ˆoR>‹ÉÅ>‘?>’™>Ž¥v>Œbm>(>Ž:>ŽMr>J>’ÎP>˜Í>›8Ù>•ôa>‰RO>€õû>‚ÿh>…îú>}€3>`3 >I›à>Cº>FÝð>O¯ë>`G”>}û¸>’ò> »À>¦¶$>¨âµ>¬ƒü>±Y—>·Aù>¿='>Æ›²>ÉÁˆ>ÉJ>ÅÙ_>¾¾û>²D>¤›T‡>™Ñò>4i>£ ¾>©å>©I1>ŸÑ>‘× >‰ -”>ˆú>Œ >Œú¢>ŠÅc>ŽÇG>œ¬>«ý>°×D>¦¯Ù>”Vá>‡Éf>‰¡Ù>–5>¥:u>±->µ¡@>¶- >¾T>Ñ…Ø>âý*>ç¶>àJï>Ï„z>´CQ>”‚8>€É>~ˆÁ>‰xf>“V>š¨Ó>¢>Z>«e¯>·u>Çp>Õ.Ø>ÚÖ>Ô<ü>Èõj>¼’}>°¥v>¦3>  >¡–ò>§Ò'>ª×€>¨k.>¤L§>£>¨m>´{8>Âÿ>ÍÇ>Ò22>ÓGã>Ö‹>Þ@º>æ/>èŸh>ämÞ>Þs>Ùmí>Ô­>Ψ>Éâ{>ÌL>Óë6>×­ß>Ópæ>Ê™>¾Ê>¶¤>¹+e>È€>ÚÝ–>剂>åzÓ>âõÊ>â‚K>Þÿ>Ó ª>ÈLO>Â…†>ÀíK>ÅF?>ϸC>ÚCÜ>àgø>ß›>Ô; >Á“™>²¥ ->¯oË>¹¼ì>ο>ä‰Ô>öR?‡†?% >ÿëk>÷ƒÃ>ðǵ>ëÀÄ>å£>å:^>ô?z²?ð#?vr? -ÎY?Íl>ïÝ>×Ì>džù>ÀþÜ>ÂÈ)>È%&>ËÁ[>ͬ}>ÒZÉ>Úý¦>çP¶>û~ ? -¸?ä ?·û?}Ñ?žá?¸=??>?Ì>䔪>Í¡X>ÄqE>Îq5>äC>ü'?ö?Å>þ>ïßî>õâ>ý1æ>õðù>æ0_>Ô›>ÁZk>¯è>§Úø>¬®>ºóú>ÐÅ>ëÛ?cO?­.? -Ô?³H>þh¬>÷ç¯>÷Êé>ð+>>Ü“,>Å%´>¬>•ã>ý%>¤`P>ÆNR>èhÂ?Y"?s?~?G?u>ôG!>ÇŠ‰>°³i>®$¸>¸9ì>ÍDë>é¹?m? -4¯? Vˆ?œ¼>õáq>éH±>é8>ææ>ãΓ>îþ®?Ëø? ÐÀ? oÞ?¡–?Øš???îæ?Tø?°Š?!ò™?#Ô!?0Z?#º?"°?'Iš? ­Í? oV>öÃ=>å‚>Ý8:>Úå>à+q>ìML>ò:->ìi‰>ààÖ>×Ù>Ò.»>ɦý>¿3>¿~D>Ño¾>쟘?eˆ? §Ï?yí?#5/?%ôL?bÖ?ù?‡:?ˆè? X?¼·?" -ž?"W%?Ü?C„>ìÝ>Ý,d>à$>ð;?Õ±?€Ž>ì]3>ظ¦>ÛÔÚ>ïóf>ø{2>åð>Ç>³Íœ>±>ºž >Ê>´>زr>ß,b>Ùæ9>Èg›>²{>¢òe>žcb> %/>¥zw>¬}S>°’¡>°¹U>²Ç>º…¿>ÎM6>懥>õ"t>öðâ>ñô´>ì¢>ì É>ëÈÚ>âµ>ÑÁ‹>ɵ…>Ñ­>ßí£>çAn>ç[Å>æ+ü>æ'>èux>è,€>Ûžw>È{u>ÁîC>Ñ3I>í‡i?_a?ô1?¹>ÿR»>öÙ1>ï|a>éB$>àrÀ>ÑW½>¿a>²º>³yë>È'l>è^>?ï¯?ƒè>þBÉ>éÂD>Ü Ð>Ü$×>Ú4f>Ì«>Äþð>Ôv…>ëêx>ð ­>ääŒ>ßÍ•>ßÔò>×w‹>Îry>ÖzÌ>ðÌ9?r€?‚U? ­d?89?X*?™~? -jÊ?L -?þ‚? -®‚?·×?>'?ân?òÔ? ->ø}>äØ>èTÕ>ÿÅ7? ¬Ç?P²?Eœ?¾7?ï? -¤Q?áç>þÞO>ò~A>ëÓ+>é5'>ã^«>Ú7y>Óí5>Õh>Ú¬Ü>Û£$>Ò*v>¾;å>¦îG>·d>vÂù>P<>/hˆ>¹n=ø¬Ø=Ö;É=Ç¢í=Ïê­=éD†>î>#Z>EžI>jf>„øO>¯>˜——>¡¢ô>­T…>À®>Ú>P>íª;>ì¶Â>á F>ÞwÇ>è=k>ðy >îU<>î^c>ÿ9? oÃ?Íy>úUÄ>ï“>ø¼?‰–?šÖ>æuä>šG>¤öÕ>Žù¾>uû<>LÄê>%a>= =ë{.=îþ£> D“>%z‘>Gå>n/€>Œõ:>¦ÿ“>ÁûÓ>ÙÀk>ñcó?Ž ?–?jÉ? Ç? ?—H? X”?û?$?)CÂ?+¡n?,©„?*ó?&Æâ?'ú‡?-[?1æu?0i/?'þ?Ë'? ?I‰?ÌG?-ˆI?<¯P?@5Z?=gD?9¬F?1}Á?#—p?žM?èý?-ºC?9z-?@sU?D$z?D>t?B5ˆ?A‹¼?Cª^?HþY?Mø„?LÝJ?I¨t?Kñá?O7†?Jµr?@uØ?7±Û?2T ?2þ?="i?Që¼?aŒD?aòÀ?Tz|?<ï?$žÊ?9P?¯?$ó–?3â?C5â?P,x?X½ð?Zà?U0?IÐ\?B<?Cü¯?EÀ3?;dS?(ÍÑ?!“X?2e,?Kvq?T˜Ö?N??FY—?Aƒ?:ÍO?16Ñ?)Æ?)vJ?/7æ?5É?8¼k?>>é?Gp?Lð?DR·?1^&?#ù?&ßÙ?438?8 ?3åÆ?7Ø ?Cz?Gé ?@öè?:(q?;É©?>›ª?6‰†? üº?Ô„>õTÿ?’¿?L ?2/á?CÛN?GI??>‘?3ÿ­?,úÑ?,!È?6&#?HEo?VlY?Z™«?YÙû?YjŽ?[ßœ?`tŽ?^Þ?SHÂ?FµM?@­3?=’Ÿ?5µ(?$ó? Ë­??ó?D´?*M§?@©d?MBÀ?N»y?H€?>)¼?3e?.£>?41›?>Üè?Inc?RÂð?[)b?^lÃ?TÔ?@y`?0¡‹?/@?4KÎ?4ܸ?2¤—?5•À?=õ??‚ ?8a?+ν?"˜3?"‰ô?(>Ë?*½?'[&?&Œ»?/=&??m ?Là¹?Qlµ?W˜?bºð?hŒ˜?^Àï?G??-Ïñ?$Ù¢?1l?DË’?P˜?RÞÓ?L¨´?B#ì?=‡˜?@¶'?Cv…?@†$?9­à?4Êë?4Êj?;LC?F”È?O?Ozs?KãÈ?N?Vj?Yš.?Y:f?X |?Ud?T¾æ?XK?WI?J7 ?2‹1?{?ç©?¬÷?%Û\?+È?$¶?¿Q?#|‘?4eh?=Õ3?:Òv?7'â?;±?D ?FÛ»?>æ—?;!û?Cï?IZ²?G¹¨?IØé?UÅŽ?^k¶?Uò;?A€d?11x?)tÌ?(è?08?: J?:B¬?38T?.ôk?,zD?-ÆÐ?8 $?Gø±?PÜ3?Pº×?PÍO?W½Ÿ?`Ô#?b›ÿ?Vœ?AMX?6E?CFO?Znj?gŠö?i—‹?h‹¢?as?Q—Ð??•«?- »?t­?7Í?%Œò?Iš¨?e’d?mä?c?KõÌ?;Kl?:¹³?=ú?;Ìl?;yÌ?;MÐ?>?I1?W ]?]K%?^áÓ?`W ?Y ?GZe?:{?<ˆ?F5?J·Á?MoÌ?S–_?WYW?TØ]?Qk1?S?Ï?Vš]?RX?HM?@ó?AÌÔ?M?]¡æ?id?qjg?v™™?s4²?g²a?[Lþ?N¬“??@±?4 -^?5Ñï?=å?E÷?PÖf?`Ã?i£.?f‰?[V¨?Q¤#?P8?R o?S|†?Q:É?J)j?Bþ?:Þ?+›*?!°?jœ?)­?B'Â?LÇ:?F½þ?<ýC?6%É?/1»?!m>? Í?d£?aÿ? ß? Ÿa??}m?#­Á?"ªp?MX??(’¹?9åk?@H?8ï¾?2SÚ?=±A?Xøä?odŠ?wÈà?v d?m@ô?dRC?bR?^ä1?NÉi?; U?8ä%?O?P?k5?uÛ9?lß?cKZ?eÆ@?jôå?on?s'÷×Å?6ý?"/?<è—?Iƒs?V#ü?d[?lH«?sÍ?u]ˆ?e'º?GÞÍ?;$“?J“q?aÆ?q6=?~5·?€Ñ?ol‡?^ÉK?bÌç?tÚy?ë9?†G?ˆ›j?ˆ×ó?ƒkP?q ?^”}?Z‹‘?a5„?jüž?n”Ð?`7ó?FG?=x3?Scm?s¤÷?‚¤ý?‚†ë?€j?yƒø?cÿO??Û?%O‘?'[Å?=`"?P?WÕ?W8ü?T²!?XFë?b×9?cÃ?Tf*?MåÒ?\ù?hq?^„Ê?Gã–?<P?L'?h7?p—h?g—“?eÒ?g;L?Zz?J°¦?Mðø?`Ý?q7H?yÔæ?qb?Xí¦?FqÂ?B„†?Gb÷?W—Å?lS?qÁA?g”Ó?_#N?dÈ?oË?u=O?q¥Ý?kfÊ?eµ -?]o ?Yqh?\®J?[Ìü?R*Å?K¾ ?X -˜?sÑ?„v{?†æ^?€ƒº?g!^?HÇ—?5Hµ??Ž7?ŽaR?Œaò?ˆu}?ˆ&ñ?‰›÷?‡D?„ã°?ƒß?|R?wEq?yó?z{;?€.Q?„@?ˆXõ?Ž1?‘[‹?†[?‰%#?i?|U?m ?‡?‰5?…0:?¹ï?}¯P?€b†?00?¹‚?šD?²È?„Ï?ˆ w?‹?ŒOn?Œæ?¨ê?Ž7÷?e²?‰ÈZ?€Ö1?puí?t!H?‚Ø@?ˆŽ5?‡¦€?„ü’?„U?ƒá?‚2D?ƒðk?„ýÛ?„)…?„ˆ‹?ƒ<ª?}!Ÿ?yäã?€ K?üÛ?på§?yu?v›š?eþ%?X¦º?]<?gkö?k‘P?lÜ(?s,?€€A?‡X?…¬ì?{$ø?n¢ø?g^²?dË‹?hÑZ?o…Ÿ?p£4?j t?cÙÀ?m4H?ˆ?‰…P?Žë?à”?\z?ˆëü? Þ?€rÕ?‚òp?‚D¥?„'å?Š?,?%í?ˆî¦?~ùÿ?juv?fT?uný?‚l?†õ?Šz?…¬?sÞP?]’?R³?Tñ‘?[Ù -?Zž(?aBš?yze?†,à?‰á-?Œ3 ?ŒsÅ?‰JÛ?êL?m-w?p·’?zž??ská?d°Ñ?h9…?€=¶?‰8ñ?ŠÃ|?‰´I?†k{?„?‚?‡>‚?Š¸´?‹o·?‹”4?Š‘l?‰2O?‰Úl?ˆYA?~Æg?q„?ÈÂ?‰ÌJ?‹¸,?ŠîN?Œ$+?Š0?„ÉJ?‚KŸ?Ë­?€¦¹?Ã?‚¥Ï?‡”œ?Œ\?Ž•â?hP?‰¹q?„ãÆ?€ ¤?p…U?XP?Gü?LѪ?]Z?rL?‚"‹?ƒŒù?~èá?y¦¡?z¡v?yAÿ?{Ü?‚íy?„ýä?‚m–?wU?jŒ?fš ?l»­?q™¦?h¶;?]¯$?h9?€?„ÆO?~‡Å?ju?X¤µ?S‰ó?]cÒ?cû)?YÛ?Rßü?b9¹?pÊ?ry¼?vù¢?€2?~ ?{‰ ?uÿñ?}bÐ?µ-?ƒmá?ˆ'?Š)ü?‚2?qo#?në©?mݦ?a(Ñ?Qó¼?U¦?qg?…¢?<*?ŽÖµ?‡¿Û?|•q?tìQ?uv?{ŽÅ?…ˆ·?ŒÏ?æÔ?¡?÷B?ŽÁ¨?,x?’4?ì?†\Q?| ª?}Ôj? B?€Öq?ƒÌ$?„ÈÎ?Ìû?}YM?–Ë?~Î¥?€Î)?zÝ?a÷?UÊx?dTï?r¢!?yŽ³?‚âx?…á–?ƒFz?ƒo?†Z‘?‡Ž?‰bå?Œ4S?Ž?™?‹‹á?žº?l.â?aXe?kû¥?€ÜÏ?††"?…ú -?ƒÐc?€·¬?y\:?wØ?wB¸?z¢í?ƒiû?‡¦•?†Ôl?† D?‰NÂ?‹â?‰ó”?…ÒÏ?€±7?q®?f,;?iÀº?q}ä?rXü?m{¢?jfÀ?lI?o#û?v'”?œì?„+?{î?rH‘?rd?vå4?sù—?k!?qê?xsÿ?r˜c?pQm?xˆ?Sñ?xL?n|?fÍ”?g+A?u-?‚Ÿ?u1?eÞ(?l\“?z-9?xÅb?v?€û?ƒØz?n'?~’?‚7k?…Ü¡?†A:?…K?ƒ9?€~ ?sç`?mû?wÂý?w ?€«ù?Æ?wý?oa0?mõz?db?RÚÕ?[¡?u3?}•m?yb¥?y¯w?wñ¢?pÇ??oÌC?m¹X?i2$?s8?€¥?ÈÆ?{ã?v/?t+ó?oÎñ?vC ?„(?ƒ÷?„÷{?‰C?Šz?Šˆ£?‹%7?ˆ¹>?‚?wñZ?sÍ?s›Ú?wžé?y<Ö?s*‰?g=?eS/?uµ«?„ ¾?ˆb?ˆƒ=?† .?ƒTŸ?{”I?uš†?wö\?~U°?ƒÑ?…o?„¡}?‚40?~SP?z\*?vw?uOØ?u§?kˆ]?d¾Ð?pÿ?z+?|nv?xK?hr)?Zd´?\ʳ?i–?l}5?f,þ?lX:?y°@?y\,?uÛ?|ƒæ?=¹?}p?w¢‚?x9E?z ¸?rΘ?n|.?}³??„š+?~©Ô?rƒ?v± ?w0‡?m˜+?i‹Õ?r\Î?‡?ˆ8?Šô?‰kP?ˆ°î?…Ó}?{Ì\?jŸÖ?l a?€ð ?‡ÃD?ˆJ?‡\µ?‚f‡?sñM?rÙd?‚Èõ?‰ƒ?ˆôA?ƒso?t-¾?q]?~½}?‚P?ƒó?…È•?…?ƒ!u?}l?w¸?p‚ˆ?aA2?aÜ?sãš?yße?vàR?|QÓ?ƒ ?…e?‚fý?~#™?€%a?c?P$?ºP?}Ñj?|·?ï1?~Ï?m†Ç?SF,?V"™?ikT?nŒ?`@D?W¾ü?h½ù?vƒl?|§N?€Kä?€í?Ë?|j?~q?˜K?~íˆ?€?!?|öŠ?tÄ?tD¾?yB}?}Ùr?€;&?€¹?€›?€3§?l?Eé?{›3?rôÅ?r…?z0V?{¾'?w×{?zôZ??‚O?€ ?{§q?|gù?d?ëÅ?{™?tdš?u>]?yÓ?w?xVw?{à?xóð?x½§?|ß$?€+Î?€ü9?€ëÓ?Ð*?}=P?}4º?kq?I?–x?€Ñ°?{ÏV?sË~?rc?xWÌ?~å?~ÃÎ?wà@?nq?n€?sPÿ?vÀ‰?wžÈ?s™5?u#?{ï?}N?y¦?u‘‰?x½?{B¡?w«à?th?wN¹?u!?laõ?k¸S?uÓ?x§+?t7'?suP?s„?s†I?so7?l´Ù?j)0?l®¹?möþ?q¡Þ?rlÀ?s¬?wœÀ?z>‹?|l?{îl?|¶?}ž?~‘f?}|5?yÃ?uýö?ww:?y‡Þ?z3§?|:ó?|è?ecÒ?gJý?g ?bºì?`YÍ?c:â?^Ö#?W2©?V§?SnÎ?U˜?Z?]ÍQ?ew¿?j†n?i€?gqÔ?fL€?e<þ?g,‰?b ×?V‰?Vo?]B?c²'?fxš?bò?^€Z?^Ž$?^Àó?fÓ?jù³?kb:?hæè?c–ã?c¯‹?c&©?_dh?_•C?]¦`?^'z?b£ž?f±$?fÚ~?`Ü ?^??dƒ’?kU?l…X?kµ ?i½ˆ?g¹Õ?f´?g¾?f:Ý?fU ?jÒ?kùž?h¿ù?dOr?[äZ?[7/?fZâ?iäÍ?`Ã:?V~O?_šê?ix£?jV{?c§w?Z0B?\ÿà?_‰?\™J?a97?`ø?\ù©?]rU?[u?Uk¾?\x‘?g{¿?j ×?j?h P?_ í?TÓ?U£ÿ?`$?gQÃ?b4™?V¥?Z$ß?fO?hñ2?iiþ?iv¸?fN¥?[òZ?X‰ý?bK%?dOË?W»©?L†7?Xé?e8Â?`—+?St?Wd ?c•Û?fã ?d7i?_€?[«ç?^±¸?aæÊ?`"?c\ž?e±[?a¹­?YÀ ?YÔ?a??eY¬?f5¤?c˜ó?Z -?NÒõ?@ô'?4p?5=|?E(N?Rš~?\ís?bÍ)?dzà?e=|?e‡1?e‡?e¿X?e%}?b’-?ZÙe?PÞ?Q›?XP?_¤Á?aì|?b@ ?`–§?[—?\êœ?b'?bY­?_T2?^v¶?`?aY?aˆá?bC?a5?_É?YaŒ?Sqà?X Í?]¡,?^;?\ o?X³¯?T8?Q¬w?J¿¤?8:è?]ï>ð0?åD?=„ü?N¾?OY½?QÉs?U÷–?U%g?TÍ?Z ?_GW?^²×?\JÕ?\­å?\ì?Z?XÎ ?\›˜?]±[?T9ˆ?Güº?OR’?Z2N?Zâ\?\Ëz?`Q?^šæ?Wrû?RÀð?S¿l?SÑ‹?V¾è?\Mv?\ -?[ÐC?^…k?_M?_ù?`.ß?`?^Nó?\Ê?\ Ï?\oç?] ?Zíq?T˜w?Píz?Vü¦?\1S?\›§?\h·?Zº?Rʪ?SA$?Yƒl?\Š?\ؽ?[Ɔ?[Ü?\*?\ûÐ?]”[?]Ó”?\D–?VìÎ?Pßö?U0ÿ?Z˜?ZÏp?[îã?\?[‹Á?[Âj?YAµ?O!d?KÐ?SZ ?ZÞ?\ß?]«¢?]“ã?]:g?] o?]%?] h?[Ÿ¿?X"?V‡L?X=}?ZM£?YÝ?V/4?TÃ$?W½É?Y¤v?Y…ö?XˆÅ?Vo€?UA?RT?L¶ñ?Oª§?U‘õ?V´ó?X¢’?X k?VG?WP?V½Ä?Td??U|â?VïC?WÜI?V}"?Tɲ?T»Ñ?Tb‰?S×ú?Uš½?Uj~?På´?N­?Q”ƒ?T„?U¹B?T‚¼?SÙ×?V¿…?XW³?XP\?W’.?Uiú?Q¼5?QV¤?Tt?R÷Õ?R\Z?S†?U<Ý?U›È?U¯Ë?URŸ?R ë?NoÝ?NYm?Q©€?SØA?RÏg?SM?R‰R?OµÌ?PÜž?SÇ?Sì?Søy?SÄ·?R©ù?Rä ?S ?R­Ë?R=b?RØØ?QÑT?Rv%?Tð?TQÉ?QËë?Rv?T_É?Tt‰?PÞè?Jh ?LXî?QÒÒ?RxY?R«J?S*Ï?R6™?P¸é?M;M?J4?K¦D?Oa3?Q+?RLG?RÀÜ?Qí?P$/?I®?F}Õ?IðR?L a?KV?L‹>?P¹‚?Rˆr?RUí?Qý?Qm­?Oín?Ožî?O«¼?PXÊ?Qš??PQÿ?LÂs?Lj(?NZä?Mp9?N%„?Q5A?RÑ?Rs´?Q`?O®?NÙ?N¢?N}Þ?P Ü?PÊ ?O0¬?N`ì?OÎ@?Oe>?M/Ô?Ka‰?Ib??J’?Lk)?M1?M]?MŠ™?K '?K õ?MCu?M­«?Líå?KkÖ?KwÑ?M^Í?L®y?LÍ?M¦BV?C¯÷?Iô?LÅB?LŨ?L?JýA?Kç;?LGL?K6?KÇ»?K%?Eg ?BÀ?Fó$?EãR?Aªÿ?CK ?H%?J«S?IÓ?Hž?Fg{?=Áš?>êf?G`,?I17?D8Ž?@ÅŠ?DêÂ?I0³?IÐð?IdŒ?Iè?F™þ?DŠ?C±Z?B§?H›K?LnÒ?KÖ?KCÉ?L[†?L¹Ž?L «?IcÞ?GmÃ?H™Õ?I´‰?IŠ‰?Faz?Eèð?FÚT?D¹»??ì£??ÎE?EZÍ?H–Ÿ?Hÿ°?IñŠ?IBŽ?GÒ8?Ia½?Jàg?G¨¹?BV??oÌ?Cé?F?ƒ?E}$?E|c?Fìš?Få?E}¦?A ?;Û?=ÅØ?D¾?Fö¬?G‹P?Gh?Eh-?B ?Bþ??ã~?;¥¤?>Éû?A®q?>0?:%?:›œ?;ÿ?9ýÛ?9¡;?<òã?>Ö½?@·š??«?=`p?@Þ”?=¶ -?7s?;;??¦K??¿?<·?<,?=/>?<Þ+?;OL?6®J?5ú4?:Ç5?<Ƈ?=ãQ?@Ù‰?Aǯ??zÖ?< ?=‹?ƒæ?<¾ù?6??5Š=?:?< P?=ËQ?>Nî?=©õ?<%‚?:±Ý?:i?;Ÿ‡?;á+?:À?7 -E?5Ò†?7,±?3Ô'?,tN?.ôô?2¥?7+~?:ë¬?:d?6À”?3äý?6l}?9ã?5ë”?0¾Ž?0ÊÖ?1„‹?6¿ß?9÷¡?9#Ò?8Eº?6PH?4é?7:„?6´?2tÀ?5?4l(?3’¸?5˜¢?7i¡?9r~?92!?8C>?9?859?6²Ó?7Û?7™?6äc?4gd?2#?/'?0§O?5ç}?7¿?4'¦?2æã?5d³?7\¾?61ˆ?4ÁÞ?63:?5Û”?5P,?6õI?8ßp?7àò?5?3?-bƒ?*ªÄ?+í5?0ž8?2P?0õ?4_Š?68ž?2ƒ"?.ÊY?2y?2ík?/ ¾?-»÷?&œÏ?(o?.45?'kU?&|?->?(4º?+íK?.ªC?,«É?)±?)‚ß?-"J?/"a?.¬®?-‡/?-kQ?.p!?.ß?,”Ã?-‰w?. è?-M™?+?)ÎÙ?+ï¨?*ü?*?0?*µ‰?*Ì?,i?*Ä?*aÒ?,Þ?)íÞ?(Œ¼?*¾K?+¬?+qw?)ï?')?&ÑÒ?)Ð?+(£?+QK?+Jõ?*­?*Ó>?+#?+c?)­þ?)(î?)\Ÿ?)Wð?*4$?)?)~Š?)¡#?&°Ý?"…w?"5ˆ?$V ?(‰©?*=l?*ƒ&?*™‰?*aS?*S¯?*â?)¾?)tÐ?(Æ?'§B?(Î?)$\?(Kï?(‡Œ?)Œ?)>ø?'±ý?#7-? ±ã?B.?Äæ?N×?›?ö÷?!+?&0?%r®?&j?&éà?(Ï?'ñ?%ÔB?#õN?&õ?'/?%ß,?%nü?$é.?&×?&Îb?&žC?$‡¬?!¼w?"z?&Ä?&̳?&­ô?&j¥?# ê?ÚÔ?Ãq?#[?"¬ß?#þ#?#Q ?"C|?þ -?ÊS?å?ß„?#‚*?$j?#×&?#îR?$E?$`‡?#AŠ? Yx? Ž†?×4?lz?\}? x=?#y›?#üÉ?$R°?#|¨?"ÑS?$ -"?$)Ú?$3K?$@Ü?"°å?d?Ø?hÚ?ëÌ?!®«? ›? \•?$ Î?#ñ¬?!T=?²?!‘Å?#ì?#^ˆ?Þ?Ä)?fH?!#7?# ?"öS? ƒ9?¡h?âq?!ß©?#ð?$k7?$M~?$6#?#õx?$?#‡?"Ç?"75?‰2? •?ÚÀ?7? +#?!Ë?!u©?!rê?!´î?!–ú?ùè?ÛÂ?Á-? ï?k? {ô? ä ?ǵ?ÖÞ?\9?›©?&Ñ?A/?1G?kù?÷?H?€e?Q?+?è@?¥?›%?¡*?Z‹?P±?¡?­4?á–?¡Ü?Ë6?Ó?Ò?(€?q{?þ?0?&+?Î ?Rv? ¢?‘p?Ÿ?o?€\?¤?Ìá?^Ç?X&?rÝ?…´? -/?å1?b¼?ä?~ð?)?­Å?È?hÂ?Ëb?ÑÚ??h?õ?µÎ?š®?Zª? x??À¡?‘²?­¼?Õ“?K§?ÞÔ?kË?"Ú?žJ?Û7?ûL?PÙ?¬=? <­?*Î?Ü4?‡0?š?Š?•s?Ø?É»?HU?’Ø?\™?(Å?ý?ê?É?hÞ?a¯?ˆF?Q.?Ãb?W»?Õi?D?? Øq?Ä-?ö? ?i¡?iÜ?¤?ý²?»?»Œ?9Å?­^?¯Þ?’%??å¹?h?m1?À]?q:?R¨? :?v -?ù]?=â?¼N?dG?ç?ao?œ_?G6?%?ÿ¤?»•?=7?¿?Dà?Òô?hk?(ó?Í%?°W?V™?õt?+”?:5?=b?‚Ž?VI?Û?€?Ìg?Ûì?·5?Г?uÖ?b?Â?Vå?”v?«?¥Q?ŠÒ?°¯?ÐK??0?¢Ô?æã?”“?¸Ç?<?¤? L1? :y?‰Ê?Áƒ?½„?^? b? l€?®? É’? •o?™ø?Ë>?ºI?V+?ð?yP?QÝ?§C?dL? „³? eâ?o¨?¯ß?æ? >§? -$? R?È3?¶ ?$¡?ƒÉ?¥­?Ÿ? Ë—? 4S? ú?£? üœ?3ö?%r?–Ñ?B? —_?,?ß%?F?t‰?X? ‰ž?}Ã?Š{?°?ŠŸ?|?ÛC?Kç?¬÷? Ÿô? @¹?S³? ÇÙ?{?Ĩ? Ò½? -Ê~? ý? •|? XÞ? ²I? ?3?»Á? wk? òÃ? _?·z?Fí?"N?£&?8q? :²?©T? lœ? Ç”? "?Ô? -•¸? Øî?Ý^?°î?—¸? Ñí? -Ñ? ´? =R? ¯? ?fš?W¿? e×? *â? çU?ò?IÕ? 6ë? |‡?Ôõ?)ê? 0x? -Ái? ƒÉ? -V{? ă? d? .I? -º¥? ÷ ? €@? -€:?¦ë?ó+?åG? --´? Ô?Œ ? Ñ"? -q»? ëé? ÑÇ? (? -tË?Á‹?»š?‹ü?ºó?ÖW?X^?è?­Ý? iO? òû? ¾? íî? ½;? -ã? *#? K?d2>ùÀ~?8ë? ðÅ? áð?2? Éø? …¸? -B? -Í ? -÷D? -L? -. ? º?%>çL*>£ï¡>°SÛ>á ù>ôôQ?®0?Q?Â?H>þÞy>ø ¶?†Ž?è?§?Ï0?ê,?—?¡B?#û?Ǻ>òðÅ>Û`b>¸ôâ>‚–ç>Læa>•*>űì>ãÈP>õw-?'þ?ã‰>û¹’? a?ù?ò?`ƒ?ƒE?ôÇ?Í¿?»Ù?`1?+?†5?J;?Fd?Í?Ñg?pÍ?Ü ?ÃÓ?Ÿ’>üc>ò–«>ù¤‘?£`?dŠ?·Î?=v?i>ú›‡?„«?‹?nu?N„?°ñ?þ,5>ù ¨>ÿÖš>ý\4>ôr>á¢æ>¹jQ>w ¾>y$J>¸)>Þ}‘>î¯>õbŸ>õ~<>ó“F>ÿ¡Ÿ>øÈ€>ûTó?2/?>ó"±>í{"?ÑX?cY?ÐË?#¿?%v?Æd?c?çG?7?$>ü«>ÿÉx?"1?Y=?=&?AÛ?\Í?·(>û¶Õ>üÀ×?h??‘p>üµý>ÿŒ+?Ô>ýŒ¬>ýu‚?´­>ý3>íÄK>å~>÷¤…>ýßÝ>ú-ª?è ?ô…>ý"º?lÌ?Ù?Óö>ý1>ù7J?”¯?¤d?`½?ȃ?f?ç?~9>üä2>ø=>ù‹3?:L?T+?RV?Ö>úz¼>ä\¹>ê Š>ý/?|â?¥?¢?Ŭ?>ûO>îrÌ>ýòu?„?O¦?ä^>ÿ£î>ùGå>ñÁn>ûX?>þ¯k>ú°^>ý˜a>ýÔ{>ýSa>üç…>ùvà>õWC>èNª>Û¶p>ç‰ >êÌ>óŠ^>ùÝÉ>÷÷>õÊ>öü>õü”>öýî>õÚ>ù!£>û£¼>úI­>õ)>öN>ú,>ø˪>ø ->ú ->ú/,>úPK>øßô>ó¶›>ëãc>ó`$>øm‹>õV>òå¶>óùª>ñ1?>éÐÚ>郃>ó>ö–¾>ø`>øÉR>ø‹Ø>öâ>ò£>ì{>íØ>ðþ$>õ6¢>÷Ì’>÷³>÷J>÷b/>öÙì>õÜa>ðñ!>îïí>ò”°>õ;>òä<>íÆ©>í‡>ð‰>õþ>óró>ó¦k>ô"Í>ó!7>óhÊ>òÌé>ñK>ëJ>탱>ó,>ñøÔ>ëö×>ã:;>ß`.>ÖѨ>Ð;Û>à07>èŪ>瀢>éµæ>ìðb>î}>îï{>ð›D>ñ >ìö´>îÞ >ñÀ~>òk>ò -m>òe?>ñRÉ>ï ¬>ðJV>òDL>ñGf>ì)í>Û ‰>ßÉ>ïìn>ñâs>ði>ð1¨>ïàà>í*&>â•Ù>ã×Ù>îS->ðn>ê‚ð>ÙÆ*>⇠>êßÏ>àñå>èI>ê;0>ë¢>ë¾!>êîå>ëê.>ë.c>à_@>åÁä>ë’>å¢`>çï\>í;>í¶>ígU>í˜P>ìè.>ì²!>íRû>쾞>ì T>ë8p>ëǼ>çàù>âÂñ>èÄ>ì|V>낽>ê¶Ý>ë’>ëàù>ê¦}>çÏL>ék@>éÆ#>èj7>äÔ>ä b>æìt>ç3>æ·Å>æ‘r>éDü>é9²>é›>éXª>é ª>é(<>æg>åY]>æíú>åÑ‹>æAy>Ἰ>ÜP>ÙX=>ßû“>ßcg>Þ!¥>äñÂ>âQ]>ÛËp>É¿J>Ãa¯>×Øv>àŒ/>ÝÖ.>ÙÝe>âz*>â?x>Ý.^>Þà>ã‰Ì>âûÿ>Üǃ>Ú¼k>Úö*>Ûj/>Þ4>ÝD%>ßô\>ä¶Î>å‚­>å7G>æJ±>æ#÷>ä¤K>äõ.>å;¶>äÉÏ>ã4œ>ß½Î>à¯N>â:?>à×Ç>⺾>ä€,>äx!>ã!>â1~>áûü>áW¡>âØ>ãM>ßK—>ÞÊ×>áò>àú >àÓ>âSÙ>ãÙµ>ã>àìÛ>ãu>ãFñ>ã1*>à–>Þi>á9Ä>Þ’>Þû‘>à¸O>Þ¥g>ÜK >ÛbZ>Üdv>àªk>á>àœ>ßTN>ÛŸç>ßz¹>áRÁ>ߣH>ß24>ß|>Ük¼>ÛkÀ>ݬH>Ü+>ÜÏp>ßGï>ÝÆ ->Û(e>Ùû3>Î)>Ót£>ÙL>Ò©‡>ÇÓ>ÖÙÁ>ÝZO>ÚÒ>ÚUo>ÝêÐ>Þ< >ÛB>×Y >ØÕÙ>×®G>ѹ>Ù”>Ú4Ü>ÕN™>ÓZ[>Ù>ÚöI>×:>Ø_Ž>Û|Ë>Ü"µ>ØßÈ>ÖvT>ÙØ>Û@ò>ÙÅU>ÙR>Ú\~>ÛÓ×>Û«†>ÛF¼>ÚRŠ>צŠ>Ù·>Ûœ>ÚüÞ>ØâÅ>Ù—>Ú””>Ú$">ØOR>Ö]¨>Ør$>ØX3>ØßF>Ù¿$>Ù÷>×™A>Øn>Ú=Ì>×µ#>Ö£Ø>Õñ‰>ׯe>ÕÑv>Ô”Þ>Õ÷Ñ>Ôƒ¬>Ì¥;>ºB>¾;">ÌËZ>ÑPÇ>Ô’>ÔË“>Öm“>Ö>>Õ3>ÖnÀ>ÖÀû>ÑkF>Ðð*>ѯÞ>ÔËØ>×EB>×%µ>×JŒ>Ö&§>Õ¹­>×û>ÖÎ>ÔY ->Õ\>Óá'>ÒQz>Íê>Î×T>ÑÅ >Ô£Ì>ÖÆÛ>ÖØM>Ö'>Ô{ >Ìõ>ÏÈ>Ñ]“>Îb¹>Ô_>Óœp>β2>Ð{„>Ï„ÿ>Ò/w>Ôá>ÓÆœ>ЧÓ>Ε¢>ÐKš>Ð`>Ð5>Æ&è>̹ >Ò†>Ò‡’>Ó Ü>Ñ­|>Íz->ͯã>˧Œ>ΈS>͘4>Ïáª>ѵw>Ï‘é>ËF˜>ËNy>Íó>С–>Ñä>Ñ!˜>Ïd>Î/ê>Ï >Ñúü>Ñ» ->Ñê§>ÑT>ÐÉ2>жü>ϹQ>ÐxM>Î}É>ÍIT>Ð ž>ÍΑ>Ê’">Äõû>Éc˜>ËÙî>Ëï’>ÈA[>Ìç>ÏV²>ÐS >ÏË>ÎÔ >Îì>ɘÅ>ËcÒ>Í!>Ë[>Í B>Ïi >ϾË>Îâl>Í5´>ȯ>Èã¡>Æ©<>ÊÇ¿>Í” ->Í…ô>ÊÚ3>Êp*>ÊÙÊ>Íç°>Î>͸ >ÌUN>Ì=i>;Œ>Í©ù>ÍG¢>Ësë>ÌOŸ>Ë¥Ÿ>Ëš8>ËØy>ɦY>É„>Ì>Ëk­>Ëi#>ËÕ<>Ì'±>Ë2Ì>Ê1è>È­ß>ÈKI>ÉŒë>Ç%>Æ´>ÊÚÐ>ÊúH>ʵ3>Êõ>ÊG˜>Ë`ã>Ër¥>É›à>É«˜>Ê=#>Ækå>ÀÊ9>Ãáñ>É5µ>Èé>Ä@Š>Æî¶>Èæ>ÇàÛ>Èëß>ÇŸð>Ãð¿>ÄX>È-e>ÉÖe>Èÿa>Ç,O>Ç=>ƺü>¾AÛ>Ãǘ>ȾÙ>Èœ>ÇF>Åö >Ç?=>ǧu>Å׃>ÅMi>ÆËB>ÅÝ[>Æ9>Æ$¯>Æ@ê>Ç#Ì>ÆÖR>Æ*>Ʊ>ÆvØ>ÄöÄ>ÅÐ!>ÅÔL>Åï`>Å9k>Åh >Æ^>ÃúJ>ÃÔ¸>ÁFÕ>ã[>Ä‘õ>Åz>Ååà>Åoö>Å\…>Åœ>Å’>ÄP1>øo>Ä®ñ>Â|†>Âñ>Âõ´>ÁUs>Át>¼š0>À‚¸>Ám„>À?>»ŠØ>ªðu>¨#*>º >¾žÂ>¾>Àk>Á­!>ÁÐ>Á=~>ÀXG>Â~å>ñ>§>Áî£>Á\Ó>À50>¿O>Á¯ÿ>ÂÍ>Â_Ò>•Î>•‰>Â]>Â8>¾„¶>¼'>ÀHÄ>À’Å>¾¦å>¿¤Ð>Áau>ÀÚh>¼Á>ºt.>À-°>ÀÊÅ>À‘r>À°>>À>ÀmC>¿ø¿>½>º„f>¾Ã>¿Í.>¾Äã>¼œÿ>½Ô ->¿ß›>½t(>¹ýø>¼>¾ql>¾~>½)H>¾ôh>¾ÿC>¾&L>¸>¶+;>º”å>½­Ó>»­Ü>»HŒ>½S¦>½|>¼ü>¼|N>½ç>¼Có>½¡c>¼Ò|>·ª >¸Ç>¼fÏ>½M7>¼Í´>¼¨O>¼á`>¼ð>¼}Q>»eÒ>»Vr>¼5Ÿ>·ò?>¸Ã­>¼MÃ>¼i?>¼>l>¼+R>»ôX>»ºÿ>»$¿>ººá>»dt>»³>ºç®>ºÅ >»hð>»g?>»0L>ºóú>¸še>³üä>¹‚b>ºîÚ>ºŸµ>¹Ã?>¸7Ì>¸}¢>¹¶A>¹_s>¸ûñ>·0>¹P}>¹¿:>¹S>¹Y2>·u>¯5&>®ò>´0y>·ÞW>¹ˆ>·_ü>´:÷>²Ñ>¶y@>¶Ã*>¸Ù>·¢>·›w>¸#>>·ûÊ>·>J>¶q>¶ßz>²]µ>²£>·6ã>´uH>³ “>·W>·3Ì>¶×>¶(,>¶F‰>´®¾>°†>´äg>¶:‚>µ˜‰>´&ä>´¾W>¶2Ñ>¶<ƒ>µžÞ>µ¡à>µ˜°>²3*>°ÄV>²ç‹>µŒç>µ#€>´;÷>´Êµ>´Ã->´´À>´÷£>³Ní>²5Ÿ>³1>«ï9>£¼>§\>­œ7>²ñ>³ÖZ>°wM>®Î¤>³>³Çà>³ä)>³¢>³há>±~/>±®J>²>²‰>±¼,>±¥>°é€>¯®>²6G>²Bh>°V©>¯Ðô>±@á>¯«±>¯ä>°€>°Öz>°å>®Qµ>«Â›>®[>°³4>°÷ž>®Ø²>°'>±p˜>±3>°è€>± ›>°Œ>¯†>°…¤>°àl>°„>°šù>°W1>¯=>¯>®ð^>­Û>¨è>¤+Â>¬¼>¯ñ“>¯ß„>¯f%>®*‚>¯i>ª*>£E>ªõP>®†±>­]>®R¥>­¶k>®q1>®ã >®žV>ªƒ‹>©³V>¬Û\>«jW>®‘>®Oi>®?>®6>­™m>­+:>­‡Z>­r¼>¬ô>¬ö>¤g>©fÑ>¬Î>¬7ÿ>¬‚Ã>¬>¬HË>¬DÄ>©Àj>ž†à>žté>¦d>tA>ŸéÙ>¦£i>«’>ªè»>ªí‰>©5$>¢S>©Q->«y}>ªà]>¨zï>ª*4>«ù>¨lö>¡ê>ŸÊ>§kÑ>ª9l>ªÀŠ>ªe>¨Å >§.e>¦€›>¡Ø$>¤en>¢Å>¨¾ê>©¿>©Tt>©)à>¦’i>§>©“>©%G>©+˜>¨ñ>¥5“>¡ºÈ>ŸÈð>¦P™>¨Ö>§óŸ>¦JÃ>§&>§¦>§Ž—>¨F>£nÖ>ªð>¥€Ÿ>¦ Q>¢n>œ–°>¤ª‘>{R>žœc>¥è>¥3ï>¥Ò.>¦DÙ>¥ì¹>¡ë‘>¥‡A>¦»È>¦åF>¦î+>¦ÛÎ>¦•°>£0þ> ”¤>£´É>˜RØ>žg9>¤«–>¥ÁR>¥KÏ>¡û>œÝY>Ÿó>¤v¡>¢Ät>¢3{>¡Tó>¤~²>¥>¤N%>£4C>¤$#>£5H>™ >D>¢ÖL>£(þ>¢ƒG> ‹ä> DM>žã»>›x®>Œã>ˆ±>™º>ž‡¤> †> ) >›ë±>œh=>œ¥6> s—>¡1>œ-1>œh> èÄ>¡;ž> à­>žçV>–í8>™±R>œk[>Ÿ$°> †> Î“> q->ŸÆ‡> sÐ>Ÿ½J>Ÿ•¼> À> $Ô>œÚý>›>d>™2 >œC$>žºÊ> .Ç>Ÿ">žc«>ŸF >Ÿa—>ßÈ>Ì>Ÿ¬>_ >›}>Ÿpa>žiê>œ°ë>œís>Ÿ£>Ÿ>ž¢ž>êd>í>žg3>žýˆ>Ù>œî2>²•>ž0Æ>O]>œˆi>ž$ã>• ->¬9>e>ˆ>¾d>Ss>"œ>œÎF>œÖ×>˜l³>šô¾>›i•>šò&>˜¥à>˜ ‘>™T¦>œ†¬>œ¹Ï>œ@>˜úë>šXÐ>›J–>œHí>›–¸>™>šÈ>œ­>œ‰È>›ýí>›i·>›ê>›[>šð’>š™˜>—ö£>’±T>”ZJ>šÀ>›B¼>–úF>—ÈZ>–ß>™Û>šó‹>›0>™ˆº>˜F->šé>šš>šfì>šÿ>™$~>™pt>šÀ“>šRó>š<&>š¿>˜|,>— >™Œ‹>”PÝ>O˜>”nÅ>˜ŒÇ>—\ó>™^¥>™Ô´>™ƒ¬>™—K>™Á>—v«>—ž–>™8=>—?>’Ê=>’ÚŸ>–cÜ>•«”>“yÏ>•?8>–Ö>— X>”õV>•=d>–ky>–h>—OÜ>—Ó>—VÛ>—Ò>’Õç>$ï>”Bm>”}Ä>•Â>–Üÿ>–*Æ>–1>–Fò>•Ôz>“”5>“tï>–,>–¾U>–™Û>•Î>•‚®>}—>’›Â>”r >¾¿>ô›>’ª§>0<>#v>”Y>“&f>îž>Ž>Œ >‘‰u>“?°>’Ô”>‘€s>”q>“(k>²;>“ ö>“Ì$>”‰Ù>”Qv>’â1>û>’©ª>’o>‰h>Üö>“œx>”;÷>“BK>“‘Ë>“Ù>“Ô>“ùd>’ÌÀ>‘_z>“z<>’ÔE>’>Ï>‘Da>“6S>“%<>’9¿>’§>’×>±M>‘5ƒ>’«%>’p“>’§8>’!8>Ú½>+«>¹á>‘`È>ÞË>‘ØR>‘ܽ>‘G>K>•#>‘ã~>‘à˜>‘W@>P>Žv >ið>‘%>‘+ >p“>‘ €>Ýþ>’J>Yö>t¡>v)>Žæš>\>ŒÌ>†õª>Œ> ç>Êÿ>Ž/î>Œ>‡Z+>‡¢>äq>Ž@œ>‹+Ï>Žžm>iÕ>‹Ï`>‹/>Žð„>ŽUÎ>ˆÓº>Š‹>Ž!‘>ª€>Œï>ŒI‘>ŠÙp>ŠN>„…>ŒÅÐ>ŽWè>‹v>‡•Í>ŠóF>Œç>ŽÀ>*>Pd>€®>†Â >‰*ä>ŒEº>ŒñÅ>‹v3>ŒÅþ>|ì>#»>ŒÙ¶>Œ­µ>ŒÇÑ>ŒÛ0>Œ’Ž>Œ>Œ¹>Œ…>Œ³T>Œ ƒ>ŒÜ>‹ÿ~>ŒkÏ>Š›Q>…[I>‡c9>{ès>†|Ü>‹È¥>Œ¤>‹ÂÀ>‹#>‰e¥>ˆ¥>‰)¯>‡˜ï>ˆD’>„­Å>Š—÷>‹:>‹-§>Šã‡>Š‚8>‡Ò£>ˆÖ^>ŠÕk>Š?j>†½¶>ˆþ>ŠEù>ˆÆ>ˆ¤Š>‰hY>€ÿb>„qï>‰ñ!>‰Šº>‚íž>„ýŠ>‰<“>ˆ×§>†•>‰™>‰j>ˆôì>‡f‘>„ä>‡Öô>‰Yt>ˆç>†èÉ>‡ž >„èz>€=Ô>|RK>†ç¨>„õ!>¬›>y›>†ÝC>ˆE ->ˆ²>‡û…>‡ûI>ˆ$L>ˆE>ˆ·>‡×Õ>‡¹>‡U>‡uX>‡¹H>‡‡F>‡é>‡Aa>‡%>‡Rˆ>„xØ>˜}q>©;ã>¶Ÿý>ÁŠ°>Λû>ÙÑ£>ÙªŒ>Í{>¿ë^>¹dÿ>µÎõ>ª‹:>”±a>{Ÿ>ctÞ>oÖ]>Ž7ì>«z>Ä2>Ït>˳L>½w·>¬‡>žro>’Š‘>‡>€.)>†¢>š>Ø>³ÑB>Æ“>Ì€Ó>ÇÍ€>¾¼†>·E>´i>²×™>¯'©>¬“á>°S¯>¸;>¼fø>»¯>ºØ>¼­>º@4>±lu>¥í> ²À>§œ>¹¤$>Îú'>Ûêf>×üN>ż>®Ø>ž‘t>–,9>Žõ<>„¼>r:3>_>¢>Uû>>[µ>qKt>…·W>Œ,æ>‰Ý>‚úL>€»Z>®>oâ¾>OgE>1*¥>,ÿû>MÓ>>…#>¦¥Ñ>½¸Z>Ç  >Èé>̇>ÕÌŠ>á™>éûO>ë7>æl0>àߌ>߬Ý>ãâ>æŠ}>åŠ>á¨>Ýìh>ÜÏ>×.>ÉùB>¸/v>¨5˜>ëc>š->›»;>Ÿ²É>¤[>«•>´(>ºœ²>º$½>µÈ]>µ%×>¹÷½>¾“`>¾¬Ó>»ãó>¸ý">¶#>²ß#>¯m‡>«ñ¬>©#ú>©¼ >°>¹¾‚>®¿>Êuž>Ò¥J>ÙÀ6>ÝŒx>ße4>á¸I>âÙ>Þ<‹>Ò—ö>Äé>¸P¸>²¿ê>²Ú·>¶í>»õ!>Ç>Öû>ä÷®>ëÕv>춅>êƒ>ær4>áG>ÛþÑ>ÔË=>Ëb‘>ÀÄ >µkÖ>¨¡e>š¡=>Ž&¬>†‡>‚M¼>ؼ>†Ï;>“ÐÑ>¦ Ã>µò6>¾°B>Â8¸>ÄÁÌ>ÆmÍ>ÃÍÑ>½eò>»¿@>Ç:>Ýl¨>óZ>þëc>þ±¸>ö±>ëµ<>ç›>ê¬ç>ðyS>í.Ï>Ú¿Í>½ò[>¡7>Œ®|>‚±,>SÄ>…éU>Žj>˜ó¦>¤ã>®Ü)>¸}­>¿Ã§>ÅW->Ëúf>ÔeÍ>ÙÌ>Ñ—²>¼]‡>¢@O>Lq>ŠO>‘óx>žì>ª>²N>»éÃ>Ê©w>Øgµ>Úªâ>Ð*á>×·>¾¢¨>Â$€>ÌRð>Ü•0>î³ú>û!ç>þF>úBí>ñ}>ã‚A>ÏëÍ>¹­>¥Ë2>—Î_>ù2>‹ª/>ˆ©Þ>‰Öð>”q>¥ìâ>³^€>·aÍ>¸æ½>¿\>ÈS>Ìò>ÈqÕ>¾Ö°>´Ô%>±>¶'p>º¦>¶ç7>«ù’> ¹>˜6ñ>‘R²>NÊ>‡&>œžù>¬Ø7>¸tõ>¸Í>ªÖÉ>˜ Ü>Š4O>†=“>‰÷>‘¹ü>š9ô>ŸO€> ó·>¥©:>°Ò/>¼ÄÝ>æô>DZŠ>Ï‘>ÞfE>ï1>÷OÒ>ïàó>Ý+>Ëýn>Çl>ÐFí>Ýåñ>æ£>æ¿›>à€Ö>ÙÐO>ÚdÊ>æì >û.þ?wô? l? ÿF?‡?¬²?3g?¹Á?¹Å?NE?—5? -^•?–?40?ÀÕ?ïx?sÀ?…,?}“?÷Ü?ú>øÓú>ø¢è?žÔ?µÏ?ä*?§ò?L>úN.>ó*>ïÀd>ïA,>ñô^>øÍ>ýɇ>þ¼¥>ý #>þGü?ò?‰B>ø¬>ëFª>ã»c>èàì>û–? ®à?k2?V²?e?!À?‹þüó>ê[c>ãÒ>ðœ0?³“? -á ?.?]m?]\?ú?ÌV>öW‚>íéR>îyd>ù´Ï?S? „&?b? ûÕ? -ü?–X>ûry>é D>ß">å¦N>ûr1? ˜?ü ?è? |?ÞW>þ1]>ùîÎ>ÿš¾?:?¼|?lÉ?šÊ?Ê$>ó¬?>áKK>ÝyT>éˆ>ùçT?¶?;I>ús">ôÊ—>ònm>öÜÅ?F›?­ú?Üþ?ó›? ‹6?u>áË‹>Äñ>º±d>Ìþ³>î‹Ò?ªû? н?›b?q?Úb?0.?f^?L?í>îå”>Ëoh>®Ü7>¥Ý;>·Ä­>Ýg?Fú? 'a? M?½R>û†´>ê/Ç>ÙßX>Ëü>Å,>Äás>ÂîD>¼•´>»€Â>Éo9>å9L?ë?Se?Þ?ت? -k¶>õ>Øo\>ÎãP>Ù“>æ~`>ë>îr >ü *?Q>?û? ÜÃ?ál?ÉÌ? §>? ÑÕ?5’>î£>Ôò™>ÉÖä>ш”>çÎ?¾Þ? T?¶O?o6?N‹?ci?Ià?È‹?•â?ë›?9>÷Êa>ðòY>î[ >ïl,>ô ¿>û|{?=Ï?ñZ?^”?Áb?×Q>îÕ>Ô¦>ƒ>ÄW>Ùh>ôÚ?O? Ø4?+?þž?hó?¿ê? ‡?Ò7?D?÷?c?¶à?Ñ#? WÇ?÷Ù? ²ã?(ï?(?½`?î¡? BÈ?W?_ ?r ?^Â? ‹ä?IÛ>÷ë£>ÚOk>µy?>šøÚ>–¨> K>­þ>¼¸n>Ë¥i>ÚMU>î7J?º;?Àq?bØ?!s“?Û?,.?‰ ?%¥? 2ž?/?&\??&¬~?ÐÚ? :>ÿ¹ç>ôIa>ï· ->ëpŠ>ëj >õH¾?Ä?¡Æ?*>ùÏý>þ¤ -?Ò®?Iz?Ȥ?r^?ªR?3Ù?ãy?0&>ùë>àÇ>Éyj>Á å>Ñ@Ù>ñ É?[?C*?È?=_? D?$? - ¬?°â?só?¨Ì?',¹?*H?"^€?²'? >ðOd>î˜ê>õÉ‘>ýÚ_?MD?} ?³±>õN!>ðm…>ÿ_›?­¤?º ?$ ‡?&Ï?(Õ?,x?-_®?)¤S?!þ”?ÀK?Žæ?-$?ì€?ów?”?£®?;S? -"?º>ýK¦>ÿ>¶?œ!?Ý~?!Á?%íZ?#¥??‹Œ?ÿÐ? ?/p?Šô>ô >ãîm>Ú´6>Ü´$>íR(?ÿ‰?ß_?§ ?o -?õÂ?gT?…P?¾? Oq?#´P?#m?"?#j?'¼¬?-I?.=Ž?)n‹?$3{?#Ø5?'ýY?,}ñ?.n?.‘‘?-–?+Èï?*¥;?,(-?.õx?/¹…?-*ë?'êB?!!b?I¾?ñF?ö??#b?%¡ó?$Æ?!¢ù?!ˆ?"Ýg?&üÎ?,Îø?/Ñž?(ª¤?CJ?±f>ô¬V>ý·O?Õ¢?Qå>õcÑ>æýÿ>ì/#>þAò?’Ë? ˆØ?Jê?bc?¢5?Ã¥?™?wR?;Ã>ôZÛ>Ù >Ð>ß~g>ñ">ï¬V>ÞHg>ÐLÍ>ÑWÿ>Þ¬@>ñ ??€V? ï*?û©?"?#J? ‹(? µ?%8ƒ?+}?0gá?2}¹?2ÚN?3óô?5ìX?4¿0?,¤? 6I?ïr?zœ?’e?~p?‹?¯x?{™>þRÍ>ýÈö?÷z?‹?Ò?JØ?9?G¡? û? -?4>ü¾ˆ>æÖ/>íXJ?Ѭ?¨?@‡? nÞ?!”ä?&G?0,Õ?9|/?=F?:Îó?29Ý? ÚA? -\·>ö¬[>÷x[?üÊ? Ž1?‹‡?D¨?ý?÷?&³¼?. `?3Z³?2»ò?-YJ?%{µ?[%?ˆ?€ç?;È?ff? ºm? -‘‰?‘?^œ?#Z?&?.àj?4k?5¬Š?5Q?6J¾?9G?<‡?>¾?@)X?@3?>ÔŠ?;è…?6÷N?2\é?1;µ?3t ?5‹W?5fñ?3•?.Í?)-¥?)úã?1ÿï?;W?>w¸?<¤>?:Î}?:y?5ßµ?-@ˆ?%QN?!5?8ü?‘ñ?#Òg?)úk?.Í{?/ÿ€?,f?$g#?z -?FÄ?ë²?¾Å?,&Ñ?8êÊ?Aª(?BÉÞ?=.ú?77N?5è¯?7‹ñ?8ÁÐ?:ªr?@<?HIþ?MŠª?L}P?FÈ?;Ø;?-÷[?ÌB?Ùó? ÉB?©}?öÖ?'U?<?"ý?,ÂÓ?6t?A[†?L×?S‹r?Rã#?O2"?Jà]?@@E?*r¦?›•>ø6d>ì}i>úŽ?U›?#€p?5—Ò?>Û?;´~?2?/7_?5_ ?8ÿÁ?3÷Ù?(ù&?÷?É9>ãc>ÎÐw>Ðr>>â&©? ?ié?*Þ?8ðk??õ?:Ñh?/O ?"ø?µ?{? -#à?"÷>÷g>ÞÉì>Û¿>ûyª?‹‘?,?;1¸?HMƒ?S^?U?F˜°?+Á?Bý?^Í?oH?(Ô?/$'?/\m?-`‡?/C#?3™Ï?2w?+oy?(Mg?(©>?%–Ê?!OÒ?%›2?3¥?AýW?I>I?Jˆ?Jü™?Lñk?O7Â?Qœ?Váô?^°€?cçš?d³(?dõ&?gÒ?fÑ?\?Iöü?<,-?6ÞÙ?4…‹?2àN?5( ?:/ä?:×Ê?4ku?+’,?% l? Êß?›Á?•§? ?øÏ?"Ö?4êè?CVº?Olq?X‡Ä?Z·%?U‡Ë?L]?Eà5?HĬ?S´ ?^tZ?bO?]Ñ?OT1?=E«?,€r? 8W?ÃL?&M?5¡?8K?(Üc?¾™?,?!xp?,E¤?%!ë?rˆ?×>ùŨ>úm3>ýEö?±$?»®?¬f>òv>Ùç­>Îœw>Ò’·>ß;t>êîº>ê?]>ݧï>ÕYS>Üqo>òî%? •?"°?2?:Kƒ?=º+?@ ?E 4?Jæ’?J??ADÕ?;Mm?@_½?I®„?L…u?G ?>Óo?5…Ò?/Ø°?,e;?"q?‡u?H3?3^?5Çc?Kl7?TD?R)1?Lôì?Jf.?Jû?Kÿ?FÈ$?;Èg?+ʶ?Xp??'?#èù?6èÔ?ERß?FÆ­?;QK?+£J?&Qí?.̼?6X3?2?)(6?'¦Î?+ª?&Ê)?±¼?–ß? §?Ü? À?ŸÓ?,êÙ?9E›?=?;Ô"?:é?<áJ?DÐÂ?IöÛ?H¿?DáV?Eî÷?H±À?EÀ@?=³ô?6•?/î?+w¨?1§?A0¢?O6H?U3›?V‘‡?YýÂ?^þ‚?_=Å?Zyï?V'?SŠ>?Q€b?OÉR?K®Û?Cm?8#ã?0aƒ?0"ò?5'Æ?9ýX?8ñG?/YÜ? ê? y>òŽÌ>Íi >­>Î,>l“L>?‰«>&ß*>/+á>W%±>‰Z\>¬ >Ò$>øØ)? ‡?¦ ?dÕ?œ? Q?7Ÿ?.äÛ?>²Î?CþU?CUB?Go;?P¯ ?UöU?R'‰?LXð?Nto?Tn˜?Rñÿ?K³á?I³B?O¯?R:?G«d?/È?? -(?ž¤>ó”®>Ñ^§>¦˜->}¥½>K:–>Gl¥>s4­>žQ >Æé>ìÇB?Æj?!e?)»B?7ºþ?D‘ñ?R¨?_;›?h~Ù?j= ?eØ|?aK?`€)?bßb?dÂà?eÚŠ?k ?ríô?vdã?vê9?zCD?’>?€øä?~ÐÕ?xSm?qÇ?k÷«?i˜n?oÏ5?{ó?‚);?ƒ•‹?…´?…;·?¦€?lM¢?aL_?gà›?w2#?U ?ƒ¢Y?„–¸?…G0?…s}?….÷?…"p?…²Ì?…)ˆ?‚œ¹?™Ä?„YÓ?‡9$?‡pV?†ÆR?† ¤?…ä,?„l]?„Ëä?ˆï?‹¢H?ŒŽ.?‰+ð?”’?ssü?kƒn?j®:?n8$?u†ß?€/?‡ ~?7;?Ïø?÷?‰Ìã?‡yƒ?ˆvn?‡UÆ?|73?_g¨?NÚÒ?ZãH?vã>?…‡A?‰‹G?ŠãC?‰œ`?…›}?—M?~N¯?|$ê?{ß?wBb?rΓ?v9T?€îœ?…n)?ƒ#,?sö‘?bØ}?c9|?oz”?w -?zá}?‚3?‡BG?…à³?|C’?rŒã?zƒg?ƒ™?„Õ?|´?l“Ä?cI\?g)…?uA$?ƒÄ?ˆÚr?ˆÖp?„2?~[ã?|kD?ýó?ˆSÆ?×k?0?Žì?‹× ?ˆl~?†ÏÓ?‡XÜ?†8v? ?y´?t@?o£Ÿ?eÁ×?R •?:–š?0½Ô?=k·?U€?k+?yªÁ?€&?Åk?š???ž?ƒƒ?†i«?‰µ?Œ@Ã?Žw?š¬?Ždq?‰_À?„úÂ?…?†ò”?‡Ç?†×Ï?ˆFŸ?Šq?‰P?†_Ó?ƒåÕ?ƒ‡‰?„¼?„Õ)?kB?yOÀ?vgI?|~™?„¦8?Šó¡?Ž#õ?A?’Bµ?’Íp?É?ˆº©?~Y?v -?Žá?‡Ù‡?ŒÎ£?ÿ…?Œ~?‰ôa?‰( -?‰«Ê?ˆ´ú?…~Ø?‚AB?®¦?‚ªý?„J(?‡Dr?Špê?ŒkË?ŽF?x¸?‘¥n?’AË?‘•ô?bÿ?Šò?‡§\?ˆãk?ŠÛW?‡È>?, ?p…A?nÕw?wù‚?€ç2?‚è9?‚]/?‚Øî?†Jƒ?‰ï?‡K8?ƒ-? '?ƒ?†.?„nJ?}Þ³?yw–?8•?†Í?ˆpí?‰  ?Œèœ?š?Œ2?†#5?ô¥?{Ê?sß™?tP?x_?x±?yÓ$?€$)?ƒžà?†!ƒ?ˆ¯G?‹‚8?dÆ?Œá°?‹œ?ŒÁ?¨p?Î8?Ž8?‡Ìï?‚h•?‚cª?…ÑH?‰'†?Œc\?¢?Ži±?‰oÄ?o°?lÑi?QŸ?@“?NƒÔ?r¤?†«Å?‹ø²?‹ý1?ˆ{ò?…¼?ƒ2?~°~?vÏ?wVi?{“»?~šÇ?‚4P?…«?…¢g?… ?‡Ý¦?‰Íg?†¸ì?€ÇJ?x?r²”?r‹?{’j?…4)?‡X?‚9?~¸R?‚Ãy?‡öƒ?†˜Ì?|Œ#?k½?fø†?uz³?„ò?Š—è?Œ?Œ#ø?‰¹@?…f®?–å?x]N?fSÙ?X¾m?[K×?cB?hëœ?sè?‚œ¸?ˆ&?‡È)?ìE?zÑA?|DR?À?‚­Q?€M ?uoÞ?n©¨?mñ²?hÏÖ?]ìt?Z*V?duØ?t:?{ÌÏ?x:+?qWÿ?h¤I?ZÝ}?Hè?6¥ž?.Ý–?1ïÕ?5”€?8‚?<¬—?@(ÿ?=½™?3 w?'*Í?%›"?-VÍ?7èÃ?Eë?UÉc?hŸs?¸Á?Œµè?”ò|?–s°?”ÃÈ?‘¿?24?…ð€?sï²?Z=–?LûÞ?U>ñ?pWÖ?†‰?ŒÊº?ŒÚq?‹¾ã?Œy?wf?•$?Œ?…ôÑ?tLÙ?YÏ©?B"ñ?1N?5xç?M¦3?e]'?tÜG?@Ÿ?†eS?ˆâ?‹ub?¬¢?‰Óç?~-Ö?oH?uOò?‚o?†SC?‰U?‹ÿì?‹3Ò?ˆ³??ŠPI?yˆ?’<®?’7Ñ?“¾œ?•‚þ?’ËX?<ß?ŠŠö?ŠÔ³?ŠÉ{?Š–?‰ü4?†eÿ?€´?}-Ù?‚ÁŸ?‰nK?®7?ŽY?(?ˆ«d?y à?X‚$?Ltj?^Ô2?yvï?ƒ±û?„°D?ƒ×=?ƒ^?…2V?ˆuã?ˆø°?†4f?…¾%?ŠÓ•?Q?7‹?Šºí?…gŒ?†!?‰@ý?…—m?|;J?|î=?„Å?‡l·?ˆ!]?Œ`m?’’“?—~%?˜ñÒ?“îË?Šv­?……M?ˆ_v?Ž>r?”Í2?™»b?™6·?”>`?©j?‘.Ã?’‰?’–B?’ñt?”Î ?•Í½?“‡É?‘zã?‘µñ?*­?‹r?†û"?‰ L?’m?™Yè?›™Ê?˜ÂÍ?’ªÔ?ŒYn?Š%z?Žˆ°?•w?˜ }?–¯:?–F$?–‘ø?•²s?•˜ê?•š?ȹ?‡Bê?‚î÷?…?ˆD?ˆÇ?‰ ©?‰(Â?ˆñ?ŒG?ÛN?“–?“,þ?’ÍG?‘??ŽsÜ?Ö=?‘u›?–ÄÖ?› ©?Xx?œùö?œ.Ö?ŸI?íÙ?˜Å¿?%?Š—?Šÿ?‘Í×?˜ÝÁ?œÖ+?œ!?š¬?”èx?¶Ü?‘š3?–#=?Ÿº -?Ÿú"?¡? ‡ý?öû?› ?™T ?™PÛ?™Òù?˜ùd?˜ç†?šÛ?œLi?›#î?˜6|?–uè?”¶i?ß?Œ€?‰C?ˆ C?‰˜?Œa?Ž—¢??‰mÚ?ˆýg?ŽÝ@?—è>?œä|?œ?™.½?˜[_?™Œr?™)É?–`9?”Zq?“¢³?‘‰À?mW?‹ÄÚ?3Ë?’ŒE?’aL?œÐ?Ø}?’ ?–¯Q?šFf?›ø?&7?®®?›íÈ?—l@?“Vâ?“”?–¥?šš?œ5?šw?–m?”I¹?—T®?›*~?œH -?œ3?›¤ò?™o'?•=o?ÂÓ?Ž¢Š?&Ð?Ç?Ûï?vË?’¶ ?–:;?˜}ø?—ðË?• \?’(d?’y?“ËÏ?” Ô?“zz?“£Â?”x?“a›?‘Î:?‘¿g?“K·?”ˆÙ?”î?•‚a?—(m?™eµ?›HÜ?›Æ?˜Ï]?–¨H?•ºô?–Jõ?–ô)?–Q‘?•Ž?”æÿ?•>?—9^?™ -«?™BÇ?˜ã›?˜d?—l~?˜-º?˜€¼?—Ut?—!|?˜SI?—ÖM?– ž?•{ƒ?•x?”K-?’|À?‘âh?’éZ?•5 ?—AE?—?•8-?’f?Ž{¯?‹Ïª?Œ¥ç? 1?“¬?”?Ü?”yy?“Ú?Fv?%”?ÂW?”ªL?˜V$?™ -”?—R¨?•­?“>l?‘å?Žp*?‡«‹?‚ò?…RY?‹Ìê?ü±?’°.?’8’?’Ø?•-9?–¶¦?• ?‘l?Žs?Âý?Žï“?‘ó?“d¬?”_ˆ?”~_?”f9?“ä‚?’ün?‘Á?‘µ?’Eä?”^|?•Í¤?–jÇ?•g|?’)?Žö»?¯Þ?Œ?ˆRU?…ô`?‰?¡ž?Ž(Ê?‹ŠF?‰ü(?‹Í—?ò«?’Ö?’BÔ?ù‹?ìâ?’íb?•È’?—C©?˜:?˜ §?–ÿ?–Ę?˜ ä?˜ÄM?–Ç7?’F¤?Žs ?Ú?DH?Ž”a?êë?’ß{?“De?‘“?30?’!ï?”É_?•4H?•3?– ™?—1ò?—)B?–ñ/?—V?—šß?—î?—êš?—\?”ó¨?’É ?‘bÁ?ê¿?‘jN?“) ?•„ñ?–ž=?”o?¥œ?Ž(?)?Œù?Ž n?Ód?”T?–-«?•Ëe?”J«?”Ä?—&?˜Á?™k?™”¯?™L?˜zs?˜Á?—¢;?•Ç”?”qô?“ôÜ?’B¡?¸*?–2?‘6??’© ?”,x?•æ?˜??šYw?™ÿ¯?—·Ø?”¤G?’”?’ê?”ì?–4•?•ù?“èò?“ À?’¬æ?’ð?“Cr?”$8?”³ä?•*”?•É\?–×Î?˜«?˜Þ½?™ ?˜ô?˜.ƒ?–9r?’½‹?Da?‘â?•4?–dÁ?• ?“uÖ?’ï4?’µî?“§?”:Ñ?”ü¾?”à«?” ?‘¹d?Ž‰?v?¶_?Ž±C?ü×?‘âù?’¢9?‘DC?!á?Ž¿;?¿®?“6?¦°?‰Ý²?„€¾?€À²?~o?tmù?[lz?=éä?5³X?Jnþ?eà¦?xÀ§?‚Q´?†GU?ˆR·?‡Û?í\?|û?¨Ã?‡)Ê?Š,?‹7?‹G?#è?Œ?‘:?aZ?ŽuH?.g?Šm+?ˆ–?ˆ™ì?ˆ'«?…9{?æš?„ª“?:â?”¬?–{?–}û?•³3?”"´?’H*?‘Í?‘µ?Žòf??‘ê?“] ?‘sB?'¶?ˆ÷¾?ˆÔÿ?Œ²?›è?“?“‡z?‰ö?‡1ë?~‰q?yÜ ? ?†Œ~?ˆ§ø?Š4S?þÚ?ü+?’G¶?“l ?“¯?‘ô2?dö?‰‰Ç?Š•L?Œ™?‰3?…gƒ?†¯˜?Œå•?‘ãí?“Øc?”ô?’6?Ê1?‘õ€?“Y?“’ž?“„È?’þT?’­?‘gµ?ì?…\•?€€?‡…È?ÿ†?”_á?”-1?“ƒÜ?‘¹Ý?/W?Ïö?Az? Á?œ ?V{?‘<Ù?’žp?“bÌ?’ºL?¢4?Èø?‹?ˆáË?ƒ™·?},?|ñ¡?‚æ?‰„¬?Žµv??•Ø?‹¾…?‹æ7?ŒŒ°?>Ÿ?Žúø?¢}?Ž¬?Š±c?‡Ðs?†Ìõ?‡k?ˆç?…KË?€ò?‚D®?ˆ–G?ŒS?Š„v?…Q?€’?~rÁ?ZB?ƒ+Ý?òS?ò–?…(?†Ä|?…‹•?…™ -?‡s¶?ˆ7?†í?†p“?‰2ø?‹ß„?\ú?’?Ž¡Ý?Šk?…W_?…¸?„,?€ ¶?um£?w™?„ -2?‹íì? ?•™?‹xÆ?†ÓI?…gÒ?† Ž?ˆl?‹´v?Žv?I4?0æ?L?€õ? Ó?Ú?’î?Š­–?†aå?†ö=?ˆoC?ˆäÛ?Š?ŠØ‡?ˆ§?‡ÑY?ˆGÃ?ˆë?Š?‡¼n?u?{õ?€âs?„_/?†/u?‰Lh?‹Çß?‹­(?‹Yò?‹Ëh?ŒW¡?¨u?œ?]?Œ«?‡’„?Æ÷?~Ç$?ƒ›?‰îÝ?Œt§?‹j?‰£˜?‡™o?…Mü?„‘A?„Øs?† ?Š–7?ŒÔ??Œ\Í?‹‘H?Œ¯c?ŽzÝ?ŽtL?Œ`?‰À¥?‡B ?„}V?‚ãW?ƒ}t?„ª?„Ò’?…ã?†GÄ?†ëu?†¾?‡ê5?ˆÒ¦?…åø?Ýa?DP?€ÛA?zý?€e]?ƒH²?…Þv?„{¥?ƒÊ?„D?†b¾?…r)?„pu?„™Ò?„ñ@?†LÛ?ˆžê?‰Ý—?‰òñ?‰„«?‡%¢?„ÃŒ?‚gú?v™&?^;t?N ¡?Wû?fÿî?^gõ?I¦?R«w?uv¥?…ñÄ?‰+n?‰â4?ˆ”³?ƒl›?l -õ?Hj8?Cãœ?dl?xó?‚ä9?‚êZ?‚êö?}YD?xòg?‰ðP?ˆÛÞ?ˆU?‰od?Š&¨?‡ã4?†+«?…iW?„R2?…Mò?†tÊ?…z5?„þ^?‡¯Ë?Ší@?‹­*?‰Õ?‚ú ?x·?n¨'?iŠ'?kØ?rÝð?pF?fܾ?o_?}•?€=ß?}Á‚?~ÃV?„ž ?‰<3?ˆµø?…,Ž?Âß?ƒ?bv?†Îº?Š”?‹/v?‹wJ?ŒS{?Œ]?‹T*?Š!G?ˆf?ƒfá?~ƒô?€ç?„Í\?…?…³W?‡†?‰—¶?‰è¨?‰E´?Šj¤?Œ;œ?Œ¶©?‹¿-?ŠT¤?ˆ­6?†ä?…Æ]?ˆgâ?‰âB?‰N?‡61?ƒ<ê?€Ð?Œ?xùg?lµÕ?un€?ƒ~#?†—*?†³~?ˆ µ?ˆJÏ?‡ë?…®´?‚Šu?±¿?‚6„?…ç -?†Ûˆ?…·ô?„äÆ?ƒàá?‚ìç?… ‰?‡±Ú?‡Ó¾?ˆÑ¶?‹=Õ?ŒO¡?Œ+ö?‹Å¡?ŠÎ¼?ˆ‰?…ýq?ƒùß?‚œˆ?‚ê?‚ë¬?€ï†?yÑC?xd/?g_?†ëë?‰iŒ?ƒ?n®»?nâ¿?oF ?näí?m~ò?l =?lÙ›?má?n S?nîË?o¥?næ“?ml™?lˆV?k¨?j¨[?l†g?nñR?o}²?nñÝ?m;¶?j˜?hwð?kv?mÈ?n+‡?nY ?nˆ¤?nPÇ?m$š?iÕ?fiþ?gÝó?jR ?i¡g?hbê?g}Ý?hBx?ih»?hg[?gIæ?g¹Œ?i ?iÞD?iœÞ?jFÞ?jŸ;?erÀ?[¹Ë?\Ô ?e—Ÿ?h8”?g›~?i§?iÚÏ?i©™?jBC?i½·?hc›?i…q?išx?eJê?^£µ?`åb?g§?h£¡?g®·?g-‚?gÆ’?h:Â?ins?fû”?\f?V}9?_.ñ?d– ?aÙ?d_Ý?hhš?hË?fÏç?e£?g -[?gªC?fú'?cç"?b™ð?d#M?eý?`Z´?UV£?S´ã?\5°?bê?bî?]l?Z‰8?`ÔO?d™?dk7?db"?el?f³?f¼?gá­?i%Ë?i?ga?e¯n?eâ?b÷N?]ø0?añ²?f±¼?g±?gïC?fˆ5?dA7?eƒ³?h ?h’&?hzZ?hkñ?h0?gæ¡?f¿â?cƒ?_„ž?_üƒ?be ?a24?` ¾?bö­?d÷ˆ?eg?eo ?eZ?b¬ ?[ä?YõÊ?^j -?cSò?câÜ?`u0?_c“?`¨Q?a‹?_m&?[™?XP_?Zyf?`:?bKÄ?^¢õ?Xé­?VØ^?W–D?YtA?[©?^;´?`OÅ?a™Ð?_¼#?_„[?a¬)?aic?_ê‚?`›­?a­:?_ßF?YÔ?ZêA?X ?Q«¢?S(?YQ´?[e.?[Ž?[ {?XÝ¥?Sv?QOŽ?V}ø?XR?Tí?Qÿ¥?U¾?X®j?T×Z?M ?OÉÅ?VEk?Wú?V\?T\ê?R[[?S^é?T?Sˆ“?UíÁ?VÙÈ?U³?R’î?Rd?UsB?VÑè?W€þ?Vç?T»?O w?Fgy?AˆÐ?F -µ?Lã?Nq`?QÔs?Tþ?VAî?V”?Vti?V˜?VM!?Uî?T<?PüS?NL?N,Ë?Ož3?R<„?S*Š?Se?R¡á?P¾¯?Q‰\?RøÁ?RyK?Q"¼?P¾l?Qö?RW?RQ¢?R c?Q×?O¬é?Mtì?JLR?KŸä?NB?M]É?Kv'?Iô?Dšò?A2Ð?<Žç?/c4?á>õwV?“*?0}I?<ø°?@}Ì?DLp?G‚K?GÞ/?H‰Þ?LÃ?N„?N¥a?N8?Nuº?N^Œ?M‚?M¼Â?Oâ«?OýŸ?K-n?F˜?Iû´?N”U?NP?O§?PèÔ?QQ?OŽJ?N¥Ç?N\?LÖ@?MO ?OŠï?PDS?P¸Ñ?PÎ?PŽÀ?PÄk?Q"l?PÌÝ?Po?Oþ?Oáu?O‹ˆ?P"'?Nòc?JÆ"?I&Ž?M¬?OÌ•?OÓæ?O.{?Mz"?JÄw?LY)?Ní0?O®æ?Pâ?OèÙ?Oºa?O|/?O©?OÝû?Oç‰?O?LQ?IYi?J¿C?L‚w?MVÓ?Nâ´?Ojk?N÷!?N¹ÿ?MwN?IAÝ?H~k?L~Ì?Nˆ2?O]E?OzS?OR‘?O:#?O\?OZ>?Núé?MÿO?KÐ?K=Œ?LZ¹?M¤?M€ ?K™õ?Jï¹?L[?L±E?M µ?L÷{?K”æ?JZ?H° -?E‰z?Fát?Iý®?K¢?L±>?Lwƒ?Kv?J,?I ?J­8?Jár?JÉï?K{–?K4|?J¤þ?K“?JÐ&?J8w?JÀ?Iæ÷?HèX?GñI?Hø/?J4J?K%r?KNæ?J°û?K Ë?K„ç?K™?JD5?IÐÊ?H×?GY˜?CÑb?A¸?BÌ?G1Ü?IKv?ISZ?IB?HK -?FÍo?B7]?@Qâ?B=?Cæ²?C=a?D¢Ò?GšÄ?H¹?Hž€?H{?H&½?GOÊ?Gd -?GkÈ?G“K?H?FÀè?C†Ì?C*]?E9h?Dàd?EcD?Gu?H]­?HW»?H?GÙb?Gsw?GD?G-?Gº?G«?E™}?E -?F?F8W?DgÏ?BÕg?@óY?AŠ—?CQÔ?Dµ?Cåé?CêÖ?AÂV?BWú?Dì·?Eb?DuJ?BìÓ?Båv?DÙ3?Et?EªR?EÜW?Dûô?Bl™?@-Y?Aà¤?C°3?C0Œ?B%ˆ?Bÿ4?CN•?C€?Cùv?Dy–?C¦u?B2Œ?Bê?Dk?D“«?Cù?Cn?Cƒ?C@?@s?;µø?9Á¶?>?+?B§²?D à?CðÆ?Ctw?BÊ¡?CPõ?Cf?C+h?CKÂ?C‚?AžÌ??âÁ?@И?@ 5?>8"?>n0?@œl?Aâ#?Añ®?:~û?;:µ?@)$?Am*?>×ç?<”ò?>“j?@Éþ?@©Í??ö•??ÒÕ?>¢—?=T?=§v?=(§??ÅÌ?A\G?AÇ?@ÞÄ?Aá?@Ó&?A0?@Œú??$ ?>³Ÿ?>ž¡?>œW?=ä?<“²?=v/?=Øü?=••?<D?=L?>cw?>·¦??5-?>ݧ?=ÃÖ?=ý>?>ýŠ?=†z?:Eø?:iz?<?MÝ?>«‚?>ÛÒ?=ô³??6|i?8]8?8Šs?8X?8)9?7På?77$?8F÷?9PL?8ž|?6 /?4æÜ?0æï?/Aª?/wÎ?3^?4±Ü?3}?5²n?7À?4âî?2w?5(…?5q?3 -V?1úk?-f?.gO?2šW?/¨?.ŒÈ?2kô?3†‚?0‰?,ì;?1H?5¼?6‡à?5Á~?5È?6 €?5½Æ?69E?5ôV?3j?2qÁ?2‡ ?/Äö?0¼?3¥*?5 ?5Öñ?6 ±?6a`?6”Ž?6K?3f?0i?3Še?5~û?5‹Y?5†?5|†?4sæ?3ò@?3ÎG?4Mì?4PÌ?3 ?2Í*?3Ç©?4O¥?4 ç?2µ¨?0‰y?.R¤?+ê¢?0­?2Ïþ?3bR?3Æ ?3ŽM?26_?1€+?0²?*ýº?.&Þ?20!?2VË?2é?2Ýk?0Ť?-jê?-‡Ÿ?0Ñ?2V?0äå?/?0M%?1š|?2AX?27S?1€â?1 î?1S?1Û?0 -i?0©­?0þÈ?0)¯?-éo?+Ç?.;è?,é€?,g?/=Œ?0)ö?0w¿?.°?-÷›?0e×?.„=?.^ü?0¹—?1p?0 ?.¨V?+!¾?*ªQ?-†?0W¢?0­¤?0W—?/}¹?/dÕ?/ï`?/•?#»¾?"Ž¬?"m?"œ¦?"Rm?"œ?!Ð?ÔŽ? 2? ÛÞ? kË?! -L?!w? ‡‹? †½?i?!d?¢9?WM?“ý?U?Ë9?a?!;j?ãu?¶W?º?5«?ö¬?]É?Ì^?Ã4?æª?/@?z7?Òm?þ|?~ ?*˜?ÿ@?"Ì?\˜?Ž~?bÏ?Z?{ð?‘?&??ï?C~?J?o?Å(?ܽ?Ž?-1?ÔŸ?ºv?uâ?Fî?‘#?i[?¾w?Ž:?®?Õ*?—?”o?¨?‰t?>&?Š?t"?ô+? ž?øë?Ç?ö_?]ú?gï???êË? ê?i?OÄ?3?¦ë?‡Ù?l?èŽ?ðc?{6?ÂŒ?˽?70?~f?wŽ?±ó?®î?}[?â?™Y?àa?Ð?ƒ¼?É&?ÝX?æJ?å?g‚?= ?HŒ?å?ç9??Ù?žñ?¶>?í²?h!?ÿL?L?¢ç?¹?ÚO?„U?ð?â ?a?ƒ‚?(,?4@?ï?×Î?©÷?”§?qÌ?Ò?åù?|R?ªÕ?Ò©?‹ ?éa??(ˆ?.­?z?@N?Ù_?d`?;¨?x”?É?´¢?•à?µ‹?ÓÈ?;Q?yÇ?“H?«?øí?@?Yø??2?k?B?ï§?ýG?Ìá?„c?kT?t?¡h?Sk?àd?|á?-ñ?½0? SB? v?¿0?GÚ?ê†?™Ç?¾¦?éx?Ø¥?¡ó?Ï?‡Ý?ÙF?È0?`9?)?Û¯?‚?'4?ü?º?qÅ?‰?¸?S?Þe?Ѧ?Oy?«„?ìl?PM?ë–?Á?%?T«?l?HÚ?‘÷?¬'?Ÿc?7?Šñ?Ö?½?YØ?ZO?,?ï£?ý?Ü:?ÿ?z÷?„¡?„Ô?Š4?ýÓ?³—?ö?AÉ?A ?Mù?g¬?Í?•2?íæ?Ç›?ÜY?»?÷ï? 5h?¬?Pg?œ?Nc?à?ì‚?õ´?¦G?81? yz?t??(?‰S?H?´û?­×?¥?s?Å[?Ñ?(?GO?«$?5È?•:?¹#?4›?È?Ä^?x½? ¡u? 2?HZ??îË?oµ?#A?ð_?2ø?à:?'? Âñ?G? Û]9>åç¿?Åå?ú2? -Ô‡? )v? -â? ½¤?äJ?È›?,#? †¼? -)? -nm? ³?ÆT?ô ? ?c«?ç>ÿýñ>ë_ >½‘>¢}÷>Î!>ó¿?SÎ?ÆÁ?55?Ó?Q8?eÖ?¥??¹? vÑ? áƒ? Ûq? >`?áó? {´? q»?âª?{?£v?Î?ãŸ?r?À¡?ž¹?0Í?ú? /?˜ç?X¼? -?ù?‹?:¦?º?Ïú?^•?Ð9?«¡?8?cº?Wf?Ú£?ö?‹¾?Øž?.Ø?Î+?þ?Ö?äš?üq?¶z?Äò?†Q?3²?Çe>ÿÚ>æãr>´È>¶Î¤>çcg>ü¿z?od?˜?\ã?‡Q?Í¡?$Ì?¾?Ûê?È¡?’õ>ý±?¤?s?I?ðŒ?Äæ?Ð?¦?D?½”?vL?°?ˆé?¾?EÚ?Rï?î,?B+?lB?1"?Zv?öº?2â?Åú?ù{?8˜?Bµ?E? *??GÝ>þQë?Ýæ?bU?6“?õ¬?²?–$?Õ€?†ú?ž? z?3?#?Þ?._?Þƒ?KÒ?r¦?ß|?êÎ?s"?ËY?V@?õÌ?JÅ?ÁÌ?º>í6ë>òq0?_?•Ý?ÆX?|ä?(?àŸ? ->ýéÃ?ÇŽ?$ú?aÜ?†B?Y]?„Ñ?’‰?i? -Õ?qw?ï?Ì?Þß?¸ª?[k?ªë?¿—>ûŸ`>÷¦>ùDŸ>ö­>þEÙ?:Û?‚?üç?íL?ž‘?'ä?­Q?>ê?È@?’Â?®p?ž?BW?â ?ž^?Sª?\j?h ?ÆR?ŽÒ>ýõß?é?óÊ?§>þ,J>þ*[>ü~ñ>ùã6>ø¤>þWÝ?Ì ?L ?š·?Ð?Û>ýB>ø} >ù¨>üU÷>ÿöD?o?;??ô?Èý4Ç>ú²`>þØ?le>ý¸ï>ùñ>ý;>ÿI©?:>ýÍÍ>þ -+>ÿ c>þ§v>þeÔ>ý˜>ûn‚>ô<&>öHY>ý€>üA¢>ö_Œ>í|†>êÑz>êȤ>êÕJ>ïrá>óó>òø¦>ö*È>ùÉK>û«»>ûÝ>û€L>üVÛ>úáb>ûåM>üû²>ý >ü±>ü¶~>ü ‚>ú>ç>ú»*>ü`A>û¼É>ø¨ >íh©>ï~>ú“ó>ûÑ2>ú¦J>ú«•>û=`>ùK’>ñJê>ïàˆ>øV£>ú²>õCs>æ¨Ö>í–ž>õ™¶>íþû>ó†>óî>>õZm>ö¢d>õ:l>õñ‡>õ÷ö>î_©>ò.S>ö›î>ñÇ>ò›>÷ïD>ø|Z>ø=b>ø>÷W >÷îý>÷è\>ö¿>ö³M>õü>õøâ>ò[#>í >òÛ>öaí>õÁ>õ8`>õ²I>öË>õÏ>ñû§>óu>óö>òé·>ïêº>ðG>ógñ>ò±9>òîI>ócÌ>ôç>ó»Ù>óE?>óI¥>òû„>óW\>ñE˜>ïŸñ>ñ6¹>ðô×>ðR>ëïÇ>毯>ãɸ>ê0ž>ê—9>éù^>îuk>ëŸá>å¬;>Úµg>ØUÉ>ãLž>é¦>èZ>å|5>ì„ê>í7–>êÁ…>èÏp>í$>îž·>é Ï>Ýà=>ßoº>æpm>ì+™>ëµ>ìÕ>ïFâ>ï4'>ï)>ïÕÏ>ï”ñ>îZß>î¡•>ï¡>î›î>ìÿ¥>élt>ê0¢>ë¼Ã>êþö>ìÞ+>î -c>î'Õ>íÊe>ì™Å>ìj€>ëà1>쬺>íZ>é®>é>ìU7>ë”Ñ>ì>G>ìv>í0¾>ìU¬>ê~Œ>ì_À>ì„6>ìj >ê“é>é°K>ë!å>ç«>çA;>êi>éÀ>çcÐ>åüÈ>æZ>êP>ëŒ>ê%>è³”>å6">èî˜>ꌿ>é'v>èªH>èê >èj3>æêÈ>çàï>æ´Þ>æÔœ>軵>çzš>ä,>ã²Í>Û©=>á8½>ã“6>Ú?5>Ég6>ÙíV>åœ>ät>ä!“>ç Ž>çTæ>ãî§>à[ú>áI¨>â.þ>Ù­y>ßÔû>âÕ>ßà½>ß÷>ã¼L>äSP>à°/>á_˜>äFf>åh…>â+ >à¯4>ã“É>ä¿€>ä[J>ãëm>ㆢ>ä¹>äŽJ>ähõ>ä*€>â”™>ã¢Ê>ä¿Í>ä,Ž>âr>ã=c>äXS>ã€>á >ß?Í>áãp>â#‹>áÜ/>âl>â¦o>à„3>àØŽ>âõþ>á™ä>ßµÆ>ÞHn>ß×w>Ýç>Üâ£>ÝŽb>Û”>ÔrÔ>ǦÄ>É®¿>ÔÂd>Ùn?>Ü)T>ÜÚÌ>Þy¯>Þ˜g>ÞZ9>ßRZ>ß/Ð>Ú$>ÚÑC>Û4>Ý…^>ßÁ]>ßµÑ>ßÌÕ>Þí‡>Þ…Ú>ßz2>ß‘¹>Þda>ÞbÝ>Ýv>Ü >Ù¶Ï>ÙS;>Ùù´>ÝFR>ß/r>ߺ>Þy;>Ýg¢>ØNX>ÙË…>ÙР>Öõ>Üõ>ÝP>ÙG`>Ù¥;>Ø)T>Ú½>Ý ->Ü,:>Ùºð>Ù€ƒ>ÙÔ<>×ï<>ئÊ>ÑÚç>Öàr>ÛL®>Û21>Ûqö>Ú²ü>Øõ%>ØŸ>Õ‰>ÙQë>Ùëâ>ÚL_>ÚÌ0>ÙY4>ÕÒ>Øg¥>Ùs>Ú+j>Úd²>Ù»µ>Ø9¬>ÖË2>×oA>Ú(>Ù÷>Ú!>Ùv!>Ù£>Ù? >Ù >Ùkn>צ>ÕÐN>Ø1º>Öô >Ôçú>ÏQZ>Ô&¾>Õ´M>Õ‘>Óùø>× Ã>Øjš>ØO>×Ãs>×Ø>Ö—>ÑlÙ>Ó>Õf{>ÔFR>ÖÐ>×–>×µã>×…>Õ”—>Ñ–D>Ñk–>Ïßï>ÓÑJ>Õé">Õùô>Ô¿A>Ò~U>Ò*^>Õ›ú>ÕßR>Õ~>ÕÍ>Õ4 >Õ›>ÕcÏ>ÔÙp>Ò¬>Ô >Ó‹•>Ó7m>Ó >Ñ—o>Ñ8>>ÓÄT>Ó]>ÔÀ>Ô4‡>Óü<>Ó{²>ÓD>ÒÛ_>Òn>ÒóJ>ÏðM>Í¢ò>Ò\>Ò£Á>Òo´>Ò«>ÒM>Ó,>ÓÐ>ÑW‹>ÑÉ>Ò·>Π>Êjÿ>Í >Ñ ž>Ðãõ>Ë>ͬ->вî>ÏÆí>н›>а>ÌJO>Í¥k>ПM>Ñ4/>Ðwk>φ>ÐÁ>϶÷>Ì¥µ>Î >Ð:«>Ð á>ϱj>Îìp>Îâƒ>ÏDH>Îo>Í\”>΄º>βô>Α7>ͼŽ>Î Ë>Σ>ÎB´>ÍßÁ>Îhµ>Î3P>ͳõ>Í´ >ͼ>ÍN²>Ì^Í>ÌЖ>Í^A>Ë46>ËÓk>Ëç>Ì-€>ÌÉ>ÌÁÁ>Ìør>Ì|³>Ìm¯>Ìž¨>Ì‘[>Ì¿>Ë™\>Ë,>É•À>ɾ’>ÊZ>ȱD>ÈÝû>Æ6>Ç‚Þ>DZ>Å(i>¿ñ`>³7>±Y>¾då>Ã…e>Äö>Æê>Çþ.>È7F>Çòo>ÇFB>É.À>ɵ­>Éym>É y>È™Ì>ÈDð>Ç´ã>ÈÆ€>Èòm>É-®>É]—>É\½>É\:>ÉA>Ç- ->Æ…É>È~˜>ÈW¿>Ç/_>Ç®t>Ècy>ÇåR>Å ‹>ÄTÂ>Çe>ÇÐ6>Çã ->Ç£J>Æô>ÇA >Æå >ÃÓ~>¿ÿN>Å9ã>Æœ^>ÅÈÍ>Ä8¬>ÄýŠ>ÆR>Ã,ï>¿K‚>ÃÕ7>ÅsB>ÅÕß>ÅœV>Åýq>Å­v>ÄR'>¼çh>¾´@>Ãçþ>Å>ÂŒÐ>Ât´>Ä8“>Äy>Ãt˜>Ãgý>ú‚>Âx>Äx>à L>¼a7>¾CM>Ãx>Ä…>ì>Ãuå>ãG>÷>ÃEu>Â'N>Áüv>à I>Áäl>ÂÊ>Âþ¬>Âñi>ÂÌx>¸ø>Â|×>ÂF^>Áßý>Á—ô>Â÷>Â21>Á­d>Á¥r>ÁûN>Áàk>Á¤ˆ>Áfi>¾Ñg>º>¿è3>ÁYv>Á ä>À:ê>¿ ->¿A¯>À=F>¿ÿÍ>¿¦ê>½Èƒ>¿»>À3>¿õ>¿Ïv>¾;˜>¸+ >¹–Á>¼å‹>¿Î>¿n|>½â>ºZ¹>·U>¼>½û>¾qÃ>½x¹>½üÃ>¾z#>¾V>½ºª>½n•>½Š\>¶Z†>¶ å>½Jý>»¦@>º·Ê>½y>½”Ý>½&ä>¼‘,>¼»Ì>»;6>·Æû>»›]>¼µ£>¼ >º³’>»V;>¼’ >¼…>»ùB>»úú>»æÑ>¹Å>·(:>¸·o>»¨Ü>»•ˆ>º¯ø>» «>» V>ºý ->»3>¹”>¸o>º@>µ±¬>°€û>²"M>µ¨÷>º[>ºH8>¶¼¦>¶"¼>¹Õ3>ºT>¹üº>¹Ý×>¹ž >¸+ø>¸Œ>>¹r˜>¹OÎ>¸)÷>¸#«>¸³)>¸*è>¸®ß>¸˜\>·Ý–>·ß™>¸>µjï>¶, >·¼Ö>¸Ù>·êU>¶8m>²ÿ>´×ú>¶·)>·z‘>¶öT>·<>·yS>·Dk>¶ÿõ>·S>¶·I>¶L>¶¿!>¶Ê(>¶„ò>¶wë>¶MÃ>µèÛ>µÍÝ>µ?©>´\»>®ë>£jµ>®'¯>µ@>µ–Z>µ}“>µ(>´ÕÝ>­>@>§œr>±î>´Mr>³ñ>´ü>³ÊÞ>´O6>´œ¯>´ >­ÁW>¬’>²Øc>²F>³áÇ>´›>³öÉ>³Ð\>³cÖ>³>³M>³\Š>³¨>°©‹>¥xu>­F>²R2>²€>²AŠ>±ÜÒ>²Lj>²#5>°\>§)Â>§)}>«wì>¡6ä>£¢¨>©2~>°µ>±k5>±.>¯†W>ªìÙ>¯…>±>°Ÿô>®A”>¯µ°>°¡>­ˆu>¤f>¦2Z>­Ó¦>¯ýë>°G'>¯ôy>®zÃ>¬}ë>ª.>¡åµ>©W>«íÕ>¯&s>¯Ž(>¯B‘>®³ñ>¬1¶>¬êp>®Íp>®ÉF>®Î`>®<½>ªßÈ>¦â> zá>©¥->®>­œ>¬D>¬•Ë>¬N÷>¬›y>¬±X>£Þ»>™ó>¨8ƒ>««û>¨Á>¥1õ>¨u¼>™¦O>ž³æ>ªA}>©ß*>ª§J>«aË>ªå>¥EÐ>ªG*>¬ Ü>¬.~>¬.Š>¬¯>«ÓT>©ˆs>¦y>¦[Â>“½™>³9>©5I>ª½g>ªlà>§%> ëi>£ >©x]>¨%/>§ÑŠ>¦þú>©¤Ý>ª#Ö>©Qd>¨:>©>¨ƒ¼>¢‹w>¤³Ø>§u½>§…>¦Ñ>¤Þœ>¤S>¢]„>ž X>’>*Š>œm>¡x—>£­2>¤y>¡fö> n$>žë”>£Ši>¥HH>J˜>žF>¥½Ö>¦R¼>¦ >£©>™§>œn> —¥>¤‹µ>¦v>¦6>¥Éª>¥>Â>¥Ì^>¥3¢>¥!u>¥ˆO>¥n,>¢3º>Ÿ«D>™Äl>ŸIk>£ìH>¥d¥>¤ú>£Ül>¤~©>¤§Ø>£ft>£_¸>¤`ß>¢†M>£Í>¤´ƒ>¤?ç>¢ïŽ>¢·=>¤Rr>¤R½>£è>£S‹>£e>£·>¤$¯>£->¢b³>£‡>£pÒ>¢Æ¨>¢„>£Y¾>¢Êk>¢Üà>¢ZÇ>¢Á·>£¦>¢µÈ>¢to>¢ ˜>¡ö">> :©>¢>¡"ÿ>œï?>ý7> a§>¢z>¡Ù >¡Ú>ŸÉ> $> Ø‡>¡u×> B>žÞ> A>¡Ç>¡‰Z>¡y> ‹> :ï> ^]>ŸØè> 9>ž³Ò>˜Ãä>˜ÕU>Ÿk> ,•>œc8>M7>œ,Ã>žÎª>Ÿå> Ã>žàº>žƒL>ŸÎŽ>Ÿ…>Ÿe>Ÿ3»>žU¼>ž„3>Ÿ›å>ŸDk>Ÿ$(>žëë>…9>œ¶²>ž=ƒ>—ÍÞ>R>•(>> Z>œ³¿>žAº>ž£r>žPó>ž_Õ>Þþ>œˆd>œ¦º>ÿŠ>V@>šC¸>•5«>š~%>›‹­>™¦h>šª½>œ“>œ-ß>™Ÿ>š»>›y§>›sî>œCx>›òÌ>œ#«>œ‘¡>˜öh>–ÝÇ>™ß/>šöß>š+>›¨¯>›Ï¦>›|`>›>šºÔ>™py>šp>›ï>›p­>›n³>š¿Y>šf9>–">˜/:>˜äÈ>’gE>–­´>˜ãÕ>–Ç>•ò>™7·>˜”6>–ìß>“1w>OÑ>—‰>˜aË>˜À¿>˜G‰>™n >—¹ÿ>•K‡>˜uº>˜²ñ>™V>˜úê>—vÄ>’ðÊ>—>—ÎÃ>–.³>—"Q>˜fö>˜ÑR>—ï•>˜/Ÿ>˜ps>˜n>˜…”>—l#>– ¿>˜ß>—z{>–»é>•ZE>•ï>—¾¼>—¨ƒ>–×>—3ù>—Y½>•q­>•ït>—9ç>–þb>—+a>–œ#>”N*>”¬Œ>”¨ >–(>•†>–]ò>–h¾>–HE>•Oq>•k>–Vð>–Ræ>•Ô>”ÏP>“YJ>•Y ->•š>• ç>•>•Œ0>•Ž²>•6'>”Øn>”çi>• ,>”š>”6î>‘bs>‹eã>‰>”Ÿ">“ž8>“dm>Ï4>ŠxÜ>Š°q>’y^>“OÎ>’„>“†B>“àÈ>‘ÙP>‘Wº>“vü>’™>ŒRj>ŽÆ>’z.>’ée>’6>’,>‘s>®2>Ž>‘Ú>’ª­>èÜ>>·>‘X—>‘Øe>’k">‘¤=>‘±Ÿ>‘ªÞ>Š0†>Œ÷b>‘(>‘bÏ>±>‘ >‘Â>‘o–>‘$Ç>‘B>‘L>‘©>Û ->{|>ëE>‘Ý>‘ î>œ_>jÐ>dQ> ð>0L>‹n‘>Œ'©>…,k>Œd'>8>>b>òê>Kã>`>‹S^>Ž&>èL>Œ]þ>ˆ˜>Ž—º>e§>X3>ï>ŽÎÛ>ÀÒ>ŽBê>Žõø>ŽC">Šø>ŒŽ«>Žu>>Œ$¡>Š·Z>qÊ(>}„P>ŒP>gC>‰,ù>Š† >aÂ>y˜>ŒUŠ>{“>†>æ>‹×F>‹%R>Œ¨õ>m©> >Œ¨¹>Œ˜~>ŠÎ'>‚bô> 5>Š¤d>ˆê«>‡à>‡ù9>‹bQ>ŒW >Œå>Œð>Œm>Œ5¢>Œe>Œ#p>‹èÀ>‹Éø>‹pÖ>‹F>‹Ãà>‹™ >‹1¥>‹KÌ>‹4»>‹]>‰sô>~s‹>Ž?o>›¦h>¦Ú¯>²Ä>¹™l>·->«*ñ>Ÿ!’>™St>•êÅ>Œl6>uÛ)>QÞ5>@ ä>I¾Â>kÂð>Œ=>ºq>¤Xæ>Ÿ9R>’É‚>…WF>usÜ>d„Q>UOE>N,>YÖ˜>y‰@>§œ>œgj>ž¸>˜×ÿ>]`>Š´ø>‰¾>ŠA>ˆÄ?>‡a%>ŠL»>ê">’Çr>’jh>“›^>—æŒ>š¥À>—¹>>‘?°>q[>‘>œ>ª{Ý>²&n>¬»Þ>›á©>ˆõÈ>y¥Ù>q 8>nIõ>j_>dU>]¥N>W¨9>W%r>a†x>r—Ò>}Á|>|œ@>v->>r›>lqR>X44>7U >~‡>P>15V>`²B>‰B >™Ú >Ÿz´>Ÿ˜[>¡ßO>©g>³0±>¹Æ>¹Ø}>´ÝE>°È>°4Q>´æR>¹u/>¹¥k>¶>²¯>°[%>«;Æ> G_>‘¤z>„]>uï>o^>q¥¨>xpV>€B>…¡X>â>”â>–7>“,Û>’Að>•Kh>˜>û>—¬š>”†µ>å>™>‹xà>‹Î>‹kÁ>‹L#>ŒD‘>¤ã>—Hž>ñ>¡® >§ -<>¬y>°<%>²Ûi>µƒ‘>¶w²>²|ï>©A8>óß>”N>†F>ŠÝ>Œ#>’D>ž¦>®ê_>¼B•>ÂSÇ>»>ÀhD>¼œ->¸E`>³¤q>­Ì>¦›Ó>Ÿ! >—_·>Ì&>øŒ>m1“>^2e>WMÄ>U >Y{û>j°>‚I>V>—C>›Y¾>žÄ’> ¥¯>û ->—Ö¡>–,€> r>´¡F>È£>ÓR >Ò>:>Élh>Àc>½ï÷>ÃCù>ɱ°>Ç[Î>¸->¡X>Š…Œ>u%>d&«>]Ó>_t>iL>zR >‡2>U>—Ó>›éç>¡C>©ý>²}y>¶ý™>¯µy>œÎâ>†ƒ¹>mJ>dy>o J>Â*>‹Oß>”o¢> Žì>°›Ó>¾°‚>†i>»BÃ>°àå>ªÈ>ª@¤>®þ†>¹¿F>Çåb>ÒÊš>Õîx>Ò-…>Êþ>¾i>¯\ý>Ÿcg>’&–>‰­'>„ò2> 4>z!ë>zË5>‡-">—^ï>£–£>¦Å>§2Ã>¬O>´F>¸×a>·YK>°–>¦¥/> Ý®>¡(>¢}œ>žár>•yY>Šw>€”>p…>gMâ>mwk>‚˜>’3J>ö>œ¸²>~N>|¸>_s>Rë±>W?l>eå;>w~m>£É>„&›>ˆB˜>x>™Ö>Ÿ¬>§ +>³e>ÃÄ>Ô!4>Ü?8>×2ÿ>È ©>¸!©>°½>±À>¸º>¼ä>º`¡>´·Ñ>¯¼)>±EA>¼±æ>μŸ>ß°ð>ꟿ>ð{»>ôÚÖ>ùÅ>ûB>ùày>÷à >÷6>ôz¿>í - >ãµR>ßB™>âQ¬>éiý>>ñ‘>îë>æËñ>ÜÜ#>Õl>ÕOJ>Û¼}>â¤>ãuÝ>à°>Ø[š>Î8t>ÅÑ/>ÁÅw>Á*€>ÃI>ÈJ>ÍýÖ>ÑRÄ>ÓCù>× >Ûz&>Ú‚Ó>Ò k>ÆÊÈ>À3¨>ÃÀM>Ò>ð>æ¿c>ø—v?o?•3?ú¥?Ç.? ‚? 8]?‚7?¹?Å?²N?­Ù? -LÚ? ä‡? ßµ?©µ>ó>è\ ->ç—[>ætî>Ûó^>͇ª>È”Ä>Ñsy>à,C>ìã>ó%Ù>õÝü>ó.Å>ê26>Ý(>ÑÉ2>Ê÷õ>̶J>×@>äªj>í¿g>ð‡>ïa)>ëÕ/>äsj>×-5>Æhµ>»–O>ÀP›>ÓtA>èßÃ>ô’ò>ó¼E>ë©>ߘ)>Ö->ÔùÀ>Ý„Ô>褳>ïÎa>òß>ð¸>äà2>Ñõ>Âæ×>ÁDy>Ìd>Ùm‹>ßÞ>Ý®í>×*>ÐPB>̽J>ÏÉž>ÙÏ8>æÓç>ñaà>ôP#>ì´>Ø6Þ>¼.E>¢b >š>f>ªqE>Çà >àë >íy©>ñ|å>ô¾ >ú&_>þ™>þ=î>ö-t>ã»>ÇÓô>¨çB>¿¶>Š3§>›ä>¼4^>ÜÝ>ðÅš>õ¡ê>îë>á>Ñaž>Á2>´š÷>¯Í>¯ßÓ>¬m;>¤ -+>¡[æ>®a>É£>ææ´>ý{’?®?¯Ë>ñÃÁ>Öx>½¯ >µ“ÿ>¾Iù>ÈPG>É…e>ɼ™>ÔÑ>æò>òŸÀ>ñb >é .>è©X>óxÝ>û•õ>ô‘E>á ->ÌIþ>¿þH>ÀŒì>Ìå>à@Î>ôë„? ¯?+^? ÷Ð? -šî? -ÅE? ?r*>ôÒ¦>ëàM>ç¤è>åxS>ãâœ>â\>â$>ãÁ±>æ^f>éä=>ïk>ó}.>ïÌ·>â]a>ÐD>Â*{>Á-J>Θ>áL_>ó3?\z?/}? ž¯? à? …%?šƒ>û>ôóy>÷<Õ>ûâ÷>ü"o>ûyÈ?n3? ñë?Š™?8'?Æ~?[?ZØ>ø$™>ö™?¬ç?Þf?˜÷?Ñ–?±>õrŠ>ßî >ÀÙN>§gí>Ÿ¥ˆ>¥¬þ>°µ”>¾&¼>ÌÑF>Ú¨í>êŠ:>ÿ™j? -*s?«?úÈ?ùb? .}>üÞF>òl}>ýç¦? l?;ø?3­?}›?ÿ>óŒ>êI‚>åÔB>â´ž>äAµ>íœ>÷Åû>ûò§>÷.é>ñ0¨>ó˜ä>þ>?,F?[? €w? -U ?K;?œ2>ú¦™>êY>Ö“ó>Å <>¾Ï½>ÈË@>Ýë}>òËþ?}ì?ö~>ô—B?›? Î.?³º?<–?Ÿ¬?Ë>ö?*>èp>湕>ê;Š>ìuü>î…Û>í„Í>äaµ>Ø¿œ>שí>è º?æ?O?4?ìì?; ?¸? !?k¨?G>? Ý?”5? !ò? Iõ? Ã?¹`?ŸO?K0>ù›->îNÐ>åÌu>èëä>ùÍÒ?ܶ?±?ù@?™ø§Å>í1°>Ýa>ÎJ>Æö>É‹ >Øüv>òÞs?¸? T˜? n6? s¤?S?ê–? ÛR?OL?‡?èn?&Ç?܇?~ô?F?0û?‰û?g-?Ó?<µ?ò7??ÁT?ƒ›?·È?îá?p?G?U?¡?,ì?4I?‰“?’Û? åð?'"?Ãí?»¡?8§? Á ?¢{?½±?ÏQ?÷%?*G? ö>ëÚR>Øo>ݽ>êuç>èh{>×)Ú>Éï©>Îf>ß->ïž¾>ùÙÀ>ÿ I?84?ñ!?iR?i|>ÿG&>êêQ>Ðat>¶6†>«¹×>µ´>à->Ãm¦>µ¹z>ª}:>¬eØ>¹¶v>˦4>Þª1>ôÙµ?þy?oI?Åu?Äû?´F?/Í?û?!®!?#ËR?#w‰?#ïD?&l?%¬;?-?¨]?Ù?ý>ý·¢>þÈ? -M>þ8œ>î6ë>Ýhú>Ûáî>ëo,>þÇn?ï„?L?–E? -\¿?Î? Jü?;>Üx>Å,o>Éßõ>â¼E>ÿ!|? --?J?îo?Q? O?*ÇÔ?/>?,úð?$qÈ?Z>û¥G>Þp ->Ý‘U>ì¾>ù™Û?×€?Nƒ? -qÓ??*™?·‘?#aí?#+?ÔÖ?5g?ÚV? -?-Ê?…?7È>úøœ>öÂ'>üØ~?Ó? %?B¡?„ý?%Â?'^?&Í ?'u„?*O£?.3b?1çV?4.Z?4bi?3*æ?0&?*—å?$Øæ?"³H?$Kx?%ÝÍ?%@{?"ÙL?Y£?r? Ä?"ë?+Ò€?08²?.Áx?,¡¶?+£¡?'Î?’ ?•¥?)p?¶?.¦?‡M?ƒ'?è-? ï¼?Ä2?~B?V ?ZÍ?öå?Ü?xÌ?)?2ß­?4b«?-ðG?&K?#co?$[Ô?&$^?)(s?/??7)7?¸y?CÒƒ?B›?=’?9 ¼?/Ý?úp?(÷>àh‘>Ñ(>ÛBÄ>ùVÛ?—þ?"ƒ8?,!+?)F?°ù?ß>?: ?$#\? •L?~¦?Ú>ëBÑ>Çâµ>³°5>³“ ->¾->ÞÆ?[?Õd?# -S?)Z?%5W?Ó€? w¢?“5>óbt>çë>Þ4>Ï%¹>¼¬ô>¼…^>Ú;C?”­?K??%›`?1ë?<•R??l?3ºï?Ö?V?,™?Ý!?Ó>?å&?»“?ŠŒ?k?u6?dØ?þ?UÄ?Q?BL?Òý?`Þ?M"?*†©?1+ˆ?2À¼?3b@?5R?6ú©>îj¾>÷rÕ? - ?G}?'"w?1ó„?:vX?=.L?8Ûâ?0»?)9·?*Õ?4+ž?>?Bh^?>Ía?3š¶?#ÐŽ?^Ù?¾š?qL? "?VÄ?V[? ax>ô©>ëó×?ñò? Í?±S>ð×U>ÔLâ>ǨN>È,>ͤY>ÕW&>Ý}¿>Ý›À>ÎÐè>ºt>¯•§>²>½›®>Èät>É7h>¾•>µ†%>·8'>Åb›>âØó?Ã?¿S?Êá?‰?B¯?!"¡?$ÿã?#ßc?ž$?Òb?*£? ¬Ö?#$?«?¤?ÓÛ? á?…?“>çÌ>Ú}¡>îÉ ?†?# ?,X4?*¦®?%E…?!¨­?Ýs?ýQ?¿u? ª>þ_à>ì²>ïAN?´?šË?&hÆ?)?í?¯ç?‹è?w ? Lé? µd?ò†?äŠ?û{?n?L¤?Hé>ü¾Ë>ôï?>óž>úð?û?¾??#Ó2?'ƪ?'Þƒ?'¿#?*}Ž?0u?47?2Š0?/¹m?0Ò=?3¹(?0ãì?(5_? ˜°?óÿ?oç?›Í?+¤?9B~??û?A^3?CëE?HÉ?J?G"ë?C¿ë?A4Ù?>³?<Œê?8º½?0­Œ?%¸#?©?Å?á$?%71?%ö©?®:?›0?¼>ßg>¾>¡õÂ>‰k¦>db¤>9Û;>ö×>">>D^ö>yß>œ -Õ>¾=‚>áä?*1? ¢º? ¨8? i2? ZÝ?!Š?–?,)ª?1½*?0øä?4:”?=I‰?CáE?AjÞ?:î…?:ô5?@8¢??ö,?9×?7Ñy?<ûï?A?9¹¬?$À? ùI>üâ3>ð6>àΩ>ÄwE>ž¦¾>s“>A–Ù>8¬>\gÇ>Žìý>³ÐÏ>Ö -,>õb? -l?)¨?%üÊ?1ý¢??æ?L ÿ?Už?X€q?UJ?Pú’?OZ>?P½¬?RžK?SÄe?X(Ä?_Ù`?d*?d¤Ô?gMû?lú?n‰r?lG¸?g"þ?a¨ò?\' -?X÷…?]—0?i©?r­?uá?wr´?yõ?q]ù?_Xˆ?QÌO?UW?dÐ?pl·?u þ?v Ð?w?õ?x’•?yœ?yOr?zXT?y´¦?tðá?r4/?wTƒ?}îb?~ž\?|C$?{Q{?z@?w)f?v]ñ?{ S?ƒn?ƒ1?€¢º?rN ?ae?W}?Uœs?Wëé?^|•?ijq?wؽ?‚ȳ?†?„´=?€».?|UÏ?~ -ò?}?¬?lÑS?P4?<¿ÿ?EK)?`œ?vI#?.Ô?€ñ˜?±ª?xMó?p[…?j¹ƒ?g8$?es -?b Ï?]Kc?_o¿?já?t"J?pà?^9?L/"?JØ—?Vÿf?`Ñ?cá8?ljY?wus?wl4?hýÖ?\U˜?`ÏB?mÿû?qÍ{?gîh?Wòâ?MZp?P8Ä?^‡+?pMµ?|á ?}×G?tïL?jþS?gêË?n?yÞR?‚wN?„ãÀ?ƒì'? 3?{SÔ?w/”?wNª?uV?lž\?bé_?]b?Yz*?QœŒ?Acª?,“?"h?+8¸??©3?S-Ê?akï?ièf?mW‡?mR®?kν?k[/?mÓ5?seç?z·œ?€zE?‚‹Z?ƒåE?‚áY?||‰?sj0?s4 ?w¿º?y 3?x5?y]h?|/ò?{(-?uÉ~?pÉÅ?oÜ?rV?r¹Ì?k b?`ã¯?\ç?b¤m?o7¹?|…¦?‚˜?„0W?†G?‡X®?„ä?{¹?g_ ?Z¾(?aä?q¤?}AÜ?€ˆ˜?¢ˆ?zý??wñ€?wô?vŠó?q¹?kÈ?iì ?k´?lê¼?rk­?y²Þ?~³9?€Ô?ƒ2.?† §?†éÖ?…É{?jŒg?j@?jáß?poÛ?uŒ??rÒ4?km@?h€²?l¯È?s<?rÁG?h]‚?aN·?gõ?s¸l?xÙR?z­P?€Õ‡?ƒ§q?€fW?s ?h³v?a S?Z±?[Ov?_µé?_žC?_° ?fõŒ?p¾ü?wÅg?}ï?€Öe?‚@¾?P?ô#?€ÁÒ?ƒ´T?…F??‚Üò?xö­?mOØ?m¡?v=?}È{?ß?„h7?ƒ÷?~pù?oì?[Hþ?C -Œ?1O‰?:Ú?ZÇ?v0r?F?‚+¡?}E?tñø?p 4?hàé?a ³?a‹?dÜÀ?gHÿ?lS1?sî??vQ:?uòí?zî\?|6?zm°?nmN?cî?]r?ZsÑ?a ?pð?wq„?p~ ?iDµ?n‚Ï?y7s?xß?iGâ?W ?P]ô?\ôƒ?rmŒ?€Ã?‚Ñ?‚\?€n&?wÇ7?n¨?dcØ?Thm?FAU?F;?MÐÃ?SŠË?]ì?mfÁ?zCH?{%¾?pç?fã®?fÕ5?l' ?oYÌ?kÞh?bl\?\#™?[ÍÍ?X?.…?‹J?ŠÑ?þh?’Ál?”¡0?“F?“?f?§7?”Å?•¨ö?•‰š?”ûA?’‘R?Æv?ˆÐj?†±6?‡wÄ?ˆD³?ˆ4ð?ˆ“&?Šü?B¨?’‚?’k¢?'?‹‹Í?ŠïÚ?ŒII?Œ&??‹ƒ?‹W?‹ÔŽ?‹Ù?Š­ÿ?‹©?Œõ‹?ø´?À¸?Ž&Œ?i ?“†A?•Ï¢?•9?’[¡?Å?iÊ?tt?‘²¹?‘mz?³S?µ?‡9?‘…?“>?“e?“?’X?‘7¦?‘ÿú?’¾?‘Þ ?‘žï?’Êe?’Iµ?9Y?q?aq?Ƥ?‹Pj?Š—™?‹ÒÁ?ŽN?ìY?eÊ?L?ŠX0?†6i?ƒO¦?„-ø?ˆã?Œ t?ŽI?Žñ0?GO?Š< ?‰›?Šë9?PÁ?“°Ÿ?”¨ô?’-3?Ž¤%?‹Ö@?‰©Ê?…. ?{'×?rWö?yÁæ?„¤f?Š?‹ F?Š#/?‹7–?ŽG×?N!?Ž–ì?Š&K?‡?†¤M?ˆ k?Š©?2[?ŽDf?Ž~@?ŽRl?{?ŒY~?‹ ?Š/ô?ŠÞI?Œ´?Ž›ö?×Â?Ž¬®?Š¢º?†ï¸?…Ë6?„”Ç?ª ?€fª?ƒ‚?‡UU?‡zŽ?„ò?ƒ·&?…¼…?‰¨ò?‹öH?ŠÍ+?ˆP\?ˆÒµ?ŒÈµ?Cž?‘þj?“0?“B™?’2ƒ?’ ›?“OÆ?“Ïÿ?‘6ó?‹Æ?‡ å?…52?…mY?‡>’?Š?Œº?Œ{Õ?Šxä?ˆÛ°?‹(˜?ŽÚ?Ž$ñ?÷Ù?Î?‘G{?ñ1?É?‘uÐ?‘x‘?‘%5?ùò?ØÚ?¤½?‹bž?‰±?‰ë?ŠÛ?Œ’2?]&?Få?f«?ˆ–Œ?…Þi?„ý?„;?„Ê?ˆH•?ŒŽ -?"§?Ž2Æ?Œ=v?u˜?‘ Ò?“ ¨?“$¿?“àµ?”!?“Ø?’²?’Z?‚C?õÍ?Š?‹Šå?Š•³?‹S?‹WT?Œc×?Ž“?Ç•?”„ï?–à7?–p_?“µø?±*?ŒØO?L€?h?‘è?ò?ŽßŸ?ÿñ?p%?Œð‚?Ô¼?s¯?®Z?‘0±?‘Ò ?“@5?”{´?”ƒÊ?”/?”[?”›?’ ƒ?ðG?Šï˜?Œó?ß?’?¬?Žé?¨ ?†w?ŽÄ?~O?Nd?‡?L„?ŒÎ±?‰g]?ˆ4Z?‰V)?Šn?‹8U?»¤?Žô=?Qv?Š§®?Š`Ú?‹Ñg?‹â?‰Â?„ÄÙ?}t³?vt?tDG?j]Û?PrÐ?2ñÔ?-p¸?Cíá?]Îú?o©Š?{=U?.â?‚ܘ?€øo?tÛô?lÂq?uu€?m:?„³Ñ?…Þ?†ê?ˆ<?Œ”?Œš˜?Š’??Š,w?ˆÏˆ?„ül?‚G1?‚2®?‚1?=²?wyÕ?}"å?ˆ°+?½Ì?“ƒ§?“]]?’v†?­é?Ž›;?ŽQ-?4?‹ Ò?‹9°?Ž™ê??¤?ˆ™‘?ƒm‹?‚ïÑ?‡có?Œ;?2t?Ò$?‹ª?R?p»¥?mw?xì?ñÊ?ƒa=?„w?ˆšˆ?Œû?Ž.?í|?,³?Žvn?‰ÂS?…[?…Êý?‡?ƒ°¨?~¼#?€å=?ˆVC?Žbd?¹w?ÅÎ?Žk?ŒUv?Ž[—?>?¬?Î~?W*?ŽX‡?ÖÙ?ŠÃ‹?2®?teþ?º9?MR?‘tî?‘RÕ?»{?ŽZ“?ŠßŽ?‰g?‰"?ˆ¼8?‰j¤?‹±?ŽBÃ?þ›??6î?Œ¼l?‰ó?‡ŽÙ?…€˜?»?rÝ;?qkÝ?{K?…rf?‹yâ?ŒqÅ?ŠS?ˆ¿?‡ïÔ?ˆ²?‰Å$?‹»´?Œ<¨?ŠÃ?‡sm?ƒÚ`?ú?‚@n?ƒ}?€ -Ø?u»é?xK¨?ƒî?ˆèÎ?‡<á?˜?xÓ)?uêµ?zˆ?~: ?yµ3?wî«?”¦?‚]\?‚«?ƒG¯?…¡¹?…ئ?ƒR‡?¿_?„–¨?‡÷~?Š?Œs5?Œ‡Ò?‡™õ?‚tÝ?‚K(?–J?x!E?iâÉ?ia}?}BË?ˆlŒ? ’?OK?ˆ’"?‚ëó?U?‚“?ƒ±Õ?‡s?ŠÐþ?Œ?Œ#è?Œj?8N?Ž"W?Ob?Ža_?‰,0?ƒÀ??„'?…ç??†T­?‡àQ?ˆ,è?…I[?„$?…?†?‡u¤?…`j?{«Y?ráh?y°E?€ëŒ?‚¶?…îT?ˆÌ?ˆ»!?ˆ`?ˆˆ ?‰g”?‹ ?Œ§¢?ŒŠœ?Šx?„M¨?zr^?sÏ?|÷W?†U%?‰Ž½?ˆJõ?†k?„l+?Ŷ?€Ú/?t?ƒ’ÿ?‡êÖ?Šn>?Š ??‰TN?Š´É?Œ¤?Œ‰˜?Š=K?‡ V?ƒë?€”*?|ù-?~>C?€“ ?€¤_?€ãR?‚w”?ƒE»?ƒJ?„§M?…¤?‚|N?|¹(?x¦}?{^±?|…Ù?yb?~áe?‚P{?€ð?~Àê?€é5?ƒ7²?‚•°?vf?26?\X?ƒ…?…²?‡?Ñ?‡>ï?†PF?ƒEn?€u ?|Kª?nÖê?W–A?Ff¸?Mþ´?_ï„?Z{±?DæZ?L°¿?o¼C?ƒ€?†»{?‡¼”?†Ñ]?¼Þ?h/ ?B›š?;oª?[Ø9?y…–?€iÂ?€‹?€…?w{?q˜®?xƒ™?z¬ô?z -?~€`?‚ª±?…±î?† …?„ZB?‚5í?|H‰?vC¬?vP’?usV?yãÎ?‚sï?†í…?ˆ],?„é€?~!?y˜F?|?„j?‡ŠÛ?ˆ9¹?‡*?ƒd§?x¤7?gî¥?d´ƒ?sÂì?€¬m?‚cù?~hŒ?wúÅ?z1ë?€^?„v?†Þ)?‡^ú?‡WY?†U¯?„ùž?„þ&?„£—?ƒZž?‚ª×?‚"w?d?‚I7?ƒßR?‚È|?س?„Å7?ˆ°?‰Î,?‡[~?ü?rŠ ?ge?`O?`B?hou?fªî?[´ -?bãB?s1(?wª?uX?v?)? Ž?†N?…Û`?‚ @?|‡H?wkó?z-e?ƒÊ³?‰!¸?Š ï?ŠX?‹sA?ŠðA?ˆú-?‡¬d?…®P?€OC?vf…?yÆ?‹Í?‚¤ü?ƒk›?†Äõ?‰ '?ˆ*Œ?†¿?‡óÑ?Š3Z?Š¾T?‰´(?ˆXù?†¾??ƒßŸ?ƒ6D?…þ—?‡yS?†²û?„”Œ?€)I?y¬"?z‰T?rY?dr?lU"?€h?ƒñ¡?„5Û?…÷Ë?‡ ?† ?„MQ?€,?xÂ*?}Œ¸?ƒ]-?„ËE?ƒ¹ö?ƒ)D?‚vˆ?8M?ƒG¹?†Y$?†½h?‡“Ó?‰÷?‹H#?‹ml?‹ ?‰¾¯?†ìG?„ïù?„´¼?ƒ}?€€f?xR]?r~Á?yNÚ?ùÖ?ƒ\î?‚Gu?€M}?€â?‚m?ƒÛ?ƒÄ?„K?‚æ5?€Úm?3o?‚6 ?ƒj?…¸?…Ò¤?…l–?ƒË?|r?€Í‰?‚Ê?‚s8?‚nË?‚`?Y'?~ ?}?}.&?}?}E?}R?zãú?|TÃ?~ü{?€k?×Þ?‚Ð?€S°?~ª%?€9¹?Xf?y¬…?wÍ?uÁJ?m¹#?oûˆ?wË?w-?ys?}ØÇ?}«?{¾?}-?ôÖ?³5?‚Ê°?þ¸?€_Ñ?€Ím?e?€Ç#?‚ù?y>ã?t•Î?vL -?w¶¢?u¿?u›?yòA?}»?J¬?~¼? &?€­X?€L?~o?{6Ø?x-’?z£c?|¡?xa§?si?n £?j-”?j¾9?ozµ?wž>?|*E?}°?~x¡?[×?€Ã ? ?‚Lf?‚x‰?‚ô?œ?€ØA?dÎ?€±«?~¿±?ö‘?)Ä?s(?N ?+”?)¡?€ç‘?€†ˆ?€öÑ?{÷?€Và?|]-?|×T?Lõ?{s|?sù?r¾q?y‚œ?‹{?€€l?~š³?zC?uȯ?wE'?~É?¢P?Ù?_®?€©V?~­?|Ξ?|~Þ?}§?€U´?€\Î?{ºð?tªÒ?r?rç§?r{ ?u‚z?zÞr?};?{\U?y$b?z^?|€%?~ñü?}‘Ã?{œi?~~?€Òž?€²z?}“N?y`Ž?y?{1]?|Þç?~\!?¢ù?Íä?~í?zV?zÃ?~ã?€Ý?€Ð>?€‡Æ?€…Ç?€¯s?€ŠV?€zd?€Ñ„?€ª[?€¤?‹‚?Dá?ŸË?½>?A?€?Ì?€ôU?¨?€Õ?€*—?~’S?}Ä?}‹n?}àO?{%?w±º?w½?tÙG?o -=?oP?týÜ?wàÙ?xO?{ ?|ƒ6?{Rv?{â‘?}Ê™?~¯:?~Ew?}²D?~ -?~(Š?}Ç·?|£ß?{?€?zãk?yS®?w¬i?xqL?uk¬?e#0?M…?Où‹?b³[?gëy?[F@?T¢Ú?d¼?peØ?u[v?xKÆ?y’b?xuÚ?v¿°?wñÄ?yiž?yVb?y;?uáÍ?p,Š?p“¾?tŸ“?vùÏ?wÖ ?xÃÿ?xÉ?w>…?xa‘?xÔ ?u…œ?qÉ?ph³?t¯U?u§?s³Û?uÒ?y?yq9?våÏ?rðó?rÀA?uYº?uÅÜ?s ]?nÃ?nÍÍ?r ?p]f?q»?tÌ?s -#?qù`?s× ?vgÐ?w}Þ?wwh?vtÇ?u<ü?u;‘?uݯ?v¼þ?w;ã?v ÷?r¿ë?n„|?muÏ?qe?tÕ®?uœ?qMØ?jå|?jŒ?m@÷?p‘q?réS?rŠ•?s©?u1Å?uqð?qÑ-?n^í?p@?qø“?p ?np?p…’?oÖ?jqh?hLÌ?lÝÌ?o5?l­ú?l‚Z?lÕà?lä?lqN?g£_?eÚY?hCú?j?lã7?n_Å?oæT?qί?ràã?s± ?s¤ê?s*?rÍ´?rÞD?rˆÁ?pº?o!“?pv?qÝû?r ¦?r¼?sK˜?s@õ?q£?nÒ3?lÆ ?ká“?n¹R?qç?rvP?q¤6?oÜž?küº?j×?nâd?rvà?sŠ?s?s07?s ï?qŠH?m‡Ž?i8¾?jú'?nª?mRo?l'?j¸$?k<í?lŸ³?k؇?jä¤?kn?l‰Ñ?n ·?nû?n¨×?o?i£2?^z9?_¹H?jz$?m|u?l/E?mKÍ?nEí?n+I?nã€?n%æ?l:L?m‡3?m¹x?hê´?b?d€j?j› ?k×¼?jžy?iÓ™?j]–?kPü?m.§?jt?^2™?W"ø?a4°?gðÖ?dÞæ?g/?jüÇ?kZç?i0™?h ‡?iÒR?jÊÂ?j$æ?fMï?dÄö?f²–?gÂæ?b |?U¯”?TG?]†?d‰?e€D?_Ò -?\H¡?c‘?gÛ«?g—Ä?fB®?f¨ÿ?iY?iÀ??kL•?l»Ò?lß?`€¯?]·?[Ýë?ZOQ?[„‹?_J’?b l?cv?bø]?aþf?c\j?e&ó?ee&?e -?d?c&Ä?bG‡?bÿƒ?b?b„“?d] ?e­?eP0?bÌ)?\½U?[Ž¨?a¶©?c—:?].?Uýþ?\Æf?cÔä?cû†?`! -?ZóI?\+å?\þ ?[LÒ?^Bé?^¦[?^ÓW?^²?[ \?W—[?\%ô?aàÍ?c3Ã?cj¨?b î?^so?Zf/?\?_³H?aèÐ?_RÙ?X•,?Z8G?a8²?cy?bÈ©?b¥˜?`tD?Y?VÁ7?\Üp?^õ?Z|%?W>º?[Ñï?_/È?[k²?S‡µ?Vî_?^¡¤?_ÕÃ?]X?ZôP?YŽ~?Zõk?\H?Z¹ö?"}>ý|3?1Ñ?5©×?C5?G}?JH‰?M{‰?M‡‘?Mòü?R\Ç?VPÐ?W?Vœ?Uè_?VRL?Uðé?V4?XY?X&?S~w?M¬}?Q¹?Vp?VEP?W×?Z¨?ZŸ?X(&?V4l?Uè‘?Td9?Tk¿?Vë?Wÿ?Xñ?Xæi?XÝÂ?Y - ?Y*n?YK ?X°\?W¥?W f?V¼’?WÈ?Uëà?Q[Œ?N¬/?S´?VÒ(?V‘}?UáY?U.?Qɾ?R^L?U.?VÔr?X3g?Xª\?W»?V°?V­+?V¨õ?V>‚?U’Á?S -5?Oœx?R?Tãs?TãO?UÇ?TÃc?T^ÿ?Tð¨?T`å?O÷¾?N’+?Sö?U~?U¢â?U¿@?Va£?VÊ?VÓj?VÙÈ?V‚Þ?Ucƒ?R7è?Où…?P?S ?Tq?R§¹?Q«Ì?Rþ=?S¬?T:C?T9[?Rƒ¡?PÁ—?N[ž?J!?J†g?Mí?LZg?Lk ?Nï³?PjM?R:V?SÆ{?SP9?Q¢§?Q ]?Q&ž?O·B?NÙ?OXL?Ox¤?O€?OK¶?P7?NÞ›?M¸1?O…—?Q Ã?QÁÉ?Pù%?P?PBš?P?‚?Q.>?R#Ò?Q*U?N¾?M£f?OÄD?OŽå?P6·?Q›?Q5n?R ¾?Rõ?QÀ?Næ$?L¤^?LS^?N j?OÞ&?OL`?MµK?M9¸?M«?Mu£?Nx?N4û?Ob®?O: ?Nn?Mét?NLŠ?NB!?MÎI?NÔÁ?NAß?N¶?PqÜ?Oð?M¿›?N[Ê?Pˆ?P²k?N¶5?K{?Kêƒ?OAÃ?OÞÀ?OÙó?O‹]?Nj¾?L¶„?Hîn?Eú;?Hy?LÿQ?OBT?Op0?O+›?N?L†â?GJ?Dý¤?G»K?I8Ò?Gßt?IzS?M|›?O?NÞ?NŸÍ?N"g?LØ?Lí€?Lþ?M_9?NZí?LÇô?Hûn?HËÅ?KL,?JÑ?K”‹?N)r?O1c?OÝ?N¸¿?N4?M§?M`É?M¯Ó?N?Méœ?L3ô?Ko??MÏ?Lµ¼?Je?H¢‘?F›(?G¡!?IÌP?JÖ?Jɇ?J¿Ú?H -|?HX.?K'Ï?K¥Ž?J’¶?H¢ñ?H¶?KC=?KÒÖ?L.‡?LžÎ?K{ñ?HvK?F#?HV?Jm?I/t?GË3?Hã?I=?IaS?J¥³?K ?J*ç?HÏQ?IÖ!?Jã–?K_ú?JÚT?I‰ž?J'‰?JH¸?F£:?A-N?>ð?Dý?Hð?JÀX?Js?Ij&?HÌ9?Im?Ib?Hõ»?I“¹?IÙÃ?Gæ—?Eˆ?F¨2?Fï?C_R?D#?Gáè?I)j?Gšˆ?Féñ?Eàï??·À?@®£?F¾?G.?Cc?AD½?DZ¼?F¯Ì?G=Þ?G›Ñ?H3?Fã?E¾q?E³c?Dƒ½?G…ã?H»y?Gû}?H)Á?Hq}?H^?HR²?Fõ”?E%§?E–Ë?Gkæ?HGž?Eá3?Eļ?GT¢?Gˆ?F:?D9?F?GÝ(?H?Hü2?IÀ?I|¶?Iö‘?Hæœ?DÀª?@À‚?By?E_Ò?Eà?C—s?Eæ?F?E8,?E±ð?G’Š?H#B?H!Q?HL?G†6?EF–?DfJ?CK?BÓ?C?7?D¦´?E¢?Då·?CÔ¡?@ÜE?Bk?EBv?E—™?D/Î??ËÁ?? -?B®?EÖ?F|¨?FcD?F —?EjŠ?DšÌ?D¨š?BHT?<ÒÂ?>ì„?Ckð?E0E?DA?CíÊ?E)?Ej?D­š?@×j?9‹?<Õ{?DÇE?F¥Ù?FÅ–?FÛ…?DúÃ?A€?B9˜?Af%?‡Ž?Ay4?> â?9¸Þ?< (?>dÈ?;èç?;Kú?>®^?@}»?B€°?@?=Ú?A3t?=• ?6Ðm?:æc?@9??Î&?>>‡?>«¸??Ç?>…?<·Ÿ?9ž?9p(?=³?=Èc?>† ?A®?BÀ`?@ͤ?>k??¹ˆ??*¢??+–?@¨o?>5K?=¾­?Au??fÁ?;F±?= Ú??ŸŸ??êÊ?@ÉÙ?>Ý,?8!È?8•?>°Â??üS?@‚$?@à£?@U|??6ƒ?=ùA?=P ?>E ?>–z?>6Ü?:Ñ1?8ÿZ?:— ?8Î?0µ ?1Ða?4BE?9½l?=î³?=UÑ?;.?:Ëx?Ò?0–?0qü?.Ô‚?/?,ØD?'_È?)vz?(Å…?*¯?,$5?)ôÌ?*Ó?+?+ßœ?*oí?&Óª?'¬²?'´ª?%)*?$þu?$ƒ@?#ˆÉ?#6?"eÇ?"†I?"e ?" ƒ?#w?#¨\?##J?#9K?$ES?#Fu?$v”?&;Y?$öÎ?$2ƒ?&$?(5?'qM?%–7?' 1?)¼ß?*)Š?)Šy?'ÖZ?'šn?(0ò?'˜@?$Ž?#p?%5ˆ?"7?#?Ý?$q²?!Hq?·>? 4m?j¡?C??cÖ?ª?€;?£?Y ?ëQ?xî?ql?~ñ?œo?" ?"7y?# ?$Œ?%Gñ?&td?'L?%¾¼?%¼ª?%š2?$¦„?$—ª?$NÙ?$d´?&÷5?&¦J?&…?(I?(r??( À?&¬ ?%ì6?&2:?$£k?!5?!*½? !•?!Wß?%q?&Ä?(P?&— ?#=? è“?!½!?$,3?%XÜ?$x©?$Œú?%Ä?$è­?#T]?ö÷?##?&§å?$nç?!(Ã?#ŒÎ?%½ë?$£Þ?$/o?!NÓ?j?ûÇ? {–?$)?#x€?"–?#x÷?"y2?!~I?"?"\ì?"KÁ?!ëú? R=? ©Æ?"%¡?"Ä—?#ÿg?"݉?!¼C?!šø?å ? ô–? •o?-—?ÚJ?«;?h\?Ü?”Z?!¢=?!2«? æ:? Ð? à? … ? [„?«?ˆO? ƒƒ? ºC?! -)? ´?¯ -? @? )b? @ä? í? ƒt?îÖ?v??iÓ? Ÿ?Ý•?8o?x?²‡?2Ì?¡?ú¸?·ö?dÜ?ý–?oã?,ã?ï?1­?ÐM?Û5?ʺ?Jû?‹r?XŸ?R ?LA?_?‹p?À ?-g?ûØ?Ø.?Õ1?rD?¼ð?Aå?E?VÉ?35?Üð?¾?Ö©?ý>?¬t?iö?Ö ?Ø®?Ó5?º?ðm?‹k?ð?^ª?C ?´*?EŽ?hþ?šÍ?Œð?#ë?Äm?6?Øt?=?®#?@D?Õh?è?Vq?fI?á&?ã?§?„`?ÅÈ?'Ã?ĸ?Œ?j?¿W?¢Ó?`3?Ù?Ÿì?÷”?ëÍ?ÚR?Û?£‹?Á?Å>?`?{à?¦¿?°˜?Æ>?`§?(š?•P?¿µ?Ýñ?Òü?â²?wH?N¤?t ? ?dŠ?¶ÿ?Bø?ñ?¨?žk?®²?× ?ý?¿±?|O?3?òö??à?\?’u?Mw?Î?>?éZ?„?yz?}c?IÏ?B??ˆÃ?1?ÿ?:ÿ?¡Ý?‚j?$?<?8ÿ?‰?JP?ïX?W·?Lò?6?ïî?¶E?Ò?»"? ñ?Ù_?c´?ý?úc? -J?13? á?$?/„?Çþ?Jc?Ù?ö?…?åý?Æ]?ùU?Z²?q|?í[?d ?’Ü?N¥?™9?Do?k¥?îø?âù?]?üX?_x?/Q?%?É>á}$>ï¶G?CÛ? ÐK?`?`Ä?¦?þž? j? ³@? ê?ë×?\ä?x?]µ? š?%g?aö?[¬? -ÁQ?íÙ>ñY>À\`>§iÇ>ÖG>ý|v?âî? -ïÿ? ·Å? ¯+? -’? 3Z?›¼?£ô?»?ѱ?£Á?‘?pŠ?a?Ëâ?éB?1A? Hô? µ±? Ž¢?|È?â"? c? PR? -ÅÒ? Û–? ÷8?K&?Xm? æÊ? t ? æT? -A? ~Ë? V? ÐÏ? ¤? 4¼? ÿL?ɦ?®å?TT? ²C? Há? ºS?ã?{M?_G?ø? `“? &U?%P? Hv? 3ñ? f˜?³->ìð%>·!.>¼»G>ð ?3?̽?Î?Ž¤?"Ô? -Çi? ? Úð? õµ? -ÐÒ?:?zt? áÔ? Há? §? ,? à÷? ¡? ¢:? ? ¹K? -]ø?ÝC?f? Î? Ë%? K[? |? §? <ì?‰N?Úå? MÁ? Y½?•?%? -¬ù?]ù?¨`? -Ší? /?¼z?ì ?á?³–?]? ^N? ª?A? Ê›? ØŽ? çe?p]?ˆ­? -šÒ? ‘+? p“? c\? `¯? ¹M? {?ÎÍ?Ïâ?ŸÂ? -Ü´? Ž? wå? ]z?h†>öw>ýd-?•½? I/? B? -Ä? -B? -J®??½?Ï…? -B{? -‡T? -d€? ÓT?"©?8ž?Ó1? Íý? n?nË?{V? Ck? %!?X|?‚í?L??ò,>üŒ??D§?¸–?þ×?Ò?Åœ?€?3¿?ên?™&?ÿÒ?ëÁ?²ç?cê?6@?bk?)r?œ_?RÆ?(¦?-H?KY?ˆ9?ÿ?Ê?‚ä?­4?,‚?ŸÆ?Î??¿Ý?c?Jh???m? å?~p?Ux?‚+?êV?UÒ?ª ?[í?’ -?ùÄ?ö•?i?Ï”?“Ö?1!?Ýâ?wÁ?ë ?6ð?~?²?Kž?´?Р?” -?µ?A-?ün?æÝ?iö?Š?H?T¨? E?€?ÜÈ>ø0i>ô¹<>ð<>ìû„>ø >ÿ§>ýÎÍ?v?rö?N´?îO?Wº?ó?¾?e§?RÉ?nv?4|?8–?Ï=?Ë ?#z?¾?®ò?Ü?>öÄ¢>ùG«?+c?×`???pÜ?N >ûkÄ>ú8?ïD?×æ?(>ïù½>÷èY?w>ùzH>þÇ>ÿ'\?Ž?¶6?™?m½?ƒ&>øR>üô#?Ç^>ûr >ýPç?»?ï?ãÂ?Ì?_e?¼?ËÐ?h?Û'>ÿ7S?‹>ü.>ö„k>ý!ì?±Ð?BP>ÿª9?*;?z>ÿÉ">ü4d>ýåŸ>ý;¾>û¦Õ>ø,­>øÅÈ>üú¬>üP²>ü“>ý ­>þšÓ>ýÕ+>üá>ýÛ>üŸï>ý›Ž>úÍÓ>ù 3>û!Â>út9>úM>õ€˜>ï^Í>íóð>ôïî>ôƒ >óÉú>útÏ>öì<>ïëm>ã«m>Þ¥\>íuˆ>õný>ó!Ù>ïÍA>ößZ>÷>ô£p>òR™>öÈ÷>ø²z>ónm>ì>íP>ñr>õß+>óÏ>ö×->ùÿ‹>ùG>ù)þ>úú?>úq´>ø Ž>øÑâ>ùÞ;>ùHÐ>ös>òñ >ôdŸ>öX >ôlÙ>ö® >øÂU>ùÐ>øYG>ö\8>öÅÇ>öÃ>÷->÷M>ó·>óŸ>ö×'>õt©>ö|3>öÚA>ør>÷26>ô@T>÷RÓ>÷YÈ>÷–>õOm>òîr>õÂÚ>ò6÷>òµ<>õ0Q>ò¡²>ðh–>ï“Ë>ð/÷>õ©>ö§>ô5$>ó& >ï+G>ó¡?>õµü>óJß>ò`A>òðm>òVÅ>ðì¦>ñè¿>ð+ï>ðµE>ó6>ò)­>ïù>îR>äË >ê—œ>íLT>å§>Øû¢>ècå>ð\ >îQS>î´³>ñ{ >ò€µ>ïA>êþ„>ì\¨>ìf.>äç>ëÙ¼>í¹>é¿(>è{}>íG›>î|t>êxÎ>ë\•>îä¤>ð -t>ìdÈ>êL>>îIõ>ï( >î+—>î3Š>íâ>ï*Ö>îå>îêW>î 5>ìÑ>í“ó>ïö—>îú>ì†>íš>ïŒ>íl>ë[Ï>éË>캖>ìÖ>ìO¨>펻>í¢7>ê| >ë¦0>îð¨>ìhß>éü¢>éZÜ>ëäa>é?å>ç­F>ê1š>é(>áÁô>Ñ÷ >Õ;`>â +>åƒ>çó>èb·>êIå>éÑí>èþq>êu>ê‹ž>ä$ó>äÎ>åÁ>èa~>êÊ6>ê}!>êæ >é¯þ>èåý>ênÙ>ë`>é}é>é‹>æÚ®>æŠ>ãÃä>ãÂ>äaë>è0—>êÞ6>ê½>é…Y>è`¶>â­…>ä;>äi>á/Á>èh >è«>ãi¤>ãö>âS%>å·Æ>è#×>æ×S>ãz'>ãÏo>å‚>ãDi>ãw.>ÛÐ>á3>åó»>åÎÆ>ær^>åÉo>ã; >âtl>Þ¯ >ã¤R>ä\Ü>å />åÉ>ãÅ´>ßOÕ>â5ô>ãž1>äòj>å>äëÉ>âØÔ>á `>á¸Ü>å{å>åiÖ>å]j>ä?†>ãß>ä4o>ãÆi>äœ]>ák=>à è>ãV/>áŒ>ß>ÙÑ–>Þøê>ßØn>ß>Ý;§>áXî>ãÈÉ>ã°>âô…>áü>á¶í>Ü ±>Þ!W>àDª>Þ:P>à}u>ã:->ã€æ>âPI>à´>Úí¡>Ûlq>Ù ‚>Þ4“>á3_>á8'>ßyÍ>ݲ¨>Ýš->áh>áA(>àÌ;>à¾>à‰9>á >àÆó>àŸ">Þ´>ßu¼>Þrg>Þ—ú>Þöh>Ü …>Ü6ú>ßl3>ÞÒŠ>ß_>ß¡Ê>߆X>Þ¨¯>Þ9Ù>ÝÖÜ>ÝZã>Þ>~>Ût¦>Ù3¨>ÝÞ%>Þ-I>ÝþE>Ý) >Ýç>Þä>Þå‰>Ür>ÜÐ>Ý¿†>ÙÞi>Õ¡>Øg³>ÝX<>ܪÃ>Öê5>ÙxG>Ü>Úýt>ÜkÍ>Ûcö>×(†>Ø’F>Ü:‰>Ý3|>Ûîe>Úe©>Û]›>Ú¿×>Õtž>Ù>Ü ç>ÛÖW>Û-*>Ùÿ(>Ú6C>ÚÇæ>Ùé>Øy´>ÙùQ>ÙßÌ>Úa>Ùv>ÙªI>Ú à>ÙÈ’>Ù\¬>Ú%>Ù—ã>ØÌì>Ù+—>ÙT>Ùi>Øa>Øq“>ÙH>ÖÑO>×1r>ÖŽ¶>×HÝ>×<ú>Øcy>Ø×R>Ø)>Ø’>Ø–]>Ø• >×Ö>×4*>ׯ>ÕII>ÕoÂ>ÕÒá>Ô;B>Ô˜>Ðþ>ÓÉð>ÔD}>Ó(p>κ">Á9Ì>¿M¯>Í}?>Ñ3>ÐPÞ>Ó|>Ôj&>ÔB€>Ô>ÓU>ÕX >Õñ@>Õc>ÔŽ…>Óç_>Ó]F>Òu¬>Ô?A>Ô¶ó>Ô÷¿>ÕO8>Õ_í>Õkù>ÔÝ>ÑÚ>Г>ÔÓ>Óì">Ñú´>ÒðØ>Ô?0>Ó~ ->Ðåï>ÏhÔ>Ó -»>Ó‡m>Ó¹ª>Ófa>Òy>Ó™>ÒŠ¹>Ï1Ü>Ì“>Ñ&>ÒDÂ>ѹ>νÇ>Ð6+>Ò‚>ϧ3>Ì.>Ï,“>Ð݈>ÑSU>ÐÞ>Ñد>Ñr›>ÐTÒ>ÉÑv>ÉÜi>΢D>йV>ÍÕ<>Í?v>Ϲ5>Ïݹ>Ï7þ>Îâ×>Ïo‚>ÎIÔ>Ðø>Ͼ>ÈÛu>É–B>ÎÅ>Ïév>Ï%a>Ï>ÏoÔ>ÏF±>Îל>ÍÓo>ͨn>ΧQ>ÌW/>Ìåk>ÎÉR>ÎÅq>ά>Θ]>Î/é>Íê.>Í^¿>ÌÊÝ>ÍÄA>Íùb>ÍTû>Í_q>ÍåØ>ÍÁ,>Íz~>Í:M>ÊŸ>ÅlÖ>˳5>ÍOï>ÌÑ@>ËÁw>ÊN>Ê‘o>ËÎ+>Ë„º>Ëcí>ÉIO>ˇR>Ë÷*>˯€>Ë‹g>É´µ>Â^–>ÂÆr>ÇS>ÊyÚ>Ë=¹>É@Â>ŧ>ðÍ>ÈÁ>ȘÕ>Ê9À>Èëþ>É‹Ç>Ê4x>Ê·>ÉQk>ÈÂ~>Éja>Ã>ð>Âܱ>ÉOè>ÆŸ]>ÅW>É7¯>ÉW¦>Èà>ÈA>È3Ÿ>Æjý>Á§[>Ƶ?>ÈV>Ǩ¾>Æ>Æå÷>Èkÿ>È_(>Ç‘Ì>ÇŸø>Ç‹Å>ÃÕ>Â>Ä{3>Ç‹|>ÇH9>ƾ>ÆŸâ>Æ—ƒ>Æ¡Î>Ç ->ÅWb>Ä.>Åù>Àç>ººž>¼¡›>ÀÑe>ÅÄM>Æ>ÂAÎ>Á^¸>ű>ÅÙÙ>Žz>Ť2>Å\L>ÃvZ>Ã÷">Å -ˆ>ÄçŒ>ÃCæ>ÃC¤>Ãüq>Âþº>Ä6—>Ä3o>Ã>Ãå>þ >Á:£>Áâ >Ã=´>á/>Ãqí>Á÷>½‚Ñ>À >ÂH >Ã2`>Â>Ü>ÂÆ3>ÃIi>Ã1>ž>ÂÒË>Â`g>Â/>Âs>˜¢>ÂH¤>Â;b>ƒ>Áq­>ÁMŽ>À‘>¿°¥>º­~>²>»ö½>Áoý>Á~¸>ÁH†>À»3>ÀÑÊ>ºYÆ>³ÿ>½ >¿ó÷>¾Œ&>¿º™>¿ €>¿ßÝ>Àu>Às>ºß+>¹î">¾Ì›>¾Š>¿®R>¿Ôç>¿Ég>¿”Í>¾ûE>¾|+>¾þô>¿ T>¾Û4>½ õ>³ß>¹Šr>¾>½}º>½×3>½F >½ß?>½µÅ>¼>²MÙ>²B>·­_>®Ek>°à˜>¶ž¦>¼Ët>½ß>¼¥H>ºÿ¿>µ·Å>»œ>¼Ð2>¼G>¹ÄÑ>»cu>¼IÃ>¹>°µ†>±·”>¹n>»>»ö`>»©&>¹á[>·î¾>¶¤î>°O>µc¤>¶6¶>ºŸ^>»C’>ºÔº>ºZñ>·„b>¸)Ÿ>ºk>ºG>ºd†>¹²ˆ>µ²>±‰>®\Ú>¶‡u>¹ðq>¹. >·ò>¸1>·ØN>¸pU>¹Â>²Žä>ªG>¶>·q>³Dõ>®U9>µ±>©Ç>¬ù>¶`>µ¹¾>¶ƒ»>·¥>¶¯·>±ì>¶OZ>·½g>·ç:>·ð†>·å>·±>´Õ¥>±à¡>³›T>£½ª>¬Y:>µ!Œ>¶lÐ>µûÙ>²/~>¬G{>¯Ä4>µ?>³,p>²¸.>±¬ñ>µ1‹>µï™>´ôŠ>³­„>´Ü1>´I?>¬ž’>¯Ÿ€>³j÷>³»×>²£J>¯ˆÍ>¯Ë:>¯>«Ç¢>Ÿ â>œGÚ>©üj>®~,>°)é>°m¾>¬æ½>¬Âú>¬K>°)L>°1ú>©7U>©Øï>°Ep>°µÚ>°Ja>®…>¤QH>¨%>«¤ˆ>®±M>°€Â>°œÕ>¯¹Ç>®„¢>¯ÐX>®Íå>®å|>¯ >¯[>«Ô>©é^>¦÷±>ªmr>­’Ã>°"Ê>®wQ>­à>¯A>®ü>¬©d>­¦>®Üå>¬±G>¬nù>¯Yx>®½ >¬(S>«÷Ó>®ì@>®æ™>®Ë>¬ñ5>­Z4>®ø>®î¡>¬ø·>«Úu>­¬Ì>® þ>¬ÄÆ>«'>­÷Ê>­b >­\E>¬*A>¬þt>­¢ö>­ í>¬Àá>¬^)>¬u›>§™>ª>¬k]>«kÛ>§Ùç>§ú>©öŸ>­®>¬|’>¬«[>¨x‘>©Û>«“Š>¬&¬>«Q•>§Ûñ>©–R>­O>¬¢¡>«®t>ª²¡>ª'd>ªà¿>ªí©>ª a>¨W‡>¢év>£Úž>ªP’>«RB>¦'>¦Ýî>¦ì>©qì>ª¦>«/ž>¨Öƒ>¨7>ªÛñ>ª[>ªo>©ØV>¨%\>¨‡>ªÛ¬>ªB›>ªú>©®á>§‚>¦]2>©u•>£9>gï>¢s->§Àà>¥û8>©ó>©ù>©bÊ>©–º>¨«Ù>¦*->¦ZL>©*d>¨]v>¥º>¡êÅ>¥Š¼>¤ô>¢þ>¥N>§Ž ->§c>¤„Ç>¤#ë>¥7q>¥9T>§&¥>¦é">§u>§Ós>£H°> tÉ>£/b>¥]ø>¤¹ð>¦“ì>¦À‚>¦%Í>¥m>¤®q>£ Ú>¤gR>¦â>¦wï>¦‚e>¥7Ý>¤ÝR>žßh>¢3\>¤y>žzÈ>¡«ª>£)Ÿ> “>Ÿ†˜>£:ˆ>¢Ùò>¡!’>žéþ>›¥ò>¡©Z>£š>¢ð…>¢>¤'j>¢˜³>ŸÈb>£2>£/>¤Y!>£­ð>¡p>\Ô>¡àØ>¢¦6> bª>¡:V>£L>£êv>¢">¢Áà>£U÷>£vè>£±Y>¡ëæ> X›>£1K>¢&é> çš>ŸÜµ> _¨>¢×Ð>¢«Ò>¡;s>¢*Y>¢y¼>ŸµŽ> >¢>ã>¡Ïr>¢B(>¡xÉ>ž§x>Ÿ…A>ŸJÅ> ˆ >Ÿ¼>¡S{>¡Q>¡4)>Ÿô9>Ÿ‘7>¡‰ ->¡q> š3>Ÿ99>á<> 7x> sá> G>Ÿ!> £ > °\> Š>Ÿ_G>Ÿž"> o>Ÿ>žÚæ>›f¾>”Û®>šþ»>Ÿ¿­>ž­>ÌB>š­J>•#\>•\>7¿>È>œ[>žù>žæM>œ>›I2>žXù>¬e>–Á:>™t>6=>¶Ì>œµ«>œ°/>›‹ >šÐ/>—œ³À>É>›G>™>›Ï•>œ–ë>l>œb>œ>2>œªP>”œ?>——æ>›‚g>œ"è>šz°>œ Ç>œÕV>œ2>>›Ñ…>›µÃ>œ>œ¨>›—4>šßï>›Ó>›úX>œ¸>›f¼>›ƒ>› V>›©ñ>š3K>•þü>–ØF>g¿>—)o>›F>›^³>šÏç>šÙ>—Ú>–rY>˜àç>˜.{>–Š1>’f½>™˜Ñ>š^->š[Ð>™ßÈ>™}š>—ê«>˜Þ¿>™ü>™3î>”¶Š>—Ž>™[>—Þg>—}->—o >‰O¶>Ž—ç>˜Œ¿>˜Èç>“¹£>”ÅÆ>—ýz>˜]>–¼›>˜do>˜q½>—¼Ú>–J>•ý>—[l>˜}_>—ì(>–Èù>—Z>•NŒ>†?>ŠuÓ>•y >“‚Ê>‘ëh>’0Ð>–F1>—?Ï>–ºó>–¹Æ>–Ð>—(¥>–ÿH>—ô>–´°>–Š€>•ùû>–L×>–º‰>–|Æ>•À¦>–ñ>•ì>–Uÿ>“ü=zE=”&Ç=ªSP=¾>ì=ÒÙÊ=áä=ß˲=Ìùµ=¸D´=­@§=¦¹ì=—_É=wšN=>G„= ]=-­Ù=bñ=•ÖE=µf\=Å% =Â¥È=³Z:= Yù=™=‚+B=jÉ~=]ÒÞ=oÝ‚=‘þê=²î=É‚=Îè`=Æ&¼=·š=ªØ:=¥Š¿=£ef=ŸGs=œG= E”=ª”=°µJ=²n=´5þ=º7r=¾K=ºŒÛ=±.û=ªmØ=®=¾Ö=ÖÊ=ç_B=ãSª=ËKº=® =šÃ¸=”KÛ=“Ì=a’=‹?ð=…šR=Øu=ƒÓÚ=ŽYl=P=¨a4=©˜#=¥[ -= }=—_²=‚àø=Lµ=`\=#==ÿk=†-1=°Èœ=ÎQ˜=ØìB=Øù=Ûö=èGž=ùoŠ>ê!>‘±=ÿg‘=÷·¯=øIá>3]>¤Ÿ>õÁ=þ ¸=ø¥Ñ=ôÝ=ì6>=Úf=Ãþ¸=°–h=¤r1= šú=£jª=¨_(=¬”Ê=²ø“=¾H;=Èõ»=Ê”'=ÄnÜ=À 2=Ãä€=È ·=ÈâN=Å}=Á¬[=¾ª -=¼æ0=»ÈC=¸ÆÊ=³™‘=±âä=¹ ³=Æ)‘=ÑX‚=ÙE=á =ë$z=ô û=üse>d>‚[=ÿÙ=ïv‘=Ûã=ʘf=¾"H=·¶O=¸žs=Ä=Ú¬Ç=øçw>µV>=>#> />¶Ã>ï^=ûZd=ò“©=èsâ=ÝÔ}=Ò“=Äo>=²Æß=¡RÔ=”ªö==ˆÒi=‹»=˜`¦=®„=Ãõ÷=Ò;#=ÛS#=âôr=æœ=à¥:=Ó§^=Îp¾=Þ(>‚>Ç>õÉ>¦¹>¤> ¼!> ôa>÷>Æ=>§¸> ‰=ôf -=ÐÍ:=¶ð9=§¿=Ÿ³k=žCn=¤2ž=°;)=½ã‚=ÉN+=Ñé=Ùãú=äö==õf>ÛÒ>Ì>úU=àe9=º(ñ=Ÿ÷=™&í=¢>ô=²!ø=ÁÆ=Ѹt=çÈS>eY>ï>ÁU> X>è«=ùm¡=øõî>Ä> ë>~ó>»‘>Ö>>ì„>å4>Ê=ù)Ë=áÿ=ÎÜÂ=ÂYö=»6¡=µCñ=¯LÒ=°kn=Àÿ=Üe=ð~N=õ7ô=ôŠ:=ûV!>[>«f>Þ}>.ï=ïE)=â ò=àÒ\=ãÏ?=Þ]7=ÎJý=»nZ=«sì=žùB=˜ˆb=ž4=² ¹=Ìl=ß.=ß u=ʨÏ=«9=Ë8=‚|Ê=„ =JI= r}=¬9•=²ü=¸Úp=÷Q=ÍÑ=ÓB=Þ Z=ör°> ª<> >§>*7B>&h7> -Ì>ðG>ÍÃ>ÉL> > -ù>|C=ÿT´=ö׎=ýQq> 7ü>‘>/EH><5u>D^Ê>IÒH>Muï>N¥>Kšr>H­ >GHD>D¯Ú>=ªi>4Ð>0`Ä>3(>9Ñ$>?¶å>A°0>>« >7>--¯>%>$–D>)HI>-Ö}>/ Ž>-`B>(L>év>ál>™Š>Ð>Wÿ> ‚>l„>#]>&ok>*‰n>-ÑW>+UR>!é'>ýg>p‹>W>*6ª>?x]>P]ö>X}ì>ZÑ`>]6Á>bU‘>g.J>eûa>^$À>WJ{>X6 >^û›>f:C>l …>o%>j=H>[$)>HŒ+>=€>;÷ñ>: !>/Íß>"xÙ>E:>&;§>2ª¸><¦|>CT‰>G> >F  >?±Ç>3äk>&î>)ó>^h>#W…>08i>:bü>>Šn>>(>:É>3”­>'>x˜>E>ìÕ>'¢:><æÔ>H=Ÿ>G`Ý>>µ=>2¿Ÿ>(k_>&î½>0€ƒ>=€>F§>Hóï>E—_>9s…>( -æ>à >˜_>'ÛÙ>48>8¿j>4-N>*Ū>!Á->,>ó>)Ÿu>5ô#>?‹">A‚Ó>9>&m"> -è=íWÄ=àÕ$>Lû> Q>55Y>A¾ >E±‰>IXê>P->V V>V&â>LÖ>8+N>¿ =øz =Ì6©=ò=åƒs>xë>0¦o>AŠã>DP>=™S>3I >&Zm>Ñ>li>¦Ö=ýÊœ=øCZ=ì§~=윢>6ž>!C?>?î>Vר>añ>]œi>L*L>0.q>Ú±> uš>A><ò>ê¨>íù>!U¶>3•‚>B:s>CËÃ>=zÇ>=Ðò>H=>Nx”>E])>0ä³>ÃT>γ>¨2> þ¸>5Ä>Jºk>]ë>kTû>qò >tî_>uƒ³>o”>`ö”>S'î>KÔP>H¿s>FÏ>Cfã>AŸ’>AÁ'>CŠo>E p>G%>K‘`>Mñ>EÙU>1$—>Qƒ>)µ>Î>åÆ>/ð³>G#Æ>[ÜS>n g>{jb>~« >y33>mÒ>^)À>TX£>Tža>Y$>Xðþ>W;C>^t8>q½“>„A >Šò>ˆû”>~®>cpª>OX!>L‰d>X‘Ò>ekÄ>hÛz>d c>\E¥>OZ)>6˜(>zK=ùYí=î*=ü~t>-Ò>ìy>-Ø>,v¥>>9®>Vºá>n“>}Òë>‚’6>‚"E>uÖ¦>^R>Q:$>] -‰>y y>ˆVƒ>ˆ÷H>}6¢>_Öm>JN'>Bÿ>ACÚ>@( >Bðù>Mom>Z«>^ù6>Xì[>P­í>R-š>^.æ>k,u>s'¹>wO8>w¡ç>qY>eè>Vl>DÚy>1–ð>!Qú>Œ]>'ì3>=ë¡>R´>`µ >kcW>s—È>rU>c*®>S;H>S˜>g¨«>‚ÌÉ>¸ >“•<>‹¢Ì>x!>XÊE>FÊ!>DD÷>Gr >I@Û>K0>JKZ>@ïÌ>5xÈ>6<í>I ¦>gFy>³¤>†z>‰™(>Ä¿>’O>’¢˜>‹vÓ>}ð¤>j>ç>f7Ü>nj<>wI«>v¸ò>lÑ>b’÷>\’>TP>I#²>B"z>G>Y%ß>q¹}>ƒ:>‰©>‡ó>~î§>iÝ”>Y©Ö>P¾­>HÄ(>>`>5Ì@>4Z¦>:`ö>IÁ!>`~ü>sâù>z§€>vR>mH³>e’ê>cF>ii>rèo>x¾Ú>xþÕ>x|>|G®>ƒØ>‹>„Ö>Œ×&>‡hÿ>„‘¸>…fð>†Ö_>†>~>„¤Ü>ƒ‰D>‚ ¤>€fU>€Í>ƒ -8>ƒå[>n>y‹e>pF->ká¢>pƱ>|i>‚œ>‚ßâ>ì™>wU>o¥>j0>kˆ‹>yÙ>…]E>†$ >t„>R!><#>:d“>A®Ð>D™ó>CDØ>F”>Nε>Sqœ>S ‚>SK¬>Uu>V/¨>Tš{>SDð>SÁ½>UG­>TÏ>I­>7Œã>+•õ>,³ü>/“î>'{$>¹> þ¿> 2>ã>–ò>"× >7îP>T¹1>l%>w’ð>|x’>¹I>†m>Œ¦—>”?¿>škÜ>œŸ¾>›ö!>™¨T>“ù>‰²>}<Í>p„H>o 3>sß=>|DÕ>‚PÚ> é>rvV>[Û>Oþ>Q\>YÑ>\3G>Y×$>al9>woL>†ag>‡Þ >{® >\£8>I)>NÃÖ>f€‡>!K>‹²Þ>€®>Q’>—Ü¢>§¡>´Ë±>·¶ã>±ù¾>¥ZÎ>¸Ñ>lYš>L—0>Lh>[Nõ>i3õ>tb‹>€­d>ˆ=—>‘­ç>Ä÷>¨z(>«²ë>¦s[>¿>“ó>Œ >…(Ð>€£ö>c>… >…Ç{>‚Ùf>àÒ>€<>…¬à>ïÎ>›ƒ¥>£e³>¥û™>¦Ëi>ªa5>±e>¸X>ºWK>·;>³>¯·N>«¦/>¥½X>¡ã§>£ûŠ>©ð~>¬ÆÁ>©bD>¢ >™¯>’_]>”¯p>¡@É>°Oß>·þ‹>¶úö>´ÈV>´u>°‹>>§Œø>ŸhÚ>›%Â>šd>ó>>¦ñ#>¯…8>³ã >²!œ>§·ž>—üK>‹µ²>ˆv >˜û>ŸfÓ>²µÅ>Ó§>Í•?>Ίk>Ç·>¾í¸>ºÀ>¸ž>¶5>¸?)>ÄÕê>×Qñ>ãpé>ä-m>Ý 7>Ïü6>¼ï>¨•Å>š>”†Ù>•ë‚>™–]>œ0>ŸU^>¦<0>¯ÞJ>»Ä>ËSC>Þ@L>èœ>æ˜Ø>æ·“>ì>¢>éúï>ØÉ>¾0*>§vø>™h,>˜JC>¤ð >·„m>Êö>ØÖq>Øš>ÆåŸ>»>¾ÎŸ>ÂéÒ>¼¿ù>±Cx>£¢[>“¼>ƒlÒ>w$>}1 >‰Ó+>›>±åä>ÆVQ>Ò•x>Óbé>ÊZ>¿?D>º7÷>¹âM>´e>¦”)>–ðµ>„ô¥>hz–>bÌË>‚k>~>·d\>ÍI¼>â6~>ñü>ñ¢•>Ùý>²Oø>w>€6;>¤>‹5ã>šÞ>«¸/>»|å>Ǧ>˶~>Á™r>±é–>¬ƒ¶>°àÑ>²[L>±%’>¹Zú>Ê—ç>Õç4>Ó>ó>Éû‹>ÄÂ>Æn¨>Ëw+>Ó ¤>à†>íMç>ð3n>êeX>çä¶>í`>ðE‚>ãØù>ÊH>´¹>¨ò§> Ÿ‡>œ´j>¢ED>¬Å>>±Ñ˜>­þé>¥ôM>Ÿ2Ù>šÐé>•\>Žï>Ô>›>­ó >¾ô_>̉b>Û\â>è±¹>ëºE>áË>Í’>»y%>¸l>Ãö>Óç>ß±>á?Ú>Ö2l>À¯Î>«lI>žé>œëg>¤Æë>­Ï”>ªÏ•>›Wµ>Ž×‰>’Ž> D‡>¥kH>™£Ó>†¨9>tSÝ>r+=>€æz>Œ®Ì>—w>›ùÂ>˜®?>ŒŽ{>z9>fwî>cKo>j~#>tß>{£Ü>zAg>téU>sË÷>~pƒ>Ã> oó>¬ þ>­¨6>©˜ß>¤»±>¢ -> Ÿ>—v>‹bà>…ÕU>‹”þ>•!5>˜ö(>—åù>—T¡>—±>—d²>“÷Ü>Š/8>}b>wžÚ>‡|^>œ(%>¬ž<>°»>¬%·>¥Yš>Ÿ/>™ŽÛ>“ã­>ŒÜ'>ƒÖ>t½Ë>l54>wl > M>£ûk>³ÐK>µ`@>«\k>>l>”’>“^ >L>‰ a>‹×Y>¡>¹8«>¼ïª>³ Â>¯N1>°$>©×*>¤•>­:Q>Ä4’>Û±m>æÉä>âÒÖ>Ø õ>ÓYv>ØNC>Ü„ö>Ù¼>ÔÃ{>Ù¯6>ç Â>î7œ>éG/>àD¨>ÒßI>¿P6>²3š>¶žÚ>ÈZš>Û¤>èAÙ>ío©>ëÜÄ>ãCu>Ùs>Ò0ÿ>ÊÎò>Áýè>½ -¸>¹ßz>³#”>©½c>£b>¤ºz>©Õñ>¬+˜>¦£7>™>ˆ$>naÀ>M >0ÔÀ> ©>Îß=ïoZ=ÜŸ=Ѫ:=ÐYù=ÜÀ:=ù±K>ËÈ>0+Å>Kæc>aLÃ>o•“>{‰'>„sq>Œ÷ø>›>®û;>½~¿>¼ÇÕ>µ >µK%>¿¬>Æ1H>óò>Â>ͪµ>ÜÃ>ÙÝé>Ë$'>Ä î>Ë"‚>Óéø>ÎV_>¶ó8>™û­>ƒË>i`{>N¥´>2n;>`w>ª¢=î’Ó=ìþþ>¸Â>à|>0Wt>Oáè>sPf>Îœ>¡½@>³HP>ÅÖâ>Ü*Â>òÏ>ýpÆ>öx>åUÜ>ÝM!>ç>û–?g? ª’? Ï?_¼? ñI? }€? -×:?Ä;?é?äV? |¿?Y>õ­>ôm²?/—?Sr?4U?‡?Î}?žg?À4? ¦‘?T¸?³º?éD?=?=ü?!ˆy?!V«? ˜Á?!lÎ?#Üf?(d?+=ö?)Rç²>Ñæõ>ß¾?+×?aÛ?'?)?!ª¡?³?Ëí?î?:?-—?8C&?:9÷?8Ö—?8Sò?:…¸?>cõ?òÊ*>ãv>ûøý?W?'Aœ?1JÚ?2&V?,òÐ?$pÖ?Rx?iÌ?QÚ?#v~?+Ð?2”j?7º&?8ãD?0å×?!|™?IF?h›?Í$?/H?m_?!? Â^?!èÉ?F9?Ú? Š? ‹³?&?±? ¦w? êL?É„?0?)Å?-?1°Å?:Fx?=…?4©Œ?!¨|?$´?Éñ?Gè?!½—?*½R?+ò†?&F?+*?ó?Ú²? u?Ñ?Dk?¬k?]œ?V?#¼Ð?+ t?,P?* ?,øs?2Bû?2Ó?0Ä?.³ï?+V?*9p?-Ìý?/!,?&íd?²˜?>ù9?? ;—? ’7?2?ã ?Þí?.€?Ž"?qL?z0?¼U?'Ùz?(—r? ¥ ?@²?#4û?'Q×?%RC?&ÿ?.ɪ?3{b?*§Â?¸§? Âá? -=“? ¤'?,?^²?”?`? A?–!?r?hÛ?*ˆ÷?1Ö?0Vv?/uÑ?3b¾?8Hj?6¥Ë?)ÿ?zž? ã?%'F?;Ox?F=Ü?H¼?GÈ4?At£?3»?#0?Ž÷?Ÿ´>úÃâ? û2?-w_?DÒø?Kg‚?BÈm?09?#—†?#£A?$4k?!HÐ? µ‡?!«T?$¿V?. '?9Z?>9c??zŒ?ALæ?<8?-ªÚ?"¤?"h?(yü?+ä?/Ÿ ?5á‡?8:º?3×Ý?/.Ù?1a*?6y?3ɾ?*^—?#3õ?$>?/.i?=ý?Gû¹?NL??R¼«?O¹¢?EeÇ?:‹Ä?/gÕ?!xø?P§?šÜ?>j?%¤·?0Ýe??’p?Gñ´?E!ú?9ÅÐ?09µ?/Ê(?3Ÿ^?5ð~?2»–?*çž?$Â?så?(_?X|?RË?+ý?'C?/üâ?*sU?!‘º?W?? -?Õš>é¥>Ö:I>Ù«>áq>ê—O>ùuÔ?!?&t?ìÉ>úT>öüu?œ ?k¶?[+?/ý?—›?(ö—?C´?Wäú?^G1?[7ý?RA¬?IUŽ?D¸Ü?;ý·?*Hº?«?*±?3ëo?O7û?Yœ–?QõE?J|d?M‹?R2†?W ˜?\5©?Pú ?1'?>ô°›>Ý>í…?¢@?,rI?7À?BfÇ?LS6?PÇg?UüŠ?X”?JTl?0²?$¸W?2PÕ?E€)?R.+?[áÜ?]ñ?O§?B~`?F̳?V"a?atœ?fý»?kêˆ?m‰—?d(A?Q•6?CJ\?Ab±?G G?MÑß?NÙ??‚ ?)Ã~?$‰^?8|»?Si ?aV;?`?\ ë?UZÿ?@sÜ?û.? …j?˜$?&ŸÆ?5»ö?9ó?8ÞZ?6íH?;LZ?Eë?ETä?9x0?5Y -?B°Î?M‚¬?DòQ?1~/?'Ú¤?6ž°?M™l?Pk©?Dö?Bí³?EÊq?<¶å?1Ò?71?I‘?XÉ¿?_jÉ?UË?@—?0èã?.‘&?4&?Ci?Tœ?W?M¡?EŽa?J„N?Up?Z}?Wwn?Rªg?My¹?EÆ$?Bð??Fš?E‰J??X@?k -Ó?oEm?d{?N/¿?5š?%ür?,ÔZ?D›`?V{l?\Œ¾?^.©?W•Y?ML€?Mv?Q.á?Kö?;Kû?12j?4)Ä?: Á?;ÐZ?;>á?7;˜?2¸T?8Ðk?DüK?K§?Krk?G4á?=ƒ ?4‘?5þg?B¥?SÓg?gº½?wY?} Š?}Þ2?€ˆ?z¸à?gNœ?Q*ö?FO?]o?O¥á?Gúƒ?Pz_?X1 ?R©„?F7P?A{`?MÆÔ?a‰!?lö?nî?o÷ù?q ë?ióì?Yû?OHg?Sߎ?d}?sàª?{1É?x²-?jfi?^ö)?g§?u<ä?x)%?vη?u>È?nÀJ?bez?Wâi?RJi?K»ë?G"Ÿ?NÙ?]Áu?i8Æ?o¹é?q´?mõ™?dÔ[?[Ü×?YÅ?\ž!?_0?a·¬?fD?j#Ñ?h¹?_ë(?^“Ð?eÊq?k{?kPÏ?j|Ê?piš?|É®?„¢?…^Å?‚zô?|ÈÝ?vÓ¡?uú@?u~U?rïc?s)?qä?o¸(?và?€ýY?ƒä?ƒ¼W?[n?~‹>?|U ?uÜ5?n„?sKL?øÔ? Ç?yð?sœ_?qÑ?mçè?j¼í?kåw?r”?{(W?€ƒy?.ï?xhl?m7w?^6?Vù?Z”û?h¿?tH?z B?{Ë ?uç¾?h/?]Ó?a§Õ?tóœ?„],?†tm?€Ê?qç¥?iG8?gê?`…?MBn?>§??ÜS?L~?^žû?mNx?r@?uý5?}âÑ?‚*‡?€€Ï?u‚?iD?cš?cñh?lŠš?waG?|‡G?|X³?zpQ?xôÐ?w2?tõ#?sºS?w®\?~Q6?‚º?ƒî?‚Jf?wé?k…h?hÇ?isÊ?gBà?dÈ?g€‹?jÄã?eÂÉ?[G?Výß?_âÐ?p£«?zDN?v!t?m|?l,h?u¢Þ?~o¿?€ˆZ?€õâ?Á…?†Ñ,?„Ye?„‚ -?„Æ—?æ?0€?|I?sËZ?oFÏ?pZ§?qÎÀ?vÿ?}›W?ƒ -_?‰ ?Œº_?ŠÒC?ƒõè?x†³?rÞ?yÌâ?‚Ø?….?D?y^?whÿ?xf?xÞ?y`?z¦‰?|Ñ?€IÑ?ƒ‹^?†T_?ˆ4?ˆãÎ?‰v¨?‰²è?ˆ¬`?…f?{Y?m€p?qæ!?€ˆ©?„Ý?ƒ{\?F6?€Êä?~~>?}µ?€´s?‚:=?ÏP?Ã?~ø>?u&Ñ?rJÆ?x¢?{À ?~â&?ƒí?ƒŸé?{ºg?mó?o€ñ?}UA?‚¯é?€}5?oÀ?Y`m?SòÞ?^vu?ZŽz?;}?t&?ìì?-Îß?I£ê?W®é?cbO?n¢Ð?tËO?p¬?`LJ?U%D?YåW?bß ?f]6?håC?p]ÿ?}î'?„éL?‚†Ö?užÝ?km}?dì ?`P?b ?h‹?iä±?d3=?^Š?gÅ}?|9h?†cý?‹W›?Œýë?‹uá?…ŸŸ?}³‹?|‘Q?èe?~%a? Ù?†Ñ'?‰*¹?„©?v?cmb?`Ø?nª$?|¡'?ƒdÄ?†2=?T1?kÕX?W{Œ?NÂ?Pä©?V˜ˆ?T}\?[j?rfù?Öw?…Ÿr?ˆ$ù?ˆ‡?…Ÿn?xs´?e](?h)n?q?iéà?]˜?b„Ô?zgV?…vk?†Ÿ?…^÷?‚&×?€™Ø?„2?‡U?‡{?‡r)?†?„äx?…ôT?„Îï?y?l÷m?zqì?†Ø?‡„¡?†ÞW?‡´?„×a?ª?{f¦?zü´?xͽ?w{m?|ç?ƒD?‡ÈC?‰Ôo?‡¹Ç?ƒ®%?~ v?vk?h£#?Raù?D ¾?HpA?W -û?joÊ?{#`?}& ?um?q1?rœj?q–?sÙã?{Öœ?}áh?wý¸?kºW?akB?`9?eTà?g«ß?^âÓ?Vm?`ýå?vä}?~jÈ?sAö?_ø?O¡›?LRP?Uñ0?ZÈ^?O¹Ë?J¶1?Y¹¿?f{Ú?gvt?kù¹?t?uð»?o¦m?kºŒ?s,?y9ø?~R1?„\î?…ˆ ?{(¾?iLã?fË?d40?V:é?GÙ¦?Mß»?i®?%Z?ˆt7?‰P?”Ž?q™÷?l™Ü?m^Ž?r°5?€f­?†¯?ˆ{È?‡ÓÁ?‡Ìr?ˆsr?Š ^?Œ?‚Ìx?p¸8?X»?GoÇ??tV?G#Å?X‰Ù?W{>?K+0?V%‘?eÎa?b'v?Xͼ?[m…?rho?‚T{?€Fâ?uÐ4?o•?géÖ?jà?€í?‰Rº?‰ø˜?‰f¦?Še?ˆwZ?„‘ñ?ƒzÞ?æ‘?s%1?cÈÊ?kÑ?xÆ?wR?vÃ?6n?…fâ?ƒ‰ ?ÑÕ?„æ±?ˆXB?ˆ‹T?†þñ?„ëÏ?õy?whW?s,?|à ?wò?¶b?€‹«?z#*?s€_?q¿?dÄ”?Qš¤?[¸?u´«?~·‡?|« ?1¥?~q}?xi.?wÒJ?sõ?n±?x&á?‚ÒÖ?ƒ/™?}¾,?yÃ?w¡?s Z?z¥k?ƒÊú?…/-?‡Mr?‹Û¨?Œí+?Œ‰¦?Œ´P?‰à"?ƒ!¢?{]7?x†?xa4?|ÿ ?~ƒ?w=˜?iL?g)?x.º?…5?‰Ûk?‰kh?‡@Ú?„€û?Â^?{C}?}8?nM?…œ?†;?…¶¦?ƒ‡¬?€>§?{”ñ?wA¨?vKú?v'j?lVå?f»*?r¡Ø?|{Ê?~б?zÁë?jÛü?\öÓ?_m{?l¸]?o°Û?i6Ü?p˜?}Â(?~?Ë?{)k?#a?ƒºÑ?’?{[?z8¨?|Ÿk?v„’?s÷?„?†C(?€4V?s‚Œ?x!j?x'|?o7”?kdß?s´?ûj?‰{"?‹£l?Šv.?‰h?†Üö?~›?mG”?oH'?‚D?‰l«?‰Ö¢?ˆHµ?ƒO.?v]&?uú/?„Sã?Š\q?‰í ?„¯s?yÿÝ?wøh?™õ?ƒÙÛ?„ÂE?†;?…vo?ƒË?~?x)Œ?rZ¡?c8m?b@%?p¡¯?tJ?rû)?z_Y?‚û ?†h?ƒ'2?~áh?€H†?ÔÌ?‚fÑ?€áü?€#£?‚},?o ?€q±?„†ï?ƒJg?y' ?xú?€p>?€IÜ?y¨\?z9?z8Î?wº˜?u%Á?uhi?}¢–?ƒ.H?…fß?‡Az?ˆ+K?†½Ï?…!|?… 1?‚¤¯?xÚ?ncR?náí?|?„r”?„æÍ?€u~?v=?xÍM?‚?„Â?†üµ?ˆ5?„ßÞ?B?|'^?~ÝÆ?ƒmN?‡¨¶?‰-¥?ˆï?…× -?‚Àâ?‚ìE?…T+?…¼Q?…f•?„â?ƒ­?í–?~?~„õ?~©?~¥r?~87?€îº? …?}?€îl?ÞÌ?Žn?‚Õy?ƒø¢?ƒå$?‚r‹?ƒax?‚è?xå8?g7¼?`É€?gÃÈ?rþ=?w²Ð?uÊ?w¢”?2y?€$>?w Û?s¸?n™Â?n–?|<¬?†y§?‰X’?‰(?ˆ“?ˆ¼D?‰§×?‡wÑ?|Q?m?vf?€“š?]?‚ž&?ƒ¿t?~·»?sÁA?x¤"?[?…"0?ˆ™½?‰†;?‡°+?„wã?‚,Ê?)Ú?z/'?{™H?yÜÞ?vW?|é?³~?ƒ?…Ÿt?†7}?ƒø¸?‚—Ô?ƒ»Æ?‚ ‚?|†?vÈÄ?kŒ -?[ή?fa,?s³Å?pC8?t€Ú?E?|ÜF?u<’?u»õ?~sÀ?„¬V?ˆ%?ˆ»?…ð8?† -?…Ü}?„mH?‚Ô?z²?o ?pwo?uéó?t Ô?tR“?|M8?·š?ƒ?ƒiX?ƒa¬?„°X?„ ?Æï?} ?v¼?{CŒ?­è?yUh?qð?iQÐ?dfk?fšs?m4Ô?z™]?tV?‚ÓÉ?‚»{?ƒ5?…«¾?‡]ª?ˆØ?ˆW½?‡“§?…5Ã?„{…?…§t?„»ç?‚?„µ?‡*i?ˆK?‡¸Ù?†Î(?…­¡?„×?ƒÀ?…o?‡è?…ªÕ?ú×?‚xY?„àß?þ?uÅâ?s¶?éx?…VJ?†kØ?„#)?€R+?za?~Ò?…æa?‰ Ö?ˆ—?†§=?…]H?„vý?„"M?„0k?…:??‡`2?†Ys?Uu?vmU?s7ß?v?vÒÆ?|œÂ?‚qó?„Uû?ƒ>A?¶Û?‚pÍ?„N°?…¢†?‚åÌ?F°?…2à?ˆ†?ˆ…?„«~?€5œ?Õ>?‚„ï?„__?…Ö)?‡³?‡‡?…B¥?‚u?ƒ.ž?†ù9?ˆ¬?‰O?ˆÙ&?ˆ`õ?ˆ¥?ˆò\?‰\n?Š?‰Á°?ˆøz?ˆ˜a?‡íC?‡ë#?ˆ!¯?‡ì”?‰=p?ŠAL?‰ü?‰”?ˆ¦?†Úa?…¬ß?†?†û1?‚õB?y:?yAã?}Ÿ?vÁ±?w½?˜/?‚£?‚f«?„Õ˜?†L?…)«?†BÚ?ˆWÜ?‰7N?ˆ£Y?‡Çb?ˆ*´?ˆAs?‡ˆ-?†ž¡?…‡=?…Z?„Zô?ƒ²(?…‡?„·?uL‘?W7?Yñ˜?oÃ;?v'³?f—]?]Ôè?pÕÐ?êx?ƒ¡+?…Éÿ?†Ë?„cí?‚ôì?„R?…,´?„¶†?…xa?ƒÄ?~_A?}f8?‘ý?„›œ?…ËT?…žç?…c?…¶Ó?†ë+?†;>?‚„y?|–?}Ÿ?‚²¦?ƒ'v?‘_?ƒxž?…·?…Ô¹?„v“?‚®?ƒ(`?„ìg?…8j?‚¾|?}Ž?~Ví?%U?~à*?€¼?ÿï?€L£?€N?‚Œ?„´y?…ŸI?…‹l?„.÷?‚ØÊ?ƒ\»?„º?…Ø/?†_H?…ß:?‚´(?| "?zI?€=?ƒb?ƒÛ­?€ -'?vü?vnð?{Ý9?€Ë?€Ñ?}|¬?~b?‚€v?ƒ%?€³?}j?€X“?ÄŠ??|o?~rÛ?|3¦?rÅp?rø?}]Ó?¢K?z ?y´q?yç;?yêE?zÍÇ?t\¢?q+E?srq?uƒE?y©–?y¦n?{ Ý?a¨?€þ?‚Œ?‚?ùæ?‚£?‚ß:?‚[O?€¾r?~Ug?Ó?€ìr?iÏ?‚H[?‚É?‚µ?€ñà?}x?z§Þ?yë?~øï?‚É?‚z2?rò?~áÑ?vöï?sˆÎ?}d?‚ -­?‚t†?‚ ?‚ã!?‚ûÅ?‚ V?}h†?upÏ?wÀà?{??w`?s{è?sî?wâm?z¨÷?x­v?x3i?z¹?{Š^?}T_?}&R?}´_?~f’?uê›?cé»?f H?wtq?{›þ?xàõ?{¤?|Le?yÜ¡?y6•?yFÅ?xÇô?|Ù½?}Ž¸?v*¹?l…?oíß?x˜Ü?xâl?u{`?r²õ?u*x?y%Ó?|%?uÀ?^Œã?Rd_?eQ¹?kÁ¡?_{±?i’…?x¸Ÿ?x×Â?o…&?i…-?n3æ?tP?vVÛ?qÆl?oÒ?q³i?rü?jšB?X¶´?Wº?cë7?lCn?n³¥?eæ?`:ð?kD½?oé¡?oZŠ?nò^?pMú?sìç?ti?x‘.?|Î?{˜"?x8?tS‘?sÒy?n1?cI¦?lD‹?w¨c?{‡?}3ˆ?y ¯?q?s²E?z¬?{¸?|mô?}P?};|?}e?z‚?oЦ?heï?kwo?qi?l‘?f§-?mÓã?tïC?v£ú?vèŠ?u4c?mÚ7?`w±?^+¾?hZ|?tà?vÝ?l$¥?a3‰?aú?j_ñ?iø‘?_Í\?Vu?X•?gVž?pÐY?i?\Þ!?[¹·?^–?` +?c9{?iIë?lfG?nÐv?lnr?mj‘?s©a?q8L?já -?mªZ?t4x?u$?n´j?bäb?XßQ?V¹%?a)¨?l P?q#L?ruß?sûÁ?rKM?l z?j1 ?m"¾?n”P?iÌ¥?c!?_Þ“?XíM?Vòm?d4º?mï/?p|?pçc?k•?h=‡?k -Œ?eÑS?\žÔ?[Îò?Y*â?\¢æ?b ?e$¤?lè¹?r²_?qIƒ?o§ ?nkÓ?n ‹?pd°?j/,?]î€?]½®?dc^?k«é?o.?j:„?fŽ\?hka?jc…?qA ?tíL?t¥^?pÓ‚?j›?j-y?i’?eLe?eƒL?cE3?cÌC?i#Š?mÄq?n˜‘?iœb?gµ”?m¹f?sCY?sö??sÜ?p¯á?n%}?lÿ¢?nÌ?m–”?n8‘?r5´?rÿ?p}>?kÞ—?bg®?bst?n±X?r2b?gå‰?\¨¦?gEð?rƒë?rêe?k¨d?aßK?dâ"?gw¡?dÒG?iN?hñô?eé3?fœŒ?c'©?\Ï]?e@§?p•@?r¬R?s%@?q9I?gÁy?]X?^Åt?i *?pd·?jæš?_c ?cl8?oE6?qõÌ?rBÇ?rNÔ?no}?a¬>?]„Ä?i1×?lPÎ?_û=?Uíï?b½É?nG?ieR?[Pi?^ÿ§?k¨š?o%6?kk©?f8Õ?b€P?e+?h˜?g—i?l¦y?n%–?i?_×¹?_b?hdm?mÅ?n¦‹?kÀ½?bƒ?W$Ö?Gÿ"?9ÿº?: %?I•¿?X´?cÇo?j‡?lâ9?mÄs?mã¸?m:»?m¥â?mY¬?jÖ†?bË`?Y-²?ZO?`å?iÚ?l-ç?kÄ?iø!?ddÎ?eçÅ?k4Å?jæ~?fÛ6?fÂ?jA§?kSi?lJ?lûû?k,?g®§?b­F?\|÷?`þä?gj?h¥?f)C?a¬I?]:?[±£?UªŠ?Aœí?ƒ­>øY??Æ€?J´|?\&Ù?ZÍ^?[éŒ?^R(?ZâÝ?Y¤V?bPØ?i5Â?göU?dŸ?d"??e™?c!1?c8?gjÓ?gqš?\ÐÓ?P>$?XT??bý¤?c1,?e˜É?i’À?h°?a­¼?\Ùg?\ùÜ?[Êa?^—?dÚ?d©Ã?dÜ:?gÞ¢?h"?h†y?i¨E?iË?gË?e½$?e¾?fÖ?f×?d½?]X¹?Xù?_îú?e˜Ô?e2ÿ?dçä?bÒ??ZÍ(?[x]?bä?emJ?g@Ï?g¾?g4?fÄï?fª«?f }?fÙí?e ©?`$­?XíŽ?]!B?bˆ»?c)O?dÀ?eN|?dá¯?eC˜?c9?Xë?T T?]Qk?cóâ?f`?g’ƒ?h#?h*j?hp4?g®˜?fÀÜ?eq:?a] ?_’ñ?aê?dê?dU´?_ŒW?]øâ?aKg?bÚ™?bâO?bZÿ?_ס?]‘›?ZY,?TÝ“?X>l?^wü?^†¦?^ˆY?_rW?_-æ?a#Þ?c™Ç?c+?a?`»ï?aå8?_Åm?\µ`?]WD?]ÿ­?]6?_0Ç?_à?[@±?W1½?[ ñ?^òš?`ç?_V?_W&?b5?c¼Ï?cþL?d-·?a¹£?[\Õ?Yˆ›?\þ3?[ù½?\ü?^ðÓ?aFr?bšG?cêÜ?b³-?^¨o?[áˆ?\ ?^ H?`9ï?` &?`?]‹ã?Zm?[9T?]kô?^ Î?_/?^ì°?]¨?]8É?]Å?]Œ³?\àÏ?^T?]S?]à?`~?_¼é?\Ÿ?]e??`ÙÌ?a7(?^\d?Xù3?Zx?^£‚?_e?_?^ç -?]ï?ZN—?Tï8?Q‡‡?Tï5?[,?^È?^Ƙ?^d?[¹?ZN?Sik?P_n?T ?Uß?Q©¸?T\?[£‹?^[÷?^$-?]?\Á?Zsf?Z'(?YÊé?ZØá?]5?ZÉw?UqŒ?UÈö?YˆH?X¤ ?Z1ý?^.ß?_kí?^ð?^[ü?]„n?\cñ?[©_?\!?]`Ë?]µ°?[Î?Y‰ ?[é›?[`?W|m?U›Ñ?SG?U+v?XaÅ?Yù·?YÙè?Ylº?Tºù?S¾X?W5•?Wõ5?V¯q?SöF?T”e?Xtè?Xçø?YÄê?Z¥§?Xê?Ráò?PQH?SUÞ?VÈ?T†–?Rï?S>ø?SªV?U#?VÔó?W9?V­?T6+?UÔÜ?WG/?Xä?VÃÈ?Tž?U¶D?Uk?Oó¥?Gñâ?D #?Kòà?T•?W!w?V~ ?U–Ú?T>‰?Uy?VrW?UZ?UÇô?UˆÆ?P?K²[?OL?NóT?KeF?M~'?Qðd?Sšš?Qºà?Pô2?MÆŸ?Ch=?FBŠ?PõÊ?S%?MQ?H™?M`Ë?RZè?R͇?T—’?UûŠ?S> ?Pî6?NWK?KWZ?TW@?Z>7?Wëb?U?V¾?X¯#?X;Ì?S(t?P>9?R~q?TdK?T‹«?QuÀ?QÖ9?S?Q¨?KœÆ?JR?P_–?UÌŒ?V>£?V”?Tëh?T€´?VW?W§ó?RÑË?KQö?Lù?P¾F?PŽµ?M ?O¢@?Q}Z?QŸ ?Rµ -?T|I?T›i?T$ô?Tÿê?SòG?Pa?O-´?L©|?K0`?N€B?P¬Õ?P¼:?OЄ?Mâ`?CÓ…?Kvà?JUÀ?F¨D?Go°?JŠì?I¶^?FT?Aÿ˜?Böç?Hu”?H9 ?G¢ƒ?LÞÁ?O J?L«Â?H¡?Hó‡?I4b?J-¡?L²q?Hl2?Ftã?KÊ}?JŒo?DŸ{?E:Ž?G^N?H!Ý?Jk~?G s?=Îm?>_?Fi@?Hw¥?JÉ?JÁ÷?I’ô?G±¡?GD?GP³?G*Ô?FjŸ?Eéf?AgU??JV?BkŒ?@ -%?6þF?6¾?8ö?@Ûï?Fùé?Eýp?B…?A?B°&?D¢?AãN?;XÜ?<F?<—”?@¡Ä?Dû7?DL_?B~Y?AR?A/?C{ç?@‹¢?;åû??”?@Ê?@d?@¸ ?BzA?F$?Eמ?DN©?EÕ?CÎC?@\?B !?CÙÑ?B4ë??ȧ?? ?:Žô?9·(?@×Ý?CFà?=Öx?;l;?@FL?Cž?B;:?A­ø?Dë?CLI?BQ?Dù?Fy›?DJ??Š?=•F?8Á?6Šë?6¶R?;$§?=îT?<²q?@Ò·?Aí©?>»?:R¿??©g?AŒ?=u?;6?3ß‚?6uš?;-*?3i~?2’š?9ý/?²2?=ëÃ?=g?<‰ê?;Ü”?;y?:E?=Ò??Ðû??ºO?=ƒ?9Ks?5\??1V?9ÉÂ?=W`?>:?>·?=‚Œ?:ºŠ?:JÕ?9ôÌ?2Îg?6¸ ?:<_?9Ö‘?=A¹?>qß?:ñ¹?4ú?5+ô?9"}?<{ý?:f¸?6½ú?75ä?:ä~?<ø?;ñs?:1ë?:¦-?<8b?;h`?9ŠÃ?;A?;fö?9Ú·?7ƒO?6\z?9i„?7AS?6šµ?8©ó?8è.?9Ù?7hf?7G½?:9’?7ÒÜ?6Ïç?:å?: 2?9óE?6û]?2ÁC?3]Ú?6Ç?9Dƒ?8Õ_?8js?7‹´?8\©?9’Ç?9#¼?6’§?6e?6Â…?6±V?7›+?5w?7!×?7ëK?2ÿ£?-&i?,!î?/±c?6¬?8i?8š›?8 ã?8 G?8iÉ?7ýô?7Ñü?7„Ÿ?6œ½?5åE?7vþ?8;c?7Dí?6æõ?7Y?6ô ?4ì²?/Ü?.G¤?+eÔ?(I?*µK?*Ê?$ -a?-m?2ßC?2ca?4w¯?5È?6?.ð?1¥?0œ?.2?*'?)<ä?*K ?,E0?0n ?17u?0fú?1/r?1€s?0ÿÍ?0Ak?,¼E?,+N?(¸?!áI?%C ?-\?0·?1¥Ü?1ä›?0«ä?0 K?1š1?1­t?1Ç3?2¾?0Æè?*Îw?&‚?&e?+ñ:?/Ýö?+rÙ?,Ï ?0¿£?1 -|?-ߘ?)çì?/C ?2 Ê?1ìz?.Q?(÷.?*n+?.YØ?0ì?1^Ž?-á?,’M?-G?/YÝ?1šÂ?1±ý?1ÈŒ?2Mù?2B¼?2ê\?2F›?0Øh?1>)?-'í?& ^?)d’?*4_?-y&?/áU?/åu?/bÝ?/s?0 7?.¡?+a¬?-•”?-¤?,îÕ?.û,?/úP?/A?.:h?-ýY?/â?.Œï?-q?-G¢?,gÎ?+2k?*ò4?*Jû?'iø?)Kù?+ñ?+êÜ?,g°?+^?*C?%·ý?$+½?)<í?(ô?&þ™?*`?,w)?*%:?$€å?%aß?$Wï?#lÖ?%$ù? ©ü?";v?( Á?'¿?'Ï)?&ÍH?#Õ#?#Hé?³L?#X?$e×?u³?$wì?$Õú? ù?‚ˆ?Àâ?'`$?(ð\?)GI?(©x?&{Ÿ?$ˆ?"êw?"ºŠ?#"ê?&p'?'žö?'ž?%¯þ?'`?(ôæ?)ïœ?(.¢?&¦Ò?'M??'ÄŽ?'á?&»?(h•?)Ùí?&Ö2?"èÙ?"§Š?t,?FD?$)‡?&&ï?% $?#L^?&âÎ?%v´?#êP?'iì?&–Ø?&;‹?%2 ?"Æ°? ÅÃ?¥??ûK?!KK?&?$Òm?" )?$d¾?%ôw?$ˆÅ?!üz?/µ?c¸?ú¬?³ë?"ζ?"ê?#2?$Œ$?$d?"û?#%?$FK?#„¶? W?à?vÝ?³ì?°?ã?žÌ?×:?ã?VO?+? ?ï!?ág?K$?éÑ?|Ž?Éñ?Id?©o?i´?r”?é?ÀN?FÜ?¤Ú?–?Ð?ê¼?ê€?¡?oÊ?s?+ý?[f?¡†?L•?Íz?t[? =?Ä0?Ü‚?v?ÚU?Þ$?rD?“?‡?íU? —h?#'?Ø^?-?ñ?Ü?ž*?,?ê0? ‹?HÆ?á%?ÁØ?~?oŸ?Öy?mb?å?¾?<¼??s?pã?åÛ?{•?h×?²H?¬?¢¯?P?ú?YX? Ô?â?¼ö?»x?ñß?S ?W7?q?wj?í?¤ƒ?’:?N,?}ï?úÌ?äQ?;æ?ÍM?®¹?J2?·œ??G¦?jX? No?±V?Ü?š5?}:?uý? Œc?ñ7? ?å?Ïê? ˜?@?é›?œ?Ã?–Â?éÛ? η?B?«‡?»°?À.?Šg?Â?u ?Üû?eX?Î?—Û?C>ÿP¢>ºN[>Ã6ˆ>÷Ñ´?öx?¨Ö?’?sÄ?_F? -œr?¤? ô?éª?ý0?È0?9V? ·N? >e? ‹? -Gó?81>ðŒ>΢ˆ>™Gª>m¤ê>¦ìú>ÚjE>øü?>ë? ïr? -ƒ6?—? ?›ö?u?)¤??»g?ij?o ?1E? û?%u?7Q? ? - ?Ý?^ü?rP? þ+? J¼?ÓÝ?0Î?aØ? :Ô? ‡? HÍ? «‹? t,?n? YC? .Þ? ñ? ke? µÈ? W¦??NŽ?V×? †â? •?)?m?ùª? ݶ? }ô? QÝ?‰ ?;V? G¤?#™?•0>õÌÓ>ÍÞÏ>ÈÉ>Œ0>ʱ>ñµ+?n³?1?ú˜?s+?m×??F÷? ö+? -dt?y?>þ_±? -Áã? S? -žo? F.? 0•? -Ê$? C‡? í? @? LÊ?ÓûåX?>Ð? ²Ò?¬1? Ÿ:? “?SÕ? -‚? gs? ®Š?ý®?°? ô¢?ƒ? {×? ÏÂ? rB? â ? —Â?Ôí?…j?ì? -3? ¤º? DÖ? |m?ãñ>ô´>ü"? w±? žá? Ü/? «? ã ? /?Çq?¶Ý?š ? h„? s? ä*? S•?`‘??÷Ü? -W8? - Ñ?Aç? - -? ?Ø? 0? -ç´? -Ô ? CÌ?sÊ>ýc¿?<5?w“?eä? -éc? -#g?»?ÍÜ?¯°? )Ñ?A4? j·? -’%? æw? ¾?Ï ? ×–? Fr? D™? - ¹? Ý? -HQ?ø?®¯?O?? E?x -?¤ ?&?Þo?Ò?B?Z"?þá?¡Š? ‰? 8?Ù-?¨†?p½?Ö?Xú?L»? ,X? Ö? Gs?Ày?U½????G?VÏ?v­?F™?Ï?l??`?Nñ?gU?Ü?™:?’L?ý³?÷?Ù³?^d?›J?9?Uñ>ûçs>ùª>úO>úë?j?ÞC?G?zˆ?[=??”«?9ý1‹>ÿšÒ?ìä?_??wž?q•?ý¦?¥?fX>ýaÿ?$ò?p?²’>ñv(>ù‰\?_?NÐ?E?Mm?¯?“?y?õÏ?£Ã>ü·€?ˆõ?>>>ü[>ÿy¼?ö@?_?b?M?¨Ç?/š?h?XE?Á®>øÂ>ú?­>ù=7>ò¹`>üÙ?ðË?‹>þtT>ÿHö?N#>ÿú8>û%?>ü‘Æ>óÖB>ð-k>î4†>ñ*>ø°>øùì>ù>ù0>ýïQ>ú?c>õO·>öÈ%>ö-5>ú)@>ôˆ">ó6a>öÆß>ôöz>öPc>ó/€>èÏØ>ëF >ô/2>ñ›¤>ð]j>þ‚:>÷=Û>ìܨ>ïS>èa<>ïz¬>øb>ôp6>ð­®>óöx>ó$_>õ‚>ï0=>ñÇ»>øº>ô‡œ>ëå¦>ì3‚>ðK>õšÏ>ïÜ>ø9÷>ú×ê>õÜ>ö¹X>ý^5>úú>ó¼>öÄw>ûáò>ú|1>ñ»>ï]>ôYŽ>÷ñÉ>ðKh>ówl>ù¶ >û=>ú­>óñ>>÷1>öc4>÷é>ø'Þ>ñbß>õm\>÷Åg>ô‰®>÷?÷>ö¨>û¶Q>ù|–>òMÌ>ùŽF>÷«µ>ú@Y>øJG>ï¹}>öFI>òÕë>ô‘>øOo>ð}r>ìj >î5‡>ï–>ø>ø6>óÐ>ó•¤>î+>õ§ý>øêƒ>ò£ ->î¦>ðX“>ñ' >ñ'>ðÜ`>î W>ïíè>òAÚ>ò9Ä>ðë„>ï,‰>ã¬P>éÓ>ê >â„>ÚÎ>èäu>í¼>ì¨>îß>>ïš‚>ôp=>ñeÙ>çè•>ë:>ë©>ãOH>ëg=>í¡Ñ>èºl>äï>ê…>í4ý>è>›>èWc>îðŸ>ðç(>ë(>çN>ð.;>î¤Ú>ëcü>îÿã>î }>î¢>í¶C>îæ°>ï ¸>脵>ë¿Œ>ôc>ð’É>è…€>íäÚ>ó¨½>ì…>êâÇ>ìÖ>ïöT>êhÈ>íSÛ>ñH8>ï‘g>é,>ï-6>öK¾>î¤S>èÕ$>ëy ->ò`æ>ë¸)>æ ã>ðGn>òfá>êÝ>Ú ”>ß{¥>ë²>é?Å>ê™–>ì+ä>ïŸ>í[,>êÓ?>íÅÜ>îš.>ä5>äÙ#>è7>ì`>í|Ø>ë_7>íæÎ>ì¤ø>ꆦ>íoU>ñ`î>ïë=>ëÞ>æ_>ç„Ú>éõK>æðð>äFr>ê“Y>ñY­>ðë>ì‘{>ëŠÒ>è&Â>è-u>ä™é>ã¸>ï">ïCó>åÂ>ã‘>ãŒ>êº;>ì3É>è¿>ã$Å>çÕ›>êz >æôâ>æ ˜>à·²>ä‘È>çÀ:>çaC>ê9»>ë%(>ç°Ü>äî>Üýç>çê>éÒ~>êA®>ê[->æm>á>åq`>æ3Á>èv >êï.>é¼w>åÁ¼>ãÜ>ã­>ë ž>ë¿>ê®a>æuÑ>æÍZ>èVÆ>æµÚ>é¯K>ã¤>âë">èF>æ[>â ú>Ûì™>ä\S>ãU >á;<>Þ¡‹>å×z>ê½+>èö~>çÏ>ækC>æ#z>ßÃø>á«®>æ(Á>àa>â„‚>êoí>ëAú>ç'`>â'Ô>Ü_l>Þ©»>Ùúì>âf>çv¦>ç)D>å }>ã ˜>ãfÂ>æà>æ¿á>å‘w>å¡8>ç˜o>ç›=>æQw>èæ¾>åe>âg>å+¥>å×Ä>Þb>ásé>ç{š>åí>åÚð>æ2à>æº>äO>ã>äýÆ>äØ9>æf>âþ>Þ(>ät>åð{>æ5Ë>ãí>áÃO>æ°Ž>çú‡>âkâ>ãF>>åáý>à¤>Ú>ß89>æVÜ>ä±/>ܘ>ß3ý>âÔË>á¾>>å7`>ã>Ü·‹>Þš²>äÀŠ>æÇd>âèÝ>߇r>â^>áÜb>Ú_Ž>àTB>å»>äí%>ãMÚ>à¹l>á Í>âb>Þý[>ß …>á¼1>à¥(>âWˆ>âk›>áü+>á)‡>áÊY>áõÅ>â%‹>à_¤>ßk“>ác¹>á1=>᧌>ßô>àeÙ>â§É>Þ<Î>Þwë>߬>ß->Ýä¹>àŽþ>áá†>Þ¼©>ßÙ>âÏ>âJ>à™Î>ß">àcY>Þ½Ã>Ýáe>Ýp@>Û¬k>Ý!ì>Ùª>ÝcB>ÞöS>ßÌq>Üd>Ò_>ÑöN>ÜÿÙ>ÛrI>׫>ܼ>Ý÷>ÜŽj>ÝÓÖ>ÜzÈ>ßi$>à<’>ÞWd>Ûû#>ÛC}>Û>Øô]>Ü'>Ýì‹>ÝÓ4>Þí >߃†>ßø >Þz7>ÙQR>ØcÄ>ÞS>Üë›>ØOÚ>Û(õ>Þa>ÛùA>ÚÒW>Úfß>Ügh>ÜÀ²>Ýæ>ÜÑI>Úøc>ܯ>Û•±>Ö(Î>Ô+>Ú¡‘>ÛhÖ>ÙU>ÕbX>ÙÓ>Üþ>ÙN>ÕA[>×p9>Ùƾ>Ùæq>Ù˜Ý>Ü[»>ÚïR>ÙuÈ>Óîº>ÓbT>׶>Úã>Öª^>ÔT >Ø·»>Ú1ô>Øàö>×<>Ø‚>×æI>Ú$Ý>ØìT>ј,>ÑÛÉ>Øã¯>ÚV>Ø3>Ø©¨>Ú&{>ØÑÏ>ל>×ÿ»>Øî>Øl¾>Ö)Ë>׳>Ù->Ù¶>Ùv¾>Ù_Þ>×·ð>×> ->Öõf>Õm>×c>ØxÀ>×*ä>××*>Øû>ØoÃ>×òe>×ÀV>Õ ë>Î >ÕÜw>Ø|ç>ÖïH>Ôý€>Ô=2>ÔuÆ>Õ‡j>Õ?‰>ÖÏ>Óó;>Öaâ>Ö3F>ÖBM>Õù2>Ó™%>Ë f>ʧ­>Î…\>Ôì>ÕËÒ>ÒÌ>Αr>Í’>Ñà{>Ò¬ >Õ >Òúr>Ól‡>Ô¦¡>Ôû>Ó®ú>ÒV“>Ô)þ>Íso>ÌÉØ>ÔYþ>϶”>ÍÓ>Ô0>Ôï>ÓÉn>ÒpT>ÑÝn>Ïö=>È>Ï—w>ÒÇ÷>Òmm>Ð>щQ>ÓÚ >ÓÌø>ÒJ>Òjê>ÒV¿>Ë‹Ü>Êøê>Ï5Š>ÒÙ >Ò+Q>Ïè\>Ñ <>Ðô->Ñ¡œ>Ò•->ÐxØ>ÏK÷>Ñ°]>ÌéC>Æi£>ÇŸß>Ë„ª>Ðï>Ñ—|>ÌÃ>Ë–%>Ñ4è>ÑÉ>ÐÀà>Ѹ>Ðèù>ζ>φ>ЧÓ>ÏôÜ>Ìèb>Ìì†>ÏFP>ÍÞÄ>ÎâA>Ï1°>Íä>Íï×>ÏXõ>Ìû†>͹ë>Ï)Þ>Ï3—>ÎÖ@>ËûÕ>ƼV>ÉÚ—>Í!%>Ï>ÍÒ>ÍÌT>Ï)Ÿ>ÎŒ1>ͨ‹>Î\m>Íîð>Í é>Î ý>Î_Ä>Íý>Íà ->Í_>Ìïˆ>Ì´«>ˇ>Ê‹Ë>ÅC’>»p£>ÇNî>Íi>ÍQ=>Í6X>ÌØÞ>ÌÏ>Åun>¾i>Çkˆ>Êéq>Én>Ë©>Éf+>Êìý>ÌÐ>Ì„>Æk>ÅÆ!>Ë=>ʯ0>ËÆ™>ËϺ>Ëí/>ˇw>ÊK_>Éx`>ÊÚ8>Ë(ß>Ê•Û>ÈC>¼Ñ>û•>ÉŸp>È»Û>ÉkÝ>È:½>É&o>ȹá>È5³>¿u€>¿¶>Ã>ºóŠ>½Ó—>‹Œ>È°>É>Ü>Ȫj>Çï>Âw>ÇQÕ>Èàç>È-ü>Åõ>ÇAI>Èd,>ÃGö>º`>¾ >ÃÏÜ>ÆÁ‡>ǯ×>ÇÛ>Å—>Ã"%> Ð>»æ>À´Y>ÁLZ>Æ›>Ǫ•>Æý3>Æœà>Ã…Ý>Ãñu>Æ;>Ń]>Æ ¹>Å&u>¿€>»˜>¹§%>ÂÄ~>Æ)>Å6À>ÃŒ>Ä%d>Ão:>Ä >ÅyÍ>¾ÚÞ>¶î÷>Â~ž>Âö¸>½%š>¶ü9>Àæh>¶)à>¸Ë7>Âm9>Á¦ƒ>ÂÃ>ÆX>Ã>9>¾%>»“>Äq>Ä]>Äjœ>ĘI>Ä6P>À‚7>½ -F>ÀQ,>¯ã‹>¶$Œ>¾|‚>Á ó>ÀÜÉ>»°È>µ²U>ºÊ¡>ÀRc>½“º>½]T>»º&>ÀÀ_>Â<•>À­˜>¿h>ÁF>Àú•>¸jˆ>¼5D>¿á >Àœ>¼8g>±*š>µQ€>¸">¸/Ä>¯Ï>¬¤B>¶Ðß>¹Ò>ºvÇ>¹ÄQ>µ‹>¶Æ…>¶AH>ºÜ>´œÓ>©G>¨ò>³Ú¸>µ ->´6>³ï)>¨Ò>®”Ž>²Ó‚>´l}>·f>¶ˆ)>²Çð>®5 >³ºÖ>±U>²­9>´‘j>´|3>¯ZÚ>®Ùõ>¯MQ>®–>¯ó+>¸Jã>³ÆÞ>®iý>¶>µ¶à>®`Ã>±èœ>¶*é>²¡¼>°¿¥>¸2`>·Ô>¯‘´>®¼ý>¶ÈP>·N>´:÷>°­>²ç·>µò—>·øa>°çv>¯`ú>·M‚>¶‹œ>²Ùê>­)œ>¶as>µù_>µ@ñ>±»5>³n>µÑÐ>³èó>´®g>´jG>´G×>ªV>¯Ó¯>¶L8>´IÄ>°Nz>¨¾R>±†>¸À->¶£>¶”ê>«B>°è->¶Üà>¶)¹>´òï>«0°>®+Y>¹¸>¸/h>µ+I>±]=>¯…¶>²úÒ>¶°I>´ƒ|>¯.ƒ>©p>«Ü>³ />·!Ä>®y4>­7V>°å>²>Û>³óç>¶ƒ>°<‚>¯/S>¶zQ>´l_>³xo>³p>®>¯9P>¶û>µÌ>´&2>²ï§>®Ús>¬]D>µ-¦>¬zN>§V >¬5Ü>¯˜`>©­w>³jƒ>¶‚:>´“ ->µƒý>²£ã>¬ >«¿—>´Â6>´gÓ>°ªV>­Øu>®E>ª >©>R>°*>³­›>±ù>°ò>«Í6>« J>«¿ >²¢6>²qÀ>±Æ²>´GT>­y!>¨j>§¦>>°=Æ>¯Ûc>±ˆ¼>³ÿ>°èÒ>­ >«ÿ>©óg>¯ÿP>²LY>±áë>²¡|>®š–>­¿Ø>£ý‚>ªÆ >¯¤Á>©!™>¬Ûl>­Ã>©¼>¦¤>ªkp>¬o¥>­¨>«Så>§š>¬´>®[>«­¼>ªvR>®¾»>®Ã>ª5’>­ío>­‚9>°”–>­æý>¨i­>¥å>¬s¡>¯t ->«Õ(>«œ©>¯e¶>°C>©Üó>¬œÉ>®Ãa>¯ r>°wä>«Í<>ªRq>°^°>­P>©í~>ª“t>ªh0>¯dë>®Ê”>ªÃ>®m=>¯F*>©a ->¨ÙØ>®ŠÊ>¬æŠ>®ª€>¬ï>¨\$>«ÛS>«+>ª\ô>¨¥£>­•q>­ >­ˆØ>«o>©¼>®Ê>¯>>«¨Z>¨Öc>¨¼á>¬:§>«ó©>­>©w¬>­™¤>® Ã>«•s>©W…>ª»b>¬él>«€>ª›Œ>¤‰|>œÈb>¦`ü>­ >©Rµ>¨­³>¥Al>žv0>žHz>¨k >¨Ÿ¢>©XX>¬u>«µ1>¦î;>¥ÒÏ>ª‡û>ªl > +–>£ 0>¨ÏË>ª|M>©>©º>§t>¦‡>¤ø&>©Ð>©¸É>¥l%>¥û>¨×c>ªUK>ªl>¦ÖÂ>§HË>©BŠ>ž†ÿ>¢–È>¥ßf>¨.>§ m>©dW>ª0]>§È¨>§Gx>§œU>©¤>© ‡>§qÙ>¥+>¨žE>¨è,>©o€>§¥>¦Æ±>¦ªë>¨ùŸ>§µ;>£}[>¢Î´>˜>¤¨C>¨;`>©>>§0;>¥ãë>¢š>¢©­>¥êè>¤Ù>Ÿoe>œ:c>¦«î>§o2>§Â‚>¦>¥^>£½|>¦Ì>§U>¥ç÷>Ÿ˜>£| >¦úž>¤š>¤§s>¤b>”.>š^÷>¦ >¦©à> ÓË>ŸµÕ>£9ç>¥ýÈ>¤gØ>¥ÓÀ>¥´¥>£‡>¢=•>¡>ª>¤ï>¦y>¤”2>¡p‡>¢Ú>¢êY>—”->“ìZ>¡ý™>ŸG>ÜÜ>ŸªÙ>¤)Ï>¤Å+>¢ =>¢çh>£r'>¤ð™>¤re>¤êš>£eë>£n>¡«á>£"¢>¤•>¤ -€>¡r>¢p>¢YC>¤)£> õž>X©÷>r?>„ˆÿ>ŽQ>——„>ž k>›Õ„>‘¿–>‡Ñ>‚Že>NŸ>o#i>QXY>2³’>#†È>+Èî>H¿æ>np¤>†N>‹ðØ>‡” ->yú>cþ>Qc>B”²>5¡Ê>/‚õ>9|ó>Tz‰>t¤u>…-W>‡%ü>‚%F>uÚ>l7b>j’è>kqä>héx>fŒ½>k…Þ>uÀ>yö’>yX >{_x>W®>ƒ®u>1>w[j>pà#>wÑ>…C;>‘*‚>—± >“ù>„»s>i=Ó>T’â>M@5>JæÕ>GC¦>B7 ><ºè>7¡>72$>@•>N‘>XY>W©>Qž=>Nˆ]>ITb>8±>L>g ->×~>äU>?Sã>i¿¯>ƒþ>‡Ë¶>‡äö>‰ÕX>>Ã>˜”X>ž/l>ž?>šF>•ó½>– |>šû>ê>ž¡>› Q>˜%ì>–*Œ>‘Íë>ˆyý>x>`ïÈ>Qi@>KƒÛ>MÂÜ>S‹V>Yÿd>c’">q #>}‹Ä>–è>z£E>y5>~?;>¢û>&W>|ð@>vÁ>q#Ö>m…>læ‚>mnª>m8Ò>nßä>vSÉ>€Ñ4>…³y>‰«ä>Ž;Î>’Ü >–&>˜Kº>šŽà>›^À>—ûH>—>†~ì>|-n>qÁ>l{³>n¦Ý>y»>‡³>”ð‰> Mk>¥wõ>¥Ïì>£Õp> ™µ>œçÞ>˜öç>“üÌ>ÝË>‡Ý>€äß>qzÁ>]VÉ>Iø>=3 >7Ty>5lÐ>9/Ë>GFy>]ßú>s‰K>€–&>„G¸>‡0¡>ˆÊK>†…>J >¾>ˆžÏ>™Î0>ª×c>³ð->³T>«‚Î>£Ðû>¡» ->¦D|>«½Í>©Àµ>œÓ3>‰M>kæ >P½C>BDõ><âW>>Dç>F¦Â>U%”>f<“>uËå>€®x>„Âx>‰%å>íÜ>—û½>›ÐÅ>•z>……r>e¨>J ö>B‹Š>L -S>\ú*>m?.>|Èõ>ˆ¶é>–až>¢^ý>¥£>Ÿs—>–œo>‘kn>ø>•²>ž)¥>ª5Ú>³|Ü>¶)Y>²÷>¬ž>¢">•R">‡·à>xä >jv>bgÜ>[¿/>Tü‡>UŒ­>f4(>€ä4>‹Kn>Ží>Ž^Q>’ŽÐ>™FÍ>d1>œÙ>•ä?>åÃ>ˆùù>‰>Š\#>‡I7>~w>kÍã>Z÷¡>LÍ>DôK>J3>^fp>xúB>…¼>…r>v>W0d>=ãZ>3™ >7HC>CÁ4>R½Y>\Æn>a '>h ­>vu>‚br>‡ö*>Ž:æ>˜xØ>¦±„>´ •>»Š>·=®>ªT¿>œÉu>•î˜>—Zv>œ¹V> r>ž³ ->™ác>•£,>–ñã> ¬5>° >¾xÈ>ÇÇó>ÌÅ->Ð~>Ô -”>ÕÅÅ>ÔÄÍ>Óx>ÒR»>Ð,E>ÉÖm>Áäq>¾Ó>Àµœ>ÆÀ1>Ëñù>ͱY>ËÇ>Ä…¦>¼>µºP>µ¡Î>»¯>Àv’>Á®i>¾¾d>¸:=>¯˜|>¨p°>¤þÈ>¤zÔ>¦HÕ>ªŒ >¯f’>²<Ö>³ä4>·,²>ºâ3>ºš>²Úë>©E8>£¨¥>¦®Y>³ð>Äzö>Ó¬§>Û¼,>ÞaŽ>àÂI>冉>ê-Ž>é¯6>ã]>Ýk„>Ýo>áû>ç\>ë†>îêÌ3>Þ„{>Îõ¶>ÅÚU>Å2Û>Ä;>»Ij>¯ó>ªË1>²X°>¾áÊ>É W>Ï ÿ>ÑZÁ>Ϙ>Çj®>¼¦Y>²¡­>¬Óž>®Oª>·HÖ>µ#>ÊpÚ>ÌÏ@>ËÔ’>ÈÏo>†N>·8À>¨ñ¶>Ÿº¼>£ÁK>´ Q>ÆJ~>Ð@à>ÏŠ>È•>¾c¯>¶^¬>µXø>¼ŸB>Æ3>Ì1’>ÎÍ¿>Ìâ>Ââî>²Ç>¥õ.>¤ò>­ÅÏ>¹#>¾Ÿ<>¼Ã>·$H>±`¸>®U >°î>¹v«>ÄŒn>͉%>Ðý>É9>¸ö> < >ŠD«>ƒVt>‘!}>ª1O>¿„;>Ê5w>Í &>Ðf>ÕR>ØÉõ>Ø|P>Ñžk>ÁéX>ª'>Ñþ>vx>k[(>„Y> AQ>¼q>Í>Ñ'š>Ëp >ÀÜ>²I{>¤f">™ÈÒ>•±>•ÁŠ>’Ò>‹­Í>‰es>”{ >«5…>Äœp>×ÖÐ>à?Î>ÜÚá>ÍÜ}>¶žv>¡„A>šœÞ>¢®>ªà>«˜>«Ç>´—½>Ãä¹>ΗÐ>͉H>Æov>Æ(>ÏP¯>Ö9Q>Ð?s>¿Ÿ|>­ót>£{2>£ô§>®w‹>¾óH>ÐŒK>ß'í>çå>êõA>ì >ìS$>ç›V>Üqí>Ðw>ÈØæ>Å>e>Ãdx> >À¾~>Àp0>Áîú>Ä(`>Ç(I>ËÝ >ÏT\>Ì0'>À¿”>±+î>¥TË>¤}4>¯‚w>¿×>Ï6>ÜLþ>çì#>ïy\>ð"I>ê1ù>à’>ÕÌ]>Г>Ò…€>Özä>Ö°ï>Ö!S>Ük->êë6>ûBé?w&?ôw¿>áf>ÓJØ>Ñú>Û!ÿ>ãú>å7Õ>à|]>Ú.>ÐÿD>¾¬Í>¤5±>Ž‹–>‡ð/>n>–wŒ>¡é¬>®f¥>º0 >ǵ >Ù¤1>ëK|>ö^f>úMþ>öã¯>éžg>×Pá>Îl*>Ø2Ø>ío#>þ$ð>ÿÊÈ>ò¨õ>ß>>Ïa >Ç~„>òÀ>Á Ü>Â[ö>ÉÒ>Òú>Ö‰>Ò€>Íw¼>Ï¢¤>ا&>ᎅ>ç©>êØò>ì^P>èòÃ>àñ >Ö!>ȵ>·§>§úð>¢¯I>«N¦>½oý>ÏTø>Û“H>ãôô>éÒ?>éª>ß-°>ÓÞû>Òæ¡>Þˤ>ñ€e?8S?%€>þuv>銆>Óß^>ÇOö>Æ#N>É_¡>˲">ÍèÈ>ÍH•>ÅuÂ>»¯r>»V°>ÉäŽ>á€R>õå¬?Bn?‰C?£”?ûç?ví?°´>ù¨ >îÊŠ>ìÍù>ñ®>õ¥h>òÌE>ê?Ð>âÓw>ÞƒI>ØXÇ>ΓŠ>Ç9g>Éé¿>Ø€œ>í¢>þwË?0Ö?½y>ø˜“>êòÕ>߬ý>ו>ÍÞ>¿íŠ>²þd>¬ñV>¯Ìú>½Y|>Óç±ÿ>òÚo>õ;¦>ò¯>îWO>ìûõ>ò²²>ü%ƒ?Ðþvl??ö?¯µ? ”ƒ?œ²?=œ?ï…?|š?L´? ÄN? Cc?çM?L?M‘?ñ? ]W? œƒ?é÷?Gd>ùö>ñü^>ñ¹³>ù??ñf?Ð:>ÿ†>ùýÐ>ù&Ã>üµý?ä–?ý? -O/?¦—>î©`>Íèä>¾( >Ãð >ÎL‘>ʽæ>º¹Ù>°,ª>¶ž>ÅÕ;>Ô|¦>Ýk&>â'Ï>æzO>ë×m>îÒ/>ê—ä>ÞÔ¦>ÍÑA>·Òâ>¢G>šµÄ>¥$>²Fi>±vþ>¤o›>šP>›³†>§$>¶œT>ÇO¨>ÚÒ2>ðS >ÿ–à?/Ò>þƒ¯>þï?õ? 43? ˨?Ç°?þ–?Ä -?jÙ?d ? -ZË>ÿé>îʯ>æsÛ>ã~ù>äƒ>çZ‹>ãšn>Õ>Æ^|>ÆÇ>Ôÿ3>æ°U>î–¾>íQæ>î‹>÷ØZ?09>û(Ï>äÒ>ÅKk>³7>¹Ñª>Ñy2>ëð>ý$?ÿ°?Œ/?X¾?¬?©Ù?-ð?MÄ?ð?uÔ>á7¢>Ç=&>Æ5>Óþ©>ßÍÍ>æ·ê>íÿ >öÏç?nÍ?Éj? —~?õ?ÑE? €?Ü’>ÿ”k>óF˜>ë²x>én=>æ̵>à¹>ÞY>äë;>ð§â>ý˧?;/? §e?– ?ÚÂ?§æ?¯ï?aÌ?£@?”¥?+¼?ͬ?-±?_[?ž?ã0?xù?#?èÿ;>ö$>÷E|?ƒ4? Mº?Ir?–º?æé?â?9;?­T?Þ?ëa?èÄ?O=?#òk?)$ž?(º3?#dñ?_ï? ûp?“d>í -2>å˜Þ>éÙ>îü“>òŽ²>øƒÕ?&ì? ŠO?? ?)×?/L?-îp?*@®?%Û=?Zµ? þØ>ço>Æð>»çD>Ç|W>㺳?˜Ç? -‚?ý½?Š?|Œ? Úï?î?µ?»~?Rë>óà>Ò)n>²Í”>¡Þr>¢]K>¯zÈ>ÈI>ê?Àå?ʹ?~X?4‰? ‹?SH>ìOD>Û5>ÐW>Ê?a>½>«Nš>ª{+>ÅÜ~>ïh{? 7ù?Ç?ÕÇ?$åÏ?$ÎÊ?Â?IÛ>èvç>å¯V>ùTs?Öñ? tK? -Ô‚?ã&? -°â?‰? õ¡?ë™?* ?®6?µS?½?8æ?ŠM?ëÈ?"Ö?"¹Û?"™2?#b4?$eª?%Ô£?*À?0œA?5/:?5öe?6M?8Zü?7ìÅ?.é¤?¾³?àÎ?v>? L†? -ë? (B??Ž.? ¸š?¢r?©è>ûc¼>ñO–>àú¤>ײ3>âÒÇ>þÀ? èÜ?°ç?!‘E?(¨ì?*¸o?&xÕ?Ø?šµ?†?!Í?*o?-wY?)qx?Vâ?µå?x½>ò4N>í*!>ûà?ßë?€ô>ó…9>Öë(>Õÿx>íPI>ý’Ä>ò!>Õi£>½õÍ>µáÿ>¸j>¼;'>Á!C>Æ >Å c>¶YÇ>¤¯>œF(>¡4>­ÿ>¶m>´J$>¨h¼> 9Ÿ>¤à>³q[>ÎÙp>ð6?´a? -? ŠV?£ÿ?Ýf?ˆ5?rx? ?b?°v?Ø?·o? M?^á?é£>ûÓú>öØ™>ç'>Ï6R>Ä‚d>Ö™>üµH?Ñb?“?Ö;?Ë?‘É?g? ­Š?³>ûÇU>â­ù>Ñt>Ó¤>ìË?*D?SD?GùâÈ>îcÛ>ö#>ûÑÜ>òQë>ç1ï>íx´>þ>ÿÒÝ>ï§Ä>á>Û$¶>Ø^È>ÞÅY>õ©? Z?,¥?#Î?Óè?¬…?)E?rÃ?ðv?šñ?äŸ?‚?o¸?]?»?Éú? -?“N? –¢?ØY?!c½?&—É?'ßí?*Ú?/ˆÈ?0?- u?)ž¬?'Š?%ÑÄ?$)? ]W?€`?Z?L›?W°? ?‰è?¹?Ð>ùB.>Úã~>ºµÕ>ž®1>‡_(>cÚò>:±I>–R>T¦>ÒÏ>(ý¸>Xñ>‡†6>¥&‘>Ãw‚>Ü»–>ìR¡>óiå>óMÝ>ð)œ>øB? %6?†?CL?=?¡ ?&¬"?+¦µ?(Öw?#êt?%Ó£?+•Y?+Õ?%3ƒ?#D?'Y…?)n‘? ,}? Ï>îLø>Ù<þ>Ð<®>ÁÝ>§Ru>…uß>Ks >"æ>† >Bv÷>}Ú>ž¼—>¼ê">Ùf†>ö‰? 9?Þ&?¦@?+K!?6˜´?>h»??¿Ü?;Áý?7¡4?7$R?9ãJ??v»?qW?kHx?hg`?ib?fËá?^QÅ?Uï?Qúc?O?”?Géy?8û?$£?"ˆ?&"Q?9`d?JÇN?WV?^ -à?`]‡?_¨À?]ÝÏ?]–ß?`.n?ebÙ?l`?qt!?tÕ-?v Ë?sLj?j±w?bæð?c_?g‡À?h5ê?g]‘?i ?kó‚?jãx?eÀí?`íŽ?_æ?aÖò?a‰æ?Z¥ù?QU.?NÑ?SD'?_:U?k}H?qÂ2?ux·?y{Ú?z‚Î?u^y?gý§?V&ª?L j?SC­?amC?k>0?mçµ?j¶?e†ã?d*+?e®?d²-?_¸?Z7Ó?Xz’?YÉd?]k’?c¸3?j}?mÝ?p&?s©K?w0%?wªð?u¹l?qÍÈ?j±“?eƒ?fáÇ?kr?g8?YáŽ?L±D?Iº?P’]?Y-–?\÷½?\NO?]hì?c4¨?g„¹?dÝ?]{Ò?[æ?`6i?d„&?ao ?Wض?S¼±?Zñ–?d†.?hrõ?jòù?q¡è?uò?n©ú?bê^?Z¬?Tl8?Oµ ?PÔí?Sú2?SÚ!?U0Õ?[N+?a„-?eöo?jÌ+?pè?shk?qøc?nÜK?pR?tÁ?vx„?pÚõ?d½’?[‚»?]°?fE?noŒ?t”{?x 8?uë)?k„c?\}¸?I=)?2]˜?$ÀZ?1{8?P&ª?h ·?qÁË?r!Ë?lé?e´d?aŒÐ?ZM?RdÝ?R~?Vü‹?ZÁp?`”·?fH?fQ—?e0Ë?jq?nª?h¥ ?\Á%?Rdƒ?M6?Mè—?W—a?eþ?g÷b?_+?XàÛ?^®¹?h{?fä•?X9¿?H+b?CÇ?OÚÉ?bN?lúU?pƒ×?qHÃ?m š?d¿a?\ß„?R“'?B§â?6Öï?8·K??‰à?DÚ?Mmë?\÷ý?hXs?g»2?\ă?SÅ›?U‹§?\gV?`1Ç?[Cê?Oò´?I›z?J?F²î?=°k?:¡ü?CÔç?Q‡æ?W¨ñ?S¿Û?LÑì?DCl?7X4?&t?çè?YÃ?(/?·?—é??ù ?Ug?e&?U´?¥Ì? -zM?¼? œ¯?1ç?EmJ?\@ª?tm{?æ©?ƒ™©?‚X»?~ÿ ?u†?f`U?N[#?5ÇE?*“þ?3Îó?Mº?gCP?sï?t”À?s.ì?tï9?vÑÇ?wJý?u}?kÉø?Wx???íÂ?+Wd?¡M?!e¥?6Á?J5Þ?WOy?c ç?k þ?o3?sj¢?wÆ3?qW?\ß9?MÙš?R9ä?^è£?fÎ?kµ?oâÝ?n˜²?iâ?lF|?vq\?{Æn?z“D?|?€T?|Ô2?s?¹?n¯`?o1~?nF?lÏd?kOú?dÌ?ZŽá?V˜q?^_1?kZ?sÐï?uy?r:?i?ó?RšÅ?4þ¬?*‹ ?;º…?Tj›?aQÉ?bå‚?`ϧ?_·5?cLÐ?iË3?kvG?gß?fr(?ow|?y(¿?xÓª?o L?eÛƒ?g¹Ã?n—?g?Y¯Š?Zx?ee -?j%—?kgØ?sé]?€C?…+P?†©í?ò?q?g„>?lÞx?x,F?‚@¿?†èe?†?Ÿ?,±?{(V?|‹?é©?€T’?€Ç^?‚Ž¥?ƒhº?€ø¡?~/Ú?µé?}ƒ^?sÝ>?kËè?phç?ï™?†æÈ?ˆÿk?†¤?€I'?uX£?r6÷?zõ?ƒö?†ŽC?…};?…K?…ñ?„j??„¶?ƒ}E?}Ï?n§Ü?f»“?j‰?oá=?püý?q`î?q[?pVà?v7?€2©?‚vu?‚®$?‚Š§?k€?~F7?}V¯?æ8?†™@?Š_?Œt%?Œg?Œ9??ð†?ŽC*?‰L‘? ï?vÄ|?xÕµ?ƒÌ?Š »?å_?Ž›Ã?‹Û?†Pž?‚'‘?‚îz?‡R—?Š^h?ˆ½?…N¶?„²X?‡5)?Šìê?dê? T?Šü`?‹NÚ?·¯?”(Ó?•ÆØ?•>?“vA?‘»Ê?‘Ê?’ûÇ?’µú?My?m‘?‹Â‹?ŒP?Œ‘?‹—Û?‹²?ªd?ˆ‚?Ž¨g?‹®ú?‰ØÊ?ˆ ‘?„ l? Î?x¬Õ?v±¯?zH+?€[?‚¬v?NÃ?{^ ?zU?ƒŠ?ŒZ?¿¾?]Œ?ŒDn?‹d˜?Œ°??Œ¡?ˆêþ?‡Lè?‡Ž:?†)b?‚4”?€W­?ƒ X?†Ù±?† Ô?„Å3?ƒðW?†T,?‹ï?Ž·d?Y=?‘€˜?’. ?‹7?‹ãm?‡w¢?‡î?ŠÑ>?™?• ?;n?‹~ ?‰qô?Œ´?›Ð?‘r1?‘5ç?ßN?ŽÜj?Šu2?…ÂY?ƒÉÇ?„£~?…r0?…s®?…Ëh?ˆJ?Œ e?Í?Ž·4?‹‚î?ˆ.1?‡°T?ˆöô?ˆîó?ˆZa?ˆÌÚ?‰À6?‰œ\?ˆ?ˆÓ?‰ÕÇ?‹*?‹:+?‹A?ƒ?–‡?‘Ë?‘˜?,ä??Œ/Ã?§?êY?e±?ŒÆæ?Œ l?‹ùÆ?ŽE?ÃØ?Þ>?‘[?ŽÊ/?Ž5?g?ˆº?ŽS¢?Ž³?>?Ž­f?ŒÚx?Œj?Œxš?‹Ê?ˆÉT?ˆ -;?‰µ?‹v«?•›?w?‹·?ˆ–"?„Ÿn?ôÄ?‚¿:?†2Ù?‰s¢?Šù4?‹Z?‰»L?†¶¤?…&?‡.È?‹iN?®(?Òü?ŽÍ?‹Ã\?‰}ò?‡ý–?„s?{Ù?q–?vÿ¿?‚XI?‡—?ˆó×?ˆ>d?ˆÝ~?‹A¢?Œï8?‹VÜ?‡"c?ƒç˜?ƒ ?„?†L¡?ˆÌÝ?‰Ô;?‰õ¿?Š ?‰äÇ?‰MÊ?‡ÿ*?†Ø]?‡w?‰G?‹ š?Œ0°?‹0M?‡¬?„„Â?ƒ«e?‚h\?}ÃT?z#N?€q7?„Œ?„J~?€œ[?|½?€~a?…SÌ?ˆ™°?ˆÏ?…xš?…|ù?‰Ì?Œi|?Ž“?Žÿn?ŽêÖ?Ç,?†$?ŽÕÜ?³*?¡?ˆ¬ -?„\Î?‚ô1?ƒ\š?„áù?‡-?ˆª±?ˆÍ?‡€?…àÿ?ˆlÚ?‹E÷?‹2>?ŠÄÎ?Œ$ž?vM?Nù?:·?éá?ؽ?ŒzÅ?Šw?‰lØ?‰ƒ`?‰ù?ˆ?‡„Ð?ˆF?Š<.?ŒÇ?»ü?‹uj?‡D¤?„Ù™?„TM?ƒý_?„õ‘?‡à£?‹Á??Œ\A?Š‰~?‹w?Žî?ÿâ?‘3?‘W?ë;?¦N?sY?r?d?‹¯6?‹F?‰@?ˆ)?ˆªz?‰C?Šmù?ŒIA?Ž[?‘Ý?“ÞÞ?“¯}?ÿš?r?Š{š?Šîu?tx?Ž÷?Ú?‹Õv?‹?x?ŠûÊ?Š–?‹P??ŒJç?×?Ír?Ž±Ë?ùã?õ†?ãƒ?µ ?‘j?³Á?Žõ?‹ ?‡ø´?‰ÜA?½e?Žð?ð?‹ ì?Š“ü?Šmˆ?Šâ?ŒT?-?Œû ?ŒlF?ŠS¾?‡¹?…Ëð?†Áa?‡f?ˆ·?‹0†?Œt±?Šþ9?ˆ€L?ˆ)è?‰¸¥?‰úZ?ˆSÅ?„†v?}~?vaª?u;`?m)?U?1?7£?.& -?Cø?_Lí?p£{?zéB?€¡¯?‚.ý?€µº?v Æ?n^Ò?u…‡?€‘m?ƒ\ò?ƒúD?„3 ?† m?‰l|?‰›Þ?‡zÒ?†ÚU?…cP?ø$?€û?€ªé?€®×?{‚×?t!Ñ?z†?†¤Ž?§ ?Ÿ??9?\ê?‹&n?Šã®?ŠYÆ?ˆ6Ÿ?ˆŸ'?‹Å•?Œþ"?Š¨x?†$K?›ì?`‡?…M\?‰+£?Œ ??ˆéó?àl?nö=?j Á?s ž?~îc?5c?‚gp?†3?‰?Š~ò?‹éÖ?Œ3‘?Š™‡?…¾è?XÉ?‚™i?„U½?tö?{+?~)_?…º!?ŠÓÀ?ŒÐÅ?Œæ{?Š–C?‰(Æ?‹F?Œº÷?Œ°¥?Œ‡9?‹Ì?Š¥l?Š’?‡ƒ?|ƒA?r–?—?Š–x?…o?_? Œ?‹^?ˆE?†¦G?†??…¥Q?†)»?ˆ9ÿ?Š•ê?Œ%L?ƒ+Ê?½û?€Ú?)¹?¯O?Š?zÞ\?~´?|é?¿á?‚%à?ƒ£??„PÖ?ƒµ€?ƒGÆ?ƒ­Z?‚ËÙ?‚Yd?ƒëÎ?ƒzí?‡?P?‚|a?‚N?Á?‚W?ƒ1?‚R+?€/ò?}ˆm?€@|?‚¢C?„2g?…Tu?…øë?…Ñ‚?…h4?…¯?ƒ®g?€¾©?xÛ(?sÐÈ?zäÓ?‚9±?ƒ¡?‚Àó?€ß%?Z?‚á;?ƒ§N?„GV?„«ó?ƒ{E?Îu?ì?‚Áy?ƒûŸ?…O¤?…t?„Ì?ƒM•?KŸ?4?‚tH?‚ðÒ?‚ß?‚–Ú?]?.`?~ €?}¯*?}\ê?}Ç?{À?}—?{ç.?x°¾?|dÛ?~¼¬?Ÿ?€Ò?l9?™?€5?€;Ÿ?~!?uß?lÁ?k?p¯œ?wg?y Ã?vq ?w“3?}'Ò?z½M?u8«?t ?q"g?oÛï?wˆ?€í?ƒ æ?ƒGò?ƒ!?ƒ[?ƒ?YÏ?v©?lvå?r‘?{o÷?}¸n?g¡?€ ä?zı?ug?xVƒ?~Og?€Ä?ÍÝ?ÒÎ?€ÓŒ?~Jù?{ÜŸ?z,?x°¯?zY\?zôç?yOÖ?zÑà?}S?~ñ;?€ª,?€Ì.?~s?|é3?~TN?}Nk?xÀ>?vÙœ?s!û?kx\?n«9?uGÍ?u:_?wm¤?{‹B?zúÜ?y ©?zH°?}3b?€?ß?Wl?€Í0?~“ ?~øg?{ç?~+q?|‹¿?wwã?sXk?tï?uq?s¸?sè6?w«Ï?{¥?}K?} ©?}w?~ˆò?}öÓ?{Ê?x÷¿?vŒ÷?x¿ã?z.•?vPÜ?q›?lI¯?gÄÍ?ht?mëû?uÛ?yf(?z–%?{-Ï?|Hd?~±¡?€,?€À7?€Ô¾?€L÷?~ƒ(?~õ?;Ü?~6Ì?|m?}êí?€(?€T”?€=[?€Yï?€{Œ?€1x?qÈ?ÑÙ?€á?~?zD?{-?}&?yZ?r¤?q³\?w”?|zÆ?}ß?|(?wï´?tsÐ?vÎ?}ɸ?€‡8?€›Ú?€4ú?p;«?n0³?lï)?oA?qÌ®?r‹²?që…?p*?lM?j¦µ?ow?rñë?sf¶?s3?sJ»?ràX?qð?m¼º?j’?k¬?n¹?n0 ?mA ?lKÍ?m7T?n ?lµc?l??lì?m°?nÑü?n—)?né?oŸ™?k<*?a ?b(Ü?ltŽ?oq?mÌ?n­—?oŽ?oº ?pYu?ožŸ?nD€?o`Ó?o<í?jof?cz´?fA»?lµÂ?mÃ×?l‚$?l?mþ?mÅ`?n³¼?lÐ?`Ö˜?ZeI?cën?iÁP?fvû?hæ?mg?m§v?kßÞ?kP?ljf?læ^?l`‰?hÎN?g]=?i­?kh?e›X?Y«}?X3(?a¾Z?gg{?gþ?aÄÙ?^¢.?fÐ?jIb?jLŸ?iŒH?ióE?lŒœ?lõ¦?mï—?o{?nçÁ?m>ü?k¡?jÃÿ?gw ?aÛ ?fyè?kã?m;Š?n°?m¶Ã?j–U?kŒ?nSÄ?nÝï?o2?o<Ð?n×N?n™M?mì?h»À?dÅÆ?eI—?h[Œ?gK¨?enu?h€¤?k{¥?lú?l ‡?kk?hPÎ?ah×?_[ -?dF±?jÓ?jðç?fÝa?d×5?e™?f½¾?dˆ©?_Α?\ÈÒ?_´m?fýõ?i\[?cú[?\±*?[ôÈ?^…L?_K‘?`Aò?cÀ€?fÊý?hIÑ?eÙƒ?e×?h¯ª?hZ?eÏó?fUL?gÛw?f³'?`|§?ZbO?Yí?Z5Ô?^µ>?cÂ?f¹”?gCh?fÕI?e Š?b0?aÐò?c¦Y?cÝß?b2‡?^¦Í?]j?Z¹¯?XÎb?_J?cøR?e†??fŠ?dò?bЬ?c&?_O3?Zy?YB©?W†ò?[5?`+(?``N?ci?f‘4?fü?d­õ?cô0?d/H?eE¶?b)î?\è?[­?_,»?b¸Œ?dh=?a„F?_€å?a%?bÁf?eSn?f8z?e-.?c«N?a4?a‚H?`¸*?^¡?]¯)?\–7?]mÄ?`yº?b¥?dù?c¿q?bõú?d!-?eÂÕ?f¨?e”Í?ds9?c°Õ?c}Ñ?d_»?d²?cÖa?ej?eßô?e½?cíÃ?^bà?]G?b¡Ç?dTu?^]?V÷2?]|!?dÍõ?eì?aq?\Ü ?^ ‹?^}?\¸?_ÞS?`=|?`|?`x ?]|‚?YPÍ?\÷¹?bÏ;?d—«?d¤´?c‡p?_l¿?[§˜?]˜×?aÉ?c¬?ak?Zƒ ?[óÚ?bf7?d »?d?ciý?`è?Z€?X:Ë?^=ö?`Z6?\&s?Yt?]¿i?`³÷?\ù?TÜm?WÿÒ?_ÊÅ?a\…?_(_?\–B?ZȺ?\ô?]Û?\#Á?[¾{?^^7?_¿?[‹&?[2#?^åd?`Ûê?`û&?`:Â?]åN?XïÔ?O!Þ?Hg?K×ã?R§??Vd?ZÁ³?^L?_³W?`,?`ƒ?_ð?`Vì?`’N?_Œ;?\–[?YÚØ?YG?Zkc?]´'?^Ÿ ?^W}?]ª?[ã?[L[?]M×?]J?[¹°?[…^?]?]³?]°P?]n®?\ƒ?[+?X|ö?TþE?VjŠ?Y5?X†2?WáH?X ?ZW ?ZŠw?U¬Ý?Oݯ?S>~?W¦S?WyŸ?X¯—?[,†?[!è?X ?WH ?W=þ?U³]?UÆì?X8a?YÏ?Y‘ ?Yîä?Y·÷?Yý9?ZTÛ?Z:|?Yrû?X„¨?X?Wô‹?XA?Vêa?S.›?PâŠ?T©‰?XJ?XUµ?WÏ¢?Vo…?R÷d?S…ß?V]?X3?Yn?Y×+?Y¢?X·?Wñþ?WÒÞ?WÜ‚?WŽ‹?Uw\?Ry?SœC?V—?Uù¶?V´?UÕQ?U‘W?V4?UŒè?Q/?O”p?S×Y?Vbl?V°?Vø»?WŽ?W›?WK-?Vû£?VÝÔ?V/Ï?S[¯?QCî?QÓ?TÇ?Uˆ ?T&œ?SÝ?SÕ8?T0M?Tõ?U‚?Tc?RÛ ?PË—?LDÖ?L·j?Oeh?NKn?Mèª?P‚$?Qé†?S*?U+?UÖ?SµÐ?R©×?Rƒ?QJK?P Ž?P¼?Pæ?Pš?P„P?Q¤?OòŸ?Nãä?PˆÓ?R))?Sµ?Rªù?QöC?Q§p?QI¼?R:·?SUæ?R½F?OÌ%?NÙL?PÚÁ?PÒ‚?Qg=?R5¬?RlÞ?S\í?Séó?RÀž?PE*?NZ·?Nƒá?Oî%?Q‘Z?Rmõ?Sœ?R,§?PÑã?P{ ?P©e?P~ ?Q?Q d?OäS?OPÛ?OŒ5?OÐV?O]”?Oã?OgG?P e?Q¤ß?Q¹?NÅh?Of?Pé?Q%?O~ì?Lþ?LÜg?Po?PŽª?P†?P92?O(—?M{P?Iªø?FÃy?Hó?Må8?P2¹?P[‹?PE?O ³?Mwä?H5¯?Eææ?H¥ß?J"?HÇ?Jf ?NmÕ?Oúc?OÓ¨?O—]?O ?MËú?MÜŠ?MèÅ?NED?O=?M£l?IΆ?Iø?L"?K¦T?Lk?Oi?Pc?OûÂ?Oœ¬?Oµ?N‰:?N?‰?NÖ?Nã2?NÅ¥?M Æ?LH}?Mùš?Mn?K8?IrZ?Gfõ?Hk\?J”z?K›'?K?K†?HÏ?I ?Kë5?Lgø?KSŒ?I`ø?Ir÷?L?L‘Q?LìÚ?M]:?L8U?I-Ò?FÕ?HÀX?J·z?IÞ®?Huè?IÈ?IÈ,?IÓÀ?K ?K•ø?JŠf?Iš?J©?K7ç?KY?Jñ‡?I«ª?JT?Jg?FÎ`?AÓš??Ð?DTí?I!%?J¤Ð?JŒw?Jú?HöS?I½?Iב?J8?JÕ¥?Jø‹?H¦Î?E¹í?Fæª?EîÒ?C“¢?Dnç?GNX?HáÂ?H«®?GéY?Fr±?@q?@h?FhŽ?H¡?DUA?B>ó?ER¸?H5š?H(Ž?H!ä?GY?E`Ÿ?E8¨?D¼J?C  ?Fž¡?H¹%?IdÏ?I!‰?I]0?J"1?J=?Isw?Hy?GE;?G©œ?GÛ’?F0?Eå0?G^”?Gû?G÷?DÈ£?EVâ?G. ?Gÿ‡?H¹Œ?H»ê?H–Ä?HØ?I ?F•?Aú?BVi?EAu?E4?Cùì?EOR?FG?E¡ô?F{f?Gþa?HWÜ?H=Ö?Hbå?G´?Eèt?ELD?D A?Bº3?D?ED=?E­T?Eà-?DåÛ?AÌD?C?E½k?Fš?Då¥?A4?@X±?CÞª?Fƒ¦?GR?GR‡?Gá?F„¿?E«&?E®m?C:~?=¼©??Óù?DUß?F" ?E´?Dù ?F§U?F±ù?EÓ?Aú’?:§ð?=ø?E÷F?GÒ]?Gõç?HÀ?FA¤?BÊ®?C‹Y?B² ?=8??å]?BíD??…Ý?;A ?=¤¼??ýú?=mÝ?<Ðù?@c¼?BLÌ?D€ò?BF»?@ ?C^B??¯H?8Ε?<å?B?AÏ ?@8P?@®¸?AÕ°?@?>·?;?;XE?? ??°E?@n3?C›¥?D¬—?B°ú?@A×?AŒ-?@ôö?@ðK?Bg ??àH??`Ï?B¯g?AV?<õ£?>Ãú?AeÕ?A¹?BT?@°&?9éÌ?:d"?@”ç?AçÖ?Bna?BÈî?B86?A!??Ô ??*h?@'¨?@€I?@(C?<Ã%?:û?<«!?:Ëö?@1ª?=ª}?9UD?9—Ì?9ó?>@?@îÇ?@nw??µ?=× ?=*??Šf?=Z?8Ž ?;÷?<ÿÓ?<®Ã?=ð?>ã·?@ÎË?@vÍ??†?@t¶??•?=úL????˜ï?>—T??:~©?9 -L?;÷=?>Tœ?>*Ê?=­‹?=¿F?=I?=C?>££??ª©?>¹9?<|y?:~à?5Æn?3 }?4)ê?7þ?9ÏI?9 x?;gÀ??#Qî?# 7?#ùF?$f|?$ˆ?$7$?#‚?!IY? ªF?!#U?!À—?#SÊ?"¬é?"%‹?!©é?Ò+?!½¿?"kA? ®,?J?è?Ã1?—?!ü?#>Ò?"êë?"«?"–c?"Tú?"H ?"#?!gM?!HX?"K>?"„œ?"Ö3?"~i?!w‚?!à1?!ö?"V?"¾x?"Pò?!¿O?!Jv? ñ?!FP?!àz?!Á“? t?ôm? ˜?!?!‹K?!äk? Ÿ}?Hê?í2?!pÝ?!;$?!&¸?!B ? ß}? î8? å¡?i3?°ì?zÁ?€)?‘j?°E? ë&? %Ÿ?~K?@N?/¬?4?Ù ?-e?·ÿ?ƒã?Ý—?Å%?zÑ?¿(?ŠÓ?¶z?MÝ?:?ƒ¡? €M?nß?ŠC?l?!å?ÇS?(­?¬? ¾?C«?™·?ýÍ?èZ?j‚?Ö?lí?þÔ?YB?,?Ô>?²Ï?P??*’?ˆÛ?@?ÕY?”À?^Í?]?Ø?ØÛ?|ƒ?M ?—°?¾º?œJ? ?†@?i+?µë?Ç;?¾q?¶Œ?h(?þ«?4¥?¢£?é?Œ?õ›?³Ò?°~?¹ã?Y6?:ó?=ð?b‹?ü?ÃM?†?§È?²C?¥?ý?kø?Ø«?܃?Û+?5?óþ?®?ÔU?WH?1W?Çj?„‰?¥?ò„?fj?þ?^Ì?Äg?Í™?mf??†•?ŽG?J?ìô? h?èV?1°?ÝÕ??»D?ñá?\©?Dõ? ¦ >æ;:>ðä? -ç?Þ—?™b?4Ý?ê+?h@?“? nn?ï÷?sí?:q?;e?ÛÈ?°¬?’?3,?? 6†?„½>ùñõ>ÉA˜>¬>ÜI¼?²ß? -^T? ñû?]"?^4? 8?ó;?gî?ž¼?[#?ÞÃ? î??é=?†?õ•??Ø1?M?@U?¤N?ˆð?G ?RÂ?Y$?Go?uÄ?d? ×?Ÿö???ÕÁ?Ò×? ‰µ?á#?Þ4?‹T?É?\?Á?D -?û?ƒo?ó ?ÕL??ä/?.Å?2¸?>ô?- ? i¾? xÖ?Ùü?•ð? qƒ? Á>ö€Â>¿»ƒ>ÃÉ>øh?߸? ¦8? «l? »š? -´Í?£? l¦?vì?Iô?±T? -Ë?þs?°i?Æ?èV?~œ?hò?Ëë? ?ÐÍ?†ø?:l? -y? “½?P´? ZB?“³?V2?þN?? Wr? å2?ì[?M ? -~Ò? ©‘?ÑE? Vç? ”?–?ð? æi? Jô? ý? Z? û5?¦?Úh? àR? H;?iö?¦ž? ¼? y9?B?#£?]Y?|r?3?¤r?ÚP? -Ö;? ¡!? -ªG? ,? |@?§? rM?8s>ùˆÆ?l·? e? pq? ~)? _¡? ü? °†? -‹ˆ?xj? /G? ž? y™? 21? $? Fs?¿m? -ï?? —f? \Õ? -L? ? œ|? fW? -ʤ? ß ?©ê?!?”? ï†?hl?Õ?T?ñq?=Õ?q‚?‘?{§? LŒ? ¿û? –T?¿‚?Ÿ?}?Ò¾?‹Ø?Ëa? 9? 5Ý? Dï? 5?Ñx?m?ö?£ß?!œ?s?²Ú?9?{C?é¦? ?É'?êº?y,?3H?[?ž_?º°?kk?{í?Õ–?L’?>üRO>øÌ]>ô<>ðí¦>ü8ˆ?¢Ù?T?±j?Ÿ?~g?f?‡’?&?ëR?•»?†Ð?¢ó?h?l-??øŠ?Rt?Pâ?à??Æ>úàz>ýn9?Z~? X?H_?JÝ?¡ ?yx>ÿ›r>þbŸ???9$>óø¡>ü ?Á¯>ý¡­?‚?³y?@ª?Ú×?0p?‘*?¦î>ü²Î?•-?ìI>ÿ¡Ô?ÄT?ä?1,? i?õY?†×?å?õ?;Ÿ?f?»—?"&?0½>úŸ2?¬s?Ö`?e?õÿ?Lˆ?§?µ?3´?í?¹“>ÿ×~>üN„>üê+?˜?B?cÔ?¢(?l ??‹}?¥L?j_?êG>þúß>ýF>ÿP4>þŸÈ>þxz>ù— >ó[>ñê5>ùø>ø•Ý>÷Ù >þ `>û½>óê>çuÝ>âZc>ñi²>ù…%>÷.2>óËh>úû¤>û22>ø¶4>ö[~>úäâ>üÖ‹>÷| >ð}f>ñC>õ ->ù÷1>÷Ÿ>úóU>þ)(>ým£>ýP >ÿ( >þ8>ü.à>üöz>þK>ýob>úš>öü”>øvW>úr>ø~´>úÉ„>üæª>ý(8>ü{Ü>úvS>úá¤>úe>û8v>û¼Á>÷Ë>÷›Ã>úóO>ùŠé>ú–×>úöu>ü• >ûOá>øQr>ûq >ûx>ûµn>ùe>öùð>ùÚg>ö?f>ö¿Æ>ùEn>ö«è>ôiS>óü>ô/Ã>ù,\>ú)€>øF>÷2x>ó&»>÷¯·>ùÍR>÷Wç>öia>öûó>ö_½>ôï•>õïá>ô+©>ô·H>÷C>>ö1ä>ó×>òIÝ>èšC>îŽ>ñ?Î>éyæ>ܘ…>ìBt>ô\>òI'>ò®.>õ€Y>öŠ_>ó=q>îè,>ðL%>ðUÔ>趹>ïÇ >ñ®P>í£€>ìZq>ñ;>òtÿ>î`=>ïGÏ>òÞë>ô Ÿ>ðTh>î2ï>òA©>ó$ >ò"Ê>ò*Þ>ñØ>ó&I>òßM>òä·>ò™Y>ïïË>ñˆŸ>óõn>òô°>ðá>ñŽÉ>ó‰±>ñ`>ïG>í¯™>ð«¤>ð -?>ð>î>ñƒQ>ñ— >îc‡>ï’¤>òë">ðX>íáÿ>í=ˆ>ïÑÞ>í">ëˆË>îÙ>í -T>å„>>Õv>ØÈE>åÌ¥>éUe>ëÏÍ>ìAB>î0Œ>í¶”>ìß“>î\â>îs]>çñi>èlG>é”a>ì@>î²ÿ>îd£>îÏI>í”>ìÆ·>îV>îûY>ía*>ìèÓ>ê²±>ééA>玼>çY½>è/e>ìL>îÇU>>íhº>ì?8>æs»>èÜ>çé¿>äïœ>ìFÂ>ìŠÓ>ç2ü>玎>æÙ>éŠò>ìU>ê¯H>çCÅ>çšy>èÞÜ>ç ">ç@À>ßxõ>äòï>éÇå>é¢S>êH¥>éœå>çž>æ9®>âd<>çn¤>è*@>èÙr>霅>ç”>ã²>åú,>çhi>èÂL>é_Œ>è»>æŸÂ>äÈ—>å{>éN>é;µ>é/>è n>çª_>è'>ç‘L>èjÐ>å,>ãÄÞ>ç3>å_;>âÕ&>Ýr >â¯T>ã’‘>âÈê>àê§>åx>瓶>ç{>æ»é>å¿Ò>åy>ßÊû>áÔ+>ä›>áíŽ>ä:W>çº>çJ¡>æò>ãÃ¥>Þ’Ï>ß¼>ܨ¨>áç¹>äóJ>äø&>ã2]>ác£>áJÁ>äÆ—>åM>äŠm>ãÓó>äFN>äÝ.>ä…>ä\”>âBU>ã.:>â&”>âLÈ>â¬È>߶z>ßá¤>ã$‰>âˆQ>ã,>ã[>ã?>â]Ã>áí>áˆr>á -i>áñÎ>ß>ÜÑz>áÛ>áàP>á°ƒ>à׺>àÎq>ây+>⛡>à³>à}T>áp¹>Ý>ؤò>Ü>á¶>àWZ>Ú~H>Ý=>ß½$>Þ¢å>àX>ß >Ú½¢>Ü-h>ßåA>àâZ>ß—Ù>Þ“>ߦ>ÞdB>Ùx>ܵq>ß·á>ße>ÞÓg>Ý ]>ÝØc>Þlr>Ü ï>Üm>Ýšm>Ý€|>Ý¡›>Ý>ÝJ>ݤ>Ýhß>Üû->ݤk>Ý7`>Üi>ÜÉF>ÜŸS>Üžd>Û™>Ü )>Üæ.>Úd÷>ÚÆ´>Ú!B>ÚÞ‚>ÚÒm>ÛýÔ>Üsš>Ûšä>Û²±>Ü1‘>Ü0Ð>Ûn>ÚÉx>Û$z>ØÖj>Øý‡>ÙbM>×Ãä>Ø"B>ÔxÙ>×P¯>×ÍF>Ö¬>Ò+M>Äql>Â}>Ðé$>Ô®Î>ÓÈÐ>Ö¢`>×ó>×ËA>׊Ñ>Ö–>Øåm>Ù->Øð’>ØŠ>×n›>Öâ6>ÕöÀ>×Çô>ØA¥>؃…>ØÜr>Øín>Øù®>ØhS>ÕXš>Ô ”>מÚ>×ss>Õy¼>Ösù>×Çã>×…>Ô`\>ÒÜé>ÖŽK>× >×@$>Öëx>ÕúÂ>Öˆ>Ö '>Ò¥>Ïxn>Ô¡>ÕÅ>Ôñ>Ò/>Ó­ª>ÖN>ÓQ>Ï”W>ÒŸ¦>ÔWÑ>ÔÏ•>ÔXÜ>ÕW'>Ôï_>ÓÌÕ>Í-¶>Í8×>Ò ->Ô3>ÑB™>ЪS>Ó. >ÓSÀ>Ò«C>ÒT°>Òã³>ѹ!>Ó}®>Ò†>Ì3œ>Ìñ„>Ò6_>Ó_¯>Ò˜V>Ò‚™>Òä>Òº4>ÒIE>Ñ@Ã>Ñ >Ò->Ͼ.>ÐNÉ>Ò:¿>Ò6Í>Ò ->Òù>ÑžÈ>ÑWä>ÐÊ">Ð3Ê>Ñ1U>ÑgX>ÐÀ4>ÐÊ×>ÑS{>Ñ.3>ÐæW>Ð¥>Íþº>ȶ\>Ïz>л>Ð:H>Ï%ø>ͬb>Íðá>Ï2ã>Îè9>ÎÆà>Ì£J>ÎêÛ>Ï\>ϵ>Îï>Íz>Å›>Ƭ>Êeê>ÍØç>Π>Ìš˜>Èò>Æòî>Ëj>Ëïà>Í—¼>ÌDk>ÌæÞ>Í’]>Ív%>Ì«ˆ>Ì;>ÌÄè>Æ,>ÆJ>Ì©ÿ>Éíý>È G>Ì‘_>̱Þ>Ì8:>Ël#>ˈú>ɸ¾>ÄàÎ>Ê<>Ë«ï>ÊûÊ>ÉS2>Ê5Ä>ËÂK>˵=>Êäu>ÊòÞ>ÊÞT>ÆÑi>ÅC->ÇÀ²>ÊÞ >Ê™©>É\þ>Éî…>Éæ>Éðy>Ê[™>È Œ>Ç_>ÉDê>ÄX>½ÖŒ>¿Å¥>ÄG>ÉG>Éhs>Å}Ò>Ä–ô>ÈÚÏ>É%/>ÉW>Èî¤>È¥‹>Æ·‚>Ç:o>ÈRk>È.Ù>Æ„6>ƃó>Ç?Ô>Æ=ä>Çzò>Çw½>ÆT¡>ÆF2>Çü>ÄrF>Åy>Æ}ê>Æã>Ƴ>ÄS>Àª›>Ã=¦>Å„(>Ærf>ÅzÔ>Æl>ƉÑ>Æ@e>ÅÜ>Æ:>Åœî>Å@1>Å°v>ÅÖ>Å„Å>ÅwK>Å?‚>Ī;>Ä…>ÃÅÐ>Âá¹>½É4>µ ,>¿î>Ĩƒ>Ä·}>Ä€d>Ãð¶>Ä®>½t>¶þL>À2è>Ã&*>Á¸[>Âë×>Â7Ë>ú>é÷>ÃJ<>½û´>½¨>Áùã>Á?Å>Âß\>Õ>Âúã>ÂÅj>Â)S>Á¨>Â->ÂO>º>À2È>¶R>¼¡P>ÁAX>À¥n>Ád>ÀlÐ>Á“>ÀÞh>¿"q>µEÞ>µ9ã>º¼K>±,?>³Òˆ>¹©>¿ð0>À4º>¿Éa>¾Ô>¸¾W>¾9'>¿õ>¿i›>¼Ü¨>¾‚2>¿lW>¼&g>³¦¾>´­>¼>¾ Î>¿>¾É >¼ù«>ºþÀ>¹¯s>³>‡>¸hÐ>¹?e>½º×>¾aÇ>½ñ>½uG>º’Ÿ>»:>½…ž>½a’>½>¼Ê>¸¸–>´}Ò>±D>¹‘|>½ >¼Cö>ºœX>».þ>ºçñ>»‚€>¼Y>µ‡þ>­V>¹ i>º>¶A>±

    ¸>¬š³>¯ÚQ>¹ig>¸ÀX>¹³>º,5>¹ºj>´ã>¹Xr>ºÌ—>º÷>»>ºôÜ>º¬Z>·Øs>´ÖÔ>¶˜æ>¦w›>¯7Ü>¸%>¹ve>¹>µ'>¯%Ñ>²±g>¸>¶()>µ±ø>´¢H>¸5á>¸÷>·÷Û>¶«c>·ß>·I·>¯~\>²Œ>¶g»>¶¹ô>µœ»>²u>²¸‹>±ð>®£×>¢IL>žáÿ>¬Ðú>±eò>³Ï>³]Å>¯Çº>¯£_>®í¶>³/>³!>¬>¬¬ç>³4Ê>³§>³9Ð>°îV>§ ¯>ªèµ>®€(>±™í>³q>³¤>²¦Î>±lƒ>²½¿>±¶ÿ>±Îú>²Œ«>²‰é>®°ú>¬½>©¿d>­Cä>°vž>³‘>±^ú>¯ñ>±ïF>±æ_>¯‰\>¯ê4>±Æ?>¯‘`>¯M÷>²Dä>±¥Þ>¯%>®ÔÖ>±ÕÛ>±Ð>°üØ>¯Ò_>°=>°ü>±ØF>¯Ú>®¶û>°‘>°òâ>¯¥3>®¥>°ÝS>°E>°?7>¯>¯ßÖ>°‡>¯ï‘>¯¡=>¯<à>¯T¶>©Êz>¬é>¯JM>®F‰>ª¥^>©Ëá>¬Ë>¯õk>¯[Ë>¯‹[>«F«>¬¯>®ná>¯v>®+Ó>ª§p>¬i/>¯éÛ>¯‚{>®Š>>­Š:>¬ü«>­¹>­Æ>>­w¬>«%>¥Ÿß>¦• >­&ˆ>®,ƒ>¨ë;>©¥3>©SÛ>¬D->­}w>® K>«¦.>« ->­´:>­1<>¬ó>¬¬M>ªò>«Uq>­³ô>­V>¬ãÚ>¬‚'>ªL>©"R>¬Gæ>¥ÈK> à>¥'>ª‹ì>¨¾¶>«ïÓ>¬Í >¬4Ì>¬i™>«zÎ>¨ît>©_>«ûu>«+>§Ç*>¤œð>¨LZ>§³>¥´Ç>¨µ>ªX=>©ÌK>§B >¦ß>§÷­>§ù˜>©ï>©°–>©Ïk>ªžÎ>¦¯>£ º>¥æõ>¨Ø>§x>©Yõ>©‡I>¨ê>¨.4>§le>¥ÂÕ>§$>¨áô>©=>©H#>§ø>§œ>¡„š>¤æ½>¦Ðà>¡M>¤\È>¥á>¢ºÙ>¢.‘>¥òJ>¥>£Ðd>¡\>ž=e>¤Zn>¥Õå>¥§ >¤Ëo>¦ã>¥MÃ>¢qt>¥Õ{>¥æª>§©>¦gž>¤/Ò>Ÿû–>¤’Ù>¥[€>£N>£é‘>¦>¦¥&>¤Õ%>¥w >¦.>¦/¬>¦k>¤ž>£>¥èæ>¤Ú>£•t>¢†>£ ?>¥í>¥a4>£ê³>¤Ý”>¥.H>¢^P>¢Âz>¤òu>¤)>¤õÈ>¤)>¡K»>¢-5>¡ñÀ>£4æ>¢dù>¤">¤¢>£ãJ>¢ž>¢9^>¤9•>¤>>£FÃ>¡ßé> ‚2>¢âd>£Î>£Iå>¢&û>£O×>£]K>¢²®>¢™>¢F€>¢¼½>¡ÁC>¡€>ý$>—V/>“e>¢hš> ¦:> lß>@™>—Ÿ>—ØÀ>ŸÕã> h£>žõz>¡%œ>¡‹œ>žž >ß> ûî> Lz>™CÑ>›£>ŸÔZ> W >ŸQ¤>ŸL>ž" >d>™Á>ŸO±> /d>°k>›ª¹>žg¹>Ÿ2a>  “>ž¶Ò>žØ.>ŸF>—²>š>žB>ž¼o> (>ž¢ä>ŸqÖ>žÌ>ži±>žMy>žž>ž¨Ý>ž.h>t>žk4>ž“2>ž³>ý!>¬—> 5>žAu>œÄ’>˜~W>™[?>‘Ë>™­Â>§D>ôö>cÉ>œ’M>šaa>˜óŸ>›lŒ>š·'>™ Þ>”ÖÆ>œ'…>œð*>œíÄ>œo«>œ Ú>šr6>›j[>œŒr>›Àõ>—0m>š>œß>še½>šæ>™ôœ>‹˜ÿ>÷´>›ý>›T%>–/P>—?ê>š…U>šæô>™?>šî>šûˆ>šC¢>˜Ë>—‹^>™à•>›[>šs¹>™K±>™˜S>—Ê÷>á~>ŒÄ>—ö,>•÷>”Yc>”Ÿó>˜Æ¼>™Ä>™=o>™<=>™Rç>™¬ô>™‚è>™¢>™7>™ .>˜yA>˜Í~>™=>˜þ9>˜>ø>˜ƒa>˜k'>˜ÖÍ>–rØ>9_>Iãñ>[! >jÀ[>x’Ü>Ý>yÑ>iÛY>ZBù>Qƒl>KO>>-³>*=<>¿?>¶µ>g¤>&ðŒ>=Ò >P,‰>Vu¬>P v>AìŽ>24>$u>ã¥>)>Þ>ß>2d>GA>PCø>IXb>6ºR>"P×>ßQ>tÕ>%Y>>>"B>z>$•1>$¸o>"M9>&|¢>4jÊ>D;¤>L«â>Lø4>KÊ>Oן>Z©ý>fó½>j¿>]_¨>Afç>#uÀ>Ø©>]>>#z>)ù>1™>2>+ã‰>&04>(LK>1žÏ>:cp>=>;L=>8ßk>3Ð_>'S¸>Ë>(¨>Y#> ü.> ÊW>6’>D, >G²>Fö>J>Ý>V<,>d_Œ>lk>ie8>`0e>Y}K>\6 >gyÊ>soU>xTJ>u2?>o>iÉ>`ÅW>QÏr><¿Ë>&þS>â<>l¢>™>½î>(¶>4_!>@~>FL3>D%ô>?™“>AÆ‚>J¹:>QcÞ>OnM>F¥ƒ>;8½>0‰>(  >'þ­>,á>3¦¯>;í>CÌî>M#3>UbÅ>]†…>fÀ>nr¨>q«_>rj>r™ò>q·q>kÔ>^Bä>OL–>Bž¢>:~³>7ç>:û(>Cé‰>S_>g >x%>€¹Ë>ž[>è>yó>rwÚ>jÒU>a¥>WÁ.>OA>GV˜>;ëW>+óS>?Ž>âØ>‘@=ÿz>P>.µx>?íW>IO¾>LÛr>J®O>A¤4>6M‰>4¡>Bß„>_Ê>|$ã>‡}=>‰§[>†q€>‚#k>€†r>ûœ>‚„€>y’µ>^– >;î->rÚ> -³*>Ø>ÜÓ> -ói>ÖP>%ó>5ëó>CKÎ>IT>Ic.>JìW>T–ì>cs‰>k¯Î>cœ>Löã>2+õ>9>ê>`ê>›”>)$*>6jU>J)±>e¹'>€)›>†€M>ƒñ>yÄ>mx¸>gl+>i7¦>t¡7>ƒQ>‹7Ñ>Ž­I>³f>‰zc>‚Nï>q3>\>Û>Jˆ)>? V>8{P>2 ÷>*Á¶>*Í>7\@>Lp>YÇ >YsÜ>VüÅ>_é>oú >~^õ>€Þq>xVÑ>g„>W•u>Qθ>Sc4>R¥Í>HîU>6|P>g™> -‚8>¡>>Ù>Ýê>1ü >=Å>9ùz>(De>d[=òkû=Ú7C=ØP=çIµ=ýˆX>gñ> aâ>ý•>i>(@4>4oÑ>H¬Ç>gÚ>„ƒH>’ -#>—œŒ>“‡>ˆE)>vòÕ>ec>_÷–>`ºK>\êÉ>P+>>@Â>8Çý>>{¤>QÓ‰>m9|>„ŠŠ>Þ§>—jè>›²M>ÎÞ>èp>œC¦>›2 >œÆÀ>žô[>êž>™žÑ>•‘ž>”L]>•¦>˜Q¤>šà >›’>˜ø²>“bJ>·l>Œ5>I¨>“­r>”¬G>_ ->†ûn>vHÇ>c¡–>\~Ç>^ï>dZ0>jØä>pÐù>w>€Ä¤>ˆ»>”±> >‰ôä>σ>xd&>xP>ƒh ->)Ì> ·>¦£>«b8>¯É>±ôž>² Ð>¯'µ>¨Ó[>¥BF>¨7>®yY>´Ž>¹)º>»A>·wV>¬4>ÜÖ>• ->”Vè>•¡¥>’/>‹¥>‰¬>`Ì>”òú>›øæ>¡jü>¤™3>£’ö>zÆ>”Á+>;g>‰Œe>‹>‘5ö>—ÆÊ>šÆë>šc”>™\¤>˜è>“C1>ˆi°>súä>`H[>e³>€]¡>fU>™¿>™8>’aL>ˆÊS>)I>B>‰#=>“;§>š@>£ø>›¤p>‘{3>‚æ>rßf>u^–>ƒd!>‹”æ>Œév>†Š£>yÌ+>kEu>hÕƒ>t{$>„þÈ>vÊ>˜D>—ûz>Ž†Ó>zŽ5>P0>,¥„>#‘o><Ç¿>hãˆ>‡>‘ú×>–Š´>›+]>¡ÂÌ>§>>©7ù>¤œ<>˜ÈÖ>†åL>dŠi>A$ >3ú¢>GÏX>s_ô>»*>ðœ>£L> ­â>˜;=>ŒDŽ> C>v'P>uþ…>u÷ >h?µ>OüÈ>BÞg>RÄ@>{ÒÜ>•L>¦fq>­z^>ª°->ž§†>Œ!5>w3>lÂK>vŠY>}‚>uò¶>pH>~èª>Ž¼p>™ø#>™‘«>“Fy>”Ì>Ÿ¹ó>¬ ->®*c>¥<>˜¬>‹ï>‚׎>ƒÛ¹>&ƒ>Ÿ¬±>®: >¶£Ú>¹r/>ºE«>º²è>·¡>>¯Jï>¦>¡R>> û¯>¡¶Ã> Î9>«>š\>˜:°>˜Þ¸>œsD>¢ýï>©Ã>¬ n>¨¿¸>¢!·>œb<>š½½>ñh>¤‡s>¬É¶>µ…>¼î>À·>¿êé>»ªŒ>µÄS>°>¬`}>«r+>«É|>¬€ø>¯„*>¶¨ç>ÀnÔ>É[[>ÍÔY>ËX>ÀÈa>²Ó÷>¨öî>©Ø¯>³§q>½vŸ>ÁK>¿VW>¼+!>¸TÜ>¯Á±>ŸË}>Þ>‚0Þ>¦K>„M§>Ô°>šÔî>¨2H>´we>¿áü>È{>Ì0W>Ì U>Èe>¿bX>³EÃ>¬js>°ïc>½t÷>ÈQª>Êuê>Ä.Æ>ºG€>°‰˜>§„:>Ÿ-ô>šgþ>œžï>¤ru>¬}Ñ>°æ>±ª€>±'½>±ï<>´Œ¸>·¹ê>ºèˆ>¾]>Àçð>ÀœÕ>¼èY>µŸd>«>Ÿ›ê>–F·>‘R•>’‡ >™†h>¢P>ª„>± Ø>·8H>·Š»>±{à>«/…>¬ ê>µõ>Š>ÎÄÀ>ÒÔ>˹\>½ìa>±-Ô>«1õ>¬d0>¯{¬>¯ÃÍ>¬ÚÚ>¦ ;>›pm>“Š->–÷>¥:ž>·}>Ä;)>ɯ–>ÌQ>Ï’÷>ÒÒ/>Ò+Ø>ÊGp>¾0>µ\º>´Lq>¸½­>½Rm>½[¾>¸ªç>³}p>°d>¬o>§Xq>¥Ï€>«@Ø>¶’×>Âm>>ÉØ:>Ë º>Æ™>¾\Ë>µ‘ä>¯>»>ªÁM>¤lN>›³¿>”Øb>’ÔR>–”>Ÿ§Z>®Š>»Á>Á±Ô>ÂÕ>¿H=>¼ë>½ŒÑ>Á“°>Æb<>Éa”>Ë>Í|>ÐJL>Õ &>ÙoÍ>ÙÚö>Ö}ª>Ô_>Õx">ØÃÕ>Ú¥>Ú#>Ø4>ÕuH>ÑÆÊ>ÏM>Ð&>Òbv>Ò*L>ÎlÍ>É@í>Å}©>ÅèÄ>Ì>Ôîh>Ùå½>ؤÏ>Ôiá>Ñ >χÈ>Ï9›>Ña[>×õ®>Ý—.>×JÑ>ÂÈ>¬;Ñ>£¬‘>ª>³³Ç>³]>«ÛÈ>§B‘>ªeF>±)È>·`3>»Ø³>½ºI>½ÆÝ>¿2°>Ã6R>Ç*>ÇŸ>ÁœV>³{w>£¿>ŸtÒ>¨†Í>°'²>©=»>˜Êè>?_>ŒYT>’6è>›>¦¬Ž>¶¦>Èbw>ÔM>Ö»©>Õ2>Õƒï>Øç>Ý<>ã¡y>ëJ4>òwÈ>÷¼>øœ“>ñÞý>ä7^>ÖÏû>ÐYî>Ïá¼>щ>ÔÚ,>ؘx>Õç5>É\&>»BP>¶è’>½Rv>Å>ÆRå>Äv»>ÈÕd>Ô²o>ß[²>Þ¾i>ÏT#>¹‚#>­Ø >µƒ?>Éoi>ÜJ>åô¯>å[<>áÚ>ætÐ>ô®?ÕÊ?k>ÿ™’>ój‰>Þ7š>Å0a>·H0>ºšæ>ÄMÙ>ÈÚ>ȹ>Êâ>аA>Ú(>çÕD>ôÙq>û Ú>÷Aƒ>ì5­>ß+&>ÔFã>Í\'>ÊŠ>ÊÉ,>ʳû>È^V>Ç€¸>ËÉ>Ñ æ>×ÐÞ>ße>çX]>íVû>ïës>ðåÚ>òõ>>öW>úH>ü×Å>üÚ×>úâN>øŸ«>õË>ñ¹>î\C>ï É>óˆ>ö‚:>ôdÙ>íĆ>äu">ÝÕ>Þƒ#>鼯>öøè>ý"u>üÌ>ú¸E>ú€¢>ö ã>ít>äúÚ>ß=r>Ûµ†>Ýýf>åfM>ëWE>î:>ïÃD>í4>ä·>×\­>ν>Ð>Ý->íÁ6>ù ý>ý°Ô>üo>÷ÿ.>öo>ù’š>ý¢>>ý4>ü›©?ÎÚ?{†? šŒ? ì.? Ž„?]›>ìà >×7>ÉxE>ÆE¦>Éûr>ÍÉ>Ï ¦>ÒUp>Û\ò>çÜú>õ#¿?%ï? 4Ÿ? àÛ? å±?(š?œª>üvÓ>ã[>Ä\b>­›Ë>¥Óë>®–W>Å5C>ߤo>ô1'>ýr¯>÷>è î>á1µ>äå³>æ Ç>ß“ ->Õ(Û>Åÿ¿>°éº>œÄ(>“˜m>—W<>¡òH>±Ö>Äô>ט÷>äáï>éºX>åµ™>Û¨>Р[>ÆY>»ßÛ>´Rð>®Û…>£nÒ>•¸‡>–ÌX>­Ô>ʦÙ>ߺ)>ëÀo>ö‘‹?A‡?Ia>ï#d>Ñ,>¹ª#>´[>½¤=>Ê·$>Õ¿Â>Üñ>ÞŸG>â²Y>æÞþ>ãõN>Þ?>àÖ²>èÞì>éóÿ>å@¿>ç†6>ò»g>û”W>ùôŽ>ñí>êûŒ>é W>évs>ìg>óë>þ ¹?@p?b??[½?0Õ>öÛQ>ã¤>Ö%ƒ>ÒÊ£>ÒØ'>Ò¬•>Ôøü>Ù—O>ÚÆÜ>Õùà>Ð1c>Ïlé>ÑÖ>Î* >Áßÿ>¸£P>¾tx>Ñ–ç>æ@U>ôú°>ÿB„?àÕ?³>üѸ>îÂ’>âÌ(>á1N>ê>ôý¬>ù¯>óp×>å®Æ>Õ1X>Èýv>Ã,ï>Ä-P>Í$z>ÖU¸>ÒÛ>½é¿>ªã›>«þ ->½J¡>ÇßÒ>¾Šñ>ªýn>ž†à>Ÿìþ>©â¡>´úÙ>¾Ä›>Ÿ>Äž>>¸ñÊ>©ô&> ìÕ> ¬>§/l>°ˆè>µøƒ>´Pq>¯’>¬¾>­Jò>¸ >ÉÈ$>Øz´>ßÙ>Þ¯¢>Ü&_>ÜÙÚ>ßL>Û•>ш±>Éǵ>ÌŒ˜>ÖaÁ>Ýñb>Þ‹™>Ø܉>п$>Ëã>Æ+>ºãÅ>«BÈ>¦å>´„Š>Îr8>â÷™>éa¹>åãV>áÓ>ß›>à?w>ß)>Ú >ͧ>»·–>«0ª>¥×æ>°¨¦>Äð¶>ÔªZ>Ö-™>Êpý>¼|ö>¹Ë>À›->˜Ä>ºf4>µ5>¾>˯>Ë–{>Âu >¿!I>½Ô>Ĥ >Éi«>ت}>ëð>óÂî>ïÕ>ä<(>ÜÈ>ßÅü>éà¿>î@Š>ê:>æO~>è*>ëôd>ì·Ò>ì”Ã>í8>çÓ>ÚS0>ÕMI>Þœ6>ì:°>ó–D>öŒü>üøN?Í;?A:>ö¤¬>ð/Á>í¼æ>ì'Ô>êüì>çd^>Þ{g>Ò/Æ>É3Ó>ÈMŸ>Ì7>ÎÜî>ÊÛÛ>½å_>ª’2>“M->u,Ç>HYµ>!׉>ç=ǵ7=Ÿ=Œôj=–Â)=¼ûÀ=û[>&:,>U;€>‚XØ>•¼È>£"V>­˜>¶•Q>½«6>Çл>Ù”>èÉ€>ì“ >éÖ€>ìÆj>õ§v>úA>õ°|>ôv>ÿŸ@?ƒk?lb>ý‡Ú>÷q>ýRá?ù'?ùe>ìe›>Ï7Ð>µ6>Ÿ™r>‡÷–>Y¸Â>#y¡=ï£t=À£b=Æ>U=ýÑD>+Ìy>a>Œ"(>¨&,>Å9f>àjÁ>õ,E?}3? -É?œ§?Î?ˆœ?~ú?iè? -d?e?Ó¤? }7?"1‡?%%]?&?&Xã?)’À?.žÉ?0Ä„?-dU?'a?!ÎE?˜?Ýä?ˆ©?%²t?-‹•?2sâ?6St?7‹H?1Ú?%ñ?©œ?#Ô3?.;?4èK?7rj?8‚1?8D*?6Õu?6?y?7šL?:R]?;»?:%º?8Áï?:6?;;v?:$¬?8¾Ï?8D?6XL?4[ß?7_??Y‡?EôB?GX??BPç?7Ä?-ã“?*ñ?+ &?.š¯?4}»?<÷.?G˜©?Q^s?U¬?R^¶?J¶W?Fì?G6$?G&¨?>'â?/¢?&Á&?.HÞ?=In?F¹§?JLŽ?LŽ?M{Ê?JÁÒ?Fa0?B¥´?@è¤?@ñ°?@ Á?>º@?AXQ?Hî‡?O~?Mg ?A}™?5–?4º?9|µ?<«W??¡Ô?H:ÿ?Q»?RN%?Iê×?Cø|?Fõ–?KVî?H|D?=ò°?0¿?)¸?,È,?9ŠG?G‚4?Oÿ[?Oé?IÒý?Cïv?Bøõ?H@·?Qáô?[á$?a™é?aVÜ?]†B?Y‘í?X½Ó?[¹?Z"&?S O?Lš?L&D?Mø‚?JK?;äÿ?)[¶?"'?,«?=‚?JSG?QZÁ?T:þ?Sþ?Pix?JÀ¢?G¾ƒ?IÏJ?Nî ?T3?VóO?X´¥?Z‹Æ?XÉ-?QšÉ?K¾?L+g?MÞ³?M7ô?MfÌ?Pî&?UœÕ?Wu?SØ=?N7ï?J?Jª€¬??ù#??ô"?@êE?E¡˜?L°–?Rl÷?S†‘?R®?RpU?TDA?T”q?Q?H¨Ý?AUc?CX?K“¼?RÙ‡?Xc…?[µT?X¿o?O…×?Dð?6Š¡?&Ua?†.?)"•?@WÕ?OF?R‚´?PHÉ?Jéw?G€$?GO?Cå?=Ö¦?=ï"?Cª?GíI?M …?Q%??Oל?NG†?R#?T&˜?Mk|?BD2?:?8¿?:Œb?B˜Ü?KÁï?MøH?Hä‰?Eÿ?Ik?N´a?L ?CV?< ?;}@?C'‘?NìÜ?WKE?[á?[ƒ?U;à?M²9?J­?G—K?>¸™?6X?4Àä?4•Å?5lÇ?>­Ë?M%?Utÿ?RÈ?F‹¼?> ?? -n?Dœ&?HVœ?D%…?91?1¥I?07ì?,+Ý?#|¼?jM?&jª?3K ?:ÿí?:0s?6ßÕ?2U8?)/¬?ìÂ?eè? -ßÏ? co?Ò†? c?C?¬Ç?³X?ÂR?ö?fJ?ó? -|õ?ŠÈ?3Ô?*à?>ñV?Uúg?d}Ð?gï?e²v?`Šö?Yì3?PÞ,?B+e?3y¹?-ª…?5*?GÙ\?Y÷ç?aNg?_ƒÏ?^;?a)Ú?dÙg?g4˜?gÙ•?`Ü?O»÷?=m?.J$?#8\?(þr?>þh?O±²?U­,?[2Æ?_‡ë?_7 -?`0K?c ž?]NG?Lóþ?BM?H<À?S°€?Y’@?\´‘?^w³?ZÏ…?UË?YÒ?bÃb?h=ƒ?h?£?ijb?jl!?dÝ*?[ʧ?X¤?Yo?Yì)?Z?Y?ZpÉ?T£ü?Ixè?DQª?LÇ?Y: ?`¼ -?bs?b²9?`ÅQ?S1ö?=»›?3; ??\-¼?YœÈ?Wß?_¸Ž?m°|?w! ?y³¸?sŠ½?f'Ø?] ?^!¢?e/?pù?y?y?sŽ˜?qœ?t˜å?uÜ‹?rªÑ?oȦ?qÎ?uT»?tƒÅ?sr³?uU½?s´­?jÿj?cOÃ?hm?v_x?€ñ?‚œ ?€#:?t.Q?eœØ?]¿¡?b®à?o$˜?w—æ?yœd?{*þ?{¹ì?yç?z[?{:^?uv°?k>?h);?lýZ?q`ï?p;±?lš¾?i¢l?iÖÐ?pöm?yP?|£‚?|Gn?z–?vƒ?q·?qÌN?wð›?€«›?…r¾?ˆTŸ?ˆB_?‡€?ˆá?‰0?‡KH?ƒ®h?´l?|¥Ÿ?Uy?†¯?‰)?‰æ?‡Î{?‚Øë?}h?¨ ?„…U?†ü ?…·?‚CÚ?¥¤?ƒ„J?‡Y?Š7C?‰3›?†}=?‡Mî?‹À?À?ű?Žò?–?ŒºŒ?…K?ŽÀï?Ž6ý?Œ0?ŠNV?‰’æ?‰I!?ˆc?†¾?„õ?†ÖÒ?‰5?ˆ½ö?†W?„òú?„¶¯?ƒ?€^j?{`ÿ?y7ê?{šë?€ª?A¢?}¢Æ?tQô?rK?}=d?‡”3?5¦?õu?Œ§ú?‹Ê™?‹8??ˆ™g?„ÂD?ƒyê?„&Z?‚ä?~"Þ?|È}?‚RF?„Ã¥?ƒh#?š?€ÀÞ?„}?‰†L? -Ã?Ž%?Ž„²?ì ?‹# ?‡\?…Õ?‡ŸR?ŠÆÇ?ŒÆ?ŒÀ›?ŠIù?…š½?ƒ›K?‡‰?ŠÓ'?‹ÚO?‹¼:?‹oí?Š·?†ëð?ƒ¬?‚¸M?ƒ?ƒ'b?„%?…ÎF?‡¥]?‰WK?‰›f?ˆj?†£c?„Ù€?„oÈ?…éR?‡ñÃ?‰„?Š3ô?‰ìy?ˆG?…C¨?‚ý?ƒ ¤?…<á?‡Ëò?‰f ?Šu`?‹ y?Œ¹?Œ„‹?Š×P?ˆÙ?‡š©?‡ã*?ˆ8¹?‡€O?‡3w?‡KT?‡æ¬?‰´›?‹MK?‹^¤?ŠP?ˆ¸ô?‡Å ?ˆ1I?ˆö?†|S?†B6?‡‰?‡{à?†¶Í?†ÜŠ?†•é?…?w?„_î?„ôh?†¦“?ˆ³Ô?‰´5?‰š?‡¹î?…‚?‚²ï?Ž?‚ég?„òy?…@ø?ƒòœ?‚Çu?NÉ?~jÖ?|3Ì?~º˜?ƒ’c?ˆ/‰?Š(}?‰o»?‡›9?†€8?†?ƒËs?|ÉB?sŸ]?t‚Ý?{Â?›‘?„t?„¤Ç?„wJ?…%²?†Ô?„áÿ?¥a?|òt?yV?w÷²?{Gð?€˜U?‚eÖ?‚h:?Þ'?îÆ?‚+h?¡ ?[c?‚±f?„½Y?†R¼?†üõ?†f?ƒËÅ?‚5Œ?‚{Ü?‚~v?€×t?%?€Æ?§B?€+"?zÌ&?xž´?|ü?ªx?„¢B?„ßœ?ƒ…µ?ƒ4$?„Ðä?†?‡D?‡E?†£n?†Ç?†:¶?‡ˆ ?ˆgê?‡NÒ?„Ö·?ƒeÎ?ƒé‚?„‰Þ?„_m?„+?„c?„éÒ?„šx?„Yæ?…öÆ?‡…Ë?‡3N?†•Ž?‡Ši?‰#õ?‰‰®?‰Pa?‰ËA?Š}?ŠãE?‹9K?‹d?Š •?ˆ¡{?‡§"?‡¡ô?‡Úû?ˆM;?‰NÈ?Š#â?ˆñ¤?…€â?‚¬ ?‚¾´?…Ë?‡à[?Šg?‹ê]?.?ŒŸ?ŠßÄ?ŠñÔ?<Ú?"j?Ÿ|?%¶?z?‹.?ŠC?‰«?ˆÙê?ˆ“s?‡ý;?…Ê?„æ'?…í–?‡‡?ˆž*?Š-?‹'—?Œ€?UA?Œþˆ?‹ O?ˆÔ?ˆIU?Šf¸?Œ›¯?,–?‹Ðy?ŠT?‰×©?Šó?‹ì{?Œ?z?‹í…?Œ(¾?=?Ž ž?Ž,%?Ž/?Žoˆ?Ž¹?ŽŽž?è¹?Œ¾Z?Šo?‡ë?‰2Ð?‹ÐÇ?ŒÅï?Œ-?‹j^?Šõv?Š¢5?‹2·?Œ•«?K? ?Œ`)?Šþø?‰P?ˆâ¸?‰øõ?Šù?‹ï¦?S¦?¡?‹æ¡?‰„ú?‰C?ŠØ6?‹êÑ?‹ßy?‰¦˜?†$u?†Ÿ?ˆW?…±?r~S?O]T?EÃa?aP?|­Ã?ƒb?…Mš?‡1¶?ˆžÐ?‡}Â?‚çÎ?€&Ì?‚íô?†€â?‡k;?‡ ‚?†hZ?†é?ˆ§i?ˆ5}?†‘?†t9?†v%?…Öû?…«6?…«?„J™?¤?æ'?‚ÏÊ?ˆ¨??ŒÜ7?Ž©?Žý)?ÿ¾?‹N/?ˆÜ?ˆë¡?ˆÉ?‡N?ƒE?„#Õ?ƒƒ?‚A?}¨Õ?u‹(?t¹Ä?wvr?zßÍ?€ûj?ƒ?„yô?„Ìú?…Ž$?†=¯?…éØ?„Ê4?‚—6?}*Ã?v??vûä?xÕl?vº:?viã?ymJ?|ô?}ÄH?€'Ì?Ép?¹Ë?|¿„?uw@?r&m?t–7?t?p?à?u’­?|KÎ?|ã'?|ú?~3?|âÃ?tžü?q9?vS?}=r?Ý+?„)Š?„æ?…é?„ö©?ƒ›Ú?‚¹î?á:?w\´?`ê{?SÂ?Z¦?h ë?fÊ?ZL$?a›?wOÞ?‚¼)?„ó?…²e?…˜Ã?ƒÇÕ?yÖÓ?dë?`'‡?q­a?.ä?€ ê?~!º?|ßä?sÁÃ?mUµ?q_â?u~Œ?yþ&?}âU?\¨?€Ò?€òä?~á?y®r?qIÅ?m§×?pŒÕ?pFI?q¥è?y/?Uß?„€§?ƒDÿ?}‚f?yM©?~å ?ƒF:?…Xê?†C?…2?‚»?uFÙ?e@œ?eçg?uÍe?€‚\?‚Nø?€æX?}P#?~Q+?ÑO?„Lî?….)?…#Ð?…Ñ7?‡6)?‡¹î?‡ª?„¡M?Ñþ?{q£?z‹?wR¨?zC¿?¸³?eõ?,0?‚ÆÑ?†*K?‡A?…‚?€W†?tÔà?mÊ5?k;±?n±?t»2?pH?e.?l–ç?yö×?|¾[?}Õ^?€O?ƒ^Ñ?†Cþ?†.>?ƒ¦?€ˆ?} R?ö´?„£#?‡h¥?‡X­?‡IÞ?‡ÏÜ?‡¹?‡,Æ?†l?„;Û?$)?y*?|Ìß?€ôh?0?ûÙ?„áÿ?†`?„xh?ƒ#j?„îÌ?‡Kg?ˆ"Ò?ˆ%?‡r ?…´D?‚œŒ?ÕÔ?„ ®?…H?„¬§?ƒ.³?D?Þ¿?~ì[?s€u?fú/?pË?€S¿?¿[?^Z?ƒFq?ƒÒø?‚­;?‚e\?Çv?y|˜?~ƒj?ƒÌ÷?„oÛ?‚Rc?F#?€Ÿ3?€ƒ4?‚°,?„”?„„p?… î?†öÓ?‡âž?ˆë?ˆ'\?‡bÜ?…eÖ?ƒhg?‚Œ?@¶?Þf?‚)ì?€u?yP|?u½¹?}Ú?„š?†„Ð?‡ X?†¹Ü?…¸ü?ƒ¡!?‚ ¬?–ë?‚RÔ?„´Y?†‘?…ǯ?„Ø5?ƒåî?ƒU?K€?¡9?}‡Á?xÝ?v ò?~f5?‚ºö?ƒ¨?‚á@?~HÉ?uø?v…a?~‹ù?†ø?zðw?~ ü?‚Ú?ƒ]0?‚#?‚­’?ƒ»d?ƒ/?‚Þš?ƒ‹ ?ƒ ?€|Ç?~ï”?ìk?ƒ!?~ÅW?x‰n?}¤þ?ñÄ?yÈU?uó ?{:o?‚Ï?„ê¼?…Â9?…G?…?ƒåa?€?‰?vM¬?uqG?€„?„ãA?…ì?…0M?®£?wõ„?wD?`a?„À@?„¨&?ƒ"’?3-?"q?‚Ä–?ƒy›?ƒõ?„‡G?„lZ?„d?ƒ^¤?‚#}?&Ñ?v÷M?vŸè?}î?€LØ?€»å?X‚?‚žà?ƒñ‹?ƒ©è?‚•?‚h°?‚m/?‚µß?ƒ+q?ƒo?‚Ñ£?€‚?}?€‘?~â?}GÞ?{¡?x°ñ?zÂm?}د?}Á?y„(?s“(?mÆ8?n†Ô?sûž?zï?~g›?~ìJ?~ÓÏ?›?€d?€„Ÿ?€›Ë?€¹?€Z?†?~ˈ?äï?Íi?P£?€Iâ?€ëˆ?€áP?€‡²?€m"?€“Q?€“j?€tÉ?€,?€®_?€°?€‡?|È?€?~¼ë?{O?ypd?|v?€0Ó?€Ì!?€jL?~ÇÎ?|Ž6?}<^?€:Õ?(?7à?2U?„?€»Ú?€l±?€/5?€+ ?€–?€qˆ?0æ?}x?}¬3?~™\?~¯?_q?€/D?€\?×H?O«?€W:?#?|î?ß?;?ÉÌ?‚AÕ?‚1…?´†?ã?!¦?° ?‚õ?‚C¹?‚“ò?‚Ÿ5?‚4e?må?X@?‚E?‚ˆ»?‚£?‚™o?‚œp?‚Êq?‚î°?‚ç?‚è0?‚áÛ?‚½e?‚¦Ô?‚h?‚¤/?‚ ¢?‚›ù?‚?‚tf?‚l®?‚Ê?‚_?¨Ò?^?²Â?Çu?€¯c?}L=?}v@?~‡9?{êP?|õè?€5³?€±Ž?€®X?AÔ?€Ë­?é ?€ÌÕ?Þ:?‚.y?‚)h?‚5?‚³?‚?÷Æ?‡ß?6‡?º?€_¼?Óó?Õh?~O²?uC˜?g•`?jÖ"?u´?w'°?oy?lŒ)?uÀ?y×÷?|XI?Y?€wg?€‰E?€, ?ô?ƒ—?~¬É?~¥?}3¢?zOm?yd4?zZ®?{F!?|”^?}Lá?|#-?{÷g?}ÄR?~ä?}ý–?|X—?{ár?}K-?}\×?|Cb?|ÁŸ?|ë®?{åŽ?z*§?x¹˜?zd?{BD?zþe?yÆT?w¬x?xIŽ?z!G?ycô?y$ò?x¼w?uâv?v‹Ã?z? -?|?|RÀ?{Ù?z©‰?y…‹?yÐr?z¾?{6œ?{Åb?| ?zDÀ?waâ?vC?x$‘?yÙj?z—Ç?yy ?wn×?wÕà?y[X?yÊ,?y” ?x¬€?x©·?y̶?zRÅ?yÌL?yC½?yk,?yNÎ?wχ?v‹?vë ?v?s>?s”?v?vÄJ?uÚ}?uà¢?uÒ›?uÔ¹?uºÄ?sÞ™?rÕh?róG?s/²?tì"?u¯T?vSÞ?w|‰?wñ?wÃ’?w|c?wb?wG¸?w:ï?v¯0?vhˆ?v±Þ?wNm?wz?wƒ|?w[b?vå`?v¼o?vw¾?v`?ul­?tÒ:?uš?vP6?vÛ?u\¯?sœR?oAå?mMG?rdž?v`ˆ?ww?vÈå?vÁ\?vßø?v”¦?uv§?síˆ?sõ`?s¦?r·Æ?r_E?r}µ?sÜ?tœ?rÀ#?r{u?s—¢?t‰a?uOˆ?umÿ?utÞ?ucQ?r?kBU?l¸'?s&?syª?p¯?qoÊ?swh?tf?tûM?u?tAÄ?t;Q?s.œ?o$Á?iëÀ?l½ˆ?rC·?r×\?r:)?rpÀ?sË}?t‰Ž?t/É?oë?c§þ?]á¬?h¦ -?m¦æ?jv…?mü?r˜”?sX6?r~Á?qŒ‡?pºQ?pg$?qì›?rBù?qÌî?q›?q‹I?nÓ?e>Ü?c°Ì?j`?n.Ù?n;B?j<+?i -?mBÔ?mf?mæt?oñ¢?p›Â?pÂG?oÇt?qô?s!L?s|?r]œ?pÙ?oƒ‡?iîÜ?c)¡?i:É?pƯ?r•Û?rI,?o§·?l/Ô?m• ?q¼?r!ƒ?qöí?qÛÅ?qªü?ql?otÆ?jL¢?i Z?l'í?m'Ä?ja€?i'i?læ@?oO?o?ohx?nÐr?kðò?dëà?bæK?hHæ?mD®?n¦Ç?mY?kÔQ?jqj?j(?i+á?fË=?csO?egÒ?jÌ?kXß?e7b?_T0?_è?`ø?`Ñ ?bÿ×?gP?iuã?j:j?gem?gØ?k?kV -?iÍu?j¹?kmm?h5?_ŒÜ?Xì¸?X'…?YJŠ?_t?eÚi?hÛ@?i×?i€ü?h'Ñ?f-?e6Ó?fÒ?e»Î?cHä?`6~?`Õ?_'*?^I?c÷a?fÿ_?hF}?iW™?gÌÃ?gDÌ?g‹K?dÃ?bÅ?bº†?`ð¿?cã_?f¦?eDõ?g8?i͘?hçñ?hj†?i+ª?j,9?ja­?eºÃ?_¦F?az?g k?j ë?jzA?hx ?gê?häÅ?j0/?jªÔ?jú¶?kpO?jØ?g+?gH?e¨Ó?c³¢?fËÓ?h¤1?hçz?i¼­?j??jIæ?jŸ?j\Ã?kNó?l Ò?kþ·?kuØ?jÊS?j?o?j1N?jσ?k"m?kO_?kYs?k!Ñ?j{¥?hQ·?bÃ5?bq™?h§—?jGi?d:H?]Ú?c Ÿ?j„˜?k\ô?i…4?f›Ã?fž.?f#0?dÈH?g˜Y?id?ivÿ?hÿZ?fNI?a–s?càß?i•l?kŽK?k„X?iÒÓ?dYÁ?`QW?dM¾?hÌN?jU€?g–•?a|+?cCq?iOä?j¶â?j˜Ž?jk¢?h€$?bž˜?`n?f Ð?h¹®?fªÃ?eÎ?g†Y?h¹#?d.ÿ?\°?_?fÕ§?hDg?gz±?e“å?bÇy?bðÆ?bÅ*?b}‚?f]¨?gA?dáZ?`cf?`7?d½8?g>³?gy=?eïn?bÓ[?^¼?W`+?R‚$?UoM?Z_Ç?^«?d(ú?fø??gîÁ?h@y?g»Æ?g N?gÛó?g=?e€ˆ?bB™?`?aÐ?cp?f’Õ?fðG?f’¶?fÅý?f©h?g)—?g?eÌ?eE_?eùI?fpÅ?fåb?gbr?g&_?e†ó?c´I?akõ?^jÞ?a ?d¶?dϵ?c•&?c­?bÀ'?bÈÏ?agq?Y?9? n?5þõ?Yê ?bXÔ?bF]?b&3?`SF?\[?\œ†?b'°?e#?d·?bºm?c\ó?d ê?bç?c_?d¯O?d†]?_‘V?X¤Ô?\G~?bšó?cT?c~…?d1?cº“?ažØ?az?aR?_û?_.?bOá?c»?bïX?c‰º?c×¥?cï?cÜf?cwç?bq}?a«/?bH?bä¯?béÀ?b`y?aCÆ?`ÒØ?aþ3?bïÂ?bûz?bu”?_ô«?[¾w?]‚ð?`ì?a×Ô?b|š?b¯u?b…D?b˜?b]‹?bWH?bAZ?a„4?_%ƒ?[ÝD?]Ù³?`§W?aDµ?a«L?a¥ã?a(?`º¬?_A?Z¿?YLI?^G–?`Ú?`Ⱥ?`Îú?aC?aLð?`ûÊ?`Ä%?`t?`?`HÝ?_¶k?_“ý?_²¢?_)Ú?]ÃX?]Ô?^Æl?^úÚ?^Y¶?]Ì£?]s6?]S?\O2?Y£?Zà?]­Z?\Ùê?[Öƒ?]2‹?];Æ?]‘£?^Kš?^9µ?]—\?]’^?^?]V?[Á1?[6?Zí•?Zt¾?\DÕ?\ép?Z6¾?W‹?Yb?[^©?\pÒ?[à}?[(}?]½?]æ$?]·â?]hç?[ô©?Yd/?Y¢?\ ÷?X¯³?TÜÄ?TÐ_?X€:?Z©y?Yv*?ZfÅ?Y¯?VÞŠ?Xd?Z>m?ZIx?[€?ZËÒ?Yµ¬?YæŸ?Z?YqA?Xõ?Y—;?X–{?YXÛ?[’\?[nN?Y§?YJd?[§°?[¶?W2Ñ?O| ?R.?X”ï?YnW?Y¢&?Zø?Y¦?W®S?T'í?Q2K?RÂ?Vh?X[?Y—?Z7?Y/"?Wv¼?Pë?M¨c?Q@—?S‡?R‚m?Tþ?XMà?ZW?YáÉ?Y™»?Y?W‡?W/?WAú?Wù°?Y2d?WåÇ?Tc‚?TÍ?V?Tù?U©?XÎà?Z W?YÝø?Xø?WJ¤?VwÔ?V%õ?V¾?W™?XT\?V¯?Uݸ?WQ?VÜa?TŸW?RÄ‚?P¿A?QõK?SÙ“?T˜ì?T¸D?Tõâ?RdD?QØn?S™!?T ä?SÀK?R½Â?Rç¤?T¸?Säu?S¤H?TH±?TP?Q‰Ñ?Nüš?P¥†?RÑ~?Qöx?P:Ñ?Pò(?PÆ©?QJ?Ráv?SFY?Q›Ú?Oëd?R*º?SÁÏ?SþP?SM?Qƒ\?RG‘?RœV?P!c?KM!?Hyë?L.?Pkí?Rr÷?R/±?QU>?PŠg?Qþ?Q+Ÿ?PU’?QZÊ?QÓ¶?N߃?Mmû?Oõ=?Oíu?Mlñ?NH*?Oýã?Oí?OŸÃ?P7;?Nw©?I\}?J’Ÿ?NäY?Põ?MçK?L~Z?M™?M‡C?N-Å?PQÆ?Qsw?Q -’?P†?N—Y?M]Ü?Oï¾?R‡h?Qâæ?PNÁ?P=‘?P~a?P ?N^ó?Nge?PˆW?Où+?Mèû?M\ç?MRW?M†X?LÊ¥?Kíã?M5Â?N‘“?NØÉ?Nkk?N{#?NH^?Mw%?Mzæ?Oc ?N÷º?Kýð?K?w?Lžh?L?I?L’ ?Mù“?N|^?N‰?O \?Nß-?Ns™?Nýg?O}?NÛ?LÑÄ?Kö?J@«?H?ü?IRé?Jj?JŠ?K ?J¯w?I¢B?K€ ?M¨.?MÓ?P4æ?N&$?J¼?K-€?IÙ?D`…?Gîg?KSÑ?H”?CiÔ?DH6?EåÝ?C´¹?C“?GÖš?IÀ‹?KA?Hæ›?Gb,?Jû¾?GkK?@Ê)?D¼K?IËê?Hëj?E_Ñ?E—3?GS‚?G™?Dè¶?@œ??²"?Dñ5?Gº?H@?K`T?L‘°?JWq?FÁà?G/ª?E›»?D -q?FÈ,?EŸM?F¿?J0ú?Hœ ?Câ?EÍ9?H¬?I%g?J/p?HP¿?Af¬?@Õ?E‹?Gè?J]?Jx¥?Iœ?Gçï?Fyó?FUc?G5Ü?G°?F]?B ?@Û¡?BÙ??ó?7pÃ?9âj?<œt?B Q?Fxô?E¬¹?B”‰??øl?B™?E¬?Bµ?<Ó?;úÆ?D?@ç¶?@[‹??Öü?AÑt?C{¤?Eæ`?EÊE?D¹.?EÎA?E;?Cš±?Db?Dò?CÓÜ?AW·??*¾?<?=Fñ?BÉ?Cö?@ä—??kW?B Ò?D*ß?Bœ?Az©?CÆ?Bû'?B÷ ?D -?D¬©?C­±?A…`?@cF?=É?=¤?=4?>ºf??Ë??}Ï?A?B[Ö?@xÇ?>"?@—ú?@õ=?>Çs?=S›?9êG?:$?=nÓ?:Ã¥?:æ ?> ó?>·Ú?<% ?:ù?=&ª??ÉÀ?@Å8?@ç{?@õP?AOA?A¡?A,’?@‡Ü??BÚ??p`??u?=lÃ??t?A €?A†Ò?Aˆ?A-§?ACw?@ȳ?@> -?>}‰?=}¼?@bO?Axœ?A?@¸H?@ø??À°?@xn?@’u?@i\??=Ô?=ó3?ã?>¢Y?=,Ë?9h?;û?=I„?=!b??*l??ò?=´ ?9k…?9ɼ?= ?>÷L?=°Å?;•?;­~?=ÿç??a?>ôà?=á?=Åî?>Î?>³¬?=Œ&?>~?>×î?=þº?ì?:¤?5Ö5?3z?1e?/¦c?0¼&?/üs?,n3?4?8Ù?8Dõ?9?9ä?;Q@?;-Ñ?8Û˜?6Û¶?9ƒ?9W½?7Ê+?8/%?7õÃ?8¹?9%;?9^Û?7V•?4y?5iÌ?9t?:c ?:Rz?:ú?6ýO?/±?.Év?2¯[?6«l?8E€?7½÷?6¡q?3ç?0U?1Éù?41ß?7Õ?8‘b?8$?8A?8% ?8¥?7s*?5]Ç?4áî?1ù+?.&?0*?5Ó?7#Ï?7Me?7›z?7n~?7DY?7Sµ?7ð?6Ð]?6óX?6‰ª?3ð£?2Wç?2¼[?4è?5¸?4^_?5dU?6Àg?65œ?4•?1Úë?4Ý¥?6+?5¶Ÿ?4܆?4JÊ?4Æò?5°·?6+?5Ûã?5U…?63?6?6T?6!Ÿ?5¶À?5¾Ý?6--?6O|?5¸‡?5eù?4n;?4(?3g|?1Gª?3o¨?4°ñ?4þ?5€?5lÆ?5³U?5˜X?5ø?4Ã?44]?4AG?3yå?2År?3êa?4zU?3ÞÑ?2Ö“?1¼T?1FC?25»?1@ý?1¬ø?2g?0Ø}?0„ô?0ý?/æk?0ïó?0y-?.Áë?.ìå?.±¥?,ûx?*ÿV?)eì?-«¿?0I“?,<;?+Ü??0,2?0ÿ?,A‚?*«?,f?-z„?,ôR?+p3?,)¯?+À?-Ö§?.ÒÙ?/Ú ?+ÍÂ?,Et?/Š?1!m?0$ò?-°D?/T€?.âÕ?-øÑ?,à?,vƒ?.JL?.ž?./å?, 1?&Iá?#Aa?(„?+]t?*q¥?&O?)¦ÿ?+Î ?(‡§?*šl?-¡~?-"?+År?)@}?'5?'•B?%ãõ?'‘?*Ê -?*-?(vb?*¬?,‚U?+ž{?)m|?%t2?"_ ?$K®?(–a?*ÙÞ?+Á?,y?,ÄÂ?+Àž?*̶?*_ä?*“?'G ?(þ?'ÒŸ?'o?'¸Ò?',:?'H?'.·?&?&—?&ê¥?&iÖ?&¬š?'^?%ó‡?&®¦?&Ãe?&·†?'™Q?'x?&j ?& -]?%]?%CÝ?& D?&ºë?$ÖB?#½û?%“r?%¿í?&ô?&Ér?%yÒ?"Œ?$BÜ?%?%¯f?&Z?%ÜÈ?$äV?%xŒ?%óÔ?$l,?#pÝ? q? 8?"•‰?#œj?&o@?%ãÒ? !Ú?'m?"?! Y? 9 ?!¥ ?"|?!Æ,?">ï?#Á?"i?"ñ¶š?¡?Gv?£l?¯ ?å?•$?ù?»z?åï?…?³³?ëÌ?ÞB? è?…?æŠ?YÛ?s·?•í?ð?D1>Îå^>ª}õ>ì}Ž? ,'?Cú?ÖÁ?òõ?þµ?6Ä?Z?8?L¤?=?áæ?¸“?hq??Ë?o?ˆŸ?¦Æ?ÆR?zL?à¾?÷?;9?Ñ ?71?ú?? >?¢¯?U? ?°Î?©?J7?ãw?0z?¬p? -3?3O?Ë?¥p? Ÿ?9F?‘?Íw?-Ì? M?¥?A?F>?0T?ÿ1?L]?ìã?OØ?£?“Ñ?µ?~0?æÂ>Àñ>ȸ?»[?Þ?9ÿ?êä?¨é?”?•‘?‡X?ÀÊ?çØ?².?I˜? ’M?¥s?7?3?|ï?üì?mx?ˆ¹?ÔŒ?‰5?‰¼?&Ù?2 ?5q?ë•?áX?(L?^Ë?G>?Ì?Ü ?l¶?5 ?[Û?¹?ol?‘??÷µ?Æ?K>?áÿ?†’?À?ËC?‘'?ß²?¥ú?N?Fp?N?7o?ß™?àŽ?}Z?2„?C?¿·?É?±Œ? Õ?¤?N? ø?I™?t?`k? Åê?­S??Ì?v?t?z?ô ?‰ ?O³? m^?n? ô?–W?‹±? â?n? –Ï? ÊŸ? §ƒ? á¼? ïç? ‚Ç?$•?‰D?·~?a¨? q“? ñ ?ì0?R'?¹„?gÞ? -Ó)? |? |"? ±? ƒ‹? ¢%? ÚZ? <6? Ë?? oÛ? L? §? €? ãŠ? Ž—? —€? Ÿ? ²? ÉE? á[?›Ç? Éî? †¬? -žY? ›v? -NÉ?¥¦?„Ì?bÀ? «ï? Œx? e¨? è²? ¢? ³ø? 2¹?ò?dD?¡æ? ? _? 8T? 4B? ~? ·Ö? -ØÃ?c?úã? Y˜? -ƨ? ˆ?Y:?;–?ü? -°á? ÕÓ? ñT? -F•? “? ®°? ˆ?¸+?s…?ŸW? ±¬? £?’Û?­b>ý&J>óA;>ë¶Þ>ý°Z?²(?,?pƒ?JÄ?çr?Sè?Oä?¢;?/E?Ì?Û/? B=? m? Dš?±u?m?`? Ä?‘…?qû>ô&Ù>ùL?¡E?ÍA?Ö?Ê?ÛÜ?'>þ\Ñ?O?ßÓ?õŠ?‰ó>ô¾>ÿÒŽ?´>ûà?­z?©5??ƒûÛ?Aþ?/Q?ûÉ?YF?â?ÿu?¥Ð?$ ? -«?÷c?T§? é?­¤?»?’?u >ÿeP?¡?#?*?.o?œÿ?É/?>F?™9?XY?9”?&I>ÿ‘n>þÛC?ä? ?u?Å?Îs?–5?ÿ?FE?õŠ?˜Y?ÄE?CØ?`2?r—?º‘>ý›Ô>ö9È>óC¤>û³>ú}ÿ>øš}?ð6>ý•`>ô€ë>ã%Ô>Ú÷Û>ðþ”>üç>ù ë>ô˜û>ýZ>üéã>øÕÊ>ù†>ý¶>þµ>ø˳>õ²Ó>ö\<>÷7>ùt±>÷8½>ûýá?‘_?Kw?Fè?¾G?d3>ÿ7¡?2º? ¯?ßœ>ý¶>úƱ>ü̵>ÿ+_>û®î>ýòç?â? È>ÿ¡°>ýþfu>ýiI>þ·#>ÿ.>úi¡>û?o>þ >ürÂ>üÜt>þƒ?s>ÿr>û»P>ÿ•>ÿ`º?ð>ýuR>øG{>üóh>úŽÿ>ûGa>ý})>ù%>÷8>÷=(>øTe>ýv&>ýÉu>ûuT>ûFv>÷fZ>üD>ýõ™>ú\÷>ù#‹>ùïU>÷ÖÜ>÷q$>ù#í>ö8>÷Ï >ú¢‚>ùjE>÷ø>ô3*>ã³Ö>ì;*>ó*t>ëãS>á7>ñH²>÷V3>ôz>õ*O>øzz>ùøâ>öÎ÷>ðëÔ>ó D>ñ¢0>ê]Í>óŠ>ôô‹>ïhC>ìýÑ>ó5å>õpl>ñKÏ>ñåÒ>öQö>öîE>òö×>ïØ¿>õ.>õú@>óšb>ôI¶>õ*¼>ö?Û>õè©>ö.é>õvµ>ñ¬è>óF>÷’û>ö.[>òV>óÓË>övÛ>ô7>ò$>ñQ+>ô1 ->ò >ó¦Å>õ˜Ò>õò>ñ'u>ó=f>ö×^>òJM>ïï>ðžX>ó¬ð>ð!Å>íT`>ñf>ð>æ^G>к`>Ö)G>ç O>ë¬>îq_>ïÒp>ñú\>ðáJ>ï6j>ñt >ò<­>ëB…>êáM>ì½Ã>ð%.>ñæ>ñC>òaL>ñ?>ïÙ·>ñ›Œ>ò-à>ïÆõ>ïsB>í’'>쨅>å—Þ>çˆW>êúƒ>ïº>ò´ >òš·>ð±Ä>îØ>ãÒÃ>çÊr>êíý>èE.>ïÃD>îóá>çWÒ>衳>é¥@>í‰\>ïCÙ>íÏŽ>êkÇ>ç÷+>ê´>ê°b>éaÑ>ܯ;>äåN>ì)T>ë¬Õ>íÙÖ>ìêa>纻>æéK>ä&>çôú>æàü>é`ð>ìf>éG>äÂA>ä†>ç¨>ê™ð>ëÑ!>ëÌÊ>é>è<6>èÛn>ìþt>í‡>ìªa>ë¸>ë7Œ>ë6ˆ>è’x>ê7t>è‰?>çÌz>ê×F>è4â>âÛ¸>Ü¿u>ã4!>åÝ´>å¯k>á}ž>æ%ÿ>ê9„>êÑ“>êš>èÔ\>è®Ç>ãcˆ>åž>秕>åº>çI×>êgÚ>êÚ¯>èù§>æ˜Z>âø‡>ã-x>ßþ>ä°Î>èR!>çÛ >ä¨x>ä^s>äù1>è°>è8ß>ç¡>æWŸ>æ¾$>è!>独>çãÉ>æ X>å÷b>ä¼Î>åÖö>æcb>âËÈ>ãU>æ˯>ål>ä±+>åÌ#>æ¤Ð>ä•L>áô§>á/ß>áÓÇ>áûˆ>ß:0>ßÖŽ>ä½&>å}r>åR$>ã¾>ã€Ï>åÁ[>æ6<>ãOÀ>ãA>䛿>à÷>ÙIË>ÜÞ‡>ã,à>âú…>Ýh»>àO?>âTù>á„ý>ãDR>ás~>ܪK>Ûw ->àÙü>ä_,>âºX>à…%>á«j>àŒù>Ö4¨>ÜùŸ>ã$y>ãž>à§>Ý»£>àÉ7>á\í>Þø™>Þ~ß>àNc>ß>ß½>à-‰>à5>àô>à§p>à6S>àtÙ>ߨF>Þ Ú>ß ¦>ß’*>ßÄ>ÞÓ>ß ì>àg>Ý@*>Üù ->ÚÛ>Ýð>Ý´>ßF>ßÁÝ>Þm>ÞÜ$>߃Ã>ßMÜ>ÝËi>Ü÷>Þ6Ó>Ü( >Ü ™>ÛÛÏ>ÚGq>Ú9c>Õ%™>Ùez>Ú’æ>Ù@ì>Ó¾¯>ÀÖß>½ý{>Òf¦>Öáñ>Ö|ç>ÙÉü>ÚŠ>ÙÞ)>Ú{>Ùƒ,>Ü ->Ü°î>Û¸>Ús>Ú`o>Ù‹>×ß[>Ú³š>Û]—>ÛoÃ>Ûéê>Ü>Ü%Á>Û`Ž>Öä^>Ô[^>Ù„£>Ùhv>Ö¢ã>ØYð>ÚLÁ>Ùnæ>Ô¶>Ñý>Ø×>ÙºÀ>Ù³Ë>Ùf„>Ø–è>ÙPA>Ø©>ÕQ>Òæ‘>׬Ù>Ø”|>×3>ÔÕ>Ö¤Œ>Ù ý>Õ¼ò>Ñíº>ÕQ[>×@>Ö™©>ÕJ ->×ì[>×¾*>Öƒ>Ð>ÎÍ>Ò†ë>ÖO[>Ô+ >Óo>ÕøS>ÖY¼>Õl#>ÔyÂ>Õ+ö>Ô_h>Ö@C>Õp“>ÏÕ¿>Ðeç>Õ*ß>ÕÜW>ÔÕF>ÔÚ^>Õ“ª>Õiµ>Ô›z>Ó»¤>ÓÇ@>ÔHA>Ïê‰>Ðþã>Ôª¹>Ô¿Œ>ÔíC>ÔÔ@>Ô >ÓÇÊ>Ó=»>Òü5>ÓµÑ>Ó{2>Òªë>Ò-{>ÓÆÊ>ÓÎå>Ó`>Òý×>н¶>Ëq8>Ñ¿¾>Óˆs>Ò·ß>Ñv‡>ÐN:>Д*>Ñ¢>ÑL>Ðx­>Ï%+>Ñ¡Ã>Ñàw>Ñ‚>Ñ`>ÎÄk>Ŧ¾>Å^Œ>Ë>Ï|ø>ÐëÚ>Ï)>ÌÑ>ÊGL>Î2~>Οá>Ðœ>ΰ>Ï@²>ÏÖ]>φP>ίƒ>ÍEq>ΛÒ>É¥ª>É>ÎÎ'>Êî>ÊíB>΢>>ÎiN>Î’›>Í~9>Í%ë>Ì94>Ç’Å>ÌD×>ÍŸÔ>Ìô‘>Ë¥>ËÂÔ>ÍÄÀ>Íé‚>Ìøï>Íö>Ìñš>ÈÓ >Ç\>Ê&4>Í$>Ì°e>Ë›ò>Ìg>ËÃM>Ì)>Ìl>Ê)>Èàý>Ém¶>Ápš>¸£>¼uX>ÃÛ»>Ê…>ËTH>Ç=o>Ãå >É|­>ʬY>Ë­>ÊS¿>ÊEà>ÇÖt>È,>È¿>ÉV:>ȧÖ>Ƚ­>dž>Ä(>Ȩ;>Èõæ>Æ:>ÅÑ×>Çs >ƽ>Ƙà>Å]u>Ç[>Ǥy>ĺ ->Á¤V>ÄÝ#>ÇŸ >Çåk>ÃÕf>ÆéT>ȺH>È^>ÇÕ¢>Çëä>Ç"~>Äó >Æác>Çê¨>Ç»{>DzÂ>Æí„>Ä)>Äo>ň>Ãã¶>¾Z>¹M>Âl„>Æàé>ÆËî>ÆS£>Å -Û>ÅíÙ>À=ý>¸²ª>Áf >Å?h>Ë.>ĘF>ÄR(>Äô²>Å«„>Åmø>Àˆ+>¿Üd>ÃÎ>Á÷¦>Ä؆>Å&è>Å?>ÄWB>ÃÞ½>ü»>Ä1>ÃÒm>ÃD>ÂCq>¹óm>¿>ÃX;>ÂÞ€>Ã$¿>Âhì>—H>Âl§>¿ZY>°T_>¯ãj>ºÌ >¯‘Ñ>²©>¼8>ÁÃm>¿ÿ4>À³ã>¾¦Ò>µ=Z>¾Ì<>Áp¯>ÀÚ¤>¾xX>À;í>Á9j>¾wá>µ¥Ã>±ê¾>¼øl>ÀQ>ÀÝ2>À´Ô>¾î}>½³>¼Ll>¶É²>¸íÐ>µê¿>¾&À>¿eÏ>¾Ö=>¿O>¼vÊ>¼ð>¿$Å>¿<8>¿ ¼>¾–>ºþö>¶õÎ>´ŸS>»À«>¾{Ñ>½]ƒ>»|>½Ï>¼úô>½sH>½â>¸0M>²5A>»E+>¼†J>·¯´>±>º3“>±ð>³ A>ºèì>º¦Š>»w>¼Ï>»·Y>·£>»$}>¼‘A>¼¾ä>¼½‚>¼Á(>¼k5>¸pÎ>µ˜@>¹@Õ>¬lé>²ŒÞ>¹F3>º¹6>º…ù>¶íÜ>±cÅ>´Ö¼>¹½ >·Ô>·N¯>¶f8>¹Íû>º›>¹ª>¸wQ>¹ƒ>¸Ž7>¬î°>±‡Ó>·¯B>¸—>¶ƒ{>²,>²ñ">²!6>®ƒH>ž<à>™\">¬Š?>±Þ·>³È™>³ÄØ>®æ>°J>°Z!>´Ê>³v¦>¬›>¬Ð5>³7>³ÁX>³S>±¸”>¨u>>¬Cž>¯ƒ*>²EÎ>³Ó)>´€>²šç>°ÊË>²¹°>±[>±ºÌ>²¯\>²½>®Ï›>­x>«è>­Ò>°;:>³êÊ>±ž>¯fÅ>²¤ >²RÊ>¯&@>¯ìÉ>²={>°*@>¯o>²ìö>²*ë>­Ö>­ô¦>²h¿>²=[>°êQ>¯Qm>°8ä>±f>²„ø>¯®>®7{>±¬>±¨­>° Š>­]‹>±_{>°ÿ>°Í³>®ñ¦>°->°ˆ‡>¯È>¯½a>¯žB>¯Ü>©úN>¬öZ>®o>­¢½>«xŸ>¨“¸>«]z>°xJ>¯çC>¯ò×>©r!>¬ªç>¯DY>¯Vr>®Ýx>ª?f>«iê>°´”>°Nƒ>¯¨>­›Ž>¬ÁÓ>­îÀ>®âë>­“>©›o>£âo>¦&ˆ>­°B>¯)N>©§G>©w>©Z%>¬ m>­÷>®Ø&>«y—>©ê*>®N¢>­ÐŽ>­tû>­Pt>ª«>«8J>®~>­Z]>­Qù>¬æ‹>ªEZ>©>­3>§4>¢À³>¦ð|>ªm >§5B>¬Sì>­œÔ>¬ÑK>­,ø>«é‹>¨›J>¨Àm>¬»ð>ªýõ>¥sß>¥³Ê>¨zç>¦2¡>¤•+>¨Žc>ªP>ª2#>¨,Ê>§= >§ï>§¸>ªÖp>ªz1>ª[r>«Iv>£¥l>ŸÝ]>¤>¥Zz>¨É>©â >©^ž>¨É¹>¨J>§ ö>¤?l>¤µÞ>©Aö>©Êï>©câ>§r‡>§|„>žÔª>¤>§94>¡‚Ã> Í»>¢ÔË>¡Þâ>¡qÎ>¥—u>¥Q>¢zµ> ÿô>žL>£X3>¥h‘>£3+> àä>¦†û>¦ 0>£(>¥Å>¥Ð>§}r>¦Ÿë>£î¿> Î®>¥Ä>£Ó»>ŸØi>¡—>¦9–>§,R>¤”>¥ŒÅ>¦eå>¦© >¦ýN>¤Ì>>£š>¦˜ç>¥ë>£z(>£"*>£m>¦>¥¾¡>£ØÌ>¥gÿ>¥Ã >¢iÈ>¢d%>¥3$>¤«ž>¥N‡>¤oE>¡e>>¢Û>¢Jœ>£6ö>¢K¶>¤fO>¤¥>¢Åò>¡…>¢2Ð>¤»ä>¤Á9>£p>¡Â">Ÿ{G>¢¬>£6ÿ>£u/>¡ïæ>£œâ>£·>¢²\>¡î>¢_q>¢ÍÛ>Ÿ¨>¡:†>ž­>—ß >ž/>¢i>žº{>Ÿ’>Çæ>˜Â|>˜tP>ž¿ >Ÿ ¿>›XÖ> ÂÓ>¡·í>œW>šà÷>¡:> ¢A>šÖ>›Õ¦>ŸßU>Ÿ;>œ“,>œéŸ>›¼>št‡>’HT>ž;Á> L >›ºt>–ùS>›_Ž>S¸> Aß>žØ8>žÓ?>Ÿ‡x>˜Ñ>š¾J>j>ž¨Ã>eæ>ŸÜ>ŸÀ¢>žÏ>žfC>žXú>žæ?>žê¡>žî>œå¬>ž+[>½«>žY]>Ÿ>œü>œ–¸>ž>›ªî>”*>–˜P>‰²g>”îc>:ì>žÃ>#>œ|È>šf>™!>™‘°>—<…>˜s/>•r¬>›ÿn>œ…>œ¤O>œGŸ>›Ì>—&>˜îó>œ>›ž>—!Ñ>š(Í>›B>—>™t >šd<>‘0>”¼/>›y‚>šÉS>“;.>”áš>™¸¡>™óž>•ªS>šUü>š¦>™©¢>—¥9>“:C>˜¦|>›«>š2†>—YI>—¹‰>”Œ>¸v>Ž>`>—Æ>•h,>"i>íë>—]{>™5Ê>˜—ñ>˜»î>˜ñ >™\­>™T¬>™>™Ü>˜Y>—Ž/>˜?w>˜ìG>˜ÇG>—»ð>—ñ$>˜>˜ÀD>•pã=©' =Èk =æj5>®v>ž\>Ë>_ß> -¥=ùFÛ=ê_é=á‹Â=ÌÇ=§z>=€´F=XðB=jó¡=™€˜=ʲÂ=õep>Y>¨ª=ò f=Øì=ÂÏ|=°p=žÏ=– -i=¢>p=Å€{=ð÷8>ÿÌ> ó™>\=÷ºY=ç=ßñ =Ý -y=×x³=Ój=ØÐ|=æ=ï ¥=ðÖ=óɱ=ûé>¶¤=ü]=ï±D=æŽ=ëx}>ü>HZ>É>ÃP> ‚+=ëtb=Ñ]<=È3=Æÿ*=ÃQQ=¼`>=´¼ =¯§l=²UÒ=À‘©=Õ89=ãÈ`=åm=ß±=Ù1Ã=ÌÆû=± @=Š=TåÅ=IÀa=€ƒ‚=µƒO=ï&Ç> ›>¹Ì>Âw>Çë>ó>(·¡>1¤>1üR>,Á.>'Ž>'ñ>-mÅ>2î>1)^>,:®>(//>%Ÿñ>ÅÔ>¹R>‘ú=îâÝ=Þv=ÙD=Ý™=ãÅš=éwj=òK>´Á>í°> >ÝÔ>J’>€>>´.>àŒ>”¢>ÿô>öê=ÿŠ‘=þÄ=ùöÕ=òö=ð¤¤=úpv> F> ™Â>õØ>œ²> §>%>*Á¶>0ù>1ç“>- ö>!øÏ>» > ß>›=ø†:=ùÀC>?O>é,>([—>8ð>@>ä>@.†>6=j>/Æj>*£>$ö>:ä> >lÖ>Þ=ñÙ=Ú<¸=ÉÜ=¾Æ“=¹s=¼5=Î"–=ì`>Œ>3 >Y³>‚é>ü!>ó>)i> ¢­>“<>-×|>E¦->RûH>RS>I•>?¼à>>®©>Fç ->PU>N‚»>>9->%Ok> ;Œ=÷z@=âªQ=Ø -Ã=Öò=Þ =îgm>p¡>)> ûß>aZ>Þo>&:>2`š>7´>.zï>Ǹ=ûÕí=ØfW=Ï.Ð=Û|&=ðùú>[> Ú§>ÆÚ>0f>A!i>E-,><'>/½[>(¶V>(e_>.1™>:“!>J<¢>Ua'>Vß>P:>E]³>7þ”>(ˆt>Üå> ë½>ua=ýBÁ=õ6à=í%=>‹>â>"«4>%Ýg>%gå>*Â>2º>8â«>7Íx>.Â>!×d>æR>Š>ç>gü> ‰$=ýŽ#=çð£=×ì=ÎXW=Ö6=ðøK> -E>âd>ß2> ø=ç õ=Â…ì=°…»=² x=Ã1Ð=Ù ==èü =ðÑj=új>a®> -«+>†>0>&²J>?¤¬>XÇ>fDB>a:>M®r>9?Ú>/˜ô>2G‹>9V~>;…$>5îG>,´l>&öƒ>+Wç>U'²>mÍ>~›}>„Òö>ˆ‚Ý>Šù>‹k%>‰·j>‡¼‡>†Ë3>… Ê>€J>tš>nšL>r>æ>{_&>¬Ä>ƒŒ>€÷™>w¦Á>jF@>_õp>^¦å>eú>k*œ>lÎ>jŠ«>c«¸>XSÞ>Mvy>G«ù>FðN>Jð>PaT>WªØ>\ÿE>a&ù>f³k>k#¥>gÇ=>[>LB>F3>O#2>fCu>‚x>ŒðJ>’o*>”í>• Ð>™q>œ^©>›>–AË>‘Ÿ7>’>ñ>–Ó>›¹š>ŸªI>¡ª½>žpF>”9ì>‡¦H>€,ü>~HE>{Ê>mÓ”>[Êy>Va>`àñ>q²ø>4d>„Þ>†Ä­>†Yi>©N>s[W>aÒõ>Tœ)>R.~>\÷³>ncµ>|$r>€áˆ>€Ÿ>|®œ>rïw>að>Lè©>@"‡>H§>bÆ>‹n>‡q'>†ÛÖ>€þ}>qÏ?>cÖ >aÓ5>nÅ>>€-_>…ñ¨>‡ìx>…¦c>zà€>cSž>RÝà>S×:>cø>s¥z>yìÛ>s½ñ>gè>ZÒ>Tžú>Xaq>evè>v%<>+>‚ãÜ>zXš>a#á>>ü{> ‰©>k>-n>Sáú>u#">ƒ é>…¸>ˆ0Æ>Œ¼Z>ȳ>Ùú>ŠŒê>y$~>QVç>(•> -!>è0>=ó>F%ˆ>nø‹>‚éQ>„á>€>t>r‰C>a -’>L°>8v>. û>+©Ü>'ì•> n> >45¿>Z'¥>Ò>‘QŒ>˜;Þ>•å“>Š·>nV9>J¸¾><¨Ö>DÓÉ>OLš>NÝH>M‡t>Z@Ÿ>rð—>ƒ`>„oƒ>€)Ê>€d>‡W1>‹§ú>…>oLÆ>TV>E?C>G¿Í>YÊñ>tùÃ>‰á>–½>Ÿ-v>£¦²>¥«¢>¦£>¡º—>˜* >ŽÓ6>‰ÞŽ>‡Èø>…û<>„+H>‚÷N>ƒ>„CS>…I>†©ù>‰±G>‹LS>…Ó>o£6>L³Ì>4$H>4 -¶>L" >n²>†²„>”¶}>¡gó>ªu>¬A«>¨ŽÑ> `p>–E->¡Q>Ð}>’Ê >’½>‘”ë>–wŒ>£ƒ'>²é‰>»öÒ>¹O$>«â >™Öî>Œ?/>ŠY >’| >›-î>€ö>šMÉ>”ýº>Œ@>w>J6U>(©>!c>*É0>88Ë>FÁÙ>WV>iN¢>€ªê>‘>>¡^ä>«¯{>°¢¶>° F>¦H¾>–`z>…7>•‚ç>¨Øº>¸oÖ>¹IT>«EÅ>—g!>ˆÖ§>ƒšš>‚¹D>ùZ>ƒÛx>Šô4>“‚º>–É#>’¤ >Œü|>éþ>•ðÊ>ž•»>£¾+>¦8D>¦¶>¡©->™gá>t>„  >nJ>X >QJü>`Æ\>~ü>Ãð>—9Ê>žÚ>£é>¡…>—\š>Œv•>‹ïk>—ò;>ªŒ!>»6²>ÀÕ¹>·3ß>£8>Žg>E†>|‘í>~Ì>è>„x~>†ËÁ>‚¿U>vò5>uÀ>…–¾>˜Ýþ>ª >´«>¹Ñ>½Ï&>Âfž>Ãœ*>¼t>®>¢ÑŽ>ŸÒ9>£çs>§’">¤†>œ4§>•^Ì>‘Éž>Œ˜È>ƒÞ€>yhM>{¼G>‰¦€>›À5>¬ct>µTg>´4(>ªŒ>œäO>Û}>ˆ&R>~™¬>h>Uý>O»>W´^>nÀ‰>ˆQë>—Ñç> a> ²[>œ”´>–é(>”V(>˜lç> kÃ>¥Ø?>¦Y8>¤œ>¤u$>¨¹Ê>¯×ð>³{>®ž>¦ïÆ>£^>¤¬d>¨_°>©·z>§…0>£9d>ž¾¶>œâ«>Ÿ;Ì>¢’¥>¢V\>òC>—Ž~>‘.J>kF>ë>”ÜÆ>˜ÿ%>—¦k>’ >‹½">‡Ò{>‡&z>Š)>‘¬u>™Ÿ >˜qØ>‰‘w>k¢>TªÊ>Y M>eÛÁ>e#I>Vì>NG•>W>K>jÓ¹>|¶±>ƒ’¾>…­Û>‡ ¤>ˆš >ˆ=E>ƒ ³>sVá>\±¾>Bä">(WÕ>‘ª>d>Ér>G(>pµ>Ì0>L>XÂ>'Å»>7¿>RS³>zc>`4>—ÀÂ>™Ec>œlÁ>¤‰d>¯ŒI>¹­J>¿ >¿¬$>¿qœ>¿ñâ>¼NÅ>¯ò¯>ŸR_>“Rî>ŽTÄ>‚>ìÊ>“É>‘ö>†^õ>r)ü>kša>|Û%>Š‡>Û>>Ô>“Yã>œÎ>¥Õi>£ ¶>’`›>sà(>T.Ù>Yà[>|0–>’†¦>¡áò>¨OÏ>ª6P>±å>Á®>Ð×>Ô÷þ>ÐõL>Å’>®c~>‘T>xÕ›>sºL>‚Û>‰¥ì> >•º“>È3>¦¢ >±Á>½–(>ÄÓ‡>Ä3>½U»>´? >«ê>¡`>˜*>’‘É>JL>‹3Ö>‰6>ŒhP>“~æ>œÆN>¨„Z>µ±>½o=>¿Ú">ÀKñ>Ã>>Ê ù>Ðÿê>ÖÂ>×6ö>Óü™>Îúê>É5ü>Áäw>»‰à>º£J>¾¦">Á‘á>Àe>»ÜÔ>³}I>ªÜ<>ª¹d>µ¨;>Çæ>ʺL>ʧ@>ɸ³>É]§>ÄM>¸Š>­ Ö>§h>£ß~>¥æÚ>®uÕ>¸ôò>À&>Á +>¹HÌ>ªÈŸ>›Þ>’´>”3„>¡$^>´R¿>Æ¿v>Ò;œ>ÒdÞ>Èä—>¾a‹>¹b«>¸@>·ôô>½J2>Ë<å>ÜE÷>ææ7>çNS>ß’{>ÐíA>»Ì(>¥d7>•ÿœ>‘©x>”§>—8è>—5k>šw˜>¥gí>´?s>¶â>Òï5>ä`A>î¤Þ>í|]>çBó>ßÉ>Ðh§>´y£>“åû>xE9>gÅc>uÇ>Ž[>¥ÿ3>»™>Ç”†>ÄÁÅ>µõ>­ÅÇ>³Q>¸%>²<;>¥Ð)>••z>€f¡>U¤¦>;¬0>;Pn>Ol{>sÌn>’EÏ>ª¨J>¼µe>ÃÎC>½­T>®‰R>Ÿ$é>“ >‰“ý>bj>vÄG>bó²>I×>Gñ¤>m¥0>“üD>­,ˆ>¿nŒ>Ïá,>ÝB>ݯ9>ÉV>¥Çj>‡‘>{ì>‡ #>•ˆô>ž~m> î#> Š×>¤>©->¥A«>›“Ö>š±>¤ Ç>¬—Æ>® Â>²›ü>¾”>ȉA>Ë'>>È£>ÄÕ>Ã\x>ÂTó>ÂÅ¥>È Ç>Ñç1>Ö²º>ÕnÊ>ÔÖŒ>ØC >Øyá>Ëe£>´†Ì>¢a¿>˜³—>þ>Œ>Ua>š®>>ŸŽœ>šŽÃ>‘Å'>‹Žu>‰H >‡W©>‚Gd>{ì$>ÔÖ>Žùø>žGš>ªl¨>µt>¿gØ>Ã8Ó>½ºÞ>°¬o>£®¡> %Ï>¦íÏ>°«Û>·[²>¸b†>±Šœ>£E>’N>ƒ)>uxŸ>ytâ>ƒê­>‚¹>iœø>Mww>N-¡>gd£>y"k>nœÿ>Q,J>7÷>1)‘>;Dó>L»|>]BÆ>gs¿>fš<>XS–>CÛz>7< >:â’>L4î>]ÐÜ>`“O>S<>BW>9¹Ö>=ûT>Tìß>xÌ?>Š8%>Ž®>Šh¸>„¯ >jJ>ª‰>u"­>b³¢>X>X>`Å©>o»¨>qo>gº>a¹í>a¶|>`ó>Ynn>I(`>4Zb>*¥=>9;.>]<ç>€ëÚ>‰J>ˆ+µ>‚•<>y%I>lß >^fê>Mv(>;2,>->,!}>>“þ>c˜Î>ˆ“>—¼É>™J>Žt>}§m>k™o>hL7>`ûU>Q¼8>UHÏ>€q>›0ú>¤ï>›—>”ar>—wô>›jD>Ÿ¼/>«¿Ö>¾OÖ>ÎÁ:>Õý>Ó<&>ËxP>Èù>ÍÅ>Ó‰o>Òè>ε†>ч%>؉>Ù0Ð>ÑÄ >É~Õ>¿`>±Þï>­pÊ>·>Æ·>Òº(>Ù6>Ýù„>â¬F>âûÌ>Þp;>غ?>ÒbI>Ìu°>ÉŠÜ>ÆT>¼­¯>®~_>¢·[> `«>¥Ó[>«Ç›>ªãÓ> ,>•A>y»Ô>R›¦>.À×>®=ífH=¾óÕ=˜Á=ö‹=‡ š=¨ =Ü3 -> eÿ>/ŒÕ>R>o a>€îb>†`j>‰á&>bC>–Á§>©Œë>¼ >Á¨]>¿ ¥>Ã,4>Ѐ~>Ùá>ÕÅj>Îf >Óæt>à¬q>áè\>×n >Ñj¾>Ös>Üçî>Õé0>¼`x>œûà>‡u>u1l>[Õ»>8ÍÎ>b@=×âù=ª!ä=¦¯=Ì£>q>-Z>Rkî>xØ>‘Û‚>§ˆÅ>º•H>Í+>áö>óäW>ÿ÷’?>÷œØ>ñ§>óx”>ýv?8±?ß‘? P¶?Zr? ܬ? ê? æG?æ¹?˜Å?YÄ? ËQ?y€?¡?b? -K¾?å?£X?<? Ñ¥?!:t?%2? »¥?o?cá? ·?Æ”?ú½?xø?Âæ?d? h»?"Û?&-?'¥?$¿?!¾œ?#_^?%ñÇ?$»Ê?!¢Q?À½?Sü?Üï?O?&{Q?.Z?2aN?.[ì?!LŸ?Äâ?Ö?wÓ? -²?n?æ>?%Ãz?.á©?23þ?.Ô¾?(`?%?&÷t?&¬?m?Ö>ñ^?ÖN?•w?$¡=?)UR?)áM?(ð§µ>üz®?žÌ? {å?,Jú?-œÎ?'? Ó?þ?(¢?'e?1Ö/?8|´?8???4–Z?1¥?/—Æ?0ÐÊ?.ïZ?&¨M?ª«?¸ ?è¾?ŒR?½™?Ð'?!°?(#?D7? ‰ø?(Â+?,ű?,Ò?'ñ ?"KÀ?|?6S?$Eú?+%x?0MÚ?2œ¶?2jï?.½?$ó¢?]?ì¸?"#Ç?# J?!W‹?!í?%(Æ?&J?"`ˆ?­?•¼?D!?Øi?ê?ß­? -?ñ?¨t?&?*ÝB?-(?0Ⱦ?2>?,»¿?·j? Âè?;O? Ôà?h$?#ç¼?%j?!yÀ?tø?ö´?ö?Ä=?:ã?Ϫ?‹I?™•?no?t?$dÕ?'y`?'Db?)çô?-ç&?-€¢?)ä½?%Ë|? µ?ô±?!c?%Ò§?#2¯?€K? ªÓ?h{? c?ߺ?‡ñ?{U? —è?fX?Oç?{(?F?ÿ¼?!l"?(e$?'È?žg?ñ'?ºó?#"ž?"û7?#Y%?(?*ü?"/?Pè? -žr?Æ ? Ç?v?í?i ?AÀ?©*?‘h?âö?$ùÅ?,±î?0©X?/Š?,öå?-,8?.ä•?,oô?!ó¬?þ‡?Ûê?•?3ü?>~?BVÍ?Dp?A3·?6‹?&Þ³?¢Ê?yŒ>îÞæ?Ê?J?5¡ì?>þ?> -ì?5·Ä?.8 ?+,?' J? ùÊ? &Ý?"± ?%¦2?+þ´?4EŠ?7(?8@?<­??N?8âÑ?.T?&­¯?#7p?" ,?'e>?0!Õ?3ÝŸ?.õ&?(×É?*Z ?0±‹?/Ûá?%?{?Ú!?Xð?"¡†?4•c?AP?G?Í?I’o?E¥•?;â‚?26D?(K+?†D?ã´?Ã3?[?A?#ëô?1)‹?;/È?;ŽÛ?1ò!?(uL?)±?/#j?2 -?-kÇ?$§Õ? e? ‘x??Â¥? :Ä?Œ/?#þ×?,;o?)Ã4?"ëZ?v ?ŒÑ?Õš>ꃶ>ÝÇ8>å >íd§>ð¡Ô>ôXS>ö_Â>ó¾Í>èÙõ>Ùƒ>>Õ¦˜>áóE>öMÝ?·?ëõ? +g?3 -í?JŒÍ?Z‘V?]óŽ?YâU?R9/?IM[?>ÝH?-_? Ý? -{ª?ÛT?(`Ø?C¸c?P÷?O)q?K¢?L{­?Oá½?Sõª?W± ?Q u?;H?#9?Y?? ö>?4O?$ í?4Ðó?=É?DöÑ?K(Ö?Lç)?PÓ‹?U¥ŸL?G¸×?Mê©?Pš"?JØ?Ayÿ?Dz‡?PðÎ?Y¸?[ü?`.ï?càø?]w?OF¦?F|?Eÿõ?Hûž?K<%?Iá"?@„?1×k?-&%?8AÕ?I_/?SÓ|?T«e?Pƒô?G“ ?1ó?y?Ìf?С?,#¿?:Ò?;ªf?8M9‘?F2Ø?SŒ?Z>½?ZËr?Z?WE÷?RhÃ?Qô?X@?bÃÑ?n!?w9v?{v?} ?€?|Ÿ ?m0?Z;¨?P¾o?Uo-?d2?sÆ?{{?zØB?qg}?bÌR?Y‚`?\µ„?gˆQ?læS?eþé?[Ùú?Yé’?`ÿW?lƒ?sÆœ?s?A?m»v?ooÙ?}g4?…… ?‡MV?…m5?‚l\?€k?€áç?‚® -?‚€ò?~ú?tîv?näº?nv§?oÐ?n{F?o8.?u_e?{(»?x£,?o.y?i•¤?fw#?_IY?V‘'?Oô¡?M¦?Q@¶?Xù°?`1ò?^à)?VŒ ?T ?aâ?u/T?|gË?v?m”?kf½?o4D?oðÊ?jìp?h†ì?j-·?hD±?`4å?[ë ?a¥?e&-?bV?]gª?](@?e¾T?rê?zÕÚ?|ÖÆ?}‘?}”?yêÒ?n"¦?a’%?_°º?jØV?wã?}4:?zßà?r]?m¿ ?uM\?}UX?~[?~²?}Y•?w!#?jæh?`d?^3?`w?a¥?c ?eÜ1?k¶I?u`š?|ûÏ?|ru?t,ö?k*\?gs?f¬?e2Ÿ?e%?gô=?ké}?l?hóU?iç@?ozË?qÐà?oÆÊ?o”7?v(­?€|¤?„›¾?„‡¾?$½?{~*?x*¸?z ?}oo?~6j?~9/?|Mý?{ ?~À¸? ì?*¤?9Á?€¥ ?Öè?€={?öØ?}¹[?ž?bó?€\é?z‰c?wà/?ww3?tŽ$?p Õ?mþ¯?oüÍ?u¥V?z‡?y‚A?sȾ?jû)?`&$?ZA?]¿²?g³)?q•†?x(`?zæÛ?w‹?n?h0o?lƒ©?{Cñ?„À{?…¼›?·?ušÝ?nª?jï0?aè‡?Pï ?FÉE?MãÂ?^‹?m<?s½S?rø¹?s':?y¢?€G½?ñ?vœÕ?mvg?fê´?f€£?m‚"?v©?yƒ:?x[?u=É?rƒ?qj?pmÈ?o¬?q¸ƒ?v™¶?|)©?¸3?|šf?qÓ›?g„š?c×o?cÌO?cï?dÄm?i?mÕç?l`!?ev”?`Ô/?d%L?n2?u·p?td?n•?p̓?{ü?‚„?‚ÜÅ?ƒ0?ƒ ?ãë?DT?‚¿±?ƒ÷Å?€õ=?s-ª?f±?bL?eP?l³Á?vú?|p?~ô¿?{£?vÄ?yg¿?}˽?}%…?}m¢?l›?ƒôƒ?„6a?„8Ä?…B|?…X?„Ï1?„#Y?ƒ×?5R?~@û?z¶h?yF;?{o?€Õ?‚ -`?‚Q¹?~©Í?tsù?m«ª?k‚?j£?l—²?t[æ?~Xy?‚Ñ“?‚õ?eÙ?‚IK?…”?‡ª?ˆC?ˆúG?‰6³?ˆX?‡BG?†?ƒü?¶@?€n;?{¢¼?y ã?y S?y—Å?{~K?€Ç?ƒ½)?ˆFv?‹J?‰ú:?…¢+?€6$?zr·?}Ë×?ƒM7?…Ú›?„ˆ@?»D?€³?}xƒ?{}^?}¢–?€Ü¯?‚—?‚ÄH?ƒëŒ?…¿ó?‡’ ?ˆ¢]?‰L¶?‰äA?‰?O?†b!?=V?{a°?~1?„3µ?† 1?„ÁØ?ƒ9‚?‚iÿ?€ïû?€q+?‚?ƒ‘A?ƒÈ/?ƒl_?®?zWË?w%à?yÉe?{þ ?~á«?‚½¸?„ºü?‚„£?}L?|)Ï? I?‚šC? Û?xZ?iä±?eyÆ?j±?g-Þ?Q´²?5Ö„?-ÃÇ?A‡a?Y_˜?g¯Ž?p9Á?tÅ?v u?rô?fªS?_K?dÌÿ?mfq?qª?u0?zè?””?„è1?ƒ ¢?}ÆK?zÊG?w8P?oÎ\?l0 ?nNT?oYu?jŠ.?e‰N?mÿr?€«ì?ˆ9Å?‹zd?‹ÂÜ?Š•¶?‡a?ƒÙ ?‚øÂ?ƒ?õw?ƒä?†Á ?ˆ®?„o¾?|‘?p§ ?oŽ3?x±(?sJ?…‚B?‡Q?‚¹Í?rks?`Xÿ?Y³?`aÕ?k;y?o&×?rÞv?}‹Ñ?ƒ|æ?†$z?ˆPü?ˆÛ?†”?€B×?uç›?xÌ»?{ø"?s³R?iìW?mÿ{? ?†?ó?ˆ‰ã?ˆYˆ?…Ï4?„Š¦?†Ùá?‰r?‰kœ?‰€á?ˆzÜ?‡#&?‡0{?… ç?yÔ©?n§–?|6?‡a±?‰âC?‰YÈ?ˆö²?…ÿI?ì«?€ZM?«Æ?~å¢?€,î?ƒð?†¶»?‰Ú?‰Hp?†ßU?ƒD?Cm?{?uµ¨?iu¨?^~>?_K?iAº?w\ì?¤ð?‚¢Œ?€Cà?}>;?~—Ø?dw?€½?¯ -?‚ k?€u?y|ø?rV?oà·?qÞ?p¾L?jà?cë?iàˆ?y­?ÓŸ?y_†?l&u?` ?]ß?c¶‘?hÖ5?e5þ?d-*?k˜j?p -.?n¡©?p+¸?tL??u3Ö?qÃÀ?pt‰?w»H?~Îj?Øl?…V^?†Gz?€©?sVd?pWÓ?m¥®?a ?RÕS?VÜ?m‘?´?‡%!?‡zD?]Æ?udB?rÀ?s62?w $?€H?„Û ?†€¸?†%5?†7K?‡0?ˆ‡Æ?Š ?ˆB`??uMá?vnr?zcÎ?|KË?€¿?€ëj?z­?yOâ?{îí?|—?~#–?wîD?eþ?[µs?eñ;?qJ?vˆU?}Êb?í?€T?€jL?‚?ƒp‡?…Hù?‡@?‡l±?„æ?{Kä?jQ¦?cv'?oHR?€2‰?‚€!?€$Õ?|Ÿ-?yÅ$?t_Õ?q¹9?r ?v^À?€ ?‚ÓË?‚®§?‚ÔZ?…G?‡+?†Þ»?ƒˆÒ?|û3?qQi?ix}?iù?nÂ?oÔ3?nÿK?o^'?r%‰?uIj?zb?€aŽ?€ä¾?x~¹?oéˆ?mª?oý^?níú?i¼V?nô?r¦»?n4„?kt‘?p¨?v8à?s -U?nµœ?n`?q8?wÉ#?\?ÕÀ?‚Ã?‚F¦? ?y±?s,/?b0?JY??;S?Dñ?W~•?T?B¤?LÅ?l¸ó?©?À¯?‚ë²?‚;Ô?}V‚?gÂi?G" -?Aë??^vò?tM?w ?x;Œ?xms?iü ?a - ?ho?kSL?j»Ž?otå?w}#?~«Þ?€eË?4x?z¢°?o€^?g“[?hœ%?iC ?n2ö?wKS?~Òò?} ?}D?pÌy?l^O?s¦Ý?}ÁZ?wö?ß ?Æ$?tÞI?cŽ5?S9â?U2\?iôk?z#Ö? ¦?y/Æ?pZ?n¤?uG%?æ¤?‚͇?ƒ°?ƒX9?‚qn?W ?ƒ$Í?‚Þú?zþ/?sº?pÞ‚?n%(?r¿@?w»?t¼o?r. ?|ý?„kô?†?‚Žƒ?uzº?c-ü?U•{?MÝ×?Pß?\£±?[!{?Pż?Zøž?kDÊ?l¥É?gÁ´?j^§?zâÅ?ƒ¡ë?ÞÊ?ztÎ?tO¨?oú4?sF?<´?‡P^?ˆ –?ˆU?‰—\?ˆ|½?…>|?ƒVx?Í?uFÁ?i-?n‡?yKŒ?{¤[?~9î?‚»?…+?…‚?„¼/?†Ñï?‰6Â?‰Q•?‡õ!?†[—?„[z?€ý˜?€*]?‚|K?ƒk«?‚ýÚ?ÒÜ?}ð.?ySÌ?wl•?i¡\?Y?‚?cÇ^?z1-?€çˆ??ƒÔÊ?…:b?ƒ×r?‚4±?|>?t Ó?z`t?‚ƒ?ƒéÃ?Ëæ?€Û?}œ?z•?€A?„Y?…~Š?‡™ã?‹^?Œ?‹é´?‹¨{?‰ÉZ?…½¯?‚°¤?M+?€P8?€õ?€Ï¥?{ l?p&z?nܨ?|é?…¢»?ˆÍt?ˆZ²?† ?…77?ƒ?„?‚(?óp?ƒs`?…õ®?…®±?„=ç?‚ƒ4?ÎD?{™5?y‰/?y¬ä?yÍû?t^Š?p“X?w®W?} T?"?~ ,?q¡ ?eQ?fp|?q+?tÑS?q&B?vgæ?€d•?4?€A¡?‚a{?„L?‚Åx?ï?}ë?î ?z÷²?z†?ƒ:—?…†Ë?}ùÅ?s%æ?yŒÌ?{¨0?uQb?q-?tÂþ?€¬?‡V?‰IU?ˆ§s?‡û]?…Ô‘?½Ç?rªŸ?tŸù?‚»Ô?‡Ý°?‡æÙ?† p?è÷?wÄY?x¢@?„%›?ˆŒ ?†?¿!?uú¸?x°?€´X?‚F??‚Ð?ƒŠë?‚]W?:?^ ?{m/?ud?ižù?kŒz?y–‘?{&?tˆ?xNê?F?„~&?‚J?|às?~‘ú?;€?‚O?€pŠ?~‘ð?;?¼?€ò°?„ 9?ƒZ‚?}æw?|Q?€”?Pã?|5ê?Åð?€Ãß?~Z²?x¦e?uÕp?zæ+?€x‹?‚P¾?„Е?†€M?…ßd?„¤"?„.%?‚Ô©?&h?w½?t|½?|?Ò?‚»þ?‚áS?€£V?{óQ?|‡©?€ÑØ?‚(Ù?„(8?…€ -?ƒ_(?€o–?€fã?*©?ƒ) ?…þ@?‡?†§?„!D?"?)Y?ƒ=Ã?ƒjz?ƒ.Q?ƒ Á?¡å?~N?|ýS?}§?|D??}bn?}¹…?€é?Ä6?|"b?€€È?¼˜?bº?ÁÇ?‚;‹?‚Ó?Ë?‚"Ä?€ã'?w{?jpÈ?fË?lƒú?t“‚?w€Å?u¯!?xŸ—?€÷v?€#¯?xiw?u¢?pKœ?oeþ?{N?„~˜?†ô?†'#?†Q?†H?†³à?„ب?z‚q?mx“?t^ö?}›?~g>?€G#?»É?}um?t²2?wÞg?ƒQ?‚¸.?…­D?†©3?…_v?‚¾š?€VÌ?{•ë?x7—?{`?{c~?wãR?zcŠ?~9Å?€¡ƒ?‚\J?‚“í?€\?~ä‹?€û?€WQ?y¿Z?wä?s'?g)f?kuÑ?t’]?t€?x¿e?…ã?}ø?yÖ:?zÒJ?0û?‚¬~?…~Ó?…¶?„(o?„9ë?ƒé–?‚º?«F?{µ¢?uÌ?wÊ¢?ytú?w ?wIû?|©€?€§¡?‚%¬?‚=.?‚&&?‚Å¿?<à?}¥È?yã½?v?€ð*?‚kó?„˜Š?„î{?„ZÉ?ƒç¦?ƒoj?‚‘\?‚E?ƒ?„~&?ƒ/?~É?x™?‚]¼?€4Ù?u˜_?råç?|—ý?‚Í+?ƒ Þ?l‹?{öF?wð?{~ý?ƒ?…ä?…u!?„Ÿ…?ƒÉ?‚—ˆ?¡f?,Š?ë¤?ƒÙå?ƒ ±?|ü:?pÜÔ?mÅÖ?p«?pªQ?u—‘?~‹û?¨+?€ÔF?~ h?ïe?nô?‚š»?€¹D?~è3?‚Á=?…²C?…‹"?‚HL?}‘Ð?|ñ±?€´?V‘?‚Í ?„(Ò?„MÖ?‚±¤?»b?€(%?ƒíª?†à?†;ã?…éK?…µô?…±t?…?h?„ÿš?…°Y?…ð¤?…5?„ªx?ƒó‹?„Â?„R™?„6-?…wW?†%?†´?†9o?€-~?~?‚ç?ô}?‚|o?=?{6E?yÆb?~Cd?¨N?‚¸)?‚Âb?‚Jn?‚©2?ƒ[9?‚ûÑ?€­?{tÎ?{?€…¹?€ï\??€Üd?‚Î)?ƒm„?‚“Ü?€š®?€ev?÷o?‚Ù:?+A?{ÐA?{,?}ÔE?{lÓ?|ر?€†?~ªõ?}dY?€;W?‚Æ?‚Á—?‚¨F?·Ö?€Òr?ŠŸ?‚s?ƒ?ƒ{z?‚ðü?€¤Û?z¨ñ?xþû?};Y?3E?èË?~w[?vSW?vd?z†?~‘?€5°?~Å‚?~èw?{K?„×?}Mí?xí=?{Ø\?~ßa?}•ª?{­?|Ã$?yý?réº?sjà?|3?}`H?xk?xk~?y`\?yk?xÍœ?s² ?rr?u!t?w–Ì?ziÔ?zãX?|§Ä?ŽB?€X?h"?o?EÒ?’ì?¯a?€ò'?tâ?}æ„?û…?©?˜?Ø ?ö’?‚Ë?<¶?~×g?{µ*?zâs?~Û?ˆ3?íF?€æb?}ïè?xÁ?w`;?}ñ??t÷?un(?vm.?uµ?qš©?k÷›?iùA?l(Ž?q¶é?s³ú?s§³?r³?m©S?nï"?rÔu?qÌt?m{s?mÚ&?r9—?sq£?t£?t½?s“3?qé?næ?iS*?lŽ?p»²?q i?od³?kÅ$?gKÞ?fÇ,?e’ä?Xýw?6À*?ÛQ?4<‘?[¦ú?h7ñ?fýï?gWš?hÍ+?eå%?euí?lãÄ?rÚ&?ql:?mÜ??n¨Œ?oÂ?m ñ?m“-?q»§?r>?iÙÏ?_À¨?dêÉ?m‰?mA4?o7?stj?s`?oâ‘?m?kî4?h2>?i#¢?o•²?pÂq?q9?sRÝ?r§ä?r@?scc?s[?pÑí?né2?oœ]?oßu?oÁ ?m[Ž?e‹™?_Zn?f¥?nLŒ?n’v?nŠ?n†?h~@?iV½?mcG?ojR?q°a?rO?q”?q&'?quì?qÍb?r?pj]?kU?ebò?h9L?l"7?m -:?o6Ë?pJ´?pBe?pÒ™?n½u?fíÿ?dËŠ?k¡'?o5ö?p|K?qš?p÷M?pµ'?qì?qÆ"?rŒ?pµ¬?k `?i -n?k?mk'?lÆÇ?h¬Ü?g¡¦?j„Ø?l¦?k/|?j-?h"º?eÅn?c`?`j×?d‘*?i©E?iìÇ?kb?jt4?hé?gN?i#b?k½¤?j½™?jÞª?kÕt?i±?gš•?h?´?gƒ”?gó?hrC?hzÔ?fÈ?d}?eËÎ?g†º?hÿO?iû?jöÒ?lrÓ?mVÃ?m -n?kq~?hÆ?dh²?c÷Œ?c…“?b§Ò?gœ?k±'?m?¬?me?mñ?l`?h"??bßL?bB>?fÒœ?j°™?jêH?j ?gÞ?e¡¤?cñ°?dÅž?gá1?iž`?h¢Á?gmx?g8?gÁÑ?gãÄ?gˆ0?i?guÑ?g»ü?k ß?jIž?få?hÿ?k|?kã,?i$1?d?eVÈ?jg?j„Ï?jwW?jÇ?h,Æ?eJî?_£?\'?_¸)?fG"?iTG?j ?iU+?fÞ/?e$q?^#¨?Zø[?^Ôf?_ðð?\c2?_?w?fê -?iÇ…?iŒ¢?híe?h;?e£¨?eN[?díY?f L?hn ?eÿ†?`]‡?`²?d›X?c©6?eM‡?i…D?jÙ3?jZ©?i¿è?hÞö?g²"?fí˜?gg¬?h´‚?i Î?fUo?d¶¹?g8B?fT?b„²?`Šž?^T?`Ò?cuŠ?e–?düC?dŠb?_ m?^ŸL?bG?c¨?a¾Î?^èŒ?_‹?c˜[?d ª?dõÞ?eä??c/­?]¼­?[X?^JÊ?a4¨?_˜?\þ}?^\?^Õi?`/Ñ?bA0?báw?a–Û?_?aG¿?b‡X?c±?b¢$?_]=?`ñ¦?aX¿?[ùª?SÆu?OÇq?W§˜?_;?beÒ?bWÀ?akB?_±¼?`éˆ?bÞX?b V?ay)?a¤ ?^ -ë?YÉÍ?\[Û?\ìo?Z±?Z?\÷?_EÀ?]ø÷?\ç?YÂþ?PA¿?RêG?]?_„6?YU?T?XAg?\À?]¼?\â?]?[ÃÍ?[º ?[#?Xµ:?_¾Õ?c¯è?aˆi?_ñ?a7†?cŸ´?cß?^rq?Zø«?]«k?`8=?_ƒ?[FÊ?ZÃ?\¬+?]4Ç?X»z?U+?Zx?^üŽ?_t ?`!n?_ÿ?_¸·?_¿?`¼Ø?\z?Tâ`?V ?Z¤?Yþ®?W‘o?Y;ô?[¶?[n ?\ýª?^Ù{?^›º?]³‚?^…â?Bç3?C&Ã?EÔ/?F¡Ä?Bìð?Dêè?Ha–?H ?D…´?@±Z?EÛÕ?H…?GÑ?DJß?@?@k‰?D_í?G'?F¨¸?Cƒ?AZ1?@€‘?C›Å?FëD?GL??GR%?FÚ·?F›Å?GÞµ?GÖï?FyÑ?FÏ?Búâ?=1¼??–î??Oî?BÙš?E}M?Ejl?Dü?Dx:?E‹^?C¾¦?@Ý?C"(?Cv§?B ?D%ô?DÃß?Cµ²?Cœ?CÅ+?C¬î?BnK?A-?@¹?@.??²3?>ˆ??7Ÿ?<~2?>o?A]?@=Ñ??˜?>„í?<\"?85q?5ö¯?:q`?>§O?;Áw?;4Î??º?@|/?:8_?8L‘?7×è?8uf?9Ò>?4a@?7$S?:Á|?:U?9ûo?; Ó?8‚?5-”?3áW?8¡—?:˜Œ?5?9åÆ?:7Ý?6 q?2@9?6á¾?<¨ä?<çÀ?=ì=?=´2?;…ˆ?:‡©?9dá?8Dð?6d[?:ö?> ¹?<á€??v?=Èx?=BŸ??%â?@ þ?=`e?;Ô?>^Q?@Ü¿?=é”?9 »?:­ -?7"™?4<Á?:/¯?<ÿ?>· -?9¦ƒ?:¢œ?<ÿ²?9ò ?;‹?=Šî?=âˆ?>21?*½?=©,?9ù?tè?=fƒ?;§¶?6%}?1¸ä?3›ì?7›Q?;?9ûó?;µ?>³?=ÐA?ôyØ?—û?}?$lb?+ˆ?.•ø?-ñÀ?*ì?#ŽÎ?'V?&G?(ù ?*Õ?)Å1?'%*?%?'—S?'#M?&‰?!÷v?–Ò?¸±>Ì ->«B>ìCù?1Ý?ùÿ? ½6?%82?%jo?!Ö–?&h?)’?)1ˆ?)û'?*e¬?* «?)}ã?)4ÃYI>Êv? -Q^?}F? ´æ?"üz?!fó?¸ƒ?%ÿ*?"â?#€ì?&ôo?'9²?~?X?&‚±?(ª?*8Ý?)ÞS?$çh?&jÖ?)d?)/ˆ?$p?!Ñ#?(ùÔ?+H8?*?*¬Y?)a?*\?*K?#þ:?!™s?!â¨?%Ù®?'¹ý?)|?(2? Yö?rä? ?%0ˆ?(K³?'½X?'U?&p?&]À?#“c?|ÿ?%\2?(O?¾%?å??Τ?g…?¥?Q?ä?$!?’*?Õ*?\Ê?J?Bì?é -?Í–?G‹?@Ü?¸l?«?Ñ?/&?øû?n -?+£?>?Y™?Ív?ÛÖ?Ž?ñ±?¿ÿ?ÛÂ?p˜?w4?yÔ?~Œ? ?ýH??è?%*?Å?ö?ů?ãz?p?e?ËÔ?îÑ?{N?ë½?ØK?ã‰?a ?*Õ?ʽ?í:?Åc?—¿?l6? @Ð?úù?x(?£ì?·“?ý?”©?dë?w“?VË?úë?WË?:?8ñ?V -?B¨?Ç?4Ý? -? ƒÊ?Ì}?Ea?ˆ¬?ëÇ?œ™? tç? Äï? Ì?7??ó -?¸E?ªÙ?.C?•s? Ö?_†?ú?ê? ân? š?}Å?¤?{?2?¿^?ÊÑ?N?>?Óê?#Î?T?]?ˆú?ô1? •?å›?K?}ÿ?_ƒ?{?ûX?LÈ?§À?ÌÔ?ð?ëñ?']?#·?‰(?ìù?%?Ù?éý?C@?ñh?¯?ûå?ݽ?e~?;Å?'w? Ê?ÿ¾??>Ó?›«? 0ò? Ai?q?5?[(?&Ñ?qn? w(?«ì?šÉ?á’? „p?…Î?I?C?Óö? )”?F?§ñ?£%?Üð? Óâ?ý? -§Õ? -Õ4?[?W=? -O? ß°? U¸? ¦ ??ó?%{? „ó? |¯? ¾Í?ÊÓ? —y? éÒ? -b?Ác? b? ©I? ·ö? ƨ? °[?ÚZ? qý? ª?l²? ƒm? •‹? ¹h? ({? 4m? õñ? ªw? ¿=? áˆ? ËÖ?¹ ?¨R? â? ’?|Á? @ù? Hì? ôU?K‹? •? »—?é?²? -8ú? ÔI? ? ƒ? -:? ¢?ºY? Çu?jÞ?{£?½å? ’?Ln?…é? [Ú? -Pu? †? ?Ô? ¿í? ?·? ÿ1? }?S ?´`? ³„? + ? Óå? ’·? º? Sâ? K? Ëâ?"?Dø? Ýç?›Ÿ? IÐ? -¼?ò?]c? Ó?C?Ü°? HS? ¬’? ©Ò? ­Ë?Žâ?ïÙ? Í«? áÄ?Õ\?ñÝ?îâ? 0á? Ä? è«?±? y²? -Ò?ôp?j²?AS?Š? m? 4µ? -ä®? pI? cè?=? ¼? ?? -§v? -ée? -ø„?·?pÿ?¦?ê? ØÖ? PH? -šf?>N??©Ú? a¼? Ë‘? )Ú?©?Üÿ? ÆK?Ï? -’—?ý[?p? èc?™B? ë?i«?j]?ÎJ?S?”?K2? 2Ÿ? -%? uÔ?¢Õ?xC?°Ì?Ò?{d? ø?R•? Ò? `? a?Ÿ?­Â? n?B? »? Ad? ?Ñ ?¯#?ؾ?è?Õ?!®?+? Ul? W?“ˆ? ¶§?qN?ÖT?ë?åM?K^?Þè?°ï? DS?XI?M??e?Ñ?b{?¤Á?Ê?³Õ?e>?š ?¼‹?8 ?Z?ƒ ?§?à?Ëì? ˜?Cú?Åw?Qn?5ò?šh?]î?–»?œ¯?Ï\?[k?‚0?Ý?ìB? ?â?„?¥Ê?Ùv?Ž?Œè?;Ê?îâ?~9?\?Ú®?À=?Éù?BY?¦?>-?;?›Æ?ÛË?6T?7é?CÐ?»?„Ó?ä1?ýð?E? ?|a?§V?‰f?Ï?ÍJ?Ê?g€?È×?ëå?>Ä?WX?”œ?)0?ñï?¨?½Q?£?9?/™?F¿?N?O?’¢?O‹?Cœ?!?ùu?GÖ?6Ú?µÒ?°‚>ùË>ù½? ã?!#>ÿ§Þ?äº?Ÿ}?ÉŸ?Š˜?½û?zð?øP?Ø›?rJ?c?àî?¦Û?~(?™??Š8?1Y?Š”?Ϲ?íA?Ýú?Q?´e?â?EN?õ¨?²¥?q,?ÂK?‚?²~?çq?•i?ñG?ØÚ?Üû?6">ýý>ûq7?¥_?‰?à;>ý´?¾B? Ö?¶=>üê•>ÿc?#œ?6h?g?«‘?Óz?óš>ûXú>ú²w>ÿÔ6?Ì>>þ–¼>ûÑ$?‚ç?c/?›Z>ÿC{?iÝ?´?[l?¢>ø“>øãI?œ÷?xš?aa?zŽ?\b?’]>ÿµj?Ë??Vo>ýþ?>ÿ=?È}?¯õ?ô,?æ›>ÿÖq>ÿEÞ>þï¸>ü¡">ÿqÑ?]Ž>ÿ/)>ÿûx?«?X:? â>ÿàg>ü­”>ôOÛ>ý¢Š?`>þèw>üš>û¶ ->ûù#>ý=«>üèl>ýí©>û^Q>þ@Å>þ ~>þP>ýÄœ>úóz>ñ2>ðX6>ôíõ>ü->ýŽÌ>úç>ôüK>ó=S>øèÜ>ùÚø>üÃ>ú7C>ú¾>ü3>ü—E>û ^>ùtê>ûŸC>ó©>òßõ>ûØ0>öWñ>ô>û¦g>ûˆ©>û,¾>ù“v>øå>>ö£q>íLB>ö3 >ùûe>ù>ö°Û>ø{>û@r>û0ð>ù-k>ù >ùu>ñfÖ>ð¸>õ¾ç>ú§>ùAœ>ö’û>÷îS>÷Л>øžK>ù¿(>÷>V>õÙ€>ø¯Ë>ó7>ëP1>ìÀ>ñ^M>÷Ê”>ø’J>ò«­>ñs>ø`>ø$>÷“Ã>ø?>÷ÃR>ôp©>õƒ–>÷v>ö¡Î>ó->ó >õÒË>ô(a>õ\!>õºU>ô/A>ô<¡>õèé>óà>óü®>õ±>õ¼—>õMå>ñë¢>ë²E>ïdü>óG~>õ—3>ôø>ôƒ>õ°Ä>ôö>óè>ô½i>ô;>óß>ô`c>ôÁ_>ôL^>ô€>óÚ>ó §>òÆØ>ðÉä>ð7%>éóp>ÞLÇ>ì`">óO>ó€‰>ó`£>òñÆ>òæ&>ê.’>áVƒ>ì‚ >ð¦6>îä5>ðÒZ>îÚê>ðªk>òˆ)>ò‰>ëRw>êŽG>ñ ÷>ða >ñ¬€>ñ·S>ñÚC>ña >ïê¾>îð‚>ð”(>ðñp>ðC>íÜ ->ßî¼>è"Œ>ïÕ>îì>îá«>íwË>îS>î•>íqÑ>ãý>ã^>çëj>ݸk>á![>æ¹ø>î>î¬K>íü=>ì¸>桪>ìc’>î<Ý>íh«>éÉ3>ìOó>í¨ï>ç™l>Ý w>áqt>è:˜>ë¸n>ìÓ>í@>êVs>çl“>æ"z>ÞØ>ä‹#>å?i>ëÔ>ìÌÔ>ëÿ4>ëŒ÷>çâ×>èbq>ëb>ê?>êÞq>éÐè>ã’>Þ{™>Ü.3>æý>ëž>éä;>çêA>è >çÇþ>é1‘>ê3À>âY™>ØôŒ>檢>ç9>àS>ÙE>äÆ>Ø -Í>Û)^>æ–>åªV>æû¼>çãh>çß>á‚>æòî>è–œ>èâ>èò!>é(L>è´>äO®>à2™>äƒ>Йº>Ø|>áé°>äõf>ä»>Þ˜Ú>×}>݇å>äõ>àÕ>à•>Þ£ö>ä™e>æ\Q>äƒ!>âŠÝ>äè½>äÞn>Ú¶´>ß5ú>ã†>änS>ß9²>Òœ>× -0>Úу>Úq>Ð6l>Ì¿×>ØÐÛ>Ûƒ >Ý$s>ÜPÍ>×Ny>ØÄ”>Ø&>Ýœœ>Ö3é>Ƚ>È]»>ÕMµ>Öµ‡>Õ}º>Õeó>ÇWH>Ï q>ÔŠ>Õú–>Ù+ž>ØzŸ>ÔÑ>ΛB>Õ'ä>Ñôø>Óè">Ö&`>Ö 7>Ï÷>Ï^À>Ïç>Ï?>ЬB>Ú‘->Õ6)>ÎÙô>Ø>ׂj>ÎÏ>Òþõ>Ø >ÓÚƒ>ÑžÃ>Út>ÙÃî>Ð8ª>ÏØƵ>Ùe[>Õ¿Ú>мG>Ô->×É=>Ú/R>ÑÍü>Ïþà>Ùd¬>Ø~·>Ô$>Í]þ>ØL·>×ÑH>Öö>ÒÉ>ÔÍn>×¢]>Õ^•>ÖHÁ>Õ÷÷>ÕÏ>Êò>Іë>Ø3‰>ÕÑg>ÑŒ>È O>Ñý>ÛH>×ßÓ>؉¿>Êß…>ÑÎÕ>Øß>Ø -Ÿ>Öš >Ë+>Ϊ>Û~,>Úp–>ÖÜÝ>ÒY«>Ð*r>ÔD*>ت6>ÖÛ>ÏÃ>Èó>ÊçX>ÔW“>Ù0Ë>Îëÿ>ÍnE>ÐÑã>Óe?>Õk’>Øtœ>Ñ<>ÏÃý>Øj5>Õúr>ÔÙ$>ÔÏ%>ÏÚ>ÏÏÖ>ÙÜ>ÖÅÀ>Õ§8>Ô6ë>Ï_U>Ìk¦>Öß«>ÌŽ>Æu>Ì<é>Ð@”>É;í>ÔÈ¡>Øs•>Ö(N>×F>ÓÝ>Ì"ÿ>Ë°¥>Ö`@>Õõ>Ñ…~>Î-[>ή¯>ɤü>ȸ>Ñuß>Õ3>Óˆ>ÐÚ@>ËÀÌ>Êó·>˯ÿ>ÓÛ>Ó¡›>ÒÖ¼>Õ΃>ͼL>ÇS>>ÆÔ$>Ѽ>Ð >Ò@>Ô^w>ÑϘ>Í×}>ÊØ>ÉŽß>к©>Óu>>Ò÷>ÓÚ7>Ï—>Î+>Â}1>ʈ²>ÐOB>È– >ÍC>Î >ÉM>>Å¡æ>Ê;>Ìq>Í3[>Ë0ì>ÆÆI>Ì”}>ÎóL>Ë›x>Ê*#>Ï>u>ÎzÏ>ÉÝY>ÎF<>ÍÇ>Ñk²>Î>˜>Ç»ì>Ä¿_>̆+>Ð}>ËÊ8>ˇ8>Ð~>Ñ -÷>Ét?>̶û>ÏCø>ÐJ&>ÑI©>ËÀÓ>Éÿ–>Ñ+Æ>Í2ñ>ɇÝ>ÊL°>Ê`>Ð>ÏL‚>Ê…*>ÎÝÐ>Ïß>ÈáJ>È@ó>ÏÛ>Ír>Ï&w>Í‚>Ç«Þ>ËÑŠ>Ëm>Ê >È>ÍÝá>ÍB >ÍÎð>Ëwˆ>ÉM=>ÏKñ>Ï P>Ë•>È<Ù>È™>ÌB˜>Ëîf>Í?©>Èü!>ÍâÛ>Îl”>Ë~«>ÈÖ>Ê| >ÍÞ>Êê{>ÊVI>Ã#4>¹ðé>ÅRd>ÍRŸ>ÈÐJ>È ˜>ÃýY>»î§>»¸q>Ǿ<>Çûé>ÈÖù>Ì™>ˤP>Åùè>Ä©Æ>Ê?>Ê >½õf>Á[o>È5>Ê1<>Éo>Èæ>Æ>ÅŸ>æs>Ée>ÉI[>Ä0>ÃÅ>È> >Êø>Ê>ÅÞ>ÆeP>Ƚ>¼–>ÀÓÀ>ĸ´>Çu:>Æ5p>Èå4>É×+>Æüõ>Æc½>ÆÈc>È’Š>Èy€>Æ–>Ãâß>ÇúL>ÈQò>Èòp>ÆÒÈ>ÅË>Ū>Èf£>Æåë>Áå5>Á>ºNÛ>ÃG³>Ç…>È’>ÆH.>ľ>Àפ>Àê)>ÄÆ[>Ó>½5>¹H‚>Å«F>Æ’Û>Æõ©>ÄóŽ>Ä>>Â1C>ņ>Æsæ>ÄÂÝ>¼²Ñ>Áã§>Æ™>Ã6Ð>ÃF¾>•ó>¯—2>·«>Åh>Ũ×>¾¼ã>½i¾>Á•6>Äܽ>ÂûN>Īä>Ć>Áð¬>Àiö>¿;£>Û´>Ånô>Ã/ç>¿vÆ>Á#|>Á6Ü>³Äò>¯o>À>¼°>»8Ï>½\·>±»>Ãiü>ÀÞ÷>Á3^>Á×ë>Ã~>ÃÑ>Öb>ÁÉi>Ág”>¿½)>Áy>Ã0Û>ÂŒš>¿ŠÖ>À¸>ÀŠÊ>±‡>¾å=Z/,=yG½=Œ,=™ÿ£=§&/=¯°”=­Œ= G²=’ª=‹ì=…ò=v7Á=QÈ`=-2=êš=!¿Œ=B}*=ov9=Šúo=“ò‰=‘cG=†¼ê=qð=WP=?e8=.†=+rx=? Ñ=dJ=„é5=Ž)^=‰¤ -=uü=Qó=8p(=/Ãf=0г=2±j=5Ý{=>x =G¿~=I%4=E»f=K3b=_ܧ=yä^=…¡=ˆ%=ˆ=Œñh=N-=”®Ð=›vô=›>ï=”— =‹D#=‚€©=z•Ö=yò =~Õ*=‚&Y=†\ô=Žwt=™==¢t7=ª™'=³o%=¼z=Â-:=Åå–=Èy^=ÇÉ„=À8„=²+ò=¢XÙ=•4¢=Œ¯Õ=‰:*=Š´=‘½û=Ÿðš=³¦´=ÅËÁ=Ïß=Ðýý=ËŽÿ=´I=¹¯=±¿S=ª:–=£‚®=ž¡=š/©=’Ã=‡Iû=vR_=cë"=UÁ=D¨ =9G=A =a£Ü=†Tž=—Ñ =¡·®=¥ -=¢i=˜4h=Œ"{=ˆ±H=•ÄØ=°d =ÍOV=áLÉ=çd=â¾’=ÛÌã=Ú=Þ\y=๹=×}=¿G=¡+‚=‡w`=o¬b=c8=bë =j§‘=yÀ±=‡ˆ]=’þ4=›šh=žê^=žî/=¢¦=¬Ý =»‰Î=Â×=ºE»=¤{2=Œì=t˜=d=gÌÑ=xRÜ=†Cº=’Mô=¥>Š=ÀD!=Ú7=æ2Ø=àÞK=Òð^=Æl=¿Z=¿à"=Ê×þ=ÝÆR=îÏ=õ“r=ò,â=èÛ˜=ÛT‰=ɯ=¶/(=¥»¡=›n=•´N=‰­=‡Ÿ=„º=òå=žì=ª²=©…#=§:¢=¯A¥=À_í=ÏL2=Ò$½=Æ/^=±)=žòt=˜ˆd=›v =M=–á6=ˆÕ=m =L°Õ=<ÓU=FQn=dã‹=ƒ„=‹5á=†‹Ë=nN#=EêH=" õ=|Ù= -çb=LB=$î=1ê¡=;›«=FÈ=T„£=`_ =oŠS=ˆà}=§E =Í/T=îñ=ÿ°ƒ=úº<=ä6N=É6×=·=²J=²Þ=«M²=š†m=‡îÍ=}‘ª=… ñ=™ï=¸=Ù=÷ç>ØÖ> ž[>9>™õ> -p¼>i%>c©> ®> -áB>n±>ß>TŸ>Â>Ó> C*> §0> û\>.#=÷´\=ò ž=÷=ÿô0>=úU=çž =ÎÜ=ºBa=±Î,=´=@=»[r=ÂGÁ=Çv =ͶS=Ú•==î¯ë=ÿ÷g>ê®=óc=ßÃt=Óf!=ÖŽÜ=ì0>ºÉ>zä> ­Ÿ>& -m>))w>+5Ú>+ -(>&rt>ø+>[¾>ÎJ>(“>02Í>5Y>7P“>2qr>$ÏT>â> ÎÇ> *n> )6>úœ>Ÿ=û˜>HÉ>ðš> Å>Ô$>ú—>ðM>Š7> ¯‰>Fª=û'a=øR±>XC>»>yl>ß—>Pñ>`V>Ð&=è|%=É)–=¶4¾=¾Èe=ß X>÷i> øë>‡Ê>="=ê]Ï=ØfN=×=é)3>³í> ’”> ³6> &v=ÿ®¡=â¶=Òµ=ÛUd=ñºô>ƒÇ>ª=ë¼°=ΧŸ=¹è¨=¶Z=ÃÚ¨=Ûã‹=ôõ½>9é>=éWÉ=ÄI=œX=|{è=p¹Ñ=2=¹ì[=àî¬=øø>É> -}M>Ä>#´>!¨->R†> yp=ï~=ÀªA=›y&==¤=Ò‡o>òˆ>ræ>óI>‰ï> yÎ=þûh=å_œ=Ó‡€=Í$§=Èú`=ºEU=£t‚=˜Œ—=«Bƒ=Ùl>ô!>b>'·>%6¤>¶C>2=ÛÍ¡=Êë=Îå=Ð1u=ÃSØ=¹Œ=Ç ‡=éÇÀ>W>Ï>‡Ê>Žü>éñ> ¹Æ>!Õ>^Æ>Ðç=히=Ýk=ä¯U>M>‹q>,ÇÁ>9å>?Ê–>B8>BúŠ>>wQ>32Õ>'¢ç>"qw>"–‚>"ÿ©> Ô>—>Ñš>.[>f&>zä>!~»>(\D>(¬>*>óc>íË>R™> -ïÙ>Pò>*G<>9:z>E¡x>Lhj>Ldƒ>G‰E>?ÎÑ>7ã>0ý=>/¿o>0æ;>1¦S>49p><}>I®ý>V€ÿ>\Íü>XÓY>JÕ>7Ë—>)• >)SÂ>5v>B¢¦>H@§>F«>B5>:I&>*w >¼=ö =ßÅî=à-=ëF=ÿ ?>\¥>½Ü>2 e>DÑ>SÊ>Z%#>\\™>Z;Q>OžŽ>>’Š>3éÎ>:Tä>Mii>]Ÿ+>_>QÜË>>Àp>-üî>!»ß> U>˜¸>H{>"Y>/\ò>7-À>8üh>8;>8à<><²õ>AUÞ>Eˆç>Iµ1>L9ç>Iä6>Aúk>6í>'ìr>v>á¢>öÿ> -¾>@3># >'3õ>/³>5Q>4>+è>!±p>#´>0²>>D¥i>V0>[. >OxÈ>:)>' -Ÿ>ôK>Ï>"~Ý>#¶š>#½>–>1> o(> G>}E>3´ú>F´>Oe¾>U†>\º>bÖ>c¨>Xõ[>F\o>7ïi>5kŸ><>Cž>Dï><‡Q>3y­>-Àñ>(‘>!6â>”î>0.>+ ->=ö>L¾m>UÐ>TMA>J¢R>;ß>.’=>%ïß>ol>Ìé> eO> ˜f> 3>èï>(j >7X~>=>9`•>1{ž>*”ì>(ž >-Û|>6ñ„><Ç…>=,*>;×><ª¾>Aëá>Iÿg>MÓÂ>HÅ9>?X'>9Œ!>:X>=þT>?-r><Ï”>8¦—>3ª‚>0y>0ÞÑ>3Ú)>3n‡>.XY>'â©>"†¢>ˆo> ø>&R >*„º>)Ñb>%Ø>§é>h8>¹Œ>-ñ>ùR>*pw>,n…>,í> Ú=õÊ<=ò9‚=ü­>‡@=ýT¥=þ•,>€†> «>$P>J>˜§>g>v&>!˜> hƒ>”c>ò©=ñ¨§=ÙÚÒ=ÈƇ=ÅÚS=ÇNP=ÁÌ=µ¿=­÷à=¯É‹=µ‰#=»å.=Ç©=ã´#>Š§>„N>*>- >0QE>7›Á>C'å>QE$>\ >a·>`ªØ>^{«>XN >JhË>8¶Ø>,­>(çý>*Šx>/‘É>6ñ>6„}>*Öý>ô)>ùè>”¶>^Ö>$6R>$!>'è„>5£à>Dhò>FT>63S>Q×> -;­> >=>[>5º>G‘{>O2Á>Pj>W†|>jèº>~7 >‚q>~ÿ¦>oJÒ>Rú;>.÷Æ>ã=>hš>i#>(®Î>0 -Ä>8ä>CÄ)>Ps‰>`v>pu§>xv>t¤–>h¥ ->[k>O–Š>E{ë>=Mf>:ÇÙ><1ß>:Æ >6`×>4>©>7k¸>@ÛR>OùÀ>`ô†>m;>qö)>sL>w[}>€+c>…GÚ>ˆV>ˆ6>…ËŽ>ƒŠá>€º‰>xmæ>pº>qF+>xñx>~M0>|>tT>g¢>\›ê>^>náv>óa>‡¿—>‡å>‡6>‡’ª>„éŸ>{›Í>m¾">f_i>dl>hvY>súŒ>½B>ƒV”>ƒW¯>zæž>e?•>Q±c>Iǃ>Q$¬>f¦V>}Ý>Žm>–¡m>—3é>ì>‰‡=>†Dƒ>…ú>…ͯ>ˆUŽ>‘Ü8>Ÿ¨Ž>©Kh>ª€c>¥W%>›d=>Œª†>y(>a—r>Xß>ZB>_"å>aê@>fWÓ>rà.>‚Í<>Œéb>™,O>¦Ðp>®“¡>­•´>«Dj>«žF>§jâ>˜¯ë>„o>e,“>R>TOÀ>jWp>„£Q>’®\>›ßæ>™Îá>`>…u>‰[i>Ž?×>‹9>ƒ2«>r>€>XÕN>>ìN>0Bm>3o%>CÚ\>]K,>} Ì>Ž9+>˜iy>šÂ°>•">Œ>…ç%>ƒ\µ>}µ,>mú;>],%>GoW>/M¾>)/~>A0Ó>je >‡Ø:>•„û>¡•–>«F0>«“õ>œÛ~>‚Úô>V]>BxÞ>Hc>Xóÿ>lÓY>~U!>„Ë>>‰Ô^>¨;>‰ùã>W>Òq>…Ã#>ˆåQ>†Õ‚>ˆ >øE>—ºã>˜¥B>”ñó>’õ>”lÒ>–mŽ>˜¤±>žÅ>§WÈ>«yG>ª.Š>©pÃ>«Ò_>«ZD> >e±>~¿+>q.Œ>f›í>_Ò>f ž>u~;>~u˜>zfï>o=r>d¡„>^cu>Yõ>T9>T;Í>aº>xËÜ>ˆš>Rþ>˜%…>ŸÂ>¡?®>šŸ(>òš>ðË>{èÿ>‚Ï>‹ƒð>“~Ò>—I€>“>†»8>p—©>[N>QÍ >V}>_¸>]¡i>K÷‡>='>By–>TwM>[Ÿ³>MŠâ>5äe>&WÂ>%ý>0W>=·{>Hö>Oê>MÌ>A ->0-V>%w>$° ->,PI>4Š>63>0)½>)->&x>*é‚>:úó>Rô»>cû5>f»>_ãB>W >Q»Y>Mê]>D%á>5Š6>.=¹>5Xá>A²>D( >@õg>@i’>Aœ>?¤ß>8Ò>,¢>î>j(>&”>?º\>Vß$>^å>YÂ÷>PL›>G— >?°E>6È—>,1/> æ>Ä>6q>$+Æ>=ËŠ>^E>v4€>y Œ>ii—>SI>Cóí>>°À>7Å.>.£ƒ>8©x>cm<>Šz>’ÚD>Œ»2>‰Eë>‹4X>‰<‘>†©B>Ž~Y> ’ð>²pÁ>º -Ž>µÿ>­C>©½>®[Ç>²Dd>¯À#>¬6S>®RÓ>´Å£>¶¶V>²I°>­47>¥;>—®I>‚%>”OŽ>¡]e>­Ï¾>µ1>¹9Š>ºõ³>·Ý¯>±{Ê>«Óy>¥ß>Ÿè.>Xþ>›o >•) >‹Iê>ƒ–Ë>‚íû>‡0´>ŠŒ¤>‡ß>{[>`·¨>E!u>)Ÿd>¶=÷òú=Ön¤=¾t=°J=©à=©M»=³@³=Ê$#=ïŒm>ºŸ>(/>;Ž>H3q>Q€9>Z¤>eq>y)¸>ŒD»>˜ò>™ÓF>•¼>–Ö½>Ÿ’>¥+}>¡º5>ž>¥ìÅ>²Ns>²»5>¨ -à>¡šÁ>¥»©>«õë>§®Ì>”ÿj>{c>XÉ>A(Õ>+a&>†E=õ‹=ÑØü=À# =À+Ä=Ñ¥=òºs>„e>(¦>D~>d¨‡>‚öé>‘™d>ŸØ¶>¯þ>À;Ì>Ê…*>È;>¼@À>´w·>¸ôh>ÅÛI>Ñå+>Ø«>ݯ>á=þ>Þ¡Y>Ùîò>ÚÆf>ßì>ãWÆ>àÊ?>سû>ÎÔ>Æž>Åx§>ÑRt>å§>ô%|>ø ->ù¨¿>ú >ï ³>ØR†>ȉ¾>ÍãS>ßÌ¡>îËÍ>õò>÷íc>÷ ¦>ö]L>øR_>üBt?÷–?Ÿ8?p¸>ûnA>ýK±?Ÿ>û¬î>óœr>îd¦>ë5à>éâ•>ñ¤?²0? àÀ? œ˜?Æ4>ö.Õ>Ùwë>Ê!Å>ÉTs>ÐI{>Ý"]>ï)#?I/?˜C? -°³?ÿ_?|£>ùá~>üò>ü¯ >ëo²>мÄ>Åy>×D>õü¤??£»?x>ý"[>õ 5>ê >àïc>Ü÷Ã>ÞX>ÞµT>ÝÕ¾>âž>ï™o>ù1æ>ò/>Üh¥>Éæ¶>ÌÉ7>Û§Ë>àcÝ>ÞD§>ç_Ô>øaÙ>þL>ôa>ê\à>î!…>ô *>êº>Р³>² >£U>¬ì>Èê.>ç†>ûT0>ý‹µ>ñ¥C>åMè>ßy >âj>ðÕÇ?ª¼? ‹ -? -Še?ãÌ?ªì?^Ë? -€:?Ùõqà>òÒ>óHÑ>í;ä>Øjÿ>¼j'>°©ª>Àl1>ÜV‡>ód•?|À?à>þ‘µ>óâß>çÍ>ái>ãz˜>ìsj>÷-‹>ÿ\??«?ì4>ý³d>ëº >Ý#ø>ܸë>â|>á[W>Ýez>ß>æ5ˆ>é…Î>ä„ß>Ûš4>ÔÀÜ>Óa>Õd¡>Ôÿu>Îæâ>Ën.>ÑœŸ>àÇÊ>ïƒ>óÒt>öº>ýóÓ?y¨>÷³k>âV=>Éòç>¾Æx>È9½>Ú0î>äê>åi&>Ý¥Ê>ÑB>ÉÀ>Êpè>ÎkÙ>Îûc>Êù¹>Åò>ÃK„>ÇË=>ÕTÎ>ä1 >ê´}>êçF>íõÓ>òû>ï >èܧ>âb ->Üz³>ÜÆ^>åy*>ì+8>æŸý>Óá>½ë„>´ Ê>ºX>ÄK>Å¡+>¾'>·óŒ>ºÇr>Ãœ>Êsæ>ÐÝ1>ÚJÄ>çœ[>ó—Z>ó>­>æó‘>à3ú>å«>ë7>éEg>èД>ïa7>ò>å”>Р">Äz#>Æ —>Î÷»>Ú­Ç>áÅG>Þ‚b>ÙI8>Ú 8>Üýý>âMÝ>íøé>ûOk?•Ÿ>ý›>øÓg>ùÌi>ûߣ>ô]i>àÉ>ËCÆ>Ï>>ñŽ? Ñ?é%?bµ?(f?O­? -1à>ûÏG>ãjc>ÉÞÿ>¿2¥>×Ëd? ^?Îù?‡Û?Uª?éŒ?n?üØ?Hø>ùñÒ>ùòé>þ·6?.ß?Éö?g?Ôè?™›?ˆä?À? 1?qÇ>ûK—>ýäê? -?tg? ”'? -v? Pê?Ú?dŒ? æA? V?Q>öF->ö›=?l#?þ>?>?¨Á? s£?Óê?Ù$? Íp?}®>öq>ç´g>ê…N>óeÓ>úLâ?á?—)?]Õ?å? CI?DL?5+? `-?? -Å5?Žì>þäí>ü7Ô>ð§>Úåï>ÓaZ>æ#i?œ‡?ÍC?nh>ýQ>ïX·>ß*E>É®>°ê>¤£ì>©4>®–ÿ>²¬>¹B>Áà>Å#Ù>Àot>´ž>¯ª>·T>Äï‘>ÓH—>àìe>ò²L? -W~?! ÿ?0”‰?4h@?1 ?)¢?!C?A‰? qÏ>øDè>å5«>ñÒ›? Å°?#;‹?+ÊÎ?'`q?"×Å?%TÇ?)±Ã?.¯?1”Ç?)Õ ? J>ô.Ò>Ó?Ÿ>Â$>ÐÍÅ>ý ?6?-}? t‚?&%?(@æ?+½)?/°?%BÞ?]?„C? À¡?{½?"ÿ:?)Q?+‚Ÿ?#æH?ç…?Õ?)xF?1LZ?30?5Ó(?7Ûƒ?1…"?$¢‡?b?«Ò?¹¨?!þ? Oï?É@?:?@Ê?GÎ?"ÚŒ?-¢·?.bã?+3@?%#Á?6œ>öâY>ÛéO>êëÌ?¢?Y?¾?Ú?Á??pe?ôt?ÅH?\ì?'§?%R°? ½?¿a? ú!? -¬?$ÕR?#Äw?â?xÒ?­§?‘™?² ?X(?%=¢?1Dª?5÷b?.k?Dé?ŽÔ?ðZ?Èy?#p±?-§ï?-q?$Y ?óƒ? Îô?'R*?*/?(¯O?&ÓX?$'=?â‡?±x?!®I?!×???àF?0/?)èp?8t!?<ÆN?5è—?'y?a?>ú?u·?%l8?1)ÿ?4I?5sà?1Æb?+2Ú?+´?-J$?()„?½+?Ž]?ws?ï?Iã?õ?•?’?¤Q?$š?)´p?*D?(%Î?"x?ÞY?æ®?#æÇ?/ì{?==?H 0?Lta?MçÝ?PyÝ?M0L??@ë?.Êp?&?Ó?)R?5Ç?A?H,?Hï–?A s?2Ç©?(ZŽ?;ŒQ?K¥Ê?[h%?_VÄ?ZB?QÞà?LT?M»Z?S¤v?T¶Â?Nq,?Eº?>ß6?=ó?? #?>Ôû??¥?C•ž?H ?FI£?D-?;íJ?@ -?@_?9h±?7ÒÅ?œ?A@w?IãP?Kï¹?M1Ñ?N.€?Iƒ~?=O?3r@?5/n?A²j?N¬o?Sç¾?Q ?Eª¢?=bÆ?EFË?Pe?Qge?O¼¾?NX?IÙ?A¦?9Hæ?6«Ý?4ð8?2ÃÐ?6Œ¨?? 2?GN7?N”?R­?P÷ú?Iz?Ai?=õí??2É?@W­?B c?ES°?HÿH?H¯?Bü©?Aþ¸?G^Ä?KgD?Kç?J7È?Ož"?[ -ô?eYâ?gAJ?a¼y?[d?V§?Võî?Xqj?W¼™?X< ?Vçw?U@b?Z»¶?b)©?dûl?dš¹?aŸl?^ñQ?^ÃÈ?[Ôâ?V§H?Y'D?a°?b£ª?\m¹?YJ[?XÃö?UÚN?R8S?RF?V\??]gr?bÑi?a›Æ?\Æ?S9Ð?G|?@™·?D'º?N¼:?X’Ÿ?]Ȇ?_Ú„?[Ïè?Q‰½?J&1?LÐa?[c‡?kð?q®?hàù?[}Æ?SLP?R%‚?L”'??>ò ?N©?Xè’?[zÛ?\“O?b1%?h£ü?gmi?]”ú?RÌÁ?L×+?Mq?Tí -?^v€?cYÀ?cò ?bkÂ?`§ñ?_¾¨?]û¥?\íÉ?_÷Ê?dýW?i’!?mÂ?j’ ?`Yë?WY‡?Vl.?W=²?TS®?QˆÐ?T¢A?Xé×?U¦„?L‘¢?G³š?M¿°?[Á?c9 ?`CÚ?X£~?X:Æ?aÀï?k ?nÞ™?p™c?qPì?pUƒ?pº?rç±?t‰?nCï?_Ðf?S¥?Q:Â?T?Xˆë?^tù?cf×?e¡é?bIö?^Ö¡?dd?jX]?gÙÅ?fŠ?k,S?p‚Þ?pWŸ?o¾³?r½?sªH?pµX?mF´?jñœ?i´?g\n?c†¦?`…?a'Ÿ?fG‘?m -?pE?isø?[‹S?Qˆ?N¯ƒ?O„Ð?TÆQ?^“p?iù3?sëñ?uq?ppz?q@?y¡N?‹?€ -~?€yâ?ß?{hÅ?yéQ?y¼"?uVŒ?rÄÝ?pÛJ?h™Ø?dD*?f ?g8?k&û?p ?x £?hD?„Ò;?ƒ£š?|©á?o.?hŠ¦?m ?wšö?},Ô?x{“?pu+?n(?nSp?m»÷?oƒ?qÓ·?sq?v„?y”t?}x?äü?€Íz?¬?‚­x?‚%4?~J?p†r?dc?h¯Œ?uÏ1?|.7?xû˜?u5Ô?t›Ç?q‡·?pm?t&?vÓÞ?vl—?v?r-t?iA?f™9?k_?mßO?pM€?w„?{¡?s†#?gêE?gŸ‚?qÕc?w³?u‡?h¼w?W7?R¬å?[€ð?X‚‡?=w?ê?5÷?)ƒê?F}?T€ù?]{Ú?d+p?gÊ+?dó1?Wp:?Lo·?Pkø?X1?Z†ž?\±†?böÌ?mQ?vW?r •?eîW?` ?[¥©?UÁ?T×?Yh1?[sµ?WCk?R¿Ì?[Ñf?o)?~Aß?‚âê?ƒfù?Ä?y÷â?næR?nwm?q—3?oÆ@?rI8?{{L?&?w¸›?iŽô?[uO?Y¹&?d‚‚?o'ç?w“‹?|?tV¡?`?M4?E:ª?I¯Å?PøÚ?Pµ?I=s?g*P?wÇ?{9û?}šb?|êÎ?wþÃ?eçm?G_j??þ~?Vz`?g,Î?gˆÖ?h—Þ?i-Ð?Yr?O -°?Uáo?XI¿?WP?[mß?cø`?lØ™?pÖ@?pÍZ?k§-?]ª?Tva?XNw?\ ã?a~N?iVŠ?pº‡?vqu?q™?b˜|?\o+?d™é?pÓV?wÂG?yîS?vÖ³?jù4?U¬˜?A{«?D:¦?[Ù¨?m¨…?rõQ?kN]?^f?ZJi?cm¡?pÛ?x•?y¦?{ÖÄ?yNB?ux?twW?{¹?€µÜ?‚™€?…'Í?†™˜?…|ù?„I?ƒºÒ?ÈD?zc}?q±õ?p„ž?zªc?‚^ -?‚wh?~‰D?w‚‚?ygû?€0?‚!?„f?…äT?ƒ™)?ôŽ?~›e?€f¾?ƒ(?‡¸?ˆH?‡“ð?„ú+?‚¨?‚#?„ ?„‡û?„¡ö?„a±?‚:?Ü?2)?À‰?BÉ?Öœ?þ?€À¿?€7?}m?D´?‚$Ú?ÄÄ?‚~Ä?ƒ€?ƒÒ?‚Ð?ƒI‹?‚5?xà,?j™Å?ffÎ?mi»?v×3?yœÇ?v»?z'Ž?‚'`?€Åþ?wû×?tP|?pâ­?qF?~?†ˆ"?‰ -g?ˆÈ¢?ˆh´?ˆ’µ?‰N?‡M?}½î?p?x>?€ó?^?‚°?„ø?€º?uÙ?z®?Ôå?…uî?ˆt“?‰?‡‹u?„‚¤?Ô?1ƒ?|s?~©Ú?}«?znÀ?%Ø?‚,?ƒ›?…°>?†@G?„«?|V?}‚?vöK?t‡Í?wr?yž­?|ã×?}o?~ _?U4?‚h/?ƒ+3?‚Ög?‚˜?zÊc?}F"?yàž?w¸>?wæ?z“ò?|d”?y¸ÿ?y*¦?{/¾?}"m?v ?(Œ?]»?ö»?yª?i•Ð?jé?yÕ?|¾?yÿÑ?|d?~q?|“?}-[?}×?{Lû?~>;?~Ù9?xÅò?q"d?tÝ»?{Û ?{|é?x9?uûÀ?xƒV?{œÆ?}¤Ì?wÍs?bÛ«?WÙq?i'ˆ?o«I?ek8?mçâ?zm?z¼¸?t@&?p?rÇ?vì1?x‚?t;Ë?r•Q?síµ?t=ç?køž?\?Z>|?eu¡?mˆš?oð?h:l?b£f?k¤à?oZ?o{+?oˆP?oõU?s_e?sõw?w†Æ?zɇ?z}\?wß?sŸ?s%‚?n::?dò?l³È?wäâ?z??|¾?yà?qØ ?s1m?wÆé?xÁ?zaÀ?|,Ò?|¼‹?|ô?xG'?nõ.?h³0?k²Ì?pë¸?mVÆ?hòë?o¶D?v™?w6?v>M?tîf?nî€?bö?`Ô?j™?tßÌ?wÝ?p¶?hŽO?g߆?k²M?j ?c8?]“B?a74?mÚ?r%¹?j–P?`0g?^ž-?a '?bšü?e_w?kt$?oƒ?`ßU?f¸—?iV?oƒ5?t‘&?s)è?rPJ?q™?pW?r%^?m=?b>»?bQ\?h>ë?m~B?p!_?l(?ihô?kãü?m ‰?qå ?tî¬?v=?rïŸ?l+?l.—?kd?f4±?f˜~?dnß?e6¬?jd}?nJí?p`ö?nî?lä¹?r,‰?vv?u;?t6?qE4?o4ù?o[O?q€]?qg?r -Ñ?u_æ?v.8?tÁ?odE?eû/?f}?q»5?u ´?l9ü?aÔ?jöa?t¾?vÂ?qÄõ?i³ç?jøQ?l ?j:C?mßó?n'û?mÙ'?nY±?iÃ’?dŸ?l0?um\?vk?w@Ï?v|?m¯?cqÊ?fVœ?p ?u]^?p?f%4?j=4?u"?vèç?vw¥?wM{?tï?fÎX?`L?l±?r5Á?i1…?až»?kÜ?tÖ~?oá;?b¯†?eÎÃ?q7Ù?tÍÚ?rbÅ?mª ?j£Ú?nw?qVŸ?qšk?u›ô?uIá?p¬–?hj?hî?pn¤?t«`?uãð?sa?l3Õ?bù`?Rá/?EŽÙ?GhÒ?U Ú?a;l?kGß?qAÍ?tS?uÑ”?vë±?v{]?v"ü?uûÀ?tHI?mÍz?fr™?f„S?jç?r)r?t ;?sÈ@?rŒP?m K?mVä?qô?r…&?o -?omR?r¼ë?sÓs?uy?v!c?s¾E?qöP?nTç?h`×?l·¬?sc@?tõ?qJ?m~å?iõ?iÉL?fY ?UØ?+‡?P3?)s`?["G?l -2?iÅV?i‹Ü?kS½?gLÂ?ežõ?n S?ucÂ?t°Ï?pÿ ?qý?r2³?pF¬?pr\?tn?t.ÿ?j3?]Ø?dë_?o )?pTk?så?vì'?vCê?pïi?m–ƒ?lîz?iÂ?kq³?rg?p*¿?o–¬?t?Ç?u^d?v{?xEñ?wÕ?txq?qû(?r÷?sÁL?t4û?q?iÌ3?f‡¶?m¨?rõõ?rBí?q§m?p#Ú?i?j\0?oÜ ?r?sÝœ?t™?t}µ?sñ‚?s& ?s*ë?s@¡?qEö?lO¥?e=?i‡ý?o}Æ?psÒ?q~­?r†“?r%Y?rÈ~?qAÍ?gã,?dr–?lê¶?qÞ$?søº?u–ä?vw?uÄ:?ubH?uFm?s½µ?qÏŒ?nF¥?lÆ?n -1?q‚å?qD%?l q?kX?n¹M?o%?nן?mü¢?l@?iþ_?gžK?cð?gÈü?m%;?kÅö?lˆˆ?nuL?lý?n¨µ?qC?pÜÇ?n$‚?mÆà?o1Ö?lׯ?i $?i#¦?i‰À?i‚,?lŒ™?mHG?i4›?fB>?i³u?kÒ+?l€Å?l|¸?m7ý?pg -?q^_?p‘m?oÚ(?m_O?iT ?h¨3?jÚ:?i\ñ?iKV?jÀa?l¯ä?lŸ½?m”?l²@?fý?aa?a<3?fÑ?h8ã?f•$?ai‚?aW?d´?bt?c€~?hÔç?jÆÅ?jY@?h?e?c-e?bñm?c/f?fnq?h-?e™?d?f& ?e3ó?a›8?_¢‘?]y’?_A¿?a›¸?b¦?cgU?c°à?_<»?]Íý?`VÖ?`åô?`& ?^?^iD?aUN?_Ó[?`+B?aHn?_S—?[Kë?X²ñ?[<¦?^?[îô?XÁß?Yâî?YžŠ?[É„?^ps?_A™?^™.?] -”?_k?_òë?`w?_wá?\˜?]´?]OÈ?XO¬?Q4?L½Ú?Sb?[ ?^zŸ?^4?]Û#?\ŒI?]ø?]«9?[ÊX?\®q?]ßS?XÎ?S{®?W¢?X"0?T¯Ê?UÊ`?YÏ#?[M?Y¾Ë?Ylì?V ?L&-?MV?WBh?ZCx?UDe?OË0?S!“?XjÇ?YRN?Xo)?XHu?Xä?X‡è?VÞR?S?ZÓ?`­ª?^?Y]]?[è·?_ØM?_Ó§?ZNî?V¡i?Z /?]ñÔ?[èú?UñX?Uú+?Y[(?YKÃ?Rˆ?N¨Ù?T§*?Z¢?[¼?[!?Yù°?Z-q?[€¬?\Zs?WzM?O·d?Pf_?U9W?T•Ž?RŽ?S.L?T¡«?V ?W„?XÀ:?XØ?W‘Z?Xõ¦?WÙ‰?Stù?R‚Á?P&(?NË?Q¢?Ris?RFÁ?Q–?O¦n?MÈ?PÄØ?Så—?SæZ?QHú?J†×?Kg¼?Q{'?T?UgÇ?U³^?Tb?TN?RÆv?S6?QÓÐ?J·,?IÐG?Ok?Sßq?R&?R˜O?Uš?JŠl?GP?E*??CãL?G,Î?Fj_?EG´?G‡Ò?JJD?H?C=?AS*?<.¾?:áØ?;Mî??&Æ?Aï?Aoè?EsI?Fc•?C µ??Î ?Dgö?Fž-?B??¶ì?9OC?;,??ò€?7'Í?6iù?>¾"?A)å?<&`?5D?='ˆ?F5*?G÷—?DSÌ?@0"?CÖ~?GGòI?@2O?=P~?>^¶?@Ö?C0†?Fúø?I4?I›B?H!·?FH2??Ø[?:6[?B­l?IUØ?HÜx?Gg?F€?ERs?E -à?DÖ®?DÌ£?Dÿ?Cv;?A÷?DÚ?HFˆ?HW?E(Ú?BT^?>>ç?;V?Dö?G+X?GX?H2¡?Fó?D¸?Džé?D°:?=t ?@UY?C.®?BèQ?G!=?I%?F2?@Ò?@Ú?CóŽ?Gì?E,Ç?ASv?Aÿ?EôK?H„¢?Gü?D·Ü?Erç?HW8?G’ƒ?E$?GGÁ?H¥?Få$?DÝ/?C–È?Ft­?D|ƒ?C·?BûÀ?Bx?E~#?D~k?CÚ?FP?Cø?A†ª?D%ý?EfC?EÙ?BøI??f ??C?B;=?Ež?Dþt?E‰V?EBx?F?î?G³U?Gox?Dà??D ?CðZ?C´?E´?C?Cä{?D&r??÷Ë?:«|?:‰?=â?D”è?GU›?Hî?H,Ù?G©?GÞ>?G‡Ø?F÷?Fƒ?D}m?CVï?FÑ?Fà`?Dm©?D½™?F_=?GAŠ?E*Ñ?>‚*?;Xj?9µ?7c?9™Ð?9Lâ?3\Â?<ë²?BÆÂ?Bn–?C<.?D2Ã?FÜ?FÕ®?Cþ ?AÊ]?E#“?Eû@?DýÚ?CÙ?B[û?DN?Eà9?Em¾?B(a?>óÃ?@Sê?E)!?F<[?F-M?Eý!?Aê -?8Y?6IÇ?:þZ?@²š?BW"?B>”?AÒJ?<Öa?9Xå?;®5?>¡Ž?CkÁ?E ê?D(+?Cí²?D]E?DRP?C@ ??ÿ??¦R?;4?4›Ï?7‹ž?? -µ?C4W?D‘§?Eg6?CŒ‡?BÌ]?Dîû?EC?E+§?E×µ?D\Ê?>WÕ?9½Ä?:%??W¢?B²·??U?A Ä?E ?Dmu?@Åd?<ï?B”?EÏ?C¼õ??ôK?<Ò]?>Âñ?Cö?Dû”?CÙ]?A(Þ?@†ñ?@¤N?Cíw?F?§?FC?Ftò?F*W?EòÕ?EïG?E>V?C;E?Aõè?=á?8S?˜Œ?@‘?B -µ?A‚G?@˜s?@F{?@Zø??%?>;?;€’?9‘?9¸†?:B¥?;7?7»e?9;R?<¿Í?;Ü.?;šT?;–?8Ô=?1ŒV?-º«?2Uç?7úM?6G£?5šD?8Õå?:v(?3¡?0¸Ÿ?/Í]?0+?2†ø?,g?/b¤?2Ò%?1w[?2à'?3Ó?0.l?.žˆ?,D0?/Ј?3…o?,æ?1©£?2j|?+µº?'›û?- »?3µÅ?3Åu?5œ?5­?3$(?2N -?1¿q?/©„?-Å¢?1á&?6NÈ?3òf?1Úb?38¯?5(V?6y?3á®?2^’?4· ?7Ô?3z³?1'/?6”’?: Á?5!_?/³?1}?-D¸?'ý4?-='?0Zž?3ºŽ?/@X?/¯â?2¯Ê?1i¦?4vÜ?4ÂÖ?4·Ç?3Ïâ?2H?.¯è?(qÖ?&­ž?+M‰?2xm?3ÈÔ?0??2Ðü?4ví?2ß?/³ê?)ª?$£?&ûà?*žN?.v•?.ä3?1{g?3Iƒ?1Ï?/ò?/#î?0R‚?/2ç?+¯¡?(«?'†A?)ç?+#y?.?+šk?) Y?)Ëç?'3?+z?*žM?&tm?"Â?%z”?'LÒ?' ?*9º?+ÁÚ?)íP?)y?*(q?)^Ö?)Þ?)~G?'%€?'=?(ô?(?(Ç?)§?'‹e?)»?)’?)I}?+‚,?)ûà?(¦Æ?(XÈ?&Vš?&s?)&*?)Iˆ?%èf?$`?'y`?'¶E?(©?)ñ}?']Z?"1Î?%#?&ÛN?'º?'ú?'®€?%iS?%ü¼?' ¾?$Š‚?"ÑM? p|? %?"l -?#™.?(p/?'t? m¼?ÞÈ?",? iS?ºì? …?ÌM? ¨Ô?!Ú€?#c”?"¾à?"D÷?#w?"ªÿ?™Q?§…?#/H?%óH?$O7?.@?¶Ì?íÛ?#Qê?!ê? QÓ? ,Y?!¸?$$›? ¥ü?›?h|?!Gœ?!NÅ? —?!Î?#¾@?#V?­¾?`å? |H?"þ?"kP?nG?yw? A?#\?#Ì”?!¾?"F? Q?³†?!J¤? ˜º??×¼?Êì?…c? ©Ô?A©?åR?Xð?§ø?¡5?»d?Ö|? •Ô?ÅH?ªQ?R-?¨k?—P?Ž™?m‡? -?!?< ?·l?;Û?Èí?ìj?~D?E‹?ô? Ŷ?á5?«4?¯?d¡?b ?=¤?ýr?;Æ?P‚?”?&?Éø?ïU?™¦?!©A?>X?aÞ?ù?7–?@N? '?wÉ?lÌ?¹O?ÈÀ?^?)R?Q¬?°I?}¢?dX?Ec?Ä?ÝÇ?ï ? ¿? à?IÇ?œÜ?" œ?!Ö€?¨,?&!?fù?¥??ø?s¦?Ñ@?Äh?ê6? X?$Z8?#¤í? /‘? /Š? »!?!ð??µ?ô%?þd? %?Ä?$§ù?$ÃÅ?"4Ç?(?] -? Ò_è>âSË? g&?²Ó?^¬? Ô‘?!ûX?ÛS?Æ3?nh?z‘?+Ö?ü??Ä?¯?Ú1?;ñ?"Ë?Q?ÖK>ëÜü>®Ø‰>l5>É™9>þš? "_?â°?t3?ò˜?¤½?‘?Ô)?þj?¤]?pÎ?hØ?A?„Œ?xä?æ? ‰B?ÙX?¨à?=Š??l?J?¨?¶ ?“Ÿ?VÄ?"t?|X?ñµ?ìÈ?%µ?ú?J«?É -?ûø?vÁ?g?Å?,_?'?±y?µ?#±?Ÿ ?('?€Ä?-U?ßS?aŒ?©?Z`?Ï3?÷?©½?Ê]?™? t>ï¨é>¥†>ª`å>òei? }?L%?X?Ë ?uÕ?»?%?C?!¯?]d?`I?¿R?k ?VÂ?=É?€`?dh?c¢?h?z!?Kj?Ð?±?W?rÓ?Ðè?lñ?I?D±?„?Ä?Ú°?×/?´Ú? -†?oë?ïM?½«?¥??Œ“?&Ò?d ?Ñ?²?1þ?¿?âŠ? -Õ?L&?–?Ô?~ -?»h?j?7[?Ùñ?J?N`?Xõ?ª?À??²b?}=?/^?¸Q?_…?¢ò?=[? ?„?±a?ÎÎ?£q?0k?LÐ? ¬?¦À?¤.?TX?áÍ?ë:?BU?Éx?p?Bò?êS?˜;?6¦?Š? ?¢ú? tþxL>õP}?% ?•Ã?ýo?Ô ?m­?Ñ?_}?ÁÌ??ý ?Ÿû?Û? ’?Àø?|@?×,?nS? ý?Ä?P? ƒ -? - p?Ý?vÒ? -8? -Ã?Á2?pb?Úg?²?çu? :? ÃJ? -L¶? ê?r)?ì?;‚?O ?]›?í‚?_¦?»†?Z•??uh? -‚Œ? tæ?éÃ? ‰Þ?Ý™? ï÷?Ko?9x?_Î?c?î¤?_8?Ë¡?]M?”? ?V‚?Æ?ö)?g€?¢[?[¤? ¼?Ó{?;?ØÝ?qã?-?‹Ý?%“?R?ºo?$?Š?9ç>õC>ü??é>ù"E>?ï9?¯'?W?û?‚ª?žÆ?ÕÒ>ÿ ?}?"°>ùŽ?.#?)l>þ×k>ùjr?I­?ó»>ÿÈI?®?&J?Ð?›ú>ýø?Üè??*Ä?I ?E•?Ê×?–Y?è÷?ð>þÒ²?2-??˜??³£?‡ú?RÝ?Í?¯v?ÓY?¢œ?ðã?Ùµ?á6?²?²¬?go?¼“?Él?p£?‰D?ë?ð»>ý¸¯?Ìõ?”{>þ¶`>é¢ø>ñ4)?:7??l?Ô?¾Ù?¢? ??½^?TÊ>û¦ƒ>û6 >þžW?ž?Û ?è#?ø?HÔ?3í?ă?A?²‚?ž«>þx0>þÁ>ü°>ûÙŽ>ûÎf?+?ä?fC?lJ?p@>ùðR>ü”$>ü^u>úvo?+é?Óç>ú¼>úì;>ûTO?ò'?º?H>ûO>üãv?'²>þEŠ>üðÒ>òšÕ>ù} >ÿ•[>ÿúÔ>ù%Ë>óÛÛ>üw:>ý=x>ÿƒ?¢k>ü²€>õŒÕ>öµæ>ú >þ¨¹?¶ ??>û -T>ú4®>úðy?@E?RÆ?ö¾>þo>þ‰]>ÿ±>û÷ò>ÿ`">úé{>úG=>ÿÛå>üdk>öÉš>ïî>ø >ùÒ>÷–‘>ñÒN>ù»Ø?;»?,1>ÿ#D>ýZÑ>ýÍ>õôM>÷̽>ünø>÷>Q>ù€A?À?Ç¢>ýw)>øìU>òò¹>ô®_>>÷o¢>ýR¶>ýP©>ùÆŸ>ù*f>ùñê>ýÆ5>ý®J>üÃY>ûl>ü½—>þQ²>ý^6>þÚQ>ü~­>ûwÃ>ùu>ûÙZ>ü_ø>õN@>÷èÁ>ýÃ>üŒ>ûg>ü Ã>ý >ùÏ]>÷·>ø‹g>øsi>ú~Ú>÷Qa>ô(y>ú¨ç>ü9S>ü8ñ>ù¯>øP#>üÉ >ýí®>ø¤Y>ù>û| >õ,þ>ì  ->ò¡>úÈ>ùS>ð™“>õ#>øKÇ>÷Zº>úµW>øp>ñ‚U>ó -Ô>ùÜD>üªª>ù‘>ô?>ö#.>õýÅ>éý>òî >úäU>ú¹H>øaØ>õ‹˜>÷D>ø0>ôJ*>ô¶B>÷:{>ôý0>öÂW>÷ªÅ>÷;æ>÷×>÷ˆ>÷73>÷•<>õü>óâq>ö‡?>ö†¨>÷­>õˆY>õiþ>÷…¨>ó)>óU>ñc>ó~›>ó>ö6ð>÷>ôØ>õÂN>÷’!>÷‡¢>ôàŒ>óö>õË€>ó‚¯>óÃ>ò¢“>ðZ>ð¾Ò>ë†ë>ñÊ2>ô#Û>ôƒú>ð\¸>ß^­>ݘ^>ðQ6>ð«á>ìÜ×>ñ¾g>óm>ñÒG>ò“®>ðÛø>ôU¤>õeû>ó™>ñ;¶>ðhf>ï/Z>ìöE>ñL >ó­>ó%‰>ôb>ô—>ôé¯>ó„>íj>ê7t>ñPo>ðÑ~>ëÙµ>îéÎ>òÞê>ðø4>í Â>ë7…>ðéŒ>ñ‰Z>ñÿ>ñ“»>ðË>ñ…2>ðC ->êŠ>èGA>ïDò>ðH>îó>éÁÐ>íum>ñ›8>í73>çÀ½>ê¦1>îKœ>î,Ó>ì™A>ð…Ê>ï«™>î(;>æµR>ãÅò>é‰Í>îN>êÁ¶>è™}>í!(>îŸÝ>í[¹>ë}Ä>ìú">ìdZ>î˜>í?'>å§6>å¾>íZ>>ìæ·>ìï`>î5–>íS>ì‘>ëÆv>ëàJ>ìw>çï>èou>íLç>íV/>í¡>íƒh>ì*ª>ë±Æ>ë >éG´>ëdG>ëzÚ>ë4>ë’(>ìã}>ì‡>ì>>ëË>è¤0>àùE>é£O>ìiÈ>ë³>é8˜>ç°F>è>鎸>éŒ>é‚Ž>ç H>êê>ê+ >éå%>éÍ”>æÕØ>Û>Ùð/>àT\>ç|>餈>æ‹œ>áèB>à™í>å§4>æEï>è½z>æƒp>ç3ç>èdö>èŠù>ç&0>äó~>ç[>à…Ç>ßÕJ>çÄ3>ânÂ>à®'>ç‰P>çŒÓ>ç<>åÛ>åuá>ãO¹>Úø">âÀ¥>æ{>åƒð>âÍX>ä3>æõz>ç‚>årã>å°>å–ø>Þve>Ýc>âµ>æÌ>å&ý>ã v>äV«>ä8>ä¶>åš»>ãÒ>á–>>ã…©>Úé>ÎÛœ>Òú]>Úþ2>â8ê>ãøt>Þï'>ÜìŸ>ãŠ->äµ>ãäý>ãôY>ã´·>à‡>á!©>áç›>â¦>ß×m>ߺ³>àJi>Ýž©>áƒ3>áè·>ßiî>Þ²õ>á@¤>ߘ>ß—¨>àJ…>à‚>àV‚>Üø>×¾J>Ûÿ½>ßÖ¦>á>>Þqæ>àð>á¼ë>á-‰>à_Ÿ>áV>àX8>ßF>àf¸>àùŠ>à™ ->àrö>ßó²>Þ”7>Þgü>Ý.h>Û¸é>ÕB8>Í› >ÚÞ>ßüæ>ßÒÈ>ßE`>Ý»>Þè`>×t´>Íj >Ø%ì>Ýf¹>ÛÒF>Ý`ç>Ûµ>ÝX>ÞÓF>Þj±>Øi >×”/>Ü—Y>ÚýÆ>ÝÔÅ>Þ!>Þ(÷>ݾR>ÜšÄ>ÛÎ>ÝF>݈>ܽ>Ú³>ÎÇí>Õÿ ->ÛØ[>ÚÜÈ>Ûˆ°>Úaè>Ûw>ÚÅ£>ØO=>Êœ³>Êó,>Ó©ú>ÈxØ>Ëïè>ÓÛž>Ú² >Ú0ô>ÚÃ>×Ñ%>Ï–p>Ø'>Ú»Ð>Ù·¤>Õý²>ØÞi>Ú/ú>Ôÿ'>Ê M>Êü>ÔI>ØY>ÙŸ;>ÙŽá>Öô>ÔlÎ>Ó±^>ÍrO>Ðñ>Îãá>×W>ØýŒ>ØØ õ>Ôj>Ôд>×ïJ>×HF>×°V>Ö»p>ÐÖc>ÌVí>Ê¥„>ÔC>×¾0>Ölä>Ô,?>Õlš>ÔîE>Öš>Öþ¡>Ð{ï>Èšµ>ÓL¨>ÔNg>ÍŽñ>Å@>Ñùm>ÈA>Écy>ÓI_>Òûþ>Ô²>ÔÎz>Ôbž>Χ>Óº,>Õ]ÿ>Õªè>Õ¾k>ÕØ[>Õi>>Ð0ö>ÌLÎ>Ñé>ÁZ>Ç–3>Ð -e>Ò¤Æ>ÒLE>Ì’m>ŵ\>ËM'>ÑŽ>Î’a>Íûû>Ìb;>Ñð¤>Ókû>ÑäQ>Ð'3>Ò÷>ÑfÔ>ÃÎ÷>É ¾>ÐÏÛ>ѤÃ>Í©>Ç®>ÇU>É`>ÈYŽ>¹Þ€>µ:>ÆÈD>Ê@>Ë®Â>Ê·Ë>ÄŒ$>Æ2í>ÆW>Ëîe>Æg~>»O¨>»>Å¡G>ƾÙ>żD>Åý>¸]J>¾Î>ÃIÄ>ÅHl>Ǥ¡>Ç>>ÄŸ¦>ÀNe>ÅMÊ>«.>Ãëø>ÅØ´>ÅêC>ÀVt>¿wæ>¿¥’>¿«2>ÁuÍ>ÉUU>ÄÆ>¿áP>Ç£Ï>ÆÄ&>¿Ô>º÷>Ç$÷>Öi>Á~Á>ÈÚ>Ç“¬>¿ª‡>¿¢N>Ç°í>Çú¸>Å6o>ÁS—>ÃÓM>Æ“ß>Ȫâ> ,>ÀJb>Ç„V>Ç-à>Ã’B>¾7—>Ç ö>Æ”ž>Åò>Âf<>ÄGÆ>Æd >Äd¿>ÄùB>ļD>Äêé>»³>ÀJ>ÄÌŠ>Ã(¥>¿÷w>¸‘>¿„Ï>ÈG>Æ1>Æ >º¢>À”7>Æ2\>Æ7>ÅR>»•>½Ý+>Èë?>È!½>ÅN>ÁÙ>À6V>Ãaw>Æ|ž>ÃéÙ>½|Æ>¶?V>¹O>ÃEX>Æõ…>½è>¼¦H>¾„!>Â?(>Ä*>Æ[å>¿ö¬>¾¯>Æ°>Äyé>Ã>ÃO>¾’_>¿g>ƽÈ>Äò^>Ä3ô>Ãï>¾Ø>¼iM>Ää>¼z>·%&>¼G×>¿•¦>¹«Ý>Ã0>Æ>ÄWC>Å3Š>‹5>¼Ì>»àí>Äv“>ÃI>½&ê>¼Ró>½× >¹4d>·Êá>¿Vã>Â,<>Ám>¾Ëí>»Zî>»Ú>»mC>Áð>ÁØ>ÁYï>ò>»X>µIÿ>¶û•>½í%>¾ñæ>Áë>Áai>¿¾J>½V<>ºóy>¸¥V>½_q>ÁIä>ÁIë>Á°<>½æÃ>½B>±ù3>¹e…>¾ªi>·Ñ>¹îÑ>»9>>·,§>´Í—>¹ê>ºó>¹+>·å >´)U>¹È>¼¾›>ºµ>¸JÈ>½®ó>½>¹`>¼Ñ¬>¼Rê>¿[>½(>·ý£>µ4>»…Ú>¼î½>¸fx>¸Ùÿ>¾&>¿#h>¹\…>»ÉÙ>½²[>¾y~>¿CÚ>ºãG>¹)è>¿ì>»ã‰>¸âÕ>¹>>¹5¼>¾$*>½›­>¹ËÚ>½'ž>½é†>·ù >·¹ç>½.ð>»¿u>½ZÑ>»®ø>¶ä¢>º6>¹ï>¹8è>·˜¡>¼(¡>»­‘>»V>¹Œ_>¸h >½3…>½lS>º]">·“D>¶“>º/c>º)>»|c>¸/>»íù>¼§>¹ê€>¸¤>¹Qæ>»>¸G<>¸Ž£>²%>ªVÜ>´OÏ>»¨>¶?L>¶4 >³¨µ>¬Œô>«ù/>¶0†>¶Yw>´¹Ñ>¹l>¹É8>³p¸>²<>¸…«>¸A‚>®~£>°Ò:>¶ñ‹>·³;>µÓã>µ§×>²ßØ>²6>¬ëŒ>¶Ã>·×ƒ>²r¨>¯DP>´’>¶§>¸D>µ»>µpý>·Lu>¬¥Ã>°‡ ->³qÊ>µî©>´ Î>· :>¸Ê>µêN>µ``>µ“•>¶ê¢>¶îú>µiR>³Ja>¶Z>¶n>· >µN>´‘¤>´hÂ>¶™ê>´~±>­³¨>®ŽØ>£öç>¯>µ¼>¶­ú>´ò·>³°ë>°s¦>°n>²m*>°@Ã>­c•>©Ùò>´5=>µ>>µCi>³ÌT>³?>¯ˆ©>²1D>´ÆÞ>³s >¬›[>± R>´.è>°ÄM>±ÐØ>²_>¥=>ª|Ì>³µ<>³ƒÇ>©ß>ª¬é>°¹h>²™W>¯C€>²Ñ}>²û¼>±÷>¯*<>¬ ƒ>±H¼>³žC>±Ëï>¬íE>¯%…>­»‚>¤à£>¡¬>¯ï>«À>¨BÍ>©s>°RO>±Êæ>°R>°4ñ>°§‚>±ïñ>±‹>±ñê>°¢">°KJ>®ö¼>°4Œ>±‚¢>±\>®ÏÝ>¯¬>¯†“>±P>¬Žº>!>æ>%›¨>13%>Apú>TK©>[>N€µ>9¤‰>*ô>"Ÿ'>2{>.ç=×L=ÄÙr=Ûf¦> J•>8)±>_I°>t>qÝÄ>]{>CL>,îÿ>‡ß> Ž†=ýÏà><ê>!*">IÅó>náO>‚>…>ƒEþ>x5ý>cnó>R8>EÎ2>:8>0A->,Ô>0·>5’>9™>>¡>A±ê>-ºr> > Ø6>6°>\Œ®>„œ>•BÕ>—âµ>‹f>oN>LÇ>2›½>Û¡>ÿ=àˆú=Àâ¤=¶æù=ÅÚü=äŽ'=þãŽ>[V=ù¸=î9h=ï‚Ý=òx=â\=¿7µ=¡p=£"=ÏÄö> Õß>6Í7>XËã>r©U>„¤>\¼>›åã>¤W*>§t†>¦Hè>£õ>¢­>¢éd>£Ø>¢°º>œ"è>‘m¨>‰¾>†Y†>„"5>uf>S#â>/9Î>Ko>`Z> EŠ>2ÿ>DÁ7>Um/>g~ ->uŸ>uZ¤>lV;>gq]>i8 >g„Î>].µ>Poû>Gü>CñÅ>Dm>GÒÁ>Iäp>HtM>H¥œ>P>>\€>hÜÛ>x¸Ã>†õ™>9¥>FI>Œ©3>Š'*>ˆN$>€¦·>_£>5<½> [>š˜> £F>Óí>(Ê>B‘‡>iÄ®>ˆÿf>•›Î>™3°>˜%S>–´Ç>•Ü>“Ý>Žî¥>†Ë(>vVâ>Wšï>6¡I>‘Ý> ²C>^>Ê’> -<^>˜ì><‡«>`/ >q*ž>hh%>Ubé>Kê>Lp.>Pž>U¡->fýÙ>†Ða>Ÿ—©>³>»X:>¹˜æ>±“s>§i×>Ÿ¿Ü>žŸ>¡å> ­ç>”ÕÇ>{Ñ|>HÆV>!ÊÅ> yü> “$>ƒ=> Sÿ>0 -=><Ê—>GÌ >SzA>_w°>l>>|Ð>†X#>ˆ}N>{ö¦>Qþm>'™/>òÈ> ²«>£>9xq>M½±>WÇ­>`Žv>ræA>…>Š#>…—ò>}!í>w§Œ>zÕ†>‚Š#>Œ …>—ºË>Ÿßš>¢0Z>  ->š`>Sø>€Àø>Z&Ù>5é>RS>›‘>Ib>šU> L>›> øV>0´>8å“>@¡R>Os>`8\>lõô>røê>oÑ2>cô>Yx™>XÌ>V¦¡>F±>)L>b>ÞV>Ò¡>ã>Œ9>&p>8/_>Hà>Làä>@ŽK>+“Ý>Áë>ƒM>¥>!R>,@±>3U>80>Cß>VÍÓ>e¯æ>iô>j¼]>tÂn>†tY>“_6>–>Š!>oïè>[ž;>h†I>‡N»>šb >£“ˆ>¡`î>˜2t>ms>¸'>id>²Sƒ>Â7Ì>Ç„è>ÆË‚>ÄPƒ>½}Ë>²K>¬Ë¼>µ©þ>Æ¥R>У>Éhr>¹öØ>°ƒè>µX>Âv»>Í7>Ï&1>ɧ’>ÀòX>¸¤>>´¾>¸‰>Àâ\>Åø>År‘>ÂNŒ>¼‰d>³˜»>«ÄW>¨Þ'>ª M>­M¢>°È‡>±R‚>­[¨>¨.Ÿ>¦lˆ>§¤Å>§` >¢Þž>šïû>“ö|>”Á >¡«Ã>·1;>Ê ÷>ÔA]>ا>àv€>ïµ>úêÁ>õ£s>àØ>ÊFi>ÀF>ÇÚ>Ú³—>î9à>ûa>ý4g>ïXX>ט>ÄÜÚ>Áoä>Á†³>µ¶6> ù>Q>>œlõ>­”>¹(Î>»Y™>´ ™>¦;²>”*¼>€__>a¿>WûŸ>jÜí>ˆpo>Ëb>° ->»ÛÅ>¿ ´>ºoË>¯B> 9>“;>“”>¤¹ >¼Û@>Í>Íe8>ÁtP>²¢ã>©Â>¬wŒ>¸ z>Á4>ÁH¦>¾f">»JÃ>±Îb>ŸCþ>ŠÖ >}<ý>;œ>ŠrB>—hX>¡Iq>¦`î>§|>¦/ä>§·>¬Só>²X•>¸Wî>¼Kn>¹èë>¬˜>•6>zCn>fy >~ á>œWÊ>¼YÂ>О£>Ó‡á>Í(>ÇZ>ÁúÈ>¶7˜> i/>‚Šs>F±Û>=þ> d>4ºì>s®š>— -,>§XD>¥ë‚>•Ô³>€¡é>\Ê‘>A˜™>.„>%¸>$L>&n.>*Ò›>8J">SÐ>yõ>”3Ý>¨êI>²º%>®×q> Wœ>‹­>jGå>P‚+>RQK>b>mô>v·>€á >‡®ç>‹_?>‰ õ>ØÃ>x+©>wŸ>wAâ>hbº>Mf>4£¨>,¤>5Ëî>G±>] >x9L>‰Ì•>’`Œ>“é¯>“4T>“Þ>“;Ò>Ž’Y>†»6>y…^>cm£>Q7í>GÒ>F7^>M‚I>[¿Ó>hT>oÅM>uSg>vg X>I9w>*é¨>(¿>(–>AÞŽ>\Sœ>sa>†y‡>”š>ž¼Û>Ÿq5>—¤G>Šð‹>{š„>iÇ‹>b2Ä>]dž>Y$Û>b“–>ƒc‰>žÇe>µî¡>½v†>¶PÉ>ª¨>¡7ò>š†->—"ó>•A\>Ž•l>¤‡>j>Zo†>L_N>4o3>%Â>ƒK>²?> úø>†p>.Õ ->Di¾>^£â>‚÷Ž>‘Ã>´×¸>¾oL>¼v¡>´ÃÈ>¦Z—>”Ë­>B>¤+¡>ƨá>àœA>âZ¿>γ3>´®×>¢®>>œÛå>› Ð>-*>¨ O>¸ª>¿I×>¶±>¨((>¢@Ö>¦kÎ>­!4>µDñ>ÁÖØ>Ìýi>Ì|2>ÀŒ>°_°>Ÿ>„Ór>[÷X>IUJ>^F>ˆ’¡>¨º>ÉÃð>ç1>ù¥>÷È€>á´u>ÄÐ÷>¶6¥>¾Ý´>×^>íß:>ñ3>Û¹>¸ý>˜06>†ÿi>‡o>‘Û>žU*>«¡°>²W>ªæ&>›8>•ÉB>¨,Ê>Ì“È>î’>þ{"?¦ ?Xy?ŽÝ? -˜M?‘M>ûVá>ê–œ>ã B>ä‚7>æ\>ßr">Ñû>È»A>ÅàB>¿»4>±;>¢×­>¡æo>´¤œ>ÔæI>ó·ˆ?£>ÿDô>ìÙé>Ô»>¾àd>®¼Ó> ÒA>‘MÅ>ƒ‚Â>{1>ƒý>—|~>³¸Ê>ÍL÷>Û]m>Þo¾>ÛLÄ>Õµh>Ón:>ÚmZ>ç*Æ>î“L>ì%>åÍ]>åpR>îW'>øæ!>øŠS>ë²Ã>ߧâ>àžà>í \>úu?’ª?yË>ü”0>öH>òÞß>ö`¸>üLð>üž?>õ+j>è‹>×ã_>ɶ™>Åu>ËÈ>Õ*>×j>ÒHO>ÍÕ<>Ñ ’>Û0/>ç¢Ê>ò‰«>õ<`>æ ø>Ä+î>Ÿä9>Ž>’’©>œ3!>˜L,>‡P>t½O>|õÂ>µ >¥«Ç>´Þ'>½d]>Ãxó>ÈßG>ÈÄü>½PW>¨:©>Ûó>vÕ>UÜÃ>L@>\—>rÒX>v)•>e¡[>VG>YÀO>pM#>ˆ„k>›æ0>³ë¡>Íø8>Þ¥í>ÝË`>Ó¸>>ч>Þ¦>ðÿ•>þWŠ?×É?sT?z?·Õ?ì+>ü¾+>ãL>Í\ó>¾õò>¶f>²Pß>±ì:>¬&$>œFZ>B>~Ð>Ÿw/>µ÷ù>Ã7#>Æë°>Ë ý>Õ‚>ÛN>Ñ5Ê>µf[>”&">q>†Ä±>ý‡>¹ò>λ“>ÚKš>àCT>ìlö?Ò\? -h¯? ¼m? -3{>ÿ³­>Û­“>±.>•vå>”…c>£ªL>²›>¼¡w>Èm>Ô¾Ï>àü >íæ\>ú{X?5>?wy>üiG>ðš¨>á¿>ÒŠÍ>Æ)c>½ -”>²s)>¥¸2> " ->¨9±>ºî>Ð>ç¼B>ýêh?à^?‰Ñ?=¦?°‘? bü?•T?ë?qd?»?™ƒ?ÍB? œ¨?#¿?!È?¡Ë?±¸?Rd?M>ûaæ>òÐé>õÏ?¤'? èw?? Ò’? äŠ? -òh?Ïó>ü£>éõ>Ú}˜>϶Í>Ìt¬>ÔIÖ>áˆç>ìîÿ>ò}÷>î/)>ßéŽ>ÍâÅ>Àƒ¢>Àü>Ð>>ìhŠ?°0?šc?°ì? -[?­>þA??ó[?ó? 2q?p+?¦ž?Ä? ? >ø-X>ØÐ>ºù¼>«Ã >©×^>¬w>®ãð>¹®÷>Ò…è>óÐ*? w½?‹æ?ë?¹?ðB? Ÿy?¹>å’É>¼íš>“Ž“>sªt>lnŠ>…å>£<­>ÇH>æ?}>ô1X>ê²q>ÖœÑ>Ñ!Z>Ý&>æe¸>Þž;>Ê Ü>­MX>Œ§Þ>aïW>C›o>?Ô>Po¤>w\2>š>¼‡[>Ù+¦>æU4>Ýô>Äžñ>§÷Ê>‘•”>‚”Ù>vÍÂ>qæÃ>f2ú>X½«>h0¸>‘Ÿë>¹ >Ù5i>îŸT?W?¨?S >ï—ö>Á·‘>žå‹>›°¡>°Þˆ>Ç/e>Ïb‰>ÈÞµ>¾:g>¼©²>Â&>Á*>»²>Âð>ÕÓ^>æȈ>ï>ø´Ò?Ã? “Ž? -†ß?Kj?§«??Ù? #¹? Q?v~?å`?V:?mÖ?¶?q§? ¨ÿ>õú>Ù+®>Êß>ÄrJ>ÅÃg>ÐUô>ßYÉ>å¶>ÛrV>ʹ£>¿T>¾ä>¾ßö>µÎ>¨÷ƒ>«™Œ>ÀšG>Û{>ð(/?aµ?#A?n#?žÙ>îè#>ák„>ä"É>ô´î?ê?!É>ÿê\>èÍ>Ì_->³…¿> ò,>™ -j>¡;>¯‘>¯l>›À>„Ã>‚Þ>’=X>žE„>•—Ò>7¼>[é}>Q~>Wu…>dtB>tãã>‚¿P>„ék>yv¡>aÏæ>XÅ…>f —>;›>ŠøQ>‡Tñ>s”#>\Û>XÀÇ>j«Ý>‹å>©$>Âê>Ïsp>Óã >Ô!Ý>ÖK{>Ùf>Óš$>µ=>·!ï>½¼ê>Ë‹ü>ι`>ÅÌ!>¸Æ>¬3 >£™>œ_L>øJ>}ÆL>pã¡>‰Eï>¬¿Ü>Σ>Ý 5>Ø p>Íoý>È—5>Èø'>Ç_>¿Y4>¯Ï©>œÏ0>4Å>“Æ{>ª"0>ɹr>ài>áþ>̹>² ô>¦m}>®GI>·Gž>´y2>°Y>º>¹>ÇïK>Â7–>«*—>›µE>Ï0>¨Ï!>º×„>ÕǬ>ð‘¾>ÿ`!>ÿÇ´>÷ro>í/>ë½D>õ3©>û°Ï>ôy^>é*>è=á>îñr>ìùñ>á >>Ö‘>ÍjÐ>ÆÂ>Ð"Š>êF·?½”?à®? ö? ™?ÊC?R’?xã? öì? -ïÜ?û_?!Ö>û¡Æ>éÇî>Ô„l>Æ8â>ĵm>ËÜ›>Õ=>Øݯ>ДM>¾ÅS>¨!>øü>{Ö×>^"ž>DÞW>/¬>> pŸ>-J>)Þy>FÛ>mÞf>Œ•Ó>¡ÈÃ>²fM>»¨>½üî>ºCÚ>µ/£>¼µ¶>Õ±>îdÈ>öã>öš·>þñ%?Â? 3P? †•?½¼? ™Ç? í·? ÏP? E?Y?ö?Ê:>ÿÛ¢>ÚOG>·bB>¨7>¤ùr>°‰>Œ7>iõb>BIð>,ª§>+ÍÔ>?ú4>eú°>‰òƒ> P!>µòè>ÌëP>ㄬ>ö±Ö?‡?K?Û$?!Ó7?#åü?!Å/?D+?IXã?IK_?GØO?H[ž?H0Õ?EX¼?D.›?HHÞ?N­;?Q£b?K:•?:×?'Þ?=É?œz?2?$˜Ï?2a_?C¨Ì?QíÔ?WcG?SÀ³?L?Gîy?Hºá?CºN?.CŠ?aÞ>ùŠ ?±b?! ?9¬?Gÿ?O4’?O ¼?H®(?Aþ½?=/Ã?9©Ÿ?7fó?3Oå?.D®?003?9ã¾?@F”?7Ö ?!§ÿ?¾??lV?+²?1š$?;­?D} ?>®ß?+4¸??(b[?9æ­?@ r?7–ð?)†? ¡?%†Þ?5&H?GC*?S~ë?Sá ?J‚³?@•«?>´î?Gœ?U,á?aƒ€?f?d$O?^?Wöª?U¾?UÍ°?R¸V?HÈp??ƒ¢?<-#?;Î8?8Å?, {?d-?®f? A2?0½?=öÉ?H2Ä?Mœ?NOW?Lz?J_[?IêX?Kï?P´ë?W[j?\²´?_•}?`|?\Ê}?RØT?K ø?LÞç?QÚd?RÇ!?R"‡?TÛ?W˜Ý?Ui?Nì•?JQ²?Jpl?L¹?HT?;6â?.¦?+pÅ?3Ñ©?Cò?QÑÀ?Y&R?\׋?`‡?a=È?Z»–?I?1cþ?%*k?.ÈA?B›?OÐ?Rõ§?Pß}?L¼¡?Kö"?M—|?K«ˆ?DrT?<ó”?;’Õ?=ß?AD?G)©?O%÷?U•º?Yý?_!Á?c¡…?cJÔ?_{Å?Zœ?Qé?L`Z?OZ¨?Sîù?O¤ú?B‚?5‰ý?3†Ò?9h*?>Ü?@Êî?A7?D5n?J¨y?MrV?GÙæ?@†ù?@AM?F'B?JoŽ?CÏÍ?4eš?.$ƒ?9L?G/í?Ká’?MÃ6?Uw^?Yý{?QzB?CIU?9@Ã?14„?*A?+[’?/)u?.ùB?1À?<òÞ?I±"?R«@?XU?[î,?\Î\?X°‰?SÝ?VP?\âv?^ÝÂ?W?Gö4?={e?A\?Lv2?U&™?[uÙ?^ª)?Y¦M?Lªâ?;:?$¦?ÎA>ñQ?^K?)ɲ?H!8?W0‰?Yª!?QâÇ?H;‘?B/É?:3G?3·¬?6¡G?< ­?@”“?G—j?Pj´?R×Ë?Sk?Yy?]C?W0M?HÞ˜?:°ñ?/Ó?(X?/Ú³?@¸m?EOŸ?:œN?5Ư?Bo?Qè/?P(~?<Ë”?'²¡?"lø?3N?K•œ?Y‰G?]uH?^P?YŒ?PK¢?Fa?6Ÿ¾?§Ý?²?&…?²Ó?!¡?.è9?CÌh?Sg?Tü??Iøa??!?>_ù?C§E?Hƒ½?F¹{?>eú?9Ä]?9Ñh?3 ?%sU?!,?,Bð?;?@~?;Áá?7Ô%?2Á©?&¥5?Á-?VÌ>ù¬$?€Œ?\F?ôÌ? ç>? †r?³>ùu–>äDO>ã‚’>ô?ü?þ$?%œ?8¥x?Oxá?hd1?wÆ$?y²L?vx·?qÿ’?j?Z#??x¼?!;Ç?L?3?2)¢?SJH?f Æ?iÖ«?i¾ö?l„?noh?o¿h?nY?cˆn?M¼°?7%ó?%é©?Ù?" G?6vÓ?Gí]?RHˆ?\\|?c´?eå!?jlw?oÈ?gíŸ?P?=‡Ô?ANÕ?O…?XØ?^ÜE?d~:?cr?]Û?az?l‰{?q«5?pd9?s?xg@?s‡®?hjT?c†j?d„Ï?c¹Y?aº¨?_$H?Wr?L&?F\ ?L?Yæà?cÁø?dât?^®â?OÕÂ?2“ª?_à?¿? 5P?? ?NŽï?PKT?NŒu?Nºe?S?Ze??\Úc?ZbH?[­s?eÖ??p;è?p²?e&_?Y\˜?Wmù?W«Ï?HEK?3Î?3@V?DÓª?Q8?Xô:?f¹-?v^?Ù¬?ºy?pLí?X<À?N{`?ZDÜ?lŸÛ?|o?‚÷s?›g?v\n?lhA?l0½?nUÒ?nQ&?pH&?vK×?y?t{ ?p¹Y?r›s?nÕé?b>%?XU+?]Û:?pzª?€ÆŸ?ƒ§Š?€W¬?r®«?f‹?d¶X?q2ä?€Ñ?‚ü?Åj?Àå?] ?Ý?€Fß?|j?no?Z‘?P÷Ì?Uÿö?\(É?\b-?[»þ?[ks?\Uô?f^?sÌ ?y²3?ymt?xüÿ?wÇJ?sMu?qÚ«?y/€?‚—?†E?ˆ !?†ÿ -?†Z*?ˆéƒ?ŠT?„ÐÚ?wqO?j×(?kÝ÷?yEK?„Op?‰?Š#?‡<3?J ?ySP?zk^?¦³?„Vu?p»?y¶œ?y¢?ø?…ùP?ˆµœ?ˆŒP?†Œ¾?†Â±?‹_ó? ?‘ʬ?‘[v?Ù¤?ŽTZ?Ž]è?Mû?ŽkE?‹7m?‡Æ;?…ìÔ?†‡U?‡r¤?†»ç?‡R\?ŠP ?Œr¯?‹Du?‡Ä?… ï?ã?x½W?lÈ0?dBO?bV?fåe?n¦Ì?u?t†S?nS£?mB?yùº?†äz?‹²ï?‰ù?†°B?†Ì?ˆ·?ˆÅ÷?†L ?ƒ¸·?‚¥?0^?|qŠ?yî0?‰?‚C±?Nw?}§¶?|V‚?cu?‡+«?‹±Ý?w"?éÞ?Ž!é?Œ˜Ø?‡ì5?‚ìô?ýñ?†)·?‹Li?*á?‹¡ä?‡ã*?†!?‰X0?¢?Ó‡?¼p?&?ŠB -?„ÒZ?#?|<ü?€L“?Îœ?€ûÔ?€ 1?‚-/?‡Z¦?‹y ?‹‚Í?‡Ûi?ƒÞ°?‚â¢?ƒ»Ä?ƒ[¾?‚c¥?‚c9?ƒdý?ƒÌV?‚?‚cà?ƒ±ä?„›‘?„ØU?…±”?ˆí?‹˜K?Ž¢D?ŽI?Šì¬?ˆ'Ù?‡V¸?ˆ•E?Š9ñ?Šd?‰î4?ˆðÆ?ˆÒï?ŠØ¦?‹ü“?‹hc?‹?Š=×?‰¶0?‹?ŒlÅ?‹É4?‹xø?ŒB«?‹V˜?‰h ?‰"?ˆù²?†ˆñ?‚ÿÙ?§)?‚ÿ‚?†!?ˆÁñ?ˆXÏ?…Õ ?‚Œ?zo?sÌI?v³?VÜ?ƒÝx?†CÌ?‡w?…'É?‚£?·7?„—a?‰~?ÕV?ŽØC?ŒI?ˆ9µ?„íã?‚“ì?{É6?kƒ/?aÉ?jp?|ÿÈ?„Óâ?…tƒ?ƒ·N?„ -?†õ?‰-G?‡qË?‚Œ»?}ús?}¥?€(K?ƒ0?…½Ë?†ÁQ?†÷!?†¨I?…š£?„Š¸?ƒ„`?‚ɽ?ƒˆ?…Cé?‡ -Ò?ˆU÷?‡;ž?ƒ%-?~«?|:?xßq?q s?lÕ‰?t&œ?}’=?}ÂÏ?xM´?vy/?{_Ê?‚á?„­’?ƒO-?€{1? ¼?…†?‰‹…?‹®š?ò?ò?‹Á -?‹-À?Œ7{?ŒÌ ?‰ûG?ƒí…?}À/?z}c?{æv?€LÓ?ƒW·?…Oå?…B?‚‡G?€…?ƒR‘?†Ìí?†Ð\?†r?ˆQÂ?Šµ?‰Ö?‰àè?Šþ§?‹Hý?Ší†?Š¾ß?‰F?†ü’?„Aø?‚R²?в?‚Þâ?…‡Ü?ˆú?‰±Õ?‡M ?ƒ4I?€îu?s³?|ã?|FF?y ?…Í“?ˆœ­?‡Û‡?…¾u?†Å.?ŠQ;?Œ®?Ñ?ŽÔ?Žu‰?zþ?Œ¸š?ŠÞT?‡@#?…Ω?†/{?„¾o?ƒÕÿ?„ œ?„P~?…å­?ˆRá?‹T\?Zæ?’§?‘«?Ž½æ?ŠvÅ?‡4?‡Ll?Š!?ŒPÅ?‹ù—?ŠWO?‰+ø?‡Ê«?‡X?ˆe?Šg+?‹?‹ý?Œ§^?Ž>?v?¬0?o?M:?Ž_?‹Òì?‡,?„dë?‡s£?‹õÊ?Œý›?Šì ?ˆíª?ˆXG?‡è¡?ˆª¾?Š¿Ó?‹ám?‹¼Ž?ŠØ>?ˆ2?„‚%?ƒD?„Ý\?…bž?†‹ ?‰©f?‹„§?ŠZ›?ˆl?‡û?‰¼á?‰Ã,?‡Úi?ƒ´õ?{i?uâ??e™?p1´?r<“?pLQ?b51?[ØF?e}û?jˆ?l'd?sGõ?z¡É?€ ±?€r?{+½?s— ?fœ?\Ðõ?[»†?[m–?c±?s<Á?€€ª?‚ù?~ -2?pÇÕ?l;?s½Š?®Á?ƒfz?ƒèw?åh?y×Ù?h¸¬?U®á?S]P?e¹Ê?u)k?whÂ?mBß?f…z?nZÑ?z?‚}¥?„âW?…Æ?„ä?ƒ?Ø:?‚i’?€í(?|_%?{Ø?{Ë?y7 ?z Ë?}d?zè?y‘^?€d -?…`Ÿ?‡3Z?„r*?zU?g…ä?YM?PÂ¥?Opw?V4O?OÕ´?A/\?MÙæ?f;?n×K?nú?q@!?~G?„Êz?ƒÖ‰?|êˆ?qÊœ?kÀˆ?qx^?N©?‡"@?‡à=?ˆrÏ?‰½Ö?‰A¸?‡b'?…Ò$?ƒ'Ç?y@c?løÉ?pî?{gW?}þ?Fr?„M?‡¿?ƒûµ?† ú?…E?ƒÌ?€ˆá?|ƒ¼?y ;?y;?zùØ?tâ?nJW?u7?|ÊÑ?€ S? Š?p7?_ûŽ?a¬g?q9k?wòŠ?rÔ??uŒƒ?€+š?DA?}èµ?€é™?…û?…°»?ƒ{Á?‚"p? `?yà?z1?ƒdj?…ý?{­ -?oÏâ?xA>?}ÁÏ?vÄ?r”?x§?‚VÃ?‡W?‰Œè?‰ ¥?ˆ3?…Y+?} -w?n:›?o›M?6Å?‡üæ?‰j?‡q?‚öé?w<î?uiÅ?‚Œ”?‡ô„?‡ù?€{P?qžã?r§h?~ -E?­ì?ƒ.ï?„pª?ƒÐJ?ƒè?î?¿?xÊ?l@—?nLÐ?{×D?~ D?z0?}ñP?ƒ+3?…·Q?ƒœ”?€x+?ù?„)?„Ï?ƒ›?‚­ª?ƒ32?‚ ?X ?ƒ´û?ƒ[¸?€Yj?€G3?߃?€ÛÈ?~ca?WÈ?ƒW!?‚B§?}ñê?y-—?|~?T¦?ƒª3?…ª?†mL?…à+?…:ó?„âL?ƒã°??wê-?obý?v·»? Ã?ƒkÌ?‚»½?>?€Åà?‚I¼?ƒ+–?„T?…MÇ?ƒÒA?|p?ж?‚Ï@?„2?†[°?‡(ì?†«¢?„Û9?‚0*?e[?‚Ú›?ƒp¯?ƒ[œ?‚ú…?zû?~-ƒ?|…½?|y?|f?|½?x˲?yÎ?wn«?rÐI?y?}¹D?d9?…?‚m£?‚'?€òÎ?—?}Þi?nøê?aö?`õ¡?jÁš?v#Ã?yÃÛ?uÚ‚?v[&?~2Ý?|$?uÇm?tX?p'?mÿÏ?x -S?‚à÷?…’ ?…“!?…]$?…z\?…uô?ƒ8?to?c<)?j…?y0e?~IP?€™¸?ƒÄ?|Hi?sb/?w„Í?€O9?‚ã?„‹T?„´·?ƒ@ž?€ý×?~çK?|ƒ½?{*>?~-@?Ÿ8?}€@?~~?€Aõ?c?‚Æ2?‚Â?€ÎŸ?€ˆ?#Ë?€s”?zòn?y¬©?wm?mÇÑ?oœ¡?wvþ?w‹j?zc ?€:×?€§Ù?ú]?€¾Ÿ?‚Å?ƒhw?„k;?ƒŽ—?‚ |?‚u?‚–?ÓÄ?*â?|‹ÿ?x£¸?{„4?{á“?xnŒ?xGk?|õ©?€˜P?Ÿ?*Ã?€ñ?Ð@??~Æ_?|)É?xx£?yø[?|5?x#.?s4?mÜ‘?h‘ì?i‹?n»ï?xw -?}Üg?€?€šà?#·?‚|U?ƒja?ƒü7?„ú?ƒŒ®?‚,?‰ù?‚g?¼ã?€i ?Ë?ƒî?ƒë?‚?‚wm?‚œØ?‚DN?Ûd?‚v?ƒ?‚??Š^?€Ö?Pô?}é,?u…?tkÀ?|µ?M¯?‚ ?€éÃ?|¹?w.1?xÛG?€Ý²?ƒAa?ƒšÇ?ƒ]ž?‚µý?ah?€]Ò?õ„?€^c?·µ?„.?}V±?uŽ?r¯Ã?røE?r&?uÆë?|[Ü?S?}®§?{Ϩ?}îæ?€×?™Ú?€œ>?u¡?}ß?ƒh?‚¼á?€™j?|år?|µv?~ÌT?€N:?d©?‚SK?‚@Y?*?~?~9Ê?‚ a?ƒÚ?ƒß—?ƒˆG?ƒlÅ?ƒD?ƒ‘˜?ƒOV?ƒrð?ƒp˜?‚ïó?‚¨÷?‚pÔ?‚o?‚–0?‚B•?ƒ ®?„ ?„)Ö?ƒŸL?‚Ø?Ë\?€ýŽ?…¡?‚ Ø?€µ:?}ËT?}]?yŠx?q·D?r2Ð?yY›?} ?}©4?€„d?W?€Á?€Œ®?‚ h?‚«þ?‚e?‚b?‚ ?ô¬?· ?`?€m?€°?~äf?|â¥?}R?wòœ?`t?A´*?F#?_-°?eTÌ?SÁø?LÖW?c!¼?t¢&?{¢*?#á?€&Ë?¿?})½?~Ž ?ÚÞ?~*?€?|Àx?vVÁ?v|i?zÖ ?}Êl?BQ?€"Œ?aÆ?0?€,1?€.–?|°‘?w¿b?w>f?|6â?|Ôš?zkA?}C™?€?€Óû?~±¿?y²ç?xÿp?|ˆ?~+Ö?{xk?v<à?vK?yß?uíÐ?v…Ò?{?zkX?y¾`?|=Â?~í™?Òg?l?~U?}.E?~%„?ç?vÿ?Ï%?‘?{rH?vÑ?t}Ü?xE[?|ë‘?~Ð?y0?qÚš?påA?t8Y?wÐ&?zâ•?{>!?{ŒP?}'p?}Ii?yÁ€?vm|?wýV?yÑÓ?wœò?uñ?w>Á?v|ÿ?où]?mŠ†?q™K?sA?qÎ*?r€¢?sBò?rï ?rk?lÖ,?jík?m€?n{é?rG?t»"?wy?yF ?zÔ?z£?z—Z?z¯÷?{>k?{Ž?zŒd?xQª?v–?xH½?z6ü?zÆ_?{ª?{k?zSÿ?wÐ ?už ?tk?sG ?vU(?z½?zך?yUV?ué¥?pà?nÁ&?u)?y~;?z©P?zÖÁ?{ò?zÜÏ?y.?t!;?nž?pRÃ?sKÈ?s/.?sÈ?qÈh?rv¸?sœc?q°4?p³ü?q¶?s¬?t¢ö?tc?tìÄ?uk?mÀÃ?_8?a?nÆ~?s%ó?r{I?tXî?u(Ã?tÃg?uóø?u'>?rþ$?tJ?sgU?l*€?ba?f^ð?p'ô?r'¤?qHÌ?q‡J?rå@?sÜB?tÙÈ?o¯Œ?_Å|?XKQ?f4?neÑ?jåÈ?nFN?s² ?tq•?r‚ü?q¢$?rñ?r ?pý?m· ?lÄ -?n•?n»^?eu?S^?Q~p?`O?j)?k¯{?cC°?^tÎ?hÊ?m»Ü?n=?mæ?nçá?qJk?qÑ?sS¬?u¤?t¤?qø?o&?n¸z?j°‡?d#Û?j‰‹?rYl?toó?tµÕ?qµ?n™?pq½?t7ü?taø?t>?t¢Í?tê&?tÉš?rˆM?l_Ë?gH©?gô>?kcó?jA;?hq>?l—¾?pWX?pA?o¥j?n±?jÖ?a2?^Λ?fc?nGy?pI¤?l¦Ž?kÐ?jí©?jݽ?gâ½?cN±?`¦?c—X?ktm?m¢?fv¤?^B?]¿f?_©ü?`¼è?bÈ»?gp’?kŒÆ?mI&?i²ô?inª?m2û?lùì?iï§?jlþ?mSM?l -?dá¢?^#ý?\­ ?]•j?b)?hG?jšê?k¥?kS?hFÀ?d9?d«?fõ?gk‘?dJÿ?^øW?^[‚?[5Ú?W¹W?`?gê'?i±á?jn&?h±q?f·?fÛ?aùé?\T•?[­è?Yú'?^üì?dä‰?fúæ?c?u?aÙÍ?enL?h - ?i÷h?jyì?jªs?ib†?e¶þ?e§×?eL¯?b»?a°8?`É?`¸R?dXÕ?gï½?j½Ï?kBÏ?k °?l‚?m®B?mäc?m?kþ?iW£?hÉ?jõP?kܧ?lH ?möP?nÀ?nÎ?jft?b'`?`æ -?hÓº?jÕí?aK­?W³?aã?jÁÌ?k™%?g|ª?aXì?aèÇ?aQ?^è?cêƒ?f8?gc©?g^ ?b[î?]ÌK?cÑž?kG¦?l¿"?m,\?lS¯?fžB?bP7?fÆ?jM?k¡V?fõE?]À?`t¦?iÇ?l²y?mQO?m:e?ile?`Ÿ?^Kö?fù‹?j?fr?c¼¬?hHÐ?jÍ ?d®?^9c?_ ?_€{?` h?`jH?^¿[?^?_6v?^&?]Éé?^xu?^É?\s -?W'ã?WÓÜ?\Hc?^¡·?_è?_±z?`Ñ?`ÚR?`Æ?`‚€?^œõ?X‘ˆ?WG?\ -e?]}»?^¶Ž?_ý¼?`@¤?`]Ù?`o÷?_ «?]*A?[d&?\ñ$?^x4?^FX?] ??]›?^a°?^*7?]è=?]j´?\”t?\”°?ZÀ ?X¦”?[º?]Úë?]Ÿ^?])=?\éµ?Y¯‰?Xzn?[JU?Yñ%?TC?Vv÷?[“³?\–Ô?Zqg?T¯?T­t?[]–?]©?]G,?]Ê?[l°?V#Î?RÔ™?SMè?RK?WË*?\t?\ÔÅ?\Ľ?\,(?YÊŠ?R›ì?QlÎ?VMú?YÁ?Va?TM®?XÂZ?[[?[I’?[Ä?Yqå?UH?Vm}?YÑ?Z™m?ZÌ?V+©?P‡°?QÏ©?UÀü?VG#?Xä4?["J?[?[g¥?[\k?Zí??Ynð?X€|]?F+I?M®?OD¯?N®¨?NÞ ?Q|´?R/>?QpÙ?K¾¡?B§Ø?G–È?P-?QË~?Qe|?Q°·?P†¸?JÌL?IÇ9?ICµ?>œH?Dj‹?M¾“?E8c?:ôÎ?A(ê?F}Ì?Iè?JDw?F/Í?E:¬?KË1?JÊV?HøR?K«`?A ?4gr?B®~?K\?IÙ?Iü³?L®Y?Kyñ?C‰R??JÓ?<–¦?;"ë?DÀ?F·÷?FsK?K?N^P?MÄ&?LÔ‚?K¦¥?EöÖ?EÒ×?LOA?Mä?LÍu?NA]?M·¥?Lra?Lª#?M(á?M¾Ü?NR?K¬D?FIÉ?H˜j?Làâ?M 5?KîG?K¿[?LÔ†?LZ#?Kg?KFW?Kžw?K‰?HŒH?C?Dc£?G>l?FŠ?AA£?>ƒ?=šV?FÙ?LÊ}?M…ë?LÜ?KÁ?I€Í?IÉ"?Ew?<¤·??ÈÇ?<Òô?D• ?FÇ?Apâ?@+g?D~Í?H -º?HSO?H‹?G??G?FÚX?G ¨?GP4?F¢I?D®ƒ?C®Ã?>á«?9dž?9!Ò??­Ã?@|q?=¬¨?CXË?E#>??¸ã?;­?A,&?C -²??dª?>¸p?8ÃÉ?9õU??ÔS?=`E?=?@””?AˆÀ?> ²?9É|??úÂ?Eî„?F1ï?D.?C[q?Ej@?E£@?E¨`?E;J?BÅ?@ìb?@wô?;A!?á?D(?D¨H?C/§?CHÂ?D©ç?Eõ?D¸j?B27?? ?;ci?6Æá?>±Ù?B®­?Cvñ?D‡?CW?A;5?@D÷?=¦!?3Õþ?9 Ò?AŒw?Bœ³?C~|?CÙÐ?B3¶?>¡ì?>ü?@ÎQ?BÁÿ?>·u?:£#?@¬?CYÙ?C –?CÂ?B­i?B¿Q?Bül?BR?Af?ATœ?AÍ!?@ÜF?>ÓÌ?=¶V??ìæ?A4?A{©?@&'??’–?@x?=¨Á?=k?A˜?@ [??i¨?@éˆ?A[ˆ?Ar¡?<[M?0Á(?,r)?2Û¶?<:n?@¡Ÿ?@üÛ?@?@¬?A"_?AfÑ?@=??m?>nþ?>UÓ??ì}?>@ë??j?@¶m?<úi?5zL?3å’?:K??Tˆ?=4,?9ãÂ?>rÀ?@ìë?A2?@È?@Q)?@„ë?@£?@{Ú?@Ø ?A™?@˜?@l=?@a‚?@'¼?>ì¾?<.–?8ú’?.ÅÐ?'Ÿ?)Ð?,-‚?".?.ÆŠ?;ï€?=ï?>|Ð?>b?>²?>‘?:¡?6@b?;))?>6ä?>d;?=w?9ÍX?3»/?6A:?;1‹?=úŠ?=\‰?9Ž?3È?6ãá?7ì`?;ý?=¡Ù?C?*”e?.˜Ä?-=«?(¤?.È?.ßé?*óÈ?%?)õ?1^1?3B?4\?4@e?3??0äË?/,™?.»?.ç?0Ã?1I‘?0Ͳ?0³A?2þì?3­q?4 ?3¤?3?4(Ð?3õ?2Íe?20À?3{?3à¦?23Ò?/†_?.ýu?(_?'©?0a2?2f4?1l?/b?1à;?1G•?/£–?2\Ö?3W/?3>?2y!?1@?/z??-(P?)ö?.Ï/?3º—?2`¤?0¦;?29?35¸?2¿Ì?1!i?,Ž3?'St?+• ?/î ?1—J?0jH?0Ob?1 ¡?2×?1Ýs?1öÍ?2^o?2Rd?1¥?/ÿh?/Nb?/ë,?0fà?0Ú™?-\Ø?+vœ?%|Ç?%òº?$ç ?%™?$âø?$¢_?$Ð?##Ð?#aF?$ºÌ?$ÖÃ?$µ÷?$8?"zÓ?!¿N?"Æ?%¢1?%ò>?#yü?}? ‚p? žº?"—§?$Ã?"=? )¸?"íÐ?#íu?$ø¯?% -e?$ ø?$K]?$[)?#å?"gà?û}?qæ?š¸?!l.?#»¦?$`±?$ ˆ?#X}?"+{?#eŸ?#ÐT?"ë?"èÛ?!}‰?›?‹>ú7ø?Ã?×?G? 5G?!•º? ª_?›m?ý?¼,?lð?ë6? -Ç?„Ú?8x?_?%?Då?œ?=§?{L?Ùð>Õ.>¾ >ëÑä? ã¾?ª?1?Ká?äÿ? 8?)…?-â?K†?rÕ?Ú'?œÎ?üM?äU??9?ÄÇ?0¼??zh?~$? ˜?|s?Q™?²*?G3?ÊA?Ö]?É?År?ȧ?Òü?pS?öÆ?“D?øö?Ž?b[?ûY?¼§?%?ÁÕ??Aˆ?é?ô?ã?¨½?!?õx?•Œ?=?Ä‹?wU?hü? -z?«?>ú?&Ý>Êp4>ÐoÕ?†R?0?WÙ?ß\?ö?IB?y?¼}?@:?ÿ?Æ`?? -Ĺ?ÄÀ?…Ž?Ü‘?`¯?‘{?½å?ÁÛ?w½?%{?û?4º?êö?Ë›?v?ˆÚ?7?úd?ò>?K¿?f?ù?=¾?ÿ?ã²?Që?³ï?+i? -?VŽ?Ey?aœ??ë§?“ˆ?Jh?=Ì?Oh?_ ?ý'?O -?¥Y?Ý?¥?ž?.X?†g?Ší?#?ˆ?à?ø«?7?“x?CÎ?u??\f?­ ?}ë? µ?ùŸ?€?Âq?Œ? ú?¡?\_? žª?Û°?ô‘?Žã?Ü?é?\?  -?ì:?Ès?1u?b?¢?§ ?•²?k?ÍÁ?ë¨?*ò?fP?Úµ? ÍŽ?ê?*¥?ý?*\?¹ò?y?À8?*'?Á?è? -ž?cX?ð?Å6?âü?ƒL?˜;?š3?"¬? -Ö?Ãp? §?R9?+ì?Iš?þM?AÐ?ä?9ˆ? ·Ó?¡?N¡?»(?á?ð,?“Q?åõ? Ð?¶ ?YŒ?)¡?´Ö?¿˜?·Q?r¢?1Ñ?àD?ÉÄ?A_?à?Ä7? ¸1? AŒ?.÷?*?,?C?ëV?Þç?8C? ûù?=p?ú±? (;?=4?s1? ëû? â¯? Ö ?÷5.>÷‘?›Ô? ¥1? W? -½? -€Ó?ÖÈ? ãV? Pc? Wm? -Ÿg? -ÅÓ? l'? -â/? r±?"ª?%? ó? -.é? lz?¾Ÿ? îÀ? —I?÷È?Ê€?]y?÷l? /:?ó·?š ?ÿ¬?„ ?’^?k!? KÁ?‘ ?’?ˆ ?Ö~?ÂÞ??’?€Û?Xt?Ý!?Š§?Ðð??¡é?ãE?V+?D?b?&?{æ?­£?`5?ö¦?çÅ?7ó?;€?µš?o5?î?{7?X?˜%?¥×?øN>ÿƒÜ?ýÉ?’q>÷ ¥>ÕÜ>ìÝo?V}?a?ŸË?´?íÄ?±¦?_?Ÿ?Ùj>þŸW?I ?z—>úÙi>üj²?Ü?Õµ?b‚?LË?jz?C?±ƒ?UÅ?Šÿ?`ï? Ÿ?:«?¦?M?1÷?|¸??¢£?&?¬=?~M?&?%Â?àˆ?l?€Û?d¤?§ò?+›?)?w?Ã_?—è?ç0?bé?Œ®?Ûž?³ ?ˆ³?93?½å?_È?á>üˆn>ôžB>ö±¾>þ•ù?Ë?Pù?À»?L£?ïS?Á?lk?ö;>üU³>ýr7?F?ú?õ?"Æ?6%?-?`1? -Å?ÍR?Î ?³ü?x½?µ?Z·>ý'?D?‘+?p?Lû?#;>ÿÏ“>þ³>ÿ«µ>þ -”>÷Ì(?^©? ”>û‚s>ùÄ;>ó~ >ú"Œ?A>ÿ÷>þe>ÿX>þf>ûR>ø¿N>ó¤>üs|??4¡?aJ?I½>þ-7>õÆa>êÁî>ù‰Ö>ÿ3Ð?æ>ÿ·’>þI>ûÜè>þ>ü Å>ü I>þaò>ýi >ø°>î|$>òP>ýÔ{>ÿ #>ýê×>ü/Ï>üä¿>üØ¿>üs‰>ýÑ…>ô\å>ïúT>úªZ>üð>øùF>ë4ã>ô¹>ð™K>ñ=½>÷"ô>û€å>ýNŽ>ü¶ã>ûÁø>ûmî>ú/&>òªi>ör5>øØP>õv>øAª>ûOØ>ûwd>ùÓ ->öƒ >í¥>ñ'ú>ö½ÿ>øc~>úhÉ>ú…=>ö"±>ïf%>ñø>ø7Ž>÷žÒ>ø7Ó>øÙ´>ø´>øgÃ>÷Ç>øt>öž>÷>ö Ÿ>õ>S>ôôw>ðI´>óMá>ø>öo>ñîh>õ>ö¨N>öúW>÷Â>ö94>ôט>õ‘>ï4š>èŸß>ó"y>õ·>õ?Í>ñtq>ññ>ö¹ ->÷ õ>õDÌ>õÞW>öS%>ô&>ðKG>ñ -¼>õ2>óþÁ>ñâ>òÔü>ô/,>ô‘´>ôÜL>ón†>êÀ>>óès>ô˜f>óíº>òäÄ>óU>òGI>î€>ð±ª>òºr>óÙ >òÓà>ñä'>ò˜â>ò‘½>ñ¶ç>ñÑ<>òÏó>ò{%>ñ?ÿ>ï*²>ðjØ>ñ’±>ðí7>ð’>ðì¶>ñx*>ñ4°>ñ+Œ>ñ,’>ïÎ`>櫓>ð,>>ðK>ëƒâ>ívx>ð=ø>ﳿ>îÎ>ðM]>ð$h>î2>î7>ï^ã>ðî>ï?>îóX>ï Q>ë$“>ëßú>íg§>ìp>ìPÝ>é9{>êC>ê¦]>éÂÖ>å1'>Ûœj>Ú²H>ä¸i>è `>æ‰>æ/ì>ê[(>êÔ®>ëœ5>êš$>ìnÆ>ìç>ëЀ>ëQh>ëì.>ë'E>èå™>ë>ë“i>ê(>ë #>ëy>ëÓ_>ëÞÍ>ê-ä>ê[>ëc>ë ¶>éyÆ>ê >êÊE>é¥>èGÚ>çb1>ê#*>ê£&>ꉩ>éZt>ç3‡>èºu>é(V>å €>࣠>æR°>çæ>ç&¿>æìs>èC>è›5>ä “>ßqC>å±–>çþÊ>èÔ>çÐ:>è¡J>ç‹ñ>åjÇ>ÞH¶>Þ„©>ä#¼>äL6>Ú¡>ݽÁ>ãC¼>ä£ >㼘>䌂>åòÄ>ä¡Í>å[>ã¤ñ>Ü)¦>ß…œ>åE!>æ»>ä¸î>ä÷8>åÔ>å†n>åƒÇ>äÁ%>ä¡’>åŸù>ã5>ã¡>ä½á>ã­Å>äPu>äû†>ä{s>ãÛê>ãD>âÓ>ä,>äP>ãƒê>ãÝ”>ä">ãøt>ã@>ãFQ>à>Û§d>á¹[>ãU>âø>áÍX>ày}>àü>âõ>â;f>ádm>߃N>áÉT>âó>áõŽ>áÇ!>ßv>×h >Ýž>á¸>áh™>àèÕ>ÚIû>Ðì>Ò ä>Ú'k>ÛX÷>ßLn>ݤ>ÞÍ>à­>ߊ>Þv>Ý­¾>ÝõÖ>Ô‹ä>Ó¯ã>ÞS¦>Ûøn>Ú´þ>ÞÜv>ß"'>Þ›ñ>ÝSÇ>Ü*Ù>Öùs>É~Ÿ>Øëg>Þ c>ÝÀ>Ü—>Ý)á>Ýþc>ÝÍÐ>Ûî€>Ü6¯>ÝPQ>ÜF>Ø7>Ø{Œ>ÜöN>Üå>ÚÅà>Ûº>܇¬>ÜŠB>Üss>Ùá[>ØL:>Û]Í>Øx>ÒWÏ>Ð%Å>Ôý¨>ÛC{>ÛU2>ÙÄw>Ù5þ>Û2i>Ûe >ÚëO>Ú`ë>ØŠ‚>Õ‰j>ר>Ú£}>Ùì|>Ó5>ÓX>Ù•Á>Ù\Ê>Ù~G>Ù³Œ>ÙœÏ>Ù}¼>ÙQ!>Ö¯">×[>ØòÛ>Øåö>Ø»è>Ø.>ÔíÏ>ÕB>×–È>ØW>×öÎ>×áÉ>×Ò>Ø&>ØB>×ÔU>×3M>×}Ñ>שˆ>×–>×BÊ>×%b>×)Ä>Öû>Ö3->ÔÖ‚>Ô•>ÌÇL>´ó>ȃ”>Õ7>ÕÞ>ÕþÂ>ÕáW>Õ>Ëtç>Æ“:>ÒÖ}>Ôèp>ÒrF>Óô>Ô œ>ÔÎh>ÕA>Ôs@>ʽ>ȉA>Ó%…>Ó×K>Ô–u>ÔœA>ÔX”>ÔKš>Ô$À>Óêè>Ó­Ú>Ó˜í>Ó-§>ιŠ>»ŒÆ>Æà¿>Ðåt>Ï—>Ò#l>ÒW>Ò@ >Ñ·­>ÏÛB>ÆBé>É-j>ËÑ<>ÂTò>Á6I>ÃP>ÏÜ•>Ñlò>Ñdæ>Ð>ÍÀ>Є>Ш>ÏãB>ÈÅm>Ì~Ë>Ðc>ÉGX>¸Ÿ°>Â6>ÍM¢>Ï ¡>϶>Ï ->ι>Í—>džp>¸ì>ÇnÜ>Í Ï>Ï5j>Ï™>Ï>Ωr>Ì^J>Ì´œ>΢´>ΖJ>κy>Ìã¾>Ê F>ÅÕÝ>½ -Ê>Ƕ™>Í¢ >͹>Ì…J>Ë•¦>Ë^+>ËÂ>Êâ>¼ö>¬Y>«ä>Êu>ÅÌ>¸ P>Âý>­`'>µa->Ç¡<>Èç5>É¡ˆ>Èò>È?Û>¾”$>ǯ>ËKƒ>ËÂ>˺w>Ë™¦>Ë”>Æz_>¿ •>ÁŒG>¦þ{>µB¡>Çi)>ɯv>Épô>ÇSº>¿³µ>À©D>Ç‚â>Ŭx>ǵ÷>È=>É_ü>É®<>Æâø>Â÷>Ǽ®>Èt>Å–Ó>Æë">Ç"n>ÇÛ>ÅÓš>ÂH}>ˆD>Àà¹>½Î‘>´ >°Ž¶>¼^A>ÁZV>Â\¼>¿a>¼SG>¹Öh>¶9=>¿÷>Á»4>± z>²óÁ>ÁÂu>Ã/>ÂÂõ>¿«ã>¯aÐ>µ>¾«>Âká>ħº>Äï…>Á¿>Àeb>à H>Ãç>•¥>À8/>Â÷)>¾G6>¼3~>´õ–>º">¾è>ÁTË>Á“á>ÀN¦>ÀG>¿tj>¾½«>ÀÃ>ÀŽ>À4>à Î>Â%É>Á¼®>ÁÏö>Á.>½¹ >»SÖ>»óê>¿,ç>Ázµ>Á½Ï>À, ->¿²>Áœ>Á#æ>¾‹>ºˆ«>À$Q>ÂÀ>ÀÅK>»ú>¾]R>¿$h>¼7Ò>¸´->¾“d>¿4Ž>¼k>½Z¥>¾ç>¼_f>¶Ê>»6Ø>À>Á>ÀöÍ>¿£>¸Òœ>»f´>¿ó’>¾×²>½i>ºÛ>»H>¿->¿hÔ>¾Õ>¼›W>¾Ð>½ Ã>¾áù>¿&°>ºˆ6>°H>²-D>»/>½Õ2>»Ý>¸çF>ºmW>»½>¹¿a>»gµ>»/Ì>»œR>¼ÅI>ºSú>ºÈ½>¼Ñµ>¹Êf>¹íx>½[>½,H>ºan>·=>¸žÚ>¹ >»rà>°…o>žLü>©z>¹È->¹ÔQ>»!ÿ>¼ª>º÷ >ºk>·ÜA>´+9>µ¿>».5>º§à>µ‚L>«à“>´äy>¶Ä×>­÷v>±WP>ºY>¹Ú->¶@Â>³ÞÍ>·â>·å¯>º{n>¹‹b>¶n¡>¸õ•>·˜Õ>µG–>±óu>µûq>³Ó>¸#Ù>¸ö¸>¹`>¸x0>´áü>´Ø>¶%>¸8Á>¸EO>¹*>¸²`>·™Ú>´ß >µÇK>²û>§’’>°‹r>²ô‚>«¸æ>­6">· -!>´Gy>²q>ªñ1>¢ð&>²Ôò>´nþ>´_q>µ¬/>¶ÿ>³Ž\>±r>´ž¤>´)>¶<@>µÀs>³°Å>¨ô_>±Ia>´­*>²Üû>´dá>µa>µeI>±šZ>±ý->µª†>µŠä>µÊ->²Z>®“>´‰¾>³*i>³,¸>«Ä >¯‹>´˜F>´v•>±›†>³.)>´É>±HÆ>¯Š>²=ž>±·0>³ ~>±%‹>¯ >²/©>²_>³`X>³ª.>³ç>³ªÕ>³qd>²à>²‘>³Oê>³3–>²cÕ>¯¨C>¯nY>°ø>°b>>²G?>²>±ô>±E>°ß">¯«ê>°2ø>±·>°`>°Vs>®Lß>ŸÅ5>§â»>±Í>¯%Ì>¯Ÿí>¥_ >š*œ>žá¢>­>Ç>¯M>¯¯¥>° ™>¯µ–>­m>¯V>¯ë±>­&`>ž X>§1™>­*>®ßÔ>®§6>­u¨>¬]>¬¹>ªˆ¹>­é>¯ }>¬ãã>ªãÁ>®ã>®Ä~>®üq>®; >®"¼>¬˜Ý>¡4>¥ >­ƒü>­Ðo>ªÈ >¬‘Ä>­‡Ò>«è>¬¤¯>¬û>­L>­Šw>¬§%>ªÀ<>¬šÓ>¬ëf>­ m>¬5>¬‡ñ>ª×g>¬Ž>«€>§%6>¨›ç>¡ÛÛ>§6r>«²Æ>¬F>¬$é>«W>¦Îí>Ÿü‚>¨,>©{+>§L>¡£Š>ª<>«mv>«??>ª>>ª)ã>©˜H>©ü­>ªê>©Á1>£ìÂ>§³ƒ>ªÞ>¨»c>¦Ñø> ]é>„Kw> ¤>£ü}>§r> °Q>£k%>§—>¨íœ>¨î†>©ˆ>¨éµ>§Çˆ>¨,‘>§jõ>¨]á>© >§ÑM>¦FL>§|‡>¦,K>†÷>‰?>¤G}>¤û>¢ ü>¤–>§4“>§½õ>§ê>¨ o>¨>§Š>§v>§p­>¦&M>¦• >¥÷ >¦2ð>§¥>¦˜O>¤I>¥Íµ>¦g->¦Â[>£üç>-TQ>FÒƒ>\±S>qDc>†¸>’a>“ß}>ˆùÔ>vÈz>hö>`÷Á>Ot°>-)á>ò`=èR=úÕ >"{t>W Ù>„>”ü>–3¿>Œ´ >| Y>bu4>Kâ>5{U>&Û½>0O>Wè>…ÓÆ>› -~>¤Qæ>¢a¶>š >Öº>‰ð,>„;–>|ë>tÑ>|{>†×t>ŒøÝ>>Š‚">‡6¼>€í>fÒ>L>@7©>NlF>u›B>“k>¥’þ>¦ý>˜†H>„~Å>iÏ >U¨H>Ant>&[d> /{=æ's=ÔË¿=âõ>³>!N>$->§Ï>8B>Êþ>àu>ú,=äh™=Áç³=ÆBÈ>XÕ>:1i>x@">“p!>ž„e>¡Õâ>¥‘ö>®Ú>¹q¤>Ây¥>ÅR>Â$¹>½;‰>»lì>½W>¾Ã+>»Ø>¶k>³tÞ>²¦¨>­ˆm> É1>æ^>„&>yãî>u½O>xéG>~€s>ðù>†2+>ŒÑp>‘´ý>C>Šê$>‰œ>D >’4>“‡À>’Ë/>’Ð,>’én>›>Š²N>‚Fý>u»I>rµ>úÁ>‹Â>•c>ž¨>¦±L>­õ€>±ë?>³ìì>¶H¾>·Mê>²]ö>¦&>—9>Œ+õ>ˆ„#>ŠÍ¸>Ç>”e3>ž D>¬€L>¹¦ä>À"Z>ÀÒ>¾gP>¹é >´x>®Ø ->§Þ;>žJ(>’ ª>†)÷>sŸK>\ég>JŒ>=©ö>5‡E>4O>@Oû>]¿ >µ>¨C>—ß'>šf>œâø>ŸW÷>³Ó>—î>”ÿz>ž©R>²¨t>ÆtË>Ñ¥j>Òlq>ËKÐ>Áª0>¼^ƒ>¾éÏ>Är]>´>±Ö>–F!>w„>P5y><œÔ>9ñÄ>CJ”>R©™>bRœ>p€Â>€#I>‰· >“L>š+>ŸÙ>¦_T>ª>¢²>ßÒ>h/>B³Ô>9Mu>H×/>bÁ6>wÁ >û>ˆŠ>“¥×>ï> -“>um>ƒýT>§Æ>‰ÍN>™^Ö>­zn>¿çp>É}Œ>É>R>Ç,>ºöð>®$’>›Áœ>†'>dF >Ga,>8ø>2±½>1(û>4›ô>DQŠ>^\>sØ(>|–7>-j>‡¬Å>Žù×>‘Z>Œð.>ƒ–~>u >q;>|ÅI>ƒ‡°>|¸>iÊ >UðÏ>Jôà>DÓƒ>B[ø>I>\£z>w¨Á>†é>‡†©>yä5>Z´¦>Dm>?>FaŽ>T\ÿ>c̽>m~+>q(˜>z2m>‡DÑ>‘V€>”Úÿ>“úa>— -¦>¢äB>²FŸ>¹Z >±'>Ÿ>‘GŽ>’¬”>¢ö>´2Ò>¾¿<>¿”>¸®Ÿ>±îë>³Å>Àòi>Ö7S>狤>ï7B>ñÜZ>ö‡›>ýMg?xF>ÿ›³>ýç>ûVÂ>õο>ç7ª>Ôkr>Ê€B>ÑbJ>ã£l>ô¢>û‚=>ö€Õ>èO>Õë‰>É)>Éu>ÒA>Ú}s>Üñx>ÜÛ,>ÚÖ4>ÖW[>ÑâT>ÏF)>În,>гä>Ö‹G>Û“®>Û >×n>ÕjŽ>Õö}>Ò“N>ÇÖY>º <>µYO>¿m¼>ÖÜù>ñ©$?Ü®?‚Ð?ªì>ÿ=?ý? œü?ü¹?U„? -l´? J¾? +Ê? TÒ?²?'#? ´Å?•»>ùžî>ïø\>îV+>ç -€>Ñ T>¹’º>²R >À†Ø>×Q©>é‰>ò/[>ô´Ì>ðä>åûÄ>ÖŸ~>ÇLU>»Á>¸×>Â’>Ó¯Ö>äÃ>î m>ï ->ç9Í>ÚŸY>ËÍ>¼WS>´¥Œ>½\|>Ô³ö>ío >úÖ1>úa¼>ñ:i>ã•>Ô¯D>Ë«Í>̺Ê>ÑËÙ>ÕÜ>Øñd>܃«>Öð >ÅI4>²€à>­9˜>¸ðÜ>ÊH>Ô¥f>Ôw,>ϳÚ>Êÿh>ÉÑ>ÍFV>Ø)ÿ>ækN>óDÁ>ø¿,>ñ%^>Û<->¼)>> ,ð>—g†>¨Æ'>É'Q>å¦Ö>ó«)>õÆ6>õ®.>ù„R>ÿ(?I!>øØ >ã>?>Á½>›¿#>ú=>qšà>‹Aî>¯¬9>Óus>æÉ>â©Ô>ÑJ>¾óI>±mË>¤‘ >•¯ñ>Š*>…ÕÔ>…€>„­w>‰€}>™Â=>µs>Õ[é>ñLµ>ÿæÉ>ü ð>åÊu>ÄAw>¦”Â>›óó>¥B9>³Z6>ºt5>¿òº>ÍèG>â >ïý²>ïµF>çT¹>ä:ã>犠>â§T>ËÕ:>«3p>‘H>Š0:>—øt>²Ä>Ïçí>饄>þ„U?+o?ðV? $?5a?NB>ï`ˆ>Ûƒx>Ê >¹÷é>­pŠ>¨K>«<ô>µ.F>Â×>Î8>Ô€°>×8,>Òò">Á’ß>¤$>…šT>i)W>tœá>“ð>°`ƒ>Ç“6>Ûw£>ñV3?ë;?;¨>üJ²>å -€>ÍHÚ>Áâ±>ÇTË>Ðûí>Ð>É‹[>Ïr&>è q? ?#‘?Œs?^í>ìaŒ>ÔÒÞ>Ѐö>Û\³>ãÁ>݉°>Ë^%>µC*>œñó>€§>FFŠ>#]¯> |I>0—)>DùÔ>Z‹>q‘¦>†£ë>±„>ÀøY>åe>ý)?¹“>þ¢>æøÄ>ÉTä>¿‡e>×´•?Ü/?¢À?ß?Y‡>Ø.ñ>¹E+>¬Eo>¨mð>¤Aå>£ÞY>¯%>À¶>ÅúÐ>ºƒB>¬½B>¯µ£>ÃíÛ>Ûâ>뻣>öD_>øOä>ìàã>×5É>¿³¸>¨ Ë>Žkâ>pÕA>g*™>‡Ç¢>­B]>ÒRO>ëœ>øGL>ýö¹>ùnÞ>çrg>Òv4>ÌLƒ>ÚC©>óÄ5?¨N?÷}>þÆT>×a^>­7ª>’Æ>í>”×»>£!Œ>¶—Ø>Æ_³>Åô%>·Hâ>«Îs>´Íä>ÓV‰>õK?Rj?I¤? -V?ý1?º?PÚ?`?Ï$?QS?!Y?~î>÷Z>âfo>Ó‰…>Ì­ ->Â_ˆ>¯^Ñ>v®>›H'>¯Áó>Ôok>ø…–?»O?¼Ç>ò¨1>×òØ>À¿?>¯ì>> 10> ->v}>fÛˆ>u ·>‘s½>²CA>Ïæœ>àdq>ä»>ßÛj>׋â>Ó"á>Û—â>í@>ù,Ú>÷~]>ïL>ë¯a>òúŠ>ýbÃ>üH5>ìk¬>Û¾I>Ø„>ãQ)>òF$>û8è>úl.>òá>ç©>à½ã>âvu>å&Ñ>àè\>×cB>ÌBy>¾±˜>± ƒ>«¥Ý>±>ºª>ºîD>³±º>¬â}>­ïo>¶qì>Á½B>Ì@³>П>Åáè>©€>ˆÅK>mо>qø%>/&>~RV>dl©>PžC>Yð˜>}± >”˜:>¥I8>® >²M>³ç>®Ì>ž>†¥«>_Ì>:øñ>!‘p>· >?)>$ây>'z«>".>d!>$˜Ô>4Ê">Kc/>k1ó>ŽÌ¯>®ÞÆ>Æg]>È¿õ>¾~Ð>½¤.>ÐÌÜ>í{|?œq?rE?fJ?&ƒ? -A? 5?A˜>åÓÈ>Æ÷`>±äå>¤èë>Ÿ–è>Ÿãs>›ý«>ÂZ>~O–>€'j>“Ìë>¬í:>¼»Š>Ã6s>Ìç>Ú¸€>ãBp>×60>µ[ý>->idq>oÖB>$V>¯÷>É#:>ØP>á¡K>ó&?¥?u:?qš?Ȭ?Œh>åТ>³“>‘Q)>+>œhQ>­˜¯>¼˜G>Íðî>àlÊ>ñ  ?˜é?>è? !Œ? „h? ac?àg>ñ!n>Ýf’>˦R>½8›>­É÷>œ¥2>”Æ£>Ÿ~í>¹6!>Ù# >ùñj? sÕ?I=?ço?þS?é?"‰«?)?/h>?2™Ë?2?/q[?*ë?"ÚK? 0?’˜?„à?’f?Ú?s? °‘?)Î?<#?+1?¡/?"jj? ‚N?Ü{?ýÂ?Ò7? -é>ú%>äÁÐ>Õ“ô>Ñ_Z>Ük>ïDÁ>ÿc?š7?ŸD>í]w>ÔV>Ác>Àú3>Ø{?Å÷?l?)”u?+"?¡—?Úã? ÌÀ? M?Ô?Y?%O.?/áÌ?3½Š?/üè?(“Ï?áQ?Ñ@>ðjH>ÆøŠ>±L>¬î#>¬Áª>®¬>¿>åþ˜? 1?%t¥?7Šƒ?A -??€?1¬¾?[n? -Y4>éq<>¸^>‹Õ¾>d´>_Ö¤>€~-> gg>ÉÀê>ðÀX?¿I>ý->å>Ûš>ç½*>ðØž>åwP>Êu >¨†>…¶¡>Sš>5¢]>1Ùu>Cž>j© >•O¢>¼Q•>ß>ï =>ä2ß>ÄýÞ>¢{¬>ˆk¶>p€>aên>]ó>Tφ>LI¡>`£Y>T>ºvø>Ýs…>÷j?ë½?p´?¼Ã?4¬>Ê¡->¢t!>œ¾:>±JJ>ǾZ>Íà>Ál ->±Et>¯%÷>·Wì>¸Êo>¶G>Ä¥È>ç#Q?k†?Wr?Æ}?k¡?tÙ?íø?Ó‹?Ž? È?Å??©?i€?R? Ͳ?!Ã?!ù³?#e5?!/Ï?ßÙ>üI>Öù>¿Ý‚>µ!3>¶>ƱÐ>ÞIõ>è|µ>Ýи>ÊU•>½^Ñ>½Z>>Áa>»N~>®&>«×:>½f>Ø,³>?.?ýv?j†?>f>íœ>ÙU½>Ù7N>ëŒ>ÿÓ?3{?AM>çQ>Åîì>¨{¯>“£‹>‰œ>™k>—ë9>—Òb>‡ær>l.¤>f”6>}Sg>‡ ”>€²g>a‰ö>H à>Alz>I n>U:³>aûV>mLÃ>oÔA>dDT>SÚ>O -S>^ö¦>}K ->‰4ì>…3>m%>SS¥>Jã>Suå>s7‚>ÄØ>£á>«·U>¬Ø>¨û¤>¦ÇÉ>¤øà>»\>‘Fi>‹Y2>“£.>ŸLû>Ÿ c>”Î)>‹Ò3>†F*> >uƒy>b!þ>K…ƒ>D{R>^“»>‹[Ê>¨›>µÆG>²zŠ>¨êä>£&> ¬B>›ŠH>‘¡É>„] >på¶>k‚F>‚hÈ>ŸÈ!>ÅOÈ>ß -¤>Ým>Ãk•>£â¢>”’ü>˜ûG>Ÿ;Ì>ð>¡z>ºìz>Ö$Ú>Ò×u>¶k1>£Ó'>ªÇ>Áñò>ã —?Ÿø?f? –Õ? ²?Å@?vo?Œø? R)?5Ü?ð?ö?÷úëË>ér>Þr>ÚIî>éç±?É^?-Û?!5g?#¸?&i±?+Îm?0L?1b¸?/ú¢?+oþ?#Å}?Ä>?ƒ’?Ô->ê>Ôª >Ðê>Úú>>ìOû>øî>õ>â a>Æm->© ©>Êú>|v>\3Â>;óø>Hg>¨Œ>7>/› >bwT>Ž&+>«y•>Æ„§>ÙJš>ßM>Ú?¾>ÌÓ¸>¿È>Ä’>å"»?»Y? ê™?#ß?àØ?!žI?)AK?&áú?!“?#ãÌ?)ž±?&Bú?$3? ¥?Ô?ßP? ¹Á>åpý>¹Ê±>¬Ë>>²§>²W.>¡ -“>ƒ?%>I‹»>!í^>Þ>A«s>{z–>œqµ>¸Y>Òe<>ï3}?½Ä?zÍ?Ôà?*>0?8Z§?BÁX?E!b?@Ýq?;‹à?8ô?9í?;@Ÿ?FT»?O¦˜?P˜?L_×?M$å?SÑ?XÔ?Wǽ?R¯â?Jñ}?BJ ?> -·?ES2?UM®?a­?eÿ@?i%t?ig@?[ƒ}?A[H?0›?7rø?K¼R?[Ö?aðb?cÙ?f’k?i‚Ù?j‚ ?jÌ?j~6?hi^?aÌ?`?hò]?q¶$?q¶›?m¾Æ?kš -?i„ç?d–|?a:?dÂì?m S?r9ª?i“ª?O~Þ?1ÑÝ?‚?ô?â?éø?3–?P`?iô?t¦?r -!?hFÖ?a¸d?a¹?X•ö?:ï¿?Çq>ð$l>ÿЛ? ±Ý?C?ZùŽ?h ‚?i±?a÷Ó?X€?N[Å?E -±?>W?6 Ó?-×É?/áö?=X¬?F»»?<Â?!±º? -˜Ð? ”?‚«?.a«?7lÈ?Cê-?Oà#?JI?1”S? ±M?+P›?Aä:?K»?AÙG?2¯?+m?4y?Hk©?_9»?n5ÿ?m«?_£{?R_'?Nøî?WéY?hµ¾?xR¡?~¨M?zh?qET?h÷ƒ?d¸Í?dVƒ?^z“?O*s?AX-?<Ø[?>¶{??©O?8é?-^5?)’>?1“4?=`?H´À?T?[z?Z_â?UiÂ?OÝq?K42?Iª,?N4?W€Â?_°‚?cÈÕ?e3?aH?UB†?J˜?Iæõ?Oeb?PûÙ?P_‡?S·²?Yd ?Y_?R8?KZ/?H¶n?F¾=???/¢»?!-?C?'è}?9þÂ?KЦ?SŪ?U­ ?Wü^?X±A?QÜÿ?=jš? mÈ?È?Tl?-F‹?<ˆ?@€¶?=yÛ?69?0Og?.µ?/?-l4?) 5?%Ù½?$„Ë?%Õþ?.il?<…?G ?NN?UX‡?Zé¢?XS?O?C•?6d‡?1Å‚?;$@?Ge#?H_3?;ïÎ?,Ìé?'Ñæ?,Š?/Ò=?/h?-]t?.J?1Ål?2—Y?.»Ã?,|ƒ?1í?<Å?EðŸ?@¦?.vÄ?%¥'?1k|?A¢ç?Fx?F¸è?LÈ}?Nã°?Aà ?-au?X¨?Hâ?V?" Â?'Ý{?&Å@?(–6?6K?I ¯?YÑ?c­?hC?f d?[ß?PSÌ?NP?Så?Pýo?Bƒ?/†µ?, {??tæ?Y;Ž?i^\?q?s!9?kFg?XkÇ?>wÏ?Eý>ö×C>ͳþ>èÀÙ?› ?F’”?_Óg?gx¨?^CÆ?OË?F°w?>$Z?7™ò?:ö ?BR)?HØ?S;¦?`Ý?g„?j܈?t0?{%{?s}ì?_ Ý?IÀ>?6?'vÆ?*1?;¶?B¦Ý?7"š?2:|?E#4?]™Î?_ I?FÐ~?)õA? ·9?4üÖ?Vkù?mQ?uùÄ?wŒ?p·Z?a?/?O -|?8€u?¤?Þî?¦,?ãX?MË?(ëú?ES?^˜?g'?\zZ?M/i?H¯?LçX?Rœ)?Ro{?KC{?G£U?Gå×?=æp?*B¤?"›?.n?Ap/?H/?B«??ži?=•Ü?15Œ?Ó?Þ >øDW?¹þ?z? (?7? V]?Ãn>ç’&>Ñ÷Þ>Õ6Œ>íY?:?tP?.Jo?E˜Ð?a‹`?€Ù•?Šè¤?‹gb?‡ì—?„q?~s¶?mÂ?Mpê?$|?fw? ^?/Ù]?^¬4?{¨?Â?€…P?ýt?„„b?‡ J?‡´„?Y½?eó—?I=ü?7“?0©ø?9Æ ?Of?_ïÆ?hL6?ræ;?|g?€?ƒŸU?‡³»?‚c?aGK?C¯Ï?C¥Ë?T"ì?`ñ ?kSC?t§;?sÚó?mKø?r*?€Ê?„¦«?ƒÔô?…þ??‰Ïn?†´e?{ƒˆ?pu¥?pjÚ?q^%?pó™?nÅ?dUƒ?S’?Hbr?OMª?bš¢?q$ð?pÓO?c½ª?L¬ª?(îs?@>ð¨ ?0¶?9iá?N?PÔ?L¢)?L L?Qx¿?Y&u?\¦’?\Áx?bBµ?rŽ?€¾í?‰?s=´?bú?\jÙ?Y:ÿ?Bu?pÄ%?ƒí?ˆäF?†Q_?xÛ‡?hfn?gx)?kã¸?l¼˜?oä‚?xé¢?}µ2?u¼?o[$?r»r?ní)?]A?N^?T!?mY?ƒo;?ˆÞ -?„n.?s½H?c&¾?dEª?wt¸?†ÑÂ?ŠG?‡7Å?†\1?‡Þ)?‡n?„®A?€|s?n(ô?U.?Gð6?Lbg?R‘o?Qzæ?OFé?Mƒ?M—Û?Zó6?pg>?z›?ytñ?x2Ï?wòg?s]ð?p§?xòÀ?ƒ¥õ?‰J?Šp¢?ˆX?ˆ½§?e ?(?‡…›?uŠ[?d°y?fÕk?yÈ?‡ÈM?Žät?0’?‹I;?‚¿§?x@Æ?wõ?*Ä?„(å?}®Ð?læ7?j)í?vJ?‚£?ˆ æ?‰Ÿj?‡†ž?‡pw?Üf?•L¬?˜§?–ß?“ªÊ?‘¾!?’V›?”©?’Ò¹?sS?‡~?„´Å?…Èè?‡@ö?†}G?‡aC?‹ÿ]?/?2ò?Œ9ð?‡€Û?ˆX?qâƒ?`tF?TE?QG¼?WÉJ?b?;?lQ?mÚ·?f€»?b³¸?p‡/?„¥,?Š°i?‡÷9?ƒ?ÞÎ?„Æ„?†]k?ƒ„È?€eì?©Î?~`%?xð ?uê?{Sæ?€„ƒ?€Áá?Z¶?}ê‹?xn?‡y?Ø?Èk?.æ?RN?Žnš?‡ce?~+‚?zY8?ƒÅ?HF?y8R?|Þ?†4?É?JN?Š²‚?„¬Ø?Ýf?:?~,Ç?zÖz?{NX?~ü‘??€Š^?G?ƒj?ƒUØ?‚D?‚ž¡?‡~`?ŽŽ -?“œk?’ðR?Ú£?‰ÆŠ?ˆ²ª?Šòõ?ŽÕ ?-?kh?Žà?©>?vA?œ˜?%ö?Žs„?öÝ?Jq?ŽëŽ?‘8?þh?vJ?‘vž?Tä?Ê?‹×z?‹¾±?ˆöð?ƒÊ„?€?€‰A?ƒ?‡UÚ?†á¤?‚7‡?xØ?jPi?bOŽ?fFR?s‘ò?æZ?ˆp´?‹r ?‰\?ƒåU?‚/4?…“.?Œlè?’þ:?”Ç#?¶&?‰à®?ƒõ¶?€Ÿ?t E?^éû?QE0?\˜q?xø?†'•?‡°ç?„áÔ?„›?†Çƒ?‰¥g?‡ÊA?ó?|cÖ?|jF?€6×?ƒ ­?†¤¨?‡Õ®?ˆv8?ˆN?†)Â?„èÍ?„h?‚V?7ó?ŒÒ?ƒrÇ?…ås?…ý?î ?vÂÚ?to½?pùc?hõ?d?nzÌ?za¶?{ýu?wµ–?w4¨?|—?‚cù?ƒÙ$?€Qe?w>?yî>?…k¬?†—?’UM?•­¸?–?’øÍ?l°?‘PÊ?’øA?{ -?…½&?xt%?pû?r4?{41?‚Ó?…]ô?„ɧ?Vö?~üM?„¾.?‹œ?‹n®?Š‹?‹aG?Œ{ ?‹74?ŠþE?ŒÜ±?9½?Œ3×?‹W ?ˆòú?„u?€–?z½¿?z×Ü?‚ñ?ƒ’ç?‡]Œ?ˆªÃ?…5Ñ?~éÖ?yiR?v¬£?oòé?mò?x’ò?„I¬?‰$l?‡Ú@?…§?‡8í?Œ~8?Râ?âÖ?‘—I?’RÜ?°?Žz2?Š¦??…nx?„ ä?…à?ƒ_¡?‚â'?„ À?„ô¹?…q6?‡ÌÒ?ŒtC?’ÍÝ?–‡Ù?”ò ? ý?Š4´?†¡?†Â?‹ï“?¿?A˜?‹iO?ˆZ&?…–Ü?ƒí*?†9¡?ŠA?‹ÏÕ?‹4~?ŠßŸ?ŒÔ -?Ó¾?‘‰´?’:Ü?’ú¬?‘Òâ?YØ?…Î?€²2?ƒÁ?‰9Õ?Š6ê?‡¿C?† Ë?…¬?„j?„(?‡¬¡?Š»,?‹>l?Š?†—k?‚<?€Ÿ?¾G?‚4 -?ƒà«?ˆéù?Œs?ŠÐ?†~´?…¢¹?ˆ?ª?ˆ™n?†)?4?t­¯?oVŠ?rÏ¿?mHû?Wrî?> #?7¤¦?JNã?`Ú’?pÒ?yÓl?|ü?{4?pßL?X¸‚?Hæ?U8¯?mxø?z/?~Ç„?€O¼?‚w2?‡2Ø?†ôˆ?ƒŸÒ?ƒè±?Çë?t”é?j¯¯?lUm?mÏ1?bêä?Rš?Y]Æ?{›°?Œ‰“?‘ùD?‘Hš?Dy?ŒØæ?Š±?‰'/?‡?‚؃?ƒ´ç?‰Ë%?Œï?ˆ“@?€Ð -?tV¡?t¡¬?€€;?†ó%?‹`?‹ñï?„_?hL?D×7?7¾9?I²¯?fF?f©?ªê?L}?Jª?Š›ì?ƒ<‡?f¡ ?RÖ°?kV?ˆ¢?ÍÓ?‘Õá?}4?Šˆé?ƒB?‚%¥?ƒV?„]¶?†e?Šy°?ŽlÄ?!¤?çà?¿"?‰M¤?‚Ýi?~›î?zI€?ip“?UTr?T¬õ?e3‚?{õì?‡Z½?‰Á?‡‘ƒ?„¸?„Þl?†ƒ?†˜#?ˆC?‰\?‡ž*?‚‡J?x»?pŸ?oÉ?p:à?g¢Y?YR?^˜?téZ?Ý9?€Ûv?t:ô?d_˜?]d–?b³9?j‚?j?ú?lwÚ?tÁú?u¶?p´?ta?}Éø?o×?wH-?q ;?yÖ¾?ƒi™?‡Ù‡?‹›I?‹í¹?„Ët?x²“?w8s?v‹È?fÅD?Qò?QÅ=?lúÙ?ƒù ?‹€Æ?ŒÜ|?…6,?tÚ2?l£)?oéÏ?uøN?€?…éñ?ˆrî?ˆÑ2?Š$?‹ÇÖ?Žk? Þ?‘¾?…4½?yàÚ?wÀò?yH?yŠ ?€Ú?½°?|0J?y_?|.?}Wk?€y3?}.©?h„ã?YÎ?`ý?iŽ&?n˘?x‚Â???‚D§?ÿŒ?‚Ô^?„/é?‡1?Š4¥?ˆçÔ?ƒYu?xÁ?D¯Ó?<•x?+#m?;fH?\†u?k "?ke ?ní–?€¼û?ˆr?†çä?~_—?n|Ï?f [?mæ“?ƒu?Œ=y?µ³?ŽÇ?Îø?=o?ŒÐ>?ŠL?…Ìs?x -œ?eUÁ?i©ƒ?xðm?}r ?o¢?ˆÝÑ?Ž‚ì?Ž¤ã?Œ¿.?Úï?¸ç?‘Y—?0?Œ|¿?Švª?ˆEu?‡á?‰~Ü?‰²­?‡ø -?ƒn&?tï‹?iÅ?iNÌ?X%T?AŽ ?QñA?u¯`?‚Øš?„¤Þ?ˆüå?ŒŒP?‹ï£?‡RÀ?z9'?jW -?t”f?ƒ"x?…^´?‚ïë?zÈ?ö:?|@9?Úr?‡w:?‰’?Œ\?2`?’*ï?‘Èg?‡?Ž®Z?‹Eð?‡»‰?ƒ¿¢?2?|RP?y„?o\?[]?UT­?liþ?„@?Š˜’?Š!?ˆ+\?ˆxv?ˆ ?…M?€Ó®?€<ý?†O?ˆ­­?†…ƒ?‚âf?}‡ò?x‘?tÄD?t§?uí+?mM?dXK?mtš?w°R?|É­?}iC?jôi?R@F?PÉ’?dÕõ?oÿ«?j½V?njd?|xœ?€Q¥?}͈?‚>™?‡¬}?‡ë1?ƒ¹?€éÄ?€G–?w”£?w] ?„xµ?‡¿Á?|Á?i§ä?rO?yù?nÕÕ?h¤R?qi/?‚ ?‰È®?a,?Œç¯?‹›4?‡Ü†?|Ï?gfë?g7¦?€5Ý?ŠGi?‹µI?ˆŸ?‚Pƒ?qé?n»?Ê?Š" ?‰Ù.?ƒõ®?x¬ñ?v¯?€Ò°?ƒô ?…%Í?…æï?ƒðº?‚ðh?‚?~–?t‰S?eš‡?gÌ?{7U?AŽ?vš‰?y?‚œä?‡sŠ?„÷¼?}ÊR?}ö–?‚ö?…O?ƒÍË?ß?ƒ¬?‚¶a?‚‹?†b?…ë-?S?Ê?€ÛÅ?~ýÙ?{ï?žç?„$‚?ãB?yÊP?rݘ?vNC?}ØX?‚hÒ?†-u?ˆ›?‡£ç?‡„?†‡S?„ñÑ?=§?t¦¢?gÐÚ?pGþ? -ÿ?„|?ƒÉs?‚?€Î%?K?¨²?ƒc`?…»È?…*œ?ƒ?ƒ«B?„^…?…‘Q?ˆÍo?Šz?‰Ð?†Ö9?‚ÇM?¥ ?ƒ›×?„.Í?„A?ƒû -?‚?~r?|³?{†ê?y$?x«€?uê÷?w·ë?wr?pÒ¼?xeä?a’?€²£?‚‘b?ƒf?ƒ ž?$‚?€¬?xÅG?g)„?W+?Vl?boÂ?p·|?vU?sI?uÝì?€í?€Ûƒ?x±?r¾?kƒ‘?i•­?wÅK?…¥?‰ãï?‰›?ˆ²­?ˆïß?‰‰?†› -?u[ð?\¶ö?d2Ã?w’ì?~D?€ðn?‚´?|Mõ?nm?põ?}A?‚?†Uk?‡‹?…œY?ź?|ƾ?yǯ?y¾?~œÿ?€5¢?{²í?{›Â?-X?ž²?ƒ€–?ƒTi?€µ?€u?ƒ[?‚J9?zǘ?y;F?xΆ?l8Õ?kÏ/?t)9?tÌ?yá*?…û?‚ -¢?€Y|?€ï)?‚ Û?ƒl?† ?†NÄ?„ ¬?„º®?…—­?„ù?ëÈ?yæç?t1|?yÊ=?z´a?s­±?r?z~?‡¾?ƒÄ?ƒ£Ë?ƒò?ƒÓZ?ÄS?|Cæ?w¦?sqb?v¡ ?{1ñ?vN?mÒø?gs?a÷Á?b±ï?hËô?uÙµ?~ô ?k?‚J÷?‚ý?„k¶?…ÒÖ?‡\ë?‡§?†m½?ƒp.?‚‚r?„Š?ƒ%¸?€mó?‚Z{?…«?…K?„ F?ƒ”y?„?„ê?ƒ"`?ƒ‹è?…_2?ƒìí?~à&?~àC?‚yÒ?€MZ?sÒ²?oÓ¼?z²W?‚°Ð?ƒÊ ?8^?y]ù?qŽÚ?u±#?‚0?† Ê?†¶'?†#¼?„’a?‚;I?€Çœ?€{?ƒ2?ƒÖ¶?ƒ3à?{v,?kóL?f’?h’?f(ö?j¶)?w‹*?~«°?|æ4?y ?|Æë?€çC?‚¢2?€Ø?~Eœ?‚"¯?…ö?„À?·?yÛÂ?yUå?} ¬?€Â?…"?‚æ×?ƒ ð?Y?{¨*?{WŠ?‚£k?†?†+»?…)?„Ç?…ê?„¹“?„'Ê?„¡:?„‚µ?ƒ}è?ƒ|?‚:$?âà?û\?xw?‚ó„?…¿?…¡L?„°»?‚ác?€Áž?~ã²?€vþ?­!?€¤?}=?{od?uþ'?kH?jq—?ty?z«’?{v?~ˆí?åz?|e÷?~4þ?׎?‚óG?‚dz?¨Û?‚8ä?‚-"?€ù¿?~Ñ(?{ü¥?|Ÿ’?{zM?vðŽ?tS|?g­t?A¦¯?ï“?$¦?9ï?E«‡?/¸þ?%Õ©?EX;?d¡?s›ÿ?zé3?}rÈ?|…o?z.Z?|’w?ìù?€Q?c?~Ÿ?u0ó?slÔ?x3ê?}H ?€më?€És?~Ü?[É?n&?’?}׉?v½ü?u0‰?| /?~˜?zWa?} ?€ã;?MV?~ÖQ?xO?x¨>?~ -ú?€š6?~ O?uòÚ?ur?yV?v=)?vÚë?|qá?zÏ©?xò?{RÁ?÷ ?€ÏÆ?€œð?%Ï?|î?fÌ?E?‚.?‚mþ?ÍÏ?~§M?vá.?s1?vÙ‰?}pq?± ?xžü?mÛ‡?lÎË?rl$?w™?|ï?|>P?|æ?ÉÁ?G*?xõ?qt’?tÁ?xì2?w#$?sÕ’?v.?t4?kÌé?i[?r6õ?u|™?o*#?na?p?oäJ?p§a?j>?fÆú?i­ö?l´Ú?rh5?v ƒ?x¡Ý?{0»?|–Ù?~g?~?}Ò.?}ü·?~?{Ó7?xe7?vòØ?z±n?}ªp?~4ù?~u•?~¡[?€|?}y?xØ?sÌ?qa¥?tʇ?zÆ…?}V”?{²®?wE ?pd.?n"¿?wŽù?~Ž›?{?jñ?€¨?€n?}};?v»¿?oQX?p®k?s!ì?r.?sx,?rn?rw?sã1?q`?nÏ?nuX?qÔ?vG?vº?u—@?wO†?p°?],^?]‘·?o[_?uzo?tD2?vL?vÐ;?uÖc?yK¡?xâ#?t0”?t‹Å?r¸:?h\H?[zY?aG?oQ¹?s?qœ¼?pš?r’ó?tå¤?vßZ?oœD?Yή?NHö?`ˆ?pœo?n§¨?p[T?uM”?uÓS?s„c?qÎ?qEa?rn’?qI\?jR?h ï?l=á?mS!?_ÒZ?Fݶ?D›Q?YUµ?g¦ ?jOÑ?^«ï?V@/?dx¥?o!r?pºÞ?o$!?n¡å?rg-?réº?u?wXd?vEÅ?r -?PV'?[wt?YÍ ?ZF?[Õè?Y‘?YØK?ai9?gj?fN‡?bœÎ?bnð?ci§?bÜv?då?gây?gz@?]†?QÂ>?WfÈ?`'?`eÃ?b°£?h?ih©?f$˜?c5À?a° ?]¿T?^·?dQæ?eÜ ?f}‚?h?g—K?h~u?i~ø?h¾P?etJ?bëþ?cÐÞ?cù—?c€h?` †?X'9?T{±?\ÿ¯?d4‡?c&„?a¹i?aÿe?]ãÏ?_âÁ?cja?dC\?fç%?hM“?gr?f÷?fÁ?fœ?eæ ?ck„?^ô?Z2?\œ½?_yÚ?_·?bep?dˆf?d©˜?ehC?c6È?YZM?V¬.?`±¥?e¾€?gõ?fü -?dRò?b8Ñ?e­’?gÐ/?g1?d?]!n?Ydh?\ê?b\®?d#£?`§š?^ùð?bOä?cÞ±?b“(?aBÔ?^ÝP?\??XpT?SG‘?WV~?\¬‚?Xû„?W_Ã?]ø?^©¤?a,Ï?cŠ‰?c¿ ?ad?`vS?a¬?^dA?[di?\Ô*?\¬û?\ å?]“ã?^B_?]!©?[X›?\8?]8¤?^͹?_Ý?`õÑ?XKO?W”?YpÏ?Y>“?W9[?UW?Rø|?S‡3?V'J?W‹Î?WB¢?Vk†?R¼?Sf?W/?XkL?W5V?UÔ?UB?W›h?X}Ú?XÉì?Y e?WÑ?T3Ò?Q+ ?Sµä?V\÷?U²?Te…?U¶Î?VIÍ?V„ù?Wx|?W¹¶?V”¶?TËÓ?U¡*?V×0?Wä$?Wn¦?UËŸ?Vz,?V06?QYÉ?I¬å?E“Œ?MÚ?T®ý?W£m?Wd?V#K?U›?VÂ?VôÎ?VJá?VT|?VÃ3?Tg0?P'?Q‘?Q¦5?Nm¿?Ng¾?R5·?SýX?Q‹@?P©Å?N°P?E¼?G5,?RD©?Td?Læj?Gz;?L˜±?Qsï?RSÁ?R!B?Qöˆ?Qm?Qy½?PjÄ?LŸp?TUŸ?Y™7?W?Q?TbL?V`:?Y·?X¬‘?Rìx?N5Æ?Q‰È?Tí½?TŽ­?N ¦?M¥Í?P—ª?OÑ0?N¶”?Mt•?Oë†?Q¤í?Q¡Ò?Pì ?NÇ%?Iwa?KÂœ?P‡?Pù?O›?I™×?H;@?N1?QÛW?RÙ}?R·7?Qòô&?E-Ô?Nà?Q”P?P6…?P$£?Rf?RŸc?Q§?L,?B/’?Gú?QX ?SÁX?SáÕ?S÷&?Q¾Õ?Mj ?N)ó?Mk_?F´ü?I¨‹?N&?HN@?Aªa?F˜÷?IŸ -?F%í?F)?Iéw?K¬î?M1S?G¸;?BèÑ?I"v?EÒ?;ôM?B¢®?J/˜?K £?K·?K{°?Kú8?J|(?Hã®?F{à?Fœû?JK°?J\3?J•¹?MQ?NX®?LÝ«?Kž?KßÄ?JÁÜ?Jí\?L–N?I™C?Iš?L¾]?Kj„?G+h?H¨ -?K•õ?Lî?L߬?J¶ -?Cho?D?K Â?L@?L?Lÿ3?L›1?Kª??Jm?Iþ?J ™?J~³?JšŸ?GœØ?EÔÛ?G(e?C.¨?:ßà?="P??¤?EÃ?J]6?J ™?HgÉ?Hê¢?J]?J˜±?Ht?C¼‰?BŠ¤?@à9?D©¿?H§?Göb?G>Ú?E­Ý?EDî?GD$?AÅ»?:Qš?Aˆ§?F%?F;ê?EïÔ?G+Â?Ih#?IP+?H¡ø?Ih?H_Ñ?F´:?H8³?HåÈ?G?k?Déö?E)X?B1Š?@ÜJ?EzÛ?EþA?@î??à?DOú?G[_?G”?G¯¿?H^?Fê?E÷°?G¡&?J/è?I0?Eé ?D3?=‘™?8íE?8²'?@!?CìH?C9‰?Fú(?GkM?C6}??Øi?EÇV?H?D@L?A…ª?9aš?:8î?@ìC?;?:ªC?@*í?B.?>LÑ?9BÊ?B…?K/Ó?Ká¹?G€@?DoÖ?GО?IYB?H á?F„ô?@©^?>Â?>’^?9Z©?<`?C·§?G…¤?H€+?G«Ú?G{;?GŠ‡?FU"?>ªÂ?9w?@ÇE?FôË?Fø%?D™Ã?Bm??Éâ?>é??ªƒ?Aüî?CÇ¢?B6J?Bʨ?DæÓ?E?D’?@Jv?<[Û?6üâ?1œ«? ?@Bí?Bw–?C„U?CMì?B±?AßG?B„e?Aªm?@ ª?A2’?Aœ·?@q"?=%?: ×?=âé?<¡m?;ãÜ?>ßê??ó ?@ {?T?9 -?8%™?<(û?@4½?@ºj?@SA??Pê??@,??ݱ??]à?=$?<šæ?=f?>!Ù?>û÷?=‡³?>Ñá??CŒ?:e«?3ž?2Nü?5ä¢?<²??_ ??Ì¡??øð??Ú¡??è ??¿??¶²??ÉX??—Ë??/??X?@ -û??ã??¯??‹£??:Ô?=Ž?8m1?5«´?/Mû?+ܵ?0„N?1¦l?(J?2 â?;¾Ü?ƒ?>Ú²??Û?>ß½?<ç?:–ù?=n?>™O?>¶~?=éâ?=#È?= ?>¡?=ý–?< ¿?5'¶?4å™?<. ?>ê?>y?=Ó&?:ã??6F?7†O?7®?:†þ?<–?;kO?98¦?6g?7×\?6h÷?6;ý?;9 ?<"y?;–j?i?9­à?47Ý?3Wó?93i?<Ãv?;A?7%?5v}?1RÝ?4œC?<è?>]J??’?>¼q?>fá??ÄË??n?=ƒ§?=æx?8ªç?/F??1(L?.Ë/?5U?:ÀB?9Žç?8Jß?7üÉ?9³g?8@â?4q™?6ÍÏ?6aq?3ûÒ?6ã!?7LÍ?5¾*?4Às?5— ?6Ä”?4âŒ?3$t?2„ñ?1|þ?1ÿ?0áØ?1I-?/)…?0ÂÛ?3Ì&?3;ˆ?2©ú?3«ü?4û?0!)?.Œi?1òý?4*?3ÒT?4ã?3Ô±?3©3?0l,?/ãp?,•Ö?*Ü2?.G•?)vè?+?.¢`?+§?*öº?+T"?)Ð?#ËA?í¿?#x6?$C·?¢ë?%¾8?'Ÿ?"Ù?t/?!Ò?*݇?-ë?/õ"?08\?.ÊÊ?0˜?2CG?2z?0k?1˜?2ûR?1rÙ?0B‹?1†,?2 «?5“~?2#Ž?/Pr?4K4?7e¤?5™m?1'ð?2ô¼?5Ž­?1;?*¿ú?*§p?(Ð+?)Ÿ?0¯P?3µ?6ñó?4*?0·Õ?.»?/• ?4”,?4¯û?3ä`?3{£?3<?1}Ò?,R.?(î?. ò?5Áð?4A[?/ôO?3a?5“˜?3ln?2 )?,•?%Ã6?(€A?,Tþ?0“*?.¡ ?/Pà?2ÏÝ?2HX?09?0rt?0̱?/u?-ô¤?,›P?,å?.o†?/Áù?1×ô?0,4?. ?pË?]0? “7?$¸?%¢[?$×?!‹ô?n5?!xô?$5G?" \?#¬?"?éà??@>ïsu>ûÇ)? *?ÁÇ?‘£?$$ð?$½? ‡Þ?%H?§h?’?”1?Ž×?âì?Ǹ?‰?×p?Íå??âÈ? Î!?S÷>ÎË >¯°»>å]ì? hÃ?>q?½P?Ø -?Sv?!Ä?xq?¾w?p?A?£ö?ù®?"?=è?UC?¾ú?cË??½? h?Yf?_ñ?@P?¥·?ü‘?6ˆ?ŠÍ?Æ8?X§?4Œ?UÇ?‡â??iJ?Õ¡?t?û?îœ?!?±­?6ö?Ì‚?-Ï?ˆ|?ª?²Á?žM?lo?×Ð?õÈ?ûŸ?^[?5R?ª3?íí?Ûs?÷?ÕÂ?¶v>ÃI,>ÇH?üÆ?î4?aN?.n?ú?Gƒ?1?ò}?ʨ?>d?|¥? ?å…?fš?.ç?u?yË?U?Ç?Å’?¨?¡D?TÅ?Õm?Ùç?G?¨t?ÒR?å]?Ç?Y¦?Ž¶?%;? ½?v? xµ?wÞ?ê?¬c?-?þ×?ƒo?©?€j?‚?¬Ó?ö?’???2"?è?ÆØ?þ0?§? Õ-?âÀ??Ýø?Ä?¦?¥?àë?Æ1?×â?(6?¼¤?Е?æ?Ô?? øS>ñ¢µ>ýVO?þ[?-t?âq?žP?þõ?GÙ?í? ã?³©?òÖ?Q?}$?=?FÆ?¬H?O'?IÐ?¬?L2?å?!?ð2?Ï ?« ?MG?l?_®?4Î? „½?w¿?Ã>?¨Œ?‚¥?ƒ·?—?Z?id?ú??"?»±?Ôš?®3?0V?ü ?Ÿ?’™?«Ò?Åk?±Æ?©ö?v{??_?!9?y?f2?ÿ?x%?y?†?V'?ÊÊ? ?¬?…ç?Ð?ü>?‘|?à[?@Ù?B ?P??Õ¨?å?C?ÈÄ?TM?‘R?K®?¦e?\p?üy?)?”ú?À€?r»?6x?!è?š? Ÿ? -þÀ? ÏÉ?Ä­?³?A$? F»?NJ? ÕÃ? ¶ù? ¡R?ÅP? S ?ÞÒ?ß°?ñ?\;?™ª?;‡?`[?î?W?•·?b?L?ì?1?6ù?—?¿(?i÷? ˜]? g ?>2?ºç?û?F?}9?©ˆ? ‘¾? -ŒL?n~?—‚? –J?p -?*K?CŸ? k¸? CE? g·? Š^?Ë8? ˆk? ÐÜ?=C? -ø? § ?vL? -Ä‘? „’?n3?âÓ?Ñg?³Ÿ?^Œ?¦?”Z?Ïà?‰7? *¢? ‚ ? cÏ?f? á*?74? Ôx? {ƒ? Æ ? -ö? nð? ] ? EÑ? ? JT? g? â7? ;Ó? ÒÈ? d? l„? ð? j? Õ§? ì? ¬}? D ? -¬i? ¢®? -ð=? -¿½? -ˆÝ?âà?q¸?êJ?·Â?»ª?´8? &8? …Ã?¼Ñ?}?Cº?R? s?‘Z?Å? 4? G+?N×?Ì!?D? ó?å>ùÛ¿>ûu°?ã ?–?ª&? gƒ? -{? Ï ? Ã? -ÃÜ? -pž? &Œ? ™H? -A»? þr?@Œ?Ñ6?z?ãá? Û?? ˜Y? ¾Š? ‡?[ ?¯¹?a*?µ†?ßH?Oã?¹¾?•Ç?ñˆ?—7?–t? _?«õ?°?¹?¸'?×6?·º?‹Ê?Æ1?Ä‚?üµ?c®?B??]„?¤k?oµ? k?Þ?P±?áM?«L?àÕ?­Ÿ? Q?O?m?|b?êÖ?I?wÇ?zÝ?±Ø?ƒD?ÍÞ?H?Ò?æI>øú>ṇ>ö_×?Ö?Àø?)Å?h?ÔY?„¦?~Ë?C5?gD>ø»Z?-?ˆ ??~•?”?ÛÉ?r‘?°(?Óÿ?©ž?R?A -?®ù?Cƒ?ô­?îÒ?Ž -?9Ç?ã?0X?­?Â5?ŽË?À{?;?µ?™j?™?Q÷?=£?}8?‘?£î?ž?|d?zn?Ór?„!?E¢? H?Ã?ú>?}C?ý°?A?Ø°?„:>ý@…>ó3¥>ôˆy>üh<>ÿ'?‹í?Ì9?Ê”?–?Oz?ïâ?½•>ûª>ü²N>ýéD?s6?Þ?±b?ø’?‹ª?J?¬o?6þ?²ò?’>ÿ.‹>þ×>þÃQ>ý ->ýä?{H?êÞ?Ò?B?©ï>ýž_>þ7’>ûÜÑ>÷­H?S?Üö>û©Æ>ûW¸>ø×·>ý}â?^>>ÿ% >ûL(>ý'P>ýS>ùT÷>û/Ò>õÖ>ú°r>þRé>þ:ö>þ¸à>ýà>ü i>û1˜>õÇ„>ü‰>þœœ>þ‚¿>þšÖ>ü]>÷å|>üÅ>ýA@>ýÓÿ>þY>ý-Ï>úÙ#>ø$Q>ù -‹>ýáù>ýî»>ýº >üeÓ>ûßß>üaë>ü?ï>ý h>øù|>÷+7>û*Ð>ù†S>ö•>î¹>öRc>÷š¨>ö‡½>ö/>úl6>ük³>ûÙ^>û5W>úh(>ùK>òx»>õN>ø“Õ>õôB>ø)¡>û[ý>û©{>ú[Ð>÷Ÿ->ñ?›>ñò«>ð >ö>Á>ùLÆ>ùcq>ø*A>ôvÒ>óÖO>ø²X>ù¿>ø¥˜>ø%>ø¯©>øø›>øŽu>ø.¨>õsŸ>öÓ >õîb>ö -Z>öaa>ó3>ó2)>÷(8>öõ)>÷g×>÷‰S>÷Y>ö|>ö<…>ö•†>ö6ô>ö„L>ò?>íøî>ôÿù>õÙ>õ¶ >õ –>ôÒ{>ö_¤>ö‡,>óàá>ôO;>õp˜>ðá­>ì ì>ðñá>õ>óÃ$>ìò>ï¬4>ó`)>òv3>óÇd>òÝÔ>ítÙ>ïe>óž >ôm5>ó ¼>ñ€+>ò¥×>òœé>ð([>ñ×À>óH´>ó6>òÃÞ>ñ´†>ñaí>ñë>ð;|>ð/>ñD‡>ñTL>ñ~W>ðF²>ð£¶>ñPs>ñÊ>ðØî>ñ/d>ð©e>ðL¢>ðzÅ>ð)Ö>ïÒG>î‰n>ï4f>ðˆ>í7>íþÕ>ï^>ï>îkV>ïbr>ï×/>îÄ¥>îß“>ï“>ïŸÙ>îÿ->îCˆ>îŽ>ì¥N>ì‘>ìÁ >ë">ëî¦>醤>ë0¡>ë)>éÚœ>åo>ÛÑR>Úƃ>ä]^>çy‘>昄>éÊ­>ë=Û>êù>>ë®>ê:O>ì">ìªì>ì-Y>ëg>ê·ß>ê…Ê>é¨Ë>êôu>ëPu>눉>ëæ >ëüu>ì#>ë‰L>éY>éÀ>ëo>ê“ù>èà>é§&>ê»>êi>è'>çÄS>éÀ>êp>êV>éË™>èÄÃ>éb­>èÝ0>äg>Þ3æ>æDø>è–~>ç}Ö>å5Ü>æƒj>èœ(>äQo>ß´ˆ>äÕ>æýü>ç¡Õ>瘙>è5Ÿ>牬>å¾È>Ýš;>àOA>æn>çÒ>㘖>ã&Ÿ>岯>å›ó>ä¼Y>ä–å>åÒ>ãq+>å·^>ãß{>Ù›>Üöý>ä„R>æG>åO >åDM>å¯K>å7W>äË->äl>ãûè>äÏç>ä(+>äL¨>äÐ}>ä¦É>ä›=>䌖>ãòã>㳸>ãay>âÂc>㢘>ãé¦>ã!¬>ã8–>ãÅò>ãŒù>ã*r>âé˜>ߦ>ÙÀ>àøú>ã >â|Ù>á_¢>àXÖ>à“ž>á”[>áGî>á Æ>ß4>á3ü>á•0>áq­>á#¿>ß;þ>Ørv>Ú‰ý>ݱs>àLÕ>ऱ>Þ_°>ئá>Ò`Â>Û>º>Ý×>ß•Ö>Þj¹>Þöº>ß¼Z>ß«Ý>ÞØ€>Þh›>Þf…>ÔGä>Óä¤>Þ8>Ûþá>Ú®>Þš“>Þμ>ÞIÓ>Ý€h>Ý~>ÛQÐ>ÕÊã>ÛÀ?>Ý¿Q>ÝJ£>ÛÓï>Ü/>ÝÂ5>Ý¢>ÜÙ>Üö3>Üàb>ØÌÍ>×6>Ùv>ܦ>ÜŒÃ>ÛC>ÛÙ>Ûñå>Ü b>Ü;‰>Ú’U>Ù{¯>Ûg©>×h>Ò/k>Ó¢È>ÖÁ>Û -®>Û !>Õâ>ÕO„>Ú³Q>Ú÷>ÚÉ´>ÚÇÜ>Ú6>ØC¾>Øåò>ÚiC>Úà>×è>×çv>Ù¨Ö>ÙK©>ÙS²>Ù@Ç>Ø`V>؈>ØÉ!>Öb>Öç^>Ø«L>ØÛö>ر>ÖÜF>Ò - >Ô78>ÖýÏ>Ø':>×Öð>×Îd>Ø"Ä>×Ï=>×gö>ןÞ>×4.>×->×LÁ>×R4>Ö÷=>ÖѶ>ÖŸ×>ÖYx>Ö*<>Õ.Y>Ôi^>Íò>»_ƒ>Ê9c>Ôö]>ÕÅ1>ÕÔ+>ÕœÎ>ÔÁ$>ÉÞ°>ÂùØ>Ñ+->Ô"“>ÒÑQ>Ôj>Óƒ–>ÔN1>ÔØ>ÔŒ>Ë6ï>É°Ñ>Òô>ÓbÙ>Ô%[>Ô7¨>Ô4,>Ô>ÓW>Ò¿¹>ÓbÎ>Ós¹>Ó˜>ϱ>¿ À>ɧó>ÑÔ>Ñ„q>Ñó×>ÑY“>ÒÈ>Ñß>Њ>È%g>ÈR$>Êcg>¾ãÃ>Á‹Þ>Ɔ>Ð é>Ñ_ý>Ðüs>Ï—H>Ëƃ>Ϙ >Ðø}>ÐNq>Ìÿ{>Ï Ã>ÐC„>Ë‘…>¿9Ù>Ť>Í#g>Ïv¢>Ïê´>ϸ'>Î$þ>Ë­ù>ÇO´>»8!>Æ-®>Ë9 >ÎÈê>Ï?Ö>ÎöÑ>Î^K>Ëßy>Ì{ >Îs£>Î$Z>Î=^>ÍwÆ>È®Í>ÂSß>º;>Æ–>Í<ô>ÌõØ>Ë >Ë‹ƒ>Ê͉>Ë)Þ>ʨ>¼i´>¬Np>ÂÿÇ>ÉuÚ>Æ1Ø>ÂI>Äåq>°i>·ô >Èó>Ǩß>ÈáÖ>Ê´>É+>¾>ȳ>Ë3m>ËsŽ>Ëo>Ë^~>Ê÷>ÇÈ°>Ã`>Âo¸>ª+>¶&¼>Æw.>ÉJ>Éú>Äë>¼ÎI>À3^>È=>Æ{·>Æz7>ÅÛ>È™>ÉlÄ>È*ª>Ƈ–>È%T>ÇÑR>Áäê>Ä 1>Ư²>Ç:>Åؾ>Âf¤>™à>ÁÈv>¾1Ô>´L>±›Á>¼Va>Á>ÂüÅ>Ãjè>¾Àe>¼8…>¹!,>¿õ>ÁŸD>´4y>µ©>Â4S>Ãb™>Â÷Ñ>¾ãï>±Ã>¶–V>¼œŽ>ÁT«>Ä >æŽ>‰ >Á19>¦™>Á–a>Áâ†>Âö>ÂO°>½ûs>º'0>²lB>¹Y>¿®)>ÂòL>Á=ä>¿–ì>ÁÏ,>Á¿>¿S(>ÀÄ>Áž{>¾Õ×>¾Î¥>Â5 >Â)Ÿ>¿T@>¾»>Á¾•>Á°»>ÀËx>¿†>À>ÀÞb>Á¹O>¿‰>¾tá>À­¶>ÀÞf>¿ ô>½ŸÃ>À±n>À4>¿ú@>¾ 1>¿“>>ÀRŸ>¿¬Z>¿_¾>¿ >¾Æ³>·Î÷>»ö>¿£é>¾$^>¸ÙÙ>¹:•>½W1>ÀM>¿ -­>¿l¤>»kˆ>¼q´>¾7Þ>¾«:>½SÆ>¹U">¼Ù>¿³N>¿-‚>¾­>½þ>¼fÃ>½+Þ>½3+>½&þ>»"Õ>³9ï>³2©>¼,Ð>½¨>¸:ÿ>¸ëÏ>¸Õ]>»£`>¼ùH>½•†>»å>ºê!>½kÝ>¼ºÅ>¼s¾>¼@Ò>ºF">º¤œ>½8>¼Œ»>¼M®>»ß×>¹wc>¸(þ>»!÷>°®€>¢bš>«‚#>¸—>·±>»:±>¼7•>»E>»Ðt>ºÎÄ>¸>¸8¶>»OI>ºâ›>·OX>¯‰>µé<>¶æ‰>´«Ë>¶û,>º -`>¹-ì>¶u”>µžä>¶ð2>·N>¹b¼>¸úm>¹ -¢>¹ëf>µåx>³0>´öx>·Ðe>¶9>>¸s)>¹3H>¸N>·;Ó>¶`‘>µ6>· ³>¸b…>¸jç>¸|‹>· Ð>¶£å>°“È>³´>´ai>©?Ü>±HO>µD5>±Þ½>±.>´¯?>´j¿>³kÆ>¬ >¥²X>²Œú>´™ >´Ö>´_³>µî#>³uÚ>¯Ìm>´ß >´ö>¶'U>µRy>²Wá>«³>²]è>µ H>³P>³²>µ/Þ>µ¦,>³šz>´I}>´ú³>µ5²>µd¢>³H°>±B$>´Æ+>³À¯>²@¥>°…G>±„ˆ>´qm>´:Í>²®°>³»À>´@>±‡_>± à>³Ì">³NI>³Íù>²ç>°ÿ>°Ä™>°”Ã>±çk>±4>²Ñ~>²Ås>²Í9>±f9>°È—>²ÿu>³ >±ïß>°Gg>®³u>±Ÿg>±Ï¨>±þ >°Áÿ>²>²4q>±m >°™r>°Ú>±u„>°ËŠ>°R)>¬~ì>¤,d>ªÆI>°ÿ%>¯Ñ!>¯8>¨~F> ÔÎ>£U>­Î>¯>®Ý‘>°˜>°"¾>® µ>­q§>¯‰ >­ú&>£¿~>¨ö=>®+ª>¯5á>®³V>®{C>­“õ>¬×ô>«>®?Ä>®>¬–´>«Â¾>­Ûõ>®_>®ƒt>­!”>­+c>­.>¡v¢>¥è>¬cP>­¯>«‚i>­ž>­ØÁ>­f>¬¬¾>¬  >­>¬ñ'>¬m×>«³>¬Ëí>¬÷l>­>¬a–>«þÙ>«å)>¬‰X>«Eq>§ó>>§ÄŽ>¡ø>>¨£Ï>«Ùx>¬1>«•6>ªƒ#>§Rh>¤,µ>©sÌ>©êD>¥©…>Ÿ;e>©¦T>«»>«]>ª‚*>ª!>©\>ª%¸>ª—±>©w(>£*í>¦µì>©¶½>§Í+>¥¶9> úø>…q”>ŒÄ>¤Mø>§ìe>¤!O>¥6Á>¨?Ô>©'>¨V9>©C>¨ø¸>¨(¤>¦³»>¦Çö>¨[û>¨ÿß>¨dh>§¢É>§·D>¥þÀ>–‡>’ˆ>¤¹ž>¢»Ì>¢á=>¤e>§¶>§ÂK>§ú>§{>§4>§¡Ý>§s@>§[>§„>¦ì>¦^‚>¦Á ->§'Þ>¦æ¤>¦ -Œ>¦N ->¦4>¦¢(>¤{è=­}ë=Í›=ë¼V>ÉÁ>`>ÐÝ>ší>B >Ð0=õ^=ìµ=Öµ=¯¹=…!÷=]t¤=p=Ÿ8U=Ö…>ÈÏ>l¥>!¡>=×=ï²=Ö÷U=ÂEÚ=®C†=¢qó=®2=ÕÇY>±}>Ä4> «>>›J>ée> ’T>´’>+ç=þ%=ö®j=ý%>AÅ>7à>Ä>Hƒ>Ÿƒ> ®>ÌÎ=òúh=æ(‘=î–¸>ýú>LÈ>+Œ9>*Ѿ>ï³>Õ*=ñºL=ãÞÔ=ØSØ=ÇzÓ=´5G=¤åY=žaí=¤â˜=¹, =Ò`‹=á“=àn=ש«=Ðâ=Çê=®ƒI=‰’=V´^=Pê=‰ÀT=ÇB>¹>~¼>&Ñ6>'C>(ì>1(Ô>=‚>GqR>J F>EÌý>@†c>@>D L>FÕà>Cû>=ø‹>:Om>8³[>2« >%Ø>—>S^=ÿ}•=úû·=ýó¸>"²>nE>Æä> ¸&>A>Åà>-Š>¡>§> -D>SÄ>è‰>@>Š>¢³>ï> {)>C->Ê> Ñ>#> >!Vá>'eç>.\>4ùo>;\>Ag‚>C×)>>©¦>2!í>"üÌ>(ö>Q> š> õZ>9Ï>%þp>;ãn>Ma—>T‰>Sݼ>OD>ICG>B£A><ê1>6ÕN>.ãT>%b>âü>->ý8=ëÆ =Ú*#=ÏÉÎ=ÌÕT=ÖwÚ=ðŽa> ¶Â>4> Ö>%3‹>+ N>/™Í>-}†>%'û>!=>,½>D>>\؉>iñú>hoÇ>]lÒ>R¥T>Q$ê>Z¢H>fLŽ>fô³>W ><”å>!k> ‚o=þ=ðT=íáÍ=õ×Ú>,b> æ¶>@³>Rä>"ª¢>-Í>8ÚÅ>DSL>HÁö>=Ð6>#Šq>eQ=âwó=Ú¡Ä=ì¦>u>LQ>ÙS>(_š>:{y>Iu‡>J—C>>/î>0z>+\>/:>9ó÷>J±á>\Ë\>gëÁ>gòÛ>_±Ê>STa>D>2NK> »>Ÿì>¹]=þ-&=õI=î}Y=ñ:Ï>P?>É^>'—;>-0 >.Áx>4&F>;ï>?ú><êR>3ú>'7> Ú>#1›>&c¼>!9 >s¬>=Ç>°Ð=÷bh=ñ+Ä=ö×6>q½>4è>'q«>)Ö>fZ>£D=çô=Ø:ä=Ý“¬=ïØG>ö·> -ŒZ> ü&>ø(>q>$`|>'ÿÕ>+}Ê>6Â(>L6×>d/>q/>j>UÞs>BA><;>EŒ>RH´>YÇu>XlY>Q~&>Kˆx>NÄ>_õf>zé>ˆùf>vú>”˜>˜û>›3/>œjð>› 7>˜ç‘>— Û>“H©>‹œ0>‚è…>}ûJ>‚fÂ>Š‰>‡>’¦:>ŠB>ˆN¥>!#>ríA>rÉ!>{‘>>‚…±>‚,’>€iÇ>y]n>qç>k)ÿ>hF>iÐ:>q<>zW>£>€EO>€Âš>JÖ>}¹Ö>pEð>`èM>[n>g…>‡L>‘¿Ù>Ð>¢aµ>¢1L>¢ØT>§&}>¬o>­7Œ>¨Ì>¢l>¡»8>¥XT>©ž3>­;½>¯kâ>¬¿Œ>¢ûÁ>–¾^>½é>Ž¹å>‹ó>íâ>l >dt>qgm>‚ïÑ>Šöd>Ûv>’X‘>‘›™>Œyç>ƒ½—>sŒµ>cŽæ>_qÿ>jÿÏ>Ëf>‰$è>ß­>Žó>‹>…£Ž>zÆå>f÷Ì>[d>cÆ•>aS>Žˆ‡>–oû>•ô‘>d„>ˆ¨[>W>~"j>ƒêb>‹*1>¤š>‘2B>ÑV>ˆÿy>zùæ>g¶j>evÑ>tœ4>„9>‰Lr>ˆLK>ƒÒ@>}9>uðh>wƒ>“>‰ p>í>’~‘>ò¸>ñŠ>aCA>Afy>8r>N'´>uõ>‹µž>“à˜>•°¡>—#ò>šÚö>žÿ>"ñ>•Vj>…)Ê>] -“>/;ú>Ì8> [Ì>&¨¡>VS¨>|>T>­>†Ù‚>} ¼>k·M>V ->@¿>0î˜>,nÄ>*ú>(dÞ>-9>DJC>j¼y>Šxñ>šþ'>¢ë`> ´õ>”>Yb>Y%>I÷?>Sœ´>b 5>fˆt>hD>vé>†Ðâ>3Ù>‘Sã>D‘>Œè˜>‘Æ_>’s£>‡ç>lÔ›>O ¹>D]—>P"P>kXV>…©€>”ßç>¢,‡>«Îs>°¨>²«D>²È>­ Å>¡è­>–¹™>5L>‰ü|>…ÈT>ƒ}–>ƒ¸Õ>†cL>Š@ >Œâ>Že{>q×>?>‡z¤>kvŒ>B¿>(Ôu>,6>J»>qD5>‰ôÃ>™^Å>¨u>²Ïº>µ¢¾>°>¥’š>˜™¡>ðí>’³®>—ÍA>—ç>”õï>™[>¨h±>ºü>Æ?æ>óP>´¤¿> nÉ>‘&2>Že$>–Æ>pù>œë·>•Šš>‹e½>{À:>S˜¦>&s>¾Ý>åÝ>ž½>!¦O>0ñµ>Ajó>SÕ±>o»>Œ‘û>¡™¥>¯¡ˆ>¶AÂ>µ-—>¨ìî>–(Ñ>Œÿ^>˜U2>°aÆ>Âæï>Ãr3>²6Ó>™ì€>ˆ*‘>‚¤> -t>~G>~Kè>†/>7Y>“—Š>Œó×>…²>‡e!>”DF>¢/¿>ªÕ”>®Í…>®d„>§¿{>œŸ>Ž®~>Ý >^@p>Aa>:³À>S¼>€­®>–IQ>¤˜ª>­Ê!>³³¹>²Bµ>¦­Ú>™KÊ>—M­>£øê>¸M>ÊR.>Ïõ§>Ãè·>ªC>Ù4>vÒ™>nG>tâU>€A[>ˆ»6>×â>ŽN>…Ô >.Û>‰ 0>žJ@>´>Á ß>ÆCç>ÊE+>Ð>Óï–>ÏÔ>ã >·µT>³¹ú>·5;>ºEL>µXG>ª 7>¡›>œÈ¶>–¹>‹u>kJ>|žG>‹‰1>¢ß„>¹œ„>Æ&N>Äé>¸¥?>§ãÍ>™`ú>< >…!ã>oÒ>U0>I[>QÝü>næ4>70>¡ø>®z”>²-j>°:÷>«£»>¨Î>¬–>µÅ÷>½5…>¾›Ù>¼DŠ>»5§>¿ ç>Åñ¶>ÈnŸ>ÂJþ>¸ñF>´˜Ä>·2€>¼Sv>¾ã¡>½uy>¹š3>µn>³ÁC>¶@Æ>¹±“>¹ñ>³tÞ>ªæñ>¡¯)>›½>šÐö>¡Ð>§ô>§Á¤>¡w>™¯D>•Àý>–Íî>›hì>¢îý>©•R>¥Â´>’[×>rµ¿>W\­>]³­>ol>o³&>[®ü>KC>Qiº>k:Æ>„A¡>Ž^>“l>–pc>™>Ô>™ >‘ON>‚„>b“p>@:!>!ªå>1>‰>#½>'¬>Þ†>¡>E!>(ÁÛ>9¿Î>Ló#>j+L>Š,Ü>r>¥/;>¤ >¥‘d>¯>Æ>½ŒM>ÊYá>Ñ¡>ÔM>Öûê>ÛÙ>ÚY`>Î.>»¡>ª˜> âþ>œö>›Fé>!î>™Š“>‹mÝ>w¸¥>r7>†€>˜3l>£J¦>¥¶V>¨§‹>±ÃÒ>º<˜>¶ ç> ”Š>‚NT>[”Õ>`e?>…æm>¡,ì>¶Hq>¿Šì>Àó¢>Æk›>ÕÄ>än+>êyä>æ:R>Ù>À½>žfñ>„¯¶>€oÕ>‹TÃ>–U>=_>¤®>­!„>µÿÆ>À´>ÍI>×;">ÙÄ2>Ô,>ÊÎ>¿XV>´‘>ªX>¡ž]>™òc>‘Tì>tÁ>“°> µ>®Èi>¼m5>É©ö>ÓUê>×*”>ØãÑ>Ýj:>äÌ°>ì ’>ñéE>ôžÚ>òÊí>î‹™>éwß>áê>ÙP>Ô½¯>Öù>Ú{ë>ÚÃu>ׄ‘>Ϲ<>ÆKx>Ä —>Îë>Ý[>奂>åÝ«>å h>åI+>à\Ç>Ó©¼>ÅoL>º¡ò>³4À>² -Œ>¹Å„>ÄýÕ>ÍT=>ÐY*>ˆÆ>¾Ê>®æV>¢>¡ay>®Ä­>ÅŠ‡>Üã<>ìE¼>í4»>á¤>Õ;ß>Ðñí>Ò0¹>ÔWm>Ùø®>æ²>÷T?o?E‹>ùžM>éÕÃ>Ò½¦>·' -> >Á>–hø>˜q?>œ~>zè>¢÷>±Éà>È©º>Þ‡™>òžj?“ª?¨3?ñv>ÿ›ì>ï¿L>ØO>³ñÞ>‹Â½>_„>Om@>d•z>Š”'>©mÁ>Ŷ0>×AN>Õð^>Å J>¹É°>¿Ÿœ>ÇÊt>ÃÏ>µo—>Ÿ«>ƒ#>Méº>*ß™>#ÆU>2àÚ>Vˆ7>‡>§Èv>Âc>Î>Ý>È•à>µK>ŸÓû>Ëy>~nå>k->bGº>TGE>?¸Ö>AÊÌ>o£Ð>›l>º…€>ϱ>ßš…>íÝ:>ï›>Ú#>±á\>ãt>ƒÖÜ>‘ÉG>¥Ø>°y>°!>ªÚ3>«±>±¹>±÷>ªŒ5>«¦P>º¬w>É1I>ΣC>ÔÐ>ßìU>ë>í7%>èO>ãŠ>à×<>ߤá>ßb\>ä°i>ïkß>÷!7>÷bX>õÞµ>÷²ß>÷™å>ê—>Ð×°>¸áH>ªÇf>¢8·>ž_>£r>°v?>¸}>³-ó>¨O>Ÿn >œàÜ>œo…>—3à>m>5L>Šà>²‡>æi>Б*>Ûn>ßw:>Ù”Í>Ê*p>¹Ì;>´Ã>½U>Éï>Ïk5>Íl1>¼Ì>±//>é>$c>‚ëG>„µ`>·Ú>Ó¶>{«T>UNˆ>MÚG>göö>€¼>wÃ¥>Uéu>7V >.¨>6½ >Eæ>U¤>c’ >h0ƒ>[¾ê>Eš >8¯¦>@tf>Yx,>qy>s>\ÁÒ>Cê>7eË>=æÑ>Z­†>„V>˜k„>¡Xf> †c>› Ë>˜Qû>–ÇÐ>È>„¨>xÙ>×ß>ŠÉ>ŒÔ#>‡~>O>zªÜ>sxæ>iç¨>WÒû>>>.½ô><ïo>hC >ŒŒŠ>šî>™ãæ>’Úf>Œ8K>‡E®>$->p“¼>Z\ú>EàÛ>>œ>MÅ€>u7>”Z<>§gþ>©é³>œ>3>ˆkÖ>y =>x w>vSt>h€W>iuê>‰ô>§à>¯Æ*>¡~û>•—»>™ÎÚ>¤ï>¯P‰>Á0>×þ‡>éÇ>ï;´>èŸ8>Üþ>ÕÙ>ÜZB>äÁD>Ấ>ÙU–>Øqn>ßö>à¸G>ÚG>Ô'h>Ì9>¿Çu>¼ð >Ëvi>ßäB>ìÊg>ñmu>öÐ>ÿ“R?¼§>þî>÷¶’>ñSÇ>ìT>éÐ>å.X>×¼Ç>¹6>°ˆ¥>«9>±>»Wâ>¿Î>¸¨v>§×u>‘©Ö>s*–>HÊá>'W"> ö=âë¦=µ¿=™±W=œ‡=Àµg=üõ ># |>K™w>u…–>Œ˜D>—‡c>œMù>œ>>š±È> š¢>µÙ>Ï)>Û5A>Ü[>ášÒ>ðpÇ>ûI¤>öÉÂ>ììß>ñ,Ú>ÿûÛ?ª9>÷ô¡>ïP1>òWÃ>÷3ï>ì£Ã>̃Ð>§'E>±¬>ˆ2K>~ÁÒ>\©Î>.>!Ü=È—ù=¼v=ãŒO>1á>C`Q>p7E>BG>¨Š_>ÁÊ>×"Œ>ê>ýáþuá?Ú7?ë?0„?;+á??–X??Ðö?;2î?4»¦?/!?*úö?)|?&[Ÿ?",\?#6g?,Æi?6Ò•?5hÄ?$ì¬?} ? oû?Ò?#¬­?(xÞ?0›Ž?;ÅA?=¾?1ã?%8‘?(ªR?5œ?8UÌ?-ÇÇ?Úš?}Æ?ù?(lÊ?:žH?Gdè?HÃ3?@Ô‡?8r?5ãª?:Z8?E3N?R ¾?Z ž?YÊN?T_À?N?J¾n?L?KI?Aܼ?6øž?3¯™?6 Ž?5Ï"?,¨?.?(?ÿs?*ðv?6f”?@×?F´ñ?HAf?E@É??–?:±?9Íj?=§Ñ?D¦#?J±|?MX&?MìÇ?Kl?C??:ŽV?9ü‹?>Ä”?@Qx?>W‡?>«I?Bå?E-b?Bš?<‰U?8[ú?65?4$ç?.’l?%ù®?!¥Ó?%·J?1Ò6?@'³?Gæé?J?M2 ?MÒ?GáÉ?7êš?!ã?5?gl?."t?;DÊ??½‰?=}Ö?7L1?2þÝ?3 ¹?3ç:?3 ð?0Â>?/B?.ië?0\“?7¾?@cø?Dñ*?Eé\?HŒJ?L?*?KXú?Fì­?B”?<×0?8:?:Nü?@ £??S?3ïH?$²í?`ž?#ËÍ?,ž?/ˆƒ?-qö?+Ûã?/bŸ?3âU?4{?2˜š?4þF?<6C?CV ?A÷?7g?0«L?5AQ?<š?==`?=§§?CaÍ?G‹}?@¬™?2“Ù?'Ûæ?#ä?$Xò?(}£?,V?*O0?)Ž?.-Ù?4Ö«?:D??An'?IxC?Ny&?M…Ô?I±?GÓ?JJ?I -?@z?1èB?*¶(?5MÌ?H†‰?VX8?^Ž?bWƒ?_½?Q»‚??,g?)€G?— ->ù Ê?Tö?'º?E‰?Sê?Vи?QKZ?Iæg?F Q??©ˆ?6j?3°¡?8ZÙ?=e²?CΘ?Kô¤?NÏ*?Nnï?TKÉ?Zôã?W<•?JK²?<­é?30Â?.Ôš?3®Ì??ßÊ?E•í?>²?7_O?<Ø?I»˜?KÖ_?=ê?,wº?%¡(?0‰o?E‚‡?U-(?[¿-?^¦?ZbŽ?P›?EWí?9à]?(<ú?ßœ?ô:?ü7?"2E?,ó?>G?NE®?Qré?Eñü?8e¤?7‡…??¬,?Egƒ?A`?5–?.¤^?0[.?.Ç!?$K?ŵ?$†í?3A%?<¤&?:P?4xü?-ÝÔ?"àQ?éž?¬8>ðãù>õìŒ>ÿ!E?Ü?‡?|ú?„Ú>ôiÓ>ßµü>×ØG>á¯z>óýé?s¾?&f?*Õš?C•Ñ?`œ ?u2p?z ï?w^Ä?pˆà?f‚[?WÂ^??ºÙ?#†`?gÕ?ÏU?/]>?P3Ô?bÌ%?dM:?aÑÇ?d1Î?h"á?kÅB?ov?k°?Wƒn?>Ý?,æ?"Ôb?&Ø?9ûX?Kµ?T³‘?\ö:?bçÒ?báY?epË?l'b?g8¤?OÌï?:vX?;¦?Hx?Q½j?WÑœ?]®ñ?\ï?T8!?T€*?_Ø?ha5?h¨?jùä?p=c?l1Ñ?_:?WX?X«?Ywô?XÕ¨?V‡?NRb?ATÚ?:T?Av3?Q-‘?\Ëã?^è?[å?R&Ó?;7]????²?5¦×?HGõ?KH¥?F÷Ñ?BŸ4?D§?LvÈ?Pðg?N_ ?NÏ?Wçe?c·•?d\X?Yt_?N8?O;%?VwÚ?Nhi?9í/?4Z—?@`?Gg(?Hòh?RôC?d×?qÍ?v6s?mµž?YÀ?KäV?P;g?]r?k+?sت?q<Ð?ek1?\+·?]ô?aò ?c¯?dM~?ggû?h»º?c$²?_Z?c.¶?c'ü?Xʧ?M×?OÆ·?_˜r?q?ylÔ?t±"?g(?Z'+?Uêà?^ s?lÉö?uv6?u<?tÊš?tG_?pË€?oƒÁ?nñ,?fà[?Xym?OGC?PìC?TÝC?Sýµ?P© ?Mg?J÷Á?QïE?_ó?h—¶?j[—?jŠD?i%4?d#¬?`Û/?eMÀ?n³•?x~Ì?Ô?B–?‚,?„Šï?„×?~z??l´,?`‹S?`ì^?mH’?}«?ƒª²?„Û×?‹«?udì?jž?j[g?s¸u?z¼?u&\?jÀ?fä0?m ;?xm¼?€p¨?€ÕÔ?|éŽ?|8ì?ƒ'Ï?‰B?‹Œ¿?Š‡ô?ˆgO?†äÊ?‡ ?ˆµ?‡xŽ?„/F?€Ls?{øü?|OÁ?~ ?{ý?zÙ?€W¬?ƒï0?ƒÕï?’¹?xù\?uÑ?m\ä?bõú?ZrÛ?Vü¸?Yîk?`ûŒ?hºŒ?j ý?b¸²?]r?fO­?z?‚ô€? Ü?{ª_?xßg?{öâ?|½=?w¬D?t;?u}?ue!?p|?l ù?p2”?t„Á?rûV?o}{?n´¢?tøL?€Zb?„Ã)?…ä¯?…h?…\{?ƒÃ–?}¶±?rw,?omõ?x_Y?‚U²?…¤?ƒÝO?r²?yÇX?€6?„ìÜ?…ùe?…v ?„¥=?ø‰?yD ?nBí?k|Á?p¾á?t®j?t ˜?r›R?u×W?Ί?„¦}?…}v?‚SÒ?{É£?v݇?uàü?t÷\?tÅ?v¦Ã?y€?z8©?w*Æ?vʤ?z¯‘?};;?‚>]?}Pß?sE\?l‚c?n’Û?væ´?e¿?‚Ô?‚³G?€¿€?y’ï?u€?x7?‚§?ˆ®I?‹8œ?ˆb*?ƒ?Õ?~É¡?{}V?u ï?f6Ë?Z59?^7ð?mi„?{³À?€ù˜?€Ÿ?}ôW?€Ø ?„.å?„¿¿?r6?z£×?u‚a?ub?{:?cè?ƒ9Î?‚õ¬?Çì?€¤:?€â?~Hq?|“ù?q­Ÿ?ns*?q=K?v*8?|Ö?€3Œ?MÜ?€V£?}ç?äÑ?‚f]?‚—?I¡?‚ÿÍ?…|?…*ù?…@É?†Üo?‡ñ+?‡²?‡j?†ÍS?…2?ƒA‚?u&?€r3?€˜Þ?‚?„oc?†ï?„ÇÒ?€!?z™?w(Z?tÏž?t!k?x#ã?9ò?‚®Ô?‚®Ñ?€æØ?Â'?…?š?‡4‡?†Àñ?†ßJ?‡ á?…á?„â?ƒú‹?âø?€âB?€Ñ-?|½‘?y$ú?yÚ?z*Œ?|7 ?ä‚?‚dŸ?†Dâ?‰Lü?‰û?…Ça?€ÜÇ?{{Ò?}â1?ƒ<×?†VC?…ž³?‚ì0?KÎ?€'—?~tà?€D¦?‚4“?ƒ\¯?ƒ³1?„é?…aÆ?†ú2?‡Îü?ˆÈ?ˆ$?‡¢t?† ]?‚_õ?}´Š?€ç?ƒñƒ?…aj?ƒÆ)?‚>"?½@?€J?~}—?v?ƒ`©?ƒ(?ƒ5l??z¾N?w†¥?zaS?|}’?~¸g?‚ºî?…p—?„Y5?€Ó;?Ë?‚(Ÿ?ƒ+y?‚žš?ò(?tË?oG8?s ß?„M?ˆV?‡ê8?‡‰˜?„|¬?€D?|…´?|‰?|Ž»?.?‚.?„æÕ?†£{?†É¿?„õŒ?ùÊ?}!M?y†Ì?vaÎ?lýc?cie?c“î?kMû?wXÊ?Xd?‚'ú?>Û?{²w?}^?;,?€—?i?b?¢œ?y™?sQ1?qÆÛ?sX#?sú ?oü?gT?j`¨?wû&?ƒ>?{bÓ?oÍ,?c"?_fI?e6?kæ¢?kës?l1j?qíT?tYõ?q19?qûò?w?xÄ?u\?ræC?y©P?€{õ?‚‡?…X#?†1È?€Úõ?sŠ?qñ?p?d0l?T¥m?Täß?iõ±?~:?„ã?†Nn?õ[?u÷‡?pD•?q–é?v =?~{?ƒ=}?„ß›?…?…N:?…tÑ?†Pw?‡Ó÷?†~s?€Â?sƒ?sÃ?w_?zm6?­x?€oä?zÄ?yE¾?|J"?}+?~[æ?zÑ€?já~?_íj?f|¤?o,o?s›W?zÔ™?€]‡?€bA?€AÕ?>\?äÛ?ƒfM?…¼¾?…Õr?‚Í9?zÈ+?mÐJ?f–G?n^Á?}Ç?¹?}µ‰?y)m?uð©?pû„?oW?pYB?tW ?} -R?P±?ØQ?Ìâ?ƒz?„èä?„¾Œ?‚#›?|A¼?s'X?koÑ?jS´?mÔu?o<#?n)r?nXÖ?q¨?u¤~?y5K?~ -N?ûã?xÖš?oD¢?iË•?l+?mxy?h‡ì?kõ)?p¦³?m×µ?k¹9?oJ¤?sU?oë ?l­?lí˜?pÜS?wMº?~O?„?H!??~%?x*H?pö“?_iÍ?D†ð?2ŽÈ?;Ðå?OSŽ?H©à?/Ä:?4Ðî?Xé?s\«?{'À?}t)?|8«?rìÞ?YM?4@>?+¬€?Kÿ‰?kÕ:?v ?x]¢?xßF?lÞË?bæô?h£Å?mvu?nmc?rð*?y2?~éÇ?€6-?}6(?wR£?l­?dÍ?t%U?w[û?€úq?ƒ.?Úx?€í$?€?}W?€ËD?„Sl?…|?†q}?‰Ün?‹ˆ -?Šþw?ŠJP?‰[?†K?ƒ}~?‚Ô?€Õw?€úÀ?K?|Tq?p7ö?jãá?w?ƒéU?ˆ¡?ˆ&V?†ñŒ?†%?„h^?‚²à?‚g?‚9?…¼?†"I?… ç?‚É?Ø?{× ?z%H?y‡ú?x©ú?sÛ$?ov?uÊS?|ôÇ?€*?€9??u¹ß?gN¯?eTû?oU5?u)?r»L?w/Þ?h?ƒ"Ò?‚FX?ƒBb?… ?„?ý?€©f?ƒ?ˆ?}04?ƒÿ?…>Y??sK?x Þ?{–û?v/X?r$É?u~¯?ß7?…¸‚?ˆ½Â?‰0V?ˆÈã?†þ(?ŸÄ?ue?r,?íÁ?†9?‡š®?†hø?‚¾?y ?v^†?¶H?‡ô?†øe?ƒ”b?~²é?|?Cò?ƒÏ?ƒ½g?„F±?ƒF?ü«?€ï ?~Ý?xë’?n?mb?y†?~3?xsÃ?xX4?Í”?ƒ¹Z?‚ég?~¸k?~ë?€å.?‚Wu?Þ2?€¾?¤??sü?€®r?‚÷m?ƒ/?e¢?|º¥?p?00?|Ž?Ås?j9?€=>?z§?t\?v-¢?|ÿ?€58?‚—È?„÷H?…6•?„F&?ƒ¨Ç?‚Ìf?€ƒO?yY:?r \?vâ%?€\{?‚Â?³?~¥E?~?€€‡?’[?ƒMG?„Ó¤?ƒ•½?L‡?Y}?‚×?ƒª?…ë?†W?†6…?†*5?…ê×?†é?†B"?„À}?|©‘?oRƒ?t -ñ?~4¥?€Mö?9‚?‚??€?w ’?xk{?g±?‚SB?„È?…ð×?…cæ?ƒ†?Œ`?C1?|Õü?-û?÷„?|¦Â?}M?á?€þ?ü¨?‚ -á?€Ù‰?€jP?¹Î?ÌÑ?~É.?|Ï?x’?mÌï?ozì?w¤ ?xÖ?z¤b?€}D?€¥¸?}•¥?}ƒa?€ì?ñT?„S“?… ?„3?„F?ƒó¬?‚i?[.?}÷J?y°T?{ ¿?|^?y¯å?yW?}kb?€åò?‚nË?‚¸ ?‚5–?‚2?€½Þ?}~?z¦È?xe_?yÆO?|]µ?y?m?ré—?m /?h¼˜?iV×?n ¾?x!è?OÄ?€ñ5?ä?‚?ƒc·?„Jº?„ø*?…–?„Lj?‚G5?œÜ?‚ús?‚Wû?€œÿ?·‰?ƒÄl?„QØ?ƒ³š?ƒ$Þ?‚Ù/?‚2ð?ŒG?‚>´?ƒ¹Û?ƒS¿?€± -?€4Ô?Ül?€Ct?wz?sàŸ?zó©?¸U?‚ðà?‰:?}Þp?y@"?{l5?ø7?„(ˆ?„Q?ƒüã?ƒcï?‚B–??Ÿ?€ÎÈ?] -?‚íé?‚ŠÌ?~\1?tT ?pf?r 7?rD?uÔ?|å:?€B™?6?}!?~ˆ„?€¢ö?±u?€ ?6“?ûY?„¤K?„²V?ç×?}ºc?}($?~â?€Á?÷Ä?ƒ2e?ƒ…0?‚;?Ÿ?˜Ø?‚Ö·?„ì?….§?„¾±?„n@?„Yk?„Kf?„Ao?„[Í?„6=?ƒÃ#?ƒ]\?‚±ª?‚ŠÀ?‚ã!?‚Àæ?ƒyä?„ÂÙ?…$-?„”Õ?ƒt]?Ö?€½’?’R?‚Xc?€ðŠ?}"?|\0?{…?té#?tžì?{ Ò?KP?ß?€Þ¤??î?€?‚n1?ƒ??‚¶›?‚%¡?‚ß?‚Å:?‚8V?Yù?€§e?€ê­?€ ”?Ÿ“?€¬?Êx?nÁh?S­Ù?Sfz?g³š?oÌ4?dÉÇ?\ŠË?k?wé?}ù?€Ï?Mê?€¨]?Wa?€¦?€¼á?€¹?*€?«Œ?xßí?wð?z’D?~z?€Cd?€º:?Ñ ?€[\?Õè?÷?€@¶?{§8?z=?~“?€%^?}Ÿ5?~ï.?€Ý•?7?~Õ?yêƒ?{ü?~¼”?€Pv? ­?y¸V?yÐ?}SÈ?{TË?zb=?}å?z©?yWr?}º_?€ÿ?ˆ9?H¦?€…?|†Å?}dƒ?îe?€Û¼?¡Ä?šÆ?z±?y‚ ?w+?yïâ?~N?€ þ?| Z?u_+?u`È?y™Ø?|LB?}“O?|8i?{¤5?~Ä?B¼?|"€?x¿?zG£?~®Í?}¯¨?zY5?záN?y?ó?r}—?oÿô?w’?zÌ‹?v¹ó?v!?wÖ?vú?v·Õ?rw­?p' ?rts?t¸?wÒ¿?y>s?zˆƒ?|Ô ?~aK?€%?€"J?Êp?€1L?€N¾?~Â?|Yt?{¸J?~Í?€Ý?€5P?€;°?€ ¢?ÆS?†?}G?{Eº?y ö?{}Ü?~ÂV?iÜ?}{?yÉ?tï¥?s(á?yó ?žß?€’þ?€ÚÏ?/2?€úÇ?Ág?{¹!?v‚?v›Ä?xÕ?v½ƒ?vÂ?v=?w—¯?y=c?vÓ—?tÁ?uÎ?wÊQ?z¿Ï?{e)?{ÉY?}A?y?lÿ¨?k ?v|É?z…?xÿ4?z33?{§Ó?{‹‡?}”>?}²S?zcþ?zaÜ?zB?uŸ¦?oÏZ?rƒ±?y6?y@?wä?v7Ö?x®Œ?{@¼?|ª:?xŒ@?iHÓ?_{?k¯Š?vôL?t‡?vºø?|4Ì?|&?y%À?vß]?w00?x‰?zU™?wÐe?u°?vƒÙ?wñ?qªé?c6?^ ´?gÙ«?pܺ?sí'?n¤#?i>–?q²¾?wˆÐ?wWá?vêê?wj½?yðß?ymÄ?z{?}_•?}Ãç?{+l?wºñ?v§*?s=?l:?q²$?{6Á?}àÉ?~x?z´Ë?tâ?wì?|T²?}~?~1‹?j?~øŒ?~/›?{Ä«?u+»?nb›?mñ¾?r—Ô?sfÙ?oáî?sl?xjI?yB$?y¾?y ½?ud?k»?g¨b?nÒ?x -]?{lê?w±÷?t/x?rY£?qst?mœ?i³¥?iE¿?mxù?t·+?uð«?o.?g*Â?f=È?glÄ?f«?f0ñ?l.8?q‚¦?u"Œ?sX?q³“?uÝî?uàò?r´Y?sj?vx?uAÙ?o6Ý?iwÆ?g?eˆ?i˜?p3E?tIí?uj¨?v2X?tW?oþ(?n.F?p7E?qO¯?nxž?jØž?k¤?iW?eH&?j¥Î?p¡5?sáÝ?uyÎ?qÇ[?nÑ?nën?l¯É?fIl?eÚ\?d-A?g:P?mñ‰?n‹t?q?tÞ³?s×;?rcb?r3@?qým?tlƒ?q_¦?hÇ?gž?lQÀ?p†î?s q?oë˜?m~ñ?p÷ˆ?sì?u¬‹?v¢´?v×»?u©¨?p¹ß?o2µ?o8?jÖŽ?j¨Ò?iq!?hñg?ls4?oœÎ?rØÞ?t<8?sÛe?vo?x ?w~ó?v2 -?tŸE?s"Ÿ?r'q?sÜÀ?tY¯?sîy?uÙ?vÏ?vB??s+O?kvh?i+W?pýB?t׌?nÀù?døW?j²8?s½ì?uró?s?m F?m-?nÙ8?lŠë?oi?pÄ.?q |?pƒâ?lIa?g>ú?kè²?tÉ?uö?v%N?uj°?oÖÞ?iU´?l]R?r:½?túy?rT?j¢È?jòC?s)š?urÿ?u\è?uØv?sæî?hÌû?`åú?j›?qj -?mz?j Ð?o:I?sK ?o[A?dK©?e2¦?nñ%?r{¦?pM‰?l¤è?j»L?l†á?o?m©c?pC)?s?µ?q’w?jÙ?híý?nQ.?r5?rïÍ?q‘?m¾—?h?]@?RÛ—?UåØ?]ø#?bª¢?h¶Å?mËÁ?p·?r&ª?qáÛ?p> ?pms?q/@?p’?n"/?jÐ.?iTE?i²Ë?mº?oëÞ?pXg?p!­?lÓ‹?kCv?lÛ ?mA4?kd ?kDI?n‡?oßK?oµÓ?oéI?ní4?m{?jÊå?eÐá?g‰“?lÊ]?mU·?k›?g¥¬?c<3?bz?c&Ô?[ÙÅ?@²?,G?/ê:?W+ò?eSâ?dÛä?dlB?e=?aì?`@*?fb?klP?kÛþ?iV?i?j`–?i¢/?i¡?lYr?l¾?f³µ?]…?_?g/¯?gYû?g}Ë?k1ù?l‚b?iòê?gU?flë?bû¡?b‚?g¤ƒ?ib'?i„ó?jüð?k¾?kq¡?la˜?lo ?iê?foÚ?g?£?h—e?gý?f¨?b¾?_Ü_?düÎ?jð?iâ[?i+ ?h<8?cæ?c/?fô­?h¦…?jÍþ?l’?k] ?j¹Û?k ’?k;A?k# ?j˜´?gØÄ?b˜L?cÀä?g¶©?h]›?i‘?jب?jñ;?kX…?jyh?dŽ)?`çS?ftÇ?jÁ³?l?l ¥?lÉ?lb4?m$º?lèi?lW?kJ?eG¶?hÝ?i:?i'ä?hÁ?eõ1?ei?eÆ_?e¨ê?fµL?fq]?e»¸?f?f¢ ?fÑã?fØ?gp?eá¶?fL÷?iš;?hÇ×?e­?eÝ)?i„¸?jˆ?gû+?cô¶?dëP?hë?iu’?i—s?i*õ?g?e$N?_Z÷?[ÄF?_8S?eä+?i‚?i˜£?hŸ¦?f?#?d¡8?^V?[­-?_z?`#'?\âÐ?_|f?f¤Ó?iWÖ?i>ê?hÀO?gî+?e&?eb4?eJ?f?hq?e‘Í?_ÄX?`Ï?dT{?c÷¤?e©E?iLÒ?j]À?iåÐ?i†u?i-=?h8›?gŠG?h;Ê?hïa?hÁ(?eà?dgd?g Ü?fZ?bÚþ?`ëb?^³Í?`3ô?cš ?eT?eI?dŒ?^ø‚?^O2?b“?cšª?bæ?_(ô?_«ø?c·z?dž?esÀ?f(?cŠØ?^[?[3‚?^bú?aUñ?_âŽ?]–¨?_02?_òU?a”?bœN?cƒ?aµ´?_ŸÓ?ag¹?bã?cŒ?b6Ô?_ž§?aGÇ?a«o?\Ç?UA¾?Q#J?XÕÙ?`ª?c…Ì?cÁ#?b¾Ù?`¿?a ?cL¬?bÔ?bÁç?c0Å?`2R?\(Y?]Þ?^ÂÕ?\ß…?]-?_Žz?`ù½?`?_Ú:?\ñP?TRñ?Wv?`„”?a’Ù?[ã ?XS?]8­?`§ì?`wY?`©Š?`€?_f>?_ƒà?^Ä?[ýà?aв?e?E?cÈÚ?aØG?c`L?dë?d0S?`7-?]1ý?_˜&?aÔ¹?`”?]#£?]1Ç?^?ü?^Ñ?\ôô?Y»ñ?\¬?_$¸?`k?a ?`:¨?`\š?b.û?b 2?^C*?V­Q?W~-?\¡(?\º ?Zƒ¡?[¶„?\Ëu?]*×?^\ý?_û¯?`5)?_NŒ?_ "?_] ?\Vœ?[^~?Y,W?X,|?[t€?]kÝ?]™]?\Û¥?Z¾?VÒ“?XÉ©?[î¥?[Ñ -?Z?Sà?Så&?Z"?]8?]¼.?]]Õ?\¯?])1?\›˜?[è%?X_ ?Pj†?Rw{?XÌù?\‚?YI?Z?]ˆ"?\“D?[´÷?Xè?Nãÿ?Sw´?^&?_X%?_ -?`"+?]^Ý?X8 ?Y©ã?W´f?Pt?Tá…?Z'?T}?LÙ«?O£z?T þ?QŽ?QzÀ?V¤{?Xj?Z‰ä?WŒª?U®Ÿ?Z]€?TtE?Jv‚?Pm$?X¯œ?Xß?U%?Uí?Xù»?WÛ£?T…?PžŽ?QÉ‚?W+?Vi?U¹Ñ?ZÆW?\èû?Zô‰?W®~?Wà ?W§w?X¬Ð?[3Â?V™À?T–?K›¤?KŠ??K1?DÔÐ?I5Õ?M¬?MË»?NÂ?Nî??Kàþ?FŸœ?G?J¿B?M«ò?L­?IEY?J!å?LÛ]?NT>?M\n?KdF?K©a?MNÇ?L©S?J§\?LBû?L° ?K ?H}?G-?JŒ¾?Gå4?G&4?J~&?KeÅ?L?I+¶?I16?L£ ?J)Ó?Ioâ?Løª?Ms¹?L¦v?IPn?Dy‚?Eÿ?I#‹?L[y?L2]?Kž“?Ju•?K#²?LhÍ?Kân?HáÁ?H¶ï?I˜…?I½3?Jœê?GñO?JPU?K>Þ?Eåk??[¬?>?d?B5 -?I:p?KW?Lò?L.p?K¾µ?L–?K—~?Ky?KD4?J‹:?J¬?Kl4?L'?Ke?JçŽ?JÙì?Jª»?HfX?BÔ?A ?=^X?9²g?<Ã%?<óñ?4‚¥?>Óª?F:)?F ÷?Ho©?I?I¿÷?Iµ³?GÃ?EŸ­?GÖx?I Í?Iv/?Hb,?G+ç?GÛ?H!?HWÊ?FoÌ?AMî?AZÙ?GTg?Hô#?IË?H‰?DÕx?>ã?? z??$A?=Í?A-…?Cc?CQ?A¹é?A¾r?B‰ì?AYñ??­å?@·?@§ø?@‡P=?=~?=,'?;Æ?<œ£?=Y…?=à?=&„?=j?=;(?=Ì6?=Ù€?;ç6?:*¼?7Ø?8ý/?;ö ?9ïÂ?9ÄÂ?=cŠ?=ê¿?:úü?9/?:ÿŠ?7à‡?5œ?8:&?4ÐŒ?5Ö ?:Ø~?90.?9~?7+{?8Ö?8&é?5© ?8B6?8Z?4&p?7a'?7fÑ?5Šé?1~£?4Äj?93ï?:HU??1ó½?/y˜?.ÌÛ?.£Ý?0…?0(?-¯G?,É|?.h}?0ŠÑ?0þ?/±›?/ÂH?.EF?-@l?.xG?,ä?+ˆg?,¼Y?+Èô?-¸Ø?-º%?+SH?) ?)Ä¿?'÷Ú?)®t?,Æ?-Sw?-Ýð?,ì?*r+?+»?)û?#jU?(ÝD?'·í?&_?(‡¾?)w(?&ÇÖ?(­O?*+õ?(ñ‹?&ãt?(?*11?,±Ä?,pJ?+d?*T?*#„?)—a?'ZX?&wÀ?+x?,Vê?*«5?+8ÿ?+ÉÿKÒ? - -‘?Æ–?$a?(žì?*49?):Û?'—M?!Ò=?$?$â´?' ?(K?(x€?&ÃD?$ž2?&êæ?'h2?&[Ì?#?á“? 8>Ùõ>º–>ú½?C“?÷‹?"¢?& ü?%Ñß?"¯±?%Ï2?' J?'DU?(Vy?(©ô?(ji?'ìÇ?'4O?'.\?'ö?(ÀÛ?'>?"= ?#ò…?&…ë?'VÔ?&Çö?%¶?%³§?$£×?#Ù?% J?'[E?'e°?'wÐ?&À…?#È -?Æ?#[I?% *?&C?%™“?"{'?%K@?'^?&Æ?&4?&â?&5?'…8?'œd?'Ù?&‡7?&„†?&8?"kp?!s!?#í?"”t?!RH?›×? 7d>Ͼg>Ø«&?" -?!vî?!Èë?"ÒÅ?#| ?£J?5ø?"O#?$Éa?%*ø?#ô#?!M6?#yì?$ ®?%¢m?$äÂ?!Îã?-—?9Ù?#m?"&ì?$?%øÍ?%Ls?$–»?!cc? ç?$¹á?$âÀ? Í?!M±?$”M?"‘/?"p™?$W³?"™?!>,?šÌ?!o?"Q? @?$R9?$c? h ?!/)?#šl?#ßf? Ž?ý?"¼?$u&?#~?$;C?#Œ1?$ˆ ?$ò´? R?Ým?Öù?!O¯?##p?$ˆ -?#r~?J×?] ?Kã? ‚¸?#šž?# -Ï?"t&?!Ï?!o?‰ ?©?nt?"nÖ?#Ò·?#{'?#à? <¹? -`? l†?!ñ¶?!¸Á?Õ?!î?!ßË?!Ø]?!Ǩ?!Ò´?!?ó6?Àq?~?Ân?` ?"Ž?!î-?DÞ?}??!GE? M.? âµ?!Ô?!^?³™?"ø?!*? ¿? ¡¦?!GÝ?!r?!yY? ò?=?!?Æ;? zš?~»?=A?®.?Œè?.?ÙŽ?û©?Ð?›|? ¤t? $ ?ÇÎ?ô?‚?¹`? -š?5í? 9-? %w? `é?Äh?X‰?¶?ã¹?ëŽ?c°?‹^?Ûø?øÄ?Š? "?®?úà??ÑW?S¬?]¥?¬Ú?ߧ?s?ð+?XS?âñ?Ë ?pÄ?å?UØ?n?/ó?Â?‚¨?Ì?ã?ù'?9Û?Ì©?)%?ed?öJ?Ã?ìç?yÚ?.¿?ň?×Ì?4È?8Û?¿*?=s?>"?+G?ž,?õY?ò&?ôÉ?»¶?ça?O‹?ÄÊ?hb?aA?È'? ì?õÑ?i}?K`?É??¸Î?ý?†?óT?ÞÑ?ˆ?X?nÅ?°h?qç?AË?¾º?л?·¸?F?±?Ñ?†¹?ÜL?äþg?®}? p&? :à? z¦? ½³?8Ô? L•?'F? ïÈ? -Ž5?qY? Çl? X¨?²©?¬Þ? Ë¡? W?‘å?y? ~? F? -£?õÊ? È_? n? -¥€? ]? ²? È2? ? 5ô? V8?êä? -ª†?ìÀ? 4?ÌB? ¾9?È|? -ßÿ? ÿC? -’ý? £? »u? 1E? W.? {>?ü? 2@?‘? &j?ãJ? -—? É-? -?:Ù? À? æ\? Èá? ×?œ(? Æþ?ô®?  x? -m˜? PN? ,‘? ót? t&? Ä~?§?e¢? £€? 7â? õÂ? -/? -*¸?ê–?§Ô?=è?o+? ÞÝ? p?št?ŸG?µ? D€? -ec?Y ?&6?š? nG?*D?¬?΢?š×?äñ?³k? s? •¤?ÿÞ?í?²Œ?¢¦? /? ƒ×? eb?AÌ?9¶?FM?‡@?r}? ²†?î=?¹à?æX? -‹? ¥? -? nì?u?r?V?t?ø¨?]?¶¸?©?ìý?±p?8¨?g?3ê?L?(ô?!V? ‰Ó?s>?Ýù?.B?çð?2?_u?êÏ?Œÿ?É»? 1ä? ¤6?z0?š?¿y?8ã>ÿÚý?¬?Ž¬?t?|E???D?.{?'•?…?–ð?¦L?’Ò?ä/?ÕM?{:?Ù?ƒ^?º?^;?V?þŒ?o:?¼B?²›?Ö¼??ÏÂ?<±?l©?\?Ò#?üÈ?H?†h?Ž,?³—?$ ?j=?÷÷?ŸÈ?›Ü?á?•¤?Ãy?©”?`]?Ù„?Þ*?yå?Â…?ϧ?/Â??ô?l+?w®?Ã(?Íž?¸?ï,?ƒ??_J?LP?ØT?åf?ÛÇ??¶q?Äu?kÒ?šé?Ô?%È?°•?Ž?T²?/¨?Û6?2?M×?Qà?^ ?‹?ñ=?Æ ?æQ?òý?K9?€—? -û?L™??Ý“?þi?T?Å?] -?áÈ?ü?9ú?„þ?°\?KÎ?„{?J?¹æ?½ï?”s>ÿÇö?Âu?zû?é? æ>÷Õ}>÷òÕ?Q·?u3>ü†\?ô?ã’?ª?ÝÐ??ê?¬÷?¿?l?äM?hl?d|>þ¢?Ú¬?̃?ÅÑ?]?­É?ò?'Â>ÿ(Ö>þ©"? ?LX>ý³›?Z}?Û¡?À ?y%?v?©?2ö?Ó‘?.º?$ï?¿?‡?>úíž>÷Ì6>ÿ‰?h>þ—k>ú<œ>þ.F?2x>ýÿÈ>ùÌB>ü^þ>þÑZ>ÿ;>ÿ3†?ç˜?ñ>þ}Þ>øIi>ø¼Ÿ>ýxî?{>ûh}>øá=>ý”Ë>þþÓ>ý‰¿>ûýa>ým‰>üY|>ÿ=>ý–D>ô…ª>õP…>ý¥j>ÿsï>ýŽá>ý¾©>ÿOò>ý®ï>üvp>ýà>ýð>ýt>ûØ•>ü†_>þ>ýÖ–>þM >þ:¾>ü^æ>ûãu>û°±>ùº>ü>ýXe>û͉>ü€$>ýÁ°>ý#°>ü‡d>ücš>ùKT>ñvØ>ú9;>ý$¯>ûx¯>ùQ1>ø»Ù>øû=>ú>ùµ >ú3>ø9 >úÕò>úžQ>úÁ>úVD>÷Õû>ï“>ïDí>òëf>øò×>ú !>ö©>ñn§>î¼U>õ=ã>ö€_>ùM]>÷[>÷€h>øç>ùN4>÷àH>ö–\>øNÝ>ð>ïgï>ø_Ë>óoU>ñ>5>ø@Ð>øBG>÷Ô>öX¨>õ¤ >óRü>ê8ª>óN>ö¼?>öƒ_>ôó>õ•/>÷ÕD>÷µ%>õÛ0>ö>ê>ö;²>îÇ?>îG$>òÏÉ>öª>õÿz>ó}]>ôĺ>ôÎ>õˆê>ö_–>ô5à>óê>õ¦>ñJi>ëw>ìRÛ>ï‹ý>ôÑ>>õ65>ïe†>îo€>ôØ_>ô¼Ÿ>ôPi>ôÇT>ô‹d>ñ3 ->òD`>ôq/>ó˜>ï·ø>﹪>ó±>òB>ò[î>òšì>ñ/Ä>ñ|=>òÃb>ð3`>ñ ,>ò¸>òÆØ>òpë>卑>é{Û>ìá>ð)2>òXÁ>ñdã>ñç>òcx>ñ«£>ð¬m>ñ„þ>ñ A>ðÔÔ>ñ:b>ñzÜ>ðþ>ð³1>ðX”>ð Û>ïÎP>íÚ->í¬ª>ç™ð>ÙVN>çü¹>ð¤>ð.“>ð0û>ð ¼>ï¡m>æ˜N>ÞŠ²>éɵ>ígæ>ëÜ >íÁ±>ëâ—>í“O>ïEÀ>î½ô>çéð>çj>íý >í»ž>îzØ>îy3>î >îEl>ìÌ™>ëÀ–>ílû>íÅ@>í+x>êm>Û¬…>äeÜ>ë×|>êÈò>랢>êJ>ëcL>êàæ>êïV>âËÀ>ã,/>åš4>Ü/ó>ßCŒ>ãh>êÝ>뱋>ëK>é”g>åý>é¹>ë1Ž>êdÖ>æÚ>>éBþ>ê•J>ä{y>ÙùP>à,)>å•>è>é¾Ã>éûÅ>ç³<>äé>âÄ<>Ú„•>áŠ>㧩>èÇ>é¶è>é}>è¤>åq²>åÚá>è]>ç$‹>çÄÇ>æÛ+>àS>ÛÓ>ØkÓ>ãm>çâR>çÝ>åfý>唥>ä„>åë>æÔU>Ýae>Ò%×>⬣>ä —>ÝÒ,>×sñ>áB:>Òdi>× >ã’K>â`h>ã³w>ä»a>äp¼>ÞŒ'>ãÚ¶>å‚Z>åØ>åá¤>æì>å¡>áÅ‹>Ý™n>àUr>ËFJ>Ó»>ß7¨>âAó>áþ<>ÜY>Õkî>ÚÞ³>áX>Þc™>ÞxÅ>Ü]Ú>á×¥>ãy,>áŸ<>ßÊ>áú>âÞ>Ùî>Ý„ä>àÁ’>á“¢>Ý‹>ÑGÑ>ÕŸo>Ù Ë>Ø¡>Ð=É>Ízù>×å>Ù‰á>Û >Úf½>Õ¼K>ÖKA>Õ2>ÚµÝ>Ô“/>Æš“>Æ»>ÓäÉ>Õ6Ë>Ô'‹>ÓŒn>źš>Í`3>Ò`˜>ÔSS>×{P>ÖþÖ>ÒÆæ>ÍäA>ÓÁ>ÐÛ >Ò±Ô>ÔŸÇ>ÔzÑ>ÎÍ:>Í–‹>Í -ñ>ÍA+>ÏkÉ>Øy>>Ó–Í>ÍÙG>Ö~]>Õ¤7>Íây>ÑÅÒ>Ö.Q>Ò·>Ð,Y>ØOÅ>ص>Ïn >Î5U>ÖÊþ>×PF>Ô3>Ï‹7>Ò˜’>ÕÐj>×ÿ'>ÐvË>ÎÓC>×Y…>Öxy>Ò›>Ìgô>ÖA>>Õ½r>Ôø›>Ñ*w>Óõ>Õ¥B>ÓœC>ÔYÂ>Ô#>Óѳ>Șg>Îå2>Ö‚v>Ô78>Ïx6>ÇÍw>Ð߬>ØÃÞ>Õ¯½>Ög÷>ÊK¨>Ð1:>Öwÿ>ÕÉ^>Ô=å>É©ß>Íeþ>Øô’>×ë¦>Ô­¶>Ц›>ΩR>ÒT>Ö*õ>Ô{>ÎÅ ->È97>ÉŠø>ÒI}>Ö±~>Í'·>ÌX>Ïb1>Ñ‹š>ÓQË>Ö>ÏG›>Îm<>Ö±>ÓÊ>ÒĪ>Ò¸Ø>Ímë>Î%Œ>Ö{ >Ôt >ÓtŽ>Ò*ò>ͤ->Êç°>ÔV.>ÉƬ>Áæ>È|ó>ÎJú>È">Ò˜,>Õéš>ÓÏ[>ÔÔÊ>Ѿ>Ê©'>ÊK#>ÓüW>ÓÉß>Ïú{>Ë›%>Ì´«>Ȇˆ>Çnx>Ï9K>Òìõ>Ñf>Ïý>ÉüÄ>Éw>Ê-->Ñ­†>Ña‚>Щª>Ó]>Ìgí>Æ€þ>Å»:>Ï7+>Î'm>ÐLn>Ò=f>ÏÉB>Ì7>ÉU¬>È6Þ>ÎÿJ>ÑQÄ>е×>Ñ>Í-û>Ì>}>Á¨v>ÈÜx>Í£Š>ÅA>ÊåŒ>Ìxì>ÇßÆ>Äm >È…{>ʦö>ËÎé>È£˜>ÃÆ>Ê׎>Ìß >Ê I>ÈÓ‡>Í6¿>Ìä>Ç‚¯>ÌYN>ËÞ>Ï$ä>Ì<¤>ÆÏ>ÂN >Ê4Ñ>Î8¨>Ê£Ü>Ê*á>Íè`>ο>ÇÖD>ÊÀ‰>Íl>Î*>Îë‘>ÉÁ3>ÇÒ!>εç>Ë+ð>ǽl>ÈÐ>È0›>ͱÝ>ÍÛ>È­¡>Ì”æ>ÍŽ->Çt”>ƺ>Ì¿÷>Êþ)>Ìäˆ>Êýî>Æ!v>ɬé>Èç¡>È8>ÆT«>˦>Ë >˯Õ>Édº>Ç[Í>Ìì»>Í4õ>ɇä>Æi=>Æ?×>Ê6Ô>ÉÙF>ËÃ>Ç ¹>˘™>Ì'¼>Éz—>ÆýP>Èp/>ÊÓ@>É>ÈoÀ>Áá(>¸Í>Ãï>Ë >Ç?¬>ÆTc>Á,{>¹9>¹øý>ÅÈM>ÆBˆ>ÇžG>Éý >ÉqÎ>ÄØ>ùþ>È.b>DZ£>»R‰>¿¿6>Æ;,>ÈIú>Ç$>Æóe>ÄÍ‚>ÄSP>ÃÉD>ÇŸŽ>Ç1}>ÂÜU>à 8>ÆÌ>È1Å>Çìh>Äâ>Ä{£>ÆxX>¹FÃ>¾Sc>à -/>Åzç>Äm8>ÆÎœ>ÇžŠ>Ŭ>Äh…>ÄË>ÆjT>Æ@¡>ÄÁ>Â+a>Åço>Æ>ˆ>ÆÎ>Äéˆ>Ãîg>ÃИ>ÆBß>ű>ÁO>Àl>»[>ÂPí>Åo¿>Æ]>ÄS;>µï>¾»÷>¾mK>ÃC>ÂKB>»M‰>¶ó{>Ã|>ĉ)>ÄÜã>Âõ>Â"3>À÷ö>Ãt“>Äi >¾>ºãü>¿É*>Ãéà>ÁpŸ>Àå>¿9d>§*#>¯Éœ>Âß>Ãj,>½å¨>¼ƒñ>¿áK>ÂìU>Á¯{>­r>„‰>À%Ñ>¾¾A>¾p{>ÁëÕ>Ã;Ø>Á;µ>¾†5>¿Àø>¿Á»>¯ìš>«zÓ>¾¿>»u>º/Š>¼Èí>Á%>Á}6>¿å>¿V*>¿é«>ÁŒ>Àÿ>ÁxÚ>¿ÖÆ>¿Š>¾æ>¿¨É>Á&Œ>Àˆè>½ÂW>¾Ø%>¾¥ú>À’M>½:æ;öH<€‡<Äx<¬òæ<¢»Œ<œÖ!<’rä<ƒo‹¢=Cê+==õŠ=4È=+e—=$M|=#>=L^=š= žÂ=;¹<ó$Ï<à r<Ñ8~<î<·!J<´ð<Ç:Å<ê -9=j=ÿ¸=7"=MÍ="\N=ƒ$=…= Kë=í3=3ç=N+˜=]Ó¸=^ž¨=UëÆ=M§’=NAÏ=Xˆî=c~_=bÿ=S=Ö=;@„=$8=•=B<ûÊ<ñ¾†<ñT”<÷ê÷=¸œ=Y= ¹U=ft=!ù=/Õ‡=>c$=Cíñ=8l=œ<ý9;<× <Ñ®º<â«è<ú·ú=¶Ü=ŠÍ= Mi=5C´=G.¶=J0=>W=0h =+9¨=.‹&=7§Ï=FF=V=_êG=_0¿=VüÜ=L4Ô=@ó=1æ="±ó=I­= Êð=ås=¦<øê<÷*Š=ÔK= Œ=&\=)<(=(y¼=-5 -=6¯==´Ò=<_ú=0 =A=2š=tË=ôÎ=m™=¥<ôÐ<ä¥x<Ù<Ñó<Õ’;<íé¤= …=ü=K9=¤Ë<Þ4<²†<›ß+<œ]<®©Ó<Ès“<Ü|ã<ç»<ð—X<ûOì<þÚ%<ûüm=ší=‘ -=8Å%=[=u=kY=`*u=Bö¤=(üê="»=,Xê=9%=;Þ(=3Y ='~e="YW=+ØU=FU=j9X=††ã=“·ë=œoÄ=¡ö¦=¤Ïy=¤„=¡Þ­=Ÿj#=ž ±=šÉý=’ÿ°=‰]Ã=„6Ì=†ñ=Ž°­=•°9=˜-²=•B=™=ƒdú=u‹r=nÏ\=pbß=rsy=t]À=xí¶={2Š=u”=kóÙ=e¡æ=dÚ{=h–â=oÑ^=xuß=™â=‚ˆ«=…XÌ=†â¿=ƒš\=uyù=bNñ=\·=mÅ©=‰=¯=¬©=²yµ=²Í¥=³×W=¸‹/=¾Á=¾£›=¸Ë#=³5¥=´CÅ=ºŠ†=Á1>=Æ]‰=Ƚ{=Ä(=¶=¦¦£=—:=œ'=™h=¬T=€¼=vŠ*=YM=‹¸=“5]=š=Ó= e¤=¢ï1=žç¢=”B#=…—B=nÈ"=_Ý9=f÷ã=~`Ô=‹Ê=‘}Þ=’'=Ž_v=‡j=w•‘=]m=Nk¤=[úr==•.á= R= &=™#ü=Ž°Ì=„÷ï=ƒP =Œ°ú=™Ö8=¢T=£q®=ž.à=’,=ƒÅ=xŽ’=€‚ð=Œy¾=–úü=˜Àƒ=‘-D=…K†=uä½=l&’=pûœ=€ê=‹Ç=“¶û=•4=ƒ¹=z1S=N³u=(ñ=À{==0‰=qh‰=øD=›ÙÖ=žô=¢I&=ªy=³!Á=´úþ=«x?=•Þÿ=qE­=7ö§=r[= ŠS=*? =dæ==[=™`ƒ=–œ=‚=„F¥=vØK=\“…==žØ=(GE=!£§=ÆK=þn=%jä=GïË=€ë¤=Ÿçƒ=¶¯™=À¦=ºý=§§¿=‰î®=[$Ê=@<+=Eéó=S/¸=U#œ=Uðµ=h®%=†bo=–~Æ=šøg=–ïÀ=–é‘=nÛ=·ï=Žò =oæ=IÜ=:½î=GÅ=j=Œ[Y=¤gÝ=ºOÏ=ˆ\=Õì=ÚÁY=Úœï=Ò °=Â{ö=µ*Ž=®œ =ªu=¤¹=Ÿj=žð{=¢ c=¥ë5=¦ÍÑ=¦VP=§j=¤á=”Çv=n¾‘=0\J= -ÍŠ=ë©=7ù˜=pÊc=•(=±õ'=ΊO=ãĪ=ëû -=ç“,=Øë= T=±˜ß=¯ÃP=µä=´È–=±4ö=¸µ:=Ðx’=ìÝG=ü)f=ô¿g=ÙÜ4=·i­=Š =™'¡=¨ 6=¹§°=¿Þg=¹G=ª¶&=”³=k~c=*Õô=ù -=É=Íb= éh=/¾u=A v=XÉê=€õs=Ÿ3˜=¼81=ÏO¯=Û¦=஧=Ôº=º)°=©è=·–÷=Ú:”=õc =ó•D=Õ?=­â»=”ˆ­=B =”ì«=—ï=š#=¤ÄI=²Nš=¶3=¬¯= …p=¤Ð=º§=Ñ£ =ßéS=䲤=á6Ï=Óš†=½ù=¦›Ô=2=t¯Ý=SŒ¢=R =| ¹= }À=¿é=Ô×N=ã¤Ü=ìþ_=çúS=ÑËM=»‚j=»ç›=ׇý>(ú>½¬>í|>”Ç=ÜôJ=¬ û=Œ];=üÃ=ƒâ?=‹è%=šD =§l&=¨8=Ÿm<=žg=±,Ü=Ò¾Q=ðë>QÐ>> ò>-*>œÚ>PN>’=ò€)=ê†P=ð C=ò=ã2Y=Ê:=ºë>d =ñÔ=Õ;ä=¼ =ªc‹=›6V=‹B‰=€ŸA=‚bþ=‘•-=«X=ÇÁ•=ÝïH=è¼€=é¢H=㺥=Ûƶ=Ú¼R=æšq=ùL/>gù>(õ>àÛ>Gä>f5> ² > š> -g>_›>û > Õ>4T>_ù>Ø·=õy9=ìÆÄ=êÂã=ï%š=òFÔ=ì½¾=á@=Ö*ì=Ï7Ñ=Η1=Ø&a=çáÿ=ñÇv=ï^=ä{=ÚVD=׉·=Ù³¯=ßr=ê\E=óxæ=ì%Ý=Ñ*€=²ÿ= ¼Q= #@=¥#ª=£¼Æ=œ>|=˜£€=É´=¨ßE=¶ÞÍ=ÃÚå=É=ż=½m=µ·)=°O(=ªÝ -=¤a=›´=“†t=“Ì =L=£x=ž2i=‘òM=ˆÈ¾=…·=…¿ý=ˆWR=’Yê=©oô=ÉFG=á4U=æÕ=àÂ=ßÛÔ=î>Ày> > -É>$ú{>(ˆ—>(‡¡> üº>Ù–>íi=÷÷l==ì]4=ò,i=ù¼¥=óRŸ=Ù%e=ºÒ¿=­!(=µ -ì=ƺ§=ÕW4=â’=ø\÷> ý&>a5>OS=û‡=ÑU×=º_Ï=Åg$=ë$ü> ¢7>:s>$Ñ>&¯>0—¡>EV‘>UÅo>Wt>LîÏ>9 Ô>ì =õ¹=ÏŸ=ÎR¦=àf=ñz>3Ž> ?d>œ­>)(È>:¸V>Hêè>L‹i>D‘š>6ò>+W>"ÆK>J>î >à=þÿR=í =àjõ=å˜ú=üY> ¹µ>Ô0>)àN>2Á4>7*]>;‹x>Eê>S.ð>`K>f À>b \>X€Û>Oï‰>GÍä>>¡³>:ië>AI$>M@>Q§>Hõœ>8Õó>#ü×>ÕÅ>[ã>)Ó•>C:±>Q_>Qf>O£N>P}$>LoÂ>@½Ö>3‹ò>'²]>žñ>–S>+É,>8L ><™ý>7³>'”G>„>ô=ò4=ø¬X>Ö¿>. ç>R*ï>hgf>dŸ>L/'>6s >/Ô>3»–><ñŸ>KWM>_ˆG>q½µ>vË×>niÝ>ab>P¨>60{>¥¯=þ¬«=ñ#S=õù$=õ =îI+=÷×Ð>æ7>-|>JÈz>c~†>sæ­>t¬›>fÃÔ>W>Jê>6[>`á=òß[=Ñ’D=Ï@ú=åìÀ>¤…>²>1³Û>;Ú¡>5n,>"…Ç>Á>%q>ç> ¬!=û=Ùp=¹Q=¢½³=› ¬=¢¡Í=´rª=Óï>.Ë>†ª>$ËÐ>$Ÿ7>4> k=÷|l=êq§=ÚkË=É@q=»,³=«EZ= M3=­dÿ=Öh>§_>÷õ>*Sÿ>>9å>KKY>Eˆ–>+”j>c=Øûo=Å>n=шc=ëù£>L~>£‡> -^¹> ¢>>¥@> f.>‡]> —">“>*¾Ñ>/4'ñ><»Ÿ>?ÖÐ>7µü>,#5>'Òñ>*ÆŠ>-ÿ>1À¨>;"û>E ò>Iô8>K2Î>N…o>R@ë>OHë>=u$> %Š>u=ðGŸ=åƒS=é¦í=ûÚ ->sÏ> Nu>kß=üþÏ=ð+j=í|v=êÉþ=Þ+å=ÑÙ©=Ú”ú=üÄ\>¿D>"U$>-è¦>5Îc>6Râ>,Ȫ>X¨> Ã`>Ï%>-¨>ëú>'¤©>(Í”> Û°>n‡>Žƒ=÷nH=ñöÂ=÷b‡=û‰È=ð!^=×Xµ=Ä9=Æ =×€û=Þ ò=Î]¤=¶Èã=«=±î†=ÁØ=ÏÞé=Üê=ã”%=߯ä=Í7=·çË=­-=°f—=¼R{=È =Ë2+=Ä%½=¹ä–=³¨É=·VÇ=Ì{=ì;à>F > §’> -= >H>.Á>VH>ïÕ=ïÄ=ær¬=ðç©>_{>`>±>×;=ôZ=ç9Ò=Þª®=Ó®=Ç=´=ÇIô=Ü"¢=ú‘’>$>ö>^Ï=ùêŠ=ù¢d=ýŸT=þ‡“=ù¹È=ðÞÜ=åd=Ù3è=ÔòI=â¢=üÆý>i>T³=ó¼›=Û(Õ=Ô†=Þuì=ã·=⥊=ölú>TP>'+Í>Ì >Ô!=ñf=û›>G]>®Ç>"¦Ù>@zý>Z<>_þf>Qy›>=3>5Ž>;`h>>°Ý>7lž>/¡Ê>5dw>F¡Þ>PQ>MYô>Gƒ><Á¬>*ûS> ¿H>)g5>>ïa>SºÛ>_Ër>ciª>_ñq>Wä!>RjÄ>Pž˜>IÒd>='I>3-">+áÃ>!-×>ïŽ>æk>s>Ök> -j>M¾>«~> ~T=ûÓy=Ý^þ=Ĩ=¯ê = –=šÙI=K„=£0E=¦×”=§r{=®|=ÀÙ -=Ú*‘=ðÅé=þ#u>t>«Ñ>QÖ> >E|>'sT>3¤þ>1Dµ>)u9>*è`>6U©>?Ž8>?Mö>@¬Ô>P_>`Êþ>]yô>J¶Ó>>³Q>Aé>I=>C¯h>-’>N*>±‡=ð‚=Ú¯³=Ái'=©ì=šü=–ÐT=šiÓ=¢ÈH=°ƒ—=ĤK=ÝëÚ=üU/> ª>"–>1“û>@õ’>SZo>f¦>r3ñ>mè}>a].>^Šy>l‘,>‚¼>Ž’>”Ô|>˜˜Î>˜¢–>’|V>Œ¥>‹Õ”>³º>“o,>“d>Nè>…¦ã>€”>‚ f>ŽÁÛ>£b>³Z}>¹>Ö>º>l>¶ž+>¨óæ>•Cù>‹ z>‘Y>ž¿e>¨ 9>¬í™>­ >«Ž->­æÌ>´©‘>¼Lë>úŠ>Æo\>ÀÚ5>»/u>¼ƒ>¼¬>¶î‰>®½‰>¨âƒ>¥*Ž>¥ò‰>°”Ó>Â÷>ÑÅ'>ÚN>ÒÐ>·íð>˜á=>‡¨Y>ƒ¤>ˆ~Å>˜k>°DŒ>Çøú>ÕG®>ÔÌŠ>ʶô>¾y>·6m>¸gZ>´æ!>¡rÀ>†Ùe>w >‹íÁ>ªL>¿/>Æ >ÈQ€>Èe¨>Â~¸>¶ºÞ>©¬–>¡w >Ÿ•>Ò>›g>  ó>«éÀ>³Ž#>«Î>“án>‚u>‡u`>™Ÿc>¡EO> _>©Í>¸z¿>º¡¯>ª××>ž3>£¿8>®§µ>©ÈQ>“>>râè>]L‰>spè>’ì>¬Ý†>½Õ¿>½×ˆ>´ré>­è²>ªF‡>«‚>¹v>ÍÞ'>Úè>ÛR*>׺Ó>Ök>ئþ>Ü)6>ÖÂ>Äã÷>·£>¶ø>·u—>¯ê¬>›0«>„xÓ>€58>’Š>ªH>½÷–>Ë£`>Θò>Æ5z>·ÉO>©O+>¡‹>¢_^>¨›Ö>°Ã©>·>»?>½,û>·Ý>©9œ>œÓØ>š >š9Ï>˜¿>˜E>Ÿ'è>ª“>¯ß>­¤>¦¢ô> m‘>œP»>šŒþ>—€>‘GÓ>ŽS>”¾~>£×u>°Ö;>³®`>³ÑÇ>¶>µ?d>­5Ö>›O>„âX>xQ>‰ßñ>ž®4>¨[;>¥Æ>šÃc>N$>Špr>ŒÍl>Á>‘õ>–>m‘>ž>“OÜ> µ«>¬ß>°ë¸>±‰>µŽ*>·1>¯i>¢p)>˜` >•²>œ¸î>§ª#>®,ƒ>««->œbÛ>†tÓ>tì¥>{a¬>…f:>‡;?>ƒÁý>ƒ-->ˆ0u>QÆ>)—>•¡>¢€v>´] >Àqð>»ó>ª‰,>£iŒ>¨îd>¬qb>ªR—>¬—d>µ?Î>¸nL>­|Ç>šÐ?>Ž¶n>Í)>’ªc>™û!>ž'z>šÜ>–fÖ>—vð>š >ž¬Z>¨?>´Bá>½²Z>¿©!>½šÄ>½Â>>¼àÑ>²cã>žRœ>‘&²>£½!>Õ?k@? P5? zx? -=?çü>àsM>¿rh> à¨>¯…>hW!>Žõ‹>ÄI¥>ðh³?y„>üݯ>Ûîí>š)>Âò0>Èð¾>É1/>Ê‚ã>Í`\>Òß%>à>ñž>ÿlT? ‘? ¨öª$>Þ§>Ôâ‘>Ñi«>Ê?¿>ʘ’>ÖŸ>>Ûå’>ÒU+>Í.M>Û‹i>íbû>éê÷>Öz>È÷D>Íý½>è;Þ?óÚ{>ØaÖ>µ|Y>øU>¢¼M>³??>Ák >ÙŒÈ>ûmI? -XG? Òk?c>êeº>ão>èyÆ>íÌ>çà?>Ü >ØÖ>Ö ±>Ä+¨>¦Òm>šF>«WÐ>Êù·>ÝbŽ>ÛóÎ>Øx>Õ•†>Èìv>¯"x>‘Ù>…ä7>J>–“Ä>ž!3>¥±>¤O>œ6Z>‘mq>‰¬¡>n®>§K‹>ÁìÃ>Ò§>Õ|¬>Ü!¥>ÿÁ?:,?/É?0Ós?(ðç?¶½?G‘?]¼?ök>ÜÚ¯>¸‘>ºÿÁ>ð\‘?6Â?$ÖQ?p1?:?Y?!í4?+ˆ?3¸’?)Kò?ïD>ÔmØ>²”v>¥À>¾Ú>÷¢]?¾?Xý?S‡?,?eù?!än?,€?¨þ?·•>êû…?ïÒ?6Œ?!3?,c?.Õp? +Œ?7R?â?‹Æ?+õî?4Þ?;åø??j?3¨J?>Š?…ò?Gª?ë1?Tü?÷ ?‘ >æÆœ>Ûy>ÿî?û?,ͺ?+éú?"{u?Þ>óL[>µ¼€>žÿÙ>¾æ•>ï ç?3ï>þaD>òê>ò?‘? _î?>%? -? Yÿ?hÀ?$Þl?Õ? -]?Ì¢?„? _ù?µñ>íî>Ý1O>èR>è^6>íæ?;“?Wî?.1Ù?1 ?"Ãú? ø`>ùƒ?g"? ? ·>?nž?pv? P?í?Íÿ?»?– ??µ?ݧ?Æ3?Oa>õ?nD?®?0Ž-?7Ÿ-?,+Q?è.>þ’‰>ïFô?”ˆ?VÁ?'sC?-‰ä?1G ?+Wš?!ê?!·N?!ñò?ÏÔ? -Ê'?ûž?ÿª?o©?#M?“È>ùCŠ>ô[?n?kå?¿ ? -ž?¨G? çË?:˜? B?wÜ?#SP?9K?H(?L¤º?QF­?Wà?PN\?:»?"¤é?l–?=Ë?@# ?8zÿ?>TÙ?Yœ?p°°?qy]?c}Q?Tœ½?MÖF?P|Ë?Vñ™?V’~?K)?=A?6>B?7¸Þ?9îÄ?6Öà?8ö?Dú?Pîk?NÀà?=Öñ?2AÑ?-D?#/ö?H ?<9?JS?`e?_M?%vº?"-:?Ñ×?͹?,2á?Fž?JTc?;Ï.?-$¤?+’Y?4öR?8ò?08¦?-+1?2”?2à ?)î?%q9?+š…?+öœ?!fÑ?—?úY?+]?A¾Ò?Me÷?LUê?G~·?Dêo?='d?-f?#¿?)a˜?<èù?Of“?U=¢?Lú?:y†?2iM?@c!?LBN?IÍî?E *?@Št?6ÌÃ?*iy?&@¡?,•à?1&ª?0v?2>º?8Çz?Ak?LØí?T?Q?D’2?6é¢?/¼?+SM?*­+?-¹“?2çÜ?9¹7?;–V?4¤s?0Ðr?2üÊ?3îL?1tr?2^ê?A£0?\›É?qN(?r® ?f4*?X®Ú?RÀ?U -k?Z?\ß9?`ƺ?^9?X°€?^ƒ•?f±X?glo?eV¹?`¦¢?[Ì£?Z·?Tâ/?O`?W®4?7$?"‘Ü?™{?GÚ?,˜ø?@Tg?J¥5?JEé?Hù?Q:Ç?^y?_þª?SeF?CË[?8ÈÍ?7k|?BW÷?P[ž?U«ç?RÅ?J.?E3z?Eæ$?E°b?EEO?J ù?RO5?\Z†?dÚ6?be?Q>Ä?@…õ?;Ï×?=À?ø"?Aþ›?<æ}?3‘?/1ß?5ó’?E°K?O£«?K~z?@b?=Z‡?I+y?Wõå?a·O?h7?jOå?fwé?bˆ¦?e>X?gsq?\Ý?C -§?.‹¥?,‡?3[?9¬?@i?G‡7?NÙT?NãS?L -?Sß ?ZÄá?U -?N’?Q~œ?WÄ?Váç?XÄ"?a…õ?fHÿ?e¯?f`t?dúº?^‡©?WwØ?PôÒ?LT¹?K–ö?N:’?SÅ?Yט?W#n?Jf??$þ?9[?5­H?9F´?F`?Wf”?e ­?cÄ-?Ygí?Z??gƳ?raä?tq3?u~Î?t€h?oœJ?jÊX?d–?Z•T?W':?UÕƒ?L©†?Gr)?I>)?Ilº?M`x?Wš’?eƺ?tÙÏ?{‹ö?t˜P?džÌ?SUc?JçÅ?Rî)?fÚ?r®;?nW÷?aàM?Y9Ø?S@Ž?Pã•?W9=?_M?aBŒ?a1%?b ë?dW -?iz­?q·?wsÒ?{ÉJ?{Ð'?uX?dÍX?Uöú?Z”†?g›??jG?d ë?a=­?_š??V_?SÎô?`rS?jBi?j?h™?a›ô?Tùš?O…‡?SÄ6?T¶?VVT?bÐö?l%Ó?c¿g?SXê?Q÷†?^á?g&r?f‘?Y?CˆÃ?Az?P?NQd?1Œ? 7?¤w?éJ?5¾ñ?@×#Å?/Íì?4åœ?>}þ?A<å?Hý¢?X”‚?h\£?oTè?aH¡?OL’?L†^?I¯@?>†=?;·¢?E?I<ï?@A?7ÕN?Dç¾?b.?z« ?„º ?†yß?„;C?z4ò?g†?bêæ?dÔ4?a!?f‰*?v¥??|_ù?lì8?U±É?DŠÜ?Cäó?P?Þ?\v%?i:?u,¼?nÈ -?Q¬?2ŽA?%ûÓ?/°í??G”?@º2?@Ä)?RV²?ff?rU?}/ ?h?|›½?f«±?O^Ò?Pú?XÒ?Iú?4ñÒ?8ý?U«Ï?mµ‰?t[?s#Q?lšÏ?hV*?o??xH1?~8 ?d?âY?yi;?z9?w·?_»?JmÇ?YP?tnI?{ÿ?y_?y£¥?lðÞ?Y‰í?TÏÀ?Z¿?_…Q?aW?g׺?sk*?}ü?€ÚÕ?yÿ,?moô?aB"?Z8j?P%þ?:4!?)yM?,ºØ?9h+?IµÖ?[6H?_ø•?Y$?Voü?[üû?Zâó?Wíñ?^?_ʘ?Z|œ?Oôc?G -¼?F•?GïQ?Dä0?;@a?3fq??Ï»?Y„?b=y?UE?>‘W?)ßB?#§¨?.œ5?;@?9ë¾?6¡×?>>Œ?Dçè?CBÍ?GÂ?Qbn?W‰ ?Uy©?Qrj?Zè?fY…?oT?|ÄÚ?€-?k?P{?I]S?Eáï?0Xñ?Æ?÷9?D·U?g ;?}|?‚ä ?tXX?Y£É?N¶v?Mž4?QßK?c¥Ì?x‹x?€œç?~\Æ?{2)?zð×?€F?…Od?‚lT?h¿Û?QVû?S÷¤?YøÔ?ZñÃ?eŽl?lQ•?b­y?_£™?cŽò?a: ?aÝ7?Z a?9þ×?%‰º?4q·?F1I?M‚)?Z*J?cc=?b˜p?eyý?lÃ?n¥?rá©?{^?€l?yÐþ?fÏ®?Nnœ?Cë9?SÂ{?hMÄ?k?c²?]Èc?Z„?Q•±?Kr·?Gc6?IÊ[?YäÊ?dü^?hs?maE?x®?€–(?~¹{?s§,?ae?Hë?7£³?=#û?Eô?A:??Ùú?Gc?OÖæ?W?a‡?mgã?p`P?ag#?SÎi?Q˜š?W1y?R„Â?A®U?C ¾?K0±?G±'?CØâ?J¯v?QU^?GÈ=??_¾?D*?MÏe?ZÛ2?hæ0?oϹ?py -?q‹ß?k^Ü?`Eì?RH»?7‡?Í ?ÿ—?ªƒ?/Ì?/#ü?cÓ?c?Fc?`f¥?jA?s?s¶á?l‹³?Up¨?-pó?"¶?DSï?ag2?eyø?h 5?k*T?Q,%?5šó?9??çI?D"Õ?NTÅ?Yƒ?c´Û?ht?f¢?]W“?EÕ[?3¿Ó?64Ö?9"?><¡?Kœ¤?Z–¿?fí?e`?TJ8?J,?S\Ô?a§Ò?i4œ?jå?bO•?Kàñ?-B‹?¹Î?#D5?Gªk?c“û?né?fs4?R>•?JU¸?XÍ×?në?tm¡?prÊ?rQ‹?ué?w -”?}i‘?t]­?Râ?@†(??ÐÍ?9ä?Aä?RÁö?T±´?Pò©?c/×?}³ó?‚Qú?yÈ­?dQ‚?FÓµ?-Ôü?!» -?&Äþ?:Èü?8±? ¬ ?,3Î?MJ9?Vv0?O_¶?O®„?g'?_¹?~3+?m­P?` z?WlÄ?[N¥?vXÉ?†ÕÀ?‡'_?…¦º?‡ù ?‡5o?B8?zô*?rg ?YÒl?D½?N0%?`“?mtà?fÔ?opÈ?•?…‘ü?‰ó?…?Äu?Q¤?„i?¬m?†´?µ ?~hV?xÓ?x”³?zj>?pb?Z¼?Q· ?j ì?„Ùm?‹Î¾?‰À0?†vŽ?†¨ä?„%G?€M?~—¡?€!?‚*™?Hó?z^?i}H?]dû?d?iv?gG9?bK -?TÝü?Mt?`½[?r‡y?w:f?w`>?dæ[?H>P??÷ƒ?QðS?]õ?Xmª?cEÉ?yÂÒ?€a÷?2?ƒf‘?†Ï/?ƒw³?{n?wÖ:?|ö”?v±½?q‰q?€ð¡?‡5Ü?{KÙ?b:B?fÞ?hÛ?Y¿î?P¥?UîÆ?n‹_?†€È?ŽZ¿?Ž´Æ?%´?ŠGÔ?€³:?eƒ·?^‡–?yµÊ?‰2.?‹Ÿ?‡…´?ÎD?jI$?fñ’?È*?‰‡ê?‡öê?ZP?uŠh?uˆ?OÄ?ƒÿr?ƒãä?ƒtv?”v?yJõ?qí\?i‘“?dªŸ?W^w?Z¿ÿ?rª ?tHõ?e?g—Š?z9?„?V?vN?v·¤?wpt?{m›?œ3?}@O?y{æ?€¯?}ö?|d/?…¢?„ïÞ?w:‡?t0š?z[ï?sj–?h¶ú?qÌÌ?{ϧ?xkÎ?k‚C?c9Ã?iÕ:?tk¦?~ç?…ú?Š;?‡`#?„˜ü?„½¤?ƒ¾ö?}·[?qCÑ?k¦r?v®ß?‚r?‚ÆÛ?|âæ?t`®?tÞ?{•`?€ðp?†˜™?Š¤_?‡fJ?rª?:‘?€Æ?„¬G?‹`Ã?ŽUœ?ýX?‰ß?…@ª?…ŠÒ?‡Ë.?‡N?‡;¯?‡*r?„ÚŠ?SÛ?€^o?~5¢?z0©?zÞ)?{ZJ?€Ü?‚˜Ó?€U¥?„G»?…üU?„i”?ƒûÅ?…Œ?†Ç˜?…_ª?„UŠ?5-?r‰?]k¶?TÏ%?\Ðó?i—4?oøÎ?q‰)?{Gy?†ƒ?‹d^?Ž9ó?‘‡?‘Ui?Ĩ?†Dª?ƒòÆ?ˆŠE?†ÕÖ?ƒ Û?‡Óú?T?¥1?‹;?‰Õ¼?ˆv?†Î?ƒzc?„Ûi?Šcš?Š¦Ï?ƒï?ê?‡Ú7?…Ž?uÓ?nU?)?‹8?ŒW,?†@?|"?uÔ?»?Œ¢£?ù…?Q8?O?Š¬{?‰›Î?‰"?ˆN2?‰/q?‹€Ü?ˆ¸`?}"(?c•Ö?^‡„?eÅü?ey?nÇ$?Is?†\V?„Èl?ƒC„?†ë:?Š_?‰½6?‚u©?€¡Ç?Šr?‘ø?’?Š²˜?ƒ ’?‚Ÿ‚?…„?ˆqÑ?Œ6?Ž’ø?Žè¢?Œ t?†æ¡?ˆ;D? -°?•à?•iå?“V?‘`é?’fh?’Ï.?’¾7?”J?”7z?’AS?ÑA?Œ{‘?‡M?Ô¢?5ü?‘ý‹?•D?•¹Ù?”‰?Üè?‹»H?Š |?ŒØ¡?Ž Â?ˆt:???„%'?}öª?{Å?„…|?‰ÍR?Š#Ú?‹|þ?‹<?ˆ¤Ò?Œ`n?’0?“)Ç?ׄ?Ýø?’Œ?‘¯˜?Ò÷?ˆE±?ƒ‹¶?…Z˜?‡Ñz?ˆƒ?ŠÌ?…óp?_ÛÓ?/ÏÊ?: ,?]?drw?KæÌ?EØ-?gÆw?1Ý?† -n?‰–9?Š~r?‰ÍÔ?ˆŒ.?ŠEI?Œ5?ŒÄ‹?Žcd?‹U…?ƒûÜ?€%‹?ƒ:ó?ˆ­>?‹ª£?‹Á ?‰÷˜?‹‘ë?Ž«Ò?»Ó?‹ÝÓ?†‡Ù?‡aÔ?Œv=?Š`'?„Œ9?…ào?‹¶?Ž‡·?‹nT?„õ`?…C+?Š_Q?Ž¾?Uÿ?‡vã?†§?Š2Y?‡,?†=®?‡ô”?ƒÑ´?ƒÃ?‰k?¼?’žó?‘µ?Ž4®?‹7Š?]Ÿ?Ä -?“´Í?”½›?“Id?Û'?†¯?ƒx ?†éë?Œ»T?Ž…è?ˆÛö? u?‚Ü?ˆCå?Š¶1?‹ça?‰;p?ˆ«ˆ?jV?Ž6"?‰žƒ?…ój?ˆQŠ?‹Çr?‰Òê?†ýû?‡.?‚¨"?w§T?}Å?ˆŸ -?ˆ¥T?ƒ=?ƒËô?„©?ƒ©Û?„Q•??½?Ã?„ì?†iÜ?ˆàQ?ˆ›5?ŠÞö?é3?Ž{‚?u?õj?°ù?‘]e?‘ »?Žû ?\Ù?˜o?Ûs?’Q:?“¾?’ÿå?‘ñ‹?’ö·?‘–Ž?ŽOâ?‹û™?Š"#?‹±k?˜G?þY?Žªˆ?‰¨0?ƒÿ?ƒNd?Žå?•™1?•Ü@?–‹¡?—”?–‹˜?“Û¢?Œv?Š³ø?ŠbÛ?‡¡$?„TO?†±?‡N?‰¬5?‹·²?‡˜?„Ê·?†sá?‰àl?Ž«W?ld?ŒÞï?ut?‹H?}ì?~ó?Š2?Œ¤?Š0ß?Ž?ŽZ%?ŒF@?n“?x?TZ?¼4?ŠG??ƒó‹?íø?‰ä?ßq?‰Ž?„Úÿ?…#ê?Œã?‘D²?Ä?„1 ?`ÿ?Uvé?|`I?…Ñl?}Z?† J?+¼?úw?‹Ug?‡+¶?…ê5?‰,«?#?‹.ú?‰Ûp?‰ûþ?ŠŸ?‚B§?h?g ›?{ú±?…HÙ?ˆd?€öØ?vãt?„ŒÖ?ˆI+?‰‘ì?‰Øò?‰2§?Œ]?Œ´½?Õ?Š•"?Œàç?2ô?ŒŠ‚?ŠŒ?†ß?~½P?ƒ–?‰ù?ˆªY?… ‘?ÑÕ?EÅ?‚Çç?„dã?y¯¸?Fø€?"?PÒ¦?…/p?ŒƒB?†ß'?ƒb?ß?uá¯?sâ:?…¦§??ŒÛ6?†R?‡c,?ŠG©?ˆ´P?‰Ç!?,X?Œhï?‚EÜ?k¯Œ?x|?…`V?†“?ˆ«!?ð#?Žö?‰«\?…ÝÎ?û?xE?|eÜ?‡óc?‡Û˜?ˆTÜ?cÎ?°?zð?‘¸?n*?ˆp?„­‹?Š0{?ŒRê?Šq{?†P`?€O-?g?‡K‘?„¯ -?ˆÐ ?Šüë?Š{r?Š›?ˆOY?|°!?wÜ?†?‹.ü?Œå”?¾í?hZ?Œö?T??Ž}ñ??‹e>?†}Ð?ƒæB?†ÜK?Š«?ˆßî?ƒÆp?„C?‰8T?Š -Ê?†%?„y?„1G?‚†­?Nc?}Âð?…ÇA?Š‡ï?‰‚1?Š.ú?ˆÛË?†=G?‡¸ñ?‹'Í?‹µ‡?ˆßÝ?ˆO#?‰¶Z?†Æ6?ãç?ßg?ƒ8Ë?„?†o?†7Ç?…9U?ƒí?„©?„ÆB?†6ç?‰®?‹Ÿç?ŒñÀ?Œf£?‹š?Š´­?ˆá?„DT?„AR?…N ?„ªW?†uw?ˆ~ã?‰:ç?ˆül?‰þ˜?‰?„«?}:Ó?¡È?…&Ð?ˆlù?‡´?ˆnß?‡8"?„œt?…Þ?‡-†?‡]g?‡aL?‡3Ï?‡}:?‡Îv?‡…?‡.ó?†û?‡¶à?†+?†ŽI?‰ø ?‰M?…ý¤?†‹ ?Š -?Šw?ˆ_?„äM?… ‘?ˆÄü?ˆéÜ?‰*X?‰wÉ?ˆC?†7ö?Á?–x?‚´–?†gî?ˆ0 ?‰)?ˆ¦j?…ý÷?…Š0?€ðw?}mk?]¾?€Ú?yce?Š¡?‡3Æ?‰®²?‰oý?ˆ¹ž?ˆ3Þ?†¡?…Q?„0Ÿ?…²‰?ˆ0Ê?†Vý?‚zC?ƒv/?†Á?…a\?‡|?ŠÄ6?‹h?ŠU¬?Š?‰˜?ˆs›?‡Ÿ×?ˆ.E?‰ìg?Šˆ?ˆ¥?†[ø?ˆ>`?‡?ƒæÆ?ƒ”?‚G©?ƒ×1?†¡û?‡ö9?‡Ÿ?†÷¸?â0?u?q¸þ?q½á?uM?{??sú‡?e7?g, ?qÒã?uwü?zÜ5?|tV?xEA?s™Ý?uŠÒ?yñÂ?uó¨?qdS?p3?ia'?gèÐ?px¦?m¼«?aé?\ž?^Ä]?mê?x¤Š?u¾ä?m*e?m!ã?n÷7?rÕI?r&]?g÷þ?kÕÏ?mµØ?o»¬?y?xŸò?s”^?rÇÄ?v?Û?w~Ý?qÑ?lØí?s?r ?r9£?q´æ?t½?}t?}Ú?yý1?}Ä¥?x®÷?põ?u§-?xÓ‹?sÝ[?pÿ!?pý(?f£Ï?bÓ?sÇ?z]?lÉ?g¥Î?rK?w?lVI?oOý?tc{?yèg?yrË?q­:?lâu?_ó?WØ?jò*?{õ?y\¶?qaµ?l3?j¿?iØ4?mBo?m¥?k݇?hCª?a_‰?iœ(?tº/?qÚø?jùô?gæ?\i¹?W€ß?kÐå?p¾Ÿ?nì7?r¢å?p%t?i ï?kÓ?m6_?a“ô?g[Â?m*ç?m“î?qìP?toŸ?o_?eY!?f‹?k>‹?p-Ó?mÕ&?hù¤?ig’?oñ©?rFë?m¢w?i›£?m9:?r:.?o&?j»å?o0g?o„E?lÅØ?höÙ?iòó?o·‹?jÏ-?iœ¿?l€2?lµ{?mþ2?kY?kiU?p”?mâ ?k)?p˜F?qˆ?p -?jåè?dÚc?g¤W?lí§?o ?lâ?lšN?l¸£?p1T?ræ?qm?mì?n{?n§+?n ?n’«?iF[?n«?oµ+?fŠÒ?^Ïa?\»-?c±?n†\?qèí?sb(?rÚ°?qù?r¢†?1Ï6?<(h?Fæp?HF0?J¿?Lnî?O=§?Aaw??Q?8ù¹?7óò??*D?4qé?={‘?DK?@>B?EQ¶?E™?>™h?BÍ­?I9?OŸR?Dc¦?;[?LÃh?Vs?J´\?=ám?B¥??’?6‚?>2%?@_Ô?KY?C­$?C”?Dwè?E‘)?Oÿ?Kšù?LÆ?J@€?Fj?=Ä?.{ã?/®ë?<ËJ?Jõ?Lîy?IÏ?PëV?O«6?GÈ1?BÏb?5ýD?1èÉ?5s?:ßà?Ah?CßÁ?Jˆý?NJ?JrÊ?CÀ?Dþ?H@'?B”?8íß?5¤Ö?5gA?6ºT?:Ýí?Aëþ?<Ý;?4Z®?9F?9Ñ×?@:·?9á?,œ9?){Š?2o4?6·?5€?9±ñ?9º¬?2Ò?0òu?6„?5X?7öÅ?6ø`?/x?1Ø&?7~ù?6Í·?<-?9ý•?1¢?6¹N?7eV?70??VR?;¬.?7`_?8S!?4ª?6Ù?;¹X?:õ³?4±‹?4C?8¿?79é?;2??q_?9‹0?/Ó?7´…?:k?8Ô3?:¶0?<íö?9K‰?8`È?;sU?7§—?4õg?5 ?3pï?3Y6?2Øè??çd?=?Á?1£2?/ó?8°5?6Ò[?3JÏ?1ÎÊ€?9ð™?5ß¡?1¿Ø?6ÊH?:H¦ú?@?P?5n«?j -?&¦`?(ª ?*à^?7[9?3è%?-!?3-Ø?7‹»?CUÏ?=[÷?2h?5ví?:µ??†ö?6à(?*¯z?$Ð?-þõ?7´>?Eš1?D+=?;èH?5Ê?1¡ð?9?6?<³?4¦W?:?ä?9Ѻ?3L?s>Ò`m>èì}?âV?$Š?/·??>Ý?@VÉ?4>ã? ×Ü? ?+ëž?1h?3ßK?3 (?0Öz?-³…?3Y?1 ?0×°?)ˆ§?Å>÷Ö™>¬ø>ƒØh>И¯? 2?„p?%á?354?0è?*¢%?6àœ?6ß?5ò©?6‹ ?6F?5× ?6ú?6ó?31ý?5ªa?<”À?<–o?-†D?0(?8Pw?8Q‹?5X?5ü?:º?9À,?4ˆ'?=45??7¸?7o9?7Hº?9·?0¢,?%Ô×??ü«?6) ?.‡¨?4Þ?2!$?-Æj?"àý?f->§,œ>®´? i?#;ú?.¬D?2„«?(ö?%á?8“?4…›?2kÙ?6ç–???'Ì@?Å?6äÃ?? ?@?UO?78¸?1³–?=ˆ?A -Ã?8õ ?=xº?@è`?9âÎ?Û -?7¿Õ?Ew¹?E„?9|!?81?<#$?>È_?5Ä?1Èâ?>ÉD?@å.??ÓŠ?DBµ??¬Ù?BŽþ?D¡†?: e?6Ú/?6†Í?:k*?=¯ ?BÈh??¼?-z?&q?#`ó?;]º?>Æì??‹y6?:M÷?0Ö?#¯?8 +?@v^?Bû_??¶©?;-?2ž?+»£?6«b?:Ñ™?>µ?:ê?>—˜??5™?;Y?5¶?1mB?5ï?-@4?5ê–??Uë?>kG?8…¤?3úÐ?5Ä?9¯ý?7Ïž?:^o?=_?; ?6¹?8²?:Ô³?:?; -¸?; ß?:¬X?<.Ð?8¾ ?7k'?6qj?8Ü?9Œ¾?6d÷?3x$?5T?3 ?2ÿô?2w×?35Ù?4O„?8k^?;H ?9†s?7 -Ï?2eð?-„?,¡å?2ãô?8Z½?;X5?:Æ?;ŽY?9¥v?8xó?8¿w?3£’?0^ ?4ç†?9Ù6?6¹?0?2Ú'?7~?:(8?6F*?6 O?7‘?5l”?5£?5')?5•r?/Õz?2ô·?:6‚?9M5?3?*S¦?(Ô¨?+Î?.(?1\Þ?2IÏ?/L:?0-?2Âb?3Ù$?3›t?4÷|?7öT?3áÃ?3nå?7ðà?9s7?8"?6í9?6ÆÊ?5õe?6þµ?8?7=?4é*?.ÓQ?0”y?7ìn?8 e?6÷G?6“?7˜ ?7$m?0òÞ?,& ?4¦q?5b?/7?"3’?'~s?3<>?1ž­?3Ã?0u?0RX?2"?.®?)Ï^?,?j?*¤t?-Œï?.þ˜?'¶?+cß?2è’?3¥—?4vÎ?4v­?2ÿ„?4Â?5"u?3÷?-Ÿ/?uÈ?Ž%?!<"?$?&~Ø?+©Z?(>?&Ž?&ýs?(´…?)°Ï?%Yù?& º?ü{?›/?S›?ãý?“±?"%.?!˜¹?!Î?'ò?jG?ˆÄ?Œ’?#UŽ?ÆQ?%¬?' «? ^q?!ÖŠ?)ú)?%ý-?p ?"*d?)¤A?'%?Ñ—?5?#%º?&„ß?¶è?y?'m^?*‡?(]û? qs?%ÚN?$õ‡?%Ã?%°¿?t×?%dÔ?&N˜?"¶=?%Œº?"E?*j×?)†è?!J©?(¡2?#Ûb?(–˜?)×?ˆ?#3O? ?"ùH?'›¶?ºÃ?rî?Ü?Ƹ?'á?'¦§?!Ø6?"V ?–?$¿,?'ã¼? É ?*Í? Õ?ý¢?͸?Ø\?\ä?xý?¹¼?í? Lö?•?v??g?úý?<3?—?‘Ñ?w?f?CA?|]?##s?!B -?ÿ*?Ô?[>?ãÃ?r?n?fU? @?Ô ?;?Þj?¼?°?ð?’‘?Š?!ä™?"å ?hh?ßÜ?±µ?› ?¸ª?7Ò?vÈ??ŒÌ?…?ã?‡?éª?c -?æ!?  ?<ü?M? çv?°?ˆ?4w?M?ˆ?Ö|?Õ?!Ì?Çt?=5?ÍÖ?÷”?;?µi?',?ý? ‡?(?Qæ?¶x? #N?!%e?¢?ÓÁ? rS?#'?×?Š?¦&?S -?Ê?ÛÂ?!³?„´?ðE?¦³?¹ý?ºo? ÇK?Ð?.´?š -?87?"²Ž?]?–X?¹8?Œ[?0Í?ˆÆ? ‘"? Ñ ?Ìá?ì;?¨i?”{?« ?å?åõ?jt?±ý?? ?®6?4ã?Ý?ú!?_K?-?Ëï?t?ý?kÚ?[ý?^Ò?dB?P"?GZ?í·?‰×?Êr? Õ?›¾?;€?™±?ß?¹?Š…?²‰?¸?­[?ê/?\ò?8D?f`?WÓ?xÐ?Ð=?Hø?A&?Ò½?EC?ˉ?}?–?<ê?ì=? -¢?Õ?“?sv?@?pƒ?„¯?ßT?Çè?UA?à›?,ý?Ø??'Ø?C_?µz?º{?â¸?G'?åb?_)?w?ÒC? ¨?b‹?îÙ?³?'Ý?Mè?k‰?ð¦?Âj?Ç?ǹ?z?d•?WU?Û??/¼?@=?…è?™÷?È?Œ?ÙF?`f?öŸ?jí?ÌM?s?š?'?QÅ?öv?; ?6?0?BÜ?³?à$?¯¤?­.?+š?é?Ä\?3ƒ?3µ?Hn?É‹?± ?–ø?“S?Mß?ÿ?pò?RT??*ñ?¿‡?/!?&?«?øV??ìÇ?îÀ?!?é?‹:?FÈ?=?X??‹Æ?üÝ?¸W?·©?ÿc?_?d?Þ?Ý?á?Ä?×?· ?À?£â?vÂ?R?Ó?{¡?|«?Å|?Ùû?6?%ê?/‰?î?VY?­?w?Þ?‘¬?!Þ?iÑ?Ù]?„ß?>?1$?tw?ïì?µÔ?Hû?Û?Aø?”u?Èß?¿Y?:? -¾£?ÀÉ?Ǭ?a?‚?lÙ? W?„?¦€?Z•?q:?L?·¼? -'?)j? Î?6ý?¼ê?’? ?p¿?i‰?÷Ê?+1?L?z4?<¸?O³?¼÷?œ¿?(?3? X?Ô\?!ô?l?‰š?«Ê?ª ?J?س?Rú?5ß?Ô¾?E??Ž£?j0?;2?AÃ?í?7ò?¹X?e.?õ?Ã]?? aï?[½?Ÿ?_ø?ç‡?ñÂ?ß?¤?ç7?T8?Eø?áŒ?7W?¼ ?]™?Éu?VÄ?Xg?dË?K¦?êx? Žv??8?P)?éç??d‚?-? ãŒ?î? Ñž?¶Ý?h”?3É?æ„?hy?Þ?f¡?õŸ?¾?|K?0¥?B(?(€?ž—?0è?W?:?{Å?è`?ï×?;?kí? Vt?(¼?cÐ?@t?wî?¬?a¶?”? ÷"? 6? 6E?=? -`€? °ò?ì?¯?I -?0? »? ??’s? Žz?­;?Æ? Ó? …Á? Í?V#??ð? -ë? ‡c?9F?§d?§;?7?Èt? 8s?›ô? T›?&P>ý«ë?­Ž?õ?Î8?s(? %?ä@? CÚ?ƒ?Mª?¬9? -"Ó? .X? -L8?ÿ‡? 8? /?òD? ˜? -š™? {X?ã3>éQD>ó‰à>ÿöº?7Þ>ýI'>ùôß?Ûc?¹¬?u?{>þÇH?+?$ ?öª>öF>ÞþÐ>Û>ò‰„>ö2>òÊh>øëÊ>朲>ò…%>ùS >ú>ÿ˜Ú>ù•©>ït>å†>õÁc>ï&Î>óúl>øú>÷–>íˆÂ>ñ<{>ø)>ï|5>î'?jÖ>û:Ç>ëK>ÿ8°>þ" >é÷•>õ5Ê>þc>÷¹±>õéÏ?ËŸ?)>ðg>ëàã?'ñ?3ï>û7þ>î>öÑ|?’O?Ô>ñg>ï…Ó?(?Š—>ù ‡>éßú?â? -A>ÿÃo>öã·>ù²?P>û‘o>ÿÖ«>ÿ>ýUx>çÎœ>ô÷Ç?î?Gœ>ù¾Ù>㲺>ùTÝ?ê?bK?#>çÙÃ>ù²j?ª=?:?`p>è“T>ñ.8?µh?í¬?ºÉ>÷ÀÑ>òN{>ý@? À?à¤>õ= ->í/H>ïÒu>þgÞ?1Ú>ø˜W>ó{ð>üÚ‡>üW?FG?ug>ùà >÷“r?–º?R¦>ÿà?c‹>ôÝ >õ|Ö?3Á?Ìà?dÑ>üÅ9>ôæ>îã„?#>ö¨%>ïgï>ôj>÷17>è y?~´?úô? L?™ê>þ’£>ðí¢>íÂ?„?W¼>ÿ >ûãZ>ö/Ú>ëœö>í&è>ÿWj?ŠÖ?z>ÿyn>òq>ì[š>ñ ’?ày?~Ö>ÿ!µ?'>÷ßZ>éE•>æ‚ >þ21>ü˜ƒ>þµÇ?›">þÂX>ó|÷>í€3>î=×>þ±Á?…­?‰«?2>ø[I>õPM>ã!(>ñÖ2>üÿd>òÓŸ>úc>û¡¨>ó v>è^†>ïÝ>öÔÞ>û">ù±•>óÿß>úèW>ý4«>ós>ñÅž>ûðm>üM>õ>û/@>úîˆ?¨¾>ù2í>ëÙ°>ëäï>ø7?0Ã>ù2>ø{?B?•ø>îQ¼>÷BQ>þ­J>ÿ­ç?O]>ö7S>ôϪ?q>úï¾>ó²J>ö*Û>ó÷Œ? Ÿ>ÿNV>ôªÓ>þjß?dˆ>ò¹|>ðÌ(>ÿo°>úá>þIg>û(\>ñà6>û÷¶>ú-Ø>ó2_>ð¦>þj>ü`i>ý£¥>ùØJ>óïk?¯?š>ø°®>ñùï>ô=">úhõ>ùß>þ'á>óž„>ÿ,?,¬>øÚe>ò–>÷þÚ>þY">úÛ_>ùž¸>ëJ>Ýä¼>óé?%Ë>öLe>õk®>îä†>áÓc>àµ>ôÐÛ>ôRŽ>ù–Œ>ÿ®>ü.>ñÓ>ï,>øÝ>ú¼B>æü¬>ìÈ`>ö^Ø>ù|Æ>÷™>÷Pt>óÌ(>ôM¬>õXÔ>ú">ø§ >î2‚>ðSj>øZ‹>ü¦ü>ûº>ñTi>ó…;>ø=>ã¸U>ë±>ðnb>öøm>öUå>ú§ì>û(”>óª>ó\•>ôåµ>ùš£>øäµ>õGF>ïæ>÷¿„>ø.f>ùk>ôwŒ>óšd>ô>ú”b>øI@>ñ®=>ïp>ꙶ>ó‘²>øL>ûp>õa‚>òû8>ì6ý>îøc>ô˜­>ñ8 >áþû>âj>ö˜´>ööê>øF>òql>ðÇ$>ïãt>õŸ—>÷a>óçB>ç€O>ð]‚>÷º>ò9À>óó9>ð¿ž>Õúã>áõ_>÷1—>ø• >î—=>çÒ>îK>öº">ôè>õ~ÿ>õ9ô>î­Ï>î˜[>íóz>õ‰>ø"Ë>òG>ê‰>îU>òJ[>Ú<>Õ§*>ïV>èg>æP‡>íoÏ>ô¹>ôåó>îõ>ï›a>ñ5ú>õÇ^>óÂÛ>õ$>ïÉ}>ïv‡>ëþ×>ð²o>õF'>ó˜=>ëß>ïQ>î)>ô3Ý>íYi=jF=‰-=r¡=¯>k=ÀÝ¿=Í™=Êd7=¹ÖÎ=§øŽ=žLK=˜4W=ŠŠò=ezû=4°k=h•=&˜u=SYÄ=ˆÐ=¢+›=®ž=«ÃÚ=žR”=Ö=|™)=bb¿=L‹ü=DÈ-=XH×=ƒ#?=1¿=­Yæ=­DÊ=Ÿþ®=Ž2¡=€ò?=xBÖ=w¼‡=uÊ‚=uJ=~¤=…ü=ˆßÌ=‡ù=Š±‰=”[D=žö=£= }Ö=/(= =¬}j=¾7—=É|¥=Ã=« ê=Ž‰=x=o¦w=x^=€â=‚zâ=€aÌ=y¯1=yÖ)=„ʪ=’Æ=œt¨=Ÿ«=œ‘õ=˜rB=›9=y^€=ES5=¢j=H¼=.¿Ê=lw5=˜=x=¯Êô=¸¹=¸,¸=»Æ$=Çáy=צc=áää=á>>=Øœ=Ñ7È=Òý¤=Ý#ä=æáÉ=è’E=ã3³=Ý+O=Øsi=Ð ¦=¿áË=ªÑ-=—g==Š©=†~=‰Ù„=b4=—Å=Ÿd=©xC=±,=°Z=ª1c=¨L{=­µ =³­^=³Ó˜=®¸ =§¿÷=¡1¬=$ý=œVç=œSÀ=›QL=œ Ÿ=¤v9=°œ¼=»BÛ=Ã{ü=Ì9›=ÕŠi=ÝYŽ=ãË·=éQ=ê„"=ãï=Ó”Ã=Á¡Ö=±ü =¦»‰= ßt=¡t~=ªŒd=¾%›=Øhn=îÌ?=ùÓœ=úž=õ|=ìø=âu˜=Ù¹y=Ñ=ÈWà=ÀŸè=¸ï}=­ÿò=ž¼ã= °=ƒzx=vñ==i=cl¥=sðì=Îá=¤­Ã=µôr=Àh¯=ÆD¯=Æ.=½$a=¯}p=ªç}=ºmt=Úˆ\=ü&‘>uª> Ö–>Û¦=þ®=üä±>·¬>ÎÄ>’Ã=í¬=ÊGñ=ª&˜=”Ù8=Š8?=†¨=ˆmy= =œ¨v=ªy=µ Ù=º’ô=½¤7=Ä]ƒ=Ò×!=ä‡ï=ìâ =á¡ý=ÅA„=¥4=Žd=…É=Š²Ÿ=–Âç=¤<=³j?=Éžß=ç{‚>>Üœ> ­=ñGÒ=åŒ=ൖ=äï»=ó™õ>~> >>> > µ¶>!]=ùWd=äÕÛ=Ï-ª=½ -°=±¨þ=«˜ü=¥Áš=ž¸,=ž^=«Ø#=Ã"-=Ólv=ÔàÜ=ÒeŒ=ÙˆF=é-Á=ö ì=öþ=é¾ê=Ô\6=Ã8ø=¾¥:=Áê=¿âQ=³úà=¡Ç{=Ž¡[=} =mðp=zë¢=‘D³=¨‡j=¶Rû=³…=Ÿ¶Ž=„ q=Wxí=<×&=:·P=K—è=dìî=yH=‚·$=‰‚‚=’ Ç=š=§=¡–½=±¨=Ð=ø¨•>&‹>÷;>¾>U=òeÛ=à¤k=ÞÜj=âéÚ=ßUM=Ð8}=½î?=´»Î=¼/=Õï•=ù–v>ã•>Ë«>(5š>.’ª>1™$>1‡>-x@>*c$>*b¡>*Ý>'©J>!¦‡>¡Ù>Gà>">&1¦>(”ä>'»¢>"­r>oœ>öž>îv>‚‘>Ô[>ÿð>¾>`>©=ôNö=ë„Ó=ìïÏ=ó€ª=û®I>¦K>>w> -„‚>V ->Ëh>ýM>?‹>y -=ýø >S">³">%*¯>5Ô]>?<°>C\}>F[1>Iüç>L+#>Hù¼>A Å>;ßS>? ;>GŠŠ>O¦Í>U–‚>X…>R®{>CX¢>0ªª>%T>$#>$">Mÿ>)¼>š>†>p>'„S>.K>3/S>3ª>-z(>"µ¶>8½>å³> lØ>Õü>|>#ð“>%žj>%k>"¹}>¦>Ån=ü§z=èà=óðü> f>!¤Á>,‘’>+‚Ï>"x>ðZ> h> -R^>z>">+„>/?§>+âº>3¨>/ª>ÿ>&>ñ1>…Ô>ü>ló> `S=ýþŠ=÷Ô>xR> V¡>™¾>#«<>#šL>}Ò>]ó=Ø B=¯üÇ=¦‚t=Ä”/=ùŠ³>†>!»¢>'Jd>,ÞÎ>5>=–•>?¼ñ>8ƒ3>&> ^œ=áH=¶æ=«AK=Çús>?ž>ì1>,a¢>0mÉ>,‘>"¥b>›€>½&=õ––=ë!T=çß8=Ýé=Ê ²=ÃD<=Ü’Ð> i?>'ï„>>Ã$>Hì6>Eá >5°Ö>Ñ>­í=óòD=ü#à>äG=û(=ô >îÒ>/9>%þÏ>( ¼>"?•>#ͽ>0Ô³>;Ç>8v>'å>ä>ØÁ>> -oÊ>»p>3ml>Gɪ>UiA>[×_>^§&>_a}>YØÇ>LüI>@_õ>:•=>9© ->8›>68Ô>2ùÍ>0í<>0É>1z{>4>9ê~>>«1>:^X>*‚â>Í>„>ÒX>Ï,>&ÆY>;8>MÖ»>^H>h>iúÓ>e0>[\Ì>O^ë>Fí®>EÕÊ>H#/>HE¤>HÄ,>PÇ9>aw~>sÌ>}þ†>yóÉ>hwù>PÓ7>? >=Œ'>J-Û>Xv>]| >[eq>V_é>M&Þ>9G>8Ž>¾ì=ðµ=÷ªw>Ào>9'>ÔÚ>+•><é¯>R1ï>e >pË>tæ7>s¸Æ>gvÒ>S>Fáâ>O¹Î>g¢~>{|®>|º£>kFæ>R~ ->?9T>5 ƒ>0å¼>.›$>2¸D>>2æ>J€>P:9>MÄ>H©¡>H¯Ã>O*>VÉU>\$Ã>_úÌ>aWÞ>]O>RÆí>EÄ>5pÅ>$ò>EË>ü2>Ã">(f>8¹Ò>DR‡>M}<>T||>S_>F—¶>9„>9É×>J(>có>zfP>–Ÿ>v’g>Zöi>>^–>,²Ò>(Z@>*í>,ü£>2D>59Z>/û>$vê>#£n>5>RÔÚ>m´¾>|p>Í‚>…•e>ŠÆÄ>ö>‰êÁ>}ÿ~>iCà>b57>g@">la•>f×µ>X1d>K†E>Dœù>;”j>,a>+„> >4=o>U¬>vÉ8>…%‰>„©f>vR>Z(>@e<>-u>ê> J=øÎ9=ò >/L>øZ><Î{>WW˜>c&²>`€d>UÚ2>J‘_>FëÇ>PÃ5>c ¿>sŽË>y¼M>x<è>uyÆ>xP>€KÕ>‚9Q>}4+>p¼Ë>imÏ>kµ¥>s/>v”+>pz>c&Ï>UJö>Nþ>Pµž>S˜>NÓ[>DuÏ>:—ê>3.*>/ǹ>4‚>>†(>E–Ÿ>B+Ç>6µž>+ð>'>(Ù>.m>76Ê>@¦û>>lö>)…ý> û&=÷êg=ùm%>Çv> ¦=ôG=çd­=ñ¢¯>”>â>%²¦>*8n>(+H>#²I>˜l>?;>ÙÆ=ìn =ÑÇ^=»·5=³æœ=½Í=Ê1„=Ç£ô=·ð0=«l;=«Î¢=µg=Ä>=Úfq>º>!´U>: “>A5>;ŸÖ>;ª>K7½>gb–>‚S>ŠßÌ>ŽÞ >’³`>–yÍ>”'?>ˆ\>oìž>X0½>K´Ì>Eú>F1þ>Jò[>FZ>/ùN>Ë´>H^>I`>6½>H‹_>Rèˆ>bå>{Q¬>…Îæ>€å>[ê>+ýò>p>*Á>4å>`²ý>‚bÈ>‹Bn>Žæ|>˜e>©UÙ>¸JÚ>»÷Ÿ>µ€´>¦ìÖ>Ä>>\ØU>0x>(z.>9Š}>M*>]œ…>oø+>‚^J>Ã_>›A¯>¨k">¯Û>®Òw>§>·>ž+†>–q>[/>>jzÎ>Uýë>AOÜ>3ÈJ>9-—>QBå>rXë>‰ûÝ>˜‚³>¡öþ>¦&`>©œv>°¬a>ºã{>Äî>Ëí„>Ì°¬>Æñ¢>¿–v>¸€¢>¯Ÿ£>§æð>¨k>®ñ”>³$ >¯ê >§.e>™ÔÈ>R>Œ­È>š›ï>¬¨A>¶ÖÁ>¸1¤>¸bÆ>¸õˆ>²äÿ>¥ >–ûH>ŒK>„C«>ƒ‰ð>hW>›>¤u‚>¥ë>›cù>ˆNÕ>h›^>N}£>N¼Ñ>mào>‘Ló>­Áò>Á7>Á)Ø>°ˆU>žæ>—ɲ>™2z>žÕ>ª1>ºÓ>Êšb>Ñ!>Í7W>Æø>µPi>ŸÉ=>…oF>`Ù¢>P!Ž>P«>M€>F¿>Mùi>qÍ:>“Â>­÷Å>ÃWÈ>Ñî>Õ*>Ëoú>»°Z>ªÁõ>”ŽV>mP->2©2>a¬> ïû>Íu>Atœ>mM >‰Ú|>”fa>Ê}>ÌŽ>l{¿>tw>~ -â>róÚ>W»Ø>5Ô´>47=é)~=ɵ*=ÉŠH=ä9J> u3>6i>b¾>‚ž5>‡òD>}d >Z¨I>;^o>&Ì>Ko>ÉL> Å=ýâ=åšÎ=î_!>c>Bý>i!>ƒ¼À>’¨u>Ñ>›mÎ>‡+e>Q—\> ‚µ>¯·> næ>7Õ)>F??>D[™>:ƒT>;9u>F -k>G H>Aæ¥>NˆA>s í>ŠÛz>“Q>—¬ù> †>Ÿ$3>šxÐ>’ô0>ŽŸa>Ž!>œÅ>Áî>“‰¯>œ¶O>¡1> M> žI>¤Ó>£w>•Å¡>zï_>Nî[>4S>&¦ò>%Œ¥>4µ«>Kš>WE®>P“O>@àK>4?²>1G]>3ß>-ÓÖ>"åÇ>"êK>7ɵ>VF“>oR‰>€Ÿ >†­k>ˆy>‚z–>lQM>Ròì>JÈÙ>U¬½>fÉ2>t˜>xÀy>o‹h>Xr><†o>$°2>„<>_¶>Ô×>î8>ËÄ=áÊG=Þ1k=÷ðÜ>ô>ý=å=Ñ$$=Ó5¼=æéõ>T×> šU>·«>°õ>=Ñ>P©=ë\/=ïSq> ->çE>¾> …¾>ÿÈ=îžê=êÅU>Mœ>û¨>+&÷>1Óž>.cr>'ûK>$›“>"Õ1>ã>ù=>Á>{>VÂ>Æ>Za>x> _> Œ>jó=øe=ãT+=Ý-#=óIS>,‰>"O¿>(t÷>"Þb>Œz>Lâ>!¿>s!>  >¿î=ú”ü=óm®=ýŽÇ>>>+ñó>?d”>>­;>,\>“+>„é>S¢>eÖ>·>"yL>M‚>uAñ>r+v>Nï©>:3 >EÃÀ>_¾ª>|#¡>1>£9K>µ

    ¼¼S>¶G>§ÔŽ>žl¬> )é>¢¹š>k­>–¼>™<Á>£4n>¦ñ–>¡YP>šà·>’vŠ>†W>@6>Š‡Þ>›Àþ>ªlk>±Î–>´zø>µ¤Ì>´ý>²À >¯3>§%ì>œÊ˜>•õí>‘$á>‡Ü¯>tT¤>^±Â>ZÁ>bܾ>oÇ>sTë>h¸¤>ST>8ž+>Úö>¶Ž=×ך=³nl=–i -=óu=pÓ=xº=hº=²45=àÜ > Û>$¶´>6Ùü>?iì>Cý©>G½>K¾Ò>[8ç>|Ïá>Žp½>’ˆ‘>åÖ>”gÙ>¢Zè>­>>«ƒ >§

    ¯¨E>½(¹>¼B…>®i=>¥bÍ>¨¡>¬¬ >¤þ">Œñ¥>ciò>Bm>2†…>#F.> ú–=à[È=°x==–ÑÐ=š]|=¸SÑ=æ8×> õü>(Ý>Fá®>jé7>‡ª>—çÉ>¨”Í>»¦>>Σ>Û6t>Úð¶>Ò©>Í*ñ>Òßó>á u>óQ~?¼½?÷Ž? È?"n>ý@O>ûˤ?ÿˆ?! ?Ú²?cq>ûã>òŠ™>ñôq?‰»? )S?"U?Ñç?£?˜8?#?Â,>ñ¥>øÙ? s?%n?‚?¿_?A%? ?£ì?$zÜ?)º¨?+dö?'#d?#p?&)?)#?&%ö? vâ?aÕ?!í?cî?®?"‘x?-Óã?5ƒ2?2È?øß?žô>ïµ>äŸø>æ š>õ­§? -q;?ºf?,óá?1Ð4?,¼á?$^? w\?!—È?Ls? -Î>ßžØ>ÀL>ÑÁ2? g?éË?"Ò^?'Àñ?(ò7?% /?Ì?BG? h?+?å>üî6?—+? Ì4?õ’?Ùt>ùéy>Ôÿ/>Õèè>ó+?Jæ?Ëg? ˆk?î‘? ¡?Ê?Þì?)à?Êr?»1?ôJ>ÝßB>Ëú>Þìˆ?®É?÷q?)’ ?*RÜ?!ø?Òæ?•+?(ô?"wå?/ך?8>¬?8Ø?3Í=?0_~?/Kö?0;n?+³5?,8?4?a?΃?ø¬? -¼>ûæ>õêñ?,?œ‰?ìÆ?$ O?+C?)2!? ?da? ™? Pã? œq?¤b?rµ?á?¥?žq?Õ²?Öá?Æk?r¥?ïÔ?xÙ?ÎG? -ö!?¬?]? 0?n?>üLµ>ó$­>çóô>ã?>ë+ë>ÿ‰?? -;,? Ê#? ’$?}?… ?þì>ô¥X>Î -û>ºÒÜ>Ê’5>é!Î>úÉ£>úA³>î/‹>ܬ:>Ïac>Ìv>Ñ,ú>×SÝ>ؽ>ÔÍú>ÐËÉ>×€>î…q?2? Å? |? -¦õÔŽ>ìïw>ì±Ø>ùú‘?ß2?Á>ûŠN>Ü%Þ>ʽ>Ñ&£>ÝJ¨>Þ©›>Öº¹>Òì>ÕÛ>ÚÒ±>Þº„>èl>ýýÔ?=è?e“?Î%? ð ?_È? ? €? ? ±·? 0?ÒD?`>óF>ßT>Þ¹¸>êS‘>÷™Ì>û©>ò9v>êJ[>ï¤l>úx*?±Ï? Þ¼?î’?P?àW?,„? )? u?]ä>í Ä>Øÿ4>ñ ‹?\??R§?P¥ë?TÅ€?S„ì?Ia?3Í(?H>þöô>Çe«>¨à>Åè? ^D?,Ñm?@ð?Aü$?3ÇÉ?$é™? ö»?5|?He?³›?t¹?#‚7?*f|?3›Ñ?: *?B±O?Nëä?SõN?IŽ·?7´6?(ú?QÞ?{ó?¿?vc?"îÏ?Lú?®‰?! ô?/Øn?00`?!$ª?Ýk?@e?+À?8Éî?Kîô?U4F?Xs­?Qù•?AJ…?.ª:?A?­;>ãˆ>㬩>ùȨ?“ô?VÄ?)PÃ?;÷Ô?A¸©?6T?'%ù?#\?(0X?+Må?'8?Þµ?Ê? ßc?•¤?˜õ>ùë+?c¢?cÃ?"“B? ÷?à?P?åš>ýrI>× »>Å÷÷>μ%>ÙD^>ÝX°>à1À>ÜD¸>Ï|4>¼Ú”>­`E>°ýÿ>É]Š>éÜœ?íe?­)?öâ?8ß)?\€?t8L?v}¬?l_-?^n?Q4™?Eóm?1t?ec>ðI>óƒµ?ÜŒ?GYÃ?]. ?X¾v?PyÀ?S©0?]2œ?h¿½?rNi?i1“?G2 ?#÷Ç?»Ž? -”?ñ6?0¨?D×?L~Æ?T0Ü?YÕ?Xb¾?_Ý??jxÊ?^Bü?;7?#Úê?*m"?<¥2?J1¿?Ui ?Zû!?QQÆ?Bix?CL ?S]î?`Ø?eüO?n -ä?u0ƒ?kkô?SÒý?CÉu?D—Ç?K_§?O=›?Kú?<½?&qå?œ?-“£?Häé?Zä#?ZÐx?N÷w?<ö?…>éc>Éq¢>òÖ\?Þ?,¾Ç?,?&·×?#fÆ?(Tà?2›?7n{?5Hˆ?9q‘?KA^?ZI@?UÃ?@ØÁ?1Ä%?:#¶?Q%ú?f›ô?p˜Ó?nk?iŠ·?n =?xBó?y$ž?mñò?`ÊŒ?X±?W°µ?a½/?mª?q½e?oT?h™ë?cÐÛ?dxw?d¡å?bIµ?b¾Ú?gF`?núh?v~é?tÓc?f3h?W?Té?Vö3?Xm\?Zß-?`þ?cZ?_ó?W±m?Sªd?X9Ó?d;¡?jXö?c¶x?Y„x?ZŽ(?j>G?zmÅ?‚#€?…Z ?† -Á?ƒ°¥?z?‚þ|?„Îã?~ë??dŠ?Mv¾?Ha{?Nè›?X´$?bÓî?jU¥?o"?mÞï?k/??sÝ?{/Ø?wÂl?s…é?vË?zçÜ?y†]?z€¿?€ö•?‚lv?O(?Ó???},$?vü¸?qÖ?mÅq?o -i?st]?yŒ¥?~˜?zlÐ?lí/?a_±?Z”"?U[A?V®Ü?b -?sáX?€Õ&?€¾6?y7ü?zuÉ?ƒ[?‡Ô·?ˆàŒ?Š“Û?‹{?ˆ!?…¤µ? ?y°?v”˜?ušÉ?n™e?lÑÖ?o‰Ê?mŠ…?mú×?uü•?‚S5?Š³?ŽwS?Šâ8?‚ïŒ?u{þ?m¬Ö?uR©?ƒˆ?‰F¹?‡_*?nn?y×Ð?r¹î?nß(?tú¾?~h`?€ï?€Z?Ob?€~?ƒœÉ?‡lA?ŠP¸?Œc-?‹ÛÁ?‡sU?~)¶?r(—?xƒß?‚F’?ƒ 5?€ -Ì?}šd?{—?r†Î?p5m?{ùQ?‚~Ô?‚¿á?ù}?|¡ ?p‰?l‡Q?p]’?pâ?r³? -Š?„?A?€Ö™?s?q‹s?|r?€Ø??~•~?q¬?_3=?]EG?j`p?j”6?Tûp?8w?0½^?D¾h?W¼?aØÊ?j\ª?lNß?j´§?fþ -?X ¦?KK@?Q«ç?](?bM]?iÂå?uœÓ?€Þ—?ƒ¨ø?{4Ê?mw ?mŽË?iÿ/?[—1?TÐ?Zeò?a%;?\é€?SñU?^au?zßD?‰?Z?ŽïB? d?Œz|?‡ü?€¡?~Ù?¸?|AE?€LH?†ì•?ˆÅ?’G?n| -?`V­?a! -?mÈ?{-z?ƒP²?†Oâ?€ÊÛ?e~;?Id4?>¾?Iå¤?[‚I?`" ?`jQ?lñ>?} i?„”ä?‰¥±?ŠöÉ?ˆ.Ø?a.?o·ø?s(S?u+d?dgj?R¾?X;º?ry?ƒã—?ˆx?ˆ»d?…oƒ?ƒm&?†·p?‰ãÓ?‹FÙ?ŒÌ¿?‹µ”?ˆ÷l?‰Á?†ó?v6?aΰ?r`™?‡-¨?‹\d?Šîü?ŠTk?ƒvL?uï?q. ?uI[?xø©?{î?‚?‡«ˆ?‹Á?ŠÏè?†ÿÔ?àŽ?xÌÌ?s8«?n²Ï?_Œ?OÑŠ?OÔY?ZÈ??j¾F?z¨?ÁÔ?{Ì?wäŸ?y«ü?yß¿?xä½?}Ã?~Pù?zxÍ?p‡'?f \?d\?e º?a>L?VÄà?N§¢?Y{E?p‹-?y8ó?p¡š?_æ˜?Nqa?Hã?R¦?\š?Z?Xñ?\ù‚?^ΰ?\‹ -?bt~?mOü?pÿ­?jg?cg?lI?yqA?‚JÌ?ˆ«?Š´¹?‚©H?no?hu6?dÛŠ?Pk?9[Ç?=öÆ?`äî?€Ü?‰Ux?‹”§?‚½"?nŒÆ?gÒª?h¸?j £?wx(?„ÆŠ?ˆ~?‡`•?‡*—?ˆ~|?‹x»?<ú?Œ–å??n?ná6?sdA?t4v?{æé?>ñ?uï ?t„J?zÐë?{Š›?|u=?t&F?W`Û?EÕ¾?Rzó?a™?gu7?o™?v%;?x=?|cõ?O?‚’?„7‚?‡’|?ˆYk?„ÇJ?y%)?bŸH?W;¸?f6T?}QB?0s?zrR?té‚?qT€?i Ö?by+?`cI?dð²?r(f?{c…?€¯?‚\?…ý?‰YR?ˆy–?ƒCJ?ub‰?`S[?R˜?TWÓ?Z8?Y•4?YŒ?^Û?gèò?pÌ?wzÐ?´'?€wR?s©o?fê'?cß?iº?fÝ?[½@?^m?cÆý?_\?ZIJ?^,\?c!Y?_LJ?[À0?_\5?fÞ†?pë·?zß‚?Wã?~ß)?~ˆ.?wu†?j‘~?[ƒ³?E<«?,S2?!R?-ëQ?H± ?CÿG?(Ó?1ª*?ZÙñ?s>â?zê£?€Üñ?€ó?x~?\.¾?3Îo?-¾|?SǺ?t8}?|Ð?ðh?€6?hÄ„?SÓL?Yµè?`q¶?cª?mˆ?x^$?€ø?€ì/?€1?x÷+?d8D?RÜ°?Püc?PÃL?WxF?f¹Š?u¥p?T*?{F\?m@´?hëu?s=t?~òv?¹ù?·?xDÊ?cfØ?JX?8Ϫ?AÕ?b €?{‚–?ˆ?z”%?kg)?hyþ?t“”?‚5º?„Ô¿?ƒøP?„³ä?…®?„b™?…—ê??i¹G?]sè?]‚?Xÿò?_‘}?lð?kSœ?fž‰?vŸT?†ù-?Š‚œ?…’:?v/ý?[`ê?DAy?72á?9Íj?J -È?Fl“?4/b?Bá?^Ò†?g,m?bÿ!?eúÞ?{6§?†Vo?ƒóC?xØë?n€?hŒB?m¿:?‚´?‹Ó?‹Îâ?‹`?Ž:?H?ˆN?„Dí?d?ij›?VÆ ?_! ?oªÖ?sDÑ?z¾˜?†.‰?Œ™Ø?ŒT?‰·ã?Œ%Á?Ž˜?Žé‰?‹ö‘?‰°È?‡Ñ ?„†ñ?‚¹?ƒj ?ƒ¤ø?ƒh…?‚!‡?| ?t†â?oÂö?X…?>r:?M ?n¤C?{8“?}3Ð?„sÒ?‰5$?ˆ¬[?…üº?{éü?k+Ê?s‡d?ƒ·?…‚ò?‚(ƒ?7?z6¢?t‰Ü?|o*?…,Å?ˆ…A?Œï¾?’X¥?“Gk?‘òÊ?‘1?ŽÑ%?‰Ùš?†*?„Aÿ?ÄÂ?1?€€Ý?väV?dZÏ?_­?v'ä?‡»?Œ“?‰n—?†•?‡VT?†i-?„0?ƒmy?„]Ž?†p¾?…&ÿ?²(?{Þ/?tJ?qC2?qê©?q³?n4 -?bªÏ?\H?k ?w~?{]Ö?|Nà?l–?T+]?Mê?\‹ž?fj‘?e »?n‰9?>(?‚„¦?ƒ6Ì?†Æ™?ˆò·?…˜a?€Ý?}•?€èÔ?}®?{¬?„-?‡d?|?j•?qyå?s‰ø?hZ -?`¼Y?dU?uÃj?†ÖY?xæ?¼ -?ŒVÒ?‰ÍG?Øý?lä¸?i ?€Z?‰¨s?Š¦¯?‡(?€á}?qSº?o’>?‚:¿?Šÿ«?Š77?„P«?|QW?{?‚ý?…g?„Ûí?„wÉ?7¤?}¶M?y–Ý?t -›?oJ?atÛ?`1Ý?pK?qxr?gêt?m?~p%?…¼·?‚ñá?y?x”H?} ;?€ig?~Ñ5?{’?€ge?€Tž?°8?…2€?…ŸF?~¡?x?zA?v -Ï?q´?y»“?€k?|ö>?q°*?iïù?mŒ?u É?|À?„J¦?‡ãí?†q?ƒïx?ƒÆª?ƒ^Z?€«¤?x,å?pÆ?v?€Ü?§q?~ð=?z´?x´ê?{U¸?~¶Ó?ƒÀ_?‡¤9?…êã?ðz?*5?ZZ?„_Î?‰ˆ?‹„¦?ŠÞ ?‡LÆ?ƒ%ð?ƒ"ý?…Yf?…â?„®à?„z?‚^?;?‘?}† ?y“º?zÃK?} E?a»?‚…Ì?€?ƒJ?…ŽN?„ž+?ƒèw?ƒúb?… ?ƒáœ?‚dÑ?~œÕ?rÿR?dxU?^1L?cBï?l?q%'?sOØ?zá?„” ?„«ç?}Žö?u«?m±Ð?l÷??{ Ú?‡ŠÆ?Œ¦ ?ŒPÕ?Šig?Š ˆ?Œ.?‹*?€Æ!?lI?r9?}-"?|dú?Q>?‚§ -?|”Q?l Ç?lÇ?xÇQ?‚ƒ?ˆê]?‹‰?‰Y?…%c?€äS?yêv?v~?z3r?{?v 5?wäñ?}6?€¶?‚;Ü?‚G{?€Q8?€ÈŒ?„j?ƒ­Œ?}ñÂ?{ È?t!?c+^?fÞ?rP%?qøª?xY$?‚Œ?õ?{Sˆ?y‚›?}Ñá?‚Ík?ˆÝÒ?‹ÇÖ?Š¦ò?Š†J?ˆæ„?…à©?„yÄ?€ˆ|?zf?}_?}vÍ?wÜÏ?xDâ?€)×?„Uâ?‡nþ?‡­Ï?†'—?…BÕ?ÆÚ?z/Ö?sg2?lŒò?p@?xÖÔ?uÏ.?jˆÕ?a‡‹?^‘"?bæ?g B?u˜?@•?„Ua?…wy?†÷?‡¸Þ?‰…"?‹Ýš?ŒŠ¦?ŠTÑ?„ÕD?‚\Ì?…‚‹?„,É?€›“?ƒøO?ˆ‚ô?ˆæ©?†ÕL?…É?…£?„m?‚z?‚¯ä?‡Û?†ûz?€)?~†Þ?„ Š?‚“Þ?t•Î?m•?|a±?†.Ý?‡Ac?‚s[?w›î?q®Ë?|/À?‡F™?‹<ð?‹Œ?‰*Ó?‡6î?…nY?„C?ƒ†g?„c·?†½Û?…?|€D?fF$?^Ñ¢?c ^?av?g¼ -?yæ?RM?€c??}Øò?s$?„b­?…6Ð?€‹v?|i?„½?Š°}?Š¯?„õÞ?}¿9?|çò?€¦‚?‚Ör?…€L?‡0Æ?‡?„?ƒTÍ?~»©?€¥ï?„°?…xÃ?‚›u?zí²?{×€?ê?…> ?„É?€VÉ?~¬­?§7?}§~?|ò*?„?|ñÄ?zÓ?€®Ê?…fS?‡íï?‡’L?…•?‚¿¯?…Ò?‡ü?‰´]?ŠV¸?‰Rñ?…•-?Ùž?zá–?NÂ?„Pç?† ´?‚Á?u¡œ?vÞ‚?€?‚Ź?„N¹?‚XW?:p?…ç?†‚Ô?‚$/?{MÔ?}z?È0?|¦?€Há?€òt?| Ÿ?pìÂ?q@?~8?þé?wì?wÊg?yx·?y U?zV±?uu?t”‹?yH ?|Åi?€o‰?€‰?‚0Œ?„n«?…¬?†Yï?†n?…ñ?†Ày?†ÚŠ?„ÝÙ?ƒiv?ƒ²™?…q?‡+G?ˆ ”?‡¥X?‡?ˆ¹?†–ø?ƒ]??À³?€k?dq?„‡©?…Ú“?„:?€Ón?y›?zœ?…ü?‰ìÂ?‰ÛÇ?Š.?Šåú?Š£?ˆæ‡?…^ì?$/?€ßº?8?z—?}a?~A?€·Ã?‚eT?~JB?y·?zz[?Hc?ƒª?ƒë?‚o ?„¬m?‚´¥?r( ?p•7?€— ?‚¸`?ä?„/·?„ƒ€?‚ÓÄ?…kÑ?…û+?ƒ -?‚êè?€ôe?y ?u^?~+?ƒ3á?€¯‰?z4¦?yÈ;?ßÀ?…Ü?…g?{cÅ?]Ѳ?S,Š?oh?€At?ym?l!?…Cb?…?‚"Â?~¤n?|Çü?€”†?ƒÆ?€È·?~^?ê½?€œ"?vÂJ?aÁî?^ôÓ?mÆØ?{4Ì?€z?uÀ­?jÎ ?x§Ù?€Í¯?wÝ?€÷É?€A¨?‚Ó‘?ƒ?…*?‡\¬?‡*b?„2Ï?9È?|\®?v b?iÙÄ?wQ>?…K¦?ˆC ?ˆÃB?‚è–?xîÍ?€‹N?†¦¢?‡UÜ?†ã3?‡T??‡(m?…Ÿ6?‚±+?v¶b?hÔs?kÌî?w2Ö?wlÚ?nÚ?rÏ?}üË?~çq?€]z?j£?zØ?gT?bs$?q,r?‚Š(?‡ë?ƒ5²?z?pä?oõÂ?jtý?j8?oíš?yÊ3?ú?~Òä?qÇý?fÒß?f*o?cÉ—?\•é?^q3?nd6?zö-?È4?|û[?wä?4t?}ü ?y{?|‘!?;=?€ö–?}¡?wò?pv?hA*?lœ#?ya?? ?€†Ò?ƒþì?… -?1—?z~W?|–?n]ì?n*Í?lÊ[?sø®?{#ñ?|4F?{I§?}ã?|8m?swl?k€?kY…?rZ»?w>^?v:£?u{Å?q7 ?nV|?pé)?tÝ,?v#v?wé?vغ?v5Ë?vªé?vc?u“o?uVc?w0Ò?tÚÿ?u -û?z‚?z:?u¿]?w X?{Ø ?|&´?wÈñ?p¡3?r)?xVž?xÝK?xÊ[?xðœ?vªý?s@‘?m#?ij?m&×?seË?v ?wÉ~?w¡õ?u+«?s6ð?jä]?fÔ¾?k_ç?má?ie9?lhà?tê9?xB4?wú¶?wP?vy?s¹?s ?r¸’?tUI?wDX?tõú?o75?o”?gHV?`c?]5D?X -”?\Ã*?[4=?] ?`¶ö?c36?f‹ž?i8?húT?d ®?`ç›?W@?PbÖ?\ê²?i§?i³?c#5?^f0?[ѱ?ZÊÑ?]ø¤?_š¯?^Ç9?]\%?Zpò?_a?e³l?cÒA?^Il?[§’?T¬?PQ?^Êó?aò,?`ë?dXˆ?bÒ~?]Ɉ?_Yˆ?b ;?Y—m?]ƒT?`üø?`%?cë?e’ç?a±H?YMÌ?YÍË?^„)?b°þ?`ÿ©?\ây?]Ô¶?bvK?dŠŽ?bdÁ?_œ5?`ïÉ?cÙ‡?b&Œ?_ß?aȧ?bPÌ?`Œ~?]Ñ!?\¨?`FÃ?]­o?\ÕÔ?^mè?^3¶?`‘?^„A?^T¦?a…?^~©?\Íá?`•æ?aºi?a.?^?Yr)?Yò’?]Å}?`¼t?`Ms?`C4?_3?`¶z?bSr?aê™?^ù¤?^£õ?^Òw?^¢?_ò2?] ?_=?`?6?ZÖ|?T+?S^?WµM?_–»?bfm?c.]?cD?b¨L?c´?b¸À?b€Ý?bÍ?`ªã?_“Þ?b?c/©?as ?a`?b6Å?b”l?`)a?Y{?WÈ?T3;?PÞé?SÜ_?Sæù?L]Î?W V?^}S?]ظ?_ä8?`Õ¦?bÈx?bÀ"?_ë£?]Ks?`¢Z?b?aÊ£?`j ?^Ý?`Ý?aè?a{?^~Š?Z$ˆ?[C?`Ãý?b(»?bõ?a±!?],?S¬Œ?Rlv?UR?[Õ3?^¾X?]œ±?\2?W¿?T‹_?VŸŠ?YÓÆ?^ÛŠ?_»¿?^áÏ?`¡?`ù?`.Œ?_o¼?[V?Y¡'?SšY?L.F?Pxà?Yî1?^ÈK?`7?a˜Ô?^ëH?^#¦?a1Ö?_é%?_ª:?a¨±?`ok?]”?[9?\l?^;?^ž‘?YЩ?\Ò?bŽ?b&Ž?\ª—?VÚ?]’y?bÞ?añ*?]Òš?X{?XH—?_@?c%?`¿§?\–;?\‚£?ZaB?^xC?c¤M?c›˜?eç?d4?cøå?föY?f¯‰?ci?d|‡?^«º?U#b?X¶?U?\B#?bxf?b°•?aÜW?_Šì?aE-?]ùH?TÎÊ?V6?WÜe?Vóþ?[§É?^Ci?]/?[­ ?]*t?^¸o?[?W&j?P(´?Iàx?N^b?Píÿ?P-Ë?K»å?M>Û?RP?T^m?T -?S ?PÇ ??Éõ?:«?CžÛ?I¶Y?M…™?QTZ?NÇH?NÝ{?GÕ?H&Å?BN?=Hê?Ens??M&û?R¾Ö?W7?Loƒ?Ggà?Q³µ?Wjl?NÝ?E®?P_Ö?Y€Œ?PMN?E³?Gßu?J3?F'B?L(Ý?Kp?SÂÇ?PNÜ?Mò¸?J:Ÿ?L?VLv?RaF?S{?P½ëç?<ö©?Gw€?QC]?Rìå?Pzc?V&O?Tî?MÄt?J»)?B©}??ÿw?A‘Ä?D+ð?I›¸?J_þ?N/?Q­?O€þ?J4¢?K$V?Meƒ?IôT?CŽ.?A?@¯_?B„H?E§?K+–?H;M?Bßu?E…Y?D½ß?IÖ‡?FŒ9??ÅC?;Õ=?AÎ?D6ß?CØÓ?Gñ?I³Ð?G È?Fz#?Gø‹?G|Ú?H'Ú?G½Ÿ?D„;?E?Gý¾?GØP?I‹¸?I*·?E²a?Gìo?H[?H{ú?K÷K?IÓ¬?GÌr?Gœp?EÓó?Fšà?Id¹?I(î?Dø ?C.ß?Fô{?Fñù?H|×?J´k?Gƒ¼?A?Ê?E‹K?Gßü?G,?Gý8?HŸø?Fly?Fcà?GŸt?DÐS?Cè?@,A?@?BQ3?C -o?IWÂ?H$Ä??=§?jæ?E.?Gùq?E@¿??Ù‚?;ƒ™?AŒ?EUW?C]?BÔ?D?DoÂ?GJ?CvÏ?6“>?B§Š?AÀ&?;0e?:ÊÀ?8‰¢?<Âú?FiR?Aün?> s?>¦¿?Bì/?D•?;]{?: ’?GßV?F;?=v%?Bø?G¨C??"—?CÀl?F÷?0b[?7Ù#?73ó?1rj?;þ6?Hù[?I°?Ao?@CX?EHñ?@Ax?BÊ"?CÈP?D›?Cðê?:z?=Ää?Go?B‡y?>¤P??ùÍ?>Qê?4ÉK?5á?IÀè?K-$?AÃê?,¡¤?6‰Ÿ?7Œ?7ßÖ?Cà©??ò?9‡É?>“?A¹ö?LÊ÷?GÚŠ?=,‡??5Ù?EF??J=Y??ç@?4¡¬?1ðm?8…K?>Oo?IéÉ?I3A?B?=¶y?9o?@‘:?CÇ?=¤Œ?B³?C:?=ŠÜ?)¿Š>óÓ{?“2?'KÝ?.Õ.?9_N?Fj?GkÁ?=©,?0?'ƒ?2Ôý?7÷?:U@?9²?6„–?2+@?7}?7¬D?7“/?2Éÿ?"Ñ? -c7>É>šÛœ>ìü‘?Ú3?#‰?-ƒ?9Û™?7LÙ?0FW?:ih?9/y?7Ÿ?8ŽŒ?8€c?85ù?91ð?: š?7ŠW?9D?>å¶?@M?2Ì=?3_8?:{ª?:3?7ëà?7Ya?;?ñ?:YÀ?4éo?¦›?6>é?5Ý‘?8¹^?3û?+¶|?4Ïh?:¸T?;¯œ?;•?3ß*?8’‚??±?< û?:Äî?8Œ?8o©?<«E??ê_?@Lh?: -ð?8¸$?=x?5E?.ÿ®?5—.?4¯?12}?) Í?1Ü>½nw>¿÷û?9S?'Ñ?/J®?0‡’?)R½?&¥¾?5lç?2L?0Iª?3?ª?: Ö?*À? ½†?4Âq?:B¡?;ž“?8Ô×?1g?3ª‡?3£6?9´m?:ð?4O?0¬ ?0¨?:×B?;%?;ÿ?>ÈÃ?$?7"ô?9Éé?=Ñ?7ƒô?9±j?9¯Ô?7(È?8ª?0Ç?7cÖ?:ò=?4ºë?>Ç??Ë?6m=?3©U?7:Ù?;ƒ?4w‰?.ãV?8“?:’ý?8»/?=7?9³é?;6Â?=@C?4>9?2-¦?0/€?2ÏÌ?6ƒ‚?;W -?8ŒŽ?+M8?Ι?èº?5ò¢?:8?9w²?:½?7#æ?5>?0¥y?'?Ç?4*Õ?:= ?<“?9¯Œ?6h?/æ?+žã?2ž¹?4®ä?6}u?5‰?7BÓ?9!¼?93°?9NT?9C„?6|?/,¸?)â³?/[é?+ -?1;t?8Yr?7(?3‡?0³,?2o?4:?2Ù—?5ú?75¤?5Ç ?1>E?2ÖÀ?5¸^?4ÂÆ?4«È?6??5ì?6qJ?4©Q?1ã˜?.?w?2”?4Η?27a?/ü}?0ì?.ßu?,0?+i@?/Àv?2 ?4@3?5v…?4Ѷ?3á?.ÓÀ?*:?*\“?.FÝ?2^ ?4î7?4¾[?4åŸ?4O[?3®d?3D¼?/Þ?,µô?0qÑ?3€¯?1Å?,O6?-Y?0V?3O¢?1&?1HÖ?2«?1Bî?1>??0ø?/ûc?+1‹?-]¤?2ÌÍ?2s?,÷t?%ÚÂ?$n…?#›Í?"Ð[?)ŽS?,_C?)Íï?*çà?-~?.ó?.J«?/xÍ?1ô?.5?.ñ?1p?1áy?1Y€?1gÑ?0…ï?.Ñ‘?/ä`?1u¸?0œ?-b?#¡­?&|?0K²?14Æ?/ò -?/Í·?0²?.§7?'¦è?&An?.6–?/pÝ?*ÒÚ?8Ñ?$41?,E“?'_=?+\?*:?*ß?+Ð6?*™3?*ü?*­†?% ð?(†o?+}Ó?%¤ò?(1¡?-áÞ?.jâ?.`G?.Q\?-fD?-Á?.9n?-+â?+$_?#¶3?%—?$IÐ?æz?&4E?* Ò?(ÈN?'¹¸?(^Š?)u?(Šˆ?%…û?&v? èy?p?•?½?#æ?#ØA?#€?#¹g?'+Á?$ñÚ?!Ó¤?"ÊV?"\^?$ã¤?!‰? >Â?"±Ž?!X€?"M.? 0Û?'¡?)Ù? tc?ðc?2?'”°?"Ìô?Å?Cñ?Jè?)¶?#R ? †_?w«? ~ë?ìÿ? ¾ô?e÷?bò?"ìj?Ûý?k?!Eº?#‡6?Ò?0?Ÿb?Õd?#a&?#{—? ? Ž*??‘?!ë?$ *?Ï{?M?Lz?ûG?8P?î?™`?õ?œb?Z™?¨d?7T?4)?ˆ ?Í ?¯;?—=?ÎÇ?¯„?®$?øf?èÎ?!~??ˆn?Ô?À¯?B?@—?–B?àè??`"?AV?Ñz?-Á?”ÿ?¶0?Õ -?á‘? ø?/=?“?¹ì?Í´?1?½†?o´?4?±Ù?ÞC? ®ù?|?0ñ?lœ? :}?æ?³ñ?OË?ç•?;¼?]S?þÇ?Øh?…—?qƒ?"1?Õú?A*?2?–N?SÇ?oõ?#ù?pÛ?ÄÂ? ód??Z*?hi?Žê?š ?×5?H„?t·?†l?3[?Ci?r?ÀD?º?|"?…?ÆÕ?Íò?a¤?kP?Øï?v^?Úà?jæ??0?jÍ?õ@?¸?ê:?K?ˆÕ?%?—]?×W?xü?Z{?xÒ?ÚÛ?"*?© ?…?E“?ÄÉ?.O?D?.F?a‚?¤%?àQ?´i?x?c¹?±Ð?¾ò?±&?˜?ÇK? 4?Åy?;ª? ¶?«ì?§?¼¾?ÐT?‰÷?ÉE?öâ?¤—?ÆÕ?×v?6Y?‘Ó?éž?+Y?ø ?„?žB? $?ª?A[?‡´?gí?5L?·U?ƒÂ?Gç?¾È?–±?Ep?zQ?°?¬)?¬?PÑ?€b?m1?Ñ?=?55?Õ?¼?õN?_?³¶?pÿ?˜˜?Fá?«?K;?r•?È·?¼?ü¤?A¾? :?6«?…²?º­?ó"?£?ÖV?ðŽ?ù»?j·?‘¹?;?c†?GP?$†?pñ?æV?(ð?&û?“?S?‚?p?K?2¡?f?ˆ/?jÃ?¥õ?Ü,?²™?w?Ž??:d?’±?ÿ©?&&?PN?9X?Éý?å?0å?‚È?͇?5Ó?ª?=`?n+?ñS?pû?íÌ?›ñ?IÇ? øÐ?×Q?ÒB?³ƒ?v{?±)?=^? •?¶? ?ˆ"?Š?±¬?ýÁ?­V?= ?› ??Îj?«M?ÇW?@^?.=?‹½?u&? d?œ?5ì?:j?ç“?‘?,?Ûï?¶c?º–?tÃ?Ïs?ά?¿?€#?­ƒ?nÉ?óÅ?±\?sÜ?/?V—?w¦?·Ø?0÷?Ï—?;?õ?[?q7? ðÿ?G¦?Í?,D?ä_?åL?ý§?–.?WÁ?ÅŽ?P5?ê²?€’?Øð?‰?Ö?½X?U?`»?hN?§ˆ? “é?Êä?.—??ÿM?!Ï?ÅF?VÖ?«1?ì½?=?Þ)?I#?":?8÷?wD? â’? Œ”?â‰?d? ? Xè?Íg?h+?½z? í‰? ~x?Jˆ?D?Åw?ã?©?±? v? -ð? ;¸?Óÿ? +E? «à?™ ?˜!?»ü? ‘Â?xã? ¼¨? C? ùÍ? éó? á? ¼~? ¨??-*?U·? “Ô? ¢ß? -®ú?íX?Ê? -!©? -“ ? (Å? -·Í? #? ܃? [? *è? -á? _ê?!i?®Ó? ¢s?s?AÒ? Å? r©? CÁ? -_? - æ?Í -?§Þ?…3? -–? -Eª?–Å? œã? B¨? A? -)? -Yä? -HR?ÅF?F¿?? -¡ ? -!ø?±L? v? \Œ? Äé? -l?íg?Í? “'?a>ÿÕ -?_B?ïß?ÿƒ? ¬é?uf?ò? g6? t›? C‡? od? IF?mm?õ;?Í?…^?ÄÜ?ñ?Í\?‡&?ëü?*?>÷^r?Qy??÷.?Él?Av?Š{?Ô>øÁ'?¶U?i?hK?oä?]?b?g?#?nÌ?þ@?[ß?¸²?ßË?õT?@?¼=?öê?sø?Mc?u??Üõ>øÍQ?Õý?‹È?õò?e ? f?.Þ?ì9?Z>ø13>øò?ú>óɪ>÷Ö>ÿŸè?ïO?µ?¹d?M>ý­?¯¾?÷Ü?v.?`?ã¢?§É?]e>ô›Ë>÷iÇ?k\?›?;$?Iy?± ?©>ÿ+¢>÷>üÂH>ü{?7Ì??¡ûªp>öTÚ>ô8? ?22?yÊ?9Ô?Òm?r›?6ú?Æ4>ûâ>ñßU>ÿV?\>ø2D>ï!d>ý‘D>ðö >ó3é>ÿG>þŽk>ÿú¡?vO?>‡>ùš’>ÿÄ:?Ó>?ýø?ò?#Ž?á7>ü.->÷¨>üñ€>è™u>ð8–>úc–>ý·±>ýoy>ök°>îNÞ>õ;·>ü¬s>øô2>øhæ>ömÜ>ý;m>ÿ-i>ý0>û>ý“Ú>ý:_>>õŠ†>üÙ>ý>÷C|>èá»>îPú>ò+>ñx>ãm_>Þ¬ >>óŒ>ôçý>óÕü>ívŽ>ï…>ïCU>õœ[>ídM>Þ¾Ï>ÞgW>ìVJ>íã—>ì„s>ì\u>Ü­@>å>ê«Þ>ìäÝ>ð4X>>êöÍ>ä÷œ>ì"(>è”M>ê–ñ>í&‡>í ;>æ7ã>å¡æ>æo³>åq$>ç1b>òÖ>ì{>å£>ïØŠ>î±>å?>éx³>ï@L>êª6>è »>ñØy>ðœÞ>åú->å_Õ>ð\>ð¯€>ì³/>ç5A>êõ=>îæ3>ñ˜Ä>èc>æ>|>ð€Ì>ï±Î>êÌ8>ãaÜ>ïš>îù×>î ©>é[<>먿>îºÙ>ì)å>í$¨>ìÎ>ìÇ>ßá¶>æÞW>îg|>ëð°>ç(½>Üý8>çv­>ò?>îí'>ï“ÿ>ßûX>çøM>ïÔ­>ïå>í˜å>àÁ[>ä<Ž>òÝ>ñÁ>íÑë>èá>æƒó>ëÇ>ïÉ8>ì À>äìm>ÜÏ ->ß»½>ë‘>ð]Á>äÜ(>ã>æ^a>éç9>ìEŠ>ïO>ç,f>åTy>ï[š>ìÝB>ë¢ê>ëd>å£>æO>ð+i>í³>ì…D>êñå>å…Ó>âD >íב>â´0>Ü’O>â³>æ†ð>Þžñ>ëx¶>ï‚e>íJ>î>U>êƒ_>áá >áu!>íC»>ì]ˆ>æz|>ãéa>ä²>>ÞÉ[>ݤu>çŽ>ëZ>éSh>æ­y>áw^>àžÙ>áX>êW”>ê(¼>éT”>소>â±>ÛmO>ÛË->æ€ë>æÆ,>éo>êx >çÜz>ãÖ>àˆ—>Þ¥·>æ>éÄ>éo6>êLæ>å ™>äo>ÖŒe>ßÏê>æŒ3>Þ9B>áú¢>ã+ >Ýå>ÚÇ>ß¡›>áïÕ>ás>ß×°>Û0|>áq/>äžñ>àÛ%>ß)>å(¾>ä‚'>ß/>äV>ã{7>çK>ä22>ÝD>Ú -->âaN>åsK>à,†>à:3>åë>ç3,>Þõ^>âq>å>ß>æWè>çwá>áq×>ß„>çQ®>âòt>Þé¼>ßÌ…>ß‚E>æã>åJ¾>àØ>äÍz>åÞ3>Ýïp>Ýg¦>äè¯>âÍý>å/>âÓ‘>ܦ>á=2>àBõ>ßxx>Ý@æ>ã¦Ä>âø.>ãY=>àƘ>Þ£L>å24>匬>á(æ>ÝyL>Ý -þ>á¡,>á€v>âî>ÞJ¥>ãžB>ä ä>àëo>Þ#n>ßï«>â©ÿ>ßÊÍ>ß~=>×Ý>Í\!>Ú73>âà>ÝNÕ>ÜÀN>Ù>Ð=>Ïv—>Ü£#>ÜÈh>Ü–‡>áQh>á­>ÙäR>ØF>ß}>ßmñ>Ò‚®>Õ”ë>ÝIÌ>ß>Ý`>ÜêE>ÙÙ>Ù;>ÕŠ>Þá>Þ‚ >ØBÄ>ÖoB>Ü0>Þ}8>ß[ >ÚÃÑ>ÛVs>Ýô(>ÐfX>ÕrÆ>Ù3ˆ>ÜZ±>Ú×\>Ýìˆ>ßÒ>Ü*>ÛV€>Û¸\>ݪ+>Ýž=>Û…¨>Ø‹)>Üù¢>ÝEÔ>Þ>Û£o>Ú‹e>Ú_à>Ýh.>ÛNû>Ôg2>ÔS­>ÊYj>Ö.1>Üdê>Ý™b>Ûß>Ùyœ>ÕGS>ÕQ<>Øáê>ÖáÒ>Ñ"¢>ͽ>Únd>Ûb˜>ÛÌM>Ù­7>ؽG>Õœx>ØçŠ>Û4º>Ùh@>Ј$>ÖMÓ>Ú¯Q>×ò>׺+>׌}>Åë6>Í5R>Ùò`>Ú.*>ÐÆ«>з>Õ×G>Ù!M>Ö&Á>Ùþ>Ù&>ÖEZ>Ô[¡>Ñß ->×”ø>Ú>>×’c>Ò`Û>Ôº½>ÔB™>Çp‚>Âþ¼>Ô5Ø>Ð2’>Í}m>Ï<%>Ö…ð>×½N>Õ>Õp>Ö5>Ø=>×iÊ>ØÈ>Ö`>Õ¢Ç>ÓǪ>Õ£ý>׆x>Ö×ß>Ó¢½>Ôáõ>Ô´—>ÖÿÓ>ÒAK=‰K -= þâ=¸EÈ=ÍÁ=á¹°=ïñ`=ìß›=Ù€A=Ä–­=¹Dˆ=²"Í=¢%Œ=†Iï=SyA=5âË=Bú˜=w[ê=ŸMl=½Ì¼=Ì^$=Éu=¹Kâ=¥»=“Ñ,=„zT=oeb=fNè=}"/=™zß=·ùØ=Êâ¯=ÊÉû=»@í=¦l¥=–êK=‘Gm=øÔ=Õe=or=”²*=œÏá= 1 =Ÿ#‚=¢R¶=­¡æ=º E=¾æ5=»Õ¿=·öÐ=»`R=Éà¢=ÞŸþ=ëЕ=ä<˜=È0/=¦Ñà=‘ S=Œ=u=‘*z=–×]=˜µÓ=–A<=’¤=’3r=›jm=ªàÂ=·‰=º7<=·>Õ=²kE=¨­=‘íl=fñ =4úÝ=(ÝÀ=L…=Š`a=²-}=;;=×bG=×”=ÛÃü=éï[=üd>0®>Ï)=ýƒŠ=ôÜé=öð>h‚>æ>ü>ô›>lÙ=ýT=ó{M=à’Ï=Çëp=±2Â=¢H¹=}”=¡Uä=¨ûŽ=°Ë7=º2;=ÆWÂ=Ï[r=Îe¼=Ç0m=Äøç=ËM[=ÒJ=ÒvÎ=Ì}*=ÄTs=¼¨8=·êê=¶ù·=¶ö=µÇŠ=·Oþ=À{L=γÀ=Û*U=äÊ=ïø=ùì>‡é>M>ˆ¤> Úi=÷ ö=âŸ/=ÐO™=Ã#¦=¼Gþ=¼öl=Çšî=ÞŠò=ýG(> ½Â>1ó>¨n>qP> -*g>…\=þÑŸ=ô¯=êyï=áqP=Øqˆ=Ë¥=¹ÈN=§kÛ=™àõ=Þ=ˆY†=…î=ŽÀB=¥÷æ=À¼L=Ôô|=á0¯=è ==çñÔ=Ý]å=Íc‚=È=Ú0’=ÿÃÁ>Ž>µi>!Rv>~O> >ý_>üù>Æv>ýc> $=쾄=Ç#Ê=®5O=¡ÄÃ=™:=Ÿ«Ò=¨–'=·Y,=Ç„@=Óæ™=Ú\u=Ýó‚=åÒ=öÃ>»µ> -žò> ˆ=æÜë=Á6ˆ=¦Fê=œ”=¢Sû=°rm=À7I=Ñûƒ=ëø¤>uÜ>Š>« > :> 1°> ¦>1>ør>^>¾>%m>'¥Ÿ>#ƒ7>Ïæ>éC>éN=òyÖ=Ý?Ó=Ïí·=ÈÕI=Áÿ"=¹ÂÊ=¸î=É3=äa=÷qÌ=ù%¤=ö>=þ˜ ->sù>üØ>‰©>Èë=øŠd=ä{¯=ß O=⚘=à“l=Ò¤È=½W=¦î==”Ö=‹=!=’ÕÑ=ª¤=Å=á=Õc =Ѥ =ºì‚=š£5=|.Ø=]=Z‡=nG¸=…öÎ=‘àQ=˜üZ= ð=«œ=´„ï=½=Ï͹=ó‚¾>‚÷>'Š>3æ>/A)>æ> Ù>u%>jL>Éd>± =ó²=ÞJ'=Ó†”=Ü¿ª=úb|>+>';¿>8­ý>DÞ >LP½>OÛ*>O-;>K5>Gj¨>Gj>GùJ>D9é>=0ü>8} >9?\>=´¨>B‚E>EM¦>DO`>>d²>4¿g>,|>)Ÿ¶>-Ïå>2Þ>4<´>0Ò5>'Í>•k>÷J> ÒŠ> -¦ô>~‘>Gº>½>ñõ>">+D>2Ó›>1âc>'§`> -æ>ž€>²ê>*…ä>AN>TÎð>_Ñ“>d¥A>h&•>lf°>nô>k7_>að¹>[áu>_š>i‰>s>yú=>|ß>v“s>d ¾>NÄ>A~ô>?ñ>@R>8è>,

    (`>.úJ>:;¦>D¥>Ký•>Q¶Œ>R'M>Kp>>n_>0üU>'>:>%…*>-é>8På>?Þá>AÕó>A ->>rÊ>6›Ê>'u>Ù>Fz>ÀL>%¡>=.è>Iø9>H»V>>&.>/|>#(ì>!ãU>-ƃ>=¸Æ>H¼¿>M2>I+˜>:SO>&i->›©>,²>+ú#>8\@>:Y>0 Ó> È >¢N>¢>‡6>%k*>4ð¶>?¹>?yç>2xÍ>ë1=üÜs=ÍøŒ=Âà×=æ>I>-Ô>=I¯>CÊØ>JRŸ>T~W>]ãŽ>`g®>WòÊ>BÜÝ>$Hã>Ôï=ÖÙ=Èn¨=ê —>;>6|Ó>IÀ>N|Î>IR>>[B>/²>±Ø>·> ˜Q>°5>e=ìy,=äˆÞ>œ> Ò~>DŒ>_CQ>k'Š>g—£>T¥[>6]>.>Á >Œ‰>>ïà>ÍË>=„>/Å•>BFÅ>Dŵ>=ä>?¶>Nõ@>[Å>Ww >D€s>.B>Ò&>΢>"Ã>7oa>Qÿ:>iÓ~>yÅF>€¥ì>‚K >‚¸+>~öB>oèÑ>a&x>Z_">YJ²>X=>UD„>Qwè>O÷>Nç—>O·H>R°Å>Y—L>_'J>Zã>GÎ>.‚>Çâ>GÎ>*¦´>C0N>[Â>pè{>ê>‡ÕŒ>ˆëú>†µ>€^1>r³|>hÒ>gŠt>jjd—>jø¯>tY,>ƒð©>Žª©>”¢L>’DÈ>ˆ ™>tg5>_¥œ>]×Y>lŸü>|ÓR>œ>€cA>zåô>p§>Xš?>5ª•>Ù×> ÛÖ>îC>2×>&tH>6a‚>H:T>]3>v®>† >Œ{>OÍ>ŽŸg>‡s>w¶>hÄ9>sÛ>‡Œ¬>“*³>“äÃ>‰®M>vZÁ>_Í¥>T’A>O 1>LZ¨>Q+>>^›>m4>sÏ>q3X>kÏ)>l¬b>uè>~vN>‚i>„†Á>…Ã>‚dÇ>yi>i©c>WéÂ>DàŸ>4Ѧ>.~0>6w/>IVJ>\ñu>k0>v/…>~ ´>{¬Î>luÎ>\ÅY>\’â>n±À>…i„>’)>–Pç>ŽŠ•>}ÆP>^WY>KqU>G-ž>IsÜ>MCW>T7>Xä>S4£>GüŸ>FÅ*>Y,O>y>ŠôŸ>’Øç>–P2>™k˜>ƒ>žF>˜ùI>Ž‘Â>…êY>ƒÐÂ>†±é>ˆÂË>…F¤>{8 >nÏE>hPg>_Zç>Pj>BÚÍ>DC~>YÄ>|>å>•þŽ>”ŠÝ¼>|éª>g >Vý>G/Ï>3Iô>!.ž>@>"=¦>:].>\d>yæ€>„Êâ>…Å_>‚Z~>z9P>u/>}¤Å>‡c„>„>Ó->ŠØõ>‰¦Õ>>“^w>“å”>·>…P!>ƒ_>†åÇ>>÷b>S:>‹¸c>†@i>„@Ä>†úÍ>‰è>ˆ‡Þ>ƒ>zÉ>kŽÇ>_#>\FÑ>d6Y>mfÍ>m—ü>d·‹>[É >ZúB>bK>mQ>xÆÜ>~š~>s’à>Sß">/7>É„>!èÛ>,£Õ>)S6>Ô3> pã>j>+0Z>DÓ‘>W>_wÐ>bÛe>de,>_—Z>N9Ü>3W>)>†=à:=ÔB†=ß¿•=ï{‡=ðBÂ=ä{•=Ý^J=å5·=øñ`> 5´>•]>6‚L>Zr^>uªh>{C|>tb>v ->„‰ >’"–>œ‚à> ^$> ßþ>£_>§Ú—>§UÚ>œH·>‹¢>x•%>eü—>[~•>XéÃ>Z¥±>TÂ>?bZ>+…î>+£®>AÑL>^V‰>oÎr>uj>}k>…ìT>ŠAP>ƒM­>`ƒó>3ïú>ñV>"ÍÜ>B€ê>g¿Ò>‚.±>‰/Þ>$>–F)>¥Yw>±è÷>µpQ>°x>£Ùœ> >aG>9•Ü>5›>GNv>[Ž>k‰ø>}%>‡i™>Œk>˜6Ã>¡è>¦y¸>¦*_>¡ã>™Ý>‘Î->ˆ¨Õ>~–û>nnb>]²B>L-0>E“ü>QÉ}>klö>…=>•G.>£_>«ï³>®ˆö>¯M>²:>·Ôä>¾ƒ<>Äž>ǸÉ>Æšô>Ãc>½Ñ¹>¶.‚>®‹Ã>«€´>­48>®¥ >­<º>©T¬>¢B>›ä>›)ð>¥A>±ïØ>¸€R>¸Ú„>¸ö>¶‡¼>¯Ó/>£šë>—(>Œ”>†€‹>„ק>Š¬³>“¬>›*>žËV>›RO>,…>‚$à>p‚Í>q©,>…º>šã©>±I›>ÀWK>Àȳ>´já>¦÷²>¡’S>¢Äf>¦µC>®€>¹Ô>ÄM>ÉZ©>Æðp>¿y>´4>¡£Ê>‰î€>l ¥>Z¯w>ZÉ">]Ã>^ýT>n&Ò>‰J‡> Ûø>¶.i>Ç#>Òœ—>Ô (>Ëw>»Ú>©/>“ç>n>8=0>Mû>¡Ï>(¹>O½>~ÍX>• y>Ÿô˜>š=¤>‹cã>…({>‹¾›>‘E8>Œp>|—›>Wd>.A> —‡=ðß=ìSp>u>ÝI>Eõ6>t:Ø>—>”Ã><»>w’V>RÄþ>6¥X>#Ã^>[]>¥U>3>5:>_p>7#°>iùp>Š]Í>™íX>¨”>³4í>±½Ê>d>{=Ò>J©«>CEž>[fð>w>•N>|Èù>pCç>në2>u´^>rÖ(>jÄù>uZª>ŠN¯>˜X»>Ÿ`*>¥Å´>®Ó@>µt‘>µªh>±ÖÃ>®ß>®Z?>­Ìã>­6î>°¾e>¸¯>½ð>½ô>½Ì>¿¤O>½ý>®…•>—“>ƒþr>qH->eÀ>ei>tÊ>…ÔY>‹N">†&>xÝ®>k¤»>j:¦>kU>bc ->Uš°>XMÉ>pÇ.>ˆ7ã>”ÛÎ>Ÿ Ò>¦öà>¨Ãó>¡ßÿ>”ƒ5>ˆöV>ˆXÉ>’Á>œëŽ>¡Áð>´>–>|ˆD>Z¢±>BSý>7ðÕ>?¥¦>N-B>Mÿ>5æT>yy>¹>*/>7†Û>/<>ºÇ>5%>@]>T> '>&> ‡h>"F">Á> 3N>"Å>M7>%w*>3t>0J6>\s> >õÏ>˜>&^v>G©º>bP'>m A>k‰X>e1$>ag·>`>W«´>Fh-><½>D±0>S™¹>U+>Jéz>B Ì><Âc>6ä¡>.Y…> ”>3Â> ý>ü><@>^ý«>o>kÕˆ>a”Ã>Z0â>U]>Lï>@§>/>l>® >’s>'7Â>HyË>u{>‹Cv>Œ^>{Д>W*ð>DKú>HIr>NØ>I(Í>L*«>j,>†y©>†×>lžt>WñÎ>_À.>v¦Y>‹1`>Ÿ»(>³OÄ>¾Ä0>¿Ñö>¸ßŸ>®ók>ªË>¯ÿ1>³™Æ>­PU>¤×>¥P’>¬kH>¬¶>¤l’>œÂG>•¥’>Žýæ>“K]>¥">¸„=>Ú>È$É>ÌŸŒ>ÒÒ1>Õ°7>Ó¶‘>Ð[N>Ëî©>ÅÕò>¿Ë¦>·¥c>©¼+>˜£w>Œ„3>Š®Å>~7>˜Šð>œWå>—)>Š¢†>s«F>O‘o>0Ú7>›>Ø(=å35=É$U=½8e=ÃôŒ=ÞD+>™*>%²ú>GĆ>g¹Â>~èƒ>„ÿý>…Ü›>‚Œ>{žF>‚Id>•Ÿg>ªâÝ>³j>²Ó/>¸EQ>Åc>Î\ø>ËkÔ>ÅÔk>Ë5Ã>Õc>Ó›ÿ>Çø>Â}™>Ç2Æ>Ég,>º +>›Á->~}¾>f;c>c„á>\Já>DáÜ>"ÛÌ>,=ß/‡=ÚÁÓ=üœŒ>(d>B>c½9>‚Í>”‹ì>§6‘>¶±æ>ÄôÛ>Ô»ö>äâ>ñ Ô>ôPd>ð m>ë$0>êá>í©t>òÝ>÷Î?Iô?±?7?Š?ã|?8?–Ô?Sœ?µž?íÁ>ûÎQ>øà ?Rè? ?{?9?̶?_?*>þF›>êë­>ò˜ú?¿-? Ön?d?y…?¯,?ø!?x€?º ?#?L1?D¹?Ëâ?]™?Í’?õ×?íl?–…?*¤?F_? ?Ô?NJ?"5?2ã?c!?p_>í¤k>å‹x>åè>ïÆ6?#?Ü»?Ò?$¤?"|q?ÆH?à ?Uf?Óò?[•>×aâ>¸Æº>Ħq>îÊ4? ’½?Ö?ÈÉ?Þo?[¼?Õ?bÃ? gŽ?ÑÆ?p*>ùÄû>üàv?Ë—? -?å‰>ïgj>Ñô¼>Òvõ>êjÛ>ýÞŽ?e÷? rå?D?Ê,?o>ñ›}>ÿMû? 'Ö?Eì? *>ùÔ‹>íøž>øYn? Í?|?!¡—?"e[?”x?<—?9?Õ?!&Š?+ÉA?0ƒ¿?-Ù¬?'è/?"¯=? Y?!‚}?'?5öË>îRF>û~?Ñk?há?õ£?Ó?ÿL?€ -?f?D9?'î?¯“?µ»?"ÆÔ?$Ô,?$x­? ã8?l?—è?p›? ?M?§a?Çý?Z?În?ÌÛ?S§?& ?4l? - ?üÇ>ùÛ7>ô˜ú>ÿ' ? -Îj?T«?Ê?–ý?„U?Ö?0? ¢…>õôÙ>áÒš>îº?Hì?ýæ?D?µê? =ù?äU?PÎ?X4?â´? ?Ræ?%?'ª? -¬Ù?ú?¡|?3ä?}E?!/ƒ?G$?vœ?A?¯ý? qœ?ÆA?B?ül? Že?êë>ù°Ë?Ê ?š ?À?<_?e÷?qä? -'¹?‚x?E? -wô?‘?ü?©1? o?p›? k!?ï? È? ?âÃ?~3?ãI?L–>ü)F>õ6>ö­>ÿ3¿??Ðë?ž?ù ?Kí?? ÔP?%ðM?&ÑÊ?".‰?ô÷?ŽK?!Hß?ŒÒ?.®?:f?n¯?<?#1ø?-±•?3 ê?4üÙ?0?#¢l?"‹>ý’Z>ÏØ>²ìÐ>ÈAô?À´??* +?-(ò?&®,?ç?Mø?—æ?˜?LØ?I´?\v?B‰?%Î7?)d?+cò?1}Ô?5…þ?/é?#±ã?™o? ‰ ?µ¬? - -?±“?Ú¬?,—? Ü•?šM?%od?&SÜ? ˜?Ë‚?Ju?&?$.Ž?2Ét?8¯?8ð´?4/@?*¥?í?³>þŒï>áë.>âLê>ñ9¯>ý~˜? ïñ'2>Ò‚o>Åçö>Íz>ÖÇ>Û’>ßF·>Ý£^>ÓÏ#>Â\8>±ù>±4>Àô²>Ö¥>ï—“?êí?§³?*W‚?B?P‘ó?QðÈ?N -`?HäÙ?A–ª?5c?Àø? -Ï>寰>í> ?8ù?.þ^?@Â?C‘L?BQÐ?Dli?HAp?L&§?Nk?FµW?32??ù?Íù?ʾ? œù?±S?-›q?51ð?<§˜?B¥?C—*?GÖ?Mh?F’?/¹?bé? ?*•?2=Ã?7ïJ?<ÞÛ?;_›?6x?9ý÷?EO}?K³ù?K¤n?O¬?Sø?O$n?Cê?<¸?;åõ?<(Â?;Ñ?9Ü9?1Åä?% ù?•Ô?&Jù?4cŸ?>x’?? ?9Ýt?-xB?c>ëÈv>Ö‡>ü -¦?ûG?)«?*S)?'Â?%â™?)Í?0U^?2ì?0õ5?2¼¢?=B‡?H?H.¥?>>?3ʼ?3¢;?5Š'?'‘¯?e`?™z?7p?'‰þ?.£?;¾n?Jòv?TÇ?U1H?AÒ?b>Í?l¹?nÓ+?gg?Y»?O³Œ?Pë‚?Z™?^Ô?W„†?L¡û?K/¾?Sç¥?_¦¥?go?g»?b’?bäÖ?n$’?y\î?|ž?zPx?u¿?r|Ð?s3™?uÊD?tä@?n4S?eæö?a7?aï6?c×Ý?bn,?cŠ?iùå?p•?oˆy?gïf?aÃ[?[è?Qâf?Fvâ?>sƒ?<íÃ?AŸÇ?I?PPù?Q4â?J/ñ?FA[?Pê`?d8?lË?hž?a?`è?d¿B?f…?`È…?]%ï?]îW?]e?W¾?T¬_?Y,9?\ü -?[õ?Xuç?W¹†?]t.?hPf?pçC?t$Ü?t¤»?tõˆ?qÂÇ?gGè?[­|?Y';?bŠ?n[?q†0?m¡??fQ?d³?lªÙ?u+?u™ß?s§é?qˆ ?k¬”?`;?U9„?SÔ®?ZXœ?^$è?\ ³?Y9?\ºË?g¸è?qº0?sAÁ?l]¹?cÙe?`SÎ?_ÀÆ?]œP?[Ï?[ãå?^Œ&?`¾?`S?aÑ?c¥=?d\ù?c‚ ?e9;?m7v?xDë?~ùû?|?f?sͧ?mŽƒ?lR—?p Ñ?tß}?vD8?ur&?s`?qš ?t˜è?v§E?un°?u;a?tŒ¢?r¿/?säç?v+2?ul?u«×?wÜ#?v?q?oGÅ?o!Q?kSa?e 7?aœ¶?bQR?g`Ö?m.?mp?g„ ?_6g?U%Õ?O½Ÿ?S|j?\ˆl?eÔ2?l§‚?o]‘?k‹G?dF`?açÖ?g‹?s Q?}»‡?€3Ñ?z.g?pR5?hv??cR~?Y«?H¾T??5?H:?[«s?jF™?n#×?kB¾?j&5?n˜ô?sý?r ?hÓè?a_/?_th?aC¿?fî{?mœq?pm ?pü?më?kLÍ?iúu?i ?gÉó?hq#?kô?qB¬?u‡h?s>Ô?ih.?`¯,?^Ÿb?\ä$?W©9?Ué*?]Ø?dž?d& ?_*f?]7§?aPB?iY£?mõs?kØ?eM9?f™ß?pžÍ?yÜ(?~ùp?K¿?ª»?€+$?}òW?€À?#«?|;'?mm1?`-¸?[Êy?^sC?e#ç?l#)?oø0?pÅV?m!„?j(Ñ?oý€?vµ2?v|?t@[?vÉ´?y±?y ‹?zŠ?~JÎ?€n?~èÐ?}p¸?z‘5?u~M?pS-?lz½?k\G?my“?r_–?x" ?zÖY?v0g?mnÖ?h ?dn?_š?_k%?gJ?r§?y!9?wæ$?sä¦?vwp?}ø—?€Î!?€µe?”?‚U?©?K[?z¼ó?tƒ[?s5ú?tmQ?q<]?p'K?r/?r'®?s -?v½ó?}{×?ƒf?†;w?…\û?áE?zz'?sí?vÞ?›?‚¤®?Ý?~Ií?zEÄ?vH>?tLö?xQ8?}µb?Ó?x?€›?¬ÿ?ƒºÅ?„æ?€-Â?yÔÌ?r -œ?n)?j"?]›ª?P»b?Q+Á?\N ?l8?xÛ0?zùJ?vb@?r=¢?ss?tM3?uCÒ?x‡>?y!\?v(?nj°?eØm?aÞ?bi?c+h?[êW?Q¦å?VO?g|u?qBþ?mä8?b 6?Uèf?Qn;?V‘3?\•V?[lZ?\Eî?b¬?c¼é?`%Þ?cÖ?ip5?j?dv²?a¦É?i,³?q6ó?vµô?}z%?~òp?sšð?eú›?d8?b?TØà?E?G<$?^$/?rÄ ?}¨ý?H ?s‡¼?cô?^sy?`–?e©Ì?nÏh?w[@?zSÓ?zoÍ?{Í‚?}]?ÒÇ??E?~ïö?r\?fb?f³Ã?h©$?iã?n†?p?já?i–Õ?l–-?mK»?nÇx?j%Q?Yi ?OÂT?WDÃ?_â‹?dW?j¤²?p”?pØ(?qÃË?t›T?v}@?y²ˆ?}ñ7?|Î|?u¦µ?j@?\¢˜?Uâ:?_¹ª?odÜ?tv?p^*?l*4?h|À?b¤æ?_ø©?`…“?dõ'?n˜l?t¹ƒ?v~4?w.n?yò®?}KD?|%µ?v3?n"?e Ï?[­Å?X:d?[Š?^ÙÅ?_uÙ?a ž?f$«?jFK?jé]?mO9?oÎ2?hÕ?]e?V¦Q?Z°Õ?^ê?[S?_®u?d1i?`j$?]4â?`s#?dU©?b1Ö?_Äõ?`<[?bîf?h¦¤?op?s¦?sýk?qþ¿?j¡Û?a}?XÆ?DZº?(h©?)ô?$Lr?7D?,ž4?ܵ?k?D{¹?`Ç‚?ièY?l[V?h?XG¼?8¯?í~?Ïç?5¡4?X߯?f+)?j$³?ijŸ?ZÀ?Q®6?Yµ?_G?b;c?iÔ¬?qÁ“?w$?vÊÅ?q¼Š?i¬ã?[û[?Q‹—?Oˆí?MÑò?T2Æ?e?t¨ÿ?{ ¸?tªÄ?g×q?c Y?j4Ë?uSÜ?{¹­?|O¬?w1b?km?Zz?Ii$?H ¿?\tr?mlZ?qhI?iXw?aŽ?eÆ ?pÓ?zÏF?€+Þ?€j®?€D[?~ž´?}?€Z?€mæ?wS?pi?ok‹?ml?o¿?sš›?qeþ?ozs?x‹y?‚94?„9Ì?AJ?r¾^?^¾í?NÆŽ?Drh?Bw:?IøŠ?D¤$?5ÚÓ?AÎ[?[¯ ?f‚’?fE§?hãá?w…è?‚¥?€þ¯?vo\?k8D?dæ~?ir ?záý?„g²?…¯Ô?†Z(?ˆ#î?‡¶?„á¤?‚“1?~ñf?pqû?bË?f*¹?qÈV?u¨û?zâ?‚xN?†U¯?†!B?„Ú ?†…?ˆ'b?ˆ¯Ë?‡dÛ?…ƒ2?ƒg ?€‡—?¿ -?ºi?‚“J?Û½?~[²?r¬a?jlx?io?Yô‰?Fœé?SKî?oå?{¤*?}Ð?‚P?„ÎN?ƒöÐ?€ós?te?i ?q£?~íA?d›?~@Ñ?{Š?y§1?vé8?|@p?‚h;?„4?…Ò£?ˆç ?Šª?ŠÞÏ?Š9>?ˆ4?…‚¾?‚¤E?€ ?{5º?z!®?x_?p‚?a£?\æ?l.?€‡Ì?…b„?…Ub?ƒîç?ƒ‘0?‚ƒ?€þL?}Ò÷?}ñ”?‚Âd?„P‡?‚¦!?€ o?zJS?vÜ?s;„?r™æ?s>?m?fHË?m÷ò?w8 -?{£?{Ù?m4?YåÐ?W¼?eñj?nÓ?l,?pCr?|§?ßA?}˦?;¶?„¶¹?„#Ê?€®J?}™>?}EP?v—@?vu?’†?„6Ô?»ó?xc†?s8b?vÐ?}t;?a˜?„T+?…ç,?…_×?„¼©?„rž?ƒc?€g?uø½?lé)?sþÕ?€M$?é?>}?Κ?4s?€Ã†?Ü?ƒ©Ë?…?„&?y&?Ðp?‚w2?ƒÆ;?†u§?‡ ?‡+t?„Êw?œZ?E?ƒ…?ƒ?ƒpŽ?ƒ)O?nB?}ÎÆ?|¢`?|Cª?{8o?{}°?z -?{¿8?zó£?vmF?|…¸?€ˆ2?€Ü?éˆ?‚°¥?‚Ç“?ªA?un?~/»?p9:?b–ÿ?aœõ?jqA?t­¥?xvk?vx—?y6?rQ?€ñ‹?y¸?u_À?o²+?müÏ?yËä?„ä|?ˆ(^?ˆ ?‡™1?‡²=?‡åÂ?…›g?xáÖ?fÈO?mÿÞ?|E‘?€/~?’‹?‚É?~3?sN'?v{€?á¦?ƒE^?†|À?‡ŸR?†(½?ƒFÃ?€Ð?}ú??|Iß?j*?€S?|’€?}cR?€?{ü?ƒÁ?ƒFÊ?rc?õ?ƒ?‚NŒ?}?{?x1ü?m"à?oJ?w'?wu?{³|?¬÷?ÌJ?€/€?€”Ý?½Õ?ƒ|f?† ˜?†hù?„ÉÈ?…4)?…[š?ƒõá?‚§·?~-_?y0´?|q9?}©@?yê!?yì;?vé?‚KB?ƒý3?„ ?ƒÞJ?„ah?‚*ë?~P\?{N?x€ž?{Ã?~E§?yŸ|?rL?lB*?gõ?i);?n¢1?y‘ˆ?€zv?‚:q?ƒ3ï?„¢?…J?†H?‡b?‡¦?†¨“?„Ys?ƒÓ‰?…UÙ?ƒì…?ßÀ?ƒØR?†Ad?†L¦?…,1?„¢H?„È“?„›¸?ƒ×?„vé?†1?… -O?w]?®U?„.@?‚'M?y”ö?vUe?…9?„I¾?…>?ƒ4¨?cî?yŸ-?}` ?„G(?‡$î?‡¯,?‡lb?†~?„»¢?ƒŽÁ?ƒ&M?ƒåŽ?…¥à?…«?€„•?tF3?pr?r»?q³?uÑí?€Å?‚Ã-?°?€W?˜Ÿ?†)€?†W.?„›‡?‰Í? Ê?„E?„‘T?‚ѵ?„[(?†yÕ?‡'2?†¼?ƒH=?‚|v?„Œv?†M?„ua?8?[?‚ü×?~·?Ø?ƒg ?ƒ9?‚t2?ƒ¬%?…•…?†Û?†ê«?…Ô4?„é"?…½]?†ŒÁ?‡@x?‡µ¬?‡4š?…T?‚.ˆ?€„e?¹5?„¦r?…ó:?ƒO3?~FÆ?}¬±?)w?ƒG„?„È_?„b:?„…å?†9?…Ú¾?ƒ.$?€¦¢?Ã?ƒë€?ƒY?‚-H?ƒÝ?‚%¦?}0›?|„j?‚¨X?ƒcx?€£?€5Ç?€ ¼?€tD?€«?|Me?z4;?}Oé?€ý?¹T?‚t:?ƒ¸?…-.?…Ø?†Tº?†?…î1?†?†´‹?…œy?„kÒ?„?…º?†¡?†™Ã?†ªþ?†ó)?‡P?†KÄ?ƒãÏ?‚GO?¹?ƒqà?…Àß?†b¦?…JØ?ƒ.£?€U4?æ¿?„H&?†õ0?‡-Ž?‡¬?‡PÙ?‡_S?†__?ƒi?€xL?Vg?‚/^?|~?½>?n8?‚ƒ?‚«F?€½–?¹?€`µ?Ç"?ƒf¾?ƒK·?ƒQ?„5?€Ä-?qÁ?qÕÝ?€½Ã?ƒAv?‚©3?ƒÌ9?ƒô+?ƒ]?„æv?„œ¬?‚È??ƒ5:?‚†?}2™?sÆ‘?y)D?è6?‚°¶?µc?jm?‚±O?„²?„³A?a?nto?eZJ?v͹?—??Ñw?9Þ?ƒÔc?„Y?‚ëÅ?Ú©?Ò¿?‚sl?‚š²?€5½?~êp?€ŸÒ?C?xaq?cÄž?`œ³?pFù?{|x?~fµ?vfN?p -Å?{' ?9f?jí?o?ƒÉ?ƒ%o?ƒ_?„;?…fu?…Tj?ƒt??ƒ?€µD?}5k?tñÂ?|Ô?ƒfë?… q?…Ëï?ƒ2?€ -8?‚M?…G„?…ŽY?…êË?†‹?†Œ”?…½H?ƒÕº?­K?wÁq?wïb?~«?}±…?yä?~¬ÿ?‚¶?‚+a?‚R?¥?~Ô¢?s5?oËð?y(–?‚/5?ƒÍ?wŠ?V?}v¾?|»ç?xV?tcÓ?sìâ?y?&?€ñ¹?Ns?y-?oçý?o¾Ë?qpÑ?oƒ?oõ¦?xˆã?€]?‚2ù?€9ˆ?V„?¶Z?€§Ÿ?}Ú§?€m?í?‚\û?…?z£N?pçà?n|Þ?sÑ?zsÝ? ?€ç?‚¨3?‚(æ?|‹B?yF?{ª‰?}»?y/¹?t-Ô?q½h?l׎?k´?t8}?|‘#?}?€>[?~öê?zãK?yëŸ?v/¦?né??nO¡?kv¦?p:-?x›?yÙ†?~£?€Èù?€9 ?r?~î?}“¬?€cÚ?|e?qÆh?qT?uèc?z±}?}#[?w©á?u/¯?{;‘?Æ?€t;?€ù}?9c?€8¬?{N?zË]?yá8?t‰Û?rQ‰?o¨ù?q{:?wHú?|fS?€”ª?#í?€å?‚V?‚Êð?‚nÞ?‚M÷?‘?€k²?€ ?€×>?€¢­?86?ƒ£?ƒÑR?ƒ¡Ð?U?w¾?u¬/?éÎ?¸Ý?yÂL?n‘?y3?ùû?‚>¯?~î®?t,?v¤É? Ø?ƒ# ?ƒE ?ƒpt?š?r?i?kíÀ?xÏl?í?{‚à?xéƒ?€Ì?‚+c?};x?o»Õ?s"L?~'^?€ÕÅ?=æ?{L?y^Ò?}!?}ý?}=i?er?g?‰Ë?x‡ÿ?x[£?~)(?€ãW?z±?€»?|§w?tq›?cx»?Xx÷?a9?lfÄ?qI?wÁÈ?|œ?~ß1?€fˆ?€™ã?hM?˜K?€‹{?€zà?~C±?yö?uæU?v€?|q™?–?@à?}»µ?yaš?y§Î?|²þ?{õ)?xš›?xÙü?|ÒÌ?}½2?~%À?Ý?~^Ó?|Ìá?wض?r&ã?v®É?|??{±?y`N?t±?níÐ?o­?oÜ?d«Å?D3?&G2?@„®?dÿ?qÌ?pæá?q… ?rǵ?o¬o?oz¦?vw9?|z÷?{Ì+?xBŠ?x$?y:$?xAí?xF?{ø¹?{©æ?r>Ô?g}Y?m¥‚?uóì?uƒc?wˆ?{¸¯?}$ò?zˆA?xH?vi’?qãí?rŽ“?y -è?zÈ„?{‹?|.€?|6h?|ö ?}aN?|e‘?yEU?væF?xË?xЖ?xÙ¤?uð“?nL+?k%ƒ?s'Ä?y_±?x"?wy?vcç?q5ƒ?spœ?w]X?x_ƒ?zË?{`e?z]˜?yët?zŒ?zš«?z ’?x ½?siW?nJÜ?q`?rÌq?rßL?v¾Ü?y¢?z %?z¿?wG!?n4ö?l·?u'û?y¹–?zšq?{X?{/?z­f?zõ8?zö‰?zbB?wù´?r |?oçæ?rß-?vãÈ?vúu?rí?q]>?tØÍ?v Í?tªþ?sµp?qö ?p)@?m*`?iI?n'â?sª?tX›?v]î?uH?rèj?t›?u³;?rð½?rÕ?t'â?u™Ð?sBú?pì°?r `?q?pö$?rý«?s ?pÉÂ?nª·?pÖ?qÊÄ?sO?t1X?uÕ?vð$?wa?vä»?vmk?tî?p??oô÷?qõ?p6%?quÈ?sš4?tæ?t|ç?uI?to?nQÿ?h¨ ?i¥Ó?o9I?s1?r/?s Ê?q±†?nØ?oRZ?rZ—?r~p?ròÚ?r©ª?qØ*?r*J?rXg?r&¬?qʺ?ršÑ?p(I?pè†?uU×?u?pçš?qv_?u¡o?v{?r7?kY–?m?s8#?sÏF?sÿT?ty¼?rÎU?p;˜?j›\?fÃa?ií­?oà?r¨¹?tkØ?t\W?qü±?pœ?gà|?cñ·?h|ó?j.?f×?i†ø?qô½?uKÅ?us?tPƒ?skÎ?p©R?oôé?o‰?qÔ?sè®?n{—?p D?pB?p3L?kA…?iùó?mR>?n?lÞû?j ”?jÂr?n¦O?nL?o ?pQ‘?m½‚?h€?eÆm?hð`?kös?j'?gt?hZc?h“ ?jdœ?m ?mÙ‚?lð×?k;Í?lÐø?mʤ?o»?nC?jj¡?kËí?l®?fbN?]áû?Yô§?aÇ??iC½?mXh?n¡P?nz%?lAæ?lÑŽ?o(?nÀˆ?nSA?mó‚?jï¿?fäL?i1³?iàª?g«?g0?i®‚?kf(?i™1?häÓ?etY?[¤@?_]þ?jÕT?l{a?e´§?`I­?cô£?i4Ý?iTç?h`?hþD?gØð?gSc?fÿ?d¡–?kÌ ?oUl?mTb?k]j?oÅ—?rÃæ?pfñ?kS—?h×î?j¡F?l Á?j¾?dœ©?c·%?fÕ?g¬?dë¶?b ?f¯?jê²?k˜ê?l t?k¯(?k ÷?jOÛ?l^f?hzp?`ˆ??a¬÷?e§Ü?dÑ?b?d´'?fÒX?g$â?hhã?jE?iå?i%©?jQ}?iŠÆ?e‰I?eç?bêO?`u?cÛ?f0¾?fÑ?e³?dÌ?ahË?c•'?fÌo?f]p?cKi?\5í?]=¢?d=@?gm?h‚?h/ª?f™º?g§?eíõ?eµ¬?cÂG?\o°?\0?bâ?fP¨?cÒ>?du÷?h‘?füÏ?e¾—?aýÉ?XDÚ?\϶?hqØ?jP??j ý?k?gÁF?bT?c‡±?`¤?Xw?^´Ì?cÕD?^ ?V²?W0?[­?YÞj?ZN„?`ä¦?c2º?e;“?c;¿?b‹ÿ?g7?`Õû?Vvâ?\î?e9æ?c·?^¢„?_=€?b“i?b? -?^t¢?Y$…?Yú±?`Ø$?aV?a?g=à?iÈÛ?f³V?aÙ?a]?b è?bí~?eõ•?a‚?_Ý#?f%ý?dû?]¶á?^ÕÖ?a‚?bPW?då¦?a@Â?V„’?VÝ?_=—?b\‹?e—?eûv?d‚C?b ?aÆ?a±Z?aïŒ?a+@?_þš?Z>o?Xj?[²?XJ!?M%?N(µ?Qßµ?[ Ü?aç?`„‘?[s»?Y.Ú?\l$?`Vß?]x`?UÀ-?V­Œ?Wá7?]¿?cdÏ?bh?`]j?^¤>?^>?`£?]åì?Y q?\Ë?\:²?[ôÓ?]»?`(?d”Å?dOu?b~Q?d[0?bö?^n?`?K?aR?`??\ñœ?[8?UëS?U²É?^/²?`Ê&?Z›p?WäX?]6¶?`âr?_x|?^¦÷?a"?`\Ú?_žÿ?aÕË?d‘P?aàb?\ã?Zˆ9?TQ™?Q^ð?QÁ ?WX¼?ZÙý?Z0?]Î)?^Ól?Z8v?Vÿ?ZÒb?] Y?YÃÁ?Wý?O®¾?Q -Ä?VfŸ?O»?NÂÂ?UX ?WcÖ?S6â?O·?U¶w?]$µ?^Ôß?\Q?Z -^?]=É?]‰s?]O/?]i&?X6?T©5?Vµ°?SZI?T\:?Z@Ã?]€‚?]›x?\Î ?^gQ?^Òb?[y?Vm¯?RU3?Xm -?]Ù¸?^è§?^·?\P?Y2?W ò?Wòa?ZUt?Z.Z?X »?XVË?[w¯?]JÇ?[ÈÇ?X#¿?VÒ?Rôî?M~g?U,Ù?X?X¾q?Z¹ ?Z&_?VΛ?V?V -??N/-?Qþ"?Wãþ?YM?[5å?[o´?X`?Q_?Q¼,?U ?Xös?WM3?SŒe?TX·?XZƒ?Zß?X©µ?Vfš?V¾°?Y[M?XÁ%?V)2?Wì6?Xe±?VÒ!?Tƒe?SaY?V«f?TK‰?Sqù?Tðÿ?TÑx?W+\?UBÝ?U‰?X&Y?UGè?S–Â?W|?X”?Wt¯?Tkk?Oî ?Pn ?T3#?W/?VÓû?V½a?V¢?W)?X Œ?X:Y?U\%?TóÕ?Ul?Tâž?VW?SH"?U??V(§?Pù*?J”È?Ià?MØŒ?UE®?Wײ?XÎ?X©b?Xe?XrL?Wÿ^?W¯·?Ws?UÉÄ?T°,?Vÿ?Wóv?V2ó?V?VÚF?W#ž?TÄx?NKÇ?KÏÕ?Ih?Eèã?H°?H¯ô?A€‹?LÊ?R€Q?Qç>?Sã?TÓ?V¡ö?V‚n?SÁ:?Q<¹?TZ©?UD?UGŸ?SêG?Rl›?Tw?UN‰?TæI?R—?N?NÎæ?T,Î?U-?U”?U?P™Â?G»é?FœV?ID¶?O(Q?QØ?Pš?Né?JS?Gºý?I´ ?LÎ?QsÒ?R‡0?Q\d?R -T?R±?Qܱ?Q?Mq?L¶>?H°?B)®?E¬”?Mý?QV?RÐv?SÕ¢?RÊ?Pž?Rá?R½_?RÁ¥?SrÚ?RW?NsO?Mì?N8Õ?Pðû?QÚ?La¬?N¶­?T9c?UKp?Q/°?Lt?P¤ˆ?Sž_?RPÖ?N²ø?K't?Kë ?P:ã?Sƒæ?S¡I?OöÞ?Ný ?LKî?NÙÈ?Sl¨?TQK?Tÿ?T Ò?T×?W ^?V ?Ré?Sñ¸?RË?Jc?Iæu?Gá?MíÅ?Q»×?RÍg?Rf™?Q,5?Q?P>*?N,B?Q±P?P{Q?NPM?S?S†Î?Pä?P‹Û?Oc¼?NÕ{?N”×?Lã?Lëm?NvT?M¨#?J|n?M.¿?JX6?L‚?O-¡?L,z?KË•?KøK?InQ?CðÁ??/ ?E‰?MxR?HŽ)?E×Y?M§?P«0?HHó?C>i?E6 ?H†?Jš?BˆÊ?E -õ?GÁ?A?s?CG_?Bñ?FÜ ?H´?Eó\?EDº?F¢=?F?F„J?Fä?Bö?CŠÀ?FMJ?Fw?GÅ+?GtS?CüÑ?F2v?FfÍ?FËÞ?J6±?H5É?F`d?FM˜?Dë?E?ß?H$?Gè?CÄ?Br?EíÈ?Eì_?Giô?I˜É?F},?@cC?D±Ô?GÄ?Fkò?GU½?HU?Eë?Fý?Gjª?D¯Ø?Bä?@ „?@ -?BAî?BùC?I`Ü?H?r??k¨?<»§>??€¶?<“é??8?Bä?C›e?EP?C*5??Ðc?@H?=…?5¡ÿ?=,?;Ès?9H¸?@¨?C -û?=ä?? -)?AhÎ?=îÉ?9&?< ™?@¤t?CBû?CFª?BÞ­?A§?A-˜?@åñ?=Åù?;·•?B ?C €?Aó|?C¾c?DüX?A) ?B_^?Boî?9å -?>ež?9òÔ?7 ?AB—?Fw?B$Î?=’¡?? ÿ?A˜Â??óH?@u?>o?>´?=Xj?<…±??\÷?@âŒ??!i??`Ê?AÅ??’+?;æð?<}Œ?CIV?BÖ_??w3?5<ë?8k¹?9°ç?ÄË?@ô¿?B¼ ?@‘×?AÆF?A²?>8q?1@? ?h?1WÕ?7îT?=æ˜?AE‘?A¡‹?>L?4û#?1}?9´?<$=?=°²?>zo?<"›?9f’?<Êu?=º±?=&Ò?7–´?,oº?Ǩ>ý™<>ÝÞi? eÌ?&Cb?/öï?65?;hà?9˜‰?5 `?: f?<×L?=:î??8ö??†Ô?>Œ?=3G?;>»?:òˆ?<+x??-Ô??Cï?8_¾?8ßP?;¸€?<»¶?óÆ5>ù”›?;?//?4Nî?5«?17Î?.í?7?5Fe?4Ì™?7[õ?8vX?,]"?&´±?5[Ó?9WI?9»³?83N?3•c?6L¢?7¾%?9L(?8Ïæ?5Kò?2TI?3H?9zG?6S'?7[£?:ÏÚ?:èò?9b@?4}¶?2ÿÇ?8v“?8}?0 -¦?2 Î?7¼?4Ãy?5ã?8Àb?7t@?6¦Þ?1áx?5ÁÜ?7ï?4_—?:J{?:.?4Æ?5ÌÑ?8µh?8vï?2á–?.ƒ¼?7+–?9ÿm?8¦!?9`X?8š?0×þ?3K?1 -u?.ÓT?/Á]?-¸-?*ì©?*GÑ?.—³?0è[?3×?4D?3 e?1ç|?-¬Œ?)–?)<ê?- ˜?11q?3¼µ?3*?3´+?3å?2~þ?2 ?-ð8?+’T?/Gâ?2Q—?/×á?+,C?,\a?/,Ï?2 Ü?/úó?0|?0ã?0Ÿ?0÷?/cÚ?.Ò=?*z?,8é?1žä?0ê½?+Óe?$µ?#Xß?"‡‹?!½p?(p?+<5?(¯7?)ÇK?,Y!?-YM?-$_?.Pƒ?/óá?-g?-É¢?0D?0µ?0. -?0?'ñþ?'mñ?$n}?%hO?ØÇ?dù? \?±…?"|¶?"Ù?"kû?"¤ó?&{?#ÛV? Âd?!·u?!J8?#Í8?ò«?0.?!žØ? H?!;!?"^?%?%‰?eu?ä?ý[?&y¹?!º?¾?=Å?M"? V?">Ú?wR?mÈ?oë?Þõ?¯‡?\2?UÑ?!ÙP?Î?dÎ?†‚?gn?ÏR?íŸ?!ÄË?$ -«? ÿË?!…?%âL?$k¸??%?!š?$Ò?#÷'?ë#?Ÿ†? Ÿ?"i˜?R°?^¾?#€w?$p+?#kk?‡Q?!ÍÌ? ùú?"o?"I?Òc? Hq?!Ý¡?Ëw?!L.? îU?$ÇÙ?#Và?¡Ì?#fý?"=°?#ãÞ?"_Ç?]’?! „?ã? 5j?"s?üû?*?–ì?Êã?"MG?"gŒ? ¿??6 ? Ù²?"ö,?Á£?Ce?A/?ð…?-'?‚5?ô?êZ?Žà?M†?œ~?-Ý?9ê?†{?ÉX?´,?¤È?Ë?¦ò?§E?ïY?Þ,?þ‹?û}?†à?Ï ?»a?Eû?:q?Û?ÞÄ?˜?[w?9~?Ïp?+?Šê?ª3?Ïš?á??%Ó?ˆ›?±I?Äï?û?´Ü?eÞ?*¨?°?ØÃ?Ÿ¨?p}?.F?d|?+ð?ÞÆ?®¹?I‹?Üõ?7O?UL?òP?Íá?‚^?gª? þ‹?Í'?>c?m?ˆÖ?M?pA?ò?c£?Á? ´?p?UŠ?e`?‰ð?“N?Ì°?@¡?oé?~ ?)ë?E°?tx?¾W?³ ?sç?™?¾?ÆÞ?\÷?c?»m?oª?8.?؉?tî?ØÇ?k:?A~?f?èØ?«ÿ?âö?†?ˆö?$2?™?ÚT?o?PÉ?z¾?ÝÒ?$¨?£ç?~„?BÆ?Çæ?-X??-P?aå?¬‰?ã??²?v?_?¬œ?¾·?´d?¢8?Ç? -Å?ÁÓ?7”?‡×?mV?AÌ?ºˆ?‡L?M†?È°?˜k?@ò?w*?®>?¬?Å?X?…¢?m?×ç?A?0Ò?Ï¢?à?ùÉ?i¦?¼?~Ë?°?EÁ?ä?Mt?v=?ËÍ?ö?ü?BW? -3?5§?„(?ºz?ðà?·?פ?õ?úÎ?k ?š=?†z?b6?Gà?%Q?q:?åÙ?+c?+!?!? ??»?T?5?fÜ?ˆQ?nx?ªö?ÛÀ?°Ä?¼?‘¸?; -?™ƒ?4?/_?PÎ?;¯?Õ‚?í?4û?ˆ?Îä?9à?¶?Fq?p*?ðÄ?t¥?õ´?¡?Oc? ?ß_?Ó—?µ ?z?·Ç?C?è?¾_?Ó?U?å?¶™?.?²J?B¾? ?¢?Ó&?±õ?Ï€?F -?4?ê?|)?§?Ý?? -?C?ñ5?š?‹?âE?»H?ÂÔ?{Ç?Ô.?Óh?—”?ˆÄ?´'?wˆ?ýS?»Z?ò?9ë? f@?‚?À?8m?Û?˜À?-1?#\?}R? S?RV?'?7#?î?ð£?t?œú?`¦?Ñ?\ˆ?÷°? ô?ä\?Þ?A?Å‘?"ð?gá?q? ¶¨? ¤Ú?Ô·?9s? $)? )?+?ÐÓ?dÎ? ºK?ø?GÃ?çÜ?SÑ?.Û?CÀ?ƒU? ô®? - ò?ï•?pÀ?§? kí? ÜF?r¥? Ìu? D? Ž?X•?R4? Ôd?îÙ? b?)? -1’? .Ã? M>?á#? <ç? -À ? ¨X?¥«? Êù? ¢·? ‡«? +Û?™T? Λ? _? 4ß? ¾Ç?§R? y-? ?}è? ½ß? ìÐ? â? ? ]¢? Î? Òù? å»? Ø?? k? û? ¶É? q? ;;? »t? ?D? r? ûê? ÂÚ? pã? ${? ú÷? '§?q{? ¸>? u:? {Ü? 9Õ? -Š+? -·þ%?„Ï?g?0?Äq?’\?¯j?4?Œ‚?[Á?‡T?av?ˆÁ?ª?æ?žÙ?áL?à$?è?£þ?z?DQ?.J?/?5¶?°—?±?ê?ø#?Áz? ?c%?ºw?õÜ?ï?ë¿?Dì?B,?àN?P³?¾”?k„?æ?{>?Á\?„?ce?ú?ž4?zÇ?ˆ?æ ?; >õ¼Á?s½?+ ?I?åÕ?^Ä?§N?øÞ>÷ ?Ùž?‡Ô?ˆ¸?Ž”?}ÿ?€Û?„?@œ?’?"Á?z°?Ø—?ý¾?#?!õ?Úl?f?”R?lM?“¼? ‡?þN>÷)5>ÿøå?«ù? ?†?Â%?O¬? x?9>öŽ>öÜX>þm}>ò.>ö3Œ>ýðG?ˆ?&È?Úø?¢ô>ûca?Ó??˜4?…“?Ÿ?É{>ÿ J>òþÄ>õÈ>ÿ% -?¾‰?]Ž?kÊ?Ö¢>þxÉ>ý|Å>õß>û}>úXõ?[ì?>³?Ī?õ>þÉ>ÿ[›?Œo?õÊ?F1?­>ú~>ô´ê>òœ=>þi·?V[?Ÿ*>þ¡>ÿñÏ>ÿ3p?\Ë?ë>ùÙ4>ðFì>ýàÏ>þˆ>ö.>í>ûå>ï_À>ñ™A>ý—ú>üà˜>þJf>ÿ:Ì>þË÷>÷õ>þ\>ÿóo?$)?/?I€?™>ú„\>õî¢>ûFe>çµ>î¢÷>ø¼Ì>ü H>ûÊ>ôË™>ì¼z>ó¢>ûÍ>÷OÔ>öÅt>ôÍÂ>ûÖ>ý~‰>û„™>ùf+>ûç®>ûŽÉ>íõ4>óëì>ú[O>ûWÍ>õ¡ù>çX€>ì¾’>ð’6>ïà]>áí[>Ý4 >î -ø>ñx>óJu>ò:C>ëå˜>íðª>í¯T>óý¢>ëÓu>ÝF³>ÜïÎ>êÇ;>ìQè>êõ>êÍ[>Û8¢>ãÅ>éž>ëTÜ>îžÀ>íöC>éj>ãtý>ê“p>ç •>é -Ô>ë–>ëÖ>ä³(>ä(>äêš>ãí¹>å«>ð>ê‡Ö>ã›Ã>îCŽ>íú>ãŒy>çîz>í¬P>éù>æí>ð@>ï–>äuÚ>ã܇>î|>ï>ë#‚>å®Ú>éh>íRÏ>ðÒ>æÚž>ä¹µ>îê³>î>é?Â>ááë>íë4>ífR>ìwº>çÑ4>êÔ>í'¿>ê› >ë”<>ë>Â>ë7@>Þg®>åXƒ>ìÔï>êbK>å¢l>Ûˆ>åï×>ð¦ ->íY¸>íÿw>Þ$>æp>î?·>í{=>ì´>ßEÚ>â»,>ñBý>ð(Ë>ì@Z>çWÎ>äþ¸>évò>î4U>ë2>ãiá>ÛZ3>ÞAõ>鈟>îÇã>ãY¸>á“°>äÙe>è\E>궖>íøÒ>å¦>ãÑ>>íÇp>ëMN>ê >éó»>ã’Ò>äè>î•à>ì!ª>êõå>ée/>äE>àÅý>ìE÷>á5d>ÛÞ>á4Â>å¯>Ý' ->éë>ííù>ëu>ì¬ >è÷c>àc¢>ßøp>ë³>êÎl>äõQ>âh‹>ã0>ÝQ->Ü.5>æ!>éÌ·>çÉn>å'÷>ßú©>ß#‘>ßÛˆ>èËâ>èZ>çʘ>ê÷+>á2<>ÙúÌ>ÚX >äû´>å@>çwÿ>èì8>æTù>âUg>ß v>Ý-Å>äŽ>è9W>çå >èÁG>ã‰×>â€p>Õ">ÞV>åé>ÜÂ>à}>á«w>Ün[>ج}>Þ'ÿ>àrU>à“>Þ]¹>Ù¾`>ßô„>ãé>ß_x>݉›>ã¥Í>ãO>ÞÍ>âŽ@>áû>æ K>â°á>Û©å>Øš>àã>ãïÜ>Þ²>Þ¿–>äfÍ>å¬É>Ý|æ>áþ>ã»É>äÒ÷>åñ >ßõ+>Þ -¤>åË>ás?>ÝqW>ÞR¡>ÞÞ>äŠm>ãÇ”>ÞŽŽ>ãK#>äZ>Üx±>ÛñÍ>ãf*>áO>ã”[>áT>Û1u>ßÀà>ÞÈI>Ýÿ">ÛËN>â&^>áxï>áÙZ>ßK>Ý+^>ã¯3>ä >߬µ>ÜU>Û•Á>à$1>à±>áoR>ÜÓL>âê>âŠÔ>ßo§>ܬX>Þu‹>á+D>ÞPì>ÞÝ>Öù>Ì_>ØƼ>á`ò>ÛÙ&>ÛK>ר>ÎÝð>ÎH>Û.–>ÛS›>Û">ßÔó>ß–£>Øtg>ÖØÔ>Þ>Ýô­>Ñ:>Ô,G>ÛÔ%>Ý–v>ÛêN>Ûu?>Øi·>×£³>Ó¦É>ÜŽý>Ý -V>ÖÕš>Õ->Ú¼K>ÝŠ>Ýáü>ÙRm>Ùä>Ü}b>Ïu>Ô -\>×ÄÈ>Úæž>Ùe×>ÜuÎ>Ý™)>ÚŒ°>Ùä$>ÚE[>Ü3á>Ü(>Úý>×…>Û„‚>ÛÐ3>܉3>Ú0‘>Ù`>Øï$>ÛòT>ÙÜ«>ÓŒ>Òí(>ɾ>ÔÄ‹>ÚðÆ>Ü#5>Ù§é>Ø -e>Óß3>Óé ->×s´>Õvü>ÏÁ€>ËÀj>Øý>Ùð(>ÚY*>Ø=©>×ON>Ô3È>×yJ>Ù—>×ù'>Ï(>Ôãø>Ù>>ÕªÅ>ÖMè>Ö ˆ>Ä>ËÚÒ>Ø‚]>ؽÂ>Ïf%>ιV>Ôn3>ײ¬>Ô½'>תj>ס¢>ÔÛ>Òõ>Ð|ª>Ö(ô>Ø£>Ö&d>Ðý >ÓS‰>ÒÜ0>Æ¿>Áµz>Òφ>ÎÓ>Ì"s>ÍÞ9>Õµ>ÖQ>Ó°L>Ô±>Ôµ¨>Ö–>Õþ>Ö™>Ô­á>Ô: >Òb>Ô;?>ÖŒ>Õm>Ò=c>Óz>ÓMn>Õ”Ê>ÐÞF=Õ/²=ü¥Õ>Õî>!ðÛ>53>Daœ>DT>3¸¯> ¾0>‹›>=>êË=×/Ý=£—Ò=ˆá=“€_=æ.>}ý>!ï²>2²t>2VF>$ô¥>DÉ>,=î¸Ð=Ö"„=Çœ²=Ö >Xg># œ>;¸ >Emô>Aª¡>6ûv>,»æ>&Á>"iu>%c>†>r¯>&4 >.Áå>1>1Kz>1¶c>.>#/.>I> h¶>–­>%à¾>@—>RÌ >Qæû>>b¤>%®—>„e> Ö>éL=õÄ=Ýpp=ÊŸ¤=ž¸=ÊœA=ã‰÷>Ab> -–/> ã¨>€¾>Vj=ôš+=ÖpÝ=© å=ƒê=€[R=©D´=õ$7>$ >A‡Œ>Lü >M‡ö>O’#>Y±m>hÝð>u>xBó>s–>l’ø>kðL>pèv>tT>pÒ>io‡>dð>bõ§>[Œ¸>JÛ;>6>&I¬>ù>4)>>®n> EÞ>$b{>.$ñ>8[ô>:ˆ>4Ú >0}Æ>2SÙ>5éH>6C™>4…B>3¶.>40>4/r>2Bý>,Ÿm>$û4>!ñ0>(x>4Í;>?&Š>F@Ü>M²Á>V@¨>^ay>f:>m§™>p¥ñ>jI'>Zã„>HGP>8„%>.–2>*ä`>-5“>7^E>Kù >fàq>|_1>‚”Ý>‚+–> ±>wO§>o+–>h#R>`ª9>Væá>K8ö>>S>/À >ºô>Ûæ> ->=ÿTe=û²×>ÄÙ>Ì >)8ò>:á>DÀ1>Jÿº>R.ñ>WÇ>U/6>Jñ…>Eê>S[M>q$P>‡¯÷>¼Q>ŽÏ >ˆ >k¥>€v>†T>~Ó>æ">„ >gº‚>F‡>,¨^> Ù>¨R>'†> ²>ôè>)sß>2|t>GâY>Tµæ>c&>q>z>v°Á>i=ù>Hõ]>#ê•> $W>S¾>eÎ>"PW>1P(>>G&>Nå•>e& >wg>xñn>i³—>XÚ£>R‘>WQ|>dž>y">‡§ß>Ž}ë>Ž‚I>‰p>×2>pú>[ >D¸±>1¶ã>$QÜ>*d>³ý>‡>6>"–>:ƒÓ>Mï^>Tз>V½F>]^>fïG>kæx>h#z>[üø>M;ñ>E§|>Hˆ3>Lu„>FL>6jÍ>'i¶>"~>þ>,Ó>¨—>&nþ>MÁ5>O³>>ôq>$6´> öC>Ù÷>"ñ>\>> íˆ>*?h>.x€>4˜t>?Ö¦>Iüa>Noç>Rºe>`’²>zð>Œ2%>”¸>%v>ƒf™>nuº>gL>r^>2¼>…Í>„øZ>€¶I>zÓ>~Ð>‰™>™§•>¨PB>±„“>¶——>ºÊž>¾µ>À4¦>¾…®>»ã€>¹œ.>´û`>«q> Ü>œ Â> <£>©™¿>±£ù>´3Ç>°a²>§~q>œÀL>•@ý>•*Ë>šò>Ÿ"s> b¦>Ÿõ#>Ë4>™5 >”R>|>Žµo>§”>”K>™Îú>#>žd>ž8Z>žßÁ>›ã‹>“Ÿž>Š.Ì>†ÑD>Ž>Í>Ÿ* >³±>Áë‡>Lj¼>ÇM@>È>ÍdÔ>Óâê>ÔÙ:>ÎŒ>Ç•z>Ƽ'>Ë,í>Ðm>ÔÞ`>׎­>ÔEÄ>ÈF>¹;»>°¡+>¯a©>«ø?>Ÿ¨>‘ ú>Œ\Ì>”Qz> å>ªÁ¶>°Å{>³ÔZ>²ì&>¬â>¡áé>•¢õ>‹Ïº>‰HÓ>b>(è>¨…¹>®Uƒ>®žZ>ªñÆ>¤7>šµ>è >†˜T>‹ñð>œç¼>¯$ÿ>¸Ûi>¸CÂ>±mä>§ì¬>žîË>œ#Ì>¢ó>«\>°‚>²jµ>°¹ >¨Wº>š3 >Ž]&>Œû>–IÄ>¢X§>¨¶O>§{>¡ûL>›”t>—È>—ÓÈ>ž>¨€<>± >´ >®lê>Ÿ¬š>Šf­>m¦S>b<6>}R¢>–è >«¬°>µ¶>·ðG>¹¸Ž>¾I(>ÂK>>ÁÀ>·m>£¡p>‡Î¶>WSÐ>0²¿>+>Q>LÊ,>ƒ®œ>ŸB>­ª€>­ðÁ>¥³î>›x“>ÒÖ>ƒÛ²>kø–>YiÝ>Sâ€>Ry>Nì>U1M>q3a>8»>ª'Ž>¾tf>È1è>Åyä>µàu>œâÛ>…iÍ>x,Í>‚¡>Šîn>£ >Žá'>—)9>¥©U>±2>²”>­–ë>­%ç>³ µ>³õ>¦ÿ>‘‚!>~l >qK >Á'>˜~>¤>]>¶ïÌ>ÇGc>Ó‚>ÙE>ÛŒG>Ûh >Ô£m>Æô>¹5ß>¯ùL>©Ž >¤d?>¡“C>¡Ü>¥"¬>©â[>­ã>®ùî>±~C>± }>¦yí>« >oRI>Ou,>S~J>x\>”;×>©…#>¼uû>Ο>Û¹>ß1…>ØôŠ>Ët‰>»ƒ¼>²m>´DP>ºˆ™>º|Ì>· -ß>¼qz>ÎðÀ>åÄ¿>ó›Ê>ðyä>Ýùj>Å#©>²[â>®ùƒ>¸[]>Áv¢>ÀÒã>·ÁŒ>«Jˆ>š¬æ>‚$>LÇ>(V>$ˆŠ>4*•>F¢v>Ym±>m«Ô>‚&¥>“JL>¬»x>Æ’æ>×К>ßôë>Þ¡>Ï“?>¸ƒ÷>­Aâ>»/¤>ؼÔ>ï~À>ð)â>Úý3>½$#>§R>ŸÈü>ž¤>œ>œ=>¤áy>±./>µ@>¬îu>¢ÿ‡>¥œ>µ,Ë>ÆÈ>ÐŒ¤>Õ@b>ÔuÍ>Ëö{>½X >¬®(>šEË>…]ƒ>gX7>`;ó>€Z>›>·î>Ƀë>ÔŠE>Û* >؃&>Éšß>¸ôø>¶”c>Æ8`>ß Þ>ôf>ù¶€>è÷=>Ççi>¤Òï>Ž~r>‰€>ŽVí>—Š>£?ä>¬ô>«g> B”>šuÕ>¥>>¿o>Ùtà>èO&>íçð>óÇ>úöc? ‚>úÎx>ìlà>߃R>ÛöÉ>ß?š>ßQ>Õv>Åzì>ºáK>µó…>­m>þ]>Š$>‘ „>£ÓY>ÁÃj>Ý=6>ê£@>æ9>Ô‹«>¾ˆZ>¬Où>Ÿ‚D>’F’>€ãý>aã>U¡œ>e“<>ˆ¼>¦92>¿¸ >͹j>Ñ^ë>΀u>ÈGÐ>Å=i>ÌÁ>ÙeÇ>á´H>ßÄÐ>Ù¨À>Øø²>àÇì>èü5>æY>ÙrÙ>Ï+G>Ñfò>ݱ³>ê|t>ðà2>ð3x>ꊸ>âé¨>Þë>áÝ>潦>æ£>ßÉ­>Óc>ÂÎ>´2>¯¹>¶¡Ð>¾Ÿ>¾(+>·k>³P>¸ó¢>ÅA>Ò‹>Ü—½>Üñ>Ë'’>¨³3>†mó>mj˜>u‹Œ>÷È>ylD>ZÙ>G2ë>SZ>xY…>‘±¢>¡¾>ªeØ>¯=‘>²"!>®—g>Ÿ~>‡×G>`œ>:Ä>!¦>^D>,«Î>>ì >B_>6ì>,ê¥>2ªŽ>Gô>f¶¤>†÷> ^s>ºÐÏ>ÉYÇ>ÅD>¸ö½>·ÿ.>È(W>Þ›;>í'è>ðâ>ïà ->ôå¹>ýR >üÞ{>ëoœ>Ð#%>¸]·>¨Šë>žUÅ>™¥š>˜ˆË>’~<>ƒ¥‹>mŠÞ>t U>´>¤3Ô>±>µµ=>¼j¿>ljå>ÌGˆ>¿Y> ’›>~-õ>ZTç>fë>Šæ„>¦Pï>¼ 8>ȼ>Ï°À>ÞA¾>õžŸ?ùâ?X?YU>>ÈJ>œÇ<>}ñ>€ºm>Æ«>Ÿ>«È±>¹ƒ>ǨŠ>Ô²ý>áñm>î‘>ö€P>÷í>ð‹>âò„>Òš>Â$œ>´‹/>©'_>›mZ>ŒxV>†¬œ>¢_>¦bþ>Ák>Ü,ø>ó\Ÿ?u?Xh?ØÁ?3Ù? À‹?é?*\?ì?™?úâ?ý2? -l‘?‰Á?€ ?&!?ý¢? -}>þÔÏ>ô´n>ëÿx>ïj–?ÈÖ? -š»?å? &,? -^ô? O×?që>õ7Ö>ß·ä>ͽˆ>ÀA>¼Ô¾>ƉÛ>Õà>âµM>éa>ä¬m>Õ0^>Á -Ó>²-—>²`>Åœ{>çf?õ?Œ$?¨? ‘Ë>ÿu,>ùB“>ý–è?·,?52?~­?&-?wQ?]‡?a6?Pû>ô*1>Ïp´>­ì>œšr>™÷¨>›K^>Ïê>ª¾Ü>É!ï>ò? (*?…Y?"eL?!mž?¡¥? r(>ôwÈ>Ð4h>¤,ü>w¤#>JÙ >H¤_>i—>’ />¸•Q>Ú¨½>êz–>àŸä>ËœL>Åλ>Ñä>Ùž³>ϾØ>¸”ù>š;Ï>sôá>?Ü›>$ Ð> {>.÷‘>S¶>‡ô>«^·>Én»>×3#>Î^>³(¬>”¤_>y»Ï>[*'>Mý>Hˆ}>@*¦>9©T>O‹„>†Õ>®¨²>φ¢>æù=>ûÚ£?¿#?˜É>æLi>¶q>“ö>‘Ë°>§¼>¾a²>Åý\>¼ìØ>¯î>«—>°ÅA>°xÇ>­Â¼>ºkž>×VÆ>ñÀÎ?wE?ÚÛ?I`?‚?5¥?7? 2²? r7? ¤? ï?¶‰?æ? 4?1ç? ?4s?ÊÎ? €­>ó—ù>Ñʬ>¿Ø>¹×N>½&è>Ë«%>ߦ>ç^>ÜX>É.>¼|8>¼³Û>¾î«>µâ9>§û„>¨HS>½4>Ù¸§>ñ?? v¸? -+¢?sn>ð 7>ߺe>ân>ôä†?û?®?“>ãÙ>Á˜>¥ç,>’}ÿ>Šlª>’ >ŸEÕ>žšm>‹9p>l|ð>gë>å>Œvp>„ND>`÷.>B¿>9>@Â>MTS>]Ñ¢>n¾G>sŒÖ>dŒn>OnB>IiŠ>Z¸Ÿ>y¢±>†»ÿ>åt>fs>MR>FQ>Uèq>€þœ> r>¹â]>ÇäY>ÌÕ®>ÍÒÀ>Ð ê>Òí>Ê>·†.>«Ý¾>³”Û>Â4]>Ä|å>¹3­>©ëT>›ß>‘‘±>‰îê>|k>^×{>VAé>y¤> x&>³¬>Ñ_y>Ì e>Àœî>»?‹>»2 >¹ Ð>°ÐF>¡Z™>PK>„öÿ>‹•`>¥&u>Çbm>Þ“>ÜÓl>ÄA>§Z‘>›;¤>£§>­…>¬1Ü>ªøà>¸0>Æ‹>¾B>£•z>“Fõ>˜sµ>ª>Ãç>ä´.?)?pá?—{?qÊ>óÝ>î>öaµ>ü4>ñòp>ã|j>âãÖ>ìzƒ>ë©=>Þ|Ü>ÒÏ >ÉM>Ã<™>Îöc>íy?!8? ¡+?ó?;?àY?ò•?`þ?¥‹?Óš? ¨¬?b‘>þ¬²>èl->ÎÜŸ>½î2>»k->·m>ÍÙò>ÔJË>Íõì>¼TÔ>¤Èå>ŒéK>s­î>V]>=æ>%âÜ>TÚ>Å> Íÿ> jï>BÏ–>lÏÈ>ŒÉò>¢5¸>²)3>¹çž>ºŸ%>´ª—>­3ø>´w>Ï*×>ë2D>õµ~>÷¹?‘ ? - Î?Y ?ö-? | -? ã ?£?Ë"?ª_?§·?ä?_9>ø–I>ÎÛ+>ªã)>å€>ž0A>™³>‰Zõ>cdÌ>7R>Á>ŠÌ>4€ ->`Ä>ˆð¨> iu>¶ªš>ΖÄ>梣>ûa÷?­Ð?ì_?Z«?&¥Û?(z?%#š?!€? ”ñ?"¼â?%¾?(Îò?/)Ú?6Al?7jk?5áS?8w?=ßa?@ýˆ?? &?9‰þ?32Ê?,½r?)”˜?/ʲ?<Χ?EÓi?H£)?K«(?LF ?@ ?)é>?;ù?$˜?5ï0?BÅ5?Gx™?I’ö?LŒš?Nèå?N÷?N U?N<º?Lƒ¼?FëM?E"o?Kœ ?QÉ„?Qz?OE>?OEx?N¤?KÅ?I¶{?NF]?UiY?X¸ˆ?PöV?<]À?&PÝ?H?Ã7?–'?7Ÿ?0G)?Eé¨?X?_t­?[ˆ?R–é?M:Ù?Lî?E„ó?+£}?'û>æ@½>øÛ›?ªÏ?7Ô§?J‹f?T‹ã?Ul?NÓÂ?GDî?AA]?CŒ?&ù?7¾?"Ó´?7ªi?@ê?7ø?(Äe? `?&õæ?8ð;?Mq>?[01?[u/?Pϲ?E„T?Bü$?LÛ?\EZ?jÀ«?pm•?lõx?e£ç?_A?\…L?]\¾?Xý©?Lf?A/q?=Ò ?>È?<À¬?2:Ô?#Ì7?B—?)'?8A?Eñ?OG÷?T¦‡?Tš‘?Q½J?Nvâ?L®•?MÊz?R ˆ?Z=?`±J?d1À?e]ö?a@Ó?Vn^?M´Ü?O- ?TÇ&?V˜"?V…X?Y:{?\½'?Z£ì?S®(?NQb?M’?MÝC?G™O?7Û ?(¶\?&X?0^M?B?S.¬?[©“?_·º?c¯X?d¶?[ÛB?F†k?*@Ä?z,?&ù?<ŸK?Le?Q·é?P/ì?L,X?K=¢?LœÌ?JkÐ?BóÚ?;[™?:1?<í”?@ÂG?GöB?PÎ?WÁD?]dž?d‡f?iì{?h+?a»Š?Z<?)´?,×O?:ò'?Kˆ?W˜—?^Ö‰?b™,?b²ç?] ?Vï ?Y‘>?aŸS?cj°?Y¢y?Hds?=Çï?DA?R›?\Ú?b6?dc?\¨e?L¦h?7|Ø?7e>úM·>Ö/+>ò|’?v¥?BÍ¡?W0›?\z-?T=?HZˆ?@Ôç?8aj?2^x?6c?=ƒ·?BÖÚ?KÌù?VÂã?[²?\û-?dL ?hË5?`ÕI?O´ç?>'¡?.¿í?$S&?*vV?<¦Ú?Aá¼?5£˜?0£)?@àö?TÑO?T´G??r%?'’? F?3:õ?Oq?`ºÅ?f»¼?h?b”?Vë9?IjÄ?5çý?±m?0=?v€?KA?ú?*Ù?D®?X¤¡?\¢W?Pët?CØ?AFZ?E·?K ?JZ‡?B¦,?>Aß?=ÉÂ?4À?$l?‡y?,N?<©ù?Akè?ö}]?”?Ì?ù¸? áb? %—?Öó>íø>Ø?Á>ÚèÊ>ð-—?M?÷?(Lò?<°’?U¥?pÅ„?€ùÐ?½¶?~ýL?y±º?qYÜ?`¯}?B€f?ªÍ? ›?'W?.l=?UŠó?lë‰?rLË?raÐ?tþ¿?xr?{ˆ•?{x\?o¾?Vþr?>æ?.Û?%þË?-øÂ?C3?SÓÌ?\ìµ?fQã?m/,?o‹t?t½`?zy?p• ?Tb1?>Ý?BNB?RU±?\ÛÉ?dD¤?j©„?h؇?b÷á?g(=?sß?yöò?xÐñ?|§Ï?¼?|N¢?o›?h:?i)q?h.?eØÉ?bèw?ZI?Lè.?E ?Jïè?ZÜ?eI¤?e«à?\Ñö?J9×?)GA?Ç­>újI?w -?:'?Lô?OI?M±@?Mõy?SMû?Z±*?]kL?[…e?]ûø?i )?t¿ê?sÌ?fòÀ?YVî?V ã?T4[?@p¾?&æî?&?:O»?J9±?UXZ?fa?wHˆ?€‚H?uM?m"³?QÊ ?GUÔ?U”—?k&r?}K-?ƒÔ?ì>?t‚X?hœV?h©?j",?iC?jäq?qôi?v\Õ?q‚d?nõ?pžE?kØh?\Yš?PYž?VªF?kòY?¼œ?ƒUô?~‡¾?mß»?`Žý?`ú)?p¿?€oâ?‚g@?bâ?~×U?0?€ÞÁ?jœ?y\á?h¯Î?Rgú?G·c?Lç£?SNš?S=ö?R ?Q.{?Qü¬?]Jí?mj›?t%…?s>*?rÖˆ?rŒ?ncü?lÓs?t ,?€©?„RÇ?…Ìø?„r?„,„?‡m=?ˆ¬4?‚µ2?qª„?d0Á?eS±?t"ò?‚¬|?‡Á¬?ˆ¡Å?…)x?}nø?sÓø?ur\?~åÃ?´?{)U?o„A?nÕû?xã?‚k?…ó^?†œ?ƒ× ?„5?‰K‹?Ž9?C?Œ?Ä:?Œ4é?ŒJ”?Š?‹éú?ˆ)q?„Xä?‚§!?ƒv?„‹¹?ƒÊ?„˜?‡Ü?ŠW|?‰:(?…‡ ?‚G=?|W?nÚÄ?`ž}?V݈?U  ?[P?d?kž^?k_?d]Á?b]÷?oÍü?‚¼'?‡áâ?…ÁÂ?‚•?e?ƒ¬ ?„<Ó?pg?}íÞ?|Æ -?zœO?uFœ?s;A?xh|?|z¸?z… ?v@Ì?uJ?{c`?ƒœž?ˆQ…?Š£?ŠhH?Š»Þ?‰/²?„ ?}ó?z¶³?åt?‡PW?ˆüŠ?‡j?ƒ* ?©`?…ƒ ?‰^¨?ŠÅ?Š?‰4W?…§µ?~¨ï?s<?q«?w0è?{4?x?t]h?xï?‚ÕÛ?ˆ »?ˆH—?„“?~Ðò?{²­?|Ys?{(0?yh¥?yÎ?{ÄË?|÷·?zÓ?z³4?}%?~>n?~c?€k2?ƒ¸?ˆ?‹€I?ŠãŒ?†ü?ƒÇK?‚âf?„D?†¶L?‡,?†Ÿâ?…g)?…"ö?‡x?‡àé?‡†?†Ã­?†SL?†"Q?‡êV?‰ƒ&?ˆÏ+?ˆ;w?ˆÁ-?‡‡?…æ?„ûÒ?„¥J?õ ?|FÈ?xú\?{.Ã?€ÊP?ƒª‡?ƒGn?€k;?xK?mf?fÕ?j9¤?t1¢?~9Â?‚c?‚Ø«?€×f?{há?zÊí?€ºt?†#Ë?Š«‚?‹y`?ˆ‰ ?„0q?€¢õ?{ÓŸ?q6§?_°?UçT?_ïË?tpà?!Q?Àq?vä?ç ?ƒ-£?†Ç?„Ñ6?´ ?w´x?u„u?wÄt?}–½?ÁØ?ƒ¾?ƒf…?‚±Ë?&?Ò”?~„?|Íë?~n~?%o?ƒ=?, l?Ì?%tÂ?8¤¾?,ô‰? Ñ?Ä ?Dén?e†ª?q:×?sŒå?mÄm?[qš?8’ ?hÇ?ÇE?4Èë?\1y?l'?oÛ4?n¤?]›Ë?T¾j?^ðª?d0Õ?f‡·?nì?w—(?}l~?|Ö[?v\i?lN?[¢%?O=÷?MÏ?K]?S:²?fªŠ?xDÏ?X?w¢á?iKû?d˜)?m‰Ù?{.T?iG?®O?~KÜ?r÷›?a\M?MÀ?IÑE?\ÛÖ?nDó?q&?e¶R?]™–?g+?vei?)€?ƒv?ƒ’O?ƒ:N?‚ç?›0?„Es?…€7?Î?}øõ?|fD?xz±?y•?|Ú8?zØŸ?yï8?æß?‡­T?ˆŠÓ?„®­?x¤/?c‹¦?SÐú?I¸?EªÖ?K‘D?DþÔ?4x?A£/?^à¡?jÈç?k„|?nņ?}ãš?…’?„ à?|ì{?oU°?gVÕ?mJ´?€Ì3?ˆr>?‰—D?‰Ô™?‹‡o?‹>ë?ˆŒS?†K?ƒ -?v—“?g¬=?l= ?ya?|?~.Ú?„› ?‰Þ?‰J?‡>e?ˆ?ø?Š¶°?‹V2?Š -‹?ˆv/?†àV?„H{?ƒ}r?…eL?†w?yT?~‹×?€w?‚Õ(?ƒÐ??ƒP?Ñœ?®û?~nä?m¼y?]‹w?]ho?iµ?v7O?zjr?v<?w2Q?€J4?:.?w‘?u2™?pCI?nBH?z}‘?…HË?ˆ‚?ˆ–’?ˆ5Ì?ˆg?‡ùã?… ?{• ?€ßÒ?‚—•?ƒˆ÷?~™]?t$?yÎ?Ãñ?„Éõ?†Þ ?‡L3?…Ùä?ƒO‹?}Î?€ý?~;??€—)?€B?€aÜ?€¬ý?~½?‚¤ƒ?„B-?„cg?‚TÅ?:?‚ù¨?‚KM?}Aâ?{MW?y6Ø?n‹A?p{K?xªÍ?wãò?{‡?ˆ?‚q‹?r?Ù.?‚ÓY?„-«?†Ï?…À/?ƒáæ?„+®?„q²?ƒ5?ýü?}Eã?y1d?|b£?|k~?x-·?wúá?}¹Ü?k2?‚žÐ?‚[U?‚Ný?ƒ e?Jt?}ÄÖ?{\?x¯ ?{Î?}Nã?x[@?q¿ì?k·Q?fÑÓ?g¤®?mdÕ?x?~˜z?€¬w?j?‚#?ƒ]€?„GB?„øÃ?…iÕ?… V?ƒDž?‚Ê­?ƒñ@?‚ï?€ÃL?‚ -&?„ -Ý?„@$?ƒ˜N?ƒJé?ƒ_ ?‚çm?‚=ñ?ƒ2?„A|?ƒ -?€S?€¹û?‚A?Î?ufk?t-?}1T?‚;?‚²Ñ?*?{òò?vq:?y³_?‚Y?„qª?„À ?„q??ƒn¡?Å?€¿Þ?€W}?€äF?‚«þ?‚où?}¤‰?sK ?oËá?p•?oQ?sm?{³þ?»–?}Ź?{†?~D#? -Q?‚1¯?€é?®°?ê?ƒÞo?ƒ·ì?&?|Ð?|w,?^C?€Ýz?‚$G?ƒR™?ƒbÚ?þ?~É7?$–?ƒ_?….?„ø?„kŒ?„B÷?„wÍ?„L]?„?„Iš?„?ƒ'?ƒ=è?‚ié?‚_ò?‚Ú?‚{¥?ƒˆ?„è?„¨$?„*ª?ƒÚ?±??€Ê$?ok?‚?€ÐÜ?~ÿ?|±ò?x!}?o­k?pÔ?x²§?}?}gë?€.ý?€‘«?~ä±?€[Ñ?‚Y?ƒ‘?‚f,?•?‚?‚Lm?øC?$B?ï+?~Ý?|4”?zf?z ?r±þ?U‡Â?2$¸?7³N?UW?]„!?IøÏ?Bdd?[Ý:?o u?w‚?|*¨?~Ë?~@€?|xÄ?~Lø?€,™?€a?€­¾?}z?ve?v¬(?{>ê?}§Í?§?€>L?7÷?~áÆ?€Üö?”R?$#?y(Ô?xzn?~^?_?|ê?~ëì?Ç?Ž?ܶ?z¹w?{J?~ÁÇ?vÖ?|e -?w1L?x -¦?|œ½?zËŽ?{¤1?#Á?|ç?{t±?~ö?L’?ÞZ?Üt?€ÓØ?:?¯!?€â:?Û‰?‚O™?â?šÆ?y?v†¾?zÕˆ?€\u?,?|”q?tz?sy¼?w¦?{ÉÂ?Už?ÃY?€.º?O_?À?} ?y+?{j=?~>Š?{ÛÐ?y;?{ÎP?zˆ\?rõ¥?r³‰?{g»?|f­?w‹.?w+d?w“ë?w?vç²?qMü?n¯(?pÞe?sˆ?wÀ¥?zt?|ýM?€¬?€Âr?-+?1õ?ß?Ë?M?€Öú?²?~ ™?€_3?-X?8–??Á°?Ž?€¯k?~:?z÷_?y=?|Ü‚?€Õ ?Š ?€¥£?}=~?væ”?tò?|ð}?[‰?Á–?³b?¾Á?¤š?€Õ ?|yO?vŒ ?x'î?zò­?z©»?z¦T?yc@?yûs?{{?xr?vàU?x -?z*„?}4Ï?|òÂ?|Ö¯?~-Ú?vša?eì«?h"D?xu?}Øp?{ê?}!?}@¾?}|?ŸÁ?~ §?{.?|õ?zÖ{?qg?e)W?jÀJ?wï?yãs?xñ†?y?zÈ ?|¨k?}ÊÔ?vÌ8?d0í?[»á?kºú?v8%?s «?vi?{”?|–€?z ?y€'?z+©?zc?yBb?u,q?s¤?u}-?uÌM?jœ©?Taë?Q¸á?cnî?nùí?qµ?h'¸?ca™?og?vn?w\×?v^±?v~S?yO?yAd?{”?}_Ô?}\@?z/®?vˆ?vW?qŸ²?i?dÜ?má?wf?yÄ{?u³²?sºy?rØÑ?qê1?mæI?jH[?h³·?l­¼?tÑš?v ?müQ?eix?eÑ)?h[?gÇå?háÝ?nÎ?tw?w -ã?t8?siÑ?v¡&?v5K?se ?t‹‘?w¿]?vß8?oʘ?gÞÙ?f -?f£µ?k}+?q¢8?tøÔ?u‡0?uè=?tZ?o°+?n‡ã?q/?r’?oŠq?kãá?k?eˆ_?am¢?j±]?rf;?u›?v”?tDX?q¢1?q<‘?mg?f-ü?eŒ?bÆP?h ?o/ß?oH?sbr?wlÊ?uð¤?tx\?sM¬?s`?uÀ¡?q8¸?g ‘?e—|?k%?pðú?s4?nIœ?lœá?r ¾?u½Ê?x8??xäÁ?xúg?w#?q¢5?q¨?p-©?kÕÊ?jF?gææ?hÓu?mÎ1?rSÑ?u­²?v·?v^“?xDI?yçÍ?y­ ?xÃ?vλ?tò&?sùº?uÆõ?v? ?vM«?x/·?yVÕ?yJÊ?tÎ$?j]”?iu—?s ?v;U?jñ ?`,?kn1?vÌA?w‡X?r¤?jþU?l´ç?lZò?i±Ö?pÙ?r_¯?s~|?s3É?lÉ?gF-?n\ì?vÇ?xá'?xé¿?v½M?p¯?k&?p-¢?u–A?vÃm?q‰ƒ?f{g?iq˜?uÈ?xê¾?y!?xb_?t84?h®Ý?e?o‹M?t?»?oÚc?mÙR?sÄ6?oéâ?lf˜?ktÛ?m·à?rØö?sÙ¾?sm´?rã?p:–?oé‰?qvÊ?p¯ò?n£Ï?o‰*?r±ü?sÂY?t?sŒÙ?qEž?nf\?jüK?fëE?j;Ö?oV¢?oÁ?ksé?gÑ©?chs?aÏ?`aH?TÞ,?6U? €?6 -„?W¡?a ’?aiÿ?cçÂ?e°?b?bõ^?jÀ7?oÜ•?ojF?lõ?lù?mþ?lÊP?n0|?qVJ?p‘U?gÛ5?^ºO?eœ?laÆ?kŽ?lî·?qã?q¬Ê?o#l?m0ü?l%?h9?hU?l÷?n ´?nœ»?o¦Ý?p8+?pöÅ?q=?p–Ç?n˜Q?m?m=_?l­É?l˜ ?jËD?dé?a±å?hÌë?n‘?mN]?lYõ?k§??g,Ò?hyR?kzú?m?oDŠ?p0R?o«?n)¿?o'U?o§?m×?k¢·?g÷7?cÙý?füY?jj?kï?l›g?ml?l4?lœg?k?@?cZ‡?nɯ?nÎû?n[Þ?nDÈ?mþ“?l‡7?hm·?fwC?hÂ?k ?l «?i=E?g²?j*‡?k²õ?kŠ¾?jóq?h¿l?fÝp?cJ -?^?`ð?eÛÆ?eg?e ?fÅç?g³v?j›o?l7¿?kaÃ?i#•?h½ÿ?i¡:?gà?fF?g*ê?gB?f'”?fšÓ?gàð?fþþ?ebÃ?féq?gó/?h»r?iHs?iÆ?iÚ?i–i?jÉ?j‡?i8û?eJ˜?dó?e¬h?ehÔ?go¾?iÈI?i²‰?i…·?j Û?hLª?d-?ag?ab›?c׸?f-½?f-è?eiš?d!?c¿?d@?d°ä?eµ?f¥?f5$?dØD?e\?f%0?eçÀ?eSð?gm?fý?f8I?hó?g÷ì?dÇx?f ÿ?iN^?iv?gZ?c[?céÄ?gÃ?h†y?hkT?g³Í?fHí?cäœ?^Wf?Zåæ?^\‚?déc?gý?hiÌ?gr ?eµ?clû?]#Ð?Z}e?]Ù3?^å?[£O?^/¸?eD?gêH?gÈY?g@è?ff3?d»?cÚÞ?c•½?dZ?f‘½?d²?^=À?^wu?b¿—?b\g?d´?gÜ?h“?h¸?gºd?gb‡?fpD?eÁP?fjÄ?gu?fæ|?dQ?b‹o?e+.?dyù?aÐ?_¶?\áß?^_è?aö?cÔ?c/ß?bGÞ?]+ -?\‚½?`´Å?a¯(?`0?]>…?]¿?aÁØ?b¨â?c…|?dB¹?a¶‚?\^'?YŸ?WÓe?W¯û?XÏ ?[zz?W?U¯?Z«*?Y¬™?S²µ?SîW?VEd?WY?Y³X?VW?LÆ?MÝ6?Vä?Xe]?YÀÎ?Z¨×?YµÌ?Xï?Wb–?Wƒ ?W>‡?V|?V.M?QØ}?OŒ@?Rœ?P9™?G9ö?Fxa?Hw¢?Pž?W(Ã?Vs?RóM?Sm?T«ð?Viˆ?TÉ?NgÈ?Oï´?PÙ?U_?YÃ?Yb›?WšB?Uùd?V¸?KêJ?KÕÖ?I|Ž?I_"?JùS?J}—?HIT?In·?It0?G¸p?E@?CȪ?FðŽ?D@†?C’?G+(?Hû?I²Ê?G ?GJf?J»ö?HN?G£Ë?K5?K»?JèÆ?GzQ?Bî?Bø ?FéE?J2?Iû·?Iw+?HP÷?Hß?Iüj?Ik´?Fs?FBÕ?Gz?G>m?H+¦?EŒ.?GÎ?Hš ?CC·?<ȼ?; ä??|á?Fmî?HËï?IpU?IžO?IN!?I¤ƒ?IJ®?IL{?I.B?H}û?Gîs?IGÖ?Iý?I7Î?H·ä?H°Ç?Hˆ¾?FT“?@ç??X?;Ì?8L–?;v*?;»0?3dt?=°þ?E=?Dî+?GUÉ?GùÙ?H³ª?HÁ˜?Fæà?DËJ?Fú*?H, ?H[?G‰ ?FkÎ?G(»?Gè‰?GÄ»?Eõ?@Ñu?@Ç?F¬ƒ?HAÅ?H@z?G³u?C÷Ñ?>7?>U?>‘w?C—Á?G;?Eá?C\š??0W??tÇ?@"‘?A|U?E~¡?FÝ?E$ ?EàŠ?EÞg?Dz‘?C‡?>Þ½?>5Ë?:£;?6£?;$?B?D_?BÕR?AØy?AÛ?BoRª?Fl?I4?IÇ•?Hz¢?Hz?J–?JíÍ?Il?I ¾?Dž ?;¹3??6˜??­i?A\T?A0?>U†?>t[?=dn?>Ç??·[?<ÌP?<@$?9µG?6™?7Æ­?7‘?5 ³?4J}?3?3‘}?2w\?1"—?34V?5í?5Ñ?6©˜?8ZC?6þå?7­ý?9|©?6æ‹?5s?9Ká?>Ù?<[?9øº?<:j??–w?AU?@Þ±?=[A?=½?>™E?=9¨?7ö?6µd?9àú?7»B?7L7?4§Ñ?/uç?/Ÿ?0j¿?/Yõ?*³?#Á¬?%‚?"Çy?‡p?%ýä?'ÄÕ?%¤? ÿ9?%1Á?.Àå?3U?5 û?5¿?7`–?:5?=y?>i*?;•l?;nÿ?:ï?9Ô¤?:¨Z?9¨Ÿ?9è,??$q?=$?:QZ?=—'??we??ó‘?=·í?<‘Æ?<ðÚ?9•o?3¹Ü?4'”?5>e?7ql?;¦#?>{#?A¨®?>¡Ð?6"?0Ë”?3°Ú?9»¬?<œØ?;Š^?<`ý?=6.?<Ú?:µS?5š@?9¿t??[¨?;„?6\ï?;?>º}?<œ­?;’¤?7±?3cQ?3×Ä?6’\?:Õq?:4?:¨™?=\?:p{?5e[?6fg?7+Ä?6, -?5cÀ?4²?6CP?8|2?9å?„?.Q“?-ƒ?,(j?,¡é?(4†?‰?&k?&>J?#¼?',^?)š¬?)cç?*ÞU?*Ìí?(Oc?#˜?'g1?+üž?.Š@?-á?,á?+,B?*æ?*5­?)¡?'û?*Í•?-: ?,®ü?,7ù?,Óà?)ëZ?)×ñ?*=R?%îe?'«y?!¹ø?Ü÷?)A&?,93?))?&ó¾?(­B?)ç?(qì?(`#?&¤?&.?$ÚÎ?&•~?(Ÿ?'®G?'¤?(í?)©?'Q?%Yµ?%¿"?)c÷?)}-?(1­?Í? :Ê?!¹¯?#‘X?%?"?$C)?#Ë?'‚?(d'?)1ž?)Y?(Õc?(uÂ?':Â?'¾¨?(S?%[å?|?"áµ?&ðF?(=˜?)Ï?)c>?%ýÈ?$p?&€í?'×?&u=?'8§?%ý%?"Î…?&L>ú´K?Ëö?tª?²ö?#Ö ?&:=?&”9?#7Ô?0?„¶?§ß?! ?$GO?%®b?"Qc?4Ø?!á•?!¼? Ü?2o?ÿÛ?Û¹>×Åœ>¼°7>ï~E? Ϩ?…?¯?…å?q?F?¾Ô?!7‘?!'þ?"¸„?#.ð?"šÊ?"'? ¿U?!¾?"‚>?"ŸÖ?"?“?»&?ï%?"Á?"9;?" “?>?_Ÿ?B*?‹5? ¤š?"Y0?!v…? gý? <ó?ê?Æè?Ãz?ZB? Ûl?!¸?½é? o®?"Æ(?"ü?#¡?" ú?!rç?"Ž¬?"c?#&?"U/?!äV? †?Øå?óñ?;%?x½?X®?µ?Ö_>ÓZ¸>ד?‹Ï?f°?»Ü?E?¢?ò_?èW?6k?8 ? -€?Ÿ ?òw?¼z?? àØ?" ? ðó?"b?ê ? -?!G…?!þ?Jì?>?x ? 2?V?%e?",‰?#@?">M?Åc?'0? öK?Ý’?—š?Ä~? –?* ?W+? Î? ¡ì? Í?P©?c²? kß?K? "y?÷E?öÝ?´E? ON? 2˜?§?+‹?™à?!ê¿?!1Ô?!…B?!}Ò?" ?"2é?ËÏ?Z ?˜?â?!G?!IB? T?eü?×g? µ?þÝ?‘Û? ]‹? Ñ? ^?ߣ?¼{?(?QM?xâ? >©? ×?X^?C?£s?ÙÒ? ??˜s? [T?![l? z×? A¥?ü+?@U?¦³? -'?*?‹Ê?Â?·]?Š:?;œ?T^?”?1?‚?Y?Qz?ã.?@%?¨b?vé?ìÚ? ?®?n ?ß?q¯?x?”ž?2ÿ?äu?ðÇ?¸›?'¶? ?®D?^Ä?x?Dô?ð? £?ß?8«?˜?^?G[?Šå?©$?¤?²?Ë/?13?Ç?‚_?`„?py?ÚK?ù?TÃ?™?A?€?*?s+?‰ò?F.?ʉ?ÔY?&h?\ƒ?¨ -?y#?Êý?W~?P}?l?­]?õï?¶^?À%?¢?„?›5?šë?uš?¹c?IÓ? ²?ä8?rÉ?¤?aL?ð?¦4?>°?TÈ?°E?°'?8l?¼ì?Ò:?»Œ?ö?m»?n¶?qN?5?d?ß;?^÷?ëJ?à'?Uå? £?›”?ð?Û ?RŸ?žÁ?FË?Ž›?é?„€?l2?¡?”B?ùÓ?O ? I?ÅS?@>?Qõ?9Y?u?2Í?R>? D?i·?ŠH?³º?öŠ? hö?ga?‘›?¢ø?Ìà?:O?øK?™?ÜÕ?«K? E? sñ? -+„? »?ãâ?ó?4§?ƒÑ?Šë?‘V?Ÿ?Áb?hû?‰.? ‰«? µ.?¤? Ã(?^—? _??¥Ï? HÁ? Ú¯? G7?¬¾?×v? rN? Qd?J? -åL?:3? ~j? ¾Ë? 6»? Ùn?0¨? -;•? ͬ?š ? Û!?Š·?¶? -ßE?2î? ¸?–ò?Á? Ý?yZ?ì˜?£Š? ‡z?zâ?-3?qC? p¢? -V? ¬?®&? -ÙK? ù?ùã?Áæ??8? ø?åúó?~©? 0Ò?üh? -7? -xÿ? éã? “?õ€?¶§?R…?JÂ?Žñ? µ?~£?1?“? %?^g?Eý? Í™? -ÿ8?ÝÝ?ÄÐ? -ƒ? Ø\?iq? -;«? q´? ‡s? O=? óp? -/?µ÷?na? Ÿ ? -Ï?—Ó? }£? {[?¢þ?Åá?W:? -_7?ƒ+?òô? ? -7œ?ÇZ? ïË? ¾'? ä&?®|?ä´? €)?ßýð¿?}!?Ž…?¿˜?hž?2o? - ]?îT?ºC? 4Â? ƒÎ?ؽ?:·?ß‚?*Œ?öz?àx? 0î?¥‰?…É?èà? ƒ? -z‘?«?óÒ?„Ð?šº?¬z?¼?k™? -ñ6? -°&?aB?ð£?µª?sû??H? Á? ×a?o?wò?ó‹?!?*\?&z?Õ?ã!?7;?ü’?ÙŒ?ªª?ot?´ÿ6Ó?s?GÞ?Ls?.|?¹?%?'?X???za?¹B?þ?Áþ?åœ?m*?Έ?7Þ?ñï?ðð?Ü÷?E:?Ã?6½?“#?ÝH?ÀH?ñ>þFø?ßa?P?æ‹? È?óÉ?RV?@??­a??»P?¿?=H?¾"?n6?¥Ø?ûÒ?lL?K4?vü>ýX‚?•>û»Q?ˆ³?_[?Eª?Qa?î-?ô?·?ùî?Z?kž?vš?cq?·ž?¤Ù?PZ?ôz?`?ç‘?3Ò?<=?Ýï?@k?V?†Ö?ªc?àÇ?§¦?ó?B?1¶?¥Ý?Ø?}?_z?bþ?‡Î?þµ?Gã?Ë?p1?x¶?ùž?jW?£Ï>ý-n?BM?­?µÒ>þÇX?§?««?Z?Ù.?Ïn>þ¬U?]]?›??¡j?”?Òî?`~?=>þm§?¸U?¼ð?³y?é?–þ?¤Ç?Ir?€?÷?‰?‘9?j£?2±?@?»+?’?+ò?/ë?@—?å?Ð×?¦U?Æ?Ö°?-€?]á>ÿä×?2ú?ä?ÁŸ>ÿÌ?6­?óÌ?C(?ÅÂ?þÕ?g?fV?•"?.?iö>ÿÏÌ>ÿEI>ýU{>þû™>û¨™>ÿV"?`?ÌÜ>ýîå>óÖê>óóÉ>þxF>üÆZ>øto>þ -Ž>ÿ—I>þÚ>ÿ‹õ>þU@?‘Ê?ùß?Œ>ý ú>ü­7>ü¥w>ú‡b>ýŽ>ÿié>ÿ\¼?Cû ->úŽe>ÿá>þmµ>ùœÓ>ü‘Ë>ÿ‡¨>ýYÊ>üÎ>üÈ>ýôU>þ;Ã>ÿwÌ>þ3m>ü(j>þF>üéß>öâG>óÍÉ>û~Û>ü­`>ú|÷>ö4>ú„>þ:Ê>ùçÅ>õÅ•>øM³>úµ÷>ûí>û>ý§t>ü>úcÓ>ôHø>ôºS>ùc>ü¯>÷[+>ôÞZ>ù~>úâ´>ùs£>÷í©>ùWá>øHG>úôÒ>ùõ>ð”Â>ñ\X>ùŽÜ>ûUí>ùx°>ù§³>û2„>ù˜:>ødÅ>øòá>øüÆ>ù^\>÷Éu>øtr>ú>ù¿>>ú3Ì>ú!È>øMœ>÷Ô(>÷¢5>õzI>øw>ùC>÷¾—>ønP>ùª®>ù:>øur>øR<>õF»>í’Ž>ö0Í>ù5>÷k>õL€>ô¹>ô÷ï>õý>õ®Ó>ö…a>ô8Ü>öÊý>ö”B>ö¶e>öM^>ó×f>붓>ëi±>ï>ôï«>öm>ò¯M>íŠ~>êãM>ñJ>ò‡L>õH»>óÝ>óƒ4>ôä>õI>óá‰>òœî>ôNU>ì4†>ëŒ">ô^þ>ï‚é>íZÕ>ô@ƒ>ôAô>óÕ|>ò`9>ñ®…>ïg>ærB>ï>òÂ5>òŠ@>ð(Ð>ñŸç>óÖ³>ó·>ñäÇ>òFå>òCº>êî ->êoÿ>îåð>ò°E>ò{>ï·>ðÒÍ>ðÛý>ñ“Ô>òg ->ðFA>ï*ï>ñ°‹>ífÖ>ç«‘>èƒÆ>믜>ðß>ñBt>ë‰Ä>ê—µ>ðæ!>ðÊÓ>ð`\>ðÕ]>ðšd>íO×>î\Æ>ð€›>ïªÿ>ëÚâ>ëÜŒ>ï2–>î+v>îsó>î±ì>íLž>í—Ü>îÙ»>ìTL>í(ž>îÏ>îÝ#>>ëËÝ>å¸~>è½Ù>ìJH>îpÓ>í€ã>í-E>î{]>íÆ>ìËf>í y>í*ª>ìó&>íW>í–>í¬>ìÒ>ìxç>ì.f>ëðÝ>êÊ>éØ>ãÞX>ÕÕ>ä?‰>ì@â>ìO“>ìQñ>ì/C>ëij>âàÜ>Úô{>æ>é”[>èâ>éì³>èQ>é¿>ëj€>êäå>ä- >ãV >ê'>éæ¹>ê¢Þ>ê¡?>êÇ|>ênN>èûŽ>çóÝ>é™[>éð4>éXæ>æ¥Ï>Ø"#>à·|>è -e>ç7>çÒu>æƒÛ>ç˜>çÈ>ç%ý>ß#û>ß‚Ü>áæÛ>Ø£s>ÛªZ>ß½Å>ç>çå>ç;–>åÐ¥>áê•>åô»>çg#>æ·>ã!½>倌>æÍd>à̾>Öuñ>Ü7>áâ;>äݺ>åúR>æ6X>ã÷;>á8˜>ß–>Öþø>Ýçè>ßüY>å£>åò—>åTÃ>ää¸>á¿>â&}>äÝ–>ãj×>ä}>ã"¥>ܵê>ØH>ÔîÝ>ߣ>ä%>ãNŸ>á´w>áác>àÕ;>â6æ>ãì>ÙÏù>ÎÂÃ>ß^>à`¢>Ú>ï>Óúú>Ý Í>ÏS>Ó“Á>ßçS>Þº^>à÷>á Ÿ>àÂ.>Úõê>à.“>áÏc>â#¼>â-$>â\¥>áí¤>Þ">Ú>Ü·Ö>Çÿ’>ÐQy>Ûž§>Þœg>ÞYÇ>ØËØ>ÑûX>×W£>ݶH>ÚÎ>ÚâØ>ØÐœ>Þ3Ð>ßΛ>ÝüO>Ûõ^>ÞUµ>Þm>Öjã>Ùòå>Ý"8>Ýðå>Ùp®>ÍèQ>Ò.>ÕŒA>Õ#>>Ìâ“>Ê+'>Ó i>ÖN>׃M>Öá›>ÒJi>Ò×>ÑÂh>×/u>Ñ&>Ãg >Ç¢>Ðz>ÑÇ>м/>Ð#“>ŠÃ>ÊÐ>Îü’>ÐçC>Ô:>Ó‡Â>Ïa:>Ê’¼>ÐW]>Í}M>ÏL~>Ñ2{>Ñ>Ëwõ>ÊFH>ɼí>ÉòG>Ìõ>Ôü>Ð-Ç>ʇð>Ó [>Ò2¹>Êü>ÎdJ>Òº™>ηÑ>ÌÑk>ÔÓC>Ô•7>Ì0>Êâ‚>ÓT¿>Ó×á>Ф<>Ì2á>Ï3¥>Ò^5>Ôƒñ>ͪ>Ë}å>Óàú>Ó>Ï6>É‘>ÒÍ8>ÒK‹>щá>ÍËq>Ϭ>Ò3À>Ð3&>Ðí—>Ф,>Ðgº>Å\½>ˉ>Ó c>ÐË›>Ì />Ä•>ÍÚ>ÕE}>Ò>>ÒóQ>Çú>ÌÖ8>Ó>ÒWF>ÐÒ->ÆiÍ>ʃ>Õug>ÔpÁ>Ñ@1>ÍI´>ËT¡>Îðª>Ò·K>Фƒ>Ëoç>Äÿ>ÆKe>ÎåÖ>Ó;©>ÉÙ=>Ⱥ>Ì -…>Î+>Ïéâ>Ò’ó>Ëð]>˃>Òs>Ð`?>Ï_>ÏSf>ÊO>ÊÒú>Ó>Ñ>Ð >ÎÇÉ>ÊS±>Ç¢~>Ðê>Ɔ#>¾Æ ->ÅAº>Ê÷Î>ÄèE>Ï3@>Òvþ>Ðek>Ñf£>Î\¦>Çd÷>Çx>Б­>Ð`>Ì [>ÈS>Éh >ÅK(>Ä7›>ËâH>φ¬>ͧô>˸¨>Æ»\>Æ7Æ>Æêý>ÎLc>Ι>ÍL¶>Ïõƒ>ÉŠ>ÃMõ>‹a>Ëà1>ÊÔÔ>Ìðû>ÎÙñ>Ìoí>ÈÇ9>Æõ>ÄüÆ>Ë©6>Íò>ÍX±>Î §>Éßg>ÈóÅ>¾‰l>ÅŸµ>ÊS>Áé>Ç d>É-C>ħ>ÁC'>ÅJ>ÇbÏ>È…ý>ÅgÀ>Àv§>Ç’Ÿ>É‘Ñ>ÆË>Å–é>Éè>ÈÊØ>ÄK>É'>È”ë>ËÎ5>Èñô>Âä>¿,j>Æò>ÊåÈ>Ç_Â>Æè»>Ê–Ê>Ëjt>Ä»>Ç{ù>ÉÉ5>ÊÀä>Ë•Ï>Æ€Á>Ä™©>Ëa>Çå¥>Ä…I>Ä×V>Äö>Êa(>ɹä>Åq >ÉHÊ>Ê> >Ä=ž>Æ>És(>Ǹš>É—#>Ǹ`>Âïø>ÆlË>Ū°>Äýæ>Ã"Y>È]Ð>ÇÖû>Ègj>Æ%Å>Ä%=>ÉŸ4>ÉæD>ÆH^>Ã6–>à Û>Æô|>Ƙp>Ç¿>Ãë>ÈP>ÈÝa>Æ;H>ÃÈF>Å5+>ÇŽb>ÅØl>Å4½>¾Á4>µÒƒ>¿óô>Ç»†>Ä >Ã">¾q>¶>¶ù©>˜>>Ã>Äf¥>Æ»¢>Æ2£>Á«ß>À’k>Äôm>Äy±>¸M£>¼¨>à C>Å”>ÄH>þ„>Á¡~>Á)D>À¡r>Ägæ>Ãûœ>¿¸T>¿û >×Ú>Ä÷Â>ij„>ÀÝ>ÁPñ>ÃEr>¶JN>»B>¿år>ÂL>ÁBÁ>ÚS>Äfç>ÁÕÍ>Á>">ÁŸ¡>Ã7©>â>ÁbÄ>¿ -:>¶à>à ‘>Ù¼>Á½>ÀÅü>À¨¨>ÃÖ>Áðb>¾1€>¼ì&>¸H>¿/,>ÂA>Ã*ª>Á)0>¿’>»¨ý>»[•>¿â‘>¿)˜>¸H·>´ž>ÀU>Á^?>Á°Ÿ>¿Ð·>¿3>½ÛÄ>ÀN>Á>»>¿š›>·àÞ>¼±Ù>ÀÁ‡>¾R{>½É+>¼$e>¤xh>¬ôN>¾àg>ÀCâ>ºÖ">¹z>¼É—>¿È>¾T>¿Š3>¿aó>½ >»«=>»^¹>¾Ë´>ÀN>¾k>»t>¼©É>¼ª‰>­»>¨·K>»s>·ýÝ>·/U>¹½þ>½åÉ>¾^Þ>»ü>¼@³>¼ÑÕ>¾mr>½ã;>¾Z”>¼¿=>¼s¸>»>¼‘þ>¾ ™>½n>º³c>»Ä·>»“[>½w¿>º.!<~AÐ< <þ<ÆB±<ñˆ÷=ó]=&qé=)R¾=7º=¼<ë g<ÙTt<¾QB<“ 2

    ‰=2) =[–=mÂ=pû·=u =÷=A=–á{=špz=˜}=”|Ç=”†î=—ƒÑ=˜‡=“X =ŒôØ=Š==‰ZŽ=„0+=qØ=YZ©=Jn =EÞâ=G¾ô=K¹N=L©¨=I^(=IjÜ=So+=` †=aÉ=U‚J=K6Ä=K$=Q "=SW»=S2=U‚=[×e=a»À=`nê=SoN=?Øâ=4y=;Ùø=Oâ(=b˜ª=oªØ=|>¨=…¬Y=Ý=–”=œÖ‡=Ÿ!½=šÈ=Ñ=‚=x=nƹ=_Ã=XSÍ=YÕ5=h$ƒ=ƒ{ -=—¼=§ú×=®iø=­ u=§®u=  ý=˜±@=“}Û=Ò`=‹‚p=…L=yþè=fs=S=C'µ=7Z=-t™=&ôm=+è=A¶/=`é­=z¶=„j(=‰±=Žæ=“˜ú=‘rB=ˆ›Ÿ=ƒNœ=Œ;=¡þì=¸bŠ=Ä4…=ÂÕ’=¹—Æ=±ºP=³B=¾@i=Ê¢r=ÌzR=¿ã=« ÿ=•üZ=„¦Q=o¡°=^—=Uì;=T¼1=W£y=[Sf=a,=m‚ñ=€Î=në=›Ù=¦ÜÍ=ª…=Ÿ=Ú=† -w=Tº,=2¥=-¬Ï=?=X€=lã£=3=‹î,=œ=©3=§Óæ=š®H=Ž =ŒV<=’Åù=ž;Å=­=»TÚ=Â:m=¿3ç=¶+=«½o= Šð=“…Ç=…×N=tŒ@=dºÍ=ZëÎ=S=Kõ¥=Lòú=`eI=Ú=ŽÛÑ=“W.=“¬Œ=—L,=Õ¥=¢!W= JÄ=—DÀ=‹=ƒó¢=…?T=‡»ò=‚Yh=lJz=W•C=N² =JÒ8=Fþ*=IéÛ=\l=z^3=Še¢=Œ‰Ÿ=€'n=V”Æ=2²=!Cp=%£=7Ð×=PÊ=b’=jÏ =rÚ=}ˆÎ=S =„È=€¬Ú=Œ¬š=¥¬=¿„z=Ì›.=Ä c=­E³=™†(=–Ü=¡`=¯©´=¶ö=³ƒ=¬¾¦=¨Ê=¯#Œ=Ã…—=à„M=ûL´>Á«> ?Å>©>«£> t>uk>> cP>GŠ=ý’=èþ§=ßw•=æ¹›=ø>™>3³>’=öР=ãþˆ=Ö =ÓMþ=ØdL=Ü—†=ÞèÅ=ã,=æ±Ì=ä–v=ÞBÿ=×îc=Ô=Ô­”=ÛƒÅ=åŸÈ=ìИ=îµh=îD“=ìV=äÎŽ=ÖK=ÇVo=ÄÝÆ=Õܦ=öú> k>h>…@>“A>R> F%>&(ª>'>!­9> ->/t>L>$.>'ô­>*!—>'J>``>Nm> -³I> –M>±²=ô=ÚN=Ñks=ܺ…=îtî=ü¤‚>¨<>Ø> P¼>ìZ=ú ë=âˆa=Ë0¡=¿Žø=ÆÊ¥=Ü`Á=óf>°>äî=ýª€=òXî=áÞ=Í®þ=ÁX=Éø=æÌá>ÿõ> ¾<> [Ú>ä„>¢ô=òCð=íò¶=ú(Þ>Ü> -ç3> -ɇ>ô–=ýäm=èŵ=Ú$¾=Ügì=íüX>ÇN>ߦ>o=ö×û=èüá=߯Ö=ß–c=éŽ=÷,>¶¶> C>#‡=ê2t=É"x=ª@Y=¡ç¼=¹“W=ã¦>ô> 4S> í¿> Êô>Á5>÷ì>7j> õš=ñì}=¾ª}=Ã=bå=aGŸ=!œ=Ãqã=ñ!ú>×å>[%=ðDI=àí;=Ñ¿=»N°=Ÿ¹_=ŠÝ -=‚íß=‚1U=„-˜=Ð=­˜=ÚŸ™>ïM>·˜>–I>7z> y™=êÝŽ=¿%=«÷:=´=à -e=È€=Ê’,=×.Ö=îær>,P>fC>îÅ>F>·>g=ï¾Q=ÈíÉ=«0†=£ah=³Y*=Ó%¾=÷†Þ> Gr>¡J>+ë>3]>7]±>7w>0xS>#4,> :>ÑW> -E¾>_è>›6>ý>èÑ> ©> M¸> .> ÷> ¿£=ùÈŸ=ÊwÒ=˜X­=u÷l=Ò–=¢)È=ÏqÚ=û‘$>Ï>*ž×>;f\>Aˆó>=_>0Tê>)?> >¦> -¯>½î>§Ø>cy>(ò ->@^>LÞ>>GM>2o>UÙ>“º>‚> ->Ëa>¸¬> ±‘=üœv=×Xª=¨IÃ=t«²=@ï=@)d=YN=sž½=‡Ž=–Lè=ª#‹=Ëö=þS+>%>(ñ>3Ï>5ñU>*ÒÕ>S> j>m\>3¤(>J#‡>INì>1}>ó%=ú‡ê=òa<=÷Y=õ“Æ=õ…)>`›> Šw> Ú>ñÂ=õ²t=üÕ[>œÈ>'}U>5€“>:ª!>8®>,¦J>¦%>ö=æšx=¾õz= Ö)=ŸÁû=ÅÜþ>}>ÈÒ>1µ>=ÏÈ>DÀ/>@Þ®>/œL>/>5°>-ØÑ>Kç>cݲ>iý>Vhs>0‹ >ì=Ù0=ƾg=Ì)Ç=ßu¹=þ×> ”Ñ>Ã>w> -ð> m_>#m[>@Qòß>YnÖ>`—Î>k«N>sç{>oN>]«@>L2A>Ež3>H–Ç>Izû>>ÏX>,ìÃ>ë>¢6>[×=ÿÀÿ=á“=ß6>"øì>CCž>Tþ§>RšÓ>@j:>(7^>Ê>X¤=éuÞ=ÇÉ—=«vo=£“Ð=¶ü6=ãýÔ> >(î>5S’>7mj>2‚>+#Ë>'³[>.>¬>;û>GM>Iº‚>Fåˆ>Då™>H±_>Pcá>Sß>KÚÓ>@»S>;97>>„Õ>F B>J= >G >=í>4í>/j6>1£È>5 ó>3–ð>- >%{Ÿ>{>ñ >ß•>H¬>$3ƒ>"sN>ð>?A> ¼«>t8>£>ݦ>%èï>dq>Ó=ܵí=Â6=ÈÃå=Ø=m=ÕVÉ=ÀDÎ=±Ø=º¸å=Új[>@ß>ݱ>Õ¸>A5>­Õ>X>¢=Ú( =³ Ã=”/= =t6*=„ =‘K¨=”h­= l=†vä=Šù=—v==ª¹=ÄZ€=ïð>³>(a.>+>#žŸ>$µ>6`7>P.4>dÕõ>nl->r>wÂø>~¿c>}\>kju>Pu¤>8ßØ>(¾4>9 ->ú>]‘>ÐÂ> 0=ì"=å8½>%>€>.D’>7¦À>B—x>Sé>]åR>TÙ>5E> çq=á¨Ý=æxv>»>3Øö>Q‘€>_ÙJ>e%'>q&À>„*Ä>ŽÆß>’ ª>Ž!Ã>„4þ>d°.>5e>M>…Â>„š>%x>2åØ>A×ì>R“ú>cqº>uÊ×>„7Û>ŠbÅ>ŠÐÞ>†H>Âç>rå›>c¬W>Pô8>>c…>,3g>×U>H¢>Cq>.H2>I­Î>eK@>}8Š>†?>‰8 >‹Õ‰>ç¥>—¶Ç>ïå>¢">£=:>¡S‡>ž#Ã>™†Q>’(|>ŠÐN>ˆãÕ>Œœð>ÕW>Ž’“>‰‡A>‹>tó>s•>‚¨m>Ž6°>”À\>•Õú>–S(>–I>‘v>† º>rÓY>]­d>MõÚ>K#ö>Y¾«>oÄ>~‚ü>\„>w÷Ý>_±ö>C–>/Í×>0+{>Hö¼>q·{>Ïÿ>›?j>›+>Ä>„'¼>Va>€”x>„:>Œ-i>˜R'>£Wõ>§©h>¤Í$>¾a>’Ýv>Ï>XÍE>5 -b>%+)>$Ü$>$Å>! >'óÿ>EXá>qÕ>'û>œïb>¦ûV>¨‚h> «é>“v‹>ƒðÌ>`qg>/E‹>uU=Ènˆ=¿×4=Þyø> Dw>3Vß>VÙ&>k†>fyÀ>NR>?a>Eú[>O©>GO»>0Ä+>‚¾=âÔþ=ªòV=Œfâ=‰9~=›ú=ÅœÞ>Æ×>*o>IKc>U½>Jê—>0Vr>Ç =ûm=Ýó=Ëî³=Ã&‘=µ)9=¥{S=°Í3=éTù>ãf>Bò>_s9>xªw>…1²>ƒTE>fq>3^Ç> -­>r ->Z{>)Ô[>5)">/Ø6>#‡˜>íú>$Ùê>#wi>˜×>(5ó>H¨w>jLº>}Å¢>„Ç>Š‘í>Ç5>‹™Ü>…üÞ>S6>•J>€"…>‚>‡™>z>Z>s¿>H>Ó§>ß5>…!«>cÇ>=Ú0>&B;>Dk>/÷>)"–>>†V>G·ž>>N”>-fG>"³>!cG>$ Î>Ê >v¢> ÊÑ>E[>8òÔ>R>eÑp>tTE>y]Á>póA>\4>G-å>AÉt>Lâ>[A>cP>>_êÛ>OÙŒ>7 ¯> ù> éq=øòá=÷¶>"=ùŽ8=Ö‡ô=³è1=°"X=ÉN=Ý‚?=ÔÈa=·ÿG= ­ø=é=«ÙÇ=ÁºU=Ø– =ë‡Í=ñ’º=ãJ)=É;:=¸Ïü=ÁõB=â;>Ê_>¶=ì›ä=Í -Ä=¸î=¹§==Ølj>2­>(>'JÈ>$פ>[>>Hû>bà>òÐ>ˆO=õw8>Ëj> Î >eè>B‹>‹A=û==ïB‰=á··=ÎV=¸: =°ž=Ås¨=óă>Ò—>„>îG>Æ> ˆ> °Ï>Ži=ûè=æ/b=ÓÊ#=ÎöÒ=á>[>,X>#Ån>5Îä>2_Z>d>M]=û¦>®­>á> L>ñä>"éƒ>@æ¦>?R5>#Š>v>f>3x>O„>o k>‡§¦>“²Ú>–¸(>>„Ú>xx>{#²>€04>x 5>kú=>nÙ7>'Ê>ƒ,>~2&>u6n>i¼º>Y¤K>WG>kò×>…é>ƒ>”Å>—M¨>šRD>›ÓÀ>šw >–ÔÁ>²µ>‰À(>„é}>gS>jþt>O>>9î¸>44”>:¿m>FsB>M…d>Gfm>5šˆ>S>Cß=ØÊð=³O±=“-=n}/=A<á=(õá=1H?=]D¯=“qâ=Â2=õb>Û‡>#ó>>+Úß>-ÔH>+„J>(wk>3>>Ržî>tj>€Ž>€wY>…5>‘©>™Þ>—pç>’K­>—¹ß>¢7/>¢!7>˜J¶>‘Ï/>“ C>”!>‰ñ±>ey’>6¯>åá>*ì> _R=îÇ=¹õæ=ŠŠ¾=]z=^W=Œb!=¼9=òÌ>ui>1Éå>R›>qi”>†Xä>”Fg>£¯×>²>ù>»×>¼~>¶é*>³>µnÒ>½·>ÇoÁ>Ï8%>Ö>˜>Ú->Õb½>Ï3>Ñ^ñ>دÝ>Ýé>ÝÑä>ÙFÕ>Ó1->Í‹™>ÌÁë>ק>éQÌ>÷ :>ü‹}?m ?¤‡>ñ» >Õz>Ã’ÿ>Ë™\>à¨E>ñQ>ù«G>û°Ï>úæÔ>û\q>ÿá?šp? ¾?×Î?­?º?Pû?½k?I«?™@?%ä>þÁ$>ùk>úF=?Œ? Û?Ú? a0>üɯ>ÙÕR>Ä›g>¼’Ë>¼5E>Ç=>ß-Ù>ýCc? -Àb?lz? î?‰ª?¢?¾ù>ÿ¼«>Þ/æ>°.}>”¬8>¡Î>ËZ3>ñÁ.?ë2? {o? -­?ˆ?áÆ>õöŸ>ê*ã>ãÃs>Üð­>ÕÒ°>Úpú>ëÿÈ>ù;>ï6¾>Ͳ >®ëª>°$§>Ê” >Þ±Ñ>æ‘>óŸÎ? -z?ÃA>æ®;>Ò2Ø>ÞX½>÷µÝ>ûæ~>åF­>Ǹ°>»¤>Ë&³>ìeH? ?Õ?Ã÷? -¿1?ä°?Tæ?Åþ?£?9ƒ?ý)?ŸY?¯u?¢T?§è?¨ó?P‡?É>ôXs>ñE¥>÷Ôw>øvŠ>ëK\>ÚÓ{>ÚÕ>èôÚ>ø>?pñ? ½$?ÿ—?ì? -[{?d>úk’>õß=>û…?A ? -"l? ¥q? W?¸I>þ»·>ñt¦>ó°—>üס>ÿ“p>þ? m?(?t?#>þð>öB>ïËÃ>çV]>Ùþ{>ÌÕû>ÊN›>Ô¸‰>é£á>þ˜s?À?ÜÏ?QH?úž>ÿ!>ßz'>¸Ü>§™>·ô>×"©>ì“ >óã>íÑ >â8Â>ÙÔó>Ø >ÙlÐ>Û+y>Û[>ÙÄÌ>Øïó>ßÙ´>ð«e?@`?í‹? {?¢ª?Ú?Îø>üµÊ>ñç¥>è‚J>åSå>î{Ò>úí°>ûôž>êSA>ÑŽê>ÇÖ>Ï^n>ÙòT>Ü·p>ØíË>Ø6ç>ÝÛh>á´i>àÛØ>ãNŠ>ïtÇ?'?³ñ?u>òÍ ->êiõ>õò>ÿ>üŽÔ>úð+?Tþ?>øÀ¯>áCQ>Ï?N>Éò>ÎÛ¬>ØÃf>ÜÝ >ÖsB>ÔOë>à¢>ï˜?>ýÅ?,?gÏ?ã‹? ºÉ?zÞ?…e? µ?Ëu>êÂ>Ô( >Ùâ?xx?ét?#—‚?'7?&Ú%?Ú?i›>û›>Ð/ñ>ŸÝS>ƒ›>™çê>Ööþ?Ý ?!„?Â/?ï? -ÁÊ?½§? >þïe?‚?.U?Öò©E>óS•?+?µ>þdÑ>ø&ç?Mf?B±?$ü?žñ>ñ_L>ê1ù??6?LÌ?&€¸?-sò?/W@?)ú˜?ð+?ñ??*~>݉6>¿¯Ø>À8!>ÐO>Ýy>ô–ê">Ýþ<>íøÜ?oß? 5³? Ä?Z?Œ7>öµà>Ú_æ>¼¡¥>±™I>ºÒB>ÃùR>Æþû>ÈÅ>Âæh>µëà>¤KÁ>—lò>›™ >®µ1>Ç?>àq>ú’ý? g?úÔ?9†Ç?I¥×?K-?EZl?=?Ê?4˜‚?)s{?¦>ôoe>Í°W>Óƒ{?þd?(/?9…ì?8î3?5Þ¥?8¾ü?=É»?C·÷?HÒM?B_Ÿ?,7É?LG?w?·G? )ê?ƒY?,êÿ?2Áï?8íÔ?<&o?;¯´?@ù‘?HÀ?>´Å?$ÂW?í? þ?$D'?-áQ?5àø?: ‰?5+j?,1É?.ˆ’?:Ý?CB?Ezè?JÖ»?P9•?I:¶?8ðr?/* ?0¡!?4k¼?5ˆP?2b0?'–º?ùþ?Èà?¼&?/%b?;9>?;ú?2Y2?"¤v?¯Î>ÌÅ1>·]ž>àhÛ?-?ø? ¢?À?é?À?$%ì?'`ç?&%ƒ?)öÈ?7kÎ?BÌ>?@JŸ?3•?*.7?-•‚?0°+?Å4?˜×>ÿŽ? ê?é?ÙÂ?+S?>^u?IÍy?J”Ð?<ØÆ?&@P?¡C?' ?7çå?Eæ¶?Kì ?EÆp?7ô‹?/›‡?3(?9Üô?;û?<’?>jç?<6¹?4k6?3¾L?;jï?:ÁJ?-ä"?#S|?(ˆ?;¤?Mœ…?U7(?MÑ?;‚Á?.b ?.‹:?<Æ?Mªƒ?V?~?UÊ¢?Unz?Rôf?N?Lï¢?JÈ—?@ê,?3?+\?-‹Ø?/v?+ú£?&»°?!n?\ ?*t?;—1?C®?C‰Æ?CX ?B@'?>BÔ?=†?BÄ‹?LtM?V¹L?]Y‚?_ßô?e-œ?lÉ9?jÒÀ?Zw‹?Fó??Y`?azˆ?a\?Y}ì?Nr‘?BMs?=Ð?Bѯ?N¿ý?[1B?dX?f‘?`qÕ?V\6?R=¯?Y,?h¸Ù?w›)?{$Ò?ri?d +?Z?U•Î?L˜°?;ÈR?27i?;!˜?ND?^xõ?dm©?a@?]àÏ?aøÜ?jñ?j]#?a,Ü?V«F?Oùb?Oßž?WN0?_ç?b¸5?`Cž?[æ?W“ê?XN{?Xýx?Xt?Y_x?^¬?e=+?k0(?h¸±?\q?Q[[?OÔ?Pô—?PÀë?RFv?WÉ?[Ç÷?Yv?T û?Q)ú?T—A?]?b| ?^>?Wt5?Y¾?e™O?pÄÎ?w¹?|”Þ?}3k?y?us?wãd?zÍÊ?sJ?`hâ?P¸?Lc]?Qwù?Zƒ?bÉj?h±[?kÉ`?j ­?g8 ?k½¦?p€,?mÜ{?khf?nž¬?rY}?rY?sñÌ?yy$?|ž?zÇ?y–ó?w“N?s U?n&Þ?j—Ø?i³p?k~?nà‡?s7?vë?s -»?k4–?e -E?_â‹?Z?Ú?Z?bàÃ?oÜ£?xòÿ?w½^?r€ß?u"(?~{„?ÅK?¤¤?‚5?‚4·?€fÆ?|¥§?w à?p_?n~w?n«7?j»E?i‰Ü?jðõ?j!?k‡y?q„”?{WJ?ƒ\?…ãº?ƒs’?|ž?r?kÓ'?oÙØ?{ó1?‚U%?L¿?z[ó?t N?o[Î?mas?rE?xÈU?z·É?y£Ñ?yë?{1ª?€-?‚Ýi?„ì«?†ü?…QB‚?JßÚ?]Ù·?dµ6?e2×?ma?xó?€U‰?ƒÒ"?„˜Ë?‚!®?vÕË?kÚ™?oe:?pyº?b¶Õ?Ui#?ZÇS?nb?}B£?‚n?‚Æ?oÝ?q¾0?vCŽ?}øe?‚û¦?…0?„w¥?*?y}?p.»?l{Ç?hÁ??] c?R° ?TŒ#?]¸¼?jGÌ?v"Ò?xÉ-?t¶æ?r Ì?tˆu?uX¸?t–Á?vòý?wd&?t$m?l5m?d£â?cF(?d‚¬?bž\?Zº?RxN?Yç1?j½Ì?qT›?k_?^?Pê…?Kþ9?SHm?\Þ?\–§?\ð·?`œó?_€ò?\Ú?a)g?jŒ?k`F?d‘-?a”?jÍV?uJ˜?|3]?ýC?‚¥?xk?hŠ2?f;þ?b¼A?Q7?>q?BVW?]t@?uG?´·?ƒ?wŸ ?eÙ?_<´?aL„?enè?nàÎ?yÊ(?~Ô?~ù?×—?€ýÊ?ƒÌ?„ðG?‚E…?rªË?cÄm?e=.?hžâ?ic2?o¿?qf?k}A?m/Ï?r5?pðù?pM·?j%Ä?Uþ|?JT2?R¨»?\‡T?aÜ€?h¬?m‚"?n±e?qùO?v׬?xÜ:?|n9??€²K?x¾y?l–?][D?UÏŽ?`°*?pÒ¯?tÌ?oÂÝ?k{?g§?a -™?]¼œ?]pö?`à?i@¼?o B?s¸?uû,?zç?“;?}íO?uœì?i÷?\gé?QÝü?RðÀ?YCç?[at?ZIû?Zá/?`ž -?gÎô?l'°?pÇ#?r«»?jtÌ?_ï?Xìì?]‰j?^G­?W» ?[–í?_?Z£Ÿ?XU2?\X±?_E~?[04?WuR?X¨ã?^®Š?h§™?ri?vnñ?vR?ué?q0F?hj2?\²#?ER‚?'4T?î??'%D?<@‰?0ÈO?{³?! $?HŠÆ?a]?i6Î?lÊ—?i ?Z¢s?…ý??5G?I¿ª?A–À?0?@з?^õ?h5?dÃ?g"¤?xxŽ?‚îÊ?€ßô?týn?jš¼?e?j×Z?~Ë­?†OL?†OÑ?†j÷?ˆšd?ˆ-¹?„¯·?‚q?|¸ä?j¤Ö?[P7?a[û?nX¦?rº?y6g?ƒ²"?ˆss?‡éÓ?†>ß?ˆG@?Š¯?‰â]?‡¢¦?†U?„âÍ?‚^T?€îç?_›?u?‚š?€E?v5?nd?jC®?T¦/?><‚?MÉV?lT±?xÖ?{LÊ?‚ˆ?…™ã?„˜?²;?u ?hO×?pA?~¯!?>?}Êé?z¿!?w…=?sœ?zp?‚®^?„ÙV?‡_X?‹#—?ŒaÍ?ŒÒ?‹¶¨?‰M‘?„Ì×?‚P½?å?}pÕ?|d|?{µé?rÎ?`ÝÓ?Zuƒ?m±6?‚`è?‡[?…÷?„>·?„Ýé?ƒè -?Ï ?€Zã?€»Î?‚ö°?‚É”?€¢#?{d±?t•‘?q?:?pèc?pƒú?m·3?cS?]Âà?jV9?s…§?v9Ý?w1ß?iF’?Ue?Qú&?_îT?gy\?eî~?nî?}5¼?€Ïè?€¢Ç?‚é9?…"ð?ƒ;x?}ZF?z†!?~-?ytK?wÍi?i”?ƒŽ%?uk?ej?mn—?r$k?j5~?d¶×?ikd?x|­?„Üã?ˆâ‚?ˆæ??ˆÊ?…{h?{û?hY?f‰ö?|-O?†8?†þÄ?„6 ?}H?n%?mó?€ÔÂ?‡¾N?†¨ò?¡Ð?y'?x¢4?€Ò?‚à?‚©‰?‚Ü?}¨??zqè?xùÂ?tvø?n­©?cKÿ?fRù?w‚]?wÃ?ldç?n¦ÿ?{Ý?ƒ'Ž?ã?xN?xÔ¡?}BT?€\?Î?|C2?ýF?Ýò?µÒ?„)~?„6,?~‡X?zªý?{ëÎ?x;Û?t’õ?{éÛ?€pÈ?|Eò?qñÏ?kz‰?o ?u´€?|J>?‚ö?…ñ¼?…?N?„EÆ?„ó?ƒf—?€Ôˆ?x¦}?q —?vÿ?ˆÒ¯?‡Ç?‡œ8?‡L1?†F.?‡ñ?ŠR¿?‰ßú?…Lí?…9y?ˆ¤ç?†…?ãC?{º¼?ƒà&?‰×ô?Š©_?†øÊ?ÍÂ?~-V?ƒ"³?Šjˆ?U ?xÀ?Œ~û?‹V?‰B?ˆX?‡¬‡?ˆŽ?ŠsÆ?‰‚Ÿ?ƒÓÜ?v>´?pcÿ?sù7?r«?xË?‚¶ˆ?†P{?…US?„&?†Ä•?‰¦q?Šhž?†Ûr?„ôð?‰¼ô?è[?¶L?‰Dð?…Ù?…eœ?‡?ˆˆú?Š·?ŒK$?Œß?‰Ìé?†HŸ?‡²?Œd}?Ž¶?®¼?Žo§?o“?ãÁ?Ž"Ø?·¶?Ž ù?Ž -s?®?‹ñ¾?‰ûÉ?Šƒ?ŠÑ“?Št-?ŒXe?Žº~?YÎ?Ž‰²?ŒVj?‰†c?ˆkã?Š M?‹QW?ˆÌ/?…Ó?…! ?„t~?€O?€P"?„û0?‡ìf?ˆ2=?‰@¬?ˆýj?‡.Z?ˆáã?Œ'i?X?Œ_Â?‹ŒÉ?Œ `?ŒvÒ?ŠªV?ˆ%+?…çG?‡I^?ˆv»?‡Éâ?ˆo?…X¦?lÒU?EÜ'?J £?gµì?q†N?`¤?WÚÈ?p˜f?ÌS?†¡C?ˆìÐ?ˆû·?ˆ|?‡¡?ˆ•¦?‰É¡?‰ì9?Š¼D?ˆÆ -?„*m?‚~Ì?„‹ß?‡t‰?‰šô?ŠD?ˆìc?‰¸×?‹fë?‹¸å?‰€?……Š?…uC?ˆîà?ˆÑ?†`?‡'=?‰2Þ?‰•Ï?‡æs?„°ó?…7?ˆ\?Š¯¯?‰ªÐ?…Ûã?…UN?‡_^?…J€?…<÷?‡‚æ?…œÀ?„{Á?‡!µ?Šu)?‹¯?Šþ?‰'x?ˆ‚?‰ñ#?‹Ø´?ŒÑ?{>?O˜?Š–?†ú?„?…­Ö?‰:?Š0ù?†Ï=?‚,4?‚ÙÐ?…úb?‡ò÷?‰\ö?ˆK{?ˆÇ?‹V?‹FÞ?‡³p?„ú®?†s¤?‰s?ˆ» ?‡k›?‡Áè?…Tº?€á_?z:?‡ §?‡8…?ƒ×?‚¸k?ƒqx?‚äI?ƒ<½?M?€¾û?‚´F?„€Ÿ?†ˆù?‡Ú?ˆf2?‰Ý:?Š±?ŠÊº?Š¿g?Š‘?‹uª?‹Š(?‰šê?ˆ2?‡Úý?‰–è?‹4?Œ&?Œ Ó?‹È¿?Œ2Z?‹y?‰ µ?‡6É?†E©?‡+”?„ˆÏ?…¡?„À¤?„ÃA?†ÉM?†×J?ˆ?‰}è?‰A†?†ñF?ƒ§?‚XÚ?«Í?v’@?€_ù?‡ì?x{?v?Éj?ƒTº?‚yy?Õ?ó©?~"Ç?Ž?n?ç?ƒ¯î?„êD?„[¹?„ –?„k­?„X:?„3€?‚ý?€\?yÀì?|Y?~¡q?-n?‚(B?„Cs?„cå?„V?‚á?zÂ?v¸t?€ò@?„_?„œ*?„e0?‚÷?ÄA?ƒ‹¾?„ýg?„Þ?ƒ»*?¼˜?{;v?¤Ô?‚¦J?‚çŽ?€ZÎ?~åÖ?jj?‚@?€ùÙ?€W?~j?|B?x)¡?tp?{›v?« ??€£l?+ü?€Å?×~?ƒ &?ƒ Ÿ?¨?p6?õë?çc?{'é?|¿¸?}v¸?|2Ö?}T!?~-à?~•¯?|?|)?|Zã?~ˆP?€Òà?‚Q’?ƒ -†?ƒ=¯?‚¨Ö?ÀÈ?v~?zƒk?yùç?z‰5?y?}ÿ?5‹?Ș?‚?‚êš?‚ª?|ñ%?v;\?w`º?} -Ž?€Mˆ?~¬T?|çˆ?{K?yýì?{Y¥?}?}Û¯?@_?Ä?~—÷?;ù?r?Ÿ\?+£?€e_?~­¿?~å:?‚=?“¹?~£Ó?€2¡?‚¬&?‚õ?”0?~c?~Ä -?¡Æ?Çf?ær?Á?€¦1?}hó?u±?r/±?w‘?R@?‹w?‚3 ?5,?~p?}M?u¾o?r›D?vÍ”?v'?oN?tÏ?€/2?‚F>?‚¾?|0?€í,?~Lý?|þ|?{Õ´?~t?€ìj?~BC?v[•?w–z?~I`?}žý?€5e?‚ã‡?ƒP6?‚‘§?‚so?‚^c?‹9?€Å:?+?‚F ?‚ƒM?€=+?}è_?€à¾?€q?zã!?y¤?wŸ?zß?&Ì?€ÛŽ?€pÏ?~Éé?u§?ry3?xaõ?sŠ?uÌÓ?|¯D?yf?x¨?wR?lm?r;?€[?± ?§§?Õä?zí?x2G?{|Ì?wÖ?l4?uè?~²ÿ?u5Š?gH`?iX?pù?lÅ•?lC„?sœw?tGZ?t¿ª?qFX?q¯L?w¢V?n3o?`Ý?gþì?u®?roŽ?k¢5?mñŒ?u™?uΆ?n‡?iÉ«?mbë?v ?s¼Ü?oÞË?wÅ -?{€v?y¹¥?t9œ?q>Å?rµ5?u×£?z¢?r?mçé?wäs?xq)?o•ƒ?lfF?m]q?p¢¸?uô$?pº?cX?dþÆ?oÿ?q¨?ul±?w1r?t5??p÷û?rcÑ?ucî?r›º?o?nP?hàÿ?gPB?mµ¼?k²ï?aØ?\âÀ?]êÕ?iÌ?sµÈ?qÚ‚?j¸ÿ?k Ù?l™G?nÑ…?lå1?cX?dÝ?cº¾?eÖÁ?lˆT?kÊ&?hd³?gäœ?jã/?l´?fñ?`ö?h¿?i{?i&M?ht»?kJd?qËÈ?qŠc?oü¥?s2J?nÄ?g»ù?mp?p ?l?W?i%?i}ª?aÀM?]¡S?j^?oZ¡?dOš?`G,?i£?n=Ò?mTU?nû?s'Ð?ri¶?p}g?q·`?u„?rv³?k¹?hû1?d-€?c8?`ú\?dšµ?iéG?l±?p`Û?n‰Ê?hŒ?eñ?o'¬?t3 ?p¬?mç?eX?f­Å?kO‡?aî”?a*¤?g1²?jÿ?g;7?a0?j¼?tŒº?töÓ?nŽÙ?k ?p|T?s1¹?q€K?o|æ?hK?fMy?iiã?f”?gâì?lÜ1?op©?p©ú?qŠ?pêç?oÚ¹?n¦?eÿù?_ÚÞ?iÂÀ?qké?q€ž?n·#?lÊ?iˆy?h´?hÕ¥?kn?lCõ?i(m?h,G?kú?ny?lï[?h¶‰?ftó?a º?[îN?g6‹?k -C?kqÔ?mÆ´?lˤ?hŠÕ?i@?iµ|?aÈ?f0ï?lA ?l}?nu?o†X?kË?da?dßô?i)`?lÞˆ?k]ß?g¼>?geÄ?k¸µ?nx·?l ž?ho?j.?m¯ø?kü#?h¦ˆ?k¶~?læ?i£G?fSé?fR)?k'~?g F?f Ä?i›?jhÆ?k``?hZd?h¹Ð?m¥·?jÕ?hüŽ?máT?no‚?là/?h@x?bMÒ?dm?i³?l¤|?k$¦?jµõ?iË·?l_?n8í?mPè?iK ?iÒp?jÓ?j„?k$?f®Î?k#ü?k»‘?cˆ|?\uý?ZªE?`HÑ?jJy?mn´?n†?Q¼u?VZè?Tù?Xf?\bV?Vv:?M?Uã6?XáM?V×ê?X=ó?Zº?WÍ?V³˜?Y9ì?U¶Ø?Ràê?OàL?NÆ?PË©?PÞP?\Ë?Z:Š?L‰I?Iîp?UÚ?T'?RŽ?P35?M¢?Plc?RƒÅ?Ww²?UA”?T°%?Yéš?XÊs?L?N¨Ì?Yµ*?^é?YkÇ?U=y?Q'G?VL?YñY?VÈÕ?Xt`?Y"?V°y?Zãd?X"?W4×?ZBÊ?Vóÿ?WÖ9?U­Ð?W>S?_q?^ÌÆ?Y#_?Wh¶?XEô?\v‰?Zà?T]¡?Q±¤?Ug?ZóÄ?[&D?W­­?Yp ?W1#?U>Ù?W}ö?V;?RºË?R&:?P4Y?U÷]?WÐý?SÌš?OX4?OrV?Líl?Mìy?R¤?U8?XE~?V -¯?Nê°?QG¨?OÞ1?F¨.?OcÂ?K5¯?F;?L¯?OÂ?I …?NA)?P¹É?N©?L?K£?M˜j?RÖò?PZ?PÞj?PëÃ?QúW?Ro_?K4.?JÊ?Sƒz?SÔN?Pqü?Qa?S`Õ?M?OWr?P¤M?Aºz?H×"?E¼D?A Å?MP©?V`E?R–5?JWÚ?K÷;?Pc>?M^²?OÜo?MGR?MT­?J¿?FzŸ?M7?PJ¯?Kžò?K£—?Nz¤?L`%?FqO?F«Ó?R“?Rr5?Mø?=¶?BÚ?C“z?H?MR’?K=?H“ ?L‹?MÁ?S@¿?Qà–?MÚ)?NÔôF‚>Äÿ-? %?,Œ?6“Ø??Œ®?Fº?D„a??Âç?F³?G‰»?FU†?HÊ?Hïk?H(F?G‚¯?Eô÷?DL\?FT/?IÅŒ?I¼ÿ?A¬X?C\º?GïD?H#†?G?CÎB?Eá?EÑ)?Cï?Ge‘?J[?F§´?F]?Fa‹?B­†?<¿m?B‰9?F)Ï?Gjá?Gc ?AÌÉ?EÖÀ?J?Iç×?IVÙ?G”ß?G) ?IA„?IÛˆ?K¨?Iim?GýÏ?H÷¾?C’?A Ç?E›ë?C|X?A„?;Ç?%f>꿬>î?%H¹?9)š??Ù}?AAP?<ÌÂ?8Ù«?)ƒ?0û?DÑb?Ij[?I©‰?JÞß?J~?H2ƒ?C- ?93Š?Dÿ?J´?Kzë?IEb?GÃ]?Cs©?>ä0?ES?H#?IkT?Gdk?J«?KçE?J¾m?J‘‚?J[ ?F®ö?B#Ê??¾¿?B»=?;¢5?BC?JQB?IõÑ?Eµ?AòÖ?B‰‚?F\?Ew2?Fßà?HæŽ?GÖx?D‹?EÒß?Gz\?FÙß?GÎm?H7-?Ga—?H™e?E»î?Dé1?DÒ?Eà¾?FX?C+‚??êF?AûÞ?@$½?@¨??„™?@L?A?E?G¼A?Fs`?D"?? ?:0?9­¤??ç£?DÛÛ?G—?G*?GèŠ?FZ€?Ey¼?E–€?@ëL?=üá?B{?F$Y?B½±?<;Y??ë1?D ¹?F–Ò?Bú¨?BÄE?C(?Aòî?B¼K?Aï6?A³á?;TÊ?>U’?F'?E†??ç?6¼k?4ù]?8Â?:ï¯?=h™?>½‚?;ò?=w7??B?@N ?@Xx?A?Còë?@<?@l]?D^³?E¬-?D‘?C&¥?C? ?B½Í?C>z?D/#?C—é?Bí?=—P?>²£?D1?D?¼?Bð?Bм?DX?C¥b?>\|?9u.?@Ä™?@î>?; ??.ü?3DŽ??|ü??PM??Þk?<¼?<×ù??¢?;“Ì?8N?:?Z?9R7?;†B??5“Ö?7;]?7¹#?3‚„?4$ ?'ÏÇ?#·?#‰›?'AZ?/7?1#m?1!ô?1k\?6(/?1‘?*?†?,£¬?-"ˆ?1G|?+Êõ?+`‰?-}*?,ß?.¤¢?-n?#¯ò?(Äš?/c'?+´'?*6?8õï?1ÙÐ?(E/?3Ür?-·%?,eù?38?0vÞ?.­Ð?,Õ??+ÒM?1F†?*¹?+7A?2ŒÎ?2 ¬?)vJ?(ž$?,ÖÚ?1 ?+Ó?3ôË?5 Ã?/3?0`?7pÅ?3¸÷?+ƒ§?0•?6þÉ?4Ñá?*2D?)Lr?/¿/?3+?*kç?-xB?4ØÝ?7 ä?5Ì5?.â¯?3{Ô?2Ãý?3o¥?3”?-Ö0?2ã¥?3Ý„?0¿Ü?3k“?0š]?7xù?6:‹?.ò?5¢ú?2Õ?5ÆB?5…À?,~Ê?1•Ñ?.K‰?0–Ü?4Ú ?-(w?(SE?*6(?+³?4@l?5À?/·Â?/â$?+2?1ês?5!®?.òí?)J?*‡r?,¯e?-z?+ò¡?*Ä?,ˆb?,å&?-Ǩ?.6 -?,­%?$³?(Vu?&…†?¬?>?&° ?(F?)9W?,d$?*Èp?0ò?.ß?$f?(‡S?)í ?"±ö?(o?*¶Ë?&¿Z?!®]?&¶ù?)cã?%?º?$ž?+ ˆ?.*é?(™0?$ˆP?.??+ü?'\B?-$ñ?+mè?*õ?)÷Z?+k?+úˆ?$†?(QŒ?2øº?-è?$‡‚?+5=?2]1?)ëœ?)úk?,4Í?.ò‡?( Ç?+Ì£?0)?-‚U?'óµ?0 -’?6´æ?-o@?'Y×?+5Ð?2È@?+(j?$$F?0oú?3Ñ’?-§–?Š ?#8Ž?-1J?*Ÿ?*7E?+½?/µÀ?-Á*?*÷ú?-Z?-ái?$ÇL?%F¥?(.?,Â?,Ï?)‹/?,«œ?,ýO?+§š?-ð?24?2O…?- -"?%PQ?&2?-âB?)¸Ö?%7?*ðv?2.Û?1±‰?,Ž -?+¾-?+Ë7?*™›?%U7?&&s?1±?1({?&Ï?#“Ï?#k?+í?-5á?(|j?!è#?)?+ùe?(þè?'ºÖ?'.Ö?'Yß?'?&çî?*’?,¬?)`?%lå?|{?(ç?,3²?-,Ò?,Dò?'Q¯?"[É?'®½?'}ˆ?)½­?,†?+Ž>?'´ø?#»z?#/U?,ÒÞ?.+t?,Ò?&æó?&³?)½D?(ò;?+ÚV?#ù?#Æ.?*šD?.·?/°?)×ö?$0µ?™Ï?!oë?ð´?%{|?*ë¦?*Ŧ?)?'|£?(eµ?*íw?)ñ,?(°?)¼â?,*H?+ƒô?)é÷?,Êé?*_N?(ˆò?%uc?)þK?*:Å?!&?&V;?,ç«?+=n?*¹Ò?*}Ñ?+Wõ?(Ù?'/5?*Ú.?+g‹?,(â?)oC?#wù?(ò?+Îp?,’5?(­•?&6?,:c?.$?(s?(êï?+Ïœ?'>H?"yi?'6?-.¯?+ø?#ؾ?$Ya?'™u?'š?+%?(ý,?"–?#Ç“?*ä?-5?(Q_?$Aj?''Ó?'<§?"Mù?&ã»?+L˜?+ÚÙ?)UÑ?&!?&š ?( !?$ˆ²?&Å¿?(„Ö?&Ë5?)L#?)d.?(ò?'Ê?(ÏŸ?)+/?(q¿?&O’?%±¼?(r6?([7?(«t?&Æñ?' Ï?*2w?%‚ê?%VÕ?&ÁÖ?&¤?$sy?&ùÈ?)¤?$™?%?)v¿?* ?(¤•?&wÅ?(#@?(RU?&b ?%Ô?#„ª?$?"ùò?&"¶?'å?)Âô?&Û?! ?#q›?(Ë(?#”9?^t?$á?&KM?$mé?'?&vå?(‰}?)/?&–È?#•q?#S?#w™? â×?$!§?&ÚÏ?&å?'êV?(üÃ?)ö¡?'öØ?"Õˆ?"æ*?( ]?%ì•? tª?$Cî?'u'?$† ?%ÒÃ?'6ª?&]¥?&ƒ‚?(,?&o)?$4é?&¨¸?%~Å? K?Œ?%…?%§?#v*?–¿?#éâ?'¾u?$ H?!†k?"W„?#Ò ?#tt?$™?'š?%X?$#!?!èL?!¦—?#E?&08?"ß?Õ6?# ?%XÇ?#ÖŽ?![ý?#?†?#Vi?%FÐ?$ 2?M?„?$Ú?%õî?#Äœ?$Ò?&J‹?#•:?"2©?$dÖ?$æÚ?$y3?#Œÿ?$?$òÃ?$r›?%€ ?%å?"£u?"ª?"Ù£? "?"îk?$«E?"éû?#ùï?%‹q?$—.?#È ?$y?"r¸?îÔ?"_B?%A?"óe? ªè?!¡'?!ù±?"²?!Ï­?#aX?"8?#J?"|U?#&??"ŒT? ²D?–B?oÎ?ô?!Â\?"l¤?ªŠ?9Á?bÑ?ïp? Ik?"¨P? Üg? {ý?!þÍ?#ö?!¦Ÿ?åG?!Üç?ܸ?RŒ?"VÅ?™ÿ?ë–?"‹?!ÿÏ?!ð¤? *Ý?<?y|?þ?£í? jG?!?î? k‘?"Gþ?" Å?ïA? ­,? öÑ?R«?ØB?¹|?!iD? œ³?'(?‰Æ?™†? Äæ?!ŽŒ? 7?Ðv?!”Í?Qþ?¹›?y4?ÞŒ? i‡? ¬N?CÁ?`ä? ¸ ? E‰?»3? »? Ã?¬‡?¦5? £o?„=?h/?Nâ?xS?“Ò?Z×?çâ?_ì?¬r?K˜?Œ?Új?ö?zr?a-?…ý?€Z?Us?;¤?[h?s½?³“?Ž?– ??nÂ?S€? k?‡•?Ü÷?]¡?Ü?£?º¸?¹m?Á~?×??w?5/?Ý?0Œ? ?C?‚Å??-€?cH?×:?É?ØÒ?l‰?3]?ÉN?Øä?~?\œ?6±?„?ì?Ý?)ñ?&V?îV?·Ð?V? ð?É÷?Ë–?WM?LÖ?u˜?Aê? t?î?)«?(É?¸ø?âÁ?Nä?8¯?]-?̘?Uº?½?c?Nð?æ?I®? ¸é?›´?>)? ? ™8?,ò? ‹ø?´'?Ý?ÿ˜?9?á’??„ ?%Ú?Òk?„ì?N?ê¬?…Û?vÝ?Ä?¿7? K? -+±?ÞÙ?‡7?Ï?¥´? &»?y:?õ?Çt?Nû?nW?¹û?|Å?£?ÿ³?&E?Úï?4?W;?¸O?‡õ?É?i?’Ô? þP? ãi? ¿? È? Å*? a¼?Àø? ¼Š? -úÐ? ÏÓ? ‘õ?¸c?xœ>øaà>õ¥z?ð|?ž%?-u?DÕ>þ¬?D^?\˜?±¡? Y3? KÏ?¡&>ÿýë?é?-{?mÒ?4?Á!?SG?L?µ²?²?l’? ¨ç?î©?86? -ú? -j?âÌ?Ú¨? -±\?O ?? ´? OÝ?ƒí?½Þ? w¼? ß? 9À?›ã?K? šÎ? ÊS??!)? Þ‚? O>? Â?¢? çÈ? Íé? -ÍÈ?'>?Vú? B†? $d? -ðè? -ª? Ô£>ÿa/?ç7? ÌÎ? {·?7Ï>ý€·?;)??¥? ú~? ï?¢+?îµ?‘_? H? ®?;.?eŠ? m?ÓÜ? CI?ZŒ?ê? •i?âÙ? WC?{à?¸`?¦ò? ök??Ò?õú? Zg? m}? -ûØ?j„?Ø_?? p? ׉? -_C? -Õ=?Ãî?ž?â? ù-? ,ò? œÈ?Ù¦?,? ?˜?^y??ÆŒ?O`? õ?ïÀ? ¯? ¿ö? -$ü?á÷?³? ‰s? Ïš? -E|?Zî?Nâ?©à?Ôn? º«? ¨%? -Ôo? -PÖ?î‡?k?Ýú? K[? j? -'Ý? ,ï?ö?‚¢>þ%ò? Œ ?X—? Úý? ©? å?,S?lc?p¢? Ø|? ÑúD1?´8?FL?S\?V?A?5Í>ÿ?_?ÈO?&?yµ? –?¤³?°?ŸÂ?÷6?RÄ?F?UÇ?úÌ?Äü? -«K?,Ô?$ñ>ÿÄ?q? -\í?sË?È*? - \? -ˆ^?ƒ9?-,? /á? ã÷? ©?‹?S? d\?ò?Së?í?lŽ? êÿ? sú?ߧ? ²? -'4?E#?BS? yý?FÝ? 6r?¬Û?ª?¬c?ι?[k?ÙÞ?Ë?è?´Ñ?Áš?hÎ? -Bk? -ä›?vN?‰?Wà?[ ?úž?¶_?;¾? 2w? Ó*?žú?äË?X?µ…?6û?¨?•û>óœ.?àÖ? tÌ?dÙ?ÌM?¬‹>ô?u>õ w?eB?o ?ç5?ò!?ßü?I²?gi?K(?«:>ù ?r)?ô?€?!¿?Ê?ä?Hê?[€?î¥? ‡?¯µ?êh?0¥?Òu?I?¸—?©(?¾j>õÄ>þ1?P´?+Í?÷ˆ?Ô'?à?íx?¢ë?Oð?Ex?éö?Di?»4?žÖ?ÚX?~?co?Ái?í~?®?ÝØ?qº?ûø?uä?Ù?ºJ?ç˜?‡k?²>ÿ -?{ø?c?Ôv>ö)>ô‡–?®b?/;?¢P?°?Ú?'?¸ç?_`?³[>û8f?¤V? u?%?E,?‰Å>á·>îË•?a(?„”?E>ý_Ý?E?½O?ÚO?EI?.Ú?`$?M?Cè?)É?4Á?“>ÿêr»>äüa?ý•>ü -)>ù’ ?¯?ä:?ð?æà?p·? -?ÿc?FË?Û5?­??(f?:?í¿?$—>ÿµ?(‚?Ås?F-?;<Ô õ=9ã=Øm=>B[=etˆ=‚ú`=…7Ú=p~±=N[š=8ä1=-I®=úD<÷•g<µp<…?<˜'%<Ñ×=ôõ=K½h=saŠ=€Ó1=uÌ=ZJ>=@‹é=+Jç=ý„= -gf==EL=ƒI;= š“=±P=³ô=ªjý=ž´=“È=‰7¨=}:²=nðI=uào=‡ÅS=“¥’=—:Ò=“ã=Œ^ =Bå=[q"=8¨ë=(+.=6[»=dj~=’M=¬•¿=´–=©.Ž=•ñç=†==u/ò=YH =3êt= ½³<åCí<Ô§Y<ï=o=Ùž=6¯•=IuÝ=IVÜ=@­·=9ŠÞ=/„=¿y<çù<²A <¶f==Oª=“«ˆ=¶-=Æ”=Èv›=Ê5ù=ÔK4=åBA=õæ=üoº=ú€2=õèà=õé¸=ùmä=øJ =î̓=ä1=á*ë=âö=Ú"==Æ+¤=°¢¿=£òh= Á=¢–ª=¤ÿ·=£ÃZ=ž± -==¥[=°]c=²jt=©MŽ=Ÿû“=žŠÝ=¡i7=¢¢b=£A=§q=¯ò=µA²=³þ?=¨£q=˜¤¼= =–nä=¦H9=´§:=¾¥p=È€€=ÔfK=á%Ý=íñ=÷¬Œ=úv`=ñW=Þ8l=Èîñ=¸“=¯®B=­s…=°ã‹=¼rl=Ô&Á=ó>É> -UÛ>ww>äê=ûþ=ðÅí=éN¦=ãù“=ÜYB=Ïè6=¿Z­=­ãæ=ŸE:=”ú=0ª=…óÏ=‚iÅ=Š*,=ŸØË=º‘=Íq×=ÕF5=Ú@õ=ã¯E=í‰)=ìÁ_=ßxž=Õ«O=á½Á>&j>Ô+>¨>2>f.> íV> 1ì> €> \C>"ÙÅ>­Ì>éá=èÞ*=ɨZ=³#=¦8ê=¡Ð1=¡ìM=¡ÂÂ=ŸÖ -= ¡-=ª==½)=ÓÔB=ébÑ=úT =þÝŸ=ìwÜ=Ã̺=–ag=rÇ=iµ=ƒ/Õ=˜™q=ªåó=¹]©=Ë™=â9n=òI·=ë—=ÒãR=¿à=¿=Ïœ#=éé>i6>ú>­á>‡|> =þÄ„=ì±=Ö„=¾&=©Rk=›C=“±=v.=‰#=Šl3=˜x'=±) =ƘX=Ït¾=ÒI€=Ù=âg=爱=ãNø=ÕÀ =Ũ+=¾ÀÀ=ÃÞ=È -N=½Ö=©Hÿ=™Ã¬=•ŸÅ=–0=•áÂ=˜á=¤ÀÙ=¹Ðj=ÍW#=Ñ?@=¿Î=¡â2=‰@=~¥‰=ƒBß=¦=¡µÎ=¯\=¶­Û=¿d=Êe=Ñl™=Ï@¿=ÌI=Ö1º=ò³5> õ¿> C> -Û»=öƒª=Þ»}=á”=ún¥> ‚Ê>UW>?>¢à> hm>r=>žC>5l¨>HMd>S]²>Y m>_Å>eˆ¶>gá>eš,>bR~>]fS>R"ð>> š>*6K>!¤>(ã§>; ‡>KpÝ>Qõ¤>Lâª>>çˆ>-ì€>"M>!¿©>(S2>-5c>/(Q>2d>5ù ->6 þ>2ož>,Ïò>'7ù>%¸â>+u%>55)>;”ÿ>;©K>8ë™>5Ÿ‹>/)u>#Üï>Ñg>Íþ>& ‰>A^ø>]È>mþÏ>p{3>l¹>l`.>uã7>€àw>‚U‚>{ôm>qjµ>o?:>t¾„>{.Ÿ>ÿK>„b>”R>q{&>_ÃI>V§>UªÎ>N~!>9b>"€Ñ>¦>#Ór>2¥7>>?Œ>F&i>KÂ)>Mn >H(>;;&>)ï>ñ> Yu>)<>"í7>6f?>C•Y>F±=>AÁ2>9ö>-²'>õN> †>9ú>1í;>H€>UPè>VÁh>Q:›>GB>:Ÿo>3·n>7ô!>@z§>Cõ¡>BÛÃ>@/º>9"o>+ýÊ>‰ã>*>*-í>:ÏÚ>D_'>CÖ>=s÷>5<>.?ä>,o›>1A>:÷>Bø>G‹>C§©>5.>³>…Í>±>o>/~•>J>U§\>TÞx>Sš>Yð>_‡Æ>\í|>K°c>+ì >gÍ=Âd=™Nr=œ}å=Îmb>1ó>0¦Ó>?¢ò>: -Ô>*º¨>ïŠ>oÑ>äÑ=Û3 =¸ªR=¨_=¦ÆG=®D—=Ä0ü=ïæ¤> -v>8\U>RÔñ>_Oj>Zϳ>E¾>%“Ì>é÷=÷£¬>Ê>©?>Ìü>fƒ> !—>-óª>:¶ >?MÁ>=\>=ç>A£±>;Ù`>%[>6À=ãó²=ÝçL=üµ>G@>3wÄ>LÁØ>dßL>yi>‚ÈC>…É®>…Ìn>€4¹>jÝ>Ue¥>E>7ís>+…§>$çƒ>&î0>0:¬>;dÊ>Aeh>B*V>BA>=˜ò>*v> 0=·Ô=©H¶=²ØÚ=âã>Ûì>-Õd>MuQ>n©Ž>ƒá¸>ˆ—>ƒÖt>q®>Uê>AèÁ>C2>MZõ>Mší>F‘ó>KÉb>e~Å>ƒOo>ŒÑÿ>ˆìÍ>s#¦>Lâb>0óG>*°Ÿ>5/">>;n>8tÏ>%Dä> ô¾=æÒö=±„Ó=‚æb=T€6=Tã(=n>Z=…ò×=–Ψ=«†t=È€¥=ú¼¯>"½>HŽ6>bÙ}>qK>sÞÆ>aö™>CPŸ>5/®>K™¤>xPê>ŒÜ…>ŒA >u[¡>F@>%5¸>QD>zØ>å>UA>×>,Ç>/ºÐ>ùÊ>h>‘Š>1Zû>T,Á>mK‘>yÆ>wˆ>e?>HI¡>)dú> l =â©w=¼v=¼ð,=ñóú>%p>P¨l>p/->‚R›>‡ùª>…÷¶>tï3>ZM>T]’>jc>‡é•>˜ö>›+E>Œˆ[>bÅ">*¬‰> 8=õß$>;6>x?>,!ã>BX>E„«>6Ïë>)¥½>2Ûu>V/:>€d>IQ>’}[>—„s> ‹>>¨¦§>§v>H>’¬>Ž¶>ÖY>C>†ˆÛ>sA>aç²>Y±>KñY>3`Ç>†>˜>5|L>cæ–>ˆ%>”³>ýÕ>ƒ3„>d+\>G¶ú>3ø?>!†V> T´=ð›Õ=å­‰=ÿÏS>í¦>GD#>iVn>zy­>|o>txe>j/'>fØ >ryÿ>ƒ‹>ŠŽO>Š¸>‡Y>†$>‰Ó˜>Dì>IÏ>ˆÍ>ÊF>zºz>[->‡Ä™>‹\Š>‰Šl>ƒ^ë>xùâ>rÉi>uÂÌ>x>@>rê>hûj>]æ—>Q7>GW>FÐo>OÂÂ>VöS>SðÛ>HšÈ>>:,><ªF>CM>MSÛ>XÈ>]´ ->Rܪ>4=>úŽ>JÜ>€ú> ÅÆ> @z=ô;æ=âç=õÊ*>Ø[>-,Ø>?&N>F^Ë>G‘Õ>E{¬>(Cï> ¢ß=éér=ï|=©íQ=¢f˜=¬„¤=¹8=¹§Ó=°câ=«x=²KŸ=Ä ß=Û‰ =üõ>Á1>;ÔÎ>UÕM>XÚÏ>OÁ>R‡>j€€>†>’¶€>—ÄÒ>™{Æ>W®>¡Ì>Ÿ+m>‘Ÿ>~úD>bKx>O>C:>@¦x>C>r>;õH>% ê>Pw>>>+Êé>K “>^;»>eïù>q;>‚'Œ>‡Úþ>€Ø>Vë’>%Bý>©¬>…$>1˜º>[Èà>| >†dâ>‹á>•E>>¥ÊÏ>³}˜>¶ôç>°MÑ> Ç >‡À(>UHj>-9I>'Ë’>:C>OD´>a(§>t3D>„‹>=ø>šˆ™>¤ò(>«R>«3>¥¡“>œâ)>’VÊ>†Ë>s¯–>`d>NZ¬>:èŒ>1ß‘>>pk>\#!>»&>‘T«> d>ª %>®:x>±r>·t&>¿Ãb>È0Œ>Ï¡>ѨÑ>ÏÇ>ÊI>Ã+8>¹Ž×>±:>°2>µ>·{Ö>´>®2$>¤˜ç>›“–>œ¯>¨iX>¶ði>½…Í>¼ûª>¼Fš>»i¸>³«‘>¤$>’ú>„û[>xC;>z>‡Íí>”È´>è> æ>›C‹>“p>zoš>b¥K>b¡>€p>˜²>²‰>Ãð>ÄçÞ>·Õ?>©¿°>£Á@>¤3>¨.­>²Ré>ÁŠ*>Ïç>Ô^U>ÐÛ>Èì>¼,ª>§·c>Œe>iô©>U€>Tfy>S‡Ï>R¨:>c¡€>†ÿB>¡¿>¹Ã˜>̱­>Ø–B>Ø»°>ÌE™>¹¹>£Š1>‰>U®>ßÇ=ý.E=úBñ>8Ê><æâ>lýÜ>‹°´>–Áˆ>’‡>„;>zB>‚«>‡§<>šÉ>e™>=öW>/8=ãd’=¾Ro=º\è=ÐÊ><>,f>^“‰>„BY>ŒßØ>…´>g²i>ATã>#ë> ú‘>ý=þ+ì=ñ »=âGæ=öZ½>!U>UžV>‚]8>•Ä>¥ý¥>²Ò>¯Ë‹>™‘Ú>nþj>:V£>1žà>KÞ>jÉu>xæ>n¸ ->\Ü­>X >_p>\¹Ï>Tg>c=™>‡N>œœ<>¨Ï2>°>¸\“>»á‰>·Ð4>¯ÿò>ªœ›>©‹¸>ª8>¬">²ÿ>º² >¿þ>Ày>À#4>Àaø>»šå>«Gf>“D>|rÝ>br>Rºñ>P”ƒ>b³+>_>†€x>€F3>i'(>Y5g>XCÄ>\Ì.>Uúš>FL >DM&>\Õ> Æ>Z­>šþ®>¢>Ü>¤J>z~>É>«~>€'a>‰”j>”D>™d8>–M>Š4í>qB>Oâ£>6‚¶>(X†>)†;>1D>,I_>F=ý­á=ùÝ> œ>>Â>–¦=þû=Ýx=×|=çRG=ÿTô> ;>h>qƒ>[Î>À¨=ùâ>0ç>´>+ß>+EÔ> Ô>¦c=÷­V=ü|r>Ðx>47Ü>OÓ>>Z:>>W!>P‡>L4ð>I“…>?)K>-iÃ>#ì>-›><*æ>>3!>4Ô<>,T+>%ú >bÛ>jo>Ú¶=ô“=è¯L>v>+w>?<ã>P,>N¬ >DiÉ>;éÁ>6‡O>/ZÛ>$Bn>¹ß> #> Ë›>Í|>7‡>_˜c>zæ>yÅp>^ÞL>= -þ>+¸>.­X>1—w>+}¾>1ó¯>WAß>€j³>€ê ->_§ˆ>I)>SÔ7>rš>Ço>¦E4>½¾ù>Ì«v>ΙË>ĹF>µ³l>­,Œ>°(¹>³4ß>¬0>¢Ûp>¤Þ˜>¯˜´>²B¶>ªc¼>£ƒV>¦8>–b">˜LP>¨ó>½Ï>Êø`>Ïä>ÒÝ->Ø÷>Ü -–>ÜK>Ù7ú>ÑêÅ>Ènu>Á¥>¸Í€>©z˜>”í]>„Ëe>Ä?>„¢4>Ž‚Ó>•×p>’Äu>…©b>f¶Ë>@ù«>!f >1…=ä£=¼¿=—†J=Åò=‡†=«$›=ä˜ì>Ì>9në>\O>uI]>€ks>€¯>y »>nl–>x$l>‘<·>©wP>´‡ß>µî¬>¼Ê¯>Ì_>×Ò·>Ô§è>Ì_¿>ÐR§>ÛŒÈ>Ú£>Îwö>Çä>Ë-¶>Ëú/>»çF>šú>w²å>\b.>Y­>Pw•>5¦Y>ý=Ѧ¹=¢–,=Ÿl¼=É0+>óŸ>.Ë@>S>>xçf>‘a4>¦?”>¸>É4‡>Ûíô>íån>ú8>üG·>ötˆ>ñ"z>ñMã>÷s‘?ï?»?Û/? îš? sJ?^M?¸? }?ƒH?™? º ?‚;?!,?·½?’?ôŸ?ž?…@? Ù®?b«?E?¡Í>î5>ùšŒ? 1å?þÙ?‚Â?ßä?«?Æ?@?!~?$°û?%_ ?!k£?¨†?")"?&q#?%¤?"pÀ? «”?ð?¹h?èµ?k'?&0?+y?'è]?Çx?Ê >é<û>ÜÉ>Ú>æÅg?£,?|?$Å®?,Jã?*kÝ?#ýý?ê@?׫?Ú?›>ÖÃï>°ÊA>º²>è’‹? _+?½a?#À×?%Bâ?!¬?4Í?tÈ? e=?4Ç?'Ó>üá…>ÿwŸ?Ü‚?U5? +l>ò,0>Ðb†>ЀŒ>ìhn?Ø€?v2?Z ??u?Éw?8G>ð"">üf×? ùs?ÁË? -’ >÷!Ö>èÎ>õÑz? 5º?U‚?+â?,B ?$£?+Ú?âö?TÕ?(ú?3Á?9E?6ïƒ?0¥?*ƒ“?&Õœ?&–?#Uã?AU? @Á? -iÊ? ‰ë?æ?ôŸ>þõÃ>ùþÇ?Â? 6¬?z\?Ûz?"v[?#ƒ?̺?,w?ó»?4.?äû?ô›?¦a?"çÝ?#;Ž?û?ßÌ?`?Ï?¦S?9@?T?Áw?*ž?æ™?±Ö?JS?P ? ‘?A?4ª>ïÞ>ê3>ôô¤?6›?Ø?Mð?cZ?m›?l ?Ÿ¹?•z>ß{™>Ç)N>ÔÃX>õ™?—†? -þ?ži?Ò=>ùë‹>öµ>÷þ>ùïc>øîš>ö'k>ôzV>ùwe?ò?¾è?ú5?“p?Ô*?0?Ñt?~? Ï?}%?ÿ†?qÁ?d? $? Q¬>÷„>>êÞ>ïÍ>ù¨ö>üb>ø·ê>÷žá>ý?XW>þó•?#í??Ñj?ž8?í? eZ?-y? 5»?÷??$?ŽG?ŠR?˜–?ý??]8>ï¦1>éš>íLú>÷±ˆ>þb³>úN>øeÇ?8í? žö?Ú?z?% +?&6Ù?!"?ª³?~×?+é?ç^? ìK>ø¤È>ø›É?0â?)°?7­&?=EÎ?>s?7ˆO?(Š?ŠB>ø ®>Àê>šË”>«Î>ìÕÝ?¢²?+”Ú?10¤?)öd?SX?ÂZ??~®?ó?5?t%?"w?*ÛO?0nY?4ÒÕ?=o?CR¹?=_À?.º“?_™?ÄH?›ƒ?à…?Ÿ¸?ÔT?f‡? ì?Ð?'†9?)ÐÇ?Û?¼1? f?Gj?'Â]?:kI?Bor?D)®?>²?1á¿?#_Ã?&>ûQ>פÁ>ÓÓ9>ãdý>ñ?±Q?ÛV?-GÂ?42ù?,I?Ç7?»–? Ã)?$*?"r?o?B?@t?Ó°?ñŠ>úJÕ?ê³?o‡?Êa?(—?Bˆ?3¥? -Ãý>õæ°>ÓÏ>Å 0>Í’„>×ý>Û©>Û®&>ÖW#>Èk>´~z>¤˜¶>¦ã¶>º#>ÓFJ>ï)u? –?‘1?-??Guk?Y6?[?Uß?NE¹?F*!?:”#?$Ò?]à>Ü£Ù>Ý”]? -ã®?0<%?FeË?HÍ??Eí?H ?Lý2?R•Ã?VÒK?PV?:v?"f¿?€?W?ËC?'åd?5^?;JØ?Bœu?HI|?I:z?Müf?U+ï?M™ú?3|+?íw?ÝA?+Ëe?5×ã?=šq?CYÅ?@‹í?9T ?;­‹?Güc?Pa6?Q~?U“‡?[ ?UfÊ?Eó³?;Úð?< ?>~??‡?<Ò‡?3se?$Õ˜?uB?#Zb?4LU?@Ñá?AEU?8y˜?(Î^? Š…>Ú"d>ÂW£>êV±?ô•?%*ž?'Pf?$#?!©k?$2¸?*+½?-`@?,ßË?0}©?=] ?Ièd?IæO?>o—?3ê?2×?2Žä?!x$?á8??Ý?´?$þR?4ô’?FãË?Q˜?RxÊ?DÝ?,ÉÝ? ÇÇ?*Ö€?=ð?LCÒ?SüŠ?OUí?@¹Ø?5z8?6K?+H??cD?Ce:?D!º?=?:~??Â??4â?2€­?'¯?*Þ/?<¦?Og ?W×Ë?Põù?@Gß?3;‘?3j¾?@îQ?RF?Yš²?WØä?W¤‚?WØW?T^_?Qw0?Mrú?B_r?2áj?*)?+ÎÔ?.vc?,l?'ðP?#Áž?"…?, ?=VÎ?F9+?Ffª?FBù?F9^?Bë¯?A ï?F˜_?PY?Y[¤?]èà?^‡é?beÿ?jS~?k *?]cƒ?Iƒ0?=:Ë??d¥?N„L?`¼T?l Ó?lvÛ?aõ‡?R4°?Gc ?H»[?RoÂ?V÷F?Mžl??ïÜ?>Ì?Ia8?X»b?bØ?c~ö?]W3?\èä?i…?w&»?zŸq?v§?o©y?là–?o.–?rž7?pW¸?g$?]R^?XÍ®?ZÙ³?]k`?[yž?\;N?d¸®?mWl?m+?dÊ ?]$½?U„†?IgÕï?J]?_?gn¸?`AY?V?TÌ°?ZE¥?\1M?VÈN?S:/?UO?V)Â?R–?Pk?T‰Ð?V¼?S¨7?P[?PqÌ?X$?e’?n‰?pWå?nõs?mÝQ?ij?] -@?P^¦?O…=?\Hu?iþU?mz?hh?^pÃ?[“J?eB«?m•?m\Ï?lÚ?j5N?bvÇ?Té|?JY}?KE?SŒB?X0?V ?RÐF?VÜF?cþ¤?p$j?r´?jæ?_ú?Zšt?5ù.?A'—?V=?e~A?i;c?dç/?bç?fˆ¦?m‹æ?l÷~?dh.?\?W5?X .?s€‚?vb?rt?j‡¡?e ú?_´x?X®®?WHþ?_ô`?m[??v¢L?u¶5?på…?sšM?|‡z?€ƒ?€M?k=Q?oÁÂ?u÷ˆ?x!ù?w ¶?vÝ%?yî?~Â¥?{¯?ƒ6É?„Fþ?ƒJ?~£h?rg(?jU?n§^?w ?xex?tæ¸?sé?r ¹?mw¨?l1¦?ré?xnð?y3 ?x7?s8è?k¡?h™¢?jÒÚ?k‹?m×a?vEÝ?|Eô?xØQ?q 1?pB?uL ?w«?tH­?lZ?_?[™Ã?aA$?_†?NtŽ?8€L?2e$?Amä?Ra‹?]Ÿ?ež–?gb?dìx?^¡?O+?DU?L—¨?[K}?b‘$?g,è?k¸l?qÌ»?wüL?s9?l3ª?l½?iy]?]Ýœ?V±:?XÒi?ZÒò?SQ.?G•»?N­ú?iÖ²?€p2?„ûå?„Œe?‚†öŸ?3ß'?A9ç?W.½?a,È?cDµ?jôó?uF?}m?‚Ò?‚½??€Ú3?vÇæ?lñm?n¹Â?m³V?_Lü?Q¯†?V &?j×K?{„š?ð³?ƒ&†?€J”?|tJ?€~?‚Ø?ƒ~è?„Ë?ƒ\a?*‚?S -?vÒ?_R?O—«?bW?}zÂ?ƒ¹ö?ƒ¤Ä?‚eQ?z†æ?n€L?k£J?m:þ?o¾¹?t š?{ j?€Þ?‚a?ÌÙ?~|?vØk?mÆH?i?fè?Z¶6?N7ý?NÞ ?Y`O?h!ð?u`?xóƒ?u>{?q¹Z?sVJ?tN…?s:s?uRU?v‡Ì?t?këœ?b®?_2?_ŠB?^|:?Vf?LN+?QÊB?c¯M?mC?hã2?\[×?N¤?IÉ?Pº£?Yu?X¾ò?Xgø?]=t?^!Ï?[v?^åê?fü»?hX?aÀ?]Ö@?fZ??p>z?vîw?~½Ó?€“?uÎ?e8y?bµ—?`p+?Pyþ?={Å??5?XÞT?q ç?~Û¸?€ƒØ?rŽL?_ü'?Z>j?] ?a±ß?jÑ/?u(-?yz?yGÑ?z¡>?}¬?$?‚Ý¡?€Ÿä?q c?bL¯?b ?dI?düÅ?kl(?n"ê?h¥¬?iú?m??læõ?mœ¨?hɯ?Uªñ?Hþz?OÌ?Y6?^i?eè;?kÅV?lÚd?nu£?r0º?tªè?xoB?}»’?|‹Ð?t?hQö?Zé?Qd+?Z¥™?k]S?q ?l— ?h"_?d_Ð?]•ª?Y̲?Y¸ó?]èL?gª??nÙ?pÞ!?sà?wŒ°?|PË?{Ï?rmÕ?gJó?[Ø ?Qoá?Oû”?U?Wêû?W’?XÆØ?_s?eV#!?Yu›?b4ë?e'?`ïŒ?QTÍ?1?Ã? Ä?  9?3-D?X¬?euÊ?i¾_?hg?U³á?IPW?Qžõ?Wôs?[(¾?cI?kç?pÒ?og»?j ?a1Á?Oæ1?B8:??L?<À·?CXÈ?U÷?hЄ?r‚³?mž3?a?]hV?fS>?qϵ?w»?vY‡?nÿ?_õb?N¯?=Ô÷??µŽ?W<ž?i;p?lÐO?d8¡?[Ýú?`Žº?l`?xAÜ?|Tw?zûõ?{ZØ?{ ?zÚ?~Ϋ?{ؘ?lºn?dË\?dÁ'?a”Ó?ds»?jØ?hùl?eÇr?q|Ÿ?€‘¢?‚§¤?}~H?kþt?UØÖ?Cù>?8ß²?6þ??‰‰?7ȼ?&<­?5­N?S÷ ?_ÓU?^«å?a,é?q¸^?~íé?{‚ß?nî?d,?]èP?cK5?woy?ƒ?ƒˆ"?„[?†jµ?…ùe?‚õ?m•?wšˆ?ff2?Vö°?[?h‘;?m0Z?t' ?€›í?„”g?‚ºG?"·?‚hÅ?†î?‡ŸÅ?…Ç1?ƒäž?‚M¾?‡u?})`?~¾Ò?Q?}ÿU?yb?l¸i?cÍÈ?aT?N!­?8É¥?Hl#?gä{?tnt?w‚ª?€@6?ƒaÆ?‚¼J?°?oG?a£?iûî?y? ?}(h?xI?týÒ?r Œ?nÓH?uÓ?í(?‚2Þ?„Ó)?ˆy-?Š -ê?‰êÿ?‰3§?‡"š?ƒSœ?€¶Ä?~º?yru?wê©?uà?kìþ?Z—?SŽ¶?gOÿ?Ù–?…!%?„"S?‚^?‚g+?‚ ?€(ì?|nÿ?} ñ?«@?‚/\?ëX?y`P?q÷e?mðs?m—?mßg?l[è?c"?[ê%?fŒk?pUÞ?tF¶?us?fšÁ?PÖ#?M-?\zÍ?eõ°?cú?kG/?y'õ?}DÏ?|Ii?€¼É?ƒ¦ä?‚4?{Â:?x6Y?yýÉ?sóÖ?s=G?€N?‚îÌ?€'¤?}èG?|ÐY?xŸÒ?r,š?e-?f´?w™?w0?m«?q,?~à1?„¦?†n"?…“–?„˜ï?„]H?ƒŒZ?€øÅ?wöÐ?n¢Ë?tÒz?€@c?’Ã?€Ïˆ?~‡û?}Õ?~‚?€0?ƒ ã?…±¼?„a!?ÛÊ?‚®?‚ó?ƒüÑ?‡ä?‰eŒ?ˆÂ¶?…Ī?‚0q?èB?ƒ½ ?ƒÙB?ƒÐÿ?ƒÎ²?‚ -a?~û®?~Ê?|­Ú?z|m?{,?z‰d?}íV?~9r?yd|?ý+?‚`?‚„:?ƒ?ƒ&?ƒí?‚¯’?ëó?}æˆ?o“ø?aÌ»?`|h?hb?q²ì?uw?u3F?zT§?‚á2?‚JÃ?zû0?u"ì?n­E?n–?{˜=?†w#?Š$‡?‰ð*?‰[ü?‰·?ŠxV?ˆC¿?{×z?h,A?pyD?~Fû?€H|?ß?ƒò—?ó¤?r…¬?tÊ°?Ä?„"?ˆx?Š ?ˆŽ¿?…›?‚÷?Z«?}yP?€Ï?€ßS?|Ãz?}€Ò?€V÷?íX?ƒxh?ƒ¨í?ä·?‚1ƒ?„òd?„[?€ ?~?zxÍ?m+Õ?p6J?y?xßB?~3 ?ƒÞ²?„—?«W?Ãú?ƒS?…(Â?‰6®?Š¨Û?‰A&?‰“?‰ õ?†ÿÊ?…tt?¾Q?vÜ?òÑ?Ì?~1Ž?V?ƒ*¨?†-Û?ˆê?ˆ |?‡ƒ?‡”œ?„kù?€/ù?|kC?y“?}M•?#¢?}s?tQ^?mÊà?k0ì?mN?r_0?~•6?ƒ±^?…š ?†À?‡ã?‰-%?Šaé?Œ6?Œ­Ð?‹JØ?‡¡Ü?†x?ˆ÷[?‡;c?„‚4?‡kž?Š„Í?Ši?ˆÒÎ?ˆB?ˆUø?ˆyk?‡…²?ˆ3¡?ŠÛ?‰Áµ?…?…Dä?ˆßç?†·º?õ4?{ßc?ƒæÑ?‰K?ŠXÚ?†ãŸ?‚Ê?~ÁH?ƒ4Â?ŠM ?÷?{x?Œàª?‹†˜?‰n…?‡ëÏ?‡`n?ˆrë?Š|Ä?‰nX?ƒ’G?v˜ù?qðÕ?uVØ?st±?xÿ‰?ƒ_É?‡ º?…Þ¿?„kÝ?†Ñì?‰Ìq?ŠËG?‡Úö?†Rý?Š›W?ŽKŒ?Ží?‰¿K?…”©?…·l?‡–û?‰6‹?‹LÞ?ŒÔZ?Œ{i?ŠK?†nk?‡*©?ŒÞà?0¾?êQ?Ž,?ú?Žr|?ŽK×?Ää?Žf7?Ž“Ç?’/?ŒˆC?‹ú?‹D?‹·?‹T?€?©?‰æ?B?Sv?ŠÌÊ?‰ðA?‹†Ù?Œxú?Š.?‡Câ?‡z?…÷)?³?€îÄ?…Ò¼?ˆãç?‰þ?ŠZA?Š^"?ˆ^?‰ÒY?'“?Žuº?Ãë? ?ÆQ??‹í:?‰²ú?‡•ô?ˆi»?ˆöÞ?ˆY?ˆD?ƒŒ*?dÕ-?;Ä}?Au?aÇ?lŠ–?XIÚ?O<ä?k<Ý?€Ó-?…üÎ?ˆl½?‰aÚ?‰„å?ˆÛ¢?‰Ól?Š×?‹Ã?ŒT?Š0f?……¯?ƒù¦?†6ï?ˆË;?Š/®?Šï-?ŠHD?Š¿Z?Œ\?4?‹9ñ?‡ær?‡À?Šó¬?Š²Y?ˆŸ?Š¤+?;G?Ýž?‹uû?†õt?†Å_?Š‹?‹ßI?Š9L?†âá?†×|?‰4„?‡zw?‡£?Šf+?ˆì—?‡D±?‰BD?Œ·?ûU?k?‹š*?Š99?‹¯?7M?ŽZŽ?/ã?ŽáÑ?Œ9©?‡è½?…ðM?‡´?‹D|?Œ?ˆòó?ƒì¤?„L?‡V?‰‘X?‹ø?ŠQ?‰Ää?Œ[+?Œbå?ˆƒ†?…\¢?‡/]?ŠÂ?ˆüí?†ßa?ˆ÷?‡ ¸?ƒF ?„=ð?‰œþ?‰C‡?…:†?„þ}?…`$?…ã?…c1?ƒi?‚Ls?„+‘?…ïº?‡ü¥?ˆ ä?‰ñ?‹r’?‹÷Ñ?ŒÕ ?ŒÌÎ?Œ}L?ŒòS?Œç–?‹jÖ?Š9?ŠAh?Œ§?a¶?”Ù?r?o ?Ðj?Œ°‹?Šq?ˆXÏ?‡_¾?ˆÏÎ?‹“ô?Œ‘?ŠëÑ?‡òß?„Ø?„Ç?Š†`?ŽK=?ŽÛê?Žúm?“?oK?Ö?Šôv?‡®¡?‡ž~?‡?…IJ?†¼$?†Ì)?‡±é?ˆ‚ ?†2Ô?„²Õ?…3­?†Õ“?‰†‰?‰dª?‰UÎ?Ššï?‡8?|.z?|×Í?†z?ˆð?ˆ„^?Ši?‰®?ˆñ?‹OZ?‹FÆ?ˆ²û?ˆÐì?‡;{?‚…m?}Œ?‚Ô?ˆ?‡Ù±?…ýü?…©è?ˆ?U?Š¨?Šïé?…bz?rÝ?je´?€væ?ˆ°?†zë?ˆÖ?‹1à?‹:¯?‰l%?‡R4?†¤m?ˆM?‰?†—?…Ž ?†å?†ßÝ?€Ö„?jǸ?h'í?z[?„Q'?†‹4?h?xãÛ?‚ó2?‡¢©?ˆ)?‡Nï?‡=Ç?‰Œå?‰È?‹&?Œó?‹e?‰Xá?„\?~O•?~Òœ?ƒÉ(?„ #? $?ƒ`J?‡L?†Õ?‡f?ˆ?„Ò“?yÒ8?v3Z? ?ˆ€­?‹±#?‰"è?…¹\?ƒ?‚2Ä?~Ž?|Þ¶?€?ƒãN?ˆË?‡#†?u?xP÷?xôç?xy?rÆ?t1?«ç?… ??ˆTº?…ÏD?„ þ?†c?…œ?„o€?…Ñ6?‡¦a?‡Oþ?…—t?™²?}/ÿ?{š?3×?ƒ`)?…¼¼?‡µ?‰Vª?ˆ½Œ?„Ï!?ƒA?„ ?„¤u?€ï?}O‚?9¤?|Øã?x¥?g­?ƒö?…,#?‡ï¸?†ä4?ƒ"1?‚(?€q?y-7?x%ú?sëŸ?xêÃ?¨“?ƒó?…±²?‡ž?†‘?†3?…˜6?…[N?‡'À?„x´?|ŠÃ?|÷?€ÿ!?ƒ¢Å?„Eä?€Pl?~uß?ƒT?%×?|ê‘?ƒ-?ˆR?ˆ¼û?‰‹Æ?‰SA?„VÌ?€î?„0?‡Ã@?ˆ†Û?…f½?šU?ÛÞ?ˆ{?‰‰´?‰¾^?ŠªÀ?‡YR?xÇQ?p]ˆ?Z?†$,?ƒÆ™?ƒÃ?‡<×?‰X?…h}?{€ì?~sD?…„?‡Ò?…ņ?ƒc?‚l.?„çë?†0?„ÊÎ?†MÈ?‡)é?…c#?€á?€„}?„×~?‡DK?‡¬‰?†OK?ƒ:T?}¤–?iý¹?]ËX?gµB?t­?z"??€í¬?ƒ¢?„ê€?†*±?†X?„˜W?…c?†°ñ?†Ï/?….`?‚lC?€Q+?€ä(?„vt?…ÍÑ?…õ?…6?‚Zv?uœ?u½ž?uŠò?tÛà?t9Ë?uÕ?x C?x2?u`ý?vY ?wZV?r5?p©|?m7Q?l?q‹X?tÂõ?tû¬?s<$?p} ?l¾ƒ?o@?ržS?rE˜?oÙ2?f¨2?g&"?pÌ??t—‹?t"°?qª"?p(å?to?tÂ?sC+?l£¹?`!›?d”9?n¼ª?rÑ)?o]?q©±?vÏœ?tâ–?t-\?q’?hM?m×µ?xXf?x7K?x±:?{Gâ?wøÃ?qÓ±?sÀ?p©Œ?gG•?n¡Í?vÏ?n[?am“?bäi?jA>?i‹X?jD?oºþ?pÆt?r`å?mMü?jŠ¥?rI?k¶¸?^¹à?e%I?pš¥?oòž?kú¬?m¿?r|U?r¼¸?mχ?jç?l+µ?s(e?qk©?nƒ&?tD™?vÉñ?uf¬?qåi?p »?p5P?qÔÑ?tŸÕ?mú?kÍÕ?sò ?bÑ?h$„?ka?l]?l¤†?lÆ8?k«c?jl?c:?]?fÛ?m¤`?mÙ%?k£À?i=ü?f¥?d³!?e|ª?gR¼?g‘£?dÌE?d…=?g¼¨?jqØ?im?eBÁ?bhæ?\½?WXè?bvf?ZßÕ?`3Î?g‡•?h*È?iF ?iºY?eñH?_¦?_ã–?dð?gWÐ?eyÇ?aëY?b+?fï?hž“?fÞ?d­?d°²?g$?e¤?böU?eEø?eê©?d a?`ºe?_|›?c½?`—p?_¶f?cÅò?dÊi?e—Í?brj?bž=?gë?doÎ?cg²?gx?g²$?faØ?b¬|?\×??^É?c?fËå?f=q?e˜Y?d,«?eWQ?g!)?f¥ë?bÿ¯?bï¹?dç?d±?eY ?aâG?ex?dý€?]â‚?Wdÿ?V/¾?[™?c¼ø?fÜ‹?g”Ø?gÆc?gH|?g·?gH†?gF@?fåE?eït?fâ?h*ˆ?hÔ±?gªˆ?fͲ?f—¥?fR=?cƒU?\ž?Z‚?V.{?Q?U)?SÿÉ?EØ€?TL‡?`ï˜?bMõ?dÇf?eí?eå†?fDK?džË?bÈŒ?dUw?ePÞ?frÂ?eéž?dŽ”?d‚â?e¼?dŒ?aÃv?XÒ?X¤Ö?bÊ?e‹h?e‘F?düš?`ã?[ ?[’?YSí?_[?cj'?a£ü?^C?XË?YL$?Z¤´?\Öd?a²G?bZö?aP ?bÑÃ?b¹?`…?ak?^Ÿ ?]kò?WW¿?PN(?Ur ?_#?c?d?e ì?bú?b¡?e’?d™î?có½?dxB?dX™?c ?bÑ’?c­]?dsä?cÇ6?^Bû?`m ?ea¯?e;'?`Ìá?[bø?aÎr?eW?d½Ü?a\§?]I?]Åt?bj+?eí]?ezÁ?ao ?_Ò#?\>•?_¯b?e<¯?e4W?eG¥?e G?eeo?fÒ?f9\?eW½?g%Î?b‚A?ZFp?\R\?Zv?aÕ¤?fº7?fk»?døï?d3©?ei¬?cg×?_Ðè?aúl?a’¿?`Ð…?dõ¹?f|È?eH?dœK?d¥ž?dšÓ?bv™?_rY?]ÒB?\t?\f?[ûÛ?]*Û?ZÆ?\}1?`Â?`¡?` r?_¤?\˜R?Sá?P6?VDO?[Öì?Y‰±?Y¡|?]ŠÃ?^ö?VŸé?Tìt?S•æ?Slb?V­ð?OMõ?S?X<@?W¦?Vö„?WÈ?T-?Q’ ?P –?UÞ?X%e?OòM?V.f?VÙË?P²‰?K”Ú?Q½¿?X²²?YV;?[ÞW?\²?Yÿ?XÕ¥?Wùº?Vý?S`²?W w?\hS?[æ?Y±q?\@t?_Eò?`?[ Ï?Ysj?^ýA?a?¨?Zöa?U@?\ôG?b°°?],?U¨“?W‚?TY?P•?WUñ?Zá?^¥?X<ñ?Xcà?Z;Ï?Wó>?\€)?^7?^ʈ?]÷…?Zý>?VJŸ?PM_?M¦z?T­?^?_?³?[?^+Þ?_]5?\í÷?Z¨ ?RB?Lä@?P÷º?Uì¹?Z;?W°í?Z­‘?_+ì?^³??[Òø?[§Â?]Ä?ZÐÑ?Uº˜?RØm?RµŽ?T ¤?UÖþ?[!Ò?X&F?S:³?Tê?QÆ¿?XE?VÏŸ?OìÃ?K|ß?O©o?Qã|?Pvm?T´C?W»?TMf?S=?U7#?T˜ñ?UÚ£?U$?PÏ£?Pšw?UM{?V·´?Y¯¶?W¥¾?R¢„?U\¿?UQ‹?Tï­?Y¥F?X?UÙ¼?VJ‡?Tº?U&/?Vþ“?Wj?S·?Râ-?VUv?Ul?W‚?Z `?UOe?Nܧ?UÌ’?XKä?Vu?W#?Xñä?W?Vä?Wuó?T™`?Qlü?IJ·?I¸?O;Ú?P»?YT?V?ò?EàÛ?B( -?P­?Qu(?Qøõ?Ot}?LÝ -?Oj?Q$Š?TÜ ?Sh?SÄ?W;Ý?T‰–?HÂ{?M ?VäK?Yæ?Vt.?Rn?NŽn?S;?VØ?S£ë?S§Ý?Uè?Tkµ?W'ê?TNÿ?SUÏ?VËÀ?Tæ´?U’?Rø?Tñà?Zæ‹?Ze‚?Vèó?UË?Uùá?Xýè?Wé‘?SMh?Që·?UXg?XÐ?X»°?V5 ?V¡>?Tic?QÌ^?TJÒ?SIM?P^å?P“Ý?N@›?Sf ?TNš?P&¦?KÇÚ?A ª?6"?"ú>ý1>Ò÷P?¥Þ?-Ôä?6¼t??š?FdÇ?Dl ??ë?F=?Få“?FØQ?H‡?I"b?H·‰?Hÿ^?HŠ]?GkC?H§~?Kÿ?JÇi?A¨[?B¿¨?GCú?HJ?Gin?DÕ€?F©ý?Gç?Dx ?Gñ?J??G“¾?GNp?HZ/?E/f??1è?DÚ?GœÊ?HÈö?H¤å?Bàˆ?FˆŸ?KnU?Jp/?Jk?GŒÈ?FÇñ?J¤m?L¡º?LþÐ?Jt×?Iðò?K ?CÅÉ?@ì?F£õ?EÍ?BÅò?<Òw?'\u>ô6—>û@ ?)g¾?;€?@ÛT?Aúà?=º²?:mí?D~?AÉ?@¯¦?C¥—?FÁ?7ê‘?0ˆ?B´®?Gùz?I,ƒ?GU;?Añ?Dº?F^?I¥¯?H²?CU}??œÓ?@z7?H ‹?EïÓ?Gë×?Kwj?KJG?JQî?EÛ¹?Byä?H{’?H“È?@ Î?Cö¬?H–?CÜ?E½Í?GÊå?F_?FEŠ??Ýi?DV/?Eö?Aþ‡?HÎl?I±ì?Bè‰?C5Á?EÎé?FÎ;?@îŠ?;Â?Eû$?I£?G?I£m?HMX?Hå£?H¥c?A÷¼??ˆË?>Å0?Aa­?Cå ?Gy?EÄL?9nS?#b»?*AB?@”?EÜ°?EÁÊ?Dï?Cã?B÷!?=àY?4RY?@@?E/f?G` ?Fš±?D/}?@0?<,?@¢—?Bw*?CU…?AbÌ?BçŒ?DjÂ?CÉh?C?Cl?AÇb?=(?9â?;‘=?5iI?;Åû?BÍ?BµL??Æ?<“;?=ö6?ATÏ?@J0?@Ëç?BÖ?AJ³?>aê??5 ?@J??µ?@aa?@¾J?@(Q?@ðà?>Ü?>&?>ƒ!??T ??!B?BÓ?@?h??Ž?=\8?8r`?4?4 æ?9ãª?=Üx??ÔW??€¦?@—???>“4?>Š?:ù?8u?vÀ?;4Ž?5¡Õ?9½¦?=Ð,?? -?1?=üž?9‹?0’ž?.Íþ?3| ?5SK?6Y;?7÷7?5W7?7>%?8™%?8ø?<?;=5?87[?8ìV?<é?<¡Ê?;AQ?;Yê?<„õ?< ,?8+Õ?4B?9€£?9U¯?5T?)ŒO?,Í?8JÓ?93G?9AX?5C ?6€?8°ñ?5ˆL?3Ô¨?5æ?5²?6Œ±?6¾W?0H¼?2³·?9—?9³é?:9¹?:`½?9ìæ?:R?:Y?8®­?5ÙÐ?,w?-ýž?.AY?*|Ú?0Ã?4½;?3i;?2¸?2ŽÆ?3¯¯?3›¯?08?0ÑÛ?)CC?&ï«?%ª?'æh?-ñD?/R?/fž?/±F?2zÝ?/}6?+6”?,”`?,oð?/lc?+^¤?*²?,l¹?+Zˆ?,|?*-€?#âc?(WÁ?-g?*Ÿ ?)u¡?3ÔS?.ÑÔ?(_‡?0_?,c?+3ã?/³B?-Ø"?,yÂ?+À?+?9?.I?'²?)ãG?/‡?.î]?%áý?%ER?)©6?.3¸?)½b?0PU?1H?-A?-Ê?2°I?/öG?*j•?-éD?2: ?0Ôg?)„l?'5q?*èa?-Ç;?(ÆC?+Ô‡?0ƒ?1þŽ?1'ù?,__?/†?/!?/XÏ?/ 7?+WÚ?.¾)?/©w?-‘É?/z?-ï8?2aê?1§?+¯0?0¼Ú?.õ®?1p?0?*'"?.DÙ?+±?,m-?0&?*˜ã?&Ö?'ÀG?(·Ò?/†b?0Uƒ?,té?,DK?(?- -?0cA?+þc?(–ê?*v?+Hì?*è©?*/ê?)”¬?*ÁŽ?+F2?+‚¥?*Û?*6þ?$ƒ?&£$?& -™? 7¤?V2?#¡~?'«ð?(?*¤?)œ ?-j»?+(^?#äK?&¢Á?'Øb?!M…?& ??(U?$Æ? M…?%{?(-ö?$¨?#ÁÂ?(Ì„?+,ñ?&ü ?#ð?*YŒ?)CV?';¤?*i?))Í?(Ãe?(²@?)È?)­–?$Æ?'…ê?.'—?+¥?$Õ?)Le?-Ê•?('0?'Í]?(Ãë?*¢›?&RC?(Ë5?,%?*ºð?&Wó?+_¨?0Hÿ?*ƒK?& ?(7?-…?'Xæ?#V?+êA?.= ?)í~?s? Íö?(©U?'%{?'mÜ?([‹?+$?)î}?(Zý?)íY?)Þª?"›†?"Šî?$n•?(uQ?)¨?'¤?)k5?)œ*?(q‘?)Ý’?-Q?,ùG?(ú‹?#ó?#3?)–¡?&—?#éÌ?('?,Ö’?,j·?(ü(?(¦æ?(Ä?'Ð~?# Ã?#!¶?+d‘?+¹ê?$†¸?"­? -?&Šæ?)H?%Ìs?´H?%ƒ?'ÏA?$í ?%=M?$Ë‘?%e?$³p?$£œ?&N?'5\?%’á?"åí?#°?% "?(±?(ü?(h?$z~?ª+?%37?%¶!?&ìß?(º±?'²]?$GØ? 0Á? Œ?(´ž?)™Ô?(šó?$Uâ?#;Õ?%ªå?%ø ?'ôR?!Z§?¹§?%ñî?$¥Ò?"?8È?$’?!k?š±?q]?%ùÈ?)Pˆ?'WÝ?&áv?&b}?%–x?!bi?"Èz?%Ò™?$? çç?(°ñ?)§§?&o™?!Œr?¼?1Ž?½w?"Yê?&fÂ?&‰/?%}z?#¸?#ÿ!?&rö?&!?%*™?%À¯?' v?&Ç -?&ª?'€³?%5?$u?"“{?%c?$²a?¥Ï?"Tó?'b?&¥?&Põ?&9Û?&£·?$ú?$?&h:?& ®?'?$ž>? N²?$’?&pó?&ɉ?$£b?#B?!!?#D?"Ú­?#0?Ì?#(?%™‹?"_7?ñ÷?!/?!Ì)?Äÿ?!ì ?$jw?%‘+?#¸ò?! ?!¡ö?"´?ò"?"‹?#/©?"*(?#‘½?"Åj?"Ñm?"Ý~?#o¼?#¾?"žJ?!dÅ?!•ç?# A?"±q?"å?!û?!´Ñ?#‰Q? îÙ? …‚? ö¢?!ˆ;? ?!tV?#D?ñ ? ‹?#-¯?$6?#,??!WÖ?"D?"­?!M÷? É#?_Ï?O­?öò?!w?"pœ?#ŽÒ?!rT?B?ä#?!Þí?®T??8ù? Ž1?[Ý?!9ª?!Gi?"Lƒ?"¨É?!]U?v¿?Vy?ÁÒ?¢?‡¯? éð? ú?!ï4?"§ ?#‡b?"Ug?Ž?yº?!³4? n?us?Æh? õX?é? mæ?!(t? ÈM?!»?!ô×? du?£Y? ˆ)? B*?=(?”ã?ÀÐ? H?¥Ç?"•?ÿ}?!0…?½#?¿f? k?ÜŸ?U˜?:8?!7p?„?ßC?¨Õ?…u?_Y? %V?¦*?kc?³?µK?¥e?ž‰?ø¼?4V?&?-o?0»?7V?üý?Ýz?©/?œj?ü?òð?x\?Á«?(®?ó:?‘?IË?ìO?HÌ?öã?5Â?ݲ?’?êÝ?0D?i?pM?#??ðá?A?TG?§¦?St?5]?zP?¹ñ?@?UÇ?žw?tÿ?Þ¾?t+?H†?PL?H‚?Ëà?7$??9Ü?þõ?±3?ÚK?I·?ÏÉ?Ôz? þ?x?œ?ñô?¢?¡>?³?Ù -?!–?aC?v?÷?±g? „“?xÆ?N|?˜§?§¹?åÉ?Z?È?¦¦? q?¶ò?‡æ??[ï?`P?™¯?‡™?Ë?°Ä?Ÿ0?âH?Qæ?¬Ï? -PÊ?Óä?B‡?™?Ê?ÿ­?Rº?tV?÷h?y@?Áµ?)+?W?äy?Á ?\:?ñ–?”?òÑ?Å&?ݶ?ÏÂ?2º?&?Àˆ?‘a?RŽ? ²ë?Gü?xò?Áç?¢æ?86?÷¿?‚Ä?š¹? ÷7?ôª?~?>?Ô‘?¬Ö?Œå?.X?†?wG?œ–?¿ž?ùå?? gÿ? )?7E?~¸??ð?÷¤?G?¹º?Qq?ñÈ? Ó?ç“?Gº?¬†? ^L?“ ?‰˜?o? -=å?Œâ?%?û? ?XÉ?=º?c@??ü?áè?!,?Æl?`î? Ê@?³Ê?í¤?? c?ñ?Ô ? Xn? »? ]û?·†? Úª?ƒv? ¯ò?PÑ?•i?õL?O? ?Rª? ^Ó?‹m?²%?PY? á?‡?‹‡? -N? ŠK? eH?”¹? -Ó$? +µ? ÿž? w™?¯ä? ?q¸? Ò§?·Õ>ù ‰>øËÓ?¸‚?è•? ?Á>ý‘? ?­Ý?®? r?* ?a? 0?WJ?=á?êÛ?–?×¹?4¹?‚à?šM?·Q?B^? -Ÿ?D?ˆÇ?Ã&?>S?‘U?å8?Š!?«¥?ü? -Œð? -vÄ?<1?©? Á? õT?id?¢?þ?×? -€9?ŒR?¿é? -^z? Jk?tà?Û? 8à?Ï¿? -?’?È5?§Ð?-?8V?…?U >þ7,?9ÿ? -Q_?¬!? ->ÿr‘?H‡? Øâ? ‚Ý? ·–?¿?•I? -`? ¸Í?ú=>ÿs§?Wõ? ÷ã? 7Ê?É?žF?\?ö·? -^g?¹!?ôH?¶8?@w?k? - ?ú ?$œ?É?÷ª?ìã? -L?M?é;? -W ?yú?†º?“±?;?Io? -…p?þ§? 4?—?þ?îÑ?Ï#?2>ôñ}>þò²?oŠ? À?Êl? -i%?Ã? šâ?4`?c?ÐŒ?Ü? ,?•?¹T?6?Öú?7?ÉÊ?…›?,f?Õ–?È8?3h?9}?±b?‡µ?ô‘?øÿ?™>ÿW>ý?Ù?%?žh?}x?t-?yö?Ys?Mk?óá?^t?öM?1˜?ðW?«?Îd>øÖ2?Hê?>ù›¼?ÞF?êY?¦u>ü¨5?Q -?·Ä?c?•>ù†Ž?Ó§?ã?–~?£? ”?2?ˆ.?²­?u¶?¤:?B‚>ÿTM>ù??xã?sl?lÙ?Ãõ?%û?‚ ?X?Xø?Ny?Ï?µÈ?±è?ýá?ª?+U?µ,?U–?‘ ?Ì€?jð?9ö?ë?ùj?ÿ?.?i^?ø3?j²?/ƒ?@É?˜?ù)?ù·?Ϥ?ÖQ?Xî?Ç'? Q?§I?×$?"u? m??Y -?Û?Ó?Œ7?‹H?û&?uÂ?J°?d? ?o?c×?‘>ýsë>ða¥>ý”…?Ô?8°?‡.>ø¿o>ìL%>ñŒx??tA?CŠ?}ç?Èß?×d?+?ª…?*>>ðÚø>úÍŸ?’,??·q?[J?í£?-?.??Lè>þ±i?V[?>?uÂ?ð0>ÿŸ?qÐ?À†>íå½>öCì>þØ ?{o?^?¢/?ô ?Ïz?f»?ÛŸ?(…?Ùð?£ >þ”?Þ7?»?„??xf?yé?aY?é˜?rZ>þÁ>üc?Ê%?»ò?‚?í/>þå >ø>÷ã ??™>ÿS›>ñ‰¬>íÓ?e:?D{?… >ÿZo>ü£>ýÚ,?ñí?]·?P>õ¬R>ü]?ñÖ>þ±ö>ý µ>øõ>ÒZ!>ßNÎ>þò?Òx>üœ>ù †>ü:3?–@?X?OS?BL>ü´:>û»Ò>üƒï?91?Æ“>þ_±>ú|Ÿ>ü“ù>ýN >ßÿd>ÙÝÄ>úÁ>öÿ>ó›|>úæ]>ÿ¢o>ÿ®Ø>û¢€>üñ>üÙL>ÿOy>þ¶á>ÿ{V>ü»ç>üˆ­>úªM>ý)[>ÿzô>þY#>ùÌ=>û^ >úàâ>þ¾>ø¸P=ŽVß=¦é¼=¿ ¨=Ô£›=êš=øÃ=õ”k=á~É=ËÐp=ÀÅ=¸®ï=¨;=‹9=[?=<’6=J%5=€9²=¥(X=ÄÆ=Óá=Ðk=Àd=«´=™@=‰XÚ=x1î=nÅñ=ƒ7ÿ=Ÿ=¾¼î=ÒW±=Ò>=Â"Ù=¬Š•=œvL=–žf=–Lé=•Ä=”µ=š)J=¢“_=¦ï=¤üä=¨J=´¨=ÀáÐ=Åêo=½#=¾¹É=ÂCf=ÑL(=æμ=ô{o=ì #=Ï‹Ð=¬óˆ=–uÜ=‘e=–€c=œb¬=žR¸=›Ç=—{s=—“=¡ Ç=±(™=½×|=Ád=½û -=¸ú=®@=—J=on¥=;¡Á=/©=T ô=vg=¸º=ÕN =ßLã=ßyÇ=ã×Ó=òˆ…>Õp> >§d>jv=ýÜå>Í>*&> .> ‘> ן>.¦>QÒ=ünK=èÓã=ÏDŠ=·¶=¨?´=£Gt=§Cñ=¯1=·J¸=Á -4=Í¢=Öúˆ=ÕûÉ=΂§=Ì6F=ÒÆI=Ú½=Ú3=ÔC=Ë‹Æ=×Z=¾­s=½³b=½¯=¼uõ=¾ Õ=ÇŽi=ÖL¬=ã8…=í2Ý=÷Íø>Ö>Jµ> -3Ù> T>Gž> ¼v>]|=êó‰=×÷¨=ÊOÅ=Ã3–=Ãèm=Îñ=æ¸ê>K)>à >‘‹> a>·>>r> dI>¤=ý­ð=ó0=麑=àf=Ó!,=Àœc=­“,=ŸˆÙ=•Ñ”=\z=‰ú,=“ÿr=¬‹=ÇÑÍ=ÜÈ==éw=ð“¥=ðxD=å€Ì=Ôð=Ï_=â5•>•)>ú>%”(>'@c>!5d>ƒX>mÚ>œ|>#“>¦S>1Ï=õr=ÎuŽ=´œ|=§¶ã=£d=¥Š7=®Èo=¾Y=ÎÙ=Û°o=âc=æê=îD„=ÿÔà> -¦ >·E>ãè=ïY-=ÈPˆ=¬cv=¢Ud=¨K_=¶îª=ÇGç=Ù³L=ô¤÷> pr>§H>"m.>–^>b9> -øì>T{> -å>ʯ> ÃÌ>+ †>-Ï>)…À>!‰û>F.> -ÕQ=ûc]=åaŸ=×’,=Ð6ü=É =À–«=¿º=Ѓ=ìÅä>E >&ø=ÿK>ùË> wæ>G«>Ù¨> Ï÷>Ö~=ìáŒ=çSÄ=êîÇ=èÔ…=ÚbÊ=ÄM =­ï=™ŠS=[D=˜;o=°Dd=Ì}È=Ý:ó=ÙXŸ=ÁËT= R<=‚¹Ú=e#=b4=w Ä=ŠãP=—<è=ž›×=¦Ú]=±ê¿=»'~=Äû=×q=üv>Ü >-²‹>9›j>5².>%mC>Â>J>5i> ªÑ>~À=ü§ =æu½=ÛLâ=äÜÀ>Ë7>lr>-aK>?w²>Lƒ>SÓ3>W~ñ>VÊ>R|†>N¿>N¾g>ORæ>KpB>D%$>?Dó>@h>D­¦>I¨v>LŽ">K†ƒ>Ed*>;d>2Rç>/ÛÀ>43W>9q>:Ü›>7Q÷>-øf> Cñ>8>ãZ>¿’>»V>±‡>PÅ>!­K>(k>1>9f=>8l&>-Ðá> ½½>æ>Y>0Êd>Hib>\¡P>h >m ¥>p®õ>u>w¼j>sÜ–>j>©>cöa>gÑ÷>r >{öZ>•->ƒ8>£Ž>mø>V]“>H›>Fÿ >G->>ß5>2í>.>Ç>5hµ>Aø>KCh>S|ý>YkÍ>Yà²>R~Ö>En1>7}¥>-cÝ>+š—>3að>?->Fì>>HõÏ>H6>ErÆ>=R>-<µ>H¶> H»>ÿ|>+'þ>D"ü>Qd>P>E#Y>5ï.>)($>'Ö•>4)ž>D±ì>PŠ>T¥>Pw>A,€>,†ü> Jj>#ý>2LQ>?"ó>@ñq>6†^>&°ã>Ù>[9>ü>+£>;—;>F˜>FƒŽ>9> œÞ>Ù=ÕŠ–=Ê -‚=î†Û>eP>48->D>À>Jý>QÂV>\MÀ>f _>h§,>_â¶>Jc>*R±>­a=Ýî=ÏÌ•=ò¦Ô>>=1ç>Q*s>Vµ>P¸P>EZa>5ˆ:>#}£>ÿD>¦ý> ¬ð>&…=õ*8=ìï7>Ò!>&»·>KÅy>gx>sÌ->pÁ>\v4>=þ>ÇH>B>øÞ>›ú>Vr> z>ße>6;x>IjÅ>L2>DÞÛ>FÁù>V”>cØû>_bi>K¹d>4©³>#Ÿ">lp>'úG>>-_>Y·'>rk¡>y¸>…`i>‡>‡†%>„*¢>xº1>ilù>beÛ>aGB>`/¦>]7>Y*Û>V®Z>V‚j>WY½>Zo8>a–¬>g[>b#?>NåŠ>4ì>!¬>óy>0ìi>J\ä>c+}>yÃA>†°w>ŒÓ§>ôP>Šþ*>… >{Ÿ!>q`µ>p >rØA>s>s›™>}TQ>ˆÊ >“é >šÖ>—¥> >}bÞ>gÝø>eþ·>uRu>ƒ>†_ >…J>‚]>xíÜ>`R>n§> 7>Aô>ݾ>,’>=•>O–T>e9”> n>Šúo>‘¤ë>””C>“Ýa>Œmš>€D>qRd>| i>Œˆ>˜“o>™TV>Ž½È>hÇ>hy>\bf>V¥@>SÝ|>XÛp>fÊ_>uÀv>|Üé>z^‡>u5¢>vÉ>€2ç>…šÍ>‰W>‹°›>Œ.|>‰Kœ>ƒ=®>v´)>cñ‘>Nõ2><šs>5>>CÇ>Tj>l~3>~šS>†=–>‹R>Š0ñ>‚F]>tC/>u -¤>„“Ë>’ôZ>žâÍ>¡÷“>™“y>‰ô>oÃ>W­»>PËz>RáY>WÑ >`Áú>hÙ>fU‰>]y‘>[ô>jät>‚îï>Jj>–r>™_>œ6Î>Ÿþ>¡Ø%>ž>–÷¡>`¢>ŽÖ«>‘/¿>’Q>ëu>…¥«>a ->{‘Ù>tåQ>c°*>P(ã>J€‰>[l­>{‹A>Œ¯z>“Â/>‘Ì„>‰–x>~è`>nÖø>d…g>WÈz>A°À>)c>wü>$÷A>>áV>be>€µG>‰•s>Œøñ>Ø{>Sˆ>Œ¨.>Ž·õ>“ò>˜zv>™8˜>—™Š>—Q×>™úÎ>œ¨>šZ7>“Êü>36>‘`ª>˜}¡>Ÿ.%>¢{>¡®y>Ÿm½>œ^Ú>šVÃ>›2™>±§>žÒ`>;.>˜ëö>‘ú}>‰ö%>„Ýó>…"è>‡}>†Ô=>‚î$>€ì9>…^>Ž•>— O>›¦>>š€Ó>ïˆ>v4M>I&>3&ç>;›>L˜’>J¬X>2ú¬>ñS>ºp>8U;>ZÊ£>wUa>ƒ=˜>…¼>„,O>€›I>nªÞ>P€Î>/y >Šm=üm°=õ¡¬> -Z>"3>#Ã~>²è>Ž¥>þ>$Œ9>Uæÿ>sÃI>Š¼>”\ô>’Mt>ˆwÁ>ƒé>ŠÜ>–9ô>Ÿ!(>¢ÔY>¥ð >«‰¬>±*©>±êT>«L¡> Yà>–M¡>÷Ý>…®Ö>~ô]>yƒN>o×’>X·°>AÅF>B†z>_|/>‚>Žíq>”(_>˜ÎÎ>Ÿ4%>¡ç»>™Ä>„á>V -Ã>7)W>Aš>jC >ŠŸ >˜Ù§>Ÿ1>¡->¥o>®¶]3>¸p>²Èi>¦ß)>’5>p«>M·ˆ>Píç>nŠz>„ð>Œi>‘/´>˜ ß>Ÿ ,>¤Ðí>©X¾>¬ÚÅ>­Ûc>ª,>¡ï>˜sè>‘X>Œix>‡Kq>z™N>`¢H>TÇö>cl·>4>b¼>›ª>£•–>©Ê>­DÙ>±4>µ¬>¸x4>¹¢Ñ>¹éž>¹íó>¹è\>ºzØ>»^_>ºÇa>¸>¶Ó>·¸B>»Öá>½Ž©>º>->²É>«Kü>©n ->®WÍ>´”½>¶¼?>µ¡Ä>µ¹ >·œ>¶Ÿ—>¯™>¤—7>˜eÚ>2¼>ˆ Â>‹< ->‘1û>•^ä>˜W>˜Ø>”<æ>‹²Ï>„@t>„YP>Ž8¾>FJ>«Ôñ>µžM>¶óš>°ç>>«&>¬\Ó>²Ôr>¸,>¹-s>¸ô–>ºX>»½;>¹â2>´Ä->¬æ†>Ÿ °>‹ÿì>p"=>Z0>Z×Õ>bÑþ>f!’>m¡ú>ƒµ£>˜d<>¬ä…>»D>Áðd>Á% >¹Ž>¬ÌZ>œOÐ>†š?>U/¨>Û(=û‰š=ú­>=c>:¨#>jr>ŠÓ\>•S>ñ6>…jÃ>*,>‡Í1>ŽÄ.>w>—Ã>Zb,>'ä=÷Ä*=ÄÖB=·B‘=ÆM=óÉ ->!ç‚>PÊU>v1ˆ>ƒö->ˆí>jÞë>It>)Ô>”*>–Ê=þ[=ò¹¶=æä³>©É>,Â×>b9¬>„´T>v>–@„>œ3è>›k–>Ú•>lsy>E7¹>@ël>[n&>y¹‚>ƒbX>}7Â>i„>a>jQŽ>o)‘>lîK>xöÂ>ŒG>› m>¢*>¥>¨9[>ª>¨p*>¤}K>¡àå>¢¿“>¥uÞ>§»P>ªõ>­7Ù>¯ît>°¦î>¯nó>­#æ>©›>¢L5>–9¢>‰“O>ã!>iå>†Y£>ÇE>”ë>—V>‘Àæ>†ºµ>|Èe>}»L>‚ìÝ>w˜>kEæ>aÞ}>rë‚>‰`V>–žÝ>žhÒ>¢b>¢t†>ÉÓ>•->Ž‰ >Ž_>”Þš>œi>ŸÙp>›É<>åj>)ã>hëu>S†¤>G:‚>Oˆ>aÄ.>c’Ú>I9¬>(‚> y˜>3@>Bwò>6jK>oC=ý¯ë=ñ"Ž=ú‰8>#§> -"û>cþ>9P> c"=ùq}=ô œ>+Ð>¥E>.T}>%HM> õK=ñDý=íÈX>ž>%¼@>R õ>xƼ>†»X>‰$þ>‡µ>†m>…·ë>6Ÿ>nò>]qC>a-z>q¼ö>zPn>sQ>aó×>Kþ>8v’>+>r>oS>dš=ü|/>Ó\>;—S>j“×>‚ -¿>²>>x1ð>s¨¹>w >wÏÝ>mãâ>X¾U>>£ð>,•b>/‚6>Ié,>o >…ä>…«8>qô>M1Ñ>8Îm>=êe>JN>LF>KÏ>ZB{>o²Þ>oõ>S¨À>=ýg>D¶ƒ>^R£>6‹>‘åÖ>¡ >§x{>¤o>>›ò—>’F—>ÍV>‘Ý8>•¾$>Ù´>‡ø½>„ð¡>‡ïl>ˆÇº>†©Ÿ>…¡Y>‚7Ò>yx5>€V >p>¢2w>«ÁÁ>®ù>°y„>µep>¶ä¥>²â§>®CÄ>«\<>¨›l>¤†»>œÀ5>›°>€±é>m»B>hOõ>k½>sZ»>|S_>yjS>dÎ(>CÕµ>!ŸÇ>B =èAT=ÈI=¬kª=—*a=‹óÅ=ŽÅ­=¡ð=Á~©=í¹„>@y>-Zç>F³•>X`8>^Zß>UÈK>G²a>M.¤>q*#>Ž?@>š°@>Ÿn>£ð>«ëŒ>²Nâ>³ >±'(>³Jx>·¨>µ€Ñ>¬d¸>¤Ý>¡Þ>›ê€>ŠP>^6>3´Œ>) Œ>15õ>1M¼>X)>*­=ÑÿÒ=±j =¬Çœ=ÇÅ«=ýô> ï>Dþd>iÈî>‡–˜>™‡>¦Ìè>±ìØ>½½j>Éùw>ÒÒ3>Õî>Ñòz>ÏžS>Ò¬¿>Ù˜Y>Þ“8>à<>ãîB>éýu>ì’“>í'Y>ñëJ>ùq>üÀ,>ø•H>ñ>„>ìt)>èÙ(>ãËŠ>â4¥>çâ.>ï{=>õ§>û7Š>ÿL°>øR ->è >ÞW‹>äÔú>ô4z?Qp?˜9?83?Ë? í"? bý?+Ã?+>?®‹?A¯?]ˆ?ie?á?&o? %m? ñÎ? _×?•g?ö¾?ÎH? žš? þ„? -ñ?Üý>òM_>êNb>èlÍ>è$’>ídZ>û †?­]?””?èk? þO>Ú+?>¼Ë½>¿@Ž>Ýði>þR ? -Ú6? ?Æ•?·K? >ýŽë>ß™^>ÚØÛ>í}9??)ò? ±ï?³ü?rŸ?3>ð>÷¤?¶1?!v?Å?Î3? T?ƒ«? ¾?þ²?nU?Àô?Å…?&?ß?JÂ?qW?$£?(%?()¾?%¿ß?"ìw?! ä?!m?“(?€‡?£Y?)…?g0? ÓÛ?ˆ&>û‰`>óÁü>ü—º?^Õ? È?c£?ŽE?B?ÿÍ?“?•?ƒí?e?$?ÈË?>„?J¸?ª ?à?ò”? -?³z?Û•?Ñ\?‘Ì?"&æ?"eª?ý¶?1?÷?®d?Óè?+.?ݦ>ÿî?ö+? -fL? '?åí?Ôl?o±?z?«s? ´Ò>î}ì>ÚyË>çšD?¸¸?¾K?Š?ñ‰?Ëæ?±€?ч??$ÿ?Xš?|?Úû?eB?.?eV?!EL?% ×?&Q†?&Ô?#»8? ¶?BS?ˆÕ? ?Ôl?ÝF?Ÿ™?™ê? ?L?{d?U7?­k?è¼?Y? qa?!¬¿?‡s?™°?Q:?Ýð?GT?ßH? ‘Ü? 0é?£Ä?wô?N?oÛ?? Ô£?×ä?&c?V†?Êû? o?˜ï? ? -»²? æ“?ݦ?œ¿?'?!Oa?"Ýè?$g«?#‡G? ?qæ?vÃ?k7?>?J5??â?=Ù?} ?%œ-?'8z?"WV?‘5? 0Û>ï¨>½ñ>˜q%>¡“2>Õ[Ý?Ðß?›e?%í?J?;.?A*?\P?Ê)?»”?8?×?çö? œx?Jp?ŠÕ? §9?'?&ga?Hå?o‚? Y¥?Ë°?œ¬?|?>^?T?è??`é?hk?$%w?V†? æw?—š? -Á?þ??ÿ÷?#‘ó?%m?!cŸ?‹ü&2>áS>ßMc>ç`>ë»>û¬ì?ÒÜ?ë7?H­?î?? ŒŠ?¥\?€Á??'? JŸ? P,? Ë#?ü>ö\2?ùñ? Â}?…÷?jÌ? Qú?]>þ>æY>Ï{Û>Ä®R>ÈBŽ>ÎUý>ÑÔä>ÖG>Ùk>Ô«>ÃâÏ>°ÔA>«·è>²át>½—¹>Ï?X>í4U? 5Y?,?/%K?;-¥?>?>$?>Dd?9Ö?, Ù?™È>ÿ߆>ê[R>óQ? œu?"Iâ?/‰6?59«?8m#?:‰:?;?:­öžÛ>骩?Mí?yï?*ab?-b^?,Hž?, ?/¹h?4£š?6<ò?4AÄ?3hž?7€”?=iÚ??l?;v?7Ä?7¿’?6?):?fX?þµ?"6ï?-£Ì?4Ìù?>ý×?J;,?P® -?O—M?Euô?6xA?0k)?8òW?Er¹?O@?U™?U/ù?Q2Ö?O À?O1á?KÃÆ?DðF?AÄù?Fwð?NZ"?Q¦ž?R”Ï?TÀÌ?Rª?H=Ý?<À·?>Œ?Ls®?Yæ³?^¥?\3«?U;›?M,¶?J&$?OV»?WŒ#?Z•9?W_©?TÙã?V0¾?X_É?Y•&?W5m?L÷•?>I ?8Å??¥?JFA?N!Ä?LþA?Kâ?Lá†?RÎÑ?[!Â?^üI?]ûw?\s?Z‚«?X£:?Y0?]‘?c½?fýÄ?gâ?e}.?b½Q?df?gþM?i (?dÖŠ?]c›?X<3?Zâˆ?bmJ?h^M?jâ ?jkM?g{{?džK?fÐ?jÍ?l*±?geŒ?aDÙ?_Äw?b“#?gOò?kéÍ?mäG?l»„?lw?n—0?qÓÿ?sNg?sŽª?s„“?sòƒ?up?uwÚ?s–‹?pk¦?n—ƒ?nè ?oÜ?oP‰?lìž?lX?og³?r1Ÿ?q9ž?mÐ9?k˜Ò?iö¸?fS?_}Ì?Y4–?W˜x?[PÑ?_(÷?_ƒ?Z£‘?R{6?NjE?UJ‰?d†Þ?p,&?svN?rþ•?s £?sºÕ?rN?m÷$?k&3?j·Â?i5K?e‡È?dD¥?gn?iYì?fŽe?c -"?cð@?i{ò?pì?tL?v9^?w\õ?wÆæ?v1ô?råü?p§¨?q]¦?tu“?wf;?wìs?tûG?n÷½?k†R?oÊ?tÓ?w­°?w²?u¤»?r:¡?nX?k)l?k6`?oT?r Ê?r([?ošv?p+þ?tYš?w*h?va ?s¦z?q®ö?s*ì?vàX?xw?x ?wmƒ?v9ü?sìÄ?p9å?le*?j´R?lÆ+?q=?t#ö?t…?u-”?w&9?wl?u¥è?t;q?s$?sè4?sõ¿?r¡s?qõ˜?r²?t4!?v1i?w|?vTç?týD?sS¤?rAO?st?u-&?uW?t·F?túW?t*Z?sdâ?tÅå?v-¾?tÚ¤?q¼÷?oøÿ?pÑ?så?w þ?w‰W?uHš?q$_?l˜a?k?mVa?oé?oã€?måÿ?mLy?m8?k”m?k«¼?nÇ€?s6”?vò?xž£?x<)?v¨J?tü»?sÕq?qQ½?j¸‡?cü?dðÖ?lSÚ?rµ9?tÿ?t3¼?rÙ ?rÖ8?s¾?s5?p†˜?ns®?mÓû?mWš?mÚ¹?o&j?oÎ?p±?pmä?pO–?oÍ“?nâÊ?máè?måè?nm­?n¦Í?n•?n(Ç?mžz?mf'?lò¿?jx¹?eŸŒ?b¸=?e¦ò?jm¶?lL›?ll&?lëÅ?m}Æ?n¬?nÛI?oO ?nãÐ?o-|?q -‰?r°„?s²?s3=?sY€?sTt?sœ?røº?s/ ?sZ/?r†Ê?q7_?pžÞ?p›?qVE?r¬S?sÂK?t±?rì¬?qs¦?r]R?t°?vp-?w2‡?wÝ5?y0³?yÅ’?yƒû?yC?xÌž?x¯e?yœ ?{ñ?|ý?{fì;/>×Ö¯>Î(G>Ñ#õ>Ý‹Ê>ò<Ä?Îõ?Òñ?+ð?#ìW?*!?10?8Ÿ“?>%?BGÇ?G ?M8?Rè"?Xà?\‘ï?__¸?aš2?cPQ?eF«?itþ?l¯?kJ'?iš?jW‹?lHd?mŸº?p²Æ?tÚÏ?w¬C?yC:?yÆ·?y‘?x[E?y'?yP_?x(z?xv|?z?zrú?yï\?yB?ywá?z(?{?rÿñ?s‡Å?tæ¹?w €?xeé?wHZ?v/¤?v}[?v™?uÍý?vÊ?vœ‘?v”3?u_?sPs?qï|?q¯z?qÅñ?r Í?tt?tÛÐ?u ³?sÑ‹?q9|?oñ?pîÄ?pµÈ?o?L?mâr?l¥ö?m#í?nR=?nšË?n#&?l./?i 2?iE?j«P?j‡Á?k#?l»•?mK[?lŒ?j€?jÞ3?l+|?m<?m ¢?ls?kä?l‰?j°?gRê?dù¤?cÖê?dŒ0?eÔ˜?fíc?g?d¢Ü?cá=?enð?eºQ?d˜?cK|?bF?`W±?^€ ?]|Ç?]Æ?_œ¡?bJÔ?c4 -?br?aµí?aÜe?b?a52?`„^?_zø?^ß?^Ÿ‚?_ç"?_òN?^q`?\¦?Z?YÒ?Yõµ?[;`?]ÏÕ?_þ8?_Z?\öd?\O™?]&‰?]Û -?]#Å?[îI?ZÀ?Z0D?Zó?ZÚÍ?\¤m?_jì?aÎŽ?aãž?`rN?^Œž?]Dk?\ùœ?^/‚?^y?\Ä7?\¶7?]:Ì?\S$?[S)?Z‡{?YÒb?Zð·?\Øj?\ZU?["X?ZßT?Z†}?[›Þ?]ÈÇ?]Áÿ?],n?\ã™?[Ž?YÈÅ?Y‹ª?Z?Z—c?YN?Y^“?Z7?Z?:?[ï?]÷Ž?^Ÿ8?]uÙ?\½,?]b?\ Ÿ?\‡—?]S’?^¹D?`RD?`¸Â?_§?^o?] ÷?\}H?\º:?]Pf?\±?Y‹'?Wùs?XŠ?Y‚ -?YƒÁ?Xú¹?Y;?ZÞ?[S?\b?\¯2?]²?]:9?^;Å?_N?`6D?`U?ad-?`æ?aR;?cû?fš?dâ¯?bí?bMó?cV?d6»?d9 ?c©??cWB?c˜%?c t?c?#?d>$?d"?dP¨?fIK?gêw?g½;?g©™?iTj?k)e?jÆ?ið°?j©—?jù+?jÒõ?jåy?i°?h‘?h†?h%Þ?jî?lë®?oH?pøì?rÆ?ri?r39?qÓš?r÷j?sŃ?qn?oª3?nêÙ?n?pk¬?t:?um“?vÔ¦?wö?vH?s•Á?s7¨?t““?v*?w$?w8°?v9Ø?ukò?u?t—?s?t)þ?uK¨?tqt?sUê?sŸ!?uÒ\?x?w˜Ù?v¾ê?x'u?z¼>?|²?~?}‚w?|?z$î?yP?xü[?x`u?xÆ?x-Ð?ydö?z^ÿ?z€w?zÙ¡?zbà?x€ ?v?vµ?zB‹?{ã?yì?zß?{DÔ?y¡€?y8±?zMî?zŠ?{‚?z™•?zy¡?}RÝ?€«¬?€ßÈ?~iÿ?|Ã?|l/?{¦’?{ ô?{êñ?|T[?{^ã?z™?y=?yVº?x.K?uÊ(?uvu?v‰h?x?z!Y?y½ú?z7›?yå©?~X ?|¬$?|«ô?}Ð?|_=?zcª?zõ¦?}4ž?~†?}–??~ê?~}‡?}5?|kW?|‘?{ëá?}¥?€Å?€›½?}¯§?w)T?u ?yØÇ?¥Ñ?‚=×?‚³¯?¢z?€Ÿc?…˜?}*Ø?{d?zÑ|?{¢‰?}ke?~A?|Õ¤?|*5?}ÑŠ?€ÞU?€vt?—?€lÌ?‚!»?‚m@?€¬?~éÕ?~â|?~3i?~§?ú?{·ì?wxq?|û“?‚% ?Ú?€g`?€>^?Øá?|®‘?uÜ?rrY?w8?yie?{ÜÚ?€D„?¼?‚'W?„¼?…Ë0?‚ÿ?|gÅ?v©y?uÆ?zhú?}÷µ?–|?À?{¦&?w ?|R´?~¸´?}bT?}sV?~?ÉÈ?‚‡Ó?„@?‚¤Ù?6z?‚`™?„y5?„Ä?¤½?z -Z?|>l?~í‘?}¬c?~ì?é‡?„ µ?„¨ì?ƒcä?‚[û?(b?M/?‚Wî?€Þ?€-P?‚ËK?„_?ƒz?ƒfZ?ƒxy?€?é?y8ý?yòï?|àn?|8·?uöl?uh:?|ÊZ?`6?€Ýe?}#S?}îÿ?€¨=?g?{¢?yTª?v½1?{Oæ?In?ƒ§+?„“œ?ƒéÃ?ƒ*?,L?{Ò?yz™?x®Û?zZ+?€Ó?ûž?‡‡?~¼z?W•?Ô?‚ÀN?‚€9?Æg?ƒ{Ð?‡Æ?Š?ˆ·µ?ƒr?~€¢?~Ï?™Ã?€"¢?€ÞÏ?€Cš?ÃÐ?€­5?ƒ-t?‡U¶?‡lÈ?ƒ’Ó?Á?ƒë+?…Ù¤?„}t?“œ?}7?|è³?€‚O?€»?€X\?€%à?‚D ?„úd?†ª?†Áˆ?†|?…«…?„Ä@?„gä?ƒ¡?‚’°?ÍÏ?‚€?ƒÐM?ƒÃm?‚þ ?p¹?}<Ò?{ "?~®Ž?Îó?‚ge?‚õ"?„&:?„ãí?„º?‚õú?‚„l?„Q^?ƒ‡³?§¿?‚;Ï?-s?{”Ø?{Äc?ÅV?ƒM?‚u?¡?‚Ý?ÑZ?‚UÇ?‚Š ?„?†A?†Éý?…ã¢?ƒl?ù?Z?ƒ†þ?„ùÝ?…˜_?†ƒD?‡ê?‡ë\?†eD?„H?Ø;?v ?ô5?l0?ˆ³?‚Æ{?„8?…ç?…ge?„\#?„£Ì?„:í?‚‘?‚¾?„í!?…Ń?„ð+?…l[?ˆhÏ?Šƒ?Š#Ž?‰¨ß?Š}?Š©Ì?‰!6?…ô4?„^7?†Õ?ˆ¡?‰‡I?‰&¯?‡ ƒ?…ú?†)?‡º ?‡B[?†Ð"?ˆE1?‰Q?‰5?‡b?†Îb?Š…á?ŠÀý?ˆ¹å?ˆ9’?‡,?†¢ ?‡‚ ?ˆu?‡ö€?ˆ??‡Ó¬?†}5?„žâ?ƒ¼š?„ Í?„«??„‘#?ƒŽ«?ƒ“r?„c+?…À£?†å¦?†¨u?†?ˆ„ñ?Š?‰0M?‡1?…œ?„À›?ƒ µ?‚BC?‚%}?ƒ*?…?p?†Ò‘?†£?ƒeÝ?~-“?iø5?bó‰?s­?zMÏ?lë0?^xÍ?l°o?~øî?‚h;?„è|?…5÷?„¹*?„ûZ?† -Ž?„±??‚Vâ?‚SU?ƒ„Á?‚¼[?‚mÉ?„†?…Ý5?‡GÑ?‰Ôû?ˆx?ƒ˜?‚–Ä?†¾)?‡É(?‚Ý4?—?ƒ¿g?… g?„Mï?ƒ´?ƒü?ƒk?‹·?•ç?ƒi?ƒÄî?‚{?‚ö?„”E?†àB?…¹Q?ƒ ª?‚›å?ƒóg?ƒóÄ?‚Ç?èË?…û?‡µ?†t?…¿ú?…v˜?ƒ‰‹?ƒ[©?ƒe‚?‚]?CÕ?D¯?€,Ö?Þ0?ͨ?ƒh'?‚Êî?¤?€0ù?€ÐR?ƒ[œ?„Û6?ƒÆ?‚kƒ?‚#º?ƒgœ?ƒ9×?d¾?‚­?ƒd??Îö?€ý@?‚›ç?‚»u?Âm?‚ö†?†$ã?ƒ¦V?~â*?~É¥?z?÷?„†”?„©ö?ƒªÎ?…Bš?‚´§?‚¤I?ƒŸ[?ƒK³?„¡?……ñ?„|?…5#?‡ôu?‚|™?xCï?~zÌ?‚™Ü?‚7?„‡«?‰y`?Š?…Õ?‚–•?ƒ‡k?ƒ!R?€Ãb?{œ—?”g?…¿A?ˆ^9?2Ï?uÅš?z5ý?}K?|”-?„õ?ˆêÝ?ˆK?†?)?„Æ•?†ñÚ?…`£?~š?v´?oXu?u«q?ƒ‡0?ƒ¤W?|mÎ?€*H?…·ç?†çH?€›e?t£?wí?{Î -?yÔ{?}Ïj?€0ò?x+q?k}?hr?nŠ?wá½?|ûz?}v?zb|?t/Ä?oö·?u&J?}>?²Â?ˆO?‡…G?‚ÔÀ?‚7p?‚õ§?†|?ƒq;?z–D?yX? ?‚V3?€À¯?s$H?kšè?uÝJ?xÚ,?s/ù?l¤ã?q«M?z B?x0?o_·?vNî?¾ù?…€s?„Åi?x¬?‚a(?€Xf?mš–?_j?guþ?|àÞ?ƒLØ?»ª?q+ä?lÎ?z\Ž?€É¹?ƒE¨?†¶ ?ˆS?‡°D?„Ð…?{Ôº?rS;?u””?y“!?y¬¯?xv½?}£Í?y‹þ?v< -?|h?‚(?x»¶?yð/?zß?zkŒ?z@3?}gÝ?|uu?x­Ç?{Óé?~¬ú?~#N?~< ?{A—?x5?u£ž?wëm?t„œ?v—L?}õ?€:£?~/ÿ?vŠv?x_‚?|ˆç?~>¯?®A?€'*?€?|¿ý?zŠ‘?xÇ?|Ÿ?{?Â?w:î?€”¿?³?yˆÏ?u·ô?zx?ÁÈ?}ú?s¤û?t ?t9?tv?rþª?p§³?kƒ?gíƒ?j¾'?pAË?rø?tÆ1?t¡?rp%?p„Û?hOÉ?dq?i Ï?j«y?gN?jW?rb?uðÃ?u¦Õ?tí`?t*?qX?f?dDj?dÚ¥?f†,?eÜþ?džt?dõŸ?e5?eƒø?fˆð?gƒ:?gŽ"?g|?gä3?fÈr?d ~?co?aÞ?`«?b¿?dJ£?dº-?dœ3?cÀ?`ãª?b§ê?dÊà?dØÂ?bµ?\ßh?]Ù†?cxÙ?eè|?fÄø?føï?f—?fÑ?eÑ ?e’¯?c‹ƒ?\5×?[ù?aÅg?eø?c[?câo?gt¡?fT?e!œ?a_\?Wµš?\]Ë?h(?iþ?iÒä?jßb?g¹á?bªQ?d_á?aá?Ylo?_¨?e8B?_а?WÜê?XÊ?\y™?YºÝ?Y||?_ß:?b¯?c¿ü?aŽe?`Ò{?ekA?^îK?Tt½?ZOÌ?b¿3?at?[øz?\‰ˆ?Yâ¤?Yù?Yrž?YÔ/?YY^?X÷à?X[è?W Œ?UûÌ?XR?Y> ?Wr?WY½?X-‚?X€E?V­?O‘ó?Lû?J-)?Fí«?I­=?I¦”?Bh¸?Lùu?S]ó?RµR?T¢e?UŽ‘?Wn?WgÉ?TºJ?RF?Uq5?V•—?V7Q?TÓ²?Sbv?UÌ?V3G?UÔ0?S)–?O1?På?U™×?W³?W8€?VÒ?RuH?I°D?HÇ?K¹ˆ?Qí?U¦?T|S?S - ?Mþf?KYˆ?MSn?P5a?T¨ ?U¬R?TƒT?T‰?TŠ?SîI?S¥ë?PÖ±?OÔ±?KÀ?G~?JHv?O¶ä?R2T?S=?Sï“?S>à?R±[?SzÄ?RÒç?R³ã?Rõ ?QËO?Pß?OÃÁ?OÐT?P/n?P£?Oj«?P1n?Q†Y?QÐ?Oxê?N¹?O³¿?P£Î?O¡O?O$¥?N«l?O³?OÖà?OÏÑ?NÌ\?NÈ??O*{?Nxb?Mñ?Nôˆ?O1:?Ofó?O²Ž?O'Ê?O9?Nú;?N_Þ?MŬ?KÞ_?Jw}?Kïy?Kðƒ?M@µ?Mö—?N2?M¥ä?MS,?M,\?Mí?Lùv?MZ†?LÛ?L¶"?L‰é?L¦ñ?Lfµ?KïÎ?L -ï?K•1?L1¨?MŽ ?LóE?J½×?JW?I¿°?I›,?J¤?Jƒ]?LÐ?KÔ?Kï?L ÿ?KšN?IT?Gææ?IIà?K)”?Iáó?IÂ?I a?IÏÒ?HxU?Hk?FÁ÷?GRl?I å?HÅ?HÞ?I?IUb?Iâ?IG¹?Hë?H³¨?H†«?H±?GÑb?D"æ?EÍo?FÂO?GS?Dçt?D•%?G˜c?Hi?Hîn?I©…?H©}?FÈ?FÀJ?F¶?Eب?F[E?GÆ?GÐæ?G²?F£Å?F÷M?G|Ó?GrJ?GÉH?H±?G6?F%j?F±ƒ?GÖ£?GÉÉ?FÁ×?EÑø?E'r?B™Ä?A}?D…?F x?G|¹?Fqñ?EáR?FXK?FN?FËé?Eö*?F%ù?F'g?D?CëÀ?Ci5?BpÁ?C§×?E’w?Dí7?CÅ?Dh½?E€ž?E47?D&G?A¯/??Fh?@Â?B>G?D®ó?CÙÑ?CêÞ?D¯˜?C¦?D·?DÆÖ?Exz?DEp?A¢S??md?>çI??¾²?A/%?D'ó?B•y?@=ÿ?A!“??$°?B¨?AÓ?=u{?9îï?<ö‘?>·ê?>–Œ?B}?CFÜ?@‘Ý??áö?A2Ê?@—œ?AÒ?@©Ì?=¥S?>9†?@à»?@í?BM?A»‹?>V¾?@?@±ª?AZ?Dd?Bt0?@­Ô¢??•_?Bbj?B@Õ?><¢?<¯X?@?@ƒJ?AðÒ?D?@ñá?:üï??/j?Ax§?@å?A·'?Bhý?@j:?@‹ž?Aßm??OU?=©×?:ï€?:ôÈ?=h?=À?CäÒ?>,ô?=Ûš?@Œ??xÊ?7•ñ?:<ú?@ÿZ?Cá?ACl?;ææ?7ˆ«?=F˜?@ÙG?>ð&?>ƒÓ??t??Ô"?AØ8?>›d?:Ŭ?>9ˆ??ª|??’?>¤ü?>Äè?AM§?@Ȫ?> ?=]i?=¶D??€á??””?=—ñ?<¦I?=Ôô??n??¬³?>³õ?>¨ô?=ì^?=bý?>Cþ?=Ú†?<›?$¸?=`?> -®?=÷?=H¾?<¹?<'?<C?<)?w?<É?;“Y?:G -?;ú?< -W?;.:?;Ây?<‚Ž?;è?;¡÷?;¬ÿ?983?:!‹?62 ?3os?:—Ú?=¬?< ‹?:êø?;>$?Ú?:’j?:ÂD?:}â?9ËÚ?:4?: Ž?8å.?5@F?7¼?9»D?:2™?:¤¿?9ûy?9Uâ?95$?9©R?9sè?8cJ?8àÚ?8\ï?6•x?.J?Û4?¿9?05¶?5ž\?6±Ä?7Š}?83?6ó‘?2wF?1?5`Þ?6˜¯?6«,?6tƒ?6%»?5?5™;?5 2?3õk?2\?-›¿?!õ?lŸ>Ûo? A¹?%zi?.…¹?1ÁJ?3’»?4)h?3²È?4lZ?4í$?5$?5 c?4éB?4A~?4Ú?4 z?4L?4ÕÕ?5!À?4F??2ìƒ?3ª?4¬>?4Ó?4z?3’6?3Ë)?3—z?2ßn?2ðø?2¨Õ?2Ò&?2´%?3.?2cg?0R?1á°?3u?2­œ?2:?2Qò?2²ç?3Dì?2ïƒ?2ˆú?2u??2+p?1øf?2?0?/ v?+TŸ?z>ø…ò>ö x?ÂÎ?)¯‹?-Æx?.è¯?,óm?*áx?.p0?/óI?/ôˆ?0w?0 ?)¯Q?$e‡?-¡ ?0ƒ?0‰Ö?0c»?0Ê÷?1^ ?1i?0²~?1 ,?0M{?/Zò?/3õ?/ ?/Ëc?0 ?0yß?0"0?/ÿÐ?0 ?/ûÒ?0Aý?0Š?/¶?/ÓØ?1)M?0þÿ?0çá?0Þá?0Ô?0d3?/”Ê?0=¶?/×ê?-ÿ.?/á£?0v?/b}?/…?/íÛ?0>?/Bb?-öÜ?/8,?/­ê?/NR?/b?/7Ü?.Õ?.·?.G[?-±d?-_?-£Ð?.3?.„‡?-ÏJ?)Ss?3¶?‹?+b{?-d?-k°?-—D?-è?,'-?)b®?$‹?*3'?-ª_?..,?-Î?-(®?*ö_?(ux?+SE?,:„?,;[?+¿Ó?,Nö?,õd?-•¸?-è?-fy?+ïa?(2Ö?%+d?(¾?%å?)=?-_h?,”Â?*X²?)(¼?)Ë?+cÙ?*5p?+š?-/t?,Ná?(ÀŸ?)õ^?,g;?+‘f?+k¸?,°D?,Œ¶?- ?+Z£?(¹z?%E_?(ØÃ?+}ý?)ò?&ëw?'μ?%Ý?#1õ?"”‘?&²ˆ?(èc?*öï?,E?+€ó?)Ûû?%Ò?!tö?!•¼?%Lc?).+?+›ü?+n—?+“Õ?+O?*l£?*l?& ?#Ð"?'ZÀ?*AI?'äÜ?F?›˜?úí?è?¢?v??ÄÎ?Š¶?áë? -­?ºL?N‚?ÕD?#?\"??3?¸L?"x?f?±J?‚?`!? Š?W??(é?W7?”ÿ? %?'§?Öq?3?oˆ?¹š?íŸ? úê? -ß?õŠ?*¨?Ùp?I‰?Ðò? U? ñ_?ø¹?ðì?“Î?Ý ?/Þ? ï?z?ÝO?7O?›B??Tq?$?µ¼?´>?PE? ô/?\ ?¹:? ¦?Çb?Ç? ÏÜ? ¤G? -<™?Ô¡?RÏ?’&?ÒP?ÛÎ?¾ã? ¹ì? ÙÙ? ? 3ù? ŒÁ?Ci?Û -?Hz? H¿? áÛ? $é? 3? ðÐ?n?=?? ¿’?D?<%?(#?vÞ?AD?_.?ª"?é’?ï?Á²?þ? D>?2‘?»? ¬? Ú§?‰¸?|'?[(?££?û?l‡? wÜ?b³?F?=½? cn? -Á³?u¹?™¼?¹®? ¸'? ý}? W?Ô¹? g@? ÙÏ?oå? øg?¡³? -ž¤?„®?|? Tk? SÄ? D? Ü?¤? …ñ? ˜f? -´«?®2?h? ¾ ? \? óý? ¦?¨e? F®? ?ïø? ÃD? M? šI? ^Ó? ',? wÎ? á3? ð-? ™? PÃ? |? ™û? ó ? õ? #Ü? ¾? 7‡? !? ‹ï? äž? Üb? e? iH? -­™? -±Ý? -cJ? ‚? -ˆØ? =ß? ? +n? Ü? $Ø? $? ö? -óþ? ×? -ã‰? -nÛ? -/Þ? ¹? ´I?W? ù!? (Ô? ›µ? Yº?w?S? ž¿? 7? û? Ëš? -ŒJ? ±¡? -`@? nR? k -? û¶? -Í°? P6?àé?€ ?))? b˜? -Žâ? -‚Ö? . ? ‡1? É? -Ýc?N?H±? -H? ³Ö?Â>?”,? -š†? Oò?ôc?Q•? u`? Á€? -Z\? Í?µL? ½¬? õ? |?\?xã?ô6?¤ -?ê?r? êr?bí?¸?4[?è·?â ?j? lœ?§{?»V?ñÆ?ú¬?õ ?k?åq?yÌ?@r?2P?aƒ?F¦?!@?É–?&‰?dû?ìî??UÞ?3å?i?&[? [?U?e?¦I?¬š?ù?Ñj?€N?{?n?°M? ô?§V?YÐ?2?ïl?^E?Ü?55?›Ð?YÂ? ?ÂŒ?šé?ܺ?]?fÈ?¥?!?î?F]?qd?9w?ü}R>ú»Þ?\Õ?bý?d?‰í?ì¦?'É?ä?om?ðB?’L?çû?§î?у?ÿy?ùª?1À?+9>ÿ}?pÛ?kƒ?Iö?QÝ?Cˆ? -?>§?íZ?ÀÒ>ù¿?|®?rK?& ?X?…ö??u? -õ?99?(>ý ->üÒ?Î?|¸?/?¦?a,?Hï?«ì?Jm?ß„?G?|º>ýÔ>ò¦õ>õj>ü-8?ð±?•(>ÿ$>ý^Å?S ?_Á?14?ZÎ?6§?sR?ô!?ÀØ?|×>ÿ¦à>ÿ¤ª?ÎP>ÿ1Ï?ë\?&g?ò>ÿáÛ?u>ÿIÝ??Ð0?Ý«?©{>ýBƒ>÷—>û‹>ÿÎ$?Í>ÿºÕ?2Ž?$[?Æê?=Í?¦·?Wh>ÿýó?fl?©^?nâ?O§? Ž>ÿ&À>þã>ýW>ûÞA>ôÝ.>êŸû>ù?×?*>ÿ¯ˆ>þ­>ÿ8">öG¥>ëðk>÷ôÓ>ý.>û, ->ý >û>ýÝ>þôØ>þt>÷m!>ö—¢>üú>ûÄŽ>ýôY>þ3>þ9€>ý°æ>ü:”>ûB/>üÞž>ý)ë>üMë>ú#¹>ëûô>ôe£>ûo[>úS>û&ù>ù°Ø>ú¿>ú@®>øªø>ëgá>벑>òì>ç:o>ëg>òt>úFˆ>úq>ùà@>÷Œo>ð0>÷èT>úVÂ>ù`Â>õk}>øJÂ>ù¾Ú>ó€Þ>è¼>ꪻ>ó›]>÷Á>øðÃ>ù ó>öF>òöå>òG>êÀÄ>ï¼»>ïÐ>÷Ì>øµ×>÷ÌÏ>÷dW>óCŠ>óÏu>÷an>öAÅ>öÛN>õ·>î³N>é¤>磫>òè‚>öú+>õœ[>ó=f>ô^ß>ó©>õž>ö-P>îŒ×>åi\>òeË>ó€>ëhä>âÏ•>ð >䌤>æ¬d>ò A>ñq*>òÊœ>ó°">óFP>쾡>ò—>ô`l>ô±y>ôÆL>ôøÆ>ôzï>ï0A>êÏ›>ïé„>ÜÉ>ãØe>í}J>ð¥€>ða>é¹»>âç>è™k>ï¨>ì Ô>뜵>é»Ê>ð/¢>òö>ð$ç>î>ðƒ>ð.¢>ã2}>èä+>ï >ïú">ê†i>ÜâU>â è>å±?>åp>×µê>Ó3J>ãGE>挿>èJ>çF>á:½>ã.(>âïÆ>èõ>á)l>ÓE>Òò">à)S>á¢'>àU>à/,>ÑNÒ>ÙC>Þ”Þ>à°>ãÔ_>ã3€>ÞÛñ>Ù+×>ß÷ß>ܘä>Þ>àîÕ>àèÛ>Ú[ž>ÙÍ[>ÚŽ>ÙŸ>ÛHC>åžô>ßìÌ>ÙPÜ>ã}L>âdþ>ÙBB>Ýq†>âìå>Þ“L>Üv>åbÚ>ä7‚>Ú!>ÙŽ±>ã³1>äI/>àn>ÛKï>ÞÚu>â—p>å&n>Üj$>Úaß>äâ>ãX>Þ³Ž>תÿ>ã(ñ>âª>áÆC>ÝU”>ß„¸>ânR>ßÿ7>àí>à›r>à”G>ÔY>Úù>âA>ßÈô>Û@>Ñš¬>Û‰û>åÄ->âž >ãÔqS>Üî>ãy¢>â¾ ->á[N>Õ-#>Øzl>æZ>åL˜>á‘e>Üáª>Ú£Ã>Þè?>ãnÃ>àoò>Ù!;>Ñnß>Ô4ÿ>Þù>ãû¦>ÙÍ>×`M>Ú€ >ÝÚ[>ào>ã5ñ>ÛCˆ>Ùƒë>ãË>à©V>ß0>ß_d>ÙHR>Ú,˜>ãËå>át>àUà>Þ×J>Ù²»>Ö›ç>á–À>×E>Ñ5D>ת>Ú¦˜>Ó&ß>ßW(>ã+–>àÏN>áø9>Þnu>Ö=ÿ>Õ×¥>á -ˆ>à01>ÚšÉ>Ø+ˆ>Øê >ÓO>Ò9J>Û 7>ß:#>ÝN'>ÚË%>ÕÙÅ>Õ g>Õ¼ >ÞDì>Þ~>ÝOD>àW>×A>Ð\>Ðxd>Ú ã>Úâ“>Ýg>ÞcË>ÛêŠ>ØA>Ô÷L>Ó-L>Ú8)>ݹ>Ýh†>Þ:Ë>Ù?¿>ØBX>Ë~Ê>ÔH">Ú«–>ÒÆm>ÖVF>×w>ÒvŠ>Îà+>Ô6>ÖL>Õñ>ÔO>Ïå«>ÕÓç>Ø×½>ÕE˜>Ó„û>ÙZq>ؼo>Óû>ØO‰>×à ->Û¢H>Øp˜>Ѻö>η>Ö·¨>Ù¡&>ÔŸù>Ô¬ñ>Ú·>ÛIõ>ÓxÙ>ÖÔ=>Ùon>Úyü>Û‹>ÕÔ‡>Ô/>Ûfä>×AT>ÓmÐ>ÔDê>Óþ}>Ú4º>Ùz±>Ô~!>Ùá>Ú>Ò€i>Ñÿž>Ù¯>×¾>ÙIÉ>×$>ÑGù>Õ¢™>Ôµ@>Óõ1>ÑÚÝ>×ìY>×FÂ>×¢Ñ>Õ2>Ó+>Ùcj>Ù¹9>ÕX>Ò[>ѧ¼>Öl>Õâe>×=”>ÒÖë>×äG>ØLD>ÕU >Ò±¹>Ôf@>Öüš>ÔCI>Óúª>Ìg>Âǵ>Îù:>×/Ú>Ñè>Ñ`ä>Íçv>Ń&>ÄÆn>ÑE;>Ñh”>Ñ9E>ÕµÃ>ÕzE>Ϊž>Í!¨>ÓûÚ>Óë5>ǪU>Ê”>ÑãN>Ó‘A>Ñøv>ш²>Πj>Íã[>Ê›>Ò•²>Ó w>Í“>Ëc'>ÐØ>Óã>ÓÙ\>Ï~š>Ð ¯>Ò„ã>Å©Õ>Ês­>Îð>Ñ„>Ï‘$>Ò}§>Ó“Õ>Ъ§>Ð »>Ðf‹>Ò>µ>Ò3e>Ð6u>Íc>>Ñ—E>Ñ߉>Ò,>ÐR³>ÏI>ÏÏ>Ò>И>Éuâ>Éc_>¿ì³>Ë%q>Ñ -6>Ò.Ê>ÏÐ9>ÎEh>ÊJx>ÊSÝ>͵‡>ËÏÑ>Æ\k>‰°>Ï-”>Ð3>Ðyv>Îv[>Í’Ç>Ê›:>ͺÝ>Ïé²>Î4ñ>ÅÉã>ËCr>Ïk(>ÌA>Ì>Ìq±>»¸í>¢æ>ηó>Îð©>Æ1>Å`3>ÊÓ>Íñ¦>Ëb>ÍéÄ>Íáa>Ë;h>Éjê>Ç>Ìy¼>Î× >ÌwI>ÇŠ@>ÉÅ>ÉS,>½*+>¸ó>ÉG>Åx¹>ÂçJ>ÄŽÿ>Ëxª>ÌŸþ>Ê°>Êq">Ë:>ÌâS>ÌPÇ>Ìä¼>ËÍ>Ê¡5>ÈÞ’>Ê¢[>Ìkû>ËÆa>È»Œ>ÉêR>É¿J>ËìF>ÇlP<>•÷=,½p=.•=HÁ= oÄ=Â<úJ©=Ûä=3Ä=(—=;í‘=F‚³=Mz=V:R=]E©=Z =LËþ=DÙŸ=R; =rÛy=Š6 =“@=’ /=‹Ö=…8•=†8&=Ž›Ï=—ä=™E¶=Õý=€6‘=`Ú5=FÜã=3Ÿr=&ÙP= Z=v9=!£_=$fë=(ÈÂ=2=Aý=Tç=hkÜ=z'>=´=nºw=HòÐ=tµ=q=.å=Œ/=!÷X=1‘4=?;)=QÇ=j…=}Ý={™¯=gä=U´Ú=Rc=\ T=m7Ž=¿Ã=Œkt=‘–å=RS=ˆ =€»’=p­Ð=](á=H¦=7N×=+su=$D=>B=âB= '=(3É=Azw=V*ñ=\ã=]c=bѧ=lžu=s=pMœ=bƇ=P~=EÑ=GÂH=K|«=Cj=1f=!˜¸=ï³=Ð=).=Y£=$ûZ=;«­=Oz =R°%=@‡= Øv=zÖ<ñÂi<÷xb= ÈÓ=ú¬=)x‘=0ý=6 V=> I=Aá’=?ˆ=@ç=Rä–=w`s=Ž¹=™^W=“)=á›=f(&=a ñ=r5¿=ƒ¬Z=ˆ‚=†Žê=|`=} -©=ƒGÊ=’ =¨K =¼^s=Êw=ÒAo=Øð=ÛáÙ=Ün~=ÚÈ=×9=Óö€=ÌMð=¾8=®¥ã=§œ=¬òY=¹è¨=ÅI0=É0¢=Ä{=¹à=ªæU= o½=žcº=¢3é=¥Yà=§=ªH’=¬ì~=«X7=¦šM=¡Û†=žê¾=ŸkE=¤‹-=¬=±‚î=²îU=²™Â=±'s=«‚C= xç=•kY=“‘= Nr=¸}w=Ò‚Z=äÖ=é&\=ç»’=èÙ¢=ðF®=ù0=úw,=ò`þ=é~=襾=îЃ=öé=ûÊÒ=ÿ ¹=úË=ëî¦=ÙÖS=Ïï =ÎCÎ=Èm¼=¶ûv=£yû=œú=¥t=²¾=½`)=Å_û=˦ã=ÍÛƒ=ÈÅ«=»Ý¯=©Íá=˜N”=––=•=¥0Ò=¶rW=ÀìG=»g=¾$‹=µ¨–=©N5=š-=½t=—dR=­Ë=Äcµ=Ñ>=Òkˆ=˹~=Àض=µ˜Ú=²\f=»ƒ²=Èîé=Ð<Þ=Ðb=ÊQÌ=¾O÷=®{3=£„=¥61=²cž=Á5=Ç2×=Âê¡=¹d=®¤=§«Ç=§˜³=®©=¹0=Âv=Åôp=À®=¯Œ›=–Ä.=;Õ=r¸·=‹ƒ=ª¤=ÅÑ°=Ò0G=ÓF@=Ô‘à=Ü/=ãÓ"=ⲉ=ÓR=µWM=ŽëS=VxÑ=*Y=(Ýr=X[=’€\=´¿=Ä'¦=Àm=´S=¨™°=8¼=ŒfÕ=os£=P-¢=DH™=C-ñ=F'é=W™ =‚Q=£à$=ÇJN=áòé=í¿A=è±Å=Ò˜ =° Ü=G3=€æä=†ò±=’2È=–Jv=—×Î=¡Kò=³=Ã&k=Çü¥=ÄIð=Äj.=Ênz=ÇýÂ=³´è=–œ±=€Qò=tîç=†o=žE=¹Š{=Ó̺=ìOø>;Â>r> rƒ> …~>G;=ô«=âpK=×›=ÏJÑ=ÆsV=ÀÍ=Á_â=Ç@–=Î$Ü=ÐÖ=Ч)=ÑÕ=ÎÅ=»;=—Ä =dd0=8_=?Âa=sº=› =¼‘Á=ÞK=ÿÉ~> x”>Ü> óB>,°=íÉ=Ù‹«=ØÙþ=àï²=à|¡=Ú\a=átÎ=ýF¨>íÖ>œ>dQ>â=âà)=ÅA<=¿å-=ÏË=ß=àt¾=Òì=½Z!=¡kK=|Ja=7fi=žá= -V="´=6œÎ=JŠ¸=aRù=§=˜â˜=¾¢ù=ãþò=ýE3>9P>ae> ¸=ßÜV=Î!}=ჟ>§Ã>„Ý>å€> -§=ÚÍD=»Êñ=µ®Ð=¹'å=¸Z=¸ 8=ÃsM=Ô)d=×ö[=Ȇœ=·£X=¼¸<=ÙPV=ú>™é> „A> €È>Þ=æ•6=É~=«²•=û¨=n¬U=m=“?p=Â@=íJ> "> –>ÖÔ>%¥>[v=êáM=ç=é>(P>ÖÛ>)•^>.87>½æ>xù=ËÏ=£3_=–&[=š$ä=¨5E=¿ßÎ=ÕÈý=Ù3›=ÌH=ÃP=Óë£=üÖ¹>Î>Ùx>$\n>)ˆµ>2Ž >9ÀW>6œ™>)e>R>ãD>…˜>Íl>Áá>ï=ó==é@Þ=Úf=À¦Ú=©ô±=©“=ÇÏb=û O>F’>#4=> K¼>m=üŒ®=Û=3=¹À=«å =’S=z¼€=t -…=ŒäÅ=³JÒ=áµÀ>së> 9l> X®>}g>4=ý¨Ý>å">šj>öÿ>ág>“~>÷®>7>%ÊI>'=> Ť>¿>=€>Žæ>*'>ÙÝ>·w>[ > -ºË>¼ƒ> -k…> óá> -G×>ï=úve=ìK =âdU=äûñ=ñÛ½=ú‚k=ôg´=㪖=Õ!Õ=Ѭ=×<¡=àÅd=í–=÷Ï)=ðe=ÏÒU=¨–Ü=”w-=˜Ý¬=¢Eí=œÐ©=‹Î=€”L=ŠÝt=¦ r=ĸ'=ÙuC=àxž=ßô=ÜÚ=Ó" =½It=ŸŽ8=„g=^/c=B0=<àŽ=P/ÿ=fø.=i‡+=Y©û=Lþ=Q$f=b’"=z»=‰\=®¬ =×…6=ö3=úSR=ï ;=ñÙç>ãb>Í`>->5j´>9“>@Šû>HEÚ>Fv°>5ÐY>¹T> ´O>WY=ó¼ý=ï`¦=óë=ìI×=Ñ~]=·5=¸Ä=Ø8¥=þÁ‚> ³>1v>Ô‚>&Ï8>/1>%Ñ×> -{¯=Ó˜=­LÝ=¶¸7=嬤>†³>(µƒ>5B>;E•>Hhå>]ß÷>nÿ¦>r„É>jPÇ>WgÞ>6 <> éï=à¾ü=Ù«Æ=ó¹>¡>8ƒ>"þñ>1’œ>?­&>Op‚>_Öm>j’ >kb>bœ>VÀþ>Jì>= Í>,†>ÇŠ> V¯=û2 =ëñ„=üJ&>à›>,‡>D†ÿ>Xë(>f|>lÛ >sZA>}‚ð>…$>‹"Â>*6>’œ>Ö1>‹¬î>†©/>ë>t>s Ä>{Ñœ>€ù¢>}õ>vDn>f`Z>V ã>U»Æ>gUš>}¤Ô>„ë­>† ®>†ù>‡¯S>‚æD>oŠ•>WÄn>E×>7¾A>6px>E {>Y:±>g¿ò>k°´>`ö‚>I1>-vx>]>v>3V¯>Z¹ò>³…>Ž²Õ>Ž6ý>ƒ!x>p»é>iq>jþ²>rOÚ>jH>Ú[>™Kñ>žVV>œ/:>•>Š×S>s¨8>Ii§>'!`>º> U>€>á­>}¬>9U>e3<>†Äø>–9ï> Ä>¡TJ>™8ç>‹º·>wøw>P‘û> Ô==êQy=¸¯k=³þU=Ó<Ì>xn>)ÍI>J‚>[’¯>Tž>=c{>37§>=c­>Eÿó><ó˜>&~§> h~=Ó\f=ž ¨=‚Š=>x=•âZ=Á >¨Å>'‘>Fí>Pê.>C‡Ÿ>'5u> Q`=î«7=ÓZª=ÄV=½¼=±"=¢‹ß=¯Ä&=è]¯>™Z>=çÊ>WþT>owu>i">xùñ>UÓ«>$:ì>'Ä=÷1î>Y0>&E>0YÅ>)äµ>•H>è‡>#Z¾>#rN>f>*Ad>Kóu>mÛ>€Œ>„j>†É>ˆo¬>‡³Î>„ž¶>Ñ>€çX>€NÊ>€ O>…Gñ>Œ™}>Å7>É>Ã>’rL>â´>„ìL>`'ù>9>!q“>4L>ë>',Z>? p>H‘Æ>=Uù>*¬Ñ>Ÿ>)>$\¡>‚æ>Z0>.> ±><£³>TG>dÁ–>p7\>sdû>j,“>TÈ>>ße>9¬˜>E>S®>[ð>Y%0>K"Ä>5 ¹>çˆ> x™=÷kÑ=ó™=û|Ñ=ñô5=Ïp¡=­~è=©•6=ÁÀò=Ö /=κÎ=´6¡=žÍR=œ¸±=ªòø=¿› =ÕY=ç1é=ìú/=ÞǼ=Åmi=¶5=¿é=ß-‰=ý>Šé=é÷<=Ë}Ú=¶Óe=µM~=ÐÁ>>aÖ>T>!&>S•>ç`>™Š>íå> -A¢=û;»=îøD=þ´> 8y> ð&>ܦ=þÀ‰=õ§Ï=ëÑ=ßC=Ëð¹=´|N=«RQ=¿Á=ë°?> -Æó>h\>—«>{<>aÊ>#=÷ù`=ê‹=Øå¿=Ê,S=Æ==Õ·l=ýœÕ>Ú=>*L€>(ëN>i=>¶å=ùó³>Ú’>o`=ùtÒ> F>&= >EÑ->AbÐ>"ú>¡>¤Š>1øÑ>O©þ>pA>ˆY¹>”ð;>˜Îµ>’r$>†T>|ŠV>->ùS>{M>n“>o­ð>~qŒ>‚^>{ƒË>r¸{>gÚ”>WÐU>U&¹>j×ì>…#H>ð„>“—ù>•*>˜°>™ô×>™# >–¥>…>ˆ‘á>ƒþ>{Ç6>g9Å>JiA>4 ]>.A>5Ûí>C:ƒ>K´À>Fjº>5\>†1>èž=Õõí=¯'ó=Ž¼¥=e™Á=7j=ó¢= ý¢=J;ß=‰ ¾=¶Éz=èõ£> ‹ð>Sg>&¶)>(ê>$ >Á.>'Q>E²<>h(>w(>xO[>6(>z£>—V>•“>WÈ>“¹}>w>œï >’Ñ>‹›R>Œ¡c>|ž>‚ðµ>V÷½>(žÂ>Em> z]>î·=áóÂ=¯I(=€¼%=I{=FþÑ=z"=¨n=Úd7>P>#- >C7Œ>bÛ>}úo>ŒU>›>©‚,>³7\>³¢¶>­4'>¨n >©Ì&>± ™>»*T>ÃË©>Ë^š>ÏR²>É߃>Á¼’>Á°c>ÇÆÜ>ÍQæ>Θk>Ë0¾>ÅFŽ>¿g>½„l>ÆÒM>ج>æüÞ>ìŸé>ï½C>ïy¤>àág>ÅE >²Âý>¸z*>ÌjÒ>ÞÐ>ç+U>é’’>è”T>èâ·>ì—I>ñðú>÷¦>øül>ò?>ì0|>ð8§>ö.©>ôš>îö¤>ëÆ ->é)è>ä®>ä–>í“@>ûÞ?¥r?Y­>æ>Ã{>¬ýh>£y$>¡Ê„>«9e>Á³ì>ßs›>øµ‚?­Ÿ>ÿ#n>ô—)>î`,>îH:>åÝ@>ÇfØ>œ‘>‘Ä>‹º>¯ÌE>Ó§—>écô>ô÷h>øƒ>ò7 >æÌ<>Øk$>Ëa ->ÃÊy>¼´â>µS²>¸æØ>ɹú>××è>Ð÷p>³ù–>—–ù>–xk>¬©e>¾Õp>Æ€õ>Ò¥é>ây‚>áè>Êâ>··Ç>Á5N>×àW>ÜÜš>ÉÛÌ>¯™L>¤(Ÿ>±W¢>Îl>íHA?|@?Gf>óN>çÎe>ä|>ê&>ùgs?øÏ? Ç? à”?P¶?’^>ûM >û]C>ö¹>ãRQ>Ñ>Ís·>ÓÐU>ÖK>̇Ù>¾Là>¼Ë>ÈSÅ>Ô9[>ÞJÊ>ëû¨>÷[>øB„>ïæï>â~‡>Õ¤E>ÏeŠ>ÒÎÐ>Þ?Â>éÍ >>ïÖx>éÜ>Û™©>Íô|>Í$n>Ó9>Ô$!>ÑÔ†>Õãp>àÉÐ>æÒˆ>âs”>Ù£;>Ñ÷>ËyD>êÅ>¸6W>¬eÕ>©P¶>±¶/>ÃÐÞ>ÖË">ÞÍu>ßT:>à_:>à:Ä>×iK>¾p´>œÛí>‹•^>—‰¾>±È>Ã*ê>ÈU>ÃY%>¸Ÿ´>°(>®4>°>³ÕW>´Ð€>³ ‚>±#ƒ>¶ê>Å%D>ÔÆ2>ÚO>Úm>Þ‰\>ä"â>ßËL>Õ ç>ËÏI>ÃX‘>¿äs>Çó>Ó¬>Õ~;>Æœ€>°M>¥R>«º>µ$²>·Çù>´ó<>´`>¸yÚ>ºÁ}>¹Ðî>¼ž6>Çé­>Ù¦ô>è->äÓE>Òµ>É6>Ð_ª>Ø'†>פ$>س~>á<Ë>åNê>ÙîÝ>Äê>´(d>¯#>³±>¼¤¶>Àž¨>ºì_>·ï>Á>ß>Î…->ÚiD>çØ>óeƒ>ø…²>ô-U>ë™Û>è¹Ý>éÙD>âMì>ÍbÁ>¹M>ÀV>èm? -=æ?U¤?Õ?¤?À¿?FH>çr>¼Û>è²>d§º>„¢”>¼Pn>òd? ¥? @?ã>ýƒ‹>÷8Í>ñF>è®Â>éáÉ>òTÍ>úëº?L? -„?xµ?ˆÈ?±?#3¹?d!?J ?!/>ïá3>ÞDµ>ÜÔÉ>ì}>ô—$>é™ >㶙>÷©,? ÿ:? ½a>ý›¶>ßaÅ>Öqð>îº9? ±??$I¡?%“>? œ?½?FÌ>ðX¥>̘S>¯£Ù>®Er>¼hÖ>È=÷>ÝÿÐ?u?#Œ?°û?gR?þ?æš?d5? ¤?(w?; >ÿjø?,*>ö>Úòx>ÍUý>Û/$>õÍë?zÚ?ä2>üÄú>ø°+>éíÝ>Îeì>°³w>¤Øº>­R&>¶'ó>¸[ø>¸b8>²’¬>¥\>”&P>‡»ª>‹X˜>–m>µ·ô>ÏRÄ>éè5?ªY?X?3Ÿ›?D¢A?F'??Ï?7/¾?-ði?"†á?X>ånç>½?Ý>ÁWT>øss?x?2,ð?2r?.O)?0»ì?6[?üh?@?zŽ?$@–?)]Ž?/‹·?3¼2?4L?: Ž?B#@?9wÌ?ð? -W? ĺ?Tæ?"¬?*´Ì?0‰Š?,N?#:?$M?0J3?9#r?;NŒ?@Ò?Fê¶?@¨î?/m?$©?$öq?).?+?(³ë?…­?×å?ØÉ?ì›?$d·?0ÏÞ?/Üu?%Ø.?·>÷< ->º4f>¥ÐT>Í_Ä?Â?÷µ?Ã4?ºß? òË?£ñ?EM?³“?Û¦?Ù¹?*ì_?7¶®?6’}?*y? m?"Êî?%–’?6“>óxØ>暯>þë{?óí?Ü;?„V?20?>L?>ÿ±?1¶¶?#û?Â?@”?*Ë?8ï=??^•?9“Ê?+n|?"Ü?% 6?,>?.ÿH?0 Þ?3~`?1åõ?)7Ð?&Á ?-ñ?-Â=? ¹ç?*@?5?+8?>e®?Gdé?@À?.A? {? .+?-øø??ñE?I{?H¤c?Gþb?E¬÷?@Ìú??5P?<´"?2â*?%Dð?¬û?(|? ¨L?¼O?Ì?Üv?*·?`I?-w{?5bó?4VG?3¤©?2Íú?/Ñ?-®Ä?3/?µñ?3Q?5TL?@y?E=?:ÆÙ?+¯?(zØ?3Lå?Csé?NÅ=?Oàè?I~ž?Iû&?Xï¢?gÆŸ?j&Y?c\¿?[Ü~?YŒ˜?\“?`u ?^co?T²b?Iû1?DÐp?F‹û?HüÏ?FøŽ?Gð\?Q<‡?ZÁã?Zõ?OãÇ?G¯¢?A*)?5Ÿ~?'øW?D?s?"/Â?+wo?5H±?7‡?/í?+EK?73Ï?K¿U?RÆ?J: -??ÞG?>VQ?D¹ ?Gà?AoZ?>m?A˜ ?BÍ$?>¤ó?=RË?BHé?C3â?>es?:mÓ?;§5?EZÖ?Rðq?[_ã?\;9?Y}[?Wü ?S7¡?F×?9Qk?98?Hé?VóÉ?Z„¸?TE?HÚ`?El£?P—Ì?Y‡¼?Xz¼?Vöy?U,C?Lw²?>¨?4œƒ?7N ??‡+?C …?AW#??*K?CSˆ?OÙ5?[‹÷?]C™?TÃœ?J3o?CÜí??7Ú?:ép?:OÝ?=U~?Bpx?E+?CÍþ?D–?GÆ›?G(û?CǾ?E“?Q7Ó?bª¦?mŒi?kD?aVO?Y?µ?V8¨?Y®ç?`5t?d:?eÑ0?b™«?^]v?`Xµ?b>?`µ«?`·ó?`?^V¡?_Ãå?auA?`?a~Æ?eF‹?`ùf?W/£?R¹?Rœ*?P$“?JAÜ?DÍ÷?C (?Ia?QU”?PúÀ?I þ?> å?1ú?-›?3yŒ??Ö?LÉ ?VÌõ?Z9X?T?I_/?D±ù?K6?[#†?j‚ª?n[?däb?Vf ?LÇ?HõÝ??â÷?.`ÿ?$Î?.s‡?B (?RŒ?WÁ?Tª\?QU?TÎ\?[§¢?[—`?SŠQ?J|·?DŒ?D¹$?Kè´?Sk®?U‹?Rf!?M­ú?JŒ?K+?K·?Iù?IPR?M&?T?YÌ9?VŒ‡?Iù[??ºE?>à?@sÞ??è?@ý¬?F€ã?JÒÃ?I?DSô?AŸ?DÓÇ?MA;?QÓj?Mú?E÷Ô?HCÀ?Tý?`ÛO?hBÍ?mD?lý‡?gÉõ?cÅÎ?fKQ?ix8?aL?LÝ?;‘?7Éí?=ž?E·?NIÿ?S·ƒ?VJ@?Tq!?R‹”?X¥)?^s«?[þÙ?Xø¹?[™?]s—?\³•?^VV?dH?g?e¢ ?cþ-?`ôà?[…‡?VLã?R²?QÅV?SUÇ?Vz²?Zæ?^bô?[iÙ?S;e?LoË?F%ä??®Ä??¥Ã?I›?V¥y?`…~?`~E?\5j?_PÃ?hù`?n0?mfk?n›Ç?oÝ)?mB ?hR?`^ ?XÆ??W­?YGª?V¥Ú?Uù¾?W8?UÝ|?VÙ¬?\¶¶?fòh?rÓh?x ?råN?hœ9?^e?WöF?\6?h»ø?qNØ?n}S?f7u?`¦+?\DÇ?YÔ¯?]Á?c|²?eU(?d¨?d©À?g•^?ma#?rû?v¬ë?x¦l?vS³?n–½?boŒ?ZZâ?^ž?f^p?gEŸ?dd$?d%?bǨ?[šù?Ys=?ayî?hI[?h×Ø?gR?b…O?Z’Å?W'«?Y%Ç?Yì??\ôU?fU?l”?fÉñ?]”?\ªÖ?dœŠ?h=«?f`‚?]aº?O…?Lú?U¯?TI>?EË?2‚…?.¯i?<= ?HÝ2?PÞ ?W`/?X$Ã?Uê?Q/?Ckì?9b4?@ïl?Lïí?R·?X|³?` ?gïÊ?kÄ?c÷?YüÂ?Zÿ‹?XXT?L‰õ?EÂ?I€“?M¹¼?H›4??hº?GŒv?`0Ï?tÖE?~<,?~#9?y¿?q²p?i?g¨ ?g×·?eâ?hªX?r˜4?tËU?iùŸ?[$ù?Q¹?Rux?[¨?d¤0?nº?s)¦?j-?R½÷?8>Ø?-–o?9‹L?L‹¹?Sb\?SS??[JÂ?g2»?p¿R?x/k?yªa?u-?h°Ú?^9?a4 ?`ïÜ?Qµ ?C´ñ?I)b?]7?mW?uG?x€'?t\â?q—­?uû7?z&?{õá?}…Ê?{<ì?wð?v­?o +?Xø?H—t?Z~¬?t`?|ÉÁ?{Ìî?xš?l¨Ü?_„²?]„Ø?`óÓ?d€D?h«ü?o¼?wb ?{x¦?z -4?s„G?j½¤?adû?]i?Zaò?NÙ?Cý¸?FÀ?OO|?[8¤?fuž?iÆë?fÔœ?cÔÀ?eîZ?f®ý?dåÄ?fòù?hµj?f¶}?^nÜ?Vt?Tq¿?UÁ?Rm¼?IË)?BWÝ?IÐÊ?ZóÞ?a«¿?\c?O{õ?AMü?< -‹?Czþ?LïH?MW??L—è?OÉ?O -o?KºÄ?PÈ?YÑW?[áF?Vß?RM¢?[Zø?emC?l½Ç?v_?y/É?lvg?[÷?XPý?TÚ?C…?/¬ ?3™ý?Ow«?gãŽ?uÂb?xC?iá?V7?Pž?R§^?V‹5?`]I?ll'?qáä?qÄ?rª?u%ð?z $?~žL?yDR?fñ+?W<š?WóB?[Í?[¯È?aêÔ?d5P?^VM?`'—?eØ^?d||?cÙ?^E¶?IŠ5?;ìÍ?Cœ?M©›?Ré?Y¬†?_á?a:$?d`?hžÍ?jöt?o?uM˜?t"?kô?^B×?O!?F¼p?QØ?c'H?gp_?aºP?\à$?XÉY?QßÛ?NA¡?Nnú?RÃ?\ú?aÛN?eªc?iyI?nãÀ?s£^?q&[?h[?\4?NcÛ?BôF?B‰„?G˜ë?I ?Hgö?JÇ ?Rë|?[f>?_’F?cß;?e¥¶?]ï?RÕ?Lã?Qü{?RºÈ?KˆÄ?N\?PêÇ?KÃé?Hç?L‹ž?P#?Mij?K¨?K•¸?P²­?Z4L?c¾?goÎ?gVx?f­?`¤k?Ußã?HÑŠ?2×L?œå? öß?n-?1Tà?' p? C?e?Ã?Xå?]H?h!Æ?tü?y“?wÆ?y*0?zoº?{+a?~éô?x[?c¿ò?ZÊÈ?[qË?Wˆ?ZôU?dÀe?cÕ¼?_Ü®?m—“?€0M?‚^T?{W?hªÍ?Qä(??¢ê?4—;?40B?>þW?7Ä?%Ù;?5“.?T¡?_+–?]L¨?`H?raG?€M8?|'?mŸ~?b¤â?]”Z?c»?y(7?„@-?ƒï­?ƒÂ§?†…¿?†‚=?‚о?^q?v'?b”k?Rx?YÅ?gVr?kw·?rÓ#?€©k?…ë™?…Ñ ?ƒèF?…šÓ?ˆI ?‡Ú“?…s•?ƒ_‘?‚?’‰?|Þå?}OÊ?}!¾?|Ê9?y¤?oÌØ?h+F?e Ç?O—è?75$?EÐ?ešæ?qöG?u”?€]C?ƒÇ¢?‚•¥?2Ì?pÙ?azÑ?iv*?yŽ÷?}yØ?wÒË?tÍû?qƼ?mÀö?ui?…Ó–?¹ä?z€?u¢H?qÎ?ulþ?{óî?x3?nLx?fa?c·?fЗ?lC–?y´?ó;?„Hð?…‰?†œõ?‡Í -?‰0n?Šýó?‹>?‰(†?„¡:?ƒ‡~?†˜¨?„f1?…ý?…4p?ˆ°µ?ˆHˆ?†-n?…©%?†.>?†þ?„©&?…[q?ˆÉœ?‡ñI?‚d­?‚5º?†K?„¼À?zûV?v²?Œ*?‡ÓÍ?ˆp¬?„^Ù?}ã]?x°??ˆåµ?ŒI?ŒEj?‹8×?‰”¬?‡oN?…ýŠ?…­'?†ÚA?ˆ«š?‡”?;ñ?o[a?iS?l]´?j=Á?qB?€€D?„z?ƒp?¿r?„¤?‡Æ%?ˆl7?„ ?‚þ²?ˆCø?Œœñ?ŒuX?‡°?ƒM?ƒB?„«"?†g«?ˆêx?Š±‰?Ša ?‡º±?ƒÍq?„Ì?‹ ²?Ž«±?ŽkF?Œ²ë?‹Ù?Œ­)?Œ×€?Œhî?I?/J?‹ôJ?Š˜+?ˆnˆ?ˆšŽ?‰œ?‰$ ?‹Â’?ŽÞ -?sÑ?Ž Ä?‹XŠ?ˆb]?‡3m?ˆÃX?Šª?‡šâ?„s_?„ïY?ƒ·Ë?}û‘?}àl?„0m?‡²û?‡´¦?ˆŸ‘?ˆKã?†Uˆ?ˆm;?Œ@C?oÔ?‹øU?Š×”?ŒÄ?ŒÅ?‰ê‘?†x|?ƒ¶%?…Rì?†óN?†±ˆ?‡ÃH?„´?eên?<«¼?B‚˜?bÕ?l4×?Y¨ß?QÛQ?lE?€œ?…/Ž?‡[Ñ?‡­`?‡Wª?†•_?ˆ¨?‰•G?‰éŠ?Š¾t?ˆf´?ƒ©?€ÕU?ƒ&–?†¨?‰t?‰ZÂ?‡¼[?ˆÙà?‹7³?‹l@?ˆ‹]?…-’?…eE?ˆø8?ˆiè?…=ò?†Œ@?ˆß‘?‰uT?‡c?ƒËË?„‡^?‡¼Š?Š5u?‰jÜ?…•%?…Zþ?‡w?„¯Í?„j„?†ÞA?„ä?ƒá%?‡5?ŠœÒ?‹ßP?Šùü?ˆÄ?‡jN?‰€J?‹‹Ñ?ŒÇ?Œr?Œù ?‰Ýa?…É?‚ìû?„¢â?ˆ\°?‰yû?…šÆ?€lB?tV?…0·?‡F¿?ˆdø?†¦Ñ?†m”?‰áè?Š?…²w?‚M5?ƒìú?†ò×?†k=?….z?…´~?ƒ;[?}¨æ?€?b?†œ`?†BÏ? Õ?pø?øš?Îl?‚›?…!?²!?‚<.?„?…µ9?…þŠ?‡X??ˆä?|ÄI?zÑ?vWt?|¶?€X%?‚ð?†M?„°?€Òw?€5 ?}Ô•?vw?t!²?obe?ug?Âr?R2?„ó?†p³?…*1?…85?…?…p?†°o?‚Ü?whž?xL?~åÑ?‚gG?ƒ«?}“e?{.˜?‚Ý?„ã‘?…ðb?†iŒ?‡PË?…\ž?qµ?ñ?€R`?våw?sbÅ?pCd?sbÏ?{ø1?‚$C?†bÑ?‡oÂ?‡?ž?‰ó•?Šßõ?‰Ú?‰R²?‡™m?†JÜ?†ƒ2?ˆ$?‡ê?ˆph?ŠJ˜?Š×Ÿ?Š«%?†ì¹?(Ÿ?äy?‡ “?‰Ta?ƒ†ò?z<Ö?ƒƒå?‰Ì:?‰á–?†Ï¹?‚ŠÄ?ƒ {?„ƒ-?‚í­?„¤Ž?†œ?‡Q ?…¢Z?EÐ?~$Å?„¦i?Š1é?Š]ž?‹\m?Š¡R?ƒù>?~¨|?ƒÖ8?ˆËò?Š T?‡?ÓØ?„»r?‹?„ñ?„}s?‰wn?ŒDF?ˆŠÕ?ïÄ?€ªn?†Â°?‰£¥?ˆ¥Ã?…Õ ?„‡œ?‡.?ˆÑ?†ôÂ?‰,w?‰°E?‡Äü?‚„?Ö™?†ß6?‰~Ø?Š?ŠR•?ŠÛt?ŠcL?‰º}?Šh?Šy ?Š??ˆv?ƒeä?Sh?„1?‡“Ã?‡p°?„KÑ?ƒº?†L¢?†õ]?„é¸?ƒ ‡?‚ÿQ?:?}Š€?{3á?‚ÍÕ?‡6?‡Gw?ˆ<Ž?†Ò¶?„ú›?…‚?†Ú›?‡Á-?†6?† ?†y9?ƒö²?ûÝ?ƒnP?‚Ñú?Á?‚‹y?‚Øž?‚É?Ä0?‚Y?‚C?ƒo–?…Vå?‡˜Y?ˆïÜ?ˆÐû?‡ÂD?†è?„‚ ?4Û?.? ˆ?€˜î?„Z›?‡[n?‡ŠX?‡jì?ˆnï?‡Rÿ?‚­w?{„·?|f¶?‚ã?…üœ?†[?…÷{?ƒ­…?‚P?¬ÿ?ƒ/–?„¼l?…n®?…Ê?„Ãò?„âP?„·?„ºö?„=?…{8?„NS?„UØ?‡8?†ØB?„fP?…p ?ˆt?ˆ5ê?†ÝÃ?„/Ê?„‚ô?†çz?‡’?‡DŠ?‡.%?…Óh?ƒ™v?~î~?{Kx?€‚M?„X?†š?‡&?†¦?ƒØÍ?ƒP¤?®?{ÆW?€–?p´?xTa?}Pó?…ˆ?‡,C?‡»?†Z‹?…Æ%?ƒí¼?ƒ?ž?‚¦A?ƒÏY?…Æ!?ƒçà?l?€pO?ƒåO?ƒ‹h?…™?‡Ì?ˆ=¦?‡v?‡Tz?‡>Ó?†e©?…˜¤?…ÿ¥?‡#‡?‡bW?…Î?ƒ± ?…°N?„åü?‚! ?3d?€_Ê?¸ ?„U2?…¦Ù?…7 ?„!^?~Åv?z÷ ?€S>?0˜?€t?}¦?Yí?‚S@?‚Œñ?ƒsx?„FË?„q?y(?vˆï?|Ei?€z¦?Ç?z‡?{]I?||T?€B©?…ú?št?€ˆ=?~<ö?€–?Lè?‚R?v£?}‘?€ž7?€øŸ?yô?mÓ‡?f_?q‰ý?}¨ý?ɱ?ù’?ÏÍ?€Q°?€0q?‚?‚Œ+?†Á?£þ?~xt?vü™?{>O?~¾5?z«Õ?z—?|›À?Ì?~ Ú?Õ?zr?kÖI?p]?GÙ?M ?yÑè?pf?vFd?}½y?}©s?|Ѭ?|Ô ?}t°?kÛ?|-S?uoY?=â?†ce?ƒäm?€aÙ?‚²ˆ?…¸"?„™ó?}m?uUá?õ?ƒÑà?‚>x?{g“?{(®?~1?~´²?wòg?pÍ?w¤ ?€úÜ?‚Ù?‚Bª?pf?{?‚ú?„ Ò?[?p4¢?rÁ?zÿ´?{N?wæŒ?xØ—?z.?|p-?~l?€@˜?¿B?{ô"?}é±?%Ü?xM??vÉ{?s<?r,‘?x}¥?{v?zî¸?xw?ue’?rÞ"?uŸÕ?xÚã?x2;?usˆ?k"Ò?lÄ­?x~\?|…½?| ?yëp?vØ ?|~?|®~?{#?w&?lšú?lÀˆ?ut?{Æ?v?xSÅ?1¬?{¿7?zÚA?yi“?nT&?t À?€æk?€¦?€Ó?‚…/?€_Á?yZ'?|€M?xh9?lä\?v†œ?)b?unó?giþ?i”Ê?r$ã?p€»?q…?yâ?yö-?zÊ$?w‚$?xT?~.?t˜ƒ?fU?n^?{èS?y=;?rRñ?tÃè?|²(?|õa?u -?p ~?tJp?} –?z¼ê?vÃÜ?~ä?[”?€mþ?{4?x%F?y¥E?|ÒÁ?€e?xÐë?t‹ -?~Ê’?T„?v2ñ?rèV?sà?w0P?|›¹?v‰c?irõ?k±?uÜy?xÏ?{å?}µ’?z¢Q?wM?xÄP?{Ö¶?xòÇ?ue?tTU?o?m€e?tÝ?r?gB¸?b÷±?d?pCV?ziZ?x–?q8Ê?q Ÿ?s:¼?u‰"?s«œ?j&?k€,?k¤&?mñê?tÛµ?tÑ?p…?où§?sÅ?tñÊ?nƒH?h¼ -?p¥?qx‡?qo?pe€?s[L?z\?yÅ8?x#Ñ?{o­?vÔî?o–?u 5?xJg?tR ?q5¼?q¨ ?iŽ„?eC?ry‹?xA?lL‚?h3B?qže?w+?vµ?w‡ç?|­?{âÂ?z+Þ?{§@?„?|?sÂ?qé?kçu?k¬ë?iªÕ?mœ2?rÜ¥?u%Ê?z{)?xTE?qÒ?mè -?w¨[?}Ø´?y%©?uMh?lÊA?n¿î?s¸ß?h¨?hZÕ?pM?s¡7?n{?g2Ø?qÃC?}ª?~ ?vdù?r5?y‘Ú?}ð6?|,o?zà?qS?ul?z§Ë?}|8?zÁœ?vû+?x²æ?|nH?z¤?wK?zÜ?{ `?x¨h?u2d?ufg?zº#?v_m?u?xt?y L?yáÜ?v‘?vç'?|¦?y>?wd?|.í?|È–?{#?v@í?oüŽ?rF€?wáƒ?{?ywu?ya?x'Ñ?zŸ½?|úi?|`?wÙ°?xwo?y“(?yHc?yúê?uFå?z…?zÁ?rJ?j—?hº@?nÃB?yx_?|Üí?~ Ÿ?}üñ?|ó¥?~ê?}iÇ?}“y?|²Ú?zž4?zÕ:?~¿ƒ?Ég?}j¨?|–?| ?|ö?xþí?pöQ?o÷®?k.k?edÃ?i»Í?i?\ ó?lJ-?vb?w0 ?zÛ_?zñI?|«u?}<¥?zé&?x‹T?zm„?{§ ?}w†?|••?z„?zâµ?{ãæ?{x„?xV±?qae?q£?z>?|º‘?|¯Z?{Ù?v‹??nõ?nM?l¾¦?tÙT?z*?wüò?tá¦?n³#?mšŒ?oâ%?så?xŸó?y+²?wöª?z(¥?yüŒ?w_Ï?xžk?u @?s7?k¦g?d”?jŸâ?u2Ý?zCÍ?{Ìo?} ?zHå?yÓ ?|×B?{ÙÎ?zøo?{°f?{G8?yùa?y–[?zšŠ?{n?{O!?vLÖ?xªÂ?}W‚?| ?vÍ[?pÈD?y ±?|ë2?{³?w±?rÐ ?rPã?wÂ…?|oõ?|*Ç?wE?u„³?rÓt?x( ?}*Ô?|P>?}Ä?{Ûè?|p)?<4?~7?|Lý?~É`?yAÇ?q…‰?s•)?p¾'?x§{?}|?}_?|*?z±&?|¸‘?zú—?v/?wo?wP?w0?|Ä?j©M?o»M?t;?r“´?fw%?h\I?eÁ?d9o?h€>?`è¡?fùù?n…a?jàà?l/r?jÂV?f)‡?i8å?hx¯?m¼{?pe?f0é?lNÒ?l¸z?fð?a'$?gM¶?môG?nf©?rö?që?lê?k ?jÝ›?h¾?h÷?o&H?to?s ?pŒÐ?s¹‹?w½ƒ?xúÎ?p×-?n b?vÇü?ysA?rzÿ?jt?t­Ê?{¿6?t’¡?kË?m΂?ig«?g i?pR_?qs¡?tàÕ?m¾j?q§o?p#©?o{e?x‡ÿ?w*?wüŽ?v02?q’*?l[ø?d&@?`6?^ó±?[¶ª?ZwV?\‡T?\‹~?i.?fM?Wɇ?T÷¡?`Z?_õM?]±}?[,v?Xk(?[N?]p ?b’#?`/9?_„G?dâí?ca?VÍ?Xžà?d -i?hvÄ?cc´?^â'?Z}#?_¸•?cn?`¤?a›V?bd?_~‡?cУ?`á?_Ñy?bJQ?^ŽÊ?_TP?\ìé?^®Ã?g*Ò?f"l?`Œ_?^GN?^˜?cZÊ?aO?Z÷d?Yø;?^YÇ?cE­?b{L?^´Ì?`št?_;?[l ?^?Q?^Ð?Z¨Ü?Y{J?V@?]H|?]Ø€?YJ?S†¬?TÃÆ?QÜå?TtF?[jX?^;@?`Ý?[ËÛ?VĨ?[HS?WU7?N¸|?YHæ?S{ ?OwX?XÌÁ?Y¸?RnÕ?Z`ß?Y ?U¹Á?T -?Rî•?X. ?^U?[g6?[1?Yo ?[l ?[s?S«?SŒþ?_÷?Pœô?R²?b@}?cÖt?ZÝ#?Gñü ->ϼ€? Ø?9&?D -ƒ?NZ?W'n?Tûè?OÆj?W<?WXL?V+–?WžJ?X‡…?X`m?Wx?Va?T¨6?V§ç?Zý?Z;?O†'?Qäª?W¸ß?XJÝ?WÅ?T¿?V×=?V™,?S@?WàŽ?Y¾^?V+#?VEb?Vq~?Q??K}?R€ù?VƵ?Y ¨?XQy?QcA?VbA?[·!?Z~?ZY?W„?VØ¢?Z?\±«?]2ã?Y(Æ?Y¡k?\ys?TÙï?P¥?U×k?S'%?P“ô‹ê?Uµ?3Ÿš?Ibƒ?PÒ³?Qi¾?K^›?G’?Sß‚?Q-?Pª?Sše?XŠö?HJ?@\ç?TM·?Zž?\oŽ?Yâè?Ré±?U…\?VÇ‹?[Í©?Zýe?U›8?P©ƒ?Q~?[HÖ?Y_¾?[Eó?^êÂ?]£?Zø‚?UÓV?R„(?Zþm?[¤?SBZ?X“°?]LÓ?W¨?ZÅ?]F1?Zá?Zœñ?S£à?ZŒ?[+;?UŠ…?]ßD?^¼?WÃ%?V³t?Yªt?\K ?UƒX?O½|?[-?]”ì?\%°?_rÕ?^ °?` V?`Èr?W}"?TV?TÅ?WYà?Zu;?_`ï?\L?M`B?4€?>N0?WÖ|?^‘†?^‚²?^Ið?[Ä;?ZFô?T¯j?JN;?X ?]´º?_ca?]é2?[b?V »?Q­È?Xï?Z¦q?\Àù?Z7 ?\¬:?^¡?]/þ?]®?]‹h?[¶ß?UÔ÷?QRš?TíY?N¹þ?Vlú?_Ù?^›Â?Y3R?TâC?V³?Xi³?YÙ6?X¡#?WÌ?W-S?Vž@?W,?X5I?WŽŸ?UÕÐ?Pñ0?R)n?X7x?XG“?VÕ©?V³?Xx?Wx?QÊ|?Lc?Tq{?TŸ`?NÆÆ?@Ø;?E°?Sn?R×0?SsÏ?ODó?PQ?RƒÌ?N¹ ?J׌?MAÜ?L<†?Nª"?O‹É?G±Õ?K:Ê?S4Þ?T?TÖã?Tæ­?SÉÂ?TÌâ?Ud`?S-?NB?<ÊS??>~?BQK?=®º?FÎZ?L:Ö?It©?Gµ?HR?Iï?Jy±?EÔù?F‡?8ð’?4mM?4:¹?8Sœ?AU?C7ì?C6L?C‡3?H¿Ï?C°Â?;Ÿû?>Bœ?>Îk?C_©?=SÇ?<Þ~??2N?=“š?@wî?>Â.?4dù?9þc?AIå?=:¤?;]„?KÖÒ?Dì?9qö?F8??r3?=þ?EM?ByÀ?@‚ ?>y>?=[ß?C^š?;j3?<°ÿ?DÆ0?DÜ?:Â5?9Óÿ?>{?C®‡?<“ß?FRê?Gˆ?Aì?B`?J)ï?Fû?=2?B› -?I¬Q?GF’?;‘_?:”?A¯R?EFm?;Ðä??,å?GND?IºÂ?HZr?@¼P?EÍ›?E?EÀ.?Eè`??”i?E%ã?F9D?BÊ2?E»±?B Þ?J2ú?HÔ ?@ÍÐ?H-?D?Ã?HSä?H Ì?>÷?Cµü?@½?B?GO?>Ôõ?9|?;•©?=9c?F¦C?GŠÁ?A§"?AÕØ?<«R?DB?Gž„?@Î7?:B^?;ï??>O‡??.ì?=?<2?>$Š?>ŠÅ??„f??þ ?>M ?5‚‘?9„ÿ?7„œ?/;K?,zš?7³?9rá?: ?=ü˜?<6Þ?C?@¸@?5Iš?9ºÚ?;E¹?3M?9  ?<#m?7ÄW?2.ø?7»?:­î?6?4Ʋ?<~›??ñÈ?9Ί?5Sl??â¹?<ŽŠ?8qC?>Ñ?<í:?;q?;Pr?<ê?=ˆ4?5Pö?9–?E=??¨$?5R‰?<®Æ?D‘·?;C?;SÓ?=Èl?@ÍÆ?94æ?=U¡?Bý??7ÿ?9+?Bg?IZã??"ø?8n™?<¯i?E³?< ¥?4å-?Br(?F,??a?/ÒÇ?3áf?>Þ¯?;_?;–ã?=Dt?A¤ì??}>?d'?>s -?:Ù=?>K[?>¥f?=,Ð??°Ü?DØB?D‚¥?>³ˆ?6/×?7(Ÿ??¡·?; Œ?6Œ?*Å?=E±?=T?<B?65>?7Õ?C'¯?C=~?7Õ«?4E÷?3¤¢?=yQ?>ã½?9®Ô?2n¥?:S4?=†ô?:>¤?8Ù~?8?4?8n¡?8§–?7ñ?;só?=¦?:Û§?6OV?,uZ?9;§?=Ç4?>ÙÂ?=Ú7?8e›?2î?8Ì)?8•ï?;â?>!î?=Ý?8Ó?4q¯?3×vŸ??òb?>u°?7ïû?7¶Í?;m?:0«?=dº?4µŽ?4}z?<ó?:H€?6ª?0¤Ü?9£_?6m ?3<6?1È6?; ?@?mÚ?;Ã?9¼£?6X³?;X?;š¾?1…?7P}?>Œ?<·Í?<&Ã?;ä¢?<Õ -?:â?8??/]?9å?7-?=Ε??êÉ?9GF?:(¡?=Xç?8P:?3¾?8%+?>ÛÐ?½ˆ?9d?5J?87z?8Nn?2Þà?7ìo?<È„?=eJ?:žl?7ä?7›P?9I ?5SÙ?7Ëd?9¸?7Ñh?:“À?:®@?9Â&?8)?: -‡?:op?9£?7I&?6›4?9£–?9Š=?9â¬?7Ì´?8f?;‘—?6g›?67?7Ç?7¦F?5u?4¼?5Ƚ?5;€?6dr?6ué?3=?2©¢?3xÊ?0r–?3±?5yô?3ŠÎ?4¶ƒ?6q?5cÐ?4Ÿ?4Í&?3_?+Ù=?2ñë?6þ?3•-?1?2 j?2ý?2‘l?2S¯?4Z?2Ƽ?4/Z?3ö?3Í8?3#˜?1$?+w¡?*3 ?+ß?2E?3«?/ö?,+Ð?*$Ï?/(M?0¥˜?3Bo?1G•?0ÝS?2‡ž?3¤ ?2&p?07;?2bB?,ßi?,G#?2è‘?-°?+Õ«?2¡É?2ˆ»?2x?0ƒë?.b¤?-Œ.?$3)?, Ò?0ÉÏ?1r>?/CJ?0Ë;?2ØH?2˜?0B:?1‡?1d±?*?*¦=?.ì×?1âÓ?1`?.K”?/Òc?/ã¿?1-­?2 è?0\£?0 K?2Í?/”ê?+ž–?+Wœ?,ám?0Èû?1’?,6Ö?+<Ð?1ƒ?0¡Q?0Û?1"ä?1,"?-Än?.×™?1Ë?/ÌJ?+DÚ?+(ø?/¿(?.ÃU?.„‰?/ú?-p?-ÄW?/Ý?.º¼?/!?/ÉÈ?/Á?/¥¥?-™õ?(?*?-H?/ŸJ?.Ÿù?-Ì2?/×?.ÅÊ?-?.š}?.|r?.*Î?.µØ?/ò?.‡œ?-øß?-º?-Ô?-Ò¦?+§G?+¿A?(g?¸÷?(wJ?.Uí?..Ý?.jK?.°Š?./í?'µË?!TJ?'V·?*– -?*¦Û?,cÇ?)ðƒ?+¯ã?-õR?-’Í?)Ö?(Ú ?-˜?-ql?-[?-FÕ?-¯*?-mØ?+i=?)ú¥?,xt?,è×?,Ë?*‰?ƒî?$iG?*çù?)±g?*ÎÏ?)!4?)ºã?(È6?+Oã?'J?'ŸE?'w—?"V•?$™Q?&]D?*ØÝ?+¡°?+*S?*>Õ?(Sh?*GÈ?+m!?*ª?'ñm?*t?+*i?$ÉO?Ü?$E$?$ó/?'ÎÛ?)º?*«“?(Ì?&“Å?%;ì? —Q?$”?%\Œ?)|[?*˜E?*?* –?(??'ÌJ?)ć?&U·?'±‘?'°™?!²¸?¬ƒ? ?&§ý?)w?(e ?'â ?'š?%íj?'Ú¤?(¿Ô?"R4?á?%úü?%“å?Έ?ØÓ?$fË?þ{?_?&i?%Nñ?&~´?'b?'ƒÂ?#¬©?&“? -t? ?³ì?y?;Z? -»?,?Ú“?C3?”g?›?Yr?¡m?ð½?ÝE?/g?å?øŸ?ò³?Ao?yH?#Ð?U?Ñ6?æ ? ¹?’?Eï?¸O?? °G?"Ç?øÂ?^(?QŸ? ÃD?Î…??ÿí?ïÛ? QÄ?è÷?cj?ø?”@?+=?­Œ? _?x[?ªD?5×?ÿ?ë? G?¯?”Ä?ˆ&?_W?t_?+c?ó¾?µè?È¢?/+?€?~Ó?×?k?À½?¯€?\µ?a€?¨~?ƒ?y’?}ª?°€? x©?€Í?ˆ"? h?R?†“? §?7È?>™?Wö? -?á“?.ã?bj?EÊ?A?åã?É?Én?g?ÿô?ní?eÏ?aë?S‘?ƒ?5ï?AÅ?•¾?ÑS?  ƒ? S?–¯?C6?í ?X?ø+?Ä -?¼A?Àî?êJ?Ž?þò?u?ûn?‰? ç¼?%Œ?/ ? ¬?ÜÃ?)U?´Z? ‹=?nÆ?oò? “?3s?i?|ö?¸#?)!?oa?<Ê?çe?×™?ÛÙ? Š?Ò?øÚ?Sc? ïˆ?¶Ÿ?|@?G?‰ê?#u?¬ ?Õl?ß?0z?öñ?8i?,y?Õ&?ž’?g0?ÕŒ?~P?ð²?þ±?{†?oŠ? ?A ?ÅA?¨?‚&?Œ?7¶?…ó?h?…n?‘%?ÝÏ?4è?Áê?úÓ?¨Ù?‚¯?ì‘?_ ?Ç?/³?ö ?Ùè?+á?Á…?ª‘?ºç?3S?äm?\†?[?­³?© ? ?f˜? µÕ?<Ä?<–?|m?U?Z7? δ?–¼?YB?è¨?óˆ?¬ ?ìl?¾L?°'?¶Å?&?j? ?¢? Ž\?¨?ƒ¬?Òƒ?r^?â?Él?ø?´R?·Ó?ìQ?G"?âî?¯c?Ü´??ƒÒ?8P?æ¥?4?dª?m³?‡®?ÜD?@\? ’x?•Œ?`?¬?N?qU? ? ™+?›§?.ó?¤€?¾|?9??Ç??F?o??Wµ?D×?üM?$˜? -nM?ßÉ? ë?c€?«*?‚>øÀÒ?•?ä"?%M?É«? ž-?=µ?I±?O†?Åk?¬³?”¡?HÃ?uƒ?§?ÍU?ü[œ?(? -áã? …? Ñj?Zt?gn?ü?¦å?a?xc?¬ô?Pƒ?éã?É`? =?]L?dó?‡B? Úb?WQ? ê&?¬F? !U<U<6òõ=v='@!='¬µ=.Fx=3¢y=1ãè=+šK='F=$¤=wÇ=(Z= |<òí6<è´ª<è«ö<ïÒÎ<øÆà=(™=âæ= ¡½= v= Ý=õ©=š‹=W%= ä“=a= -æé=¥¹=K¤=~ -=)k<ó­F<Þ=µ<Ò<Þn<ü5s= ˆe=ÓŒ=$ÅÉ=/> =8Tç=@N}=G"ú=IK=B‡h=3„5=!·=W}=øŒ=†0=’= ;û=´ž=4e=Hï…=Sĵ=T/=M6*=B;c=7B=.`¾='ê¬="öF=ç«= Ð=¶s=å -<þx½<îì<Ü«†<È¥•<½=‚<ÉÁŽ<îoN= ·»=ŒZ=%„ø=*…f=*ëm=#ud=E®=ºÞ= 7Ä=<«9=Z—š=m¢À=qÎg=k­ =d†N=dd =l5ñ=sÏÏ=p-=]Ýp=Dh=-29=†ð=z™= ä‰=—”=¾Ø= -BØ=\{=ö¨=¯ =&¯=.÷2=<þÒ=LŒk=S1,=G™=,ï=<õ¹¨<í!«<ûv=Ü=B=œ}=-Ð=EÄÎ=\u=ch6=Zê=KÌØ=C«p=CB=Hª=Uëw=h#Ü=vD =yŽü=s®Z=i—p=]+j=N†==\ =. ="ÿ&=ðg=Ÿ=j­= zî=Ƥ=$d®=0—,=1âò=0ç=8 R=Eá+=P’¹=P6Õ=Bü=+æJ=ìç=³´=D¯=r=éå=I<ôw<ßÚÑ<ÒšQ<×/ñ<ò= _•=rç=x=·Õ<Õß<ª-U<’›=†Y=œtÄ=§¹/=¦0=œ™;=Št=„Zƒ=ƒ/=ŽxI=ž;ú=©"Å=¬‡+=§7‚=˜”t=‡š(=€4¨=‡#õ=•´â= ‡Ö=ŸÁ7=“dÝ=‚}ò=jè°=bz=m'¯=‚¥X=t¨=š­=™¼L=Íü=r?=ADâ=öd=çà=.þ«=eEÓ=Œ -f=šÕ=¡<ß=¨9á=´F“=À¢¢=Å©%=¾k<=©×U=Œo=Yïn=*e]=‡c=8~=s“ó=–‡¼=¤¬Á=¢Þ©=™k==s=†qÆ=qdà=R…Â=>¥=8‹j=3*Y=(îµ=*Œô=L-ž=†;ü=ª@f=Å>é=Ј=ËE=µ…=”’Å=j5=Jw[=L„™=U10=Qg©=N¯å=cÖ£=‡µÖ=›1Ë= g³=›º§=œ´H=¦™=ªsñ=5{=…Bî=^ÊÎ=GÞ=M§~=pZî=“cs=±U­=ÌM3=à’=ìnÙ=ñá5=ñÚy=è«=×µž=É$Ú=ÂN.=½û‡=·åþ=²ŽÈ=°ôj=³ -=µúÕ=¶gT=¶<:=¸x_=¶t%=¥˜Ý=…ôÈ=G©¬=N= OC=MÂ=†±‚=§²%=È“ˆ=çê9=þ8>aÍ>­Ó=ðGñ=ØŽ¶=Ç=ÄÍ.=Êl³=ËEa=Éþy=ÔHú=î;>Ä[> @n>à„=ôI=Î÷=°Òã=¬FÄ=¾ž=Ôç =Þ[u=ØÆÎ=É›M=±§ê=Žß=R‚¿=#‘=!ù=-­C=>Ò±=NΟ=c ”=Ùƒ=—ùü=¹üé=ÙÃ=íuÑ=úv†>©=ó =ÕCM=Á­T=ÎñÀ=ô/‘>í>À=íÊ=ÁŠY=¤ ÿ=œ–Ì=Ÿ;v=¡`ß=¦Ò[=µÞ=Åë@=Ì›i=ÄõÔ=»°=¿´€=ÔgX=êåë=øœ==ý¸œ=úp=ë„g=Ó,¢=¹, =¡"M=Š22=p*p=j/M=ˆü=©ùñ=ʹ=ß{Z=î)W=öìC=ðæè=Ùuª=Â4U=Áïn=Üј>’2>c.>"Ä> -þ=ãº=¯Õä=$å=€-’=€ï—=ŠA=›ññ=­¦Q=±{w=©[ò=¦ên=¹%›=Üí²=þdC>±ê> k:>E ->5J> ˆ>œ_>1>(Æ=ù¯´=ÿu>8=ò~Ý=Ù¹W=ÈŽ¹=ÁÛ-=·?È=¡¬v=ŒË,=Š³+=¤_=Ðòù=üû%> -‚>È=øÌ=ÕÕ»=·Þæ=¢Bª=Žv=o²³=Kk=F!$=hד=–´ -=¿;Õ=ß >=ï—Ù=ðÓb=é =Þ„e=Û=æÇÎ=ü*c>8„>LÚ>âh>Å> D>>>Dƒ>©Q>öâ>” >ŠL> åã>J·=ý ´=íÜ‹=眼=ëZ=ï+Þ=êã=àòp=Õr(=É‹Ë=ŠÓ=Ç“g=Õ”=ÜÞk=ÖsN=ÆYd=¸«=µü¼=¼{l=ÆYE=Ñ]b=ØY=Ï=±e9=Ží”=z ½=~´=†Æ=Q*=em<=S„¢=bóQ=†ý=Ÿ‡þ=°–n=¶+ =´Œ3=°|“=§² =•· ={â¿=Qlë=2¦= 0=!ÄÓ=76µ=M%ó=N«0==÷ -=/ç˜=2B=BBt=X­¨=w¤s=”©²=³­O=ÇΞ=ÄóŸ=¶Øx=µ¤”=Ì:î=ðþ¾>¸S>²7>ÚÐ>8G>"­b>Í¢>“Â=ýÂ\=àš=ËJ½=¼)0=·K«=»^=·K§=¢Ö{=ŒI/=‰å•= |=À×=Ö-¨=â¼=ô}ª>È–> Òï> -ÓG>•»>9>!~é>2ƒã>@RŠ>B~>9h÷>(ƒÎ> Oä=Ù·5=­Kö=¨)n=¼ËÒ=Ó¹²=æ–²=û{•> Å‘>«Ë>%€>3>;»ü>;Â!>3úi>)‚æ> 7ì>¿ç>üp=ó…u=Ø%©=½Žp=°k=¼Y«=Ý…ô>˜Û>úÞ>#á¼>-.÷>1þ>7{7>@vÆ>KLt>Uö¾>^ë>b [>]Ci>Túª>L7–>Aùj>9‹‰>9Ï>A[>Fj>CŸÆ>< ->/{z>"û¨>!¶‘>.÷>@Åm>K^p>N 8>PD;>R(¶>Kæ>9[ü>%ÿ>Nñ> N > -Èt>"™>'ò>1^Ö>3@–>)ÚÝ>G=þ¤å=Þ¶F=ÞŠ÷>~>"që>C}Ð>Xaõ>WS>D€i>2g!>,I ->/ ®>6.&>Bâ9>U°>eKg>jÃà>eSt>Zaš>IùJ>/ÜÒ>pY=ëƒ=Öü–=Ø=Ö4=Î~=Ø./>&>#rØ>C)7>Z¬!>h >h1¹>[ Ù>F\v>.30>ˆ=Ûñ!=ž9=y ;=uÅ=“J=¾ÝW=òL>)>Ì>ð|>¹.=ò§g=ÿ¤Ë>©¯=þ> =Þïp=¸@î=åh=\ñ=8ŽX=5*=MO/=L†=ª¾y=ÚX$>œ‘>:ÿ>ñ»=ß]ª=»›«=¡Rw=¡l=†¥=³=qgò=^ã1=sy= å°=ÖÇ]>S>JF>$@">.¹M>)z†>w=Þ¿}=­Rm=¥ÛÖ=À¢z=áÏ=òi÷=ë„·=Ú.=ÖÇh=ßûS=àu£=ÚìO=îC<>(»>+β>:؃>Bd5>HÚ >L‹²>IG¸>@¤ >9a:>7Zq>8DY>;fŠ>CÃÖ>N Ã>R#O>PRØ>P4>S/Ù>QM>?²—> »>ª@=Ý„¾=Í®}=Ñxv=é1>G$> }y>Gþ=ðþî=Ýú•=Û¾Ö=àŸá=Ù¯=Åã÷=Àöö=Û)>(@>W©>$@£>-s‰>0g†>* º>üÄ> \a>ìb> g>Œù>…§>êª>÷x>€=ä»M=Çd=³¿=° î=´EB=«^ê=‘…ˆ=r 2=l0µ=†ü=”Éð=ŽË’=w°W=[©ì=]Ú=v›º=Œý4=Ÿ;=®ˆŒ=³D4=§DÔ=’9>=…yy=Œ,è=£±=»==À#=¯Ê=™@à=‰e>=†³¥=˜û—=¼÷Ã=ÞmÌ=îg6=î,a=ç[Ø=â¥=Þ&~=Іe=»m­=°ÆÙ=»±á=Î3“=ÔØ^=Ïa™=Æ;z=»? =°Ã =¨ŸÍ=œi¨=‹¤÷=„s~=“s:=³Kè=ÐÒ=Ú–¡=Óì8=Èå›=Ån=Ça§=Ƈì=¾Áç=²*Ÿ=¥Ì=v= Îÿ=¶(Æ=Ö0>=ëý=è³À=Ðo4=¶ù/=±ç¦=¿ =ŵ=¿x=Ȫ]=òž> k/>Í„=âI#=ÃÈZ=Ï/þ=ò›> ÿƒ>"û>: Å>MÁ1>Tuq>Kâ>8Òd>,‰*>. ó>1tí>+Ç>"æ>$ ¼>0·>5>>/¾3>*5Ö>#J¨>“!>B > Ï>5•>H>Pô›>T!>Uón>VGì>SÍš>NW>C:o>5ú>,û>&‡¿>›Ÿ>•=óY=éÁÏ=òÈ>h>S*>Ž‰=îWÀ=Îz”=«“Æ=Œºº=fê=<—=íü=XÕ<ïç <öZû==9O=qƒÈ=™~…=¹fé=ϼc=ØÌë=Ú±Ö=Øý¦=Ö€›=å2>É>=†>'ò@>&mf>+’]><^/>J½Ò>I¼5>D8<>M-ê>\ÀD>[Ï0>J½>=Mn>;Ò7>/´>æU=äñ3=Æ¢=½í=±ì¼=˜¥Õ=o·Ñ=5±ò=[U=NJ=:ñ=qÔB=˜O=¹ L=Þ Ô>r>Ëç>, Í>>±Ž>T"Ò>iSA>x>y@ñ>p™£>kºÈ>q´·>€W>‰AR>>è>•.Ï>–N">Ÿ¹>Š„¿>‹Õè>‘Äp>–c>–ül>“å‘>në>‹i>‹¿>’× >¡(Ó>¬ák>²¿>´íõ>´ ‹>§­Ï>’aú>…-i>Š-_>˜Æ·>¥iµ>¬èƒ>¯Â >¯An>¯†Ä>³C×>¸ë>¾Öþ>Á&Ä>¼´z>¸FT>ºd!>½Z´>»Ì>¶•3>³KÜ>¯Å>©÷ >ªõò>´ Ã>Á^t>ÊÐ;>Ç^°>°æ¹>“ÙÃ>xŒ>t'k>rö¼>‚Ùä>—;>¯™ƒ>Â[>È“Œ>ÃîÊ>»©š>¶ùJ>¶3_>®‰¼>–?9>jS >BpÇ>SµÝ>†ü¢>¢Öá>³–*>½!n>ÁP >¾òÜ>¶ùõ>«‚ ->¡GÌ>›¹Å>–a}>¦À>“)Á>Ÿ•>©ö,>£ŸR>‹-«>gƒ•>gYß>‡Bn>—m>œÈÁ>¥A{>±j>±b‡>Ÿ8>ŽÙC>•Ð>§ëg>«W)>šOÊ>ƒMž>rk>„3 >œÐp>¶é@>Çà!>ÈyW>¾§r>·$>´øV>¸H>ÃÖ'>Óú­>Þ -O>Ý=+>ÖÊ`>Ïå>ËŽ>Ë£¢>Ƶå>µýi>¥ÛL>¢ln>§ß>§[·>hª>í|>D?>›Rà>¦EÙ>¯<ó>º¿¿>ÃÝù>Ä>Ø>½¨>±pÐ>¥¿Þ>ŸŒÐ>¡‘>ª}|>³éÊ>¸¸›>¸ëô>³¹>§Ü>”)>ž¥B>¤×ä>¦ @>¤´À>¨ð;>²çÑ>¸¾w>µ0>¬ª‡>¤’’>ž ¡>—}|>Žà‚>†¬>ƒË%>ŠÈ >™kû>¨0½>®~M>¯»…>°Õ»>¯O•>¥À]>‰F>hET>O•>f£h>Š\8>›)> dÞ>œ+¯>’»í>‹˜>Š§>‹ž0>Ž;Ø>%£>Þ>«>•³å>¢­Ï>­œ>°/v>¯”ç>³sA>·¸>²«Ô>¨X¹> ýG>œ>™Ö&>ž––>¦q>§Ø—>›†˜>ˆ.0>~×D>…Tã>Ž¢Ÿ>’d†>â~>‘/Q>–§>™1’>—þ‰>˜ÜÀ>¡’Œ>°|Ø>¼Fq>¹e>©Ù{>¢7>§ˆ>¬E8>ª>ªwË>²îÓ>¸Z°>°Q>ŸWE>‘8Û>Œ\>ó›>“_;>•—‹>‘E¦>÷•>—·à> Í³>¨Ì>´(s>ÀŸŸ>ȶ>Æ"1>¾Ò>»—Ñ>»Ê>µ'>¤7ã>”Ž>›Œ÷>½×=>â~‘>õn­>ú¶§>ù„ì>í”>Òm>±ô>Œ6{>LQ0> Ñö>?‚ >e7>»óç>Ú?H>ãÁÁ>Ù×>ÊÐa>Å‹K>Á–>¼±g>¾²Í>Å¡>ÌVÉ>ÔÒr>ßÞÉ>é¬>õ·G?@í?ç>?ü>씊>Ù Í>ÇÜÁ>¸Ò>³ín>¾Hý>Ã~h>¹À,>µFî>Æä§>Þù2>âEð>Ï>¹kì>³ýj>Ç•<>é#²?Þ«?žì? -Í?¯ö>øŒv>áì>ÇJæ>¦„Ö>ŒjÝ>‹7>˜"|>£¦Ä>·ÐE>Ø©ç>ö>?8>ò4>Ýf->Ø7Ÿ>ÞÆP>äN¦>á7>دa>Ö†>×”R>Êìƒ>±úx>¥T>>±6>Éwö>×Y´>ÕÜú>Óß>ÒÈ®>È >±`í>—‹Ñ>ŒÕÔ>”JË>œÈØ>  p> œ¿>š?V>Â>{*á>gr±>r‘s>Œë6>¥¸>»x±>Πn>â‡??™ù?¨h?*­{?,'?%™b?æß?Ã:? ¹0>û™o>ÎBø>¨ô>§bY>ÖI? þÚ?Œt?»?ä0?Ú^?@î?%Š?+8Þ?%x‹?ý>ôˆì>Þj4>Ø'ì>潶?`4?´Û?s?ßZ?&?õð?#)v?*4?!ºH?ËÖ>ð±q>ùÙ? ´æ?~?D„?!£e?ÚM?ùŸ??¶?#3œ?'„À?-¶?3X?,Ѧ?FG?ˆÆ?þ?àÜ?¬i?¶u? g%>ý5œ>ñ°·?³Q?7¤?!l±? ¤z?JÈ?<7>Ýö­>¤^w>‘Å>µOz>êáp?t?³÷?b/>ÿ -ž?,™? )*? ŽS? -ö?jx?Œ?'°?%_Ç?#¸?2?$?þ?µà>×íO>ÉÄ>Þ<±>î^>ú7? ÿ?ò¢?+„ã?,UY?™¡? -§€?·Z? ‘O?ñ ?).—?-º?&ôÏ?”§?9œ?ê ? J?!ÑC?!?!\×?Ðw?Ày?Å? ‡G? 6?Ü?´Ð? Ë?’?1û`?:ó9?3Ô(?"E?ÍV?°1?-w?0˜-?9èh?:a{?9Ä”?5Ãr?0a¸?0‚?/aˆ?&Q9?§?‰°?è?KÆ?’? Ss?&¬??gó? —”?'Ô}?&P‰?$úú?#9p?}|?C¾?%1—?.½±?9¬2?A Ú?D\Ë?J¨Ã?RÈ?PÅ ?@®Ü?-{­?#ÐH?'q5?6/Š?Gk[?RTH?Rhå?Fš¬?5”?)…«?,v-?7ýØ?ô|?@Ñ?JFR?T·Ë?Sœ?F†?=Eª?7j?-1b? &?OÝ?‰ï?x?$,?.Sñ?0Ó?'ß?#1}?0Ö?EK?K˜ ?AÙÑ?6@µ?4‡!?;Åb?>è~?9•«?7Zº?< M?>„M?:îq?9f?<ò¾?;@Ë?2æ•?,9Ú?.Sp?;¡´?Ló?U-ê?U¯?Q!~?O'í?JÏ?=&Ï?2 €?4[?C7›?Rca?Uçv?N™s?Aä”?=» ?HÖA?Qi+?O›ý?M¡ ?K®#?C¢?5 Ú?-¸?2 ?:Œá?=i"?;ëk?;›?@:t?LÎË?Wœÿ?X>D?NØp?C{×?<02?6ú?3 ¤?4FH?7™n?<±Ê??Œ’?=oô?=Êþ?@ˆ´??£9?<Ú?<‹ë?HxA?[ö¥?iù?gkc?]’?Tþ?Pƒž?T%)?Z¤—?^—h?`–ò?]g¶?X?Zãr?^é?]Þ?\¬??ZýI?XwÇ?Y3?Yu?Wt·?Z{å?_ûŠ?[^—?Pp?Jâ~?JÝ!?HÑÈ?Cvç?=ü9?;øã?C?M,¤?MÔz?E´{?8ü·?+½?&!?-Öµ?;5?Gvµ?PIg?RÚN?KÛ8?@'5?;‰£?C¹J?U¶x?f*F?j ?_úý?P`}?EâL?AéÇ?9ƒ_?(¨Û?a—?&2?8%¸?Gî|?NÏÁ?L®Ï?I¨?L²¥?U;)?VËó?O ?DÓh?=5Þ?<.?D,?Lˈ?Oˆ?K¸Ú?E¼?BÚb?DØx?E:?Cy%?DÔ\?JG?R6C?X¶?U5â?G4C?;/s?9èM?<‘ü?<Ø¥?=~V?Aí?E=²?BŠ›?=t?9Ü?c—?ZÝá?Y™ª?dr¥?l%?kk?iz]?d¤S?]¡?[?^9u?]ê?]wí?g+z?n‘?izw?_w\?_RÍ?gUJ?kÊ?kÎ?bN%?TÃ?SMß?\¾t?\9K?KaÕ?5ôô?0Ì4??óˆ?Lúo?Sªù?Z 1?[Ç?YØ;?UŸ ?H&«?=*?D¡0?PÐ?TŠN?Z¾²?e?nŠô?pBk?c0?W:´?Xûd?Xj?MS+?GÁ?K§˜?Oð¢?J ?@ÍÉ?I– -?bR•?w—m?]ü?‚e-?B?y¡e?n28?jÜ¿?iõ5?fÃR?kZ¼?wÆ?zQ‰?nÄ?^î#?T½ô?U0Â?]‡ý?fÖ™?pXê?vÅ?oû•?Xÿõ?=Ùî?1c“??z¦2?yE—?vz ?j[Ø?[æ™?X~ë?\zÒ?aŒS?fý?m<¬?uó?z+¾?yAz?s?iã ?_¤µ?Zýß?Vxš?I°å??Íþ?BÝ?K5J?U\‰?_ôò?btØ?^„¯?]?ah?bHÇ?`%?bÖ±?d?`ŸÑ?WyŠ?NéI?NØö?Qá½?PØ?GB??†ë?FK]?VÆ?\Ã?V³±?I ^?;µ?5mp?=VÕ?H%ð?IòR?Høh?J©õ?I+S?0¦Y?8Ø?BH/?HA?OĨ?U»‚?WŸ°?[­?_ëË?aÁ¡?d+‘?hÆÃ?g¨¦?^ý¿?S¯€?Gª??p??I9„?Xêo?\Ž?Uܬ?Q"ì?NzG?HÙú?DÆô?CKæ?E‘u?M‘¢?S‹•?Xü%?^ÏË?d¿º?i<9?fÂ%?]µÊ?Q(ó?A²…?5‘ ?7±„??-÷?@6n?>n??q?F6«?NôÙ?T7Ç?Y¼)?\wÐ?Só?HÃ8?CÔ¤?IV ?It¶?@KÝ?BA¹?F,B?B::?@ ?Dæ?F;&?Atà?=BG?>3y?E ð?P‰»?[^…?`žÇ?_ÿS?`Œ?[åù?R*?F3â?/Œm?þ9?9E?¯ß?(k×?d¹?W¶? £×?1¾–?IaY?Q&‹?T¾H?Q€?DçÂ?*QÏ? -Jê? -‹?10v?S,¤?]Ý~?ax?`Uÿ?Kƒ–?:o?@=s?GÜ?Mç3?X+¹?`XY?cƒ?aý?^ê?Ug7?BAŸ?2[©?.X ?* |?.HÝ??ºÞ?T¤Ð?c®ß?e;ÿ?[Üú?Wì³?_Ý?ilJ?m %?lâ?b‰q?Oæ?:¯>?-ÆÝ?5õŸ?Q›·?eg?jwQ?b{£?UÇa?U÷ð?b»X?où–?ré“?p£Ü?r/›?t„¼?uœÓ?yE”?pÝü?Ytð?Oņ?Q¤3?L‹õ?O1|?Yÿ%?Zײ?Vʱ?d?xú?}–?tN)?bǵ?L³?9U,?.Ý?/Ú0?<Ù©?5AÀ? bm?/ N?NÙý?ZP?X=?Yùþ?k?Ç?zr4?wdx?iù?^Þ¶?Y9x?_ý,?vGË?‚¡p?´5?€ßn?ƒ‹1?ƒîQ?€i?y†f?qˆx?]œF?KF›?Pàq?_ƒÇ?cÈ?kò?|Èw?„”Ü?„`3?‚!™?„'Ö?‡û÷?`¿?nßµ?s?}?‚ è?€ÜZ?}?o-O?`B®?gƒ ?vþ -?{Ö?vN¾?tg?p~?iªa?pNÔ?}¶§?‚€M?†¾?‰îƒ?‹?Šâ¶?Šém?ˆ|Ê?ƒ±?€€æ?ÕF?{·à?{GÔ?{p£?q›?\|Ç?TÉ?inÌ?Ü“?†ˆÔ?„TÞ?‚ŸÉ?„o-?ƒÍ?(`?4X?r†?9\?€ËŒ?|I?sîî?kññ?jnJ?lìo?l½ˆ?hQR?\m|?VU8?fPl?rr0?uŸ?vЪ?iñ"?Rn0?Js›?X.?až?_¼^?jø@?|ˆL?O ?tü?„¥?†5b?ƒŸk?}4ã?yÈ?}Û?z\2?xÖ??‚=€?„ÁT?u¹?b$à?j‚Ð?núÆ?e_?^¦?cs?t\?„uÙ?Šp›?‹F¥?ŠF?‡â?ôÜ?g2ë?a¤?y?†Õ ?ˆµÚ?…•ï?~c8?l§7?iÃf?~³?ˆ;w?ˆš?„Wž?€ð­?¨?…\ö?‡A?†ôÆ?…P??~Ž¾?|9?v½?qgÕ?fA?i£ˆ?{J?z$+?m;?p7?´ã?…ˆû?‚ÆÐ?zŽø?z«n?}·„?€’?€;½?~?l?€§w?€¿Š?…Ò­?…º?€8Ô?|0Ü?{ëJ?v y?rW€?{ã¬?€ãô?{Öä?oo?gŸX?j\??qó -?{?ƒ¼—?‡0ã?…øç?„ͪ?„ü·?„{?šû?xýÑ?qK?w}z?€Ä?)`?‹?{€:?zìT?}Aj?€†&?…(ö?ˆbæ?†NŸ?‚ÿÎ?‚HY?å@?„w8?‰3?‹í?Šº¶?‡—\?„b?„Â?…=?„žæ?„ø?…pã?ƒ¶L?Y?€aÛ?~ÝÚ?|[%?}Ü€?,œ?ª(?‚s3?++?„‰s?†?…rw?…Q*?…ÇŠ?†¨š?…‚?„1ü? {?vö?h.M?câ?iÔ ?q‡´?t½?vÿ?ñÕ?†šo?…çý?€…u?y’º?r¼¹?r„F?4“?ˆ]ä?bS?¬æ?Œr ?ŒŠI?Žz?ŒGn?ÿž?r'»?z ?çL?·\?ƒq÷?…¼?€rx?q| ?tZU?€=«?† [?‹±§?jÊ?‹ä?‰0?…Å*?‚_?€qó?ëÿ?©?~Ú4?€`Ö?‚²?ƒ9ì?„â?ƒþö?ƒSŒ?„ù?ˆ: ?ˆæ?„\Š?‚¡•?zŒ|?jI`?qGÓ?{â®?{?€óW?†??…‚ ?fŠ?€‘‰?‚_Î?…ºˆ?‹e?Ž’?ëb?ç–?‹ÿj?‰8?‡MÚ?ƒ±]?îé?ƒéf?ƒIü?€4S?€Ž)?„¿ý?ˆÞL?‹‚?‹hå?‰Ø?ˆxò?„U?’f?z›†?uòæ?y Ö?€:Æ?}ܘ?rØÞ?i.?føz?k J?pºƒ?~Ëm?„ßp?‡Y§?ˆŽ:?‰é©?‹—Ù?Œ¢?Ê6?½?Œç?‡Qó?…ÿY?‰Œ=?‡s[?„Çw?ˆÌ?ŒBè?‹Ä›?‰ñá?‰2ç?ˆéK?ˆ;„?†ÁŠ?‡æ‚?Œ:†?‹ìC?†Mþ?†5á?ŠV*?‡­Þ?€4"?|ù?…¶]?Œt£?ŒÇý?‡×$?Ó?£?…ÍÃ?Ý¢?ˆ^?E=?Ž±U?Z?‹i?‰ž?‰"H?ŠM?‹Ê+?Š«a?ƒÎ{?sgp?m8U?pÀ?mð…?u¿ ?‚ñ?†õÌ?…P=?„' ?‡÷š?‹º0?‹ÃÑ?†º‰?… U?‹k?sx?Þ?Š‰”?…Ñ'?†q˜?ˆ°K?Š–½?Œú£?ŽcŒ?Ìå?Šî?‡)á?ˆvø?Žo ?’ a?’ l?do?sc?%«?zy?h?‘"u?ðÿ?a0Ã?j˜?Ua?P#Ò?nÞ?£?‡$¿?‰so?‰™J?‰e?‰Á?ŠÀ‚?Œ;?Œ°’?zä?Š4?„e[?‚]Û?…#¶?‰+è?‹·+?‹®1?Šl¾?‹ó«?³à?ôi?‹ ’?ˆK£?ˆ®œ?Œ*P?Š©ç?†í?‡æB?ŠË?‹ŸÌ?ˆû¯?…pì?†­?Š=f?<Å?ŒÚV?ˆý?ˆy-?Š( ?‡qŸ?‡|Þ?‰K3?†¨ä?…ý?‰í©?Žo¼?ÿF?Žê'?Œ(+?ŠÙ?*\?ï?‘X?‘Ö•?‘ ñ?×Ì?‰.?†é?ˆ9K?‹Ñõ?ŒÛ.?ˆŸ?ƒb!?…CX?‰À-?Œ §?Œêa?Šñ­?Šþú?Žá? Ö?Šþ0?ˆ2û?‰Ç®?ŒG¹?‹"?Š?Šï?‡ëœ?ƒ;f?…¦–?‹·Õ?ŠW?…àŽ?†«‚?†…³?…óU?†4B?„m?…_a?ˆ!"?‰Þâ?‹ Ù?Œ‘?Ë]?*?Ž¾ð?¹ì?Q?¬×?‘˜Q?ŠÈx?‹OÄ?1G?…Ü?Œº?ˆì?ˆ»¾?ŒËq?%Õ?e©?Ž%{?ŒÕŸ?Šº?†[z?„|Ç?‡;—?Š-?‹jˆ?ŽÛ?Åå?‹Ô?Šµ²?…HB?‚i‰?…€ê?….Ù?€Ó?„'h?Œ‰t?|‡?7P?Ž~6?üÃ?‹{e?‰ÛL?ˆÐ›?ŠÊ ?åæ?ŒPC?ˆ¢M?‰¡?Œ0€?ŠFÂ?Œî?œ]?‘Š^?V‹?©Ú?Žp#?Œà#?ŒÜ?Œ¹?3Ì?L~?ÆD?‹á”?±t?Œ6×?ˆ·?‡íp?‡(¼?ˆä‡?‹‹ ?ŒÈÇ?Œåv?ŒÏb?‡™y?ƒƒ?„òâ?…¾?…¼?„Å-?†F1?ˆËß?‡Ã5?ˆØí?‰¾µ?…›=?~|O?|–?v?„J?ƒ"\?΢?~»Ê?É…?ƒkï?…g‡?…Åž?„ù¤?ƒÀœ?†Rz?†¯›?‡ž#?†å›?ƒZ·?†et?†vö?ŠÒ?u×,?n0×?zÓM?„?‡"¾?‡·?‡ªV?†f—?…û’?ˆ%–?‡9¯?†Wó?‡om?„)?õƒ?‚—º?„Rì?‚I?‚—™?ƒä‚?„ç}?„}u?…*?¼£?tb‡?{'ª?„ô&?†°?A'?xK?}u?ãv?‚Š„?ƒ(è?ƒ[1?ƒáv?„­C?H%?{²Ô?…;h?‹ ?ˆÊ?„Í0?†ÍÊ?Š_?ˆû|?ÌU?|œ`?„”?ˆv?†Âs?‚]I?‚.J?ƒlè?‚ŸG?{y±?uh³?~O¼?…?†Rg?†%E?…á?…i¼?‡ƒÅ?ˆŽ¨?ƒ&Û?v(?x¬Q?€â)?€ÙJ?}áÝ?}í£?K¦? Ã?‚QJ?ƒ™ ?ƒ ?€…_?ˆ‰?‚e€?|ûa?{00?w?uÉ„?} ¾?àÒ?}ò&?zV×?w˜?u‘É?yD´?|Gø?{Ÿ>?xaÛ?kù¹?oF¨?}¤ø?€¬^?"e?€â ?{Ø?’?€Ê‰?€Â?~ø3?t$4?nÑ?wל?.Ÿ?{ñ!?}´Ð?ƒk?€“ò?²^?'s?p:v?v‰á?… ø?„ð ?„j1?‡N?ƒ·9?~—á?‚¹?}†¡?oe®?}~?Æ.?‚%Ç?õ?‚?‚f?…´.?~x?l‚±?x\/?…Ö?‚w‹?xÌ?|H?ƒl4?„.?}Ì?vRÇ?{˜¼?ƒßÄ?‚’Ñ?ܧ?…èè?‰ ?‡….?‚;?~¡–?Kƒ?„!È?‡¢ ?‚¯L?~\®?†0?†˜p? ?~Þg?~~P?i?„°â?€Zñ?pÑ,?r*›?|ÖÅ?J‰?„ú?…«œ?ƒ s?€? ]?ƒùÉ?²G?}êv?| ?s3ç?qãZ?|+B?wÉn?h˜¡?dÃb?h %?xFô?‚£¸?€Ñf?wØ^?v£ -?yw?9¿?^?r~Ä?tà?tZP?v=H?€ñ¬?á?|w??{ü”?›F?€ V?yß ?w,§?}b"?z¡¿?{X9?{ã>??é?„úž?…é?ƒ=?…\È?‚é-?|t?€ýå?‚“i?€3?}¾ô?} G?qÔ?oa?Fq?„ëó?{c_?†<ù?„âÍ?‚’?‚±é?†›]?‡W‰?„O¨?ƒj;?„DŸ?„ïÛ?ƒiÉ?}~5?{hÝ?vJ,?oÇå?tÃh?t\{?i…[?zˆ ? Þ?6‘?ƒ5?ƒ,Á?…u§?…à¢?ƒÐ ?‚??ƒ¯Ž?„f?…‡)?„Êr?ƒ>I?ƒâ*?„ð÷?„’Ó?‚?ÿô?€Úu?„vè?…‹É?…`?„Ü0?d–?v&b?ti¹?u•N?€'?‚©_?‚JG?ã‰?|¢‹?wUF?zùK?€3V?‚Ú?ƒo|?‚à´?ƒ™±?ƒ”?‚‹¯?‚ö›?€§W?+À?vá ?nIa?tš?€¼?ƒ0K?„»›?…³Ø?„8c?„ ?…Ý?„àš?„*Ô?„´˜?„Q—?ƒJA?‚¶¬?ƒ¦­?„Ÿú?„°8?¿)?ƒ.?…¾±?… W?š;?{“³?‚IT?….?„Ê{?‚§¯?€Lw?€ ”?ƒh?…pU?…!¾?‚Žÿ?˜a?€¡.?ƒ?…;«?„ª?„*?„U?„ t?…UÑ?…;?„a?…Á/?ƒ -4?}%?~E:?zKR??ƒmG?ƒ}?‚•?ÕU?ƒpæ?‚:Â?~L"?~ˆ‡?ŠM?îª?ÿì?‚ñÞ?‚?€þ´?€úŒ?¯Æ?„?{V2?wûa?u -\?v±ð?xúß?xÖÓ?uI?vý0?xí+?z£?{^?y+q?u -Ô?g”?dŸÀ?oz?r¥Þ?pÖ??uÃú?xFÉ?xTÇ?m-Ç?nÖb?iì™?f@˜?kr³?c)§?hç?pÉ??lÿ?nZ?n·?k•Ö?n΄?m?oPœ?q¡?e^Ù?jûš?kA?e‘n?`SS?gÑ.?n Ë?o œ?tÀª?sÔ?m$1?k…a?l+å?jY½?h]y?mD?r^è?râ—?oÓ ?rH-?vo•?wä??o&?lcŠ?uÜ7?xÌÀ?q;?hÉ¡?sçR?z~û?rg‚?hШ?jÛ]?hEK?fDß?nív?o¼8?tc:?nîV?r$=?pçÜ?pÁ ?y?vâ1?wj ?u?qUW?j’÷?_{ø?^."?lj7?wÞ?vÝë?t¬‹?zJj?yÍf?u?q{,?hw±?dpC?f‰k?kê?oܹ?p_‹?uê?xȘ?v'?qZÑ?rŸ?v!V?pá3?f‚»?c,Ù?cn"?dÕ?i ?p|í?jæ}?`wD?faÅ?g?ò?nÛô?ea€?V-?QÜT?]=ç?b«?bnW?gm¾?fO/?[Ü ?Yd?aâ?`Sƒ?c‰¤?btr?X&ì?\Ç?c?`–?gãú?f¶?ZËÌ?b[?c• ?cGI?nÔ®?iQ?cC¦?dÇÃ?_Z?b.Ô?j9+?híÿ?_Ñx?_Q?eûv?cú‰?i¥k?o›A?gûL?X£ç?c¤)?g#\?f/Z?im?l h?fz›?eF?jiã?e ¿?a]?c\_?a8ï?_øS?_[Ã?qÉŒ?mýÆ?_uÊ?^Û?hþ?d·ý?_?^i¶?[j?^dÞ?bî?i7‘?e™?bð;?j›£?kB?[}?\%A?hïŠ?p¨þ?j?dÛÞ?^Úd?eüÜ?jÜ8?g–.?j¾Œ?hCJ?dÞ?lØ`?iþ?e;—?gG?dk?f·Y?eo?fqô?r š?pEà?g3P?e -z?fmV?mB{?ii!?`Æ¢?`Ñ?fGä?l¦?k¢?e¿Y?hpœ?fD¹?bA?fmi?gÄ?`°?^î?Zèç?dF}?eÂ?_gu?WËm?Y/q?X*Ï?ZU¯?ad?d·Ô?hº?c2Œ?\=b?`qÃ?]^ª?Qó?\ðL?XT?RÑy?Z¦?^?W{/?^¨?]b‘?Z‚M?X' ?V'b?[{ñ?bø1?_Æ?_W?]–~?_k?^Š7?T½Š?Tï¹?c M?cË}o?<{?=K?I)Ù?U–Ø?`{ÿ?^èj?ZPŠ?bÙ¿?bå1?b9¡?c¢h?dZ’?dë??ebs?d½Æ?aK??bžÄ?g”?ewP?YØ?\HB?c@Ç?c¬g?aût?`g¸?c+U?d+?_¸Å?dzŠ?hC?d‘?ek_?eç:?_ÿ?Wi?^Ò?c¸?dø.?cØD?[âØ?aa×?gUa?fOù?fXh?d=3?cÁn?fü±?iN?j0é?fsÿ?e{ ?h±8?b–o?]±d?bf?_`(?\ð/?U'}?7‹>øw&>ÿ§¤?8ýg?QŸ³?ZÏ×?]7r?V.Q?O‰C?^âb?]+¦?[^×?]fç?cŸµ?Qþ¹?Fö?[(º?bBÐ?f­–?d1ý?\¼?`°?akÂ?eþi?e›‹?_æt?[¢÷?[©B?e,„?d±N?f~ö?j9?hÍÅ?g ´?b‘T?]»w?då«?dèd?\MÍ?aê5?e{ó?_zg?bGý?d–þ?b±Í?cíò?^&x?cª?d„?^­í?gñ~?h5X?_ɹ?^‹?a‘|?d,?]oß?XÖw?dÌÝ?f¼(?e]?h½ï?f5p?g@o?iG‘?`²¶?\µ?[Ó?_dþ?aÆO?e¸?bÃü?SÜ?; ?D”7?^6i?dÚŒ?d‹?dW£?b¢Q?ahÚ?[ B?Oiÿ?]çû?dÞ?f•è?eXd?a¡—?Zå?TÙ?\îh?`•@?cVf?`ä?bµo?d·?cAH?cOÔ?cžC?`q?Xâü?T‘c?Y¾°?R|(?Záa?dÖƒ?cŠO?]>Ò?X³X?Z$?_dô?\B°?_)x?bÓ°?`Bá?Y­Õ?]¶/?`Ù†?_v‘?`t?aÉ?`¨ø?b¯Ò?]õ¬?ZЗ?Wͧ?[M¤?^Þ©?Zøu?WÙ“?Z”v?V±õ?Uí?U&`?WV1?X÷*?]ëÃ?aŽŠ?_™?[Œ\?V.0?O6Ë?N¼¸?V½n?]ïD?aÂÅ?`×M?a?_/?]P ?]Ó¡?W4Ÿ?RóI?X?_iÑ?\v?SÉã?V%D?[‡«?_ãD?[8?Zðƒ?\_Ý?Y÷?Yœ ?Yy£?Zd?DÍt?E²º?1?)Q?+3?1S×?q?>e ?G¤Â?@ÆÔ?4e?8@ò?9çŒ??ï?7§×?7ýÛ?;#¢?8°?=D¢?<ÿ¨?-¹?3œY?=ëÁ?8ÚÓ?5ÏÃ?M“?Brï?3B?Bç?8FM?8õM?Cñ·??Á¯?<$*?9Y?7÷ò?A6¹?8è?8Yõ?AÞW?Aÿ4?7Ô;?6å@?;~?AnÔ?7U¸?D£B?FÛ?=÷??õó?Jþ¿?F&©?9"6?@“ß?J“.?GŠR?6î¼?8*¼?CXj?G³o?8ó?;?Gä2?Kk{?HÅ+?>D¤?E”T?D:X?EXc?Dê¡?=??E R?Eð¾?Ab€?Dµ$?@¢?KÁ?Jý‰?@ ê?I§.?BÞa?I„'?J…á?;x?A¯g?>‰?B*Ë?H $?;ÉV?4ÿ?8ye?;tw?G<Ð?Giá?@Hn?Aƒþ?;sQ?DÚû?HÑ?>év?4N¥?6É?8«›?;±?9Fž?7NX?:RY?:\?©-?;?-V‚?4z?1‘>?%ÕO?'û?4¦ö?3€?4]?9ƒ”?7‹Œ?B*(??ý?/Ex?5àû?7•í?.k?6„v?9ƒç?4*¸?-1¸?3B?6$?0ˆ?.ý7?9¤1?>/S?5Š›?.å ?>öà?9"ë?1k÷?;gF?:Jé?7wÕ?7ü?9š§?:!¡?-Ç€?4¨?F®þ?=×b?.‹s?8£?D¸k?8Ø?8»ß?<Þ›?Aaç?5ty?<O?BL&?=ER?5Œò?C¸?L¶[?<Åû?3þÀ?:ü°?Gšy?<¯?/çÝ?CL–?HU?=Ó°?)Sw?1Va??±?9òà?: ?<˜;?B¯Ì???(?:=ñ?>:¾??ÎT?3A?4—?: a??j4?=>*?7š†?=^¹?=Á$?<*ž?@;6?F£…?EÞf?>ùJ?4#?6O?>¨?9Ö?2=?:æ?F®t?EüP?=Ê]?;ºå?:@i?9­?3Z?6Š?Eãå?Ep?5S?0õ?3(??>>?>bÎ?7Í?0–?9„o?=—÷?:¬È?6n?4X}?5Z£?7‹?5~¸?;}C?>™o?9-|?3?(8º?7C{?;¸?>¨á?=¶?6IÍ?03P?3¨?3*Í?8š?=m?Žé?@¸¸?>Ýø?6G?7¿?;_—?7ª2?iÊ?;SÌ?@äh?>s¢?:1ß?4õã?=Iý?>—S?/Ñ^?7›t?@ùˆ?=®%?<Öc?<8h?>?9«k?66?<?=u–??<«?;­?2²â?9¸Õ?@;?Aq?:…?5™S?@$ ?D–?:¿2?:Ñ{?>ÚÙ?7æ?/“?6XÑ?A‹'?>‘…?2øn?4zt?: Ò?:[÷?AI!?<€&?2Lj?4Œ?>ð†?CØm??;áG?7ç?<šk?>^¤?< ¼?8¡f?¡!?>”H?;®1?8E£?;±é?<7Å?9P?66?4¢Ð?7_?4¥Ç?8uì?;Šˆ?>­3?9¿›?1 M?4@?>?5`T?/&?8ïÈ?:A`?7?;\?9)ž?=?>_?9¿?4ç‚?5ƒ®?5´1?1’Î?6:¹?;*?9ãý?< í?=ìS??g©?;ÞC?3«¯?3¨’?<ˆñ?9‚S?0¸Ø?6øÓ??4þŠ?4¡®?4zì?7Qç?6x?7Êþ?5½Ž?6Ñ?6sù?34Í?,w?(ñæ?*ͤ?4Ö?6w"?2Õo?/˜m?.e³?1Ø2?3¨“?7_?3¾?3Ä?5 Ò?6¸/?4ªÀ?19Ü?5%j?.ìó?-â„?6J‹?/|ã?.n?6Ju?54E?5ïg?3Ás?13‡?0¾?&qS?.}(?3Ÿ„?48¢?/ç„?2ª¬?6­¸?6ÃX?3›¥?4}?4Ví?+0µ?+„c?1;?5dé?3Òº?03?2#9?1­„?3Ü*?5Ù?2çO?2V?5!d?0K#?(d_?(Ÿ+?,Œ*?2ð°?4«¦?/"K?-›È?4Ç?3§ç?2³ ?4\“?4ø?1K¦?2z'?3öX?2¦?.„?.^X?1æ(?/1?0xì?1Õ?0É?0q?2È”?1œþ?2G·?2ý7?2n?1ß?.Ý?(bç?+/?/Ÿ?3WÏ?0ך?/ÐX?3ƒÊ?2N¼?0]|?2?1ír?1@”?1£?2~©?2,I?1dE?0›¿?0iÌ?0ŠÆ?. -?,ö?(w(?†X?+ç?2M?1z¿?1£E?1¿»?1?)—œ?!«ì?)õò?-ÈÛ?,ã:?/(b?,r¼?.3û?1y¢?0Ú(?*ì+?+?0Ñ„?0*4?0­?0—‹?1.?0f›?.;y?-›?/Ä*?05??.Â&?,Ìî?!,è?')~?.>Š?-ž8?.ƒ¸?,*?,øò?,D"?-\†?%@í?%üÿ?(N1?!gX?$Bo?(.?-¹j?./?.1Ô?,oG?(/Ä?,Èþ?.dÈ?-|ß?*-H?,Ùl?.]w?'¬D?yŠ?$C?'¼?+s?,<µ?-¾?+&œ?'ôÍ?'ªã?"Ö,?&p§?%!?+éG?-éÙ?-W?,ûÕ?*$£?)ð?,¦{?)”N?*Õýþì?50?a?]¨?Éæ?¡?’­?(G?Ç? -G?³? íS?Qn?–4? +_?Hu?2?}½? ,s?Tð?æ? Ç9? ›a?Š¹?¼à? ÓÃ?:Ï?|Ó?Ñm?6É?ˆP?„•?$±?iE?T¤? ­? -°?Ø÷?¨?bâ? |Ä?˜Í?—ß?é|? üZ? Ž`?Õr??F?Þ -?¾ ?h?Æ7?¢¡?üÊ?Ù÷?½¤?³ª?4?¯?N"?³¯?>…?Ñ#?£ˆ?¢Ú?õé? œ??H?VÁ?Å­?iÖ?R6?k?:? ×ô? óO?þú?O?[7?¢‘?&?x?r®?"!? -«w? ØN? Ü?!M?¨›?Õ?¹¥?b?c??r?üD?'¿?0â?ßâ?dQ?Õ??¨8?Ä?u?àÂ?|û?«(?®M? Ïm?pÑ?öz?ï?eS?(L?ëÄ?³?À‡?¯Ç?ì=?2?"&? âü?ù«?µ?¬+?—ç?ìï?Ï8?\J?ñï?Ç,?•J?‚¬?uñ?Â?Ñ ?Í4?¯j?uý?¹?/ý?Šø? -àM?˜â?ä? ç?ô§?™ë?<=?2‚?º0?jQ?×\?âÏ?!Q?{q?=Š? ÷r?? ? l¾? D¡?w¿?1ž?¨\?±~?Oè??&? Ö?!? Áê? Š†??J?k?¬Ù?_1?Ÿ?Ö?‘º? UÔ?„À?ò3?y¡?eF?¶µ?®K?•˜?™ÿ?Ò„?a??ùà? ¯d?l/?ç?rþ{K? ÿ“? ¸ß?xŠ? 6t?Q(?t? 8·?R¤?d™?€”?Ê?Ö?i?¯? ¤¥?å?>? ^? ó#? é7? mæ?›? ¨:Åüÿ:ûN";’Ì;I…+;{FÍ;’ú;–;ˆ<;j¨y;R²o;DêÚ;.,I;u:¿p::ê:s:ÃjÕ;Pó;KýÈ;|cú;‰ÿ;„%;lbø;R¾þ;@c;.K;#ä;6¡;u]9;©Œ²;×b';õ™;ü -ç;ï4²;ÙZ;ų“;¶Š=;©C^;¢`¾;ªèÖ;ÀFG;Ñíç;ÓÈ;Æ)Ñ;³Ò¿;ŸªÚ;ŠP;p>?;c‘F;²Ä;¥¦§;Û‹<%à<0<ïT;òÙõ;×…ø;ÂäP;«æõ;Žû6;ddÄ;;Æ#;0Ö÷;J!©;€EŽ;žÕ;±ºã;¸,;¸lƒ;µèH;¨n;ˆ°3;>ÿy;ð:íÃ;-ã;µ†;ÚX< ³<cÂ<"qÃ<$ƒå<.9‚a=i=Äc=Bä<ú}<ܸÉ<¼›Q<¦§|<§î<½sÔ<Û–<ï[³<óÙq<ìa¿<ßa°<Î6<º„<¯<¼2k<ÞZ›=ºé= -“+= ò~=×¢=8²<ðl<ír¾<ý[ý=“º= ¬=6'=ÃU<ó™Â<ãÈŒ<ÜB<ãKÉ<õ¹ð=ë>=*ü=i²<öšû<äIz<Öœ3<Ô£<Ýgf<ìÍè<û,S=Ù1<ú¹ã<ãÖZ<ÀZÝ<žPG<“5 <©‘t<Ô(Ë<øŸ)=’­<þT)<ú+˜=ÁÐ==­=š™=~-<âšX<­Ñ<-à<öè«=žD<÷®/<Û¸ƒ<Ä{¯<±†ä<™¥0 "²=.£¦= 8Î=šÛ= ˆL=á¶<óéŸ<÷{w=Í= K= Ç+= [W=–ƒ<ú>2<×rG<¢û)=ùŽ=/’°=G{`=AÓà= Т<õ·Û<ÌË™<Í!<ÙK<Ú -u<×Æ@<ä}t<úN£<ÿ?><é˜ü<Ó{†<ßþ|= ßP=(ä==ÒÑ=D÷V=@Î?=1d¤=W<÷/ð<Ä› -<ž+<Šç²<—%i<È5=b9=#÷=7’=G(=S@Y=R=)eÞ=Gñ=u¹Ý=ŽK„=‘ºí=‚à=Mô=›D<ä›G<Å{ò<Ä<©<ÓÀà<ñ…=·ô=š=¾Î=ñð=4}=,©ê=Ld=_\q=jÛ={üë=ŒŠ=—#Ú=”Îé=„¯f=dz(=P²%=O™=S}=Nàs=D›€==Û=9=/•û=(&=x¢= =Ã_==ì=\P¹=j '=`vÍ=H Ò=/I=²&=­<=‘—<þ(m<øú¬=.¤= þH=;=,âÈ=;7=?)ú=?Î=Dü}=M4%=Uôš=_‰å=g%=hã6=h6L=kr¨=ti:=€„”=†6ª=‡s2=ƒ*={ÂÉ=z{º=€-µ= !=zU =p!=k¥˜=j V=d¨a=]8Ø=Z¨=[Ýí=\à#=Yý2=V£=U¯=\­=g(H=m!Ô=i#³=`ì$=\9¤=^1r=c¿~=i0ø=n–6=pRŸ=guÖ=VÆ"=Ioz=E3Þ=F5=DF=;ú#=0ø~=*àE=-Æô=5Ûu==É„=DF"=Gu—=D0o=;BÚ=0bÀ=&ƒ`= éý=!a…=$³i=(ï&=2if=@¤f=H´<=BAÚ=1 -= a2===0=!ƒ¦=.j…==±Q=JÂ8=L‡I=@%¿=2x}=3q =DLú=Zq0=m/=z7u=–=ƒß6=‚8=wØ=ewà=Yœ9=T*6=Lð[=BÙ°=@Œ=Fû†=KyØ=CÅ =5oÃ=.À=6#à=CÊá=LäÅ=P“ÿ=W»Ü=fA‰=r¿=qCù=_ì÷=I«Ô=>„=FÌ1=^X5={“B=ˆèÀ=‹ €=ˆ_‚=Œh‚=™å=£} =¤3=X!=’T»=U0=[ÏÈ=C×=A©S=I“Ç=P«&=X„=h7š=½W=Œr¾=—=l“=žÙ=™Vd='O=…SÒ=y6Ý=lqD=b÷=[)Ÿ=VšA=P—=LiŠ=RkØ=b¢ =t&¬=€+ý=ƒ¢¸=…uH=†¸í=ˆÏ=ŒýA=“ì5=œ\u=¢ãQ=£ám=Ÿnš=™·=’L=Š›Ã=†S=ˆ{Å=Ž…ž=>•=‹7=ƒ°»=uPŽ=gË×=kp=mP=¦9=š£c=›•u=—Xt=’£{=Ä=†qD=u¨={»=t³å=tû=ñ=„N½=ƒÒa=2=rm‹=d‡Ã=ZÞ=XÄ=^ç?=mJ=‚5¢=‘¶:=žt×=žîè=“ÑÙ=‡ÎÎ=ƒ­¿=‡þÅ=Ðç=—€˜=žê=¤/C=£W—=PÝ=–Æð=m=0=\R==?n}=7ÀØ=]=¡ñÅ=Ÿ&ð=•ÝÁ=‡(i=rÎ=`%Z=Z#~=]…ò=fH8=nÏ3=o:V=d„/=Sßš=D“Ë=;`=6?.=-øª=&3'=*Î[=?Y=[Î=w X=†×X=ŽˆÌ=‘oz=Žw¹=†Në=}®=~-£=†Ã‰=Š"=”HM=’ŸÁ=ŠMß=~2½=m¿ô=f¤n=f'2=jg=kÏ=b&…=RÞå=Gä¼=IŽ=T‡=WöL=L½'=á£=>>=Cyª=Rù=fØ”=x´¾=`R=ƒað=„>A=„º =ƒ½=€g×=yŒ4=x×=éS=„.k=†dz=…àî=‚d=x^=n”ò=h8D=]â@=Ré„=Tnß=fM=}Ô^=†Ôk=ˆ|›=†·`=…ÒQ=‡3{=‰·=ŒRD=]Ç=Š•{=„C=z(Ù=qê$=v å=€Ö=ƒ('=}m@=lÏK=`ÝE=eDq=tÍr={‚ß=uÚ=v=Ú0=„fÁ=oǾ=Gt=1%ç=6 -!=EZk=U=løß=ˆ·N=™µç=ž“¤=–n=‰àÚ=…Ÿý=Šð=ŒÕà=ˆØ!=…;=ŠÂ=–•>=ŸB[=Ÿ´%=žRf=›ˆ -=”Þ¼=¯8=•‚Ê= |=ªë=¯ëk=¯G¶=«(I=§‡=¦Ž -=¨+¹=¦’2=¡{S=žI=›¬G=”—=‰š=:=}27=€z$=…)û=‰!I=‰Pì=…”=|>”=gÌ5=R¢þ=@ï =5=0ƒ =3õ³=;ü‘=Alí=Aº¯=EÄ£=UWw=lH!=€ =„h=„2«=ƒ^ =ƒ)Õ=ƒ®)=‰ÈÛ=–~›= ‹= ¹V=›|O=š÷=žó=¥‰|=ª@=°jJ=ºI>=À>1=º¯=«àÎ=¡6 -=ŸKz=¡ Í=œM/=ÕL=}?Ó=lž =cäÀ=W´=EO*=1°k=#! = à=9Ê="G==-?T==¼=SØÏ=o”b=‡Î|=–xÑ=¡9=«{=¶¥‚=ÂCª=É=æ=Ç)"=Â{¤=Ç|Ý=×9Ç=ê2=ø1@=ýÇî=ý&ì=÷JL=í¨D=éÜß=ñ>¼=þˆ>-8>'ù=ý Ú=ð©å=éd(=ç£Þ=òÌX>‡T>RX>¾”>¦°>?G> äh>£„=û-*>.> OÇ>¾µ>í¦>•>’>˜+>ˆ> äè>)Âß>.ÿà>,:î>&ùà>%H–>#“f>½{>ŒÏ>Þ}> P¼> Óó>²> ¥¶>-õ>4ëX>/¦ó>Ó>l›=éä=ãƲ=ì×>s»>1>/bÆ>;#>:yW>2'>(J>"Ñô>"ho>ôè>´Å=ÿÑã=î·´>h>G>&!¢>0çÌ>7¬>:Þ>:Š•>3iŸ>(/Æ> cc><_>Â>éû>(>"¦>'J> Ù> Ôž>(>^/>EM>ý>O >%!>/ ˜>-{—>qÓ>wR>î>&¶è>#²L>ÖÙ=öç=åoü=ùj¹>{Æ>+½•>9’%>8D>2eÅ>1ñ`>4:>8Ñ€>Eö>V¥>aÞ?>bb>\\æ>UþÅ>R/Q>QlÓ>JKœ>9”>+ì>(\c>&ú÷>¨™>£=ðD\=õг> Á>"q{>3ÂE>C)>JÊá>GD->/`È>%˜ã>"Q>%ÝÏ>.½?>6 À>8ºÈ>8êº>63S>.¿½>'ã1>']>(“#>) n>*õ¤>2½1>>cŠ>Dª>Afî>9Ù>1;Ó>+ õ>%Ò¹> =>Šæ> >!`C>.â”>;5>@Ð\>Cב>Db¨>@ŸG>7|P>$˜=> -‚> -_æ>Ö >5—>Añ„>>åú>3…>)-j>'=ª>*¦Q>-bÉ>0  >3ýY>4³±>6³Ë>@È.>NÙ|>V3B>U©œ>Uü>X-¢>W×O>M›n>BÀ>>¾/>>dX><ã}>>Øq>C¡>AH>/Òï>X>ÚM>ó>"g«>)º>*î>0oÀ>:D¼>?‚>=Õþ><ö}>E L>SV>\ -Ö>S”y>C1÷>@7•>Hµˆ>I–H>CºÏ>H%“>UùL>[2d>P–˜>>ê°>1ÇV>+çÄ>)¯>)FÇ>(~é>'‰=>*Íß>/µ[>1v>6vÏ>D×ù>XÂÞ>gaª>i>cÄ¡>`˜[>\´'>Oí¼>:½Ø>, c>8wR>\ÈÒ>|Ò!>…2â>…É>‚¥¦>r…>SA>0]e>qò=á ­=ǃÃ=ä­6>£a>;º[>[ó2>dJ‹>R}>Bàÿ>F&3>O\>T)o>Y¿>`bº>e„>ki>w¡‡>†‚B>•?>ŸŸ¬>šÝú>Šuë>z»‰>r©ø>kœ†>Z=8>NA—>Oq]>Kv>>Nç>@Ï6>[„>tÝ|>v?D>g_Ô>[æ¬>aSµ>z›\>Ž}>›é\>¤2ª>¥S'>æ/>‘å>ƒÓf>i5e>D[Î>+{>+‚ >3I‹>; -x>TXõ>,R>’Ž >˜¾L>)8>ƒT®>z4>zçR>a>~j>wÔ>pøY>enD>JrÄ>)¾Ì>2 >3†>Uºy>iÿ~>n‘9>wE¹>€€®>yw>[°i>:Ó>.$Å>7L|>D0Ï>PNº>Uü>J½”>6ò>&Èg>&©q>=2Ï>g.ß>‡È>>Žö_>ˆã´>…n¬>—œú>¸K>ËvÃ>È#™>ºdª>¬rŒ>¤ˆÇ>£x>œ N>†o>\ãï>Z€Ï>‰Â>¬RN>¸õº>²ª>°ßw>¹Îl>Äó>ήë>Òà#>À>‡>™U ->rv%>Qëá>Ið¤>l ->”¦Š>§E>¬”@>±\ >²±œ>µ,1>ÅÕÎ>Ó¨j> >žìH>‘WH>Ÿò>´\{>ź >Õ®m>Øc<>Å¢Ð>°f>­%>»Ä>Ìþ²>Û"Ï>刃>矮>ÚH>ÂÄ7>³T„>¶¾a>Â;>ÇIï>¿HV>¨Ów>‘eú>Ž¦x>§‹7>ÈG >Ö[Ô>Í\J>»²î>¥z>„ø»>LTt>AÌ>n'»>’²ð>ž÷û>Åu>˜×î>™>O>£îŒ>°^Ë>±>«$ž>³Œs>ÊÖ:>Önô>ÊÓB>µÛB>­â9>¼>ÂVÉ>¦hü>‚&3>mµ€>yoÅ>ˆÝ>Žm3>«é×>ÈUÂ>Õ–ô>ÒõI>¼óß>Ÿ}>•ð>£õ8>¹‚s>ÉÌ(>Ët›>¾}>°‰Ý>°ÈL>¾ws>ÈàÁ>Æáu>¿ôæ>¼aÊ>¸Æ>´òÒ>¼p>Æ9÷>¼¤>£«/>•i>£±Õ>Æí@>æÕ >ñÚy>àèô>ÀKý>¦ò¸>£j3>¶ª?>ѽ:>áè÷>évx>ëåŸ>áx>×Â?>ÚcL>ÖѦ>ÅЉ>²ss>ª=>­®Í>°ß>ªä½>£A’>œ$Â>žO >´Ôn>ÌB¯>Ì÷ë>Ão1>¿$o>¼=ä>¹éZ>¾—V>Éó‚>Ýc>ôÊØ?,m?1t?A? /@? :×>÷¦,>Û5">ÍÕ3>×Õ§>ô]?bô?¹?§?v>èÕ>ÔR¤>ݲ½>ô.†>ù«X>冢>ËÍé>Á >Í"æ>ì& ?f ?0Ý?¼?êÄ?Š¼?*ùN?%gÉ?Áx? ¹ƒ?~(?íú?ô?«I?×—?Àý?·ùbÆ>ð’j>ÞgE>ÉQ·>¿sš>ÃîS>Ï«È>ÝÁ>è'±>ÞZ·>ȯø>É®">ïÑÐ? zé?‰²?,–>éÓ—>ì\>ÿà -?Ð>ûO>úÉ$?y?Ó>üèŸ>þ„—?Ÿ>ø˜¯>Þw\>ÏEÒ>Ûâ†?Ë=?°w?’i?"Ñ?ð?){?Mo>úI¯>óšp?mƒ?‘ ? ùî? wü?Ÿ?lÐ?Dö?é ?¶:?D¬?I¬? “¤?£û>ôÙË>õî?bK? -ø´? '?s? 0Å?]6?ýu? Ã?‚|?ë*?Ų?žÍ>úÿÏ>þþo?êÐ?Gj? -œ? -•?Û?3­? µ?`5>þŒx>ÿW¬? 9T?%†É?5—1?3ÿ/?)\i? fÅ?ÆD?#˪?(²?,O¾?1â?.Ñ?(2?*«…?.î?.6?,Mb?'6Ž?!üá? ‡ñ?ʸ?ºq?&@8?/5ë?'ÎB?}L?#­?[þ?Î?Ô?Áx?éK? EI?²£?3Œ?•y?Ø>é§{>çœ->üOé? -Ý>?Ô[?Á·?âË?ñ?éB?JÈ?ÉL?&Gz?8„Ž?;WË?.о?VŠ?•Â?z? -ŠQ>õÐÊ>á) >ëCò?ö×?“‚?ÉL??$,?“~?$Ø ?(Yå? æÞ?ãï? -Óû? ù?Xz?¢Á?!s?7©?f?xF?Ì?}’?o´?¬? f‘?+±?2ìÛ?.~?n´?f&?ƒâ?-%?î?D„?(„?é?Ø}?|E?Ñ%? L¿?à?!R?›v?×)?– ?i×?$Â?,BÃ?2x?4 ?/+?+*Ý?/[´?2øý?(˜?Êz?¹Â>ÿ¾-? ? ÷?+ì??!ßq?$]!?$,ã?)·T?, !?%Ç?Y ?nž? Eû?"X|?%ø!?,8t?.É#?/¹?2\¢?1%L?*òø?&&8?#ü ?"9? d¬?VÚ?Ä“?"ˆ«?"œ?‹?ÞQ?i? I^?v:?4·?$oá?,Ý?)8ï? '´?!%-?-?¦?6p4?7±½?6Qõ?2Ϋ?-ÙÛ?(Ì? Âè?B?®I? D?‡+?j?l(?RØ?­Á?"nZ?0—0?>;ß?BCú?9Ó×?,86? ¾Ô?У?%Z[?5ß;??øÉ?:¾·?,½?"Vo? º?ŽÙ?'´?,ãí?-.ñ?,ì#?,„¤?*-÷?-4?8 -ì?As?Dà¿?C–á?=Tƒ?/œó?&5»?- ?5ó?2·®?,A©?-:\?+d9?¾?°?.2p?8oB?6àf?3¸¢?.e+?&#.?$•½?)»?( ò?(ð,?2¬•?8˜j?0AÁ?$t±?%n¨?.^Õ?3…é?4C?*&n?ˆ³? *?-2£?)Ü„?;>óHå>èÕr?Ì#?9f?Ôæ?¿’?$¬’?'¬?'“?0¥?ª¾?`ó?÷…?ìÜ?"9Ð?/¥©?: J?7Ì?%¸é? ? ö4?!Ãì?fm?­l?ŒÑ?)?hã?Çt?ž­?4G?I/Ö?Xuq?]­?YÑ«?K|?9À‘?5 -?5Ç)?4HÍ?<o?L‰j?PÒµ?Aú}?/½|?'¿&?+óÙ?3Š¸?9q?Bµ?LF?HFÊ?1s?<¤? -A?þÜ?'?þ?+tC?'ÅË?1%Æ?B -û?NGÆ?WL±?ZK?SCÈ?>zJ?--?2º˜?9¾?)úÏ??%?0x?>¥®?CÎH?Hs?H¾O?Hå?L?Pµ?XÒd?_Šâ?[ é?Q -?Kj¥?Aãa?*£?LÌ?(q??§>?FiT?D¸Ü?Ap¹?3­X?$n?!ï?*²¿?4ýý?9¨2?>Æ?Fàñ?Nóð?Qò±?LSn?A”Ô?6‰A?0æÊ?'Àj?È”? íà?¶Š? Tm?(”ˆ?2À?3!ó?. j?/¾ ?8µd?8:?3´?ûK?#5)?'X#?%D{?nn?E'? v?1€ ?6iâ?.Ô?¸ù? Ãé?@]? y?}½?"Ò?!ê˜?#B?"@9?‘?"›?-'G?1÷?/Dz?,Œg?63?C4?NŒ?Y‹?W'*?@’†?)^Í?$õS? µ? vj>ñT?¸8?%¼Ä¡?@„ç?·?=°æ?F>\?JÆ?A¦Ä?6–Ù?3Ëk?:…~?5ì4?%¥í?$›>?'Ÿ?# Ï? ýí?&§¢?(h§?Zÿ?ߎ?Ä[?(‰¹?9º—?J0/?PûJ?Mœ?L!?I&²?AF?4‹?s„>ì} ->Ð5ƒ>è@?Ú?þ>Ø÷†>èRõèF>ÿpÛ?"/¯?<Æ+?Ci?FïÒ?E„¶?*k ? l?k{? ú?-rC?;¿þ?CfÔ?Dò?A.Q?:3*?+Pò?ô?B–?zù>þâA?IA?õ ?0¬ý?Dçÿ?H8¤?>}×?;W?DÝ?Ke ?M?&iD?† ?"eÞ?4¨À?:ÿÚ?:–º?NÞe?hK?lÓQ?`e?M¡?4…¡?†?@ƒ?7~?)*^?/Ð?çˆ?‡ò?8·…?Giã?E@?FIÝ?Z¿3?pc;?q -ò?b5?R_¯?J:Í?SÏF?nO?}¢¹?vþ`?pñú?uÜâ?vór?nkò?gͶ?Zˆ¸?=êž?-ã~?<ŸR?K®c?MÉ?X•u?qE’?ÇÛ?€±í?y½²?I^?ƒW?€ß?y^Ö?uï?wßÑ?vv*?q²?l°1?j_Ý?kQ?hã±?b@?_å×?[U)?<$±?ª??(ùH?K‚Å?]T?g|?w=ª?{ž?u--?osU?]‡È?Jí?U³`?gý©?iÙ?cÿk?b¸»?\~ -?SxW?]”R?t#Þ?òÚ?ˆPD?ŒÃ?Œ¶5?ŒïO?‰ -?‰:,?€¸?zL5?z?uÏG?t†…?sÔc?fq®?KÄF?C,•?`Ûa?‚;?‡kØ?ƒPü?‚ˆš?†„ÿ?„‹«?~¦Ë?xÒ"?tÞ^?sKk?qñí?k¸Å?W]½?G ?Q3ä?^Ö¸?_l?VWg?DKÇ??ða?[<™?mâž?pÕ?oá(?^t¨?@®°?8 Â?Gáù?K&“?Gï?\à ?veà?~ š?€v ?„èá?‡ ?‚Ù?y‚?yÏM?T?}+›?w†]?YË?…"!?rÚÏ?YÙ°?`Ö?`Læ?RÈ}?JSî?OÃâ?dÆ?³:?‰¸£?Ÿ?›œ?‹¿ä?€wÛ?Zü~?Mr¼?c½…?yÊT?$?xzª?gã…?RpC?Qß?k‰%?|µÿ?x1Ô?rü?oºc?rG’?z¨†?~?pí?zÂo?nµV?h0??aK÷?ZR?XÎë?R‡?[£½?pä?j‚Ì?XU?]•ð?r*,?~|£?x.?nøÑ?oè ?q9–?w}?wòé?u9k?xe\?r™|?töÂ?ƒ,é?˜?q‘¯?pìN?qѬ?eês?_„4?o¥>?{/ù?sgN?__"?SfR?T»]?_ ?q2—?ƒóõ?‰#ð?†…‡?„Ú?† —?†?Å?£?t†h?ox5?}?„ñ?¯ -?zÔå?vV_?x›F?}“?‚e?Š5?íÈ?‰ ?ƒµ?íŒ?§?‡ð?ÏÜ?î†?\?‹kÄ?‡´|?‡o?†)—?„v9?…#~?…÷?ƒ¹™?‚Û'?‚e£?~„?zÜJ?~‹?€†Ë?ƒÓö?…ì?ƒ ´?‡¦?‰è?ˆqô?‡¼>?ˆ¹=?‰«?†Òs?„@æ?Å×?pY ?]zý?ViZ?_yq?kËA?o³®?t¸?‚ ?‰Xž?„y -?xí·?rÍ?lá?ŒCË?Ü\?€d…?‹+ë?–‚¢?™¥Î?˜u?”³?‘ä0?Lã?‘ç?ŽóÃ?Žêð?n¨?Hp?‚ -–?e”?`?gzx?gÏ}?t-Û?ƒù?ˆ•_?†5`?‡7?bo?–¼ ?“¦~?‡¨‡?†$â?”³~?Ÿ¯?žê?•»>?ŽÓb?¼?’–?””G?—¦ˆ?˜D…?–ºè?’—Ÿ?Ž…?‘£Ê?™ÿz?Ÿr?Ÿ‰¢?šÚh?—“À?™»=?›áI?=‚?Ÿ%|?Ÿ/_?$7?™4?”‚F?—pà?™˜ë?–xP?™…E?Ÿ.G? d -?ž<˜?™j?” h?“5]?”®a?’¹á?ŠÖ¬?„ø{?Š$©?‹qR?…?=?†y¯?Ž[?’¥?Ô0?E?ŒØ+?‰jÛ?Ž¼Ï?–Ô¡?™ Œ?•ÛÑ?•Jf?˜¤Ë?—õ?¢ ?†Î>?€§$?†ª—?‹?‰ÿ‡?ˆ{)?yŸÊ?<#­? vØ?%ã?IÆ?JÆú?(0?*3€?XA?ub/?‚åt?‡€?‰¶?ŠÚV?‹[0?ŽZ§?Â?’(D?’¼d?ŒBV?„Kµ?‚J?† ?ŠKY?Œþú?ŒÏM?Šÿi?ŒF?…?“{ï?’Æ?Ží§?€(?”;?ø¸?…9?†Ÿ–?‹Ï?’Þ?ŒX×?…ýQ?‰²í?Ô?•ÛÀ?•¿¤?Ÿd?ŽÚë?‘Q}?1á?‹¬?‰¦?…?‰´?‘ÖG?™lb?›É=?™›7?•·?’¹µ?•û”?™’V?œÛâ?ý ?-K?˜Wí?‹Ô?‹Ý5?Œªµ?‘»F?’<‚?‹3¿?„ï[?‹ŠÆ?“­?“±Ô?“e}?‘òé?”@u?™z ?˜A?“Mœ?0?$?‘o"?=ó?oš?í?‹&w?…|?Š©¶?“@ˆ?U¬?‹½½?Ó?‹ÔÖ?ˆÎ¨?Št†?ŒŽŸ?Z?‘.]?’øŸ?•fs?—F?šÓó?šy˜?–©;?™WÏ?9p?Ÿ¯? :S?ž$??š,,?šàñ?ž?¡Ê—?¤¸ñ?¥¡Ñ?¢Â|?¡#)?¢Ïo?¡w§?Ÿ=?œŸ€?˜ -ï?–Õ?šìÃ?ž´ä?šèÃ?“?Œ·ï?’á?¡Ã?§ªi?¨¡?ª³?«7{?¨æL?¤Þþ? !r?œ±«?›“?”\?“‚,?—´?˜5X?›•3?›WÔ?’\ ?ñF?“r?š°N? ë;?œÊ?œÌt?¡Éj?›¯?Œäï?´–?™{ç?™ÿk?™}+?Ö*?›Í¢?œ„”?£dÅ?¤;§? ¿ç?žŠ?”&(?‰I1?ŠõÑ?˜¹y?›¤6?’(k?Œ=?“\?¡"?¥l§?›öî?†‰?fõ©?p?c»?”Dw?“ß?—Ë–?¢FÝ?¡?œÆv?”iµ?Ò¡?˜G£?y°?š )?—ÛK?•©«?‘M?ƒ??i+Ç?oäÁ?ƒ°…?Š³t?Œÿ½?ƒ9H?€#6?Šè??¨?Žkw?_^?ÌÀ?’ë?““R?–Ŷ?˜m~?–¨É?fr?‡m?ƒ\?xsä?o‰¢?„&‘?‘~á?–‘ï?”îÕ?‰aH?ƒMÐ?‹Ý~?“[J?“ÿß?”:c?•ò ?•fØ?2X?‰I?x‰¬?iÌÄ?s?Ïö?€À?ucc?wLM?~Us?Tt?†A?‡¦‡?~L#?e¯ ?gÁw?~: -?w?‘Æ0?ŠxÞ?ví/?h<í?m…ù?gÿF?p?þ?—`?‰Á•?Œ®â?†âÕ?xP?pÒþ?sX¢?b²'?J²?WB…?vêã?„ц?‹ÄÝ?…VV?ÜT?„nº?‚¶ù?…¬°?‰ðx?‰ ?‡)7?†á ?…®¨?€Tê?qù?v¹ž?€9Ü?‚³¿?‹º0?—4 ?™ºF?’ß0?‹ìƒ?‹´G?ˆR"?}NP?‚O?ŠF ?ˆ†I?†v ?ˆ»z?‰R¶?‘â½?›†­?—V?#.?‹HÇ?Œ„y?‹lÛ?Š -+?…€F?ŠC?)j?”?–ª?–‰W?—ˆ?›¡ž?›?4 ?ŸÉn?“úÏ?‡ø1?•C?—´o?œŽ5?›³Ä?’3?$m?“Êr?šN?¦?ž¯?ž@?–?¹?ŽÌã?ŽÞ½?†Øì?~ý&?ÿq?‚b‹?…¥?‹´?”­›?õ?ŸE@? Ó?¥ó?¦(?£ à? _@?˜Ñm?–r?šÀ¾?Ÿ<×?Ÿvî? ˜E?¢ %? äÒ?Ÿ\?˜"¾?ŒH}?‘­{?Ÿ÷£?£›’?—^?Žo?œ¦?§1É?¨øS?£á?,¯?ŸcM?œE?•¡2?—,?Ÿ±?¢Ã? ­?“í?’Ÿt?Ÿ™Þ?¥ñ -?¤ ?§íp?¢Þ¾?’+|?`\?™ß? nn?¢ŠÆ?ž¨È?—â>?¡ ?«Y?ªm‘?©I&?«^j?¢É²?‹õa?†"J?–cG?¡¤?ž`?žéª?¨©§?­¥G?¥0?•¨À?—½ ? ûÉ?¥›R?¥?Ÿ®é?¤?ŸaÚ?œÏ?ا?£”ã?£0â?›î{?NÓ?yÚ?›’U?¡ªU?¢ó?›÷?–8?ŽTO?t>«?\ 2?arÆ?r{Û?…G~?l?–‹õ?šÒ1?|?™±O?—v¤?µs?¡ú˜? ï¨?›Y¶?˜1?–á?š¿/?¢aL?¤Õ?¤‘ ?¡¥?™‚ù?›£?Ÿ>f?šdõ?˜¿d? «æ?¤"? ½â?¥ &?¨|Ÿ?¢î?&Î?˜—?”¬z?šef?ûÏ?šc?—›?’ÑK?ˆ³?– P?œÙ”?›#Û?€ t?T©ù?…¬?Ÿ:‡?¥m?Ÿ3?›Õ?”íæ?‹gý?w?Ÿy?¦Œw? ­?›$Z?¡<¤?¤¾„?¢}r?¥Ïû?©Dy?¥Š?–³ð?‹¬È?–hs?Ÿ^R?œt?ž/ì?§åü?©è?¢Û¦?œ? õ~?žÇ¶?­?œnˆ?œ\F?ŸPL?£Ü?£ y?Ÿâì?Ÿu·?¡'¨?œ§‰?•D-?•j¨?–ÇÉ?—Ôì?šGž?˜yö?—ýw?—¹á?–bˆ?” Ã?šv?¡ÓÞ?¦^}?§¿S?¥Ñ„?¢Š:?¢;¼?…¸?—CÜ?™_h?›»d?›@Õ?žC!?¡¥ä?£!*?¢FS?¢ð°?¡m¾?–³??Œ_°?¿?™ïè?žÛ^? J?žª9?œf¬?š$ ?œ~¼?žÜ£?Ÿ¦?Ÿ¨í?žò2? j+?¡j? I? JA?Ÿ»î? 9?î?æ?£ÖÌ?£¶?Ÿ}? ‚J?¦ "?¨ 3?¥^™?Ÿ?ž ?¢zv?¢I¶?£ïw?¦eG?¤ö,? ¦ª?—ûù?”´³?›gU?¢Wc?¥X?§—?¤ÿè?Ÿê[? I?š?—a?› ×?™.ƒ?Öv?–WÖ?¥ +?ª(¡?©¾ó?§‹Q?¥Ø§?¡š?ŸÚ€?žç¾?¢Ué?§S:?¤'??›³¹?œ–]?¤ƒ/?¤Ð?§Þ—?­v_?­­¾?«?¸?²©…?¢¤¡?˜$é?ŸEú?©ÙÉ?¦¦M? ?œà?ž¾ð?›K-?¢°?÷?›ûÙ?§÷9?©¢Í?¨?¦ª,?©¤o?­Ç?­3?¢6?•o{?•JÏ?”ªê?“Na?•!?–Ú×?–ÉŒ?˜?™¤E?œÿ?›¥?“wË?•R;?›Nð?—u©?•›B?,Ÿ?!¼?˜^?œGì?›ÙO?™ 5?–¡b?•§›?•î¨?‘Æ?œ»?Ž·?ƒf:?„̯?‘ÕD?—ˆš?—/§?’¯Ð?‘m,?™´]?šT¶?™@û?– ¢?‹à@?Šià?’8?—ä?‘’‰?–<…?œ‹â?—³`?˜†?˜Â$?âœ?”{E?žX.?œá?fõ?¢3±?B}?–©É?š`¡?•#^?Š¡…?•«Y?ž³Û?•µ€?…dž?ƒÔ?~Ð?“Ï5?”æ£?™Ó¥?—âc?—Ū?•…?—Íý?žüf?– ¨?‡µŸ?ŽW?œŸ›?™„ä?’*©?•N ?µv?Ÿb?˜÷[?”Û?——n?¡;~?ž€}?™?¡©?¤wr?£"a?›Î¢?•Jù?˜¬å?œ”_?¡!?˜å?•Õ_?¡'a?¢I.?˜›î?’ðG?’éº?—®Ÿ?ž Ë?—z¼?‹à:?Ž#h?—U?˜Lï?Z…?Ÿ•ø?›/?—M?š7?Ÿ¬y?œ 4?–ì±?“Ê*?ëi?ïÛ?–Åí?•Âù?ÙŒ?‡À…?‡zM?“äð?žF?›Öþ?“Ç?“$?–G?˜E_?–ŠQ?Žé„?‘¤ë?‘ܪ?’nL?—•J?”§?ï÷?’W}?–Ñ -?–õ(?‘?ŒÖA?”·¦?•B?’cð?‘üè?–PÅ?œ*2?› ?šÁ“?Ÿ%%?™2?‘42?—Y§?›5ƒ?—t?“o°?’Äö?ˆá>?ƒ«õ?“b?š}î?·?‰ -õ?’õC?˜jp?˜Ï²?›? Ôk? kÈ?žmï?ŸÊ??£Ì»?ŸJ^?–ÁQ?”ò?’ ÷?“YÐ?Ž4>?±Å?“«…?™h²?®K?šò?“*2?‘qh?œÉÜ?¢nþ?•?™ÈÒ?“­t?•Öè?—Å?Œ¼‘?‹ÿZ?$%?–Yž?‘Õ?Œ:J?—ó? †ß?Ÿœi?–¯{?‘?±?™äâ? )?Ö­?˜…b?. ?“€ú?˜À.?–¡?˜d?›I?œ¯3?ŸG˜?¡/5?K„?™Ñå?™2å?Žß?Œ÷¨?šú/?£à? }/?˜‘?•uò?–èÏ?–÷*?šâÁ?œ/Y?›U«?•ÅJ?‘¡7?™Èq? çõ?œã¬?–¾Í?•õ?Ž‚3?Œ¡R?›¦Õ?Ÿ¸±?ŸÝ¹?¢h? xX?œÂ0?ü?zÄ?•kN?š¥ž?Ÿ×? Ïç?£¾¨?¥9? …I?™­?šÒ‹?ž³Ý?¢.°? Ré?¨?œ°?¡)?¤/Ð? >?œ?ŸÀ™?¤Œ­?¡ýb?ŸWÎ?£Ú?£5ð? þ…?œ•G?¥T?¤â? ª?žÛù? ®?Ÿ¢º? ñÿ?ž“P?žÝ>?£É(? ·"?žLË?¢ç7?¢ÉÓ? ~n?œÇq?—î?šK&?Ÿ}ž? fà?t?ž—;?Ÿ1q?£õ?¥?º?¤O]?¡–?¡â/?¢ -°? Gs? B?œ¤U?¡)? Ð?–ïj?‘Hú?;?•l®? Ÿ€?¤€1?¥Q±?¥ö?¤F³?¦ ¡?¥¶!?¥•?£ºY? ÙÂ?¡Ïñ?§c–?¨:µ?¤|2?£Å?£ìü?¤¬¨?¡Õ?šã?šGà?–{?æO?”?’Äz?†›ê?•n#?ŸiT? ûû?¢²ù?¡þ¼?¤ë?¦,€?¤]‘?¢ ö?£‰³?¤.?¦[Ø?¦S”?¤yR?¤V¢?¥G?¤šî?¡ ä?šY¸?ší¾?£>>?¥P¦?¥.?¤¤$?Ÿ^;?˜ï?—€Ä?•fi?Œ§?¡´¥?¡0Š?Ÿˆï?˜[Ž?•‡ ?™ ?Úº?¢„è?£.F?¢V?£Ì}?¢–O?žÒ˜? û5?ŸLÌ?S?•X?Ý?“IÞ?pÒ?£ ý?¦|¨?§VÉ?¤ó÷?¥~^?¨?¥¿ ?¢›5?¡~:?£?£4é?¢¤ø?¥%3?¦™ø?¥‡s? ¨?£À?¦ÚÒ?¤Åà?ž4 ?™œo?¢Yú?§ ²?¦z ?¢áÏ? A?¡71?§¡?©L¨?¦ŒÍ?¡œ?¢?£ï…?©hð?«&r?©´?©4?§qÿ?¨óm?«ju?©ÿ,?¦òh?¦Šö? ?2¨?„p?zÅ~?pš>?zô?mÈ ?_7|?x4ƒ?kí\?eÕ?tµé?x?nÿ?€?{åH?vi?n×à?eâ¤?së?{‹„?w¤?{øi?~6??zC?aÐs?mË ?ƒu®?i#?}]¸?ƒ›Å?­u?nÛ?ã€?v‘`?X#?q7b?_QŒ?[ã?ys ?†—‡?§?nÝ ?yF?€z,?~9?U¯?€+Á?(O?yT?g9?yØX?yp?xÙC?|×=?sr?wùQ?_Íz?oºb?‡ÿŽ?†ÃØ?q›?Lê?j,Ô>¿šÃ?!ßý?H04?Yp¹?qA?÷u?{ -?{^?„º -?‚ÞP?ƒß?ƒ‡?ƒ/P?‚6¶?‚ÅP?‚ß ?ê?‚²?‡SS?†ŒL?{%?ƒ(È?‡×:?†ÔC?…'u?„v£?‡ø³?†/?‚­&?‰…?ˆJG?…f?†µØ?‡Æù?€W?tI|?‚ºl?†‹¯?†§u?…ì?~üÚ?‡¥m?Œ%º?Šªê?Š?‡ïQ?‡¥ä?Š?Í?v? ?†ÝB?‡7 -?Š :?ƒÕm?)Î?„)»?½V?~,Ó?jY–?3*‹>Ö%«? åä?V/;?u-‡?‚Ó?‚¶?q.$?oµ?‡)`?„:?€Ûæ?‚P3?‰\µ?i¾s?hA ?ƒgo?‰ ?Œ’Ò?ˆ â?ƒlz?…A*?†Ó-?ŒƒJ?‹Š+?‡›µ?„ò¡?…åZ?·5?‹Ö ?Œ1ß?ŽÐØ?·?‹õS?ˆ?„îA?‹²-?‰ký?„rV?ŠïÚ?‹Ö9?‰–?Œç—?‹©?ŒCã?¯+?Œà?c?w?Š9o?ˆÓZ?ˆøÕ?Šõ+?…J?nð?‰^æ?tÜÄ?YΕ?zdŸ?ŒðN?l?ŽnD?Žï>?Š¬´?‡J[?}F;?t–è?‹+š?q?å«?nö?‰À0?‚3r?{?‡ƒ—?Š½+?Œžo?‹œ³?¶Ã?ŽÀî?àÍ?ŽÀí?‰?‹po?ƒÛò?~D?_ƒ?Òs?ƒ%Ô?„§?†`[?‰Bw?ƒp·?‚ì=?‰½3?‹¦Ï?‰÷9?†ÈŽ?‡ÿZ?ˆ?‰jÿ?‰ù­?‰{S?‡¢5?„¡‰?†Å>?‹ ¿?Šý -?‰sî?ˆóL?‰æ?ŠGé?†š-?´?‡„^?…b?˜'?g§!?mø"?…r?‡¡}?‡¤§?ƒ/%?„Ü?†kg?£Ç?y­ø?k.?€æÈ?¼]?[?qÎN?z§Á?…¸?†¤ã?ˆÏ?ˆr?‡ƒ6?‡Zc?ˆì?†¸?Ô?b´@?fsï?l9õ?dçJ?wÅ'?›?|L?wQ?wع?{CÈ?} -Ö?tc?umK?\ßj?S–”?QІ?Yr ?lhž?q°a?pi?q¬Ø?{‹K?t(ƒ?db`?hL§?jKü?qoG?e»$?f:?f ½?d¬7?kÓå?f²?U‰×?e ?q  ?h­~?dÛ?•Õ?wÉ$?eû ?‰¶?q:Ò?isá?weÅ?s–S?ƒâ?KÖ?s—«?€Ô?wf€?#½?€-L?nU(?uëò?o{D?t`!?}B?kQi?]?boŽ?hu®?{Kå?|~?sJ­?tB?h«j?uÈ=?}z#?qYN?fBW?i!²?iB?l¼?iÖ.?jH‹?m¬?lgM?nª -?q¬ó?nÖå?^ b?c:T?cÐ;?Tm@?Só{?e&?cÉu?gx?nöT?kÓ?x ?tÑL?_¸?gž6?k.Í?^žÓ?h–Ì?kçî?`z2?U+5?cL?hØÞ?`!L?]d–?k¾{?sÂf?gõî?_’O?tY+?m¨²?aÅ#?lÄk?lQÀ?jÁ?k‘¡?m{?lJp?[7@?qÊš?aèL?{I?€ë^?ui?Wm ?Yàt?s=?nÇä?m¨b?o;A?y´?u¡?p.a?t”˜?sÔ²?`ð0?`ËE?fîµ?r+,?sB?j…+?p‡&?tØ?t.Ø?x$?€žá?€º¤?uît?a9E?`»‚?wÚô?p\›?f—h?q~ ?~Í_?}„)?s@ÿ?r=;?rµg?p ?e8?h?~Û;?MY?k1½?bX_?[ë ?q+#?u‡°?l+?Z¦Ï?jêŠ?pÔ†?l@;?k´ì?l‡|?h®„?føç?gÈ#?l•?oç?kÙ?e.O?QFS?j­G?sÙj?wø?uÛg?hk¥?[r?f¹E?h‡>?o e?uD?s]?iÿã?_ˆ’?^¨Ç?v5Œ?yÅ­?w€?i_F?eÅš?n]ã?n¹?sæ?`hh?_&Î?pòN?m7“?gÂ?_/ò?o؉?f`??^•å?]Ø4?sº?{ð ?syÈ?s~?s—?nxI?f\#?j:n?s|©?\Èy?`OÅ?z'×?}’Ý?q¦Û?e›V?Tõ?]b?S“‹?h«?s,?t£K?q3è?n:M?q&‰?v~$?sH?nlO?s‚!?x+Õ?vô?tB ?z 0?qG¥?no|?lF]?v`P?tÚ¬?_3Ù?mÊN?|#”?x‚`?w`R?u‘?w;^?rv7?nÑ@?wÒ?z s?{}S?u,?h#¯?rq?zãˆ?|àp?tap?n3“?{7¯?~ÕÒ?r3?t¥Ô?zz?pY ?f2t?qWæ?}Ÿ)?w0?iD–?gÞÓ?m®?l¶?ue˜?qí?c/{?dóh?rËñ?{©õ?qµ?dA%?hü!?lÂ…?e\?mB?w›¼?{tÃ?s°)?k‡q?mË?pÄq?h¼o?pÕ¿?tÈú?oÌ¿?uʨ?vnA?tê?p·e?uyÔ?t‘î?r5—?n`K?màU?t~U?tzL?sÏŽ?oñ]?oÆ‹?xb?nò;?mK?m„É?oíª?kC•?nm?siž?j©Z?jý·?v•?z=/?vö?pøü?ul?vó?r ë?o†~?ki?iPÉ?eüñ?phµ?v43?{È?sú]?ià?nˆ ?wŸ?jNB?\#ê?g2N?q-„?mÁÉ?s.˜?tKF?w”8?xAq?q£¼?jlŒ?h%b?iÂÁ?bÚ?l´?t\?s˜0?vê4?z&ñ?}uï?x²í?kÆQ?j)?w÷?qŠÏ?d%.?m—?u_Y?noh?so`?xZD?u y?uÛ6?y%^?t4Ì?nÿ¦?uRÜ?s¦:?h~?e-ñ?r2+?u\?o¬¿?dTp?oò?ymÀ?qî¢?m&?kµ?m;Û?m?q’?zÜ?tô×?sˆ?pÆ?lºT?o5?v7c?k½¹?c1 ?m®†?tÓt?q|é?k ò?p_™?qìŽ?u¾?r©M?eùØ?d’?rò”?w“`?r¼Î?rá¾?x ¶?p«÷?nfŸ?tãó?w,?uƒÀ?q`‚?r[¬?uIk?sc˜?víš?wË‹?nÅÀ?mOÕ?o—“?h€H?pÔ?u*9?q×?s†A?wïx?u¢?r1³?sÃ;?rVS?di?pú@?wë×?q¿O?lY?o}?p¸?pÃG?oÁå?tnè?s#j?sÞ?q%?sq7?pÓ£?m\?a=“?]t5?bEæ?pyÛ?pq»?jƒ?b³–?`*8?jŒ?mÝÏ?r¼ú?oûO?nJ?r7Œ?uK½?rw -?múÆ?qá?i®?h0¬?s²ê?f¬Þ?a‡?q¼¹?s(™?s7?lëc?d†K?ekd?O¯?e7O?nrV?q0?nF7?q!?sÿ»?r­¤?mû?oíB?qq??`)q?cQJ?l«A?r H?pùµ?khe?n°B?o,¡?rMí?suk?pô -?r µ?uS®?rTƒ?l f?ižñ?jòs?qÓ¾?q<ý?gš´?e@›?rtw?q¡‚?pA?s?s|ã?jè:?mwz?se¹?p‹N?dXæ?d¾?pÇÓ?oÑ??Ä"?HãR?Aq??cÕ?R`?LKË?=˜¸?Og?Néš?]¹?E5Ó?I—H?:Á¸?Sl;?\ñÊ?XO¸?Z*§?QB?EUL?BÇq?Vó+?Wïœ?SkÍ?Pƒ¶?J2*?@òÈ?@9¿?PPè?X@¶?Tù®?T¶Ä?D¢Ö?@lî?Fñù?Tpì?T4?S"5?Zë?Lb?;6Æ?:ƒ·?R/?L‘?QÃ?Z”?RÏ9?FÌ„?@»>?@ü?R §?Xâ?U‰Ï?Yw?LÐÿ?IDG?4ÀA?Dr?N_£?CB?NÝ­?QWq?GZj?;z?DÈ?Iñ?P$–?O;•?I?Q8ù?R™ë?J^Ç?HsA?PýÕ?O1†?F'a?PÛ,?P¾ ?V¨?N[-?@{j?<èq?K<"?VÍ/?QÍ?O›¾?VTn?W?Cw:?LªD?Tãê?UÕÔ?X¹æ?Kî?Fúš?Yê?QpK?IÆZ?HÐ?H+‘?Vò?Uú9?K?6?TŠ¨?Wr¿?JÏV?H*©?V3å?Pd#?T„?R —?I”˜?RX?PkÚ?Ii³?G"K?UŒm?Soù?Tˆ¹?PJT?J×?XÀ?Zïø?O–v?I-?L ¦?Q¥±?Q+?U¶ä?JÁ]?V“?X?P- ?I¦¨?OŒ‘?V@G?SS?Qž?CÑä?4Š?HS«?X—·?Nïb?Nr?C®²?3U,?6dÆ?LÎV?Lì?SÃ?X§?Tà?Jì?GÕŒ?Oào?Qö\?:ÿÄ?Eæ!?O"?R$w?P‰ä?PoR?M~6?Nªq?Rˆº?Tg?Q¬é?FÃÊ?JaÚ?R?UÙÓ?SÏN?HìŸ?L@µ?Pë?9 ¢?By÷?J[?PÚB?Q”C?T©h?T¥â?L¤ú?LWH?N??S“?RNÒ?N©{?HéV?Q®?R"¿?S'5?N1Æ?MÉj?N„(?U)"?Siÿ?NÔT?Ká…?K7Ø?P.?RÍÅ?U è?Oû¼?L•R?Cù°?E÷©?OOz?KAú?6~z?9=Ñ?QTg?RZ?Rúj?K¢]?Fl×?J×I?Q…×?RÁ‚?O*§?Cœ­?KË¥?R@Î?NTT?OÃG?Kf™?.¥ ?;Òä?R¸È?TÔ«?LÛÝ?DÁ¨?IåÀ?R‡ê?P§ ?Q4¿?Q³?J*?Jéw?Kên?Q°)?Sà4?Mèz?DûÒ?JSÖ?O -ß?/v9?)¿~?K‹?C¾?=ƹ?J¼?Q§÷?Q˜s?J>D?KÈ-?Lç?Peõ?OÐ?Q?Ð?K^ ?K’y?HŽ?MJJ?Rj?OÊO?GËú?KE?IÇË?P)?G¡1:³„ú:æ™â;”Ø;;22;jþ¹;ŠƒÏ;‘S;‡^ ;mèá;U¥¡;DË;)šk;‘û:±ªW:Ô§:€áš:¸ä;.8;QØ;†ÚÄ;™—;›º“;‘7D;‚•²;gÝ;KZE;;Ç;Qµ(;ŒÙ[;Àù-;ñÊ<æ< ;û‘©;áœÍ;ÍP‡;¾3i;¯,Í;¥?;«v;¿ö©;ѳç;ÔJq;ˤ;À=;±Úá;žH];Š M;€Ë±;Òº;µ¡m;ïèí<ž›<¬#<«·<&¤;ë­;ÚB;Éæc;°¢i;‘O;o³_;c4@;†‚·;±³p;à`Ý;ý9<ñ´;ö³;åÞ>;Ì|x;£Æf;eHÐ;ù~;jb;:#a;˜²‹;åæ0<¬ -<*äª<4~a<=ç‰Í=C\=Fö–=H—r=HÞ8=E§=;Eé=0CW=++3=*˜¾=$ò]=€b=®è<üY=öŽ= -ãŠ=Ý=ƒ@="#“='ùL=&­]=Î4= Ö¿<ð@÷<Ó_¾<Ð'¸<å«}=(:= -C = bÀ=€ÿ<ü§#<æþ<βô<Â:<Ó.H<ü­‹=—&=o¦= ½a=$l=VÀ=/=8™=jD= yG=(/=&Ô=—b=Îæ=^Ó<þ>=ñ–=.p="ê="o¢=ó…=Ä`<òìˆ<ç€<í6¨<þ[= …%=k =ã = õ<ô-)<Æüƒ<Ÿ¦ì<•Ì†<´)“<êïü= ÁÜ=H‰=êm=à=™=,ëb=4m?=,‚=hR<í4¹<²Ï<Š¬E<‚Ý3<£ô?<áÂ= å=ÁP= þî<úô„<ä4<Ô2u<¼\Ø<›YÞ<‰=;‚=2îP=(=8=6{=r'=µ¯=$‹6=$í=Œ=F'=l`<ù±x<ºZ.<}É<:A<<šÈ<|¹Û<±Ëu<ò>Ü= 3=I¬ê=j£ =zm=w¶å=c*=CgÊ=*Û)=' Ñ=.Ui=/Ù=+'†=3Å=O -j=nx=|N¡=m†«=H=àW<÷<ç–°=ëÜ=G=•É=ñÂ<ôè8<ÀŠˆ<ŠYZ<<<AÌ<t <+„BÏ=#9ú=HLð=epr=aJj=<†„=/s<èMÝ<äh-<ô*Û<úO<û¼*=!Q=¾w=¶=®<ôÜ—=ü=!ÑT=E´˜=]Ë=d‘=]Ræ=F?v=$(=m¶<ÎéÁ<¥Q -<Œü<•{½<ÌŠ=6Q=<=\/®=q¥7=zyö=nèû=P*ï=3¬¦=3@j=TA=ƒ‚‚=—â(=›'r=‰¤ÿ=Up÷=Á(<ÙW<¸µ¬<º‚<Ðv.<ö[Ñ= ôê=q=ň= ‹w=á¬==¦š=aÄ_=w)=‚.Ô=5P=¿ö=ª,¯=§(‚=•”t=‚ûÅ=u;=vJ>=tÁ=b‰=F¶=2Ö3=*n>=üÿ= ˆz<ø¥!=K=Þ=FHŒ=mÚI=€€=x¬Œ=\]Ä=;VŸ=!ø=¿]=…|<æ¯<ÐÿÏ<Ò9<ï·=[=2˜6=MÍ>=]A#=b<Ç=aQ±=^”?=`~L=l®¯=~Ï=†\=ˆ'5=‡˜$=‡Æ=‹8­=>K=‘¼Ó=Žo*=Šzì=‰{U=‹˜¶=Ž[=Œü¡=‡–û=¼.=oû‹=e]ª=c¥\=eêt=cÑß=[ç=O=Eh=Efª=RË—=f=q<=nà=b„º=X¬ø=VI==YM =^¦P=fM=i€;=] =?cÉ=@×= ¾×= ’ù=²K=a=„8<ÿ!U=”t= _Æ=É=&)=*I=&Aá=Š½=øÌ= -r'=äë<÷=R<ì«8<å…ñ<휠=d= ý=b¯<숥<Óu <Ð% <Ûx<ê>=hF=¾¤=+fô=9Sf=4Þð='ÍA=$J=3 r=NûM=k’=€;°=ˆX“=ôg=“Q=Œ**=yÞB=[K=EóÆ=7{6=-á*=.ý=5í&=6Û=( "=¿?= -FS=ß=þ‹=,–¬=8f,=L ß=d3=rnm=j@g=LœS='Ôþ=ym=„œ=;&°=d-=Òž=‡›Ü=‰Þ=’yÚ=¥|©=µ«Ô=¸^ñ=®Ç±=œÉ)=‚šº=K“á=&:î=!!\=.—ã==Š=JL=\rñ=vÚ=‹(ý=œ’Y=ª«=®g+=©ŒJ=Ÿwý=•t=Ù“=„ê=q±7=Zå“=H˜ =6f=(ôç=+S==?[1=[ýb=wù{=ˆ-K=’Q=™„"=Ÿ’=¦Ãâ=°´‡=»ç_=ÃÌQ=ü®=½Â=µd=®}Þ=¦U=¡(§=¦Q"=±“N=¶#¬=¯t= ¥J=Žq,=~íà=|äJ=ÔÜ=£71=±a=³ê1=²òK=²?A=­§=¡€·=”æ‘=‰‹ì=€9Ä=~Ä~=‰ŠÒ=•Øï=›­­=˜±ç=Œ8=rN¥=MÁT=7ª=8öW=Vµº=†¯T=¦ÒÏ=½\=¼"É=¨Œæ=•F=Ž³C=”Ùh=¡S=°‡=À´ê=ÎZ>=ÐöR=ÇëÕ=ºè=©o<=’¢=ll=AkŠ=3bJ=7L=7ä"=4Ìx=?ñ©=f•R=úQ=«”‰=¿o‚=ÉP^=Ç}±=ºé9=ª=˜þï=„xd=U£¶=&+“= ž= -¦Ì="=>à%=eü=‚‘G=‰‹¶=„=lâ€=\|7=_Ò.=b=T‹u=†=Fi=^œ=o¼=jÑû=U¹‘=BÉö=Ei—=Zèc=h½·=fÂ=k^}=ƒò‹==†=]Å=CèZ=O-õ=i¥v=‚‚=”¥È=­‘”=ÃyV=Ç·=¸À"=¤vÇ=šï=žN= wØ=™?%=‘˜=–T=¦ú#=±:#=¯]q=«/=£Šm=”Ÿ=Šlâ=’9Â=¨ƒÂ=¿OO=Ì+=Ìã:=Åéž=½r=·±8=µ &=­¼d=¡‡ =˜Î§=“‘­=Š=xñ,=eï =bÁÜ=iX>=sÇ*=zB«=u3g=dÊô=JäD=,Ï =Vy<ù† <Ú6Ÿ<ÏÓL<ÛÛ‘<ñŽ<û94<ôµ<ö9~= "V= þ=8©=Gœ=MÓ¸=R=W¿…=\…F=lk?=‡Ú=•±©=–þ5=‘V=“ùC= àÉ=¬ùa=®üë=¯‘4=»Ý[=Ê =Æ&Ü=³6=¦'’=¦t=ª;=£7j=lj=m =SVˆ=F«í=8e2=# = Q<ýU=âŸ= ìO=¦r="we=/Àx=DlB=aÚh=ƒBF=•rm=¤uq=²‚=ŠÊ=Ó4¹=ÝÑË=Û&=ÑyÆ=Ðæk=Þ®/=õó÷>_´>Ó^>??>TY> µ>D >Wé> -w}>â> ·> [Á>)a=þ§í=ÿ‰û> -¹Æ>ž.>0\&>8º…>:Hî>5Jd>&e>,>ù®>U¾>wl>)º >-«>,±V>)¥z>+ªu>4rý>>¦!>H!…>M|ñ>Jh>EB>FF>FDU>>K‘>2Šè>)7µ>"|´>!H>, Î>>®Ü>OíX>Z[>S<>3Ú…>ŒÍ=ñ‡Æ=ãá±=ê >­±>#u¤>C\Ù>WRn>YI]>NÉ&>A2S>8ZÂ>5±¼>.‹>cê=õi0=Ö;‡=ï>ü >2ù>C J>L<>P.>LÚS>A²>1ý¤>%Ó>!×>$ý>\>æ>(%)>0)A>'Y> ‡¨=ð¦ú=ù$p>²> a>"(g>*g:>9²ƒ>:èù>&ÐW>™š><>/(>/9ø>Âw=õÞâ=Üë=òûÎ>‡R>4zY>HÀ>I‘Ö>AÄ>=dí><%Ì>=yZ>KiÑ>c>R>tQ>u2‡>nx©>gÓó>d3>e‰ö>_s>LR>;hi>8‰>9mî>2"É>¼À> AI> -oº>rL>4˜>HºY>Z >bøŸ>]Ä>Mú®>.h6>(,>*,>2Ô>;½>@ÖG>BÏ«>>‚S>1_>$@Õ>!Ľ>#Ö>"1W>#åŸ>."0>=ŒŠ>EÊú>AÀ >7]G>-Oò>%|½>-s>\‘>E&>¸>wu>'Ûã>7O ><¹ê>=·5>>eØ>;Í >3Ï>Ð>¼=ñ–>ªJ>#<>28ž>1{ó>'\ÿ>2º>Ð ->‘¾>ÁO>|;>wÝ>Fó>ìê>(ú×>8¨§>D}>FsO>GF…>MÌñ>R,ü>J-t>=öÛ>8TG>6`>5C>9"‘>>—>< “>)T¯>•s>îÎ>4>„w>Ñ >æñ>#[>$æL>*ðñ>)rò>)b•>4“á>Gô >U¼>OÉý><ÿß>5ƒä><¤>>è>:>ö}>N1>U>HâZ>2k.>!÷>À•>˜>§÷>û/>¡R>AX> »>$@ß>*Öà>7Š>Gàõ>V•°>\(>[?A>\>>[8§>MÕš>5 R>#m>2¿>c­²>ˆÑ´>’¾ ->“m×>‰(>ƒú‘>`~2>6W}>T&=Ñò—=«Ž2=͈†>Dj>IÉ>pòs>z¸Ë>aU*>Gô>Eåù>Nˆ>SÁž>YmC>_£·>eÁ—>p4>€å > í>ñ=>« Ì>¨`>–Ùð>†3>}5M>qÜ¡>\œb>O®>W ‚>[¿ð>NûN>JSc>a4>}k>~ƒþ>i²´>X˜š>]]Ò>}ºS>”×|>¥ÐP>¯pw>²Þ>«š>›Ÿ>‰þl>lÞv>>ðñ>I>ÛB>/NA>>;>ZYt>ƒ¥z>—ïm>Ÿq>–u:>‡ƒL>ö>€\Ù>ƒdÛ>ƒR©>T>zë#>sºÀ>Z>4GÐ>![‰>2õ:>Y>Y>r‚>w8Ú>}0|>‚—Q>{þ}>Zo>1M_> a>*±Ô>9ë¶>F5V>Mœ>BFâ>*{¸>¶º>H>%¾b>UF®>„u>’°>6ó>ŒpÄ>œÈ >À!é>Ù5’>Ùh$>ËÚ>º ‡>®2ê>ª]¹>¡ß>ˆÉK>X]>Nm>†û>´?>Éñã>Ã`>»m^>Âné>ÏÚU>ÞƒÜ>èR±>Ùz>®'È>‡±Ì>j•>]ÿ§>y¬,>º¥>µÙ>»>¿’Ý>Á¢>ÂÏ>Ò;‡>ãÎ>Ôn>¬p×>—uF>¤õ>»ZÜ>Ï¢>â_ó>爇>Ó›»>¹©>´Ó>ÅA^>Ú>éòß>÷wý>ýç(>ðl+>Ò«Ü>¼!›>¼úø>ÉÁŒ>ÑfJ>˪!>´‹>˜am>¬œ>¦‡»>Ë/+>ßVW>Ù%[>Å­=>¬ºè>ˆ£ð>Emf>,(>Z" >$¢> mF> ]£>›„ó>™ç->¡#>­„¾>±»>­iç>µ&K>Ï´>á¶W>×ÿ÷>¿5>°ué>»aw>Æ©>¬=Â>‚C>có->rÕ†>ã>Š~â>§â´>Éï­>Üð?>ÝQ>Ç[Ë>¤ÿ¤>•>·> ³’>·!>ËÕ“>Ó·>ÉX>·Ž¯>±wÔ>½fƒ>Ëìü>ÎÕ˜>Êù>ÇSA>í>ºÃ">»[>Äð->¿vÚ>§û‰>–>ŸË[>ÁÄ\>äõj>õªE>è2>ÅÙ½>¦½É>Ÿ’>²„ >ÑÁê>å6ù>ì6š>ï­€>æÙî>Út:>Ú‚>Ø+»>ÇÑ>²Åc>¦ð,>¨\,>ª‹>¥·»>Ÿ>˜xê>—k©>«':>Ç–>ͳ›>Åì>Á9>¾8>¹Äe>»&É>Åî|>ÚÝú>öKù?ôÁ?.Ô? -± ?8b?¦@>ÿœ>Ü”>ÉóI>Ðlç>ëý?Ô·?Ì}?dc?›J>ëÃ>ÑG¿>Õë©>황>÷d>ä‰>Èè>»çÆ>È”>ç!?³?‘Ô?ðÓ?ºÆ? -†?*Y‡?)ƒö?T?¿²?¢Þ?¦?ùÁ?¥Í? ] ?*ý>þw-?Ý?Ÿ?±ž?e? Îp?…?þ~? L¦>ü¹˜>ñâ‘>ß >ÈB§>¹xé>¹qÊ>Ãõê>ÓA>âs/>áo'>Ï6Á>ÊŠ¦>éòˆ? -?¥á?šê>ê¡>ç v>øòS?¤>ù¼>óÅ=>ügé?©>úOŽ>ø¥ ?jG>û¡Ó>æ;X>ÔÌe>Ø¿m>÷?‡§?Ä­?¹K??Ü? Ÿ0>üP>íWò>ø Ô? :Þ?…ñ?Ò\?áï?þË?Èj? ?ã?—,?o)? ‡¸?üž>óÕ>ì4:>ûÿ ?ù?¶¿?Pc?l§? 0Ü?ü?Lù88>ö->üê?³?L??¦?|ú?h?)ù?üB>ý‘>þnF? Åò?%Þ7?8tÍ?8h?,Àº?!jO?½·? ™u?'2A?,F?0›©?.yì?'Ø·?)¯â?.ôˆ?/ Ø?-Wß?)P"?$–;?#Ô¸?"Åv? nO?&¨?0Õ÷?-Nÿ? *?©N?tÊ?Zß?ÿ? |æ?¡œ? †$?+?Îj?ˆu?6ó>ì[$>ãüG>õw?ž?nÉ?ˤ?Q¯?mŸ? Tÿ?°ª?  J?#0‹?8,?>]?2ý_?!3à?ªÏ?;H? Ø>õ>Ü>I>ænû?ªÕ?Áš?¦?Ó\?n?L?&ßÁ?*4~?%•? Þó?·&?Ï!?-ï?ÿ?Ùc?Óå?¿Ó?"*¤?y´?Ï? 7¦?FE?!")?$g?&Ÿ ?$žn?"»?'á¸?'m?Ù0?Â’? -B‹? Â?ÕÒ?ð”?y-?m? Cþ? âÝ?ö?P?Ä9?!1Þ?*Â;?/#M?$á©?Œ?áÆ? üÎ?"á?"ÕÊ?%cÎ?"~F?,?cm?¢?8X?"ÉQ?&Þš?&ŸŒ?+„M?+ˆz?$Úµ?$!Ÿ?%ž?êè?‹?@¼?]š?˜b?UÙ?Ü¢?"Qñ?$c÷?&–?#Óä?£`?¨j?³‘?q?f7? Dd?(óÊ?.^O?)?¸?:b?ú?h?Mé?™¤?%?43?2åU?*‹+?.ŸÂ?5º‰?0L¡?+‚÷?3ÿ`?7´?/‚W?'Z?#&?(”Ê?7Qƒ?@üo?@h?Fb“?Bä?$ò¯?ìC?f.?,æë?-"Ò?)îÔ?/¥?6úË?2h¹?(Ýþ?* >?7 5?>Øh?;œ›?2<+?)Š?$wˆ? †?‘?(O?88?5ã~?%R? ‡+?,Ü¢?6©t?:¹ã?@ªœ?A?8?/o-?/”(?5(?6PB?:  ?DÍ5?KH?F¢½?<`O?5ÿ¬?9Ž·?=%(?8zî?1«?+2?#m\?!¦y?'Ã~?*(2?* ß?/µ?1·ã?)9 ?$eù?/B?< •?@ '?A?9•£?,°=?-dì?6»?4+x?'0x?i? ˜¨?$&«?Zp?Ÿª?%”7?'ðI?%Ôÿ?#k?¦A?\?¼Æ?$÷-?$Tn?& ‹?/Á¹?;Ox??ã?4Fô?+~?/ëÜ?0¿?#zå?«ú?ê0?é»?¯O?Øù?òÖ?2W ?Ir?Wú¶?^jÈ?_óÊ?V¦0?E@­?>'-?=Ðö?8^Ó?9‡ª?Ež¹?I?>W?3’·?.~v?/“e?3¬›?5%8?+8 ?$Z?Ä¡?P@?Û‹?!S£?*ß?/&¦?6E?9ú“?6xý?0#?1q?6ðL?;í—?AÀ´?D ??‹?3©?+æø?,gg?/Jü?.ä,?'—?nc?%é?5Þ¯?8{|?.,„?$!Œ?â?‡ -?&lB?/Îi?,´ ?&‹P?'5…?%í‰?#:?,†?9Z?<à¡?6„µ?2>·?8t?>T¤?Dü?N¬,?O?AXõ?3)?.Þ -?'qC? ? -w?³ß?+«?Dl?Vs³?X0ð?Cà?,6?#î(?&|î?/Îh?C é?S ?&z`?½ø?@?!%y?#6?$æ8?'?+fÄ?0®ç?3ö~?4ë3?8œæ?=þ+?9œ!?-r½?$?1?·Š?±Æ?+‡Þ?1&ÿ?3…Þ?7щ?6²?.q¿?*ëþ?+qú?,N?.MÆ?1wÁ?:Çœ?AÎ??ë?=Ç ?9u@?3 ª?)h?ˆ¥? -Íò? »?—ò?tT?Ó†?È¢?#ç?2ÌC?9Ìó?:%Â?9E"?34?'ÈW?"š¸?,iì?.¤h?$ãÍ?'K?*v/?$Å?è2? ²N?"õ?!¡? àÝ?£^?"hè?-s›?:¼?=½u?6rg?/ð&?*4ä?Tx?<™?²¹>ô‹>ãÖu>þ?ÛP?X>ÜÝ>긒?:ú?/-¯?4ï¥?6…w?3æ?'ªm? ]“>×ë >ÜÜ?_??~Z?O Ý?UUÈ?P!4?4:?JC?%??-ßw?3y?=[-?Fä’?JAÀ?I1?Cñ½?3"Ð?Ü>þk·>ôâ»>üdÈ?+Ã?*tû?CU?Oªì?T•k?O¦Ü?E‰?D ‡?Né?XÁâ?[aÃ?SÕ@?A9 ?1Ÿ?*@€?.o¬?E È?Yž?X$h?F׋?:˜Ô?9¹?GèÃ?Zµ¼?UN?L´?ON?N¢K?MÚÞ?H¼â?;Q`?;¬þ??M»?0ô#?%¼-?+¤P?6s ?A”¸?F¤Ø?Z¬›?y ®?x=Í?c~W?UŃ?@Åg?-åz?%_u?"hÐ?'q?$??#7?( ?HL¼?gÀ?pœ‰?j¨?i!ì?fA%?fS?g¾ì?aÝä?Ußc?Z*Z?v™??x©Q?^ÀŽ?Xîo?lÌÁ?|rÞ?zH?lœZ?W§¦?F}Õ?F65?SN?^…4?gB?t?ÿ“?…[q?‚$?}*¾?€Ô?ƒ²?‚¶?€jT?€/Ù?~Y@?uJé?láÒ?jpÍ?l$?pñœ?r!§?g-š?Lµ?\é?_5Š?aJ?iµ??Œüª?Œ¶•?‡>œ?ˆ3•?Š€ ?€35?s1?ã¨?‡û?ƒw ?Y,?€ v?kǹ?cºa?€ÖS?…ÓY?] -£?Iñ?Iú?Eþ?e)Õ?ˆ£ä?‘´?T9?Î?¹?ƒÁ?z©—?n)Ù?dýg?w#f?’á? Lc?£„®?§uÃ?š1?„ø?l–p?o{c?z%8?(f?y2Î?t€F?cî°?N£â?PÙ¥?X,á?Gy\?H5¼?X¸ë?dh?wíÕ?‚yÛ?sV?kr]?„ãf?ÚK?õ“?~.m?‡tÓ?‰«f?†¨"?‚é6?}`ë?{«æ?q¢*?h4P?pÀ6?|Í?ƒª?! ?i É?k¨{?†XE?†fð?o`¤?a+á?bt2?[\°?eA7?ñâ?‘)?Ÿ~?œ¦{?Åû?‡Za?„fÏ?mZ¬?U;i?bói?o<¹?€ìn?’£h?—`˜?…j»?op^?|òA?ˆçØ?„õÉ?p¢„?q¨7?›“?Š­I?‰j&?€#?te?uŒý?kØ?_ME?eŠ§?væ?€HB?}Q?qÜg?tÅ'?y§÷?u÷W?zßa?xâr?pZý?jÒñ?k9Æ?ƒQv?‹?‰••?…V?‡Ìp?Š@?ƒcC?1Ñ?‡YÒ?b_?’]?ÿˆ?Š[%?Š%ó?‡De?ƒ¸è?’pë?›kÐ?–ü+?’ï&?‹ÙÃ?ˆ2 ?Œý·?˜Q?ߦ?÷¿?Òg?y°~?|qÉ?†Á -?Œš?Ž›?‰‰l?‚GÏ?x4«?p{D?uÏÍ?os²?iâ¥?ƒÎì?Œó†?T ?‡ŠŠ?‚ ñ?…y?‹é?’Ïb?‘TG?„ëñ?y¿'?t-?ye–?†˜?^Ú?•’û?œ™?™¿?ƒ]?m¤`?`?`MÆ?yÛ?ˆÇÎ?‰Æ„?‚ZÐ?…F»?¨à?ké?~s?Ž˜?ˆ¤Ü?lï?gáŽ?ˆá?¢3?­åm? !ð?ŠX ?|,T?‹ºš?£èu?«Ö¥?¢Ý«?‹…?xÂ,?Š¦Ï?–³Ã?•Ü?˜A%?“§Y?‰™?xÈg?m?dÄ?Z0Õ?`5ù?tÛè?…#t?LM?³?—§Ñ?šÄL?’m?ˆÕ?€¸â?€Ïy?‰™²?“ÃÌ?˜d?™ƒ?—Øž? ä?ĉ?m>?ž"'?¬C?šü?˜¸#?šHä?ˆñ? ´…?¡û8? %Ú?ž]u?ŸÉ7?žÑ¹?›€æ?˜¹?”íû?“o?ˆ…?“%?•*¿?“ª?˜?˜\˜?––?›ð«?nR?™,Ñ?˜&?’ -€?ˆ_?†Z?s?–ô?@ô?ˆþÒ?Šè°?–?É?}?™tO?ˆŽH?f@?^?”~Š?–ØÞ?—Qx?—7}?›ù?“½½?…3z?ˆ&?c?•“Ü?—q²?¶H?Šóâ?‘’/?—/(?™[4?š…¶?œ/3?—~_?–?ŽÕc?Š*Ä?€Ñ=?€Ôk?€ƒƒ?‚Í?ˆwÙ?QÕ?˜«·?šû›?šÃ©? zN?¢€Û?Ÿ¿?ž–‘?™a²?•ïÏ?˜+?›¦p?œ\¨?l5? ‚? dÍ?žÍÂ?˜†.?‹¦©?ŒMB?šk«? ÷A?˜-?‹3{?•J?¡Ë?¤1‚?Ÿàø?˜÷?™ÿ?š.€?”÷—?•zà?š|¶?žôA?›ˆì?’»?Žž'?™œ¡?£‹ü?¢ÁO?¥n†?£íÁ?• ³?ŠÂÞ?”é÷?ž:­? ‡?°-?–è?›Þ?§Vñ?¨3?¦“#?©‰û?¥NÛ?÷è?„,(?’=S?Ÿzd?Nw?›*ð?¤0?«ð?¦„a?–û[?”Ä›?ò?£|¯?£¦ë?žÅ?›—? Aï?¢´? P -?¤ˆñ?¥+ù? ÃK?”t™?’{Á?µ;?¤šö?¦D ?¡×´?šÕ ?”Dš?Ä]?d‚?hc?yœy?‡-ö?’M?™2¢?žú?¡…Ë?ŸÑà?œ_6? ,‹?¤ßk?¥7Q? zg?œNn?šbz?›Ê?£æ‘?§ †?§£:?¦m?1?œž÷?¡yŽ?ž;\?™ËH?Ÿ¡0?¥cÇ?¢Ì"?¥4?©}Í?¥K¯? ©™?= ?–ë¢?šÏn?¡jq?ž”z?š^O?–’A?’®ö?–K’?›à?˜¹`?~÷ø?I[d?vØ‚?œ!V?¦E(? –±?›Ç?—Ó??ŽMü?ï?œ«ô?§æÒ?¤<Í?›¬«?ž£?£µX?¢Q?¤6É?¨ç?§&D?š|š?‹¿g?’s?‡«?œý9?yI?¥þ+?¨y*?£?œÔ?–p?ÒJ?“×?¡ƒé?¢P?¢Aš?¨0Y?¨)¶?©Aù?«ßï?¨_€?œü ?˜l+?¡ -?£îc? Ÿ?œsÖ?–†??–'N?Ÿ¹x?¥=„?¢öÂ?¡î¯?¡de?™®h?› ð?·–?`?¡äH?£‚-?¢í´?£f ?£Ù ?£Sƒ?£Œ?Ÿø?š¤´?“Â?”¢\?•u?—½ ?Ÿ ?¤+?£ç?£7?ŸüÇ?“ ->?Q?œqì?£B?¥˜›?¦ÌŽ?¥’?¢Cs?¤2?¦x[?¦ -Â?£|$?œ–ß?˜êõ?œù¯?¢½k?¡‡R?› ?š£ù? 9C?¡A=?›Ð?˜þè?™éÒ?—á?’ÔO?‘èW?›’Š?¢]&? éÁ?¡ƒI? ¢-?8»?Ÿ?¢‰@?£>ø? ;³?Ÿ#? g˜?œDó?”Äx?•9 ?–Ê|?–ml?˜§ê?˜#f?˜ev?—‰Ï?—O?”ëú?˜>ò?Ÿ4Ì?¥›N?§þX?¥±ü?¡Àt?¡Í -?Æ?•Zý?•< ?—$)?—AÐ?œ*µ?¡$2?£ÔU?¤…K?¦æ5?¥b’?œˆÿ?“â®?•1Ô?œåa?ŸþÓ?#ö?œ¥?š>¹?™—?œM©? ¨?¡YÝ?¡†H? ä•?¡OÔ?¡s‰? ?ŸkÍ?ŸR? #i?žG-?Ÿ»?¤Ì:?¤Hé? !Ý?¡ù‚?§œ?¨V$?¥?ŸF ?žãO?¢Ø?¢†Z?¤–?¦„º?¥&?¡eå?šu?˜¡?žQ¿?¢B;?£ÄŒ?§!?¥Šy?¡·f?¢SÔ?¢/G?¢Üˆ?›Su?¶?ˆî?’–#?C¦?¢à ?£ò?¤\ö?¡Tr?ž½8?¤?¥ )?£ À?¤ Œ?  ?™6–?œø? ÞÉ?˜w?žÌ?ŸŸ?¡.? ·ƒ?¢æ?›$?Ž›¿?–›f?¢³þ?¤wë?žMž?•ôk?™®?ó?Ÿƒ? œL? MŽ?¡º[?¥Æ}?Ÿ]×?—?¦Pæ?²^ª?­Uf?¤D»?©;T?°ûd?®e[?¡Ã?˜éÝ?¢Î?¬Ù?¨df?ŸVÜ?Ÿ•?¢ø? «®?•œ?×?˜öå?¥âm?¨‹À?§?¤—W?¦ú -?«™Ø?¬ R?¢^Ù?“ö÷?”z"?š/?™• -?—Ö5?˜@^?™ ?›+¦?œÞ?Ÿ¥ï?žÉw?—6ž?˜HD?L?—¨ù?•ß¼?‘¡O?ÉŠ?˜fó?›‡†?™«Ñ?– ”?”}?”E¢?•óu?”ä¿?“˜Š?’ô‘?ˆÜæ?Šl?–Ô?›s¸?›?˜Ù?•Ä=?œßw?/ƒ?Mð?1†?”šÆ?”Ì?ŽO£?nf?“ï¨?’Åé?‘e!?‘ ±?”5?šÂ`?šßË?—8?”cu?”ì#?_o?Œ ?—#Ç?›U?ŸZÀ?œEÆ?–$Ë?”d)?žû ?¦={?¡\U?­F?–æÃ?˜•?›’.?4o?Ž¦™?“x,?˜ùi?–¼Y?ì?™Ÿ,?¤é?¤åç?œDh?•UÐ?œ¾R?¤,_?¢ƒ?žCÑ?•2ð?”çÄ?šWÖ?˜z-?™¸š?œ±§?ž«Æ?¡J_?£¾!?¡®Ä?œð™?œ.?“Ô?Ym?š ?¤Jé?£“?œÕ~?˜lK?˜hH?—š¬?š³ï??œq?˜Aw?“LŠ?™“?¡†?ž¸H?˜›Î?–~·?´g?ŒÇ?›?Ÿ@,?žv ? ôä?ŸáÊ?›Ã$?œÃ¡?ð½?•²:?™°‡?ž ª?ží?¢H7?¤×? ºx?™°V?š–Q?L?¡7? $?œÂL?œ±?¡6j?£Ä?žŽ^?š«Ô?žOž?£“A? ‹a?œØû?¡2—?¡L\?Ÿ67?›l˜?©Ñ?£t?Ÿ4 ? Õ?¯)?‹†?Ÿ, -?ßÊ?žoµ?¢õ'?¡!?ž -?¡Úì?¡ì¹? 'Ö?¨?™pä?œ[ ?Ÿå-?Ÿ†¡?œ©?–?ž’9?¢¤©?¥?£ ‘?Ÿüü?¡_o?¡ÒC? "¶?Ÿý8?œ Ù?¡!{? ªg?˜Âé?”=f?’Ô?–ÕÍ? ¤º?£Ø ?¥ ?¤M?£h?¥)ñ?¤Â×?¤ÑM?¢^[?ž|)?Ÿµ?¦¯’?§–ö?¢†²? }î?¡‘â?¢©ó? Ã‰?šœº?št?– ?|õ?”æî?“Ÿƒ?Š/ú?— -?^b?ž¿ï?¡y‰? hA?£y?¥ J?£2J?¡©?¢ç?¢‚[?¥Eí?¥Á?£ 7?£$«?¤Bò?£••?Ÿæl?œO^?/¤?¢‘è?¤/ª?£ûv?£=Á?žÅó?˜È~?˜\Ÿ?•øŽ?+}? sl?Ÿ¯ç?žî?™ßô?•ïm?™«?÷¸? ¹s? ùü? ^á?¢xÇ?¡ù)?ŸcD?¡/s?žß"?œÓÖ?•ïR?Ÿ?”iñ?R¿?¢µ?¥À˜?§WG?¤•Ç?¤p›?§d?¥¹ ?£i ?£GÕ?£×y?£¨î?£³?¤ßå?¦Õ?¥•1? Œ2?¢“Ü?§¶½?¦{>? Þ†?šG?¡ÜP?§E?§–?£‚•?Ÿ{@?Ÿ´Ú?¥2?¨²{?§A¢?¢…J?¡×?¡ÛØ?¦v™?ªô?©_{?©èë?¨Â7?©#?«²W?«H¢?¨á&?ª/%?¤ Û?œ*?´ê?›Oò?¢ñ?¦¿Œ?¦+P?¦Ó&?¥¥Ã?§ì.?£´h?›ïŠ?œ_#?ž£c?Ÿ©f?£”G?§ë?¥ãm?¤w ?§>þ?¨µÑ?¤R’?Ÿô•?›»Û?—Øî?›a¯?2@?›óq?–Ïú?—±·?šˆV?vî?žN¤?§D?›Ø½?Ž*?‰hÅ?çÛ?”.A?–»?™dØ?˜}?™'­?‘Ãã?‘÷?‹5o?‰C?½?‰3?Ý?–,…?’J¯?”„ß?”[t?‘×I?”%½?’Kÿ?‘Þ‡?“HÒ?ˆ,°?‹þ)?'¸?‡C"?ü—?‰pÛ?Ž)Ú?.J?– -o?“¸²?C:?9™?‘‹¿?‘È -?¯›?Ñi?•œX?–žŒ?“-?”34?˜?™„B?Ö¬?Ž)‰?–<6?šJ(?“”¦?‹šý?•ýG?œ–ô?”ª8?‹ ?ÖÈ? Ö?ŠÖé?‘7Œ?¦ ?–]1?“©õ?“E8?‘~Z?“[-?™ðE?–Œ?—3@?•/é?’;ñ?‹p?{Ž?xc?‰þJ?“í!?•¥r?”ˆO?™ Œ?—cØ?äÛ?h¿?…ñQ?‚Qµ?‚Úm?†²Â?ŠÌ@?Œy?I?‘Š!?£?‹l?‹V&?úl?‰x?º ?{ì}?€PŒ?Ì?„ñ?Š?†¬x?~í­?„1?…qQ?Š?ƒ @?o÷?l\B?|Bâ?c-?€?‚t7?ƒW*?{N?xG? W?¥?‚³²?Xé?t°3?ywÈ?‚t¯?€t:?…Œ_?…ß?{±?¦d?‚+?€5»?‡Hà?†1j?‚V¾?ƒ¡ý?~Ñ‘?€ˆ¶?„›¬?„ðÍ?' ?~mè?‚þo?‚?†n—?‰™Û?ƒª2?t ?Û ?ƒÇ?ƒ©e?…Zz?†m^?ƒ/?‚ïŸ?†1¦?‚À8?øŸ?9?}é?yÉ*?yé$?Š¼?‡ü€?|M1?zR=?ƒá?€Ùû?{q˜?vßµ?rzû?y·’?€!?„ÀŽ?€GØ?’y?…—¥?…¯ƒ?w… ?w£î?ƒˆ)?ˆ’a?……:?ƒ«?}áŸ?‚[ù?…Ø&?„^?…&g?‚ .?€¬ß?†à?ƒô ?‚1T?‚ž?{Õ8?|ü)?{Q ?€Ì¤?ŠJ?ˆ-?ãÞ?€á+?’ÿ?…ÔO?Äf?v<Á?uŒ?m!#?s–È?g?%?tþn?z›k?}GŽ?‡n?„– ?z8?€)Ú?„¾}?‡y½?«÷?m¡ -?eJX?vä3?‚Þ?‹©Ó?Šá¡?…ÇÒ?›¶?|G.?‚–Ú?…¦8?s&?….Š?„Ì ?|¬S?Y§[?W?'Ÿ?aƒ–?o±&?~Ž?ˆ:?‰Ç?C?fk ?[”@?q:–?váL?€d¯?€Ü)?}ô ?ybY?€#"?|ÿŠ?|ðÔ?t&Ô?Y—?1ä>îR9>³€Í?Ó?CÓÙ?V‹t?m£?+Œ?~L?wxz?ƒ .?ƒ<?ƒ=?ƒâÁ?ƒÇÖ?ƒU|?ƒˆ?ƒµÏ?€¥©?‚–?‡©3?ˆ“Û?|‰V?€*·?†I?†=¬?„j?ƒÏL?‡;?‡G©?‚¨Ž?‡¹?‰±Q?…€¾?…kh?†’#?ì?rœj?€õt?‡ä?‡ðþ?‡“t?€ë˜?…Ì_?Œ¼?Šœù?Š1)?ˆû?‡ª?‰˜3?Œ"Ô?Ž`?ˆè÷?†™Ž?Š±?…|y?€Æ?ƒ6î?¨@?~>ã?nò´?A:þ>ë–>úQi?I@2?n‹ì?ƒ?‚í?u`?kÍ”?…a±?ƒ…¡?€¹'?Æ`?ŠÐˆ?uì±?c(b?‚Êá?‰3?Œ¯~?‰QÐ?‚a)?„g6?…O´?‹z¼?‹Ž?‡n–?„ÅN?„[?%ï?Œ?‹ê¬?Žä·?Ž>?Œ?Æ?ˆ^`?ƒº‚?Š§A?‹}²?„¾Ù?‰Ä{?Œ4J?‡ÿã?‹•0?ŒÄ?‰_'?ŠûÐ?†‹‘?Œ#?Œ¥?‡u?S[?0?‡€ó?…g?ˆ>Ô?‹{£?„HÌ?¢Ö?ŒŠ«?Œ¤w?‹cû?†?K?¨è?‘4¤?‰Ü¼?‡¿«?†õÇ?Š ª?ŒCx?Žoþ?Œ?}0K?[Ex?m¤õ?‰¯X?Œù‚?n—?Žî.?‹ð?ˆz?ƒH?u_D?‰•~?ŽÊ\?L?¶n?‰÷/?ƒ“ ?}9u?†l°?‰ÊC?Œˆh?‹8Ð?*Å?ŽH ?!‚?Û‚?Žöa?‹ŠE?†ë/?…‹?‡ß?€›C?†ýú?ŽÊU?ç®?ˆó8?„¸L?…} ?Š¼?ˆKð?‰òÞ?Œß]?‹ •?†¸¦?ŠY?ŠÙš?‰ø(?‹b"?‹ü”?Šãç?Œ¨É?ˆî™?‡éG?ˆ?ˆŽ?‰e¯?†¬þ?„C.?‡K%?„}Æ?…)b?…ß8?„m?ƒ¢c?ˆ„û?Œ“?‰ûc?‡O?ƒÃ?'Ã?}bô?…"ê?ŠcÆ?ŒkR?‹>E?Œ¬â?Šju?ˆñ?‰ïÕ?…¢??‚^Ç?„¼•?‰S2?ˆNÑ?‚"ª?„i…?‰ƒØ?Œ9-?ˆ^a?‡ÛI?‡ûÛ?†U?†ž?†?‡?‚1•?…ÃÄ?ŒU†?‹¼c?†½e?~?{}b?€§‘?‚4R?„Ž…?„ûƒ?yû?Ÿc?ƒ¿a?„Òm?…Ø?‡1ó?ŠÆ?…L–?ƒîÏ?‰Ì?‹ÛW?ŠÃ?‡„½?ˆoÈ?ˆŽ,?‰½¸?Šÿ?‰mP?‡H*?„5œ?†Sö?‹ã?ŠéX?Š*?‰G½?‰æï?Šo›?†ÅG?œu?ˆÓ?†™f?!-?o??vY?†lÀ?‡%³?‡vd?„bû?„”º?†U¯?è„?xw?~0?¨O?€¬Å?H?f~h?fv??ih‡?iÚ?lŽt?oÁ4?kZ6?\ö?b8J?_ B?N=U?R¿Ù?b¾Ô?_7×?c§?kÓ?g-ü?vÆ#?rƒK?Z?dLb?hù*?\ÐX?fêx?j?_…é?T‡?`x1?e#µ?\Ô?ZNy?h©Ž?qÍ?d©ô?[«k?qH»?iª§?^;3?kκ?i°Î?f~?c&8?q©?n"Õ?f,$?\—~?mõ?hñN?^P¢?Z0?q–?ys?o#b?oÏ?pËP?jº?dƺ?hÁÑ?q¦?\­}?_qð?xÛx?{ad?nL2?e,þ?[É÷?`¨?UØg?fb»?qe!?r¸~?m.–?kË;?puo?uIÄ?p=F?iæÀ?q.ÿ?v´4?u_¹?qÖ0?x X?qHû?mÁ4?hê?tUa?tûŠ?^ò?l¿?z%æ?uœÖ?uß?r×Î?te?pK?kµã?uΗ?xq‰?yý?s¤™?ey‹?nõC?y±“?|?rFv?k¤?yõm?~a0?qŒ¢?r©Ñ?w–f?m1»?d:ú?nô»?|Êã?wo ?h7 ?f…"?mzO?n“?x&n?rÃ'?c"+?dÞ#?sÓ¤?}>J?r.d?fi7?k2Ì?mrM?bWE?lK?x|I?{ ?sÕ?j  ?lK»?p#?hüy?oñ?sî ?mñ“?tw½?u”x?qõs?m¸Â?tŠÐ?t¤?qÍ…?nG:?k­U?r²©?sš#?tÐ…?o½?n¼Ý?xGŸ?l»±?kξ?ng8?o±U?kS?nóú?rÜÉ?iµO?kO?vÈå?y â?u£G?o¸ ?t¯@?v+ñ?pÍœ?m²Ú?jY?k5c?j%5?oÐ7?tØþ?zp?rq‹?h¥}?nŸà?x¾e?iÔÌ?]Þ?jí´?qxµ?l±Þ?s E?r÷¿?w%?wü?oË"?i`?i{)?j)3?c ?k˜È?sÎÓ?rß2?v;/?yq¡?|Þ‹?vê?jád?kr­?wy—?qÀ?db?nƒ+?uÒe?mu?r|?wÒÐ?s¾6?tW?xŠQ?sð ?nš?t¸¾?q¥Ü?f0ž?g)”?rèÂ?sÁž?n_Ì?f©¢?qC?yª?p.?kt*?mpš?n®5?k/?o8,?yت?t/—?qe£?n÷ß?n%"?o|n?u¡Ø?l„B?d‡x?m «?u ?q‚µ?iT?nÕ?qµ?ua?qÑ—?hs¹?hY -?t8!?vì9?pqN?q5ò?xJ?p ]?lš„?s¸!?vrç?tÞÃ?r˜$?s!O?t?kÈ?oÐÛ?pÍ×?o=‚?nž=?sÄô?rrñ?sl^?oåP?rn{?péœ?mi“?f#é?as˜?aíË?oÀÿ?qY?kþ?gŸ×?cïH?jp&?nw?s= ?oKÒ?líã?p’R?ti–?qa?lÅ?qQ)?i]?hP»?s€w?hhU?e È?r[ƒ?qä­?r÷¼?mWÛ?e?hkî?X®¼?f\’?mÀ”?pIõ?kË?op1?t§?s_2?mÃÂ?p.?q!Z?cOD?dâ1?lY…?rÿ?oò.?jü?m>‘?mW?q:m?s…Ž?p 0?p¦¥?t¦?q4x?iuq?f>?hCü?p}Ý?qÓ?iž{?gJô?r¢¯?p«\?nâ%?rtL?sHí?m@I?o2­?rÌ´?o7?gÃ?c¾?e—ç?kuk?p©f?nŽ?k¸ ?qó*?nÿ”?hÖ?lf?mÕS?l½)?n͹?où?n{^?m ?mT?m¹_?n‚?j0¢?i\?e9ù?Tµ?fú`?o´æ?nÃü?o¸G?q?oÊF?e0ý?Z`?a/5?g$ã?h¥ú?lE?f“?iöy?oç?o$t?gíP?hÒ+?peV?oñd?n·¨?nƒ?oès?oa>?jU®?fûÇ?lå ?nÝ?k•ö?h:ù?W—?_ -_?j`U?hSÖ?jÖâ?f‹?gj–?e½¸?ld -?e±E?g‰?dYH?]oï?aù©?dð ?ku?lž~?lAç?jmÌ?gÁ«?iõ0?lÂí?jò?fâ8?jð?mU_?a -@?TJÇ?a£~?_Z?dž?hm’?køÞ?gý°?cï?bíµ?^]¢?b¬I?ab$?hÄ?l0ÿ?kG?kÚ.?i6_?gÛK?kÓ?aêû?e^U?f"?Zúá?YÁD?[¦ß?gC;?g’|?f¢’?hüü?h~Ö?d_'?hÏ•?j°?adE?WðÍ?eiÉ?bä?X,í?MÐ|?bÕ ?XIP?Y%Î?fPê?e2?gCá?hð%?iXé?cšë?dõr?d·ª?hç[?h°f?jq±?i–?bÄ?^ßC?frÇ?SZ?H”²?MÔ?X˜9?ZË’?Sa„?P„?Xqœ?[ǹ?Xš†?Zb®?VÂA?^ú?cž?_L?\›­?`Ù?cêÉ?X½?`Âå?`¯m?b@'?U??6éœ??ƒ¥?KùÂ?Q˜K?O?M/¬?N¼?PÁñ?T¡(?QE–?NI5?T&#?S¼S?V—¶?D%¨?/üF?,,Á?@YF?DBÒ?@>°?GR¦?94v?C‹ç?Hr}?H5µ?L·:?BÇR?:Ó?4'©?DŽ¬?>qÇ?BA%?E ?D©?<¡v??®?H%Õ?>çµ?=›?PjÉ?K$©?;bs?LÖÀ?Lîl?9À?C†È?Kʳ?F{ò?Fg;?S¼¬?SRK?@KŒ?:3¸?NŠ?SÏÚ?Jvs?<”Û?DB¾?OÄ©?UÔq?AØÍ??6#?U­?RÀ%?I¹?9˜?Omc?Pæ?O™m?EÀô?GE¿?NƒZ?K+ì?OK?MÀ¬?Lz;?9b0?EÛÛ?UÂv?OÓ›?K\Ê?78Ø?J¨?[Ϩ?Tvè?S\:?9oé?J#}?YŸ‰?W%Ž?RÑ­?8‡Ù?By–?]™ƒ?\rÜ?SÈ?Hxœ?BC?Mëë?[r^?T^?ERÇ??óÚ?BMê?OF?Z×Í?IÚ?E~ê?OoŠ?M7£?Qb}?Z}?K^›?Iê,?Z|§?S›?O3?Q—þ?EÝž?Fþ?[ - ?W7?P¢&?J¾^?C ê?=|:?U¿?HŽ&?B³?EÂ?G=?8ó?PŒV?Zzñ?Vâ?W´Q?N1‹?B.{?>êv?S5&?T—a?Pgé?N“?F½£?=2V???PM}?UðT?R˜›?Q¸Ô?Bù£?:÷ä?AåÚ?QVR?PŽ÷?P ,?Wß?Hõƒ?8 Ã?8™·?O©?KÆw?O -"?WÓ4?Oä—?Bâß?>o#?@ŽM?Pˆ·?U"ì?S2?VÍ#?I1ž?F|?6ƒt?Cµ?Lº‰?Dò ?MÏ&?Oj]?Eý?:œZ?Bà!?I•`?NRÄ?M„¼?HñÒ?P#m?Pvü?Fr?E‡ó?O%ð?NÃ*?HEÉ?O×?NÜ??S¬=?KÓ?? —??Á ?J;¸?S¡þ?OL?N -j?Sÿr?T¢?@Íp?J¶c?TX?SpŠ?VÕ?I}?GŒh?XåG?O÷Ñ?H7é?IN¹?Fì?Sg??T^l?IÎ?QÐ’?U1š?G–Ð?Eî´?T’+?NJ>?Q‹÷?Oõ+?Fú?Q+?OÖ(?Fƒî?D„¿?S—à?Q¿³?R9h?MØ=?Gò?V¡R?Y¤d?Mº`?F}å?J>J?NùÇ?ODÎ?T5l?HÓƒ?T1?UE?M´Í?GA?MùJ?T Ú?QÏT?P#?A?4F?IŸ6?WW[?Lß?L9g?DJ?5Ÿ?5Þ!?J¢s?J g?QHÑ?Uï ?RÈ ?FïÇ?DÛ ?M»Ì?PÚc?>/Æ?E9B?M^J?O.*?Kæ¤?ML[?KF’?LÄ£?OÕ+?Q”È?OŠƒ?C‡'?G´?Oo$?Siè?Q©,?Gƒ8?JÊ>?NŽ1?9ä‚?AëL?Hkd?OM?O>ï?RV¨?R?I³Ú?I¯»?K¶”?Q+5?P4§?MD?Fòå?NüC?OvŽ?OÄ?J]‚?KŒ[?LŸÒ?SXÞ?Qƒ?K\™?IMÅ?G•S?M -?PŠÈ?S=ð?MkZ?K&£?C÷†?G ?LÚT?HFÁ?6âà?<&Í?OÓV?Oƒ°?P ê?I-ý?Fi°?Häþ?Nz?OÅÑ?Lo|?Bf©?JÊÀ?OD?KoI?Mzã?HÅå?0aØ?<ˆ–?QH?RÃ?Jõ?Ap™?Gî7?Pz?N?N§Ž?N8Ä?G#Ç?HóÕ?Io¤?NéZ?Q¸z?K¡å?Bêf?H ž?L@U?0D»?- (?I ?B¯??Ã?IÚ?Oz?Oë?Gíl?J -h> Pý>¶>¬3> ‘>‹¤>>³>t>j4> m­> …>^b> Rl=õÙ6=Ö˜Þ=Äþš= Ä=Æeœ=ÊÁ¦=É5=Â`=¿Sá=É,¾=×$ï=Øä=Ëf=¾).=»zo=¾Â&=ÀEá=ÁÿÉ=É…~=Õ3M=ÜŽí=×gÛ=Ä°7=®1›=£¹¥=­^}=Ã8=×÷H=è?=øV>»'> µF>’P>Ÿ±>å>µ1>çx=êЗ=×ÑQ=Ò‹µ=×x=ß²%=í}¬>ã>,v>$ç@>)¥î>&ÅÂ> Ü >->t±> Hh> û>ã_=òfÁ=ÙÒ'=†*=²Ð—=ª®=¤*=›P!=–œÕ=¢CŸ=ÁS=æ…=þÙ;>^>g> NW>®n>cë> !ð>Kh> Já>‚>2À>;ì>>9R>/Ý9>'Žù>(qm>4ž_>CnÒ>Fh„>70£>ûœ>…2=ÚÉ=¿è=³=²o=³µ­=®Ûî=¤Íö=Ÿ¬=©†ð=Â}1=ád§=ý¹> ÅC> q>M=Öº=ž­=qx=b@ò=où=›^=°è1=ÀgŽ=ÒK=ë&R=ü“Ä=òñ´=Ó{=ºèí=¼ý\=×3x=ÿù‚>ˆ>(÷x>.¨>&±>¢Û>ú+>]–=î4=Ëâ1=­w=™Y=Žö=ˆD=„[ž=…*}=‘—l=©" =¿› =˺ê=ÒÝ‚=Ýw =èÓ'=ìé9=æAu=ÖnÞ=ŲT=ÀÂÅ=Éb—=ÏQ=Ã=ªz§=˜=á=”!=–Ã#=™d=žÏ=­Ð=ÃÊÄ=ص§=Ü*r=Ç·ü=§KŸ=ë‹=„^Ú=‡ûs=”$ò=¤¢~=³Â²=ÀA=ÏÀ¯=âω=î¦C=ë`{=âX=å´@=ýº­> RY>Û>ä=ïõÐ=ÞØá=ïah> ¾>"zi>-—>-ûë>(˜%>$n>*y>?u5>[÷2>r>|c>€«W>…cK>‹*/>Žï>A>‹Ó>‡ˆo>}þ˜>_ûM>?à.>0“Z>;äˆ>Xä»>tÔ>€uà>zu`>e‚ò>Kïy>:ý‹>:ß>DÖµ>K—>MÒ¨>R;>Y!à>[÷ê>Y¬>S8>K[\>I>Qr`>^ÍZ>f#>cé/>^ >X®>N‡>?>0}>0­>E˜o>kG>ˆM}>’,é>«Þ>Šw9>‰žM>’ ‚>â>£:ý>ží0>—ÃÜ>•˜­>˜ >›õ#>ÿ€>Ÿg>›ó¤>‘ˆ¡>„…Ì>|~Y>}TW>u‹'>X¼ä>7¾#>+uÈ>7›‚>Lšž>]p)>h¦ï>paY>ra>jûñ>Yhr>A·>*JF>—0> µè>5‡>PX>dA>iÈS>b¯±>VAÉ>GëM>7ãB>.DÑ>7gÆ>Rt«>o­Œ>€a+>Ú2>}]Ä>o`N>[tê>Kî¤>Ip@>M -Þ>L¹%>K è>L]ÿ>I¦:>+àÖ>'fÃ>5~>K¯,>Z@j>\7H>V‘$>N$„>FG&>C[ƒ>G†œ>QHd>]['>e™J>b™Ë>Q ë>4+>™—> )&>ñ>Cæ¯>f`ˆ>uáa>r× >m4)>q×›>{u´>{Â>hÝä>C=p>—ã=Òrƒ=¢Y=¥’ò=ÞÍ>#£>FžL>Xv>MÓõ>5‘> Š>²J>‡]=ÜÒ‡=³éú=œl=˜ºW=¤/Ð=ÁN=ôT?>kï>D2 ->cw>p¤>hi>Mê>(`>Åè=úŒ>/>ò!>tn>$k¦>,òc>:ŽÍ>G”Æ>M˨>Mßy>O6Ø>Q4¾>FW\>(l>o7=Ùiu=Öé=ý&@>å>>½>]Ùj>{À’>Š8Œ>‘¨>•Hw>•.>Á7>K>a€ø>Ieþ>3‘Ì> ÒŽ>›{>fŽ>*Pý><±â>GÔg>I{Z>G ï>>kI>'„>~=Ähª=¡‹=¬O=Ú"~> -ô>*X{>O'¡>ya>0¿>’ÊO>Œœ·>zØt>U®y>=ÿà>?º‘>LT>L:¦>C5 >G¹ã>d4¦>…Y£>‘L>Ì>uÙ>H•Å>'f!>…1>$>(2«>¨>Ù¿=à”=´ÅÄ=^=ZÔË=:Ûø==`=Oš9=d’¹=}Lß=ž–=ªã9=Ý>³><3>YŠ]>iì|>kî’>X®A>9ºÌ>.©î>K¶ >Ö­>’¶>‘PP>xÆ€>@î²>ÆN> àë>c9>è™=ü–>TÍ> >r > À$=òI=úÐ>2¾>?ݺ>^†_>oãÀ>pJ>[yÅ>8³ >,=î.=½‰E=žy>=¢Æ=Ôv>‚ >GÛg>pÿú>†ž¹>þŸ>Œ:\>ÝJ>a}d>W M>j\(>‡…ƒ>—Iñ>˜Ú5>‡„^>SHT> `=âUû=ʧô=Ù¡>‚l>kï>9>=û}>.Ñ;>é>'!>KSM>x–>Š2ÿ>Eï>˜#ô>¦ë%>µ¹O>¹$l>¯hŸ>¢Sõ>›€è>šâ@>—£®>‹¸>s·—>\´>QCø>A€>&È>em> ü†>)S>Zûñ>…;>2å>ŠÂ(>tá…>O¦0>2wÛ>¶>U=÷nw=ÔkÖ=Éë3=ä >ˆ>;6V>_XJ>svÝ>y×t>xZ–>rÁ‹>rœ×>=v>ŽŒ>–P³>•‘³>Û+>QÀ>–p©>›÷â>—š>ŠàQ>=s>‚ÊÖ>­J>™ç=>Ÿé><»>”=^>‰ÙS>„ ·>„C>… A>‚®>|±Z>q6>^†Y>Kù>Dœ>K:Ó>Sb6>Pƒp>EU>?qx>H9>[¨>mI?>wFª>r§¨>Y‚œ>0áñ> \=ù.T>¢¼>÷>Î_=ãÏì=Ñêš=߶>>>Q¾>-Þ>5Aû>6r_>4 -Ÿ>)q·>ü=ïXã=Å"G=­2ì=£ÖU=«R=ÁóT=×¾v=ÜIµ=Ñ ß=Ç'ö=ÌÌm=âÙ™>qè>íß>0Äx>JØ­>RR\>@ié>)i>)n>Iô²>wc¬>‹¸ >‘½5>–Ô>Ÿî>«J…>¬>œsÐ>ƒ²Ì>X¢/>3¯¯>—º>¦.>Q >Â%>e>ó> -Á>%Õ:>C>U e>_*j>lˤ>|Žö>Ž>hlo>=èÄ>Ø=ÿp6> 2>,uI>S >rOÕ>€2>ƒÞi>Ž"> ~1>° F>³ÿÖ>¨æÅ>’Å >k>2ŠÜ>ò>.M>*Cä>>ª¾>Ož†>eNÏ>€†º>ŽÎ0>›£H>¥¤>¨°ˆ>¦>I×>;>2>gv>QÅÊ>A¹¥>0ªg>´F>¨•>(÷>LXE>w¦+>QÞ>Ÿµª>¨jì>­øû>µ4½>¿,g>ÊC<>Ôò§>Ý߬>âqk>âRþ>à:>Û7>Ïú¦>ÄdÔ>Á\>ÄŽj>Å £>¿Th>¶•ó>¬¼>£ø>§:>·Ò>Ç`t>̇,>Èuä>Ä„R>Á0>¶Že>£Žs>Ž™/>x#÷>]x¹>X”a>jdÿ>A©>Šáä>‘>>„o™>e->JÝÌ>KüŽ>n$h>”Á>´… ->ËKN>ÌúE>¼ÉN>«Ïj>¦:¤>©Ê‰>±ß>»Ø£>ÉD2>ÓV|>Óqu>ÉË>¼M”>¬Â>”(M>lp?>:°m>$Ù>!ê¡>#/™>&‚1>;B:>ka¿>–ž>´G’>È’>>ÎÜ>>Ť@>¯„º>“²¥>r Ï>Aúž>TD=éÎ1=ÊÒÚ=ÐS==òn>—Ý>;ó÷>^'Ù>nJ”>d¢J>O•Ó>Hw>QÇf>W>}>M¡>7ê>àž=û=Íj¢=´¿=°+V=».…=ØŒ>ç>")_>;ö>Fí'>@í >+ÁŽ>ãH=ù9=ÝÜ=Ò`Ý=Ïx=Éÿq=Èð#=ây‚><½>0$s>K‚‹>c:ü>~M¤>‰´A>‡q>kŸr><¥†>)œ>"OD>:ìÅ>Pf¯>R a>A§á>0jI>-:l>2Ýè>3Öç>6‡>O´÷>€:ÿ>˜ØŠ>©Ë->´Ì>»ßF>¼x¤>µ£>ª \>£H«>£`˜>¦1Þ>©8³>®n#>µMk>¹ÝO>º¾Ê>ºvÿ>ºOË>µþ>£T>‡¾=>`³‚>GÚ9>Bá>KhŽ>c>~/P>ƒù!>xÿÍ>`Ø>REŒ>WS>_>U¿>@r>;Ç@>Qùü>s™6>ˆ?£>“´>›¤@>œ¤>”‹¸>†ˆI>w]r>y«É>‡êH>’´Ð>”üY>‹æq>t>O4(>3{Z>!e=>‚ >k“>&ï>!Àa> =õÕÊ=ñ¡>ð5> „>Ô^=êä@=×¼¾=×Tî=ã_{=óXL>¾%> r8> ÙQ>†í=ø%A=ñ«Ê>R˜>td> ¯ô>ÈY> ?©=ùÒX=î¢6=ø”i>é7>.1­>HÝ>WTÚ>[Ä›>\ Õ>\>Z§Á>O'e>30¾>;°Ÿ>Gðg>G×:>;ïë>+÷>zþ>]¤> -w>Pÿ=î %=êTß>;>"Þf>>À>K#†>Gæ<>BDÙ>D¬C>JÊ>L·>FUÏ>:7Í>+ðÊ>#°>)ˆØ>@E ->]TŠ>lÔ>dVX>I™ë>-Î%>%M>2Ó¼>B$Ž>Ev@>Hz>W\–>a¡>Nôý>.n>!ƒ>.Ê>Q`Â>æê>˜7ú>ª¶Ë>±HÜ>ª¯x>›·±>Œ*H>„§§>†˜F>‡+>~¥ç>oq>u†½>…Ò>ˆ^z>‚Ý{>{º–>uj=>r˜b>g<>•=ó>ª•|>·TU>»‘>½ü>Âuû>ÇÌ>ÈÝ7>Ƶñ>¾äª>²¹Þ>¦YY>˜“û>†’F>iÊþ>Uˆ’>Q«>XàN>iŸ¾>zó>~)[>nx“>Q¯R>3Pù>'÷> ÌK=ý†u=ä÷³=Î(‰=Â\Ä=Ë~=ë7¼>)w>-Ž>L„>f‹>s„ñ>pZ >aDO>J°«>7Ï>>?>dÓŒ>‡Ýc>’±y>—O®>¢C>´*?>Á - >Áð¢>¿ÃP>ÄfB>Ç7>»IŒ>¦Ý>˜Ï¬>’×¥>ŠÚ>p+ï>A4>$˜ˆ>&á >8&Œ>@â&>6)>Ø>hŠ=äf=æÅ>²£>&±\>I0>hž­>„ Z>•n·>¥Û5>³2>À§š>ÑÙ&>ãKµ>ít¼>ì|Ò>æéw>äéN>æÖU>ëf\>ñ»>ù²¼?,6?Ê_?’>úíÎ?KÈ? "?VŽ?VŠ? -8Æ?Æd>ø>íké>õù?b(?±Û?(Ü?÷? Ã? †">ïVu>ÝòR>ïÒ;? u?$Y?ŽV?2 ?H?î? #?ó2? 2?–œ?¸I?uT?!Ç?&Âe?%²ˆ?"ä„?![œ?~¢?À*?Òš?"?$­Q?%Y½?Ze>û_ >Æž>¨áÑ>œÈÖ>ž>µ~­>äûI?qí?&zú?/Ú?, S?!Àb?ÿJ?¿y? (Í>ã…5>«Q>>‹«S>—M[>ÃE>ö©‘?ua? 6?%>?"œË?Ð&?%-?éŒ? -”]?DJ>ûØl>þË–?ò/? -ø»>üÏ«>ÍÄ>ªÜ>®Z1>Í\œ>êâ>ýT.?~í?p"?€>áb'>ÉËn>Ýš–?6Ü? fI?öW>ùœï>ï7p>ýÒˆ?ð=?#¢?/Û­?.àú?%‡­?«˜?½g?'ˆÔ?7X±?Erê?JÁ£?E²?;±G?30v?0ƒ®?1E)?*Z¢?›z? :÷?oÁ?‘Þ?üã?i8>üz¦?Ÿ1?Âz?ì?£Î?§ì?#³?!"æ??ös?h†? !±?  ö?Av?ߤ?!F¤?"¬˜? (ø?S¼?è“?Qà?ÿ*?‡?À?ͼ?(F¶?);¢?"u? ?K?Aa?C§>í;>ÕƒW>Õ®=>ëâ«?–?Ø -?B9?Þß?!ˆ? 6?Žq>ÿ×>ÇŒ£>®>ÂzŽ>éÄ«?£–? ûy? -‘:?›2? ´?€?D©?øV>úä)>ù›v>ýëé? ? ük?sÑ?ù|? É?(a^?,¸†?'Yv?>m?ßê?¼?%Î? -Ã-?²?˜´?rW>ó·´>ï|²>÷í¹>ÿl?™š?Æ? ¹?a?ª?ïx?l‚? ?< ?g¾? —>ûI*>òñö?C0?Ö?³þ?Cù?ë¯?!?•-?{>>ô_Æ>âƒ>ÙËI>ÜÕ>áP>ßÞ>çs?§?Ö.?"˜v?,y?/çÑ?-¡L?$ "?Çj?$?"£?R•?ω?=>ý¶}? Ÿù?³©?&b=?(:Á?"^z?8>÷Ýï>Ʀ>”¦Y>RH>%ª¤><É>†žU>¼èâ>ð8?:W?þÒ?žA>ý¹>ø%/>úþ^?Gq? P?ÑQ?´?!ñ&?+¼û?4ªt?>ÜÀ?B6«?8æ3<>Ûàh>æ[Ó>áŒa>ËA->ÏǨ>ÿï{?3ô?.Q? ë>í]£>â;¼?‚/?.ú?3M ?<é&?=ið?5øQ?)5?ŽÓ—>«º>£Á†>© ø>±®>Òbà?¥N?#o?0_r?+?›g?º¡?Ýñ?î ?G?ZT?^?x>ûäÛ>Ñ8£>ÅîB>äú ?gò?ÄÜ?m¡?Iã?Œ¥? ™“>óƒ¤>Ï¿>ÄL'>ÎÞÅ>ÛR>åõr>ì¾»>á¾5>ÅþO>¨è>œí>¬>Ì·ø>ïîe?¦^?¿p?%Ú?8¯Ì?Rïç?aƒé?^ã?Vôw?S4…?N66?AÀì?'0Ú?u#>З*>З‡?ä%?2è´?O±Š?Xð‰?[K-?_Ëâ?f?káu?kÃÙ?[¶]?>8a?&ïº?–Ž?!f‚?/Ÿß?AÛ\?IM?I]›?NÁ?W~…?^pÍ?g8?lë6?\sm?7i·?p6?,q?0?Ø?=Ûä?I”4?Rù•?R¡’?N5&?SÁn?a^y?h>Û?hø?m Ô?rü…?kç"?[p_?Qîù?R™Ú?S¹ñ?R+Ô?N)?CÕ?2 -?%c?'ñŒ?8Y6?C-0?>+X?.%0?é¤>ë#´>³«Œ>¯¿–>æ_Á?ig?(0??, T?,šH?0Šg?8Ð0?@Ú?Aúý?B'R?IŠ?ZdZ?h -?fM?Uä¼?D?;;?/Î,?ÚŠ>êR£>åi?Rü?Ü?0€ç?KñÖ?a^ö?hÑ?aÑã?H:‡?'Q?"s?4U_?T:µ?læ?w0?nOê?Xc?G?C‚?@õ§?;½ª?>Dà?K8?T[…?Q .?P‘’?UÕµ?Kõ¹?0Å?r?'QÈ?IQØ?iî’?w•u?m´(?UÝ´?CçŠ?GGŸ?^´?vÉG?{ǘ?s]'?q×?su£?p¥©?i±ª?[˜`?@9? ò3?M·?Ë}?)?Ñ?+ħ?*ß1?(Ä/?+ï?>|)?Wý7?aMô?^£?]5­?_b?\ ~?[#¢?dþõ?sGU?{†â?x‘Ì?pQ¤?r¡~? -?…0?GÍ?T]?SÌ?FP¢?5©Ÿ?-x0?3Ä’?@Jn?Gr×?MÍ~?Pc?GΉ?=ìÀ?D–?Quo?S¥?Iø9?CÇ?M -?Z2›?bn?f½ö?bíá?RZ?Có?Eœw?Cˆì?1,‘? Œ?%)n?;¥7?Q$h?acÞ?ev‘?V‹Ù?@3€?6_;?=F?H?O<"?RÁM?TÈn?Y¶v?_S>?aS ?c£™?b5½?W5Ä?DÙa?9V-?:¾?9ɨ?8þ÷?@…Ò?BÃa?>Õ?B€0?GZ`?B¢«?@`a?>H·?0Ñö?&·(?'§=?+!–?2£?>Û?Ir?KQƒ?IZ?I¹?K¬£?T7 -?Z©É?QÛ?AˆS?<ó?7‡:?/8?114?:9³??V?=3?8[I?4¾?/Ì+?076?2-?5~ã?<à?C A?KA?M´3?NPï?Oêe?JØ?A¦Û?;¢?4±¿?(ÁK?$R"?(R?+’_?*X?)XÅ?40??§É?> ?>9a?Aíç?<`\?.¥Ú?&ùá?/ш?5Ф?3ª–?6=?4ûÄ?.†)?-ó9?0žt?/#­?+¢Ü¤ç>ÈiÈ>âÒ¢>ôZe>×-Œ>¶Ö;>ÊøÈ?æ„?ºe?#’û?!Äå?º–?;š>ÒO…>°th>ÁÊ·?Þ?#ô?6í?@ƒ?= ?*…!?#¤?/6ù?:)?Eïš?TfŽ?\04?\EÓ?S¤¤?CÀE?+ݨ?³á>û°ú>ôaÕ>óD€?ûI?+Ë(?SÌÅ?gÔ?_æÿ?PC?N4?^Lõ?qe{?z?wïì?jÓt?U7~?>LA?,r¯?0.Ï?Iô©?\‚û?[ÚY?LiÒ?H¤ä?[q†?pÚÔ?}kÕ?§?|e?zÞà?y¶Ñ?z¬6?|e0?t¼?få?cÃÄ?fhJ?c0û?ejâ?j -?gë6?hÔ^?w›n?‚ä?ƒ‘\?yÐí?_V?BHû?.\×?"÷Ù? À?"îv?£Q?ñ>?ì¬?BäÛ?U6?Z‚K?bv¹?v¶÷?‚¶?}Ò?jŸ?V(‘?O¶T?_í«?|¢T?†2t?†l¶?‡ú?‰1?ˆÈ?†En?ƒ²?u­µ?XÅ?F(K?R!?dõà?j–á?sh¶?‚Ýp?ˆè?ˆŽr?†èO?ˆæž?‹‹Ú?‹±J?‰‰>?‡T¸?†A–?…SÉ?…V?…?^?ƒšÃ?€î¥?utó?_œë?SØÑ?NÕý?2©ê?̬?8€º?aòr?tÿÂ?};¼?„o?†ìØ?„Ä:?|wx?bîo?T&Î?c}˜?v{\?x,ß?pÆ?or?k«B?jÈ'?zx?….?†ö[?ˆ‚u?Œiù?z¬?a+?*Q?‹ìf?‡U.?ƒŠ‹?~0w?u»¡?r½;?n¥h?^?Ú?AI‹?9,r?Wë÷?|á?‡-Ñ?‡œn?‡J,?‰À?ˆŒÿ?ƒöÙ?y&î?v­Õ?‚ä?†Ï]?„ÿå?C¦?tÁç?n¼?iº¸?g°Ü?dÜN?UDý?Ndª?ayE?pª)?uÎ?r»y?Yàh?=4?=½g?U?[¼?Tœb?`Ô-?vìl?~%[?z²`?€ñš?‡nG?‡­E?ƒ!ƒ?€ôþ?q?uK%?x;¤?„™ï?„é?iH?T‚›?bÔ?i (?[š—?W$?gà?}f#?†Æö?‹b{?Œ—”?‹C9?…4¥?n?Q¼?S_M?s©W?†B¥?ˆ¿ø?……?xëè?_çÿ?`¯6?~7?‰Ç?‡íÃ?ò?t;?t§B?€µÜ?„`÷?†8?…·¯?‚³P?‚å?«?z„¼?p€?aKÁ?cPe?r÷‘?u ¹?o 0?vI6?ƒMÉ?‡´?ƒFÜ?zßv?~ãÃ?„?†Êð?…ÌU?ƒ³ý?ƒHÛ?€Æ¿?€§g?…)E?„0?€ ?J%?~ït?w^t?sè›?€IÅ?„@À?€Ó?oÀv?g™ö?m»?yá?‚Cy?‡´;?‰À~?‰V_?‰V?ˆâ?‡»?‚„B?qBÖ?bˆ|?pìx?‚wŒ?….?…Aè?„’?ƒÓû?ƒlÀ?ƒ±?‡?‰QŽ?‡'?„–?…t?…Ö‰?‡¯‚?‹Oö?ŒŽC?Œ1×?‰ç?†?„{c?…jC?…ä^?†²?†v9?ƒž?€Š½?E?{-?xG³?wµÝ?s0À?síÉ?qŸ"?mï%?xØv?ö'?‚åz?†1§?†ãü?…W³?‚/?€Ó‘?w$Ý?^Ï?J˜C?Jc§?[ -­?nà?u3 ?p‘À?tÉ?€¿š?}•?r»‰?o_?imz?jY%?|¯S?ˆó+?kE?‘ù?,“?jÞ?i}?ˆkO?r‰Ý?Yª\?f5‘?zãõ?€ãÅ?ƒ§9?…UÒ?}zn?má}?tèÜ?Öª?‡ /?‹M?Œ“œ?‹&?ˆ+?…—N?ƒ‰m?‚ë?…<#?…£)?ƒ õ?‚À„?ƒ×å?…`Ó?†±“?†p?„aü?…æõ?‰-·?ˆU³?ƒÊ_?‚V{?}[œ?n·«?s„²?|@ ?z‘ß?€õ¹?‡<}?ˆdØ?†++?†I?†P°?‡?ŠP?‹vÈ?ŠI¬?‹äâ?‹Ãs?ˆÍ?…«?ݦ?}@³?‚þÂ?ðÕ?xN6?vÖÝ?u?‡.à?‰ýÃ?‰æÍ?‰9!?ˆï[?„ò}??~šB?zîâ?~I^?ªd?~€G?tô~?l<Î?f„õ?f?më¼?~F#?„9w?…ë?†§ ?ˆsÓ?ŠŒš?ŒU™?ë›?©G?‹J±?†Ú¢?†›}?‰¾S?‡y?„Š ?ˆx¸?‹e?ŠˆÎ?ˆ©²?ˆo¡?‰2 ?‰vù?ˆ,å?ˆŽÁ?‹.?ŠIœ?†ÝË?‡êJ?ŠE¼?†f>?ã[?€,?†¨?‹«?‹p­?ˆrí?ƒ0Î?~Eè?ƒ%?ŠÍ”?È>?Žµ?Žx›?ŒšÝ?‰ÏÒ?ˆÇ?‡Y®?ˆ4(?Š.?‰n?ƒ£R?voú?p´/?qb?mÁˆ?t›?zâ?„„Þ?‚¶7?‚¦?†þÃ?Š»ì?‹‹•?ˆA?†ïG?‹ ?ŽA¡?ŸÁ?‰SE?…Ò[?† Ü?‡‘P?ˆÓ ?‹- ?v?ŒŽ?‰ýB?†ã?‡Ñ=?f–?‚N?äh?ÅM?Œæ³?Ž?Ž‚?éæ?ŽVv?ŽQM?}Ý?ŒÀV?‹^Ù?‹?Ô?‹"1?Šh?ŒtJ?Ž¨?Ž½–?‹µ?‹æD?Š$I?‰±C?‹Ÿ?‹:”?‰Ô?‡:®?†iH?€Ð.?qôL?v’ð?ƒJ÷?†š4?†’ý?ˆ%Û?‡}p?… ý?‡£—?‹×\?ŒäÒ?‹’O?Šm³?ŠÑ?ŠCÍ?ˆŒ?„Â?‚ê?¼w?~??sMG?e¿?E£?G½>ÒÂî>çNô??…F?ƒ¨I?…z?ˆFj?ˆ¶ˆ?ˆF\?†S—?„œ?…ûÎ?† ”?‚—~?‚.d?ƒâj?‚q?g4·?=VI??ay?dW ?zr`?{Ú›?iu.?c_H?|I÷?…•y?†ÛÏ?†ˆð?†Ër?ˆ˜ê?ˆ“÷?Š ?‹[™?Š¦U?‡Æ‰?„Ö??„¼?€ #?ucü?ù?ˆú|?‹Ír?‹(?†D2?ƒO?‡ñ?‹àJ?‹¤8?‹õ ?Œ¼‡?‹ä[?‰YE?†Q?€ïú?wëÎ?yw#?‹Ô?ê¸?}÷A?´A?…Á3?…ß{?†Ö?‡W?‚rþ?pºó?kÓN?z4)?†º?‰y»?‡Ò?ƒÝ?~ÿ#?}ey?w?v¿á?xA4?€¼?†?„x‚?xô›?oÍ?rô”?r-»?hj…?gŽ­?u¸Ü?”3?…Ðz?‚ËÁ?€ö˜?ƒÜ?‚×n?ƒT?…¿?…öÅ?ƒtû?Æ?{Ú­?|D?† Ï?øº?{­Ü?~ ç?zü ?v?€ç?ƒŒÃ?„ç?ƒAÄ?|Iu?vìÜ?¨»?‡{÷?ˆ?C?ˆ·è?‡,Z?€Ãß?z „?‚jü?†Œz?†b,?€2S?kwà?s y?„?ˆ^S?‰?ˆõ ?ƒt?l¯?hfŠ?}Э?„OÅ?‚”×?‚Ïã?†Ç‚?‡3ˆ?!ß?iµ“?rI3?‚_£?…vL?„Ÿ?)Ù?}ç·?½ù?„Œ?„_?†“Ì?†`?„Ó ?€³?€¿Á?„µ'?† +?†Êä?…W\?‚FÓ?uLT?WM}?M7?`¦Ô?oSñ?t¨?~z?‚™™?ƒßŒ?…# ?„š?ƒ)?„[’?…uw?…1q?ƒÈB?‚NE?€ÉJ?8£?„Z?…G£?… Ç?…ô?ƒCý?ƒ@Ð?„Ä?‚SË?€¬û?ø/?„"À?„7?„Õ„?…ÂÈ?„ 1?È…?}Îœ?wF„?~GÙ?ƒœð?ƒ€?Zg?{Ô_?u‰K?xúS?~BÉ?w¨¸?Z£Ž?Apá?\n?zt’?€ÇP?|Aà?{c?y}Ù?t¬h?wNZ?€øØ?„@?‚ª°?€%ù?€›L?î?Â7?‚Æa?„‰ô?ƒZ6?xZô?jÉ?uB?€H¶?Tº?€BT?ƒ†+?„m#?‚»?€™Y?~¹˜?z,“?|B1?ûñ?‚ÅŒ?ƒ¡ -?„.?„P[?„×?‚m?|W/?u˜?r#b?vou?}RS?€hé?€g2?–g?}‹2?{šÍ?v Þ?t=]?v „?vŒ¶?r*P?uÛ?}½?€À?à ?~Ä)?|ý?zY¡?y¼d?zÛ°?|7?~ É?zu{?q/F?pc¼?xq@?z€?|¬>?´@?€8?¨2?«‹?£‘?~ì´?}¢Ë?} -D?}º ?~¥'?{^ô?z]|?~–w?}ä?zI?wûZ?uË¥?v©+?zB¢?~ž?C)?{fÁ?rU™?rä7?{Ð ?~Íò?}ö?yYÒ?yã?|à ?~Ý?~f³?€ÿ?~ÿn?xhð?|yR?|ƒ"?w¼÷?l¨(?cu?nØ?zOÔ?­?€)_?]—?|‚Õ?|OS?~ž·?~¹Š?~Áá?4$?|^î?wG›?yÕ—?z¬µ?wv¡?wÇ?yðÜ?{?zRS?{d[?vJy?k8@?qã?{ñ?|¥y?tÚø?p—§?vMD?{û2?}æf?|\¹?zRü?zƒi?{éy?vÛ!?píÅ?{ùö?‚S|?§œ?M•? l?ƒÖ?‚ ]?~'W?zœÞ?&¹?É?}éÐ?uV?u=¼?|?^?~ë½?z3?tZò?y1’?ãÄ?€˜Ÿ?V?€zÍ?„?Ô?˜I?yô²?l¤§?oýk?xw?x½o?v¬Ú?yPö?zîº?zšÇ?|M{?~õó?)è?|`M?}È?~a?z¿a?xûü?u2P?t¯?x8Â?z…¬?|œ?|y?yX’?s‹f?v‡Þ?z}?z7?xx?n ?m`#?w+I?{t/?{ ?wöh?w(`?z¥R?zåê?xÈ ?lIô?YŽŸ?dÀý?uj>?y¢°?wsÁ?yü¾?~?}o?|cR?x# ?nØð?u:å?~|*?~ÀH?æl?€Ï6?~­é?y!¬?z• ?x«?osD?uÎù?|þ?tÅ¥?gØÏ?j%Ç?qæ ?qž&?r;h?uæ>?vŒý?w•l?m°_?e÷_?rBv?o?a†?gG¬?s0‚?uÊ?saÎ?sE?vój?w¡^?t¡¤?q>Ý?r4S?xƒ-?w\T?tÉ?xí¯?zü?zu?xh?vêu?v ?vvÙ?x#?r@¡?qÚó?yz²?yPq?q³ë?o?ri?ugM?x9Y?tÛQ?jdD?ks>?tþ‘?tö|?vè ?y4­?wò­?v¸Ì?w„?w«´?vú'?uÍ>?tê¯?r²Ï?qg²?sÍ?q4!?iA ?g•þ?g_]?oÄ?wÇù?wXî?rn”?s-Ë?tû?up/?qâ+?k2k?k©?kµ©?nü.?gøº?a÷™?_ù5?fëó?l /?nžJ?su?rm ?jM9?fèõ?qç{?uï?qd?nE¤?fÀ$?hd?lÝ!?g‘à?hŒ?kŸ)?l0?e»8?b:Ð?n~z?x¢?xÒ™?rsñ?oLá?ry±?t?t{?rœº?iÞ¢?i¦X?j!õ?`“5?d P?n{ù?s \?rîL?rÕ?rÊa?r@ ?oi ?cÚÐ?]'6?iª°?sC?rc²?oÛ?n -9?l#?klÖ?kÚ%?m½¸?o¤÷?nö?møŸ?pu?qa>?nã8?i«ù?e¼¡?]ä?W F?f¹’?n$?n¶?oáÈ?n6–?iUü?h›Ò?f¯½?[~?d’r?o-?oƒp?oÌÎ?pÅ9?lÖM?e±c?f?jmÂ?n;[?kU‡?gÔj?ib8?lì}?o‡·?n”–?lž?lcL?nLB?lçv?jíž?lƒc?m% ?kvb?g”‹?dâð?ijK?g—µ?f¾Ö?j’Î?k^?kù"?hR?h?Á?lô¬?j¸r?jPä?mü0?mþí?m‰?iáì?c@[?cuè?iÔ?mÜú?mîÝ?m’?k|}?kßl?mOÌ?m (?i­-?hô—?jÍg?ku¦?kò?i%?kFk?jl6?c‚u?\К?\#c?`×Ì?i]`?lÓF?mTö?m À?mCb?miü?mI?m"±?më?lÑô?láV?n p?nq*?mÊ:?m-z?l°s?l!P?i{,?bÕ?_> ?Y=?Tïl?Y˜W?UÇ ?A=6?Q·?e½æ?i;`?jý‹?kO?k¯»?lL?j–9?hñ -?jˆC?k…S?l`¬?lE‰?kR«?k -A?k8 ?j“0?f“?W@?W †?gb?lR?l6S?kÒ´?h2€?c;Ý?c¡Y?a§?fýK?jâF?ia?e¹.?`wÖ?aºÛ?aØ?c³?h°ý?iÅd?i#Í?jW ?i£ ?gŽí?gÚÚ?e?del?]Þ–?Tÿã?Zi~?e[ó?iR)?ië3?iÇÅ?g[r?gv_?i¶Å?j#?jW¬?j-·?iw?hêÙ?i,ú?jð?iù…?fßQ?^ñM?d [?k¹·?lƒ¦?fž@?aHR?g'ì?j€ì?j¯Ø?gã?aßç?a¡?eéé?i/?hù(?e¹è?cH?_ey?dnÌ?jXr?lF?m“=?lÌh?kìÛ?mª;?n*ð?m„»?l‘?cˆ?YÒ¿?W‚?Pv/?U?_‡T?`€Ó?c[S?`áÎ?_Ñ(?^ä?a…·?f.ü?eÕŠ?e³U?eê‚?e?_Gß?WÒÔ?S«Ô?^µ?fÒË?dàI?b¸?f)ì?f˜þ?crð?bV?XÈ\?Oî’?UŸt?]3Ž?`Qg?\Ðß?_æ|?dô.?dÐÅ?b ¡?açn?bZÈ?_¤Ÿ?[­y?Z??[Ȥ?\‹p?]w.?aÙÛ?_ï2?]p?\]\?V5I?]3Ú?^yí?Z$?UÍ?Xw%?Yk“?VÊ…?[Ü?_n­?^7ÿ?]’\?^?]Œu?^‰?]œ/?Zä£?Yr?]g€?_,¨?`®›?_S¸?\nƒ?]Ü?]›8?\êÛ?_»[?_wÌ?^=?^Wî?]Šä?]2Ä?]¶?^{›?\9·?[D?]–"?]A?^ir?_ÈÈ?[í·?WÁ>?] ±?^û0?]ˆ9?]°ƒ?^ª™?]w‰?\É?] _?Zi?UZ?DLü?Dô?RÿÜ?W3?\„Y?WeÍ??6?9×??O_q?TOŒ?XÜ?UÚ%?Rð?Tý”?VâŒ?Z±?YD?Z¾?\-l?Wø?K õ?Qª‹?[¢`?]ïO?[Ïø?Wçº?SF ?WUG?[`?Y1?W…D?Yb)?Z¨?[ú?XÚ?Wd?[ku?Z°î?Yõ°?X‡?Z‘ ?^åÜ?^YB?[Ñn?[le?[;Š?\­Ë?\…M?Yªó?Xe©?Z×ÿ?]š}?]z|?[Du?[Gï?Ya¡?XFU?YÁ¬?Wxü?UΧ?W­O?Uc ?Yå?X^?R¡„?N—?P¿´?Mn•?O‘^?Vu?W¦¶?YªÊ?U¾º?Qý•?T¾³?L;?>’?LÌ -?Jÿ?G’„?P]H?RgY?J»ˆ?P% ?RÉX?L?CÂ×?H{;?QÉ2?U -»?R®4?R¹3?QaÓ?P´•?OQ?IóÏ?Jì?U?U™¥?Rco?R1?S«A?MÛ ?PâT?O¥±?BÛ1?IvQ?=G`?;g·?O±m?VF?S:À?M–5?Pû?Qõ?N· ?Oò?QTW?Q ?Q"?I«r?LKo?P\?NB?O/Œ?N?X?ISà?Cþ¾?G™®?S8ì?T(=?K9 ?9j­?D5P?E Š?J&?P“ú?N|Ñ?K‚­?Lâ\?LD„?RU ?Pëç?M£ì?Nër?QÞ?Sy?NTç?EO?=)g?FÆÊ?Ltò?Qì€?R—Æ?Prr?Mùù?K~?O/õ?Qœ=?O‚f?P¤Ø?NŸ¨?HË•?5“¯?Óh?"î™?>£?E™Y?K¢Ó?P„i?P°{?L"½??5ð?9€™?Aœ?E#?L*Ã?L’?Góx?DoT?H©v?H¢@?GG©?A÷+?5ä ?!Z]>û{º>Ýè‡?'æ?/?8”n?AsQ?H™z?Gbó?C€Ð?I&?J^˜?J;?K>—?KÑà?K #?J™‚?I—ò?IàÑ?K‹§?N‡n?MtY?D`?Fkæ?KLâ?L$?K»ß?I·?JG?IòZ?F)W?J«?M/è?K=o?J­ž?JSÎ?Fx.??Þh?FBª?IOð?JëË?KŽ‘?G70?Jø,?N?MBÊ?M,?KK”?HÀg?K_¢?N†v?Ort?L–j?L”?Lj?EƧ?CžQ?Hr†?GPÆ?Cñ;?;»l?$4D>õö?l¢?+>ý?=nÎ?CŽo?Cÿ5?=cy?9$ð?EÉI?E‡“?E-·?Ew£?E_"?.üv?(}?@pF?HON?KI¬?H»$?CÇ?FA`?G§ ?IÀA?HÀ?Cl€?>??>ìK?GPH?B¯¿?EÊâ?KXs?K#„?J,á?F‰?DÚ?Id¹?F»M?8æ§??Ñû?H:ì?E^?Hìï?K+Q?I°Ý?IÓÐ?DÈA?H§ô?G`]?C®p?Jº??HÌ??S'?A~Ì?GFÀ?I\‰¯?5Êž?D?Gr -?F6þ?HÛý?G¼ù?HÎå?Hg¾?@ê ?SÃ?:yŒ??ô?@ÍÁ?A¡ˆ??þ&?B©w?D;=?E%T?Dùæ?D?.?C×»??î?<¨„?; ?36×?;Û?BwV?BÈ???0?=£c??Ó?A¥î?@ø3?A5?Aá?A\ë??9??…á??ä¶??Sß?@ ó?@‚”?@ã?@—©?>Ò?=¿Í?>–û??u?>ãþ?£r?@‡??Ã?=`?8L?4-Ÿ?4\N?:¡¯?>'õ??T8?>ù¥??¡ù?>Ïô?>ŒB?>u?;–?9D?<ª|?>0?:‘?5d¨?:-Ä?=Õu?>°?<º??8ÿÒ?8h9?4Å?(Á±?+9?7¬y?9Q£?9!?4šî?6†÷?8î{?5^5?4ë=?6s?6¨·?7¼•?7š?1 U?2Õ;?8í1?9¦ú?9êd?:9¯?:;÷?:í?9Ñ„?8£˜?7Ú?1ë?3hñ?1¨[?.>u?3.Û?6ƒo?6½?59è?5šü?6Å?'w ?#…s?)a¶?,8"?)ˆ?(1_?+Æ‘?-ù?*¥h?(2Ú?,0&?,ÝÑ?,-?-Iµ?,œ÷?,÷ñ?,ä«?-3~?,òW?*à?,ç?/¸ ?-Ì3?*P?,ÏI?/G?,Á?+zY?+r?,O{?*/>?+­¦?.0T?-­i?*qC?-(?0j©?-G©?*Y ?+ F?-¥?)YN?'Á?-v?/˜?,4¯?#³F?#l?)Ô(?* Á?*^©?*¢×?,šô?,f?+|l?,G?+–?%ÈÃ?%!?%£?)ßv?,C¡?+"®?+Ëò?,&?+Kï?,Š?.B?-ħ?+ -Ú?%ô4?$ïÇ?*É?(Žº?'í)?*áÀ?-Åš?-Xí?+P?+>Í?+V?*¦-?'Ë?%U ?+¼k?,]ö?'¢ø?%7"?rF?%à-?+ß?(—W?"Ug?'?×?);?%¨?ô?&Ò¿?*•?*Ÿˆ?*O -?&Ö¤?!«X?'ž?(çª?)Œâ?*|à?)UÅ?&|?!è?"Jÿ?*)å?*ß©?*Eà?'F(?%.·?'Cð?( ?)«ò?#Uç? d=?&Ù ?%¯?$s? {H?%ÆÖ?&»?%-4?&?%[?!J1?#Â…?'—?'Öž?'Æñ?'ªt?'ºI?&ö?&o6?'¶A?'º‚?'ÚÐ?%I?!õ–?&b?'&Î?'J?&G˜?%¯S?'1·?' ?%1¸?äŽ?–|? oý?«P?›?/é?>{?PÍ?áÚ? Õ5?3ù? ‚?Ã[?·9?“U?Ï:?“(?%Y?Œ?¦‡?Ã÷?àD?ÞÕ?C[?/˜?ŸK?å?B?òà?|®?T?„?xò?¥ý?÷À?®þ?6q?,Æ?Ks?"y?€h?… ?E?¢Z?Î?ÿn?Bq?Š{?B?®Þ?…‘?‡?? ‘?k"?&?–5?¢Ï?<‘?åK?ñ?ó@??Ï?s9?4Í?ƒ°?ÌÞ?#Ü?­å?rî?¼E?D?Œ»?÷ ?°?3r? †?Œë?W?9L?3ö?to?û?î{?*¹?çÞ?sÇ?¨Å?À?|&?U¡?%@?HÂ? ?r“?½Ö?Ðé?f?TŒ?ôA?Dˆ?q?ùW??¿:? “?4µ?fn?ö?÷7?M?š(?Ù®?m÷?ƒ¢?C?X?1?L.?KÞ?”c?ì ?T/?&?Ë?i?ä?‘?"w?ØË?_ˆ?W?bÇ?Ã?” ?)V?ò‚?1¸?!Y?(ã?áv?"g?Ã-?Id?:ø?z~?¼Ò? -ç?C\?/d?3?\êÂI>ùr¾?=?×? Ö? -ºI? .? -=˜?ÇI?\¥?E? »ð? è–??>?H±??LÔ?Íÿ%?ÜÉ?`š>ñJ?Ž?ñU?7¸?ë»?á‹?Þ0?S>ùÿ>í±m?©G?Ï?Õ"?„è?^Õ?Ax?–î?ÛÕ?Á‘?:®?Ä?M¶>ùµ ?Û?#?Åt?G®?ê¡?. ?áR?õ ?3;?Áº?!þ?DÖ?í+?¾„?t -?š_?ÓÇ?Ïÿ?<€? )??̱?~ã?2?‚ÿ??9ç?,w?IL?$™?5?¶Ä?ïº?%"?”0?Iá?vp?þŸ?['?&”?;»?Uè?ã³?²;?Ñö?ž?i?O"?kO?¿Š?rZ?Bâ?ÂF?Ç?4?øó?U>ýOò?íe?„ ?²B>÷é“\>óÔ?(l?åd??»é?U?™Ã?0?‡å?þ¨>ï ÷>üŠ¼?w?È?b?N”?E¢?FÈ?5ï?Â_?+'?K~?ÚÍ?/]?´~?d”?JX?¶·? -ç>ëä¬>õ ?á?YÐ?2 ?ð–?X`?Æ?’ ?ÍÕ?‘:?Hç?‹Æ?Åø?’h?µÈ?øU?#­?Ÿp?xß?°&?]?‚›?Y¿>ÿª‘?¨ï?:ç?®ë?¹)?){>øŠ§>ô‰ñ?>µ?>ô%²>ëÏI?Ny?®ï?ȉ?›ç>þ`í>ÿú{?h©?¯¯?³i>÷ç>ý%? ¶>ÿ>û÷>óv¸>ÇŒU>Ôb/>ùa}? >>ý²>ü/>þ§ï?Ù&?¡Ý?°?¬S>ÿ ö>ýËV>þÀ?œ?Öõ>ÿá«>ý¦T>þ’ˆ>üÎÉ>Úà>Ó§Ò>ù³O>÷ôc>õŠ…>ü³ñ?”? Ã>ýõ½>ýý=>þ90>ÿ¥“>ÿ ? >þ–i>þdû>ý<„>þŸl>ÿð5>ÿ0D>ü^V>üÁN>ü…ƒ>þ¶>ùc‘;âÌŒ<ý<0‰Ã<–ér<°Ç<¸DZ<­ÃD<™ºf<‡.kØ<ˆà’<ŒŽ™=;¦Ó=-gl=”=]ž<ô¬Õ<ãg¹<׋ý<ÐÓ<Ñg<Øh<ã8¥<ïÍ<ùœ=¿á=¿¦=¶Æ=Þ¯=%ô=(=z¼<Þ#v<À s<¹Uþ<Ä?.<Õî†<æ/<ö^°=Ù=’-=,*=1¼L=*bÑ=Hõ=î/=hd=Õ|='1¸=5oJ=@yœ=C n=>tr=6‘´=,ÜH=! ==ÿ£=<<þɽ<óÁ†<éá`<ÞžU<Ú><æþë=|N= -Ä= = -C==èŠ=¨X=#ò="¼ =®*=Z0<ò+ã<í!û<ôEE<óóœ<å¥Ü<Ñ ç<¿V<®õŠ<¤š <¨/S<½(<ÙÜ~<켯<èî*<Íå<§(u<…Œ =j}=zîæ=y¸m=ff=Kúv=7™K=1*=9Z²=L8 =aÎC=p¿R=pO¾=]©f==(ú= Ý<ðª<â‚^=Å}=31—=Zç=r¦=| ã=ƒ{0=Œæ=– =š|Ž=”Ó—=„¾T=Zðð=*U&=-W<ó^=á¤=>_Ð=kM=€´£=~–ô=oÑ =a7á=R(=<ªÚ=$‰û=Ë=<>= ö=„=LH=”˜=QÔ=…s=š)‡=¢û•=ž´=Þû=h>=6ñ©=>=Ø“=& !=#ª_=!Š”=2›=T"¨=r—”=z¼«=sm‚=tó·=‚5t=…8¼=u½¬=PNµ=. ñ=6= »î=;Úÿ=fcÞ=Š™¨=Ÿ­F=¯„Ë=¸Ê<=½ =½Ä=µØü=¨—Í=5~=—Ý6=”|H=ºó=‹Ž`=ŠM¤=‹î¼=Ž;=Žß=Žn/=-\=Ž™ã=m,=Qd¸= #<õãÿ<ú–x= N¸=R‹¹=ƒ=œÃê=µB>=Æê=Í^¢=É$ø=»Ì'=©Ay=›Š#=™Ð£=ž5»=žß=ß”=¥ê¤=º1î=Ñ=ÜÌ!=Õõ‰=¾í¿=¡l=Š3p=†¥—=”û§=¦f¢=­Éê=©mQ=’=ŠÙï=_U =$‡ <þÒ5<õŸ-=½È=$s=!¢˜=1så=G÷-=m×=‘]=©ýà=¹—Ã=ÃÁe=È8­=½ìF=¦®J=—_=¡¾ =¾Ùp=Ö ê=Ô2=¹¬Ø=—D'=€5n=tÅ¡=xç\=|BD=‚bØ=Žb=šÏ™= h•=›b"=•bÈ=›Â=®B§=Áï¼=Íûå=Ò©}=Ðià=Äò=²m=äG=‹4„=rÆF=VxJ=Qˆj=o\8=’Ó_=­<&=¿éO=Íqm=Õ´þ=ÐÙF=¼ý„=©—4=ªp=ÁZ<=âŒp=ü¬>¹(=ìÍ#=Çj\=  m=†qM=z$È={¥2=ƒK=¥M=—ýS=š"ª=•úÝ=–Ø­=¥=¼¼,=ÐŽÚ=ÙC_=Ý8X=ä†Ø=îv‰=ó3A=ëiô=Ùä–=Ê°=Ʊ=Ég==Ë =ÃÏÝ=¶Ä…=­ãx=«f0=¦¡à=› |=j=Î+=žôÇ=´ ö=Åt‰=Ìu =ÈÞ=½)‡=¯•Š=¥6=Ÿ -„=˜mU=Ž…=…£Û=ƒ= =ˆç =–E =§úp=·B“=ÀÑ=ÄlŽ=Ç*Ï=ÈÝô=Éö?=ÌHx=Ïìa=ÒÈ=Ô =Öª›=ÚB±=ß|Ã=ä:x=ä`à=à0_=ݳ‰=áö=çÄ>=ì,E=ë×=éÝ»=é{¶=é4ç=ç(f=å/y=äÊz=ä>ë=áÍŸ=Þ»=Û/r=Û½=àç2=é&=îï=ï¨=í{w=ëz =ê‰î=é§d=éõ=îÄn=õi*=ó‚=ã”=Îâ =Ä› -=É Û=Ò¦í=ÖeÜ=Óç=Ð -L=Ñ…õ=Õ ™=Øåå=Ý°¾=á1=áƒb=âo=çKO=ðKÿ=ø;=ùŽ=ðN­=áô¯=Ý^l=æÆ@=î=ˆ=ä4û=Íß=¼Øí=¹x=½Ý =Åš·=ÏÖÙ=ß F=ò S>†#>>>Á>¸Í>@>7w>ï> øŸ>¾E>ž>Kh>|=þîß=úÖ=þ»p>Ê(>½š>´y>„Ò>kÕ=ñ;L=èZ#=ëF”=ñû=òÑX=ð™=öA(>Ð> -9È> Òº>ˆ—=õ“×=ç»=ì¼=þBÑ>>"> -äV> µ:>ÁÆ>Æ—>»8>5›>V>W>P+>ú=ø)ƒ=éÍ=ìù–=÷âÖ=ýØ=ýþ=ÿ#¾>»w>&?>Jã>õ¹> 3>B˜> p¤>• >–á>`Ð=ü>=üϲ=ÿû=þ’ù=üÎ=ýÐe>—<>tX>³I>í˜> xg>O=>’&>Ç*>Ùe> Ö>¢r>Ôï>Ö>!Œ>ö>!Â> 3k> o> ­>t>ý> O²>dø>;C>ü@>… > ]¶>Œ>§´>ôa>îš>—> Û'>a¯>>Ö>Qæ>ÓÏ> ™> à¹> ê1> 8> fÕ>×-=ýŒÆ=ö’=ûL>@Ü> Ø>}>ŽÚ>˜ª>µº>U>S >·c>‹>óþ>Ø>¬E>œÅ>¤>åŸ>Ö>щ=úÉ¡=îŠæ=ê»p=í™=òZþ=õ"`=÷?÷=ûï%>]‰>H*> ¬>êú>àš>/Â>50>`Ô>Û>µg=õâ´=Ýö;=ÐkX=Ñ^’=á0=÷©X>P> ¢ >ç>-=þj†>ƒh>ËÃ=ûѦ=ó@/=æËò=ÔÜ=ÂòS=¼BÑ=Áðü=Ìo=Ø%œ=ç—=öI½=ÿ™ª>=Þ>p=úÀ=ô‡Ù=ìÚ=áçq=ØÂO=Ò°¢=ÈDó=¹à\=¶6.=Ç=â®x=ø<œ>Ø@>~Ò> X]> ŒR>XÇ=óÚý=ÜB¼=Òº%=Ö¥N=àˆ=ìpº=ö¸µ=ûÔ¦=þ¯>{-=þû=÷¿õ=ö. =øŸZ=õî÷=îÒ=î’é=öÜ¢=üA§=øþ;=ó‡Â=òc =õɬ=úññ>ì>’N>> —*> ¨F> ¹¯> -(<>$É>p‡=÷=ñ=ê4³=æ-{=è4„=ì47=ñ¯§=÷w=ø¢Ú=ò¼n=êkÛ=æÊ=äÞA=Þ®i=ÑõÆ=ÊTÅ=Ò1=æë=úWÙ>0^> g> „è> AP> -A3>A=ýÝ=úe9>êi>K>¢ >Þ>©=ñT­=æqD=ä-=èÍ@=òå=ýr­=þ5=ðnR=ßZ_=ݬ~=ì¶ö=ø‡p=òU:=áÐ=Öfû=×/4=ÞÖØ=æŒß=ì¾ì=ñ'×=ïr =ä\ï=ÕÛÃ=Ì¢f=ÉÉ=ÊÐ=Ò%Ò=ܳI=âÒ•=ãp=ái©=á3ý=ç’ø=õ5®>q|>ŽM>•8>¦>˜>?º>«r>Næ=ú½=û6> =>†ð> %ˆ> *=>(>Äâ>¹m=ýO =ð ò=ê1¼=õL²>>d6>F>õ“>!q>+ˆ>)>¯=>ÜÙ>“j> -'=ü¢ï=éCz=èÇ=ù6O>ˆ3>ù‡>{Ä=úÙ¦=úˆ>Ä„> f¼> 7O>ñÎ>¯7> G(>о>9®=ö±=ò{ÿ=íêî=> > ù>Ì´>G˜> G>ø/>$> Ô‡> ÆU> ò=> çÈ> 9>¹þ>ÛI>!Ê>@>M> -f>ý> Ž2>ŸI>Q¾>~F> =>"n|>¬_>>d>€©>žò>¹>™> Õ>QÆ> 8z> ê¾>3‘>3‘>¿F> ú>â2=í—§=Íߎ=­K =«=^{þ=)´}=½P<Û™y<èþ=U?=Iã©=†¼`=«Æ=Ï ã=êr =ûÝ4>`Ê> -g3>¦>åb>ä=>$U.>'5Ã>%\Ä>%&:>(“æ>+¯>+N¢>+±>1”k>8¿~>8m>1p >-„>1…1>8£>9ùê>1ÀÉ>#‘é>·>Þ=ò -=ÇÊx=—ôY=Z•€=$ßž=^Q=DƒZ=‰ít=º»À=êt‘> -­•>.èÆ>:é>@‚ê>Fe–>M¾Æ>SÞÆ>Sôß>NÅ…>L¦Ë>R\½>[Tõ>`ÛK>a¡z>aÛö>c°•>dʵ>eˆ¤>i_C>oê[>t.>qE`>i¡!>bט>^>Z#Ã>ZÐE>c$>m»#>uœÿ>{Pƒ>~S>z•>pÆ]>kFÜ>oUS>wÑj>}i>~µ¨>€Yå>€Õà>€ N>Ë|>°Ù>„žt>†Ë©>†ý>†}>†¼_>†Ì>…¥>„[>„%>ƒÔ®>‚Ã>ƒÇ>ˆ.>Œ‡c>Âÿ>‹Q¥>…­ >j©>y¸ž>zlN>O7>ƒ÷S>‰Ò!>8>•\>—¦>–ºO>“Íž>‘•>>‘±“>‘Å,>Ž¸>†Ãd>‚¢>…ûž>Ž£K>”I^>– j>—2 ->˜bö>˜B>–~Ó>”>Þ>“š>“X–>“¤>“Â>•w/>˜ä/>›N >™äu>”9Þ>Ž?¢>j>¡Q>’y’>“=‚>–ø»>œ£Y>žßÁ>›ÄÙ>˜'«>˜š>šÞf>šÔx>—|>Õ>ŠK>‹I¹>“Áâ>Z>£|‘>¤š >¡š>Kv>›N>›’ƒ>›w>•”¤>‹%Ó>‚î¶>~W>{{$>{g´>}æ2>F³>|=¿>x0>x •>yéÉ>v¿ì>h±Õ>Sš?>H©>S©«>k3#>x>…”>††Ë>…ón>„m_>‚¤>‚‹@>…3N>‰Y>Œ‰}>Ä>‘WC>“$ê>’s>ŽÀ>‹‡W>‹U–>Œ0D>ŒÁÛ>Ž‡9>’.2>–>>˜€p>—ûj>•›>“(l>‘ß>‘©¥>Øp>Ž±O>>ŽC>’ÅÃ>™u>žË@>¢*>£·ý>£¹û>¡ºÚ>œI1>”†>‘>–a>ž“Ý>£Q«>£AÔ>¡6½>Ÿ¥Å> ²>¡o¶>¢D>¢!n>¡>V> ´>¡•„>¤tÂ>¨ýR>­&>®áb>®< >­Ûe>¯j>°?æ>±_=>²¯~>³Þ>³#%>´>´SÅ>°==>§>œ—k>—X ->™¹°>ŸäÃ>¤*•>¤Þ›>¦²>«- >±-8>³IC>²Q>±;>±Yð>±Ð>°Ÿü>­À&>¬°á>¯©á>²Ú>±‚>²š±>¸Ý>½>¼W9>·ù¶>³¹m>¯_>ªÿ>¨ø>«³(>­žë>­îÌ>­Ó>¬ß>¬³^>¯œ»>µŽ>º‹>»ëÀ>»t—>»Ûm>½Ü}>¿u>½¨ >·"Ô>±#*>²Ê¬>¹ä¯>¿Â'>Ñ>Ä]u>Âiÿ>½ãW>¸Ù¼>²?€>©,§>£"]>¨¨>¶ö|>ÂÅ>Å”>Ãm½>½>`>¸ßÜ>ºÙ>»0>¹Ž–>¹±,>¼lÛ>¿È¶>ÄJÇ>ȧÙ>É‘>Èé‰>ÉÈ6>É >ÃuX>¼x´>¹k[>¹Q¤>¹…ˆ>¼þ£>ÄEš>ȱR>ÇÐ>Ä™z>Æ£>Ê>ÈÝ›>ÄŠ&>Á[†>ÁhÇ>ÆoY>Σ÷>ÕU¾>ØÅ >Ù$Ø>Õµæ>ÑÕ>Ï¥¶>Î:„>Çt×>¿þ~>¿Ç>Á“>Ã(¹>ÉŸÅ>ÓÏ&>ÚHÞ>Ù*x>ÒsÝ>Ì'*>Ê?Î>ˉŽ>Îc]>Ï#ê>Êû1>ÆÐ>Ã@A>¾fK>¶¡>°õ>µkã>¿ø >Ç>Ç™ª>ƾi>Åæ>Ái`>·þ³>­>§jŽ>¨CÒ>ª0¬>¬¥‰>±j¢>µz>µ~.>°–³>ªVí>©s>®P^>´@ >¸À>¼P\>Ábh>ÌÙ>Þ}>ìŠ(>ñp>ð†4>í4¾>éÏ[>çT>áíd>Ù¬>Òù®>Ö’e>ä>ñ¿‹>÷Ù>õ š>ô¦0>÷Âä>ûD¥>üݯ>üà·>÷e>é= ->Ú%‘>ËÍ>¼Ø8>¼·G>ÒûÚ>ê Ã>óêk>ùJý>þ±ì?eÏ?&e?VŸ?Tm>ó‹ª>é{s>íÜ›>ú\?]„?iá?õÒ?DJ>ÿê×?¸\?|?‘?C?ôÑ? O?³s?!‚?ý?Éy?j±?÷µ?ò`?Èh>ý™M>ô²*>ù÷f?9Ø? sP? -÷€? »¦? Ùf?~ü>þê>ón >øf?GÖ?ˆâ? T2?ÁÚ?o? R? ã+? &a? #E?ç$? -hï?Íè?š? -ͯ?‚n? »?>ö?¾8? aD? `?gÃ? …0? ? ›Œ?(?6Ý?Hµ?ZH?]?^’? ã|?ñ·?Aþ?l?xü?*?F‘?Y?ö­?9B?ºv?ïE?–î?³´?ƒ?ÉA? ä?®_?Š«?”l?nô?%ðõ?(nð?&Æ”?!+¶?ë[?$…?]_?øÿ? Õ ?#V?#Þ±?#î—?#¯?$§?&3 ?%g-?!”,? H>?#l°?&Xú?&¼?$^J?"ým?"9â?$?(nx?*4?)„·?'§¨?$Ÿ ?"lî?$$¨?(Ó?.#¦?3B?6#?6b«?5t?6=(?8~i?8´?6?_?1}Ö?-Ä -?/ÏÛ?5‰›?9ýs?;ÓY?:µò?6+>?1+Â?17?5âé?9 -j?7¾5?5#?4ž~?6|?9¸?<ùñ?<û?88?7õ«?=7.?Bhb?Do?CX¦?AÜD?Aí?B+8?D ??D`§?C?@‰??Ô»?>jÎ?<Þ ?=¡[??A5?>¡ê?;Ùl?;n?<††?= - ?;ƒô?8ì?5Fû?5»À?8 ?9r?5ȶ?0?H?/bW?5Ïd??à ?F­œ?HRa?G^f?Foâ?EÀ_?Cd¨??½é?>{??›†?>07?8Yç?5ÿ?9R›?=“ð?<+?8ª?8 ?<âÜ?CSÃ?HÏ?Iæ½?J~/?I·f?F^m?B,%?A;?E{ ?IÆ?J[?Iô?Fùq?@i¼??@y›?GO?I±?I°×?IÄÐ?I†Ø?GÀ±?E.v?ChØ?Aø–?@Ãü?B,k?E¿Î?H½ ?J³?I¹?F[?Dw9?BÚÞ?Ba?DÑ9?Hj?J¼†?KŠ|?Kr?JYã?Gvs?C´Œ?Aqª?C=?G1 ?I÷?J¥ù?K7?LR–?LÇg?Kí?Jð?IÆ?IÛ€?I—²?H¼ø?I Q?JY?J9?K¢F?M[?N65?M‹Ÿ?K·›?JVÇ?J?ä?Ib—?F÷?FK?H'„?Hû\?HÎå?Iû?JÓK?Iç,?I?IÅú?KnP?Lü°?MÍÛ?MÜ'?M8‚?JÅä?G—?EFª?Fï?I¿R?Já!?J"Þ?I ?FÔ°?C†/?AÞº?Bö?GLÂ?L½^?O½h?OÖ?Ny\?Mž8?M‚q?LÄ?GOu?Aò{?@µê?C.š?G ?K,‰?M>é?MJ?MEî?MÍÒ?MÁî?LBÓ?JÌ?H6µ?G!H?HžÐ?LYÞ?NæF?OR±?O?b?O°X?OÒ;?N¡H?MvX?N1n?P @?Q‡s?R<€?QÑ]?Pœ?NsÑ?NÐå?NÍÍ?L?I5×?Iª?K=H?J¬7?H‹µ?Gîª?J4È?Nb‹?R L?Rór?Pío?OY¸?P`,?R^ ?ST–?ST-?S<Ç?Sþ?S*ª?T›?TŽ„?SØ?Ri8?Q‘â?R”?Rªˆ?R ˆ?PÀ?PA‹?Q\×?Qî ?QÂÇ?S˜Í?UòX?V,ú?Uœ?VVa?WñŒ?XšÌ?Xj ?X†.?Y/à?Yãn?Z=*?W)Ã?X—?[?U?\›%?\²_?[`Ò?Y3à?XÍ,?Zt?Z|?Zv"?ZK?XŠ?W•4?XÍR?ZH7?[ÿÛ?],>?]Ä÷?^Âü?_uË?_e#?]±®?ZæŸ?Z”?]I»?_Ý?`w“?^ß4?\•]?\¯Q?^Ýà?`w?`‰’?_sâ?_\ ?a:3?býÞ?cfè?cN?c‚þ?c½®?c{?bñ?b ?_¨Î?\ýR?]ˆ)?`ZG?b/'?aîc?a[ñ?aÎM?bE?b›O?cƒå?dFA?dA‡?cõ)?c)e?aÀ~?`ôç?a°?c;?d<ß?e¹ï?fg©?e ²?b\þ?a¡–?c¹„?eh+?eNÒ?c#M?_Å’?_(®?`ÁÁ?\É-?K¨ù?/ú?$r?9³?RµG?\ä™?_É8?bA?cا?R±?R Ð?Q¾?HïR?9`©?.²q?2E?;þ>?<í ?6sü?:3ú?Gª?QbT?TÜW?UrÛ?TÎ?SÞ?Le7?@z?=Þ]?Fê•?N -Ì?NÖ?MV·?L~?G6ç?Bÿ?E™c?IŸ™?MsU?OPÞ?O(ý?P`?PÐÖ?Nl¨?J.ž?D«ˆ?CT³?F¤~?GÜQ?IV?M‘?Suo?WRª?V—?QÕ?N²J?R3?Wâ/?[Ä?\€¸?\ ?X-Q?NÚ?B*Ÿ?Aê?MÞ?W1n?YàÃ?W„?Tmó?Uøb?Zu.?^l?_A¦?^ÿ9?_ˆv?`M¥?`ÊÅ?a˜É?_³¤?vèµ?w]?v?t¨*?pÎþ?p5ú?sê×?v˜Á?vò˜?u?qÀÒ?py¤?oùÛ?g‰?^ܶ?f\?rR?u#?tû?wD'?wF?t±?ttš?ré?n!ð?qÏi?y7œ?z¨?v¦(?sTé?q¨l?s+²?x»,?}p–?~o5?€=?Îò?¼?Yâ?ž?€ôÍ?}ûP?{xx?zå?yâ/?yÓ?xÐS?sÓÅ?iØn?e>o?pîú?€ê?ƒÝ?‚b³?8é?€¥p?}-?wùÉ?u ›?v0Ô?y„Ò?xÞi?v,B?s6!?pá?pk2?q6p?rÍÑ?q ?e0?_É%?l á?t>,?uÑÉ?tóÑ?gJ”?V?T/¸?^‰Ä?aµð?a Ç?mzÜ?wÉt?uæf?vÅ*?}7E? -‘?{ë]?y^6?w%C?w]÷?sF´?pÄu?{²^?€Ú?mV?`1?m¹¾?u>ƒ?n÷Ÿ?g7à?e Ä?p£?‚{ù?ˆ}G?ˆbü?‡§Ú?‡a:?€Ýd?j]ê?fv?zç!?‡?ˆbÔ?‚§ -?vÒN?h´3?ié?~äá?‡??…ÿ‡?fs?wó}?uÞ?~Z{?€Ï=?€J?€qö?–?{¢j?r“?lÁ ?m.ê?c±?dP?vÐô?z• ?nè¶?oc/?z0p?€kì?{ôP?qÉ›?qM-?tÌx?uÜv?qÿõ?p ?wáU?z”ÿ?zÈ|?€ü±?€ÃV?z?{­Ø?~±?z”ü?v ?y¾?|áJ?|!$?xuö?tw‚?vf×?rž?:£?€“ø?€Ö®?€&x?~âÃ? ?ƒ t?ƒ±¿?ƒÉ3?ƒù?ƒþ?ƒÜ¢?ƒ8Ð?€Àj?}[Ô?€Ì@?ƒi ?„ Ç?„&?„P?‚âm?çU?‚ݳ?„)4?„­ƒ?„Õ ?„Ú?„Ëý?„£Á?„±?„W ?„´?ƒÌ*?ƒvZ?ƒn´?„´?„w9?„›„?„Ó°?…Û?…J?…TÆ?…E×?…M?„ƒ[?ƒ|í?€äý?}†R?€Ó?ƒ}ó?ƒÃo?„!E?„ã{?„åH?„p^?„9ë?„Ï’?…‡`?…Çû?…Ç?…ÀÈ?…Í?…í9?†?†5C?…×µ?…(?„¥?„Ô¨?…ú?…R?…Êc?†.ô?†Î?…‚N?…YÃ?…¼è?…’Ã?…Ý?„P`?ƒ€É?„{?„®?„f…?ƒÔ ?‚c"?€•ñ?€Î}?‚zú?„»s?†7?…å?…‘–?…¹ÿ?†'X?†¤?‹£ß?‹ŽÍ?‹ÏA?Œ¹‹?¼>?ÔÊ?Œmr?ŠÛê?Šë -?‹­G?‹uÊ?Šõ#?Š¬$?ŠçÈ?‹ÑŠ?ŒP]?Œ[w?‹î?‰ü«?‰Î9?ŠÉG?‹ãÐ?Œr?Œ¦?ŒœÄ?‹úŽ?‹Y?‹M6?‹—‹?‹Ïº?‹ì-?‹éÔ?‹e{?ŠÓH?‹lÓ?Œ_¶?ŒgW?‹Ý®?‹J´?‹Q¢?‹µô?‹ž ?‹Dä?‹@?‹^—?‹ý ?ŒPå?Œ*É?‹Ý?‹Á?‹·6?‹‰T?‹C?‹Lñ?‡“4?Š*F?Š’d?ŠŠ?Š¸w?‹!?‹L•?‹:»?‰Q3?ƒ©È?€²9?…9I?‡E^?…?‡¦&?Šz?Š÷X?Šyê?ŠFÉ?ŠÍ?‰µQ?‰íÌ?ŠE?Š32?Šð?‰Ì?ˆ[¥?„’u?ƒÓ8?†õ?ˆ?ˆœN?‡+j?†j-?‡h²?‡g?‡šf?ˆK_?ˆ–Æ?ˆÅ¨?ˆÌ£?‰8U?‰ž“?‰ŽÎ?‰½?‰`?ˆû?†‹R?ƒ\ú?…”®?ˆ–?‰ ?‰€?ˆš?‡«z?‡j~?‡°±?ˆ=?ˆsç?ˆã ?‰-?‰<Ï?ˆÂþ?‡?†Ó3?ˆe‹?ˆ¿ä?‡/Ù?†Žz?‡Æù?ˆrÐ?ˆ’i?ˆÂ4?ˆì@?‡ê?„¾Ë?ƒÈÏ?†KÆ?ˆT?ˆÕ ?ˆ€t?ˆ.…?‡Îy?‡ä`?‡±?†c¼?„äÒ?…¼\?‡½’?‡Ç.?„ø%?‚a ?‚×]?ƒà5?„°¿?…¸Ö?†ã‡?‡i²?‡2‘?…µž?…œX?‡v?†£?†Ö?†ÊÃ?‡H?†O™?‚C~?yÖ?uyT?tæ¿?vÑ3?yh?}Ù?äµ?ƒÝ?ƒ—ò?„)Ý?„X¨?„”l?„v–?ƒ£Ž?‚Ü?‚–?‚ ?ú5?„.?…€m?…hS?…Û{?…›³?…Šk?†h?…»?„AA?ƒ¢ë?‚"N?ƒO(?…!˜?…]Þ?…è•?†ë×?‡?†é\?†¸?†øá?‡Uí?…«?ƒ³&?… -?†Ü&?‡ˆQ?‡yE?†Ë?†RÅ?†¸?‡ ?‡˜_?‡îý?‡ß?‡Š%?‡L?‡7h?†¦+?…ò§?‡f?ˆ#ô?‡ë?ˆ3²?ˆ‘Ç?ˆa‘?ˆ/X?ˆ¹S?‰_\?‰…?‰Œ`?‰ô?‰N»?ˆÿ›?‰ï?‰¯v?Š í?ŠXÏ?Š…ç?Š¡"?Šs"?‰‰?†ü?†~£?ˆù“?‰£y?‡cê?„ x?‡lD?Š¹Œ?‹Wr?Š¬¢?‰¥z?‰lþ?ˆÖ¦?ˆq?‰0É?Š?ŠAó?ŠX5?‰^C?‡)2?‡ä ?ŠXô?‹»?‹IO?Š»H?ˆö?†N·?ˆ?Š¸±?‹#³?‰Ë?‡ Â?‡Õø?Šµü?‹c?‹fD?‹nC?Š¾2?‰Å?ˆ±p?Š9ñ?ŠÍ›?‰Ñå?ˆûÏ?‰”1?ŠV?ˆÔo?…>†?†‰®?‰ª-?Š`¹?ŠH?‰¼þ?‰¥?‰h:?‰Q˜?ˆµl?‰½a?‰èä?ˆ~å?‡ñM?ˆsg?‰ØU?ŠÍú?‹?ŠhY?ˆ¤¾?†OÇ?‚wõ?–¢?L7?….?‡ù?ŠB³?‹^é?‹˜?‹§5?‹’(?‹ˆ÷?‹Ø?‹¡×?Šü1?‰Ë?ˆ[”?‡Ýy?ˆ† ?‡SÑ?ˆ»Ó?ŠÁ.?‹W&?‹,X?ŠÿW?Š™ë?Š9J?Š,G?Š_¼?ŠŸ?ŠÇë?Šµt?ŠhŠ?Š¢%?‹?‹ë?‹2?ŠˆÂ?‰+§?‡O;?ˆ'‚?‰ÞB?ŠQ?‰¬R?Œ¢Ë?‹Ëº?Œcg?ŽÕ¯?àÔ?Oë?‹h¶?;0?‹¿³?ˆ5“?‡Xâ?†„p?ˆ4¾?ŠÒç?Œã?ŒÔ?Œ#?†ÙÊ?‚Ëó?„.?„èÂ?„ÕÞ?ƒÐs?…Iu?‡ÍO?†Ê?‡â7?ˆÌô?„µe?|ÈW?zi¸?€ž:?ƒuŽ?‚a&?~˜²?}¹F?~»,?‚ªÎ?„–L?…ó?„I{?ƒ?…œV?…òî?†‚æ?†?ƒ -H?…«s?†ò?‚Öx?}Æ?vå ?~ƒ?ƒGU?…jf?…†|?†?…ˆ)?…Y?†™Ù?…ÖU?…aa?†Þ?„ús?ƒq:?„Væ?„£¬?ƒ¡ ?ƒöÁ?„tb?„Â"?„’?„³Ð?ƒ²›?>?ĸ?ƒþ?„)˜?ƒG?‚¹Ä?‚É.?ƒ3Ç?ƒ5²?‚ûG?ƒM?ƒ`Ë?ƒ -º?ƒs?ƒl?ƒÀ ?ƒº:?ƒj½?‚ø!?‚µk?ƒ†?ƒÙ?‚s?‚‘ -?ƒ\®?ƒPú?‚ER?=¢?€å´?€Ëx?€^@?ö½?€|?G?§[?±‘?èÐ?Ìr?H_?I5?‚_#?ÔJ?€³?€}Ã?¿«?€³?šP?€ Ú?€pï?-¢?È°?‚±?Çk?€ôŸ?¢~?Œb?}ÔP?|´c?zÜä?zë?~`?€`?~×?{ðp?xâ?w|ã?z8y?|›@?|¥¯?yÈ,?o Ð?rHÐ?~f÷?€Šç???}<Ó?§?K×?€¦Ù?€Å?uM±?oâ4?xÚÖ?¨á?|Ìä?~€q?ƒÉd?€þÎ?€j­?€7?q‰\?xó?…ü¹?…ï‰?…v¸?ˆ v?„àŒ?€«Æ?ƒÕ‰?€Ÿ“?rô]?€»‹?†Mg?€H¹?p] ?sÎs?}}Ä?y Ï?y¥²?ƒ¬¨?„: ?‚À8??ƒ¯Ð?‡‚?€Q_?nŒë?zD`?†?ƒ&?y®q?|ç¨?ƒ§É?„ ?}Æ?vKJ?{§Ž?ƒúÞ?‚½c?€!·?†'å?‰KÎ?‡Él?‚mû?~ðG?‚Ó?„ƒ*?ˆ"_?ƒ§?~âF?†6 ?†Ò™?K?e¹?>?^¥?…&¯?€ßÁ?qéº?s^ñ?~2:?‚Š?…° ?†W*?ƒ­Ã?€Žæ??„tN?‚'A?~Æ ?|ߥ?t—?r»é?}!¦?x¾È?ilŒ?eL?hE…?x{d?‚Òá? ƒ?x“Á?wh0?z–î?€d%?€‡M?tÌ ?v6à?v%›?wÆ¡?š?Œ?}^ì?|ØD?€1?€O?z/Ð?w‚à?}Ó}?{r?{ƒk?{Í‚?~ÉC?„œK?„Ä?‚Í?…¢?‚¹/?| °?€É{?‚['?€?}Y×?|Ň?r[l?pPÃ?$®?„’™?|L;?w}­?€ºé?‚õ?€›?€yÑ?„!?ƒ²þ?‚–‹?ƒså?…©Æ?ƒóp?€5?RÀ?|yH?}2?z~Ù?yóŠ?~–Ó?€E?x?€Q?€\?€ -?‚,?‚ÿã?d›?€£‘?}ôr?~À*?€ð¶?}Œ?|Ž?ó?€¬´?~æt?|»Ï?©ø?+?Ð?Ég?z??Å?„,ê?‚Gô?€?æ?Ð`?„²æ?ƒÅ?·È?ƒÔÉ?ƒð„?‚“š?€Ù2?‚K?„b?@?€ Þ?œü?ƒA?ƒ ‚?‚‘?‚$T?„ñp?ƒon?t¥?„›?„¦?ƒñ$?=?{ãæ?~ì³?‚mµ?ƒÓ·?‚iD?‚Ñ`?ƒ[ê?…‚Ó?†ô¹?†ô?ƒl?ƒ¹u?ƒÍñ?ƒVù?ƒÇ?€r€?ƒG'?ƒó‹?~È?u“w?sŠz?zy2?ƒú!?…î|?†à?†‡ª?…`?†gx?† ?…ôM?„‘U?‚Bù?‚h'?†Mè?†ú»?ƒçg?ƒu?ƒãk?„³?ƒ¨?|Ú?zGš?u[?nO?s‚›?sP?hQ×?y)å?€Kµ?€pŽ?‚e:?‚YØ?„£_?…ï?ƒ/?‹ò?‚ú?ƒ¡9?„±Ž?ƒë¢?‚dÞ?ƒ¦?„ ü?ƒ²9?M.?~’S?€'$?ƒ¹ó?„ØÝ?„Äg?„8ž?€»?uê?sšÍ?tß¾?iL?‚Q.?‚ ?¨·?|3?v®,?zrŸ?ÖT?‚eÎ?ƒ?‚o‹?‚ÛØ?‚¢T?‡d?‚s?€V4?~«J?wÆì?r,¨?w…o?áü?þb?ƒ3Ê?ƒÔÃ?ƒ]?‚â?ƒÞ/?ƒ7k?‚·k?‚êÿ?‚]Ä?O.?€íº?y?çÒ?‚;x?ãÇ?‚µ?‚‚‘?‚£?#¿?€% ?p -?¼‰?~è?<¦??AŒ?Aª?|?—»?Ów?W¼?S?a[?nÏ?!ç?€ø«?€îc?.‚?8?€Õq?€õ¬??€c ?~:µ?3¸?í$?¼O?š?é?ž\?8ß?~ÄA?)}?Å?~pÎ?~æê?Î9?k?~Î?~tÚ?~@?|?{‰Õ?|þ¥?|V?{¹±?{ð ?zéê?{3¥?| -)?z ?zs ?z' ?xH?w…k?vSÛ?t27?rš?qa?uA#?xt\?tƒ>?tH•?x÷Ý?y¿“?uàË?t Ÿ?u„?uû?t¹¯?shŽ?s¡?qs½?r×J?r’?s°æ?qdÂ?qWÄ?sÍû?uè?tŠ…?rè¨?tØÞ?u?t´v?sÖÌ?sN#?u .?v?vG_?v+î?v ?r†ü?n—‰?l|ë?k¬‡?p?rŒ?paq?p†ô?r+,?t'ÿ?te?t7?s`?rÊ[?qÕ´?p³ ?qßp?s"?rœþ?qÌ?qZè?pOÃ?l0“?if?mMÚ?pÔÇ?qF_?m×?n“Ò?o†z?k®?m·U?p…?p –?o(;?m\«?l?l6¤?k½$?m (?pç?pÞ?m&‘?n-¯?ouÉ?n¬¢?m¯^?j&?h%?i…?kÝ?m1?möÐ?pSï?rž -?qp"?nh?nåÿ?qzŠ?nä0?h|l?eÖ?dƒÖ?ej9?gÔw?m¸?i‚&?a¨?eÁ•?fI?kŬ?cÇ -?Vz×?S®Ú?]°Ô?aؤ?a˜¼?f_?d³ö?ZLy?Wáß?`¼?^x°?a„U?`mF?VL?Z"*?a:?^}?e›p?cʲ?X}À?_ìæ?a&û?`Ëð?l/~?fÆf?`ÙÐ?bZÙ?\'?_´=?gºþ?fˆF?]ŠO?],i?cä?aàØ?g_?m)Ë?eŒ”?Vg­?aL²?dÁj?cÚ·?gâ?i»¯?dVê?c˜y?h€Â?cJÈ?_|#?a¾?_©“?^\y?]¥¸?oêô?l,Ú?]Íy?\qý?g2?ck~?]ï»?]WB?Zhx?]P&?`Ðô?gî?dQg?aº:?is¹?j§?Z¿¿?[o_?h_U?p>N?j6z?dož?^KÇ?eB?iþb?fÅÂ?jh?g…d?c÷?kuÖ?hY?d+–?ež¨?bø?eN§?cñÀ?d<Â?m·?kÙå?c¾´?a|\?b½x?h-g?e1?_Øu?_«[?_‹1?_}?^†­?]Àæ?]ä/?^ °?^ÏD?_k&?_{?_Ö??`¶â?a ?_,Å?^Ÿq?`ì?`w¾?^΃?Yˆ?`ˆý?`?`Ké?_Ê—?`bµ?`»Â?`Tx?_?\mÛ?L^?e? ng?N -?]ö?`e?a˸?_¹Ú?\äy?`PW?`¡ˆ?`0Q?aIs?`õˆ?Yßo?V‘?`˜ ?cx?cn?czO?cOÿ?c§2?c˵?cyU?bܨ?b*2?aR?`çq?aî©?aÖÜ?añ?að¤?b+I?añ]?a8Ö?a„µ?bm?bBª?b'z?c?P?dc?cGú?cä?bü‡?bm ?_ÌL?_ ¨?b ?aDr?^ív?aK6?aðk?aS?aº?b]?aÿ.?a¹?bÈ?aø?WF?_Έ?`Üš?`ÙA?`¨Ã?`Œƒ?_¶p?[Èû?U{?]…?aP -?a I?a´_?`ª‰?^ ð?Z'}?^9 ?`Ò#?bh÷?aî?a3¦?aÓ?`ùM?`Ž¸?`î:?^´?Yõ?V£u?[í?W 2?`k?[îI?[¦?]?Z¬C?ZQ?Z.u?[Ñ?S¤1?X"&?a+z?_êþ?W°è?M"È?K“E?NÍ?P ?U÷³?Vÿ¿?R ?R‹ã?Væ?X.+?Wáå?YíÂ?^3ü?X¿4?WÆz?]´o?_o ?]Ù¿?],ˆ?\\o?Zp®?\¢·?^&q?\äš?Xs|?MÔŠ?Qg.?]¸?^:˜?]†?\;|?\h ?[â?Se?NU±?Z$ò?[µ?SHÍ?B$m?Iùœ?WÃ?S·9?Wá?TÁL?Tm1?V(G?R|?K%?N?J¼Ù?OL!?R å?H|+?M±n?WqÁ?Xd’?YXÊ?YVï?Wj?Wõa?YÌÝ?Wég?PT?6?8j¼?? þ?:Ç ?G0?M˜?H¯?FÛ?G[Ö?I ö?JŽ?Eq?FW?1—D?)Ýß?+ªx?1çH?<å£?@©8??Ø??n?HJÁ?Ag?4ž?8Ú%?:‚?@Žª?8@‹?8–×?;¿;?9J ?=â?=œÍ?.I…?41¯?>‰ª?9t†?6fï?M­?Cœ?3¨'?C‰-?8ß…?9?D”¢?@a?<À˜?9ó!?8è?A×_?9Ý?8ó=?Bˆ?B ?8m?7}R?<?B©?7î(?EFÁ?G€f?>•?@•?K§‡?FËj?9¼$?A3þ?K;?H0;?7†Ö?8ÃÝ?CúÖ?HYz?9]?<9?HŠf?Lž?Il?>âØ?F8œ?DÝ€?Eüy?EŽ[?=¥l?E°(?F•S?BK?EX²?@²U?Ljˆ?K¦P?@­š?JNÙ?C€g?J+´?K.D?;°?BPr?>¬?BÌ‹?>Íu?6!?/vx??•¨?9¼Ú?1ÿ|?<?:åÎ?8`?7®7?:4ú?:¼c?.Wý?4³k?GT1?>u;?/“?97$?E[û?8¸ð?9Ux?={¤?B±?6 Y?<­®?Bí³?=â±?6#æ?C¿ó?M`‘?=bð?4”i?;˜)?H@o?=Kò?0z?Cîø?Hû ?>q…?)à@?1éÔ?@Pc?:|?:¡Ì?=5 -?CQ«??Þ,?:ØË?>Øé?@mÏ?3Ö?5-)?;;?@ [?=Ûƒ?83/?=ü-?>^ê?<Ç?@Û ?GH®?F‚ì??˜?4¸Ú?6±¸??FŒ?9¶À?2•>?;ƒ?GS¦?F î?>h*?5›?;Gþ?7²?4îp?5ñm?8#³?6 ?<'??7è?9Çs?3³ÿ?(Ę?7ÛÜ?TL?6á^?0ÅÑ?4=x?3¿Å?93˜?> -„?<ß?7‹D?4œ’?2Œð??-Z?AXö??|ª?6Þ¥?8Xe?;ûb?8Bç?<ôö?3O1?6µ?>Ø?;?5?-r?9Xx?7²Ï?2Ñœ?.ä¨?;Ì?AÚé??8 ò?3²4?5þë?=Ÿ´?1rl?2C?Bÿ?CqN?:cÆ?3Ýj?1&v?3¥–?+AË?5mÚ?=ÕÐ?=0Ÿ?94¡?8¦—?;<‘?>0?;ƒ•?8Õ?;"??õÒ???;ï?A„Ê??ý?:Ì°?5ŒY?=ç`??5Ë?0cŽ?84?A™û?>KÛ?=sf?<Ôè?>Ÿý?:EË?6®œ?<µw?>??Û¬?<•?3Gw?:S@?@°í?BÝ?:¬;?60Q?@ÃË?D¤Ž?;Zx?;lÐ??yŠ?8&„?0!‹?6ðn?B,??/ø?3üí?<¦?9:é?<èË?=Ùæ?<—³?9¤?6ó?oP?:ÆS?:_¢??áÿ?7žN?7yb?9ù=?9Ú|?7?;¬Y?>ƒ&?6íX?9‹=???¡??2½?£?5÷#?/·¯?9‰?:Ü=?7 ??;÷ã?9Ó?=°N?>ý\?:Y?5}ì?6š?6KE?2&s?6Ò=?;©²?:~Œ?<½X?>Šå?5<?6Ôæ?2â?6+?9í?6¶d?8Ý?;3L?9–?8¬^?8Éï?6ê?-I?6ƒ?:è¤?6Í»?3€Å?5‡°?5•?57Þ?5û?7êS?6™Î?8cÏ?6Tª?7i?7 ­?3ÉÍ?,z?)~^?+[¨?5ì?7Ù?3j!?0*m?.ö´?2l?4=ô?7¬˜?4X5?3°°?5¤\?7P?5@÷?1Í7?5¼?/~e?.s?6â?0Í?.“?6â?5Êï?6†­?4Vè?1ÆÝ?1Qt?&û·?/=?44Ý?4Î{?0yÆ?3?:?7Eœ?7[N?40ü?5?4ìß?+¿ ?,ÿ?1²€?5û¼?4h>?0Å–?2·V?2A@?4q¶?6pÐ?3|?2²o?5·þ?0ݸ?(ðb?)+_?-¡?3…x?5Aß?/³é?.,!?5]d?4=G?3GŸ?4òŠ?5'?1ß?3Œ?4‹ú?2¥µ?/1?.ïS?2z?/Ã7?1 ¦?2hò?1 •?0­Þ?3];?20¬?2Ûò?3’ -?3_?2rö?/n~?(îé?+½]?01“?3ìí?1j£?0b‡?4 ?2âý?0ð ?2™?2c?1Óõ?26Í?3?2Àn?1÷Ä?1.—?0üz?1?.šÓ?-…à?):? -û?,v?2ª`?2P?26ø?2S†?2 ±?*$ž?"2X?*ƒC?.YZ?-rú?/º?-?.ÄÒ?2 2?1m4?+zH?+ªX?1d‰?0¼®?1?í?1*`?1ÁT?0ùG?.ÌW?-®Œ?0VN?0ÇÂ?/St?-\›?!²ê?'´{?.Ïj?..“?/Ò?,¹-?-ˆÄ?,Ó^?-ì«?%ÊT?&‡?(Ú!?!í‹?$Ë?(¹Þ?.IÜ?/!S?.ª?,þ¦?(»›?-X¨?.õÉ?. ?*ºÇ?-i#?.îr?(7®?ýN?$£?(G?+”¦?,Ëê?.N?+´ê?(€s?(6L?#]‘?&û -?&¼?,x7?.zs?-’1?-‹ª?*²?*}h?-6?*!N?+cF?*á?$b5?!$Ø? ß-?*!æ?,¬­?+¤k?*±8?+|ž?*>Ž?,A?,ÄÆ?&ã…?Õ(?)¤p?)^,?"ô?ì?'ØF?s–? ›¤?)\è?)28?*“/?+pD?+"×?&0(?*Rä?+Y­?+¢ˆ?+Ÿm?,i—?+Ôö?&Å?#‰:?(Ûð?|?€¦?&Â?"AO?#x—?ë¿?¤Q? Ã?$\R?!|›?!õ?Ú?%|l?(4x?%åe?$—†?&éf?(+w?£ç?#šø?&E!?'g5?T'?f¥?UÄ?“Ø?‡?­ ?L?²ì?Ü?ƒb?…?×? 8?/?»‹?M¹?_“>þÒ?«n?yò?Ô?Cò?î? 9?¢¢?Aî?‡Ü?,þ? a«?ÀG?l? Ÿë?¿˜?•®?ö¶?  +?ËG?/? ÿNâ?u£? -+b?ê? «?Éû? |? ®"?Èú?ÛÒ?úc?•r?ˆG?ßh?ŠÒ? À?[Ý?€¨?„ø? g?_5? ã~?ú–? vå;8 š;gó ;Ýï;³÷;Û'O;ü­<6í;ï¢~;Ѻe;½[ý;¯â,;š¨Ã;riè;-!N;ò#;(Þ;72ð;ˆ7ò;½×•;ìåv<óÑ<bU;ìÐÉ;ÓÆ;¼Þ;§-.;šdm;©ª);ß©<À/<=ø Í<Ø®U<ðÀÂ<÷eE<å -R<¾eÐ<–<~¡n<Ep<ŽŸ|<ŸÊÂ<¬®n<¸®<É - <ß<ìFU<âæß<ʆ³<º£j<¿§0<ÒlÕ<èÝ<ÿ±ñ= [= ¶²=‘ -=*Æ<öN2<ìB£<ÞbÛ<Íhg<¿ï¡<¸ík<´·H<®C7<¥’—<¢<¬Z;<Á˜¡<ÒëÁ<Ö¶ú<Ô±,<Øø™<ã¸Ô<ì<éÁÓ<Ú…–<Å™!<¸M<¸<›<º <±ž{<¢Fä<™Ad<šZ(<œÙ<™½?<˜&<¡¤1<¶[<ÊLÀ<Í°A<¹«U<—–¯=—Ó=n¸¹=A=‹=ùJ<ø6õ<Ò9V<ÜÚŸ=""=P0´=…¦:=›e =©Ì¹=° á=ª´ü=—=ý=ƒ6‰=€W™=“™¶=²Ð£=ÌÌ#=Ñ}=»x=“c=S&H=è<=á}=È=ÌÅ=2=SL)=_ÇZ=U+³=Isf=WĦ=ƒto=ŸAN=°º’=¸×m=ÃÇ =ÖÎ0=è'=èLÑ=Õ0=¾ ¬=²n­=²C\=°u=¢¡™=ŽÓ=¾Õ=s©z=cg=D]=='¨Ý=%=H8Î=ƒ—ñ=£2=³æÆ=°k=œrÙ=ƒJX=[•=> ï=&<¾= ú–<ñ!²<ê‘Ó= Â=4i×=iìß=Œ(™=™½G=ž9×=ã=™!=—Á¢=žL=ªŽÇ=´ j=·9=¶‰=¶[]=»àÍ=IJ/=Ç·´=¿Ðv=³_w=¬B=®,f=´áì=¸¨=³(Ê=¨˜F=’=—W“=˜7²=›o]=šêŒ=–¯s=°ó=‰¼=‚ßè=ƒ£G=‹p=ûü=Ž£q=…‰=zˆƒ=w=õ=Ø=…+Ž=Š©Â=ŒÂ“=„½û=amÖ=4s&=£æ=yÄ=)qŠ=%=‹=¢í= -Ò=!"==± -=R9á=Xs2=Tø†=Má=?ä&=(X= -í°<å{Ó<ÇŠH<ºsß<Ã\y<ãE‰=Šd=£Å<ù˜g<ã‚b<âiÑ<÷Ü"= j¼= ¿„=c=þz·=öy´=ìµ=ßkx=Ó`G=Òð=Üû=ãu =ᬢ=غà=ÉU=¸Sd=´‰*=ÃÃ=ØI=åñf=èGå=çïÆ=皤=ß6×=Ì º=¶m=£èø=•ÖØ=“¹8=¡Ñ§=µW =Â=Ä.a=¹u==¢E6=†ôR=fc†=b -Ø=ƒè`=¥ü=ÌA©=èIÍ=ìUT=Ú:Ð=Å3[=¼î=½’=žž=Õ¹Œ=ëˆú=ý6j>‚ê=÷¶Ó=èØf=Õ×Î=¹¾*=–{Ô=r+A=XÑr=X6¥=V Ë=M/O=UÕ>=‚IÀ=§0Ç=Êé=ä‰þ=ñî$=ñ@a=âL=É^t=­|É=Ž±Û=Yó¸=bS<ú)<ö¨=¸™=§=xÊÄ=f—*=Un»=KH^=>¸¢=+!= Eü=/¨´=Tö¥=x/==‚E­={…µ=oG2=mû¢=të×=yZ$=v‰É=lhz=]Ê=N0=IA=Z8Ÿ=yØÁ=ˆ@=†“ö=s÷=X$E=TíT=jbÇ=z)ä=vÙ={Ï=bþ= $=—Ël=w”==RO5=^?a=…l=žÃ8=¸n=Ñùo=èo­=ðZ=åf=Ðñ=ÁØ;=Á—P=ˆa=¹/9=®ªz=²¶?=í8=Í=Çé$=ÁΠ=»ì¤=°•=«£*=¹ðA=Ôÿ±=ìÖ@=ø5=ù«Z=øXË=÷c§=ö@|=ò±=æ@S=Õo=ÈÝW=ÀB¥=²W‘=žHì=Ž›=‡È=‰Å4=‘ƒ>=—uS=•9¦=‹¬=vfà=Pº=,0Á=C<êi<Ãã[<«Gã<¡M<¤éÅ<º<ç2B=’*=:Ì×=_hú=xý@=o¸=5T={Ñ=sDö>J–=ñˆÛ=ßž®=Ú£—=×’Z=ÅŽÃ=¡Þq=µ÷=a:Ä=\‹·=S»_=:Ÿ?=¿<ð!Â<Ì6Ù<͉<òH®=¾=<¢=d‡Š=ˆË+=¢ø‹=½=…=Ó¾×=é÷b>¡Ë>7¡>ïq>ÅÝ>Ž‡>—`>ˆÖ> ·¡>,\>70Ê>>Ý_>?[×>5¾">,>-š¦>6T¯>=÷¼>@—é>>î>9‰ >4ÙU>2ó+>:oP>LZø>]øÇ>gH4>jÜD>g¼Þ>V‹b>;oº>+£“>3¿>H,>Y[>c"_>f 5>d#->d>/>k:ê>uµÅ>€î>‚ØØ>€œH>{gQ>}Â>€®“>}ly>uAR>mÝ>eÕt>^q™>`åa>o Ð>€k>†á>‚é0>d:®>8”ž>

    KŸ>å>Bg>=>d ª>Fw>†à>>ƒåx>{M>sY%>oÞê>d:>C^>;ê=õÜB>B(>(Òa>Qa!>mÏú>Àú>„ZK>„ -À>~å¯>ni>]¢W>S“f>Kp2>C-">Eâ>UØE>b¹I>YCˆ>7ðÐ>—Ë>jå>22(>Kt>U5->_Q­>n=>m`ó>R£m>:0>C;B>_ýß>iÿ>>TÆã>3’³>"¡h>0|¾>Tû­>}“ï>‹û3>Œ£µ>…ðë>5>Ͻ>Œz>‰_>–)8>Ÿ‘7>ŸÖã>™ûà>“Z¦>}>ŽmŒ>ŠVš>zk|>_©´>Wþ‹>]´[>^ÿà>Sô>Dg>F#>WŠ>f˜f>sÄq>ƒ-U>Šö>‹Ý—>†â|>{­‘>f²N>Xt.>XW¾>ek†>tJö>{Þk>|øn>w>fðø>WÑ}>XÅ{>aºB>d.Í>cÈ>lº¼>SB>…Ø‹>ƒée>y·È>j¯à>]V|>OÙQ>Ar…>5è >5š{>B?P>Wû‹>lÅz>u£>v›>vš!>t:×>i >J˾> ì> ˆ>ÈJ>=À)>Xš/>b÷>]€ð>Qeí>Ga³>C¸º>DP3>HvÄ>MZ>O¬µ>Pþé>ZF´>lïÆ>|F>Y{>}ù›>öO>…ª0>é_>q‹Ö>eU8>_Š>\~v>aŽŸ>kù>mq·>ZM><î$>/ª>7¥>Eðó>Nð|>Pö0>TËù>]÷@>bë\>_…J>^ Í>j¬]>€6…>ˆ„)>…Ê®>t:>gŠ]>o÷Ê>whŽ>sé>u½_>‚g=>‡aV>‚$Ž>l$o>Uhp>H²>Fâ>IÛÎ>K¾>D›Œ>C§*>PÂ>`J>m!‘>}b>‡“$>wP>_x>‰U¢>‡ÉR>ˆ. >ƒ»>m#>Uö+>]ÿ'>…ų>žV‘>ªï>­‹Å>ªµ)> ’>‹€ƒ>c>*èt=éuu=©øF=Ã?>K\>Vë´>†L>“Y°>EÑ>…öÜ>‚î1>‚gš>ÚL>…oÊ>‹pí>ü›>”¢µ>›þª>¥‡ª>²“ª>ÁËß>ÇD—>½>¬q>ž•–>‘1@>X(>pK¡>vò ->{ž>ltW>h0ž>„VÍ>™åµ>ŸÈS>“R=>‚‰`>y>‰º‘>£­p>»z>ÇÑY>ʬa>Ãr<>²æ±>Ÿƒù>ŠÕP>c-é>8áÂ>0¢‚>=ø>L2ž>j3l>”%>©b“>µC•>®+ ->Ÿ‰F>™/>šž>>íÖ>ên>šg_>™1>–Ô•>‰~å>gºÙ>Q4c>cšº>…åx>“>”ì>•Ka>˜RÑ>“KR>‚Ã+>\ý>K}£>Uù>>ci>iíi>lŠó>`‹ >F4>*ÉÁ>-þ>*Ñ">Q>M>5>’æ>¨%>§ ->»Š(>Ü¥º>óÑÏ>ôÛŒ>éÇR>Ü@t>Ї6>Æà>´sG>”;¡>iÔw>_q¾>üx>ž>Þþª>ßJû>ÙO…>Ý»–>èc>ó6—>ûlu>ñg½>ÏÂ$>®Î>Ÿx2>›µv>¥_¼>¼¾·>Ï:#>ÖC*>Ý_Å>✯>ä.>î_¡>ûx>ï\È>Éiò>®h¤>²ÞÜ>Ū>ÖOÍ>åªÌ>ï\>ç ±>Õ>Ðíÿ>Ýö½>íxf>ö½ˆ?™²?:?íð>è`|>ÔË>Ôð¬>Þ©>ãQ»>à L>Ð#ß>¹3=>­s$>ºß*>×ß8>ë ð>è…>Ö@­>¼LÒ>–$Q>YÖ{>=ûÿ>sTÂ>£È>ºØ^>¾ÓŸ>»j>¸"Ù>»Fð>ÃûË>Èó>ÅȬ>̳ê>ä‘Å>ù7»>÷N¸>ä²K>ÕÉ>×+7>ÙŸ>»ßÁ>I}>f¹>`x>Ÿè´>­KÑ>È[>èŸ>ù…Y>ù8à>ä#²>ÁÝ>²œW>Ã7ö>àWa>÷º©>ÿ‹7>ôÊÊ>ßÎó>Ó'…>ÙIÖ>å«>è>æ¼ò>èHÆ>æRv>Ûîi>Û@œ>è=²>èT>ÑÌH>½2J>¯>à`—?†¾? pè?iâ>î3E>Ô¬š>ÑG{>åe?¥ì? -1Z? -¸õ? ³e?up?™?#?©>óÊ>ݬù>Ñåã>ÔA}>×!>Ñk>Ç´h>¿&>¼ž²>ÎËë>ì£z>ù“ê>öÃO>ôªK>òÖï>í©>탃>÷Ü? U? 2P?¾?˜?ü›?^l?ìú?2ú?BÆ>õ >øÚÜ?e›?\Ä?!z¤?"Ú{?¦|? -Ž°>ÿÓ¶?Je? -Ó”?E/?hs>ïþÀ>å>ô¹°? ï?nx?:?O?K ?#û­?2H?2Îg?) ç?!0? È?$¼?'‚$?%ÌJ?VB?S?íß?À?Üò?ê?öÑ?C?&»4?&óÓ?¨À?üˆ?øö?çh>òÍŸ>ß8t>Ú¦„>å%">öK9?À?§!>ý…%>ôÎ7? l?í}?èî?Åi? ýâ? Ö>?¢6?º?só? •&?JZ?bs?Éì?}+?ß?=&? ~‰?<÷?Œa?ã?")»?+[R?,A¸?(Ã?&Z?"µ?F? ­ý?bZ?½?*Œx?-µþ?&X1?JJ?»Ð?7þ?'ãà?'D?%ˆŠ?$@Ó?ûâ?&? -9?©ã?ŸÎ?(å?ôÑ?Or??$®X?/0ñ?06Ý?'¬?’l?nû?á“?ËØ?¢'?Œ?•›?šA?©?Ô‰?¢—?3?nò?FZ? š©?3#_?@³X?@ï?6d¨?-Ùe?*Æa?.¡?5ñå?; Ÿ?=áü?;r¥?5¹w?5þí?8—@?7}|?6C¤?4l4?1¿?2 ï?3·à?3c?5·?:ý8?7‰ -?,©y?&Á|?&ä”?%ò ? è?û¾?Ûé?Åd?#Ø?&Ç?”À?‹?”¥?sä? -Ùé?k÷?#¯¸?,t?/¥Q?*[Ü? &?ß1?!!0?1 -,?@á_?FZJ?>…Œ?0+«?%£ò?!¨†?? ‹î?Po?1?qö?'Q®?-üì?,?'Ϩ?)?18?4+ ?.w ?%’*? %?iV?"ô[?+|?-1?)Ê&?#Æ ? ³ ?#x?$0ê?" Æ?"gÇ?'L?/”E?6Û5?4«.?&Èk?”a?Q)??€?ü?Ñ?#¢e?%Á€?"\?<ø?—Œ?J?%9?+‰t?(|¢?!‘4?!^¶?+#?5½Ï?= Y?BÕk?DJ)??Ô?;Wï?=ÌR?Aíy?;*—?'R?•F?à?Ö?úÎ?% \?+H1?0‰1?2/è?0ÜL?4¯?8ܘ?5 Ð?0ü?1Ķ?5h?6O´?7¡?r¤?4òº?/{&?3+º??$=?I‘®?IF ?@#?7ƒ ?2œÒ?1Ïq?78Ñ?=Çg??X2?=ØX?œ?7ìÌ?4Þv?6^¤?5b)?5Ù1?>¥?Eÿ0?BgZ?9¸V?9¨—?AËâ?FP?D·??&1?+Ñ?0=¬?+sí?!ùÜ?'?=6?Q¦4?^-%?a:^?^([?U‹,?JMø?Fèª?GDƒ?DÙ"?HØ?SÂÔ?Wú?N??é}?7§Ç?9’§?A¶Æ?Iy³?Pö?VÑÝ?Q’Ã?<¦r?"@??Hk?}È?3;î?;È?9"‰?>×Á?L8?W6½?_&n?`àI?[~B?MÄ?B“?EÔ€?H…?:B?)ñ”?,TD?>*?Lâ?T5þ?X²?Uû’?T6?Xo?\€£?`È’?däù?c&®?]@Ó?Zʲ?TÝé??˜?,1Õ?9†ô?S¬?]²þ?\€Æ?YrQ?N.ô?@Gn?<¥£?Ap?Gå-?Mè"?TÒ?[pS?_¢ü?_­í?Z™T?R¥?H,?BÚ?>fÝ?2'?(CÊ?+»?4ƒ»?=—?G#|?Jiz?GÞª?FŒo?J•¿?KÎt?H‰ç?J-H?L[´?J Ÿ?A1¹?7Ø?7%u?9ùÄ?8„Ö?0Ôp?(Üþ?-6y?<`³?D{ ?@¤?51?&Y›?,í?#­ý?/Ǭ?4‡[?4­ß?55½?2BZØ?9û™?7é?%öA?”‘?Zn?-¥Ü?F½?W‘p?\•@?Oì?:Íþ?2T‚?4Á[?9êŸ?Bù¬?NQ?T¶?Tªv?V%B?Y7’?^ ?a˜?YðW?EA›?4¥"?7Á?;•¡?;S¢?@8N?C???B\?HgB?D]¨?@Ä?=wÎ?,Ÿ?}Ù?#?+`?0åÇ?7³K?=èA?A&3?DÉ?Itƒ?KôÁ?O­·?U3f?RÔÐ?HéS?@?6ÅJ?-3?1•Ö?>r`?CIô?@%P?ä ,>ýÕù?~Û? k[>ã¡ç>ì X?•‰?/›?7Äx?:(Ì?5šJ?'Þ’?åø>çB%>ëïÙ?‡¦?@f?Mk½?Qóy?QÈ»?<¢î?'Ô!?+I?4¬s?=’?Hš?P~?SD)?O=u?Hzç?=h?&²?~ø?À ? #?¿³?#?÷?>óo?S#…?V«ÿ?Mô®?Jqt?SKl?]iï?a't?`h±?V§ò?Bp$?,šÆ?\?&¶?Dl%?Zã*?`?W_T?I ?J7‡?YY?g¢ý?i8ý?dd°?e6ø?i§Ä?lóa?pŽç?eŠ‡?I©í??©?Cuù?>S.?@eØ?M X?Oø.?J2ß?V— ?lŠÜ?sŠO?jt!?Xô ?Bª?.Ì¡?"~?"Á?-Ì?&H?ÊŽ?Ð?A-?Pªã?OÇ×?P¬u?` ?pO ?nú®?b]·?V¹Ê?Pù)?WÄT?mßI?}èê?{Ê?w¨È?|Ù?}G?vÁ…?p¶Ï?giU?Qô?=ü°?Dñ´?U#î?Z”?b“W?t`Ÿ??€Ú™?|†?€/º?ƒÐú?ƒz?8\?zhõ?y )?ws?t¶‡?s$Ê?qÝP?r†;?ph?gvN?`(]?\ D?B·?$Tù?0]G?Se"?dNT?i¨…?uE?}'?{8?u!d?e-7?Ti?[µ{?m7™?q…·?kÍ÷?iuš?e²E?^¬?eâ?vZ½?€Xû?„{?ˆ•¸?‰Õâ?Š3;?Š73?‡vo?ÅÈ?}ò|?~:X?z÷ë?x1 ?u¼?jD?T?I)?^p¡?|’p?ƒñ ?:Ù?k†?‚Ì\?‚ê(?€±?{Ý°?zBŒ?|Ž—?|´}?xEÇ?ox?dç†?a *?dÐ?gý?bBã?S?JãQ?]aÃ?lšœ?n Ö?o µ?bI°?H8Z?>žð?M«?Vì*?T_ù?aã?v+¢?ˆ#?K?ƒúÀ?†µ?ƒ#z?z%?v}?{wÂ?yK(?výÅ?€ÑÀ?ƒ€ó?rŸf?Zë€?b?h@á?]óû?UÕÑ?Yÿè?iëb?µ?‡m?‰®0?‰cZ?‡>µ?}r1?a é?WkJ?nX?‚‚W?…8?‚?Q?v¢Ÿ?aË}?\:×?r°Z?ƒÚ ?ƒ^œ?zÉã?oÈß?nä&?z›F?€^"?€Ü)?~rš?uBŸ?qñô?pV?k -?f¥?\|h?_Ìq?rùÃ?r¬?b}R?eÙ?v÷â?‚V?~ƒî?r[o?r³„?v•?{—õ?|?x¾6?{Æ‘?z¨Ô?{\5?ƒén?„bZ?|Ò>?xœ?w8P?pÝÞ?lžÚ?wÔ¿?€(’?zu±?k¬|?a0š?a¢ª?h†l?sË‹?‚ ­?‡i?†;?„ÔA?…„?„¯£?Øš?x†?nâß?v$b?€™à?€º×?~’¹?|^ë?|)M?~!›?€(?…o?‰ ?†["?‚Iâ?f¿?€á?ƒßò?‰\?‹yj?‹0n?ˆ-Š?„`Z?ƒÉf?„WÐ?ƒc%?ƒÏ×?ƒåÆ?غ?€À?€Ö?ŒŽ™?Ž—ñ?‘4?å?Œˆv?ŒZ ?¯‹?ßÁ?ˆuC?‰T ?X‰?r×?Œ_?† &?†øÄ?‹’'?cø?Š#?‹Ë+?Šþä?u#?Šõa?Š6?‹¾W?ˆøÖ?ˆü?Œy"?‘ï?”¢?’Þw?¬C?aŽ?–{?’!±?”Lí?•Š‚?• ?’?Œ”#?ˆíV?‰.\?Œß´?Ž$[?‰«¶?ƒœf?…ÉL?‹ˆm?Äš?Ž®1?Œ¤µ?Œ(Â?ª÷?‘?Œ}?ˆÍ?‰†?ŒoI?‹T–?‰ÔH?‹ü2?Š#?…•°?‡AÀ?ŽX?Î0?ˆ:¡?‡Ë?‡|?…°¾?…ñD?…˜¢?†È?‰['?‹N¦?M÷?Ž ?>?‘J?âÛ?Â??’·Ó?“°í?”µÕ?”O?‘s\?Fî?‘Œ£?”š?–Û?–¼¬?•Ü?•1?–NS?•ôë?“?•S?Ž—?BE?!ä?“3I?‘Ê|?#?ˆ¹±?Š>#?“$Æ?˜0D?˜T?˜OÅ?˜å­?˜g$?•îÇ?’G?Žñk?Ž)?ŠÍ¶?ˆÞÓ?‹ô7?ŒW“?{ý?ŽnY?‰¢À?†p ?‡¶?‹$}?ãQ?ŽyÝ?è®?‘2ü?ü?‚ç“?ƒ8?Œx?Ž8?n~?k`?z“?Ž[Ì?’¼?“W¬?××?6.?‹H“?ƒáÈ?€ÝR?ˆ`ñ?Ž«ü?‹Xñ?†×Ü?ˆbÀ?}?“é—?‘`!?…}?kŸ?g -Ï?ƒâŽ?ŒŸÇ?‰³r?Œˆá?‘f¦?‘9c??‹o­?‰Ü?Œœ@?¾?I?‹`Ï?‹—G?‹r†?ƒ¡“?l«¿?k_â?€#?ˆç?Šèª?ƒÓÝ?{ˆ?†%–?‹ê¸?W¡?Lg?Á?‚L?€?‘#B?’ö¡?’‡w?ŽoŠ?ˆ¹À?…q£?p?xëû?„¶?…7?”<$?“Õ[?‹gP?…Êë?Œ²Ã?“("?“!?’Î?“§»?’»&?Ž¡?Š!©?‚œÍ?wgg?zóç?„3ˆ?„êâ?©F?9ü?†n?‡°?Š7½?‹ »?†§Æ?vÔø?rM>?Õâ?6G?’‘_?Žk?„ 1?z?{ÃÅ?u°I?yÎZ?‚`Ê?‰ î?Œ2?ˆÑ¹?ø?xÒæ?zÇ¿?r…f?`?`Ü?x, ?„|í?Š}Â?†ò2?ƒ•?…e?„— ?†zY?‰€t?Š…?ˆ§_?†èw?ƒŸë?¹§?:?ôš?‡Ù%?‹!s?ä*?’3@?‘ø9?Œÿ?‡ð?†­ä?…½i?}/?~#?„’Ó?„Ô?‡?ƒÊå?„á¿?ˆmó? ?Ž€?ˆd?…óh?…v¨?‚|`?âO?}Í"?‚#†?‡ÿº?Šj$?"?ï?Œ·×?Ž¦^?!?!?’¸q?R?ƒ“f?…”?ŠS­?ˆ%?² ?‡0*?…Ç?‹©à?M?‘^­?‘œ?’Œˆ?›?Š<§?Š=?‡ z?€#n?|ê?yŠˆ?~6G?„ñ ?‹Fÿ?‘܈?“á•?“æm?—Z?—öé?–O?•xÊ?‘V?sä?‹ò?’ÊØ?“u|?”ÐŽ?—=^?—gà?–‰?‘˜†?ˆ{ü?ˆå?’/?–g»?¢ñ?‡¼þ?²–?—4??—TG?“…—?ŽÒS?cŽ?Í? -;?Ž‰ ?’iØ?”ºs?‘¸?ŒÉ?Š?‘‡?— ?—‹ ?˜ú'?—ê? ?‡ÄU?õ?”EA?•^n?’ÚÉ?Õ?‘ Á?˜¸s?™ò…?™Â?›6ú?•Àô?„O‰?{?‰–9?’‹‚?‘9?‘w?—ÛÑ?šîÐ?•¥’?ŠÜÚ?‹ÊÚ?’´e?•|M?”¸G?‘ÐD?‘?”v?”ÊA?“8×?•óÐ?—.j?”]=?Œ¤þ?‹áÎ?’®L?–‚º?–óW?“ÜŽ?:?ŠŸ¹?{oû?irÜ?r €?j•?„ò[?‹?kk?’x?”83?’× ?€é?“ ?•¿‹?–bÏ?”]?‘¬å?-?Û?•O«?–ü?—<“?–>¤?‘P»?‘Uµ?“ñT?‘TR?ŽÈ5?’n‹?–’?”€½?–`?˜×?–…N?“.½?[ ?Œ‘ê?[,?“iª?‘î`?lä?ŒL«?‰E?‹¿_?^3?Œ·Ý?rõñ?L ]?qù?Žìb?‹°ö?†9£?‡‚ˆ?«?–iø?“‹É?Žç„?‘‰ƒ?”Y?’ñÀ?”7?—`s?•ïî?ŒØZ?„<ê?‰û?ƒ¤?\‰?ïL?•Ã?–÷>?“8®?Ž‡r?‹Rô?‡|A?Š‡,?“v?“Áh?”‘Ç?—|D?–ô+?—å?™1k?–nR?Žç?Œmþ?’n,?”-Ò?‘ÕD?Ž®ž?ŠVB?ŠÊY?‘õ­?•Ãç?“à;?“3D?’¿»?Žpô??‘q…?‘ÄÚ?•>q?–£W?–2Z?•äÕ?•ðù?•‰?•©Ä?“šP?‘?‹k?Œ+†?‹à¬?|@?“|M?–åf?–¸N?–Q?“7è?‰“?ˆ'‚?‘q?•ô‰?—!?˜¼?–ªô?”ü?– ?—n²?–ÿË?”ê®?mƒ?£?‘BÅ?•6?”¨ˆ?¸Š?pm?“žÔ?”"?‘#«?È‚?s0?A?‰RS?ˆ«v?í]?”Ü -?•›?–F?”Ý?’s?“ú?‘|7?qá?‘a -?’¿R?“€l?Mì?Œ¼N?Ž>¿?Ž,£?Œõ‹?P ?`?ŽP:?ßó?Œ¼Ñ?ŠdŽ?ú?’Ö˜?–A¨?—[ð?–8Ø?”-Õ?“y§?yR?Š«O?Œ.4?ŒÌ?ŒÝþ?‘ j?“æC?”kø?”¦F?•ôñ?”§ -?Ž)?ˆ*û?‰çT?§?’xÜ?’.?’?H±?ŽK,?¢?Ÿ­?_ß?‘ã±?’TÅ?’Y@?’£?’6È?’@.?‘ºœ?‘Ú[?\|?Zî?”*á?“ô,?‘Ë?’b”?–*?–æÊ?•+s?‘Oñ?Ó°?“_W?“Ï?”B‹?•Ï?”°j?‘¸­?ŒSÈ?ŠW]?Ž®K?’ê?”ªò?•ËB?” q?‘:"?‘%:?6??‹£Î?ùp?Œa&?†ÓP?Š¸ß?”$ø?—V?–’·?• Ô?”€?‘Ÿû?;¯?sV?‘†?”Š?’u½?1p?ë6?’ÚG?’ݤ?”“X?˜&9?˜:É?–±??—)?—@??•ò~?”Ê,?”å ?—5?˜.,?”Ò^?“SŠ?–S¿?”åN?Ö¿?'–?X?‘ëà?•t?–Ó€?–B«?”]`?%0?‰ß`?èk?Žÿ“?Ž!ã?ŒØ?ŽYh?‘Q£?‘B?’c ?”x+?µq?‰»?ˆoè?Œ’?ñ? \?‹Át?Š\?‹iW?ãf?‘æŸ?’?Ô?R?‘7z?’b?“_¥?’Ù?º´?ãü?‘«ñ?V?…Cž?~xÌ?†:Þ?Ž# ?’O6?“V¨?“7q?ûê?Ž%f?’4¯?“Û›?’fŠ?’F±?Ÿ?‹—à?¯i?ÉÀ? =?±?ŽL|?rB?ŽÖ?Â?Œ|?ƒ.µ?ˆ/G?ùp?‘÷Î?ŒãŽ?‡sá?Š‹æ?o£?â??Ž÷ì?%x?Ç?·:?‰b?’<?ŽôŸ?bA?xq?ŠÌÿ?ŽOa?•zÞ?”V?•aø?™!Ñ?–*à?‘Ì?”ª?‘ó“?ŠâC?’PÊ?˜¡‘?‘þ–?†á×?†)?Œså?ŒÞ?‹gd?Ž™A?- ?Œ¸ ?’*?Ž9­?ˆ¤I?ŒØÖ?J1?ŒAR?‰Í)?‰Á7?ƒŽ‘?~ÃB?‰ŽD?Ž2¶?„¡É?‚Y¨?‰¹n?H.?™X?Žá?’ª?’S§?ñÞ?‘¼Û?”X±?‘¯S?‹Õ”?Š©?ˆ1û?ˆcÐ?…îN?†—Ô?Š›q?Œ·?Ž¾”?íÑ?‰ßy?‡Æ|?Ž«Ù?“Å?K ?ºi?ˆâÛ?‰h`?‹(™?„š¬?ƒÆˆ?‡P?Š³8?ˆ\L?ƒîA?ŠrŸ?‘Í]?’A?Œì?‰@??‘eÏ?=’?X?‡9\?‡´P?‹CÐ?‰né?‰ßs?ŒÑ¡?Ž·S?¼Õ?dÇ?j*?×ß?éx?‡è÷?„b?‹Í°?‘¥i?‘Qå?yf?Š·?Š;e?‰rø?Š¥Ã?Œ˜a?J¼?ŠZc?ˆ®ô?Œ8ó?.~?Zv?‰x?ˆ2á?„Ʋ?HY?‰üž?s$?À9?Ê?Žl@?‹x ?Œ -"?ŒŒ§?†š?‰Ð6?“ä?Ž£?Ùn?½?ÓÈ?ˆ÷“?‰éÍ?Œ^ç?Žä?¸1?‹i ?Š¥˜?öù?ÿ7?²?ŠÜy?ŒxC?†Ó?Ž'?‹ßÄ?Ž[?Ž‰‘?ŒÀº?‰õ&?Š²8?Ž‡­?ŒC:?‹q³?Œ¯ž?ŒÔ·?Ž!×?Œü ?OÖ?tß?Ž±.? -,?Çw??Ž!?‹ðM?ˆáU?ŠŸU?•?ŽQ?‹ú­?Œµp?Œl?ŽÁ?[°?ó?§q?Ž?Ž™÷?Œƒ?Àä?Šý«?Žð?d -?‡Ÿ°?„4?‚½?†Kf?;œ?ÇÒ?0È?Î?µÀ?É?|§?dœ?K?dß?é?‘‘J?’-?Ññ?ŽÁä?'’?|…?¯ú?ˆ~«?ˆPˆ?…\X??„“ ?‚Â?s>?ƒ½4?Š÷X?ŒAð?„\?ŒÜ‚?ŽŸä?œa?Ž—È??ý{?Ž]?Û_?ó;?ŽÊ?Ž’F?û?Žœf?ŒO ?‡?‡ØA?¸—?H¾?#?Ž¹?‹¹1?‡¸š?‡S¹?…r"?Š´s?Ö?RÏ?ŒÈ?‡Ÿ]?…¤>?‡åÂ?‹0Ô?æ~?ŽÈ?%ô?Ž?íP?‹¹o?Œáî?‹•p?ŠE‡?…g7?€‘Ï?„#m?Šš¬?×ý?¾ ?ÂV?(v?é?Ð~?¿:?ŽB?n?ŽFœ?Ž/~?ùP?@Ò?m?¨š?Œ6‰?Ôj?¯§?ÇÈ?‹ü˜?‡ h?Œ_~?Ýz?òÙ?²¤?Šþé?Šlª?É?€1?IO?MË?ŒSÿ?‹–•?Ž¢e?‘[v?Ëš?Ž¤?Ya?S-?ÓQ?Ö?Ð6?ÞP?¯@?ˆ´;?ˆÜ?†Ë?Œ1?\?ŽÝ¬?Žáý?Žw•?‰6?š‚?Š ?Šæ?Š«D?‹@?Ž>Ñ?ÛO?Ží1?ŽL?Žno?ŽŒÜ? .?ŠDÝ?ˆÜ©?‡»Ç?ˆhp?ˆØ,?‰=Ø?†3ƒ?‡@?ˆ`€?‰éj?Šî:?Š=´?‡ö1?€I‘?y¼•?‚ Â?‡(0?…óÿ?†0‚?ˆ¦Ê?‰Ùô?ƒtü?‚Ùy?€£Ò?€qó?ƒ„1?} ¢?‚Š¤?…¸‡?„HN?…Aø?…ü?ƒÊÂ?„ÖÓ?…i?†ºP?‡t?€µ!?ƒñ¢?„ -8?€ .?z6?r³?„<¡?…ïI?‰€?ˆl¬?…IÂ?…–Ñ?„„^?ƒˆO?‚Ù ?†î?ŠšR?ŠFí?ˆÄÇ?Š(?Œ°²??‡A1?†—ý?¢?75?Š'/?…ò?Œtð?ª?‹xr?† D?‡a|?…Ë“?ƒÓ*?‰e?Š°ó?Ž1Ñ?‰ø„?‹ ?*š?‹ÒY?“í?­m?%?£ç?'ƒ?‡ŽÓ?íµ?{õ~?‡”Õ?À?Ö ?kq?’¯Â?’”Ò?Žÿ•?Œœ#?‡l¯?…f?†ÿg?Š[2?Qß?Lh?VÎ?‘ì?‘]H?ŽØ?ù¡?{Â?Œ]±?…ía?„$®?†Ô@?ˆ?ó?‰¬Ô?Ž€²?‹”?†{Ö?‰#:?ˆ…¥?A?ˆÿ-?/c?|o]?‚î?…«v?„Ò“?†î;?ˆ¦}?… Ü?ƒÒ?†o¦?…XÍ?‡x"?†¼ê?‚¯?‚µ‹?‡›?‡9Ò?Šˆ?‰ß=?„Y?‡ƒ4?‡’ ?†©?‹e?Šìí?ˆ¯€?‰‡?†î‚?‡D˜?‰oä?Šg@?‡ X?†žÎ?‰iZ?ˆÆ9?‹Ø?Žg%?‰VL?‚…[?‰zL?‹&å?Špö?‹Šü?Œuf?Š,3?Š*¢?ŒuŠ?‰íë?‡À¾?…÷0?„³7?„ê?…Žc?rF?¬Ø?ƒÜg?‚À?‰„?ˆ&k?†¼z?ƒÔ?‚Ð?…ò?ˆn6?‹ ‡?ˆ_d?ˆß;?ð?Œi%?„3î?…N×?Œ ë?Ã?Læ?ŠÕ?‡)l?Š^ü?]>?‹Tû?‹•„?Šþ?‰yü?Ž ´?Œ H?‹LÐ?ŒS?ˆžÝ?ˆ}ë?‡‡Ò?Š¾K?‘U?À?ŒQ?‹R?‹¤?Žwh?Œ¨Ç?ˆ,Õ?‡˜?Šìö?Žk£?½4?Š|B?‹ÆÆ?Š1t?‡ô*?Š×ä?Šµ—?†Ý?…ú¯?„—«?Š‡?Šf}?†9@?€ƒä?¤?žÓ?‚Ö(?ˆx)?ŠY¨?‹xö?ˆnÁ?…m¥?‡¼±?„ý?zÃØ?…4H?‚ÎÉ?~!#?ƒÝq?‡)(?ƒSE?†¥ã?…µ¨?ƒäý?‚?€mc?„3U?ˆ›$?†/Q?…úE?„þ9?†I#?…´Ú?|û”?~GÄ?‰A?ˆ»…?…ôr?ˆò‘?Ši¯?ƒb÷?…F ?„Ü?p #?A¿?}3Ÿ?vTÚ?„ÇÛ?ŒµN?‹’ ?„å¹?†Ô+?ŠsÔ?‡Z$?‰ƒ¶?Š¹?ŠÆ?ˆÄå?d?ƒaý?ˆÎ?…ì`?†Ý™?‡ªå® -?.-I?Z´è?g$g?wB}?‚ÖÛ?–·?~·?„Tç?„b?„ U?…?…IÛ?„õú?„–ƒ?… æ?‚ÝŒ?ƒ7ˆ?†Pó?…¹5?|ì?˜H?ƒ›??ƒ”U?‚ï¤?‚Ê?ƒÚ—?„#+?$N?„¶?†$ß?„A³?„(?„½(?‚?yÞ¡?.?ƒÐÜ?„iV?ƒ}U?|¾]?‰F?†Š?…@Ã?… J?ƒ”Ø?‚`u?„³?…Ÿ§?†Ö€?„Gë?ƒ?…ñ¼?‚qt?~ïç?ßÅ?€0?|¬Š?t$d?P1:? -±·?Ó¤?S|ï?pVK?yžc?|K?s‹²?kP?€¦{?ž?{0]?||Ô?‚›“?n¶?`ÿI?{î?¨è?„ûÂ?ƒ_'?}1H?­@?€¤?„F?„æ?(?}áè?}ò*?„™?„2?…ª?‡r€?‡J?†=Ð?„z«?ûš?…•?„Å -?~?‚GP?ƒï,?…\a?‡ þ?…¿s?y)³?Y“S?fc²?ƒ‹Ã?‡{?‡W§?‡’?†Q?„ð@??sج?„aŒ?ˆÈ¨?Š,.?‰.)?†Ém?‚ÂÏ?}†…?ƒ¨ ?†AÔ?‡Ø?†²f?‡ÊA?‰"?ˆÙ²?ˆ¢Å?ˆ¿l?‡*×?ƒN?z©?ƒg†?}‡ÿ?ƒÓ?‰Æ?ˆìì?…®¢?‚»w?ƒ¹å?‡³ù?†„Ç?‡"?ˆÓõ?‡¹?„êÌ?‡?‡¥±?†ÿ£?ˆú?ˆ¸?‡ÿ?‰0G?†Ý^?…ؼ?†2î?†¡?†ŠÒ?„I4?þé?„É?‚ÞU?ƒ?ƒ7{?‚…x?øN?†<ª?ˆÉÐ?‡°?…XÍ?‚¯?|aB?{lÕ?ƒ>¨?‡6?k%ª?pÒn?{Ë?p–?eX?x›±?}å[?u œ?__?a©ê?r¼å?ob?nÛ7?pÒS?wƒ;?u¹?q4A?säÊ?sf?f~¾?g º?kw?rð?s¾ ?mÉ•?qea?t3µ?sg?uåð?}'¥?}4´?täª?g]?gX?v9æ?p4?ii?q¡D?{³?z?rÖß?rz?sr ?q—a?i á?jÓD?zÓN?{?lu?eåE?b”]?q1@?tëó?m—_?aÕ?m…­?p -?lá ?m*ð?mýÝ?jñS?h¼?iD;?môó?p¬»?mfË?hìÓ?Y‰B?k³f?rªÈ?uäÊ?t`í?k 6?a?Á?ipo?kNú?oýþ?s½ý?rK:?k.û?dÖG?d¾L?t¾Ñ?wU?tëJ?iD?g®7?nÝF?oP+?s3ˆ?e°ô?dš#?pÀ?n¡1?iy+?b?o0Ê?hÿš?b˜¿?`$m?q-w?xT?rf?rK?rOe?nñ?i73?kÙX?qÅ?a7¯?dh!?w -?y’Ô?qc\?hŸj?Zä/?a÷:?[´×?i®?qoé?r¿"?pA[?n+²?p.?t?´?qÑœ?n~'?qóÛ?ti–?sÔ?r“¢?v\O?p.‹?n_8?kª?r³D?q×?cJœ?meP?wzŸ?u ˜?t¾Ì?sD?tIP?q!Î?n¯I?uá?vƒ ?wzÛ?rðÀ?i>)?p-ž?v.á?w¯î?r(?mã!?vζ?xÕñ?oå1?r<÷?voÈ?obÉ?h’ý?p!Ž?x'£?r˜›?hÖ«?gX«?jºö?h˜ ?n[S?m6ó?b¶Ù?c2`?lÿ¬?t„ ?l“?bÜW?g³2?jaK?e^à?j$ò?q‚ó?uªƒ?ožØ?i¸²?j›f?m«E?hü?m°W?p`U?lü©?pÄÐ?oàñ?nñ?mã‡?pÊE?o;p?mª?k|.?kê ?oõˆ?oU÷?mÑ?k¶ ?l2W?qìŠ?læa?j£P?j,·?lÒ—?j!Ñ?lÍ?no|?h¥?h˜×?qŸ?t¼'?rHN?mî?p¡J?qá?n?m?iÁ?hjQ?fœÜ?m¥!?qxh?tø|?ov¦?g>p?i£‡?pÛ ?gRf?]šÑ?eúË?lÁ¿?i B?n›‘?p–?q¶?qÍ„?msµ?hÿ?g‚9?heÍ?cNN?j†°?nõª?nó,?qe\?sÎ?v¼±?sJX?iü?iÀ?qVt?lð?d.}?jl?o4r?j÷×?n®´?q×û?oÕ¹?q -¶?s…?n¤f?j`\?o…í?o& ?g-?cת?lòY?p.{?l ?dvÝ?kT~?rÂk?ma?j%¥?iê^?i‹f?hþ?m $?su?nñì?møÌ?ký?i¸g?i¾×?d•_?dÊç?jø?_}=?_qÁ?dr?c¡?d§Ä?dí?_qK?[ä?`Ãk?Qe?M™X?S7??Z*¨?ZïV?Tpj?Q(x?W¬?[I1?X}?ZB±?V?]»‘?aˆ?]x?ZDÿ?]¡ã?^ð?Wz.ü?I¿r?Eú?H‡¿?Jƒž?IÏÐ?CNÍ?Doï?J?/?D>?CÆ–?R5ê?Md®?BƒÞ?O“f?O?A¼Ú?IHÆ?N»¦?I}¿?Iå”?T™ƒ?T(?F`6?Bœý?Pv1?SùÊ?M«?CãD?I3?Q(‹?U‹ë?G&º?E‡Ê?U+Ù?Ržï?Kªí?Aªw?QŸË?QY?Oú†?IðW?Kíc?Pz?Ms?PÄ’?Oä¼?Ncr?>êÓ?IC…?V?QÈx?Mö¤?? -Ý?MÉ?Y·‡?Tê?Së?A©?Lxf?Vþ´?Uá®?Qó?>¾?GB?Z û?YV©?Sg>?K† ?G­Å?OZö?Xz²?SÃÃ?R!?Qv?V;`?LRŠ?@ -½??8?PqŒ?LìÖ?Pmß?V"7?PÙ?H\¯?D]?Døs?Q,3?T°Ž?S K?USW?LœH?Jz?<²‚?F|?LÉ#?Cû?MUø?O‹P?HkE?@Æ?F³Û?Jà?NµR?LŠG?GGö?OqW?PR?Ij ?HÐq?OŸü?N>?H€5?Oe¸?Oÿ?S*?Mc·?CÿV?AºÈ?J¹?Rú=?Ox¹?NJ¢?S ’?SŽ?Eûˆ?L ð?Qøô?RkE?T=?K7W?Hz*?Uc'?O^(?J -h?Iµž?I -6?RKÁ?R`ê?J¼?Qe?SbØ?J9õ?H®¤?R•/?N™ú?QrJ?O¤¸?Iqü?OŠÂ?NZÈ?I”š?GÉ?Qð?P©?Q-w?M4p?IâÕ?T1Û?U±O?MÁP?Iö?K ?O-ã?NÝ ?QðÆ?JZ -?Rk?SsÖ?Nú?I‰â?M’Ü?QïÜ?Oí±?Nßà?Dñ¹?9³ù?HAñ?SËñ?MÖ?LK?D;4?7ŸÆ?:±!?Ký?Kv»?P.Ð?S([?Q~?Ir¸?G®?MÁ?NfŽ?=ü?Eî#?L¢‘?N÷ä?Mw¬?M–ž?Kl?LgÇ?OUh?PD›?NUQ?FPú?I è?NƒT?Pß?Oàb?HB?J±Q?MÅ?:Ï@?Br?HäÇ?MÃ?Mê7?P/#?P_!?JÆR?J/)?Kžï?K©?Ktã?L}?P§ ?OQÖ?L?I¥?IQ+?MO?N¼]?PÖ‡?Là§?Jð?C™Ž?Eb²?L)?I8À?:V™?<I?M}£?N(Ó?N­¥?I›?EÒƒ?Iy?M²Û?Nž£?KñA?CI?Ip;?N.€?K5Ì?KØ[?H‚?/_ä?9ðÉ?Mõà?OË­?J1õ?Dk¼?HAk?N>u?LÙI?M#G?M%?H>\?HÇ°?I‹/?MvŸ?Nø”?JÑ?DúÂ?H€?K|?2!?.S{?HHv?C4}??\§?H.T?M8h?M%Â?HÂ?I.¶?IÛá?L‚?Kæ¶?Léó?HÊâ?Hù>?F§?Iëå?Mm?K²*?F?H?G!¥?K{ë?EY3:Â8H:ñX);—×;7¶;_G;ÙZ;ƒW;r»;V€j;Fpc;=$¹;)—š;¿<: º:‘Ê(:º[:¿ o; -Û¡;>oS;jX;~…ñ;vô;_Gö;HÓ ;8U ;(Âä;î;-IG;_åd;–&k;»Ñ;Ô–Q;Úö¯;Ñl4;Á,Ò;³Xµ;©Ø;Ÿ¶ƒ;›0m;£eö;µ¼c;Ãgµ;Áqs;²Ì±; ó;ŒØl;sÉ<;Ubê;M½;hZŸ;•¨Õ;ÿÇ;ìÍR;ýÔ÷;ò°Ý;Ù¶Ó;Ã9;±fm;œèë;ƒCÿ;S»©;/©m;%Ž|;;';k#q;Ä;¡“Í;¨ÿÖ;«Å—;«µJ; ¯Ì;„79;=1Ó;:ï»R;%âº;„Ûï;ÅH0;þˆû<CÄ<CÜ< <Ÿ<-Aü<=†/?<Ìl< ô<l< F<Ã<><ô‚<Œì<¯<1Ë<.<@#;ók;ä¹z;â4¥;âb;åø;ôç¢< -X<Âß<2{<ÿ;úOõ;àëL;çˆy<9@<èˆ<2~<$•¢<7Ây‘<@ <`N = ï=¸¶=Ü“= —C<<½èe<—œ<ˆ,Ž<‘yf<¡‘ <¨ëü<ª)<±™9<Å'ü<Ýð<íSü<î’<ía<í’ <áU<Àm<™><<~„-3ÿ< ¿Ý<ΧÁ<ý`v=ä =!'Æ=-=(=¥=m=Ÿö=" '=6QË=1\= |<塃<Âjh<ÃúM<Ïú½<Ñ>ç<ÏCB<ÚŒ<î<òA}<ÞÉ<É(­<ÓN==‰Í=z½=/¶¬=6@W=1¹:="w8= -ºž<âR~<¶~w=)¡I=ç="Õ= é<ôtë<Ô•S<Ô£Ô<ÿÒï=$G=G¯=Xá=S â=<1l= ¯s= -Ù¦<úwt<åÐ<ÌG‹<·ê<³ ¯<ÆÎå<ñ`œ=7=+˳=9J¢==’=<+³=8[b=8OU=AÔ:=Q~¥=]/{=`á=`ù=bÞG=i›=r”^=u…=n±m=d‰=]×=_2C=du =eÍæ=_(Ô=SH›=GUg=@³í=Ak=C¿õ=@ßd=9 ÿ=0j¯=)¹6=(Eu=/ÿð==”c=EþÑ=Cx=9´=/ép=,ä«=/ü=3¹ô=9õh==µ=5²U=Á-=VS<ë‹Ù<ëö <õ M<ñK<ß×Æ<ÓA<׸/<ëœ=å = Ò|=~=w®= -(#=:¦<ø®ß<ä'â<Ïø<¼©o<³<»Ùú<Ô<æ/]<à¢6<Ê0<·Õ¥<µ¾ö<¿t <Ím<áí=Q==Ò=U== è = -Ü?=– =/¥ø=H¶=Zy2=fÚÒ=rz>=yY´=r<Ä=\wÿ=Cœ1=1E -=#†ò=d =6ÿ=èâ=X¿= Îø<ø`<ézÛ<úú‚=[p=,B=+„=;?=Oƒ¡=\/5=UD=9‘=®{=K€=ÇJ=à¿=D˜h=d¼=sj™=v²=Y=Žž#=š „=›E4=“Pç=…0»=`ÆŽ=0ò=àœ= î'=Â=#Ìr=1›R=C~Ê=YÚp=r—•=†o‰=‘ù=–>:=“a†=Œ:a=…Ae=ŒÖ=q9&=\EŠ=GT¦=5S‰=# –=ÿ=2=,…Z=G!=`}²=uGP=Ñx=†„Ô=‹ÄÇ=“Â4=òÔ=¨“=¯\ˆ=°dÎ=«I®=¤?Õ=œÞã=”…*=ŽëI=‘gX=™È =Ÿj=œÆ$=”j=†­/=q¼$=k[À=€Ñª=’:€=ž…è=¡öŸ=¢=¡ðT=,W=’ ž=†M=w5W=d†?=`p=q÷Œ=…Pa=Œ+8=‹vW=‚Rg=d¬=Db==0Ö=2•=MV=zž±=—Ú=©Êv=«Ut=œàz=Œ´Ã=†{Þ=‰¡ô=‘7=œ?=ª}#=¶²=¹­Ç=²íû=¨4D=›u:=ˆ×m=aÏ=9ÑG=)¼¾=+":=+8ì=&mÝ=- ÿ=LÂ]=}š.=–pí=¨7p=²ÜÂ=³½==©iO=˜ýx=ˆ4#=kG5=>0=©<ó6<î¦=¤D=&Ý=K[_=h‹ÿ=uà<=m<é=U¶;=G›¶=LE!=QK¹=H0ß=5ß=+=m<æ/É<Ñ°O<Ðú<ß -á=™ð=»=>È-=Væ=]OŸ=Q5à=:¥ë=%1½=U/= <ÿ=VŽ<ø ¶<èê<×¹Â<ãƒ@= N&=-9>=Iíg=c%Ò=€·=‹˜ =Š Ü=u Ý=D4¸=x÷= ðï=§L=-¢à=;$7== ×=‘A=-{%=5÷=.ì?=!Ø8= C=.=ŒT=6+b=OñÁ=^µú=bg/=`/=]z¤=YF =M.:=:»)=0m¦=8fû=Iݶ=UÞM=W<–=Nê÷=?ïs=2ä[=+Ë@="T•=ôù= ==×[=4zÁ=J|]=NÏ9=F¹=>ù=Bæ =LîP=S@=RBV=Iè<=;V©=+dd=#¼j=,®M=@¦g=Mì•=I•ú=8 .=(Ð=)¼Ò=; ƒ=HCg=G=Jô/=bë=y„±=miÊ=FV=+û=1¼V=Hr¿=b- =€B9=“1(=¤©ç=ª§­=¢,ô=“i¢=ŠV=‹1Ä=Œâu=‡em=€F•=‚9ü=K|=”¤ö=’ô¥=v0=Š7=£«=qç(=&’=¨l=¡Éˆ=«Ô…=­Ç=ª,Ø=¤‹= IÂ=L.=–ã(=Œßn=…’&=G9=sÀ©=]{5=Li*=H;}=Lp =T55=YÁ=V:=Iˆ=4Áã=©#=†`<åI±<Á3€<¨ §<ŸÏÔ<¥¢É<®ãt<·Ð<Éܶ<ë?X= œ^=!„=1![=8€Ä=<Æ/=@T=A¾þ=KŽì=eœ=€=ƒa>=ùå=‚=6=­ž=˜×w=š¿Ì=™26= D=«¥<=«{ª=žÊ0=“ºü=‘±Ø=’…5=‹4M=pÈ·=H^`=2&a=*‰=!º1=³'<ïà<ɽ<¼në<ɵž<ãÄë=†ƒ=M=%Ãy=@L=_bß=}|ç=ŠÏ=–Åô=¥!‰=³ Ð=½G…=½+€=·!=¶i¤=¿_=ÏE=á 8=îÔî=ö -n=ô¬=çà2=ÝÔÛ=á3`=ëÍ&=ô¶=÷‚(=òa==é3ñ=ᮘ=àÆ6=í ˜>iå>ëŒ>¡N>äN>G½> -ì=óû(=á2=ër;>òÀ> sâ>q>ÆÏ>‡P>HÈ>¼é>#>%8œ>)€>&y¡>!ÙÐ>!R8>"R>˜U>r¾>ðõ> ª> -Zé>ÃB>¬¤>)¢g>1þò>-ßP>Mª=õ/ô=Ñ¢ =Äÿ1=Ç<7=Þ(Ô>Lí>˜î>/êF>3\>,@^>"qÙ>IS>=\>$>‡=ÐL7=±µ4=À~.=ñE >¯m>¯¤>(¬>-ξ>-…M>&ï>s>f> -Ù>ÝÔ>¹|>·í>X>‡$>qË=ù`ó=Ñe¸=ÑB‚=ôXÆ>RC> ߈>±>Û>ü´>Àà>Eå>nÇ>ãÃ>(&>¿§=ß -?=Çš=Øßy>]>”­>-&„>.Ã>&C~>"•j>"Y6>#js>,{&>=w¬>J{Ã>Le>G†B>B¸¤>?nÅ>?$s>:c›>*Ú~>‘}> ñ>;³>ö> Šä=÷h¬=ðö>Z‚> T>$š>1Rð>9dL>7æ9>/‚©>#bH>|>¯>ÐM>8•>ß>!M\>"J2>˜`>+> Ÿ> 5p>½c>Ò5>Yñ>{£>e[>'¹¿>'T‹> V#>Ë¢>@P> ž>˜Ù=ü =ú9>>R>J> T>!“>"LS> nr>¾p>¾=Þ)=Ç06=Þæ>†¯>î™>³¶>_Ù>£…>À>hh>¥E>Õ¸>‘>€2> „ù>ª> í>'LH>(³M>'Ô;>,K>0$>+qü> ì6>µ>±Ê>I>*!>ÒZ>Ý6>³=ü=ç€=ñ@Ï>B>ûf> 4> -k>X‡>%M>äÿ>9}>Ò‚>-Ý`>:â>8õ>( 1>”ƒ>"Œ&>%æ>># v>$ëâ>/Z >6%¢>/"ø>^Û>> û>³J> z> -Ñ>W>On> ùý>Ö<>o >"#>0¡Q><{Ò>?³><®f>;¾>;g.>27…>Mµ>\J>#9>>`Š>b¤>t,y>wÝø>tà(>f¨>H2$>$ˆ‰>Õy=½¬ù=–ÇÐ=¬¢E=÷ó¤>'»À>J/>W>IÛ>8¦?>6p >:/w>;•/>?7Å>DßÑ>I>>Ne°>Xm>f•æ>zð*>ˆq>Š >€ì½>iâ|>[>Oœ¢>>M6>2{:>6~$>9@M>.]„>)b>;Ç”>U^Þ>[½>KŠ4>:B¯>7³‚>KÄ¿>mWr>…_5>ŽiÎ>‘ÅÜ>hÒ>ä>i#/>LUb>'óL> Ö„>Ä> Ä>Ô„>4µ:>X$I>y†¸>ƒØ:>{¥E>e‹>Zy>\Rk>b>bx>\ 7>YÕö>W0>Dg:>$ü¯>+æ>ž^>;Yº>Oâ‹>Sä™>W¸Š>] ª>U8ÿ>;I‰>oË> ê>R©>"Ž¸>*aH>.r>'Ä>{š>ˆÇ=ö }>£>$¥þ>H¿>au¸>i<>m^*>„µ¦>Ÿ|v>³,>´‰×>ªóÈ>Ÿ4½>•ÕQ>Bê>†%>b»X>6pc>-Æ‚>]Ñ>‘‡H>¤±Þ>¢…Ñ>ˆ‰>¡Ãð>ª6R>³zð>»$ÿ>³†+>—<æ>uO]>V/q>HÕ>WX°>ƒ>“>–xÝ>o:>¢í>¤Á‘>£õT>¬Ws>·Þ–>®S¾>ì°>}ôO>†»ª>—vô>¤âÔ>±–>¸.Ò>®i€>0E>—ºî>¡‰>®LZ>¸²³>¬â>É“>Á!,>¬w#>œq>œ¼û>¥.’>ªj<>§œ4>™0ª>…{3>{m>‹ÂÚ>¥ï¼>¶i½>´>¦˜>“7ò>jëÉ>*v×>_v>:€¦>u\ò>‹¥>ó>‰œá>‡Uò>‹å->•/‹>˜¾>”×>™Ú>¬j¡>»«{>¶‡ >¤€>˜IÔ>žS ->¥w¬>‘ÄØ>aC:>Hk>Y5Õ>h,>vÖÒ>Kä>ªu>¹q>º.È>ªËu>‘Ë>„²)>ŽbF> ™ >°"£>µÇ>­Õµ> vD>šÍ’>¢e—>­š>¯óG>­Gâ>«Ä•>¨Î>¡hç>¢ -É>«F›>©v->˜@ä>‰L’>Žv$>¦º\>Á"1>Îs®>ƽ>­ã?>˜a|>“J`>¡OU>¸|'>ÇHP>ËJ>ÌS•>ŵ“>¼ÎQ>½§ï>½W>±ê9>¢Gº>™Â…>›‡C>]]>˜ë`>’~>Œq0>ŠÛ>—§á>­ïñ>¶í>²3A>¯vT>¬Ü>¨Wh>¨ç3>°Ãý>¾X<>кX>ÞmL>ã&“>êCþ>ô¾>ò®¶>Ýýñ>Ämn>¶×>ºñ6>Ï\ü>çCH>÷J>øÉ@>èÂú>Î[ù>»ëO>¿Ë>ÐÎq>Ø->ÊÆ>³I>¨R.>°¤k>È^Z>àá>êGœ>ã·Ø>åGÅ>ÿ™? Ì? û#?z>ú¨È>ööñ>üh¾?Ò>þÝ´>ò—õ>增>ຓ>ä8>æÜI>â>Õ>áÞ*>ðU?Ä?ùÌ>íÒC>Þ[>ׄ>Ê÷M>¸í>«§,>©ì>°A¨>¼é>Ë>ÍN•>Àcd>ºâ>ÎÔ>íéð>÷¢¸>禲>Óò>Ð -6>ÜKÞ>ä"Þ>ݼÛ>Úú>á‘w>æ£I>âþ>ßëò>åYJ>àÿÀ>Ð0ˆ>ÃM>Æïh>ÞÐÀ>ûÑ?pr?´B?Õp>ýµ?>ö¯Ê>å9þ>×~ó>Ü“z>ô•¸?Ðu? -BŒ?`[>òèo>èïI>øß? -¶?à?Àü>þ!¿>ñßä>ßÕ·>Øga>ã5½>ñ¢Ì>õh“>ó–|>ôÚ>üx¼?A?j–? Ÿ?¦a>ùÛ×>îé+>æñ>ã¹5>è0Ö>î°1>õZ|>øuv>ó†Š>ñ>òØ8>ñú>ëú>ëdä>ýÎò?l#? pà?!ª«??]?µ5? r­?Î-?Qn?@º?ìø?xÛ?5O?¾G?8¡?!Ñ?ˆº?ãç?Îè?lJ?ij?íd?CM?ý–?d@?fÛ? ¤M?  ? b?«Z?¿>üø1?T?o#?ßÚ? -…‰>þÏÓ>åá3>ÜßÒ>ê¶u?3±? Â~?»?ÄË?¤?e:?*?­U?‘¸?(ðF>ÙÌö>à"n>ûÉs? Lž??oü? Œ?u%? -á?@$?ã™?9À?Ê?¶ê? šõ? ²?ª:?¥l?ø³? ±¸?q?;Ž? ©?q¿?:k?þ?%al?#1?Í? -Ò?›ç? #? (? &?Ž¦?,? è?‘)?kW?Äw?«©?n?Xô? ÊÍ? 5?!"?›?$Üø?)͉?+jb?(h?$J?&Ã?*=$?"îÁ?·Þ>þ4:>ø·?º?ª{?-š?W?¢•?â€?f}?‘§?"H˜?¨Ñ?A?{=?¥°??|ü?"¤?%3o?%Ó?&–¶?&ÑC?#²?'?‹N?‰?>?u•?æÊ?K?îH?3?|? ‚!?Cå?kZ?²Š? ¿?#_¤?"êÂ?wh?¹Ü?%É{?,ãù?-¼/?- ?,/`?(Ó?$ó?Ä`?ˆy?ä¡?Z?¹¾??œñ?×í?¶?ËT?%þ?0y•?4Nh?.3˜?#â{?|á?›??('?1¤é?/œ©?&„?u…?<ü?w?öD?%`?'Pz?&â?%Êÿ?#æ‰?&:?.?5nx?8Ô¥?8ã?2Ϩ?'Š?Þ?"ªY?+~?*ìî?%î/?%þû?%YÃ?³á?*œ?$Ö«?,ýu?,kË?*ŸÒ?&Ýß?À^?eï? =r?d;?Œ[?(u0?/²?)|?N‹?{Â?($ ?-®?,í­?$®g?¯8?îÂ?"eÐ? Ü7?*x>ï‡Ø>æÆ?ì?wV?¢?{J?üM?p}?!½?Ã? -öW?¼?þ?u-?„‘?'®~?0ÉÖ?1€?$µ?Š?KÔ?3º?·»?Â?úÎ?„`?o?? ±F?#­?)Ál?È ?1?-I?. ?,3¦?11r?=ÇS?A“­?5õõ?&›Ò?Qú? w?'ô÷?.ï?6O?=Gó?8…ä?$ýš??v§? Ÿß?h?!«c?ø?&YŠ?3ÐX?=ÏÃ?EE?Ge?B ×?2¶ÿ?%Ÿs?)å?.'°?!µœ?Ÿj?}¬?'b0?5ñ?:ÃW?=²?Žß?*m5?@?'t?>6¤?Ei¸?DdÕ?BT[?6Ô+?(äB?%¦¢?+8s?2S„?6u¬?;ÊW?CO/?I2¢?JP ?DâÚ?;Ð ?2b.?-î+?'ü?²í?£Ÿ?4v?,Å?%œ²?.âe?0çU?-iX?.9G?4Àn?4ú1?1Mr?3Í€?5?1­ç?)%ó?!ñ?"óg?%¨J?#„2?6Í?÷°?:†?/ž?3›Ê?+{x?É?Úb? KX?ï²?­I? '?¤Š? ô†?²‘?î? èI?+ü?.ì6?*LM?%ò¶?-ÇŽ?8Æ?@¦‡?Jfz?K(?:¬*?'¡ÿ?#Ûí?ñ0? èæ>ùB3?w`?*ç?7ðç?I’?M§?>ß3?+[?$'?%,•?)) ?4Ô?Bžr?HwÐ?GUA?F§Ž?GÁ'?LU×?Q"œ?HÓØ?1ÙÖ?"œ‰?'w ?+ͬ?,ø?3V¦?6¹Ã?1Më?3ZÕ?7àè?4¤?2‹?+ü?­ ? -ÎN?!B?Óã?"Úç?*m|?/ö¬?2…%?7cÑ?;á?<ÓÙ??u´?D«×?DR6?<¬°?2‚õ?&Âø?Ì?)J?7/Ã?922?3¿ -?/‘¤?,Gi?&nº?"v?ïà?!Ci?(¥•?.Z?4é?<\?C«à?Gïå?DR†?;Lä?.xu?0þ?·Š?Ü ?"v?·I? Ú?° ?%QÐ?.2˜?4:o?:èÉ?=’%?5RÙ?+Å?(Õg?-þJ?*u?†?Õ÷?#è?ÔU?Å?!ŸF?#9¦?Ëc?kÓ?é¿?#bÆ?0Ø(?<çù?B3?AM?AG±?>æå?8Y?,÷›?Ɔ>ðc)>Ø0>óGî? NF?Ý°>Üæâ>î5ò?S§?)2¥?0_?3½K?0)Û?%:^?ÔÓ>ê·¥>õ›?33?9@&??òÝ?Cs?B“˜?+ãf?Ãx?“ö?$ö?,úD?8nM?@n¢?C”?A¬´??eäÓ?\† -?[nä?_lï?^û ?W‡5?G•J?CX,?Yt?gå‡?iÐ?j??ZÈ?@Ön?92 ?G{?M•9?L§A?]Í•?s:&?y†Ø?zD?€¬?‚Yu?Ÿ?t¾ª?s7?xòr?te??qE‡?|us?€Êã?kñß?TÈj?Z( ?^'Ð?V"à?Oc?R¦I?ds ?|õ©?†c¤?ˆgÙ?ˆ)¬?…Ñú?w¹¦?Y?@?R‡¡?kæ;?3?ƒŒ1?€QÒ?pÛ?[á+?ZÆ?rZ*?Ïö?€?vÃÈ?oêT?pàï?z—(?~Hœ?~x9?{?q·?k¨Ä?g'?`u~?]bè?T@†?YGø?mÖ?j¹Þ?Zø??^’Ü?pÏ£?}µ¬?xçK?nZ?nòã?qx?v”Â?v ?s]á?xy?v*%?vÈA?‚¾Ö?‚Ëc?w -°?rkl?r¤ˆ?j ?cm³?onF?y™¨?tÒ?ehô?Z¶+?\_L?d¥?q^??c?†=?„@{?‚væ?ƒœ?ƒFx?€ø?tšé?m…I?v4®?€v?—?y ö?u[X?v'"?y¶5?~®¡?…U3?‰0(?…É?€ý:?Wu?~´-?ƒ:£?‰A?‹µ?‹›5?ˆ’˜?„åá?„·¨?…Pò?„ Ÿ?„yh?„°¸?‚ðW?€å‹?€UA?|ø?yi¿?{ÎŽ?}©]?ŠÏ?ƒV?q-?…"­?‡Nü?†¢u?…¿?†6j?‡·ê?…ûë?ƒÙ‘?€?rH?ayW?Zùú?a»Î?kBQ?nx¥?qµA?~L3?‡’?…{K?}ŸÏ?u¢>?nÉ`?n@þ?{Q?‡Èù?Žwž?ƒ˜?’D?Œ”®?ŽŽk?·?‚9¼?n–?vÚ?}é?}Å=?Gß?„µÒ?}#ò?i¥ ?l„õ?|??…š?Œ‹Þ?ŽÊ³?Fh?Šõ?‡Y=?Íÿ?|ñ?~0Ù?}©^?z×q?~:ì?.?‚$¢?‚¶­?‚ÉŒ?‚¯?…_¹?‰£É?Šj?†4>?ƒD?wëT?cœÌ?lÌx?yºž?wŸ×?~îÖ?…â?…Óc?€:n?|ûý?u?…lK?æ?çÃ?¾?wn?7˜?‰¾K?ˆ!a?„¼«?‚½}?…6H?„kG?V?~x'?…?‹‘÷?˵?Á#?ŒÉD?‰ÎE?„Õï?€0í?zÎz?s_Ó?w5H?eÈ?Ðø?pR?d×?bí§?i>F?n°…?€X,?‡ùÜ?ŠÝž?‹ñP?H ?6=?’)e?•5?•ž?‘u ?ˆÿ.?†á{?Œ¨]?‹Š?‡Àà?ŒÑµ?ßI?#n?ê?Œüª?ŒTP?‹EË?‰ ?Š ®?T¦?‘#-?‰Æa?ˆé4?,?Œ›þ?ƒS?“?‹ _?”5A?”ÈÙ?Žº?…}‘?‚×½?‹0:?–ð?™šw?˜ï?–+K?“Ú>?’:Ý?‘Sˆ?Á?ß?‘é©?·?ˆ>:?u­c?n?sX?q+ý?z5‘?‡"–?Œkà?Š¸=?‰úš?/§?•Šd?”§?‹V?‡ïK?“ ¯?œ ?œñ?•5Š?Žƒý?ŽÛ?‘=Î?“Ö´?—Qg?˜ò ?˜Rû?”ÞØ?Me?’5Î?š3Ú?Ÿ†e? ?œòû?š2¢?›q\?œÓ¨?N&?žÇÛ?Ÿ¼?: ?š Ô?•½0?—Œ?™‡ª?—éÁ?šY?Ÿk?Ÿñ†?žg5?›Ã?–·î?•Ñ?˜I¨?˜\„?’¢´?ŒyÉ?U–?‘?‹DV?ŠÂò?‘î|?–Í£?–'Ù?–4h?”ïõ?‘¾µ?•i¼?œg?ž æ?›³‹?š˜"?œôÇ?œWø?˜³?ÇV?Šyø?Ï?‘~t?™E?}%?ˆ×²?\åK?%ee?1A ?]½?hUÍ?J­Å?CY}?kþV?„±?Œ}?ðÁ?’Ïç?“ÃÄ?“° ?•n?—›?—þŸ?™dØ?•K?K?‰Ïi?Œ°$?ó#?”D;?•S…?“+A?“Öc?–Úæ?š# ?˜º›?”nE?”É7?˜ÆO?•|¦?Ž ?3›?”Šr?—\Ø?’ò?Š›?Œ ?’rº?—‚x?˜L´?“¹k?“ö?–cú?’ôT?‘}s?‘úÅ?Çõ?Ž/Š?”À ?›N?Î?œW?˜:‰?•"È?—²?›0o?žCÿ? 0–?  ÷?›–ì?”2x?[J?‘ª_?–].?—ò?’’ç?‹`?ŽËé?•é -?—æ(?˜Uo?–Q?–¯-?œT?œÏ?˜?þ?”œ?•uÛ?˜›Ã?—B?–"†?—³¹?”ZZ?Žm«?›?—bë?–“Y?‘ŽÐ?’es?’TU?3r?˜Æ?Fj?‘¹ˆ?”zm?–¬?™.÷?™ä8?œN?Ž ?›§ª?`?Ÿ0Q? ¿?¡¸#?¡K|?´’?œoX?ëê? þ§?£šù?¤q]?¢ö=?¡m­?¢b´?¡SÝ?ž–š?œt8?™k?˜TØ?›¡ª?žŠ?œ&]?–7P?:?’?à!?¤;Ð?¤î?¦È?¦ä?¥ÏŠ?¢ö¯?žÐÛ?š¡3?™Kç?”±œ?’0F?•š¿?–I‘?˜“V?™ÅW?“hÅ?¶º?‘‚Ã?–6G?œ9M?š6ƒ?™Ó?œÔ™?™Á{?NÁ?<3?—O?˜æV?—¦‹?šø(?š#š?˜”„?eQ?žá?šË“?šç?•?Œ»Š?Šë&?“É]?˜ÔÎ?’ñÌ?YQ?·K?™G?ž™È?šèÃ?Œ¤?rÍ?m§®?Š‰g?“OQ?©~?’‚Ö?›É?›TÕ?˜q,?“óÎ?žº?”w}?™}?—?•jþ?•Ny?”³‘?‹û?{PÄ?zp‡?‡²¸?Ä?’úª?‹HÌ?„¡é?϶?’ë¹?””½?•U?”ÇQ?—4Þ?——?™D4?œ ?œ6?—¢K?ŠØ?Œn3?‡ ,?€ T?Š„ ?—æ…?œ¨ï?œ*?’Ž¯?ŠÿG?‘ãE?™ÖÐ?šÛÔ?š>¬?› -?šÄ0?—-¦?‘ß?‡‡¾?~pµ?‚1?Š„?ŠÔ?„"p?…oÚ?‹Ç÷?äÀ?‘GÓ?’û¹?Œíø?€ ?zs@?†8?“^?š>ã?•Ô@?‰éÊ?€e×?7û?|½Ÿ?€¦ƒ?†¦Ú?Ç?“Š[?t‡?…‰/?ë?€‹g?w®Ÿ?cFÌ?eñ•?€}7?‰A‚?Só?Œ¶?ˆ}ß?‹¬ß?Š‹M?‹B?*?³à?`{?ŽCÎ?‹ÌS?ˆh?‚Òt?…: ?Œ;?*Ý?’K²?˜Óé?š Õ?”‚í?Žpù?ŽP®?Žf?……I?…Q?‹ Ú?ŠÉ0?ˆ%i?Š¬î?‹á?íO?™t*?—Ÿ.?s?ŒÈ6?ŒëV?ŠNÖ?ŠO‘?†¬ê?‰LÅ?l–?’‹—?–K?–òN?–?Ý?˜;?˜º?˜Ù'?›è„?•V?‰[à?Œ“æ?“IÇ?—DZ?™HÃ?’Ëš?KÝ?•†L?™ù²?›?œ¦-?ž??™ˆÂ?’O‘?’O2?Ž(½?†òÊ?‡—ê?‡"”?ˆGŒ?;,?“ÖÞ?›wE?€$?h%?¡ñŒ?£d?¡À?ŸŸ³?›-½?˜r÷?šmÙ?ж?žg?Ÿ™º?¢j?¡–o? :ª?šò»?^;?‘ýc?ó?¢†Ž?™ó?lQ?™~]?¤3Â?¦U?¢vp?œó?œö†?œæß?˜…ä?™ÛK?žo?¡ô8?žè?—‹•?”’t?ž0P?¥ú?¥<·?§l?¥iÖ?˜Ø{?‘SZ?š……?¢^á?¤OK?¡H©?š†‰?Ÿï?©dõ?ª ~?©3?«¹Ú?§Ž»?“ý?Š:U?—ƒ]?¢ÖF? î?ŸÓ5?§‡É?¬/?§œÞ?šC>?™ã ?¢on?§&1?¦Ó?¢›X? `Š?¤Ò?¦"?¤t?¨FÀ?¨ÍÑ?¤°û?šªÆ?™Å ?£CP?¨ë?ª:Ú?¦j?Ÿé[?™íp?‰KG?x‘.?}þz?‡*?5ª?™àÜ? ;?£ì?¦]?¥h?¢kS?¦5÷?ª:?ªJÖ?¦OÞ?¢¿'? ¦§?¢<Û?©‰±?¬=P?¬‰ ?ªô=?£H„?£:X?§— -?¤‰Á? ·_?¥”œ?ªr€?¨"­?ª-?®*°?«Qó?§c?£za?žN?¢¬?§9?¤º¼?¡?æš?›N¸?žãž?¢Vv?šXÞ?zyñ?QYY?„L›?¢Ç±?«»?¦EM?¢¡ª?ž|ÿ?–£?–Ðå?£Þ…?­81?©¸C?¢u?¥H?©j.?§Ý©?©mM?­wÉ?«üC? òH?”sØ?šàW?¤G9?£²Z?£õ'?«9Ž?­Fý?¨-ò?¢ô?W?—ëC?›€˜?§ É?¦ô‹?¦Û?¬yÒ?­Á?®»?° ˜?¬ôÀ?£©?žè(?¦^Ó?©W?¦ô?¢"?0?_Ô?¥¸ð?ª0]?¨†?§IÒ?¦™w?Ÿã¬?¡?g?£F˜?£!d?§2:?¨ôü?¨åË?©A§?©?†?¨É??¨¥ˆ?¥Ï8? Õ?šÞÝ?›ù?+2?ŸB¥?¥£?©63?¨–7?§íÇ?Ÿø§? “x?ž|]?šB?˜Üà?¡¯,?§Öß?¦} ?¥²?¤HF?¢­>?¥?¨½?©ü?¥áÄ?¥Wœ?§}Ü?£¿Ì?œ‚K?œ@??ž,B?žÖÑ?¡'ï?ŸZ?žiE?žu`?M?šÞ'? Eñ?¨ ‘?­G’?¯€ú?®$¢?ªˆ«?ªQ?¦Åâ? }b?¢W`?¤ö¬?¤Â¶?¨?«wÖ?­€†?¬¶Ê?­[?ª8Ö?hæ?‘Ï?•Sf? ®´?¥]Ï?¢|[?¥¸?¢û?¡Y¢?¥7x?¨1?©‰ë?ªZº?©©ï?«i\?¬‚›?«Žé?«ŸB?ªýB?ªøá?§ë‰?¦TÎ?¬›÷?­(?¨ÞÎ?ªÃ§?²AÖ?´{¨?±yz?©²?§!Ÿ?«ÌÊ?«W ?®-Ç?²ô2?²3³?­Uy?£†\?©Kb?«Ò??«,?©.=?« D?®ØÖ?¯«i?¦½Õ?™^ë?˜yE?œ)?›jJ?›…?›ô“?›å¤?=7?ž·Þ?¡c?¡(?™`¾?™ v?Ÿgª?œ?{?š?¢ï?¬Œk?¯¡m?©-B?¤@³?¨G+?³²?¯Ó¶?©Bi?²-Ú?µÉw?´àý?¬¯?£Šs?©3E?®!®?³Ø?«[?©‚å?¶âæ?¸º?¬ï8?¦ˆ?¦BÂ?¬«†?³õe?«ðD?ŸRª?¢ˆw?¬5Ç?­u!?´23?·Ê?±9­?¬Q°?±Iõ?¹oy?µy°?¯³?ª8í?§]>?©Œ2?±Í€?° ?§HO?Ÿ@?žü:?®!³?ºƒ+?·ð?«I‡?«Ð¢?¯-?±Z.?®–b?¦3×?ªa?ª'„?ªžå?¯æn?«‡?¦ÿ‘?©ëÙ?¯Ï¸?¯7/?§Þ?¤”?¯?¯ù?ª2?ªó§?°ÉJ?·.ÿ?µö?·+½?½Œ#?¶qO?«Ý@?³Å?¸ç˜?´ ?®ìÅ?­°v?¡—w?šYr?®T?¸#?¦‚¥?¡’X?®p¡?µ)R?¶hƒ?¸ÔÊ?¿¾Í?¿d?½D&?¾½6?ÃÛ ?¾òO?´U?²é{?¯<¦?°a¾?ª˜W?¨ÿŸ?°}Ä?¶ƒ[?»s]?¸ÃM?°”.?­…þ?¹ó¥?ÂH´?½™?¹È=?²×?´7¡?·q?¬á?ª$M?®œ?µ.?³+m?«½?´þ?À‰f?ÁF?¸ùú?²Pó?¹g?Àf+?¾}µ?ºïã?±üø?±×Õ?·F?µk¬?¶E‚?¹¬þ?»q?½UÝ?¿¾?¾wk?º#?¹=Ð?°Sw?ªi?¶iI?Á ?Àß/?ºð?¶„7?¶‰ë?µ¦z?¸`â?ºäO?ºj6?µçà?°À ?·(ì?¾±\?¼JZ?µç¡?³æ½?­å»?¨lJ?·~Ô?½R?¼q™?¾ºQ?½æo?¹ƒÒ?º¢?ºû‹?±“[?¶ ?»õç?½TÆ?À©ë?”w?¾ex?¶Z?·F?»F?¿BX?½Ò?¹Õ?¶òŽ?½ò?Àþ´?¼2l?¶vú?º‚ü?Á7@?¾jØ?º¥c?¿ Ò?¾û?¼.c?¶}?·i?¿œ?»öÑ?¹ú4?º¿Š?º?½é(?¼e,?¼äÿ?ÂÌ ?¿:?»á!?ÀÄï?¿ÿÏ?¼ä³?¹ž?´tk?·®…?½'¡?»÷Ø?¶y?º>?»–!?À° ?Ã\ˆ?Â_E?¾É¾?¿‹©?¿|O?¼5|?¼‘Ú?¸WÀ?½wR?»z³?°d-?ªI?¨ Ý?®’P?¼g#?Á£Î?Áìr?Àð?À'ô?Ã[?ÂçZ?Â/0?¿+f?»1j?¼…ç?Äxg?ÅtX?¿ù“?¾PB?¿ô ?ÁE§?½í×?´G?´’Ò?¯Ô?§_Ý?­6ˆ?ª‚??šZ¥?«*?¸TÉ?ºÒl?º®S?¹Ö?½ß€?ÀBR?¾C?¼«¢?½hµ?½ßö?À„½?Á z?¿ ‡?¾ç’?À+%?¿6&?º”?²A?³/®?½e¤?¿{þ?¾½ ?¾Lê?¸Š­?°à?°?º?­6?¶}?º·Ï?»c°?º1?±Ã?¬i?±óË?¸¬?¾&`?¿ I?½j6?¿I?½¬É?¸à?»f?ºË?·Ó?¯;?¥¦ß?ª³„?¶É?¼¬i?Á“”?ÃM?À£ñ?À»ß?Ãß?ÂL?¾Ó}?½™’?¾•H?¿i?¾Ê?Ààª?ÂCÉ?Á¨X?¼Ž‰?¾QÉ?Âçò?Á‹±?¼6}?µ‹û?½xs?Ã?­¨?¿ m?ºåš?»'Û?¿û.?Ãmù?ÂS'?½Å?½#è?½ò–?Âl’?Åü(?Åxï?Åìh?Ä ã?ĺÁ?Çm‘?Ç?ÄxN?Ũã?À3"?·øÛ?¹oš?·?¾°?Á¸›?ÁÃã?Ã)=?Âm²?Ä?ÀM?¹6Œ?¹3?»”?¼Òõ?À…ü?Ãn?Áøú?ÀëT?ÃÜw?Å•:?Á‡?½<Ô?¹JI?µœä?¹WÇ?º§?¹‚ ?´‰A?´µC?¶å¿?ºf ?»©(?ºÕÓ?¸‡È?ªÎ ?¥ûÇ?¬µï?±›3?´»³?¶Ü–?µÆ®?¶ŒŸ?¯]?¯9ã?¨–?¥ÜS?­\?¦D?­jZ?´–9?±’?³Šì?³r?°¸‡?²èŽ?°ìƒ?° ?±lL?¦HI?ª:ý?«Ù¸?¦Œ? Î0?¨Ã–?­ÊE?¯§+?µ³Î?³v[?¬›?¶\g?²ß“?³ä?¸2X?¹À?°ßO?®¡†?·Vö?»êÏ?´Ð°?«š??¶9/?¾5*?¶i´?¬×ô?¯H1?¯hv?¬˜?²»7?³Ð?ºE‚?¸+?·Ë;?¶ËÀ?¸nÂ?¾œ?ºæz?»<«?¹Œ)?¶ÿã?°Æ?¡þ? æµ?¯bq?ºw?½-?¼q9?À¨]?¾¨C?¸)X?´ïå?­®?¨næ?©ƒº?¯F;?³Ð˜?µùÀ?¸ñ™?»'s?¹zr?´ú?´uG?·ÿP?²º?¦£*?£ò?¨B??©·?¬4g?µr,?±¾Ú?©­4?¯ ?¯(Z?¶wž?¯:¡?¢Q?œu?¤ªü?©|t?§Ëñ?ªæÀ?®0?©Ë?¦ÁÄ?ªÉ˜?©v?­P?«m¿?£u,?£îù?­ï?¬ŒŠ?±u ?²G?©±“?®D8?®,€?ª0à?²O¶?³§?°5?²›?­6—?¬?R?° -?²’ú?¬—æ?«ã¶?°[ù?°Aë?¶§ü?ºÅJ?°„`?£ºM?¯ÑL?±zœ?²G?µd+?µïÖ?±E?±Tè?¶O?±Ýx?®"+?­jE?ªÚ]?¨H¢?ªk?½!?ºi&?«¤È?©ƒ?² ?¬ÚD?ªp¢?£ í?žR!?© u?¯Àä?µÃÀ?¯O?°É?¸ö?¶Œ–?¨¡?©÷W?´×g?¼Ï?¸Ñ¸?´U?¬lD?³5†?¹ÖÊ?µÜø?³v²?¯Èá?²ì?»Q?¶Š?³??´™?®Gµ?®$p?­,ƒ?³¡È?ÀI?½¤Œ?µk?´û£?¶^„?»ÍË?·ÌU?°P?¯éë?µl?»Ê&?¹ö¸?³ƒ?¶†ß?´ò?±Ø{?¶…f?¶hê?¯æ„?¬«é?©§t?²Ï¹?³“K?­‘?¤V¡?¤Ï…?¦O?§ï{?¯ç”?³tZ?·Ë?±”É?«EÌ?°vH?¬°â? h%?¬ÎÃ?¨Ìõ?¢Ë?©Çö?®9?§è¬?°NÎ?¯]?ªp˜?¨ï?¤J7?©±§?±7Å?¬×d?­Í³?®Gõ?°M³?¯­?£ö}?¤2?³À‰?²×‰?­n2?²CÉ?³xz?©z‘?®í ?°”%?™Ã­?¦}Ÿ?£¥È?›ýQ?©¶$?·û?·Ua?®ï8?¯Z^?³0?¯ ø?³;"?´Ô?¶û©?µq'?©P?¬ ?µ¼ã?±8?°²ž?²gÇ?­ÿ£?¢ËL?¤ ?º3A?½AF?²ˆ?™Ûç?¦×?ª ¾?¬ÇO?¶e¦?´%µ?­{4?°ð?±z?¼.,?¹@Õ?°Pë?´0 ?ºÕ??½åZ?´?© Ï?¤?­Âr?µ<½?¾×~?¾a×?¹‡?¶ó?±ðb?·,?»XÙ?·A?º'P?¹ž ?²ƒ'?œêL?_Î?y_s?£vM?¬^½?µ!$?¿’9?Àm?¸ß-?ª ¥? Úò?¬(?¯R‹?µÙÎ?¶ó?³?¯º•?³Ým?²2À?²š?®Ü¼?Ÿe—?… $?8[t? W?`ø?’d´?ï®?«R§?·Î ?¶gä?±å0?º~Ö?¹Þ?¸—'?¸›7?¸Kº?¸r—?¹¢z?» -T?·™£?¸Î3?¾oÖ?¾›I?³‡•?¶L]?½ªp?½n!?»¥*?»Tâ?¾rŠ?½îª?¸oD?¾Pâ?ÀVl?ºY©?ºY ?¼”?¶èµ?®^?¶àX?½)?¾Å6?½îc?¶¼¬?¼ì¿?Ãjä?Áƶ?Á#?¾‡ ?½hÏ?À¼¶?Û"?ÅŠÿ?ÀQ?¾tL?Ã?¼…Ø?·CG?»Ê?¹d?µÞ¸?¬ŽÒ? ¡?5At?>Lk?“Ö?«LC?´ìv?·Œ?®D‡?¨0£?¹ë7?¸w?µ€‚?µÖ¬?¿T*?­´Å?£Ó?·Õ?¾¶J?Âßö?¾»v?·h?ºwS?»J»?ÁR?ÁTæ?»ù›?¸bk?¸(ä?Áè?À¤ª?Á(å?ÄMU?ÂÏF?Á ?½ÇÒ?¹!5?Àúˆ?Â@¤?º+?¿Žõ?™E?¾ù?ÁèÔ?Á¼*?¾Ö|?Á/Œ?»±?Áüø?Áyï?»3`?Å[?ÄcÍ?¼8?¹¦â?¼òÖ?ÁaV?¹ñÁ?¶}}?ÁÞ]?Â0ç?ÁMº?Æ_1?Â|B?ÄYÒ?ÅsR?¼ß?º¸_?¹ê,?¼‘Þ?¿J?”§?¿¿ç?±À?œÎ?¦úƒ?¾bè?ÂúG?Âò?ÃO -?¿ŽÅ?½ö?¶i?«"7?¼?œ?Ãóÿ?Æë?ÄT¿?¿•ˆ?¸Jõ?°»˜?ºP1?¾Ñ?Áv@?¿²f?ÁÈß?Ä'Ž?Ä°?ÄeÈ?Æ7?Âÿ–?»Ù?¸¡p?»‘Ã?²D?º>×?Å2„?ÄZ?½Ñ÷?·Ï-?¹¨?Á‘?¿—>?À…Ä?Ä&¸?À³’?ºC¤?À …?ÁÊG?¿â‡?ÁnV?ÃÔ²?ÂÏ?Å"Ù?À§µ?½3e?½A\?¾¶Ó?¿}?ºëN?¶*?¼Æ˜?¹*©?¹Ò?¹åN?·L§?´½š?¾ã=?Ägª?Â?¼õš?µ@M?®>Õ?¬/×?¸™›?ÁF8?Ä$V?Â*¬?Äðö?ÂO9?ÀÁg?ÁÇ ?»s?¶ß’?¸Q ?¼~Q?»ìg?±5S?¶v)?À´?Å?¿áj?¿]?½bÁ?ºÒw?½d?¼ñ?¼©3?°ÃI?··?Ät?Äpi?½˜¯?­¹?ª-`?°Å{?±›?¶g ?¸†d?°/?°á¹?³º£?µþ?¹w+?¼2Ô?Àc\?·+?µ÷š?Á+?Ãó©?Á„l?¼iÓ?¾n‘?¾9&?ÀÕ?Á&?ÀŠÞ?½M¬?¹‚;?½èÏ?ÃÌÌ?ÃÍN?Á#¥?ÀÆ?Àøh?Áå—?¾Ó?¶8˜?¾Å>?¹æE?±ð‰?¡Ÿ,?¥®X?ºÿc?¿,?¿qC?¹K?ºaG?½•?µÏ@?®èÃ?³Y}?¶U?µáœ?µ%m?¨ž'?¯bþ?»Á?½?¿»?Àœ³?¿fŸ?¾˜?¾å-?½³”?·æ? C¾?¢þ8?¦ÐÑ?¡²ô?®äâ?¶v1?²PI?®†­?®Íj?°ûC?² -?«ÚÐ?¬ˆ?œMc?–b¸?”}û?™PY?¬˜?¶àÜ?¬¡±?¡fè?³[Q?·×Ÿ?®Ãì?™Rï?™ùI?­ £?ªÈH?©¥„?ªÅ^?±õˆ?¯³?¬"?®ç3?­Ð? ŒP? Oe?¤Rþ?¬ï?®O»?§–÷?«ú?¯UÑ?¯W?±­d?¸2v?¸¬?°FX? ³Ó?ŸÎ7?±Wq?¬Tq?¥‘õ?­-æ?µ‡p?´jg?­«[?­•¸?­‹5?¬P?¤Of?¦T-?¶x«?¶Ù:?¨öd?¢I×?œpõ?«¨û?¯™?©0`?œÉ?§¯p?ªvõ?§©?¨õÍ?©Á$?¥ U?£i¸?¥D”?¨£æ?ªt€?§>x?£ÿÿ?•1¹?§~Í?®4²?±ØZ?°b?¦…?šÿž?¢Ãá?¥Ô(?«nò?¯œ:?®S?¦Ji?Ÿ?Ÿ5t?°‡_?³1?±_ÿ?¦3e?£=I?ª??ª¯?®-Ð? (W?žÔ¯?¬O=?©·!?¥ƒ¶?  ?¬Dµ?¥ %?žt5?‡Å?®m?´ÚJ?®•4?®ž3?®ú.?«#V?¥ZH?§ä©?­êj?œÝ'?Ÿ¼²?²°?µçù?­n?¥ –?—NF?ÁÚ?–íÈ?¥îb?­P?¯{;?­I‹?«r?­Sü?±iÓ?®š?«4j?®úO?±|?±ó?¯é,?³qf?«÷±?ª²²?ª$x?±#H?¯wX?Ÿþc?«9M?µmO?²ãØ?²g ?°”Û?±u?®dG?¬˜?²‘J?´n§?µmè?°îñ?§)&?­ÿR?´?¶?°C'?«îÇ?´ä~?¶¨Ö?­Î…?°pc?´‚?¬ï¾?¥]S?­ß -?µø¹?¯ïÎ?¦µA?¤õ8?¨Mð?¦ºŠ?¬Š†?«I? w‚?¡*À?« Š?²ÒC?«(?ŸŠò?£—?§­È?£–?¨ò?¯Î˜?´aÛ?­Ê ?§zÓ?¨q-?«ŠX?¥Î?¬“X?¯œV?«» ?¯È?¯}?®ó?¬r?¬?!?±TÇ?©Y?¢þÏ?ª•Ï?°ä?­ž$?©[?­§Ó?®à¸?°çŒ?¯ƒ?¦^Ó?¤ Í?®â\?³bÃ?¯ô?¯Š:?³ÿ?­Eã?¬x]?±5?³«?²sÛ?®ìh?¯Yi?±e†?¯Uc?²W?³ŠÍ?«–i?ªR5?¬–?§†î?®&Â?±}?­²¡?¯ke?³kÜ?°ïK?­ñ"?¯‹*?¯†:?¥)?® ù?³±E?®ÍÈ?ªÜ?«ÿ…?®gì?®ÄÜ?­‚Õ?±î?°$\?°‡?®VQ?°Ii?­H©?«H-?£Võ? ií?¤)U?®1?¬Ñ?¨ (?£¸Þ?¡ÏÙ?©¸Ô?«ï'?¯3/?®ñ?¬P©?¯ê;?²OÓ?°\y?¬þf?¯_‘?©õ?©2÷?± -x?¦¸‘?¢n?®±ž?°Ûˆ?° í?ªæW?£?š€û?‘þÍ?P§?žÂ&?Ÿ‘0?œUä?šB¶?•rö?Žç{?Žt?™½ï?Ÿr´?cä?Š?‘/r?Ž Š?“$w?œ¢Î?œ³Õ?œdí?¡hÎ?—7?‰ÛÕ?ŠIø?›hõ?–¡~?šñ?–µ?”ºê?”^„?žÏð?Ÿ+Á?—3V?¹¼? +¤?–ùÚ?•!?ŸDE?šÏT?»D?œ? ?•óD?œ -?šßY?•–÷?”/~?Ÿ?c?è6?šCK?–¢;?¡T§?£!?šs2?••`?˜X?›òì?›¹]?Ÿ>?–àâ?Ÿ’Ù? ¥¥?šÎJ?–3?š’ð?Ÿ€D?} ?œ”?‘ͨ?…Ê7?”ÝÈ?¡G?šGt?™°Ð?‘Sñ?„/?‡Yë?˜?˜Ñ?žÜ?¡þ?ž7?–?”û?™Ñ^?›æ(?Šýà?“·ð?šdâ?œt¯?šûd?›?™´±?šYÀ?ŸVÊ?ýf?š³O?˜y{?˜|ë?›²˜?nß?Ÿß?›\Ô?˜¦î?‘ëX?“Zà?š²ˆ?—c¨?‡&?Š-(?œi ?œøN?{b?—µ;?“?—}ó?œç?^?šçÜ?’¼U?˜ºA?*ÿ?ša—?›kW?—ç0?‚Öƒ?ŒÓ}?Ð(?Ÿ]ò?™¤v?“H'?—=1?Š^?œI?œsÔ?œ]?—!À?˜ í?˜åz?œéÅ?ž‡?šä?“ ?—S?š·?ä?{”8?—ßñ?’r3?Ç?—C?œÕû?œÔÖ?—y·?˜ ?™%º?›¸?›w?œŽÙ?—î‘?˜E™?•õø?™{Ë?OU?›_¡?•j/?—´i?–Ÿ?›Oš?” •;ÔsÂ<1_<mµ™Y<*;<¼R<,‡LkÝ=B[¼=KR=T¾=SŒ+=E}'=9‡,=AD=[Dý=uù =€¤H={Gç=n=h H=sŒf=‡!¬=”°=—¼I=‰#=„ -7=m±¨=Sºì=<^=*Dú=¦Ð=yW=hÌ<æƒ<Ô€O<ÝÉ=FÄ=„”=:½=PM&=U?U=C=ô=â<<ñÙ/<Ľ9<Á¥[<Ûó#<þdY= ε=#È=,ð&=B‚=N‰ð=DTM=+ÅÚ=Ïe= ”³=3´#=K©=d¨=x…=}þá=rÕ =`Ö=Rž=Gµ^=9œB=(Ÿv=xë=üû=Q= Úk=îB="= ¢K="l*=4K¹=9Ýœ=8û÷=)=.c=%¹À=&Š«=&hÒ=µw= z=–=RÙ=G§=Jt=ŸÈ=5Ý=#§=4úw=8ä[=(Q= Ñ<äs <ÎÊñ<Öf<ó0°= Ç{=oX=%®—=,__=0í/=.(=$„ø=VÉ=+ª =J¸D=lg¹=z4 =k"h=L’=7‹þ=;÷—=Sê]=l2=w:½=vÈ=pOr=nLl=y†=‹|ˆ=Ÿ‚=±˜ô=¾vc=È"=Ѓ.=ÖK=ךu=ÕÙ¿=Ò˜©=Ë›=»V=¤/ -=·Ì=ˆ@¿=‘¾=£=í=´3a=¼yç=¹b0=¬“=›üì=Њ=ŒÌ>=!=f=’Ô=˜É=¡Å|=¦É+=¦t=¡)r=šçÛ=˜­q=ž¹è=ª=N=²íˆ=´LÔ=±CÍ=¬ñf=¥·€=š!)=O=iq= >a=¼Ås=ØO=æÒï=æ6=àªÑ=â5¢=ìÜu=÷œÖ=øæ=î›m=æWz=笨=îtÓ=ò‘=ñ¿s=ñ_=îN=ãþå=Ö²8=Ñ&þ=ÑÄË=Ê5=´kÜ=ºå=–t‡=že€=©¡Ñ=±¨=¸„M=¿æd=ÄÝÄ=ÃMý=¹yg=§ÿà=“ ›=ƒóû=ƒÌ‚=’´=¦åd=µJ=¸Œå=´"±=¬[:=¡©Ü=“Ç$=Š_Á= ¨=£—Ž=¸H×=ÄyÈ=ÈRÂ=Æýl=À<=µ§=¯wž=¶aÒ=Áy=Ä=«=¾T§=¶_ë=® -E=¤Gº=œìn=Ÿ/r=¬¦é=¼¦–=ÃÜù=¿)y=³·-=§åH= g;=ŸâW=¤ú¸=¬H=³‡w=·¾)=´œf=§€/=‘æ=xÎ=jÀÿ=„·C=¢ m=»êv=ÅA¤=¿„:=¸Û˜=¼êÀ=Æì=Èf=¸lê=˜Ë…=fä`=(µã=/=)K=D^x=‰´i=«¥C=¸8¸=¯,Þ=…=?=ƒi =fŠ=ç=¥Ñ=©?=¬ŽÅ=¯£ò=§‘=“=h7P=D’˜=C‚9=ckg=ŠÕå=¤Õ@=½Aµ=Õ§c=ì,=ü¿Ò>¤z>o‚>û=î#,=Úü=Ìã8=¿rû=±pl=©f_=«6‘=´IÛ=½µý=ÀN =½5ª=ºQÄ=³¦Ü=žøü=yÈ­=5ÿø=òý=K«=?x=|„À=¡zÇ=ʘ^=õžî> -ÙÙ>þp> °„>é=á”G=ÇÕ.=ÅR'=ÎÅ×=Îú‰=ÆŽ@=È~ -=Ýü>=û£6>ô³>#È=Ü^\=±·Æ=“´h==˜1=£H= Ôn=ø|=vgö=Hƒ‚=r‹<ç|i<ÁR†<Å¥â<Ý<ôp™=yf=OW=.Î9=[ŒC=cÿ=²q=ÌÑJ=à¾o=ê·ý=Þò=Â=²e«=Ç -=ô—> dl> -wR=î=»ß=™Þ¸=’»ƒ=”› =Ž=Œ‘­=”„g=£=e=¦ -‘=–E=…û=ŒÌÅ=®+–=ØO=ø¿ >¨>XË=êoþ=Åsc= ­ö=ƒ0!=Y ==ª¢=DÃÎ={Ó=ªÌº=ÛL>©¨>Ñ/>Ë;>«>¢7=íð]=ä0´=þm>@)>)ñE>,â<>Ô =öЬ=·Ô=ŠÈŠ=o3=r „=‰à"=¥ÛÚ=¾ÔB=Å =º5i=±(“=½u=á©>.Î>;§>ð[>#À‰>1IL>;âõ>:u>,pÔ>>4>„‡> >ÌF>Rj>ÄŠ=ö’á=îBq=âË=ÊœÖ=´X?=²Ýc=ÏÎ#=ÿÛ?>×}>… ->Ø> Ë=âóã=Éš¸=ºÒô=¬á=—ÈÁ=Š=­3= Ÿ=½@T=ÜüÖ=øH>ü>#>'Ø>&†=û0{>%…>!–>³O>a´>³•>ÿú>%µ†>+èÓ>(o>^€>…ý>–\>>)Úl>+Kƒ>#4ë>ù>b'>X¥> ->æ>çÞ>‚;>ñ>ÛÙ>]z> Uó>×Ð>æ >°ÿ>׃>o9>Ø>ÓÍ>>Oª>ô>éÍ>¼C=êêÃ=Û¥Ñ=äë=ížØ=äU´=Íl=À–u=Ê,Ã=Þ|í=ïÔÛ=ùM=÷ 3Y> /8>šq=ý˜º>ðÀ> -…F>üd>½Š>N>¼­> æG> <ô> ‘p>8=ú¸=÷ =ÿ:+>ÂL>ºI>e=øøC=âA[=Õ²§=ÙH=ãT=æQO=å1f=ì*H=ûïÐ>w`>OÄ=ózx=Öïh=ÂRF=ËA =îÎ> Ј>]9>­Ê> ¦S> ‚K>3f>!îé>$%>ô¹>r<>òÃ=äÎØ=Ñ?Z=Õµ=á{o=åž…=ã6û=å¤]=îdo=ûR¡>ŸS>[>q1>6->©!>°=ý©õ=ø¢=ó0=ìæ‰=åªq=Þ^=Ü‹=âX¡=ëÿ'=ö¬³>:À>xÎ>O>>§> ¸>K>ý>%Y>)&¡>'‹ö>µR>+…> -¤$> ¨>Öa> Ï:>ã`>¾æ>þ> ³º>ÐC=ÿB»=þ-ž>¢X> º>©>'9>>¬m>9Y>C>_> -k|>ê1>ÜÄ>µ>{ò>e‘> f>`v=þ&ë=ì‡p=Ý­õ=Ú¢€=èƒ>X›> ˆv>âí>Î>d> -‹ó> -Ðñ>èP>=>ë&> -—>!dD>ÆÌ>¯¹>ç> ç9>|I=ë!£=Ìš?=»˜M=ºÙg=¼ú =»œ=Á¹Ò=Ù×Î=ý¾>g>ÀB>(u“>*êC>$ º> > 6”=þØ=Ù¶'=´ÿ=¡ñN=¤ê=´†=Ìö=çŠ=û)†>èN=öW-=àYÈ=Ö¾©=ß[Y=æ}»=àèq=ÔÙA=Æ&’=´½ó=£éñ=˜}*=”Úz=˜2=¤þQ=¾Lö=ÚÅy=ë®=ëƒ=áÉ=Óà(=Çõ¹=½a‘=±Öí=¨vÖ=¢9=›¦Ó=›ÐW=®¦>=ОR=î…%=ûú¬>Úá> ž> Úê>÷Ò=é|ò=¾dò=¡Y[= -=µ±Ÿ=Ñü=äåª=ëöd=ë'ä=ïDs=÷òW=õÃA=ëMŠ=îµ:>³"> -ÕS> ѳ>ùç>šž>B> ¦>Ap=þÉò=ý_w>c>c…> -î>‹ã>x>z­>ð >Z>=T> Y =ùÙ=áóå=ÔŠ›=ÎÙç=Ï|8=ÕçÕ=ßÀ_=æ €=âï†=ÚÙ<=Ø¡@=߬¢=æ"¥=àÜ(=ÔqV=Ôm“=é,¯>¶-> >F>3%>ÂÞ>ã»>øg> k¥>_Ò>WŸ>M†>˨>ï> `7>x|=ê´=Ù×y=Óú=Ùþ=ê"o=öRž=ꪭ=Ç®B=§iµ=¥TŒ=¾_í=Ò—ˆ=ËC =³®‰=¤ÞO=¨‚ö=·î¨=ËAí=ÜÙ¶=åúT=âǹ=ÕÆ=Æi0= -H=ËP‹=Û÷9=è°Þ=ë47=ãÇ×=Ô"´=À‡…=´s]=¾þà=Þ7=ýX”> ß> ã> >Þ°>ýz>°-=îz=âÚ¯=ì‡]>Ýù> -î<> |>"ä=÷ÂÇ=êj˜=ãÖ4=ÓZ=»p¼=·Šã=ÒùC=üVW> ØÅ> oy>þ>s> À> Ù©>#>[> Å>VÝ=èøÉ=ؘÍ=ß³g=õ†->#Q>ó=ú®=çú3=èZ8=üÕÕ>¹>|%>Ëî> -kv>™>Çe=òô=ãÂî=òq¤>Ÿt> -œ>¨>!$¢>+¸z>*o>¨:>í5> vl>7î> é>…q>Ii>ô»>m‘> ñB>"&"> e>> ‘J>Ò>¥Þ>9/> °v>*0>0*¡>0Ö >,’ >(–>&Â>#¤0>J>`s>øí> Ôo>(V=övŒ=ù’P>Ýá>i±>k!>i›=î+»=Õ‚¦=¹²¸=Ê=¥€=Tnv=> õ=8P=/‘{='4=7Jæ=h:C=”ÏÒ=´I=Ëë=ØOc=ßÚ<=ë †=ú¥1>1> ö>{4>y>â>œ9> -}>#—£>*Ù(>)Ê}>*=¬>4{¦>>[>9éÑ>+¤š>#1#>&­»>/”>/VÌ> Á9> _=ò®@=×C=¿+=¨£÷=“8=„—Ú=‚—=ê=£à²=¹öj=ËÐã=ß][=ûT/>Eÿ>$ø>3Gu>DÏÈ>O—>X@>W>O®†>NŒ>YX´>k|€>|_ˆ>‚€>‚÷¨>€òî>z>î>wu><>†Äf>Š‹6>†k×>y{o>hš>^h>[!#>a·{>u-­>…Ø>~À>’LË>“è›>ïk>‚ê=>|]>ƒ -…>‰±Ò>‹{>‹ÀA>Ž -J>6¬>ëï>‘L\>“-;>—ø•>œ%>œ!¦>˜z™>—jž>—ŒÕ>“ýn>ŽÉÍ>Œ=>Š€º>‹D÷>’í:>ŸŽQ>ª"3>®)²>¨Ì>—ÔG>‡]½>¾>€!Ë>…y×>ð>æR>¬É>¶šÿ>ºÌï>·½Z>®¢¹>¥ÞM>¢ä+>Ÿ£7>“‚k>‚¶Ó>wa9>†,ö>˜dŽ>¤þX>ªaD>¬Åå>­oý>ªÙH>¥À>žûS>œ‹>œÈ¶>œMÿ>™LŸ>™ÅÑ> ŸP>¨y$>§tf>™J„>‰Rû>ˆ#O>“•ú>›çx>žýH>¦'|>°Ž›>²ô>©£¦> §>¢±>§’ù>£ó‹>”{x>‚ç>uÅi> ¦>‘o>£uà>®ŸÔ>¯BT>«2Ž>©¡)>ª]¹>­­>¶Ò­>Ãœ>Êy¥>ÉT„>ÂÚâ>¼—ý>»ˆç>¿=í>½z>± >¤©ß>¢kÁ>¤¥">¡€0>—N¦>²)>Ž?>–Ô4> u¸>¨Ì¡>¯§Ó>²™ >°>©ÐÎ>¡7/>œ6ã>œä½>¡j¹>¦Ä¤>©¥>ªzú>¬f²>¬¬þ>§3>¢ ‘>¤ ê>¨ Å>¨–£>¨,C>¬ëì>¶³²>½ ±>ºŽ•>°Û?>¦!>Ÿð^>žnJ>›Ä®>•0²>^>”\>¡\ >°…J>¹)>½â>½‚ñ>·V0>ªIç>–þ>=|>víë>Š3^>Ÿ;f>¬,>¯êõ>­›å>¨LÁ>¦WK>¨0X>©>¹>©]2>©í@>«&È>®:>µŒ3>½üg>ÁBÞ>¿î]>¾zC>ÀÜ> ®>½æ\>¶Ê>´…,>µ#>´˜V>µk©>·%>°öz>÷>ŠCŒ>…qX>.>œŒÏ>¤Üy>§Ce>«ÕÙ>¶ÃS>¾n>º‹>²ÅÌ>±mÀ>µjF>¸ÆÂ>µ©¡>­>ª‡>®éŠ>¯þã>¬¦:>²Ea>„>Í%Æ>Ç®ñ>¸I>©%->œ§8>“m¦>‘`µ>“æT>•€s>—¨R>šwY>šð†>M?>¦lè>´š>¿>¡í>Ã\H>ÇG)>Ê×Ò>Çâv>½Ò5>¯­à>¨” >²T>Âóž>Î'¶>Ѹí>ÏïÐ>È2>»ç¨>­zç>˜ô‰>}íÞ>b<>,+>¢×T>½?Î>Éþ•>ÉÔ$>¼Îé>¯Ò^>­&H>­õ}>­Âô>¯>²C>´¬”>ºÐ>ă>ÍŽ+>Ô®~>×õS>Ðf±>¿ÎX>³œî>²cä>³ñl>°>­¦ƒ>³ð>ºÌG>º³R>ºI+>¿á>Á’>º¤£>¯Q€>¨>ªÔ^>¹}>ÊOË>×r¥>ßLj>á‚Š>ÚœÔ>п’>ÊäÌ>€>®è>œÅ¢>žˆ>¨§Ä>¯$D>¹’­>Ê/å>Õò>Õ%¼>Èüd>»Îá>¶â±>¹ý>¿ÚO>¿N>¶ Ž>®8µ>¨k·>œ).>‹g^>…ãP>”9ã>«c­>¸)>·¡m>·œz>¹g>±jÎ>n>ˆW<>ÒÏ>‰U>“ C>šñþ>  >ž~D>˜w/>‘‰å>Œk`>‡H> >±Ïs>º™­>·E>³‹Ž>Á¨«>ßD>ó¢ª>öµh>òß >îE*>ê&¹>æ¡:>Üæß>ÉEü>´X>°ª>Åñ'>á™'>ëä>çó!>ç°¸>îºa>óÙ>öË©>ú >ñtX>×Ðô>ÁR>·%ø>²bß>»¡Ì>Óü>ã×¾>éг>ðwÍ>ôwP>ò§>ö1²>û¤>ïßÓ>Ö>Êî1>Ùóì>îü>üF™?&}?t¤>ýWÇ>ð¶I>òŠƒ>þÆÇ?Y?BP? -‚¸? -Ü??<>ûsS>ñ^>ô"˜>úgÿ>ýè§>ûöz>íÅt>ÙnÆ>Òé>ä_Ö>ÿÅß?Cù?'¸?<Ÿ?™>è )>À+R>±r±>È'>ê¥\>û¬>÷ŸB>ì4·>ç]>ð¹'?Ï?ÿr>ý–>û&³?ïò? (Ê?ƒG>ÿrè>õ$>ÿ Ä?YJ?Dê>æ˜Ð>à}3>çC©>ây(>ß^Z>óðm?ÿ¤?Õ:?õ?ª?Aü>ôdæ>ø;9?? -ïD?pÖ? ™?ÈF?\g? âu? òn? -Žc?N?ðx?ò¿?ª? 0à?VÜ? ¤?”J>îÌ>ö‚ì? /e?gä? õ}?uS??eß>ùÙ’?? ]è? Ý?*k?,×?aÝ?s ?Y'?×?P×?›?šˆ? ½p?C#? Äü?Q¨?ëÅ?h? Ùõ?š¬?ɼ?š›?5!?Yb?S“?b»?Ñ+? ¶(?,Ï®?5ê.?7oR?7NE?:,˜?9è¯?2„Ñ?(Íû?!‹¶? åR?)˜ -?4˜*?;61?=[u?9ª³?.º–?$Æü?(6>?5o?<½?6øÈ?+Ìç?$1?&<–?2”)?>½ê?A'?=UI??+t?Ig?R¬)?T -{?OÁm?KÉ„?Kç??N›,?OÐ?L?DÖÿ?@‘Q?AVË?CåT?Bæ ?;±ü?7u±?=q{?E{?CT?8|ò?4D™?5®­?2sj?* ?$Š¿?$ðÙ?)·C?/=?2 Å?,6 ? ù?¦?*?BE•?NÊ.?LêJ?Gi?F›?H²À?E2½?<æþ?;5Á??ç ??˜?7Ý??6ù%?>¤•?AhM?;¤’?5T˜?5­T?@Lµ?Oý?Y¹u?Zê?V-ã?Q ß?H…ñ?@Ú??ßÖ?Eì?OÌ?Y!Þ?]WP?Ys˜?M9:?F ?M›Ù?VÊÚ?X­[?W~\?TXÊ?MùF?E“?@¿W?D?J Ü?L&>?L;?L?OÏ?Vöt?[’³?Y¥ ?S=?K2Í?EU¿?E9§?K#)?R×Z?W¡5?YB?W¸?P)?JŽ0?JÜ/?OÆn?T£Š?V/Ÿ?XkÙ?_â ?h§£?jÒb?e¤s?^jÒ?Y£*?YX*?Y{±?XE?Z5??Z¦?ZÆš?anx?i!Ž?iÅ?eñ’?`¸³?\£?ZØÑ?Yåî?X5—?[Ç?_ö*?^L~?Y6?W[Œ?Vš?TÄ?P°W?N@ˆ?Où­?Wnñ?^n­?_¡†?[æ?SaÎ?JS¡?I+?PÞ?W=I?WK;?RX¸?NÄÓ?Jô:?Dÿ?AÛ±?GŽŠ?W²?e¢2?j•?fˆé?_ ?[Š?\U ?XÉK?J¿o?;L?7Üq??ûŒ?L“ù?TÔË?TB?Q¾D?V¹K?c6Ú?kG8?gß?]SŸ?RYJ?Lî¯?QÕå?\J?a¿?_¹?Z?M?Xiù?Y{?VË-?TÑÏ?W‡=?\hŽ?bï?fQ“?cÊ)?ZCf?R`Ø?Rzâ?T‘ó?Që%?Mh?L¯½?L½0?G~ÿ??R•?:É/?>;?II?S"°?Siö?K¤P?Fb?JM¦?PÔ´?Sk:?Sã·?S†Š?Qh?OĆ?QùS?T“?PF|?EÏj??ƒû?B6?EΔ?FÙ?E§ƒ?G ý?J”?IÂa?G½Ô?Iµ’?Khÿ?H½×?Fs™?H©?L*Û?L!?KÐö?O©?R 9?SRg?Tµ?TYq?Q76?MÊ(?LÝB?M¥?JàU?GÃ?G³E?JŸ†?I¯?B8Í?;´œ?:ì?=“©?A¹´?F³?IŒó?Kt?H´?C¤·?Dk?KQ"?P•?Pfÿ?OPí?L¬x?Ij?GÉ!?EÿD?CQä?B(?AgÎ?=FT?;ÊÛ?={?>ÃB?BÿÜ?Gò ?Mç?R¿ß?U?Rka?KÁ7?D?‚?BHÎ?GÄú?NѤ?QÑ+?O°Ë?L¢?K±A?M_I?OI?Pê+?QÐu?ROì?T%$?U–E?Tñ?T|Ö?V?W‹Ÿ?WVy?Vìò?V+3?Pu?J7^?KŒX?P9 ?QY?Oå ?O-ñ?Lº$?Gé ?HäG?Oöð?TVŠ?UXü?Uˉ?Rýv?L4Ó?H8M?Jæä?N ?P£“?VlÙ?Z²$?WE?OfÍ?M¢±?Ql"?Thž?UÙì?QP?H£ ?IÊ?P}1?N&ß?=Æ5?+}Î?)š*?7Ù8?A3/?CHY?Eÿß?H´i?Jà„?Ië ?Aƒš?;0e?@DÂ?Fƒ?FA?F%?I›&?Nœ#?Qù?LfX?Eï?EJŠ?F|™?Dö#?Ey?FZ4?B+³?;´?8®?B Ö?Q@Ô?[šü?`IÈ?aBQ?_?X*›?PæÚ?Oâ¡?Ošû?MB?P;Õ?Wfó?Y_;?SO?Iª˜?C3ì?Ež?JgÅ?M+ž?Q,"?U§œ?Rƒ>?EÜ*?5ûj?,Y?0dÑ?;Lû?>û„??$t?DðÇ?L-Î?Pß)?TJ/?UÀm?Rvt?G¼?<ï£??ú½?DÛœ?=˜ž?1uR?1}L?>bÐ?HfG?LC´?N[¯?Lxz?I¼#?K?Lÿl?Mî™?O%ô?Nqb?LíÏ?M »?Gò»?8<í?.Wï?7ß#?EÃ9?J[?Iÿ>?Hx¦?B±?;WY?9%\?;MÕ?=À??[“?Bª?Dý?GE'?G™Š?DßB?A'?>Æê?;Žä?36õ?()?$×?(Þï?.*Û?4¨ù?9bœ?7Jæ?1ËÞ?0_ù?4b?4{€?3ý1?6_?5E?1_?,h?)ó?,‰?0F¾?1x?,X?$ÎÊ?&-ê?.pÎ?1„f?- E?#fÂ?d£?J›?ã?$'4?'êË?)0ˆ?+Á'?+ÂÑ?'´þ?&ú±?*J?,eú »?TS?¦Æ??²Ò?AS?¢ˆ?,?2Ū?5us?4(?/F[>?>n?4Ë ?08/?5jC?:Áö?>›«?BÞº?@À¦?5!?#ac?¦|?Î?0•·?=¹9?B•œ??:×?8”p?9"î?A1Á?H¦?IŠ ?Iyr?MXk?Oæ?NoÖ?Nµk?F /?4¢Õ?.{´?/?)Ã}?,l„?5¦Ð?8=.?9 ?Dz¢?Q’?Tj?O²?Cü°?5™í?+Ì?'-K?*žº?4[?.[f?!f[?,¹Ô?>}?B6g?Bâ§?F„—?Prô?Y¶Ý?YCÜ?PÁÐ?FÏ!?B è?HEL?Vî?^‹?]š#?\?\½ä?[èS?YÓœ?X+Ë?P–?Aa’?8ê…?@2þ?IDk?Kzz?Q˜?[E”?`7Ý?\A?Y–Î?_/}?e[?e™ê?d\³?d©?c/ô?_N‡?]f³?_%o?^ÜŽ?\|?Xä ?UP?UŠº?UC¨?C“ç?0K?<‹?Ry2?W³!?X­3?`o?b©Y?`E?_0h?X}©?Pô?Uçæ?aÈ›?djÔ?`G?^‚?[¦Û?ZSÙ?a§.?hö“?iXø?kµÎ?q °?sOŒ?tˆº?uPo?rC?lGæ?h¼Û?f—õ?cï?d;ž?d¿W?_àØ?T Ú?O)?]¸?n?tÌŽ?uA?u°?s”µ?nx¥?jðL?jŠX?kDÂ?o&Q?r½§?r>\?m41?i|ê?hW&?d8?^=¶?YÅ -?Q­«?PÅ ?aQÌ?lðZ?oÜ=?o&?dB©?V¢?T^?^³¶?`¤?\R,?eÊ=?rÞO?u²G?s ù?uex?x@?t²°?q¨€?sË‚?uÖ‰?oæ¯?j?³?nN?s(Á?iƨ?^=+?b×µ?d@þ?]??YV¬?_ñ¥?n?=?{6ª?€zk?€óÚ?€ÌO?~¨®?rfÓ?_áR?^C+?qLd?~7i?€c?Y?vȦ?hÊ?f׈?wt?‘ù?{Oä?v3¾?s´?uŽ(?{´¼?~Oå?·ö?€ °?|îe?zx-?wç?s%8?l„?b£Î?fy?uÉ{?xÂÄ?qøP?pê?wì ?™R?ŒX?{!?xZ(?v9î?xû¬?}+œ?~î{?~îÚ?wN?rXX?z3?y¼?rW&?x##?~„ò?w8Ú?mœå?t˜¿?~‘?|ç\?s¤„?k™G?mQã?w?‘?€~‘?ƒ—ª?„ø4?„—ç?ƒÁÆ?ƒ„H?‚¢÷?~«Û?u€”?q˜Ê?xÎÒ?€Ü?Ù/?€ƒÆ?}ûk?>I?Àz?ƒ\C?…${?† \?„©¬?‚³0?‚Z˜?‚ô?„â?†*?‡x?†ýÀ?…t›?ƒ‡.?ƒË£?…<†?…¸‰?…Î?…¦†?„N?æí?€ó?Ó'?xÞ?X"?~F$?¾#?€!1?~€[?wÒ?‚HB?‚æ?‚‚.?ƒk^?„,Ÿ?ƒ›3?„XL?ƒË°?}wã?oÁÀ?k¤g?rƒ?z ´?|…î?{ÆP?^Ñ?ƒ“Ž?‚Éž?€r?Ö?|m?y/u?€˜¼?†§0?‰ƒÅ?ŠJ4?ŠfQ?Ši†?Šªç?‰æ?ù?wx ?Ó“?…¸w?‡@3?ˆ"%?ˆŠÑ?… ‡?€´"?‚N6?…¥5?ˆbz?‹2?‹ï—?‹?I?ŠM?‰œZ?ˆm´?†Ùƒ?†'`?…”«?……H?‡;Y?ˆ#í?ˆ«K?‰&[?‰Z7?‰Ïd?ŠÂ?‹Ò6?‹Ä]?ŠT?‡væ??tÛ?}/K?„oZ?ƒæk?…ð[?‰îi?‰¬–?†î?†:?‡"ž?‰1?Œ$ª?ÃÃ?NÖ?ì?Œ›ô?Œ6¦?Œ2?Š®â?ˆÕé?ˆp@?ˆÂê?‡íÁ?‡¸€?‰á®?Œr?Ž(?ŽVî?— -?Œ¤?‰Ä©?‡áG?†z%?„dH?…eÁ?ˆ +?‡Ò ?„µú?€…2?zx?zêÂ?"?‡÷å?ŒPÖ?€’?ä?Ž‰?»Ð?€2?êÐ?ÔÈ?# ?‹aç?ŠÁß?Ö?ë£?Vâ?~~?‘k?Ô;?//?b6?}æ?he?#?‚€?×+?—þ?ŽR6?ŽIÆ?<®?Ž÷f?ŠËš?ˆå+?Œ…•?‘ æ?’Æh?‘ñ©?Û?Œõó?Û…?‘Íù?“ÖU?”D?“×?“Û?’¿g?’p†?‘×=?‘­ý?’4¬?‘„ý?n÷?ŒX¦?‹TP?ŒžQ?>i?Ž¥?ú«?‘ÔÑ?mw?Ô??‘Þj?“>?’ðO?‘³?`¥?’ÿ¢?•5ñ?•½?’Ÿç?¯9?‘:U?’r”?“Ç?”<ž?•Ib?•u™?”Ã?“ŠR?“£5?•?–58?–Á€?–…_?–0:?–}á?–ÈÑ?–Ù!?—.?—U¸?–øI?–L?•dB?•×?–2F?–C#?–®q?–÷¼?–á¹?–©j?•¨ã?“º?“H?”½n?”ñÕ?‘ÍÊ?,õ?÷?ã?ða?Ž?‘¤?’øÞ?“õ?“ÌÔ?‘ 0?Žó²?‘ä?•ÅP?—Š?–ÀŸ?–N(?–ÎÂ?–ð@?•¦ê?“Iÿ?‘hF?’Qà?’å+?’¥æ?’»?ÜM?‰ý'?€ Ÿ?ý…?ˆèc?Š$`?…"½?ƒT*?ŠOÈ?¬Ú?„Ÿ?“,ú?“k?“o?“©6?”Qý?”6?““ð?“ç°?’ p?ŽJ°?Œ¹?ÈN?‡?’Œ?‘ÜP?î›?“uÌ?•wù?•K?“ô?‘æÿ?‘“'?“„ò?’é0?<“?ýb?Û9?‘²$?Èm?ŽÏÄ?×2?’Ó?“ÔŸ?“©7?ú”?f'?’p?ή?$?î†?gõ?Dž?“íö?–£Ë?—]l?–¥:?”nb?“N ?•1ã?–ëÀ?—•3?—ñø?—ôe?–«?”/—?’öT?”¨?–—È?˜ ü?–KÝ?“[?“Ù9?–û ?˜os?˜€6?— h?˜l?š]§?›vÙ?›?šË½?›Cx?›Á ?™Äð?•ðÔ?“å=?‘øä?-²?ij?“Êü?”FÙ?’}?’ù?“A?’ü»?“ye?‘âŠ?ÀÃ?‘g‹?‘ùj?“D[?”9ò?•O„?–~?•˜·?•ì¼?–ו?—>>?—Œ…?—¨?•ÂO?•—Æ?–@?–»‘?—_Ä?—ø±?—Ü?—jÍ?—^Ñ?—‰ ?—Je?–JÅ?•\>?•ÜG?–Ù‘?—>h?– ?“ª?Že?Œú›?“J2?—ZU?—ý?˜P)?˜æÒ?˜ÿî?˜Zu?–à´?•@…?”·.?’ÿ)?‘#ð?ôœ?‘-”?”‘?•‰'?’¡?‘–ë?“{ì?•«?–•w?–ÃG?—J?—É—?”Z=?E¯?Ž"?”{?•G?’ ?“¢ÿ?•ZÉ?•šù?–ÇÛ?—%?–;w?•¨+?“,Ç?Žøo?‹Ñ»?”'?“—Â?‘ZÕ?ù+?‘®1?•#ä?—q¡?–œŸ?,ô?ƒY"?}Ä?Š)Š?&?Š{‡?ô§?”xø?•èB?”ÚË?“4y?‘–?ÉØ?“Î÷?••å?•h -?”ÚÛ?•6@?’ 4?ˆÛ“?†±?ŒKù?‘!?‘ù ?}S?Šø¶?Ì?‘æ?’¬?”&?›é(?œÐ?›DH?™»°?™ñÙ?š•Ù?™¡¡?˜áœ?š2%?›Ý?œ F?›Ï¥?›ï?›ÿ-?›`i?˜£?”@?—?š0u?™É\?™«?—}Ì?•–ù?—UO?š‚?›_B?“Ýó?†„6?’ ƒ?hþ?œãÏ?š©Õ?™°¹?•È ?{?Yÿ?˜ î?œƒ=?›áÄ?™©??š×,?›òd?™ñ*?™÷¶?œRÆ?›Ü¡?•°!?ÀÖ?’´?™W?™”Û?˜½ ?›1_?œ)é?™øÆ?˜‡*?—“Ù?“î?”j>?™O?š -Õ?™Ú?›}J?œS²?œz}?œm?›ä?™~7?—_±?™®ì?›AT?šªk?™ë¨?˜wÉ?˜‹ê?šÅ‰?›®?›[Á?› ?˜aí?’áŠ?“·š?–ø>?—Þ?™ƒÀ?š‹?š‹?šŽ?š‡?š\ß?š;x?™Ž8?–zZ?’,ž?”Ab?—/?˜e?˜Å?˜çÒ?˜Ð0?˜ˆ]?–›Õ?“?ŽåÑ?”¹]?˜ ê?˜¨?˜|†?˜#?—Ây?—•?—…´?—?–^3?•®æ?•¥ª?–P?•üK?”û?’mÅ?’tM?“ó?”-é?’@Ý?‘yB?’©Å?’··?‘&\?ŽS(?´}?’šï?’ã#?‘ÄJ?&c?ô¦?’˜?’v$?’(F?‘”?‘PÞ?‘Iž?†œ?Ž‰?3 -?ŒÎr?ŒSn?Ž±?Ôå?Žgl?‹!?‹ÒE?ŽQ6?wb?&?¹í?à-?y—? ?7ê?Ÿ?Šÿ€?‰Å?‹–b?‹¸‚?b¥?;?j~?uM?u˜?šÜ?7Y?Žr?ŽH¾?ÇU?Ñ*? 5??Ž¨b?Ž_’?Ž–0?Žò?+•?Aë?Ží ?Žß?Ž•E?Žœ¸?Dt?ŽÚ'?ŽÐÛ?õž?'?9f?á?Ž'?ŽäÄ?‘Aâ?‘¦l?ûp?ŽÉÓ?Ž ²?©ª?µ ?¹ß?‘¯u?ù~?Žò©?Š¹?ˆõ?Œ]p? è?‘Ò?‘Ã÷?Ìÿ?»?_?Š†I?‰­€?Šàm?‰Ä1?…b+?ˆMY?Ï?‘À?‘Uß?þM?Ž­Ç?Œè]?Œ+?Œ|¥?Ý‹? œ?Ž4p?ˆ¼¶?ˆO„?Œæ&?å°?1¼?‘«¬?‘¢ ?è?‘sç?‘  ?ì•?‘Ü’?’oã?nG?Š}G?‰œd?Ž„Æ?ÿ?(?4ÿ?§ó?lG?ä?‘™v?“æ×?’m“?Qû?‹Û®?e‚?’31?‘A—?ŽÚ?Žx]?Žðö?‘w¬?“À?“s ?’=?`¤?‘×r?’ýÅ?“sI?’ Ã?k?íV?‘µO?Ð ?Š;Y?„½¥?Š »?Š­Y?Žëê?‘yJ?’‘¶?’j?ŒÅ‚?ŠfÈ?Šö"??Üæ??Ì?Œ-?„ú‰?ˆ4×?Žç»?‘µS?Q?’ò2?•Æ9?“SØ?”/O?”Äj?Ÿ^?”(‹?™)›?˜G›?š\k?U«?›¡0?˜¨Ü?š¬{?˜ÞB?“¹e?™zK?Ÿ-L?šb8?í2?hÒ?“x%?’ƒ£?‘ZY?’ ?Ü?ž?‚X?Œ-T?‘‘o?Ž5?…²%?ˆ•U?å„?;v?Œzå?Ã?’ Æ?“[]?™g?Žmð?Ùì?”rñ?“*Ÿ?˜Ï?”Í?•)è?”¤?’A?$Ä?‘†~?’¥ò?”V?TÖ?Q*?–7Í?–ž*?‘sQ?Ž¸?˜q?’7¤?”ܧ?‘þæ?‹^Ý?ŒbP?’7?’GÂ?”ÏM?–lõ?”Y—?’ïa?”¬¥?—?•ôü?“º‚?‘·ù?‘©?‘æ ?”É…?“êí?)1?‹¿—?‹Ãs?’[?“ 3?“J%?“Vâ?’¾?’s?’Àó?’7x?‘1!?’o¡?“ì$?“}?²ƒ?“ò?þ¬?Šï™?éû?’ñø?“r-?“]’?“+ ?’&M?‘»Ã?‘‚?ŒG=?¶?“;3?“©ñ?”,?”…“?’_?2ó?°V?‘•+?’äˆ?’7o?È?£«?’!'?”y?“ka?‘9?‘Ž?“¦ï?“-|?’Œ?“~ø?“ŸÝ?’!?´™?Qƒ?’c:?‘E)?ò?’vy?’•L?“Å—?’M?’—Ð?•8?“¹i?’éA?•†?”–õ?“`Ò?‘ø(?Žê?øB?’Γ?“»™?’k¨?’«Å?’’?“8?”s?”ƒ4?’¬?’{G?“?ý?’³Õ?’ñ?µ™?’Áñ?‘·t?ŒÛO?‰õN?‰¥?Œ*•?‘àj?”'ë?” Û?“Óð?“¬Ó?”^6?”X?”"E?“Ì?’³Š?“?•j?•€™?”]Q?“ÄÓ?“Çô?“¼„?’õ?X?Œ{?Š'?‡V¿?‰¾þ?†´O?vNm?„Ý,?Žºû?xÅ?“ž? °?‘N®?’<”?‘Œ¬?¦ÿ?‘>À?‘›)?’s?’Ëã?’$L?‘ô¯?’'?‘¾\?Å?ˆÐI?ˆÔ?Þd?’é&?’—«?’N˜?Y?  ?Œ®ç?‹ª?–»?’Ö§?’’’?Õ±?Œ ?‹—6?g?Çm?’§Ø?“S§?’B?“y?’ ì?&ß?‘'?šè?­/?‹k?†.S?ˆæR? Y?‘Šé?’¹ ?’ÿÇ?’\Ù?’²$?“y?“€?‘ê"?‘…?‘Jß?Ø"?‘%?’%G?’`?‘¯R?6Q?"%?’«?’2ò?.7?‹^Ï?3¸?‘Òú?’o?»??ŽÂ?ß›?‘IÜ?’?‘»­?G£?u\?‘BV?‘hÆ?’ ;?’þÔ?’ .?‘Ï?‘–?‘*?‘P?‘H?iÍ?Žh¿?‹¡:?ŽŠÝ?òÕ?A -?Dv?fË?vD??wÝ?>×?Žáe?¬(?Ž;F?Ž÷à?9?›?5?ŽÄx?y-?¢?n&?ŒB?Žãt?Ž²5?²s?°ë? Ù?ª)?!3? Ó?| ?¹T?ŽY?Ét?Aµ?ïl?‰ž?aÏ?üŠ?Wß?Œˆm?Œƒ#?ŒÄ?ŒX[?†–é?…¢?Š¨[?Š{I?‹ü?ŒåH?Œ«U?Œ~Û?ŒŒ?Œãè?Œ`?‹'?‹qÙ?‰?†ƒx?‰ë?ˆñh?ˆ{?†ú?‡@?‰˜e?Š×?ŒRô?‹a/?‰¸b?Šˆ?Š1C?Š ë?‹N ?‹=i?‹oÄ?‹N„?‹'I?‹Ì?Œˆ?‹žÒ?Š½ø?ŠRÊ?‹j?‹Œ0?Š± ?ˆšg?‰¦ ?‹bf?‹(…?‰CÙ?ˆg?…‹„?†S?Š/m?‰ÿ{?ŠW7?‹¡?Šú·?‹³?‹öÉ?‹”Ä?‹ *?ŠP?‰i›?‰«?ˆ4÷?‡ü?†»?ˆ‘Ñ?Š^¡?ŠÛ¥?Š±a?‹.?Š° ?‰ï²?‰‰‰?‡£¦?‚D -?Ϋ?‡dã?‰Ó??‰®`?‰„i?‹ ?‹¯c?Š·?Š·?Šw?‰Þ?…³ž?„Ä'?…²Z?…2¢?…w¡?‰ãQ?ˆÒÓ?†Ž?‡DÜ?…c?ˆÈ=?‡0?ƒ²?€ê´?ƒ¿?„˜Ö?ƒáe?…Eà?‡JD?…·¸?„Û?…•Q?„¿?…â»?…x¥?‚Ý€?‚?…Ø ?†pf?ˆ ?‡^E?„U ?…åk?…†:?„Ò?‡ý?‡Óè?†Ì ?‡,}?…¿R?…C(?…éo?‡>ç?…‡ì?„ÿô?†Æž?†kþ?ˆ?‰Ž#?…ªÞ?…?†Åã?ˆŽ?‡±?‡‹?ˆT?†¹Œ?†™h?‡¿ ?†ß?„÷?}wœ?|žª?à?‚í¯?ˆô8?‡Xh?yDÐ?tS?ƒ|?ƒa?ƒÂá?€³³?}ðH?‚¢??„Ï?†b{?„@v?…WD?‡Ô?†rt?€(?‚;í?‡xv?‰Àg?ˆ+^?†?‚é ?…P?‡Ï€?…ÿ¾?…>Å?„Á#?„÷©?‡±?†.}?…râ?†·r?„z?ƒ‹`?‚¹C?„Ò‘?‡â%?‡ ?…%?„·:?„Úþ?…ßæ?…V-?ƒÖÇ?ƒsu?„¦ø?† Ä?…‘›?„¨E?„ï]?„w¢?ƒüF?„B?‚›û?©£?‚øÎ?‚ï0?„I—?„n?‚„ø?»"?}¨w?€zó?î?‚¥?ƒ…ß?„ƒû?„Bº?ƒŒ°?ƒÔC?€P?pŽ?|R ?~›Û?{‹Ã?€ ©?‚eÚ?€Q7?€Ê1?ƒƒ?‚ÒR?€ê?}5$?}ÑŸ?%b?`ö?ƒAç?‚\'?<©?€oõ?w×q?v%æ?Èí?„1¥?ƒÝ?ƒN®?‚ Ž?y›Ê?zOò?xÏH?hT?{&”?v03?rG:?5ž?ƒ%Í?Ÿ?x:d?{ô»?€Z’?”ï?‚LP?‚ãL?ƒP?Ã?u>?xÊk?¾ß?‚fí?‚è?‚Ÿ ?€¥V?tÁÌ?s`'?‡ö?‚¶[?xÇ"?[R.?ntQ?}=d?€˜…?‚;?€þ7?~ú¿?€g)?n[?‚ƒë?‚ð)?Ñ?f?´I?éX?UN?{¼?n*?xê??Uô>öe?5-û?_ìÉ?nÔË?w /?z›ì?{)?xOÎ?y36?{7?{ñÀ?|Ü?}Tæ?}‰‹?}}þ?|¤Ï?|t·?|ªä?}Ëw?{áñ?tŒj?yN¨?~fJ?~`—?|âÞ?{ ƒ?{|?{‘½?x&9?y.?|v?|Qä?|â?|?x¡W?n*?t¿?yêI?{†Ç?yë®?vÿM?{@8?y—ö?vŇ?y@?{Ö?{çå?{„?xÞ:?u&?sŸµ?wôF?xžå?zY›?{“ß?{—É?|&0?zz?yhä?{Q,?xjY?uù?yÙ–?}Lç?|™³?}­?~xS?zìÏ?xÈÊ?vó?zá?w:i?pØÌ?y€i?z·¶?vg;?vDÊ?xeŠ?zy"?x„>?yf?{ÛB?{¸Û?{ÖW?|‘?{¡Ž?zoð?y¼á?w. ?s õ?rl#?x2?yô~?yÈ?xŽú?l'Å?[ -?gOÛ?w¯ˆ?y›?yÍ?xn‹?x|?xŒ?o²?co÷?séG?yÀý?z–`?y÷#?x3¤?r¤)?i{…?rlš?vXr?vé?u{å?vت?xË3?zËZ?zÁ?zÓ¯?yñ?uSö?qS5?r°?l9°?qM—?x+¿?wñŠ?t?qá?sXL?wùU?wp?v{Ù?xcô?wKœ?tIS?v—?uá ?už?vûä?x)¥?wEá?xÙŸ?v-?sù?tÔÃ?uÇ[?t¤ö?q]N?m¼Ÿ?r?oð^?o+×?o'Q?o$ö?nü?u>?xP?wwr?s5?l”?gL¸?gò?p…?Yœ`?Rk„?[Ëq?_¹?ZrÚ?Yuû?`Z?dR,?^¾?Z‹“?bŠ‚?a~?^,‘?aãh?a ^?`½,?aW™?aä ?aj€?[^ ?_…2?hå+?d—?[Ö)?aî1?gË~?a÷?a_?`ˆ?b!ö?] S?`|L?f"›?d¡K?_?e‘D?k˜Õ?d/Å?^Ù•?a¥4?gC?_NÜ?Z_??eöÁ?i=ÿ?d,?Tô£?TVK?`šª?_Þ¡?_Ën?`¬o?dÄÚ?c½g?b@?cg§?aß ?Y1~?XÐÓ?ZÃÀ?aS?cûÁ?`Y?aš ?c:?^’#?]+?ZgU?UÓ¯?^Á?W׈?T–=?Td|?_Ç;?d”k?a¾?a‘›?ažê?`¯?[/?\‘?^˜•?Sl?WX?cs1?eˆf?a„”?Z; ?JT??QÀR?O/?Z€-?_¼ë?aj?`#?]×?^bc?a­ý?`ÖÍ?_’f?`z=?`½J?`åƒ?aWc?bÀ>?]Á?]w6?\Š?_µR?]ܲ?Uæ?b÷ý?^¡Î?Z7?_‚?b ¥?\G)?W†€?Viþ?V·ã?RÖ—?TÔˆ?VŸ0?Pb‹?O¾?UL¼?[¾«?V‚€?NõX?S"?V‹?Uás?V7j?Z1?_v?[ x?W+Ú?WL?Yï?V?Z´Å?[î?Y¶Þ?[Y?Y(?Zÿ?\L¥?\<_?Y¾?X0?WxC?YâÚ?[yö?Z„?V±?V©¤?XcÂ?ZÅÚ?ZЮ?W±ó?U¸?XòÉ?Wò?XP:?Y«o?U;Q?T€œ?[u?_*?]qÔ?XÔP?[™ä?\Þ?Z7?ZÈe?Xî?Të^?R®…?YÔº?\áY?^·-?ZÑ?T‹=?T&Ç?X°y?Ss2?M¹?Q³H?W²Í?UÖ.?YÙ5?[Á„?[ã?ZÝ¥?Zg?Wþ¸?U|ÿ?V?Røb?XÄ?Y[Ó?ZÎ?[œ?]>?`?^w ?W~ˆ?VÙÖ?ZÜ:?W›¿?RõÍ?U¥{?X`Ò?X!Q?Z?Zù?ZËÅ?\˜ ?\Ô ?X€r?TôG?Ykò?[4?Vr°?Pù?V­¥?[Á?X²Î?QÎM?UØ?[¦¸?Xê7?VÚù?U¼Õ?T?U[O?Yç?]g?Y8e?YŒ+?W½¿?U€P?Wk?ZŽ¬?Tå»?QVú?Uÿ`?W³–?VP?U—Î?W. ?X¹I?X¥â?QQÍ?N{½?VO-?[g?Z#Ö?Xø?[€–?VÏC?W½D?ZA€?[Èx?[NË?Y:?X ?Y®§?W3?Xà#?Z^¶?Tv?S–&?TPô?RØÃ?WŠ?X??U™B?UÉ?YcR?WÞ£?TÝ«?V&¸?V3?O?N?U½5?Yݤ?WXÉ?S)ß?Sì?WN?Xs?Vé½?XA?W“?WeÙ?V™í?W£â?Sט?Sºª?O±?OÑ?Rµ›?V²??S¢?Q7Ë?M‹?HÖR?R5 ?S®æ?Tã?TÆú?X;®?YÝ?WÖÑ?V`õ?V‡-?RÞ?S??W~š?P¶q?M~?U*ü?XAŸ?VÖ ?Rç’?M±?NÒW?D -?Qgr?TæÉ?VEþ?W+„?W—+?V ù?S¶Â?Ra ?U»Æ?V‚R?MøJ?NœC?Qìð?UJÙ?UÕ$?S…?U¤y?V`?W:g?UÝÆ?U·á?WšÛ?YK?W“(?T…?Rz6?S\@?Vl?S›«?NÚL?MË?UN1?VDh?UÎÙ?VD?VÖš?R?S)?Vñb?VŠ?N–•?N6?U¡_?V¨?T3?UV?PÝì?Py·?Sdâ?U0?RøÅ?R™"?TUŽ?Vʤ?U/n?Nëë?Qj–?SÊñ?S‹é?T?T›è?UÙw?T,?Pèõ?R ]?Q¸«?QEæ?Ttm?Tª -?R×`?Qtê?RO%?S›Ö?TO˜?Rj{?S?O°E?@ ê?M&Ž?R˜U?SûÇ?Tå[?TÔí?Sý¯?Na?FJ?I?%?Nøý?Q±?Qï?N;L?Q*r?SÔ?T‡’?Q —?Pï§?Tvù?T#?Sd‚?S©?Súª?TRá?Qnë?NWv?QÍÊ?R0U?QP?O…Ü?An¾?HÌñ?OÑ,?M8?OÒ…?NYË?MÆS?Lu?R¸´?PK·?P3Æ?N…å?I‘'?M?N7Ÿ?Q3î?QÓ´?Qƒ.?P -´?N¹¶?Owu?Rã?Pìï?O&)?Q{Ì?RjŸ?I>ˆ??æ`?J”9?G®…?Ká?PN+?QóŸ?OÔm?N¾K?L×?G‡?JÅh?LU#?N¤P?Pm¶?PÒ*?P¯M?O£z?O+k?Q<–?JÇ?M,Ç?N¡Ï?Fæ?EÎ?Go?L¦Ï?M?MJx?OvÇ?Mä?Jtá?M±?N3˜?Fez??ß]?L?4?JH?CZ{?;vf?J·¡?B¾÷?D…^?Mv ?K +?LYU?Nß?OiÈ?Kf?K)?K^Â?O›¡?NôÔ?OŽ?Nýª?L›?I>ª?KÑâ?@?Av²?Fßè?J…Ë?Jj1?EI??BŠÿ?Fæ?JœÁ?HUç?IÜÄ?F‘>?L-â?N8¢?K?H9æ?J{¼?Jef?F±É?Iô±?J½Í?K:¼?Gn?:F7?<þ+?C¨Ò?FŸä?EkÎ?E0 ?EÄg?E’Ç?F¡û?FNK?CÕ?Cø|?C^(?G`h??þ÷?3Í)?2Êè?=_î??! ?>4Û??Bh?6îø?> â?@XÐ??çô?Aç…??•?<[a?8ÛJ??y½?ðå??üu??†P?:Ž–ž?A¢¯?=¡£?>:³?Efº?E!£?<û?;Î?B\?D L?A!k?;X%?>?BÛ^?Eà?=hç?<)ÿ?Eó?CZæ??s?:…?CÔ?Bxë?A'_?>O"?@l¡?BŽC?@uå?B¦Ú?B ?@¦\?5˜A?=iê?F ©?C•?AW?8ò?@5î?GЫ?DÉÂ?D ó?9#??µ?E «?E9?AÝâ?5Û ?J ?;ÁÏ?ÿA??.\?F•D?Cßö?BC -?Bö?=¹6?=¶??FIî?D/_?B½?A’Í?<¸á?9’©?CL·?9MÕ?0¹$?7È!?>J?8?º?B±ˆ?F¶o?D&³?E?B -Q?;«ì?:âÌ?DHk?Dæš?B{ž?@:†?>]?9}~?8i??Ø)?C ÷?Aßõ?Br¬?:[2?9£5?;Ý?Bµb?Bá?B’?E/ç??Á?7½?6lŒ?A5f?=í?A\­?D•x?AqÉ?<¹q?9ó™?9×Ú?A§·?D?C *?DÌ??{B?>Iù?3c¸?9‘z?<Ïl?2²?<¨u??üð?;$?5òþ?:ê»?<)?>Ÿ=?:?3öI??¾?@h3?<ÑÑ?x~?9/4?@ù??±×?Bwà??ò?9ÿ?4.ý?;À?B[ú?@Ç??!)?Bdy?BÃ=?;i?=ÕA?A?AÕ!?Bß™?=3(?: ¡?BæÝ??±å?<[Ð?:¬æ?;A7?ALH?A1¨?<Õ˜?@­¾?B:ñ?= ý?;؇?AjK??NP?AVW??âu?;éÙ?>e?> -?<©¡?;`ª?A =?@J¼?@‰?=?YÅ?;³w?<É??¡?? ï?@‚Î?¬?<,(?=ã6?@2i??!e?>£ô?8Þb?/$?7üö?AhÎ?=á=?=ü?4¶¾?*o—?/éb?<)¶?<Ë5??¦ú?A1??ÿ?;éƒ?:¯X?=H±?<õO?.í5?7b¶?<®@?>æº?>O]?>`?¦?9_©?;!Û?>??0n?>‹?9é{?;“G?=_¸?,’?2þ˜?:Y°?=w)?=Œc?>¾??Ew? ?=cœ?;¿ž?: g?=åÕ?>%–?>¶Ž?<½{?<0?<×?>ç?>6?<¼?:˜?:Ø?=!›?=Íd???<Ð ?:0!?4’Y?4‚ƒ?;\?:D¦?.°Ü?-j?<?=JQ?=”½?:{…?6ª?9Ä´?=ß?=¾¹?<-?5—r?9™ò?=F ?;Mž?:ε?7Ìç?éY?'Ú$?;w‰?=–·?:”>?7jm?9s?<ïÉ??8.Œ?7È]?9ö1?5.ž=2YÑ=5²³=@RI=B:”=6Õé=(=!lš=!ñ‹=&ï=1*=Bò=U=b¤d=_¶=JªÌ=.c¼=Ñ~=»é=0öt=D´Û=W’®=ll=€ö‹=ˆïà=Œþ=ŠêÑ=†‘=~ã"=nt=bg'=_Jÿ=dnƒ=k[/=nÂ`=s:Z=ÝŸ=D=™™Ó=™Ÿò=“RW=Œï=ˆõ=„sÉ=‚¬~=‚ºl=‚nM=|¾G=k)Ë=XÅ==Pàà=Sã=S]Ì=K!=DLu=O¢Ž=n«=‡6=×=Œ4Ý=‹¬==’m¸=œµ=ž}=•W_=Œq§=E=Ÿðö=®ú.=³ü!=¯.Î=¦m…=¡5X=¦è=µ·–=Ç$—=Ì6G=¿¾l=©°=’€-={ç´=\r†=Lt=Eô×=;Cõ=#{¸=ø<å -<èžš= Ð=3Õ9=Y­ž=róÏ=x>œ=d(=:”= A<àÎ"<Ù¶—<ûkL=` =*ÿ.=8Æ=B‰4=MŸ°=PÍM=A°='¿è=Z•=#ß=B^œ=i°A=ˆnÓ=—/&=œ|8=˜bñ=‘ ±=Œ*Ì=‡ÚÞ=|Cæ=]ж=AaW=0€='YÕ= u=7ú=œÜ=új=#ß=8cv=Jèk=Y²=gå3=rÕ{=u^=nqV=`…S=R„==MÍ©=R#Ê=QÁj=B`=+l0=‹ =$l=/ø=9ø™=Aß0=Kú =Y¶€=eV=b©=N[l=2ÞÒ=oÂ=ñ.= —³=1–=IzÞ=`N\=qŽû=€mÂ=‡Žž=‰ß =„è=t÷ô=l3=wÂI=„Ý2=†&=x}]=^¤,=WnÄ=o¤o=Žs¼=¤1¯=²ˆj=º"w=¼«¥=¼,ì=¾Ñª=Ê`î=ÛƒÞ=èÜ:==÷(ë>ÿ$> ”5>À~> ‘>•> 2S=ÿÛ=Ù¸"=µ¾j=¦ Ó=²I>=щ`=ñ4<>uZ=úì=áä*=Å´b=³Û¥=±¢é=¶hF=·äf=ºAk=Çg`=Ü­=ïR=ù‚ê=û'à=ù@=ý -’>ðÿ> >ñ> F€>Ÿ¬=øÆ>=ëÍ4=Þå=Íàý=¾›‚=¿=×yò=ÿ™Ÿ>úê>Ú >§>åH>ÛE>¯(>(öw>2-Þ>.· >'…>$'Ÿ>%@>$åø>!É >üà>9„>=Ú;ó=ÉÈ=ÔdÉ=ßÅ=ÕƒÄ=Àíª=»Is=Ê3‹=ß8[=îæ#=ú|\>ð>Ð>‘g>}=êì,=ÎõP=·ù¾=³X>=Ä~=ÞÒX=ó†=ù,=ñ¶ù=åÍ;=Ùf­=Ì÷ð=Èé=ÔÍ\=ðI%>*M>Öê>(7>Œ>1d>›=íãe=á1ý=݈Ï=Ú[=Øà=Þ—=ãôã=Ýÿ¤=ÎïÓ=ǵ=Ò.=é)G=ùί=ù§Ú=ëo;=Ø]=Êã•=ÇÕ}=ÌÌs=ÖÙæ=榠=÷!Ó=ü1ç=îqê=Ð1¦=¬3ü=”9Ì=–®V=°Üs=Ï”=Þ±=ÙÈL=Ïß=Òlð=à–&=ê €=áƒ×=Åwâ=žVâ=qÉß=?H=5¾&=`™F=œ”ø=Ì~=äÝè=ÜÞ=Â%Ú=ªÃE=Uò=È/=tå2=Feþ=)Îà=)m=BÝà=q¯F=–ù¯=·Ù$=ÕyO=å9Þ=ß.ë=ÈML=¬å1=”h=ƒ'\=€5÷=ŽUñ=¤UÓ=µ Ô=»¤J=¼"q=½†ž=Å>&=ÒHÿ=Þxp=å}L=âm"=Íù¼=ªv=‡À×=iÊã=pø=Ðò=¯ú¦=ͲJ=æ(e=û¨>Á> H×>»>ù÷>wž>6š=ùQ=äH=ÎÙz=¼oå=µñ=ºßš=ÊD™=Û±=âê˜=ßr=Õ‹Õ=Æ–Ÿ=¬Ó=‰c=Q¡ˆ=/kà=7åØ=cî=…Ò=²„ó=ÙîÎ>`>Æ>§õ>´×>Õ=å§=Ê`Ä=Çô¢=ÐÃ-=Ð0ë=ÈX=ÊüŠ=Þ³=øGG>È´=úƒÀ=ÙÚê=²¥=–Ú=ŒûZ=‘¥…=”v¥=Œ6°=xn =V?ó=5Rå=9ý<ð¥3<Ö;~<Ûgê<î˜O=E¼= »=w=2ni=XT+=ˆº%=¨4Ç=Â)=ÓŒ=ØnÚ=Ê`¸=±²h=¨™;=¿ð=éä³>õp>Ïý=ä(N=·e#=—ܤ=–,=‹´·=…Àï=€v¨=…ä%=‘Z+=’¢¶=„/í=iJË=lÇ\=Œ5Ÿ=ª|=ŤÝ=×8=Ù¿=É>É=«sž=Œ©Ö=f«¥=>A!=$O~=&÷þ=Q™==ý=¾„—=ç‰ó>ƒÎ>;Ž>í¥=ïû’=Ô­=ʃõ=× e=íÊ»=ýNÏ=ùJ =ÞÒg=µj­=‹H•=]‹>=KMÑ=Wÿ°={Yz=—ëv=°KO=¸‹'=®g‰=Ÿa”=žaX=´=Ô¦E=ì—V=ùÞ>2n>M‹>*€ñ>4­>/É6>$‰À>Ý5>3>ŒÇ>¶ß=ëeÇ=×ä=Ï:°=ÃÆ=«z=”7>=X·=§Ë.=Òí›=üzw>~P>]1=è¿"=ʬc=´Äl=§€Ý=š¡=ˆJ¾=lèì=`(è=uÉÃ=––=ºI9=Û’Ù=òÑj>µ>l¢>‹>% -> û ->v¹>ƒ`> Hc>c> ³É>(oÞ>.[ß>* É>·¸>&M>µv>"&{>,aß>0B>,9^>".>>1i> -1> 4> Ó‹> c³> -éî>'(=þþ«=îã=êWß=òƽ=úð­=öF=ç!8=Ý‘k=亽=ø€+>?³> DÚ>¢Ì=ó ~=ȳô=¢[=§0=“´Ö=›)P=—Hé=‰v=}ßR=ƒV„=”5X=¨L‡=¶9ã=¹äé=¶-ö=®%Å= =Š¹Í=hûw=K}P=@‡G=D9}=Yî=}Ç@=à=”§=‹> ;Â> új>ûc=âÖ=¸U=¦8=ŽÐO=„·ß=ˆ¬=Žéš=Ö´=‹x=’êø=¨¶W=ÂvH=Õ5=à^=êªö=óÓD=ôƒ=äS=Åp =£Ÿd=‘‰h=™TI=´=)=ÓgÓ=ê"U=òAÿ=ò”ü=úc‹>¬> -Ñ>u>">=Ø¥H=±‘Ë=œWu= ¤=²:w=¾áê=Ã`¦=Ë w=Üæ¿=ôÎ>Xt> 5> ©X>|i=þqè=æݦ=Ñο=ÃÑè=½%B=ºÊ=³aî=©ø=¦%Ž=³;=ÍC=æýÓ=öú\=ùŽŽ=õÆ=ùX>‰—>u>–Ô>n ->"1ƒ>$ä>&ëR>(Úv>)C›>%—>©n>A>•;>!(Ç>fn>|Ò>åä> -3¡>ÍP> Ä›>¯¦>Ï>]Ç>7>>†Ë>f7> ˆ=ÿ$È=æè=Ò–Ó=Î’"=ÜDä=î—¿=ûí->²Ü>‰Ú=ÿƒ+=é°=ÓbÉ=Îâ&=ßñù=þ†£>"¸>Ä„> j>?A>+>ôP>×Â>®;>4¬>"Aç>&d¨>&ž‘>!Ë>é>‚=ýÓd=ØS#=ºÝ=­¤Â=®ñ»=±²ª=³RØ=¾8™=Ú½W>K>‹>2}>A >ºÔ> ¹=ùêý=Ú2†=»†9=Ÿ_²=‰Ïc=¨1=¹³=Œ£9=Ÿ=¶¤ž=Ì•ô=ØÏö=Ö˜ô=Ë€Â=Äâ=Ʊ=È‹(=ÄÏ=ºnË=ª%=•Ïe=ƒñ -=rš=l·d=sÊ,=„Àj=—‹ð=­à‹=¿Ñ.=LJÕ=ÃÎe=¶Å&=¥qE=•bÓ=Š=…$m=„RS=‚„ð=‚u=Ê©=¥æ=¾¡á=Íö’=Ù‰i=êêq=ü¿À=ÿ…=ì"|=ÌåŠ=·Þ1=»ÞM=Ò -W=ç#¼=í Ñ=áÍ7=ÐÅ=ÊK=Ï€‘=ÒÏò=ÒÑ|=ÞòÚ=üåû>Q]>¸ ->ü®>!ó»> îV> Ò>ˆ7>ÄŠ>ÓÍ> €>øD> n>#me>%ƒ>%ŸÔ>$˜ ->#Ø£>"/î>üF> ó}=ûÙv=迲=ãÁ!=éú =ùš”>ݵ> ¸§> šœ>N»=òè³=öx=ÿÖ=ú÷¿=ç—=ÛO=èu>Þâ>nT>)Ã>ŸŸ>8>C>î> û>ÉR>£>â~>Ž6>ý§>ªÚ=óud=ßE=Ñ2É=ÊŠ=ͳw=Ô“O=Ð1f=½ìÎ=ªÎŸ=¦0Y=¯o=µÓ_=®Fz=ŸÑØ=—¶y=š‹,=£±‚=®}æ=»lÍ=É[-=Ïõa=È¢ú=º'Y=³Dœ=½ á=Ó=ä9ï=âM¦=Ñì=¿;=´ðç=´Þ½=Å*+=ã̤>Þ> -:> ó¦>ä…>­>‚ý> Ñ>\ï=öT=új‘>¸>da>ÎÔ=ó97=ן=Ám=· -Ž=°µÓ=¨¡Ž=¦â(=µdr=ÐÑ#=êÛñ=÷ÈË=ø!Œ=÷œ8>IH>Qš>Y€>Ã_>ÆP> C|>XO=ö.=óK=û/í=ÿð^=ùaR=éGè=×ÑE=ÕáÀ=ë¥T>‰3> +§>%¹>_==ûNq=ä¶ÿ=ʯ‰=Á²†=ÒQÅ=ñš¤>…ž>øR>:T>f¤>(>צ>êÛ>w1>,³>Aa=ÿ0=ótR=õ¼Ð>³L>ûo> -ôX> ìÐ>¯> Â&> ©¤>2f>¥;>$J@>(P>(ëò>)Ü¿>,;>.óÊ>/òn>-%·>&«é>Á> -> -ž=ûöH=íŠ/=éô:=ìÞ‰=öNÚ>¢À>X³>¼ï=ó›=Ûš=ÈtG=¼:O=»«ë=ÕJù> ý>‘>§=þUö=Ü -›=à%‰=õ†ê>a5>ol>-2=öýì=Ü„?=Å°=Ãi²=Ü O=ýû¡> }W> Ž>5í> Ã>,d^>1V>1jŽ>2š>1×l>(ˆÇ>yT> -L£>ÀB=ôßÉ=ÝwY=¿Å=­Ï¶=´3l=Ê”¦=ß)=è¦Í=ðÕQ>4W>áf>Ù2>r)>Rª>h> a >€>%( >0z>7å_>=}>D'>J‹•>LX>HzÁ>D'ª>G-ñ>OÙ’>X8ê>^íl>dÕ{>h܆>fï>[>Ss¸>Z¶>jÑ>w/>yš>sa&>jàæ>`Bâ>Sü¦>O[«>[b‡>pþË>4>…j>„[M>y~©>dÌ>\0»>eg™>sn >{7†>€'>„më>‰vD>ŒLƒ>Œ>Œ9'>3t>Ž>Ò>ŒýK>‹fë>ŒQJ>BU>‹«“>‰}°>‡Sº>ƒ9>~§T>€Ã>‡Ã>ŒöC>{.>ƒá˜>`¶->92>!¡¦>Œ>Ó>($]>Lx>|(>’Ax>œÏ>›Œ>•2{>Ž„ù>‰ú‹>ƒ{ß>j®k>D+ >)y¡>,¬>J:“>p”þ>‰Dn>•3>šbt>šðð>™9>• ç>‘ù>¼Q>­þ>‰?é>‡µu>ŠÇ ->‹É*>ƒ›‡>eì¹>HtÓ>EÏc>\¼³>vÀ³>ƒ†1>‰>ŒNÚ>‡Po>r§$>\á¶>dý¬>>ŒˆW>Œ|Ñ>‚”ð>qY>p<=>ƒ+>“# >ž€¿> >ôS>ü> ` ->§§¸>±^Y>ºbÝ>¾(·>¹ÔÆ>¯Áß>¦~>¢™>¤ŸÎ>¢P²>–UÉ>ˆáö>‚Å>€^Ú>}ºË>x>u1N>{ö¡>„ÝO>‹í>‘†¢>—oÛ>šH>˜< >“ÑI>g>‰Í>…ÍŸ>‡ro>ŽUM>“Y“>”38>•÷>˜¢ì>—Š@>•[j>—>™Øƒ>šñ>—$>¦m>±ìV>·k>²d>¦ÇK>>–”ˆ>Žiø>‚ªú>sR@>tXð>ƒNš>çê>X>¤bt>¨Ù>ª>¨•>ŸÀµ>Šã+>aœ—>HwÍ>ZÁÁ><Ù>‘xŽ>š>>žÊ>¡d>¢…â>¡‚0>žì;>œ-k>›t¾>žq">£O}>§?È>ª7>¬žz>°µ¼>·)5>¾çÖ>ãð>½ž¹>­ä8> }ò>š»4>™9w>š^>œè·>šj>Ž{=>‚€I>Òù>…"à>ŒõÏ>•Ìí>ž”E>¨:Ç>²]a>µv3>­Â>£üˆ>¢¸×>¦w>§1> ‰ª>•A>¶Ó>—Ž->žÚÁ>Ÿ®]>¢Ï?>­}ø>µ9–>±ÉN>§Z¢>šå¦>Œß->€¤c>vÌù>uxû>tÄ7>| »>ˆö >–‡\>¡†>§¿>ª{M>ªöï>§%K>¢&X>£6s>§Mô>¥Xà>›Ãe>Ž >‚ÊÍ>X>2Ÿ>€ >t¯D>aø1>I6>,¡Í>=Ç=èÍŽ=µ;H=”§Ã=˜© =¾öá=ô’>Xk>*¶¼>;aš>GJ¤>Pç&>[÷>jd>}Ðí>… â>†ë±>†ä>‰™H>‘V¸>›í[>¦?>ª(q>¥Ã>»¸>—ð>ŽÑ>}´ï>c-É>Vá>GÊQ>4-Æ>5ìË>Wœ>Ë>‰°>†Àá>}ÆG>z’x>‡¢¬>˜2ý>§žU>±Ûé>´êß>±Û®>«@">¢Ü>“½ÿ>|)š>Rúù>?’f>8á >4á†>DŒ>n­Ø>‘µ:>¥¼­>¬?¢>¦Ò>œ¹Á>”ªA>•˜P>…ð>  ü>—ýä>ˆaŒ>g£È>A˜A>82d>VБ>ƒ'>“Û>™™+>ž3¦>¡ã>Kð>Žl5>{|½>l Á>n·>|ó>Š¯ý>–*Ÿ>“Õ>‚v¤>cH0>X¿>pßÝ>‘„ä>¬"Û>¾[>½>>½ž>¼`D>Æ«Ý>΃]>Ê”Ô>ƃê>ÉÑü>Í»Ñ>Ì»P>Â-W>ªVd>ŽFÎ>„h>˜n1>¼ãþ>Ø×ú>ä„P>çíå>ëI[>ñª%>øKo>÷Íj>觟>Íz|>¸">²{ü>¸á9>ÈËŸ>ÙÅ\>ÝJß>Ô[o>Ð÷Ž>Úßå>éÞ,>÷s»>üÉS>îq>Í~m>±VÛ>®vã>¾××>ÑÙÕ>âbj>îßi>ð/F>çÏà>ãj½>è>ð{1>÷õ>ý˜5? Ê>ÿP²>õ&>ì@R>ëkˆ>ì­¼>êð#>çÙù>áÆÅ>Õ_‘>ƱÞ>ªm>Í!9>ÓÊ÷>Ëž‹>¿~­>±ÜÍ>™f!>zà>lÿ>Ž\y>´/>ÌQ ->Ñ]S>Ïxã>ÓÄÞ>àÒÛ>ìÆå>îÖV>êD%>ì_>ûÙ@?ý—?/´? æ>ïùû>⫱>ÕY÷>¹À%>™ìs>œ>žT¹>°SÚ>ÇAó>èâ?Dá? J?ü®>îjV>Ð6L>ÃlF>מ>ûLõ? }²?h>? à ?w>ôv©>çØ€>Ø^`>Ç°¡>Æ)Â>Ø ->íŽ8>÷q¸>ÿ) -?»×>ùÆ0>ÑéN>®ÚÓ>²-Ù>Úg?|ý?ãŽ?™¿?í ->ú?é>÷+z?s\?[H?v?Vý‰b>ס™>¬½ê>˜¸]>¤¦O>¼a¥>Ë?>Îßþ>ÍÈM>Òßl>ë?W ? ï-? «¢? µ?X?£?©K?û?R–? c?·?Ä0?d­? ©¶?'K©?"d?%c?ý¤?â? }=?k?&–ô?* Î?&jÜ?¡{??É°?þ0?ê?ŠO? ß?©ü?S?$æ?ÜÇ?'¡?'T‘?&Ðœ?,Ò.?4l7?6™Á?2þ?-á¢?+Óg?-ˆ¡?.÷I?*±í?"Cæ?²8?"™ ?'¼n?'h!? à‡?Zø?&ÃP?0Þ›?1+.?(mÝ?!(Ã?Ö?·›>ýÃü>ê¾>í¬3>û¸?a?Lü>ðyò>ÕX‚>Ê6”>èb ?rg?(ϲ?,¦–?&¡¾?$Ú?'Çs?'}Â?KD?'Ö?L?AB?±—? rÐ?'ü_?'‡‰? ¸?‚?°Å? Ú¤?12ç?>¢¤?Cr3?BŇ?AÆ??X?9Àw?5P?6%ˆ?>®?G v?G¬[?=Ü?0{µ?-?7¨?AƳ?Cz?A•¸?<;ã?1Fæ?$fø?Œ·? Õ¯?/½è?9Ù?1³³?#Ü-?#Ðœ?4p_?CÎÚ?Eé²?=eÿ?3Ö©?0ª?1Ÿz?6Å?;Î?=t?;€?5Û?-[=?(§H?*?>?.ý™?3"‡?3<?2ßÊ?:)i?G„©?N¿?J;?CN–?>³X?>è„?@Ý?>/ì?>ÙU?AÖp?D.s?Gä=?H.Ì?C3I?>÷6?:à’?70?:Ú4?Bÿ…?FvÀ?GïÀ?JÄ@?HÙ?B¼ ??Æ??€n?;ø?3Ì®?,+?)ï‹?2-ú??üQ?E]¼?>Ù ?/í™? m?&ì?'ó·?0•?1œ?-˜œ?-0µ?/Æm?.Û÷?.·v?6~t?Eál?TV€?[ö?X¯‘?O|e?D*§?:ö?2yx?$‡°?Ñ|?,?+V”?î?F8m?JŽ ?EË]?<‘X?2¦„?*è|?,uN?4y ?8Z?8í?8Ûæ?9”Œ?::ã?8š?6b–?86~?=F?BaŽ?FÌó?E’L?<Ëö?3Ñ&?1èf?1¨œ?,|[?(h;?,!ï?05?-Ÿ¿?)d‡?)gX?-ƒS?6Ý?A/?B´´?<[?7Bd?9¶?=å€?@±/?D?FÖ{?C®G?>O?>ãµ?C†ï?AÝ?4â?*gL?(;?+ƒ«?0ªØ?4\¨?4˜ü?4œ.?2ý?.¹×?/îÏ?4ÑÂ?4Wk?0Qâ?0QØ?4aÉ?7ý?8Gp?9ËH?:‰¯?;?Ú?;?7IÛ?/íS?(z[?&ÿÀ?*”Z?*ß+?'_?$ãì?%B?$YŽ?Zì?9?ç?P¤?P¦?ô2?ñ)?¸*?å\?a?ûo?»y?'V?ô? )=?ÿ -?ñw?Ø×? ?ÖÄ?"ô? ÀM?gò?5Ô?‘?>M?øh?¶“?#»à?(ƒ&?-r ?0–?/Û?-à?(ßã?'ÙŒ?,öž?5Wj?:]^?81O?2×^?.Š?-A?/Ôå?2<?2A'?2zÔ?3µ×?4¼?6q?8àý?9Äk?7¯ª?3—â?-Án?#¢;?óë?×?( N?*T?'ò?$•î?#‡þ?!Žè?"íh?)ô?,LW?++?*‘?+UÞ?+0”?*)?(§k?&–H?'}T?/p?9 ù?<4Þ?;õ¼?>U6??Ø?;¶»?:V?8Óí?4 -n?3äP?9¢|?9y6?/®?%[Ê?#'P?)ø–?1»Í?6ÑJ?9…?86Ü?5µ5?0'×? ðó?d?§ý?,A?0±¯?/Àn?-ë?/Dì?5¼I?4ä¥?/Ö ?0æ7?0ÈÑ?*oÎ?%ëÇ?'"?'€:?ãâ?«O?t1?,óõ??Ÿ³?Jh?NI?KØy?D Ñ?>K`?<ÀX?:6?5?É?7ú\?C0M?K²œ?Ki;?EgÍ?@ f?BF ?D’C?Bf?@²%?Aìá?>¤O?/™?ù(? Áµ?PP?+i?8„u?8nÈ?=n?J¶”?T8i?Wbì?U ?MPá?@ðè?8ûÍ?<??6r?7Å?+Gû?)f`?3Õ?=6å?C¦?GW?C^ ?CN>?Lô?U°)?W„°?V »?Tð?M¬È?@·Í?.e?’—? )?9?0«(?8a?5Ñ°?2?/“m?.£~?,­Â?)ÅŒ?- -k?6ãy?@æ?E·•?DVö?A??¹?;”†?4Eó?.R?#AE?%E?@X?©¾?$~?+úˆ?/Ä`?+{f?"z?¤Ò?&Ú?+\Ü?*û+?/¬z?4"×?/ò?! ¨?¡)?:‹?Z„?'g?%”™?6ß?ËÍ?Z? €ö?(O?"¦H?Ž? `?Sº?ÿ?!it?*„d?+~×?"]?¨ó?/?"{â?'yç?"›??sx?×?)QÖ?0èí?1t“?. -Ó?#K¸?rè?Ÿ?ü¶? P$>ÿÉM?_û?‡é? ‰?)­?1æ²?/¼ ?!ˉ?õæ?«Õ?‘“?"1ð?ªŒ?;"?$Mí?*™œ?+Æ©?-²­?,ÞF?#£“?? ³?>?‚”?I}?¦Ä?‡«?€b?ò|?î›?܆?*†?ü„?ú#? YG?Û? æ? -ú?jÑ?9û?{ ?y¥?*å?¹Æ? }z?)t?"+Q?'Å?_é?ªÅ? -?jk?!5?õŽ?Õâ?ªV? G?õOC>ÿ?ó,?"§?-/a?/f»?10?///?&à†? jQ?£;>觥>Ê9}>Ò²U>à…ù>Òøš>ºòÒ>½òÜ>Þ1æ>þˆ{?Éo?k,>õÈG>á_>ǵÏ>·Ìa>ÅÞ©>ô•#?ýÞ?à˜?"MA?!èa?Ø~? è?¡?}r?+&„?67ÿ?8±?4p¬?+#ˆ?g?° >Þ k>Á<8>¹ªÚ>¸>Ç‹Ž>üh˜?%˜?@Ž·?E¤'?>ºâ?<à?G4²?U‹ý?_>ž?`³8?Tí???¨?,ó?"ö#?&Þu?:¢'?K²š?N n?CP -?>›Ö?LtÀ?]vX?f@L?fΧ?c<Ì?_R`?^D!?`æÌ?c?®?[ì?Iðÿ?E¬o?Kƒ4?IJè?H‰D?N¥P?QðA?S 2?[$Ö?dµu?e¡?Z·?CÊ€?-H?^?C>?Û?l¥? èk>þÚÏ? ¯á?,ó?@WX?H×v?NC7?[~,?gª?eE!?WÜ?Fh]??ê3?Lay?bƒs?oÃD?oª›?kü‚?kŒv?l§—?m=¢?jBÚ?[,µ?>m(?+B?3Ø?Eg+?P¼­?\/Ù?jd?pnN?mz?k ª?o™Ü?t@ý?u¥?sIÈ?pK¦?pÑÅ?rúk?sDÂ?oÖÌ?j?eöR?`Â?R©V?Ià?C c?+nE?t”?"Âí?BÁJ?WwW?a/:?icƒ?k¡¦?gZ?_!›?Páì?Eä ?LÚ‹?Y‰?Z;ú?Q’T?N, -?Jü?Jðg?^ˆ>?s·^?y¯Ò?zza?€‚m?„±/?†Óú?…¢¦?‚£k?~ý?wóþ?p+3?jû[?iÑ•?g‡X?Z3Á?=z?+“[??Ù?c=ä?x½j?€Yz?ƒxž?†Ù?…m ?éÿ?v^¼?oAß?xº’?I|?€Ë?yìæ?rž[?m@Í?fr6?aQÔ?Z®C?F¶I?=0e?TŽ(?kŒG?q:ñ?kwÎ?S‰~?6y?3(Î?GHÅ?GïS?>ž¨?Q*{?m‚s?y Á?we¥?}¬æ?…=§?…nè?/?Ôê?æ?w9r?q×Ð?vüD?s*?T«?< -\?Iªº?UrL?Ieÿ?F¨?Z ì?kž!?v.y?‚zÕ?ˆ0K?‡ý?‚$ã?fç?Ls°?cš¾?lºh?k}?\½s?C¶Ë?@ú¡?\%€?qíù?su?kT"?d¤ß?eí²?q<?zO?}Á?yþ,?s¡µ?r´Ð?r÷Æ?llÂ?e®?]Mò?`k—?põV?w%¢?qð?uÓü?§i?ƒ‡Ü?~2¾?t)ÿ?vCD?}â>?ƒ S?„@?QÌ?{+½?q‚?n´Ù?w/?u˜|?p¨˜?tRP?uÒw?o ?k_?z]ã?‚ÀÛ?wþ×?_©†?RÈ?Wž^?gÿ¶?{î?ƒãù?…æ^?‡²*?Šj?Š·±?ˆª?…y?z‰ã?oLß?}2®?†:½?…ç?…?„[?„Zó?„8ƒ?„jÝ?ˆE@?‰¸ê?†Mü?ƒð ?„Ò$?…”W?‡»¤?Šž?‹¡?Œ ý?ŒØƒ?Š"?†¾¤?…)¦?†—Q?‰+ä?ˆwÝ?„’Û?ˆ!?Á?xµ’?r“b?tœ?v­²?y'—?xóI?wbo?~ÑM?‚  ?†“k?‰˜”?ˆ•ó?…P?€h?€ò?~=>?k Ð?RD}?E¦?OqW?gŠ+?r á?kkX?jCp?sXX?k‰?_Ün?b¤|?c”`?f…y?vb²?„zþ?ˆ¾?‰”Ë?Š8ÿ?Š›ô?ŠºÁ?‡Oi?x<?cV?ifæ?w¯ì?z”#?~w²?ƒ¿ü?îö?x?{v?‚"?„@ ?…¨s?ˆ ˜?Šõ‰?Œ?Š½t?ˆ^2?†äñ?‡xã?‡ß˜?†©³?†Ý?…³ˆ?†ná?‡6ø?†ð?‡d|?Š=R?mô?Žy§?Œ~ ?‰ñÃ?„Ðf?{UB?~).?‚cß?€8:?ƒº?Š-?N`?ŠüÃ?ˆðÛ?‡/ö?…äÅ?‰ -¸?‹Œ)?ŒcÏ?Hm?dä?¶?‰¼Á?ƒÀJ?‚×ä?‰Ô?‰ë?€óƒ?z?„K¡?Œwx?ùP?õ?Ž»H?~?‰ ~?†ƒÍ?…΂?ƒ®?„Å?‡¿Û?ˆŒ·?… -?€î?|,Õ?{D³?ú??†Í´?‹l?Œrj?Œ§?Ø?‘§?’r?‘´?‘tÄ?“¶v?”‚‹?’ûÝ?“ =?”÷ä‘Y>¯[[>µÄ>Ýì\>è2l>Ê9A>ÄÖQ>ýv!?$ø?H9L?b‰Z?rCÚ?|e,?ãÄ?…µ?ˆwÂ?Š þ?‹Uv?‰ûü?†ª–?†çE?‰‹É?ŠöI?Œp—?©à?Œp?bÁ?ψ?‘a?e¢?ŽÞ?ŒæJ?›*?ÚÓ?_Ô?¸»?’¡?“Q?‘Θ?Ž€Y?b"?”"Ý?–W?•f%?’9õ?;d?!ó?ŽQ¿?Ž´J?¼ ?8è?,g?’NW?•‘ -?–U?•?v?’”Â?ÒO?“]‹?•üq?–:?•o®?•nÌ?”ì?‘w¿?ŽTp?ݯ?‘Nr?”0Ü?’Æ(?Ž†å?Ž”a?‘w?’Ì·?”·—?–í ?˜ÿS?šë.?šUú?—zÞ?•;?”J?”&?’6¥?‘?”MU?“óì?v?h?•9´?–÷?‘Ú+?‘Íÿ?‘ù4?>p?‘°o? ¡?€z?Žï?‘ö˜?•Ø¤?˜Õú?›Z?œpó?œN?œ‡?ÂÆ?¸’?œ–Ö?›t?™!Õ?˜q?šë/?žA¦? j2?¡Y‚?¡ ?ŸÚ§?Ÿª†?žæ†?œâ?›m?™/6?˜ã?›ãâ?Ÿ.$?ž…?™m?’¨V?‘²­?™\š?Ÿç?¡¬ø?¢7þ?¡›m?¡m¾?¡‡¿?Ÿzp?›t?™ÐÈ?˜d ?˜Ö?šçl?›2ì?œ² -?œ¨å?˜;™?–62?™¡ô?œþý?žŸ¢?4Ÿ?›ð†?›Ê?Äè?{ î?~óÜ?“Ñ~??œ€×?œœI?›V?›pY?Ÿ¡’? ëz?ž,ì?›5?’ÇR?}ýX?Wjs?jm,?Œ·E?–W?™f?œéY?¡I)?¢ª®? *[?–ë?ˆ\Ð?ƒá -?‘Œ3?›G?š]Á?œþ?Ÿp? ý? €0?›òÇ?˜±?š„X?›T€?—á?—@Ï?•Ë'?VZ?o˜4?8¹Ú?3†v?^Ô?}»›?/;?oÖ2?jÏT?…÷?{,?’Æ2?”¼d?–€?˜ ?˜Kï?™Œ?™i¡?˜Yê?”Ël?†Ý?Ž"g?ˆ†c?‚„?‡²x?í?”üx?”¿¼?v5?Œƒ+?’>9?—%Å?—Ü?— µ?˜z“?—¬k?“(C?ŽóQ?ŠQ¶?‚ÉF?å¥?„0Å?†êA?„÷W?…v)?†e?†O?‡â{?ˆäþ?…‡Ï?yÆØ?sã?€äó?Š'?Žü)?Q8?†TO?€q=?4?ï¨?‚(g?„ñ?ˆxO?ŒuV?Œ/b?…© ?€ Ê?‚~?‚’7?t?ir°?w¥g?…¸ ?ï?Œà‡?Šy?‹wj?Š+k?Œ¯??‘þ?Œ—¯?Š")?Š X?‰‡?‡Ì¢?ŠxK?5ß?˜;?‘þÞ?—)Õ?—dg?“ ?Ž÷\?7?Œù"?‰W~?Šµ?ŽýÙ?‹ë?‡Ò½?‹{S?%â?>?–ôP?—¸·?”3?’jÝ?‘»m?ìn?Ž_`?‹Ñ?·?–/?–M?–Üb?—4£?—(e?˜=Z?—„C?™õp?ž7E?™<?1½?„?–r?šä=?šr^?”kä?‘è4?˜?žm?Ÿlq?  ? †Š?™@?™ÀÙ?™¹?–S•?•ç?Gf?ŠÍ?&ò?“_N?—4N?™±,?›2Ã?œRQ?–4?œñ½?›cŠ?™Ì -?•e ?Ž½?Š·Ý?O?•ß8?•æ.?’Åñ?b#?”w©?•é¼?Žjì?ŽcÒ?˜/?›ä-?•0?l ?”üÞ?Ÿƒ? xs?I@?šÃ|?œ&Z?›>?–èê?š°™? ¼?¢“r?Ÿâœ?š¿Ó?–Äú?œ™œ?¤\Ä?¦/6?¦€^?£æé?®+?™Çñ?žåÊ?£[.?£HR?šo÷?‰1²?Œ*?žÎü?¨½?«µä?«?£‘?“Çž?½?ž2?§^ä?¥÷Ó?¦ -à?ªï]?©è‚?œ«?Š¦?Å? œ{?ª.â?« ±?¦î;? BL?££?©»?ªcÔ?¬àâ?­_½?ª”?¦[ ?¦ì?©qq?«½ç?¬,?«äD?©·??‡´5?‚¡i?O%?–† -?—Öà?¡|>?©î@?ªùË?¬Uœ?¬tÂ?ªZÉ?¬Œ?®ZA?­~r?¬û?¬p?ªµ2?«9?®¢Ä?¯Vã?®S+?®°d?¯ðŒ?±hy?°eS?¬¤î?«¨ ?®8t?°ã¶?±¿?±ã -?³õŠ?²Š%?®G¥?©” ?¥ý?¨Îè?®‰?¯Ie?­7$?©¿?¥¹x?¨-Ý?­‹?­ý“?¡t?’0?œm®?ª“ç?®v?«b0?©—·?¥2ë? v?£í/?«OX?¯ ¾?­œB?«‚E?­‡??¯QZ?®‹|?®âè?°ž³?¯V’?¦÷á?Xý?¢‰“?«©7?¬?«Q+?¯é?±Q ?¯§Þ?«µ?©Ì¢?§ÜÊ?¨³^?­Kš?­ð´?®G?¯«?®ƒ?®4?®YO?­¼¶?«J?¨*œ?©—–?©»¢?§ò"?§ØÉ?¦±?¤ãc?¨y¡?«j¿?«½L?«¯X?ªv¹?¦¥”?§ì8?ª³R?ªÕ?©ír?¨?¨AŠ?¨<ï?¨q?§Íç?§QÔ?¥f?¢sI?ŸóÃ?¡bP?£"'?¤€œ?¦÷¨?©MÂ?©÷?§9’?£äû?›R?—³­?£N? N=?¡h†?¢ƒó?¢sá?¢/?¡e? Â;?¢ƒW?¡)?œÌ?›6\?(Þ?ŸôŸ? ­‚?ž¨Ž?žOJ?Ÿ2?Ÿî?ž M?œq$?›Aë?˜-ê?‘'Û?ˆ³?Œ‹D?•e#?˜Ff?˜}T?—žf?–ìp?–|%?–º?—,è?—HY?—Ò§?˜I›?˜b%?—ÖÊ?—Ïg?•c ?“·?“R?’þÆ?’K? ‘?O?‘sR?“a„?•ÿ?˜bm?—é?—N÷?˜ 7?•ï?’îÚ?‘½a?‡Ÿ?‘Jà?’æÜ?”•%?˜¯V?™s9?—§À?—£?– ›?‘â?V?bÌ?}…?’w?“5x?“Qù?“:å?”u?‘„Ô?4X?‘·H?“Q?“ ?”R’?“Pa?’£O?“ô1?“;?“-¤?”x ?‘«?~2?‘ý?º?ë„?’(å?ÇÆ?Öß?ŽØu?Ž$?ŽW>?}Ë?I3?B8?Œ>É?‹äR?‰sL?‰ro?‹â?‰À¶?‰Òå?ˆB?ˆ¡?‡ËÐ?„uÅ?„4W?ƒ°.?õ#?€J5?z¤¯?€Æx?‡Í?‡©Ó?‡†‹?…Å? o?¶ö?¡“Ó?¤¶.?¤—à?¦áï?§ôz?§jc?§V7?¨t?¨“#?§S«?ªl?­ÌÁ?©¹?¬p‰?®|’?®Žì?®´â?¯žä?¯(P?¯Š´?®¶1?ª¿*?«9/?­ä -?®f?­té?­”ñ?­Ãe?­Æž?®e—?®Ô|?­ï?­º?®&m?®Åo?®6±?¬‡ƒ?¬Ìú?«|?¨¦€?¦î‡?¨4˜?«?®sÎ?¯G?®¸~?¬À?«ZÎ?¬;?­Yr?­"?¬Æ‘?­Kù?­„Ñ?­ÉA?­×ô?­¦Ø?­[³?¬•I?«Ò ?«~?¨Fò?¦ºÔ?£ÖR?¢€ö? h?Y+?i:|?€B-?œ_é?¦E’?¥ÿû?¦?§'?¨,C?§‡Ž?¦îZ?§®v?¨2³?¨ãÞ?©æ§?©ø?©-Ë?¨”û?§,¼?žšŠ?†@Ý?…~J?žÜV?¨Š¿?¨Ê¹?© ä?¨½é?§œ›?§f`?¥Šÿ?¨¦!?«¹½?¬$?«^Û?©T¾?©Uè?¨áN?©h]?¬z¾?­ŒÉ?­½?­¨ÿ?¬„Þ?ªm¸?«Î?«yÅ?ªœÿ?¦‹®?Ÿ<>? k-?§òÑ?«€K?¬qß?«ö™?«•Þ?¬/î?¬£U?¬" ?«[C?ª·Ç?«ÄÛ?¬°ž?¬¬3?¬bK?¬Câ?ª¹?¥=Ÿ?¥Ø?©ÙÎ?ª­Î?¨1?¤ÏL?¨bô?«¬ ?«’Û?ªM‘?§NŽ?¦ÂP?¨üJ?«Ô?¬è?«Ù?¨¼ý?§À‘?ª¹ ?®{¥?®Tž?¬Ô‰?«8ë?«b?¬¦Ä?¬¨d?«{?ªB‹?¦¼H? °Ï? ìy?ŸñŽ?¦~p?ªwÇ?ªëF?«l?¬YE?¬´?§å?”a§?œ´¬?£Ä'?¦¡?¦ÍÇ?¦@®?¤ða?£“j?¤à’?¦£g?¥®u?¥rï?¤–;? X?“á‰?~?‡rÍ?›™ú?¡ô?¤$I?¢¢ ?¢­ñ?¢©Ã?£,?¡úÌ?œˆT?ª?¡¨±?¢‚y?¢fÿ?¡*¡?¡E×?¡º?ŸR‰?ŸÀš?¢Ç?¢È‡?£z”?£g?š§Ø?™q’?”ê—?—ô¨?›ðÊ?œlÓ?œ_?ƒ°?žà?ž™Ò?÷Š?œ¸º?Ç›?¶›?b‘? Á?›ŽÑ?›Me?0#?žÅ?Ëè?žt·?[á?›{¬?œjh?k©?œgË?›íJ?›6|?Ž?›þe?š?šÑ!?œE§?œËÝ?žgÏ?žT?ž1?›p„?˜×?–”t?–‰à?œ ?žQê??œOã?«n?œ!?œ§e?„?šÓñ?™ÌÕ?œ3˜?œyþ?™ 1?–|n?šêj?œ³?áI?P?)˜?›~Ü?š s?œm?Ì?™­\?õN?“5'?œïÕ?½a?›Çw?’­6?’;í?™2Ð?˜6 ?•‚Ë?—v¦?”Ñi?—$Ž?•—-?•p´?šO\?›¡#?š§?šUÈ?šÂ[?›t?›^í?œsò?4`?à?™Ù?˜'?—â?™.,?› a?šs¯?›,Ë?›>?›Už?™Ëc?šâ¹?›>Õ?š›?š?™–À?™â[?–€Ä?•‚?Lr?W8?˜G¥?škâ?šk¯?•´;?˜/o?š¤Ê?•¼q?–|?—îï?› Ø?›÷?š¥•?•·ð?–E?š.?š¾r?šGš?›9r?œID?›+Ñ?š£ð?š‰?™êÔ?˜‰î?™È¸?—Æ›?–·’?˜­?™Ðš?›gf?›_+?šó(?™Ó¨?™u"?™µQ?š‡à?š4?š§?—–g?–;õ?—¸›?š*?›{™?›6C?š?šTv?›?›I?šp€?š·¼?™áô?š/Ù?™Œ?™j?–±-?“$ý?”Š–?™C=?šÌÑ?™^Ë?—ƒJ?˜óÊ?™vf?™ä[?›l?šm?˜¦è?˜¯ˆ?˜ô¢?˜Œ?˜î3?™ç ?˜7T?•E?—?—W?–Ô]?’íª?“×?•W×?—È -?–éY?™?™ïp?š+>?˜œë?™žC?™5®?˜¿(?˜‘ñ?™™?š?˜Ùº?’£¿?ø¼?”Ð?–-c?—”ˆ?—Nå?™¶?˜C"?—Å­?™4´?˜ò?˜L*?˜¿¡?˜OS?˜…?˜s#?™Oª?™k?™p?™Èv?™?—h]?˜F¢?™cû?˜Â¨?—Tñ?—æ?—¯§?”¦–?”.„?—ru?—Š?•®ð?“Á­?“Šl?–â7?˜iú?˜Ÿ€?–Ð#?’)*?–!Y?—ܹ?—´?—2?˜Æ?—ÊE?•¸¿?–bi?˜ m?—¹>?—¢?Žd}?ŒÔ?ˆ½’?ˆä?ˆýn?‹½T?‹z?‹ˆn?†×?ˆ Ð?Š1¦?‰S¾??Š/ ?‡‘‹?ŠÔã?‹Uc?‹¬?‹h*?ˆV?‡ð?ŠŒ??Œz‘?‰t"?‹P:?ŒïP?‹D›?ŒÁq?‹“ú?ˆÇj?‡Fæ?Šã?Œ~?Œ¯?Š|q?ˆ®`?†­é?‡[?…¨"?„ÎO?†ˆŒ?ˆÿø?ˆkÁ?‹ƒ?‹Ø¿?‰_F?‰RÑ?‹›b?ŒB?‹2£?‹']?ŠCã?Šè^?‰4A?Š%Z?Š†?‹ª?qœ?e“?Š?ˆ?ŠÈ\?Š5’?ˆËE?ˆÿž?‡·™?‡ë¨?‹^S?‹;??‰vV?Š™Ì?ŒAm?‹vÉ?ˆ"Ý?…¸?ˆÔ—?‹¤+?Šã7?„Ž¸?‡'³?‹Êù?Šs:?‡z„?‡‹j?‰ðD?‰A?‰*6?ˆ–U?†8/?‡¾‹?‹šÉ?‹Œž?ˆá?Š3?‰–N?ˆn¨?‰P ?ŠMV?ˆÊ?‡€•?ˆ±Ÿ?‡“?†õJ?ˆWC?ˆÓ‰?‡8?‡Æw?ˆ &?…5Å?ƒ[?†GB?Š=?Š¾3?‰.ÿ?Š/r?‡¢´?‰8³?‰ö|?‹3 ?‹@À?‰õÒ?‰5?‰8?†Ø#?‡|‚?ˆùÃ?„À?„±Ó?„Ù?…ã)?‡Hë?†»U?…ÑÝ?„ï?‡Me?†­9?„vm?…e?†Æá?„Q^?…Ù”?ˆ²?‡•”?…Æ?ƒóÞ?ˆ?‰uq?ˆ;î?‡ÔÂ?ˆ€v?‡ˆe?†Ð¨?‡ð?ƒ§Ž?„¡S?„ME?†µÿ?ˆÜs?‡hF?‚ø?‚e?wC¢?`%?|C„?„ç?„¾?†¿Á?†,?ˆ²6?ˆnÚ?ˆ '?‡ïŠ?†¡g?†×5?‡³?†ûJ?„by?ƒfx?…fv?ˆ-Ê?†½{?…ŽQ?ƒwê?‚-!?uÅç?„þ?†eP?‡Ó?‰?ˆEC?„ð?‚…[?„ #?‡a'?‡ s?„¯=?ƒë?ƒº4?…a?† ?…d=?†øó?‡?“?‡Hì?…E7?†)Ã?ˆ(Ë?ˆ¦ò?ˆ‚í?†Ç?†@3?† ñ?†Ä¹?ƒ‰±?§T?€XF?…'V?†r;?†‹m?†³?†²6?ƒþ?„ø?†~ª?†SÚ?€Kl?€Š?…«ç?‡?…ßá?†c€?ƒÇ-?‚tt?ƒÜf?†)?ƒya?‚™–?„†x?‡`“?‡˜?„r^?…ž¾?…}f?ƒ—©?„³å?…ûv?†|?…¨–?…Ÿ›?„ë³?ƒ8ÿ?ƒd?…;}?…'e?„D7?‚À#?ƒj?„°º?…¥—?…ùï?…ö³?ƒW?tv?€`a?‚¸ë?„„?…]É?…#½?„­c?‚ãÀ?€'?€qI?‚è?„FY?ƒLà?‚r?ƒWW?„Br?…]Ý?„¶e?„¨?„Þ‹?„rM?ƒòG?„^û?„g§?„Ùö?„/3?‚u:?ƒE„?ƒ)?‚0û?‚O?u/a?|O ?èy?€Ðø?‚™ ?‚Rä?€Ò%?€N¸?„>?ƒÌy?ƒfÒ?ƒŒö?‚*é?‚½ê?‚¥¿?‚Ô?ƒR?ƒ'?Ñ?Gè?Ý«?ƒº³?ƒ‚‚?ƒ -?ƒ¯‚?ƒâÕ?3‹?u9?–°?| ?ñû?‚Ž?ƒº5?ƒ?‚Õ”?€°{?|o^?€,ê?ò?fA?×Ë?‚?‚#D?‚j0?‚‡$?ƒ w?Á?t?‚«’?Ï?|ÉÈ?}ï«?cN?€'q?€Úß?çT?€êX?$?€5-?~¥?s’†?mëm?}Tþ?o«?yL›?q .?~ô ?wŠ?y“r?€:s?{`_?|\Q?€kÂ?æ¢?€œÀ?ñð?€)6?ü`?;!?vf?€íŸ?€2ÿ?N?}¹¦?tÑâ?zoÏ?€T?€”‚?€V¦?~,`?}?~~?€ë¸?€Sê?€Þ"?Jñ?6û?Ži?€b*?|=C?|ýÞ?{Cê?|p?}Ñ0?~Ê]?~(0?l×?~Æí?|@š?Öô?€¿“?€]V?g?€ÿ«?~ì?n?€Ÿ?~+Ç?|DW?z±Ø?~@þ?~á?uÀ•?wqä?{®&?}M?~º?{U?x@S?|çq?}¢U?~ ?}™,?|tc?}/²?}Sä?~£?}ŒT?~µ?}×u?}ë£?yõ]?uGë?uñ?xõK?ysç?})?}Ðr?|¬?|QS?|"?||?zÃ)?{'?y‡?{”ç?} ?|Ä^?{úÙ?| H?{F¤?|w+?|,e?zƒµ?z%ž?{áX?}ˆ?|?zr'?zt?{c?{¦‚?{ƒó?|Üü?zgc?wè×?y6E?{î?zÕP?z²?{¢–?zÏ?wšÄ?p)Ò?w¿ø?{Ü?z«c?{9Â?yìÍ?y“×?{qà?{L—?zx ?xÃQ?xrŽ?x×?z˜ó?uvh?p½ü?wì~?z›]?yè?xÁí?yy=?xëD?x8‘?y©?x× ?xc2?wü“?wq°?wuÖ?x“?t‘l?vÖæ?y>??yœs?yB*?xi•?vl‹?x~Ú?y„?x ?xa>?xsì?x;Î?x4«?x@”?vQ4?vÑ?wÄM?vXL?u€T?uC²?d·ª?K´Î?Z$T?qo?tÉç?w<ÿ?xî?v†¯?wÝ;?wä?u³¦?v>$?wØ?wêq?w#?tøü?uÒ?tŒ?pçZ?qiœ?u™?tYt?un?r?sëÛ?t€ú?u÷‰?v 8?wú?wå?uÄ?q2‡?rÖj?tºÁ?oŽ?sÙ~?ujR?tOå?s -?rX?sª?tú#?u©i?up)?tèz?t¿Ì?t-O?k3v?jçU?bîG?@$?Y–»?o ô?n,p?k€ú?p\e?l?e“C?G¥î?8Š?b¥?n@d?q…?rg?rø„?mXZ?fë´?qÏ–?rlÚ?røÜ?rB?oé|?bÜ5?lí?sž?rÉ?rPí?s›h?s·œ?rr‡?pðî?r!œ?rÊ?r¶+?p”,?kŸ¬?qÎ?r_Ä?pÙ?i¾Ë?l£·?pv?pùM?pf½?qp?r]÷?qÔ-?qh9?q®N?qfi?r ~?qŠ?ot?nj?o¯M?q’?pØV?qaO?q:?p¢’?o¸;?pŒÜ?q‚u?q È?o¹ó?oŒ7?o!)?p}à?p>›?oš7?oq¾?pf?p{+?oè^?o¦›?nv?nÊ?nê?oW&?lÙ6?_më?dÌ?nü{?o ¥?m·“?^N?Q©Ö?_×?lÔz?nRÅ?on?o2i?nØß?n~?mûã?mÓ¨?iEÈ?W &?eÀf?k[?mÃE?n"ù?mõ€?m¥z?m²+?n5?n%Š?mŠº?l?kÿ¨?l_’?lþ?l¸?kž?kü•?i½ñ?P‹Õ?XàJ?jh?ls¤?l@Õ?k¤·?lÙ’?lu1?kfz?kQk?k‰¢?jðm?jèù?kƒê?l=H?l/ü?l?Ó?l A?k±?já4?kÉÎ?k$6?kD?j‡–?jûK?kBÉ?k:á?kY#%; €¤:×#):×2ê; ž};IøÛ;‡ÎŠ;£º;­Æw;¤…X;‘¹ó;ÿ!;ouã;\Cd;OÀP;c‹ñ;”%;Éas;þ <Æ<ù><ª‚<¸;÷x ;åùÆ;Öl4;ÎÑ0;Ú‹;ô’´<!:<ˆ÷;ùÙ;Þ|;ÀÚ\;¢ù;‹+L;ƒAâ;“µD;¾¸Ö;úÎ+<Kr<#‰Y<LJ< µ1<Cw;é;ÊÅ;¥ ú;» -;T˜…;H5¤;b¬(;Í';­ ;ÁþØ;ʯ˜;Îå.;Ðèl;Å…Ú;£²q;lû;'ü:; ¥m;f¬;º‹®< -×<0Ð[<‘—<‰{¦¨yò<$à•<¶¦<#ÿÇã<ì3Z<æ@W<ì‹Y<ý‘©=A=ßÈ=t`=N<ù„H<èµì<ÚA¨<ݦ@<ûWß=t¹=/ʆ=>Ï_=@)l=<=<âR=D‡=Lv‰=LÙh=F) -=A»(=EúŠ=M‡Ê=Oa]=K =Eq=>R{=2Ú½=(^¡='=+±=(;°=è¯=z9<ò…B<øV|=CÓ= ƒ= ÏÞ=­Ê=›e=®q=Æb=°ü<ào¥<ÇXå<Ç!í<àŠN=·ò=3D=ƒÄ= ðT=MR<üa<ä‰:<Õ¹e<áOI=*= G=DÔ= îp=ì0=——=X= l½=9`=Vï=!UÓ=…ú=ü¦= ìµ=3ã=[4=KŽ=Ä=ô­=×C=¬²=%Ü=Ûÿ=¬4<üôª=º°= -A0=œ)=‘=ô=ùB<ë«Ú<Çc<ºÂb<ÒN=±=¡³=±Ã=F@=ž¥=³^=pä= ŽH= U<öM§<¼%š<Œ–Ì=:2<ç:‚<¾$<’þmX<†‹<š)<¿)E<ø%=>=/ë„=CW$=P¸=I^=.rÈ=8=(æ=K<Ê=e¶(=`== DÚ=Ð[=6qœ=HÄ‘=U -Ü=dw»=z1›=…;{=ƒ7=g\0=9Ö—=š®=œh=: =i!’=‹6¯=˜Ðø=P}=£R¿=°pI=¼6=½íø=·Ô–=­†¬=šV}={¿˜=Kýé==¤=EÇ­=Q"¢=ZSÒ=iZD=‚]…=–¥ë=­: =¾œ=ÅVÄ=¿›=¯g=œKÊ=2ô=ˆOÖ=Û=tš°=bÈ•=K-(=8kJ==š³=]|0=„xB=—>2=¢—ö=§ý7=­-<=µA7=½z=Ä!¯=Ë(ò=Ó=¹=ØIÙ=×9z=ÓD=Ï%·=ÇOÛ=¼Ò3=¼¡ =Ë =ÚB=Ú2 =Ìì—=·b==£C‚=wÊ=¨±k=º»«=Ç.Þ=Ê=ÉÄ=Ëò=Æȳ=¸=Ø=¥ê=•ÇØ=‰ÉI=‡œÕ=‘ÀG= nT=«ù=­Ø&=¥ »=tÕ=o§=Kl™=D}[=bÙk=69=±Ñ¨=˨B=Ð(Y=Á$p=®Ý–=¦ï"=«q×=¹%E=Ì)Ø=ß=ë“~=î¨Ø=é&G=Ü}8=ÈLS=¬s=‹=_Dâ=Fû‚=I|°=Nؼ=Ks¡=P-°=u/¤=œù=À Ç=ÕÝø=ܧ=Ø8=Êe=µÊÂ=ŸØ5=†õ=PÙT=µé<îÀ<ï³…= q§=0fê=[B=€R^=ˆvè=‚š¼=kÒ=a©ò=k^S=ob‰=a6w=KCC=4€=©=ç5<ë÷<ᜥ<ïm¸= =0d=Wb =uÏÊ=çq=r£K=Weá==~§=*y?=Z1=¾0=x=Ý‚= ‹‡=ÆJ=3ñ =fG·=‡#=”Ü=¢š=¬]6=ª½j=™?=|o•=Oæ=A¶C=R=ü=j«=vÊ=måk=aú=dåŒ=rßq=s·6=kË`={S =—[#=´dû=Å\ƒ=Ëÿu=Ñ€š=×.¿=×Q—=Л{=É,:=ź¯=Äÿž=Æ0¦=ÌØ=Ö&‘=ÝÂÎ=Þ=Ú…Ü=×ñ-=ÓÑ=Æ a=­­7=•Gn=„²†=w§Ì=vM=ƒØÚ=èË=˜vj=•\3=Œ=…®»=…Þx=†&¤=Û=iJ=`~ñ=sÃ`=Ž¯G=¨3ð=ÀJ"=ÎóÍ=ÐÆ´=Ç8©=´W(= ûÒ=šËå=£³/=±=r=¹¾ï=·U=©½=–6‡=‡¬P=zñx=j˜9=g×=oèk=iz–=IòÛ=&÷~=Ãt=,Q=;ÿ=5ÈÕ="ëþ=l= xè=:xþ=WbY=q Ì=ƒ3=‡†‚=€ÇÍ=a”q=EÖ=Bè­=^€y=e=ˆÛ[=‚ÜF=jÝG=Q„ª=E4¨=R³,={ v=•Bs=¦¤*=­Zß=ªý^=¥«ð= 1=–á=ˆ >=*ô=‡èú=”k=¥Ò=Ÿ:i=—pB=ˆ¹É=xD¥=lÒ,=`Q/=J‘=?Û=RìN=€(¬=•JŒ=AN=™fr=”$7=”z=™©H=¡÷[=ª?K=ª'f=ÀŽ=‹Yµ=|¡²=€\=Ž[ë=šÅª=™Ú=Š}å=v¶ÿ=vHš=‹„R=š–ö=œP©=™µ°=€¾= ðg=•‘W=|÷*=a¥%=ok=ŠŸ=œÙ.=®°=¿™=ÍþU=Ò@¹=Ç>‹=µ -=ªÃó=­OÕ=¯¡=¦j=ž#I=¤ËÓ=·ûœ=Åà =ÆÜ=ÂS/=¹v¾=ª÷Š= úx=¦"G=¹T”=Ѭ&=ä{Ã=ê|ò=æ?œ=à¬=Þ~=Üi_=×Xè=Ìî=¿0¦=´ðÓ=©©ÿ=› -o=ŽÉB=‰§=‰¦†=Œ·_=Ý=Ôÿ=„3Â=kœp=L'˜=0V= -=}<ù­G<ìcÄ<ãè¢<ØÈù<Õâ©<î®Ò=ù@=/È#=RÖs=nª=zÜç=zï±=tgg=k-¿=nN[=†>¸=›Á=§Æœ=­T÷=·Üã=ËÁ=ÛÁà=ÞP=Ùë/=ád$=ðÙ=ó„²=äï¾=Ñ´c=Âö4=¸¬|=©ßè==gðr=RW=Uë`=V"g=BÖ^=!k =üy<æ1<ôwP==,­Ô=FÊZ=_Îå=|X=’WÌ=­m³=Çà=Þ,á=óH>]O> Ï"> C£>B_>Ø9> ??>@>%éÆ>.h9>/g_>)á>½A>0$>Õ>(I€>1ìÛ>5K>0á>)˜Ã>#œœ>dC>ïŒ>&ˆu>8»Ž>I©—>UU>XÃ>LXG>7>)n!>-vl>:ÀW>Ev¢>LHÐ>PÞÃ>QÅ<>Rƒœ>X.>aÛ>môs>vF>tB>p(>r%â>s¥Ø>l­Ô>aC>XÑ>P-ß>J$º>NV>>]Ť>oF”>{J>v@q>W²>.@p>§> sÓ> l>Õ>;]>d44>‚CV>ˆ_>…Hp>~Z>rj8>j‚½>^ã¬>C¨ì>¡>X/>¯­>&6¦>P˜I>pî>‚/é>‡L>ˆ$d>ƒÎÐ>v;%>f,>>_¸±>[:x>R„í>PØŠ>\ä>hº>`X¦>Aã]>"œ> Ñ>;»™>Y*>g!'>pþ%>}¯,>|ø>c–p>I†>OKh>jNÇ>t¸y>_éÅ><;>$ÂX>,žÿ>Q®S>€*a>¡>øÐ>ˆqø>„º>…Wo>ˆgR>’8ò>£Õ>°¸ü>±ø/>©ª,>ŸðC>™ÏÖ>™>¼>–àt>Š Ô>t×>fwI>g‘[>cJT>RDÁ>@÷©>B_Ú>Wgž>oʪ>ƒ>qz>˜h[>˜‚e>‘­‚>‡Û>y\[>i]D>eü«>p¾>1j>ƒ2€>ƒYñ>€rð>qcò>bܳ>eaÄ>qT~>xoÙ>}2¡>…,O>‘K“>š¢Ø>˜À%>z >€•õ>lÿh>\Ñ>NêÑ>F\÷>J3–>Z8Ý>p¢µ>‚dr>‡ á>ˆ_á>‡ï\>„U.>y“P>ZQ]>/Ù*>6•>-–¾>XId>{g>„T«>‚?>xQ>l’b>hEL>i‡2>nÚi>vÝ]>|ìé>M>ˆgû>’â¦>˜¦Í>–ãV>”Úí>˜Ît>¹V>™#‰>Œì>„Q=>€ÁO>|wF>}Q*>‚™9>ƒJO>rU\>RðU>D¦>L«\>_g >n?V>v3>€ø«>ŠÆë>Fa>Œ„S>†z÷>‡Â}>‘g+>›Uñ>šœÆ>tu>‰1 >Œþ…>…ˆ>†×9>†y­>‘É >šØÕ>—Vf>Œ9v>€gZ>kÏ+>\Šd>VÍé>U¹.>SŸÛ>YdT>j‘M>yG¡>‚Þ>‹cÎ>˜4 >¢µµ>¤h>>ž.2>™”W>™EŽ>•)O>ˆà>uÔ÷>rùb>‰Rš>›Im>£Î>¥]> n:>’g>t–>?‘¶> ³×=½]Ú=ƒ’l=ˆ‹=Ê”C>iÓ>Møè>vžQ>€•L>|² ->€;•>„kº>‡ä>ŽP¥>•ç >˜ù>™EÔ>zï>©T–>¼î5>Ñ{ù>×–J>Éâk>¶eÉ>©Öö> l>»X>€)9>wë„>pðÙ>Y½/>RÊZ>v‘>”Ø>ž M>•õ]>ˆCí>ƒV`>¬Ú>§ä>ÀL>Ð…•>Õ y>Ìæô>»Ó‚>¨lî>“²>sTã>CÏ>3}$>9ãƒ>BC ->\O}>ŠË>ªN‹>¾Ù>½Â5>¯P>¥¹>¢F’>£ý£>¥š^>£>žð>—Ä>† v>Z >? <>RêÇ>‚Ö>–®>œ“>¡É>§tš>¤»ˆ>“'a>w“½>aç>m&F>LJ>†Ä|>‹¶>„Õ>dQ$>A-‹>3Íj>Jt=>€›>ŸîY>´íT>¹Þ†>·Üe>ÄÈ8>æ,[?W?Þî>ôu­>æÕ¾>ÜP>Ô%¿>ÆŽÒ>ªz[>‰-•>{U_>›`V>ÎxÆ>î5á>ï®>èí>îó‘>üò?+¼?èª?(½>á×(>½BY>«Žá>¥¦7>­õ5>ƳM>Ûü >ãfÿ>çð>ëËß>ï,>ý{Í?xí?2>ÛJ>»@À>¾ž@>Õ¥>êT#>üÅ?×u>ÿ¤>鶼>ÞõF>箩>ù€Î?>? -šP?O·? òR>ÿ]>ççÎ>å>ï\>õH‰>ñ©½>àÕ[>ÈS4>ºáX>Çü>æx>úY†>õ6o>á X>Æ\> c¿>n¡T>PA>‰Q>¬hä>Ǹ‹>ÎkÉ>Ë·—>ȸ >͉->×ìÀ>Û4º>Õóv>Üqª>ùê? '? 2>ùÞÑ>æì >è=ÿ>ê¦>ÉŽ7>–÷‚>G->Œ‘>›9‡>ªÌ >Ëû>òÌå?­ ?î>ït>ËqŠ>º0>Ë¢e>íìâ?Ãl?±? F>ëoÈ>ßes>çÃË>õå˜>øµí>óws>ñÓ>ï ¿>çV‡>ê}»>ûh>ûl>à;H>ÄF…>Å_­>æB?3§? ”?›? ô>á;ˆ>Ú‰*>ñÄ¢? -^±?s -?Þ+?ý/?-é?vf?b?–>þôÑ>çžU>Øæx>ÚB;>Þ+å>ØR|>Í[d>Ã[Œ>Á â>ÕóY>÷ u?V}>þq>ú‰ó>øÊ÷>ó»e>óÔæ>ürU?ÿ–? Àg?ž?ïœ?–&?$ÀÎ?'¡]?é‡? X>þ—ç>ÿW? ›O?ø´?,_Q?.”ä?%+&?0?­—?Mð?Ϊ?ø(? ¶Æ>ùÓ»>æL0>î#Ó?¨?Zì?"¥e?3w?Ó?-(?< z?;^ô?.5?"ý¢?"³>?'¤C?)ù@?&âá?s›?;×?gó?¥ô?ˆ?ŸŠ?ó? /-?,pÙ?-2 ? Cú?x?:«?F³>ópO>ÜÃ^>ØÓ!>ä©‘>õ4?1¨?>>ñc5>å¹õ>ÿ÷?}Q?"¿œ?/ ?Ù? --¥? Â? ¤?ïé?‰?¯Ñ?*f?P ?´$?ýu?KÃ? -¢©?ã3?ù?ÜÛ?'ŽQ?4%x?4‡m?.Ái?+Pý?'C?nk?[|?÷?)_å?8ÿA?;Fþ?0Š¦? ×Z?¤Y?%…?/£}?/[t?-® ?,Âr?%‘“?¢F?ïÏ?]?#“P?'á¥?"yÑ?Z|?“Q?*ý?6ú‹?7Á™?-Q£?!˜?”ç?Uþ?Ô ?†Ó?9? ~?!ÄÌ?Á.?£[?‡Å?Ôá?ïP?Ó1?!·Ü?6Sz?Gë+?H§Ë??5Å?7nX?5Ü‚?; -?B?GÜÉ?L0?J0R?B,”?@é?D¯*?E]T?Cü—??×æ?9>Ì?5ìÙ?52ª?4?8Ò²?A€Â?>Øb?1e—?)&?)R?)©è?$‚i?Uø?X:?ƒF?#¯Œ?*NÔ?$ó?Cá? Ý}?K?/?Y?'”–?.³U?1Rå?- ?@ݼ?37?&¾?%Œç?*ø?-Pæ?.7ü?1%[?1ð“?,@ ?$ê¼?!Æž?%,?/+g?6;E?2Ü?(Dþ?$¹›?,«Ë?88?@º(?G¦Ì?Jò?EH9??ŒH?B))?Htù?CcÄ?.÷?Aá?g?|ý?!Ÿ÷?(ÊZ?.³ÿ?5ßÿ?:ê?8õé?;¯Í??°Ô?;gä?2ÜÝ?/ã´?3Û?70¬?9È~?>ßÌ?AÈr?AŹ?BP?A9±?G˜?4“I?/``?3âV?AFú?LÑE?Kwø?? -m?3nT?,ó$?,ç?2Fq?8É?9²?8Îz?8¼?7\j?9\@?B@Ç?K»ã?Pã?NÏD?H` ???¨V?B;¹?AS†?:Ôm?0³æ?1ûÓ??/§º?&Z%?,;‡?4ê0?5‡?9<?BÙÖ?K)ë?JÊÒ?<1/?2_Ö?8© ?;v„?1(—?)r9?-…&?2 R?,ÐÝ?$6®?*¡ó?>ìœ?RË ?aÞ?hÂ?f=‘?[ ³?L«½?H€?Io2?FÖÆ?J­ê?XÃ?]ÿƒ?T°?G-÷?AYw?E-û?Lµ?Pá?W›÷?_%z?\6Î?HÇÇ?.í? -ª?(ó?=iú?F¤¿?CI?H¡+?Xl¸?dn¶?k:B?kÃR?d™?SæL?Fþü?L¦±?R>º?DrŸ?2Yö?3Íš?D¼à?P±1?V¡Ü?\`Ñ?]ñ›?_„y?d‘?g?Î?kö»?q8‘?mìÊ?a¡Á?SÉO?C ˜?,6Ž?í?'¯d?>…?FùÏ?DÈí?A]/?8KÏ?-i??*&?/¨Ì?:1?B·?I´e?P6?TU‘?UÕn?S>ô?Kõ§?@Òb?9_?2}?$oO?°Õ?&£â?0Ái?7T¿??Cþ?Aæ>?>&‚?=ª¢?D÷2?G`à?B¯ -?CÿD?F’?AÊ"?5}¯?*â‚?,ø=?2S?1x?+“Ë?$ Ö?%“e?2E?:N?8‡Ñ?-+?<§?H?Þ1?'€´?0€c?2¢H?2ƒ"?.GŒ?'v?*d?5Ã?;kJ?7Nõ?1‘­?8*?DƒÒ?O<’?Xüs?Z,ì?K ’?8 -?4YÒ?1ZQ?Ø%? ó~?¨3?,Š\?D™Ñ?VP?]…?R?=Mü?1 -J?1?6|?>éò?IË»?Pí™?Sˆ.?VR?Wø“?\š?_Z ?U.¥?<³v?+—Ù?1&Ž?8?7|Ý?; ?=ê0?;Ôü?Aà?I‡ð?C’Æ?=aR?:¨R?*²?3Û?Fë?#®g?)1?1üÑ?:3R??)?CC?F~O?G€‹?K´Ð?R\‹?N&4ª?IÚÍ?Oë$?S:œ?NÇ?C¦?9±?+¼>?|¥?L?&¥ý?&E?#™?$^À?.#Ö?;‘m?@ºª?D¢Ò?J¤?GPo?>¢R?7ˆ?<'~?>Cf?3³’?1_b?1•*?+<{?)«T?. ?/to?( ›?u ?æ÷?%i–?8/X?JqÓ?S¢?PN?P- ?Pìc?JA§??Òm?&‚ ?;í>ÙˆQ>ã]ƒ?£ý>úÿX>×/Ä>ÙU,?LÆ?ÿ¹?!xQ?!8?a?‡è?³q>ß›Ó>éÚH?CŸ?4gá??ä×?D“?B:P?-eU?á:?Ò?&®Ñ?5vû?C¶N?IÔ#?II?BÑ?9à`?+JK?§z>ú—7>ðÐí>ë‰z>óº‡?NÕ?2öG?MvÛ?TŒ ?Oý?LÕq?U ?]Rå?`%j?`™?VM)?? -e?(6V?n?(ðø?H¶½?au?gÜá?^P“?N1‹?Ny?^Ö?m+Á?mQ?d†?`/?dz?j½ï?o Š?`{)??þ3?5¹ç?>•W?9š?8©é?GT?M“‘?JMž?Wð?l -?sI ?jY?ZÚa?Fÿ?2ÇX?%‹Õ?$í¯?0NP?'@w? ¯Š?t@??Yð?TPè?VRœ?Va?d¤Ñ?u^$?vwŒ?j8?[ó8?Th:?\FØ?s¨²?Êý?VÚ?xN?zµ”?} ?y-³?uVV?kmž?Q~ƒ?L?ƒèo?€+"?2?„w?ƒ?CX?zFL?z¾?{·?x?›?twi?rÝ?sù¥?rèC?jû)?eìÝ?cº?FM?#'?,¤s?PR¢?dZ£?l3)?x5}?~d­?z -U?t["?fƒŒ?U¹O?[‚[?kqù?n¬N?i´?iÚœ?grw?^P1?e$?zEÇ?„c?ˆŒK?‹´b?ŒšX?¹_?Ãí?‰Ûe?ƒ%q?€‡÷?VÁ¾?F”?\•:?€#6?†ö­?ƒêå?ƒ›Ž?ˆÝÈ?ˆª0?ƒy?€—?}vK?~ö{?€`Ÿ?~#\?t?f£!?cJ?j½â?m­…?fq?U?M…?dFv?vµµ?wQp?vYò?iì8?O:ô?C4§?Puó?VíÊ?S«^?do?{ðv?ƒ2å?…e‡?‰IŒ?Œ?‰?ƒ;ì?ô7?…“[?„¥,?‚rÄ?†u„?‰V«?|η?`Ì#?eºS?k?Œ?a‹–?Zr³?^âô?l;(?€Ç?‰®H?ŽãÕ?i*?W?…o?dÜ¡?Ok?\ZT?mÉ?ru#?nŽŒ?cÿ:?Qöd?L"ã?`³ -?tÞ@?t Í?mvQ?lB ?lð?qã7?v×ã?zP§?x¸à?oÂ?jÊÈ?i>?bÐ?`<8?Z|?^"N?pÞm?ra|?bx?b?'?s®?ÿí?|‹?rÏÍ?sFý?tÌ\?y2K?{Þ§?x:½?x½M?tš ?rp?~‰)?€o?uÛâ?sª¨?syŽ?kµí?e[7?q†Ø?~Í?yRç?h“é?[=b?W[u?\?l`¼?€È°?‡4“?†˜´?…ö9?†Ù¢?‡³?„Q ?|:†?s7‘?|¦?„]É?ƒ«4?€Ì¦?~{à?~ÿÖ?€æî?å!?‡$™?‹Ö.?‰k:?…/?„ª?ƒ§ê?†KÈ?‹öš?Ð/?Œß -?Š?†®R?…ˆ6?„ã?‚t?ƒz?ƒo[?î[?®y?‚Að?¥ß?z?|ðÌ?€¼ ?ƒ²4?…¢?ƒ¬Ù?…Ì ?ˆ‡?ˆë?‡‹?‡?ˆî?† -Ž?ƒû"?*þ?w0©?h¨9?`» ?dðš?nš•?rG©?u˜m?€XÉ?†(“?9\?pm¨?lšÙ?là?mÝ£?t>µ?€ö×?‡ÅÖ?Š?ñ?‰??ˆJ?Š£?ŠÓš?‚Þ?oµa?qÍû?'M?€U?€ëv?~#?w×Ì?x®J?‚$³?ƒPj?yt?k {?iÜ?rî'?v¥p?™•?ˆ%ä?‰Áþ?ˆáÎ?‰=4?Œï?û—?“&Ù?‘á?Œû˜?…5?‚=ä?ˆ Þ?ˆdo?†/1?ŠÇÀ?Ž_?Œém?ŠöG?ŠŽå?ŠEg?Š©?‰ÿ?Š|T?#Å?’d?Œ7T?‰– ?ŽÒë?Ž!Q?†„ê?„]1?Œdæ?”â?•P¢?ŽGø?„A$?zÑ?†M>?|Ö?”Ê?•¬?”]@?’Sì?]ñ?ŽÕÆ?Íõ?ŒæÁ?gæ?Ž³?Š„Ã?~I7?r)_?tk®?r)|?vÄš?ƒbù?ˆ.»?‡?†Œ?Ž\Õ?–eÂ?—/ö?ŽÛ9?‰­k?’Mj?›¤W?—/?˜]Å?’‘A?’_@?“‚ ?”s?–%›?–ŸÇ?” ¾?Ÿ-?Œ©¡?Ä¿?“ê{?˜tY?™x?–dA?“¡?”æd?—–?˜Y?™½¾?š,¯?™XG?—>?“ÂÛ?” -?•ýë?“±?“ý'?™æ´?œœm?› [?—­^?“CÈ?Ž„?‚@?a?Š9¶?†S§?‰a?‰ï%?…—?…Á?‹à?Ž?‹9?‰ºe?‰iÓ?‡]?‰Óç? -Î?’¸?Z?ù+?A¥?Ž§¤?‹ø?…QÇ?ó£?ƒb?‡m?†öñ?…¯¨?}Ó?P’À?6?!îh?Jz?V+’?<«ñ?1¿¡?R5T?lDÁ?y²+?‚x?„r”?„¬(?ƒ¯?…C?‡}+?ˆç?Š °?†l)?“7?z¸ë?é®?ƒŸ8?†wù?‡C‰?„=¹?„',?†æä?‰ëå?Š\?ˆ†Þ?ˆˆÆ?‹èô?‹ Ú?…>ô?…TÀ?‰•ä?‹Ý8?ˆ¹_?ƒ”ï?†[?‹‚.?i?’?Œž?ˆÛ?ŠŒÝ?‰`’?ˆ ä?‡&„?ƒUð?„$?ŠE0?Jˆ?’Q?½ÿ?ÌÀ?Œh¨?‡j?’–m?”ä?•l%?”Þë?’$ƒ?VË?‰sú?ˆ¯?‹¶M?õ?‰aî?„Jt?‡³Y?ŽÁ”?õx?Ïp?H‰?ý$?–J?–Ö?’r…?Ž¯s?¥?,•?‹Óè?‹”-?Ž|?_š?‰~â?ŠÐx?‘ºÓ?’<·?\¯?8E?)¿?Šà?Š¥Ú? ??‘¼M?’ã?•{e?—ª?™y?šK?—qÊ?—êÑ?›”v?%¼?qb?œÎ ?™Ø?™+r?œq ? ¡N?£c9?¤oÒ?¢ùþ? ÖÑ?¡Œø?¡C•?žß?œ[[?˜æ¼?•Ö?˜·?þÉ?Hn?—ʉ?’,S?“» ?ž–ô?¥t­?§%)?¨jç?¨ÄZ?§ÎÛ?¥û?¢Üæ?Ÿ6²?Db?˜¾?–m‰?šº?•uÓ?‘²q?…º6?s˜"?uÿQ?ϲ?ˆŠJ?¾¬?”¢±?—”´?š?Í?˜˜n?•ku?™ _?œxÓ?›4r?—Ý?”Й?”ÊQ?–ÎÔ?œÏu?žå‚?ŸAó? 0î?œ‰2?œMX?Ÿ+,?œ].?™–õ?ž ã?£.?¢ C?¢ìá?¦:ª?¡ñ??š…Õ?—yŒ?•$(?—6ø?›2Ô?˜•F?•j˜?“¡-?§0?’få?˜(a?™a|?‡²\?YŠ¹?sÁn?•D?žè|?œßb?šA?•ÉÑ?ŽÜ -??™·µ?Ÿw?œ/I?—¾N?›¾ø?Ÿù ?žn¿? ;j?¤ô?£àg?š÷?­?”-?œg0?›?™ös? ¸€?¤=5? É‡?šÄ÷?–¾—?“mž?–c?ŸZì? C? S5?¤q?¤b-?¤a1?¥­Ó?£° ?›Ëg?–¡¾?œA?ŸPå?@d?›TA?˜ÖÌ?˜Ü?ž“…?¢›©?¡¯¯?¡&õ?¡¡Ó? È?ŸÁ?  -?Ÿ_Û?ŸŽ?œß¥?›bç?œšø?V?œæ÷?žª?O¾?šÐ?–AÔ?–ñ¨?–ÿ[?˜v×?žÿ?¤K?¤¯K?£˜? ™F?–kñ?‘,É?–ñ]?™ß?›¸l?žM?A!?› ?œmâ?žë?Ÿj¸?ž‹|?šº¾?™Ä?œ*n? ”m?¡ŽG?ž\#?œïG?žf–?žÞ¶?m?œ¦D?œ}¹?—€á?q,?3^?’a†?˜­?™Í4?šb¨?™j7?˜6ú?š2 -?œ:‘?œ“a?šó«?š°7?,?›a?¦£å?¦5Ò?£þ†?¡ÿ?ž|4?__?P§? -?¤]n?¡®?™ 0?˜¯ò? ¡U?¢|?¤Ð?¨ï†?¨î‡?§?£Þ÷?¤ *?¥_?¨Tô?¤z{?›‘­?™3?ž’?£H¶?¡Ýb?î?(?žù?£œµ?¦bB?¦Œ?¤ä.?¢aÑ?¥& ?¦w/?§Å¥?¥»? -I?£p“?¥#X? ¬Q?–¶[?Œîì?•¬? Ìú?¥Ôú?§§á?¦øú?¡Ñ6?÷Ì?¢¦ã?¦/u?¥Õ?¤Ès?£\“?žÉõ? TQ?£r“? ·ú?¡b?¢f¬?£›?¤Ô?¦†‚?¡~ß?–bD?œ?§N?©!N?£îà?ž/¡? ¶ ?£W#?¥M?§æ?§½g?§J?©ma?¥KJ?žjý?¨?²i}?±‘_?­l?¯»¢?´’È?²ón?© r?›AÅ?•ñ?œ`? vu?šô_?˜5?™:?˜R?“t?‘ö??—}q? ÏŸ?¤HÈ?¤Ö"?¤÷ç?¦DÑ?¨¶?©ì?£H–?—¶Â?”p(?Œš?Œ‡?þ¾?”X‚?“¡?’§Â?“ÅÓ?–´R?—¼?’ ?‘Ud?—ð%?— ?•ÛD?Ab?Ž©á?–0?šƒ?›þP?›}]?™ä(?˜M?—§?Ž0.?‡éw?‰ˆ?í?_Û?Šùê?#>?ÄÂ?‹¶¤?Œ8?“•=?•"ý?”…?ÙÚ?ˆR?‰H{?ý™?“#u?f÷?”d_?˜Á?”£ê?•Å?–‰¶? S?”#ù?šá?˜tÒ?šâÚ?ž÷X?›Ä?— ?™°‡?•†^?)?–‘É?ž?—UØ?ˆÆÛ?†iM?’Ã?˜}X?™Ñ?›ú¥?˜Ù[?™ç®?˜?>?˜‘ê?ŸÙž?™,Þ?Œl:?‘U{?:÷?›Ã¥?–´ü?˜úF? &“?¢’µ?ž*É?š€ª?'‰?¥_i?£@2?žÏñ?¥t?§cé?¦~J?¡ +?œ4z?Ÿ5U?¡•Ô?¤Ó7?žž?Op?§bp?¨R;?Ÿš?šZú?›{$? Fù?¥™$? cX?•äc?˜÷? ÷?¡aß?¥ö ?¨†9?¤‘h?¡©A?¤ÒÊ?©‚]?§å?¢ªŠ?Ÿ}?"h?¸I?¢Ý?¢A?›I)?•‹M?•Uà? éî?ª‰˜?¨þ,? ìx?¢°?¤ü‡?¦T?£ƒ¶?œ¦?ŸØ>?¡$?£Wh?¦³í?¢¯¬? 8ð?¢[¯?¦‘¤?§ Ï? ±?›w{?¤y„?¦(|?¢t?¢œä?§dê?«µx?ªFx?«jc?¯ÎD?©ËJ?¡ÊÄ?¨VÜ?¬lf?©0Ê?¤¹ ?£º?š±"?“ù5?¡£h?©?œgÌ?˜ƒÞ?¢rB?¨µU?«G›?­(Œ?±K=?±4A?°E¢?±fJ?´s*?±$+?©} ?§Ëx?¤EÕ?¤¢Ÿ? Žò?Ÿ”?¥ ,?ªC·?®H¤?¬¤Ô?¥<:?¡^Ð?«„?²§u?°W?­µÜ?§º?§~?©Ò¸?¢ú>? =n?¡Çç?§ó?¦æ?ŸÖ?¥¨?°PE?²ƒš?«Èf?¤Õ“?©bÁ?±¡?°âŽ?­9à?¤›/?¦€?¬=.?©Ä=?ªB?®™ë?°j'?°ð¬?±£Å?¯W?­>z?®îž?§3g? ° ?²³”?´J?³½?°Y©?°^¦?± r?©Ñ7?­©¡?³—•?´ž7?¶{&?·–†?´.Æ?­y?®yõ?²L9?µ›²?´7R?¯þà?¯Úq?­¾m?¥ù?£ª?§Iæ?«¯á?°³Ò?±?¯ì…?±G°?¯Å;?«¨8?­î?¬³ß?ª»Î?¤#û?›í"?žè?¨z‚?­¼˜?°ä?±êA?°È?¯Ó?±¿ª?°É?­—A?«’$?­Z„?®g³?®iÏ?°Hä?±‚.?°¯Þ?¬b?¬d0?¯ 1?®ºæ?ªý2?¥?©Šf?®éý?¯ãç?­PV?ª=?© -?¬fÝ?°D'?°¶|?­;?«Jl?«:Á?®˜Ó?²Ø?±ÙS?±W*?®c?­Üâ?°¿?°»ò?®Œ€?­ï#?«Z?¥»v?¤…¯?¡Öž?§Ìá?ª?©Š.?¬SÅ?­,§?®`ª?«ð?¦¶m?¥ö7?§µ½?©À?ªÄ¹?­ãu?­H?«Ïø?­©?¯±%?¨Vt?ª{Ö?ª— ?£é«?¡´‘?©Î?¬¤“?¨äº?¡yc?¦œq?­yº?¨T“?¡% ?¡îÞ?¢þâ?¡¯f?¦²k?¦ˆÖ?ªRó?©-ì?©²õ?ª<¹?ª³e?®°l?¬û"?¬›Ž?¬:Ê?ª5x?¤2ú?—î?’ãß? ¤k?«¯ ?­›?­#?¯Òa?®àæ?ª±£?¨@?£~?Î?›Â?¤-ã?§üb?¨T?©b?ªÕ§?ª6?¨‚€?§|?¨ÍØ?¥Š”?œ£Õ?š+3?žo~?ŸÒ ? Éÿ?¨ƒ)?¦j? ¥ï?£Ð ?¢’¬?¨½Y?¥Vç?œ¼‘?–§$?›‹?Ÿg?žº?¡‹?¤ÇÜ?¡l¢?ŸÚ]?¡Ç.? »@?£D?¢ ?œãk?›¬²?£L×?¤´?§<?¦Øs?¡)-?¤5ñ?£µ(? ÝD?¦|F?§×º?¥Þ'?§3µ?¤0X?£R?¤{c?¦ô£?£rØ?¢¼?¦ S?¥ÅP?©Š -?¬jG?¤“?œ&?¥Ù?§•“?¦ýf?¨­D?©f…?¦J?¦b?©95?¦=?£oÙ?Ÿ§P?ž.Ù?ž¯d? }?­ `?«[?ž-?›;t?¤D?¢«?¡`C?›Q?—»?ŸI?£Ó7?§¿3?£–Í?¥a]?ªZ?¨uv?‹…? [?¨Öb?­´8?ªÐÑ?§E?¡gÙ?¦o>?«Gª?§¾?¥”G?¤E6?¥ò3?¬=*?©8?§€?©–?£Ü•?¢ Ð?¢4Ê?§Ÿ'?¯Þ‚?®œ~?ªo?©ÈJ?©ÃN?¬ÜÍ?«W·?¦íä?¦B6?©h9?­†"?¬Y??¨N?ª]—?ª¬E?§¡s?©j?©O?¥áJ?¥ ?£DÚ?¨¤?§éz?¢ ?™SÁ?˜–Õ?œõA?žU°?¥-Œ?¨¹?ªhç?¦ ?¢ C?£Ï?Ÿãù?•ûº? år? ×Ù?šê?ºë?£Ü?ŸHV?£ó?£±ƒ?¡ó??ž°?™êâ?žaÐ?£Zé? Ò·?¤ã?¤/n?¤~$?¡“3?–ˆ?˜Rx?§ë?¦œd?£%?¥û=?¦½µ?Vb?Ÿž?¡??Bô?šTò?–Ók?ªR?ž¨N?©z?¨ÓÁ?  ó?¢e?¨ î?¤?§[Z?¨öp?©”?§bç?›åÁ?œÈŠ?¤+? T?¤P"?¦W?žèy?”–?–ÎÒ?©R+?¬9¬?¢¶×?Šlj?•úÿ?œý1? ÓÛ?¦ -×?¤» ? °õ?¡ya?Ÿª?¦TÎ?¥Óê?Ÿó?¢¯ž?©sÇ?¬h ?¤÷'?›?×?”.¯?¥9?£ñ­?©$‡?©H?¦èl?¤ã:?¡%?£ée?¨iR?§\??©8!?¨„ª?¡ü?Ž¹X?U–?k%?—rÿ?ŸƒÄ?¤1å?©¹2?ª¶ ?¥¡š?šœ½?’4A?˜´³?š¯¾?¤4?¤Ø?¢›?Ÿ|ê?¢º? 3`? ?#É?‘õ ?xbd?/ü©?¦¢?LGF?„‡s?U,?—ÏÎ?¡–µ?¡ì¶?Ÿ»á?¤g_?£~Ÿ?£6?¤J ?£ãK?£¯ä?¢½½?£ì?¡eÌ?¡£?¥Â_?¦V¥?Ÿ§?¡7?¦x¤?¦ÙL?¦sã?¦e?¨d¦?¨“¿?£Í»?¥ÆØ?©€h?¨¡_?¨Ð?¨†Ç?¤ÿ?œY?¡Õ8?¦4û?¦§:?¦’?¡@Œ?¤<Ú?ª;ú?ª…?£úñ?¡}ü?žÆ)?¥<ã?˜~ë?ŒŸ ?œ´.?£XU?¨ÒÔ?¦×e?Ÿò?¢U«?¤ÌÔ?©™ª?¨Ö]?¤÷k?¢4T?¡H6?¨'Ü?§ñ3?¦×@?ª#?ª9-?¨Š(?§j?¤D ?§†'?¦®ž?Ÿeà?¥ç?¨E?¤·Ø?©ñ?ª>0?¦–É?¨+R?¦¥}?ª] ?©6?£e’?ªR?©)ä?£lL?¡Rê?£—0?¨›p?¢é½?Ÿb?©õ?©o¹?¦ƒÓ?«‡ ?ª“R?«y†?­"?§èW?¦¤?¥rê?¨x?©ÐB?©õ?§œ? Ú?Š#æ?‘͉?¦Àå?«þ?ªÂ?ª¢P?§£"?¤¡d? ø-?–Ü?£a¢?¨¿©?ªÏ9?ª®?¦‡L?¢:.?œ[D?£È£?¨|?ªV¾?©#¢?ªÝf?¬a¿?­®?¬µ?¬­—?ª¹?¥kÀ?¡àÐ?£«»?+U?¡„ã?¨µ`?¨N}?¤?V? l?¡Š±?§³þ?¦ä×?¦È?¨ë0?§=¬?£Q#?¦Ì9?§YÀ?¦Mƒ?§ž?¨óÇ?¨@¿?©°?§"?¤Ç?¥0¿?¦-\?¥Þ£?¢=a?ži3?£é?¡o@?¡ b? ÷c?ŸÇ&?žEW?¥’u?©9½?¨"ß?¤Sµ?´?˜|ü?—Rº? ë?¦Û?¨¨b?§…t?©]|?§¸E?§‹?§lÇ?¢–¦?  D?¢Æ?£¶?¢?šp?Ÿ`(?¦)?©&I?¥ÐM?¥‚¿?£ŠÇ?¡ïÅ?¤??£±½?£q?™¬›?ž@?¨M?¨¥?£ÆM?—,?” _?š!f?šÑi?¼Y?ŸÐ|?šŽ?›†ô?œªu?Ü? Ûg?£å?¥9S?žù?žòt?¦'o?¨ -¨?¦ºÌ?£Ik?¤ð?¤{Í?¥?¥‚è?¥wÙ?¤du?¡æµ?¤%?§’?§¢û?¥dÔ?¥f"?¦®¦?¦3?£‡ú?ž; ?£ÍY? U?šÕ$?èû?f ?¡tX?¤Û²?¤åÔ?Ÿ®¬?¡¡?£À°?ž8?š¶¯?t÷?Ÿ^?Ÿ»?ž½×?•d—?™ã?¢Ï£?£Ïj?¥:`?¥ð¤?¥¥ä?¤äÚ?¤ôX?£Äc?Ÿk·?‘EO?“Õ²?”­?‡t?™mÒ?žç¶?2ì?šK‘?šŸ’?œU³?œ–î?˜2(?˜µƒ?Žr(?‹7¨?ˆí†?‹©´?•#(?—ßÔ?—~/?˜T ?œ@¤?™?’Åj?”v}?”Ã?˜ •?’…ò?’1?‘õ£?‘6ï?“íæ?¿Û?‰8?’KG?˜(?“•·?‘gn?Ÿ)â?™æÂ?’`„?ž‘E?—ãj?“®¯?šK?˜X;?–bí?’7?“`g?—EA?úÔ?’ ä?™í?š?è?’ö¥?¬@?‘éï?˜¦d?“ç?›ŸÌ?œå+?—á§?—çD?¥‹?—§Y?‘Ì?˜R­?ž\è?›c?’.ä?@?“§}?—¨?‘ -H?– }?œcr?žòÈ?F9?—Ú?›Û­?› :?š»?š÷@?–§9?›)†?›rÊ?™1±?›oN?˜ó‚?ŸÅÝ?žå™?—¯x?Çû?šÌÅ?°#?Cõ?•Ðq?™æM?•ÿß?—òø?œ¦®?”?”ãË?Š’?“=2?•Æ0?’ù½?”²Ð?•&Ì?’Ê?ÕS?’W;?“ò?”¾[?’ð÷?ãe?…ÊO?“…ý?˜·5?šJs?™[?’›ò?ŠU¾?‘Í?”.l?–öC?™Žª?˜iä?’ø-?Œ'd??™Ëª?›`O?š"?’«ì?¢[?”‘ñ?–>?˜—ê?Ž?‹N!?•œÞ?“´­?‘@#?–œ?•±a?d?Œs?Œ_;?—8h?›ßE?˜k?˜[Ã?˜[J?–…d?‘ãw?“†?–½•?ŠÎN?·h?š“Ù?œÀU?—úx?‘'X?ƒÓk?Š:Ò?†[ˆ?‘ß?—7Ý?˜q‹?—x^?•h ?–3´?™>½?˜Í?–‡å?˜ ?™À?˜ï?˜®?šŠ.?•Ss?”º¸?”Ÿ?˜‹§?–®h?G1?”§ ?›„?šY­?™à´?™Œ?™­I?—¡¶?–fY?š,ž?›+?›ä?˜‰b?’má?—*ç?š‰Ä?›QA?˜H±?–¤?šà‘?›»à?–G©?˜b®?›BÏ?–ž5?‘´B?—#?›JÇ?–pD?‘?Ý&?‘%m?ŽÞh?‘Ïï?’-½?‹•!?‹–9?‘¬1?— Æ?’,Ù?ŠŸ1?‘!?¶?ˆY?‘,§?•uE?™‡!?•Bÿ?‘V³?‘šÔ?“ì>? ƒ?”½?–bx?”4?–PN?•sŽ?•km?•¢2?–œd?”®§?“†?’f??“Öd?–.ì?•‹º?“T?’dÅ?“*µ?–W~?”ž^?’T7?Šô?“v'?‘×?’YJ?”^È?o–?Ç–?–UÔ?™|þ?—ðä?” ¢?–t?—o´?•ü?”ÝÄ?’a]?cË?.?”Os?—„?™”‘?•õ[?d?áÝ?•X?‡v?ˆCº?Œ³˜?“"Ò?‘³¬?”åæ?–Š'?–½U?–À¢?”Áª?‘Ö’?|Š?ty?49?’·ø?•FÐ?•zÒ?— »?˜Âx?› £?™:K?’Y?ý?–{Ð?“t$?±f?‘t³?”Ùõ?“$7?•p‘?—H?–wl?—£´?˜Dl?”Ò?‘óó?•®Ü?–`Ì?‘6[?Œ°t?“d-?—?”ç?Œþ¦?‘Ä:?—ÓÏ?”û?’ÏX?‘H?…¾?‘“T?•#¬?˜æÅ?•Éú?• ?”å?‘µ?“2›?–?ãÅ?ŒÒ2?‘ý?”Íl?“hÝ?‘¥È?”_?”H¿?•¨??•?ý?‹°0?“¢(?—·K?–ò?•Z5?—à]?“xÍ?“¸ä?–‰¨?—ê?—A¬?”°„?”Õþ?–NW?”v@?–B?—VZ?‘Ï`?‘2¢?‘ì?o]?“þ¶?•~’?“Uv?“ÿP?–äo?•U…?’úÛ?”*?”+ã?Cç?“oß?—6Ó?”u®?óò?‘n{?“ú‚?”ä…?“º¨?•©_?•l?”àƒ?”™?•#º?’V'?‘`R?‹{=?Šõ?Ž%Ò?“Þ?‘É? á?Šÿô?‰=N?vä?‘ÃT?“hI?“‹þ?’sV?•F_?–rR?•=î?“~#?”O*?[w?aQ?•B[?Žù?Š¨å?“Q6?•£D?”Ù?é?‹?‘äj?’íq?“–?®Ã?‘ c?Žd"?¡¹?³?’‰»?“G?“ýÚ?”'è?“g\?ç^?…cl?‡éÿ?ÀÇ?”m?‘4E?z?Ž -?“Z;?“²’?^Ó?\??“ëº?“ºÉ?“ Ý?“%¦?“€Æ?“»'?­8?¸d?‘‡b?’ÿ?‘&ž?„ -?¹?ˆ^é?Æó? ”?s?©G?i7?‹_}?’Ak? o?,[?Žˆ?ŠKÒ?Û?ŽHý?‘E?‘àt?‘ª}?Š7?~®?$™?’B?í˜?8?‘]·?’O?ˆÓ×?€r:?‹‹>?‡Ò|?‹Ø?uº?’Z?0c?ª?€À?‰-?‹M”?Œ¸??‘* ?‘/,?‘Gø?w?@?‘oj?ŠX?2z?Žº§?†¢3?†wi?ˆ[]?Ž:?ŽJÔ?ŽZ%?N?ŽñÙ?‹VK?Žóñ?¼,?‰ýÎ?…ð?ÞZ?‹ó?„Q?y&H?‹·&?…™W?†ÚÆ?Žãž?Ž?Ž‹?yU?Qâ?Œâ®?Œ+?Œk6?u4?7?®?BÖ?_F?ŠtE?Æ ?ƒs ?‚Ö?†éõ?Š±…?Šê&?…pÄ?‚Ü?ˆh?‹2ä?‰9i?ŠmW?†ßj?Œ¢À?Žò_?Œ:?‰ ¬?Œp?ŒØ?†¿®?ŠŸ‰?Œ‰¹?ˆ?ˆE’?v]?|Zn?„_¼?‡&õ?†-5?…Îê?† £?†O}?‡–}?†ÙK?„bx?†W?†ö?ˆ×„?€¬V?jÃ7?h â?{ú–?m$?}Áö?€A˜?o¦Y?}€¿?q¬?<È?ƒ,?~Çà?xNB?qtà?Èß?z„-?vA?€?€1?wr_?v\8?¹?y  -?xKõ?…n¾?‚(+?w«?ƒë¶?ƒj¿?vtk?€©?ƒ-õ?~K?€TŒ?‡\³?†Þ¥?|t?wíF?„k ?†gr?‚F ?x×P?~ÀH?„m?‡~ú?}±?{A0?‡PR?…V¼?:†?v"%?…? ?…E?ƒÝ:?ð[?p:?„.ƒ?‚_Ê?„˜>?„!]?‚Š ?n#?~;• ;˜cK; ð‹;—ë_;†‰ð;pž;^¤i;MðÜ;BvR;R_ç;†å;³¯ý;á7„<“ý<f5<¡Ÿ;órõ;âE;Ó¸»;ÆÐ;ÀÂÝ;Ë+Š;âËŒ;õo;ôÛ;ã#;É4k;¬íè;‘/¬;w};js;ƒÐ>;©g¤;Ý4­<µ½<¥¼< -™e;ýP;ç‡^;Òò³;·1;”`Ú;i;?ƒŽ;4vN;Jô·;{‰Š;˜€@;«Å;´E;ºÚ;¾"ó;µi ;—Æ;^CÕ;!€*;;YÓá;¬×Ï;ý°mëÍ<בè<˼Ü<¼ØÒ<¯Ôk<¡¢á<‘¨<ÄSs<«Ô<ŸT™Ï=J›=Oñ,=KÃ==ü¯<ö(o<ßœ˜<ë—þ=¡˜=/¦†=F¤½=OmÕ=KHP=:¡Í=Óó= H<ÏÈV<¨|<”Üá<¡˜<Ó,ô= ÙÜ=/IS=HAú=\Ò“=l=kFl=UÞ =<U=7új=SsJ=€Ââ=”['=˜M=ˆÖC=YB=³–<çP§<Äî<Än<ÚH5=D=Fá=‡*=q©= ¸=ª=7§2=[¦l=rd·=é=‰¿p=šæ=ª>ò=ª¼=šQ=† ò=sZÞ=mt‰=iéO=Z)#=C„Œ=6ö=2±Ì=)¬t=Çó=Ò<ýR¥=Ì©=;Š=`y®=qˆÓ=iK0=P^´=4¡=ù9=ß"=Ä<èÁª<˼Ø<È|¢<ã€q= -[=&Zô=?$=Qb=]†·=es»=hh¥=j¢=s-²=€Î¨=‡\K=‹Û:=^R=’´å=—0¶=œS=žæ=™D=‘²|=È’=•Ú=”ÑÊ=˜fì=–¿w=Û…=…Ö=z<\=sÐ=v-r=xµ±=våõ=q²=j»e=k³=y4%=†¯ñ=”Ð=Uý=†ý•=€(%=}µ=‚Ât=‡|Y=ŠÚ¹=ŠF¸=€Š¹=[0¬=5Ù0=$à =(žˆ=0ƒ•=, =ì= ¼F= -äÏ=L=&$u=2Ÿ°=5¢’=/—˜=%p=?Õ=e/<æ·<ÏsI<ÇUÞ<ÌZî<å== ¸= N="/?=ôð= - C= -ÉS=q¶="y =0=?v"=K‘=F¿]=/ÃN=ÝÊ=…b="7$=F+a=g.ˆ=|®5=‡ê=c®=•Dr=ús=×&=c´d=HÃ=-ø„=Á='=ˆ#=.¼Ñ=.à€=#õe=BÈ=*o-=?HÒ=RV=b$û=wOY=‡Ê=å=‰=sô_=J®Ð=/´y=6@F=[Œý=†.j=™AŸ=Ÿø=ž$=Ÿ=L=¨öí=´e=·è†=²¦d=¥pó=Â…=l´¤=Kº‡=Iù==Xû=_Åà=^÷¸=dý=|ç=ŽÜT=ž¼v=©Äp=­¯/=¨Ü=œ´Û=‘=‡º^=„yÏ=n=zPé=n|=^!(=T¥=]S =uq -=‡m¥=n=í?=æÊ=”Ê!=ž‡a=©´=±£•=¶­$=»5b=¾:ö=½ =¸Y—=²J.=«Né=¦xD=©É =´Ô¼=¾=¾d£=µø=§´ý=™²¹=”by=› <=¨Ë¹=´_u=·ß¨=µýÔ=³|=° ,=ªøÍ=¤´r=›É˜=‘°­=Â=˜HM=¡œ‘=£‹U= Mõ=™•A=ù=}‹«=bJe=ZƒX=o»±=Œì°=¤`=´¹Ù=µÅ(=ªCØ=žêû=œì®=£¾ =®rr=¹ò=ÅbZ=ÎS¼=Ð==Éc™=½^=¬ ‘=”ú=uÎÜ=PÉ=K<¤=Z5=b£=^\™=b$Ú=€º!=›¦=³‚=Áz:=Æa=Äæ­=½ªî=¯z=œj¤=…ÜJ=X÷='Ÿ = Y£=6='A‡=IãY=p·¯=ˆy=zE=È=å=tÆù=uõn=výu=lÏ“=[)E=CΘ=)ÿ= = -t‡= l=.c=#›÷=DG=e6k=zÚô=€øC=|bS=l(=V(d=@Âå=/}`=&¤=", =O(=‡ï=!RÜ=G"=o =ƒbÁ=‹µ0=™!Û=§z=©“9=™Òû=€ŸÀ=\M¸=Yò^=rÛn=‡ô=X#=ŒvÒ=„×f=‚›2=†;=…°á=þt=‡¬k=›'l=°uî=¼][=À¹K=ÄÍ=ÆC¬=ÂÉF=ºž=´ð=²g7=³Jœ=µ¼J=¼ =Äîp=Ë"·=ÍÓ=ÏbÒ=Ð~ =΢,=Âþ=«µ=‘4=€¬=x]=}»=†¬=‘k™=˜æE=—_2=ŽÒ`=‡ùe=ˆÔ=ŠËJ=„˜ú=o0=d4N=}½`=—š’=®¯=»CP=À¾"=Á½v=½P=±H=¢PA=œÍÁ=¤“b=°«n=¶|R=³Z;=©‘³=œ¡=a›=† =~Ø =~Ix=€Y&=t*$=Vï=:ˆ"=2Í<=?D@=IÞ&=BÁ†=2ËÆ=-‚=8Ù£=Nýá=g)&=¯=ŠÛ=Œp|=ƒ­‹=kÄÅ=Züy=b --=o³=ú¶=™žŠ=•Ë=ˆ_à=uÞ,=e|=mƸ=‡ƒ‡=™ñ=¥Ý`=«òÀ=¯‰=° µ=­H=£¸=•.€=Œ=g®=ç¹=ª“í=¯l=§&Ì=•yW=†ø=}5=nu=VÄz=L‡x=d=ˆÏ$=š¦=žŠ=™X@=˜, -=Ÿ€Ø=ªiØ=³•=¹”—=º[=³0M=£9=‘ª›=Šž=¡f=•A+=“¼=ŠZˆ=‚Ù2=ˆjá=›Îp=¬( =®¡=ª ‡=¬˜=«þ=šFè=€zú=g M=x¤Þ=Ž1ß=œÛ=¨Yl=·*=Äe]=Æ¥©=¼æI=¯ÉH=©z¬=«êD=¬ã‡=¥ý¤=Ÿn›=£ÆY=°è¥=ºMŸ=¼®²=¾Ýþ=½ëÓ=³ -T=¦Ù{=¨ËX=ºê=Ͷ=ØuQ=Ø=ÑíA=Ì4w=É -A=Çuœ=ÄÀ^=Àt=¼ -ß=·Á=«!þ=™Óú=‹í·=†<Ý=‡ ~=‹ÕŸ=.T=9¤=‡›Q=sÖ®=R ?=3Pû=å›<ýKë<àºm<Ý‹ñ<è<<îWW<ô¤¼=‡r=!„®=A˜À=^‚m=qK =xfÓ=uÌI=hÉ=Y)=`E8=„±«=œ³@=¨Š=ªÞB=±ØÔ=Á¿ =ÐOB=Õ5ž=Ö†=ÞH4=æ×ñ=àý˜=̃$=¸=­Çö=¥«E=•nŸ=yZp=QÚX=H@ý=P2œ=Q=B=&Ü›= =ý=a“=­=¹=)î=Km§=sƒ= ù=¦n»=¼Ùù=ÎXQ=Ûà=å¨,=ð×=÷ÒË=÷`=ñûÇ=ö‡>lÚ> þR>·î>"®>Ô¢>Å> °¾> 4">±†> [>"þ¶>$¶> D>ç?>Éò>Æ ->Ðv>E1>+»¥>8ƒ>@j>@¿Ê>7¯o>)ª8>##˜>(&æ>/0U>1®š>3ª¢>7Ĭ>:à2>=”@>CQ>KM?>U*!>\ca>\*>VÓí>RˆG>M½¶>Feô>?àé>:cŒ>3>/´:>9ÏL>LÚ¹>]èÁ>g_%>`8>C˜>!Lj> W²>¬‘>&Ã>v|>4Œ#>XGÁ>s¿>}>xŠP>l“¢>aHx>ZEÒ>R¾>?S>#´z>Lú>Vp>1©Ú>O s>d~>qbÓ>xKe>z?Ì>u9Ä>iŽ¿>_^>[ÓØ>XA4>R(Ý>Qã6>Z´7>d6>`±­>J+–>0q†>-Ÿ¾>CÊ>Zï÷>e¾Ë>m±>wk#>uÔ>`e>N.>UŽR>jÂ>mû>Wo‰>6íM>#ô¹>+ùŽ>KyÔ>q“p>„±±>…¶>->>„ Ý>‡!ô>‹Ër>v>‹í5>âo>nxÐ>^ó³>XU¹>Yó>Wº.>H{Ž>6õÃ>/þê>/Ù>)†>°W>³ó>j–>%°ï>6{­>HQd>[°>iF >j÷ƒ>bÂ^>T.J>D->:M><ëÜ>I+(>R¸›>Sˆ>Qêb>P»—>L">H²Z>MQ>ShŸ>V[›>[¬ ->kŒP>ÀØ>‰N>†^Ô>x@>cŠL>V€Â>N >FF±>@©¶>B¬¶>MZI>]Ã>lôo>uÞ;>{×>|¦Å>y? >n˜>TBo>2kÉ>%À>:Jš>^M>xšF>R¿>€1i>wØ&>p`>meÚ>mÔ×>tÇ®>€Eà>„É'>ˆÞo>-Ç>—ï|>šuÙ>™ >™êÝ>žŸ¹> ú²>™²;>Y¼>†7>ƒÆ >¤>€„ >ƒÝ5>ƒ´þ>qé]>TÊË>H‚>Qš•>e #>wòÙ>‚>Š2E>•Í >œ‘Æ>™ü>’;¼>‘·>—Ë>¶§>œ(¿>”Dæ>Ÿ¶>’^f>¦e>‰äè>åà>›àù>¤k}> e‡>–†¦>ŒÁ>€É®>m ¸>aL£>^$>`@>iÌ›>w±[>€aÉ>„iþ>ø>™Þ«>¥;ª>¨¼×>¥Ÿí>¢‚}> ã>™qj><(>€2F>x¦>„̈>9D>“Ó¼>“ã>Œäý>tŠ>YŒª>.ó>HÇ=¼ub=|6=šÍú=ÖL>øÔ>?vš>\ëÐ>fŠY>hë—>q){>}ŽÇ>…ÜÆ>Ž"">””±>•ßC>”•ß>—|©>¢¡ >´’ú>ÄÕ†>Æôœ>º^4>­,œ>¨WA>£Ñ“>•Œ>…½>x°>i>ToÆ>V§»>{L†>‘rÂ>—E|>ÏY>‰=Ÿ>‰>”š§>¦Bê>¸­F>Å >ÈÏP>à 2>¸—f>¬ÒÌ>SÍ>†„ð>b±e>S9–>S´>SÕz>h¿>Œ>¦Þã>·GS>¶á>¬$ >£·>ŸÍ½>¡‰[>£c(>ŸÇ²>—éê>ŒC>t\d>Kóõ>;–¬>VŸË>†{¸>›?.>¢Y8>§D°>¬ËÇ>©6Æ>—”q>—¼>okÆ>y1»>‡(>’N">˜¤>ˆ‘>{¤>\ã >W׉>tqº>–eÈ>´d:>Ãé´>¾šè>²JŸ>¸0}>Ó<'>è³:>éÝG>à½>ÖÀ¢>Ï(?>Í-/>È Ï>µYS>˜ýû>“Î>¥)»>̳º>ây5>á >ß4t>æ_H>ñµ>ü[¤?.ú>öSU>ÕnŸ>¶äo>¨‚>¤ Ù>­ñ>î÷>Õ¡{>Ú•Ï>Ûøq>Ý>´>àÛ>îàª>ü`n>ðp@>Î8P>¶²;>ºQý>Ë×å>ÝÎg>îˆV>øÀp>ò|ƒ>á}î>ØR>ÝZ>ë¦>øA2?Œb? E?zz>ï¬R>ßo“>ßX>éD>îÛï>ê:F>Û£>ȸá>ÀP½>Î\;>éo>÷rÐ>ïK>à?{>Ï2>±0>Œ“ß>~5Ð>˜*>À–ô>׫Œ>Ø(>Ï>ÊVª>Ò8ì>ß:ª>á',>×½Q>Ú<>òj'?ªë?|³>ò:Ñ>â‘9>å,(>é'Ú>ÏÙˆ>¥ù¥>’t³>˜¯Ý>¢ ½>°^ˆ>Ђ>óÍ;?qÿ?d ->óÝ&>ÖœÚ>È Ä>Ö„á>óWn?û]?â>ûzô>æÛ>Þï$>ç"U>ïƒÇ>ìFä>å±ï>åí>çY®>å.ã>î3*>ÿ¡>üñf>ßèt>Ã|­>Ä >⌣?Ý?QV? üI?N¥>æ_Ø>ß«£>ð€~?M?†?|?˧? Ñ8?lý?_Æ?Ÿ>ûçw>æ:N>Ú•ô>ÞP>äRá>á>ÕE>>Ç·$>º>Ó¡:>ï i>÷mþ>îÕƒ>êvö>ë¢Z>ë?>ì„«>ñ¥e>û÷¥?Í? ‰*? ³v?È-?”4??™?ûù?\;>úÆs>úˆ? 5ô>ò#„>óp?~]?‰g?¥9?D?`Š?'ÿþ?2?.)9?!ð?c? -?*>?é"?{?¼?½?fY?û?ÃZ?…»?‹Þ?A?&H3?'p?ÄüùË>ên>ëš>øÌY?U2?«?Ö>>êi_>ÛÓ×>÷4ò? ?%¿? sS?Òã?1?É?»ï?}Ó?ûõ?†8?ÃU?®‘?C?³?#ÿW?!“W?)—â?9Z0?G~‚?I¤Ÿ?>šâ?-¾?'˜ã?3s‡?>öÕ?>Ñ>?<å¢?;‰@?4 ÿ?'Òß?!Ѻ?)ÍP?5¢Ö?4°Ò?'?œÜ?º ?sñ?(2k?'0Æ?^-?$'?ðº?™…?l?©µ? pR?!þo?!õØ? TŸ? ~?"߯?$—?"l˜?Î?"G ?3 ?DÎ?JE+?Fê¬?B")?@TN?D!p?J-?N~y?R·H?QÄ?Hìt?G5?JK„?I?F¤Ž?@¸?4ìÔ?)E¼?!ѳ?J¨? —%?)<?)s$? “€?ÐÝ?0 ?²ð?[n? •ø?³C? v»?.m?ë?û1?V¢? 1?¹c?'ž?c]?!¸g?%P¨?&óÒ?%;|?¥Ò?^¾?%:¾?6µ=?H3·?Q!µ?N¯)?D?:y^?7 -?2žœ?$i?Åí? -®8?…¡? ©?`Ï?­½?Ž%?gÀ?%"4?-OÞ?,Í.?%75?Á/?Ó?Yg?&Ÿ -?,Iß?+ëÛ?(I‚?'a›?+pŽ?-§P?-ãª?1þæ?9G?B}Ï?Jå?J‰c??0?3ë´?4þ?<â??‰•?@žu?BFÕ?Ag?9Z?0þà?-Ý\?1ž?<6Ç?D6?@Õ?42¦?+ÑÅ?.¬?7‰l??Ty?FÐ?I´õ?FPe?@Ê"?Cú?L ½?KW…?;+ƒ?*F¬?&ê?,« ?2e?7Ç?;ð?D…Ù?IûŸ?E»™?CÓP?GÎ×?Fdð?>¿:?;ëe?Aûx?Hˆ?Lqc?R1È?U؇?WW?Z -Ë?ZpQ?VòF?T¨u?W•P?[@?VèÓ?J$ú?<ÔÛ?3?ò?&9©?p? -îõ?m?¯7?-—?Ø“? ¸Ý?c?¹ì?_”?á?ÿ|?'¢?*gé?(’?#st?5?ª"?µ?ù?Ä?û{?!÷"?#A?"¸ž?" ?%?,é?7Sk?D~}?K7#?Gž??…?6rX?2l«?8Ò‡?E%ÿ?Jql??¹j?+3‚?ÂÒ?2N?}?Ö!?æ¥?#h? ¦]?$YN?&È¥?)Õå?1 8?8ïR?Þ!??c?9 Ð?5¤?>x?D{¥?Aø0?C¾|?K2?P„Õ?N/ë?@ 4?:±ï?EŠì?LRù?EÂÊ?@¬+?Dãí?H,|?CX}?=5µ?C‘?QÕï?_°?kÑÛ?s5«?t 9?ký?]з?[OB?]3\?[Y?`¡?oJN?væ¤?oÐ_?dè9?b4.?héˆ?oe?pߥ?vJ?}ŽË?|m¬?l÷5?U,ý?G|?P¥a?fUÂ?n±?h€Š?mKµ?Yß?†h?‰¶Â?‰ë?…¹¹?y‘?kÝÀ?s”1?{gÃ?mé{?[ŽG?]P?lÏ?uí«?}F²?ƒË?„üÖ?†¯`?‰$Q?‹ñ?Ž•‚?‘R -?ŒR?xß?J;?{‘?'>ó(?¯? ¦ñ?kÞ?å? V+? Xé?A? Æö?V?ËÃ?'X>?+_?-T‰?1q?5n?7?3.í?*žº?"É?[e?ùX?Ÿã? ì?,6?1ï ?7N?8LÉ?3§Ï?2ŽÁ?9í?;êÿ?8A?8kä?7Ð!?/©©? /?‡ö?=?E?·S?M?é?LR?•˜? dH? µ~?jh? @?Ú•?Ú®?´_?!59?%[ ?$Œ'? M¬?¼”?¹o?#30?)Y.?+ØÈ?,àŸ?2{?9¯??ľ?Eu6?D¾.?8Q?*g¤?) Ì?'©S?ê·?Éò?Ç1?4ê…?I‡½?V¼|?YòS?Oâ?>NÙ?1x;?.®{?3 -?;~ ?DOÖ?KÝ?O™`?RS?Sc?Wö?ZQJ?QO`?;—!?.Bj?5…Z?=B†??4?DR–?FM×?DDn?Jë ?Q˜ÿ?K×?G3¿?E³ÿ?7¢G?*æë?* Õ?,eö?1 ß?;N€?D°Ä?I¶?K&l?L‹e?No+?Tþ ?[·@?UÿÑ?J|?HÞ?H™??zÕ?=­Å?CáY?FÏ?E€??C-±??Y?:ÇY?:§¬?9»Ú?7éq?:wƒ?@Œ?MÀ¬?Zº?_ȼ?`¸?Z$`?PÔF?H»?<ùÕ?1­_?4j§?9 7?5|°?3Ë™?7OU?Ce?Pï?Vž?Zb!?`DY?^ -¤?T N?MÅÒ?RŽ¦?R`(?G@J?C” ?@Öë?:Ž?;Ù:?C ?Aµd?5 -±?*i?+\?:Âœ?R?eªÄ?mC•?jðà?lÕæ?nw¡?hÓ?[(ä?8À?©o>Èl(>µww>¼fS>¾†Â>µxÈ>¹/è>Ñp>éXÉ>õl >ø(s>ö·>ïÒÍ>ã…<>Øÿ!>è*Y?¢˜?)?Ò? w½?ò‚? &Â?~˜?Ï?ã¶?$æÄ?0J©?2VS?0Y*?+µê?$!¿?Ñ?jw>î}Ó>ìŸ>ë7¥>ñò3? $à?#­Ý?8iÆ??lY?=ÝE?>ÆP?D­?Gr?Iƒ?N ö?G:[?3rn?!qz?98?-tY?K¨v?`³l?fI&?^…?R›R?T©¤?`ÇÛ?gTj?`ÏM?RÐ?I¾þ?Mí?VO4?Xs?Fc¢?+-†?']ß?0—?-¡X?0Î?>ï²?Fcú?Gi?U£?fÔ?k+z?b„Ñ?Vx?GW}?7]‚?,˜g?-Ð?6a?+>?Ý+?(Æè?Jg¥?[Ù%?]“à?^dÙ?iB?tâ?s>¶?j)Y?_yH?[Ÿè?gÏ?zë¢?‚Sj?iÜ?x^â?yMù?}È ?ð£?.‹?s ?YÄÔ?J|?RÿQ?^´Í?d¾J?rK´?‚ž?‡_Ð?ƒŽ?{ è?|¥ì?€vè?|¤?vi&?uw8?yôH?|¹ö?z;æ?uóÑ?tL&?u•õ?t@‘?oÆ¿?o‘b?k1?NTÑ?2I,?=Jí?XùÁ?g÷·?p`à?z›y?|öu?wŸ ?rP§?gS¸?[ß?aË ?mÐå?p!ý?mAç?m›Â?gœ?_Ù9?l8?™©?ˆu†?Œ`÷?ŽK¤?pÍ?Œzä?Š%Á?…2?~Õÿ?{|J?|Á ?zlM?x’õ?wL”?l‘ù?T?—?G†&?^Ñ?~¦½?…bè?„?†Q¸?‹?‰ÐÈ?„Š?~ËX?zJ?{’?|~?xß?láð?_t…?Zwù?bY)?l‹ø?k$·?Ug?¬ ?ƒ1‰?ZÊ?Gd¹?Y ?nÂ?tñ?m%Z?^=k?H×è?F–d?e©K?}5œ?yfð?o£û?iÖ?gÑ=?o¢Î?p~½?oק?pmC?jvu?dÄ?]C©?T»Ã?VÜq?T‹v?[±Z?rt?qX™?\ñÂ?_AU?så?€GÈ?xõo?iĹ?g­?i™9?q, -?v×ê?uuK?všÑ?póÆ?m#S?vÔ??vª?o‚µ?q†?pB?gÉí?câN?r ?|èï?uÄ­?d¥p?W˜Â?UÂl?b'?wŽ0?†Ù?‹?U?‹`­?‹¸;?‹Ú[?ŠE?†üæ?ED?n3?† -6?Š[?ˆxà?…ç¿?…ËÇ?ˆ\©?Šæ½?Œ`y?õÉ?”‹–?“ê?¢l?Ž§P?Œ¬;?”?”?”9?‘e6?Ž%P?‹Ç¿?Š]?ˆŒ?†rC?‡ŠÄ?‡¯b?‡ ?‡O}?‡V8?… ?ƒv»?„‰-?…ÛÑ?‡€°?‡»\?…¨U?†9÷?‡t;?ˆÐ?‰e"?‰Ü"?‰öŠ?‡|Ì?…ÍÀ?„Ê?¥š?y9i?räM?u¥–?z‘°?{4?à?ƒ©{?ƒ~?mÆ?T½;?VÐP?aKò?e:?bç8?d¼U?l»p?r`½?rª±?r¡?wT˜?y°q?nîf?a_?a/¯?c‘1?aÐL?cí°?i~)?f#Š?]çŒ?`Ö^?e_¢?_+s?WÍ­?\—x?hp?oƒ?k®þ?b×7?^gî?]"q?\m/?]ŸR?`›ž?cgÄ?g}ì?k7E?n‘×?t?|‚Ã?‚¡›?…qÒ?…T—?ƒNÑ?zÐ?mÕÉ?tFJ?vÔ­?mbM?l9Í?qÉe?tú?m^/?dáÄ?c¢‘?hoð?u#?~å[?o´?ƒá³?„q¯?ƒ%?|v?€ÛZ?€?põÑ?e‘A?g¥Ç?l£!?nuP?g|M?]A?_Í?j5?sòe?vúY?t°¤?s$‡?uÎ*?|ĺ?€ñJ?‚IŽ?¢?˼?Ft?}ý^?y¯=?w¨±?}}?€ò[?œ‘?{è?Ì­?‡nf?‡ÿ¼?‰(?‹\N?R?”•³?•–·?“lÒ?Ãg?Œ†ç?ˆ“W?‡û?‰ÿB?Œúà?‰“…?…Æ©?‡ùË?Ž¶?ŽÎ-?84?ŽÙü?kc?¤?´X?“Æ•?–#Ò?–ÍÝ?—å?™+á?›GÑ?hn?Û4?›m€?N³?¢!F? ¾ý?›À?›Ó?pÖ? vþ?¤÷Ú?©??¬šv?® ²?®wï?­+Î?­'ë?«)ž?©=?©Û ?¨J?£‹5?¤½{?ª/Ï?©þ§?¤Î?bÑ? 9ê?¬­à?´Ï?·èÞ?·ÜP?µ©"?¶[x?·ìp?¶Ü?¯¼@?©‚¦?¦3n?¨¯D?®º?°Lx?²‘?³ ž?­Mb?«E?¯z¨?µEL?¼ê?¼,ù?¼#ó?À¸ ?¼MZ?­~Ÿ?«Wß?´çà?¹p?¸âÑ?¸ºƒ?¶Å™?º6M?ÊÀ?Æ?ÁÑÖ?ÀÏ?¹U?­L7?«.Ò?¹6î?Âo?½9?¸b+?¾6?ɸg?Ëâ¾?ļD?µò€?¨á?©»ý?¾{î?ȳÇ?Äò6?Êç/?Ô˜¿?ÔX?É©¿?²«d?§í?³ZÌ?ºi°?µ+§?¯{ñ?¤!A?Ž~S?y¦%?b„û?]O•?ik ?sÙ]?{ ù?y?xE?ÃÚ?D-?sõ«?r,"?}¦?„êØ?ˆ¥)?‰ÀÆ?†˜ã?Ü”?n…?]β?Y"ê?R§?Kä?R¨I?],?e ?jà ?jŸÉ?h#Ï?o_­?x¼?zºq?{›k?€T…?€¸«?y¼Þ?q -á?f—O?T V?F5ß?JàÝ?UC•?ZWX?Vlµ?GP?>Ë?BÜ?G ?G,•?B+N?C9{?M"Õ?WÂÓ?\jâ?X•?Mò×?HŠ˜?MK¥?K>T?OØ"?Z#•?cBè?hnÆ?i8?eÇa?e¡é?j>™?el-?SÅR?P™Ë?dh?uH?Zn?n?{Z»?tÔð?oŠ˜?y_Ÿ?¯$?[Ž?v}Ø?q»ö?pÜÓ?phÍ?oI¨?wH]?ª®?„ÀŠ?‰1³?D¨?Ç£?¶r?ˆ«L?…Åe?‚Ö?{5?è±?‰Ô?‹\¥?‹¡«?‹åm?ŠÇe?Ž›:?—ß?šl?–ÓÈ?–O?˜Úµ?™Â?›C…?š?›º¥?›?™šc?š‚¾?™äŠ?b˜? æ&? J§?£2£?§Ù%?¤"?›ü?ŸrE?§1F?«é¶?­È?¦d?œ/?œ&Ç?£¬ü?¨'Š?§‘?¢Ål?¡á?™co?—]u?‘-8?ŠÛF?Œ Š?˜o?‘r_?•‹¤?œ?¤Vs?¨??¨!‡?ª©&?¬ðx?­"?¬5N?¤²?ŸÚ?£×ö?§3É?¤6„? ïã?¢s]?£‡¾?¤RŽ?¢;ö?›—]?œ1j?¥H;?«?¦_E?Ü6?¥Y?¯vR?±À­?¯Nk?¬9?­Q?«Ü4?¢ÝÉ?Ñ#? ¼è?£ÿ¼?¡b?™ÏO?“4g?—¯\?žé|? ~?¢FE?¡@?˜ªÝ?”M¯?›Ýw? Š?¡ ±?£?¢JZ?¥Âš?£¯?›1Ò?’ƒ?”Þ?›íE?šÀ?˜ÏŠ?Ÿž?£H ?¡¸ -?æ?š?—Ío?šS?¢kÔ?£‹F?¢ &?¥Rý?¥.?£9i?£§â?¡àô?›mš?•m?—$?œC¤?žUÃ?¡E?¡¬E?ž^Z?œ’^?žÖà?¡Ã?¤Ý?¥n~?¢R?£·%?¦c¥?¤²X?Oæ?½?‹²y?ýz?“(?“n?”­G?–ì?–‰ˆ?–€ª?š1Ä?›½?Ÿ ?¥)?©GÕ?ªŽË?©§?§¶Š? ‚?™´B?“\Æ?Šú8?ŽÛ?“?“l$?”e‚?–¦î?—ú@?˜xæ?˜ô)?™*)?›,?ŸŽ ?£òÝ?¥ËF?¥•1?¥J¯?¥’c?¦žÈ?¨m*?¨”p?¤…Ù?—´0?ŒÉ?šFZ?™ül?—5·?–xû?™à?—kK?~©?”ïP?¡gP?¥?ý?¥Ø?£›? ú_?že?l?ž* ?¡$ö?¥aw?£`é?›–?™än?¡¢c?¤„9?¦Ô?«B?«Ê?©ö?«w\?«È?ª.ý?¨"p?¦Ž?©âL?¬Ð¤?©óB?©Ž?¬ê´?«!N?¥kJ?£çf?£>v?¥Zj?¨s×?«›¥?¬šØ?©=ö?žþ–?IÀ?¤ŽÊ?¦/U?¤ôÜ?¢¹]?£žµ?¨/?¨yž?©nx?¬ý?©åí?¡ƒ1?Ÿ?¤ßÇ?©Í?¨lI?¤#û?¢r.?£+"?¨E‚?ª»,?ªÕB?©w?¥ú¤?¨´?©\ñ?ª’.?§Öö?¢.?¤ƒÊ?¦O?£Ž?š?µ‚?˜çz?£¡?§ªC?ªt-?©‹½?£Å?žÑ?£=ƒ?¦òß?¥âb?¥‰²?¥Ç7?£àö?¥ùÿ?¨Ù©?§ˆ¦?¨©?©ƒg?¬ ?­ˆ?°Ûä?¬uÅ?¥ Ä?¬ã\?¶Ñ ?¸à9?µÆæ?³oa?¶ß3?¸÷?»Éü?À -?À§#?Á"Ù?Ä&?ÀÁE?¼/P?ǃ?ÑOç?Ó?Ñ@Ñ?Ôi%?رä?Öcÿ?˵S?­S?†Íñ?†Ç?‘íµ?ŠM¨?„Ãå?‡–å?‰àÑ?‹U?3?•_å?Ÿf%?¤1ú?£öA?¤À¥?§p¢?«“?°—K?®?‡§[?€|ÿ?†A?‡‡?‰ƒ ?†Ï$?‹Ps?0¢?ˆ½?‰ZC?Šl?„tœ?‡R…?‹]ã?ˆ¥¡?ŠâM?¿ú?Š¹ ?‡?ˆáû?…bJ?~/&?…©¾?‹ü™?†\?s‡9?qÖæ?ˆ É?‘¢û?”Í!?•Æ²?‘??’¸ä?’H?’ÿ?™"¢?“±}?‡Äi?‹]Ö?•ÔÞ?”ÎÉ?¸?’Ý“?™”?œv¯?™F²?–“4?˜âO? :´?ž†T?šT ?Ÿcò?¡R? ¨?œå?—¥H?š´?œh›?žø?˜ç)?™ý?¢&w?£8“?›\\?–€2?˜ ×???¢M?»M?”‹r?–êÉ?Ÿm?Ÿµß?¤w?¦*1?¡·»?Ÿÿ?¢Z?¦ºv?¤bu?ŸÄ§?›AÈ?™³Ü?š>¬?žDv?–w?—çï?’ˆª?’í?«w?§?¦Pg?Ÿ("? ã?¤Šò?¥Õn?£w?>ó? ðô?¢ ¥?¥"Í?§D ?¢[é? Ï?¢kË?¦FÖ?¦Wc?Ÿæq?š5h?£E*?¥w? ¨E?¡ ?¥¨V?¨îz?§G7?¨× ?¬åy?¦¤”?žõ³?¥C?¨Þþ?¦Þ?¡†G? ??—Â?ž?@Û?¤IK?˜6n?• ?ž‡°?¤£›?¨!ù?ªâ?­Ï?¬«J?«ÃG?¬¼œ?®òÇ?¬G?¥?8?¤ Ç?¡"ž?¡hŸ?±:?›G‡? [+?¤­a?§A»?¦½U?Ÿý4?!y?¦”4?«¾/?©Ð?§+Ž?¢I?¡2¾?¢¾?œÃ?šaê?›;W?¡Ù¡?Ÿ›?™.«?ž+ ?¦¶b?©ÐY?¤B‚?$O?Ÿíá?¦Æ ?§®Ô?¤LÍ?@Ú? ‰?¤G¬?¢MÉ?£aý?¦ì?¨&Š?¨óƒ?©Ø?¥Ê[?¤à]?§œz? Íø?œL -?¥y„?«3D?ª·å?¤mT?¡&?¥]?¥ƒ -?§´v?ªÐ¶?«W³?§¤­?¥8'?©ï?®?j?«³Ì?¥w)?¤„s?£Ë4?žùö?¨å„?¯c?°Æ2?² F?²>?° »?¯ñ¹?¯³t?©¶Ã?­ÿò?³[¬?´µM?¶Ÿþ?·¬?´‚h?®¿s?¯á!?³«î?¶Ê%?µá¶?³>7?±yÎ?µöõ?ºRC?¸z?³ã?¶Zþ?ºö)?¹ÙI?¸%?»Ÿ?»yÔ?¹*$?´‘?´Ž?»9?¹»€?·ÝF?·¥6?¶y-?¸.?µ¶±?µvš?¹“?¶^á?´©Œ?¸DÈ?·0—?´³e?²‡?­‚?¯MÁ?³¾‰?³+#?¯Jµ?±Ä?±%Õ?³´Ò?µ6›?µ¡?²Ñý?²“?²à?°êÙ?±>}?®#‡?±V]?¯iQ?§Gw?¢–Ñ?¡)ý?¦™®?°™?´W)?³‹°?²'­?±ÄV?³Çû?´Eï?³Ò?²l¿?°»æ?±k%?µz?¶G¹?´´?³m?´"?´Œð?±øÈ?ª1á?ª=L?¦æH?¡í?¥Çë?¡ìâ?‘tÞ?Ÿ?þ?­®?¯qi?­˜6?¬?É?¯n?±t7?°€¾?¯N?¯ç-?°h#?±îþ?²¸?±—”?±™û?²+Í?±’Þ?®|?¤¹ê?¥C?°aÖ?²}Ò?±´?°Ã:?­\??¨F?§Pg?¤†)?¬?°»8?±!7?¯-“?§.C?¤Â‚?¨È]?­qw?²KÕ?³r?²I•?³6?±’³?­†â?¯œT?®9µ?«:,?¥-?œ«l?›Ö…?¤\ü?ªŒX?®']?®H?¬3ï?¬Æ6?®D·?­Dö?«&û?©¨ú?«Â¸?¬L¨?¬QÙ?®¨Î?°”•?° ?¬‰c?©Ãs?¨?¨šc?¦Þ€?¢áä?¦“5?«)?¬{‰?«6f?ª(é?©âq?­kù?°äå?±Sh?®â?­ßo?®Æ€?²[è?´º¾?´R8?³â.?°É?­¦?¯4è?°1'?«DØ?¤ÆU?£[;?¡m?£Ê4?¦ÕÒ?¢˜?¤Ùô?©?¦ýq?N ?Ÿî ?§šY?¬h?©üO?¦mÍ? ©­?¥I'?ª¨?¦­?£»¹?¢K.?¤³ž?ª ?§¥†?¦ T?§ra?¢\º? P?Ÿê¯?¦Q°?­˜Ó?¬ §?¨W?§ê•?§¾x?ª - ?¨³Õ?¥fŽ?¤w·?§t?©ýr?¨õ}?¥|?¦ö?¦ð‘?¥$—?¦3i?¤õ5?£Nƒ?£Ü2?¢ŽÊ?¦AÒ?¤ÿb?¡A&?˜¼µ?–'¶?›€,?om?¤D™?§¿Ÿ?©&!?¦ $?£QW?¤Ç?ŸÊ™?–2Æ?¡7F?¢ºú?™é?žø7?¥Óe?£I¬?¥Œ‰?¥?¢QÓ?Ây?š!H?ŸÓZ?¢‡â?Ÿ±?¥¥÷?¦9?¦ ?¡¤È?•@?˜æi?§Æ€?¨J?§Ò?¨?¨#.?¦¸?Ÿé¹?ž©Y?ù?DÚ?—†'?“«8?£ç4?®¬B?«DT?ŸX0?£O?©d†?¦¤ì?ªŠZ?«î¤?¬üÑ?ª ý?‹š? §?¨‚f?¤»?¨aô?ª'"?£K?˜[—?›é¶?®y{?¯©/?Ÿä2?„¢Û?–<Ê?¡† ?¥Ë?£—?£f+?¡AÇ?¡¦?ž?žº°?Ÿp‹?œè?ŸŠã?¤²+?¥'ñ?žç%?—a?³_?›Œ?¡‚Ø?¥[B?§L…?§?¥rÆ?¢TŒ?¤?¨’ú?¨ž?©~V?¨@ø? -³?ÅY?[d£?w¹W?›#ã?¢^®?¢vF?¤\j?¦ “?£¿Ø?™£?‘¤9?•Ùç?˜©?¢ -Þ?£×•?¢k¨? dí?¢(«? †? 9©?žS?•] -?€Àá?;øø?üÍ?^á‘?‰/p?¤™?›y?¤M4?¤€Ð?£;‹?¦.:?¥˜0?¦Zò?§q ?§tÕ?§H\?¥$è?¦™?£[U?£·ê?¦Vý?¥íh?ŸÕ—?£ -æ?¨Ö?¨µ?§ŸH?¦?¦¾ñ?¦‹F?£÷?¤¡?§‚ž?¨w…?©õ?©dû?¥Ô™?žØ -?£‚X?§U?¦qü?¦"c?¡Áç?¤Å†?©Ó}?ª'Å?©Ô©?¨÷ª?§Qu?§Pë?©²?ªPA?§Ý÷?¦¼4?©4?¦É{?¤Ü®?¥g?£¾9?¡´?š"õ?‚íÄ?0X?9žÂ?†ªk?˜È€? 9©?¢N¹?›¨O?’ב?¡6©?£m ? ;ÿ?šþÔ?£“?—ûˆ?ŽûÓ?›É? H?¦ìŒ?¥;? Ö}?¢éš?¤ñé?¨#-?§^W?¤Ê‰?¢ ?¡¨)?¦Bò?¥Ù?¤Q??¨~N?©}?§Ø?§u?¥>W?§1ñ?¤S?—?¤€?§e?¥Ç?©;â?©iû?¥i'?¦“ž?§å?©„ ?§b?£rÛ?©‘c?§ì[?£íi? íB?£%ü?¨%‘?¢bL?Ÿ«Í?©,?§¡¬?¥ôì?«8?ªò£?«{º?«¼Ë?¨‚°?§G#?§¤?ª>Ñ?«“º?¨ý¾?¦5Ï?Ûí?Ψ?–š?¨;?¬GÉ?¬¿É?¬J—?©¦?¥*Ï? ws?˜9?¥¾b?«.Ë?­:­?¬™?©”W?¤¡û?Šÿ?¥J?©È-?ªcp?©"Ž?ªou?¬0i?­/,?¬´_?¬4½?§!? Ôt? Lð?¢ü¬?YB?Ÿw{?¥D²?¥Q?¢y‚?Ÿ©H? ®q?¦k?¥pˆ?¥v?§-?¥x7?¢#B?¥Rý?¥HÂ?¤$¦?¥§õ?§X?¦Ä˜?¨9\?¥ë´?£??£ª!?¤Í2?¤<×?¡[?å?¢û? Ç?ŸÉƒ? ›?Ÿ"2?]?¤»±?§¶È?¦Ú+?¢îÓ?œg‰?—É¥?–¥?  ?¥Ð‡?§?¥Æ€?§ãv?¦G\?¥Æ#?¦FP?¡Âó?ŸÞ?¡«?¢ ? ¬ž?™?Q?žž)?¤ùm?¨ ¿?¥>ø?¤þÆ?¢§P? ÷–?£ð‰?£;?¢#Â?˜z†?#’?§ƒ¼?§á/?£‚?–Ìb?”N?šBä?šH¹?œýH?žÿ(?˜Ü›?š”?šÿf?›¿>? K?¢{Ó?¤f?žæ?ž ?¥]?¦Ý?¥æ¨?¢®"?¤gË?£[?£‚.?£âK?¤)?£ŒG?¡l—?£ÊG?¦­¨?¦Ö€?¤^$?¤¡ô?¥Ø6?¥’?£@¦?ž¢W?£7X?ž“I?™ÿ‰?ÚÄ?Á”? Òì?¤y`?¤Ï_?Ÿâ ?¡Q‡?£Ó ?ž¾?›E”?Ô‹? 2Ë? ?žó?•×Õ?š#?¢Ÿk?£”¨?¤ñ«?¥ßI?¥ðY?¤¸ -?¤€é?£ª?Ÿä?“ÞN?–Šñ?–w?’…Ü?šlf?Ÿ¡“?žÀÄ?›Ê|?œö?}?qD?™wr?šI?‘•?DÂ?Œmú?ŽBb?—ú?™Ñ„?™?š`ˆ?e?›H?–/?—zU?—kŒ?š%8?•*”?•Q»?”IÜ?“—š?•†â?Éu?ŒÐ?•;ƒ?šp!?–V?“ÇÍ?ŸÆÔ?›V«?•#ú?  ˆ?™Ø4?•°O?›`?š?˜ƒ?“ï3?•ÒÒ?˜³?´Ð?”MÚ?š[?›kr?”ö ?‘¥8?“C?š)e?•N˜?t?žkÆ?š<Ð?™«¸?‘h ?Êà?›â¾?˜ã?•¢%?š »?žv©?¹³?š)'?šº?›@?š$[?”ë ?”¯v?ž/O?ž­­?—`?“P*?‹Ö½?–Zü?›ák?—§}?(?•rx?—K›?”Ž?—V$?—Ín?•~?’¹‚?”Þh?–?–4[?”Ò ?“uø?ˆo±?•Êc?šê?œ[M?›‹…?•Š?ŒbL?“æÅ?—' ?™Æ[?›åk?š»±?•*e?Ž“?—Ÿ?œî?‚´?œZË?•¤?‘„I?–y1?˜¿i?šÉ? ?˜e?šÛJ?n"?™7Ù?”­c?™ž -?œy×?–Î8?’›¦?‘:×?‘w/?ŽWz?Q*?‘¼á?‹éÁ?‹U?Ã|?–ÆÖ?’£?Š'L??G?‘?‘Mk?‘y^?•Pl?ššH?–. -?’]ö?’C;?•?‘ˆ?–`˜?—¬¨?•Wî?—%?•¨?–*Õ?—ŠT?—Ï?”ôÑ?“Ã?“@Ë?•™»?—`.?–B?’ào?’Ì?”ß?–œr?–¡»?“—¿?Ãu?”–“?“€h?“cë?”×-?‘P€?Lß?—ë?šâ³?™|á?•ƒ?—¤?˜Ç–?–s˜?–ÿ??”Zœ?l4?û]?•Ä¹?™?šö:?—DÕ?‘FÈ?‘ þ?•2?þg?‰:(?Ÿ?“îM?’£½?–!K?˜*^?—Tø?—)ª?–ƒ?“ß›?‘$l?’1??–€?”i'?”Ã1?˜ è?–pM?“2?”é ?•§–?)t?”ÄS?˜¤€?– ?’O?’2Ì?•Æ??—)ð?•¦B?—K¼?–ÜS?–6?•ð?–³3?“E?’ÁH?™Å?À?‘ I?•¼b?’]‰?'Á?Œ|í?Šœ·?’/ã?“*†?”N?•kg?”3l?—q?˜e&?—[+?•Û?– o?’ç?“- ?—…?Ì;?Œ(&?”œÇ?—Æ&?–š?’\ü?Œ…©?ÇØ?‚Q‰?¦p?”•ê?– —?–þ=?—jü?•ïÒ?“Å.?’¬?•,?–&k?ŒØ¿?Ž'w?‘÷?• €?•Û”?“È?•£Û?–3Ø?—M²?–{?•ø-?—ØW?™.?˜Æ?• I?“D&?“ä‚?–΢?“êž?1‡? 0?•°q?–˜Ç?–#ü?—?—;;?’:•?“],?—t?–—f?Ž‚ñ?Ž;M?–8©?– ?•>ß?•ôO?‘?ò[?”27?– ó?“ë?“nð?”ùÑ?—n~?•î/?Š>?’Ct?”ð\?”¡e?•‚?•£i?–Ê -?”ùf?‘M8?’Æ?’Õ`?’`_?•æ?•Ñö?”&Ü?’Ɉ?“±¨?•„?•ud?“Z&?”Tš?‘By?‚X ?*T?”;l?•sv?–Ul?–W§?•ŽÅ?˜?‡Ýø?‰§E?ê?“C?“8q?ø?’Ã?•ƒ?–4T?“Sö?“Rî?–Qz?– £?•D0?•w_?•²s?–&÷?“-?ܨ?“ƒË?”,?“?‘Á-?„}?ŠÐ?‘àÖ?Žæd?‘£?^?uó?d’?”ß?’Úë?’¥z?‘¥?ŒÎÂ?æS?‘0Ë?“ŸÞ?”ž?“ì~?’˜/?‘•ì?’f?”q?“8Q?‘ä÷?”ª?”ßd?‹)K?‚Åš?ö7?‰ÌY?ôô?’ú•?”¾[?’ÑÆ?’¡?aÃ?Œ2i?î¯?Žé?‘›ƒ?“\”?“£)?“ªÉ?“"Â?’¿J?”%t?Œ±Å?­E?‘„™?‰0|?‰RÉ?‹«Ä?dí?ñm?>@?“Y?‘{€?šž?‘^t?‘ìÏ?ŒGù?ˆ ?zü?lú?†¨ƒ?}xÔ?ŽkN?ˆŸó?‰“&?‘ƒ?"?‘ -˜?’Á?“3v?Øp?Ž‘?Ž]/?“8â?’£)?“<?’ÑA?HÆ?œ”?mÅ?‡'$?‡Ý?ŠÍâ?Žj?Ž%S?ˆ¿8?†{G?‹O‰?Žu ?Œ¢ð?êµ?Š= ?ò:?’S?S›?Œ5?ŽÅÊ?ŽÍˆ?‰ý?’Õ?`€?© ?‹µd?€!G?‚r?ˆ€&?‹9&?ŠfL?ŠCÝ?ŠH?ŠV?‹cÒ?Š÷±?ˆ‘ˆ?‰Ù[?‰©e?Œ’??…d ?uÒy?s K?‚T?„t?ƒŠü?„rb?yÑ­?ƒšm?…Õg?…m+?†þê?ƒmÌ??|™[?„£¾?‚,M?„}‡?„ýî?„‹?€s?~ï#?ƒu?jˆ?€ê?‰`¾?†b.?€ˆÍ?‡Ð®?‡R¸?€U‡?„__?†úP?ƒ&(?„Ÿ(?‹?Š”ö?‚öY?€õa?ˆ _?Š ??†tý?»?ƒ‡!?ˆ<¥?‹GÕ?ƒ2?‚R£?Š¿å?ˆè?…LË?€*¸?‰:m?ˆ•?‡bœ?„/Œ?…â…?ˆ h?†bþ?ˆ‰Á?ˆ>?†f€?wD[?ƒ¬ ?‹ÖÃ?‰H-?‡³i?1j?†´²?°7?Š§w?Š¨ -?€'ˆ?…L?Š‚T?‹,'?ˆ/5?y©‰?‚Ò¾?í ?ŒÛæ?‰’¹?…œ?ƒs.?‡nû?Œ©?‰Çœ?„«±?‚îÎ?ƒ?ˆ ¢?Œj±?ƒõ‚?ƒ¼©?ˆ…?ˆ^¢?‰b,?Œ'Ò?…Ψ?†.?&Ÿ?Šu†?ˆ²Ë?ˆ0~?„A&?„pà?Œý’?‹§?‰²ò?ˆ9¡?ƒÌ?€÷B?‰Ø ?€AÜ?vc? Ë?…9ò?~_‚?‰QÎ?u?‚Ä%?ƒ…?‰ïƒ?‰ìj?…¥f?‰qh?ŠÞ?…ç±?„”^?ŠÀ?‡Úg?‰Ø€?ˆ¢:?„óæ?‡‚E?†ïØ?…Y¦?„V?Š&?‰O?‰a3?†Â3?…Žº?‹^T?‹õ?‡[?„ÌF?…Ѻ?ˆ‘“?ˆ!÷?‰šô?…c?ŠD?Šëi?‡ Ç?….Œ?‡"Ÿ?‰ð?ˆ“R?‡ï?‚n”?rN;?žÚ?ŠÔã?‡BB?†¦ó?~é%?kF?t3?…ÓÛ?†X ?‰KË?ŠÌ?‰{µ?…iû?„ - ?†w}?†Ë€?sÞ^?á?†œ?ˆ‡?ˆÉ?‡Ô¡?†SA?†Û ?‰?‰W¦?‡æ??ƒ.y?…n?‡þ?‰?ˆ’ó?ƒ·M?…?‡ˆ†?r#?}MŽ?„šW?‡¥??ˆÎ?‰?‰Wá?†'?…Ü?†Mˆ?ˆSÐ?‡Ð’?†#F?„Ug?ˆ!}?ˆ\ï?ˆÚT?†êÙ?†jÕ?†Œs?‰R?ˆ¯%?‡I?…mÃ?…ß?‡·H?ˆT°?‰’’?‡K?„Ï(?~úì?(d?†V?„´â?r;M?r‚?†æ²?‡ö$?ˆOü?„ú,?€­¢?„®?‡åµ?ˆ‚Ñ?†õà?g>?„ôŠ?ˆ20?†1?†Œå?„jc?e•Ä?såê?‡œŒ?ˆóÄ?†?‚®Ã?„“š?ˆr?‡\…?‡‚·?‡‘(?„Ó -?„Ö¡?…mé?‡Æ~?ˆk ?†)*?‚ž@?„Å?†"!?eáu?]¡D?„ ç?€ë~?xDÛ?ƒ¢u?‡N ?‡M‚?„’\?„×?„äc?…“?†”Î?‡[$?…?Ú?…Ki?„ ø?…Åj?‡´Ù?†˜:?ƒ@½?ƒæ/?ƒ‚"?…Àï?€ÏL;óÇ\<cÝ<6ïÈ<_lö<‡²o<›NC<ž{<Ή=!z="à=5Š=(d<ï­<õ_œ= 7Ç=8W=#Ýô=0=?“T=P¸"=` =j/=k'ü=a‡Ì=PÐ=@=3Å‘=+¶R=' -Í='/n=0èG=Hš=h©Þ=€‚=ƒª =€‰=s>Œ=doç=W“=QÀ=R =SA<=N{=BJæ=3«E=)µ$=%y=!5¸=c¥=à=¦=&eú=@nš=RÙÅ=Zà=_U=iMy=t=r½Ÿ=b›ì=Tâs=]•Â={™î=R=“œ9=*š=ˆ=…"]=‹ºé=›—=©íÛ=®ø=¥Ù =—‚n=ˆ_ -=róE=WÛn=C`F=4åÐ=&ìª=£v=ø)<óÕÄ<ýª¬=V«=4¾ˆ=VL‹=o=t°ô=`é=6O¿= -Á7<῱<Þ3<üaÂ=ó‹="·¡=2÷=Fp.=_0R=lþS=aGM=Eæ=2Èâ=8BF=N3Ž=iÎ+=ƒ/´=Ž•=‘¹T=‹R =€þ’=q¬^=e'ì=Tú¤=A|›=2e©=*ôõ=&¾`= y’=ˆ=j[="„ª=:_B=Ná~=UE¡=TB¶=XA"=b]Ä=j=ì=h=Z3B=H]=>)‡=?@=>òj=2«"= =×ç=ÕÆ=_ë=c"=Å -=&Ÿ<=; —=Oª=T'Ÿ=@Üò=›l=M<íHé<õ¯Ã= †K=!‰–=3€k=>¹=EÊ=KÅ=GÖ -=<Ç7=6Õ{=Dú=hœ}=‡¡À=Œb=†ç=j¼=Rœ|=W®ð=s)µ=‡qÓ=׎=4=‰ßQ=ˆ·Õ=(‡=  Ö=·*=ËÈÞ=Ú‹í=å˜=ïB=õä*=÷e=õb#=ñ¦6=é'=Ö¥•=¼d=¤èÖ=œWþ=¦jP=»Oó=ÎÅ=ØDw=Ô¸=Æ]=²ý =¥9=¡ =¤;Ï=¥°Ý=§š}=¯PU=¹ =¿`÷=¾• =¸ìó=±¿5=¯0¯=¶!x=ÃWy=ÍO«=ÎâÃ=Ëg)=Æqž=¾&ò=°Û6=¤pœ=¤Ží=·ß9=Ø›&=ø4I>n>>åÁ>ÈE>ä¹>Ö>W–>å)>'/>êî>Ï> -àý> -²s> -{(>Õ>Ξ=öZ‡=ïþ=ð³=è÷=Ï_=´üÛ=¬£â=µÀž=Â¥=ËÚÈ=Ó¹h=Ü22=áå =àO=ÔÒ¦=ÀÅ}=¨¼Š=—hë=—; =¨VJ=¿Z=Ïà =ÓÃC=βi=ÅÅM=¹€M=©‘n=žÇ=¥K[=»¶Ì=Óu.=árO=åÜ…=äTÛ=Üb5=ϲ@=ÉW=ÑFX=Þ½=á-T=Úe7=ÑD)=dzæ=¼€ñ=´ó=¶¨X=Æ%=Øw½=à¾a=ÛYk=Î7 =À¦ù=¸=·už=½NT=ůß=ÎK=ÒÖ =Ï>=À2ø=§il=Ž¾ì=†¯8=˜Hÿ=ºY=ןß=âW£=ÛÁ=Ô’=ØÅó=ä@÷=åò½=Óž’=¯S2=„x=A–V=0U=%k=aRø=žv=Äô=Ób®=ÉY=´¸º=¤.Q=–Ê*=„D6=X4à=.ll=öæ="Z=!àt=A=xº`=¡Uâ=ÆEf=ß®z=復=ØÜÎ=¾Ÿg=ø8=‚3=pO¸= w=£¦=˜[=šY=žò¹=©1E=µ”U=¾DT=Áó²=Æq=ɉü=ÀFé=¥@ï=…:{=aŽÇ=`V?=‚yÿ=ŸN¡=½#U=Ù)º=õ(Y>…>G> ±>i>`> +=û=ëF=Û­Ä=Ëš\=Â`Ø=Äu|=ÎßZ=Ù¯(=Ü©!=Ùé=ÕÊê=Î$R=¶iÚ=N¼=PÖ=%,Á=+O@=[³Ž=àc=¹JG=èwä> ëJ>S*>&_£>"”û>â>k³=åLm=âj•=íC=í‡=ãÕJ=æ/=þ·³>^ý>µ=>Æ=üÜÊ=Ëì;=©{ï=¡Ý`=®¢u=»[„=¸‹f=¦XÏ=^ =fv=18˜=Ï@<ÝÔ<âʨ<ý = =Õ=M‚=,y5=H”À={ë·=¤ˆ­=ÌXÜ=ë´>ñ>ª =ÿѶ=Þ»5=̳Ä=äk]> š>ò,>â>˜S=Öš¹=°Žù=¨^W=ª„‘=¥Þ«=¡KD=ªf¨=»=%=¾Hü=«ÊÛ=˜U=žãâ=Ãlw=òÿ> -ÍE>ó­>˜e>1Q=Üuh=±S*= Õ=`ÜÉ=?ü=HÚ\=…³i=¼<©=õÆg>=ß>"üõ>,/F>)Õ>,—>yž=þ £> ·_>';}>;º,>=/U>' ø>;Ý=¼pä=‰t<=j2=ož=‹¬=¬`=Í ™=Ùw -=ÎÒ=¾ÆE=ÅÝ™=ì >±>oá>(%>3’K>G4Ó>YÇT>\‹>M|á>:j>0©è>/É»>,8Ÿ>¦]> £ì=÷ü5=ëìý=Û©•=¾À=¥¦ú=¦z¦=É9ë>¼>b>' >!%³>Uà=új˜=ÚÁÇ=ă=¯’=–ݸ=‚{-=y -Ú=Šµ =®Ê=Þ®“>…>>V»>sê>°`>]B>hw>+1>4£2>4z>0>œ>1a§>:‘e>C ->?ð|>2¬p>(î)>,*p>9M“>F| >K×I>Gw&><)U>/wç>(J¬>(ÌP>+à>)ýx>&p>6$>£2>ªß>‘a>z ->s> r]>̵>Üè> )g>ªÍ> ñp>%–> Â>m=ìb=À;>=¨*=¥¨=©ð­=¥_–=˜Ló=&f=–4w=§ÂÔ=»ì>=ÊNc=ÏkÏ=͸í=Ç;­=¸È:=¡n½=ˆá=o¹—=`GN=`§)=t!v=Ò=¢ -3=¨¬ù= ¹·=—=ã=—fÄ=¢’Ô=´5ˆ=ȧé=Ýà(=ìUs=èQ?=Ñ,Û=¹Oê=·àÙ=Ó³=üòL>FÛ>¥¿>æÕ>*ú>3t >2¸>!D2>H=ãŠ`=Â÷Ë=®KÎ=§ÓÐ=¬Ël=°ïR=¬å =§ô…=­¦¶=ÀvÄ=×+=æÒx=ðv&=ü -> >m™=õˆ=Ñ•=«\=šc=¦V=È »=팥>¢¾>±^>yw>%>> ÙÏ>0<@>2¦_>&*N>6=íE9=¿“f=¦ï¬=ªK=¾>ö=ÑÑ®=ÞžW=í}¯>lo>À=>òº>%K†>&GÐ>"Qo>R> Ì‹>æ2=î£=ÝJ=ÑØê=dz[=¼†ü=¸HB=Ã&@=ܹ.=ý> Òr>χ><Å>¿8>&m!>/ÞQ>8š€>@7t>Fõ>KY>K½Z>J»>H›>AÛ>8¹a>6Þ>;°b>> >9óÈ>2Ý>'ó£> -)>’>)cK>4Õú>8AE>46>0á†>.à¸>)c >ü^> o =÷_=ÝÙ‚=׆=äê]=ù ->s-> ë*> -ðº>ÂT=ñÉa=ÛÓ=Õ‚=êïÏ> é>&½í>:Q><›V>0O>"˜½>•å>#€™>,<˜>4ä—>;³H>?¿÷>>Àa>7YÂ>+þ3>˜Ž> ¯=îä“=ȉ#=³Êf=®=­li=®Ò#=¾J{=åÅ> s°>%J·>1ƒ>1Ä>'Zî>Ü[>( =Ü;S=¼Ó¦=¥x‘=”T+=Œá¨=‘#=œŒ=¬b6=Á=Ôôn=ÝQÅ=Ö„=Ƀ=Æ%Ì=ËGv=ÌI­=Ä$­=¸!|=­1°=¤ùç=ž !=—Ââ=R=‹®ú=ŽÇ=šé¤=ªß}=·êu=½ÂØ=¹â°=¬’=›kö=…‘=†D -=…¯—=‰ '=Ž_ =™î=¬‘=Âgþ=ÒšO=Ûz=åÅ6=öŠ2>aÉ>ÂN=çD$=Â0=ª1ý=­!=Á =Ô;-=ج=Íââ=ÂÔ=ÁÀ=Æðê=ÇR“=É4y=Ýå%>:>_>/“<>9J>:µß>7!Î>/²I>&§Ÿ> ö¢> uè>"OO>%Fû>*Æ >1v|>5€•>5ˆƒ>4A>3œm>1_¶>%éã>Ç=÷cL=ÝW_=ÕCý=Û_z=ì÷Î>J¿> ¨é>j,=øâÏ=îm»=û«>q6> ã>šú=ò/a=ó•>~‰>›P>r>#<>#D>þˆ>«>ÂÅ>Ý÷>ó">–i> Ø÷>§B>Š=éñ=Ó°=Çy'=¶=Ä-V=Ç Ã=Áãá=±sm=¡Ù–= ›Ž=«F„=±Óà=«Â=Ÿ§[=˜‚µ=š!T= ¢=¦ÑÖ=¯ç¥=º¶^=¿žÉ=º·Ò=µõû=Àçn=àY>_¹>LZ=ð›>=Êد=°Ne=¦Ã=©.=º¬”=Ø%«=õŠ>*¶>ðà> 3[> X®>><$=ù°‡=ëÙ =òeŒ>'Ô>n=ûÐ>=羡=Îô’=¼=µZê=²4”=­º‘=®Q'=¼(=Ôņ=ì‹á=ø;q=ø7=öËÈ=ý´8>ð> oÊ> -Š‹>>Í;=ò®ø=ç ¸=íã¢>@Ã>ö¶>å·=óÞé=â{K=à &=òSè>'X>>.¬>LU=ûÉÐ=ç÷=Ó°L=ÛˆÛ>¸«>#{Ê>6_9>8>2ö9>,Iî>!¶·>‡A> É>m_>cp> @è>|V=ù†´=ýsg>4> $6> m/>x[>ŠM>žM>0G>¬>>*j>2å2>5Æ­>6͈>8¨†>:™ß>;›ì>;V´>7.R>.§¼>%ü>=Ú> üï>=óôÜ=î‰Ö=ï=öÕ>°a>‡å>¶=ñ9=×”Ã=Äi=½äÏ=Ø…$>§U>|¯¨>¡Ü|>”…J>LŸE>¢o=çlæ=ï°Q=ÿLD>”Û>Ì>ºq=ïãµ=ßaë=â.™=ý¸`>®´>Ac>J[>">1õº>?½>DLV>Côî>F8¸>F×t>=?>,[->Üõ>;>šn>´=ãCŸ=Ìùn=Ñvß=ä&e=ó¾Ò>Eh>Îû>`tŒ>š›>¨pý>Šz>[“>*«>Œ¿>ä¾>'Þ¤>7Ã3>Bæc>J1!>Q{–>Z>`¥*>auy>`;ñ>cHé>ik:>pp¨>y2Ø>Á.>†™Ð>‡ƒµ>‚p>{¯÷>€Û>‰‚> !>’nÉ>.Û>Ššï>‚Á/>w=Ø>wD^>…_H>’{£>œî> ÞQ>žû¸>“!>‚çû>x)>„f÷>‘”Å>™GÈ>›øZ>Ÿ¨>¢·->¤j>¤ÝÚ>¦Eú>©>©ä >¦Ç¹>¥gœ>©W >¬ÚS>«î¼>©¿3>§jg>¢©>œ\×>ž"w>§kR>¯îq>°,Y>¡Ð>†k>WT`>;Žˆ>1…¿>3t›>K7>|õ–>מ>·*Ù>ÁÒI>¾\^>³a™>¨áÌ>¡à'>—‚„>QË >3ÄÙ>;c>aúÈ>Šù>¡3´>±ao>¸B>·->³ö>®˜¬>©’Û>¦øæ>¢s8>›;t>™& >ž5> 4í>•/«>}>XMÞ>Y\A>x7>‹ÿS>–Ká>ŸHÜ>¤4©>›-Â>†”ú>ug >„Û>še>§‹>¤ÉÎ>–ˆƒ>Š¸c>82>ž@>µ'P>Åp<>ÇQ ->ÀKx>»X>¾y‰>ʱ²>Ý»>î—›>ö”†>ðæï>ãÇå>Ù!R>Öܤ>Ùþü>ÓÏw>¿]>¬[ú>¥ò]>¦ýÉ>©Ý>­ê‚>ºi>È®>Ë>¸>ÄÔÎ>Áf>ÄÛZ>Çbâ>ÄLí>¾t>¸‡>±%'>¬Û>®| >¸¨>¿ðI>ÃWà>ÆÔó>Çž9>ÀÚ!>ºgÚ>¼Ñº>ÂYn>ÄSf>Æœk>Ï|Å>Úâ¥>Ý.e>Ô/5>Ç­í>¾Ñð>¸À¼>®ù>œà>Ò#>°Í>žÝ>²öA>ÆÆã>ÒC•>ØÒ]>Ü/;>Ù>Ê¡>>«A>†ì >o¢¨>…=d>žA@>±Çž>¼§>Ât>Åj)>ÇiQ>Èù>Å Ÿ>¾‰>¹ >ºß>¿)«>Å= >Ì:®>ÒMÉ>Ø=¥>á<â>í[>õ?>ím>Úgý>Êè>Ã5y>Ààû>Ä]Û>É)’>Å_>´Pˆ>£>Ÿ| >¤‘>¬NL>µÄÁ>À¸$>ÎØ£>Ýš>à×'>ÓŠç>ÄÚÉ>ÃO×>Éa>ÊÍ2>À">®NÄ>¨á=>¶%æ>Þ·>Æ]_>Ëè²>Û³J>äÚ >Ûú;>Êâ>ºB>§`>—IÞ>‘·i>‘ÙŽ>‘>˜_u>ªÒÉ>ÀW{>ÐÞR>Ú\}>ß®7>àú·>Ú>Ò‹Ç>Ö÷”>à²@>ßà´>ÒJ>¾SÒ>¯ÂØ>°¤ë>¹oÌ>½ ¬>ºÏ>>°¶\>—Ü>…3>Xk >'wÁ=ý‰=ÔÐE=çÿ>Ú…>EZ>v­>Œ‡E>’ÍÀ>“ä>“ ±>• b>››>¦>Ÿ>®ÑÒ>² œ>¶¯“>ÀèŒ>ͳÜ>Û\>è'4>Ʂ>Þáí>Îu>¿i„>®Ÿù>š ”>ŽhX>²,>†÷E>s >w`H>•Y>>°õ÷>¸*‘>«â>šÍÔ>˜ -º>ª`ø>Æ"(>Üâ…>éì>í[æ>ç°O>Û‚¤>Ë^P>³ê¼>”pø>uÎI>ff>fó‹>jµ>„É>¥<ž>Çöƒ>Üç¦>Ý=þ>Ðül>ÃïJ>¼¡ >Á ¶>Ê6»>Éöt>ÀQf>°rü>—îS>}$>qLÓ>$æ>ªt>¹uÁ>½tÐ>Äuˆ>ÊÌ>ÁÍ%>«AÝ>”«>oª>“j>œ>§~_>¯Dï>§s‘>“-õ>€=¶>v3>‰Í6>¦2Ú>Â&:>Ô¿±>Ýq>àl{>î¤?}? «ó? ’÷?™´?Ñ?P?w>ël<>ÃßÚ>Ÿb‰>˜o!>¹î²>í?~? !„?‰f?{8?¼Q?£n?ª?Pä?fC?‰ù>î>ú"÷? -Þx?2n?òÕ?Ï—?PM?8? èF?tº?ÏÔ?vx?%Ñ>û#n>Ûx>ß¡;>÷ní?„?¿.?$ -?^B?ˆ%?{ö?+î?Dä? [¥?"ýŸ?$üÔ? ÷•?R -?øï?k?³?öù? =?ϳ>÷>樷>è.>ú…Ý?è–>þD}>홨>Ô™D>®Ku>Šp >…Hm>¦…ß>ÔmÔ>ð0õ>÷L>ør>ÿÇ??“??³Ò? º?O–?’ë?#…r?"jÆ?„5? -¶X?­>÷|R>ÓSä>­¿k>¨>¼¢0>ÓˆU>ðþN? õ|?o=? ­#?Ûf? Ì >ðÒ¶>âú´>ÿ^ï?jI?(*—?.Ìm?)%ª?Lä?™J? -$é?æµ>ùÇ.>ûœ?#ª? Ç?=j?Ô9?d—?sÍ>öçE>Õ>>à×? +?"Pv?.÷#?+0]?Äš? ùp?—?²í?-—?1?+¯?)²³?*ˆE?(šf?#êÿ?×e?©>Ö»'>Ã[ >ÒgT>éÕ>òëµ>ôó>óÛ‹>û`å? Ú?a?#‚S?!‹Õ?"ÎÊ?&Ò[?&‡?&58?-Aæ?8c?>Ä^?;ÌT?4¨"?5Ia??‘D?EYð?;òs?(òÓ?$•?H?&›?9w}?EíÃ?I ?AÄ`?2Á'?'°Ã?*ù?6º?;;Ñ?1]?"±†?PO?$ B?2KÚ??Wä?D¦½?C!I?DMÆ?M‘–?Väw?XÎ:?TÁå?P\"?O<½?PÑ‹?Q|º?LU?BLŠ?=À??ç0?E—f?F(9?@Š?@?K¯?T;?Rú?G"v?>wm?5{X?$ž?ˆ ?Ôx? -Œ„?oç?'è?}?ÈŸ?#m?·?>¯?7¯?If?G“V??¬??Ï?FŠÜ?F?5?;üÞ?4®w?6#8?8x?9+?=þb?D-Ë?B+Ü?8¼€?/ä?/ƒu?< ê?O-ƒ?]Þ?a,£?_¥}?]…H?Y\®?Q”?Ktæ?MM?W«,?aY!?a8u?W”o?KŠu?JšÞ?VíC?_ú¡?`<„?^„(?Y|‚?Me ?>-Ã?4çÆ?:t?I¦?Q+Z?HJ™?<ªŸ?AJ?St]?a—?a?W?M5°?Iù?JØÛ?M!©?Oî\?Q×?O‰Ž?IÙp?@¾0?<»§?@#?Fjñ?Jý?Kð€?Mœx?VÌY?dV€?hÊ?b/â?Z:t?VÉK?XÛ‘?[*O?ZEv?Z<?ZI?[f„?`#ú?`Ì?\\À?Y9›?UU»?ST?Y¿ê?b‡?d;ÿ?dŠ?D¯‚?J,9?FØê?A}×?A¿?F|?R+c?\£l?\ü?Tº³?Qɵ?WÌ?^r?bk&?gà2?iã?cš·?^LÓ?`±?dTé?^Ðð?O€«?Céä?BAï?EüÜ?K‡Ù?PUZ?RZ?Q®å?Lº?Gc*?JáÂ?P#?NÅÂ?L>Ì?N‚-?Rjb?Sõ{?UcÂ?X?Y§?Zgy?YÊ?UÐj?NNh?Eïò?B{?C:n?Dk¹?D>½?DðÍ?F»b?Dñô??f?;¦d?8ÚÚ?3’F?02–?3l‹?9qG?<Á ?; õ?7Ð?8…C?=??Gc?=m?;?8TM?5Uw?3.o?0f?,aP?-µÿ?3cÈ?6y?7&?7\Y?8â¦?=¡\?DV?K!?R®ü?W]v?Wö?T“Û?N)§?HS¥?H|A?O|ø?Wšñ?Z_`?Vש?QË°?NCB?N?Qö?U’F?VBÃ?V 1?Vˆ?W[“?Y ?\5?^IÃ?]”$?Yœ?Q¥·?E Å?=™g?BØ/?JÍZ?L„?Iv¶?G³Ð?Eƒ.?BF?CzÑ?JÄ?MÑa?Moþ?Lº?Jê¦?H4H?FòB?GL?G/Ê?I·Ð?QÂ[?X©Ì?XûÉ?Wfr?Y¢?[%?Xc0?Uú?R@»?KîÁ?KˆA?Pª?O³5?K!V?N:Ú?Sñ©?R¶Ê?O0?O™¾?Q&D?Oh?J«)??h?*ø°?Z?+¨«?=ë¿?ER‹?FE©?E.ß?G)Ï?Lôá?KI•?F9/?Fj?C&Ù?:¡#?5¡l?6{?3_\?'B‹?1^?#û³??W©?W5ˆ?ca§?fqv?b…'?ZÌ´?U!??Sh¤?NY‘?G° ?Kçú?X#±?]ì?YzD?P ø?Jú%?Mݧ?Sj ?Tàµ?UÿÎ?V@ì?KÜ?2/j?¤!? ºk?ƒì?6óe?Cè†?E.h?LLa?XÎÌ?a/.?dz?cƒx?\o?N­n?EP°?Há’?KxÓ?@pÛ?2K?2»§?AoU?N^a?V¾@?Yo¡?T2‚?Rê=?[í?bbo?d -ª?cõ?a®°?Yù?MF?9™‘? < ?±!?+x?Eˆ®?Oëo?O=“?Kà€?FNt?AŒ?>ª”?>M?B›ÿ?J;c?R˜¤?Xy™?Y’û?W±Ó?Tø-?Nÿ…?FD??èÜ?4[l?ö¼?lm?!¶­?/ -ö?9ô;?@õn?>M??7>?5ék?<º??ýÇ???D«?G&º?Av -?2?%CÎ?&L -?.ú-?5 ]?0Z?!ïã?2Ñ?)R?5w?7ƒ3?-ä-?¦p?¡Ú?pn?%¼??1J?87â?7ï?.H™?#3Ë?%e?0ð?4Ü£?0ð?+5s?1j?ÓF?5C.?&6f?ò?Dü?±û?¸%?TE?"öy? d¾?$Õr?*ñ&?'22?#¿—?$”ø?¨.?<¡?¢#?2Ž?ãÇ?%?-ºÆ?.KB?*x?)o9?+½h?3ªÇ?:¯‚?3+?&÷-?'$?'r?ëó?qI?Yº?ׂ?Ü? -‡?È?Ƽ?EP?O?Š?¹L?#Nw?,S$?1wz?2c9?3P+?.^÷?&/]?!zv?3 ?ƒA? p¥?E”?÷ö?ò ?B­? ›?$¼?%…d?% ?)¼?';O?++?´ì?ôÅ?ã ?TØ?¨,?‰o?vr?u,?ï?Î’?ö? x?G ? +j?º»?,’×?4±8?5“?7 Ç?3|O?*ÔÁ?# ‚?.À>äÈþ>ËË—>Üð>êGK>Õbž>¹é­>±ô>ëfu?ñ? Éø? Ñþ?¼0>é» >É<5>µuÏ>Æü7>ûßø?âä?%Sû?+ü?(šä?òÅ?6â?AÕ?$£F?/õ?;lÖ??†?;ÂA?2È¡?$aF?[›>íŒn>ÐîÚ>ÊU¥>Èd.>ܸT? Pì?5ô?Mˆ?L<¯??ì?=¼ù?Jµ?YÙ?a—›?aÞÅ?VË.?AÁ?*ýG?Ó!?# Y?:3"?Kü¼?MgI?@ ^?:ŒÖ?J3?\Á?fn¿?gKå?eòð?d˜|?b•‰?c/c?f‘ê?_uã?Mt'?I"Ì?MœÜ?IY¦?Iqý?Pk?Q—w?R³$?^Xýo?]|?/;?@–~?E¼­?JXÎ?Zº?h#£?d¤z?SÊs?AŒU?<Ç?Jj?bÚ?oÉ?pNw?o¨Ù?q{ê?r ñ?pVM?k=Â?Z]l?<ê(?+*3?6‘)?I¡{?Qçð?[U?iîU?qæF?n½è?k Ê?p™0?w4U?y)Ñ?wRú?sÄï?r·5?s‰Å?tE%?r­)?n´?h>°?^ú?MŠ?Cy%?>è?fôf?\óé?aÎ3?qv&?r˜+?j¸¶?p·4?B?‚øS?2å?vúë?zØ ?Lš?„#Ñ?ƒÌÙ?dÎ?=?w+!?uI´?}ÝG?{c?u!¾?w‘F?x‚š?p‚?k¬¹?z8õ?‚Bz?z.·?fB?\¡“?b×?o™º?}R'?„º@?‡q¸?ˆ ø?‰T?‰ð?‡;»?ƒ+¦?vV?jU?x™¼?„ÝL?…rr?„±8?„#»?„Î?„ˆ˜?… -ß?ˆdX?Š?‡Ð?„Zs?…:?†K\?ˆud?‹A?‹úŒ?Œ“Ù?‹íØ?ˆÅö?†«?†· ?ˆ"?2C?–?‘¿?‘~?œM?à±?“Ï?“8P?‘1?‘»‚?“ÆW?û–?‹ê?ŒCL?‘[;?”êÃ?•@?’¼ý?Ž”?‰ï¶?Œ,w?’¤?•Iˆ?–cc?–´?•Ð`?“ÝÛ?’2? ?Š‰?’+Ï?‘ÓG?~š?†Š~?ƒ0l?‚_È? -ƒ?„*?‰½û?ŒÒ?ŠÞ?‹\Ä?‘4?•zF?–(?’è¡?‘;ü?”Ì?˜EK?˜Y}?”Ü!?’µ?’{©?“}˜?“ù»?•©z?—ew?–Õ¤?”¦?’°?’Ñs?–í£?™=ö?™f?—‹Ü?–§?—•Ò?˜Z?—»#?—ì®?˜˜É?˜9~?—‹º?–šŸ?–]ž?–&£?••ð?—(a?™5Á?™WÎ?—èœ?–I?•™(?”ü=?•[æ?”™‚?‘1?ŽUÂ?ïk?‰ Ë?€ï‹?ƒûh?Œö?ÿ^?N¤?KÏ?Ž–Ê?‹`€?Ž³?”ì?•·??”¼?“¥“?”A?“ x?±Ñ?ŒÌ?‰m?ˆ?…ƒ`?}´+?kŸÞ?JQ?í—>éAr>úƒ?n[? â>? ÇÃ?ñÆ?1i£?\0Û?z;j?…Ž~?ˆóE?ŠÇ?Œ«x?SG?œl?‘¢?‘£"?ŽÔ$?ŠI]?‰Ð[?ŒY?ŽRœ?õ?‘Jg?îD?’A¬?”+P?”½Ò?’ËŽ?Šñ??’¦Š?“¸?‘ F?’j?”O?”§p?’§?+˜?ÏS?”ŸA?–l?•\ù?’[A?‘á¦?’µ ?G¸?Ÿl?’Êã?‘k¡?‘×ì?”ÿ@?—Ö&?˜~=?—sº?”ëÆ?“¬?–r?˜?˜y?˜˜?˜À?•”!?‘…˜? *?$ú?“Ý ?•Ãê?’ýñ?Žn™?Žý?‘ÿe?”\®?–ó´?˜ž?™ßZ?šêí?™©w?–‰¢?”E.?”X~?•tð?“Bâ?‘Ôõ?”‘Ú?“pc?Ž‚§?J·?•‰h?•¨u?‘¥›?‘ªJ?ÿi?óô?ÈB?ÒŒ?‹¹¢?€Ô?z¨?”áÊ?—–‹?™Äâ?›)ó?›¾?›[?œTé?œM/?›ÅÂ?šdâ?—Èþ?—2?˜¹m?›®?£Ç?žJ?n8?œÂã?œö/?œ °?™˜?—;ö?•{o?–Ys?™?šÎí?™Á?”#Ë?Žd—?ŽÌp?—J?œÍÓ?ž…þ?žÅ¯?žyF?žJZ?ô¼?›CÛ?—1Ú?–†²?•ºŸ?–A?—qQ?—HÉ?™ª]?™Øˆ?•¼?“’?˜ÎF?’?“FD?•8)?‹Ä -?„n?ŽŒZ?—®S?˜/a?”ßs?ä¾?‘¯?¥??6?“â?—ðs?˜¦Ä?–DÇ?Åo?ŒøQ?“a­?š_Ž?œ ?›ò®?™?’H0?FC?•Bk?˜Ê›?˜LO?u?‚ÙD?ˆ–?–¸j?œ{.?„¹?“?–æ§?‰öÙ?‰ €?”˜V?™«è?–Äú?—‡|?œ2?šé‘?Tâ?ëW?ˆÖ§?– š?šë?™…Ì?•|ê?‘1f?•a?˜$?—¿G?›T¡?œ¥è?™µ\?•\í?•¥²?™¸R?›ñ7?œDõ?›¢?˜<£?38?v®?mǽ?€²?†Ý¤?‰Ìµ?’áÐ?˜ø»?š5©?›Y0?š‰È?™œ?›Pu?œIS?›5?š!È?˜€?—?˜àv?œ„?\‚?œûØ?%¤?œÒ-?œå©?œ<£?™èƒ?™@/?›ð?Vì?%?ž2?Ÿäc?ž™¥?›TU?–ÑŽ?“?–öŽ?›lŒ?›–ƒ?™(w?•Rt?’Õƒ?•n:?™Áv?œÕù?¢K±?¥c9?ŸÑ…?›ß -?š0?–¾ñ?•û,?’ x?Ž?‘–4?˜Î’?›â€?š–*?™c?›tú?œA?š´?›Q™?œÜÎ?›(x?’®‹?Š°ˆ?÷÷?˜gÜ?—ñÙ?˜3×?œë?œ?›Ý¦?™I/?—Ä8?•(?–‘¡?šÄÕ?›–?›z?œ1Î?œb?œqâ?œÌµ?›öì?™Gë?—0•?˜MÐ?˜Ÿè?—ñY?—Œ9?”øØ?”s?˜º?š‰\?š2é?™ö¿?˜[ -?•'Æ?—{’?šÄ?šN?šZŸ?š 9?™¿ã?™Ö]?š/O?šD?™F?—@d?”O×?‘Î-?” -J?–$?—K?™9?šÂº?š‡ ?™oŒ?–3.?Ž(F?;8?”Ù?—'Y?˜ ×?˜:·?—¾º?—{Þ?—8¸?—@@?—­·?–>J?“'?’ÑÊ?”;?–­ä?–è?“èÞ?“VA?”|ï?”¨>?”ƒ"?“í¹?’Ã-?¿?‹ÈÍ?…Ù]?Š¡!?‘¨Ô?“‡d?“·J?’£€?‘%?Û^?’^^?’´??‘ÞÁ?’¨µ?“@#?’ W?öÕ?‘?§Î?Ž\6?O?¾ì?ŽÕ??Œ:6?ŒP?‡â?¢?»n?’H†?‘ÇI?‘­V?‘ô?Ó„?(*?ŒA?‹_ò?Ž<?Ž©§?'@?‘Ž0?‘C?ñz?µ?&.?‹±þ?‰G?Š—[?Œ•ß?Lç?„u?¥;?Œ¸ñ?Œ¶ù?ŒŽ?Œƒ‡?Ž:­?•U?&?Ž‚?Ži?Ž7?Žâp?ŽH±?$¹?÷?½¬?8«?õ?Ïà? ?‘8Â?‘­—?÷N?Žu?Ž,‰?¤û?¢i?Ä“?‘oV?¯Ç?ŽºÙ?ŠTd?ˆoî?‹é:?¯Q?‘~¡?‘mI?só?^u?Œ½n?Š21?‰cñ?Šž{?‰ˆ9?…+8?ˆé?‡D?‘oy?‘9?°O?ŽcÙ?Œž‰?‹ÍÌ?Œ;»?©ù?ãÞ?Ž§?ˆ¨‡?ˆC?ŒÞ?ã>?:f?‘¾§?‘»H?‘ À?‘?‘Éf?‘š?àÚ? ½?w+?’V?û?[ú?’JŸ?‘ZÇ?÷»??Œ¨q?uÒ?Zõ?‘ùu?’‚?‰Í?Š•à?‰µ2?Ž›?Ó? )?3ð?Ÿq?Y»?ʾ?‘~”?“Ë?’Ug?B9?‹Ö ?i/?’@„?‘Xf?Žö]?Ž–?w?‘§€?“J-?“¥"?’y^?­?’0}?“B‡?”n?’´8?¹+?ÊŠ?‘cˆ?/ò?ˆ€?‚_?ˆh?ŽÕÊ?‘Øz?“Ï?’fÕ?Ž¿?Ž±Q? -?Ð7?öª?‘j?“´?Ž¦ó?•é?”?™ª? Š?'??ÏÌ?ô?‘Í/?™$?Š Æ?Œ„?‘â?‘Å?PÙ?Šo–?ÐÐ?‘q?“H?“d?‘öº?’‡¨?’°Û?Çþ?‰?’ ‘?–†W?–»º?–Dî?—¢®?—˜”?–pJ?•µ?’õŸ?‘ëh?’Y$?’Mª?FÜ?˜y?E?Ö?ð‰?Ñ ?ŽØ?’-¥?” å?”[Y?”6?”— -?”Ïj?•6?’F -?Œ“š?‹Æz?Œ8U?‹AÆ?Œ„?Ž-?Žœ?|?Ž#É? ?É?Ž£Y?Ž<Ç?`é?â,?ƒ?‹µð?ŠÊ"?Ž–,?‘?’Gr?’J­?‘R)?³¶?‡ª?‹¨S?ˆž?‰V³?„F?ƒÆí?‰¡Ó?Œ{¹?Œ—?‰y„?‰è?Žr?¨9?Žý:?Š¹°?ƒ¾?†ã«?“5?=ý?Žm¨?‘.ù?“Ú—?‘WW?’X?’›!?Žm‡?‘À&?–y ?•jP?—;?™íû?˜%.?•-e?—›?•(€?I?•`L?š‘û?•Š(?Œ]?ŠëV?Ü?i]?ÚŠ?’­?Žd.?ŽÅ%?ŒT?‹m?oh?Œÿï?„ÎQ?‡Íà?<$?Ž¦ö?‹å¶?!…?‘a;?’½~?m?õr?tB?”s?’¿¿?&N?“Š1?”¡‚?”/?‘² ?”K?ßÂ?‘Ú¹?“pO?q¦?mÛ?•Jö?•²‹?ŽC?©¯?Ž¶þ?‘]Ø?” ª?‘1G?Š•–?‹“5?‘\¿?‘ju?“ìÙ?•2?“al?‘èþ?“•~?•îÈ?”È—?’…?m–?­R?Lë?“ø?’—?J0?‰ãt?‰ê?“f'?”XŽ?”‹k?”=?‘$ø?ø¥??ˆ±£?„?“‘[?”ŸÍ?• ½?•3Ô?’Òí?+Î?Ÿ -?‘ø€?“r½?‘îp?п?Ä&?’­`?•(³?”1m?‘¹ö?’8?”L[?“’ ?’I?“¾??“û‚?’m=?R?º¨?’ê?‘¸h?‘*ö?’•a?’¼Æ?“çZ?’£”?’«??•NÐ?“Ï ?’ÿí?•5‡?”·Ò?“„ó?’¤?Ï? Î?’Ü?“ÃÐ?’m?’ªÿ?’{?“9ÿ?”rÿ?”Ä?’©&?’t™?“6?’°¶?’ö2?¼ž?’Í?‘È?Œî‘?Š -ï?‰ä?Œ1?‘à?”,¹?”[?“Ük?“·˜?”kf?”f¯?”2‚?“ %?’ÄÜ?“0?•¼?•ƒ¨?”X„?“¿Ê?“°?“´0?’˜?^?Œ’?ŠJI?‡yÏ?‰ÞÒ?†Ð?v~¡?„þ$?Žé¿?³§?Þu?]º?‘–“?’v=?‘¾F?Õ»?‘lª?‘Ì?’ÆÓ?“+?’Zl?’6š?’{?’¬?‰?‰:?‰?‘E?“×?’±:?’i ?:ù?2á?Œ×š?‹A$?Ï‹?’ûM?’„?»þ?Œxh?‹~?8e?¤ð?’ž[?“>³?’†œ?“?’FÌ?Aß?Œ*Î?‡K¤?‰h?‰E?XÎ?A?VÂ?íO?™7?‘Í„?‘]?º¼?–?;á?§ -?ß?ãÖ??¾?qü?¸V?¦â?ŽÑ"??h•?Dº?Õº?‘)?Ž×?Ž6E?/?Žª?;D?un?PŒ?Ž2?ŒÜŽ?Œïñ?Ž¸‚?°?ŽŒo?ŽŠ1?Ž?Œ^?‹a¨?‡Û‡?ˆ¬B?Œ?†ØÂ?€‰ß?‚ d?‡ã@?Š,Ý?ˆ”n?†o ?ƒWÜ?…À[?ˆ6?†[3?…˜{?…Æ?…b‹?ˆ#Ó?†›®?†7?‡Vü?„ê¹?ƒë?ƒÌ?…p[?ˆÊ.?‡ü ?†o?…­y?…Áò?†ÆÃ?†T&?„Û?ƒûð?…yÞ?‡+#?†µ?…_?…ªS?…4?„cB?„ÅŽ?ƒb+?‚Èm?ƒçÇ?ƒ±ú?„Än?„ r?ƒ*?€$Ž?€Ó?€Ñ -?ÞE?„¨?„ó ?…Õ?…@X?„VÅ?ƒ»õ?ywè?f}j?x÷?|¬þ?zë›?‚(–?„ u?Âá?÷?ƒ­a?‚`G?{Ì?*+?ø÷?‚;­?‚'£?…t?„V?ƒ=.?ÿ?w‡§?wÄo?ƒ=?….ç?„¡u?„NÍ?„Rp?|Ù¸?}¼@?yü¡?je?y¥?jR?g?’?€´’?…p»?ƒCO?~9¡?O„?ƒ@º?‚Íq?ƒÞH?ƒò¾?ƒž3?sŸ?xg?}5?šK?gë?‚¼?ô#?}‹|?u²à?x$Z?ƒÑ?ƒT?x•¼?]Õ?nê²?x"N?að?‚%?«ø?€s?€‘0?~*r?€Å[?h¦?€×?}?‚‰ß?‚e2?€/k?u[á?fì‡?u©}?~ñÅ?ð?´†?y?€ÙO?´¶?€ïá?Ì¥?K›?®O?t?{á¶?j…´?Z·‰?c›?twa?|vy?¡Z?€X^?€DÝ?|ò?j[³?d¬„?oÑ£?sÀm?|….?}o,?yr?v_M?yÀn?yü?w„w?r—j?fì?P,Û?8ž‹?5Z¯?E?\?gá?sr¿?y È?xÚ?x;Ÿ?zÝs?{ï?|•¬?~„Å?i?~ˆw?}U?}?~u´?H'?Æð?} µ?t¶w?wÞ#?}–å?€5»?€I?~]Â?}÷|?}½˜?xÕá?zô³?~ë›?…ƒ?LP?~éx?yì©?pÁQ?x(?{WÊ?{ëÍ?{™?vh×?{*L?˜â?€}?;Þ?}SÕ?{º]?}É´?À²?{çC?z¶v?{>®?xz?tEå?ka?S­Ê?:2??Nq?Z²Z?mPŽ?uÖN?xNX?n?_Œ?[¼q?_²&?bë_?]ú€?bÛ??hu”?k'?ir›?chY?h:?gg˜?f¾;?g£U?c6d?gˆ~?h V?eë›?gú3?fÒ?l9Ò?j’Ÿ?cRE?iŽr?g¡Ú?iöÑ?hwÆ?aÊ?f¼?a|´?c5Ô?h®®?a3Æ?Zao?\,v?]ô ?gÊè?i+0?d÷0?d?]Oç?dÂÿ?hô@?b§?^á‡?a{7?aË?`Úc?`¨"?aÕ„?bæO?báð?c/?b^I?aLœ?ZQ²?\-ä?\Ö¯?Vvâ?R6H?\,»?^Ö­?`f?c(?a¸?fæ‰?d(?Z®é?^žò?_á ?Xl?]óX?_÷Ä?Y‚ª?RR¨?[±y?_ž‘?ZY ?Y\I?`rÒ?d72?^£É?ZqÁ?bo¾?acb?^Q?aȸ?`ñÇ?`¢Ÿ?a<ú?aÉ]?aOÞ?[Dµ?_jÊ?hɧ?cù¥?[¼/?aÓ€?g°?a_?`ÿÇ?`m“?b??\ò6?`aÆ?fj?d†H?_²?ev%?k|ÿ?dÏ?^¿@?aŠ‹?g(:?_4z?ZEr?eÛ–?i"p?d?TÛz?T=5?`€!?_Ä.?_°ý?`‘ã?d©Ò?c¢?b%\?cLÉ?aÄq?YÕ?X·5?Z©ç?at­?càÑ?`rÑ?aa?cf[?bÍ6?cþy?h©2?hD?c×?Y…k?X`|?c¿û?_ó†?\š:?aÆý?g7Î?fe€?bL>?b›%?c{z?b(P?\%ï?[…œ?eÂÓ?fJÊ?^i?Y¶¯?Qè°?]Ad?cº‰?^Ýä?T™h?]p´?_AY?\@h?^¾Ü?^úÜ?\ÌF?ZC0?[ÀØ?]äã?^¦ã?]u?Zs×?Nº?\‚?bO?c¥ü?bÎ)?\cö?S±D?\¼?^¿û?a ?cA?aÎ8?[ó£?Tï?V}û?c@i?d¸@?cNÓ?[m?Xn?]ô›?`Í?bC7?WÓX?T%'?^w×?]à?ZM‡?Uºl?^ƒ?W¾?T}?TKd?_¬Ë?dyj?a£e?avõ?a„B?`5?[ª?\w?^~I?SS?Vøï?cXQ?emH?aiï?Z!A?J>?Uæ?Wš?V6²?U~?X%B?Wœ?XŸ®?XŒI?Q9?NcW?V5Û?[M"?Z -?XÞ^?[f§?Vµâ?W£Ç?Z'·?[®€?[4â?Xú”?X¨o?Y”ï?W0?Xƃ?ZDê?Tg?S}'?T7Þ?R¿Ú?Vÿ!?Wû·?U€?U¯Í?YI£?WÅ"?TÄ„?V j?VuÚ?O&Ò?U£õ?YÃç?W?X?Sì?Rýü?Vÿä?XYp?VÐY?X'…?Wyž?WLf?V€’?WŠh?S¾‘?S¡¦?O™?OuL?Rœ¶?V˜á?Rî³?Q?MP?H¾—?R8?S•ã?TÊ?UÖ÷?T­×?X""?Xþ7?W½Q?VG¡?VmÕ?RÅ%?S&%?We%?PÈ?MfH?UÍ?X(?V¼«?RΧ?M˜Ò?N¹ç?Cóf?QN´?TÍ¢?V,­?W?W}²?Uò¯?S¿?RH1?U¢…?Vhú?Mßô?NƒÚ?QÔ#?U1¦?U»á?S„…?U‹;?V?W ù?UÄ‚?Už¡?Wb?Xí§?Wy¯?Sëx?RaX?SCH?Vv?S‚«?NÁÜ?M?U4ý?V+?Uµ–?Vƒé?V½8?QêB?Rî:?V×ý?V>?N~-?N¿?Uˆ!?Uõ^?Tt?U<Ï?PÅ??Pa?SKè?UÒ?RßØ?R€@?T?NÓx?QQØ?S±ë?Srë?Sèø?T‚Ê?UÀ3?Tý?PÐG?Qð?QŸä?Q-,?T[S?Tê?R¾w?Q\+?R6L?S‚Õ?T6‚?RQŸ?Rü(?O—¼?@ -7?MQ?Rs?Sâ¼?TÌ4?T»È?Sä£?NI;?Fâ?I'^?Nà‰?Pêÿ?Qw,?N"ï?Q»?S»†?Tnv?Pôä?PÖø?T]ß?T ø?SKˆ?S?SáŸ?T9Ë?QV-?N??Qµ?R€?Pëž?OmW?AWã?Hµ8?O¸Ÿ?Lîÿ?O¹÷?NAj?M®?LW?RŸÏ?P3?P,?Nm?IyV?LïÕ?NB?Q6?Qºê?Qjm?Oò ?N¡J?O^ò?Qú?PÔ@?O °?Qc ?RQÃ?I&Á??Ï´?J|J?G–î?KÈñ?P5?QÚÑ?O»à?N¥Þ?Lº?Go|?J­s?L<ÿ?N‹æ?PU?P¹~?P–¥?OŠò?Oñ?Q#Þ?JxØ?M‰?N‰e?Eÿ~?E¶¼?Fþê?LŽ¡?Lüã?M27?O^D?M˵?J\õ?M˜Ä?N;?FN ??Ȳ?L'?J0§?CCg?;`@?JŸ®?B§õ?Dn&?M]Ã?Jô.?LA0?Mü†?OQG?KxY?K?KF»?Oƒ?NÜa?Ou?Nå6?Kÿ~?I&ä?K¹Í??þ_?A_Ö?FÈi?JmÝ?JRG?E1ð?Bt?FΔ?J„Ñ?H>?JcÐ?JM}?FšP?IÜÕ?J¥Ù?K"º?Füé?:05?<ç×?C‘´?Fˆl?ET{?EÁ?E­ ?E{p?FŠƒ?F6Ý?BþÈ?CáT?CG?GHÚ??èH?3·ë?2µÉ?=IŽ?? -w?>b??+Ï?6Ù[?=÷m?@B??ÑH?AÐœ?>ì?ÚV??åÆ??o¯?:x1?9™?<±·?:²m?:œ?DA?@õ?:sú?BVÌ?A¶$?:b ?>€?A‹Î?=‹;?>$9?EOh?E -X?<äÁ?;³?B†^?D‰?A -š?;B?>©?BÄX?EÈ¢?=R†?<Ä?Dë­?CCÑ??\s?:ˆ?C¬s?Bañ?A?>8¦?@Uå?BwG?@_(?BÛ?B ?@™?5‚Ì?=S‰?EöC?Cvz?@ü‡?7ð4?@8?G¹?D²‚?D‰·?9 :??!?Dõc?E"2?AÆú?5ÅŽ?<?Gò­?F³Š?C]>??;\?=8j?A?F%Ü?C‚€?>3’?;« ?<<¿?At?FÓ?è±??Å?F}Í?CÈÒ?B,?Aê -?=¢Ì?=ŸÕ?F2?D2?B¦?A{ï?<¢•?9|¼?C5¤?97ñ?0¤C?7²j?>Ô?8)õ?Bšˆ?Fžô?D‡?EuÃ?Aóe?;•À?:̸?D1:?DÏW?Bd¤?@#Ð?=÷é?9g”?8SO??Á?C‰Ú?AÉ ?B[³?:E.?9F?;i¶?Bža?BÊ?B{!?E›??,?7 -?6Vþ?A“?=Ö¢?AEÕ?D~>?AZî?<£%?9Ý¡?9Áæ?AÖ?Dî?Bô?Cï£??d£?>3~?3N†?9{?<¹?2?<’+??æA?;?5Ý?:Ô¥?<ï?>ˆ·?9ü¡?3á?>ì-?@Qx?<»‚?<\aý?9S??êJ??›1?B`æ?>êa?8ü"?4³?;©ë?BE??ï?? -•?BM?B¬:?:ìQ?=¾Ô?@î8?A¾:?BÈ“?=Í?9ö¦?BÏÖ??›??yá?=ó›?<“W?;J†?@ön?@4?@r^?=h¢?CG?;I?•?<í?=ÌÇ?@´?? -Ð?>n?8ÈŠ?/U?7ç9?AQô?=ÊÎ?<ñ§?4¡d?*[u?/Ôš?<{?<´æ??U?AA??èi?;ÓP?:™I?=2T?<Þü?.ØŠ?7M ?<—õ?>Ð,?>8á?=øë?õ¤??mã?=ï2?9IÃ?; ¿?=ù¦??Ø?>¬?9Ó„?;}?=IX?,}œ?2ér?:C¬?=`Ç?=uþ?>§w??.Þ?< D?;-Ö?<w?=ô ?=M?> ?<§.?;úø?<Ÿ?>Ј?>‰?<¦C?:û?:Áü?= C?=¶÷??ì?<¹º?:"?4}?4m0?;‡1?:.¤?.œ8?-U‰?;ìÒ?=3ô?=~W?:e|?6”o?9®Á?<ÿˆ?=¨N?;ñö?5þ?9„?=/Ä?;7}?:¸¢?7·0?Ö“?'ÆO?;ab?=€Q?:~3?7TÁ?9]-?<Ùv?<-Ô?<@]??9‚ö?:2®?#«?Yž?7îŽ?5"û?1C:?8h??;Æö?;µH?9›?9V3?9}?:è?;?;ʈ?9Ä?9½]?8gœ?: L?< ?:òñ?7‹?8É?7²¦?9à8?56:¾¹:è4ü; 3{;)½…;Iõ;cy;g';TWð;=1˜;0ë?;*’å;ö:ûÓ:º0:64:ŽŠB:·¶';Þ˜;+œØ;MãŠ;[/;Pç;:”;'bñ;®$;í<;Ï5;¤¹;6:#;oýL;”û‘;©‡;¯äñ;ªßj; ,·;–~!;Žæ5;‡°";„Vo;‹6;š.œ;¥[–;£ºŠ;—#;† ;gÇ;Dˆ@;)M/;!oó;6\_;iXu;—2œ;µ²|;ÂËÜ;¼"±;¬q;4¹;^Ð;zpÚ;MŽK;#€å;*M:þY‚;§®;0´;Vxz;q+†;~ò?;„#—;†ï¥;€r÷;V²á;6®:ãAð:ÕŠk;* ;d°';¦ùT;Õ-;î&b;òѹ;ó Ü;ý ‚< ÷¤<)<”<§<^{<$®<*§g<*–L<"q<$Êü<)„<(³4<Ëé<Ù<cè<Ú@<[-;úžR;ìTI;îØP<·þ<T‡ä¦=ºª<Ý[O<£›´<‹j<‹8Ý<šÙ<´þ<ÏÝy<ØLb<Íúz<Æu7<Ø©Ð=œ£=B}=-l=6g=F n=_ª`=uìÔ=vfn=_Oe=BÈè=2U€=.ç=+éŒ=«= à=Qd<úšg<ìz;<ÏW<³Ê;<³='<×¾c= -³‹='»R=4ž¨=,Úú=ðÎ=v<á6Ê<ÊÂI<µµÁ<õ<Š><‰ý!< ¤}<ÉÝD<ùÉ2=ÿq=H=&¦*=+“×=-uE=0jÆ=9y)=F7Ò=O×y=T™è=W#f=ZòÀ=c†H=mîÓ=p7=fEê=Y/@=R¡²=TÖ‚=[GP=^`—=Yƒ"=MÂ-=?±ô=5ø–=4b¬=7Iî=9W~=8ou=3m=*=%(ü=*ò{=7Ô†=@£=>t=3ã=)âB=* â=1’$=9æ5=?ÊÓ=>„p=/t=¹ <î<Ô 7<ÚçÈ<çIµ<ákH<Êá¤<¹Š}<½ô<Ò³Z<î[=Ra=¿Œ<ÿ[à<ð­°<Ü[<À…<£ºÃ<×Ð<ˆï<ˆ7…<˜F<¸O<ÓÄu<ÕY@<Àc@<­Š<®À<¿ö<Õ†G<ì‰=½= qø= -qš<õ®ÿ<ÓØm<Îóˆ<ïÕ¼=U=)]x=9¯×=I*r=[ò=fã=`mÍ=HÔ)=+Ö=ån<û×Í<Ü%A<ÔM<ãF<ñf"<ë¹Þ<ÜÐ<ÞI<ùIý=ÍK=0—=($~=5ö¡=G.Õ=P¬=FÇÂ=+p<= þÐ<쪧<ü!¸=õÒ=BÇ„=^ð×=h¥ô=gØç=oy¨=‚¸=ŒàÝ=ŽÃ3=ˆÔ=u¥¥=O4*=$÷Þ= -ir= ¦V=ÚÁ=!\‡=(8=4Õk=Jåf=dR·={G =…Öú=ˆÍD=…†={«=j³½=`oÉ=WO‰=I“0=9•ù=(ß²=ì=a=Êï=1y=I»‚=[:l=dá =kF.=u=‚y|=‹y&=“G‡=™ä=Ÿõ!=£·Æ=£¹=Ÿ9¥=™l6=‘ÿ¨=ŒG¥=„ñ=”š=™Äk=˜ìÃ=’Å~=‡Ø"=ym=tó=‚/=Ï=˜¿Ÿ=šX=™ e=—ÄÀ=“$(=‰†Ò=|Òì=g±Þ=Wh=Vœa=j!Š=€HÏ=„öÍ=‚Çi=vKÙ=]2=?‡=(‚=%ÆL=<ß=få=ŠU=š1v=šƒï=ŽÙ¶=ƒ­‘=!»=†A=ŽJg=—ðø=¢žC=«rO=­¨²=¨#ê=Ñ9=ƒ=w=I¢R=(åØ= sþ=&™t=(Ë1=%(›=,1¢=J=vÙÃ=—=Sª=¢î0=¡ÂV=™ÁÞ=ŒCÀ=w!6=PKô=%hÛ<ÿl<Ø`<Ü-4<ÿ‘S=²S=:©'=R¸ž=\ =S Þ=@K =71 =;Gü==U=5@=%•€=<ôv<κ3<»a<¹í<È,<èQ©= œ…=)am==°:=D4¤=<=+šj=1= R(<ùçŽ<ì¬<ç,}<Û|<ÐÑ"<ãÒG=ºj=0¤Ó=I=[ÃÖ=r}s=‚˜h=§=d¡Ñ=:@m=7=”=*®²=A–‘=M =Hhö===:À=A}™=Bz=?i=LÑ×=pÀ=Š“Þ=•Øs=›Ó«= s=¢§Ú=Ÿ¿«=˜§ó=’hæ=‘ S=“%=˜l&=ŸùN=§n=ª°F=ª·°=«@8=¬í<=«Dê=Ÿ„=ˆÅ=a=®=EŠ==Â?=D›#=U-@=iAì=t=m†ž=\J7=P0Ó=Qôo=V² -=LÙÃ=8=1P=G¤ =oÙ¤=Š:k=•öQ=›`-=›¼¦=–¤¢=‹qŽ= Ú={yK=†Í×=‘ŵ=•ˆ•=â=„X¥=m¿@=W-=DÚê=9<›=8­9=:ÃÝ=0\=$=²Ï<û—Ç= -0=ÿ7= z<ý7&<ñå=q…=–(=%Aw=9=(=Iõ@=M¬I=>ìE='°,=c=íY=8,V=QÕ^=ZÏ”=OK|=9íÝ=&In=Ϥ=*© -=JS=j¶=~[=ƒƒ¼=…Jy=…Òû=ƒeò=u Ê=\! =MË£=WÃ=l’T=|æ/=”ž=qÙ=Yf=F(Ã=<Ò==0 ©=ž=Ò+=+ÿÙ=OÜ+=kA¶=oi=dŠ=\»=b˜N=q«J=~—L=‚Pô=€£C=rùð=]9>=LR=N,ÿ=^‰°=i@!=cI°=QSç=B{=J 3=g Ñ=}S+=|¾ö=vÙN=|¢U=$´=gƒ4=@ä@=.`ò==Öi=]Í!={ÝÂ=‹u~=™µø=¤Ë>=¥¡=œQ­=\%=ŠGh=‹³×=ŒO·=†ÚP=Êë=…Ð=vJ=–5=• =”O¤=’¯‡=‹Ýˆ=‡ ÷=Ì>=Ñ´=­C=´¨·=´~È=°Vn=¬É¸=«‡=ª#¯=¤î=œáŒ=–ÓS=‘¼T=‡ò=t„=^4n=Viû=Yâö=c”w=k=iÆì=\)=D‰Í=(ê=°l<ò*}<É…8<¬Ð<¡¯?<¤çŒ<«T<·£ý<Õ©´=Á=Ž=8=G?ê=J8¨=D×t=:b=03=9Ô=]e`=‚Ì¢=‹«Ý=Œ¦s=’„È= µ=¬¥9=®ë=®”¸=¶Ü=¾:A=¸Š½=§B=˜EÐ=öµ=Š|\=vôà=I§n='F¸= «€=(z=)"0=g =±§<Ö\ê<Âu <ËÇ<êÜá= …1=%›Q=CD=e¯Ú=†CJ=˜|„=¦‰è=² =½c¶=È"=Îèå=ͦY=ÉË©=ÍôÀ=Ú%W=èë_=÷–?>_0>¥»>ÍÉ=òÏå=êe=òY>òm>Òª> -0À>î˜>t=ÿmñ=ùýê=þ,a>  p>|>! ^>&b~>#úÍ>˽>ŠW>¼¼>Î>/0>ž>øö>"©ø>"€->#iï>(«>0¦È>9S5>>€È><†Ø>8­`>8Û²>9y>4ƒ­>-ºz>&|J> -t>O²>–,>-§ô>:ä®>A†K>8”–>° =úûš=Ö&m=Ǭú=É‚Š>.ó>FpW>N±>Ij>?ø†>8 >2Å >(««>=m=ëíÉ=ʽé=Øžb>€Â>!ä¹>8Ræ>GŽÛ>Oª`>P¥<>J<>=½À>2@<>,†ë>'(j> øµ>"A >,>3<;>+RŸ>v=ú«=ú^>5¼>& -,>/†§>8Km>Aå>>{>(¹ª>M>!#°>5Ù½>:Ý ->(íÚ>.‹> V> u×>)ä5>K.»>^”>]%T>Sõ•>Q†>Sî>X¼¦>g¿7>~Aƒ>†ç<>…ªˆ>|€>l†¥>eHù>fŒÎ>aWv>L)Ž>6`¹>/1K>0Š>+ É> {>GT>;6>*Ë>9“Ø>IA>\b>iq>jwU>a|->Q0!>=Ó>0X>07W>;T´>Es%>G‘Å>E÷ç>BÐ>8¡8>1cA>4þ3>;öë>>ƒ³>Bú>O>d~>pÞØ>k:Î>Y‚U>G:ƒ>9\œ>-§å>"kR>PY>8Û>*ý>;º‘>JÏ>PZ˜>R­>R’K>OD|>E+ ->+0™> ³ã=ø[i> ´p>,v™>B³g>Jzî>G’£>?r©>8cá>4ï¹>4ÃM>9=æ>@%¢>DÍÃ>I|ƒ>TdÛ>bŒ>jA‡>j}(>k°!>rþþ>wÿ–>mNw>Yö>L~>Gi>Chù>D) ->J>I*>6¸ >îÃ>ä>¼ñ>.jÎ>:âq>B98>L”>ZŸ ->_í>XM‡>Q&³>W.½>g&s>sní>n_E>\€°>TÙ>ZÏ,>ZÌÓ>Sx'>Xw¯>kš¡>vUÝ>mžt>Z÷O>H’>9Ÿ>/i>+ >(èm>&{é>+ÿ>7¶+>B¶>L%>[ÝL>né>~ ã>€v;>z8Ø>uÁë>rÿv>gL >Q‰>=,>>ÿæ>X*á>p¦È>z+>xGN>lw«>Slû>.èx>ý9=ÂD=‚Ϋ=A7=V·_=Ÿ"(=êl>>>6µ›>=2>=4>BÊÅ>JA#>R¬k>_ˆÒ>kÄ°>pwB>q4®>x'>…Îõ>–þ>¦°>«°> 8‘>‘êÐ>ˆÊ>”A>aêÞ>Gø´>>½2>4îè>#©8>%Èé>Hx >oùa>|ÆÇ>njÙ>Z4y>Va¼>mO±>Š»Å>ž6>©úØ>«‘÷>¤? >—„µ>‰0]>pqâ>Ex> f–>HÞ>§>Ì|>3iD>bE~>Š‘Ò>™vt>—¾>q±>†s]>„Î >†²§>ˆRÊ>†Ó>(U>o¡B>MI§>&K{>t¥>/Ó¹>\èß>{‘û>‚8>‡T>ŒµÂ>‰kC>so)>MMá>=]µ>FVƒ>UB¸>coø>jŒu>[Š©>;éå> …>\>1§N>a½>Š€>™ßP>›°Ú>šø>¦÷<>”Ÿ>Õ “>Ó†>ÆÝÓ>ºÆè>²È7>®ä¸>¤·ú>ŒŸ.>bÜì>VÌ}>‡C#>°Üª>Èhm>ÈŠ’>Å•>Ì<³>ØiÐ>äis>éy¹>Ú†ˆ>¸:@>›8è>,ë>Œ]>•¥G>ªÌ@>º¢Ô>¿¿Ñ>Ãç>ÇÖ¯>Í[>Ûúx>è“Õ>ÙÛ‹>µ>´>¡sk>³rõ>ÅàÑ>Öä×>߶c>×rr>Æ·J>ÀP•>ÉmÞ>ØF*>ã£È>ìÓ>òM >êJ>Õqm>Äù>Åø>ÏšÊ>Ô“™>Ð]4>Àõ‘>¬‚›>¢à>¯Ô·>Éc…>Ö–¨>ÎT#>»å(>¤öÕ>„–b>Gµ>7¯¤>l®Ñ>›Çy>°«Ö>³³e>¯ „>­T>²I8>»>T>¼wq>·Ï>ÀS­>Ú¼W>îžð>êåÏ>ךp>ÇœÆ>Ç°ˆ>Åã/>¨xÛ>€ÉC>d› ->xs>ˆÒR>™‘Õ>¹o)>Ù£5>èç>ä‚À>Îb>­ÐŠ>¡ï¥>´Æ¿>Ôf>ëÙi>ðzÙ>â*Ê>Í.”>ÃD>Ê”{>Óþ×>Óåþ>ÑtM>ÓÝ_>ÓX˜>ÌHs>ÐNô>ÝÚL>Ù™>¿' >¨øj>¯†>ÏdF>òÒN?¿w?)î>âl¡>Çfß>Ä8ö>Ú>ø›?­€?1W?ÆR>ÿO >÷pÔ>÷¿w>ñÇÙ>Þ?>ÈZÇ>½Ó>ÀpÀ>ÃÜþ>¾†'>´™Ì>«Ò³>¬žx>à i>ßÿ>çV>àA¸>Þ_>Ý®È>ÚDr>Ûhh>ãöÙ>ñ£?q?¼¢?–?Ü¡?ð?? Ô? -^¡>÷,ì>ã ‡>浡?OC?(ª?Ζ?1ª?=Ý?µ>í:=>ïíM?À†?eÿ>û´Ã>Þ\¥>Ï©Ó>Úö)>úŽ=? ×X? -0? Â?–?H?'Α?%Ó?àÌ?}Ÿ?× ?w±?è?íL? §8?Ê¢?3? rÿ?';? -IÇ? ?ô?3ù?.C?]·?u?Wš>òÓÕ>×ÿ˜>ÆT>Æ >>Ò/À>àô#>ìhH>èT>Õ$>ͧU>éæz? LD?q^? Óÿ?Põ>þ¥t?*5? Çœ?’f?‘ƒ?z!? ?…á? -ø—?jC? j§?>ôå ->úæÊ? Á÷?Qè?'7J?'c?#*à? ‰?ÊÏ?Ø›? ‡?Í7?Öh?-]™?.‡Ò?#›?œ ?Î7?ê?"ñW?"Q?!Ø?ħ?= ? ªÑ?–ê??)ä?Du?²Ì?rs?¬½?Úî?&Kû?$ñ?·Ó?#? .ý?Ê1?Ø? ”Ž?ÜÂ?r®?x?žQ?új??;2?ó¬? ´Ö?Õ>?*Š^?9Ž»?9tF?1Jæ?*Òé?)´«?.Öw?63m?;@]?>·K?<Ÿ?4Ñ£?3÷+?6é?5ò?4˜«?0Î?)úF?&ri?%®_?$^{?(o³?/{®?,G? ÂÒ?ö*?¯ž?is?ÐÉ? q#?ïí?Ÿ?ÅÎ?Ç?M¦?¾á>÷ä9>óöŠ??až?:Û?âF?!?Ò?æ? j?Ê?,%¤?<@t?B½ø?<Ín?/^8?$ŸÈ? Oÿ?"¿? »û>þ·ø?²â?b?=Ã?Í%?ßæ?ö‘?ô®?# ?(ž?$~?Û3?dî?ð?1&?nÎ?"`? ‘W?%ò?¾Á?$?ì@?ÉÀ?8 -?$`?,âþ?4?1²Ì?$ú­? x?¦?¹Î?!ªG?"Ð?#®L?#¿?Y'? F?9 -?͵?$ûx?*³u?&?Þ?R?!èî?,A“?4(T?:œÚ?<Ë'?8%q?3*Œ?6å?<®q?7 -t?#r? i? ?‹8?/Œ?©Š?#õ ?*u?.Co?-x*?0½&?5J ?1Ù¬?* w?'n7?,šb?+‹Š?'²ú?'ñD?%ìI?Ž@?ù*?%3q?.øØ?/n8?-Ln?)ù?%gD?$èž?&Y?#qÞ?#?+Ó?2ñy?.” ?%ô?%òH?+7­?, ?+õ4?&w‹?Ž?Õ£?(¼A?){c?ºX?fG? Þ7?m=?„a?!5q?&@ô?(ˆ‹?)*Á?(OJ?=?­b?Û??%›L?&›‘?+V=?4”Z?;!?8³Ï?*6K?"'?(³?*þ?!“r?¤? Tï?%Ï? 7e?[B?p±?0µ1?B?O%§?TñO?SwÍ?J4Ú?=çU?:²?:´w?7V7?;4?G”?M_?E «?9Wc?4êl?9,P??g‚?D#?JÑÝ?QÁ?Me=?;9×?"h[?×K? ˜u?5'7?<Ôš?9%ç?>·À?Mjg?X†X?^Ëš?^‡Ç?VŸ=?Gn?=½‰?D,k?Gë?8æS?(ìþ?+”0?:ÃA?F ç?MŸ˜?S”?SîJ?UÙg?[jx?^¬ý?bÌß?g1ž?cZ?T£V?Bá?.Ì?? -@K?Yù?(߇?0k!?.σ?*¢è?!ø?R?ÄÞ?*–?'`W?0Ö“?8f/?>0h?@ÿÒ?Aqæ??¹Ç?:f?0J?)_ -?!ÆÍ?·?v£?È?%<ø?+zÂ?2­G?5#­?2†?1ªÐ?7Éþ?9 Ü?4HB?5 -$?6Só?1_q?$ÖQ?°´?r?"iƒ?!=k?4ô?ÚØ??!Ó†?*å?)¤ ?g?<\?þ«? KÜ?F‡?$¿h?'j?%cO?VÞ?†?#c?(‡€?-‹2?)fö?$hÐ?*•f?5Ѹ??Ëõ?H„’?HŽë?9m?(.ÿ?%å?#À?Ú…?Œ? ¿‰?$i?:-Ü?Jf¨?OI^?CL®?/Åš?$ÖË?%à‹?+ÃÓ?3·é?<.¬?A˜ý?D§h?GÀé?JIÙ?Oò?SªX?IÀ?1y•?"x?(Oˆ?.(—?.5ª?2í*?5…‰?3¶?9U?@N¢?9ç??3ÃÆ?1ªŒ?#c?7?@ê?{Æ? þ–?)yz?0ËZ?5+Î?8”??;QO?<±ë?Aá?H[Ø?B[?5ži?2‡I?1&?'Qk?%ÚŠ?-Ê?2{?0 J?-7?+?''Ç?%¡ò?$ë?$‚G?'?+ é?6«ò?B¯Ì?H›â?JeÚ?C’Ó?9G?1p -?&·Q?°ó?ç? —?6ó?1x?j?(ÂW?84?=?@1ü?DÁù?AAš?7hÒ?0@?5q?7k?.k%?,†í?*ØÌ?#äÄ?# x?'±ø?'`Q? 2ó?\8?¸?d?3…?EV«?LÂÇ?J?Kð?K¢O?CpZ?7™ª?ïD>õjì>˶R>Ðht>å´V>ßxh>Å>>Ë®W>ö*™? Gã?Ib?Ñ? ²è?­»>êj¼>Ð '>ß6? h»?'ÔY?2¤¯?6÷?2d]?ˆ? ^Ú?ˆC?M6?.þ?;ßs?@+?>|e?8)V?.¡y?íÑ?>(>è• >à ->Ûq¬>æÃ? -Þž?,8?Cq0?I4%?E"-?EèÏ?OÈd?W¡,?Zéy?\Ð?Q%…?9tŠ?#K?‡E?&á'?Ft›?]¬?a«í?Wn´?IËû?LÌG?]1!?iÄ?f¤?](à?Xœù?]R*?dGÍ?gÄ?V.?7;~?0w?9æ¡?5éÊ?7-Ü?EE©?JBÒ?H7ß?Vž?jÛ?obÎ?f4À?VùÓ?CXÎ?/C?"s&?"t ?+÷Ü?!ü? N ?‚›??ZŒ?S”?V,Ê?WF ?eD?s½¨?sKÿ?fìâ?Y y?Sq?]X??tm?å?|Â?v6?y{¦?}>?{%?wžæ?k€C?OÕ?;—ó?EJ ?V!?\ªÂ?i"?}‘8?…m?ƒÍ¾?öc?©Ï?„p—?‚ñÂ?~‰C?yð[?{B3?|i¿?yç³?vcw?tÝT?vv+?tº±?l¬Þ?h¨?bò‘?D{??#ßâ?/8+?Qk?d5?nH_?{¶V?|y¦?rWg?r'?sG¹?xê?{_o?wâ^?v+?oÖ\?mpm?x2à?x±?ožø?nÿ?o!Ý?h‘?c?oab?{I[?uÃH?eS’?Y?T©~?Y|Ò?i¸?€K?‡R?†ûy?†Žµ?†Øõ?†R;?ƒwm?z“„?r=Þ?|L3?ƒþ?ƒXÞ?V(?€]À?€pZ?O?‚fn?‡|Ã?‹¨?‰‘?†3P?…÷?ƒÌ–?†¥®?Œc?Ž? ?Š…¿?‡v›?…¬k?ƒŠ±?×ê?ƒ û?ƒi“?þ“?ÚÓ?‚o\?ž¸?yçX?}C³?tY?„”?†Ë?ƒ¿à?„û–?†Ðö?‡dò?‡2?‡ ³?ˆ&¹?…õ„?ƒ}i?€–ä?w8Š?j7‹?bÁ£?f‡;?oH ?rØG?vð¥?‹?…¡¯?}[ƒ?i|V?f××?iQã?k¦½?qP·?}õ?„Ò??‡P=?†>?…G¬?‡Œ?ˆi$?€q?mS˜?o@I?t¿Ø?rü?u¼ì?Æ?yª?i…û?j{ö?uS?x•?y‡õ?~W ?‚Mî?ƒÅ+?}?z4)?vI´?v©]?tób?r3Æ?t; ?w­?zh¾?{°\?|ÅÕ?€K“?„ò?ŠE ?Œ3]?‰èÛ?‡iÀ?€Ù?oY?tƒe?~o ?yd´?{a -?‚Œ¬?„QÌ?€\?yÉt?{BÊ?€Û?†ƒÎ?‹S@?ŒD?Ž???Ž !?‹&¾?‰ Ü?†®X?†¶¯?‹Yt?‹C9?…VÞ?ƒ´?ˆÊé?Í?“K?“Æ?cq?ŒŒÀ?ˆŠr?„TÌ?‚sô?~^l?8K?…h ?†ÀØ?€`›?s\8?s?|tÆ?€Bû?†{6?ŒÌ6?Ž=R?Œµ•?Œ‰p?aÎ?“£n?–¿P?”´®?¦@?ˆb“?…ãX?‹‰~?‹½±?‰Ü¯?Žž?‘å£?‘"¦?ë?ŽMŸ?ŽjQ?Õá?¬®?>W?•° ?—(À?[c?Žõ?“íB?” 2?º?Šîó?“z?›9;?›.J?’ÜÑ?ˆ]?ƒW¯?‰Á'?“q”?—@?˜0Œ?—³o?–Š?”)½?’í‰?’'?‘h®?’ƒ?“N™?ŽÎ?ƒee?{Y?~m?|ë?€­T?‰Jÿ?ŽOå?Œó -?Œ¸&?•`0?ÞU?žÊo?–v?‘»º?›1©?¤œ\?¦,? ÅV?›B5?›Rê?œy‹?œÐ²?C÷?œ¸û?š#ò?•Ò1?‘Ž)?’O¨?˜MF?œæö?V_?š -?—u¹?™š?›U -?œœñ?ž8ü?žî~?žAÆ?œ¾*?™V³?™Î?›S?—²v?˜\?ž–Ö?¢Š? ¸ê?œ· ?—x?”Þ?’ú?pê?‹‘õ?ˆÊ–?‹–h?‹Íj?†¿?‡+ª?EÓ?J?‹Oi?‰o"?‰)?†à?‰„„?æß?’?O?ŒS/?‰/?Œ2Ê?ˆwb?ƒûz?€ž?ƒC~?†…B?…FJ?ƒ…t?uÆ?Eìê?8•?†?CW?Ms`?2Ïh?(h‰?Io?bí%?p3?zQ,?ˆV?µÒ?}m—?€T’?‚²‡?„å?„¼?)?wËÍ?u,#?zi9?€/q?jÀ?] ?~P?~7'?€Îº?„8~?…ï^?„œÄ?…0?ˆH?†¹¬?úc?ƒ?‡P?Š’?‡ˆî?‚!/?ƒðç?‰^?0»? -%?‡_v?ƒ“²?…t?…;Ø?…"ñ?„¹?~ˆ?¸r?„ï^?Šå·?kB?Œ4Ð?Š)?‰„ý?Œ_ô?Ž¬£?ZC?‘ú?¼ù?bB?‹­†?‡sÕ?…–¢?ˆY?Š³_?‡¤0?ƒBÚ?‡ä?» ? ?Ég?ª±?‘Lì?–mÍ?—]%?“Ä?Åà?Ò½?æŒ?Œå?˜µ?k ?µA?‰1?‹"?’M!?’Ì]?Ž*{?Ž_¨?ü|?ŠoÍ?‹dL?ŽÑI?‘m??“&Û?”?Ô?–7.?—çE?šsà?›j-?˜ÞØ?š J?ž%a?žõû?¢™?œlí?š.-?šf?Ý#?¡ë?¤Œ??¥eg?£ÄŽ?¢),?£sö?¢Ïf? «?é›?š¦Í?—'?™}+?ž‰ï?ú?˜Â×?“|å?•qÕ? Ö£?§ûâ?©Çã?ª ?ª9v?©±B?¨]î?¥PŽ?¡3f?ž¬??š™Ô?™Ä??ž¾¾? ó? Äš?›®?—˜?šå?žu?¥>?¤n?¢Nj?¦Í7?¤v?–ª?“ÁQ?Hq?¡H? ‡?¢®‚?¡ŸV?¡³?¨t¼?«W?§{Z?¥ò¶? IŽ?”“?ø?™‰{?£¨? "K?š])?œq²?¦ÆŽ?¬@ý?§×?˜üW?‡ïª?…uõ?˜¹?¤`³?¡ñ!?¥”?«¯y?«Dÿ?¦Ê ?œîn?–UE?œ_Â?¢Y?ŸŒ]?›ÿß?—•l?Ž7Æ?bí?e©±?`šV?t[à?øâ?…]s?C?xWî?ƒiÌ?‡%?„cc?„v"?†úG?‹Dµ?OŒ?Žaî?ŽBœ?‹Ò?ƒÑÍ?w ?o¯?e”?[Æ?fü?zµ–?ƒgš?…Y?€l…?wæš?€ßø?‡.?ˆ£?‡Ÿí?‰¼a?Š4?†‡?€˜?rd?^&²?Vö?`¾ñ?i‡¦?fXª?a-J?[Ïg?YTå?_fˆ?dñ×?`{:?Q -Q?MlC?[•¥?n¥?w÷á?r’Ð?`º5?SO"?X'©?UUÍ?YqP?g#Ä?uZû?{é¿?xà.?p4X?j¶?m¤¤?f˜?Q…@?M?d̺?x2I?ƒ±»?‚1ö?zÚ×?yÌ®?w€N?Ús?„™û?ƒ¶@?€it?Þþ?€©û?}H3?tëE?x>M?‚=?…Äa?Šv?¬!?¶Cë?¹ZÃ?¸¯1?¸0(?°~p?œÛ2?“‹£? O?®Z¡?°‡h?±O?·ôÒ?¼Å?·¢!?ª:±?©±?²R?¶®)?¸"?µÇà?²å/?²]ë?®zç?­§%?³Oì?´‹+?¯Ž?¤¹ó?¡eÖ?§¨h?­ ?¯ á?«é!?§‹?£¸C?–If?‰Ìû?‹áÏ?’÷?˜6? f&?¦jõ?©Ò—?­É?«,¡?¦·ä?ªðË?¯±x?°~§?¯=‹?¬ôw?ªHL?ª§p?°Ê6?³ðì?´Õ«?´Øú?°Ðå?°Èz?³Ùl?±§¦?¯“?³Ôr?¹Š?·@?¸˜?½Š{?¹cI?°‡r?¬7?©.¥?¬ô?°5Ô?¬Ÿ?ª³?§”â?£}?¥qÆ?¬n?­å_?˜¸?t-Æ?Š¨ê?¨r?²’?°M}?­ÊV?©—í?¢ U?£¦T?­à?²Y(?¯"#?ªj?®³·?´ð?³‰?µ¡"?¹¿v?¸?­Mt?¡#?¥>?­¡J?¬i§?«Q^?²ë%?¶¹©?²ã„?«ã²?§ e?£p ?¦‚L?°ö?±Ô ?±Í?´ä?´gv?´å?µ¼?²Šº?¨“7?¢ß1?¨ÒO?¬ƒ­?«!?©„m?¦Ù9?¦í?ªã€?®zq?­ñ^?­ŸJ?­¾…?©»?ªä?¬Ò±?«­ò?©¬?£ò&?¡„˜?£Ç=?¤´à?¤ ó?¤Ëá?££Ý? ¥b?Uœ?û3?Ûb? F?§M?¬—y?¬üÀ?«»ê?¨ªû?ž#?—ö`?›Rÿ?šãØ?©w? ©5?Ÿv?¹]?žöL? ¸E?¡5Š? #?œ)?š¦$?ž­?£³d?¤Ä -?¡ú–?¡ -æ?£¤]?¤÷‚?¢5E?Ÿü?žÄ½?˜j?Êä?‹ÖC?ý$?•¿q?–ý{?—©?–õ¦?–Kã?—–Â?™,?›£?›VE?›w½?œ] -?šÒ’?—K?˜Q×?˜×ì?—C?˜7—?•@ý?’ê?’cN?’B?Žàà?“Ø?›ü?ŸÀ!?¡{V? üó?ŸY£?Ÿès?hg?˜¸œ?›5Ž?Ž#?žâV?¤Î?§Úk?©$k?©™ ?ªZì?¥~º?™ƒ÷?‘^?´?—™?œ©?›iŸ?œJ?›ý?›Š’?ð«?ŸZO?¦“?©«P?®V`?®‰§?«v?£a"? Ì7?¨h£?®²?± x?±?ªŽf?¤r??¤ý?¡—#?¡?¤Z³?¢j{?šYú?ŸE°?­½»?²F”?²Ò?¯Û†?­«„?ª©Ô?ª@?ª³ã?®%˜?²ú)?±L?§ü!?¥Ùð?­w×?°Ýé?³%?·Ìc?·¦­?¶0?¸% -?¸·í?· -½?µ*«?³¿"?¸fõ?¼6|?¹ ?¸]@?½?»Lv?´ÑS?³——?³J›?µ«Ý?¸ˆU?ºÕª?»þÀ?¸Ça?­P?ªþ#?²Ån?´€‚?³™€?²<-?´8?¹Ÿg?º ?»³?À—'?¼p?²™P?°Al?¶æ[?¼Å—?»¤4?¶ª8?´+û?µË?½¤#?ÁbÓ?ÁÑD?Àx-?½œ6?Àź?ÂZü?ÄÐ2?Â[?»´ ?¿GÚ?ÁŠ…?¼üš?±Î¾?¦B]?°}Ù?½?Êü?Ĭ?Á‡?Àý?ÉF?Ó#Ð?К'?Ê‚Ú?ʃ³?Ëž?ÍK ?ÇþY?Ævÿ?É݇?ΤÑ?Íž{?ÈÀƒ?Ê›¨?ÉÞà?Ç%Q?É›Ñ?ÈÒ2?Å1K?Ä?Â2Q?ÉW?É<?Â0Ð?¶¼?¶ÎM?»‡>?½ ?Æ?ʆ?Λ?Ê¥é?ÄÅú?Æ‘?Á1ž?´Ö?Âþ.?É+b?ȯˆ?È4i?Á`V?Äö?ͽW?Íô}?Íy?Ê<…?Çò?Ê,7?Í€ƒ?Ï™§?ÊÖÜ?È÷?Ì»ù?È“û?IJŽ?Ç@Œ?Äø?ÀÝ?º‚?ž¼ƒ?RMç?V”? ÚF?¹&8?ÁI€?ÃE?¼¹ñ?³Ò©?Ä)­?Ä@k?À)ƒ?½ô?Çw?· ?ª3?½Ã?ÒX?Í ?Êù3?Ⱦá?Êkƒ?Ëó•?ËÅï?È'Í?¼ÎÎ?¦!?®Æ„?ÈßY?Ï©Ì?Ï–«?Îß??Ê´6?ÇÅ?ÁÆ?¶n?Çå¨?ζ/?Òfn?ÑÙ#?γ?ÇÀ_?ÀI?Ç¥a?Ì„Ñ?ζf?Í«þ?ÎÙ§?Ѐ’?ÑOf?ÐÔT?Б„?Ë<}?Ãh?Á5P?Å,e?½–L?Áž³?ÊEl?ÊN+?Æ.Ú?»?Ãx_?ʾ?Érë?ÈȦ?Ë»i?É3G?ÄXí?ÉD•?ÉcK?Ç«?É è?ÌmÀ?ËÅŒ?ÍÕ²?ʼ°?ÆÄ -?Ç‚?ÈÃ?Èk%?ÄŽë?À3P?Çu¯?ÄU£?Âå{?þ÷?ÂVè?¿ûø?É{V?ÌùŽ?Ë¢[?Æ©Ã?¾­Ê?¸ï`?·—?Ãk?ʽè?ÌGm?ÊrÆ?Í„¶?Ëbç?Êœ…?Ë|g?ŵ2?Âœr?ÃÏv?Åwþ?Ħ‰?»Š?Á]?É×f?Îz’?Ê®ò?Êbõ?Ç^Ü?Å]?ÈŠè?DzÞ?Æ­?º?(?À·Ö?ÍÒa?Îc,?ÈÚH?¸¿Ñ?µ}ð?¼þ?¼(?Ài ?ÂÆ%?ºH¥?¼Ï?¼Ð:?¾1ú?Äþ?Ç![?É ?ÁbÀ?Àé…?Ê·–?Í%¸?ËÍ?Çt?É©B?È/ç?Èò“?Ém•?ɯ`?ÈI,?Å‹§?Édk?Ídb?Í N?ÊZ^?Êi'?Ë£5?˘?É$÷?Ã#æ?É y?„3?¼uÖ?­R?¯Ëð?Å’%?Êb?Ë.?Å â?Ʊ±?ÉÉÄ?Â?½Úœ?Ám?ÄÍÎ?Ã÷ç?­æ?¶×Ç?¼¿Ü?Çð??É0k?ËL÷?Ìš†?Ì°?Êzÿ?ÊK‹?Éšr?Ä”§?´9Ò?·è?¸¥?³!?½‰B?Äi7?Âû¦?¾ð‡?¿3¼?Á\?Àÿ?»Ê‰?¼}?±=²?® ¯?ªô?­?¸Ì|?¼"?»‰¨?¼ÇS?Á‡ï?¾‡ë?·y?¹sn?¹}ê?¼Ï¹?¶ì?¹km?²?¸D;?¹¤Ì?°†?¨ˆ¹?´×È?¸òÇ?²—?±ÝÓ?ºvg?¿$›?¸#z?³WÉ?¾:j?»ð·?´Ûº?¸ûâ?¹ÖF?¹Ý_?»†?»¯à?¹×{?±~ ?¶Áœ?Äêd?¿H?µ&º?»¼>?äÌ?¼;?¼Æy?»¼?½`Á?·Z}?»šô?Â/?¿èy?º9—?‚Ù?É8(?Ày?º'ù?½Áf?ÄÞ?¼œ?´¥S?ÂÉ?Æe?¿sÔ?¬,?ªgÓ?¼™?»ÀÃ?ºÚ7?»Sï?Á%û?ÀÒ?¾?­ ƒ?±3?Á§'?ÅÉ?¿pÛ?·Ï?¤Î•?­Œ?¨‚Q?·Æ?½:Ž?¿Â??¾õ\?¼;f?½-F?Á(À?¿`ý?½pH?¿Hï?¿ˆÄ?¿×ï?Àš?Â0‚?ºË’?ºº;?»x±?¿ì¤?¼ôR?±Ì?»…?õ’?ÂzH?Â1?Àä9?ÁIC?¿Ë?½ï?£T›? ˆR?8ò?¥ö«?¢´Ü?¥·¸?¦ ë?¥®ã? m)?ŸqÄ?¥'?¡ù8?¡$J?¬ké?¨‘±? dŸ?ª}?©¤½? M?¥ŠÄ?¨ó?£ãñ?¦1½?®¤O?®Á?£¹g? ÏF?ª§.?­oõ?¨m? òF?¤D?ªñ|?¯3??¤§W?£Ë?®‚h?«â??¦ê˜?Ÿû;?¬%µ?«f¥?ª×?¥…À?§žf?ª‰,?¨qª?«…g?ªÍx?¨¡?šŽæ?¥Do?° ˆ?¬tv?ª‰0?Ÿ¡L?©*;?²Ÿ˜?®„Þ?®l? 1\?§_?®š?¯e€?«{»?›ôµ?£ß€?²ÿ]?±¶µ?­$f?§›ü?¤b?ª85?±š'?­e]?¦-ë?¤;(?¥œ?«Aµ?±"?¥Ê+?¥v?«Ñ?«qA?¬ò„?°ã„?¨6T?¨È“?²G6?®I?«õè?«>ˆ?¥ùS?¦¬?±þX?¯‘â?­iþ?«[?¥?¡5D?­\&?¡R?›YÉ?¢x?§Pû?žï\?¬·ø?²¡û?¯pŒ?°ö‹?«þN?¤ÆÅ?£»¶?¯jž?°!i?­-p?« ?§rð?¢X? [Ì?©e!?®˜3?­(„?­ò¤?¢ø¦?¢?¥²?­\L?­×?­¿ä?±_f?©?Ûm?ž7?¬+€?§ó?¬Ù?± ‡?¬±È?¥îÿ?¢;?¡ì8?¬œÇ?°_å?®õ?°”§?©þ(?¨%º?™Z ?¡ùð?§˜Ï?ž¼6?¨öß?«së?¤â²?¸º?¤¼9?¦!#?©Ì‘?¨¦?£U·?«®•?¬ž?¨IŠ?§U?¬©?©y&?¢wT?«Ñ?«•?¯^?ªLL?¢k?œã??¦vÀ?¯I?¬½–?«B®?¯^Ð?¯Ì‡?¤ÒD?©/ù?­ò?®¶ ?° ?¨.7?£Â:?°_ì?¬÷?§µ?¤ýd?¥½Y?®rŽ?®©;?¨¯ï?­ËE?¯ÖV?¨ñô?§)F?®±ˆ?«–_?®=.?¬É©?§»Ò?«j1?ª§{?¨6?¦Ï?®ß ?­’A?­Ï7?ª{?¨w\?°°ÿ?­¹ ?­2?¦U|?© ¢?«Ã[?˜íÔ? 2Ð?¤ ?¨Ô0?¬ù¬?ªÈÅ?ªÿq?¨ ¹?’]–?›¯»?¬ª?®JÚ?ª+®?¥Y~?¨?¬â»?«Þo?¬ã?¬.Ê?¨L?¨˜?©^¹?¬ˆp?­ƒ3?ªN^?¥?¨A?ªXx?‘7?Œ ?§°?£Pé?œÉ‡?¦åè?«õ…?«ÿK?¨$œ?¨›\?¨Ÿ4?©^u?ªó?¬?¨æ'?©0?§B?©´ƒ?¬•·?ªòÐ?¦E¯?§D??¦¤m?©ãn?£&Ù;s|•;”ÈI;´ñ¬;Ù„<f<Å(<ý<";òqá;â·;Ú•†;Æ“Î; ÜZ;n|ÿ;8ÍS;6¨î;kkk;¥$<;ÛêT<ëd< p<ÙÃ;ïæ;Öé;Æ7‘;·'Ã;¬ÀØ;¹Zó;é„q<ÄÒ<>êu<Öyä<Ð*[<Ó-<Ù:~<Ø.Ñ<Ë}ï<¹ž <­g<ª>ä<¨Sÿ< ”E<—ls<™ <ªý<À¤‚<Ïyh<Õ>Å<Üa¼<ì@<üʆ<þ=â<ëºá<×€N<ÙÅ–<ö¦= d=@=í/= d†= ²=T=,no=;—=<Š$=2v=' -¶=½T=R=i<îû†<Ô¯k<¹<›³]<Âm†<¾š(<Ó©ö=¾=‘=!T‹=Út<úh8<×ö <ÖüW<ïê»=ÿh= ̺=üc= Ï[= Üy=¨=%¦·=A*R=\1Û=pÇ =~n =ƒk1=…‚®=†a=†Q=…@==€µ=k9&=L…n=3Œ =-=}=:æ½=Qþ!=e¹·=njî=iã=W4Ñ=?l^=*ÿº= !£=4.=âQ=$`Ÿ=3­Â=E†ä=Q)l=TM$=P6í=GÂ&=AþA=F„ñ=T[Æ=`Ï&=c¾å=`D°=[äV=U¼=HÅ =<ìˆ==Ç=SÝ=x~Ñ=Øì=›§ =œã?=™ì¥=š³?= q§=¦ é=¦(Ž=¡½[=ŸÐ=¤g²=ª=Ò=©ûÂ=¤Nœ=ž’N=™cÐ=’}î=Œ×À=¢“=‘Ѭ=)=w=a°¢=Sü=Vü==_p=eþ,=núh={îD=ƒ·=‚Ìä=y&=b•È=FOÁ=/Ôû=,ÓU=?_=ZŠF=n(ˆ=s%ø=lî=a”q=R3=?¬˜=53…=@M=\s¡=xrU=„$=†¸w=…øŽ={­=uµ=qã‰= =‡ùþ=‰‹'=„C¼=zê=nH(=d±n=ag*=i=z¥¢=†)=‰H@=„ßÞ=wî=bã=U=T[¶=^Î’=mŒû=z³›=€~ì={@ =g•=Gh'=(‡ì=£Ÿ=07Ÿ=T[‹=ry„=zY²=o2=e»=lsé=nâ=„»H=||†=Yç&=.Á;= Qh<åüŽ<ébz=I=KF¤=z =…=yj„=[“´=Cj=1y=J=¯„<Ûæ<ÉL_<ÊW1<Û•í=ÿÜ=)=[&ñ=…§¦=”t=“™à=†o¶=eµ=:Ì:=ÍT=6=…=-R£=6V”=7“ñ=;à=Iù=\êš=jÉ›=n=o,õ=p±=e)¢=EÕ¬= Ñ=þ–=öç=$—=>íø=aå=~¼L=à =œâU=ªe=µ=ºÆ=·_À=«ön= XR=—\¸=Œõ-=€e=vŠ8=z%¨=ƒöæ=ŠB =Š•ƒ=…Ý}=€ë=së'=U’û='Õò<ö¤ <ĺ<ÇC><úÈü=%Çs=YÙ²=¸H=°ŒW=ʦÓ=Õè'=Ó¿=Äο=«ý6=—fT=“ä¡=šî=œ”A=—Qº=—Ÿý=¤¸‹=·¼‹=Áh-=¶ðé=›xÎ=xO=M-;=Dzæ=W\ê=moÚ=r*'=bò|=H~»=(£õ=ç <É”<¨çã<¬Çå<ÀW™<Ò!å<âá1<öî€= ÜÅ=$¥.=Nf?=zEN=Y=ŸVÂ=«.ô=¦á€=’l†=‚é³=‹R=¤Ô¾=¸]°=³¨©=˜*‘=pÇz=OÂ=P¹=[7=Z?ä=V’=`âÏ=t•=xlÓ=d›r=OËy=XúÉ=‚?q= b=¯×‡=¶ª=²Ôü=¤[§==fŸ…=:±=£]= -â9=.R=>íõ=|u=šÓ=°ùr=ÂÜ@=Î}K=Ë!=¶ÒL=¡K=ŸÔ=¸ =ßÉ]>ú>“==ë¥o=º1á=†ìS=G8ß=+TÄ=,,å==º|=^5=€¨Å=ˆ®Ñ=…*=€>À=ˆ$b= ¹m=½›«=П®=ÜÅ-=ð4 ->´’>Î>†> -Ø‚=òmU=Ùðe=ÐHN=ÉKx=¹(Õ=¤ù=šàÿ=›¬6=› |=“™=‰€=†0‡=ÿ=§øý=¿8%=ÈOO=¿R¸=¬ô=—`‡=…Ò=o®£=Wgƒ==b‘=)Úì=+T„=Gƒz=xÏ=˜š=¯ÚF=¾g·=Çï=ËŠ[=ʇ`=ÉÓ³=ÒÏH=ã§ê=ðºÌ=õ d=õÁ°=øÄÃ>[µ>!ì>ù>ƒ¿=÷=ô†5=üüã>ºc> çê>jâ=úD=çW¶=ÛÎ=Õ ž=Ñ=Î:¾=Í|Õ=ÊMÒ=Á˜=¼þ=à f=Òð=Ü =Ù½©=ΘË=Å\ =ÇÌÍ=Õe =äŸÀ=ízë=ëNœ=Ùõ)=º„ð=™¶=ˆ§=‹i§=“x!=_†=~:“=d=8=e€e={èÖ=Œ‡Î=˜ÔÍ=žJ›=›¡ª=‘æw=æ =]ÖÏ=?ØØ=1èæ=,èJ=*¢Ç=5rq=T8=sÙ=y~Â=e\=UÈ=^âÛ=|ÄŠ=ŒåË=•ÄÛ=›r®=žÅp=™VÚ=ˆg =n%"=gðu=‚O-=™~.=¯0¿=ÁÓ=Ô?q=åu=ërn=Þ¸#=Ä&Ã=¨Þ—=“•J=S.=e£$=aËÏ=x“=„sÿ={œª=bA1=^½¨=wä=ÊC=-=««c=¾°þ=Òį=ܺ!=ÕŽ\=¾?= w\=q=™!Ï=³kø=Íä=ÞQ»=âƒ=ãžÝ=ñr6>öÕ>²>¬> 0>‰N=×úÃ=«¾^=‘‰t=’U•=¡yø=¬ =°»=¶I=Ç#R=á“Â=ü­Ù>Ô_>``>?¤=ïý =ߣ©=Õ¦€=ÍÒ¸=Å—Ð=¿Èš=·xK=¦÷b=™'¡=œ?¦=®LO=ÂãN=Ñý¥=Ú€Î=ßVá=æÆW=ô®¡>C> µ¨>˜l>*;>)>ám>QÆ>ÌÕ>ƒî> -üJ>  >l˜>~Â>î> -Å>r=î ”=ë|Ë=üñ> Œ>uÀ>m¶> ï[> -à>aå>m£=õ2Ø=å[Ë=×or=ÙÕ‹=íG‘=ýŸk=ÿ¸`=ùpp=ìªþ=ÖÃg=½ó=ªå¾=ª»w=¾¸¯=߉ð>Í>–’>æù>ËÕ=ýa#=ú‘M>*Ü>>¬>±>ÝÁ> [ã>ç>§%>&e=ê¢=¿O¯=¡ì=›å=¢½I=§;=§Dt=°La=Ê£ƒ=ðˆé> -gj>>™«>`>,õ>ÌË=ﯵ=ËÖâ=¢¤={¹Ü=X{9=e =‰[ß=¨õO=ÈòÞ=Þ°Ñ=ä‰ç=Ùêº=Ç\¥=¼A(=»9=¸èß=°¥ë>Øi=æ1Ó=¾Ì¸=¢úä=£ÝÀ=º²È=ÑzO=ÙÏ€=Ò#=Æ\j=ÄÀß=Ë¿b=Êï-=Åë8=ÓÂ¥=øï¿>ì>ä">"Òþ>)"M>+Õï>%Ám>@>]>Mâ>ç>5Õ> :J>*!e>.—>/Øh>1€Ñ>31µ>&˶>Uj=î­{=Ï_È=Çþô=Ð,»=àÕS=òûµ=ý(J=ùé=é/ñ=ÛžÀ=ÛÇ%=ß”=Õ³„=Án=ºL$=ÑQn=ûKÜ>>Ê4>!h> ¯;>MÞ>=Ï>%o=ÿmK> -Wf>é†>Ž>7‹>a@=÷n=àE=ÌW =ÁÍR=Ǹ=Ñ =ÈŠû=«\´=Æï=„Þ=m²=šJ\=˜Æ©=°G=Œuî=”ûæ=£ª'=³µ7=Ÿþ=Õ¾¹=Øwè=È%¹=®‰=ŸÂˆ=ªJ‡=ÈZ=ãòó=ìõŸ=äZc=ÑêN=¼h¢=°q=¼Ã=Üðx=ýú> .”> TÊ> Ä> I>&t=ùw=ÞË'=Ð[÷=Úg=ôG>Ú´> -8]>Sb=é5X=ѵx=ÇD‹=º·=§ù,=¢È³=º ž=à¾N=û‡t=üs=ìé=åžz=ðgr>ñ> -}b>þ½>Q>(=ë¼Z=Òœ[=Ñ =á£=íâ=é["=ØÁù=Ê*=Óti=òhÔ>IÐ>>ˆr>æÚ>øg=íð«=Äl’=¯gx=½ú©=ÛÞa=õÑ>#>¤k> î>f¹>O^> Þi> r¡> ôk> Dt>k>ÔP>»­> ‰>×å>o}>Ú£>cÛ>Ú >Ñ>\Ð>¸Z>#³3>+ž>,þ>'e>"U> Vß>I> †>±B>^Õ> -!>3=æ]¿=Óâ=Ï>º=Õ´¯=ßÖÈ=äGô=Ý<3=̱=µŠ=šØY=€Š¸=RaJ=/ž= =1*=(nÀ=1 ö=:"<=Oж=t6è=§O=§bt=·W=»´X=·j™=®=¥y=¬m=Ì­=ð4C=þØ=ýÀß>à>k¿>k->!=“>#Ò>)œ…>/W9>(´ú>/0> CV=ÿ|.=ï‡=ÕBR=°¬¡=“ò@=ŽÍ¶=—ÄÃ=™ù…=‹×É=gê¤=>‘G=+½s=4\[=VÕÖ=„ªÏ=Ÿžc=º[=×Yª=ö’Á> !ˆ>%A>Ý>#‹…>,‚‹>1ý>/Oj>)ü¯>,±O>7¸®>E˺>SJt>[îi>\‡ÿ>SpT>EV(>@çè>LãR>^‹>i™?>iÖ·>bÄ}>[;\>Tõ>N¼C>NÍ>\Z|>r >‚v)>‡Az>„Ýþ>vH‡>`¯÷>[D>gŠ×>u+k>|;>€Ñ÷>‚Ýp>ƒRF>…[ù>Šà>‘µ‰>˜>›BT>˜ïb>” â>‘.j>H¶>‹Ã{>‡%>6Ÿ>s¢>m¾>|…œ>‹NX>•èK>™ù¬>’5>yÈQ>L€:>2^ý>'²â>)’J>A¾>mªï>Tï> FZ>¥}³>¡ŠQ>™Ï–>“Ç>Ža€>†«{>mX>DÚ±>-©‹>8M >]šš>„‡>”£¿>žŸ>¢ü*>£>žð>—‚>bÂ>|Ò>‰Í>„û¤>„ýv>Š€ú>Ž˜f>‰!>qzû>Q¸>>RÚ>p€•>†+Ý>ŒCÁ>’Q<>™Ë©>—&4>†¡¼>tš>€ŠU>T=>‘O‰>Þ„>Z“>Fiú>W}>‚«!>œ#]>©ŒÔ>¦°1>Ÿ¸>Ÿƒb>¢òw>§¤,>²^F>ÂÏ>Ëë >ÈÂ>½!ò>±oÞ>¬0I>®cÌ>¬<Š>§ƒ>Ž@©>‰aW>‰† >„¨F>t¹B>gƒÛ>oÕÁ>‚ƒe>ŒŸ6>—ÐO>¥ö®>¯î&>¯á>§¹¸>š„<>Œ”Y>„OV>…ë>Ž¾ÿ>•aP>•0‹>’ŠK>{X>Š#7>‡G2>Š·ò>ŽaP>,‘>’—+>žtŸ>¯)k>·a >°ac> ø[>“@>Šm>‚Nß>v»>nÏg>uSq>‚¦L>Œ¥>“m·>—ŠN>›2.>1î>›±É>”\;>¹ê>Ut]>Dæå>^öv>„õ>”\>šš>˜EÔ>‘õW>‹ý÷>ˆîX>ˆ£>Œ’`>–g>šù¹>£Æ>­ŸË>±ë >±~Û>²Þå>¸M>ºÀÀ>±åw>£9N>š.>•š­>æ>óú>“ÀQ>’‘¡>… ì>iZp>^ -H>jto>]>‹0°>‘!">™Oç>¤û>©Û;>£"u>›‚>œwN>¦/ô>¯'>¬’-> ]7>š^.>œ»‚>š™5>”Œ >˜®\>§u‡>¯ÍÊ>©ø£>ÛÏ>’*a>‡fm>|§ý>r.>lÅw>j§û>rÖœ>šˆ>‡k$>ŒŽ4>–Ìl>¥BN>±I9>³Iº>­C>¨‚h>¥®ø>úA>3Ð>€^n>{î¯>ˆ÷ÿ>“8æ>•t…>’Rœ>Š¦>ygþ>QÂû>%2Ÿ=ó}\=ª<è=ƒ=]8=Ëw_>£½>8´Æ>VˆÛ>`Þœ>ekl>pËî>~ªo>†< >Ž}>•p >—a³>—Š>>ªÑÒ>¿+>Ñ -$>Ò×>Äšú>µnÄ>®)>¦5>”b¨>‚ð>tß™>bEH>Jy>OZU>zÍe>”^F>œ.>•¡R>ŒM>‹[ñ>˜þ>¯O4>Äžæ>ÑX†>Ò<°>ÉJä>»‘…>¬³v>™ÿô>€F/>SžÆ>D¸ >E -q>Fæ’>__Ì>‹ >©_T>»h>º>­ÖË>¤±Ì>¡)>¢ƒe>¥ƒ>¢ª‚>š‹Ó>‹÷î>l¢†>BS>6))>X$¿>ˆt™>šî¢> #å>¦d>­è÷>©×->•’->}±>lÔ>yŸ>†7³>‘>—v´>Žgl>tbp>So¶>NÐ_>pA´>—ûÕ>¸¯I>Èóµ>à ->¸c7>ÁâÇ>à.ç>ôÏÿ>ñ9h>â†a>ÕËf>Ï9ˆ>Θ”>Çgº>®@×>Ž3Ù>…˜>¤^Z>ÒG>êG¡>éoˆ>ç9ø>ïXh>ü…ž?í ?Ûõ>þ%5>Ö5ý>µ >§ƒi>¤Å¥>°³y>É/>ÚYI>Ýs¬>Þúõ>á©—>è‘é>û?—Ú>ø1)>Ð"»>¶­5>»©>ÏQr>ãŠ8>õÿá>ÿ o>õÉ>â'ˆ>ÚòÂ>ä‚)>ô=.?õ?nÈ?½Þ?â>ñÃÂ>áPÛ>â®À>íðe>ôLÍ>ïdU>Ý\ü>Æ´>½:>ÍÃ>ê,D>ö2§>ê•=>×[H>ÁKõ>Ÿ_”>v£†>eRÁ>×È>¸•ß>ÏÄ>ÑK >Ë4^>È}E>Ð/?>ÛN>Úà°>Òbý>Ùñ>÷Y¯?×?Þà>ò’>á„Ê>ãg>âÐÖ>Âv(>–@œ>…±r>Œ8>œ6¾>¯6Í>Óâ¨>÷³F?a -?*>êK#>È™5>¼°V>Ñjî>ô"†?½?—·>üßÕ>æW¯>Ý,>å;Ö>íºó>ì'„>é_}>ìR>ëÞ<>å½þ>î?K>ûA>Ü!>Á5>Æ^n>çôr?ñ?C?ìI?5>ã¿b>ßý¸>öâß? Õ¿?3J?mx?";?v? eþ? í:? «‘>ýbë>äp¾>ØT>Üh§>ârí>ÝŸh>Ñ´>Åg>Æf1>Þ¸d>û¹c>ÿת>ö2O>ô¡Ž>öeø>ôÚ>õ°>ûå?º{? ÏÝ?”?Ç?kÿ? &ä?#Nû?¦õ? ÄÈ?+¥?÷Ÿ?^´?"=?,ñP?/:Í?%Ô?—,?‘[? ý?fï?[½?þ¾?G\>ñì•>úê±?¡Õ? M?&ÒJ?"˜–?#ß ?1ÄQ?ìLü>îtí>þˆê?¬? ÆŒ? ;i>÷É€>îÓ?ÄL?$†€?0³Ë?)U?[Ä?u?#ÇÐ?(ô?$°? ¥“?#W‚?$Jò?"y§?%Öm?+K?%¤(?õ%?÷¢?Å`?&›?=4ê?J©ž?K’í?Fé±?C¶?=äÊ?4(ž?0|ÛQ?E¨÷?O$S?Vð†?Tãr?GHÒ?:~`?:.£??¸q?B66?CHï?E‡B?D<¯?<<å?3¿¸?0¾ô?5õ??Œg?EVM?>¢w?27§?, ‚?1i -?;7¬?CX ?J - ?Li„?GKÅ?A_j?DÞ#?L›2?Hõz?63ü?#D?òØ?#°?*õ ?1*?6¬8?>¦I?CÚ??µ??ë:?DS?AÕÏ?9]6?5¡n?:+8?>þè?B˜¶?GXD?IÃÜ?Kê?Là=?K]Ï?F>@?C‘ƒ?FB?HâÄ?Eþ·Å?íd? Y?Ø5?0‰? -«?¤?®Ä?ä]?!¥0? ä ?[;?™?\Ø?º¿? q? l3?Ê&?ƒ?cò? -?ã+?€³?!_:?,ëM?:%ç?@Qé?<ö?3{j?*½?&\Q?,8ã?8\L?>‚T?5í£?$0?Só?‰Ä?T"?Ì–?ÖR?ÙN?Õs?÷y?A…?OÛ(?Zë?aš¾?h ??jlÄ?mŠµ?r¥‚?u¯?zm?€0²?ye0?_äÎ?;TÞ?n†>ÿnð>ìTa>ýá? ÚŠ?»x?j? -µý?VX?'j?‚? -4B?d›?b§?#(º?&Z‰?)”E?,œ2?-¼?(8«?>?ˆª?ïu?:î?Ïí?Ð+?óZ?!×?&Âý?(s5?$íð?$`?*WR?+`û?&ÒÚ?&çz?&À? C#?V? ú? aA?Ef? HW?0?ÐC?˜? ‰²?z¹?Î? ->üxõ>ð‘[>ûÊ? -œ]?ûJ?¦Q?Ï“?x? ? ])?÷æ?¡?ª ?iu?¿§?'=º?.ë?4ªŸ?4&'?'’?lÖ?À"?U¡? Î|>þu5?a? LP?5 ?B_?D±ã?96Ó?'†?3ô?+?´²?'!’?/`?5.»?9E?Ú?C?F´?=9 ?'ˆQ?Ž;?!tV?(QÑ?)œ9?.’?0®|?.A ?40ù?:§ ?4yì?/ A?-]\?¾ð?@ª?uù?˜Æ?(å?%yi?-ž?0¤?2üš?4ÍÎ?6.Ô?;Ü?B—‚?=ƒ!?1õ¥?0d?/Qê?'N-?&ô?+ýÍ?-7¥?,ÑÞ?+Ä{?)^?$«!?#tr?"ÐJ?"Dé?$ãÞ?)+?4§ä?@MÚ?F;?H?B?8Û=?1*ž?&©/?ª¶?h3?"&º?Âû?R\? ÙA?+€:?8Ô,?=ž0?AiÅ?FÚ7?D,*?:ºw?3þ?983?:ÝÉ?1Í?.óü?-•?&ï…?&æç?,Ý?+Kå?!Ь?ÈF?†~?$Zù?9IÕ?K«ê?Rbø?Nãû?O¬?Q€ð?K«?@„ù?#*×>ò.>¹lã>­ÿ¸>¹Rï>»¡>¯N‰>³-&>ÍßF>æH«>ðõÄ>ò®S>ïö|>çìT>ØHu>É ð>Ö%´??öb?”œ?J?,¤?t>ùµñ?Œ—? Ы?ü?'ªÅ?)¯¿?'šÙ?"a?é:? Ï>ï^Å>ÔÑŒ>ÑŸK>Ñ^;>ÛMH>ÿt?»V?,ò(?2β?0Ä6?1ã‹?9b"?>N¬?@Ïô?CÏ~?<ƒ?(Õí?™?ŒR?’?;q+?P]{?Uí?L…ù?ABF?CX¤?PH4?YZý?U×9?Iý?A’ø?E‚?NÖ?PyA?@#?$Š?Ï‘?*AK?( T?*‚?7ã -?>:?=ó©?J³?\R¬?`öV?X¿·?LK?<Óø?+‹Þ?Ì7? ­6?*$Â?Ü"? Ç®?þ(?Ö?‡@©?†jÔ?~—?c#Ã?XÄ"?e4?gšH?d7? ´?yÂÎ?yG¬?c?p»?{c ?sÌä?sVo?wŠØ?îf?‡ Ú?‰K?‹Ô?Œc?ŠÑâ?Š_d?‰ÿ­?‹¨?G?#Y?ˆ±‚?‡}Ø?1?“aH?–´¼?•r™?‘‚r?ˆ?Œ6?ˆ×-?ˆ®?…Ù?†\¸?‹´X?|R?ˆm„?ƒ\o?„Zc?ˆœÿ?‰'Ê?†§?“)S?”BŒ?´Í?ŽÀ?‘%‰?–Üì?š:?—?‘<Á?Ší?‡üB?ŽBw?1?HJ?•G!?˜l?–vI?“ýG?“¶k?”¤F?–åý?—´‡?˜òÎ?žíÀ?¡k ?›;>?˜ˆ?žxæ?ŸŒi?™Ý ?—ÿ¤?žj`?¤k?¢H^?—ˆ…?‹û ?‡­?‹ã¶?“‹Î?–x?—f?—×£?—Á?—=?–ì]?–¨ã?–k}?—7r?˜­™?•ä0?ªô?‰&¼?‰¶p?ˆÿ?‹?’zø?–¢ ?•‡]?–Må? “?©Kj?ªxK?£ ?Ÿ–?©/•?²?´Áº?°²?«v??¬2ë?­?«RÏ?§5Ä?¢WT?™ø?˜­?“£=?”™—?˜¹c?›??›á˜?šNÍ?™"?›d?ë?Ÿ¸k?¢ ç?£íd?¥à?¤–h?¡î?¡H’?¢‰æ?ž#o?}¥?£õ?¨ŽÄ?¨d?¤ ?œ®y?”•?!ï?Š:?…ŽÝ?„d?‡½Ü?ˆ‚ô?…?†'m?Š^/?‰Qñ?ƒ8e?%è?Û?€Á(?ƒ³!?ˆ¢ÿ?‰')?„´?[6?á›?í;?z9Z?uõÉ?s9ù?zri?€n0?€€ ?k:?rˆq?M¤?'„?/ds?PÉÓ?VÚ?>9$?3§õ?Hl|?U(?\çR?fóƒ?k¡8?h‡Å?bи?d2—?i9h?mø?mæÒ?h >?b¿‡?dˆ?iЯ?nE?p]n?nÁŠ?gÉŠ?gRf?kñ_?q ‹?t,æ?tªë?w,Ï?|ý;?}0v?x(ë?zÌ?v?ƒá ?‚n@?~åÜ?‚“È?‡¹?Š3‰?‰>Ç?‚HÈ?x÷„?{5·??¨4?y–R?nÖÚ?p@~?{ÝG?ƒ½?…Õ?„Ë?‚¢2?ƒr ?‡%°?‰âm?ŠÙC?‰Õy?‡é?‡5?† v?ƒu4?‚$¼?„°ž?†©½?„œB?³’?…ŽU?ŠýU?‹X™?Œ0?Ž1»?‘ ´?–°ç?—‚+?”G?†º?Œxz?‰ª?‡\Î?‰©$?Œ§ ?‰hš?…^«?‡‘Á?Û?d?ŒŽ?Ž?Ž|’?‹ã ?­r?’ f?”yû?•*c?•ž?—Õn?™÷h?œoÌ?~Z?›hB?‹?¡âL?¡dŸ?D?œ«Ù?Añ?Ÿw?£®—?¨C`?«¶W?­‰•?¬Øà?«¥?¬™ ?ªÌ$?¨'Ï?§Aý?¥!Ü? Òê?¢k™?¨sV?¨#í?¡àÆ?›Û|?žÁ:?«—9?³óÂ?¶w?¶ÇÄ?µlô?µÀ_?¶t?³¸Æ?®/ ?©8ñ?¥X?¦ge?¬Åæ?®Ä:?°:Ø?°“ˆ?«?¨…?«ñŽ?±’?¹Uí?¸ ¾?·šê?¼€È?¹9?ªL?¦µ4?°T-?´öo?´x?µZ-?³~•?µÍŒ?¾ú0?ÂO?¾ ?¼¤?µcn?¨ô3?¥&§?³'­?¾#Ü?¹Dã?³ç?·æ?Âlt?Äò•?½h?®]?žðO?žç[?³ßô?ÀlÉ?½ÒH?ž ?ˬ?Êþr?Áú°?­,?£R‹?­v|?´¨P?¯†3?©ÓB? [Ø?f?x‰Ì?_ÑÊ?ZQ?gÈ°?s_-?{OÄ?x”Ú?tœf?€9Å?€Ö -?tC­?sé?}ûp?…!?ˆ7?‰´Ð?‡„?€ãE?oê>?^Ô?YáQ?R ?J˜Û?RVo?^ÍF?g“e?m§?knZ?gVž?n -@?w±‰?z4£?{DÞ?€\?ä?zJ?oÿé?c?O¼*?CrÌ?IkÄ?T$P?X«?Sbè?EH™?=j$?BÝ?G'é?F¼?>áœ??LN?J”?Vò ?\(?WüË?L|Ñ?EgÔ?IØø?G´Ú?L/x?WºO?aͯ?f‰»?fbþ?bN?a?o?eàc?ažu?PŠ…?L‹‹?_;]?oñ ?~ ?}â]?v9þ?pØ%?kß&?t´ ?~H$?{D®?sùÝ?piv?oÉe?o97?m:Æ?sSè?&‚?ƒ!%?‡§M?ŽR¼?È?Á‰?ˆ7}?„æy?‚ž?zÔ¡?D?ˆùÑ?‹N?Š»?Š÷Í?ŠZÐ?Žé?—7ø?™Én?•­o?”È?—NÀ?—J(?—š ?•Ó?˜h?š>?™«¿?šš9?™áÈ?œçg?¡3§?¡j“?£Ív?¨m½?¤i5?›¢6?žõU?¦çq?«“j?¬v?£7?˜½è?™p¾?¢†ø?¨&$?¨d?¤¿–?ŸS$?š|™?˜õ¸?“—°?Œ>R?‹¸#?3W?+i?–Ž+?žÑV?§ô’?¬!+?¬Wø?¯Ÿš?²&í?²•?±A~?© Ú?£D?§¯?«÷V?ª­Û?§¥ ?¨¿+?©¬ñ?«,\?©L¢?¡Q?¡B¬?«i?²ºP?®l?¥nÀ?¬ùd?·õ÷?¹Úa?¶˜-?³pQ?µZZ?´ˆ8?«˜é?§$d?«®Ì?°2 ?¬ýP?¤Ä@?žù™?¤Õ:?¬®Ÿ?®6Ž?°ëÙ?°#…?¥ç»?Ÿ‡E?¨‘ë?®öW?±)š?²©—?®Yì?²ÿ?½³`?Á ?¿Ë?¼äé?²vÌ? I'?™ú:?¦1D?³<9?µÿI?·$´?½ ?ÁÝ?¼?°9Ã?°ÏÙ?¹ƒ?½hm?¿¼{?¾ÙZ?¼ƒ?¶©R?«µc?«Æ?²ü©?²ÿV?«Ê? ß?œ?ŸoX?¤¤k?§öœ?¥ò?¢¡²? ÕW?•¦?‰Â¯?‰hã?Žßã?•¿?že?¤T?§è+?«O&?¨O®?¢Ï©?§Ôê?¬¢µ?«óŸ?©ä?§]ù?¥yì?§é?¯|?³QC?´–5?µ_Ë?³û÷?¶&×?¹˜?·oä?µ¯ü?»k±?Á¦?¿¦p?ÁÄ2?Ç;?Á§Z?µ9?®]'?­`‘?±:'?±X?¬á?ªå?ª Ë?§µÜ?ªà\?²ï?¶vu?¤È?‡¶,?”Ù?­Ï?µVÏ?´Pe?³ÅÔ?¯‡o?¨õ?«ÌC?³Z›?´Ü»?°6ã?®’þ?¶GÛ?¼@?¼Ó?¿„á?ÃÞ¹?ÁšŸ?¶è³?«D“?¯Ý?·x#?¶U?´ç¬?¼'?ÀŠ–?¾’?·¨3?³^'?°[ñ?³)j?¼»ú?½YÝ?¼bU?ÀC?¿ˆ]?¾ù?¿3?»ÑÆ?²ÂR?¬D~?°Þ?µ"°?µåÍ?·ö?¶Œe?³ø‹?³±w?¶ad?¸?¹”3?ºÇ%?·(k?¸tò?º‘?¸‹•?±ßµ?¤¤t?ŸV·?£ùÉ?¦œ?¥H˜?¦.}?§>û?¦Š?¥^n?¨¤?©½„?¬?³!Š?·çš?¸¬‚?·eÙ?´T„?ªªK?£4§?ž²Ì?—?š Ì?žó?ž µ?ž-x?ŸÆ? £á?Ÿ^Æ?ž/\?žt«? §e?¥Ø?¨Ùs?©{u?¨J“?¨ì?©2??ª8?©¦‡?¨xñ?¤¥6?˜’î?¨?ˆ×H?‰€Z?—û?‚?¦õ?‘û?’Þ?“á3?”¢â?–±µ?˜J?˜xú?™Cæ?˜Ôn?•´?•žþ?–)?•óT?—‡‘?‘¬ï?‹d}?‹ëû?Œ«+?ŠÁ?Õ¸?–Rn?š/³?›ÖÃ?›É˜?šhW?›x?™Ÿž?–gë?˜ÿº?šæØ?›GC?ž ä?¡-ý?¢1ê? ìC?Ÿ.Q?™+y?‹ñŒ?‚ž…?„ù_?Ë?qš?ŽÌÜ?½À?ZÄ?ùÒ?”?•I÷?–öÀ?˜ã(?˜ÙÄ?š…?›oo?›Ü¬?Oó?œW'?›Òl?™QÄ?•t{?™ ?›ÿO?™@&?šð…? ä©?¢ë?¢7?G?šïB?†¬?f+? Í?¥N”?¥Šü?¢Z^?šÒÙ?˜RL?ŸÎ°?¥ü°?¨\Ó?¨s¾?¢R¨?œ•×?œY?šL?™¹H?œð8?›+Ë?“Ž§?˜Zð?¦E?ª­?¬ µ?­”?²Âu?²ëé?´Dö?¸¼º?´¿É?«)9?¨á@?¯6Å?´Îm?³”¶?®xD?«¬?¬Õa?³Þy?·"Æ?·±?¶)˜?³q?¶ºÐ?¸¸?»5T?¸Ö¥?²wN?¶/d?¸ÃR?µ5Í?«S?¡ Ý?« F?·.=?¼Ì5?Àwà?ÀJ?« Û?§¼N?«Ö™?°dÐ?¬ìù?©Ñv?­~?ª£?£˜?¬ ?µØÅ?®¤?žK‰?›n)?ªW±?±ôÁ?³`à?²ªT?©õb?«+¼?¬-?ßÂz?Ù/j?×(?ÊÎY?À›¨?ÓÛ~?ÞI¦?ËàÛ?ÇÓ®?ÖX…?ßÑ?ãÉä?æw=?ë€×?ë}?鬖?ëMA?ïgF?ë\?àqe?ÞÁ%?Úæm?Ûô?Öo(?Òœß?Ú8?á/|?å ?äJK?Úë?×?å|h?îV?êÞm?æ½|?ßhû?Ýðp?ߦÿ?×ú?Ó=‚?Õ/\?ÞvÙ?Û}ÿ?ÒŒ\?Û?'?裱?ëŽß?â -?Ö´?Ü…q?ç߬?è-?ä ?ÙJI?Ü4??ã/Ý?àsO?àæn?åÈÁ?è£7?êÀ5?ëZÛ?æȹ?䀬?ç—´?Þ,?ÖûE?ä2Æ?í›?í¤?ä7ú?ÞV¡?â@H?á£C?ä€?és¢?êsç?äþø?á§Q?è,k?íû?é®?à¿K?ßO[?ÝJt?Ö+?å?ì?íßt?îí®?ñW?ñ'„?íp5?íÃ>?í‡@?ãì…?é®?ðä¨?òÆ?ôïº?ö£ª?ñù-?éŸJ?ëR]?ðº?ôû?ò÷o?îÞ„?ë³@?ñÕ?÷®`?óÎ ?í;s?ðÜe?÷µÁ?õ¨z?òéO?÷6 ?÷4ß?ó¡(?ìŠó?í`?ö"?ô`€?ñ®â?ðÁG?ï.Þ?òX®?ð?ïÒp?õoÈ?ðãà?íüž?òƒO?ð±Ú?ìýÇ?êu½?ä_n?æÐ?ë¸?çìg?àø‡?å;?æ›E?êÅ?ìÀ?ìv{?éŸ4?é¸?鸣?æJ.?æ·=?â¥C?çŸ?äyâ?ÙDÒ?Ó]?ÐôÈ?×ø­?åô±?ë]œ?é‘s?åê"?ä¹?è,?é²p?èÑr?æ4?ã/?ä -?êÐÒ?ì -?èaŽ?ç[È?èµs?éÉ5?æs½?Ü)¡?ÜP!?×bh?Ð1È?Õð3?ЃÕ?¹ã¬?Ê­ñ?Ürm?ߦB?ÛUZ?Ø{Z?ÝÎ?áW ?à.?Þ*S?ßÆ?ß¡Å?áź?âÒ¼?á¥?áÃé?â¢Æ?á»??Ýh9?Ñ(?ÑÉ?ßßü?á¿*?Þ“?ÝæH?Ù¬‚?ÓH·?Ñ»¨?Í Ñ?ÖÒ?Û*q?Ûƒ‹?Ùn?ΰ7?ʸè?ÑÞ?Ø6w?ÞIÎ?ßÔ›?Þ^?ßǺ?Ý”o?Ø7?Û:?Ùà*?Ö ?ÍÉ?Âæ?Âú?ÍT?ÕÔ1?Û27?Ûïk?ØâÞ?Ù°¿?ܘ‘?Û_|?ØÛ?ÖcŠ?ÙÓÊ?Ú¿;?Úø0?Þ—¹?á >?à~~?Üd¡?ÙÍ?؉²?ØØm?Ö3¡?кs?Õ}8?Ûâ*?Ýá ?Ü@?Ú - ?Øê¨?ßy?åê?å|ö?áàn?ào·?á?åàz?é‡I?è<ê?çj?ã*x?àF?ã o?äŸ??ßþÍ?Ú|æ?Øay?ÔZ©?ÑÓò?ÏÛÛ?ÙPY?Új?Ø0Ý?Ü`ü?Þ0Ë?ßžú?Ü>q?Ø…Ž?×w­?Új?Ý}Ï?à@å?ãÔà?ßÊ?ÝPß?à p?á$K?Ý9K?Ù#þ?Ú]Q?Û ?Ý‹¬?ÞøT?àW?Û©ÿ?Ûï?Üv ?á”è?ä%?äá†?â¢O?×æ±?н?Ö8å?Ýeõ?Ýš?ÚìÊ?Ý΋?ÞÜð?ÕÀ‰?ÔD9?Ðhô?ÑW³?Ø`$?Ѧ§?× “?Ùd¡?ÙŠt?ÛcK?Ü$k?ܤ_?Ý%?Þ¿ ?á[?áÿw?×Ö|?ØÆE?ØGM?Õ-?ѵ?Õ®þ?ÖÓN?Þ€ú?èN…?ç C?â8?ãJP?ß=à?ÜÅe?Ü…²?ßd?è½ò?ë„P?éK`?ë3?íëC?í@?åÝ?ãNµ?ë’ù?ïض?éqI?ÞÝ"?Þ80?Ü,.?Þ$6?á(V?àn?â³Ä?ßJ]?Úê¥?ÛG®?݃?ܼ¥?Ø|;?Ó¯‡?Û®L?Ø=%?Ö§«?×—2?Ö -£?Ór“?Ýèo?áÁN?àGP?Ú͵?Ò„?˯?ɨ…?ÖÛ]?ßKµ?àý?Þøô?âZ’?àn?ß&ï?àƒ?ÙÀX?ÖW:?ש^?Ù|ð?Ø–??ί?Ô÷z?ÞMÔ?ãi[?ß;:?Þç‰?Û•)?Ùþ?Üß¡?Ûñ¯?ÚÑe?Í Û?ÔA}?â°?ãO–?Ý7 ?Ëz¦?Çä;?Ð'?Ϫ«?ÓëY?Ö…'?Í+N?Ï2Ð?Õ½ª?Ñí?Õ ?ØÁ?×Õè?Öjr?Éa#?Ïâƒ?Ü5J?Ý•ì?ßéD?áX¤?áLµ?ß?ÞÍ¿?Þ -²?Ø‚?ÆB?Ê-?Ê¿:?ÅJ?ÐÀS?ØRµ?ÖÀ?ÒL?Ò– -?Ô”«?Ôå?ÎÔQ?Ϙÿ?Ã5ª?¿ÇÚ?»ê?¾™S?ˈ›?Ï›:?ÎŒÜ?Ïê¼?Õ&¯?ÑØÎ?ʼ?Ì@y?ÌL?Ïóü?È”È?É@A?Çm~?Æ{?É}¥?ÂÆC?¼H?ÉeO?ÐàÏ?Ê…N?Ç*?Ø©s?ÒI?É I?Ù'·?ÏHR?Éo?ÑþÝ?ÐO¢?Í1?ÆH?É+?ÎÄ?Á)š?ÇÉ¿?ÐeP?Ò%q?É„|?Ä3Ë?ÆŽª?Оi?ÉŸ ?ÔÔì?ÖÑ?ÐÁý?Ï ?Ö™‹?ÎÓ?ÇâÅ?Ðq?ؽ?Ó¢—?ÈgZ?Ä‹?ÉÔ?Í)é?ÆY?Í…°?Õh^?Ù1#?Ö®?νÏ?Õ=?Ô?ѧ4?Ò§®?ÒØ’?Ѷ6?ÊE”?Êj%?ØVÒ?Øù`?Î-p?Èñ?½Ü?ÌÚ?ÔXd?Îd¿?¿kÈ?Ë=ÿ?Ìû>?ÉTï?ͼó?Ι7?Éû,?ÆZÝ?Éæ|?Ì -ý?Ì.7?Ê*÷?Èj‚?¸¥D?Ë• ?ÒÕQ?Õ|?Ô?º?Ê…?½¬ò?Çq?ÌÕ ?ÑaB?Ôø?Ò¹•?Ê;:?ÀÒ4?ÃQ?Õ;?×V?ÕpË?Ê1 ?ÅsR?̪’?Ï‚M?Ò¡?Ä,Ù?¿¡¨?Ιñ?Ì -µ?Èã}?Ãùa?Ï+Î?Åùü?ÀãÚ?Á.?ÑEO?מN?Ó);?Ó?Ó‰ ?ÐÊÜ?Ê¡û?ÌzF?ϼc?¾˜È?Ã*‚?ÕI?ØûÙ?ÒÙ[?É©Ý?µƒÚ?¾Ð?¹—ª?É‘—?Ði¥?Ó3?ÒQX?ÏPŸ?Ð[?Ô½Ù?ÒÇá?ФÒ?Ò­c?Òó±?ÓJã?Ô Ã?ÕàX?Í»?ͨh?Îz-?Óa±?ÐJ?ÃÒg?·¾?׌Ú?Ö1™?Õá‚?Ôr`?Ôá¨?ÒrÜ?Ñ0¥?Ö5"?×…Ë?ØB:?Ô J?ËË1?Ñš¨?Ö/x?×PÔ?Ó°¬?Ðûo?ÖÛã?×(?ÐC„?Ô"?×ãÏ?Ñr?Ê)?Ñõ4?ÖX)?Îy?ÇÌ]?Åy?ÆJ?Áº°?ÄÖò?ÆÃó?½þ ?½.±?ÅZÖ?Îl6?Ç6“?ºÞ ?¿9Ž?Ågœ?Å‚?Æ?Ì#ç?Ô?Í;??Ç`!?ÇEÃ?Ëdt?ÆYf?ÍC?Ϻü?Ì+V?Îæ`?ÌÌt?Í&×?ÎÊ•?ÏËY?˧d?ÉÉô?É?ÌxŠ?ÏD?ÍË5?È ç?È`@?Ê›?ÎG~?ÍïÃ?Ƀ„?År?Ëp?ÉœØ?Éå?Ê®Ž?Æ«?ÄØó?Îì€?Ô¬‹?Ò®¤?Ì ?Ïê?Ñ`??΋?Îäö?ÊÚÊ?Å*?Áœ¤?Í ?Ò5?ÕL?Ïh:?Æzi?Æ?Ìc¹?Äm?º0“?¿áF?ÊŠ¿?È…‘?Í®?ÐÞi?Ï~Ê?Ï?ÌÜÇ?ÉÊg?Æt?Çk?ÂÊí?ËQ!?Î+g?ÎÔ?ÑÞ?ÓÔÉ?ØÒ?Õ¡?ÓPz?Óª?Íó?ÈË -?ÍÕŒ?ÏeV?Á•â?Ë+?ÉÑ?Íÿ?ÎíC?Ë×o?΃[?ÏS?Ñ/N?ÏbÙ?ÏBu?Òý?Óú3?Ò¤Æ?ÎØ?Êͦ?ËÆ?Ð`?ÌJ„?Å}5?Ã-?ÏÒ?Ð=>?ω?Ðã?ÑW€?Ê9x?ËÒI?Ѷý?ÐVY?Ĺ´?Ä<?ÏÕ ?ÐN¦?ÎNC?ÏuÚ?Èâ?ÇÌï?ÌÔ¦?ÏÔA?̉n?Ë·7?ÍÖ?ч?Ï€t?Æ3S?Ê)é?Íû!?ÍjT?ÎÂ?ÎÿŽ?Ðèj?Î-?Çð!?Êø?Êq´?ÉÄQ?Îÿ*?Ïhñ?̯©?ÊÂ??Ì@™?Î'ž?Îõf?ËÆ·?Í ?Èõ¹?³§œ?Åô3?Í6^?Îúp?ÐN?ÐKV?Ï2?È&?»,i?½Y?Æ¢†?ËT?˹?Æ ?Êû¼?ÏJR?ÐPÅ?Ì0È?ÌQ«?И%?Ð)o?Îô™?Ï1%?Ï}¢?ÐHx?˦1?Æš?Ì d?ÌèÍ?Ë•ï?É~t?¶!r?¿Ë?Êp?Å«?ÉÃÑ?Ç]1?ÆkJ?Ãhß?΄X?ËI??ÊæG?ÈRE?ÁÙr?ÆУ?É2/?Ìš¨?Í@ ?Ìÿ¢?Ë"?É•A?Ê °?;d?ËÈ(?Ê4ß?̓¡?Ρ|?À0ë?´5×?ăK?¾ A?Ä2Ä?Ë£Å?Ît6?Ë_€?Êk±?È0º?ÂÚ?ĘÜ?Å‘9?É{;?Ìp?ÌÐ?Ìõ:?ÌPÆ?˪?ͶÍ?Âu?ÈX ?æ?¹¼á?®6\?Åxš?½]?¾/¸?Éöÿ?È,?Ézñ?ËÈ?̬Á?ÇÓê?Å"Ä?Ĉ£?Ìz‡?ˉb?̆I?ÌK?ÈGº?ÄŽ4?ÈÏÙ?»ä(?ºAË?¾ØD?Ãï¥?ÄeÅ?¼v5?¹‹3?À³ ?ÄÊÏ?Â]-?Äg+?¿?Çk¦?ÊÄ„?Æœ^?Áä¶?ÅÞ{?ÆE?¾ñ•?Ä|ã?ÆÉ?Ç#X?ÁB?¯™?³)2?¼.«?ÀLî?¿%O?¾üÏ?¾Æ¤?¿+7?Àܹ?À m?¼àò?¿s?¾Ø%?¸ï?·á?¨»÷?¦í?³”-?µÁ¬?´Ù?¶‰-?«ìO?µŽ?¸µp?¸?º#v?³ãŽ?°Î§?­)_?¶Éô?³3?¶„Ÿ?¶ø}?¶zå?°°½?¯›Û?µÚc?²dó?±zn?½æÍ?¹¨™?°§V?»L?º×‡?°W¯?¶S?ºÎ?´l?· ?ÀXÒ?¿«L?´R’?±Ì?»ô,?¿6?¹€7?±CY?´ë?»?²âD?¬Êû?·W?Á>?¾@Â?¼Ÿp?Á&.?ºùÔ?½›!?¾º?À€"?¼ûE?¹f(?±½Û?²+è?»«M?¸ðo?§¹m?© ?¼³?¾&?¾“W?¹af?²öE?¸åˆ?¾f?¾ìÁ?¼›.?´ª^?¹ñÖ?¾‚ï?¼+?¼Ua?¹,-?¡4=?«xK?¾+E?¿öL?»l'?¶×?¹)1?¾iª?½Jû?½Ä?½£{?¹[é?¹¯”?ºŠj?¾8?¿g?»’[?µÃ¥?¹OÍ?»|?ŸïÊ?šUP?¸°?³ß|?¬®©?·Ñr?½dh?½o,?¹0v?¹³??¹·{?ºŠ ?¼GÐ?½v¡?ºŸ?º5?¸6ø?ºèç?¾Ø?¼Gx?· û?¸9Y?·‰S?»”?³±(:¤bÒ:ÉiÝ:õÃh;8;1 c;Hb%;LÂd;=tð;*;Ë×;=™; Ø:á}=:¥±›:}…Ã:x›H: ÷4:äEç;ÁŠ;:”P;HÛ—;Aj -;. ¢;–­;š’;ˆ?:ûäQ;»£;(‰;\JA;‡ï¾;™y0;Ÿ"s;šo®;‘Zø;‰Ép;„%B;|å;w;‚è;D*;˜£9;–ð;‰¡c;rýÛ;Q¿ë;1ÏS;OM;âi;'qk;WÉ ;ŒÖ;¨8À;´V;®YÒ;ŸŽ‡;‘“_;„µs;hz›;?´š;©:úÀ­:éäÑ;*C;#¤ ;H>Û;bà™;qp;{Lj;€_“;tô;K®;Ñ›:Õ|¦:Å:K;0;NÞG;–×S;À­i;×q”;Û¶f;ÛÐÔ;åxþ;ú)ˆ<w8<t<# <^c<3Û<žE<d¿<¥f< -þ]< -Ó -<=< -z¢;ù¿ ;ÝP};ÒK;Ø1;áb™;âÔÇ;Ø 1;Æwd;¼Õ7;ÄuX;Óä;Õ©;Å!í;°?Y;£œò;Ÿ»É;ŸÜœ;¤2;±è;ÆvÒ;Úè¢;âD ;Õ$ ;»ž;ªè;®1g;ÀøÕ;Òä;Ýyº;ìèQ<÷< h< 2M<'J;<&Ѩ<—<û¨<Úþ;ù -;è•;Þ‚Û;Þ©n;î%Ì<€Ê<ž³<1Õÿ<8\Œ<5Øf<.êÇ<%J§<ÙE<^´<ŽÖ<L9<[¨<{< ¸<Ë—;üá;ú.];;àCH;àhP;öÓÎ< LQ<fU<t< I=<+=É<7 <8v&<+Íà<Äš<iÜ<3v¼;ªR ;µÝ ;Ý}w< Ñ(<)²m€o—<6M<)’¹< û¸<íu<•Ý<ߺ<Õ;õK<s<t <`|<…0< b*<®8<)žr<.—!J<ÇŸ¯<À}À<¶ÛÐ<´§¦<¾¼k<ËJï<Î/Á<Ç2‰<¼ô<³B9<«ÿb<ª„@<±[<¿.É<ËÙÈ<Ï]â<ÇOž<·¸<§bû蘯`=Eå´=KRí=Oå¿=V*=]/=]…°=T™å=I~Ø=D =G¹S=N^f=QÈb=Mèg=CIË=5¦=+Sn=(¯ý=*øê=-¬=,#ó='X= #¼=Oß=&º=4‘=>a=<à=1VL='€=&¸Ù=-ˆj=6'ü=<¤7=;¡w=,Ž =†T<ð2'<Ú-ý<àg<é…<<ám<Ë d<»d<¿„‹<ÒP"<é…3<ú18<ûÌ[<ðÙ<ßIó<Ë“à<±÷¶<—Eä<…Û<€e†<…Sƒ<˜ÔÜ<º©¬<ØY=<Û®<ÇE <´é‹<¶™w<È*ý<Üÿñ<ðUË=*Œ= ">=ó‚<é *<Ç£ß<Â{›<ßœ=¾n=V==)ëI=6à}=DýZ=Mn¯=G3#=3xã=FY=U<ì·Ý<Ñ“Ù<Ë@j<ÙÙ…<è><äzÛ<×µ<ÖÈÆ<ì_`=Î=¢=,U="ùÄ=1׫=:¬=4$=M¢=M<èUB<öZ¹=¥ì=5{Š=LLO=R¸¶=Pm8=U°‘=f°=wL¤={àà=sRÂ=_#Ç=>”î=Æ=‚>=ÆT= UF=o=¸Û=#f]=6¤.=Lü =aj7=pR‘=u Ú=ný>=_Ú=Næl=EŽŠ=?–m=6é—=,²=Öj=}«= Qµ=à·=#‡â=7J=E3q=KßÄ=Nç\=UM=b(0=qŸš=~­=„é=ˆ -„=Š,È=ˆÿÎ=…Q¯=€IÑ=tïy=mÞª=sÀ=‡ï=†º=…üw=€bü=mÁ-=ZA¶=Sûò=`x=u3]=‚v-=„¸ø=„KÏ=ƒU =±ë=r|£=c6~=R¹L=DN¯=DCf=U …=eÆ=jZ÷=f9Å=[®÷=Hlõ=/±%=bÝ=^‘=(|¶=H²=maG=ƒëª=…"x=xoS=f t=aåù=kÉ=zà×=…W%=î=“g=“þŸ=ŽäD=†#‹=tSÿ=R¾ñ=,áž=‹í=  Ý=1ã=ì”=Õ<=«ã=5]ß=[ ¢=}‹n=‰r=Œƒ=Š¨ú=ƒµ¨=pÞt=U?=4:Ÿ=0‡<Ýôà<¿¯÷<Éã¢<ðpý=OÜ=.º¸=Aïß=HŸ¼=A=L=1ý=)ì=,€%=-­=$aÕ=s€=aÀ<áW=<Ãg2<³~ò<±t§<¼Ú<ØUý=çM=2=+u\=20b=.2s=!™Ú=ž =|Ô<ìVd<ßà<Ù@‘<ÍÕ<Ã51<ÔíR=Oa=!bà=5´=C•Õ=V‘õ=h0á=hhß=Qò=.¬p=p†=õÝ=#¯Ñ=9S˜=D&Õ=?=3xå=0ìE=7>œ=8=3¼‘=<Õ=Y¸=z.´=‡ª=‹1ó=¤ã=h=ŽGÍ=ˆîO=ƒ­ª=‚=­‚='ø´=ExV=c¬æ=uü¡=}´Q=€2Å=€Kf={¾=j @=RP÷=Eݨ=O¦×=eze=wTþ={à.=n6b=T…=?˜¨=6¸”=+ªö=å_= W=*RÐ=LÎp=ed%=h#ç=^•=Z=bÃ=reÛ=€ µ=…ÎÛ=†ˆË=€· =iÐŽ=RÚ—=M®º=Xæ6=apH=[K˜=I¡=;`È=DS¾=cZY=||=}ˆ=wMÇ=y•â=xƒ=`?o=;K5=*=8\°=Tr=l!g=€=Œ=—2×=™yE=ë.=„Ó=}ÿ=RÞ=‚éz=|R€=rá=w°ˆ=…=ŠÔA=Šñ½=‹šR=Šú=„FÑ={ÑÜ=ÞÅ=Ð =žØ´=¦òí=¦Ré=¡=«=Š=›x=š<Ú=–h=¨ =Œ’#=ˆµH=€(›=g™X=S|~=JÚ¹=KÄw=Rv¦=X"=UÓ›=IÕm=5&’=¯&=Bé<äO<Àù8<¬NÈ<ªýì<²tÒ<³ÒK<µ¤,<ʆ<ôtÞ= =*¬Í=9wF==ï=;Ö=2ç`=*%ª=1l=PÑ)=t"ù=‚°=‚¹=‡x=“nò=žIa=¡Ÿ#=£&_=ª˜=±¬T=¬Kl=œBr=ŽÍ=‡<=‚2û=kÆ=DHã=%t>==% =$5³=-D=\(<Û¼i<Îõ2<Úe1<ôa= Ÿ?=!=:|ñ=YJ­=}#D=h =›¼æ=¥.7=®±–=¸´=½µ¶=¼d=¸ßL=½=ɲj=جm=æ5à=ï04=ñOÙ=êÍø=Þà=ØV=áœÇ=òi3=þ}Ä>,=ùú =ò*r=ë!í=ä›ù=æG=÷³¥>Ùu>¡5>$®>¨>(˜>¯ =ùB’>Öe> x> Ó>aþ>ù<> Ú>º’>¶ê> ï¨>(§á>-Ë5>-.c>)Ü·>(aÐ>&›ü>!”8>q4>pö>µÕ> 03>_o>#‹>0P`>7·Š>1Å>M=÷Ô÷=Öã=ÊŠ›=Ì=æÉ­> $‹>*&3>>N>Dz>>ûœ>5Äc>-åB>(Èù> ŒÈ>WÝ=íw=Ñ„l=ÞÞ+>is>ìÀ>3n>?@ž>EÍÀ>FõP>Aµ§>6ëð>-L•>)'‰>%VR> (>!þ>*jM>0ÏÙ>*#‡>™(=ÿÂç>’W>–>'žD>.´(>4Œc><ëz>:è¨>(¾@>ïn>!h[>3Pr>6Xv>$> -ÙÇ=ú{õ>§u> {p>?Q>Q0ú>P6§>I« >Jt>NÅû>Sœ·>`v>v#¤>ƒ‚Í„>xaV>j^º>c­¡>e*>a0>MDO>7à™>/ûp>/8;>(‚I>ëÏ>„€>]ò>%¢À>5”->EÃ:>W±m>cƒq>c”.>Z³Ð>K³÷>:åA>07>1œ;><|¶>E“ç>FpV>CµŽ>@6>9N>4j%>8­C>>¿1>@Šÿ>D`¶>R—n>h'$>t¡t>m¾Ó>ZH>G®>;_>1âã>(-Â>!Ž>#ðŒ>/ ¾>?õ>Lݯ>Síq>X²>YNY>USÞ>I©·>/ªr>%>«À>¬®>7Á>O¡¹>X—S>U=>K”µ>C÷ˆ>Ai!>B É>FØ(>N]2>T>Z ’>gáÂ>vb>{š>y ¦>yRÇ>€to>‚¿>xõâ>bŒÏ>Tòà>P=F>LÍ>L².>Qâ§>P ´><æe>$Û¿>Jà>%¨L>7>E§>NT8>Zí>jäÈ>sZ<>k·Ã>`ó»>b³¾>o¨>{;]>xZ>igS>bFë>eж>b§>X&?>]y>smT>€6G>xä†>h4>V»è>E3ó>6–>/ËÚ>.>-Ç>3Ô>?ÙÄ>Hè|>Q2Ž>a%[>wvÌ>…@>‡(>ƒ6¬>€&>{ï#>pœ/>[%e>E¦£>Bíà>V ß>j(ý>r"ß>pÁb>fuk>O¾>.w>Ãu=ɬ‘=‹­D=R»Z=gsT=¦UI=íÄ¿>_>46>;Uá><àÈ>C¯>L5ÿ>U`6>a~†>kÇÈ>nÓN>oA >vÔ>…_=>”›˜>¢Q>£·K>˜G•>Œ#v>†Ú4>Í6>jEz>O p>C?>7f´>&)">(7h>H$z>kAÚ>vsÏ>k >[“Ì>Z©>n\>ˆK&>™w)>¤÷Î>§ÁP>¢Jø>—Ü»>‹³å>x¸4>OH§>+ž¯> ¿Ì>"ص>%ðx>:V2>fÆ>Š¦À>˜c:>–Ðb>Œ×ú>…rþ>ƒy\>…†Œ>‡$è>„IH>|«K>i=è>HÞ>%/>þ”>/±Í>[öl>{ܼ>ƒú>ˆ¯³>Ë>Š%Ü>tìÒ>OÒ>A:´>K 9>[•C>kƒš>s$A>cèá>D²p>+AG>'Té>@ç¥>rgƒ>“œ> çå>žQq>–ïp>ŸXM>¸ÇV>Ëq³>Êà¥>À“/>¶l)>¯à¡>­¥ð>¦£Ø>’ä>p›Ù>aì>ˆVÐ>­Gî>Á‡R>Á[Ù>¿þ,>Ç ->Ñ{Ž>Û[¥>à Í>ÒõR>³¤Ë>™«>Žü>‹BÍ>”ƒ>§ã¢>¶oÅ>ºzm>¼þì>¾ì”>–Ð>ÐH\>Üx@>Ï®Ç>¯€œ>›·/>¡C >²,Û>ÂöŒ>Ò>Úoç>Ò¶>ÁpŠ>º;–>Ágþ>Ï]·>Ûz>ãd¹>ççØ>á\>ÏKê>ÀS¬>Áƒ“>Ëdñ>Б>Ëâ™>¼€{>©mÕ>¡æV>°-0>ɪ">Öº>ÍóH>½¿ü>ªJ>‹ÍÔ>W]€>FY(>wΡ>ŸF2>²ëL>µ&>¯È>¬¶>²þf>½'>¾[>·.q>½>ÔÜ5>æõé>ã2ý>Ñ1>Ã^>Å='>ÅyÜ>ª1Ç>„M¤>llÅ>}•Ô>ˆþZ>—p>µM>Ód>àû[>Þ˜>ËÐs>¯‹>¤o=>´¯Ð>ÐH£>äŸ >æ­)>ØiM>Æ¥_>Ày¢>È÷¿>Ñhs>Ï€ >Ê3™>ɬÔ>Èó”>űK>Íë>Ü|0>×µè>½Ë>§¹E>­Ë>Ê ->êo=>ý’>÷«`>ÝD>Äpx>À¾>ÑÂK>ëÈç>ûsš>þÊ–>ýF‚>ô5à>ëÈa>ì(>èT¦>×IZ>ÃP¡>¹/">»óô>¿Þ">»Ø>²x­>©+–>¨`¡>»:æ>ÔH}>Ú(b>ÒÍG>ϵK>ÏEÙ>Í63>ÎÎM>Ôéç>ßY“>íã‚>öƒm>ø€Ö?؆?9½? ‘q?cG>êt>Úlz>Ý»>õG%?Õ_?6ð?¶š? \#>ùðG>ä÷ç>çä‚>ú¢û?ó>õyh>ÚÅ1>Éþ$>Ð$k>ì“!?°Ö? V?ã×? ýÎÐ>ùa¾>ë'ó>ÓÊ>Ķ>Ķ>Ð>Ý‚8>æ¥Ò>ßM>Éí>ÀI÷>Û9ø?U1? Ôj?T&>÷å«>ô¹?3ý?Š!?\›>üK?e(?«„?î‘?Ý?&??¤Û>î3(>ÞÌ>ä??VY?@È?É?(?òÃ?g?Ä.? aA?¹k? E3?ã?&î??(Ï? ?eÓ? ~ª?ât?#?û·?ØÒ?s ?? 'P?ßB? cŠ?mH?Éb?¥I?Ft?v¯?À?‰¤?Cé?ü?ÜÛ?‰L>ýìU?ÌY?Ö]? -ùr? ‚? Á? w? O¦? ƒ?  j?T? P§?DŸ?,£G?.+?(eo?#)S?"?&{Ó?,‘Y?1œ?4ÿù?2®?+c:?*jK?-3A?,¾]?*´?%Ó?³U?«_?Ä?že?$Ü?šS?RF?ÿ? Ä? 93? -‡$?ý‘>ü£õ>ðäÝ>øñÃ?Zˆ? S€?\K>ý È>蛹>æ“>÷Ÿr?Ká? Ñw?¹ù?\Ò?€;? -?93?ð? Ž|?/6”?5X–?0·˜?%?x? ?ü¥?Ný?T<>ô&>ðÝq?<¼? -½t??ü?¶? š0? è?-ã?(J?/?a%?ê¶?ÿ‰? œ ?æè?Œ‚?0A?!R?F´?ÆÇ?áw?R+?Â?+?'£ç?.w;?,¥¿?!X”?¶œ?®w?£¸?û¥?”Õ? »d?!ƒ9?ï0?¡?¼¸??»?u\?%¸J?!Ö^?V?ò•?öá?!NO?(H~?.rø?15ì?-´È?)Eð?,næ?2¦O?.‡è?®­? ÓS? -uÕ?­©?Õ??üÏ?&ê¡?*Õˆ?(Ç ?)i»?,h?(ÊK?!¨è?Yä?#›ó?'|†?*|¶?.úß?1¯[?2½Y?48ü?3“?/¿Ÿ?-D?. S?0XÆ?-U?%4ï?†‘?Hÿ?e? Õ??Ìì>ÿÏ«>öPK>õ}>ÿë`?úœ? -µ? ‘ü?-V? —@?ìÎ?là?>¼?èÅ?À?¥“? -Ó]?>?ÒÃ?WU?Û¤? -jõ? n? &S? -Öò? 6&?>©?°Q?'a?,l?(ó†?!ç?ï?¿Þ?ÔI?'(Ž?-yC?&çû?H,? ¢–?ÎÌ?-? -½x?”â?{t?c?Äf?>?°?P^?#PÙ?&N?% ?!7Ü?F¬?R}?Ÿ$?! %?\N?e!?1D?|‘? Z?¥D?ÿÁ?$:p?$¦o?#‚[?"C+?…µ?E? j?qN?3@?#-/?(§î?#³?!m?1.?&à?Oc?a/?–?ÉÚ?-#?s–?^¸???ôÚ?c¶? åO?–¨?ö¨?ÊÒ? 7¹?!ÁK?",r?ƒß?oÑ?}?"5?!(ù?#ñï?+Ó?1—9?/¦J?"ÓŒ?„à?#÷€?'ºC? å,?x©?! Ð?$0à?ªã?Qà?4T?/-ü?=ǧ?I±Y?P4û?Oô:?F®?9£Ú?6>?7r?5Ó¨?;Ð?G}[?LÜ?E>[?:ž÷?7]?<½1?BmÂ?DË›?J?P®U?N¶??§?(¤Õ?Yy?%wÝ?8‹·??÷ã?>Á?Et?Kï?@–?1zî?3¶³?A¿n?J®y?PgÇ?Vé?Ytv?\Fý?`û×?dH1?jy?oã?hÏ°?T?7ÎÑ?ûr?)4>ô—C??[ƒ?ô?´?Éf?q}? Áš? ã?ÐN?ã+?#¬•?)$?-}“?1rÝ?4v?4S?/(T?&?þ7?Ž? "? -· ?;L?!UE?&s+?+Ö=?,Ä{?(ß>?(ä?/é ?1Û·Ì?9˜?8¾?*w?åï?ú[?"!d?'HZ?11?9ò?=o??ÿ?B‡Ñ?D!m?Iaš?Ol?IÞ]?=‰?;0^?:b¤?13±?/×x?6¿d?:1n?8÷:?6–?3`ò?.Ö?.>4?.E?-˜?/~?2ð?>ò+?KÙÀ?R'?Sìž?M[?C¹R?;U=?.æh?"·k?%ÒJ?,I±?)á-?'`ý?)Mu?4¥°?Bcž?FÔ¼?J²P?P#®?M`?C¢`?=Gé?BÀi?Cm›?86’?4þà?3`†?-9?-Bá?2în?2&B?(“? ?!ˆ?)rÄ??Ž ?Sp?[c0?XBŒ?Y½?Z^ƒ?Sõ4?H„m?*Ÿµ?t>ʵá>ÃU>Ñ°>Ò>Á‡ä>Å›Ê>æQò?·£?º{? 9?4#>þ¿Ü>êV">×h >ç? N¯?!Ù×?)—¥?+¤>?':Ö?cÈ?t? ;?ã?* +?6®?: -ß?7ð?2<ñ?*\Î?|5?òU>í -ú>è/ >äã°>ìQL? !l?&Á¯?=–í?E A?By?AÌ`?IP?MS;?O0Ï?Rò»?K¹?6\1?!¶A?_|?(¯×?HF?^/?cŒ«?Z±ó?MŽ?N9?]q…?gÀV?d?XšÐ?QlÇ?Uy]?]Ï?`Úl?O*ž?0.Þ?*\ò?4%?0#Å?0š??eÂ?F™#?Eèã?Sm0?f»\?l±?cÍÜ?V f?EHÐ?3³?'CÅ?(Dú?2œ!?'6h?›a?dÀ?CQ@?VCØ?Wç‹?Wî{?dìû?sbb?s¾?hém?\–u?W–Ð?aûD?wDL?¦Ž?~Cr?w)]?xP²?z}ñ?x²ü?v¦þ?kcS?PaÌ?>·?IB?XžØ?^«i?k1?~Å??…;Å?‚{%?{2X?}Éß?á ?€vé?zŽ ?xr\?|[¢?~$S?zò?uXÞ?tV@?vµ?sÙê?mT¬?lL?hØ#?K*¡?+P6?5ê¾?UnÄ?gu’?pÐo?|¥”?€}o?|–Ù?ws&?iíd?ZŽ¹?`1Y?n3Ò?q?o™?p8k?k×}?c¸ò?mt$?µ.?ˆ÷Ž?Z3?5m?K…? k?Ž[£?‰ˆp?ƒ  ?‚#~?ƒm?‚MZ?‚ ž?ë3?xá?^H\?PÓX?hD?…9Q?ŠÍ”?‡¿A?ˆ¨?ð?jQ?ˆ¦ò?…Pæ?ƒœŽ?„Â?…‰†?„Ó¬?M_?qln?n?v­ ?xÛ?oë$?^t·?Zßw?tVÅ?‚Š–?‚”l?‚.?w)¬?]k?R<?\éR?^»f?\ë?oÎ?ƒFZ?ˆ³¡?‹ãÅ?ðu?’$'?3¦?ŠŒ ?Š~ý?Ðã?ŒB&?Š4?À{?`ô?…]ó?py;?tÕ¢?x'„?n€†?iBª?p?}ËÜ?ˆO1?‘ñ´?—¥ê?™¸¢?˜á¢?ŽN¥?ryé?SŽ3?OÛ¬?TÄ?U‹?RÄÞ?K}=?>§:?;p÷?JÌ?Wâ^?T²+?QV#?V’¥?[`]?`:?dk‹?i‹¾?hÏÀ?aÈ?`>2?_«n?ZÙ{?XºÀ?U1N?ZpK?iM*?iýÙ?_U…?bˆ?r/˜?|H@?xœK?q1è?p­I?p.º?uY1?zh‡?xø@?v¡"?mK|?gz?nœI?mx?ffÕ?i²O?l1‰?f]?aƒ -?mH€?wÓä?q’¸?b@?X;›?T)o?YDš?jÄÞ?€H`?†Dù?†?¥?†4‘?†­Z?†c?ƒ–è?{ƒJ?u¯•?€E^?…Ne?ƒíª?IÊ?€@ÿ?f×?ƒ¡?„,*?‰&?I?‹ž?ˆŠo?†ðE?…b¼?ˆS?;á?á»?‹¼¤?ˆž¿?…æd?„o‚?‚—?€AÌ?x)?êÌ?B)?Š6?ò8?`y?zóy?}×ì?(ö?ƒ€ ?„c˜?‚…J?ƒ•l?… ?†YÅ?†Æ³?†¯ó?†¯í?„28?‚„?€¿Q?z±?n´?hô?kÖé?s§‚?vÐ?yè?˜Ñ?ƒ¡¡?sC¤?\ÿ?]#?dV?gÄ¥?iA­?oyr?yŒ;?<,?~k?|ëÊ?€Ð{?‚+?wWÀ?g·9?hŠÃ?kQ»?h ?kÂ"?sp?o?c¢T?fb?m:?kŽ?f)}?jòI?u'Î?z”M?uÏ:?lx?h?gÖH?fùì?f›ò?iL ?lx¹?pjÂ?sšŽ?uþY?zG?NY?†6%?ˆîU?ˆï?…³‘?}϶?mòn?s´?z¯?rÿ:?rÚˆ?yÄØ?}5Ü?u`?nì?nZT?stš?€Dh?…?†j ?ˆIµ?ˆz?†«`?†.?…‰£?†Æ¥?ŠÀR?‰œ…?ƒ„Ÿ?‚]?‡5N?o^?‘ ˆ?rú?ŒÇ1?Š#u?†õ:?ƒ¨:?‚•?€[Ô?ô?†Ý´?ˆ£?‚î ?zwÎ?{ÂË?ÛÆ?‚×¾?ˆ+Ž?ú?Ž˜û?‹¢?ˆþz?Œ0?‘òû?”üª?‘Þ?ŒS?„œñ?‚µ?‰0õ?‹$?‹2V?4–?’Ç?íÿ?Ž½A?Žñ±??‘%e?‘mT?’Vc?˜?3?šì£?•=N?“?d?˜Ïs?™Ö?“ž?‘¢é?˜S¿?žo@??“Ád?‰H¤?„Ö9?Š2Í?’>¼?•L¿?•ãý?•Š¬?•7¥?”Ѫ?”…³?”OE?“ôÜ?”l÷?•À?“Ð?Šç,?†‰Æ?‡)–?†ƒ?ˆ¨S?ô?”G'?’þ•?“eV?œ³ã?¥\n?¦\?ž{?šÓ¬?¤ --?¬É ?®œk?©¹ ?¥W ?¦Š¢?§Á—?¦·?¤ñ? ¿Ï?œòý?—Ãñ?“žª?”ø¯?™µ•?œÙi?{[?›K?™ ™?›˜?ñ§?Ÿ±?¡ë…?£¦x?¤!;?£;?Ÿ•ç? ð?¡oâ?U?^H?£°¥?§ˆ ?¦ó!?£(1?œn©?•Ìö?‘Ò5?Áv?ˆ½Í?†–-?‰òî?‹-x?‡Í†?ˆ±™?á?Œ²û?‡vM?…Ô?…úœ?„?†å?Œ*G?TÄ?‰|?†U?‡"Z?…7Â?ó¹?}6?x\G?òj?ƒ©Ö?ƒô¨?ƒÿ?xˆM?Q m?)Þô?4Òž?X ®?^h?DÒ?:?Otb?[/š?c á?n6ã?sb?pè¥?kÎÓ?m'K?qÄÄ?u€9?v£©?oÉ?h­?i@Ï?mÌM?pŒk?swÄ?s»¥?l¤ß?kö\?qåd?xˆô?{£"?{4¶?|`?€uà?€ä?z)ó?|ÛÍ?‚B?„QÉ?€Ô\?yH?€lb?…_å?ˆW´?‡»¿?`1?yK#?}*¡?€;9?€Pr?z?n?o©a?qn›?}Ï?„æ‡?†¼j?…gn?ƒÃ£?ƒ¨A?†œñ?‰ÐÇ?‹¹i?‹ˆv?Š6Ù?ˆêÌ?†¶_?ƒÎQ?‚±½?…µÐ?ˆæ?…öL?‚ˆA?†Ë¾?ŒõÛ?iK?Ž”?2.?‘Ã?–ö?˜¥â?•üu?“?Ú -?†x?Œ7ß?Žó?— G?˜—?š+?œø?ž‹“?Ÿ}?œZš?žK?¢ÏL?£0? 0?Ÿê9?ŸB£?¡?¤ýy?©?¬'æ?­ÔY?­ U?«˜2?¬B'?«¸?© -Î?¨é?¥¥™?¡ê?£¡€?¨Kï?¦Ù.? }–?š°œ?ß?ª"?±Tv?³º?´y/?³šÛ?³–Ë?²þb?¯þE?«*Ú?§M?£0 ?£Ë ?©‘e?ªù±?¬Kµ?¬•­?¦Ð>?¤O¤?§Íì?­Æ?³Îø?²ÞÂ?²~?·+??³HÒ?¤Ï­?¢ÃÅ?¬ ¡?¯²J?®­I?¯ZÙ?­æ¾?°v?·îE?ºz|?·s?µ®Ø?®®¨?¢|P?ŸŠ?¬Ä?ÃZ?».™?¯2l?ª±0?°þ?¶¿?¸Ë\?µÊÈ?²/˜?¯à²?¢ø`?•i -?”Ì{?›v?£ûþ?­é•?´ZŽ?·&>?º?¶y ?±´N?·ÿ~?¼Ä?»SU?·ë’?µsŒ?´ŸU?·Ê®?¿.?ÂD[?Ã/Š?ä?Ä™^?ÈàF?ΰ¡?Í>?ÃØ ?À@?ÇÈ?ͤ?Ïér?ÕµÐ?Õ‹O?Ô=*?×™?Ø?Öé?Ô'Ò?Ò™¼?Ù8È?Þf=?ÚsÄ?Ù÷Ò?àÂ?ÞwÂ?ÖÚy?Ö@?Ö†?ؼ&?ÚÅÖ?Úü£?Ü•A?ÙÑû?Ì_º?ÉI?Ñýð?Ó·¤?ÓÃ?Òº ?Õ•?Ü”R?Üú]?ßp­?æM´?àÆ‹?Ô¬?Ò1?Ú]%?â$Å?ám6?ÚÅÉ?Öa¸?ØåM?ä"h?é/0?éÆß?èÊÜ?åu:?é¿B?ìÐ?ï­­?ìÿ?äÙ¤?éï?ì·?ç`˜?Ú‡¹?Í6Ý?Ù Ê?éd¼?ðu¦?ôÔG?ôU®?êÀ'?ãuE?êßq?ð›Õ?î‘Ø?íÈ??íH?é?ì6î?ïäâ?í"€?î«Â?ïGÚ?ñÎò?ò8ã?öj»?îÃP?àpx?êEc?ø»»?ûq¶?ôú´?í¿¬?ñ5£?óp7?õU?ù-¼?÷Ì+?öPà?ùÔ?ôÖ¬?íz)?û ³@iå@p(@ÄB@¶þ@=þ@ –?÷äÈ?ÖÞL?³å¦?¸2Ÿ?Ä‘ó?»1b?´TÆ?¶CO?¶¬”?´âˆ?·Ä¥?¿ ê?Êé?ÎõÚ?Îß.?Ï(u?Ñ(´?Õ.?ÙpJ?ÓP÷?Æ ?½?¤0|?’28?žm$?¥ï}? øB?ž£Š?¡p?¦¼)?§†û?¢‹¤?£`&?­)®?³–?µE®?­»Ó?«B‘?³å?¸«Ó?½X?¿›H?À×&?Ám?º:ö?š#&?)ö?ƒèß?ÎU?|Ô?„#)?ŠJð?‹ÖN?‰«Ö?"?—Ø?œÈ³?½2?œËW?˜ q?—?ž¡ô?¥ÇÕ?§1?¯¬a?¯Àà?¦ó?ªÍ˜?®±@?¨p?­Ä·?µ–?±h¥?·|e?½°?¹T?¸X?¾xÞ?¼Óà?¶ˆð?ÁŠ3?Íbô?Æ»‡?´Á?µâ²?¯˜Þ? ­i?¥tB?³mÁ?²ž?­n3?²³N?½xž?ÁÓç?¾eÞ?¼ƒÚ?À+?ɵ¹?ÈP?Àö1?Æ›?É8P?Ë ?Ä—Þ?½^?ÄhÆ?ÈÔ8?Îz?Ç‘V?Èò?Öòö?Ùp1?ÍÛ?ÆJí?ÈqE?Ñn?Ø Œ?Ð΃?Åiv?Ê‚Â?Õ­?ÖÉ0?Ýöý?ßðŽ?Öiu?Òy¨?ÚR ?ä¿?àü?Ùöá?Ó"?Ó 8?ײN?ßUQ?Ýž?Õ ?ËÄ÷?Ë‘\?ܵ¥?ê†z?矚?Ú©N?ÜW0?á?áf§?Û)?Ñý‹?ÖÄ?Öð%?Ù¶B?ÝSÀ?ÕÙ?Ò›‘?×{?Þ+Æ?Ýžq?Õ²…?ÐrÉ?ÞIw?Þþ¾?Ø?Ú-i?á½ ?çEH?å¿?éD·?ðÐV?çT*?Ûœ´?å -?ë&ç?çE}?ßôŠ?Ý6n?Ð8C?ÅÇ?Ú{K?æM}?Ñëb?ͱ?ݺ\?ç?ì -?îï—?ô6$?ó¾Í?ò©M?ôoL?øõ)?ô9µ?èy¶?ç,z?ãs¢?äWG?Ýsv?ظ?âMa?éÒƒ?ïk“?î6#?âØ*?Þ@R?ìÍø?õ´w?òE?íî{?çAW?ægG?è -?àŒî?܆¢?Ý7¡?æðš?åÜ?Û0|?âo3?ð&?ôFú?ì½I?ã!‘?ç?«?ðoÚ?ñ'æ?ëáö?൸?ä??ë&¢?è}v?éÄ?ï7J?ði?ð­L?ñ¢?íô}?ëò?ﶜ?嚌?Ý'?êÔÑ?ó¥U?òD?éÊ1?äÅ„?è‡?èY?ê ?ï*f?ð¬®?ë6?å¬?ì?Ð?òìo?ïÆÚ?çY=?ä[Î?âv"?ÛGF?éw?òL?ó?õ'˜?õP6?ñ~Â?ñ2œ?ðÑ?æµw?ë‘t?óeÔ?õ„?øý?ùú?ô½`?ëÖD?í@÷?ñÔÁ?ö t?ôý™?ð‘‹?ìËv?ó/†?ùo?ô‡ú?ì±_?ðÏÙ?ùA?ö™o?ó/¿?÷°Š?÷4˜?óo?ë'K?ì?B?ö‘>?ô†³?ò@å?ñy­?ðáÈ?ö^?õ‰¾?õè÷?üaÆ?÷õù?ô¹?ùaŒ?÷eÀ?óxJ?ñni?ëÛP?îy??òž?é¦×?ßâð?æî?êQÑ?ïŒø?ñ?ñ7’?î ã?îèv?ï¶?êÁ¥?ëGò?çš?éÀ´?ê?à$æ?âÏ?á¥a?߀é?Ú%+?Þ*ø?àý?æ/?ï®í?î‘?脽?çn?ã{@?áá,?ä%†?çî|?íg#?ð”?ï‹1?ïlÃ?ñ‘á?ñß?èY–?æB?î|É?ñ_b?í–&?ä - ?ë--?óþ?ìN -?ã“?äØ?ãÿ?ã²?ìÕÆ?î¼?ïhí?ì]Í?ðÈx?ð8o?퇖?òÖA?ó{?óZæ?óE?ñu¹?ç"I?ÔÝE?΢\?äþŠ?ógü?ó{@?ñãÑ?õß7?õöù?ñÛÙ?ïç?éŽ5?áô¯?á.ˆ?ê?ì¦é?í@Û?î3•?ñÑ+?òö–?ïÊ?ìlö?ïk—?êíê?Ýj+?Ùwž?âÓ?ä"`?ä® ?ðªi?ío?ç-5?ëï ?é-Ã?òjx?í¢?àŠ.?×>m?Ý\?ã3ï?áª?ä‹é?ë—?èSq?å¯!?çXï?äðc?éqP?糊?à˜?ÞÒo?êø›?éêï?î*³?ðŸ?èÃø?ìª8?ëU"?å2?íM›?ò-£?ïÕã?ò/?ìeÍ?é~?ì*}?ðæõ?ëÔv?ê?ù[H?óÌÙ?ï6â?ïŽn?èÑÔ?æ˜Ã?æNó?ð¼á?ýI?ùÑ×?ñZ°?òŒû?ô¥?øÃc?öp?ïÀ?í½Î?ðôj?öà>?õÕ?ïI`?ñO´?ñyy?î?ð´E?ï™Ð?ìC™?ëg?é¾¼?ð“h?î Ó?ç6æ?Ø2&?×ù?àƒÖ?ã$"?ìoÅ?òE²?õ½?ïæ±?ìP ?í·$?å€ç?ט4?ç½C?躿?àÎ1?âŸ?ë(ï?è2‰?ìRˆ?ëØ?ç\?àêb?Ü µ?åK`?êI”?æo?ì—?ëòú?ì ?æÙ?Õk+?ÚÁ‰?ðo*?ð® ?íj -?ïþM?ïYÂ?à|…?í‡2?êôS?æû?é:ö?íúŠ?ìªÍ?ï»F?í±B?á?Æ¢â?™T?¯Ì?Û³ê?æ Ü?èð¨?í²4?ïla?ê/?Ú¬‘?ÐÂÒ?Ö²T?Ú.A?ç¡R?é;2?æ î?ã˜?åæÊ?âÇ@?ãoJ?ß÷!?Ñ?±‹ã?{Ôœ?Nw?›ù³?Áý%?ÌÁ«?Ûú{?èòE?é÷?çµt?ì¨?ì3b?ìpû?ìÑÆ?ì?ìè¹?ëd?ìîÛ?éc‹?ê%¶?îC?í´?ä$}?çùï?ïmš?ðo?ð¾?îDâ?ïrz??ê“;?ìO?ñ?ñõ“?òø?ó…†?í>Ÿ?ã?êÇÓ?ð!«?ï’?î»Õ?è!Ç?îlé?öbƒ?ö3Q?õ-m?ñä‚?ðgv?ñ\ ?ôlc?÷k?ñªI?ïš?óPá?ï•#?ìB5?ì¥ñ?éÈ®?æ¿C?Þ q?ºÊÈ?u.%?ƒ˜´?²?ÝZ¿?èÀQ?êï/?áÛ?ÕÕ#?éß?ë/?è»}?äNV?ï&›?Ünj?Ï“?ᵡ?é}U?óPÆ?ñz{?é˦?ì„p?ï ?õjÌ?óˆé?ï>‚?ê€Á?ê/?ñÖ ?ï¸x?ïœk?õö?ø(¿?ö9Ï?õ3N?ò¸?õt›?ñ$?ç Z?ò;B?ö8£?ò‡6?øI?ù*?òá3?õ@á?ôbi?÷nK?õ&W?ï]A?øîµ?öqX?ðb?ëÂ.?ï˜?õºÑ?ìÇ?éĤ?ø?õsE?ó%?û3o?ùƒ§?ú®ã?ü?õúï?óTË?òR?ör±?ø–?ôfÏ?ðž?㉆?Ê ?Ù*è?ôIÔ?û#?û¬?ú-¦?õ4?ð‹?éA]?ݨ?ós?ú½Ó?þ2!?ý¬C?ø!ƒ?ïìÏ?åY;?ò%?ø¬z?ú_ç?÷î?ùúE?üA?ýjá?ü±t?ûÁM?ñÙ½?çYº?ç½n?ì²õ?ä †?ç,`?ð+ú?ðNý?ëUT?æq&?è/?ñ°L?ð/¥?ï-˜?ó?ïÄ:?éƒq?ðŸ‚?ðÅ4?îó?ðcÇ?ôØh?ô3?÷–?òþw?íZk?퀄?ïà9?ð x?ë…Ï?æ0l?ï®7?ë­?éŒF?ëT9?éP?åíû?òE?õoE?óg‰?íz?ä0?Ý=+?Ú9±?èì -?óû?õ M?òs³?öÆ?ôZ?òê?ôa•?íL®?é2’?é¨å?ìYÉ?ìw^?àzð?ç}§?òž~?ù;ì?ô]½?ô?ðF$?í ´?ñr?ð&.?ïa?ß°?èbœ?ø¬Q?ù‘î?òÄ;?ÞÒ?Û0?ä ?â¾Ã?çñ??êËé?ßq»?ág¼?âUŠ?äsH?ì(ž?ïûÛ?ó˜L?èÖ?çÂö?ôþ ?øÓ?öXœ?ðÊ–?óç?ñnv?ó/=?óÀ`?óóã?ñ*z?í­?óÆy?ùU7?ù¯°?õr?õÃ?õé%?öZ=?ô<Ñ?ì©0?ô?ë4ú?ãR_?Ц:?ÓÈ-?îü¼?õ>`?ö­B?ïyÝ?ñF“?ôø?êÄê?äÙ`?é¾ú?îig?ìJ?êúS?ÛÊÎ?ã´Ë?òXC?óú¡?÷€?øáF?ø;?õAª?õ$à?ôÛ ?îjW?Øô?Üöu?Þ=?Ø+ö?圹?îtË?ìG±?ç¶?çG¦?éKä?é?±?⢌?ã…?Õ/=?Ñ#ø?ÌÑÀ?Ïù?ßKB?ä?áü>?ã§v?ê~F?ç*2?ݧÛ?àG>?àe4?ä7Å?ÛkÍ?ÜÉ}?Újª?ÙV?ÜÙo?Õ-?ÍZ¢?ÝÒ?åË ?Þ2?Ùýš??çjš?Üfª?ïfr?â½N?ÛSs?æ–(?äÑm?àuÃ?×{ç?Üyí?â?Ó :?Úͦ?ä›Ü?æÓ!?Ý?Öʨ?ÙF.?åx„?Ýa-?ê[?ìÑÏ?åÍÃ?ãõ ?ë­N?â”4?Û p?å3?íÒ&?è<ú?Û_Â?×?ÝR€?á¨ñ?ÙE?áv?ëÃ??ì&`?ã't?êæâ?é?I?æ±'?çšÇ?➸?é#!?é&.?æ`ù?é*?åü#?ñSÆ?ð‘ÿ?å+o?îTŸ?é„b?í/E?ì¸?áÍ?涔?àÁ4?ãóØ?ë5s?ÜS?΃?Óß?Ùz?é?éD§?åÁ?å†?Ú,[?å÷?ëæ&?áEd?ܲ?àdá?Ü̾?ÝŽþ?Þ”P?âŸ?ã’?âã?â.?ãð¾?â;€?ÕЛ?Ø6?Û·ž?Ñ­½?Ъ6?݆Ê?Ý?Œ?ß ±?ä]æ?âô?ëó…?è—z?Ù!ÿ?ß+[?àÃ{?×Äš?ß´Š?áCr?ÔÕŸ?ʧ|?Û?ßõÑ?×ND?ÖÛä?âE#?èˆ?ßõ?ؽa?çP†?ä9°?Ùû?ßAº?à¹d?à¹À?ãŠÔ?ã›_?à ã?Õó,?ÜÞ¼?ðYY?èá}?ÛuÁ?ãµ@?îjØ?åµÊ?æ”?äzB?æaà?Þ)¶?ã»?ì©B?éC?âŒ?íx?ö u?éû°?âq5?æü:?éd¸??ä×?Ýr?Ú¿ä?ÛH?Ö¦¨?Úˆ‚?Ü¥?Ñù?Ñ'?ÚøI?æô?Ý)Ú?Íšß?Òoü?Ú~Ý?Ú‡ò?Û`4?ã/?ìÀû?äV(?Ý!§?Üù_?áîþ?Û÷S?ä«l?ç£C?ãFh?æ“°?ä!:?ä Ì?å¤)?ç’·?â¸Q?à]´?ß© ?ã?ç ˆ?åÒ?ßá?Þªm?àd_?æu?å?ßí·?Û@ ?áò£?à^ó?ß`Ï?à„^?ÛÖ„?Ú¦/?æ°?íµæ?ëzm?ãx;?è$?é†ö?å®ü?æÒÀ?áÇs?ÚÜð?Öòœ?ä}R?ê´%?î|‰?çy.?ܱh?ÜÓ?ãé ?Ú(}?ÍŸ?Ô{ß?áÅN?ßCJ?år?éc&?ç~ -?æ£%?ãƒ0?à+±?Ü%?ݵü?ØÞ?â‘?æO¶?ç -??éÉ ?íEU?òr–?ï\Å?â³?ß™¬?èEe?â¨ê?Ù¢g?ߎ?äJ†?â°ª?æéŽ?êgâ?é É?ìª÷?ì?å "?à - ?ç<?éÿ*?áN ?×ü…?âûa?ëÑL?åð?ØšX?à`Ý?ëæ¾?çP?ã£>?àÉs?Üå“?ÞX?çÆÒ?ïh?èå•?éCÑ?æÖû?áo2?ãÃU?èâk?ß··?ÙC?áJƒ?æ$"?äg?á<ˆ?ç$?ç}m?é ¢?èèþ?Þy?ØuI?å';?í´w?ëD?èê&?í«Ä?äÁ+?æp|?ëïÍ?ï ,?íçÓ?èëÆ?è™Ì?ë½?æ¤?ê?ìõž?ávY?à?àÁÎ?Þô?æ•?èb?ähÈ?åˆ=?ë›Ä?è™?ã?唀?ç¼?ÜM?å¾?ìé?çÎW?á?á)ô?çuÊ?éÍ#?ç -Ÿ?êZ0?éV-?çËÎ?æù&?égœ?âÜ‚?âs?ÚHæ?ØFd?Þʲ?箊?áÅR?Ýö‡?Ø_?ÕÒÂ?á`?âÿp?å¤?ç‘?å&M?êÕä?ìèl?ë7^?çò˜?è­_?ãÙ8?ä0?êÄ•?Ý’ï?×A*?æ6d?ëæ·?êIh?â /?Öi?Ú9Ÿ?ÇT¾?ßiØ?å¤õ?è³?ê\j?ë}Î?è÷?å0?áØÝ?çaK?édÅ?ØÑ¡?Û+Ñ?áté?æÖó?èÆÿ?åN?è)?é?뤸?é•E?éb{?ìá?ï,à?íÈ¥?è?ãqÛ?ä¶Ð?êßþ?åæÍ?Ýêé?Û,Ø?éKº?êœW?é¾ü?ëk?ì ?ãï?åÀ¤?ì ¿?êÚ@?ÝMJ?ÜŸŠ?êKÉ?ê·…?èb…?éæ6?àÝ?à[Á?æ®R?êjõ?ævC?å[z?ç¨P?ìaå?êÛ?ß ?ãº"?è!P?çEô?è*%?éSY?ëÛ?èa›?à,3?âu?ãN(?âuÞ?él)?éö6?æ^$?ä1ò?æ.Å?èWI?éŒÜ?å´º?æá_?â†0?É°Ï?Þù?ç€Â?é–N?ë1ô?ë±?éåu?áÂV?Ò?Ô;?ß^V?åV?幤?Þãz?äÌ>?ê=?ëx?æ 5?æñÂ?ëñ^?ëf²?éÝô?êÙ?êYÛ?ëyC?åÄo?ßÎ ?ååv?ç÷?åÏ?âå¨?Ì¢ ?×óm?ä?Þé)?ãÞ¤?àåí?߯ß?Ü$q?é€û?åA ?Ü.?Ýö?Þ›ä?ã'q?ç'?ç’?çÞÕ?çLn?æmM?èØ,?Û²?àwå?ã•+?Ôvï?Öd?Û6ƒ?âÆ÷?ßgQ?ßó­?ç$*?äš?Ý=Æ?äOð?å&£?Üe“?Õøá?âS_?ܦØ?ÐÜ1?Ã9P?ß)S?ÕÞ?ÖIË?ä{S?â¡ë?ä'ð?æ*?è8?âP\?Þ=/?Ý,$?ç~±?æ7N?犔?ç?â?ÞiŠ?㛳?ÔßÉ?ÑFt?Õ΀?ÜAè?Ý%ù?Óº+?г?ÙBW?Ýx?Úî?݉ô?×:M?á'ß?åR?àMH?ÚØ?ß…¦?àz?×aí?ÞPÄ?à›°?àèÛ?ÙH6?ÄJæ?È©µ?Ó‹ˆ?Ø|­?×(5?× ¿?Öˆ‹?×g?Ù—?Øa5?Õ‘?Øð?ס ?ÛÑI?ε?¼óN?ºªÑ?ÉbR?Ëé?ÊÆá?Í!?ÁZ?ÌDª?ÏÝb?Ï >?ÑG¯?È®~?Åqb?Á²/?Íp?ÉD/?Í Â?Í.æ?Ì¿?ÆKg?ÅCŠ?Íá?È‘Ö?ÇXD?Öß?Ñ)å?Åáê?ÒEf?Ò)É?Å” ?̘*?Ðë?ÊpT?ÍÕÂ?ز‹?×ç?ÊTé?Æ;W?ÓeÙ?×Lü?ÐyÞ?ÆKd?ʹI?Óð~?ÙÆ…?ËÉÜ?ɨê?ØÛ-?Õ?ä?Ξå?Åu†?ÕXi?Ô‡m?Óñ?Ìç´?Ïm%?Ó<ó?Я?Ôï+?ÓéS?Ñ+Ï?¿€?ÍÖ?Û9j?ÖT?ÓÞ ?Å–a?Ñÿ?Þ|0?Ù?Øã?Æ -O?ϵÅ?Ù‹?Ú?Õx?À´É?Êô=?߇?Ý–I?×a{?ÏÞÔ?˨.?Ó|}?ݨ?×¢¶?ͳW?Ë¢€?ÌÓ“?Õ?ܧÐ?Íå?Í„?ÕÁS?Õ ?×=H?Ü­Ý?Ñ\?Ñì1?Þ“#?Ùhü?Õàh?ÔßN?ÍøÑ?Íý?Þ—?Û,?×ä‹?Ô^°?ÌNÇ?Ç8_?×Yá?Èy×?Áƒ?Ê?ϲz?Ä^\?Ö¤á?ÞéJ?ÚÐD?Üšñ?Õ®¸?ÌlÃ?Ë-?Útö?Ûe?×w‹?ÔÔð?ÏÍ?Èô†?Æß³?Òã?ÙM?׿?ØÙf?ÊI?È£?ͱÕ?פØ?ØUô?؃Ÿ?Ým­?Ò8´?à E?Äã?ÖŠl?Ïȸ?Ö3?Ý<_?×=“?ÍËí?Éh?Èõ|?×+µ?Ü9ü?Úa(?ܸm?Óƒ?Ðù×?½Ï¥?É”?Ðó?ÅÛù?ÒËÙ?ÕÊ:?ͼ?Ñ'?Ìì@?Ï‘?ÓÅ?Ò«é?Ìk?Ö b?×Ü?ѽ ?ÐlÄ?Öˆ?ÓmÖ?Êe?Öw½?Ö;?Ú´ø?Ô@!?ÉÍ‘?Ã9i?ÏQk?Û&?Øÿ?ÖÌ?ÛW?Ûç?ÌÔñ?Òü©?ÙÊ@?Úf?Ü]^?Ñ¡‘?Ì_?ÜùÌ?׉?Ñ7y?ÍÑß?Ξ?ÚÁ?ÚÆ#?Ò™?ÙBë?Ü.6?ÒϨ?ÐnR?Ú¤o?ÖGë?Ù¸©?Øü?Ñ;?Ön?Õ|“?ÑW??Ïë´?ÛÈ?ÙI¹?Ùi%?ÔX;?Ò‡?Ý„J?ß?Õþ¤?ÑS?Óž1?×÷?×}V?Ú…?Ò%ü?ÛZ?܉?Ö0”?јp?Õé?ÚÀI?Øìz?×j³?ÌÚ_?½)1?Í …?ÝTZ?Ö.É?Õc)?ÉI¦?·£Ç?¾Ó‰?Ó¾?Ô›%?ÚGª?Ý&&?Ú}Ÿ?Ògè?Ï_?Ó#«?Õa?À\Ä?͈ü?Õt’?Ø`ð?×l?×$’?Ôßh?Ö)8?Ú:3?ÚŠ?׸¿?ÍÄï?Ѷú?×¹t?Ù”û?ØÖ[?Ͻ7?Ó¡í?×1‘?¾Ø?È?F?Ò"W?×Ú›?Ø¥r?ÚGD?Ú¬›?ÔE~?Ó>?Ôçu?Ù :?Ø ?ÔÕ?Ñà?Øk?ØåÁ?Ùm*?ÕŽ¢?ÕpÛ?Öh?ÛSM?Ùð?×?Óë°?ÔÜú?×ñù?Ù&¿?Û‘Ì?×1ê?Óö?Ê ‡?ÊÇX?Õ­?Ò]?½V,?À -k?×,ø?ØžK?Ù)ò?Ò¤í?Êí±?Ò[¬?Ø”s?ÙªÅ?ÖàB?͵e?Ô@?Ù:H?Ö\§?ÖÞŒ?ÒéÒ?¸Ò?Ä#Ÿ?ÙX¼?ÛX?Õ¬?Îß?ÒÞå?ÙKœ?×È“?Ø,ß?Ø;n?ÒÕú?ÓŸÕ?Ô Õ?ØÊì?Ú=?ÕЃ?Î:M?Òݵ?ÕÊ?´æ^?®ºÇ?ÒzÁ?Ì—º?ÃÚM?ÑC°?ØA?Ø4l?Òë[?Óª9?Ó™Þ?ÔfT?ÖÄ:?Ø*f?Ó™e?Ô£?Ñl?ÔÍU?Ù¬?Ö®U?ÐI¦?Ѿ‡?ÐÇ?Õ[{?ÌYM:Z p:†×:¤,:Çæ¬:ðÜa; v ; w2;Ÿ:í"X:ß2Í:×U¾:ÂÈÀ:œJ%:c˜:+¼Ø:&é¾:Ys2:œ_p:ÕðÀ;¿;µ1; د:ýo»:ä¬3:ÓL#:ÃG˜:¸Ÿ):ÆÅ:ø8;"3ã;H ;a{´;iSø;bß;U-;Jí;Cº ;<ô;8s¥;A¬n;TäK;aÒ?;\qó;H –;.cI;³:ø–û:Ô#:˯œ:ì²I;úB;MwÙ;x‰á;…¯m;rƒ;lÓ;;Wk;Dv;+a§; šð:Ý#:±¸Ä:¢æ':·Gé:誰;éï;&g;31²;;Ϩ;@gŽ;6Ùç;Bª:Ýe#::2ô:Àh;?_;\LÜ;U%;žyO;¡¹n;¡³®;¨Üø;¸‡É;Êë;Õ5e;×˳;×í˜;ÜÒ%;ãäú;ãª;×Ö;Í ;Íhô;ÓTí;Îô;;¼;§ã²; d©;¥î;«³×;«ûì;£6ù;•ÿþ;/;”ÆÌ;Ÿ°; ,K;”eƒ;…d‹;y -n;tó;tì¦;|]Ç;ˆ Ï;—‚ž;¦RU;«w; ,Þ;Œ3ï;}{`;‚/Å;‘6ï;Ÿ,;¨§Ï;´ß&;Èxn;Þû7;ðñV;ú'ä;ù(q;îhŠ;Ý©å;Ëþ¤;¼<;®æ.;§;§_±;²½j;ˉÜ;ì[\<où<͉<¼È<e;øu1;êÚH;ä‡å;èÂ;ïÔ÷;ðÒÖ;äóB;Ò+¸;Ķ¶;ÁZ;¿5‰;¶ÏÙ;«¾l;«Ì;»;ÒiX;ã.Š;êuù;ò*³<0ž< -< `…</^;ï|;ñƒ\<–</=<$Ê <$*±<M0< k<,1S<=©·@%<4Ç…<.EÎ<%õ{<pþ< -È7;öOù;ÒÑ;«RÇ;ŠÅï;xræ;„Ì‘;£Rn;ÐR–;þƒ€<¸S<uU<•Ã;áª;¶¨L;£Âà;«Q¾;¿ r;Ñ$<;ßE;;îW‘<£Ä< c-< -`!;ýr‘;ÙQ±;Ã{ä;Èô|;ßüÎ;û„Á< &«<Û‘À;ãåà;ã§(;þŽ><=Ï<ªh<K;<λ<™<UŽ<3×é®<šÏ0<§f‘<ªª<©<«$<°Œ<¶;m<·³Ó<µe<´âB<¹iR<¾.H<¼Ús<¶¡Å<°ºx<«¼#<¥Ç6<¡¯<£Ã`<¨—ƒ<¦CÂ<˜½d<ˆjL<€Y‘<<…Qá<ˆÏ´<ÐD<”‘Æ<™‰@<™<ó<“"–<‡±³vÜè=0¿Ë=#@=î=m=íá=íÒ= -…V= í²=O=$s¯=9‚=Fß½=H¼=Ay=9ÞÏ=7•Þ=93Q=<ס=C{î=IÚ=Eªˆ=57=ûõ=ÞÏ="Û=„—<ø–K<íbÖ<ä]/<àÒ­<âu‚<ë1Ú<ø˜;<ÿõ<ö÷M<æJM<×´…<Ïê<Ïí<ÖJ½<ÛÄÃ<ÞL³<é­¯=|2= ì\= Óa<ür‰<êåO<çëˆ<ç’…<ä _<è<þDð=¶é=Y=·=ÐU=¾E=B="Æ¥=6 -=EœÉ=TO—=cô8=j$1=]n =Cóì=,=Ã=÷~= {=  =d˜=¬Ÿ=ˆ»=ý–=‡÷<û<›=’à= %]=ÜÎ= =5§™=G4=Kƒ=> =%¶`=2=µ=&ª°=E@‹=^oå=eN=_µ=d×;=}Œ”=‹uP=ŽkK=ˆ{=yoò=X›‡=2Þ=¦ƒ=´a=·•=!t=#äç=,ïÍ=AǤ=_»ª=€Tà=ŒÑ3=¾Ù=ˆ¸'=x°à=aóÖ=Tcð=Kql=AY=9i=3Ю=+r÷= Úì=v=)«Ÿ=:ØU=G¼M=PlK=ZZ=gß’=v_4=‚8=‰é -=Li=“°=‘wì=‰ìƒ=³~=xm&=qý?=qÌ`=€4š=ºÈ=–ÁŽ=”g€=‰D=o²Ë=MA=?—;=Qà²=w`ç=Šyˆ==Š ©=‡ùG=†]G=ñ?=wUö=h=Y 5=W§K=f8õ=rYŽ=rª=m= =e,ø=TlŸ==ü°=*ª$=#é#=1bm=T`B=ëÛ=“µ=“«d=…Dó=o†0=k·={a=ˆ¤È=’E^=›¤T=¤ƒç=¦¯Þ=ŸOW=“3=…?=eG8=8<†=~Ö= =Éu=‚ù="`‘=-n=H¥s=qÈÎ=ŒÍ_=šý= /=Ÿ *=—=‹.—=~‰=`·J=9/=ì½<ùæ¯<üi= µé=&Ó‚=E~=`í=qÈá=qlé=b9Ë=UsE=Qä=JfÃ=9u="3‡= 5•<õVñ<ëÉ<ô¯<þjä=ø= ÕÏ="Û=;³I=N¢=Toã=NV²=BlØ=3ɳ=!:4= ¨=Òþ<úx<ëæ½<ãkA=G=!k=Cˆñ=XÓ¡=h©=j==ŠÓû=Œ$|=€H#=Y)5=6W3=(-‚=/ ¹=A,Ç=T6±=^ÆQ=_Q[=*•þ=*kU=FtÄ=nʇ=‡¥€=‘:=–£á=™ ;=”¹4=†ð =lß~=_ -¶=mç"=„åA=,—=Š“ =€]=h´ï=VP=K‡ -=Iâ=Q)=WÛa=Qµ‹=>Xï=*æ =&A¶=,ëó=+"à=¢à= ¡)=¿=&F=9#æ=CV,=J°?=Qs†=N‹Â==zÃ=)üh="*È=(â§=9—ß=L`ç=WçX=Vüe=Löõ=Aw=:`ï=A‰J=Ve=m]=}Zœ=ƒ:_=…£=„Y?=€Aµ=o2=Yl=M4=VØ\=mûê=€PÑ=T=p<±=Qºª=;K{=4l =-f¥=\'=]#=+z=M=fy=j&ç=d=o=d­m=oæ>=~]=…Ò=ˆ]=‡ºH=€à-=g1¹=L›¸=E.=Qm`=]k`=Yì°=Hñs=:b=Aí¥=]V=oÕñ=l0L=gùŒ=tŸ=—;=l÷=Fe=/™˜=5Κ=EÖ=UÃ=n¿C=‹d=›æ÷=œ¨æ=Œoy=qÕo=c3Ö=o€î=yȺ=oÄy=`è‚=f2ÿ=€v½=‹ø³=„ñ=“Áa=‘Ñ¢=„[î=k×=lR=… Ä=—=¢.Ã=¢TZ=™ŒÕ=97=ŠÈ8=Œ2˜=Œ‡Á=ˆi=ƒ¾8=~ +=j«%=P1Œ==ó™=8¨K=:¥ =C/X=NÃç=R=FL.=.ª=0=|ˆ<<Ü—<Ú -ô<à<äÿî<éÇ<ìsŠ<ñ¿Ý=#=¯È=wÀ=+Ä=2Ú¸=:ZÑ=@[!=CX=M9„=dÌ={>=q‚=wC­=u²¸=TZ=ŠßŽ=‘àá=˜w=¢†=«~£=§Vž=—¾"=ŠŒþ=‡y®=ˆ¨þ=ƒ=h!"=HØù=7í4=1X=*¡Q=®Å=;:=”<øæ<ðË;<ùì<= -]Ö=…=2 ²=GÍ.=bσ=€´¢=*=•šå=;è=¦B"=¬Ó#=©õ†=¡éq=£²—=´4=ÊŒä=ÜË&=ä,¨=áÙ=Ù¡¥=Î!¸=Ç“9=Ì™«=Ùć=æXª=ç­ƒ=Û¢ú=Í ª=Ãf=¿€l=ÈÉ’=ä´ÿ> >:2>‡É>>£=ò_t=çc’=ñø=ýâ=þc.=üXê=ýk -=þ˜;>·;>kn>¬Æ> >"‰>²Ü>6>Èn> —T>o=üÚî=ôÒB=í¨=íΆ>6÷>%¦>!£>)ë>$¶>V=é£=ȶ=ºZm=¹¬Ê=Ïùº>'/>ƒ¤>/¢ ->3( >*V >~>%D> }Ç> ->$x=Þûˆ=Êé½=×hd=ú×">‘U>¯>",}>(sB>)Õ >"ª‘>8’> -” >Þ‰>ÀP>þ0>8æ>¬‰>Œ> ú$=ûõÔ=ßi!=ä\N>%V>DL>¸Þ>¨>">ì>"^>ú>zo>‘W>Rø>ç>7º=Òñ–=· X=½Œd=àï>f>B>zh>P>¿+>G>!0>+±->=×–>Lu(>OV>I)í>A¡>>=j>>º><8>.õ—>!æ¾>«t>y\>0¶=÷¸ =×ð×=Ùõ}=ý>X3>'>6|E>=?Å>6kÚ>&9_>f> ²ÿ>ëÇ>ô1>s>˜ >;S>þ>Cà>ßP>Ç1> Ý> -Ìh> -’> ø>žF>&ÐÆ>.`}>)êí>¤u>¯u>Hi> ˜Ï>êk>3Ë=ÿ³“>¦X>­>>ÊÝ>( ¦>+ß>,ˆ>)ø>#2´>‘>^z=ô†ø>¡¡> >+×I>)&>ÉË>>>ó>™ >è?>qt>é2>à?>#4Â>-Xm>9iÔ>@;Ó>Aé&>Dx°>J.µ>K+¬>@™–>4bµ>0ò >0¶”>/™>0e>4±š>1“n>+³>Ly=æö&=ê¼>þ?> ÿé> Ö>Ò×>)ùp>3¬¡>3s>/Ža>1²\>9]…>>Ê0>9Ý:>-T÷>)0²>.ZM>,D‰>%€>,S>@_>K‘‚>B>.mR>•g>ц> ôB>Ü7>ºõ> ôT> G2> bº> ?ì>ÛÜ>€`>/ÙÙ>C…>K[>J+>I…Ÿ>G}¯>=¤x>) ï> >8+>&øS>Gj£>Zâg>`ƈ>\;j>Jâî>/^Ü>&‰=ï(Ù=·F=”¬°=¤Ãî=àn§>¥±>0Ɔ>9£8>(%?>î>$Â>=%>!fý>'Kû>*Éõ>+³P>0}¹>@/>[H2>|Ä>‰YË>„7J>e;À>H#.>A®¿>Aç~>5Òi>(‘v>(Y>'ª>Ôh>¨M>,»<>?2Î>>S>2°>.¹Ë>9›.>R%Ý>o!¹>ƒ>‹E-> M>ˆKB>~²¾>k6ñ>R¾Ã>/i>ñ*> -Ïc>°ú>ž >)µÕ>MÅ>rsÒ>‚Tž>|×>cq>Oi³>IBØ>M@c>OAÆ>Gám>=n8>0ös>F}=þÏ·=á(8=ÿ?M>$¶Õ>AUÃ>HsÉ>M¢L>W+¶>Svo>8B>‚,>°–> -n^>¬¥>++O>9¯3>5î >#y> >ÌÒ>(œÙ>S²>‡»>‹">mk>hÄã>wn>—xo>­òÍ>¯å>£y.>— ÷>có>äÂ>™þ>EÁ>S–>?×j>gd¿>“K”> Ø·>šp™>—"×>Ÿ‹„>ª¿™>¶”Ó>¿¨·>³È>ry>[ ø>9dú>+d¼>?ÏÍ>w >½5>•Þ#>–ÜM>•qr>”³2>£¯>·0“>¯™“>¨µ>xB~>…>,>™^>«Ÿc>¼Á>Ä!Ö>µ f>œË>””>ž£ >°ç>À-1>ÊŸ'>ÏIp>Çv6>²ï'> o&>Ÿ[R>©»g>°CÐ>«Zò>—c•>yr>bw(>ƒ†>¦U>º¤÷>·’>ªˆp>›£W>‚±>Fç’>+öq>H_­>{½>Šü%>†A>w§o>u˜Ÿ>ˆh\>™¼O>Àƒ>•AÆ>˜>º>®Z8>¼³b>²Î>ú>”F>¡>®˜=>œRß>nüJ>F:ï>C¢a>Hë§>_¡.>Œ>ªÒ¬>»ôÆ>¾(ç>®Öz>’‚h>€Yå>ƒs§>’×ù>£g ->©°> B`>”Yg>“~ë>Ÿ -ù>¨P>¤Ê!>šh%>”½>”öZ>•ÄQ>U»>¨ÿ>¢E>‰šï>höY>u#H>šP?>¼f>Ìý·>ºÑ>¥È>ˆ¸§>}$,>ŠC_>¡L>³s>>¿¸H>LJ|>ÀpÏ>²‹=>®×^>«ôû>ž+C>‹$\>¥>‚h¬>ˆO÷>†J‚>|˜7>m}ž>maò>ˆJ> ˜h>¥ªu>šƒ$>“¬K>”a>”±;>–2>š£A>©c¤>ÃE“>Õ­ý>ØÕÜ>ݪ.>è|È>èß>Ô!ÿ>·1B>¢Qw>¤Š!>¾ë(>ÝGú>ñN>ö¤q>ç’†>ÈöN>°‹>´k˜>Ì >Ù>Í%ˆ>´½Ø>¢ã¦>£6í>¹¿>Öœ|>âlY>Ûɼ>à˜¤?Ö˜?‡´? “ˆ?~I>섵>ëRo>ôt>ùÁ >ò‡µ>á?Ý>Õo>׺>Þ~ >ßkŸ>Ö/R>ÔZC>ç y>þ~7>þÉ[>䀤>Ï¿?>ÉÇŽ>½?ž>¨%†>œG>Ÿ·±>ªx¿>µÓ>½0ù>²Ñ>™† >‘ì;>± >Þ>(>íÌ&>ÚÀÛ>Â.Ï>¿@G>ÐA>×ý¡>ËZØ>Â-û>È(û>Ë1>Ä3/>ÆIÚ>ÒN©>ÎŒ^>·ßI>¤h‰>¦ù>Äg>êÿ>?4 >þ†>ñ©F>èû=>ÜÏ<>ËH§>ÆŒ>ÖAà>ôÏé?¹§? BŽ?Y'>èaI>Ý=>ò:©?¿[>üf$>ñ9°>é…Z>݉ý>ί§>ÍDŠ>àÜ”>ñüé>íe>á3|>ÜV–>â¶Ì>ó/U>ý4F>õ r>âÖ>Òyø>Ë ë>ÈÇ>Ï•e>Üɉ>å‘>èp'>çK®>Ýþ_>Ö^>ÕÈ¢>×®“>Ö–>ÒÙ4>à ½?â˜?#¤?¯‚?yÓ? jñ? F›? CÙ?ÑÒ?E? e?X?AÌ?Ã?¿?ʪ?oÐ?Ó?¥O?µ >þ¥}>÷D·?à? m? gã>üØ4>êÉ÷>çÖZ>é3J>åVŽ>Û†X>ÕßZ>âna>÷^À>ýdÄ>óxl>ߤÖ>Éö¹>Ä—(>Òy>åË>ñ  >ô›_>ùKÌ>÷› >èJ¢>ÛÈG>è?Ý?×ô?x³?'"¯? ^Ü?¹õ?}“??È?Ø>ä^Â>Ä@«>À™>Õãd>ﻂ>þÀ$?fÕ>ü„Ä>ÿë~?ûº? f½?¾>û\t>æÃ>ß|>î–Œ?&â?Œ_?²ú>ù}w>ôb>ûº‡?ö?7‚?a?O?•?"W?"O1?Â>? Eë?|K? -ãû? ˆ? -}‘? Ì:? V³?%µ>÷o>ò >ÿ1Ñ?AF?ç£? ä?j²?¢ƒ?¡?o†?%»?!+º?$Wú? ·š?·? ØP?'8B?!€? û ->÷[U>òMQ>üŒþ?Á,?­Q? ?\?¾ƒ?6ý?Ó?(G?J? ÐÊ? aÆ?Ob?ζ?›Ï?T­?"9é?$u~?(}ñ?(Bð? Ѓ?•ì?fƒ?¡?.ü?{7? T4?«Ñ?S'>ögÅ>æó>ßB,>Ûúp>á'Ä>ñ®$?ºç? V\?ó:>ÿ¶e?Î*? )?Ÿ$?T—?]2?úˆ?Ùz?tú?ë,>þÖˆ>ùŠi?m?p?1?Äà?)ã?EÏ?¡®?nQ?)˜?,cÃ?#w ?aŠ? D„?Êî?Üœ? -*?'¦!?*‹?aê?]]>ü^¹>ÿ÷z?%ä? -…ù? QK? îÎ?`g? ‹2?8u? N?!(•?#î?"—¶?ès?)w?@?ó^?Ñ ?C?Žï?oA?ŒŠ?××?[ó?á?'+"?&p?"¸·?Ú~?ò‡?D?¬ˆ?CA?Ê?!è@?&§Î?)?\Ý?³?¬À?ˆ?2Æ?MÄ? 's? ש?ì¯?ÒÎ?þ>×Zø>Ñ£¾>ð^?~4?¡f? _ -?L?q?ê’? ‹?´å? -ÿ2?ëC? ç¨?šõ?®Ž?)î,?&ÈY?ÚÀ? -aÇ?D¸?Ÿí?­? ùA?p1?Ö_?ß?™ó?Om?'þò?÷ÖM?¦?gu?Gˆ?¡K?D?@??w?F´?à—?+k?Ü?"lÀ?(Š?05õ?4:?0«”?(¹? D¨?ÍI??Õ?xŒ>û‹f? -á?”+?C ?&O?%ÔK?sm?3?'ý,?)¼¦?%,®?(`?'ï?!×?ÉÛ? ±B? Ùk?—?¹±? I?Çu? -ÇÀ?O?hn?þ?é`>ë]®>à]>õK? HE?ÙX?’Ã?5.?l›? ö?!?V ? ­«?&ÙŸ?*Y.?2¸?;/|?E ?O«¨?KÈÃ?39?nü?—I? q×>ð+·>×/Ü>ÿ?%Œâ÷º>µ±¯>À:4>Ül©>Úú•>Ähö>к>ÿ?úð?OJ? Ä?U=?•C? \J>øûu?©%?N?+5v?/®\?2©Æ?.XÔ?Š?±¹?ô -?C–?(­?7"é?=$–?=ï…?8µO?/j„?$}?È>î¥5>ø8ú>û˜,?ÿT?ô|?+>û?@9Š?C¡‡?9 â?6ÿã??|°?B–?C {?HŠ¢??ÈY?#­?êä?$H?áQ?C]Ñ?\¢i?có?XGa?D#G?Ef·?[z?h8Ä?`R?Tkî?S(?ZÍ?bN»?d» -?IáÞ?¼¡?@"?î -?è?zÿ?,èŽ?5²û?9˜ ?SƒR?oÁy?tOß?e—?PN?6[a?†u?P&?Ó ?0ÿJ?#ò÷? -¨Á?PL?A¼ó?QSY?N•ä?OI?dV­?zZ!?z±4?j:©?Wc¥?OÀt?_¼Ï?â?‡)?‚¼Ü?|›?€]‹?…)?|ò›?uL÷?_JÕ?<"?0ËÖ?EýÔ?Uöœ?YGþ?hA‰?ÒM?Šá?†‚„?ÀV?ƒ„¾?‡úÂ?„¸v?¥T?~ˆ?m¯?€“0?{ã-?x4Ì?vÎR?wp¼?t‹?oj©?p™?km=?Hf?%†Ý?4¬§?Y+?k`-?uïº?ƒjù?…Â4?‚È?}GÈ?jö?V—L?bUº?udQ?w?q¸0?q¦Í?h¶:?_÷m?qª†?‡¤(?‘a?˜æ ?œ(?™˜?—é¯?–Uµ?Ë©?†~H?ƒk??ƒ*?€G?}Ë-?~‹?qiV?T®l?KÁ%?nš©?‹òZ?‘=I?‹åñ?Œš?’â?¸õ?‰sß?„òó?;ì?ÜÍ?3?€²æ?sŽÃ?eÁ>?h¸>?p[Ó?jàö?\›G?H2[?H‡e?m3g?‚Kw?ƒËÁ?ƒ¼?sË?OƒA?BÛn?P]+?Pœ«?Nµg?k¨l?…]Æ?‰~¸?Šõœ?ÐÚ?’ %?Œý®?‡\O?ˆð?aÉ?‰=3?y¿?gÔú?_ -O?f7à?qøÉ?uM­?x…˜?‚=)?†³ª?|ù?eÊ?bÓ°?f^?hç?j ï?tËr?€á?ƒÖ?‚Ëõ?¤ ?„•?….Ï?yT]?f?iØ'?ožÖ?n†¬?s?x¤S?noÑ?_h?c ?l¼?n*?oÍX?v[ƒ?~ ¦?€¶•?{u.?oÚŽ?hnû?fý?eöØ?h.®?mC?q˜?t:?vþ—?z£?~°Š?ƒ^-?ˆ+?Š¨ƒ?‰r.?†’G?{¸`?j?s&?y˜?p\Ý?qêq?|]?~˜a?s)?jcÝ?j/¢?rkÑ?‚Ž³?ˆ<°?ˆh.?‰[á?ˆ¤Z?†R\?…¢Ø?„kX?…?‰?‡eR? V?{÷?…/ÿ?Žw?“Áœ?’z£?Œâ»?ˆ@?…Ë?‚ (?€`ä?wÿ?w™s?‚O©?ƒß£?zã?n ˆ?oìT?y §?}Ž?†õ?•°?Ì?‹ùm?‰×ý?Zo?“äV?˜Ý?•™W?Ž˜?‚žº?S;?ˆ-Å?ŠžU?Š§|?p?’ªä?_™?N×?Žañ?Ž²D?ŽÆd?”€?½?—6á?šºÈ?“c9?‘¶?—¾ù?— ?ŽhM?ŒF$?•×=?ž˜?œ—p?ë¹?…_2?ª›?ˆ.E?‘?”/‚?” ä?’|?‘‚¨?‘kí?‘·}?‘³?‘xD?‘®n?us?‰l½?~?y`I?i{?e9?ƒ§ç?‹Ç?Ó?ŽÄø?ì?™î?¢Oo?¡~g?—Q?“Ñù?¡&›?¬Ã”?®Ì¨?¦ô?Ÿ£—? ¡?¢»™?¢+$?ŸÃô?œ?ê?™^?”5+?šb?‘ø?–"š?™Àj?›Ú?™:?—4?™¾j?œ(p?žHÌ?¡c?£Vq?£d`? ·‘?›u$?£?ŸÛq?›h?›5q?¡hr?¥ª?¤•? 2‚?——^?Ý:?ŒCC?ˆ§¼?“?vyÐ? A?„Œ?Ö7?‚cë?‡ˆÒ?ˆ’?„ü?‚KF?€Å~?z¯?ˆÓ?ˆÔ­?Š„d?†Œ¥?ƒêÀ?…m(?„OA?€5Å?tjŽ?l¶5?vž?¶Š?~É­?|bƒ?paC?FÊ?Û?$°¯?KR;?NüÌ?.ÚÔ?$rm?CZW?W ï?b[d?mI¥?pùU?oz?kíM?n¶¢?tœã?y"s?zŠÃ?r>v?i'O?h"Ï?kSæ?oÑ$?u±?tâô?mÔ½?p†U?wÚd?}c+?~ž_?|Ôª?6ì?‚б?B?wÈœ?y'?€DÚ?‚ÏÐ?~Dä?uÚ?²\ý?²ßŸ?±3ü?®â·?®v?«Ñ?¦–j?¨¡i?­ñÅ?¬vƒ?¤¨?œbã?Ÿ¯k?°S^?ºKB?¼«“?¾s?¾šn?½˜Ó?»U=?·²á?²°É?®•%?¨ýV?¨¯û?®‹?¯j ?²2¶?³m?ªŸŽ?¦Ø1?¬ûû?´ú³?½»??»>?¹­ ?¿’‰?»¡ò?ªÑ?¦*Y?±G-?µ–É?³?µY½?´ŽW?µþÎ?¿t?É0?À7[?½ëA?²Ÿð?¢áw?¡æ?²ÐŒ?»l”?°‡²?¨ó?¯X$?ÀN?Åb!?»5º?¥e0?‘dX?‘¾(?«4Z?´ø»?ªf±?´$?ÇFù?Éß°?¿ L?©á4?ž‹ ?¨&z?±l?¬±?§,Ü?ž¹ù?Ž=$?}V½?cä ?`B?o¿‰?{8(?€ûÉ?}¢ð?xÞÞ?‚_»?‚­Y?|›–?}À¬?‚P»?‡??ŠC?ŒZÀ?‹¨w?‡„Ô?€G®?q(?l;?eƒ?]E?e‹?te ?| b?¹Ï?y„7?q~ä?x€m?ýò?„Kw?…Wþ?‡–?ˆ€Æ?…‰„?€ÊD?s$ƒ?af=?Z> ?açT?iëæ?jp?h|8?`¾É?\ÔŠ?bC2?f¨ƒ?c¥ß?ZsÔ?Z[È?e½Ð?t";?{ž?vçL?j¡?aÛ?e6Ÿ?bµy?f¿œ?p—'?{Ð&?ä2?4Ù?xu,?t4Ã?y3?sµ;?`Ǽ?`yW?w±?ƒ¬W?‹Rý?Š‘†?†Ÿq?†f–?„#¢?†éÉ?‹–í?ŠU?…Uƒ?‚÷-?ƒ»(?ƒ$8?{¬Ž?~Bù?„E7?‡Ð?2Ž?™´µ?ž´?œZ9?•üg?“ ?×?ˆ‘º?‹œi?–D­?˜Ü?—O?˜y¯?˜ÿp?žàš?©ï$?«5P?¤ñs?¢Pý?¥&å?¦\q?¦ã?£Âã?¦œ†?¨±Ù?¨Ñ}?ª°‘?ªn1?­ÌÄ?²÷?²èK?µæ ?»ËË?´Á?¦Àš?¬47?¸c0?¿=†?ÂF?º4?­bO?¬ðè?¶f?¼î¥?½;²?·‚t?¯ÎÁ?©”T?¨A?Ÿ¼t?•Ú6?›bÚ?¡gJ?¤AD?©YŸ?±‚¢?½0? ?›Ù?ÈbÆ?Ëȯ?ÊdÉ?Ɇµ?Á+?ºÖ§?À!ï?ÅÓ¨?ÃÍö?ÀÌ™?ï?È]?Ãv>?ÀŽ?´¸!?µˆ/?ÅÇD?ÏyR?Ç»—?¸Ç@?Ä D?Ö#4?Ü/(?Ùm+?Ò?Ó³6?Ò†t?Æ*Q?ÁLa?Ǩ°?΀?Ê…?¾çç?µ[ð?¾Pâ?Ë ù?ÌZf?Ð*ô?Ï>ï?¿hÐ?´ñ"?ÂmX?Ìyj?Ðn?Ѹ -?Êiß?Ñd?àã”?ä/??áe?ßЉ?ÖM×?¿òÿ?µÀ?Áî•?ÑÝJ?Ó¤?Ò~?Ü÷‰?æE ?á‡?Τ?̆d?Ù 0?ág ?åF:?àÕž?ÚOÓ?Ôë@?ȶ?Æg'?ÐpŠ?ÐÏË?È:ƒ?·ÔÔ?±Ê?¹‰¦?ÁÁž?Æ)ë?Ã6 ?¾Ó¦?»?©Æ?”×Y?„g?”i?£¯(?³¨?¼œ;?ÁB/?Å’w?¬ô?½rÜ?Ã|c?É -Û?Æà]?ÇT?î­£?÷9?ûº?ïÑi?Üù?Ó]À?»Û[?©Å*?³ðw?¹ª÷?´¹?²Ï?µåÏ?»ç ?¼­?´??µô?ÁHá?É'}?̪…?Ãþñ?ÀjZ?Ë#å?й‘?×R¼?Û?Þ?ßí+?ÖÔ?­Ë=?‰D4?Œ\â?‹¬¯?…ÿ~?‹M?’×d?•¨œ?”Å“?™áž?¦êI?¯jN?±Ìû?³³Ù?²Àò?±nh?º>?Æúë?Ï]£?ܤZ?Ú®?Ëž©?ÒÅ?Ù7ö?ÒD?Ûô»?è;?äVR?ð<œ?ù|?ô×ì?÷­@gE@W@º#@ :,@% @éÁ@z”?ú¹È?ì¾»?Û­ ?Ó×?Ë!x?¶—?µCg?ºÁ?½Ãæ?Ç?ÁC¼?±Î¸?·Oh?ÇÏì?Ç‚‘?Ä©?̯÷?Û—?àýà?ÞÁz?ßIC?ãŒ?î¶?î—Ñ?ä°C?èéR?ì²F?ó)e?í”?ãï'?îyî?ör?ÿßM?ù•á?ýoê@Å@ bƒ@U/?üiå?ÿý¢@“@ -æ›@Îz?þÀë@ˆ@ db@ ÿ@7@þ#@ !ê@¥t@ç@¦@ìO@9@ êÌ@ òo@§J@øU@Ñ$@s@ cN@ -Äz@qÉ@uõ@2@/ó@U@ùƒ@ìõ@8=@‰½@ $Ê@ -Õ­@ »5@p¹@ -…ñ@Q€@ 5@.1@î @ YÖ@ ÎÂ@D@tb@‹U@×Î@½˜@!d@oÕ@/¶@"Ù°@>w@CŸ@â®@X£@(¥@"J@êÀ@ ¡ã@¨ @34@G±@Õ)@ „@ž½@ÅÉ@"Ÿ@$ô"@)Çn@)³˜@(Õ@*¦z@/1ã@+2@!D$@ xF@Œï@÷u@€H@ðÏ@±ê@$r@@)q@&Î @ØÏ@þ‡@(ÆŠ@2Ym@-¬@)›@"ÑÏ@"ë<@%°@yS@ÒQ@Û£@#(6@!¬/@ÿ‘@!»%@0'Ú@1öz@'è´@˜x@%5¡@0ÏÑ@//@)E@>L@!x½@)yr@&÷¤@'ÒÅ@+{¼@-Nü@0¨Y@3Ï¢@/¢µ@)«Å@*±ÿ@¹|@öG@(x@5l²@3¼z@(2¾@"d@&a(@'*š@+Æ -@/º@-Â0@'ê®@ |[@(¯Ž@3Ê@/’@&W@#É4@b?@·@*xr@2¼f@2Qá@4O@j|@FB@‹à@ -·@§[@ª¯@´µ@73@º@É@9@1·@{r@ë‡@î@$_@Ù@<¤@ -p"@EÈ@?”@U@V€@9¦@Ô…@©£@Ü^@ÚA@LK@ @Cy@c®@Ã@°@&g@Ôl@"½@)J@T:@–K@`q@ì"@“@ Ò@o@G,@0«@".a@!wo@Ê´@Þ@r·@#pË@&„Ã@%ll@%©Ô@#5@" õ@$þà@%2@ ’@ÖÌ@À@$Ô@®Q@¹@¨•@Jà@‘°@r%@ ·@" Ÿ@'“@/[@Ú»@½@@“ï@Þd@"•@èR@*Ó@"14@%/@ øÆ@âÜ@ k@3@iY@Ò«@%ß@[ @Œ @,“@@ šd@ D­@…œ@ÜP@ ÍI@Ã@ë}@0/@mÇ@†À@Ï@­@å·@ Ä`@j¿@ÓÔ@ £@@y+@æ'@Ës@…ó@´@q—@óD@Ž÷@ÞL@`¯@ ãÓ@@¿@Á¬@ üÞ@è@.:@Þ@º@}ÿ@¦M@Au@ @«L@ª×@&Œ@N±@àc@$%é@ Ï@ a›@$>@%’:@„@ºB@ “Q@%ü^@!Ѳ@@­@#s.@+¿@"Ér@ÊH@ì@ M@×X@ >i@¼¿@&Rí@'9‡@'/N@%àº@) ð@0Dä@+¤@,@*Kv@'‰@¯@§5@º@“y@*‡ô@.Oë@.̼@31¸@0χ@)êŠ@&uQ@R0@;Í@/@¼Ÿ@%}@'7q@(<;@)òÑ@)³y@&(}@$LV@(k(@$@Bú@,Î@qf@kd@z@(ËR@&Þ‡@ ÊL@$Ø(@$P«@,%U@&×µ@:@¨@4@.àµ@2¡Ï@2Ùº@,ÿ¾@*²·@(”Ã@1ª(@1´@(ºˆ@ L@q@!H,@#È@,îš@20ª@7£'@1<‚@*&†@.ép@'ù@q™@'Oy@*>@ #“@$‡W@.·N@)âœ@2íÃ@1ï@)U@"¿ê@—1@#UÝ@,FÇ@&@,æœ@.2ñ@/œ´@,>¡@«X@›%@3Τ@3·®@-Ž@3Yà@3P@!]æ@'—@-@‚@Í+@ ´+@«x@@%Â@8*@5ã4@%‘¾@'°‰@1P€@,x4@2Q@4Üa@8~ç@5Mç@¹¡@!E@2³Ü@,y@-(ƒ@/Ø@'Ü)@‰E@B€@7\Ê@:³i@&“º@~ï@!_@"5D@%@~@+8ž@)ç‡@# @%­@$t,@*Üá@(õs@ â•@$ô"@.In@1q<@$Ã@:r@ ˆù@Ûê@'û2@1l}@1Ý@,€€@)Ù+@$Ïü@($@-O0@*np@-Tz@,—´@";*@ - ¦?¾øb?Ø´[@›Æ@™ @%T -@.0Ü@0TŠ@('´@3¡@ ë@P@N³@%!@$û:@#@T@"<@ `@ûÎ@:÷@¼†?ð©?¬;>?„§?Ê¢È?þø@ë¯@…L@$ð|@$íA@"-Ì@)ˆ@'ìc@'¹¹@'VÈ@&Û2@'Zc@'S@*gÝ@'@(§•@-ùL@.R¬@#ƒc@&/î@.Ÿ@-­…@+§Ë@+=É@.—@.—@(‚]@-|@09@,X“@-ˆ@/×þ@)x@@øë@&cb@/ƒ®@.Ÿ@,Ï¡@$ÛÆ@+™¼@5\@4VK@3K @0½R@/œ@1¨@4pÃ@6G@/¡‹@,Œé@2e¯@-ïŽ@(}†@*ÔŽ@)=@%P¸@?ý°k? +w?¥@J@\O@ŒO@%ã@)'^@y£@?@*9N@,^@'4N@!ÜE@1Q@v@ »ï@%gô@.³d@7îÐ@4†@+eÁ@-W“@/#”@7;š@6 P@1ÊÃ@.ð@,r @5± -@4«õ@4ýÚ@:H@:è2@8Š”@6¡Z@1–î@8Ö@7R1@-$@7rL@;œ@8j@<ž¾@;f¿@6Š\@8šÇ@6Œ@<²Ã@;K˜@21’@>½ˆ@=1a@4hR@/a[@38@:ím@0Z±@-^R@<˜‰@;ŽÈ@:®@AÊ@>lË@ABn@B»C@:mP@8~ú@6@: @$_@=ßL@@S@<üà@7ô#@7å@:À@:ÒX@7e²@3ì@;C‡@7Ùæ@6;²@8N”@6’“@3b—@= ¤@>)Á@<'l@8i@1h@,£@(¥Â@4!Ñ@<ð²@>¢Á@<[Ò@@C}@>'i@= â@>¡{@9;O@5ש@5|‹@8Ç@9@/Z1@4[ß@=ìm@DÉ@@´@?ÛÆ@<Ì£@:2@<úÏ@ a@@U£@>oß@@‘0@@ôM@A L@=¸k@:ݬ@A 8@F1a@FŒ@Bý¼@B$Æ@B$@Bùù@BZh@<:@B[1@:vx@3ÉU@$­É@'1‹@=R‰@B¤l@DTa@>ê(@@*J@Bü-@:?ˆ@4ý\@9Yï@=Š@;[W@: -â@-S@4*™@@Æ2@B1%@Eì@F²Õ@FB@Bé‹@Bëo@C0N@=âC@+ѳ@.å@0O´@+ƒ&@6Ó@>/a@<@7½@7íÓ@9AU@9@3ž€@4bw@(Ëz@%p§@!éã@$Œ@1}_@5[æ@3o@4dÁ@:¯@8}µ@0B@2„=@2˜û@5UI@-Ïb@/wÚ@-`@,l1@/@(Ut@"Fq@/§¸@6ÖØ@05T@,¦N@=ïá@7ó£@.¨&@>~7@2×9@,ž×@6®œ@5kw@1XÄ@)Iî@.Jæ@3o@&“¦@-|@5Ñ@6öÃ@/ºü@)Ø@+þ@6C"@/¥@:bï@<š:@6Öê@4©@:ƒJ@3T`@-…’@6²@<Âã@7ØT@-x@*uŒ@/ת@3*c@+ÐÎ@2oY@:¯H@>¯@;SE@4»@:¬£@9 @6*¶@6êï@3tÄ@8ÍU@8¼a@6Ž@8™L@61;@@1@?ö²@6vP@>@9p@³ö@7ò"@8[Z@6¬Š@8 ¢@0ÆN@5ˆ9@=i @:ŒG@5 7@>‰e@EiH@;U%@5 -b@8@@ïS@8@.¤¿@>@ÿ@AÁá@9~S@%Zå@$>@7à¶@7a|@5Óá@6¾@=a @< ¼@: ª@;Ž @8ñ@-R:@,ªÏ@.ùi@8Â4@<`@5e0@6@<;O@<ÓÄ@=ߊ@CÏt@D-ú@=}@-žÍ@+yŸ@=«@9­3@4$X@:¥‹@@>H@>æ¢@:¤@;T©@:e¥@:¨@3DŒ@42´@B.»@B¤Ç@7©S@1A<@'C@5èñ@<ˆ_@7i#@)¬@44ê@40~@1?@6Gç@7tb@1‘V@-ÚG@2j’@5C@4}d@2}¾@1sê@"(*@4@;UÛ@>ÿ†@=¯ƒ@3‚@%V@,ì]@4ž@:Lø@=on@;iQ@239@*[b@,Ól@>–²@@w§@>é@2È @.bÊ@4¶@6pä@9½@,¥«@)–ý@8[ð@5‚c@1äº@,ÿ£@8¾€@0&Å@)Å–@)Z8@:̪@@÷@;Öf@;ú-@<ß‹@9Xœ@3  @5,í@8öÃ@'~t@+u·@=½i@BOM@;oi@3]„@!û@(µ$@#c”@2l@8¥Z@<Ò|@;õˆ@9$J@:¡[@>ý²@;‚é@8¾Î@;Þp@<‰@<Ïo@> «@?‡ù@6ÐA@6ýD@8 ½@=^m@:09@-W7@8ü,@AÌ%@@^@@(D@> &@>5˜@</@:ÛÀ@@3@B )@C œ@>¯4@5þ£@;j«@@íË@Bo¦@>6ß@;Vt@Að«@Aã@:Ù@?%‘@BÉk@;‹@3²¨@;·¬@@¡@7ºô@1ä)@/qT@0N…@,H[@/«¬@1Y÷@(ú@'Nê@/êk@9‰z@1Ï,@#ÌÞ@'Žy@/Û@/3ó@0‚@7#@?u<@8ø@1¿@1…@5ÇË@0Á@84V@;-K@7`ò@:6÷@8U@7ŸÞ@8Êá@; Ä@6øk@4ÕN@4\l@7™Š@:­A@8›í@3©#@3Q8@4ª²@9ßÿ@8šÖ@4G³@0hõ@6À@4ñ0@3Äâ@4@0ÕÎ@0 -@@:IŠ@@~Â@>Æ:@7Ñç@;èõ@<¶n@9Œº@:¤­@6|@/ý‰@,á·@8l¶@=Û»@ANk@;·@1·&@1ã@8‹@/”@$U@*ZÁ@6P@4!u@9u@<åz@:ô@:~@6û@4{÷@1\@2¬q@-áô@6ú–@:n“@; -C@=t@@–é@E+í@BT/@7Xì@4—¨@<&€@7Q@/wã@4¶@@8#@6éá@:Ãê@>=t@=q,@@ Õ@?I#@9\t@5B}@;Pe@=£/@5Ë£@.7@7¤ @?Z÷@:"@.°@5„)@?‰Þ@;dõ@8×@5ç@2.^@2þþ@;£¬@Bd“@=#}@=Z~@;H®@6@8KG@{¶@Aò@6ôd@5…°@5ö{@3Õe@;[I@O @;â7@>Ñ@=ÑJ@)@8{|@8&¨@1z¢@/m?@4̶@<°l@7”Î@4J¤@/§Ù@-Ì@6ú´@8yJ@;M@<Áâ@:›ˆ@?eQ@AO@@ 0@<í1@=¬ @9Øõ@9ìc@?¥×@4'Ì@.Â7@;‘=@@ŠA@?m–@8U@-aÁ@1=M@!hT@5ËG@:þ@=xø@?+P@@Wé@>0Â@:Ññ@7ëm@<®Ÿ@>@@0; @2C]@7eá@;ñd@=ù@:â¾@=Vò@> @@¡A@>êI@>²¼@AÂÆ@CËË@BТ@=“¼@93@:@û@?ú:@;½Ý@4óŸ@2¤Ý@>Çv@?Ê @? ¬@@|o@A7D@:|@;úN@A¿!@@@4°@4ã@?«"@?é‰@=÷ø@?dó@7\[@6ÄM@<†Œ@?Úq@ß2@A>@>0†@6r°@8@c@9"Ž@8WÝ@?ƒ@?ƒÌ@<F@:ao@€@<}@;^u@>õ@@ä@0Ð&@%+•@5³@.h\@4¸;@@>uˆ@>*¤@=V¤@?_C@3*;@7ç @:‹@-S@/-C@4 S@:S8@6Sº@6ËA@>u@;çe@5Kô@;˜Î@<>´@5 S@/»Â@9—6@4½@*š@ç@7þ@/eª@/W4@;°y@:[p@;£Z@=[~@>ý¿@:*@5ùÏ@4Äî@>O½@=@>I7@>2@:3E@6Ì/@;]@/*z@*ÑÅ@-ø$@3Æó@4×\@,Ë<@*‰í@1çÂ@5 !@3õ@5{@0@8–±@

    @ í@$Àä@,ýû@29Š@&9ž@$n¤@1g#@.4ç@(‚£@ ¤9@.Ä@-‰@,Ž5@'+Ë@)%Î@,Ws@*VÞ@.=@-1¤@*ÿ\@Üa@'Õp@3¹×@/”@-y×@!T>@+Á*@6w7@1à@1³ @!sö@)Ña@2D@3Tö@/ E@ "@%­Ä@6õZ@5ûA@0ƒ @)äW@&&ª@-"@6?¾@0žQ@'Â)@&e®@'„ˆ@.@5@(†c@(Rœ@/:­@.yé@0Ž^@5gÕ@+D!@,ë@7@2‡@/_1@.i@("@(b@6‘®@4&r@1#É@-¡0@&¦@"V×@0(T@$Ê@Ð@%¢Ö@)ò}@  @/»!@7>c@3Úê@5,@.æÝ@'5H@&†@3IŒ@4 @0™@.tŠ@)ô@$CÂ@"žE@,û“@2"Å@1%@2&F@%‹ƒ@#Ÿ­@(Y‡@0ÃÓ@1aè@1Ùõ@60ô@,>`@å§@ ^@02Î@*I’@/Ê\@68ã@0Ý‹@(A·@$^.@$‘@0ÐÚ@5B¬@3²t@5á¬@-„´@+>Î@ù”@$‰s@+4!@"…[@-N%@/¾+@((k@úZ@(+7@*+P@.@@-‡ -@(‡À@0ìµ@1€û@,t3@+6”@0±@-Ýì@&.Û@0 @0as@4`@.pD@%ac@ 1}@*E=@4Œ²@2,c@0l<@4àÇ@5co@'ëD@-‹b@3å@4?Û@5Ñ9@,Ip@'±ì@6Žô@1Gj@,"@)S.@)¬o@3Ðp@4Ä’@-ví@3•@5Ø@-Š@+kA@4py@0wd@3`ç@26™@,˜@0ìw@05P@,@*ðè@5“@3j.@3P•@.Í;@,ÐÅ@7*&@8³w@0‚c@,:@.–¢@2’@1Ü[@4ž›@,øÄ@5…@6+ @0ˆ@,rð@0ƒ @4æ@3W–@1Û¼@(aj@óA@):‡@7Oõ@0Èø@0/@%°÷@è@eç@.ªj@/rM@4‰@7@4£-@-N@*e@-J>@/ág@Qö@)‹¹@0O@2ŸY@1!f@1‹ó@/Å×@1$@4§@4Ñ@2:”@(Ý^@,¬D@2.Ð@3¥þ@3i@+(L@.È@1Àj@í`@$þK@-Š[@2œº@3_S@4³­@4ú8@/ -@.®@/Ï®@3 n@2²R@/Ë@,æ\@2ö@3j×@3¦Ã@0 -@0hN@1 Ù@5Ò¸@4t@1Â}@/(@0Ü@2§É@3¾‰@5ãí@1ÿ@.{„@&ã|@'“è@0«¸@-PÐ@CÙ@„‹@28Ù@3Pb@3³Ò@-Õo@''y@-Ûõ@3P@4={@1ÔC@*9ˆ@/Ç$@3è@1sí@2 ^@.aÏ@^ð@"µì@4i@6 s@0ð;@*´#@.~w@4@2©U@3s@3©@.+q@/7@0+@3£t@5®@1Y@* - @.Rš@0Óa@7È@K«@.%9@) ï@!a@-Û@3 ¯@39õ@.‡“@/H@/%z@/¸Â@1ü:@3 @.¼‚@/Hp@,Ù‡@/äQ@3ðõ@1Êø@,ª@-qk@,{š@0±@(ϳ:ŠÃ:©±:Îøì:ùðk;‰¸;)vª;-.«; &t;»A;I=;è5:î):Àsr:Û¬:YTÑ:Tl1:ˆïæ:Áé8;­Ð;¡š;*‚õ;#‰ý;sÁ;€ê:ó…Þ:áÆÛ:ÕAR:ãã; Ò!;9;d¬Ë;ŽT;‡˜;„ ;z8Ý;n•|;e ;\eº;Wö;bÊK;yª!;„Ø";‚<;lì9;MÇX;-nF;w:ðÊ’:å ;ý;.jT;eÁn;‹ø;•ó7;‘øÑ;†¾·;wfÏ;aû;B·;R©:ô0ê:Ã`ê:³TS:É´P:ÿAÉ;ˆ&;6);DÞ;Oͼ;W-à;N<£;,¿¹:üý¹:¶K.:©ÅC:æ^-;3°ö;ƒPã;¨›;»ßÄ;¿!Å;¾LÑ;Å¿é;×2Î;êìß;÷€ð;úJÃ;ú¹„<“<ö6<gK;û'];î•f;ïÎ;÷l1;ñâÊ;ÚF.;ÁX];¸;½Çò;Æ›;Æ…©;»P;ªF$; >ð;¥ëÈ;²zÚ;´¸ö;§It;”Ìm;ˆ¤N;„<^;„we;‰µâ;–q;©l©;»Ø;Â!;¶òÖ;¡};‘Ì;”îŸ;¤m;²fë;»´ê;ÉØ;ßäc;û”<¬r<oì< Є<Kµ;û=;çqb;Ö½™;É";À_‰;¿ñ¨;ÌÄr;êŽ@< s<0u<v<f¿<NÙ< /-<c0<,&<'¼< ƒ¯< -a‹<3l;ïû‚;àzÊ;Ü¿ò;Û!Á;Ò‚;Æþ…;É$‡;ÞÞ;øêZ<Ào<s×< hÎ<=ð< 1 Ëæ<.Â|<÷V< -ïÏ;íž^;ÁcÖ;›Äò;‰ÁÓ;’;´5 ;çÒ(<“¸<Ü<©Ö·<®'â<ª$<œz¦<‡8[î<ª™9<¹ÐÂ<Éø<Ú`<èè<ð¤:<îÛ8<ä"=<Ø;<Íç¡<¿y$<¯Þ¸<¨, <ªùæ<³/<¹· -<¸óã<²wû<«¢ä<¡À´H<à†<¿Û€<šüë<ˆ–<‹ÀH<” <”?ˆ<‘ÜÖ<˜ î<£ø<¦´<š¥><ŽÙ2<—<µ¢Ú<ÚN3<ô)…<ý²Ð<ø Ê<ãí<ÄŠT<¢×¸<…Ù<_Xª*r=EªD=d_Ô=ˆQ=›8=¥xÈ=©ö=§Ä=¡ =”d=ƒïÒ=^òd=0Èt= }Š<ð1÷<ý¦•=Ø=5º#=W{ =oú·=x /=móû=[“|=R¿u=Tµþ=R_ =F=4:=ëT= <÷î<ê$±<ç¼Z<ð¹= 2=&›ë=EXC=Y5A=^æ=XÏ=GÔª=3=Æâ=ç=‘â=|Ñ=ï0<ú¸= -±³=,•=N¸ =d°=t¯´=†» -=’9-=’b=ƒ:O=Z®¬=;Ñ=9\›=O´=iåÓ=wÛ=péw=b$=^e=d¿w=eµÛ=bhF=pª=‰Á²=›å=¦44=ª¼«=®RC=°ˆÌ=­›=¦ -=ŸTù=œV¬=œ·"=¡¸=«]õ=´4‹=·Øl=¸C”=¸Í=º)·=¹‚=®+Í=—°]=¤—=c/ú=\Õ =c–=rW=‚Óù=‰ =†Ò¥=|[)=o_Á=p’==s.h=dìM=L9‡=Eh&=`ÞÁ=‡÷8=œ:®=§‡ƒ=¬+C=¬ðž=§Ù=›U=Ž‡ë=Œy¡=–„d=¢¡=§5L=¢q=–ùt=‰!=zjÃ=h®|=_ŸÐ=aJ=c%=Ul=:d·="d—=÷=(e¢=.™¾=%{‡=‚=Æ1=%nÓ=;w=P=d›®=uî1=xùg=hM=O#×=?09=D=j=^n=|š[=…ÇÃ=ãÁ=mº#=Uc =GI‚=Q.R=qØ=‰¨Â=”á=šg=œ£=œL=—"¦=‹ò={¡c=m÷=zê{=Šòä=•ÒC=˜e(=«=~Â=dõ=ZÀ=Mš›=:'=40=K®£=s¾5=ˆ F=‰îQ=…,À=„j|=‹ÀK=–›õ= r=¦iª=§­=ŸWÏ=Íø=€|=wäñ=€ãž=„!F=Ëä=mU2=`ìó=o™Ð=‹Ü=™¸£=šŒp=— ”=—ÐÔ=•^Q=…e¶=] =H®X=X¤¿=vÛv=‡«À=’ú=¡ >=®€=°l=¦q`=™0Ê=’Ýÿ=•ô=–y³=‘šš=´=‘l±=œD–=¢ºˆ=£L:=¤ÕÒ=¤?3=›zi=’;ì=•?p=¤…ê=´É =¼£˜=º÷]=´Þ½=°X=¯’=¯ò_=­F=§€Û=¢tL=¤=’z=„p=qÏ6=iö=j L=pƒ=v‡w=t›‰=gjc=O…m=2à=[§<þUn<×>û<Ä‹)<ÉÙ=<×L£<Ù–<×È<èöª= ìE=%?Ý=>¡=Oq=U»=Q¾³=G=ã==£=G’h=m5Š=ŠÕ=’Â=’’!=˜==¥/=²].=¶ïà=¸ˆÂ=¿•=ÄKà=¼nq=ªiŽ=šêy=’õ+=Œm|=|8Y=Q(k=1®P=-X†=5©!=5ÆK=&¾ =JÚ<øÀb<ë#]<ñD=·!=v?=0BÊ=P+ë=t(n= =Ÿ†£=¬Ò=·/^=Áx=ˇÐ=Ñix=ΊÕ=É æ=Îé=Þ²=ïãý=ý›4>O˜>=ûq=í&<=æþë=ñÿç>ÞH> -¦E> Œö> %z>Õ>Yw=÷÷3=÷¥ä>Õ·>Ùà>`b>$°7>$h>Ó>>ˆ(> ÌL>¹³>–Ä>Î_>¯>@Ë>Î_>“D>$¹T>,vT>5›>:ï>9Îê>51>2%û>.ÿ”>)/Î>#_g>}Ô>È¢>ï¥> f>-½>:î•>B+/>:‰ > |>—=æb=Új=ÜÛ=øò >˜‚>6Lç>K¼k>R§>M,x>C´ó>:ò“>4æ­>,6&>þ>\Ò=èƒý=õÊi>·d>+o >?»ê>LÖw>S9‹>SjË>LÉÕ>A">7ç‚>4ÓÄ>1«D>-)Y>.LT>6=F><­µ>6Ä°>"*> £p> üz>"$Ç>5 Þ>=>[>Cà>Kº¾>HYú>5O>&§»>.Š+>@DF>B]£>.°ž>¥ì>k‰> žs>(Õš>Hõ`>ZÔw>Y‹ˆ>Sžµ>U`<>ZL#>_|>ký>€->‡ÈŽ>‡J(>€›O>r™>j_f>l«€>j¸ú>Y9 >E“Ä>>D/>3Å‚>$ž”>T>ü>.ü >@:B>Qä¼>enD>r œ>q>f`>V—«>FG›>>_>I¿9>Q´ö>PC‘>Ls]>IÄ>DŽS>AD9>E‰J>JÃÊ>L§ê>Qvp>`ü>vOÜ> >zB,>eŠf>R>EÚ<>=20>4ªR>/Bp>1ø[>< Ø>JìP>Xˆ>`7œ>dö§>f7È>b}Q>WÔ >>°Í>¤>< ->)Îõ>Jøc>aú>hÅß>d×>Z¡–>Sž>Q2>QûÎ>XÕK>bìž>iOµ>oF->|uì>…—0>ˆ2Õ>‡Då>ˆ§>‹Â™>Œø#>…mY>s©Ð>fï>bý>_t³>`"¯>fX>cÔ}>Nɯ>5'q>+¸¥>4Â.>FÈß>VCÀ>_— >l–Š>9x>„Q(>€’>vH¹>wˆ>„I>† r>ƒ©ô>xDX>rÂB>vóñ>qá>g~>m:'>@Q>††A>‚‚À>v¬T>gù>W:&>G‚ì>>ØÃ><>CNí>NÕØ>Vh'>]²·>mv>‚/B>‹â>Ž2‰>Š˜>‡+º>„[V>{ª>dS˜>L‘ ->G0>V>föa>lh²>i‰\>^"ç>GúS>)|–>. =ÍüU=’Ã=c¹3=y.8=¬r2=íú>ë¢>-p:>5lñ>9DÔ>BvÆ>N{E>[›>hzÉ>r °>sËa>s½è>|.J>ˆæ>˜©ë>¥Ü/>¦†y>›…=>íœ>4ü>ˆ´Ì>w|µ>[¯Q>LÊt>=‡%>*ºO>-Ž]>N,M>p‹í>z÷7>qX>eŒ6>h>}@ñ>Ž`Î>ž ù>¨Ó%>«+>¥uØ>›­ >Ó¯>‚¿ª>],>9wÿ>-H%>,q>,™„>?›†>k0¼>s‚>›ÚZ>›nn>’S,>Š¼>ˆ Ï>Š ¨>Œ}5>Šl>ƒ§>nåé>LKœ>(À]>{>83ÿ>g˜B>„¾>Š¶¼>çi>• F>‘Ex>$á>\¿>Mù·>XIï>kü>w_>…%Š>yÆv>WBÎ><å>; >Wð¦>†„>¡|Ÿ>®™>§ 8>œK>¡œ­>¹85>ÊaÉ>Èè™>¾ì>¶B°>±Ì >²?>­Âd>›6„>õ~>sÇå>õ>³IÃ>Åš>ÅRØ>Å!>Ìü>ØGÕ>ãØ>ç•€>Ù`«>¹q›>žÉ>‘×ò>O>–Q>«˜¦>ºÅ”>¾Ü>¿Bd>Àï¢>ņ©>ÓßD>ßøü>ÓH>³ g> k>¥$¾>µ¨ >ÆÀ>ÕÁ>Üà >Ôåˆ>Å%‘>½ö¥>ĈJ>Ò?ë>Þ§>åµc>éñ>âÚe>ÒÕç>ÅGw>ÆV>б>Õ:>Ðÿˆ>Âü>±[}>ª¶<>¹<®>Ñé>ÜP½>ÒÊ >Ã¥Ê>²lS>–p!>o…>^O>‡^ù>ª2‚>½a>¾ek>·ªj>´³.>¼D›>ÆËS>Æ‹¿>¾ >½<>Ú ­>ë‚Ä>ç–z>Öv¢>Ɉ|>Ì8Ù>Ì— >²è>)¨>}À&>…Ã'>Ž´®>ž[>½€}>Ü•g>é÷¢>ç:Ê>Ô¸È>¹µ>¯½ð>ÀØ}>ܽ>ïùx>ïyS>ßFe>Í3z>Ç3>Ï>Ö>Óñ>Íïw>Π6>Îÿè>ÌÊ®>Ö>p>åkÐ>àP >ų>­j >±Šu>Í÷Ý>íÝÝ?nf>û€>âUÊ>Ëc>Ç„>Ù7h>ó1ª?ª@?ã?¨>þ˜ƒ>öã>÷¾ä>òÔ®>áh>Íc>Ã\>Ƶ>ʺ>ÇÐ>¼G_>± - >®·W>¿Ë{>Ö…õ>Ùæ>Љ¡>ÍA‚>ÎÄÈ>ΨT>ÏÊž>Óm<>Û˜›>éï>ññv>ôt>>ýà?‰?vb?¸@>ë&*>Úת>ÝŸ=>ô÷ ?ï?š@?„v? §~>ývÒ>éþk>íÀa?—;?šG>þ¡>ã÷€>Ñã1>Õã´>ðÆ?¬? L?øË? -§ÿ?ìV?Šê?·™? -Å@? \?ºþ? bz? -—?0?‡>ÿA?°w?Ü(? MS?^?OA? -–?eÀ?*Þ?‹r?k?Â>òH¤>ÚÉÅ>Ì:ó>ε¨>ÚÅ¿>ç„@>î×>ä­…>Ì×~>Ä?>á•?Zî?ÊE? ý?7P?Ûê?€×? -Vó? ?Ì?³L?àÁ?üp?_:?”}?™>ï°÷>àî™>éOR?±§?D˜?!« ?"5?®Ï?fá?ø'?ó?r?pa?&J€?2ÀZ?3Ÿ±?(³n? W?ÜE?"-Ê?*È@?)³·?(\Ý?&ö?Q^? Ö?-u?³?"R'?á`?Ë?W?W? ãè?hƒ? ?–v?¾Y>û=I>ø®>ÿÓ?tô? -Žç? ©Z? â? -ý“? ³ƒ? µ ?l? ‹l? a@? Ò?˜?.Ëó?2þ7?/6„?*¾?*Þ?/?5…\?:)e?>‰?:Ì?1éù?/ª"?1È%?0ÀÒ?-¶%?' =?p(?§õ? ÚO?Z~? -7B?€Á?·¤? !Õ?"Æ?]?Å>úÅê>íK>ãR8>é½À>ûN?Ù½>þsM>ð3Õ>áö¦>ãn}>ó |?Ä´? $y? Ù­?íï? éF?f?‘Ï?ÛD?!7?,[·?3Vû?0z?&Ôí?ÛØ?ë¸?? å >ö‰ >íˆ>÷»Ã?ð>?Œ‚?­n?×9?…ã?T†?ú?f(? B,?~?݇??]z?¦I?Aà?^è?¶?õ?gÐ?Aý?ƒµ?"hf?*¸3?1fG?0$ ?&M©?å^?IÐ?$Ç»?'•Ð?)¿?+=.?*™?" r?VF?À?ô?&Hµ?+t–?%ôE?Lî?$ž?T6?üÝ?'M?-ýœ?1U”?.4ß?)ØW?,ý_?3ëÆ?1Û¼?#¡Œ?²:?@Ù?–?ñ?"ê?&‡1?-ÎD?1®1?-™ó?,*ª?/{?.K^?'ü´?%új?+Cy?0†R?4}À?9bl?<^{?>À?@›?@é÷?>%°?<Ç€??{D?B2¼?=µÝ?1¢0?$µ²?%‰? Tb>ù¢›>çDZ>Ý›Y>ÕŠ >Õ.k>Þé|>ê/÷>ïÎÜ>ïØU>ðd>øøÏ?öh? ¡D?·³?O€? cï?|ð? >ýí‹>ù‚Ÿ>üMÕ?•ø?ŠÉ?ÄÏ?Öû?ÆÑ? È-?kï?j[?'k?,Àò?)‚#?"ò?–/?½b?ÿg?(Ç?+Š¥? Œ? ïq>þ=ö>ðéè>í1>ó™õ>ü¦‹??d?Ûz? -d? Hµ?fÌ?=?ˆ -?ƒ&?¸½?`@?9?Ä?xÛ?qŸ?~9?ˆr?ß¡?Øa? ÚO?øÏ?$O?%[?%q?%»é?#Ýs?#ã?"øB?8?Pë?#U•?(››?#6?;e?3ƒ?oI?dx?QF?ïz? )?;ì?3÷?HA? ‰?T>?A? -$ê?'5?†?Ÿ¡?Œ?!R ?!ÚÊ?/h?}©? à‰?%ó>?$xi?&•?-2 ?1áÝ?0ã?%Zß? ÉA?)–T?/kÛ?*«è?&Úß?*¡å?-‰¸?)$'?#¯Ø?(š?4îÑ?@§î?K«?Q—?S}?Ljå?AX_?>‹ö??º ?>°þ?DUl?Qâ+?X¡í?RO‹?Iâ?Fò:?M7Œ?SƒD?V&>?[Ÿ?aÒ?_h?Q‚3?<Òù?19?:fè?Mžê?TÝ,?P·Á?Vûè?h9E?tÎÓ?{)?{ *?rœ?`I?SÃQ?\, ?e#‹?Ys—?H¤ò?JWø?Xõ²?b}‹?hÏc?pÜî?u¼?yÐï?~Ž?€…ä?ƒóT?†úY?‚Gæ?dh‘?4›Ä?sº>ܦ_>̈>ÙHW>íI>õ‚>ò#ï>íK >éøU>é5„>íCš>ûòB? ѧ?Ô??ôÈ?˜L?ï0?÷g? Ñ'?pj?Â)?U¯?Ò:>ú’«?+? Äm?Jo?Ák?#YÐ?$ú¢?!U>? ®?&²l?(lõ?$Ñæ?%dw?%ø?öÑ? â -?#?äv?þ ?à1?¤;>þ+>þú£?ì?la?d¢?ö>ócë>ê|Ÿ>õä)?»f?O©?ÆŽ?òn?H¯? ǵ? Щ?äŠ?%ü?QÆ?,*?$£r?*—‘?0U?5æH?6\½?,c?žË?ìñ?Ž¨?°ö? u$?µ0?-¾‰?Bmg?OT?Qi¸?GB?6+Þ?)+?%V?)>ï?2:@?;éÜ?C@E?GúÜ?K4¼?M®X?RɆ?VÒ ?NE[?8ÐÙ?+d?2z)?:IW?<¨ï?BÑã?EØ'?Cjb?H¤Ô?Nƒ®?Iw—?Eê?Do#?5ÉZ?)H®?*~«?-Ø?2÷Î?=6¹?F¦Z?KC?Mâñ?O)(?P›Ä?WHr?^ŵ?Zwp?O?Lß?Ká0?Cwl?C¼?J‡º?Mïy?Lìº?K*å?Go“?AËy?@ª??ª®?>\ ?AÏì?G^?Tɵ?bžÝ?iÆ]?l9`?eÚR?[ÿ˜?S°?F. ?:m ?>b}?DÐ?@14??2Ç?C„·?O??\Ùå?bD?g%l?m³?j^?^ç8?W²Õ?]­C?^c0?Rœ_?O~?N?GØ…?H«Ã?PCi?O”1?B ?7˜?9!»?I\?ab»?v'?~  ?{k³?|–`?1â?y’Û?l„?G+?G¡>ÌÛË>²ß§>¸ì‡>½49>µbr>¸ ý>Îï²>æm¹>ó +>öþJ>öBn>ò^U>ècW>Ýl¸>êS -?®X?=²? ´?nD?#R? è¤?r?öR?Vv?&Áx?2Íž?5R?34?.‰^?&v?ÌÞ?»>ð<Î>ïïþ>ñæ ->ùÂ0? Ó1?&ܬ?:ñö?AHQ??(Ì??ìÑ?Få?JYõ?Lë«?R;C?L\J?8m€?%¤‘? ¡ ?0è?Qcÿ?h­Ž?o_î?g4]?Z¾?[4?h?P‘?c—–?eZÒ?eîn?qö?~]?~IE?upë?j©à?fFT?rÄ?ƒêÙ?‰”š?†û4?ƒ†?ƒ>?…Zn?†pS?†éN?¶"?hÆ?U}I?^ȉ?lßM?sU)?€À ?‹%?“–?‹¹4?ƒÞ³?ƒã‘?†Ä?„.›?€4›?QÆ?‚±U?„Øð?ƒ½­?s¹?€Šð?•#?;?~#5?~¹¦?{‰G?\a¯?;äÚ?Gnù?g–?wÏ~?Âk?…>r?†õ$?„qÌ?‚i?x„?jŽ?pÓz?~Ûœ?€Ô$?~ÞÓ?€~¯?}Ùí?v¯ô?i¦?Ž4'?–Óë?›QÝ?œ<“?™‘?–òÂ?’´î?ŒÆ€?‡Ø?‡C?ˆ¼?‡Ÿ?†”R?†ª½?˜&?k“Â?_£?wa;?Œ° ?’ú?ŽÄÀ?ÒÈ?—{Ì?–Çb?‘^°?Ž8?ŒØ¼?Î\?µì?¤?‰0Ç?3Û?N[?„¡S?†Fç?˜ç?pV¦?m‘â?…¤Q?»?Àè?jB?ˆØœ?usÔ?i6Y?sS?rÉ?n¦õ?€âG?Œœ?’-Ï?•²ù?™í5?œ°ú?š°§?–×ü?—'À?™ÆB?—+¯?•*Y?™‹Ô?œ#-??‚²F?……]?†ä?¶«?â?„o7?‹‰À?•;º?Ÿáz?¦ö?ª=|?ªÜ?žb?„f¿?[,å?Fq?<¹W?9¾?8ùÓ?5L4?-?+¿?6ƒÿ??>É?@.•?Dmu?Lxd?PÌ ?T‚¿?Y£;?` ¥?`67?Z@>?Y¢?ZGS?VéM?U0Ë?S'_?Xhr?eõÉ?h€?`ùª?d·/?s•Î?}`?{M?uÿ³?t™‡?põd?u?iÎ?¢Fo?¢D†?ž†å?•Ôæ?ŠWÕ?‚6f?yê>?r.Ï?pýE?wy?z˜j?wkÇ?zCZ?ªa?{?¨ƒH?¨Gƒ?¢|ö?›ãR?ž@ö?ªÆ¹?³)ò?¶6Ç?¶z‡?´OU?µ´?¶Âl?´Ø5?­è¸?§"+?¤TR?§|¢?®=#?¯ð?°òÕ?±I÷?¬’%?«12?¯vl?µ§?¼7+?»Îº?»Ž -?¿Ää?ºû¶?«©(?¨Èì?²’ë?·Ú@?·|j?¶úƒ?´Ð?¸lÛ?ÁÙð?Ä‘l?À*ò?¾ƒ?·x¦?ªÌ?§ó ?¶]L?À?»É'?·ß?¼M?ÆaF?ÅÊÒ?½U?°wY?¤aŸ?¥U_?¸¿;?Âþè?¿IÛ?Å°?Ð2U?Ðp?Ã…Ò?©é>?žÔ‘?ªä?±±\?«%?£âÖ?˜}d?‚ìž?c¸?NŸ?I’?SH?\¤ ?c©?c½ü?c±?mvå?lf-?]Ô?ZÊ?e»?q`?x -w?zJ?s‹õ?fµˆ?VÕ¬?HP‰?Dm7?>ˆv?8ÿÓ?>E°?F›Â?M_%?Seú?T²9?Qé…?W5x?_½s?aåŒ?bnî?g}?hÏ@?c³·?\dž?RÐ9?AÃÒ?4b?8)¹?A»Ã?Gt?DRô?5ÍŒ?,Á?/œÂ?4v?4£•?0ûÙ?2“ý?;„b?D{¨?Gýk?DP³?<: ?8­Ø?Ë5?H?Pb7?U„D?V¿¥?Tü_?Uç?ZzB?W±3?Jz‚?G7Ø?Vx÷?d??pm?qž÷?k£’?f0¨?b*ð?jßÜ?s·ø?oÆ?e)°?]Õb?aÒS?gσ?gu ?n_Á?yʶ?[ý?ƒ?ˆH†?ŠÉË?‰bû?…(E?‚Š¾?~Ü.?uÖ´?~vf?‡º6?Šg?Š$?‹A?Š:?P?˜EË?šÏZ?˜¢-?˜º?š¿q?œÞ?žhn?/½?Ÿ7‡?ž3õ?œº®?ž Ñ?ž¾ú?¢Ý®?§&?¦…À?© ¹?¯@?¬|á?¤ºK?¨¡Ô?±j?¶ê ?¸ˆã?±˜?¥‡'?£Pp?«ï¯?²„ì?²^t?¬sû?¦Ó×?¢Âè?¡â?›7?•õ?–ÔS?š ”?<~?¢òl?ªsº?³Ôˆ?¸œï?¹ ?¼c”?¿ý§?ÁG?ÁX²?¸²Ü?²U³?·È?¼:?¸óã?´no?¶\?¸Õ?¹¥à?¸­I?²E?³m?¾?ÆMF?Âq ?¹Fì?Áî?Ï3á?Ó6ã?Ð×?͉-?ϳ–?ÎÁ×?Ãþ°?½y(?À¿J?Åy‚?Ãà?¹šQ?±X?¶iÐ?¿ˆk? ?ÅX?Åiü?¼9?¶Î1?À8Æ?Æ3=?É"3?Ìß?Ég?ÎÑÃ?ÚÃÄ?ßZf?Ýñµ?Øî?ÌBÑ?º B?´ž(?À¶3?Îk?Ñ•¯?ÓwO?Úp;?ßU§?Ûf¦?Ϊ®?а.?Û#í?à=»?ã5y?á}Y?Ý’O?Ôœ¾?ï,?Â#n?ÌO?˯ò?Âu??´üÛ?®™¸?±s®?·][?»ôî?ºØõ?¸µß?¸[œ?­Ä$?žÐE?š–?Ÿœy?¨ Û?² ?¸õ¬?¼5?¿l×?¼•?¶| ?»È?ÀaA?¾†?¼ff?ºøf?º%ª?¼‚W?Ã’¯?ÈI‘?ÊÊY?ËÖ”?Êvq?Í‚û?ÒzŒ?Ñq?Ðm‘?ÖC½?Ü•?Úëº?ÜzÁ?á®÷?ÛY!?Ì 0?Ã2Æ?Á¯û?Ŭß?Ĩ?½œ›?¼Žª?¼€?¹ß?½]z?ÂAD?¿=•?ÆÉ?ËR??É«•?à‚?¿/ù?»þð?½‚Ú?ÆÌÎ?È„½?Æ‘è?È­å?ÇŸI?ÄšN?Ä£]?ÂL#?ºk—?²=?²çŠ?¸ŽÄ?»“R?¾®?¾¯s?¹ˆº?´îü?¶L¨?¹ø?½VE?¿Rý?¼+É?¼è¦?¾ç?¼q?²¡d?¡šË?š±f? e‘?£>?¢j?¢ç¾?¤Ö?¥H‹?¥JÆ?©)?«k?­ ?³)$?·‹{?¹£?·Ûû?µ°î?®k?¥Á¥?1&?‘êf?“š6?˜æÚ?™Tb?š}ñ?œ«I?n¿?zx?žc?žeº? ; ?¤Å[?¨âÏ?ª±«?ªœ?©õŽ?ªw?¬"?­[¸?¬±2?§á(?™Öm?®ß?ˆ·t?‡·Ñ?‹”?Œ¬Y?µj?eú?“'½?•ÑX?–Ú2?˜kÐ?š³_?›:?›sÙ?œ{¾?›®d?œ×9?ž^Û?Ÿž?¢?ˆ?›b¤?‘¡D?‘ÎP?”Z›?“'ø?–ϳ?œ£Ò? ä=?¢ƒ±?£…:?¤<”?¦ë?§c?§R¦?«)»?¬8?­…•?²¸?¶©û?¸/ß?·´ü?µrP?©ýÔ?˜|f?µÔ?}e?”{h?—ĉ?—žF?™ Ê?›h'?Ÿ–€?¤^¼?¥­œ?¨S²?­ ?®Ôë?­ÜQ?¯O3?±À ?´ç?´ö¬?´›Ã?¯©Õ?¦?§É‘?®p¾?­ì‰?°Bu?µh™?·—?¹WT?·«R?µ`Š?¶™f?¶ÜÚ?¼mÅ?Ãë?Ƴ—?Æ>2?¿ó#?¾I?ÈRÐ?ÎbŒ?Ï@?ÌV?½Ï4?±X¼?® ?°2å?²??·=ü?·{?¯_`?²¶™?ÂF ?Æ£¾?Çx?ÆÆÀ?Æx -?Ǹ?ËS?Íe*?Ï£Œ?Ó”?Ôð?Í›P?Æo²?ÊÑ ?Ó?ÕùÆ?ÚÊÂ?Ú?ÚÅò?Þ‰H?à]‚?ßÚ1?ݬ¸?Û/)?âL+?é5?çA?è Ì?îé?îÕ?é\Æ?é¢j?èC?è•ü?æ5Õ?àûK?ãèu?ãŒl?Ø6r?×Ú?àFs?⺼?ã -ã?ä+’?æ{Ú?î&ù?ï“ì?òÌ2?üä?÷ý]?íoÈ?êÜÖ?óR.?üÁq?üRã?ôä?홞?ðö?üªñ@í@áØ@<ò@`¿@\P@ E@c@Ï@ÍÌ@Áœ@N§@CŠ?øái?ìiï?ù‘[@ëá@Ñ@ -ü@ ¤M@Š´?úÂd@4Ó@Á@ª@EÌ@•Ö@9ý@w@èŽ@Wq@AÑ@ô”@r2@@ ”@H4?þ.[@h‹@ ’–@ Á:@ -Qe@.=@ ¬@ ‡Í@ w @ªõ@Dã@ Of@5‰@ -@?@dŠ@á¥@LÎ@Vô@0@ù¸@Z©@r9@ -¢?ë­?²Ñû?¯©@?½C?³ ‹?«Ñé?¯6?±¸?³‘‰?·zí?¾/?Ë g?Ñ5?Ï %?Ï÷?ÓÀD?Û7?á`C?ÜRŸ?ÏVç?ÃæÎ?¡QØ?‡µé?’×…?š?”"h?’Aƒ?•ôC?›Æ¨?œîÒ?š'?œSh?¦~1?±mŸ?¶æ­?°­?­³?³{©?¶¾Õ?¿¿÷?Å…†?Èø‚?É”C?¾IË?•‚?dXÓ?ið?më´?cƒ?gGË?qsè?uHk?uO7??‰5?0{?’ƒ?“2ø?“I ?“ñ?˜Ý±?¡/N?¨?>?± :?¬ïö?¡ÌZ?¦™?©ðd?¤Þu?«<Ä?²éU?°Z?¸?½Bn?º?¼}4?Å3?É!œ?Æq×?ÎNh?Ûè?ÙØ»?ÌnÇ?Ä„9?Â\?¼¹G?¹÷ ?³ÊÝ?¢¬†?¢/U?¦d•?§Mg?®ï?ª¼Ä?žæŸ?¡Àï?­Ï’?®,?«i°?±È°?¾ 9?ž…?Â4N?ÄÜ?Çu?Ï5æ?Ðp?ÈT[?ɽï?ÌLÛ?ÒÕÅ?ÐD?Éëñ?Ѥ²?ׄÍ?Þ(ú?Ù~?ÝX;?ìã¬?ò?åŸÐ?Ý™?á‹O?íP?ó±#?í"[?äã?ìÚ ?ùõñ?úV@å @tr?ò5ç?îå÷?ûé^@Z@¥@?ÿÁÍ?øÑ“?üÊ@Œ@ @Ï-@/–?ùÒu?ùˆg@@gŠ@ É@¦©@Š´@ -Âæ@ -—@Ê"@ZÈ@uo@E@rX@üÑ@ª @ja@Cº@ nÅ@ &l@Ê @lû@ o@ X¸@¯}@ -Â`@åx@ñ@]ê@"Ê@»@Âø@ |c@I&@ó»@– -@çý@ßÿ@¥¬@Ë@ «9@òU@»Ý@Ù°@Î@ñZ@ í@?ö@3@âg@”@ g@"Å/@í@L@Ç@µ@¶]@õ@I@Lº@)]@þ @+$@¾Ê@±Å@·ñ@#Y^@!Zx@™ƒ@¯@íƒ@œÜ@ñ/@®ç@Åí@™÷@×Ç@À@±¦@ Œ°@#)Æ@ì@v@ß@ u›@!rQ@›@Í@pQ@@2ã@O@é²@ Ñ@"6ý@"\L@ÕÍ@#–@ u@íU@’f@µ¨@#?3@"¦@CÔ@ÅÛ@VÐ@[ô@ƒ@!˜@"_@¥@¥>@Õ@#Ȳ@ ï˜@U“@C@v0@P@TÉ@#š@$GÞ@% †@%4À@"ÚA@"ƨ@"3K@ú“@Åã@$‹@&'@( S@) -Þ@%‰3@ºå@!×@$)l@&• @%Ên@#,“@ }Ã@$vÿ@(ã£@%â@ ¯†@#]¼@(q˜@&ã@%&Î@(;@'˜Â@$ʧ@‡7@ Ë@&Ùs@&c^@%1 @$Ep@#Å¥@'Ïû@'œ®@'Í’@+îœ@)SJ@'ŽÈ@*@ã@(Á -@&IÌ@%È„@"XŽ@#2£@"ý@‚‹@ »æ@È@\ö@¢Ó@>ù@ ÷@t@x»@'@‹Ç@ƒ@ùk@˜ˆ@pÊ@±r@Ñd@ -¶@I§@tÙ@ @òø@øø@ g@xä@C*@Þò@—o@<Ö@®@@¤,@î@¶`@ -ä@¢)@,+@]G@¦Œ@¯@ @êø@ Gô?ì_?õÞM@_±@Æy@ÏL?÷B|@MN@\W@I2@T@ýÑ@~:@!@ $x@ 9Ö@ ×™@ -«Ù@ -ž‚@à@9á@Ý@ -ö"@ - ³@‡È@þ¹@î@[0@åT?ýbH@“(@p@ $@ ¤L@N1@Î^@éµ@¹¼@#:@‘q@Ê„@A?@Ï@Ån@ÿ@Q@ -òq@¶Š?út€?ðŒ?þo©@Wí@ -ä@ -êM@âr@ -Q@ ñw@ Xp@ -Š@ -€ÿ@ _Q@ ‡[@ ÏÓ@¹X@@ @6@ (‘@ Õ@ Z@ -ÓN@Ù@ -ûm@‚‰@;¼@—6@@"Ê@ -@“œ@LU@ö@t¢@Å@E@g¶@pd@ŽG@ê@„/@>ö@tô@Õ¦@¤g@ pˆ@ íI@ -èŽ@ -º‡@>6@¬¼@—@µð@¾æ@ËQ@(„@h@l@@'@@ïr@sÔ@¥Ð@ñ@³—@à.@™õ@Ûx@Z;@Š@A@¡@C@*z@EY@Ñþ@O@Ç@Æ@=c@HŽ@d¸@ƒ@Âî@R@AÜ@Z@’L@Ý@š˜@ Äs@ É‹@Y@Åâ@¼,@A6@Æ@rG@¯!@u#@rê@J¡@ØÏ@ŠW@O¦@þœ@­I@ Ñ@³Ø@¡n@Ž{@ë0@ã•@N@‹<@ -ÿ@›7@Þ@®Ë@AI@}/@!þZ@!dÌ@!—ª@"y?@!É@Û@šr@>@!§µ@  @ÞA@Þ€@"ð@û&@Ʋ@ŒO@+ÿ@´F@ 3\@×C@!B$@"ÞÆ@#ùö@#ry@&'ì@(ÓC@'K­@'@&t?@$²Ÿ@k@<@¡û@Êž@'=7@(äŽ@)® @+é@+@'®x@%Ø@"â¹@¯@÷‰@#V @%ì~@$O#@$@'[-@)3@'r˜@$è9@&¡f@#–@¾@9Ó@#s@ dy@ ¢Ú@(ÐÊ@&Ô@#Ú@%,™@# a@)_©@&2(@Æú@·ø@ɸ@­@3x@©C@$‰@#»|@"'â@"Mb@ €Ú@#=¹@"U'@g@r@$œ;@$;ƒ@&kÑ@(“A@$b´@&fá@%/¹@ †@%~«@)Û@(õ•@*G"@&Ç;@$Q@%cë@)$M@&¾T@%%ô@'.:@(8Ù@,£B@/ @&u@qÍ@'ñ.@)4@*(Ê@,' @+"Ú@'¢\@(}e@+ÄV@)cÿ@&À @"e@!]@ ¥7@#ÎÑ@1#@/¥¸@")g@°u@&çÊ@"·f@"s@¢Õ@Cp@¦M@%Z@'y0@!¤ã@$)Ú@'°@%ÎM@²®@ B@&6˜@,)“@+n@(l@ ÞG@& ^@,#¼@(ÆU@#Ù"@ «T@$ðú@+ÿ`@(‚Ö@% -@$l]@Ìš@¯À@×Ú@%{ó@,æ@*`y@%,@&ð@&Æ=@)’é@'ŸÁ@#’™@!õC@$Æ«@(±†@'@"`c@"û•@#^@ üÇ@"·Þ@"ºŒ@!.ý@!ŠÏ@ 2Ý@#PÂ@!¶@…@Þå@s¬@¨ø@õh@"9 @&è@(Ã@%¤¦@#'£@#éQ@ò8@Àh@!!@"Zz@ó@Š¢@"o5@!TA@$‚d@$‡@ ñ1@²@þ,@N¤@!Ɇ@zÄ@$«P@$¶^@%^Õ@!¨R@}¦@v}@'½l@( @%®Y@&«‘@&ÔÁ@É’@ Àg@ C%@ŸÊ@æA@¬¶@ðƒ@ wª@+OÅ@)ã@ 3e@#Œš@(œ@$‰ß@(¦¬@+G@,á@+ÐF@¦@^ã@'Bg@"Ã}@&´@'%@ØY@Ó@ò@+Þê@-óô@ÂÛ@RÜ@³q@ñ+@ ®Ø@pÐ@äþ@I@Z¦@Rè@¾N@MË@ }@ä @Ñ@! ¥@HÌ@ˆ\@ Ô¼@¤ô@o>@H@ Rz@ Â@q @%ì@Ñ@"W3@"Àx@$¡ð@#òé@©þ@“M?ѹG?ë´@êJ@|0@¡@ŸÐ@"ý@ @2³@ »Ï@×@°q@èÎ@bô@@á’@`—@ é@8´@lr@ºi?ú?¸Ì ?–ì?Ø·@’@AS@ ¥@!«Ý@"Ul@!qÎ@#¬-@"0Æ@#¸û@%&‹@%Vl@$­æ@"I@#Œ™@"z@#$ö@&@&{@ W2@#$ì@(Oê@(Ò^@(sX@&]Ð@&üˆ@'Ä@#ç•@%~@(›Ü@)Ž@*v@*‹=@'NÂ@ @%@)Æô@)œÖ@)èœ@%±@(Éw@.š£@.¡f@-ا@,ºS@+O;@*ææ@,U”@.U–@+ß¿@*¬Ú@,ÌÄ@*!h@(E@) %@'Oï@$ô@O?@¨?³*?ºÂ&@¥´@)@$Ô @'@@ Eç@ à@%íP@'ï/@%²@ ñ$@)»³@Á{@kÊ@ òh@&@-¿@,@&¢„@(ª±@* @.‰š@-ÍÑ@+9W@(L5@'M@,ò@*ý@*{@.ëð@0Ó@.Œh@.C@,ªP@.š_@+@@$f@,hP@/Ž@-]›@27â@2¦‘@.RŽ@/¯@0_@2ݱ@0fá@,/>@3±œ@1±/@,tÞ@(ó@+@1Âb@+$7@(L‰@39@186@/;‰@4¬k@4D}@5žŸ@6#O@2&µ@0W@/³@2"n@3@0eÍ@-ƒk@$nj@1@þÆ@0·÷@5“­@6 )@5Ãn@2 µ@-ìR@)%^@ $’@/¬`@5‘ò@8X#@7Ùê@4'/@.]t@&ƒÿ@/K­@4/ž@5=@3»Ì@5ˆ©@8+Ñ@9ñü@92F@8iY@,ÿ@!Á}@$qû@)ˤ@$gA@#±@'b@'gV@$Ú¡@"ƒö@$U.@*yÌ@)° @(¹@+Šú@)‘¼@%ö«@*׿@*¼=@)@+<@/­@.ðþ@0é•@.’½@*ˆ@*9@,Uç@,‰{@)»ß@&D@-ë@*íº@(ôa@*³Ê@)ö’@';³@/^@.¹@-,P@*#S@$n£@ /@ïñ@&ÞÉ@. É@.ö[@-A5@0µ´@/§@.ô@/Óš@+€â@);r@)C†@*R@* Á@" ›@'î²@/¤@4—@1¿ó@1¿¾@.¾h@,wh@/Øz@/‘ä@.w^@"éÒ@)QH@5)Ò@6o@1Í<@#¯@!eí@(%@%Ë@(ì9@+Š6@#}R@%Fn@$¨@%© @,¦³@/˜»@1›æ@*7±@)¥Ö@2é}@5_@4KÃ@0Òt@2ìU@0—Ô@1‡U@1Öã@2v@1#„@/_@3‹¼@7É@7bº@4*{@4UÅ@4ç @4áØ@4XM@/Ø@4Ç@,œ¾@' @Ó@B`@0EÉ@5 @6’Ð@1ü½@3Nå@5Þ»@.Ag@*Ô@..H@2 @0[ð@.÷»@$,n@)£Æ@4 ]@5=L@7RR@8ãÛ@9!\@61s@5Ã]@6y@2¦@%ö@(*Ž@'Æâ@#˜¼@,ER@2y @2-@.*º@.MF@/hB@.×ð@*’[@+h‘@#2š@!rÄ@”@¹™@)[@,¯í@+h>@,Ž¦@0¡³@/1@)­@+_U@*ì£@-M@'19@(N×@&*ã@%;B@&j@¨Z@_ù@(>Î@-æÄ@(&@$öA@2=@-‚+@'#Ë@3.ó@*2Ê@$ë"@,^’@+°a@(…J@"kx@&Õ@)¨³@ñ"@% l@+#„@,—7@&¼Ù@"«@#\¬@,X@'"º@/ν@1˜@-q¤@+ «@/¦@)ׂ@%ÊÞ@,Œ@1Î@-„É@%ò&@!í÷@$ðÒ@'¸¾@#l’@)×@.•–@1õª@/—¿@*:Ð@/cˆ@.Bd@,æ@,àÖ@* °@-ìÜ@-äÂ@,ªÙ@.¬@,ÉÜ@4@3Lê@+×@1µ@/NÝ@0¹Œ@/Ô§@)Ýã@-´@(cš@*g@/jt@%–@¢D@/†@"ßæ@-YŸ@-Ÿ¬@+¥Ç@+iz@#iì@+JÐ@0.÷@(Ýd@&ãc@)ÒU@&v@&r¦@( ×@+Pr@+ØT@*û!@*O@+k@*aø@"3@#e¹@&Æ%@ ‡À@z@(ó@(BË@(ò @,XÝ@+ÁÇ@1[±@/§@%sA@)Ž@)–‰@#ʵ@)/€@* 5@!¶@p @%ü¼@)£·@#Š¸@#«@+c/@/i3@) Z@%]@.H@,á @&#Ž@(·}@*/@*‹e@,äÿ@,oÎ@* þ@#Ä@(/õ@4Äu@0F@'£Ò@,ûÄ@3G¶@.7@.o‰@, -F@,Øê@(+@+ô¼@2p5@0¬@,ó@2ªp@7ý@0ö²@,8ä@.׫@4™í@-FZ@&úñ@2¥i@5ƒá@/¿î@¤l@D¶@- Ø@-yý@,Wô@,ŸØ@1Ðß@1O6@0S<@1 -@.K@%(@$P@%U@.BL@2 ÷@-š@-@@1‡_@2Å@2¶@7KÌ@7H @1ùO@%—´@#C@2K;@/Hã@+|D@0nv@4Y2@3F€@/Ý+@1N0@0àú@0Žy@*öq@*Ôð@5`ê@5Ùæ@.@@)6P@îC@*üÙ@2jl@.*@!•@*©š@*„»@'%ÿ@,ÅZ@-ÚÍ@(Îo@%TÚ@)ÔÖ@+W°@*Á@(îy@(¤ @HN@+0ò@15@3”S@2•a@*Aø@G@%ýé@,¤B@13@3–@1W@)•ï@!€p@$‚Î@3Öš@5Be@3üZ@)ön@%#@*L«@,ú@/»Ï@$Gó@ §@-7Ý@*² @( Ð@$É@2]@@6p@1–“@*7@™Ð@¡>@ö @)(¹@.sâ@1ÞÒ@1¤w@.á+@/…~@3>á@0¢Ò@.ª=@0ˆ–@/ÏE@0Ù€@2µ{@3"@+¦@,/¤@-•N@1 @-± @$°@-ë @4¬ð@3ݼ@4y@2—@2œ¯@0ûj@0Ž¾@4Pü@5Ÿ@6,‘@2Ã*@,Q@0Vé@3åÔ@4äý@2qê@0Ýg@4âu@4g—@/†Ö@3‡X@6e¦@1 @+¬@0Øä@2pO@*»ø@'.]@%-@$’@ Â@!<@$d@RU@Õ@"n@+C@$Ò´@h`@ê@#eÌ@%[ä@$\@)xˆ@1ʲ@+©Ð@&‘Å@%ìM@*G@&8 @,¬@.r±@+VS@-8a@*ŠÏ@+ @-À¢@.J@)á@(@(R•@,Eb@.e@,Ê@&N>@&Öm@(ßÒ@,$@-@(Ñ‹@$l@)Íá@)|@'÷¥@(%f@%v©@$g@,¯É@2Ìl@1Ÿt@+G›@.Ð¥@/äð@-Wä@.ål@*™Q@$>Â@!9@,~@0À·@35V@.Q@%ÎÇ@$#º@)¢Û@#\Í@„"@ #@)K@'Ò @,¤@/¿‰@,ÕÚ@,0@+=Ñ@)óU@&‹Á@'›¼@#Õ@+hœ@-Ñ@-ç@/ÉS@2]U@6£ˆ@4Ù¾@+ˆt@) @.]ê@*7ñ@$Ðs@(7Ê@*ü˜@+<@-ÁI@/î@0L`@3«@1„@+Ú@(0Ø@-Õ;@0ê"@*¯Z@"]Ø@*ø@2 Î@-v£@#!M@(S @0íX@.(ñ@+°¿@)p©@%wr@'à@/Y×@4¨@/&™@/îä@.G¥@)Û€@+¦‡@.Ã<@(ª¡@$VY@)êz@,‹Ü@+¦@*’3@.™@.­ú@/:@0#@(o¼@#Wä@,H@3†¨@27±@0@3;Ž@,“,@.šÔ@2yo@4àå@48W@0lN@/̸@1žd@-…n@/ß3@2Í@)†›@(›@(82@'u¼@-Ï @-ð”@+›À@,*Â@0í@.ñ@*KÃ@,`@.¨)@&øR@-Y@2qt@/@)ì@) ±@.å*@1iÁ@/Ç@0Øì@0\ã@.° -@.l'@0?¼@*uÞ@*Ï{@%‡@$Ê @*Yä@/†ƒ@)Œ´@'9¢@#-a@! @*!ñ@+ @,¨ý@/HÂ@-?@2,Ÿ@3Aë@2_l@07!@/õ.@-—@-é@1h@'­H@"àƒ@-ªú@2Õû@1LA@*ÖÊ@!¥›@$Øû@@)Ú€@.Y@0ê@2¢@2ð“@/ƒ¥@+úÈ@*YË@/8ë@0Ê@$ä@&ª@*[@-ìQ@0.1@.3@0a5@1#@2çO@0gñ@0×@3ù<@5p/@4à]@0ƒã@,Ô÷@-ëÇ@22{@-WŽ@'±T@%¯…@0_Î@1á2@1Ž)@2c-@2ãô@,ìÇ@.R@3_`@2l@'Ü¢@')@1²‘@2¢@0@1§'@*e@)66@.X«@1®ß@-ö‹@,ò“@.öÇ@3“l@2-Ä@*rÚ@. ƒ@0’•@.’@0ˆ@1±@2ð/@0yÖ@*P@+Fì@+@+j@1@³@1‰p@.mà@,›@.DS@0c@1}Á@/&3@0Ê@,× @Èî@)Ô@/~@1Yã@2´+@2V@1ˆŸ@,V§@ Qy@ ºÔ@)„Ç@.Dl@.Q<@)cq@-èÚ@1Ù£@3;ð@0,G@0iÐ@3Z\@2Ó‡@1 @1Øë@1½Â@3”@.æ²@*7r@.@_@/"@.)¹@,‡@ý@$“-@-/N@)#f@-;g@+J @)ÙÀ@'"@1ߺ@.Äé@-ºÓ@+‘±@%kG@*®6@-“ô@/ÀS@0%@/¿›@-ºê@,“°@,{r@0–b@.”²@.a×@1Nœ@1ï@$žï@iæ@(ù|@"Xà@'ý<@/9Û@2û@/à@.ÛÇ@-%@(R@)k¾@*DQ@,“@/˜>@0=œ@0a´@0TG@/Ï"@1Š@&ÊÊ@*ÿ‘@-Ö¸@"]º@#ÒH@(T;@,ªf@)!@)Ã@0De@.2Ø@(U@-ÏÊ@.,¸@'ØÔ@#Ûó@,—ˆ@(/Æ@f^@ׯ@*fò@$Ï@#÷À@.18@,êñ@-äæ@/ƒ1@12U@-U@)í@(65@0±Ù@/X–@0Hx@0 @-J¸@*…4@-œ0@$p@"u§@%`F@) Ý@)Äa@"ë–@ Ü@&Õ@@*'¶@(wÏ@*_ -@%qî@,Î{@/±@@, N@'¬7@*ɺ@*št@%Kˆ@)ùB@+´B@+{Œ@'=@Ò @½@#æü@'vG@&‡@&¶š@&:Ò@&ŠÉ@'̺@'V6@$Óy@&‰&@&J@)j±@!Ê@ë¨@„ú@êÛ@Z_@æH@¯@Z@Tš@!cÔ@ ˜@!Ô´@ä@’@Š»@ ˆ@:Õ@Ö¦@—-@W>@ÐT@x@Ñ@]¨@Ã@%bC@"@ý«@!¾@!Š`@¼@-P@ nº@q@åÇ@%îç@%l@éX@`B@"8^@$ÖY@ ¤Ý@àò@}£@"ËÆ@' -k@þŽ@Ž@%ÿ¿@#`M@<%@Á@$?@# É@!Ϧ@gc@ ¤@" @ äT@#Ø÷@#,9@! è@»(@Ó»@(ey@$êq@#Ä@bS@"þ@*›@&¸A@&¼£@Žf@ 7è@&Z@'†[@#½Ô@ÃÍ@0"@*˜@)î@%'@ ‹ñ@@#@"ùô@)“r@%PÞ@!,@Q“@*Í@$I@(½Ã@_Å@õ@$¶8@$¯ä@%ëÕ@(þ[@! Ç@"A§@*¬“@']@%â@#½@Ù’@žI@*o@'ÿÕ@&2Þ@$<¶@Qñ@Þa@%i@\þ@½@?(@ ðµ@¡v@%\Â@*äõ@'ÜY@)I @$г@Ëm@@(.š@(Õm@%ìq@#üï@ ±R@_J@n<@"@&ue@%ÏÃ@&ê»@Èc@qF@·#@&7ä@&Û°@'Gñ@*Vt@"­¿@__@lø@%>@ [@%a*@)êH@&@ïÌ@«k@’Œ@&X@)^@(†@)Æ«@#üu@"†.@c—@„,@ ½T@BÎ@"'@$¸¿@Éd@|‘@wü@ ¿@#Ô@!ë*@ 9@%“X@&WÒ@"Óe@!÷³@&¾@#æ@2ù@%š@%vÆ@(|1@$1:@¶@†Í@  @(¿û@&à[@%€)@)í@)’v@ß;@#Nþ@'Îü@(eH@)^:@"m @ó @)§H@&@"XÀ@'Ú@ g@'æv@(Ž\@#X€@'”5@)§e@#¬ë@!é4@(?A@%£n@(Ã@&ûü@"QM@%-@$Òà@"º–@!ÔS@)Õ@'Îå@'šº@#Þ!@#%@*—ª@+_Ÿ@%‹Ô@"€@$ &@&ú=@&—€@(Aë@"æÏ@(ø‰@)Å@%{P@"¾ƒ@%Pæ@(Xª@'Zh@&Q÷@€¢@¸×@MT@*Hâ@%Õ½@%Jõ@ÅŽ@pN@î?@$ 0@$Ïï@(„Å@*MÎ@(Š†@#m…@ ÿ€@"›±@$Ñ@¹ö@Gƒ@$è@'1¸@&gZ@&sŠ@$ߟ@%Ç8@(¤ @(¼ö@&Œ@°8@"ê@&rV@'DZ@' ›@! -!@#ù@&Cà@ÂÓ@Ù¤@"ûû@&Ùæ@'Vù@(:ž@(»Û@$“^@#ad@$©Ï@'rî@&§Ü@$gz@"£t@';Ÿ@'“u@'î¬@%o@%FÇ@%‘Ú@)­@(%Ñ@&kü@$N@% ï@'é@'”@)=ù@&c@"ü@*ý@&ê@$ê‡@"‚ÿ@5à@º:@%º[@'a@'„Å@#ú@§„@"̼@'Fû@(ä@&AX@ ®@$?±@'ÈE@%êY@%ýÂ@#Kû@±²@G@'ži@) Ó@%q'@ þW@#‘S@'£B@&š£@&êÏ@' T@#˜¬@$|@$›@'\{@(:¹@%vz@ ƒà@#‰@%z@ lž@p§@"ȼ@ã¬@Š9@!½«@&ˆW@&¯T@#oü@#³@#bÜ@#nU@%ÎË@&Ó@$ -š@$Q5@"„`@$+@'lN@%Éì@!‡Ÿ@!ôq@!p„@$1ß@@Ð:D© :r.!:• D:¶Hd:ÝO:ýX;‚Í:òZ:Ù÷:Í i:Æ (:³XÛ:ï:QK:;Ç:!æ:Fc:m¸:ÅeL:ô Ž;¹;ò©:è/è:Ð×ü:Ávv:³„Ó:ªŽ:¶~«:å¾;VÆ;:e ;S‘^;\­;WžI;L­;CóK;=\;6Qƒ;2¯ƒ;;r¬;N;Zoè;Tu ;>‡;"1;Í:ÕTÄ:¯4:¦mü:Æ©î;Ú#;7¯Ú;a‘ž;uH;oj«;]-&;J˜;7P;'Ÿ:ùÈ°:¼u:‘\:fÉ:’h,:¾^:ó­;;=Y;€B;(¶;/ñŸ;(àÐ; ø^:Ì‹ç:‘ k:…Þ:¶ L;~;U§º;‰Í;šß³;áû;OZ;£Õ~;³ð;ă†;ÏÔ;Ò•ö;Òã};×¹Ð;ÞDì;ܪ-;Ðét;Æf„;ÇÚ~;Ï3½;ËÔ©;¹$g;¥ -p;ôö;£Cð;ªEg;ª[;Ÿù“;Ùç;ˆ"ë;Œ³h;–éæ;˜});$¡;{h½;g €;_þé;a%;k)~;€Ýº;‘ª;ŸüÆ;¤— ;™Øÿ;†×;qEf;w0v;‰±^;–´@;Ÿ£;«Ì ;¿± ;ÖƒÂ;ècÈ;ñ ›;ïŠ;åc;ÕS’;ų;¶u;ªbÿ;¢Á;¢˜R;­rÅ;Åí˜;æ)H;ÿSÅ<$=<x-;û”÷;îs;áÌA;Üçè;⣠;ì§Õ;îÿª;ãÝ;ÏM.;Á4;½ R;¼‚´;µ?W;«öÓ;­{;¾ëí;Õ{¯;ãa\;çÑ-;îƒ×;ÿa< YX< Ï<Àï;ìÊå;ëì<W‹<ë¦<Ïè<Ÿ¸<yb<¥<'%ÿ<:p)ò;ç{";ù™R<[ß<Í ;î9Ž;Ê6;µ d;¼åÈ;Õ8Æ;ñ5‡<äl<zð<fç<ì<ø_<~«< Ž<2í;úøõ;ó‰­;ø;þ";ù26;é0Ì;ÚÇN;ÛÝ);ìu½;üÔì<û;ü)';þûÂ<#< ‹&<§É< -:«<‰f;øw;õ Ÿ;îtÖ;ÛÓ;Ä Ó;¼QB;È9Ý;×xü;Û©;×});ÜA;ï‡<[<5{;û&¥;ÕkÖ;²};Ÿá;¢hi;·?~;Ö4Õ;ñDô<!¸<²]<¸£;ñËË;Ü·5;Óß;çÂÑ< ­ö<$b<,‚ï<³°<y;â2;áá´;ýC¡<;ÿ<H<Žâ<¶H<TÝ<#D!<5)»<$jàl=*…<÷þÊ<ÜК<ÂÝ<²*~<®Ô°<´sÆ<ÆZ¸<êg = gw=Gå=æk<óP<êMÉ<÷:ÿ=F‰= Ur=O<=é= ¹=/m=1<ä&5<ï‡q=ƒž=)úé=@_g=Qäâ=cç=pq=oÊÒ=]Ÿä=BÉx=)²=ݧ=š<ð¹2<ÿ=G–=[= = !¨= ©¬= .=/?Q=;rÊ=I´£=^6=oÅ=rí¹=bÿ=CÄG=%¶£=ÄÎ=5ú*=]–Ÿ=€e•=ˆš=…ïÃ=ƒ«Å=ŠFa=–Áè=Ÿ ½=ž`»=–*8=†`r=_Á=7ÁÔ=)óÐ=4¿=@íÐ=DTÄ=G¢¾=X>=t =ˆAÑ=“§‚=™s¢=–ëü=Œ–ã=^=mÄÁ=fà[=bu¡=\›N=Uõí=KÚ=@´ =?Ä…=Nø1=f¯Þ=yö=~|={ã\=~¹y=‡¥%=“Î=ã=£@=§h¬=ªè=«-@=§ÄG=¢ï=×_=™‹=šR‰=¢‹ =«×Š=®š=©á'=žv=œŠ=…òÁ=ˆ’L=•?=¢œ"=¨óí=§ãp=¥7$=¢þj=žÁ=—à“=ŽÇ=„­ˆ=€„4=‡3=’ =•>Š=’?©=I9=„°ò=o]=UQÊ=H­†=RÔþ=p¤µ=‹‘Œ=œ‘•=£{G=žB=”AŒ=Á=”¥æ=ž·=©‹Ø=³Åy=½DÙ=Âh=¿RÔ=µz=§sp=“÷p=vË=I|Ú=7Ö~=AôX=PB=RP=St…=h˜0=ŠPÿ=¢f=³$^=ºù'=¼=¸/P=¬ª=›†q=†Øæ=^Xá=/#=ÉÏ=UB=)=7p=^Ô=€zÓ=ŠÄš=ŠâP= ×=ml{=hóÌ=jdI=aô–=PþJ=<Ê#=&¨r=2/=ø£=ä=óÉ=Ÿ=+=Nå==l7ç=zUø=yX=l“e=X«¶=B¼j=-£/= ¹=I=‰œ=ŸH=%/=1cË=\u^=|L=†G=‘&÷= D#=¨½2= Çß=Šy‰=d˜¨=MîÙ=Yý7=wú=ˆ¡Ö=Œo=†è‹=‚ò+=†=#=‰)™=…d`=„/L=Ýx=£Kø=²¬Ý=ºŽ=À [=ÆË=Ç–å=Àn•=¶bì=±–a=²Ä–=·/î=¿4>=ÉÀY=ÑI/=Ów¬=Ó=e=Ój-=Óþ=ΰñ=»Ö®= KQ=Š -†=€¡=gô=…R4=Ø™=šñy=ž‰ˆ=—üÆ=Ž©<=Œ -g=Ž †=Š½Ý=y.=bë=qÚd=’ õ=­xM=¿ =Æ-×=ÇùI=Å_=¹Üc=§q”=›Êm=¡3Z=±FP=½PŠ=½Æ¿=´^a=¦†=˜l=‡É=…Up=ƒF=„ð=ÂÑ=iäP=IG†=7î¹=>•ÿ=K,8=G±Ñ=7«=-Ðú=7Æ=N!=e݉=~z#=Œ>:=“îg=ʇ=‚Ë=kÈ—=eYm=y:è=ÿ=ž:î= O=•ˆ²=… £=nu=jÆl=„*=™v¹=©S¢=²B=·ò¬=ºÛ©=¸0K=­‚=œ’z=¦=›=ŸD=®Â(=¶ò=°ã =Šº=‰kˆ=€nµ=wM³=aý#=Oõ=\„=„… =šæ=£q”=Ÿe=šNA=Ÿ#=¬ Ý=¹ö€=Äåž=ÊÕ&=ÈrØ=ºW‹=¤J|=”¬®=”<^=™üU=™øµ=’NH=ˆ²[=‰w£=œF=³ a=ºuh=µ­=³üÎ=µÔ=©»R=KQ=u¹=yíu=ŽY“=ÿ}=ª!h=¹¶=ËS=Ó^¹=Ì–¤=¼¿=°á<=±¢Y=¶¦ù=²­=¨ž³=¦<=°GT=¼ƒ =Á7 =ı=Ç!=Àÿö=³»=¯=»××=Ð#ÿ=Ýî,=ßÈ«=ÙwÓ=Ò‚>=ÏY.=Ï“T=ω=Ëót=Ç(7=”„=·üÎ=¤üæ=’d•=ˆ‡Ê=†°Ó=‰í6=ŽN=’ Þ=e==„"‹=dw—=>T¾=׿=Ó©<â¬y<Û<ãj<êñâ<ñE=Dƒ= =;Öé=\]¦=tèR=~Ö“={á"=p7Æ=_©ø=\,={Xê=—,s=¨f†=¬@Ý=¯Ú=½Ý}=Ð@=Úd4=Üý³=ãyŠ=îL=ì$å=×\/=½Ëˆ=­v=¥8 -=™c-=‚¿a=VEF=C =JÛ?=Ts=Lñ#=5k=s[=Ë=fô= ¬–=#Y=F£ä=n$=‹¹`=£>?=»˜=ÎåK=Ûòƒ=æpÓ=ðÍ=ùƒ>=ú=òµ‰=ò×]>Í> Ó,>+I>U¡>}“>Ôj>æh> - ->Æu>Ö¡>&>*©u>'É|>!´‰>Ï>r*>@ô>ý…>'xŽ>9c™>E>>Ho>AE*>2Ä[>(Wï>)îx>0YŽ>2i8>3ò>6ù•>:¾þ><™ >A›>IÆÉ>TŽ±>]‡:>^È2>Xzó>QÖ>LÁÕ>EÈ ->>~Í>8¸¡>0æ>*ç>/ÚŠ>BÇÈ>Vt>b¬B>`«¼>Iš®>'n­>ƒ;>m%>»H> -'h>$3>Iœ>h¸V>xÆÜ>y¼>o}–>cy%>[N>T¢q>EyØ>+ÁÄ>±>>îx>"ÊF>=°L>VÃ>hK>sû>v¬7>r#×>e^Ê>X@]>T.º>THR>P„>LÞU>Rf¦>\Ñl>_ˆ>P&˜>5Ä>)MV>7À >Oº¬>]‘>e}>n¡˜>q3Å>a{T>L¦Ê>LW­>_¤ò>j×¥>\bü><¼Ý>!\Ô>.>4)B>Xÿ©>uqp>{‚â>t„Ó>sÖÈ>{(¥>#Ó>†!Ô>[>™Å>œ ->–>.>Œ´Ë>…Ã.>…Uí>‡fâ>‚ÞK>qÿ¶>fJ>cû>[ ã>I‚½>8_Ù>5žì>D ³>X¸<>lG;>€ÜÏ>Šv¾>ã>‡×Æ>}Y!>i“8>Z’>Uñô>_ù)>lè>oôÔ>mJT>mD>k‰>g‚>g§>kú>m>nU[>x³^>‡“æ>‘Ð>‘ͬ>‡¤@>w g>h9¤>a,N>ZäI>SÁx>Q>W£>ed²>vÀá>Äó>……)>‡M5>†9„>‚ÐI>sÊ_>S»0><'o>EœQ>h»>ƒž¥>Š`>‰­ì>„®×>~ÑM>yÈH>yR>~!¼>„W¹>‰Lý>ŒÚŠ>’{/>šUÞ>Ÿ>ŸIY>Ÿü >¤X>§Ü0>£Ÿ>—Ѳ>Ž—Ì>‹#†>ˆC£>†Y>ˆ›G>Šï>˶>d>Nt>O Z>`F>t»r>€äà>†nv>´>˜;ý>˜®â>’ó6>%Í>“Ïõ>™Œ>™"J>’ >Œ•m>Ž¤þ>gí>‰ïÏ>‰Wm>”•>ŸÜ¸>Ÿ“`>—–N>Ž¸m>… Ó>uŠù>gmÌ>b–Q>bÝt>gø>qýl>z5Ú>Ï ->…rF>gj>š¢~> Gv>Ûå>™@ó>–/N>‘NH>†ïâ>p>YË2>\ë>oP¼>z ->xb‹>nM”>[ä|>A¥Œ>#^>qÁ=Â~=<(=ˆÕ=±l¥=òyæ>Nò>3p>>ŽY>AÉ/>JÝ >[8e>l²‰>}³>…üâ>‰kš>‰…Ÿ>‹a5>“U>¡³Ë>±\>>·Ò©>°OA>¤7>žÅ¢>Åq>•,*>…½á>u>cçÓ>LN‹>As>X¸J>y¨>Š(¦>ˆ}o>ƒy>ƒ‡n>ŒR6>›&>ª—V>¶y>ºk>·cD>°ôK>©ú>žF½>Œ4>lUA>S}²>NSF>I§ >O¹³>r6z>’7œ>§(>®ø†>©]I>Ÿw½>˜À¶>—®þ>š¦û>šµÀ>”Ùð>Ší>r˜}>JJ >1Þ½>A3Ë>tE>“ìI>Ÿ›j>£˜³>¨>§>>™‘b>ƒ˜<>k-´>nP}>Q+>ŽMn>™ån>˜¢:>ˆ‰9>o¸j>d¢&>w$Ú>’5ú>®:e>Àmµ>½V>¬©1>¥x^>µ–É>ËcË>Ñ•*>Ê®Ä>ÂÃU>¾¤=>ÀVi>Â×B>¹Ï> ÚU>ŽE‰>˜¦U>¹æ5>ÓáÔ>Øp[>ÖZ>ÛT>æ5‰>òëN>ü\½>ö«J>Ú%µ>¸ f>£,î>˜Ø¤>›~>°cþ>Æ¢[>Î;>Í>ÍôD>Ðrú>ÜH}>íÉ.>ìq­>Ϻ+>±ç6>ª°Ç>µZ»>Ä]Ñ>Ó.>Þ¼Ë>ß >Óÿ#>ʘú>Ìt[>×1¿>â§>êŒz>ïäè>ï€}>åŒ>Ö¿à>Ò›Ñ>Úá›;>áä>Ù}>ÊÙ>¾  >ÅLq>Üн>í™í>èêX>Û×>ÐÎ+>½›>ž‹>‡Áï>’*Í>´v->Ïbò>ÓÕ“>Êa{>Ã0‚>ɱv>ØÊ>Ý@>ÒÀC>ËKæ>ÙWq>î‚;>óvl>çt2>Ø+>Õºž>Ü!ý>Ð >®{ö>–ƒÆ>–;—>P>§Ä/>ÃÛa>ç >û >þ8ÿ>ôCÓ>Ý.—>ÊðÀ>Ñù™>ëx,?¢?>¿>ú#Å>âù[>Ò ¤>Ða=>Ô«‰>ÒX>Ì´È>ÍFÂ>ÑtV>Ñ\g>ÖÙß>çD_>ìv_>×Ç(>¹¬">®ü4>ÀÇ×>ÝöK>ôÐÿ>ù—m>é±>Ó93>É’>ÓÇO>ë ½?®Œ?Å(?2M?u?›:>þç >ýbÆ>ñj4>Þw->Ï×ô>ÎU>Õú>Õk >ÊÂ3>ºõ|>¯†Ô>³>Å+¾>Í6J>ĸJ>½é>¿è·>Ãÿ>ÄÎh>Å÷á>Ê&[>Õ7+>àɲ>å²>ë™Á>øaw?77>ÿb>îûM>Û×>Ó}a>àM3>÷æè?S? †?ÊÒ>ýÿd>é5ô>å ½>ö€¦?’Û?J >õ¯>ßZy>×Áü>ç?EP?jö? ?–Ú? -!†?í ? þµ?{ü>íÂ:>êí>ói>ù…}>÷¥w>î™$>è®^>ï"Y>üÛØ?Wº>þçw>÷„>ÿ©?Ð÷? w•?&•?º>ÿ„Å>÷Æ„>â[Ž>СÅ>ÏÅ>Ú>T>å’Þ>í!*>èü>Ò–û>ÀÑa>Ï >û!Q?òë?ûˆ?¸™?v?…X? kB?_Š?³!?1Î>ýªÀ>ñÇ>ïZ>ù >úÄÆ>ìLg>ÞmJ>ÞäX>ó«Î? - ?ù¬?…”?bo? -3?²Ã? Ä? 9?yÐ?$Êc?1Æý?6òv?0Ãä?#al?›Q?"úx?-wm?.Qœ?,±?+Ün?(h?\=?å)?«?"¢–?uš? .>èu>>Ô-U>Õð†>ߣš>â¦S>ÝY>×>ÓøD>Ò'‘>ÖuÅ>ãóä>ï«“>ó˜˜>ô<>óÍœ>ö%ˆ>üú1?ü?¼>ýµ;>ûä»?f?ˆ_?%ÇÇ?)>Å?'ŽÅ?%w{?'}Ü?-¦^?3 Ï?6â_?6?-þº?([V?(a`?&¶é?"Šœ?ñØ?ÙE>üxN>äNE>ØÝ>×åñ>áàJ>è…î>ä¬ê>ÞÔ>Ú´§>ÙÕÞ>Ø -¼>Ód>ÍÐ>Íös>×|à>ßVþ>àkÑ>Ü9L>Õfþ>Ö>á?B>>ùvÄ?˜×?Þ"?3X?n>ýt!??i²?Í?%ÇÇ?&}J?!Ê‘?×Ë?äú?S¶?Æ´>ÿC@>èŽp>â)ò>ã&Ö>ã]è>ãÅõ>å"†>éð>õ$q?Ý??½>ûýå>ñS>ê^f>ð?S? ]?Ù?÷§?Ì¿? b~? yã?f‹?¯*?pØ?.|?"ñص?B&r?Eº²?GÉ6?GZ,?Fól?Iüä?N:J?IòD?9¡?" g? '>çôŒ>¼jï>££&>™)>”{{>•ß>KR>¨Š>¯åè>³*þ>¸>ÄC->ÙÉÉ>ñ?|>þfG>ùúo>èÐÐ>ÚÒ5>×:>×–¤>ØrG>Þ/ø>éó¬>óF–>÷÷>ù«…>úØô?-?Eµ?Ò˜?™/??-D?ì?æ—?²?ÅM?#-o?ºq? Åo>é@h>Êúº>½=Ü>¹‹>¼xÔ>ÂZ–>ÈHv>Љð>Ûev>å‰>ïw™>ý)[?\ú?©à?h¯?ÕX?)? Y?¿+?a?|P? {?o?Ê>ÿéw?5? ?)!?P?=e?"ix?!£j?ÑÌ?[?Ò?At?‡?µò?V?ýö>ü·1>ô³M>ôkÇ>þ’Ç?=Ù?}x?ó ?ŽW?fê>þø³>ë!£>æÂX>ú9;?»Ò? “?]ý?]ó?Ö$?Elc?J˜_?MŽè?J«E?E(´?Fd¹?HÝ^?H¢å?NõP?\zg?dv?`¨R?[G?\ð?dI?kv?mûŸ?r69?vÕ?s“"?ik?Yˆð?R[O?\î!?n@?s›¢?q%]?zà ?‡`û?Ž“G?’ë?‘ý»?x?„P£?}ZZ?„¡?Šsb?„ð\?y?zw?„’?ˆãÙ?¾Œ?”}u?˜÷-?›¬Î?©õ?Ÿ«À?¤‰u?¨,-?Ÿj(?‚rK?2"ì>ßÕÅ>£¬i>—ùö>¡w>­y>±8T>­éM>«)K>­)>²ˆ<>»‡a>Í¿·>æ>ñw ->ëR[>åq.>êØ‘>õˆ(>ýîÄ>ÿ,Š>õéq>èÚ>Ù¾°>ÑÔ>Þ|>ø„¾?Ëå? z“? ß?m6?²?ùù?:?±J?[ß?»?ƒD? ð>ô£o>ÙU>Ø!Ú>Øh|>Òð¶>ÐXn>Î¥Ó>Ð>Ü>é6á>éqi>Û£ >ÎÝC>ÍS>×…>秔>òµ\>÷UG>ùM->ù.Ë>õÁ^>÷ Ï?¹?‚¼???Ê…?`?¥? 1õ?$°È?'­…?#uñ?† ?zÍ?Õ•?7`?‚~?"/ð?9ŽÞ?JŽç?Seß?Th>?KäÍ?<à?.˜¬?'dù?)­Î?3ªv??†j?I¿[?P+?SbÅ?U{_?YDœ?]p»?YÌ®?I¡V?<·Ö?Bc@?K„,?QVF?Zƒi?^`Ù?ZËÞ?_ì×?h K?f}×?d¹i?b˜[?Qn5?Cµ ?E¼?IìÎ?PJ?]šb?i5ˆ?mA?nŒÕ?oÛK?rxz?z\D?·Ž?€£?v¡–?rYé?oÉÃ?iù?lÆG?u.Ü?x‡?v²Þ?u`ó?q~=?kZ^?jŸ=?hÍ‹?gÚ?nï4?wâÿ?ƒùÇ?‹ð‰?vï?’ûÁ?‘ ?Œ\?§!?¥xå?¦O¾?¨4{?¥´w?Yž?‚1 ?-*æ>Ïè¢>™ó<>–Ðf>œŸy>›8>Øx>¬–>»–G>Å×>Ëý>Ðl >Ó³f>Òc|>Îo>Ø3æ>ð'E?:j?þ? <¾? B‰?»õ>û–}?ÓL?p?#E?'1r?(:(?&y?"Tô?æ?:>þè>î›>öY>þã?»À?xë?#(A?3DÂ?7É6?5žÛ?6ú?;·Z?> ù?AóW?JÜñ?Iwé?9²{?)}ó?'r?8Þ?Xd8?ooÄ?vâk?q#…?hQ”?jÕ?rË”?v{?m†®?Xì1?Dâ$?Cñ?N†h?T?Dâ¢?,|É?*(o?5·]?7/?<Ùé?MS+?T¨ÿ?Ur!?d…&?wÜ"?|+‘?oS?`â?Uõ?EuÎ?8íB?:8l?De¤?;’9?)Äæ?:Â?^VJ?qˆI?rìê?r†o?{q?±¿?_‡?}ùë?x-‰?vñY?›þ?‹Ÿ|?‘Ï? -w?ŒnM?Œ‰r?ŠÈ?’Æ?”˜ç?uL?ƒT?tX›?|íi?„ï²?ˆÙí?‘0?›H?Ÿž?˜†’?Œ ©?ˆß{?‰ÅE?…êL?Ín?‚Ig?†oî?‰ˆê?‰š>?ˆÝ‰?‰ -µ?Š"\?‰pU?‡Øg?ˆÍM?‡Z$?qžÅ?TœE?a§ã?:û?†y ?‰bê?æ:?£¿?Î?‹kŠ?†ïj?N?„3V?‹ŒÐ?V?‹^?Œ?‹È\?Šìö?“Å6?¢-®?«gò?®ÛÙ?¬Tè?¤À•?œãÁ?”?U?Žá?Œ??ŒOÌ?‹bl?‰5/?‰tÍ?‹4u?ˆZ˜?}ðÿ?s33?„ È?“Çš?™A?—.?šÍ˜?¢8?¢3?ž Æ?›ån?›4?œ¨k?žá™?žcá?˜·b?Ž§?ŽcI?“FÕ?”wl?Žô-?† Ð?†¡Ô?—kž?£t$?¥}?¤±”?žt?y³?‡û?Šþ[?‰JÖ?†<æ?ŽŸ×?™)}?žÛ?¢£-?§aç?«~2?«ê?ª”?ªš$?ª|Ÿ?¥Uý?¤='?ªƒp?­âõ?¢ ù?•f€?—²‡?—gÚ?‘±ý?‘óš?™“™?¢˜?¬ãþ?¸=Ë?Àx?ÄìX?ÅÚ?º7|?›±’?qTt?@½Ï?& ?Š5?!>š?!¾ƒ?Q??$?$¾Æ?*‘m?,ÍA?3‰?;%Ò?@C.?‡v?‡ƒ?‡‘?Š»ã?Ž?Ç`?± ?6C?’EÝ?‚ ?ä§?κ?ø?‹3?†å…?‰Œ?Žmª?‘q”?ãw?Œý?‡®?† ?Œ Ê?c›?“)¶?—HÛ?˜HŠ?”ÏÕ?ÁÔ?Ë ?“>¬?–¹3?˜Üä?›>T?¡?¤ÌQ?¢ìò?¢{z?§A?ª -%?¨ˆR?§n -?©¤»?ªä?£kƒ?”¾?ˆßñ?‚Êß?‚Úé?…ø=?‡£t?ˆø?‹_¹?½D?|÷?à?‘ai?‘h?’”N?•!?–Ÿj?–aT?–nB?—‡-?–Öô?—£a?››—?×U?£«? @o?¨?° ™?³º‚?±_Z?±Zq?¹(/?¿ìû?Â|É?Áy­?À V?Áûó?Á!t?¹o+?ª"{?œU4?•*¹?yb?‹Iƒ?‹Z?‹Ã¯?‹j&?Œá?~ ?ÿ˜?“Š^?AB?Alz?>·??:1?:”Ô?<ì…?>“N?@yd?BVÿ?EL?IAä?LŸÂ?OTn?R×e?V¥?Y¥?YY?Z?`ª?f Z?iT?d~,?X?M°?N¶¡?UËÈ?X®Ÿ?Q`Ü?GÍñ?Hr¤?O!ú?VFK?YˆØ?YJž?Z”T?^A ?cpL?g x?i£A?gxˆ?d@?eG=?g J?f7ü?f¦¿?kf?o -Ä?oè~?pNy?v†u?}}?~S‚??„Y?ˆV†?Œiž?àˆ?Œ´È?‰üº?…?S¤?}^h?›ô?‚´T?}å?|ce?€—l?„T/?†p¡?‡=ç?‰r¶?‹Ê?Œ–?ŽÛM?’==?”Þ?“Í?“y`?•“Æ?—d1?˜‘!?™° ?™šM?›ÛÐ?Ÿh ?šü¸?øN?‘Eë?—„?œ±ó?¡N;?¥/*?¨}î?«F?¬ó)?­B?«¸z?§Õö?¦ô?©÷›?«CE?§‘²?¦úP?ª¨C?ªúŠ?¦3?žú? Ó™?¬£Â?µíž?¹ÿa?¸ -?²vØ?´f«?ºo?»/ú?±ÉÜ?¥6?£0Í?©¾Ï?±4=?³É\?µk?´ÕÔ?²«—?´’ ?¹ùG?¿šß?Åÿ?Æv?ÇìG?ËN5?Å'?µÙÕ?³4'?½”Î?ÅL2?Åñ?­?¿E¬?ÅgH?о?Ñ8?ÉN?Ǩ?ÃU£?ºš7?¹£?ǧ^?ÒÃé?Ð>ë?Ïj?Ö¢Œ?Þ,’?Øs.?ÍT?Äö ?Àâ?Å Þ?Ö3b?Þ­Z?ÝÔl?çã?ô.ç?òñ-?ÞxÑ?µ«E?¢/?®íÉ?´Ó/?«Ç¡?£¶?–lª?zAu?T.?Bæí?=´H?C›?JdN?P?Réf?U«¾?\†?Z>û?K€?FÔ/?PU?\Ë?d_?fY?^Ç]?Q}l?Céù?8îI?7õ=?4'´?.º7?0Õ?5¦k?:Mç??Ž¿?Bÿj?CNU?G&?MH?O’(?QB?TðO?Vn@?S¸{?O?J|>?<Ш?.4¯?/z‚?8ã?@†Ì?>I"?.ÌÉ?%-?&'@?)o?,Š3?-q?/¶?5ª?:ÛÙ?=C?</?94?8Üo?;Qm?:3§?= Ž?Cfi?I,Ÿ?M±Ø?Ph?Q+?TÑ?XÀç?Xžó?R.Á?QÑ ?\åÔ?g]ô?p ?ri4?nø?gÉŸ?b@µ?iO+?r.ˆ?r?jÎ@?a°?\%n?]úl?bÓO?kþc?u¥t?{/H?1”?…±?‡r?†J?ƒ5ó?°`?~³³?xòx?€0?†f†?‰ì4?‹b0?Œ‚ž?ŒÇB?ZŽ?—ì°?›³e?›Çš?õˆ?¡¶6?¤'?¦Ä?§ ä?§D?¡¶ÿ?É ?Ÿ¯[?¡f?¦·q?©y¹?§þc?«8Æ?°x?±Æ?®=ž?²{?¹ÅÔ?À4??Ã’ý?Àyæ?¸L¨?µm?»+?À¢Â?¾iÇ?´e_?¯7~?­ ±?ªò5?£p+?Ÿ%.?£F,?¨^M?¬­?±k.?·“?¿5?ÃÔQ?Å]˜?È¿?ÍUõ?ÑF€?Ó»Q?͆?É–š?ÎëÒ?ÏÄÉ?Æiû?Àt/?ÄVu?Çy¢?Ê{?Êÿ”?Éh?Íž?Öëí?Ü}Í?Ú!¾?ÔA×?Ýlx?ꋃ?ï{"?ïK?íoí?îà¹?íâ_?ãÑ?Ùb!?Õ"œ?×É´?×Sñ?̹Ž?Àc4?Á~ ?Èö?Í&?Òc+?Õæ?Ðõ˜?ÏM?שÝ?Ü¥Æ?à[¿?æ5?äd?éìT?÷Z -?þ2 -?þ g?ö÷…?å©p?ÔÕŽ?Óð?ÝýØ?è3Q?ìd ?ðf=?÷’%?ü 3?ùñ?ð²Æ?÷'[@[p@nT@8ÿ@+@?M@9˜?î‰?ì/q?óM?èŒ?ØqÞ?ÎG’?Ç©Æ?ÄÙ•?ÉóÓ?ÑSM?ÒD·?Òa¨?Ô·‰?ÍÞ¨?Á]¹?¼9ö?Á¸Ù?ÊáÏ?ÔáN?ÛH°?Þ26?âM,?á ó?Ûèý?àØ2?âWA?ܺ ?ÛFó?Úz^?Ùš ?Üãp?ä§]?ëÔ9?ïÕ_?ò ú?ôA§?ù™/@¤@ ?þĽ@å½@¶í@ï@ d@ Ýg@'‹?øYG?éé?è¥A?ëQ0?äÒ?Û8â?ÚYš?܇?Üv\?â¶?뢆?ìÿy?Ï¢b?¨Ñã?¸ù’?ÒÔ®?×Ê?Ø5´?Ù¬Û?Õ]ž?ÒDQ?Ùë?ÛÄ¿?Õ•?ÍÂÅ?ÐJ¾?Û8 ?â‹?æ†?ìŒZ?ðkÌ?ì ?à,?Ò¬?ÏÅ4?Ö'-?ÖˆG?Ó:Ô?×>I?ÛË?Ü<ë?ØúÆ?ט?Õ„>?ÕŒ?Ý,?à"?Ýê?ÛÅ?ØŽŽ?Òß&?Ñno?ÏŠÊ?ÉuÙ?¿m ?»át?ÂB¸?ÉÄ?Ð:&?ÒIU?È«´?¼9¤?»F¤?ÀØ?Æg'?Ê#v?ÉïŠ?Ë2­?ËŠ@"$@%©l@&ö@-9@Ü@G›@%\ß@)CÕ@,R@/È@,³y@.Õ›@0Š@6Õ@5£—@0@1ÌO@4â@3’§@-¢Ì@'MZ@/—\@9…@<¸ï@AÞô@?Þ@3c@*F*@0ZÎ@7VÓ@6_z@59ò@6}Ü@5þ7@8< @9›Y@7Eb@8¿ÿ@;\@?Zá@@ç@CÃÆ@>ív@8´Õ@@Š @H g@I´@Dê¡@AŠ@C°º@DZ@FÛV@Jš@J2@J#ä@L¬v@HGå@AIí@KB¯@TGB@V®p@TkE@WÎ@\ :@ZÊ@MËÌ@&*Ê?Ý™É?¯²?Ñ´?Ä('?¹ÞC?¾¡Ù?Ä2?ÉÉN?ÏŸ?×Z§?æúÏ?ím^?é|Æ?ë>?ñÁ¡?û¾@£@?üuÌ?îBï?½´Þ?”4(?›ïá?£bN?œ×?š!{?ž?¤Rè?¥¶á?¥Ik?©^Ò?³¤x?¿p?ͦ?È’?ó}?È©l?Ê»ð?ÙPâ?ã ?ê’?ë¹Ï?Û -?¥Û?j<®?kb¥?uŒy?gž?dŒ§?l¢@?pr‰?s{.?~Ú´?‰Œï?“5'?•g/?—÷|?›Iž?švî? ¡‰?«vº?¸i?Â1?º –?¬-Õ?¯ 6?²ZÈ?­PS?µ¨?¿p?½ËJ?Ìw°?Ò.U?Ì6ö?Ñ|¡?àa=?ìÆ?ìÁÁ?ò«ñ@ê@g@ì2?ó ?Ý£Ž?Í~%?Ê›?Á.û?©?§% ?­I?¯^5?µH?±”?¨¥?«C•?¸‹]?º¦?·4˜?¿³*?Ð((?Õ2?×½n?ÞÚƒ?áÆÁ?é0?î«?âÞ÷?ÞP–?áú¸?ñÊÜ?òR,?éÿß?ô³?þ°Ú@±@8í@`Ó@*5@*ô@ʃ@ sá@ å²@t‡@Az@§E@Êd@Eº@"7r@ ÷@&WÄ@&Šª@o–@íæ@yÕ@)6@@&ëª@#È@`@#ÙÀ@+j4@2j@1@-Þ@&Gh@%Í÷@3b@>¿¸@<¬@2@6Ä@;¥@:>ù@4W’@0V>@4ÈU@4‰¨@7>@9œ,@4'@2Œ @9$!@?<Ñ@>5J@8Âð@5sÏ@BåT@C"Ë@;ÑÆ@?èR@HMú@M­H@Lõ÷@QEÓ@X %@OIá@Fþ3@Nòk@T3Ô@SMß@L?@HÙî@?Íâ@4~C@GI]@RU@@—@>p @M1X@V÷t@^@aŸM@e^¬@dA@cõ@fk×@jÝâ@gjw@]HA@]È'@Z+·@[Åû@V°*@P~S@ZYô@a‹@fÎÞ@eÏñ@YÉ`@Wî@fßx@nªË@kTˆ@g <@bü6@`Ï\@a×Ð@[ØÏ@Uª @UöZ@`ä@]X@T†¬@\"·@gµ4@lz@d#P@X»¼@\Ó6@gŒå@iµº@e Ð@[‘¿@`—`@f$ @c3ß@eœ,@j5@k8@l±Û@kê^@eû @f@iì£@_¼¾@ZY+@f¶i@mÌõ@m ì@dìw@_Æ)@d¶f@ež1@iOÅ@mû5@nYæ@hªÍ@eÃm@l#ã@qŒ'@mc@b¯«@`éî@`=³@Z,,@i* @r²@s³@tËÃ@uSF@r¤@r?º@qi<@hÇM@nos@uG¿@w B@z”­@|Ç1@xm±@po @rMã@v @y93@xö@u P@p&§@vP”@}î@xÂÖ@p4$@tó@}¢˜@{= -@x¸°@}„“@|xb@x-:@oã‚@qcƒ@|šy@|*@yµ™@vÎ)@v¥@}îï@~—$@~û—@‚Ù@ @XL@§—@€€é@}Lò@}Œñ@xæð@xvB@rY\@T¥ß@<þ,@Ifc@Tïd@[:Û@[T@Z™@Yûg@[Þ@]Ë­@YÙ7@[^ü@Xüt@\È@\Û-@SШ@N |@NB‰@T$@a°¦@fÒG@]%@D1'@4ìç@?¤U@Ip™@Iý³@FÄú@Bªñ@Bþ×@LÁâ@PqŽ@O@_@O <@Qí @V@T® @Mu@MóÆ@K3 @G-¦@L[Ô@A G@!%¹@ uÚ@-¿Ã@17Õ@"•g@yÅ@º¡@'Ôù@(õT@%4:@)ùK@*Ä@-.ÿ@2WD@2»ý@3îF@5¢&@61[@5“ˆ@,ê@-¦@8ñ@6…@):^@% @&ö”@&±j@&Íì@$Í@)F×@.p*@9 @>ûk@4|@0Ø$@@Kj8@M¬Ý@MÍw@MÚµ@Jϸ@KTU@Gþ@=K\@4ì®@(“w@J¿@$ž•@0iD@8!ø@7ÒÊ@3Áõ@7†n@:ª@9D4@;‰ -@>A[@?«@?3Ê@Ah@E @I@I˜®@Fwy@>× @7|³@:%2@<Õã@@_±C@b{Ž@bð‰@\Z9@X–Š@UÚ@WVµ@Vê@Xçñ@Wùe@_G9@hýý@gX -@cvå@c¦N@^:¢@\1–@^Bè@bÁè@ka\@p©,@qŸ@põÓ@pÑÔ@n¼¢@h @f @m@@oµ«@j†Ï@_k @e÷ä@nŽ@h­@b©¼@e^5@eÃÙ@eê@mó@p-‰@sŒd@pËÞ@t^p@xó@w‡3@{!@}2…@w„@~‚>@yäœ@oÓÈ@`B@\ä½@t¢@Þ=@ƒ\*@‚µ¿@„~1@…)@ƒ§u@‚H[@~´=@u̹@uÂj@ñI@„ª@„)å@„Šë@‡Ü@ˆ'@†u/@„#›@†í@ƒrp@wþŒ@t]»@€±ÿ@‚JÍ@ÿ$@ˆÆd@‡!›@„4Æ@†Bä@„P³@‰Ðý@‡ež@ é@vY@zÒí@€ìd@€16@J0@…¼×@…b@ƒµ¤@ƒÆG@‚@„ƒ¿@ƒ³¡@€š6@~5Š@†Á@…2{@‡4\@‰æÐ@†€,@ˆ,@‡+%@‚ëK@‡)ß@‹Eg@ŠŸ´@‹â8@ˆ¡š@†[%@‡µ3@‹W@ˆæ @‡M@ˆñ%@ŠH€@Žw@¨8@‰l@ú‡@‰ü$@‹¹@Œºø@Ž»Î@£@Šwî@‹Ež@Žyu@Œ—'@ŠQô@‡?;@†ö@…/%@ˆ:õ@””’@“_2@‡ü<@…ï@‹µ+@‡4š@†(@v¦@jI¦@€²r@‡~Ÿ@ˆä”@ƒM÷@…z@‡Ð@†oL@€i@‚t@†ÛÌ@Œ 5@Œší@‰äN@ƒ´î@ˆ\Ÿ@Ž"·@‹mo@†¶B@ƒ‡ù@‡Òê@Ž$Ã@‹…@‡Ÿx@…߀@‚@€ç7@Rð@‡è±@í°@‹KT@†¬¢@‡Æq@ˆšº@Šy¨@‡òÍ@„…Ê@‚ ™@„Ñû@‡µC@†'w@‚*“@‚÷ª@ƒro@€Ï@¹½@€³ù@€ˆy@€ÆÈ@~©k@€ë+@{5#@vÇÿ@kvš@l.¹@vö\@x9Ù@%;@„…@‡ Í@…€¤@„5•@…@ ™@t'@ƒ80@…t@€MG@z9å@‚ä@ƒ3Š@†uÙ@…Yw@€ÍG@y›§@v®Ù@>@‚ÜÒ@€Z@…ŒŒ@††@‡Bµ@„4=@s˜@y݃@ŠÚ:@‹ã)@‰@‡ÆŸ@‡ö@z@‚Ü{@„bc@lû@ì…@qÃà@jÙä@…L€@ŽøÛ@$Ö@ƒ*q@†.8@Œ½@ŠàÓ@Žýæ@‘>#@‘ö<@M@„Y @†îë@Ž—ã@Šx@‰'-@Š­ù@‡—ß@|úã@€Ëß@Áé@ƒ[@vC¯@C|@hŸ¸@c@ã?@nêC@kŠ)@löÙ@pB½@f±c@YÉ@YJÔ@[K¾@a±@kÅ@k ½@^Úk@U©—@Mç@[ˆw@`–@fSš@la>@pá†@pÉÄ@m!@qVÿ@x8N@x¸:@{4\@|&Ñ@paš@TIâ@+ß”@BTö@kú@sbÝ@iÿï@kU»@r=n@qÿÆ@f< @UWa@VÕs@\Îh@i»!@lk×@mZâ@kÚ‹@m6%@j½4@l®þ@lî@d§@MnK@!´g@ç@7ù@XX@a@o5b@zQ @|@|9J@{rð@výa@{-ƒ@€2€@¥@r@{ch@|²c@|–@~‚’@²Þ@p÷@tjß@xnÂ@€ @,ü@€çI@|ËM@}Üb@€Þ@}Å›@¦R@‚+š@ƒ‚@„î @†ñ@„h)@B|@ƒhJ@†—n@†¤m@†…H@‚‰ç@„@‡³Ü@‡w”@‡N4@‡#€@‡,@†Âå@‡AN@ˆé°@†îh@†5ª@†xU@ƒì)@ƒ@ö@ƒÕ‡@ƒ.@bl@yÃq@YÄN@ ¬@ ´p@^»P@xñ@à/@ƒ´Þ@~\@nÈa@í¸@ƒÒ¤@‚6ë@}¤%@†yù@x( -@gFT@{·¬@Ád@‡e@‡†9@„¬d@†bf@‡ž@ŠÍ@Šú@ˆ¡X@†ÁK@†o@ˆ÷ª@‡®w@‡ž @‹â«@"Ò@‹ã‚@Œ€½@‹[\@‹û@‡÷Á@‚E&@ˆÚÊ@‹š1@Šxm@XÍ@P6@Šdb@‹Þˆ@g8@ŽöÈ@ -/@ŠLx@`@Ž|y@Š¦b@‡8@‰ -c@Žžš@Šœ¥@ˆŒ/@(@Žïµ@¸g@’Èü@’Ôù@“Fœ@”bÚ@“î@‘•/@»@’O@“„é@fe@ò@‡dÿ@vOá@‚e@ö@•%2@•ž@”øñ@’`_@Ž¸>@Š¥.@„@’Ç@•e1@˜"ß@˜ ñ@”ôR@g@‰žy@³>@•h@–e@– à@–•I@˜ªŸ@š2@™Q'@—ƒ@†t0@lt¸@x 4@ƒ®x@€F\@u½Ç@v @xHé@uòª@tÀv@y -;@-¦@€ß -@€<Ñ@‚{@y¥@~‹›@ƒ]×@ƒ6²@ê}@„ -œ@ˆ@ˆ„‹@‰ý¼@ˆ˜@„.@„ö@†+±@‡?@„ô+@Ú+@ˆ¡A@†ÉF@…?í@‡Bº@†Ä¼@ƒöR@‰Ï³@†G @„¦2@ƒËÓ@€¥ã@zFh@r ]@€u4@†òu@‡í+@†ˆ(@‰­E@ˆ©P@ˆMŠ@‰’½@†—®@… —@„Á@…ʼ@†—Ú@€-@„@Šçƒ@˜Y@O7@zê@‹)¾@‰T¢@Œl@‹øþ@‹Y<@æa@‡‹,@‘9Ð@’:e@ŽÙP@ƒ´Ð@‚7{@‡‹O@„A/@†­¯@‰—@ƒ&@„uÈ@ƒ†¸@„7‹@ŠN”@Œ½c@ŽÔ·@ˆcé@‡â>@$u@‘ßj@‘X´@Ž§g@z@Žfy@Þ´@|@¢ç@ŽÙŒ@/}@‘É<@•-J@•~Û@’Ò2@’µ@@’·`@“F@“ˆC@éy@“wÂ@ŒÁ0@ˆ A@{Õ@}óË@­Æ@“É©@•wº@’0§@“1@•:<@Ž‰ÿ@‹aÛ@Žx-@‘þo@,b@ŽùW@…ÅB@Š•£@“ñ`@•‘@—å@˜nH@˜pÁ@•™…@•Mº@– „@’«Ó@‡’Ò@Šª@‰Ö:@†v -@þ~@“YŽ@’ï£@‘U@»¤@e—@´Z@Œ 9@ŒØ†@†0@„Ö9@Žÿ@‚z@‹~­@ŽÃ@ ®@üD@‘è®@÷@Œ1r@À'@Sd@ŽÄA@‰•õ@Š×C@ˆî#@‡ç @ˆU7@‚ -4@Uó@Š)}@ŽàÇ@‰?!@†¯ -@‘ÞV@ö®@ˆ}@’•>@‰À÷@…'À@‹ú÷@‹ªs@ˆ¿3@ƒBL@‡Áæ@Š9Œ@Í@†Gœ@‹@T@Œ–@‡å’@ƒÇ@„Ü›@Œ‹¤@ˆh@í@@‘V@þ¨@‹@:@Ž<´@‰ðæ@‡ 4@Œf@ÇD@ŒÁH@†Êä@ƒÏ·@†_s@ˆs¦@„c@ˆ­@‡2@€™@Ž[Í@Š6ü@Ž³§@9@‹˜@‹ÂÔ@‰Ñß@N@å@Œ@š@EÏ@Œz¦@’ôÀ@’·‰@Œ€”@‘_ª@Žêv@œ>@¹@Š7U@Œ¦]@ˆÑU@Š1â@Ž¥:@…øK@zÃ2@€Â@„Ž@ŒJ>@‹÷@‹9*@‹‘l@…J@‹Ð*@ÉÔ@‰my@‡Ú½@ŠR@‡*ÿ@‡c @ˆþ(@ŒDç@Œ§ê@‹Å@‹<š@Œ—a@‹“¼@„Tä@…Oy@ˆ/»@‚£_@‚˜c@‰Ñ§@‰§v@‰ð=@Œíê@ŒÈÖ@‘®«@Æ@‡h@Šhm@Š ÿ@†—@ŠÑë@‹uò@ƒc @y3@ˆT@‹Â@…˜Â@†í@Œëu@i+@ŠÌp@‡T@}@Žc¸@ˆD@Š)E@‹™O@‹ï@ŽpÄ@ÚÇ@‹[¥@†Mú@Š+@• ü@‘pS@Š/h@Ž¢¤@”'÷@.æ@yI@Žˆ@Žc@Š7Á@¤5@“‚.@‘òð@ŽDx@”@˜Tô@’{@ŽoD@‚Þ@•·/@°<@‰Ñu@“û@–V‘@‘_@‚’?@€×¬@©ñ@W@ŽÓJ@å@“±n@“X @’”)@“•@vC@ˆÊ5@ˆ‰@ˆï@¯0@” -¢@A@/Ä@“Ÿœ@”IÔ@”¶@˜­Ý@˜æD@”RI@‰6è@‡é@”r/@‘ö›@ŽŒã@’Ûç@– €@•k@’FŒ@“¥±@’¿÷@’èx@ŽV@Ž}~@—¨Ø@—ïô@‘O4@ŒßÖ@ƒüÜ@Ž=à@”nˆ@‘4@…ÑJ@ÿl@1ß@Š!ÿ@~Ò@­ˆ@‹¸<@ˆ¿@FW@Ž±!@@Œ2-@ŒLÂ@€Ïh@Ž­ƒ@“È—@–ñ@•4 -@¢¡@‚Øï@ˆÎg@eI@“ïâ@•¦E@“ò;@Œôì@†UŠ@‰'-@–‹@—©v@–ž®@wý@‰ û@ŒCû@ŽÓ@ö=@‡´m@„³ƒ@'Ü@qÚ@Šà“@‡‹ @µx@ˆ¼@„Ô_@….@‘‹¼@•òÄ@’ûH@’îæ@“Íç@‘ËF@Àº@Ž…'@(ä@ƒJQ@†à @” þ@—¶3@“•B@@{‰‹@„~ @;4@Œh¡@Ð0@”p8@”P•@‘á³@’«@•­-@’2ä@ì¬@’D>@‘¼š@“¸@”Ú2@”Ú_@ŽÞ@Ž‹V@ן@’óí@ U@ˆM@¯‚@–]š@•–á@•ï&@”Š'@”tg@“(@’ùO@–BC@—‚±@˜:\@•Bô@‘ª@’ëõ@–KK@—Vl@•.@“¹@—zñ@–ðø@’ºÁ@–kâ@˜é$@“ðü@ŽF @“3…@“çJ@’­@ŠüÔ@‰1ë@ˆîØ@…*@†3Ð@ˆR=@‚bÛ@I”@‡½@Ž–ž@‰í@}?ª@g@‡‹¯@‰‚L@ˆÇ@€3@”ä4@qî@Šì¯@ŠEç@ôO@ŠvP@>†@’-!@„2@‘%b@Ž»÷@ŽÐ˜@‘&@’ «@ŽYå@Œµf@Œþ%@hÜ@’@®S@ŠÀ @‹\Ç@#3@J@‘&@ì@ˆë¯@Îë@µ*@Œn@‹É?@Š3s@‰Z@|W@–@•Y)@»@’ç@“ƒ§@‘f¸@’¹œ@ŽW@ˆ“²@†?ð@߬@“÷_@–AD@‘©‚@Š5ä@ˆ£m@À@ˆ<ó@€ä@ƒ}b@‡ž@ŒP@ˆè@“C™@O¸@Æ:@Ž¶É@é=@‹@Œ(@ˆÆß@Î@‘'m@‘ì¨@“¦T@– g@™Ý]@˜-h@ìç@ @’q@ŽÅ-@‰ñî@Â@W+@M¬@‘§¶@”Ó@”][@–ìy@•’@Sà@Z@’(@”»Î@Žì@‡§Á@Ž†ƒ@•­ @‘o.@ˆEò@^@”¬@’ @ÍF@Žc@ŠPƒ@‹Š @“-@—¨Ì@“` @“ú°@’ŒÆ@Ž£ï@ûÊ@’Nb@RX@‰£C@Žn}@Õ@)J@¥@’Ü{@“@/@“õ‹@”‚î@Ž&V@‰—â@‘_-@—­ž@–p@”zÆ@—oÔ@‘q @“# @–åX@™‹@˜lS@•Ë@”w)@–3Š@’b{@”an@–Ò@ŽÏV@æ\@%›@Œ­@’‚¬@’G¬@aØ@‘.£@•af@“Â\@]ÿ@óò@“›@ŒãE@’)W@–ûŸ@“¸y@GY@Ž¦c@“ªž@–d@“Ù`@•n³@•Ä@“Y‘@“^@•45@¬@Hd@‹ÉÆ@Šñ?@Éæ@”¡n@>~@Î@‰zV@‡§@YS@Uò@’$@”tf@’ü@–í@—è¦@—mŒ@•6x@”þ@“=v@“R@@–c%@³@‰vž@“²@—¨ƒ@–šŒ@ƒ@‡Ùd@‹7Š@~@¨@“z7@•%G@—b@—ûn@”íÈ@‘ÊÎ@6™@”}×@–w@‹+@Œz @êÚ@“W@•xö@“Ð@•¡¶@–CD@˜,Y@•éZ@–CY@™ 6@šWº@š·@–;@’?@“^©@—o@“.Å@Ž*«@ŒˆÈ@•ë@—/H@—·@—Ÿm@˜&$@“Å@” ™@˜¬@—ÓT@Ž‘–@Ы@—)“@—÷Í@–6l@—1È@*•@EO@”/@—(‰@“á›@’÷œ@”v@˜»ñ@—›@å¼@”@½@–F.@”F8@•Ã@—Gƒ@˜f,@–@–ç&@•@u@”° @•&@”'@Œ%æ@“dn@€°@‡«î@|Y@‘¦@Œ.Û@‹ÌU@•¢@”a@”õ·@–r¹@—î–@”Sƒ@3Ù@;Y@—Oü@•Ùé@–Æ­@–Èu@”YÇ@’@”Ôº@Œ°ê@Šp @Œ|z@í©@¿j@Š«5@‰š@Ža(@‘Ã@ºI@‘€G@¹@“®@–\q@“­@<«@’ Ä@’q@#«@‘x°@’Èâ@’s @Ž`?@‚™Ž@„¹@‹Ào@Žà(@Žõ@Ž>Ë@¶Ì@Ž>@o—@ŽÖw@ŒÃÐ@Ž±@þî@К@‰F­@}XŒ@zµÏ@…ƒÂ@†ª³@†D@‡ª@€ú™@‡ö!@‰¯ @ˆô–@‰æê@ƒûE@ƒ!@¥ç@ˆ†—@†ø@ˆ6s@‡ºö@‡žê@ƒê@‚Î"@‡¾¾@…jÔ@„²¥@>(@ŠW@é@‡Iß@ˆ•@‚[ã@…·ì@‡J!@ƒ–(@†`(@ŒH†@‹ä1@„ƒ¿@‚8Â@‰5¥@‹~@‡À=@©á@ƒ÷@‰ÅT@¼$@…¾i@„žš@Œæ±@ŠcÈ@†¼n@‚/k@‹' @Š<^@‰P -@†J\@ˆ0²@‰ãu@ˆuv@‹¬@Š‡í@ˆÁ‘@|iP@‡%Ü@pª@Œ)@‹f>@ƒ@‰À"@ÕS@ãH@Ž…@ƒ%@ˆ&•@Æ®@ŽÈç@‹‘@}æ†@…aÉ@‹@›@Œ@ˆF@†L×@Š ÷@Ë%@Œ”é@‡u@†’"@‡wˆ@‹Þ@ïc@†Óî@‡˜†@ŒU±@ŒS@‘â@d@‰@-@ŠTÊ@‘øâ@Žô¢@Œêÿ@‹{µ@ˆ6ü@‡Ê+@‘dM@¨ @åÔ@‹äü@†ƒõ@ƒˆ>@Œj @ƒu@@~ @…q¨@‰;'@‚Œ1@Œý\@’%ò@‡Ü@ªE@Œx£@‡aÝ@†Â@Æ@K¾@‘1@‹ü`@ˆè @…9ç@ƒ -@Šeï@Ž.@Ç"@ŽÉk@…Ât@…3@ˆKa@ŽË@Ž•q@3@’©@ŠèZ@¨ï@‚ñ¼@¨z@‰ ß@„G@‘µo@ŽJÑ@ˆ|î@…¤å@…ÉC@Ž1…@‘aè@‹@‘ÁL@ŒH@‹€@|Ó¬@„ž›@‰—@‚H>@ŠÎ$@¬@‡Çè@‚*Ê@ˆ‰Ë@‰@ã@‹´5@Šù@†çS@Ž3@ŽÈ@‹°Y@ŠÅV@Ž`—@‹Üˆ@…®(@Ž @Ž @­b@Œ¹@@†ÂX@¼³@‰q@õ¾@‹è@Ž<Á@‘P:@‘ÖÆ@ˆÞÛ@Œr@l&@Ñ$@‘š€@‹;s@‡hÁ@’c@Ž•š@‹T#@ˆ˜ø@‰>)@I@‘2R@Œb%@ @’ X@Œ–¤@Šë1@¦ò@ŽD}@u—@ ø@‹S~@Ž+@Þu@‹‘@ŠÞ¤@‘µe@}ô@@@Œ²S@ŒÉ@“ -7@“Ïc@Žq­@‹œ:@)Í@žj@gâ@÷1@‹ß6@‘q™@’5ƒ@Ž@‹¥X@d´@ðÁ@ØÒ@Št¤@G6@=à@}i@…I@ŒkÅ@÷0@pº@‘7é@‘¢O@«!@Œ~×@Õó@ƒ¬@À_@–&@Œ -~@=,@“ì@ä@Ž^@Ž{Ž@ŽÛ¿@’%u@‘7þ@ˆ–@~À@Ž\ @!,@Ÿ©@’*u@ŠI@Œ‚t@†x…@†vô@Ž1ê@‹ßÀ@{óÅ@ô¸@ -Þ@:Š@Ž9@ŒfÉ@††@ŒX>@qt@‘+k@€Å@Š/¨@ð@ê#@?ì@f³@ŒÞŠ@x`K@ƒÆû@‘Ô@’:E@ŽÛÁ@Šª @,*@Ø”@Ï&@+£@D@†@¤+@Žš@™ý@‘y9@Žé<@Š"¾@ @Žh§@p2@g¼ @Œsh@ˆõ!@‚-7@‹oI@ر@ ±@ -#@T(@Œþ @Œï@A.@@^ @Á@‹õ*@Õ7@´¼@+5@‹9@‹©Ý@‹$•@Ç_@‡mE:kµ¬:ñ:¯ÉÑ:ÔH :þÑ;îN;à;Q:ô&Î:åÎD:Þ^:Ê%ö:£tq:pø):8–(:4jÝ:hœ::¤±æ:ÝúÒ;» ;Ò-; -æ%:øÅí:ßaj:ÎÔù:¿Âr:µá:ÁGw:ðçó;2S;B8™;\{;e}U;`>™;T…“;J£;C$‘;;0Î;7lI;@žË;T Y;a¨l;]9™;I9ç;.ÆG;Lå:òðO:̃ -:ˆ¢:á;"ù;C#;l=ƒ;~·;wõ;dâö;R O;?!.;%`²;ž”:Ïf@:¥ðþ:˜On:«Pf:ØÌM;¥o;¥9;&òL;0~;6Â9;/)æ;¸¥:Öߢ:šÓô:1:è¯;ž;_Ó;Ž°›;Ÿ‘K;¢U¤;¡ Æ;§ôˆ;¶Æi;LJ˜;Ò6€;Ô”Ç;ÔòØ;Úg·;áÛ„;àè¿;ÕP$;Ê£;ˬž;Ò$â;Íq ;¹c';¤6Þ;œY¾;¡/ì;¨9ë;¨œ};ŸA;ž†;ˆ;Œì;—–¹;™~U;Ž ;|ÂD;hÑ;`ŸÕ;a;iì‰;ŒË;åÏ;Ÿ?Ô;¤Ø ;›bY;ˆÁ ;w¨ú;|ü[;‹§;—…Ì;Ÿlç;ª½;¾(«;ÕB¼;è)¥;ñóý;ðå5;åÒw;Õ/Â;Ä’m;¶bÝ;ªÔ:;£cˆ;£5;­êc;Ç7;;è¸W<Bb<mÿ<#Z;ûìô;î J;àáÇ;Ûkµ;à|È;é—C;ë ;ÞÝÇ;ËÓ,;¾¨i;»}n;º¥;²kÕ;©#;ªÖF;¼‘f;Óiv;á€*;æ¢;ìÏS;ýƒ<Ï< }‰<`;ê Ô;éáé<KY<;Ì<$ <Ø<XÙ<Û„<#³_<8[Ó^;ÏéÁ;¬Ï;šÎ¹;;°Áì;Î9;ç;öI;ûu;øÏ“;ë‘1;ÙM™;Òqg;æÎ< -òþ<#“;<,Fo<ˆF<1w;å×-;ä”;þDY< è <ø.<ã<i_<sˆ< <2®<·b›<µð9<¯ ­<¨Þ]<¤r<Ÿ`x<›ù<žyB<£H< @<‘ÃR< -ó˜<„4Á<ÝG<§›Ç<Ä'<ÝŠJ<ñ,w=™5=–= S= -î<=÷›=íÂ=!tv=&¼*=)Ŭ=,¡=1Œ=6'=7=2;š=,$!=)ú&=,±=27©=5ùR=3¼H=+u1=èÈ=¨„=Bl= Î=jÍ=|Õ=ÿ= k7= Až=õß="®´=-„ã=/Ià=(ÊU=! ¹=© =!o=%=*Q=,g†=&þf=V…=4<÷b°<ð€ï<ñ\š<ì½<ÜÂì<Îcõ<Ë!Å<Ò*<ß®<ìÍ·<ñ• <è¶<Ø{l<ÈD<¸”Â<«w<£R{<¡°"<¤¹§<°r;<Çœ©<Þ‘Ž<ã8a<Ô¥¥<ÆCm<ÆÑù<ÑO<Úl<ápç<ì›E<ùgt<û;£<êkÇ<ÑþE<ÇMD<Õ•P<õx-= =ÉÚ= w<=+[a=2û:=/ª‘=!;=ë=»á<èË<ÕÖv<Ò*È<áÔ<ô¤ú<ûsh<ó8Y<éÛ1<íIº<ü‘=®= Ý=] ='aH=2 •=2[^=&ú5=Š|=!X=o=,=.8ü=C=Iqš=Dè{=DÈ=O@ä=^si=d°•=_ªØ=SJ=>9="Å°== Ÿ¿=Tˆ=݇=E{=jŸ=%=8=:ÀÌ=OÛb=_d=e†ñ=`X·=QÍÎ=As‡=6ï=0ý©=*€ð=$ç=¾}=¹=Á=}€=“·=,"]=7ÒË=;Ó=<´C=AÈ]=M–=[¡I=gIœ=p[ù=x -u=|ÿ=y (=qŒ_=ià=bfÎ=\¶¡=``=oÔ¾=~œH=€°¬=w_=c¢=L&=@È‹=IÒ==`Ú$=vq…=~ðß=|Åi=x÷Ø=tÄÙ=lß‘=auÛ=RªZ=Cl¦=?ÈF=Lj2=YßZ=[wÊ=VÊ×=QKË=Fø1=5à©=#½à==#Wã=:…=Yý=r¶‹=y{ö=m@:=]äv=YÃ\=b”'=q)´=‹=†âò=‡¶=ì´=‹Ò^=ƒÌ·=smŽ=W”Q=4Ë]=VÖ=,b=ÖÔ=!~=#u=)<é=>”=_|=~UÍ=ˆQ=‹H£=ŠÊÂ=†¼:={ñú=c¨–=Fç‹=%ëE=8<íw™<ò=ãŸ=„Ñ=1Ÿo=Fâ»=TEÔ=T—ë=IXÓ=?Bš==A¾=:ó&=1°(=#í=`´=Ýå<ùµÚ<ôo¨<ôâd<÷|ô=[i=ÿÂ=. -$=A‹á=Jë.=Iµ£=@=0á4==š=Š=ë=zÏ=¢d<ø4”=òå=@¢=<÷á=OÌt=ZAµ=kAã=€Àú=…‡ï=}1=^½.=B2ˆ=8“ß=C³Û=WYM=em=eö°=\1=VÓ=Z»=\•=WÙ=X¿ß=jœm=‚Ç­=^=’â=–žg=šN=™óñ=”E%=ª(=ŠèU=‹eÄ=ŽEŸ=•Z=‹î=¢J¤=£_B=¤)œ=¥ŠD=¥‹M=Ÿ²=ŽÐÞ=uTN=Y$H=Or=Qc¾=Y‰=gó=sù×=v Š=l—=c‡È=e’=iÔÐ=`«"=I¯)=<~=M?¶=tƒ==¹=˜9=œb=œ@¿=™W³=¦E=„i ={þL=ƒ6s=Ž{O=– 7=•±˜=Ž”~=ƒ×L=s—v=ev=\ÒJ=\ÉX=_U=X¨=Fa=1fù=(ž¹=-âÚ=1ã`=)y=½ -=!ý=29Z=G ‡=WØ“=gš=ui4=zO}=p‹=]/°=Na]=M‹ø=]ºx=ve4=„g=„sì=zžÃ=eÓ6=Sé6=Q@_=c"é=}}=‰,T=ì¯=”>=•1=‘8=‡A=vϺ=h°ü=p´N=„-¶=(;=’È‹=‹¨î=wè=[‘=O¯°=GÔË=8V1=.ºÇ==„ì=_çX=~;=ƒÿÜ=wû= -»=‡€=‘Fí=™z"=Ÿ¸=¡ -=CŒ=‘Îü=‚­å=t¯«=x‡o=€1²=}§m=oqš=_fò=a´=~(W=á}=‘TK=b=‘12=“a>=‰=G=hœ(=LýF=Tï.=o.Í=‚os=‹…Õ=˜Z=¦„=ªÙé=¢Ý=”Cå=‹€Œ="æ=–ï=j=‡ Þ=ˆÖ—=“p­=œòC= Š+=£« -=¤ÿÿ= -¤=×=Žõ@=›(‚=«rˆ=µ®œ=¶‘â=°óe=«©=¨:ï=¦ò±=¤Qû=Ÿö=œRg=˜ÇG= ^=½Ò=jO_=^™Ù=]7"=aøV=i|\=mì=f³D=T'¨=:…=!G = ò£<öÙã<ëݶ<ûc= -ÉÍ=´.= u\= x#=Nr=%Rr=:ï=I ®=O>=Q!ž=Pf/=N_=TÒº=l’u=„îX=ŒO'=Œ]¼=Žz7=—Ä =£{ƒ=ªÌ)=®`õ=´] -=ºœ(=¶¢˜=§¤=—º=Ž¼ö=Šì3=ƒB»=iH»=Lpä=?¸"=?m=>d=5GÒ='<–=q¸=_T==Ú=!*ü=2ŠE=Jz =dy=€Ë“=‘C)=ŸÌr=ªµæ=³”=» ª=ÁÞ=Àc=º•{=»ñÂ=ȳP=ÚrT=êƒ=òo>=òü=ê«Z=ß Ì=Ølã=ßž`=ï©_=ýe>çÕ=üÏx=ô×0=íyB=åª -=ã=ë=ð‹ñ>Pî>}–>Q >L<>§K>î=ýª¯>Ñ<>í>V~>õŽ> @ç> ãH>“ý>‰c>+«>#Jp>(ï¬>(;}>"‘œ>—:>¾m>/P>˜á> -[î>">z>Ì,>û>$í>+â>)'v>xÞ>2â=áN©=Òå=Ïe=ßg…>¯>-j>3w>;,¨>7|Ï>-VË>#Z0> >ëï>9Á=ü =áBÐ=â¿O=ÿB‘>P >"O>-è>5G>7“>34>(á>£°>L|>>¡¢>–>@˜>! ^>!ÿ'>©°>Þ|=ý3ž> 4Ä>ûB>#:e>)÷Á>2¸¹>3!Æ>$óN>S>±Ô>&…>)Z×>ˆì>Í„=çu«=èP¹>°>>üÈ>1Ž!>4LÒ>/õ>/˜/>5n>;e>C¯v>Q»A>^'>_>V~9>KRV>D¤N>Eµ¥>Gd>=üx>0"†>)¶ ->'Ïà> >‘>lÔ>KÛ>ÄK>qù>"JŽ>0ª+>@:'>Ld>L·—>CÆ>5&g>(ã>Ö>P´>&Ÿ>.µ>/5M>-ÅÂ>-yŒ>*´R>&B>%Œ->'q#>("$>*m¬>3L\>CÛ>Nèu>LS]>>9>/=>&i_>" –>šé>R%>’>Ì>&E>1bƒ>9gd>>]¼>@+Ã>>$T>9Áš>-cE>aY> M¬>5a>/¦Õ>B"x>G&P>Bc>9!Ù>2 v>0>>0Ìä>5>=->C÷Ó>HÈ7>QL>\™4>b÷™>d>f\>l`~>nþ'>eWß>Té¢>K8>G¶ç>C~e>B>Ê>G(p>Hï>9=ç>!ý>ñ>¸G>"“4>0œ">9l`>BÄT>Pž[>Z¦å>Y”<>RŸ‰>Põ>W6>]jò>Zó‰>OŒp>I«>Mm>L“‘>DYF>F—’>Xu">eè1>aRF>SSÃ>F½>:­>.Zv>&]´>$*È>&>*®%>/º÷>2I>5­À>?dª>O–Ô>`›>gÄ>c$ô>]%>Xù>O ƒ>>ø>(îÕ>žˆ>%Œ>4‹3>;·„>:Ž>4 c>'7>ì=þÖª=Òo‘=¥Z1=…¼Ã=‡o8=©v‘=×êš>î>8Y>÷Ä>>Ú>#³ô>.Ø—>9BV>A¯â>DÓg>E $>Jï°>\+->w+W>ˆ -î>Š»>‚¸¤>r2Ð>iî>e{&>V\>>AÆò>5ž>*š>ZP>çñ>+,°>C€¡>Mg:>IJI>D¬f>I>YТ>qâ>„–6>ŒŠ­>Žp >Šß>„âæ>|««>jR>L¢Ÿ>-Áÿ>’>´w>¡>&‹ƒ>C´s>gùr>'o>ƒŸ_>zu>j¨F>b«4>cÓ¹>h…->g1>^›¾>Nñ¿>5Ÿ>ˆ> Ñ>ØS>?6þ>`Ã0>n1Ö>uK>~ -;>|{N>eå>EùY>5Ï;>;¥†>J—Ö>[üú>iÛ”>d?>LX>7¢y>4D­>EûÈ>k˜ý>‹Ïy>—Ðþ>’E >„d>€ >‘.Ø>¡ß)>¤¶|>ï >–Èi>’ò°>”a°>•Ëp>Œ’[>s9>\ýÞ>uHŸ>”˜«>¥% ->¦5¾>¥>«Ôþ>µÀ>¿ÃP>Åå¶>½£>£^þ>ˆ©\>t}>h9¥>r >Š©_>š Ÿ>ž!“>ž >à¸>Ÿ:Ü>ªAÃ>¸ø»>µd>a7>‰§§>‰‰À>• -Ó>¢´>®»_>¶îÍ>³9>§.>  É>£ám>®Œd>¸B>¾ÎV>Â!t>¿¡>µ >¨ø>¦è£>®>´,q>³|†>©Ð‚>šê±>“ê>>²üx>¿‹ì>ºXÖ>¯`&>¤×Q>’ÛŸ>tXk>ZEð>rºn>“Q>¤b>¤K€>œj`>˜Ðà>Ÿú;>«(>­}=>¥Â>¥5e>µ]9>Å;>Å…>¸èÎ>­·>¯>1>´iê>¦:%>‰•>ooÉ>pæi>{y9>ˆ¯ð>¡Æ}>½¤’>Ì`N>ÍÔ>Ã=)>®ÙT>¢Óê>«Žƒ>Àk>Ðà>Ò1ï>Ä™[>³^>ª:M>­×>³l>°h€>«0>«NV>­å>®DÃ>µl«>«j>ÁÝ>¬oÙ>”ã >’.Ü>¦Î¶>ÂBà>ÕT>Ô¯$>Âî>®ÙU>¨Ìü>³‹ü>ÇBª>ׯ¿>àÃd>ä|->ß>×T>Ö~h>Ô>Ç]D>µæ>ª0<>ªá/>°ÿŸ>°ÇŒ>§z>›9Ð>”ˆž>r‡>¯À>³]*>ªŠ>¥<®>¨ÀÄ>«Ê/>«Ãþ>«(>¯1›>»v]>ÆÏ*>ÊËL>Ïú‹>Ú<ˆ>à98>ÙóC>ÉÛ>º7^>¸N‚>ÉIZ>ßéÝ>ïã`>öCl>îÉj>Û |>ÈÎÑ>É`>Ú‰ >èÿ>â§F>Ïh>½b¶>¹«B>ÊŒ>âÜ7>îÐs>ìº]>íç¬>ü}?Ýe>ÿ$,>éýÕ>Ûs”>ܶ9>å1î>él§>å<>Û²>×k >Þ®œ>Ꚏ>ïCF>èwÈ>ãíf>îŸQ>þ²j?$s>ñL>æ4ƒ>ä™>Ú¬ú>Ç•>ºá>¾>Èà‹>Òúç>Ù¶o>ÔH>ÀŽ>µ™Ì>ɶy>ñÁ¤?RH?¨>îWÆ>èf½>ò£f>ù¤_>óiá>íEû>í¯ö>ê‘>â¦Ä>ä·ý>í;É>èë>×Á3>Ëw[>Ñ…>êÅH?ÛÌ?pÇ?ù"?ë? :? -Š#??È?R? 2?šû?'(j?*©?#2{?ÊE??s2?"'? ¤G?#?#0?3õ?bÂ? ¦:? @?WJ?7œ?{¡>è >Þ×5>æ7>ï\u>î#ý>ä >Üʲ>Ùúõ>Ù >ß>ò>ìãÛ>ö–R>ù9ˆ>ù Õ>÷7w>øÐG>þa?ôÅ>ÿ^Q>ø^ >üü%? nÙ?ÀD?(«!?(kQ?$ñò?#ÏB?(&X?.“I?3Q_?8$š?6æõ?-:â?'˜R?'îB?&²P?#™œ?<Ã?º½?9Â>ô)@>êÝ>îäõ>û}î>ýë½>ót>êG›>ç°ù>ç-Û>ãü>ÚŒ>Ó;z>Ö9ñ>áW.>çz8>å”:>Þ¯’>ת>Ù&µ>åºl>óÏ~>þA?[?#r?ý_?°ï>üZM?¡?D.?ºŽ?'™•?&л? ì?·ë?õ.?!?&g>ó‚C>ä`ß>æé>î ‹>ñ‰m>ò×ì>óçÏ>ùÕÎ?Úô? —?ü‘?Ü@>ü©ý>ô(i>ûOý?ó? }? ¨Œ? &? -õÇ?;P?S?y?_ ?2›?²Þ?!:M?";&?*|?Ë5?<£?.v?®?"V?$Ë?"È?Øá?8N?x¼?³?ÕJ?$¸œ?)¯?zc? €? õ#?ò?™ì?!€›?%ºÛ?#Ýã? G?#”?*ïR?,Â?!û?mP?‚?or?îç? ˆ-?$Éü?,:Î?06+?)²Ç?$ K?&K¹?'§?#µ²?"?'Q«?-<*?2˜?7m?:«Å?<¡š?@,!?AæÁ??ÔJ?>5X?A ?Eì?@à?1‘º?óÛ? Eœ>ò‘S>Í@í>¸4>¯¯û>ª«>¬c%>¸-ä>Çbü>бA>Óö>Õ8×>à >ö"?ÞC? u? 1ƒ?µ˜>üV˜>øV4>öËÀ>óÉ>ôÙw?,U? œ?X?/V? Á? £ -?ÎÖ? !÷?*%x?. -3?*sˆ?$c?Æï?&G?$$?.[#?,ʾ?Ñh?Y>èBÉ>Úí‹>ÖþH>Ûd >â^:>èC>ð|ó>úݺ?ƒù?‰Á? Kk?Í?{A?µ?Ñé?1ò?>0?ǵ?às?ù?…?çÊ??c? oÞ? ¿?'Õ?"Râ?$ÿ?'>Q?)4?&º?$>Ÿ?#@ó?­7?˜?#“?'•­? lg?z? B^?œ.?GV? -6¬? ~º? ²÷? hú˜P?Âå?j?ëq?çï?¸?ÃÆ?Eÿ??{È?!Ò£?%”?#a÷?%w¾?+£ø?/%Ó?-n‰?$õ)?"ê ?--Ì?4¡?1¸?.ÓJ?35ç?6Œ‰?3Aø?.e]?1Ć?:­p?Bõ?J ?PFÍ?SvÂ?O=?Eß?Cò%?E6©?D˜?K z?Y”?`6^?Z¢E?Ri?Rõ?Z@¦?a«£?d€¹?i} ?o:?m¿?aLÌ?N“¤?DjP?NF?aqo?iW›?dí&?jÈÃ?}=?…©ß?‰¯1?Šs'?†qÐ?y?j(®?tbW?€[à?u2?b›E?cÒ§?sÐV?~´Å?ƒe«?‰;?Ž»?ã?ÉÞ?‘ÅK?–˜Ô?› ?”­C?zÉË?6Ž™>ø¼>½jM>¯->·.û>ÃË>È­>Ų`>¨Ã>ã>ÆQ|>Í™1>ݸ…>ô>ÿ=h>ü…>ú -ð?Õ’?a‹? Öý? úŠ>ë[Î>ßpÆ>èÒ?É? -ªL?Á"?m>?çI?:?ŵ?Ö…?í]?ëÏ?}¶?…>þFó>åM'>åaw>çWu>ã3’>á ñ>ÞîI>àXE>ì‰Ô>÷æµ>ö[í>ç8Ÿ>×—D>ÓeQ>ÞQi>ñûº?jE?ò+?k£?aB>þĽ>ÿ-Œ?»u? ñ„? Ñ?Z?¨Ý?²?#Kô?(°??*Cè?"ߊ?ÿ”?ª?õJ? €€?¼B?FÊ?-h|?Ahã?L“Á?N¦?F —?7(Ç?)~.?!“;?"à¢?-KP?:R?DΞ?Iëô?JÖý?KD;?O?ã?U5i?QXÿ?? -?0ò ?6ÃH??ÆÑ?Dg/?L´?PÁ´?L¶ä?Oà©?VjŸ?T±?S7j?Pê??2—?2$Í?5Äó?:Ì·??9ö?Iø†?Sý¹?WÄ?Z÷õ?]p?]ùù?c-g?jîÏ?jÅ=?bÚ*?^Sç?ZGe?S°?V©v?`l?co?bn«?aEc?\¥Ÿ?T/.?Oœ^?JíI?IÁ?PóR?Yõ?fªÕ?vÖ$?€ºÊ?ƒ9“??y0ú?n¨ö?^éÎ?R)&?WnÂ?\L³?Tçä?V_t?a^F?mj9?woŠ?{‘¼?€bO?ƒQë?€9«?qäL?j>??pèg?qǶ?d8@?`)A?`…6?ZBê?X¹a?`°?b‡ü?TÑ¿æD>˜ç>™ò`> ¼Ù>ž/ >ž}¾>¬O¬>½s}>ÈÄ'>α*>Ðò[>ÑS>Î<â>Èûp>ÐÜÏ>ç U>ùV?ç?§?Ë>ö3t>èÏ2>ñ? -?&í?-³?¦¶?f?d%?O?Ë>é”i>Ø6ú>ݱ>äŠö>ê;¿>ýv@?o>?S?$¾?#È:?$%Y?(Æ?*:?+ýP?2¿_?1?"yâ?j? 2¹?”0?9Gä?N«Û?Uû‘?Q`¦?H¦?HÂÎ?RÉ?Vâ>?O=D?>»Ü?/ø„?.êˆ?7 È?;ˆ?.¯?ïˆ?&5?NT?ë?M?,º?4¼T?5q*?BÆ}?UÈì?[ºÐ?RW?EöW?9Ô.?*Ô?Á‘? »˜?*Qn?$'?µi?`s?=oi?Pšx?R¬Ú?Q»·?Ydˆ?bô8?d,(?_R?WË?Tð™?^²?pùU?{š“?wÛ?pý5?qÕg?w˜´?{O;?|¸­?sî?[)5?J5–?Rši?`I?fÉw?s5?‚õ1?ˆŸ?ƒ|?rz]?l¿å?p|'?l8l?ež„?fí?lËÍ?rˆ„?rEÃ?oZ•?nü?pNC?o×I?m&ø?n¸?lä5?S¿o?70€??ÄY?[Î>?kŽ?p|?xwF?} ?z Ý?u†N?lÖn?a¨›?fY?rôZ?vNƒ?s Ã?t4½?rp?môÊ?{Ò?ŠËæ?”¥Œ?™x@?˜ýG?“ÑS?Ž'?ˆr“?‚Ly?|¿ú?{Ò¾?|®?y/^?xp‚?zHº?uà?cvÉ?WÇK?j‡R?…?ŠÆ?‡æ!?‰î_?úc?‘´Ú?lö?ŠŸ?‰eo?‰Û„?‹Ö?ŒS?‘ºÀ?–·?•¯¸?¯å?‹D“?ˆ£ê?‡õ`?†N ?„Ó«?…‰^?†#K?†f1?‡hÜ?ˆæ?‡œš?†¦?…Šg?„Ùü?… ?…¿?‚À?‚†Ç?„4x?†œ“?ˆ”Ä?‰!à?ˆX"?…̬?„–\?„‡G?ƒþB?.{?|´Â?~o«?TÉ?€ð"?2]?ƒ#¥?‚L?kB|?PÏy?Qka?_&U?eî‰?`¨R?[p˜?^ëÚ?dH?f®?g:?lÒ?p¸²?j¼v?^•€?Z‰Œ?[sø?Zp?YûI?]UÞ?]nÌ?Yí…?\n(?_ È?W>?L©ä?N_=?Yäp?aê?_<«?WÀ‹?Tü?RÆ4?R¡g?T³/?W’h?Z®Š?_L -?d?h ?mv?t–?|'?Nû?ƒ (?‚éï?o?vÊÁ?y!?xu·?më¨?h°ÿ?i‰ê?kèÛ?gX?_@“?[Áª?^\Û?h“J?qÂã?v6/?{5?~€ô??€µä?‚P&?„Ï‘?ˆ™¤?ˆ®?ƒÞ?3ñ?„áÊ?‰|¹?Œk?ŠÀÉ?‡”ì?†á?‡³?†oQ?‡J?†ª?†0?‰ô?mô?‹£?‰æW?ŒE\?˜…?Åã?˜·?ùÌ?‘u?‹øû?†_â?ˆ W?Ž!+?‘êÖ?¾‹?Š3´?ƒàÂ?‚Î?‡ã*?Œ'Ÿ?Ž•[?’þ˜?”„-?‘º¦?Žìj?›.?‘ØO?”Ð)?–yÄ?˜)X?åà?¡²³?ž…I?œ´À?¡™7?¤~°?¡Å½?Ÿ“#?¢©Ÿ?¥¿?¡(?”…?‰rS?„E¡?…Ÿ?‰Ú¿?‹È?Œ£æ?Ž3?h?‘A?“Å?“åß?”e?”Þ??–p{?–°°?”©Ö?“Í=?”šL¸?DöÒ?Kç?MÆP?Lyî?G»Æ?EÌÉ?H†?G2u?JœÇ?R'?X*?\P?]åÐ?]Ø/?_ùB?dœ¥?cúŸ?Z‰?Wò?cm·?n'=?wÔj?zd£?v¡?pÍQ?kÚ“?r;?yíÊ?xy?q„?kÄ%?hüe?hJ¸?j"P?rNK?{¤?€a[?„†³?Šê?ŒGµ?Šú1?‡HŽ?„r?÷k?}O?‚ñ¤?‰Ã7?2?h?M?ŒÍó?<Ë?˜j?œtž?›7?›ïÜ?ŸYf?¡pÚ?£5…?¢³??£2³? “?\l?žlp?ž¾•?£Ì?§Rß?¦[?¨™j?­]´?¬kk?§$þ?ªÕ4?³0à?¸ög?»Ti?¶e?ªYX?¤è?«T ?²Žb?±å½?©H‘?£6G? £à?žœ??˜U?“&?–&ª?š¥?žæ?£õ?©E˜?±U¢?µËé?¶O°?¹¾e?½ð?¿â0?À©V?¸õ’?²ÑÄ?·å?»?µŒ?¯×]?±²f?³`§?µ¬È?¶h/?²UX?³ì‘?½‹9?Ä@¢?Áh?¹ÉD?ÁG?ÍÀ8?Òg—?Ñbä?Ï0Ü?Уê?Ï…–?Äz°?»z¾?»`M?¿™­?¾ â?´×¹?«>?®Qy?µ¾?¸BW?»ìn?½Žÿ?·Fg?³5Û?»?À®m?ë?ÈWx?Åäÿ?˳ÿ?×ú?܃Y?Úót?Õ -?Çag?·WÓ?³÷?½xÆ?ÈrÜ?Ëý?Î æ?ÔÅ?ÙËd?×Vs?Í9 ?χ¥?Ù?ÝêW?â­?áŶ?Þd²?Ó:k?½ès?ºgÝ?Ä ?À’c?´Ÿu?©€™?¤u“?£Ç_?¨W?­1õ?­ƒŠ?­c]?®æ?¥Û»?˜ur?’.?–¿"? €?©Qw?¯??±ƒÄ?´ì?²™?­ ?°Å±?´G’?²*á?¯ì ?­†^?¬Ž³?¯¡Ð?¶z,?¼Ha?¿]w?Á3!?Áá7?Åš6?ËJ?ËE#?Édû?ÏV?Ö+Š?Õ͵?ØéÌ?ßJÏ?Ø3ù?Æyj?»l”?»_?¿OÝ?¼ -?µ ã?´: ?´u>?³ÉÝ?¸v?Ás?Åþß?´åÝ?˜¶”?¤¹?·Ö?»³á?»¡ù?¼ µ?·ä"?³-"?·³0?¼½?ºR„?µ&ô?¶‹¥?¿Ñ ?Æoa?È‹Z?Í¢?Ò>ë?Ï[¹?ÄÑY?¹J?¸ÎO?¿š?¿Ÿt?½´?Â=?ÇÙ1?Çóë?Äá?Á$â?¿l?À,—?ÈÒ?Éï’?ÇÉ?ÉN€?ǽë?Ãí†?ÃÞ´? a?»š|?³W?²®Á?¸Ü÷?½²µ?à ?ÄÆÃ?¾9?¶RÉ?·=?»›¸?ÀM?·)Û?»Jì?¾Ä-?À³Î?ÀOÀ?¿î?¹£[?±þö?¥¾b?˜¾?™á>?ŸO?Ÿ5ó? é”?¤›?¥mÍ?¥) ?¥âë?¨DZ?«½g?°-E?³Ý²?µnÔ?¶;Ð?·)?¹=†?¼k4?½L?»È©?¶˜?¦L3?™-¶?”àP?“¶l?–-?˜g¥?šs¶?œ†?Ÿ ? x!? *Ó?¤Uä?¨&™?¨Üû?©`ü?«rb?«¿…?­'¿?®”ƒ?°L?²#?ªj? Ô]?¡•O?¤ÛÀ?¤ß?¦+þ?ªu?®ÿ?¯œç?°íg?±nK?³"Ü?³’°?µ2]?¹û¨?¹Úú?ºqO?¿Ñ?Þõ?Å5ƒ?ÃÛX?¿}ó?±Ü?Ÿ¤?–E?“ã8?—Ǹ?›ñZ?›ìŽ??žcd?¡ù;?¥GŠ?¦=ò?¬"?³2£?´€S?³¯¾?µ8–?·èÓ?»¹?ºá6?º#Ê?´È:?ªÙ0?¬-r?²Ñ—?²;ì?´l`?¹€»?ºü?½e„?¼6?¹ò/?»;V?»‚Æ?À÷²?Èqj?ËU“?Êø¡?ı?Ã!å?ÍiI?Ó§W?Ô‚?Ñã ?Ã(ð?¶¦?³Ì“?µ?·¯é?¼çŸ?¼Ï?´ì‡?¸p‹?ÈŒ ?Íó?Í‹O?Í>´?Ìï×?Î6?ÑÅ]?Ô.·?Ö‘µ?Ú°?Ü"»?ÔŸ/?ÍFú?Ñß-?Úku?ÝŽ^?â¦b?â‡?âÆ?æ©l?è}Ì?çܦ?å}ö?âÌn?ê ?ñpf?îðA?ï¦ó?õÉ;?öz‚?ð¼õ?ðêD?ïfx?陵?í6?ç¨P?ê—Â?ê(¹?ÞqÕ?ÝD‹?æî?é b?éG@?êYƒ?ì +?ôdw?õ¾k?øñ¶@8?þ.?óa…?ðÆ@?ùÜ@›J@TÕ?ùØX?ò¶k?õÄÄ@£U@ ç@âØ@8±@3Š@òý@ã@ÀQ@‰u@@çI@Óô@;#?ýI·?ðÞÒ?ýë}@Ÿ,@ ”´@ Ï­@ øû@Û?üf÷@xé@@ô“@Aù@UJ@ä~@íÅ@ [@·ó@ðR@ -Án@ ²ê@³}@ãß@¡‘@ -3ý@,Á@á-@\@à5@í¨@—ç@ºy@ùu@ -V@ŒS@zU@ ë9@_I@Ž@!X@)éÁ@*ʆ@'Òâ@*é&@1 4@05Û@%Šë@‡É?»Ý@?«F?·ÜŽ?­@?¦¢?ªt?®õá?³B¸?¸!Æ?¿È¿?ÎáA?Õ?ÑÇL?Ó¦Ñ?Úi§?âÈï?í?ì‘E?áÚ?ÕÜ?®P?×?™!î? bx?› -f?š0,?žÆË?¥•?¦˜"?¥AÄ?¨vÕ?²³ƒ?¾Ó¤?ÆZS?À ç?¼þ]?ÃœD?ÇT?Ò-?×õó?ÛÎÆ?ÝuÒ?Ñ>1?¤ß–?|ñU?,?ƒK·?zÞv?~ªl?„™?†¤!?†®ˆ?‹ý3?–5J?¥…?Ÿxì? {/? K”?ŸÂ¶?¥–X?®"X?µCð?¾Dt?¹8O?¬Â3?°Ôá?´u?®‰à?´¨E?¼(B?¸Ï?Àò®?Å^w?ÁŒõ?á`?Ìk*?о?Ì×L?Ôp8?á?ßa•?ÑV¦?ÊC§?Ë(‘?È5?Åïy?¿ƒÃ?­ Ç?¬¡"?±1j?²ü?¹|Ž?µG ?¨P?«5F?·ƒ?·L?´ +?º ?Ç™„?Ì™?ÌY–?ÎgH?Ѿ?ÚŠé?Û¨2?Ó“?Õ)¶?×õÔ?ßi?ÜDü?Õâà?Þ9Z?ä¡7?ëÁ–?æÀ{?ê³?ûA@>Z?ói7?ë -c?ï^¸?üH @h›?ûôÆ?òq¼?ûäK@ðÂ@ O@ AE@ ìâ@ÿ?þª±@V‹@ ý„@ }Ú@©±@»@_¹@ ï@ÈT@d†@ o•@´@n‚@¿J@ g@V‰@ Ç@Ò@óm@3]@’+@ Ã’@ ùŽ@ z@ù]@{'@ ·½@ 2@e@_i@ùm@IÑ@ -›C@k@ÎD@Ô@ó@L&@•6@£U@`@!@«+@ùl@ëy@¢‚@:@(Þ@öU@ Q—@4„@ƒæ@<Õ@ dÞ@ FC@ºÉ@}\@!)’@#j@@&&:@%˜Ã@%FN@&Ò¤@*I@&ø"@kc@jù@ÌŽ@´@W@€@ -@!Gy@#qn@"ž@K&@Ï@$Ü@*íñ@(}­@%s_@!™ô@ À@!@²Ž@B@_@U @Þv@…P@­ì@%[³@(o@!\x@¹)@ºE@%4%@%ã’@!^@@Wr@†@"þ@!RT@#¿@&-F@&ëº@(‰.@(Åy@$-A@#'@%Èß@…—@:—@#Õ•@*'›@)v@!ÞD@„À@!æØ@"ßÐ@&l§@)ù?@)¯Î@$¿ï@ ­Ù@&Šn@,š@)q}@!R@ 7›@@9@8®@5Æ@0@0ù¨@8¬¨@8ø@6t@428@2ð@6Äß@6+M@6Ú@:9Í@7*ð@5%@7ÛÍ@63¡@3ˆÍ@2ö,@/)¤@/òÕ@/¡š@#2T@Œ@>;@#¼Ì@'&Ý@'´@'cL@&KO@& ¿@'A-@$ˆ @%@"à§@%²‰@$|+@JT@.œ@g@}@&æŽ@*Éx@&W@¥Ù@m@K@ k"@ Ã@¤ß@,@º¡@!•¢@#ré@!×þ@!œ“@#+|@%×@#—;@tþ@ê@)[@þ@G@6*@_[@Àõ@;Ÿ@Ú˜@ 2\@•·@ µÓ@D@9Ô@M@ï}@~º@/«@‡@¤ƒ@Tc@>¦@2ë@JØ@ ó'@ ¬Ž@š@1Z@~3@Å~@™ï@ ½[@ Â@ {Ô@t@zS@Ðâ@­$@ ½Í@  @À=@3,@ÁZ@Z@×Ñ@v´@«3@£ã@ëf@±ê@3Ì@¤q@¼:?þŒ@\ð@Bb@eÑ@)D@Šž@iÐ@IM@t@{†@ñÁ@Mo@k @OÖ@ÑÈ@z©@¢l@L@â@@?ë@ @O[@çÕ@´^@ @å'@Æ@Ò¹@ -ƒ@#­š@'æ’@(E˜@&q…@'"a@)!@-ä@/Îà@/‚/@0eð@+® @$ád@'Xd@)[ƒ@" -“@iç@ÈÓ@zà@Xä@„ý@Fo@?@ÚÐ@}¾@#+‹@#¥C@äC@EÙ@•Â@ õ¬@$ÀE@&·H@)/®@"i@sŠ@#À]@%›@#ÜE@!_1@# -@$M'@(x0@*zg@)¦ú@% š@%P„@&“@,0Æ@.»2@/WÁ@.?@&®Ô@ ­l@#M€@&7r@%€Ê@%<£@'Fü@$€@Ý@Ã;@½$@}R@\@ûÙ@pµ@ E’@"Qv@$5Ó@%9?@$É@&a­@(M @*;Ã@+2Ë@$•@"$3@ Ïà@ š¿@d_@"·@!{?@'ò@.Ôt@-e(@)G@)ƒ@& @$îþ@%o¿@(@0Œd@5"I@41@3“e@4Û5@3õX@,úš@*äc@0,²@3'\@.Ø¡@&ö@,½@3@-™Z@( -ˆ@*Í@*œA@(´@-Èy@0ø@3Ñr@2BŸ@3OÁ@6[ý@6L@8¨©@9Ý“@<9@;T@7¹@.ü@ë#@ç@.öt@:æ@>I@= n@?ÊÐ@@-!@<žv@9Ä@32ø@+#m@+BŸ@6\6@:†‰@9°}@9Úz@=—G@>A"@;‚@8Oÿ@:¬:@6ì6@+ûp@(À@1S@3½@3–¯@=G`@:ñÞ@6@Q@9”@6~ç@=·ô@:z§@1Í@)¶¤@,Ó°@1Ö@0ÔÁ@2¨®@8mŸ@76c@5lÏ@5”7@3‘_@6–@5á@1.u@.Û@7í'@7vµ@9ßN@œ‚@:º·@;²Ö@?W‹@<¯ @9¾‰@4ç¯@3]©@2ø§@6Ç@EaÏ@C¾@4³K@0Õ§@:s@5X½@4©é@(ýá@# ^@0óG@8‡ -@:ïÿ@4nÏ@77˜@;Ñ@8îß@/à]@2†¯@9bÁ@@@?>½@;\Ò@3yV@9I÷@@N@<\_@6Û@3[ï@8B`@@Hæ@<[¡@8h@7e“@2›@0 Ã@0`Ú@9Ç@A†á@>5§@8&«@9Ó@9éæ@<®@9l@5G'@3ê±@6¸É@:Ë„@9–@2ë@4:@6<À@2’˜@2ÎÛ@3Õ@1©[@1i¸@/ë@3"Z@/Ý´@+«@!ž@!—@(…@)“@1å¼@7FA@;“‰@7Ãç@3p“@5ð@/LK@#O]@2Ÿ @5¦@-X¥@(÷±@1ŠŽ@3^@9…±@7>È@0³’@+­@'k„@/³ @4ºF@0o@7›‹@9)_@:'4@5¯=@&{@+@@×@@lo@<\@ö-@E.O@Hvl@Jà€@Gh²@5¾ì@8˜Ã@Fç@?†1@?8«@@Ýì@:Tõ@,”?@0Ò9@Jfµ@Ku@.¿ @ *z@"CÖ@49ð@6±ç@,Qó@)Ò0@)5Ÿ@+Ç¿@%ßx@ 55@ ”ô@Tr@#Sþ@,¨D@-²!@"“‰@¡ @|@ §Û@%Š½@*s@-Éç@/Vy@.²V@+^5@.3@3@2ÙG@5©a@60@,…(@bÄ?èÚ’@*3@' +@.ª¡@*mR@-@2@25T@0•Ú@&"@™ë@)õ@"/z@,Ÿ™@.d@-Ý#@+˜"@,²Ü@*M:@+/@*ZI@!.Å@fÀ?Úúí?µ£?ú ’@•0@ë@*zŠ@5j|@6p@6m@7¹Æ@4‘ú@7@L@9,û@9ã@9pó@50È@7F»@6,†@7ì©@<"@;(@2@ @4¤T@;I#@U"@?Ü@:ÎŽ@8º@9a@8¶™@4Ÿô@,k‚@Õ®?Í|¨?Ó× @ƒ‘@,>@6”@:¦@2Äõ@'oØ@8ã†@9¿@56ã@/H@<¦@,¨Œ@]í@1T@8¡<@AK @@}E@:&Y@<{@>\D@C*Á@BAþ@?-T@}@>#é@DA§@EãF@Cì•@C|@@lE@BÕt@>3¬@5fÃ@?Nû@CžÀ@ARD@Fk@FI@@Ñí@B>£@Cw±@Fà0@D¢3@>Ƙ@GŽb@E¦N@?V¾@:?@<àc@E3¹@=ˆN@9ÓP@G;†@EPý@A¾•@IJÌ@IhE@JÂé@K @Hý@FMZ@Bí¨@F:å@Ghk@C=•@?ß¾@5ÒŸ@#3@.Ñ@EU•@J‰€@KMR@JõT@Eô@@!@9ƒŽ@.¢@Bd@J½ê@NßO@MH0@H¯@@°@73D@At@H@IÛ~@IŠ@J@LY-@Mé@L1²@J7}@8ðÅ@'Ö=@,’ÿ@43|@.Æ]@+o@.á3@/› @-F.@+Œé@-}@3êd@3?Ä@2n`@5i@3NÀ@/TŽ@4KŒ@3øî@2 -5@4)¢@8œ@8Ë@:”@7¢¥@2è»@36@5H@5~T@2‹x@.¬ü@6’d@3Í4@1¹ž@3B@2É7@/ê@8/6@7À@6)@2øJ@,÷È@(Z@%|@/ˆT@7Ê@8 o@6?˜@9â@8)3@7®q@8ô+@4gÿ@2a@2 à@3)é@3|<@+Ä@0¦Z@8Â@=öñ@:ú@:ùÚ@7Е@5kQ@8ùL@8¯ @7…Ú@+^È@2X@>‘N@?‘@; @,.J@)ÆÀ@0ß{@.fY@1± -@4qÏ@+ùð@-ÚÇ@-4.@.B˜@5@8¶=@:Ô&@3 ¸@2tJ@<3@>j÷@=§¹@:?@<6 @9”@:¾„@;3@;¹®@:U„@8U@<ݹ@@‚Ò@@ç¾@=„¶@=²?@>K@>E˜@=´è@8øÎ@=vK@5’—@0wc@"Ü•@$^é@9lG@>nÏ@@ @;:@<º@?O›@7M@3²¸@78ù@;Fô@9ƒ”@8 â@,²#@2r@=e@>¥Ë@@Ö}@B|Ý@B½@?¦Ÿ@?2Ñ@?† @;LÛ@-¥°@0åR@0|z@,Æ@56¡@;¼Ü@;Wí@75=@7Y“@8ƒ@@7ëp@3m@4Nk@+«W@)ÔB@%Â,@&öæ@1Ù'@5¦Å@4N@5ƒÄ@9Ìö@82@2{Ø@4Dµ@3Ì@6®@/ß @1 }@.Ë@-Ï@/ š@'ò @$~ @0ú @6í¿@0Ö*@-†o@;?Î@6ƒî@/Ðë@<|@3@-z½@5Q2@4™ö@1DÄ@*ÙÞ@/~@2wN@'1Q@-²Ì@4È@5ŒÇ@/d¢@*nÉ@+×™@5@/ÏÌ@8ï @:Ð,@6rŠ@4Ê@8¬¯@2¨‹@.f@5 ¾@:6C@6†®@.h@*UÚ@-€¹@0mš@+èQ@1Øœ@7¥¤@;2“@8µ3@3@8~G@7N!@4ö@5Ú8@2ÝS@6ô(@6ë¢@5¡n@7j@5 @=\J@<›¥@4«@:î@8hŠ@9æ @8õF@2¯@@5û½@1!T@2äd@8…@..‚@#¶}@'rò@+TX@6YF@6¢ö@4ŽÏ@4O`@+åˆ@4/@9TE@1¡q@/+@2£@/3@/”@0Æ@45 @4Ãû@3ÛM@3Y @4Pÿ@3:0@*:@+á@/nh@(Ý -@'Ák@0Í‹@0þÑ@1·(@5K1@4¬C@:›@8& @. í@1âÔ@2d2@,KW@1÷Ï@2ßú@)`}@!g@.š‹@2r@,@,*@4HÁ@8„>@1çà@-¢õ@7Tœ@5Úr@.Ãa@1y‘@3*@3eÄ@5Þ™@5cS@2Ý¥@,Df@0ë@>&®@9$5@0W—@5öŒ@<–+@7BD@7}ž@4ø…@5Ñã@0åê@4áÜ@;³{@9ï¥@5—@;ð»@AŠ @:&_@5)Ž@7ë'@=ùñ@6E@/¥ò@;ëq@>ð -@8ßy@&à @$a]@6\@6{S@5J;@5•Û@; ß@:ƒ{@9zl@:03@7é@-—*@,šß@-ê3@7N@;Gî@5þË@5üQ@:¾Ž@;P#@;ýŠ@@Ï @@ÌI@;6i@.0D@+¢@;Œ–@8b@@4c#@9—@=µÙ@<”å@8þ;@:‚g@:†@9¸½@3Ö^@3³ @>ËB@?J†@7K @1þû@'.L@3Ý@;­d@74{@)o@3…Š@3^Â@/Ó=@5½O@6á)@1‘µ@-éò@2¥»@4<©@2ãµ@1³h@1e@#WÜ@4è@:gí@<æÂ@;Ú•@3ˆ@&~[@.›È@5š@:B@@«(@=T0@2É@-¶@3#È@5ôÍ@8Û#@,Ï@(bë@65Ä@3@0Û@,ÂÔ@6n¢@-ÙÜ@)j²@)ü'@8€O@=Û7@:\@:NY@;(Á@8Þš@3Æ7@4ÝT@6—ü@'&ô@+¸(@;ŸŠ@?Š5@:ÎŒ@3 •@xp@'ê’@$ž@1ð®@7‚1@;Œ@:Ý)@7õ&@8¢@<Œá@9Î$@7»]@9²‹@8ïœ@:©@;üY@ ð@=3û@=X…@;Üh@;âD@:+V@9¹@=­6@>íª@?¡{@< -¾@5C€@9~J@=<@>Hæ@;µF@: Ã@>F=@=Äý@8£j@<Ù@?݇@:?ú@3ðé@:@;³–@3˜Ü@/Ü -@-«,@-@(Q&@)ãz@,’Š@%|û@$+@*ý˜@3ç@-a -@!_@%Y@+á2@-ñZ@,äK@2D£@;`@4“ @/7Q@.‰B@2ðá@.Ù‹@5¢¤@7€ð@4;:@66O@3e&@3å¼@6Å£@7VA@2² @0Õ@1m@56³@7)P@4ñ²@.ðH@/‰@1£ÿ@5 k@6 @1”û@,¡L@2ži@2H^@0¯Å@0ßå@. ‚@,–Â@5¦Ÿ@<z@:×ã@4+¿@7ãÅ@9g@6Wu@7ùŸ@3ti@,Åj@)˜@5ˆ@9í–@<‚×@7t@.j3@,¨û@2q(@+×»@"‰€@&Ü@2Ï@0ˆÔ@5šÑ@8ß@5Ϊ@5 É@4!s@2ÅÏ@/0ý@0O@,VÐ@4Nw@6,@6î@8é[@;ŸŸ@@Ÿ@>=@4oö@1Ïf@7k@3 ú@-^¬@0ó>@3Ü×@4›@6ÆR@9õ@9s5@.@9ß@7S§@2¬½@4˜@7Õ©@1l @,Þ;@2¼@5€Õ@4w‡@3lì@7©à@7¿L@8›i@9$@1.@+Ò‘@59s@<Øb@;x@9&ž@<‰b@5ˆ†@7«(@;½/@>D˜@=“J@9”Ì@8ìí@:ÖÆ@6‡\@9]@;Åü@2Sp@1\1@0ó«@0'@6ÔË@6ø@4„C@5±@:Ã@8Ô@3"Õ@5 @7¹.@/£0@6ª@;´Ê@8'w@2¾5@1è<@7ùZ@:Ÿg@8@:@9„”@7Áx@7z@9eé@3O@3­b@.¹@-Wì@31±@8£@2YÚ@/çå@+¥Ø@)u÷@2ö×@3î¡@5Ÿy@8b@6‘¯@;lb@<@;¡Ò@9\Ü@9|@6š_@6ð6@:¤@0aŒ@+Tý@6®Û@<‰@:€_@3µ@* ¼@-g¥@Ö¥@2«°@7%@97Ñ@;çù@<:‚@8 @4è9@31—@8Qt@9÷ñ@-Ð@.·ì@2ð÷@6ó–@9Sv@7#Ú@9‰ @:U@<0Ã@95@:!@=Pé@>ÛR@>D @9­š@5ͼ@6ó@;rŒ@6W@0eÍ@.IR@9‡¥@; -@:ų@;¥Å@<-;@5æÇ@7ð@<¯@;¯ @0“Z@/Öz@:ëþ@;èc@9È @:ßü@2è—@1þß@7e@:è@6þX@5ìá@8 à@<åÐ@;m—@3Kò@7*~@9½@7® -@9:‘@:ê[@<:@9£@3'O@4+@4tÍ@3àÜ@:t7@:À»@7{Þ@5Ë@7P)@94@:´q@8=Ã@9$À@5Ïí@!Ä•@1á@8.J@:Ž¶@;úø@;—û@:¿ß@5HÝ@(£ò@)Å@2Q„@7PD@7]¾@2.r@6ïñ@;@<‰É@9Qr@9’-@<©É@<ô@:Ø…@;V@:÷Ä@@*;G@#û¢@"˜@ uÝ@(pw@%dC@("¿@'ßû@'œº@"Ù§@!wO@'£@${›@#±À@-ø @*z>@!ü@)|í@)í@"½@&cU@(¸@$Ð@'%_@.‹þ@.\@%Œ@"cÄ@*¤@-dß@(û«@!ÝØ@$@@+?,@/¶:@&2&@$®@.¶@+Ûj@'€8@!ÿN@,ÅÁ@+„œ@*5ö@& k@(úÔ@+A@)>m@,ZW@+¤¢@)eô@s¦@'c@1#L@-z@,Db@"eð@*}Ú@2â@/_Ì@/dh@"”M@(‰ @.ü¾@08™@,=Ë@Š@%Y@2â|@1ÙÂ@-¹Î@(át@&w"@+oÀ@2`ñ@-åÁ@'cÙ@&‰y@'mú@,¢5@1€+@&˜i@'Uó@-C@-@(™@.ØÅ@/…@/öò@3.@+–@ HA@!cØ@.%C@(® @-öå@2¼J@.´#@(=3@$Íg@$³>@.¦Á@2]µ@1>³@2–Ô@,¬@*õø@‰@#–Õ@)f@ *5@*‘ì@-E¼@'ƒ@ f÷@'¿+@(m‰@+‰ê@*Rè@%2/@.+¯@.ú[@+G1@*`@. Ü@+’h@$Nµ@.2¯@. ¡@1;2@,·/@%®Ò@dq@(eo@1‚€@/‰û@.@1Ýö@2_é@(+Æ@+É4@0„ÿ@1#@2(ö@*Û†@&& @2uÏ@.¢8@*Æ.@'jà@(`@0±@1NN@+Ó4@0G+@2uî@,,@*P×@0û@.<š@0Ïr@/§ @*¾X@-À@-a9@+-@*:á@1Ø›@0„ç@0N@,_Æ@+ @3r¬@4E@.#Æ@*ï”@,@/¥5@/=X@0ýå@+[œ@1½þ@2•@.g@+19@-åÉ@1Ò@0 -^@.ô3@'ÈD@cì@&…@3Í@.q…@-߉@#Ûœ@Õ-@©c@,9@-^!@1D8@3$û@1JF@+éQ@)[@+ ™@,™L@rc@'Œ.@-w‚@/ß‘@/ -²@/„@-n¡@.b@@1e@1T@/4ú@'úS@*ñz@/@@/ó+@/¸‡@)f0@,|*@.åa@nm@"ãs@+qâ@/ƒ0@0Á@0ö7@1~*@-j@+ÜŽ@-6@0$*@/NŽ@,ð?@+Â@/éû@0Fa@0¦U@.Œ@-Û$@.*@1ßÎ@0àV@/’@,¤T@->@/°o@0G@2 @/4@+qý@$FO@$B@-z@*òž@Ú)@r«@.T¸@/Ê,@06î@+‹ @$ÉL@+@/@/õï@0Ò¾@.â·@(cÿ@,Æf@0}ï@.‡4@.›Ÿ@+Æ @'@@ /5@0Qç@1ÒH@.·@)YÉ@,û@0Vÿ@/@¤@/”ú@/·/@,µ@,Š9@-&t@0 Œ@0öT@. Q@(Ø÷@,@@-°¿@¶¸@x…@+;ú@'#(@h -@*# @/-f@/Vh@+ëé@,2m@+Þ@+ê+@.j8@/{ö@,Ž@,ØÒ@*ô@-@02@.e@)ê2@*\ª@)Ñã@,·Ü@%jŽ:–î@:¹;|:ãAg; -ˆØ;'fg;>|=;Aи;1"Ì;æß;êO;±Y;Õ:ÓßÏ:œE:n×8:hýâ:–‹·:Ö2/;Èó;/GK;:CM;/¨;'³;ÚŠ:üfd:ë^8:Ýê:ëçQ;É;C[š;uEb;– ;–ªk;•Óš;u;‰ñ;ƒ¿•;{ã;v8«;lW;ô;™];•ûŸ;†¶;bQ ;4m; -Ïò:ÚöA:Êj¦:ðz;%8n;aBX;‹R ;˜;—-`;Žâ;…µ7;r•Œ;Kmw;mØ:áH:¨ûÁ:–^ó:«Q…:ßÙ9;5C;(Ìî;;–º;Md;[ºQ;VáÆ;5(¡;i:¿©à:¸‘q;Ü;Rj˜;œ$;ÉH%;ál0;ä2”;àÕò;çö;ú–<im<Ô5<†<÷t<< ½<«<û< -t<  |<,<F¿<;áæ1;×H;ßÊ;êÛ[;ê!š;ØþÓ;¾›Ž;­7;°Ð;¿ßG;ÄN;µB>;›;‹d4;ƒ À;ƒr1;Œçz;ŸÞV;¸ào;ÏŠ;ØXZ;ÌDq;³; ¸;¢Ib;±Ë;¾-2;džÿ;×`v;óqÝ< -xD<"Ç<ï<F$<ÃW< <BT;õUv;誃;ÞšN;Ü÷;éð·<^<·.<0Ñ<3Š²<-L<$(N<1R<Cç<Ïk<+`<Àˆ<0ô <9A<.<Ë;÷p;ßx¹;æÏ<EC<KX<.ƒý<:KÆ<>„Ò<;mö@=÷Ä3=ÜrX=¿ãê=¨=’ˆ…=ƒí=‚Ê*=Vž=œ¼=œ±¬=•†M=•V}=¡ô*=³—u=Á=M=Íô=áMu=÷g!>f>Š=ìÔk=Ë¢d=³Ìl=¸Ð!=Ø„×=þùÝ> ‚ï> 2U>!>> -q²>{Ü> ¾¬>$â>M±>&Ú=ú5=Ï*^=·hi=ºNš=Ç =ˈõ=Ê(=Ò"=éÆî><>xÖ>ÑÖ>«d>V>Ê=ø…}=íã2=èÛt=âËŠ=ÛKŠ=ÐÏ,=Ãh¶=¼Ü=Ƥ=Ý 0=òœb=ü‹S=ûb=ùë~>‰X> 7:>96>œv>"Ij>'“>)ñ>&t×>!ŒÕ>r¿>‹N>Ì>Ýü>%Qµ>,±>*»>"P>&=>Ö>û> æ±>U>$J>%û¥>$Ó>"A>Ù¹>¡ï>Ô3>N_=þÄ]>æ > -§^>S>@]> ‹ä>}Ø=òú=Ø=É=ÃË =Ã}=ÙXð=ý'8>O‘>™­>M®> -„[> -Ï>§«>SM>)â/>3"x>9ž¿>9g®>1Ñ>%ÐÔ>èŠ>x0=Ò~Í=´2=²î´=Àк=Èû/=Ên=Õ£×=öóE>fd>%è>0ÖÜ>4>3Â>+I>ko> Be=ê²G=¹åß=Öm=~‚Ã=‡-Å=Ÿùz=€=å¾ =ÿhÂ>±Ç> -‰=ì±î=âì=ãÕÇ=à–=Ó d=Á}=ªèä=”þ=†¿Ã=àÜ=‚$­=‡_j=™0+=¸O®=סn=ê™Å=îß=æ|þ=Õõ=ÁTÌ=¬,÷=šÛè=“Ç‘=’aŸ=Œv=ˆ|q=šPW=ÀqY=ãÁÃ=ö+Â>©>>¾ ->,> ³±=ë =Ê8=ɺB=â Ó=þÃQ>ê4>ù•=ôr=òz=ú½§=ûæ)=ø¿Ê>û–>(G>'2¥>/G%>2Mí>6Où>9—ˆ>6&2>,ÉN>%J¬>#‡>$ø§>(Ö”>/Ûm>6ø>9e><%z>@EÖ>Cl >Bm±>7;> -*>)–=ób›=ì) -=òóE>´·> d>Æ‘>À¬>~Ç>ŠÐ>Å>x2=ùî÷=ݵ3=×™=öÉ >Cw>*o”>5Å>7þS>7$>0>…>!Öl>uz>]±>9>+žÎ>1O*>,`Â> E¥>ôÙ>Ê=ûQ=ó o=ôór=ôD‰=ãv=Æ¡y=®ñ,=ªÓØ=´[º=·$;=¬2§=¡Ç1=¦¸=·òf=Íi=áôˆ=øJn> Ø>¿‹=ý†.=㸷=ÔÜj=Üz$=øÁ> ù«>µ> qª>êØ=æ›­=Öîµ=â²> o>б>‰[>$íG>'Ì×>( ‚>#f>Lð>^‚>M;> -Y°>Œ%>"ºÊ># <>nU>²'=êže=áC|=ÓØÓ=¾·ð=º»Ô=Ø!‰>ñ>6á>0<> W> ì“>w>#Ït>-´,>4 Ã>5d>-„É>–> -Ñ1>c>)Ù> -èb>*«=üÍf=ïâp>9,> F>%úº>&æt>$zm>&ÈG>#›D>Ò -=ëŽ=×]Ð=ìD´>)T>'Ø>Îr>/þ%>=m¶><ïð>0'>!ðÃ>a>" å>"ÔF>V³>¶>‘ý>$Ss>,¡o>/tü>2ÅÓ>1ö>%x”>&þ> Ê>1ûÿ>C&Ü>IŠå>D÷|><~Ÿ>7f->6Á^>6Ë>>3áâ>/..>,7>'jþ>ª·> ”ê=û)‰=óŸ2=÷+ƒ>G÷>k>¯+=ú$=ÝÏ)=ºDw=™ò˜=}%M=RMê=:Y(=6s ==çÉ=F„m=V…=z±™=˜Ë=·ƒÞ=Ñô¬=àdC=์=Ø+8=ÊRR=¿D\=ˉÅ=ô[C>š>qÐ>©#> °t>1Ýg>@Š°>Dð®>F–Å>M©¹>QIŠ>DØ«>-éM>׶>+ý> Ø=÷ïÿ=Ë-T=­£=­³=¸Èm=»lÜ=­Eh=“È=trC=\w=a— =€Rú=›ù5=¾Iq=áîN>!>§>+þ‹>9:i>B×'>L|>Tü!>YJÙ>Té–>O¨ >VÿÇ>i—º>|Úª>…Q}>ˆB>†¡F>€À:>q9g>kš»>yS>‡[Ã>ŽÉ >p{>‹Rº>†ˆª>Z>wžT>w«5>†Wv>–K÷>£i§>ªÍ>¨”¸>žq€>’Z>’—>‘ž>”ñ2>”bŠ>•rœ>™9­>›Ù7>ž­>¤k->¬*Þ>´R9>¸ìS>¶¤i>±k>­ž>¨þ>¢rÖ>…>—Àç>…x>ŽÛ>™ì]>«7™>¹£á>À%Ù>¶Mv>›mQ>€”N>e{e>[AÆ>^®=>|<Õ>™ñ¾>¸a\>Í“>Òûˆ>Í«<>ÆS>»–>¶/¹>®t>œÅÎ>†>r›l>Î>”mò>«,#>½Wä>ÈÙ >ͶÐ>Ìþ>Äâë>¹Fü>²Cp>±ôJ>¯¹$>ªS>ªH”>±ãn>¹ph>µ˜ˆ>¢™>Ž÷->Žòä> ÍL>°¸>·Ó9>¿]¸>Ǽà>ÃÅÉ>±~“>¥i›>®;>½ÁC>½}€>©œO>‚L>€£>‡ÔÒ>¡ªz>¾{m>Í]>Ê P>Ä…Å>ÇŠ­>ÍÓ>Óáß>ÞË%>îûé>ú€D>ø,˜>êý¿>ÜÎ>Õ•b>Ø™ú>Ø/ú>Ê™m>»æ(>·]>´i›>ª}š>›­Ë>’œ~>–õÄ>¤› >³ -g>Âe¤>Ô/ž>ßà>Þ³>ÑËÆ>Áˆê>³?>«p>­á >·¶t>½Û×>¼ÆÃ>»Ö¾>¼Žj>¹€e>¶$þ>·¿>¹q„>¹Sð>½2h>Êv>ÝFQ>æ}ñ>Ýv›>Éñ­>¹Í>²>­Ê>¨Ø>¤gå>¥‰>¬c7>·ÚÊ>Ú>Éû‡>Κ>Ïå>ÍjÄ>ŵ >±ª€>˜§>‘Ä>¤AT>¿¥ñ>Ш,>Ô5ä>Ïr…>Æëd>ÀNë>½çð>¾²¶>ĆS>ÍÀÔ>Õ›>ÛŸ~>æ¨>ïû^>ò¶0>ò6>õ¸t>ý`Ã>þKs>î³/>Õ¶u>ÂF>»)%>¾ò§>Çzã>Ï^2>Ìl¿>¸ô>¢•)>™ê> Ç>¯µ>»ƒ[>ç>ω>Þ¶²>æ™ >àïÈ>×á">×Áu>ß”>å/k>ßè[>Ôs>Ò Â>Õü&>Ðï£>Èì[>ÑE$>æ?>ïx4>ç>ØóÂ>Ë=’>¼RM>®Õ¾>§³>¦ -¬>§°³>­´é>µ >¸Ï>½„>Çäo>Ø8¡>æÑ>è]³>â¡>Ü.,>ÖùÄ>Ì<á>¹+c>£Ïõ>›xG>¤ò >°¸>³P >¯t>¥ë>•Ò(>>U°„>%Æ=ïá‡=¿Ñ4=ÖáW>¤>Bd(>m®Ä>„Å>‡`>‰òñ>“|>ŸÎ>¬J2>·®+>¿"®>À^>À¿>Åë/>Õ¶ö>ìv,>þN>ü­I>ëä->Þ@>Ü)?>Ø×>Æ°>±É>¥ã>˜A>ˆ¶|>‹ -à>¢ä_>¹»>¾­‡>·b‹>±Óä>¶î;>Çqâ>Üd_>îÁñ>ù³ø>úþˆ>ôÈp>ë/>ßÊ>Ííë>±t·>—¶X>Ž“!>‹ã>ˆâÓ>””>>²‹é>Óµ>涳>æcç>ÙÛX>Î:ú>Ƚñ>Ê­>Î6²>ÊV®>¿G>­Xþ>”‚©>xÖ’>m°¯>g>²?0>ËùŠ>ÓCz>×r?>ÛX^>ÓvÕ>ºÚ> †±>˜ ž> lú>®Ý[>¿ß­>ÉÁ>¾0Û>¥i´>”$O>”Þt>©:X>ËÝ©>í&©>ø¼ê>é8ñ>ÓV>Ö½>ñ@º?Íö??->útå>òšA>ï÷)>ó­6>ò>Ý4Î>½éu>´<Ù>ÑÈv>ü7ì? I?ü? Â? C6?_ò?¹?»Õ?:ë>ü±N>Ù?Š>Ç`¬>Àçp>Íÿ8>ê+>üÈZ>þKm>ýJ>þIn?s—? \ê?Ù=? -Äÿ>ëúh>ÐÍë>Ñò³>áÍ>òç?=Ê?%¯?NŽ>ø"²>ñ–I>øÏŠ?‡f? Uµ? ~? œ? …¦?α>üýË?_?I?¡ž?VR>ü~U>êæ>åÛ>÷#¦? ¬I? ü“?[¿?€’>ó¥K>ÖT3>°¾U>¤{¯>ÀØó>êY>þ¤9>øÝV>ê]0>çí>ôéÈ?-?ÙŽ>ñél>ñµÑ?>\? â? -e3?yR>÷—>ýEÝ?bú>ån>½Ìñ>®´>³wü>ºsœ>̤á>ó¼m? ÷©?ü›?Æù?Û2>õÒ>ë–’>þDª?@¬?ÁŸ? ?ÂE>ök&>é3$>ë@l>ìce>å¢D>áXU>å‚T>èºÂ>é>ç>ö_C?ÆÕ?b¹>á&>ÅQ>ÇŸ>â³­?7ë? v?ê>ø ê>äkÂ>âçP>ôÉ}?G­?9î?É?Œi?,c? ô‰? œ™?¨‹?—>ìPb>áÂÉ>åOó>ë1>ç|5>ØM•>ƽ>¾D>È×N>Ùª]>Ùbc>ÎN|>˨%>ÐÁ>ÓÎ;>Ô6Ó>Õ<ý>ÜEƒ>é´ª>òøÿ>öëa?- ? œ? ­?žU>õŒç>ä!Z>äá>øfÜ?þz?Ëb?u? ­¯?–%>ó />øy4?€ -?Ra? €›>û3>çþ>èò$?D(? eÍ?m? 0? ·W?N?¿‰? ¡ê?ˆ>óW±>õ¨ÿ>ýÍ*?“7>üWˆ>ó¾R>òÐþ>ýS‘?Ò°?Í:? R>ÿ4þ?,ñ?«?nš?Rç?UL?iX>öÄ¿>à´Á>ÕÚ±>Û¦™>ç»Ó>ò4x>ö>éh+>ÑV˜>ÈÛ¯>åb? vM?¥m?{Ü?‚;?N? t‘?Q&?´'?’ç?Å>ûNR>ð±A>ôJ‡>üÕo>öø<>ç‚H>Þû¶>çIÜ?üÃ?îÙ?––?,Å?¨¥?œÍ?gy?éÚ?/ ?óc?*¹®?4ÍÙ?5&®?+e²?½ô?¢?($>?/BX?-iÔ?+²]?*rØ?$W ?}‘??R+?!¼ù? [>ûÕ>Ö—|>ÊUÈ>ÐY>Ø,÷>ØQï>Òf­>Íœó>ËuL>Ë ’>ÒOv>ß@ï>ç Þ>êyp>ë&k>ëtº>ïÄ„>ö‚Ê>ûLº>úN>ô)>ø}£? ½Î?R?#!B?$u?!Ím? gö?$00?*q?/8?1Ë1?-g^?$Äm?!äÖ?"(Î?L¦?þh?™Þ?ò8>â»m>Ïào>Ș>Í\œ>×ó1>Û”>Ö">Ð̈>Íë÷>ÌIv>És)>Äôg>Âxé>Çý5>ѵ>Ö‘!>Õ¬>ÐO%>Ë8m>ÏÃY>Ûñ>çåâ>ña>÷Þ0>üûö>û¸ƒ>ô !>ñ¦Ç>þ£&? ?™?ž­? Þ?åó?à²?ªµ?/Ã?*è>꓃>ÙA ->Öϼ>Ø ¡>׬º>ØY>ÙÞe>àj´>îŸþ>ú)ñ>úp(>ò/B>çÔÝ>ãŇ>í)>ýS¹?ã?1Ç?2s?Œ7? ×L?KY?x?L?ò? Æi?%\¾?%(Ÿ?‘‘?Vñ?¿?%×?)L=?+¯?,t?)\(? âT???Ž’?Ï•?$³w?%Ý?vx?DB? ¦#? +?»U?]E?µ4?#$?º?ÕÀ?"Þd?$ÄÜ?(k“?/J¢?0ÿ5?(zØ?"šÂ?&õ?)?(Yb?)X?/ë²?5Ó?:æ?@¶«?D¯¸?GØm?L;Ä?O n?N±?N¯§?S?W}?O–ã?:â.?!ÞV? -5æ>â®J>¸‘!>¤!E>›ù>–ü„>—új>Ÿ±>¦‰ ->ª‚Æ>¬Sž>±X>½”)>Ò¸þ>èÑ >ôH,>ïJf>ßh/>ÓH•>Ñ>Ò¸T>ÓÜ@>ØrÌ>âñ§>ìåü>òà§>ôÖù>õè>ý#f?=b? ‚?Gó?‚¤? ?+Ä?9O?ˆ”?´¡?îÈ?è?Ÿ>ÜY>Á®>µÜ”>±ü—>³ÿ¦>¹yí>Á.>Ên>Ô˜,>ݽV>çmå>ôÚ? Ì?j^?T>úûJ>ø ž>ù3?€ü?‘?B(?é?öÓ>ûß? Œä?`?—ï?Ó½?e?òqD>éÇÀ>é_)>õD4>ÿY~>ÿäã?‚??DH>ø¾—>é*ó>çu>÷ô`?•3?ÂV? ¦…?uÑ?5-?Bü?.A?.,?©L?–£?Ùp?À"?$7_?%è¥?#Þ?ó±?¦½?(ö?/ˆã?-ÿ]?-!»?0§p?3±?0Áÿ?-›œ?0ü?5ö?;*B?@Bz?E‡?H•6?Fˆg?B$´?D7Â?FjR?EçÉ?L•ã?Yø\?`ìå?]2ó?WÀ'?YÎ>?bù˜?j'6?lfô?oב?ršÂ?oØ?fE\?X$å?Q{Z?\à?m Ð?sªS?q†N?{‘û?‡ÝK?Žâ?’Pù?’\+?øE?„ÄÑ?~ŸÝ?…©q?‹€²?…ôã?|¨S?€?†ô(?‹RŠ?(L?–¬ê?šÑÞ?œôë?ž]?¡Á?¦Ýî?ª„? œÅ?‚dC?11!>ÞT>¤Ý>™B÷> U9>ª]>®WÃ>«u>©ÃN>¬Ùè>³ç>½gy>Т’>è«z>ò^^>êSi>ä(^>êÔÒ>öjb>þ4>þËü>õíÏ>èœý>Úå³>ÔN>â6>>ü£„?Ú·? x¦?˜?ë•?“q?¦J?P×?o[?˜l?2?ØU?»ª>ö"3>ÝkÅ>Þ7÷>Ýy4>Ô±å>Ðp>Ñ4y>Ö²ï>ã¨÷>î>ìÙ=>à4­>Ö§¦>×=)>âý>ò8Æ>ý¨·?ó°?YØ?lE?Q^?;–?+?vïÎ?d´?Uá?XQ¹?]%?c•?q?å?|¾¡?€Ò?€ö?™a?‚܈?‡kt?Œ{J?‹#ã?…¶Ž?ƒÄó?‚_9?€Í?ƒ'‚?†úÓ?† â?…´'?†˜Î?„¥?€ìL?€0¤?}üÄ?}½­?ƒì?ˆ5¦?‘HÓ?š5‰?Ÿqf?¡ñZ?ŸM¸?šy_?–)‡?`Þ?ˆõz?‹÷”?Oì?ˆ^"?‰Â¬?¼»?™xs? `ü?¡ÿE?¤ix?¨\Ð?¥"?›×ª?–ä×?›?›e)?”Æ«?”e?“—?åÆ?üL?–Øm?•Ôa?‹h?„Q7?Š›+?˜“Ã?¨>}?´ø3?ºÓ?¸c?¹Ü?»ð?¹+?°£?‘¢‘?As3>çãr>¬>¨á[>¯P>­(Ê>®Ä>¼‰R>ÍD>×Ë>ÞƒA>ãtA>çbj>çÓ5>æ®>òçÇ?ŠÌ? °?ÿ?D»L?IÈR?L T?QSÞ?[³?XñR?Gäü?7oF?5èà?IÁŽ?k½[?‚IN?†U®?‚Õ?{—?}Œ•?ƒy´?„ýQ?~þC?h?RKø?Pex?\6¬?a„6?R2ï?9l…?8“|?F _?GÖ¤?Mõ?^?eø?h<Æ?z­]?‡ŠU?‰ -à?S»?r|Q?e¢¨?U1ƒ?HxR?JÎÛ?Uj?K6°?9ú?Lù?sL?‚•?‚¬&?‚®É?‡  ?‹£?‹_?ˆA?…¡d?…Âs?Œ›J?–âj?œR}?š_Y?—)?˜s?›‰~?ž†ê? ¾?œ0æ?ùµ?„úè?‰ä(?¹?”0Ì?À?§Ê¹?¬3?£¿ -?•Üï?‘OÄ?’E(?ŽF9?ŠLX?‹C?Ãz?’×?’¾?‘­Ë?‘©“?’­ú?‘“®?Ëë?‘³…?‘?ÙP?e˜‹?sAW?ˆ£s?Yí?‘ñ¬?–v1?˜?&?– !?“å ?Ï?‰2"?ŒCw?“Le?•6f?“kW?”q?”a¥?“¡7?œÊ'?«m ?´ÔŒ?¸ÊP?µž?¬ëV?¤b0?š¿?“û~?’>8?’ò¡?’C?÷À?þ?‘€ç?ó?†?cÓ?ŒN’?›Üp? Í?ž†Š?¢rA?ª/?rï–?yu?ûÇ?‚8÷?‚¬'?€Z;?|5é?~Ôö?zp?m~G?hU?h&??iãÖ?dðÄ?\pa?YD?\5é?dúµ?mñ?rsn?wÛH?zôò?{ü?èE?‚¾«?†BX?‰}§?ˆ+b?ƒâi?‚ú^?… -?ˆÌ?ŠŒX?‰_Ø?‡Lu?‡Ý£?ˆ‘Ò?ˆîh?Š›ÿ?Š¥®?ŠH4?o˜?‘B?‘­?‘j0?”$™?•’Ü?’^3?ê[?’òW?’Ì?•Í?‰QÄ?‹•°?îÏ?”ˆ?’Öì?^º?ŠQÜ?‰Sj?ˆ?”Æ?–½C?šÇÄ?›ÔÈ?˜h{?”ˆõ?”—J?–ß?š6?œ?ž¦c?¤‚z?¨Vs?¦š2?¦2?ª´­?­js?¬ð?«:?­xd?®IL?¦±?—¢ƒ?‹Á±?†ï?†sµ?‰lÚ?Šâ!?ŒIŸ?Ž¼?‘9?’Ç»?” H?”š¾?”°‹?•Ù?˜Ø?™‚³?™c+?™ª§?šöI?š8š?šðô?ž¯? îk?¡&?¤2œ?¬˜?´V}?·<“E?@Ƶ?B‹Ö?Dˆ‰?GJÄ?K:Ó?Oì?R Ñ?UG¢?X"…?[?[ˆ?[Ö•?bq6?gVÛ?hÃH?dB½?XK!?O?R3?Z«?\zj?Uz?Kâ¾?LgÝ?S™.?Zš‰?]eX?]à?^Õ?bEO?g²3?lÿ¯?oÊ`?mÑ?jò?k -F?lÏo?lqJ?m‚ï?qù…?vbÝ?xA‹?y’0?€h?ƒE•?ƒàH?† ?ìÜ?ìIS?÷¯ô@\@ª¼?ê‡?¿Z²?¬þÚ?»¨¡?ÁZ¯?·ÂH?¯î?  \?„°ö?b™ô?Q&­?L-T?R¬œ?YÞÖ?__=?bc¤?f~?m#Y?i`&?Xðv?TÑ?_Îl?l Ä?sÐ?uµÿ?mhd?_rÃ?PÅI?Ey>?D??@-D?;¨è?>:5?Bç¿?G’ ?M|?Q?Q³®?U(?Z¾,?]ŒM?_ó‘?d¥?eÓ¥?c-"?^×ì?Y=?IÉô?:•?=*²?GÂ+?O‡.?Lž?;)Ã?1nð?3Û?7V?:5¶?;\~?>ƒ¬?DN1?I>Ë?K•)?J ?Gwë?G#'?IŒ.?H‹Í?Kÿm?R¥o?Xçf?]ε?`„®?bc?f/Ã?kÇ?jäò?dÓM?d\?oß?É$®?Ëò?Ê s?ÑD?Ö‚?ظ?×Å?× -Ú?п?Á¸\?Á ?Ëw?ÍP?Ñ€?Õ܉?Ô\ñ?ÛŸî?ã4¹?ä7?ãÔ?åøí?ëTÐ?òø?ù|.@±?þ@?üý/@¯@Ë"@å3@qö?ñPŽ?ßZC?×ñ£?Û9ƒ?ߥ¶?å‹¥?é÷9?æŒ`?æI|?òö?õà?ôêž?÷è?ü<3@@Ò@ -3p@ ›O@ Ì{@ -s…@Ú4@HÎ@Ó<@*õ@ X&@¡î@cM@—{@°*@’ @ó@º,@ç®@hi@æ@!ÓF@#´f@% @(“@,ù@-™þ@0P\@,Qê@'ìÒ@!…*@ˆ±@)@Ãr@ü@‚>@!_@%9~@'¬È@*Àp@,dÚ@1@2áù@6zÈ@?â÷@@“ˆ@=óú@:uZ@>Ö6@G2r@G·š@?sØ@7ü)@=°Ä@FB•@Iã@Oxö@T½ß@Q›±@RÀö@U©@\µÇ@]w­@Y(I@YiH@]§>@^ù@X§U@T/0@]hÜ@gš@jNF@pp@m^@\«è@R£æ@Y¬ó@b7ï@a†@_êg@c>å@c{@e†E@eáí@cG@dîg@h´<@nYö@oq5@rõÜ@mÈâ@h–J@qG€@xÀº@zš@s5<@nD0@qÓ@q‹Ý@tA3@z)7@zlÂ@zGq@|ãl@w¹@nñ@xU©@‚ •@ƒ>@‚¯@ƒ`M@…òô@„£@zûœ@Lk8@³¡?çɳ?ø«?êc†?Þþû?ääÒ?ë Ý?ñ•Þ?øÖà@LI@æ@ É@ -y5@ -ñE@V‰@X@Ð¥@Pá@ @ r4?âÛ?±@ô?·Šp?¿³??·=?´cï?¸±Ú?¾‡ß?ÀÔ‘?Â0þ?Ç œ?Ñé?âd×?ïÇž?êZ?äS‹?è ¬?é ?úŸþ@ãÖ@Šƒ@pk?úü?À¯“?Ž=_?XÃ?–W?Ž`n?‹®?ŽéÌ?n!?’e–?—ÚY?¡Š?ªÈ~?¬¢{?®È?ÑÌR?×Æâ?ØFŠ?Üuø?Ú¼??ÔÙc?× --?ãªZ?ç°~?åV¦?íE&?ÿ@^@@ @ -×W@ €Ž@ ƒ[@Àê@ 8¸@Ô‹@g@@À@Ö@ĸ@Z›@ @"D¶@"n§@&Ow@1&k@7®7@/Òˆ@+!@0|f@;pÎ@=;B@9ÅÙ@7àx@Cvò@N¦í@JÚî@Pqì@Pœj@9Çx@8Y@H$s@Qàu@Pû@NÛ,@Ky¸@RÒ0@Zó@bZ'@bì´@a’@[èÑ@\aÌ@j?u@w5¤@vfô@mÖÏ@u§g@~¦ª@}[1@wœp@v@|NÊ@}ëx@€ðÇ@ÕÖ@ª†@€`@…m§@‰"­@ˆC´@„®»@­V@‹cá@N@ˆ­E@‹Ï"@‘è@•C&@”Ÿó@—¾Ñ@›'k@•’•@’7 @—0Œ@š.L@šñº@–ÁŠ@•±@‘ ¿@ˆÕ—@’óu@™ò³@wY@£@˜Ø%@ 9–@¦/K@©T@ª¥Ò@ªP@ª¤`@¬nI@¯Û@­þê@¨›æ@©B@¦@§¼!@¥‹µ@¡‹À@¨ -§@¬Ï*@¯œ'@¯Þ*@¨Iì@¦²)@±]@¶µŠ@µQÇ@²¨h@¯ß©@®-M@¯ Ú@«j¿@§6Ç@§%@®šŒ@¬Z`@¦S÷@«ôˆ@µcß@ºŠ@´ î@«.å@®z@¶µù@¸Ãº@µ‘@®5@²‘•@¶®h@´³@¶Ÿæ@º @ºðB@¼7Ð@»A¥@¶¿"@¶Ì=@º@[òû@\ä@Xå{@\6i@aÅœ@mnÒ@sKq@h‚=@h€V@u—²@€O@ƒ$@‚z‰@„˶@„ºæ@…¦@„Ö -@„ç'@Ø-@t ~@j°@[M @I™Â@Ss@b…Ï@jö@j1@dÕÞ@ja8@m5@l<‹@ps!@t­7@v@<@u|õ@x]Ö@}›€@€Û$@KÝ@ª@u0Å@kt9@o–‚@t;@tY¡@xp¤@V@€â|@´ @‚Ói@ƒð -@ˆŒÏ@ŒJ˜@–@Œë:@â@í*@“¸Ä@–qÖ@–¸ô@—n@“ªN@ŒãZ@Ž‡=@ -+@‰Ì*@sJ@}Ž~@€-k@€ÌŒ@†V@†C‘@†Èé@†Û@‰ë@Ãù@ŽAÈ@Œ:Ï@‹š@‰ýP@¹›@’º@“`î@”{@ŽË@Šö@Žã¨@‘—Å@‘ýÔ@òù@‘þ -@”1z@—ØÞ@šþÞ@š2f@—UB@™P@™Us@œú:@Ÿ›‘@ Ì`@Ÿæö@›X@—:®@›w@›1W@™˜@›ªv@žoÈ@™u@Ž?â@ŽîJ@äÅ@’+@•/@’"@”Dö@–OÕ@™³Ò@›Ý±@v@xæ@¡h€@¢²,@¤±g@¥PÒ@ Tz@œñï@šÑr@œo@›pï@jñ@&¡@¢@©qN@¨çý@§õ@§Æ@¢á6@¡¢’@¤ê³@©4í@®©·@²¿@²1@±X@±ƒ½@°Ò@¬':@ª5@¯z–@±¾¤@¯·5@¨¨T@¬û!@³·Ù@¯ÅÕ@«D@«·°@ª_4@ª4@°øy@³÷@µ<Œ@³ãÇ@¸ÐV@¼ü@»ü¿@À Ž@Á6w@š^@ÀÛ@½/O@¶1@ªÆ@¦ß‚@¸SÌ@Äá@ÇÁ_@Æéq@É”@Ë @ɧ@Æ›ø@ÂŽž@»÷@» Í@ÇO¸@Ìbç@Í"½@Í”D@гx@ÑÉ/@Ð&@ÌE@Íœ@Ê+o@À½@¾âJ@Èš¢@ËÆ@Ê -@ÒÐv@Ñ@Ï©£@ÑOw@Í¥i@ÕGÄ@Ô)¹@ÎEc@ÅŠÆ@Ç@Ìg:@ÌϦ@Îë@Ó¿æ@Ôê›@Ô%u@Ó];@Ñ¢2@ÓŸ=@ÓÉ®@Ñ5¾@ÌÓÝ@ÖŠû@×à4@Ù+Æ@Ü@Ù«@ÛCÅ@Ùì @Ô>@ÙÅ@àL@à^V@áH'@ÞãÕ@Û(O@Úù÷@àaí@àFç@Ýrù@Þ¶¿@à¿V@äû@æu@Ü¿i@Õö«@á_­@âû‹@ãþ @æ @äp–@á2 @â´w@åF,@äG1@á©´@ת.@Öã˜@Ùó;@ßkŠ@ì•ù@êÁö@Ø¥î@Óœì@à2ò@Ûþ«@ÚÖš@Çà@¼É@Ì~L@Õ÷t@Õ+"@ÍgB@Ð$n@Òàù@ÐÈw@ɵM@ÎFO@ÔfO@Ú¹@Û:u@ØHr@ÐÆú@Õú@ÝgÏ@Ùó½@ÓÒ @Ñ P@ÖT@ÝßÃ@Ûr0@×ýâ@ÔÓi@ÎÈ@Ëêz@ÍFò@Ø[J@à[@ÞÅ@Ú@ÜC@Ü›@ÝÇ@ÚÆ¿@ÕÃ@Ñ;é@Ô%J@׶”@Ö(F@Ðo@Њ@ј@Ëš@Ëx@Ë “@Ëvu@ͨ×@˵ù@ÌÕÐ@Ç83@Ä'‹@»“a@¼Ä@Än^@Ä‘,@Ì—@Ó"@ÖÅ@Óì@ÒjÌ@Ò½ê@ËÁK@Àqœ@Îlî@Ñèá@Çú?@À@È®¨@ËŸo@Ñšª@Ïž@Çt–@Á;ò@½øÛ@Å„™@ÉÎá@Ę\@ÍÞ @Ïc¢@ÏE@É‚u@¸ÂÒ@½ëÕ@ÑÅl@Ò @μÌ@ÌPª@Ì„@À΂@Äp¾@Æ+j@°¬¡@Á»@³Áî@­*ã@Áï#@Ï®(@˦@½èî@ÂÀ@Ë¥á@È2O@Ì×@Íl@ΤÉ@Ëø]@ÀKD@ÂÉ@ËU|@ı0@Ä¿ó@È.V@à -Ó@¶¬ž@¸ÆQ@̼ˆ@ËØÈ@°ëí@Œ@@£?@´gz@µU@§h¿@¥¤@§t¥@ª”È@£Åe@šºq@›¶“@œŽQ@ž×o@¥&¬@¦ t@ž¶@˜µ@’ÚO@œew@ U@¤@@¨!@©ªù@¨Öå@¦Q‰@¨»z@¬øc@­–@°(¢@°¨ô@¨øš@•ˆí@n€—@†\@¤$à@©d @¢§ö@£ô¶@©Õc@©Cœ@¡sÊ@—k@˜ÌF@œ¶Ï@¦LR@¨Âå@ªŽp@©¿½@ªa‡@©/n@ª] @¨â¦@¡ù@Õ@`±°@>’@‚ƒ”@›$·@¢\­@­AP@µÜÁ@¶hÒ@¶¤/@¶Øä@³õ|@·q±@»ò}@½¡ã@¼?@¶PŽ@¶©þ@¶1ÿ@¹`_@¾¯¿@½’@¶z@ºÚ@¿±;@Á€ -@À­_@½N+@¾ªÚ@À@¾P~@À#-@Ä~@Ç<Ž@Ȫí@ɯ@Æ‘@¿‹@Æq@Ì?p@Í H@Ζd@ÊÍ›@Ìê)@ÒJÀ@ÒU–@Ò(@Ò‹Ä@ÒœÀ@Ñ·Ø@ÓÙ@Övx@Óã@Ò&d@ÒyV@ÎÏ„@Ír&@Ï@•@Ïo)@Íl”@Åž[@«R+@s˜@É@²ø @Ç܈@Ñ1 @Ô­@ÌéN@Âàä@Ôé4@Ö¨ @Óε@Ϭ@Û¬Á@Ì2J@ÀIG@ÐvÍ@× ¤@à„@ßzÇ@ÙÓê@Üù@ß{å@ä}ù@äÚ@â¸2@áDÅ@ᘈ@åãe@â×G@âI@èÂ@êü`@éq@èØé@ç$m@èÒ‡@âœÉ@Úݹ@å„ï@é+É@é·@ï“@ïá#@ê[<@ì“ì@ïçó@ô@ðà*@í¶@öÏê@òqa@ë˜@æ,G@éü@òÕó@êKþ@ç–@ö¢ù@ó}£@ñ/@úŒ@ú·R@ü<@ýœ@ùü@ø$Ú@÷Û@ü -@ý—Ù@÷„õ@ó‚½@èg,@Ò‹@ßøN@øÙˆ@ÿ:AEÒA¨ô@üT@ôSÚ@ìö¼@âÏÛ@ú(:A¥”A)ðA›@þu@÷E˜@íS@ù†¢AimA:®AzÎA¼Az¥A½*A®ZAŽB@ä™ @ÈÉ#@Ô€Ë@àç@ÛÒ%@Îà·@ÌGÉ@ÎP{@Ή¬@ÏiÝ@Òi;@ØGL@ØþQ@×Íq@ÙÉ@Ùvq@Ù½@ÝN˜@ÛÃ<@Û‚>@áe:@çÕ/@é_:@êÕM@èqÞ@â7ç@âÔH@æÁb@çÉ©@å%†@àʵ@ìwâ@êo‚@æã%@ê±"@ëê@ç ï@í¨*@á{q@Þ«U@à&@Ýe“@Ùe@ÐÌÌ@ÛŠ„@å@å/@㌸@èŸ@ç›9@è9(@êS@攣@æd{@ç`ë@æÂÖ@æO8@Ý~Õ@åØ@ï@é@öu@óå…@ôsq@ðÓs@íêj@óÿƒ@õ#ß@ò Í@ã”<@ës2@ûk@ý8¢@øÍD@çâ@æ\ß@ïüÎ@ç÷ @é @ï]î@çeŒ@êªe@åÝ€@å$@ñÌœ@öEˆ@÷ý@îÒÅ@ï%7@ùÐa@üSU@üîÌ@úpÀ@ýø[@øæD@øôf@øí´@ûJµ@üÀÓ@ûSBA&*A ŸAâŸ@ÿÎAÓAÁ8AXA”¾@ÿVAd @öç”@ó¤@ã-+@â×ß@þ·ÇA[DAÎnAЂAÏwAœ;@þT@@ûhý@ÿu¾AóA.`Aü.@ô¼×@úw©AÈXAùAƒ«Aô A©jAªAûAÉAÈÚ@üÖsA¼@ý¤Ò@øÉ¥AÖ4AÊnA<”AÓ›AÆÉAëDAò‹Aó -A&8@þJ@þ·‡@÷¾l@õÿA¯šAÉAÑŽAwMA•~Af˜AðûAâEAþA¾µA¢A-·A ê@ýÁ¦@ú5¨@í¯Ð@ï4A)A@ü`ì@øOEA‡óA{@ü¢ÇAÏ'@û¹˜@ôU@ûÊ_@üÀ¬@ù…(@óÒ¶@ûGñ@û…ß@í“L@öë@ûbë@ýà‚@ø™@ó*¹@ô@þ|S@ú7A½AuA@üÛ@þÎx@úD @øÄÕ@þ-*A.@þ(W@øØâ@ð»@@ðˆª@ójl@ðµá@õ÷d@ùý=@ÿR‚@ü¸@ù&ù@ÿ;â@ýü»@úŽ™@û¿è@ù±@üR@üñí@ý–ª@þ€s@ÿ,}AñlA? @üÓ°AVéA$ªAÛ@ý]>@ûEE@þH‰@öl@öRÁ@ÿN@öCv@é¾é@ì»C@st@úHö@ûÒ\@û£@úf¾@ïõ@@úü-Aˆ@ù £@ùc@ýšy@ø@ö|¸@úx®AX}AŽGAæ@þ®Ú@þŽ€@ý`¨@ô0°@õàc@ûgÍ@ôÙ‰@ò\s@ü(ì@ýrŸ@üSZAG0APyA¿Aze@ú¤ê@ý4½@ûàË@öÓ@üOs@ýŒ@òVp@è@ùfû@þ¦.@ø'â@ølÖAÓA¬ú@þüm@û3AAù.A e@þBÿ@ÿ=qAþÊAĦAAíøArÃ@ü”ÅAœàA†ÿAÁ/@ÿä—A7gAfòA]¤AŸšAR€@ÿâ¶@ý:«A@AdAîÿAj¨AÆA\¶AÈrAœAÓ A6UAÉ@ÿtBAYõAÿ´A¢=@ó{@îÍA AjéAÈ(A/œA¿A±PAöŽAuTA¾b@ý!†@ú›•@ú DA…—A%A¥AðüAö¥AÆAþKA …AäêA^î@ÿèP@úšƒAÆýAîA4.@òLÖ@ûñTAAƒ@óø@úùA¼úAiÝA‘@ý;Û@õ—@ù‘Aë¸AúAÎA<éAU@þ$úAƒöA¿Ž@üñ÷@ù8@ÿEn@ÿÎA!,A_ALA³YAûÐA‰@ÿqÀ@õîCA‡\AýA{-A5†AïA~îA™BA-ÜAþÇAéÝA[©AA€A¡^Au>A…;A@üL?@ûèQ@øŒ„@ú¨šA¯°AO @þ½á@þù|AÿKA8@ü”Æ@þË;AŒ#@ü5ÖAGA$,A%@ÿ$‘@ûæ‚ADLA%‹A{AdkAü*A’AÍ^A3Ô@ýóð@ÿÓz@ú÷9@ü°AþAÌ@üŽ$@úÁ@õRÚ@ðÉ>@þÆ”AµA¿AóAªAëýArAðAšCAT©A›QAåáAI@ýC@öÅ¢AKrAóA«„AÑñ@ô8@ùQ—@åj™AA3A&ÐA<‹A³DA8á@ÿÜÕ@ÿéŠA…êAž%@úMØ@ûÚ²AŠAXEA»WA/;AJAˆÝAºaAAˆkAkGA .7A JA8ÁA—…A†¯AìóAõÀ@üæ¹@úgöA´±AcmAΘAØñAbA!EAiAiyAJÑ@þ¤†@üÏ9AIxAàA‚AÇ™AqÎ@ýÿ€ADøAOcA¬•A½•A„A@"A¯˜AÝAȾA0 A-áAlÜA^ËAXÔAþAAH¸AØÄA]ÌA4œAŠéAŽ‚AZATFA_AéAÌÉAÔANA,´@ìIAAÏ At¹A¦)A A¬¤A+K@öô*@ô=˜AÄÍAÌ&A?ùAgA3„A׌AtAè‰AÝA1sA˜ -AŸˆAî'A{ AñåAf´AÿEA)÷A5hAótA°(@ð -@ûÈÃAŽ&A‡1Aë4AÛA o@þOlA¤ðAˆ˜A©AU@þH²Aî¶ANAGA¨HA>kAh AÉ2AÇ\AHxA˹A¡!A4A@ûÀ˜@íy9A@u@ø öA&žAá8A;bA-ÙA~'AóA úA_A^uA‘èAHÆA1ÛA24A™œA{ðA›u@ÿ1A®A‡•@û+ @üÐAZA¤ÀA&ÀA3A ÑAûtA‡5AƒxAg¾A=@ü„ŸA&\AR@õ‚t@ådîAÕ @þQ\@ýFOAyA\õAÚ -A>=A³·AîÒAE›AÆ AA[A²×A?WA'xAò AöA—@ÿ_>AH6A¾HA¾×AG¿@ýÁ/@úà_AAkA‚A;ûA"A•dADTAíAiwAõIAþE@ÿ´âAuÿAÉ4AyAÀ¹@÷ÿÑ@øÆAKAŽ Aâ3A^AIA‚ -AÛŸA51A A¨ŒAD Aëv@ÿÿ;@ñùh@ðû4@ùÓæ@ú†s@úéæ@û%Ô@óû«@ýË?@ÿl@ý”@þ¸/@ø‰@øàs@÷à @ÿ A@û£9@þº"@ý«j@ý³¾@÷‹P@ôN@úx@ù@š@øvrA‰£@ÿr¸@ò}ö@óî@÷Â@ó‡Ì@õlº@õ~@ð×°@õf£@ûè·@û¯Ã@ôr|@ò¢@øpô@úþ¹@÷¥£@ðu%@òPö@ù¥X@ÿTf@ö‘n@ôÔ~@üÎÑ@ù¸ú@öfä@óy@ý[j@ú7*@÷’}@ö=m@út*@û7Ü@ùIR@üÓX@ü]@øo…@êų@øA;è@þº³@þ–Š@ôìe@ûDòA…´A4AY@ôâú@øf‰@ý—A+@ûž@ë´C@õyþAÀ;AÆ@ü˜¸@ù+Â@ø^ù@û©Aü@ý)Å@øy¢@øt@ùÆ1@ý.'AÅt@õWR@ø£Ý@þ„€@ÿôÌAAãA!@ùy -@ü’±AŸ±Aô½Aú@üÉu@û‡@ú?3A»AŽ2A/Ž@ÿë¾@ø=^@õ@ýäú@ïQa@æÃc@ó_@û»Ó@õJAOÖAä6A¼Aæõ@ÿh®@ùÇr@ùµ'AÝŸALyA@™@ýÎ7@úYf@ö´^@óŠ@ùïÏ@ÿOQ@ÿˆÌA½Ð@ö§@ø#¯@û7'A ÆA_A3A -@ýób@òýO@õ6A›%@ùÖ†A“!AŽoA¢@ûÏc@÷©I@øD‰AûAñÜAÓ§AûˆAm@A3ö@ìè@òý-@ù«@êçR@ùË¡@ÿJË@øÞ@ò&À@ûôD@úW@üL@øª½@ð° AMãA"ºA *@ÿaA[•@ý¡Å@ó.A§AÅMA{ìA'@ú,É@îÉ@ù³WA“:AÒ{A.AðA‰„@ýó¨@ÿ !Aê.A|>A†©@þP+@÷ŠcA›‹Aúþ@þè'@øÐ@ûbA§¾Aw¹AýA×ASåA©²@þÂ,Aâ6A2A´éA -Ü@þl½@ÿñ=AY!A6g@ÿx¢ABAƒAÚ_@ÿi¨Aj½Aç_AÌ\A,ð@ÿâËAdåA [AÏAÆ@ÿoA¯ŠA, AÍ@ÿ¸uAŸ‰AÿAëAV@ûéƒ@ëð@öS AU†A„ŠAMb@óº4@àÏÚ@íÌAn A³AÈ1A”ôA¼ìAu™@ýƒ@ý.@ýú@èuå@ùM/A:ÎA—AåÇAÝ1Aà|AeATAø—AtC@ûƒ‹@þZnA-A¼AAà@ü£?AL,AEÕ@æôg@ñj+@ÿscAÌHAÛ‘AçAמAã-@ÿRòAKAÌZA:@ÿ÷1@ÿ6ÒAdA2`ArñAFÙAAð.AѦA4ßA›uA)ÖAî4AðQAôBAØ Ak2@ý&X@òºn@ðÎ@ÿ™Ê@ýUC@è¤æ@è‚„@ÿÀRAYöA³£@þœw@ô—@ýµ‘Aº~A\‰AbÊ@ûýñAhA'íA%0A¹f@þ`â@ã™@îlA”œA|VAØe@ýh@ÿÌÇA·ÇA"A]øA™\AQA ÛAAžôAóAД@ý9Í@ÿÒTA-õ@Ý8¤@ÔÓ”@ý9ý@ùW @ìñŠ@û³ÅA–ÕA²ð@þùn@þž@ý£Ò@üžæAvDAœA2™AMx@þ›*AÀA… A˜V@ü¨a@ûO€@û6%@üÞ¼@òô:g -$:Dð:¬N6:ÐX:øûq; H;,Õ;Sj:ïPu:á@¯:Ùö':Æ$¨: 7d:l1ô:4íí:0×Ç:dk:¡n:Ù”î;±; ó£;%¤:óØ#:Úôk:Ê»é:»õÕ:±‰5:½s%:ì";;>_;W¶C;`ñZ;[Í8;PO§;FŸO;?FË;7{];3Éô;<ÍÐ;OØÔ;]/à;X׉;E=F;+OÐ;aÈ:î :Èu¾:¾­ó:Ü r;3ž;?EÌ;gJ;y«;s s;`Z ;MöŠ;;WÃ;"ä;øÛ:ËJO:¢§T:•Jè:§ë|:Ô€±;ú;”Ú;#£‰;,ÿ`;3#C;+±v;Ðw:ÒÈ:—¨:U·:¿ÈK;˜;Z¤r;‹Üà;œgö;ŸF;žlý;¤ ¨;³'^;Ó’;Î K;Ð^Ž;кÂ;Öô;Ýaõ;Üsÿ;Ñ5;ÆŸ<;Ç£’;Íû;É_;µ¶Ü; õ÷;™@¹;þ`;¤ä«;¥EH;œU;Á;…gÌ;Š!L;”•Ü;–sÏ;‹Dg;wÀC;c‚;\,‡;\ŽÏ;eJ;z|¡; ô;œ;¡“ò;˜N;;† m;rÀÕ;wù3;ˆâ±;”…D;œDJ;§[;ºd-;Ñ ;ã;í(Ê;ì`;áDÌ;Ðöw;À­g;²ÅË;§qÆ; &Ð;ŸËW;ªxH;ÃDÍ;äù;ýeŒ<É<<Š6;öï,;éh€;Üm*;×Ë;Ü -,;äöz;ægà;Úsd;ÇÉ];ºáb;·Æy;¶m¨;®âß;¥©æ;§sÈ;¸Ôù;Ï9,;Ýj;á‡;è6;ø}C<\·<Ä-;û!B;åfÇ;å?¦;ÿlû<Q< <t<hm<ão< u<4´Àq<‰ ­<‰„n<‰Ü€<‰n6<„×r½<2#-<¢Ù)<“j<ŒrÛdq=[ä?=iu -=c¿Ô=V;*=Qº,=[ =fä‹=l'$=l±w=eâ£=O“È=0Hk=Ä=!™i=+•=(•¡=1×={Ï=6µ€=UC-=nƒ=z6á=uwo=cY=P– =Jrj=OV=Næ8=CÝ„=7Ã9=0·W=+j_='>Û=+=:åq=M¸Š=U,ë=Nâ…=EC=EÔÀ=XV=vÈ=ˆ¼"==’öè=“X=«o=Š{_=†CD=ƒ[a=¶¤=…=Žaá=–¯z=—èx=‘ ï=‚Ú…=f•›=X“=fܶ=„Üæ=”3=—¡Ð=’ =þT=‹É2=Š<=†ÒÕ=}·=eZ³=Y -Y=Z]1=WÔx=Lê=B;e=9ë=,o¤=°m= È= »Ë=Ie=,«£=Dsî=Z»=dx=_À|=X/=Xo’=gb(=©¾=‘ç0=Ÿß=£ö=)z=“Ö2=Œ=Ð=‚—u=cô,=:=åF=ïË="x=0 -=6ÀX=D -¯=`C¢=°Ì=©C=–_#=–ÕÆ=’¸å=‰ü}=|9…=cbá=F= 0`<ó)Ê<Ím:<Û§ =P|=(iI=JT=`z›=gm˜=_l=OÀE=G}¿=F»s=A_4=5ˆC='ü=IQ=Èi=8<ûiH<<óuT= =.¼÷=Nv=ZC=U'î=KÎó=@ “=/ =n=½™=ç=¯= èÌ=šh=ד=>©æ=fBk=yw8=‚z=i =™]e=š9·=‹¦A=iÑ=Ew=<³t=PLñ=mâ=g=€i=p?=f*À=h…Í=i:_=jcÑ=æ=“ =£À†=ªf¼=«KM=­=®"e=¨´õ=ž 3=”ç -=Žé±=ŒVÀ=‘!à=î!=¬ =µêµ=ºB¢=¹ZÔ=·0ü=¶°î=¯Ž=™]ð=y²¾=S@Ò=HY‡=P–£=gÑ=ƒª=ŽB^=Ãß=„W={{è=~‹E=/=oMi=M¯²=Aw{=`@7=‹V= }6=©áÄ=«lŸ=©‡2=¡h[=®==yG=pœø=‡q=šË|=£8d=œÚ(=Ô#=}où=hÀ”=ZŒQ=RíO=SYY=Oë¦==Òø=!Ð = -Ò*=[%=v=)%=³=i”= “d=ÔÚ=3ÿ¯=HuZ=]«=p(‡=s¿Ã=eX¡=P+Ë=B0=E“ -=Yº=t#k=ƒwê=ƒÂP=r†=P¿T=9 =?\;=\Uu=v²i=Ì>=…Ê=‰C¨=ˆª‹=‚÷¯=r5/=\M=UM=eð0=€hô=‹ Î=‹¾:=y¬Ø=M:=4Eµ=3ú=.Ø®=æS= ©Ô=C;=C -à=]@!=`º=Y=^÷=s0ë=†Ns=‘Õ=›èY= Šw=š^=ˆÍw=jl.=W4ð=UÏg=T(=MŠ[=Chò=9.ù=Bñº=g´=„¸=ˆ£i=ˆ™ó=‹tM=ˆM)=l$=<ª)=*™x=>˜]=[þj=n ·=~„=‹«?=–h±=–ö«=Ž -0=‚d´=zcº=B~=}&v=i1X=UÀ#=WLû=jI={ؤ=„Y>=Šßa=‹ì=ƒÇŸ=u«À=xï =‰-ù=—|d=žò¸=­x=—Eÿ=mý=‹nÉ=ˆ©”=†éú=†=‡ Ý=„ƒ`=o;Ü=I×P=. =%ð=*Z=5ÜN=Í=˜b·=‘ùÀ=š©=®LÛ=Âx=Í®I=Ðâ=ˤv=Â5ù=·‘=´—›=¿0=Ï è=Û’=Þû9=Ø·Œ=ÏT=Å©®=¼ß=¼%5=Ë°=äRf=÷Ñ`=ÿj=ûö=î;!=ßôå=ÚbË=Ý1˜=ÜŒ=Ö‹c=×Íé=ãØ=ï¸d=÷”>WZ> R> -šò>  š> àÙ>O>> =óü/=çÿ†=â©?=Ý®=Ò`=ÒÅ=éýö>~N>ºâ>,> â“=îÍ=Åq7=°=¦w=¨.=À W=í¨N>²ø> µk>%-‹>–„>&>·í> -ó>0\=îq2=ÉÉâ=´…Ü=¼‹«=×Ô‚=ö‘>º)>zÝ>‚{>çT>›> h¶>¢þ>î> -3¹>*>ô¿> -Íh>/@>Cå>D¨=éü»=é<§>œ‡>\>A>f>"¶>!Î?>K5> !>?²>JÇ>G>(Í=Ù£ê=½5=Æ6=ð¬S>&Õ>ôí>Ú€>0¥>r]> Ñ“>#Òj>( Ÿ>1q>:Òf>=êF>7çs>,a>$(>#Á¬>$¢Ê>+>W´>ÅJ>˜ð> Q‡=ýq\=ïHð=øU >+²>Áz>"@1>2u±>=C >9j‘>*(>’ã>w3>kð>ÉÛ>3>Bc>‚Á>X«>qp>@9>›>ßr>Œ„>·´>}p># ^>/ƒ·>8Vk>2`¿>!ùó>”>ûs>‹x>–:> -þå> £> ¸Î>Oi>!.Z>)4î>.U½>0Â:>0WÙ>,*i>yâ> „ø>öe>?^>4HÂ>A¾:>A8Ä>9rF>0¼b>,Ò1>-ˆ>/£>5»>=p>Cí¤>I˜‘>S†Ú>^PŒ>bóì>d!£>héy>p ª>p;>d–Ÿ>VŸ>Môß>Hs¬>B€ì>@dž>BD>;È_>'å>>>T>&n>º>+¤>$øŒ>/7 >=˜]>GÙ6>H¤°>E0>EÒ>>JáP>MÔ>G€¿><ðu>;UŽ>AX>A^>>—Á>IhK>\WE>bÎî>YK+>L¸C>B[9>6~ñ>*Cé>#›š>$D¡>)]a>/öþ>4]ã>4Ú¨>6_P>>7€>KÜŒ>W[2>WuÉ>Neæ>DÎs>=?…>2ýô> j> 5µ=ûMÈ>§>òy>>€´> -o~=ûû@=رV=±ë5=Š‹=E_ƒ=­‚=(×ü=v¹ =¬Ù1=×ý¯=ïr‡=òpÙ=õRý>Ï>#>%ˆ˜>/êV>8uñ>> -->AM>Fß÷>T!¯>g‹>um„>tË >j{>c×T>föô>h1>ZTî>Fjî>7s>%{¿>I©>†È>#Ñz>6ÓE>9s>2H >/Û;>7è>FÎ>Zb‚>lŒT>w“ >xûÅ>tÃX>oˆ->hÜ >Yi;><·> ©e>…í>ª*> -²®>†>-Û“>JÚ”>^V>bþN>\L¶>QVž>I\$>KZÀ>SS>UÿÏ>P„ >AjT>':¸> »†> <>Íx>Då*>cÌÝ>m„º>m`Y>i‚@>]j·>Eó>,âl>#º£>-¹>?jk>UFQ>d)=>\$>DÕ>3^>3µÓ>C!°>ZÆb>nµi>n̶>XŽû>>c‘>8;«>G7å>VJ³>Z'>YGŒ>Z¯S>_æ>gö1>jÁk>^¯í>HÃ×>C”]>^Ja>€`c>‡Á=>‡¤·>ˆj^>Œ_2>” >žl>¤È«>§*>ˆ¼P>gk5>Nz >EÍß>Sé>pUÎ>‚k±>„DW>ƒâi>‚¤M>ƒB™>Œb‰>•u2>Žˆ2>uy‡>V+º>L¯>P“ >Zôä>i‚¡>v?w>wÕ·>qr$>oˆ>uŒ£>~h\>ƒ0›>†½>‰$¿>ˆ«|>…KÞ>‚ÍN>„»€>ˆb®>‹m>Œ¼>‹,‰>…´L>‚þé>‹çß>›Ó^>¢Ëa>Ÿp¶>ž™Ä>ŸZ>”#_>|ä>gõ>;>™7÷>¤¾>œ'>ŽÖõ>r>—¶¡>¡ò˜> -j>’Œ>ˆ\V>‹ç>“!ÿ>“Б>åO>{>—ñè>žèr>–D×>„¿>wó™>x*ä>z&>†qÂ>Ž5>³£8>½Xè>¿¼k>»äå>±Gƒ>¬Õ>¶•>ÄIú>ʇ>ÀU>ªn>’£>jI>tÐ>l€Ž>bK>]UÍ>eÑœ>t`*>€h÷>ŠW>–ŒW>—÷à>‹'Õ>wã8>rò>‚=¢>Ž*z>–ÓŒ>—ÀT>‘Œ>ŒP>#=>˜i¼>¥õ–>´KÔ>¿ƒ‘>Ä~Þ>ÂpÜ>¿]X>¿ð¨>¿â+>¹f >­S³>¥|>©{Ö>²(>± ò>¡z>1”>z½^>n >ov=>jþ>_ˆ5>^6ü>jÞ~>wP>zðü>y¤÷>~A>…ã>Œ‹ü>‘¸E>˜ƒF> ü^>§ð>§¸‰>£eç>?‰>œ~h>¥q§>°Po>·j>»\>¼Sˆ>¸@¤>²y{>¸v>Èš#>ÔOº>Ò¢k>ÇÔ¸>»¢L>·\‰>Àu>Ë­Õ>ÎQ>Ìr>Í6N>Ï`o>Êgé>¼I>¬€è>¤Dæ>¥$>ª‹œ>®÷$>°&Ô>°;ƒ>³ÍL>¼Ñ>Äñ‰>ÈËx>Ç¡>Érl>Ö >ã@z>ä¤ >ÞŽú>߸<>ä(>ßIB>ÑØð>Ìh>Ô¶»>ãQ>ïèv>õ¨ú>í(>رÑ>Ëî‘>Þ¨"?_?BY? Ä? °›? ¤ì? ­ ? ¡?< ?)Ï>ûPû>ê—o>ܬ>ݳ‚>å|Î>ä$†>Ú"Ô>Ôã„>ÞÕª>ö?Éð?ï3?i?_÷?Nu?ïž?SÈ?µ?&Í?0t?:|?={#?8[Ú?0aÄ?2-?>?A?Em0?B-??[ž?BEU?C›6?;¡l?25,?1Î?,îo?¹í>Û¿>¤ö’>ÖW>‹õ‚>“1>›_ > ™¤>£©€>£þ>£Ã>¬€«>»Dü>ÅÜ’>ÉÊ >É«Ä>Éb>Ϥ>ÛúI>帛>æû˜>à°>ÞöC>óÊ? Å6?ðÀ?%W?#±Ð?# F?)¤L?4Ÿ?;*?<I?4?'‰Á? .ó?5¶? ä? Ÿ?iM>è9î>¾•>¥q >œËN>à>£ù²>«=x>¯¿>®óÐ>®äK>±¸>³;î>´Î„>¶¨>¸T>¹¾I>»G>>¼éC>¼ì;>½­>Ä…­>Ï`¿>Ø Ã>ÝÑû>â^†>è&þ>ëA+>å>ñ>Ý5ê>ág‰>ó$í?ê&?s? -6? -»W? Û.? +ö?šq>þ?U>äÒ.>Ðy×>ÄÝÒ>¾N`>ºè/>»’>¾*+>·ù>È >ÍÕ#>ÑÞ+>ÑŽm>Í`û>ÊÈ8>Ñ–·>ß#>êD>ïš‹>óR3>ùǹ?}?üÈ?: >ö!ö>ñe>ô/L>ù]J>ý‰*?á?{Ú?A4? B@?”K?ž8?H!?P.? ›7?[©?¶?Yá?ÒÛ?ü0? IÍ?B>õ·?>òš.>ùÕ}?Š1?ß?uü?Œ|?¶ö?/Ú?Ç? 4¶?!*?"Jö?'ž3?-²ƒ?0_º?1¯M?5,…?:šo?8ój?)0¿?ÎË? j?-7?7%?=·?DÅ?Kt?SÅÖ?^Þ?g†¼?o£?x¯?€¹á?ƒÅr?†}?Œuò?“7>?G?|XÞ?Iƒà?È7>á$>¥)H>‰œ=>€y—>yîÄ>}1¶>„xŽ>Œ<Ÿ>“ã ->›15>¥Âh>¹d_>Û9×?µ&?b?qÌ?£¢>ó¾A>õ|?Ò‰?Gª?J^?…>úá¬>ü>þL>þí??âw? ;?´?xp?í¡?Í|?!g|?&+ ?.B?:Y}?>½E?.ŠS?>Þ”Ú>½þy>²áÂ>¯Æ>±¥û>¶áÄ>¾z›>ÈZ>Ñ2x>ÙiŒ>ãá·>òI_>ÿ±Å?À›>þš>ù„ˆ>ûjâ?ÜÕ?&W?}w?51?è6? ’¿? †@? -]? öÙ?6?äO?%ƒÁ?18È?;˜k?:ï?1,?(´O?!Ǧ?  \?&KD?)à? 9o?Út?žé>ûÉ€>ùçM?}ÿ? -%È?z-?nÂ? úœ? h‹???Ýh?çó? ¿¼?ÄÊ?4Ö?™'? Y?#?ò?$°t?&|Ö?*ªÂ?/¬O?1Þ»?2DG?5ö˜?:ÔW?<{ð?<_V?;Zª?>k‹?GV¥?MÛ¤?PÐ?TÙ±?ZRÂ?^Ò´?_úl?]a¹?Yû?T·º?RèÏ?TL?WãG?]…?a¥?dx}?i³ -?lýN?lÛZ?qp¦?}Œ?ƒÎ¢?„|½?ƒÄd?…Äx?ŠÇ$?ua?’õ?”)ù?•_ ?•„K?”†ÿ?‘Ý4?‘ô¦?—y¹?žHQ? †? œ?¦B?²g?»7?¿ì!?ÁiE?½mÅ?²M?«P°?µîÈ?ÿY?Ó?»°c?»ê¿?ÂŒ?ÅQ?ËdA?Ù«W?æù?é"3?çC*?êWC?óí˜?øæ9?æ ?®_?GîØ>Áú¦>l`">RzF>X˜ä>`™>a¨N>^zë>`%O>js§>w‡ù>‚¦î>Œ·4>™ž>,Ñ>–Š?>’X.>•¸c>›U>Ÿß£>£ u>¢ü(>¡”>ßF>žÿ£>«C^>»^V>Æ.„>Ìø?>ÓŒ^>Ö×Ð>Ò%û>ÍœT>Óä¥>Þ'Z>å–×>ëÉT>ì̃>Þ9ƒ>½K >£Ž >ž€/>æ>›Aý>œ'>ž×> @W>¦8>¬ìÎ>®X(>ª¬>¥3¿>¤¸T>« %>´-×>¹µ¸>ºÍ/>»/Æ>¾+ >Â_ >Ƈ>Ë¢à>Ô¡t>ã¯i>ò÷§>û¹€>þlæ?XØ?ø? ï? a?Ò4? |i? ?R,?‡8? Z‡?+^Î?1•»?4Ï}?6à?1êŽ?)€?HŒ??ð?!˜?/ˆÏ?=V+?B£?@ª+??>?A0%?F·o?Lð-?H\Ç?<úò?=Ô½?HJ¿?Só4?ay$?g‹?aù¨?bÃà?kŸc?pb?nñè?j l?]ut?Uå,?\N?d•ó?l¾t?zß»?÷?€D?}ŸÞ?}–-?Æ?ƒ‡õ?ˆØ?‹°V?‰m?„À^?k£?‚Gs?†=º?‰~-?‰ªx?‰“?‰˜î?ˆ[“?„½Á?‚,‹?{ðA?z¤•?…‹S?Ž®ð?—Ùö? ,?¥Åà?ªÀ?¬‡æ?¬[ -?¨(?Ÿ§‡?š?ö?ž´?˜¦?žvC?«š?³Öå?µÅ›?²¦>?±%Õ?±\p?«µ4?¡ãz?›°?¡(¸?¢9e?ž”?žlû?Ÿ»Ì?œñd?œò?¤–?¤Ì²?˜áS?“£0?ŸYV?¯z?ºÚ˜?Äl?Ên‘?Ìò?Îl$?ÑZ²?Ñ­•?Èš?£ð?FÌ>½ó>VéÅ>?PÐ>GuO>L™>QJü>\Û¸>hh=>p•>w4¨>~ P>ƒ“>†.^>‰M>òÎ>–öÅ>œ8“>¢¨ ->ªš>°ñ>´4_>·Q„>½ù™>Èïë>Ö¥3>ߤ>àé$>ß¹Ã>Üù³>ÖM>Æp&>²¹Â>¬ >´ç>½]k> -z>ÌJ>Þ¹c>íØ>ó>ô'>ôÃ>÷áú>úòT?æ? )? Pò?Â?ç9?íí? —«?º£?%þq?+w¦?,ä\?-±u?0É­?3̱?3~#?-ëå?!{³?h? ‰'?Xý?‚À?}ð?ö?X*?c‡?öx?=?"ŠÛ?&Ý~?)s½?7[§?G8/?Hü ?:E?,@Ð?%¤_?ÊF?î|?¨å? ~?µ,?yŠ?6è?6?Á?C0†?CËT?Az¾?B*6?E>ä?FÍ?GBb?Hš¨?LQˆ?SSë?\Ï?eRÆ?h´?f‚®?h±?n=S?tß~?z ?w ?g°¢?\Ø—?cˆ?n;ñ?wí?‚Z?ˆ€q?Š!É?‚år?kYÿ?[Â?VC?N¸I?Kä?O.-?W\ ?^Ù?eLá?em?j$?lz?fZ¤?añ@?o -?¾?˜S÷?›*?¥“½?¯Íá?·×p?¿·?Æé‘?Í›,?ÒŠ?ËöÒ?­úÚ?€úY?8ÁÛ?CŽ? +ü? -çç?€÷?N@?EW?‡ ?ßT?þ?…Ÿ?&ó¹?/ˆù?4ð6?8¢2?:!L?9xê?9ì´?>k?Dê?Ix$?K¬?M?PBæ?U½;?[iÐ?a;ë?hàÓ?pgõ?s«Ø?t=º?tÚ?tvÖ?sèñ?y1?W?„Eð?€¯¾?isü?Qªˆ?H?/?EFº?Fr?LÑ?Sro?Udf?V³?](?d\d?gí\?iˆ?iíÈ?lô,?tM•?€QŠ?‡N_?‹U?‹+?‹Už?Šî?ˆ?…Á?„(J?„‹€?‡-æ?‰Gø?‰qü?ˆåE?‰Â?ŽÆU?•·m?˜-ô?˜…?›·¤?ŸT?Ÿ;Â?œ‘—?™{ó?™e?šˆŒ?™÷þ?–­?“¨¨?“76?”0@?”6Ø?“ÌÈ?“½±?“"‹?’ÏÊ?“Ñ -?•­ ?–y?•Àï?‘ÅÎ?ŠZ€?„c¸?-|?~1?~Â9?µ ?…UW?‰ œ?Šà.?Š]I?ˆªª?‡Õñ?‰Â?+?Ž?L?Œug?ŠpÍ?‡Nì?‚•3?—?{y?q¤?X°?Cól?IUµ?ZD‡?cŽ?\)?Q‰x?P$ü?T^ß?YY ?^£?bØÿ?düÀ?`k?U.m?K Þ?HØì?Fˆì?B¤?BS§?EH?H”C?L&?M>S?G¢%??L?@´d?K‚G?T|¸?T†È?Ob0?LÄy?K’W?JáÏ?L],?N_]?QÈ‹?Vý?\L ?røê?x¯?¶%?ƒ8?…3s?…'?‚ûS?³ó?‚8ï?‚ûµ?ƒ©U?ƒwÜ?ƒÎ ?†~?ˆ‹:?Š“ç?.W? -—?ˆb?‘FŒ?”à+?—‹Æ?š^ -?!ö?œíÍ?—Û?‘í¢?´+?v?Œ n?‡Œâ?ˆ«C?ŒôŠ?%­?gÃ?Žó–?Œåú?Œò¢?‘pj?–(€?™\Ã?›äÈ?œ*O?—¾r?Í|?Ž¯Õ?‘?•,4?—© ?šý?žB4?¡ê ?£-˜?¤Gt?§>á?ªrÆ?«Æ¨?«Þ¨?¬{÷?«®%?£þ¬?•Ö…?‹ž"?‡)I?†q`?‡íØ?‰7?ŠB?ŒŒP?*×?‘y*?“¤?“î?”u?a;é?fsš?c¼Ï?U 3?OéÕ?Zÿ?gqE?p·Æ?sf†?jl„?[Oæ?M%?Bœ?B¯Ø?>¦?8x6?9¸)?BÃ?HÍj?Nú ?Pèï?SFR?XL0?J@ä?Tt?Phl?;{?.*i?/—6?3Ñ€?7ùÇ?;]-??Ÿ»?EH?Iª?L.m?Lƒ{?Kü£?MÓ?ƒé?‡?‰ï×?Ž(†?’“ó?”Ÿ?”<Ê?’TV?Yû?3õ?‹x? å?“ñï?—/Ù?™VD?šÈt?œ¢7?Ÿæj?¤éù?¨Ëþ?ª¼“?­Û{?± ?´‚÷?·Tý?·À?´¬?©º ?¤#h?¦üó?©ä?¬Þ -?®!ü?¬©ì?¯Dž?´HQ?¸j?¸Þ¹?ºø%?¿Ô?ÅhÛ?Éò³?Ê—­?Å<€?Àp?Â0¤?Æ+?Á¤?³}?­ñý?®³?ª0 ?¢º"? ´á?¤Ô†?©:g?¬¼?¯ÞR?²èø?·(±?»nx?½Õú?Àˆ‡?ÄØú?Éj?̼?ÉVì?ÇÄ»?Ë<Œ?ÉM$?¼ò -?µã?ºaŸ?¼üÛ?¾+?À¼¥?ÃÀÓ?È‚T?Î3?ÏÐ?Ï}m?Ïlí?ÔÛ?ܹ -?á—÷?âéb?âRk?â8Ç?áH5?ÚÑz?Ï«?Ã?Á-õ?Áüø?º9Á?°#?®iâ?²€Û?µß?¹(ß?»±§?ºk?¸ør?¿ã?ÄÕõ?ÈÆG?΋k?ÎЊ?Ò:Š?ÚÂÁ?àQ?àÏ/?Úb3?Ì©Y?Âë?ıð?È´3?Ì.?Î8,?Ñ«j?Öðk?ÚgY?Úeô?ØS_?ÞWq?æÔ-?ìk³?ðm?ï^„?îeT?ç°?Ø*ê?ÔAŒ?ÔçÀ?ÈDâ?»†?·$÷?³#M?®i?¯•ª?µ|Ú?¸„Z?º„*?½CE?¼ï?´˜ ?®F¢?³„’?¼ ³? í?Å3-?ÆÀQ?Èô?ȹ™?ÆGN?Èž?È!ç?ÃF?Âl÷?Âp¨?ÂÃå?Å@e?ÉEœ?ÎFT?Ñš@?ÓqÎ?Ö^`?Úê?߈„?à-ˆ?Þµ?âmJ?ç®B?ê8?íZþ?ò`d?îá?ßcž?Óm -?Òú?Ó¿ ?Ì°¶?Ä‚ ?Ãóä?ÇÁÈ?Ëg¨?ÏÚ•?Ô”?ÔÕ?ÃD?ª°9?®&X?¸Û?¹ž»?ºg=?»~6?¸n1?¸÷ç?Àœ/?ÂjË?¼þQ?·ÛØ?»HÞ?ÃÁ¥?Ê'”?Î×?Ó‚4?ÕŠž?Ò„-?ÊÑO?Â9M?¼ò—?À“Ž?ÂÌ×?À?ÀÔÓ?Ĩ?ÆM©?ÆbI?ÆÏì?Çî’?ÈÛ?Í…ˆ?Ðù/?ÏE?Ͳ?ÊïO?Æ!?Å*i?Å @?­A?»]Ä?µéÆ?»0Å?Ä@š?Ìmq?ÏE×?Ɖ_?¸üý?·é?½1³?Ãè)?É‹?Ì: -?ÍÊð?Îq?É‚Ý?·§"?›ÿ:?Íw?˜©Q?œ1g?›­'?Ô ?¢'_?¦ør?­µ³?¶c–?»{¸?½”—?¿:?Áj ?ÄÕ?Åú?Ǭþ?È9?¿iÀ?©&ª?•ê›?—Éë?/¶?ª?¡j?¥?§{$?©>i?¬M¨?°tY?´Ã¹?¹Dœ?½î"?ÁÉN?Å:?ÇeÛ?Ê#›?ÎÇö?ÒëG?Ò}d?Ç#þ?¯^~?Ÿ Æ?œ1?šÚ{?œ~à?Ÿrt?¢«õ?¦?ªP®?¬­¸?­ŽM?²ÔV?·Ár?¹(r?º#À?½~S?Á0ª?ÄýZ?ÇÑ¥?ɪ4?ÉÕ•?¿çñ?´MK?¶f?ºº?º¬´?»’¾?¾rÁ?Á!?Â8?ÃÃ?Åå?Æçä?ÈÖa?Ëå?Ï»´?βa?Íû÷?ÏLm?͹?ÊûŸ?ÉË_?ÄÇh?¶Jü?¤>ê?žp•?Ÿ`œ?¢ž,?¤´Ÿ?¤…ï?¥Üa?§qS?ªØ«?­Ãâ?±üä?¼+?Ãê(?Åä?ÄÌ?Äõo?ÆÜÂ?É…ù?É -?È™?Áî?¶åè?·e?½å$?½ ?¾w ?©M?ÃÁs?Æ»?Å.…?Âö?Ã[u?Ã>î?È€ª?ÏÞª?ÒÊa?Ò€Ø?Ìa?Ë?Õ¤"?ÜQ‹?Ý£o?Û(?Ì4?¿#ê?¼}­?¾lå?Àã?Ƈ?ÆŒü?¾`Â?Â2*?Ó?=?Ø»?Ø«ì?Øl-?Ø#f?ÙOý?Ý_þ?àÍ?âÂc?ç>ô?èä?á -6?Ù`?Þa3?ç’‹?ë`?ðŠQ?ïüÈ?ðå?õ š?öíí?ö%Ð?ó|Ó?ðxo?÷ú;?ÿ Ë?üÌW?ýc£@Þç@+Ç?þ ?þ ¿?ü\\?üu÷?ù§-?óÁ’?ö²Ï?öc?é­?èLï?ñõ]?ô]:?ôvG?õt_?÷À|?ÿà›@«'@^4@^`@+?ÿ’?üRU@µÒ@Ų@b@ƒŽ?ýŸ?ÿ›ó@bq@ŒU@ð@²@‰@9»@7 @ -}N@ K@Ξ@BÂ@\@ˆ@zB?üêÝ@æï@ -uè@ 6@vÖ@,@}Ÿ@š @«U@ ·@ï‡@ *{@ -þØ@ "÷@'ø@hF@ >@¤Ž@…§@¾˜@J@°d@pZ@e@"lÃ@%ª@(p @&'j@$”Ð@(øª@+‹@0°Ù@5©Í@6|Ž@8y3@:t÷@6!è@/R@5÷ö@=Ó7@C¡›@D3ž@G/Ž@N©@Pi—@Gt@q’?Â{ä?›xØ?£V¹?ñ?™ ¼?ž?£K‡?©‰a?¯07?´ýˆ?ÀúÓ?ÇÇ?Å€?È?Ðáª?Ûí°?è?î9Ô?êp,?Ü?°Y|?‘F -?šßÐ?¢Ã?gm?ž$J?£}î?©Íf?­!°?®Hô?²6i?»$?È©×?Ñ¡õ?Í0D?ÊíP?Ðÿh?ÕŽK?á'”?èF†?ìä—?î0ñ?à`•?°%?†À¹?‰åµ?Œ€@?…´Î?‡Ï?Œxl?Ž¤?ŽÄâ?”4?ž~x?¥á‘?§nR?§öð?§i?¥Àƒ?« -f?³ ê?¹p÷?Á³?»´ä?®;À?±º?´T±?­i?²k]?¸Ú±?´‰þ?»áÍ?¿Bú?º”ƒ?¼ƒ?Ä^/¯@=ýÎ@;8@5±Þ@6¤U@>Œ+@=À¾@:˜@7^e@5Î@7÷K@6¤‹@5÷^@9Á@6@3¤@6æ@4[q@1¬‹@1Ø@-(c@-¾;@-JÄ@ ú¥@[%@¿)@ ÷d@$$@$ƒ±@$ y@"Ñ @"üj@#‚š@ Û‘@!vÌ@N0@"m@ óù@ûj@ Ï@Yy@õÁ@#®y@'yÎ@# Þ@°ñ@§@{h@˜æ@J @ûN@Ÿú@F‹@+x@! u@© @•ž@!PJ@#Sc@"û@.3@Ñ@I@a£@Ñ3@Ý@*L@¦½@3 @Øè@ .×@™¢@ Ñ@â@Q@†¯@_d@æ,@” @ô‹@"@Þ@ÎT@Ôf@]@ ·<@z£@y@e@Q­@p¦@†@ ýJ@ Ù@ñµ@ »@Ç"@#@Ml@gM@ÂÁ@ 9ë@¢Î@Ö6@Gº@ª@~»@“‹@ª”@´N@u–@ Œ@š÷@_?ô\S?þá@˜@ }Å@ % @­C@ -x@ Ðû@ @‰@v`@tp@mV@„s@®@-@f¬@ªŸ@à~@‚Ø@ -©Œ@ !†@@B@ôx@‚^@éá@¼"@"2@ÄÈ@ÏN@%4w@)Î’@*5¯@+·T@.;ù@/4@2ïõ@6ûv@8¿¯@:‘l@3à>@%œ¸@%’G@'å„@ qV@Oö@õ@'Œ@Ù@øÀ@[§@ã\@<@¹@ÿ?@]Û@CB@ˆ9@|´@”0@$§à@'=¯@(qZ@…*@£¯@|F@ú.@õ@m@‡@| @%b @(Ć@&‹¾@#Á@$ -è@&dh@,ýM@0q(@0@.×ü@,Âh@&‡²@ ù|@„l@ -@ A2@"š{@†f@S¼@ Ÿ‰@ @@N@wÞ@º@ ”@²¾@'¥@&Ù@]@B˜@O@ØÂ@ Œò@!hr@Ê„@›[@Ó@†p@ó @¸î@qk@^¢@^Ð@7Î@É@Ì @Ç^@Vo@ü@@S„@!|‘@&ñ6@'K"@%æa@!Ór@Ù–@â@·b@Y·@·O@ߧ@ì[@°¡@,Æ@N@™·@ʶ@2^@yì@…%@ß@Š°@dä@!MÔ@#9@$R,@%ÑÐ@%æ‰@'ŠË@&H@"Ú*@×@ä@1:@!@'_P@*cª@*'@+ö@+:#@)žd@'«@$%>@ u@|x@%v@)õ¼@*›j@)ãù@+ýà@+Þ@)«+@&lè@'ü¥@$Tq@ù@¾˜@Ì›@!¨@ Fî@'—Î@%ÝM@"{Ï@$á†@"ÒH@(Ô@&(ª@ñ%@ò0@š·@¥|@â³@C¸@$L5@#tœ@"@"XÜ@ †º@#%@!û,@ Q@åb@#ç:@#aÕ@%p6@'w@#4‰@%+ @#Øo@ü¶@#Û@( -=@'Q@(X|@$¿ì@"æ@#á@&Ð\@$„r@# c@%Á@&)&@*Œ@-Ã@$ªÌ@ë @&ˆá@'Ú*@).ù@+d@@*š @'VE@(Rñ@+£·@)][@&ÞÂ@"¬¼@!dõ@! k@$2º@1£î@0F$@"Ö@~@'ðF@#ír@#{ä@q@Í]@ ª@'ƒ"@)ؘ@$8@&…x@* Ü@(@ìD@"`@(ªÇ@.º{@.®@*w3@#86@(m,@.’@+!t@& -@"߉@'Ù@.5k@*î@&óÔ@$œ_@/6@€“@Ï@$P‘@*OL@'b†@"Yb@"¶·@#>@$£@óÌ@Ô-@ýd@ ýÑ@#ÒT@"|ú@ð¸@ÅÓ@"ª@t@¯@ߨ@_›@oÄ@>’@Á@ /@MR@Òr@ d@d¢@z#@Ye@#7É@)gn@+Aû@*¬ö@.mp@-ûI@(&_@1?@5`$@0[Á@!Ï@#ÔH@,Su@3oØ@3d×@'å~@!Eé@#Í.@.Ò@/ñé@-ç@9“#@>9j@@Þ«@=Næ@1`5@7h@JGé@LÉ=@I µ@>jØ@>:@:Q@>ž4@Du@4²Í@@æ±@/).@&Ø@:åg@J@L=F@@þ²@CÐH@PW§@Q¤î@Xž@\Ov@_{ÿ@\Dm@PÙÅ@Xä,@i ©@^+‚@L—ã@K¶š@RTR@M6y@K©“@[`A@V)j@+Ãt@>>@ ^ @6>@3*‹@÷Ñ@ -U{@=*@‡|@:3@Îv?ýÉ@ˆ@Ü`@ wE@ næ@Gj@Úº@@vˆ@2-@Q@ä+@K@uW@$D@§Á@êƒ@z@Ê@"ð@$f@Ê^@ @ŒÌ@­ù@J>@ˆ@ ²@xí@Îu@:à@ç¿@ý·@aÜ@6?@ë‘@4w@{†@¦@6”?ò1@™L@LÄ@"«¿@' ¢@*q@+³ð@+tÛ@&2C@!î@&B¡@,#@.( @+è@"¡;@ z7@#-¤@)D~@.Ð@'ý©@[@ 4W@'ú@)¥à@)p/@$1V@#Rx@%»Ä@&â@(OÀ@)Æß@*‡C@*jµ@.¡@1¬@-cµ@1¼J@5¹I@6 œ@6€-@30@@3¸|@1*<@/‡Z@1Í@4¥s@8nÈ@8£@4'k@5;‡@3ËW@2²>@,ýÞ@& \@'z3@*[®@,XÚ@*A×@$êF@Óa?ø^Ž?üÊs@Æ@#ŽÌ@(˜¢@,Ñ@(z¯@!Ì#@(Ån@*äÙ@*u”@#ƒõ@)Nç@$`x@)ª@$ÖM@%ý;@)¤@,WØ@-˜@.Û(@0B”@1Ã@4zâ@4¶¡@3éç@0t@1Ü@1Mh@3}@6‘­@4¢@2þz@4Tj@4Þ¶@3[m@*â*@&O„@--†@/ÆË@3Ï@6'¨@4i@3ÍŸ@7=Î@:oÖ@8‰@5’\@7'®@>G:@;o-@7( @1J@2@@6fã@7m^@8¤@?C@;9¬@:¯"@C½I@F§r@Fk@Dïƒ@D¨@C ‰@B|R@E·"@H±ç@DI@@ê@:þƒ@2@;=—@GÆ?@Jux@HÐØ@OW@Nœ@H¢ @?G•@4™@?ÍÏ@GMð@KºÊ@JÒÁ@E“@AQä@:è¶@Epå@J^]@K¬@K|…@Oé@S»\@T»¦@Q’ù@MZ@11&@·ˆ@Åß@%’é@!þg@ÿG@Ó@äº@8B@gp@‹„@#°ì@$,ó@$B@&·v@%”ù@"°V@&ðÌ@&¬@$1u@%ï·@)s½@)aÕ@+Jb@)‘@$¬ê@$ÐU@&Ûï@' à@$W@ Çc@( ù@%5@#•ê@%G@$ç@!ë>@)‡ô@(ö@'«ˆ@$»<@4ø@õ6@ó>@!‘H@(…×@)g@'¿Ä@+'@)‚k@)m@*==@& ¯@#Úº@#âŒ@$èè@%4®@už@"˜Œ@*,@.Ùõ@,ð@,½@)0Ù@&ü`@*Aõ@)ý@(ì@¼@#ïÞ@/h -@0Sé@,&Í@{@Dï@"Í"@ †_@#Ž@&·@KQ@ ç@l@ ev@'*+@*<@+÷@$Îõ@$A¼@-:@/DÀ@.‘ -@+3ý@-<Æ@*û:@+ã@,0&@,ÊN@+‚y@)w@-×@11ú@1ŽÞ@.pÑ@.šº@/'d@/"Z@.-@*A‚@.c‹@' †@"mR@çš@K1@*«Ë@/HJ@0Å@,TË@-œ4@03@(·Ò@%fÔ@(¥N@,`´@*Á=@)hZ@ôÝ@$?½@.S§@/zæ@1~ü@3Â@3?O@0gJ@/ü³@0IM@,f#@Õ @"Ò‚@"r@eÜ@&Ëá@,Í:@,pT@(¡Ý@(ÃO@)ÕM@)I‘@%&½@%ö%@ú@Q_@’0@®[@#²ñ@'3@%õÔ@'á@+É@)xJ@$H°@%í4@%~'@'‡²@!á@"õ£@ ã@û@! Q@•†@gÙ@"æ@(`@"ÄŽ@¸E@,Z@'þ©@!Ô@-}G@$Ê6@­@&äU@&;­@#*\@B+@!‡Ó@$D‚@ä @á@%³I@'-@!pl@ß›@+µ@&œv@!Ó@*8‡@+ó_@'î¨@%°ˆ@)ûq@$qÕ@ †"@&¤g@+eµ@(2@ ¬*@ȧ@³@"dP@;@#²q@) S@,Mò@*H@$Ñú@)к@(¸Æ@&i@'bt@$¢j@(eö@(^@'./@(€ä@'L6@.Kœ@-šJ@&a%@,d@)¼·@+à@*>A@$x@'O@# ¾@$¨ë@)×n@ Rø@°+@ ˆ@²æ@'×g@(:@&1i@%÷@8‰@%ÙU@*•²@#©@!•¼@$lÑ@!+é@!(”@"µ¼@%ÞÊ@&bZ@%Œ/@%L@%ø„@$÷ã@ð”@4x@!yl@mÒ@hÃ@"¼Ÿ@"éù@#“¦@&ÞÎ@&L…@+¸Ý@)„@ 1M@#»Ù@$2ë@–?@#Ï)@$¤Ú@æÐ@Î@ ¶i@$?¯@XJ@w@%ðî@)Ö7@#À~@Ò†@(¾¾@'bª@ Ü@#Zö@$Ç@% @'f|@&õ@$¢µ@Û@"×½@/æ@*iu@"P @'|‡@-•@@(­Û@(ä|@&’¶@'ZÈ@"Ó@&}Û@,Ä™@+$¶@&š$@,üù@2$C@+W@&¿Ù@)IO@.ܸ@'ľ@!¬‹@,ø@/¿=@**1@™Ú@Ms@'Š)@'ö¾@&Ýì@'#‡@,*R@+¬È@*¸Ð@+`!@(~–@Ǭ@ßs@ @(¸¯@,aš@'„@'×@+ã(@,i(@-Ä@1x«@1u˜@,Qz@ T—@éy@, Ë@)¶î@& 7@*Ó-@.ž @-”@*F€@+«Ë@+B @*ò+@%‡¥@%g4@/b@0†@(¶x@#ÕÂ@áY@%Ù@,¾þ@(¡+@ô>@%=?@%Œ@!Ö;@'GØ@(Tz@#q.@ Ý@$o>@%åÌ@$¨J@#2@#H#@Y@%ÀI@+“l@-ßm@,è–@$Øè@?g@ ·@''Í@+p¾@-d¸@+´[@$2W@^›@H~@.š@/Õ@.D&@$Å@ä@$ãD@'zì@*&3@@ýj@'¶¸@%Eû@"É@:@'ë@ @ð5@v@)Ò˜@.Àp@+ˆŽ@+{á@,Dè@*)c@%xÇ@&y¯@(@Ú—@Å@,²>@0M#@+ñà@$ÎÕ@Ȇ@Ž¤@J@#È™@(è²@,7Ô@+ÿT@)R‚@)ñœ@-Œ³@+ß@)R@*ìx@*9 @+:Ð@-ª@-pÚ@&1¸@&¶ä@(0@+kÇ@(,œ@T÷@(d6@.ï@.&‚@.H$@,êD@,ï©@+[¦@*òn@.–@/½ @0b@-ê@&׺@*¼_@..X@/%e@,Æ?@+>—@/"ò@.«û@)òé@-ÒÜ@0™Ô@+n¦@% @+:9@,ı@%O@!ÞU@Ú@WQ@í@_`@×Ç@R@š@c @%–ö@•Ú@ˆd@í˜@4‹@ ®@#@$ß@,$X@&5Q@!F·@ ¦@$´i@ ðg@'/L@(çŠ@%ä{@'·7@%o@%•Ê@(;$@(ÀA@${@"Ã@"ùC@&Ëñ@(–ä@&Œn@!T@!‰/@#‚@&¥ò@'ü@#t1@å]@$h‚@$O@"¡7@"̓@ 4™@Û©@'2ö@-á@+úy@%Ö:@)B‚@*N@'Õº@)V @%-{@œ@û@&¡s@+"Ð@-ƒv@(ˆK@ ‰ê@ìo@$>Ú@+Õ@›!@•´@#éÙ@"}_@'(@*)Î@'WÒ@&·Æ@%ÌÁ@$ŒÅ@!@ä@"H9@ Î@%ö/@'‡:@(`]@*3I@,²Q@0Õ¿@/@&@#©ö@(Óm@$Ï2@“¬@"ßR@%š@%Ë@(;Å@*VÑ@*²,@-i¤@+ßò@&d@"ؘ@(O@+Jë@%BÐ@4ú@$ªo@,eQ@'ó@ò9@"ù·@+N@( #@&<@$?@ 5\@!Íf@)ÇX@.O@)•»@*W¨@(½Ü@$u±@&2"@)5‡@#Nƒ@r@$„2@'.@&û@%&–@) 9@) ñ@)ë‹@*iS@#}@'@&Îz@-Ò2@,à@*k¬@-‰{@'B@)g@,͇@/!o@.~;@*Ñ@*6’@+ùr@(Ò@*Hw@,Õ¡@$#@#?ì@"ß·@"#o@(I@(i@&'³@&²*@+N<@)aÜ@$âd@&¤=@)O@!ª@'™+@,ÅÍ@)€Ò@$…Å@#ÀÓ@)V`@+Æ{@)t@+:A@*Â)@)"ð@(á5@*¥î@% (@%aì@ Dr@v@$ð@)ò˜@$)g@!é>@ýê@ú”@$¹æ@%ù@',b@)¶Î@( S@,ƒ(@-¤@,´X@*š@*]¿@(R@(bT@+ÄÜ@"Y7@³~@(&,@-'"@+©ë@%hÿ@‚—@›î@3š@$tº@(’ù@*{@,ôê@-@â@)ïÒ@&ƒ¶@$ïú@)§x@+,X@V!@ Ñt@$´}@(eo@*”ó@(‘Ü@*ÆX@+‚‚@-7é@*ÌÝ@+8{@.A"@/¬*@/ ë@*çë@'Vö@(dê@,ˆÔ@'Õg@"]"@ k¦@*Äü@,: @+é»@,·ú@-4©@'n@(~@-¬)@,À–@"‡@!Ù6@, û@,õK@+U@,î@$¬È@#Õ¨@(ÎX@, g@(oV@'s¡@)gm@-ÞŽ@,„D@%<@(—ù@*ö&@)@*~ @, y@-@‚@*Þ0@$æƒ@%Õ‘@&y@%‘M@+ž¼@+å)@(âà@'Þ@(º¥@*x@+ÙÙ@)•X@*iõ@'Xû@åà@#º-@)‡@+·@-f@,«I@+ä^@&ܪ@9D@ŸG@$!»@(º¾@(Ç&@$s@(b@,2Ï@-‰Ú@*“@*ά@-§N@-$Â@+û@,2@,Ñ@-T@@)WÛ@$η@(¶Ò@)uT@( ä@' ~@h@XW@'®n@#Ãr@'º$@%Ø—@$sÿ@!Ò\@,8µ@)7%@(5„@&ö@ )”@%Aµ@(á@**’@*m4@*)à@(5š@'Â@'I@*ùÔ@)w@(×9@+¬3@,H -@cº@»@#šÜ@0+@"¦ @)¨a@,q@)†@)MI@'ˆ„@#4@$ }@$Û.@'@*Ã@*£à@*ÆÓ@*¹Ó@*8è@+å¸@!}ì@%{@(P†@4Ý@”@"úÜ@'-¿@#´¨@$]û@*ªq@(©¹@"û¬@(IÑ@(£Ê@"ƒ`@¦ð@'{@"×@U¢@Ö@$üµ@Ò_@ÁÛ@(¨&@'l=@(^@@)ïa@+Ò@'–@@#±@"ÝÊ@+l@)Æ!@*®d@*t×@'Èù@%@(Ú@Ú»@L@ í@#Àý@$_O@¾7@¿j@!ˆ @$¿{@#N@$õ@ 0@'P¯@*ú@&•¦@"X.@%\Z@%.”@ -×@$’‚@&?m@&…@!Ä@î³@ @± @"#õ@!<á@!j_@ ò†@!?ó@"w©@"é@–™@!>]@ ÊQ@$x@ãû@0,@Ôä@îQ@R(@áÁ@ \@ŠÄ@Dn@Bè@}§@°1@ïÑ@¨’@±Ê@ â@;À@ÂY@„å@Fý@äç@žÀ@Å @e›@«Ï@ Ù@ê&@ð@ü@h;@7@&‡@U˜@2@Ù"@ ©@ *V@ìÛ@xe@°@™a@Š@ý!@„’@Ÿi@!»‡@ùB@”@ ¹T@/9@,À@í@ë@ßS@«L@^Â@‰=@u%@Çu@¤ @üÌ@ë×@7@Ǩ@# Ž@¬Ö@×@ze@íx@$§-@!kù@!p8@¥@ „@!Ì@"3†@‰Æ@s@1e@$§*@#³@ç@qá@8Á@Ì @$/í@ @£@I£@ö@æ3@#a @Wb@Ø@zF@t%@ ¦ @#Ÿ“@ý@®@%@ @" {@Õî@‰@Å-@‹Æ@$§@"©$@ êÔ@¡@Iÿ@ò‚@Èâ@u;@U @H@Óq@¿©@ …@%v·@"†É@#çæ@“ê@¿ž@È@"Öl@#wó@ ¦£@Æà@–@g0@…í@ï‚@!+=@ Šß@!œØ@Ìò@xš@£Ö@ ï°@!ŽH@!÷@$ì½@‚V@‡Î@ŒÖ@ Jv@B@ É@$„@ Íù@Ú²@°å@˜Ð@ Á§@$,ó@#$Æ@$a†@Æj@\@¬n@“@¡²@l&@ÿò@|¸@½¥@¤@f±@0@ä5@Åñ@ ¨@ P_@!š@¦Ë@Ò@ ¼:@ì@@yg@Ä @"æ@ _ò@"¾`@!­@(Õ@í[@–@ŽÆ@¯Ô@#²p@"yÂ@"G@@© @õÏ@%+á@%í{@ I@V&@Ò³@!«Ý@!LC@"é @¹–@#™ð@$_ð@ 9@’’@  @"ÿ&@"ù@!ð@o@@E‡@$ßš@ §@ -I@ÒV@ éŽ@2®@Õ¥@“,@#)Û@$ä^@#/m@<@áÄ@pÜ@Ýÿ@@7Ã@ªˆ@!á”@!¤@!)q@¢\@ ‚™@#H @#`C@!D@$@Wæ@!(G@!óŸ@!½¥@ì@Ã/@ ûK@Æ@íë@Î@!ŒŒ@"¦@"â@#_0@X‡@0F@nB@" ¸@!\@.@x_@!ë*@"@6@"˜‡@ -E@ =@ Ní@#¹@"Íë@!"!@è'@ÍD@!¶1@"@Ë@#Ý,@!‚@Î/@4@0š@¬ë@Xò@ˆN@P@ v$@!Íã@"1þ@åR@­@ X@!ö*@"Áh@ øØ@þh@ƒ@"sY@ ¤œ@ ·h@‹@ »@pÀ@"JÑ@#¬ž@ /D@à¤@^°@"O‚@!OL@!œì@!¼h@eÍ@Ð @_í@" -û@"â)@ 4l@j@V¦@ß8@ö@@"Ö@œx@×@¹n@™ä@!=•@!cU@>h@P@1³@<Î@ ‰ï@!…å@Ô@x@ZH@Uo@"M@ …7@e@Îì@O0@ú!@A‹:v7ò:™â:¾OL:둶;jg;%Ùæ;)Ð;Ÿ;ö :ûÚr:õˆ:às:µEM:ƒ£–:D}v:=Ï{:yƒ:µßq:ú©ê;‚;#;Æa;ñé:ç‹é:Öž:È1ô:¼æ:Ç–À:ü=;)+÷;W¦&;|±”;ˆQÿ;‰Ì;„8@;}¶¨;tÕ;iv;cOC;n¥s;ƒ÷$;Œùä;‰T;s¬.;GNv;h:Þ6Ó:¦ j:–tU:·ò;"ä;9”¥;i\;m¾;‚;z»;m"Ü;V· -;0P.;bñ:°âú:y™¿:VoQ:wúš:¨,:Þ’;àî;ìô;-—;=ò;;l;Êø:ä±:£ÐR:Ÿü›:똤;B‚:;’±;¾ÏÊ;Ö|Y;ØÈ ;ÔbÅ;Ù+„;ê¾<Oÿ<š—< _¾< ×Í< ‘<ñL< <gÖ<%Á<­"< #}< -²;öÑ×;×Í8;Îq:;Ø£;ä{;âc`;Ï3W;²I;ž<†;Ÿ×ð;­Æ¦;²€ö;¤—‡;qú;tðC;b}:;dAÂ;z¬;‘Ñø;ªüC;À·Á;Èœ#;¼qB;£×b;‘Îa;’’ˆ;ŸŸ—;«g-;´uI;Äny;ßóû<^< á<Tÿ<©w< ý-<¥©;ôêw;èãŽ;Þ[Ÿ;ÔŽë;б;Ý <\2<ëC<'©g<(¸ø< þÖ<³™< *<´.<)ó< û0<Hl<>T<–T<¿N;ó•²;ðbu;ñ–O;ìq?;é•ó;ú\#<ú¦<5ï<¿C<ª Ž<\<ŸJÊ<«Æþ<º%â<ŤM<ËÛQ<ÉÿC<¾¡h<«PH<—HŸ<ŽÞÄ<˜¦ì<¬·~<»< <¹´ß<ªÚ<ÇCq<ÔN%<士<ùËë=œ­= Y.= ˆ9=Ë=8œ<ö»<æyz<Ô—¿<ËMÿ<Îu<×[T<Þ«ˆ<ÜœÆ<Ò¼€<ÈQ <»^h<¢ò(<}ôN<6y,< ¥Ä< ;¯<7®&<|L <©k¾<Ü[s=‚]=Èâ=!›==üÍ=" =‰4<ëÕ|<견<ø<<û¸æ<ñ¦›<éóŒ<ïHé<ýE=ÿò<ô¬<Ïú+<¦GÙ<Š <…ßJ<”¼<¥ƒº<ª¡d<¢­ò<’FƒQ<¼âä<–¡Un=1Uv=!bØ=¸3=ßô=$z=Ok<ãvy<ã r= =!ž-=;Nº=Dk5=;Ð=(µ=¢×= V¦=/÷<ð~Ì<ÓŽ¬<½.Å<»*€<Жº<÷°®=Ní=%Ð=5_ã=Cš«=OðC=W Œ=Zík=bxŠ=o‘Æ=}Z‘=„'þ=ˆ-Ú=‹?¼=Žq_=‘a-=‘aø=ü¼=Šœ$=ŠC=ŒH!=z=âd=Ž@!=‡¯–=_ë=sÑã=pu=qΆ=r©˜=pi'=j³=eè,=k-ü=}Î_=Š°C=’ ›=‘FÄ=ŠÚQ=…w)=…ÕE=Š?=ŽÒ«=‘ç?=‘À=ˆ§?=rh=Ró|=Cå~=FdE=Këa=EÙÜ=5%¹=&òV=$+ý=+°(=8g=APc=@&Í=54ú=%Ó=­<ünm<Û Š<ÏÌ1<ÙÉC<òÁn=x\=)L´=;¤E=9N˜=)=̨= ¢¢=+¡æ=6µî=@bF=I¢=M6~=A=%!s= -h-=¹/=ýÆ=?……=^ë=uës=†UÆ=’3|=—Þ.=‘ò=ƒŒ›=gG_=I+=*¤‚=ü-=ÓÝ="*=8³!=A‚<==À=;«º=I7Q=`ma=u’Ó=„x2=á±=ûH=¥P*=¢|Y=”iü=¬ð=bòh=iÑI=‰#ó=¢+=²/•=³Sª=¬÷1=­RÈ=¸ü»=ÆÛ›=Í"M=Ê' -=¾_Ç=¨•)=ŽçÐ=xe=×=ˆXc=‰: =…Q“=ˆc´=—R”=«¯!=½ò€=É̲=˱*=Â¥=°³|= j(=—^Ð=“m*=Û)=uå=;p=‡’'=ƒ-)=ˆey=—øu=¨ªê=°é=¬Í[=¨c=­M=½Ûp=Ï¥¯=Ú…F=àÒ;=ç¯M=íÿ=ì`Ò=æÁ6=àc·=Ú[Þ=×.¼=Ýw=ìþv=úJ=ý)Ê=óÇ=ÝÀ×=Æ‹/=»öá=Äûk=Ûi=ï“=ø/ª=÷Õ#=õ—ã=ñ€Ü=é…K=ݵŠ=Í‚Ö=¾5=¼š=È‹½=Ð1O=Ì=Æ =Áé@=¸Sž=§Û=–+$=‘9²=[=µ‹à=ÐÚT=äCñ=æÜV=Üh=Ó‹=Õÿ=åeö=ùr>> ›->$Ç>–> -§÷>±à=ì‰Á=Ì—e=¨ Ä={=+Ñ=™¶‚=¢šù=¤Öi=® ¨=Ë=óYÜ> -¤‘>™>úP>Õå>Í>ãJ=è­=Ããô=œ³=vx´=X˜H=eB&=†$º= Ð¥=¾u=Ö¬·=ã(X=ÞAF=άý=Ås=Äö=À5=³"+=£ Ø=’B =‚xÞ=nˆ¦=d¸œ=dfÐ=mÉ`=†–l=£â=¦¿=ÖF=Û“A=Õæ|=È’:=µÚ=¡fÚ=œ[=‰v=ˆCÐ=ƒ ù=¹d=6W=´ô«=Øâ=éñ£=÷¦> :™>ˆë>þp> Û=íÅï=Ì°ó=É°Æ=à—i=ýw>þç>bË=óÖ´=ð(>=ùÕ·=ü)Á=öU®>žß>$Í>'rã>2NV>5>>7€u>;P>:§>2ôó>+bÙ>)(,>*’>.äF>7Ð&>B~>HWÿ>JLJ>KR|>KGÈ>IŽP>?ƒY>)–£>ŽÔ>+=öl‘=ü2>¦V>§Š>P>¡<>RŸ>ú> -47> Ã7>aË=çž©=Û‚æ=üÞ>‚>5zÖ>@ÎP>BÅð>A´M>;çÈ>-Iò>¯>P}> èª>1K>9“>5©>)+_>Ξ> 8>Ñ">”å>e=ü¡=é‹|=̳4=´xÇ=­•Å=µÌ=¸@§=­Ÿ=¢·4=¨ä’=¿2Ÿ=×åd=î?>Üæ>‰->v> |=ÿ7=ïÐ=öP€> 7;>ð)>*eó>'¢T>>¾ý=æ}n=æÇ >ÿ¡>G >(ž>1è>6vy>6ä>0€a>#ò>‘å> -\e>7>#¢>2tt>4ÒÄ>$âä> é‰=íS)=â|~=Ø«ó=ÃOk=»Œ:=×b>>ô >òï>Ú+>›Ž> Üw>1ù¹>AL‹>M•>RyÆ>M^(>:æ@>"mó>‚5>ow>œ'> ¿½>=ÿB{>/N> 8«>7^">=S>9ãS>8ÄŸ>25<>›ô=öÄé=Ú±W=òS¶>íÒ>™I>-jÆ>>ƒý>Lwû>L°‰>?ß½>0$>(ô¨>+Ø¡>,>#6ž>Ïü>äé>)àb>2ò@>8Að>?ãà>Br®>73{>) -ƒ>**>;ÃÞ>Où=>Zж>Y¯ÿ>QÂÙ>JªA>GK¿>Eø>CÔh>@/>=#©>7nk>'øí>ñ ->1=ôG-=ócÙ=úË®>¿1>±˜>kÑ=ì<ö=ÇFŽ=¢¶=“>=N¬Ä=(>= ™=vÂ= -×=1‹=nÇ\=›ã¯=¿¿=Üþ=íF¦=î+É=ãò=ÐÕß=¾Õ¡=ÅaY=ïIÞ>Lí> z>Q>'·¥><ºü>QÃ>Z±>\ï;>b÷>eõX>Wöõ>;à>" ž>¨> 3¡=÷,J=ÊSM=ªžÂ=©þž=¹»V=ÁÊ=´ª\=— =lJ[=>ôÞ==²S=mR:=žÐE=Ê/Ñ=ñã> P> l+>5EP>ED!>P·÷>ZG½>b–¿>fm >a4ê>Zp>bf>yµÉ>‰Š>’]á>•6‡>’u>‹ Î>ƒ9>€E>‡Û3>”äE>ž¯> Ê\>œÓŠ>—’ >’4U>‹å>ŠM>“˜ò>¤ØZ>´å>¼%ô>» l>°±Y>£JÁ>U>žÕb>ŸÃZ>H>ždq>¤µ_>ªG¼>®¢M>µ¥>¿0>Ⱥæ>Îä‰>ÍN>ÅÆ>½†¿>´¸§>«‡>¥âÊ>¡¶ ->šx>—Ð>£›Ó>·ºØ>ÈÙ >Ñ>G>ÈF>¬.Y>ŽÈ8>~ >põà>oØX>… >¢zQ>ÅÎN>ßÔ¿>éjÖ>åNP>Ú5ÿ>ÏÛí>Ê>Âr,>°•*>—‘„>…þ>‡y6>™j‹>±5µ>Æîs>Ö³1>ß>§>à ´>Ød§>Ëyˆ>Ãí€>Åêî>ÇnÃ>ÃÃ>À´?>Ŭá>Í~§>Í<ç>¼ö;>¦¤Æ>¡È>±!™>Ã]N>ÌW}>ÔÌ>ÝÊ>Ý[>ÌR–>¾xw>ÅÜÏ>ÖÞ ->Øf >Ãrˆ>¤Ö¡>ö=>“‡œ>®N ->Îñ >áE9>ß †>×Vì>Øñ¬>àqy>æö/>ï>ûÞ?É?‰¢>ÿE–>ïÁ4>ä@A>ä ³>æ±Å>ßJÊ>Ô>ÐÊp>Ît>Ê>³Ìš>«ù>¯°>»}±>È·ß>Öñ’>é{ø>øu9>ø»€>ë~¥>Ù·â>ʨ¤>Á=>Át«>Êe>к®>Ï¥Ÿ>Î@Ô>Ðøf>ÑrH>ÎÛE>Ï_>Ïãp>Θl>Ïš›>ÙG>ëÓ1>ør,>ñy>Ü€>Éàv>ÁÙþ>¿™">¼H>¸Ll>·êã>¼ç>Å…*>ÑÊR>Ûû§>ã°ø>æÆ¡>å70>à@å>Ðk¡>¸.{>®ƒº>Àü>àZ>ô¡Ö>øÍs>òzÎ>è;ì>àä >Þ¥®>ß¿œ>æ­í>ò’>ü(Z?|Æ?•¬? :î?Ì?˜W?u¥?Ð'?I‚?e ?9?Ý >þ†©>÷ñÈ>õH‡>ø•,>ôëé>ßÛ>Âe>°ûê>±¶->¿¤>Í–ö>Öã/>â3>ñ¯Q>üt>úÚ[>ôh&>ô„‹>üP’?Úë>û‚1>î“V>ëHq>ñ¢G>ð9o>çèg>î0N?¿? v?7Ž?üW>ô&«>ä4ü>Óì¨>Ê•>ÉŸu>Íç¡>Õ¿W>Ýs>ß:*>à†>ç.c>õ¨?ÆR?†>ú³´>ï$0>åAØ>Øó>ÃÆY>«&N>›NÑ>žP…>¨å×>¬uô>¨;f>ž³%>Ïo>yK>Mï>¿'=ÛVe=¡p=¬|=÷z7>.?>_>€›é>ˆt>;µ>˜gý>¨¦[>¹Td>É !>Õ[Í>ÚO>Ùò>Þç>ì©?Ù ? -‹? Á¤?ü|?nw?ý?“>ïZ¢>×Î">Æ–r>³,Z>œBU>—|¡>¬»{>ÅI”>ÍcŠ>Éa÷>Æù÷>ÍÒr>Þ„>ñb’?Ú?]Ñ?Ÿ*?]§?nu>ù‰_>êäÔ>ÏYÏ>±W„> ã÷>˜Ûå>‘¾¥>™–>´}¾>Õ4›>ì5O>ò>êgü>ß„X>Ø: >Ù…è>àm>â>Ú‡I>ÊÛG>±¶m>–7¥>Œ}C>¡=²>Éܼ>ë&Ô>÷pƒ>ùÓ(>ø­‹>íàØ>ÔÞï>¹9û>®ch>µèË>Å_>ØuŸ>æzP>ÞïÞ>Æd>²Û>±Be>Àù“>Ûã>óÚB>úy>ç…>Ìz½>Ã8Ñ>Ñ_Ž>àØ>â’á>Þ¼>ß’C>å5m>í‘>ñZs>åÎ…>Î>ȱ>Ù´ø>ýTÈ?¸i?uW?$v? -§?nÅ? -ƒ?,Ä?÷Q?ûE>éØÊ>Õ/®>Îg>ØÞ³>ï«=>ÿsi?H>ýá…>üøO?)ÿ?Tä?ÒÍ? ¡Þ>òâ~>Òåƒ>ÆÞ>Çõ¿>Î÷¦>Ú¦>åÓ«>êgå>æ¢>ã|I>æéa>îŸÃ>õŸ,>û4?¼T?d<>û¿Ê>ó¤>õ5ñ>ýy? \?~«>ÿ÷„P>ô$~?«P? á ?ý ? |„? Ì?p>üû­>Ùc½>Äô±>×^—>ýV)?ôÐ?ôë>ö¯Â>ñ¥¸?Dª?Yð?ûv>÷­h>æÓù>ìCŒ>ø’^>úC->òG>ë°Š>òvé>úvR>ìI_>ÏN:>ÀÙ>ß>È -ð>Öe`>ù:W? °4?œ?4?R¾?ÆP?d -? -É{?ö?¯Ó? ?d>éu>Í‹>ÁÁ;>¼:õ>¶?…>³ÝØ>¹ ->¿ï‘>Ä¥Ò>Ðv>à§D>áÓ>Í~ð>µ%>¯«>»‘:>Ì;Ç>Ø5\>ÙÁ.>ÑUs>ÈŒt>Èuž>Ò§ç>ä$X>ö”8?,5?D?c[?µŒ?Xâ>ÿ-¿>öÛ¸>èq±>ÝgQ>ß² ->è¬ï>ç™L>ÖUm>¿§>«¦Ð>¢µ5>¢Žœ>Ÿ -M>—Y >–/>œìñ>£G>¤U<>£Ú§>¦´í>®Øn>·XM>¾$8>ÇzË>Óz>ÚËz>Û >Ô8À>É>ÄJ·>Í<Ð>Úñ;>å -ƒ>ëA†>êÐ3>áS{>ÖÐ`>Û8¨>îI>ýc·>üÌê>ðR£>á >Û¼>èiÚ>÷ùô>úg>ó„T>ð?Â>ðYT>éa‘>Ø-Ò>ÄÑ>¸ªl>·d ->¼÷Ê>Âí">Ŭ>È.>Åx¢>Î¥ê>ØÕc>ÜuŸ>ÙJ >ÙøÏ>åÌñ>ó\p>õyR>î¯y>ìß>î0Ù>æEV>×ÚÍ>ÑÛ>ØÂ¥>äK>îÉÞ>ôTL>í—>Ù·×>Í4]>Ý‘…?é? âÍ? bn? gò?CÆ? ÍÝ? ný?„ß?ìÊ>÷>å.7>Ô×¼>Òj2>×"o>Õxè>΂u>ËÿÖ>Ôžç>è•Ç? ??²? ù¼?Œ?¬Å? C‰? ŠV?„?Œ?!1Ç?'æç?)¥†?%Y5?ñÎ?ñ?)5>?.wÿ?,`Ñ?+:?,¸?*:e?"ŒF??Õ_?‚›?‹é>É‚í>˜å>‚à>½>„n>‰ø->Ž3’>‘u>’r­>’É@>™ >¤¼>¬ó>¯|ê>°p–>²º>·¾i>¿ÿK>Æ»á>È.>Ú?>Ä 2>×Õ–>ùl? -¶7? :? ŸÐ? +]?‚€?@¶?2?š??§å? vÊ? -)7?$±>þŒr>è6‡>ÆœŠ>¥=ª>‘è >‹Ò>˜h>“V§>˜Œ¬>šOS>™Vñ>˜‰=>™Æÿ>œt>žA™> 8«>¢Öº>¥Øf>¨4o>©üÜ>ªµ$>¬²}>´ Ê>½©u>Ę">ÉÕ˜>ÎðM>ÓëN>Õ þ>Ðÿ\>ÍÍ.>Ôì>ãæT>òßü>û7Z>þµ“?ms?´? >þ >íâì>ÖÏU>ÁÁ>>´/>¬B!>¨­5>©Á9>­§l>²àÐ>º>Àu>Âþ>Á´ˆ>½S(>º:û>À'ß>ÍÍ>×à>Ý>âed>ëF@>õr+>ûbi??ž¢?þ$? «ê? ÄD? ]{? Z? -cy?p•?E?x?¬É?ô?RÔ?:’? A‚? æ”?¾¥?+Õ?ßK? ²%>þüÆ>ïoK>ëvÏ>ðùÿ>ú_»?¾’?>??ëÆ?Í? £?ˆ??™G?kÿ?c’?ï?Ë?à%?Cd? N­?Áž?Ý?€?ôã?”P?ב?!Ô?)‚Œ?/äw?5Eu?:ú-?@ü?EP›?KîJ?R ?V)æ?YGå?_ö ?f=Î?]™»?@ÀV?¡D>íò4>¯µ ->‚¼>WôM>Gü>Baé>EW/>N±ù>XüH>a€Ã>iN>tFƒ>…‚>›†4>·">È…P>Ä/>¯é¤>ŸM†>›Êš>Ÿ@v>£S>©>>²kÁ>ºäÕ>ÀÅI>Ä>É>Æ©$>ͤ>Ø>ãÐ>ê¯z>íÄ×>ï;«>òÍ’>ù?ð—? –? ¨?w>Õ\S>¨ì=>•>„­>i„>‚úW>‡x>‹”p>‘j>˜üe>¢'>>«©ø>·ãÌ>ÄÖ>ÇÈ3>¤°>½ò¾>¾'>Á–ê>ƦZ>ɨL>ÊÛË>ÍÃH>Ñ/>Ñ=Ý>μë>Óp§>â)!>>÷è›?G? \Â? h?\?m®>÷¾ù>óVØ>ú´†?EÈ>ôQ>Ú’»>Åÿ>¼Ä>¼Â'>Æ 8>Ò…I>Ø-ß>Ù ˆ>×Ø >Õ¥;>ÒÓÀ>Ï‹>Ò"“>Ü}¦>å>>ëRF>ñ„Ö>÷F>û¦í>ÿõÀ?O5?c? Š?9º?Š?nù?›æ?ÎH?ñX?5¢?ßz?ÏÎ?"Óä?%r@?(62?,nÉ?/ˆ2?/‚?-¾2?,Ÿz?+3;?*M`?+ˆÌ?.k(?3„?6ŒÙ?9:‚?>Eœ?AR@?AŽ?F‹Ñ?Q˜V?Z˜x?\eÓ?[‹X?_ –?gÕ?p/ë?tjÓ?vÍ™?wIº?v;ù?sõT?o‡²?o1ž?x§ý?ƒ2?† Ü?‡!ð?Œ:þ?–^á?å¡?¡ J?¡Sý?žmã?—7´?’NÛ?™W±?¢¾²?¡ê¤?œ³?&f?¢ÿ·?¦Iÿ?«Äb?·¨?ÀĽ?Äê?Ûî?ÆbR?Îl?ÔDÛ?ÇàŸ?›1^?7x >¶½y>aµÃ>I">NË©>X( >\4’>Z>Z-´>bQ>p>€ð¬>Žh>œ¡þ>¡Œ>˜§Ÿ>’\>•P•>œÿ¬>£þì>¨4Q>§V™>¢»Ð>~­>õÍ>ª=>ºÐ>Æ ¸>Í\¿>Õ´>ÚÛ>Ú>׋>Û†?>âé¾>éX>ïÊ'>ðýH>጑>¿M_>¤[®>Ÿ:>žO‡>›Ò‡>œhò>žŒÃ>¡*>§ô¿>¯2>¯Õe>«XK>¨¦ª>«/p>²$>ºÃR>Á@ï>ï'>Ä–->ÇÆ—>Ê› >Íq>Ò£z>Ýà >îäM>ÿ7œ?œD?FØ?[š?QÅ? (É?cÈ?:+?äg?‰˜?ù=?¥~?&À?4am?=Î&?BqÑ?C.6?=»-?3öØ?(ô? M? Î ?+)?:¾]?J ?PÙ¾?PÞõ?Q ?S*â?X—?^=î?XþB?K¾Æ?LDg?W¤±?c…Ç?q·?v±Š?p°®?rà:?|î?€r?€bÄ?~®ì?p;›?f¦›?li˜?t°ú?}QÃ?† é?‹}C?Š©Y?‰x?‰ÐN?‹w˜?d?”ÅB?–ö ?”1ý?ÞÛ?ŒÛ/?Œ½?‘Õ?•äE?–²Ù?–kò?—X”?–Î?’gô?‘ŽÏ?Ÿè?Xf?–qå?ž¶ù?¨`É?±‹ò?·ï’?½#n?¿j­?½Ö}?¸Ô—?°§?«Â?°ì0?±6÷?ªh?¯×Ô?¼f±?ŹÎ?ɼþ?È‚*?È:à?É”‘?Ã…r?·p>?² p?¶È˜?¸?²Žù?²óÚ?´u˜?²?³ ™?º¾ÿ?º«E?­[?§ªŠ?´©V?Ç_ç?ÖÍ”?âv?è?è”?ë:¹?ïuê?ï‚ú?æl?¼SÇ?g±Ù>ã»%>†»¢>rßÚ>}zh>Âì>ƒJ>ˆÃ>_>•uà>™–Å>»÷>£ã>©…>®¥x>·>>Á·¢>É2ò>ϦÌ>×À”>ßž¸>ãæ‚>èo>ñ3ÿ>ÿÊ…? Cr?Y?üÊ? Ti? [p?)>ý6Ï>çÑà>àÚÚ>롪>ö£>ü(?ñÉ?‚?Ó•?²p?d–?›ó? XT?!i™?&¶¥?0Ûí?4Œ^?-Ðâ?$!h?$‰?2‰¸?ID¨?ZŸÊ?b%Ò?bP—?azâ?e T?iJÈ?héd?`”Y?MÑÊ?7²³?0à?7¾:?< ú?4×±?(6c?)‰?3D_?8)î?@ÿ?NÈŸ?S%?T’d?dΞ?x=µ?z@ú?gâu?X\?Pzå?Dk…?9x6?;ø?BY=?;?«?0çC?B¯š?b›?qû?sE?rRd?t–ø?w«“?w=¤?vÍó?xÚc?}÷´?„ ?Šem?Ž?ñ‰?Žµ^?PL?’ŸÈ?— -8?šèï?™Iu?Jú?ˆb?Œ5l?‘þ¶?–?)?•o?¥©J?§øU?%»?‹¹á?„«Ø?„uG?€s?z‹? M?„˜Þ?‰™?‹T‘?‹‡?‹Eø?‹NK?Š’?ŠëÈ?-3?‹«´?¸¶?lœï?|}Å?‰ë?Œà9?Œ¾‡?¶ì?’íš?’àè?‘_ö?Žà~?‹²½?ú?“¢r?•6¹?’ÒF?“­(?–%2?š‘?¥;?²,B?º?»ØÄ?´ör?§¨±?›7ç?Ž?ŠrŸ?‹A„?Œ?‰^b?†Vr?†À?‰!?‰_Ñ?„ôñ?‚¼?‰á™?•†µ?™Ù²?™ˆ¬?4[?£$Š?¥v?¦ Å?¦^Ò?¥®Ø?¥Ý7?§?§ì?¤@?ž@‡?›¿Ã?ŸÒ?ŸcY?š†?”G%?—7½?¨}?¶ ó?»1?¼ü¨?·L?¨Ù?ž™’?žw/?šêx?–?š? Èá?¥œ?¨ñl?­Sw?±Ãh?µCà?·r?¸‡¶?µ¹²?°y*?±eš?·b?¹¹­?°¨T?¦¡ -?§¤›?¦6L?¡ö?¥1•?¯“¾?¹Z?Â}·?Ì·?Ôø™?Û5§?ßW?×ø?¶x‰?‡*º?Añe?1?àN?_»?a5?cÃ?Kp?‚,?Êÿ?"º?'4¶?-C?3§?9qJ?=y8??#i?=®S?<Ì?@Ê÷?F]?Iæx?KÞ?M>á?Ph»?UMÙ?Y›i?^ Ý?dÕˆ?lzÓ?q S?qʃ?q§¾?pdÿ?nðÊ?t?}œ?sE?{x?b>?Iªl?@nž?<üF?<Èu?BÎÙ?I(Â?K“?Mô?SØô?[k?]äW?]^ç?]Dõ?_…Î?f©œ?s.?€˜¶?„|R?„Ÿ-?„ž"?ƒÆÍ?€v·?{”Æ?y’å?zpx?~Ì`?€â¯?€ÙÈ?€mÇ?†t?†Áø?ù?ŽìX?®ƒ?“?•Ì?•s?’ò‹??R?‘ó6?‘mÞ?Ž="?Œ#%?Œ¦?àç?Žß?°¢?–ù?ŒË}?ŒE‰?ŒÍ?ŽXÍ?YS? Ñ?‹´?„ô¸?~Êê?x¹¬?tÐ?uœ~?zÊ9?€÷å?„?…ˇ?…§B?ƒòÉ?ƒ%Ò?„ø=?‡çž?ˆ†â?†”O?„÷:?‚Ã?}–Y?x.,?t&F?j‹^?P‰ì?:î@?@b¯?Q'Ù?XÖÏ?Pûn?FÆ£?F™?J¬Q?O¢ë?TEÂ?Xú?[¶ë?X|?O&æ?N&a?SoQ?Z¸x?^ñþ?`uæ?cBù?gR%?kí?pÚ ?tà?s#I?poI?qt?s™?súÒ?vpi?{iû?êq?Ú*?ƒæ8?†¥?ˆ°¶?¶*×?¦ú?Šk?lWÊ?\>?W,|?[Bz?aµë?gSµ?k•7?oÅ0?t«Ž?p¢¦?a$Ÿ?\â´?gþq?tMq?|‰³?~¿ -?u}Ù?fU×?X®©?O??Oð?LI¢?G­Q?I>õ?Lìš?PìÚ?V÷?["ñ?]T?`µ+?eõ‰?ia?kX?nÙ4?qúŸ?s-„?q!h?kž»?[ñ&?Jë‚?Lž;?X…©?aõg?^Î?Ké??¤;?@ŸÉ?D™Ú?H¬/?K³œ?Oœ ?TÑU?Y]à?[˜Î?[é®?\ ¹?^h[?`¤W?_Öã?b¯¿?h\|?m­ì?rVü?vgŠ?z¢m?€ ?‚yi?ƒª?„)\?…ÔP?‰²B?Ð`?‘*8?’°/?‘·?¢?ŠÀ?Ž°?”1Ð?•å¿?‘pØ?ˆù€?……J?ˆ¯¥?¤x?’¼ -?—_?šÌ ?ž¨ƒ?¢& ?£© ?£Þ¹?¢vÿ?¡??¹3?›Ö2?ŸÕÒ?¥‹j?ªo?¬È ?¯`?±u«?µ¡?»Öü?¿{e?ÁØé?Åí ?Ês?ÎÈ?Òp9?Ó(‡?Ïàÿ?Å@¬?¿Žê?à Ø?Æ×g?Ì!¶?Íf¢?Ët ?ÎùÁ?ÕÖR?Úü?ÜU%?ß¼?æ4l?í9?ò„ ?˯¶?Ñî?ØH?ÜÃ?àåp?æ*±?ì0Z?ñìê?õ¡u?ù.‰?ÿIà@=f@˜×@K -@2·@±±@Ê?ú1Ÿ?òÚñ?ùî?þ(K@t¦@†¤@£@wN@ šd@;í@†@w@@Î@ ´@þ@ -l@‹e@b@²ý@$ò@ -Yç@ -@ @KI?û·j?ùî„@m–@¥ý@ˆ@Ðn@ ºO@ -ÑJ@34@!@%€@Ú©@Š¸@*@"l§@'ò@(>[@$c@vý@Rl@1õ@¶ @:Ä@±Ú@ ²Á@$@':†@'5,@%¼i@+B†@2J@6×@:7M@:?@:À@6Èð@-\ˆ@,lP@,Õ@ X™@Åë@.@ÂM@ 0|@´@¬x@p@A!@ º@ô @Â1@7â@@/Q@"“d@%i@&Í¢@)à@)f@( @*‰{@)@#Þó@# Ä@#hƒ@$Îë@'¢"@+vc@/ç’@2ê/@57â@8²@@C3Í@H0ÿ@Iæ1@Lš-@P]Ò@JÄø@= -@3\@2ý6@2Qx@+¸ã@$Ëi@#ã@'*:@*#¯@-ÈM@1׎@1u$@$ò@—Ÿ@Ø@«V@{Ž@×@’â@»ø@mà@+5@Öí@™Á@²Ð@Ùë@_ž@!l°@$âÝ@(]î@)Â¥@&­'@Åå@Ñ@¹ @* -@"q@úœ@=/@èˆ@áÍ@:@*@y‘@mè@h@¢Ž@Qe@'`@ùÎ@~Ä@ÿ@7³@ ¶ë@Àõ@ºï@ô@ x´@[«@gÝ@ -KX@ͬ?þ¥Ã@k@ß@ ü@ -[_@ -ÙÑ@ -*_@ý ?ód?σÿ?ÂÀ?Ë(‰?Îu?Ì£ž?ÎÔÚ?Ó?×q?ÝgP?æf?ëY?í f?íƒ÷?ïÙ?ñÉ[?òJÈ?ó?Îl?ÒÙA?Ö{Õ?Ù[…?Üyš?ÞL’?à°š?äÃ`?ç‚—?åÍš?ÙË£?Á­Ð?±Õ|?®£Û?¬¦º?­ä{?°²t?´ì?·Bå?»k:?½š?½ ©?Átò?ÇK¥?Èøe?ÊS?În?Ñát?Õµú?ÙÂŽ?Ý æ?Ý¡?Ó¾u?É.ª?ÌeÛ?ÑÑ%?ÒO'?Ô)?Øàc?Ý4€?ßÌ?ãUÌ?æUÎ?ê3?îg5?ô×g?ûên?ý%m@ym@Ír@¡@ ½M@ Jæ@ùó?ø;-?áS?Ø®–?ØV ?ÝÑF?âÈ•?äqÁ?æ„?ꤋ?òC?öÄw?ôg?öÉ?ÿ›Š@gK@VI@Ò@mì@-–@©Ó@ T@sK?üDÒ?ü 3@$Ó@¹¼@GJ@¬l@\ @ F@“ì@°@¦H@‘@‚ú@‚ @Ñ@ >±@!pˆ@"7`@&ÂÞ@)_Å@)BÔ@$…Þ@¬ô@ ©z@Ti@ -@ ÙG@šƒ@Ô@Œ.@Qa@5@"C@OÂ@KÏ@ =À@*¥K@3-Z@3¨S@0ü@1ž@@9…W@>ö@<@Að«@Hç†@J[S@I¤´@GO<@G]©@Mšh@Uø²@ZÖ@^¨ê@_ا@gnQ@nWr@uYä@o>Ü@fn&@[E@Fº”@ITM@Páª@O€@N€±@SÛC@Zx\@` -'@gbÆ@l€Á@rY\@s±±@xÒ@ƒ¸9@†2@‡€®@„W @…q›@‹r @ŒYT@„ã_@|Y@„âˆ@‹~b@®Ã@•G@œ‰Ó@˜ð‘@—è#@š }@¡5¯@¤Ä‡@£Ai@¡i­@¥ç@§Íh@§©Õ@¨ûw@­Ì/@²8@´>Ç@¸ðÏ@µ†@¦@j @¢Ð®@ªTý@©¡Â@©D@¬¨@­«ÿ@®¥w@¬¾$@ªúâ@¬é–@²O@¹Ì@¸S±@¸‹ @·$³@¹aQ@¼º@¼ -Q@½°"@¹zæ@µ–H@¸ö!@¹J@»Ë@¾-@½ÛÄ@¾o@@¿ð@ºŠt@°p @´ í@¹·@¾HÆ@¾ê1@À­Y@Ĩr@Äûa@»wx@–Kí@:]"@Ðá@ @—ó@ ¬4@ x§@¢%@Á@ @‡@#Î@&ÇÐ@# &@#hØ@'‹^@.l×@8~Ü@=…¬@9AQ@-tö@ -Ew?ÙS?ÜÝM?ä ?Û)¯?Ù}L?ÝÙj?âO‹?ãóÇ?æ?ª?ëEð?ót@¦)@ ƒ}@ _U@Û3@Õ@P«@ -*@:i@÷L@«Ã@^ï?Ü5è?§n(?©+Á?±«?¨Æ ?£#-?¤á%?¦R?©ò?®Wë?¶r+?¿“5?À„Ò?¼€?Çy¢?Éss?ÐØØ?Û‹?ì€?ðPS?çx?Ýé¸?Þ¿©?áŒ#?ߺ²?æUå?ïm?ôM@BD@ ³@·½@ù@]J@p@$´j@#÷œ@*úa@4?]@:Óó@2mb@c’@ãÐ@šº@ ?ò(Ö?íz°?õBK?÷˜x?÷ݼ?õõ„?õßÊ?ûxí@'E@QU@x@ .U@qð@øš@Z®@%xó@%„@$Ž‚@*¤‘@$¾¦@¡ú@›@.@2ò¸@/‡ø@4Wm@:å²@B,À@F_@IØ@UJò@^(@V˜ñ@T·@]Íî@k« @j@eÍK@f™@w´¯@‚ã>@}ÒÒ@‚ô{@ƒ -@b¤@`±›@yÏ¢@‚R@€mÿ@€î@@~[Ò@„CÃ@‰=w@Ž8'@ @‘A#@Šq@’@™4 @¡‘@¢à¬@žc/@¥l @®@°@®‹ˆ@¬aä@¯$|@²Ô.@²žç@²#w@´¾”@´»Ô@¶DI@À”Ñ@Å… @ÂCÖ@½1)@»4·@ÉY!@ÌŠ|@ÆIÔ@ÌMÐ@×àR@Þ0+@Ü1@áI6@äg @Û¢É@ØCð@Þ @â [@åo…@ß¹@ÝÁ'@Üì0@ÑV @Þb7@è¦D@ÝÙ@Üä@ê­p@÷Û6A½öAµHA¡æAóÈAÁ‹A87A3„A©ëARAæLA¹AS¿A AœkA &¯A ^A ã>A)ÒA –øA -JAQ)A[)AøÀAAÓAî7A€AI¨AÈA e@AÔiA ;A –cA -A þMAä}A;wAJ7AÂ5AB†AŸdAUQA AæA©©A·=A*ðA@µADA±hAKAc™AZUAù¥A%«A•AtA`‰A=ARýAšAƒA]éAŸ”A€ùA€·AãA=×AcHA†MA )A¦”ACaA·A)AŽ€A'ìA#˜A šAr¼AifAVmA.ØAטARAmA ò^A æÔA"ÚA$ûEA#¾âA mA »¥A ÎÒA s×A tZAëA\ÙA‚„A$)>A"8pA!A×IA#;ÛA"£’A"‘A$¤HA$NÙA"zKA±fA«~A#^A$úÀA$°A# BA ËâA"9VA DtA÷kA"X!A"aZA"@ñA#¾[A"ŒÜA!„A"÷'AüoA'ÕA Ö®@ÝÒª@®?¼@·ê@Ì“@Ôò9@ÖLp@ÓT–@Ñ°Ü@ÔÙå@Û t@Üõ¹@á@Þï­@âˆV@ç«@â± @à¥@å'¹@éh@ñ¸@ðˆ<@Û/:@¯ù–@ŽÎÙ@˜q¸@ªvÃ@°×$@²As@°y5@°Öd@¸=å@ºó@½£e@Àæ@ÆXh@ËRŒ@Ëas@Å X@Ç=ö@͵‚@Ôî;@Ïü¥@¶¬±@“ÌÔ@‡ê@Š!÷@Š¶G@~^ë@_x…@aÃ@|Ö]@U£@zà_@…´@…˜K@ˆýÁ@‘1Ó@dî@‘… @”# -@”¥@˜‚Ÿ@”[_@“í.@˜íG@‘Ïá@‚Ù«@z6@Dx@ƒ¹@„2ª@ƒ’Ÿ@ƒm›@†~@[H@–·:@‘oÞ@“fs@š…@¦Èö@¥`[@¥À@«Aæ@©7b@®w @²3±@°D‰@« -@›Óã@’Ø9@Š“@zþø@C@‹`v@‘#¦@‘ X@Œ;p@ç@“3¹@’ú>@™ó=@Ÿ4ö@žF@¼@ @£ï'@§ ­@§M@¥¦Ç@¡­@•@˜;™@œ¡e@ Ÿ@¢Ù@¥Ä@¦ÙK@¨ñJ@«v@°î@¸.Q@¾@¿?W@Âê@Æ ‚@Ç’Ï@Ì@ÑÉa@ÔG@Ö„Ê@ÎÖ¤@¾x@¿L„@Ã#@»¦@ªjR@¨1´@® -7@²EÑ@³ñj@¶^N@µ¶§@´ñ+@º/Ê@ÂÊÄ@Â…Ü@¿c~@¿F@¾êt@Åž¨@ÌÕF@Ðnà@Ò -æ@ÅÃ|@¿4D@Á©@Ä])@ÇD½@Æ0"@ÉÜ@μ@×H@ݬ½@ÚÂ’@Ø…@ÛB›@ÝtÄ@æ0;@ëo@ê!Ý@çîó@å¶Ö@Þ¶±@Ýwð@Ø0@Ô@@Þ¸@å]Ë@Ú|*@ÆC>@ÅŠ@ÊvX@Ðnß@Òp½@Ï™™@Í­>@Ò†g@Û'ø@Þw?@àÈ°@à7Œ@é÷3@íà@ñ°¨@ó Â@ð°B@ä´¶@Þ‹ï@è¥à@í;Œ@îÈQ@ì•[@ð +@ú-5@ûg@ùt;@öøÆ@ðÛ‹@ížb@òe@ûZ6Aˆ?A¤AðcAÛ×ABAžAþYA0lA7¸A…§@ÿù¤@öúŒ@ù¢|AÙqAÐ @þ­=@ÿ¯@ÿ¥AšGA˜ŸA¤TA - -¦A -<AýAÆA!›A¼†Aí×A þA@AÞ A.,A YYA ÃA1AtªA2AËA"_fA$aA%5.A$LëA"¼A·’Aâ>A):ðA-°A-ÙwA/¦µA3BÞA4÷A4t)A2SÀA3û[A0ªcA(ÀVA'‚A1 -‘A3©_A26æA9pA9eüA9ØeA;ÎtA98A@O:A@ýŽA=óWA6wA7/MA;òA=´dA>\@ABADôÊAE>¦AE ýACá0ADÎÍAEÌðAD?1A?öAIe§AKMMALEÍAO²ðANÆAOÓõAOLYAJDhAN¬ AUÚôAV÷ŒAW¡ðAVlAR·§AR¨eAW¢AXú+ATø AUŒ÷AX„€A[ªÆA]=ATXKANìðAYî•A\+XA]zRA_ÙA^OŸA[à³A]´·A_‹SA`6RA^&ºARøxARüfAWu…A]¸kAiÉAg³ÊAVüAQe A^€AY<1AT‹àA8¾ôA'ÆìA6S×AAA>E A5£LA7*þA9¸žA8ÎÝA4;ˆA9¾ÑA?`‚AE¹ˆAGfSAE¹éA@AEe®AMnAJÓ$AEéžADTYAH‹8AO €ANyßAKÏ™ACÝëA;ãA;g?A?/9AJŸ§ANÖ+AM|DAL(“AM™¸ANW[AL¡YAEÎA?[A9LgA;Þ³A>3A;š\A6,­A6 ÞA6ñPA-\^A&¥AA*ãÕA0âJA1æA-ºÊA*EåAäJAžGA¹A!ÂqA(LhA&ödA+Á4A1§—A79¿A84A9Â5A<@A6™A-ªA:MA@†’A7íA"º©A%%“A.EŽA6âÙA6A)ikA"óöA%~A.j»A.GA,#A6ð;A:“áAGôA>å|ADU´AGð«AI®ØAF‘µA:¾DABÝ©AO#zAE\A5sNA5ÛßA:{A16A2ÈUACT)A=¾_Ak@Û7¥A MAÇ-A9@ò`Ë@ãÚ’@í@÷„Ã@íf¶@ÏC -@ÌS@Ôr´@Û$¡@ãÔp@á @Õë?@Ò–@Ф+@Úv@ÛŸÈ@ßè8@éDF@ôM#@ö˜é@ö»N@ûàãA[AÇxAVXA^ÓAms@í¤ä@Ì,û@èò×A:AGí@ød@òáü@þÍÞA+=A— @î„”@çìç@ï&=@ú,ªAÙA°&A/uArA{˜Að«A Ac½@ù¥É@ȧ2@¿Q¹@÷qXA`A ÉOA›ÌA8íA´wAÎëAñAé–A: AT*A *©Aš6AbàAÂAÑAw‘A½¬A¾øA‘÷A^ËAœ¡A.ÞA‹òAתA¾ÞA^´A>@AMWA#UiA$9ñA& -ÏA+;£A,CxA*Y­A/a¦A3yA5rJA6A4-XA3‰A/=æA0F­A3ýoA8TAA<ÄŠA;*ÂA6ÇA7kA6MÁA7GKA3¨HA-§A.wÕA2ÉA6–A6äëA1GAö@êE—A"çA'Š¥A.õºA2¹˜A5 A1u·A)ˆ8A7ØA:úA8¤œA4!?A<¥êA/°4A(!A6 -A;šADQ…AH-nAF~6AFTºAHH¾AKZÕAL\ŽALlAMÆŸAOCßANwNALUºAP<[AUšcAV®±AVZQAX>OAX4"AX_AJ8VACè^AP›ASõ8AUžÈAZø°A[äzAXFPA[ŠAa°ÆAd”jAa›—A]páAd“A_únAYûöAUýAXØAe(JA`®œA^_ÕAhñôAeZ‡Af°>Ap#pAs5´AsVTAsI§AsH¾Ar`‰Aq´8AwkAzîAr `AoAg†AXqPAeë\Ay0^AÓæA€½ØA€fŒA}b AuNAhtžA\9ZAvmpA€tÌA‚ŽqA‚nA€íAz/1AnJ=A|»5A‚R¹AƒA‚Ï´Aƒ[¬A…×ÙA‡ õA…±ŒA‚8AP(MAwrA"ÑA8PòA80AîAaUADAQ¼A!H+A';áA*f£A,áA,ìCA+˜âA.ãA3ú`A5F„A1táA2‹èA;xuADO—AG¼-AFÖ=AD-ùA>_ØA>ÚãACS8AFMÁADMA@ü@AMNÈAM"AIå&ANÛéAQ]AJ§ÀAMšA6™“A0<ÙA6õ A;BA85eA+7*A2&A<ˆ/A<ùÃA;YnA?¿ A@`µAA¼½AC\ˆABVôAE„gAG³PAF˜AE$­A=ÞqAEróANï$AV•[AU?dAUû&ATs“ARiAWïåAYÊAV×ÙAKŸBAQëoA`=äAbÂsA`ASšÂAS€¶A[±ŠANÈAL5iAUòxARwaAUšÃANK#ALT\AX­ÂA]:A]͉AV– AXAa[Ac\`Ad½ºAd^Ah¿¼AcÙ~AdšAcý¹AfÖ -AimèAit3AnC~ApϤAp·FAmÇAq cAs+’Ar!2At†BAr«At=¿AhÑAfýAYcAX|ArvAvkOAyUbAxy°Az„ÒA~oÂAs]Ap;žAtoúA{9]Az¡ÈAxkºAmzÂAqˆ«A~1WA€£A€±A‚]ÜAƒ -;AsŸA×A‚@÷A€‰AzÚA~oAy¸4AuåtA}‰ A‚¢²A„σA‚Ñ=A‚Ü A‚V“A€æmA¥AwÞA@jA€¦\Az:”Av}ÞA€)ãAƒ°íA„QcA„÷A…dmA…ÈõA…@’A†BPA…@åA…—fA‚Ö,A‚î“A€w&A|sxAsôAcJAgÝöAy@¿A}á¸Ap ‰AmL]Ax}AtLcAqŒAy:Ajd?AbôAh˜!AkX†Ai§×AfM¬AnñßAmµŸA`+£AgÀAk7èAoIcAj{©AfГAgý{Aq]AnÄUAw;VAxÇAv®qAmhAj6øAiD´AjÍÛAnļAlNÛAkÈìAj¦AbZjA`"ÜAa’0A]ŸA^é§Ab&‡AhBAf-AežAk‡½AjrzAfBqAf£ŒAddóAg$”AiZ#Ak¤Alw½An­ At8ÌAs/DAmUüAqêÐAqîSAl -Ahå,AjÆïAm]Ad›bAb¨Aln•Afð¢A\ ëA^anA_&Ad².Af-Ah9þAgüA`@äAk7±ApD¤AiÜ0AjgPAn©_AiiAgÀAlÈ´At0çAu´At©As -ÿAs=”Aq×eAiÓÐAkæŠAo›Ah·aAgyAp[Aq¾íAnÄAsqFAtsûAw‡ÅAu»ÒAp Ap]Am''Ai¤UAo¿æApy/AgóA_1¿AoE*AséoAoN.AoD˜AvÒqAzéVAv=AsÝ«A{,A{ý¥Ax{×AxÕ"A{ÁðA~ AÈtA| üAy=¬AxRA|oA‚éAü©AzJÂA€¢ÃAÆ_A€eõADAxí"Auú«Au8¤Az¶ZA¼A•AüA¸KAƒA§pA€šA#vAƒ"íA7A|5ÎA‚€úA„¿A‚µAqŒÔAlAÉA€«A‚F:A»QA€sAƒ*A„¥A…/ÐA„!A?A|ý+Ay»vAx/åA‚„•A†u:Aƒ-4A—FA„»öA…øÎA†XÅAˆ-¹AˆA†*?A}|Ax%A…z A„ Aƒ;êA…ÊuA†Õ A†=îA…Ø A‡pA†ØÉA‡‰A„fBAƒº"A‡Ð©A‡7A†bAƒuùArnA€#Aˆ¯A†bzAy3—A‚~‘Ap Az.ßAƒ èA„î¦A€<ôA}¬çA„6°AƒÃÌA€qA€”AòAq•A„j)AˆQAˆì¬Aˆm>Aƒù%Av¥oA‚InAˆ’A‹þAŠç¡A‰2 A…ÙAzdøA€¬ùA‹Z&AŒ £A‹§6A„ÅÇA|JÒAu‰œAw_AA€9°At^An -A€i‰AxJ7At­ApÕ®AyAmKAlZ¥Ar A€ŒA‚w’Aí A§2A‚ð„AƒB½A A€ó¸A{ AnlqAvçTA„•A†ÿ"A†PWAwpAbQáAqÆõAodAº¿AƒâCA†äA‡E“A„ÏÝA„r^A†'>A€ÁAwCÉA|ËA{írA€ðAƒõúA;¨Avý?AxÁ¥A{#{A|¦wAwûwAsL A~Ã;AŒ¦A‚V*Aƒ‚ÉA‚ñ’A‚™¾A‚\AƒÁËA…PŸA…š±A†A_A„ì¬A‚;Aƒð™A„ùA…åA… 'A…÷ A†ÁA†#A…LvAˆkqA‰®$A‡;A„<ªA„*A{8 Ar­çAvHAtÑdAq7Afý;Ab'ÚAhN+AcV¹A_©:Af˜Arþ@Al1uA_Í"Ae÷&AoøAw ùAp»¦Av6Aƒ øA—AyäAužA~UËA{¯VA‚ÇÂA‚õA€®DA\ÑAzØþA}NšA„Œ AƒåA}(ÇAzh…A}s AƒAƒe…A~êkAqNùAv_ -A}Û,A9A„?3A|šóAr WA{’íA~ѨA{‡AzpˆAx±äAuA~1JA„ìÛA…¦šA€zÌAƒ¶ÑA…OAƒzA„G&A{RØAo ÖAm¿A~(úAÛõAƒA„sAsáAmXÍAsqÎAn­AeLAglƒAxA“Ax,±A€œiA¾ËAxAjAyÂäA~òéA\€A}3¥A~µAy‹ëA€ÙsAŒdA€çsA‚B±A„t°Aˆ*®A‡Ê×A»“A€µA‚ËA}ÌA{`ÉA}K A¥ŸA‚"§A‚JäAƒ|íA…\`Aˆk²A„Õ'A€»èA|^¯A‚²;A…¬µA~1$AqîAz©{A„ù%A€ð1Ar•ûAxæñAÍöA€†^A~Ê\A|”6At/ýAxã‹A„W?A†BAÃyAƒA‚}A~ÐA€ÆAA}U3A{S&A€(xAðA€§3A‚A]Aƒ¬gAƒ†|AƒÂ{A…_ÞAû;AyNÜAÀvA‡õ÷AˆE®A…£A‡Ž`A‚ìmA„ôöAˆ¤A‰ÎdAŠ¢A‡àXA†-A‡íA‚†A‚àYA…ÒìA}a­A}ÈSAw®*A{½uA‚TSAOA~¹íAãAƒ/ÍAƒA‹.AŠQ¡A‡~A…¦ûA„ÛºA„éSA‹"AŠè–Aˆ)ÌA†*A†÷•AˆvA‹7ÚA‹/MA‹9êAˆ¯ÓAtËmAƒÌuA‡xVAŠô[AŒFÙA‹fïA‹@±A‰€—A€ZãA{‹ÌA„΂A‰hXAˆ¾A…›ÁAˆÉÎA‹ ²A¼sAŒ&ðAŒŽ"AI¶AŒ}’A‹H8A‹±“AŠüáAŒîÝAŠ‚eA‡+æAˆÌ)AˆfêAˆ¡eAˆæMAz40A‚ÑAˆŽA…n‡A‰.ùAˆ/êA…ã$A„ -WA4ŽAŠÅ$AˆÎ£Aˆƒ[A„0ÒAˆ8 AŠ—AŠÈŸAŠÇfAŠA‡ÝýA‡*A‡”•A‹FA‰ÆÛA‹‡9A˜DA2;A‚êiAwǺA†õ!A>âA…}qA‹¥AŽˆ>AŒEDAŒÆAA‹käAˆŠAˆ;¸A‰´7A‰xAŠR#A‹”ŸA‹ÁùAŒ„ÛAŒA”xA…`Aˆ6˜A‹—×Aƒ¡A„N½AˆòôA‰JA„Á€A…â8AŒ®AŠÂSA…ÞQAŠ7‘A‰ù¬A…‹A„QsAŠA†òoA€ušAoñA‰^A…øÑA„êÓAŠÛ…AŠ˜A‹–AŒ¢±AŽ+ÈA‹_A‡¯A†–QA”çA‹0GA‹¶µA‹è&A‹ AŠ³AŠ—·A†¦A‡’FAˆGrAˆmäA‰VúA…ôAƒ‹ØA‡1ñAŠž¦A‰Î÷AŠã¹A‡ AŒ%iAʃA‹óA‡Á.AˆöbA‡£gA†(¡Aˆ˜2A‰Ô~Aˆ–5Aˆ*`A„ÑAƒP¹Aˆ%A‹!AŠNxAŠû³AŠÍqA‰Ç¸A‰åÔAŠbA‡½7AˆU+AˆAŠâ:A‡¹:A3"A€ÐëA„;³A„ +A„y¬A„ŽA‚ûA†©ÖA†í(A† àA†ŒoAƒžàA„P…A„OA‡wéA…Ô¢A‡8öA†mA†ªcAƒŸ¡AÝúA„‹qA„‚ÞA„ -¶Aˆ¾…A‡¾AyÅ Ap« AzsƒAz÷AzAÍAvèNAsbAx€øA|£àA}J2AxnAAw¿ÂA|EëA}ñÂA{¹\Au)5AvU_A}³IA‚ -ìA|µ“A{JÀA€ËÚA~AA{ëÔA{LÒA«rA¼¦A|¥RA|ìªA€ögAÑA€.ŸA‚#…AÜÂAC=At-A€¿6A…ÇAƒAÔAƒÓ$A3qA×hA…$³A„eA„‹ A8‹A€L_A‚9AƒÆkA/‰AtãA}ž¹Aƒ‡A‚ø±AY A€9¤A€‘AƒaA„ŽTAßeA€¥¼A€ððAðŸA‚†öA„«1A~’PAr½Aƒy+A„¹¼A„ÌzA…/wARAƒ]åA‡TA…x×A…XA‚ÖÅAƒ,A‚‚[A†µ–A„üüA„ù+A…[öAqµA€‚Aƒ¡éAy/ŸApÕ]A~·AƒŽ²A€ÄøA…ÝxA‡¸æA…‡ A†¸Ðü;Q‹˜;]¬$;T¬E;7%-;Â:Ê:… x:1 3:òö:DÓ·:˜ú:áÇî;,;%Æ?;,†x;.Eü;+õ~;:øj.:¨ÜG:L¤9øä9Ã@9ë¥å:.à:xÁ:ŸS«:¿h-:â‘Ã;+ç;Î:Þèé:  p:bq:d›Ë:´«k;ì;sC; C;µ\;¶*<;¯ˆß;°uÈ;½d3;ÏUZ;ÛÙ\;ß‹;ß–u;äE®;èña;ãq;ÔÙ¤;Í<;×ÿi;éïá;éð”;Ò&Â;¸Öœ;´ê;ÀÈ ;ÌvZ;ÈÂq;²©v;’ôQ;w4c;qFÍ;‚X;†ÔÀ;x¶;Qƒ';->ì;a;Ã;9¨X;eE;Š.0;œhÎ;¡©…;•Ï;ø7;`€X;`gå;sÖß;‚è£;‹;™Yä;¯»·;È‚;ÛMa;åÔI;æÁ;ß,;Ô%„;Ì:);ÈoÞ;éP;ºÎa;³±;º T;ØW;ÿd< 'Ý<j–;üãù;雄;Ø};Ëç;ËSz;ß “;ú¬-<’H;ø”,;Ûõ¬;ÈeO;Æ N;ÊEl;Ì;ÓÒ;ï7À< Æî<©„<ÛÏ< Œl< T5<Ó´<$m„<(çÙ<!:<Eo;ü ß<K}<Ú4< ‹< K×<À<»Õ<Ó2æ<ª;þé;ÝŒÙ;¿J-;»k';Ô>};ôå<-6<sû<‚Ó<jØ<x¸<$…˜<÷¶<¨B<§90<—]Š<}Φ.<,¹]<-OJ<\¦<—Äñ<½åQ<Ë\™<¼¥û<¡xy<‹ÃX<|y„<_(ÿ<7AH<Ï<¸¶<:a<4Æã=äo=½<öåÞ<ÁÕš<£V~<¢p¡<ªs]<¨V<¡¾<§ú<·<½’í<²/ <«A<ć <ÿ—C=!VÒ=9ó=Cú1=>hÀ=)ªZ= -·<×U<¨<¾<‹ñ<†‹J< ôL<àHr=šµ=Ln=pÙ)=ƒ(=…ÞŒ=j=cG:=EY‚=:`›=I¼=f ˆ=J†=ƒzº=wÉ=V½i=0S‡=†Ø<ýøH<êÔ§<êë†=ä†=a2=3œ·=7l}=4’Å=<}ƒ=U2V=r÷ë=‚øÎ=ˆ%0=’î =¨»=¾s*=DzÝ=¿g3=­Í=œ =’‘Œ=w¹=‡[¦=€<=v-=p|õ=f:ó=NË4=0IÅ=L=..®=[B÷=†¶l=–Ý=›©:=™@=’û=‰Ûµ=|ß=dZ÷=K8w=5¤=*ùú=2nh=PÒ=|(=Ž§&=–èØ=ž}H=¨=­;{=¬Ã~=¯û0=ºä=ÃÏÛ=šè=¼è=½t=ÆÐ=Íßz=̲â=ÄJò=¼¦w=¹N*=º™¢=¾Š=¼²é=°š|=¤£‹=¥sá=±Ì=º¨V=¹Ê&=³<Ï=°s¸=²¿t=·†r=Á3S=Ï_ù=ÙH=Ù@=Ñ÷Û=Ê™O=ÇG=ɶ=Î.ô=ÒG =×S¨=äÖU=ýlŸ> X>¾>A=ð$ =ã“=ጅ=ÙÁ¬=ÉXb=½^1=¿úù=ÏDÍ=áÝ=éÅ}=çrÕ=ßv„=Ïç6=µ1ˆ=œ—E=—e˜=¢v:=±:Ø=ÃO=×8U=áüã=ßÓn=ß[2=íQŸ>$Q>¶Õ>·>V¯> ƒ:>¯b=üÎÇ=Ý5o=¼w=¯u=Â-þ=äá=ý>_:>O>ßn>§3>r=úBÐ=îkð=ã«‹=Ò3<=º×ª=µlÊ=ÔÀ?>ì]>:®>ò >2Š=þ®n>4>¯»> †­>5Õ>æ ->ô=>€­>H> åÝ=úѳ=ûl¢> í…>!Œ>.1>0ÝÕ>.Å!>.· >3>7ÝK>7n·>1ý>&]!>‚¤> 8>>&L> )µ>¹x>D->­>{>#dš>84•>Jus>W9:>]-/>Y–­>MÙÍ>?¼>2åË>,Tß>*»š>,Ð2>.}æ>)¹ý>"¤d>%@–>2H‹>=c]>=ù>4>-:>/„Í>9-é>@ùŠ>AÚm>C€ö>MU>Wêz>Yq£>VÕT>YÓš>_• ->`›>_e>bû[>lF>tƒ,>uÜ >lÚà>\ç|>Oàñ>N$>WÚ”>fú‹>rQú>sïE>p >mßÿ>k•Í>e›!>_>Yl¥>VÓ>[Ÿm>e{>iNÎ>j.R>m¡Ê>mø©>fú´>[„Ö>N±>E‰'>Hé>XÃŒ>jÁ>lo>`â©>V‡[>ZZ>rt}>Šìd>”œæ>Æ>®->l0û>aq<>e­2>t®>|·U>oä®>T}‡>AC>=…_>@Ô—>Gü>T¤î>rú>‘w€>¥=/>¤·0>’‡ª>€hz>ooµ>f)ˆ>WzR>ENz>7ù>7m>Lv±>p³=>€l½>m/>R¦á>Ko>UÁ>_7 ->[ç>MË9>B2`>;:Ñ>:·î>Dª">_>ˆ[j>£I>©_Ô>“‘>etã><Θ>9ãK>KŒ>XFm>Yð‹>SÛ­>IÿŸ>?/>4‘ë>-Nì>0Ý}>@pR>Y~>>‚¨ý> q >±Ù%>§ü>¸U>~w>|*ü>„îC>‰â>ˆëä>ƒÉè>RE>€ñy>‡ Õ>¹z>ò ->Œ}r>‡Íà>…v >„->ƒ2§>‚ß>‹Çˆ>§Î>ÒÎÑ>ö=>ñ’½>Ë4^>¨^>™™6>™Pÿ>œy2>›„Ç>–VM>“¯:>—)°>p³>£’S>¨·¢>ª.->¦ºù> lw>–}C>‡ø–>tàö>hÓ€>jë»>r‘$>}Ÿz>†LÌ>®/>’º>‘þ>“X0>£¨>É”ð>ïј>î7>Ãã¯>ž[‹>•ùI>›þÇ>Ÿ?s>þ>>œ«5>™t>:F>†*Ú>„V²>ŠDB>Žd>‰æ>‚-<>yÔ˜>w ,>z/£>}êI>~ÕT>yû >lUÊ>]ô:>U »>Kª>D«Ê>GQ">Ka[>HÙ >LÇw>d@q>ÜÕ>Œä9>”à•>žH>¥µ>¤^>¡â¿>¦·D>À!C>ù`?=9?¦?û<>Ü3>½ú€>¢©>‹Ì|>‚§H>ˆ¸F>•6>Ÿ#>¤Ôi>¦¬*>¢æ>šªÅ>’Ìá>”?>¸º?µ?Zxe?wÔQ?J©>ÿ£[>š—ú>g…‰>]o‚>]')>MsT>>nD>FÏš>b>5>zE>€«>zxø>uÌ>Œ¥>ží>­·ú>¸Zx>¼aê>¸Ž³>ªÌ¾>—þ&>Š¾">ƒ‹e>xö¡>n˜>o8|>vŸš>ƒŽ’>“n’>¢s >¦ñÿ>¥è>£ÿ†> ~->“Ø>‰éà>¦¡*?¸?6.ç?A”ê?¾>é€ö>Á» ->¯¼¼> ú >—/á>˜Eâ>Ÿ`Œ>Ÿ;š>•×³>Žþ»>“E>ž)>¨ÏË>µ6>ɳ¹>ál@>î˜õ>íÎ>æ&>Ú4î>ˈS>Â).>¾¹Ù>»÷Ì>ºt>¼¾Y>¿]h>½\‰>¹>·ŒE>´fï>¨Óé>˜ùB>Ž½>ŠÊ˜>‹­0>‹ÑÉ>Š×>‹™ù>Šå`>‚(>hNÐ>Q>>Dþ>FÔÕ>T s>L­l>&#Ò> z•>)*>N(&>† 6>Ÿï#>§5'>¡>‘9º>ŠSÅ>…QF>L£>€^´>Œü>™ü˜> ;6>¤@·>´®q>Ñ(ò>æê(>ë¡{>è” ->çH­>áù{>ϸ)>µ‡•> 3>•eÉ>‘Å>Š… >{¦˜>a†±>UÝ[>Y]½>i~Þ>‡‡œ>¨¼[>Î+P>ï`? S¾?R«? „¾>ÛŽ[>² >©>¯¿[>¼HÞ>̱ù>Ü°>ãvö>áx>Ýý¡>Ø >ÔaÊ>à^g>ùm?·Ž?=?l¬?Ž ?Ur?§>ûµ‚?Ò”?mÿ?q”?Â?¨´?¿!?£? f? (ê?M©?(Aâ?<¡?Dg‡â?/ùN?!—,?º„? É?Ýg? 2¯?ÿþ?êþ?à»?&6þ?-1?5Ý ?=nð?@úÛ?>“`?8Öø?3ñ?,î„?&~G?!å§?vr?üÐ?a¸?)é?<Î?L*„?YÅ¿?bˆÍ?`p¹?Rû]??Ö?.nB?+^d?7:¦?J?]f?m¡)?wÕ8?z -ô?to?jˆÄ?^ƒI?LAŽ?3Õ?^¬?- -?‚?ƒ{?%b¤?; Š?NœÅ?Yþx?[¯U?S‘D?Gqq?BA?EÇ«?H3D?FUÝ?Fb_?LX?Wj?^ÙÖ?Wp^?Fn‘??‡,?H3¼?Q߆?U\®?[G?d -?doe?Yƒ,?T¯?a*c?røì?w@O?hçå?P…¨?=Gg??N7Z?P…'?IæÏ?<¦ª?0*U?(x?%ÄY?%Í^?%é[?#bø?ö‡?×T?#ô®?)›À?.SÕ?1+b?3¡?4fÁ?/à?'FØ?'5Ó?4ÐÃ?FÙ?PÕf?OH†?Hó×?EÐ?Gi?I¿ý?M4ä?Vuß?c9.?kú?nw*?s -|?wÒŽ?yµÂ?|" ?Ö˜?†"?†uÈ? $?u—q?jœ?`‰?VŒ¥?Sdê?WCø?Xh?LÎR?6p6?¡r?N‚?ÇZ?)?s ?Ê?&;ˆ?(?'\Ÿ?'˜?+< ?2Š?7™»?5jÆ?0Sð?/÷?29?.†?+ö?8B?NÜ?Z‹ó?ZjJ?WX9?Q?Bì5?6¡???H?k€m?–‚?£6‡?Õ?ggÄ?IN›?BÖ ?D.^?Cyz?:ÎX?.·Í?&¥1?!2?{?’>õ"¸>é(®>áþì>ØœT>Ë<Ð>¿”>³o>£\{>ŽGç>iF>-Vi=å$‰=Å=§%(=ý#á>DÕ5>‹êÄ>µ×‹>Ú¹>ìö¥>ïÝš>õJ)?2I?#¦?ã?$¹d?&!ß?$à•?&cº?-çº?7J ?=G­?A ?E[û?Hy¯?CÅ|?5;˜?%DY?e ?Š>â[¯>Öt&>ì”?´Q?‹K?šœ?Xž?H? ÷¢?ãc?)3?L#?å ?}ð?âð?oS? ŠH?d ->æ'1>Ô]->ÄH9>²Ð~>¯fÖ>¿ú(>Ø`A>ëŽ>ôœß>ö½È>õ‡Ê>ót7>õ%m>øǬ>úl&>ý±5>ÿ™e>ó¼Æ>߆ë>Ý›´>÷ýN? Ö?á2?^?Ú&? ƒ?ã0>ùè>èM>ã×>ìÉD>÷Õˆ?®¼?kÔ? -î?‹Å?2ôc?>Êä?({å? š>íU<>Ö=ô>¿‘ü>«¸ñ>¡½Y>£w>ª#ñ>¯”$>³uù>¹œµ>Å>Ñà>Ûw>àR7>ã0 >ìhŸ?ÓŠ? aá??E>ýô+>üÖC?ø4¨>Ùæ>¹ôi>£Xñ>›1ž>¡AA>°÷Ñ>À¾,>Çób>Ưþ>Åuž>É1|>Ïß>×ðâ>ái>é%8>îá·>õXf>ú ”>ü¤}?f•?#?Š ?  ?@Ñ?K§?›Ÿ?}? 6?? Ç?e?lÀ?jS?{ ?J? ÷£?’”? x‹?ÖÇ?„k? }s?¾_? .8>ùWu>ÕËð>Åæk>È|>Îýê>Ôœß>ØùG>ÞMº>ä(>áí%>Öü‘>Ͻ[>ϼ>Òb(>Üx>òË?%V? -"Í?ú­?ÉÊ?â¨?»±?a¨?¹V? #ª>üºÑ>Úv>²i2>Že€>s>h7>oÎq>³>„á¢>‡ƒ>‹Ü”>•Ç>¡Ù>©Eu>¨!>šÕ¬>ŒÌ>‡þˆ>‹”Š>“EV>™)7>ž‰ˆ>¦¼r>«“t>«wh>¯>»I>Ê0N>Ò‡>ÕÀ>Ö;Š>ÕÎ>Õò<>ÖðÔ>Óct>Ía¸>Ìb>Љ>ÎÙ>´r>´ì>¡"1>†¢`>dã>V¸W>Xù*>`iw>jï>tfœ>y»ð>x¬]>wCì>|¾š>„Ïæ>Šæ>xB>™µ«>¢Èb>¥Šø>¤èÎ>£ø›>¢¸´>¤vá>¨æÇ>¬aw>¯|q>³²e>¶Bv>¶kµ>»–C>Èœ§>ÔyB>بÉ>Ö›>у¼>ÍX€>Î#·>ÎX>ÈÃi>ÁÇ·>»g>³Ä%>¬…>¡q>’{î>†W>„:˜>‹Ç>™1ÿ>¤s©>¦›†>¢ˆt> ­ù>¤¯ï>©‰9>«F">«Íî>°^†>¹V>Áa>ÄÞ>Äõ>Å >Çë>Ê>ÎÑÓ>ÏÝ°>ÐÿW>×üG>âŽ]>êxÃ>é¬^>áå>Þë>æ!¹>>ó×r>õSu>ò[>ï<>ðïs>ð‘ó>çɃ>ÙB²>É@c>½¯ß>¹x1>·ØÓ>¶¸>¶C>º'A>ãÁ>θº>Õ:>Ùãe>á”J>æ~ç>äY >àªS>äÁ>ï&~>ö-Ø>úE3?þ? û…?(²?Di…?@=‚?%ï?Je?WÂ?hû?öŽ?ÖZ?û†?­ö>ü-Ì>á -“>¶wÌ>‚˜§>0¹ˆ>6!=ìp>=î2>;>‰X> ë>'α>/·À>8‚>>«]>D–R>JH½>Nû>WÏj>ftV>tpK>}9Ì>Âb>zɽ>rÒ•>zþ+>Ž¡Ó>¢Ù˜>²º>¼Iè>¿7>¾i3>À…\>ÁúF>Á.å>À‚<>À¥ >ÀT)>À:ý>ÀiŠ>¹r>¥â>‰3n>\Pþ>:i‰>,A±>)Ç·>.ã>9>BN'>FM>H!#>Rª>dh­>sº«>v•ò>pIÆ>jÒ2>m×e>w³>‚ñ>¥Ä>ƒ()>†$>Š·^>‘ã>—Á™>ž)þ>£é‘>¨½»>¯3>¶•5>¼e>¼§š>·š>²]·>µá>½Š>Á»J>ÂÙÂ>¿³>³Pr> .>Žáß>†L>„GU>…›Ð>‰Ü~>Ò°>‘Ÿ>ʆ>’†>•¥I>˜D>>™ >š#>Ÿ¡À>¨™Ö>°§>µ«é>¸p>¼q>Àÿq>Ũ>É‚>Íý>Ô<›>Ù1d>Û5´>ÜBÐ>ÝÒ&>áq_>èôç>ñM0>öãÂ>÷òC>öÐ>ñ2k>êßX>ê³>ðúN>õ¿@>òyL>甼>Ù‹=>ÎY;>Ëö>Í´j>Ò–Ô>ÙôV>áêä>æYH>è'Œ>ì#¡>ób8>û]e?:?ÉÖ?^Å? 0 ? o? …ï? ÌÎ? TÒ?‰C>øÌ}>à ”>â;|>üÏ? -ðf?ØÄ?}?™Þ?û&? ~L?$×å?(þL?-‡Ó?3â0?:O??X/?F(Á?L$k?Eò¿?-•ý?ú>ÄÔ€>€¤¨> ;u=áæ =¿“W=¶­V=¿¶=Óc*=çÄ0=÷– >@?> 3V>œ/>@ƒ>qÜÒ>³J>%Ú>€Š§>hËÛ>iT.>v&>}¸æ>zÚ>†Dõ>ŠºÈ>Œõò>Œ è>ŒŠ>”‹> ÷:>ªé®>¬´b>¬Ð@>±=>¹`§>Ç¢“>×?ª>àï>ØÏ=>¼7>‘ûM>\ð¥>>9—>6*Ä>4&>:{*>Fá>RÕÅ>YÂi>]ϵ>e{>ssç>‚f÷>‰¸–>ÓÔ>­Ð>“£‡>”š„>•v’>šŠ%>¡†>§pX>ª¤Ç>­%´>³œ>»Û+>Ã,>>ÉÈÁ>Ì¢U>΋¥>׸M>⾑>ä³!>ÞMÅ>ѧÙ>Ã?„>ÀF>ʵ>ÕBª>Ѭ&>ÁqÁ>´‰S>±¤>²(Ö>³ ‰>¸eÉ>À¦’>ÆËš>Ê~é>Þ'.?êÒ?PsH?TæA? :>îk¦>Õö >Ò›%>× Ê>Þˆ>åZ²>ír¤>öOB>þ?ÃÄ?®ï? «?Äç?qo?®€?|m?þ¯?Yå?Ë¿?›^?Më?"º?&P1?(Þ?*’?'@? ñÌ?™ø?bª?}ÿ?&>´?/D?7¶?;ö?;¨µ?6šÍ?1ö·?3Bi?9éB?@ž:?E?I!ð?Ow¹?W]ç?]¥à?`,|?_4¤?`^ñ?eé?iH2?m¨?sƒ¢?~£?†(}?ˆøY?ŠpX?*?ÿ?€«?xI?‘ݘ?Ú?Ž\?”ü?ž9ù?¢ÓÌ?£k?¤ß1?§‘ÿ?¨9è?¬']?¶D?¾i?ÁTè?ÂÀN?Ç(?Ì ‚?Í0³?¼à~?ŒbÒ?o—>t0ê=ÚZ‚=±†=Æü=Ú}Ì=áh9=ã–^=ç›I=ø¢¢> B>"Ñ><%>Uì>X§ >H”“>;Ç6>>™\>N¤u>a-g>k¶ö>ic">a¶õ>a°·>qè¼>ˆñ~>˜þ¶>¡iÁ>¢ï> …«>¤î¹>°zÒ>º=E>¿i3>Åg>Ê[‹>΀>Ï[W>Á]> ª>>…_þ>{B>{ž>>)>ƒÍ'>‡'>Š¨š>hj>—<>˜ô1>—/&>˜>›ŠÝ>œ(€>œÚñ>ž)‰>›ÿÃ>–Æ>™Ì—>¨æS>´šô>¼t>Ä‚>Í‘§>×">ßÝ>ä’>çÿ¥>ï]Ò>ú€ê?¶¼?m¦?a¢? Ùh?Ø°?$×/?(±`?'¶|?%¢`?%£"?&Ó?$wS?!x¨?ÐR?MÂ? 6ä?"±K?(rò?+ú?%Ì?ÐÏ?ÊŠ? àe?)ž9?4\Ä?7eý?5ü?71©?;ØÕ?Aø?LW?Uõ?WüÀ?\lÿ?aʽ?d:B?cF¬?`†¤?X9?UÆf?a—b?q%•?{´6?û??ƒuü?€MÒ?{ùU?|Ü ?A?…©€?ŠãÖ?ŽÐ?›Þ?Š¦7?Ž0ò?—Wê?™3»?’hH?‹j?ˆ%è?‰¢/?Œld?Ž‚é?rà?’Œs?“¼±?•ä+?™z^?œÙ?¡‰ -?¨À‚?±ù€?º²h?½¿ÿ?¹)?²,ç?®ëÐ?²~^?´@,?´Ï0?¾øÀ?Ì ?Ó±T?Ò²þ?Î0?Ë6Ñ?Éò%?Å~w?¿&Ð?¾B?Áe]?ÂD2?¿ï?¿æ1?Ä/‹?É™}?Ìvj?Ð'?Ðî8?Êe?ǹE?Фn?Ý£?åó?íkñ?ôŽ ?ùD.?úƦ?ûPg?ÿE¡?ýÍú?Ü–ä?m?Ùò>PU÷>ä>RÑ>ÞÞ>+é>5u*>;G¾>F,ˆ>UØ¡>dD>p@È>‚t>ŽÕ^>˜T>ž³>¤P7>­È`>¸Á.>Á®o>Ê*%>Ö‘ö>æÂ>ó½>þ×î?‘å?ì>ú-½>óý1>ï×à>èrì>à»>âæa>ó)?ׯ?2? \8?+2?íP?¦?&?£?! -?$R?)×?0²,?4L7?2€W?0í?4Ý?6”.?*Ná?"‹Ö?)åÞ?/?22?4%¯?/ž?"î?ÅØ? ”)?&($?&Ï;?!—r?!Jy?)”t?2¡?;rœ?C®?F!?H†…?PÏx?Z„?Xíá?MË[?Gf?EN??>ºâ?:&ú?> 0?E(z?G7?HAŸ?OC?Z/?_Y·?XÍ"?Ky?CUü?Dº?EÈ?H >?O"&?W”?\¨~?b q?i†ª?o˜ý?qè†?r’ñ?w+§?[-?ƒDa?„Tá?¾ ?Ñ*?‚IÑ?†s?Š}…?‹ ?“<Â?”…?&?„eJ?yO^?v –?qçš?oZ?sÅ?}Ñ4?„™?†9¼?…Tw?‚Êÿ?‚À?ƒC˜?ƒjo?ƒc?‚פ?[ ?|ˆ¯?‚ Ä?…b?…þ_?† -m?‡ër?‰ð5?‰ïg?Š¡‘?’+Ç?@ž?žã?–]õ?…ÿ?‹Ø?ŽŽ6?“bÜ?›?¤Á)?¬ÿH?²9Ê?±ð -?ª o? d¤?–,Õ?Œ¯ø?‡åç?ˆ9Ý?‡ñ¾?‚G ?y‹î?zÚ_?‚üd?‰"_?Œ²ê?¶?ŽoÂ?õ?’%o?•£?˜^R?œù?ŸåŽ?¤*d?¥£·?¤>?¢^W?¡4?¢Åa?¥g?£ZV?¢?H?¨—?®fc?­ç®?ªct?¬S?³ƒÌ?¹rÀ?¾h?Ä0Š?ÄÃ-?¾ãÆ?ºµe?¹WÚ?°¤d?£I?œoÖ?žK?¢ä±?§WL?«í¹?±W2?¶ ?¹·C?»F,?ºÍ»?º9¦?¼§?ÁGÈ?Ä!O?ÁS°?½Pä?¾Û?ÀF±?½û]?½Ul?Á"Ÿ?È9‹?ÏY?ÕÆx?ÜsD?ãØE?ê}·?èkº?Ï]·?›hØ?M™Æ?á?–i? ¾?êà?H?—”?+)?¼=?ß ?BE?&¹–?-Îû?4¨Q?;ÔÍ?<Ó?0˜N?# H? ý7?(NM?/¹Œ?3ÉD?5í$?7Ææ?:%Ç??¨?G­·?QÕ•?X–?Z÷ß?[Ý9?]Q¯?a­Ž?i8à?pgÒ?v„â?zî]?tHë?[|P?AÛ?7í®?81ƒ?;\?>b?Bm,?GMÃ?M2&?T„p?[1è?^:‚?^y—?_æ?cìr?jÕk?sýi?{ß?€Ä?|?ƒçj?„`x?5C?|ŸÁ?{‰?}±C?€Ö;?‚Á-?ƒî£?„[÷?…ó?‹ØÅ?“ î?–³?—ðí?›ˆ?žÐV?ŸÀ?»-?šL·?™0§?š ï?™»?˜Š?˜â»?›A`?žj~?¡O¼?¢ªC?¡ {?œ·Œ?˜ç?˜.À?š2•?œgó?›™´?“F·?ƒÙ?ipm?\:?utr?~ÓÁ?¥p?‚!g?€Çà?~cÂ?À·?‡ÃZ?Šûj?‰È?„.¢?yUf?h®ˆ?^wÈ?Vut?M ?95]?)I?2Z~?Fƒº?P ê?GÒ—?=b½?=Æ?C è?Hª9?O,í?U‰?W9k?QRG?A t?1ž?+yÕ?&¥¨?wÞ? w?V?'†?/Ný?3³?1Q¢?+.?+¯é?6º?B`?Dý ?@¸G?=‡?:É?8È-?9â¸?<?­% ? -? %ß?¨¸v?ª|8?£àD?ŽÑÙ?Zæ ?)I ?µ??ˆ?%rJ?+K?2 9?;¤ ??×O?9½×?,Ú?*X³?:Ë?K?PT?E“?29É?í#?Ò? œµ?iã?¸z?É?÷¼?"·é?'s°?+…x?+T[?#ôÏ? 2D>ê™)? -~?#$?& ñ?pƒ?ÿæ?ƒ?N)?F5? â?k"? ì>ȩ̂>è¾¹>õü?Ç=?ûÆ? ‚Õ?Ùí?>Ë?$X?'¹¢?)¤?'¯ú?#3=?!+Î?#÷M?%É‚?) f?/_¶?6y?;án?Aô ?IÛÅ?Q–'?WŸ?]•±?bg?f À?m«H?uE?vD?nd?]Aé?LL•?M±Â?]k¤?cŸ¹?W‚µ?I&þ?GTº?NL?X ?ai?eSæ?jH?päU?w*œ?~[¤?‚:2?‚Ϊ?‚2ð?ƒ€0?„½ ?ƒæŒ?„¹¤?ˆ2D?‹ôÛ?½î?”0Q?™«–?Ìd?Ÿç{?¤7Ö?ª–À?¯œ¤?´QB?¸~†?¹»Ï?¶¨>?®A^?¢ÿ«? žœ?§y?©×?¢]q?žzç?¡‡M?¦§ú?«¡b?¯µ ?³´?¸^m?¼«‹?À! ?ê‘?Æ%Þ?Å”?Ä?Åóy?Æp`?ÅF‰?Çò ?̯Œ?мf?Ó~?ÌÆ?¿:?ÀPŒ?̃?Ô«?؃i?ÝÃ?â™~Í?EÖË?OAû?Wê5?\kT?^õ?__:?e4(?kÏ?k1?mŸž?w%â?xN?†3»?ŠjV?\¸?”ñÖ?šN?§?¡™î?¦…€?¬ ’?²Á™?·­6?º}?¸¹†?¯¥?¥Ž ?¬(?¹6?¿9ù?µ£B?Ÿ½6?—Áb?Ÿ'¡?¨‘y?¯òm?· -?¾á!?Æ-Z?̸?ÏÚ?Лg?ÎW©?Ë(š?Áhì?½u¨?óY?É¥¿?Ð0á?ØÏ?àF»?æ?Ø?í?õÒ}?û¾ê@Iì@©@'—@ $@B€@®<@ -6?öÞu?ä—ë?ìª÷?ô;µ?ú_u?úœ®?÷[-?ý†œ@u@ ^û@[K@ãå@œò@›N@ò¯@" i@$ƒ„@%`£@%ÞF@#ÿ¦@ʈ@W’@ÇQ@È?ü/:?ìó•?íù0?ùÞî@Šã@«?@Àš@ 9@ÞB@:{@å@ë¼@ ò²@(î*@/3@1jú@4)3@4ü@-<¨@Þ@… @ßG@F‘@‘Å@%Q©@-£÷@6ƒÁ@=¼@>ê@>‰†@AýS@G´¢@M÷V@Pö§@R´@SRc@SË@T<‡@Quf@Bï¼@-$?@&õ/@'ø4@=@ºž@ãM@B@zI@ê`@$Ò¢@)SY@-Â@1³{@7àŠ@=;Ó@BNÙ@DB¿@G„à@N“g@U@WßF@S7@Bò @7Ñ’@;=@>‚Ú@B6¸@FY}@L8x@SÉ°@X˜Ê@ZO@[™Ã@bCX@iæš@rp@yý›@{°@~Ð1@ÜÙ@ƒ}±@ú¿@næÛ@JUü@:žJ@>iJ@9F'@0n/@3sQ@<Ñ@@‡£@D*@@L(á@Qh@R¦²@Ux§@^ð¸@i—@nk]@qã@rÚN@uÒç@y›ç@|Ô’@Ó#@v®(@f¹4@fSP@l<º@r²f@yHü@~RS@‚úô@†dü@‡çœ@Št@Ž•Ü@¸ì@ŒAò@‡= @Š¨@‘]­@”IÑ@•#@—Ý&@•eˆ@‹t7@uæ@|û>@uÀ‰@f‡@Y•R@Y*ô@b­Ò@k‘@r5@vŸŽ@wV@oq@X23@Ft @Ahd@>6¦@?Fÿ@A©m@AXÀ@F@OÍ@N³@Dý.@<Ôð@@¨±@K‰Ï@TåÅ@\ À@b=@c£=@^(+@S¶Ô@HŽs@>Ê‹@A³@EzŸ@AÊ@@•+@CÇ£@F`@Eð›@EÇœ@G§i@Hå@Kó§@Pq@OÝ@KE@Eš«@>E‹@<8@;$L@8‚ü@0R›@(ÿ¥@.EÉ@9 ø@B·ž@E˜ñ@9ʇ@&í½@!ò’@'ú†@/Òü@6–K@9´.@:Š[@9W-@2Fh@!U?í6¼?Ñ?㻶?éí0?ç]ª?ìËX?öÖÑ@Þ¶@Âù@@­(@ÿß@ª@{Ã@É@ên@IP@oI@ͬ?îâæ?ÁÈa?Ū?Íõº?͆?ÕÙj?Þq -?àc¾?áË°?éÇÿ?õBü?ÿ¹]@ø†@ôK@ ˜c@ r+@ÌŒ@­@q?@é×@61@ :[?ÞR›?»]v?´I2?¯™à?±†™?¸@ ?À9õ?ÈŒ?ÒtU?Ù̽?ß)?ê -Þ?ôrô?÷x?ød0@¤@Øn@ a8@ Nª@È+@f@S{?óŽ?õñÌ@Ä @ðË@’@žª@ ¼¯@†³@ßÁ@8ˆ@ -s@£Ê@&E@- >@-Ój@.¶1@69 @<ý2@?… @=’5@7<‹@$Y@B·@E_@ £v@ ök@R‘@»¯@/ÿ@'=@F/@$)h@#—ƒ@$Å,@+2J@-/›@,ôÎ@2Zó@7gÏ@9ï@:CÛ@;FÁ@5«i@)~@)y{@2Î@57û@7æè@:B]@:Î@@a¦@J*R@N–D@P@TP@V'6@Z¡@_MB@d‡@@gÁ‰@jæI@q#I@uŸ@vC]@nÑê@XÀ@Hâ,@E?Ã@IM@M‘8@Ròß@Z¢¡@^²þ@]&@aÆ@dHþ@eù×@idÉ@qu@€ -'@…¡K@†ƒ@†FG@‡ ƒ@Œl@î@ˆ¦@… d@Œ]@cz@xy@²@’R¿@˜—s@›¤l@›cÃ@›D‡@Ù@ ™@¤44@¨s¨@¬¶Ó@­_¢@²3“@¸Gå@¾ÏÂ@½mò@·‚D@¬œî@šÖ@›.õ@¡d @¢‚&@ ô@£.q@¨*8@«ÿÏ@²!1@·á4@»`\@»08@¾hÛ@ÇÐ@Í„‡@ÓùO@Ó«@Ñ,©@Õ¯ª@Ö¦‘@ÍC@ÃqG@Îw¦@×B®@Ú}É@è,­@ó›·@í¸ý@ìï@ñ¯º@ûù(A"‘Añ„AL[ADÈAWKAx|AÞ¦A -DžA rÖAùA;„A úVAùT@ýÞAÆ@A¤ÖAðòA··A ¼AôèA žA ŒkA ÛAÇ_Aì÷AIgAè^A£¯AÒ€A£1AX\Aw‡A|OAEŠAÕiAc9A¯ýAÅ&AïÒAš¸A­´AAÙLA¦ÙA °—A³Ac¢AäbA„A¾8AÂA2º@åÛþ@|´6@36ž@DêH@9[˜@-]@4š@=pÜ@JS?@SÆÊ@X9@h.@q:x@l@mi@vÚ¾@ƒvâ@Œ[@‘ð´@Q?@ƒûV@<ß?þ°¿@ïÔ@ð@‚@¾@¯_@ °:@Ç|@”f@¡@%ç¥@4a@B§›@DW¥@@¾œ@@²@@J~@Mõë@ZÌá@c¹…@bj*@Obj@ë©?Ó‡?Úý?ðʯ?Þ°x?Ò%D?×rª?Ý-è?äâð?ír,?ø'ø@Ó@–²@Ç‚@_†@ RO@ ù§@dÎ@"F£@# f@ÃÂ@‘s@å@jX@\ @ªÿ@!ñÚ@%Ãá@3ph@7o@25}@4þÐ@=Gÿ@Kö¹@TY@T€Ï@[üÜ@h0.@sœj@pUÇ@bº@]†2@`àr@TäÎ@<þ@9v0@BŒ.@E<@Aå²@@Fð@CoC@J¬@SLÐ@WÕi@Y•@`½¹@iÒ”@iõ$@oÞ—@}q@€š¥@õÕ@ƒYV@€}F@tï@y’ @‡ó,@‹î°@Šk@´Ë@“‹á@™Ò>@žöÚ@¡Õ5@§Ù@®h©@¬ÚÔ@®Ú‡@µùD@¼•K@¼2à@½]a@Á÷Ó@ÍÂ]@ÕØ@ÒŸ@×!y@Õæ4@À°"@ÁòÐ@ÒïQ@Ør[@× @ÛÁ¿@Ý*n@ä«@ëQD@ò˜¢@öZe@ûL˜@ÿƒ¨AAèA–òAö¥A¦áA -Œ‰A@ÔAf…AµAd4AeA›wA éîAj-AG¸A°ÁA·ÁA›xAA¨èA^+AÍA½›ATAyLA ªLA%d^A$çA'ƒ A&_¾AÔîAÓ$AÙÀAóÊA¿^A~­A3#A$À5A%<·A*úÃA0~A17GA0§ÄA8ÿ=AE¶nAM`;APŸAE±8A9 IA9j[ADë ARôÓAX€AR‰AOæAR¨4A\6 -Ahp;AkIAbÉAPF\AQ dAVhzAZܲAdƒ.AmAdp…AMuªAI 0A\5tAlÕ4AzDQAz{AfoêAMËÄAHÞ‚AQÄ’AWã¢A`øAe¾AlånAwŒ²A€=ŸAk,ÐAQ/@AS9cAZéÚA]‰A\Ë~AP‘ÕAJ’©AU>6AböâAn±Aw=QAmŒkA_ŽCA[SÏA]sÎAhkÐAwD«A~1ÄAzëA{ØOA‚mqA€½ûApÿ#As_A}º‹A‚£ýA†‚AŒ+CAè3A“­ºA—ø‘AÓA›ƒŒA–ˆAŽ¡GAÂrA’QäA—¢AšµJA›—A—D‚A•t*A˜ñAž`.AŸ=FA=$A›í¾A›.ŒAžI6A£kÔA¦ú¼A¨õ9A©bA¦GA¤EA¤°{A¥•ÒA¡w¾A£ïGA¬æ%A®+²A¬Å¤A­\(A°ž†A²óJAµþA¹o\AºÛnA»£ A¹šûA·4òA¿qñAÄ®ŽAÅŸŒAÃ"™A½_·A¹p)A°uÖA¨ë!A¬?A±‹$A³+tA´^îA·A¹SýA¿ÀA¼B{A©iA‚cA5øßA“AÇAøNA"‡A,¡µA$2 -AÆ£AêÙA'|ÕA3šÒA=n‡A6™QA:°ÓAGÊAI,‹AIDöAN’ªAR’AU/hAF¦A$|Í@öÍô@¿^ä@ɱ%@èÓË@ûAf—ASXArWAÏA -¿äA íA¹‹AõaA#¨A‹AÞANÍA&B÷A6ÕA,ðKAù3@ì‘"@Ò*@Î@z@ɬÐ@¸B@¤&b@¦Ë@¸ê@½øm@ºRË@ÃYª@Æ¡N@ÑÕ<@Þûó@ß:@âZ@å“E@äÛ@ë¹j@èO\@ê¦?@ðy*@ÝýÌ@Æøì@ÀZ@ÈÙn@Γ¯@ÏÄ@Ñï@ÐŽà@Õ‡j@íð^A^öA˜*A “–A6»A4CAŽAþ$A zA&A h²A(V¦A$„yA5AìAúJAå‚@êQì@êÕÝ@ùR\A^[Al/@ø7@ý’sA‡@þ¬]AÕ¨A £æA -ÃKA tAÓ3A†YAçäAÐÆAEgA ÂûA+±A3?A —3A€(A üAëaA<*AÓAûÜAyÎAËýA(š¡A-X/A2Ü%A7ÁþA9O·A>AEûAGÃAI1ÕABnÝA4FA4\½A8YloA7ê]A*®A$»|A)·A0•LA3|ùA0[KA ®A'A6ÕUA@ÌAB0²AE(FARå AZ€kA_ÎËAf ,Aj«jAG8yA-A?0ÄAN‡’AMjyAKH•ASõÏA]ÑúAeA\AcGvA\AN]A@AL‚9Aa -.Al=ßA?úA…·æA‡CÏAsY—AX…ASæ[A^u}AentA[ŠkAV¨¿A]¶Ag9ApCÙAs$:As`NApÀ‚Aj©ApïfA}¸_A€G;AIøA…Á{AŽ­jAŠL‚A‰ßüA>èA”Š3A›5A™ßOA–6ÖA—¬RA—ìgA_"A¤à A ÊªA£Š7AªütA®»A«ÿA¨¶ A£ßñA£dA¦·A©’ A²€*A·I¿Aº0>A¼Î\A¿æÌA¾ŽA¿3A¿¬™AÀw A¾õA¹'NA¹:ÚAÁ=uAÄÖlAÂé³AÆf–Aʾ·AÐÝ1AÖXA×+2AÚ•oAßúAãÈÚAâ^Aå}OAéûAðOAòVªAü°FB"LBXB‹!Bê¦Bw±Bš -BÆzB ­$BõÇBŒýB÷\BfBf¥B4¾B«¯BëèB#`iB& mB(˜B*›…B(£B+¹B-R/B3ÌB*ŠðB)1˜B/øB0ÂuB2[B-|ÆB*Ú/B2²áB6òqB9°®B=@àB=¬B>uB@gB>þ¢BDY˜BCÝRB8˜B;.RBC5fBKZxBU|BQrwBD7tBA/BLNB?´iB+ÈFBÖ^AÆPyAÍqËAâeIAØÁAʳ{AÊ—oAÐÁAÒž°AÓF§AÝßAåV AóŸÎAúGAúVoA÷ ôB¢B ÁƒB ÐB3ëBHcBéBgìBr*B -®BiƒAëé€AëE|AúÚB‘šB¬®BmB cjB -tB ù¡BU(B(¼AûîAãX‚Aå$AìRAê{JAß‘9A߉†AáÚYAÕiyAÊ2›AÐñ+AÛ•AÝ7²AÚDÈAÖ¿nAÅwèAÆjéAÊ_8AÏßÏA×TƒAÖ¾AØÙ³AÞsˆAåóíAçÁêAè·XAëAé/Aá:úAë-êAñ VA釦AÏEŽAÍ<ŸAÚµ -Aã˜ÛAâM -AÒpÕAË›†AГsAØwAÕ¥ÎAÑ#úAÙ–%AÝÁXAàå4AÞø1AÓ¾`AØ3þAèŠrAìîA啱AÒiAÏÜoAÏ®©AÕÌõA×.òAÉ;AÑ#ËA½ß»A¹dºAÈŒ|AÒȃAÓŒœAÉwèAÊbAÔ+†A×j®AÚÏÅAÜW7AÝæAÝAÕ–AÜœAæ0qAܾüAÇÉ*AÄâAÌŒ”AÉådAÈšÑAÐÌAʯ,A¡eÕAËcA•÷øA§|ãA†OA‹A‹>AˆþFA‰ÄœAPAé/A-¢AJA—¾ßA”ê×AÆnA–³A™ºàA‡AŸ¸%A¡žYA¤¤Ažø†A™Û@Aõ”A¥/tAªë3A«|A¢õVAŸìAŸA¢zA¨jCA¦ŠA ÍpA¤¸ÂA©Æ"A®C^A­%5A¦á¦A©A®Š|A¯3DA®ªÊA²äA³‚–A´ßÛA¼1;A¿ºÅAÀk»AÅ`¶AÉÌrAÌHAÍßšAÏS -AΑWA´òAÄàáAÌ5$AÒÔŽAÚÕAØnæAÒõ¥AÒ’÷AÑÌAÓ­AЙ}AÊAËAѽ§AØèØAÞJ@AÝ®AÞmAåç)AÚ5AܨjAÜaAÜ÷;AÛ…”AÚõåAØuÅAàg"AãxAähQAâ±±A褤Aà‹‹AÝ»!Aéf]Aï4mA÷Ä·AýÙ­Aÿ`þAýLªAþmHBZB\ BDBaåBöIB†ôBLæBB -±žB &œB MàB PB Ñ,BÜ Bú½BŒ'B fòB ;,BBSB§ÂB¿ÐB­ÝB0úBÛ5BèBÅBœûB@’B9]BÎeB‡úBæ BXnB5B©7BjBã½B#žsB%ÿ.B&ÂHB&,eB&iºB&õØB&ÀB)ÂàB,—B)ÛáB(sKB" B¤&Bú½B, {B0\SB1Ú¿B1º™B/ܬB,WµB%QB;ÏB.(B4oùB6xÁB6>:B5µTB4B0/ŽB8%ùB;¾†B=iB>T=B?©gBCÆ7BC§ìBC”ÁB?^fBóeA³O„A¼p™AÚp§AÝ µA±°úA›>qAžŸöA£ÙäA©gZA°G'A¯ƒõA´æŒA·óšA­„aA¶=$AƲÓA¿ØÀA³ë‘Aµ¨ÂAÉ&AÜR%Aç1Aß‹ÁAÛ’AÔ’AÑP0AØzMAãNaAã Aáæ;AòݱAö×ÃAóÏ|Aþ¨ŒBðA÷7#AðuóA¾Ê—A¨ÕgA·½×AËh€AÌ!«A± dA±0¨Aò3AÇ -ZAÄBAÃÕ¿AÆÄAʺ{AÍÔïAÓdáAãÔAêõ]Aç›YAáwÅAب‡Aß#AîœìBlµAÿ#ôAþ¸ÈB¼àBýúBABŽhBRÃBŽ‚BDkB ¤hBËBž=Bˆ B}UB³òAý>6AïŸB2B9­B8°B@Y)BC ¨BI9B?+ŒB9>œB>LaBBŠ­BE±BD²MBAƒþB?Ù‹BJGBL;»BL—BQ»pBQ»FBS þBT‚ñBY -6BU/BXO±B\ŸÄBW!¶BWMB^"aBdâBjéÚBiFµBkÛÐBeg#B_àBbrÒBjƒ8BhÐÀBo]ÃBk}bBbq’BhfàBr=„Bv°BxLóBvÏ°BzB"B|zB"ŽB~lB}ÎHBxdòBq¼{Bl­ˆB^P!B?±`B"$’B)ϤB8ã=B;¦B#¤B$·B-‰B%ÀÎB#¿¯B$9ùBìÅBŠcB ¬B§‘BkÏBŒB"ùBb~BˆB%ÂBB%LB×ÆBëBÏsB$–`B'zvB+'ÐB)IB(¾B«B ÍîB B$ˆRB-IËB/š§B1B.Ç2B22B7RB7ÇGB9uB=«fB>NÆBB,´BBÏgBEABJ¢‡BIaB?x'BÀÓB4î÷B7ºB?-„BCTÐBG‹ÈBK¦ßBL”VBJÍ]BKÔjBJ¶BKÇBOtéBLÞçBNn±BQoBTÀBV™BLBJ8iBYOB\dÁB]P²BU¶ -BY&ÓBaqBb,PB]ÔHBY4jBZ¡ûBUãBTöB^:0Bf¸B\<$BX™àB]6=Bau,BejQBhÄ÷Bkt©Bi×6B^(ZB[GBBf:ùBa;BbØïBhÉÇBDôBSÛ#B[¬PBKvB@?SBDÞqBDÈÏBDØ»BEG|BGœ¬BQÖÓBN2¦BT¹\B^RB\GBZ˜uB]²‰Bf°Bii¡Bg¡mBis×Bká·Bh”œBmÔèBm1$Bk·YBk™ªBs&3BtæBu¦.Bwb4B~ñPB€ìÃB|ÒšByéBm“(BGtÅBF™BRBU·BTé„BGöhB<ýBD7.BA† B?Õ¯BEÞ¿BNÜMBKÅBE±2BOÞ¸BZ B`9 BYjB^³%BqfVBlùBi$@BbŽ¯BmN©Bo sB{›ÆBv®WBu©ÏBwVBk¹ºBnŽ B€ý]B|¬iBtp¡BsBwr`B~O¶B€!æBkP°BW“BbÉ^Bp5Bs{B~ª£Biñ¤B`·ÉBhDQBn1BmÑBkëóBmû™Bm™Bl¹ZBy“bB€ÕBvÃbB€ÛnBƒ+ùB€¾6BxË&BYsvBNy9BV~šBeJ!Bg¡Bj BeŸ¦B[¼ÙBT©ÇBWf³BY eBUé…BTE¨Bb’`BeâÓBtcBoÄqBZ‚B`k/Bk™1Bv yBrBqgBjx1Bo€JBmBn™êBrúBzûÄB?B(«B{ >B|äB}lÓBuQ¹Bw©€Bz³¢BB†YB~[¾B‚5RB„@¼B‡‡+B B€âÁB}CÓBM[B€Å$Bc”¹B_FˆBi:iBw¶ŒBnuB^ÜBfçBoj#Bjé˜BiêdBjþ÷BdöBjËÊB}~;B{ÊDBsé†BuQÂBw»BtRBu™BpXëBq3Bvº]Bw jBpUBx|B~“B|ó#B€ °B€sAB„qÖB„„ëB}h;BrÛB†“oB‡³>BƒÝÇB†‡jB‚`B‚˜ÇBˆMB‰RÂB‹iBŠÜ‘B‡J„B‹^9B¨BzÞBHVBvê’ByÚíBjÁ)BtìB|%³BmGBqØÑBwqÈB{S`B½Bt±ŒBuçBƒRÒB€2B‚$­B†|ÀB“ŠBžBzÜ–B‚?™BŠ«B‡—)B§Ø¤B©,¤B¥ÖÁB ½B bÄB¨_BŸïžB "B¢ÇFB£ÚB£ûrB£wB¡ƒZB¢¨ÙBŸÉ¦B8ÄB 6tBœŸæBšÂBžG…B£¼éB£ŸB¤¸„B nSB¦5B¨ ¹B¦^B¡ÉÓB¡÷ëBŸ«­B +B¢k-B¢ÝøBŸ»ÏB¡ÓTB¢dÇBŸàºB¦‹ãB©ò¥B¨1§B©[ÖBª+…B§5uB¦ëB¦d•Bž>·B ùiB£=xB¦GžB¤éBžïBžAÛBŸ&òBœc}Bc{Bž~sBŸBB£œ…B¢õíB¢fOB¢·‚BŸÊJB¡´B¦ *B¤– B¤_¸B¤aBª&…B©UÔB§ÇBª»Bª£ïB¦ýB¤ÓBB¨G{Bªß¹BªCèB¥¡+B§³¯BªwbB©[ÌB¨ÖúB­ÁéB«—ÂB¦›B¨h±B¬cÅB¬’óB©ˆ&BªçÇB«¸B©^ÏB©…&B«B¨µè5;#×;T:ç;¤ó\;ós,<†þ<2¿U<:Ì<;éW<9jz<(Þ¯<ín;¶1;\’Ù;/:Òˆ!:þÐ;<};†Š;«Ë•;ÎbÇ;ôLÍ< G²< Qw;ðZ¢;¬¨a;t)™;v¯;ÂÎé<)A<ƒ ‘<­È<Ãl<Äk¯<½E~<¾Dñ<Ì6l<ß<í Ä<ð“c<ñÃ<ö"Õ<û,<õ=›<åÕ<Ý"å<èæ¨<ü>…<ü?F<â˜á<ÇMž<Â<ÏÞÏ<Üv€<Øxi<À¤¼<žt]<…Fj<‚=<Œ·Û<‘aì<†YÐ=(=<ôVÌ<áÝé<å Ž=¤=Af=,Z=÷é=9r=kÑ=¨œ=-¡=Œ=zÞ=üs=Æ»= mõ<îãU<ÎBn<ÊÚ<äÚŠ=—b= ]$= •j= -‘b=Ì=$gL=1e–=-³W=áQ= EÕ={ =œÐ=?Ý=2ƒ=HWF=U_=Xa=Rrò=C9=.Ï_=1@=ïê=0IV=Lú=XÁ=I{?=)Èx=ñœ=„6=!‚=:6±=UªÆ=p§=û= -=v¨Â=mÒ|=pµw=~ëö=Š=U=–×=¢Ø=ªŸï=¯mÝ=±-™=®‚{=¢‰¹=‹‡ï=b³¬=@ºÚ==›=RvŠ=p:B=†Ih=8{=‘0=†ß&=m­=Q=CÝ=>o›=< ‰=AWa=Và‰=uº}=‡XÒ=5G=Œ†=ˆ7#=‡i=ŽÝÑ=œK–=¥†û=¥™œ=¡˜=ŸÃÔ=žÒy=™É"=’Ä=‘ V=ž·v=·i=ͺè=×G=Ô$¡=ÏyÇ=ÔG=ßfú=ä·ƒ=Ýu‰=Ðz=Ëø|=Ô °=Ü =× ¹=É¡Ö=ÀG”=½³O=¼\,=½7˜=ÅÉB=Р1=ÎÚp=¼—=¨¼~=¢û€=ª1º=³w=¸IÂ=¼"ö=¿û¥=ÁúX=ÁO„=¾Õ=´åí=¢£N=Ž…×=†&=¸Ž=¤›=´€û=¹wu=µ×|=®Æ!=¥ø,=œ”=™H’=¡ë=±w=¼–\=Äc%=Î|=ÙCÒ=Ú¹ý=Ñ è=ÈB¬=Êéå=Ô‰=ק¦=ÓUÃ=Î\I=ÍT7=ÌwS=È%q=Å>¬=ÊŽŸ=Õ€%=ÛÛO=Õú=ÃíQ=­Å»= ‹ =¤ =²ð´=¢ï=ÎK=Ô Ö=Ó5V=ËM†=½¾„=®çv=§-ö=¬=¸Æ%=Á6=½«=®-¦=ŸÐ=žy­=ªTf=µÁ8=´ON=£5õ=ˆÕ¯=]Mø=:=­=:ßV=mêl=£¥t=ÌÁ¥=ÛF²=ËiR=®V=–³S=ˆÄ=pŸ¼=E˜‘=žó=Ÿ=—Ø=Bì‡={àQ=Ÿ)Ä=¾°”=Ô =Øò¾=Ê?¤=°Ô=—WP=«L=dXæ=aMˆ=¤=œ\^=±dÁ=·ón=²ô~=®QÈ=´îŽ=IJ=Ò`G=×[‹=Ðz¤=¹W=•ù =k¨ý=N¨Î=`—y=Œ>ì=«À×=¿µÝ=È$8=Ðë}=ávÁ=öç¤>Ýü> :5>i8> -9>Ñ”=ÿbš=ðJF=ßt}=×dq=ÚÄ%=ã&=èŠ=ãÔ=ÕÚJ=È4Ù=¸Ó!=Ÿ°=t¨=+X<üÔ°=Oý=.¥°=yΟ=ªöé=Þy>Îc>$†> x÷>Ì~>O@>Ž=ît=îºç=ý~>æÍ=÷03=ëJ=è¢ -=îZà=ð ‰=ÞÚª=¹Ðd=:†=jÙ{=h^=†þ=™“w= _=™=]=‰"Ö=d¿U=,Þ<ô5Ð<ÂZT<Éê“<é­5=Â@= ¶Ý=þ¤=*Ê=O¯é=…ýa=¨o²=ÈD=åLi=ù˜ó=÷É=àÇÏ=Õ„=ï&>—¾>!ŸW>$Ï>=ÑÕ=°Ä=¯&ê=·Ê=µ‚D=®cž=³ÿ=ÄÐ2=ÊZ¸=¹ßí=©Lé=¶==â`N> yÇ>\±>%gq> ?> æ=êÊÓ=·Ú=0Å=k˜Š=\ =S2=µü•>æ>&!¾>A®4>RÔJ>Z~>S@>;µ > <8>||>#=ø>> B>TBU>Yu­>IÏÜ>)Þ.>Z =ÓØ =ºùö=¹4N=È•0=édt>ø>²’>fß> «æ>Ê—>*‰Ç>CSŽ>QT ->WmX>d†:>~ôT>kÆ>’-¾>Š…À>yšD>bTá>Tî™>KVW>=Žó>->"Ès>cÂ>> CÔ=ûe¹=öñh>‚¯>'3>0Y4>6˜³>0¶ß>$Û>r>,Q> -äx>@#=ò½=àÍ=ÞÛ=ï"*>nÉ>Œt>&Ƙ>3•>AYc>MSD>RÍ >S75>Uì>[HÞ>d5x>mnª>u5¡>z.r>|é@>~ ‰>~K¢>zzt>tÑ[>pãš>q{¥>všƒ>{ªÆ>z°K>r’¯>h<Œ>b>0>bÝ>eîu>fa<>c¤>>`Qc>_\>cLÂ>mRÊ>zÆÀ>‚¬>Ù>yÍw>röè>uP >}Åh>ƒd|>†Ú>†…Ë>|Ö>]ü/>Aù˜>81U>?5>E¥ >>}•>-ZX> Nß>o>(PŽ>4Jª>;ì—>9²R>-Ñ«>°6>Ä2=ßõ =Âßý=¾”=Г¯=ïÍ`> G¨>Û>+˜ >*ºG>!„s>¡µ>Ýž>(y>3Y(>;Iž><—5>2óm>#V=üÎf=ÐÂè=Ímt=óº’>Ÿ‚>1 >H$î>cIJ>€¼³>Š$Ž>‡· >ugª>Qø!>,Ùè>º$=ÛVþ=ÏVÖ=îEÖ> ÄÇ>¡w>ˆ¥>' -q>:G>T>pæ£>‡½!>˜.>¤±)>¨ß1>¢au>K>q >PÄ>Zk>„ê°>¢$@>µ<Ï>·[Ô>¯”0>¬ì>´ò…>Á/>ÆO(>ÁEJ>³³µ>þ§>…>oiI>sø3>¼c>‚9Å>zh¿>}>‹9 > >¬¯d>µü†>µÖ†>«>™¦é>‰@è>~@É>u.ˆ>rƒ>nÍ>>doi>UV¶>P­Ì>a`Ä>Fd>’A:>›iÏ>šD>–B×>šs¼>§ì9>´Ÿñ>¹¦º>»vþ>Á:>ÉÆö>Îlr>Ìåë>Èg¡>ÃOý>¿s>ÁâK>ËzÇ>Ô(¥>Õ¯­>Ï»B>Âö >´Œ>­>´5þ>Åk’>Õ‚>ÚJs>Öô>Ѐí>Ç+È>¹Ö>©}0>—1>ˆõ/>‰Äg>—™> Õî>ž£¡>›“ø>œA—>˜²¾>Œs>}Lä>unQ>…s‰>› ‘>³ßâ>Ä]f>Â`[>²ÇÝ>¦D>¨•>¹“¨>Ð+¡>àÀÀ>åç;>á€n>×Û>ˉÿ>“€>¸dÛ>¤˜Z>‡Ïá>`¿Ñ>VÉê>iSI>{tÏ>‚íj>á>¯’Ü>ÛÑ!>þ‡.?÷á>ö#•>àˆ®>ÌÍs>¶Lk>™¡%>q߸>2öZ>”Á=ë1à>Va> ¶Î>Q‹ý>‡Zd>£Åø>³öO>²8>¥·z>žÔœ>Ÿ˜õ>œŸM>’5>ƒw4>cŒÜ>? >#Ž->þñ> nÕ>³E>+§¦>_»n>Žéó>¦Ì5>±t¶>®û> L“>‰@>a`È>?f]>4­<>4ôÓ>/Ó‡>2nf>Zö>’ú >·Þ¡>Í®>ÝØ“>öÍX?&/?P>ñ‘ª>ÊTx>´h¬>À•…>äì0?4'? -úÜ?#¨>éOn>Úˆ>Ýcî>ÝÚs>Û¥Ê>õc\? Bt?T?xÅÂ?vZ?WÌ?:~à?+ïe?"Êv?&3??cQ?.?#’?.Vå?5Q„?8g?9ß?: §?:"[?3eÀ?"Ä—? ù‘>ýlU>ñ >ò­ö>ÿuY? -©?í€?ù?êr?Ãw? -À”?„?ëK? á>áÔ3>í½?ƒ³?)Bˆ?5*Î?7E(?6zÐ?1-?!Ýú?n¹?`p?ÐŒ?k?:`?÷`>ôˆ@>â]u>×!†>Ì9>ÁI7>¹ÀR>®ÔŽ>™³>Uº>Z_Ð>W§>i¬T>nÍ>UaR>;‚>C;ü>t|%>wY>Áùû>ägV>þ5p?Ȇ>ø›k>á@¤>ÔH0>çáO? c¡?ç;?#[÷?Š%?ÔŒ>ߘö>»ú>¹†X>؆ë>þsœ? <þ?Xu?ú? ?‘?(;>ß‘Ã>ÏC>ÙÛ7>óå?ù±?áF>Þæÿ>¬ µ>†Tç>l4}>SL.>2õç>+ØW>[ >˜¯p>ÁBG>×8>Þ'÷>éV`?ûú?ŽE? ©]?)ä?+þU?%=™?U?w­>ït³>ë¶É>è+5>ÜHK>ÈëA>·ï…>ÁHŽ>ëg?? 6¹?ø&?«¦? Nî>ýÖ¬>Î(†>ŸD,>ˆ“>Ø ƒ?_ã?(¼Õ?)_Œ?'ƒž?(+0?"É?O>ÿƒ™>ìI>ñ2>ôãÔ>åH>Ó¢->ÚÈN>÷!§?ì?³u?)ñ?9š ?5+c? ^?M?‚È?$”?(³/?&Á?"¨?!®J?#þ–?$¯? šô?ä?ç? Ûù>øîá>ÒŠ>¶2j>¦†m>Ÿ >¢#‰>­°>´dÂ>®Â>šÞ>‚,>\(D>>I>(¶h>Æû>Œ=ë(t>d>#i­>Qjg>~ý>’XB>œîx>›/ó>Œ®>j Î>5Ù¦> z>1J>HS¬>‹d>¬ÌÆ>Å­å>áÁÕ?ª? ìQ?a?¼?ÓÎ?XŠ? -]‰>ê^=>¾†B>œ.V>^>Dt>R=ì*:>hh>-œ“>P_ >\âå>N–~>.Ž/>nT>•’>8Ä>iE>‰z>˜ýß>§¼Ú>¹:Ø>Ë=>ÚË|>çÆG>òvŒ>ü».?>à?fÇ?)f?)ã?c°?,E?6±?8 Œ?2 „?'>ˆ?V?ÍH?&C*?6†à?C9=?GÌ…?G;?FŒ.?C‰?:î?5·Q?A‚À?[(½?r?| ?t]I?`?JjÝ?>G?;J`?7‹;?3ÙÕ?7cf??ÈÈ?F8€?L¤Ð?Vmi?aœ?l[?sé‚?röD?iÍ(?^¢‰?T§è?NŒ?O{3?QKl?LÀK?Kb,?Y§K?qŽm?ƒç%?‰ä³?‚È ?Zf?-’?>r? „? )Ä?%|?VLË?‡‹ˆ?Çç?¨ÉJ?¨ƒ? ”¤?–ì²?š‰? Õ?UÞ:?*  -?!2? -'?w?/¡h?JO¬?_Ë ?ký0?nÓe?jXX?dl?fYè?or -?s ?n&§?k¸W?su$?€rq?‚€?tKª?Z`a?PÃj?[Æ­?i¥i?s}j?€”?ˆ§«?‰ÐÃ?Ìm?wün?Ð=?ŒDT?Ž/—?‚¹?`AE?F"í?J¬–?k+K?‡t,?í?ƒUÐ?iˆ‹?X×B?U×Ý?Um¨?RoÒ?R?ZCI?cáW?b!/?TXŠ?G÷e?I#S?Q -?Rή?QÜ«?WY?díú?‡³š?Â~‚@ -óN@ >@ÄÂ?¾r ?”™?‹5-?ŒšL?ˆ£ì?}ÂÝ?oUS?kš?iˆú?dŽ?\ÿi?RJí?K-?OOR?Zuí?a™i?b“?`®K?^4¼?ZÂh?V6?Rc?QÊë?O_­?B¦r?/ÌÊ? ¦§?P}?¤8?©é?m? áF?¸?PI? -Q?Ü&?Ê?"¾ì?$Y·?$ô?"C«?;V?žá?*&?=­€?Kª9?P%®?M ?Fþæõß>áU!>ì<2?¤~? ©p?[?Ñp?ñ‡? ÄÜ??JÏ?4??éQ?P‡?"÷L?$΂?&Á?2ek?F +?Oýä?Lcx?D¦?;¦z?09%?'¼a?&ú…?,$?3&Ÿ?7K?5‘™?.Â÷?)aD?'ª?&ø? ”R?0ó?öF>ó>×ß>·ûµ>›>„eÒ>jW>[×>Rû:>CÇç>-þ%>ìY=óNÒ=¼uf=‹«é=KÃ=t<ÿ²>=ç•=3ºÀ=~=°Aä=ç5n>qÁ>/óþ>Uõ=>‚Tx>œ.a>¶ŒÑ>ÎÖù>Þì|>ãn>ãà”>í”,?”??æo? æ$?-õ$?7õ$?=7‹?8ÌÚ?(r6?êû?hk>ÕÞã>¨>›ýœ>³†>ÏD>ÛÏ>Þ ‡>à)>èD>ø·?õÇ? -‰À? js? ߉?ÝÊ?zÐ?B>þ(>á—Ö>»û=>™Ø>zäÉ>Zï}>dØ6>ˆqÈ> ÈS>²õ¡>¼Ä:>À™:>Â?Ü>Ã7>É´t>ؾ>êái>ú0P>ý Z>èp6>ÄZ¡>¶ÜŒ>ÏxÑ>ù_‰? ñ?M˜?&—?YT>ýª>ñ/§>ç#Ê>â*ð>á¬/>äýá>ñ¸?/??¹ >>Ò^ò>À +>¼âª>¾Ôv>ºþ>¬ÉB>˜Ù–>ˆŠÙ><0>€Ý¥>‚n“>„a$>‰:>“#g> S×>®2N>º«W>Àá>ÌÎ>ä0?ŒÍ?s?¥x>ïVh>ÚM>Øä”>æõ²>ùûc?©±?ߊ?°h>þø?ÉŒ?ÓÒ?ú?:¿? ?¸Å?=Ã?¥õ?kÎ?Ñ?Ï?Ì—>ç=ó>Â#þ> ”D>‹“å>…Šâ>‹KD>™Â>¨ž˜>¯|n>¯ÊË>®É±>®ÝO>±ä™>ºW >Æm>ΰy>Îòà>ÎD8>ÓY>Ø1>Ù̾>Üg>ãÂ>ëôJ>ô΃?<?)?4}?U?4k?•Ã?˜’>øÂ÷>ìU”>ù«Ñ? -G?ÞÉ? Š?…º? ë?;”?%¡? Š>茦>ÄSP>´é‘>´{A>¶±>·Ýë>¼w>Æy1>ÐâS>ÑÃÁ>Ì8>̇x>Ô#ƒ>Ú >ãlT>øF?‡ã? ÀI? õþ?Ž? ©Œ?ˆo?aê? ¾¥>ø½Ž>×$>±„]>‡uV>Hw(>$>†Ù>Žñ>%R]>/»?>:'¦>C«>O¿Ë>cAº>wÞ²>€¨Å>{éê>ss>lÅa>iB>lk®>t7>{µ>€´>ƒj‚>…©G>‹’>˜½>¥DÄ>«„>«ko>ªK>¬Qq>°mT>²ü:>° _>®Bv>³±Õ>½œñ>½‘¯>¬ˆþ>“´É>s>ñ>CÄ•>%Á>1’>v>¯8>K[>!dù>#h–>&N½>-jœ>6”G>>O>G9Å>R3>^=Ž>i݉>sþ>z)Ü>zw>>wÈ>xa~>}ùÜ>ƒ# ->ˆ ™>ŒlŽ>Ž:Ð>¸8>–èÃ>¡Í*>§ë>¢û:>½>›cç>›¨©>›Œ@>˜¶,>’®º>Œ›Ñ>†"2>|W>k>[ú6>NeÙ>FFM>GmÐ>Uû«>qÄ—>ƒ¯Ð>€ú>q.8>kBA>kÝ>kÉp>ný‚>x„:>„‘>Œ«Ð>‘&À>‘UŠ>’@Ò>”þ·>—&g>˜ã>˜¹}>šo >žv>¦9!>±Iç>½3 >“Š>½†I>´7€>® >­¼Ÿ>±DÙ>²Çe>®­…>ªãÑ>®sÅ>³þ2>²Ï¨>©BU>š¼ ->ŽÜ˜>ŠÇÐ>‹ò#>ŽpÞ>¢e>“p4>˜/>œÑ>ž:r>¢R>¨âC>¯5å>²Ãò>´š >·á&>¾´>Åj>Ì$€>ÑÖu>Õ©>Ô«‹>ÔW.>Û'>åÇ>èŒÉ>ä6>ãZ·>ëI½>ôX>ð¿”>Ü>ñ>»¢½>”…>T3^> -jŽ=¹˜ =”5\=ŠsO=ŽÀK=àù=´Š%=Ê =Ó«á=ÔUQ=Ûl®=ì]õ=ýÖë>ºR> %>¼¹>Ïþ>#nv>(â7>*Ø÷>)øh>*yö>:ö÷>]ž>E>ˆ°Ò>Œ˜Ç>‘–l>™§ > «Ë>¡É>±!>˜O>”ç@>“ê>“(>Ž•è>³>[1­>.}>Ùa=í>×=æ¥é=êØu=óãv>z¯>9«> ]3> Ù›>‡£>=J>Z> ¸Ž>"ðë>'†T>.70>3ä>8c„>=.Ý>@£m>A_X>Dʸ>N}¡>X’ >_TÀ>c‚¬>f»`>ly>t0³>{Ý7>~à>}”.>}Ú >ƒx>‹Â->‘êF>’8>Œ´j>‚>hËO>S%]>G ß>AZ”>A'*>E¸C>K(>O |>Qýä>T,o>Tw">TA>U—>[#>dzæ>mË0>sÍÊ>yh‹>CA>†µt>Šš*>O >‘%¹>•Oi>—œ„>˜2ô>˜ò{>›Å¸>¡@v>§â4>®Q >³›™>¶­N>· ¯>³´Ý>«Ÿ>¢'w>¡×->¨÷¬>¯ó>®Ãý>¨Hy> ]ø>š£4>—ä¤>˜PT>›³¨>¡×>¦Ô>¨þ÷>©¾â>ªÙ>¯˜d>·e>½£O>Áð>Ä~7>Èïe>ÍSÌ>Ð]>Ð×>ÎG>Âm„>©b?>“4>•¯ê>©ìÆ>»‘>ÄÙ”>Ëæ>ÒB]>ج>Þz>æÏ%>ó´?5ù?ª¼?Ò?Þ®?‰ì?S?ƒT>ï™>ªæK>X6Û=ûÛ\=™d‰=j=YQd=X¼§=`uZ=mz=|y=‡â=”/u=¦_ =ɯË>•#>2‹>V+>Q9 >*AV> –=ÿ$>N>š¾> à>x¥>'  >8Ðw>?æ>@$+>LRq>^±÷>iå>lß>l$>qÉ>… ->—üŒ>¬Pè>ºf>¯œO>‹¬ì>Ht>º=é«=Õv=Ôù{=á÷=ðx>¤Ù> -ëT>üÅ>"o>*-Ê>-ôä>/¯Þ>0›1>31Ô>:Øc>Cš'>IXr>NZ>T®t>YJJ>Yæá>[È>c5¬>mh:>u(Ü>~¯!>…«g>ê0>¡’ú>± –>¯S ->Ÿ¦h>‹Áa>xa">p…Í>xKÙ>~‚‡>y²G>lm®>c\ª>bĬ>dÒX>l« >{…\>ƒK>ÐL>tŒ]>d4>b…“>m³S>wXë>z(Ã>{Ô > ->„©ú>…ôX>‡Ka>‹R“>’~œ>šÖË> ü>¥n>©ëË>®?z>¯™>¯E#>°—í>³Õ­>¸Xî>¼’u>Áz >Çã_>ÍvÎ>Ò¾,>Øà9>ÞÞÚ>â=¶>Þ,ð>Ôi©>Îüó>ÑÛî>ÙT6>âph>ì!Ž>øð4?"?ûy>ûݺ>÷ZÒ>üØb?^ó? y? -Ç|? ¦?CC?ßä?¹M?#ô?#uw?#<?%@?*ì?0úü?7?=ìQ?Dn?JÕ8?TéZ?`׊?f¾¦?hÈX?m‹Ü?sLL?q-Ñ?q´ÿ?Ô?Š»n?F©?ùØ?’‹¾?•W?•Iv?™®?¢M?ªB?®j?³‡S?»4?½9}?µ‚¯?ž{>?]w»>Øb>¤R=ˆì=jp¬=uP=›°=„Q=‡H=@*=œ9í=ªÊM=ã&=èê >å> -Ä>…Ý=ú>iÉ>ºJ>‰à>+>¸’> g3> Çu>>+>.°Ê>?³â>FÈù>Jó¬>Vë´>m_F>ƒP™>ŠO=>‡â->‚\>V?>‡Fé>‹§/>~aŒ>IТ>(¶Í>!a–>‹‘>ª>"‰°>)×V>5NM>A\N>JT´>M¥Á>Nzl>R_Y>V¯¹>Zu¦>^6Œ>`Þþ>fÙ.>ry>~$À>‚ãq>…|¹>‰—½>Žÿ×>–×>6w> ù> ir>£@>« ª>·o">Â`>ɺÁ>ÑT,>Ý6ù>ï/s?ä)?"6?¬>þùÿa>ù¬:>õ|W>ðõ#>ëÔ>é¢>ïó(>ùÝ?hÔ>ýz>ë0e>Ý=k>ÞÇ8>çÕ>ôWs?&…?†B?¥I?Êr? Wi?EM?;?!t·?#cz?'¥`?.lüå?;Jë?:8?<2F?Co?N V?V˜ê?QÙy?F€Z?E¶¾?O4i?R"$?Cæ?,6? cD?$‘½?-ËÐ?3ÈŒ?4;]?1.k?5ÞZ?D²å?R;ï?Zq?aZÖ?mp½?}EŒ?…o&?ˆe>?…\E?y v?lºÀ?sêN?Œš?„±Ê?=t?žI?¥C?¤(¢?n?–sí?“ò¶?’?Ëâ?’lK?”½ž?•ƒÁ?’Œš?‘[5?˜@ƒ?¢Ÿ?¨Æ?­¾Ê?®W¶?©4¯?¦€?¬Š?´×ø?»:(?Àž®?ÇÂB?Îó?Ï#Æ?Ð9`?ÙTÜ?ÝÓT?»m?Ze>ª÷ö>³Å=È«æ=Ñà=â+p=òý‘>ƒ´> -†>eI>$`> $>*ÿ/>7oW>FT>TóÑ>_’>h#H>u¸¯>û§>ˆrO>Û‡>šy—>¥u²>´³$>Ä‚/>Ê ±>Âp>¸‡d>²jë>®¾>©HY>¥šâ>®>ò>¾ÿK>Î]|>ÝF>í©¿>ü5??L±?j?a@? ò>? [À?/ë?"Ø?^#?Ƹ?Tk?y?ßÏ?Å€>蟫>áQÄ>çz”>òÐ>þL‘?§É? -ã?ƒ ?>l? a?p?e”?Õ?*p?™Ö? w,?¾2?ºP?!?&?(q?/µi?Aw¾?Nn?G¨Ñ?5þü?,a?(‘×?"Õ¸?!˜?'¦ó?-[?,‡Ú?-@î?89Á?Ga!?L[½??i¬?(ä?Ü?!œ.?%f?&›‡?*u(?1¬Ã?9ƒÜ?@®;?Gýà?MÃZ?Q -&?Vµ´?`VD?h›?mžÍ?n?›%–? -Ò?¥ç?«CV?±0ã?¸Ã÷?¿¨‘?¸B?Á“Þ?ÂO!?ÊNá?Ó$P?ÔF¢?Íå?Ä­Ä?¿«?ºËØ?¾&?ÊDã?ÖŽü?ßTv?ç¶b?ò?üg·@t¼@”z@¦œ?Ûã?“îß??~M?ƒº?…^?ƒ®µ?Ð6?‚‡ƒ?…¿Ö?‰)œ?‹<è?½ê?f??’pf?˜?¡?¡Aw?¦æo?©h ?«œX?­õ7?°*f?°œ®?®´ë?­áS?¯b_?±j?²´?´ùæ?º#Q?¿5 ?ÂlŸ?ÃùÕ?Á«W?¹=l?°Lù?®>Ë?°MQ?¯ -?¦¿9?“Z”?lÞ%?@,&?.Tw?/gƒ?9õH?GqÑ?U‰?`‡?eT?d¿Ï?]­0?WžÖ?_0ñ?nÊ^?uˆ—?lº»?[Ï7?E^§?-ËÇ?©¼?$G?•?…ü?°¯?Œx?.U+?6)U?3XÙ?0ó¿?3•O?7ÓÜ?>±+?EÑ?Gvg?D=?8‹?#.²?S? ^×?¼µ>ô>ï‡/>ø§3?ùp? -èg?Œ?‘ˆ?èˆ?¼n?#'!?.‰°?3WÊ?2Ñg?1®˜?.Æ»?,ÑÀ?,Þ¥?-»â?3 ?æ?Ôq?Ü‹Š?ä@À?ê/?íI€?éîL?Ü™)?Í£)?ɱ?ÉþU?ÄÛ?ÀAÈ?Âœ$?Èån?ÎŒB?ÑŒ?Õ.›?Ú£\?áœJ?ê[í?ó{‘?û!ƒ?þ\;?ö²¾?Ò¾¸?—K"?h=Ï?f­I?uÊn?}ËT?€ä·?„q'?‰•ò?Ž‚?’³“?—‚>?r1?¢ö›?§õ?®•?³°?°:I?©"H?§1?§®?¦ÒÍ?§=M?«Õ-?²W¬?¹æ]?À7Ç? ?¿y?º²ƒ?¶g¢?¸†?½ûR?ÆÝ?ÐZ)?ÚM×?ä?èK²?ç³N?êk?ïª,?õ×é?þ€Í@ Ý@¤ý@ ŒJ@a¹@ÜZ@šf@ÆA@u@P;@Ÿ\@# q@"ª(@l‘@ -x›?ù•$??ëL[?êk?îŒ?ïDG?îÇ4?ñ·?÷ÖÖ?ÿZß@':@ -b?þÛC@¬@ -ß`@$Š@.æ@Šà@Ø@?ö{¾?Ńä?§Ü?«T±?·ü?¶g ?§d ?…‘Y?7j,?º¡>æÁ>é -'>ü ¼?ÿ@? $ö?[?Cq?¨£?y ? Ôw?M¯?#aü?7´ª?:Ì?(œd?(µ>÷B’>àKÝ>Øêd>Ñ>ÓOO>âuG>ó <>û”?—>þÝ >ì…>Çz7>‘¢h>P¤Í>yÑ^>®F>²ñâ>‹qŒ>„Ž ->©×>ĤÄ>Û9ß>òOø>ô6‡>ÛG®>Æuj>Ç—l>Òþ&>Þ¥r>æ6™>î¿?É? \J??XÊ?kP?¸ú?¿¯?ð?±’?ÂÂ?ªQ?#º#?* g?2m¶?9PÄ??Ûà?E«?K?TÀW?^‡B?f €?pJ¹?yOT?|Ol?uM¿?dÃ?Vdk?ZÕ“?j‰?mÍž?^©?NÞí?Nv?WÇí?d¿Å?oVà?u0?{[:?È^?†?ŠþÛ?Žã?‹·n?‡6$?‡Ûü?‹Ÿ?Žs?’«˜?–¦À?˜«?›äã?¡ôï?¨sœ?¬ ÷?®h–?¶# ?ÂÌÀ?ÎŃ?×д?Ü…·?Þaq?Þà?ØC½?Í5?Ìé‚?Ôù7?ÖÇ?ÑC-?Ñâ¡?Øi&?à3Ë?êtù?ô$­?úúç?þz}?ü1?û”"?ÿÁ@áÅ@Dj@ é@DŽ@vé@A–@f@¥@ ‡@ øý@ a?и(?¿¸?Ѓ¥?Ø„æ?ØF“?Üþ?åg¶?ðþš?ûÀÔ@²%@åy@ -¡ã@0ã@O*@ò–@û³@@@Î>@‡\@%?ÿª7@á9@@™@ù<@@)´@@-؆@5£@$ l@VF?ñuÍ?ûbÏ@ ?ý@q?ä`Í?Õ©?ß^™?ìdv?óŠ ?ühÈ@â@R@ -a@ºã@<ò@ yÑ@ES@º@(3@/‰ƒ@2N@4‘­@;#P@Awp@>vX@1¸ª@.J@5 N@6Áx@5™Â@?I¾@LÅ @Wª@bLš@hÐ@g¾¥@S}@8Û @4®Ï@A.¦@Kb9@I¸ -@Lu @[µ@mŸ @uîK@fh2@< ,@PŒ?Xvå?AÇ?6X&?8c‚?2?(s>?+¡,?5E&?>M±?GoÛ?RWv?Xã~?ak -?mµU?tGñ?z‰?‚æ ?‡w/?ŠÙ“?Šª?†fx?sˆŒ?Ug#?W­Å?o^Y?ƒTÂ?~€?P'¦?5 •?8`.?B{_?Ké˜?SQ?Zðß?eé›?pöK?w G?xÜY?|=?‚ì?‡Â\?‰#ÿ?‹·?F?—}’?ž>.?¤Çï?«÷ã?³ž?¸£F?½s?ÃmÐ?ÊÚ‹?Óqê?ÝÑN?åfl?ê?h?êà ?áp=?Øv†?ãH?õÞ?ÿþú?ôx+?Ù™?Î-?ÖOx?åmÑ?ó ?ýÇq@Â@ -×f@ך@o@͈@ Ø@Òh?ð6 ?áb6?èTf?í:?øÙÅ@­@ }”@ÈU@žr@$Ù½@(¹¬@*TR@0É™@:'\@CtZ@GÖ7@Aô @1cö@S1?óÀÿ?û½š@÷»@e @ v9@  7@8@#ÐV@2ˆB@8ÿô@;«³@@˜Æ@J›¤@Ys@gâ@k*©@jLŠ@aÙ¯@T@9í -@ï$?úÙ‰?ö_?ëÖ¯?ã3Æ?ëOa?û]ª@°M@ ¯@Úd@¯¥@ #r@)@0cö@4R’@>šœ@PÉ@\©P@`.X@e#q@eÅï@[¦@B3ø@6ÛÜ@CQŒ@Knd@OŸÝ@XÛÈ@h$ @z«â@…&@…ná@…a@Š¿¹@“Ü@š/Þ@žŠ@Ÿ@@ž°e@žƒÿ@ óÝ@žvm@¾S@uå@dÞ¡@eR0@Zàô@P>@O×@VN@`áÿ@lž»@v­@€M@ƒÃ@‡— @Ž‰*@•qO@š¿$@œ›ê@ áz@©—N@±jÖ@´Y›@±,}@¥ûÎ@žy»@¡Óˆ@¤Ž-@§öo@¬pE@²Xö@¸Â @½“«@Á>@żü@Ï‹D@Úä@äÃ@ì(@ðÓ!@÷V @ÿJ?A¥<@ù(@ÌR @Q‘@”Ó@°0@žE@›Tª@Ÿˆ¾@§‡>@¬$î@°ˆ!@¶zÝ@»©@¾˜œ@Átà@ÇR,@Ïœl@Ø,¼@ß0^@ã§X@æJ@ëDè@ñð @õÿœ@ð˜ž@æN @çxd@î@õ”K@ýÑkA>FAm“AÝÏA-9A lÅARvA·mA?@ôi$@ö¢A_hA !A -‹A ÜîA4jA -¡îAËÆAj @úF@çr@Õ*#@Ñ®/@ÝŸà@ê[½@ñÇ@òˆ”@탛@ÜLÉ@¿˜7@­4†@§§†@¤Ï¢@¦O¾@¨·_@¨¡Ý@­—I@¶ŒÍ@·ž@°X@¨U«@«š@¶e2@Àá@ƨ<@Ën@Ë`¹@Ä“3@¸Ít@®07@¥FË@§u@«ö@¨t<@§V¾@ªDa@­y@­˜6@¬€î@¯gô@µ @»áQ@Á}Ï@Â,W@¿ñk@»ê@¶Ñ@¶1Ä@µ¿@@±À‰@¨É@¡žb@¦²[@±šC@º¾¿@¼™*@±yo@žö@—š–@œ@Ÿ@¤¨j@¬M@°·@²ôK@²³ÿ@¨ l@„4Í@,o…@ r@Sï@•‚@³4@ß…@&„@1I¢@A›L@[Ìá@k™@g®Z@`¶@dlû@oÅ>@w84@kô@‚f @c¬ @!Ï?ë¥?í¶»?ú¨„?ù^û@›´@;@9@ÙÌ@'Ku@2…°@>°ù@FPø@I‹@@O8·@[b2@e a@mˆ–@wëç@€jU@|¾@Sôx@˜B?í–°?ë%©?èS¤?âÑ`?é·L?÷[µ@é9@ >…@Û@ É@(ŸH@6“T@8©Š@6å¬@?ðô@M1§@X„ö@aÏÌ@g­@eÒN@WY¼@I7Ú@OZ@YƒS@ZÎk@\ @cÕ@nÉ—@ro^@wR@}|H@˜@…èN@aÑ@”èõ@•®½@—Çp@Ÿú;@§n¿@©@¦@š¶æ@ƒUé@XÛ@M|è@Q†[@Uë@`ú@o<³@}zÊ@„·°@ŒGñ@Cx@mÒ@’³Ë@—ÍÊ@šaÈ@›Ó@žZÞ@¢k±@¦‰9@¨ïC@©¢M@¤(/@™n±@™·ð@ Œn@£DD@¥“6@§–F@§ôŠ@­â@´rî@¸Ï@¸EË@ºPS@¼¬@ÀŠ©@Ä Œ@ÇPÊ@Éùó@Í#@Òm@Öª@Öy;@ϲg@¼TB@®™i@«’ú@¯ -z@³Í@·íü@¾Èý@€@Á@@Å…@ÇØS@Éq!@ÌŒ@Ó´Ö@à Ó@êœ'@ìa -@ì'µ@í­¤@÷IÍ@ü.@ðû -@êÌZ@÷ã”@ýcˆ@ÿq"@ý31A‚A!A åVA »ZA ­àA ROAcA¼3AœA_ÃA÷kA=ÆA#¡yA)lA(/XA"êþA<¥A u\A ÆêAM -APAô7AóAcCAÏnAHšA#llA&/A&qIA)`áA1ÖÀA7>A<ÐçA< A:k9A>…A?Œ²A76ºA.úÈA9K½AAˆîADô¿AQtåA[›ÌAVüEAW^A[=AcåAjÚõAk¨úAiÄAnì*ArÞµAr˜‰ArÚGAuF=AzýhA€³nA‚ ®AxÉPAeBA^VcAfÚÄAn„¾AmÙãAoDAv”AxMËAxr|ApâéApÎAy¨±A A€AtÈ}AxTrANA‚A£SA€M?A€h™A€aNA€ß–A‚†A‚ñA‚êA„«ÄA‡ûÚA‰XØA…ÙJAt‚ÏA`ÀÂAh eAuc¸A{¤ÄAw«AugþAv \Auò¢Al¡•A8ù@ÍŒ¯@ '½@­»»@ SG@˜]@ždú@¤C’@«¸œ@³Í@¹Õ@Ä›€@Èç@ȹ@ÍÆž@Ôpæ@Ý®@êQh@ò³€@ð«÷@Ý…@žÆu@_ù@nT5@x´¾@dÕ1@c3@lt@tÿ4@{@g£@†gÙ@ŒîÝ@˜ži@¤9ç@¥·Á@¢B0@¡Åÿ@¡¬r@«ý`@¶·H@¾œc@½½¥@® @€¡!@5âC@=å3@OÀÞ@A×@6wã@:ƒø@?¬*@F@M¬a@VšË@`Ù@aˆ/@e‰v@ko8@lôé@ue@‚h~@*ó@Ž7U@‡@Â)@ƒ×é@†–1@…ý @ŠdÄ@œô@”tù@ Ó’@¤“‹@ C @£Š@ªüa@¸Äc@Àî@ÁF’@È”@ÔkS@ßz@Ú–@Ç|º@¿Nâ@ÀÈ$@µ¬>@ X@°Ñ@¥H+@§•@¤â'@£žñ@¦“œ@­a@µ]Þ@¹­A@»H5@ÂÃ@ÉΣ@ÉÓÆ@ÎÙ´@Úõ@݆5@Üaw@â7 @ÝZ¬@ÒCì@×JO@êåv@ñý@ï•d@õ³[AGLA@"A SAQ}AëA½ØAH‡AlA EãA&FA%ÄzA&°;A*šA4ãÓA;è¸A8ˆ>A=¾A<4A)ÉÐA+I³A:a°A>ÛuA=2`AAàAB-`AH…ÐAN'EATdAV¿nAZrÍA]™àA_S%A`eHAf –AkAh$äAl’yAuãŸAw‚sAyQjA~ö5A|#/Auœ‚AnyKAq‚çAs¢‹AuUAå†AånA}ÚpAvåàAuÖýA|šPA}²+AyDA|1AþæA…ñA„ÑzA†¢yA…;A€6Awz—AsÅÀAv˜ýA}ðšA|¬A{—ÔA‚êAƒM„A‡á?A‹ö Ae6A—ÌA”3©AŸeA§>ÉA¨ë¶Aœ?nA…AVNA›o£A¨ êA«v4A¤¨»A¡+!A£¦ŒA¬9A¶«†A¸«8A®aAžmÕA ¤A£;ýA¦e^A­ÂA´nÐA­AœìyAœ&A«#fA·ÅYAÃNíAÂã÷A±Ÿ‘A‹A™A 6ºA¥®àA«[A­*-A°¼kA¸ƒ¸A½¡QA®/âA QA¢x%A¥mA§+²A¤¤…A›F?A˜}3A RAªÿaAµVcA»KžA´±CA«ŽäA¦ŸA§ €A®¿+A¹L,A½ä‚A¼r AÀMúAÆäuAÅJÅA½ô€AÂLöAÈþAÍérAÔ&Aß{†Aå®#Aé6Að6öA÷ÖÑAø;ÅAñ0§AçÀáAçkcAí‚üAô“„AùqPAú­#Aö¶Aõ½AAü5[BNuBYVB€–BcøB/åB6ÃB '±B a±BÆB¿äB ×B H¿B rÙB ±XB -7!B *gBL²B|BS[B?B>èB5BZ5B!‚3B##sB$7ÔB"š/B ÉB(SBKQ.BLþBNÉ©BOC9BJ´ÐBK$”BT>(BYÜBYUB_á‰BfϪBqKyBz0ÐB|¼wBR,B„É„B‡©B‡Ÿ’BŠàBŒ¹ÍB‘JËB‘g\B’ÄÄB™5ÖBœ¶wB¡°%B¡]µBŸ•’B£ ØB¤ã·B¤i/B®¥B´fìB¶ÔØB¼à»B½únB½OCBÁnBÁq -BÇ~ØBÎÿaBÓ§.BÕúWBÙÒøB×ê©BÛ–VBß3™BçcBÜó­BÛÛBäHBæíFBé›àBãÍMBàïÑBëßËBò!Böb¥BûÃ…Büð­BþšKCóCb'CZJC]\Bùe)BþDCócC -òCYYCþC['C³_COC›=Bð1jB¶CB‹ŽB‘éB T`B™{„Bd€BËöB•ºAB—•B˜ˆ÷B €ñB¦ áB±†âB¶êxB·ƒLB¶DBÁ:JBÐ)ýBË5ÉBǨ³BÉõÀBÈŽçBÊ™BÍæèBÑE>BÃãB²ùVB³FB¾_­BÍ {BË‘ Bͱ&BÐÝ3BÒŸBÖÛŽBØ mBÐÆ\BÁp—B­~,B¯ õB¶gîB´u½B­>B­ -ëB®B¦7WB¡9ÓB¦@UB«¤ŸB©árB§ëÕB£ù¥B—øþBšr×B¡yíB¦œÐB¨>ZB¦RBB§éÌB­¬B´ ·B¶èíB¶ÑB¸}§B¸›§B¶gB¸‘zB»yB¸"ÊB¦ hB¤‹ÜB«Ê -B±v†B®èUB¦éB§ÒB­þzB²`PB°âÅB³¤;B¸¬ùB»ý|B½RdB¼ÇgBº~sB½ BÄv¥BÄûóB½XoB¯Ø}B²é‹BµP -B¸CB·>vB³;VB°™»B¡³B¡S;B©iB­ÄcB­ºXBªÒÄB­ìWB´ãB·Ú¥B¸SbB¸fSB¸ùòB¹rB¼¡¿BÅí¯BÈÝaB½'õB¬c¼B®Þ˜B¶!'B·qúB³Î"B²öÄB¨±[Bn‹@B:_¬B_8B~p)Bp^.B.B6VB'*GB3%B,qB æXBÖ=BHçB¤1B4ÌBº¦B×B(‹B¤ÐB‰%Bú›B#¾*B)ºB.¶²B1#ªB5)LB:­"B>‡\BBE÷BFñaBKžBKóFBJ¤HBX÷ÂBVxIBW(-BVISBDu0B?sBHŸBP;GBSXºBGÐNB>d‘BArMBG|BOîbBVÌÃBTÌ"BR´BU3ËBXþ„B]ÞBZ©ÏBTL‹Bl¿+Bp#nBbŠBgdBiŹBl»tBoÑ·Bsã5Bv¨dBqC‰Bm©HBsë=B})ëB¥ÀBÍï–BËÒBË3æBѲLBÕO’BÖÛÃBÕ–,BÓ¬©BÏ¡æBÍÇÝBÓ÷BÙoãBÞó*Bàh}Bã,IBä¯åBåßBëÉBBó¡ñBôÔBBôH¡BøI6BýaC’C'CÜCÒåCUþC©CóµCïC õCqC:ÐCé{CM!CߪC Í¡C 8;CcC÷SC‡ùC&ÚC¥C^=Cì~C%,ÞC&|C(73C)ÇÐC+ÈœC1±­C2ÚC2kêC.ÏÚC§B¤¤B­PBÉcBËèSB¢Ä4BwB“«šB™lŒBŸãB¦ÎäfC8ùªC>CBBECDÊXCDiCA;øC?’$CIû»CKï¸CLJôCQmbCQm8CR¾rCT3ÙCX¹nCU@³CWÿ/C\M§CVѤCW=C]ϵCd`Cj’lChïãCk„CeÂC^¿ÚCbŠCj+ðChzCo­Ck%½CbKChaCqã[CvT±Cwð‰CvsÔCyäþC|2zC~ÙC}½ÙC}oÒCxCqbƒClUrC]ýcC?jC!è9C)qC8žmC;|ÄC#g§C#È«C,ÚC%ƒC#‚½C#üÚC¶ÕCXPC -ÚëCq[C4‘CÉùC!ܤC',C‹ŠCî@CãC$ÖÛCœ¨CVC“ùC$YC'òCAäpCB†æCD»íCJWCHÃŒC?0äC< *CBY¹CF©ÖCJ³´CDGÁCB¶ CLPCJMZCI:…CM5C>yÕC4« C7u½C>æ]CC CGAƒCK[CLH2CJâCKˆCI¼…CKw±CO'³CL’¨CN!ÝCP´¥CSÌÎCVI5CKÃCIí&CXÌ€C\ºC\þSCUf€CXÖC`½­CaØ#C]¸CXã“CZPœCU“nCSÅC]çzCe¬C[ê-CXIBC\ãèCa!CCeïChnUCkCi€.C]Õ«CZõ¦CeåIC`çGCb„‚Cgå×Ci•ÔCiüCl9fCn!ÐCmBHCre?Cm[Co'…CrÆ?Cnõ’Cpì¢Coö²C^Ó|Ci<Cs ÌCsÅ¢Cd1ñCl­éCiŠ„CZJaCeáŽCnYŽCbIÊCfÆ"CwfCu"8Cg”ÛCl,ŒCr#Ce(ðC{pƒCº¿C»óC~ã’C{CnÑîC}vC…2Cˆ C†¯©CƒeÈCƒCCv„ÓC}³C‡÷5CˆbCˆ‘’C€ÉCj$öCF‘’C3 .CE„CDà=CIÆSCWÒÈCD•7C<ØHC=t>C@…C9·‰C>ÂCH>CQ›úCSy CUPÿCUÎÞCYôiC^±C\å¥CZ@ÕCXàáCR«6CX1/Cfj'Ck~bCnÈ5Ch^ÈCLáC\bUC[fgCcCl[äCwHÿCx¸¼CrkcCoUgCn&±CQWŸC4k‘C>‚ÅCDªÈCSŒIC[ZŽCK*MC?÷ÆCD•,CD‘CDwCDþCGRaCQˆºCMåèCTj0C]ÿGC[¾`CZGC]`Ceà CiÂCgK7CiôCk‰íCh> Cm|dClØÝCk_žCkAûCrË´CtŠñCuJÁCw!C~’nC€¼ÈC|tCyŒCm:¼CG*‰CFO/CQ¸ÙCTÁjCTšFCG«üC;¾CCî'CA>C?ŽICE•CNPCKy1CEgžCO‘ZCYÉßC_å¬CX½¢C^`CCq ~Cl ÖChÍ{Cb:]ClöWCn³zC{>"CvR‡CuN`CvùúCkaþCn5WC€Í[C|N_Ct§Cr´šCwHC}ñCäkCjùCṼCbtöCoÛ²Cs tC~KÛCiš’C`d&CgíßCmØZCl·–Ck”%Cm£Cl©cCla?Cy6C€¥+Cvg‹C€«xC‚û'C€ŽLCxnŽCY"ˆCN,`CV.ÅCdôËCf«§Ci´rCeJ0C[kCTZ¡CWˆCXºCU™èCSö§Cb> CeDCt2_Cok4CYÆVC`©CkACu°æCq»Cq ·Cj íCo''Cl­ØCnACrŸ’Czž[CèC€ø™CzÂÇC{½C}CtökCwMSCzVSC~¥CV$C}ýC‚ÜC„ƒC‡TºC€ÙC€²ÉC|å‘C;C€•7Cc@C^ónChãœCwZZCmÃÖC]Ä4Cf‘CoCj’*Ci“UCj§Cc°CjtgC}âC{lŽCsŽ¾CtötCw^âCs¼zCtµcCoÿwCpÙ×Cv^‰Cv¯xCo·üCwº&C~4SC|”þCâC€CrC„@‹C„S™C} ëCB®C†aYC‡€½Cƒ¬³C†UXCâ÷C‚h,C‡ì£C‰¦C‹isCŠ¨ãC‡*C‹*ZC€ìšCz€¶C8CvŽ­Cy}ïCjiÊCtíC{ÇÛClîÌCq~ÎCw°CzõÖC€ì¯CtVzCuŒCƒ!òC€ZCô=C†J²CcPC~¢µCz8C‚C‰ÔLC‡dÅC…m1CŒ=tC†ÃúC…HC‰û C‚‰ÍC‚ôöC†¸CˆaéCŒÉÊCfC‚=]C‚ŽŒC:cCv˜0C}gûCƒ6lC†K,CŠŠˆCŒsxC˜“C`4C”$õCŽ©¬C‰¿CÁÚCÊCˆÿ%C„{àCƒZ€C‡MºC¾¾C‘PC‰jSC‚öCCŠwC{ CŠ^)C‘ç¹CaC•;C”_ÄCWMC‰öÂCŠ]CŸ;C“@C…¾CˆíRC–®CŠ„´CŽ/C“¸ˆC”¼C”[ÒCšl C‘µ§C’’—C–‡C•ëƒC›BPC•ýðCKC¦OC“ÑSCŒWvC‹`(CÇÔCŽÙ4CŽÃ4C”%C‘¿`C’9`C’‰÷C‘o C‘*ƒC”ÝCßC™>C–;„C—ȈC–Ô›Cš$C˜PÙC–¸¬C–8CC“»ÓC–±ÎC˜Ý~CžC‘ÃÍC˜<«C”èuC™è -C™ÎC•è½C”¸CŸ!™C›M«C—ƒ¿C™{ØC”¨YC™|ÑCœªaCœ9ÜCœGsC™Á·C–r{C˜kžC™F|C“C ¬¥C –ðC›´C›]+C¡ÂCŸEÁC˜ þC{4C¢’²C¢MMCŸE.C¢kÿC¤µñC¥©C§š,C¨í®C¥™ C DC 'C§ÒÑCŸ´CŸãŠC¢Š±C¢Ø(C£¾jC¢ÊÊC¡G=C¢lOCŸŽ.Cœþ@CŸúÓCœeœC™ÜiCž C£øC£b1C¤{6C 2C¥ÔfC§Ë.C¥Â•C¡œC¡»£CŸp@CŸï{C¢.ºC¢¡ZCŸ€\C¡—C¢(VCŸ¥9C¦MçC©³dC§óC©ÎC©ì/C¦÷:C¦RíC¦&§CžÒC ½€C£¶C¦ »C¤«­Cž´XCžôCžë¶Cœ)IC(çCžCvCŸÍC£_ C¢¹GC¢)ÞC¢zóCŸŽÑC¡x C£"7C¥¤ÑC¤#ŒC¥`#C¤¥C¥Q C¢|C¡WC£%ÎC£†šC¢ŒZC¦ÉC¤ÂCŠ0CT³ CqðCHÎCy¿Cf÷SCh·ïCn¯$CksCsXÇCr©pCuwôC}ÜOC(5C}–öCu$ACvœ‚C€„êC…Þ‘C‚ì3C‚CÍC†ÙCƒ"CûmC„š~C‡UòC„¾îCƒýFC„¦eC‰h¹C‰Š¸CˆÑPC™ÐCÜ:Cˆ¯wC†txCŽ^CCŽ´ËC‘y3C!×CøNC‘vC’¶C’* CŽ¡BCŒwÓC‹â#CŽ2²C‰p÷Cž C‡½½C‹ªCŠEÁC†ãžC‡‹›C‰œrC‰uèCŒÞëCŠi£C‹† CŽ–~CÕCŒ™ -CnCŒrøC¬×CHÐC‘ýNC’)žC‘ý²C™ˆC“Ý`C”Ž‘C’¾C”…°CеC”*ÂC“Ä«C–ã»C”ŸŽC”¶ C—€´C“2C”×DC•¾+CŽô5C‹ßC”VØC—aXC•,ÈC™f`C˜£C–=`C–ãÁC•þ{C–Õ¯C—mÖCšð‘CšÁC—¿fC•ð·C“n@C•sØC“Û@C”ÒäC•ÇyC˜_(C™ñ#C˜$ÝC™±ZCœ÷Cž£qCyžC ¾C¢›¬C›¸>C›ÏËCfzC a3CžQlC ¢cCŸÑC¢ŠCž‹AC™åCžÇ¶CŸóCC¡”øC¤·C¢ßWC £ˆC¤f‘C˜ &C–c1Cž(CG­C—\ÒCžhOCÖgCœ?ôC¢ÕµC¡€¡CžhCšÞC•iîC _C£güC¦ð´C£BC¤‰«C£Q C›SC¡ôtC¤µ¶C¦ßVC¡Ý3C£Q~CbãCŸ÷FC¥ÚñC¨ñ:C¦duC¦?Cª8C§)AC£-C¦ÆC¨':C¥ÜåC£¸.C¢ÏC§ò_C£á)C¥Ï]C¤XËC¤"‹C£ÖPC©ç1C©ÎC¦Ø—C©ÐpCªdmC¦¿ZC¤•êC¨ÚCª !Cª‰C¥c†C§uECª7ðC©ÃC¨˜#C­>C«WåC¦]C¨*C¬#œC¬R¸C©ICª¨+CªÃC©ÅC©FCªØXC¨vrC¦;¨C©²CªÁèC¨ /C¨N¯C§t‘C©æbC«çÈC©BÿC¦”‘Cžê C£´C«—CªÁSC­s„C¢üC•ëUC¡j“C¬›€C¬ÝC«Ï5C¬ígC­Š(C¬H -C¨æKC¦]C§ÔCšÂáC¦(bC©VûC¬ÀzC­R C­OäC«è~C­¶C®C­™qCªhüC§øC¨ÇµC«lC§çcC¨cNC¨ÔC«&…C©û*C—LgCŸ|ºC«`ùC«¡›C©æqC«&@C­`¤C«ÛëC¨ºC¨ÝqC«ICª}7C©dC©¼C¬;C¬_kC¬ÇCªbQC©ÀAC©õ`C¬œzC«V1C«\“CªìÇC«”QC«¶úCªØCª -ùC©R…C¤ÝICœØ8C™¦ëC¦ÑC¦ü9C›nçC™1C£Â`C§Œ¶C¨}C¦kàCžÚC¥ûöC©ª£Cªà¦C©ekC¨ FC©%CªxFC§Ä³C¥:ÆC¥|âC™ßÔCž±6C¨å¨C©ÚC¨~"C§ŠuC§;ŒC§m¬C¦¥)C§^tC¨‚»C¨UÆC¨ ÕC¦‚‘C¨ÍC©+ºC©NC¨ ÛC§-ªC¥ÎÑC’™YC,ÖC¥Z­C¤µC›ÔJC¤ C¦JÈC¥ÖC¥ß¿C¥¸¥C¥C£ü¢C¦¦C§…C¨§:C©-WC¨b©C§übC¨ËC¨ŠC¤ò@C£‚ÎC¤=C¢ó_Cœ@øA¬éAÏŸAÿ¶AQdA/kAð AÅøA¿ðAÌ`@ä -J@ãµ»@ãSG@âúf@â¨r@â/ @áTå@à²@Þ}Õ@Üt@Øè@Òdó@Èå…@¿¸¨@¼)m@À ë@Ê ’@Ó>e@Ù[9@Üï@ÝÚ(@ÞV¤@Þwó@Þ‹á@Þµ;@ÞåÈ@Þÿc@Þö‚@ÞÌi@Þ~½@Þ™@ݪR@Ýrò@ÝrÂ@Ý„‹@݃n@Ý`Y@Ýu@Ü»@ÜcØ@Ü.Ì@Ü@ÜQ@Ûô«@ÛÞà@ÛÄ„@Ûž–@ÛjW@Û+D@Úèœ@Ú¨@Úc@Ú–@Ù†®@Ù@ØÜê@ØäÓ@Øòm@Øá@ØÀy@Ø«z@اZ@ؤ@Ø’3@Ølç@Ø8@×û@×¼@@×w@×K@×%k@× ~@Öõñ@ÖÚN@Ö¸…@Ö/@ÖWŒ@Ö ÿ@Õ«Ä@ÕXÖ@Õ0æ@Õ3„@Õ?Ù@Õ7@Õ²@ÔÕ•@Ôø@Ô=6@Ó’É@Ò°@ÏÕv@Íà@ͧ7@ÏÖ@Ðh@Ïç›@Íq@Êvq@Ȭû@Ȥ(@Éø@Ì+@Îf@Ðe@Ðò®@Ñ?Ç@ÑH'@Ñ3˜@Ñ&@ÐÚƒ@Йw@ÐKm@Ïô@Ï Í@Ïc¹@Ï;N@Îý©@Îpq@Í’@Ì¿b@ÌNÖ@ÌÔ@Ëàð@˽¯@Ëßv@ÌÍ@Ì×@Ì!ƒ@ÌD?@Ìgí@ÌLi@ËÞp@ËPÁ@Êü<@Ëã@Ë]Ô@Ë•Þ@Ë”ñ@ËXÿ@ÊÀ—@ÉxÀ@Ç_‰@Å"@Ãâ×@Äeœ@Æ»@Çñ¦@É,!@É· @ÉÑ2@É´Ë@É\'@Èi @Æ—Þ@Ĉ˜@Ãxº@ÙE@ÃqA@ÁÖ@¿ã5@¿Êù@Áî¢@Ä‘™@Æ1ö@ƹi@Æ·¢@Æ”O@Æqs@ÆP@Æ,—@Æ@Åà?@Å·„@ÅŠ…@ÅU¶@ÅÀ@ÄÍ2@ĉÄ@ÄUW@ÄY@ÃR<@Á¿—@¿–È@½Þú@½LÑ@½zß@½î–@¾Ô@Àð@ÀûH@Á#@Àé¯@À¸¬@À-@¾*É@º6Ž@¶@´®/@·*ú@»+µ@½ý(@¿ú@¿?Þ@¿ Ð@¾H@¼Ò@»Å@¹68@·yù@¶K|@¶ÇÅ@¹ «@»‹Ä@¼Ïº@¼à8@¼@¼v@¼ÅÅ@½BI@½”z@½”~@½7í@¼`¶@»@¹ém@¹¶ñ@º„Ò@»r3@»ÊÖ@»•þ@».Ï@ºÔß@º’@º^ð@ºTC@ºˆy@ºÐ\@ºäÜ@º§Ù@º$È@¹oY@¸’º@·«ó@·›@·e@·—ö@·Î¿@·@µvp@³ë‰@³Ÿ@²Š-@±›A@°]“@°2@±ƒ -@´ý@¶³@¶ÇZ@¶~)@µüä@µÚ @¶Ž@¶4E@µêc@µ@e@´.~@²8@¯=@¬Ä›@¬ìÈ@¯žÚ@²›9@´6{@´Vy@³Zû@±«Ó@°7R@°÷@°á}@±–™@±wÚ@°æL@°l§@° æ@¯Tg@­ë9@¬Kõ@«°@¬ž@®4—@¯s}@°@a@°éÃ@±„*@±é‹@²x@±õB@±Ð>@±¤ƒ@±pB@±0Î@°î¯@°·R@°…÷@°@X@¯È‰@¯ ÿ@®+{@­n@@­ @­´@­c”@­ýÖ@®™@®éì@®çÙ@®¿³@®›7@®…l@®m’@®9Þ@­×@­Q«@¬ãú@¬²^@¬r'@«°C@ªŽ¯@©Äk@©‰Ä@©0 @¨Uº@§¨W@§×ò@¨jˆ@¨Yè@§³A@§•ñ@¨U1@¨Êð@§ÿ@¦¨â@¦bB@§–q@©@©Ú´@©®ö@©¸@¨Æm@¨âL@©-x@©Që@©?¯@©Õ@¨¢Œ@¨4®@§ÿ¬@¨¾@¨WÎ@¨pæ@¨_?@¨5ü@¨@§ÒÇ@§‡@§cª@§)ä@¦èº@¦ru@¥ˆ"@¤=F@£D@£K @¤Ð@¤gA@£÷*@£^@¢–î@¢²Â@£.“@£Â@¤:ö@¤q˜@¤k@¤N@¤2@¤k@£ðÊ@£Òë@£Â«@£¶@£•”@£^@£*@¢Ân@¢Ox@¡ç8@¡·µ@¡¹3@¡¹Ê@¡¤«@¡ŽF@¡‰ @¡’"@¡’@@¡n@@¡+@ óï@ á@ Í@@ „y@ ¸@Ÿt˜@Ÿ†@žÚí@žå"@žù9@žîË@ž¾|@ž„í@ži @žr¨@ž¾@žm@žE·@ž)@žM@Ûõ@›§@}m@†×@µ@tv@!~@œ @œÚ@›¬l@›–Ž@›Äž@›ób@›ïú@›Á&@›…”@›P”@›>°@›i¦@›¬:@›½@›t=@šÞ4@š>î@™än@™ß‰@šc@š)ô@š/ @šÓ@šž@™ó@™µC@™R­@˜Î7@˜,Þ@—~@—%@—í@—Ge@—uW@—f@—kß@—M@—?(@—:t@—{@–ÅZ@–œÞ@–šÝ@––Q@–ta@–%l@•´ã@•[¶@•9ò@•'¢@•^@”ìi@•W@•<Ÿ@•Zµ@•;¥@”æå@”™1@”„á@”Œ¾@”mW@” -@“¢½@“VM@“7µ@“?E@“[<@“Qh@’ã@’9@‘?C@¾³@±6@ç}@‘8ª@‘¥¬@’*)@’–N@’²—@’n‚@‘Þï@‘Cê@ú+@‘&W@‘‚s@‘–0@‘7Õ@»@@x´@v­@›é@Ìü@äJ@ÏÆ@ªE@“e@hä@óà@W“@Žáƒ@Ž˜©@ŽZœ@Ž#”@Ž -ÿ@Ž&õ@ŽA@Žõ@EÃ@P›@2³@R@7@ò@ŽÏE@Žc@ŽsW@Žiš@ŽU -@ŽF@ŽX8@Žƒ£@Ž“\@Ž@•@‰ñ@Œ£6@‹²Q@Šë)@Š‚$@ŠsÈ@ŠÀ‘@‹…@Œ{­@«@]ÿ@š@âQ@öÈ@²@?3@Œíû@ŒÙÙ@Œà®@Œæ§@Œî@Œÿr@J@#‡@Œö£@ŒŸy@ŒM›@Œ&@ŒAÖ@Œ“X@ŒÑ—@ŒÐM@Œ­@Œƒ¼@Œh2@Œh.@Œ_I@Œ9µ@Œ&É@ŒI@Œ‡›@Œºú@ŒÛ @Œõ¡@ŒôR@Œ¾Þ@Œvé@Œ=·@Œ ë@‹îë@Œ —@Œ2?@Œë@‹èç@‹ÍK@‹¿@‹°G@‹£R@‹”º@‹„4@‹ƒ*@‹†É@‹dý@‹ ‡@ŠÏ¶@Š{Ë@Š@ï@Š<@Škš@Š™Ò@ŠyÈ@Šû@‰‰^@‰ó@ˆŠE@‡Ëå@‡>&@‡B@‡Ù@‡)ª@‡@¥@‡W@‡Áˆ@‡or@† x@ƒç4@è@€Ó»@€åc@êð@ƒ7@…=r@†N¸@†Œƒ@†+8@…OY@„=É@ƒƒ&@ƒ‘K@„tÔ@…é÷@‡ž>@‰@‰¹î@‰×@‡L;@…F@ƒeµ@‚î€@ƒ¦T@…ß@†‘ @ˆB@‰=Ž@Š#@ŠŽ3@Š™²@Š?Å@‰A@†Øf@ƒÕR@€þé@~Ü@ƒ”@ÐA@„Ýë@ˆl@Šný@‹êU@ŒÄH@>@P³@l@ŒÞ;@Œ\Þ@‹F.@‰nº@†£$@‚ßE@}Øy@x4@v‡¥@xUÂ@{21@|ʹ@|ÃÈ@|1ø@|X@|A¾@{ߺ@zu4@yÀ@|Ä@€ýi@„ÊE@ˆ÷@‰öˆ@Š`ù@‰¶v@ˆ Á@…KN@€w@zU«@rˆS@m˜ª@l–@oNû@tÜÆ@|ð@É0@…'å@‡½Ð@‰lŽ@Šˆ‰@‹sE@Œ!@ŒOÖ@Œ!.@‹æE@‹áâ@Œó@Œ20@‹ûü@‹‚C@ŠÏ7@‰‘—@‡’+@…@—@ƒmÉ@‚~‘@‚”@€ø@|¶l@t7@jf)@cab@aê<@f{@o ¶@x@€YÄ@ƒoc@…aF@†Q£@†Ì»@‡VŠ@‡ü‰@ˆ…T@ˆ¶@ˆQ@ˆm@‡å@‡í=@ˆU@‡õm@‡ªå@†ÿI@…Á˜@ƒÞ‡@£¨@õ @Ž@"E@ƒs@…Ú@‡ŽB@ˆ7|@ˆ Q@‡@†ÕS@†®@„ä%@ƒA¤@€æ<@zæg@qWý@f'‚@\@V9Ë@W @^="@hÆe@s |@{ ¿@€L³@‚Õ@‚þb@ƒ˜q@„ù@„n³@„´3@„Èê@„¬G@„{²@„?¦@„!@„cÊ@„Þ@… -–@„¶q@„˜@ƒVŸ@‚:@‚{@û@±±@Ü@‚5@‚‰á@‚´1@‚ÊV@‚ç.@ƒž@‚ø@‚¡‰@ÿµ@o:@Eü@Y\@`@k–@™™@¼˜@¸'@ªS@‹«@+*@€Œ½@ÊP@~•@}_‰@{Õt@yQ-@u-@nÚ\@eÎ¥@Z@O…X@H–@FÖ!@L(É@Uò¬@`Ë×@j%K@q P@uäj@x³x@yô8@zŸ‡@{‰)@|²ª@} `@~™@~d@~½C@~ï@~¶z@~, @}ÌV@}¿À@}±H@}qÄ@}0£@}ã@|Ë@|”˜@|³m@}@|í@|AO@{%º@yÆR@x<°@v†¹@t™ó@r£º@q64@pÀ@q"©@r¬@s2&@t^û@u›P@vÛÓ@w©–@vqß@pÐ;@gb^@aJ²@dÒê@mê–@tÞÇ@w·2@x$È@w£ã@vìã@vHa@uÍ @ugÊ@tí @thM@tè@t²@så@s“„@s+Œ@rö@s%À@s„Î@s®Z@s{-@r×¾@qàW@q @p|@oá`@n‡î@kí<@hº˜@f"‰@dfŽ@cÂ@am@],ù@U;õ@Hb @:4@1’_@1L;@7;J@AÖ@LŽ³@Väó@^f‡@cFû@fNè@gÑ @hB‘@hsí@hÎ@i.P@i4@hÔk@hœµ@hÙ_@i?-@i‚@i€/@iMÉ@i6.@iD8@i=#@i`@i o@hóÖ@hºø@hc»@gïœ@g\>@f²Ï@eà³@e€@d݆@dûµ@dô9@dJ@cÜ@cF}@b¼Ä@b%÷@a|F@`üu@`åÈ@aHt@bF@bÓÊ@c*@cÁ@b¿™@buÄ@bPô@bNÓ@b Û@a<@_15@[®s@VV›@OhT@Hþ5@F4¬@Hlê@N3s@T·@YÌb@\âÛ@^O²@^‡Ž@^U|@^Eâ@^ß@]®Å@]$‚@\¢@\LK@\Hw@\q¦@\WÕ@[ö|@[»œ@[Çž@[Ý™@[ÓÑ@[Àõ@[µm@[©@[R@Z°%@Z}È@ZE€@YÚ8@Y-Ì@X‰«@XUÀ@Xi“@XNÇ@X’@Wà@Wù @X8†@XFè@WÆü@V† @Tnõ@Q‹@N5H@K\Ô@J$‘@JÇ,@LqZ@N O@OVf@Po@P@Q,Ã@R@RÂó@R™»@Qæa@Qq`@Q^@Qkh@Q]t@PÎ@O²@K‘â@GN·@DVü@D&?@Fk‘@Iƒ@K}ç@KF×@HÁm@DWô@>íÓ@8ü©@1óË@)¡3@! Ì@X @^h@¦S@%Á@0f@9¸@@j…@DŸ@G -¬@HKº@HÊù@Hݯ@H¨@Gðå@FÉù@E•þ@D’a@D‹@D(r@D“4@D½{@D¦Q@DÑ`@E¢ @FšV@G¹@Gwÿ@H -¤@HGd@GÙ§@G/\@F®€@FR’@F&Ç@F;ÿ@Fl@FuŽ@F2-@EÍ@E~T@EAd@Dß„@DA@Bä8@A@@Qz@?Ã|@@Jö@A™²@B§ð@C †@C \@B®€@B1@A£¿@AñK@?;Ô@?°3@?ÉZ@?C[@>eA@=ÇX@=Ð]@>?¾@>a@>@=¥¹@=¶A@=Ül@=ˆ<@<Ù @–@'¬Y@'s@'ø¯@(a2@(|R@(F¤@(s@'ó(@'žÀ@'>D@'U¾@'²ƒ@'·Û@':ƒ@&‰ß@&+@&G|@&l@&C~@%ÿŒ@%Îé@%™Š@%\@%%í@$Üi@$uÍ@$!h@$—@$.@$[¼@$z@$ˆž@$œ¶@$¹ú@$Üe@$Ôÿ@$†¾@$g@#¿­@#]ì@"¹F@!Æ@ b@]h@X„@nÉ@ü @Ñ)?ú?ð†È?ñåj?ý¢þ@5~@#@õ@±¦@â @*=@ @ç»@¡"@ƒR@ n@! .@!S@!}k@!h\@!§@ ÇM@ v"@ "õ@óÊ@Ð^@¤‘@l{@ª@Wb@®@Œ=@ñ@~ú@í‰@Û‘@fL@Ú¿@:0@”i@Å@À!@Ýs@%@iû@yr@ý@¶@àÈ@"\@¤@ó@¹q@þÉ@-I@ð @f„@¹Þ@À`@g©@@æ@Ig@cô@Qó@ÿ@Êq@zÒ@;@™@Ìv@nh@ÜË@t¤@^|@O¡@-1@î+@‘ë@AR@³@ôe@—i@ó>@g@;@^@ï@MA@–:@ìP@­{@Þ©@Gá@¿&@¥@@¬@U¹@…ˆ@¾—@ó¿@,Ø@\K@„X@°ª@ÇK@§h@P_@ú(@á!@0@*$@2p@7@°÷@…3@‹¼@šä@˜"@—Õ@¤w@®¦@²Á@ªŠ@–­@Mn@®6@œ@ Z1@ ­@¶8?ÿºÆ?þµ½@6P@,J@ Ç×@Xœ@‡@êŒ@e“@ èÅ@ ܧ@kò@pÞ@sç@ Ú@I@Ü–@i‰@Ì|@Zc@N•@AÓ@Þ@ˆÀ@¢«@×1@Ë@oì@ Ð…@ qT@ â½@Ê`@pi@€ø@ A@A²@ bê@ ¾(@ R»@ •@ çz@ ›“@ (@ -Ï}@ -Ú@ ž@ ]|@ ·å@ þá@ Ó5@ MÀ@ 5@ 6Ã@ pf@ eA@ @ -Ö‚@ -Ü@ -æS@ -~Ç@ º³@ò@]@úX@'Þ@)<@ÎÉ?üq?ø­È?ùàø?þû‚@ÛW@¢Ê@'@ˆ›@¬€@¼s@²@7@e…@cï@´A@#Œ@2@~`@íŸ@À‹@Þµ@ @j@ù -@Äá@˜Y@Cš@Ú]@°<@ÆŽ@Õ@ªj@™@0@…Å@c@Å@»ú@oš@ @ðL@úé@û@Ææ@S@¢`@ÏF@Óm@µ$@]`@ì@²&@ľ@Ôt@že@fƒ@a”@aå@Q÷@?œ@\@âè@Á@áL@…@®Ä@ @¢"@Æá@6±@šˆ@Òg@´D@@@ÛÑ@â›@\@0@cj@¶è@»„@pâ@Ú@SÉ?þÆ?ýë?þÕl@OÂ@;>@ïÞ@ê]@Ny@3–@ü@ŸR@Nã@m@Š“?ÿ…ä?ý£Ð?úöà?÷Û)?ô¸?òè?ñy?ñÙì?ó]?õ+l?÷ö?ø;­?ø× -?ù%(?ù1Ö?ùd¹?ùþ ?ú%Ì?ùj{?ø„M?ø”?÷ÖÞ?÷¸ƒ?÷ñá?øF?øE4?÷¸ñ?öðÓ?öMP?õö?õÞy?õ¨…?õYŒ?ôãï?óüÞ?ò`6?ïVF?ê¶!?å|Ô?á©Ä?áR1?äßx?ê -|?î2?ðŠ?ñ¹6?ò&ß?ò^Ú?òqd?òuµ?òe8?ò6?ñaÝ?ð½ê?ð5‰?ï5è?î?á?îoœ??îL?í½¸?ì¦e?êWy?çz ?å‘?åJƒ?æŒ?è¤^?êMÆ?ëC?ë—?ëCØ?ê£É?ê*?éÏ?éR ?èps?çÐV?çĉ?è?è{‘?誀?ès?è+0?çè?çŒå?ç=s?æüˆ?æÀ_?æ¶1?æÄš?æ»`?æÒÊ?æÓM?æ2ì?åKæ?äº"?䊨?äŒÊ?äÇ?äZÊ?ãï?ã‹V?ã"¢?⥇?â…?át?àþ­?à`À?ßõ?à%×?à Å?àÅY?àŸ?àŸŠ?àÒ¼?àÎ5?àSt?ß–B?Þð?Þ£B?ÞV?Þ¨Ñ?Þ­«?Þ„R?ÞEn?Þ,S?ÝéQ?Ý”ý?Ý|j?Ýx ?Ý3ý?Üóâ?Ü©Z?Üþ?Û¶-?Û ?ÛîÜ?Ü Ò?ÛäŽ?Û†{?Ûš?Ú­?ÚsŸ?Ú?ê?ÚCa?Ú>²?Ú.j?ÚMÌ?ÚT?Ù÷O?Ù^á?Ù?Ù d?Ùpá?Ùý¡?ÙæÛ?Ùý?ØH»?×äã?׿?×Ïü?×Ú ?׳‡?× ?×Pâ?ÖË?Öb¢?Öq¦?Öc´?Ö?Ö”?Ö0*?ÖF‘?Õõ¹?Õa?ÔÀŒ?ÔXg?Ô8r?ÔÛ?Ô9?Ô$?Ó˜^?Ó[?Ò•»?Ò0¼?Ñôâ?Ò`?Ò9©?ѵm?ÐM{?Ηˆ?Ì¢ ?É%#?¨ð?¸£=?¬ò -?¢äE?oœ?žh?¤?­A?·Z?¿ ¬?Äå?È“º?ʧÅ?Ì?©?Í4Å?Í=?Ì},?Ì H?ËÐ?ÆÅm?Æõ¤?Çx÷?ÇÉÊ?Ç·L?Ç¿?Ç–&?ÆùH?ÆzÈ?Æ—?ÆŸÏ?Æ|œ?Æ d?Å?¸Âi?¸g$?¸Á0?¸°H?·çX?¶Æý?µ©0?´ï?´|U?´—8?µYN?µ¿–?µX?´yó?´Ïx?µAÔ?µÙ?´âä?´¨/?´í?´mj?´…~?´ú®?µ ð?¬ó?«¹m?«.K?ª·å?ª²?ª¯š?ªµ[?ªc…?©ùð?©™—?©P8?©;‹?© h?¨Èó?¨ +?¨Èù?¨’1?§Ö?§:K?§1U?§o?§g?§dÕ?§{«?§^p?¦Á–?¥ãh?¥ÌI?¦o»?¦¤ ?¦4?¥ÂQ?¥ÚH?¥ïË?¥ˆ5?¥1è?¥^?¥‘`?¥w†?¥._?¤µó?¤†µ?¤x?¤[©?¤}Õ?¤­ ?¤µù?¤cù?£é…?£Ð?£Â¦?£¥r?£°´?£ŒÛ?£0µ?£E?£%ç?£,:?¢üÔ?¢™Ï?¢2?¢Ò?¢PÛ?¢B³?¢u?¢#„?¢‚?¡?¡bL?¡R?¡ã? ¼ñ? ›,? Àˆ? ŽÒ? ú?ŸÞä?ŸÏÌ?Ÿ¹?Ÿ¶Ú?Ÿòû? #Ø?Ÿé?Ÿd‹?žÙú?žp ?žVý?ž®…?Ÿð?žõó?žur?än??ƒÌ?‚Îl?‚Ý?ƒ3?‚»¸?‚Hö?‚2?Ðo?›½?‘Ü?ă?‚ -?‚&?‚¤?‚y?Üþ?*?C ?,C?SN?U®??€ø:? ý?¢?€Â:?€‘·?€›”?€›¯?€T@?Ú¥?lL?"X?Hw?°F?‘?~í;?~m²?~ª?}¿Å?}b#?|çe?|· ?|ä-?|ˆ?{Ù&?{»¯?{ÉÄ?{xê?z”?x¶?tn)?n¥à?k?kÝà?p9?uU?w¦@?xC?wÞŒ?w¥Þ?wŽœ?w[u?w@Ô?w ?vgy?u€»?uQÖ?uÜÝ?v4?v'6?v7|?v:?uo§?tç£?t•;?tv;?t\/?t2×?sãü?s¡ö?sA?r¾×?rì4?s?rá®?r…­?r2†?qÔ?qIú?p¤|?p8Â?p:?p’Ü?pè}?p~X?o^å?nˆc?nhž?n’?n]!?nWZ?n?2?m±[?mMî?mjq?mCð?lðf?l…Æ?l_Ö?lU?l(/?l3ð?lÔ?k[?kØ?jÕ(?k†?k]¼?k@á?jÖ=?jkM?j{?iv5?hΆ?h­6?hd?h0Ä?hÑ?hž™?jÿ1?oÉ4?tÉ ?uä»?q§á?kBŠ?gx?e_s?dÅ»?d$¨?c¨?c´Q?d1F?dbÎ?cß?c[^?ccí?c…ª?bú¸?bD?aSK?`ß?`ºï?`ÁÔ?`¡Ó?`¯¿?`´:?`ZÓ?_ã?_Èa?_ßÄ?_èw?_{1?^»ð?]Î?]H—?]Š]?]¤j?]&À?\:¢?[_?[§?\{?]?]/¹?\ïy?\d´?[å³?[Ã?[}q?[x3?[©u?[||?[2×?Zãµ?Zab?Z Á?Y»Æ?Y•?XT?W“÷?WR­?W–¼?Wª´?VßÛ?Sá[?O=C?MÅž?Qhk?U¦‚?W…3?XBÐ?Xè?X?WáU?WÈÏ?W_§?Vß?U9?R‰¹?Oïy?K£C?FD±?E™?IºÕ?P«¸?Uù?U¼˜?SBŒ?N·?J“È?JcX?Mê±?Ré/?Vq?W!–?W“Q?W±%?WM,?Vâ ?Wù?WrÇ?Vçq?Vk.?V9Q?V?UÉD?U}Õ?Unÿ?UW4?Téº?T ‘?T1e?Sµä?Sd™?S¯?S8Ž?S*?Rªk?R[ÿ?R÷q?Ssž?S_¿?S*?Ri?QÙ‘?Q¥"?QÌ’?Q¯*?Q©?Pbù?P3?Oÿœ?NÍÅ?L"?FL0?;£f?/ÃV?+gV?2W«?>E?G2?J_$?K#?JØ?I8˜?E\œ?ºÇ?Csd?Cä½?Eyß?Hc÷?Jn?JK?H¤P?FÒÌ?Eìõ?FL ?F¾]?FMú?E¨§?Ea?BSç?@n?B”3?C"?A E?Aü?E[O?FÁ¾?FÎÖ?FL˜?Dg‡?Cê -?E7?EžÁ?EnG?D®þg?>C?=_Ó?> G?>uå?@u?BÌ?C+Å?Aù¢?@lZ?>ª{??CN?A`U?Aó?BG?AÏð??ê‘?=WY?<«J?=Ö_?>ã†??&%?>V ?=ž?ß?>]$?>Ÿ»?>…™?> ?=Î?=ºª?=/?;Ú¶?;`—?;‘è?;¾Ú?< Ÿ?<5?;þ?;ÊL?;y -?;Ã?:›”?:.˜?:<8?:HK?9ãè?9‰Ã?9À ?:LÄ?:|’?:á?9™?9/?92¾?91Õ?8Íý?8‘p?8ND?7ð{?7°Î?7½µ?7¬Ù?7Rê?6« ?5þÕ?5ŠÇ?5›—?5¯?5jL?5?Š?5k?4ì?4qù?4Â#?5(±?5fÆ?5c?4ˆ‹?4Mà?4{¿?4•k?4+?žC?{!?m»?kŸ?kž?æ?®?Àá?þ ?ÓV?Q¹?;Š?L¾?0?ª?‘?í?v?}–?ã?rÕ?lr?N4?‹?©Q?€Õ?ž?ëô?™µ?`:?‡R?l?hÒ?áÑ?ˆÿ?,ó?(—?ÙÎ??E?i?'Þ?½¯?;l?ñë?ó?§j?ƒO?/Ã?†á?qI?W?…ó?‰?XJ?"ò?Ü?L?Ÿc?Õ^? ^?°?»­?¡?[2?Û/?þi?ìö?h?V¨?§°?ž~?œ ?…¿?nO?dî?ä8?y ?œ?¡8?QS?îŽ?Èñ?9?Kð?þ?Vã?É,?×ï?Ðð?q—?uE?=–?@? ïY? ä«? Ÿí? Û ? 13? $Ä? ’¶? $? iÝ? ãX? ©´? ¹B? ;“? õ7? ‹ -? -ÜÝ? §? ¦? ä€? ¥É? ? ö×? ¦? Ï’? YG? àž? :? È? Og? Â? fa?ÒÇ?üÖ? +Y? Ä? 67?ñ§?Æ?´l?f±?ˆ8? ?D›?? ? W:? Gá? M¸? p? ? 2? RÅ?Þ ?À>?«˜?GŸ?J(??T¹>õŸ,>æ–}>Ý Y>Ýjh>å—§>òA>ýé5?´‘?~¡?Vû? ?‘’?5?ÿl?˱?´;?Ó?#Q?§ë?îN?ÕW?ÿ_?ìB?¦@?!?£Z?›¨?ZÜ?ßD?¿?åÂ?3Î?Hú?:þ?/u? -V?â¡?•0??ÿ±?û?¼M?”ì??ºÚ?È×?ûä?é’??"¥?:?ú.?Þ´?Ás?r>?ýá?Ãz?äŸ?øÿg>ý5Ò>÷Œ>î º>èaI>ëÇ>ñ1'>ó%Ñ>ôªƒ>÷¶t>ú¿>ûÒ>úÿ">øú>ù8¶>üÝ>ü×à>ûç >ûQ×>úÀ*>û©Ú>ü|K>ûqT>úH‘>úcÐ>úz%>ù–">ù¥>ú4¨>ún©>úœ”>ú©Ø>úªV>ù¶->ø•¤>÷Å•>õe.>õ, >÷g_>ö¨?>õ¹>ôvt>õK>õ5À>ôc >óý¼>ôB>ôi|>ôo÷>ô¥>óW#>ó4–>ò½ð>ò1>ò*‚>ò% >òm>ò[Æ>òou>ñA>ð]ð>ð½¨>ð¨>ð >ðÞ>ïæî>ïyX>ïÿê>ð5Þ>>ï=M>îÊ%>íB>ìÇR>î ©>î ->íÙŒ>í×8>îˆ>í³3>ë™°>êèg>ìxQ>í›>í¯>í|>íì>ìÌ+>ìÆ>ëpB>ëJÕ>ë’$>ëq¿>ë>êÂá>ênT>ê1+>éÿ>é©Æ>éDÞ>é C>é ->èëA>诗>è]->è\>çá›>ç´\>牀>çIE>çÛ>æùž>æÃà>æ†m>æX©>æM¤>æM¾>åù¤>åŠ2>åCÔ>åö>äÝs>ä’â>äf­>ä<>ãÿ>ã»<>ãc$>âùu>â¸T>âTã>áè°>á‘>àüþ>à!«>Þí‘>Ý$>ÚW>ÖT>Ñ؈>ÏÙ¯>ÒI)>Ö—Å>Ú‰>ÜN¸>ݧÊ>Þ]9>ÞµÆ>Þè—>ß >ßâ>ÞÕã>Þªù>Þ6>Þkï>ÞF>Þ!ß>Ýþ >ÝÖÈ>ݦ>Ývñ>ÝNy>Ý ä>Üå´>ÜŽO>Ü %>Ü·>ÜDN>Ü0>ÜÍ>ÛÜõ>Û°×>Û‚m>ÛNº>Û!>ÚôÎ>ÚȲ>Úž×>Úp{>Ú2{>Ùö>ÙÉ/>Ù¯×>Ù‚h>ÙS >ÙÚ>ا>Ø¥>تó>Ør>×É(>׶q>×Ôx>×i>Ö†a>Ös9>Öƒx>Ö*">Ö*‚>Ö‡>Ö8à>ÖpP>Öï>ÕÜZ>Ô®f>ÔÖ>Õf>Ôƒ}>Ôí>Ö>Õ‡>Õm>Õ'™>ÔíE>ÔÛ¡>Ô”.>Ôì_>ÔQ×>Ó R>Óø>Óy%>ÓWé>ÒYv>ÑÒŽ>ÑÅÏ>Ñ:>Ò#}>ÓhN>Ò `>Ñú>Ó8ã>Óýz>Óê¬>Ó]>ÓÐ>Ò|>ÑqÖ>ÐUs>Ïñ–>Ð|>Ðw¨>Ð#p>Ð8×>Д >Ï…Ñ>Ì{?>Ç|>¡Ì>À¯ª>½ða>½À>Ä=>ʵ§>Í -Û>ÍŸ >Í9I>Ë”1>Ê«µ>Ì>Í0L>ÍØ>ÍÆO>Íc>ÌŽE>Í*÷>Í>>ÌQ>Ì â>Ì4o>Ëm>Ê›X>˳>ËŒ:>Êô“>ÊkÍ>ʲ<>Ê{>ÊS@>ÊE">Êo>ÉÃJ>ÉHÕ>É8¸>Êù>ʘˆ>É‘'>Èþ}>È^à>ÇÀt>Çsg>Ç‚œ>ÇW ->Æíí>Æ{¹>Æ'¶>Åô.>Æ g>Åý«>Å¿C>Åx¬>ÅKM>Åm>ÄáG>Ä«Ï>Äp\>ÄAf>ÄU>Ãâ>Ã.>ÃAh>ÂÇ:>Âã>Àþœ>¿D›>¼sÔ>·ýÅ>²pÅ>¯é>³K>¸Ç#>¼ÌÑ>¿.>ÀŠ¥>ÁLæ>Á”c>ÁYä>Á >ÀÏF>ÀvÎ>À"V>¿ÊW>¿p­>¿5>¾º2>¾{h>¾An>½àù>½X^>½=þ>½[³>½;Ø>½ -ù>¼×È>¼¥«>¼„D>¼k^>¼@ä>¼( >¼!ì>¼ R>»çe>»½¦>»>»]è>»8D>»>ºéò>º²*>º@R>¹¸*>¹É'>¹Îô>¹ŸÍ>¹mh>¹; >¹Æ>¸Ö>¸©À>¸{z>¸IQ>¸‘>·ç·>·¿_>·—>·oÈ>·A­>·€>¶ãi>·×>·°>·5r>¶XÄ>µõb>µº>µšÅ>µu¶>µKw>µ´>´ÝX>´µÖ>´œ[>´tÛ>´Dç>´|®>µú*>µýó>´&>³wc>³<`>³l>²ö*>²ÃÑ>²ŠR>²Wò>²)*>±øã>±ÄF>±D>±_S>±,>°ê>°sK>¯ØÛ>¯öm>°>¯û$>¯Ñ>¯¦J>¯wî>¯EB>¯|>®ú >®ú>®³Q>®p7>®d>®6«>­­‰>­®>®>­»©>­.J>¬ö“>¬Ú1>¬µ•>¬h×>¬>K>¬È>«òÓ>«þŠ>«±m>«¡ð>¬#6>«Ýþ>«1Ü>«$ >«6>ªžÔ>ª{>ª}Õ>ª"÷>©m>¨þ™>¨ªæ>§ó6>§£X>¨r>©bà>©$û>¨)õ>¨5:>§Ù>¦ã—>¦³«>¦Zþ>¦—>§Ç>§–­>§õD>¦ô›>¦¢’>¦š$>¦¹“>¦V,>¥õˆ>¥ÊG>¥ý±>¥¿X>¤ê&>¤|±>¥B/>¥’`>¥–Ï>¦P<>¥îj>¤ê>£åÌ>£ÌX>¤[*>¤š>£¯ý>£ƒ>¢Æ¶>¢GU>¢>¢”>¢:—>¡Ç¦>¡Æ‰>¡Ú>¡üž>¡°ï>¡u>¡ïƒ>¡Øé>¡Pú>¡_~>¡ -c> Ã­> Jõ> ' > R}> ô> E2> )J> í> †> PÔ>Ÿíã>Ÿ†¹>Ÿ8¨>žÌ>ž1y>ïe>Óv>¾^>Øœ>Ñì>³:>€¢><É>¢>œå >œÓ3>œ¼É>œ­)>œ~ >œdÎ>œNN>œ3­>œÀ>›Îó>› -Š>š4Ë>™È¸>™ >˜É[>˜»9>˜¦+>˜‹ý>˜vâ>˜Žö>˜.e>—>–ýà>–¹>–4ó>–$¸>”0>Žíú>ˆÍ>„­!>‡:ù>Œû>øŠ>“@r>”€ž>•+´>•…ª>•´¡>•Øc>–>i>—6i>–o'>•–Ó>•€Q>•e+>•Ew>•,>•E9>•Š¬>•)0>”ÛD>”ô¤>”³>”U#>”-Œ>”%T>”ó>“Ø>“°Œ>“Œt>“aî>“6`>“ ›>’ýð>“>’ãw>’¬->’ƒr>’[Ö>’ >‘ÝË>‘Ì>‘EÂ>áX>ë=>‘M>‘?/>‘'->‘¹>á§>»=>Ú>]Ø>?*>3]>n>ío>É>¦»>s>Žïq>Žƒª>Ž¶:>9W> d>lz>ŽŽ‹>Ž w>ö>>gr>‘Ç>’bþ>”%ø>‘¿e>Œ7‡>‹7Ž>‹3>‹+H>‹m>ŒÈ>‹ñ>‹÷>ŠÓé>Š²Ñ>ŠŒM>Štg>Šz©>ŠaÛ>Šj¨>Š§Ê>ŠÉÒ>ŠgR>‰úV>‰å£>ŠJ>Šƒ>Š%>>‰°ø>‰P¦>‰“>‰©ë>‰íë>‰Á >‰>ˆüc>‰Ov>‰Dã>‰;<>‰á>ˆŒÕ>ˆª>‰, >‰Ü>‰iÇ>‰JO>ˆ{,>‡ûu>ˆ 1>‡ì§>‡®‚>‡¼>‡6>ˆFÎ>ˆà°>ˆ}Í>ˆ-g>ˆ}³>ˆƒd>ˆ2~>‡’ >†Ú0>†¸j>†Én>†Vd>†a²>†`|>†;ƒ>†,é>†²>†ñ~>†¾x>†j#>…õí>…ß>…ƒð>…ŸW>†PC>†vç>†u>…h >…&ù>„¸Ç>„‹_>…¦ò>……‰>…W„>„Íø>ƒ†>ƒ¹d>„£ú>„@>„HØ>ƒPö>º¢>[6>€ßn>(Ô>}|Ñ>z¬É>~ê¹>»k>~sð>}gà>‚Ê>‚êS>€Q>~ô6>¬à>‚y>€õ>~kq>2¨>|¦X>~ù>~Ö>€g=>| ->|*x>€9_>0ø>‚=>‚4æ>ÂÑ>€”o>€‹b>ØW>Ï°>+ >€Ÿ‰>€D>€t˜>€ Ù>}Õ<>xA>sP>pË‹>t„ÿ>yïV>x‚9>xÝÐ>z >|R>|Å:>|æË>{½Á>zÀm>zb>xðÊ>y>y®C>yŸR>y!>x"h>wµR>uÇ>s>u[‹>x`>w:>põî>rQ(>t>ol>p]?>t|–>t²÷>sdg>qZ$>p5>q=<>q>qep>rþ5>p®7>mvq>myK>oJ(>p]Æ>pJ>n,>oµû>rÎú>s ¼>p»,>nùò>o20>oäÛ>o^Ý>oG>oim>pê>p'¬>o.*>mÛ®>mp«>m¡>mJÆ>m)>mJç>mÍB>mœ>lr¾>liO>lÊP>lw>l¤?>lYu>kU>j‘¬>j4—>j->i³Y>ifé>i)r>héº>h¨ò>he>h >g¹>gw¯>g5V>fÙ˜>fxÑ>f8ç>eÀ>eU8>ec¼>eJß>ed>dñÒ>d¿>d->d^a>d)>cùÔ>cÂÁ>c”%>cW¼>c5ÿ>cŽ>d¶>bò£>bÚ^>eÌ~>eåq>bÚ >aõ·>dDÔ>d8>a5U>`ø>aa“>`]+>_Ìd>_Ö>_êè>_ó>_…T>_J#>aOð>l\©>l)>`æ÷>^¤>^W#>^Aà>^+->]ñ >]¬>]kf>]/m>\çQ>\Œ/>\% >[ïA>_xÔ>d„³>\y>VÊA>TpW>L;>?ä¢>=!í>Fnü>N±+>S4=>UÍù>W-¦>XÕ>X_ >XqÅ>Yì>]É‚>_º‰>Z¶ñ>X >Wï>Wã>XbÀ>Wq•>VOî>U³>TÔ>U~>T¸->WÑÁ>\Óe>Y®å>XP>Zþù>YÛ>VÔ¢>U¨a>VN>UAÔ>UËü>U†a>SŠ>Tñd>Uq9>S›!>PâJ>Pù>OÏ>>P¤Å>P ß>OÞ%>RB5>QçÊ>QÊ>P=Æ>PŸP>QwI>R­µ>Q±û>O¾µ>QX@>Q§î>S;>S¥}>R°†>Sä¥>SýE>TÑJ>Sʪ>SCŸ>R™Á>Oõ€>Q`X>Pʘ>P+¦>PnÊ>P>O >N x>Lªô>KZ÷>IÀr>Hêç>Ic>J…=>K*Í>Km¡>G׺>Elq>FÈ>Gøî>I‡Å>Ih¨>F;v>Esù>Cnl>H˜ë>L²™>Iî>H½>H˜[>K¼>KÁo>IÊ•>Gm2>E|š>CTj>C¤S>D¸^>B"·>AÌë>B€’>A?O>AÒ_>CU³>D£c>E’ß>F|>H}>H¬@>Ht¸>F3¦>D+ >EBb>F~®>EÑz>Eê>G{>G…p>F—>Fý·>E¨>D Ú>D\.>Bþ—>?‰>>á.>?$!>>‹ >?è>?›Û>>r">;¡.>:K>;Á>>wÉ>Bm>A÷@>>¶>B$e>D$5>C¢™>B|y>CÌ>Bºr>B/G>?ñÁ>>b—>=¾ÿ>;¬›>8ÇÃ>7!÷>4›>4~{>6;¸>6™ü>7¢>8¶¤>:ÒÃ>=ÞJ>?õ<>@ý#>?"è>=¬™><ÔÌ>;b>8‚¥>6Aò>5OÖ>5Ž_>6 ˆ>6ž–>6“Ž>86>9Nº>:§>;Ÿ>:¨H>9dF>96W>8e•>5 Ö>3ºˆ>3ªœ>2û\>2‰C>1ýe>1ú>2 >2¨H>2|">3›>4øº>5óL>9CÖ>;¦ ><~“>< A>; s>9|³>8žó>70z>5“:>3£J>1ÀØ>/Ó›>.>,ÜU>,¢Ï>,ïž>-T}>.È>/‹<>/‚>-Mž>-;È>/Ëu>3,Ô>5y7>5q‰>5y >5l>4p·>3Ÿ‘>3$ž>2¶‡>1>1Gã>2÷T>4/Y>4¤Ë>5&>6kþ>7ò>7÷M>8q5>7½>4ÇÁ>4!Ž>3 ¯>2 ¹>0«É>/_Ð>.Ä,>.×m>/Û|>1Jô>20 >1’¶>1;P>1C=>1¬>/Ê0>/݇>/í¹>-->*Ùz>(X>%Ù}>'¿Ž>)ðu>+@ˆ>*ïM>+ ö>,)>.q>-¾m>,Wì>+²u>+…Þ>*§c>)XÏ>)$>)‚B>*o>*½‰>+n>*Z>)>)OÇ>):Ø>)¥>)/s>(÷T>+>,×>,že>,Oü>-ú>.Œ!>/m>.dP>.ä³>0¤v>0¿>0g[>1&ž>1Jr>1e¸>0g°>/,¥>.Ñ>-ß\>+Æ>* ”>)°U>'úå>&)>#èÄ>!X«>ë)>1Ù>"l>ý ->ØR>!”A>$–Î>&…œ>'‘ö>'¦Å>(42>)W>),>)0">)#ø>)&!>(éæ>(­Í>(²A>(Я>(Ýé>(ë1>(à~>(>(tÎ>(n“>(|Â>('ã>'ë">'½ÿ>'Š >'X%>',b>'B>&ï>&à¤>&¯B>&{>&\|>&;¯>&€>%þq>%݉>%¹c>%˜ñ>%zh>%z÷>'>*A]>&c?>$Ö]>$¢h>$vK>$H%>$×>#ë˜>#µ:>#y>#L >#>"Ôå>"ƒ>"=k>!è/>!Œb>!Á> j6>–>Þr>Úó>Nz>­¬>²W>Pþ>HP>FÁ>œ\>âª>\ë>ìr>ÆÕ>2f>?>> Ÿ>Ù>V~>FÃ>`(>y´>‡’>‹n>†¡>{š>kä>Yt>?‚>'&>ùV> -›>Ñ>ŸI>¡>o >J¬>&~>üË>×p>¼Ç>¯>vÏ>I> -å>Ûç>­Ë>}Í>L²>+>Üß>“Æ>[‰>iÂ>V~>1ø>â®>è¬>LW>Õ>Î^>´î>—[>B>='> ,>{>2 >ñÃ>Í>¬†>X>j>B­> *>ÿ’>Þê>½>™>w²>_ >;> >Þ€>X>ÍF>@L>c7>Hp>ÿ>Ã*>’A>c9>1’>ù>·)>r/>*0>ÛÆ>‚L> -š>1Ð>0;>'>0j>Ìh> Ö> -úõ>Pú>¼u>q=ýÄj>Ý‹>¡> LÇ> ˜C> 1ý>l©>Pì>Û½>6|>yÅ>¤š>¾—>ÌP>Є>Ì´>µB>™¶>œ>‡Ã>o;>Uá>;r> q>p>çÊ>Ÿ>¨>€ƒ>Lp>Bs>+¨> ª>òÑ>ï1>¼H>…!>af>=>•> ê»> ¾I> ™ð> s§> N> ÏH> }/> ê÷> D÷> -cH>ÍŠ>c>Õ³=òà=ë²ó=ô·D>—C>à…>ü>>æÒ>  > jÁ> ˜Á> —•> •e> ˆÌ> ‘i> ±–> ¼ñ> Á°> ¾Œ> ·B> ²ë> °Ÿ> ¦»> ŒW> xy> [D> Dž> 4C> B•> /ª>é>Üñ> <›>ô >tq>Oœ>0^>ù> >÷Û>¾>šŽ>}>_>@÷>${>;>åª>ÁY>žÉ>|ý>BR>Ã>ßì>v>ª>}>'ã>g>Z ->:¿>[> ¤>ä~>»·>šA>ue>—>c)>ºê>Ѭ>Á™>£„>€!>Yj>1M>>Ùs>Ü3>Ñé>Ê>”J>2 >< >«3=þâa=þ±í=þ8I=û®:=ø̉=õ -ò=ïö±=èë=ßí=Ö†A=×ç -=áä=ê¶x=ñu=õ`ð=øY*=úo/=ü›=ýÞK=ýú=ýÈ…=þ=þ] =þGÉ=þ8d=þ*=þ=ýè"=ýÇ]=ý£Ó=ý|=ýQ€=ý#5=üð|=ü¾Ì=ü ó=üjô=ü z=ûèK=û¹Î=û‡$=ûOâ=ûs=úâö=úº=úâô=úm =úK=ùÑé=ùY=ù[m=ù(¥=øúN=øÌ5=ø—»=ø\,=ø$£=÷õF=øt=÷è¬=÷M–=÷ -%=ö×8=ö =öZ+=ö°=õö=õÓÎ=õš†=õc2=õ0=ôûÖ=ôÌÈ=ô†¨=ôG–=ô =ó÷›=óìK=ôÀ˜=ùùÒ=ùþ›>­°>8=óÖ›=óE¶>D!>»‹=ùʈ=òÒÊ=ñx¸=ñ1 =ñ =ðªš=ðž=ï©ç=ïZI=ïë=î¥1=î@E=íÐ]=íR=ì¿Á=ìø=ëkO=ëc{=ê2=èÿm=è»ö=èÐÝ=é.p=é«…=êÐ=êiÕ=ê)=ê—¬=êŠÔ=ê‡Z=êy½=êm4=êG:=ê4=ê -B=éúè=éœ=ébs=é,=èåö=謭=è„Ù=èbÃ=è/Ã=çôm=çk=ço9=ç_†=ç+ª=æô´=æÂÆ=æ‘“=æRñ=æ#ö=åþ =å¼»=åƒS=åQ^=å=äíŽ=ä»}=ä‹-=ä|E=äR›=ãáî=ã‚=ãi¹=ãN=ã ·=âå”=â±.=â9=âRÄ=â[=áâc=á©<=át=áB8=á=àÝ=à«=àzŽ=àD§=àc=ßÝd=ߨ=ßfß=Þ¶¯=Þ` -=ÞÅu=Þ«J=ÞuÄ=ÞC’=Þ&=ÝÉì=Ý¡>=Ýuw=ÝCÕ=Ý=Üã–=ܲ¨=Ü}d=ÜC =ÜÑ=ÛÅÃ=Û’¯=ÛiR=Ûv¯=Û2ö=ÚÍM=Ú™4=Úh0=ÚD(=Ú=ÙÁÏ=Ù†…=ÙQé=Ù=Øê•=ص>=Ø}÷=ØDÚ=Øù=×Ö=׎=×MŠ=× Ú=ÖÊ=Ö´=Ö43=ÕÞ¾=ÕŒ=ÕÊ=Ô”\=Ôe=ÒÁP=Ж=Ñ,=ÐÜ6=Κø=Ì@À=ÉÙ=ÄÆ+=¾Ö1=µ¦)=«ù=ªb9=³ÌÔ=½Ø”=Ätð=ȱ0=Ëps=Í=¹=Îc€=Ïí=Ï‹ -=Ïãg=Ð&=Ð[I=ÐP%=Ð+3=а=Ð =Ïår=Ͻ¼=ÏÁ=ÏSy=ÏW=ÎÃÍ=Îiœ=ÍýÜ=Í…=Ì€N=Êéh=Ègd=Äa$=»ö=­ÿŸ=ªPx=¸,*=¤p=ÇW=ÉŒ‹=ÊïX=ËÜ™=Ë–=Ë…®=Ët5=ËŠó=Ëèê=˲g=ËT?=Ë-R=ˬ=ÊÙ=Ë~’=Ôñ=ÒÜI=ÊÂä=Ê@=Éèð=ɽØ=Éx€=ÉJ=É.=É¢=ÈÀÿ=È”Ê=Èl‡=È;e=ÈG=ÇÝ„=DZZ=Ç|Ø=ÇQ²=Çjœ=ÇàÌ=Ç ®=Ƽ¨=ÆÉ=Ç…“=Çš=ÅòR=Å¿<=Å£¡=Ån†=Å9´=ÅÛ=Äæ==Ĺ“=Ĭ=Å£\=É~q=Èu=Ä'=æÙ=Ãz·=Ãu@=Ã{Â=Âìg=´#=Âq–=ÂM;=Â5­= ^=ÁçÃ=ÁÂe=Á=Á ü=À^©=ÀÊ=ÀÑú=À¨=À~=ÀSæ=À%=¿yp=¼‡a=½Ì=¿l=¿}R=ÃG%=Ŭ=¿Žp=¾›U=¾o =¾D¬=¾7=½íú=½ÀË=½‘=½bZ=½5=½a=¼í2=¼·‹=¼‹)=¼dè=¼;F=¼$=¼ÂŽ=¼ãˆ=»”C=»HŒ=»#€=ºü=ºÁ:=º‘'=ºcÈ=º0í=¹ôŠ=¹¸=¹…=¹6à=¸ÔÙ=¸yv=¸º=·l…=¶§=µ³=´o=²Ò=±b=±/ì=±½=³f=´+œ=´îd=µr¸=µÆ¢=µõÙ=¶ H=¶±=¶=µì¬=µès=¶L=µÞ¸=µt¶=µOE=µ+K=µ=´áŠ=´¼ -=´•ž=´kç=´;>=´à=³éw=³Âi=³›=³tG=³Lý=³&=²ÿ=²Ùë=²²=²‚ù=²R=²(Á=±ÿÅ=±Ö=±®ú=±Žx=±g(=±?à=±\=°ôL=°Ï.=°¬¹=°wg=°JÎ=°7x=±8ß=±k=°çw=°,ƒ=¯A|=¯2W=®Ê=®R =®¤E=®‹t=®c¶=®:Û=®”=­ïž=­Èq=­¡Í=­võ=­Mz=­-¸=­é=¬Ø2=¬ª¢=¬ƒâ=¬]g=¬7<=¬Þ=«êô=«Äø=«ž˜=«x¢=«R–=«+½=ªÿz=ªÑá=ªªË=ª…$=ª_3=ª9c=ª£=©íÅ=©Çí=©¢›=©}•=©W{=©/Ø=©/=¨ÛV=¨± =¨ŒM=¨fð=¨@Û=§ë&=§z=§½'=§­—=§†¯=§Yn=§.¥=§=¦â{=¦Äb=¦·F=¦=¦P=¦+}=¦f=¥â=¥¼=¥t=¥d=¥?‰=¥¾=¤óX=¤Æ˜=¤ª=¤†¦=¤bâ=¤@!=¤Ø=£öj=£Ây=£’ =£zá=£W$=£3J=£0=¢î´=¢Å^=¢©=¢~á=¢c]=¢Bõ=¡ï=¡ÐÅ=¡¹÷=¡—î=¡`ÿ=¡1=¡-X=¡ Ñ= é‘= ÆÚ= ¥¹= a= UC= '¼=ŸÜ=ŸÅ·=ŸÁÕ=Ÿ ¡=Ÿ}ï=Ÿ[j=Ÿ9=Ÿ=žõ=žÑ=žyd=œµ!=œºˆ=ž=þF=Ù =´‚=Z=j}=Ew= ?=œú=œÍ'=œ£:=œ|Ø=œVº=œ0“=œ £=›á½=›½X=›•=›l/=›B<=›=šâ<=š°œ=š€f=šMt=š•=™Þ=™¡!=™U'=˜þ5=˜o=•œš=•Š%=˜Zø=–h?=”•å=’Øq=z-=<=‰3=‚–&=tcÊ=pÙ§=_=ˆ2V=e=‡R=’}Ÿ=“Âå=”˜•=•Ó=•rM=•¨½=•È:=•Öý=•Û=•Õþ=•š»=•…î=•Š!=•tp=•t(=•]=•B=•’=”øÆ=”í‰=”Ðü=”²Ò=”_=”oÂ=”xo=”@”=” =“ì;=“ÌÒ=“°=“’ =“n%=“M¯=“.#=“ U=’å¨=“4È=“¦=’§ù=’jz=’\8=’6ð=’Š=‘åÒ=‘ÂF=‘ ¬=‘€í=‘[—=‘9 =‘=øØ=ظ=¸Ï=š=xn=Tm=1=‰=ò=ÕÉ=±¸==o;=M¶=*Ü=J=Žç0=ŽÆ=Ž§=ŽˆW=Žhe=ŽD9=Ž —=Ž|=â£=¿¾=Ÿ=‚¤=c¨=B—=!»= =ŒãÄ=Œ¾«=Œž=Œ =Œ_ý=Œ@æ=Œ L=‹ýÑ=‹ÝÛ=‹Àö=‹œ2=‹zj=‹[½=‹=ª=‹Ì=ŠÿH=Šà+=ŠÁ-=Š¢=ŠØ=Šsµ=Š>ý=Š%É=Š {=‰ä?=‰Þt=‰·k=‰…®=‰ZT=‰ g=‰¼=‰²=ˆàÞ=ˆÀþ=ˆ¢’=ˆ„“=ˆhÁ=ˆK_=ˆ+Þ=ˆn=‡†—=‡~ý=‡´F=‡˜æ=‡l;=‡Lì=‡.Å=‡Ï=†ò’=†Ô=†¶“=†—¡=†t×=†T•=†6J=†=…øH=…×;=…¾1=…¡,=…‚r=…F½=„kl=„Äe=…¼=„èö=„Ê=„«š=„=„lI=„L==„6å=„ …=ƒÌ=ƒÐ/=ƒ·?=ƒš’=ƒ|Ü=ƒ[C=ƒ; =ƒ=ƒÛ=‚âè=‚Ø=‚¥=‚‰Ç=‚j®=‚7<=‚E=‚I=ñÿ=Ö=¾ =†ë=YÎ=]º=B= Å=ƒ=€ç=€ÍH=€±š=€ =€rõ=€V0=€7Ù=€=ò=ºä=‚M=Iä= â=~Õs=~œú=~dN=~+Å=}îÊ=}œ=}5\=}$õ=|ù=|Ár=|ˆO=|PÆ=|ð={Üm={ž¾={i™={.Y=zñ¸=zº#=z‚D=zO[=z(=yÞ„=yš!=yZ&=y -=xå?=x­J=xqŸ=x8Ä=x¡=wÉâ=wø=wVÔ=wv=vãW=v­>=v‚¶=wdÀ=wlà=vC(=u 0=uFÓ=u -ä=tÑ=t˜=tcÔ=t&)=só*=sŸˆ=sSF=s=soB=s³u=rƒž=qÈÝ=qUa=pÒ=p#§=o2“=mäW=kë =h¬X=bÚ˜=X‡;=O¹g=M~R=U'=`‘ =f¢µ=i´{=kEê=l@¿=l‰w=l¦9=lq=li=k‚‰=jx,=hô¬=fn“=bÀ=^{»=\Ù=]œà=a”œ=e4=gB=hˆt=iD*=i§ü=i×$=ià}=iÚÇ=iÁ·=i¨=iˆC=i[Ð=i/ô=iX=hÒÑ=h›l=hg=h5€=hÊ=gÒn=gŸ­=gm}=g;ª=g 8=fÒ_=f©j=fpž=f4q=f(=eÍ×=e™Ã=ef=e-]=dù’=dÁP=d‘=d]k=d"ð=cóè=cÃW=cŒ=c_D=c(Æ=bðH=b¾=bŒª=bZ=b#³=aï·=aÆk=aš*=agl=a%…=`ðC=`À =`…t=`Qt=`«=_ï -=_¾ª=_=_Zy=_)Ó=_%j=^Ö–=^v=^UM=^-+=]ýC=]Ìk=]¢—=]E7=]¼=\Êè=\Æ=\Ù£=\ð-=\N=\ -3=[çý=[»=]ôP=tÎ=k¢ã=[™‡=ZÌ4=Z‹í=ZQÒ=ZÔ=Yý)=Zß=Y¾á=Y…‡=Y=Xæ4=Xµø=X=XNS=XˆA•´Aä³A|wAckAåÅAYYAëA&A(NA:ÂA|AÆ„A©AçíAUR@ÿ£²@ýf<@û -x@ö—Z@ïÈg@ê7@êtà@ò-³@üé¨A–bAqËAš‰AñFAÚA&@üþ -@ö›f@òe3@ó¢n@ùÛ+AýAËÌA›PAŸAp=AA›AeAêÄAßAAî(AûAêØA¯¼AG;AÆ/A`!ABA_úA}'Ak>A4@AVAHA!]A.ÉA´AÞ@A¡ÙA|öAh:A-R@ÿ‘@ü¬‰@úY@øñú@ùï@ü#³@ýõ`@þ¸t@þËŽ@þ¾–@þÆK@þÏ(@þÂ¥@þ¢#@þy@þMy@þ°@ýêœ@ý²@ýy@ýCt@ýB@üç­@ü½@üŽÚ@üR—@ûþï@û…z@úÁÍ@ùÌ@÷ä@ö«@@ö«Š@÷Ôÿ@ùAT@ú4j@úS@úÞ@ú5@ùÑ @ùu¤@ù.-@øóô@ø½ù@øŠI@øZÑ@ø/F@ø@÷âÜ@÷Òù@÷å@øë@ø!ä@÷åï@÷_¨@öÇ.@öKœ@õór@õ®»@õn@õ*&@ôãÑ@ô¢@ôlð@ôA½@ô@óçL@ó­7@ópÏ@ó<@ó…@òܲ@òŠÕ@ò@ñAÙ@ðŒà@ð?b@ðpÑ@ðÕ@ñG@ñú@ðù3@ðÂ7@ð„A@ðD;@ð„@ïÌe@ïšß@ïn@ïA“@ï@îâd@î­w@îmK@î"@íl¹@ìz3@ë}Ó@ë,@ëE@ëèñ@ìd<@ìç@ì[@ì£@ëÞÂ@ë­ö@ë€ö@ëEn@êè@@êfc@éß‹@é„÷@éf'@éd¢@é[@é6@èð@è ¢@èlˆ@èT<@è!¤@çŸV@æàt@æ@’@æn@åþì@åà"@å”ü@åW_@åW@åj@åÛj@æU@æP@åÙú@åjø@äèç@ä‰÷@äV@ä@ã< @áð›@àsf@ÞÑL@Ü @Ö¼1@Ίù@Æ„¼@ÇK@ǵÐ@Ð)’@Ø)@Ý@àƒá@àÁ‘@àÀ“@àµ@à8‚@ßž@ßPÛ@ßó@ß@ß,6@ß.O@ß @Þ»@ÞS@Ýô@ÝÀ@Ý´·@ݳU@ݦ @Ý @Ýk¦@Ý?ÿ@Ý Š@ÜË+@Ü@ÜW#@Ü%Ç@Ûé”@Û›n@ÛNz@Ûø@Û Ç@Ú÷å@Ú×T@Ú¯‘@ÚŽô@Úwì@Úb,@ÚE±@Ú @Ùó?@ÙÂh@Ù«@Ù\@Ù*@Øþ£@ØÛˆ@ؽ¾@ØŸï@Ø}–@ØT[@Ø%_@×õ@×Ç•@ןñ@×€—@×hŽ@×RI@×9!@×Ë@Öþp@ÖÛ¸@Ö¨Œ@ÖFš@Õ¯@Ô†Ã@Ó§Ò@Ó€j@Ôð@Ôq>@Ô!@Ó -„@ÑËÅ@ÑÆ@Ñ@ÑrÓ@Ò1@ÒÚ@Ói -@Ó®+@Ó¯ð@Ó†R@ÓJs@Ó -¾@ÒÈE@Ò~\@Ò+y@ÑØs@Ñš3@Ñ~·@Ñt%@ÑU@@ј@Э)@ÐQ’@Ð'@ÏàN@Ï®l@χl@Ïzá@Ïz´@Ïm@ÏG®@Ï -ï@δõ@ÎE~@ÍÉÑ@Í`Â@Í-G@Í6l@ÍX%@Íeø@ÍPx@ÍR@̧c@ËÈi@Êh@Èñþ@È)¤@Èp›@Él0@ÊuØ@Ë'u@Ëu™@Ë€}@ËiÉ@Ë,p@Ê…»@ÉEó@ÇØ@Ç -…@Æ÷„@ƧÚ@ÅaŠ@Ãðv@ÃÓC@ÅC=@ÇÈ@Èç@ÈpE@Ègb@ÈCü@Èq@ÇñJ@Çƺ@Çœ@ÇrU@ÇG @Ç*@Ææ@ƪÀ@Æh×@Æ*a@Å÷@ŵ^@Å@ÃÙR@Â-â@Àá@ÀmF@Àwº@À¯Š@ÁN@ÂE4@Âù@Ãõ@ÂØk@­v@ÂT?@Át@¾vK@»ÅÕ@ºøi@¼Ÿn@¿&²@ÀÌÉ@Á0y@ÀÈy@¿Ã°@½×Q@»Ò@¸!¼@¶[.@¶:@¶Öø@¸½!@»i@½Á«@¾â1@¾ø=@¾¸Ê@¾¢ó@¾Ö+@¿(­@¿[¿@¿O›@¾óW@¾ @¼Ò¥@»ž™@»a1@¼1G@½8Ñ@½Å@½Òÿ@½§@½gƒ@½’@¼Èî@¼—@¼”¬@¼¢a@¼‘?@¼@§@»–U@º¦@¹`Q@¸oË@·ûÁ@¸-@¸@£@·Ù@¶ -O@³X!@±™Ž@±Çú@²†È@±ÑM@¯—Ï@®*E@¯¤I@³@©šï@©k¥@©4ž@¨ë@¨‡Ž@¨Ó@§†@¦c"@£÷@ ‡Ì@ž#ó@žª"@¡}@¢”f@¡ºi@Ÿ¯@ž@žô¾@ zÇ@¢\@¤ Î@¥Â@¥„û@¥€Ô@¥Mñ@¥ª@¤éþ@¤Ë‡@¤·L@¤®@¤°ý@¤¥.@¤\@£Ör@£RI@¢ÿ&@¢×#@¢Î÷@¢ä@¢ø]@¢äˆ@¢šª@¢/™@¡ÓX@¡Ÿ@¡€n@¡e•@¡F@¡Ü@ ‘W@Ÿûð@Ÿ\@žÊ @žS@ž¡i@Ÿ@ŸQ"@ŸYÌ@Ÿ*è@žîa@ž°@ž‡ @ž’n@žžÇ@žeN@ž -/@½•@sæ@Õ@"ä@œ«@›Ì¸@šâ@@šjD@š{+@šÂ@šð`@šöá@šïõ@šìä@šÞ @š³á@š,@š`“@šD©@š`@™Ÿœ@™2è@˜ñ²@˜ý=@™3-@™0u@˜Ò@˜á@˜”É@˜Ä¹@˜£”@˜@—W±@–}O@•Šö@”µ…@”`@”¨ã@•Qº@–{@–‡:@–Ýn@—0\@—“o@—ßK@—ñì@—Õ;@—›¸@—\Ô@—(ñ@–ßT@–wÙ@–6E@–?ú@–gÖ@–p]@–Un@–0…@•ö#@•« @•m'@•?%@•+j@•3'@•7(@•„@”×.@”k@“ò¡@“]I@’¿÷@’o‰@’]–@‘ø–@‘Ó@l@Ó`@ˆ\@‘Í>@“x@“§À@“œ@“&ù@’¬Z@’W(@’¦@‘½ñ@‘8‹@’f@ì@@x@ÿÑ@‘5I@‘p”@‘­ƒ@‘•Ï@‘8@‘ t@‘0@‘9\@ùC@®é@¯@I@@Û¬@0@Ž0@X7@B°@ÑB@Ž‡\@Žõ4@Ä@@Žã@Ž´r@Ž˜ø@ŽˆE@Ž†G@Žž@ŽÏ—@ð@/Ñ@f@€v@7ª@Ž“Û@¾d@Œ½@‹Œ’@Š8@‰0@‰HÑ@Š¶õ@Œ‡¹@Às@ŽEÖ@Žhv@ŽS½@ý÷@uw@{@Ì@\@³®@Ã@zŒ@K©@vÆ@¸^@à¿@ýÄ@õ‰@º:@¥Î@Ô¸@âˆ@¥Í@Oß@Œû»@Œ¿!@Œ³ª@Œ§Y@ŒL„@‹±5@‹@Š’¤@ŠzA@Šâ’@‹‚u@‹ñ¼@Œ«@‹ëœ@‹Åÿ@‹˜7@‹r#@‹kê@‹~K@‹‘–@‹~@‹2œ@Šæá@ŠÏã@Š¿O@Šž@Š€æ@Š¯©@Šñ@‹'¾@‹OW@‹D«@Šè†@Šk@Š-f@Š[ü@ŠÚc@‹Xó@‹]@Š¤0@‰‡©@ˆ™4@ˆ @‡©f@‡`Ñ@‡[ @‡‘€@‡±©@‡ºæ@‡öõ@ˆL¹@ˆ ‚@†xÍ@ƒú@ÿ"@{/¯@{ë@F_@‚ž•@…;=@†´Ð@†½ñ@…„x@ƒÒî@‚§e@‚Šÿ@ƒhÕ@„Ëi@†uü@ˆtl@ŠBï@Šö@ŠK^@ˆŠ‚@…û¯@ƒQ>@Û~@‚„ì@„èg@‡ª‘@‰ªé@ŠÉÔ@‹‚K@Œô@Œd´@‹ö½@Š¨@ˆ+@„ö@yÂ@}Âø@|û)@€“T@„Z@‡SÜ@‰Êâ@‹qç@Œ™@q»@ä@Ы@H×@Œtù@‹V1@‰®¨@‡Hƒ@„ }@€J@y •@v8 @y‰@€?ó@ƒp½@„æ@@„¥Ç@ƒp@§s@~ÔÆ@zi’@wÆx@yJ@€Fs@…ÆS@ŠªL@2 @c@Œ=:@Šu¨@‡ÿD@„z½@· @ví@ož~@p2h@x0e@®ó@†Aa@ˆâÎ@Š*®@ŠÏ<@‹ú@‹z@Šï«@Šœc@ŠÞ@‰–@‰vS@‰º9@Š³@Šg@Š¶W@‹ -@‹,@ŠEé@ˆÙ@…„@‚Í@‚i(@ƒB @ƒOˆ@í@yYÙ@n–å@eÞ©@cœ?@iub@tzó@œJ@ƒÍ@†w@‡gr@ˆ1@ˆ©@‰!@‰9@‰ @ˆ`I@‡´`@‡@@†@~“x@€î@L@‚DØ@‚¯d@‚®é@‚o @‚ ¡@Šy@@€Ý?@€Ö%@€êé@ @EÁ@57@46@g@œë@¸]@Ã`@Çf@¼r@Œò@4 @€Ñ½@€M@@~lj@z„Û@tŽÃ@kþ @aE×@VxH@NÙ¨@N:¬@Uâ<@bU@muò@ug@z7(@|©¾@}³¹@~*@@~M @~m®@#@ãy@€+l@ú5@ ½@~o'@~Ó@}ú­@}æ@~È@~@}Ú˜@}±@}Ç•@}Á‹@}ƒY@}O@}" @|¨@{ë-@{_:@zì0@z|@xc=@v(@sž#@pèL@n@n&@oÉÈ@r¦õ@uOq@wJÞ@xs×@x…~@väÙ@r=°@k Ý@g6@k´@t#<@yÓ@|@w@}›ö@~.Õ@}4¼@{·@yB«@xS-@x:á@xç@xnï@w™ã@vŒg@uÛ©@u‡ø@umë@uc3@u]‰@uió@u‘ð@uâ@ué¸@uH£@t~:@s¶›@re$@peŠ@nO@k£Å@i¶K@gè@eIŒ@a%@YÞ"@M¥Å@?B]@5˜°@4xz@;~Ì@Hyø@Vú@ba™@hÿ @kßí@lÖ@m0z@mz@mÈ8@mÐ×@m m@kÃO@jm‡@iÛ†@jFT@k,Ñ@k°™@knG@jЀ@j‘@j¯ç@j§y@j‰z@j5@jxx@jAv@iý¦@i_@hJ·@gX@f7`@eË@ez^@dµN@czž@b›&@bà@cØK@d[ý@cà—@b͈@bž@b_î@cPø@cï‹@cåh@c¼µ@cá -@cî¸@c‘ƒ@cXÌ@cb@bÜq@aH!@^Š·@ZAÄ@Sßœ@K,.@Aýy@=T…@AR%@KáÏ@Vƒ@]@_’¡@_ä½@_¶m@_€V@_+Ê@^è²@^ú„@_F1@_ba@_ -Ô@^g|@]ÂÜ@]nB@]±Ò@^M;@^¾@^@]¶I@]¾K@]Ãï@]³–@]…ß@]€@\DB@[ÚD@[ñˆ@[¿ @Z‰&@Xžñ@Vò@Vx@WQp@X€@Y(h@Yi®@Y!@Y¥*@YÛA@Yº*@XE°@Uîé@Tí@ST~@S]@SÑ@Tg¥@U6D@U÷í@VJ@U À@UG„@U{Ì@V@V2®@Uø@U°Ô@UVã@TDB@QÒ÷@MëÒ@HБ@Ce@@@Ð@Ae8@F @K¹¬@Mg´@Jæ•@DoŠ@;pð@3d‰@/K‘@.9@+üñ@%Õ=@ôu@î†@ø'@)Ì@9È@FJ«@NCU@QdÕ@RÂ@R%ç@QºK@PŸv@NÊ @LGV@IR˜@F±‚@E³®@Fñ;@Hý@Iµz@Hã>@H-¨@HßË@J˜›@KÈý@KÊŒ@K}m@KX•@KÇ@Jî@J°£@J@@Jl@I“’@IÌö@J @IÊN@Iw@HKS@GÄ@GP£@F|”@Ej@D!@Bb¸@@¿è@@ZD@A+@AýÓ@BYø@BßÚ@CŠN@Cj@B–è@B/O@B~r@BÂø@B†3@Aáî@A3@@Ü@@Íâ@@ÃQ@@j@@I†@@%X@@@'@@e @@.5@?‚d@>©»@>¥@>&À@>O@>‹Î@> J@=% -@@(«@&‚#@)Eÿ@.pñ@2þ¨@5€[@6q@6Ÿ‹@6•ä@6¦Â@6¥Ú@6J@5ÍF@5D@55@4—d@4é@3ô@4V@4®@3¨(@3NÝ@3Y£@3Ÿ8@3çB@4d@4Ö@3¯ê@3c*@3cÒ@3‡Ñ@3N@2x&@1ƒˆ@1@0ïá@1@1dØ@1Œê@1#@0Œñ@0H;@0ä@/Ð@/ëW@0*M@05™@0 @/ÐD@/º³@/ì@/+ý@.¹'@.§c@.¯f@.r€@. Õ@-°ê@-a@- @,Ït@,Ð@,Ñ]@,‡®@,(i@,…@,hØ@,Ç@,™ @+ó@@+]ñ@+Þ@*ãÃ@*ðu@*ï@*éí@*ôƒ@*ðŽ@*½[@*]Å@)êå@)~>@)K€@)NY@) ¢@(_<@'ç@'ßd@'î2@'üÌ@( À@'øX@'Á›@'y@'NÃ@'‡[@(@(gÞ@(¥´@(ÔY@(ñ¤@(ñ£@(×W@(ƒ(@'õÐ@'NÐ@&ÏÇ@&¦/@&ݦ@'k³@'ÈN@'·#@'²È@'Ä}@'Ä@&îâ@&^÷@%ñú@%•”@%Qy@%Cy@%k¨@%”¡@%–e@%ž@%ׯ@&-¤@&b@@&x¤@&¨‚@&@%ÝÆ@%P@$£¨@$iÝ@$@#b@!ôJ@\Þ@x@z@ !²@Ì?ú/T?þ@´Ð@Òå@ëÒ@X†@Yà@ hh@!j@!¦@ èª@!Ë@!¯Ù@"Xo@"ˆ@"x@"h]@"µs@"ªE@!Ä@ È@ @@ø[@þ[@ @@ Cè@ɧ@2 @^@Q±@)¯@Ôþ@å%@.U@q@v2@©©@&k@ ‰@zÛ@‘$@CÅ@ä@î@¼@«I@™@**@õÚ@¼å@„ï@Í9@wâ@Þ´@ìÃ@´@n8@m"@úÌ@ÅI@ØÒ@Æz@ž.@^‘@öL@„@3P@·@ÂÞ@{@d{@€@ÈÝ@<@?}@Dµ@óH@TC@Ž@©Ð@À°@äx@þ@ e@Xì@ñ€@íµ@V¸@¢@‹Ú@a&@\@vä@jü@,@»¹@ÈÇ@?\@Ò\@¢@a@® @O[@ž‡@ŒU@ a@®6@cª@KH@b»@h@`T@f/@>@íi@¬¡@sû@„Ê@Ñò@òå@âu@Ã@›¢@ðU@mg@CW@ -ö@ŸÆ?ýck?ñ¡ó?ða«?üø0@“ƒ@) @˜@Ý2@†%@Žá@fS@ž@3“@·j@+›@Ìê@ ¸@‡@åÔ@@÷‡@[Ü@Ls@¢å@˜>@Å@Üï@b@êÌ@M¦@è*@µs@êp@Dr@°@{Š@@P©@ -/@ F@Àñ@³†@Fw@)=@”‘@Á@cª@Åí@ ¹€@ -x‡@ -a@ @Ýî@ \@ --@ >o@ ý$@ Ó—@ -Ñt@ -W@ Ñ@ @«@°@ºD@ø@0_@ †?ü…ö?ô>F?óŠ?ùûÒ@Êb@ðã@"Ï@•¿@äb@9 @v,@r@K@9Š@)ú@Í@à‚@@@òÍ@à‰@»ó@°j@’‡@ú@zA@^@Ãf@g@ü@¼É@„ï@@¸T@¨Ç@äž@æ¯@;ó@]é@ã¯@·%@¬Z@¾Ç@µ@z@Žf@©[@ÓÙ@Çš@\Ÿ@æ@‚…@'Á?ÿÒh?ÿõX@`d@¢@Vw?ÿ‡?þÙÇ?þZÔ?ýü?þ@Š?ÿ3Š?ÿÂç?ÿ'?þÏË?þ=?þ4Ñ?ÿ¥@ª¹@Ð@§i@N›@žÄ@Å@'@@ ö@ê -@ÙØ@úˆ@ýÞ@Ê @X]?þÿ-?ýuZ?þ@‹ @œ¤@ -ÐH@ -J‰@Õ#@ø@!@ -¾:@¯@ hä@ý@¢ª?ÿhG?û.?ù?÷”±?öSl?õéî?öèæ?øz²?ù;=?ù_´?ú­?úá?ú§ì?ú?ùË?ù²I?ùŠ?ù$?÷¦w?õ©|?óôô?òц?òÀR?óoE?ô‡ ?õÁ¼?ö\?õÏ?õ}3?ôž?ó?óm?ôà?ó^2?ñÒd?ò’U?÷i ?ý›ø@)*?þð?ùbz?õ3z?òá{?ñ|r?ðÍû?ðàÐ?ðãß?ð°M?ðj´?ðç?ï‘S?ïWj?ïR?îw!?í÷Ÿ?í~Ê?ìŽä?ë^è?ê[ñ?éÂs?é+²?ç„?â°Ð?Þii?Þ õ?â:Š?æâŽ?é/Â?é©`?鈒?é__?é3V?èÓŒ?çïø?楚?åxÿ?äÆU?äâ¶?åÆa?æ’m?æÈÝ?æ¥E?ælŸ?æY¯?æx½?æQ°?åÒá?å®?åžt?å’o?å5¶?äÙu?ä–?ãöú?ãcX?ã'?âù?ãb?ã6Æ?ã, ?âýD?âÅb?â L?â³(?â|Ú?áÄb?á8—?àÆ}?à#‹?ßô?àvÑ?á?ሟ?á·?áŠU?àî?ठ?á©?áHù?á1K?á Î?á#—?áI¡?àøl?à~à?à“Û?àþª?àùh?àÍ?Þ»ª?Ý‘ñ?Ý?Üн?Ü‹-?ÜaF?Üp´?ÜŠ™?ÜÈf?ÜéÙ?ÜxÄ?Û²+?Û?Ú¡9?Ú|l?ÚÇ?ÚöZ?Ûæ?Û{?Ú£?ÙîE?Ù±‘?ÙÏo?Ù½F?Ùy ?ØùE?Ø.F?×­V?×¾ž?Ø ?×ýö?ײ?×ÅE?Ø?Ø;Á?ØIµ?ز?ןM?ÖI?Õqp?Õ(?Õj?Õú?ÕŽû?ÕÙ?Ö!?Öv?Õƒµ?Õb?ÔÖÄ?Õ&ë?ÕŒþ?Õ¨É?Õ­Ç?Õ??Õ ?Ô‡_?Ôká?Ô¬|?Ôâg?ÔÁè?ÔbÏ?Ó’è?Ñò?ΛU?Ç®×?½RP?³Ò)?¯ËQ?²?²?º ?Ãú«?ËPG?ÎÙ?Î9Á?ÎÔ?Ðk?ÑŽÃ?Ѷ?ÏÈb?ÎÚ8?Α-?΢)?Îë‡?Ï×?Îça?ÎPX?Í„û?Ì‹í?˵??Ë‘ã?Ì$Ó?̦Ø?Ì™‹?Ìdo?Ìd½?ÌyÆ?̧µ?̹-?ÌR?˾£?˯?Ëá^?Ëy ?ÊÏ?ÊÔë?˸œ?̲ÿ?ÌÞÑ?Ëøt?ÊàÖ?Ê°F?ÊÙÂ?Ê„Û?Éù¡?ÉŸ?É’0?É—l?É(«?È-*?ÆP²?‘?¾>?½<â?ÁŠ?Å+ÿ?ÇRN?Èb\?ÈÖ±?ȹN?È|ý?È=r?ÇÂÔ?ÇH ?ÇbÛ?Ǿ‚?Ç¥§?Ç/?Æ—?Æ å?Æ&?ÆJ,?ÆK?Æ Ã?ʼnË?ÄøV?ÄûZ?Åi¢?Å‹é?ÄúV?Ä!?ëé?ùd?ÃìW?ÃõÊ?ÃàÅ?é?Ãù? ®?ÁÆp?Â&V?Â…Ë?š?ˆ‰?Ât-?ÁÔ?Á/?ÀÙ?Àö^?ÁÇ?Á,î?ÀýÎ?Àvß?À ù?À!ü?Àò?¿‰˜?¿*Ö?¿¥?Àˆ?¿ê{?¿àY?À3?À*?¿²±?¿¼!?À Ô?¿ºÑ?¿#?¿ V?¿Žá?ÀyM?Á:?À`Ý?¿™ý?¿ 3?¿Ÿ)?¿MÙ?¾Õ?¾ù?½Bo?¼Wš?º7~?µÇ?°Û€?¯·,?³_d?¸ƒ?º¿ä?»p‰?»k;?»kI?ºøh?ºÀ?¹H‘?¸äu?¸ùt?¹¡W?º*i?¹­Ì?¹_?¸Í_?¸™¿?¸j0?¸Qÿ?¸ ?·˜X?·&%?¶…6?µÑò?µp?µ/n?´Â[?´Ð?´¶§?µe?µœî?µµo?µP?µÅ¤?¶.™?¶'_?µ²p?µ?´Šâ?´Wr?´P£?´9Ð?´B*?´«?³ª¹?³µ±?³ýª?³í?³u%?²öF?²ËÚ?²ê’?²ì§?²Œ—?²[?²˜¦?²t¶?±Þö?±Ì9?² Ù?±æ6?±~n?±Ì?°Ç…?°¦±?°–Í?°‡i?°Fð?¯êª?¯™?¯>?¯œ?®ûœ?®ü@?¯?¯Ý?®õ~?®¡W?®+V?­Ôþ?­„ -?­5¯?­ ?¬þd?­˜?­P?­–?­†«?­R?­CT?¬óà?¬…´?¬º?«ü?¬N.?¬€I?¬]­?¬.ÿ?¬˜?¬ -I?«Áý?«]×?«-@?«0q?«²?ª©Ù?ª9“?ªé?©þ¬?ª„?ªfa?ª”á?ªIù?©Û”?©S?¨—?§åc?§Ïi?§ýˆ?¨$?¨&W?§âŠ?§§?§lÞ?§0_?§"µ?§#u?¦ÔÝ?¦_¦?¦€b?¦×d?¦€ã?¦Ç?¦â?¦Â?¥ÿö?¥Ž¸?¥BÌ?¥M*?¥v¬?¥º?¥ŸÜ?¤ê?¤º?£«Ù?£ÀÝ?£éŠ?£ù?£šÈ?¢ÍP?¢I2?¢…·?¢ÞÆ?¢•T?¢(Ž?¡½}?¡ Þ? p-? 0T? næ? Îk?¡9î?¡Á¥?¡‚Þ? š? ‰?  ˜?Ÿá:?Ÿ·?ŸÎè?Ÿ¿˜?Ÿƒ+?ŸW²?Ÿ&~?Ÿ"C?Ÿ]\?Ÿ…£?Ÿ£®?Ÿ: -?žD[?×Û?ž¿?žH}?žpˆ?žgÒ?ÐD?EP?@ ?s?`]?4»?+‰?œä?œÙ#?œüY?œ§Þ?œBR?›éŒ?› O?›i’?›W=?›©Ð?›Ý8?›©F?›YL?›Wt?›_?šùs?š”*?š°?›#·?›_?štÔ?™þ§?š#.?šiÔ?šJŽ?š2Z?š^w?š{p?šEa?™ºô?™K?™…?™?˜˜ÿ?˜:N?˜î?˜¦?™!?˜É"?˜a?˜u?—‹w?—cÛ?—Š?—u?—o&?—w^?—ši?—°+?—¡i?—…/?—_Ø?—«?–ˆ?–T}?–“6?–§o?–±a?–¤X?–Ïî?—.Í?—–?˜4þ?˜Å?˜Rª?–ò˜?–fž?—-ð?—Ôk?—x–?–nŽ?•`µ?”ý.?•?”ÇÈ?”Cc?” z?”Žù?”¨E?”?Æ?“Í9?“k„?“AN?“7v?“u?“ ²?’ÛÚ?’² ?’Ñ•?’®%?’â?‘Ñþ?‘×:?‘œ$?‘Ñ?Å?ƒ/?>õ?D™?zð?¬ð?Êe?Ý]?œ±? ?ûn?%’?Î??2ü?Žíö?*?‰¬?¤5?Qi?"â?3ˆ?`?œ\?µ?ŸJ?Y ?}? -D?Žå‘?ŽgÚ?Ž\B?Žz?ŽR¯?Ê¢?0`?ŒâM?ŒÄ”?ŒTT?Š½h?†ÕÎ?€ -?qÞÓ?m„^?w¦€?ƒžÃ?ˆª¦?Š^É?ŠŸ?ŠœÊ?ŠÑK?Šøj?‹2¹?‹‰^?‹¢ ?‹b?Šé…?Š:Ÿ?Šì?Š*?‰ò²?‰Ýw?Š î?ŠV?Š–U?Š¶?ŠV ?‰ÓÓ?‰èã?‰ê¾?‰L?ˆ¼w?ˆ¿ª?ˆú??ˆ²?ˆXE?ˆ{§?ˆÌ¹?ˆªÄ?ˆb+?ˆ/?†îô?…#c?…fÈ?að°?aŽ)?a9ó?`í?`›?`^á?`NÂ?`Cd?`vL?`ws?` -?_©[?_˜Î?_Ry?^Ž??]‡]?\¨1?\yÌ?\¼)?\±"?\–[?\‚?\m -?\Aá?[ËÆ?[tÓ?[Zo?[Y‰?[Ä?Z‡"?Z]1?Z$i?Yœ%?Y3Á?Xìê?X«ç?Wýp?Wf!?WUê?W ®?Uê™?Rþ?N/Ä?L º?PO]?T}?Vp?Vëä?Vá;?Vÿ?WPä?W3º?V­?Usˆ?SŒ÷?Qæb?QW©?M6¾?DU2?@Ó&?Gë£?PÇÎ?T|?Tâ?SV?NýÁ?I?Gx?L‘[?Rlš?Ue?VÜ?V?VM]?P$1?Oö˜?O‚Î?O?N&?Lx—?J˜4?Góu?Ctê?<ƒ?0»?$¡¬?#v ?3y?GU{?P{?QL]?P ?NÛÈ?LüÁ?I{c??s7?3ÿ9?:Bw?E6]?D{?8Im?6 -ó?@¹º?Fª?GÉÏ?H\b?I%?IÐŒ?IÜ ?Hå ?Gfô?F<^?F‡[?GÑ?F«¡?F£B?Fý7?EþŠ?D±!?E,$?EÏ?Cߤ?D…ý?F®÷?G«Ê?Gl?F̪?EWØ?D“¶?DÍ)?Ev?EÀG?F=C?Ej/?CúÙ?Cƒ¿?C9É?AÔl?@¡Ë?@µ2?A;?AÀö?A›l?A@¢?A»C?ATZ?@,`?@ˆ?@ð‡?A>?A_–?A -??”œ?>û?=û÷?>N4?>[4?>^?=”Ù??2X?2]y?2:õ?28”?2G«?2M ?1ñ ?1XT?1*i?1?0•±?/ë5?/•û?/s1?/21?.ÍÄ?-Øì?,† ?+þ?,¹¸?-¿#?.÷?.ô ?.÷×?.íš?.¤?.yw?.ªb?.’y?.>?-éû?-f?-g?,Ó§?,þ?,|†?,¾½?-/d?-Ÿ?,¨#?,vÆ?,`b?,K;?,"?+Ø®?+s™?*øŸ?*Ÿ.?*yø?**?)^?(UY?'¨A?&´Ä?%?¥?$_†?$¨õ?%U?&hÙ?&üÆ?'?¼?'¨?'«;?'wñ?'›°?'ãe?'¸m?'6/?'~?'BÒ?&ìô?&R8?&<Ï?&ß&?&á? å?ŒA?£|?.?û?²?'6?#?7E?U?pY? ¹®? Æ·? @Ú? >+? Êú? ÅU?Sf? ñU? j”? Cò? µd? ? ¢ë? m? }d? ’ö? ¸Ú? Kù? ŸÄ? †,? Oü? ©? íÝ? ¦Ñ? u¹? ØO? Ù6? à? ª%?UÞ?qì? &Í? X‡? Õ?äÛ?¸á?RŽ?¨[?L—?) ?<?(y?è•? ¡»? -GÄ? -“H? -us? -9? -©? Ð=? vƒ? v7?O?Ÿ?äç?!m?&‡? \Û?F‡?ct?"š?#ÞÀ?!”±?_?LL?øê?;»?°r?x? NÖ? Aï? -ä¡? ÎÐ? 3?*?qø?õð?™í?Rl?õT?“‡??×?úÀ?ó†??Õ??çi?¬Ÿ?ÄÁ??C?û®? -–?×Ì?Æ -?Q?ô±?±?„?f?—b?»r?yQ?#F?ã’? .?D¸?7'??øˆ??D?ßp?:!??hX?‘£?sÄ?9¥?Å?? +?’?_À?ƒ²?Ç…?€è?µe?G?ù?™[>þˉ>û£C>ö™>í&Ù>ç†L>ë >îÐj>î ½>>õ~™>úAÔ>üL >ü†À>ûŒÁ>û"!>üCÊ>ý1 >þ?7?à£?9Ë>üS?>ú‡7>ù÷>ù¯ä>ùL«>øç >ù%Š>ù¼ž>úx >úðE>û/>û™µ>úg]>ø²Ö>øJÜ>÷¿b>÷<>øžV>÷“>õ>ô¦>ô½_>ôcv>ô„y>ôéú>õˆæ>õxx>ô@Ë>óW">òå]>òÒZ>ò¡>òÂ>ò96>ò8>ñöü>ò.¸>òz>ñ¦->ð¡Q>ðzG>ð\R>ïу>ï¼$>ðÕ>ïèf>ï®E>ïv>>ïF…>ï ->îƃ>îƒÍ>îa4>î-,>íé >í«—>ípÞ>íG0>í>ìÈx>ìÈ>ìgT>ì?8>ì<Ð>ì>붤>ëœ>ëcT>êø7>ê²Â>ê|ÿ>êE2>ê$>éÄ›>é‡ú>éM?>é¿>èæõ>è´>èƒe>èQÖ>è>çèj>ç·9>牊>çjâ>çaÀ>çWn>çD>ç1Ì>ç>æê1>涼>æ‚n>æl>æbü>æO>å¤?>å]>>å6õ>äñ\>ä–†>äl×>äMu>ä»>ãØÔ>ãrÔ>âó)>â ‰>â œ>ἂ>áä;>á”2>àÞÕ>ßÑÿ>Þê>Û>ÖR²>Ðyi>ÍÜ>ÑM>Öàÿ>Úî>Ý;_>Þo¬>ß¾>ß3>ß*—>ß>ÞÒ2>Þžš>Þy—>Þfß>ÞE>Þ&>Ýó0>ÝÈ×>ÝœŸ>Ýkr>Ý9/>Ý >ÜÏà>Ü{X>Û×Ý>Ú÷>Û:X>Ûóh>Ûþ'>ÛÒò>Û£@>ÛpÓ>Û:k>Úý®>ÚÁý>Ún>ÚW>Ú"!>ÙîG>Ù·/>Ù‹>Ù]‡>ÙB×>Ù+>Øî>ØPm>×ÝL>Ø@%>Ø>>×xÐ>Öð¡>×W!>×`->Ö¢³>ÕÜC>ÕîG>Õ¹³>Ö]>Ö¯Z>Ö>Ö‡ž>ÖaU>Ö<>Õ%>Ô´>ÕaX>Õ‡~>Ôé5>ÕÏí>ס~>×Ì»>Ö¼x>Õ¡Ü>Ôí >Ô«â>ÔÇa>Ôï%>Ô©_>ÓZ4>Òûð>Ô -Z>Óì>Óö>ÒìQ>ÓŽ>ÓI*>Ò_0>ÑøÈ>ÒO‰>ÒMô>Óy>Ô‡ó>Õ,>ÔE>ÒÒŒ>Ñx·>Ђ´>ЛÁ>ѱÝ>ÑÂç>ц%>Ñ’Ë>Ðó>Ðt,>Îh>Êç„>Æ9þ>»[;>¯¥ >µ)÷>ÅCA>Í „>Íû7>ÍøÔ>Îh>Í>ÊbC>ÊŸ•>Í6>Íýº>Í°4>ÌÂú>Ì 0>Ìи>ͦr>ÌÐ>>Ë>ËM >Ë?>Ê,H>É°>Ê'->Ê|ô>ɇ¹>É÷÷>Ëog>Ëg–>Ê2ã>ÉY:>ÈÊ>ÈXW>È>É;º>Ì$å>Ì¢î>ÉS@>Ȩ>Çã>Æb>Ÿ>>ÅO€>ÄÊ{>Ä\ ->Ä·>ÙZ>Ã+,>Ãf>ÂÕ¶>Âl«>Âx>ÁÖî>Á‹æ>Á>—>ÀñÁ>ÀŸà>ÀaÐ>À8ì>À >¿ç.>¿Ã”>¿u<>¾Ý9>½æk>¼I¡>¹i >´V<>­‹o>ªj#>®µž>µ2Æ>¹ >»Å<>¼ö9>½¯æ>¾*ã>¾[>¾0d>¾>½î+>½ÑÃ>½«G>½{¬>½G­>½ ý>½=>¼ëÿ>¼ö>¼ZV>¼(÷>»õ>»Å™>»”'>»b>»2 >»v>» G>» ê>»^>ºê">º¿÷>º•y>ºfÅ>º0h>¹üà>¹ÑD>¹ŸÜ>¹f>¹%5>¸´k>¸6x>¸9>¸'z>·ç?>·¥è>·g->·,4>¶÷#>¶Ä{>¶•>¶gš>¶9E>¶>µî¬>µÏ">µ«ä>µ|—>µI1>µP>µ2Û>µšJ>µRö>´Øx>´¢>´{­>´^ë>´6N>´N>³Ðú>³¥D>³€M>³T´>³Ê>²Ý>²þÙ>´k˜>´‰£>²îÙ>²ŽC>²[Q>²á>±×ž>± ¨>±cŠ>±*Ô>°÷¡>°Áw>°ˆ‰>°KC>°>¯Üï>¯¡:>¯:Ö>®³}>®Ê„>®ä¬>®ÀÓ>®–õ>®l—>®A+>®Ë>­çô>­À>­´>­‘¦>­bŽ>­f2>­PÈ>­ -Ù>­3Ã>­_v>¬¼">¬“Õ>¬é>¬ -‚>¬a>«Ü¶>«¨X>«‘ >«PÛ>«^>ªð®>ªý,>«>ªê>ªª†>ªÙ->ªRÄ>©Ò½>©°¿>©1M>¨e>¨Bå>¨>§É>§ !>¦oÀ>¦å>¦˜(>¦cM>¦O ->¦Äq>¥ò*>¥$>¤éX>¤½Ý>¥Oû>¥z¡>¥[ ->¥Ýð>¥r†>¥(‹>¥f„>¥hÓ>¥¨ø>¥µ•>¥©>¥Ý>¥Åü>¥m/>¥(;>¥¾d>¥ùq>¦ i>¥¥9>¥Z>¥ ù>¤•>¤P>£À>£I÷>£Lª>£qR>¤"J>¤'f>£.ø>¢§>¢Ìv>¢=O>¢TÂ>¢pŠ>¢¹@>¢ë<>¢>Ú>¡Îv>¡N>¡Q‹>¡uæ>¡h/>¡N¹> È> ˜ï> ®±> _ô> …> l>Ÿ¸b>ŸÎÌ> B>Ÿ±!>Ÿø>žá >žÞÃ>žÇ[>ž»†>žs‘>žK—>žI:>ãH>£º>+>A2>.·>#³>z>œâõ>œ¾#>œ¹É>œ¼M>œ²Ç>œ•>œ‚w>œ]Á>›åƒ>šôÆ>šF>™B(>˜ìƒ>˜È}>˜£ò>˜…€>˜eä>˜Që>—ðÌ>—0‘>— ¦>–Ç|>–N±>•Ø¦>“Ì0>N>ˆ;·>ƒbG>†f¾>æ>‘>“¿!>”ØN>•^Ž>•œŸ>•Ãí>•ÿa>–!>–mç>•ßu>•_*>•FÂ>•+e>•ø>”õ4>”õy>• >”Ëþ>”Ÿ >”¿z>”F>”ü>“ñ³>“ô©>“áõ>“­Ñ>“‡J>“f->“>ë>“>’éu>’×´>’Ñ»>’¯ð>’†>’`Q>’6>‘ù}>‘¹O>‘¤ï>‘(9>àƒ>‘>‘*.>‘Ô>ÿã>Þ³>¾þ>›>dö> Ã>Þ>ð\>Õ?>©7>ƒ>^Ý>&>ŽuM>:>Üf>Žoô>ŽYI>Ž^!>ŽšE>Ž¨>P>Œý[>·>’9 >”t>•ÕÔ>’o2>Œ<¥>‹¼>‹ ¢>‹y>‹Q¹>Œ¶>Œ¸¼>‹¨>Š¬>Š‚->ŠmØ>ŠŽc>Šfï>Š@ª>Šd‘>ŠU>Š ·>‰é±>Š?½>Šd’>Š9†>‰çS>‰§B>‰WÝ>‰>ˆÈO>ˆœÚ>ˆ¦˜>ˆœì>ˆÐ“>‰9Å>‰bÏ>‰ ->ˆ½»>ˆÅ#>ˆÆP>ˆ×%>‰I>‰Ô>‰¾µ>‰®>‰Dž>ˆ¢F>ˆš3>ˆ¿s>ˆŒ•>ˆ‰*>ˆ­,>ˆœ©>ˆ!‘>ˆ$+>ˆ‡N>ˆt~>ˆ¹>ˆo>‡È;>‡>†¥¸>†©:>†Ðv>†}m>†ô>†„>†žM>†¤Í>†¦Š>†2ã>†Cø>†ª>†Œ'>…âm>…>„Ô}>„ñ’>…>%>„y¡>ƒ@W>‚\ë>ƒæ>„o½>„WÍ>„8%>‚ëO>ûg>ƒàü>ƒ×¦>„y/>„«»>‚6«>K>3>b>|e‘>xëˆ>y]>G3>€j¨>y¤¢>~ÉG>‚ôn>€ìa>y¹M>}’¸>Q{>r>|ó[>}Ŷ>|xÃ>}ÿë>€P>( >|oU>xFŠ>~”…>vœ>‚´H>‚²Ë>ñ0>—>ßz>€õS>T>~vG>~þ">}±>~ë<>M˜>}|>x9É>r›š>qpÅ>uZé>|Yn>{óp>zrï>xáx>xè+>zN±>{P‰>{l>zAÏ>z£’>w.b>yP>|tð>}ÎØ>|‚>{u”>z£">w/œ>pO8>o?Ø>u»0>woÏ>pÓ>l®]>uá)>sã>p ->v­i>xlX>vËä>s½f>n°¼>mÖp>ns>mhÝ>qÓR>s^>qB»>pÉè>r|:>sã›>s{ >nú<>mSØ>pâ ->rïi>r¢ü>qé*>qäò>r÷…>s?Ü>qÕý>pÛh>p)“>p@ù>pÚõ>oMu>n>]>o& >o -$>nâ>>n£>n7i>n5->lö >lÃ>m;«>lüO>lµ'>lÑ>lX¬>k‘ñ>k(÷>j×È>jÍ>jG¿>j>i¼T>i|³>iD>i -”>hÂZ>hv¤>h@>h/>gÀh>gZù>g -{>fHÑ>e™4>eñ‹>eî/>e·>eŠl>e]e>e#£>dçf>d´)>dy›>d3{>dý>cѼ>cÆ >d*E>d¸»>c©£>c˜>f,Ø>fq;>cß>cà>eg>eX>bXØ>aí>b$›>aB>`È>`Ë­>`Ï>`ή>`fF>`$">a¢>i÷B>i{ï>`Ùƒ>_Þ>^Ôž>^°>^…>^M)>^u>]Ñ£>]‹|>]8—>\Ù>\p9>\J>>`2µ>eŸ1>]k‰>WÕ®>US±>LqY>?1>;Û">FSÀ>OÎ>Ts>VÎ8>Wú>XŒ|>XÒû>Xäö>Y‹q>^%+>_¹¿>Zì¦>XËy>X„>Wß4>XHò>X>ñ>Wˆ¢>V›(>UÒÛ>V–ï>W]Þ>Xó¶>[öš>YB5>XÌ'>Xpþ>V£ò>TÛ0>SWÁ>UP\>V8å>SÈ¥>R%>S ó>RÍ>R©>Sø“>U >S”a>S@¦>Tíc>V1W>W—>Um>S™Í>Sy>SQô>TÒ\>T¢í>ST§>Q¶[>OÙ(>O+Ò>O &>OŒ>ME*>MÕ>O ä>NÖY>N’>OêT>MöO>KîX>KÑ>J‰Ç>K´À>Nn¿>Nxb>M¸¬>M^ >KØb>JÅq>JƒÜ>J;Ý>K-@>K-„>JhC>LQZ>M*Ì>K®ª>IQQ>I¨Û>I+>J–>J–>IÀ >HÌ$>Gðâ>G[>GI>Fô>EW>EÙz>F_ù>Fy>H‚ >Hp>F.ô>Eeü>Dî>DOi>D¾Ê>Dµ>B´ç>BÇ?>C¸÷>D’>CŠY>EÎÞ>FÃ->Gf;>G>Fð,>E—‚>E>DŸÿ>D()>A:é>@uÑ>AûI>C¡‘>D>h>D€Õ>CUš>BÈÊ>Cl>Bú>A;3>A­d>Bi“>?Ó`>=Úå>?k>=Øû>8©F>3úD>6œ>:»>=JÈ>@e›>Aé¾>@Ÿ5>A8>B >@à >@=|>?©¯>>Ÿ{>>{>?›ž>?„m>=ŽÀ><«»>;c&>;˜±>:®>6Vi>3µr>3zœ>5£z>8<É>:4°>:¹h>:5><¦@>=·m><ÑÑ>:Ìb>9f>:?d><¡>;‡s>:à>;Û>9ò>7s>5GD>5O•>7?4>7Õ>7#œ>5«]>3js>.•”>+ï1>,¶î>.‘¥>1æµ>4ö÷>8Vå>9Úw>:u5>:Z=>7zø>5»m>4Ä?>4Š³>6d2>6›>6di>6'(>5!>6ñâ>8“>9(>8œå>82Y>6µ”>5’Ü>5‡=>5%b>3ì>2z>0ÑM>0">/ý>* ¹>&(¨>$k`>&G¼>*´Ï>-§q>1®>37>2ñ[>5f>3Ô>1½µ>2€P>5 Õ>4%F>20ú>/Q>1E>2@t>1–ç>2ŸJ>3S >3à>1î>1æ×>1þB>.L>1£ö>4è>4Ve>3yX>1Ôq>18j>2›>26÷>6@A>0¦U>.ŸÛ>,ÓH>+k>+½|>(ˆ‘>%çü>#‘˜>]d>šd>!Ç>']I>+Z@>,Ç>.-¡>.• >.€ã>,O>,3>.¶>.Ï>-ÖØ>,¨>-S1>.¼>0\>0¨Û>/n >.E>. >-“€>,|á>*°.>*ˆ>+K8>+>í>-2>,£§>-q>*•@>+1ƒ>+E*>*Ü=>+›„>*¹½>)_>&ê >'éø>)‰^>(ît>&´7>'E>(3Ï>'Ü>(+Ç>(ø>'Îg>(6P>'µ>&XC>$ºÙ>!Bä>;È>¢j>‡U>uv>T> m>"{’>#fR>#–¶>$Š0>$°E>%(Ö>%Þ»>&c!>&FÝ>&r£>&a9>&bÂ>&N¬>&L>&AG>&ˆ–>&ž'>%ìe>%¨³>%™¤>%›Ú>%Iã>% ">$Ûµ>$¢n>$kT>$:´>$²>#üÂ>#åÁ>#Á+># ç>#™w>#oY>#J;>#2]>#m>"öÉ>"ÙË>"¾ >"´Š>#ÌÐ>%=–>#y>"K>!ò>!È[>!œš>!sJ>!G>! > á…> ·Á> …¡> O&> £>¿™>y;>2m>Ðñ>P>Ì>Áø>®!>@?> œ>€Á>¾>áb> •¾> ¢ ->eS>ï>¥î>Ãh>@¼>G˜>ÿ{>­G>J>þ~> -}>W>ð>Á>^>ô|>Þò>Êo>®×>“Æ>u¿>r>õ¶>#> >Ø>³q>ª>f´>C;>)1>û>Ù×>®>>xÀ>I¯> >å²>¯>r(>.R>ãô>²8>®;>’>mž>IG>ïP>L>E¡>>.>+¡>m>j>Ø*>X‹>“>²X>uý>T˜>4ü>ú>ó¬>ͪ>¬%>‹v>kŒ>L>)Á>Ê>†>ù>¦&>y>/£>êK>ÿŽ>²>7<>Õb>q·>C1>B>åò>²l>wi>9µ>øÂ>²>`é>ù1>WŒ>‘g>M²>Ò> ;$> •‘> s°>pÌ>®”=÷”f=õ(=ýÏþ> i>¶Â> -"õ> °°> Ú»> §˜>#>QÃ>zå>’±>¤>žÕ>˜¬>a>zÚ>e|>O>3æ>n>r> åø> Ê}> ¯X> ‘$> k‘> Qa> 6Õ> »> õ½> Ø›> ¹K> žf> ç> eü> ;¹> ÿ> þH> Ö°> ª¯> ‚:> d> E?> -ä´> -«ˆ> -né> -É> r‰>£>6>‡ª=þWˆ=î“+=æŸÃ=ðá_>;k>ƒ­>g¹>š>õ>8Å>ET>§>ú>H>>Ué>rW>„À>‰¶>… >‚Á>}Â>k™>Wo>FO>)~>0>êr>/ >Ð>•>½ö>´ˆ>7È>DÒ>ç>øj>Öò>w>*4>l>bO>Dû>&ˆ>•>ë4>̪>«>…>`'>3k>½¡>¾¯>[¯>÷`>ôR>Œò>W¹>O…>3¼>™>õŸ>à}>¹¸>^>d>&Ö>D=ÿ¹Ú>&®>›J>µ^>¡¨>}ö>Z8>5Ô>~>éJ>û¶>>>Jò=ÿ{Ù=ÿz‡=ÿÑ=þOT=ýT=üQ³=û?=ù!h=öz=òÍ9=피=åîÿ=ÙëP=Î¥}=ÑŒ}=ÝòÑ=ècS=ï%5=ójg=ö"=÷çè=ù3ý=ú£=úŒ=úYE=ú…)=ú½T=úŽŒ=úm=úQ=ú$º=ùþf=ù×j=ù­ì=ù=ùT=ù$>=øðŽ=ø¼º=ø—=ø]^=øÒ=÷æ×=÷·¤=÷„=÷JÒ=÷=öæÈ=ö²Ý=ö¯1=öXô=öÈ=õÙy=õ˜¶=õeÂ=õ2G=õ¶=ôÔS=ô¡=ôdÃ=ô/Ã=óÿ\=óñô=óÆü=óX=óã=òêö=ò¶O=ò’=òH/=ò)=ñï6=ñµð=ñ€=ñM=ñ=ðßî=ð§ =ðlá=ðCA=ð`=ïú=ð+=è{k=ç…µ=æG£=å ˜=ä<±=ä -÷=äke=å,,=åóR=æ‹c=æð€=ç+‘=ç&a=çj=çi=æüš=æé¦=æ»Î=æ‰ê=ænq=æNÏ=æ=åÎñ=嘧=åP›=åX=äù=äÜW=ä¨?=äe=äð=ãí=ãϺ=ã›·=ãeô=ã4×=ã1=âÇè=â–A=âl =â23=áû•=áÊ–=ᙃ=áge=á5§=áy=àçÔ=à¸7=àfÍ=àB&=à‡=ßÔã=ߦ =ßl9=ß>w=ß³=Þä\=Þ£•=Þl =Þ4–=Þ1=ÝÐ!=ÝœÝ=Ýk†=Ý:b=Ý Ú=ÜÕÃ=Ü¡ò=Üo`=Ü;Œ=Ûùú=ÛC÷=Úñü=Û\“=ÛD=Û•=ÚÞ=Ú¥ñ=Ú[f=Ú<ƒ=ÚR=ÙãÖ=Ù´ž=Ù„ =ÙS\=Ù O=Øçª=Ø­=Øv€=ØE+=Øs=Ø$ =×ä)=×…Ü=×RM=×"X=Öý=ÖÔ§=Ö„ê=ÖMî=Ö"=Õéò=Õ·é=Õ„ø=ÕQ=Õv=Ôìq=Ô¶—=Ôu=Ô:Ä=Ô?=ÓÄ´=Ó„ç=ÓA¼=Òø3=Ò§=ÒJ=Ñâ;=ÑkÇ=г=φ=Ïp =Τ•=ÌÇ=ÊžT=Ç–*=Ã:`=½£=²¬¾=¥‰=¥"É=±^=¼ž=Èâ=Ç­ü=Ê''=˧0=ÌŽ©=Íø=Íp=ͧ=ÍÐ=Î O=ÍïÚ=ÍÃÐ=ͯH=Í–ò=Íxÿ=ÍYÈ=Í5±=Í =Ì×.=Ìœ¬=ÌZ=Ì=Ì =Ë* =Éɇ=ÇÙ=Å"å=¼Û.=¯îÈ=­Ç»=»• =Ä9=ÇÄ¢=É$w=ÉÛË=Ê;™=ÉõZ=ɽÖ=É•:=ɉ·=É¥?=ÉWÒ=ÈýS=ÈÈÓ=ÈÏ=È\Ñ=È»$=Îxv=Í|=ÇòÄ=Ç_F=Ç:=Æà+=Æ¿Œ=Æ‘Ì=Æqs=ÆG[=Åþ¼=ÅÍ‹=Å¡¦=Åm@=Å5t=Äøþ=ÄÉl=Ĥª=Äx[=ć=ÄÌ=Ä=ÃÚ=ÿR=Ã=ß=Ã=Âý¾=ÂØ =¶A=‡;=ÂX^=Â/Š= '=ÁÞC=ÁÚã=ô=ÅÜ¢=Ädž=ÁQc=ÀÓj=À¤Ñ=À¢ -=À¤E=À ,=¿âa=¿¼È=¿’`=¿fÝ=¿=C=¿š=¾ó•=¾¿=¾‹„=¾Mé=¾/”=¾ $=½ß`=½´í=½‹³=½bÓ=½£=¼w=¼[º=¼µ=¼°G=¿«b=Ák<=¼¦F=»ß=»³×=»Š=»a=»4O=»6=ºÚp=º²[=ºz=º]ô=º:-=º?=¹Ûß=¹·8=¹ˆI=¹{÷=¹ø¨=¹ù×=¸æÝ=¸£~=¸~V=¸V´=¸ r=·õ=·Ë/=·šá=·eG=·8Ê=·p=¶»»=¶c)=¶ž=µ¯È=µë=´Qß=³>T=±°Å=¯•y=­¬=­3)=®D=°)®=±¯ý=²•Þ=³ Æ=³n¥=³“!=³žN=³˜l=³…é=³jk=³`=³Q=³=‹=²å‹=²¿¢=²šƒ=²u=²O5=²(î=²œ=±Ù¼=±ªÕ=±(=±Z¡=±3Ö=± ·=°æY=°¿i=°˜À=°rƒ=°N*=°'=¯ù¸=¯Ë¨=¯¤L=¯}¹=¯V@=¯//=¯ _=®åÕ=®¿Œ=®™Ì=®uÃ=®T_=®E =® ]=­ÕA=­ÔÑ=¯Á=°Ê=®ø=­Ñ5=¬ñ‰=¬Âå=¬‘ =¬Vg=¬C=¬l=«ó¬=«Êä=«¦o=«€f=«X¥=«2L=« =ªä¿=ª¾œ=ª—¿=ªjì=ª@ù=ªO=©ò”=©ÌÍ=©¦§=©€ê=©[Z=©5‰=©=¨éÏ=¨Äk=¨ž,=¨o¾=¨Fÿ=¨!v=§ü=§ÖŸ=§±%=§‹Ø=§fs=§AJ=§ã=¦û=¦Ø„=¦Ç =¦…==¦Y]=¦1=¦ )=¥çY=¥º‡=¥]=¥zu=¥V=¥-á=¥|=¤Ú%=¤³h=¤í=¤yš=¤Œ9=¤8ð=£þD=£Ù³=£µM=£‘7=£l=£AÀ=£Ô=¢ó=¢Îý=¢ªè=¢…ÿ=¢T³=¡üÓ=¡Ûé=¡Û=¡Ì!=¡¯L=¡s=¡Sþ=¡:|=¡= ô= Óv= º>= Y= e¦= C™= 3d= `=Ÿ¼Ÿ=Ÿ›ã=Ÿˆë=Ÿd=Ÿ=Y=ŸÙ=ž÷Ñ=žÔ=ž²¹=ž‘…=žq=žLS=žß=í(=w,=rÄ=‹ÿ=kæ=IE=&­=ï=œá¡=œ¾²=œ˜Ø=œLê=š£»=š¦µ=›à{=›Ôº=›² -=›Ž‡=›kN=›G¥=›$o=›7=šÜé=š³C=šŒë=ši=šDå=š ×=™ûž=™Õò=™´è=™7=™hÖ=™B/=™=˜í²=˜ÀÅ=˜–=˜ji=˜9ç=˜ Ö=—Ó=—”=—LÃ=–í=•Ïj=•è=–>Æ=”ë3=“‡w=‘ãS=†ß=Œ1 =ˆ£=€ßO=ks€=hËR=|¨=‡« =Œó=ì™=‘¤a=’¬¬=“N>=“«.=“ã¶=”=” =” ´=” -=“ù…=“ÆÈ=“®x=“¦¡=“Œ -=“€ü=“gå=“Kô=“9=“4¬=’ûÀ=’Ó<=’´?=’‘²=’o™=’fM=’8*=’ ç=‘í=‘Í¢=‘³æ=‘—=‘nv=‘MÁ=‘.C=‘ {=æù=üÿ=‘ $=—Ê=m =\C=8m= É=ëÔ=É–=©=‹S=f"=DË=$Ö=f=Žåà=ŽÆw=Ž¨M=Ž†Ò=Žc+=ŽB=Ž"]=Ž>=ç¸=Å"=£­=„ -=c=A¨=~=4=ŒÞl=Œ¿L=Œ¢7=Œ‚ =Œ^¿=Œ<ï=Œ 0=ŒF=‹á=‹¿y=‹¢¦=‹ƒê=‹c}=‹BÕ=‹*0=‹Â=ŠâÉ=ŠÃ=Š£à=Š…+=Šf]=ŠF¥=Š%b=Šr=‰èÊ=‰Å3=‰¤P=‰†0=‰hÉ=‰K@=‰*Þ=‰ ñ=ˆìò=ˆÎc=ˆ²Ï=ˆ’’=ˆm&=ˆO—=ˆ1ô=ˆn=ˆ‡=‡Þ÷=‡·{=‡3=‡T=‡Sh=‡<=‡Ì=†ø|=†Ú„=†¼Ñ=†¢ =†„=†\ˆ=†<û=…ãM=…Û•=…ð5=…Ñ=…©=…ŠT=…l}=…Nù=…1=…=„õÆ=„×=„µ´=„•œ=„w=„Z‰=„:ë=„Y=„.=ƒå‚=ƒÇ=ƒ’›=‚ù9=ƒ.á=ƒJd=ƒ2O=ƒï=‚ôL=‚Öò=‚·W=‚—&=‚†=‚cA=‚&‘=‚D=‚s=ç=Ês=ªÜ=‹=nm=Q:=3t=-=€õ×=€ÛY=€¶3=€8K=€9 =€de=€G==€+l=€"=ÇÄ=z -=jl=2_=~òP=~·Ä=~~¼=~J=~¹=}Ó“=}˜Ö=}_Æ=}$#=|äâ=|«¡=|wB=|?\=|å={É={M={X¼={ ³=zèb=zªS=ze“=z#+=yò§=y¾¥=y‡:=yNÎ=yÚ=xßã=x¥Õ=xj=x4Ä=wúá=w¿[=wˆÉ=wQG=wq=vøã=v¯y=vm±=v1=u÷*=u¿=u‰7=uPu=u™=tãÍ=t­a=tq£=t<Ñ=t{=sÎñ=s›N=s{,=u=u/’=sNð=rž”=rF=r*=qÖx=qœ=qoØ=q2à=pêå=p¯=pp=pCI=p“=pת=o¹ý=o ï=n¦ñ=n8¶=mœ|=l¿0=kŠþ=i¨=fut=`hÂ=V-=MÏ=I¬ó=S8Ø=_=e}=gèQ=i€=iè0=j5›=j7=jÏ=i©˜=iw=h6Ù=f¼=d6=_Äõ=Z/Ü=W£=YZ‘=^¢Z=b¹=e‚=f7ü=fÖ3=gy=g0m=g'm=gC=f÷Ä=f×Z=f²Õ=f„x=fT·=f#»=eòï=e¼µ=eˆ =eU3=e"Y=dï—=d»Ó=d‰©=dWu=d%a=cñ…=cÔÝ=cš=cV=c$ø=bðï=b½”=bŠE=bR‘=b ð=aì -=a½=aŠÄ=aXÝ=a#­=`ñ0=`¿_=`Ž=`Z7=`%=_õ-=_Æú=_–=__=_,(=_M=^»þ=^m=^b=^2ÿ=^)=]Í9=]šo=]iM=]<=] N=\àö=\¸*=\–Ò=\¾ï=\b‘=[é‡=[¹Á=[=[]¬=[(è=ZâÖ=Y5L=Yq=[º=Zz”=Z¬~=[¨=Yà=Y¤§=Yv=YLÝ=\¡=w‹ß=m#^=Yqx=Xiø=X"‡=Wä¸=Wª“=W˜û=WÈ=W q=VÑñ=VP=ViÏ=V6=VŠ=UÍä=U T?¸Ñ7?¸18?·¯ý?·’ˆ?·Ò?¸*ì?¸ZÔ?¸I5?¸€?·®Ï?·‡?·î ?·Îã?·‚?¶àì?µå¨?µï?´×^?µT?¶tØ?·%¦?·u?•U>?”6Ü?“ûW?”¸­?•ôÖ?—Ý?—²c?—ôÙ?˜ •?˜J?˜g?˜ Ò?—ï½?—±j?—Y]?—]?–Çü?–µs?–Àz?–ÓÇ?–á?–æi?–ç?–ã…?–×V?–¼?–‘Ù?–c¡?–;l?–o?–À?–0Ð?–R\?–SÖ?–,e?•ôŽ?•È:?•°Ó?•§"?•Ÿ$?•Žp?•qÚ?•UN?•K‰?•Ua?•_?•ZÅ?•>¼?”ù ?”Œ ?”8?”Kö?”²d?•ä?• (?”Â)?”^•?”?“ÐÔ?“­?“‹à?“cæ?“2Ý?’ùß?’¸p?’gŒ?’Á?‘±S?‘¦¨?‘çØ?’/†?’Cc?’%C?‘ó?‘ÁÈ?‘–à?‘nØ?‘IG?‘-#?‘#¤?‘3ô?‘\^?‘„¿?‘…ª?‘PŽ?‘ ”?ú£?‘8·?‘™Y?‘æ­?’#?’À?’?’«?‘áË?‘}?úÇ?˜ÿ?…?·œ?‘A?‘>%?‘_?‘\¨?‘/?ëÀ?´Ë?­?Ö~?ÿ^?óÑ?ª?2?ŸF?7?Ž²?Ž«?ŽîŒ?R"?³o? -ä?Xñ?—3?Â?Ò?¿?™¡?~Â?kb?F?+?óó?Ä?i_?Žç~?Ž:‚?_s?Œ‡?Œ,?‹ý¬?Œmg?ŒúŸ?=Q? ù?Œ•¥?Œû?‹Ã¾?‹qD?‹p?ŠºÊ?ŠkL?Š•?‰Ÿ,?‰!r?ˆË -?ˆ®?ˆ¶M?ˆÌe?ˆâ?ˆÓ?ˆ~l?‡öö?‡SE?†‚%?…uÏ?„D¦?ƒ7­?‚ÄÉ?ƒ.­?„.é?…%©?…¡?…±˜?…¨*?…¤"?…‡?…<™?„éM?„Åò?„ÔX?„ÞA?„· ?„K5?ƒ¦§?ƒW?‚ÌD?‚Öo?ƒê?ƒ-Ê?ƒ3Ù?ƒ8?‚²¬?‚n6?‚y^?‚ÀŸ?‚ÿ?ƒ y?‚×Þ?‚€?‚'\?æ?À°?«Ð?l¼?€¤)?~–À?{üì?{Í?|Š -?ž(?\ç?‚ej?‚Ø|?‚Ë?‚eÑ?ôŸ?¬`?à?Ži?î?~?zœ?¯X?‚(Ý?‚³ê?‚ù ?‚ä¶?‚¿9?‚Ç3?‚øž?ƒ0Ÿ?ƒK±?ƒN(?ƒe®?ƒŸË?ƒ²ü?ƒAÛ?‚`1? D?ž?‚=ê?ƒB?„!Ü?„¨¨?„ð˜?…(g?…^œ?…–x?…ïË?†z"?†ù!?‡)æ?‡ 2?‡&×?‡i?‡É©?ˆ ™?ˆ ?‡ÔC?‡mz?†´>?…^Â?ƒ‹Ð?‚6€?‚”€?„¸Ê?‡\¼?‰Qâ?Šyß?‹J‘?ŒÒ?Œ”2?ŒÎ:?ŒÒ??Œê.?;q?³?Ž):?Že?Ž½z? ?:?0Ñ? Ò?ñò?‘o -?’÷?’iÚ?’|:?’?“ D?“ò?”Ì$?•f?•ì?–hY?–¤ã?–y"?–!ü?–:ú?—y?˜q?™«î?š‰y?›2á?›Üm?œ|‰?œî*?;a?Ÿ?ž7Ó?žãf?Ÿ’‚? c?¡3t?¡ºœ?¢µ?¢»c?£Çï?¤ØÐ?¥ý?¦…?¦šµ?§*.?§†ˆ?§Äs?¨Y´?©~8?ª§h?«·?ª¾7?ª$n?©¿Ê?©š ?©§!?ª Î?ªÎ¬?«½ê?¬ãÅ?®ì?°Î?²ÿ)?´Ú?³+ß?¯·Ê?ª±?¦«?¦'?ªö&?±h2?¶Çl?¹y1?¹Zy?·þ?³æå?±lg?±Dö?´-?¹n?¾Îk?Äxõ?Èíy?Ë"Ö?ÊÆ ?Çí“?à ?¾ ?»òË?¾‘…?Ä{\?Êvº?ÎYƒ?ÐAû?ÑÌ'?Ô[?Ö¼Ÿ?Ø0h?×\'?ÓâZ?Î$?ÇƳ?ÃÙt?Å0[?ËÃk?Ô}?Ü3O?á®0?å?ç ž?è·G?ê7%?ë\ê?ëñ¤?ëÑY?ê§Ó?èrn?åW?ß=?×${?Л?Ωx?Ô”¤?Þ,{?åÛâ?èÝ´?茼?çY?æ~?ä]?âZ5?àˆ ?á’ú?èE_?òÛ?üB@³R@@&½@&¦ç@&ªá@&šT@&œ@%2½@$¹ð@%Í@%Ì@&,„@&8è@&ŒT@'XJ@(0ú@(» @(ö™@)¬@(ø@(â•@(ãÛ@(¼3@(9N@'ˆÈ@&Ão@%´N@#ºŽ@±*@­w@Žµ@ ¹@Á,@ ÄÀ@^@½‰@#ü@&Õ@(U¦@)%’@)·—@*%â@*CË@*å@)ïe@)åO@*u@*Ní@*¬@*ñ{@*ð @*¥¡@*o@*r¹@*g?@*/u@)íÔ@)­N@)‚®@)Œ @)º -@)á‘@)Åê@)XZ@(Æ@(!×@'wg@&Ú¯@&Ÿ@%@$×@#Þé@$ -å@$J@$âÆ@&«@'ns@(@º@'³l@$x@ˆ‰@7@$Œ@"|@&Â|@(ª°@(éc@(ˆ¯@(0@'õ@( Z@(@'¿€@'Jž@'@' f@'1 @'Q@&”3@&4„@&@&E@&R@&ò@%±@%q@%a#@%Ó@$u @#rÃ@!É5@¡@Ϊ@–Ù@6 @tß@¸£@ÁÔ@ Õ±@@B?ô€Ä?ïùÆ?úÝZ@¾Õ@Hº@¬É@iü@áí@pÉ@˜¬@™Ž@¶@ê­@ñp@“ @êý@kU@r´@µc@±ö@g@È@`@%/@<ª@Å@Ã5@[@$‚@T1@»6@9@è@Öš@öÏ@.…@4Ð@½l@óº@z @co@ãF@u$@¨”@¹¦@\³@íœ@5@£€@ˆ¢@~j@¥4@ƒë@J@ |@T@LÜ@=@Ó@:·@ëè@tI?ú\À?ÿ"W@ÆU@ Öl@àK@Uâ@¯l@¦n@U¹@·@-à@£@œB@@@§æ@§@ˆÄ@¨@r@#Î@@g@I@=M@9@a@‰¦@t.@6‚@úœ@Ñ}@ÈÄ@Î.@®.@T @É@ÿd@T@¿œ@o@]É@T7@ëa@ Óæ@ æU@ }N@wÚ@‘½@À@u.@ -#»@ _K@ ¶Ý@ €Š@ ’7@ <¢@ w@ ¦‚@ Ë@   @ jƒ@ t@ '˜@ -®=@ãs@wÆ?õ¾©?ë -y?îù?ü•0@–Û@ 8à@ c½@õØ@Éx?õTD?é´‹?åÙÿ?äÓ -?Ýë?Ï t?Å‹?ÉrÎ?Ú=?ðc@‘ÿ@îÐ@î@@ €S@ ÉÜ@ Ìç@ R@Pô@H]@<(?ù8?òÝ:?õª7?þT¢@V]@åV@§1@”t@@Cð@ ý@8þ@…@ìâ@Ó¾@²@Vô@Âr@?@é"@†Š@æ@–f@VG@Z-@”?@®t@"à@'@?ü—á?ý&<@r·@`í@“g@ñ+@·D@ƒO@ŒÂ@eD@€@ý%@ñ™@Õ*@Ç@Ð(@äP@óš@Ôœ@n®@D@#@Zý@Ÿã@¢o@p+@ž@ëÎ@þ)@-Ÿ@Di@gÿ@«M@¬*@J:@àH@žÍ@wL@Q@"ð@ l@ë±@†Â?ÿ›/?ýÿÁ?ýÿ?ýj¶?þæ¨@GÐ@Új@•@Þ@ [?ÿÈ -?þ`?üÇ;?ûë?ø{€?óô?ñœM?ô>Ù?ù¡?ý¶?ÿ]ð?ÿæ@+@dÒ@V@D@2 ?ÿÂ[?ÿ/‘?þÑÿ?ÿé?ÿX?ÿ5Ñ?þ½ô?þZ¾?þB¹?þ)2?ýáâ?þ#?þ£ï?ÿI?ÿ - ?ÿ -Û?ÿB?ÿct?ÿo?þš?þV^?þ7ç?þù?þg?þ[N?þ|Œ?ýâÆ?ýš?ü®-?üx†?ûø1?ût@?û{©?ü?ü·5?ý!?ý -Ê?ý°?ýVÅ?ýo³?ý80?ü½y?û߃?ú†‡?ù‚Œ?ùÕù?û.¹?ü?j?ü{W?ü(i?û~x?úÂÈ?úC×?ú æ?ùëî?ùé½?ú €?úƒ?ùîW?úsc?û…?üp¤?üŽ»?ûÊ?ú›V?ùrê?ø–Ü?ør\?ù ?ù÷û?úh=?ú[¬?ú?ùg?øb½?÷¤?÷¨?øç?øp ?ø«ï?ø(?ø$¯?øî?øW?ùAï?ù6À?ùþ?ùZ?ùÓ¬?ù×Þ?ùk=?ù"h?ùj“?ù|ò?øÎÊ?øN¡?øµ˜?ùRÓ?ùC½?øˆ®?÷ã ?÷òÔ?ø`Å?øsŽ?÷ù?÷0½?öƒE?ö!?õ×c?õ¯?õ¼X?ör?ö¼I?÷bÚ?÷ÝŠ?øN¤?ø?ø¥ý?øçõ?ø¤C?÷Ù—?öò?õù°?ôü¯?ô\?ò¾!?ð¹?ì#?ãš>?Õ»?ÅMh?ºæ?»Õ_?Éç·?Úú±?æzt?ë|N?íRˆ?î4P?î_W?î?îr?ðNË?ò³”?ô)Þ?ô”:?ôÏ?õGR?õÀÁ?õÙu?õaz?ôwO?óžd?óG0?óM?óÕ?òb?ð‹Â?ï}ä?ïÛK?ñN?ñí?ñéÜ?ñš¦?ñK€?ð¾G?ïóË?îøù?íý?é÷H?ç\J?ç»?ê›e?í]í?î?îÚ?ëÒq?æȤ?àµÒ?Þ^ ?á—\?æ—ÿ?éPa?éݪ?êb„?ëq—?ìÓ?ëÿ•?ë©(?ë“"?ëª"?ëÆç?ë²t?ëS¯?êÝ?ê|¡?êRš?êB?éå?é!~?èwÜ?è=G?çãG?ç6¬?æ–?æEã?æE8?æa¶?ær?ælÔ?æH¶?åÍZ?å#Y?ä{?〒?áü?àAŠ?Þ»%?ÝÕÑ?ÝÕ^?ÞT°?Þ×ë?ß:¬?ßw?ß³ú?à|?à#?ßp?ß:?ßNÀ?ßèV?àUu?àêÈ?á¶5?â.›?á·š?à™V?ßþç?à/o?àˆ]?àè§?áI”?áNõ?àá?àOÅ?ß¾Ž?ß=©?Þïê?ÞÚ¯?ßD?ß‘Ž?ß·æ?ß ?ÝÚË?ܲ}?Û‰Ì?ÙÂØ?Ö7Ò?Ξ6?ÁÙ?µg?³ $?¿LR?Îãh?Ø«d?Ûðm?Üj¢?ÜO ?Ûªï?Úxº?Ù¾Q?Ú‚?Ý?àËÇ?ã—?ä…?â9 ?ß®?Þ5?Ý^?Ü·i?Ü]‰?Üœ/?Üüù?ÝPo?ݨå?ÝÂÍ?Ý¢Ñ?ÝœN?ÝÈÓ?ÞĤ?àët?â?áÇê?ßQ?Üõ?Ù¨1?ÖÌ?ÓB€?Ðå3?Е¦?Ð@Å?γA?Î'?Ð6Ö?ÓJ(?Õp ?ÖçÐ?Ø•?×øô?Ö‘k?Õn?Ö(?×›ô?Øf”?תá?Ötá?Õ»,?Õ_õ?Õ`†?Õ3Î?Ôx?Óý?Ó~ý?Ô°ì?ÔnB?Ñ….?̾]?È?Èc‚?Ì"Ô?Ð7?Òc?ÓLà?ÓÒË?Óé·?Ó‰?Òz°?ÐëØ?ÐpŒ?Ò3'?ÔÂM?Õø“?ÕÏ?Ôù-?Ô??Ô¢?Ôò_?Õëk?ÖQé?ÕšE?Ô¥?Ò$?нI?Ðó¦?Ò¥…?Ô5É?Ô˜O?Óå«?Ób?Òöe?Óî²?ÕDf?Ö°?Õí1?Ôô£?ÓÞý?Óy^?Ó³?Óß­?Óìˆ?Óê|?ÓÜë?ÓÜ.?Ó°M?Ó>?ÒAœ?Ò Z?ÒS?Òg7?Òx -?ÒÆŸ?ÓM?ÓjA?Ó™ó?Ó¨ ?ÓÊ?ÔTð?ÕdH?×D?؉™?Ù -þ?صy?×ù?Ö¢?Ö)Ä?Õ©û?Õ”?ÕÉ0?ÔÆg?ІK?È=s?¿]æ?º<ó?¸ÅŒ?ºÃ?¿8‰?Ç?ÍO ?Ф?Òð?Ô‘‰?Õ"0?Ôù™?Ô<‹?Ó–w?Ó§?ÓÌ}?Ó?Ñßù?Ñw¨?Ñúí?Òz?Ò”?Ò…ï?Ò?ÐúŸ?ϱh?ÎÜ*?α{?Ï>?Ð8;?ÐÛH?ÐǺ?Ðx]?Ð?Í?Ϧ·?Î #?Ì)?Ëé?Íu?Îå/?Ï`Õ?Ï^T?Ï"Ï?ÎÑ‚?Τ3?Î}W?Î?@?Î)Š?Î`u?ξz?Îà1?Îr?Îâ?ÍV¼?Ì’À?Ëò?ËX?Ê“o?Èðº?ÅG?¿7?ºåÔ?»É$?Á?§?Æ\×?Èö?Éžê?É\’?ÈÅw?È?ǸŠ?Ç…E?Ç0n?Ʀá?Æ(C?Æ«?Æ-¨?Æ[ê?Æ\a?Æ+?Æ÷?Åò9?ÅÂÌ?ÅN£?ĦX?ÄHj?Äa{?Äz”?ÄU)?Ä*î?Ä?üG?ÃŒ?ÃŒO?ÄÄ?Ã;?ÂÐñ?¬$?®?°»?²(?ÂU?ÂNê?ÂQî?‚¼?ÂL”?Á¸?Á…?Âw?Š?¶±?ÂÅ?¹º?·“?ÂÖ`?ÂðÙ?ÂíÚ?Âù¾?Ã6ö?Ãyù?Ã]X?Â~x?Á?¿ës?¿É˜?¿Ã»?¿Vò?¿+?¿(1?¿Vø?¿{?¿9ï?¾¥³?¾J?½ç?¾G%?¾²k?¾§?¾cþ?¾iÌ?¾–Ã?¾„‡?¾=ô?¾"À?¾ -å?½ÔÜ?½ò^?¾Qó?¾#Ñ?½”?½@©?¼ò ?¼ˆM?¼K–?¼[¨?¼K\?¼(k?¼w•?¼Ç'?¼¡=?¼ L?»ë{?¼@!?¼P~?»Ö7?»_å?»#¶?»> ?»¹±?¼" -?¼o?»…x?»®?»0?»^ ?»Zx?»]³?»yß?»[²?»-:?»†W?»ö°?»â‘?»cf?ºÚÃ?ºž¯?º;,?¹¶5?¹¦õ?¹Ìo?¹{Â?·ëY?´=?¬¯ú?¢Û?š'±?™ÎŸ?¢ ?¬†?³S?µÆ ?¶kÞ?·<ù?·þÔ?¸5³?·ü¸?·]Í?¶ãÂ?¶Äl?¶³·?¶»?¶—c?¶×7?¶ñ?¶»Ñ?¶2??µ‹Í?µ?µÇ?µœo?¶/Q?¶TË?¶J?µœª?µiÁ?µ“d?µ£[?µrS?µ=?µó?µG¸?µÏ×?¶ Û?¶<?¶yo?¶Wk?µßn?µuu?µBK?µÒ?´¸É?´€Á?´z~?´˜N?´“i?´Qû?³Ç0?±¡?¬Ï?¥¦?£3‰?¨?®LØ?±ëH?³ò?´??´c½?´Zw?´‰$?´u8?³ýä?³ÂŠ?³Ç -?³ÜÓ?³û|?´3y?´~}?´e ?³áÈ?³O?³ƒ?²Ó?š·â?› €?›?â?šÐƒ?š/G?™ù;?š}?™ìÂ?™Çë?™;?™=K?™Eó?™ŽX?™¡û?™k?™Ê?˜•n?˜Eâ?˜Ô?˜.™?˜QÑ?˜€í?˜¼?˜¸‚?˜½ß?˜á?˜´?˜'ë?—è«?˜$ò?˜ZÑ?˜uå?˜D|?—Åè?—]¬?—+Œ?—>!?—X?—'¤?––S?–Ä?–VÄ?–™3?–t ?–P -?–N_?–+n?•“¦?”ùò?”Â?”ŸÑ?”dz?•(ø?•¿?”®m?”‡„?”‰?”SÞ?”@q?”N%?“ý@?“uþ?“_-?“£'?“Òé?“í›?“܃?“ß?”Ò?”,²?“áq?“„T?“Az?’ëÕ?’Òè?’Àÿ?’}Ã?‘öø?‘«€?‘ëî?’ë?‘ø9?’ ”?’0 ?’7?’gG?’„~?’2?‘ž-?‘Vu?‘#?‘B?‘?áK?ßq?‘Aþ?‘›?‘tk?‘?¯q?~?S’?>i?xµ?ØË?óO?´£?G!??ü(?ÒÎ?pÔ? l?Žî½?Žâ4?ŽŒ„?Ž=´?Ž[3?Ž«;?:c?¬d?EÔ?Žy¯?Ž;²?Žyœ?Ž€%?Ž.{?×?æK?Ž"É?Ž(Æ?é?žƒ?#¯?ŒÔ?ŒÏ·?Œ™B?Œ…?Œ„ê?‹êä?‹Œa?Œ:Ø?¼?C"?jìR?jl‚?jj?j?jN?jdn?i÷f?i+[?hâQ?hÿç?i?c?iOa?h“r?g“1?g:Þ?gM?fúÖ?füÂ?fÙd?f%?f+8?ešÑ?eÉ?dò>?e1A?e†¦?e{`?dý¥?d51?c™=?c½í?d?dBQ?dBÅ?d?cÒX?c¡w?ccX?cCf?báÈ?bfÃ?b Û?a«¬?a>ˆ?`íY?`¬?`@'?_Šy?_'˜?^æh?^¡¡?^@e?\qÃ?Y+—?WÙ¸?ZSà?]+r?^^D?^²ò?^z?]ÿí?]÷?^Kæ?^,?]?[S£?YÀb?Y†ø?W±?SÑ-?Rü??Vèã?[=?][?] '?[¤ã?Yß?V`ç?VY˜?YNÉ?[òÀ?]æ?]n±?]iq?]6Ž?]z?]ÈG?^/?^ - ?]÷À?]òÌ?]¢™?]b ?]&‰?]T?]1f?]??\(p?[„å?[0œ?ZÁi?ZdB?Z5£?Z¥^?Zé“?Z( ?YÕä?Z!?Z’?YßÆ?Y÷ô?YçÂ?Yyí?Y5½?Xöi?X¤þ?X1É?WÔç?W¬0?W:“?UöW?Ræ"?J¼ö?;”?+»7?,5(?=Ô?P6?WÍ°?Xv’?WïÞ?Wqæ?VhÆ?RsÙ?Džn?6€?@™ ?Od”?LÚ¬?>ó?=g~?KüF?SG`?S³^?S¨Ë?T%s?TÜ?T—Ý?Tµ?S€õ?S1Ž?S. ?Rëï?Rrw?R'?QÍö?Q¨O?Qô?R ?Q1ý?PTÉ?P“e?Q}ó?R 5?RWz?R.­?QŒ.?QB_?Qj?PÓr?P1Ô?OÍ¿?P8?P'm?Oø‹?OÃC?NËÓ?N$3?N‚?N4º?N ?N›Ì}?>+u?>ê?=Üa?=N?<´Â??/ÿà?01 ?0Pv?/¨1?/@|?/!»?.ùJ?.@´?-½K?.q‚?/8R?/Šš?/nƒ?/?.­ñ?.À;?.ÆJ?.í??.î?.éz?/?/)?.½A?-¬°?,Õ?,ž¾?--?.f×?.çO?.|C?.&:?-ñ§?-„?-Y?,þì?-w_?-Ø?-gñ?,’Ò?+üq?+çî?+œt?+S-?*?Ý?(™õ?(G?)œX?*µ?+%F?+e?+~Q?+Ïø?,?+ì”?+øß?,T?,®?,Á?,:?+r+?+@?+7“?+Xx?+„?*M}?)ÈR?)…?)s?)T -?)Ý?(ëê?)<ä?)PÏ?(Á™?(Y?(‰Þ?(}‘?(.Ð?(¸?(S²?( õ?'å½?( ò?(aÙ?(²??(¦Œ?(¾y?(¿L?(¼Ú?(m6?'Ëç?&·§?%pê?& Ý?'ÝÐ?(,¢?'‡´?'Mt?'95?'+¾?'0?&±A?&1?%Oí?$Àë?$ØP?%; -?%•z?%åŠ?&'¤?&—?%³»?%VË?%5??%dI?%t~?%,S?$w?$?$Nn?$:ˆ?#í’?#¸??#Ÿ^?"ù?!¿? Ëõ?!?!ö?/ö??‘?"ã?Dl?é–?]Ž?õ?Åà?ƒ&?p®?q?]?ÙÚ?¹?%?#Ò?È5?I?ø?×C?+?V?¤¢?;‹?ní?ib?yy?mü?ã-?Ös?Äô?Úû?äô?„Ü?Ì?˜??ãŠ?èf?äa?d?›_?¸?Ðç?½o?s˜?ö?t'?¨y?¬Ø?v»?‡~?„?Ví? ?ú?î?p?ï?²Ó?~? O?£?®d?ãì?*d?}?À?|c?¤ë?ÔÁ?úÎ? ê?å?«J?Ÿð?›ì?† ?{Æ?o(?d´?Zð?FÙ?é?øÿ?ã¨?Â?Ž?d5?T8?e?»õ?à?÷?á?ÑÓ?½`?¡­?’&?y7?Rq?@é?3›?õ?öˆ?ñ¤?A?ùš?ç ?º’?°n?î?þz?ñ­?à?¢)?4„?è´?@>?N?@?>Î?÷á?£û?…?Ø?^f?ð?ÔÑ?P?q?‹¿?M9?b?ý?§?×M?«—?Ô!?ÂÝ?‚Å?Y ?¯}?†?å1?¦!?Äë?Ñ?hv?<á?$b?.?/­?&ð?ì?Ú?ËB?1^?p}?bX>ô¶>çÀ?>éx>øÔý?¯$?Ìû?é ?›?áz?_Ç?i? K?þ¹?!-?6/?X!?¤ë?¯?sé?CÃ?°? ^??ý -?ð¥?ûH?êq?¸?iF?A¨?Vœ?C´?½Œ?~ ?ÖÔ?á=?ö•?õü?Ýf?Ê^?â?ÇÀ?·ö?—=?|f?b”?J\??0?' ?ý«?éT?å¤?ØX?¸Ç?ª]?¥}?€ø?H ?Ið?^?Js?ýý>ü·›>ûþ£>û?ê>ú¢å>úWç>úS>ù›>ù7ê>ùò>øË>ømµ>ø1S>ø¡>÷ÞÎ>÷ƒH>÷W=>÷F=>÷ž>öéa>÷±>÷GÓ>÷,0>öÚq>öÂ>ö¶>öp\>ö1Ï>ö'[>öF>õÕ™>õ¯(>õ­>>õ’q>õ:ó>ôö>ôÌj>ôw}>ôDG>ôIt>ôKò>ô!ï>óž>ów–>ó`ï>ó8ë>òìc>òÕ4>òÏø>ò›¼>òZ>òW>ò[–>ò(¶>ñØD>ñ¹Q>ñž#>ñM©>ñŽ>ðóÉ>ðß$>ð’„>ð8Ä>ð ¼>ïÚf>ïf;>îÕD>îVÂ>í©r>ìcÝ>êrº>éÌ>趪>èL>èZç>èX]>è3d>çåú>çÄ2>çÁ{>çžP>çW>ç7f>ç-@>çÙ>æÞõ>æÝ}>çç>ç!ä>çŠ>çç>ç%æ>ç;>æÔ >æŇ>æÕÍ>æÕ™>æ›u>æsó>愱>æ>æH:>æŒ>æ=>åËW>åÊ•>å¿Ó>å­o>å˜Ë>å\d>å;T>å-1>å - >ä¦q>äx4>侺>å'>ä¬T>ä Ü>ã³í>ã¤3>ä$°>ä5æ>äb>ä¹+>åH0>äêË>ãŽ'>á÷®>à÷ž>ám8>âÛ¨>ã‘g>ã÷’>ã׋>âÀh>á=š>à73>ßyÈ>ßX.>à8>á«°>â¼Ý>ãB>ã}>ãSK>ãœ>᣼>ßk‡>Þ ->Þô/>àå>áµá>â m>ãQ>ãŠ>㥖>ã‡>ã«2>ãrs>âK}>áV>ßG>Ü•Ø>ÛÇ>Üôµ>Þ1 >ßUH>ßÃ>àj>àïÏ>àŸ7>àe–>à€Æ>àM>àÇ>à>߃ð>ß"0>ÞÅ>Ü1¼>Ù°L>ض>Ùï>Û¤'>܇W>ÜWl>Û›„>ÛG­>ÛÊ>ÚÕe>Úáí>Ú‹ñ>Ùú>Ú>Úçu>ÛéR>Ü…I>Ü{/>ÜD®>ÛÓ,>Û`½>ÚÐ>Ú;%>Ùr>Ø«Š>ØY±>اÁ>Ù0Ê>Ù[ê>Ù7 >ÙD>Ùß>Øø}>ØÔ$>Ø…b>Ø[G>ØP5>ØE€>ØJ>×àæ>×Òz>×·>×|r>×+¶>×>Öü÷>ÖÞ`>Ö‡>ÖLF>ÖDÅ>Ö>ó>Ö>Õ­>Õ¾P>ÕÌ]>Õ½‘>Õq¼>Õ;>Õ4º>Õ.>Ôòs>Ô¦Ù>Ô’>Ô†ð>Ô[Þ>Ôä>Óà>ÓÚ>Ó²–>ÓEö>ÒÉy>Ò¥å>Ò¬+>Ò”‚>ÒIì>Ò"Û>Ò*L>Ò'™>ÑëF>Ñ¢G>ÑŽ>ÑG>Ñf!>Ñ"¥>ÐäÀ>ÐÜY>ÐÙ§>ЭÔ>ÐW>Ð+Þ>Ð!æ>Ð#y>Ïíª>Ï·Û>Ï·‡>Ϻd>Ï”>Ï;Þ>Ï">Ïu>Îý>α¤>΃¯>ΈÛ>ÎŒ@>ÎYF>δ>Íü{>Íçù>Í® >ÍC>ÌüÐ>Ìà÷>ÌÏ™>̨ò>ÌfÀ>ÌdÇ>Ì’g>̲7>Ì“_>ÌP¢>ÌA‘>ÌN‡>ÌWQ>Ì&P>Ëçj>Ëá²>Ëò>Ëéº>˦—>Ëmä>Ë]‹>ËZ¹>Ë©>ʤ°>ÊpK>Êqx>Ê[>Ê>É®>É°>ÉÐé>Éì4>ÊJ>Éû’>Éä>É©P>É!>ȉ>È‘°>È`É>ÇÚ:>Ç"w>ƈ›>Æ/#>Ä­š>Ã>ÁŒG>À>¿>Á8>Ä!>Æ>Æ€V>Ç1>Ç2~>ƹ>Æ$o>ÆH>ÅØ>ÅKt>Å®>Å8>ŧ5>Æ&»>Æ™>Ç Ü>Ç2è>Æû>ÆgQ>Å4>ÄS²>ö>¶š>ÁúA>Á̳>Â+À>Âu >Â*ù>Á½>ÂÞJ>׳>Âá(>Â¥“>ÂÙr>ÂGÝ>Á>ÀRg>¿˜Y>¾è>¾qÇ>¾3u>¾Pê>¾ë=>¿Ì³>¿çI>ÀÖ>¾[d>¹Î•>½tÁ>Áë >ÁÖ°>À’©>¿vÌ>¾kJ>½µò>¼×¿>¼ø,>¼LJ>»x>ºæ>»‚[>¼÷>¼²>¼-S>½¨>¾L>½ãä>¾v>½z>»ü>ºŸ„>ºtï>º)V>¸ØÔ>·ñ>¸†`>¹->¸§Ÿ>¸#>¸ó>¹›µ>¸YK>¸X>¹S—>·->±/É>­Y¯>¬“ù>­IÝ>°«Ë>³è>µf’>¶3n>¶ã!>·[Ë>·^>¸DÛ>¸£>¸^>¸­>¹=O>¹â>·ô{>·Aä>¶qY>µ‰.>µ^²>µá>¶‹â>·‘>·Á/>¸x_>¹r²>¹µ>¶ä_>µà9>µ]û>´x¸>³ÐP>³çË>´Æ2>¶Ó>¶¼>¶p>µÖ‰>¶›Ö>µñ(>´)Û>²š+>°××>¯sÿ>¯òŠ>±ë>³«]>´Q>µ-5>¶6{>µcè>³´u>²t#>±SB>±å>²!C>²%Œ>²Yw>³Iä>²Û>¯øº>­Z£>­;Ö>¯W>°a >°S'>°Š¼>°Ÿ^>°ë2>±Éø>²j_>²\ >²e >±Ð‹>°¬š>°D>°O€>°z>°©ë>°¸†>°“b>°<1>¯Õ¼>¯Ä§>¯¾>¯®V>¯™—>¯tŸ>¯Dç>®ï°>®®}>®ªÁ>®µ5>®»­>®’^>®7>®->®Ï>®"P>®ö>­ÅH>­{š>­u~>­>­†>­oÀ>­•>¬â/>¬Þÿ>¬á7>¬ÙÚ>¬›°>¬;Á>¬¬>¬ >¬$Ê>¬§>«Ã>«‡'>«…k>«Œë>«Žþ>«m±>«œ>ªíC>ªò >ªþk>«>ªÍP>ª>ªŒ>ªš >ª‘{>ª}>ª%>©ð›>©ìi>©â§>©æ>©Ùå>©…×>©]M>©]§>©a¬>©[é>©$š>¨ÉÕ>¨7w>§èÜ>¨ŒÊ>¨üÙ>¨Ö³>¨„•>¨—o>¨½F>¨ºò>¨’ >¨VÜ>§Éë>§–¡>¨y>¨+=>¨ >§À>§¡>§€Î>§Â>§VÍ>§s=>§v>¦ÏØ>¦…±>¦VÆ>¦>¥v©>¥T>¥„C>¥¯O>¥½3>¥Y^>¤àv>¥&>¥%>¤Èƒ>¤•„>¤ÌY>¤øw>¥C>¤ÑÖ>¤,“>£Ø€>¤<¨>¤:t>¤ ù>¤ >£x5>£ ó>£Ó|>£í=>£Û×>¤-ž>£ý>£‚µ>£¹ê>¤C >¤,“>¤+Ž>¥>¥ò2>¦Hs>¦^>¦3u>¥è¶>¥<{>¤Ñÿ>¤>¢·/>¢žÿ>£*2>£Þm>£ÙÐ>£G|>¢ºÿ>¢-ª>¡æ> ˆØ> ìÛ>¢*¹>¢Ñ£>£ “>£?'>¢Xâ>¡¿â>¢ö®>¤³>¤Ãg>¤ÙŸ>¤ªï>£Ó‚>£–o>£=­>£/>¢ˆØ>£Mw>¤¶·>¥7£>¥>¤Z‚>£®E>¢ÉË>¡ýµ>¡‘á>¡>>¡°ï>¢Ø§>¤[b>¥r£>¥Í€>¥ûÖ>¦>¥äÁ>¥A•>¤lL>¢Ï->¡³Y>¡¦û>¢]>£ø>£–O>¤É'>¦si>§&þ>§,Ò>§#×>§d>¦ÁT>¥Ã>¤h_>¡äR>Ÿôi>ŸÞB>¡¬/>£Ñ>¥{P>¦âô>§¬V>¨nI>¨ÿ»>©…>©¨‚>©#!>©{•>¨Œ>§F>¥Á:>¡.«>š%A>–>˜ÿä>žVë>£#ø>¥øÒ>¦“>§­Î>©d>©l>©§Ü>©éx>ª/×>ªZ*>©Ï>©Ÿƒ>©³>¨L>§Ûƒ>§/P>¥«J>£0>Ÿ¦>œBÉ>œ(¸>žå>¢ì¡>¦Û>§ƒD>¨É@>©”Š>©—r>©®°>ªd>ªf>ª’>©>©Š§>©l,>¨ø{>§øÍ>¦¸>¥Œk>¥u>§H>¨ï>§OX>¥Wÿ>¡þ>œî¾>˜QÐ>˜GH>œ¨:>¢Ië>¥ŒD>§->§ý>¨¹Z>¨ÙÅ>¨>¨1o>§¿¦>¨ †>¨Ë¯>©‡·>©Æ0>©Å‹>©–h>¨ËÊ>©=Ð>©Œ>©gg>¨ö¢>¨¸Á>¨r7>§q/>¦hK>¦Í!>¦Ã9>¥Ç£>£›”> |u>›(æ>”“¨>‘ø>”¸=>›‡È>¡Tð>¤$>¥ma>¥ñ²>¥îº>¦Y)>¦é?>§×>§Šš>§â~>§‚õ>§>§gê>§’¾>§<á>¦Õ«>¦Òÿ>¦Ð$>¦Ë•>¦†æ>¦B3>¦R>¦v>¥ýö>¦u‹>¦^Z>¤ï…>£üÎ>£à´>£ª¦>¢Ëã>¢ú>¢>¡ë>¡šÊ> 6>ž¡>™ÊÃ>’ÆK>‹ø¾>Š­„>?ç>—ñ~>œù|>Ÿ•k>¡-¥>¡€¥>¡Èž>¡SG>¡4> ëU>ŸN>œ·>œÖõ>ž‚> QŠ> ¶‹> øO>¡£> ”ó>Ÿîn>ŸæŽ>Ÿ{>ž§®>ž£>ž»>žž1>žyG>ž>%>ßd>éð>ž>Öý>;å> ·> 0>Ó>‹a>œü–>œþ#>OÍ>4ƒ>œÜ›>œ d>šìÏ>™\y>—ù>>–ç¦>•¿|>”¤>’ >Žå˜>‰MC>Ë2>q!>gÁ>pä“>€º$>‡–Ì>ŒLj>ÐJ>’ˆ>”_>•éÇ>—{r>˜§Ô>™†±>š\>š}÷>šÑò>› %>›d¡>›—2>›­Ï>›»N>›è:>œU^>œ€#>œg‡>œ>R>œVd>œ|>›ÀE>›¹­>›¹q>›³—>›¢Æ>›¯M>›¹Ê>›´>›w>› ª>šðZ>šï=>šï9>šìÞ>šÂL>šT×>š'’>š$á>š"å>™ûÃ>™ŽŠ>™]¬>™Xû>™6Ä>˜ËÍ>˜“>˜t>˜ v>—¿ã>—dã>–ëœ>–~Í>•ù7>•C$>”{v>“">’ˆC>‘(C>NÖ>>ŠOT>†Ã>‚Ë>zk>mž€>^¬Ÿ>N>G¸>TT>d]>r -‹>}d>ƒ4û>†áÏ>‰ÝË>Œ+>Çè>!b>:Ê>‘+>‘‘>‘ÿX>’Av>’³²>’ìC>“/>“Ž>“‘>“N>’«>’{×>’ðÎ>“D>“š>“Û>’ð•>’ƒ#>’ô>’ Ü>“>“=>’Ǻ>’2>’%<>’>‘+ >‘´->’2W>’>‘Ûj>‘‘d>‘t>‘i;>‘Bi>‘Wö>‘ná>‘@Š>Ū>3n>4>œÂ>¦>j9>³P>¾M>Ý>Þ%>Þ#>Ûó>±>AÏ>Ü>r> ¿>ŽôÙ>ŽÄ¬>Ždš>ŽJC>ŽIg>ŽF>Ža>£6>zº>#I>ŒÊ2>Œ™è>Œ„¨>Œ¤Œ>Œ-|>‹w¶>‹›â>‹V>‹Ä>Š•b>Š«>‰r ->ˆ«l>‡¿Ñ>†Àß>…ƒ{>ƒÐ>…{>}ñ»>t5>jCî>e#†>YûÞ>L0Î>7y9>D ©>SQ}>_—«>i¸ã>r+ï>vð‹>xìO>€F…>‚Œž>ƒÔ>„̓>…‚¹>†¨>…§Þ>ƒÎ>ƒ©M>ƒ`K>…Ù«>‡iL>‡ž(>‡Ñò>‡ô\>‡ö>‡ö„>‡ö‚>‡ô„>‡Êe>‡Z!>‡.R>‡,>‡+Ý>‡,ñ>‡+Ë>‡,>‡,&>‡,>‡&E>†â³>†yÍ>†be>†aÊ>†aÊ>†aÊ>†a>†Kˆ>† >…Ã}>…š>…˜1>…–ì>…Žd>…}º>…Ž©>…p¬>…¥>„ÏÂ>„Í>„Í>„Í>„Ìô>„ù>„rë>„ç>„î>„Z>„x>„f>„V>ƒÞ¼>ƒnÕ>ƒ;T>ƒ8Y>ƒ8U>ƒ7Ø>ƒœ>‚uÏ>‚O{>‚lv>‚m÷>‚m[>‚KÎ>ÆÔ>ý>¿$>€ª½>¦>š£>£“>£s>—¾>?>€åÌ>€Ùk>€Ù;>€×€>€Åý>€Á ->€‘¨>€'ñ>€?>€Š>€Ö>€Ú>€ -€>šT>~ÀU>~Šs>~‚©>~[>~jœ>~fÀ>}¥ê>}Ã>|ô|>|ô>|í>|tò>{ˆÌ>{^^>{_‡>{Z9>zö=>z'>yÍX>yÃ,>yN>xpÊ>xx>wj0>v¤>uâ>tîº>sÚ’>r‡É>pïŸ>o V>lµ)>i´+>f>a3,>[5¶>SÐD>JÌ>?€q>2>$…ì>'w¶>5¡>AØt>K®f>Sª2>ZoÝ>_“É>c•p>fãÖ>icˆ>kD;>l²>mÍ)>n›ö>o4>oì>pJ>pNy>pNQ>pN>pOÊ>pMØ>pNo>pNh>pFý>p>p4I>pMV>pN}>pN}>pN}>pNT>p@[>oòt>p#>p<>o£/>nÒ>lº >mv>n«c>n¹¸>n¹Ã>n¹Ã>n¸ >n} ->mœ›>m+±>m$y>lò¯>lt>l”®>m÷>m G>l±%>kϲ>k’>kP>kO>kO>kO>k>k|‚>jÐÑ>j°>iûé>iû•>iû“>iû(>iü>iøÖ>i¦%>h¿©>hjO>hfÞ>hfÛ>hfÛ>hfÖ>hbò>h%;>gmï>fã&>fÒO>fÒ >fÑî>fÑÖ>fÓ0>fÉ>f]§>eŠ§>e@ý>e=j>e=f>e=f>e=f>e=+>e'k>dtH>c¿[>c¨ë>c¨¤>c¨>c©Ë>c¨\>c¦’>cdì>b~>bü>b÷>bò>bò>bò>bà>bq>ax”>`¦V>`Û>`~»>`õ>`E>`~>`Q›>_x<>^ó>^Õ€>^¹$>^á$>^êb>^êw>^ãi>^kô>]‹Ì>]Vö>]U†>]U´>]V>]UB>]U´>]L>\Ç]>[íê>[ÁÝ>[Á ->[Á ->[Á ->[Á ->[ÀÁ>[§>Zé²>Z>^>Z,M>Z-$>Z>Yu>Yz>Z2>YïÊ>Y {>XI>X—œ>X—–>X—–>X—’>X”>XiK>Wûe>W8U>WF>WL>WÇ>VýÂ>VÖ±>Vå8>VØÐ>Vx>Ux,>Un/>Un">Un">Un">Umû>U[—>T®<>SòØ>SÙ>SÙ`>SÙh>SÙh>SÙK>Sɪ>S$ø>R`…>RDÿ>RD®>RD­>RBe>Q÷ã>Q />P²°>P–|>P­>P@">O¢¢>O"Z>ON>N~®>MªŒ>M]Ž>LG>K¨„>JŽM>IGº>GÀš>Eôo>Cź>@ô>=r>8Ðz>3LÌ>,˜ì>$R>Øó> /e> öì>#(>"Sý>*< >0ó›>6<«>:ƒÖ>=Õ…>@yÏ>Bpá>D>EPK>F+…>G n>G;>G¿s>Hš–>Hc¨>GzS>Hs>HÆø>HÈO>HÇÚ>HÇ>Hž>Hdt>Hqe>H=>HŒ(>HÃü>HÄ«>Hll>H$Ü>Hv>GM®>G3Ú>G3—>G3Š>G2ö>G4ë>G3 >G3~>G3•>G0>FѨ>Eåd>E ¤>EžÝ>EžÝ>EžÝ>EžÝ>Eže>E‰ê>Egµ>EwÎ>D¹¿>D>D -,>D -#>D -#>D -#>D -#>D -#>D ->Cýh>C_º>B“ >Buº>Buh>Btÿ>Buô>Bu›>Bu>BuW>Bhz>AÉf>@ý¨>@àû>@à¯>@à°>@à°>@à¯>@à¯>@àª>@Ún>@`È>?~J>?LS>?K×>?Kô>?Kõ>?Kõ>?Kõ>?Kó>?H÷>>ïÏ>>(>=¹>=·;>=·:>=¶ò>=·^>=·Í>=¶Ñ>=¶Á>=‘Ï><¸><+w><"Š><"><"><"><"><"><"q><ã>;v#>:«c>:t>:Še>:b>:i©>:‹ü>:Æ>:Å>:ŠJ>:)¸>9;v>8ú>8ù >8ù >8ø¶>8ùf>8ù_>8ø¹>8ø2>8Ŭ>7ÝÀ>7i¬>7dV>7dS>7dR>7dS>7dS>7dS>7dF>7Xò>6¾#>5î’>5Ï^>5Ï”>5Ϙ>5Ϙ>5Ï™>5Ï™>5Ï™>5Ï>5¨š>4Ê°>4Bµ>4:ä>4:Ï>4:T>4<>4:P>4:Ñ>4:Û>477>3Ó>2äy>2¥÷>2„‘>2ró>2p>2‹ >2¥^>2¦>2™V>2fg>1ýª>13ž>1È>1j>1j>1j>1j>1i>1j>1`>1y>0S—>/k÷>/wþ>/}>/|è>/|i>/|®>/|u>/lh>/EW>/dð>.ÎÜ>.X>-è,>-çò>-ãü>-¹>-Çç>-àê>-µD>-Î>-Öò>-$Õ>,g>,S[>,S;>,S<>,S<>,S;>,S;>,S;>,S0>,GÐ>+©7>*Ú½>*¾F>*¾>*¾‚>*¾>*¾‚>*¾‚>*½}>*Ÿï>*Œ>*TO>)gž>)*ä>)) >))Ÿ>)*†>))\>))Å>))Ç>))Ç>)(á>(ñÍ>(ö>'˜ì>'•>'• >'• >'• >'”Ø>'•>'•‚>'Œ#>'QQ>&Ç|>&×>&w>&M>%ú}>%͆>%æç>%ͽ>$ÒÈ>%Š>%¿>%,’>$?¼>$fƒ>$k•>$k˜>$kf>$To>#ýS>$Mz>$k;>$fÛ>$3}>#¾\>"ùí>"Ö™>"¹²>"h¾>"¿<>"Ö«>"Öß>"Öß>"Öß>"Ö¿>"Áá>!ü‡>!2F>!(>!>'>!B!>!AÓ>!BŸ>!B.>!Aô>!B%>!A\>! > ú>±&>­l>­k>­l>­k>­k>­f>¬ð>®e>¨ž>6>IM>O>°>°>>u>ðI>¤î>ón>a>:n>>f>¼>î>Â2>¢¸>~L>Uê>-s>ù>Ü|>³x>…ò>W<>»>ó>Î|>›X>ar>&Ë>äÎ>¡$>Z´>>¯>Lh>Þ–>Z³>Âf> -Ž>72>)²>px>">Œ-> *_> -.Š>}‘>îM=øÃÌ=ëÂ=×´I=Ô™=穵=õ|>)>…ž>Ô¤> -áÆ> .w>éÙ>BS>Eô>å>µ\>-Î>‡]>ÏŒ>G>&>DÙ>PC>hÇ>s„>r÷>]ë>Q!>PQ>E’>,ë>!‹>B>ó>Ú¬>ͧ>µ©>Ÿò>…*>j¹>Pâ>6> ¦>V>äÄ>ʉ>°m>”x>z>Zï>?Ó>"Ü>V>åC>Çô>¬ú>Ž*>n×>Pý>6Ž>Ð>û>ßL>¼ì>œ²>ƒ >h¸>Iÿ>*ž> Æ>ñv>Í>±‡>•€>{H>\>7²> >É>æf>Å[>§> >na>PO>5>> ôÂ> ×R> ·é> ˜¦> y'> Zø> A¯> &"> => è£> ÉE> ©ñ> > m¿> SO> 8¥> ÿ> ùú> ß¾> À¢> £J> ‡ì> i> K¯> 0 > ë> -õ > -×¾> -¶Ê> -˜9> -~²> -_°> -@x> -%‚> -Š> æú> Ç\> ¨|> Žà> qj> >g> 4m> > ‡>âV>Ê->¬>‘ >rs>Tl>8/>ÂŒ>¥>–h>»L>S>¯>">š‡>…>ê>ïj>×Û>ÀË>£|>‡Â>km>P~>'p>B>òÆ>Ò}>ÀB>¥»>‹Z>o0>Ræ>9¯>>û&>à >ÅF>¨¸>Y>qú>Kü>4Å>ú>Ë>çË>Ì™>ª1>‹„>t5>Y >7é>Ð>’>ç,>È\>­¥>•'>{E>`¯>D3>)/> D>ñæ>ÕQ>º€>Ÿ>Å>W¦>6[>#r>¶>øè>Ü#>À?>¦]>ŠÊ>sA>X@>;w>Î>í=ÿÐœ=ÿ˜w=ÿb÷=ÿ.m=þýˆ=þÇ]=þˆæ=þKd=þ=ýã¢=ý¯=ýy_=ýA$=ý´=üÑÏ=ü s=ül=ü6c=üÁ=ûÐ =ûšê=ûaé=û)'=úýF=úÄô=ú†=ú`-=ú(a=ùñY=ùºÇ=ùƒ–=ùRÃ=ù>=øâé=øº«=ø€¬=øHÖ=øŸ=÷äN=÷«Þ=÷£=÷G=÷b=öØ=öƒê=õä#=ö!B=öÓ=õÈ=õ=õW+=õë=ô¯M=ô°Ò=ôe=ô`ò=ô*ù=óþ?=óÊ“=ó—ó=óas=ó+7=òöŒ=òÀÙ=òtŽ=ò<÷=ñ÷ó=ñt/=ñ¾=ñ’µ=ñLÄ=ñ =ðì\=ðÀ%=ð—Q=ðb›=ð*(=ïù=ïÄG=ï—‹=ï^’=ï%ì=îøÜ=îÂÃ=î“J=î[Â=î#=íá%=í¦Â=íŽò=ía=í,=ìûî=ìÌ=ì”·=ì]Ž=ì0ø=ì8=ëÓè=ë€ó=êúâ=êÞã=éÈ=êŠø=ê¤4=êu[=êE=ê=éáÛ=é­#=ér=é6m=é¿=èç^=è´ó=èm=èT°=èé=çß÷=ç¨Ï=çxÄ=çX6=ç$J=æñ=æÂú=æ‰Ä=æQJ=æ)\=åõ=忇=厓=ålµ=å:§=å¯=äØ&=ä£À=äuû=ä2€=äJ=ãçL=ã°Ê=ã}\=ã= -=ãh=âõy=âÀÖ=â› =âeN=â'á=â9=áÏ -=á©‘=át·=á=+=àæ=àÍ)=à¸Ã=à~=àE =à =ßêÿ=ßÅÏ=ßu=ß]÷=ß.³=Þø‹=ÞÓa=Þ =Þw9=ÞDn=Þ.=Ýà¸=Ý­=ÝdÁ?1dï?4ÐT?8"®?;n…?>¡§??ò#?=áæ?: œ?7’«?7( ?6Õ?1žR?*]ç?$I¹?"µ—?&Õ?,¶?4tü?:‰(?=WÝ?=#ª?:âK?6ÿ?1[D?*†s?%>(?%®•?-¤ ?9ë˜?Deú?HUJ?Dþy?=zS?6|)?3wó?4–O?6éD?7†;?6ŒU?5õ\?6"?5ú"?5»I?6óS?9¹9?< ¼?U¼??Ty??ý??1€?@ƒù?B°V?Dc?CC’?@g¦?= ®?ü¯?>§?:˜Ý?5o¤?0ËD?-Á?,âv?-y ?./R?.¨à?/Ðx?2ªU?7‡Ú?>+?Dˆñ?H¥õ?I ?GR -?Eøà?Dùi?B-?<ÍF?6€2?1t¨?/Ä?/ÓÁ?2Ø_?6¯î?:Ùê??i1?Cžæ?FuÁ?Gšm?Gçµ?<ÊÝ?;É'?<4ä?>Ì?AЪ?F|«?IùÓ?Keç?K -8?HZ?B6“?9R?0x—?)óe?%þ ?#Ü«?"éë?"èq?$±ˆ?)LŠ?.ûº?1¹S?0‹e?/ƒ?2M?7¸Þ?+²?=6-?;-?9ø!?:©ª?:úŠ?8ÙA?4H`?./Y?'? D?Ã!?_“?!1U?&ž—?):?'š…?$ =?!§? v?!í)?#ë7?%ÕÝ?'’©?'õ­?': ?(Óõ?.Ó•?6+ç?:®ä?<X?=y??°ª?BI¡?A*ƒ?:ˆ ?0ëù?)7q?&úˆ?*;ú?/Í?4'y?6 ¯?6Å?4â~?4 ’?5S?9߯?>Úà?Aég?Bgo?AÄ?AÇ?Bå»?Dh^?EÒ?Fï??F‹ÿ?C^?>‘ª?;[u?;œ±?>I$?A?Bœe?B7e??±³?;ߧ?9J£?:C×?=Ál?@*ä??{Â?<¸?6ñr?1¤…?.Û»?/žÃ?2_q?5bœ?7ä­?8ÿ?8>È?7‰ò?9†Ž?=´?@Ö?@ÅO?= W?8â´?5D“?5«„?:f…?@K?DÔ?E€`?G&ä?J®?LÍ?LN³?IÞÌ?Hn?HA©?I¨?I‰û?J€†?K¥Ÿ?JÍÂ?Fy?@½×?=ï??‹¾?AäÑ?@c;?;j?7ðv?9^?>.a?Bäq?En?EÊW?C®??@4z?= ï?;†?:^?:Ø?>)"?Boß?EƒÊ?Fò0?Gâ?Eyî?AŒœ?;9?3¦k?-Õ?-~?1ê‚?9Â?>P¿?@TÚ?@>;?>ùÀ?=9^?<ÏA?>š?A#ù?Cui?EáÑ?FàG?CKÝ?;3q?3pT?1¶?4HÜ?8È?:rœ?9B`?7íš,?D%{?Hfö?IÛ}?H¯Á?E!?>Æ?8!?5Ü&?:mà?Aöº?Fíf?G,l?D5¿?@Zä?<â’?9êy?7c‚?6?û?7ë?<5‚?@d ?A[Ž??u?<å?=ûþ?@òH?B»È?C7^?Dá?Dí.?D…ö?BÉÛ??Üý?:Ûð?3›Ú?,3-?(s©?+”æ?4ím??s%?FT?Ij?Hü¿?EÍ%??>^?9(”?8A?8?<×ý?:Ã0?9ó?;\Q?>&8?@?u?@FÑ??ß?>XL?>Ä÷??º?@9Ô?@/ê?@&??þl??\4?>ã??v,?@‹†?@ç›?@9_?>ëÆ?=eˆ?;݈?:°3?:i>?:ßÑ?:øí?:1ö?9hI?9Á\?;|&?=¡½?>³E?=ï\?;ub?7¾?4EQ?2ú­?44¼?6©?5ü?3–ø?1)Ø?0xí?1v‚?3¥4?6å?7>x?6Ýâ?6#o?6]é?7k-?7È¥?6¨?4Èy?3Ò?3îo?5²Œ?6“Ô?4ñÊ?1ô?0jê?1Cà?2ÉR?4?5¤Ð?7³f?9$Z?9p¾?9>…?9~Ë?:e1?;?:ËS?9å¦?9[ó?9 ¹?:`‚?:Ç×?:‡?9Èn?8‰Ì?6ÿa?5?3Þ½?2LÕ?2/$?4 :?5Æh?5€C?4Ÿü?5æ?6==?6¤‘?5õ?5/œ?5œˆ?743?8I—?7>`?4C™?1¯9?1Ãÿ?3ÌÇ?5jü?6É?6§à?7ŽY?7ø˜?7¸ ?7}Ž?8®?9<à?9¼o?8Œš?6çX?6Ëå?8¼F?;¨ˆ?>=å??ºÃ??ò¹???=•†?<:‹?;k?;?:ÿ°?:É"?9îb?8û?:àÐ?9`þ?9ö?9æ”?;>?;hÈ?;Tò?;ÛL?=%Ö?>Rè?>ŒÄ?>æ?=yÈ?=f?=Ê‚?>*œ?>@?=Ä?=|a?=ÛJ?>ìa??ãµ?@I£?@ %??Tƒ??×??ö?@ÙØ?@Öí?@T¾?@ø?@µ?AÉæ?B+ ?Al6?@ž€?@+•???=^?<ò,?=ëÞ?=úZ?=T ?>Y½?@b¿?@‡z?>%?=eK??Ȇ?Cö1?E‰Þ?BñÒ?@±?A¢Á?G’?MJ®?N]½?Iv”?AÓä?=–`?@“%?Hé5?Q9?To?PM˜?Fíž?<.?5‹?6&?=«ª?GÆ?N¿¸?Qq†?NW?EG›?:5ÿ?33%?5ü¤?AºA?Oì–?[Žu?cnY?g-8?eäø?^Ž0?Pà¼?>õ?.AB?&ø€?.¶?A±?UŸü?cp•?jš}?m¯$?o6ç?oç?m1å?fµÆ?[œô?JÒà?6=w?&B€?#Î?.’Á??s¼?R=»?dUp?q/?xùG?|¿?}Üâ?|Fï?x3ƒ?qþi?jÞC?d_?[zO?L·†?8Ål?(v?$¹%?1Ô?GÚ>?]9Ë?m¦Õ?yH±?€‘‹?‚?‚`™?…?€ÍÒ?¾ç?‚Ò?ƒ•Ñ?ƒìO?ƒ€ü?‚p ?€¢>?zo ?oº?_z0?K—7?5Ì?$Ó¬?&Õ?8å¿?QwC?eÅ„?t'?~Î2?„ ?ˆ+?‹˜?Ž)l?Ñ9? ?ŽŠw?‹Ä?8š?’?“&£?’-b?™?Ÿ?ŽÑ ?×ç?Œ¹ò?‹€?‰uÙ?…j?G?oŒl?\ˆÉ?EN?/#¤?&E?2Hu?LËå?h­?}¸?…?¶?‰&m?‹Ö*?Žû?8?’u¨?”ñw?—œL?šÏ?›ÈX?›ø‚?› w?™ê?™4C?™2T?šeÖ?œÑ¿?žôr?žñ ?œËh?šÍ?›Ç?œ–©?œýå?šû§?—Š|?”nT?’R'?X[?î,?‹®ç?‰n‘?…j?~]í?l¹4?Vؤ??6¤?/šœ?2·a?Eö©?\Í_?pQã?ïS?†&?‹å?’/½?—µ ?›5ä?x?žj'? I?¢`ç?£’ª?£¢?£âà?¥Ay?§9ö?©4?ª5l?ªXD?©K?¨h=?¨¦e?¨ëâ?¨_ô?§×È?¨z—?ª‡Û?­¨?®c®?­¥?«·þ?ª§#?«r?¬h?¬£ß?¬¬_?¬K?ª·o?© ?§Ä•?§E?§|?¥ù?£vN? _–?žôà?ŸÖß? îÐ? J?·ç?™ÜÐ?•™?Ž¦œ?…•£?rÓs?VÀ:???;3#?NIP?l&?‚ü??‹¦>?‘#´?•ª?˜¡£?œ¡? «?¡¶·?¢?£,ï?¦o?©Ié?«5B?¬1_?¬(a?«£Ö?¬ê?°K¾?³ªº?µ¾|?¶çã?··å?·”‘?¶J0?µ›§?¶²?¸@?¹º?¹JP?¸ÝH?·\ñ?µÄ@?µ=Ä?µ8'?´ê•?µy&?·Œ?¹«?º(q?¸Ë¡?¶Çc?´ÄÂ?±~¯?ª1ý?›é?„óË?j}E?vù?‘Ò©?¨Ñ?´L¤?¸Žâ?¹‰8?¹ûé?º¨V?»¬?¼=Ö?¼B»?¼ñ?¼@/?¼Ó÷?½&D?¼ó0?¼6Ò?ºîË?¹–Y?¸ØÑ?¸À¸?¸Â"?¸UÀ?·N?µaØ?´ ¿?³¤?²¨??°+?¬„?©™A?§º©?¥ÆÔ?¡í€?š-Å?Œ˜r?p÷'?D'Ã?&‘t?&¼;?Ao?g_?„ד?‘&õ?™^ ?Ÿ7•?£Å?§¨æ?«Qõ?®¤Ø?±T?³`A?µV?¶’6?¸|Í?º~?»­?»öy?¼ª?½Ô -?¿"õ?¿ÛC?Àz?À 7?¿öc?À Y?ÀnF?Àh?¿ö?¿¶>?ÀRX?Á‘ò?¬?ÃpÎ?ć?ÄV;?ì-?ÂH×?ÁÈ?Ã?Å -S?ÆX¢?Ærï?Åã*?ůƒ?Åù?Æf?ÅBñ?Ä@:?í“?ÃU -?ÃAW?Ãìv?Å* ?ÆE8?Æí•?Çds?ÇÔV?ÇüÍ?dzn?ÇL ?Ç[`?Çà9?È-7?ÇÙ˜?ÇH6?Æö1?ÆÉ%?ÆÄ_?ÇbT?ȃ?ÉVÖ?ÉVC?ÈÍh?Ȉ ?È·?Èê½?Èò ?È–+?Ç#Ü?Ä¥|?¡"?ÂĨ?ÄÇ?Æþ?ȇó?É4ý?ÉD•?É,ß?Èí'?ÈtW?Çën?ÇL=?ƪ$?Æ{é?ÆÞe?ÇYm?Ǩ;?Ç%U?Å.C?Ã&S?Âøù?Ä?ÄñY?Å=Ä?Åk?Ä´Ü?Ãæ8?Âgò?Áq†?º?Ã,L?ÃlG?ÂåÃ?Á­?Àâ?¿]z?¿§$?À>?ÀÅf?Á?Á!É?Á -[?Àž?¿àF?¿#ì?¾(o?¼¡A?ºêµ?¹?¸?·d?µ¯¿?³žS?°Öè?­8½?¨‘?¢&p?š!·?Qk?ø½?^éV?Oÿ]?_¡¯?€W3?xW?™ÊŽ? ê?¦´‚?«PÅ?®Eq?°2¼?²@?´®º?¶çM?¸i/?¹f?ºg‘?»Zx?¼?¼„?¼½¢?¼Ž–?¼³ê?½ÝÝ?¿M?À.?ÀŸª?ÀB?¿£¬?¿£Æ?¿èD?¿N?¾==?½·µ?¾üž?À¤â?Á"÷?À͵?À¥?Á }?ÁÛÀ?Â?>?ˆ?ÁR­?¿·h?¾} ?¿X=?Á¨e?Ã??ÄG¯?Ãà~?ÂùÎ?ÂN"? ?º?Â`?Á–R?Á×?ÀðÐ?Á?ÁiF?Áô!?Âjž?„$?ÂÛ?ÂÁâ?Ãn?ÃL`?Ã^?¹¼?ÂLž?Ö?ÃÙÈ?ÃÀ°?Ãjã?Âüú?Âg ?Â\?Áçã?Á™(?Á/&?À®g?ÀKL?ÀPÒ?À·F?Áy)?Â5?Â0?ÁJ?ÀØ?¾ðB?¾L?¾Åû?ÀMº?ÁçÂ?Âp€?ÁÛ?ÀêJ?À+¸?¿çt?¿ÅH?¿d$?¾új?¾¿Þ?¾a§?½á?½lí?¾–[?À¦?Àÿ ?ÁqÏ?Á–J?Á2.?À;D?¿,~?¾Ø¿?¿hd?¿Þ ?¿%7?½@}?»æÙ?¼93?¼Ü“?¼˜G?¼R½?½2?¾¢6?¿lº?¿–?½Jf?¹²J?¶Aÿ?¶M:?¹š;?¼©,?½¦=?½Ã?»­C?º³î?ºó?»îI?¼çÖ?½~?½¬a?¾ k?¾Šÿ?¾YM?½…?©9=?ªmí?¬\?­ÂŽ?¯»?±Ø?²sq?²E?±Êd?²á?³@¦?´XM?´³o?´·,?µ²?µh ?µ¤?µËB?¶†?¶ˆT?¶än?·?J?·`Œ?·=?¶èÚ?·BO?·V?·‘è?·‚'?·rP?·Í?µ´S?³IÒ?²;¹?³-?µO´?¶x‹?·›?·d9?·—›?·EŽ?¶b¶?µi8?´¥°?´Æ8?¶&–?·Ð¨?¸ºW?¸§f?¸Cv?¸Rî?¸%%?¶§‚?´Üó?´”?µV3?¶?¶Â)?·¦D?¸mæ?¸æ?¸|Ö?¶ãÉ?´Ù“?´ö?´óƒ?¶V.?·Y«?·Èm?·—Ë?·#—?¶´å?¶„I?¶³I?·?·Á?·Y®?·ÿ™?¸Fó?·è‘?·E?¶‚½?¶r¸?¶x?¶g½?¶`ã?¶¡‚?·BÅ?·–?¶Úˆ?µCÞ?³Ûd?³²:?´³z?µ™?µ¼k?µŠƒ?µAœ?´þü?µÓ?µ—M?µÛ~?µ<©?´Ä0?µ_K?¶'?¶Fý?¶?¡?µ¹ô?µ÷?µg?¶FË?¶jc?µp,?´?³ã?³Dy?´–t?µ¤^?¶,Í?¶˜¦?¶Ž²?µÔÏ?µ.'?µW}?µ¥™?µg?´®€?´œ?´°?´i9?´Ò{?µÒ?µ8‡?µ†a?µËF?µªa?µbØ?µ\§?µP ?´¢z?³´£?³ÍS?´å´?µJP?´œ6?³à?³d?³/í?³6m?³J?³Ü¨?´¬m?´ß?´ƒ?´ZQ?´ªL?µ»?µk?µxç?µ?´æå?µk¦?µ†?µz?´''?³ -Ã?²‹”?³+T?´ -j?´b…?´Zó?´H?³†u?³lã?³µŒ?³Š?²|G?±S¦?±0?²8?³g?´ 5?´›?³›¥?³.z?³q}?³ÕÝ?³Í?³£ô?³®?³™b?²š ?°ÍW?°&?±„»?³@?³›…?²èO?²Lƒ?²•ô?³@å?³5z?²Çm?²å‡?³F¯?³w?²:g?±”?±ß¥?²¤?²ìü?²Ÿ+?²=Û?±¿ö?±«?°ŒY?°9?¯¸Ï?¯Ž¬?°³?°À;?±TÀ?±Âî?²*}?²'˜?±ÑË?£„~?¤w?¤^þ?¤aë?¤?£ÖC?£µz?£©ä?£Ñâ?£ÂG?£d?¢#Õ?¡ÑÝ?¡Þ\?¡þÂ?¢ ú?¢ `?¢XU?¢Œã?¢)¤?¡±?¡‹?¡r•?¡6Í? ü"? ¬G?Ÿér?Ÿmþ?Ÿúç?¡,?¡öÆ?¢-‰?¢  ?¡ö4?¡¸)?¡4D? ˆŠ?ŸÉJ?Ÿ#‡?žì²?žâã?ž– ?žG6?û?ä?ž`?žØv?ž§)?žy?ni?œðË?œgä?›ô"?›n?š–7?™â?˜qÙ?—¿ë?—È ?—ý?—à.?—6ˆ?–&?”œu?’æ?ê§?ŽÌ ?Œ[€?‰V?ƒÄ`?u‰à?Xçù?8ö\?/7?FÙÚ?hËÖ?€/ú?†çÅ?Š‘Ç?Œè? P?üÉ?’„ç?“Íû?”éÁ?–D?—Ç?—™Ù?—µû?˜tð?™sô?™š~?™LM?™’?™[ˆ?š=.?šë©?š¨÷?™ç³?™b­?™s/?š´?š\G?šu‹?š£Ï?šít?›Qô?›ˆè?›¡ü?›Â?›¶?œç?œ´Í?J? ?œó{?;W?pð?ʽ?ãŽ?o?œP?œF?œ1ˆ?›”B?›AA?›ß?œ#Å?›9Y?šÜº?›½?œš?œÑ8?œöš?œô?œÒC?œ¥?œVH?œƒ?›…þ?šØR?šªC?šÔá?›Wù?›Á?œ U?œ0?œ#¬?œ"Ã?›¸!?›%‰?›:‘?›ÉÃ?œ³?œD?›þÔ?›÷?›zG?šÛ:?šûj?›ž?šûº?šüp?›ƒû?œs{?™Ž?˜Œ?˜Z¦?˜ª¹?™:‡?™Zç?˜†?—›ï?—[á?—[q?–õ?•Í×?”¯ò?”ñ«?–_?–Ûæ?—”?–ï\?–©±?–oÅ?–GÃ?–GB?•ïÝ?•¾#?–Tr?–š$?–…0?—•?—Ø4?˜E ?—j?•øà?•Ll?•À©?–-é?–Nð?–Ëó?–͆?•ç¸?• ¥?•†?•öé?–c‚?•êd?•–ý?•øç?– Ð?•y†?”ýË?”Éd?”ã›?•Ï?•]?•€µ?•?p?”•[?”À?”ˆµ?”ñm?”ˆ6?”Fß?”$Ž?“óÏ?“òÖ?”:?”m¹?”Vå?”*Ë?”?”KT?”?”œ?“ è?“Ù]?“úª?“`Þ?’à¯?“:Ñ?“å´?”p?“ù¼?“çf?“ÍS?“ƒp?“_?“Z?“o?’¶Š?’›á?’zM?’¦ˆ?“%r?“?’hA?’L&?’€[?’ž?‘¹Ì?’35?’Ê8?’ÜV?’i…?‘ûò?‘Ä+?‘{‡?‘0?õ(?‘C¹?’0{?’>8?‘í?‘Fü?ó¯?”v?ï¡?w’?àª?t?’1?²?‚‡?FG?9œ?¯‹?NÊ?g}?’?½½?[ÿ?ÁC?u#?’ë?ó‡?IÙ?*?–ñ?es?Ž¥?‹¼t?‰)?‰ÁÅ?‹ÛV?‹ðu?Šc¹?‹bÔ?×æ?Ž±·?ŽÒŽ?a?Ž²8?Ž'Ä?Œ¢7?Š5ð?‰òç?‹ã³?BÃ?O?â˜?Ž"?mÃ?ŒÈo?ŒôÒ?Œøl?£?˜×?¹?êE?Ž&÷?Ý£?;£?Œkæ?ŒCã?Œ´?ŒÅ´?Œõ?U$?5ý?a?Œú?ŒØ?ŒÜ?Œç–?Æ?F?Œþ3?Œl?ŒPž?ŒQ÷?‹°³?‹<Ù?‹¹Û?Œ`:?Œ}?‹¤ ?Š—ô?ŠòW?‹ØM?Œ)?ŒJ3?Œ*Š?‹ã{?‹»5?‹^%?Šúz?‹/?‹xü?‹}?Šœ…?ŠaO?Š'?‰Æ4?Š#`?ŠKå?‰úØ?‰¼ß?‰´ð?‰€~?‰IÍ?‰Œu?Š -F?Š»?‰Ü?‰=M?‡_Ã?†+&?‡M?ˆ®­?‰{%?Š2Z?Š,¾?‰ÉK?‰ºÅ?‰ç×?Š"$?Š:Ã?ŠN;?Š G?‰^K?‰Ò?‰_H?‰Ùw?‰í?‰µr?‰gq?‰0ï?‰u8?‰_È?‰>?ˆåZ?ˆh?ˆl'?ˆ…R?ˆR×?ˆJŒ?ˆÎ ?‰ßÊ?ŠíU?Šé=?‰°¨?‰3(?‰¡ò?‰‡˜?‰”?ˆ¢X?ˆ°B?ˆã?‰?ˆÿ?ˆÂª?ˆÉ8?ˆªô?‡°à?†ª‡?‡Ö?‡› ?‡äO?ˆiV?ˆ®å?ˆ£&?ˆ’M?ˆl¤?ˆCe?ˆÌ?ˆ’?ˆIj?ˆ2?†4È?…¯˜?†¬?†-Í?…õ6?…œð?…Ã?„2??„Aú?…“?†$o?…eº?„Äe?„è§?…ü?„ý5?…N?…>Ï?…‹D?…}é?„ëÚ?„=V?„?„'Ã?„Ku?„X?ƒûJ?ƒ²Ý?ƒ¾î?„.?„;?„?ƒÔ?ƒ¡v?ƒyY?ƒkK?ƒ)?ƒÚé?ƒÛä?ƒç?„Ð?„ ?ƒÚö?ƒ^?‚Ët?‚|Ð?‚¹K?‚ý‰?ƒDZ?ƒ²8?ƒËÊ?ƒ™í?ƒ`q?ƒX›?ƒGh?ƒ ?‚æ-?‚ýç?‚÷T?‚®u?‚Ÿ`?‚ø5?ƒd°?ƒ{I?ƒx?ƒ…Ù?ƒk?ƒY?ƒc9?ƒ#Ž?‚ÿ?ƒF»?ƒÜ?‚ŒX?‚q¦?‚¨é?‚ˆÑ?‚3³?‚G?‚‘õ?‚žÏ?‚BR?Ú?à ?³1?bq?Ss?)o?,M?”D?Ÿí?d?pÎ?”Þ?˜Þ? -?^‘?DÏ?YY?z8?Žß?^h?€ëœ?€µ?€ ˜?€€Ð?€…4?€m…?€8-?€C’?€zí?€t¾?€uM?€ˆ?€Ws?€_?b&?1|?I?LÞ?“ ?ÕÃ?âH?3?~- ?}‰œ?}ŒÍ?}¼?~-ý?~ê?~Ä?~à?~¯?}„f?|Ù°?}qK?}áì?}Ó?|Œ?|%?}?}É1?}ÄL?}^¼?}E?|uÜ?{™M?{ÞÙ?|Ùt?|¬?{üÏ?{ÁÐ?{ì“?{ûl?{™b?{L?{¿?{fR?{3A?zÞ‡?z´U?zÂé?z‡Ô?yÑÍ?yp`?y m?zr?z w?yË ?y;j?xÜ„?y\y?yî?y¿h?y$?xÊ?yZ?x÷L?xÏù?y+o?yŠ?ykå?xÖá?xO)?wåü?w¦³?why?v²-?v?^tL?^Š?]ÖÂ?^‹?^Q?]ÞW?]iA?]†Þ?]Æž?]g¥?] ‘?\SÙ?S‰=?Rû0?SbM?T[¬?TeÑ?SîÃ?Såö?Sª2?Smp?SLh?S+'?Ræû?RÝ¿?S(è?SV;?SBT?S7?R¦«?RbO?RSà?R@u?R€®?Rq¤?QÞÏ?QÛl?Q°Ÿ?QŒP?Q…±?Q ?Pb.?PuÜ?Pû?Ptß?O>„?N®d?O­?PŽJ?P÷?QÏ?Q!ÿ?P ?O÷Ç?P¯?P5Z?P ß?PdÍ?P'?OáÈ?PL*?PVˆ?P=?PÝ?O¸œ?O?O -?O$I?O¤?NÞ0?Nç„?NçG?Oë?O#‚?NÚ'?NY´?NR?N3²?Nq4?N`Û?N)0?NÉ?NX6?NH;?Mö¾?M¼$?MÉt?Mæ‰?M|d?Lû§?Lâ??LøŠ?Lú’?L–¸?L¢­?L‹¢?Kø³?KÀÒ?KÅã?KÙÐ?KßÌ?Kl@?K:O?K™˜?K|=?KRŠ?K;(?K ó?KÄ?Jì‘?J­ˆ?J9°?IÊD?IÑ@?J 0?J­?I?HÒŠ?Ep­??„?<´Â??J¬?A«•?CÉ?D¾J?Eó¤?F™B?F³q?FÔ,?GEö?E³í?E½?E"?EeÚ?E;Ç?Ejj?E&9?EAo?E™Ï?DÕŸ?E+C?EÊf?E™×?FÐ?Fl•?EÛ?EÃ+?EÖã?EÀU?E]8?E8?ELŒ?Eݾ?F`V?Fª?EÍá?EÖy?Eá ?Eή?Eën?F@.?Eî^?E7Ÿ?Dó4?DÈž?EW#?Eѳ?EóÛ?E§¨?Dî?DÅ’?EB7?EÀƒ?EöŒ?EÃÀ?Eh·?Dýî?D´†?DíN?E3¸?Eé?Dƒ·?D†"?D‰å?D"S?D]|?DŽ‡?Dje?DAO?Dƒ?Duc?D é?C®›?C¼Z?D!Î?DHí?D?C³/?C|$?C,1?Bçâ?Cë?C=m?C ð?B¨®?Be"?Bœ?C=?Cç?Cƒ?Cý?Cq?Bë?BRL?B-”?Bsu?B ¬?AáÈ?B·?Aå"?AÃÔ?A»t?AÇz?BU{?B0?A…ì?A7@?@ë¤?@ç™?@é:?@®‡?@[??ºª??¡~??þ1?@‰??ß'??mu???>Ï€?> ?>°?>«/?>"s?=ºl?=t6?=MÞ?=?<̧?<¶B?<¼ð?<Ío?õˆ•>Ð_ñ>ïó˜?Mæ?:?#RX?')C?*@?,Õ¡?.lÜ?/t2?0(Q?0|¬?1#?1…œ?2`?3/?3(|?2ö?2Çy?2Ý?2ús?2û®?3C¨?3¼Ä?3Í$?3rJ?3CA?3®&?3×w?3«c?3íÚ?3Öë?3¦µ?3ˆ^?3b?3ŠZ?3N?37”?2á·?2ù?3k[?3r=?3¡K?3¿·?3ö ?4ÿ?4R?4·?3ª·?3P.?3 à?3F™?3`K?3?2ëÏ?3†,?3ò/?3í°?3¡…?3k?3g?3RY?3X?2ö?3Ÿ?3Rí?3%´?2¹¢?2Šö?2¤Œ?2îï?2ô?2Ì­?2ÖS?2Ýd?2ÀS?2Ä[?2«ä?2„Ä?1ÿÄ?16C?1DC?2Lš?2ð0?2¬~?28?27?24È?25?1³‚?1ðx?2kr?2u?2rJ?2„?1®f?2%‹?2„Ÿ?2A?1ú?1í·?1—‰?1jŸ?0>˜?.Æ^?0‚m?1’D?1­ž?1§/?1Š!?1“8?1?-!>?,‚É?,È?+ä?+ØŸ?+ä?+¢8?+?*Œ¥?*3Ž?*Šñ?+¦n?,°?+Ÿ?+8V?*ãK?++V?+Û ?+Òz?+  ?,¥?-Ü:?-s`?,ÊL?,?,Ÿ?,(Ç?+Ðm?+ÉA?+î=?+$?+RP?+w?+C?+?*°±?(܈?)O”?*¿ -?+&?+2L?+ Ó?*ÔR?*›Õ?)¼?(s?(Åq?)üM?*”¯?*†Ÿ?*w ?*N?)¬.?'È­?'L?'ôö?(sò?(ZÊ?(î³?)¦ã?)Ïa?)­Õ?)‘ ?)p¥?)al?)bÔ?)NÞ?)>™?):>?(Ý.?(%?'áå?()V?'Â6?'™N?(EH?(—‹?(‹?(m?(P•?(2R?(S?(?'ï?'«?'W?&øÆ?'Pv?'{?&wj?&U?%~?%‡×?%Àß?%£T?%bQ?%¾?%ˆ?% Ê?%þ?& -H?%ñ·?%ÏÉ?%Ðú?& ¡?%ú¶?%Ó?%ÌÎ?%Å*?%F?$IŠ?$¿„?%P›?%H?$ôr?$ñ%?$ï«?$¥l?$Ы?$ß¼?$X?#Ë?$\Û?$¢S?$³…?$Ÿp?$-³?#Ûœ?#Б?#,?!øÏ?!ؤ?"¥b?#d¾?#~¾?##Œ?"êº?"ÕZ?"Õ©?#h?#ÅQ?#Ìf?#ñ?#“ò?#?"i?!¿&?!¤ò?!”?!â?! Ó?!`i?!¹!?"D?"Zà?"‰d?"oC?" †?!Iw?!•ó?!ÔF?!¨ ? ‰¨? \’?!Ñç?"Pj?"€*?"R(?!@«? ‹2? Öj? ¥S? G? ¶N? €Ž? —)? é? :µ? m£? žW? ¹9?ÿÆ? ø? Lr? )l?¿¿?É4? M?öÁ?Ú??[[?Pv?/?ÿ?á°?t?A:?Š?µa?<Ú?Ý?K?EÌ?ÔÈ?í???Ô?&ð?<:?=´?ÂA?OÊ?È?½Ó?˾?Ìx? ?P?Õ}?îü??ö$?)¹?ðº?v?u? ¸?­?âŸ?Õ ?è[?ˆd?(1?@g?Ï?a?µC?üW?R‡?Úf?n†?ÕQ?N?eŸ?h ?ðC??w?‰»?½ÿ?£Y? )?3ž?gL?_ë?®Ø?è?ÍD?âÍ?/®?tÍ?æC?ÿ}?·d??¿?Ö'?Ê^?õ…?nã?<›?›?“ß?Ï$?ó?3?«b?èt?*\?¯º?%¢?Ô§?X5?Rœ?ê?¤ó?G/?\é?«?ô ?U•?e?Î?ó?·?íY?)5?„Ð?L?M?øg?'?Zm?þ¶?1?©Ä?Þ†?û?%??¿?Á*??¬?W,?È?‡â?Äß?z?‰ ?Ž?O? F? ¹ ?óÜ?W¢?Á?¦ù?1C?º6?ÌN?&‰?_—?†Ç?–Q?"?rî?­u?„Õ?ŽD?d|?‰ˆ?C?ý«?¦7? ˜J?œ°?vÈ?bO?߸?$n?`C?2Ð?æÀ?8¡?^p?O¸?S?AN?òÓ?F~? ?i? é?–?cò?€Ò?l ?ü?i‚?€ö?@”?ÒÃ?ͳ?ð%?;›?Š+?‹—?Sn?#u?4.? ŸÔ? N ? ¹}? ÈP? HÅ? ¬²?¥g??©? dt? ík? - ? !¶? ý? ¤é? ©Ä?UÑ? }i? ¸? gá? Õº? ¢? êŽ?¬§?$Ç?oÌ?? z¼? ¦? Š2? 5¬? z|?q?$ã? ž}? 7$? ¥|? {Ÿ? ½‰? y? ð¹? GH? ¡ú? 2Ó? Ú? %? ó:? >@? ê ? I¯? 9û? Æ[? >? ¨? B¶? ý=? Ò¤? Òò? ˜·? ¾}? ÷? ž? ;u? 4»? -ï¥? ÿ[? A? -Ú? Ì? ;ä? ùl? üß? 0-? ½¨? -…~? zÎ? E¡? aF? ¦Å? G? ûX? -x? -ÿo? cl? -ûM? -lX? -–¿? -úÒ? =–? 9‹? -ïå? -¯? -’›? -£+? -“? -Ùƒ? -ý®? -°è? ™s?q? “°? M -?÷ï? ½|? Ì(? ëˆ? !Ù? ? Þ ? 0N?õ“? ³ƒ? Ûõ? ²³? ¡?âŸ?“O?‚9? ƒ¹? œx? pë? % ?ö-? ’?Ú`?!?ó§?[û?y—?Žû?9?hC?“€?p?Z?\Ê?W±?à†?e¬?hÝ?d‰?S?Cü?(? Ú?ï?éé?„þ?”¬?Ãn?°~?¨¡?¤`?Ž¦? u?¦É?ró?¨Ï?è…?å„?£ð?mç?fÔ?Þè?©o?)?b?ÊH?;ø?Š ?å«?è?9š?TÝ?f–?iv?•¶?ÒÞ?N?&í? &?©”? ø?·Í?:Ò?ýs?œ?#†?‡Ê?Pä?Ã?Þ?Ñ?.p?"È?Šb?â®?ÊØ?ÙŽ?ÓW?ƒR?ßû?éu?°›?¬?hû?˜‡?«á?=?Ì?‘^?¤"?f?ð2?ø?‰e?šE?w7? -~>ý¾3>ý™þ?¥?Š?ø?Î?«n?)?˜?dQ?î’?‘6?ï?˜?Õ?>ÿõ”?Ÿ'?*P?yF?[º?cÎ?Ò?¤H?º|? 2?n„?Â-?¨¬>ÿÞ?>þG®>þ&…>ÿ7¦>ÿx}>ÿo¾>ÿæ>ÿ“©>ÿkù>ÿ C>ÿr¿?%(>ÿcë>þMç>üÌà>ý~U>ÿ%>þ´l>üÈê>ü}Ê>ý+Y>ü‰Å>üh>ús >ü+É>þ‹">üëb>û¾¶>úă>ú£u>üa¤>û¤ó>ùŒ->úc>ûOØ>øâ«>÷-³>ö?á>úFÄ>ú`>õ·«>øV>ú’É>úR;>ö:é>õ>J>øY>øýÄ>ö¸é>ö°ß>ùu=>ú>úR>ùu>úˆá>öã&>÷^o>ûŒ>ü6’>úIŒ>ø±>ùfX>úrf>øL}>öàí>÷›>ø?>øS7>ù—Ô>ú7>ù‡*>÷³Æ>ôéP>ò<¬>ñF>óà}>õT©>ô¨£>ôáË>õ¡>öäg>÷“Ù>øj>øÜK>÷zN>õ‹0>õ‹A>ö >ö€d>õÕÃ>ô‚1>õ™>öÎ>ñÁž>î²>ñ¼Ÿ>óÍ ->ò)>îÝ(>ò_;>ó¹£>ñ®->ò›K>ó¢>ó±n>ò5Ï>ï‘ú>î(î>îã3>>ð!Ð>óAÒ>òe>ðK>ñ2³>ñÄo>ïçs>îop>î2B>ïå!>ñe´>ññ?u>>ðýÏ>ñüS>ð‹F>ði>ðv>ïþÖ>ñ¨ç>ðw>ïÂ>ñ'>ðeê>î !>ï´+>ðT…>ðD»>ïŽJ>îª>îp>ìÎ,>ê ®>ì£>íF6>ìñè>ìÜ>ìMy>뢴>éüò>ë>ìm>ìgF>ìI>ëÀ°>ëlt>ë4z>ë/>êÀ)>ê’a>ê¡=>ê‡å>êa»>ê3>é÷C>éÙ">é¿™>é€û>éGm>é<ñ>èþš>è~k>èTÿ>è[ >èY>èIA>çÎç>çB»>ç‘á>ç°n>ç  >çkE>æÕ >åžÃ>æ%‡>æì¶>æë{>æ¿ó>æ’0>æpB>憊>æoý>åê,>äÙ%>Þ¹†>Þ;‰>âÞ>ãöQ>åE=>äŸq>Ý® >ÛÆš>áˆË>à·W>Þ‹ˆ>á@“>äy>âüs>âys>âAú>ábV>àn€>àD‰>à32>Û’;>ÞÂ>áÈ–>âÝÊ>â -o>Þ÷>ÜÐ>Þ>Ñ>ß«'>áU­>áD!>ààÑ>àF>àÔÎ>Ý¢k>ؤ×>Üüµ>ßmÍ>Ý}t>ÝÆ|>ÞvQ>ÝñÄ>Ýj¾>ܳÌ>ÜS(>ÜO>ÜÉ>Üóö>Ü] >Ü2>Ü3>Ü¥>ÜCH>Ü(>Ü$>>Ûêº>ÛëP>Û¡>ÛTï>Úª{>ÚWg>ÚÖ>Ú>ÚŠú>Úv>Ùë2>ÙTA>Ún >Ûvò>ÚýD>Ù¶>Ú…P>Ú@ >ÙòC>ÙÛS>ÙÇë>ÙP">Øßã>Újò>Ù -Ö>Ø >>Ø"B>Ù’>Ú\?>ÙÄä>Ù´^>ØÜ>Ù†µ>Ú"*>ÚF>Ùi5>ØA:>ØÔ©>ØæO>ØÀ¿>ØÞT>Ø‚±>Ø!W>ØD>Ù>ž>ؾW>ׄ£>Õ´à>×2V>Ø¥²>Ø®É>×ÕE>ן”>ØfË>Ø`>>Ø„Ì>×ò>Øïq>Ù´>Ø)m>Ø1÷>Ø¥E>Øà?>×É;>Ös˜>Õóm>Ö-V>×]à>×ð²>×ÜÆ>× C>Ö[>ÖÕÊ>×{u>×$ñ>ÔÞ—>Óê >Ôƒ>ÓÜ–>Õ-I>Õ—œ>ÔÒq>Ô™ž>Ôó>Õ07>Ö=b>Õþv>Õ7‡>ÕDˆ>Ô@+>Ó:·>ÒŸ˜>Ñl>Ñ(ì>Ðo>Ñ-ž>Ò…>ÒCÞ>Ò… >Òþ >Ññ¿>Ñ”ð>Ñö\>ÑŒþ>Ñ>ÏÝ‹>Îëö>ÏÄ®>έA>Äì&>ÅÝ>ͧ}>΀Æ>Îûú>ÐP¶>Ð3x>Ϲ>ÎÜ>Ï n>ÎÞ>Îïª>Î_>ÍÐÂ>Í;ë>Í&š>ÍRª>Íg•>ÍŠ³>Ìýþ>ÌY>Ë(D>¿£ï>±èk>Áž‡>È}[>Ê“>É¿š>ÉâÉ>ÊŽ®>ÉFé>È€µ>Èu²>ÈŠ>Éå >Ê¡K>ʃ{>Ëô>ËŠ{>Éìg>Éì>Êè>ÉïI>ÊÖ>ÊMÞ>ÉÃ0>É,z>Èx„>ÆØ¿>ÄVk>Â=Ž>Á˜>Âr\>į>Äáû>Æá>Ç¢B>ÇÊŒ>ÈLë>Èo'>ÇOþ>ÈÌ>È*}>Ç.(>Æû<>Æù>Çgn>Æÿ&>Æjù>ÅÒñ>Å.Ó>Ć>Å >Äj•>ÄR>Ä:ñ>Ä÷>ÄŽf>ÄVb>Ã,Æ>Ârâ>Â/Ì>¾ô@>¯?‹>¬Ò>·÷>¼“V>¿>¿ª”>ÁKÿ>ÂTÿ>Ã…>Ãtô>Ãm>ÄI&>Äžœ>ÄÅ>Ã7d>ÃX>Â"»>Áh‚>Á -`>ÀôÀ>À_1>Ásû>ÂÊ>ÃÎÞ>Â]™>Áeu>Á&Ú>¿‘¦>ÀžM>ÂJÞ>Á= >À_Ô>¿ª>¿æé>Àê™>ÁBÁ>¿dh>¿šo>À%2>À¹Í>¿ùã>¾‚@>¼M>¹Zã>µt>µM(>¹‘W>»´Î>¼iŠ>¾;>¾6½>½¼>¾ƒ>¿œe>¿Lk>¾ÚU>¾W}>¾96>½Ï£>¾}>¼ûï>¼,<>¼)P>¼G>»¶v>»¬”>»Õ²>¼›˜>¼ºÂ>¼¢o>»7û>º¡6>¹W >¸’>ºXÛ>ºâr>ºKõ>¹|6>¹´V>¹@Õ>¸ôß>¹²Š>¹´t>ºwT>º~Õ>¹3‚>¸m>·ŸŽ>¶ÍÐ>¶V†>¶#í>µ¨ >´jD>³þo>´2>²ñí>°ˆÀ>­õ->ª<©>£Žû>ŸÞ >¤]>¨O§>¬º”>¯‘½>¯x>°‘?>²—¨>²÷>²±¦>²Ôr>´£«>¶ º>¶ç>µ>µ]>·3€>·=Ï>·m>·ëè>¸,•>¸G>·ûc>µE®>°¢°>µäo>¸V>·@>¶xá>¶µ>µ -¦>¯”D>¯×+>¶Jó>·äK>·ì–>¸u>·óÑ>·©>¶gu>´X”>µî>µ_O>¶{Œ>¶þº>¶Üi>¶¯ô>¶wü>¶6u>µ‚ë>³™ >³ >´!»>´^È>³›>±Öv>±¶½>²tŽ>²¿Ÿ>±Ò€>±\T>°õd>° °>¯J—>®WÆ>¬ƒÜ>¨Œ9>§Ý9>¨œ8>¦]C>¢0>œÌ(>—Eä>Žï{>‹Nì>“jq>šùË>žî>¢É>¥â>§ôŽ>©o>ªÂm>«Dë>ªÉ,>¬K¨>­ªß>®h>®¥)>¯±>¯5ï>®»)>¯B|>°“>¯ÿþ>¬¹Å>Ÿl>¢>®àÏ>°¶ù>°‡×>°’1>°‡Ô>®aâ>¦œ?>©œß>¯Î½>°‹ô>­F>£¿>¨à{>«Ù>¡8>¨ç ->®>q>¯ k>¯9F>®ßf>¯[>­WP>¤[>>¨ùH>®ÊÍ>­¶²>­ž>®mº>®hr>®&ø>®tŽ>®pg>®aÛ>®œB>®gy>®lú>®YÚ>®­@ >«ÔV>¬âý>­¨h>­U>­Ó>­$Õ>­±>¬­¨>«Äý>«÷ã>¬8Ê>«Ñ>«”>ª0>©Ÿ ->ª ü>©š>¨Oˆ>©VB>©D;>©6>¨òs>¨y•>§ßF>¦ô,>¦¨>¥p >¤8>£¯^>¡¥H>žB§>—ÎÚ>š²N>™Z>•ßÀ>–g“>’Ta>Š³\>{ºî>vEÓ>†,ª>ŽÒ)>‘F²>’b>™op>šè°>™Ž*>:T> 7ü> Õ©>Ÿ](>›þÜ>­p>žë>œ×{>ðì>ž£Ã>¢íþ>¥P >¥{M>¥©l>¥Þ€>¥ó.>¦ Û>¦™>¦>¦ ˆ>¥78>¥\[>¥ž->¥—¼>¥òL>¦2>¦#á>¥ÝÑ>¥êÌ>¥¼—>¥ˆN>¥Ô>¥å+>¤MÏ>£ê4>¥i>¥yè>¥b>¥€ù>¥žR>¥yU>¥2Æ>¥ZX>¥[0>¥+>¤±û>¤¯>¤Î>£Io>£A^>¤@´>¤Jö>¤0>£ >£²K>¤%¬>¤G->¤-¢>£¡V>¢ÃJ>£…»>£²¥>£W$>£Xã>£8>¢ -ß>¡Ñ>¢l:> Ÿñ>¡}Æ>¢ºÔ>¢—> [Ð>È6>“¥E>šÿ½> S>š?Í>‘ïv>›Þž>¡ -–>žª)>žnº>¡0^> þ¯>Ÿ—ä>ž¦Õ>žªÃ>:È>™†„>°v>žº.>Ÿ>žV>Ÿ¿>ŸÊ~>Ÿ >žýg>Ÿ`û>Ÿ9à>ž†>ž>\>ž’ù>žÒÞ>ž¯>žpc>žA >žAÁ>žO>ºÂ>{q>Xr>/>œå›>œ}J>œ5>›Ë×>›Ÿ›>›SÆ>šA—>˜þ;>™Á&>™·˜>™'Š>˜¼>˜Ø>—0~>–]>•¨¤>”Ut>“>‘a^>íó>²Þ>‹*‰>‡¶>‚lÊ>sØ>[òœ>`dn>wIª>ƒ/R>‡äî>Šü\>_;>!÷>hd>‘¼>’š>’ò>“ €>”ß>”ýi>•ÞÙ>–Gð>–‰¾>–šk>–à³>—Bà>—`>––©>—L>—wD>–o>‘Y]>“SÓ>–¢>—m>—ûw>˜>˜ ]>–¶C>Ë>’Ð/>–xJ>•(Y>—>•¼j>”,·>–ò>–ÜÍ>—8“>—¤ >—Ï>–À„>“ˆŠ>”PJ>•»Ô>”Úë>ŒÊd>‘}Ý>–„F>–w>–Êy>–yþ>”p³>”hk>•‰>”w`>’•‘>”£>•€ö>”Ù¹>“ß~>’÷q>“fÈ>”Ê>”ø¯>•d¥>•**>•9>•I>•bQ>•C¿>•G*>•6 >•>”÷>”rº>”aR>”…¦>”P¯>”lT>“å|>‘û®>Žý>"‚>’Ö3>“Xj>’¤¥>“<¥>“€O>“µ >“}%>“;n>“ z>‘OÁ>’«>’—³>’Æ>’ïÓ>’ï>’ØM>’Â>’˜Q>‘úñ>‘‰&>‘*¤>‘˜¢>‘ýÓ>‘Ë„>ך>aX>kå>‘£&>‘«å>‘…€>‘1ï>‘Q>‘I¡>‘5¼>Ôö>õ">gb>07>µ>I>ì@>‚W> >Óè>´i>î>û£>Ê•>Ží>>r>>t^>Œø>ŒÄß>ŽÍË> H>Žá">Žœ»>Žª¦>ŽÎš>Ž¾>ŽsÌ>Ž\>Ž4‰>Œ>‡¬f>‰˜>H­>| ->‹Ö>Œ(Â>G@>Œây>ç>Œˆ‰>‹Æ>Š9i>‹¨:>Œí…>ŒÞ >Œ¶<>ŒŸ>‹èo>ˆ3ý>‰æ6>Œ#È>Œe>Šê0>Š;¬>‹zv>‹ö>Šêê>Šs¦>Šùˆ>ŠÜj>Šƒ$>Š<ž>Š3—>ŠŒ&>Š]›>ŠH>Ši>‰ùÍ>‰‘>‰C>‰HŒ>‰T>ˆ°u>ˆ±Ê>ˆ¢Í>‡Çd>‡{¢>†*Ø>†ó“>‡5Z>‡¡>†ÍÐ>†l;>†x>…S>…‰>„aÔ>ƒÆ2>ƒÅ>¶K>€õo>€ b>}b9>zÙœ>wN€>r†Ú>l>bñ‡>SïB><Ø÷>:RH>PÞ>`{Ä>ikƒ>oØ >tð>wì¹>z@¦>{úì>~З>€N€>€å>\B>ÖB>ûl>‚6÷>‚å4>ƒ&Ü>ƒrz>ƒ©P>ƒÐ£>ƒñ;>„">ƒÑK>ƒÐŸ>ƒÄò>ƒºÊ>ƒ3>ƒr/>„7o>„{>€>}+—>ƒ™s>„A·>„I·>„R>„:Ò>„>/>„**>ƒGð>§Ç>ƒf¾>„ï>ƒÒý>ƒ€Ù>ƒ”>ƒÏ>‚UÊ>€~è>ƒ½>ƒ—Ö>ƒuá>ƒ*S>ƒ]Ö>ƒUv>‚Æq>~†Õ>€¦&>‚Ûh>‚Û‹>‚fé>‚`>‚¬ ->‚ré>‚AŒ>‚0p>‚?w>Ô?>‚I>Û>¥>€¿ç>ëö>õ8>Ù¤>¾Ó>²“>»Á>˜Ñ>€ô¤>€Ü>eÑ>;Õ>":>1Ö>"->Ð>€ìI>€ßƒ>€Ì>€§G>€¡¢>€˜r>€~¸>€C·>ýÁ>€5–>€7Ð>€ê>ÿð>}¼ƒ>yÄÂ>~r >|ë>O®>~Åk>}öæ>~->~”}>~FÒ>}hÓ>| ->}‹ï>}ã>}G>}uO>}Vò>}×>|qU>{ÇO>|QÃ>|«ž>|9í>zc?>vºo>zzêH>{}ß>zøä>{ >{$Ö>zòm>zxÕ>yëQ>yÃŽ>sd°>s¥>y>xª/>xÉ>y„ø>y^ë>y6º>xØÔ>xÆR>xnâ>wµ‡>x[¯>x0Ž>w >vc>v|R>w’}>w—h>wVn>w;S>w&€>vWi>sØí>sì«>vfû>vGL>uúO>uýT>uËN>uŠ >ufO>s­ >r¢½>rµô>i ->`n>dÆ>ló>s»o>t W>pþ>nCØ>rF‰>sH¯>s{ >sM>ré¨>qÎ>q­[>qó>rM>rNÎ>r>pcA>n‰>q,ä>pÕ>o#>oU>ogþ>n ¼>m¬ñ>l‡Î>of#>oýû>neg>m+=>n?4>o-_>n'„>kjB>n1Ã>o!ß>nÆð>n” >nÁ¾>n³>lÿ>m–©>nÚ>mé’>mØ/>mv²>k›|>kߪ>lç>kFÚ>fŒÜ>]ÕY>fåì>lMF>l?o>kù‘>kG ->k|@>ew–>b,æ>jwÛ>ku>jSÏ>jÀß>j¹À>j¯µ>j“l>j&->dÕõ>cŸæ>g>·>dæÜ>i²>iŽ^>ij^>i6Ü>iU>hÓ>h§–>ha>h,°>fŒŽ>]rä>cÇ‘>g®¹>g†>gw>g(>eù5>fPK>b‰Ž>NúU>Mü >[ÈÇ>Kú±>Nó>\E%>d›í>dYs>d§>aY>V;Ÿ>a6ç>d¾>dn^>bÙC>c°z>d=³>bè>V!…>Q> >_Œô>cd(>cÂ>c¸>aùÓ>`aÀ>^Ê>Wm³>\‹A>[&…>ab>a´f>agÇ>a@Ä>_>_· >aÒ>a"g>`ãr>`«Ì>_2X>[O>Tïs>\‰¾>_í—>_Uf>^([>^¯—>^—•>^’>^ˆÐ>X4>Nª>[£>]Ì>[gO>V¾>ZÀl>OQ>Rîá>[¹¨>[Hˆ>[|L>[Ãì>ZƒŠ>Tìì>Yè>[”¸>[wå>[E¯>[Á>Z¢0>X~Z>V÷>VEØ>Eò³>Ov>X$>X\~>WÊW>Uqt>PDâ>PõW>U†Ž>TŸ\>SËÇ>SP·>SvÏ>RÈ>Q´“>Pr7>O(>Mid>F¤¤>H#!>H®À>Fqi>CŠe>?³>:‘|>3.Ð>'oÙ>;D>³>$)Å>0Ìå>8Uä><Á¥><¦Ç>@.2>AŽU>F6†>IJe>F)>Gµ†>L›>M™Œ>N(á>Lw >EÏÂ>G¥³>K.†>Oj3>P‹†>PÏ™>Q C>Q:_>QZ>Q^¤>QKg>Qp>Q‰>P:>N'>Gè">MQ+>QY@>Q•†>Q’¼>QxW>Q†>QQ•>Q!\>PÂF>Q>P•>PÞ¢>QÓ>P—‚>PE>PM>P¬U>P³?>PšH>Ptx>PJã>PE÷>P5´>PX>Ož™>O†>O¢h>O‹%>O„>Oe×>O ->O>OO>Nú~>N´~>N¦X>NˆÃ>N_Z>N >KðÌ>M7Ø>M >L|`>HϤ>J;.>J\š>LZØ>M&Œ>Lz”>J9">L -e>Lfý>L‹f>L/ª>K°i>Kܾ>L>L»>Kò¼>KÊm>K¯½>Kdf>J¶“>J¬>IJ¾>Cx™>C» >JP„>J{>I@>IA{>Fä>I>™>J»>IæH>Iy>H;>I”>IS>I1d>I V>Hæà>Hã•>HÃñ>H…Û>Hwv>Hh>HÚ>G¶‰>G¤\>C×’><‰ ->@žÔ>FëR>FïH>G->G|>G>FâÑ>F»+>FÛ>Fy:>FF¡>B6&>8ô·><Òc>C>B¾I>A >B…§>A‘ >Dà>BhK>C¸'>D‡>>Dƒx>Db§>D>D L>CÙÁ><£G>9ö>Aîà>@³­>B|å>CDã>B%™>B‰Ì>C>Bë>@ö›>?T>AâÉ>Bqß>B*>Aúã>A}D><ò>>»>@CÙ>:÷>;–·>>"r>;Ïë>@©>?pÑ>;w>7ÿþ>4€X>;šÚ>>åÐ>=´Ø>;dƒ>?´>>¬[>=Qá>>µ>>ï×>?»>?º>>t8>:ê1>=[­>:l>7ŒB>9º>=F>>¦>> á>=îU>=Ë8>=šØ>=‡«>=Dè><´D>=/><߉><¼>;Ñï>;îZ><€›><3ˆ><>;í’>:å®>;Q†>;¤°>;“b>;qr>;,”>9“z>9¥k>9”ƒ>:­—>:Ž¯>:‰æ>:r’>9¡V>9 Q>9·Î>:/>9çW>9Ëÿ>9R7>7¨€>8¬r>9G†>9%>8ØÌ>8Ó>8±V>8¥k>8™«>8y›>8ž>6¬Ð>7ƒ>6%ù>2GÂ>5fï>7CÌ>4ÿû>5«,>40>0«>0ò>5‚Ž>5?>0+ù>5<>6S>1">0C*>5Äj>5Mè>1dL>2éð>5œ>3°¥>1Üø>1Å >0Ä™>/4W>$©O>1– >4vð>0p>*Á ->/Šþ>1&>3÷Ç>3ܤ>3Ëy>3p¢>.sm>03ð>2æÐ>2ö¾>1¢þ>2ð>2çê>2Ï>2¡H>2q<>2I!>26¡>2b>1ýö>1ØY>1°Ï>1¬>1Y×>1F·>1$Ù>1>-b»>$Jx>'fN>]§>&ïŒ>/ç>0Rg>0Pç>0 >/5>- [>,¦v>*^>-’¼>*°>.ä±>/T$>/*†>/ø>.Âô>*ôþ>+Øx>.–>.;ê>+U>-Z>-Ô™>+„>,ˆ}>,Ú°>"s‘>&h>-#´>,°0>%”>($Ù>,áW>+cR>'^)>+æ²>,Šp>,\>*ü[>&˜7>*J^>,C>+ðÄ>+ÐÊ>+k>%œ>#/Å>"Ø=>)ðÀ>'ÖC> ¡@>½É>' %>*…ª>*’ò>*{v>*_ï>*C­>*#©>*B>)óµ>)Öš>)³7>)• >)F>)að>)F>))«>)¥>(áÝ>%Î -?1W¡?6ÁÀ?;$ï?>Çÿ?BQç?D¥?AÜi?=vU?=Ƽ?;˜³?:Ð?=ÚÎ?D¦^?Ly?QC?P‘?I º?@>S?:%?8ª?7›·?5XØ?/—l?'q?0â??"ýâ?,2?0^·?-—?'{?&?*iÒ?,wÄ?('Ñ? p”?D«?¾n?)u?2ˆG?7&Î?6­T?5L*?7Ù?<<ü?AÞó?EŽ5?FÙ™?F¯?F|”?G`?I7x?Jj:?ISî?FS?Cºˆ?BÛ*?B&z??ê?8Ê1?0ô€?*ˆú?'ºÚ?(Öí?,þ?3"’?9ñL??"?@ —?<—ª?9L—?;+ú?Akµ?FC^?EÝÒ?Aƒ©?<9À?7žè?4^©?2ÄŸ?2?À?1Û?1«½?2ô4?6Ÿ5?<„)?Cݧ?KD?Og]?OÌ?N?LûŠ?LEÆ?IU]?C3?;ÚK?69?3mA?4{?7Õê?;¯%??½˜?D‡&?IQ¿?L­2?Mí'?Ms?J“C?G.î?Cž?@>º?=7#?:nf?7TP?3•?-Ƨ?)¦?&?#›ý? Nê?7^?!›¼?+?7§??æü?BHt?A*-??%?<ß¹?;'·?<(K?@Ç)?Gb?LO£?OûÌ?Rk ?SµG?S¾M?RÊ?Q@–?Nœ”?Hào?>jA?0Ž:?#g$?Ëh?ÉÒ?/?0U?!þ×?& p?+š³?1aQ?6Ž=?9. ?9¤‡?:“Ú?=P??q -?<ÿk?5#°?+,œ?#Oû? lr?#SÝ?)|?.J?0M?2H=?8ß??xË?C Æ?Ash?>ƒ ?=½Ò??Ks?BJ?GÃÏ?Mpl?Q@Ö?Rjè?Q–J?Nqt?Gʳ?>b?4"ý?,bM?'rM?$ÖË?#ØÛ?#á?%¨G?*‚ñ?0ÚÛ?4Pˆ?3›¼?2ê€?6 Å?;¡ü?@ ?Am??Šá?8?3F(?*Ïî?(§ç?,·{?3U¯?8“ì?:þË?:î|?D/?G¨½?Hmn?H#À?H‡:?IæÓ?K‘!?M)„?Nv!?N?JH¦?Dšf?@æV?Aœ®?EYÉ?Hñ*?Jn?Igz?F%?Asu?>Ã??¬R?Cª_?FwG?E÷ú?B±¬?=~?8 º?5)p?5ù}?8×±?;úÌ?>T??xì?>.^?<Ï_?>b-?Bpž?Eko?Dì?A:‰?:?:uj?=5•?CÜÊ?IÆ2?Lâ?MJ?KQ¢?G±Å?Cð›?Aª??A÷??Ëø?CrP?Hq†?L4Ô?Mù*?MîO?KÆ?G'?@0v?8(€?2^Ì?2]Þ?8S‡?@h?Fì?Gês?GO.?Ef ?CÌ?Bmá?Dpd?GJÒ?IËf?L]Ö?Maž?Ip«?@±Ý?8l!?6X?9®À?>›?@SZ?>í?=dª?=*)?=ÇÒ??’?CPÆ?HKÂ?LUx?Lëæ?H’??+?3½?)€U?&÷r?-â?8ai??z??À©?>8E??ì?Eè?K‘ß?O[H?N°f?I€a?@˜§?5€g?*öx?%Ö¡?*šA?7—œ?E?LfX?L n?FŠ(??Þ?7ý¨?2?.þ°?/ßu?1ÒÖ?0rU?,ž¦?+ç)?1TX?;LË?FŒ.?OHr?R?M«t?C6i?6 ž?,.’?*Ñw?1]ó?8²Ú?<ò?>}¢?D6?Kì?O|Ø?M—\?IRë?H©?J¶6?L$V?H4Ÿ?@a?7õ÷?3(—?3X¾?8ª ?AP ?Iñ?OÓG?RN©?Rhò?Q¡&?P€?L_:?FeŠ?@µ'?=`±?< Ú?;O¢?:M?8+ä?7ì ?@ý÷?@)Ï?<®ý?8Û¸?7 ?8eµ??Q>ƒ?P.;?K£?E÷Ú?A’=??ô -?@?@¦­?>¼é?=‰"T?;›N?:bÂ?<ï?@à?F û?GƒÃ?D”J?ADÛ?A„˜?D%“?E±ý?Eý´?G ?H¥1?Hñì?GU+?CÖ¼?=›?4H?*+Í?$ê?&*?/„É?:λ?C[‚?H ?K‰?I{(?BÝs?:ïÛ?7_È?:>|?AˆÁ?Hâæ?Kˈ?Hõb?Beà?;N?7">?7Œÿ?9úä?:€*?8Ÿ2?6Íb?7²?8Øt?9©­?:Ã?ýˆ?H8?L -?Iè}?C÷˜?>±¶?= Ó?A Ì?Dì×?ET«?D¢Á?G×3?NŒ -?Tça?X¼½?X?Ñ?SA?M~ú?J¾ü?J?F¸¥?@fõ?=—??ÿÃ?D`d?FšÃ?I³?ORj?R´Å?O6­?Fõ??õÖ?=¶2?>ïŽ??Žâ?=U§?9ãÑ?7‹¥?7ÁÀ?:\?<ù3?>Ä5??É?<Òá?2ï}?#¾0?P]? -ã›? ›—?á©?ÐU?6µ? -V,?¢ -?DJ?à?!MÒ?"&?#5?&À„?+˜?-zž?-£D?)÷4?!Â?-u?¯À?Øc? ¯¾?Õ?`a? ;?_¢? Ž(??A? åÎ?.äß?8š ?9¯Á?5{*?3@Õ?6&$?;¹…?AŸ¨?GaÃ?Lés?RZÔ?V8D?T?J.}?=D™?1@ž?%È?à ?Az?#_ ?#&ý?Ϊ?TA?Åë?n¯?'2Ì?.„?4Ä?:?>¼é?;áÑ?0:©?!gµ?³ˆ?}?k£?,–V?;G(?E° ?GÆe?DPy?D˜_?M7¢?Wæ/?[õ§?WD™?KoŠ?:!†?(À?w?°K?"X?&ß?*¶~?3þÍ?>?Ì?F/„?Mcp?Tàb?YO³?Vë’?P[?KMq?GÛÓ?C9½?=zã?8˜]?3Ô -?-J?(¢£?*c?0yŸ?8h?D½¾?Tû??aÄÎ?eÈ#?bê¥?_GS?_h¾?b¬¨?eÈ5?f.?cÿ{?bÌã?bΑ?bW%?aßk?b»?cUù?`!ã?YÚ!?SÙ­?Ml ?Ee¬?A*?G ?Ta;?_t?dæÉ?h_?ks1?h{æ?_ƒ_?Ytê?X^?T¼á?OŽi?Q%œ?YM‚?_Л?]¨Ê?R˜??F_0??ÉB??!?Gi‘?V­°?dÜÿ?k% -?já±?g?-?cKy?b3µ?c’6?e ‘?h:?spð?‚ªÿ?‰‰ ?Š¥?†ý?€b÷?rbñ?b[h?TÖÕ?O?Që\?UѾ?Qîï?Hœ#?F:¯?Qï¤?d&?tF?—ù?Š½?Î?Ž´?ˆ‡ ?RÏ?qy½?VÉU?6…?Ô®?…?+èD?Aë?Z`@?nÙ?zd?z0z?rÛÐ?pý”?u°¦?v?mu8?^6?J ç?4غ?%Z5?"/2?,çƒ??Wë?Sôð?i´i?~¼?†øz?‡ñp?i?l˜I?Z&ª?NR÷?Bë5?5aî?)?òV?t‹?/¤‹?O“?r6?…JÅ?:h?”˜?™Þ$?–u?‰m?v‰?iï?p?}›Â?‚ì²?ƒÑX?ƒØ?ƒÚ¤?…TŸ?‡ôó?…®»?yaŸ?lQÇ?q«?€>¶?‡c1?Ž²?•-«?˜™f?˜vÓ?™_Ä?Üc?¢ã0?¥dâ?¥•Ú?¦Ø?©:?­HR?®Õk?¯ ¿?°R?®ó6?¦«Õ?˜×ü?ŒóÅ?†Ét?…•[?‡Š -?Šf´?‹±î?‰Ýå?…¸V?~íÖ?mwê?^õ?ZUB?]¿ ?dº˜?sHZ?…‰?‚+?•Î?™Jð?ŸX?£mÍ? Äî?–E]?‹¨Ô?Š¢¢?“?œn? LŸ?ëx?—H3?Ž‰Ë?…¨§?|%I?t?wž?^¨?}/ß?pK×?g¶L?mt?x{†?w,A?g”¼?Y[n?UúH?Xæ7?[¤f?\{þ?\eä?Z<-?Q+L?> ?)ã? N?)$¾??]×?W’?d7ø?aú~?Yåˆ?U8?[L¶?qp»?‡Í?ÿÅ?‘Qï?u?‹¨s?Œb°?‹õV?‡´Ø?‚i?‚p?‡ñE?Ä—?Ü?ˆÎð?„‚?‚€ä?u?{K?ka%?]Õ©?\nÓ?g@¡?zéN?ˆ)r?yÉ?•¶;?–µÙ?’hê?Š8/?€Aà?mI?^Àq?X’F?[ý?kf·?‚a­?4I?•ˆ ?’,?‰a‰?ƒÜÝ?…*­?ˆ ?‡‚[?‚}?€KM?… ?‰ª?‚° ?fzK?SBQ?Y¹{?pŠâ?…Öù?’¹˜?ëP?¦—ƒ?ªÙ?©"g?¥Vr?¤Ñ?¥á!?¥Ã?£s}?¡âü?¡çx?£#˜?£å?£V!?¡º?êr?™îã?›ìª?£Ö{?ª–?¬Ã™?­5?®–ð?°†y?¯Ù ?¬K ?©’?§iù?¦l?¤!? í‘?œêF?™WÊ?–É"?–1?˜c¸?›¬É?šš¬?‘Û?…'?p­H?U×ã?7›Ï?§>ø¼ã>Ücö>æ„Ì?ëM?¶ý?3ܬ?F“ð?Y5Ç?l2É?~r?…òA?‡æ©?†_J?„I•?ƒß^?ˆI”?‘b?˜lŠ?›¸?Ù¸?¡ï²?¥ïu?¥¸?¡Ñ?-A?žÝ\?£p(?¤J0? þ›?ŸS_?¡vµ?¡XC?—'º?ƒMõ?d}]?Z#5?Wÿ°?G¨÷?&dÞ?˜ã>Ïn>γi>øHM?Íã?4êr?Ndè?b/3?oÙf?}U'?‡ Ž?÷ä?§C–?­;b?´/?³¹?ª7)?¡ç?žÆn?£29?¨÷Å?­ä·?²$É?³`í?°Z?«ò ?ªp?¬·Ú?°³€?µÄ?¸6?¸®?µ{=?²`¶?°N¶?¯kø?­9Ó?¨‰?¡Ðæ?›pJ?’ä\?‡Ìæ?&É?€É?ˆý?’+ ?™ÙÂ?ŸD¾?¤o,?¨Ž”?ª?©`¡?§ûß?§).?§ÎX?©à+?¬³Ð?¯4Œ?°lý?° p?®Wø?«ž?©6æ?©B§?ª¡f?ªÌ–?ª"Ÿ?ªUÊ?«¢Ò?¬<=?«!?©Kÿ?§íû?§ Œ?¥Øq?£7é?Ÿþo?žÛf? Å?¤ºÜ?¨Kƒ?©Ìô?ªœÈ?«¡ì?«6Ë?§½ó?¡¿þ?œjÒ?›§Ô? >#?¦:?©?ž?©-Þ?§¢ù?¥d?›=\?œF£?œ·J?¶?ž”?¡,?£ib?¤qÈ?¥œ’?¨-Æ?ª”8?ªæÏ?©’½?¨Š$?¨ƒU?¨ -‡?¦ÿ?¢ôg? H!? Ï‚?¥”}?«J2?®ÿ‘?±‹°?²ñZ?°Ù?«R?¤ ?›^?’ÕÊ?š?—9@?¢K¯?ªj?¬ÜÉ?«”»?©nÙ?¨ã?¦¼¼?¤†®?¢@)?¢??¥>?¨¾?«+Ñ?«Îí?«e?«!\?¬’ø?¬Dt?¨^e?£JÐ?ŸËê?žô½? y´?£I?¦{?§Úˆ?§=r?§i?©Ï§?¬3Ë?©Øu?£ù¼?ŸŸ–? 4„?¥¨9?¬nŸ?°ƒó?±£Ç?±¢¼?¯¯p?ª“@?¤Y?žK×?™Öõ?—%¦?—Âò?šbç?œÒÌ? »¯?¦=š?©r|?§¹O?¢ÛÕ?ŸÓD?¢â?§ i?ª â?¨à?¤¢ß? Ãé?ž—Ï?œÔ -?›b ?›¥G?Æ??¡¨?£µ?£ƒw?¡1?œöL?––Ë?Þ?‹”?‰×š?Œ$Ò?ŽmB?ŽÑQ?­Ï?‹ ô?ˆS?‡ô?‡*?ˆ3û?Š -Ë?Œ§E?ÜË?—-? ¬?ªâ+?´Té?¹7?¸Ç±?¶¦?³z?®†Q?§ý‡?Ÿ_?–uˆ?“$²?—v?ŸòÁ?¨Äw?­‹a?­Û’?¬²ƒ?¬ )?«Ì?©ÇV?§ì?ž«/?ŽøI?}Á>?rT?xÂ?Œ_;?˜ð(?¡}?¥a"?¨º ?ªr´?ª\î?«£?­r…?«ÈD?¥Íq? ©~? µ?£ß-?§¾\?ªýR?¬×n?¬?«‡?¬¤×?¯W ?°îx?°ÖA?±A?±ll?¯MÀ?«Žd?©h?©•Û?ª`?ª:h?¨[«?¥5Î?¢}h?¢…1?¥ÿž?ª-Þ?«–x?©øø?¦ù}?¢ªç?›¶‰?”\?“2ò?š7?¢Ã‘?¨1m?©¼·?¨d±?¦Yˆ?¥Ó?¥ûE?¤ô?£¤Ä?¤ÞÞ?© -,?¬2?«Mò?§ˆu?¤pX?¤Wr?¤¨¸?¢,?žºœ?žæ¤?¡-÷?¢b?£Pç?§¡,?¬Ä™?¯©6?®ö?ª_¡?¤>L?¢Æ?¥Ê?©Ã?¬)?­kö?«:¥?§B$?¥!?¥… ?¦V™?§ ‘?¨}:?ªx?©îð?¨$¦?§¨›?¨a÷?¦Ãü?£i5?¡~'?¢gK?¥î‚?ªU?­+?«+ù?¦f?¢§?¡ù?¥Š¦?©§^?«„?ªw5?ªIp?ªb?©Øb?©-ª?§–á?¤\ž?¡"7? $?¢`?¡UÃ?¡5m?¡ç}?£1?£ÓÁ?£‹Z?¢rd?¢l?£l:?¤ÓB?¥q?¥wÕ?¦‹?¥Ý©?¥ p?¤á+?¤è!?£ef? jN?žMÁ?ÄÀ?°Ì?žoñ? ?¡Â?¡ î? *?Ÿjû? É€?¢1´?¡ Ô? ºü?¡¹?¡Ö{?¡Î4?¡²à?¢ys?¢·Û?¡â±? Ý?ŸÇâ?žtý?¾è?Ô ?ÐD?2Ñ?`?ž2?ž|5?œÌa?š±Ú?™‚c?˜™ ?—îÑ?˜n»?™ó/?›ªF?œ˜ù?›ú?›oÈ?œZ?œ·œ?œåÙ?œÍ?œ“H?œ ?œÊù?œóX?œãq?œÅ¦?œ´œ?œ²_?œ¬º?œ¯.?œË,?œÜ-?œáñ?œë?œ×U?œ¡¢?œ°?œl£?œeÖ?œp\?œ}Ò?œ{?œAÒ?›þ¶?›ñá?›üå?œË?œÛ?›ñ?›û?œ±?›ýû?›Å?›º7?›Åü?›™h?›‚û?›¬Ô?›Ÿ#?›Cj?šîå?šÛ.?šÖC?šÝ¿?šòÓ?šÇ@?šxÅ?š+‹?™Ïl?™{?™G¯?™;U?™D:?™:i?™Ý?™+?˜øÄ?˜Î?˜–‹?˜S’?—àŒ?—IŸ?–Þ?–€'?•é“?•$ ?”!ý?’Ë?‘ »?ŽÐ?‹aÄ?„½Y?on‰?L{?> S?UœÍ?wÊ?†¡Ñ?Œ'?`?‘\ú?’+?‘À²?‘ka?’À?” ÿ?”â‹?•7?•^?•>K?•°=?–?–É?•ï??•Ü“?•Í!?•Þš?– -C?•µ/?”:_?’_í?’cb?”B®?•µô?–*—?–=+?–<3?–§?–¸?–?•ãŠ?•¼?•Á#?–$š?–\È?–Bð?•õ¼?•ÊZ?•Ñ?•üÛ?–=>?–o«?–\Â?•æ¼?”Ä2?“o?’?’®?“t?“%!?“]í?”Š|?•4_?•H?”Åt?”†?”¾õ?”×^?”Á3?”ÒÛ?”Ú¹?” b?”SÞ?”7ì?”t´?”Èp?”ÿa?‰90?ˆua?Š5%?‹¼±?‹Ÿè?Š‚^?‰èW?Š},?‹Q?‹×)?ŒH?Œ?‹÷w?‹Ù„?‹Õn?‹Øz?‹Á@?‹€É?‹0ë?‹}?‹ û?‹/Ã?‹<’?‹4c?‹6°?‹@]?‹NÓ?‹I?‹#^?ŠÁ^?ŠR?Š’?‰ªY?ˆë?ˆ ?…ø©?ƒ¡N?„ô‘?ˆHá?‰òŸ?Š2?‰ÔÃ?‰åb?Š#³?Š¨?‰!?‰)Á?ˆ»0?ˆ¿H?‰9?‰­G?‰Ä?‰«ž?‰´º?‰«Ã?‰xZ?‰G{?‰0[?‰ ^?‰%q?‰:‹?‰=5?‰¨?ˆÿ‰?‰˜?ˆÐ†?ˆyÏ?ˆ2£?ˆ1&?ˆ™¹?ˆçt?ˆÔ·?ˆ¡B?ˆaQ?‡ñý?‡Ä@?ˆ-Ž?ˆ›¿?ˆk?ˆ:Ó?‡Á?‡5?‡i?…VA?ƒ¾$?…<â?‡vG?ˆ.}?ˆ;÷?ˆD.?ˆ ‘?‡É -?‡™?†õT?†Qà?†«®?‡š™?ˆ˜?‡¿Ç?‡„?‡|—?‡?l?†Ã‰?†å„?‡ÝÙ?ˆ¹r?‰8v?‰D@?‰B ?‰b?‰8á?ˆh?‡2“?†?…-?…û?…-“?„¤b?‚§p?½?„%k?‡1?ˆuU?ˆí:?ˆ­ ?‡Ó?†¡¶?…•`?„m?„®?†ïk?ˆKð?ˆAé?‡xÇ?†¢ ?…ãƒ?„ñ›?….Ò?…Ü:?ƒç!?üž?ƒx?„ÕÈ?…Z?„A¢?}Á²?vjK?|w>?‚áé?‚ý:?Ûî?€?‚Wž?úÙ?€ÇÊ?‚Ä?…¯L?†”ô?†áŒ?†Î{?…b¼?ñm?-p?„Â)?bÆ?c¦1?dEg?dUÝ?di?cH?c”?cÉö?d“ç?dÖæ?dË?aÔ¨?_K"?_a•?`µ?`J!?_¶’?`I?`º:?aoµ?bnd?b±9?b/»?aJ?`$Î?_Æÿ?`j–?`·ö?aÌ?aˆ?`S?^ï¸?^vW?^Ù—?_Mµ?_-Ó?^ìî?^œ?^.?^q ?_$½?^ÿ½?^˜ ?^>r?]ù?^*?^´?]ÖÌ?]èý?^8?]Õ¾?]j?]iØ?]k ?]À©?^Hà?^?]l‰?]<$?]S=?]4Ï?]V?\ÊD?\F5?\Ü?\C?\B?[î?[ØÅ?\?\W?\y?\$×?\g?\|¯?\w?\1>?\®?[¨I?[5?[ -?Zî?ZÞñ?[3£?[\i?[6?[d³?[Œj?[_8?Zîµ?ZŽ?Z?¨?Y•$?Y0?Z&|?[P¤?[aË?ZÍö?Z1š?YÈ?Ya4?YÃÄ?ZA‡?Zž—?ZÖ‚?ZÜ?ZÂb?Z9 ?Y´¾?Y±?Y¬ù?Yuù?Y]7?YtÆ?Y+f?XÐV?Xú¿?YD?YH?YeÊ?YGÎ?Y!?Y`Ô?Ype?YEª?XØá?XEÝ?XIï?XÉi?X¥o?Xj?Xq]?X¾´?Xæ7?Xæ?XÇí?Xª´?Xþb?Xðç?X?VÙ(?Vé?Wíò?Xdï?XS°?X²F?YE9?YGX?Y!°?X 6?WQÿ?Vë?X;È?Y?YE?XøŽ?XÉ`?X½M?XÀ?XÓ?XáÖ?X¥ý?X…Ž?XD?X)?X½?XÂÊ?WÐ?Uïd?U~9?Váp?W~{?W7Z?Wî?Wß?Wüã?W|:?Vã?Vž??V{“?V¥š?VÑZ?W"q?WlN?WL?Víº?VÝø?V÷’?VŽk?UËD?V ˜?V®Í?Vøµ?VòŠ?V|?UõŠ?Uχ?V?N?VYz?V(?Uú?U¿z?U°e?UÖµ?U½µ?UŠA?U?l?Tê˜?T¿w?T–Î?T¸?T ¹?T$?T ?T¸?Su?Rœ5?Rx_?Sfô?Só?S‹æ?S[ú?Sæ?S Ó?R·œ?S|?SS ?RéQ?RPŠ?R]ã?RŒ?R^ä?Q™¢?QZ×?QkD?Q`ü?Qù?PþØ?Q­?QÙp?Q]1?PÚj?P®\?PÕ ?QH?Pê?PØË?P¡T?Pg¢?OF -?JgF?B„±?@d,?D??G«Ì?Jó?Kî?M7…?LÏ?Kê?IÐæ?IŽÉ?I6…?Ig?IÇÉ?Ih?H!¨?I‹±?J"Y?IùÌ?Jpd?J ?JúE?K]?J¾!?KH÷?KLd?JŽî?Jµ¥?JÆ©?JqÕ?KT?KÜh?K_ó?K2?K†œ?KŽñ?KW?J¦Í?J›a?JûD?KÁ?JùI?Jè?J¶]?J“?J}ò?Jˆ\?J‡J?JPÇ?J`Š?JŒW?J“›?J§Œ?J¾d?J«b?JŽ%?J…?J_¶?JZ’?J˜ ?Jm?JŒ´?Jyf?J‹ ?JÞ¨?K*C?Jþõ?J}X?Jƒ¼?J±e?J¡ -?J|ø?JCH?JÜ?Iï‚?I½º?I´ë?Isõ?I ?IS7?I•¼?IM¬?H·8?I$Ü?I‡a?IR¸?I,?Hå_?Hô0?H¨$?HN?H#2?H+Þ?GÔi?G©"?GÒQ?GÑ~?GÒ?GÁà?GiÒ?GZ~?Gl?Gë?Fd®?Fݸ?G²Y?G¸A?FÁ5?E…ß?EÎf?F¸??Fܹ?FØL?F×ï?FÈœ?Fzú?EÇÚ?EÞ†?F/?EÞˆ?E^î?E,,?E(À?D©?BÂ=?CEà?D=†?D"c?Cÿ?Cèó?CiE?C›?BÙ^?B\þ?A™¨?@º?Aq‰?B/S?A^8?AWö?Ax?@°q?AŽù?BNE?A÷’??÷i?>Í??œl?@ÂÝ?AiŸ?BX?B~ -?Bt÷?Aõm?AöH?B@>?Aè‚?Aþ?@ç?@«ä??Ôk?>9®?"?>ÿÒ??Ú?>¯í?>ÿÞ??†*??›ˆ??@@?>vÙ?=çy?>«?>3?=Ýì?=ʈ?=z©?<~z?:ìé?:q`?:ó”?:D¯?8åî?7ðn?5[©?1Ö6?-hø?!nù?q>á Ô?K…?ÇO?,¿?2HS?6`?7¸¹?8Ĭ?9s?9ç6?9ñ?:£¯?<"ù?<Ò9?<Ÿ?;?<é?;ÎD?;Ä?:¹:?:¹G?;?;z?;Eb?;;?:ë?:H°?9}þ?9vç?9ä¿?:ê?9Õ¢?9y@?9xù?9ƒH?9`Æ?9W?9&‹?9`*?9z ?9SÆ?8ß?8Ç?7ç‹?8ož?8(?6© ?5f?6~S?7Õç?80?7¿Ò?7@?6Š?6ÜA?7N#?7K¯?7 d?6ˇ?7 -?7" ?6Ç?69–?3÷ø?2¹Â?4ï ?5üÇ?5Ô°?5†?5¥®?5}Z?4ïV?4Á|?4ë?4²ð?4f6?4Å/?5a ?5\ß?517?4ìÃ?4¤P?4‰/?4²¹?4àG?4Í‚?4Ž?4‚?4 ?4dØ?4HH?4²•?4ã ?4žž?4O1?4G“?4.Ð?40?4'å?4Uƒ?4|ˆ?4fî?4B?3ÿ@?3jÅ?3 ?2žr?0ÂF?.Þc?0Ž+?1´f?2®?2SÀ?2­?2ù?1öà?2#à?2‡¢?2‚'?1ç`?1žñ?1þ$?2+)?1q¦?/Êp?0Cˆ?1Å¿?2s?1û`?1»‡?1x??1?/žÿ?.Ui?.ÍÒ?0_S?10‘?1'€?1€?0ê ?0)¡?-ÝU?,õ)?. ?.¦ ?.Ì?/J×?01Ñ?0hÕ?0GL?05g?0 þ?0 f?0S?/ò9?/á’?/åÛ?/qi?.jT?.&÷?.—¦?.+™?. Ÿ?.åQ?/U!?/Q­?/:—?/"4?/1?.ë^?.êh?.ÿ?.€‘?-ïu?-Äj?.0?-ú?-4É?,=?+é&?,=?,lô?,eÚ?,,r?,Š­?,!$?,\W?-?-•?,éÞ?,¤Ó?, Ÿ?,þt?-ä?,åì?,á?,¶?+à ?*¥3?+K ?, ƒ?+õÇ?+‰R?+‘A?+˜³?+3[?+i_?+˜·?*þ?*]L?*çz?+fØ?+‰ -?+fæ?+4ª?+#?*°S?)f?(L?(?)#T?)ìQ?*@ã?*"®?)êé?*Sn?*w¹?)Ãû?)Mï?)¬?)°»?(èè?(Óe?) "?(òM?(þ­?)Ñ?)Qi?)ÜR?*ï?)SÒ?(ɺ?'Õ¢?'e}?'©M?'“V?&í?'™1?'Ï’?'¤u?'4 ?' ?'T?'m(?'§A?'Üá?'š?'¾?&ã?&o§?&Ž?&»â?&§E?&? '?›#?ñc?û[?~ã?¶?“6?e!?©1?äÂ?c`?ë_?•˜?‹?ÍX?ÞZ?Ôö?¼¦?W%?ýu?¿:?€º?™Ä?Zñ?Ÿ?Sû?#†?g•?÷\?¬?8Ú?%?ß?l?šz?Åz?j?\?,š?¸È??+ ?ªˆ?À·?ëJ?qx? ?µÆ?Î…?&Á?^l?I{?Þ‡?à?”ƒ?€l?Û?5T?u?-»?óÂ?¶"?ïg?•?Lç?c:?“?ªõ?žž?–ý?¦‘?Î?žw?‹R?§†?yu?ªL?¼?Âò?Ç?S™?|¼?Nm?í?¶Ð?ÓA?£½?¸Æ?B?ýb?L?5î?È?‡?DO?·? -Y? !? f?d}? „?Ó? 7?ôl?çÚ?Ì´?­?¤ü??J?&´?c£?Wi?N?G?- ?ƒÛ? Ù9? ‚\? BÏ?Ar? ²£? –-?yâ? -¿? 2x? ôw? ? å¥? í3? Ïó? eå? -Õ6? ’2? 8Ã? ºÆ? ­©? ¬m? á_? úV? îŠ? ? ·Å? Ýý? lh? ÿ„? ÿÁ? è? × ? WL? Uû? ï? #.? ™Ñ? Võ? «G? -××? -Ã$? ÙT? »Š? R? þÕ? ÄL? ²?? ´1? ¡W? -à’? Å>? º¨?¿¾?‡£?R“? ÷g? -Xï? -H? -VŸ? ÝÇ? ¨ ? ¸Ô? ïh? -5? òº? r?­Ï?¡Ž?µ[?Ú«? ?®`?j)?–*?“ç? ?Dõ?ÀŽ?§ê?ç\?©¬?vx?¡j?Ÿ×?ɦ?@Õ?w³?g? ~?œe?,‰?+!?Öˆ??2Ë?¡‡??ǽ?ì(?Ž?³¯?öë?ÖØ?l›?.“?ãâ?R?…Ç?àn?’?rô?Ÿ ?#4?ÎI? -­?â?Ëú?X?.?w??Î???Mœ?"Ë?ÒÍ?ç/?Ò?X ?Ëê?{å?+??Î?­;?–¨?jÔ?ŽQ?`\?8m?Ò2?ðU?ÞË?fi?“Í?_¢?"Þ?^™?Œ|?*?w? x?$?É$?°•?6?õ¨?A?—Z?U?mõ?ú?ó?Šr?j(?rK?/?üD?ï"?–î?HA?Ú+?Ò?ó£?R¿?_æ?•?¯¯?œ¹?äã?P,? ??g?Í?Y}?çr?µý?,£?CÑ?ÑÔ?+ë?×C?ï?6%>þr¨>ýP>ÿí?h>ÿÙ\>ÿ.D?©?÷>ÿ¨í?Qç?dv?1? 6>þ%í>þ+ý>ÿ0i>ÿ¬¤>ÿ³g>ÿl>þñ.>ÿ*‰>ÿÃ>þKœ>üµ/>ý7(>ü¨1>ý{œ>þ$&>ÿý>ÿl>ÿM>ÿ4Ý>þË”>þÀr>þq=>þ C>ý7M>ý#ñ>ýYD>ý^>ý³d>ýŸ>ýªç>ü47>ù">ûω>ý1{>üv)>ûC‰>ûf>úÏ>ù*>úò“>ý  >ýBÌ>ý$Ó>üêµ>ü¸I>üš£>ü‰i>üR>ü!W>ü;ë>ü-[>ü m>ûã>û¤G>û‹i>ûƒ%>ûcn>ûI®>ûD`>ûD>úq·>úSQ>úqC>ú€Ñ>ú{Ì>ùè­>ù?­>ùºù>ùì÷>ùæ&>ù®›>øï4>÷fö>ø"³>ùC">ùS>ùü>øò·>øã~>ù¼>øó­>ø:ã>öÏ>îçÝ>î¾d>ô÷`>ö“P>÷ìB>ö´Â>í<Ô>ê´Â>ò¯ >òvª>ñA[>óð¨>öps>õð>ô¤×>ôÀ?>ô@>ó¢>ó¬E>òÂ,>ì¨>ðjP>õ·>ö¾>õ1Ä>ðY?>í¹ú>ñGx>óŒâ>ôß’>ôœ >ô¡Á>ôšÛ>ôʯ>ñU*>ëóp>ð¶Ý>ó´>ò™6>ó>óù®>óm,>òï}>ó">ótr>ó>óÃÒ>óÄœ>ó^>ò_>ñ÷d>ò"ì>ògw>ò<¸>ñÐã>ñ.->ñ¿1>òkl>ñÇ>ðd‘>ðQî>ïàÕ>ïàš>ðru>ï¬ý>îçÞ>ïh?>ï„À>ïÁÚ>ï¹>ïSò>îS ->î‹œ>ïPó>îzÈ>ëþn>ì ü>í|‡>î?3>ïE«>î†O>ï">î÷ö>îS#>í6>í³>ìþN>í_>î\Ô>í…t>ìFs>ëN3>êå>ìtô>í¶>ît>íÜ>ë>êµ[>ëIƒ>ë¿Y>ëé¿>ì«>ì5~>ë”>>ëv>ë˜d>é¯b>è ”>ê%Ø>ë6>ë£à>ë¦L>ê1¬>ê -#>êD>ë7>ë³>ê;á>èü[>çìd>åé>èyç>é†Å>èl©>çׄ>è:>éè>éIâ>è“a>çib>æÅÄ>å>åâˆ>æ >冂>æª>æñ>æ¤Z>ç{>æï >æþÄ>ç7ù>ç[>çfP>ç\n>ç ½>æš>å‡>äóù>åïI>æëè>æz­>æ#œ>å]$>äñh>äÀ>ãå=>ãà–>äÂk>äΘ>ãwÁ>âöR>àdö>ÔN>×^€>à ¸>á®Ø>âí >ã~ä>ã¯o>㋶>ã8ý>â¸.>â">ã³¼>ãÕý>ã¸é>âõ‘>âœT>âu4>â…>â“S>â1Í>á&J>ÝËb>ËöU>ºÍ*>Љã>Ú¤3>ÝO>ÞOì>Þpä>ßpú>ÞÔ >Þë>ßÏ>àN˜>àn¨>à£>á&>á&>àþô>à6¸>߶Ñ>ßF>ßOŸ>߀0>ß4à>Þ©¬>Þæ>Ý¢0>Ý ½>ÝRo>Ü“·>Úúu>Ûzq>Ýî>ÞÚŸ>ߢ&>à >ßíü>à]ˆ>àZ>àk>à,ü>ߥÿ>Þ@Ë>Ýeƒ>Ý-È>Ý¥?>ÝÈf>Ýé&>ß?l>ß?>ß3P>ßÄ`>à.>à9#>ßnÑ>Þ¡é>ÞA%>Ý“5>Ü„ >Ü“'>Ûwª>×9I>ÃWì>à ë>Ô»2>ØÃÐ>Ùú¡>Ú²>ÛJ…>Ü%É>ÜT5>ÝØ>ÞXu>Þ™ >Ý™ç>Ûo2>ÙPM>ܤŸ>ÜJœ>Ûé¹>Ý>ÜçY>ܦº>ÜVô>ÛÛ™>ÜÚÃ>ÜÛM>Ýs¼>Ý|>ÝHÑ>Ý8Ú>Ý—x>Ý©=>Ý®Û>Üý’>ÛÝÓ>ÛbÜ>Úù˜>Ú¸>ÚOi>Ù—->Ù‹>ÙºÖ>Ù8*>Ø_˜>×k>Ô>Ô¸>Ö•ö>×Y>ؼš>ÚAÀ>ÙÞ>ÙÒí>ÙÛF>Ún¿>Ú¯>ÚÚû>Û ã>Ûìî>Ûï(>Ûè >Ûÿ¬>ÛõÜ>Û¡¶>Ûà€>Üç>Ü -í>Ûj“>Úi >Ú—ö>Úؽ>Ú\>ÙkT>Ö0ã>ÕþÀ>Ø8ð>Ù¥N>Ù“|>Ø—>×ö²>Ø8w>ׇ¹>ÕÙ>×]š>×ôx>ןÿ>Ö×>Õ€K>ÔªØ>Ôþ>ÔþÛ>ÖW>Ö÷>Õéè>Ö¨\>ÖÉ‹>Ö->ÔŽ->Òz¼>ϺA>ʶÐ>ÇE>ÊJÊ>ËÝê>Ϧ…>ÑD{>ÐÍi>Ð÷î>ÒU>ÒïØ>Ò‘x>ÑÓ >ÓÅß>Õ§]>Õç»>Ô­>Ô#L>ÖAX>ÖÛ>Õ—>Ö»n>ÖïŒ>Öüs>Öƒï>Ó” >ÎÀ×>Ô8d>Ö¶>Õ£®>Ô¯>Ôü>Òu>ÌúØ>Ìâ`>Óç<>ÕÞW>Õî>Ö¥>Öþ>Õžu>ÓìÃ>ÑK>Ò3ö>Ò·5>Ô9Þ>Ôü÷>Ôá>Ô¼Q>Ô†Á>ÔFM>Ó£¯>Ñœ»>ФÙ>Ò$¶>Ò¯8>Ñ‘D>Ï°ë>Ð?#>ÑÏ>ÑU<>ÐIg>Ð>Ïà£>Ï(è>Αœ>ÍÇ—>Ëí)>Ç/>ÇAâ>É”¢>ÇîÁ>ÃÉ>¾‡>»4>¶]>³Çß>¹ÊÎ>¾ôL>ÀÞ8>ÄÛ>Æñ>ȳÈ>ɧÑ>Ê”Ø>ÊÝ->Ê,â>Ësò>ÌŽL>Í ­>Í%“>Íi->Í_¶>̇É>Ìý>Íõ“>ͬ°>Éáq>º²O>½ï>Ì'>Î!'>ÍÖG>ÍØì>ÍÓ·>Ëm“>º>ņ:>Ì¢‚>͉å>Éš»>½u6>Ä>dz®>»íF>Ä?ñ>ÊAu>ËdÚ>˸0>Ë40>ˆ5>É >¿–s>Ä»E>ËU">ɺ›>ɘ9>ËN3>ËfL>Ëü>Ë9>˼>Ë(&>ËG>ÊîŽ>ËJ>Êó|>ÊÕñ>Ém >Ǻ>ɪ>ÊE&>Éæ>É«~>É¿{>ɶ+>É5±>ÈÛ>Èkà>ÈáÃ>ÈoÕ>LJ>ÆÀ1>ƾ$>Æî>Æ]>Å™t>Ænµ>Æo¦>ÆQ­>Æ 5>Å­l>Å1¦>Ä70>Ã,!>Âü¿> t>Áƒ(>¾õÝ>ºêˆ>³Šž>¸&ß>·à„>´òÖ>¶›æ>³]o>¬Á> žƒ>Ÿ„k>©wŽ>°BR>°Æî>°o>¸\>¹¹„>·ÎŒ>ºÌé>½ý„>¾}D>»Ý{>µ¹k>·ÒÓ>»ë>ºŒ>»C>»À!>¿¿¿>Áé¸>Â>Â>Â9ó>Â4‘>Â;Y>Â2Û>Â#*>Âô>À¾m>ÀæU>ÁLh>ÁJþ>ÁÃé>Áÿí>Áõ{>Á±÷>Á¥X>ÁV§>Á1>Áuã>Á†‹>¿q >¿ †>Ác>Á5>À÷s>Áo>Á#Å>Àï©>Àf>Àί>ÀÖ¶>À [>¿ü>À >À#X>¾®>¾ >¿i¥>¿x>¿2>¾hl>¾‡@>¿LI>¿«>¿p$>¾¤>½YK>¾Œ´>¾ãÂ>¾r >¾yO>¾aD>½m3>¼óÊ>½2>¼c>¼‘ß>½ÆD>¼åÿ>ºœÏ>·À>¬]Ž>´À[>º¶y>³j±>¨›>´ÕM>»Ê¢>¹Ow>¹ ­>¼B>»ô÷>º*¨>¸Î >¸æ>·î>³8×>·³›>¹ã>·_>¸ÕÓ>º_>º•§>¹˜÷>¹ >º-O>º+­>¹5Ÿ>¸ÖÝ>¹U¼>¹«˜>¹‹>¹@Ï>¹.>¹%õ>¸ûZ>¸­›>¸od>¸5þ>¸+>·Ö;>·yM>·]>¶Ów>¶¼T>¶\l>µ A>³>´Ña>µÒ>´kÃ>³ð>³›Í>²´>±ï£>±€4>°Tg>¯û>­h4>¬VX>ªR€>¨)‚>¥*7> d>˜4®>:y>@3>™è¸> Ñ>¥Ø>§ÍË>©íY>«h‰>¬l3>­•ó>®?Œ>¬ý>®š>¯³>¯òD>°î<>±Lg>±u‡>±\¨>±ŠY>±ìæ>±»>±i>±Êß>±çÑ>°ÔË>«;Ñ>­›>¯ÏF>±†Ä>²8Û>²CŽ>²;N>°®>¨ïõ>¬0q>°w>®N>°ñ7>°Fã>®s->¯íN>°K>°Øp>±†ì>±T‡>°u„>­xß>®š>®ýh>®>¤õ>ªXë>°2>°Aä>°z1>°N>®7d>®0W>®x6>®P\>¬´£>®œ>¯®‹O>­ É>¬Ùî>­Iþ>®~´>®¥R>®Û_>®~¹>®{Þ>®œj>®Ù>®²™>®½Þ>®¬5>®…¿>®fœ>®t>­î'>­Í£>­{5>­·«>­ l>«E»>¦Ô&>©bI>¬,Ä>¬u£>««>¬y¬>¬Ép>¬ûp>¬¶V>¬bn>¬!@>©Ç>ªÑ¼>«Ž'>«”W>¬e>¬.>¬Š>«ëü>«°Á>ªÈé>ª:À>©Ä\>ªzº>«ß>ªÖ˜>©ÒŽ>© >¨÷(>ª T>ª²ð>ª‹6>ª5“>ª>ªK§>ª3Ñ>©¶º>¨š”>©T£>©2À>¨Ýá>©v>¨™>¨.>¨ÓK>¨œ@>¨¯Ý>¨Úx>¨ÏÂ>¨¬>§ð>¦q¬>¦+d>¦’x>¤Ù>¤í;>§…¬>§¼ >§‹#>§Cï>§Y¼>§Š”>§r >§>¦ü%>¦Ó$>¤¾Š>ŸÂJ>¡™>¥ñ™>¥û{>¢Ô¯>¤9>¥É‡>¥Eñ>¥†Â>¥>£+ƒ>¢ÕV>¤qù>¥xj>¥`Ò>¥.9>¥š>¤o®> ñ>¢Š›>¤œW>¤†#>£“m>¢óL>£ãg>£ô(>£O«>¢´å>£UE>£OÎ>¢ðH>¢‚–>¢Œ>¢õ&>¢²\>¢P¾>¢nÂ>¢a}>¡ñ >¡Ü`>¡§x>¡i¢> å|> ÷v> ù>Ÿê>ŸÓ£>žÖØ>Ÿr†>Ÿœ >ŸŠÜ>ŸR!>žþ>žšx>ž/ã>µx>ý>œ‰à>›åo>šHÆ>™¸Ø>™‚>—§E>–•i>”ìá>’Ÿ:>v¼>Šäø>ƒ${>mÎD>k.>k>‰í>åà>‘þ>“]ú>”üÄ>•è‰>–Žó>˜~>˜ñ,>™|À>™ã˜>š6d>š@E>šk‰>›þ>›O®>›’>›¼ç>›ÜM>›ø>œ>›Çñ>›Ñ¾>›Ð8>›¿>›@ñ>›|•>œ -(>›×¡>—ÜÕ>•Å[>›3a>›óO>›óƒ>›óf>›Ì>>›ÑX>›µ >š|Þ>˜\«>šÂä>›~>›@Ž>šÝ×>šëi>›9Ò>™D'>–ä >š@Š>šö'>šá‘>šŸƒ>š¿i>š® >™è>•CÊ>—">š#+>š(#>™i>™¹>™à>™•0>™T,>™Is>™\>˜È{>™nB>˜á!>•Â >—P[>˜ý™>™ ˜>˜öT>˜Ø6>˜ÊÉ>˜Ö±>˜°z>—Ùá>—¹Ÿ>˜rß>˜TÖ>˜9Æ>˜:>˜(p>˜D>—ïâ>—߈>—Ã,>—“J>—ŽŠ>—‹>—pJ>—0>–õ—>—!Þ>—¾>—Õ>–Ùê>•O>’¦>•Û5>–“¦>–y³>–Ò>•’Ò>•¹ô>– ->•à“>•f>”m°>•l$>•®·>•>•nT>•aí>•=3>”ÓS>”’l>”Ûª>”ýC>”¦>“\;>ö·>“_e>“Ú'>”H¿>“ïG>”Î>”!Ã>”ü>“¾Æ>“€—>“Q&>Ž¼Ž>Ž‰Ô>“è>’»Í>’§ë>“9x>“+’>“Ž>’Ë1>’Ðs>’{ö>‘âÕ>’€I>’3>’L>‘Kˆ>‘x+>’'Ð>’"ø>‘÷¦>‘é­>‘ÜÓ>‘AN>¤ >Ã_>‘n>‘cz>‘*×>‘1ñ>‘ >ð1>èP>Ý>"„>)>Š&>„lÔ>‡è>‹Å©>ïà>ö>Ž1> ½>Wó>È=>Ó2>¡å>Ø>ŽìÒ>Žçq>,>4V>?>>Ž[>—¾>ŽŸv>Žxa>¯S>Ÿ™>¿¡>Œ{÷>Œ‰Ö>Œ„7>±Y>ã>Œéí>‹í8>Œ¨“>S>Ý>‹áˆ>Œý¥>aR>:ÿ>)>%ò>ŒÏ„>ŒÙ>Œ›>ŒÌ£>Œ©Å>ŒŸ>ŒrZ>‹¯p>‹Ã›>Œ•>‹Ü>‡¶æ>€ú­>‡r¯>‹ €>‹¹†>‹•9>‹9ù>‹6¤>†Ë—>„x>Š|)>‹r>Š†Ó>ŠÖT>ŠÔ*>ŠÖž>ŠÊY>Šƒ>†ÕÔ>†ª>ˆé÷>‡Ð›>‰î.>Š6§>Š#Ö>Š -&>‰é¦>‰Å>‰²”>‰˜g>‰ué>ˆ^>ˆÐ>†B>‰½>‰±>‰™>ˆÏV>ˆ|ï>ˆqo>…á\>t]:>szü>Yˆ>n°>rB'>+k>‡$3>‡j4>‡yÜ>…k‡>~)”>…_>‡}«>‡Mï>†6Ð>†Ìà>‡'>…†Ž>{ñ>w6>„Wó>†±->†Èa>†‰É>…ÇN>„°Å>ƒ_œ>|q>‚^°>‚”4>…‡½>…àe>…·–>…{¢>„F>„{Ô>…jL>…{›>…^>…0j>„¥>E>ya¸>‚+#>„Á‚>„qD>ƒ´9>ƒÿ>ƒë>ƒä™>ƒÊ’>}™£>oË+>¸>ƒfá>øã>~ˆ­>?\>pž™>vÙ>‚#>ñc>‚#’>‚_‚>}>{5Ð>'X>‚iö>‚b‘>‚KÄ>‚(>ñS>€¸Š>~À >}eD>eÃk>s(2>€E>€·T>€k>}¤î>vy„>wÇÅ>~oa>}jÏ>|†Þ>|Ø>|«ï>|O>zþç>y ¤>xÐk>vÌl>pP6>qÑK>r U>oÜg>lú>i>c¦ð>[Ì5>NÊ&>8“?>4ãx>K -ø>Y)¡>a/À>eÐa>eDK>hZ>h–‹>nO8>r%>lÝ>n–_>u[¼>vkÜ>vÕŽ>sò´>jv>l¿`>qµÃ>wz|>xøò>y5I>yj>y˜>y­*>yœx>yré>y­w>y¬ž>wvè>u¾>k@ñ>s†>y&Î>yŒ6>y…5>ybW>xÓˆ>y+h>xå³>xeò>x¿>wp—>x›>xä×>x5µ>wç->wð(>x_…>xl>xNÿ>x&¼>wðV>wæ&>w×À>w´‚>w'>vrG>wÖ>wð>w”>vã1>vb>vv›>vz>vi÷>v(“>v=>uê >u¬)>u7ï>r ->t">txM>s”X>n*i>pª+>q¬Ý>s–t>tXC>s¦”>qsB>s ->s\e>s¦n>sÑ>rdí>rÖñ>sM>s ¸>rï×>rÄl>r¤ÿ>rqK‘>qy >oæï>hté>hvC>päz>q'Y>oKƒ>o—>l ]>o£ß>p³¥>p˜>p)§>nË>o¼Ù>oíe>oË ->oŸ¼>o^>ot>oQ‡>od>ný§>nåî>nj:>mðl>mÒ;>hÿ>]2‹>c^>lþ‚>mWT>m„Ó>mbd>mO?>m,>lü»>lÇã>l¯¿>ly‰>hÃû>_Ü›>`l^>h’>i^ÿ>gCõ>hSa>h>>ióA>gdú>i:Þ>jW>j} >j=>iÏî>ià™>i™R>a -^>]Ø>gŽÀ>fÐ}>gðŸ>iF>h -.>h`Ö>hÕu>h©l>f´ñ>dÿõ>grê>hÔ>gàµ>g­Î>g Z>aZ^>d†>eH‰>]üÿ>`>c½¤>`3>`ßñ>f …>d±)>`^Ì>[i>V…t>`>cð >cKB>a7)>do>ch>apw>c¿‚>d&Q>dK,>dHª>cg«>^cá>aôô>_s>\q¯>^÷ >bE>c)w>c“>bûñ>bÓ‰>b—">b†Ü>b*Ç>aQÓ>aï`>a½½>a>`*q>`h×>aT.>aFD>`úe>`¿>`§¡>_=>_çD>`f”>`N_>`)8>_Èæ>]—™>]¹€>]Ïu>_@w>_é>_n>_ W>^T·>]Ž>^ƒ>^†r>^gý>^G'>]£:>[©®>]Â>]µè>]‘À>]IÝ>]4Á>] -—>\øl>\ê…>\Å0>\])>[!B>[±ò>Y˜ø>T|>Xƒý>[x>YOŽ>YÌ/>W&÷>RÞ>Qñ¨>YD)>YCê>T «>Xð¨>Z!>T•Ã>S¨ã>Y§B>Xñ(>SUû>U’>XÔ3>W©«>Uâ>U«!>T¢•>Rvÿ>FÚä>TÔ¼>Xo>S²>MŠ'>S'J>TÝ>W¡t>WuÖ>Wg†>VîÔ>Oè’>Rl >Vv¬>Vt>TÑ>UÎS>ViÛ>VNò>VÔ>UáÂ>U¯«>U˜3>U}´>U^D>U8j>UÍ>U5>Tµ°>T˜>Tx˜>T6ä>O¥>Dáö>HD>5vê>Gÿp>RÀ¾>Sg–>SqS>Sà>Q§>NÂ¥>OO/>Lê >Oè>K½Þ>Q¯ï>R_.>R6‹>R9>Q±8>MãË>NÄ9>Q~w>Pûè>M5Ù>Oi®>P²ð>NŠˆ>N¸~>NKm><Ò,>B³¥>O+D>Ow>F'Ô>IÔ£>O>Mô‰>IÔç>Nz>O#{>Nê,>MBÙ>HÚw>L®™>N‘k>NzC>NU©>Ms¤>G¡¡>Bé•>A©g>K¿Ë>IÝ>A7Ø>>æ >I5½>LÃö>Lå5>LП>L±4>LÜ>LkC>LU>L6Ê>L>Kë4>KÈg>K³ù>KŽ>Kn >KPò>K'š>Jú¿>Gc \ No newline at end of file diff --git a/templates/spBOSSEigenCVstar-55680.fits b/templates/spBOSSEigenCVstar-55680.fits deleted file mode 100644 index 459a0888d..000000000 Binary files a/templates/spBOSSEigenCVstar-55680.fits and /dev/null differ diff --git a/templates/spBsplineQSO-53115.fits b/templates/spBsplineQSO-53115.fits deleted file mode 100644 index fb747241a..000000000 --- a/templates/spBsplineQSO-53115.fits +++ /dev/null @@ -1,101 +0,0 @@ -SIMPLE = T /Dummy Created by MWRFITS v1.2 BITPIX = 8 /Dummy primary header created by MWRFITS NAXIS = 0 /No data is associated with this header EXTEND = T /Extensions may (will!) be present END XTENSION= 'BINTABLE' /Binary table written by MWRFITS v1.2 BITPIX = 8 /Required value NAXIS = 2 /Required value NAXIS1 = 60318 /Number of bytes per row NAXIS2 = 1 /Number of rows PCOUNT = 0 /Normally 0 (no varying arrays) GCOUNT = 1 /Required value TFIELDS = 9 /Number of columns in table COMMENT COMMENT *** End of mandatory fields *** COMMENT COMMENT COMMENT *** Column names *** COMMENT TTYPE1 = 'FULLBKPT ' / TTYPE2 = 'BKMASK ' / TTYPE3 = 'NORD ' / TTYPE4 = 'XMIN ' / TTYPE5 = 'XMAX ' / TTYPE6 = 'FUNCNAME ' / TTYPE7 = 'NPOLY ' / TTYPE8 = 'COEFF ' / TTYPE9 = 'ICOEFF ' / COMMENT COMMENT *** Column formats *** COMMENT TFORM1 = '2013E ' / TFORM2 = '2013I ' / TFORM3 = 'J ' / TFORM4 = 'E ' / TFORM5 = 'E ' / TFORM6 = '8A ' / TFORM7 = 'J ' / TFORM8 = '6027E ' / TFORM9 = '6027E ' / COMMENT COMMENT *** Column dimensions (2 D or greater) *** COMMENT TDIM8 = '( 3, 2009)' / TDIM9 = '( 3, 2009)' / END @7®@8Që@8õÂ@9™™@:=p@:áG@;…@<(õ@<ÌÍ@<Ôþ@<Ý/@<å`@<í’@<õÃ@<ýô@=%@=V@=‡@=¹@=&ê@=/@=7L@=?}@=G®@=Oß@=X@=`B@=hs@=p¤@=xÕ@=@=‰8@=‘i@=™š@=¡Ë@=©ü@=²-@=º^@=Â@=ÊÁ@=Òò@=Û#@=ãT@=ë…@=ó¶@=ûè@>@> J@>{@>¬@>$Ý@>-@>5@@>=q@>E¢@>MÓ@>V@>^5@>fg@>n˜@>vÉ@>~ú@>‡+@>\@>—Ž@>Ÿ¿@>§ð@>°!@>¸R@>Àƒ@>È´@>Ðæ@>Ù@>áH@>éy@>ñª@>ùÛ@? @? ->@?o@? @?"Ñ@?+@?33@?;e@?C–@?KÇ@?Sø@?\)@?dZ@?l‹@?t½@?|î@?…@?P@?•@?²@?¥ä@?®@?¶F@?¾w@?ƨ@?ÎÙ@?× -@?ß<@?çm@?ïž@?÷Ï@@@@1@@c@@”@@ Å@@(ö@@1'@@9X@@A‰@@I»@@Qì@@Z@@bN@@j@@r°@@zá@@ƒ@@‹D@@“u@@›¦@@£×@@¬@@´:@@¼k@@Äœ@@ÌÍ@@Ôþ@@Ý/@@å`@@í’@@õÃ@@ýô@A%@AV@A‡@A¹@A&ê@A/@A7L@A?}@AG®@AOß@AX@A`B@Ahs@Ap¤@AxÕ@A@A‰8@A‘i@A™š@A¡Ë@A©ü@A²-@Aº^@AÂ@AÊÁ@AÒò@AÛ#@AãT@Aë…@Aó¶@Aûè@B@B J@B{@B¬@B$Ý@B-@B5@@B=q@BE¢@BMÓ@BV@B^5@Bfg@Bn˜@BvÉ@B~ú@B‡+@B\@B—Ž@BŸ¿@B§ð@B°!@B¸R@BÀƒ@BÈ´@BÐæ@BÙ@BáH@Béy@Bñª@BùÛ@C @C ->@Co@C @C"Ñ@C+@C33@C;e@CC–@CKÇ@CSø@C\)@CdZ@ClŒ@Ct½@C|î@C…@CP@C•@C²@C¥ä@C®@C¶F@C¾w@Cƨ@CÎÙ@C× -@Cß<@Cçm@Cïž@C÷Ï@D@D1@Dc@D”@D Å@D(ö@D1'@D9X@DA‰@DI»@DQì@DZ@DbN@Dj@Dr°@Dzâ@Dƒ@D‹D@D“u@D›¦@D£×@D¬@D´:@D¼k@DÄœ@DÌÍ@DÔþ@DÝ/@Då`@Dí’@DõÃ@Dýô@E%@EV@E‡@E¹@E&ê@E/@E7L@E?}@EG®@EOß@EX@E`B@Ehs@Ep¤@ExÕ@E@E‰8@E‘i@E™š@E¡Ë@E©ü@E²-@Eº^@EÂ@EÊÁ@EÒò@EÛ#@EãT@Eë…@Eó¶@Eûè@F@F J@F{@F¬@F$Ý@F-@F5@@F=q@FE¢@FMÓ@FV@F^6@Ffg@Fn˜@FvÉ@F~ú@F‡+@F\@F—Ž@FŸ¿@F§ð@F°!@F¸R@FÀƒ@FÈ´@FÐæ@FÙ@FáH@Féy@Fñª@FùÛ@G @G ->@Go@G @G"Ñ@G+@G33@G;e@GC–@GKÇ@GSø@G\)@GdZ@GlŒ@Gt½@G|î@G…@GP@G•@G²@G¥ä@G®@G¶F@G¾w@Gƨ@GÎÙ@G× -@Gß<@Gçm@Gïž@G÷Ï@H@H1@Hc@H”@H Å@H(ö@H1'@H9X@HA‰@HI»@HQì@HZ@HbN@Hj@Hr°@Hzâ@Hƒ@H‹D@H“u@H›¦@H£×@H¬@H´:@H¼k@HÄœ@HÌÍ@HÔþ@HÝ/@Hå`@Hí’@HõÃ@Hýô@I%@IV@I‡@I¹@I&ê@I/@I7L@I?}@IG®@IOà@IX@I`B@Ihs@Ip¤@IxÕ@I@I‰8@I‘i@I™š@I¡Ë@I©ü@I²-@Iº^@IÂ@IÊÁ@IÒò@IÛ#@IãT@Ië…@Ió¶@Iûè@J@J J@J{@J¬@J$Ý@J-@J5@@J=q@JE¢@JMÓ@JV@J^6@Jfg@Jn˜@JvÉ@J~ú@J‡+@J\@J—Ž@JŸ¿@J§ð@J°!@J¸R@JÀƒ@JÈ´@JÐæ@JÙ@JáH@Jéy@Jñª@JùÛ@K @K ->@Ko@K @K"Ñ@K+@K33@K;e@KC–@KKÇ@KSø@K\)@KdZ@KlŒ@Kt½@K|î@K…@KP@K•@K²@K¥ä@K®@K¶F@K¾w@Kƨ@KÎÙ@K× -@Kß<@Kçm@Kïž@K÷Ï@L@L1@Lc@L”@L Å@L(ö@L1'@L9X@LA‰@LI»@LQì@LZ@LbN@Lj@Lr°@Lzâ@Lƒ@L‹D@L“u@L›¦@L£×@L¬@L´:@L¼k@LÄœ@LÌÍ@LÔþ@LÝ/@Lå`@Lí’@LõÃ@Lýô@M%@MV@M‡@M¹@M&ê@M/@M7L@M?}@MG®@MOà@MX@M`B@Mhs@Mp¤@MxÕ@M@M‰8@M‘i@M™š@M¡Ë@M©ü@M²-@Mº^@MÂ@MÊÁ@MÒò@MÛ#@MãT@Më…@Mó¶@Mûè@N@N J@N{@N¬@N$Þ@N-@N5@@N=q@NE¢@NMÓ@NV@N^6@Nfg@Nn˜@NvÉ@N~ú@N‡+@N\@N—Ž@NŸ¿@N§ð@N°!@N¸R@NÀƒ@NÈ´@NÐæ@NÙ@NáH@Néy@Nñª@NùÛ@O @O ->@Oo@O @O"Ñ@O+@O34@O;e@OC–@OKÇ@OSø@O\)@OdZ@OlŒ@Ot½@O|î@O…@OP@O•@O²@O¥ä@O®@O¶F@O¾w@Oƨ@OÎÙ@O× -@Oß<@Oçm@Oïž@O÷Ï@P@P1@Pc@P”@P Å@P(ö@P1'@P9X@PAŠ@PI»@PQì@PZ@PbN@Pj@Pr°@Pzâ@Pƒ@P‹D@P“u@P›¦@P£×@P¬@P´:@P¼k@PÄœ@PÌÍ@PÔþ@PÝ/@På`@Pí’@PõÃ@Pýô@Q%@QV@Q‡@Q¹@Q&ê@Q/@Q7L@Q?}@QG®@QOà@QX@Q`B@Qhs@Qp¤@QxÕ@Q@Q‰8@Q‘i@Q™š@Q¡Ë@Q©ü@Q²-@Qº^@QÂ@QÊÁ@QÒò@QÛ#@QãT@Që…@Qó¶@Qûè@R@R J@R{@R¬@R$Þ@R-@R5@@R=q@RE¢@RMÓ@RV@R^6@Rfg@Rn˜@RvÉ@R~ú@R‡+@R\@R—Ž@RŸ¿@R§ð@R°!@R¸R@RÀƒ@RÈ´@RÐæ@RÙ@RáH@Réy@Rñª@RùÛ@S @S ->@So@S @S"Ñ@S+@S34@S;e@SC–@SKÇ@SSø@S\)@SdZ@SlŒ@St½@S|î@S…@SP@S•@S²@S¥ä@S®@S¶F@S¾w@Sƨ@SÎÙ@S× -@Sß<@Sçm@Sïž@S÷Ï@T@T1@Tc@T”@T Å@T(ö@T1'@T9X@TAŠ@TI»@TQì@TZ@TbN@Tj@Tr°@Tzâ@Tƒ@T‹D@T“u@T›¦@T£×@T¬@T´:@T¼k@TÄœ@TÌÍ@TÔþ@TÝ/@Tå`@Tí’@TõÃ@Týô@U%@UV@Uˆ@U¹@U&ê@U/@U7L@U?}@UG®@UOà@UX@U`B@Uhs@Up¤@UxÕ@U@U‰8@U‘i@U™š@U¡Ë@U©ü@U²-@Uº^@UÂ@UÊÁ@UÒò@UÛ#@UãT@Uë…@Uó¶@Uûè@V@V J@V{@V¬@V$Þ@V-@V5@@V=q@VE¢@VMÓ@VV@V^6@Vfg@Vn˜@VvÉ@V~ú@V‡+@V\@V—Ž@VŸ¿@V§ð@V°!@V¸R@VÀƒ@VÈ´@VÐæ@VÙ@VáH@Véy@Vñª@VùÛ@W @W ->@Wo@W @W"Ñ@W+@W34@W;e@WC–@WKÇ@WSø@W\)@WdZ@WlŒ@Wt½@W|î@W…@WP@W•@W²@W¥ä@W®@W¶F@W¾w@Wƨ@WÎÙ@W× -@Wß<@Wçm@Wïž@W÷Ï@X@X1@Xc@X”@X Å@X(ö@X1'@X9X@XAŠ@XI»@XQì@XZ@XbN@Xj@Xr°@Xzâ@Xƒ@X‹D@X“u@X›¦@X£×@X¬@X´:@X¼k@XÄœ@XÌÍ@XÔþ@XÝ/@Xå`@Xí’@XõÃ@Xýô@Y%@YV@Yˆ@Y¹@Y&ê@Y/@Y7L@Y?}@YG®@YOà@YX@Y`B@Yhs@Yp¤@YxÕ@Y@Y‰8@Y‘i@Y™š@Y¡Ë@Y©ü@Y²-@Yº^@YÂ@YÊÁ@YÒò@YÛ#@YãT@Yë…@Yó·@Yûè@Z@Z J@Z{@Z¬@Z$Þ@Z-@Z5@@Z=q@ZE¢@ZMÓ@ZV@Z^6@Zfg@Zn˜@ZvÉ@Z~ú@Z‡+@Z\@Z—Ž@ZŸ¿@Z§ð@Z°!@Z¸R@ZÀƒ@ZÈ´@ZÐæ@ZÙ@ZáH@Zéy@Zñª@ZùÛ@[ @[ ->@[o@[ @["Ñ@[+@[34@[;e@[C–@[KÇ@[Sø@[\)@[dZ@[lŒ@[t½@[|î@[…@[P@[•@[²@[¥ä@[®@[¶F@[¾w@[ƨ@[ÎÙ@[× -@[ß<@[çm@[ïž@[÷Ï@\@\2@\c@\”@\ Å@\(ö@\1'@\9X@\AŠ@\I»@\Qì@\Z@\bN@\j@\r°@\zâ@\ƒ@\‹D@\“u@\›¦@\£×@\¬@\´:@\¼k@\Äœ@\ÌÍ@\Ôþ@\Ý0@\å`@\í’@\õÃ@\ýô@]%@]V@]ˆ@]¸@]&ê@]/@]7L@]?}@]G®@]Oà@]X@]`B@]hs@]p¤@]xÕ@]@]‰8@]‘i@]™š@]¡Ë@]©ü@]²-@]º^@]Â@]ÊÁ@]Òò@]Û#@]ãT@]ë†@]ó¶@]ûè@^@^ J@^{@^¬@^$Þ@^-@^5@@^=q@^E¢@^MÓ@^V@^^6@^fg@^n˜@^vÉ@^~ú@^‡+@^\@^—Ž@^Ÿ¿@^§ð@^°!@^¸R@^À„@^È´@^Ðæ@^Ù@^áH@^éy@^ñª@^ùÜ@_ @_ ->@_o@_ @_"Ñ@_+@_34@_;e@_C–@_KÇ@_Sø@_\)@_dZ@_lŒ@_t½@_|î@_…@_P@_•@_²@_¥ä@_®@_¶F@_¾w@_ƨ@_ÎÚ@_× -@_ß<@_çm@_ïž@_÷Ï@`@`2@`b@`”@` Å@`(ö@`1'@`9X@`AŠ@`I»@`Qì@`Z@`bN@`j@`r°@`zâ@`ƒ@`‹D@`“u@`›¦@`£×@`¬@`´:@`¼k@`Äœ@`ÌÍ@`Ôþ@`Ý0@`å`@`í’@`õÃ@`ýô@a%@aV@aˆ@a¹@a&ê@a/@a7L@a?}@aG®@aOà@aX@a`B@ahs@ap¤@axÕ@a@a‰8@a‘i@a™š@a¡Ë@a©ü@a²-@aº^@aÂ@aÊÁ@aÒò@aÛ#@aãT@aë†@aó¶@aûè@b@b J@b{@b¬@b$Þ@b-@b5@@b=q@bE¢@bMÓ@bV@b^6@bfg@bn˜@bvÉ@b~ú@b‡+@b\@b—Ž@bŸ¿@b§ð@b°!@b¸R@bÀ„@bÈ´@bÐæ@bÙ@báH@béy@bñª@bùÜ@c @c ->@co@c @c"Ñ@c+@c34@c;e@cC–@cKÇ@cSø@c\)@cdZ@clŒ@ct½@c|î@c…@cP@c•@c²@c¥ä@c®@c¶F@c¾w@cƨ@cÎÚ@c× -@cß<@cçm@cïž@c÷Ï@d@d2@dc@d”@d Å@d(ö@d1'@d9X@dAŠ@dI»@dQì@dZ@dbN@dj@dr°@dzâ@dƒ@d‹D@d“u@d›¦@d£×@d¬@d´:@d¼k@dÄœ@dÌÍ@dÔþ@dÝ0@då`@dí’@dõÃ@dýô@e%@eV@eˆ@e¹@e&ê@e/@e7L@e?}@eG®@eOà@eX@e`B@ehs@ep¤@exÕ@e@e‰8@e‘i@e™š@e¡Ë@e©ü@e².@eº^@eÂ@eÊÁ@eÒò@eÛ#@eãT@eë†@eó¶@eûè@f@f J@f{@f¬@f$Þ@f-@f5@@f=q@fE¢@fMÓ@fV@f^6@ffg@fn˜@fvÉ@f~ú@f‡+@f\@f—Ž@fŸ¿@f§ð@f°!@f¸R@fÀ„@fÈ´@fÐæ@fÙ@fáH@féy@fñª@fùÜ@g @g ->@go@g @g"Ñ@g+@g34@g;e@gC–@gKÇ@gSø@g\)@gdZ@glŒ@gt½@g|î@g…@gP@g•@g²@g¥ä@g®@g¶F@g¾w@gƨ@gÎÚ@g× -@gß<@gçm@gïž@g÷Ï@h@h2@hc@h”@h Å@h(ö@h1'@h9X@hAŠ@hI»@hQì@hZ@hbN@hj@hr°@hzâ@hƒ@h‹D@h“u@h›¦@h£Ø@h¬@h´:@h¼k@hÄœ@hÌÍ@hÔþ@hÝ0@hå`@hí’@hõÃ@hýô@i%@iV@iˆ@i¹@i&ê@i/@i7L@i?}@iG®@iOà@iX@i`B@ihs@ip¤@ixÕ@i@i‰8@i‘i@i™š@i¡Ë@i©ü@i².@iº^@iÂ@iÊÁ@iÒò@iÛ#@iãT@ië†@ió¶@iûè@j@j J@j{@j¬@j$Þ@j-@j5@@j=q@jE¢@jMÓ@jV@j^6@jfg@jn˜@jvÉ@j~ú@j‡+@j\@j—Ž@jŸ¿@j§ð@j°!@j¸R@jÀ„@jÈ´@jÐæ@jÙ@jáH@jéy@jñª@jùÜ@k @k ->@ko@k @k"Ñ@k+@k34@k;e@kC–@kKÇ@kSø@k\)@kdZ@klŒ@kt½@k|î@k…@kP@k•@k²@k¥ä@k®@k¶F@k¾w@kƨ@kÎÚ@k× -@kß<@kçm@kïž@k÷Ï@l@l2@lc@l”@l Å@l(ö@l1'@l9X@lAŠ@lI»@lQì@lZ@lbN@lj@lr°@lzâ@lƒ@l‹D@l“u@l›¦@l£Ø@l¬@l´:@l¼k@lÄœ@lÌÍ@lÔþ@lÝ0@lå`@lí’@lõÃ@lýô@m%@mV@mˆ@m¹@m&ê@m/@m7L@m?}@mG®@mOà@mX@m`B@mhs@mp¤@mxÕ@m@m‰8@m‘i@m™š@m¡Ë@m©ü@m².@mº^@mÂ@mÊÁ@mÒò@mÛ#@mãT@më†@mó¶@mûè@n@n J@n{@n¬@n$Þ@n-@n5@@n=q@nE¢@nMÓ@nV@n^6@nfg@nn˜@nvÉ@n~ú@n‡+@n\@n—Ž@nŸ¿@n§ð@n°!@n¸R@nÀ„@nÈ´@nÐæ@nÙ@náH@néy@nñª@nùÜ@o @o ->@oo@o @o"Ñ@o+@o34@o;e@oC–@oKÇ@oSø@o\)@odZ@olŒ@ot½@o|î@o…@oP@o•‚@o²@o¥ä@o®@o¶F@o¾w@oƨ@oÎÚ@o× -@oß<@oçm@oïž@o÷Ï@p@p2@pc@p”@p Å@p(ö@p1'@p9X@pAŠ@pI»@pQì@pZ@pbN@pj@pr°@pzâ@pƒ@p‹D@p“u@p›¦@p£Ø@p¬@p´:@p¼k@pÄœ@pÌÍ@pÔþ@pÝ0@på`@pí’@põÃ@pýô@q%@qV@qˆ@q¹@q&ê@q/@q7L@q?}@qG®@qOà@qX@q`B@qhs@qp¤@qxÕ@q@q‰8@q‘i@q™š@q¡Ë@q©ü@q².@qº^@qÂ@qÊÁ@qÒò@qÛ#@qãT@që†@qó·@qûè@r@r J@r{@r¬@r$Þ@r-@r5@@r=q@rE¢@rMÓ@rV@r^6@rfg@rn˜@rvÉ@r~ú@r‡,@r\@r—Ž@rŸ¿@r§ð@r°!@r¸R@rÀ„@rÈ´@rÐæ@rÙ@ráH@réy@rñª@rùÜ@s @s ->@so@s @s"Ñ@s+@s34@s;e@sC–@sKÇ@sSø@s\)@sdZ@slŒ@st½@s|î@s…@sP@s•‚@s²@s¥ä@s®@s¶F@s¾w@sƨ@sÎÚ@s× -@sß<@sçm@sïž@s÷Ï@t@t2@tc@t”@t Å@t(ö@t1'@t9X@tAŠ@tI»@tQì@tZ@tbN@tj@tr°@tzâ@tƒ@t‹D@t“u@t›¦@t£Ø@t¬@t´:@t¼k@tÄœ@tÌÍ@tÔþ@tÝ0@tåa@tí’@tõÃ@týô@u%@uV@uˆ@u¹@u&ê@u/@u7L@u?}@uG®@uOà@uX@u`B@uhs@up¤@uxÕ@u@u‰8@u‘i@u™š@u¡Ë@u©ü@u².@uº^@uÂ@uÊÁ@uÒò@uÛ#@uãT@uë†@uó·@uûè@v@v J@v{@v¬@v$Þ@v-@v5@@v=q@vE¢@vMÓ@vV@v^6@vfg@vn˜@vvÉ@v~ú@v‡,@v\@v—Ž@vŸ¿@v§ð@v°!@v¸R@vÀ„@vÈ´@vÐæ@vÙ@váH@véy@vñª@vùÜ@w @w ->@wo@w @w"Ñ@w+@w34@w;e@wC–@wKÇ@wSø@w\)@wdZ@wlŒ@wt½@w|î@w…@wP@w•‚@w²@w¥ä@w®@w¶F@w¾w@wƨ@wÎÚ@w× -@wß<@wçm@wïž@w÷Ï@x@x2@xc@x”@x Å@x(ö@x1'@x9X@xAŠ@xI»@xQì@xZ@xbN@xj@xr°@xzâ@xƒ@x‹D@x“u@x›¦@x£Ø@x¬@x´:@x¼k@xÄœ@xÌÍ@xÔþ@xÝ0@xåa@xí’@xõÃ@xýô@y%@yV@yˆ@y¹@y&ê@y/@y7L@y?}@yG®@yOà@yX@y`B@yhs@yp¤@yxÖ@y@y‰8@y‘i@y™š@y¡Ë@y©ü@y².@yº^@yÂ@yÊÁ@yÒò@yÛ#@yãT@yë†@yó·@yûè@z@z J@z{@z¬@z$Þ@z-@z5@@z=q@zE¢@zMÓ@zV@z^6@zfg@zn˜@zvÉ@z~ú@z‡,@z\@z—Ž@zŸ¿@z§ð@z°!@z¸R@zÀ„@zÈ´@zÐæ@zÙ@záH@zéy@zñª@zùÜ@{ @{ ->@{o@{ @{"Ñ@{+@{34@{;e@{C–@{KÇ@{Sø@{\)@{dZ@{lŒ@{t½@{|î@{…@{P@{•‚@{²@{¥ä@{®@{¶F@{¾w@{ƨ@{ÎÚ@{× @{ß<@{çm@{ïž@{÷Ï@|@|2@|c@|”@| Å@|(ö@|1'@|9X@|AŠ@|I»@|Qì@|Z@|bN@|j@|r°@|zâ@|ƒ@|‹D@|“u@|›¦@|£Ø@|¬@|´:@|¼k@|Äœ@|ÌÍ@}p¤@~{@~¸R@\)@`@}p¤legendre>>™ÿ¿@}Ñ>—&>è÷J¿^<Ò?bêV?Õ|µ?ˆ q@.<½‘EÕ¿î §;§´n?×Ù%?L)#@@k8¿ÕÆ]À‘§äÀ0IÐ@jä@qê@¼x¿ÂhÀ_ !¿ ¯~>”;¿Äþh?_áx¿$Ø ÀpUˆ¿RP@k¿?îîo@Z ¿ØÎïÀ¬?Z¿ømÐ?ȼپ»lû@(ŒÛ?5ŸO¿”ä5?— û¿CتÀyfÔ¿=ßà¿Ï™#ÀÄ ©¿å«é¿")Àƒ›¿r°U@?‚9Ä@Yc`¿¯½À¯Hò¿ÞÇ@¥S½:µØ@b©ê¾ÓVÀxí[¿0[¯@ß= ‰§@N§<Ñ®ãÀO&^>‡ÞX¾ä-`À@¾K/p?è}>¾Û"\@<ž«?áÛ¨¿l»@Iö½?+æþÀ&´¯?ïØ>ö™¿ÀlIÌ?ˆa@ -ñ¿‚ª@GÛÔ?ñ[•¿'j¶@Wà>£ Àe:€¾€ŠR?@—ÀUu?Å2j¿ÝC˜ÀæX™ÀJUn@[¿gï@}ÀÅÀ-‰ ÁmJÀ„b@?>€¡À6B?·ÚM>çêFÀlÓ>­³E¿¼ý„ÀûaŠÀF?‰­âÀ-v?‚pÓ?”7BÀOƒÚ@òÜÀ˪ÁcÉÀ\†¶@bb}?Œ~v@©ÁÑ¿B^WÀÇ×Ï¿r‡@#J¿Šmj@oó¿ß÷áÀûèÀ@û_@S¸î¾‚ùÒ@ª,½ÀEɽÁ%{^À¡ü? N}À–—¸>‹Æq>‘lhÀ¿8ˆ? ® -À DÑÁøáÀoá@1C¿Ú½*@ŠCº? -t·À§WÀ?gÃ?‘8#Àuº?¸_!¿âçÀÝκ¿¯=>OÑÀ¼mž§£¼¾Þ$8ÀÅz€¿Ô>¿ßGÓÁAÀ2À$?‚º™ÀlÅ>à -yÀ=%ÍÁ/w‚À¨Ês¿ÂB5Á oÀ*8? ç›ÀŒî$>ºé ¿´»‹Á0ÀX”Ç¿:ÆsÀãSÀÅÑ>4ÊRÀ°C‰¾¶U›¾xMÀÊé¿q²t½¸H€À´O¿¼¼ÀBoPÁ7u€ÀŸñ¾ lxÀ´¶R¿¿%©¿ÃúÁXæÀ\¢˜¼¤bdÀ¶±i¿{è¿„z¡ÀûïÀØ÷xÀ«l`¿µ¿Z¯Àü–áÀ\ç±>Ó)ÀÃëL=«§y¿ãµ Á× À¤sŒ?þ®¤ÀƒVd@,,¶¿©k Á#PÀ¥øŸ¿Áw¬Á&Ö,À‘±á¿¬íÁóÀK‡¿¤Á -ÄÀŠÙWÀAI¸ÁDîÀ䉉¾’>UÁ8¡Àb/À>+{ÁEeÀñTªÀ£´Á0…"ÀŒ@¿±f®ÁÉÀšç;£ÿ%Àù%ÞÀ3„ ÀkXYÁ[ã Á -𠿬 -Á¹ÅÀaÙ‹À†æmÁfe8ÁÍM>¹öÀõ°Õ¿ÐÌ?¿ÜÄÓÁ3À«6VÀ_ÅÁ]4ÀõTÀ#Á7ÖÀëèÀ¤ÈÁãUÀÕdÔ¿»öÙÀBíÁ#qÀÕ"¦À$@Á3!†ÀîCM¿Ó`NÁ yÀ¸¾®ÀLË\ÁF¨$Á.ð?t­À°½À IÀUÝaÁJØÁØG@ ½ÞÀfG¾bŽ¿é]£Á'{³ÀÙ7À”hÁs 1Á,›?Š~šÀºs~ÀcŽ¿üä¶Á,ž†Àç5½¿¨>Á+òsÀÑ-“¿hƒvÁxÀ«š¤>×ÍãÀó|¢Àœø#À?ÁD‹ÀùAž¿“ÝÁ(‹ÀÞ[Ѿ‘UMÁ×ZÀÓX¿á–½ÁC?°ÁØ@ tÝÀ®{пÐÎú¿¾DåÁN·Ám?×ýÄÀîØßÀ…½é?ȵÁŠ`À…?åöãÀþŠyÀzÜó>«úrÁ2ÓÀÅhª¾ÉM-Á7˜ÀõD>€¶ÐÁ/ìÀÀÙäF>µ®…Á)ÀºÑ½íÃ2Á92šÁ¯r?0@£Á";À¿• À oˆÁ`¾¤Á"sÿ?Ž‘Àý:›À„Ç¿‡|Á"ZêÀêrÓ?$ºÁ¼>ÀÖ$¾=O·Á ¬À·8 ?€ŠyÀÙ!À‹)t=—ÁÇŸÀ `8>1ÑwÁv¾À­þ½M>ÇÁý‡À¼?¶?°ÛÀÂQ¼À+ª™?ÅxuÀ¼‡ûÀQFÿ¾È˜Á ÌÀ»ÆÌ?·†^ÀÂq‚À@Fº@ߥÀ‚;Ø¿Ø"Ò@¨À”8¡¿ûs¿v}ÁÍ0ÀÅuâ@›$‚¾”O?ù¼B?ƒ¨ÀÒ´Ào'÷@9"Àk ¾ÊŽ@8rÀjË¿Âïë@ ±÷À†0Ñ¿®@æ@+Ú¸ÀŒX¿³;5@/šùÀ}ÏÒ¿–æ@>Àlîß¿Š\?²?ÀµðeÀgô @5MýÀ‚ͼ¿V?ÀŠÆÀÉõ–ÀG€¶@1cÀ‰aê¿€"ð@JRÀaTõ¿²Í”@o¢À¡»ä¿ÁRg@4ÁñÀtA'¿°Eä@< ÀqÅ¿3P›@QV À,@v½ú\@FÚðÀLo$¿r†î@Â}ÀŽƒ“¿­Ÿê@€0²¿ÝöÍ?qb°@ xÀ—Oå¿ûzS@WqmÀ(}¥¿S“@¼NÀˆA^¿{Ò@nŸì¿î!#>0Z@BfêÀ8&¾D‹J@# 'À}ù¿Ï1@JqÀ,z§¾¨Na@„輿gª?ËÎ:@DPúÀ/ˆ¾Öi¾@AU9À,Î?D4¥@ÖëÀnÙ ¿µ«õ@m}S¿¯V?Œ,|?‹6"À»§|À5ÍÔ@A¸ÌÀ'î‹»œ?¦JŒÀ´_õÀRÚ@SÜÀÝX>ÄäA?î^À†àÍ¿Õ'@aÓ³¿Ûóƒ?zJ?¸§{ÀªªÀ @=·ÕÀ9Aù¾þ4@N¶À kƒ?+yÅ@IyÀ0–¾"K©@¤ÛÀfø¿Qß;@M‡ÃÀ@¤.<}øt@^賿و‹¾C¬'@<ÁÀ‡MT¿`Á @sÕn¿ÎzÚ>G©Œ@lÊÀ™Ý‰¿ÓÑC@q‹»¿ÕYf?CÂ@({ Às!½¿udR@AÃlÀPõȾ¡gä@zÖœ¿Çð‘?u”R@coÀ ’Ÿ½®+¡@R\þÀ%Âf¾¦¹@^ïfÀ#ÊF?Sä@'T®Àw–ð¿•gá@s¡’¿ê$?RS¾@fuÀ|¾>4‹S@6ä¦ÀPQù¾µAÏ@/~ùÀO¸]¿h6@ ÀŠýò¿„¨@T; -ÀÿI½ÍGl@LObÀ.ø0>3T@lŠè¿ÈH{?î/@]õÀƒÇ•¿¨=Y@ûcÀkÚ”¾÷U®@DeÃÀ ¾çV¡@x|œ¿Ÿxª?¸R¿@O‰ÀvOB¿„v@j”¿Ø§·?2ø@’ŽÀd®¿> @R©rÀl=Ù8@2­}À9Ý¿Ú]@î€ÀŒÑx¿·ùã@NT¼ÀÓ=Ë«[@™6À‰‹Ò¿´ú"@.O×ÀZ±ï¿ee¨@ALÀ#­'¾À&Ÿ@GìÀ=ÇX½\ðÍ@&ÀeßÔ¿f=@6BÀO½e¿®^@r-É¿Íh?ìë@' CÀk g¿‡Y‹@V¸À$;¾fpr@‡ÙÀ€¨¿Üõþ@jAQÀ ÇÍ>‰t@PÕ•À _$@gqtÀ36¡¾Ó4@#ÂÀœhî¿ìéý@‚WÀz#>_4@&øÐÀžû:ÀŠƒ@žUú¿{5§?àÅv@1!EÀŸÙ¿ßD‰@ƒ¶À†œ¿Ìš@“˜K@`6“ÀˆÍ}¿Ø(§@€FÀVCÜ¿VT(@/1_À·KÀKV<@œ ÛÀº¨>‹A@€Ài´¾ûñ.@žÐ!À>‹¿6LV@½˜¿ùçµ?•»¯@QÀ}¨X¿ñí @ÓÏ¿Ê<‹?ŒÞ@‘dŽÀ³¶WÀ¢@ÛâM¿ü.?ì¢@Ç®ˆÀ_¢¬¾è 6@à÷ÀG7¿`¿Å@ÌÏÀ¢X½¿@CA TJ¿Ýb¢¾²4A!“¿¿Tn@ Â/A KÚÀnê¿š¶†ACýz?TFb?½UoA&oGÀvY”À9:‰AóÞ@µaH@ËnˆA™L@è;Á@hufA°u•AK@¤tøA¨Õ(@¶ì™?ƒÅýA‰Õq?Só.Àr¡°A¢t«A¤ç@iYA|VÖ?â'•¿L:^A^FJ?úç¿”¤AY>~?°ŠÝ½C=ËAOܯ?ÇñØ?½AJ`Ž?ýÝ?;Ø•A4õý?§x¾kœŠA>1¬?ápœ?cÛ A2q&?tnd>ŽcçA,„>ýꩾmˆ"A7by?ÑI†?ÊïA,YA>ˆÌä¾.@¹A0”L? óþ¾ mvA?²¨@a?¯y˜A4—¡?fªÃ>9àA6 ?ªÇ?w— -A'¯>·¿|PA(V?S¶e?3QA\Ç¿ ‹¿PûÌAþ¬> -ˆ>ÆÙ®AP…>y9:¼O!0AC*>>{/@ÿb¾>ßvZ?¯M@ð>bWš¾¼@ìOK>Àû>¯k@ämá>,»(=´Qt@ÞÈz>\KϾq`@ãl ?Ô>?$@à`ç?‡á>Òs6@ã+?] ?Iy¾@Õf>hVñ=¦«@ÑŽ>}Ý=¼Ô„™@Ð[=>`‡º>+5Ô@ÓÖe? Qc?Ç8@ɶô>xY:=¬–@ÇÃ>¡oc?&*@ºnã½€½è«ø@¼¿~>J8M>®Éý@¯˜Ò½Õ¢®¾‰O@±­7=ãú=£ -Ï@­0¨=Ž4—=¡)@®mQ>"{¿>Ž,¥@®C>³÷ß>ïwÈ@§ÓÏ=N>=¥’>@®¶B>ù|U?T…@§&2=ÝÏÍ>\Ì@­ªÜ?С?‹)@¤Ñò<ÈÍŽ=ºZ@¤×TÍ>¹ea@¡SϽèS,½¯Xu@«O‡>æÊ>¶Çm@£Ò¢½ÿš½£Þ’@©¢Ì>‡ù÷>æS@²“Ú??}? V@©â3=Šóß=§ub@±ÁP>ñj=þ®°@¹°b?)f¡?(а@²‹ï>…óg½£Ùƒ@Á÷D?zNæ?Bÿ@²d‹>€±¾qmí@³G >Q/=rìƒ@²òC>Ìû_<æŸ@®gA=âƒg=¡9@ªú>>p‚>½S±@¨õ<¢ÅÛ=%MF@¦¾B>PSÚ>#¶F@¥3r>%(Ñ>ƒ05@š¾(¾ÃW>@¡´>;}p>*@˜lh¾FrT¾mâ@¡ð©>–±²>Û§ú@›z|<ÿ­#½“g@žŸƒ>X¶×>?ÿ@Ÿ”ó=Ýëâ>Q/=@ž•.>5æ‘=gû@¢š>·´>SHp@£b\>@ñÚ>`p@§S7>{U4>‰ò_@¦ˆ>4˜Â=Í @¥·>‹8=%˜L@§?Ï>•%>a@¢=5ˆó]o>,»@˜”¾»9w¾Ðìe@ K™>, Y>L2@˜lO¾eØT¾‹k@œùv>Öâ=¦¤J@™ËY½¥{Ù;“Õ@™Cß=4jò½Å° -@“”ð¾’Ò¾ƒ@˜v.=ï`}½³wY@— ý£J*¼N/ˆ@–P]¼ÂÕ¯½Ë<3@˜Ï=,¢n¼£rð@–šŒ½±Õn¼jÌc@š^5>"tÕ<$çº@˜4G¼òq+=vÂÐ@qé>>Ãâ@›Öš=UƉ>`%.@›ìÚ>eá%¼56û@šDI¼î@¢<¬v@œ’ˆ>$ÃŒ=3ÿ]@œ5À=~I’=,ªÛ@œ=Úz¦¾[#@ž â=ÖÙ=âk@Ÿsì=æCÃ=Òg‹@ ‹Ç=×ôƼX÷ÿ@£»‡>IL->6Yß@¥g>l”=ÔÃw@¨ù">r[>\·S@©_@=•¡> H@­zø>3~I=ÕQ|@¯Ð:= šÆ=öÚ@²‹V;¨; ÿÉ@»Åð>|¼Ù>ß‘¾@·½—½“7’¼$¢‡@¼Ýo>'Ç×=ÆRî@¾->RŒ>¨B€@ºÌc½‰»å¼“¦@¾Ç=™>¥÷y@»`|¾½ƒ½žª‡@¼º.½2“É=ÏÏœ@¶l,½‰°ë¾ ¢@®Ã¾•y¾}5@«¤¾7³¾-‰L@¦b¾¾†oŒ¾Zlh@¢-¾pe>¾nOn@Ÿµe¾)Õ?¾=k @›ß£¾„ɺ¾%*Ë@šªÜ½é"Z¾,Âq@™:¸½Ö~Q½}XÝ@—W¾×V½b®@”‡Q¾ÑǾ:K(@–$½3UH<¸*±@“m±½ª°û½®Öm@’k½á#±¼Nй@'1¾!íƾʸ@¡½ùœ†¼Ú3Ã@Pç½yþ¹>d·@Œ}˾GjE¾Ä@Bã½6߀½Õ3ª@ŠÎ¡¾ -C;¾'Iƒ@Žu<»ü4t>:Œ@ˆÐ ¾.[¾S¸.@ŒýÜ4}ž@ˆáÀ<ë)<¼åeo@ˆQ=½ ­L½*j›@ŠÄ<©÷æ=>Ùr@‹pÅ=/‰¯=ßÍÙ@‹+B<ÄŸ= ’ì@‰íš½Ñc@Þë=Deï=œvq@{½˜)f½ó«@‘bò=µžT=¼@Ž€R½E¾ ä@î¼ÛS4¼Bù6@¶Á½ug ¾!®@”Ò·=m)T=¤™3@•e=ß㼈þB@—ÖÛ= m®=ûæ§@™ƒ=ñüÌ=cy¹@œº=ðWÑ=Ñ×k@ž|f=kŠ>]m@¡±Ü>c=$@¤úPB@«1{>E£»>Gzœ@¯î+»˜ú&>£Œ@´§Œ>(–>ƒ a@º -¼†qÝ>Êi«@½ù³½‹¦D>\-@Â*Þ¾ƒLŠ>R@Ê#•¾ƒy>o°Y@Ц ¾”ùz>{íÖ@×àh¾ø´ >”9j@äÁø¾§or>îçí@ë:Æ¿;B>»8P@û¿;´›?”*Aéï¿a­l?âêAÆÇ¿~1 >X¸aA=_¿;†? QQA~ú¿ žå>d -@ô[C¿/O>¯ç¿@䧠¿Pý>–@T@ÓÁ™¿>¡°<õvæ@È©"¿6°œº%t2@½ð¿<_ܽ‘O@¸T¶¿¹¥¼ ¨k@°Á¿ @¼Å @¬ L¿€6<‰D¢@§w/¿w$<‡xâ@¥dy¾°“'=̈}@ŸÍÕ¾à4÷<Õê„@ž£Ð¾˜^«=wŠ@›V£¾µ„N=#¬A@™Ëq¾„Æ="r‰@—…:¾’+H=@–W·¾y÷ =í””@”"M¾i²{=EI]@’“¾Œ§<•§@‘ØŸ¾3`B=«€ -@ï¾H”¹(f^@ùþI…¨>=”@ýS¾Eç†;áö·@›¾L…> E@8¼¾-“ð<ºÇ•@Ž†¢¾%¬> :@Žš¾TL>3Ô”@Œ®À¾:íE=2tü@Ž¼¾és>}ã@¯ö½ãÏ+=ÕØÂ@m›¾7iq>'Hò@˜Ž½ž=˜:3@‹÷¾5€½=Po@Ž›´½ÌÑ5>7pÃ@‹ÔZ½æÈæ<ßÍ¿@ŽD.½õÝ5>K¬@Œ¹˜½Û<·=mÛŠ@¶…½Ðʲ>/&@Œ¸¾¬D=¶sÂ@p#½ìÇ=õ„@Œ½c½ðáÈ=Pb‡@@+½È¦«=àY™@ŒÅˆ¾GSp=w2˜@±‰½á#&= «Ã@…d¾twc=ªaÍ@D<¾*ìF»ÿP&@AG¾OSj>>#@Ž£¹¾y-Þ¼5úÁ@DP¾bRp> ï@¬Ï¾U±>1?q@碾c4.>e¶ú@ŠÊ“½²Ìo=“g@‰Ð[½©hæ=ÿ] @ˆÆe¾Ù>Ÿ@‡à™½ëÃ=›fæ@‡Ø˽èt>;@‡”o½’= =èTØ@ˆ4‚½Û*ò>P@‡1º½Â-ˆ=•t@ˆ2^½–“;>é@ˆ^—½¶¥n=ü @‡tŽñÝ”=Ù9Ë@ˆ¶¼ÐSž>šÀ@‡½Ëƒ½>4ª¼@†ÇÉ<¹>-„@…½;$0>Rt£@‚1ò<él=Rv‹@‚yܽ~o>1Û)@}ë='×S<ÿR@~pá¼5i=êvù@xòÐ@tEt¼êù£<ÒÑ@vlƒ<ý‚>#%8@q“¨½?á=óÜ@s»»4B>{5@pÊò¼ÛÖû=„@qÔ½7Ã=¸x:@qÞd¼îÅÄ>M¨@pç¼nk=V¶$@r¼Ú¼–Mj>_ò@ra¼$â>ù @q™¼ÖTë=bÆr@sCä¼y¨˜>{Z@t«\<Œs>¡Ñ@rž%½=n=°£@uUâ;×'>,Ð@v ݼ~ÄÑ>µ7@uœ¼ÈÃ"=Î3K@uô¡¼;Ê=Õ¬û@u¨™¼ð˜æ=í¡â@u#D¼½íÑ=•5@uñ;JL=Ï4@tu¼|M®=µÿj@t¥ó¼3‰+=ÅÀ@@s;×¼.ë|=€@sd<ü§=Ë5t@s.c¼¥ ¥=ö±¶@rÐÐ<.J=ÎhÇ@rdõ¼ÁÌ=üšC@rÓ½Å-=RâE@wÖ<;’z>‡ö@t ½„Íž=ÂóÛ@wöO¼”ÿÏ>!K@vo#½%ª6=âZI@x\J¼èà>)u@uȼc+µ=Å€0@tؽ0çŽ>u;@pÙ¶:’8ÿ=m¡@oðÓ¼É&À=ôíK@mé‘;hz0=µ%˜@mŽ;ÜÇ_=É@kO¨¼752=ãlÇ@k>9‚N*=óW@iô+¼5Xy=Ój‡@hL†¼—’I=•@i5;â*Ø=ã_@gu4<2®µ=\yä@h郼â·Î>Ü@hæ‹=ŽZ=ɼ²@hÃòº *>æ@jk‹=:o#> ÐH@hÒ¼`ãi= †´@kšÕ<Å&†>9@lf!<ËmÑ>W5i@g¥<‰œ<=–=@fá†:ÎK®=Ïûæ@eÛª=.':={¨ö@d/;™ =¦*@c,'=TV|=µfÝ@a2á½L_¸=Uœ@cOh=+`¥>ÍD@asÓ½oãR=¿yÏ@cŽ‚<8ÿq=ï³Ø@b~¼·ØÏ=ÔÜ@b8×½D¯=Çe¬@dÉ;;Ķ> ìp@a•¯¼o³=xK@e9É»Ã9>¼z@b ¼Š7\=‹:Ë@b·‡:¼Y=·J~@aHR<cT=ù³@`àd»Ý/†=­ÓH@`gw=¦ê=¬_Ö@`Š ¼O@j ‹;+1‡> ef@lÿ†½gƒ«>>Ì@ntܽYË=Ûå„@râ¼y·Ç>*3ç@s ¼ {=ü–G@tä×¼ë)Z>UŸ@u²O¼Ï¡>N!@uMª¼­ü*=ªæd@v;Ô;Ññæ> @t<Öc”=®Ð@sؽχ=sP×@sQî¼Ypø=›q¢@rô<.òD=lL3@s¢î½¥Õã=dÝï@wl-½9p> ë@xj¨½î£´=ŸqH@}.ò½äì¢>&³@€D¥¾Qž=ž$W@„6ô¾5­>*B@†¾Z¾r{ã>¶ @ŠÜF¾éí>F —@³D¾œàb>,c@9ü¾Œ M>*2¶@‘ -¾{ö¶=àM@’,G¾JDP=Îh+@”¾Rug=Ùpà@—’¾‚Æ>-Ü¿@› -¾”Éê>,„@ Ô¾ïm>ÁãS@Ÿ”Þ¾Ç`Ï>±a@™q¾{¥±>YÐ@•(¬¾ ƒ>d:,@ Ǿ ôª>“W@ŠFu½?ø©=ÌÁ–@„ý:K°Ô=Ÿg@SŸ<9X=e?Ð@|h;[D=ÝÄÓ@uýWºhÈ«=F ü@qܼ,ñ¬=·Äª@kÄw<µM=F+@fñ´;¿Š+=dà@b„r<šf<¯>‰@_X¹< é[=‹6@\%ͺUE=NÝg@Z}ì¼Û`=Íw›@Wfc½òÙ={@Vàݽ -ã=ã3¿@SªQ½'®ò<œÇ'@T®z½e—<=ü3@PÞi½ñ <œs@Pý½0þÂ=ªb@O^(½¯à=’90@LÑ×¼g¶4=ŠˆŽ@K¶¼V—Í=–ħ@I8ù½ªA<éŸÜ@I x¼ ÈB=±d5@Gš¾¼(ÅA=–:@FbT½g¶t=ƒ‹é@F¼Ø t=Ño@E-œ¼­>1=|½¥@DŸù½›ž‚=ná‹@Ff–½EDÓ=Ù@o@D<½†ß@=W7ñ@FBt½}äZ=âê±@Ds½z´=dIå@DÞ½xˆÛ=·R÷@CìW½»x<ü4´@E½f¼Ÿ=Ö÷Ì@Cس½ X=<Ÿ@DS½Ë=®HØ@Ci5½>Å=ŽÇ@@C/T¼²?¦=¡ŸJ@AýÌ»Énd=Þð@B¿3¼?‚Ç=Í‹@A&¼’‚ò=­>G@Af¼˜h=é)@@›Þ;í¬!=àíd@@¼ënY=à>¢@?c»ÌžŠ=µ>@?u¼’cƒ=ïý@>}¼¦¨=ˤe@=v­¼;â=œ^@=S¼·ï=™ã„@>`9¼…TÊ=ý¯Ã@<ÐÝ»×?"=‚¹@=Þ/½ñ|=Ñ@-õ¼ã€Ö=ì^¹@=<Õ¼ •x=‘Ò~@=V¼üG/=†ôÎ@>¿v¼ÎYò=Þdü@=àA¼Œ…=‚d³@>›ì½6•O=ˆ®¯@?À€¼rUc=“o@@£½QÜ.=ºU@B"K¼é =ÒnÕ@Bè½VÈ=µ¦`@CSè¼Ây =›q>@CŸØ¼ñ¡ç=±ä¨@D—µ¼¨Ó=Ϧå@Bùp½ °/=¾3@Cõ¼è¢=ÀL[@Bõ<Ô2=³ r@Cž½ S%=Ñ{6@BP¼ãÚì=Õî @AA»ÒzÓ=¡#:@@Õ ½«‡=êÑÀ@>ae;\k“=4•ú@>Ãý"°½=Ñ:Å@=s±¸ÿ”I=Šåà@=Mî½)Þ>=×߶@;±;¼’)?=VÇÙ@<{¼—U=ë1ß@9¥…¼­SÌ=NÕ@:åü¼¾=õט@7ÄO¼ FD=2» @8îϼ¡[ =È_ê@6Ý!¼Z›I=´˜O@5Vñ;Ø2¥=[@4Ü:¼\j=‹}V@4ÑK<‡Ï,=A&2@#zž¼v³8=¦´Ú@#Ÿ¼Î=§"w@#‚ƒ:§Ó/=l2@$™Ì½ "=¤ÐÒ@$0ä;‡Ì<==Ý@%ÝÕ½= &=•E?@&š¼Û•Í=†Õ"@&£Í¼Àôø=Œ".@&Ⱥ¼ø={Z@'°½<=—ÇH@(¬Ô½ðÉ=Ç“Í@)$¼É¸=°AŸ@*^½|ÿ€=³ÈY@*-'¼ÐÎ]=Œ™‰@+f,½ˆ}‚=Çë¸@*¢w½Vª=‹D@+»>½a1Ñ=ÀaV@*Ðའ-¹.=Ž$‡@*敼çÕa=J:@,5½9€=Ê_F@*ÿüßÿU<Íou@.4B½”e½=ñ£Í@-»|½VFù=>†Ï@0²B½Ï§s=÷òO@1å½äÓ=…!Y@/”õ½0xk=²tT@-ƒÜ»»F=…3#@,çT¼­µ¬=¬Ç/@+ ÿ¼2€Ñ=~LV@+0Ÿ»íùÇ=É p@( Â;©ÈF=*Ù@@)㈼þþ‰>ê@'wß»Œó¾= ç_@(L ¼ô±;=Ïæ@'"¼×Õ@=˜*±@&v¾¼Å0=N7ô@'q½+N|=¼åŸ@%œ -9ŽÀA=vñ÷@%’~¼áûØ=swc@$˜1¼µ¥Ÿ=Zß@$I…»=S{@$·ç¼®SŠ=§ç@#«Ÿ¼%¸à=f”9@&G3½Q „=ÿ®o@#k©»£©<çãT@&½6Ã`=ñxÝ@%ª½!n¡=†‰@$Oý¼ÌN=x…'@%Dó½+¸=–›@%#û½-Ç=‘øÓ@%Oñ¼ùÁ‚=¢ßµ@%¼æ{$=€#@%–Ͻ=”†d@%è½&]=•3@&=ç½ÀI=sÁ˜@'m½?$=z:q@(áö½•†ü=» ý@*µ¦½ž™C=‚â#@-EÛ½ïó7=ãé8@-¤”½å@¾=`B@@+šÞ½Z–q=n³m@)x ¼Yè =ˆœ@)E»¼S“¼=ÀÏâ@(—‚¼õå'=”ó+@(zŒ¼¥)ö=µé7@'æ½.¸=ŠkB@'9 ¼Œ;³=‹br@%Ö;;Å÷Í=pˆ@%"»ôCr=˜Ù*@%zR¼-Ý=¢—ª@$Ž¼¯Å=ºò†@$6¼«üç=‰"@$Žf½C©=Ó´@$²—½$ =qç9@%ô×½GÁ=’à@&R ½‹üÃ=“­@&¡J½u„Ù=­Ãµ@$ûü÷©'=H~‘@%ý½)†û=Šbb@$ãf½ Å=£«Ý@$B̽·=O©_@%,â½]|X=±Z/@$j@½(Žt=l³;@#]¼áxe=k4@#çK¼í°à=SGš@$G½k’Ç=³ü\@#«î½0Ëo=‰rG@#I·½0?T=Â@#ƒ4½Hp²=¬À@#uؽ_Ty=¡[@#C°½mQ7=¶Mn@!A¼êÃ==O8Æ@ µ¼Öš=ZI@!n ½d{â=®ê´@ Œ"½*Öë=| Ù@±¨¼fì’=#t©@Éݽ7`=†D†@ê¼3ª¶=9@ë­½1Ä=£€´@º -½é¡=’Þ‰@Âüîqú==Ð_@ãÔ¼ýì’=”‘¶@ú¼Úp=GÒ%@ùû½3YÀ=™¦ë@P;À=-¡m@aF¼»¼=™ž•@ cº´Þi=˜ù@K/¼Ï…A=k›@äú;XtO=þs@|½ “„=Ê@S»Ûûg<¹jô@3ì½þ£=¹U­@P:Ǥp=T¥@à{»ªù=#Úü@¬¼‚yý=x7à@_༃Ç=MP@1<×#þ=F5@az½*¾=ŠÉÝ@ùU±¼;åÑ=Bñ@Û½¡=4$¥@–ˆ;ƒ='Ù5@óý½ l=Y¾@•H½!v€=„¹x@š½( -#=‘F@Ì®¼še§=<­È@oå:S=i(£@2@¼kÿ=j-F@uË;01à=9Þü@†» yÃ=n@ Ž9[*=nõL@ MÙf½¨=uâ@äT½ '-=OãB@rC½]9=Š¡ø@§í½4ê =Dóû@<†½j =uàk@&'½2|[=ƒŸÎ@¬(½m¨=NÒü@XW½NÖK=™Ã¶@ͼxÀ?<Õ±d@c9½€Ž¾=®:Þ@Z¼ã{<È0E@都!¦=I@/@íÙ¼ô·•=D[p@½^LÞ=iâ:@ R$½LÐL=}@"ÜŒ½;ÛÈ<âNÅ@&¸a½¨#Õ=3êê@+8"½µ:T=Eû@3T£¾(ω=o(@9ô¾ ;‰ø)@D¬g¾ké5=JÏ}@Pa¾š=$=F¦ã@aBA¾üä#>ÁÌ@f´ä¾þ¡Œ=ìW@d,P¾Õ™§>šì@`­i¾ÇÃÓ>,—|@RzX¾RZÍ> 4@EH÷½ˆ÷Â>zÊ@:‡Ø½22>G­@1œu¼"Ã> «@*ûR¼¶l~>ìº@%Ÿ[¼fšã=èfn@# l½Vn>!Ÿ@ hͽG²=®W@ëX½›P#=ÙÅF@äk½¥8n=«$Œ@½kÖ=Êx@d¼Épr=ˆ(H@‘®½ABv=zf@9üC9=e‰}@ï¼.ÒŒ=6§@E¼b6ô=‡@° -¼Ñ¢Æ=“r@ż5•=‰éh@ Ƽ€E=}ÎÎ@ ]¯º¤«r=LFÁ@ Tü¼ÔÍ =ŒBZ@×b<_“T=;Mç@»Õ¼üÆ=‡¸L@¹<Ïto=?äœ@´Çº·••=R=0@0*<:=Aß@p=*½ê@Œ}¼À•=>±¤@©;êN[=0®‹@¼¡Y.=n†Â@ÛÓ<›•=@ßb@r­»NÊ=‚Ä@[Ü:ÇE/='9í@ù·¹ê\=™Ý%@LX¼hYð=Ng@%µ<7×7=a%3@i¼ðUf=’Q@<5»îPÖ=…N™@C½Où=Œ`ð@|3¼F'c=k*@j–¼Æ(j=’å@!?¼$v„=#Ù@¶½<[€=¦c?þC«<–=O ?üïý»÷(ƒ=iNü?úYú;èCl=qø‰?÷Ìz¼XRÀ=©hÐ?ô…Œ<‰=s­g?óp—¼.y‡=‰rŠ?ïï­½w «=¨kÙ?ã|½¼,Ap=Yp‡?äø¼æ™¥=s"!?ãP ¼èˆ!=–F¡?áÇ…¼ù­=T¬a?áÂû¼wg=‹ Á?ãVi¼Íµs=YuÜ?â"Í»‘=±?èÄý½–Ðò=­óO?é7¡½†@õ=ˆ`?ìq½¹½4=£›?í{é½°H=å?îÆ1½žž§=‹‡?ñÅå½ûð™=À²[?ñùC½ß Þ=´—²?ö¢ë¾3º-=åÜ”?ñmýá =³–,?ï°º¾öÁ=Ï8º?ëf~½‹Wº=–\?è4ýµ=eÆ~?êK佋ð™=¤Ñ?êØÖ½•5;=‘O~?è⤽+|=a`á?ç9°:]ãÚ= «?é  ½oÏ=`¼³?ê§c½ Ñô=@Ó?íÓ­½›Ðˆ=Ÿ.?îʱ½¥}=«É?ì!ÿ¼è—e=2`?ìDa¼e¥=?°”?ñÚ½z€“=cÆ\?ñ‘½††×=h¾?î¨É¼É’=M —?ïù½_G=—…Ò?𞕽³g=T´?ïð7½®ïR=ÀW?èøò¼Ö-=_?èó@¼±_¡=7?å×w<%<ñ¡?é-_½W -T= ûÊ?åÒ ¼TRÜ=R¤é?ãÈ£;mUž<ïÀ>?â™ù< ¨N=¹?âÛ¨¼P«6=P,;?àŠ<àYb<؉§?áP7¼’ªÌ=d…Ø?⇼Ë_„=nó±?Þ­°P½=Œ¡?Ó³B¼Kg=@Æœ?Òƒ›¼äo =‰¹?ҕƼµžX=v?Ϩ <>‹<×?Ñ=¼ žÆ=æ±?Ò>³¼ØÏÞ=VžS?Ò+'¼¢*<°`?ÒÖ2¼®ÓÈ=!oI?áT¾UAx=ûÇ?Öü½§5Ö=;Jð?Ë@<¶~œ<´WX?ÓÛ ½Éÿ=¬2™?ÇN2=˜„Ó¼‘G/?ÊèÕ<ŒrÒ¼°SÉ=(šæ?˘«<õõ³¼¸Ÿ?Í„<ˆ^}<‡Ôä?Í&=6’¼/Ýþ?ÓÎI¼ºJ¶;oÅ?ÝzÕ¾ _O=‘ȃ?ùé¾òoJ>11ä?Í6Ó=Øy¼'œÎ?·a&=öO!½QŠË?½ D;.ùä<¥v?¶fb= N¼Êñ?±75>¬Í½ œ?µ-=|n»RÌ@?³ç_=7Ý)»î¾?µ78<Ÿ<<Ä?³æR<°õ;¼Ã§?³2Ûp°½»ä?°Ûj=›ɽ&³9?®I~>0½•|"?¬½>H½¶×â?­A>u½”ƒù?®Å=³Å’½',î?°rl=‚®…½¸?³úá¼Nìo<ÑVb?¬þ¡=Ѷ¿½zŽ£?ªór=ð‹^½tŒÝ?ªÇ=íɽkÔ?®„¶=ˆNb½bX?¦éß>0óϽ´6L?°ê45ìð½áfŸ?¬ =S@ö¼Otì?®:K¾=/¼ˆu·?®c|¼Jö);L—ß?¬¥; -Mž½” ?©ÖÆ;Dáq(½˜˜·?Ÿö¦=ëæë½wÓ€?¥fL<Ćƒ¯?´g½ÿÎ=I…I?’ß>Ù½¨ÐÈ@’4¿yg>Ø?õ~¿ ðç>>Éî?ƒ`s>âêG¾zŠ?¨<§Âi¼0†¥?ž€À=ók½‰«}?—">„Íû¾@?› -M>$þ콨DM?­æ/½P…<3é®? úü=Ðkr½€ñ²? ST=¯D½8Ü?˜mD>*+½°g¡?œÊ =s¼Š®c?žÐŸ=ï\»›Fm?¨<¿½Ëõ=q, ?œ=TÚŸ¼æ™?˜uØ=œ²E¼¨±?‘U‚>Ùß½šØ?Œ¶¢>0ï9½mK¯?™UÈ»Îkõ<,¿±?™e£<;˜›;’.î?šèRºÿ;ïlœ?’ü=ÿSŒ½Uö ?”!=ƾm½85j?Ž„à>>Nm½­Ù?‰±p>o×…½ï9•?‰Dî>xÀ½Èk?…Æß>‰Ý ¾¶‡?“]c=Øz4½A^?–Ö=¬¾è½¼ø?–|J=Þéø½ {T?™J=êSŽP|Ñ?Ù >bڽɨ$?¾œC¾z¶Ü=¯Û,?Æ°o¾†¿ê=†M²?‰ß]>}N½«ï?š*ô=d·S½#xe?‹ã*>bÚ«½¼Ê3?™îø=ˆª ½ThÍ?”³§=—›4¼ÊÜi?“DÈ=y8ð½UB©p½ é“?T{{>þ˜¾eT?~Îñ>V×6½•#?ˆóC>’½T?Œ+$=’Ÿ¼˜y5?’k»WûäS«à½ã]Ï?‡ž">`´¾µL?z²>p~N½ªvœ?‘È-½,-;Ê{?~F¼õuz=T†?‘ eÕ?‡¸r½ªVl?•£ -¼Åd­¼“-â?Ó½*®î<Ÿ#™?•Ë–½¾q<÷*?’½¢½ÍO±=3ôu?2½„9å<·‹?‘½æ=~öy?‚ê(=­‰¼žE‹?”J¾SÝ =Κ ?†>è½ Jìä?{™Á¼Ÿd;ÕÄ?–¯¾ˆY°>/Ÿ?x°=`î¼£O°?{¸Ä<ªû;üoé?ŒMé¾ ­w=7«2?}W=MYé¼Z¬„?‘¹;¾SÒ4=¼\?ŸRºÍà€<“ ?„d½tÁÄ<ùîZ?‚”i¼÷Äl=N%?‡[˜½Ú§Ž=u>K?‹¬ê¾:u=–m ?g¿>ú­½rŸZ?‹=Ù½é)Q=„'€?‡ˆ˜½H¤W=(fÒ?}`\=´ê)¼þ42?ƒ¸‹=»ÄÙ?{¼Ç>É_½Š®“?jHÎ>† -ˆ½ÁzÛ?p0Š>†!{½á‰‚?unú>3Œ½¸že? ¾-Ï =—X ?ˆkj><‘H½Ó±7?Š½Ä>=¾ÿ½³qn?ŸBº…Ä~¼º²È?Ÿ8h=æÓN½ë‘?« - =] ½„h?“Û>>Æゥ?:?–Šò>¤£½¬?’ï¢>v½²‡?©±²½ÑºŸ;‡Ùa?•ã'<“U¼­,3?…¯;>S—½h18?ºÿ½a<Â!?vVð>F½¤m¢?€Ø=²;¼ÿïÓ?„ÛC<Înl» ÂS?Š®‘½§{K=?}Ü$=m¯Ù¼ÊŽ?I!<Ü—0»…—æ?‹Që½ÿ“N=KØ?ƒµ˜¼÷ ¢P?ŒüϾ‹‰²=­ ?t -c½_ÃŽ»xz²?€×C¾Kÿ=lºò?ƒÍ¾,¨=)­•?†P‹¾gRÂ=·SD?ƒ#æ¾ -§T½cÀë? >ne½§vµ?„nÌ>ªì½Å18?†»H>¼¤ü¾ÄS?„(à?§Ì¾KVì?—Ü?‰«¾h×?x¥p?oúξʓŸ?ñC¼> ’c¾9p?ßl?—վѤ?Œóï?‡S¾LÞ±?ˆ0O? Ë>¾:ž?ˆéB>ÑMt½ü¾?m™‡>÷•õ¾ ø€?‰¦¼>VFš½Vbq?ƒj3>ZÞ½IWŸ?¡>O}½Sô?{‰õ>:aw½`À?y­¬>3‹ ½ -I?ZA(>«Iû½Øè?‰ŠD¼¥t=ÇØ?v•@>õ’½ þ£?f«¨>pC¼ý¹?—o¾0Ú=«OB?[ ~>?§¼‹#T@¹¿FšQ>lr?¹$½Ã·ß=i&ž?^¤m=P;wþ?‰À¾5ÔV=µks?bk‘=±… -ºr?Y¢Ý> ¼H¶(?š¡¾¾U7i>¨Š?:í?äÙ¾Ãi@ûE¿%ãÕ>(8ˆ@7¾^¿M=«>?e?º=>õò˽[G?”‡0½Î‰i<Š•i?Gÿ»>D—a¼Œ—?‡‡¾ ¹<=D#œ?SW=Ý* »ì…Ú?k®»½1ŸO<ÿq|?f.™¼©ü»ËD¯?j´ì½™®„=7¤µ?{5¾L¾=ŽBR?\)=¼L=ƒoH=Šz}?YNƒ»Èž°¼ª—?b8^½Èq==ݶ?[Eƽ—";Ï%?^k%½GZ¥;øR4?r †¾¶‚=9é>?Eß=ÀH¼÷Ù?f0w½ÆTU=V}¥?[ˆì;‡M»–e4?W¦<ù,9Bô{?X1ñ=%ԻĄ,?S÷­=¸ºÂ¼òEè?xÃ˽‹@ü<ø{æ?)ù«>¯" ½©Ò?6 >Ðæ½;Øž?dl^<ò -•<:4&?) > L4½¤ó’?g—J½/–Â=W—?Y¾ð=·m½äM?qzU½Ng=­?5YŠ>YY½:`F?fÀð½!ÃÆ<“ ?aù±»å'×;€¿©?H  =úxþ¼ÉH?`@ø¹Vm¼'ûõ½‚Ü=?7Àü>IA¼|ìé?_rŸ=n¾@½?_á$<öYo<ˆðñ?aj?=Qʽ((à?yѽð1=PW:?Ew>(Ý^½l~„?|ªQ½ý Š<ç~¿?n¢½¶p;Àd3?j¿¼OÞô»f€Â?aìq:ç6<­ó°?Da½ŽO?€;¾Psz=«ôY?N¬=b½r@?e{¥½«6<è‰c?iò½¡µa»}Ñ°?{®u¾<õ =lÿ2?OÞ¬=0¾¼GI?^ø½š3€<ŒÛÙ?k¡I¾ Ö<Á·?[â½)G/¼œÚ/?Z4´½{ÌÈ<ûf?XÆϽ²<…)?LÀ; -I¼•2|?Q6R¼¶»¯»c(¿?j#K¾ùÖ5Óª½†ºo?A^$>gB½€oÄ?g¾O½ -Õ==G+?c¬<ø/¼7Ï?-éb>‹3¯½Ñ1?î¸>œ8k½1ŸÝ?2^>¼¨¬Í?L8=†Ýi¼¨»?1ã¤>L…ཧæ?G‚‘=Dwõ¼‰Ìb?Gr“=EN ¼™z?Gu<ëÃ$»N-k?R#½(g<±‹G?Dç(=S$ý½«?:¤X=Æñ½"m?Ny›¼ï üÀu=¿²½…-•?JS¼_œü<›%£?>Êm=zùe½¶?:ÿm=äèÛ½œhi?E'n÷í?B=H=f½"?@ö=h.½$|P?D\2=?£º½‚?B = eмèáz?@‡€=X=¼nO?E>=1½N\?-´>\g½Åð¡?H„a=ž±½}…ï?Km=¼¨º„f r½ü"Ô?9+ï=fx;¼‚÷'?Hµ¿<µÔ¼÷îU?+>w×½‚*±?,#†>9½ÂT?7ÞÍ=©ýŽ¥¢?™œ>¤ƒÁ¾Ô”?KÔÖ¼¥gô< -Ë—?$¸¢>]Ź½¾æ{?/ãÊ=T)c<;Û:?"é>KÓ -½“Ïó?/ ;=ì5W½6í?¼O>ŽÑg¾ Å?0T<=Šï/;œG¾Y?6®F=¯o¼¥ëÛ?(fA>zܽnت? À>žl‰½ñò¹?4òf=yaÿ;æP? -bÚ>±ë³¾Ý?"N;>6-½I¯N?>¿>s{’½‡ÒH?MÙ>:Üé½?Ñ^>>‚½b™¥?)êp>% N½JNé?#A”>8<½e]–?#x>_‘¤½´pZ>öø:>áMƾ8«¸?¹V"¿z"‚>â¢@?<À =ÚSç¼¼è?ºÏ>n]ʽ•5b?!ô“>97?¼˜…Þ?ÈË>¸>Ͼóu?$î >L-ƒ½&³ì?à'>h†½gj?Q`>Œ½­®&?û_>ñ½‡]´?/âµ>Dl‚½Ñ?4Dp>‰u½wŒ5>ø¹E?1¾G^Š? Ð>pÅJ½1Ä„?Gü>ЉÝ½ȕ?S4M½öhÓ>@r?"‘>Â~½Á~-?-žw>5üs;ÄØô?!í_>{E‚:GéK?9xÀ>Ù=Pщ=i{ -?7ªÈ>Œ=s¢í?= ¯=ØU{>{6? =x>üŒ°½DtÊ?4Í7>WÓ˜=îQ‡?Fø> -p>AÃØ?5ÿ>3‚z>|£H?jÒ†<» >§Èá?Tµp>[&Ä>¦g+?O‰Š>´x’>¦¶?*/Ý?Iva>a/3?#ø³?Xõ>tæg?’3?¸K?ëó?êïê>Ë?Jf¸?çS>áˆß?nÞç@®ÀÀ/ǵ@ŠX?Ê\ù¿…µ?ðIn@a¯á¿¾í~?ˆÏœ@Ni³À":¶?ïU³?>x >ç…@?ˆ³?¨=Œ¾¬íý?6À”?He>n7Ì>Ë=Ð?…ìξ9!Ú>ñ ³?zi$¾]ƒ¥>í5Ó?ô¾¦ Ô>çªÄ?gu?¾$!;>©Ò(?Y1½Å÷G>Š?y”½¾¡bŠ>«¯Á?<õ"=*>*G8?€À¾ÃNe>¢©P?0&\> À=¯¦t?5ùÝ=À=¡?#í>E)W<¢ÓI?B(½½±Õ=ôi?5/%>Ö|½ r?ê¦p¿šÐ>íŠ5?CU&½d¹!=›uÇ?ÔÃÒ¿oRõ>˜.)>Åž‡>²¬Ë¼¯?5Gw=ó»!½ó?Vw>0ò;È?†l>d©—½ˆ ->ÿŸ>­•½±ô ?Ãì>7~D½ YÂ?*ô‘=Vç5<ðBj>ðI*>Ò5h¾a$>êÂ>Û ¾ô8?û²>[l,½,Å.>ïóC>Ôky¾>çP3>åØk¾QŒ A?3óྀ9¸?/Ñ•=\!ó;ö÷(>üe[>¢X.½–hU>á‚›>î“z¾(ðx?!“Ò>—»ðÚ>Úª ->ëѾœ->é2F>ãt¾¯?Ì>ɽ»Ü@?Ãô>mQ@½v3?¡>>rÀB½cyv?Rg>Ÿ:Õ½»Ê7?å>Ô^¼×Ê?ŒF>VQ½${>Õ73>÷ ¾%^Ñ?Ôà>žé”½¶] ?=k‹½^Ú|=¡/°?ç>¯œ½ž@Ï? ²>zÕý½7÷ ?î >s†Y½t_>ì±>Ù U¾nv?3`~<· =M?Py9¾&ÿ”=à9>ßï³>â g¾»¸?gÙ¾¦B`>@ã?'5t=Ì‘<@•2?:`W•¶?I4{¾ç±=ë²€>ãNÄ>ÙR~½ù!¾?b]`¾ÅÔ:>qÞ4>äÇ>Æô ½Ìä?e¶ñ¾Êö¡>qêa>òf€>­Àн®{Ñ?.oú½¡¤=ÆH?>¢½`Ãz=v>˜?y¼"¾äUò>]c½> r?R©¾SZ?‚`â¿%>–r?* k½è˜=šU*?Wn¾‹m¼>-f=NË?aQ_¾Ç,ã>cS)?: d½ã¥¥=á¾€?e竾ÉfÛ>fËz?p> Õg:ƒíÄ?:ܽ·\=»Ì„?`…ß¾­¡L>Oaö?mnì¾ÕH–>nIf?fÄ<¾ºt ->FÍþ?)›=d‹!<.õå?vXv¾ôRñ>…×?<ÍM¾¢=îêž?ÊÅ'¿¹rÎ?!:î?.ÑU»¬Ì=ZP?ºR¿›íŒ?Vò?X™¾QgÑ=ûòL?“oK¿9«>ª9?@"µ½šÑ„=šÔ?XP”¾ >~U?ð¬=æ‘i;‹»Î?hÀa¾Â q>W‡>µìa?¢ ¾7 ?£¨ð¿q{Ç>×’Æ>éæÔ>´“T½°7#?AjE½·­×=±q?= I½„×=’‰²?s„¾îIÈ>~ü?+·>Œs½Š÷à?Lë/¾óÝ=Ûå¦?GD¾"”*=ò?;‚”½ -*„=hÚ?¸ˆë¿›Òq?×û>ß¼R>Ûþü½ö¸4?9Op½•Ä=θ=?1ã{<©åÉ=(¢–?Z˜‚¾–EÎ>:Pm?k~Ͼ©¢'>.¥Ž?’궿:ùq>©lµ?-¤â=ƒ´<¦Xq? z:¿j2'>Ö J?&)ü=ÓC<–÷?™›¿JSß>²¨(?uÅ°¾Öñ>a:?·÷Á¿•¨ >ûX‘?“`ö¿<«õ>±¼H?æþ¿ßÂv?7”?^Ù ¾©_>EÏ­?¹°¿Ï"?½‹?…Z¿G>•äˆ?›¹É¿bs˜>Ë ¬?Qô¨¾qh³>EÏ?²‰Ë¿“G>ûâ/?Ūÿ¿»aâ?ôÁ?…Ñj¿'3:>žœ?À–¿ªàŽ?º?¸cÅ¿Ÿõ_É?ãVÞ¿çíc??4‹?²vÓ¿”E!>ñÓÚ?êµÒ¿îL–?A†¢?yè¾û˜N>x±?Õ…¼¿Ì~ ?$¯Í?ªŸ’¿†oð>ãëÉ?î _¿ódï?Dw$?›ÆÜ¿fF‹>Ñ@¯À=?QŒ@¤ÀDM?i)ò?«Ë·¿†Ü>ÝÌ@!ÍãÀ>òE?˜¾?µ:>@ß(½0Ts@8ÚÀŸÙ?f&š?ÖªQ¿Ïî?%àx@û=À(Ã?c7Y?ÇR¿µèù??Ôâ»¿Æ R?ì§>üM?!®¾„4?µ]ˆ¿“åP>îÑ%?u®¾ákx>H`<@.c-ÀR0?£4n¾"?£­¾ÛÅû?Ÿ9¿v,D>Ò 4?Æ>Ô¿±]§?£Ù@ƤÀ;U7?‘{t@FSÀ {¥?R2»@ e -Àbt?kà¸?)DO¼ùÉ€= Óë@+ÙòÀIRw?•©=ÎÜ4?]碾ˆ(@ =ÃÀV~?d/??§T -¿€ M>Á÷g?Œ±>?S_;Q Ù?û‚ò¿ýQö?7×.?˜dÌ¿\¿>¸¸Å?Б4¿³jG>ýŽm>éb>‰ƒ'½5m>@6Àè?U´À‡¾Ršä?ªâ¾¾Þ è¿’»Û@7î뿃½Ê¿"¦?üD¿%ê2?'{=Ùfð½m‰>3š»?C h¾y®”?VÿF¾9bY=75øÀ> -n@´«Î¿úü­?¨ï¸¿u¡#>±~ÀƒÍØ@î¦áÀ(®@*µÀBZ}?ŠGY¿ó‚@€]m¿²˜@d!³À‹KC?¿B”¿ÍLp@aÞ¿›—î?…)Ë¿Eî> –-½ÿ2ƒ?œ ~¾Ìv >ú~š>˜n½±BÀ¿|”•@(ÿ)¿p3¼ÀXúù@˦™Àªe¿zkT@+6¿~%æÀY¸@“>U¿Ð—úÀ~¼:@éäÀ%}‹À@˜°p¿Õ@¿øý@:Ÿ…¿Š_f?=Ö†¼†X¼èêºÀF¾@ºÀ»?íKü¿é3h?'ªÀØ•A8$ÔÀ—5AŒ†ÁÎXWAQ#ÀØW½A6öäÀ¼Ò¿ˆ’8@- ¿tøeÀÍãœA-ÆÀn›Þ@¯ìÀêµ&@"©@ÃzÁ:`@:ƒÙ@CÀ ó#?=c»¿[?ô%™¿ âÍÀ²)íAsâÀT8¿­*Ô@<~<¿bb ÁáøA‘OÀ°¥Àd²@‚öš¿¡_ÑÁ °ASa"ÀŽ¯\À¹È»AQÀSă@%+ÀYj?mŠ’ÁÊrAwýÀªÈ¿¼¤Ö@IJ[¿lí Á\b¦A¯¡ÀñøDAš†,ÁãÚDAît@§ÚuÀØn~@ µõ@Ü’ÀŠ#?@` À¬ÔABùÀY©—A™UÁãJ¦AÌ>Æ‹¢?Kû¾w“@¿óÃ@d0á¿ÇGÁ®ÑÐB®.Á9säÁV¶= v1_25") -setupOptional("speclog") -setupOptional(platelist trunk [>= trunk]) -setupOptional("sdss_python_module") -setupRequired(idlutils v5_5_17 [>= v5_5_14]) - -envAppend(PATH, ${PRODUCT_DIR}/bin) -envPrepend(PYTHONPATH, ${PRODUCT_DIR}/bin) -envPrepend(IDL_PATH, +${PRODUCT_DIR}/pro)